commit f3217a77086fa17f7da12d3d2b6d293cb20f9c49 Author: tao89959 <1036524114@qq.com> Date: Thu Sep 26 11:26:59 2024 +0800 first commit: base 2024.08 Signed-off-by: maoxiaochuan diff --git a/.b4-config b/.b4-config new file mode 100644 index 00000000..1943458f --- /dev/null +++ b/.b4-config @@ -0,0 +1,7 @@ +# Configuration for the `b4` tool +# See https://b4.docs.kernel.org/en/latest/config.html +[b4] + send-series-to = buildroot@buildroot.org + send-auto-cc-cmd = "./utils/get-developers -e -" + +# vim: set filetype=gitconfig: diff --git a/.checkpackageignore b/.checkpackageignore new file mode 100644 index 00000000..a824a50c --- /dev/null +++ b/.checkpackageignore @@ -0,0 +1,1465 @@ +board/aarch64-efi/post-image.sh Shellcheck +board/amarula/vyasa/post-build.sh Shellcheck +board/andes/ae350/patches/uboot/0001-mmc-ftsdc010_mci-Support-DTS-of-ftsdc010-driver-for-.patch lib_patch.Upstream +board/andes/ae350/patches/uboot/0002-spl-Align-device-tree-blob-address-at-8-byte-boundar.patch lib_patch.Upstream +board/andes/ae350/post-build.sh Shellcheck +board/arcturus/aarch64-ucls1012a/post-build.sh Shellcheck +board/arcturus/aarch64-ucls1012a/post-image.sh Shellcheck +board/aspeed/common/post-image.sh Shellcheck +board/asus/tinker/post-build.sh Shellcheck +board/atmel/flasher.sh Shellcheck +board/beagleboard/beaglebone-qt5/patches/linux/0001-keep-jtag-clock-alive-for-debugger.patch lib_patch.Upstream +board/beagleboard/beaglebone/post-build.sh Shellcheck +board/beagleboard/beagleboneai/patches/uboot/0001-am57xx_evm-fixes.patch lib_patch.Upstream +board/beagleboard/beagleboneai/post-build.sh Shellcheck +board/beelink/gs1/post-build.sh Shellcheck +board/boundarydevices/common/post-build.sh Shellcheck +board/boundarydevices/common/post-image.sh Shellcheck +board/broadcom/northstar/post-image.sh Shellcheck +board/bsh/imx8mn-bsh-smm-s2-pro/flash.sh Shellcheck lib_shellscript.EmptyLastLine +board/bsh/imx8mn-bsh-smm-s2-pro/post-build.sh Shellcheck +board/bsh/imx8mn-bsh-smm-s2-pro/post-image.sh Shellcheck +board/bsh/imx8mn-bsh-smm-s2/flash.sh Shellcheck lib_shellscript.EmptyLastLine +board/bsh/imx8mn-bsh-smm-s2/post-build.sh Shellcheck +board/canaan/k210-soc/post-build.sh Shellcheck +board/canaan/k210-soc/rootfs_overlay/sbin/init Shellcheck +board/chromebook/elm/sign.sh Shellcheck +board/chromebook/mksd.sh Shellcheck +board/chromebook/snow/sign.sh Shellcheck +board/ci20/patches/uboot/0001-mips-Remove-default-endiannes.patch lib_patch.Upstream +board/cubietech/cubieboard2/post-image.sh Shellcheck +board/freescale/common/imx/imx8-bootloader-prepare.sh Shellcheck +board/freescale/common/mxs/post-image.sh Shellcheck +board/friendlyarm/nanopi-r2s/post-build.sh Shellcheck +board/hardkernel/odroidc2/post-image.sh Shellcheck +board/hardkernel/odroidc2/rootfs_overlay/etc/init.d/S09modload Shellcheck lib_sysv.Variables +board/hardkernel/odroidxu4/post-image.sh Shellcheck lib_shellscript.EmptyLastLine +board/intel/galileo/patches/linux/0001-x86-relocs-Make-per_cpu_load_addr-static.patch lib_patch.Upstream +board/intel/galileo/post-build.sh Shellcheck +board/intel/galileo/rootfs_overlay/etc/init.d/S09modload Shellcheck lib_sysv.Variables +board/kontron/bl-imx8mm/post-build.sh Shellcheck +board/kontron/pitx-imx8m/patches/uboot/2022.04/0001-tools-mkeficapsule-use-pkg-config-to-get-luuid-and-l.patch lib_patch.NumberedSubject lib_patch.Upstream +board/kontron/pitx-imx8m/post-build.sh Shellcheck +board/kontron/smarc-sal28/post-build.sh Shellcheck +board/lego/ev3/post-image.sh Shellcheck +board/lemaker/bananapro/patches/linux/0001-arch-arm-boot-dts-sun7i-a20-bananapro.dts-disable-00.patch lib_patch.Upstream +board/lemaker/bananapro/post-build.sh Shellcheck +board/lemaker/bananapro/post-image.sh Shellcheck +board/mender/x86_64/post-image-efi.sh lib_shellscript.ConsecutiveEmptyLines +board/minnowboard/post-build.sh Shellcheck +board/nexbox/a95x/post-build.sh Shellcheck +board/nexbox/a95x/post-image.sh Shellcheck +board/octavo/osd32mp1-brk/patches/uboot/0001-Add-OSD32MP1-BRK-device-tree-support.patch lib_patch.NumberedSubject lib_patch.Upstream +board/octavo/osd32mp1-brk/patches/uboot/0002-Add-OSD32MP1-BRK-build-config.patch lib_patch.NumberedSubject lib_patch.Upstream +board/octavo/osd32mp1-red/patches/uboot/0001-Add-OSD32MP1-RED-Device-Tree-support.patch lib_patch.NumberedSubject lib_patch.Upstream +board/octavo/osd32mp1-red/patches/uboot/0002-configs-stm32mp15_trusted_defconfig-disable-environm.patch lib_patch.NumberedSubject lib_patch.Upstream +board/olimex/a13_olinuxino/post-build.sh Shellcheck +board/olimex/a20_olinuxino/post-build.sh Shellcheck +board/olimex/a33_olinuxino/post-build.sh Shellcheck +board/olpc/post-build.sh Shellcheck +board/orangepi/common/post-build.sh Shellcheck +board/orangepi/orangepi-lite2/post-build.sh Shellcheck +board/orangepi/orangepi-one-plus/post-build.sh Shellcheck +board/orangepi/orangepi-zero/patches/linux/0001-ARM-dts-orange-pi-zero-interrupt-triggering-xr819.patch lib_patch.Upstream +board/orangepi/orangepi-zero/patches/linux/0002-ARM-dts-orange-pi-zero-enable-spi-nor.patch lib_patch.Upstream +board/orangepi/orangepi-zero/patches/linux/0003-ARM-dts-orange-pi-zero-enable-spidev.patch lib_patch.Upstream +board/orangepi/orangepi-zero/patches/linux/0004-ARM-dts-orange-pi-zero-enable-uart.patch lib_patch.Upstream +board/pine64/rock64/patches/uboot/0001-Makefile-rk3328-needs-itb-image-to-boot-properly.patch lib_patch.Upstream +board/pine64/rock64/post-build.sh Shellcheck +board/pine64/rockpro64/post-build.sh Shellcheck +board/qemu/aarch64-sbsa/assemble-flash-images Shellcheck +board/qemu/x86/post-build.sh Shellcheck +board/qemu/x86_64/post-build.sh Shellcheck +board/radxa/rockpi-n8/post-build.sh Shellcheck +board/raspberrypi/post-build.sh Shellcheck +board/raspberrypi/post-image.sh Shellcheck +board/roseapplepi/patches/uboot/0001-compiler-.h-sync-include-linux-compiler-.h-with-Linu.patch lib_patch.Upstream +board/roseapplepi/post-build.sh Shellcheck +board/seeed/stm32mp157c-odyssey/patches/linux/0001-ARM-dts-stm32-fix-stm32mp157c-odyssey-card-detect.patch lib_patch.Upstream +board/sheevaplug/patches/uboot/0001-Remove-redundant-YYLOC-global-declaration.patch lib_patch.Upstream +board/sifive/hifive-unleashed/post-build.sh Shellcheck +board/solidrun/clearfog/post-build.sh Shellcheck +board/solidrun/macchiatobin/post-build-mainline.sh Shellcheck +board/solidrun/macchiatobin/post-build.sh Shellcheck +board/stmicroelectronics/common/stm32f4xx/stm32-post-build.sh Shellcheck +board/stmicroelectronics/common/stm32mp157/post-image.sh Shellcheck +board/stmicroelectronics/stm32f429-disco/flash.sh Shellcheck +board/stmicroelectronics/stm32f469-disco/flash_sd.sh Shellcheck +board/stmicroelectronics/stm32f469-disco/flash_xip.sh Shellcheck +board/stmicroelectronics/stm32f469-disco/post-build.sh Shellcheck +board/synopsys/axs10x/post-build.sh Shellcheck +board/technologic/ts4900/post-image.sh Shellcheck +board/toradex/apalis-imx6/post-image.sh Shellcheck +board/udoo/common/post-build.sh Shellcheck +board/udoo/mx6qdl/patches/linux/0000-udoo-disable-usbh1.patch lib_patch.Upstream +boot/afboot-stm32/0003-Makefile-disable-stack-protector.patch lib_patch.Upstream +boot/optee-os/3.13.0/0001-core-zlib-fix-build-warning-when-_LFS64_LARGEFILE-is.patch lib_patch.Upstream +boot/syslinux/0001-bios-Fix-alignment-change-with-gcc-5.patch lib_patch.Upstream +boot/syslinux/0002-Disable-PIE-to-avoid-FTBFS-on-amd64.patch lib_patch.Upstream +boot/syslinux/0003-memdisk-Force-ld-output-format-to-32-bits.patch lib_patch.Upstream +boot/syslinux/0004-utils-Use-the-host-toolchain-to-build.patch lib_patch.Upstream +boot/syslinux/0005-lzo-Use-the-host-toolchain-for-prepcore.patch lib_patch.Upstream +boot/syslinux/0006-The-VPrint-definition-is-now-part-of-the-exports-of-.patch lib_patch.Upstream +boot/syslinux/0007-Update-the-longjump-calls-to-fit-the-new-declaration.patch lib_patch.Upstream +boot/syslinux/0008-efi-wrapper-build-it-with-the-host-toolchain.patch lib_patch.Upstream +boot/syslinux/0011-extlinux-Use-the-host-toolchain-to-build.patch lib_patch.Upstream +boot/syslinux/0012-pull-in-sys-sysmacros-h-for-major-minor-makedev.patch lib_patch.Upstream +boot/syslinux/0013-Fix-build-with-gnu-efi-version-3.0.9.patch lib_patch.Upstream +boot/syslinux/0014-Fix-build-with-binutils-note-gnu-property-section.patch lib_patch.Upstream +boot/syslinux/0016-Workaround-multiple-definition-of-symbol-errors.patch lib_patch.Upstream +boot/syslinux/0017-Replace-builtin-strlen-that-appears-to-get-optimized.patch lib_patch.Upstream +configs/aarch64_efi_defconfig lib_defconfig.ForceCheckHash +configs/am574x_idk_defconfig lib_defconfig.ForceCheckHash +configs/andes_ae350_45_defconfig lib_defconfig.ForceCheckHash +configs/arcturus_ucls1012a_defconfig lib_defconfig.ForceCheckHash +configs/arcturus_ucp1020_defconfig lib_defconfig.ForceCheckHash +configs/arm_foundationv8_defconfig lib_defconfig.ForceCheckHash +configs/aspeed_ast2500evb_defconfig lib_defconfig.ForceCheckHash +configs/aspeed_ast2600evb_defconfig lib_defconfig.ForceCheckHash +configs/asus_tinker-s_rk3288_defconfig lib_defconfig.ForceCheckHash +configs/asus_tinker_rk3288_defconfig lib_defconfig.ForceCheckHash +configs/at91sam9260eknf_defconfig lib_defconfig.ForceCheckHash +configs/at91sam9g20dfc_defconfig lib_defconfig.ForceCheckHash +configs/at91sam9g45m10ek_defconfig lib_defconfig.ForceCheckHash +configs/at91sam9rlek_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d27_som1_ek_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d2_xplained_mmc_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d2_xplained_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d3_xplained_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d3_xplained_dev_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d3_xplained_mmc_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d3_xplained_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d3xek_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d4_xplained_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d4_xplained_dev_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d4_xplained_mmc_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d4_xplained_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/avenger96_defconfig lib_defconfig.ForceCheckHash +configs/avnet_rzboard_v2l_defconfig lib_defconfig.ForceCheckHash +configs/bananapi_m2_berry_defconfig lib_defconfig.ForceCheckHash +configs/bananapi_m2_ultra_defconfig lib_defconfig.ForceCheckHash +configs/bananapi_m2_zero_defconfig lib_defconfig.ForceCheckHash +configs/bananapro_defconfig lib_defconfig.ForceCheckHash +configs/beelink_gs1_defconfig lib_defconfig.ForceCheckHash +configs/broadcom_northstar_defconfig lib_defconfig.ForceCheckHash +configs/canaan_kd233_defconfig lib_defconfig.ForceCheckHash +configs/ci20_defconfig lib_defconfig.ForceCheckHash +configs/cubieboard2_defconfig lib_defconfig.ForceCheckHash +configs/engicam_imx6qdl_icore_defconfig lib_defconfig.ForceCheckHash +configs/engicam_imx6qdl_icore_qt5_defconfig lib_defconfig.ForceCheckHash +configs/engicam_imx6qdl_icore_rqs_defconfig lib_defconfig.ForceCheckHash +configs/engicam_imx6ul_geam_defconfig lib_defconfig.ForceCheckHash +configs/engicam_imx6ul_isiot_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx28evk_defconfig lib_defconfig.ForceCheckHash +configs/freescale_p1025twr_defconfig lib_defconfig.ForceCheckHash +configs/freescale_t1040d4rdb_defconfig lib_defconfig.ForceCheckHash +configs/freescale_t2080_qds_rdb_defconfig lib_defconfig.ForceCheckHash +configs/friendlyarm_nanopi_r2s_defconfig lib_defconfig.ForceCheckHash +configs/galileo_defconfig lib_defconfig.ForceCheckHash +configs/globalscale_espressobin_defconfig lib_defconfig.ForceCheckHash +configs/grinn_chiliboard_defconfig lib_defconfig.ForceCheckHash +configs/grinn_liteboard_defconfig lib_defconfig.ForceCheckHash +configs/hifive_unleashed_defconfig lib_defconfig.ForceCheckHash +configs/icnova-a20-adb4006_defconfig lib_defconfig.ForceCheckHash +configs/imx23evk_defconfig lib_defconfig.ForceCheckHash +configs/imx6-sabreauto_defconfig lib_defconfig.ForceCheckHash +configs/imx6-sabresd_defconfig lib_defconfig.ForceCheckHash +configs/imx6-sabresd_qt5_defconfig lib_defconfig.ForceCheckHash +configs/imx6slevk_defconfig lib_defconfig.ForceCheckHash +configs/imx6sx-sdb_defconfig lib_defconfig.ForceCheckHash +configs/imx6ulevk_defconfig lib_defconfig.ForceCheckHash +configs/imx6ullevk_defconfig lib_defconfig.ForceCheckHash +configs/imx6ulpico_defconfig lib_defconfig.ForceCheckHash +configs/imx7d-sdb_defconfig lib_defconfig.ForceCheckHash +configs/imx7dpico_defconfig lib_defconfig.ForceCheckHash +configs/imx8mqevk_defconfig lib_defconfig.ForceCheckHash +configs/imxrt1050-evk_defconfig lib_defconfig.ForceCheckHash +configs/khadas_vim3_defconfig lib_defconfig.ForceCheckHash +configs/kontron_bl_imx8mm_defconfig lib_defconfig.ForceCheckHash +configs/kontron_pitx_imx8m_defconfig lib_defconfig.ForceCheckHash +configs/kontron_smarc_sal28_defconfig lib_defconfig.ForceCheckHash +configs/linksprite_pcduino_defconfig lib_defconfig.ForceCheckHash +configs/ls1046a-frwy_defconfig lib_defconfig.ForceCheckHash +configs/mangopi_mq1rdw2_defconfig lib_defconfig.ForceCheckHash +configs/mender_x86_64_efi_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sam9x60ek_mmc_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sam9x60ek_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sama5d27_wlsom1_ek_mmc_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sama5d27_wlsom1_ek_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sama5d2_icp_mmc_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sama5d2_icp_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sama7g5ek_mmc_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sama7g5ek_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/minnowboard_max_defconfig lib_defconfig.ForceCheckHash +configs/mx53loco_defconfig lib_defconfig.ForceCheckHash +configs/mx6udoo_defconfig lib_defconfig.ForceCheckHash +configs/nexbox_a95x_defconfig lib_defconfig.ForceCheckHash +configs/nitrogen6sx_defconfig lib_defconfig.ForceCheckHash +configs/nitrogen6x_defconfig lib_defconfig.ForceCheckHash +configs/nitrogen7_defconfig lib_defconfig.ForceCheckHash +configs/nitrogen8m_defconfig lib_defconfig.ForceCheckHash +configs/nitrogen8mm_defconfig lib_defconfig.ForceCheckHash +configs/nitrogen8mn_defconfig lib_defconfig.ForceCheckHash +configs/nitrogen8mp_defconfig lib_defconfig.ForceCheckHash +configs/octavo_osd32mp1_brk_defconfig lib_defconfig.ForceCheckHash +configs/octavo_osd32mp1_red_defconfig lib_defconfig.ForceCheckHash +configs/odroidc2_defconfig lib_defconfig.ForceCheckHash +configs/odroidxu4_defconfig lib_defconfig.ForceCheckHash +configs/olimex_a10_olinuxino_lime_defconfig lib_defconfig.ForceCheckHash +configs/olimex_a13_olinuxino_defconfig lib_defconfig.ForceCheckHash +configs/olimex_a20_olinuxino_micro_defconfig lib_defconfig.ForceCheckHash +configs/olimex_a33_olinuxino_defconfig lib_defconfig.ForceCheckHash +configs/olimex_a64_olinuxino_defconfig lib_defconfig.ForceCheckHash +configs/olpc_xo175_defconfig lib_defconfig.ForceCheckHash +configs/olpc_xo1_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_lite2_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_one_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_one_plus_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_pc2_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_pc_plus_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_zero3_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_zero_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_zero_plus2_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_zero_plus_defconfig lib_defconfig.ForceCheckHash +configs/pc_x86_64_bios_defconfig lib_defconfig.ForceCheckHash +configs/pc_x86_64_efi_defconfig lib_defconfig.ForceCheckHash +configs/pcengines_apu2_defconfig lib_defconfig.ForceCheckHash +configs/pine64_defconfig lib_defconfig.ForceCheckHash +configs/pine64_pinecube_defconfig lib_defconfig.ForceCheckHash +configs/pine64_sopine_defconfig lib_defconfig.ForceCheckHash +configs/pine64_star64_defconfig lib_defconfig.ForceCheckHash +configs/riotboard_defconfig lib_defconfig.ForceCheckHash +configs/roc_pc_rk3399_defconfig lib_defconfig.ForceCheckHash +configs/rock64_defconfig lib_defconfig.ForceCheckHash +configs/rock_pi_n8_defconfig lib_defconfig.ForceCheckHash +configs/rockpro64_defconfig lib_defconfig.ForceCheckHash +configs/roseapplepi_defconfig lib_defconfig.ForceCheckHash +configs/s6lx9_microboard_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_lichee_rv_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_lichee_rv_dock_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_licheepi_nano_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_licheepi_zero_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maix_bit_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maix_bit_sdcard_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maix_dock_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maix_dock_sdcard_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maix_go_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maix_go_sdcard_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maixduino_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maixduino_sdcard_defconfig lib_defconfig.ForceCheckHash +configs/snps_arc700_axs101_defconfig lib_defconfig.ForceCheckHash +configs/snps_arc700_nsim_defconfig lib_defconfig.ForceCheckHash +configs/snps_archs38_axs103_defconfig lib_defconfig.ForceCheckHash +configs/snps_archs38_haps_defconfig lib_defconfig.ForceCheckHash +configs/snps_archs38_hsdk_defconfig lib_defconfig.ForceCheckHash +configs/socrates_cyclone5_defconfig lib_defconfig.ForceCheckHash +configs/solidrun_clearfog_defconfig lib_defconfig.ForceCheckHash +configs/solidrun_clearfog_gt_8k_defconfig lib_defconfig.ForceCheckHash +configs/solidrun_macchiatobin_defconfig lib_defconfig.ForceCheckHash +configs/stm32mp157c_odyssey_defconfig lib_defconfig.ForceCheckHash +configs/terasic_de10nano_cyclone5_defconfig lib_defconfig.ForceCheckHash +configs/toradex_apalis_imx6_defconfig lib_defconfig.ForceCheckHash +configs/ts4900_defconfig lib_defconfig.ForceCheckHash +configs/ts5500_defconfig lib_defconfig.ForceCheckHash +configs/ts7680_defconfig lib_defconfig.ForceCheckHash +configs/uevm5432_defconfig lib_defconfig.ForceCheckHash +configs/visionfive_defconfig lib_defconfig.ForceCheckHash +configs/wandboard_defconfig lib_defconfig.ForceCheckHash +configs/warp7_defconfig lib_defconfig.ForceCheckHash +linux/5.10.162-cip24-rt10/0001-arch-microblaze-mm-init.c-fix-build.patch lib_patch.Upstream +package/18xx-ti-utils/0001-plt.h-fix-build-with-gcc-10.patch lib_patch.Upstream +package/4th/0001-avoid-regen-during-install.patch lib_patch.Upstream +package/acl/0001-Build-with-old-GCC-versions.patch lib_patch.Upstream +package/acpid/0001-dont-use-isfdtype.patch lib_patch.Upstream +package/alchemy/0001-toolchains-remove-hash-style-management.patch lib_patch.Upstream +package/alsamixergui/0001-misc-fixes.patch lib_patch.Sob lib_patch.Upstream +package/alsamixergui/0002-configure-fix-detection-of-fltk-libs.patch lib_patch.Upstream +package/am335x-pru-package/0001-install-does-not-build.patch lib_patch.Upstream +package/am33x-cm3/0001-fix-makefile.patch lib_patch.Upstream +package/am33x-cm3/0002-Makefile-unconditionally-disable-SSP.patch lib_patch.Upstream +package/am33x-cm3/0003-Makefile-unconditionally-disable-PIE.patch lib_patch.Upstream +package/am33x-cm3/0004-Makefile-add-fno-builtin.patch lib_patch.Upstream +package/am33x-cm3/S93-am335x-pm-firmware-load lib_sysv.Variables +package/android-tools/0001-Fix-makefiles-for-out-of-tree-build.patch lib_patch.Upstream +package/android-tools/0002-Fix-adbd-for-non-Ubuntu-systems.patch lib_patch.Upstream +package/android-tools/0003-Fix-build-issue-with-uclibc.patch lib_patch.Upstream +package/android-tools/0004-Fix-build-issue-with-musl.patch lib_patch.Upstream +package/android-tools/0005-Use-pkgconf-to-get-libs-deps.patch lib_patch.Upstream +package/android-tools/0006-fix-big-endian-build.patch lib_patch.Upstream +package/android-tools/0007-include-cdefs-h-when-needed.patch lib_patch.Upstream +package/android-tools/0008-Include-sysmacros.h-to-compile-with-glibc-2.28.patch lib_patch.Sob lib_patch.Upstream +package/android-tools/0009-Fix-makefiles-for-out-of-tree-ext4_utils-build.patch lib_patch.Upstream +package/android-tools/0010-adb-added-patch-for-openssl-1.1.0-compatibility.patch lib_patch.Upstream +package/aoetools/0001-Change-shell-script-interpreter-from-bin-bash-to-bin.patch lib_patch.Upstream +package/apache/0001-cross-compile.patch lib_patch.Upstream +package/apache/0002-nios2_is_not_os2.patch lib_patch.Upstream +package/apache/S50apache Shellcheck lib_sysv.Indent lib_sysv.Variables +package/apitrace/0001-thirdparty-libbacktrace-backtrace-h-include-config.h.patch lib_patch.Upstream +package/apitrace/0002-gltrace-Avoid-__libc_dlsym-and-__libc_dlopen_mode-on-GLIBC-2-34.patch lib_patch.Upstream +package/apr-util/0001-remove-checkapr.patch lib_patch.Upstream +package/apr/0001-sys-param-h.patch lib_patch.Upstream +package/apr/0002-Revert-Backport-r1872164.-Fix-the-name-of-libtool-wh.patch lib_patch.Upstream +package/apr/0003-Revert-Add-the-ability-to-cross-compile-APR.patch lib_patch.Upstream +package/arptables/0001-Fix-musl-build-issue.patch lib_patch.Upstream +package/arptables/0002-libarptc-libarptc_incl.c-fix-build-with-O0.patch lib_patch.Upstream +package/asterisk/0001-sounds-do-not-download-and-check-sha1s.patch lib_patch.Upstream +package/asterisk/0002-configure-fix-detection-of-libcrypt.patch lib_patch.Upstream +package/asterisk/0003-build-ensure-target-directory-for-modules-exists.patch lib_patch.Upstream +package/asterisk/0004-install-samples-need-the-data-files.patch lib_patch.Upstream +package/at/0001-Makefile.in-fix-make-install-for-non-root-don-t-stri.patch lib_patch.Upstream +package/at/S99at lib_sysv.Indent lib_sysv.Variables +package/attr/0001-build-with-older-GCCs.patch lib_patch.Upstream +package/audit/S02auditd Shellcheck lib_sysv.Variables +package/aufs-util/0001-remove-user-settings.patch lib_patch.Upstream +package/aufs-util/0002-no-check-ver.patch lib_patch.Upstream +package/aufs-util/0003-no-strip-lib.patch lib_patch.Upstream +package/aumix/0001-fix-incorrect-makefile-am.patch lib_patch.Upstream +package/autoconf/0001-dont-add-dirty-to-version.patch lib_patch.Upstream +package/automake/0001-noman.patch lib_patch.Upstream +package/avahi/0001-Fix-NULL-pointer-crashes-from-175.patch lib_patch.Upstream +package/avahi/S05avahi-setup.sh lib_sysv.Indent lib_sysv.Variables +package/avahi/S50avahi-daemon lib_sysv.Indent lib_sysv.Variables +package/babeld/S50babeld Shellcheck lib_sysv.Indent lib_sysv.Variables +package/babeltrace2/0001-configure-simplify-warning-flags-detection.patch lib_patch.Upstream +package/bash/0001-input.h-add-missing-include-on-stdio.h.patch lib_patch.Upstream +package/bash/0002-parse.y-fix-compilation-for-non-multibyte-builds.patch lib_patch.Upstream +package/bash/0003-configure-invert-condition-for-strtoimax-builtin.patch lib_patch.Upstream +package/bc/0001-bc-use-MAKEINFO-variable-for-docs.patch lib_patch.Upstream +package/bc/0002-notice-read-and-write-errors-on-input-and-output.patch lib_patch.Upstream +package/bc/0003-dc-fix-exit-code-of-q-command.patch lib_patch.Upstream +package/bc/0004-no-gen-libmath.patch lib_patch.Upstream +package/bcache-tools/0001-Don-t-inline-crc64-for-gcc-5-compatability.patch lib_patch.Upstream +package/bctoolbox/0001-Fix-Libs.private-flags-for-mbedtls.patch lib_patch.Upstream +package/bcusdk/0002-eibd-fix-endless-recursion-when-using-USB-backends.patch lib_patch.Upstream +package/bearssl/0001-Fix-missing-objdir-dependency.patch lib_patch.Upstream +package/benejson/0001-c-std.patch lib_patch.Upstream +package/benejson/0002-Use-print-as-a-function-for-Py3-compatibility.patch lib_patch.Upstream +package/berkeleydb/0001-cwd-db_config.patch lib_patch.Upstream +package/berkeleydb/0002-atomic_compare_exchange.patch lib_patch.Upstream +package/bind/0001-cross.patch lib_patch.Upstream +package/bind/S81named Shellcheck lib_sysv.Indent lib_sysv.Variables +package/bird/0001-configure.ac-fix-build-with-autoconf-2.70.patch lib_patch.Upstream +package/bmx7/0001-Fix-schedule.c-378-36-error-SIOCGSTAMP-undeclared.patch lib_patch.Upstream +package/bmx7/0002-Fix-linking-error.patch lib_patch.Upstream +package/bmx7/0003-Reorder-includes-to-avoid-ethhdr-collision.patch lib_patch.Upstream +package/boinc/S99boinc-client Shellcheck lib_sysv.Indent lib_sysv.Variables +package/brickd/S70brickd Shellcheck lib_sysv.Indent lib_sysv.Variables +package/bridge-utils/0001-fix-build-on-musl.patch lib_patch.Upstream +package/brltty/0001-Fix-linking-error-on-mips64el.patch lib_patch.Upstream +package/brltty/S10brltty Shellcheck lib_sysv.Indent lib_sysv.Variables +package/bsdiff/0001-Add-missing-header-for-u_char.patch lib_patch.Upstream +package/bustle/0001-Makefile-fix-pcap-config-call.patch lib_patch.Upstream +package/busybox/0001-networking-libiproute-use-linux-if_packet.h-instead-.patch lib_patch.Upstream +package/busybox/0002-Makefile.flags-strip-non-l-arguments-returned-by-pkg.patch lib_patch.Upstream +package/busybox/0003-libbb-sockaddr2str-ensure-only-printable-characters-.patch lib_patch.Upstream +package/busybox/0004-nslookup-sanitize-all-printed-strings-with-printable.patch lib_patch.Upstream +package/busybox/S02sysctl lib_sysv.Variables +package/busybox/S10mdev Shellcheck lib_sysv.ConsecutiveEmptyLines lib_sysv.Indent +package/busybox/S15watchdog lib_sysv.Indent lib_sysv.Variables +package/busybox/S50telnet Shellcheck lib_sysv.Indent lib_sysv.Variables +package/busybox/udhcpc.script Shellcheck +package/bzip2/0001-build-objects-twice.patch lib_patch.Upstream +package/bzip2/0002-improve-build-system.patch lib_patch.Upstream +package/c-icap/0001-Required-fixes-to-compile-and-run-under-cygwin.patch lib_patch.Upstream +package/c-icap/S96cicap Shellcheck lib_sysv.Indent lib_sysv.Variables +package/ca-certificates/0001-mozilla-certdata2pem.py-make-cryptography-module-opt.patch lib_patch.Upstream +package/cache-calibrator/0001-Fix-conflicting-round-function.patch lib_patch.Upstream +package/caps/0001-Fix-stdint-types-with-musl.patch lib_patch.Upstream +package/cdrkit/0001-fix-build-with-uClibc.patch lib_patch.Upstream +package/cdrkit/0002-define-__THROW-to-avoid-build-issue-with-musl.patch lib_patch.Upstream +package/cdrkit/0003-Add-extern-to-char-outfile-declaration-to-fix-build-.patch lib_patch.Upstream +package/cfm/S65cfm lib_sysv.Indent lib_sysv.Variables +package/cgroupfs-mount/S30cgroupfs Shellcheck lib_sysv.Indent lib_sysv.Variables +package/chipmunk/0001-Fix-build-failure-on-musl.patch lib_patch.Upstream +package/chocolate-doom/0001-Remove-redundant-demoextend-definition.patch lib_patch.Upstream +package/chrony/S49chrony Shellcheck lib_sysv.Indent lib_sysv.Variables +package/cmake/0001-rename-cmake-rootfile.patch lib_patch.Upstream +package/cmocka/0001-Don-t-redefine-uintptr_t.patch lib_patch.Upstream +package/collectd/0001-src-netlink.c-remove-REG_NOERROR.patch lib_patch.Upstream +package/connman/S45connman lib_sysv.Variables +package/copas/0001-Do-not-load-coxpcall-for-LuaJIT.patch lib_patch.Upstream +package/coremark-pro/coremark-pro.sh.in Shellcheck +package/cppdb/0001-mysql-library-suffix.patch lib_patch.Upstream +package/cpulimit/0001-Fix-crash-and-compiler-warnings.patch lib_patch.Upstream +package/cpulimit/0002-Remove-sys-sysctl.h-and-add-missing-libgen.h-include.patch lib_patch.Upstream +package/cpulimit/0003-Fix-an-infrequent-crash.patch lib_patch.Upstream +package/cpulimit/0004-Remove-procfs.h-inclusion.patch lib_patch.Upstream +package/crda/0001-crda-support-python-3-in-utils-key2pub.py.patch lib_patch.Upstream +package/crda/0002-drop-ldconfig-call.patch lib_patch.Upstream +package/crda/0003-drop-werror.patch lib_patch.Upstream +package/ctorrent/0001-fix-musl-build.patch lib_patch.Upstream +package/cups/0001-Remove-man-from-BUILDDIRS-in-configure.patch lib_patch.Upstream +package/cups/0002-Do-not-use-genstrings.patch lib_patch.Upstream +package/cups/0003-Sanitize-the-installation-process.patch lib_patch.Upstream +package/cups/0004-Remove-PIE-flags-from-the-build.patch lib_patch.Upstream +package/curlftpfs/0001-fix-CURLOPT_INFILESIZE.patch lib_patch.Sob lib_patch.Upstream +package/curlftpfs/0002-free_ftpfs_file-memleak-fix.patch lib_patch.Sob lib_patch.Upstream +package/curlftpfs/0003-nocache-memleak-fix.patch lib_patch.Sob lib_patch.Upstream +package/curlftpfs/0004-fix-musl-build-off-t.patch lib_patch.Upstream +package/cutelyst/0001-server-CMakeLists.txt-don-t-override-CMAKE_EXE_LINKE.patch lib_patch.Upstream +package/cwiid/0001-wmdemo-fix-linking-by-adding-the-missing-lbluetooth-.patch lib_patch.Upstream +package/cwiid/0002-configure-make-wmgui-build-optional.patch lib_patch.Upstream +package/dahdi-tools/0001-no-build-docs.patch lib_patch.Upstream +package/dahdi-tools/0002-no-perl-manpages.patch lib_patch.Upstream +package/dante/0001-fix-sparc-compile.patch lib_patch.Upstream +package/dante/0002-osdep-m4-Remove-getaddrinfo-too-low-checks.patch lib_patch.Upstream +package/dante/S50dante Shellcheck lib_sysv.Indent lib_sysv.Variables +package/daq/0001-Fix-build-against-the-musl-C-library.patch lib_patch.Upstream +package/daq/0002-parallel-grammar.patch lib_patch.Upstream +package/darkhttpd/S50darkhttpd Shellcheck lib_sysv.Indent lib_sysv.Variables +package/davfs2/0001-src-Makefile.am-do-not-hardcode-fstack-protector-str.patch lib_patch.Upstream +package/dbus-cpp/0001-gcc4.7.patch lib_patch.Upstream +package/dbus-cpp/0002-cross-compile-tools.patch lib_patch.Upstream +package/dbus-cpp/0003-src-pipe.c-fix-build-error-with-gcc-7.x.patch lib_patch.Upstream +package/dbus/S30dbus Shellcheck lib_sysv.Indent lib_sysv.TrailingSpace lib_sysv.Variables +package/dc3dd/0001-no_man.patch lib_patch.Upstream +package/dc3dd/0002-fix-autoreconf.patch lib_patch.Upstream +package/dc3dd/0003-fix-for-glibc-2.28.patch lib_patch.Upstream +package/dcron/0001-main.c-add-newline-to-logfile-openning-error-message.patch lib_patch.Upstream +package/dcron/S90dcron lib_sysv.Variables +package/dhcp/S80dhcp-relay Shellcheck lib_sysv.Variables +package/dhcp/S80dhcp-server Shellcheck lib_sysv.Variables +package/dhcp/dhclient-script Shellcheck lib_shellscript.TrailingSpace +package/dhcpcd/S41dhcpcd lib_sysv.Indent lib_sysv.Variables +package/dht/0001-cmake.patch lib_patch.Upstream +package/dillo/0001-usr-local-include.patch lib_patch.Upstream +package/dillo/0002-Fix-openssl-detection.patch lib_patch.Upstream +package/dillo/0004-fix-build-with-gcc-10.patch lib_patch.Upstream +package/directfb-examples/0001-remove-bzero.patch lib_patch.Sob lib_patch.Upstream +package/directfb/0001-fix-missing-davinci-voodoo-header.patch lib_patch.Upstream +package/directfb/0002-imlib2-config.patch lib_patch.Upstream +package/directfb/0003-setregion-lock.patch lib_patch.Upstream +package/directfb/0004-use-gcc-link.patch lib_patch.Upstream +package/directfb/0005-add-missing-idivine-header.patch lib_patch.Upstream +package/directfb/0006-fix-client-gfx_state-initialisation.patch lib_patch.Upstream +package/dmalloc/0001-configure-fix-build-on-mips.patch lib_patch.Upstream +package/dmalloc/0003-configure-allow-overriding-some-tests.patch lib_patch.Upstream +package/dmalloc/0004-Makefile-use-the-configure-detected-or-user-supplied.patch lib_patch.Upstream +package/dmalloc/0005-configure-use-LD-instead-of-hard-coding-ld.patch lib_patch.Upstream +package/dmraid/0001-fix-compilation-under-musl.patch lib_patch.Upstream +package/dmraid/S20dmraid lib_sysv.Variables +package/docker-engine/S60dockerd Shellcheck lib_sysv.Indent lib_sysv.Variables +package/docopt-cpp/0001-only-build-one-target-use-BUILD_SHARED_LIBS-where-appropriate.patch lib_patch.Upstream +package/domoticz/S99domoticz Shellcheck +package/dovecot/0001-auth-Fix-handling-passdbs-with-identical-driver-args.patch lib_patch.Upstream +package/dracut/0001-dracut.sh-don-t-unset-LD_PRELOAD.patch lib_patch.Upstream +package/dracut/merged-usr-module-setup.sh Shellcheck +package/dropbear/S50dropbear Shellcheck lib_sysv.Indent lib_sysv.Variables +package/dt/0001-adjust-os-symlink.patch lib_patch.Upstream +package/dt/0002-dt-default-source-define.patch lib_patch.Upstream +package/dtc/0001-Fix-include-guards-for-older-kernel-u-boot-sources.patch lib_patch.Upstream +package/dvblast/0001-missing-lm.patch lib_patch.Upstream +package/dvblast/0002-fix-int-types.patch lib_patch.Upstream +package/dvbsnoop/0001-musl-types-h.patch lib_patch.Upstream +package/dvdrw-tools/0001-limits.h.patch lib_patch.Upstream +package/dvdrw-tools/0002-Include-sysmacros.h-to-compile-with-newer-gcc.patch lib_patch.Upstream +package/earlyoom/0001-main.c-fix-build-with-kernel-4.3.patch lib_patch.Upstream +package/earlyoom/S02earlyoom Shellcheck lib_sysv.Indent +package/ebtables/0001-replace-ebtables-save-perl-script-with-bash.patch lib_patch.Upstream +package/ebtables/0002-ebtables.h-restore-KERNEL_64_USERSPACE_32-checks.patch lib_patch.Upstream +package/ebtables/0003-configure.ac-add-option-enable-kernel-64-userland-32.patch lib_patch.Upstream +package/ecryptfs-utils/0001-musl.patch lib_patch.Upstream +package/ecryptfs-utils/0002-openssl110.patch lib_patch.Upstream +package/ecryptfs-utils/0003-fix-parallel-build-issue.patch lib_patch.Upstream +package/efl/0001-ecore_evas-engines-drm-meson.build-use-gl_deps-as-en.patch lib_patch.Upstream +package/efl/0002-ecore_evas-engines-drm-meson.build-fix-gl_drm-includ.patch lib_patch.Upstream +package/efl/0003-ecore_fb-fix-build-with-tslib.patch lib_patch.Upstream +package/eigen/0001-Adds-new-CMake-Options-for-controlling-build-compone.patch lib_patch.Upstream +package/ejabberd/0001-Makefile.in-do-not-download-or-compile-dependencies.patch lib_patch.Upstream +package/ejabberd/0002-fix-ejabberdctl.patch lib_patch.Upstream +package/ejabberd/0003-correct-includes.patch lib_patch.Upstream +package/ejabberd/S50ejabberd Shellcheck lib_sysv.Indent lib_sysv.Variables +package/ejabberd/check-erlang-lib Shellcheck +package/elftosb/0001-fixes-includes.patch lib_patch.Upstream +package/elftosb/0002-force-cxx-compiler.patch lib_patch.Upstream +package/elfutils/0001-Add-a-enable-disable-progs-configure-option.patch lib_patch.Upstream +package/elfutils/0002-Really-make-Werror-conditional-to-BUILD_WERROR.patch lib_patch.Upstream +package/erlang-p1-sip/0001-correct-include.patch lib_patch.Upstream +package/erlang-p1-xmpp/0001-fix-includes.patch lib_patch.Upstream +package/erlang-rebar/0001-src-rebar_port_compiler-add-fPIC-to-LDFLAGS-by-defau.patch lib_patch.Upstream +package/espeak/0001-Fix-build-of-shared-library-on-architectures-needing.patch lib_patch.Upstream +package/espeak/0002-tr_languages-cast-string_ordinal-init-values.patch lib_patch.Upstream +package/eudev/S10udev Shellcheck lib_sysv.ConsecutiveEmptyLines lib_sysv.Indent lib_sysv.Variables +package/evemu/0001-Include-limits.h-for-PATH_MAX.patch lib_patch.Upstream +package/evemu/0002-evemu-Update-struct-input_event.patch lib_patch.Upstream +package/evemu/0003-src-evemu.c-fix-build-with-kernels-4.16.patch lib_patch.Upstream +package/evemu/0004-src-evemu.c-fix-build-with-kernels-4.16.patch lib_patch.Upstream +package/exim/0001-Build-buildconfig-for-the-host.patch lib_patch.Upstream +package/exim/0002-Don-t-make-backup-copies-of-installed-files.patch lib_patch.Upstream +package/exim/0003-Skip-version-check-and-symlink-installation.patch lib_patch.Upstream +package/exim/S86exim lib_sysv.Indent lib_sysv.Variables +package/expect/0001-enable-cross-compilation.patch lib_patch.Upstream +package/expect/0002-allow-tcl-build-directory.patch lib_patch.Upstream +package/fail2ban/S60fail2ban Shellcheck lib_sysv.Variables +package/fakedate/fakedate Shellcheck +package/falcosecurity-libs/0001-cmake-Permit-setting-GRPC_CPP_PLUGIN.patch lib_patch.Upstream +package/fbgrab/0001-fix-static-build.patch lib_patch.Upstream +package/fbset/0001-Fix-musl-compile.patch lib_patch.Upstream +package/fbterm/0001-fbio.cpp-improxy.cpp-fbterm.cpp-fix-musl-compile.patch lib_patch.Upstream +package/fbterm/0002-mouse.cpp-fix-musl-compile.patch lib_patch.Upstream +package/fbterm/0003-C++11-compliance.patch lib_patch.Upstream +package/fbterm/0004-iconv.patch lib_patch.Upstream +package/fbv/0001-cross.patch lib_patch.Sob lib_patch.Upstream +package/fbv/0002-fix-24bpp-support-on-big-endian.patch lib_patch.Sob lib_patch.Upstream +package/fbv/0003-fix-bgr555.patch lib_patch.Upstream +package/fbv/0004-giflib.patch lib_patch.Upstream +package/fbv/0005-include.patch lib_patch.Sob lib_patch.Upstream +package/fbv/0006-libpng15.patch lib_patch.Upstream +package/fbv/0007-gif.c-fic-build-with-gcc-10.patch lib_patch.Upstream +package/fcgiwrap/0001-use-LIBS-from-configure.patch lib_patch.Upstream +package/fcgiwrap/0002-link-with-libsystemd-instead-of-libsystemd-daemon.patch lib_patch.Upstream +package/ffmpeg/0001-swscale-x86-yuv2rgb-Fix-build-without-SSSE3.patch lib_patch.Upstream +package/ffmpeg/0002-avcodec-vaapi_h264-skip-decode-if-pic-has-no-slices.patch lib_patch.Upstream +package/ffmpeg/0003-libavutil-Fix-mips-build.patch lib_patch.Upstream +package/ffmpeg/0004-configure-add-extralibs-to-extralibs_xxx.patch lib_patch.Upstream +package/ficl/0001-fix-Makefile.patch lib_patch.Upstream +package/flatbuffers/0001-include-flatbuffers-base.h-fix-build-on-musl.patch lib_patch.Upstream +package/flex/0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch lib_patch.Upstream +package/flex/0002-build-make-it-possible-to-disable-the-build-of-the-f.patch lib_patch.Upstream +package/flex/0003-build-make-it-possible-to-disable-the-build-of-the-d.patch lib_patch.Upstream +package/flite/0001-fix-alsa-static.patch lib_patch.Upstream +package/fltk/0001-disable-tests.patch lib_patch.Upstream +package/fluxbox/0001-fixes-bug-1138.patch lib_patch.Upstream +package/freeradius-client/0001-fix-for-nettle.patch lib_patch.Upstream +package/freescale-imx/imx-kobs/0001-Fix-musl-build.patch lib_patch.Upstream +package/freescale-imx/imx-kobs/0002-Fix-build-for-recent-toolchains.patch lib_patch.Upstream +package/freescale-imx/imx-uuc/S80imx-uuc Shellcheck lib_sysv.Indent lib_sysv.Variables +package/freescale-imx/imx-vpu-hantro/0001-Fix-ion.h-header-inclusion-to-be-standard.patch lib_patch.Upstream +package/freescale-imx/imx-vpu-hantro/0002-Fix-build-with-uclibc-toolchain.patch lib_patch.Upstream +package/freescale-imx/imx-vpu-hantro/0003-Fix-Linux-kernel-version-header.patch lib_patch.Upstream +package/freeswitch/0001-libs-srtp-crypto-hash-hmac_ossl.c-fix-build-with-lib.patch lib_patch.Upstream +package/frr/S50frr Shellcheck +package/fstrcmp/0001-disable-rpath.patch lib_patch.Upstream +package/ftop/0001-overflow.patch lib_patch.Upstream +package/fwts/0001-build-do-not-use-Werror.patch lib_patch.Upstream +package/fxdiv/0001-CMake-don-t-enable-CXX-unless-building-tests-benchma.patch lib_patch.Upstream +package/fxload/0001-fix-static-build.patch lib_patch.Upstream +package/gcc/12.4.0/0001-disable-split-stack-for-non-thread-builds.patch lib_patch.Upstream +package/gcc/13.3.0/0001-disable-split-stack-for-non-thread-builds.patch lib_patch.Upstream +package/gcc/14.2.0/0001-disable-split-stack-for-non-thread-builds.patch lib_patch.Upstream +package/gcc/8.4.0/0001-xtensa-fix-PR-target-91880.patch lib_patch.Upstream +package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch lib_patch.Upstream +package/gcc/8.4.0/0003-libsanitizer-Remove-cyclades-from-libsanitizer.patch lib_patch.Upstream +package/gcc/8.4.0/0004-disable-split-stack-for-non-thread-builds.patch lib_patch.Upstream +package/gcr/0001-meson-Fix-unknown-kw-argument-in-gnome.generate_gir.patch lib_patch.Upstream +package/gdb/13.2/0001-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch lib_patch.Upstream +package/gdb/13.2/0002-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch lib_patch.Upstream +package/gdb/13.2/0003-use-asm-sgidefs.h.patch lib_patch.Upstream +package/gdb/13.2/0004-gdbserver-fix-build-for-m68k.patch lib_patch.Upstream +package/gdb/13.2/0005-nat-fork-inferior-include-linux-ptrace.h.patch lib_patch.Upstream +package/gdb/13.2/0006-Fix-getrandom-compile-for-uclibc-v1.0.35.patch lib_patch.Upstream +package/gdb/13.2/0007-fix-musl-build-on-riscv.patch lib_patch.Upstream +package/gdb/13.2/0008-gdbserver-Makefile.in-fix-NLS-build.patch lib_patch.Upstream +package/gdb/13.2/0009-gdb-Fix-native-build-on-xtensa.patch lib_patch.Upstream +package/gdb/14.2/0001-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch lib_patch.Upstream +package/gdb/14.2/0002-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch lib_patch.Upstream +package/gdb/14.2/0003-use-asm-sgidefs.h.patch lib_patch.Upstream +package/gdb/14.2/0004-gdbserver-fix-build-for-m68k.patch lib_patch.Upstream +package/gdb/14.2/0005-nat-fork-inferior-include-linux-ptrace.h.patch lib_patch.Upstream +package/gdb/14.2/0006-Fix-getrandom-compile-for-uclibc-v1.0.35.patch lib_patch.Upstream +package/gdb/14.2/0007-fix-musl-build-on-riscv.patch lib_patch.Upstream +package/gdb/14.2/0008-gdbserver-Makefile.in-fix-NLS-build.patch lib_patch.Upstream +package/gdb/14.2/0009-gdb-Fix-native-build-on-xtensa.patch lib_patch.Upstream +package/gdb/15.1/0001-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch lib_patch.Upstream +package/gdb/15.1/0002-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch lib_patch.Upstream +package/gdb/15.1/0003-use-asm-sgidefs.h.patch lib_patch.Upstream +package/gdb/15.1/0004-gdbserver-fix-build-for-m68k.patch lib_patch.Upstream +package/gdb/15.1/0005-nat-fork-inferior-include-linux-ptrace.h.patch lib_patch.Upstream +package/gdb/15.1/0006-Fix-getrandom-compile-for-uclibc-v1.0.35.patch lib_patch.Upstream +package/gdb/15.1/0007-fix-musl-build-on-riscv.patch lib_patch.Upstream +package/gdb/15.1/0008-gdbserver-Makefile.in-fix-NLS-build.patch lib_patch.Upstream +package/gdb/15.1/0009-gdb-Fix-native-build-on-xtensa.patch lib_patch.Upstream +package/genpart/0001-fix-return-code.patch lib_patch.Upstream +package/genromfs/0001-build-system.patch lib_patch.Sob lib_patch.Upstream +package/gensio/0001-Fix-missing-EVP_PKEY_ED25519-build-error-on-libressl.patch lib_patch.Upstream +package/gerbera/S99gerbera lib_sysv.Indent +package/giblib/0001-fix-imlib2-detection.patch lib_patch.Upstream +package/git-crypt/0001-fix-build-with-libressl-3.5.0.patch lib_patch.Upstream +package/glorytun/0001-Add-support-for-Apple-silicon.patch lib_patch.Upstream +package/glorytun/0002-aegis256.c-fix-aarch64-build-with-uclibc.patch lib_patch.Upstream +package/gnu-efi/0001-Make.defaults-don-t-override-ARCH-when-cross-compili.patch lib_patch.Upstream +package/gnupg/0001-build-Always-use-EXTERN_UNLESS_MAIN_MODULE-pattern.patch lib_patch.Upstream +package/gnuplot/0001-configure-add-without-demo-option.patch lib_patch.Upstream +package/go/go-src/0001-build.go-explicit-option-for-crosscompilation.patch lib_patch.Upstream +package/gob2/0001-dont-include-from-prefix.patch lib_patch.Upstream +package/gobject-introspection/0001-disable-tests.patch lib_patch.Upstream +package/gobject-introspection/0002-Add-rpath-links-to-ccompiler.patch lib_patch.Upstream +package/gobject-introspection/0003-giscanner-ignore-error-return-codes-from-ldd-wrapper.patch lib_patch.Upstream +package/gpsd/S50gpsd Shellcheck lib_sysv.Indent lib_sysv.Variables +package/gptfdisk/0001-gptcurses-partially-revert-Tweaks-for-building-on-th.patch lib_patch.Upstream +package/graphite2/0001-don-t-install-a-libtool-file-with-static-library.patch lib_patch.Upstream +package/grpc/0002-wrap_memcpy.cc-add-GPR_DISABLE_WRAPPED_MEMCPY.patch lib_patch.Upstream +package/grpc/0004-disable-unconditionally-downloading-api-repos.patch lib_patch.Upstream +package/gstreamer1/gstd/0001-Don-t-require-gstd-check-user-xenv.sh-for-systemd-se.patch lib_patch.Upstream +package/guile/0001-calculate-csqrt_manually.patch lib_patch.Upstream +package/guile/0002-Makefile.am-fix-build-without-makeinfo.patch lib_patch.Upstream +package/gumbo-parser/0001-configure.ac-fix-build-without-C.patch lib_patch.Upstream +package/gutenprint/0001-use-pregen-xmli18n-header.patch lib_patch.Upstream +package/gutenprint/0002-cups-support-replaces-static-with-static-libtool-lib.patch lib_patch.Upstream +package/gvfs/0001-build-Remove-incorrect-i18n.merge_file-argument.patch lib_patch.Upstream +package/harfbuzz/0001-meson.build-check-for-pthread.h.patch lib_patch.Upstream +package/haserl/0001-add-haserl_lualib.inc.patch lib_patch.Upstream +package/haveged/S21haveged Shellcheck lib_sysv.Variables +package/heirloom-mailx/0001-fix-libressl-support.patch lib_patch.Upstream +package/hplip/0001-build-use-pkg-config-to-discover-libusb.patch lib_patch.Upstream +package/hplip/0002-configure.in-fix-AM_INIT_AUTOMAKE-call.patch lib_patch.Upstream +package/htpdate/S43htpdate Shellcheck +package/httping/0001-fix-math-library-linking.patch lib_patch.Upstream +package/httping/0002-Makefile-allow-build-without-gettext.patch lib_patch.Upstream +package/i2pd/S99i2pd Shellcheck lib_sysv.Indent lib_sysv.Variables +package/i7z/0001-fix-build-with-gcc-10.patch lib_patch.Upstream +package/ibm-sw-tpm2/0001-Use-LONG_BIT-to-define-RADIX_BITS.patch lib_patch.Upstream +package/ibrcommon/0001-ibrcommon-data-File.cpp-support-POSIX-basename-call.patch lib_patch.Upstream +package/ibrcommon/0002-ibrcommon-added-openssl-1.1-compatibility-264.patch lib_patch.Upstream +package/ibrcommon/0003-ibrcommon-ssl-gcm-fix-static-build-with-openssl.patch lib_patch.Upstream +package/icu/0001-dont-build-static-dynamic-twice.patch lib_patch.Upstream +package/icu/0002-workaround-toolchain-bugs.patch lib_patch.Upstream +package/icu/0003-link-icudata-as-data-only.patch lib_patch.Upstream +package/icu/0004-fix-static-linking-with-icu-uc.patch lib_patch.Upstream +package/ifmetric/0001-Fix-issue-NETLINK-Packet-too-small-or-truncated-92-1.patch lib_patch.Upstream +package/ifplugd/0001-cross.patch lib_patch.Sob lib_patch.Upstream +package/ifplugd/0002-fix-headers.patch lib_patch.Sob lib_patch.Upstream +package/ifplugd/0003-no-cxx.patch lib_patch.Upstream +package/ifplugd/0004-musl-fix-types.patch lib_patch.Upstream +package/ifplugd/0005-src-interface.h-fix-build-with-gcc-10.patch lib_patch.Upstream +package/iftop/0001-ui_common.h-fix-build-with-gcc-10.patch lib_patch.Upstream +package/iftop/0002-Rename-pcap_filter-to-iftop_pcap_filter.patch lib_patch.Upstream +package/ifupdown-scripts/S40network Shellcheck lib_sysv.EmptyLastLine lib_sysv.Indent lib_sysv.Variables +package/ifupdown-scripts/network/if-pre-up.d/wait_iface Shellcheck lib_shellscript.EmptyLastLine +package/ifupdown-scripts/nfs_check Shellcheck +package/ifupdown/0001-archcommon-define-GNU-only-FNM_EXTMATCH-to-zero-on-n.patch lib_patch.Upstream +package/ifupdown/0001-dont-use-dpkg-architecture.patch lib_patch.Upstream +package/igd2-for-linux/S99upnpd Shellcheck lib_sysv.Indent lib_sysv.Variables +package/imx-mkimage/0001-Add-unused-fake-version.patch lib_patch.Upstream +package/inadyn/S70inadyn NotExecutable lib_sysv.Indent +package/initscripts/init.d/rcK Shellcheck lib_shellscript.ConsecutiveEmptyLines lib_shellscript.EmptyLastLine +package/initscripts/init.d/rcS Shellcheck lib_shellscript.ConsecutiveEmptyLines lib_shellscript.EmptyLastLine +package/input-event-daemon/S99input-event-daemon lib_sysv.ConsecutiveEmptyLines lib_sysv.Indent lib_sysv.Variables +package/intel-gmmlib/0001-Drop-hardening-related-flags.patch lib_patch.Upstream +package/intel-mediasdk/0001-Don-t-force-fstack-protector.patch lib_patch.Upstream +package/intltool/0001-perl-5.26-compatibility.patch lib_patch.Upstream +package/iotop/0001-Fix-build-error-with-Python-3.patch lib_patch.Upstream +package/iozone/0001-Add-new-targets-for-iozone.patch lib_patch.Upstream +package/ipmitool/0001-configure.ac-fix-readline-static-build.patch lib_patch.Upstream +package/ipmitool/0002-Fix-enterprise-numbers-URL.patch lib_patch.Upstream +package/ipmitool/0003-Do-not-require-the-IANA-PEN-registry-file.patch lib_patch.Upstream +package/ipmitool/0004-configure.ac-allow-disabling-registry-downloads.patch lib_patch.Upstream +package/iprutils/0001-configure.ac-add-AC_USE_SYSTEM_EXTENSIONS.patch lib_patch.Upstream +package/iptables/S35iptables Shellcheck +package/irda-utils/0001-daemon.patch lib_patch.Sob lib_patch.Upstream +package/irda-utils/0002-nommu.patch lib_patch.Sob lib_patch.Upstream +package/irda-utils/0003-subdir.patch lib_patch.Sob lib_patch.Upstream +package/irda-utils/0004-musl.patch lib_patch.Upstream +package/irqbalance/S13irqbalance Shellcheck lib_sysv.Indent lib_sysv.Variables +package/irrlicht/0001-override-CPPFLAGS-CXXFLAGS-and-CFLAGS-in-Makefile.patch lib_patch.Upstream +package/irrlicht/0002-makefile-override-LDFLAGS-and-remove-obsolete-X11R6-.patch lib_patch.Upstream +package/iucode-tool/S00iucode-tool lib_sysv.Variables +package/iwd/S40iwd Shellcheck lib_sysv.Variables +package/janus-gateway/0001-disable-ssp.patch lib_patch.Upstream +package/jose/0001-lib-hsh.c-rename-hsh-local-variable.patch lib_patch.Upstream +package/jose/0002-man-add-option-to-skip-building-man-pages.patch lib_patch.Upstream +package/kexec-lite/0001-clean-restart.patch lib_patch.Upstream +package/keyutils/0001-fix-install-rule.patch lib_patch.Upstream +package/keyutils/0002-cifs.patch lib_patch.Sob lib_patch.Upstream +package/kmod/0001-fix-O_CLOEXEC.patch lib_patch.Upstream +package/kodi/S50kodi Shellcheck lib_sysv.Variables +package/latencytop/0001-makefile.patch lib_patch.Upstream +package/lbase64/0001-retro-compatible-with-Lua-5.1.patch lib_patch.Upstream +package/lcdproc/0001-LCDd.conf.patch lib_patch.Upstream +package/lcdproc/0002-Add-missing-ioctl-header.patch lib_patch.Upstream +package/lcdproc/0003-Fixcompilation-with-GCC-10-x.patch lib_patch.Upstream +package/leafnode2/0001-cross_makefile.patch lib_patch.Upstream +package/let-me-create/0001-fix-build-with-musl-C-library.patch lib_patch.Upstream +package/leveldb/0001-Fix-compilation-with-g-4.8.2.patch lib_patch.Upstream +package/leveldb/0002-CMake-install-libmemenv.a.patch lib_patch.Upstream +package/leveldb/0003-CMakeLists.txt-check-for-atomic-library.patch lib_patch.Upstream +package/lftp/0001-Fix-build-with-LibreSSL-following-commit-537f37898.patch lib_patch.Upstream +package/lftp/0002-src-lftp_ssl.c-fix-build-with-libressl-2.7.0.patch lib_patch.Upstream +package/libabseil-cpp/0001-force-position-independent-code.patch lib_patch.Upstream +package/libargon2/0001-libargon2-dont-fail-on-existing-symlink.patch lib_patch.Upstream +package/libart/0001-art-config-cross.patch lib_patch.Sob lib_patch.Upstream +package/libatasmart/0001-strpool-cross-flags.patch lib_patch.Upstream +package/libavl/0001-fix-makefile.patch lib_patch.Upstream +package/libb64/0001-Integer-overflows.patch lib_patch.Upstream +package/libb64/0002-Initialize-C++-objects.patch lib_patch.Upstream +package/libcdaudio/0001-libcdaudio-enable-autoreconf.patch lib_patch.Upstream +package/libcec/0001-cecloader-h-fix-null-return.patch lib_patch.Upstream +package/libcgi/0001-CMakeLists.txt-honour-BUILD_TESTING.patch lib_patch.Upstream +package/libcgicc/0001-disable-documentation-option.patch lib_patch.Sob lib_patch.Upstream +package/libconfuse/0001-Fix-163-unterminated-username-used-with-getpwnam.patch lib_patch.Upstream +package/libcorrect/0002-CMakeLists.txt-conditionally-use-fsanitize-address.patch lib_patch.Upstream +package/libcuefile/0001-fix-static-link.patch lib_patch.Upstream +package/libdaemon/0001-testd-use-unistd-h-instead-of-sys-unistd-h.patch lib_patch.Upstream +package/libdnet/0001-python-makefile.patch lib_patch.Upstream +package/libdrm/0001-tests-meson.build-disable-nouveau-tests-for-static-b.patch lib_patch.Upstream +package/libdvbcsa/0001-altivec-powerpc64.patch lib_patch.Upstream +package/libeXosip2/0001-src-eXtl_dtls.c-fix-build-with-libressl-3.4.1.patch lib_patch.Upstream +package/libedit/0001-check-bsd-functions-in-libbsd.patch lib_patch.Upstream +package/libevent/0001-Don-t-define-BIO_get_init-for-LibreSSL-3-5.patch lib_patch.Upstream +package/libfcgi/0001-link-against-math.patch lib_patch.Upstream +package/libfcgi/0002-disable-examples.patch lib_patch.Upstream +package/libffi/0001-Fix-use-of-compact-eh-frames-on-MIPS.patch lib_patch.Upstream +package/libfm/0001-modules-fix-cross-compilation.patch lib_patch.Upstream +package/libfreeimage/0001-no-root-install.patch lib_patch.Upstream +package/libfreeimage/0002-fix-cpuid-x86.patch lib_patch.Upstream +package/libfreeimage/0003-fix-big-endian-os.patch lib_patch.Upstream +package/libfreeimage/0004-fixed-C-11-warnings.patch lib_patch.Upstream +package/libftdi/0001-pkgconfig_libusb.patch lib_patch.Sob lib_patch.Upstream +package/libftdi/0002-libftdi.pc-requires-libusb-fix-static-build.patch lib_patch.Sob lib_patch.Upstream +package/libftdi1/0001-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch lib_patch.Upstream +package/libftdi1/0002-CMakeLists.txt-fix-paths-when-FTDIPP-is-set.patch lib_patch.Upstream +package/libftdi1/0003-CMakeLists.txt-fix-static-build-with-libusb-and-lato.patch lib_patch.Upstream +package/libfuse/0001-fix-aarch64-build.patch lib_patch.Upstream +package/libfuse/0002-util-ulockmgr_server-c-conditionally-define-closefrom-fix-glibc-2-34.patch lib_patch.Upstream +package/libgcrypt/0001-configure.ac-add-an-option-to-disable-tests.patch lib_patch.Upstream +package/libglfw/0001-Wayland-Remove-extra-cmake-modules-dependency.patch lib_patch.Upstream +package/libgpiod/0001-build-add-a-configure-switch-for-building-examples.patch lib_patch.Upstream +package/libgsm/0001-Misc-fixes-from-Archlinux.patch lib_patch.Upstream +package/libgtk2/0001-reduce-dependencies.patch lib_patch.Upstream +package/libgtk3/0001-Remove-Gdk-dependency-from-gtk-encode-symbolic-svg.patch lib_patch.Upstream +package/libhdhomerun/0001-dont-strip.patch lib_patch.Upstream +package/libhid/0001-dont-fiddle-with-debug-flags.patch lib_patch.Upstream +package/libhid/0002-no-newline-in-ldflags.patch lib_patch.Upstream +package/libhid/0003-uclinux.patch lib_patch.Upstream +package/libical/0001-no-tests.patch lib_patch.Upstream +package/libical/0002-icaltypes-c-icalreqstattype_from_string-copy-the-reqstattype.patch lib_patch.Upstream +package/libiio/S99iiod Shellcheck lib_sysv.Variables +package/libiqrf/0001-cmake-handle-static-library-and-find-required-thread.patch lib_patch.Upstream +package/libiqrf/0002-use-only-c-language.patch lib_patch.Upstream +package/libjson/0001-fix-broken-makefile.patch lib_patch.Upstream +package/libks/0001-CMakeLists.txt-honour-BUILD_TESTING.patch lib_patch.Upstream +package/liblinear/0001-build-static-lib.patch lib_patch.Upstream +package/liblockfile/0001-Makefile.in-fix-cross-compilation.patch lib_patch.Upstream +package/liblog4c-localtime/0001-log4c.m4-fix-underquoted-definition-of-AM_PATH_LOG4C.patch lib_patch.Upstream +package/liblog4c-localtime/0002-Fix-linking-error-without-pthread.patch lib_patch.Upstream +package/liblog4c-localtime/0003-Fix-debug-mode-build-with-uClibc.patch lib_patch.Upstream +package/liblog4c-localtime/0004-Add-AC_CONFIG_MACRO_DIR-to-configure.in.patch lib_patch.Upstream +package/liblog4c-localtime/0005-Fix-C-support.patch lib_patch.Upstream +package/libloki/0001-allow-to-install-to-a-specific-location-using-DESTDI.patch lib_patch.Upstream +package/libloki/0002-use-ln-snf.patch lib_patch.Upstream +package/libmad/0001-mips-h-constraint-removal.patch lib_patch.Sob lib_patch.Upstream +package/libmad/0002-configure-ac-automake-foreign.patch lib_patch.Upstream +package/libmng/0001-jpeg-9a.patch lib_patch.Upstream +package/libmodsecurity/0001-configure.ac-drop-usage-of-git-at-configure-time.patch lib_patch.Upstream +package/libmodsecurity/0002-modsecurity.pc.in-add-lstdc.patch lib_patch.Upstream +package/libmpeg2/0001-altivec.patch lib_patch.Upstream +package/libmpeg2/0002-armv4l.patch lib_patch.Upstream +package/libmpeg2/0003-fix-arm-detection.patch lib_patch.Upstream +package/libmpeg2/0004-fix-sparc.patch lib_patch.Upstream +package/libnetfilter_conntrack/0001-conntrack-fix-build-with-kernel-5-15-and-musl.patch lib_patch.Upstream +package/libnfc/0001-autotools-make-example-build-optional.patch lib_patch.Upstream +package/libnids/0001-libpcap-use-pkg-config.patch lib_patch.Upstream +package/libnss/0001-Bug-1801182-Allow-overriding-OS_ARCH-OS_TEST-and-OS_.patch lib_patch.Upstream +package/liboauth/0001-Fixes-build-issue-with-OpenSSL-1.1.0.patch lib_patch.Upstream +package/libodb-mysql/0001-fix-syntax-issue-while-checking-ldflags.patch lib_patch.Upstream +package/libodb-mysql/0002-mariadb-FTBFS-fix.patch lib_patch.Upstream +package/libopenssl/0001-Reproducible-build-do-not-leak-compiler-path.patch lib_patch.Upstream +package/libopenssl/0002-Configure-use-ELFv2-ABI-on-some-ppc64-big-endian-sys.patch lib_patch.Upstream +package/liboping/0001-fix-utf8-support.patch lib_patch.Upstream +package/liboping/0002-Open-raw-sockets-when-adding-hosts-not-when-doing-th.patch lib_patch.Upstream +package/liboping/0003-Fix-compile-break-with-GCC-7-buffer-overflow-with-snprintf.patch lib_patch.Upstream +package/liboping/0004-Fix-compile-error-on-GCC-7.patch lib_patch.Upstream +package/liboping/0005-src-oping.c-always-use-s-style-format-for-printf-sty.patch lib_patch.Upstream +package/libp11/0001-src-p11_attr.c-fix-build-with-gcc-4.8.patch lib_patch.Upstream +package/libplatform/0001-cmake-require-c-11-as-the-minimum-standard.patch lib_patch.Upstream +package/libpthsem/0001-fix-build-on-linux-3.x-host.patch lib_patch.Upstream +package/libressl/0001-always-expose-SSL_OP_NO_TLSv1_3.patch lib_patch.Upstream +package/libroxml/0001-src-roxml_mem.h-add-missing-extern.patch lib_patch.Upstream +package/librsvg/0001-gdk-pixbuf-loader-Makefile.am-set-GDK_PIXBUF_MODULED.patch lib_patch.Upstream +package/librtlsdr/0001-Makefile.am-respect-DESTDIR-with-install-udev-rules.patch lib_patch.Upstream +package/libselinux/0001-Do-not-use-PYCEXT-and-rely-on-the-installed-file-nam.patch lib_patch.Upstream +package/libsepol/0001-support-static-only.patch lib_patch.Upstream +package/libserial/0001-SerialPort.cpp-fix-build-when-size_t-is-an-unsigned-.patch lib_patch.Upstream +package/libserial/0002-SerialPort.cpp-don-t-use-high-baudrates-when-not-ava.patch lib_patch.Upstream +package/libserialport/0001-uclinux-detection.patch lib_patch.Upstream +package/libshdata/0001-backend-Add-missing-include-files.patch lib_patch.Upstream +package/libshdata/0002-examples-stress_test-Fix-build-with-musl-libc.patch lib_patch.Upstream +package/libsidplay2/0001-sidplay2-libs-2.1.1.patch lib_patch.Upstream +package/libsidplay2/0002-pkg-config.patch lib_patch.Upstream +package/libsidplay2/0003-gcc6.patch lib_patch.Upstream +package/libsigrok/0001-Support-glibmm-2.68.patch lib_patch.Upstream +package/libsigrokdecode/0001-configure-ac-Add-support-for-Python-3-9.patch lib_patch.Upstream +package/libsigrokdecode/0002-configure-Add-python-3-10-support.patch lib_patch.Upstream +package/libsigrokdecode/0003-configure-ac-Use-python3-embed-pc-as-a-fallback.patch lib_patch.Upstream +package/libsoup/0001-meson.build-set-c_std-to-gnu99.patch lib_patch.Upstream +package/libsoxr/0001-Add-Libs.private-for-static-linking.patch lib_patch.Upstream +package/libspatialindex/0001-allow-building-static-libs.patch lib_patch.Upstream +package/libspatialindex/0002-CMakeLists.txt-fix-CMAKE_BUILD_TYPE.patch lib_patch.Upstream +package/libsquish/0001-Makefile-add-f-option-for-ln-to-remove-existing-dest.patch lib_patch.Upstream +package/libsvg/0001-fix-expat-static-declaration.patch lib_patch.Upstream +package/libsvg/0002-Fix-undefined-symbol-png_set_gray_1_2_4_to_8.patch lib_patch.Upstream +package/libsvgtiny/0001-disable-debug-printfs.patch lib_patch.Upstream +package/libsvgtiny/0002-Remove-Werror.patch lib_patch.Upstream +package/libsvgtiny/0003-Hopefully-silence-warnings-about-inlines-and-non-inlines-calling-one.patch lib_patch.Upstream +package/libsvgtiny/0004-Build-Include-gperf-generated-code-directly.patch lib_patch.Upstream +package/libtalloc/0001-buildtools-wafsamba-add-disable-stack-protector-opti.patch lib_patch.Upstream +package/libtelnet/0001-fix-compilation-without-zlib.patch lib_patch.Upstream +package/libtheora/0001-link-libtheoradec.patch lib_patch.Upstream +package/libtomcrypt/0001-fix-CVE-2019-17362.patch lib_patch.Upstream +package/libtommath/0001-Build-test-bn_mp_set_double-c-on-more-platforms.patch lib_patch.Upstream +package/libtorrent/0001-libtorrent.pc.in-add-Libs.Private.patch lib_patch.Upstream +package/libubootenv/0001-src-CMakeLists.txt-do-not-force-the-build-of-a-share.patch lib_patch.Upstream +package/libuhttpd/0001-add-compatibility-for-wolfssl-5-0.patch lib_patch.Upstream +package/libuio/0001-configure.ac-set-automake-strictness-to-foreign.patch lib_patch.Upstream +package/liburcu/0001-Only-blacklist-ARM-gcc-4.8.0-and-4.8.1.patch lib_patch.Upstream +package/libvpx/0001-vpx_mem-vpx_mem.h-Fix-compilation-with-uClibc.patch lib_patch.Upstream +package/libwebsock/0001-Switch-to-use-pkg-config-to-detect-libevent-and-open.patch lib_patch.Upstream +package/libwebsock/0002-fix-ssl.patch lib_patch.Upstream +package/libwebsock/0003-fix-incorrect-inline.patch lib_patch.Upstream +package/libyuv/0001-i386-sse2.patch lib_patch.Upstream +package/lighttpd/0001-Modify-the-default-lighttpd-configuration-file-to-ha.patch lib_patch.Upstream +package/lighttpd/S50lighttpd Shellcheck lib_sysv.EmptyLastLine lib_sysv.Indent lib_sysv.Variables +package/linknx/0001-configure-ac-tweak-CPPUNIT-conditional.patch lib_patch.Upstream +package/linknx/0002-src-Makefile.am-fix-linking-with-log4cpp.patch lib_patch.Upstream +package/linphone/0001-src-core-paths-paths.cpp-fix-powerpc-build.patch lib_patch.Upstream +package/linux-fusion/0001-fix-for-linux-4-and-above.patch lib_patch.Upstream +package/linux-fusion/0002-Fix-mismatched-conversion-spec-and-value-in-printk.patch lib_patch.Upstream +package/linux-fusion/0003-Fix-fusion-Unknown-symbol-tasklist_lock-err-0.patch lib_patch.Upstream +package/linux-fusion/0004-Port-one-one_udp.c-to-Linux-4.1.patch lib_patch.Upstream +package/linux-zigbee/0001-test-serial-Remove-test-serial.patch lib_patch.Upstream +package/linux-zigbee/0002-addrdb-coord-config-parse.y-add-missing-time.h-inclu.patch lib_patch.Upstream +package/linuxptp/S65ptp4l Shellcheck lib_sysv.Indent +package/linuxptp/S66phc2sys Shellcheck lib_sysv.Indent +package/lirc-tools/0001-plugins-devinput.c-fix-build-with-musl-1.2.0.patch lib_patch.Upstream +package/lirc-tools/0002-configure-add-disable-doc-option.patch lib_patch.Upstream +package/lirc-tools/S25lircd lib_sysv.Indent lib_sysv.Variables +package/lite/0001-dfbspy-stat.patch lib_patch.Sob lib_patch.Upstream +package/lite/0002-no-tests.patch lib_patch.Sob lib_patch.Upstream +package/lite/0003-pkg-config.patch lib_patch.Sob lib_patch.Upstream +package/live555/0001-Add-a-pkg-config-file-for-the-shared-libraries.patch lib_patch.Upstream +package/lldpd/S60lldpd Shellcheck lib_sysv.Indent lib_sysv.Variables +package/llvm-project/clang/0001-lib-Driver-ToolChains-Gnu-Use-GCC_INSTALL_PREFIX-in-.patch lib_patch.Upstream +package/llvm-project/libclc/0001-support-out-of-tree-build.patch lib_patch.Upstream +package/lm-sensors/0001-static-build.patch lib_patch.Upstream +package/lm-sensors/0002-no-host-ldconfig.patch lib_patch.Upstream +package/lmbench/0001-scripts-build-use-bin-bash-as-shell.patch lib_patch.Upstream +package/lmbench/0002-src-Makefile-add-lmbench-to-list-of-executables.patch lib_patch.Upstream +package/lmbench/0003-TOO_LONG-100-usec-to-prevent-memsize-from-timingout-.patch lib_patch.Upstream +package/lmbench/0004-Fix-garbage-pointer-for-lat_rpc-S-localhost.patch lib_patch.Upstream +package/localedef/0002-relax-dependency-on-GCC-to-4.8-and-binutils-to-2.24.patch lib_patch.Upstream +package/lockdev/0001-Makefile-install-static-library-and-headers-separate.patch lib_patch.Upstream +package/lockfile-progs/0001-sus3v-legacy.patch lib_patch.Sob lib_patch.Upstream +package/lshw/0001-solve-Compile-error-when-g-version-is-less-than-5.patch lib_patch.Upstream +package/ltrace/0001-arm-plt.patch lib_patch.Upstream +package/ltrace/0002-sparc-add-missing-library.h-include.patch lib_patch.Upstream +package/ltrace/0003-configure.ac-fix-autoreconf-with-autoconf-2.70.patch lib_patch.Upstream +package/lttng-babeltrace/0001-tests-lib-Makefile.am-remove-unneeded-static-flag.patch lib_patch.Upstream +package/lttng-babeltrace/0002-configure.ac-fix-popt-static-build.patch lib_patch.Upstream +package/lttng-libust/0001-configure.ac-add-disable-tests.patch lib_patch.Upstream +package/lttng-tools/0001-configure.ac-add-disable-tests.patch lib_patch.Upstream +package/lua-gd/0001-Protect-declaration-of-LgdImageCreateFromPng-with-GD.patch lib_patch.Upstream +package/lua-lunix/0001-remove-link-with-librt.patch lib_patch.Upstream +package/lua-sdl2/0001-Do-not-reference-host-directory-for-headers.patch lib_patch.Upstream +package/lua-sdl2/0002-CMakeLists-do-not-require-C.patch lib_patch.Upstream +package/luajit/0001-no-bin-symlink.patch lib_patch.Upstream +package/luajit/0002-install-inc.patch lib_patch.Upstream +package/luasyslog/0001-remove-AX_LUA_LIBS.patch lib_patch.Upstream +package/luasyslog/0002-build-ax_lua.m4-fix-cross-compilation.patch lib_patch.Upstream +package/lugaru/0001-ImageIO-fix-invalid-conversion.patch lib_patch.Upstream +package/lugaru/0002-Fix-mismatched-usage-length-build-fail-on-g.patch lib_patch.Upstream +package/lvm2/0001-cmdline-use-freopen-to-reopen-standard-streams.patch lib_patch.Upstream +package/lvm2/0002-log-use-freopen-to-reopen-standard-streams.patch lib_patch.Upstream +package/lz4/0001-build-Support-BUILD_SHARED-no.patch lib_patch.Upstream +package/lzma/0001-Remove-static-from-LDFLAGS.patch lib_patch.Upstream +package/lzop/0001-allow-overriding-modification-time.patch lib_patch.Upstream +package/macchanger/0001-Fix-missing-include-for-caddr_t.patch lib_patch.Upstream +package/madplay/0001-switch-to-new-alsa-api.patch lib_patch.Sob lib_patch.Upstream +package/madplay/0002-configure-ac-automake-foreign.patch lib_patch.Upstream +package/madplay/0003-configure-ac-use-pkg-config-to-find-id3tag.patch lib_patch.Upstream +package/madplay/0004-configure-ac-call-AM_MKINSTALLDIRS.patch lib_patch.Upstream +package/makedumpfile/0002-Handle-__mips64.patch lib_patch.Upstream +package/mariadb/0001-add-extra-check-for-librt.patch lib_patch.Upstream +package/mariadb/S97mysqld Shellcheck lib_sysv.Indent lib_sysv.Variables +package/matchbox-keyboard/mb-applet-kbd-wrapper.sh Shellcheck lib_shellscript.TrailingSpace +package/matchbox-lib/0001-index-is-legacy.patch lib_patch.Upstream +package/matchbox-panel/0001-index-is-legacy.patch lib_patch.Upstream +package/matchbox-panel/0002-mb-applet-wireless.patch lib_patch.Upstream +package/matchbox-panel/0003-mb-applet-battery.patch lib_patch.Upstream +package/matchbox-startup-monitor/0001-true-false.patch lib_patch.Upstream +package/matchbox/0001-defaulttheme.patch lib_patch.Upstream +package/matchbox/0002-src-Fix-build-with-gcc-10.patch lib_patch.Upstream +package/mediastreamer/0001-src-videofilters-nowebcam.c-fix-build-without-ffmpeg.patch lib_patch.Upstream +package/mediastreamer/0002-Use-AV_INPUT_BUFFER_PADDING_SIZE-to-determine-paddin.patch lib_patch.Upstream +package/memstat/0001-PATH_MAX.patch lib_patch.Upstream +package/mender-connect/S43mender-connect Shellcheck +package/menu-cache/0001-Support-gcc10-compilation.patch lib_patch.Upstream +package/mesa3d-demos/0001-demos-makes-opengl-an-optional-component.patch lib_patch.Upstream +package/mesa3d/0001-meson-Set-proper-value-for-LIBCLC_INCLUDEDIR.patch lib_patch.Upstream +package/meson-tools/0001-amlbootenc-gxl-remove-non-std-C-convention-in-for.patch lib_patch.Upstream +package/meson/0001-Prefer-ext-static-libs-when-default-library-static.patch lib_patch.Upstream +package/meson/0002-mesonbuild-dependencies-base.py-add-pkg_config_stati.patch lib_patch.Upstream +package/metacity/0001-add-libm-reference.patch lib_patch.Upstream +package/metacity/0002-gconf.patch lib_patch.Upstream +package/metacity/0003-mag-add-libm-reference.patch lib_patch.Upstream +package/mfgtools/0001-lnx_def.h-fix-conflicting-declaration-of-__time64_t.patch lib_patch.Upstream +package/mii-diag/0001-strchr.patch lib_patch.Sob lib_patch.Upstream +package/mimic/0001-Fix-linking-on-gcc-10.2.0-or-newer.patch lib_patch.Upstream +package/mini-snmpd/0001-linux.c-fix-musl-build.patch lib_patch.Upstream +package/minidlna/S60minidlnad Shellcheck lib_sysv.Indent lib_sysv.Variables +package/minissdpd/S50minissdpd Shellcheck lib_sysv.Indent lib_sysv.Variables +package/modem-manager/S44modem-manager Shellcheck lib_sysv.Variables +package/mongodb/0001-ssl_manager.cpp-fix-build-with-gcc-7-and-fpermissive.patch lib_patch.Upstream +package/mongodb/0002-src-mongo-db-exec-plan_stats.h-fix-build-with-gcc-11.patch lib_patch.Upstream +package/mongrel2/0001-Do-not-run-tests.patch lib_patch.Upstream +package/mongrel2/0002-Fix-Makefiles-for-cross-compilation.patch lib_patch.Upstream +package/monit/0001-no-force-static.patch lib_patch.Upstream +package/mono-gtksharp3/0001-Fixes-MONO_PROFILE_ENTER_LEAVE-undeclared.patch lib_patch.Upstream +package/mono-gtksharp3/0002-Mono-compilation-error-branch.patch lib_patch.Upstream +package/mono/0001-Fix-linkage-with-a-system-libatomic_ops-shared-library.patch lib_patch.Upstream +package/mono/0002-Ongoing-work-on-the-cmake-build.patch lib_patch.Upstream +package/mosquitto/S50mosquitto Shellcheck lib_sysv.Indent lib_sysv.Variables +package/motion/S99motion Shellcheck lib_sysv.Indent lib_sysv.Variables +package/mpd/0001-src-event-meson.build-add-atomic-dependency-for-spar.patch lib_patch.Upstream +package/mpir/0001-mpn-arm-udiv.asm-workaround-binutils-bug-14887.patch lib_patch.Upstream +package/mpv/0001-fix-powerpc64-altivec.patch lib_patch.Upstream +package/mraa/0001-include-Declare-gVERSION-global-as-extern.patch lib_patch.Upstream +package/mrouted/S41mrouted NotExecutable +package/mrp/S65mrp lib_sysv.Indent lib_sysv.Variables +package/mstpd/0001-bridge-stp.in-support-different-versions-of-pidof-13.patch lib_patch.Upstream +package/multipath-tools/S60multipathd Shellcheck +package/musepack/0001-shared.patch lib_patch.Upstream +package/musepack/0002-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch lib_patch.Upstream +package/musepack/0003-include-fpu-control-with-glibc-only.patch lib_patch.Upstream +package/musepack/0004-missing-sys-select.patch lib_patch.Upstream +package/musepack/0005-fix-build-with-gcc-10.patch lib_patch.Upstream +package/musl/0001-avoid-kernel-if_ether.h.patch lib_patch.Upstream +package/musl/0002-package-musl-Make-scheduler-functions-Linux-compatib.patch lib_patch.Upstream +package/nano/0001-lib-getrandom.c-fix-build-with-uclibc-1.0.35.patch lib_patch.Upstream +package/nanocom/0001-fix-build-with-gcc-10.patch lib_patch.Upstream +package/ne10/0001-CMakeLists-don-t-hard-code-thumb-code-generation.patch lib_patch.Upstream +package/ne10/0002-fix-build-without-C.patch lib_patch.Upstream +package/neard/S53neard Shellcheck lib_sysv.Indent lib_sysv.Variables +package/neardal/0001-lib-neardal.h-fix-build-with-gcc-10.patch lib_patch.Upstream +package/netatalk/S50netatalk lib_sysv.EmptyLastLine lib_sysv.Indent lib_sysv.Variables +package/netcat/0001-signed-bit-counting.patch lib_patch.Sob lib_patch.Upstream +package/netopeer2/S52netopeer2 Shellcheck lib_sysv.Variables +package/netperf/0001-src-nettest_omni.c-fix-compilation-with-GCC10.patch lib_patch.Upstream +package/netplug/0001-makefile-flags.patch lib_patch.Sob lib_patch.Upstream +package/netplug/0002-add-missing-time-include.patch lib_patch.Upstream +package/netplug/0003-remove-assert-fail.patch lib_patch.Upstream +package/netplug/S29netplug Shellcheck lib_sysv.Indent lib_sysv.Variables +package/netplug/netplug-script Shellcheck lib_shellscript.ConsecutiveEmptyLines +package/netsniff-ng/0001-Detect-libpcap-dependencies-using-pkg-config.patch lib_patch.Upstream +package/netsnmp/S59snmpd Shellcheck lib_sysv.Indent lib_sysv.Variables +package/netsurf/0001-avoid-system-perl-dependencies.patch lib_patch.Upstream +package/netsurf/0002-do-not-cross-compile-nsgenbind.patch lib_patch.Upstream +package/netsurf/0003-fix-compilation-without-curl.patch lib_patch.Upstream +package/netsurf/0004-framebuffer-Fix-internal-font-generated-source-for-GCC-10.patch lib_patch.Upstream +package/nettle/0001-disable-testsuite-examples.patch lib_patch.Upstream +package/nfs-utils/S60nfs Shellcheck lib_sysv.ConsecutiveEmptyLines lib_sysv.Variables +package/nginx-modsecurity/0001-config-use-pkg-config.patch lib_patch.Upstream +package/nginx/0001-auto-type-sizeof-rework-autotest-to-be-cross-compila.patch lib_patch.Upstream +package/nginx/0002-auto-feature-add-mechanism-allowing-to-force-feature.patch lib_patch.Upstream +package/nginx/0003-auto-set-ngx_feature_run_force_result-for-each-featu.patch lib_patch.Upstream +package/nginx/0004-auto-lib-libxslt-conf-use-pkg-config.patch lib_patch.Upstream +package/nginx/0005-auto-unix-make-sys_nerr-guessing-cross-friendly.patch lib_patch.Upstream +package/nginx/0006-auto-lib-libgd-conf-use-pkg-config.patch lib_patch.Upstream +package/nginx/0007-src-os-unix-ngx_linux_config.h-only-include-dlfcn.h-.patch lib_patch.Upstream +package/nginx/0008-Allow-forcing-of-endianness-for-cross-compilation.patch lib_patch.Upstream +package/nginx/S50nginx lib_sysv.Indent lib_sysv.Variables +package/nilfs-utils/0001-nilfs_cleanerd-link-dynamically.patch lib_patch.Upstream +package/nmap/0001-libdnet-always-build-a-static-library.patch lib_patch.Upstream +package/nodejs/nodejs-src/0001-add-qemu-wrapper-support.patch lib_patch.Upstream +package/nodejs/nodejs-src/0002-check-if-uclibc-has-backtrace-support.patch lib_patch.Upstream +package/nodejs/nodejs-src/0003-include-obj-name-in-shared-intermediate.patch lib_patch.Upstream +package/nodejs/nodejs-src/0004-lib-internal-modules-cjs-loader.js-adjust-default-pa.patch lib_patch.Upstream +package/nodm/S90nodm Shellcheck lib_sysv.Indent lib_sysv.Variables +package/norm/0001-protolib-drop-linux-version-check.patch lib_patch.Upstream +package/norm/0002-Use-print-as-function-call-for-Python3-compatibility.patch lib_patch.Upstream +package/norm/0003-Fix-mixed-tabs-spaces-in-protolib-wscript.patch lib_patch.Upstream +package/nss-pam-ldapd/S45nslcd Shellcheck lib_sysv.EmptyLastLine lib_sysv.Indent lib_sysv.Variables +package/ntp/0001-ntp-syscalls-fallback.patch lib_patch.Upstream +package/ntp/S49ntp.in lib_sysv.Variables +package/ntpsec/0001-wscript-remove-checks-for-bsd-string.h-fixes-host-co.patch lib_patch.Upstream +package/numactl/0001-link-with-latomic-if-needed-again.patch lib_patch.Upstream +package/nuttcp/0001-susv3-legacy.patch lib_patch.Upstream +package/nvidia-driver/0001-use-LDFLAGS.patch lib_patch.Upstream +package/octave/0001-Fix-BLAS-library-integer-size-detection.patch lib_patch.Upstream +package/ofono/0001-uclibc-backtrace.patch lib_patch.Upstream +package/ofono/S46ofono lib_sysv.Variables +package/ola/0001-ola-fix-compilation-with-musl-1-2-3.patch lib_patch.Upstream +package/olsr/0001-olsrd-migrate-to-using-bison-3.7.1.patch lib_patch.Upstream +package/olsr/0002-lib-pud-Makefile-fix-parallel-build.patch lib_patch.Upstream +package/olsr/0003-pud-adapt-to-API-changes-in-gpsd-3-20.patch lib_patch.Upstream +package/olsr/0005-lib-pud-src-gpsdclient.c-drop-handling-of-gpsdata-fi.patch lib_patch.Upstream +package/olsr/0006-build-patch-for-gpsd-3-25.patch lib_patch.Upstream +package/olsr/S50olsr Shellcheck lib_sysv.Indent lib_sysv.Variables +package/open-plc-utils/0001-Remove-OWNER-and-GROUPS-parameters-to-install.patch lib_patch.Upstream +package/open2300/0001-fix-makefile.patch lib_patch.Upstream +package/openjdk/17.0.9+9/0001-Add-ARCv2-ISA-processors-support-to-Zero.patch lib_patch.Upstream +package/openjdk/21.0.1+12/0001-Add-ARCv2-ISA-processors-support-to-Zero.patch lib_patch.Upstream +package/openldap/0001-fix-bignum.patch lib_patch.Upstream +package/openldap/0002-disable-docs.patch lib_patch.Upstream +package/openntpd/S49ntp Shellcheck lib_sysv.Variables +package/openocd/0001-configure-enable-build-on-uclinux.patch lib_patch.Upstream +package/openpgm/0001-Rename-openpgm-5.2.pc.in.patch lib_patch.Upstream +package/openpgm/0002-openpgm-pgm-checksum.c-fix-build-with-32-bits-MMX.patch lib_patch.Upstream +package/openpgm/0003-fix-build-on-macOS-ARM.patch lib_patch.Upstream +package/openpowerlink/0001-install-the-stack-libraries-to-lib-subdirectory.patch lib_patch.Upstream +package/openpowerlink/0002-cmake-install-oplk-headers-files.patch lib_patch.Upstream +package/openpowerlink/0003-Add-top-level-CMakeLists.txt.patch lib_patch.Upstream +package/openrc/0001-init.d-sysctl.in-add-support-for-busybox-sysctl.patch lib_patch.Upstream +package/openrc/0002-sh-init.sh.Linux.in-change-run-lock-from-root-uucp-t.patch lib_patch.Upstream +package/openrc/0003-init.d-agetty-replace-sbin-agetty-by-sbin-getty.patch lib_patch.Upstream +package/openrc/0004-init.d-agetty-start-agetty-after-all-sevices.patch lib_patch.Upstream +package/openrc/0005-runlevels-do-not-add-agetty.tty-1-6-if-MKSYSVINIT-ye.patch lib_patch.Upstream +package/openrc/0006-Also-create-run-lock-subsys-directory.patch lib_patch.Upstream +package/openswan/0001-lib-libopenswan-constants.c-workaround-missing-ns_t_.patch lib_patch.Upstream +package/opentyrian/0001-Move-definitions-that-don-t-need-to-be-exposed-from-opl-h-to-opl-c.patch lib_patch.Upstream +package/openvmtools/0001-no_cflags_werror.patch lib_patch.Upstream +package/openvmtools/0002-dont-force-cppflags.patch lib_patch.Upstream +package/openvmtools/0003-Rename-poll-h-into-vm_poll-h-to-fix-build-failure-on-musl.patch lib_patch.Upstream +package/openvmtools/0004-Remove-assumptions-about-glibc-being-only-libc-imple.patch lib_patch.Upstream +package/openvmtools/0005-Use-configure-test-for-struct-timespec.patch lib_patch.Upstream +package/openvmtools/0006-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch lib_patch.Upstream +package/openvmtools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch lib_patch.Upstream +package/openvmtools/0008-Use-configure-test-for-sys-stat.h-include.patch lib_patch.Upstream +package/openvmtools/0011-open-vm-tools-vmhgfs-fuse-fsutils.h-fix-build-on-mus.patch lib_patch.Upstream +package/openvmtools/0012-Make-HgfsConvertFromNtTimeNsec-aware-of-64-bit-time_.patch lib_patch.Upstream +package/openvmtools/shutdown Shellcheck +package/openvpn/S60openvpn Shellcheck lib_sysv.Indent lib_sysv.Variables +package/oprofile/0001-musl.patch lib_patch.Upstream +package/opusfile/0001-Propagate-allocation-failure-from-ogg_sync_buffer.patch lib_patch.Upstream +package/owfs/S55owserver Shellcheck lib_sysv.Variables +package/owfs/S60owfs Shellcheck lib_sysv.Variables +package/owl-linux/0001-fix-for-linux-3.3.x.patch lib_patch.Upstream +package/patch/0001-Fix-segfault-with-mangled-rename-patch.patch lib_patch.Upstream +package/patch/0002-Allow-input-files-to-be-missing-for-ed-style-patches.patch lib_patch.Upstream +package/patch/0003-Fix-arbitrary-command-execution-in-ed-style-patches-.patch lib_patch.Upstream +package/patch/0004-Invoke-ed-directly-instead-of-using-the-shell.patch lib_patch.Upstream +package/patch/0005-Don-t-follow-symlinks-unless--follow-symlinks-is-given.patch lib_patch.Upstream +package/patchelf/0001-Add-option-to-make-the-rpath-relative-under-a-specif.patch lib_patch.Upstream +package/paxtest/0001-genpaxtest-move-log-location.patch lib_patch.Upstream +package/paxtest/0002-paxtest-page-alignment-ARM-and-NIOS2-arch.patch lib_patch.Upstream +package/pcm-tools/0001-pmu-query.py-fix-python3-errors-add-linux-platform-s.patch lib_patch.Upstream +package/pcmanfm/0001-po-de-po-fix-build-with-gettext-tiny.patch lib_patch.Upstream +package/pcre/0001-Kill-compatibility-bits.patch lib_patch.Upstream +package/pcre/0002-Disable-C-unit-tests.patch lib_patch.Upstream +package/pdmenu/0001-autoconf-makeinfo.in-link-with-INTLLIBS-if-needed.patch lib_patch.Upstream +package/pdmenu/0002-Makefile-autoconf-makeinfo.in-support-build-install-.patch lib_patch.Upstream +package/perl-net-ssleay/0001-fix-build-system.patch lib_patch.Upstream +package/perl-sys-cpu/0001-remove-extraneous-include.patch lib_patch.Upstream +package/perl-xml-libxml/0001-Makefile-PL.patch lib_patch.Upstream +package/php-geoip/0001-add-build-support-for-php8.patch lib_patch.Upstream +package/php-lua/0001-ZEND_ACC_ALLOW_STATIC-ZEND_ACC_STATIC-for-static-met.patch lib_patch.Upstream +package/php-lua/0002-php8-explicitly-declare-arginfo.patch lib_patch.Upstream +package/php-zmq/0001-updates-for-php7.4-and-php8.0.patch lib_patch.Upstream +package/php-zmq/0002-fix-for-php-7.3.patch lib_patch.Upstream +package/php-zmq/0003-fix-for-php-8.0.0beta2.patch lib_patch.Upstream +package/php/0001-acinclude.m4-don-t-unset-variables.patch lib_patch.Upstream +package/php/0002-iconv-tweak-iconv-detection.patch lib_patch.Upstream +package/php/0003-configure-disable-the-phar-tool.patch lib_patch.Upstream +package/php/0004-Call-apxs-with-correct-prefix.patch lib_patch.Upstream +package/php/0005-allow-opcache-cross-compiling.patch lib_patch.Upstream +package/pifmrds/0001-Makefile-cross-compile-friendly.patch lib_patch.Upstream +package/pifmrds/0002-Makefile-use-LDFLAGS.patch lib_patch.Upstream +package/pifmrds/0003-Makefile-fix-static-link.patch lib_patch.Upstream +package/pigpio/S50pigpio Shellcheck lib_sysv.Variables +package/pistache/0001-src-common-transport.cc-fallback-value-for-RUSAGE_TH.patch lib_patch.Upstream +package/pistache/0002-src-server-listener.cc-fix-libressl-build.patch lib_patch.Upstream +package/pixman/0001-Disable-tests.patch lib_patch.Upstream +package/pkgconf/0001-Only-prefix-with-the-sysroot-a-subset-of-variables.patch lib_patch.Upstream +package/pkgconf/0002-Revert-main-assume-modversion-insted-of-version-if-o.patch lib_patch.Upstream +package/pkgconf/pkg-config.in Shellcheck +package/poke/0001-configure.ac-HELP2MAN-replace-by-true-when-cross-com.patch lib_patch.Upstream +package/policycoreutils/0001-Add-DESTDIR-to-all-paths-that-use-an-absolute-path.patch lib_patch.Upstream +package/policycoreutils/0002-Add-PREFIX-to-host-paths.patch lib_patch.Upstream +package/postgresql/S50postgresql lib_sysv.Variables +package/pptp-linux/0001-susv3-legacy.patch lib_patch.Upstream +package/pptp-linux/0002-fix-parallel-build.patch lib_patch.Upstream +package/prboom/0001-libpng-1.4.patch lib_patch.Upstream +package/prboom/0002-configure-remove-predefined-O2-optimization-flag.patch lib_patch.Upstream +package/prelink-cross/0001-src-rtld-dl-tls.c-Fix-TLS-offsets-computation-for-s3.patch lib_patch.Upstream +package/procps-ng/S02sysctl lib_sysv.Variables +package/proftpd/S50proftpd Shellcheck lib_sysv.Indent lib_sysv.Variables +package/prosody/0001-enable-syslog.patch lib_patch.Upstream +package/prosody/0002-add-pidfile.patch lib_patch.Upstream +package/prosody/S50prosody Shellcheck lib_sysv.Indent lib_sysv.Variables +package/protozero/0001-CMakeLists.txt-protobuf-is-only-needed-for-tests.patch lib_patch.Upstream +package/proxychains-ng/0001-add-configure-check-for-non-POSIX-compliant-getnameinfo-signature.patch lib_patch.Upstream +package/ptpd/S65ptpd Shellcheck lib_sysv.Indent lib_sysv.Variables +package/ptpd2/0001-musl.patch lib_patch.Upstream +package/ptpd2/0002-ntp_isc_md5-rename-EVP_MD_CTX-into-PTPD_EVP_MD_CTX.patch lib_patch.Upstream +package/ptpd2/0003-Solve-issue-25-Removing-type-U64-from-net-snmp-relat.patch lib_patch.Upstream +package/ptpd2/S65ptpd2 Shellcheck lib_sysv.Indent lib_sysv.Variables +package/pulseaudio/0001-shm.c-use-_Static_assert-instead-of-static_assert-fo.patch lib_patch.Upstream +package/pulseaudio/S50pulseaudio lib_sysv.ConsecutiveEmptyLines lib_sysv.EmptyLastLine lib_sysv.Indent lib_sysv.Variables +package/pulseview/0001-Replace-obsolete-deprecated-Qt-methods.patch lib_patch.Upstream +package/pulseview/0002-Fix-broken-build-due-to-C-template-behind-C-linkage.patch lib_patch.Upstream +package/python-aiohttp-remotes/0001-Fix-flit_core-build-requires-backend.patch lib_patch.Upstream +package/python-automat/0001-Remove-uneeded-dependency-to-wheel.patch lib_patch.Upstream +package/python-daphne/0001-remove-pytest-runner-requirement.patch lib_patch.Upstream +package/python-pybind/0001-pybind11-commands.py-support-STAGING_DIR.patch lib_patch.Upstream +package/python-pylibftdi/0001-do-not-use-find-library.patch lib_patch.Upstream +package/python-pyqt5/0001-configure-skip-qtdetail.patch lib_patch.Upstream +package/python-pyqt5/0002-fix-QtCoremod.sip-syntax-error.patch lib_patch.Upstream +package/python-pyudev/0001-Workaround-finding-libudev-on-systems-without-ldconf.patch lib_patch.Upstream +package/python-pyzmq/0001-detect.py-fix-the-ZMQ-version-check-to-the-ZMQ-versi.patch lib_patch.Upstream +package/python-scipy/0001-build-sh4-FE.patch lib_patch.Upstream +package/python-setuptools/0001-add-executable.patch lib_patch.Upstream +package/python-sip/0001-remove-join-from-sip-h-files-string.patch lib_patch.Upstream +package/python-web2py/S51web2py Shellcheck lib_sysv.Variables +package/python-ws4py/0001-Adjust-ws4py-for-Python-3.7-syntax.patch lib_patch.Upstream +package/python3/0001-Make-the-build-of-pyc-files-conditional.patch lib_patch.Upstream +package/python3/0002-Disable-buggy_getaddrinfo-configure-test-when-cross-.patch lib_patch.Upstream +package/python3/0003-Add-an-option-to-disable-pydoc.patch lib_patch.Upstream +package/python3/0004-Add-an-option-to-disable-lib2to3.patch lib_patch.Upstream +package/python3/0005-Add-an-option-to-disable-IDLE.patch lib_patch.Upstream +package/python3/0006-configure.ac-move-PY_STDLIB_MOD_SET_NA-further-up.patch lib_patch.Upstream +package/python3/0007-Add-option-to-disable-the-sqlite3-module.patch lib_patch.Upstream +package/python3/0008-Add-an-option-to-disable-the-tk-module.patch lib_patch.Upstream +package/python3/0009-Add-an-option-to-disable-the-curses-module.patch lib_patch.Upstream +package/python3/0010-Add-an-option-to-disable-expat.patch lib_patch.Upstream +package/python3/0011-configure.ac-fixup-CC-print-multiarch-output-for-mus.patch lib_patch.Upstream +package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch lib_patch.Upstream +package/qextserialport/0002-Tell-qmake-to-add-a-pkgconfig-file-to-ease-usage-wit.patch lib_patch.Upstream +package/qt5/qt5base/0001-qtbase-Fix-build-error-when-using-EGL.patch lib_patch.Upstream +package/qt5/qt5base/0002-double-conversion-enable-for-microblaze.patch lib_patch.Upstream +package/qt5/qt5base/0003-double-conversion-enable-for-nios2.patch lib_patch.Upstream +package/qt5/qt5base/0004-double-conversion-enable-for-xtensa.patch lib_patch.Upstream +package/qt5/qt5base/0005-eglfs-avoid-breaking-compilation-for-obscure-EGLNativeDisplayType-types.patch lib_patch.Upstream +package/qt5/qt5base/0006-Fix-build-on-riscv32.patch lib_patch.Upstream +package/qt5/qt5base/0007-src-corelib-configure.json-fix-atomicfptr-detection.patch lib_patch.Upstream +package/qt5/qt5base/0008-eglconvenience-add-missing-QList-include.patch lib_patch.Upstream +package/qt5/qt5declarative/0001-qsgtexture-fix-debug-build-with-uclibc.patch lib_patch.Upstream +package/qt5/qt5declarative/0002-qv4regexp_p-needs-c-limits-include-instead-of-plain-.patch lib_patch.Upstream +package/qt5/qt5enginio/0001-Do-not-use-deprecated-QLinkedList.patch lib_patch.Upstream +package/qt5/qt5location/0001-3rdparty-mapbox-gl-native-fix-musl-compile-pthread_g.patch lib_patch.Upstream +package/qt5/qt5script/0001-Detect-32-bits-armv8-a-architecture.patch lib_patch.Upstream +package/qt5/qt5tools/0001-Disable-designer-tool-fixes-configure-error.patch lib_patch.Upstream +package/qt5/qt5webengine-chromium/0001-Add-python3-build-support.patch lib_patch.Upstream +package/qt5/qt5webengine-chromium/0002-Don-t-rebase-sysroot-path.patch lib_patch.Upstream +package/qt5/qt5webengine/0001-gn.pro-don-t-link-statically-with-libstc.patch lib_patch.Upstream +package/qt5/qt5webengine/0002-Add-python3-build-support.patch lib_patch.Upstream +package/qt5/qt5webkit/0001-WinCairo-PlayStation-ICU-68.1-no-longer-exposes-FALS.patch lib_patch.Upstream +package/qt5/qt5webkit/0002-Fix-compilation-with-Python-3.9-avoid-passing-encodi.patch lib_patch.Upstream +package/qt5/qt5webkit/0003-Let-Bison-generate-the-header-directly-to-fix-build-.patch lib_patch.Upstream +package/qt5/qt5webkit/0004-Remove-invalid-g_object-declarations-to-fix-build-wi.patch lib_patch.Upstream +package/qt5/qt5webkit/0005-Add-support-for-ARC-processors.patch lib_patch.Upstream +package/qt5/qt5webkit/0006-Warnings-due-to-AppSinkCallbacks-struct-growth-https.patch lib_patch.Upstream +package/qt5cinex/0001-Fix-execution-problem-with-Qt5.3.patch lib_patch.Upstream +package/quagga/0001-fix-ipctl-forwarding.patch lib_patch.Upstream +package/quagga/0002-lib-prefix.h-fix-build-with-gcc-10.patch lib_patch.Upstream +package/quagga/0003-Fix-build-with-gcc-10.patch lib_patch.Upstream +package/racehound/0001-Fix-module-install-path-lib-instead-of-usr-lib-prefi.patch lib_patch.Upstream +package/rapidxml/0001-ensure-internal-print-operations-are-declared-before.patch lib_patch.Upstream +package/raspberrypi-usbboot/0001-Makefile-allow-passing-CFLAGS-LDFLAGS.patch lib_patch.Upstream +package/read-edid/0001-Fix-install-file-list.patch lib_patch.Upstream +package/read-edid/0002-Fix-compiler-check.patch lib_patch.Upstream +package/read-edid/0003-fix-build-with-gcc-10.patch lib_patch.Upstream +package/readline/0001-curses-link.patch lib_patch.Upstream +package/redis/0001-uclibc.patch lib_patch.Upstream +package/redis/0002-largefile-conditional-define.patch lib_patch.Upstream +package/redis/0003-redis.conf-adjust-defauts-for-buildroot.patch lib_patch.Upstream +package/redis/S50redis Shellcheck lib_sysv.Variables +package/restorecond/S02restorecond Shellcheck +package/ripgrep/0001-puts-jemalloc-allocator-behind-a-cargo-feature-flag.patch lib_patch.Upstream +package/riscv-isa-sim/0001-riscv-disable-precompiled-headers.patch lib_patch.Upstream +package/rng-tools/S21rngd Shellcheck lib_sysv.Variables +package/rocksdb/0001-build_tools-build_detect_platform-fix-C-tests.patch lib_patch.Upstream +package/rp-pppoe/0001-src-pppoe.h-fix-build-with-musl-libc.patch lib_patch.Upstream +package/rpcbind/0001-Remove-yellow-pages-support.patch lib_patch.Upstream +package/rpcbind/S30rpcbind lib_sysv.EmptyLastLine lib_sysv.Indent lib_sysv.Variables +package/rpi-userland/0001-Add-.pc-files-for-the-OpenGLESv2-EGL-and-bcm_host-li.patch lib_patch.Upstream +package/rpi-userland/0002-interface-remove-faulty-assert-to-make-weston-happy-.patch lib_patch.Upstream +package/rpi-userland/0003-Disable-Werror-everywhere.patch lib_patch.Upstream +package/rpi-userland/0004-host-applications-disable-missing-applications.patch lib_patch.Upstream +package/rpi-userland/0005-dtmerge-add-missing-include-for-va_list.patch lib_patch.Upstream +package/rpi-userland/0006-interface-vcos-pthreads-CMakeLists.txt-fix-build-wit.patch lib_patch.Upstream +package/rpi-userland/0007-GLES2-gl2ext.h-add-GLint64-GLuint64-and-GLsync-typed.patch lib_patch.Upstream +package/rt-tests/0001-Fix-a-build-issue-with-uClibc-ng.patch lib_patch.Upstream +package/rtorrent/0001-Added--disable-execinfo-option-to-configure.patch lib_patch.Upstream +package/rubix/0001-dont-use-legacy-functions.patch lib_patch.Upstream +package/rubix/0002-misc-fixes.patch lib_patch.Sob lib_patch.Upstream +package/rygel/S99rygel Shellcheck lib_sysv.Indent lib_sysv.Variables +package/s6-linux-init/0001-configure-add-D_GNU_SOURCE.patch lib_patch.Upstream +package/safeclib/0001-fix-armv7-asm-inline-error-GH-115.patch lib_patch.Upstream +package/samba4/0001-build-find-pre-built-heimdal-build-tools-in-case-of-.patch lib_patch.Upstream +package/samba4/0002-ldap_message_test.c-include-stdint.h-before-cmoka.h.patch lib_patch.Upstream +package/samba4/S91smb Shellcheck lib_sysv.Indent lib_sysv.Variables +package/sane-backends/0001-sane_backend-add-missing-config.h.patch lib_patch.Upstream +package/screen/0001-Do-not-use-memcpy-as-an-alternative-for-bcopy-memmov.patch lib_patch.Upstream +package/screen/0002-Do-not-create-backup-of-old-installed-binary.patch lib_patch.Upstream +package/screen/0003-Change-binary-permission-flags-even-if-chown-fails.patch lib_patch.Upstream +package/screen/0004-Support-overriding-SCREEN-to-get-a-non-versioned-bin.patch lib_patch.Upstream +package/screen/0005-Renamed-sched.h-to-eventqueue.h.patch lib_patch.Upstream +package/screen/0006-comm.h-now-depends-on-term.h.patch lib_patch.Upstream +package/screen/0007-comm.h-needed-for-list_-display-generic-.o.patch lib_patch.Upstream +package/scrub/0001-configure-ac-make-sure-m4-macros-are-included-in-the-build.patch lib_patch.Upstream +package/sdl/0001-use-correct-directfb-config.patch lib_patch.Upstream +package/sdl/0002-fix-compilation-with-libx11.patch lib_patch.Upstream +package/sdl/0003-SDL_x11yuv.c-fix-possible-use-after-free.patch lib_patch.Upstream +package/sdl_mixer/0001-Add-Libs.private-field-to-pkg-config-file.patch lib_patch.Upstream +package/sdl_mixer/0002-configure__set_macro_directory.patch lib_patch.Upstream +package/sdl_mixer/0003-configure.ac-fix-static-linking-with-tremor.patch lib_patch.Upstream +package/sdl_sound/0001-fix-constness.patch lib_patch.Upstream +package/sdl_sound/0002-remove-werror.patch lib_patch.Upstream +package/sdl_sound/0003-renamed-physfs-export.patch lib_patch.Upstream +package/seatd/S70seatd NotExecutable lib_sysv.Variables +package/sedutil/0001-Common-log.h-time-2-needs-time.h.patch lib_patch.Upstream +package/sentry-native/0001-sentry.h-include-ucontext.h.patch lib_patch.Upstream +package/ser2net/S50ser2net Shellcheck lib_sysv.Indent lib_sysv.Variables +package/setools/0001-Do-not-export-use-setools.InfoFlowAnalysis-and-setoo.patch lib_patch.Upstream +package/setserial/0001-build-system-fix.patch lib_patch.Upstream +package/setserial/0002-tiocghayesesp-build-fix.patch lib_patch.Upstream +package/shadowsocks-libev/0001-configure.ac-use-pkg-config-to-find-netfilter_conntr.patch lib_patch.Upstream +package/shadowsocks-libev/0002-fix-maybe-uninitialized-errors.patch lib_patch.Upstream +package/shadowsocks-libev/0003-lib-Makefile.am-remove-static-from-LDFLAGS.patch lib_patch.Upstream +package/shairport-sync/S99shairport-sync Shellcheck lib_sysv.Indent lib_sysv.Variables +package/shared-mime-info/0001-Remove-incorrect-dependency-from-install-data-hook.patch lib_patch.Upstream +package/shellinabox/0001-Makefile-disable-always-building-statically.patch lib_patch.Upstream +package/shellinabox/0002-CVE-2018-16789-fix-for-broken-multipart-form-data.patch lib_patch.Upstream +package/skeleton-init-systemd/fakeroot_tmpfiles.sh Shellcheck +package/slang/0001-slsh-libs.patch lib_patch.Upstream +package/smcroute/S41smcroute NotExecutable lib_sysv.Indent lib_sysv.Variables +package/smstools3/0001-fix-Makefile.patch lib_patch.Upstream +package/smstools3/0002-fix-build-with-gcc-10.x.patch lib_patch.Upstream +package/smstools3/S50smsd Shellcheck lib_sysv.Variables +package/snort/0001-configure.in-Avoid-path-poisoning-with-libpcap.patch lib_patch.Upstream +package/snort/0002-configure.in-Allow-to-override-the-INADDR_NONE-check.patch lib_patch.Upstream +package/snort/0003-configure.in-convert-AC_RUN_IFELSE-to-AC_CHECK_MEMBE.patch lib_patch.Upstream +package/snort/0004-configure.in-convert-AC_RUN_IFELSE-to-AC_COMPILE_IFE.patch lib_patch.Upstream +package/snort/0005-fix-sparc.patch lib_patch.Upstream +package/snort/0006-Fix-compile-error-when-building-against-uclibc-or-mu.patch lib_patch.Upstream +package/snort/0007-Fix-error-when-building-on-a-Fedora-host-machine.patch lib_patch.Upstream +package/snort/0008-Fix-NO-OPTIMIZE.patch lib_patch.Upstream +package/socketcand/0001-Fix-GCC10-build-failure.patch lib_patch.Upstream +package/softether/0001-Create-autotools-plumbing-for-SoftEther.patch lib_patch.Upstream +package/softether/0002-Create-libsoftether.so-and-dynamically-link.patch lib_patch.Upstream +package/softether/0003-use-fhs-install-directories.patch lib_patch.Upstream +package/softether/0004-create-non-forking-softetherd-for-upstart-and-systemd.patch lib_patch.Upstream +package/softether/0005-change-GetExeDir-to-GetStateDir-in-Cedar-and-Mayaqua.patch lib_patch.Upstream +package/softether/0006-cross-compile.patch lib_patch.Upstream +package/softether/0007-iconv.patch lib_patch.Upstream +package/softether/0008-librt.patch lib_patch.Upstream +package/softether/0009-uclibc-ai-addrconfig.patch lib_patch.Upstream +package/solarus/0001-cmake-remove-Werror.patch lib_patch.Upstream +package/solarus/0002-Add-a-basic-FindOpenGLES2.cmake.patch lib_patch.Sob lib_patch.Upstream +package/sox/0001-Make-SoX-support-uclibc-based-toolchains.patch lib_patch.Upstream +package/sox/0002-configure.ac-put-back-disable-stack-protector.patch lib_patch.Upstream +package/sox/0003-configure.ac-fix-static-linking-with-id3tag.patch lib_patch.Upstream +package/sox/0004-configure.ac-fix-static-linking-with-magic.patch lib_patch.Upstream +package/sox/0005-configure.ac-fix-static-linking-with-sndfile.patch lib_patch.Upstream +package/sp-oops-extract/0001-Make-the-Makefile-more-cross-compiler-friendly.patch lib_patch.Upstream +package/sp-oops-extract/0002-stdint-cleanup.patch lib_patch.Upstream +package/spandsp/0001-configure.ac-fix-AVX-SSE-and-MMX-options.patch lib_patch.Upstream +package/speex/0001-thumb2-support.patch lib_patch.Upstream +package/squid/S97squid Shellcheck lib_sysv.Indent lib_sysv.Variables +package/sredird/0001-termio.patch lib_patch.Upstream +package/sscep/0001-Fix-getopt-linking-error.patch lib_patch.Upstream +package/sshguard/S49sshguard lib_sysv.Indent +package/sslh/S35sslh Shellcheck lib_sysv.Indent lib_sysv.Variables +package/start-stop-daemon/0001-add-uclibc-alias-and-musl.patch lib_patch.Upstream +package/start-stop-daemon/0002-just-warn-on-missing-arch.patch lib_patch.Upstream +package/statserial/0001-ncurses-link.patch lib_patch.Upstream +package/stunnel/S50stunnel Shellcheck lib_sysv.Indent lib_sysv.Variables +package/supervisor/S99supervisord lib_sysv.Variables +package/suricata/0001-configure.ac-allow-the-user-to-override-RUST_TARGET.patch lib_patch.Upstream +package/suricata/S99suricata Shellcheck +package/swupdate/swupdate.sh Shellcheck +package/sylpheed/0001-harden-link-checker-before-accepting-click.patch lib_patch.Upstream +package/sysrepo/S51sysrepo-plugind Shellcheck lib_sysv.Indent +package/sysvinit/0001-Makefile-disable-stack-protector-strong.patch lib_patch.Upstream +package/tar/0001-lib-getrandom.c-fix-build-with-uclibc-1.0.35.patch lib_patch.Upstream +package/targetcli-fb/S50target Shellcheck lib_sysv.Variables +package/taskd/0001-Fix-missing-cmakedefine-HAVE_GET_CURRENT_DIR_NAME.patch lib_patch.Upstream +package/taskd/0002-Use-correct-variables-for-GnuTLS-detection.patch lib_patch.Upstream +package/taskd/0003-CMakeLists-use-pkg-config-uuid-detection.patch lib_patch.Upstream +package/tcf-agent/S55tcf-agent Shellcheck lib_sysv.Variables +package/tftpd/S80tftpd-hpa Shellcheck lib_sysv.Indent lib_sysv.Variables +package/ti-gfx/0001-newclkapi.patch lib_patch.Upstream +package/ti-gfx/0002-fix-build-omaplfb-linux.patch lib_patch.Upstream +package/ti-gfx/0003-km_install_modules.patch lib_patch.Upstream +package/ti-gfx/S80ti-gfx Shellcheck lib_sysv.Variables +package/ti-gfx/esrev.sh Shellcheck +package/ti-sgx-um/0001-Makefile-do-not-install-init-script.patch lib_patch.Upstream +package/ti-sgx-um/S80ti-sgx lib_sysv.Variables +package/ti-utils/0001-plt.h-fix-build-with-gcc-10.patch lib_patch.Upstream +package/tinyalsa/0001-include-time.h-before-asound.h.patch lib_patch.Upstream +package/tinycbor/0001-Makefile-add-DISABLE_WERROR.patch lib_patch.Upstream +package/tinycompress/0001-wave-add-time.h-missing-header-inclusion.patch lib_patch.Upstream +package/tinydtls/0001-sha2-sha2.c-fix-build-on-big-endian.patch lib_patch.Upstream +package/tinyxml/0001-In-stamp-always-advance-the-pointer-if-p-0xef.patch lib_patch.Upstream +package/tpm2-abrmd/S80tpm2-abrmd Shellcheck lib_sysv.Indent lib_sysv.Variables +package/tpm2-tss/0001-Temporary-fix-for-build-without-C.patch lib_patch.Upstream +package/transmission/S92transmission Shellcheck lib_sysv.ConsecutiveEmptyLines lib_sysv.Indent lib_sysv.Variables +package/triggerhappy/S10triggerhappy Shellcheck lib_sysv.Indent lib_sysv.Variables +package/trinity/0001-Fix-build-with-GCC-10.patch lib_patch.Upstream +package/trinity/0002-net-proto-ip-raw.c-fix-build-with-kernel-5.13.patch lib_patch.Upstream +package/trinity/0003-Use-fcntl-h-for-dev_t-mode_t.patch lib_patch.Upstream +package/trinity/0004-drop-decnet.patch lib_patch.Upstream +package/trousers/0001-Check-if-the-compiler-understands-pie-and-relro-options.patch lib_patch.Upstream +package/trousers/0002-Check-that-getpwent_r-is-available-before-using-it.patch lib_patch.Upstream +package/trousers/0003-Fix-build-with-LibreSSL-2-7.patch lib_patch.Upstream +package/tstools/0001-build-get-along-with-buildroot.patch lib_patch.Upstream +package/tvheadend/0001-no-check_config.patch lib_patch.Upstream +package/tvheadend/S99tvheadend Shellcheck lib_sysv.Indent lib_sysv.Variables +package/uboot-tools/0001-drop-configh-from-tools.patch lib_patch.Upstream +package/uboot-tools/0002-tools-only-in-no-dot-config-targets.patch lib_patch.Upstream +package/uboot-tools/0003-tools-Makefile-fix-C-LD-FLAGS-with-CROSS_BUILD_TOOLS.patch lib_patch.Upstream +package/ubus/0001-Install-server-and-client-examples.patch lib_patch.Upstream +package/uemacs/01-clear-ixon-termios-flag.patch lib_patch.Upstream +package/uhd/0001-host-CMakeLists-add-boost-unit_test_framework-requir.patch lib_patch.Upstream +package/uhttpd/0001-Remove-Werror.patch lib_patch.Upstream +package/uhttpd/0002-Fix-TCP_FASTOPEN-related-compile-error.patch lib_patch.Upstream +package/umtprd/0001-Fix-output_dir-make-dependency.patch lib_patch.Upstream +package/unbound/S70unbound Shellcheck +package/unifdef/0001-Makefile-fix-error-on-install.patch lib_patch.Upstream +package/unscd/S46unscd Shellcheck lib_sysv.Indent lib_sysv.Variables +package/unzip/0001-Add-a-CMakeFile.txt-to-ease-cross-compilation.patch lib_patch.Upstream +package/upmpdcli/S99upmpdcli Shellcheck lib_sysv.Indent lib_sysv.Variables +package/uqmi/0001-uqmi-avoid-gcc-12.x-false-error-reporting-storing-th.patch lib_patch.Upstream +package/urg/0001-select-h.patch lib_patch.Upstream +package/urg/0002-urg-gcc6-fix-narrowing-conversion.patch lib_patch.Upstream +package/usb_modeswitch/0001-fix-systemd-detection.patch lib_patch.Upstream +package/usbguard/S20usbguard Shellcheck lib_sysv.Indent lib_sysv.Variables +package/usbmount/0001-rules-fix.patch lib_patch.Upstream +package/usbmount/0002-use-udev-environment-instead-of-blkid.patch lib_patch.Upstream +package/ushare/0001-Don-t-build-po-files-if-NLS-is-disabled.patch lib_patch.Upstream +package/ussp-push/0001-fix-build-against-bluez-4.patch lib_patch.Upstream +package/ussp-push/0002-fix-build-again-obex-bluez.patch lib_patch.Upstream +package/ussp-push/0003-add-OBEX_CharToUnicode.patch lib_patch.Upstream +package/vala/0001-dont-add-dirty-to-valac-version.patch lib_patch.Upstream +package/vala/vala-wrapper Shellcheck +package/valgrind/0001-workaround-SIGSEGV-on-PPC.patch lib_patch.Upstream +package/valgrind/0002-Define-PTRACE_GETSIGINFO-on-PowerPC-when-not-availab.patch lib_patch.Upstream +package/vboot-utils/0001-Add-missing-definition-of-MTD_CHAR_MAJOR.patch lib_patch.Upstream +package/vdr/0001-getloadavg.patch lib_patch.Upstream +package/vlc/0001-Disable-building-of-statically-linked-vlc-binary.patch lib_patch.Upstream +package/vlc/0002-automake-add-subdir-objects-option.patch lib_patch.Upstream +package/vlc/0003-build-use-pkg-config-to-get-tremor-libs.patch lib_patch.Upstream +package/vlc/0004-Fix-build-error-using-uClibc-by-adding-sys-types.h.patch lib_patch.Upstream +package/vlc/0005-Don-t-assume-strerror_l-is-available.patch lib_patch.Upstream +package/vlc/0006-posix-remove-ancient-run-time-fallback-to-real-time-.patch lib_patch.Upstream +package/vlc/0007-Add-support-for-freerdp2.patch lib_patch.Upstream +package/vlc/0008-configure.ac-also-use-AC_PATH_PROG-to-check-for-wayl.patch lib_patch.Upstream +package/vlc/0009-modules-video_filter-opencv_example.cpp-fix-build-wi.patch lib_patch.Upstream +package/vlc/0010-opengl-missing-library-check.patch lib_patch.Upstream +package/vpnc/0001-Makefile-allow-to-override-the-PREFIX-variable.patch lib_patch.Upstream +package/vpnc/0002-Makefile-allow-to-override-the-version.patch lib_patch.Upstream +package/vpnc/0003-Makefile-allow-passing-custom-CFLAGS-CPPFLAGS.patch lib_patch.Upstream +package/vpnc/0004-Makefile-provide-an-option-to-not-build-manpages.patch lib_patch.Upstream +package/vpnc/0005-Makefile-allow-passing-a-custom-path-to-libgcrypt-co.patch lib_patch.Upstream +package/vpnc/0006-config.c-Replace-deprecated-SUSv3-functions-with-POS.patch lib_patch.Upstream +package/vpnc/0007-sysdep.h-don-t-assume-error.h-is-available-on-all-Li.patch lib_patch.Upstream +package/vpnc/0008-sysdep.c-don-t-include-linux-if_tun.h-on-Linux.patch lib_patch.Upstream +package/vpnc/0009-config.c-add-missing-sys-ttydefaults.h-include.patch lib_patch.Upstream +package/vsftpd/0001-utmpx-builddef.patch lib_patch.Upstream +package/vsftpd/0002-fix-CVE-2015-1419.patch lib_patch.Upstream +package/vsftpd/0003-Prevent-hang-in-SIGCHLD-handler.patch lib_patch.Upstream +package/vsftpd/S70vsftpd Shellcheck lib_sysv.Indent lib_sysv.Variables +package/vte/0001-build-Fix-build-with-kernel-headers-from-linux-4-13.patch lib_patch.Upstream +package/vte/0002-build-Fix-check-for-fstack-protector-compiler-support.patch lib_patch.Upstream +package/vtun/0001-fix-installation.patch lib_patch.Upstream +package/vtun/0002-fix-ssl-headers-checks.patch lib_patch.Upstream +package/vtun/0003-openssl11.patch lib_patch.Upstream +package/w_scan/0001-musl.patch lib_patch.Upstream +package/w_scan/0002-si_types-h-fix-build-with-gcc-10.patch lib_patch.Upstream +package/waffle/0001-cmake-forward-cflags-from-.pc-files-to-waffle-cflags.patch lib_patch.Upstream +package/waffle/0002-wayland-fix-build-against-version-1-20.patch lib_patch.Upstream +package/waffle/0003-drop-C-dependency.patch lib_patch.Upstream +package/wampcc/0001-Add-RISC-V-endian-detection.patch lib_patch.Upstream +package/wampcc/0002-include-wampcc-platform.h-fix-build-with-musl-1.2.0.patch lib_patch.Upstream +package/wampcc/0003-Broken-build-on-Windows.patch lib_patch.Upstream +package/watchdogd/S01watchdogd NotExecutable lib_sysv.Indent +package/wget/0001-lib-getrandom.c-fix-build-with-uclibc-1.0.35.patch lib_patch.Upstream +package/wilc-driver/0001-cfg80211.c-fix-missing-prandom_u32-with-Linux-6.1.0.patch lib_patch.Upstream +package/wilc-driver/0002-spi.c-fix-build-failure-on-remove-callback.patch lib_patch.Upstream +package/wilc-driver/0003-cfg80211.c-fix-build-failure-with-Linux-5.19-and-6.1.patch lib_patch.Upstream +package/wilc-driver/0004-Fix-struct-station_parameters-Linux-6.1-build-failur.patch lib_patch.Upstream +package/wilc-driver/0005-Fix-cast-warnings.patch lib_patch.Upstream +package/wipe/0001-musl.patch lib_patch.Upstream +package/wireless_tools/0001-remove-bzero.patch lib_patch.Upstream +package/wireshark/0001-cmake-lemon-wipe-CMAKE_-EXE_LINKER_FLAGS-SYSROOT-if-.patch lib_patch.Upstream +package/woff2/0001-CMake-Handle-multiple-libraries-being-returned-for-B.patch lib_patch.Upstream +package/wpa_supplicant/ifupdown.sh Shellcheck +package/x11r7/xapp_luit/0001-posix-openpt.patch lib_patch.Upstream +package/x11r7/xapp_xdm/S99xdm lib_sysv.Indent lib_sysv.Variables +package/x11r7/xcursor-transparent-theme/0001-fix-symlink.patch lib_patch.Upstream +package/x11r7/xdriver_xf86-input-evdev/0001-build-get-rid-of-sdkdir.patch lib_patch.Upstream +package/x11r7/xdriver_xf86-input-joystick/0001-build-get-rid-of-sdkdir.patch lib_patch.Upstream +package/x11r7/xdriver_xf86-input-libinput/0001-build-get-rid-of-sdkdir.patch lib_patch.Upstream +package/x11r7/xdriver_xf86-input-mouse/0001-build-get-rid-of-sdkdir.patch lib_patch.Upstream +package/x11r7/xdriver_xf86-input-synaptics/0001-build-get-rid-of-sdkdir.patch lib_patch.Upstream +package/x11r7/xdriver_xf86-video-fbturbo/0001-sunxi_x_g2d-drop-unused-dri2-include.patch lib_patch.Upstream +package/x11r7/xdriver_xf86-video-fbturbo/0002-Use-own-thunk-functions-instead-of-fbdevHW-Weak.patch lib_patch.Upstream +package/x11r7/xdriver_xf86-video-fbturbo/0003-Update-for-1.20-ABI.patch lib_patch.Upstream +package/x11r7/xdriver_xf86-video-fbturbo/0004-xorg.conf-add-mandatory-modules-fb-shadow-fbdevhw.patch lib_patch.Upstream +package/x11r7/xdriver_xf86-video-fbturbo/0005-backing_store_tuner-struct-_Window-backStorage-is-go.patch lib_patch.Upstream +package/x11r7/xdriver_xf86-video-imx/0001-Update-to-newer-swap-macros.patch lib_patch.Upstream +package/x11r7/xdriver_xf86-video-imx/0002-Fix-error-unknown-type-name-uint.patch lib_patch.Upstream +package/x11r7/xdriver_xf86-video-imx/0003-support-glibc-2.20.patch lib_patch.Upstream +package/x11r7/xdriver_xf86-video-imx/0004-Make-video-API-forward-and-backward-compatible.patch lib_patch.Upstream +package/x11r7/xdriver_xf86-video-imx/0005-xf86-video-imxfb-fix-m4-hardcodded-paths.patch lib_patch.Upstream +package/x11r7/xdriver_xf86-video-imx/0006-xserver-1.14-compat.patch lib_patch.Upstream +package/x11r7/xdriver_xf86-video-mach64/0001-cross-compile.patch lib_patch.Upstream +package/x11r7/xdriver_xf86-video-nouveau/0001-nouveau-fixup-driver-for-new-X-server-ABI.patch lib_patch.Upstream +package/x11r7/xdriver_xf86-video-tdfx/0001-cross.patch lib_patch.Upstream +package/x11r7/xserver_xorg-server/0001-include-misc.h-fix-uClibc-build.patch lib_patch.Upstream +package/x11r7/xserver_xorg-server/S40xorg Shellcheck lib_sysv.Variables +package/x11vnc/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch lib_patch.Upstream +package/x11vnc/0002-scan-limit-access-to-shared-memory-segments-to-current-user.patch lib_patch.Upstream +package/xen/0001-9pfs-include-linux-limits.h-for-XATTR_SIZE_MAX.patch lib_patch.Upstream +package/xen/0002-Fix-build-with-64-bits-time_t.patch lib_patch.Upstream +package/xen/0003-libs-light-fix-tv_sec-printf-format.patch lib_patch.Upstream +package/xen/0004-libs-light-fix-tv_sec-fprintf-format.patch lib_patch.Upstream +package/xenomai/3.0.10/0001-lib-boilerplate-iniparser-Allow-building-with-GCC-10-2-2020101.patch lib_patch.Upstream +package/xenomai/3.0.10/0002-Add-disable-demo-testsuite-options.patch lib_patch.Upstream +package/xenomai/3.0.10/0003-lib-cobalt-copperplate-Use-valid-addresses-for-pthread_setspecific.patch lib_patch.Upstream +package/xinetd/0001-ar.patch lib_patch.Upstream +package/xinetd/0002-destdir.patch lib_patch.Upstream +package/xinetd/0003-rpc-fix.patch lib_patch.Upstream +package/xinetd/0004-configure-rlim_t.patch lib_patch.Upstream +package/xinetd/0005-CVE-2013-4342-xinetd-ignores-user-and-group-directiv.patch lib_patch.Upstream +package/xl2tp/xl2tpd lib_shellscript.TrailingSpace +package/xml-security-c/0001-fix-build-with-libressl-3.5.0.patch lib_patch.Upstream +package/yajl/0001-Let-the-shared-and-the-static-library-have-the-same-.patch lib_patch.Upstream +package/yajl/0002-cmake-disable-shared-library-build-when-BUILD_SHARED.patch lib_patch.Upstream +package/yajl/0003-Link-with-shared-libyajl-in-a-shared-build.patch lib_patch.Upstream +package/yajl/0004-Link-libyajl-_s-with-libm-when-isnan-is-not-brought-.patch lib_patch.Upstream +package/ympd/0001-only-c-language.patch lib_patch.Upstream +package/ympd/0002-added-forward-declarations.patch lib_patch.Upstream +package/zic/0001-remove-dependency-check-on-version-file.patch lib_patch.Upstream +package/zip/0001-configure-Remove-Check-C-compiler-type-optimization-.patch lib_patch.Upstream +package/zip/0002-configure-Don-t-use-host-CPP.patch lib_patch.Upstream +package/zip/0003-Makefile-Use-CFLAGS-from-command-line.patch lib_patch.Upstream +package/zip/0004-configure-use-LDFLAGS-from-command-line.patch lib_patch.Upstream +package/zip/0005-unix-configure-remove-GID-UID-size-check.patch lib_patch.Upstream +package/zip/0006-unix-configure-borrow-the-LFS-test-from-autotools.patch lib_patch.Upstream +package/zip/0007-timezone.c-needs-time.h-fixes-musl-compile.patch lib_patch.Upstream +package/zip/0008-fix-musl-static-build.patch lib_patch.Upstream +package/zmqpp/0001-Allow-building-shared-or-static-library-only.patch lib_patch.Upstream +support/dependencies/check-host-asciidoc.sh Shellcheck +support/dependencies/check-host-cmake.sh Shellcheck +support/dependencies/check-host-gzip.sh Shellcheck +support/dependencies/check-host-lzip.sh Shellcheck +support/dependencies/check-host-make.sh Shellcheck +support/dependencies/check-host-python3.sh Shellcheck +support/dependencies/check-host-tar.sh Shellcheck +support/dependencies/check-host-xzcat.sh Shellcheck +support/dependencies/dependencies.sh Shellcheck +support/download/bzr Shellcheck lib_shellscript.ConsecutiveEmptyLines +support/download/file Shellcheck +support/download/go-post-process Shellcheck +support/download/hg Shellcheck +support/download/scp Shellcheck +support/download/sftp Shellcheck +support/download/wget Shellcheck +support/gnuconfig/update Shellcheck +support/libtool/buildroot-libtool-v1.5.patch lib_patch.ApplyOrder lib_patch.Sob lib_patch.Upstream +support/libtool/buildroot-libtool-v2.2.patch lib_patch.ApplyOrder lib_patch.Sob lib_patch.Upstream +support/libtool/buildroot-libtool-v2.4.4.patch lib_patch.ApplyOrder lib_patch.Upstream +support/libtool/buildroot-libtool-v2.4.patch lib_patch.ApplyOrder lib_patch.Sob lib_patch.Upstream +support/misc/relocate-sdk.sh Shellcheck +support/scripts/apply-patches.sh Shellcheck +support/scripts/br2-external Shellcheck +support/scripts/check-bin-arch Shellcheck +support/scripts/check-host-rpath Shellcheck +support/scripts/expunge-gconv-modules Shellcheck +support/scripts/fix-configure-powerpc64.sh lib_shellscript.EmptyLastLine +support/scripts/generate-gitlab-ci-yml Shellcheck +support/scripts/mkmakefile Shellcheck lib_shellscript.ConsecutiveEmptyLines +support/scripts/setlocalversion Shellcheck +support/testing/tests/core/post-build.sh Shellcheck +support/testing/tests/package/test_opkg/post-build.sh Shellcheck +support/testing/tests/utils/test_get_developers/0001-package-binutils-change-.mk.patch lib_patch.NumberedSubject lib_patch.Upstream diff --git a/.clang-format b/.clang-format new file mode 100644 index 00000000..1758a23f --- /dev/null +++ b/.clang-format @@ -0,0 +1,567 @@ +# SPDX-License-Identifier: GPL-2.0 +# +# clang-format configuration file. Intended for clang-format >= 4. +# +# For more information, see: +# +# Documentation/process/clang-format.rst +# https://clang.llvm.org/docs/ClangFormat.html +# https://clang.llvm.org/docs/ClangFormatStyleOptions.html +# + +# Buildroot: imported from Linux 5.15.6, with minimal modifications. +# Please note, this is not enforced at the moment. Intended +# as an aid when working with in-tree C files, like +# makedevs.c +# +--- +AccessModifierOffset: -4 +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: false +AlignConsecutiveDeclarations: false +#AlignEscapedNewlines: Left # Unknown to clang-format-4.0 +AlignOperands: true +AlignTrailingComments: false +AllowAllParametersOfDeclarationOnNextLine: false +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: None +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: false +BinPackArguments: true +BinPackParameters: true +BraceWrapping: + AfterClass: false + AfterControlStatement: false + AfterEnum: false + AfterFunction: true + AfterNamespace: true + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + #AfterExternBlock: false # Unknown to clang-format-5.0 + BeforeCatch: false + BeforeElse: false + IndentBraces: false + #SplitEmptyFunction: true # Unknown to clang-format-4.0 + #SplitEmptyRecord: true # Unknown to clang-format-4.0 + #SplitEmptyNamespace: true # Unknown to clang-format-4.0 +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Custom +#BreakBeforeInheritanceComma: false # Unknown to clang-format-4.0 +BreakBeforeTernaryOperators: false +BreakConstructorInitializersBeforeComma: false +#BreakConstructorInitializers: BeforeComma # Unknown to clang-format-4.0 +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: false +ColumnLimit: 132 # Specially for Buildroot +CommentPragmas: '^ IWYU pragma:' +#CompactNamespaces: false # Unknown to clang-format-4.0 +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth: 8 +ContinuationIndentWidth: 8 +Cpp11BracedListStyle: false +DerivePointerAlignment: false +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +#FixNamespaceComments: false # Unknown to clang-format-4.0 + +# Taken from: +# git grep -h '^#define [^[:space:]]*for_each[^[:space:]]*(' include/ \ +# | sed "s,^#define \([^[:space:]]*for_each[^[:space:]]*\)(.*$, - '\1'," \ +# | sort | uniq +ForEachMacros: + - 'apei_estatus_for_each_section' + - 'ata_for_each_dev' + - 'ata_for_each_link' + - '__ata_qc_for_each' + - 'ata_qc_for_each' + - 'ata_qc_for_each_raw' + - 'ata_qc_for_each_with_internal' + - 'ax25_for_each' + - 'ax25_uid_for_each' + - '__bio_for_each_bvec' + - 'bio_for_each_bvec' + - 'bio_for_each_bvec_all' + - 'bio_for_each_integrity_vec' + - '__bio_for_each_segment' + - 'bio_for_each_segment' + - 'bio_for_each_segment_all' + - 'bio_list_for_each' + - 'bip_for_each_vec' + - 'bitmap_for_each_clear_region' + - 'bitmap_for_each_set_region' + - 'blkg_for_each_descendant_post' + - 'blkg_for_each_descendant_pre' + - 'blk_queue_for_each_rl' + - 'bond_for_each_slave' + - 'bond_for_each_slave_rcu' + - 'bpf_for_each_spilled_reg' + - 'btree_for_each_safe128' + - 'btree_for_each_safe32' + - 'btree_for_each_safe64' + - 'btree_for_each_safel' + - 'card_for_each_dev' + - 'cgroup_taskset_for_each' + - 'cgroup_taskset_for_each_leader' + - 'cpufreq_for_each_entry' + - 'cpufreq_for_each_entry_idx' + - 'cpufreq_for_each_valid_entry' + - 'cpufreq_for_each_valid_entry_idx' + - 'css_for_each_child' + - 'css_for_each_descendant_post' + - 'css_for_each_descendant_pre' + - 'device_for_each_child_node' + - 'displayid_iter_for_each' + - 'dma_fence_chain_for_each' + - 'do_for_each_ftrace_op' + - 'drm_atomic_crtc_for_each_plane' + - 'drm_atomic_crtc_state_for_each_plane' + - 'drm_atomic_crtc_state_for_each_plane_state' + - 'drm_atomic_for_each_plane_damage' + - 'drm_client_for_each_connector_iter' + - 'drm_client_for_each_modeset' + - 'drm_connector_for_each_possible_encoder' + - 'drm_for_each_bridge_in_chain' + - 'drm_for_each_connector_iter' + - 'drm_for_each_crtc' + - 'drm_for_each_crtc_reverse' + - 'drm_for_each_encoder' + - 'drm_for_each_encoder_mask' + - 'drm_for_each_fb' + - 'drm_for_each_legacy_plane' + - 'drm_for_each_plane' + - 'drm_for_each_plane_mask' + - 'drm_for_each_privobj' + - 'drm_mm_for_each_hole' + - 'drm_mm_for_each_node' + - 'drm_mm_for_each_node_in_range' + - 'drm_mm_for_each_node_safe' + - 'flow_action_for_each' + - 'for_each_acpi_dev_match' + - 'for_each_active_dev_scope' + - 'for_each_active_drhd_unit' + - 'for_each_active_iommu' + - 'for_each_aggr_pgid' + - 'for_each_available_child_of_node' + - 'for_each_bio' + - 'for_each_board_func_rsrc' + - 'for_each_bvec' + - 'for_each_card_auxs' + - 'for_each_card_auxs_safe' + - 'for_each_card_components' + - 'for_each_card_dapms' + - 'for_each_card_pre_auxs' + - 'for_each_card_prelinks' + - 'for_each_card_rtds' + - 'for_each_card_rtds_safe' + - 'for_each_card_widgets' + - 'for_each_card_widgets_safe' + - 'for_each_cgroup_storage_type' + - 'for_each_child_of_node' + - 'for_each_clear_bit' + - 'for_each_clear_bit_from' + - 'for_each_cmsghdr' + - 'for_each_compatible_node' + - 'for_each_component_dais' + - 'for_each_component_dais_safe' + - 'for_each_comp_order' + - 'for_each_console' + - 'for_each_cpu' + - 'for_each_cpu_and' + - 'for_each_cpu_not' + - 'for_each_cpu_wrap' + - 'for_each_dapm_widgets' + - 'for_each_dev_addr' + - 'for_each_dev_scope' + - 'for_each_dma_cap_mask' + - 'for_each_dpcm_be' + - 'for_each_dpcm_be_rollback' + - 'for_each_dpcm_be_safe' + - 'for_each_dpcm_fe' + - 'for_each_drhd_unit' + - 'for_each_dss_dev' + - 'for_each_dtpm_table' + - 'for_each_efi_memory_desc' + - 'for_each_efi_memory_desc_in_map' + - 'for_each_element' + - 'for_each_element_extid' + - 'for_each_element_id' + - 'for_each_endpoint_of_node' + - 'for_each_evictable_lru' + - 'for_each_fib6_node_rt_rcu' + - 'for_each_fib6_walker_rt' + - 'for_each_free_mem_pfn_range_in_zone' + - 'for_each_free_mem_pfn_range_in_zone_from' + - 'for_each_free_mem_range' + - 'for_each_free_mem_range_reverse' + - 'for_each_func_rsrc' + - 'for_each_hstate' + - 'for_each_if' + - 'for_each_iommu' + - 'for_each_ip_tunnel_rcu' + - 'for_each_irq_nr' + - 'for_each_link_codecs' + - 'for_each_link_cpus' + - 'for_each_link_platforms' + - 'for_each_lru' + - 'for_each_matching_node' + - 'for_each_matching_node_and_match' + - 'for_each_member' + - 'for_each_memcg_cache_index' + - 'for_each_mem_pfn_range' + - '__for_each_mem_range' + - 'for_each_mem_range' + - '__for_each_mem_range_rev' + - 'for_each_mem_range_rev' + - 'for_each_mem_region' + - 'for_each_migratetype_order' + - 'for_each_msi_entry' + - 'for_each_msi_entry_safe' + - 'for_each_msi_vector' + - 'for_each_net' + - 'for_each_net_continue_reverse' + - 'for_each_netdev' + - 'for_each_netdev_continue' + - 'for_each_netdev_continue_rcu' + - 'for_each_netdev_continue_reverse' + - 'for_each_netdev_feature' + - 'for_each_netdev_in_bond_rcu' + - 'for_each_netdev_rcu' + - 'for_each_netdev_reverse' + - 'for_each_netdev_safe' + - 'for_each_net_rcu' + - 'for_each_new_connector_in_state' + - 'for_each_new_crtc_in_state' + - 'for_each_new_mst_mgr_in_state' + - 'for_each_new_plane_in_state' + - 'for_each_new_private_obj_in_state' + - 'for_each_node' + - 'for_each_node_by_name' + - 'for_each_node_by_type' + - 'for_each_node_mask' + - 'for_each_node_state' + - 'for_each_node_with_cpus' + - 'for_each_node_with_property' + - 'for_each_nonreserved_multicast_dest_pgid' + - 'for_each_of_allnodes' + - 'for_each_of_allnodes_from' + - 'for_each_of_cpu_node' + - 'for_each_of_pci_range' + - 'for_each_old_connector_in_state' + - 'for_each_old_crtc_in_state' + - 'for_each_old_mst_mgr_in_state' + - 'for_each_oldnew_connector_in_state' + - 'for_each_oldnew_crtc_in_state' + - 'for_each_oldnew_mst_mgr_in_state' + - 'for_each_oldnew_plane_in_state' + - 'for_each_oldnew_plane_in_state_reverse' + - 'for_each_oldnew_private_obj_in_state' + - 'for_each_old_plane_in_state' + - 'for_each_old_private_obj_in_state' + - 'for_each_online_cpu' + - 'for_each_online_node' + - 'for_each_online_pgdat' + - 'for_each_pci_bridge' + - 'for_each_pci_dev' + - 'for_each_pci_msi_entry' + - 'for_each_pcm_streams' + - 'for_each_physmem_range' + - 'for_each_populated_zone' + - 'for_each_possible_cpu' + - 'for_each_present_cpu' + - 'for_each_prime_number' + - 'for_each_prime_number_from' + - 'for_each_process' + - 'for_each_process_thread' + - 'for_each_prop_codec_conf' + - 'for_each_prop_dai_codec' + - 'for_each_prop_dai_cpu' + - 'for_each_prop_dlc_codecs' + - 'for_each_prop_dlc_cpus' + - 'for_each_prop_dlc_platforms' + - 'for_each_property_of_node' + - 'for_each_registered_fb' + - 'for_each_requested_gpio' + - 'for_each_requested_gpio_in_range' + - 'for_each_reserved_mem_range' + - 'for_each_reserved_mem_region' + - 'for_each_rtd_codec_dais' + - 'for_each_rtd_components' + - 'for_each_rtd_cpu_dais' + - 'for_each_rtd_dais' + - 'for_each_set_bit' + - 'for_each_set_bit_from' + - 'for_each_set_clump8' + - 'for_each_sg' + - 'for_each_sg_dma_page' + - 'for_each_sg_page' + - 'for_each_sgtable_dma_page' + - 'for_each_sgtable_dma_sg' + - 'for_each_sgtable_page' + - 'for_each_sgtable_sg' + - 'for_each_sibling_event' + - 'for_each_subelement' + - 'for_each_subelement_extid' + - 'for_each_subelement_id' + - '__for_each_thread' + - 'for_each_thread' + - 'for_each_unicast_dest_pgid' + - 'for_each_vsi' + - 'for_each_wakeup_source' + - 'for_each_zone' + - 'for_each_zone_zonelist' + - 'for_each_zone_zonelist_nodemask' + - 'fwnode_for_each_available_child_node' + - 'fwnode_for_each_child_node' + - 'fwnode_graph_for_each_endpoint' + - 'gadget_for_each_ep' + - 'genradix_for_each' + - 'genradix_for_each_from' + - 'hash_for_each' + - 'hash_for_each_possible' + - 'hash_for_each_possible_rcu' + - 'hash_for_each_possible_rcu_notrace' + - 'hash_for_each_possible_safe' + - 'hash_for_each_rcu' + - 'hash_for_each_safe' + - 'hctx_for_each_ctx' + - 'hlist_bl_for_each_entry' + - 'hlist_bl_for_each_entry_rcu' + - 'hlist_bl_for_each_entry_safe' + - 'hlist_for_each' + - 'hlist_for_each_entry' + - 'hlist_for_each_entry_continue' + - 'hlist_for_each_entry_continue_rcu' + - 'hlist_for_each_entry_continue_rcu_bh' + - 'hlist_for_each_entry_from' + - 'hlist_for_each_entry_from_rcu' + - 'hlist_for_each_entry_rcu' + - 'hlist_for_each_entry_rcu_bh' + - 'hlist_for_each_entry_rcu_notrace' + - 'hlist_for_each_entry_safe' + - 'hlist_for_each_entry_srcu' + - '__hlist_for_each_rcu' + - 'hlist_for_each_safe' + - 'hlist_nulls_for_each_entry' + - 'hlist_nulls_for_each_entry_from' + - 'hlist_nulls_for_each_entry_rcu' + - 'hlist_nulls_for_each_entry_safe' + - 'i3c_bus_for_each_i2cdev' + - 'i3c_bus_for_each_i3cdev' + - 'ide_host_for_each_port' + - 'ide_port_for_each_dev' + - 'ide_port_for_each_present_dev' + - 'idr_for_each_entry' + - 'idr_for_each_entry_continue' + - 'idr_for_each_entry_continue_ul' + - 'idr_for_each_entry_ul' + - 'in_dev_for_each_ifa_rcu' + - 'in_dev_for_each_ifa_rtnl' + - 'inet_bind_bucket_for_each' + - 'inet_lhash2_for_each_icsk_rcu' + - 'key_for_each' + - 'key_for_each_safe' + - 'klp_for_each_func' + - 'klp_for_each_func_safe' + - 'klp_for_each_func_static' + - 'klp_for_each_object' + - 'klp_for_each_object_safe' + - 'klp_for_each_object_static' + - 'kunit_suite_for_each_test_case' + - 'kvm_for_each_memslot' + - 'kvm_for_each_vcpu' + - 'list_for_each' + - 'list_for_each_codec' + - 'list_for_each_codec_safe' + - 'list_for_each_continue' + - 'list_for_each_entry' + - 'list_for_each_entry_continue' + - 'list_for_each_entry_continue_rcu' + - 'list_for_each_entry_continue_reverse' + - 'list_for_each_entry_from' + - 'list_for_each_entry_from_rcu' + - 'list_for_each_entry_from_reverse' + - 'list_for_each_entry_lockless' + - 'list_for_each_entry_rcu' + - 'list_for_each_entry_reverse' + - 'list_for_each_entry_safe' + - 'list_for_each_entry_safe_continue' + - 'list_for_each_entry_safe_from' + - 'list_for_each_entry_safe_reverse' + - 'list_for_each_entry_srcu' + - 'list_for_each_prev' + - 'list_for_each_prev_safe' + - 'list_for_each_safe' + - 'llist_for_each' + - 'llist_for_each_entry' + - 'llist_for_each_entry_safe' + - 'llist_for_each_safe' + - 'mci_for_each_dimm' + - 'media_device_for_each_entity' + - 'media_device_for_each_intf' + - 'media_device_for_each_link' + - 'media_device_for_each_pad' + - 'nanddev_io_for_each_page' + - 'netdev_for_each_lower_dev' + - 'netdev_for_each_lower_private' + - 'netdev_for_each_lower_private_rcu' + - 'netdev_for_each_mc_addr' + - 'netdev_for_each_uc_addr' + - 'netdev_for_each_upper_dev_rcu' + - 'netdev_hw_addr_list_for_each' + - 'nft_rule_for_each_expr' + - 'nla_for_each_attr' + - 'nla_for_each_nested' + - 'nlmsg_for_each_attr' + - 'nlmsg_for_each_msg' + - 'nr_neigh_for_each' + - 'nr_neigh_for_each_safe' + - 'nr_node_for_each' + - 'nr_node_for_each_safe' + - 'of_for_each_phandle' + - 'of_property_for_each_string' + - 'of_property_for_each_u32' + - 'pci_bus_for_each_resource' + - 'pcl_for_each_chunk' + - 'pcl_for_each_segment' + - 'pcm_for_each_format' + - 'ping_portaddr_for_each_entry' + - 'plist_for_each' + - 'plist_for_each_continue' + - 'plist_for_each_entry' + - 'plist_for_each_entry_continue' + - 'plist_for_each_entry_safe' + - 'plist_for_each_safe' + - 'pnp_for_each_card' + - 'pnp_for_each_dev' + - 'protocol_for_each_card' + - 'protocol_for_each_dev' + - 'queue_for_each_hw_ctx' + - 'radix_tree_for_each_slot' + - 'radix_tree_for_each_tagged' + - 'rb_for_each' + - 'rbtree_postorder_for_each_entry_safe' + - 'rdma_for_each_block' + - 'rdma_for_each_port' + - 'rdma_umem_for_each_dma_block' + - 'resource_list_for_each_entry' + - 'resource_list_for_each_entry_safe' + - 'rhl_for_each_entry_rcu' + - 'rhl_for_each_rcu' + - 'rht_for_each' + - 'rht_for_each_entry' + - 'rht_for_each_entry_from' + - 'rht_for_each_entry_rcu' + - 'rht_for_each_entry_rcu_from' + - 'rht_for_each_entry_safe' + - 'rht_for_each_from' + - 'rht_for_each_rcu' + - 'rht_for_each_rcu_from' + - '__rq_for_each_bio' + - 'rq_for_each_bvec' + - 'rq_for_each_segment' + - 'scsi_for_each_prot_sg' + - 'scsi_for_each_sg' + - 'sctp_for_each_hentry' + - 'sctp_skb_for_each' + - 'shdma_for_each_chan' + - '__shost_for_each_device' + - 'shost_for_each_device' + - 'sk_for_each' + - 'sk_for_each_bound' + - 'sk_for_each_entry_offset_rcu' + - 'sk_for_each_from' + - 'sk_for_each_rcu' + - 'sk_for_each_safe' + - 'sk_nulls_for_each' + - 'sk_nulls_for_each_from' + - 'sk_nulls_for_each_rcu' + - 'snd_array_for_each' + - 'snd_pcm_group_for_each_entry' + - 'snd_soc_dapm_widget_for_each_path' + - 'snd_soc_dapm_widget_for_each_path_safe' + - 'snd_soc_dapm_widget_for_each_sink_path' + - 'snd_soc_dapm_widget_for_each_source_path' + - 'tb_property_for_each' + - 'tcf_exts_for_each_action' + - 'udp_portaddr_for_each_entry' + - 'udp_portaddr_for_each_entry_rcu' + - 'usb_hub_for_each_child' + - 'v4l2_device_for_each_subdev' + - 'v4l2_m2m_for_each_dst_buf' + - 'v4l2_m2m_for_each_dst_buf_safe' + - 'v4l2_m2m_for_each_src_buf' + - 'v4l2_m2m_for_each_src_buf_safe' + - 'virtio_device_for_each_vq' + - 'while_for_each_ftrace_op' + - 'xa_for_each' + - 'xa_for_each_marked' + - 'xa_for_each_range' + - 'xa_for_each_start' + - 'xas_for_each' + - 'xas_for_each_conflict' + - 'xas_for_each_marked' + - 'xbc_array_for_each_value' + - 'xbc_for_each_key_value' + - 'xbc_node_for_each_array_value' + - 'xbc_node_for_each_child' + - 'xbc_node_for_each_key_value' + - 'zorro_for_each_dev' + +#IncludeBlocks: Preserve # Unknown to clang-format-5.0 +IncludeCategories: + - Regex: '.*' + Priority: 1 +IncludeIsMainRegex: '(Test)?$' +IndentCaseLabels: false +#IndentPPDirectives: None # Unknown to clang-format-5.0 +IndentWidth: 8 +IndentWrappedFunctionNames: false +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: false +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +#ObjCBinPackProtocolList: Auto # Unknown to clang-format-5.0 +ObjCBlockIndentWidth: 8 +ObjCSpaceAfterProperty: true +ObjCSpaceBeforeProtocolList: true + +# Taken from git's rules +#PenaltyBreakAssignment: 10 # Unknown to clang-format-4.0 +PenaltyBreakBeforeFirstCallParameter: 30 +PenaltyBreakComment: 10 +PenaltyBreakFirstLessLess: 0 +PenaltyBreakString: 10 +PenaltyExcessCharacter: 100 +PenaltyReturnTypeOnItsOwnLine: 60 + +PointerAlignment: Right +ReflowComments: false +SortIncludes: false +#SortUsingDeclarations: false # Unknown to clang-format-4.0 +SpaceAfterCStyleCast: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +#SpaceBeforeCtorInitializerColon: true # Unknown to clang-format-5.0 +#SpaceBeforeInheritanceColon: true # Unknown to clang-format-5.0 +SpaceBeforeParens: ControlStatements +#SpaceBeforeRangeBasedForLoopColon: true # Unknown to clang-format-5.0 +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInContainerLiterals: false +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Cpp03 +TabWidth: 8 +UseTab: Always +... diff --git a/.defconfig b/.defconfig new file mode 100644 index 00000000..7ab0c3fb --- /dev/null +++ b/.defconfig @@ -0,0 +1,51 @@ +# +# Automatically generated make config: don't edit +# Mon Feb 18 09:11:56 2008 +# +BR2_HAVE_DOT_CONFIG=y +# BR2_alpha is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_cris is not set +# BR2_ia64 is not set +BR2_i386=y +# BR2_m68k is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_sh is not set +# BR2_sparc is not set +# BR2_sparc64 is not set +# BR2_x86_64 is not set +# BR2_x86_i486 is not set +# BR2_x86_i586 is not set +BR2_x86_i686=y +# BR2_x86_pentiumpro is not set +# BR2_x86_pentium_mmx is not set +# BR2_x86_pentium_m is not set +# BR2_x86_pentium2 is not set +# BR2_x86_pentium3 is not set +# BR2_x86_pentium4 is not set +# BR2_x86_prescott is not set +# BR2_x86_nocona is not set +# BR2_x86_core2 is not set +# BR2_x86_k6 is not set +# BR2_x86_k6_2 is not set +# BR2_x86_athlon is not set +# BR2_x86_athlon_4 is not set +# BR2_x86_opteron is not set +# BR2_x86_opteron_sse3 is not set +# BR2_x86_barcelona is not set +# BR2_x86_geode is not set +# BR2_x86_c3 is not set +# BR2_x86_winchip_c6 is not set +# BR2_x86_winchip2 is not set +BR2_ARCH="i686" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_TUNE="i686" +BR2_GCC_TARGET_ARCH="i686" + +# +# Target options +# diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..f7c3c7dd --- /dev/null +++ b/.editorconfig @@ -0,0 +1,40 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_style = space +indent_size = 4 +tab_width = 8 +trim_trailing_whitespace = true +insert_final_newline = true + +[DEVELOPERS] +indent_style = tab +indent_size = tab + +[Config*.in*] +indent_style = tab +indent_size = tab + +[linux/Config.ext.in] +indent_style = tab +indent_size = tab + +[Makefile*] +indent_style = tab +indent_size = tab + +[*.mk] +indent_style = tab +indent_size = tab + +[*.patch] +trim_trailing_whitespace = false + +[S{0..9}{0..9}*] +indent_style = tab +indent_size = tab + +[*.adoc] +trim_trailing_whitespace = false diff --git a/.flake8 b/.flake8 new file mode 100644 index 00000000..7dd7b541 --- /dev/null +++ b/.flake8 @@ -0,0 +1,5 @@ +[flake8] +exclude= + # copied from the kernel sources + utils/diffconfig +max-line-length=132 diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000..319e67d8 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,6 @@ +Please do not submit a Pull Request via GitHub. Buildroot makes use of a +[mailing list](http://lists.buildroot.org/mailman/listinfo/buildroot) for patch submission and review. +See [submitting your own patches](http://buildroot.org/manual.html#submitting-patches) for more info. + +Thanks for your help! + diff --git a/.github/workflows/repo-lockdown.yml b/.github/workflows/repo-lockdown.yml new file mode 100644 index 00000000..45cfd286 --- /dev/null +++ b/.github/workflows/repo-lockdown.yml @@ -0,0 +1,25 @@ +name: 'Repo Lockdown' + +on: + pull_request_target: + types: opened + +permissions: + pull-requests: write + +jobs: + action: + if: github.repository == 'buildroot/buildroot' + runs-on: ubuntu-latest + steps: + - uses: dessant/repo-lockdown@v4 + with: + pr-comment: | + Please do not submit a Pull Request via GitHub. Buildroot makes use of a + [mailing list](http://lists.buildroot.org/mailman/listinfo/buildroot) for patch submission and review. + See [submitting your own patches](http://buildroot.org/manual.html#submitting-patches) for more info. + + Thanks for your help! + lock-pr: true + close-pr: true + diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..ec5768d0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +/output* +/dl +/.auto.deps +/.config.cmd +/.config.old +/..config.tmp +/.config +*.depend +*.o +/*.patch +/*.diff +*.orig +*.rej +*~ +*.pyc diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..3d771956 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,33 @@ +# Configuration for Gitlab-CI. +# Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines + +image: $CI_REGISTRY/buildroot.org/buildroot/base:20230207.1123 + +stages: + - generate-gitlab-ci + - build + +generate-gitlab-ci-yml: + stage: generate-gitlab-ci + script: ./support/scripts/generate-gitlab-ci-yml support/misc/gitlab-ci.yml.in > generated-gitlab-ci.yml + retry: + max: 2 + when: + - runner_system_failure + - stuck_or_timeout_failure + artifacts: + when: always + paths: + - generated-gitlab-ci.yml + - br-test-pkg/*/.config + - br-test-pkg/*/missing.config + +buildroot-pipeline: + stage: build + trigger: + include: + - artifact: generated-gitlab-ci.yml + job: generate-gitlab-ci-yml + strategy: depend + variables: + PARENT_PIPELINE_ID: $CI_PIPELINE_ID diff --git a/.gitlab/issue_templates/default.md b/.gitlab/issue_templates/default.md new file mode 100644 index 00000000..c3f23e54 --- /dev/null +++ b/.gitlab/issue_templates/default.md @@ -0,0 +1,60 @@ +Thank you for opening a new issue. To help solve it faster and more easily, +please review this check-list, and fill in the sections below. Adapt as +needed. + +Do not open an issue to request a new feature; instead, post a message to +[the mailing list](https://lists.buildroot.org/mailman/listinfo/buildroot). + +_Note: issues missing any information may get closed without further ado._ + +--- +### Check-list + +- [ ] I did not find the issue in the existing issues +- [ ] I can reproduce the issue with unmodified Buildroot from [this + repository](https://gitlab.com/buildroot.org/buildroot), not from a + fork somewhere else +- [ ] I can reproduce the issue on the latest commit of the branch I'm using: + - [ ] master + - [ ] stable (i.e. 20NN.MM.x - please specify) + - [ ] LTS (i.e. 20NN.02.x - please specify) +- [ ] I can reproduce the issue after running `make clean; make` +- [ ] I attached the full build log file (e.g. `make 2>&1 |tee build.log`) +- [ ] I attached a **minimal** defconfig file that can reproduce the + issue (`make BR2_DEFCONFIG=$(pwd)/issue_defconfig savedefconfig`) +- [ ] I also attached the configuration for kconfig-based packages that + are enabled (and necessary to reproduce the issue), most notably: + - [ ] busybox + - [ ] linux + - [ ] uclibc + - [ ] uboot + - [ ] … + +--- +### What I did + +**Buildroot commit sha1**: _get this with `git describe HEAD`_ +**Distribution of the build machine**: _get this with `NAME` and `VERSION` from `/etc/os-release`_ + +_Here, describe what you did:_ +- _any special environment variables: CC, CXX, TARGET, CROSS_COMPILE, etc…_ +- _the commands you ran:_ + ```sh + $ make [...] + ``` +- _anything else that you might think is important…_ + +--- +### What happens + +_Here, describe what happens that you believe was incorrect._ + +--- +### What was expected + +_Here, describe the behaviour you expected._ + +--- +### Extra information + +_Here, you may write additional information that does not fit above_ diff --git a/.shellcheckrc b/.shellcheckrc new file mode 100644 index 00000000..e69de29b diff --git a/CHANGES b/CHANGES new file mode 100644 index 00000000..54493192 --- /dev/null +++ b/CHANGES @@ -0,0 +1,14309 @@ +2024.08, released September 6th, 2024 + + Various fixes. + + Fixed defconfigs: imx8mqevk: Bump TF-A, U-Boot and Linux to + fix build with gcc 13.x + + Removed defconfigs: pandaboard + + Updated/fixed packages: aer-inject, arm-trusted-firmware, + armadillo, babeld, cache-calibrator, clamav, fbdump, gerbera, + libgtk4, libopenssl, mender, p910nd, tllist, wpa_supplicant + + Removed packages: midori + +2024.08-rc3, released September 1st, 2024 + + Fixes all over the tree. + + Removed defconfigs: mx25pdk + + Updated/fixed packages: chicken, comix-cursors, dovecot, + dovecot-pigeonhole, elf2flt, enscript, fbset, freeipmi, gcc, + grub2, libcuefile, libcurl, libglob, libuecc, norm, php, + postgresql, proftpd, python-sqlparse, python3, sofia-sip, + szip, unbound, x264, xserver_xorg-server, zabbix + + Removed packages: frotz + +2024.08-rc2, released August 22nd, 2024 + + Fixes all over the tree. + + Infrastructure: use "-ztext" rather than "-z text" in LDFLAGS + to work around buggy build systems + + Defconfigs: Beaglev fire / Microchip mpfs icicle: Correct + Linux/U-Boot tarballs, Raspberryi 5: Correct CPU setting, + Zynqmp zcu106: use v1.0 DDR config, Zynqmp zcu10* / kria*: + Correct U-Boot dependency + + Updated/fixed packages: aer-inject, asterisk, atop, aumix, + avahi, botan, chicken, dc3dd, ffmpeg, flashrom, gnuradio, + gnu-efi, gnutls, hiawatha, iperf3, iproute2, ledmon, libffi, + libgpg-error, libkcapi, libpcap, mariadb, mdadm, ncurses, + nginx, ntpsec, python-huepy, python-tpm2-pytss, + python-unittest-xml-reporting, qt6base, qt6tools, skopeo, + strongswan, systemd, uboot, uclibc, unbound, vboot-utils, + wpa_supplicant, wpebackend-fdo + + Removed packages: fan-ctrl + +2024.08-rc1, released August 8th, 2024 + + Fixes all over the tree (especially related to GCC 14.x + compatibility) and package updates. + + Toolchains: + - uClibc updated to 1.0.49 + - GDB 15.x added, GDB 14.x now the default + - GCC 14.x updated to GCC 14.2.0 + - Support for Linux 6.9/6.10 headers added + + Infrastructure: + - Patches on packages are now applied with -F0, which means no + fuzz is accepted anymore. + - Improvements to the canonical example of SysV init script + + New defconfigs: arm_fvp_ebbr, beagleplay, beaglev_fire, + cubieboard1, imx6ulz_bsh_smm_m2_defconfig, raspberrypi5, + spike_riscv32. ti_am62ax_sk, versal_vpk180 + + Removed defconfigs: beagleboardx15, beaglev, imx8mpico + + New packages: blake3, chicken, cloudfared, docker-cli-buildx, + espflash, fd, freescale-imx/firmware-upower, fwupd, fwupd-efi, + gtkiostream, graphene, kmon, libavif, libdex, libgtk4, + libjcat, libopenmpt, libtpms, mxt-app, nethogs, openconnect, + parsec-tool, pico-sdk, picotool, python-aerich, + python-autocommand, python-betterproto, python-configobj, + python-grpclib, python-inflect, python-jaraco-collections, + python-jaraco-context, python-jaraco-text, python-pyasynchat, + python-pyasyncore, python-dictdiffer, python-pkgconfig, + python-pypika-tortoise, python-ruamel-yaml-clib, + python-tomlkit, python-tomli-w, python-tpm2-pytss, + python-tortoise-orm, python-uswid, qt6declarative, + qt6languageserver, qt6mqtt, qt6opcua, qt6shadertools, + qt6tools, qt6virtualkeyboard, qt6wayland, qt6websockets, + skopeo, sqlitecpp, swipl, swtpm, tig, tipidee, tpm2-openssl, + xilinx-prebuilt, zoxide + + Removed packages: beaglev-ddrinit, beaglev-secondboot, + beecrypt, cgic, dvb-apps, gamin + + New runtime tests: 4th, attr, atftp, bcc, btrfs, btrfsprogs, + dmidecode, go, gpsd, iproute2, kmod, lame, make, mariadb, + mawk, mosquitto, nmap, ntp, python-asn1crypto, python-pymupdf, + python-ruamel-yaml, rt-tests, swipl, vorbis-tools, xfsprogs + + Issues resolved: + - Are there plans to add raspberrypizero2w_64_defconfig config? + https://gitlab.com/buildroot.org/buildroot/-/issues/1 + - Some folders can't visit and some file is missing while running + https://gitlab.com/buildroot.org/buildroot/-/issues/2 + - wpewebkit build fails on ARM Neon + https://gitlab.com/buildroot.org/buildroot/-/issues/3 + - TAR-1.35 will not build for target (host-variant will build) + https://gitlab.com/buildroot.org/buildroot/-/issues/4 + - package/xz without shared libraries breaks Python build + https://gitlab.com/buildroot.org/buildroot/-/issues/5 + - unable to build - 404 at sources.buildroot.net + https://gitlab.com/buildroot.org/buildroot/-/issues/10 + - OpenSSH 9.8 broken + https://gitlab.com/buildroot.org/buildroot/-/issues/11 + - Update Openssh to Version 9.8p1 (CVE-2024-6387) in Long Term + Support Release 2024.02.x + https://gitlab.com/buildroot.org/buildroot/-/issues/14 + - Toolchain (host-gcc-final-14.1.0) build failure with + y2038/BR2_TIME_BITS_64 enabled + https://gitlab.com/buildroot.org/buildroot/-/issues/16 + - building go/golang gives error + https://gitlab.com/buildroot.org/buildroot/-/issues/18 + - GCC 13.3 is missing + https://gitlab.com/buildroot.org/buildroot/-/issues/20 + - package containerd update to avoid hanging docker exec + commands + https://gitlab.com/buildroot.org/buildroot/-/issues/21 + - "BR2_EXTERNAL broken missing srctree error Config.in" + https://gitlab.com/buildroot.org/buildroot/-/issues/24 + - Can't subscribe buildroot mailing list + https://gitlab.com/buildroot.org/buildroot/-/issues/25 + +2024.05.2, released August 14th, 2024 + + Important / security related fixes. + + Various minor improvements to utils/check-package + + Defconfigs: Add download hashes for chromebook-elm, + chromebook-snow and stm32mp157a_dk1 + + Updated/fixed packages: android-tools, bcc, bitcoin, boost, + btrfs-progs, c-ares, cdrkit, check, containerd, directfb, + dump1090, ed, exim, fail2ban, frotz, fwts, gcc, gdb, go, gpm, + kexec, libarchive, libgeos, libressl, llvm, mupdf, ncftp, + nodejs, ntpsec, octave, openssh, pppd, python-mupdf, + python-ruamel-yaml, qt5webkit, rawk-hawkbit-updater, + rtl8188eu, snappy, squid, sunxi-tools, syslinux, systemd, + tcf-agent, tftpd, ubus, util-linux, uvw, webkitgtk, wolfssl, + wpewebkit, x265, xlib_libxshmfence, xvisor + + Issues resolved (http://bugs.uclibc.org): + + #15231: gcc --help -v doesn't work correctly with gcc>=10 and.. + +2024.05.1, released July 13th, 2024 + + Important / security related fixes. + + Infrastructure: Ensure support/scripts/apply-patches can be + used outside Buildroot (regression in 2024.05). + + Defconfig: Pine64 rockpro64: Build ethernet driver in kernel + rather than as module. QEMU sh4: Change to initramfs to + workaround regression in QEMU. Visionfive2: Correct kernel + headers version + + Updated/fixed packages: apache, avro-c, daq, dav1d, + fluent-bit, ghostscript, glibc, libmad, libopenssl, + linux-firmware, mesa3d, network-manager, ntp, nut, octave, + openssh, openvpn, php, raspberrypi-usbboot, redis, sentry-cli, + tor, uuu, vlc, xmrig, znc + +2024.05, released June 12th, 2024 + + Various fixes. + + Infrastructure: Ensure a custom tar program specified with + make TAR=/path/to/custom/tar is used everwhere. + + Defconfigs: Fix build issues and runtime warnings for + Beaglebone qt5, Qemu ppc64/le pseries, TI am62x/am64x. + + Add hashes for Beaglebone qt5, imx8mn bsh sm s2 / pro, + stm32f429 disco XIP, stm32f769 disco sd. + + Updated/fixed packages: bc, collectd, composer, cvs, + docker-compose, flutter-engine, git, liblockfile, libzenoh-c, + lightning, nginx, p11-kit, python-lxml, python3, qt6base, + rrdtool, sofia-sip, syslog-ng, systemd, uclibc, unixodbc + +2024.05-rc2, released June 4th, 2024 + + Fixes all over the tree. + + Download: + - Dropped the (noop) --passive-ftp option from default wget + options for compatibility with wget2 + + - Fixed an issue with the generated archives (for + git/svn/cargo/go) when multiple packages share an archive + (E.G. linux vs linux-headers). + + Defconfigs: Fix build issue with binutils 2.41+ for + Acmesystems Aria / Arietta, add download hashes for a number + of defconfigs. Fix FIT external position for i.MX8 boards + + Updated/fixed packages: dnsmasq, docker-compose, doom-wad, + ebtables, esp-hosted, file, freeradius-client, + freeradius-server, go, kmod, libmnl, libnetfilter_acct, + libnetfilter_log, linux, luarocks, lynx, makedumpfile, + micropython, mtd, ncftp, newlib-bare-metal, nfacct, ntp, + octave, proftpd, qt5base, systemd, tpm2-tss, uboot-tools, + ulogd, vala, zip + + Removed packages: at91bootstrap, at91dataflashboot, + on2-8170-libs, on2-8170-modules + + Issues resolved (http://bugs.uclibc.org): + + #15973: imx8m bootloader image generation broken since update.. + #16093: kmod and gcc-14 build error + +2024.05-rc1, released May 30th, 2024 + + Fixes all over the tree and new features. + + Toolchains: + - Binutils 2.24 added, 2.39 dropped, 2.41 is now default + - GCC 14.x added, 11.x dropped, 13.x is now default + - uClibc-ng bumped to 1.0.48 + - Musl bumped to 1.2.5, adds riscv32 support + - Glibc bumped to 2.39, libcrypt no longer available (see + libxcrypt package) + - External glibc based toolchains no longer install libcrypt + files (except for libcrypt.so.1) to not conflict with the + libxcrypt package + - Bootlin external toolchains updated to 2024.02 + - Support for external toolchains using GCC version 14 + - Old external Codesourcery ARM/AARCH64 toolchains removed + - Old external Codesourcery niosII toolchain removed + - Old external Codescape mips toolchains removed + - Support for Linux 6.7 / 6.8 kernel headers added + + Architecture: + - Support for riscv32 noMMU added + - Internal toolchains for SPARC (re-)added + - Support for the Motorola m68k specific shared library + support for the FLAT binary format dropped, as support has + been removed from the Linux kernel as of v5.19. + + Download (notice, Buildroot generated tarballs have changed): + - Tar 1.35 is now required (will be automatically built if not + available on the host). Notice that tar 1.35 changes the way + devmajor/minor is stored, so tarballs created with 1.35 are + not binary identical to <1.35 + - The tarball creation logic has now been extended to + correctly handle when ACLs are set on the download + directory. + - An issue with conflicting git tags between (different + versions of) a package has been fixes + - Git attributes are now handled correctly + + Security: + - The /dev/shm entry in the default /etc/fstab used for + busybox and sysv init systems was missing the sticky bit, + allowing users to delete and replace other users files. + + Infrastructure: + - kconfig/menuconfig can now be built with GCC 14.x + - Git is now used to to fetch CVE data from the FKIE + repository to work around an issue with missing meta files + in the releases. + - utils/check-package now also checks if defconfigs use + BR2_DOWNLOAD_FORCE_CHECK_HASHES to ensure custom + bootloader/kernels are correctly downloaded. + + New defconfigs: Beagleboneai64, Orangepi Zero2w, Pine64 star64 + + New packages: basu, bats-assert, bats-file, bats-support, bcc, + bpftrace, export-subst, flutter-adaptive-scaffold-example, + flutter-animations-example, flutter-dynamic-layouts-example, + flutter-go-router-example, flutter-image-example, + flutter-markdown-example, flutter-packages, + flutter-rfw-local-example, go-bootstrap-stage3, igt-gpu-tools, + libgpiod2, libxmlb, libzenoh-c, lmdb, lua-lightningmdb, + lua-lsdbus, mokutil, python-email-validator, + python-expandvars, python-fastui, python-hid, python-jc, + python-mpmath, python-poetry-core, python-sympy, + python-yamllint, qbee-agent, starfive-spltool, ustreamer + + Removed packages: flutter-gallery, omxplayer, ti-k3-image-gen + + Issues resolved (http://bugs.uclibc.org): + + #14416: Mesa3D missing DRI3 support for various Gallium drivers + #15766: BR2_PACKAGE_WESTON_XWAYLAND -- 12.0.1 -- fails to build.. + #15997: Build Squid with GCC12.3 in Buildroot 2024.02 will fail + #16009: 'select' does not work with 'choice' + #16036: android-tools version is too old + #16075: Cannot use linux kernel extensions from external tree.. + +2024.02.5, released August 14th, 2024 + + Important / security related fixes. + + Various minor improvements to utils/check-package + + Defconfigs: Add download hashes for chromebook-elm, + chromebook-snow and stm32mp157a_dk1 + + Updated/fixed packages: bitcoin, boost, btrfs-progs, c-ares, + cdrkit, check, containerd, directfb, ed, exim, fwts, gcc, gdb, + go, kexec, libarchive, libgeos, libressl, mupdf, nodejs, + ntpsec, octave, openssh, pppd, python-mupdf, + python-ruamel-yaml, qt5webkit, rauc-hawkbit-updater, snappy, + squid, sunxi-tools, syslinux, systemd, tcf-agent, ubus, + util-linux, uvw, webkitgtk, wolfssl, wpewebkit, x265, + xlib_libxshmfence, xvisor + + Issues resolved (http://bugs.uclibc.org): + + #15231: gcc --help -v doesn't work correctly with gcc>=10 and.. + +2024.02.4, released July 13th, 2024 + + Important / security related fixes. + + Infrastructure: Ensure a custom tar program specified with + make TAR=/path/to/custom/tar is used everwhere. + + Defconfig: Pine64 rockpro64: Build ethernet driver in kernel + rather than as module. + + Updated/fixed packages: apache, composer, daq, fluent-bit, + ghostscript, glibc, liblockfile, libmad, libopenssl, mesa3d, + network-manager, ntp, octave, openssh, openvpn, php, python3, + qt6base, raspberrypi-usbboot, redis, sentry-cli, systemd, tor, + vlc, xmrig, znc + +2024.02.3, released June 10th, 2024 + + Important / security related fixes. + + Misc: + - Fixed a number of compilation issues for hosts using GCC + 14.x, including for kconfig. + + Download: + - Drop redundant --passive-ftp from default wget options and + migrate a number of packages using FTP upstreams to HTTP(S) + for compatibility with wget2 which does not have FTP support + + - Ensure downloads are correctly shared for host packages that + try to do so using _DL_SUBDIR and ensure the correct + toplevel directory name is used in generated tarballs when + downloads are shared. + + Arch: Enable SSE2 support for x86 Pentium M variant. + + Defconfigs: Orangepi PC/R1, Raspberrypi zero2w, Sipeed + licheepi nano, Wandboard: Fix compilation issues. PC x86-64 + bios/efi: add wireless regdb to fix kernel warning during + boot, iMX.8 boards: Adjust FIT external data position to match + imx-mkimage changes, fixing boot issues. + + Updated/fixed packages: am33x-cm, apcupsd, + arm-trusted-firmware, binutils-bare-metal, bpftool, catch2, + ccache, cjson, clamav, cog, coreutils, cryptodev-linux, + dhcpcd, dmraid, dnsmasq, docker-cli, docker-compose, + docker-engine, doom-wad, duma, elf2flt, ebtables, elfutils, + evemu, file, fluidsynth, freeradius-client, freeradius-server, + freerdp, fwts, gcc, gcc-bare-metal, git, gnuplot, go, + gr-osmosdr, gst1-plugins-good, hidapi, imagemagick, + intel-gmmlib, ivi-homescreen, janus-gateway, kexec, kmod, + kodi, libarchive, libdrm, libedit, libffi, libglib2, libhtp, + libjwt, libkrb5, libmanette, libmdbx, libmnl, + libnetfilter_acct, libnetfilter_log, libnpth, libopenssl, + libpng, libuhttpd, liburiparser, libutempter, libvncserver, + libwpe, lightning, linux-firmware, linux-pam, lua-cffi, + luajit, lvm2, lynx, mariadb, mesa3d, micropython, minisign, + musl, mutt, ncftp, network-manager, newlib-bare-metal, nfacct, + nfs-utils, octave, openjpeg, openocd, oprofile, + perl-dbd-mysql, php, postgresql, pppd, privoxy, procps-ng, + proftpd, proj, putty, python-ml-dtypes, python-pillow, + python-rds-py, qemu, qt5base, redis-plus-plus, rtl8189fs, + ruby, samba4, shadow, smcroute, speech, squid, sscep, + suricata, swupdate, systemd, ti-sgx-km, tinycbor, tinyproxy, + tor, tpm2-tss, ttyd, uboot-tools, ulogd, vala, weston, + wpewebkit, x11vnc, zbar, zeromq, zfs, zip, zxing-cpp + + Issues resolved (http://bugs.uclibc.org): + + #15766: BR2_PACKAGE_WESTON_XWAYLAND -- 12.0.1 -- fails to build.. + #15973: imx8m bootloader image generation broken since update.. + #16075: Cannot use linux kernel extensions from external tree.. + #16093: kmod and gcc-14 build error + +2024.02.2, released May 7th, 2024 + + Important / security related fixes. + + Security: The /dev/shm entry in the default /etc/fstab used + for busybox and sysv init systems was missing the sticky bit, + allowing users to delete and replace other users files. + + Defconfigs: Mangopi mq1rdw1: Lock kernel headers to 6.6.x. + + Updated/fixed packages: apache, botan, + brcmfmac_sdio-firmware-rpi, clamav, cmake, containerd, + crucible, dmenu-wayland, dmraid, docker-cli, docker-engine, + domoticz, fmc, freeipmi, gdal, gdb, giflib, gnupg2, go, + google-breakpad, googlefontdirectory, imx-gpu-viv, inih, + libassuan, libblockdev, libcurl, libdrm, libgpg-error, + libksba, libnpth, libressl, libtracefs, lxc, mbedtls, mesa3d, + oatpp, opensc, oprofile, perl-net-ssleay, petitboot, + php-xdebug, psplash, python-pypng, python-segno, + python-service-identity, python3, skeleton-init-sysv, systemd, + tcf-agent, tiff, uuu, wolfssl, xmrig, zic + + Issues resolved (http://bugs.uclibc.org): + + #14416: Mesa3D missing DRI3 support for various Gallium drivers + #16009: 'select' does not work with 'choice' + #16036: android-tools version is too old + +2024.02.1, released March 26th, 2024 + + Important / security related fixes. + + Toolchain: Dropped old Codesourcery ARM / AARCH64 and + Codescape MIPS external toolchains as they use old Glibc + versions not compatible with 64-bit time_t + + Defconfigs: Starfive visionfive2: Use correct genimage + configuration. TI am62x_sk / am64_sk: Use correct optee-os + platform setting and use a fixed ti-k3-r5-loader version. + + Infrastructure: Use git to fetch CVE data from the FKIE + repository to work around an issue with missing meta files in + the releases. + + Updated/fixed packages: axel, bash, bitcoin, botan, busybox, + containerd, cryptsetup, cvs, docker-compose, docker-engine, + ell, expat, giflib, gmp, go, harfbuzz, intel-gmmlib, + intel-mediadriver, iwd, kodi, kodi-pvr-hts, libcgroup, libdrm, + libgit2, libkrb5, libnfs, libunwind, libvpl, + libtorrent-rasterbar, libxml2, linux, mariadb, mesa3d, + mmc-utils, msmtp, multipath-tools, neon, onevpl-intel-gpu, + openssh, openvpn, osm2pgsql, owfs, php, poco, policycoreutils, + postgis, privoxy, pulseaudio, pure-ftpd, putty, + python-configshell-fb, python-rtslib-fb, rauc, restorecond, + spice, squid, targetcli-fb, tzdata, util-linux, vdr, xmrig, + xvisor, zic + + Issues resolved (http://bugs.uclibc.org): + + #15997: Build Squid with GCC12.3 in Buildroot 2024.02 will fail + +2024.02, released March 5th, 2024 + + Various fixes. + + Updated/fixed packages: botan, conmon, dash, efivar, expat, + fluent-bit, gcc, gst1-vaapi, libcoap, libselinux, liburing, + libva, libxml2, ltp-testsuite, luvi, newlib-bare-metal, + nginx-naxsi, octave, openblas, openvmtools, parted, poco, + powertop, python-aiohttp, python-cheroot, python-django, + python-grpcio, rauc, rauc-hawkbit-updater, rtl8822cs, rust, + sdl2, shadow, spirv-tools, strace, strongswan, tar, tllist, + vim + + Removed packages: mysql (virtual), oracle-mysql, + python-setuptools-scm-git-archive + +2024.02-rc2, released March 1st, 2024 + + Fixes all over the tree. + + Infrastructure: Various fixes for pkg-stats after moving to + the FKIE CVE feed and support for older python/ijson versions. + + Updated/fixed packages: ccache, dracut, erlang, freetype, + libheif, libpthsem, micropython, newlib-bare-metal, openssh, + poco, python3, redis, rhash, shim, squid, syslinux + +2024.02-rc1, released February 25th, 2024 + + Fixes all over the tree and new features. + + Toolchain: + + - GDB: Add version 14.1, default to 13.2. + + - uClibc-ng updated to 1.0.45 + + - Bootlin external toolchains updated to 2023.11-1, moving the + stable toolchains to GCC 12.3 / binutils 2.40 / GDB 13.2 / + glibc 2.38 / musl 1.2.4 / uClibc-ng 1.0.45 + + - Add support for building a bare metal toolchain suitable for + building firmware for certain (co-)processors, possibly + using a different CPU architecture than the main Buildroot + configuration. + + Default optimization level changed from optimize for size + (-Os) to optimize for speed (-O2). + + Support: Use the Fraunhofer FKIE JSON files for CVE matching + now that NVD is about to deprecate its feeds. + + New defconfigs: AMD Zynqmp kria kd240 and kr260, zcu104, Avnet + RZBoard V2L, Mangopi MQ1RDW2, NXP i.MX 93 11x11 EVK, QEMU + Riscv64 virt-efi, TI AM574x Industrial Development Kit + + Removed defconfigs: Zynq qmtech + + New packages: binutils-bare-metal, dmenu-wayland, fcft, foot, + firmware-ele-imx, ivi-homescreen, libjwt, libtraceevent, + libtracefs, libutempter, lua-ansicolors, lua-argparse, + lua-conciseserialization, lua-ubjson, minisign, + newlib-bare-metal, python-aiosqlite, python-annotated-types, + python-anyio, python-asyncssh, python-bitarray, + python-cachetools, python-contourpy, python-decouple, + python-fastapi-sessions, python-fastapi, + python-google-api-core, python-google-auth, + python-googleapis-common-protos, python-grpc-requests, + python-grpcio-reflection, python-grpcio, python-httpcore, + python-httpx, python-matplotlib-inline, python-ml-dtypes, + python-multipart, python-pydantic-core, python-pypng, + python-starlette, python-tcolorpy, python-trafaret, + python-urwid-readline, python-uvicorn, rlwrap, tllist + + Removed packages: davinci-bootcount (renamed to + uboot-bootcount), flickcurl, gmpc, libmpd, micropython-lib, + python-crossbar, python-pygame, tinymembench + + Issues resolved (http://bugs.uclibc.org): + + #10096: SH4 toolchain does not build Linux kernel magicpanelr2_.. + #15889: please update meson + #15898: Unable to boot syslinux.efi produced by buildroot (EFI 64-.. + #15910: USB keyboard is not working by default "raspberrypicm4io_.. + #15952: Grub fails to load large rootfs files + +2023.11.3, released March 26th, 2024 + + Important / security related fixes. + + Defconfigs: Starfive visionfive2: Use correct genimage + configuration. + + Updated/fixed packages: bind, bitcoin, botan, c-ares, clamav, + conmon, containerd, cvs, dash, dnsmasq, docker-engine, dracut, + ell, expat, fluent-bit, freetype, gcc, ghostscript, gmp, + gnupg2, go, google-breakpad, gst1-python, gst1-vaapi, iwd, + libcoap, libcurl, libdnet, libgit2, libheif, libkrb5, + libmodsecurity, libnfs, libopenssl, libselinux, libunwind, + liburing, libuv, libva, libxml2, ltris, lua-http, luvi, + mmc-utils, nginx-naxsi, nodejs, octave, openssh, openvmtools, + parted, petitboot, php, poco, postgresql, powertop, privoxy, + pure-ftpd, putty, python-cheroot, python-configshell-fb, + python-django, python-rtslib-fb, python3, + rauc-hawkbit-updater, redis, redis-plus-plus, rsync, + s390-tools, sdl2, shim, spice, spirv-tools, squid, strace, + strongswan, sudo, systemd, targetcli-fb, uhd, unbound, + util-linux, v4l2loopback, vim, webkitgtk, wpewebkit, xvisor, + zlib-ng + + Issues resolved (http://bugs.uclibc.org): + + #15997: Build Squid with GCC12.3 in Buildroot 2024.02 will fail + +2023.11.2, released March 1st, 2024 + + Important / security related fixes. + + Added CPE identifiers for a large number of packages. + + Updated/fixed packages: bayer2rgb-neon, brltty, c-ares, cog, + containerd, cpio, crda, criu, darkhttpd, davinci-bootcount, + dbus, depot-tools, dhcpcd, domoticz, environment-setup, expat, + faad2, falcosecurity-libs, flex, flutter-engine, + flutter-gallery, flutter-pi, flutter-sdk-bin, + freeradius-server, freerdp, frr, gesftpserver, glibc, gnutls, + go, gst1-devtools, gst1-libav, gst1-python, gst1-vaapi, + gst-omx, gstreamer1, haproxy, hiredis, joe, json-c, leptonica, + libcurl, libp11, libuwsc, libvips, libzenoh-pico, + linux-firmware, linux-headers, localedef, lua-http, lvm2, + lynx, mbedtls, micropython, minizip, mpfr, netatalk, ngrep, + onevpl, opencv4, opencv4-contrib, openssh, opus, petitboot, + php, python-aiohttp, python-bitarray, python-bitstring, + python-esptool, python-gunicorn, python-hpack, + python-html5lib, python-lmdb, python-mako, python-numpy, + python-oauthlib, python-sqlparse, python-wheel, qt5base, + qt6base, redis, runc, sdl2, sqlite, syslog-ng, sysstat, + util-linux, vulkan-loader, webkitgtk, weston, wireless-regdb, + wlroots, wpewebkit, xlib_libXpm, xterm, xwayland, yasm + + New packages: python-bitarray + + Issues resolved (http://bugs.uclibc.org): + + #10096: SH4 toolchain does not build Linux kernel magicpa.. + #15952: Grub fails to load large rootfs files + +2023.11.1, released January 15th, 2024 + + Important / security related fixes. + + Infrastructure: + + - Download: Revert a permission fixup step in the tarball + creation logic, which lead to a hash mismatch issue in two + cargo-vendored packages, ripgrep and sentry-cli. + + - Build: Pass GIT_DIR=. in the environment (through + HOST_MAKE_ENV/TARGET_MAKE_ENV) to the build steps to + workaround packages trying to detect if they are building in + a git checkout and getting confused when building in a sub + directory of a Buildroot git checkout. + + Defconfigs: Rock5b: Add download hashes for U-Boot and Linux + + Updated/fixed packages: apcupsd, arm-trusted-firmware, botan, + cjson, criu, cryptodev-linux, cups, dahdi-linux, dahdi-tools, + dbus, docker, dropbear, duktape, edk2, erlang, exim, faad2, + freeswitch, gcc, gdal, gdb, giflib, glibc, gnuplot, gnutls, + go, google-breakpad, gst-omx, gstd, gst1-devtools, gst1-libav, + gst1-plugins-bad, gst1-plugins-base, gst1-plugins-good, + gst1-plugins-ugly, gst1-python, gst1-rtsp-server, gst1-vaapi, + gstreamer1, gstreamer1-editing-services, ipcalc, jq, + json-for-modern-cpp, ksmbd-tools, libaio, libarchive, + libcamera, libcamera-apps, libcap-ng, libcgroup, libcurl, + libde265, libebml, libgtk3, libheif, libiec61850, libndns, + libostree, libraw, libsigsegv, libssh, libssh2, libuev, + libwebsockets, libzenoh-pico, liquid-dsp, lvm2, madplay, + mesa3d, micropython, minizip, mp4v2, nushell, + onevpl-intel-gpu, opensc, openssh, optee-client, orc, php, + pipewire, postgis, postgresql, proftpd, putty, python-brotli, + python-pysensors, python-sip, python-werkzeug, shim, squid, + strongswan, sway, tinyssh, tor, transmission, tree, udev, + uftp, valijson, wireshark, wlroots, wolfssl, + xserver_xorg-server, xwayland, + +2023.11, released December 4th, 2023 + + Various fixes. + + Defconfigs: Toradex apalis i.mx6: Add download hashes for + Linux and U-Boot. + + Updated/fixed packages: cog, freescale-imx, imagemagick, + libde265, libmemcached, libpjsip, libusb-compat, + libzenoh-pico, linux-tools, lttng-modules, mariadb, monit, + openfpgaloader, perl, putty, python-numpy, rtty, speechd, + wireshark, xenomai, xtables-addons, zfs + +2023.11-rc2, released November 29th, 2023 + + Fixes all over the tree. + + Defconfigs: Raspberry pi: Fix bluetooth autoprobing, + rockpro64: Fix U-Boot build, bump rootfs size, vim3: Use + device tree from Linux rather than from U-Boot. + + Updated/fixed packages: erlang, exfatprogs, flutter-engine, + flutter-sdk-bin, gcc, gsl, intel-microcode, janet, + kodi-pvr-hts, libgdiplus, libpam-tacplus, libxml2, + libzenoh-pico, memcached, motion, netsnmp, nodejs, oatpp, + openrc, opensc, perl, postgresql, python-msgpack, qemu, + refpolicy, samba4, squid, vim, vlc, xwayland, zfs + + Issues resolved (http://bugs.uclibc.org): + + #15856: Using BR2_CONFIG= on a different file-system... + +2023.11-rc1, released November 14th, 2023 + + Fixes all over the tree and new features. + + Architecture: MIPS IV (re-)added. The mutually exclusive ABI + selection dropped for PowerPC. + + Toolchain: + + - Support for GDB 13.2, make GDB 12.x the default + + - Glibc bumped to 2.38 + + - Bootlin external toolchains updated to 2023.08, bringing + support for Aarch64 BE with musl. + + - Motorola 68K w/MMU support added for glibc and musl. + + - License info added for GCC + + Infrastructure: + + - The CMake infrastructure now supports building packages with + ninja instead of make (based on _CMAKE_BACKEND). + + - The RPATH fixup done at the end of the build is now done in + parallel (according to BR2_JLEVEL). + + - Packages downloaded from Subversion repos no longer + retrieves svn:externals unless _SVN_EXTERNALS is set to + YES. + + - Packages where a free-form version/site can be specified + (E.G. Linux, U-Boot, ..) can now have the corresponding + tarballs of these custom downloads checked by the download + infrastructure based on .hash files in the global patch + directory. These hashes are optional unless + BR2_DOWNLOAD_FORCE_CHECK_HASHES is enabled. + + A utils/add-custom-hashes helper script has been added to + assist in managing such hash files. + + - Various improvements to utils/docker-run to handle external + (BR2_DL_DIR defined in environment) download directory, + proxy configuration, SELinux and out of tree (O=) builds. + + New defconfigs: AMD Zynq ZC702, ASUS Tinker-s rk3288, ICnova + A20-adb4006, Khadas vim3, Libre Computer ROC-RK3399-PC, + Microchip PolarFire SoC Icicle Kit, NXP imxrt1050-evk, Pine64 + pinecube, Sipeed LicheePi Nano, Synopsys ARC700 nSIM, TI + SK-AM62 and TI SK-AM64 + + New packages: ti-k3-boot-firmware, ti-k3-image-gen, + amlogic-boot-fip, criu, cutekeyboard, depot-tools, fft-eval, + firewalld, flutter-engine, flutter-gallery, flutter-pi, + flutter-sdk-bin, ledmon, libcanberra, libnvme, libsoup3, + libspdm, libucontext, libzenoh-pico, + microchip-hss-payload-generator, nodejs-bin, nushell, + nvidia-persistenced, oatpp, onevpl-intel-gpu, onevpl, + python-calver, python-distlib, python-jeepney, + python-jsonschema-specifications, python-kmod, + python-pysensors, python-referencing, python-segno, + python-tftpy, python-trove-classifiers, + python-types-python-dateutil, python-versioneer, + qoriq-fm-ucode, qt6core5compat, rauc-hawkbit-updater, + rust-bindgen, spirv-headers, spirv-tools, vulkan-loader, + vulkan-tools + + Removed packages: google-material-design-icons, libtextstyle, + python-pyxb + + Issues resolved (http://bugs.uclibc.org): + + #14366: Nodejs fails with "version `GLIBC_2.34' not found".. + #14741: e2fsck is failing during cronjob build where fail... + #15628: Missing dependencies in BR2_PACKAGE_PYTHON_MAKO + #15733: xfsprogs outdated + #15772: lz4 failed to compile with gcc 10.4.0 + #15778: strace comilation fails on Fedora39/gcc13 + #15787: atmel_sama5d3_xplained_mmc_defconfig: Missing... + #15790: at91sam9x5ek_dev_defconfig: Missing... + #15808: connman is not supported on musl + #15814: C++ not supported by bootlin toolchain + #15820: make linux-menuconfig does not modify correct .config.. + #15823: Installing nodejs modules with native extensions ... + #15826: nodejs modules with native extensions fail to install + #15835: Incompatibility between network-manager and libcurl 8.4 + +2023.08.4, released December 4th, 2023 + + Important / security related fixes. + + Defconfigs: Raspberrypi: Fix DT overlay for autoproving of + bluetooth driver, Toradex apalis i.mx6: Add download hashes + for Linux and U-Boot. + + Updated/fixed packages: gcc, erlang, exfatprogs, gsl, + imagemagick, intel-microcode, libde265, libmemcached, + libpjsip, libxml2, mariadb, memcached, motion, netsnmp, perl, + postgresql, putty, rtty, samba4, speechd, squid, vim, vlc, + xenomai, xtables-addons, zfs + + Issues resolved (http://bugs.uclibc.org): + + #15856: Using BR2_CONFIG= on a different file-system... + +2023.08.3, released November 14th, 2023 + + Important / security related fixes. + + Per-package builds: Unbreak SDK relocation logic. Only drop + the hard links for the final host / target directory, fixing a + build time / size regression in 2023.08.2. + + Packages where a free-form version/site can be specified + (E.G. Linux, U-Boot, ..) can now have the corresponding + tarballs of these custom downloads checked by the download + infrastructure based on .hash files in the global patch + directory. These hashes are optional unless + BR2_DOWNLOAD_FORCE_CHECK_HASHES is enabled. + + A utils/add-custom-hashes helper script has been added to + assist in managing such hash files. + + Defconfigs: Avenger96: Downgrade to TF-A v2.5 to fix boot + issue since 2023.08, stm32mp157a-dk1, stm32mp157c-dk2: Unbreak + TF-A build, stm32mp157c-odessey: Use a fixed TF-A version for + reproducibility + + Updated/fixed packages: apache, arm-trusted-firmware, aufs, + aufs-util, azure-iot-sdk, casync, cjson, clamav, conmon, + cups-filters, dhcpcd, docker-cli, docker-engine, + freeradius-server, go, inadyn, ksmbd-tools, kvmtool, + libgdiplus, libgeos, libmemcached, libmdbx, libopenssl, + libosmium, libtommath, libupnp, libzlib, lightning, linux-pam, + lxc, mender, minizip-zlib, mpd, mxsldr, nano, nettle, + network-manager, nghttp2, nodejs-src, opencv4, + opencv4-contrib, openjdk-bin, openvpn, opusfile, paho-mqtt-c, + pango, perl-lwp-protocol-https, petitboot, php, pistache, + python-django, python-pycryptodomex, python-urllib3, + python-web2py, rabbitmq-c, redis, reproc, + riscv64-elf-toolchain, sedutil, snort3, suricata, tar, tiff, + tor, traceroute, vim, websocketpp, wireshark, wolfssl, + xdg-dbus-proxy, xen, xlib_libX11, xlib_libXpm, zabbix, zchunk + + Issues resolved (http://bugs.uclibc.org): + + #14741: e2fsck is failing during cronjob build where fail... + #15772: lz4 failed to compile with gcc 10.4.0 + #15787: atmel_sama5d3_xplained_mmc_defconfig: Missing... + #15790: at91sam9x5ek_dev_defconfig: Missing... + #15820: make linux-menuconfig does not modify correct .config.. + #15823: Installing nodejs modules with native extensions ... + #15835: Incompatibility between network-manager and libcurl 8.4 + +2023.08.2, released October 15th, 2023 + + Important / security related fixes. + + Defconfigs: Freescale ARM: Add ATF patch to fix build issue + with binutils 2.39+. QEMU Aarch64-virt: Enable ACPI support + for EDK2. Visionfive2: Bump kernel to fix build issue with GCC + 13. + + Per-package builds: Do not use hard links for host / target + dirs, fixing issues with package rebuilds or post-build + scripts modifications. + + Infrastructure: Explicitly disable shuffle mode for Make >= + 4.4 where needed. + + Urandom-scripts: Move seedrng init script to S01 for earlier + random number entrophy initialization. + + Updated/fixed packages: at91bootstrap, batman-adv, bind, cups, + efl, enlightenment, exim, gcc, glibc, gnu-efi, go, gptfdisk, + grub2, gst-omx, gst1-devtools, gst1-libav, gst1-plugins-bad, + gst1-plugins-base, gst1-plugins-good, gst1-plugins-ugly, + gst1-python, gst1-rstp-server, gst1-rtsp-vaapi, gstreamer1, + gstreamer1-editing-services, gtkmm3, libcue, libcurl, + libfastjson, libhtp, libmodplug, librsvg, libvpx, libyang, + linux-pam, linux-tools, mbedtls, mosquitto, mutt, neon, + netsnmp, nmap, nodejs, olsr, openblas, opkg-utils, php, pound, + powertop, python-mako, python3, rauc, rockchip-mali, samba4, + sslh, stress-ng, suricata, syslog-ng, systemd, tar, unifdef, + urandom-scripts, usbguard, webkitgtk, wilc-driver, + wireless-regdb, wpewebkit + + Issues resolved (http://bugs.uclibc.org): + + #15628: Missing dependencies in BR2_PACKAGE_PYTHON_MAKO + #15808: connman is not supported on musl + #15814: C++ not supported by bootlin toolchain + +2023.08.1, released September 27th, 2023 + + Important / security related fixes. + + Updated/fixed packages: agentpp, asterisk, bind, binutils, + conmon, cpio, docker-cli, docker-engine, e2fsprogs, erlang, + esp-hosted, expect, fail2ban, fio, freerdp, fstrcmp, gcc, gdb, + ghostscript, go, haproxy, hwloc, icu, irssi, libcoap, libcurl, + libde265, libheif, libiec61850, libjxl, libopenssl, libpjsip, + libqb, libraw, libssh, libuv, lldpd, mdadm, mutt, ne10, + netatalk, nodejs, nut, openblas, opensc, openvpn, petitboot, + php, pound, pppd, python-pytest, python3, qt5, + rtl8812au-aircrack-ng, sngrep, stress-ng, strongswan, sysstat, + tar, tcl, timescaledb, util-linux, vim, webkitgtk, webp, + wireshark, xserver_xorg-server, xterm, zbar, zxing-cpp, + zynaddsubfx + + Issues resolved (http://bugs.uclibc.org): + + #14366: Nodejs fails with "version `GLIBC_2.34' not found".. + #15787: atmel_sama5d3_xplained_mmc_defconfig: Missing... + #15790: at91sam9x5ek_dev_defconfig: Missing... + +2023.08, released September 6th, 2023 + + Various fixes. + + Defconfigs: BeagleV: Fix build issue with binutils >= + 2.38. Hifive unleashed: U-Boot needs OpenSSL + + Updated/fixed packages: dt, grub2, heirloom-mailx, libgpgme, + libtommath, libxcrypt, log4cxx, mesa3d-demos, openjdk, + openjdk-bin, pam, pcm-tools, pixman, poppler, python-django, + python-ipython, python-pip, python-tornado, zeromq + + New packages: libdecor + +2023.08-rc3, released August 29th, 2023 + + Fixes all over the tree. + + Defconfigs: Avenger96: Bump ATF to 2.9 to fix build warnings + with binutils >= 2.39. CI20: Bump kernel to 5.4.254 to fix + build issue with GCC 12. Hifive unleashed: Add missing + pylibfdt dependency / bump kernel to 5.10.109 to fix build + issue GCC 12. PC x86-64 bios/elf: Add missing libelf + dependency. Sipeed maix sdcard: Fix build issues with + binutils >= 2.38 + + Updated/fixed packages: check, clamav, cups, esp-hosted, + f2fs-tools, freeswitch, gcc, gmp, libks, libmodsecurity, + mosquitto, mpg123, network-manager, php, postgresql, python3, + ramspeed, rtl8189fs, rust, rust-bin, samba4, screen, zlib-ng + +2023.08-rc2, released August 20th, 2023 + + Fixes all over the tree. + + Toolchains: Only show external toolchains based on a GCC + version supporting the selected architecture + variant. Correctly mark Codescape MIPS external toolchains as + not providing a gdbserver. + + Defconfigs: Andes ae350_45: Drop custom U-Boot march setting, + breaking builds with GCC 12. Nitrogen*: Bump + U-Boot/Linux. Nitrogen8*: Use ATF 2.8, fixing array bounds + errors. QEMU m68k: Add Linux patch to fix build issue with + binutils >= 2.41. Raspberrypi*: Enable console on HDMI when + using systemd as well. + + Updated/fixed packages: at91dataflashboot, aubio, berkeleydb, + bwm-ng, ccache, check, chocolate-doom, compiler-rt, composer, + conmon, connman, dav1d, diffutils, dracut, e2fsprogs, elf2flt, + esp-hosted, flite, gcc, gdb, go-bootstrap-stage2, + intel-microcode, kodi-imagedecoder-heif, less, libcoap, + libedit, libglib2, libksba, liblo, libserial, log4cxx, lsof, + luvi, meson, mosquitto, mpd, mpv, mv-ddr-marvell, nftables, + ntpsec, openssh, optee-test, perftest, python-botocore, + python-docker, python-pylibfdt, python3, screenfetch, + sentry-cli, sngrep, stellarium, trinity, tvheadend, uboot, + uclibc, util-linux, xfsprogs, yajl + + New packages: nftables-python, xlib_libXpresent + + Removed packages: lpc32xxcdl + +2023.08-rc1, released August 5, 2023 + + Numerous package updates and fixes, additional runtime tests. + + Toolchain: + - Toolchains from ARM (for ARM, AArch64 and AArch64 BE) + updated to 12.2. + - Support for binutils 2.40 and 2.41 added, binutils 2.37 and + 2.38 removed, binutils 2.40 is now the default + - Support for gcc 13 added, gcc 10 removed, gcc 12 is now the + default + + Architectures: + - Additional x86-64 variants added + - RISC-V vector extension support added + + Infrastructure: + - Go now built in 3 stages to be able to update to Go 1.20.x. + + New defconfigs: rock5b + + Removed defconfigs: qemu_sparc_ss10 + + New packages: composer, conmon, dfu-programmer, esp-hosted, + kodi-imagedecoder-heif, kodi-imagedecoder-raw, libde2654, + libdisplay-info, libheif, llvm-cmake, llvm-libunwind, + lua-dkjson, mbpoll, mdnsd, mhz, opencsd, python-libconf, + python-blinker, python-midiutil, python-rdps-py, python-wheel, + qt6svg, redis-plus-plus, rockchip-rkbin, rtl8822cs, swaybg, + swugenerator + + Removed packages: libasplib, ocf-linux, tovid + +2023.05.3, released September 26th, 2023 + + Important / security related fixes. + + Defconfigs: PC x86-64 bios/efi: Needs libelf. Raspberrypi: + Also enable HDMI console when systemd is used. + + Updated/fixed packages: agentpp, asterisk, at91dataflashboot, + aubio, berkeleydb, bind, bwm-ng, chocolate-doom, clamav, + compiler-rt, connman, cpio, cups, dav1d, diffutils, dracut, + dt, expect, fail2ban, fio, flite, freerdp, freeswitch, + fstrcmp, gcc, gdb, ghostscript, gmp, go, grub2, haproxy, + heirloom-mailx, hwloc, icu, intel-microcode, irssi, less, + libcoap, libcurl, libglib2, libiec61850, libjxl, libks, + libksba, libmodsecurity, libpjsip, libqb, libraw, libssh, + libtommath, lldpd, log4cxx, lsof, mdadm, mosquitto, mpd, mpv, + mutt, mv-ddr-marvell, ne10, netatalk, network-manager, + nftables, nodejs, ntpsec, nut, openblas, openjdk, openjdk-bin, + opensc, openssh, pcm-tools, perftest, petitboot, php, pixman, + poppler, postgresql, python-django, python-ipython, + python-pip, python-pylibfdt, python-tornado, python3, qt5, + ramspeed, rtl8189fs, rtl8812au-aircrack-ng, samba4, screen, + screenfetch, sngrep, sofia-sip, stellarium, stress-ng, + strongswan, sysstat, tar, tcl, uboot, uclibc, vim, webkitgtk, + webp, wireshark, xfsprogs, xserver_xorg-server, xterm, yajl, + zbar, zxing-cpp + + New packages: xlib_libXpresent + +2023.05.2, released August 31th, 2023 + + Important / security related fixes. + + Toolchains: Correctly mark Bootlin external toolchains as + having OpenMP support. + + Arch: Mark Alderlake x86 variants as no AVX512 support. + + Utils: Ensure utils/docker-run correctly supports git + worktrees. + + Defconfigs: Beaglebone: U-Boot needs OpenSSL. Beaglebone qt5: + Enable support for green wireless variant. + + Updated/fixed packages: arm-trusted-firmware, bind, cairo, + cmocka, containerd, crudini, cryptodev-linux, dmidecode, + ffmpeg, firmware-imx, gcc, gdb, ghostscript, gkrellm, + gnuradio, go, igh-ethercat, iperf3, kodi, libcurl, libopenssl, + libssh, libubootenv, libuhttpd, linux-tools, mali-driver, + nfs-utils, ntp, openssh, php, pipewire, python-pysmb, + python-iniparse, python-iptables, rtl8189es, rtl8189fs, + sam-ba, samba4, seatd, shadow, speex, + sunxi-mali-utgard-driver, supertuxkart, sysdig, systemd, tor, + tpm2-tss, transmission, uboot, unzip, webkitgtk, + wireless-regdb, wolfssl, wpebackend-fdo, wpewebkit, xenomai, + yaml-cpp, yavta + + Issues resolved (http://bugs.uclibc.org): + + #15634: fluidsynths refers to missing libgomp.so.1 + +2023.05.1, released July 17th, 2023 + + Important / security related fixes. + + Defconfigs: Chiliboard, mx53loco: fix build on hosts without + openssl development headers. + Nitrogen*: fix build on hosts without openssl or pylibfdt. + Hifive unleased: Bump OpenSBI to 1.2 to fix a build issue. + Raspberrypi: Handle DTB overlays for all variants + + Updated/fixed packages: agentpp, alsa-plugins, assimp, audit, + bind, busybox, c-ares, check, cups, dav1d, dbus, fftw, + fluidsynth, freetype, fwts, ghostscript, gnupg2, gnuradio, + graphicsmagick, gupnp, haproxy, heimdal, hwdata, jhead, kodi, + libcap, libgcrypt, libgpg-error, libgtk3, libmdbx, libxslt, + mesa3d, mesa3d-demos, mpir, nodejs, php, pkgconf, + python-cryptography, python-dbus-fast, python-django, + python-docker, python-pyicu, python-requests, python3, qemu, + qt6, quickjs, rtl8192eu, samba4, sconeserver, syslog-ng, + taglib, tiff, wine, wireshark, xdriver_xf86-video-dummy, + xlib_libX11, + + Issues resolved (http://bugs.uclibc.org): + + #15643: ERROR: No hash found for linux-6.3.8.tar.xz + #15658: hifive_unleashed_defconfig: Linker errors in opensbi-0.9 + #15661: mx53loco_defconfig: Dependency on OpenSSL missing + #15664: Can't compile mesa3d with v3d driver + #15673: PKGCONF_SITE in pkgconf.mk points to parked domain + #15682: pkgconf: no longer able to download source from... + +2023.05, released June 7th, 2023 + + Fixes all over the tree. + + Infrastructure: Add BR2_HOST_CMAKE_AT_LEAST_* for packages + needing a newer host-cmake than what is currently enforced + (3.18) - Up to the version provided by the cmake package (3.22). + + Defconfigs: QEMU s390x: Bump rootfs size to 120MB to make room + for kernel modules. + + Updated/fixed packages: at-spi2-core, go, libdeflate, libjxl, + perl-http-message, php, redis + +2023.05-rc3, released June 4th, 2023 + + Fixes all over the tree. + + Updated/fixed packages: bird, containerd, earlyoom, gcc, + ipython, kexec, kodi-skin-confluence, libcurl, libopenssl, + mesa3d, minidlna, mpd, openjdk, openjdk-bin, + python-matplotlib, sdl2_net, vdr + + New packages: python-asttokens, python-executing, + python-pure-eval, python-stack-data + +2023.05-rc2, released May 28th, 2023 + + Fixes all over the tree. + + Updated/fixed packages: busybox, clamav, crudini, + kodi-pvr-vbox, libcurl, libmnl, libpqxx, libressl, libssh, + llvm, lua, mesa3d, perl-http-message, python-can, + python-django, sdl2_mixer, webkitgtk, zfs, znc + + New packages: perl-clone + + Issues resolved (http://bugs.uclibc.org): + + #15421: qemu_aarch64_ebbr_defconfig: Missing Linux kernel source.. + #15581: qemu_ppc_mpc8544ds_defconfig: Fails due to non-working patch + +2023.05-rc1, released May 15th, 2023 + + Fixes all over the tree and new features. + + Toolchain: + - glibc update to 2.37, uClibc-ng updated to 1.0.43 + - suppoert 6.2.x / 6.3.x kernel headers + + Infrastucture: + - go: Ensure go versions of os/user and net are used for + static builds so CGO is not used + + - rust / cargo: Correctly split up rust flags for host and + target builds + + New defconfigs: STM32F769 discovery + + New packages: petitboot, python-evdev, python-hwdata, + python-pyproject-hooks, shadow + + Removed packages: atk, at-spi2-atk, optee-benchmark, + python-pep517 + + Issues resolved (http://bugs.uclibc.org): + + #14356: cronstamp jobs are not performed with bumped version of... + #15191: pc_x86_64_efi_defconfig doesn't run on real hardware + #15306: glibc build fails in Docker container + #15321: docker-engine now requires libseccomp by default + #15376: Libiconv config + #15461: QtVirtualKeyboard segfaults + +2023.02.11, released March 26th, 2024 + + Important / security related fixes. + + Defconfigs: Starfive visionfive2: Use correct genimage + configuration. + + Updated/fixed packages: bind, bitcoin, botan, c-ares, clamav, + cvs, dash, dnsmasq, ell, exim, expat, freetype, ghostscript, + gnupg2, google-breakpad, gst1-python, gst1-vaapi, iwd, + libcoap, libcurl, libgit2, libkrb5, libmodsecurity, libunwind, + libuv, libxml2, lua-http, luvi, nginx-naxsi, nodejs, openssh, + openvmtools, parted, php, poco, postgresql, privoxy, + pure-ftpd, putty, python-cheroot, python-configshell-fb, + python-django, python-rtslib-fb, python3, rsync, sdl2, shim, + spice, squid, strace, strongswan, sudo, systemd, targetcli-fb, + unbound, uvw, v4l2loopback, vim, webkitgtk, wpewebkit, xvisor, + zlib-ng + + Issues resolved (http://bugs.uclibc.org): + + #15997: Build Squid with GCC12.3 in Buildroot 2024.02 will fail + +2023.02.10, released March 1st, 2024 + + Important / security related fixes. + + Added CPE identifiers for a large number of packages. + + Updated/fixed packages: bayer2rgb-neon, brltty, c-ares, + containerd, crda, darkhttpd, davinci-bootcount, dbus, + domoticz, environment-setup, expat, faad2, falcosecurity-libs, + flex, freeradius-server, freerdp, frr, gesftpserver, glibc, + gnutls, go, gst1-devtools, gst1-libav, gst1-python, + gst1-vaapi, gst-omx, gstreamer1, haproxy, joe, json-c, + leptonica, libcurl, libuwsc, libvips, linux-firmware, + linux-headers, localedef, lua-http, lvm2, lynx, mbedtls, + micropython, minizip, mpfr, netatalk, ngrep, opencv4, + opencv4-contrib, openssh, opus, php, python-aiohttp, + python-esptool, python-gunicorn, python-hpack, + python-html5lib, python-lmdb, python-mako, python-numpy, + python-oauthlib, python-sqlparse, qt5base, qt6base, redis, + runc, sdl2, sqlite, sysstat, uuu, webkitgtk, wireless-regdb, + wpewebkit, xlib_libXpm, xterm, xwayland, yasm + + Issues resolved (http://bugs.uclibc.org): + + #10096: SH4 toolchain does not build Linux kernel magicpa.. + #15952: Grub fails to load large rootfs files + +2023.02.9, released January 15th, 2024 + + Important / security related fixes. + + Infrastructure: + + - Download: Revert a permission fixup step in the tarball + creation logic, which lead to a hash mismatch issue in two + cargo-vendored packages, ripgrep and sentry-cli. + + - Build: Pass GIT_DIR=. in the environment (through + HOST_MAKE_ENV/TARGET_MAKE_ENV) to the build steps to + workaround packages trying to detect if they are building in + a git checkout and getting confused when building in a sub + directory of a Buildroot git checkout. + + Updated/fixed packages: apcupsd, arm-trusted-firmware, botan, + cjson, cups, dropbear, duktape, edk2, exim, faad2, freeswitch, + gcc, gdal, gdb, giflib, glibc, go, google-breakpad, gst-omx, + gstd, gst1-devtools, gst1-libav, gst1-plugins-bad, + gst1-plugins-base, gst1-plugins-good, gst1-plugins-ugly, + gst1-python, gst1-rtsp-server, gst1-vaapi, gstreamer1, + gstreamer1-editing-services, ipcalc, jq, json-for-modern-cpp, + ksmbd-tools, libaio, libcamera, libcap-ng, libcurl, libebml, + libgtk3, libiec61850, libraw, libsigsegv, libssh, libssh2, + libuev, libwebsockets, liquid-dsp, lvm2, madplay, mesa3d, + micropython, mp4v2, opensc, openssh, orc, php, pipewire, + postgis, postgresql, proftpd, putty, python-sip, + python-werkzeug, rng-tools, shim, squid, strongswan, sway, + tinyssh, tor, tree, uftp, valijson, wireshark, wolfssl, + xserver_xorg-server, xwayland + +2023.02.8, released December 4th, 2023 + + Important / security related fixes. + + Defconfigs: Raspberrypi: Fix DT overlay for autoproving of + bluetooth driver, Toradex apalis i.mx6: Add download hashes + for Linux and U-Boot. + + Updated/fixed packages: exfatprogs, gcc, imagemagick, + intel-microcode, libpjsip, libxml2, mariadb, memcached, + motion, netsnmp, perl, postgresql, rtty, samba4, speech, + squid, vim, vlc, xenomai, xtables-addons, zfs + + Issues resolved (http://bugs.uclibc.org): + + #15856: Using BR2_CONFIG= on a different file-system... + +2023.02.7, released November 14th, 2023 + + Important / security related fixes. + + Per-package builds: Unbreak SDK relocation logic. Only drop + the hard links for the final host / target directory, fixing a + build time / size regression in 2023.02.6. + + Packages where a free-form version/site can be specified + (E.G. Linux, U-Boot, ..) can now have the corresponding + tarballs of these custom downloads checked by the download + infrastructure based on .hash files in the global patch + directory. These hashes are optional unless + BR2_DOWNLOAD_FORCE_CHECK_HASHES is enabled. + + A utils/add-custom-hashes helper script has been added to + assist in managing such hash files. + + Defconfigs: stm32mp157a-dk1, stm32mp157c-dk2: Unbreak TF-A + build, stm32mp157c-odessey: Use a fixed TF-A version for + reproducibility + + Updated/fixed packages: apache, arm-trusted-firmware, aufs, + aufs-util, azure-iot-sdk, cjson, cups-filters, clamav, dhcpcd, + freeradius-server, go, htop, ksmbd-tools, kvmtool, libgdiplus, + libopenssl, libosmium, libtommath, libupnp, libzlib, lxc, + mender, minizip-zlib, mpd, mxsldr, nano, nettle, + network-manager, nghttp2, nodejs, opencv4, opencv4-contrib, + openjdk-bin, openvpn, opusfile, paho-mqtt-c, + perl-lwp-protocol-https, php, python-django, python-urllib3, + python-web2py, rabbitmq-c, redis, riscv64-elf-toolchain, + suricata, tar, tiff, tor, traceroute, vim, websocketpp, + wireshark, wolfssl, xdg-dbus-proxy, xen, xlib_libX11, + xlib_libXpm, zabbix, zchunk + + Issues resolved (http://bugs.uclibc.org): + + #14741: e2fsck is failing during cronjob build where fail... + #15772: lz4 failed to compile with gcc 10.4.0 + #15787: atmel_sama5d3_xplained_mmc_defconfig: Missing... + #15790: at91sam9x5ek_dev_defconfig: Missing... + #15820: make linux-menuconfig does not modify correct .config.. + #15823: Installing nodejs modules with native extensions ... + #15835: Incompatibility between network-manager and libcurl 8.4 + +2023.02.6, released October 16th, 2023 + + Important / security related fixes. + + Per-package builds: Do not use hard links for host / target + dirs, fixing issues with package rebuilds or post-build + scripts modifications. + + Infrastructure: Explicitly disable shuffle mode for Make >= + 4.4 where needed. + + Urandom-scripts: Move seedrng init script to S01 for earlier + random number entrophy initialization. + + Go: Bump to 1.20.x as 1.19.x is now EOL and affected by + security issues. + + Updated/fixed packages: at91bootstrap, bind, cups, efl, + enlightenment, exim, gcc, glibc, gnu-efi, go, go-bootstrap, + gptfdisk, gst-omx, gst1-devtools, gst1-libav, + gst1-plugins-bad, gst1-plugins-base, gst1-plugins-good, + gst1-plugins-ugly, gst1-python, gst1-rstp-server, + gst1-rtsp-vaapi, gstreamer1, gstreamer1-editing-services, + libcue, libcurl, libfastjson, libhtp, libmodplug, librsvg, + libvpx, libyang, linux-tools, mbedtls, mosquitto, mutt, neon, + netsnmp, nmap, nodejs, olsr, openblas, opkg-utils, php, + powertop, python-mako, python3, rockchip-mali, samba4, sslh, + suricata, tar, unifdef, unrandom-scripts, webkitgtk, + wireless-regdb, wpewebkit + + Issues resolved (http://bugs.uclibc.org): + + #15628: Missing dependencies in BR2_PACKAGE_PYTHON_MAKO + #15808: connman is not supported on musl + #15814: C++ not supported by bootlin toolchain + +2023.02.5, released September 27th, 2023 + + Important / security related fixes. + + Updated/fixed packages: agentpp, asterisk, at91dataflashboot, + aubio, berkeleydb, bind, bwm-ng, chocolate-doom, clamav, + compiler-rt, connman, cups, dav1d, diffutils, dracut, dt, + expect, fail2ban, fio, flite, freerdp, freeswitch, fstrcmp, + gcc, gdb, ghostscript, gmp, go, grub2, haproxy, + heirloom-mailx, hwloc, icu, intel-microcode, irssi, libcoap, + libcurl, libiec61850, libjxl, libks, libksba, libmodsecurity, + libpjsip, libqb, libraw, libssh, libtommath, less, lldpd, + log4cxx, lsof, mdadm, mosquitto, mpd, mutt, mv-ddr-marvell, + ne10, netatalk, network-manager, nftables, nodejs, ntpsec, + nut, openblas, openjdk, openjdk-bin, opensc, openssh, + pcm-tools, perftest, php, pixman, poppler, postgresql, pppd, + python-django, python-ipython, python-pip, python-pylibfdt, + python-tornado, python3, qt5, ramspeed, rtl8189fs, samba4, + screen, screenfetch, sngrep, sofia-sip, stellarium, + strongswan, sysstat, tar, tcl, uboot, uclibc, vim, webkitgtk, + webp, wireshark, xfsprogs, xserver_xorg-server, xterm, yajl, + zbar, zxing-cpp + + Issues resolved (http://bugs.uclibc.org): + + #14366: Nodejs fails with "version `GLIBC_2.34' not found".. + #15754: The docker-engine and docker-cli versions are not... + #15787: atmel_sama5d3_xplained_mmc_defconfig: Missing... + #15790: at91sam9x5ek_dev_defconfig: Missing... + +2023.02.4, released August 31th, 2023 + + Important / security related fixes. + + Toolchains: Correctly mark Bootlin external toolchains as + having OpenMP support. + + Arch: Mark Alderlake x86 variants as having no AVX512 support. + + Utils: Ensure utils/docker-run correctly supports git + worktrees. + + Defconfigs: Beaglebone qt5: Enable support for green wireless + variant. + + Updated/fixed packages: arm-trusted-firmware, bind, cairo, + cmocka, containerd, crudini, dmidecode, ffmpeg, freescale-imx, + gcc, gdb, ghostscript, gkrellm, gnuradio, go, heimdall, + iperf3, libcurl, libmodsecurity, libopenssl, libssh, + libubootenv, libuhttpd, linux-tools, ntp, openssh, php, + pipewire, python-iniparse, python-iptables, python-pysmb, + rtl8189fs, sam-ba, samba4, seatd, speex, supertuxkart, sysdig, + tor, tpm2-tss, uboot, unzip, webkitgtk, wireless-regdb, + wolfssl, wpebackend-fdo wpewebkit, xenomai, yaml-cpp, yavta + + Issues resolved (http://bugs.uclibc.org): + + #15634: fluidsynths refers to missing libgomp.so.1 + +2023.02.3, released July 17th, 2023 + + Important / security related fixes. + + Defconfigs: Chiliboard: fix build on hosts without openssl + development headers. + Nitrogen*: fix build on hosts without openssl or pylibfdt. + Raspberrypi: Handle DTB overlays for all variants + + Updated/fixed packages: agentpp, alsa-plugins, assimp, bind, + busybox, dbus, c-ares, check, dav1d, fluidsynth, fftw, fwts, + ghostscript, gnupg2, gnuradio, gupnp, haproxy, heimdal, + hwdata, jhead, libcap, libgcrypt, libgpg-error, libgtk3, + libxslt, mesa3d-demos, mpir, nodejs, php, pkgconf, + python-cryptography, python-dbus-fast, python-django, + python-pyicu, python-requests, python3, qt6, quickjs, + sconeserver, taglib, tiff, wireshark, xdriver_xf86-video-dummy + + Issues resolved (http://bugs.uclibc.org): + + #15643: ERROR: No hash found for linux-6.3.8.tar.xz + #15673: PKGCONF_SITE in pkgconf.mk points to parked domain + #15682: pkgconf: no longer able to download source from... + +2023.02.2, released June 16th, 2023 + + Important / security related fixes. + + Infrastructure: Add BR2_HOST_CMAKE_AT_LEAST_* for packages + needing a newer host-cmake than what is currently enforced + (3.18) - Up to the version provided by the cmake package (3.22). + + utils/docker-run: Now correctly handles git + workdirs/worktrees. + + Defconfigs: QEMU s390x: Bump rootfs size to make room for + kernel modules, Stm32f4xx: Tweak config to save RAM, Xilinx + Versal vck190: Use correct (A72) CPU variant + + Updated/fixed packages: atkmm, bird, busybox, cairomm1_14, + cmake, containerd, crudini, cups, delve, docker-cli, + docker-engine, earlyoom, edid-decode, fluent-bit, freeswitch, + gcc, gdb, glibmm_2_66, gnupg2, go, gptfdisk, graphicsmagick, + intel-microcode, libass, libcurl, libdeflate, libgeos, + libgtk3, libjxl, libnftl, libopenssl, libressl, libssh, llvm, + lua, mesa3d, micropython, minidlna, moby-buildkit, mpd, mupdf, + ncurses, nftables, openjdk, openjdk-bin, php, postgresql, + python-can, python-django, python-django, python-ipython, + python-matplotlib, python-mupdf, python-requests, python3, + qemu, redis, rpm, runc, sdl2_mixer, tzdata, uclibc, vdr, + wilc-firmware, xapp_xcalc, xapp_xdpyinfo, xapp_xinput, + xapp_xwininfo, xdata_xbitmaps, xdata_xcursor-themes, + xdriver_xf86-input-mouse, xdriver_xf86-video-ark, + xdriver_xf86-video-geode, xdriver_xf86-video-neomagic, + xfont_encodings, xlib_libX11, xlib_libXaw, xlib_libXi, + xlib_libXfixes, xlib_libXft, xlib_libXpm, zfs, znc + + New packages: perl-clone, perl-http-message, python-asttokens, + python-executing, python-pure-eval, python-stack-data + + Issues resolved (http://bugs.uclibc.org): + + #15421: qemu_aarch64_ebbr_defconfig: Missing Linux kernel source code + +2023.02.1, released May 9th, 2023 + + Important / security related fixes. + + Infrastucture: + - go: Ensure go versions of os/user and net are used for + static builds so CGO is not used + + - rust / cargo: Correctly split up rust flags for host and + target builds + + Defconfigs: Olimex a20 olinuxino lime*: Bring up network at + boot, stmf469 disco sd: Lock U-Boot version + + Updated/fixed packages: agentpp, apache, bluez5_utils, + ca-certificates, containerd, coremark, dcron, dnsmasq, + docker-cli, docker-engine, efivar, eudev, ffmpeg, flann, + fluidsynth, git, go, gst-omx, gst1-devtools, gst1-libav, + gst1-plugins-bad, gst1-plugins-base, gst1-plugins-good, + gst1-plugins-ugly, gst1-python, gst1-rtsp-server, gst1-vaapi, + gstreamer1, gstreamer1-editing-services, intel-microcode, + kexec, libcurl, libite, libgtk3, libmicrohttpd, libxml2, + linux-tools, lua, mali-driver, matio, mdadm, nginx, openocd, + openssh, php, poppler, postgresql, python-web2py, qt6base, + readline, rtl8189fs, rtl8723ds, rtl8812au-aircrack-ng, runc, + rust, rust-bin, s390-tools, samba4, sdl2, snmppp, sudo, + systemd, tcpdump, uclibc, vim, webkitgtk, wireshark, + wpewebkit, xr819-radio, xserver_xorg-server, zeek + + Issues resolved (http://bugs.uclibc.org): + + #14356: cronstamp jobs are not performed with bumped version of... + #15306: glibc build fails in Docker container + #15376: Libiconv config + #15461: QtVirtualKeyboard segfaults + +2023.02, released March 12th, 2023 + + Fixes all over the tree. + + Updated/fixed packages: ace, apache, audit, bridge-utils, + docker-engine, go, gtkmm3, janet, libbpf, libev, libgcrypt, + libgpg-error, libmad, linux, mesa3d, network-manager, nut, + pcre2, php, rdma-core, rsync, rtl8821cu, rtl_433, + s6-linux-utils, speechd, uqmi, xdriver_xf86-video-qxl, znc + + New packages: atkmm2_28, cairomm1_14, glibmm2_66, libsigc2, + pangomm2_46, python-glslang + + Issues resolved (http://bugs.uclibc.org): + + #15306: glibc build fails in Docker container + #15321: docker-engine now requires libseccomp by default + +2023.02-rc3, released March 8th, 2023 + + Fixes all over the tree. + + Updated/fixed packages: apr, bash, docker-engine, exfat, + exfat-utils, f2fs-tools, gensio, gr-osmosdr, libcurl, libglfw, + libolm, libpcap, libpjsip, linux, mender, mpv, + multipath-tools, opus, paho-mqtt-c, proftpd, pugixml, + pulseaudio, qemu, quazip, quickjs, rtl8189es, rtl8821cu, + uacme, uqmi, wpebackend-fdo, + +2023.02-rc2, released February 27th, 2023 + + Fixes all over the tree. + + Updated/fixed packages: asterisk, at91dataflashboot, bind, + efivar, erlang, flac, fluent-bit, freerdp, gcc, gdal, gerbera, + gnuradio, gqrx, haproxy, hawktracer, imx-gpu-g2d, + intel-gmmlib, libarchive, libblockdev, libcamera-apps, libjxl, + libmodsecurity, libsigrokdecode, lightning, lirc-tools, + lttng-babeltrace, modem-manager, modsecurity2, + multipath-tools, mutt, mxs-bootlets, netsurf, network-manager, + nginx-naxsi, ntpsec, opensbi, optee-client, pcm-tools, + php-xdebug, pistache, postgresql, proxychains-ng, + python-m2crypto, python-numpy, python-webargs, + python-werkzeug, rtl8723bu, rtty, speechd, sudo, systemd, + tiff, tmux, wilc-driver, wpa_supplicant, xerces, + xtables-addons, xwayland, zabbix + + Removed packages: uccp420wlan + +2023.02-rc1, released February 20th, 2023 + + Numerous package updates and many (62) new packages. + + Toolchain: + + - The check for access to "unsafe" (E.G. from the build host) + header files and libraries by the cross compiler is now + unconditionally enabled. + + - Bootlin external toolchains updated to 2022.08 + + - The handling of the CCACHE_* environment variables by the + toolchain wrapper is now more strict, causing the variables + to only be exported when BR2_CCACHE is enabled. + + Infrastructure: + + - Br2-external: Fix make performance issue when many (> 6) + external trees are used together. + + - Legal-info: Stop warning about not saving sources for local + / override packages if _REDISTRIBUTE is set to NO. + + - Go: Ensure our go build and module cache is used, even for the + download step. + + - Cargo: CARGO_HOME (the location where cargo stores it + downloaded artifacts) is now located under DL_DIR rather + than in HOST_DIR/share/cargo, ensuring it is shared between + builds. + + Misc: + + - Erofs: Use fixed timestamp and UUID when BR2_REPRODUCIBLE is + used. + + - Ext2: Year 2038+ compatible inodes are now used by default, + independently of the filesystem size. + + - Linux: Fix build of < 5.6 kernels with host-gcc >= 10. + + A large number of NXP related packages and defconfigs have + been updated as upstream moved the git repositories to Github. + + New defconfigs: i.MX8mn BSH SMM S2 / pro, QEMU ARM EBBR, + Sipeed Lichee rv / rv dock, Starfive Visionfive2, Xilinx Versal + VCK190. + + New packages: catch2, cli11, dotconf, edk2-non-osi, + fluent-bit, fxdiv, hddtemp, highway, imx-vpu-hantro-daemon, + libjxl, libsolv, libunibreak, neon-2-sse, open-iscsi, + opencv4-contrib, perftest, perl-image-exiftool, + python-apispec, python-async-generator, python-cppy, + python-dbus-fast, python-dicttoxml2, python-flask-smorest, + python-h11, python-hkdf, python-magic-wormhole, + python-magic-wormhole-mailbox-server, + python-magic-wormhole-transit-relay, python-marshmallow, + python-munch, python-outcome, python-pycrate, python-pyspnego, + python-reedsolo, python-selenium, python-smbprotocol, + python-sniffio, python-spake2, python-trio, + python-trio-websocket, python-uhid, python-webargs, + python-wsproto, qt5speech, qt6serialbus, rdma-core, reproc, + rtl8723ds-bt, rtl8821cu, sexpect, speechd, sscep, stb, sway, + termcolor, ti-k3-r5-loader, tl-expected, unifdef, + versal-firmware, xwayland, z3 + + Removed packages: docker-proxy, elixir, gummiboot, + python-bunch, python-m2r, sun20i-d1-spl, ucl, + xdriver_xf86-input-keyboard, xdriver_xf86-video-glint, + xdriver_xf86-video-imx-viv, xdriver_xf86-video-tga + + Issues resolved (http://bugs.uclibc.org): + + #14971: Kernel 3.10.108 fail to build in Buildroot 2022.08-rc1 + #14996: Too many directories in BR2_EXTERNAL causes hang during make + #15161: kernel can't support SUBDIR + #15196: Setting BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE does not work + #15226: lsblk: not found + #15271: no start-qemu.sh + #15281: Error compiling GDAL library for RPi-64 if libgdal-dev install.. + #15291: BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS without location + #15301: Selecting NAND Flash boot media (NAND_BOOT) breaks the uboot.. + #15331: Warning on python-flit-core license when generating legal info + +2022.11.3, released March 18th, 2023 + + Important / security related fixes. + + Updated/fixed packages: ace, apache, apr, apr-util, asterisk, + at91dataflashboot, audit, bash, bind, bridge-utils, clamav, + dmalloc, efivar, erlang, exfat, exfat-utils, f2fs-tools, gcc, + gdal, gensio, gerbera, git, glslsandbox-player, go, haproxy, + hawktracer, intel-gmmlib, ipmiutil, less, libblockdev, + libcurl, libev, libgcrypt, libglfw, libmad, libmdbx, + libmodsecurity, libolm, libpjsip, lirc-tools, + lttng-babeltrace, mender, mpv, mutt, mxs-bootlets, netsurf, + ntpsec, nut, opensbi, opus, paho-mqtt-c, pcm-tools, php, + pistache, proftpd, proxychains-ng, pulseaudio, + python-cryptography, python-django, python-m2crypto, + python-numpy, python-werkzeug, qemu, quazip, quickjs, + rockchip-mali, rsync, s6-linux-utils, sudo, tiff, uacme, uqmi, + webkitgtk, wilc-driver, wpa_supplicant, wpewebkit, + xdriver_xf86-video-qxl, znc + + Issues resolved (http://bugs.uclibc.org): + + #15306: glibc build fails in Docker container + #15361: Buildroot linking error on Apple Silicon + +2022.11.2, released March 1st, 2023 + + Important / security related fixes. + + Fix make O=..._defconfig builds (regression in 2022.11.1). + + A number of additional/stricter checks have been added to + ./utils/check-package. + + Build host dependencies check extended to check for a number + of specific perl modules to better handle distributions (like + Fedora) with very fine grained perl packages. Also ensure + build host has git >= 2.0.0 when using packages written in + go/rust because the vendoring may need it. + + Defconfigs: ASUS tinker rk3288: Fix boot issue related to TPL + + Updated/fixed packages: afboot-stm32, apache, barebox, c-ares, + elf2flt, freeswitch, fwts, gcc, gdal, git, gitlab-runner, + ipmitool, kodi, libgit2, libks, libopenssl, libressl, live555, + lua, lxc, mariadb, mesa3d-headers, modsecurity2, mongoose, + netopeer2, nodejs, openjdk, openpowerlink, openvpn, opusfile, + postgresql, proftpd, pugixml, python-future, python-idna, qt5, + rtl8192eu, rtl8723ds, sdl2, sofia-sip, ssdp-responder, sudo, + sunxi-mali-utgard, thermald, ti-sgx-km, tmux, uboot, upx, vim, + webkitgtk, wolfssl, wpewebkit, xlib_libXpm, + xserver_xorg-server, xxhash, xz, yajl, zabbix + + Issues resolved (http://bugs.uclibc.org): + + #15271: no start-qemu.sh + #15281: Error compiling GDAL library for RPi-64 if libgdal-dev install.. + #15291: BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS without location + #15301: Selecting NAND Flash boot media (NAND_BOOT) breaks the uboot.. + #15331: Warning on python-flit-core license when generating legal info + +2022.11.1, released January 18th, 2023 + + Important / security related fixes. + + Br2-external: Fix make performance issue when many (> 6) + external trees are used together. + + Erofs: Use fixed timestamp and UUID when BR2_REPRODUCIBLE is + used. + + Go: Ensure our go build and module cache is used, even for the + download step. + + Legal-info: Stop warning about not saving sources for local / + override packages if _REDISTRIBUTE is set to NO. + + Linux: Fix build of < 5.6 kernels with host-gcc >= 10. + + A large number of NXP related packages and defconfigs have + been updated as upstream moved the git repositories to Github. + + Defconfigs: zcu106, kria kv260: Fix U-Boot build + + Updated/fixed packages: asterisk, bearssl, botan, cairo, + capnproto, check, checkpolicy, connman, containerd, crun, + dbus-cxx, docker-cli, docker-engine, exempi, exfat, + exfat-utils, falcosecurity-libs, fluidsynth, fmc, fmlib, + freeradius-server, gcc, glib-networking, go, + gobject-introspection, gperf, i2pd, ima-evm-utils, + imx-alsa-plugins, imx-kobs, imx-lib, imx-m4fwloader, + imx-mkimage, intel-microcode, janus-gateway, libcurl, + libdeflate, libftdi1, libkcapi, libksba, libmbim, libmng, + libpjsip, libtalloc, libuwsc, libxkbcommon, lpeg, lrzsz, + lttng-tools, lua-cqueues, mali-driver, mbedtls, mfgtools, + moby-buildkit, mutt, opensc, php, policycoreutils, polkit, + postgresql, pptp-linux, qcom-db410c-firmware, qemu, qoriq-rcw, + qt5virtualkeyboard, redis, rhash, rtl8189es, rtl8192eu, + rtl_433, ruby, sqlite, swupdate, tealdeer, tekui, tiff, + tinyxml, tor, webkitgtk, wireshark, wpasupplicant, wpewebkit, + xr819-xradio, xdriver_xf86-video-imx-viv, xserver_xorg-server, + xxhash, zip + + Issues resolved (http://bugs.uclibc.org): + + #14971: Kernel 3.10.108 fail to build in Buildroot 2022.08-rc1 + #14996: Too many directories in BR2_EXTERNAL causes hang during make + #15161: kernel can't support SUBDIR + #15196: Setting BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE does not work + #15226: lsblk: not found + +2022.11, released December 5th, 2022 + + Fixes all over the tree. + + Defconfigs: Nitrogen8*: Bump rootfs size, Zynqmp + kv260/zcu102/zcu106: Update to Xilinx 2022.2, + + Updated/fixed packages: dash, dovecot, elf2flt, exim, gcc, + gdb, git, kodi, libarchive, libmdbx, linuxptp, lxc, + matchbox-keyboard, memcached, netsnmp, optee-client, + python-scipy, python3, qt6base, qt6serialport, rtl8188eu, + rtl8723bu, rtl8723ds, rtl8821au, vim, vlc, wilc-driver + + Removed packages: rabbitmq-server + + Issues resolved (http://bugs.uclibc.org): + + #15131: Target GDB uses internal zlib + #15151: Busybox /etc/init.d scripts are not executable + +2022.11-rc3, released November 24th, 2022 + + Fixes all over the tree. + + Updated/fixed packages: asterisk, edk2, edk2-platforms, + freerdp, gitlab-runner, gnupg2, gptfdisk, heimdal, + igh-ethercat, iwd, libkrb5, libksba, libnss, libopenssl, + mesa3d, nginx, nodejs, openpgm, python3, rsync, rtl8189es, + rtl8723ds, samba4, sdl, sdl2, swupdate, sysstat, systemd, + uboot, xen, xterm + + Issues resolved (http://bugs.uclibc.org): + + #15141: kernel 5.16.2 (realtime patch 19) fails to build + +2022.11-rc2, released November 16th, 2022 + + Fixes all over the tree. + + Removed defconfigs: Amarule a64 relic, ARM Juno, Bananapi M1 / + M1 plus / M2 plus / M64, FriendlyARM NanoPC T4 / A64 / M1 / M1 + plus / M4 / Neo2 / Neo4 / Neo plus2 / R1 / Orangepi PC2 / Plus + / Prime / rk3399 / Win, Rock PC rk3399 / PI4 / N10. + + Updated/fixed packages: alsa-utils, arm-trusted-firmware, + bdwgc, boost, botan, ca-certificates, crun, dbus-broker, + docopt-cpp, dracut, efivar, freeipmi, gawk, gensio, gptfdisk, + gsl, guile, imagemagick, ipmitool, libidn2, libkcapi, + libopenssl, libqb, libuhttpd, libvncserver, linux, + linux-tools, lxc, makedumpfile, matchbox-startup-monitor, + mdio-tools, multipath-tools, mupdf, ntfs-3g, numactl, + perl-net-ssleay, pixman, procps-ng, rpi-userland, rsync, + s6-linux-init, socat, strongswan, sudo, swupdate, systemd, + udisks, vlc, wavemon, wolfssl, zlib-ng + + Removed packages: libdcadec + + Issues resolved (http://bugs.uclibc.org): + + #15121: make nconfig failes with nvidia drivers and mesa3d selected + +2022.11-rc1, released November 3rd, 2022 + + Fixes all over the tree and new features. + + Architecture: + + - PowerPC: add Power9 CPU type + - ARM: support dropped for iWMMXt processors + + Toolchain: + + - binutils 2.39 added, binutils 2.38 is now the default + - gdb 12 added, gdb 11 is now the default + - support for 5.18, 5.19 and 6.0 kernel headers + - glibc updated to 2.36 + + Filesystem: + + - Ability to use dracut to create an initramfs that contains a + subset of the root filesystem contents. + + New packages: agent-proxy, catatonit, cni-plugins, crun, + docopt-cpp, dracut, forge, kmemd, libmanette, mdio-tools, + open-isns, python-editables, python-hatch-fancy-pypi-readme, + python-hatch-vcs, python-hatchling, python-libevdev, + python-minimalmodbus, python-pathspec, qt6-serialport, + rtl8192eu, signal-estimator, slirp4netns, tinycompress + + More than 400 packages have been updated to a newer version. + + New defconfigs: ls1028ardb, qemu_aarch64_ebbr, visionfive. + + Issues resolved: + + #11776: qt5webengine 5.12.2 build failed with arm toolchain + and linaro toolchain + #12131: qt5webengine builderror in the latest stable Buildroot + 2019.05.01 version + #13216: 2020.02.6 requires GNU find utils + #14601: Python build fails on 2022.02-rc2 + #14746: Lack of management after loading + #14796: 64 bit time and seccomp conflict (OpenSSH server crash) + #14921: wpewebkit build fails because of internal build order + #14936: nodejs does not build + #15006: toolchain Arm AArch64 toolchain 11.2-2022.02 + #15021: Buildroot not compiling with systemd and glibc. + #15026: package/udisks: install to staging + #15061: Node.js Package fails to build against musl i386 + #15071: RTL8723BS library is outdated + +2022.08.3, released December 10th, 2022 + + Important / security related fixes. + + Updated/fixed packages: asterisk, dash, dovecot, edk2, + edk2-platforms, elf2flt, exim, freerdp, gcc, gdb, git, gnupg2, + heimdal, iwd, kodi, libarchive, libkrb5, libksba, libmdbx, + libopenssl, matchbox-keyboard, memcached, netsnmp, nginx, + nodejs, openpgm, optee-client, python-scipy, python3, rsync, + rtl8723bu, samba4, sdl, sdl2, swupdate, sysstat, systemd, + uboot, vim, vlc, wilc-driver, xen, xterm + + Issues resolved (http://bugs.uclibc.org): + + 15131: Target GDB uses internal zlib + +2022.08.2, released November 16th, 2022 + + Important / security related fixes. + + Defconfig: Aspeed ast2600evb: Correct FPU config, Kontron bl + imx8mm: Bump U-Boot to fix build issue, Pine64: Change to + mainline ATF to fix build issue, Zynqmp zcu102 / zcu106 / kria + kv260: Fix pmufw reset issue + + Updated/fixed packages: arm-trusted-firmware, bind, botan, + ca-certificates, collectd, darkhttpd, dbus, dbus-broker, dhcp, + dnsmasq, docker-cli, docker-engine, exfatprogs, expat, + f2fs-tools, faad2, ffmpeg, freerdp, gitlab-runner, glibc, + gnutls, go, gpsd, gptfdisk, grub2, gsl, gst-omx, + gst1-devtools, gst1-libav, gst1-plugins-bad, + gst1-plugins-base, gst1-plugins-good, gst1-plugins-ugly, + gst1-python, gst1-rtsp-server, gst1-vaapi, gstreamer1, + gstreamer1-editing-services, hdparm, hostapd, imagemagick, + iwd, jack2, libbpf, libcurl, libidn2, libinput, libmdbx, + libopenssl, libosip2, libpng, libtasn1, libtorrent-rasterbar, + libuhttpd, libvncserver, libxml2, linux, linux-tools, lldpd, + lrzip, lz4, matchbox-startup-monitor, meson, msmtp, + multipath-tools, mupdf, musl, mv-ddr-marvell, mxml, nodejs, + ntfs-3g, numactl, openssh, openvmtools, oracle-mysql, + paho-mqtt-c, perl-net-ssleay, php, pixman, poppler, procps-ng, + python-django, python3, qdecoder, redis, rpi-userland, rsync, + rtl8189es, rtl8189fs, rtl8723bu, rtl8723ds, + rtl8812au-aircrack-ng, rtl8821au, rtl_433, samba4, shapelib, + socat, sqlite, squashfs, squid, strongswan, sudo, swupdate, + timescaledb, uclibc-ng-test, udisks, uftp, uhd, umtprd, + usbguard, vim, vlc, volk, wavemon, wilc-driver, + wireguard-linux-compat, wolfssl, wpa_supplicant, wpewebkit, + zlib-ng, zsh + + Issues resolved (http://bugs.uclibc.org): + + #14936: nodejs does not build + #15026: package/udisks: install to staging + #15061: Node.js Package fails to build against musl i386 + +2022.08.1, released October 2nd, 2022 + + Important / security related fixes. + + Updated/fixed packages: botan, busybox, docker-cli, + docker-engine, expat, git, haproxy, heirloom-mailx, icu, + imx-gpu-viv, libconfuse, libmdbx, libupnp, libxml2, + ltp-testsuite, m4, makedevs, mariadb, mesa3d, meson, + mosquitto, ncurses, openssh, pango, python3, qlibc, + qt5xmlpatterns, rtl8189es, rtl8723bu, rt8723ds, + rtl8812au-aircrack-ng, runc, sox, tinyproxy, uacme, unbound, + unzip, vim, xtables-addons + + Issues resolved (http://bugs.uclibc.org): + + #14796: 64 bit time and seccomp conflict (OpenSSH server crash) + #14921: wpewebkit build fails because of internal build order + +2022.08, released September 10th, 2022 + + Fixes all over the tree. + + Autotools: Drop --runstatedir=/run as it causes build issues + with older packages + + Defconfigs: rockpro64: Change to mainline ATF to fix build issue + + Updated/fixed packages: dhcpd, fwup, gcc, gdb, go, linux-tools, + minidlna, mosquitto, mv-ddr-mervell, networkd-dispatcher, + optee-os, polkit, python-pillow, python3, sconeserver, uuu, + wolfssl + +2022.08-rc2, released September 1st, 2022 + + Fixes all over the tree. + + dependencies: Ensure 'find' and 'xargs' are available on the + build host. + + A large number of typo fixes. + + Defconfigs: bananapi m1, olimex a20/a33/lime: Use standard FPU + configuration, pine64_sopine: Use mainline ATF to fix build + + Updated/fixed packages: ace, alsa-utils, busybox, cups, + dbus-broker, directfb, domoticz, drbd-utils, edk2, + edk2-platforms, ffmpeg, freeradius-server, freeswitch, gauche, + gcc, gdb, glibc, gnutls, gst1-plugins-bad, gst1-plugins-good, + hawktracer, igd-ethercat, imagemagick, intel-mediadriver, + jack2, jose, jpeg, jquery-ui-themes, kodi, libcamera, libdill, + libgit2, libglvnd, libgpg-error, libgpgme, libinput, libp11, + libsepol, libtirpc, libvirtd, libvncserver, libwpe, libzlib, + linux, linux-tools-perf, llvm, lshw, makedumpfile, + mali-driver, memcached, minetest, mutt, ne10, netsniff-ng, + ntpsec, ocrad, ola, opencv4, openocd, opensc, optee-os, + pcsc-lite, postgresql, protobuf, pulseaudio, python-autobahn, + python-paho-mqtt, python-protobuf, python-pygame, python3, qemu, + qoriq-cadence-dp-firmware, qt5doc, qt6base, ranger, rng-tools, + rsync, rustc, sconeserver, sdl2, snort, sqlite, squid, + stress-ng, strongswan, sunxi-mali-utgard-driver, sysdig, + sysklogd, syslinux, syslog-ng, tcf-agent, tcpreplay, + tesseract-ocr, uacme, uboot-tools, uclibc, udpcast, usbguard, + v4l2loopback, vim, webkitgtk, wolftpm, wpewebkit, xenomai, + xserver_xorg-server, zeek, zerofree + +2022.08-rc1, released August 12th, 2022 + + Fixes all over the tree and new features. + + Architecture + + - Support for NDS32 removed + - Support for C-SKY removed + - Support for configurable page size on ARM64 added + - Architecture menu re-organized: the MMU selection now + appears in this architecture menu. + + Toolchain: + + - GCC 12.x support added, GCC 11.x is now the default + compiler, and support for building a GCC 9.x toolchain has + been removed. + - glibc bumped to 2.35-134-gb6aade18a7e5719c942aa2da6cf3157aca993fa4 + - uclibc bumped to 1.0.42 + - BR2_GCC_ENABLE_LTO option removed, the toolchain is now + always built with LTO support. The new option BR2_ENABLE_LTO + enables the use of LTO in a subset of packages that have + explicit handling for LTO. + - GDB enabled on OpenRISC. + - Toolchain menu now appears before "Build options". The + selection of the C library now determines whether static + library (BR2_STATIC_LIBS) will be available or not, instead + of the other way around. + + Filesystem: + + - genimage.cfg files now use shortcuts from genimage for the + GUID of well-known GPT partitions. + + Bootloaders: + + - U-Boot can now be built with host-gnutls as a dependency, + needed for some configurations + - OP-TEE can now be built with host-python-pillow as a + dependency, needed for some configurations. + - OP-TEE source can now be retrieved from a custom tarball + URL. + - Grub has been bumped to 2.06. + + Over 390 packages updated. + + New defconfigs: aspeed_ast2500evb, aspeed_ast2600evb, + broadcom_northstar, canaan_kd233, qemu_riscv64_nommu_virt, + sipeed_maix_bit, sipeed_maix_bit_sdcard, sipeed_maix_dock, + sipeed_maix_dock_sdcard, sipeed_maix_go, + sipeed_maix_go_sdcard, sipeed_maixduino, + sipeed_maixduino_sdcard + + Removed defconfigs: andes_ae300, csky_gx6605s, + friendlyarm_nanopi_neo, minnowboard_max-graphical + + New packages: clpeak, compiler-rt, crucible, dbus-broker, dht, + double-conversion, dust, freeradius-server, gdal, hawktracer, + hyperfine, libb2, libdeflate, libdill, mbw, mender-connect, + minizip-zlib, nerdctl, ntpsec, opencl-hpp, opensc, + python-alembic, python-appdirs, python-beniget, + python-construct, python-dtschema, python-gast, python-kflash, + python-lark, python-maturin, python-mypy-extensions, + python-pylibfdt, python-pythran, python-pyrsistent, + python-qrcode, python-rfc3987, python-rtoml, + python-ruamel-yaml, python-scipy, python-typeguard, + python-typing-inspect, python-zlmdb, qt6base, rtl8723ds, + spirv-llvm-translator, tealdeer, uuu, vis-network, volk, + wolftpm, zeek, zerofree + + Removed packages: rtl8723bs + + Issues resolved: + + #14556: python-crossbar fails to build + #14951: boost compile error when running make silently + #14646: OpenSSH 8.9p1 compiler error under mipsel + #14841: support/download/git fails with "fatal: No such remote + 'origin'" due to incorrect check for origin remote + #13356: libabseil-cpp: not building for raspberry pi + #14911: host-python3 build needs python3 on the host + #13831: mesa3d - kmsro driver requires dri3 + #13816: xstart failed since update the x11 libraries + #13796: Problems compiling package gst-plugins-good + #14191: patchelf v0.9 corrupt Nvidia shared libraries + #14891: sudo: group setup fails since commit 9b7f8da96b + #14881: Watchdogd Package missing INSTALL_STAGING + #14876: arm-trusted-firmware can no longer be compiled with fPIE + +2022.05.3, released October 2nd, 2022 + + Important / security related fixes. + + Fixed compatibility issue with make 4.3 and the 'printvars' / + 'show-vars' commands. + + Dependencies: Ensure 'find' and 'xargs' are available on the + build host. + + A large number of typo fixes. + + Defconfigs: Galileo: Fix defconfig syntax, Licheepi zero: Fix + U-Boot dependencies, Bananapi m1, Olimx a20 olinuxino lime + 1+2, a33 olinuxino: Use standard FPU configuration, Pine 64 + sopine, Rockpro 64: Change to mainline ATF to fix build issue. + + Updated/fixed packages: ace, arm-trusted-firmware, + babeltrace2, boost, botan, busybox, clamav, cog, containerd, + cups, dhcpcd, directfb, docker-cli, docker-engine, connman, + edk2, edk2-platform, elf2flt, expat, ffmpeg, ficl, freeswitch, + gcc, gdb, git, glibc, gnutls, go, gocryptfs, graphicsmagick, + grub2, gst1-plugins-bad, gst1-plugins-good, heirloom-mailx, + icu, igh-ethercat, imagemagick, imx-gpu-viv, jack2, jose, + jpeg, jquery-ui-themes, kodi, kvm-unit-tests, libcamera, + libconfuse, libfreeimage, libglvnd, libgpg-error, libinput, + libmdbx, libp11, libsepol, libtirpc, libupnp, libvirt, + libvncserver, libwpe, libxml2, libzlib, linux, linux-tools, + lshw, m4, makedevs, mali-driver, mariadb, memcached, mesa3d, + minidlna, mosquitto, mutt, mv-ddr-marvell, ncurses, ne10, + netsniff-ng, networkd-dispatcher, ocrad, ola, opencv4, + openocd, openssh, openvmtools, pango, pcsc-lite, pistache, + polkit, postgis, postgresql, python-crossbar, + python-paho-mqtt, python-pygame, python-service-identity, + python-txdbus, python3, qemu, qlibc, + qoriq-cadence-dp-firmware, qt5xmlpatterns, ranger, redis, + rng-tools, rsync, rsyslog, rtl8189es, rtl8723bu, runc, rustc, + sconeserver, sdl2, snort, sox, sqlite, squid, stress-ng, + strongswan, sunxi-mali-utgard-driver, sysdig, syslinux, + syslog-ng, tcf-agent, tcpreplay, tesseract-ocr, tinyproxy, + uacme, uboot-tools, uclibc, unzip, usbguard, v4l2loopback, + vim, waffle, webkitgtk, weston, wolfssl, wpewebkit, xfsprogs, + xserver_xorg-server, xtables-addons, zziplib + + Issues resolved: + + #13216: [Documentation] 2020.02.6 requires GNU find utils + #14556: python-crossbar fails to build + #14796: 64 bit time and seccomp conflict (OpenSSH server crash) + #14951: boost compile error when running make silently + +2022.05.2, released August 31st, 2022 + + Important / security related fixes. + + dependencies: Ensure 'cmp' is available on the build host. + + pkg-utils: The KCONFIG_ENABLE_OPT macro used to enforce a specific + Kconfig option to be enabled (E.G. for kernel options needed by + packages) no longer changes a =m (modular) with =y (built in). + + check-host-rpath: Silence readelf warnings when clang is used + + GCC 10.x updated to 10.4.0 + + Defconfigs: Kria kv260: Fix u-boot configuration + + Updated/fixed packages: apg, arm-trusted-firmware, assimp, + bayer2rgb-neon, bind, bird, cog, cwiid, diffutils, freerdp, + fluidsynth, gcc, gdk-pixbuf, glibc, glslsandbox-player, + gnupg2, gtest, i2pd, jack2, jquery-validation, jszip, + kvm-unit-tests, libbsd, libcamera, libcurl, libest, libiio, + libkrb5, libopenssl, libp11, libpsl, libwebsockets, localedef, + luasyslog, lxc, mbedtls, mstpd, mutt, netdata, netsniff-ng, + nodejs, nvidia-driver, ola, openssl, opkg-utils, paho-mqtt-c, + pango, pcsc-lite, perl, perl-crypt-openssl-rsa, pimd, poppler, + postgis, powerpc-utils, pppd, protobuf-c, pulseaudio, + python-bottle, python-django, python-lxml, python3, qt5webkit, + redis, rpi-userland, rsyslog, runc, rustc, sconeserver, + sg3_utils, shadowsocks-libev, stellarium, suricata, swupdate, + tcpreplay, uacme, uclibc, v4l2loopback, webkitgtk, + wilc-driver, wine, wpewebkit, xdg-dbus-proxy, + xserver_xorg-server, zeromq, zfs, zlib-ng + + Issues resolved (http://bugs.uclibc.org): + + #13796: Problems compiling package gst-plugins-good + +2022.05.1, released July 24th, 2022 + + Important / security related fixes. + + Disable big endian no-mmu on ARM as it is not supported by + elf2flt. + + Tighten dependencies for external Bootlin toolchains to ensure + they can only be selected in compatible configurations. + + Support external toolchains without gdbserver. + + Updated/fixed packages: apache, avahi, bdwgc, bind, bpftool, + cups, darkhttpd, dmalloc, ecryptfs-utils, fxload, ghostscript, + gnutls, gst-omx, gst1-devtools, gst1-libav, gst1-plugins-base, + gst1-plugins-bad, gst1-plugins-good, gst1-plugins-ugly, + gst1-python, gst1-rtsp-server, gst1-vaapi, gstreamer1, + gstreamer1-editing-services, gtest, iptables, keyutils, lcms2, + libabseil-cpp, libcamera, libcurl, libeastl, libgpgme, + libgtk3, libmdbx, libmediaart, libmodsecurity, libnetconf2, + libopenssl, libpjsip, libsamplerate, libsndfile, libtalloc, + logrotate, luajit, nginx, noip, paxtest, php, postgresql, + procrank_linux, pure-ftpd, python-pillow, qdecoder, + rabbitmq-server, rpi-userland, ruby, rustc, sofia-sip, + systemd, tcpreplay, tinyproxy, tor, uacme, uboot-tools, vim, + watchdogd, webkitgtk, weston, wireguard-linux-compat, + wpa_supplicant, wpewebkit, zstd + + Issues resolved (http://bugs.uclibc.org): + + #14881: Watchdogd Package missing INSTALL_STAGING + +2022.05, released June 6th, 2022 + + Fixes all over the tree. + + Rework BR2_STATIC_LIBS handling to ensure it can only be + enabled if a suitable C library is available. + + Updated/fixed packages: arm-trusted-firmware, at91bootstap, + boinc, boost, cpulimit, diffutils, edk2, eigen, fbv, gcr, + gensio, glibc, go, gtest, iucode-tool, kvm-unit-tests, libcec, + libcurl, libks, linux, linux-tools, lttng-modules, mariadb, + memcached, mono, musl, mutt, netdata, network-manager, nginx, + ogre, openjpeg, openvpn, pipewire, python-crossbar, qemu, + qpid-proton, rauc, rockchip-mali, rsyslog, + rtl8812au-aircrack-ng, ruby, runc, rustc, samba4, tiff, + uclibc, unrar, vim, webkitgtk, wpewebkit, + xdriver_xf86-video-ati, xml-security-c, zchunk, zlib-ng + + Issues resolved (http://bugs.uclibc.org): + + #14821: Samba server is failing to compile + #14826: make qemu_x86_64_defconfig stopped working + +2022.05-rc2, released May 30th, 2022 + + Fixes all over the tree. + + Defconfigs: qemu_ppc64*: Use binutils 2.36.1 to fix build + issue, qemu_arm_vexpress_tz: Fix optee-os build issue, + qemu_arm_versatile_nommu: Drop now that nommu for ARMv5 is no + longer available + + Updated/fixed packages: dhcp, edk2, gcr, glibc, i2pd, janet, + janus-gateway, libfreeimage, libnftnl, libnss, libodb-boost, + libostree, libwebsockets, linux-tools, midori, ntfs-3g, ola, + optee-client, pcsc-lite, pipewire, python-flask, + python-service-identity, python-werkzeug, qemu, rng-tools, + rockchip-mali, strace, xdriver_xf86-video-amdgpu + + Removed packages: ktap + +2022.05-rc1, released May 18th, 2022 + + Fixes all over the tree and new features. + + Toolchain: + - glibc update to 2.35, musl updated to 1.2.3 + - gcc 11.x updated to 11.3, support for external gcc 12.x + - binutils 2.38 added, 2.32/2.35.2 removed, default changed to 2.37 + - s390x Bootlin external toolchain added + - 5.17.x kernel headers support added + + Filesystem: + - Rework OCI entrypoint/command logic to handle command arguments + - Squashfs block size is now configurable + + Graphs: Also generate a build time timeline graph (for top + level parallel builds). + + scripts/pkg-stats: Optimize memory consumption for CPE parsing + + Fix compatibility issue with the fakeroot script logic and + modern versions of dash. + + Change git:// URLs pointing to Github to https://, now that + Github has turned off support for git:// + + New defconfigs: Octavo osd32mp1_brk / osd32mp1_red + + New packages: falcosecurity-libs, lzma-alone, octave, + python-flit-core, python-orjson, python-pydevmem, + qt5webengine-chromium, qt5webengine-chromium-catapult, ragel, + tbb, wilc-driver, wtfutil + + Wilc1000-firmware renamed to wilc-firmware + + Issues resolved (http://bugs.uclibc.org): + + #14596: package dialog is outdated and contains a bug + #14651: OpenSSH 8.9p1 compiler error under ARM + #14656: Adding dependencies from an external tree does not work + #14661: Fakeroot script relies on bash-isms, does not work with.. + #14681: QT5WEBENGINE not building + #14686: genimage.cfg have a hard-coded .ext4 extension which.. + #14701: Multiple unresolved symbols while building kernel .. + #14706: nodjs build problem + #14711: nodjs build problem missing bzip + #14721: python-argon2_cffi no longer works + #14731: BR2_PACKAGE_IOSTAT + #14751: LVM2 Outdated Link + +2022.02.12, released May 5th, 2023 + + Important / security related fixes. + + Updated/fixed packages: agentpp, apache, ca-certificates, + containerd, coremark, dcron, eudev, ffmpeg, git, + intel-microcode, kexec, lcdproc, libmicrohttpd, libosmium, + libxml2, linux-tools, matio, osm2pgsql, poppler, postgresql, + protozero, python-web2py, runc, s390-tools, samba4, snmppp, + sudo, tcpdump, uclibc, vim, webkitgtk, wpewebkit, + xserver_xorg-server + +2022.02.11, released March 19th, 2023 + + Important / security related fixes. + + Updated/fixed packages: apache, apr, apr-util, asterisk, + at91dataflashboot, audit, bash, bind, bridge-utils, clamav, + dmalloc, exfat, exfat-utils, f2fs-tools, gcc, git, + glslsandbox-player, go, haproxy, intel-gmmlib, ipmiutil, less, + libblockdev, libcurl, libev, libgcrypt, libmad, libmdbx, + libmodsecurity, libolm, libpjsip, lttng-babeltrace, mender, + mpv, mutt, mxs-bootlets, opensbi, opus, paho-mqtt-c, + pcm-tools, php, proxychains-ng, python-django, + python-m2crypto, python-werkzeug, quazip, quickjs, + rockchip-mali, rsync, sudo, tiff, uacme, uqmi, webkitgtk, + wpebackend-fdo, wpewebkit, xdriver_xf86-video-qxl, znc + + Issues resolved (http://bugs.uclibc.org): + + #15306: glibc build fails in Docker container + #15361: Buildroot linking error on Apple Silicon + +2022.02.10, released March 1st, 2023 + + Important / security related fixes. + + Fix make O=..._defconfig builds (regression in 2022.02.9). + + A number of additional/stricter checks have been added to + ./utils/check-package. + + Build host dependencies check extended to check for a number + of specific perl modules to better handle distributions (like + Fedora) with very fine grained perl packages. Also ensure + build host has git >= 2.0.0 when using packages written in + go/rust because the vendoring may need it. + + Defconfigs: ASUS tinker rk3288: Fix boot issue related to TPL + + Updated/fixed packages: afboot-stm32, apache, barebox, c-ares, + elf2flt, freeswitch, fwts, gcc, git, kodi, libgit2, libks, + libopenssl, live555, lua, lxc, mesa3d-headers, modsecurity2, + netopeer2, openjdk, openpowerlink, openvpn, opusfile, + postgresql, pugixml, python-future, qt5, sdl2, sofia-sip, + ssdp-responder, sudo, sunxi-mali-utgard, ti-sgx-km, tmux, + uboot, upx, vim, webkitgtk, wolfssl, wpewebkit, xlib_libXpm, + xserver_xorg-server, xxhash, xz, yajl, zabbix + + Issues resolved (http://bugs.uclibc.org): + + #15271: no start-qemu.sh + #15291: BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS without location + #15301: Selecting NAND Flash boot media (NAND_BOOT) breaks the uboot.. + +2022.02.9, released January 18th, 2023 + + Important / security related fixes. + + Br2-external: Fix make performance issue when many (> 6) + external trees are used together. + + Erofs: Use fixed timestamp and UUID when BR2_REPRODUCIBLE is + used. + + Go: Ensure our go build and module cache is used, even for the + download step. + + Legal-info: Stop warning about not saving sources for local / + override packages if _REDISTRIBUTE is set to NO. + + Linux: Fix build of < 5.6 kernels with host-gcc >= 10. + + A large number of NXP related packages and defconfigs have + been updated as upstream moved the git repositories to Github. + + Updated/fixed packages: asterisk, bearssl, botan, cairo, + capnproto, check, checkpolicy, connman, containerd, + docker-cli, docker-engine, exempi, exfat, exfat-utils, fmc, + fmlib, glib-networking, go, gobject-introspection, gperf, + i2pd, ima-evm-utils, imx-alsa-plugins, imx-kobs, imx-lib, + imx-m4fwloader, imx-mkimage, intel-microcode, janus-gateway, + libcurl, libftdi1, libksba, libmbim, libmng, libpjsip, + libtalloc, libuwsc, libxkbcommon, linux, lpeg, lrzsz, + lttng-tools, lua-cqueues, mbedtls, mfgtools, mutt, php, + policycoreutils, polkit, postgresql, pptp-linux, + qcom-db410c-firmware, qemu, qoriq-rcw, qt5virtualkeyboard, + rhash, rtl_433, ruby, sqlite, swupdate, tekui, tiff, tinyxml, + tor, wayland, wireshark, wpa_supplicant, + xdriver_xf86-video-imx-viv, xserver_xorg-server, xxhash, zip + + Issues resolved (http://bugs.uclibc.org): + + #14971: Kernel 3.10.108 fail to build in Buildroot 2022.08-rc1 + #14996: Too many directories in BR2_EXTERNAL causes hang during make + #15161: kernel can't support SUBDIR + #15196: Setting BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE does not work + #15226: lsblk: not found + +2022.02.8, released December 10th, 2022 + + Important / security related fixes. + + Updated/fixed packages: asterisk, dash, dovecot, + dovecot-pigeonhole, edk2, edk2-platforms, elf2flt, exim, + freerdp, gcc, gdb, git, gnupg2, heimdal, iwd, kodi, + libarchive, libmdbx, libkrb5, libksba, libopenssl, memcached, + netsnmp, nginx, openpgm, optee-client, python3, rsync, + rtl8723bu, samba4, sdl, sdl2, swupdate, sysstat, systemd, + uboot, vim, vlc, xen, xterm + + Issues resolved (http://bugs.uclibc.org): + + #15131: Target GDB uses internal zlib + +2022.02.7, released November 17th, 2022 + + Important / security related fixes. + + Defconfig: Pine64: Change to mainline ATF to fix build + issue, Zynqmp zcu102 / zcu106: Fix pmufw reset issue + + Updated/fixed packages: arm-trusted-firmware, bind, botan, + collectd, darkhttpd, dbus, dhcp, dnsmasq, docker-cli, + docker-engine, exfatprogs, expat, f2fs-tools, faad2, ffmpeg, + freerdp, gnutls, go, gpsd, grub2, gsl, gst-omx, gst1-devtools, + gst1-libav, gst1-plugins-bad, gst1-plugins-base, + gst1-plugins-good, gst1-plugins-ugly, gst1-python, + gst1-rtsp-server, gst1-vaapi, gstreamer1, + gstreamer1-editing-services, hdparm, hostapd, imagemagick, + iwd, jack2, libbpf, libcurl, libfribi, libidn2, libinput, + libmdbx, libopenssl, libosip2, libpng, libtasn1, + libtorrent-rasterbar, libuhttpd, libvncserver, libxml2, linux, + linux-tools, lldpd, lrzip, lz4, matchbox-startup-monitor, + msmtp, multipath-tools, mupdf, musl, mv-ddr-marvell, mxml, + nodejs, ntfs-3g, numactl, openvmtools, oracle-mysql, + paho-mqtt-c, perl-net-ssleay, php, pixman, poppler, procps-ng, + python-django, python3, qdecoder, rpi-userland, rsync, + rtl8189es, rtl8189fs, rtl8723bu, rtl8812au-aircrack-ng, + rtl8821au, rtl_433, samba4, shapelib, socat, squid, sqlite, + squashfs, strongswan, sudo, swupdate, timescaledb, u-boot, + uclibc-ng-test, udisks, uftp, uhd, umtprd, vim, wavemon, + wireguard-linux-compat, wolfssl, wpa_supplicant, wpewebkit, + zlib-ng, zsh + + Issues resolved (http://bugs.uclibc.org): + + #15026: package/udisks: install to staging + #15061: Node.js Package fails to build against musl i386 + +2022.02.6, released October 2nd, 2022 + + Important / security related fixes. + + Fixed compatibility issue with make 4.3 and the 'printvars' / + 'show-vars' commands. + + Dependencies: Ensure 'find' and 'xargs' are available on the + build host. + + A large number of typo fixes. + + Defconfigs: Galileo: Fix defconfig syntax, Licheepi zero: Fix + U-Boot dependencies, Bananapi m1, Olimx a20 olinuxino lime + 1+2, a33 olinuxino: Use standard FPU configuration, Pine 64 + sopine, Rockpro 64: Change to mainline ATF to fix build issue. + + Updated/fixed packages: ace, arm-trusted-firmware, + babeltrace2, boost, botan, busybox, clamav, cog, connman, + containerd, cups, dhcpcd, directfb, docker-cli, docker-engine, + edk2, edk2-platforms, elf2flt, expat, ffmpeg, ficl, + freeswitch, freetype, gcc, gdb, git, gnutls, go, + graphicsmagic, grub2, gst1-plugins-bad, gst1-plugins-good, + heirloom-mailx, icu, igh-ethercat, imagemagick, imx-gpu-viv, + jose, jpeg, jquery-ui-themes, kodi, libconfuse, libfreeimage, + libglvnd, libgpg-error, libinput, libmdbx, libsepol, libtirpc, + libupnp, libvirt, libvncserver, libwpe, libxml2, libzlib, + linux, linux-tools, lshw, m4, makedevs, makedumpfile, + mali-driver, mariadb, memcached, mesa3d, minidlna, mosquitto, + mutt, mv-ddr-marvell, ncurses, ne10, netsniff-ng, + networkd-dispatcher, ocrad, opencv4, openocd, openssh, pango, + pcsc-lite, polkit, postgis, postgresql, python-paho-mqtt, + python-pygame, python3, qemu, qlibc, + qoriq-cadence-dp-firmware, qt5xmlpatterns, ranger, rng-tools, + rsync, rsyslog, rtl8189es, rtl8723be, runc, rustc, + sconeserver, sdl2, snort, sox, sqlite, squid, stress-ng, + strongswan, sunxi-mali-utgard-driver, syslinux, syslog-ng, + tcf-agent, tcpreplay, tesseract-ocr, tinyproxy, uacme, + uboot-tools, uclibc, unzip, usbguard, v4l2loopback, vim, + webkitgtk, wolfssl, wpewebkit, xfsprogs, xserver_xorg-server, + xtables-addons, zziplib + + Issues resolved: + + #13216: [Documentation] 2020.02.6 requires GNU find utils + #14796: 64 bit time and seccomp conflict (OpenSSH server crash) + #14951: boost compile error when running make silently + +2022.02.5, released August 31st, 2022 + + Important / security related fixes. + + dependencies: Ensure 'cmp' is available on the build host. + + pkg-utils: The KCONFIG_ENABLE_OPT macro used to enforce a specific + Kconfig option to be enabled (E.G. for kernel options needed by + packages) no longer changes a =m (modular) with =y (built in). + + check-host-rpath: Silence readelf warnings when clang is used + + GCC 10.x updated to 10.4.0 + + Updated/fixed packages: apg, arm-trusted-firmware, assimp, + bayer2rgb-neon, bind, bird, cog, cwiid, diffutils, fluidsynth, + freerdp, gcc, glibc, glslsandbox-player, gdk-pixbuf, gnupg2, + gtest, i2pd, jack2, jquery-validation, jszip, libbsd, libcamera, + libcurl, libest, libiio, libkrb5, libopenssl, libpsl, + luasyslog, lxc, mbedtls, mstpd, mutt, netdata, netsniff-ng, + nodejs, nvidia-driver, openssl, opkg-utils, paho-mqtt-c, + pango, pcsc-lite, perl, pimd, poppler, postgis, powerpc-utils, + pppd, protobuf-c, pulseaudio, python-bottle, python-django, + python-lxml, python3, qt5webkit, rpi-userland, rsyslog, runc, + rustc, sconeserver, sg3_utils, shadowsocks-libev, suricata, + tcpreplay, uacme, uclibc, v4l2loopback,, webkitgtk, wine, + wpewebkit, xdg-dbus-proxy, xserver_xorg-server, zeromq, zfs, + zlib-ng + + Issues resolved (http://bugs.uclibc.org): + + #13796: Problems compiling package gst-plugins-good + #14926: package/nodejs: build for host fails with GTEST errors + +2022.02.4, released July 28th, 2022 + + Important / security related fixes. + + Disable big endian no-mmu on ARM as it is not supported by + elf2flt. + + Tighten dependencies for external Bootlin toolchains to ensure + they can only be selected in compatible configurations. + + Support external toolchains without gdbserver. + + Updated/fixed packages: apache, avahi, bdwgc, bind, bpftool, + cups, darkhttpd, dmalloc, ecryptfs-utils, fxload, ghostscript, + gnutls, gst-omx, gst1-devtools, gst1-libav, gst1-plugins-base, + gst1-plugins-bad, gst1-plugins-good, gst1-plugins-ugly, + gst1-python, gst1-rtsp-server, gst1-vaapi, gstreamer1, + gstreamer1-editing-services, gtest, iptables, keyutils, lcms2, + libabseil-cpp, libcamera, libcurl, libeastl, libgpgme, + libgtk3, libmdbx, libmediaart, libmodsecurity, libnetconf2, + libopenssl, libpjsip, libsamplerate, libsndfile, libtalloc, + logrotate, luajit, nginx, noip, paxtest, php, postgresql, + procrank_linux, pure-ftpd, python-pillow, qdecoder, + rabbitmq-server, rpi-userland, rustc, sofia-sip, systemd, + tcpreplay, tinyproxy, tor, uacme, uboot-tools, vim, watchdogd, + webkitgtk, wireguard-linux-compat, wpa_supplicant, wpewebkit, + zstd + + Issues resolved (http://bugs.uclibc.org): + + #14881: Watchdogd Package missing INSTALL_STAGING + +2022.02.3, released June 19th, 2022 + + Important / security related fixes. + + Infrastructure: Fix building under paths containing regex + characters (E.G. '+') + + Toolchain: Only allow ppc64le variants for which a + glibc/musl/uclibc toolchain is supported. + Mark codescape mti/img mips toolchains as shared library only + (glibc). + + Updated/fixed packages: arm-trusted-firmware, + at91dataflashboot, boinc, dhcp, diffutils, edk2, fbv, gensio, + glibc, go, gtest, iucode-tool, janet, libcec, libcurl, + libfreeimage, libnftnl, libodb-boost, linux, linux-tools, + lttng-modules, mariadb, memcached, mono, mutt, + network-manager, nginx, ntfs-3g, ogre, openjpeg, openvpn, + qemu, qpid-proton, qt5webengine, rauc, rockchip-mali, rsyslog, + ruby, runc, rustc, samba4, strace, tiff, uclibc, unrar, vim, + webkitgtk, wpewebkit, xdriver_xf86-video-amdgpu, + xdriver_xf86-video-ati, zlib-ng + + New packages: qt5webengine-chromium, + qt5webengine-chromium-catapult + + Issues resolved (http://bugs.uclibc.org): + + #14766: package dhcp on buildroot 2022.02.1 failed + #14821: Samba server is failing to compile + #14826: make qemu_x86_64_defconfig stopped working + +2022.02.2, released May 29th, 2022 + + Important / security related fixes. + + Archictures: Drop sh2a, correct x86 Bonnell variant + + Toolchain: Bump GCC 11.x to 11.3, correct pre-installed + external toolchain logic when toolchain is available in path. + + Rework OCI filesystem entrypoint/command logic to handle + command arguments + + Defconfigs: Update Zynqmp zcu102/106 to final 2022.1 release, + fix zcu106 PLL config + + Updated/fixed packages: adwaita-icon-theme, afboot-stm32, + aircrack-ng, alchemy, alsa-lib, arptables, assimp, asterisk, + aubio, avrdude, azure-iot-sdk-c, batman-adv, binutils, + bpftool, brotli, cairo, cifs-utils, clamav, cryptodev-linux, + dhcp, diffutils, dmalloc, duktape, e2fsprogs, elf2flt, espeak, + expat, ffmpeg, fluidsynth, freerdp, gcc, git, glorytun, + glslsandbox-player, gnutls, go, gst1-imx, gst1-plugins-good, + gzip, imagemagick, janus-gateway, keepalived, kompexsqlite, + kvm-unit-tests, libarchive, libcgi, libcurl, libevdev, + libeXosip2, libhtp, libinput, libkcapi, libkrb5, libks, + libmdbx, libmnl, libnpupnp, libnspr, libopenssl, liboping, + libpjsip, libpri, libselinux, libsigsegv, libv4l, + libwebsockets, libxml2, linux, linux-tools, ltp-testsuite, + luajit, lvm2, mali-driver, mariadb, mc, minizip, mpd, mutt, + netatalk, netsurf, network-manager, nodejs, numactl, nut, + omniorb, openbox, opencv4, openjdk, openjdk-bin, openocd, + pamtester, pango, pcre2, php, php-apcu, pinentry, pixman, + polkit, postgis, postgresql, pure-ftpd, python-aenum, + python-avro, python-django, python-pillow, python-simplejson, + python-urllib3, python-zopfli, python3, qemu, qpdf, quazip, + redis, rockchip-mali, rsync, rt-tests, rust, rtl8818eu, + rtl8189es, rtl8189fs, rtl_433, sam-ba, samba4, sdl2_ttf, + shadowsocks-libev, shim, subversion, sun20i-d1-spl, suricata, + systemd, tftpd, trinity, tvheadend, udev, uftrace, + urandom-scripts, usb_modeswitch, valgrind, vde2, vim, + wireplumber, wolfssl, wpa_supplicant, xlib_libXfont2, xz, + zlib, zlog + + Issues resolved (http://bugs.uclibc.org): + + #14751: LVM2 Outdated Link + +2022.02.1, released April 11th, 2022 + + Important / security related fixes. + + Graphs: Also generate a build time timeline graph (for top + level parallel builds). + + scripts/pkg-stats: Optimize memory consumption for CPE parsing + + Fix compatibility issue with the fakeroot script logic and + modern versions of dash. + + Change git:// URLs pointing to Github to https://, now that + Github has turned off support for git:// + + Updated/fixed packages: ace, apache, apr, apr-util, belr, + bind, bluez5_utils, boinc, bpftool, busybox, cloop, cog, + containerd, cppcms, dav1d, dhcp, dieharder, dnsmasq, + docker-cli, docker-engine, efl, ell, fakeroot, flac, + fluidsynth, gdk-pixbuf, glib-networking, gnutls, gst-omx, + gst1-devtools, gst1-libav, gst1-plugins-bad, + gst1-plugins-base, gst1-plugins-good, gst1-plugins-ugly, + gst1-python, gst1-rtsp-server, gst1-vaapi, gstreamer1, + gstreamer1-editing-services, haproxy, htop, intel-gmmlib, + ipmiutil, iwd, jack1, jack2, lftp, libabseil-cpp, libbluray, + libcamera-apps, libcoap, libcurl, libest, libgee, libglib2, + libgtk3, libiec61850, libkrb5, libminiupnpc, libodb, + libodb-boost, libopenssl, libp11, libpsl, libressl, librstp, + librtlsdr, liburing, libyang, libzlib, luasec, lxc, matio, + meson, minidlna, minizip, mpd, mtools, netatalk, nbd, odb, + openblas, openssh, openvpn, optee-os, opus, paho-mqtt-c, + pango, php, pipewire, pkcs11-helper, postgresql, ppp, + protozero, python-aioconsole, python-avro, python-brotli, + python-greenlet, python-paramiko, python-pillow, + python-rpi-gpio, python-treq, python-twisted, python-ujson, + python-weasyprint, qt5base, qt5wayland, raptor, rpi-firmware, + rpi-userland, rtl_433, runc, rust, rygel, samba4, + shairport-sync, spice, spidev_test, stunnel, systemd, + timescaledb, trace-cmd, trousers, ts4900-fpga, tvheadend, + udpcast, unbound, upower, urandom-scripts, usbguard, valgrind, + valijson, vim, wavpack, wget, wireplumber, wireshark, woff2, + xmrig, zabbix, zlib-ng, zynaddsubfx, zziplib + + Issues resolved (http://bugs.uclibc.org): + + #13971: ip6tables-nft build does not include MASQUERADE target.. + #14651: OpenSSH 8.9p1 compiler error under ARM + #14656: Adding dependencies from an external tree does not work + #14661: Fakeroot script relies on bash-isms, does not work .. + #14686: genimage.cfg have a hard-coded .ext4 extension which.. + #14701: Multiple unresolved symbols while building kernel .. + #14711: nodjs build problem missing bzip + #14731: BR2_PACKAGE_IOSTAT + +2022.02, released March 8th, 2022 + + Various fixes. + + Fixes to cargo and golang packaging infrastructure. + + Defconfigs: OrangePi RK3399: Fix genimage format + + Updated/fixed packages: azure-iot-sdk-c, bpftool, cog, + directfb, directfb-examples, dnsmasq, docker-engine, expat, + freerdp, frr, gdb, ghostscript, glib-networking, go, haproxy, + hostapd, kf5-extra-cmake-modules, kf5-kcoreaddons, + kf5-modemmanager-qt, kf5-networkmanager-qt, libcamera-apps, + libgee, libglfw, librstp, libtorrent, libvirt, libxslt, linux, + mariadb, oprofile, osm2pgsql, pulseview, python-cryptography, + python-gnupg, python-treq, qt5base, qt5webkit, rauc, re2, + rygel, safeclib, sconeserver, seatd, sord, upmpdcli, + util-linux, weston, wpa_supplicant, xdriver_xf86-video-mach64, + xdriver_xf86-video-nouveau, xdriver_xf86-video-qxl, + xscreensaver, zabbix + + New packages: gdk-pixbuf-xlib + + Removed packages: python-pycli + + Issues resolved (http://bugs.uclibc.org): + + #13126: make fails - bzip2-1.0.6.tar.gz and DirectFB-1.7.7.tar.. + #14611: 2022.02-rc2: Build of BR2_x86_64 with BR2_LINUX_KERNEL_.. + #14631: host-go-bootstrap: go not being built for package in .. + #14636: azure-iot-sdk-c: Installed headers do not compile + #14641: oprofile can not find the events files + +2022.02-rc3, released February 28th, 2022 + + Fixes all over the tree. + + Defconfigs: Xilinx zynqmp zcu102/zcu106: Fix U-Boot DTS config + + Updated/fixed packages: bluez5_utils, bpftool, dbus, exempi, + flac, freerdp, frr, gnutls, libpjsip, libxml2, mariadb, + openssh, python-twisted, qt5webkit, samba4, vim, weston, + wireshark, wolfssl, xdg-dbus-proxy, xterm, + +2022.02-rc2, released February 20th, 2022 + + Fixes all over the tree. + + Defconfigs: Friendlyarm Nanopi R2S: Fix U-Boot build, Kontron + BL i.MX8M Mini: Fix U-Boot build, PC Engines APU2: Fix Linux + build, ROC-RK3399-PC: Bump rootfs size to fix build + + Updated/fixed packages: apache, apparmor, apr-util, arp-scan, + binutils, bluez5_utils, connman, cryptsetup, dnsmasq, + dovecot-pigeonhole, expat, gdk-pixbuf, gst1-plugins-base, + guile, keepalived, kodi, libbpf, libglvnd, libgsasl, libiconv, + librsvg, libuhttpd, libusb, libv4l, luasyslog, mongrel2, neon, + pcre, perl-netaddr-ip, php, psmisc, python-ipython, + python-pycli, python-pygame, python-regex, python-twisted, + qt5location, qt5webkit, resiprocate, rygel, safeclib, + sdl2_ttf, socketcand, strongswan, sudo, systemd, toolchain, + urg, webkitgtk, wireless-regdb, wpewebkit, + xdriver_xf86-video-{ati,mach64,mga,r128,savage,tdfx}, xz, zfs, + zsh + +2022.02-rc1, released February 13th, 2022 + + Numerous package updates and many (80) new packages. + + Toolchain: + - glibc: Optional support for compatibility shims for running + on older kernels than what glibc has been built against + - uClibc: Use uClibc-ng 1.0.40 + - External toolchains: Update Bootlin toolchains to 2021.11-1 + version + + Python 2.7 and python 2.x specific packages removed as python + 2.x is EOL since April 2020. Likewise a number of python3 + specific host packages has been renamed (host-python-foo + instead of host-python3-foo) now host-python is always python + 3.x. + + Cargo (Rust) package infrastructure added. Vendoring support + added to golang package infrastructure. + + New defconfigs: FriendlyARM NanoPi R2S, Kontron BL i.MX8M + Mini, Microchip Sama7g7ek, Olimex STMP157 OlinuXino LIME2, + QEMU PPC Bamboo, PPC64 PowerNV, Raspberry Pi Zero 2W, Spike + Riscv64, Xilinx zcu102 + + Removed defconfigs: Synopsys arch38 VDK, aarch64 VDK + + New packages: ace, alchemy, alfred, bat, bento4, bmx7, + bpftool, brcmfmac_sdio-firmware-rpi, cfm, cups-pk-helper, + davinci-bootcount, dbus-cxx, embiggen-disk, freeipmi, + gocryptfs, kodi-pvr-plutotv, kodi-pvr-waipu, ksmbd-tools, + libcamera-apps, libest, libexecinfo, libfutils, libglvnd, + libks, libmd, libopenaptx, libpeas, libshdata, liburing, lilv, + lua-argon2, lua-cffi, lua-inotify, lv2, mali-driver, + moby-buildkit, modsecurity2, networkd-dispatcher, pahole, + php-apcu, php-lua, php-pam, python-argon2-cffi-bindings, + python-cssselect2, python-distro, python-fonttools, + python-gnupg, python-installer, python-memory-profiler, + python-mpd2, python-pep517, python-pydyf, python-pypa-build, + python-pyphen, python-tinycss2, python-tomli, + python-weasyprint, python-zopfli, qoriq-cadence-dp-firmware, + riscv-isa-sim, rockchip-mali, rpi-rgb-led-matrix, sdbus-cpp, + sentry-cli, serd, simple-mail, sord, sratom, + sunxi-mali-utgard, sunxi-mali-utgard-driver, tinifier, ulog, + vulkan-headers, xlib_libxcvt, zabbix, zchunk, zynaddsubfx + + Removed packages: gstreamer1-mm, python, python-backports-abc, + python-backports-functools-lru-cache, + python-backports-shutil-get-terminal-size, + python-backports-ssl-match-hostname, python-configobj, + python-dialog, python-enum, python-enum34, python-functools32, + python-futures, python-id3, python-ipaddr, python-ipaddress, + python-mad, python-nfc, python-pam, python-pathlib2, + python-pycap, python-pyro, python-singledispatch, + python-subprocess32, python-typing, python-yieldfrom, + qt5webkit-examples, rpi-bt-firmware, rpi-wifi-firmware, + sunxi-mali-mainline, sunxi-mali-mainline-driver, zynq-boot-bin + + Issues resolved (http://bugs.uclibc.org): + + #12271: python-iptables runtime dependencies + #13436: PPP 2.4.9 is out + #14351: needs to mount sysfs before mount -a + #14451: nodejs won't build on Fedora 35 + #14471: alsa_utils wrong deployment + #14501: lttng-modules v2.11 package fails to build + #14531: Package EFL - build error + +2021.11.3, released March 24th, 2022 + + Important / security related fixes. + + Updated/fixed packages: apache, azure-iot-sdk-c, boinc, dbus, + directfb, docker-engine, exempi, expat, flac, gdb, gdk-pixbuf, + gnutls, go, haproxy, libcurl, libiec61850, libminiupnpc, + libodb, libodb-boost, libopenssl, libpjsip, libressl, librsvg, + libsrtp, libvirt, libxml2, libxslt, lxc, mariadb, minidlna, + odb, openblas, openvpn, oprofile, php, pppd, python-ipython, + python-twisted, raptor, rpi-firmware, samba4, seatd, + timescaledb, usbguard, util-linux, vim, wavpack, + wireless-regdb, wireplumber, wireshark, wolfssl, xscreensaver, + xterm, zsh + + New packages: gdk-pixbuf-xlib + + Issues resolved (http://bugs.uclibc.org): + + #13126: make fails - bzip2-1.0.6.tar.gz and DirectFB-1.7.7.tar.. + #14636: azure-iot-sdk-c: Installed headers do not compile + #14641: oprofile can not find the events files + +2021.11.2, released February 28th, 2022 + + Important / security related fixes. + + Defconfigs: Andes ae3xx, Intel galileo: Fix build with host + gcc >= 10, ROC-RK3399-PC: Bump rootfs size to fix build issue. + + Add conditional patching logic to fix build issues for older + U-Boot / Linux kernel versions when built with a host gcc >= + 10. + + Updated/fixed packages: apitrace, binutils, casync, cgilua, + connman, expat, gauche, gdb, gensio, glibc, go, gst-omx, + gst1-devtools, gst1-libav, gst1-plugins-bad, + gst1-plugins-base, gst1-plugins-good, gst1-plugins-ugly, + gst1-python, gst1-rtsp-server, gst1-vaapi, gstreamer1, + gstreamer1-editing-services, kf5-extra-cmake-modules, kodi, + libarchive, linux, lm-sensors, localedef, log4cxx, mpd, + nfs-utils, php, pistache, pkcs11-helper, prosody, + python-django, python-pyzmq, python-regex, + python-sqliteschema, resiprocate, rtl8723bu, thermald, tiff, + tor, util-linux, vim, xen + +2021.11.1, released January 29th, 2022 + + Important / security related fixes. + + check-package: Improve variable override check + + pkg-stats: List CVEs where the version info cannot be parsed + as unsure rather than completely ignoring them. + + Defconfigs: Beaglebone: Support BeagleBone black wireless, + stm32f469_xip_disco: Fix kernel boot + + Updated/fixed packages: alsa-utils, apache, binutils, cage, + capnproto, civetweb, clamav, collectd, connman, containerd, + coreutils, dav1d, docker-cli, docker-engine, erlang, + erlang-rebar, expat, findutils, flare-engine, flare-game, + font-awesome, freeswitch, gcc, ghostscript, glibc, gnuchess, + go, grpc, gst1-interpipe, gst1-rtsp-server, gupnp-tools, + hackrf, icu, imagemagick, janus-gateway, json-for-modern-cpp, + keepalived, lapack, libdbi, libiio, libjpeg, libmbim, libnss, + libopenssl, libpjsip, libqmi, liburiparser, libvirt, + linux-pam, lxc, mbedtls, mender, mongodb, mpd-mpc, mutt, + nodejs, openblas, pcre2, php, pipewire, polkit, privoxy, + prosody, python-charset-normalizer, python-django, + python-idna, python-lxml, python-pyqt5, python-requests, + python-urllib3, python3, qt5base, qt5location, rhash, + rng-tools, ruby, runc, rustc, samba4, sofia-sip, targetcli-fb, + tcpreplay, tinyxml, tor, tpm2-tss, util-linux-libs, vim, vlc, + wireshark, xapp_xauth, xapp_xinput-calibrator, xen, xenomai, + xlib_libX11, xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #14451: nodejs won't build on Fedora 35 + #14471: alsa_utils wrong deployment + +2021.11, released December 5th, 2021 + + Various fixes. + + Defconfigs: Grinn chiliboard/liteboard, PC x86-64 bios: Fix + build + + Updated/fixed packages: apr, coreutils, diffutils, e2fsprogs, + exfat, freeswitch, gnupg, grub2, gstreamer1, guile, heimdal, + hiawatha, hplip, icu, janus-gateway, + kodi-screensaver-asterwave, kodi-screensaver-cpblobs, + kodi-screensaver-matrixtrails, libatomic_ops, libbson, libffi, + libgdiplus, libgee, libhtp, libite, libnspr, libnss, + libunwind, lynx, mender-grubenv, mkpasswd, motion, mxml, + netdata, qemu, samba4, speex, stress-ng, tinydtls, unixodbc, + unrar, util-linux, util-linux-libs, watchdogd, wireshark + + Issues resolved (http://bugs.uclibc.org): + + #14351: needs to mount sysfs before mount -a + #14411: 2021.11-rc2: Samba doesn't compile + +2021.11-rc3, released November 30th, 2021 + + Fixes all over the tree. + + Defconfigs: Nitrogen8mp: Fix Linux build, Zynqmp-zxu106: Fix + ATF build + + Updated/fixed packages: asterisk, automake, gdb, glorytun, + gmp, hackrf, libgee, libglib2, libmodsecurity, libosmium, + libressl, lighttpd, linux, micropython, mosquitto, mtd, + nfs-utils, nss-myhostname, pcre, php, poco, pure-ftpd, + python-cycler, qemu, qdecoder, smack, smcroute, spidev_test, + strace, syslinux, toolchain, uboot, uhd, vim, websocketpp, + wireshark, xcursor-transparent-theme, xscreensaver, + xtables-addons + + Issues resolved (http://bugs.uclibc.org): + + #14346: BR2_PACKAGE_NFS_UTILS_RPC_NFSD does not patch CONFIG_NFSD.. + +2021.11-rc2, released November 19th, 2021 + + Fixes all over the tree. + + Coding style fixes for a large number of board genimage + configuration files for clarity and consistency. + + Defconfigs: Acmesystems Aria/Arietta g25, Armadeus + apf28/apf51, beagleboneai, Olimx a64, rock64, sheevaplug: Fix + build with hostcc >= 10, Nezha: Correct U-Boot dependencies + + Updated/fixed packages: alsa-lib, apparmor, binutils, + bluez5_utils, botan, diffutils, firmware-utils, gdb, glmark2, + glog, gpu-amd-bin-mx51, gst1-interpipe, imx-vpuwrap, iperf, + isl, janet, libdnet, libglib2, libhtp, liburcu, log4cxx, + luajit, luvi, meson, mksh, mongodb, mosquitto, mpd, mupdf, + opencv4, oracle-mysql, pipewire, postgresql, python-aiohttp, + python-pudb, python-ujson, qhull, samba4, seatd, sg3_utils, + suricata, tpm2-tss, uboot, vim, xserver_xorg-server + + New packages: pipewire-media-session + + Issues resolved (http://bugs.uclibc.org): + + 14311: Cannot compile dahdi (part of Asterisk) for x86 (P1mmx) + +2021.11-rc1, released November 8th, 2021 + + Numerous package updates. Notable updates including numerous + Python modules, Kodi add-ons, nodejs, OpenJDK. + + Toolchain: + - glibc update to 2.34 + - support for gdb 11.x added, gdb 10.x now the default + - external toolchains provided by ARM updated + - remove support for internal toolchain on the CSKY + architecture, as it was broken and unmaintained + + Many packages updated to enable the appropriate SELinux + refpolicy module when SELinux support is enabled. + + Support was added in the test-pkg package testing utility for + using Gitlab CI to run the builds. + + New libgbm virtual package to better support OpenGL + implementations that provide a libgbm library. + + Bootloaders/firmware: grub2 extended to be able to support + multiple platforms in the same build. + + Filesystems: + - new OCI filesystem type, to build container images + compatible with the Open Container Initiative standard + - support for hybrid ISO9660 images added, which work on + legacy and EFI BIOS machines + + New defconfigs: Allwinner nezha, stm32mp157c_odyssey + + Removed defconfigs: qemu_csky + + New packages: dtbocfg, firmware-utils, gstd, libdbi, + libdbi-drivers, libteam, lua-augeas, mstpd, php-pecl-dbus, + python-aioprocessing, python-bidict, + python-charset-normalizer, python-flask-expects-json, + python-git, python-pyndiff, python-rsa, + python-unitest-xml-reporting, python-xmljson, + python3-cryptography, python3-pip, qt5opcua, rwmem, + sloci-image, softhsm2, sun20i-d1-spl, uqmi, vuejs-router, + watchdogd, wireplumber + + Removed packages: canfestival, python-meld3 + + Work toward the removal of python 2 has progressed: many + python modules and packages have been updated to a version + supporting python 3. + + Issues resolved (http://bugs.uclibc.org): + + #14271: compilation error with rsync command for permission + #14276: Unable to get login prompt + #14196: when using raspberrypicm4io_64_defconfig, make fails + with mkfs.ext4: No such file or directory while trying + to determine filesystem size + +2021.08.3, released December 13th, 2021 + + Important / security related fixes. + + Defconfigs: Various fixes for building with gcc >= 10 host or + target compilers. + + Updated/fixed packages: alsa-lib, apparmor, apr, asterisk, + binutils, bluez5_utils, coreutils, e2fsprogs, exfat, + freeswitch, gdb, glmark2, glog, glorytun, gmp, + gpu-amd-bin-mx51, gst1-interpipe, gstreamer1, guile, gupnp, + hackrf, heimdal, hiawatha, hplip, icu, imx-vpuwrap, isl, + janus-gateway, libatomic_ops, libbson, libdnet, libffi, + libgdiplus, libgee, libglib2, libhtp, libmodsecurity, libnspr, + libnss, libosmium, libunwind, linux, lynx, meson, micropython, + mkpasswd, mksh, mosquitto, motion, mupdf, mxml, netdata, + nfs-utils, opencv4, oracle-mysql, pcre, php, postgresql, + pure-ftpd, python-cycler, qdecoder, rcw-smarc-sal28, samba4, + smack, speex, stress-ng, suricata, syslinux, uboot, unixodbc, + unrar, vim, websocketpp, wireshark + + Issues resolved (http://bugs.uclibc.org): + + #14346: BR2_PACKAGE_NFS_UTILS_RPC_NFSD does not patch CONFIG_NFSD.. + +2021.08.2, released November 10th, 2021 + + Important / security related fixes. + + Updated/fixed packages: asterisk, audit, bind, bitcoin, + containerd, cryptsetup, dahdi-linux, dbus-python, dfu-util, + docker-cli, docker-engine, earlyoom, edk2-platforms, exiv2, + ffmpeg, freerdp, gdb, gensio, gnupg2, go, gpsd, + gst1-plugins-bad, gst1-plugins-ugly, gst1-vaapi, gtest, + hiredis, lftp, libps1, libva, libva-utils, lightning, + log4cplus, lrzip, netdata, nodejs, olsr, openjdk, openjdk-bin, + pango, php, python3-cffi, qemu, refpolicy, rng-tools, samba4, + snort, strongswan, sunxi-mali-mainline-driver, suricata, + systemd, tor, vim, weston, wf111, wireguard-linux-compat, + xerces + + Issues resolved (http://bugs.uclibc.org): + + #14311: Cannot compile dahdi (part of Asterisk) for x86 (P1mmx) + +2021.08.1, released October 11, 2021 + + Important / security related fixes. + + gdbinit: Mark the sysroot as a "safe path" before configuring + it, so pretty printers work correctly without having to pass + -ix to gdb + + Updated/fixed packages: alsa-lib, apache, + arm-trusted-firmware, atftp, bind, botan, cog, containerd, + cryptopp, docker-cli, dash, dc3dd, docker-engine, dovecot, + environment-setup, erlang, fetchmail, ffmpeg, fio, gcc, gd, + gdb, ghostscript, gnuradio, gnutils, go, + gobject-introspection, google-breakpad, gst-omx, + gst1-devtools, gst1-interpipe, gst1-libav, gst1-plugins-bad, + gst1-plugins-base, gst1-plugins-good, gst1-plugins-ugly, + gst1-python, gst1-rtsp-server, gst1-vaapi, gstreamer1, + gstreamer1-editing-services, gupnp, haproxy, imlib2, kodi, + kodi-pvr-octonet, kodi-visualisation-fishbmc, libcurl, + libexif, libgcrypt, libglib2, libkrb5, libressl, librsvg, + libsndfile, libssh, libvirt, libxcrypt, libyang, links, lvm2, + lynx, lxc, mc, mesa3d, micropython, minicom, mono, mosquitto, + mtr, mupdf, mv-ddr-marvell, net-tools, nginx-dav-ext, nmap, + nodejs, ntfs-3g, openjdk, openjdk-bin, openldap, openssh, + pcre2, php, php-gnupg, pipewire, postgis, python-aioconsole, + python-cbor2, python-cffi, python-cython, python-dateutil, + python-django, python-pillow, python-pip, python-texttable, + python-urllib3, python-webob, qemu, qt5location, redis, + refpolicy, ripgrep, ruby, runc, sispmctl, sox, squid, + strongswan, supervisor, swupdate, syslinux, systemd, tinycbor, + trace-cmd, uboot-tools, uclibc, udisks, uhd, vim, vsftpd, + wavemon, webkitgtk, wget, wireless-regdb, wpewebkit, + xapp_xrdb, xapp_xwd, xen, xlib_libXfont2, xlib_libXft, + xserver_xorg-server, zip + + Issues resolved (http://bugs.uclibc.org): + + #14206: Kodi: even when not enabled, forcefully selects libevdev.. + #14211: libffi-3.3.tar.gz repacked + #14221: mv-ddr-marvell fails license validation + +2021.08, released September 4th, 2021 + + Various fixes. + + Updated/fixed packages: gstreamer1-mm, netsniff-ng, nginx, + openmpi, python-pyudev, python3, qt5base, wlroots, xvisor + +2021.08-rc3, released August 31st, 2021 + + Fixes all over the tree. + + Toolchain: Disable fortify support for Microblaze as it is not + currently working. + + Defconfigs: Acmesystems aria/ariette g25: Fix build issue + after at91bootstrap bump, BeagleV: Correct kernel headers + version, PC x86-64: Bump kernel to 4.19.204 to fix build issue + with GCC 10.x. + + Updated/fixed packages: alsa-utils, at91bootstrap3, belle-sip, + bullet, c-ares, cjson, coreutils, cpio, eigen, fetchmail, gdb, + haproxy, heirloom-mailx, ipmiutil, kvm-unit-tests, libarchive, + libffi, libmodsecurity, libopenssl, libressl, libshout, + libvirt, linux-pam, lmbench, localedef, lua-lunix, mesa3d, + mpv, mtd, nodejs, nvidia-driver, openvmtools, php, polkit, + python-requests, python3-requests, rust-bin, rustc, samba4, + sdl2, snort3, ushare, xen + + Removed packages: libmcrypt, mcrypt, sentry-cli + +2021.08-rc2, released August 18th, 2021 + + Fixes all over the tree. + + Defconfigs: Acmesystems acqua a5: Bump at91bootstrap version + to fix build issue with binutils >= 2.35, Microchip sam9x60ek + mmc_dev: Add missing toolchain/system options, sama5d2-icp + mmc: Correct at91bootstrap options + + Updated/fixed packages: arm-trusted-firmware, at91bootstrap3, + azure-iot-sdk-c, bluez5_utils, bullet, busybox, cegui, efl, + erlang, ffmpeg, flatbuffers, fontconfig, gcc, gd, glibc, go, + gobject-introspection, gpsd, guile, harfbuzz, iozone, iputils, + jszip, libargtable2, libbpf, libebml, libepoxy, libesmtp, + libfuse3, libgeos, libnss, libodb-boost, libodb-mysql, + libodb-pgsql, libqmi, libqrtr-glib, libuhttpd, libuwsc, + libvirt, ltp-testsuite, luaossl, mongodb, mpd, mupdf, mutt, + network-manager, nginx-naxsi, nodejs, ogre, openzwave, + optee-os, osm2pgsql, pdbg, perl-net-ssh2, php, pipewire, + pistache, pixman, poke, polkit, poppler, postgresql, postkit, + prelink-cross, prosody, protobuf, pulseview, + python-cryptography, python-keyring, python-matplotlib, + python-pymupdf, python-pyopenssl, python-secretstorage, + python-treq, python-txtorcon, python3, qemu, qpdf, qt5base, + refpolicy, ruby, rust-bin, s390-tools, sconeserver, seatd, + shairport-sync, sox, sqlite, sylpheed, sysdig, syslog-ng, + system-config-printer, tar, terminology, tor, tpm2-tools, uhd, + unbound, usbguard, wireshark, xen, xenomai, xlib_libxshmfence, + zstd + + New packages: desktop-file-utils + + Issues resolved (http://bugs.uclibc.org): + + #13586: grub failure with BR2_OPTIMIZE_3 + #13671: openSSH server closes connection before authentication.. + +2021.08-rc1, released August 3rd, 2021 + + Numerous package updates. + + Toolchain: + + - add support for gcc 11.x, gcc 10.x is now the default, gcc + 9.x updated to 9.4.0, removed gcc 8.x support except for + PowerPC SPE + + - add support for binutils 2.37, binutils 2.36.x is now the + default, binutils 2.34 removed. + + - glibc updated to 2.33 + + - gdb enabled on NIOS II, gdbserver enabled on RISC-V. + + Bootloaders/firmware: support for building the EDK II UEFI + firmware, support for building AT91Bootstrap 4.x. + + New BR2_ENABLE_RUNTIME_DEBUG option, that controls whether + packages should be compiled with runtime debugging + information (which is different than debugging symbols). + + Many features of the bluez5_utils package have been made + optional, and default to disabled. Users of bluez5_utils are + encouraged to review their configuration. + + Many packages (over 70) updated to enable the appropriate + SELinux refpolicy module when SELinux support is enabled. + + Many packages updated to select the appropriate OpenSSL + features after many OpenSSL ciphers/features have been made + optional. + + New defconfigs: kontron_pitx_imx8m, microchip_sama5d2_icp, + qemu_aarch64_sbsa, raspberrypicm4io, raspberrypicm4io_64, + terasic_de10nano_cyclone5, uevm5432. + + New packages: alsa-plugins, apg, bmap-tools, daq3, edk2, + edk2-platforms, gumbo-parser, libbpf, libosmium, libpsl, + libqb, libtalloc, libvirt, lua-linux, lua-zlib, mupdf, + opencv4, osm2pgsql, poke, python-augeas, python-dbus-next, + python-pymupdf, rtl_433, rtl8812au-aircrack-ng, seatd, snort3, + system-config-printer, usbguard, xml-security-c, xmrig. + + Removed packages: clapack, libsoil. + + Issues resolved (http://bugs.uclibc.org): + + #13326: regarding dtc error in buildroot source code + #13661: host-python2 build fails on aarch64 + #13836: package build failure when target install set to no on + pkg-generic pkg types + #13846: BR2_PACKAGE_LVM2_STANDARD_INSTALL should be default to + y as before + +2021.05.3, released October 11, 2021 + + Important / security related fixes. + + gdbinit: Mark the sysroot as a "safe path" before configuring + it, so pretty printers work correctly without having to pass + -ix to gdb + + Updated/fixed packages: alsa-lib, apache, + arm-trusted-firmware, atftp, bind, botan, containerd, + cryptopp, dash, dc3dd, docker-cli, docker-engine, dovecot, + erlang, fetchmail, ffmpeg, gdb, ghostscript, go, gst-omx, + gst1-devtools, gst1-interpipe, gst1-libav, gst1-plugins-bad, + gst1-plugins-base, gst1-plugins-good, gst1-plugins-ugly, + gst1-python, gst1-rtsp-server, gst1-vaapi, gstreamer1, + gstreamer1-editing-services, kodi, kodi-pvr-octonet, + kodi-visualisation-fishbmc, libcurl, libkrb5, libressl, + libsndfile, libxcrypt, libyang, lxc, lynx, mesa3d, + micropython, minicom, mono, mtr, mv-ddr-marvell, net-tools, + nmap, nodejs, ntfs-3g, openjdk, openjdk-bin, openldap, + openssh, pcre2, php, python-aioconsole, python-cffi, + python-dateutil, python-django, python-pip, python-texttable, + python-urllib, python-webob, qt5location, redis, refpolicy, + ripgrep, runc, sispmctl, squid, strongswan, supervisor, + syslinux, tinycbor, trace-cmd, uboot-tools, uclibc, wavemon, + wget, wireless-regdb, xen, xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #14206: Kodi: even when not enabled, forcefully selects libevdev.. + #14211: libffi-3.3.tar.gz repacked + #14221: mv-ddr-marvell fails license validation + +2021.05.2, released September 15th, 2021 + + Important / security related fixes. + + Toolchain: Disable fortify support for Microblaze as it is not + currently working. + + Updated/fixed packages: alsa-utils, arm-trusted-firmware, + bayer2rgb-neon, belle-sip, bullet, busybox, c-ares, cjson, + coreutils, cpio, eigen, environment-setup, fetchmail, ffmpeg, + fontconfig, gd, gdb, gnuradio, gnutls, go, haproxy, ipmiutil, + iputils, jszip, kvm-unit-tests, libarchive, libargtable2, + libexif, libgcrypt, libmodsecurity, libopenssl, librsvg, + libshout, libssh, libxcrypt, linux, linux-pam, localedef, mc, + mesa3d, mosquitto, netsniff-ng, nginx, nodejs, ogre, openjdk, + openmpi, openvmtools, perl-net-ssh2, php, pipewire, + postgresql, prelink-cross, prosody, protobuf, python-keyring, + python-matplotlib, python-pillow, python-pyudev, + python-secretstorage, python3, qt5base, samba4, sdl2, sox, + swupdate, sylpheed, tar, terminology, tor, uboot-tools, uhd, + unbound, ushare, vim, wlroots, xapp_xrdb, xapp_xwd, xen, + xenomai, xlib_libXfont2, xlib_libXft, zip + +2021.05.1, released August 10, 2021 + + Important / security related fixes. + + Toolchain: Disable PIC/PIE for Microblaze (like for NIOS II) + as it is not currently working. + + binutils: fix linker assert failure on OpenRisc, or1k build + issue with gcc < 5 + + gdb: Enable on NIOS II + + utils/scanpypi: Various improvements + + Defconfigs: stm32f469_disco: Fix kernel boot issue, Microchip + sam9x60ek mmc_dev: Add missing toolchain/system options + + Updated/fixed packages: arm-trusted-firmware, apache, audit, + avahi, bind, binutils, bird, bluez5_utils, boinc, busybox, + chrony, clamav, connman, cryptsetup, dnsmasq, docker-cli, + docker-engine, dovecot, dovecot-pigeonhole, e2fsprogs, exiv2, + fail2ban, fb-test-app, feh, fetchmail, ffmpeg, flac, fluxbox, + gawk, gcc, gcr, gdb, gdk-pixbuf, gesftpserver, glibc, go, + gptfdisk, gqrx, granite, grub2, guile, hdparm, heirloom-mailx, + htop, ibrcommon, ibrdtn, ibrdtn-tools, ibrdtnd, + intel-microcode, iodine, irqbalance, keepalived, kexec-tools, + libass, libconfig, libcurl, libfreeimage, libfuse3, libgcrypt, + libgudev, libhtp, libinput, libjson, libgtk3, libkrb5, + libloki, libmodsecurity, libndp, libnetfilter-log, + libnfnetlink, libnice, libodb, libodb-boost, libodb-mysql, + libodb-pgsql, libpcap, libqmi, libqrtr-glib, libressl, + librsvg, libtasn1, libtirpc, libuci, libxmlrpc, + linux-firmware, linuxptp, lrzsz, lvm2, mariadb, mesa3d, + mbedtls, monit, mono, mosquitto, mpd, mpg123, mpv, nbd, + netsnmp, nettle, nmap, nodejs, ntp, openntpd, openpgm, + openswan, pango, pcre2, perl-crypt-openssl-rsa, php, pixman, + postgresql, proxychains-ng, putty, python, + python-dataproperty, python-django, python-pysftp, + python-urllib3, python3, qpdf, redis, ripgrep, rsync, ruby, + samba4, sane-backends, slirp, spice, squid, suricata, tcpdump, + tftpd, thrift, tor, tpm2-tools, trinity, uboot, uboot-tools, + uclibc, vlc, wireless-regdb, wireshark, wolfssl, + xapp_fonttosfnt, xlib_libX11, xlib_libxshmfence, + xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #13586: grub failure with BR2_OPTIMIZE_3 + #13661: host-python2 build fails on aarch64 + #13836: package build failure when target install set to no.. + #13846: BR2_PACKAGE_LVM2_STANDARD_INSTALL should be default to.. + +2021.05, released June 6th, 2021 + + Various fixes. + + Disable PIC/PIE support for Nios2 because of glibc issues + + Defconfigs: Minnowboard max: Fix X11 and mesa3d configuration + + Updated/fixed packages: apache, beaglev-ddrinit, + beaglev-secondboot, capnproto, dc3dd, directfb, efibootmgr, + ffmpeg, gptfdisk, go, gupnp, hostapd, iftop, + intel-mediadriver, libcamera, libcutl, libesmtp, libkcapi, + libraw, lttng-tools, lvm2, mimic, mono-gtksharp3, mpv, + netperf, odb, qt5base, uclibc, uftrace, unscd, vlc, + xdriver_xf86-video-fbturbo + + New packages: python3-cffi, python3-cryptography, python3-pip, + python3-pycparser, python3-six + +2021.05-rc3, released May 31th, 2021 + + Fixes all over the tree. + + meson: Explicitly disable PIE support (b_pie) as it is handled + by the toolchain wrapper. + + Updated/fixed packages: boost, dhcp, expat, gdb, hwloc, imagemagick, + libcurl, libopenh264, llvm, lz4, mpv, nginx, paho-mqtt-c, pifmrds, + pipewire, python-bluezero, python-pillow, qemu, strace, uhd, vlc, + webkitgtk + + Issues resolved (http://bugs.uclibc.org): + + #13821: Wrong url for libnfsidmap package + +2021.05-rc2, released May 22th, 2021 + + Fixes all over the tree. + + support/scripts/gen-missing-cpe: A script to query the list of + CPE IDs for the packages enabled in the current configuration and: + + - for CPE IDs that do not have any matching entry in the CPE + database, it emits a warning + + - for CPE IDs that do have a matching entry, but not with the same + version, it generates a snippet of XML that can be used to propose + an updated version to NIST. + + CPE meta data has been added for a large number of packages + + Updated/fixed packages: assimp, binutils, bitcoin, bullet, + cutelyst, dhcp, dmalloc, docker-engine, ebtables, + environment-setup, flatcc, gcc, gd, gerbera, hostapd, + imx-gpu-viv, intel-microcode, jquery-validation, libdrm, + libgeos, libraw, libtirpc, libxml2, libxslt, live555, lmbench, + localedef, lvm2, mender, mender-grubenv, modem-manager, mutt, + opensbi, openssh, opentyrian, pipewire, postgis, postgresql, + prosody, python-bluezero, python-falcon, redis, rocksdb, + rt-tests, runc, vlc, waylandpp, webkitgtk, wireshark, + wpa_supplicant, wpewebkit, xlib_libX11, xterm + + New packages: jh71xx-tools + + Issues resolved (http://bugs.uclibc.org): + + #13781: isc dhcp-server package don't create file /usr/bin/dhcpd + #13801: toolchainfile.cmake CMAKE_BUILD_TYPE + #13806: Building host-localedef fails on fedora 34/gcc 11 + +2021.05-rc1, released May 12th, 2021 + + Fixes all over the tree and new features. + + FORTIFY_SOURCE, PIC/PIE, RELRO and SSP security hardening + options are now enabled by default. + + Dependencies: Explicitly detect and bail out if PATH contains + spaces or tabs. A number of packages fail to build in such + setups, so explicitly inform about this. + + Infrastructure: Expose CONFIG_DIR to post-build/post-image + scripts, so they can call the Buildroot Makefile in the + correct directory for both in-tree / out-of-tree builds. + + CMake infrastructure: Use CMAKE_EXE_LINKER_FLAGS rather than + CMAKE_CXX_FLAGS to link with libatomic to fix an compatibility + issue with poppler. Bump minimal host cmake version to 3.16 + (from 3.15) to fix a compatibility issue with domoticz. + + Meson: Use correct C++ host compiler (rather than C compiler) + + utils/scanpypi: Explicitly use python3 for compatibility with + packages using python3 syntax in setup.py + + support/download: Fix tarball generation (from git/svn repos) + including symlinks pointing to ./. Fix svn download + for <1.9 clients or repos using CVS-style keywords. + + support/scripts/cve.py: Use the (significantly) faster yajl2 + ijson backend for older (< 2.5) ijson versions rather than the + slow python default, speeding up pkg-stats by ~2x. + + Toolchain: Add logic to work around binutils bug 21464 + (affecting OpenRISC), bug 27597 (affecting Nios II) and drop + the now longer applicable bug 19615 / 20006 handling. + + Python{,3}: Fix byte compiling python files with short (single + character before .py) file names. + + CPE meta data has been added for a large number of packages + + New defconfigs: Acme Systems Acqua A5 (256/512MB), Beagleboard + BeagleV, Boundary devices Nitrogen8M Plus SOM, NXP i.MX 8M + Plus EVK, QEMU PPC e500mc + + New packages: beaglev-ddrinit, beaglev-secondboot, janet, + kodi-inputstream-ffmpegdirect, kodi-vfs-libarchive, + kodi-visualisation-matrix, libxcrypt, libqrtr-glib, log4qt, + mawk, perl-parse-yapp, postgis, protozero, python-flask-wtf, + python-iwlib, python-semantic-version, python-setuptools-rust, + python-toml, riscv64-elf-toolchain, siproxyd, uftrace, zfs + + Removed packages: iostat, kodi-platform, + kodi-screensaver-crystalmorph, monkey + + Issues resolved (http://bugs.uclibc.org): + + #13271: systemd-resolved: /etc/resolv.conf link broken on per-pa.. + #13516: utils/scanpypi: Failure when parsing diffoscope + #13551: 2021.02.rc2: Unicode not work on qt 5.15.2 + #13576: Issues compiling buildroot for 5x86 + #13601: Gen image :Iappropriate ioctl error + #13616: tar file from git repository generation issue + #13631: Commit 54d3d94b6e breaks packages with git download method + #13641: glibc on raspberrypi + #13646: Gen image version 14 error : no sub -section title/.. + #13651: pkg-golang cannot build when main.go is in the root + #13661: host-python2 build fails on aarch64 + #13671: openSSH server closes connection before authentication.. + #13721: c-stack.c:55:26: error: missing binary operator before .. + #13731: Readline Patch is missing Author Information + #13741: genext2fs does not allow to set perms of root node + #13751: libopenssl (static): huge drop in performance in newer .. + #13771: package htop has undeclared dependency on host python + +2021.02.12, released April 6th, 2022 + + Important / security related fixes. + + pkg-stats: Limit memory use for CPE matching + + Updated/fixed packages: gdk-pixbuf, jack2, libzlib, matio, + nbd, netatalk, opus, python-paramiko, python-treq, + python-twisted, spidev_test, unbound, urandom-scripts, vim, + wireshark, zlib-ng, zziplib + +2021.02.11, released March 25th, 2022 + + Important / security related fixes. + + Updated/fixed packages: apache, azure-iot-sdk-c, dbus, + directfb, docker-engine, exempi, expat, flac, gdk-pixbuf, + gnutls, go, haproxy, libcurl, libiec61850, libminiupnpc, + libodb, libodb-boost, libopenssl, libpjsip, libressl, librsvg, + libsrtp, libxml2, libxslt, lxc, mariadb, odbm openblas, + openvpn, oprofile, php, pppd, python-ipython, python-treq, + python-twisted, python-txbus, python-txtorcon, raptor, + rpi-firmware, samba4, timescaledb, util-linux, vim, wavpack, + wireless-regdb, wireshark, wolfssl, xscreensaver, xterm, zsh + + New packages: gdk-pixbuf-xlib + + Removed packages: python-coherence + + Issues resolved (http://bugs.uclibc.org): + + #13126: make fails - bzip2-1.0.6.tar.gz and DirectFB-1.7.7.tar.. + #14636: azure-iot-sdk-c: Installed headers do not compile + #14641: oprofile can not find the events files + +2021.02.10, released February 28th, 2022 + + Important / security related fixes. + + Defconfigs: Andes ae3xx, Intel galileo: Fix build with host + gcc >= 10, ROC-RK3399-PC: Bump rootfs size to fix build issue. + + Add conditional patching logic to fix build issues for older + U-Boot / Linux kernel versions when built with a host gcc >= + 10. + + Updated/fixed packages: casync, cgilua, connman, expat, + gauche, gensio, go, gst-omx, gst1-devtools, gst1-libav, + gst1-plugins-bad, gst1-plugins-base, gst1-plugins-good, + gst1-plugins-ugly, gst1-python, gst1-rtsp-server, gst1-vaapi, + gstreamer1, gstreamer1-editing-services, + kf5-extra-cmake-modules, kodi, libarchive, linux, lm-sensors, + log4cxx, mpd, nfs-utils, pistache, prosody, python-django, + python-pyzmq, rtl8723bu, thermald, tiff, util-linux, vim, xen + +2021.02.9, released January 29th, 2022 + + Important / security related fixes. + + check-package: Improve variable override check + + pkg-stats: List CVEs where the version info cannot be parsed + as unsure rather than completely ignoring them. + + Defconfigs: Beaglebone: Support BeagleBone black wireless + + Updated/fixed packages: alsa-utils, apache, cage, capnproto, + civetweb, clamav, collectd, connman, coreutils, dav1d, + docker-cli, docker-containerd, docker-engine, expat, + findutils, flare-engine, flare-game, font-awesome, freeswitch, + gcc, ghostscript, gnuchess, go, grpc, gst1-interpipe, + gst1-plugins-bad, gst-rtsp-sever, gupnp-tools, hackrf, icu, + imagemagick, janus-gateway, keepalived, lapack, libjpeg, + libopenssl, libpjsip, liburiparser, linux-pam, lxc, mbedtls, + mongodb, mpd-mpc, nodejs, openblas, pcre2, polkit, poppler, + privoxy, prosody, python-django, python-lxml, python-pyqt5, + python3, qt5base, qt5location, rhash, ruby, runc, samba4, + sofia-sip, targetcli-fb, tcpreplay, tinyxml, vim, vlc, + wireshark, xapp_xauth, xen, xlib_libX11, xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #14471: alsa_utils wrong deployment + +2021.02.8, released December 14th, 2021 + + Important / security related fixes. + + Defconfigs: Various fixes for building with gcc >= 10 host or + target compilers. + + Updated/fixed packages: alsa-lib, apparmor, apr, asterisk, + binutils, bluez5_utils, busybox, coreutils, e2fsprogs, ell, + exfat, freeswitch, gdb, glmark2, glog, glorytun, gmp, + gpu-amd-bin-mx51, gst1-interpipe, gstreamer1, guile, gupnp, + hackrf, heimdal, hiawatha, hplip, icu, imx-vpuwrap, isl, iwd, + janus-gateway, libatomic_ops, libbson, libdnet, libffi, + libgdiplus, libgee, libhtp, libmodsecurity, libnspr, libnss, + libunwind, linux, lynx, meson, micropython, mkpasswd, mksh, + mosquitto, motion, mxml, netdata, nfs-utils, oracle-mysql, + pcre, pkcs11-helper, postgresql, pure-ftpd, python-cycler, + qdecoder, rcw-smarc-sal28, samba4, smack, speex, stress-ng, + suricata, syslinux, uboot, unixodbc, unrar, vim, websocketpp, + wireshark + + Issues resolved (http://bugs.uclibc.org): + + #14346: BR2_PACKAGE_NFS_UTILS_RPC_NFSD does not patch CONFIG_NFSD.. + +2021.02.7, released November 10th, 2021 + + Important / security related fixes. + + OpenJDK 16.x moved to 17.x as 16.x is EOL. + + Updated/fixed packages: asterisk, audit, bind, bitcoin, + cryptsetup, dahdi-linux, dbus-python, dfu-util, docker-cli, + docker-containerd, docker-engine, earlyoom, exiv2, ffmpeg, + freerdp, gdb, gensio, gnupg2, go, gpsd, gst1-plugins-bad, + gst1-plugins-ugly, gst1-vaapi, hiredis, lftp, lightning, + lrzip, netdata, nodejs, olsr, openjdk, openjdk-bin, pango, + qemu, samba4, snort, strongswan, suricata, systemd, vim, + wf111, wireguard-linux-compat, xerces + + Issues resolved (http://bugs.uclibc.org): + + #14311: Cannot compile dahdi (part of Asterisk) for x86 (P1mmx) + +2021.02.6, released October 11, 2021 + + Important / security related fixes. + + gdbinit: Mark the sysroot as a "safe path" before configuring + it, so pretty printers work correctly without having to pass + -ix to gdb + + Updated/fixed packages: alsa-lib, apache, + arm-trusted-firmware, atftp, bind, botan, cryptopp, dash, + dc3dd, docker-cli, docker-containerd, docker-engine, dovecot, + erlang, fetchmail, gdb, ghostscript, go, gst-omx, + gst1-devtools, gst1-interpipe, gst1-libav, gst1-plugins-bad, + gst1-plugins-base, gst1-plugins-good, gst1-plugins-ugly, + gst1-python, gst1-rtsp-server, gst1-vaapi, gstreamer1, + gstreamer1-editing-services, kodi-pvr-octonet, libcurl, + libkrb5, libressl, libsndfile, libyang, lxc, lynx, mesa3d, + micropython, minicom, mono, mtr, mv-ddr-marvell, net-tools, + nmap, nodejs, ntfs-3g, openjdk, openjdk-bin, openldap, + openssh, php, python-aioconsole, python-cffi, python-dateutil, + python-django, python-pip, python-texttable, python-urllib3, + python-webob, qt5location, redis, refpolicy, ripgrep, runc, + sispmctl, squid, strongswan, supervisor, syslinux, tinycbor, + trace-cmd, uboot-tools, uclibc, wavemon, wireless-regdb, xen, + xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #14206: Kodi: even when not enabled, forcefully selects libevdev.. + #14211: libffi-3.3.tar.gz repacked + #14221: mv-ddr-marvell fails license validation + +2021.02.5, released September 15th, 2021 + + Important / security related fixes. + + Toolchain: Disable fortify support for Microblaze as it is not + currently working. + + Updated/fixed packages: alsa-utils, arm-trusted-firmware, + bayer2rgb-neon, belle-sip, busybox, c-ares, cjson, coreutils, + cpio, eigen, environt-setup, fetchmail, fluidsynth, + fontconfig, gd, gdb, gnuradio, gnutls, go, haproxy, ipmiutil, + iputils, jszip, kvm-unit-tests, libarchive, libexif, + libgcrypt, libmodsecurity, libopenssl, librsvg, libshout, + libssh, linux, localedef, mc, mesa3d, mosquitto, netsniff-ng, + nginx, nodejs, ogre, openmpi, openvmtools, php, postgresql, + prelink-cross, prosody, protobuf, python-keyring, + python-matplotlib, python-pillow, python-pyudev, + python-secretstorage, python3, qt5base, samba4, sdl2, sox, + swupdate, sylpheed, tor, uboot-tools, uhd, unbound, vim, + wlroots, xapp_xrdb, xapp_xwd, xen, xenomai, xlib_libXfont2, + xlib_libXft, zip + +2021.02.4, released August 10th, 2021 + + Important / security related fixes. + + Toolchain: Disable PIC/PIE for Microblaze (like for NIOS II) + as it is not currently working. + + binutils: fix linker assert failure on OpenRisc, or1k build + issue with gcc < 5 + + gdb: Enable on NIOS II + + utils/scanpypi: Various improvements + + Defconfigs: stm32f469_disco: Fix kernel boot issue, Microchip + sam9x60ek mmc_dev: Add missing toolchain/system options + + Updated/fixed packages: apache, arm-trusted-firmware, audit, + avahi, bind, binutils, bird, bluez5_utils, boinc, busybox, + chrony, clamav, cryptsetup, cwiid, dnsmasq, docker-cli, + docker-engine, dovecot, dovecot-pigeonhole, e2fsprogs, exiv2, + fail2ban, fb-test-app, feh, fetchmail, flac, fluxbox, gawk, + gcc, gcr, gdb, gdk-pixbuf, gesftpserver, glibc, go, gptfdisk, + granite, grub2, gqrx, guile, hdparm, heirloom-mailx, + ibrcommon, ibrdtn, ibrdtn-tools, ibrdtnd, intel-microcode, + iodine, irqbalance, keepalived, libass, libconfig, libcurl, + libfreeimage, libfuse3, libgcrypt, libgtk3, libgudev, libhtp, + libjson, libkrb5, libloki, libmodsecurity, libndp, + libnetfilter-log, libnfnetlink, libnice, libodb, libodb-boost, + libodb-mysql, libodb-pgsql, libpcap, libqmi, libressl, + librsvg, libtasn1, libtirpc, libuci, libxmlrpc, + linux-firmware, linuxptp, lrzsz, ltp-testsuite, lvm2, mariadb, + mbedtls, monit, mono, mosquitto, mpd, mpg123, mpv, nbd, neard, + netsnmp, nettle, nginx-modsecurity, nmap, nodejs, ntp, + openntpd, openpgm, openswan, pango, pcre2, + perl-crypt-openssl-rsa, php, pixman, polkit, postgresql, + proxychains-ng, putty, python, python-django, + python-dataproperty, python-pysftp, python-urllib3, python3, + qpdf, redis, ripgrep, ruby, samba4, spice, slirp, suricata, + sysdig, tcpdump, tftpd, thrift, tor, tpm2-tools, trinity, + uboot, uboot-tools, uclibc, util-linux, vlc, wireless-regdb, + wireshark, wolfssl, xapp_fonttosfnt, xlib_libX11, + xlib_libxshmfence, xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #13586: grub failure with BR2_OPTIMIZE_3 + #13661: host-python2 build fails on aarch64 + #13836: package build failure when target install set to no.. + #13846: BR2_PACKAGE_LVM2_STANDARD_INSTALL should be default to.. + +2021.02.3, released June 12th, 2021 + + Important / security related fixes. + + CPE meta data has been added for a large number of packages + + Updated/fixed packages: acpid, apache, apcupsd, assimp, bird, + bitcoin, blktrace, boost, capnproto, chrony, dc3dd, dhcp, + directfb, dmalloc, docker-engine, ebtables, efibootmgr, + enlightenment, enscript, environment-setup, exempi, expat, + findutils, flatcc, fluidsynth, frr, gdb, go, gptfdisk, grpc, + gst1-plugins-bad, gst1-rtsp-server, gstreamer1, gupnp, + hostapd, hwloc, i2c-tools, iftop, imagemagick, imx-gpu-viv, + intel-mediadriver, intel-microcode, jquery-validation, + keepalived, kodi, less, libcamera, libcurl, libcutl, libesmtp, + libeXosip2, libffi, libfuse, libfuse3, libgeos, libgtk2, + libgtk3, libical, libidn, libidn2, libkcapi, libldns, libmms, + libmodbus, libmspack, libnids, libopenh264, liboping, libraw, + librelp, libsamplerate, libtirpc, libusb, libuv, libxcb, + libxml2, libxslt, live555, llvm, lmbench, localedef, + lttng-tools, lvm2, lz4, mesa3d, mimic, mini-snmpd, minidlna, + minissdpd, minizip, mono-gtksharp3, mpg123, mpv, msmtp, musl, + mutt, nasm, nbd, netperf, netsurf, nginx, odb, opencv3, + openssh, opentyrian, oprofile, p7zip, paho-mqtt-c, perl, + php-imagick, pifmrds, picocom, pigz, pngquant, poco, + postgresql, prosody, proxychains-ng, pulseaudio, putty, pwgen, + python-autobahn, python-bluezero, python-engineio, + python-keyring, python-pillow, python-requests, python-tqdm, + qemu, qpdf, qt5base, redis, refpolicy, rt-tests, runc, + shellinabox, squid, strace, supervisor, synergy, taglib, + tclap, terminology, thermald, tini, tinyproxy, tinyxml2, + tpm2-tss, uclibc, udisks, uhd, unscd, vlc, waylandpp, + webkitgtk, weston, wireshark, wpa_supplicant, wpewebkit, + xlib_libdmx, xlib_libFS, xlib_libICE, xlib_libX11, + xlib_libXcursor, xlib_libXdmcp, xlib_libXext, xlib_libXfixes, + xlib_libXfont2, xlib_libXinerama, xlib_libXpm, xlib_libXres, + xlib_libXt, xlib_libXtst, xlib_libXxf86dga, xlib_libXxf86vm, + xterm + + Issues resolved (http://bugs.uclibc.org): + + #13781: isc dhcp-server package don't create file /usr/bin/dhcpd + #13801: toolchainfile.cmake CMAKE_BUILD_TYPE + #13806: Building host-localedef fails on fedora 34/gcc 11 + +2021.02.2, released May 12th, 2021 + + Important / security related fixes. + + Toolchain: Add logic to mark toolchains affected by binutils + bug 27597 (Nios II). + + support/scripts/cve.py: Use the (significantly) faster yajl2 + ijson backend for older (< 2.5) ijson versions rather than the + slow python default, speeding up pkg-stats by ~2x. + + CMake infrastructure: Use CMAKE_EXE_LINKER_FLAGS rather than + CMAKE_CXX_FLAGS to link with libatomic to fix an compatibility + issue with poppler. + + Infrastructure: Expose CONFIG_DIR to post-build/post-image + scripts, so they can call the Buildroot Makefile in the + correct directory for both in-tree / out-of-tree builds. + + Updated/fixed packages: at91bootstrap, avahi, bash, bind, + bridge-utils, boost, cegui, cifs-utils, clamav, cmake, + coremark-pro, coreutils, cryptsetup, dmalloc, dnsmasq, + docker-cli, docker-engine, domoticz, efl, exim, ffmpeg, flex, + gcc, genext2fs, go, gst1-interpipe, haproxy, hostapd, + i2c-tools, imx-vpu, kexec, kf5-kcoreaddons, kismet, libcamera, + libcurl, libdrm, libfreefare, libfuse3, libgeos, libgpiod, + libnpupnp, libopenssl, libp11, librsync, libtomcrypt, libupnp, + localedef, lvm2, lxc, m4, makedevs, mender, mesa3d, + mesa3d-headers, mkpasswd, mkpimage, modem-manager, monkey, + mpd, ncurses, nettle, network-manager, nginx, numactl, + openjdk, openjdk-bin, openldap, openvpn, php, pipewire, + python-aioconsole, python-asgiref, python-botocore, + python-django, python-dnspython, python-flup, python-httplib2, + python-markdown2, python-mbrstrdecoder, python3, quickjs, + readline, rsyslog, ruby, rust, samba4, sconeserver, snort, + sox, systemd, tar, timescaledb, tio, tor, usb_modeswitch, + wpa_supplicant, xdriver_xf86-video-ati, xen, xlib_libXaw, + xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #13271: systemd-resolved: /etc/resolv.conf link broken on per-pa.. + #13551: 2021.02.rc2: Unicode not work on qt 5.15.2 + #13651: pkg-golang cannot build when main.go is in the root + #13661: host-python2 build fails on aarch64 + #13721: c-stack.c:55:26: error: missing binary operator before .. + #13731: Readline Patch is missing Author Information + #13741: genext2fs does not allow to set perms of root node + #13751: libopenssl (static): huge drop in performance in newer .. + #13771: package htop has undeclared dependency on host python + +2021.02.1, released April 7, 2021 + + Important / security related fixes. + + Dependencies: Explicitly detect and bail out if PATH contains + spaces or tabs. A number of packages fail to build in such + setups, so explicitly inform about this. + + utils/scanpypi: Explicitly use python3 for compatibility with + packages using python3 syntax in setup.py + + support/download: Fix tarball generation (from git/svn repos) + including symlinks pointing to ./. Fix svn download + for <1.9 clients or repos using CVS-style keywords. + + Meson: Use correct C++ host compiler (rather than C compiler) + + Toolchain: Add logic to work around binutils bug 21464, + affecting OpenRISC, and drop the now longer applicable bug + 19615 / 20006 handling. + + Python{,3}: Fix byte compiling python files with short (single + character before .py) file names. + + CPE meta data has been added for a large number of packages + + Defconfigs: Correct Beaglebone QT file system overlay + + Updated/fixed packages: alsa-utils, at91bootstrap3, + batman-adv, binutils, botan, bridge-utils, busybox, + ca-certificates, cog, coreutils, diffutils, dmidecode, + docker-cli, docker-containerd, docker-engine, efivar, + fetchmail, frr, genimage, git, gnutls, go, grub2, gst-omx, + gst1-devtools, gst1-libav, gst1-plugins-bad, + gst1-plugins-base, gst1-plugins-good, gst1-plugins-ugly, + gst1-python, gst1-rtsp-server, gst1-vaapi, gstreamer1, + gstreamer1-editing-services, haproxy, haserl, hwloc, + irqbalance, jasper, kexec, kexec-lite, kismet, kodi, libcurl, + libfreeglut, libgcrypt, libgeos, libglib2, libopenssl, libqmi, + libressl, libupnp, libvips, libvpx, libwebsockets, linux, + lldpd, logrotate, lttng-libust, lttng-tools, mariadb, mbedtls, + mcelog, mender, micropython, mongoose, mosquitto, mpd, + netsnmp, nodejs, openmpi, openssh, openvpn, opkg-utils, + optee-client, optee-test, perl, php, proftpd, protobuf, + python-django, python-jinja2, python-lxml, python-paramiko, + python-py, python-pygments, python-rpi-ws281x, python-urllib3, + python3, qt5webkit, qwt, rpm, samba4, sconeserver, sdl2, shim, + sqlcipher, squid, sysklogd, syslinux, sysvinit, tor, + transmission, tzdata, uboot, uclibc, upx, webkitgtk, + wireshark, wpebackend-fdo, wpewebkit, xen, zstd + + New packages: perl-parse-yapp + + Issues resolved (http://bugs.uclibc.org): + + #13516: utils/scanpypi: Failure when parsing diffoscope + #13576: Issues compiling buildroot for 5x86 + #13601: Gen image :Iappropriate ioctl error + #13616: tar file from git repository generation issue + #13641: glibc on raspberrypi + #13646: Gen image version 14 error : no sub -section title/.. + #13671: openSSH server closes connection before authentication.. + +2021.02, released March 6th, 2021 + + Various fixes. + + Toolchain: Correct Bootlin xtensa-lx60 dependencies + + Updated/fixed packages: asterisk, belle-sip, bustle, dhcpcd, + dovecot, dovecot-pigeonhole, gnuchess, gnuradio, + gst1-plugins-bad, haproxy, jasper, kismet, libebml, + libeXosip2, libgeos, libhtp, libjpeg, libopenssl, libshout, + libstrophe, mosquitto, openblas, openssh, perl, privoxy, + prosody, python-pyyaml, python3-pyyaml, quagga, redis, + rust-bin, sox, suricata, tpm2-pkcs11, uclibc-ng-test, ushare, + util-linux, wolfssl, wpa_supplicant + + Issues resolved (http://bugs.uclibc.org): + + #13501: 2021.02.rc2: Unicode not work on qt 5.15.2 + #13581: jpegsrc.v9d.tar.gz has changed hash + +2021.02-rc3, released February 27th, 2021 + + Fixes all over the tree. + + utils/scanpypi: Explicitly use python3 to ensure compatiblity + with packages having python3-only code in setup.py + + support/download: Ensure sub-second timestamp precision is + dropped when creating a tarball from a (subversion) repo, as + that is not representable in the PAX tar format + + Updated/fixed packages: babeltrace2, bind, botan, brltty, + cegui, elfutils, fakeroot, imagemagick, intel-mediasdk, + irqbalance, libglib2, libselinux, libusb, libuwsc, nodejs, + open62541, openldap, ply, python-aiohttp, python-django, + python3, qemu, readline, rust, screen, taglib, unbound, xterm + + Issues resolved (http://bugs.uclibc.org): + + #13516: utils/scanpypi: Failure when parsing diffoscope + #13541: 2021.02.rc2: irqbalance: Daemon couldn't be bound to... + #13561: Create a new user defining users-table.txt not working.. + +2021.02-rc2, released February 16th, 2021 + + Fixes all over the tree. + + Vulnerability scanning: cpedb.py: Drop CPE XML database + caching, as it did not speed up processing much and uses a lot + of additional memory. + pkg-stats: include information about ignored CVEs in JSON + output + + Fakeroot: Fix compatibility issue with glibc 2.33 + + Updated/fixed packages: can-utils, collectd, dnsmaqs, + docker-cli, docker-engine, ebtables, fakeroot, flashrom, + gdk-pixbuf, go, gst1-python, jasper, kodi, + kodi-inputstream-adaptive, lcms2, libgeos, libgpg-error, + libopenssl, mongoose, mpd, ne10, netopeer2, openblas, orc, + perl-gd, ply, postgresql, protobuf, subversion, tcpdump, + tzdate, uboot-tools, wireshark, webkitgtk, wpewebkit, xterm + + New packages: perl-extutils-pkgconfig + + Issues resolved (http://bugs.uclibc.org): + + #11706: binman (U-boot tool) cannot find libfdt "binman: No mod.. + +2021.02-rc1, released February 9th, 2021 + + Fixes all over the tree and new features. + + Toolchain: Default to binutils 2.35.2, add 2.36.1, drop + 2.33.x. Fix GCC 10.x ARC adc/sbc pattern handling, Update ARM + toolchains to 10.2-2020.11 release. + + Architectures: ARC: add support for generic HS48 processor, + PPC: drop PPC601 support, which was removed from Linux 5.10. + + Vulnerability scanning: The CVE checking logic has been + extended to match packages based on CPE (Common Platform + Enumeration) IDs for more accurate matching, and CPE + identifiers have been added for a large amount of packages. + + Download: Rework the tarball creation logic (E.G. when a + package is fetched from a git/svn repo) to no longer require a + host-tar <= 1.29. To differ between the old and the new + format, the new tarballs have gained a -br1 suffix + (--br1.tar.gz). + + SELinux support: A significant number of packages now pull in + the relevant refpolicy modules when enabled. + + New defconfigs: arrow avenger96, bananapi M1+, microchip + sam9x60ek, pine64 rock64 + + Removed defconfigs: QEMU ppc virtex-ml507 + + New packages: balena-engine, casync, coremark, coremark-pro, + datatables, datatables-buttons, datatables-fixedcolumns, + datatables-responsive, delve, frotz, gkrellm, inih, jszip, + libgeos, libiec61850, libmdbx, lualdap, neofetch, + nvidia-modprobe, open62541, perl-devel-cycle, perl-devel-size, + perl-math-int64, ply, popperjs, python-bleak, + python-defusedxml, python-pycups, python-pytest-asyncio, + python-typing-extensions, qcom-db410c-firmware, qt5coap, + qt5knx, qt5mqtt, quickjs, rcw-smarc-sal28, screenfetch, + ssdp-responder, tpm2-pkcs11, wqy-zenhei, xorcurses + + Removed packages: audiofile, boa, ipsec-tools, libupnp18, + ti-sgx-libgdbm + + Renamed rcw package to qoriq-rcw + + Issues resolved (http://bugs.uclibc.org): + + #13316: beaglebone_qt5_defconfig: PowerVR fails to start + #13416: dhcpcd start warning message: no such user dhcpcd + #13456: ccache prevents build + #13471: package/mpd/mpd.conf make use of path not created + #13506: BR2_PACKAGE_DHCPCD missing directory creation + +2020.11.4, released April 5th, 2021 + + Important / security related fixes. + + Dependencies: Explicitly detect and bail out if PATH contains + spaces or tabs. A number of packages fail to build in such + setups, so explicitly inform about this. + + utils/scanpypi: Explicitly use python3 for compatibility with + packages using python3 syntax in setup.py + + support/download: Fix tarball generation (from git/svn repos) + including symlinks pointing to ./ + + Meson: Use correct C++ host compiler (rather than C compiler) + + Updated/fixed packages: asterisk, at91bootstrap3, babeltrace2, + batman-adv, bind, ca-certificates, cegui, cog, diffutils, + docker-containerd, dovecot, dovecot-pigeonhole, efivar, + elfutils, fakeroot, git, gnuchess, gnuradio, gnutls, go, + grub2, haserl, i7z, imagemagick, intel-mediasdk, irqbalance, + jasper, kodi, libcurl, libebml, libeXosip2, libglib2, libhtp, + libjpeg, libopenssl, libqmi, libressl, libupnp, libuwsc, + libvips, lldpd, mariadb, mbedtls, mender, micropython, + mosquitto, netsnmp, nodejs, openblas, openldap, openmpi, + openssh, opkg-utils, optee-client, optee-test, perl, php, + privoxy, proftpd, prosody, protobuf, python-aiohttp, + python-django, python-lxml, python-pyyaml, python-rpi-ws281x, + python-typing-extensions, python3, quagga, qwt, redis, rpm, + sconeserver, screen, sox, sqlcipher, squid, suricata, + syslinux, sysvinit, tor, transmission, tzdata, uboot, unbound, + upx, util-linux, webkitgtk, wireshark, wolfssl, + wpebackend-fdo, wpewebkit, wpa_supplicant, zstd + + Issues resolved (http://bugs.uclibc.org): + + #13516: utils/scanpypi: Failure when parsing diffoscope + #13541: 2021.02.rc2: irqbalance: Daemon couldn't be bound to.. + #13576: Issues compiling buildroot for 5x86 + #13581: jpegsrc.v9d.tar.gz has changed hash + #13616: tar file from git repository generation issue + +2020.11.3, released February 17th, 2021 + + meson: Fix ccache detection handling when per-package builds + are used. + + Fakeroot: Fix compatibility issue with glibc 2.33 + + Updated/fixed packages: atftp, binutils, busybox, cereal, + chartjs, connman, dhcpcd, dnsmasq, docker-cli, docker-engine, + ebtables, fakeroot, flashrom, go, gst1-python, guile, + intel-mediadriver, intel-microcode, jasper, + kodi-inputstream-adaptive, lcms2, libbsd, libopenssl, + makedumpfile, memtester, mosquitto, ne10, openblas, orc, php, + postgresql, privoxy, pugixml, python-bottle, python-django, + python3, rauc, sox, stress-ng, subversion, tzdata, + uboot-tools, uclibc, webkitgtk, wireguard-linux-compat, + wireshark, wpa_supplicant, wpewebkit, xenomai, + xserver_xorg-server, xterm + + Issues resolved (http://bugs.uclibc.org): + + #11706: binman (U-boot tool) cannot find libfdt "binman: No mod.. + #13506: BR2_PACKAGE_DHCPCD missing directory creation + +2020.11.2, released January 31st, 2021 + + Important / security related fixes. + + Download: Ensure git submodules are correctly fetched if + enabled for a package with _GIT_SUBMODULES = YES and the + host variant is downloaded first. + + Toolchain: Mark CodeSourcery Aarch64 2014.11 toolchain as not + having libatomic. Bootlin PowerPC-440 FP toolchain updated for + SecurePLT fix. + + pkg-stats: Fix python 3.8+ deprecation warning. + + meson: Ensure ccache is not detected and used, as it may + conflict with the ccache handling in Buildroot. + + Updated/fixed packages: barebox, boost, brltty, dbus, + docker-containerd, dovecot, dovecot-pigeonhole, + environment-setup, firmware-imx, gcc, gerbera, glibc, + gmrender-resurrect, igd2-for-linux, kodi-pvr-zattoo, libclc, + libfuse3, libllcp, libodb-mysql, libtorrent-rasterbar, + libupnp, lpc32xxcdl, luarocks, mpd, multipath-tools, mutt, + nfs-utils, nodejs, openjpeg, openldap, opentracing-cpp, + openvpn, p11-kit, paho-mqtt-c, php, poppler, postgresql, + python3, redis, resiprocate, rpm, runc, socat, sslh, sudo, + sunxi-mali-mainline-driver, syslog-ng, systemd, tini, + tpm2-tss, trace-cmd, tzdata, uboot-tools, uhd, ushare, + util-linux, vlc, wavpack, wireguard-linux-compat, wolfssl, + xapp_xload, xorriso, zic + + Removed packages: libupnp18 + + Issues resolved (http://bugs.uclibc.org): + + #13471: package/mpd/mpd.conf make use of path not created + +2020.11.1, released December 27th, 2020 + + Important / security related fixes. + + Infrastructure: + - cmake: fix host ccache handling for CMake 3.19 + - meson: Forcibly disable binary stripping for + target builds, enable for host builds + - golang: Fix HOST / TARGET directories for per-package builds + + Defconfigs: Beaglebone Qt5: Fix ti-sgx related issues + + Updated/fixed packages: apitrace, arm-trusted-firmware, + ca-certificates, cryptopp, dhcpcd, dtv-scan-tables, + flare-engine, ghostscript, go, haproxy, imagemagick, + imx-gpu-viv, jasper, kismet, libcurl, libglib2, libhtp, + libopenssl, libressl, libuv, libuvw, lua, mbedtls, mongodb, + mutt, ncurses, netsnmp, nodejs, opencv3, openldap, opkg-utils, + paho-mqtt-c, python-crc16, python-lxml, python-pyparsing, + python-pyqt5, qt5base, rauc, shadowsocks-libev, sqlcipher, + suricata, ti-sgx-demos, tinycbor, uclibc-ng-test, unbound, + webkitgtk, wpewebkit, wireshark, x11vnc, xen, + xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #13316: beaglebone_qt5_defconfig: PowerVR fails to start + #13416: dhcpcd start warning message: no such user dhcpcd + +2020.11, released December 2nd, 2020 + + Various fixes. + + Updated/fixed packages: bustle, docker-containerd, gnuplot, + gst1-plugins-good, jemalloc, kmsxx, libcap, libplist, + libuhttpd, libxkbcommon, lynx, mariadb, netsurf, privoxy, + s390-tools, setserial, xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #13276: libcap builds libcap.pc incorrectly + +2020.11-rc3, released November 28th, 2020 + + Fixes all over the tree. + + Updated/fixed packages: c-ares, cage, cdrkit, + dovecot-pigeonhole, efl, gvfs, harfbuzz, jpeg-turbo, + libcamera, libkrb5, libpam-tacplus, libxkbcommon, minidlna, + modem-manager, monkey, musl, ncurses, numactl, openntpd, + openrc, postgresql, proftpd, python-flask-cors, python-pip, + qemu, raptor, redis, slirp, spandsp, thermald, uhd, vsftpd, + webkitgtk, wireless-regdb, wlroots, wpewebkit, xen, xinetd, + xorriso + + Issues resolved (http://bugs.uclibc.org): + + #13296: host-libcap failed to build + #13331: openrc-0.42.1 compilation failure on gcc-10 + #13336: thermald-1.9.1 compilation failure with musl 1.2.1 + #13341: Mistake in /etc/init.d/S70vsftpd + +2020.11-rc2, released November 14th, 2020 + + Fixes all over the tree. + + cve-checker script dropped. Instead the pkg-stats logic has + been extended to be able to only generate stats for the + configured packages using 'make pkg-stats' + + Removed defconfigs: rock64 + + Updated/fixed packages: apparmor, asterisk, bitcoin, busybox, + cups-filters, cryptsetup, davfs2, domoticz, elf2flt, freetype, + ghostscript, glmark2, go, gst1-plugins-bad, guile, jsoncpp, + libcap, libexif, libnetfilter_conntrack, libpam-tacplus, + libsigrokdecode, linux-backports, linux-firmware, mesa3d, + modem-manager, mp4v2, oniguruma, openntpd, python3, + python-lmdb, python-m2crypto, rauc, s390-tools, slirp, + stress-ng, suricata, systemd, tcpdump, tmux, tor, webkitgtk, + wireguard-linux-compat, wpewebkit, xen + + Issues resolved (http://bugs.uclibc.org): + + #13281: Raspberry Pi 2: overlays folder missing in genimage-ra.. + #13291: BR2_DL_DIR is ignored when creating defconfig + #13306: wpewebkit build problem in 2020-11-rc1 + +2020.11-rc1, released November 4th, 2020 + + Fixes all over the tree and new features. + + Architectures: Support for IBM s390x + + Toolchain: use Secure-PLT rather than BSS-PLT for PowerPC + 32. Binutils 2.35.1 added, now defaulting to 2.34. ARC + 2020.09-release toolchain. GCC 7.x dropped. RISC-V support for + uclibc-ng. Support for Bootlin external toolchains. + + SELinux support improvements: File security contexts are now + set when the file systems are created, so there is no need to + run restorecon on first boot / read only rootfs is supported. + An optimized / stripped refpolicy SELinux policy is now + used. Packages can enable additional refpolicy modules using + _SELINUX_MODULES. + + support/scripts/cve-checker: Utility script to check for known + CVEs in just the packages enabled in a Buildroot configuration + rather than all packages, by passing the output of 'make + show-info' to it. + + Go: Modules handling. The module name must be specified using + _GOMOD. + + BR2_EXTERNAL: Support for defining skeleton and init system + packages in external trees. + + meson: Correct SDK cross-compilation.conf file when + per-package builds were used to build SDK. + + systemd: Use /run rather than /var/run for PID files in units. + + Fakeroot scripts (BR2_ROOTFS_POST_FAKEROOT_SCRIPT) are now run + after all finalization hooks (including pre-rootfs) to ensure + they can override any late configuration done by packages. + + support/script/pycompile: Rework logic to ensure .pyc files + contain absolute target paths, fixing code inspection at + runtime when executed with cwd != '/'. + + support/scripts/setlocalversion: Correct Mercurial output to + match behaviour with Git. + + support/scripts/apply-patches.sh: Use patch + --no-backup-if-mismatch, so we no longer blindly have to + remove *.orig files after patching, fixing issues with + packages containing such files. + + New defconfigs: Acer chromebook elm, Friendlyarm nanopc-t4 and + nanopi-m4, Hardkernel odroid-c2, Kontron SMARC-sAL28, NXP + imx8mqevk, Orangepi RK3399 and zero+, PCengines APU2, Pine64 + rockpro64, QEMU s390x, Raxda rockpi-n8, + + New packages: altera-stapl, asn1c, babeltrace2, cukinia, + easyframes, environment-setup, frr, graphicsmagick, htpdate, + ipcalc, libbacktrace, libblockdev, libbytesize, librelp, + libuev, makedumpfile, meson-tools, mg, mrp, multipath-tools, + netcalc, odroidc2-firmware, php-xdebug, python-aiofiles, + python-ansicolors, python-boto3, python-botocore, + python-bsdiff4, python-crayons, python-iniconfig, + python-intelhex, python-ipdb, python-jmespath, + python-m2crypto, python-opcua-asyncio, python-packaging, + python-piexif, python-pluggy, python-pytest, + python-s3transfer, python-xmodem, qprint, qt5lottie, + qt5remoteobjects, re2, redir, s390-tools, sentry-cli, + sentry-native, timescaledb, tinyhttpd, uhd, uredir, watchdog, + wayland-utils, weston-imx + + Removed packages: amd-catalyst, bellagio, gqview, libcroco, + nvidia-tegra23, opencv + + Issues resolved (http://bugs.uclibc.org): + + #11811: lsblk (util-linux) should depend on libudev if available + #11931: Bugs in support/scripts/apply-patches.sh + #12301: systemd-journal-gatewayd: config options broken + #12911: usb_modeswitch installation race condition + #13236: Can't compile linux 5.4.8 (with gcc 10 on host) + #13286: The system hangs in vmware workstation on the line.. + +2020.08.3, released December 27th, 2020 + + Important / security related fixes. + + Infrastructure: + - cmake: fix host ccache handling for CMake 3.19 + - meson: Forcibly disable binary stripping for + target builds, enable for host builds + - golang: Fix HOST / TARGET directories for per-package builds + + Defconfigs: Beaglebone Qt5: Fix ti-sgx related issues + + Updated/fixed packages: apitrace, arm-trusted-firmware, + bustle, c-ares, ca-certificates, cage, cdrkit, cryptopp, + dhcpcd, docker-containerd, dtv-scan-tables, flare-engine, + ghostscript, gvfs, haproxy, imagemagick, imx-gpu-viv, jasper, + jemalloc, jpeg-turbo, libcamera, libcap, libcurl, libglib2, + libgpiod, libkrb5, libopenssl, libplist, libressl, libuv, + libuvw, lynx, mariadb, mbedtls, minidlna, mongodb, monkey, + musl, mutt, ncurses, netsnmp, netsurf, nodejs, opencv3, + openldap, openrc, opkg-utils, paho-mqtt-c, php, privoxy, + proftpd, python-crc16, python-flask-cors, python-lxml, + python-pip, python-pyparsing, python-pyqt5, qemu, qt5base, + raptor, rauc, ruby, setserial, shadowsocks-libev, slirp, + sqlcipher, thermald, ti-sgx-demos, tinycbor, unbound, vsftpd, + wireless-regdb, wireshark, wlroots, x11vnc, xen, xinetd, + xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #13276: libcap builds libcap.pc incorrectly + #13316: beaglebone_qt5_defconfig: PowerVR fails to start + #13336: thermald-1.9.1 compilation failure with musl 1.2.1 + #13341: Mistake in /etc/init.d/S70vsftpd + #13416: dhcpcd start warning message: no such user dhcpcd + +2020.08.2, released November 16th, 2020 + + Important / security related fixes. + + Toolchain-wrapper: Pass -fno-tree-loop-distribute-patterns to + fix kernel build on microblaze with gcc 10.x when + optimizations are enabled. + + Updated/fixed packages: apparmor, argp-standalone, asterisk, + bandwidthd, binutils, bitcoin, busybox, collectd, cryptsetup, + cups-filters, darkhttpd, davfs2, docker-cli, + docker-containerd, docker-engine, dovecot-pigeonhole, + dvb-apps, elf2flt, fastd, fbset, fbtft, freetype, gcc, + ghostscript, grpc, gst1-plugins-bad, jsoncpp, + kernel-module-imx-gpu-viv, keepalived, kmscube, libass, + libexif, libiqrf, libnetfilter_conntrack, libpam-tacplus, + libraw, linux-backports, linux-firmware, lzlib, mp4v2, + netsnmp, nginx, numactl, oniguruma, opencv3, openntpd, + patchelf, php, pistache, postgresql, python-pyqt5, qemu, + qt5base, rauc, redis, samba4, slirp, systemd, tcpdump, + tinyproxy, tmux, tor, waf, webkitgtk, wine, + wireguard-linux-compat, wireshark, wpewebkit, xen, xorriso, + xvisor, zeromq, zxing-cpp + + Issues resolved (http://bugs.uclibc.org): + + #11931: Bugs in support/scripts/apply-patches.sh + +2020.08.1, released October 12th, 2020 + + Important / security related fixes. + + Fixes for various compilation issues with GCC 10.x. + + meson: Correct SDK cross-compilation.conf file when + per-package builds were used to build SDK. + + systemd: Use /run rather than /var/run for PID files in units. + + Toolchain: use Secure-PLT rather than BSS-PLT for PowerPC 32. + + Fakeroot scripts (BR2_ROOTFS_POST_FAKEROOT_SCRIPT) are now run + after all finalization hooks (including pre-rootfs) to ensure + they can override any late configuration done by packages. + + support/script/pycompile: Rework logic to ensure .pyc files + contain absolute target paths, fixing code inspection at + runtime when executed with cwd != '/'. + + support/scripts/setlocalversion: Correct Mercurial output to + match behaviour with Git. + + support/scripts/apply-patches.sh: Use patch + --no-backup-if-mismatch, so we no longer blindly have to + remove *.orig files after patching, fixing issues with + packages containing such files. + + fs/jffs2: Now correctly handles xattrs + + Updated/fixed packages: acpica, afboot-stm32, alsa-utils, + apparmor, bandwidthd, barebox, bash, bison, brotli, + cifs-utils, cups, dhcpcd, dhcpdump, docker-cli, docker-engine, + ecryptfs-utils, efl, fail2ban, fbterm, ffmpeg, fontconfig, + freetype, gcc, gdb, ghostscript, gnupg2, gnutls, go, gqview, + gst1-plugins-base, gst1-plugins-ugly, ipmitool, jbig2dec, + kexec, lcdproc, libcamera, libhtp, libnetconf2, libraw, + libssh, libxml2, libxml-parser-perl, libzip, linux-headers, + live555, localedef, ltp-testsuite, lua, matchbox, memcached, + memtester, mesa3d, meson, minidlna, mongodb, mongrel2, motion, + mraa, mtd, musepack, neardal, netatalk, netperf, netsniff-ng, + nginx, nodejs, nss-pam-ldapd, open-plc-utils, openswan, + opentyrian, openvmtools, php, postgresql, python, + python-aenum, python-cycler, python-engineio, python-fire, + python-pymodbus, python-scapy, python-semver, + python-sentry-sdk, python-socketio, python-texttable, + python-tinyrpc, python-txtorcon, python3, qt5base, quagga, + read-edid, redis, rsh-redone, runc, samba4, socketcand, + strace, supertux, suricata, systemd, ti-utils, trinity, + uclibc, usb_modeswitch, vlc, vsftpd, wampcc, + wayland-protocols, wireguard-linux-compat, wireshark, wlroots, + wolfssl, w_scan, xerces, xfsprogs, xdriver-xf86-video-ati, + xserver_xorg-server, ympd, zeromq, zlib-ng, zstd + + Issues resolved (http://bugs.uclibc.org): + + #12911: usb_modeswitch installation race condition + #13236: Can't compile linux 5.4.8 (with gcc 10 on host) + +2020.08, released September 1st, 2020 + + Various fixes. + + Updated/fixed packages: am33x-cm3, avahi, bluez-tools, + busybox, chocolate-doom, collectd, dhcp, docker-cli, domoticz, + gobject-introspection, graphite2, haproxy, ibm-sw-tpm2, + imagemagick, libeXosip2, libressl, lxc, mbedtls, menu-cache, + mongodb, mosquitto, nvidia-driver, paho-mqtt-c, pixz, + postgresql, python-django, rtty, squid, stress-ng, systemd, + trousers, uclibc, wireshark, wolfssl, zbar + +2020.08-rc3, released August 28th, 2020 + + Fixes all over the tree. + + Infrastructure: Ensure RPATH entries that may be needed for + dlopen() are not dropped by patchelf. + + Toolchain: Drop old GCC 6 based external Sourcery AMD64 + toolchain. + + Updated/fixed packages: assimp, davfs2, dillo, glibc, + gnuradio, hostapd, ibm-sw-tpm2, ipmitool, json-c, libroxml, + linux, mender, netopeer2, openal, openjpeg, python-matplotlib, + ripgrep, shadowsocks-libev, trousers, xlib_libX11, + xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #13141: Target-finalize fail with "depmod: ERROR: Bad version passed" + +2020.08-rc2, released August 24th, 2020 + + Fixes all over the tree, including a number of fixes for + compilation with GCC-10. + + Toolchain: Disallow building uClibc-ng for RISC-V 64-bit, + because of issues with a missing __riscv_flush_icache() + implementation. + + Defconfigs: CI20: Use mainline Linux and U-boot. Update + Microchip sama5d27_wlsom1_ek_mmc_dev to use bluez5-utils + instead of (the removed) legacy bluez-utils + + Updated/fixed packages: 18xx-ti-utils, aircrack-ng, apache, + atest, bandwidthd, bellagio, bind, bird, bluez-alsa, boost, + c-periphery, capnproto, chrony, collectd, cpio, cvs, + dieharder, domoticz, dovecot, dovecot-pigeonhole, drbd-utils, + dump1090, efl, elixir, f2fs-tools, feh, fluidsynth, fping, + gdbm, gdk-pixbuf, ghostscript, gst1-plugins-bad, + gstreamer1-editing-services, htop, ibm-sw-tpm2, ifplugd, + iftop, igd2-for-linux, ima-evm-utils, iprutils, iputils, + keepalived, kmsxx, libabseil-cpp, libcamera, libcurl, + libfuse3, libnss, librtlsdr, libubox, libunwind, live555, + lttng-tools, luabitop, mender-artifact, minizip, + mjpg-streamer, mpd, mpv, mtd, ncftp, open-lldp, openal, + opencv, opencv3, openfpgaloader, optee-os, owfs, php, + pistache, prosody, pulseview, python-decorator, + python-gunicorn, python-rpi-gpio, python-spidev, + python3-decorator, python3-mako, python3-pyselftools, qt5, + qt5webengine, rauc, redis, ripgrep, rtl8188eu, rtl8821au, + setools, smstools3, supertux, tftpd, tpm2-abrmd, + wpa_supplicant, xen, xlib_libX11, xserver_xorg-server + + New packages: python3-cython, python3-pycryptodomex + + Issues resolved (http://bugs.uclibc.org): + + #12876: nodejs fails to build when host-icu has been built before + #13111: python-gunicorn: missing dependency on python-setuptools + #13121: wpa_supplicant fails to build without libopenssl enabled + #13146: raspberrypi3_defconfig: "Inappropriate ioctl for device".. + #13156: package live555 new license + #13166: python-rpi-gpio: does not work against aarch64, unint.. + +2020.08-rc1, released August 6th, 2020 + + Toolchain: + + - GCC 10.x added, GCC 9.x is the default + - binutils 2.34 added, binutils 2.33 is the default, binutils + 2.31 removed + - glibc updated to 2.31 + - ARC toolchain components updated to 2020.03-release. + - Enable uClibc-ng usage for RISC-V 64-bit + + Infrastructure: + + - qmake-package was fixed to be compatible with + BR2_PER_PACKAGE_DIRECTORIES + - complete rewrite of the Gitlab CI Yaml configuration file, + now generated directly by the Gitlab CI pipeline itselfs + + Misc: + + - cargo and cargo-bin packages removed, as cargo is now part + of Rust itself + + Filesystem: ubinize configuration files can now use + BINARIES_DIR to refer to the $(O)/images directory. + + New packages: bitwise, earlyoom, fuse-overlayfs, gloox, + kodi-pvr-octonet, kodi-pvr-zattoo, libabseil-cpp, libcutl, + libnids, libnpupnp, libodb, libodb-boost, libodb-mysql, + libodb-pgsql, mbpfan, netopeer2, odb, parprouted, + python-colorzero, python-gpiozero, python-pybind, python-yatl, + python3-decorator, qt5quicktimeline, resiprocate, ttyd, + unclutter-xfixes, urandom-scripts, + + New defconfigs: bananapi_m2_zero, freescale_imx8mnevk, + globalscale_espressobin, imx6ullevk, + microchip_sama5d27_wlsom1_ek, rock_pi_4, rock_pi_n10 + + Removed packages: cargo, cargo-bin, + kodi-peripheral-steamcontroller + + Issues resolved (http://bugs.uclibc.org): + + #12941: Python GObject fails to build when using BR2_PER_PACKAGE_DIRECTORIES + #12946: Grub: Decompressor is too big. + #12986: Mtools: Error converting to codepage 850 + #13001: openjdk-bin replaces libfreetype.so from host-freetype + #13011: Incorrect selection of gcc version + #13021: Minor code error when building granite-0.4.1 + #13026: rpi-firmware: must not rename start files + #13046: Optimize for fast -Ofast is not compliant + #13081: host-e2fsprogs attempts to create udev rules.d on build host if not exists + #13101: BR audit2allow support + +2020.05.3, released October 12th, 2020 + + Important / security related fixes. + + meson: Correct SDK cross-compilation.conf file when + per-package builds were used to build SDK. + + systemd: Use /run rather than /var/run for PID files in units. + + Toolchain: use Secure-PLT rather than BSS-PLT for PowerPC 32. + + Fakeroot scripts (BR2_ROOTFS_POST_FAKEROOT_SCRIPT) are now run + after all finalization hooks (including pre-rootfs) to ensure + they can override any late configuration done by packages. + + support/script/pycompile: Rework logic to ensure .pyc files + contain absolute target paths, fixing code inspection at + runtime when executed with cwd != '/'. + + support/scripts/setlocalversion: Correct Mercurial output to + match behaviour with Git. + + support/scripts/apply-patches.sh: Use patch + --no-backup-if-mismatch, so we no longer blindly have to + remove *.orig files after patching, fixing issues with + packages containing such files. + + Updated/fixed packages: alsa-utils, apparmor, avahi, + bandwidthd, barebox, bash, bison, brotli, busybox, cifs-utils, + cryptsetup, cups, dhcpcd, dhcpdump, docker-cli, docker-engine, + ecryptfs-utils, efl, fail2ban, freetype, gcc, gdb, + ghostscript, gnutls, go, graphite2, gst1-plugins-base, + gst1-plugins-ugly, imagemagick, ipmitool, jbig2dec, libhtp, + libraw, libssh, libxml2, libxml-parser-perl, linux-headers, + localedef, lua, mbedtls, memcached, mesa3d, meson, minidlna, + mongodb, nginx, nodejs, nss-pam-ldapd, openvmtools, + paho-mqtt-c, php, postgresql, python, python-aenum, + python-django, python-engineio, python-fire, python-pymodbus, + python-scapy, python-semver, python-sentry-sdk, + python-socketio, python-texttable, python-tinyrpc, + python-txtorcon, python3, qt5base, rsh-redone, runc, samba4, + strace, supertux, suricata, systemd, uclibc, usb_modeswitch, + vlc, vsftpd, wayland-protocols, wireguard-linux-compat, + wireshark, wlroots, wolfssl, xserver_xorg-server, ympd, + zeromq, zstd + + Issues resolved (http://bugs.uclibc.org): + + #12911: usb_modeswitch installation race condition + #13251: cryptsetup does not work on branch 2020.02 following.. + +2020.05.2, released August 29th, 2020 + + Important / security related fixes. + + Infrastructure: Ensure RPATH entries that may be needed for + dlopen() are not dropped by patchelf. + + BR_VERSION_FULL/setlocalversion (used by make print-version + and /etc/os-release): Properly handle local git tags + + Updated/fixed packages: apache, assimp, at91bootstrap3, bind, + boost, busybox, capnproto, cegui, chrony, collectd, cpio, + cryptsetup, cups, cvs, dbus, docker-engine, domoticz, dovecot, + dovecot-pigeonhole, dropbear, efl, elixir, f2fs-tools, ffmpeg, + gd, gdk-pixbuf, ghostscript, glibc, gnuradio, grub2, + gst1-plugins-bad, gstreamer1-editing-services, hostapd, + ibm-sw-tpm2, iputils, jasper, json-c, libcurl, libressl, + libwebsockets, linux, live555, mesa3d, mongodb, mosquitto, + mpv, nodejs, opencv, opencv3, openfpgaloader, openjpeg, + patchelf, perl, php, postgresql, prosody, python-django, + python-gunicorn, python-matplotlib, ripgrep, rtl8188eu, + rtl8821au, ruby, shadowsocks-libev, squid, systemd, + tpm2-abrmd, tpm2-tools, trousers, uboot, webkitgtk, wireshark, + wolfssl, wpa_supplicant, wpewebkit, xen, xlib_libX11, + xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #12876: nodejs fails to build when host-icu has been built before + #13111: python-gunicorn: missing dependency on python-setuptools + #13121: wpa_supplicant fails to build without libopenssl enabled + #13141: Target-finalize fail with "depmod: ERROR: Bad version passed" + #13156: package live555 new license + +2020.05.1, released July 25th, 2020 + + Important / security related fixes. + + Toolchain: + - Make external toolchain version check also work for + toolchains configured with --with-gcc-major-version-only + + - Do not handle SOURCE_DATE_EPOCH in toolchain wrapper if the + compiler supports it, fixing an issue with precompiled + headers + + - Ensure debug libs from external toolchains are not installed + into target if debugging is disabled + + Download: + - Correct reproducibility issue in handling of git submodules + for older git versions. + + - Fix file locking over NFS + + fs: Ensure cpio archive element order is reproducible + + Br2-external: Fix error reporting for invalid br2-external trees + + Per-package: + - Fix an issue with python3 sysconfig data not getting + correctly expanded + + - Fix per-package building for packages using the qmake + infrastructure + + Updated/fixed packages: a10disp, asterisk, bind, brltty, + cdrkit, clamav, cryptodev-linux, dbus, docker-cli, + docker-engine, dvb-apps, e2fsprogs, exim, exiv2, freerdp, gdb, + gdk-pixbuf, gerbera, gnutls, go, granite, grub2, gssdp, + gst1-plugins-good, gst1-plugins-ugly, gupnp, intel-microcode, + iproute2, irrlicht, iwd, jq, kodi, libcamera, libcec, + libconfuse, libcurl, libevdev, libhttpserver, libmicrohttpd, + libnss, libressl, libvncserver, libxml2, libxmlrpc, lxc, + mbedtls, mediastreamer, mesa3d, meson, minizip, mongodb, + mtools, mutt, nano, network-manager, nghttp2, ngircd, nodejs, + ntp, open-plc-utils, open2300, openjdk-bin, openssh, + oracle-mysql, paho-mqtt-c, pango, php, poco, prosody, putty, + python-greenlet, python-urllib3, python-validators, python3, + readline, redis, rpi-firmware, rtl8821au, samba4, sdl2, + sqlite, squid, strace, sunxi-mali-mainline-driver, syslog-ng, + systemd, tcpreplay, tinydtls, upmpdcli, upx, vlc, webkitgtk, + wireguard-linux-compat, wireshark, wpebackend-fdo, wpewebkit, + x11vnc, znc, zstd + + Issues resolved (http://bugs.uclibc.org): + + #12941: Python GObject fails to build when using BR2_PER_PACKAGE_.. + #12946: Grub: Decompressor is too big. + #12986: Mtools: Error converting to codepage 850 + #13001: openjdk-bin replaces libfreetype.so from host-freetype + #13011: Incorrect selection of gcc version + #13021: Minor code error when building granite-0.4.1 + #13026: rpi-firmware: must not rename start files + #13031: nodejs: RangeError at new ArrayBuffer() + #13046: Optimize for fast -Ofast is not compliant + +2020.05, released June 1st, 2020 + + Various fixes. + + Updated/fixed packages: arm-trusted-firmware, gcc, mp4v2, fmc, + fmlib, glib-networking, libusb-compat, linux, qt5webengine, + sysrepo, wampcc, xen + +2020.05-rc3, released May 29th, 2020 + + Fixes all over the tree. + + Infrastructure: Support checking download hashes for packages + coming from Subversion. + + Defconfigs: Increase boot partition size to 64MB for Freescale + boards to allow space for bigger kernels. + + Updated/fixed packages: audit, bind, dovecot, efl, erlang, + ffmpeg, fio, gerbera, gnupg, leveldb, lrzip, ltrace, matio, + mesa3d, mp4v2, prosody, qemu, qt5declarative, speexdsp, + systemd, tremor, uboot-tools, unbound, wireshark + + Removed packages: wiringpi + + Issues resolved (http://bugs.uclibc.org): + + #12361: Init system (systemd) kills login on Raspberry Pi Zero + #12686: recipe for target 'install_dev' failed (libcrypto.so..) + +2020.05-rc2, released May 22nd 2020 + + Fixes all over the tree. + + U-Boot: Support building with Python 3.x instead of Python + 2.x. Since U-Boot 2020.01, various U-Boot build scripts use + Python 3.x instead of Python 2.x, so add an option to pull in + host-python3 rather than host-python. Also fix a number of + defconfigs to use this new option. + + Updated/fixed packages: apparmor, binutils, bison, brltty, + c-icap, cegui, checkpolicy, clamav, crda, cvs, docker-cli, + docker-engine, domoticz, elf2flt, exfatprogs, fakeroot, + ffmpeg, freerdp, gcc, glibc, gnuconfig, irrlicht, kmod, + libexif, libpam-tacplus, libssh2, libv4l, libvncserver, + localedef, lrzip, mariadb, matchbox, mbuffer, mesa3d, + mesa3d-headers, meson, netsniff-ng, openldap, openocd, + optee-os, p7zip, paho-mqtt-c, php, piglit, pigz, + python-argon2-cffi, python-attrs, python-future, + python-markdown, python-pycryptodomex, python-pyqt5, qt5base, + rpi-firmware, rustc, squashfs, squid, stella, suricata, + systemd, uacme, uclibc, util-linux, vboot-utils + + New packages: python3-pyelftools + + Removed packages: ezxml, mtdev2tuio, python-pycrypto + + Issues resolved (http://bugs.uclibc.org): + + #10551: PowerPC SPE and Musl + #12256: package tar is outdated (1.29 is 3 years old) + #12271: python-iptables runtime dependencies + #12321: host-generic-package: PKG_DL_OPTS not used for host package + #12391: CMake-based host package fails to include output/host/include + #12431: ethernet no detected on nanopi neo 2 + #12521: RISCV RV32IA selected, RV64GC output + #12586: avahi failure + #12596: host-e2fsprogs: tune2fs incompatibility on older glibc.. + #12611: ntp hash is not matching with upstream 4.2.8p13 + #12626: PHP missing header files within 2020.02 + #12631: glibc support Power-PC SPE + #12656: bison fails to relocate with relocate-sdk.sh + #12661: cups problems in buildroot + #12686: recipe for target 'install_dev' failed (libcrypto.so:.. + #12691: host-rust build fails + #12761: Buildroot fails when building GCNano binaries for the STM.. + #12786: Systemd spawns two getty processes when the getty port.. + #12806: There are multiple issues in buildroot that faults cups.. + #12826: nodejs-12.16.1: error: 'uv_sleep' was not declared in.. + #12831: RPI-firmware package: DTB-overlay dependency + #12836: libunwind: package does not show up in menuconfig for.. + #12841: util-linux/sfdisk 2.35.1 fails on sector-size header + #12866: should we be disabling bash executable path caching? + #12886: GMP built in wrong order (?) + #12891: QEMU, libvirt-bin, qemu-kvm Package Support required + #12901: GStreamer doesn't build on 2020-05 rc1 with GObject.. + #12906: qt PrefixPath is wrong on 2020.05-rc1 + #12921: nodejs-12.16.1: error: overriding 'virtual icu_65::.. + +2020.05-rc1, released May 7th 2020 + + Addition of support for gobject-introspection: both the + gobject-introspection package itself, but also introspection + support was enabled in a number of other packages. + + Support for Qt 5.6 was dropped as its support was dropped + upstream, only one version of Qt is supported at the moment: + Qt 5.14.2. + + Addition of support for the apparmor Linux security module, by + adding the necessary user-space packages. + + Addition of a qmake package infrastructure, now used by most + Qt-related packages. + + The Luarocks package infrastructure has been extended to + support build host packages. + + The package infrastructure was improved to allow each package + to indicate the Linux kernel configuration options it needs. + + Addition of support for generating filesystem images using the + EROFS filesystem. + + The logic that calculates the list of files installed by each + package was reworked to be compatible with the top-level + parallel build functionality. + + Addition of a package for a pre-compiled ARM32 bare-metal + toolchain, which can be used to build ARM32 code in ARM64 + configurations, such as firmware/bootloader code. + + The Qemu defconfigs are now boot-tested in Qemu as part of the + Gitlab continuous integration. + + Toolchain: gcc 9.x bumped to 9.3.0, gcc 8.x bumped to 8.4.0, + gdb bumped to 8.3.1. + + New packages: apcupsd, apparmor, arm-gnu-a-toolchain, bearssl, + belle-sip, belr, cage, chartjs, erofs-utils, exfatprogs, + gobject-introspection, ibm-sw-tpm2, imx-seco, jbig2dec, + libapparmor, libiberty, libfuse3, libtextstyle, libudfread, + libuhttpd, libuwsc, lua-lyaml, matio, mbuffer, netdata, + openfpgaloader, perl-i18n, perl-locale-maketext-lexicon, + perl-lwp-protocol-https, + perl-mojolicious-plugin-authorization, + perl-mojolicious-plugin-cspheader, + perl-mojolicious-plugin-i18n, + perl-mojolicious-plugin-securityheader, perl-mozilla-ca, + perl-path-class, pistache, pkcs11-helper, prelink-cross, + python-argon2-cffi, python-canopen, python-cbor2, + python-filelock, python-flatbuffers, python-greenlet, + python-modbus-tk, python-pyalsa, python-pysftp, python-regex, + python-snappy, rtty, tinyproxy, udev-gentoo-scripts, unbound, + vuejs, wlroots. + + New defconfigs: freescale_imx6ullevk, freescale_imx8qmmek, + nanopi_neo4, nanopi_r1, nitrogen8mm, nitrogen8mn, olpc_xo1, + olpc_xo175, roc_rk3399_pc, stm32mp157a_dk1, zynq_qmtech + + Issues resolved (http://bugs.uclibc.org): + + #10386: Add an option to put all compiled executables that + show up on target/ in staging/ as well + #11866: iniramfs file system fails to boot using Grub on EFI x86_64 + #12666: Doesn't pick up a custom bash profile + #12696: Uboot 2020.01 Problem loading Linux kernel on Nano PI NEO + #12701: [patch] wpa_supplicant must depend on openssl + #12711: host-localedef 2.30-20 fails to compile on fedora 32 (gcc 10.0.1) + #12716: bio.h not found + #12726: systemctl preset-all failed for ctrl-alt-del.target + #12731: rtl8188eu not buildung for banana pi M1 (glib, systemd, 4.18.12) + #12746: "sysdig" package description points to + http://sysdig.org, which bounces to malware site + #12751: OpenJdk package installation issues on target + #12796: Update OpenSSL to Version 1.1.1g to patch CVE-2020-1967 + #12811: bootstrap stuck and no login prompt + +2020.02.12, released April 5, 2021 + + Important / security related fixes. + + Dependencies: Explicitly detect and bail out if PATH contains + spaces or tabs. A number of packages fail to build in such + setups, so explicitly inform about this. + + utils/scanpypi: Explicitly use python3 for compatibility with + packages using python3 syntax in setup.py + + support/download: Fix tarball generation (from git/svn repos) + including symlinks pointing to ./ + + Meson: Use correct C++ host compiler (rather than C compiler) + + Updated/fixed packages: asterisk, batman-adv, bind, + ca-certificates, docker-containerd, dovecot, + dovecot-pigeonhole, diffutils, efivar, git, gnuchess, gnutls, + grub2, fakeroot, haserl, imagemagick, irqbalance, jasper, + kodi, libcurl, libebml, libglib2, libjpeg, libopenssl, + libupnp, libvips, lldpd, mariadb, mbedtls, mosquitto, nodejs, + netsnmp, nettle, openldap, openmpi, openssh, opkg-utils, perl, + php, privoxy, prosody, protobuf, python-aiohttp, + python-django, python-lxml, python-pyyaml, python-rpi-ws281x, + python3, redis, rpm, sconeserver, screen, sox, sqlcipher, + squid, sysvinit, tor, transmission, tzdata, uboot, upx, + util-linux, wireshark, wolfssl, wpa_supplicant, zstd + + Issues resolved (http://bugs.uclibc.org): + + #13516: utils/scanpypi: Failure when parsing diffoscope + #13541: 2021.02.rc2: irqbalance: Daemon couldn't be bound to.. + #13576: Issues compiling buildroot for 5x86 + #13581: jpegsrc.v9d.tar.gz has changed hash + #13616: tar file from git repository generation issue + +2020.02.11, released February 17, 2021 + + Important / security related fixes. + + meson: Fix ccache detection handling when per-package builds + are used. + + Fakeroot: Fix compatibility issue with glibc 2.33 + + Updated/fixed packages: atftp, busybox, cereal, connman, + dhcpcd, dnsmasq, docker-cli, docker-engine, fakeroot, + intel-mediadriver, intel-microcode, jasper, + kodi-inputstream-adaptive, libbsd, libopenssl, linux-headers, + mosquitto, orc, php, postgresql, privoxy, pugixml, + python-bottle, python-django, python3, rauc, sox, subversion, + tzdata, wireguard-linux-compat, wpa_supplicant, xenomai, xterm + + Issues resolved (http://bugs.uclibc.org): + + #13506: BR2_PACKAGE_DHCPCD missing directory creation + +2020.02.10, released January 31st, 2021 + + Important / security related fixes. + + Download: Ensure git submodules are correctly fetched if + enabled for a package with _GIT_SUBMODULES = YES and the + host variant is downloaded first. + + Toolchain: Mark CodeSourcery Aarch64 2014.11 toolchain as not + having libatomic. + + pkg-stats: Fix python 3.8+ deprecation warning. + + meson: Ensure ccache is not detected and used, as it may + conflict with the ccache handling in Buildroot. + + New packages: libnpupnp + + Updated/fixed packages: bctoolbox, brltty, dbus, dovecot, + dovecot-pigeonhole, gcc, gerbera, gmrender-resurrect, gst-omx, + gst1-plugins-bad, gst1-plugins-base, gst1-plugins-good, + gst1-plugins-ugly, gst1-rtsp-server, gst1-vaapi, + gst1-validate, gstreamer1, gstreamer1-editing-services, + igd2-for-linux, libclc, libllcp, libtorrent-rasterbar, + libupnp, libupnpp, lpc32xxcdl, luarocks, mpd, nfs-utils, + nodejs, openjpeg, openldap, opentracing-cpp, openvpn, p11-kit, + paho-mqtt-c, php, poppler, postgresql, python3, runc, sudo, + syslog-ng, systemd, tini, trace-cmd, tzdata, ushare, vlc, + wavpack, wireguard-linux-compat, wolfssl, xapp_xload, xorriso, + zic + + Removed packages: libupnp18 + + Issues resolved (http://bugs.uclibc.org): + + #13471: package/mpd/mpd.conf make use of path not created + +2020.02.9, released December 27th, 2020 + + Important / security related fixes. + + Infrastructure: + - cmake: fix host ccache handling for CMake 3.19 + - meson: Forcibly disable binary stripping for + target builds, enable for host builds + - golang: Fix HOST / TARGET directories for per-package builds + + Defconfigs: Beaglebone Qt5: Fix ti-sgx related issues + + Updated/fixed packages: apitrace, arm-trusted-firmware, + bustle, c-ares, ca-certificates, cdrkit, cryptopp, dhcpcd, + docker-containerd, dtv-scan-tables, flare-engine, ghostscript, + haproxy, imagemagick, imx-gpu-viv, jasper, jemalloc, + jpeg-turbo, libcap, libcurl, libglib2, libgpiod, libkrb5, + libopenssl, libplist, libressl, libuv, libuvw, lynx, mariadb, + mbedtls, minidlna, monkey, musl, mutt, ncurses, netsnmp, + nodejs, opencv3, openldap, openrc, opkg-utils, paho-mqtt-c, + php, privoxy, proftpd, python-crc16, python-flask-cors, + python-lxml, python-pip, python-pyparsing, python-pyqt5, qemu, + qt5base, raptor, rauc, ruby, setserial, shadowsocks-libev, + slirp, sqlcipher, ti-sgx-demos, tinycbor, vsftpd, + wireless-regdb, wireshark, x11vnc, xen, xinetd, + xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #13276: libcap builds libcap.pc incorrectly + #13316: beaglebone_qt5_defconfig: PowerVR fails to start + #13341: Mistake in /etc/init.d/S70vsftpd + +2020.02.8, released November 16th, 2020 + + Important / security related fixes. + + Updated/fixed packages: angularjs, argp-standalone, asterisk, + bandwidthd, bitcoin, busybox, cryptsetup, darkhttpd, davfs2, + docker-cli, docker-containerd, docker-engine, + dovecot-pigeonhole, fastd, fbset, fbtft, freetype, gcc, + ghostscript, gnuradio, grpc, gst1-plugins-bad, jsoncpp, + keepalived, libass, libexif, libiqrf, libpam-tacplus, libraw, + linux-backports, linux-firmware, lzlib, netsnmp, nginx, + oniguruma, opencv3, openntpd, patchelf, php, postgresql, + python-pyqt5, qt5base, rauc, redis, samba4, slirp, systemd, + tcpdump, tmux, tor, webkitgtk, wireguard-linux-compat, + wireshark, wpewebkit, xen, xorriso, zeromq, zxing-cpp + + Issues resolved (http://bugs.uclibc.org): + + #11931: Bugs in support/scripts/apply-patches.sh + +2020.02.7, released October 12th, 2020 + + Important / security related fixes. + + meson: Correct SDK cross-compilation.conf file when + per-package builds were used to build SDK. + + systemd: Use /run rather than /var/run for PID files in units. + + Toolchain: use Secure-PLT rather than BSS-PLT for PowerPC 32. + + support/script/pycompile: Rework logic to ensure .pyc files + contain absolute target paths, fixing code inspection at + runtime when executed with cwd != '/'. + + support/scripts/setlocalversion: Correct Mercurial output to + match behaviour with Git. + + support/scripts/apply-patches.sh: Use patch + --no-backup-if-mismatch, so we no longer blindly have to + remove *.orig files after patching, fixing issues with + packages containing such files. + + Updated/fixed packages: bandwidthd, barebox, bash, bison, + brotli, cifs-utils, cryptsetup, dhcpcd, dhcpdump, docker-cli, + docker-engine, ecryptfs-utils, efl, fail2ban, freetype, gcc, + gdb, ghostscript, gnutls, go, gst1-plugins-base, + gst1-plugins-ugly, ipmitool, libhtp, libraw, libssh, libxml2, + libxml-parser-perl, localedef, lua, memcached, mesa3d, meson, + minidlna, nginx, nodejs, nss-pam-ldapd, openvmtools, php, + postgresql, python, python-aenum, python-autobahn, + python-engineio, python-fire, python-pymodbus, python-scapy, + python-semver, python-sentry-sdk, python-socketio, + python-texttable, python-tinyrpc, python-txtorcon, python3, + qt5base, runc, samba4, strace, supertux, suricata, systemd, + vlc, wayland-protocols, wireguard-linux-compat, wireshark, + xserver_xorg-server, zeromq, zstd + + Issues resolved (http://bugs.uclibc.org): + + #12911: usb_modeswitch installation race condition + #13251: cryptsetup does not work on branch 2020.02 following.. + +2020.02.6, released September 5th, 2020 + + Important / security related fixes. + + Fix a 2020.02.5 build regression in busybox when systemd (and + not less) are enabled because of missing infrastructure. + + Updated/fixed packages: alsa-utils, avahi, busybox, cups, + docker-cli, graphite2, imagemagick, libeXosip2, mbedtls, + nvidia-driver, paho-mqtt-c, python-django, systemd, uclibc, + usb_modeswitch, wolfssl + + Issues resolved (http://bugs.uclibc.org): + + #12911: usb_modeswitch installation race condition + +2020.02.5, released August 29th, 2020 + + Important / security related fixes. + + Infrastructure: Ensure RPATH entries that may be needed for + dlopen() are not dropped by patchelf. + + BR_VERSION_FULL/setlocalversion (used by make print-version + and /etc/os-release): Properly handle local git tags + + Updated/fixed packages: apache, at91bootstrap3, bind, boost, + busybox, capnproto, chrony, collectd, cpio, cryptsetup, cups, + cvs, dbus, docker-engine, domoticz, dovecot, + dovecot-pigeonhole, dropbear, efl, elixir, f2fs-tools, ffmpeg, + gd, gdk-pixbuf, ghostscript, glibc, grub2, gst1-plugins-bad, + hostapd, iputils, jasper, json-c, libcurl, libwebsockets, + linux, live555, mesa3d, mosquitto, mpv, nodejs, opencv, + opencv3, openjpeg, patchelf, perl, php, postgresql, + python-django, python-gunicorn, python-matplotlib, ripgrep, + rtl8188eu, rtl8821au, ruby, shadowsocks-libev, squid, + tpm2-abrmd, tpm2-tools, trousers, uacme, webkitgtk, wireshark, + wolfssl, wpa_supplicant, wpewebkit, xen, xlib_libX11, + xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #12876: nodejs fails to build when host-icu has been built before + #13111: python-gunicorn: missing dependency on python-setuptools + #13121: wpa_supplicant fails to build without libopenssl enabled + #13141: Target-finalize fail with "depmod: ERROR: Bad version passed" + #13156: package live555 new license + +2020.02.4, released July 26th, 2020 + + Important / security related fixes. + + Toolchain: + - Make external toolchain version check also work for + toolchains configured with --with-gcc-major-version-only + + - Do not handle SOURCE_DATE_EPOCH in toolchain wrapper if the + compiler supports it, fixing an issue with precompiled + headers + + - Ensure debug libs from external toolchains are not installed + into target if debugging is disabled + + Download: + - Correct reproducibility issue in handling of git submodules + for older git versions. + + - Fix file locking over NFS + + fs: Ensure cpio archive element order is reproducible + + Br2-external: Fix error reporting for invalid br2-external trees + + Per-package: + - Fix an issue with python3 sysconfig data not getting + correctly expanded + + - Fix per-package building for packages using the qmake + infrastructure + + Updated/fixed packages: a10disp, asterisk, bind, cdrkit, + checkpolicy, clamav, dbus, docker-cli, docker-engine, + dvb-apps, e2fsprogs, exim, exiv2, freerdp, gnutls, go, grub2, + gssdp, gst1-plugins-good, gst1-plugins-ugly, gupnp, + intel-microcode, iproute2, irrlicht, iwd, jq, kodi, libcamera, + libconfuse, libcurl, libglib2, libhttpserver, libmicrohttpd, + libopenssl, libvncserver, libxml2, libxmlrpc, lxc, mbedtls, + mesa3d, meson, mongodb, mtools, mutt, nghttp2, ngircd, nodejs, + ntp, open-plc-utils, open2300, openjdk-bin, openssh, + oracle-mysql, paho-mqtt-c, pcre, php, poco, prosody, putty, + python-twisted, python-urllib3, python-validators, python3, + qt5xmlpatterns, redis, rpi-firmware, rtl8821au, samba4, sdl2, + sqlite, squid, syslog-ng, systemd, tcpreplay, tinydtls, + upmpdcli, upx, vlc, webkitgtk, wireguard-linux-compat, + wireshark, wpebackend-fdo, wpewebkit, zstd + + Issues resolved (http://bugs.uclibc.org): + + #12941: Python GObject fails to build when using BR2_PER_PACKAGE_.. + #12946: Grub: Decompressor is too big. + #12986: Mtools: Error converting to codepage 850 + #13001: openjdk-bin replaces libfreetype.so from host-freetype + #13011: Incorrect selection of gcc version + #13026: rpi-firmware: must not rename start files + #13031: nodejs: RangeError at new ArrayBuffer() + #13046: Optimize for fast -Ofast is not compliant + +2020.02.3, released June 3rd, 2020 + + Important / security related fixes. + + Fix various build issues of host packages on hosts using GCC + 10. + + Updated/fixed packages: arm-trusted-firmware, audit, bind, + binutils, bison, clamav, crda, dovecot, dtc, efl, elf2flt, + erlang, fakeroot, ffmpeg, fmc, fmlib, freerdp, gcc, git, + glib-networking, gnupg, leveldb, libexif, libssh2, + libusb-compat, linux-headers, lrzip, ltrace, mariadb, mesa3d, + mp4v2, openldap, openocd, perl, php, prosody, + python-pycryptodomex, python-pyqt5, qemu, rpi-firmware, rustc, + speexdsp, sysrepo, systemd, tremor, vboot-utils, wireshark, + xen + + Removed packages: python-pycrypto + + Issues resolved (http://bugs.uclibc.org): + + #12361: Init system (systemd) kills login on Raspberry Pi Zero + #12656: bison fails to relocate with relocate-sdk.sh + #12671: leveldb won't detect that snappy is present (static.. + #12691: host-rust build fails + #12831: RPI-firmware package: DTB-overlay dependency + +2020.02.2, released May 12th, 2020 + + Important / security related fixes. + + Musl: Disallow on PPC64 cores without AltiVec support + (E.G. e5500). + + fs/cpio: Correctly handle booting with 'console=' + + release: Ensure temporary .br2-external.* files are not + included in the release tarball + + Defconfigs: Fix various mistyped config options, or config + options where the dependencies were no longer met. + + Updated/fixed packages: apache, azure-iot-sdk-c, binutils, + boinc, c-ares, cvs, docker-cli, docker-containerd, + docker-engine, domoticz, e2fsprogs, efl, evtest, exim, ffmpeg, + freerdp, gcc, gflags, glibc, gnuconfig, haproxy, imx-gpu-2d, + irrlicht, jpeg kodi-pvr-vuplus, libarchive, libcoap, + libfpm-extra, libglib2, libhtp, libid3tag, libinput, libmad, + libopenssl, libsepol, libssh, libv4l, libvncserver, libwpe, + localedef, mariadb, matchbox, mbedtls, mc, mesa3d-headers, + meson, midori, msgpack, netsnmp, nginx, ogre, openjdk, + openldap, openvpn, p7zip, paho-mqtt-c, php, polkit, python, + python-attrs, python-crossbar, python-dpkt, python-flask, + python-future, python-iptables, python-jedi, python-markdown2, + python3, qemu, qpdf, qt5, samba4, squashfs, squid, strongswan, + suricata, tzdata, util-linux, vlc, wget, webkitgtk, + wireguard-linux-compat, wireshark, wpebackend-fdo, wpewebkit, + zic + + Issues resolved (http://bugs.uclibc.org): + + #11866: initramfs file system fails to boot using Grub on EFI x86_64 + #12271: python-iptables runtime dependencies + #12726: systemctl preset-all failed for ctrl-alt-del.target + #12751: OpenJdk package installation issues on target + #12796: Update OpenSSL to Version 1.1.1g to patch CVE-2020-1967 + #12811: bootstrap stuck and no login prompt + #12841: util-linux/sfdisk 2.35.1 fails on sector-size header + +2020.02.1, released April 10th, 2020 + + Important / security related fixes. + + core: Also fixup /lib references in libtool .la files, similar + to how it is done for /usr/*. + + Various fixes for builds with per-package target/host + directories. + + toolchain: Fix kernel headers validation check for external + toolchains. Fix make 4.3+ compatibility in external toolchain + logic. + + fs/initramfs: fix show-info so it also shows the usual + rootfs-related variables. + + Updated/fixed packages: arm-trusted-firmware, barebox-aux, + bluez5_utils, bubblewrap, busybox, civetweb, cog, collectd, + ffmpeg, gcc, gnutls, gssdp, gvfs, haproxy, hiredis, hostapd, + kmscube, kodi-screensaver-rsxs, libical, libinput, libexif, + libopenssl, libsndfile, linux, linux-tools, llvm, localedef, + mcrypt, mesa3d, meson, monit, nftables, ntp, opencv3, + oprofile, php, pinentry, polkit, pure-ftpd, python-pyyaml, + qt5, quagga, radvd, rcw, redis, rocksdb, samba4, screen, + sdbusplus, swupdate, sysdig, sysklogd, syslinux, syslog-ng, + tor, tslib, uacme, util-linux, vala, vlc, + wireguard-linux-compat, wireguard-tools, wireshark, + wpa_supplicant, xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #12711: host-localedef 2.30-20 fails to compile on fedora 32 + #12746: "sysdig" package description points to http://sysdig.org, .. + +2020.02, released March 8th, 2020 + + Various fixes. + + br2-external: Fix compatibility with make 4.3+ + + Updated/fixed packages: bash, bcm2835, binutils, cups, + erlang-p1-acme, fbgrab, gr-osmosdr, gst1-plugins-base, + gst1-validate, gstreamer1, guile, jhead, libdrm, libevdev, + libinput, libnss, libsndfile, libvncserver, linux-firmware, + mesa3d, nodejs, openjdk-bin, openvmtools, optee-test, patch, + php, piglit, pppd, python-django, qemu, qt5base, ruby, + ser2net, swupdate, thrift, zziplib + + Removed packages: classpath, jamvm + + Issues resolved (http://bugs.uclibc.org): + + #12606: fbgrab location has changed + +2020.02-rc3, released March 2nd, 2020 + + Fixes all over the tree. + + Infrastructure: Rework file list handling to fix race + conditions when building with per-package target and host + directories and top-level parallel builds. + + Updated/fixed packages: aufs, binutils, blktrace, brltty, + cairo, dnsmasq, docker-compose, elf2flt, exim, exiv2, git, + kodi-inputstream-adaptive, libarchive, libcgroup, libgdiplus, + libssh2, libvncserver, libvorbis, linknx, linux-firmware, lxc, + lz4, mosquitto, openjpeg, openrc, poco, proftpd, pure-ftpd, + python3, python-multidict, python-setuptools-scm-git-archive, + qpdf, qt5tools, rdesktop, rocksdb, shellinabox, squid, + suricata, swig, systemd, taglib, util-linux, wireshark, zsh + + Issues resolved (http://bugs.uclibc.org): + + #12571: ltp-testsuite : Build failure + #12576: 2020.02-RC1: error while loading shared libraries: ... + #12581: 2020.02-rc1 glibc failing to build on fedora 31 + +2020.02-rc2, released February 26th, 2020 + + Fixes all over the tree. + + Toolchain: Ensure strong SSP can only be enabled if the + (external) toolchain supports it. + + Fix a race condition related to creating the output/staging + symlink on systems with coreutils < 8.27. + + Drop support for the (end of life) Qt 5.6 variant. + + Updated/fixed packages: at, armadillo, audiofile, bash, + busybox, erlang, fail2ban, fluidsynth, ipsec-tools, jpeg-turbo, + kvm-unit-tests, libftdi1, libinput, libsvgtiny, libtomcrypt, + libupnpp, libxml2, linux-tools, luv, mbedtls, mesa3d, minicom, + openvmtools, php, qt5, qt5webengine, qwt, radvd, rcw, + sdbusplus, systemd, tpm2-tss, vorbis-tools + + Issues resolved (http://bugs.uclibc.org): + + #12581: 2020.02-rc1 glibc failing to build on fedora 31 + +2020.02-rc1, released February 18th, 2020 + + Fixes all over the tree and new features. + + Add experimental support for building with a per-package + target and host directory. This still has some rough edges, + but brings a number of advantages: + + - Packages will only be able to access the explicitly listed + dependencies and not any other packages that happen to be + built before, ensuring correct dependency information in + Buildroot. + + - Possibility for top-level parallel builds, speeding up + builds on multicore machines. + + Core: Ensure package-file-lists data is correct after + incremental builds as well. + + Architecture: Add support for ARC-HS38 with 64bit multiplier + variant, allow building glibc for big endian ARC, handle 16KB + MMU page size for ARC in toolchain wrapper. + + Toolchain: Add binutils 2.33.1, GCC 7.5.0, Arm 9.2-2019.12 + toolchains, ARC 2019.09 toolchain. Allow using custom kernel + headers newer than what is known by Buildroot. + + pkg-stats: Support for CVE vulnerability reporting by + comparing to NVD database. + + Reproducible builds: The go -trimpath option is now used to + get rid of absolute build paths, __FILE__ and __BASE_FILE__ + defines are now handled in the toolchain wrapper. + + Systemd: Build host variant and use systemctl to automatically + enable unit files rather than manually managing symlinks. + + Util-linux: Ensure that hwclock is built without GPLv3 + code. Notice that builds with hwclock has contained + GPLv3-licensed code since util-linux 2.30 (Buildroot 2017.08+) + + New defconfigs: Beelink GS1, Raspberrypi4 64bit + + New packages: alura, avro-c, bubblewrap, cctz, cereal, + cpuburn-arm, elixir, erlang-base64url, erlang-idna, + erlang-jose, erlang-p1-acme, erlang-p1-mqtree, + erlang-p1-yconf, fluid-soundfont, fluidsynth, gcnano-binaries, + gensio, glslsandbox-player, libargon2, libmodsecurity, + libpam-nfc, libtelnet, lua-codegen, lua-livr, lua-livr-extra, + lua-rotas, lua-silva, mfoc, network-manager-openvpn, + nginx-modsecurity, perl-crypt-openssl-aes, + perl-math-prime-util, pipewire, ptm2human, python-aenum, + python-aiohttp-debugtoolbar, python-aiohttp-mako, + python-aiologstash, python-aiosignal, python-aiozipkin, + python-async-lru, python-avro, python-bunch, python-crontab, + python-dnspython, python-entrypoints, python-esptool, + python-frozenlist, python-future, python-gitdb, python-janus, + python-lockfile, python-logstash, python-nested-dict, + python-pbr, python-pyaes, python-pydantic, python-smmap2, + python-sockjs, python-zc-lockfile, raspi-gpio, rocksdb, + sdbusplus, spidermonkey, thermald, ti-sgx-libgbm, tinyssh, + tio, umtprd, weston-imx, wireguard-linux-compat, + wireguard-tools, xdg-dbus-proxy + + Removed packages: bluez_utils, celt051, erlang-p1-iconv, fis, + gadgetfs-test, libplayer, gstreamer, gst-ffmpeg, + gst-fsl-plugins, gst-omapfb, gst-plugins-bad, + gst-plugins-base, gst-plugins-good, gst-plugins-ugly, + perl-digest-md5, perl-mime-base64, perl-net-ping, + python-scapy3k, wireguard + + Issues resolved (http://bugs.uclibc.org): + + #11906: the new version of mesa3d cannot support etnaviv when.. + #11996: opencv3 SIGILL on Cortex-A5 with VFPv4-D16 + #12121: PyQt5.QtSerialPort and other modules not being built + #12256: package tar is outdated (1.29 is 3 years old + #12286: Can't import gobject in python 3.8 + #12376: python-scapy3k is deprecated + #12386: carriage return issue when "make menuconfig" + #12441: qt5webengine build error: asm/errno.h: No such file or.. + #12446: Buildroot fails to finish installing packages + #12456: qtvirtualkeyboard: No such file or directory + #12461: libglib2 build files with deep directory structure + #12481: minicom fails when output directory path contains "m4" + #12501: libnss-3.49.1: ld error: multiple definition of `gcm_.. + #12526: host-nodejs 12.14.1: configure fail: AttributeError: .. + #12536: Linux-Headers extracting failure + #12546: Ninja 1.10 build Error + +2019.11.3, released April 10th, 2020 + + Important / security related fixes. + + core: Fix compatibility with make 4.3+. Also fixup /lib + references in libtool .la files, similar to how it is done for + /usr/*. + + toolchain: Fix kernel headers validation check for external + toolchains. + + fs/initramfs: fix show-info so it also shows the usual + rootfs-related variables. + + Updated/fixed packages: barebox-aux, bluez5_utils, busybox, + civetweb, cog, collectd, ffmpeg, gcc, gnutls, gssdp, gvfs, haproxy, + hiredis, hostapd, kmscube, libical, libopenssl, libsndfile, + linux-tools, llvm, monit, ntp, php, pure-ftpd, radvd, redis, + samba4, screen, sysdig, syslinux, syslog-ng, tor, uacme, + util-linux, vala, vlc, wpa_supplicant, xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #12746: "sysdig" package description points to http://sysdig.org, .. + +2019.11.2, released March 16th, 2020 + + Important / security related fixes. + + Core: Ensure package-file-lists data is correct after + incremental builds as well. + + Fix a race condition related to creating the output/staging + symlink on systems with coreutils < 8.27. + + Toolchain: ARC tools bumped to arc-2019.09. + + Br2-external: Fix patch handling when external linux-extension + packages are used. Fix compatibility with make 4.3+ + + Util-linux: Ensure that hwclock is built without GPLv3 + code. Notice that builds with hwclock has contained + GPLv3-licensed code since util-linux 2.30 (Buildroot 2017.08+) + + Updated/fixed packages: armadillo, at, bcm2835, binutils, + blktrace, bluez-alsa, bootstrap, brltty, busybox, cairo, + clamav, cog, cups, czmq, dnsmasq, docker-containerd, dovecot, + dovecot-pigeonhole, e2fsprogs, elf2flt, eudev, exim, exiv2, + fbgrab, gettext-tiny, glibc, go, grep, gst1-validate, guile, + imagemagick, jhead, jpeg-turbo, kvm-unit-tests, lapack, + libarchive, libcgroup, libdrm, libevent, libexif, libftdi1, + libgdiplus, libjpeg, libsigrok, libsndfile, libssh2, + libsvgtiny, libvncserver, libvorbis, libxml2, libxslt, linknx, + lxc, lz4, mariadb, mbedtls, meson, mongoose, mosquitto, musl, + ncurses, nodejs, ntfs-3g, ogre, opencv3, openjdk, openjpeg, + openrc, openswan, openvmtools, optee-test, patch, php, piglet, + postgresql, pppd, proftpd, pure-ftpd, python-django, + python-pyqt5, python-setuptools-scm-git-archive, python3, + qemu, qt5base, qt5tools, qt5virtualkeyboard, qt5webengine, + qwt, rdesktop, ruby, runc, samba4, shellinabox, + skeleton-init-openrc, smartmontools, spdlog, sqlcipher, squid, + suricata, swig, swupdate, sysklogd, taglib, thrift, + ti-cgt-pru, uclibc, util-linux, vorbis-tools, webkitgtk, + wireshark, wpebackend-fdo, wpewebkit, xen, + xserver_xorg-server, zeromq, zsh, zziplib + + Issues resolved (http://bugs.uclibc.org): + + #11996: opencv3 SIGILL on Cortex-A5 with VFPv4-D16 + #12331: meson issue + #12456: qtvirtualkeyboard: No such file or directory + #12461: libglib2 build files with deep directory structure + #12481: minicom fails when output directory path contains "m4" + #12606: fbgrab location has changed + +2019.11.1, released January 12th, 2020 + + Important / security related fixes. + + Infrastructure: kconfig: Fix reconfigure logic, python: Ensure + correct compiler and linker flags are used for compiled code + + utils/scanpypi: Remind users to update DEVELOPERS + + Defconfigs: imx6-sabresd: Fix the Qt5 display names, + imx8: Drop extra copy of U-Boot DTB + + Updated/fixed packages: acsccid, bitcoin, boost, busybox, + cc-tool, cmocka, cpio, cups, dante, dialog, dillo, docker-cli, + docker-containerd, docker-engine, easy-rsa, ebtables, + ecryptfs-utils, efl, ffmpeg, gdb, git, glibc, gnupg2, go, + gpsd, grpc, gst1-plugins-bad, iputils, jasper, + kf5-kcoreaddons, leveldb, libarchive, libfribi, libgit2, + libkrb5, libp11, librsvg, libssh, libtomcrypt, libuio, libv4l, + lirc-tools, log4cplus, lrzip, lvm2, mali-t76x, + matchbox-desktop, mender-grubenv, mmc-utils, mosquitto, + nodejs, ntp, openipmi, opencv3, openpowerlink, openrc, pango, + perl-sys-cpu, pimd, postgresql, pulseaudio, python-brotli, + python-coherence, python-crc16, python-django, python-dpkt, + python-gobject, python-pyasn-modules, python-pypcap, + python-pyqt5, python-subprocess32, python3, qpdf, + qt-webkit-kiosk, qt5virtualkeyboard, qt5webengine, quota, + rabbitmq-c, rauc, rpcbind, rtl8821au, runc, rygel, samba4, + sdl2, setserial, snort, spidev_test, + sunxi-mali-mainline-driver, syslog-ng, sysrepo, tcllib, tftpd, + usbmount, w_scan, wavpack, wsapi, wsapi-fcgi, wsapi-xavante, + x265, xserver_xorg-server, ytree, zip + + Issues resolved (http://bugs.uclibc.org): + + #12121: PyQt5.QtSerialPort and other modules not being built + #12286: Can't import gobject in python 3.8 + +2019.11, released December 1st, 2019 + + Various fixes. + + Infrastructure: Make HOST__DL_OPTS inherit from + _DL_OPTS by default, just like it is done for a number of + other package variables. + + Add _KEEP_PY_FILES to exclude specific python .py files + from the removal done by BR2_PACKAGE_PYTHON{,3}_PYC_ONLY for + the (rare) case where the .py files are needed at runtime + rather than .pyc. + + Updated/fixed packages: am33x-cm3, bind, collectd, go, gob2, + gst1-plugins-bad, haproxy, jasper, jpeg-turbo, libdrm, + libftdi, libftdi1, libnss, libselinux, libstrophe, lzma, + minicom, network-manager, nodejs, oniguruma, opencv3, + openvmtools, perl-gdgraph, perl-gdtextutil, prosody, + python-cchardet, systemd, tiff, wolfssl, + + Issues resolved (http://bugs.uclibc.org): + + #11416: check-uniq-files staging issue + #12146: Oprofile runtime issue + #12166: Compiling nodejs for SAMA5D3 always crash with illegal inst.. + #12171: Python-opencv needs config.py and config-3.7.py to run.. + #12196: duma package + #12211: host-nodejs 10.15.3 package fail to build + #12316: tzdata fails to install with empty "default local time" + #12326: network-manager build fails with missing glib error + #12366: Gstreamer1 gst1-plugins-bad do not compile with RPI-Userland + +2019.11-rc3, released November 24th, 2019 + + Fixes all over the tree. + + Updated/fixed packages: asterisk, clamav, domoticz, faifa, + gerbera, kmod, kvm-unit-tests, libupnp18, linux-serial-test, + lsof, ltp-testsuite, lxc, mesa3d, mesa3d-headers, perl, php, + postgresql, qemu, rauc, redis, rpcbind, spice, spice-protocol, + systemd, tftpd, waylandpp, webkitgtk, zip + +2019.11-rc2, released November 16th, 2019 + + Fixes all over the tree. + + Toolchain: ARC tools bumped to arc-2019.09-rc1, ensure + external toolchain kernel headers version check correctly stop + the build on mismatch + + Meson: Fix generation of global cross-compilation.conf + + Download: Also use the package download method for extra + downloads from the same site, so it does not get confused by + URLs containing '+' + + Defconfigs: Fix boot issue for beaglebone + + Updated/fixed packages: bird, chrony, connman, dhcp, domoticz, + dropwatch, dtc, elf2flt, gettext-tiny, glog, intel-microcode, + ipsec-tools, jailhouse, kodi, libfribi, libmbim, libressl, + libsigrokdecode, libsvgtiny, linux-serial-test, ltp-testsuite, + lvm2, lxc, mariadb, mesa3d, minizip, ndisc6, neardal, ninja, + ofono, openvmtools, oracle-mysql, qt5wayland, safeclib, socat, + sudo, systemd, wpewebkit, xserver_xorg-server + +2019.11-rc1, released November 5th, 2019 + + Fixes all over the tree and new features. + + Dependencies: Gcc/g++ 4.8 or newer is now required on the + build host. + Ensure host has JSON::PP perl module installed if + webkitgtk/wpewebkit packages are enabled as it is needed + during their build process. + + Toolchain: Add support for the D programming language (GCC + 9.x, Glibc). + GCC 9.x updated to 9.2.0, Glibc updated to 2.30, Musl updated + to 1.1.24, uClibc-ng updated to 1.0.32, ARC toolchain updated + to arc-2019.09-eng002. + Musl: Add a patch to add support for + sched_{get,set}scheduler() and sched_{get,set}param() for + compatibility. + Generate check-headers program under BUILD_DIR rather than + /tmp to fix issues with distributions mounting /tmp noexec. + Also copy libssp.so for external toolchains if SSP + to handle toolchains providing SSP support in libssp rather + than in the C library + + New defconfigs: Beaglebone AI, FriendlyARM Nanopi NEO Plus2, + Libre Computer "La Frite", QEMU Armv7-A with trustzone/OP-TEE, + STM32MP157 Discovery Kit + + Arch: RISC-V: Default to a sensible floating point ABI based + on the selected ISA extensions rather than always defaulting + to ILP32/64 + + Graph-size: Package sizes are now shown in human readable form + (Kib/Mib/Gib) rather than always in Kib. Binary (KB/MB/GB) + format can be selected using the --binary option. The cut-off + limit for classifying packages as "other" is now configurable + using the --size-limit option. + + Br2-external: Linux kernel extensions can now also be provided + in an external tree by adding packages under + linux/linux-ext-*.mk. See the manual for details. + + Fakeroot now works correctly under Microsoft Windows 10 + Services for Linux, which does not provide SYSV IPC support + + The check-uniq-files logic which would complain if multiple + packages would touch the same files has been removed as it + causes issues in certain situations (when packages are + rebuilt) and the issue is no longer considered a problem for + toplevel parallel builds as those will use a per-package + staging/target directory. + With this removed, Python is no longer required for a basic + build (only for optional scripts). + + support/scripts/genimage.sh will no longer make a copy of + TARGET_DIR, speeding up post-build/image scripts. + + The runtime test logic now uses Python 3.x. + + A 'v' prefix has been dropped from the _SOURCE variable + for a number of packages to match the version numbers used by + https://release-monitoring.org + + New packages: caps, collectl, dav1d, fstrcmp, ima-evm-utils, + jitterentropy-library, kodi-vfs-rar, kodi-vfs-sftp, libavl, + libhttpserver, libmspack, libnetconf2, libolm, libyang, + linux-serial-test, lrzip, mdevd, minimodem, musl-fts, netifrc, + ogre, openlayers, python-aioredis, python-asgiref, + python-backports-functools-lru-cache, python-bluezero, + python-brotli, python-channels, python-channels-redis, + python-colorlog, python-daphne, python-django-enumfields, + python-jaraco-functools, python-kiwisolver, python-msgfy, + python-rpi-ws281x, python-setuptools-scm-git-archive, + python-simplelogging, python-soupsieve, python-sqliteschema, + python-sqlparse, python-tqdm, python-webencodings, qt5webview, + restclient-cpp, ripgrep, snmpclitools, sunwait, sysrepo, + uacme, utf8proc, uvw, ytree + + Removed packages: alljoyn, alljoyn-base, alljoyn-tcl-base, + devmem2, eventlog, kodi-audiodecoder-opus, + kodi-screensaver-planestate, kodi-visualisation-waveforhue, + python-pysnmp-apps, riscv-pk, ustr + + Issues resolved (http://bugs.uclibc.org): + + #9881: systemd-resolved not setting resolv.conf link + #10171: devmem2 w (word) is 8 bytes in x86 64 systems + #10586: musl gcc has ifunc enabled when musl doesn't support it + #10806: Allow nfs-utils to use ipv6 + #11366: [2018.08] SysV IPC not available for fakeroot on WSL + #11411: check-uniq-files target issue + #11766: Console (getty) issues with systemd + #11781: mariadb build error + #12031: Build of cups-filters fails while linking, apparently due.. + #12116: console prompt does not appear after login + #12141: eudev package is missing "render" and "kvm" groups + #12181: dropbear: norootlogin (-w) no longer works when PAM is enabled + #12186: Raspberry Pi Zero-W build fails on newer kernel versions + #12191: cmake BUILDDIR + #12241: Permission denied while running "make" + #12261: sudo versions prior to 1.8.28 are affected. + #12276: make clean/distclean does not remove BR2_DL_DIR and BR2_HOST_DIR + #12281: Custom configuration fails to build (based on raspberrypi3_.. + +2019.08.3, released December 7th, 2019 + + Important / security related fixes. + + Infrastructure: Make HOST__DL_OPTS inherit from + _DL_OPTS by default, just like it is done for a number of + other package variables + + Add _KEEP_PY_FILES to exclude specific python .py files + from the removal done by BR2_PACKAGE_PYTHON{,3}_PYC_ONLY for + the (rare) case where the .py files are needed at runtime + rather than .pyc. + + Fix -reconfigure handling for packages using the kconfig + infrastructure. + + Toolchain: ensure external toolchain kernel headers version + check correctly stop the build on mismatch + + Deconfigs: beaglebone: fix boot issue + + Updated/fixed packages: am33x-cm3, asterisk, bind, chrony, + clamav, cmocka, collectd, connman, dhcp, dropwatch, faifa, + gettext-tiny, gob2, haproxy, intel-microcode, ipsec-tools, + jailhouse, jasper, jpeg-turbo, kodi, kvm-unit-tests, libftdi, + libftdi1, libnss, libressl, libstrophe, libsvgtiny, lvm2, + lzma, mariadb, minicom, mosquitto, neardal, ninja, nodejs, + oniguruma, openvmtools, oracle-mysql, perl-gdgraph, + perl-gdtextutil, php, postgresql, prosody, python-cchardet, + python-django, qt5wayland, rabbitmq, rauc, redis, rpcbind, + socat, spice, spice-protocol, tftpd, tiff, webkitgtk + + New packages: libmspack + + Issues resolved (http://bugs.uclibc.org): + + #12166: Compiling nodejs for SAMA5D3 always crash with illegal inst.. + #12171: Python-opencv needs config.py and config-3.7.py to run.. + #12211: host-nodejs 10.15.3 package fail to build + #12316: tzdata fails to install with empty "default local time" + +2019.08.2, released November 9th, 2019 + + Important / security related fixes. + + Toolchain: Also copy libssp.so for external toolchains if SSP + to handle toolchains providing SSP support in libssp rather + than in the C library + + Download: Also use the package download method for extra + downloads from the same site, so it does not get confused by + URLs containing '+' + + Fakeroot now works correctly under Microsoft Windows 10 + Services for Linux, which does not provide SYSV IPC support + + utils/test-pkg: ensure to exit with an error upon failure + + Updated/fixed packages: asterisk, azmq, binutils, + cups-filters, domoticz, dtc, duma, elf2flt, eudev, exfat, + exfat-utils, fakeroot, fdk-aac, file, freerdp, gcc, gd, + ghostscript, go, gpsd, grpc, gst1-plugins-base, gvfs, icu, + intel-microcode, kvm-unit-tests, libfribidi, libnspr, libnss, + libopenssl, libpcap, libpciaccess, librsvg, libseccomp, + libsigrok, libtorrent, libunwind, libva, linux-tools, + lua-sdl2, lxc, minizip, mjpegtools, mongoose, mono, nbd, + nfs-utils, php, piglit, python, python-autobahn, + python-pysnmp-apps, python-tornado, python3, qemu, qt5base, + ruby, safeclib, samba4, sdl_mixer, sox, sudo, suricata, + systemd, tcpdump, unscd, util-linux, vdr-plugin-vnsiserver, + vtun, wireshark, xvisor, yaffs2utils + + Issues resolved (http://bugs.uclibc.org): + + #11366: [2018.08] SysV IPC not available for fakeroot on WSL + #12261: sudo versions prior to 1.8.28 are affected + +2019.08.1, released October 3rd, 2019 + + Important / security related fixes. + + Defconfigs: AArch64-efi: Fix grub configuration, Beaglebone: + Use default console settings + + Dependencies: Ensure host has JSON::PP perl module installed + if webkitgtk/wpewebkit packages are enabled as it is needed + during their build process. + + Toolchain: Generate check-headers program under BUILD_DIR + rather than /tmp to fix issues with distributions mounting + /tmp noexec. + + Updated/fixed packages: asterisk, augeas, axel, bind, bwm-ng, + cups, cups-filters, docker-cli, docker-engine, docker-proxy, + e2fsprogs, eudev, exim, expat, gcc, go, haveged, ifplugd, joe, + kf5-extra-cmake-modules, kf5-modemmanager-qt, + kf5-networkmanager-qt, libcamera, libcurl, libgcrypt, + libglib2, libgpg-error, libnspr, libnss, libopenssl, + logrotate, luksmeta, mariadb, mbedtls, mongodb, mosquitto, + ncurses, nfs-utils, nghttp2, nodejs, openvmtools, php, + protobuf, putty, qemu, samba4, snort, swupdate, + systemd-bootchart, thttpd, uclibc, unzip, util-linux, + wireshark + + Issues resolved (http://bugs.uclibc.org): + + #10806: Allow nfs-utils to use ipv6 + #11781: mariadb build error + #12031: Build of cups-filters fails while linking, apparently due.. + #12141: eudev package is missing "render" and "kvm" groups + #12241: Permission denied while running "make" + +2019.08, released September 1st, 2019 + + Various fixes. + + Defconfigs: Removed nanopc t4, nanopi m4 and neo4, pine64 + rockpro64 and raxda rock pi4 as they rely on a ARM32 toolchain + on the build host to build ATF. These defconfigs will be added + back once a package providing such toolchain is + available. Also dropped ts4800 defconfig as it does not build + with GCC >= 8.x. + + Updated/fixed packages: libxcb, php, python-numpy, webkitgtk, + wpewebkit, xfont_font-util + + Issues resolved (http://bugs.uclibc.org): + + #12156: buildroot-2019.08-rc3 does not build for Pi Zero W + +2019.08-rc3, released August 28th, 2019 + + Fixes all over the tree. + + Updated/fixed packages: clamav, dovecot, dovecot-pigeonhole, + gcc, intel-microcode, libmicrohttpd, libmodplug, mpg123, + nginx, openldap, python, qemu, samba4, squid, strace, vlc + + Issues resolved (http://bugs.uclibc.org): + + #11686: fbdev_drv.so: undefined symbol: shadowUpdatePackedWeak,.. + +2019.08-rc2, released August 20th, 2019 + + Fixes all over the tree. + + Compile fixes for a number of defconfigs. + + Updated/fixed packages: apache, autofs, batctl, batman-adv, + bind, collectd, cwiid, dahdi-linux, dahdi-tools, daq, + dehydrated, dhcp, dtc, efl, enlightenment, evtest, giflib, + gnutls, go, gst-plugins-bad, gst-plugins-base, + gst1-plugins-bad, gst1-plugins-base, gst1-rtsp-server, gtkmm3, + gupnp, harfbuzz, imagemagick, lftp, libbsd, libcpprestsdk, + libdnet, libfm, libgit2, libgtk2, libgtk3, libpri, librsvg, + libss7, libssh2, libwpe, lua-cqueues, metacity, micropython, + mpd, mpg123, musl, mpv, openblas, openbox, opencv, pango, + pcmanfm, piglit, pigpio, pinentry, postgresql, qemu, qt5base, + qt5enginio, qt5multimedia, qt5serialbus, quagga, quazip, + rrdtool, rygel, samba4, stellarium, tcpreplay, ti-gfx, vte, + wampcc, wilink-bt-firmware, wireless-regdb, wpebackend-fdo, + xscreensaver + + Removed packages: libamcodec, odroid-mali, odroid-scripts + + Issues resolved (http://bugs.uclibc.org): + + #9481: NetworkManager/Ping unable to resolve domains + #10566: php.mk is missing option --with-pgsql + #10861: Package batman_adv Makefile is missing include header direct.. + #11641: linux kernel .config timestamp always out of date fixed with.. + #11671: russian locale ru_RU:145: LC_TIME: syntax error + #11701: recuuring of usr and in bin shortcuts are created + #11741: pigpio does not build host-pigpio + #11876: automount using host mount/umount + #11881: Build breaks with lftp package enabled and libexpat1-dev inst.. + #11921: dahdi fails to build + #11936: libcpprestsdk should install to staging + #11946: wilink-bt-firmware: moved from github to http://git.ti.com/ti-bt + #11961: libpri build failure + #12086: dhcp shared libraries not installed to target + #12096: tcpreplay: build fails if libdumbnet-dev is installed in the.. + #12106: daq: build fails if libdumbnet-dev is installed in the host + #12126: vc4 has neon as hard dependency + +2019.08-rc1, released August 9th, 2019 + + Fixes all over the tree and new features. + + toolchain: ARC toolchain updated to 2019.03 (binutils 2.32.51 + / GCC 8.3.1 / glibc 2.29), ARM AAarch64/ARM toolchains updated + to 2019.03. Add GCC 9.1.0, remove GCC 4.9 and 6.5, add GDB + 8.3, remove GDB 7.12 and 8.0.1, default to GDB 8.2, GCC + 8.3.0. Musl updated to 1.1.23, bringing support for RISC-V 64. + + Architectures: Internal toolchain support for C-SKY, support + for ARC HS48 v3.1 and HS38 with Quad MAC & FPU, support for + ARM A76, A76/A55 big.LITTLE, emag, neoverse-N1, phecda and + tsv110. + + Filesystems: Pass extra pax options to tar for binary + reproducibility. Build host-cpio for the --reproducible option + support when BR2_REPRODUCIBLE is enabled. Genimage updated to + version 11, bringing GPT support. + + Br2-external: Add support for injecting additional options to + the list of preconfigured external toolchains and libjpeg and + openssl providers using files under provides/. See the manual + for details. + + Ensure custom _OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS are + passed before the standard exclusions so they are not ignored + by rsync when using override-srcdir. + + Gnuconfig updated to 2019-05-28, adding C-SKY support. + + test-pkg: Correct long option handling and clean output dir + after a successful build to save disk space. + + support/testing: Emulate a machine with 256MB RAM to fix + issues with certain tests running out of memory, use + virtio-rng to provide needed entrophy. + + pkg-stats: support outputting in JSON format with --json for + easier post processing. The classic HTML output is still + available with --html. Parallelize access to + release-monitoring.org to speed up runtime. + + Drop non-conventional version prefix/suffix/separators for + packages for better compatibility with release-monitoring.org + + Packages: + Init systems: Add basic openrc support and + _INSTALL_INIT_OPENRC variable in the infrastructure to + install openrc service scripts if enabled. + + busybox: Build each applet as a separate binary when SELinux + is enabled for more finegrained policy control. Use daemon + mode for mdev rather than legacy hotplug. + + linux: Workaround -Werror related build failure on powerpc, + by forcing CONFIG_PPC_DISABLE_WERROR on. + + Defconfigs: QEMU: use 'rootwait' kernel option to ensure root + partition is available before mounting. + + New defconfigs: HiFive Unleashed, I.MX8MM EVK and Pico, Nanopi + m4 and neo4, Nanopc t4, Olimex A33 olinuxino, Pine64 + Rockpro64, PowerPC mac99, QEMU C-SKY 610/807/810/860 virt, + Raspberry Pi 4, Raxda rock pi4, Solidrun Clearfog GT-8K + + Removed defconfigs: Odroid C2 + + New packages: bitcoin, c-capnproto, fatcat, ifmetric, jack1, + jailhouse, libubootenv, luasyslog, mender-grubenv, + murata-cyw-fw, openrc, piglit, python-colorama, python-cycler, + python-hiredis, python-ifaddr, python-inflection, + python-iptables, python-matplotlib, python-periphery, + python-pycairo, python-redis, python-termcolor, + python-tinyrpc, python-txdbus, skeleton-init-openrc, spdlog, + sshguard, stellarium, zziplib + + Removed packages: xapp_mkfontdir + + Issues resolved (http://bugs.uclibc.org): + + #11096: Upgrade from glibc 2.26 to 2.27 broke some locales... + #11271: utils/check-package fails with exception depending on.. + #11991: [numpy] segfault when compiling for RPi3 64bits + #12016: Grub fails to boot bzImage after upgrade to 2019.05 + #12046: Can’t login as root user after upgrading to buildroot.. + #12051: package/dhcp installs libtool wrapper scripts on tar... + #12076: Patchelf can link against an incompatible libc++ ver... + +2019.05.3, Released October 3rd, 2019 + + Important / security related fixes. + + Defconfigs: AArch64-efi: Fix grub configuration, Beaglebone: + Use default console settings + + Dependencies: Ensure host has JSON::PP perl module installed + if webkitgtk/wpewebkit packages are enabled as it is needed + during their build process. + + Toolchain: Generate check-headers program under BUILD_DIR + rather than /tmp to fix issues with distributions mounting + /tmp noexec. + + Updated/fixed packages: asterisk, augeas, bind, bwm-ng, cups, + cups-filters, docker-cli, docker-engine, docker-proxy, + e2fsprogs, eudev, exim, expat, gcc, go, haveged, ifplugd, + iptables, joe, kf5-extra-cmake-modules, kf5-modemmanager-qt, + kf5-networkmanager-qtlibcamera, libcurl, libgcrypt, + libgpg-error, libnftl, libnspr, libnss, libopenssl, + libtorrent-rasterbar, luksmeta, mariadb, mbedtls, mongodb, + mosquitto, ncurses, nfs-utils, nghttp2, nodejs, openvmtools, + php, protobuf, putty, qemu, samba4, swupdate, + systemd-bootchart, thttpd, uclibc, unzip, util-linux, + wireshark + + Issues resolved (http://bugs.uclibc.org): + + #10806: Allow nfs-utils to use ipv6 + #11781: mariadb build error + #12031: Build of cups-filters fails while linking, apparently due.. + #12141: eudev package is missing "render" and "kvm" groups + #12241: Permission denied while running "make" + +2019.05.2, Released September 3rd, 2019 + + Important / security related fixes. + + Filesystems: Pass extra pax options to tar for binary + reproducibility. + + Updated/fixed packages: apache, arm-trusted-firmware, + asterisk, atk, autofs, batctl, batman-adv, berkeleydb, + busybox, bzip2, clamav, cloop, cmake, collectd, connman-gtk, + dahdi-linux, dahdi-tools, daq, dehydrated, dhcp, dovecot, + dovecot-pigeonhole,, elfutils, evtest, exim, expect, giflib, + git, glib-networking, glibc, gnupg2, gnutls, go, + gst1-rtsp-server, gtkperf, gupnp-tools, gvfs, imagemagick, + imx-uuc, intel-microcode, json-glib, lftp, libbsd, libcurl, + libgit2, libgtk2, libgtk3, libmodplug, libnss, libpri, + libshout, libss7, libssh2, libvips, libxcb, linux-headers, + mdadm, mesa3d, metacity, mpg123, mosquitto, musl, nginx, + oniguruma, openblas, opencv3, openjdk, openjdk-bin, openldap, + openvmtools, pcmanfm, php, pigpio, postgresql, prboom, + proftpd, proj, python, python-django, python-idna, + python-numpy, python-urllib3, python3, qemu, qt5, qt5base, + qt5enginio, quagga, rygel, squid, subversion, tcpreplay, + unzip, vlc, vte, webkitgtk, wireless-regdb, xen, + xfont_font-util, xlib_libICE, xlib_libXfont, xlib_libXfont2, + yad, zeromq + + Issues resolved (http://bugs.uclibc.org): + + #11741: pigpio does not build host-pigpio + #11876: automount using host mount/umount + #11881: Build breaks with lftp package enabled and libexpat1-dev inst.. + #11921: dahdi fails to build + #11961: libpri build failure + #12086: (dhcpd-missing-libs) - dhcp shared libraries not installed to.. + #12096: tcpreplay: build fails if libdumbnet-dev is installed in the.. + #12106: daq: build fails if libdumbnet-dev is installed in the host + #12126: vc4 has neon as hard dependency + +2019.05.1, Released July 7th, 2019 + + Important / security related fixes. + + arch: x86: Fix typo breaking 'core-avx2' variant + + linux: Workaround -Werror related build failure on powerpc, + by forcing CONFIG_PPC_DISABLE_WERROR on. + + support/testing: Emulate a machine with 256MB RAM to fix + issues with certain tests running out of memory. + + test-pkg: Correct long option handling and clean output dir + after a successful build to save disk space. + + Defconfigs: QEMU: use 'rootwait' kernel option to ensure root + partition is available before mounting. + + Updated/fixed packages: barebox, busybox, bzip2, davfs2, + dialog, docker-cli, docker-engine, exim, expat, faad2, + haveged, irssi, libcamera, libcdaudio, libcurl, libglib2, + libressl, libsecret, lmbench, meson, monit, php, postgresql, + psplash, python-django, qt5base, tvheadend, webkitgtk, + xserver_xorg-server, znc + +2019.05, released June 2nd, 2019 + + Various fixes. + + Toolchain: Ensure pre-built Andes toolchains can only be + selected when x86 32bit support is available on the host. + Disallow PowerPC SPE ABI for GCC >= 8.x, as it is no longer + supported. + + Infra: pkg-config: Use a dedicated timestamp file rather than + .config as that gets touched by linux-4.19+, causing repeated + builds. + + Add C-SKY support to our config.sub (gnuconfig) + + Updated/fixed packages: dosfstools, botan, brotli, dropbear, + flare-engine, gst1-plugins-bad, libhtp, libnss, libopenssl, + linuxptp, matchbox-panel, mender, mutt, netsurf, + network-manager, opencv3, openjdk, openmpi, php, + python-cython, qt5multimedia, qtwayland, qt5webkit-examples, + supertux, suricata, tpm2-totp, v4l2loopback, wireshark, + wpewebkit + +2019.05-rc3, released May 25th, 2019 + + Fixes all over the tree. + + check-bin-arch: Ignore /usr/lib/grub, similar to how /lib/grub + is ignored. + + check-package: Warn about utf-8 characters in .mk files + + Linux: Default to 5.1.x series + + Updated/fixed packages: assimp, atop, chocolate-doom, cjson, + ddrescue, dhcp, ffmpeg, gerbera, glibmm, gpsd, gst-ffmpeg, + intel-microcode, jasper, keepalived, kismet, libcpprestsdk, + libcurl, libssh2, libupnp18, luarocks, mono-gtksharp3, opus, + postgresql, pcsc-lite, python, tslib, webkitgtk, + wpebackend-fdo, wpewebkit + +2019.05-rc2, released May 15th, 2019 + + Fixes all over the tree. + + Updated/fixed packages: bind, bullet, ca-certificates, + collectd, cracklib, dhcp, gdb, libinput, libtorrent-rasterbar, + linknx, lynx, mono, netsurf, optee-os, postgresql, qt5enginio, + qt5multimedia, rpm, samba4, sqlite, strace, uclibc, woff2 + + Issues resolved (http://bugs.uclibc.org): + + #11841: grub-efi.cfg not used when building EFI disk image + +2019.05-rc1, Released May 8th, 2019 + + Fixes all over the tree and new features. + + Architecture: Andes 32-bit (nds32) support added. + + Only build host-lzip / host-xz when really needed by packages, + not just when not available on the build host. + + Toolchain: Glibc bumped to 2.29, musl bumped to 1.1.22, + binutils 2.32 added, 2.28/2.29 removed, default changed to + 2.31.1. + + fs: Set FAKEROOTDONTTRYCHOWN environment variable to not + forward {f,l,}chown calls to libc when running under fakeroot + to fix issues when building in restricted environments + (E.G. user namespace with bubblewrap). + + Linux: Also build default make target to ensure extra files + like the gdb scripts enabled by CONFIG_GDB_SCRIPTS are also + built. Notice: This may mean that extra host utilities like + uboot-mkimage are needed. + + Infrastructure: show-info and -show-info make targets + added to output package metadata in JSON format for external + use. + + pkg-generic: Only tweak .la files needing it to ensure they + are not included in subsequent package file lists. + + test-pkg: Generate a basic package config if none is + specified. + + Gettext-tiny package added as an lightweight replacement for + GNU gettext for situations where NLS support is not needed. + + New defconfigs: Andes AE3XX, Freescale imx8mpico / imx8qxpmek + / T2080 QDS RDB, Licheepi zero, Orangepi R1 + + Removed defconfigs: Olimx A20 Olinuxino Lime legacy + + New packages: bats-core, bayer2rgb-neon, brickd, cog, dacapo, + enet, gettext-tiny, gli, gst1-plugins-bayer2rgb-neon, + imx-sc-firmware, intel-mediadriver, intel-mediasdk, libcamera, + libhtp, libp11, libwpe, lua-binaryheap, lua-gd, lua-lunitx, + mender-artifact, most, oniguruma, openjdk, openjdk-bin, + opensbi, optee-benchmark, optee-client, optee-examples, + optee-os, optee-test, paho-mqtt-cpp, python-aioblescan, + python-aioconsole, python-aiohttp-cors, python-aiomonitor, + python-backcall, python-jedi, python-parso, python-pyjwt, + python-terminaltables, suricata, tpm2-totp, uftp, + wpebackend-fdo, wpewebkit + + Removed packages: libump, lunit, sunxi-mali + + Issues resolved (http://bugs.uclibc.org): + + #11716: Typo on website, saying latest release is 2018.2.11 + #11756: package/syslinux: MBR's don't fit because of binutils.. + #11761: Building custom kernel 5.1-rc3 or later breaks on objtool + #11816: Only selected coreutils binaries are installed + +2019.02.11, released April 9th, 2020 + + Important / security related fixes. + + core: Fix compatibility with make 4.3+. Also fixup /lib + references in libtool .la files, similar to how it is done for + /usr/*. + + toolchain: Fix kernel headers validation check for external + toolchains. + + Updated/fixed packages: barebox-aux, bluez5_utils, busybox, + civetweb, collectd, ffmpeg, gcc, gnutls, gvfs, haproxy, + hiredis, kmscube, libical, libopenssl, libsndfile, + linux-tools, ntp, php, pure-ftpd, screen, sysdig, tor, + util-linux, vala, vlc, xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #12746: "sysdig" package description points to http://sysdig.org, .. + +2019.02.10, released March 16th, 2020 + + Important / security related fixes. + + Core: Ensure package-file-lists data is correct after + incremental builds as well. + + Fix a race condition related to creating the output/staging + symlink on systems with coreutils < 8.27. + + Br2-external: Fix compatibility with make 4.3+ + + Util-linux: Ensure that hwclock is built without GPLv3 + code. Notice that builds with hwclock has contained + GPLv3-licensed code since util-linux 2.30 (Buildroot 2017.08+) + + Updated/fixed packages: armadillo, at, binutils, blktrace, + bootstrap, busybox, cairo, cups, czmq, dnsmasq, + docker-containerd, dovecot, dovecot-pigeonhole, e2fsprogs, + eudev, exim, exiv2, fbgrab, grep, gst1-validate, guile, + imagemagick, jhead, kvm-unit-tests, lapack, libcgroup, + libftdi1, libjpeg, libsigrok, libsndfile, libssh2, libsvgtiny, + libvncserver, libvorbis, libxml2, libxslt, linux, lz4, + mariadb, mbedtls, meson, mfgtools, mongoose, ncurses, ntfs-3g, + opencv3, openjpeg, openswan, openvmtools, patch, php, + postgresql, pppd, proftpd, pure-ftpd, python-django, + python-pyqt5, python3, qemu, qt5base, qt5webengine, qwt, + rdesktop, ruby, runc, samba4, shellinabox, smartmontools, + sqlcipher, squid, swupdate, sysklogd, taglib, thrift, + ti-cgt-pru, uboot, util-linux, vorbis-tools, webkitgtk, + wireshark, xen, xserver_xorg-server, zeromq, zsh + + Issues resolved (http://bugs.uclibc.org): + + #11996: opencv3 SIGILL on Cortex-A5 with VFPv4-D16 + #12331: meson issue + #12461: libglib2 build files with deep directory structure + #12606: fbgrab location has changed + +2019.02.9, released January 12th, 2020 + + Important / security related fixes. + + pkg-python infrastructure: Ensure correct compiler and linker + flags are used for compiled code + + utils/scanpypi: Remind users to update DEVELOPERS + + Updated/fixed packages: busybox, cc-tool, cpio, cups, dante, + dillo, docker-cli, docker-containerd, docker-engine, easy-rsa, + ecryptfs-utils, efl, git, glibc, gnupg2, gst1-plugins-bad, + kf5-kcoreaddons, libarchive, libgit2, libkrb5, librsvg, + libssh, libtomcrypt, libuio, lirc-tools, lvm2, + matchbox-desktop, nodejs, ntp, opencv3, openpowerlink, + python-django, python-ecdsa, python-pyasn-modules, + python-pyqt5, python-subprocess32, python3, qpdf, runc, rygel, + samba4, sdl2, wavpack, xserver_xorg-server, zip + + Issues resolved (http://bugs.uclibc.org): + + #12121: PyQt5.QtSerialPort and other modules not being built + +2019.02.8, released December 7th, 2019 + + Important / security related fixes. + + Infrastructure: Make HOST__DL_OPTS inherit from + _DL_OPTS by default, just like it is done for a number of + other package variables + + Add _KEEP_PY_FILES to exclude specific python .py files + from the removal done by BR2_PACKAGE_PYTHON{,3}_PYC_ONLY for + the (rare) case where the .py files are needed at runtime + rather than .pyc. + + Fix -reconfigure handling for packages using the kconfig + infrastructure. + + Toolchain: ensure external toolchain kernel headers version + check correctly stop the build on mismatch + + Deconfigs: beaglebone: fix boot issue + + Updated/fixed packages: am33x-cm3, asterisk, bind, chrony, + clamav, collectd, connman, faifa, gob2, haproxy, + intel-microcode, ipsec-tools, jasper, jpeg-turbo, kodi, + kvm-unit-tests, libftdi, libftdi1, libnss, libstrophe, + libsvgtiny, lvm2, lzma, mariadb, minicom, neardal, nodejs, + opencv3, openvmtools, oracle-mysql, perl-gdgraph, + perl-gdtextutil, php, postgresql, prosody, python-django, + rabbitmq-c, rauc, redis, rpcbind, socat, spice, + spice-protocol, tftpd, tiff, webkitgtk + + New packages: libmspack + + Issues resolved (http://bugs.uclibc.org): + + #12166: Compiling nodejs for SAMA5D3 always crash with illegal inst.. + #12171: Python-opencv needs config.py and config-3.7.py to run.. + #12211: host-nodejs 10.15.3 package fail to build + #12316: tzdata fails to install with empty "default local time" + +2019.02.7, Released November 10th, 2019 + + Important / security related fixes. + + support/testing: use a kernel with HW_RANDOM_VIRTIO to work + around issues with lack of entrophy + + Toolchain: Also copy libssp.so for external toolchains if SSP + is enabled to handle toolchains providing SSP support in + libssp rather than in the C library + + Download: Also use the package download method for extra + downloads from the same site, so it does not get confused by + URLs containing '+' + + Fakeroot now works correctly under Microsoft Windows 10 + Services for Linux, which does not provide SYSV IPC support + + utils/test-pkg: ensure to exit with an error upon failure + + Updated/fixed packages: asterisk, azmq, cups-filters, + domoticz, duma, elf2flt, eudev, exfat, exfat-utils, fakeroot, + file, freerdp, gd, ghostscript, go, gvfs, intel-microcode, + kvm-unit-tests, libarchive, libnspr, libnss, libopenssl, + libpcap, libpciaccess, librsvg, libseccomp, libsigrok, + libtorrent, libunwind, linux-tools, lua-sdl2, lxc, minizip, + mjpegtools, mongoose, php, python, python-pysnmp-apps, + python3, qemu, qt5base, ruby, safeclib, samba4, sdl_mixer, + sox, sudo, systemd, tcpdump, unscd, util-lkinux, vtun, xvisor, + yaffs2utils + + Issues resolved (http://bugs.uclibc.org): + + #11366: [2018.08] SysV IPC not available for fakeroot on WSL + #12261: sudo versions prior to 1.8.28 are affected + +2019.02.6, Released October 3rd, 2019 + + Important / security related fixes. + + Defconfigs: AArch64-efi: Fix grub configuration, Beaglebone: + Use default console settings + + Dependencies: Ensure host has JSON::PP perl module installed + if webkitgtk/wpewebkit packages are enabled as it is needed + during their build process. + + Toolchain: Generate check-headers program under BUILD_DIR + rather than /tmp to fix issues with distributions mounting + /tmp noexec. + + Updated/fixed packages: asterisk, augeas, bind, bwm-ng, cups, + cups-filters, docker-cli, docker-engine, docker-proxy, + dropbear, e2fsprogs, eudev, exim, expat, gcc, go, ifplugd, + haveged, iptables, joe, kf5-extra-cmake-modules, + kf5-modemmanager-qt, kf5-networkmanager-qt, libcurl, + libgcrypt, libgpg-error, libnftl, libnspr, libnss, libopenssl, + luksmeta, mariadb, mbedtls, mongodb, mosquitto, ncurses, + nfs-utils, nghttp2, nodejs, openvmtools, php, protobuf, putty, + qemu, qt5base, samba4, swupdate, systemd-bootchart, thttpd, + uclibc, unzip, util-linux, wireshark + + Issues resolved (http://bugs.uclibc.org): + + #10806: Allow nfs-utils to use ipv6 + #11781: mariadb build error + #12031: Build of cups-filters fails while linking, apparently due.. + #12141: eudev package is missing "render" and "kvm" groups + #12181: dropbear: norootlogin (-w) no longer works when PAM is enabled + #12241: Permission denied while running "make" + +2019.02.5, Released September 2nd, 2019 + + Important / security related fixes. + + Filesystems: Pass extra pax options to tar for binary + reproducibility. + + Updated/fixed packages: apache, arm-trusted-firmware, + asterisk, atk, autofs, batctl, batman-adv, berkeleydb, brotli, + busybox, bzip2, clamav, cloop, cmake, collectd, connman-gtk, + cryptopp, dahdi-linux, dahdi-tools, daq, dehydrated, dovecot, + dovecot-pigeonhole,, elfutils, evtest, exim, expect, giflib, + git, glib-networking, glibc, gnupg2, gnutls, go, + gst1-rtsp-server, gtkperf, gupnp-tools, gvfs, imagemagick, + imx-uuc, intel-microcode, json-glib, lftp, libbsd, libcurl, + libgit2, libgtk3, libmodplug, libnss, libpri, libshout, + libss7, libssh2, libvips, libxcb, linux-headers, mdadm, + mesa3d, metacity, mpg123, mosquitto, musl, nginx, openblas, + opencv3, openldap, openvmtools, pcmanfm, php, pigpio, + postgresql, prboom, proftpd, proj, python, python-django, + python-idna, python-numpy, python-urllib3, python3, qemu, qt5, + qt5base, qt5enginio, quagga, rygel, squid, subversion, + tcpreplay, unzip, vlc, vte, webkitgtk, weston, wireless-regdb, + xen, xfont_font-util, xlib_libICE, xlib_libXfont, + xlib_libXfont2, yad, zeromq + + Issues resolved (http://bugs.uclibc.org): + + #11741: pigpio does not build host-pigpio + #11876: automount using host mount/umount + #11881: Build breaks with lftp package enabled and libexpat1-dev inst.. + #11921: dahdi fails to build + #11961: libpri build failure + #12096: tcpreplay: build fails if libdumbnet-dev is installed in the.. + #12106: daq: build fails if libdumbnet-dev is installed in the host + #12126: vc4 has neon as hard dependency + +2019.02.4, Released July 10th, 2019 + + Important / security related fixes. + + arch: x86: Fix typo breaking 'core-avx2' variant, add Westmere + variant. + + linux: Workaround -Werror related build failure on powerpc, + by forcing CONFIG_PPC_DISABLE_WERROR on. + + support/testing: Emulate a machine with 256MB RAM to fix + issues with certain tests running out of memory. + + test-pkg: Correct long option handling and clean output dir + after a successful build to save disk space. + + Ensure custom _OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS are + passed before the standard exclusions so they are not ignored + by rsync when using override-srcdir. + + Defconfigs: QEMU: use 'rootwait' kernel option to ensure root + partition is available before mounting. + + Updated/fixed packages: barebox, bzip2, davfs2, dbus, dialog, + docker-cli, docker-engine, expat, faad2, ffmpeg, freeswitch, + gerbera, haveged, irssi, libcdadio, libgit2, libglib2, + libsecret, libvncserver, lmbench, logrotate, mariadb, meson, + mongoose, monit, mpd, openblas, php, postgresql, psplash, + python, python-django, python3, qt5base, samba4, taglib, + tvheadend, vlc, webkitgtk, xserver_xorg-server, znc + +2019.02.3, Released June 7th, 2019 + + Important / security related fixes. + + Infra: pkg-config: Use a dedicated timestamp file rather than + .config as that gets touched by linux-4.19+, causing repeated + builds. + + check-bin-arch: Also ignore /usr/lib/grub to support merged + /usr setups, similar to how /lib/grub is ignored. + + gnuconfig/config.sub: Add C-SKY architecture support. + + Updated/fixed packages: assimp, atftp, atop, botan, busybox, + ca-certificates, chocolate-doom, cjson, coreutils, cracklib, + ddrescue, dhcp, docker-cli, docker-containerd, docker-engine, + dosfstools, dovecot, dovecot-pigeonhole, dropbear, exim, + ffmpeg, flare-engine, gcc, gdb, gerbera, glibmm, go, gpsd, + gst-ffmpeg, gst1-plugins-bad, gst1-plugins-base, imagemagick, + intel-microcode, jasper, kf5-kcoreaddons, kismet, libcurl, + libglib2, libnss, libopenssl, libsigrok, libssh2, libupnp18, + linuxptp, luajit, lynx, matchbox-panel, mender, + netcat-openbsd, netsurf, nfs-utils, opus, orc, owfs, + pcsc-lite, php, popt, postgresql, python, python-cython, + python-django, python-ply, qt5enginio, rpm, runc, samba4, + sqlite, subversion, supertux, systemd, tslib, uclibc, + v4l2loopback, webkitgtk, woff2 + + Issues resolved (http://bugs.uclibc.org): + + #11816: Only selected coreutils binaries are installed + #11841: grub-efi.cfg not used when building EFI disk image + #11911: systemd v240 memory leak in systemd-journald + +2019.02.2, Released April 29th, 2019 + + Important / security related fixes. + + Only build host-lzip / host-xz when really needed by packages, + not just when not available on the build host. + + fs: Set FAKEROOTDONTTRYCHOWN environment variable to not + forward {f,l,}chown calls to libc when running under fakeroot + to fix issues when building in restricted environments + (E.G. user namespace with bubblewrap). + + Linux: Also build default make target to ensure extra files + like the gdb scripts enabled by CONFIG_GDB_SCRIPTS are also + built. Notice: This may mean that extra host utilities like + uboot-mkimage are needed. + + Defconfigs: ASUS tinker and Amarula vyasa rk3822: Support + larger kernel images, Atmel SAM5D27, SAM5D2,3,4 xplained: + Increase rootfs size to fit utilities, Raspberry Pi 64bit: + Include overlays in sdcard image + + Updated/fixed packages: android-tools, apache, bind, binutils, + busybox, civetweb, cjson, copas, davfs2, docker-cli, + docker-containerd, docker-engine, dovecot, dovecot-pigeonhole, + freerdp, gerbera, ghostscript, git, gnutls, go, gst-omx, + gst1-plugins-base, gst1-plugins-ugly, haproxy, hostapd, + ipsec-tools, libfreefare, libfuse, libkrb5, libpng, libxml2, + libxslt, linknx, linux, linux-firmware, linux-tools, live555, + lldp, lrzsz, lynx, madplay, make, minicom, mongodb, msmtp, + musl, mutt, neon, netsnmp, numactl, opus, perl, php, + postgresql, pure-ftpd, python-urllib3, python3, qt5base, + rapidxml, rpm, rsyslog, ruby, runc, samba4, sane-backends, + softether, stunnel, sysklogd, syslinux, syslog-ng, + systemd-bootchart, thttpd, thrift, tiff, tor, tpm2-tools, + tpm2-tss, webkitgtk, yaffs2utils, wget, wpa_supplicant, wsapi, + xapp_xfd, xapp_xload, xlib_libXpm, xserver_xorg-server, xz, + znc + + Issues resolved (http://bugs.uclibc.org): + + #11756: package/syslinux: MBR's don't fit because of binutils.. + #11761: Building custom kernel 5.1-rc3 or later breaks on objtool + +2019.02.1, Released March 29th, 2019 + + Important / security related fixes. + + pkg-generic: Only tweak .la files needing it to ensure they + are not included in subsequent package file lists. + + test-pkg: Generate a basic package config if none is + specified. + + Updated/fixed packages: asterisk, avahi, bash, beecrypt, + binutils, busybox, clamav, cups, efl, eigen, fetchmail, file, + flashrom, fltk, gerbera, git, glibc, gnuradio, go, + gst-plugins-bad, intel-gmmlib, jq, kexec, kf5-modemmanager-qt, + leveldb, libcurl, libdrm, libftdi1, libglib2, libiio, libpcap, + libseccomp, libssh2, log4cplus, lvm2, mariadb, mender, + mongodb, mosquitto, musl, nodejs, ntp, openjpeg, owfs, php, + pure-ftpd, putty, python-aiojobs, qt5webkit, rdesktop, samba4, + sunxi-tools, supertux, swupdate, tpm2-abrmd, tpm2-tss, + wavemon, wireshark, vsftpd, xapp_xdm, xen, + xdriver_xf86-video-fbdev, xlib_libXdmcp + + Issues resolved (http://bugs.uclibc.org): + + #11716: Typo on website, saying latest release is 2018.2.11 + +2019.02, released March 4th, 2019 + + Minor fixes. + + Libressl support added for Qt 5.6 as a replacement for + openssl, as 5.6 is not compatible with openssl 1.1.x. + + Updated/fixed packages: cutelyst, devmem2, gqrx, + gst-plugins-bad, libraw, libsoxr, qt5base, runc, systemd, tor + +2019.02-rc3, released March 1st, 2019 + + Fixes all over the tree. + + Openssl support dropped from Qt 5.6, as it isn't compatible + with openssl 1.1.x. + + Toolchain: GCC 8.x updated to 8.3.0, fixing a number of + issues. + + Dependencies: Require CMake 3.8 or newer to fix compilation + issue with certain packages. If not available, host-cmake will + instead be built. + + Printvars: Fix performance regression since 2018.02 + + Scanypi: Correctly handle underscores in python package names. + + Updated/fixed packages: botan, clamav, cryptopp, i2pd, + ibrcommon, iproute2, libcpprestsdk, libssh, lua-curl, + luaexpat, qt5base, runc, stress-ng, syslinux, systemd, + upmpdcli, zbar + + Issues resolved (http://bugs.uclibc.org): + + #9966: util-linux-2.30/.stamp_built' failed + #11696: possible typo in board/pc/post-build.sh + +2019.02-rc2, released February 23th, 2019 + + Fixes all over the tree. + + Removed zynq_zybo defconfig, as it hasn't seen any update + since it was added in 2016, and uses a U-Boot version not + compatible with openssl-1.1.x. + + Linux: Ignore user supplied downloadable hashes, as no hash + checksums are available for those. + + Updated/fixed packages: bind, cryptopp, docker-containerd, + dtc, efivar, gdb, imagemagick, ipmiutil, libcpprestsdk, + libcurl, libgpiod, libid3tag, libv4l, log4cplus, luvi, + madplay, mender, mosquitto, poco, postgresql, proftpd, + pulseaudio, python-django, qemu, qt5base, qwt, rabbitmq-c, + reaver, safeclip, stress-ng, swupdate, syslog-ng, systemd, + tor, unzip, xenomai + + Issues resolved (http://bugs.uclibc.org): + + #11501: compile sdl2 with enable wayland + #11681: .. unable to initialize decompress status for section.. + +2019.02-rc1, released February 13th, 2019 + + Fixes all over the tree and new features. + + + Dependencies: + + Require Python >= 2.7 as it is needed for E.G. building + libglib2. + + Ensure GNU gzip is used for reproducible tarballs (instead of + pigz) + + + Infrastucture: + + Ensure the PLATFORM and OS environment variables are not set, + as they cause build issues for some packages. + + The package list infrastructure now correctly handles packages + installing files with old mtime. + + Add a config option to force all optional host utilities to be + built, even if suitable versions are available on the build + machine. + + graph-build-time: Also show time spent downloading + + Download: fixes for SSH/SCP support + + Ensure user provided permissions override permissions from + packages. + + SDK: Fix handling of relative symlinks (targets starting with + '.' or '..') + + BR2_SYSTEM_DEFAULT_PATH setting to customize the default path + for processes. + + The custom skeleton logic will now populate the needed /bin, + /lib, /sbin directories/symlinks if not present. Merged /usr + can now be used with a custom skeleton. + + Rootfs overlays can now override symbolic links from + packages. This was disabled to ensure the correct symbolic + links are present when merged /usr is used. Instead validate + that the rootfs overlays do not include invalid /bin, /sbin + and /lib entries. + + The waf infrastructure now support the _SUBDIR variable, + similar to the other package types. + + cmake: Also set CMAKE_SYSTEM_VERSION in toolchainfile.cmake + + Various improvements to the meson infrastructure. + + Luarocks: A Buildroot addon has been added to automate + creating a Buildroot package from luarocks, similar to + scancpan and scanpypi. + + scanpypi: protect against zip-slip vulnerability in zip/tar + handling + + check-package: fix Python 3 support + + get-developers: Fix behaviour when called from elsewhere than + the toplevel directory. + + pkg-stats: Show latest upstream version of each package, based + on data from release-monitoring.org + + kconfig: Fix for make linux-menuconfig / uboot-menuconfig from + a clean tree when ccache is enabled. + + Default to sha256 password encoding, drop md5 support. + + + Architecture: + + Support for RISC-V 32bit architecture, ARM A55, 75 and Saphira + variants, MIPS support for mips32r3, mips64r3 and Marvell + Octeon II/III variants. + + + Toolchain: + + ARC toolchain 2018.09, ARM 8.2-2018.11, Codescape IMG/MTI MIPS + 2018.09-02, MUSL 1.1.21, GCC 6.5.0 / 7.4.0, GDB 8.2.1 + + + Packages: + + openssl: Bump to 1.1.1x series, bringing TLSv1.3 support and + long term support. + + fftw: Split into fftw-{single,double,long-double,quad} + packages for the different data precision options. + + libcurl: Now has explicit TLS backend selection options. + + linux: Support building device tree blobs with the -@ option + for device tree overlays. + + weston: The weston-imx i.MX variant is now used when + imx-gpu-viv is enabled + + pkgconf: Update to 1.5.3, which brings support for + --define-prefix (used by GStreamer) + + Add host-python3-setuptools package to handle host python + packages needing python3 with setuptools support. + + + New defconfigs: Aarch64 EFI, Orangepi one plus, Orangepi lite + 2, QEMU RISC-V 32bit virt, Rock64 + + + New packages: brcm-patchram-plus, clinfo, cunit, docker-cli, + erlang-p1-eimp, exempi, fail2ban, fftw-double, + fftw-double-long, fftw-quad, fftw-single, gerbera, grpc, + gst1-shark, intel-gmmlib, iwd, kf5-kcoreaddons, libeastl, + libpackagekite, libtorrent-rasterbar, lua-std-debug, + lua-std-normalize, mini-snmpd, netsurf, pamtester, pcm-tools, + python-aiodns, python-aiohttp, python-aiohttp-jinja2, + python-aiohttp-remotes, python-aiohttp-security, + python-aiohttp-session, python-aiohttpd-sse, python-aiojobs, + python-cchardet, python-pycares, python-sentry-sdk, + python-wtforms, python3-setuptools, rcw, rtc-tools, shim, + utp_com, vmtouch, websocketpp + + Removed packages: fftw, lua 5.2.x, luacrypto, perl-time-hires, + python-pyqt, qt, qtuio, tn5250 + + Issues resolved (http://bugs.uclibc.org): + + #10851: Patch to handle numpad Enter key properly + #11066: x11r7 X11 S40xorg leads to a black screen on QEMU x86.. + #11126: Bash Shell Programming using Buildroot + #11426: pps-tools bash dependency + #11476: stdio2.h error invalid use of __builtin_va_arg_pack + #11536: dt-utils building fails with glibc 2.28 + #11546: open-vm-tools with glibc 2.28 + #11566: Fix init script + #11576: Unable to start apache with event MPM on raspberry pi 3 + #11591: [pkgconf 1.5.3] xserver OpenGL support is missing + #11606: libjpeg has no Config.in + #11616: 2018.02.09 fails to build libzlib with full RELRO.. + #11656: Custom device tree and u-boot boot.scr not integrated.. + #11666: Touchscreen with (Py)Qt5 should use tslib instead of evdev + +2018.11.4, Released March 28th, 2019 + + Important / security related fixes. + + Updated/fixed packages: avahi, beecrypt, binutils, botan, + busybox, clamav, cups, devmem2, efl, fetchmail, file, fltk, + gcc, gdb, git, go, gst-plugins-bad, iproute2, jq, + kf5-modemmanager-qt, leveldb, libopenssl, libraw, libseccomp, + libsoxr, libssh2, mariadb, mosquitto, nodejs, ntp, openjpeg, + perl, php, putty, qt5webkit, rdesktop, runc, samba4, swupdate, + systemd, tor, vsftpd, wireshark, xapp_xdm, xen, xlib_libXdmcp + +2018.11.3, Released February 23th, 2019 + + Important / security related fixes. + + Ensure the PLATFORM and OS environment variables are not set, + as they cause build issues for some packages. + + The package list infrastructure now correctly handles packages + installing files with old mtime. + + Linux: Skip hash checks for user supplied downloadable + patches, as no hash checksums are available for those. + + scanpypi: protect against zip-slip vulnerability in zip/tar + handling + + Download: fixes for SSH/SCP support + + SDK: Fix handling of relative symlinks (targets starting with + '.' or '..') + + Updated/fixed packages: bind, dhcpcd, docker-compose, + docker-containerd, docker-engine, dovecot, dovecot-pigeonhole, + dtc, efivar, ghostscript, gnuradio, imagemagick, jpeg-turbo, + libarchive, libb64, libcurl, libgeotiff, libgpiod, libid3tag, + libupnp18, log4cplus, madplay, meson, mosquitto, openssh, php, + poco, postgresql, proftpd, pulseaudio, python, python-django, + python3, qt5base, reaver, runc, sg3_utils, sqlcipher, + swupdate, systemd, unzip, webkitgtk, xenomai + +2018.11.2, Released January 30th, 2019 + + Important / security related fixes. + + Defconfigs: Fixes for imx6slevk, imx7dsabresd, imx8mqevk, Lego + EV3, QEMU AArch64-virt + + Download: Fix scp download handling + + check-package: fix Python 3 support + + get-developers: Fix behaviour when called from elsewhere than + the toplevel directory. + + kconfig: Fix for make linux-menuconfig / uboot-menuconfig from + a clean tree when ccache is enabled. + + cmake: Also set CMAKE_SYSTEM_VERSION in toolchainfile.cmake + + Updated/fixed packages: acpica, apache, apr, avrdude, cargo, + cc-tool, dash, dhcpdump, dmalloc, docker-containerd, efivar, + fwts, glibc, gnuchess, gnupg2, go, leveldb, libarchive, + libassuan, libftdi1, libgpg-error, libhttpparser, libkcapi, + libmad, libsndfile, libsquish, liburiparser, libwebsock, + libxml2, lighttpd, llvm, lm-sensors, lua-msgpack-native, lxc, + mariadb, mbedtls, meson, mosquitto, netatalk, nodejs, odhcp6c, + openresolv, openssh, pango, patchelf, php, python-django, + python-numpy, python-pyyaml, rauc, rp-pppoe, s6-networking, + samba4, sdl_sound, shairport-sync, sqlite, subversion, + sunxi-cedarx, swupdate, systemd, tcpreplay, tekui, tmp2-abrmd, + tpm2-tools, tpm2-tss, udisks, unixodbc, usb_modeswitch, + webkitgtk, wireshark, wolfssl, xapp_rgb, xenomai, xerces + + Issues resolved (http://bugs.uclibc.org): + + #11576: Unable to start apache with event MPM on raspberry pi 3 + +2018.11.1, Released December 20th, 2018 + + Important / security related fixes. + + defconfigs: Fixes for bananapi m2 ultra, ci20 + + Download wrapper: Fix for urlencode handling + + Updated/fixed packages: asterisk, docker-compose, + docker-engine, dt-utils, gnutls, go, grub, libbsd, libcurl, + libpgpme, libiscsi, liblo, libmpd, libopenssl, liboping, + libpam-tacplus, libpjsip, linux-firmware, liquid-dsp, + lua-cqueue, luvi, lxc, lynx, nginx, nodejs, openzwave, php, + pps-tools, proftpd, prosody, sdl2_net, squashfs, swupdate, + uclibc, vtu, webkitgtk, wine, xen + + New packages: docker-cli + + Issues resolved (http://bugs.uclibc.org): + + #11426: pps-tools bash dependency + #11536: dt-utils building fails with glibc 2.28 + +2018.11, Released December 1st, 2018 + + Minor fixes. + + Updated/fixed packages: c-ares, quagga, squid + +2018.11-rc3, released November 30th, 2018 + + Fixes all over the tree. + + Defconfigs: Fixes for Armadeus APF27, imx6sabre, Olimex A20 + olinuxino lime legacy, Orangepi zero plus 2, PC, Riotboard. + + graph-depends: Fix for package names starting with a non-alpha + character. + + Updated/fixed packages: alsa-utils, botan, dante, domoticz, + dtc, freetype, gauche, gcc, gdb, ghostscript, glibc, + imx-usb-loader, libbsd, libid3tag, libkrb5, libmicrohttpd, + libopenssl, libsoxr, linux, motion, msgpack, mtd, + perl-net-ssleay, php, popt, python-numpy, qt5declarative, + samba4, shadowsocks-libev, stress-ng, systemd, usb_modeswitch, + webkitgtk, valgrind, weston, xfsprogs + +2018.11-rc2, released November 21th, 2018 + + Fixes all over the tree. + + fs: Drop intermediate tarball from the filesystem handling to + fix an issue with xattrs handling related to fakeroot. Ensure + tarball target includes xattrs. + + download: Fix confusion in git submodule handling if dl/ is a + symlink. + + genrandconfig: Fix missing newline in BR2_WGET handling, + causing the following line to be ignored. This would affect + BR2_ENABLE_DEBUG, BR2_INIT_BUSYBOX, BR2_INIT_SYSTEMD, + BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV, BR2_STATIC_LIBS or + BR2_PACKAGE_PYTHON_PY_ONLY depending on the randomization. + + show-build-order: Also include the dependencies of + rootfs-common. + + Fix a number of build issues in packages for the recently + merged RISC-V architecture support. + + Updated/fixed packages: dt-utils, easydbus, elfutils, + flare-engine, flatcc, glibc, gstreamer, gstreamer1, imx-uuc, + libassuan, libcorrect, libiscsi, libkrb5, libmicrohttpd, + libnftnl, libnspr, libnss, libsemanage, libsigsegv, libv4l, + ltp-testsuite, luv, luvi, make, ncmpc, netplug, openocd, + prosody, qemu, rpm, sconeserver, shadowsocks-libev, + supertuxcart, syslinux, systemd, trace-cmd, uclibc, + uclibc-ng-test, vtun, webkitgtk, weston, wireshark, xen, + xlib_libfontenc + + Issues resolved (http://bugs.uclibc.org): + + #11086: download/git submodule breaks on symlinked dl folder + #11216: Capabilities not applied to filesystem + +2018.11-rc1, released November 9th, 2018 + + Fixes all over the tree and new features. + + Architecture: RISC-V support (64bit) added. + + Toolchain: Glibc bumped to 2.28. Fortran support for external + toolchains. ARM (Linaro) toolchains updated to 8.2-2018.08. + + Hardening flags (RELRO) are now handled by the toolchain + wrapper instead of explicitly through CFLAGS/LDFLAGS, fixing a + number of issues. + + Filesystems: Support for creating btrfs and f2fs filesystems + added. + + Add a number of patches to fix build errors for host utilities + on modern distributions using glibc-2.28. + + mkusers: Ensure existing group members are preserved when a + group is reprocessed. + + printvars: Fix issue with exceeding shell command line length + limits for certain setups. + + Workaround added for incompatibility issues between host-dtc + and older U-Boot and Linux kernel versions. + + Detect and reject build paths containing '@', as this confuses + a number of packages, including GCC. + + utils/diffconfig: Make it work for (non-Buildroot) config + files not using the BR2_ prefix. + + New defconfigs: Amarula a64-relic, Bananapi m2 ultra, Embest + riotboard, Hardkernel Odroid XU-4, QEMU riscv64-virt. + olimex_a20_olinuxion_lime_mali is renamed to _legacy. + + OpenCL infrastructure support added, similar to how OpenGL is + handled. + + Linux-headers: Support for kernel headers from a custom + tarball / git repo added. + + New packages: bird, bluez5_utils-headers, btrfs-progs, + checksec, davici, duktape, ell, haproxy, libclc, libcorrect, + libopencl, libopenresolv, nss-myhostname, + perl-apache-logformat-compiler, perl-appconfig, + perl-astro-suntime, perl-class-inspector, perl-class-load, + perl-class-method-modifiers, perl-class-std, + perl-class-std-fast, perl-cookie-baker, perl-data-dump, + perl-data-optlist, perl-data-uuid, perl-data-manip, + perl-dbd-mysql, perl-dbi, perl-devel-globaldestruction, + perl-devel-stacktrace, perl-devel-stacktrace-ashtml, + perl-device-serialport, perl-dist-checkconflicts, + perl-exporter-tiny, perl-file-sharedir, perl-file-slurp, + perl-filesys-notify-simple, perl-hash-multivalue, + perl-http-entity-parser, perl-http-headers-fast, + perl-http-multipartparser, perl-io-interface, + perl-io-socket-multicast, perl-json-maybexs, perl-mime-tools, + perl-module-implementation, perl-module-runtime, perl-moo, + perl-number-bytes-human, perl-package-stash, perl-params-util, + perl-plack, perl-posix-strftime-compiler, perl-role-tiny, + perl-streams-buffered, perl-sub-exporter-progressive, + perl-sub-install, perl-sub-quote, perl-sys-cpu, + perl-sys-meminfo, perl-sys-mmap, perl-time-parsedate, + perl-type-tiny, perl-www-form-urlencoded, perl-x10, pigpio, + python-async-timeout, python-falcon, python-fire, + python-mimeparse, python-multidict, python-passlib, + python-pigpio, python-pip, python-ply, python-py, + python-pyasn1, python-pyasn1-modules, python-pycryptodomex, + python-pyhamcrest, python-pysmi, python-scapy, python-semver, + python-serial-asyncio, python-typing, python-uvloop, + pythonwrapt, python-yarl, python-zeroconf, riscv-pk, sedutil, + spandsp, tini, waffle, xapian + + Removed packages: bootutils, dsp-tools, expedite, gst-dsp, + xloader + + Issues resolved (http://bugs.uclibc.org): + + #11116: Buildroot should set PYTHON_EGG_CACHE instead of writing .. + #11156: In python3 module 'socket' has no attribute 'AF_BLUETOOTH' + #11166: Erlang bad argument on valid uint64 when crosscompiled on.. + #11206: zlib: fails to build with Linaro toolchain, BR2_RELRO_FULL.. + #11241: ACPID shouldn't depend on BR2_x86_64 || BR2_i386 + #11251: Util scanpypi failes when package change - to _ in tar file + #11266: qt5base-5.11.1 does not compile with musl, complains about.. + #11286: python-rpi-gpio only should depend on BR2_arm || BR2_aarch64 + #11321: Latest master fails to build readline with RELRO FULL + #11326: sysvinit fails to build in latest GIT master + #11331: Internal application no longer builds with latest GIT master + #11336: nfs-utils fails to build in latest GIT master + #11351: build root-2018-08, linaro aarch64 compile error + #11376: mdmon binary missing + #11391: Valgind availability on ARM + #11396: uboot environment image checksum invalid if target is big endian + #11421: GCC error message for ARM Cortex-A9/ARM.V7 + #11451: Can't find libmpfr.so.4 when using external toolchain on ubuntu.. + #11481: Docs: Is external.desc required? + +2018.08.4, Released December 20th, 2018 + + Important / security related fixes. + + Defconfigs: Fixes for ci20, orangepi zero plus 2 + + Download wrapper: Fix for urlencode handling + + Updated/fixed packages: c-ares, dante, docker-compose, + domoticz, freetype, ghostscript, gnutls, libcurl, libgpgme, + libid3tag, libiscsi, libmpd, libopenssl, liboping, libpjsip, + linux-firmware, liquid-dsp, luvi, lynx, msgpack, nginx, + nodejs, php, popt, pps-tools, prosody, python-numpy, + python-requests, samba4, sdl2_net, squashfs, swupdate, + systemd, uclibc, vte, webkitgtk, wine, xfsprogs + + Issues resolved (http://bugs.uclibc.org): + + #11426: pps-tools bash dependency + +2018.08.3, Released November 26th, 2018 + + Important / security related fixes. + + fs: Drop intermediate tarball from the filesystem handling to + fix an issue with xattrs handling related to fakeroot. Ensure + tarball target includes xattrs. + + download: Fix confusion in git submodule handling if dl/ is a + symlink. + + toolchain: Only allow enabling stack protection on + architectures with control flow integrity (CFI) support. Only + allow FORTIFY_SOURCE support on gcc >= 6. + + genrandconfig: Fix missing newline in BR2_WGET handling, + causing the following line to be ignored. This would affect + BR2_ENABLE_DEBUG, BR2_INIT_BUSYBOX, BR2_INIT_SYSTEMD, + BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV, BR2_STATIC_LIBS or + BR2_PACKAGE_PYTHON_PY_ONLY depending on the randomization. + + show-build-order: Also include the dependencies of + rootfs-common. + + Defconfigs: Fixes for Armadeus APF27, imx6sabre, Olimex A20 + olinuxino lime legacy, Orangepi zero plus 2. + + graph-depends: Fix for package names starting with a non-alpha + character. + + Updated/fixed packages: attr, audit, bind, brotli, busybox, + dtc, easydbus, elfutils, flare-engine, flatcc, gauche, gcc, + giflib, gpsd, lcdproc, libcurl, libiscsi, libkcapi, libnfs, + libnspr, libnss, libsemanage, liburiparser, lighttpd, + lua-curl, mariadb, mmc, mosquitto, mysql, ncmpc, neardal, + netplug, network-manager, nfs-utils, nginx, openocd, openswan, + p11-kit, postgresql, prosody, qemu, qt, rpm, ruby, samba4, + squid, supertuxkart, systemd, tar, trace-cmd, traceroute, + twolame, uclibc, usb_modeswitch, vtun, webkitgtk, weston, + xdriver_xf86-video-geode, xlib_libfontenc, xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #11086: download/git submodule breaks on symlinked dl folder + #11481: Docs: Is external.desc required? + +2018.08.2, Released October 25th, 2018 + + Important / security related fixes. + + Workaround added for incompatibility issues between host-dtc + and older U-Boot and Linux kernel versions. + + Detect and reject build paths containing '@', as this confuses + a number of packages, including GCC. + + utils/get-developers: Add -e option for use with git + send-email. + + utils/diffconfig: Make it work for (non-Buildroot) config + files not using the BR2_ prefix. + + u-boot: Fix for environment image handling on big endian + systems. + + Updated/fixed packages: binutils, ca-certificates, + cups-filters, dtc, erlang, file, freetype, gcc, git, gvfs, + jasper, leveldb, libarchive, libssh, live555, ljlinenoise, + mariadb, mongoose, netsnmp, nmap, nodejs, ntp, open-plc-utils, + poco, psmisc, ptpd2, python-enum34, qemu, qt, qt5base, + setools, spice, spice-protocol, tinc, ustr, wireshark, + + Issues resolved (http://bugs.uclibc.org): + + #11396: uboot environment image checksum invalid if target is big endian + +2018.08.1, Released October 7th, 2018 + + Important / security related fixes. + + Add a number of patches to fix build errors for host utilities + on modern distributions using glibc-2.28. + + mkusers: Ensure existing group members are preserved when a + group is reprocessed. + + printvars: Fix issue with exceeding shell command line length + limits for certain setups. + + Updated/fixed packages: acpid, android-tools, apache, + arp-scan, bandwidthd, bind, brltty, clamav, connman, cppcms, + domoticz, dtc, fio, gcc, gdb, ghostscript, gnupg, httpping, + igmpproxy, imlib2, ipsec-tools, libesmtp, libnfs, libxslt, + links, lua, mosquitto, nilfs-utils, ocrad, parted, php, + python-django, screen, shairport-sync, strongswan, + vboot-utils, webkitgtk, wireguard, x265 xen, xlib_libXdmcp, + xlib_libXfont, xlib_libXft, xlib_libxshmfence, + xutil_makedepend, zeromq + +2018.08, Released September 6th, 2018 + + Minor fixes. + + Known issues: + + - Glibc 2.28 on the build host breaks compilation of a number + of host packages. 2018.08 contains fixes for some of these + packages, but not all. Consider building on hosts (or in + containers) using older Glibc versions. + + - host-dtc 1.4.7 breaks compilation of older U-Boot and Linux + kernel configurations using FDT/DTC. Consider updating the + Linux kernel to >= 4.17 and U-Boot to >= 2018.07 or + backporting commit 9130ba8846 (scripts/dtc: Update to + upstream version v1.4.6-9-gaadd0b65c987) for the Linux + kernel / commit db405d1980 for U-Boot. + Alternatively revert commit 7b929ddcf0 (dtc: bump version to + 1.4.7) and ensure your build host does not have the libfdt + development headers installed. + + Updated/fixed packages: busybox, chipmunk, cutelyst, + domoticz, gcc, imagemagick, lcms2, libcurl, mediastreamer, + moarvm, php, qt, qt5virtualkeyboard, qt5webengine, screen, + sdl2, squashfs, uboot, xen + + Issues resolved (http://bugs.uclibc.org): + + #11261: ccache using wrong cached objects + #11276: Understanding the patch for kernel-4.9 and other.. + +2018.08-rc3, Released August 31th, 2018 + + Fixes all over the tree. + + linux: additional improvements to the flex / bison dependency + handling, use system provided variant if available. Ensure + toolchain is available when configuring for 4.18+ support. + + Download: Fix handling of primary sites using file:// + + Toolchain: Correct external toolchain musl detection for + static toolchains. + + Updated/fixed packages: aircrack-ng, bison, brltty, busybox, + cutelyst, dropbear, gr-osmosdr, i2c-tools, json-c, libconfuse, + libkcapi, libsoup, libssh, liburiparser, mbedtls, mender, + mesa3d, minicom, mjpegtools, mutt, openpowerlink, openssh, + oracle-mysql, php, postgresql, pv, qt5base, qt5quickcontrols, + rauc, shairport-sync, systemd, xlib_libX11, zeromq, + + Issues resolved (http://bugs.uclibc.org): + + #11091: BR2_PRIMARY_SITE doesn't work (wget is selected... + #11141: WF111 package no longer available + #11211: Internal compiler error: Killed (program cc1plus).. + #11236: util-linux fails to build on Travis CI when python.. + #11246: Glibc 2.28 - fails to build host-bison and host-m4 + #11256: Add python-falcon and python-mimeparse packages + +2018.08-rc2, Released August 20th, 2018 + + Fixes all over the tree. + + pkg-kconfig: Support dependencies needed to run the + configurator, E.G. recent Linux kernel versions needing flex + and bison. + + Defconfigs: ARM Juno: Bump ATF to fix a build + issue. Raspberrypi2: Bump rootfs size. Snps_archs38_vdk: + Correct /etc/inittab. Technologic ts7680: Correct genimage + configuration. Orange PI PC / Zero, Sheevaplug: Bump U-boot to + 2018.07 to fix build issue. Ensure host-openssl is pulled in + for kernel builds where needed. + + Updated/fixed packages: aircrack-ng, bind, boost, + boot-wrapper-aarch64, bzip2, busybox, chrony, cryptsetup, + dahdi-tools, dbus, domoticz, eigen, ipsec-tools, libarchive, + libfuse, libgit2, libopenssl, libselinux, lighttpd, lvm2, m4, + makedevs, mariadb, mesa3d-headers, mono, ncmpc, ncurses, + nodejs, php, python-django, python-pyqt5, qt5base, + qt5serialbus, ruby, samba4, uboot-tools, uclibc, vlc, + waylandpp, wireless_tools, wireshark, wpa_supplicant, mtd, + xdriver_xf86-video-ati, xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #10781: cryptsetup luksOpen container_file container causes.. + #10996: bogus musl ARM toolchain + #11191: xattr and check-package issue + +2018.08-rc1, Released August 5th, 2018 + + Toolchain: + + - add support for gcc 8.x, switch to gcc 7.x as the default + version + - add support for gdb 8.1, switch to gdb 8.0 as the default + and remove gdb 7.10/7.11 + - add support for binutils 2.31 + - NIOSII CodeSourcery toolchain updated + - Linaro AArch64 BE toolchain added, and other Linaro + toolchains updated + - Synopsys ARC pre-built toolchain updated + + Architecture: add support for ARM Cortex-M7 + + Major updates: + + - systemd bumped to 239 + - Qt5 bumped to 5.11.1 + - Rust bumped to 1.27 + - GStreamer stack bumped to 1.14.2 + - X.org server bumped to 1.20, and all X.org proto packages + replaced by the single xorgproto package + - i.MX6 support packages bumped to 6.2.4 + - i.MX Vivante graphics version bumped to 6.2.4.p1.2, + adding support for Wayland and i.MX8MQ platforms + + Linux: bumped to 4.17 by default. + + Infrastructure: new package infrastructure added for packages + using the Meson build system + + New packages: at-spi2-atk, at-spi2-core, capnproto, cmocka, + corkscrew, cutelyst, davfs2, flatcc, libidn2, libgit2, + libopusenc, mender, nghttp2, perl-convert-asn1, perl-crypt-blowfish, + perl-crypt-cbc, perl-digest-md5, perl-mime-base64-urlsafe, + perl-mojolicious-plugin-authentication, perl-net-ping, + perl-net-snmp, perl-net-ssh2, perl-net-telnet, pigz, + python-reentry, python-request-id, python-validators, + python-webob, shadowsocks-libev, speexdsp, xorgproto, wampcc + + New defconfigs: NXP i.MX7D SDB, Boundary Devices Nitrogen 8M, + Olimex A10 OLinuxino, ZynqMP ZCU106 + + Removed packages: all xproto_* have been removed and replaced + by xorgproto + + Issues resolved (http://bugs.uclibc.org): + + #9411: MUSL build with RT Error relocating /lib/libgcc_s.so.1: + __cpu_indicator_init: symbol not found + #9921: lockfile module within python-daemon not available + #10341: gdb install of py files when using buildroot toolchain + includes build path + #10661: /etc/init.d/S29netplug starts multiple instances of netplugd + #10751: Missing dependency in pulseaudio package + #10811: kodi-17.6-Krypton does not compile for freescale_* devices + #10856: openblas on qemu_x86_64_defconfig fails with + "sgemm_kernel.o: No such file or directory" + #11056: Compiling a file that uses libdrm headers fails with: + fatal error: drm.h: No such file or directory + #11061: support/download: git version=master broken + #11071: Building postgresql package on Debian 9.4 x64 for armel target fails + #11076: Docker containerd installed to incorrect path + #11101: host-patchelf Endian Issue with relative RPATH + #11111: raspberry pi 3 b+: missing BSP for 64-bit kernel + #11121: statfs call corrupts memory struct statfs too small + #11181: Switching toolchain does not work + +2018.05.3, Released October 6th, 2018 + + Important / security related fixes. + + Add a number of patches to fix build errors for host utilities + on modern distributions using glibc-2.28. + + mkusers: Ensure existing group members are preserved when a + group is reprocessed. + + printvars: Fix issue with exceeding shell command line length + limits for certain setups. + + Updated/fixed packages: acpid, android-tools, apache, + arp-scan, bandwidthd, bind, bison, brltty, chipmunk, connman, + cppcms, fio, gcc, ghostscript, gnupg, httping, igmpproxy, + imagemagick, imlib2, ipsec-tools, lcm2, libcurl, libesmtp, + libnfs, libssh, libxslt, links, mediastreamer, minicom, + moarvm, nilfs-utils, ocrad, parted, php, postgresql, pv, + python-django, qt, qt5quickcontrols, qt5webengine, screen, + sdl2, shairport-sync, squashfs, strongswan, vboot-utils, + webkitgtk, wireguard, x265, xen, xlib_libXfont, xlib_libXft, + xlib_libxshmfence, zeromq + +2018.05.2, Released August 28th, 2018 + + Important / security related fixes. + + Defconfigs: Raspberrypi2: Bump rootfs size, T7680: Fix + genimage.cfg issue, ARM Juno: Bump ATF to v1.3 to fix build + issue. + + Updated/fixed packages: acl, attr, apache, bind, + boot-wrapper-aarch64, brltty, bzip2, chrony, crda, cryptsetup, + dahdi-tools, dmidecode, dropbear, eigen, ffmpeg, gawk, gcc, + ghostscript, gnutls, imx-gpu-viv, ipsec-tools, libarchive, + libfuse, libglib2, libopenssl, libselinux, libsoup, lighttpd, + linuxptp, lttng-modules, lttng-tools, lua-flu, lvm2, m4, + makedevs, mariadb, mbedtls, mesa3d-heders, mtd, ncurses, + nodejs, openssh, php, python-django, rauc, ruby, samba4, + stress-ng, ti-utils, uboot-tools, uclibc, vim, waylandpp, + wireless_tools, wireless-regdb, wireshark, wpa_supplicant, + xorriso, znc + + Issues resolved (http://bugs.uclibc.org): + + #10781: cryptsetup luksOpen container_file container causes.. + #10986: Installing package attr when already supplied by.. + #11191: xattr and check-package issue + +2018.05.1, Released July 20th, 2018 + + Important / security related fixes. + + U-Boot: Ensure host version of ncurses is picked up and not + host-ncurses built by buildroot, as that otherwise causes + widechar/non-widechar conflicts and corrupted menuconfig + menus. + + Linux: Enable CONFIG_PERF_EVENTS when perf is enabled. + + Toolchain: ARC tools updated to arc-2018.03. + + pkg-stats: Fix python 3.x compatibility. + + dl-wrapper: Fix support for URIs containing '+', fix + no-check-hash for inferred site method. + + Defconfigs: Raspberrypi3: Bump rootfs size, Minnowboard-max: + Support ethernet on Turbot variant. + + Updated/fixed packages: audit, bind, btrfs-progs, cifs-utils, + clamav, collectd, coreutils, docker-containerd, dos2unix, + edid-decode, file, gcc, gdb, gnupg, gnupg2, heimdal, hidapi, + imagemagick, libcurl, libgcrypt, libglib2, liblogging, + libostree, libressl, libsoup, libv4l, libvncserver, libvorbis, + libwebsockets, libxslt, lm-sensors, mariadb, mpg123, ncurses, + network-manager, nodejs, patchelf, perl, php-amqp, pinentry, + pixiewps, qpdf, qt53d, qt5base, qt5charts, qt5script, redis, + systemd, triggerhappy, uboot, wireguard, wireless-regdb, + wireshark + +2018.05, Released June 1st, 2018 + + Minor fixes. + + Download: Work around for hanging connections for packages + from CVS, by adding a 10 minute max timeout. + + Updated/fixed packages: binutils, clang, dash, expect, git, + glibc, jpeg-turbo, libjpeg, log4cplus, openvmtools, xen, + + Issues resolved (http://bugs.uclibc.org): + + #11051: runtime issue on STM32 with usage of binutils 2.29.x + +2018.05-rc3, Released May 28th, 2018 + + Fixes all over the tree. + + Toolchain: ARC tools updated to arc-2018.03-rc2. + + Fs: Ensure hard links in TARGET_DIR are correctly copied for + filesystem input. With the recent changes to the file system + generation logic, hard links were "expanded" in file system + images leading to bloated rootfs images for setups with hard + links. + + Infrastructure: Error out for packages using the 'local' + method but forgetting to specify _SITE. + + Build rpcgen for the host when needed to support distributions + no longer shipping rpcgen with glibc (E.G. recent Fedora). + + Updated/fixed packages: autofs, bash-completion, binutils, + busybox, cjson, elf2flt, libcoap, libcurl, libtirpc, lrzsz, + poppler, procps-ng, qt-webkit-kiosk, quota, samba4, xfsprogs + + Issues resolved (http://bugs.uclibc.org): + + #11031: ld-elf2flt: host/bin/ld.real': execvp: No such file.. + #11036: C compiler cannot create executables + #11046: Git package binaries are ~180MB (compared to ~20MB in.. + +2018.05-rc2, Released May 22nd, 2018 + + Fixes all over the tree. + + Dependencies: Check that the current working directory (.) + isn't listed in PATH as that causes various build issues. + + Manual: Clarify that git branch names may not be used as + version identifiers. This has never been supported, but was + kind of working (with some limitations) before the git + download rework - Now it does not work at all. + + Linux: Ensure host version of ncurses is picked up and not + host-ncurses built by buildroot, as that otherwise causes + widechar/non-widechar conflicts and corrupted menuconfig + menus. + + Packages: Renamed a number of package options not prefixed + with BR2_PACKAGE_ for consstency. + + Download infrastructure: Fix file:// protocol handling after + download rework. + + Updated/fixed packages: acl, apr-util, asterisk, attr, + bluez5_utils, cifs-utils, clamav, clang, cups-filters, + dahdi-linux, exim, faketime, gdb, go, gst1-plugins-bad, + imx-mkimage, ipsec-tools, jamvm, janus-gateway, + jquery-ui-themes, libcap, libcurl, libftdi, libkcapi, libkrb5, + libmediaart, libmodbus, libmodplug, libmpd, + libnetfilter_cthelper, libnetfilter_cttimeout, libnfc, + libnfnetlink, libnss, liboauth, libogg, libosip2, + libpam-radius-auth, libpcap, libpciaccess, llvm, log4cplus, + ltrace, lynx, mbedtls, modem-manager, nfs-utils, + python-cython, python-websockets, qt5cinex, qt5wayland, rauc, + snort, strace, ti-sgx-km, transmission, wavpack, wget, woff2, + xen, zmqpp, znc, zstd + + Issues resolved (http://bugs.uclibc.org): + + #10986: Installing package attr when already supplied by... + #11011: BUildroot for Raspberry Pi 2 + #11016: Wrong compiler used for external user host packages + +2018.05-rc1, Released May 9th, 2018 + + Toolchain: glibc bumped to 2.27, musl bumped to 1.1.19, + uClibc-ng 1.0.30, Linux kernel headers bumped to 4.16.x. + + Architecture: support for the Blackfin architecture has been + removed, as it was removed from Linux upstream, poorly + maintained in binutils/gdb, and abandoned by Analog Devices. + + Numerous packages updated to have hashes for their license + files. + + Systemd can now be built with uClibc toolchains. + + Linux: addition of BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF and + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL to support building Linux + kernel configurations that need libelf on the host or openssl + on the host. + + Coding style: + - all Python scripts are now verified with flake8 + - check-package extended to check all Config.in and .mk files + in tree, not only the ones in package/ + + Infrastructure: + + - The download infrastructure has seen a major overhaul, with + the main visible new feature being Git caching: a package + fetched from Git no longer needs to be re-cloned entirely + everytime its version is changed. Anoter visible change is + that the download folder now has subfolders per package. See + http://lists.busybox.net/pipermail/buildroot/2018-April/217923.html + for more details about those changes. + + - The logic that generates the root filesystem images has been + reworked, with the main goal of allowing several filesystem + images to be produced in parallel, also a requirement for + top-level parallel build. Now, a .tar filesystem image is + always created, and re-extracted in a private directory to + create each format-specific filesystem image. + + - A new package infrastructure was introduced for Go-based + packages: golang-package. + + - Dependencies on extraction tools are now handled as proper + per-package dependencies, using + _EXTRACT_DEPENDENCIES. Beyond a cleanup, this is also a + preparation step for top-level parallel build support. + + - When a file being downloaded is part of a package with a + .hash file, but there is no hash listed for this file, the + file is now preserved in the download directory rather than + removed. This helps when updating a package, as it gives the + ability to easily calculate the hash of the file. + + - Addition of '-show-recursive-depends' and + '-show-recursive-rdepends' make targets, to + respectively display the recursive list of dependencies and + the recursive list of reverse dependencies of a given + package. + + - The /etc/shells file is now automatically generated with the + list of shell programs installed on the system. + + - Addition of -Ofast optimization level as an available + option. + + Major updates: Go updated to 1.10, Erlang bumped to 20.3, Qt5 + bumped to 5.10.1. + + New packages: 18xx-ti-utils, abootimg, bluez-alsa, brotli, + chipmunk, clang, docker-compose, docker-proxy, flare-engine, + flare-game, gst1-interpipe, gstreamer1-editing-services, + hackrf, i2pd, imx-alsa-plugins, imx-mkimage, libcdio-paranoia, + libkrb5, llvm, pixiewps, python-backports-ssl-match-hostname, + python-cached-property, python-cython, python-docker, + python-dockerpty, python-docker-pycreds, + python-flask-sqlalchemy, python-functools32, python-influxdb, + python-json-models, python-libusb1, python-networkx, + python-psycopg2, python-pymodbus, python-sqlalchemy, + python-subprocess32, python-texttable, + python-websocket-client, python-yieldfrom, quotatool, reaver, + snort, sunxi-mali-mainline, sunxi-mali-mainline-driver, tk, + tpm2-abrmd, tpm2-tools, tpm2-tss, udftools, vte, woff2. + + New defconfigs: ARC HS Development Kit, Arcturus ucls1012a, + Freescale i.MX6UL EVK (with vendor kernel), Freescale i.MX6 + SoloLite EVK (with vendor kernel), Freescale i.MX31 3Stack, + Freescale i.MX8Q EVK Freescale p1025twr, Freescale t1040d4rdb, + Qemu PPC64 E5500, SolidRun ClearFog Base, Tinker RK3288, Vyasa + RK3288, + + Removed packages: iqvlinux, kodi-adsp-*, mplayer + + Removed defconfigs: ci40, firefly_rk3288, + freescale_p1010rdb_pa, freescale_mpc8315erdb, riotboard, + teliv_evk_pro3 + + Issues resolved (http://bugs.uclibc.org): + + #10151: toolchain eclipse register : fails with a custom + BR2_HOST_DIR + #10511: Packages get downloaded uncompressed with wget + #10531: QtWebengine doesn't build if the host hasn't a 32 bits + C++ compiler working + #10846: error in compiling gnutls + #10886: openssl-1.0.2n fails to build + #10896: /bin/sh not in /etc/shells + #10961: Grub2 fails to build for x86_64 when BR2_SSP_ALL is + enabled + +2018.02.12, Released March 29th, 2019 + + Important / security related fixes. + + Updated/fixed packages: avahi, beecrypt, busybox, clamav, + cups, devmem2, fetchmail, file, fltk, gcc, gdb, git, jq, + leveldb, libopenssl, libraw, libseccomp, libssh2, + libunistring, mariadb, mosquitto, nodejs, ntp, openjpeg, perl, + php, putty, qt5webkit, rdesktop, systemd, wireshark, vsftpd, + xapp_xdm, xlib_libXdmcp + +2018.02.11, Released February 23th, 2019 + + Important / security related fixes. + + Ensure the PLATFORM and OS environment variables are not set, + as they cause build issues for some packages. + + The package list infrastructure now correctly handles packages + installing files with old mtime. + + Linux: Skip hash checks for user supplied downloadable + patches, as no hash checksums are available for those. + + scanpypi: protect against zip-slip vulnerability in zip/tar + handling + + Updated/fixed packages: bind, dhcpcd, dovecot, ghostscript, + gnuradio, imagemagick, jpeg-turbo, libarchive, libb64, + libcurl, libid3tag, madplay, mosquitto, openssh, php, + postgresql, proftpd, python, python-django, python3, qt5base, + sqlcipher, swupdate, systemd, unzip, webkitgtk + +2018.02.10, Released January 31th, 2019 + + Important / security related fixes. + + Defconfigs: Fixes for Lego EV3, QEMU AArch64-virt + + check-package: fix Python 3 support + + get-developers: Fix behaviour when called from elsewhere than + the toplevel directory. + + cmake: Also set CMAKE_SYSTEM_VERSION in toolchainfile.cmake + + Updated/fixed packages: acpica, apache, apr, asterisk, + avrdude, cargo, cc-tool, dash, dhcpdump, dmalloc, gnuchess, + gnupg2, leveldb, libarchive, libassuan, libftdi1, + libgpg-error, libhttpparser, libmad, libsndfile, libsquish, + liburiparser, libwebsock, libxml2, lighttpd, lm-sensors, + lua-msgpack-native, mbedtls, mosquitto, netatalk, nodejs, + openssh, pango, patchelf, php, python-django, python-pyyaml, + rauc, rp-pppoe, s6-networking, samba4, sdl_sound, + shairport-sync, sqlite, subversion, sunxi-cedarx, tcpreplay, + tekui, usb_modeswitch, webkitgtk, wireshark, wolfssl, + xapp_rgb, xenomai, xerces + + Issues resolved (http://bugs.uclibc.org): + + #11576: Unable to start apache with event MPM on raspberry pi 3 + +2018.02.9, Released December 20th, 2018 + + Important / security related fixes. + + defconfigs: Fixes for ci20 + + Updated/fixed packages: c-ares, dante, freetype, ghostscript, + glibc, gnutls, go, libcurl, libgpgme, libid3tag, libiscsi, + libmpd, libopenssl, libpjsip, linux, liquid-dsp, luvi, lynx, + msgpack, nginx, nodejs, php, popt, pps-tools, python-numpy, + python-requests, samba4, sdl2_net, squashfs, swupdate, uclibc, + wine, webkitgtk, xfsprogs + + Issues resolved (http://bugs.uclibc.org): + + #11426: pps-tools bash dependency + +2018.02.8, Released November 26th, 2018 + + Important / security related fixes. + + fs: Drop intermediate tarball from the filesystem handling to + fix an issue with xattrs handling related to fakeroot. Ensure + tarball target includes xattrs. + + download: Fix confusion in git submodule handling if dl/ is a + symlink. + + toolchain: Only allow enabling stack protection on + architectures with control flow integrity (CFI) support. Only + allow FORTIFY_SOURCE support on gcc >= 6. + + genrandconfig: Fix missing newline in BR2_WGET handling, + causing the following line to be ignored. This would affect + BR2_ENABLE_DEBUG, BR2_INIT_BUSYBOX, BR2_INIT_SYSTEMD, + BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV, BR2_STATIC_LIBS or + BR2_PACKAGE_PYTHON_PY_ONLY depending on the randomization. + + show-build-order: Also include the dependencies of + rootfs-common. + + Defconfigs: Fixes for Armadeus APF27, imx6sabre. + + graph-depends: Fix for package names starting with a non-alpha + character. + + Updated/fixed packages: attr, audit, bind, brotli, easydbus, + elfutils, gauche, gcc, giflib, gpsd, lcdproc, libcurl, + libiscsi, libnfs, libnspr, libnss, libkcapi, libsemanage, + liburiparser, lighttpd, linux, lua-curl, mariadb, mmc-utils, + mosquitto, mysql, neardal, netplug, network-manager, + nfs-utils, nginx, openocd, openswan, p11-kit, postgresql, + prosody, qemu, qt, rpm, ruby, samba4, squid, supertuxkart, + systemd, tar, trace-cmd, traceroute, twolame, uclibc, + usb_modeswitch, vtun, webkitgtk, xdriver_xf86-video-geode, + xlib_libfontenc, xproto_inputproto, xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #11086: download/git submodule breaks on symlinked dl folder + #11251: Util scanpypi failes when package change - to _ in.. + #11476: stdio2.h error invalid use of __builtin_va_arg_pack + #11481: Docs: Is external.desc required? + +2018.02.7, Released October 25th, 2018 + + Important / security related fixes. + + Detect and reject build paths containing '@', as this confuses + a number of packages, including GCC. + + utils/get-developers: Add -e option for use with git + send-email. + + utils/diffconfig: Make it work for (non-Buildroot) config + files not using the BR2_ prefix. + + u-boot: Fix for environment image handling on big endian + systems. + + Updated/fixed packages: binutils, ca-certificates, + cups-filters, erlang, file, freetype, gcc, git, gvfs, leveldb, + libarchive, libcurl, libssh, live555, ljlinenoise, mariadb, + mongoose, netsnmp, nmap, nodejs, ntp, open-plc-utils, poco, + psmisc, ptpd2, python-enum34, qemu, qt, qt5base, setools, + spice, spice-protocol, tinc, ustr, wireshark + + Issues resolved (http://bugs.uclibc.org): + + #11396: uboot environment image checksum invalid if target is big endian + +2018.02.6, Released October 7th, 2018 + + Important / security related fixes. + + Add a number of patches to fix build errors for host utilities + on modern distributions using glibc-2.28. + + mkusers: Ensure existing group members are preserved when a + group is reprocessed. + + printvars: Fix issue with exceeding shell command line length + limits for certain setups. + + Updated/fixes packages: acpid, android-tools, apache, + arp-scan, bandwidthd, bind, bison, clamav, connman, cppcms, + cramfs, fio, gcc, ghostscript, glibc, gnupg, httping, + igmpproxy, imagemagick, imlib2, ipsec-tools, lcms2, libcurl, + libesmtp, libnfs, libssh, libxslt, links, linuxptp, + mediastreamer, minicom, moarvm, nilfs-utils, ocrad, parted, + php, pv, python-django, qt, qt5quickcontrols, qt5webengine, + screen, sdl2, shairport-sync, squashfs, strongswan, + vboot-utils, webkitgtk, wireguard, x265, xen, xlib_libXfont, + xlib_libXft + + New packages: brotli, woff2 + +2018.02.5, Released August 29th, 2018 + + Important / security related fixes. + + Defconfigs: Raspberrypi2: Bump rootfs size, T7680: Fix + genimage.cfg issue, ARM Juno: Bump ATF to v1.3 to fix build + issue. + + Updated/fixed packages: acl, apache, attr, bind, + boot-wrapper-aarch64, brltty, bzip2, chrony, crda, cryptsetup, + dahdi-tools, dmidecode, dropbear, eigen, erlang, ffmpeg, gawk, + gcc, ghostscript, gnutls, ipsec-tools, libarchive, libfuse, + libopenssl, libselinux, libsoup, lighttpd, linuxptp, + lttng-modules, lttng-tools, lua-flu, lvm2, m4, makedevs, + mariadb, mbedtls, mesa3d-headers, mtd, ncurses, nodejs, + openssh, php, postgresql, python-django, qt5xmlpatterns, ruby, + samba4, shairport-sync, stress-ng, ti-utils, uboot-tools, vim, + waylandpp, wireless_tools, wireshark, wpa_supplicant, xorriso, + znc + + Issues resolved (http://bugs.uclibc.org): + + #10781: cryptsetup luksOpen container_file container causes.. + #10986: Installing package attr when already supplied by.. + #11191: xattr and check-package issue + +2018.02.4, Released July 21th, 2018 + + Important / security related fixes. + + U-Boot: Ensure host version of ncurses is picked up and not + host-ncurses built by buildroot, as that otherwise causes + widechar/non-widechar conflicts and corrupted menuconfig + menus. + + Linux: Enable CONFIG_PERF_EVENTS when perf is enabled. + + Defconfigs: Raspberrypi3: Bump rootfs size, Minnowboard-max: + Support ethernet on Turbot variant. + + Updated/fixed packages: bind, clamav, collectd, dos2unix, + edid-decode, gcc, gdb, heimdal, hidapi, imx-gpu-viv, libcurl, + libglib2, liblogging, libostree, libsoup, libv4l, lm-sensors, + ncurses, network-manager, patchelf, pinentry, procps-ng, qpdf, + qt5, qt53d, qt5base, qt5charts, qt5script, qt5serialport, + systemd, wireguard, wireless-regdb + + Issues resolved (http://bugs.uclibc.org): + + #11101: host-patchelf Endian Issue with relative RPATH + +2018.02.3, Released June 18th, 2018 + + Important / security related fixes. + + Various fixes for building on modern distributions (GCC 8.x, + no rpcgen utility). + + ARM: Default to binutils 2.28 and warn about newer binutils + versions, which are known to cause boot failures for Linux + kernels built in thumb mode. + + Busybox/mdev: Fix module autoloading. + + Busybox/sysvinit: inittab: Add /dev/{stdin,stdout,stderr} + symlinks, call swapon -a to activate any configured swap + devices. + + Dependencies: Check that PATH does not contain current working + directory, which triggers a number of build failures. + + Infrastructure: Error out for packages erroneously using the + 'local' site method but not defining a _SITE. + + Linux: Fix cuImage. / simpleImage. handling. Ensure + kconfig uses ncurses from the host to fix a ncurses/ncursesw + mixup, causing menuconfig display corruption. + + Toolchain: Workarounds for fix-rpath issues with binutils and + elf2flt. + + Util-linux: Fix blocking on getrandom() issue with recent + kernels. + + Remove broken freescale_imx31_3stack, + freescale_imx6sololiteevk and freescale_imx6ulevk defconfigs. + + Updated/fixed packages: apr-util, asterisk, attr, audit, + autofs, binutils, busybox, cifs-utils, cups-filters, dash, + ebtables, exim, expect, f2fs-tools, faketime, file, gdb, git, + glibc, gnupg, gnupg2, gst1-plugins-bad, imagemagick, jamvm, + jpeg-turbo, libcap, libcoap, libcurl, libgcrypt, libjpeg, + libnss, libressl, libtirpc, libvncserver, libvorbis, libxslt, + log4cplus, lrzsz, ltrace, lynx, mariadb, mbedtls, mpg123, + nasm, netplug, network-manager, nfs-utils, nodejs, + openvmtools, patch, perl, php-amqp, poppler, procps-ng, + python, python-websockets, quota, redis, samba4, sysvinit, + transmission, triggerhappy, util-linux, wavpack, wget, + wireshark, xen, zmqpp + + Issues resolved (http://bugs.uclibc.org): + + #10986: Installing package attr when already supplied by busybox.. + #11031: ld-elf2flt: host/bin/ld.real': execvp: No such file or.. + +2018.02.2, Released May 4th, 2018 + + Important / security related fixes. + + Tweak package size/file instrumentation to better handle + package rebuilds. + + Revert /etc/shells creation when bash is enabled. + + Exclude /lib/firmware from the rpath fixup logic, as it may + contain non-native ELF files. + + Scanpypi: Support the new PyPi infrastructure. + + Handle GCC 8.x on the host. + + Ensure timestamp of /usr is updated to support the systemd + ConditionNeedsUpdate option. + + Updated/fixed packages: bluez5_utils, flann, gdb, gnupg2, + grub2, libcec, libcgi, libglib2, libgpg-error, libgpgme, + libtomcrypt, mbedtls, mkpasswd, php, python, python-requests, + python-watchdog, qt53d, qt5websockets, sdl2, sdl2_image, + syslog-ng, systemd, tcl, tcllib, uclibc, usb_modeswitch, + wireguard, wmctrl + + Issues resolved (http://bugs.uclibc.org): + + #10896: /bin/sh not in /etc/shells + #10961: Grub2 fails to build for x86_64 when BR2_SSP_ALL is enabled + +2018.02.1, Released April 9th, 2018 + + Important / security related fixes. + + Removed unmaintained defconfigs: Creator Ci40, Firefly rk3288, + Freescale mpc8315erdb / p1010rdb_pa, Riotboard, Teliv EVK + Pro3. + + Infrastructure: Speed up instrumentation for package size by + comparing timestamps instead of md5 checksums, as doing + checksums could lead to up to 25% longer build time for big + configurations. + + Rename the internal _BASE_NAME variable to _NASENAME + to avoid name clashes with packages ending on '-base'. + + Add a better fix for build issues for autotools based packages + checking for C++ support on toolchains without C++ support. + + Build host-tar if tar is older than 1.27 on the build machine + to work around reproducibility issues with git archives + containing long paths. + + check-unique-files: Fix for filenames not representable in the + users' locale. + + Check-bin-arch: Add support for per-package ignore paths + (_BIN_ARCH_EXCLUDE). + + Toolchain: Fix SSP support detection for external toolchains. + + linux: Add _NEEDS_HOST_OPENSSL / LIBELF options to ensure + these dependencies are available for Linux configurations + needed these dependencies, similar to how it is done for + U-Boot. + + Support custom (not in tree) device tree files in addition to + in-tree ones. + + U-Boot / uboot-tools: Fix header conflict with libfdt-devel + installed on host. + + Updated/fixed packages: apache, busybox, c-ares, cmake, + docker-engine, enlightenment, eudev, fbgrab, freescale-imx, + gtest, imagemagick, intel-microcode, irssi, jimtcl, kmod, + kodi, ktap, libcoap, libcurl, libfcgi, libhttpparser, + libminiupnpc, libopenssl, libpjsip, libss7, libssh2, libupnp + libupnpp, libuv, libvorbis, memcached, motion, musl, nodejs, + ntp, openblas, opencv3, openocd, opus-tools, patch, php, + pkgconf, postgresql, powerpc-utils, python-jsonschema, + python-webpy, qemu, qt5bsae, qt5script, qt5webkit, rapidjson, + rauc, sam-ba, samba4, sngrep, systemd, tremor, uboot-tools, + uclibc-ng-test, upmpdcli, wireshark, xerces, xterm, zstd + + New packages: docker-proxy, python-functools32 + + Issues resolved (http://bugs.uclibc.org): + + #10766: upmpdcli: Segmentation fault + #10776: ktap fails to build + #10846: error in compiling gnutls + #10856: openblas on qemu_x86_64_defconfig fails with "sgemm_.. + +2018.02, Released March 4th, 2018 + + Fixes all over the tree. + + Issues with systemd with a readonly rootfs and DBus fixed. + + Instructure: + - check-uniq-files: fix Python 2.6 compatibility. + - dependencies.sh: check for external argparse module for + Python 2.6. + - Add infrastructure to detect and use a UTF-8 locale on the + host, needed by systemd. + + Update/fixed packages: clamav, dash, dhcp, dovecot, efl, + ffmpeg, libv4l, mono, mosquitto, php, postgresql, qt, + scanpypi, sdl2, systemd, tor, tvheadend, uboot, wavpack + + Issues resolved (http://bugs.uclibc.org): + + #10831: qemu_x86_64_defconfig build fails on linux-headers.. + +2018.02-rc3, Released February 27th, 2018 + + Fixes all over the tree. + + check-bin-arch: skip /lib/modules to allow 32-bit userland + with 64bit kernel. + + dependencies: Blacklist tar 1.30+ and build our own host-tar + if needed as tar 1.30+ changed the --numeric-owner output for + long path names. Build host-tar before other host-dependencies + as they need it to extract their source tarballs. + + Update/fixed packages: asterisk, azmq, bluez5_utils, domoticz, + e2fsprogs, erlang, exim, glibc, gpsd, jq, libglib2, libvorbis, + mariadb, mbedtls, mesa3d, mesa3d-headers, mpv, patch, pcre2, + php, qt5, qt5multimedia, qt5wayland, qt5webengine, qt5webkit, + systemd, quagga, rustc, uboot, wireguard, zic, zlib-ng + + Issues resolved (http://bugs.uclibc.org): + + #10726: Current libglib2.mk creates broken libglib2 binary... + #10786: Linux fails to build unless make linux-menuconfig... + #10796: Cannot generate cpio image without selecting CON... + +2018.02-rc2, Released February 15th, 2018 + + Fixes all over the tree. + + Dependencies: Ensure C++ support is available like for C + support for packages needing 32bit host support. + + utils/genrandconfig: Check host dependencies for config. + + Updated/fixed packages: busybox, dnsmasq, dropbear, ffmpeg, + glibc, keepalived, libcpprestsdk, libgpiod, libmaxminddb, + librsvg, libtasn1, libv4l, libxml2, lightning, ltp-testsuite, + mesa3d, mesa3d-demos, mesa3d-headers, nftables, open-lldp, + php, postgresql, python-crossbar, qt5, qt53d, qt5enginio, + qt5tools, qt5webengine, qt5webkit, rsync, rust-bin, rustc, + systemd + + Issues resolved (http://bugs.uclibc.org): + + #9781: ti-sgx-km build on kernel >4.1 + #10141: Squashfs extended attribute failures + +2018.02-rc1, Released February 5th, 2018 + + The global source-check and per-package -source-check + targets have been removed. + + Architecture: Add x86 Silvermont variant. Add several new ARM + variants, rework MIPS NaN logic. Support mainline binutils/gcc + for ARC. + + Toolchains: Linaro toolchains upgraded to 2017.11 release, ARC + external toolchains upgraded to arc-2017.09. Libatomic is now + also copied for external musl based toolchains. + Add binutils 2.30.x and switch to binutils 2.29.x by default. + + Added hardening options to build with RELRO and FORTITY. + + New defconfigs: Bananapi M64, FriendlyARM Nanopi A64 & NEO2, + imx6slevk, imx6sx-sdb, imx6ulevk, Olimex A64-OLinuXino, + Orangepi lite / pc plus / pc / prime / win / win plus / zero + plus2, Pine64, Solidrun MacchiatoBin. Sopine. + + Add utils/diffconfig, a simple utility for comparing + configuration files - Adapted from the version in the + Linux kernel. + + Infrastructure: Check that the same file is not touched by + multiple packages, as a preparation for toplevel parallel + builds. + + Hashes for the license files for a large number of packages + have been added, ensuring that license changes will not be + missed when packages are bumped. + + Fix build issue for autotools based packages checking for C++ + support on toolchains without C++ support and on a distro + lacking /lib/cpp (E.G. Arch Linux). + + Support for the meson build system. + + Pie charts generated by 'graph-build' or 'graph-size' are now + sorted according to the size of each piece. + + System: Only show getty options when busybox init or sysvinit + are used. + + ARM-trusted-firmware: Support ATF bundled in U-Boot as + well as U-Boot bundled in ATF. + + Zlib is now a virtual package, provided by either libzlib or + zlib-ng, similar to openssl. + + Support for the Rust programming language. + + New packages: aoetools, armbian-firmware, binaries-marvell, + brltty, cargo, cargo-bin, cups-filters, curlpp, daq, + flatbuffers, gconf, glorytun, gstreamer1-mm, imx-m4fwloader, + imx-gpu-g2d, json-for-modern-cpp, libcpprestsdk, libgta, + libostree, libupnp18, luadbi, luadbi-sqlite3, lua-utf8, lynx, + meson, mv-ddr-marvell, nilfs-utils, opentracing-cpp, + open-lldp, pimd, proj, python-flask-cors, + python-jaraco-classes, python-more-itertools, python-oauthlib, + python-raven, python-remi, python-requests-oauthlib, + python-schedule, python-secretstorage, python-see, + python-tabledata, python-txtorcon, python-xlib, qt5charts, + rtl8189fs, rtl8723bu, rust, rustc, rust-bin, rygel, safeclib, + solatus, tcf-agent, traceroute, waylandpp, wolfssl, + zisofs-tools, zlib-ng + + Removed packages: eeprog + +2017.11.2, Released January 21st, 2018 + + Important / security related fixes. + + External toolchain: libatomic is now also copied for musl + based toolchains. + + nconfig: Fix for ncurses/ncursesw linking issue causing crashes. + + System: Only show getty options when busybox init or sysvinit + are used. + + Infrastructure: Fix build issue for autotools based packages + checking for C++ support on toolchains without C++ support and + on a distro lacking /lib/cpp (E.G. Arch Linux). + + Pie charts generated by 'graph-build' or 'graph-size' are now + sorted according to the size of each piece. + + Updated/fixed packages: asterisk, avahi, bind, busybox, + coreutils, eeprog, intel-microcode, iputils, irssi, kmsxx, + libiio, linux-firmware, lz4, mariadb, matchbox-lib, mcookie, + ntp, php, pound, rpcbind, tar, ti-cgt-pru, webkitgtk, xen, + xlib_libXpm + + Issues resolved (http://bugs.buildroot.org): + + #9996: lz4 package does not install lz4 binaries in target + #10176: Rsyslog's S01logging is deleted by Busybox.mk from... + #10216: package/x11r7/mcookie/mcookie.c:207: bad size ? + #10301: systemd/getty unused options + #10331: kmsxx, host installation fails with BR2_SHARED_... + #10556: Building ntp package with SSL library libressl... + #10641: avahi-autoipd not starting when using systemd-tmpfiles + +2017.11.1, Released December 31th, 2017 + + Important / security related fixes. + + Updated/fixed packages: asterisk, checkpolicy, dhcp, flann, + gdb, glibc, heimdal, kodi-pvr-mediaportal-tvserver, + kodi-pvr-stalker, libcue, libopenssl, libpqxx, libsoxr, + linknx, linux-tools, lldpd, ltp-testsuite, mariadb, mfgtools, + nodejs, nut, pulseaudio, python-cffi, qemu, rsync, tor, uboot, + uboot-tools, vlc, webkitgtk, weston, wireguard, wireshark, + xenomai, xfsprogs + +2017.11, Released November 30, 2017 + + Fixes all over the tree. + + Toolchain: Use github mirror for Glibc. + + Defconfigs: Correct boot.cmd for bananapi-m1. + + Makefiles: Workaround include order issues for certain make + versions by explicitly sorting the result of wildcard where it + matters. + + Download: Ensure subversion runs in non-interactive mode. + + Updated/fixed packages: asterisk, boost, chrony, dovecot, + dvb-apps, exim, feh, freerdp, fwup, google-breakpad, jose, + kvm-unit-test, lftp, libcurl, libevent, libfastjson, libpjsip, + libupnp, linphone, localedef, lttng-tools, mp4v2, mtools, + ndisc6, oracle-mysql, parted, pdbg, qt, qt5connectivity, + qt5declarative, qt5webkit, rauc, runc, samba4, shairport-sync, + systemd-bootchart, webkitgtk, wireguard, xlib_libXcursor, + xlib_libXfont, xlib_libXfont2, + + Issues resolved (http://bugs.buildroot.org): + + 10501: host-localedef fails to compile on Ubuntu 17.10 + 10506: Changed kernel image type (e.g. zImage to uImage)... + +2017.11-rc2, Released November 13th, 2017 + + Fixes all over the tree. + + Updated/fixed packages: collectd, ffmpeg, freerdp, + go-bootstrap, imagemagick, jimtcl, libpjsip, libplist, libuv, + mesa3d, nodejs, ntp, openjpeg, postgresql, python-numpy, ruby, + snmp++, usb_modeswitch, util-linux, vboot-utils, webkitgtk, + wireshark, wpa_supplicant, xapp_xdriinfo + + Issues resolved (http://bugs.buildroot.org): + + #10326: mesa3d package fails to build when BR2_SHARED_STATIC_LIBS=y + #10491: Cannot output security warning when compiled with buildroot.. + +2017.11-rc1, Released November 6th, 2017 + + Fixes all over the tree and new features. + + Openssl is now a virtual package, which may be provided by + OpenSSL (now renamed to libopenssl) or LibreSSL. + + libssh2: there is now an explicit choice of the backend to use + (mbedtls, gnutls or openssl). Previously, the choice was implicit + based on the TLS library that was selected. Now, it is possible to + choose the backend, which is important if several TLS libraries are + selected. + + netsnmp: all MIB files are now installed, making the target filesystem a + bit bigger than before. To remove unneeded MIBS, you should use a + post-build script. + + Toolchain: Linaro toolchains updated to 2017.08, ARC toolchain + updated to 2017.09, Glibc updated to 2.26, Glibc support for + ARCv2. The toolchain wrapper now handles SOURCE_DATE_EPOCH for + older (pre-gcc7.x) toolchains for BR2_REPRODUCIBLE. + + New defconfigs: Atmel SAM45D27, Bananapi M1 and M2 Plus, + Engicam i.CoreM6 Qt5 configuration, i.MX6 sabreauto (mainline + kernel/u-boot), i.MX6Q sabresd Qt5 configuration, i.MX7d-pico, + QEMU ppc64le, Raspberry pi3 Qt5 webengine configuration, + Technologic TS-7680. + + New packages: asterisk, azmq, bcg729, boinc, dahdi-linux, + dahdi-tools, freeswitch-mod-bcg729, fscryptctl, libb64, + libpri, libss7, lua-basexx, lua-compat53, lua-cqueues, + lua-curl, lua-datafile, lua-fifo, lua-httpd, + lua-lpeg-patterns, lua-markdown, lua-sailor, lua-value, + luksmeta, minetest, minetest-game, pdmenu, prosody, + python-aiocoap, python-automat, python-ibmiotf, + python-iso8601, python-m2r, python-simplesqlite, + python-websockets, python-xmltodict, qt5wayland, qt5webengine, + restorecond, selinux-python, semodule-utils, uhubctl, + wireguard, wsapi-fcgi, wsapi-xavante + + Removed packages: aiccu, rfkill, sepolgen + + Issues resolved (http://bugs.buildroot.org): + + #10281: lsblk does not compile for util-linux + #10336: lttng compilation fails : linking error + #10351: glibc missing in rootfs + #10356: nfs-utils missing header + #10361: python3 python-config script generates invalid includes + #10366: dropbear download url has changed + #10391: WiringPi retrieves wrong (old) version + #10406: Beaglebone black: Buggy SGX driver version, swapped... + #10426: uboot-tools' fw_setenv does not update the redundant... + #10451: libpcap 1.8.x and 1.7x does not compile on PPC + +2017.08.2, Released November 28th, 2017 + + Important / security related fixes. + + Qt: 5.6 version updated to 5.6.3. + + Reproducible: Do not override SOURCE_DATE_EPOCH if already set + in the environment. + + Makefiles: Workaround include order issues for certain make + versions by explicitly sorting the result of wildcard where it + matters. + + Updated/fixed packages: apr, apr-util, arqp-standalone, + azure-iot-sdk-c, collectd, dvb-apps, ffmpeg, go-bootstrap, + google-breakpad, gstreamer, imagemagick, irssi, jimtcl, + kvm-unit-test, libcurl, libfastjson, libglib2, libidn, + libpjsip, libplist, localedef, lttng-tools, luajit, mesa3d, + moarvm, mp4v2, openssh, openssl, oracle-mysql, postgresql, + python3, python-pyqt5, qt, qt5base, qt5canvas3d, + qt5connectivity, qt5declarative, qt5engineio, + qt5graphicaleffects, qt5imageformats, qt5location, + qt5multimedia, qt5quickcontrols, qt5quickcontrols2, qt5script, + qt5sensors, qt5serialbus, qt5serialport, qt5svg, qt5tools, + qt5webchannel, qt5webkit, qt5websockets, qt5x11extras, + qt5xmlpatterns, quagga, redis, ruby, samba4, sdl2, snmppp, + swupdate, ti-gfx, uboot-tools, usb_modeswitch, vboot-utils, + webkitgtk, wget, wireshark, xapp_xdriinfo. + + Issues resolved (http://bugs.buildroot.org): + + 10326: mesa3d package fails to build when BR2_SHARED_STATIC_LIBS=y + 10361: python3 python-config script generates invalid includes + 10501: host-localedef fails to compile on Ubuntu 17.10 + +2017.08.1, Released October 23rd, 2017 + + Important / security related fixes. + + Webkitgtk bumped to the 2.18.x series, fixing a large number + of security issues. + + Defconfigs: galileo: fix ext4 related kernel config, bump + kernel for gcc 6.x compatibility, enable wchar support for + grub2. wandboard: correct rootfs offset + + support: Ensure gzip compression level 6 is used for git + tarballs. check-bin-arch: Correctly handle (ignore) symbolic + links. check-rpath: Also handle PIE binaries + + External toolchain: Correctly handle glibc Buildroot + toolchains built with merged /usr + + musl: fix ARMv4 build with binutils 2.27.51+, fix for + CVE-2017-15650 + + Updated/fixed packages: apache, augeas, bind, bluez5_utils, + busybox, bzip2, cmake, dnsmasq, ejabberd, gcc, git, go, ffmpeg, file, + flashrom, gd, gdk-pixbug, gnupg2, hostapd, ifupdown-scripts, + imagemagick, iucode-tool, kernel-module-imx-gpu-viv, lame, + libarchive, libcurl, libffi, libidn, libmbim, libnspr, libnss, + libressl, librsync, libsoup, libxml2, libzip, mbedtls, musl, + netplug, nginx, openvpn, pkgconf, poppler, proxychains-ng, + qemu, qt, rpi-userland, syslog, ruby, samba4, softether, + sqlite, strongswan, subversion, supertuxkart, supervisor, tcpdump, + tor, unrar, urq, vboot-utils, webkitgtk, wpa_supplicant, xen, + xmlstarlet, xlib_libXfont, xlib_libXfont2, + xserver_xorg-server, zsh + +2017.08, Released September 1st, 2017 + + Minor fixes. + + Toolchain: Don't allow internal toolchain builds for MIPS + M6201/P6600, as support for these are not yet in mainline GCC. + + Updated/fixed packages: bcusdk, connman, dialog, dnsmasq, + gnupg, grub2, iostat, iucode-tool, libgcrypt, libkcapi, + libphidget, libv4l, linux-tools, mediastreamer, minidlna, + nss-pam-ldapd, nvidia-driver, qt-webkit-kiosk, rpcbind, squid, + transmission, vde2, vim + + Updated/fixed defconfigs: + + Removed packages: simicfs. + + Issues resolved (http://bugs.buildroot.org): + + #10261: Grub2 fails to build for x86_64 + +2017.08-rc3, Released August 23rd, 2017 + + Fixes all over the tree. + + Updated/fixed packages: alsa-lib, alsa-utils, cc-tool, + dbus-cpp, e2fsprogs, elf2flt, faad2, fakeroot, gcc, git, gpsd, + gst1-validate, kvmtool, libconfuse, libepoxy, librsync, + libspatialindex, libunwind, linux, linux-headers, lua, + mariadb, mesa3d, mtd, openocd, python3, syslinux, sysvinit, + whois, xen, zmqpp. + + Updated/fixed defconfigs: ci20, socrates_cyclone5, + toradex_apalis_imx6. + + Removed defconfig: Armadeus APF9328. + + skeleton-* packages introduced in -rc1 have been renamed to + skeleton-init-* instead. + + Issues resolved (http://bugs.buildroot.org): + + #10141: Squashfs extended attribute failures + +2017.08-rc2, Released August 11th, 2017 + + Fixes all over the tree. + + Updated/fixed packages: bind, dbus, erlang-p1-xml, faad2, + ficl, gcc, gdb, glibc, jack2, libcurl, linux, linux-headers, + lua, mutt, nvme, qt5base, skeleton-common, snappy, stella, + swupdate, uclibc, valgrind, webkitgtk. + + Updated/fixed defconfigs: beaglebone_qt5, minnowboard_max, + nanopi_m1{, _plus}, olimex_a20_olinuxino_lime, qemu_sparc, + qemu_sparc64. + + The cmake-package infrastructure for host packages has been + fixed to not incorrectly detect target packages through + pkg-config. + + Issues resolved (http://bugs.buildroot.org): + + #9926: systemd-resolved.service: Failed at step NAMESPACE (systemd 233) + #10021: libqeglfs-viv-integration.so file is missing for qt5 on armv7 + #10026: lua-5.3.4: fix lua linker error in swupdate + #10146: package/skeleton-common fix recursive variable + #10156: glibc compilation fails for X86 32bits (i386) + #10201: toolchain-wrapper.c:192: (error) Memory leak: + #10221: Buildroot Support + +2017.08-rc1, Released August 2nd, 2017 + + Infrastructure: + + - The skeleton package has been split into multiple packages: + skeleton-sysv (when Busybox or SysV init are used), + skeleton-systemd (when systemd is used), skeleton-none (when + no init system is used) and skeleton-custom (when a custom + skeleton is used). Those packages, except skeleton-custom, + share common logic and data in a new package called + skeleton-common. The skeleton package becomes a virtual + package. This change allows to generate a filesystem that is + compliant with systemd expectations. + + - Support for using a read-only filesystem with systemd has + been fixed. + + - Major revamp of the gettext handling, with user-visible + effect: + + - prior to this revamp, when BR2_ENABLE_LOCALE=y, each + package could decide to enable or not NLS support. When + BR2_ENABLE_LOCALE was disabled, NLS support was forced off + by passing --disable-nls to packages. + + - after this revamp, a new BR2_SYSTEM_ENABLE_NLS option + controls whether NLS support should be enabled or not in + packages. This option defaults to disabled, which means + that now, NLS support is by default disabled in all + packages. + + Therefore, if you need NLS support in packages, you must now + explicitly enable the BR2_SYSTEM_ENABLE_NLS option. + + - The host directory no longer has a usr/ component. This + makes it much more natural to use that directory as an + externally used toolchain. For compatibility with existing + scripts, a usr -> . link is still added. + + - Hashes are now checked on tarballs by Buildroot when a + package is sourced from a Git repository. + + - Patches are no longer being downloaded from Github, since + auto-generated patches could change over time, and break + hashes. All patches that were downloaded from Github are now + stored in their respective package directories. + + - Hash files in packages can now contain hashes for the + license files contained in the package source code. This + allows to detect changes in such license files. + + - Binaries in $(TARGET_DIR) are now cleaned up from invalid + RPATHs at the end of the build. + + - A new "make sdk" target prepares $(HOST_DIR) to be + relocatable: turns RPATHs in host binaries into relocatable + ones, removes bogus RPATHs from staging binaries/libraries, + and provides a relocate-sdk script that can be executed to + relocate the SDK after installation. + + - Addition of utils/genrandconfig which generates a random + configuration based on a set of pre-defined toolchain + configurations (support/config-fragments/autobuild/) and a + random selection of packages. It is now used by the + autobuilders to generate the random configurations. + + Filesystems: + + - ext2/3/4 filesystems are now generated using mkfs.ext from + e2fsprogs instead of using genext2fs. + + Architecture: + + - Addition of support for ARM big.LITTLE variants + - Improved MIPS support, with options to select NaN encoding + and FP32 mode. + + Toolchain: + + - Switch to gcc 6.x as the default gcc version, add support + for gcc 7.x, remove support for gcc 4.8 + - Switch to binutils 2.28 as the default binutils version, add + support for binutils 2.29, remove support for binutils 2.26 + - Support added for gdb 8.0 + - uClibc-ng bumped to 1.0.26 + - CodeSourcery toolchains for x86 and SuperH have been + removed, they were using a too old glibc version + (2.17). External toolchains with glibc 2.17 or earlier are + no longer supported. + - The version selection in the glibc package has been + removed. Like musl and uClibc-ng, we now use the latest + glibc version. + - Improved support for Xtensa toolchain overlays, which can + now be downloaded. + + Tools: + + - Numerous improvements to the runtime test infrastructure + - Tests are now executed by Gitlab CI on a regular basis + - Tools that are directly useful to the user have been moved + from support/scripts/ to utils/: brmake, check-package, + get-developers, scancpan, scanpipy, size-stats-compare, + test-pkg. + + New defconfigs: A13 Olinuxino, Engicam platforms (i.CoreM6 + Solo/Dual/DualLite/Quad, RQS SOM, GEAM6UL SOM, Is.IoT MX6UL + SOM), Nano Pi M1 (Plus), OrangePi Zero and Plus. + + New packages: azure-iot-sdk-c, cracklib, dt-utils, easy-rsa, + erlang-jiffy, erlang-p1-oauth2, erlang-p1-xmpp, + ifupdown-scripts, irrlicht, kodi-inputstream-adaptive, + kodi-inputstream-rtmp, kvazaar, let-me-create, libloki, + libpwquality, libressl, libspatialindex, libva-utils, + linuxconsoletools, linuxptp, luaossl, lua-sdl2, lua-stdlib, + lsscsi, paxtest, pcre2, pixz, python-asn1crypto, + python-backports-shutil-get-terminal-size, python-bcrypt, + python-cheroot, python-h2, python-hpack, python-hyperframe, + python-hyperlink, python-ipython-genutils, python-pathlib2, + python-pickleshare, python-priority, python-portend, + python-scandir, python-systemd, python-tempora, + python-traitlets, python-typepy, qt5virtualkeyboard, + ratpoison, rauc, refpolicy, rhash, sdl2_mixer, sdl2_net, + xr819-xradio, zstd + + Removed packages: cloog, input-tools, mke2img + + Issues resolved (http://bugs.buildroot.org): + + #7892: systemd-journald is broken + #9341: avahi-utils does not compile with uClibc + libglib2 + #9441: Link BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY to + BR2_ENABLE_DEBUG + #9746: ext4 image generated by Buildroot is not working + properly with U-Boot + #9886: Build fails with "unexpected EOF while looking for + matching `"'" if PATH contains a newline + #9891: parted 3.1 => 3.2? + #9911: qt5 does not build on sparc + #9916: qt5 does not build on + arm-buildroot-linux-uclibcgnueabihf for ARMv8 cores + #9936: Host QEMU does not build with SDL support because of + pkg-config + #9941: nodejs option disappears for arm + #9951: SCANCPAN failure + #9966: util-linux-2.30/.stamp_built' failed + #9976: License file for package 'rtl8821au' incorrect + #9991: SGX Error implicit declaration of function + ‘dmac_map_area’ + #10011: wget does not work from Buildroot + #10036: Buildroot builds Raspbian Jessie headless image + presenting incorrect prompt + #10051: make: *** No rule to make target + 'raspberrpi3_defconfig'. Stop reported with Buildroot + v2017.05.1 + #10056: No .config file was produced in /buildroot folder + #10061: gcc5.4 buildroot toolchain for powerpc libsanitizer + failure + #10071: fakeroot: replace hard-coded paths in post install + #10076: Makefile:4113: recipe for target 'all-gcc' failed + #10091: gcc7.1 does not build with graphite support due to old + isl + #10121: webkit without the multimedia option causes build + error + +2017.05.2, Released July 27th, 2017 + + Important / security related fixes. + + Webkitgtk bumped to the 2.16.x series, fixing a large number + of security issues. + + host-aespipe compile fix for Debian/Gentoo/Ubuntu toolchains + which default to PIE mode. + + Updated/fixed packages: aespipe, apache, bind, binutils, + busybox, ccache, collectd, dieharder, efibootmgr, efivar, + expat, ffmpeg, gcc, heimdal, iproute2, irssi, libglib2, + libmemcached, libosip2, libtirpc, libxml-parser-perl, + linux-fusion, linux-zigbee, mpg123, orc, pcre, php, protobuf, + pulseaudio, python-setproctitle, qt5base, rpi-firmware, + samba4, syslinux, systemd, spice, tcpdump, tiff, uboot-tools, + webkitgtk, x265, xserver_xorg-server, xvisor + + Issues resolved (http://bugs.buildroot.org): + + #10061: gcc5.4 buildroot toolchain for powerpc libsanitizer... + +2017.05.1, Released July 4th, 2017 + + Important / security related fixes. + + Update support/scripts/scancpan to use METACPAN v1 API as v0 + has been shutdown. + + Update support/scripts/mkusers to handle setups where + /etc/shadow is a symlink. + + External toolchain: Don't create musl dynamic loader symlink + for static builds. + + Setlocalversion: Correct detection of mercurial revisions for + non-tagged versions. + + Defconfigs: at91sam9x5ek_mmc: workaround boot rom issue. + + Updated/fixed packages: apache, automake, bind, botan, c-ares, + dhcp, expat, fcgiwrap, gcc, gdb, gesftpserver, glibc, glmark2, + gnutls, gst1-plugins-bad, imagemagick, imx-uuc, intltool, + iperf, ipsec-tools, irssi, kmod, libcurl, libgcrypt, libmad, + libnl, lugaro, mosquitto, mpg123, ncurses, nodejs, ntp, + openssh, openvpn, pngquant, python-simplegeneric, qt5base, + qt5multimedia, rtl8821au, socat, spice, systemd, tor, trinity, + tslib, vlc, x264, xen, xlib_libxshmfenc, xserver_xorg-server + + Issues resolved (http://bugs.buildroot.org): + + #9976: License file for package 'rtl8821au' incorrect + +2017.05, Released May 31st, 2017 + + Minor fixes. + + External toolchain: musl dynamic linker symlink for mips-sf + corrected. + + Updated/fixed packages: agentpp, bash, exim, hans, madplay, + qpid-proton, rtl8188eu, snmppp, stm32flash, strongswan, sudo, + xen + + Issues resolved (http://bugs.buildroot.org): + + #9906: genimage: Disk full + +2017.05-rc3, Released May 30th, 2017 + + Fixes all over the tree. + + ARC toolchain bumped to 2017.03 + + Runtime testing improvements and cleanups. + + Updated/fixed packages: acpica, armadillo, audiofile, c-icap, + cppcms, dhcp, docker-engine, dropbear, elfutils, erlang, + fbgrab, ffmpeg, flashrom, ftop, gnutls, google-breakpad, + keepalived, kodi, libcdio, libepoxy, libev, libminiupnpc, + libqmi, libtasn1, libv4l, mariadb, mono, mosh, mosquitto, + mxml, ntp, opencv, openpowerlink, oracle-mysql, popt, + pulseview, python-enum34, rabbitmq-c, redis, samba4, stella, + xen + + Removed packages: firejail, ola + + Issues resolved (http://bugs.buildroot.org): + + #9871: fbgrab 1.3 won't build with BR2_REPRODUCIBLE set + #9876: aarch64 support with gcc 4.8 toolchain + #9896: host-gcc-initial error downloading because incorrect URL + +2017.05-rc2, Released May 17th, 2017 + + Fixes all over the tree. + + ARC toolchain bumped to 2017.03-rc2 + + Updated/fixed packages: bluez_utils, boost, clamav, daemon, + efibootmgr, efl, espeak, expedite, faketime, ffmpeg, fxload, + git, gpsd, kvm-unit-tests, libcdio, libv4l, lua, mke2img, + mpir, mpv, odroid-scripts, openblas, opencv3, openvpn, php, + postgresql, protobuf, qt5declarative, qwt, radvd, rpcbind, + rtmpdump, strongswan, sudo, ltp-testsuite, uclibc-ng-test, + vlc, x11vnc, xfsprogs + + Issues resolved (http://bugs.buildroot.org): + + #9796: source-check broken for Git downloads + #9866: BASE_DIR usage + +2017.05-rc1, Released May 8th, 2017 + + Fixes all over the tree and new features. + + Infrastructure: + + - Installed binaries are now checked for correct architecture + to catch natively built binaries or binaries built for other + architecture variants. + + - Luarocks infrastructure improvements to extraction handling, + support for upstream name != Buildroot package name. + + - 'make printvars' output format has changed to make it easier + to use in scripts. It now has options to quote the variables + and to show the expanded/unexpanded values. + + - Automatic ext2 rootfs size calculation has been removed. The + logic was not working working reliable in all setups as it + depends on the host filesystem behaviour, so instead now the + size has to be specified explicitly (defaults to 60MB). + + - The git download infrastructure now ensures that GNU format + tar files are created. + + - Fixed a variable clashing issue in the mkusers script with + internal bash variables. + + - Fakeroot now links against libacl to fix issues on + distributions using acls. + + - Correct permissions for /dev/pts/ptmx when systemd is used + with recent glibc versions. + + - br2-external: Improve error reporting. + + - A wrapper script for genimage has been added in + support/scripts/genimage.sh for easy use of genimage from + post-image scripts. + + - A script to check for common style issues in new packages + before submitting has been added in support/scripts/check-package + + - Defconfigs are now tested by gitlab-CI instead of Travis: + https://gitlab.com/buildroot.org/buildroot + + - Infrastructure for runtime testing has been added to + support/testing + + Toolchain: + + - External linaro toolchains updated to 2017.02, ARC toolchain + updated to 2017.03-rc1, NIOSII CodeSourcery to 2017.05 + + - A number of fixes and improvements to the external toolchain + handling, including C library detection, multilib and ld.so + handling + + - Glibc 2.25 and uClibc-ng 1.0.24 added, wordexp support enabled + for uClibc-ng + + - Binutils 2.28 added and default changed to 2.27 + + + Architectures: + + - Support for the C-SKY architecture has been added. + + + License handling: + + - The package license markings for legal info now uses the + SPDX short identifiers for the license string where possible. + + - License info has been improved / added for a number of packages. + + + Misc: + + - Cmake 3.7.x installed on the host is no longer ignored as a + workaround for the RPATH issues has been implemented. + + - Docker-engine can now be built statically on an otherwise + dynamic linked build for docker-in-docker setups. + + - U-Boot now supports out-of-tree device trees, similar to + Linux + + - Nodejs 0.10.x support (and with it, support for -source-check fixed for packages from git. + + External toolchain: musl dynamic linker symlink for mips-sf + corrected. + + Updated/fixed packages: armadillo, audiofile, bash, + bluez_utils, cppcms, dbus, dhcp, dropbear, efibootmgr, efl, + elfutils, faketime, fbgrab, flashrom, ftop, gdb, git, + google-breakpad, gpsd, hans, kvm-unit-tests, kyua, libev, + libmicrohttpd, libminiupnpc, libtasn1, libubox, ltp-testsuite, + lua, madplay, mariadb, mono, mosquitto, mxml, ntp, + nvidia-driver, openblas, openvpn, oracle-mysql, picocom, popt, + postgresql, pulseview, qt5base, qwt, rabbitmq-c, redis, + rpcbind, rtmpdump, samba4, strongswan, sudo, vlc + + Issues resolved (http://bugs.buildroot.org): + + #9796: source-check broken for Git downloads + #9871: fbgrab 1.3 won't build with BR2_REPRODUCIBLE set + +2017.02.2, Released May 1st, 2017 + + Important / security related fixes. + + Use HTTPS for the Codesourcery external toolchains as the HTTP + URLs no longer work. + + Updated/fixed packages: bind, busybox, dovecot, freetype, + ghostscript, glibc, granite, hiredis, icu, imagemagick, + gst-plugins-base, gst1-plugins-base, libcroco, libcurl, libnl, + libnspr, libnss, libsamplerate, libsndfile, libunwind, + minicom, mplayer, mpv, nodejs, python-django, python-pyyaml, + python-web2py, samba4, syslinux, systemd, tiff, trinity, + uboot, wireshark, xen + + Issues resolved (http://bugs.buildroot.org): + + #9791: Python searches for packages in the user site directory + +2017.02.1, Released April 4th, 2017 + + Important / security related fixes. + + Fix a variable clashing issue in the mkusers script with + internal bash variables. + + Improve external toolchain version detection. + + Correct permissions for /dev/pts/ptmx when systemd is used + with recent glibc versions. + + Fix python module name clash for graph-depends. + + Fakeroot now links against libacl to fix issues on + distributions using acls. + + Ensure that the git download infrastructure creates GNU format + tar files. + + br2-external: Improve error reporting. + + Updated/fixed packages: acl, apr, audiofile, busybox, cairo, + dbus-cpp, dbus-glib, dbus-triggerd, domoticz, elfutils, + fakeroot, filemq, fmc, gdb, git, gnutls, gst-ffmpeg, + gst1-plygins-bad, harfbuzz, htop, imagemagick, jasper, libcec, + libiio, libplatform, librsvg, libselinux, libsidplay2, libsoc, + libwebsockets, libxkbcommon, linux-firmware, logrotate, + lpt-testsuite, lttng-libust, mariadb, mbedtls, memcached, + mesa3d, mpd, mplayer, nbd, ncftp, ntp, openssh, opentyrian, + pcre, perl-gd, python, qt5base, rpi-userland, rpm, samba4, + skalibs, slang, sngrep, squashfs, syslog-ng, taglib, + tcpreplay, tor, upmpdcli, wget, wireshark, + xdriver_xf86-video-vmware, xlib_libXv, zmqpp + + Issues resolved (http://bugs.buildroot.org): + + #9456: mkusers script bash errors + +2017.02, Released February 28th, 2017 + + Minor fixes, mainly fixing autobuilder issues. + + Don't use cmake 3.7.x from the build host as it is also + affected by the RPATH handling issues, and instead build our + own if needed. + + Updated/fixed packages: assimp, classpath, genimage, mplayer, + mpv, openocd, python-libconfig, qt5base, qt5quickcontrols, + vlc, xterm + +2017.02-rc3, Released February 26th, 2017 + + Fixes all over the tree. + + Cmake reverted to version 3.6.3 to workaround regressions + related to RPATH handling. + + Updated/fixed packages: bctoolbox, berkeleydb, binutils, + btrfs-progs, classpath, directfb, glibc, gstreamer1, + gst1-plugins-{base,good,bad,ugly}, gst1-libav, + gst1-rtsp-server, gst1-validate, gst-omx, htop, libcurl, + libepoxy, libimxvpuapi, libpcap, libuv, ncurses, openssh, + oracle-mysql, poco, python, qt5base, qt5webkit, sslh, synergy, + trousers, uclibc-ng-test, util-linux, vlc, xfsprogs + + Issues resolved (http://bugs.buildroot.org): + + #9251: Shared C++ libraries for Microblaze results in Segmentation... + #9456: mkusers script bash errors + #9506: Collectd 5.7.0 fails to build with libcrypt + #9581: VagrantFile provisioning step fails due to issue with grub-pc + #9586: usbmount: usbmount slows down the system... to a state of... + #9616: CMake host packages cannot provide CONF_ENV + #9641: Need raptor package installed in staging + #9671: stunnel build error + +2017.02-rc2, Released February 20th, 2017 + + Fixes all over the tree. + + Support for SOURCE_DATE_EPOCH in the toolchain wrapper for + older gcc versions for reproducible builds has been + (temporarily) reverted because of licensing compatiblity + concerns. + + Defconfigs: SD card generation fix for the Udoo Neo board + + Infrastructure to handle .lz compressed tarballs added, and + affected packages updated to use it. + + Updated/fixed packages: bctoolbox, bind, canelloni, + cbootimage, ccache, classpath, cups, dbus, ddrescue, directfb, + ed, erlang, gcc, gdb, glmark2, gstreamer, gstreamer1, hiredis, + kmod, kmsxx, lcdapi, libasplib, libgpiod, libnss, libraw, + libv4l, mesa3d-headers, mosquitto, mpd, mpv, musl, ntfs-3g, + ocrad, openswan, postgresql, qt5base, qt5quickcontrols, redis, + riemann-c-client, samba4, sunxi-mali, tcping, trousers, + uclibc, util-linux, vim, wavpack, wget, wiringpi, xfsprogs, + xserver_xorg-server + + Issues resolved (http://bugs.buildroot.org): + + #8941: Valgrind fails to build with stack protection turned on + #9291: perl: SysV message queues not configured, even if available + #9651: libxcb-1.12 built Error + #9656: util-linux: schedutils doesn't build on target w/o enabl... + #9666: qt5quickcontrols install fails + +2017.02-rc1, Released February 11th, 2017 + + Fixes all over the tree and new features. + + Infrastructure: + + - numerous improvements to support reproducible builds + + - new waf-package package infrastructure to support packages + that use the Waf build system. 6 packages converted to + this infrastructure. + + - add option _PREFER_INSTALLER to the perl package + infrastructure + + Architecture: + + - add support for the OpenRISC CPU architecture + + - merge description of the ARM and ARM64 options, and add + support for selecting a specific ARM64 core + + Toolchain: + + - major rework of the external toolchain support. It is now + split into several packages, one per external toolchain, + and a common infrastructure. + + - important fix for musl to prevent a conflict between musl + and kernel headers (fixes the build of numerous packages + with musl) + + - uClibc-ng bumped to 1.0.22, and therefore enable uClibc + for ARM64, mips32r6 and mips64r6 + + - add gdb 7.12.1, and switch to gdb 7.11 as the default + + - Linaro toolchains updated to 2016.11, ARC toolchain + components updated to arc-2016.09, MIPS Codescape + toolchains bumped to 2016.05-06, CodeSourcery AMD64 and + NIOS2 toolchains bumped + + - remove Analog Devices toolchain for the Blackfin + architecture, remove pre-built musl toolchains from + musl.codu.org + + New defconfigs: Freescale i.MX23EVK, Qemu OpenRISC emulation, + Qemu NIOS2 emulation, Grinn chiliBoard, Freescale i.MX6Q + SabreSD, BeagleBoard X15, OrangePi One, ARC HS38 HAPS + + New packages: angular-websocket, aubio, bctoolbox, darkhttpd, + ddrescue, easydbus, fakedate, git-crypt, hiredis, ifenslave, + jsmn, libgpiod, libgsm, linux-syscall-support, mariadb, mimic, + nginx-dav-ext, nmon, opkg-utils, policycoreutils, + pru-software-support, python-arrow, python-attrs, + python-babel, python-bitstring, python-chardet, + python-constantly, python-flask-babel, python-gunicorn, + python-incremental, python-jsonschema, python-logbook, + python-markdown2, python-mbstrdecoder, python-mutagen, + python-pathpy, python-pudb, python-pyqrcode, + python-pytablereader, python-setuptools-scm, python-sh, + python-toml, python-vcversioner, python-whoosh, + raspberrypi-usbboot, riemann-c-client, rtl8723bs, skalibs, + sslh, sngrep, ti-cgt-pru, uclibc-ng-test, udpxy, uhttpd, + upower, ustream-ssl, waf, xlib_libXfont2 + + Removed packages: perl-db-file, snowball-hdmiservice, + snowball-init + + Tooling: addition of a test-pkg script to help contributors + build test their package. + + Issues resolved (http://bugs.buildroot.org): + + #8946: Valgrind fails to build with stack protection turned on + #9461: odroidc2 - toolchain Linaro AArch64 2016.11 compile error + #9466: VIM_REMOVE_DOCS removes rgb.txt + #9486: xorg-server 1.19 fails to compile for glibc with systemd init (x86_64) + #9501: eudev fails to build with older kernel headers + #9526: Embedded NPM fails to start with "no such file or directory" error + #9541: Platform drivers autoloading from info in device tree does not work + #9546: seems BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS do nothing + #9551: Coreutils fails to build target src/src_libsinglebin_pinky_a-pinky.o + #9566: [kmod] Compilation fails with uclibc + #9571: buildroot fails while building opencv for arm64 platform + #9576: External tree with BR 2016.11 does not work anymore + #9606: xorg-server cannot build for ARM target + +2016.11.3, Released March 9th, 2017 + + Important / security related fixes. + + Updated/fixed packages: bind, dbus, gnutls, imagemagick, + lcms2, libcurl, ntfs-3g, ntp, openssl, php, quagga, redis, + squid, stunnel, tcpdump, vim, wavpack, wireshark, xlib_libXpm + +2016.11.2, Released January 25th, 2017 + + Important / security related fixes. + + A fix for BR2_EXTERNAL trees referenced using relative paths, + which broke in 2016.11. + + Updated/fixed packages: bind, docker-engine, gd, gnutls, go, + imagemagick, irssi, libpng, libvncserver, musl, opus, php, + php-imagick, rabbitmq-server, runc, wireshark, + + Issues resolved (http://bugs.buildroot.org): + + #9576: External tree with BR 2016.11 does not work anymore + +2016.11.1, Released December 29th, 2016 + + Important / security related fixes. + + Updated/fixed packages: apache, cryptopp, docker-engine, + dovecot, exim, gdk-pixbuf, libcurl, libupnp, links, monit, + nodejs, openssh, php, python, python-bottle, samba4, squid, + uboot, vim, wireshark, xorg-server uboot + + Issues resolved (http://bugs.buildroot.org): + + #9466: VIM_REMOVE_DOCS removes rgb.txt + +2016.11, Released November 30th, 2016 + + Minor fixes. + + Updated/fixed packages: bzip2, gcc, jasper, sane-backends, + uboot, uclibc + + Issues resolved (http://bugs.buildroot.org): + + #9451: packages/postgresql/postgresql.mk contains wrong POST... + +2016.11-rc3, Released November 28th, 2016 + + Fixes all over the tree, including a number of security fixes. + + The move from fakeroot to pseudo unfortunately brought a + number of issues. The SELinux issue described in #9386 which + triggered the move to pseudo has been investigated further and + a workaround implemented and the pseudo changes reverted. + + Linux kernel: update default to 4.8.11. + + Defconfigs: Updates/fixes for imx28ek, mx6udoo, imx6ulpico, + olimex a20 olinuxino lime mali, roseapplepi, synopsis aarch64 + vdk, axs101, axs103 and hs38 smd vdk. + + Updated/fixed packages: autossh, chrony, dosfstools, + dtv-scan-tables, e2fsprogs, gcc, gdb, gnuchess, gnuradio, + gpsd, gst1-plugins-bad, gst1-plugins-good, imagemagick, + kvm-unit-tests, libfribi, libuv, mesa3d, mpfr, mplayer, mpv, + ntp, ola, olsr, openblas, openjpeg, openssh, postgresql, + ptpd2python3, qemu, qextserialport, qt5base, quagga, xqwt, + taskd, tiff, tremor, trousers, udisks, uclibc, wireshark, + xapp_xload, xenomai, xmlstarlet + + Issues resolved (http://bugs.buildroot.org): + + #9386: ubinize fails with or without custom config + #9431: A misspelling + #9446: make raspberrypi3_defconfig compilation failure + +2016.11-rc2, Released November 13th, 2016 + + Fixes all over the tree. + + Architecture: add support for MIPS XBurst cores; remove MIPS + support for M5100 cores. + + Updated/fixed packages: mesa3d, lttng-babeltrace, tinyalsa, pseudo, + czmq, libxml2, makedevs, binutils, kvm-unit-tests, libnss, privoxy, + qemu, ser2net, net-tools, ffmpeg, assimp, libmpeg2, ccache, mpv, + libxslt, python, python3, php, valgrind, guile, domoticz, efl, + jasper, kvmtool, go, wget, sane-backends, weston, tinymembench, + strace, openjpeg, lcms2, quota. + + Linux kernel: update default to 4.8.7. + + CMake support: fix cmake wrapper to properly pass NDEBUG flag. + + Filesystems: use a wrapper to pseudo, to better mimick the behaviour + of fakeroot; makedevs no longer breaks of the destination already + exists and is of the correct type/major/minor. + + Defconfigs: a few legacy and broken defconfigs have been removed + because they now fail to build: kb9202_defconfig, mini2440_defconfig, + freescale_p2020ds, qmx6, calao*, atmel_sama5d4ek. Other defconfigs + have been updated: nanopi-neo, olimex_a20_olinuxino_lime_mali, + armadeus_apf51, armadeus_apf28, freescale_imx31_3stack, ci20, + olimex_a20_olinuxino_lime2, atmel_at91sam9260eknf, + atmel_at91sam9rlek, atmel_at91sam9g20dfc, atmel_at91sam9g45m10ek, + atmel_sama5d3xek. + +2016.11-rc1, Released November 3rd, 2016 + + Fixes all over the tree and new features. + + It is now possible to specify multiple BR2_EXTERNAL + directories. The required files in a BR2_EXTERNAL directory + have changed to accomodate this feature. Refer to the + documentation for details of how to update them. External + trees now have a name and a description. Also, it is possible + to override a defconfig in the external tree. + + The default skeleton now uses UID 65534 for the "nobody" + user instead of UID 99, like most distros do. See + https://lwn.net/Articles/695478/ for a complete discussion. + Programs and configuration files that explicitly refer to UID + 99 will have to be updated. + + When the build environment already has a suitable cmake version + (3.1 or later), that one will be used instead of building + host-cmake. This can speed up the build significantly. + + The ExtUtils::MakeMaker perl module is now required in the + build environment. + + An additional check is done during the build that files are + not installed in the output directory within the output + directory. This happens e.g. when the target directory is + contained both in --prefix and in DESTDIR. The build will + terminate with an error message that specifies which package + and which file caused the failure. + + The concept of "deprecated packages" and the BR2_DEPRECATED + option have been removed. Instead, packages are removed + immediately. Packages are only removed when they don't work + for some reason. If you still need a removed package and + you have a solution for the problem(s) that caused the + removal, please contribute it. + + Architecture: support for sh64 removed, improved support for + MIPS core selection. + + Toolchain: support for musl powerpc64le, mips64 and mipsr6 + toolchains, ARC toolchain components updates, gcc 6.x series + bumped to 6.2.0, default binutils version switched to 2.26, + default gcc version switched to gcc 5.x, Linaro toolchains + updated, uclibc-ng bumped to 1.0.19. GCC is now always built + with TLS support. Checking of unsafe compiler options (that + point to host directories) has been extended with -isystem, + -idirafter and -iquote. + + Package infrastructure: new variable $(PKG)_DL_OPTS, addition + of -show-rdepends to list reverse dependencies, and + -graph-rdepends to graph reverse dependencies. Linux tools + are now in a separate linux-tools package instead of in the + kernel build. Fakeroot has been replaced by pseudo. + + CMake support: the toolchainfile.cmake file now provides a + definition of the CMAKE_BUILD_TYPE variable. The + toolchainfile.cmake also no longer forces the compiler/linker + flags defined by Buildroot. + + New defconfigs: WaRP7, Solidrun's MX6 Cubox/Hummingboard, + TS-4900, Grinn's liteBoard, Udoo MX6Q/DL, Qemu ARM noMMU, + BeagleBone Qt5 demo, Digilent Zybo, FriendlyARM Nanopi NEO. + + New packages: arm-trusted-firmware, amd-catalyst, atop, aufs, + aufs-util, fwts, gst1-rtsp-server, libglob, libite, mfgtools, + mksh, motion, paho-mqtt-c, php-amqp, pseudo, python-couchdb, + python-crcmod, python-cssutils, python-docutils, + python-futures, python-mwclient, python-mwscrape, + python-mwscrape2slob, python-pyelftools, python-pyicu, + python-pylru, python-pyqt5, python-requests-toolbelt, + python-simpleaudio, python-slob, rabbitmq-server, shapelib, + vdr, vdr-plugin-vnsiserver, vexpress-firmware, xvisor, iio and + gpio linux tools. + + Removed packages: binutils 2.24, fakeroot, gcc 4.7, ipkg, + kodi-addon-xvdr, libgail, sstrip, torsmo, webkit, webkitgtk24, + wvdial, wvstreams. + + Documentation: the list of packages that was present in the + Buildroot manual has been removed. + + Legal info: the "licenses.txt" file that concatenates all + license texts is no longer generated - it was not considered + useful. The manifest.csv contains an empty cell instead of + "not saved" when no license file is available. + + Other: addition of a DEVELOPERS file listing developers taking + care of packages or architectures. + + Issues resolved (http://bugs.buildroot.org): + + #7802: host-python build hangs compiling getbuildinfo.o + #8206: mplayer uses host xorg development files + #8516: mkcubiecard.sh uses outdated sfdisk switch -D + #8536: Building sudo with PAM results in unusable sudo + #8646: check-host-rpath script returns false positives when rpath + contains symlink + #8696: xdriver_xf86-input-mouse install header files in target + directory + #8811: rp-pppoe - generated scripts commands use HOST pathnames, + not necessarily TARGET + #8846: Orphaned/missing toolchain borks eclipse plugin + #8856: python tornado runtime wasn't met on buildroot 2016.02 + #8901: gcc failes to build if fortran is enabled + #8916: LDFLAGS pass to openssh + #8941: "ls" of an NFSv4 share only works when pumped through strace + #8946: Valgrind fails to build with stack protection turned on + #9021: Kodi - Broken: Illegal instruction (core dumped) + #9096: rootfs.ubi not created + #9111: glibc 2.23: libmvec.so not copied + #9176: minnowboard : USB not mounted + #9196: raspberry pi 3 default build seem broken + #9201: Permission denied make: *** [core-dependencies] Error 126 in + Buildroot-2015.08.1 + #9216: log4cpp package build fails to build within install + #9221: Kodi needs "Python .py and .pyc support" otherwise it crashes when + pressing buttons. + #9229: Firefly boot fails with: "failed to find part:boot" + #9256: [Config file] New device: Odroid-U2/U3 + #9296: Buildroot Fails on applying patches + #9301: U-boot fails to build with default zynq_zed_defconfig configuration + #9316: U-boot fails to build if libssl-dev is not installed + #9321: Vanilla libcrypt++ v5.6.3 doesn't allow to work Nvidia Tegra's + flash utility (tegrarcm) + #9326: Odroid-C2 build results in non-bootable image + #9336: Improve iconv support for external toolchain based builds + #9356: gdb package + #9366: no link rootfs.ext4 -> rootfs.ext2 + #9371: openssl: download failes with "Only allow downloads from primary + download site" + local server + #9381: check-host-rpath issues + #9386: ubinize fails with or without custom config + +2016.08, Released September 1st, 2016 + + Minor fixes. + + Toolchain: ARC tools updated to arc-2016.09-eng010. + + Updated/fixed packages: libshout, luajit, mpd, mplayer + + Issues resolved (http://bugs.buildroot.org): + + #7520: CodeSourcery toolchain ARM: C++11 std::exception_ptr.. + #8341: Getting EGL Error: Could not create the egl surface:.. + #9121: gst1-imx for i.MX6 compile failed, cannot find PXP, .. + +2016.08-rc3, Released August 29th, 2016 + + Fixes all over the tree. + + Toolchain: C++ support for the internal blackfin toolchain + re-enabled. + + Architecture: Default to bf532 CPU variant for blackfin, + Fix flat one memory region support for m68k and disable flat + separate data support because of compatibility issues. + + Defconfigs: Minnowboard and Raspberrypi: Fix errors with + post-build scripts when systemd is used. + Zynq microzed/zc706/zed: Fix u-booot configuration. + + netbsd-queue package extended and renamed to + musl-compat-headers. With this, a number of musl compatibility + patches are no longer needed. + + Updated/fixed packages: aircrack-ng, android-tools, babeld, + bcusdk, binutils, boa, busybox, connman, cpupower, + docker-engine, domoticz, elf2flt, ffmpeg, fwup, gcc, + glib-networking, gnupg, hplip, igd2-for-linux, imagemagick, + imx-uuc, iputils, jack2, kismet, kmsxx, libaio, libamcodec, + libconfuse, libffi, libfreeimage, libgcrypt, libgpg-error, + libiio, libraw, libsepol, libserialport, libxmlrpc, linknx, + linux-pam, lirc-tools, lldpd, logrotate, lshw, musl, ncurses, + neon, nettle, norm, ntfs-3g, openblas, openmpi, openswan, + pinentry, pixman, protobuf, python-meld3, qlibc, qt, qt5base, + quagga, rpcbind, rt-tests, runc, sane-backends, sconeserver, + squeezelite, stella, tftpd, tinycbor, tinydtls, trace-cmd, + trousers, tstools, uboot-tools, uclibc, ulogd, ustr, vlc, + webkitgtk, wireshark, xdriver_xf86-video-intel + + Issues resolved (http://bugs.buildroot.org): + + #9101: Error on support/download/git with system git older than 1.8.4 + #9181: Compiling linux kernel fails if BR2_LINUX_KERNEL_TOOL_CPU.. + +2016.08-rc2, Released August 17th, 2016 + + Fixes all over the tree. + + Toolchain: disable broken C++ support for internal blackfin + toolchains, ARC toolchain bumped to arc-2016.09-eng008 (GCC 6) + to fix various issues. + + System: Zoneinfo is available for the musl C library as well. + + Updated/fixed packages: am33x-cm3, axel, barebox, bdwgc, + blktrace, cairo, dante, enlightenment, fbterm, ffmpeg, flex, + fontconfig, gcc, gmp, gnuplot, gnuradio, gst1-imx, hidapi, + inotify_tools, iproute2, kmsxx, lftp, libaio, libcofi, + libical, libpjsip, libsidplay2, libunwindow, libxml2, + linux-zigbee, lttng-libust, mpv, mtd, ncdu, netplug, ntp, + openblas, openipmi, owfs, php, poco, procps, qt, quota, + sg3_utils, spidev_test, systemd-bootchart, thrift, + uboot-tools, uclibc, webrtc-audio-processing, wayland, weston, + xdriver_xf86-video-savage, xserver_xorg-server, xen + + Issues resolved (http://bugs.buildroot.org): + + #9136: make graph-size fails with "ValueError: too many values to.. + #9151: qt: fix build with ALSA >= 1.1.x + #9156: qt: Fix missing runtime Qt3Support dependency + #9161: modsetting patch not applied to xserver 1.18.4 + #9166: Missing overlays directory in VFAT image for raspberry pi 3 + +2016.08-rc1, Released August 6th, 2016 + + Fixes all over the tree and new features. + + Toolchain: Fortran support added. eglibc support removed, musl + support no longer experimental. Blackfin and Microblaze + support for internal uClibc-ng toolchain, m68k/coldfire + improvements. The check for unsafe (build host) directories + access (/usr/include and /usr/lib) is now enabled by default. + Unused locales are now purged by default to save space (and + the default list of locales shrunk). The option to control + this has now moved from the toolchain menu to system + configuration. + + Legal info improvements: sources are now hardlinked instead of + copied if possible to save space. Patches and extra downloads + are also saved. + + An experimental configuration knob (BR2_REPRODUCIBLE) has been + added to make the builds more reproducible (E.G. less + differences in the binary output between builds of the same + configuration). This is still work in progress. + + An option to execute a custom script inside the fakeroot + environment used to the generate the filesystem (E.G. to tweak + permissions or similar) has been added. + + Git support now supports git submodules if + _GIT_SUBMODULES is enabled. + + Hash files for integritry validation have been added for all + packages. + + Scanpypi utility to help creating packages from the Python + package index (pypi) has been added. + + The makedevs utility now has support for adding file + capabilities using extended attributes. + + New defconfigs: Arcturus uCP1020, Atmel sama5d{2,3,4} xplained + development configs, Blackfin GDB simulator, Linksprite + pcDuino, Minnow Board Max graphical demo, NXP i.MX25 PDK, + i.MX51 EVK, i.MX6UL Pico, i.MX7 sabresd, QEMU MIPS32r6{,el} and + MIPS64r6{,el} malta, Roseapple Pi, Samsung Snow chromebook, + Toradex Apalis i.MX6 COM, TS-4800, x86-64 PC BIOS and EFI + demos. A number of defconfigs have been updated and extended + to generate SD card images. Synopsys HS38 VDK defconfig removed. + + New packages: 4th, acpica, acpitool, alljoyn, alljoyn-base, + alljoyn-tcl, alljoyn-tcl-base, argparse, babeld, batman-adv, + circus, dante, docker-containerd, docker-engine, domoticz, + efibootmgr, efivar, ficl, fwup, gsettings-desktop-schemas, + gtksourceview, gupnp-dlna, gupnp-tools, igd2-for-linux, + jemalloc, kmsxx, lapack, lft, libaacs, libamcodec, libbdplus, + libcoap, libdvdcss, libebur128, libfastjson, libminiupnpc, + libnatpmp, libpqxx, libuio, libvdpau, log4cpp, minissdpd, + mxsldr, nginx-nasxi, nginx-upload, ninja, nodm, odroid-mali, + odroid-scripts, omxplayer, openblas, openmpi, openzwave, + p7zip, pdbg, python-argh, python-dataproperty, + python-dateutil, python-dialog3, python-dicttoxml, + python-dominate, python-engineio, python-flask-jsonrpc, + python-flask-login, python-humanize, python-pathtools, + python-pathvalidate, python-pillow, python-prompt-toolkit, + python-pytablewriter, python-pytz, python-scapy3k, + python-sdnotify, python-socketio, python-tomako, + python-ubjson, python-u-msgpack, python-watchdog, + python-wcwidth, python-xlrd, python-xlsxwriter, + python-xlutils, python-xlwt, rs485conf, runc, sdl2_gfx, + sdl2_image, sdl2_ttf, shellinabox, sphinxbase, stella, + supertuxkart, systemd-bootchart, tekui, terminology, tinycbor, + tinydtls, ti-sgx-demos, ti-sgx-km, ti-sgx-um, tunctl, wavemon, + wiringpi, xen + + Deprecated packages: ipkg, sstrip + + Removed packages: sunxi-mali-prop + + Issues resolved (http://bugs.buildroot.org): + + #8931: segment fault when compile argp-help.c using aarch64-bu... + #8966: eglfs error. buildroot don't compile the library libeglfs.so + #8971: build for beaglebone fails + #8986: qt5imageformats fails to build on AArch64 + #8991: grub2 fails to compile + #9001: Nodejs option not available + #9006: gcc with c++ support v4 and v5 fail to compile on fedora 24 + #9016: arceb-buildroot-linux-uclibc ld uses incorrect default format + #9066: 8139TOO - faulty behaviour + #9086: Syntax Error (missing ")" in boot/uboot/uboot.mk on line 203) + #9091: U-Boot fails to boot with large ramdisk + +2016.05, Released May 31st, 2016 + + Minor fixes. + + External toolchain: Fix for symlink handling when copying + links to target. + + Updated/fixed packages: gcc, grantlee, gst-ffmpeg, + ipsec-tools, iptraf-ng, libcurl, libdrm, libsigsegv, ltris, + lttng-babeltrace, mbedtls, mesa3d, moarvm, mplayer, mtools, + net-tools, openpowerlink, pulseview, rpm, tinyalsa, + xdriver_xf86-video-fbturbo, xserver_xorg-server + +2016.05-rc3, Released May 26th, 2016 + + Fixes all over the tree. + + Tweaks for SSP handling for external toolchains. + + Updated/fixed packages: aircrack-ng, bluez5_utils, connman, + cups, erlang-p1-stringprep, expat, ffmpeg, flann, flannel, go, + gst1-libav, hidapi, hplip, iptraf-ng, jamvm, kodi, + kodi-screensaver-matrixtrails, libcurl, libepoxy, libgpgme, + libsemanage, libxslt, liquid-dsp, ltris, lxc, mesa3d, midori, + mpg123, mtr, openpgm, openpowerlink, oprofile, php, + postgresql, putty, python-service-identity, python-treq, + qlibc, qt5serialbus, ruby, stress-ng, strongswan, time, tinc, + ustr, valgrind, webkitgtk, libxml2, xorriso, + xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #8936: Aircrack-ng - Alot of missing dependencies + +2016.05-rc2, Released May 17th, 2016 + + Fixes all over the tree. + + Rootfs overlay handling now refuses to overwrite + /{usr,bin,sbin,lib} symlinks from BR2_ROOTFS_MERGED_USR option + even if these directories are present in the overlay. + + External toolchain: Unbreak user provided libraries deployment + (BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS) handling after refactoring. + + QEMU coldfire: Fix for signal handling kernel issue, enable + networking support. + + Updated/fixed packages: android-tools, assimp, boost, gcc, + glibc, glmark2, gmrender-resurrect, go, go-bootstrap, iputils, + jack2, kodi-screensaver-asterwave, kodi-screensaver-rsxs, + kodi-visualisation-shadertoy, libarchive, libinput, libpjsip, + mali-t76x, mtr, nginx, opencv, openvpn, python-coherence, + qt5multimeda, quagga, samba4, sg3-utils, stress-ng, turbolua + +2016.05-rc1, Released May 10th, 2016 + + Fixes all over the tree and new features. + + Architectures: new ARM variants: Cortex A17 and M4, improved + nonmmu (cortex-M) support, m68k has been re-enabled with + support for ColdFire. For x86, support for the i386 variant + has been dropped. + + Toolchain: Add GCC 6 support, remove GCC 4.5, mark GCC 4.7 as + deprecated. Go programming language support, Add Binutils 2.26 + support. Old Sourcery PowerPC external toolchains removed, + Sourcery MIPS 2016.06-8, AMD64 2015.11-139, NiosII 2015.11-130 + added, Linaro ARM/ARMeb/Aarch64 toolchains updated. + + New defconfigs: Firefly RK3288, Boundary Devices i.MX7 Nitrogen7, + STM32F429 and STM32F469 Discovery boards, Hardkernel ODROID-C2, + Raspberry Pi Zero and Raspberry Pi 3. Some Qemu defconfigs were + added for m68k, eXtensa-nommu and ColdFire. + + Linux: use zImage by default on ARM, subversion repository + support (for u-boot as well). + + New packages: aer-inject, android-tools, cannelloni, + cbootimage, cgroupfs-mount, connman-gtk, crudini, dt, + gmrender-resurrect, flannel, font-awesome, freeswitch, go, + go-bootstrap, gr-osmosdr, granite, i7z, imx-uuc, + kodi-adsp-basic, kodi-adsp-freesurround, + kodi-audiodecoder-opus, kodi-pvr-hdhomerun, + kodi-screensaver-asterwave, kodi-screensaver-cpblobs, + kodi-screensaver-matrixtrails, kodi-screensaver-planestate, + kodi-screensaver-rsxs, kodi-visualisation-fishbmc, + kodi-visualisation-fountain, kodi-visualisation-goom, libgee, + libimxvpuapi, libpjsip, libtomcrypt, libtommath, libusbgx, + lksctp-tools, mali-t76x, mkpimage, mpv, msr-tools, nload, + norm, nvme, owfs, pound, privoxy, procrank_linux, putty, + python-autobahn, python-characteristic, python-crossbar, + python-cryptography, python-iniparse, python-iowait, + python-lmdb, python-pexpect, python-ptyprocess, + python-pyasn-modules, python-pygments, python-pymysql, + python-pynacl, python-pyopenssl, python-pysocks, + python-pytrie, python-rpi-gpio, python-service-identity, + python-setproctitle, python-shutilwhich, python-treq, + python-txaio, python-ujson, python-wsaccel, qt5canvas3d, + qt5location, qt5quickcontrols2, qt5serialbus, qt5tools, + raptor, scrub, taskd, tegrarcm, turbolua, valijson, + wayland-protocols, webkitgtk, wilc1000-firmware, wpan-tools, + xdriver_xf86-video-amdgpu + + Removed packages: foomatic-filters, python-m2crypto, + qt5quick1, qt5webkit-examples, samba, xdriver_xf86-input-void + + Issues resolved (http://bugs.buildroot.org): + + #6830: Qt5: no fonts are installed + #7562: musl buildroot-toolchain and BR2_MIPS_SOFT_FLOAT break + #7580: Invalid filesystem in Pandaboard defconfig + #8346: wf111 package removes all kernel module dependencies + #8436: xserver_xorg-server Segmentation fault + #8736: IPV6 forced on in busybox + #8746: At startup system stops with 'cannot set terminal proces.. + #8751: make fail [fio does not build on sh] + #8766: Compiling host-gcc-final-4.9.3 broken on i386 + #8771: make savedefconfig modifies sources + #8781: Unable to build uboot for imx28evk + #8786: gdb fails to build with xz and expat support at the same + #8801: Compilation of Buildroot 2016.2 for Raspberry Pi with... + #8806: Buildroot 2016.2 for Raspberry Pi requires that ext4... + #8836: Can't select Vim in menuconfig + #8851: Make sure fio can compile with libaio support if it... + #8861: With buildroot 2016.02 trying to build for corei7-avx + fails while trying to build host-binutils + #8866: Making an USB flash bootable with extlinux build with + buildroot does not work + +2016.02, Released March 1st, 2016 + + Minor fixes, mostly security related. + + Circular dependency issue with same-as-kernel linux-headers + option fixed. + + Updated/fixed packages: bluez5_utils, heirloom-mailx, + imx-gpu-viv, kodi-pvr-argustv, kodi-pvr-mediaportal-tvserver, + kodi-pvr-nextpvr, libfcgi, openssl, pifmrds, powerpc-utils, + python-m2crypto, slang, sox, squid, tn5250, xerces, zsh + +2016.02-rc3, Released February 27th, 2016 + + Fixes all over the tree. + + Defconfigs: Ensure EABIhf is correctly enabled for ARM cores + where VFP is optional (but present on the specific hw). Fix + ARM variant selection for freescale_imx31_3stack_defconfig. + + Ensure tarballs of downloaded git trees do not contain a + timestamp. + + Clarify license of patches in COPYING. + + Updated/fixed package: avahi, binutils, cairo, can-festival, + chrony, cifs-utils, dnsmasq, dvdauthor, e2fsprogs, efl, + erlang-rebar, eudev, fbterm, gawk, gnupg2, gnuradio, gpm, + gst1-plugins-good, hostapd, imagemagick, iproute2, iputils, + jack2, kexec, kismet, lftp, libarchive, libeXosip2, libfm, + libglib2, libsoil, libssh, libssh2, libuci, links, lshw, lxc, + mediastreamer, mono, mraa, mutt, nfs-utils, numactl, ofono, + omniorb, openipmi, openobex, patch, pax-utils, perf, + pulseaudio, pure-ftp, qhull, qt, quagga, quota, sdl_sound, + shairport-sync, spice, sysklogd, syslog-ng, trace-cmd, + trousers, tvheadend, util-linux, vim, webkitgtk24, wireshark, + wpa_supplicant, xerces, zsh + + Issues resolved (http://bugs.uclibc.org): + + #8651: libMonoPosixHelper.so wrong link reference in buildroot.. + +2016.02-rc2, Released February 18th, 2016 + + Fixes all over the tree. + + Toolchain: PR19405 backport to binutils 2.25.1 to fix NIOS ld + crash, backport of Xtensa .init/.fini literals handling. + glibc security patches for CVE-2014-8121, CVE-2015-1781 + and CVE-2015-7547. + + Defconfigs for Acmesystems Arietta g25 added. + + Updated/fixed packages: binutils, boost, chrony, dovecot, + e2fsprogs, fio, gdb, glibc, graphite2, icu, kbd, libbsd, + libcue, libgcrypt, libraw, links, mc, mosquitto, nodejs, + postgresql, pptp-linux, pulseaudio, samba4, spice, squid, + sysklogd, systemd, tiff, uclibc, ulogd, util-linux, valgrind. + + Issues resolved (http://bugs.uclibc.org): + + #8576: Building embedded Linux for Atmel SAMA5D4_Xplained... + #8606: Problem compiling on Arch Linux + #8681: kbd 2.0.3 does not build on rpi + +2016.02-rc1, Released February 10th, 2016 + + Fixes all over the tree and new features. + + Toolchain: Support for GCC 5.3.x. ARC toolchain updated to + arc-2015.12. Support for legacy uClibc dropped, default to + uClibc-ng instead. Added sys/queue.h implementation for MUSL + for compatibility. Updated versions of Code sourcery and + Linaro toolchains. MIPS Codescape toolchains added. Version + selection for preconfigured external toolchains removed. + + New Defconfigs: ARM Juno r0/r1 development boards, Freescale + i.MX6UL Evaluation Kit, Intel Galileo Gen 2, Orange Pi PC. + A number of defconfigs have been extended to generate complete + system images using genimage. + + Linux: Automatically patch timeconst.pl for <3.9 kernels, + which isn't compatible with modern perl versions, breaking the + build when building on recent (Fedora 23, Debian + Testing/Unstable, ..) distributions. + + Makedevs utility now accepts textual (non-numerical) user and + group names. + + Vagrant file to easily setup a working development environment + in a VM has been added. + + Size-stats-compare script to compare rootfs sizes between + builds has been added. + + Infozip package renamed to zip. EFL packages restructured. + + Updated/fixed packages: aespipe, aiccu, alsa-lib, alsa-utils, + angularjs, apache, apr, argp-standalone, armadillo, arptables, + at, atk, audiofile, aumix, autoconf-archive, avahi, bash, bc, + bcache-tools, bdwgc, beecrypt, bind, binutils, bluez5_utils, + bluez_utils, bonnie, boost, busybox, cairo, cdrkit, chrony, + clamav, cmake, collectd, connman, coreutils, cppcms, crda, + cryptodev-linux, cryptsetup, cups, cwiid, cxxtest, dbus, + dbus-cpp, dbus-glib, debianutils, dhcp, dhcpcd, dhrystone, + dillo, directfb, directfb-examples, dmraid, dnsmasq, doom-wad, + dovecot, dovecot-pigeonhole, dropbear, dtv-scan-tables, + dvb-apps, dvbsnoop, ecryptfs-utils, eigen, ejabberd, + elementary, elfutils, enlightenment, erlang, espeak, eudev, + eventlog, exfat, exfat-utils, exiv2, expedite, faifa, + fakeroot, fastd, fbgrab, fetchmail, ffmpeg, findutils, fio, + firmware-imx, flann, flashrom, flite, flot, fmlib, freerdp, + freescale-imx, freetype, gauche, gawk, gcc, gcc-final, gcr, + gdb, gdk-pixbuf, geoip, gesftpserver, gettext, giflib, git, + glibc, glibmm, glog, gmp, gnupg, gnupg2, gnutls, gob2, gpsd, + gptfdisk, grep, gst1-libav, gst1-plugins-{bad,base,good,ugly}, + gst-ffmpeg, gst-plugins-{bad,base,good,ugly}, gstreamer, + gstreamer1, guile, gvfs, gzip, harfbuzz, haserl, hiawatha, + hostapd, hplip, icu, ifupdown, imagemagick, imx-gpu-viv, + imx-kobs, imx-lib, input-tools, intel-microcode, iperf3, + ipmitool, iproute2, iprutils, ipsec-tools, ipset, iptables, + iputils, irda-utils, irssi, iucode-tool, jack2, janus-gateway, + jpeg-turbo, jquery-datetimepicker, jquery-keyboard, + jquery-sparkline, jquery-ui, jquery-ui-themes, + jquery-validation, json-c, kbd, kernel-module-imx-gpu-viv, + keyutils, kmod, knock, kodi, lcdproc, lcms2, leafnode2, + leafpad, libass, libatomic_ops, libbroadvoice, libbsd, + libcap-ng, libcdaudio, libcue, libcurl, libdrm, libecore, + libedbus, libedit, libedje, libeet, libefreet, libeina, + libeio, libelementary, libembryo, libepoxy, libethumb, libev, + libevas, libevas-generic-loaders, libevdev, libevent, libffi, + libfm, libfribidi, libfslcodec, libfslparser, libfslvpuwrap, + libftdi, libfuse, libgail, libglew, libglib2, libgtk2, + libgtk3, libgudev, libhttpparser, libidn, libinput, libiscsi, + libjpeg, liblinear, libmbim, libmicrohttpd, libndp, libnspr, + libnss, liboauth, liboping, libpciaccess, libplist, libpng, + libraw, libraw1394, librsvg, libseccomp, libsecret, + libserialport, libsigc, libsigrok, libsigrokdecode, + libsndfile, libsoc, libsodium, libsoup, libssh2, libsvg, + libsvg-cairo, libtasn1, libtirpc, libtorrent, libungif, + libunwind, libupnpp, liburcu, libuv, libv4l, libva, + libva-intel-driver, libvips, libvncserver, libxml2, libxmlpp, + lightning, lighttpd, linknx, linux-firmware, linux-fusion, + linux-headers, liquid-dsp, lirc-tools, live555, lm-sensors, + lockdev, lshw, ltp-testsuite, ltrace, lttng-babeltrace, + lttng-libust, lttng-modules, lttng-tools, lua, luabitop, + luarocks, luv, lvm2, lxc, makedevs, mc, memcached, memtest86, + mesa3d, mesa3d-demos, mesa3d-headers, micropython, + micropython-lib, minicom, minidlna, mjpg-streamer, mke2img, + moarvm, modem-manager, mongoose, mongrel2, monkey, mono, + monolite, mosh, mosquitto, mpd, mplayer, msgpack, mtdev2tuio, + musepack, musl, mysql, nano, nasm, nbd, neard, netatalk, + netsnmp, nettle, net-tools, network-manager, nfs-utils, nginx, + nmap, nodejs, ntfs-3g, ntp, numactl, nut, nvidia-driver, + odhcp6c, ofono, ola, olsr, omniorb, opencv, opencv3, openipmi, + openldap, openntpd, openobex, openocd, openpgm, + open-plc-utils, openpowerlink, openssh, openssl, openswan, + openvpn, opkg, oprofile, opus, opusfile, p11-kit, package, + pango, pax-utils, pciutils, pcmanfm, perl, perl-db-file, + perl-io-socket-ssl, perl-libwww-perl, perl-net-dns, perl-uri, + perl-xml-libxml, php, php-ssh2, picocom, pinentry, pixman, + polarssl, popt, portaudio, pppd, procps-ng, proftpd, protobuf, + psmisc, ptpd2, pulseaudio, pulseview, pv, python, python3, + python-alsaaudio, python-can, python-cffi, python-cherrypy, + python-httplib2, python-jinja2, python-lxml, python-m2crypto, + python-mako, python-msgpack, python-psutil, python-pyasn, + python-pycparser, python-pydal, python-pyftpdlib, + python-pyroute2, python-pyxml, python-pyzmq, python-requests, + python-serial, python-setuptools, python-six, python-spidev, + python-tornado, python-twisted, python-web2py, python-webpy, + python-werkzeug, python-zope-interface, qemu, qhull, qpdf, qt, + qt5, qt5base, qt5connectivity, qt5declarative, qt5enginio, + qt5graphicaleffects, qt5imageformats, qt5multimedia, + qt5quick1, qt5quickcontrols, qt5script, qt5sensors, + qt5serialport, qt5svg, qt5webchannel, qt5webkit, + qt5webkit-examples, qt5websockets, qt5x11extras, + qt5xmlpatterns, qt-webkit-kiosk, racehound, radvd, read-edid, + readline, redis, rpcbind, rpi-firmware, rpi-userland, rrdtool, + rsync, rsyslog, rtai, rtorrent, rt-tests, rubix, ruby, samba4, + sconeserver, setools, shairport-sync, sigrok-cli, skeleton, + smack, snowball-init, socat, sp-oops-extract, sqlite, + squashfs, squeezelite, squid, sredird, sshfs, + start-stop-daemon, strace, strongswan, stunnel, subversion, + sunxi-tools, swig, sysdig, syslog-ng, sysstat, systemd, + sysvinit, taglib, tcl, tcpreplay, thrift, ti-gfx, tinyalsa, + tor, torsmo, trace-cmd, transmission, tremor, triggerhappy, + trinity, tvheadend, tzdata, uboot-tools, uclibc, udisks, + udpcast, unionfs, upmpdcli, usb_modeswitch, + usb_modeswitch_data, ustr, util-linux, vala, valgrind, + vboot-utils, vde2, vlc, vnstat, webkit, webkitgtk24, weston, + wget, whetstone, whois, wine, wipe, wireless-regdb, wireshark, + wpa_supplicant, w_scan, x11r7, xapp_xbacklight, xapp_xcompmgr, + xapp_xinput, xapp_xkbcomp, xdriver_xf86-input-evdev, + xdriver_xf86-input-libinput, xdriver_xf86-input-synaptics, + xdriver_xf86-video-ati, xdriver_xf86-video-fbturbo, + xdriver_xf86-video-imx-viv, xdriver_xf86-video-intel, + xfont_encodings, xfont_font-adobe-100dpi, + xfont_font-adobe-75dpi, xfont_font-adobe-utopia-100dpi, + xfont_font-adobe-utopia-75dpi, xfont_font-adobe-utopia-type1, + xfont_font-alias, xfont_font-arabic-misc, + xfont_font-bh-100dpi, xfont_font-bh-75dpi, + xfont_font-bh-lucidatypewriter-100dpi, + xfont_font-bh-lucidatypewriter-75dpi, xfont_font-bh-ttf, + xfont_font-bh-type1, xfont_font-bitstream-100dpi, + xfont_font-bitstream-75dpi, xfont_font-bitstream-type1, + xfont_font-cronyx-cyrillic, xfont_font-cursor-misc, + xfont_font-daewoo-misc, xfont_font-dec-misc, + xfont_font-ibm-type1, xfont_font-isas-misc, + xfont_font-jis-misc, xfont_font-micro-misc, + xfont_font-misc-cyrillic, xfont_font-misc-ethiopic, + xfont_font-misc-meltho, xfont_font-misc-misc, + xfont_font-mutt-misc, xfont_font-schumacher-misc, + xfont_font-screen-cyrillic, xfont_font-sony-misc, + xfont_font-sun-misc, xfont_font-winitzki-cyrillic, + xfont_font-xfree86-type1, xfsprogs, xkeyboard-config, xl2tp, + xlib_libfontenc, xlib_libXi, xmlstarlet, xscreensaver, + xserver_xorg-server, xtables-addons, xvkbd, xz, yad, yasm, + ympd, zeromq, zic, znc, zsh, + + New packages: acsccid, assimp, atkmm, autofs, bcm2835, + cairomm, cantarell, chocolate-doom, comix-cursors, cxxtest, + edid-decode, emlog, gcr, gtkmm3, hidapi, jquery-sidebar, + kernel-module-imx-gpu-viv, libasplib, libcroco, libdvbpsi, + libfreeglut, libgdiplus, libglfw, libhdhomerun, libnet, + libsoil, lldpd, luvi, mbedtls, minizip, miraclecast, mongodb, + mraa, netbsd-queue, netsniff-ng, nss-pam-ldapd, + obsidian-cursors, openal, openbox, pangomm, + python-backports-abc, python-beautifulsoup4, python-cbor, + python-click, python-cssselect, python-ecdsa, python-html5lib, + python-idna, python-ipaddress, python-mistune, python-netaddr, + python-paho-mqtt, python-paramiko, python-pyparted, + python-pysmb, python-pyudev, python-singledispatch, + python-smbus-cffi, python-urllib3, qt53d, rabbitmq-c, rfkill, + sbc, spi-tools, tpm-tools, trousers, ubus, unrar, unscd, + unzip, v4l2grab, xdriver_xf86-video-nouveau, xdotool, zbar + + Removed packages: libungif, python-pyxml, + + Issues resolved (http://bugs.uclibc.org): + + #7886: gettext: link failure with locally-installed libxml2 + #7892: systemd-journald is broken + #8066: nodejs crashes when built with gcc 4.9 + #8296: nodejs 0.12.7 - npm crashes (seg core dump) + #8501: gunzip fails to uncompress files + #8541: fail to build host-fakeroot-1.20.2 + #8546: build instructions for raspberry pi don't work + #8571: strace for ARC compile error + #8581: pciutils.mk PCIUTILS_MAKE_OPTS typo + #8616: Fail to build for raspberrypi_defconfig with big endian + #8621: sqlite package, properly enable readline + +2015.11, Released November 30th, 2015 + + Minor fixes. + + Merged/separate /usr handling is now also performed for + staging so cross-gdb / gdbserver can find the libraries. + + Updated/fixed packages: autossh, conntrack-tools, dcron, + espeak, gcc, glmark2, gpsd, gstreamer1, libglib2, libsigsegv, + libsoc, libv4l, minidlna, mongrel2, opencv, polarssl, + rpi-userland, rubix, skeleton, tovid, uemacs, valgrind, yad, + zmqpp + + Issues resolved (http://bugs.uclibc.org): + + #8441: Invalid directory for X11 fonts in target (RPi2) + #8491: libglib2 2.46.1 not Building for armv5 on 2015.11-rc3 + +2015.11-rc3, Released November 26th, 2015 + + Fixes all over the tree. + + We have a new modern website! + + Updated/fixed packages: apitrace, audiofile, autossh, bullet, + c-ares, collectd, conntrack-tools, cryptodev-linux, dropbear, + fastd, gmp, gpsd, gst-plugins-bad, gst-plugins-base, + gst-plugins-good, gst-plugins-ugly, gstreamer, gstreamer1, + guile, iodine, iproute2, jimtcl, kompexsqlite, libethumb, + libfreeimage, libgsasl, libgtk3, libxml2, localedef, + lttng-tools, macchanger, mongrel2, mpd, openntpd, openssl, + oprofile, pcre, qt5base, quagga, rpi-userland, sconeserver, + sdl, spidev_test, sqlite, strongswan, ustr, xapp_sessreg, + yajl, zmqpp + + Issues resolved (http://bugs.uclibc.org): + + #6872: gpsd: disabled on microblaze + #8321: invalid opcode error with minidlna and ffmpeg + #8336: Default systemd configuration fails to boot correctly in 2015-08 + #8446: rpi-userland failed to build with glibc 2.22 + +2015.11-rc2, Released November 19th, 2015 + + Fixes all over the tree. + + LD_LIBRARY_PATH is no longer used to ensure host binaries find + their libraries, fixing issues on recent Fedora. + + Toolchain fixes for powerpc e5500 / e6500. Fix for an issue + with ${TARGET}-cc after the move to use a toolchain wrapper + for the internal toolchain. + + Appy-patches.sh now correctly applies all files listed in + series files. + + Fixes for merged /usr handling when a custom skeleton is used. + + Updated/fixed packages: axfsutils, boost, busybox, dhcp, + directfb, dropbear, ebtables, fastd, ffmpeg, gauche, gcc, + gettext, gst1-plugins-bad, hostapd, ibrdtnd, libcurl, + libecore, libgudev, libnss, libpng, libserial, libssh2, + libuecc, libxml2, linux-headers, liquid-dsp, ltris, + lua-periphery, minidlna, mongrel2, mpd, mpg123, mplayer, + mysql, opencv, opencv3, package, perl-file-util, php-ssh2, + polarssl, pulseaudio, python-protobuf, qemu, qt5base, ranger, + ruby, skeleton, slang, squeezelite, strongswan, tovid, uclibc, + ushare, wine, wpa_supplicant, x265, + xdriver_xf86-video-siliconmotion, zxing-cpp + + Issues resolved (http://bugs.uclibc.org): + + #4790: Running udhcpc on a system with NFS root kills NFS + #8456: Building host-pkgconf on Fedora 23 fails due to.. + +2015.11-rc1, Released November, 7th 2015 + + Fixes all over the tree and new features. + + Architectures: + + - Support for sparc64 added (internal toolchain with glibc + only). + + - Support for mips32r6 and mips64r6 added. + + - Support for Intel Quark X1000 CPU. + + - Switch to EABIhf by default on ARM when a VFP is available. + + Toolchains: + + - glibc 2.22, gdb 7.10, use gdb 7.9 by default, musl 1.1.12, + uclibc-ng 1.0.8, host-gdb enabled on AArch64. + + - The toolchain wrapper which was used only for external + toolchains is now also used for Buildroot internal + toolchains. This allowed to fix the ccache support, prepare + the way for top-level parallel build support and remove gcc + patches used to detect header/library path poisoning. + + - Remove Analog Devices Blackfin toolchain 2012R2. + + - Fix several Xtensa build failures by switching from + text-section-literals to auto-litpools. + + - Enable MIPS64 support in uClibc-ng, use uClibc on ARC + rather than a specific fork. + + - Linaro toolchains for ARM, ARMeb and AArch64 updated to + 2015.08. 2014.09 version is kept since 2015.08 only runs on + x86_64 hosts. + + Bootloaders: + + - Fix ARM64 support in U-Boot. + + Defconfigs: + + - Added: ARC HS38 VDK virtual boards, Avnet Microzed, Boundary + Devices Nitrogen SoloX, Freescale i.MX6 SoloX Sabre SD, + OLinuxino A20 Lime2, Qemu Sparc64, Qemu SuperH 4 big endian, + Synopsys AArch64 VDK virtual platform. + + - Updated: calao_qil_a9260, calao_usb_a9g20_lpw, ci20, + cubieboad, freescale_imx6_*, imx53loco, imx6_vab820, + mpc8315erdb, qmx6, p1010rdb, qemu, raspberrypi, + raspberrypi2, riotboard, snps_axs10*, wandboard. + + - Removed: at91rm9200df, at91sam9260dfc, at91sam9263ek, + calao_snowball_defconfig, gnublin, integrator926_defconfig. + + Infrastructure: + + - Support for fetching from Mercurial tags fixed. + + - Introduce LINUX_NEEDS_MODULES, which allows to enforce + module support to be enabled in the kernel when a package + builds out-of-tree kernel modules (through the + pkg-kernel-module infrastructure or on its own). + + - Improve the perl package infrastructure to automatically add + the dependency to the perl interpreter to target perl module + packages. + + - Remove trailing slashes in _SITE and addition of a + check to ensure such trailing slashes are no longer added. + + - Extend the legal infrastructure to allow packages to declare + their actual source code. This is useful for packages for + which _SOURCE points to pre-built binaries (as is the + case for external toolchains). The new _ACTUAL_SOURCE + variable allows to point to the source code in such cases. + + - Improved ccache support, thanks to the usage of a toolchain + wrapper for internal toolchain. Now a single cache directory + can be shared between different Buildroot builds. + + - Addition of a 'graph-size' make targets, which generates a + PDF graph of per-package size of the root filesystem. + + - Addition of _EXCLUDES so that packages can request + certain parts of the source code tarball to not be + extracted. This feature is currently used by gcc and + toolchain-external. + + - Packages can now use the _PKGDIR variable, provided by + the package infrastructure, to reference their package + directory, instead of explicitly using package//. + + Filesystems: + + - Add high lz4 compression to squashfs. + + - Simplification of shell profile files in the default + skeleton. + + - Remove ftp user and /home/ftp from the skeleton, and let ftp + server packages create these when needed. + + - Add support for /bin, /sbin and /lib to be symlinks to their + corresponding directories in /usr. This is enforced for + systemd configurations, and optional for other + configurations. + + - Support for AXFS filesystem image generation added. + + - New options to add extra space/inodes to ext2/3/4 images. + + Updated/fixed packages: + + adwaita-icon-theme, apache, apitrace, atk, audit, avahi, + barebox, bash, batctl, bind, binutils, bluez_utils, boost, + bridge-utils, cairo, ccache, chrony, clapack, cloog, cmake, + collectd, connman, conntrack-tools, coreutils, cpio, + cryptsetup, dbus, dbus-cpp, devmem2, dhcp, dhcpcd, dhcpdump, + dhrystone, dillo, directfb, directfb-examples, dmraid, + dos2unix, dovecot, dovecot-pigeonhole, drbd-utils, dropbear, + dropwatch, dtc, e2fsprogs, ebtables, efl, eigen, ejabberd, + elf2flt, elfutils, erlang, ethtool, eudev, evemu, exfat, + exfat-utils, expat, faifa, fbterm, fdk-aac, feh, ffmpeg, file, + flashrom, fping, freerdp, freescale-imx, freetype, gdk-pixbuf, + genimage, gettext, git, glib-networking, glmark2, gnupg2, + gnuradio, gnutls, gpsd, grep, grub2, gst1-imx, gst1-libav, + gst1-plugins-bad, gst1-plugins-base, gst1-plugins-good, + gst1-plugins-ugly, gst1-validate, gst-fsl-plugins, + gst-plugins-bad, gstreamer1, guile, gvfs, harfbuzz, haveged, + hostapd, icu, imagemagick, impiutil, imx-gpu-viv, imx-vpu, + inadyn, intltool, iostat, iperf3, ipmiutil, iproute2, + iptables, iw, jpeg-turbo, jq, jsoncpp, kexec-lite, kmod, kodi, + kodi-audioencoder-flac, kodi-pvr-argustv, kodi-pvr-filmon, + kodi-pvr-hts, kodi-pvr-mythtv, kodi-pvr-pctv, + kodi-pvr-stalker, kodi-pvr-vbox, + kodi-visualisation-waveforhue, less, lftp, libbluray, + libcgroup, libconfuse, libcurl, libdcadec, libdrm, libevdev, + libffi, libfribidi, libfslcodec, libfslparser, libfslvpuwrap, + libgcrypt, libglew, libglib2, libgtk3, libidn, liblinear, + liblockfile, libmicrohttpd, libnetfilter_conntrack, libnfs, + libnftnl, libnl, libnspr, libnss, libpcap, libpfm4, libpng, + libselinux, libserial, libsoup, libsoxr, libstrophe, libtasn1, + libtirpc, libtorrent, libupnpp, liburcu, libusb-compat, libuv, + libv4l, libva, libva-intel-driver, libxcb, lighttpd, links, + linux, linux-firmware, linux-fusion, linux-headers, + lirc-tools, localedef, lpeg, lsof, ltp-testsuite, + lttng-libust, lttng-tools, lua-periphery, luaposix, lvm2, lxc, + lz4, mdadm, mesa3d, mesa3d-headers, minicom, minidlna, moarvm, + modem-manager, mosquitto, mpd, mpdecimal, mpg123, mplayer, + mrouted, msmtp, mtd, mutt, nettle, network-manager, nfs-utils, + nftables, nginx, nodejs, noip, ntp, ofono, opencv3, openpgm, + openssl, openswan, openvpn, pango, parted, perl, perl-cross, + perl-crypt-openssl-random, perl-http-message, + perl-io-socket-ssl, perl-module-build, perl-mojolicious, + perl-netaddr-ip, perl-net-dns, perl-net-http, perl-net-ssleay, + perl-uri, perl-xml-libxml, php, picocom, pixman, pkgconf, + poco, polarssl, portaudio, portmap, postgresql, proftpd, + protobuf, protobuf-c, pulseaudio, python-configshell-fb, + python-networkmanager, python-numpy, python-pyparsing, + python-pypcap, python-rtslib-fb, python-spidev, python-urwid, + python-web2py, qemu, qt5base, redis, rngtools, rng-tools, + rpi-firmware, rpi-userland, rtmpdump, rtorrent, ruby, samba, + samba4, sane-backends, sconeserver, sdl, sed, setools, + shairport-sync, shared-mime-info, sland, smartmontools, + softether, spice-protocol, sqlcipher, sqlite, squid, + strongswan, stunnel, subversion, sudo, sunxi-tools, + supervisor, systemd, tar, targetcli-fb, tcpdump, tiff, tor, + tvheadend, tzdata, uboot-tools, udisks, unionfs, upmpdcli, + util-linux, vala, valgrind, vim, vlc, vorbis-tools, vsftpd, + vtun, wavpack, webkitgtk24, weston, whois, wireless-regdb, + wireshark, wpa_supplicant, xdriver_xf86-input-vmmouse, + xdriver_xf86-video-imx-viv, xdriver_xf86-video-intel, + xdriver_xf86-video-sis, xlib_libXi, xorg-server, + xtables-addons, xterm, xz, zic, znc, zsh + + New packages: + + axfsutils, bitstream, check, dvblast, eventlog, fastd, gauche, + gmock, graphite2, gssdp, gupnp, gupnp-av, ibrcommon, ibrdtn, + ibrdtnd, ibrdtn-tools, imx-kobs, iqvlinux, irssi, + kompexsqlite, libbroadvoice, libcddb, libcodec2, libcrossguid, + libg7221, libhttpparser, libilbc, libldns, libmng, + libopenh264, libpam-radius-auth, libpam-tacplus, libsilk, + libsoundtouch, libssh, libuecc, libyuv, liquid-dsp, luv, + micropython, micropython-libs, python-pyratemp, + python-pyroute2, python-ranger, rapidxml, scrypt, sdl2, + sp-oops-extract, squeezelite, stress-ng, swupdate, syslog-ng, + x265, xdriver_xf86-video-fbturbo, xxhash, yad, zxing-cpp + + Removed packages: + + blackbox (was deprecated), divine (merged in directfb), + kobs-ng (replaced by imx-kobs), mediactl (merged in libv4l), + sawman (merged in directfb), schifra (marked broken since a + long time), texinfo (host variant only, no longer used), zxing + (replaced by zxing-cpp), + + Issues resolved (http://bugs.uclibc.org): + + #4099: cut utility from GNU coreutils works incorrect + #7772: libxml-parser-perl build failure: missing dependency + ExtUtils/MakeMaker + #7931: Default configuration for Cubieboard v1 is outdated + #8116: 2015.05-rc2 raspberrypi2_defconfig network interface + not coming up + #8246: X.org DRI2 build issue + #8256: pointing to /usr/bin/objcopy old version (x86) instead + of the generated one + #8266: mplayer build issue + #8281: pyrexc fails to run when path is too long + #8316: lttng-tools and lttng-babeltrace executables contain + bad RPATH pointing to host machine + #8331: kexec wants shutdown in /sbin, but systemd installs it + in /usr/sbin + #8361: Buildroot 2015.08.1 skeleton inittab overwritten by + busybox's version + #8366: libevent does not build + #8386: build failed with external toolchain + #8391: Node.js 0.12.7 fails to build on raspberry_pi defconfig + #8396: CCACHE initialization + #8401: gpsd 3.15 NMEA support + #8416: cups depends on BR2_DEPRECATED_SINCE_2015_05 + #8421: util-linux installs systemd files in output/target/home/ + +2015.08, Released August 31st, 2015 + + Minor fixes. + + OpenCV 3.x package renamed to opencv3. OpenCV 2.4.x + reintroduced as opencv. + + Updated/fixed packages: bootutils, canfestival, cppcms, + curlftpfs, dhcpdump, dropbear, erlang-p1-tls, exfat, gnuradio, + ipkg, libgudev, libmbim, libwebsock, linux-pam, lm-sensors, + ltrace, midori, network-manager, openssh, perl-file-listing, + perl-http-cookies, perl-http-daemon, perl-http-negotiate, + perl-www-robotrules, python-can, qt5base, qt5multimedia, + setools, sysvinit, tinyalsa, tn5250, tvheadend, uboot, vlc, + x264, xserver_xorg-server, zyre + +2015.08-rc2, Released August, 24th 2015 + + Fixes all over the tree. + + Toolchain: fix gcc build on NIOS-II. + + Infrastructure: add _POST_GEN_HOOKS mechanism to fix + hybrid ISO image generation. + + Architectures: add arm1136j-s variant. + + Updated/fixed packages: apitrace, audit, bcusdk, bdwgc, + beecrypt, boost, bwm-ng, cdrkit, c-icap, cifs-utils, clapack, + c-periphery, cpio, cramfs, czmq, dawgdic, dnsmasq, dosfstools, + dropbear, elfutils, empty, eudev, fan-ctrl, filemq, gnutls, + guile, haveged, imlib2, libcec, libepoxy, libev, libgpgme, + libiio, libnetfilter_queue, libnfnetlink, libpfm4, libpthsem, + librtas, libselinux, libsigsegv, libsodium, libv4l, lightning, + linux, lirc-tools, lrzsz, mono, mosh, mpd, msmtp, nbd, + netatalk, nodejs, ola, opencv, oprofile, php, poco, + postgresql, powertop, protobuf, protobuf-c, qt5base, + qt5quickcontrols, rapidjson, rng-tools, squid, sysdig, + sysstat, tftpd, tinc, tz, util-linux, webkitgtk24, weston, + wireshark, wvstreams, xdriver_xf86-input-synaptics, zyre. + + Issues resolved (http://bugs.uclibc.org): + + #8276: package/dropbear: symlink resolution incorrect + #8286: Error with buildroot + #8301: ldconfig parameter in Makefile + +2015.08-rc1, Released August, 5th 2015 + + Fixes all over the tree and new features. + + Architectures: + + - Refactor how the availability of an MMU is described. + - Minimal support for Cortex-M3 + - Minimal support for AArch64 big-endian + + Toolchains: + + - Add CodeSourcery MIPS 2015.05, remove MIPS 2013.11 + - Use uClibc-ng as the default uClibc version, instead of the + official uClibc, which hasn't done any release since 3+ + years + - eglibc is now marked as deprecated + - GCC: gcc 4.9.x is now the default and was updated to 4.9.3, + support for gcc 5.x added. + - Binutils: use Binutils 2.24 as the default, 2.25.x series + bumped to 2.25.1, remove old Binutils 2.22. + - Update ARC toolchain components to 2015.06 + - Add support for Fortran when building gcc + + Bootloaders: + + - Support for using the kconfig configuration system in + U-Boot + + New Defconfigs: + + - VIA VAB-820/AMOS-820 + - OLimex OLinuxino A20 Lime + - Many new defconfigs for Atmel evaluation boards: + at91sam9rlek, at91sam9x5ek, sama5d3xek, sama5d4ek, sama5d4 + Xplained Ultra, sama5d3 Xplained. + - ACME Systems Aria G25 + - WarPboard + - Altera Cyclone 5 Development Board + - Xilinx zc706 + - ARC AXS101 and AXS103 Software Development Platforms + - Significant updates to Raspberry Pi / Raspberry Pi 2 + + Infrastructure: + + - Buildroot takes better care now of generating predictable + permissions in the target filesystem. However, existing + permissions on a custom skeleton or rootfs overlay will no + longer be preserved. Therefore, it is necessary to add a + permission table (BR2_ROOTFS_DEVICE_TABLE) to set the + required permissions. + - Add support for kconfig fragments. + - No longer pass --{enable,disable}-debug to autotools + packages depending on the value of + BR2_ENABLE_DEBUG. BR2_ENABLE_DEBUG now only controls + whether we build with -g or not. + - Support for extracting archives in .lzma in the generic + package infrastructure. + - Remove random-seed file from the default skeleton, since + seeding the entropy pool with a known seed makes more harm + than good. + - In the CVS download helper, add support to use a date as + the version. + - Add support for a per-package _STRIP_COMPONENTS + variable, which packages can use to specify how many path + components should be stripped when extracting the tarball. + - Addition of a 'kernel-module' package infrastructure, which + simplifies the packaging of external kernel modules. Many + existing packages are converted to use it. + - Allow bootloaders to be implemented in $(BR2_EXTERNAL) + - Remove /etc/securetty from the default skeleton. + - Migration of sysV initscripts from the default skeleton to + a package called 'initscripts', installed only when Busbox + init or sysvinit are used. + - Migration of the skeleton logic to a proper 'skeleton' + package. + - Addition of a 'linux-tools' infrastructure in the 'linux' + package, to support building user-space tools bundled + within the Linux kernel sources, such as perf and cpupower. + - Usage of backticks instead of make $(shell ...) to execute + shell commands. This allows to delay the evaluation of such + commands when actually needed, and not when expanding the + variables. It is useful to make 'make printvars' less + noisy, and as a preparation to support top-level parallel + build. + - Libtool .la files are not mungled for all package types, + instead of being handled only for packages using the + autotools-package infrastructure. + - Add mechanism to allow packages to express a dependency on + gcc versions. This is needed for packages that use C++11 or + C11 support for example. + + Important package updates: + + - Complete rework of the matchbox packaging + - Lots of fixes in packages for compatibility with musl and + gcc 5. + - Hash files added to a large number of packages. + - Update a significant number of packages to use a new + hosting, after the announcement of Google Code and + Gitorious closing. + - Major packages needed for SELinux support have been merged, + but the support is not complete yet. + - Significant update of OpenCV to version 3.0, and addition + of lots of eatures. + - Significant update of all packages supporting the GPU and + VPU of i.MX ARM processors. + - Addition of systemd support in a significant number of + packages. + - Qt5 updated to 5.5.0 + - Use modular X.org server by default instead of KDrive + + Filesystems: + + - Complete overhaul of the iso9660 support. Now allows to use + directly IS9660 as the root filesystem format and not only + an initrd, and supports Grub 2 and isolinux in addition to + Grub. + + Updated packages: a10disp, agentpp, apache, at91bootstrap3, + audit, barebox, bc, bind, bmon, boost, btrfs-progs, + ca-certificates, can-utils, ccache, cloog, collectd, connman, + coreutils, c-periphery, cryptsetup, dado, dbus, dejavu, + dhcpcd, dnsmasq, dosfstools, dovecot, dovecot-pigeonhole, + e2fsprogs, ejabberd, erlang-p1-cache-tab, erlang-p1-sip, + erlang-p1-stringprep, erlang-p1-stun, erlang-p1-tls, + erlang-p1-utils, erlang-p1-xml, erlang-p1-yaml, ethtool, + eudev, evtest, exim, expect, explorercanvas, feh, ffmpeg, + file, flashrom, freescale-imx, freetype, gawk, gcc, gdb, + gettext, git, glib-networking, gnupg2, gnutls, gpsd, gptfdisk, + gpu-viv-bin-mx6q, gst-fsl-plugins, harfbuzz, hdparm, heimdal, + i2c-tools, imagemagick, imx-vpu, iproute2, ipset, isl, iw, + kodi, kodi-addon-xvdr, kodi-audioencoder-flac, + kodi-audioencoder-lame, kodi-audioencoder-vorbis, + kodi-audioencoder-wav, lftp, libass, libassuan, libcec, + libconfi, libcurl, libdrm, libevdev, libfreefare, libfslcodec, + libfslparser, libfslvpuwrap, libfuse, libglib2, libgpgme, + libgtk2, libgtk3, libical, libidn, libiio, libinput, libiscsi, + libllcp, libmicrohttpd, libnfc, libnss, libpcap, libpciaccess, + libpng, libserialport, libsigrok, libsoc, libtirpc, libubox, + libunistring, libupnp, libuv, libv4l, libva, + libva-intel-driver, libXrandr, lighttpd, linenoise, linux, + linux-firmware, linux-headers, live555, ltrace, lua, + lua-csnappy, lua-ev, luajit, lua-messagepack, luaperiphery, + lvm2, lxc, lzo, mesa3d, mesa3d-headers, midori, mmc-utils, + modem-manager, mono, mosquitto, mpd, mpd-mpc, mpfr, mpg123, + mtd, musl, nano, netperf, network-manager, nfs-utils, nginx, + nodejs, ntp, ola, opencv, openldap, openssh, openssl, + openswan, openvmtools, openvpn, opkg, orbit, orc, pcmanfm, + perl-cross, perl-encode-locale, perl-io-socket-ssl, + perl-mojolicious, perl-net-ssleay, perl-path-tiny, perl-uri, + perl-xml-libxml, php, pinentry, polarssl, postgresql, + pulseview, pure-ftpd, python, python-dpkt, python-lxml, + python-networkmanager, python-pyinotify, python-pypcap, + python-tornado, qextserialport, qt, qt5, rapidjson, redis, + rpcbind, rpi-firmware, rpi-userland, samba4, shairport-sync, + snmpp, sqlite, squid, strongswan, stunnel, sudo, sunxi-boards, + sunxi-mali, sysdig, sysstat, systemd, tcpdump, tiff, tmux, + tor, txheadend, tzdata, uboot, uclibc, ulogd, upmpdcli, + usb_modeswitch, usb_modeswitch_data, vala, vsftpd, wayland, + weston, whois, wireless-regdb, wireshark, x264, xapp_xvinfo, + xdriver_xf86-input-libinput, xdriver_xf86-input-vmmouse, + xdriver_xf86-video-cirrus, xdriver_xf86-video-geode, + xdriver_xf86-video-imx-viv, xdriver_xf86-video-mach64, + xdriver_xf86-video-neomagic, xdriver_xf86-video-r128, + xdriver_xf86-video-savage, xdriver_xf86-video-siliconmotion, + xdriver_xf86-video-vesa, xkeyboard-config, xlib_libfontenc, + xlib_libFS, xlib_libXaw, xlib_libxkbfile, xlib_libXrender, + xlib_libXt, xproto_kbproto, xproto_xproto, xproto_xrandrproto, + xscreensaver, xserver_xorg-server, xtables-addons, yaml-cpp, + zic. + + New packages: angularjs, atf, audit, c-icap, c-icap-modules, + cpio, dawgdic, faketime, fcgiwrap, gflags, glog, initscripts, + jquery-datetimepicker, kodi-audioencoder-modplug, + kodi-audioencoder-nosefar, kodi-audioencoder-sidplay, + kodi-audioencoder-snesapu, kodi-audioencoder-stsound, + kodi-audioencoder-timidity, kodi-audioencoder-vgmstream, + kodi-platform, kodi-pvr-argustv, kodi-pvr-dvblink, + kodi-pvr-dvbviewer, kodi-pvr-filmon, kodi-pvr-hts, + kodi-pvr-iptvsimple, kodi-pvr-mediaportal-tvserver, + kodi-pvr-mythtv, kodi-pvr-nextpvr, kodi-pvr-njoy, + kodi-pvr-pctv, kodi-pvr-stalker, kodi-pvr-vbox, + kodi-pvr-vdr-vnsi, kodi-pvr-vuplus, kodi-pvr-wmc, + kodi-screensaver-asteroids, kodi-screensaver-biogenesis, + kodi-screensaver-crystalmorph, kodi-screensaver-greynetic, + kodi-screensaver-pingpong, kodi-screensaver-pyro, + kodi-screensaver-stars, kodi-visualisation-shadertoy, + kodi-visualisation-spectrum, kodi-visualisation-waveforhue, + kodi-visualisation-waveform, kvmtool, kyua, libfm, + libfm-extra, libplatform, librtas, libsodium, libsquish, + libucl, libump, linux-backports, lua-iconv, lutok, menu-cache, + moarvm, monkey, mono-gtksharp3, mosh, openipmi, python-can, + python-pycli, python-pydal, python-pyyaml, python-web2py, + qpid-proton, qt5webchannel, quazip, racehound, rtl8188eu, + rtl8821au, sepolgen, setools, skeleton, stm32flash, + webkitgtk24, xdriver_xf86-video-qxl, zynq-boot-bin. + + Deprecated packages: webkitgtk, libgail, eglibc support in + glibc package. + + Issues resolved (http://bugs.uclibc.org): + + #4291: Segmentation fault with all binaries that use threads + when compiled with gcc 4.6 + #6944: building toolchain for sh4 fails + #7592: Buildroot GCC: -lto requires plugin support in ranlib + #7628: Python SSL does not get built for Raspberry Pi + #7682: Missing dependencies for NFS + #7742: dhcp lacks important features when BR2_ENABLE_DEBUG + #7754: make: *** [/..../buildroot-2014.11/output/build/host-gcc-initial-4.8.3/.stamp_built] Error 2 + #7946: libglib2-2.42.2 fails to build for sparc-buildroot-linux-gnu + #7956: glibc 2.20 and 2.21 fail to build for sh64-buildroot-linux-gnu + #7971: python-flask, python-werkzeug. No module named zlib + #7981: Target file system skeleton permissions hazard + #8006: rpcdebug in nfs-utils built for the host + #8036: alsa-lib headers problem that prevents to compile alsa + dependent projects + #8081: systemd init system: /tmp is not mode 1777 + #8121: php opcache extension doesn't get installed + #8151: x86-64 make fails with ncurses 5.9 + #8156: pkg-kconfig infra broken for *-update-{config, defconfig} + #8161: default /bin/sh symlink to busybox is full path and not relative + #8171: glamor missing + #8191: Request update support for the cubieboard series + #8201: Important security upgrades for node.js + +2015.05, Released May 31st, 2015 + + Minor fixes. + + Updated/fixed packages: conntrack-tools, directfb, fio, flite, + gptfdisk, ipmiutil, iproute2, janus-gateway, keyutils, knock, + libelementary, libgcrypt, libgsasl, libjpeg, libstrophe, + lttng-libust, nbd, ncurses, nmap, php, postgresql, python, + python3, sconeserver, udpcast, upmpdcli + +2015.05-rc3, Released May 22nd, 2015 + + Several fixes, mainly related to static linking. + + Updated/fixed packages: acl, alsa-utils, apr, armadillo, attr, + autoconf-archive, binutils, boost, czmq, dhcpcd, duma, + enlightenment, exim, fbterm, freerdp, gcc, gdk-pixbuf, + google-breakpad, gpsd, heirloom-mailx, hwloc, ipmiutil, + iproute2, jack2, jasper, kmod, lcdproc, leafnode2, libcap-ng, + libftdi1, libmatroska, libmemcached, libmodbus, libnftnl, + libsigrok, libupnpp, libuv, libxml-parser-perl, linux, + linux-headers, lirc-tools, lua-periphery, lxc, mongoose, mono, + mpg123, mosquitto, neardal, newt, ntp, ola, openldap, opencv, + php, postgresql, protobuf, pulseaudio, python-pyqt, qemu, qt, + qt5base, rpi-userland, rsyslog, snmppp, sqlite, tiff, + tinyxml2, uboot-tools, unionfs, ux5000-firmware, usbredir, + ushare, vpnc, vsftpd, wavpack, wireless_tools, wsapi, + wvstreams, xmlstarlet, zeromq, zmqpp + + New packages: c-periphery + + Issues resolved (http://bugs.uclibc.org): + + #8106: mkfs.jffs2 uses the --pagesize parameter incorrectly + #8111: 2015.05.rc2 LIBFOO_CONF_OPTS not working + #8126: exim lacks plaintext and cram-md5 auth + +2015.05-rc2, Released May 11th, 2015 + + Minor fixes. + + Toolchain: PR56780 backport to GCC 4.8.4 to fix GDB linking + issues. Context functions enabled for uClibc snapshot / + uClibc-NG. + + Architectures: Endian handling symbol for Xtensa, binutils + fixes. + + Infrastructure: Fix for kernel module stripping when + localversion contains spaces. + + Updated/fixed packages: at, autoconf-archive, binutils, + cc-tool, cryptsetup, dstat, expedite, freerdp, giflib, + gnuchess, guile, ipmiutil, iproute2, mono, monolite, neard, + ola, poppler, postgresql, python-qt, qt, sqlite, valgrind, + xlib_libXfont + + Issues resolved (http://bugs.uclibc.org): + + #8086: Cannot select systemd as init with Linaro 2014.09... + +2015.05-rc1, Released May 4th, 2015 + + Fixes all over the tree and new features. + + Architectures: Removed AVR32 support, deprecate SH64, added + support for steamroller, corei7-avx and core-avx2 x86 + variants. + + Toolchains: IPv6 and Largefile support now enforced for + uClibc. Corresponding Kconfig symbols removed. + + External CodeSourcery AMD64 2014.05, MUSL-cross 1.1.6 added, + CS sh2, Xilinx microblaze v2/14.3 removed. Distro-class + external toolchains are now detected and blacklisted. + + Internal toolchain support for Nios2 added, Blackfin + removed. Aarch64 and sh musl support. uClibc-ng support added. + + Libatomic is now handled for internal and external + toolchains. Link time optimization (LTO) support. + + New Defconfigs: Freescale i.MX28 EVK, i.MX31 PDK and SABRE + Auto, Raspberry Pi 2, RIoTboard, + + Infrastructure: Hashes for a large number of packages have + been added. Missing hashes now stop the build unless + explicitly disabled. + + Spaces and colons (:) are now supported in package + versions. Dependencies can now be listed for the patch step + (_PATCH_DEPENDENCIES). Kconfig and Linux kernel + extensions infrastructure has been added. + + Makedevs now has a recursive (r) option. + + The variable containing the list of packages to build has been + renamed from TARGETS to PACKAGES. + + Make external-deps / legal-info / source / source-check have + been reimplemented using the package infrastructure, so their + output/behaviour may differ from earlier (some packages were + not included in the past). + + The old insecure DES password encoding is no longer supported. + + U-Boot patch option now support direct references to patch + files and URLs in addition to directories of patches. The + i.MX28 SD format (u-boot.sd) is now supported. + + Updated/fixed packages: agentpp, aircrack-ng, alsa-lib, + alsa-utils, apr-util, apr, atk, autossh, avahi, avrdude, + bcusdk, bdwgc, bind, binutils, bmon, boost, botan, + btrfs-progs, busybox, ca-certificates, cairo, can-utils, + canfestival, ccache, chrony, civetweb, clamav, cmake, + collectd, connman, copas, crda, cryptodev-linux, cryptsetup, + cups, czmq, dbus-cpp, dbus-glib, dbus-python, dbus, dfu-util, + dhcp, dhcpcd, dialog, dillo, dmraid, dnsmasq, dos2unix, + dosfstools, dovecot-pigeonhole, dovecot, dropbear, dropwatch, + dtv-scan-tables, dvdauthor, e2fsprogs, ecryptfs-utils, + libevas, elfutils, enscript, erlang, espeak, eudev, evemu, + exfat-utils, exim, f2fs-tools, feh, ffmpeg, fftw, flickcurl, + fltk, fluxbox, fmlib, fmtools, freeradius-client, freerdp, + gamin, gawk, gcc-final, gcc, gd, gdb, gengetopt, geoip, git, + glib-networking, gnu-efi, gnuchess, gnutls, gpsd, gptfdisk, + gpu-viv-bin-mx6q, gst-plugin-bad, gstreamer, gstreamer1, + gtest, gvfs, harfbuzz, haserl, haveged, hiawatha, + hicolor-icon-theme, hostapd, hplip, httping, i2c-tools, icu, + ifplugd, imagemagick, imlib2, iozone, iproute2, iptables, + iputils, irqbalance, iw, jack2, jhead, jimtcl, json-c, kexec, + kismet, kmod, kodi-audioencoder-flac, + kodi-audioencoder-vorbis, kodi-pvr-addons, kodi, ktap, lcms2, + libass, libatomic_ops, libbluray, libcap, libcgroup, libcurl, + libdrm, libdvbsi, libebml, libecore, libedit, liberation, + libev, libevas, libevdev, libftdi, libgcrypt, libglib2, + libgpgme, libgtk2, libgtk3, libiconv, libidn, libiio, + libinput, libiscsi, libksba, liblinear, libmatroska, + libmicrohttpd, libmodbus, libmpdclient, libnice, libnl, + libnspr, libnss, libpcap, libpciaccess, libphidget, libplayer, + libpthsem, libqmi, librsvg, libseccomp, libsigrok, libsoup, + libsrtp, libssh2, libtasn1, libtool, libunistring, liburcu, + libusb, libuv, libva-intel-driver, libva, libvncserver, + libvorbis, libvpx, libwebsockets, libxml2, libzip, lightning, + lighttpd, linknx, linphone, linux-firmware, linux-headers, + linux-pam, live555, ljsyscall, lmbench, lockdev, logrotate, + lpc3250loader, lpeg, lsof, lttng-libust, lttng-modules, + lttng-tools, lua, luacrypto, luafilesystem, luajit, luaposix, + luarocks, lvm2, lxc, make, + matchbox-{common,desktop,fakekey,keyboard,lib,startup-monitor,vm}, + matchbox, mcelog, memcached, memstat, memtest86, mesa3d, + minidlna, mjpegtools, mjpg-streamer, modem-manager, mongoose, + monit, mono, monolite, mp4v2, mpc, mpd, mpdecimal, mpg123, + mplayer, musl, nano, nbd, ncftp, ncmpc, ncurses, ne10, neard, + neardal, net-tools, netatalk, netsnmp, network-manager, nginx, + nodejs, ntfs-3g, ntp, numactl, odhcp6c, ofono, open2300, + opencv, openldap, openntpd, openocd, openssh, openssl, + openswan, opentyrian, openvmtools, openvpn, oprofile, p11-kit, + pango, patch, patchelf, pciutils, pcre, perf, perl-gdgraph, + perl-io-socket-ssl, perl-json-tiny, perl-module-build, + perl-mojolicious, perl-net-ssleay, perl-path-tiny, + perl-xml-libxml, perl, phidgetwebservice, php-gnupg, php, + pkgconf, polarssl, poppler, popt, postgresql, powerpc-utils, + pppd, prboom, procps-ng, proftpd, psplash, ptpd2, + python-{cheetah,coherence,django,markdown,netifaces,pam,six}, + python-tornado, python-twisted, python-zope-interface, python, + python3, qemu, qt, qt5, qt5base, qt5multimedia, + qt5xmlpatterns, qt5cinex, quagga, qwt, radvd, readline, + rng-tools, rpcbind, rpi-firmware, rpi-userland, rsync, + rsyslog, rtai, rtmpdump, ruby, sam-ba, samba, samba4, + sane-backends, sconeserver, shairport-sync, sigrok-cli, slang, + smcroute, snmppp, socat, socketcand, sofia-sip, sox, + spawn-fcgi, speex, sqlcipher, sqlite, squid, strace, + strongswan, stunnel, sudo, sunxi-boards, swig, sysstat, + systemd, tcpdump, tftpd, thrift, thttpd, ti-gfx, ti-utils, + tiff, tinyalsa, tn5250, transmission, trinity, tslib, + tvheadend, tzdata, uboot-tools, uclibc, ulogd, usb_modeswitch, + usbutils, ustr, util-linux, vala, valgrind, vlc, wayland, + webp, weston, wget, which, whois, wireless-regdb, + wireless_tools, wireshark, wpa_supplicant, wvstreams, + xapp_{bdftopcf,bitmap,fonttosfnt,fslsfonts}, + xapp_{fstobdf,iceauth,mkfontscale,oclock,rgb,sessreg,setxkbmap}, + xapp_{showfont,smproxy,twm,x11perf,xcalc,xclipboard,xcmsdb}, + xapp_{xdbedizzy,xditview,xdpyinfo,xdriinfo,xedit,xev,xeyes}, + xapp_{xf86dga,xfsinfo,xgamma,xgc,xhost,xinit,xinput,xkbcomp}, + xapp_{xkbevd,xkbprint,xlsatoms,xlsfonts,xmag,xman,xmh,xmodmap}, + xapp_xmore, xcb-util-image, xcb-util-keysyms, + xdata_xcursor-themes, + xdriver_xf86-input-{evdev,keyboard,synaptics,void}, + xdriver_xf86-video-{ati,cirrus,geode,mach64,mga,neomagic}, + xdriver_xf86-video-{r128,savage,siliconmotion,sis,tdfx}, + xdriver_xf86-video-{trident,vmware,voodoo}, xenomai, + xfont_font-util, xkeyboard-config, + xlib_lib{ICE,X11,Xdmcp,Xfont,Xpm,XvMC}, + xlib_lib{Xxf86vm,xshmfence,xtrans}, xproto_randrproto, + xproto_xproto, xserver_xorg-server, x11vnc, x264, xerces, + xorriso, xterm, xz, yaml-cpp, zeromq, zic, zmqpp + + New packages: apache, autoconf-archive, batctl, + bitstream-vera, bullet, cc-tool, doxygen, drbd-utils, + dvdrw-tools, gnuradio, gst1-imx, hans, hwloc, ijs, + imx-usb-loader, inconsolata, iodine, iotop, ipmiutil, jsoncpp, + leveldb, libdcadec, libdri2, libfreeimage, libftdi1, + libsidplay2, lirc-tools, lua-periphery, mc, mesa3d-headers, + mosquitto, nvidia-driver, nvidia-tegra23{,-binaries,-codecs}, + openjpeg, opusfile, perl-crypt-openssl-{random,rsa}, + perl-db-file, perl-digest-{hmac,sha1}, + perl-encode-{detect,locale}, perl-file-{listing,util}, + perl-html-{parser,tagset}, perl-http-cookies, + perl-http-{daemon,date,message,negotiate}, perl-io-html, + perl-libwww-perl, perl-lwp-mediatypes, perl-mail-dkim, + perl-mailtools, perl-mime-base64, perl-net-{dns,http}, + perl-netaddr-ip, perl-time-hires, perl-timedate, perl-uri, + perl-www-robotrules, powertop, pulseview, + python-{cherrypy,lxml,mako,pyqt,pyxml,sip,spidev,ws4py}, qpdf, + qt-webkit-kiosk, sl, softether, sysdig, tinyxml2, tor, tovid, + unixodbc, wf111, wine, libepoxy, xapp_xcompmgr, + xapp_xfindproxy, xcb-util-cursor, xcb-util-renderutil, + xdriver_xf86-input-libinput, xdriver_xf86-video-imx{,-viv}, + xproto_xproxymanagementprotocol + + Removed packages: gtk2-theme-hicolor + + Deprecated packages: samba + + Issues resolved (http://bugs.uclibc.org): + + #7478: Multiple chosen python modules are not built due to... + #7508: Use of BR2_EXTERNAL and dependencies to existing packages + #7676: Package procps-ng installs binaries to nonsensical folder + #7724: Startx is not installed in the target + #7760: botan: wrong prefix in botan-1.10.pc + #7826: Building of cdparanoia + #7844: Lua with hard-float on MIPS by buildroot doesn't work + #7874: X.org configure error + #7941: glibc-2.20 fails to build for sparc-buildroot-linux-gnu + #7951: gcc 4.9.2 fails to build for sparc-buildroot-linux-gnu + #7961: Qt5 fails to build for xtensa-buildroot-linux-uclibc + #7976: mkuser script fails with: user already exists with... + #8011: When building only busybox and strace, strace fails... + #8016: collectd fails to build, network.c:171:19: error:... + #8041: error on building libcurl7.42.0 + +2015.02, Released March 1st, 2015 + + Minor fixes. + + Updated/fixed packages: civetweb, ding-libs, + directfb-examples, glibc, gnupg, gnupg2, gpm, + gst-plugins-good, gst1-plugins-good, freetype, libao, libevas, + libevent, libfribidi, libgcrypt, libgtk2, libshout, libsrtp, + libtheora, libupnpp, libxmlrpc, linux, make, opus, pinentry, + rpi-firmware, shared-mime-info, vlc, vorbis-tools, + xcb-util-keysyms + + Removed packages: libgc + +2015.02-rc3, Released February 24th, 2015 + + Minor fixes. + + Cmake and rebar (erlang) infrastructure fixes. + + Updated/fixed packages: bind, btrfs-progs, busybox, e2fsprogs, + evtest, ffmpeg, fltk, gnutls, i2c-tools, imagemagick, libxcb, + make, mjpg-streamer, netsnmp, opentyrian, php, polarssl, + qt5base, samba, samba4, sudo, util-linux, xserver_xorg-server + +2015.02-rc2, Released February 15th, 2015 + + Minor fixes. + + raspberrypi: fix kernel sha1 for DT variant. + + Updated/fixed packages: dbus, dvdauthor, git, libsemanage, + libsepol, libssh2, mplayer, ntp, openvmtools, python3, + qt5base, qt5connectivity, xserver_xorg-server + +2015.02-rc1, Released February 8th, 2015 + + Fixes all over the tree and new features. + + Static/shared library handling reworked. This is now a + tristate (shared only / shared and static / static + only). Default is now shared only to speed up the + build. BR2_PREFER_STATIC_LIB is now called BR2_STATIC_LIBS. + + The toolchain (internal and external) will now warn when an + unsafe library or header path is used (such as /usr/include or + /usr/lib). If BR2_COMPILER_PARANOID_UNSAFE_PATH is enabled + under build options this instead becomes an error. + + A installation path issue with the internal musl toolchain + support has been fixed so it is now possible to reuse it as an + external toolchain. + + Architectures: Freescale E5500 and E6500 PowerPC support + added, deprecated MIPS 1/2/3/4 support removed. + + New defconfigs: Freescale p2020ds, MIPS creator CI20, + Raspberrypi with DT, UDOO Quad. + + 'make _defconfig' now saves the path to the defconfig in + the .config, so a 'make savedefconfig' automatically updates + it. + + Infrastructure for packages using the Erland rebar tool has + been added. + + Hashes for a large number of packages have been added. Hashes + are now checked for both target and host packages. + + The system menu now has an option to automatically configure a + network interface through DHCP at bootup. + + The default filesystem skeleton now uses a separate tmpfs for + /run instead of a symlink to /tmp/ for security reasons / to + protect against conflicts with user generated temporary files. + + BR2_EXTERNAL is now exported to post-build and post-image + scripts. + + New packages: bdwgc, benejson, blktrace, bootstrap, cgic, + ding-libs, dvdauthor, ejabberd, erlang-goldrush, erlang-lager, + erlang-p1-cache-tab, erlang-p1-iconv, erlang-p1-sip, + erlang-p1-stringprep, erlang-p1-stun, erlang-p1-tls, + erlang-p1-utils, erlang-p1-xml, erlang-p1-yaml, + erlang-p1-zlib, exiv2, freeradius-client, gengetopt, glmark2, + gpu-amd-bin-mx51, guile, host-qemu, ifupdown, iperf3, + janus-gateway, kodi, kodi-audioencoder-flac, + kodi-audioencoder-lame, kodi-audioencoder-vorbis, + kodi-audioencoder-wav, libcli, libiio, liblinear, libnice, + libselinux, libsemanage, libserialport, libsigro, + libsigrokdecode, libsrtp, liburiparser, libvips, libwebsock, + libz160, libzip, lightning, mcelog, memtest86, mjpegtools, + mjpg-streamer, mke2img, mpd-mpc, netsurf-buildsystem, odhcp6c, + openldap, python-alsaaudio, python-certifi, python-cheetah, + python-coherence, python-django, python-docopt, python-enum, + python-enum34, python-flask, python-gobject, python-httplib2, + python-ipaddr, python-itsdangerous, python-jinja, + python-markdown, python-markupsafe, python-networkmanager, + python-pam, python-psutil, python-pyftpdlib, python-pyinotify, + python-pysendfile, python-pyxb, python-requests, python-six, + python-twisted, python-webpy, python-werkzeug, + python-zope-interface, qt5cinex, sigrok-cli, sofia-sip, + start-stop-daemon, szip, triggerhappy, ustr, vnstat, xorriso, + xtables-addons + + Removed packages (target): bison, distcc, gob2, m4 + + Issues resolved (http://bugs.uclibc.org): + + #7556: make interactive CLI optional for nftables + #7730: Error while connecting Qt Cretaor to device + #7766: logrotate default gzip path is usually wrong + #7790: Invalid ext4 image generated by Buildroot + +2014.11, Released December 1st, 2014 + + Minor fixes. + + Infrastructure: LD_LIBRARY_PATH handling tweak to ensure + current working directory isn't searched. + + Updated/fixed packages: gd, gdb, libwebsockets, luajit, mono, + parted, shairport-sync, util-linux, xapp_bdftopcf, + xserver_xorg-server + +2014.11-rc3, Released November 28th, 2014 + + Fixes all over the tree. + + System: File permissions of /etc/random-seed made more + restrictive. + + Toolchain: Various fixes related to locale handling, a fix for + building the toolchain wrapper on MIPS. + + Updated/fixed packages: bind, binutils. botan, btrfsprogs, + clamav, czmq, dhcp, dillo, dovecot, erlang, flac, gd, glibc, + gptfdisk, gst1-validate, heirloom-mailx, lame, libksba, + libllcp, libnspr, libpng, libshairplay, libtirpc, linux, + linux-headers, mpdecimal, mpg123, network-manager, nfstables, + nfs-utils, openssl, pcituils, qt, radvd, rtai, sqlcipher, + sstrip, tcpdump, uclibc, uemacs, ushare, wayland, weston, + xl2tp, xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #7670: Fails to build mpc-1.0.2 on latest Cygwin + +2014.11-rc2, Released November 21st, 2014 + + Fixes all over the tree. + + Inittab tweaks for shutdown handling (busybox and sysvinit). + + Updated/fixed packages: aircrack-ng, botan, canfestival, + clamav, coreutils, czmq, dbus, dovecot, duma, e2fsprogs, + erlang, gcc, iputils, libcap, libgcrypt, libmemcached, + libssh2, libunwind, libv4l, linux-headers, mesa3d-demos, mutt, + mysql, ndisc6, nodejs, omniorb, perl-cross, php, + python-tornado, python3, qemu, qt5base, qt5webkit, rpm, + rt-tests, ruby, schifra, sdl_sound, shairport-sync, sysvinit, + tstools, tzdata, wireshark, x264 + + Issues resolved (http://bugs.uclibc.org): + + #7646: strftime on datetime not works on python3 + +2014.11-rc1, Released November 12th, 2014 + + Fixes all over the tree and new features. + + Toolchains: Use -mcpu / -march instead of -mtune. Support + additional ARC and sparc variants. Updated Code sourcery + and Linaro external toolchains. + + Defconfigs: Freescale iMX6DL SabreSD, Minnowboard MAX, QEMU + powerpc64 pseries added and a number of updates to the + existing configurations. + + Infrastructure: Buildroot is now less noisy when built with + the silent option (make -s). + A number of package infrastructure variables have been renamed + from *_OPT to *_OPTS for constency. Buildroot will complain if + the old names are used to assist in updating out of tree + packages. + Fixes for host systems where bash isn't located in /bin, and + older systems not supporting mktemp --tmpdir. + Various cleanups of users/groups in the default skeleton. + There is now an option to choose what shell /bin/sh points to. + + Documentation: Various updates to the user manual. The + asciidoc documentation handling has now been extended so it + can be used by (BR2_EXTERNAL) packages. + + Updated/fixed packages: acl, acpid, agentpp, aircrack-ng, + alsa-lib, alsamixergui, alsa-utils, apitrace, apr, apr-util, + argus, arptables, at, atftp, atk, attr, audiofile, aumix, + automake, autossh, avahi, avrdude, axel, bandwidthd, bash, + bcusdk, beecrypt, bind, binutils, blackbox, bluez5_utils, + bluez_utils, bmon, boost, bootutils, bridge-utils, + btrfs-progs, busybox, bwm-ng, bzip2, ca-certificates, cairo, + ccache, ccid, ccrypt, cdrkit, cegui06, celt051, chrony, + cifs-utils, civetweb, cjson, clapack, classpath, cloog, cmake, + collectd, connman, copas, coreutils, coxpcall, cppcms, cppdb, + cppzmq, cramfs, crda, cryptsetup, ctorrent, cups, cvs, cwiid, + czmq, dash, dbus, dbus-cpp, dbus-glib, dbus-python, dejavu, + dhcp, dhcpcd, dhcpdump, dialog, dillo, directfb, distcc, + dmalloc, dmidecode, dmraid, dnsmasq, doc-asciidoc.mk, + dosfstools, dropbear, dropwatch, dstat, dtach, dtc, dvbsnoop, + e2fsprogs, ecryptfs-utils, ed, efl, eigen, elf2flt, elfutils, + enlightenment, enscript, erlang, espeak, ethtool, eudev, + evemu, evtest, exfat, exfat-utils, exim, expat, expect, + explorercanvas, faifa, fakeroot, fan-ctrl, fbdump, + fb-test-app, fetchmail, ffmpeg, file, filemq, findutils, flac, + flann, flickcurl, flite, fltk, fluxbox, fmc, fmlib, + fontconfig, foomatic-filters, freerdp, freescale-imx, + freetype, ftop, fxload, gamin, gcc, gd, gdb, gdk-pixbuf, + genimage, genpart, genromfs, geoip, gettext, giblib, git, + glibc, glib-networking, gmp, gmpc, gnu-efi, gnupg, gnupg2, + gnuplot, gnutls, google-breakpad, gpm, gpsd, gptfdisk, + gpu-viv-bin-mx6q, grantlee, grep, gsl, gst1-libav, + gst1-plugins-{bad,base,good,ugly}, gst-ffmpeg, + gst-fsl-plugins, gst-omx, gst-plugins-{bad,base,good,ugly}, + gst-plugin-x170, gstreamer, gstreamer1, gtest, gtk2-engines, + gutenprint, gvfs, harfbuzz, haserl, haveged, hdparm, heimdal, + heirloom-mailx, hiawatha, hostapd, hplip, htop, httping, + hwdata, i2c-tools, icu, ifplugd, igh-ethercat, imagemagick, + imlib2, imx-lib, imx-vpu, inadyn, inotify-tools, input-tools, + intltool, iperf, iproute2, iprutils, ipsec-tools, ipset, + iptables, iputils, iw, jamvm, jansson, jasper, jimtcl, joe, + jpeg-turbo, jq, jquery-keyboard, jquery-mobile, jquery-ui, + jquery-ui-themes, jquery-validation, jsmin, json-c, + json-javascript, kbd, kexec, kexec-lite, keyutils, kismet, + kmod, knock, ktap, lame, lbase64, lbreakout2, lcdproc, lcms2, + lesstif, lftp, libaio, libao, libarchive, libargtable2, + libass, libassuan, libatasmart, libbluray, libbsd, libcap, + libcap-ng, libcdio, libcec, libcgicc, libcgroup, libcofi, + libconfig, libconfuse, libcurl, libdaemon, libdnet, libdrm, + libdvdnav, libecore, libedbus, libedit, libedje, libeet, + libelementary, libelf, libenca, libethumb, libevas, + libevas-generic-loaders, libevent, libexif, libeXosip2, + libffi, libftdi, libfuse, libgail, libgcrypt, libgeotiff, + libglade, libglib2, libgpgme, libgtk2, libhid, libidn, + libinput, libiscsi, libjson, libksba, liblockfile, + liblog4c-localtime, liblogging, libmad, libmatroska, libmbim, + libmemcached, libmicrohttpd, libmpdclient, libmpeg2, libndp, + libnfc, libnfs, libnftnl, libnl, libnspr, libnss, liboauth, + libogg, liboping, libosip2, libpcap, libpciaccess, libpfm4, + libplayer, libplist, libpng, libpthsem, libqmi, libqrencode, + libraw, libreplaygain, libroxml, librsvg, librtlsdr, + libsamplerate, libseccomp, libsecret, libshairplay, libsoc, + libsoup, libsoxr, libssh2, libstrophe, libsvg, libsvg-cairo, + libtasn1, libtheora, libtirpc, libtorrent, libubox, libuci, + libungif, liburcu, libusb, libuv, libv4l, libva, + libva-intel-driver, libvncserver, libvorbis, libvpx, + libwebsockets, libxcb, libxml2, libxml-parser-perl, libxmlrpc, + libxslt, lighttpd, linenoise, linknx, links, linphone, + linux-firmware, linux-fusion, linux-headers, linux-pam, + linux-zigbee, lite, live555, ljlinenoise, lmbench, lm-sensors, + localedef, lockdev, lockfile-progs, log4cxx, lpty, lrandom, + lrzsz, lshw, lsof, lsqlite3, ltp-testsuite, ltrace, ltris, + lttng-babeltrace, lttng-libust, lttng-modules, lttng-tools, + lua, luabitop, lua-coat, lua-coatpersistent, lua-csnappy, + lua-ev, luajit, luajson, lualogging, lua-messagepack, + lua-msgpack-native, luaposix, luarocks, luasec, luasocket, + luasql-sqlite3, lua-testmore, lunit, lvm2, lxc, lz4, lzlib, + lzma, m4, madplay, make, makedevs, Makefile.in, + matchbox-common, matchbox-desktop, matchbox-fakekey, + matchbox-keyboard, matchbox-lib, matchbox-panel, + matchbox-startup-monitor, matchbox-wm, mcrypt, mdadm, + media-ctl, mediastreamer, memcached, memstat, memtester, + mesa3d, metacity, midori, mii-diag, minidlna, mmc-utils, + modem-manager, mongoose, mongrel2, monit, mpc, mpd, mpdecimal, + mpfr, mpg123, mplayer, mrouted, msmtp, mtd, mtools, mtr, + musepack, musl, mutt, mxml, mysql, nano, nanocom, nbd, ncftp, + ncurses, ndisc6, ne10, neard, neon, netatalk, netperf, + netsnmp, nettle, net-tools, network-manager, newt, nfs-utils, + ngrep, nmap, nodejs, nss-mdns, ntfs-3g, ntp, numactl, nut, + nuttcp, ofono, ola, omap-u-boot-utils, omniorb, + on2-8170-modules, opencore-amr, opencv, openntpd, openobex, + openocd, openpowerlink, openssh, openssl, openswan, + opentyrian, opentyrian-data, openvpn, opkg, oprofile, opus, + opus-tools, orbit, orc, ortp, p11-kit, pango, parted, + pciutils, pcmanfm, pcre, pcsc-lite, perf, perl, perl-gd, + perl-gdgraph, perl-io-socket-ssl, perl-json-tiny, + perl-module-build, perl-mojolicious, perl-net-ssleay, + perl-path-tiny, perl-xml-libxml, perl-xml-parser, php, + php-geoip, php-gnupg, php-imagick, php-memcached, php-ssh2, + php-yaml, php-zmq, picocom, pifmrds, pinentry, pixman, + pkg-autotools.mk, pkg-cmake.mk, pkg-download.mk, + pkg-generic.mk, pkg-kconfig.mk, pkg-luarocks.mk, pkg-perl.mk, + pkg-python.mk, pkg-utils.mk, poco, polarssl, polkit, poppler, + popt, portaudio, portmap, postgresql, powerpc-utils, pppd, + pptp-linux, prboom, procps-ng, proftpd, protobuf, protobuf-c, + psmisc, ptpd2, pulseaudio, pv, pwgen, python, python3, + python-dialog, python-ipy, python-keyring, python-mad, + python-netifaces, python-numpy, python-protobuf, python-pyasn, + python-pyparsing, python-pyro, python-pyusb, python-serial, + python-setuptools, qdecoder, qemu, qextserialport, qjson, qt, + qt5, qt5base, qt5connectivity, qt5declarative, qt5enginio, + qt5graphicaleffects, qt5imageformats, qt5multimedia, + qt5quick1, qt5quickcontrols, qt5script, qt5sensors, + qt5serialport, qt5svg, qt5webkit, qt5webkit-examples, + qt5websockets, qt5x11extras, qt5xmlpatterns, qtuio, quagga, + quota, qwt, radvd, rapidjson, rdesktop, redis, rings, rpcbind, + rpi-firmware, rpi-userland, rpm, rp-pppoe, rrdtool, + rsh-redone, rsync, rsyslog, rtai, rtmpdump, rt-tests, rubix, + ruby, samba, sam-ba, samba4, sane-backends, schifra, + sconeserver, scons, screen, sdl, sdl_gfx, sdl_image, + sdl_mixer, sdl_net, sdl_sound, sdl_ttf, sed, ser2net, + setserial, sg3_utils, shared-mime-info, simicsfs, sispmctl, + slang, slirp, smcroute, smstools3, snmppp, + snowball-hdmiservice, socat, socketcand, sox, spawn-fcgi, + speex, spice, spice-protocol, sqlcipher, sqlite, squashfs, + squid, sredird, startup-notification, strace, stress, + strongswan, stunnel, subversion, sudo, sunxi-boards, + sunxi-cedarx, swig, sylpheed, synergy, sysklogd, sysstat, + systemd, sysvinit, taglib, tar, tcl, tcllib, tcpdump, + tcpreplay, texinfo, tftpd, thrift, thttpd, tiff, ti-utils, + tn5250, torsmo, trace-cmd, transmission, tslib, tstools, + tvheadend, twolame, tz, uboot-tools, uclibc, udisks, ulogd, + upmpdcli, upx, urg, usb_modeswitch, usbmount, usbredir, + usbutils, util-linux, valgrind, vde2, vim, vlc, vo-aacenc, + vorbis-tools, vpnc, vsftpd, vtun, wayland, webkit, webp, + webrtc-audio-processing, weston, wget, whois, wireless-regdb, + wireshark, wpa_supplicant, wvstreams, x11r7, x11vnc, + xapp_xcalc, xapp_xdm, xapp_xdpyinfo, xapp_xf86dga, xapp_xfs, + xapp_xinit, xapp_xkbevd, xapp_xmh, xapp_xrandr, xapp_xsm, + xbmc, xbmc-pvr-addons, xcb-proto, xcursor-transparent-theme, + xdriver_xf86-input-mouse, xdriver_xf86-video-{ast,intel}, + xdriver_xf86-video-vmware, xenomai, xerces, + xfont_font-adobe-{100,75}dpi, + xfont_font-adobe-utopia-{100dpi,75dpi,type1}, + xfont_font-alias, xfont_font-arabic-misc, + xfont_font-bh-100dpi, xfont_font-bh-75dpi, + xfont_font-bh-lucidatypewriter-100dpi, + xfont_font-bh-lucidatypewriter-75dpi, xfont_font-bh-ttf, + xfont_font-bh-type1, xfont_font-bitstream-100dpi, + xfont_font-bitstream-75dpi, xfont_font-bitstream-type1, + xfont_font-cronyx-cyrillic, xfont_font-cursor-misc, + xfont_font-daewoo-misc, xfont_font-dec-misc, + xfont_font-ibm-type1, xfont_font-isas-misc, + xfont_font-jis-misc, xfont_font-micro-misc, + xfont_font-misc-cyrillic, xfont_font-misc-ethiopic, + xfont_font-misc-meltho, xfont_font-misc-misc, + xfont_font-mutt-misc, xfont_font-schumacher-misc, + xfont_font-screen-cyrillic, xfont_font-sony-misc, + xfont_font-sun-misc, xfont_font-winitzki-cyrillic, + xfont_font-xfree86-type1, xfsprogs, xinetd, xkeyboard-config, + xlib_libdmx, xlib_libFS, xlib_libpciaccess, xlib_libSM, + xlib_libX11, xlib_libXaw, xlib_libXext, xlib_libXfont, + xlib_libXi, xlib_libXinerama, xlib_libXrandr, xlib_libXrender, + xlib_libXres, xlib_libXScrnSaver, xlib_libXt, xlib_libXv, + xlib_libXvMC, xlib_libXxf86dga, xlib_libXxf86vm, xmlstarlet, + xproto_xcmiscproto, xproto_xextproto, xscreensaver, + xserver_xorg-server, xterm, xz, zeromq, zlib, zlog, zmqpp, + znc, zsh, zxing + + New packages: adwaita-icon-theme, am335x-pru-package, + bcache-tools, biosdevname, botan, canfestival, clamav, + cppunit, dos2unix, dovecot, dovecot-pigeonhole, getent, glm, + gst1-validate, hicolor-icon-theme, ipmitool, leafnode2, + libdvbcsa, libgtk3, libphidget, libshout, libunistring, + libupnpp, mesa3d-demos, modplugtools, mono, monolite, mp4v2, + netcat-openbsd, nginx, odhcploc, openvmtools, + phidgetwebservice, pps-tools, pure-ftpd, + python-configshell-fb, python-rtslib-fb, python-urwid, qlibc, + qt5location, shairport-sync, spidev_test, targetcli-fb, + tinyalsa, trinity, x264, yaml-cpp, ympd + + Removed packages: libelf + + Issues resolved (http://bugs.uclibc.org): + + #261: New package: wxWidgets + #325: New package: ratpoison + #405: New package: OpenVZ tools + #1309: New package: rdiff-backup + #3427: New package: nginx + #3655: New package: libav + #3991: New Package: open-vm-tools (Vmware Tools) + #6878: dmraid: disabled on ARC + #6950: Full unicode support in ncurses + #7010: jamvm builds and runs fine under mips (be) + #7088: elfutils on Blackfin doesn't build + #7142: ecryptfs needs getent to run + #7280: CMake toolchain file uses the FORCE attribute on CMAKE_CXX_FLAGS + #7346: [2014.08rc3] vim-8ae50e3ef8bf.tar.gz can not be downloaded, ... + #7352: [2014.08-rc3] diffutils-3.3 failed on building + #7358: rpi-userland: linking with bcm_host doesn't give vc_dispmanx_* + #7364: monit builds a static application, even though BR2_PREFER_... + #7370: ngrep - requires --with-pcap-includes fully defined to find... + #7442: rootfs remount does not work as expected with sysvinit + #7448: Having export MACHINE="something" breaks glibc build on IMX6... + #7568: musl buildroot-toolchain does not put libgcc_s.so.1 into place + #7574: quota-4.01 fails to build statically + +2014.08, Released September 1st, 2014 + + Minor manual fixes/additions. + + Updated/fixed packages: btrfs-progs, cmake, cppcms, exim, + lftp, libdaemon, libev, libgpgme, libiqrf, libnl, libplist, + libroxml, libwebsockets, mesa3d, mpd, mtdev2tuio, musepack, + perl-gd, php-geoip, php-gnupg, php-imagick, php-memcached, + php-ssh2, php-yaml, php-zmq, polarssl, ruby, systemd, taglib, + uboot-tools, upmpdcli, webkit, xapp_xfs, xapp_luit, + xscreensaver, yajl + + Issues resolved (http://bugs.uclibc.org): + + #7346: vim-8ae50e3ef8bf.tar.gz can not be downloaded, 404 not found + +2014.08-rc3, Released August 26th, 2014 + + Minor fixes. + + User manual update / restructuring. + + Updated/fixed packages: cairo, ecryptfs-utils, gettext, + gstreamer, gstreamer1, gutenprint, icu, imagemagick, jack2, + lbreakout2, libevas-generic-loaders, libftdi, libinput, + libtorrent, ltris, msgpack, ntp, php, procps-ng, pulseaudio, + thrift, tvheadend, usb_modeswitch, xmlstarlet, + + Issues resolved (http://bugs.uclibc.org): + + #7136: ecryptfs-utils needs gettext to run when glibc/eglibc... + #7322: libgomp dependency issue with imagemagick + #7328: Git dl of versions in x/y broken + +2014.08-rc2, Released August 18th, 2014 + + Fixes all over the tree. + + User manual restructured / reworked. + + Toolchain: Fix for C++ exceptions / pthread_exit() on + uClibc/glibc, C++-11 features with uClibc. + + Updated/fixed packages: bandwidthd, bluez5_utils, empty, + espeak, fbv, ffmpeg, gd, gnupg2, gst1-plugin-good, iftop, + infozip, libcuefile, libeml, libnftl, localedef, ltrace, + matchbox, mpd, network-manager, nftables, ngrep, nut, openssl, + oprofile, perl, perl-net-ssleay, postgresql, pppd, procps-ng, + qt, subversion, synergy, systemd, tar, tftpd, webkit, + xapp_rstart, xbmc, xbmc-pvr-addons + + Issues resolved (http://bugs.uclibc.org): + + #7124: Use BR toolchain externally results a non-bootable... + #7208: Glibc C++ aplications crash if they use exceptions + #7250: Cannot build with -std=c++11 + #7262: Generating locale en_US.UTF-8 fails on 64bit fedora.. + #7286: systemd 215 doesn't build + +2014.08-rc1, Released August 8th, 2014 + + Fixes all over the tree and new features. + + Architecture: Powerpc64 BE/LE added, AVR32 deprecated. + Improved altivec / SPE /atomic instructions + handling. Additional PowerPC CPU variants added. + + Defconfigs: Atmel SAMA5D3, Congatec QMX6, Lego ev3, TS-5x00, + qemu-system-xtensa, qemu-aarch64-virt added. A number of + tweaks to existing ones. lpc32xx defconfigs removed. + + Toolchain: Microblaze support for internal musl toolchain. + Default to GCC 4.8 for internal toolchain, remove deprecated + 4.3 and 4.6 versions. + External CodeSourcery / Linaro toolchain updates, option to + copy gconv libraries for external toolchains. + + Infrastructure: graph-depends: misc fixes, transitive + dependencies are not drawn by default. Download handling is + now done using helper scripts. Integrity of downloads can now + be verified using sha* hashes. Subversion download now uses + peg revisions for robustness. + Legal-info: License info of local or overridden packages are + saved as well. Toolchain packages are also taken into account. + autotools: Static linking with libtool / v1.5 improvements. + Gettextize support, similar to autoreconf. + kconfig package infrastructure added. + + Misc: Version selection for busybox dropped. + + Updated/fixed packages: aespipe, aiccu, alsa-lib, alsa-utils, + alsamixergui, argus, armadillo, at, atftp, atk, avahi, + avrdude, axel, b43-firmware, b43-fwcutter, bandwidthd, bc, + bcusdk, beecrypt, bind, binutils, blackbox, bluez5_utils, + bmon, boa, bonnie, bootutils, bsdiff, btrfs-progs, bustle, + busybox, bwm-ng, bzip2, ca-certificates, cairo, can-utils, + ccache, ccrypt, chrony, cifs-utils, classpath, cloog, cmake, + collectd, connman, coreutils, cosmo, cppcms, cramfs, crda, + cryptodev-linux, cryptodev, ctorrent, cvs, dbus-cpp, + dbus-glib, dbus-python, dbus, dcron, dejavu, devmem2, + dfu-util, dhcp, dhcpcd, dhcpdump, dhrystone, dialog, dillo, + distcc, dmidecode, dmraid, dnsmasq, doom-wad, dropbear, + dropwatch, dsp-tools, dtv-scan-tables, dvb-apps, e2fsprogs, + e2tools, eeprog, eigen, elf2flt, elftosb, enlightenment, + enscript, espeak, ethtool, eudev, evemu, exim, expedite, + explorercanvas, ezxml, faifa, fan-ctrl, fconfig, feh, + fetchmail, ffmpeg, fftw, file, fio, fis, flann, flashrom, + flex, flot, fltk, fontconfig, freerdp, freescale-imx, + freetype, ftop, gcc, gd, gdb, genimage, genromfs, gettext, + giblib, glib-networking, glibc, gmp, gnupg, gnutls, gpm, gpsd, + gptfdisk, gpu-viv-bin-imx6q, gqview, grantlee, gst-ffmpeg, + gst-fsl-plugins, gst1-libav, gst1-plugins-bad, + gst1-plugins-ugly, gtk2-engines, gtk2-theme-hicolor, gtkperf, + gvfs, haserl, hdparm, hostapd, httping, i2c-tools, icu, + imagemagick, imx-lib, inadyn, inotify-tools, input-tools, + ipkg, iproute2, iputils, irda-utils, iw, jack2, jpeg, jquery, + jquery-keyboard, jquery-mobile, jquery-validation, jsmin, kbd, + kexec, kmod, knock, latencytop, lcdapi, leafpad, lesstif, + lftp, libaio, libarchive, libargtable2, libart, libatasmart, + libatomic_ops, libbsd, libcap-ng, libcec, libcgicc, libcgroup, + libconfuse, libcurl, libdrm, libdvdnav, libdvdread, + libeXosip2, libedit, liberation, libesmtp, libev, libevas, + libevdev, libevent, libfcgi, libffi, libfreefare, libfslcodec, + libfslparser, libfslvpuwrap, libgail, libgcrypt, libglade, + libglib2, libgpgme, libgtk2, libhid, libical, libiconv, + libiqrf, libjpeg, liblog4c-localtime, libmbus, libmicrohttpd, + libmms, libndp, libnftnl, libnl, libnspr, libnss, liboauth, + libpcap, libpng, libpthsem, libqmi, libraw, libraw1394, + librsvg, libsoc, libsoup, libsvgtiny, libsysfs, libtasn1, + libtirpc, libtorrent, libusb, libv4l, libwebsockets, libxcb, + libxml2, libyaml, links, linux-firmware, linux-fusion, + linux-headers, linux-pam, lite, live555, lm-sensors, + lockfile-progs, lpc3250loader, lshw, lsof, lsuio, ltrace, + ltris, lua-messagepack, luainterpreter, luajit, luaposix, + luarocks, lvm2, lxc, lz4, lzo, make, makedevs, mdadm, + mediastreamer, mesa3d, metacity, minidlna, mkpasswd, + modem-manager, mongoose, mpd, mpg123, msgpack, mtd, mtools, + mtr, musepack, musl, mysql, nano, nasm, nbd, ncurses, ndisc6, + netatalk, netplug, network-manager, nftables, ngircd, nodejs, + nss-mdns, ntp, nut, olsr, open2300, opencv, openntpd, openocd, + openpgm, openpowerlink, openssh, openssl, openswan, openvpn, + opkg, oprofile, opus-tools, orc, p910nd, pango, parted, + pax-utils, pcmanfm, perf, perl, perl-module-build, php, + pixman, pkgconf, poco, polarssl, popt, portmap, postgresql, + prboom, protobuf-c, proxychains-ng, psmisc, psplash, ptpd2, + python, + python-{bottle,dpkt,id3,mad,msgpack,nfc,pygame,pyzmq,simplejson}, + python3, qhull, qt, qt5base, qt5connectivity, qt5declarative, + qt5graphicaleffects, qt5multimedia, qt5quickcontrols, + qt5sensors, qt5svg, qt5webkit, quagga, quota, radvd, rdesktop, + read-edid, rpcbind, rpi-firmware, rpi-userland, rpm, + rsh-redone, rsync, rt-tests, rtmpdump, rtorrent, rubix, ruby, + samba, samba4, sane-backends, sawman, sconeserver, setserial, + sg3_utils, shared-mime-info, smartmontools, smcroute, snappy, + socketcand, spawn-fcgi, sqlite, squashfs, squid, sredird, + startup-notification, statserial, strongswan, stunnel, + sunxi-mali, supervisor, synergy, sysklogd, sysprof, sysstat, + systemd, tcpdump, tcpreplay, texinfo, thrift, thttpd, ti-gfx, + ti-utils, tinyhttpd, torsmo, trace-cmd, transmission, tslib, + tstools, tvheadend, tzdata, uboot-tools, uclibc, udev, + udpcast, usb_modeswitch, usbmount, util-linux, valgrind, vim, + vlc, w_scan, wayland, webrtc-audio-processing, weston, wget, + wireless-regdb, wireless_tools, wireshark, wpa_supplicant, + xapp_{twm,xconsole,xcursorgen,xedit,xfs,xinit,xrandr}, + xdriver_xf86-video-intel, xlib_lib{FS,ICE,Xext,Xfont,Xft,Xi}, + xproto_fontsproto, xproto_inputproto, xserver_xorg-server, + x11vnc, xbmc, xbmc-addon-xvdr, xbmc-pvr-addons, xterm, xvkbd, + xz + + New packages: flickcurl, fmc, fmlib, geoip, gnupg2, + google-breakpad, imx-vpu, isl, kexec-lite, libglew, libglu, + libinput, libksba, libmemcached, libmpdclient, librtlsdr, + libuv, libva, libva-intel-driver, linux-zigbee, memcached, + mpdecimal, ncmpc, opencore-amr, patchelf, perl-datetime-tiny, + perl-gd, perl-gdgraph, perl-gdtextutil, perl-io-socket-ssl, + perl-json-tiny, perl-mojolicious, perl-net-ssleay, + perl-path-tiny, perl-try-tiny, perl-xml-libxml, + perl-xml-namespacesupport, perl-xml-sax, perl-xml-sax-base, + php-geoip, php-memcached, pifmrds, pinentry, powerpc-utils, + procps-ng, pwgen, python-cffi, python-daemon, python-flup, + python-ipython, python-numpy, qt5enginio, qt5webkit-examples, + qt5websockets, simicsfs, sispmctl, sox, sshpass, tclap, + twolame, upmpdcli, whois, xlib_libxshmfence, xproto_dri3proto + + Removed packages: procps + + Issues resolved (http://bugs.uclibc.org): + + #5750: Doing a Buildroot build from /usr doesn't work + #5900: config flags to the Xenomai build system + #6230: Cannot compile gcc without threads (uClibc-based) + #6626: procps Unknown HZ value! (XX) Assume 100 + #7118: Package "thrift" requires atomic operations + #7154: Local uClibc config file gets overwritten using ... + #7160: host-xz not built + #7166: hostapd: segfault when using RT5370 + #7172: Name collision of rpath token expansion and internal.. + #7178: NTPd package cannot sync time without a proper ntp.conf + #7184: supervisord depends on libxml2 implicitly + #7196: Unable to build on UBUNTU13.10 + #7268: python 2.7 compilation issue on a Debian/Ubuntu ... + +2014.05, Released May 31st, 2014 + + Minor fixes. + + Minor manual fixes. U-Boot now defaults to spl/u-boot-spl.bin + for the spl file. + + Updated/fixed packages: exim, glibc, gnutls, libfribidi, + qt5base, qt5webkit, sysklogd, thrift, u-boot + +2014.05-rc3, Released May 28th, 2014 + + Minor fixes. + + Updated/fixed packages: acl, attr, connman, dosfstools, + dropbear, dvb-apps, exim, flite, gdb, httping, hwdata, + lesstif, libnss, libv4l, lttng-babeltrace, midori, monit, + mplayer, php, python2, rdesktop, rpi-userland, ruby, samba, + samba4, slang, xbmc + + Issues resolved (http://bugs.uclibc.org): + + #7100: license info for package 'acl' missing + #7106: license info for package 'attr' missing + #7112: license info for package 'hwdata' + +2014.05-rc2, Released May 21st, 2014 + + Fixes all over the tree. + + Stripping using sstrip has been deprecated. + + BR2_EXTERNAL can now also be used to implement custom + filesystem types. + + The newly added BR2_GRAPH_DEPTH variable to limit the depth of + the generated dependency graph has been renamed to + BR2_GRAPH_DEPS_OPTS, so additional options can be supported in + the future. + + The virtual package infrastructure will now error out early + if multiple packages providing the same virtual package has + been enabled (E.G. opengl). This change requires that the + packages explicitly declare what virtual package(s) they + provide. + + Updated/fixed packages: acpid, armadillo, avahi, bellagio, + btrfs-progs, cairo, clapack, directfb, duma, ecryptfs-utils, + elfutils, eudev, fbgrab, fio, flann, fluxbox, gdb, gpm, + gpu-viv-bin-mx6q, gst1-plugins-good, gst-plugins-good, + imagemagick, iprutils, ipsec-tools, jack2, libdvdnav, + libdvdread, libnss, libunwind, linux-headers, lsof, lua, + luajit, matchbox-keyboard, mesa3d, mpd, mplayer, mtr, mysql, + netsnmp, nodejs, openpowerlink, openvpn, pciutils, + php-imagick, postgresql, pulseaudio, qt5quick1, rpi-userland, + rsyslog, samba, samba4, sane-backends, sunxi-mali, systemd, + ti-gfx, tstools, udev, webkit, wpa_supplicant, xbmc, + xlib_libXpm, xserver_xorg-server, zyre + + Issues resolved (http://bugs.uclibc.org): + + #5396: Boot hangs when starting samba if BR2_ENABLE_LOCALE... + #7016: Git issues in resulting buildroot tar + #7094: pciutils doesn't build on Blackfin + +2014.05-rc1, Released May 13th, 2014 + + Fixes all over the tree and new features. + + Architectures: Support for MIPS o32 ABI on MIPS-64 targets has + been removed. Building o32 ELF files for MIPS64 is an exotic + configuration that nobody should be using. If o32 is required, + then is better if it's built for MIPS 32-bit cores so only + 32-bit instructions will be used leading to a more efficient + o32 usage. + Support for the ARM A12 variant and Intel corei7. + + Configs: Minnowboard and Altera SoCkit added, QEMU updates. + + Bootloaders: Grub2 and gummiboot support, syslinux support + extended. + + Toolchains: GCC 4.9. Glibc 2.19. Support for the musl C + library for internal and external toolchains. 4.8-R3 support + for ARC, Internal toolchain support for Aarch64 and + Microblaze. Environment variable to control debug output of + toolchain wrapper renamed to BR2_DEBUG_WRAPPER to match the + other variables. Toolchain tuple vendor name can now be + customized. Updated external Linaro ARM/Aarch64 + toolchains. Added external Linaro ARMEB toolchain. + A GDB gdbinit file is now generated for external toolchains to + automatically set the correct sysroot. + + Kconfig handling for minimum kernel headers version required + for packages. Now packages needing specific kernel header + features can specify these requirements in Kconfig. + + Infrastructure: Support for (but disabled as it leads to + unreproducible builds) toplevel parallel builds. See the + comment at the top of Makefile for details about how to enable + it and what the problems are if you want to test it. + Python package infrastructure extended to support Python 3.x + Perl and virtual package infrastructure support added. + PRE_*_HOOKS support for all build steps. + + Updated/fixed packages: acpid, agentpp, aiccu, apr, avahi, + barebox, bash, beecrypt, bellagio, binutils, boost, + boot-wrapper-aarch64, bustle, busybox, ca-certificates, cairo, + ccache, ccid, cgilua, chrony, cifs-utils, civetweb, cmake, + collectd, connman, coreutils, coxpcall, cppcms, cppzmq, crda, + cryptodev, cryptsetup, cups, czmq, dbus, dhcpdump, directfb, + dmalloc, dmraid, dnsmasq, dosfstools, dsp-tools, dtc, + dvb-apps, ebtables, ecryptfs-utils, eigen, erlang, ethtool, + evemu, evtest, f2fs-tools, fdk-aac, feh, ffmpeg, file, filemq, + flac, flot, fmtools, fping, freetype, fswebcam, gcc, gd, gdb, + gettext, giblib, git, glibc, glibmm, glib-networking, gmp, + gnutls, gpm, gpsd, gpu-viv-bin-mx6q, grep, gst1-libav, + gst1-plugins-bad, gst1-plugins-base, gst1-plugins-good, + gst1-plugins-ugly, gst-ffmpeg, gst-fsl-plugins, gst-omx, + gst-plugins-good, gstreamer1, gvfs, harfbuzz, haveged, + hostapd, htop, httping, ifplugd, iftop, igmpproxy, + imagemagick, imlib2, imx-lib, infozip, intltool, iproute2, + ipsec-tools, ipset, jansson, jpeg, jpeg-turbo, jquery, + jquery-keyboard, jquery-ui, jquery-ui-themes, json-glib, + json-javascript, kexec, kmod, lame, lbase64, lbreakout2, + lcdproc, lftp, libao, libatasmart, libatomic_ops, libcap, + libcdio, libcec, libcgicc, libcgroup, libcurl, libdrm, + libdvdnav, libdvdread, libegl, libeio, libenca, libesmtp, + libevas, libevdev, libfribidi, libfslcodec, libfslparser, + libfslvpuwrap, libgail, libgles, libglib2, libgtk2, libhid, + libjpeg, libmbim, libmicrohttpd, libmodplug, libnftnl, + libnspr, libogg, libopenmax, libopenvg, libpcap, libplayer, + libpng, libpthread-stubs, librsvg, libsigsegv, libsocketcan, + libsoup, libtasn1, libtool, libtpl, libunwind, liburcu, + libusb, libwebsockets, libxcb, libxml2, libxmlpp, libyaml, + lighttpd, linphone, linux-firmware, linux-headers, ljsyscall, + lmbench, lsof, ltp-testsuite, ltris, lttng-babeltrace, + lttng-libust, lttng-modules, lttng-tools, lua, lua-cjson, + luacrypto, lua-ev, luaexpat, luaexpatutils, luafilesystem, + luainterpreter, luajit, lua-msgpack-native, luaposix, + luarocks, luasec, luasocket, luasql-sqlite3, lvm2, macchanger, + memstat, mesa3d, metacity, minidlna, mmc-utils, + mobile-broadband-provider-info, modem-manager, mongrel2, + monit, mpd, mplayer, msmtp, mtd, mtools, mutt, mysql, nasm, + ncurses, ne10, netatalk, netsnmp, nettle, network-manager, + newt, nfs-utils, nmap, nodejs, ntfs-3g, ntp, nut, ofono, ola, + olsr, omniorb, opencv, opengl, openpgm, openssh, openssl, + openswan, openvpn, orbit, orc, p11-kit, pango, parted, + pciutils, pcre, pcsc-lite, perf, perl, perl-xml-parser, php, + picocom, pixman, pkgconf, poppler, popt, portmap, powervr, + pppd, pptp-linux, proftpd, protobuf, protobuf-c, ptpd2, + pulseaudio, python, python3, python-bottle, python-m2crypto, + python-netifaces, python-pyasn, python-pycrypto, + python-pygame, python-pysnmp, python-pysnmp-apps, + python-pysnmp-mibs, python-serial, python-setuptools, + qextserialport, qt, qt5, qt5base, qt5connectivity, + qt5declarative, qt5graphicaleffects, qt5imageformats, + qt5multimedia, qt5quick1, qt5quickcontrols, qt5script, + qt5sensors, qt5serialport, qt5svg, qt5webkit, qt5x11extras, + qt5xmlpatterns, qtuio, qwt, radvd, readline, rings, + rpi-firmware, rpi-userland, rsh-redone, rsync, rsyslog, rtai, + rtmpdump, rt-tests, ruby, samba, sconeserver, scons, sdl, + sdl_image, sdl_mixer, sg3_utils, slang, smstools3, snmppp, + socat, speex, sqlcipher, sqlite, squashfs, squid, strongswan, + stunnel, sunxi-boards, sunxi-mali, sunxi-tools, sylpheed, + syslinux, sysstat, systemd, taglib, tcl, tcllib, tcpreplay, + tidsp-binaries, ti-gfx, tmux, tvheadend, tzdata, uboot, + uboot-tools, uclibc, udev, udisks, ulogd, usb_modeswitch, + usb_modeswitch_data, usbmount, util-linux, valgrind, vlc, + webkit, weston, wget, wireshark, wpa_supplicant, wsapi, + w_scan, xapp_appres, xapp_bdftopcf, xapp_beforelight, + xapp_bitmap, xapp_editres, xapp_fslsfonts, xapp_fstobdf, + xapp_iceauth, xapp_ico, xapp_mkfontscale, xapp_rgb, + xapp_rstart, xapp_sessreg, xapp_showfont, xapp_twm, + xapp_viewres, xapp_xauth, xapp_xbacklight, xapp_xcalc, + xapp_xclock, xapp_xditview, xapp_xdpyinfo, xapp_xdriinfo, + xapp_xev, xapp_xfd, xapp_xfontsel, xapp_xfs, xapp_xfsinfo, + xapp_xgc, xapp_xhost, xapp_xinit, xapp_xkbutils, xapp_xkill, + xapp_xload, xapp_xlsclients, xapp_xlsfonts, xapp_xmag, + xapp_xman, xapp_xmessage, xapp_xmodmap, xapp_xprop, + xapp_xrandr, xapp_xrdb, xapp_xrefresh, xapp_xset, + xapp_xsetroot, xapp_xsm, xapp_xstdcmap, xapp_xvidtune, + xapp_xvinfo, xapp_xwd, xapp_xwininfo, xcb-util-wm, + xdriver_xf86-input-evdev, xdriver_xf86-input-joystick, + xdriver_xf86-input-keyboard, xdriver_xf86-input-mouse, + xdriver_xf86-input-synaptics, xdriver_xf86-input-vmmouse, + xdriver_xf86-video-ark, xdriver_xf86-video-ast, + xdriver_xf86-video-ati, xdriver_xf86-video-cirrus, + xdriver_xf86-video-dummy, xdriver_xf86-video-fbdev, + xdriver_xf86-video-geode, xdriver_xf86-video-glide, + xdriver_xf86-video-glint, xdriver_xf86-video-i128, + xdriver_xf86-video-intel, xdriver_xf86-video-mach64, + xdriver_xf86-video-mga, xdriver_xf86-video-neomagic, + xdriver_xf86-video-newport, xdriver_xf86-video-nv, + xdriver_xf86-video-openchrome, xdriver_xf86-video-r128, + xdriver_xf86-video-savage, xdriver_xf86-video-siliconmotion, + xdriver_xf86-video-sis, xdriver_xf86-video-tdfx, + xdriver_xf86-video-tga, xdriver_xf86-video-trident, + xdriver_xf86-video-vesa, xdriver_xf86-video-vmware, + xdriver_xf86-video-voodoo, xenomai, xerces, xl2tp, xlib_libFS, + xlib_xtrans, xproto_xproto, xserver_xorg-server, + xutil_util-macros, zeromq, zic, zmqpp, zyre + + New packages: armadillo, btrfs-progs, clapack, cosmo, dado, + dbus-triggerd, dtv-scan-tables, e2tools, eudev, exim, expect, + fetchmail, flann, flite, gnu-efi, grub2, gummiboot, heimdal, + iprutils, iptraf-ng, jack2, jquery-mobile, libee, libestr, + libgc, libgl, liblogging, libndp, libsoxr, libstrophe, + libubox, libuci, libxmlrpc, ljlinenoise, lpeg, lpty, lrandom, + lsqlite3, lua-coat, lua-coatpersistent, lua-csnappy, luajson, + lualogging, lua-messagepack, lua-testmore, lunit, lzip, lzlib, + musl, nftables, opentyrian, opentyrian-data, + perl-module-build, php-gnupg, php-imagick, php-ssh2, php-yaml, + php-zmq, postgresql, python-libconfig, python-pypcap, + python-pyrex, qdecoder, qhull, samba4, smack, tz, tzdump, ucl, + upx, vo-aacenc, xbmc, xbmc-addon-xvdr, xbmc-pvr-addons, + yaffs2utils, zlog, znc + + Removed packages: crosstool-ng, python-distutilscross, vala + + Issues resolved (http://bugs.uclibc.org): + + #6842: Checking external toolchain for eabihf + #6956: Packaging libsoxr + #6986: Make legal-info fails on uboot versions before 2014.01 + #6992: Incorrect installation rights on external kernel module.. + +2014.02, Released February 27th, 2014 + + Minor fixes. + + Updated/fixed packages: cegui06, cppdb, e2fsprogs, gcc, gdb, + gst1-plugins-bad, gstreamer, gstreamer1, haserl, imagemagick, + libpng, libxml2, lua, luajit, luarock, ncftp, openswan, + pcsc-lite, qt5connectivity, ramsmp, strongswan, vlc + + Issues resolved (http://bugs.uclibc.org): + + #6938: mkuser script generates wrong password for new user in.. + +2014.02-rc3, Released February 25th, 2014 + + Minor fixes. + + Updated/fixed packages: aiccu, ala-lib, alsa-utils, binutils, + cairo, coreutils, dhcpcd, distcc, efl, evas, iputils, gdb, + gpsd, gst-fsl-plugins, icu, libcec, libcgi, libplayer, + libsecret, libsepol, libsigsegv, libtool, libv4l, + linux-headers, matchbox-lib, mpg123, ncftp, opencv, pcmanfm, + pixman, pv, qt, rt-tests, sawman, sconeserver, sdl, thrift, + tvheadend, util-linux, webkit, xscreensaver + + Issues resolved (http://bugs.uclibc.org): + + #4706: Removing .stamp_target_installed does not trigger... + #5030: busybox built fails if we use an override src dir... + #5420: Dbus and /var/run management + #5768: Not able to build ALSA-Lib for static build + #5774: Not able to build ALSA-Utils for static build + #6542: external python modules fail to compile to pyc if... + #6764: Support for kernel signed modules + #6794: Busybox compiled from buildroot hangs on pass from... + +2014.02-rc2, Released February 20th, 2014 + + Fixes all over the tree. Static linking / nommu fixes and + annotations for several packages. + + Updated/fixed packages: boost, busybox, collectd, coreutils, + dropbear, elfutils, feh, gcc, gst1-libav, imagemagick, iozone, + jimtcl, kexec, libvncserver, lvm2, lxc, mplayer, netsnmp, nut, + opencv, python, python3, qtuio, systemd, thrift, transmission, + uclibc, vlc, webkit + + Issues resolved (http://bugs.uclibc.org): + + #5450: AT91SAM9260 Bootstrap compilation problem + #5582: libiconv 1.14 failed to build + #5624: When building directfb, BR2_TARGET_LDFLAGS not used by.. + #5852: [2012.11] usb_modeswitch should depends of "BR2_PACK.. + #6218: binutils-2.23.2/gas fails with undefined reference to.. + #6236: binutils-2.23.2/bfd fails with undefined reference to.. + #6470: If the build directory is a child of /usr, the build.. + #6776: systemd error: static declaration of 'execvpe' follows.. + #6818: toolchainfile.cmake has absolut path references + +2014.02-rc1, Released February 11th, 2014 + + Fixes all over the tree and new features. + + Support for external packages/defconfigs (BR2_EXTERNAL). See + user manual for details. + + Cleanup of environment variable names for consistency. The + download directory location override (BUILDROOT_DL_DIR) is now + called BR2_DL_DIR. Likewise the name of the current .config is + renamed from BUILDROOT_CONFIG to BR2_CONFIG. Please update + your post build scripts if you use this! BUILD_DIR is now also + exported to the post build/image scripts. + + Toolchain: GCC 4.8 fix for ARM stack corruption, reverted + uClibc pread/pwrite backport as they cause issues on certain + architectures, new Linaro and Sourcery Codebench toolchains. + x86: Support for AMD Jaguar cores, SSE4.x, SH: SH2/SH3/SH3EB + variants removed, Microblaze: Internal toolchain support + + Legal infrastructure: Info is now split between host and + target packages, large number of license annotations. + + Lua: selection between lua 5.1 / 5.2, luarocks support + + Python: package infrastructure, many new packages. + + Defconfigs: Armadeus APF51 + Zedboard added, apf27, apf28, + beaglebone, microblaze, pandaboard, qemu, raspberry pi + updated. + + Updated/fixed packages: aiccu, alsa-lib, alsa-utils, + am33x-cm3, aumix, autoconf, automake, barebox, bellagio, + berkeleydb, binutils, bison, blackbox, bluez_utils, boost, + bustle, busybox, cairo, can-utils, ccache, ccid, cgilua, + cifs-utils, civetweb, cmake, collectd, connman, copas, + coreutils, coxpcall, cppzmq, cramfs, crda, cryptodev-linux, + cryptsetup, cups, czmq, dhcpcd, dhcpdump, dhrystone, dialog, + dmraid, dnsmasq, dosfstools, dropbear, dropwatch, dtc, duma, + dvb-apps, e2fsprogs, eglibc, eigen, elf2flt, erlang, ethtool, + f2fs-tools, ffmpeg, file, filemq, fio, flashrom, flex, + fluxbox, fontconfig freerdp, freetype, gadgetfs-test, gawk, + gcc, gdb, gdbm, gettext, git, glibc, gnupg, gnutls, gob2, + gpsd, grep, grub, gst-ffmpeg, gst-plugins-good, + gst1-plugins-bad, gst1-plugins-base, gst1-plugins-good, + gst1-plugins-ugly, gstreamer, gstreamer1, gtest, icu, iftop, + imagemagick, inadyn, infozip, iozone, iproute2, iptables, iw, + jpeg, jpeg-turbo, jq, kexec, kmod, knock, lbase64, lcdapi, + lftp, libcdaudio, libcgi, libcgicc, libcuefile, libcurl, + libdmtx, libdrm, libdvdnav, libdvdread, libegl, libevent, + libexif, libfcgi, libfreefare, libgles, libglib2, libllcp, + libmicrohttpd, libmpd, libnfc, libnl, libnss, libopenmax, + libopenvg, libpcap, libpfm4, libplayer, libpng, libqmi, + libreplaygain, libroxml, libsamplerate, libsexy, libsigsegv, + libsndfile, libsoc, libtasn1, libtorrent, libtpl, libupnp, + libusb, libusb-compat, libvorbis, libxcb, libxml2, libxmlpp, + libyaml, lighttpd, linknx, linux-firmware, linux-pam, live555, + lm_sensors, lmbench, lockdev, logrotate, lrzsz, ltrace, lua, + lua-ev, lua-msgpack-native, luabitop, luaexpat, luaexpatutils, + luafilesystem, luajit, luaposix, luasec, luasocket, + luasql-sqlite3, m4, matchbox, mdadm, minicom, mongrel2, mpc, + mpd, mpg123, mplayer, mtd, mysql, lvm2, mxml, ncurses, ne10, + neard, neardal, netsnmp, netstat-nat, network-manager, nodejs, + numactl, ofone, ola, olsr, omniorb, open2300, opencv, + openpowerlink, openssh, openssl, openvpn, oprofile, opus, + opus-tools, orbit, p11-kit, parted, pcre, pcsc-lite, perl, + php, poco, poppler, powervr, protobuf-c, psplash, python, + python-bottle, + python-{crc16,distutilscross,dpkt,id3,ipy,m2crypto,mad,meld}, + python-{netifaces,nfc,protobuf,pygame,pyparsing,pyro,pyzmq}, + python-{serial,setuptools}, qt, qt5base, qt5connectivity, + qt5declarative, qt5graphicaleffects, qt5jsbackend, + qt5multimedia, qt5quick1, qt5quickcontrols, qt5script, + qt5webkit, radvd, redis, rings, rng-tools, rpcbind, + rpi-firmware, rpi-userland, rt-tests, sam-ba, samba, sawman, + sconeserver, scons, sdl, sg3_utils, snappy, snmppp, + socketcand, spice, spice-protocol, sqlcipher, sqlite, squid, + sshfs, strace, subversion, sunxi-mali, supervisor, sysklogd, + sysprof, sysstat, systemd, sysvinit, taglib, tar, tcpdump, + ti-gfx, ti-utils, tinymembench, tn5250, trace-cmd, + transmission, tvheadend, tzdata, zxing, uboot, uboot-tools, + uclibc, udev, udpcast, ulogd, urg, usb_modeswitch_data, + util-linux, vala, valgrind, vorbis-tools, wavpack, wayland, + weston, wget, wireless-regdb, wireshark, wpa_supplicant, + wsapi, xavante, xapp_xdpyinfo, xapp_xrandr, xcb-proto, + xdriver_xf86-video-intel, xenomai, xkeyboard-config, xl2tp, + xlib_lib{FS,SM,X11}, + xlib_libX{au,aw,composite,cursor,damage,ext,fixes,font,i}, + xlib_libX{inerama,mu,pm,randr,render,res,t,tst,v,xf86dga}, + xlib_libXxf86vm, xlib_libdmx, xlib_libfontenc, + xlib_libpciaccess, xlib_xtrans, xproto_dri2proto, + xproto_{glproto,inputproto,presentproto,randrproto,videoproto}, + xproto_xextproto, xproto_xproto, xutil_util-macros, + xutil_makedepend, zic, zmqpp, zxing, zsh, zyre + + New packages: apitrace, avrdude, c-ares, ca-certificates, + cwiid, dbus-cpp, evemu, fping, fswebcam, gpm, gst1-libav, + haveged, intel-microcode, iucode-tools, jasper, joe, ktap, + lbreakout2, libass, libbluray, libcdio, libenca, libevdev, + libmbim, libmodplug, libnfs, libnftnl, libplist, libshairplay, + libsocketcan, ljsyscall, log4cplus, ltris, luainterpreter, + luarocks, minidlna, mmc-utils, modemmanager, mtr, net-tools, + python-configobj, python-dialog, python-json-schema-validator, + python-keyring, python-msgpack, python-posix-ipc, + python-pyasn, python-pycrypto, python-pysnmp, + python-pysnmp-apps, python-pysnmp-mibs, python-pyusb, + python-simplejson, python-tornado, python-versiontools, + rtmpdump, rtptools, smcroute, smstools3, tcpreplay, thrift, + ti-uim, tinyxml, tmux, vlc, wmctrl, xconsole + + Removed packages: autoconf, automake, ccache, cpanminus, lzma, + netkitbase, netkittelnet, pkg-config, squashfs3, ttcp, xstroke + + Issues resolved (http://bugs.uclibc.org): + + #65: new package: dbus c++ language bindings + #769: Update configuration menu for MIPS target + #2419: Add a bundle of Lua modules + #2629: Segmentation faults and division by zero in Grub on ext2 + #3811: Added auto-mount for USB and SD Card (mdev) (for 2011.05) + #4339: Allow override of DL_DIR in extract step + #4363: Make sure that copied linux and busybox defconfig are... + #4454: There should be simple way to update image, when chang... + #5024: grub fails to build for x86_64 target architecture + #5066: New-Package: net-tools + #5072: ncurses: add ncurses-progs to target + #5294: uclibc build ignores target CFLAGS and LDFLAGS + #5366: Login doesn't work with util-linux versions of login/agetty + #5378: dropbear Makefile broken + #5390: System banner - change to empty doesn't remove /etc/issue + #5780: spurious build failure because it cannot remove ubinize.cfg + #5798: ncurses-5.9 fails to compile statically + #5810: Buildroot 2012.11: Additional GCC option "-msoft-float" ... + #6080: Git fetch caching + #6092: Bootable ISO image creation seems to have stopped working.. + #6272: coreutils build fails + #6434: apply-patches.sh does not work recursively + #6446: eglibc doesn't install ldconfig to target + #6484: Add c-ares + #6596: Slow bootup if mdev is chosen + #6656: Build Qt5 with ccache + #6662: internal compiler error: Segmentation fault during making.. + #6722: Usage of $($(PKG)_DIR_PREFIX) is an issue with linux package + #6752: genext2fs: e2fsck must run before tunefs -U random + #6770: openssl 1.0.1f fails with ccache + #6830: Qt5: no fonts are installed + #6848: Qt5: no text shown in simple QWidget / frame-buffer setup + #6854: Update to Qt 5.2.1 + +2013.11, Released November 30th, 2013: + + Minor fixes. + + Updated/fixed packages: apr, binutils, dbus-python, dropwatch, + ecryptfs-utils, eglibc, gdb, gpsd, grantlee, hostapd, + iptables, qlibiscsi, libnspr, libnss, libpfm4, libtool, + lua-ev, lvm2, mplayer, qt, qt5, quagga, ruby, tinymembench, + tvheadend, util-linux, wpa_supplicant + + Issues resolved (http://bugs.uclibc.org): + + #1279: Buildroot compiled Busybox and Coreutils LFS issues + #2995: -fstack-protector-all causes ssh to SIGSEGV + #5570: Cannot compile software on the target machine + #6428: util-linux libmount segfaults with patch from buildroot + #6500: php fails to build for armel + #6554: gdb needs to dependents on host texinfo + #6692: GNU nano fails to compile for x86_64 + #6704: wpa_supplicant: fix wrong path to executable file in D-Bus + +2013.11-rc3, Released November 26th, 2013 + + Fixes all over the tree. + + Architecture: Mark MIPS I, II, III and IV as deprecated. + + Updated/fixed packages: beecrypt, dbus, e2fsprogs, libcap-ng, + libglib2, libroxml, libsigsegv, libvncserver, lxc, mdadm, + mongoose, nut, ola, omniorb, openssl, pcre, php, poco, + protobuf-c, pv, qt5base, ruby, schifra, squid, sunxi-mail, + swig, ti-gfx, tinymembench, uclibc, udisks, vim + +2013.11-rc2, Released November 18th, 2013 + + Fixes all over the tree. + + Defconfigs: qemu_arm_versatile, qemu_arm_nuri, sheevaplug: + Adjust kernel versions. + + Toolchain: avr32: fix for modern kernel headers + + Bootloader: Barebox updated to 2013.10.1 + + Updated/fixed packages: dhcp, e2fsprogs, gst1-plugins-bad, + libcurl, libvncserver, nano, pc, qt5base, squashfs, ttcp, + wayland, wvstreams + + Issues resolved (http://bugs.uclibc.org): + + #3601: DHCPD S80dhcp-server startup script issues + #6320: Fix kernel compile issue if BR2_LINUX_KERNEL_CUSTOM_GIT_VERS.. + #6416: Xenomai package, patch alternative + #6590: directfb-examples build failed whit linaro toolchain + +2013.11-rc1, Released November 12th, 2013 + + Architectures: Nios-II support, MIPS arch handling fixes + + Defconfigs: cubieboard2, freescale i.MX 6sololite evk, + sabre-sd, wandboard added, rpi renamed to raspberrypi_defconfig + + Toolchain: glibc support, upstream uClibc fixes, uClibc 0.9.31 + for avr32, crosstool-ng backend removed, external musl + toolchain support, gcc 4.8.2, updated Linaro external + toolchains. Fortran and objective-C support deprecated, + mudflap support + + Bootloaders: U-Boot: u-boot.imx support, version bumps + + Linux: use kmod instead of module-init-tools + + System: default to devtmpfs for /dev + + Infrastructure: Make 3.82 fixes, locales generation fixes, CVS + download support, post-rsync hooks + + Fs: u-boot image support for cpio + + Updated/fixed packages: aircrack-ng, alsamixergui, apr, + apr-util, atk, automake, bellagio, berkeleydb, bind, binutils, + bison, boost, busybox, can-utils, ccache, ccid, cgilua, + chrony, cifs-utils, cjson, collectd, connman, conntrack-tools, + copas, cppcms, cppzmq, czmq, dash, dbus, dhcpcd, diffutils, + directfb, dmidecode, dnsmaqs, docker, dosfstools, dropbear, + dropwatch, ebtables, eglibc, elf2flt, empty, enchant, erlang, + ethtool, fbgrab, fbv, fdk-aac, feh, ffmpeg, file, findutils, + fltk, fmtools, freetype, gdk-pixbuf, gettext, git, + glib-networking, gmp, gnupg, gnutls, gpu-viv-bin-mx6q, gsl, + gstreamer, gstreamer1, gst1-plugins-{bad,base,good,ugly}, + gtest, gutenprint, hplip, i2c-tools, icu, ifplugd, + imagemagick, iozone, iproute2, ipset, iptables, iw, jamvm, + jansson, jpeg-turbo, kismet, kmod, lcms2, libassuan, libcap, + libcap-ng, libcdaudio, libcec, libcue, libcurl, libdrm, + libedit, libevas, libevent, libfreefare, libfuse, + libgpg-error, libiconv, liblog4c-localtime, libmicrohttpd, + libmnl, libmodbus, + libnetfilter_{acct,conntrack,cthelper,cttimeout,log,queue}, + libnfnetlink, libnl, libpng, libqmi, libqrencode, libroxml, + libsecret, libsigsegv, libsoup, libtirpc, libunwind, libusb, + libvpx, lighttpd, linphone, linux-pam, lmbench, + lockfile-progs, log4cxx, logrotate, logsurfer, ltp-testsuite, + ltrace, luacrypto, luaposix, lvm2, m4, matchbox-lib, + media-ctl, mediastreamer, minicom, minidlna, mongoose, monit, + mpc, mpd, mpg123, mplayer, mrouted, mtdev, mutt, mysql_client, + nano, ncftp, ndisc6, neard, neardal, neon, net-snmp, netatalk, + netcat, netkitbase, netperf, netplug, nettle, nfacct, + nfs-utils, ngircd, ngrep, noip, nuttcp, olsr, openssh, opkg, + oprofile, opus-tools, orc, ortp, pciutils, pcre, pcsc-lite, + perf, perl, perl-cross, php, picocom, pkgconf, polarssl, + poppler, pppd, proftpd, protobuf, proxychains-ng, pulseaudio, + pv, qemu, qt, qt5base, qt5webkit, quagga, radvd, redis, + rpi-{firmware,userland}, rrdtool, rsync, rtorrent, ruby, + samba, scons, screen, sdl_sound, ser2net, setserial, + smartmontools, socat, socketcand, sqlcipher, sqlite, squid, + stress, strongswan, stunnel, sudo, syslinux, systemd, + sysvinit, tcl, ti-gfx, time, transmission, tremor, tslib, + tstools, tvheadend, tzdata, uboot-tools, uclibc, udpcast, + uemacs, ulogd, usb_modeswitch{,_data}, util-linux, vala, + valgrind, vde2, vorbus-tools, vpnc, vsftpd, vtun, wayland, + webkit, webp, webrtc-audio-processing, weston, wget, + wireshark, wsapi, xavante, xdriver_xf86-video-geode, xenomai, + xinetd, xlib_libpthread-stubs, xl2tp, xmlstarlet, + xserver_xorg-server, xz, zeromq, zic, zmqpp + + New packages: aiccu, autossh, bc, civetweb, cppdb, cryptsetup, + duma, eigen, harfbuzz, igmpproxy, iputils, jq, knock, kobs-ng, + lesstif, libcgroup, libsepol, libsoc, libssh2, luasec, luasql, + lxc, nut, ola, omniorb, openpowerlink, orbit, p910nd, psplash, + python-crc16, python-ipy, python-pyzmq, qt5sensors, + qt5serialport, qt5x11extras, snmppp, subversion, tcping, + trace-cmd, xscreensaver, zsh + + Removed packages: module-init-tools + + Issues resolved (http://bugs.uclibc.org): + + #1138: Buildroot fails to build packages if BR2_GCC_SHARED_LIBGCC=y + #5408: qt build failure with Sourcery CodeBench ARM 2010.09 + #5630: makefile error with toolchain helpers.mk + #5672: htop: remove X11 stuff + #5678: linux.mk: linux-menuconfig fails + #5696: python3 installation is too large, patches from python2 needed + #5978: Erlang does not build for arm in 2013.02-rc3 + #6392: Extended ARM uImage kernel options + #6404: Buildroot's coreutils 'uname -p' reports 'Unknown' on recent.. + #6428: util-linux libmount segfaults with patch from buildroot + #6452: eglibc from Linaro 2013.07 not copied to target correctly + #6566: PHP segfault when crosscompiled to mips64 - patch included + #6572: [PowerPC] Buildroot uses wrong external toolchain libraries.. + #6578: udisks package broken + #6602: ebtables 64 bit kernel + 32 bit userland alignment error.. + #6608: ebtables missing ethertypes - fix included + #6620: Sysvinit package missing killall5 and symlinks - patch included + #6632: CMake use host pkg-config + #6638: pkgconf doesn't download + #6644: "all" target doesn't work in out-of-tree builds + #6650: Segmentation fault when trying to build latest buildroot + #6668: iptables limit module alignment problem on mips64 + +2013.08, Released August 31th, 2013: + + Minor fixes. + + Documentation build fixed. + + Updated/fixed packages: ltrace, strongswan + +2013.08-rc3, Released August 29th, 2013: + + Fixes all over the tree. + + External toolchain lib32/lib64 handling, ABI name for EABIhf, + misc fixes for generatelocales, apply-patches and module + stripping. + + Top level menu names reordered and renamed for clarity. + + Updated/fixed packages: acl, attr, bash, dbus, directfb, + dvb-apps, kexec, kmod, libbsd, linux-fusion, mesa3d, minidlna, + openssh, openssl, pulseaudio, python-setuptools, qt5, + qt5webkit, redis, strongswan, sunxi-mali + + Issues resolved (http://bugs.uclibc.org): + + #6464: dbus-daemon-launch-helper needs setuid + +2013.08-rc2, Released August 16th 2013: + + Documentation improvements. + + External toolchains fixes. + + Updated/fixed packages: aircrack-ng, bash, boost, cairo, + cppcms, eglibc, ffmpeg, gcc, git, gnupg, imagemagick, libcec, + libffi, libgcrypt, linux, linux-headers, ltrace, netatalk, + opencv, opengl, readline, samba, strongswan, sunxi-cedarx, + uclibc, udev, wayland, webkit, zeromq. + + Issues resolved (http://bugs.uclibc.org): + + #6440: typo in ffmpeg makefile + +2013.08-rc1, Released August 5th, 2013: + + Architectures: + - improved support for floating point on ARM and Thumb/Thumb2 + - support for ARM OABI removed + + Toolchains: + - support added for Sourcery CodeBench ARM and MIPS 2013.05 + - Linaro ARM and Aarch64 toolchains updated + - support added for the Arago ARMv5 and ARMv7 toolchains + - gcc 4.8.x version bumped + - support for installing both FDPIC and FLAT libraries on + Blackfin + - support for uClibc 0.9.31 removed, + - convert the internal toolchain backend to use the package + infrastructure + - support added for eglibc in the internal toolchain backend + - toolchain components for the ARC architecture updated and + gdb for ARC added. + - support for Blackfin in the internal toolchain fixed + + Defconfigs: beaglebone_defconfig updated, new defconfig for + CubieBoard, for Olimex mx233 Olinuxino, for Calao Systems + TNY-A9G20-LPW. + + A number of packages have been fixed to use the + _CONFIG_SCRIPTS mechanism to get their -config shell + script installed and modified properly. Licensing informations + has been added to a number of packages. + + Use XZ tarballs for a number of packages. + + Noticeable package changes/additions: + - The glib2/libgtk2/webkit stack has been updated to recent + versions. + - Support for Gstreamer 1.x has been added. + - OpenGL support for TI OMAP platforms has been added. + - OpenGL support for Allwinner platforms has been added. + - OpenMAX support for RasberryPi has been added. + + Updated/fixed packages: acl, attr, autoconf, avahi, barebox, + bind, binutils, busybox, bwm-ng, bzip2, cifs-utils, colletctd, + cpanminus, cups, curl, dash, dbus, dhcp, directfb, + directfb-examples, dnsmasq, dosfstools, dropbear, dtc, + e2fsprogs, ed, efl, enlightenment, erlang, ethtool, fbgrab, + fftw, firmware-imx, flot, fltk, freetype, gawk, gdk-pixbuf, + gettext, gmp, gnutls, gsl, gutenprint, gvfs, gzip, haserl, + hiawatha, httping, icu, imagemagick, imlib2, imx-lib, + intltool, iozone, ipset, iptables, jquery, jquery-keyboard, + jquery-sparkline, kmod, less, libart, libcdaudio, libcgicc, + libesmtp, libftdi, libfuse, libglib2, libgtk, libgtk2, libidn, + libiqrf, liblog4c-localtime, libnspr, libnss, libpcap, + libroxml, libserial, libsigsev, libsoup, libtool, libtpl, + libvncserver, libxml2, linphone, lm_sensors, logrotate, + ltrace, lttng, luafilesystem, luajit, minicom, monit, mpg123, + mtd, mutt, mxml, neard, netatask, netsnmp, nettle, + network-manager, nodejs, nss-mdns, openssh, openswan, openvpn, + opkg, opus, pcre, perl-cross, php, pixman, poco, polarssl, + pulseaudio, pv, python, python3, qt, qt5, qt5declarative, + qt5jsbackend, qt5quick1, readline, rpi-firmware, ruby, samba, + sane-backends, sconeserver, sdl_image, sdparm, ser2net, + socketcand, sqlite, squid, strace, tcl, tcpdump, tinyhttpd, + tvheadend, tzdata, uboot, udpcast, usb_modeswitch, + usb_modeswitch_data, usbutils, webkit, wireshark, wvstreams, + xapp_luit, xapp_xmodmap, xenomai, xfsprogs, xlib_libX11, zic, + zlib. + + New packages: a10disp, aespipe, am33x-cm3, cppcms, dhcpcd, + dropwatch, dtc, ecryptfs-utils, eglibc, elf2flt, fdk-aac, + gcc-final, gcc-initial, gcc-intermediate, git, + gpu-viv-bin-mx6q, gst1-plugins-bad, gst1-plugins-base, + gst1-plugins-good, gst1-plugins-ugly, gst-omx, + gst-plugin-x170, gstreamer1, jimtcl, lbase64, libassuan, + libbsd, libcec, libdvbsi, libedit, libgpgme, libqmi, + libqrencode, libsvg, libsvg-cairo, libunwind, libvpx, + linux-headers, lockdev, luabitop, luacrypto, lua-ev, + luaexpatutils, msgpack, ocrad, on2-8170-libs, + on2-8170-modules, p11-kit, pax-utils, ptpd, ptpd2, + python-pyro, ramspeed/smp, snappy, strongswan, sunxi-boards, + sunxi-cedarx, sunxi-mali, sunxi-tools, ti-gfx, tinymembench, + tree, tstools, uclibc, w_scan. + + Issues resolved (http://bugs.uclibc.org): + + #4718: python (built for powerpc) distutils has paths to host + compiler toolchain + #5516: appended device tree blobs on uImage fails + #6302: Versions of packages retrieved from github.com are wrong + #6308: dosfstools download link is wrong + #6326: Dropbear: Add options to allow better config for + different target devices (e.g. routers) + #6338: Wrong download link for minicom package + #6344: Wrong handling of license text files with same name and + different directory + #6374: gnutls package broken if linux cryptodev module + selected + #6410: omap3_beagle has uimage error load address error + +2013.05, Released May 31th, 2013: + + Minor fixes. + + External toolchain wrapper fix for if host/usr/bin is placed + in the patch. + + Updated/fixed packages: acpid, at91bootstrap, czmq, elf2flt, + flex, jamvm, kmod, libplayer, libtirpc, libv4, + lttng-babeltrace, opengl, qt5jsbackend, udpcast, wvstreams + + Issues resolved (http://bugs.uclibc.org): + + #4868: Buildroot compile failure for toolchain/gdb-7.4/intl/reloc... + #4988: flex and m4 problems + #5912: obsolete CVS files + +2013.05-rc3, Released May 25th, 2013: + + Minor fixes. + + Updated/fixed packages: aircrack-ng, bellagio, boost, crda, + dvb-apps, flot, libatomic_ops, libeXosip2, libosip2, libxml2, + mongrel2, poco, portaudio, pptp-linux, tvheadend, urg, weston, + wireshark + +2013.05-rc2, Released May 15th, 2013: + + Fixes all over the tree. + + Default number of parallel jobs is now number of CPUs + 1. + + Defconfigs: Add Telit EVK-PRO3, AT91SAM9260-EK Nand flash. + + Updated/fixed packages: aircrack-ng, busybox, cairo, + classpath, curlftpfs, czmq, dbus, f2fs-tools, fan-ctrl, + filemq, gst-plugin-bad, gutenprint, hplip, json-c, + libatomic_ops, libcurl, libdrm, libglib2, libnspr, libnss, + libsha1, libsigsegv, libxcb, linknx, linux-pam, lttng-modules, + lttng-tools, matchbox-lib, mcookie, mesa3d, neon, pixman, + pulseaudio, python-nfc, qt5imageformats, quota, openssl, + sconeserver, strace, sylpheed, wvstreams, + xapp_{appres,bdftopcf,beforelight,bitmap,edires,fonttosfnt}, + xapp_{fslsfonts,fstobdf,iceauth,ico,listres,luit,mkfontdir}, + xapp_{mkfontscale,oclock,rgb,rstart,scripts,sessreg,setxkbmap}, + xapp_{showfont,smproxy,twm,viewres,x11perf,xauth,xbacklight}, + xapp_x{biff,calc,clipboard,clock,cmsdb,cursorgen,dbedizzy,ditview}, + xapp_x{dm,dpyinfo,driinfo,edit,ev,eyes,f86dga,fd,fontsel,fs,fsinfo}, + xapp_x{gamma,gc,host,input-calibrator,input,kbcomp,kbevd,kbprint}, + xapp_x{kbutils,kill,load,logo,lsatoms,lsclients,lsfonts,mag,man}, + xapp_x{message,mh,modmap,more,pr,prop,randr,rdb,refresh,set,setmode}, + xapp_x{setpointer,setroot,sm,stdcmap,vidtune,vinfo,wd,wininfo,wud}, + xcb-util, xcursor-transparent-theme, xdata_xbitmaps, + xdata_xcursor-themes, + xdriver_xf86-input-{evdev,joystick,keyboard,mouse,synaptics}, + xdriver_xf86-input-{tslib,vmmouse,void}, + xdriver_xf86-video-{ark,ast,ati,cirrus,dummy,fbdev,geode,glide}, + xdriver_xf86-video-{glint,i128,intel,mach64,mga,neomagic,newport}, + xdriver_xf86-video-{nv,openchrome,r128,savage,siliconmotion,sis}, + xdriver_xf86-video-{tdfx,tga,trident,v4l,vesa,vmware,voodoo,wsfb}, + xfont_encodings, xfont_font-adobe-{100,75}dpi, + xfont_font-utopia-{100dpi,75dpi,type1}, + xfont_font-{alias,arabic-misc,bh-100dpi,bh-75dpi}, + xfont_font-bh-lucidatypewriter-{100,75}dpi, xfont_font-bh-{ttf,type1}, + xfont_font-bitstream-{100dpi,75dpi,type1}, xfont_font-cronyx-cyrillic, + xfont_font-{cursor,daewoo,dec,isas,jis,micro}-misc, + xfont_font-ibm-type1, xfont_font-misc-{cyrillic,ethiopic,meltho,misc}, + xfont_font-{mutt,schumacher}-misc, + xfont_font-{screen-cyrillic,sony-misc,sun-misc,util}, + xfont_font-winitzki-cyrillic, xfont_font-xfree86-type1, + xlib_lib{FS,ICE,SM,X11,XScrnSaver,Xau,Xaw,Xcomposite,Xcursor}, + xlib_libX{damage,dmcp,ext,fixes,font,ft,i,inerama,mu,pm,randr}, + xlib_libX{render,res,t,tst,v,vMC,xf86dga,xf86vm}, + xlib_lib{dmx,fontenc,pciaccess,pthread-stubs,xkbfile}, xlib_xtrans, + xproto_{applewm,bigreqs,composite,damage,dmx,dri2,fixes}proto, + xproto_{fontcache,font,gl,input,kb,randr,record,render}proto, + xproto_{resource,scrnsaver,video,windowswm,xcmisc,xext}proto, + xproto_{xf86bigfont,xf86dga,xf86dri,xf86vidmode,xinerama,x}proto, + xserver_xorg-server, xutil_{makedepend,util-macros} + + Readded Packages: xapp_xinit + + Issues resolved (http://bugs.uclibc.org): + + #5054: amd64: cannot find init - due to missing /lib64 folder + +2013.05-rc1, Released May 8th, 2013: + + Architectures: ARC support, Blackfin support, FLAT binary + format, ARM: Drop old CPU variants, add fa526/626, Marvell PJ4 + + Toolchains: Add new Microblaze external toolchains, Linaro + ARM/Aarch64 updates, GCC 4.6.4 / 4.7.3 / 4.8.0 added to + internal toolchain, default to GCC 4.7.x. Internal + Crosstool-ng backend deprecated. + + Defconfigs: Add Atmel at91sam9g45m10ek, freescale mpc8315erdb + & p1010rdb, Armadeus apf27 / apf28, Openblocks A6, Raspberry + pi, gnublin board. + + FS: LZO and XZ compression methods, extra ubifs options, + ext2 rev 0/1 and ext3/4 support. + + Patch handling: apply-patches now has .patch.xz support, + Patch logic reworked as discussed during Febrary dev days: + http://elinux.org/Buildroot:DeveloperDaysFOSDEM2013 + + -rsync now excludes version control files. + + linux: uImage load address for ARM multiplatform kernels + + Infrastructure for multiple OpenGL / ES / EGL / OpenVG + providers, similar to how libjpeg / libjpeg-turbo is handled. + + Infrastructure for packages to add system users. + + kconfig: updated to 3.9-rc2, support make olddefconfig + + Updated/fixed packages: alsa-lib, alsa-utils, apr, apr-util, + argp-standalone, at, at91bootstrap, audiofile, aumix, avahi, + bash, blackbox, bind, binutils, bison, boost, bridge-utils, + busybox, ccache, cifs-utils, cmake, collectd, connman, + conntrack-tools, cpanminus, crosstool-ng, diffutils, directfb, + directfb-examples, divine, dmalloc, dnsmasq, dosfstools, + dropbear, e2fsprogs, ebtables, eeprog, erlang, ethtool, + fb-test-app, fbset, feh, ffmpeg, file, flex, flot, foomatic, + fxload, gd, gdb, gdisk, genimage, gettext, gmp, gnuchess, + gnutls, gob2, gperf, gpsd, gstreamer, haserl, hiawatha, htop, + httping, icu, inotify-tools, intltool, iproute2, ipset, + iptables, iw, jpeg, jquery, jquery-{sparkline,validation}, + json-c, kbd, kexec, kismet, kmod, lcdproc, libarchive, + libatasmart, libcap, libconfig, libconfuse, libcurl, libdrm, + libeet, libev, libevas, libeXosip2, libffi, libfribi, libfuse, + libgcrypt, libglib2, libgtk2, libid3tag, libmicrohttpd, + libnetfilter_acct, libnetfilter_conntrack, libnl, libpcap, + libplayer, libsigc, libv4l, libxcb, linenoise, linux-pam, + lm_sensors, ltp-testsuite, luajit, lzop, madplay, make, mdadm, + mediastreamer, memtester, mesa3d, + mobile-broadband-provider-info, monit, mpd, mpfr, mpg123, + mrouted, msmtp, nbd, ncurses, ndisc6, neard, neardal, neon, + netperf, netsnmp, nettle, nfacct, ntfs-3g, ofono, olsr, + omap-u-boot-utils, openssh, openssl, openswan, openvpn, + oprofile, orc, patch, pciutils, pcre, perl, php, poco, + polarssl, proftpd, psmisc, pulseaudio, python, + python-{bottle,netifaces,serial,setuptools}, qt, quagga, + quota, radvd, rpi-firmware, rpi-userland, rt-tests, sam-ba, + samba, sawman, sdl, ser2net, smartmontools, socat, socketcand, + speex, squid, stress, stunnel, sudo, syslinux, sysstat, + sysvinit, tcl, tcprelay, tinyhttpd, tslib, tvheadend, + uboot-tools, udev, ulogd, util-linux, vala, vtun, webkit, + xapp_{iceauth,luit,makefontscale,sessreg,setxkbmap,smproxy}, + xapp_{xauth,xcmsdb,xdpyinfo,xev,xgamma,xhost,xinput,xkbcomp}, + xapp_{xkbevd,xlsatoms,xlsclients,xmodmap,xpr,xprop,xrandr,xrdb}, + xapp_{xset,xwd,xwininfo}, xcb-{proto,util}, + xdriver_xf86-input-{evdev,joystick,keyboard,mouse,synptics}, + xdriver_xf86-input-{tslib,vmmouse,void}, + xdriver_xf86-video-{ark,ast,ati,cirrus,dummy,geode,glide,glint}, + xdriver_xf86-video-{i128,intel,mach64,mga,neomagic,newport}, + xdriver_xf86-video-{openchrome,r128,savage,siliconmotion,sis}, + xdriver_xf86-video-{tdfx,trident,vesa,vmware,wsfb}, xenomai, + xfont, xinetd, xkeyboard-config, xlib_lib{FS,ICE,SM,X11}, + xlib_libX{scrnSaver,au,aw,cursor,dmcp,ext,fixes,font,ft,i}, + xlib_libX{inerama,mu,pm,randr,res,tst,v,vMC,xf86dga,xf86vm}, + xlib_lib{dmx,fontenc,pciaccess,xkbfile}, xlib_xtrans, + xproto_{applevm,bigreqs,dri2,fonts,gl,input,kbd,record}proto, + xproto_{resource,scrnsaver,xcmisc,xext,x}proto, + xserver_xorg-server, xutil_makedepend, xz, zeromq + + New packages: aircrack-ng, bcusdk, chrony, crda, + cryptodev-linux, cppzmq, czmq, dtach, enscript, exfat, + exfat-utils, f2fs-tools, fan-ctrl, filemq, foomatic-filters, + genimage, genpart, glibmm, gnuplot, gtest, gutenprint, hplip, + iozone, jansson, jhead, jquery-keyboard, jquery-ui, + jquery-ui-themes, json-glib, json-javascript, lcms2, libpfm4, + libpthsem, libserial, libsigsegv, libtasn1, libwebsockets, + libxkbcommon, libxml++, linknx, log4cxx, mongoose, mongrel2, + mtools, ne10, nmap, nodejs, openobex, openpgm, poppler, + protobuf-c, python-m2crypto, python-thrift, qjson, qt5base, + qt5declarative, qt5graphicaleffects, qt5imageformats, + qt5jsbackend, qt5multimedia, qt5quick1, qt5script, qt5svg, + qt5webkit qt5xmlpatterns, rapidjson, redis, swig, texinfo, + tzdata, urg, ussp-push, wayland, webp, weston, wireless-regdb, + wireshark, wvdial, wvstreams, xcb-util-image, xcb-util-wm, + xcursor-transparent-theme, zic, zmqpp, zyre + + Removed packages: microperl, ocf-linux, xapp_xinit, + xapp_xplsprinters, xapp_xprehashprinterlist, + xfont_font-bitstream-speedo, + xlib_lib{Xfontcache,XprintAppUtil,XprintUtil,Xp,oldX,xkbui}, + xproto_{print,xf86rush}proto + + Deprecated packages: vala + + Issues resolved (http://bugs.uclibc.org): + + #1291: Add support for Faraday 526 arm processor (fa526) + #2683: cups does not install correctly to target + #3313: mesa3d fails to build + #5186: initramfs/cpio should support lzo compression + #5636: agetty - cannot get controlling tty error - need updated... + #5906: collectd client headers not exported + #5966: bison unnecessarily required as build dependency + #6140: --enable-fileinfo not applied for php package + #6164: openvpn usage of ip tool from Busybox + +2013.02, Released February 28th, 2013: + + Misc manual updates. + + Updated/fixed packages: busybox, collectd, flashbench, + libgtk2, libupnp, mii-diag, quota + +2013.02-rc3, Released February 26th, 2013 + + Minor fixes. + + Updated/fixed packages: conntrack-tools, dialog, + enlightenment, haserl, keyutils, libfif, libmad, + linux-firmware, linux-fusion, matchbox-desktop, matchbox-wm, + ruby, spawn-fcgi, vtun + + Issues resolved (http://bugs.uclibc.org): + + #5960: fusion.ko driver does not install to target rootfs + +2013.02-rc2, Released February 19th, 2013 + + Fixes all over the tree. + + Various manual updates and fixes. + + Updated/fixed packages: busybox, collectd, gesftpserver, + glib-networking, gnutls, inotify-tools, libcurl, libffi, + libglib2, libtorrent, libvorbis, neard, network-manager, + ntfs-3g, openssl, qt, rpi-userland, rtorrent, thttpd, vim. + + Issues resolved (http://bugs.uclibc.org): + + #5906: collectd client headers not exported + +2013.02-rc1, Released February 10th, 2013 + + Toolchain: Crosstool-ng 1.17.0, default to GCC 4.6.3, target + libraries install fixed. Add Linaro ARM + 2012.11/2012.12/2013.01, AArch64 12.11/12.12/13.01. Sourcery + CodeBench MIPS 2012.03/09. Infrastructure to warn about + missing 32bit support for binary toolchains. Toolchain wrapper + is now relocatable. Add GDB 7.5.1 / Remove 6.8 / 7.0 / + 7.1. Deprecate uClibc 0.9.31. + + Architecture: Xtensa fixes, add missing powerpc variants, arm + 1136jf-s rev1, add A5/A15, neon support toggle, OABI + deprecated. Sparc: drop old unused variants + + Bootloaders: At91bootstap: fix upstream URL, Barebox: add + 2012.12/2013.01/2013.02, remove 2012.08/09/10, lzop fixes, + environment image support, U-Boot: add 2013.01.01 + + Linux: fix appended dtb handling for v3.8+ kernels, support + multiple device trees + + Defconfigs: calao USB-A9260, snowball, QEMU PPC440 on ML507 + board, QEMU ARM Exynos4210, Kernel version in QEMU defconfigs + updated, at91rm9200df: misc fixes. Lock kernel headers to + match kernel. + + Infrastructure: Git download fixes. Toolchain make target + renamed from 'cross' to 'toolchain'. Eclipse integration + support. Option to set root password, post image scripts, + config scripts handling. + + Updated/fixed packages: alsa-lib, argp-standalone, argus, + arptables, atk, audiofile, axel, beecrypt, bind, bison, + bluez_utils, boost, cairo, can-utils, bmon, boa, busybox, + cairo, ccache, cdrkit, cifs-utils, cjson, cmake, collectd, + connman, coreutils, cpanminus, cups, dbus, dhcp, dialog, + diffutils, directfb, distcc, divine, dnsmasq, docker, + dosfstools, dstat, e2fsprogs, ebtables, ed, empty, ethtool, + expedite, fbset, fbv, ffmpeg, flex, fltk, fluxbox, freetype, + gadget-test, gawk, gdb, genext2fs, gettext, giblib, + glib-networking, gmp, gmpc, gnupg, gnutls, gpsd, + gst-plugins-{bad,base,good}, gstreamer, gzip, haserl, hdparm, + heirloom-mailx, hiawanta, hostapd, icu, imagemagick, imlib2, + inadyn, infozip, iproute2, ipset, iptables, iw, jpeg, jquery, + jquery-sparklines, jqeury-validation, kismet, kmod, lame, + libao, libcap, libcurl, libdvdnav, libdvdread, libecore, + libedbus, libedje, libeet, libefreet, libeina, libeio, + liberation, libelementary, libembryo, libethumb, libev, + libevas, libffi, libfribidi, libfuse, libgcrypt, libglib2, + libgpg-error, libgtk2, libhid, libidn, libmicrohttpd, libmpd, + libnl, libnspr, libnss, libogg, libpcap, libplayer, libpng, + libroxml, librsvg, libseccomp, libsigc, libsndfile, libungif, + libupnp, liburcu, libusb-compat, libvncserver, libvorbis, + libxml2, libxslt, lighttpd, links, linux-firmware, + linux-fusion, ltp-testsuite, ltrace, + lttng-{babel,libust,modules,tools}, lvm2, lua, luajit, lzop, + matchbox-{desktop,lib}, mdadm, metacity, midori, minicom, mpd, + mpfr, mplayer, mtd, mysql_client, ncurses, neon, netatalk, + networkmanager, nspr, ntfs-3g, nuttcp, ofone, olsr, openssl, + openvpn, opkg, oprofile, opus, opus-tools, orc, ortp, pango, + pciutils, pcmanfm, pcre, pcsc-lite, perl, php, pixman, + pkgconf, polarssl, pptp-linux, proxychains, pulseaudio, + python, python3, qemu, qextserialport, qt, quagga, radvd, + readline, rng-tools, rt-tests, rubix, ruby, sam-ba, samba, + sane-backends, sconeserver, scons, screen, sdl, sdl_gfx, + sdl_mixer, sdl_ttf, sdparm, sed, ser2net, smartmontools, + speex, sqlite, squid, sshfs, strace, sudo, sylpheed, tn5250, + taglib, tar, torsmo, transmission, tslib, uboot-tools, ulogd, + usb_modeswitch, util-linux, valgrind, vim, vsftpd, wavpack, + webkit, wipe, wireless_tools, wpa_supplicant, xapp_xinit, + xapp_xinput-calibrator, xapp_xman, xapp_xmh, xlib_libX11, + xlib_libXdmcp, xlib_libXft, xlib_libpthread-stubs, + xlib_xtrans, xproto_xcmiscproto, xproto_xextproto, + xserver_xorg-server, xstroke, xvkbd, xz + + New packages: b43-firmware, b43-fwcutter, bustle, + cache-calibrator, cegui06, celt051, classpath, curlftpfs, + dvb-apps, dvbsnoop, elfutils, enlightenment, firmware-imx, + flashbench, gd, gesftpserver, gst-fsl-plugins, httping, iftop, + imx-lib, jamvm, jpeg-turbo, keyutils, libatasmart, libcofi, + libebml, libevas-generic-loaders, libfslcodec, libfslparser, + libfslvpuwrap, libgsasl, libiscsi, libmatroska, libmcrypt, + libmhash, libqwt, libseccomp, libsha1, linenoise, mcrypt, + media-ctl, ncdu, neard, neardal, nettle, perf, polkit, + proxychains, python-bottle, python-pyparsing, rpi-firmware, + rpi-userland, sg3_utils, slirp, snowball-hdmiservice, spice, + spice-protocol, tcllib, tvheadend, udisks, usbredir + ux500-firmware, vde2, xcb-utils-keysyms, yavta, + zd1211-firmware + + Removed packages: customize, xdriver_xf86-input-{acecad,aiptek}, + xdriver_xf86-video-{apm,chips,i740,rendition,s3,s3virge,sisusb}, + xdriver_xf86-video-sun{cg14,cg3,cg6,ffb,leo,tcx}, + xdriver_xf86-video-{tsend,xgi,xgixp} + + Deprecated packages: xstroke + + Issues resolved (http://bugs.uclibc.org): + + #4237: building shared openssl w/-Os fails due to gcc bug + #5690: python3 does not obey to BR2_PACKAGE_PYTHON3_PYC_ONLY=y + #5602: python3 should install a "python" symbolic link + #5846: Extra slash added to last slash in URL + +2012.11.1, Released January 3rd, 2013: + + Toolchain: Fixed non-largefile builds on recent Ubuntu + versions. + + Arch: fix missing x86/generic handling, Build for Xtensa with + longcalls option. + + Updated/fixed packages: dosfstools, qt + +2012.11, Released December 2nd, 2012: + + Git shallow clone fix for older git version. + + Updated/fixed packages: ctuio, libtool + + Issues resolved (http://bugs.uclibc.org): + + #5726: List all the available hook points + +2012.11-rc2, Released November 30th, 2012: + + Minor fixes around the tree. + + Various manual updates and fixes. + + Add checks for legacy features. + + Updated/fixed packages: acpid, alsa-lib, arptables, binutils, + busybox, ccache, cjson, cramfs, directfb, flex, fluxbox, gdb, + hiawatha, igh-ethercat, imagemagick, imlib2, lcdproc, + libdaemon, libecore, libhid, libmad, libpcap, libsigc, libusb, + linux-fusion, matchbox, ocf-linux, owl-linux, python, rrdtool, + scons, strace, sylpheed + + Issues resolved (http://bugs.uclibc.org): + + #5732: Error : package/alsa-lib/alsa-lib.mk + +2012.11-rc1, Released November 17th, 2012 + + Fixes all over the tree and new features. + + Defconfigs: use u-boot 2012.10 on at91 and beaglebone, + sheevaplug + qemu: bump kernel version, add qemu-mips64-malta + + nitrogen6x defconfigs. + + Bootloaders: add u-boot 2012.07/10, ais target format, add + barebox 2012.08/09/10/11, linker overlap issue fix for + at91bootstrap, mxs-bootlets updated for new Barebox versions. + + Toolchains: binutils 2.23.1, gcc 4.7.2, default to gcc 4.6.x, + Codebench arm/sh/x86 2012.03/09, Linaro 2012.08/09/10. + Libtirpc support for modern glibc variants. Toolchain on + target has been deprecated. + + Initial Aarch64 support, Xtensa support re-added. + + Infrastructure: Use shallow git clone when possible, use + tarballs rather than git URLs for github. Moved to pkgconf + rather than pkg-config. System directory added, default + skeleton/device tables moved. More than 1 post-build script + can now be used. output/target now contains a + THIS_IS_NOT_YOUR_ROOT_FILESYSTEM warning, to help people + understand how to (not) use it. + + Manual has been reworked and extended. + + Legal-info: Lots of package annotations, CSV file fixes, + _LICENSE / _REDISTRIBUTE splitup, per-package hooks. + + Updated/fixed packages: acpid, alsa-lib, alsa-utils, + alsamixergui, attr, autoconf, automake, bash, bind, binutils, + bison, blackbox, bluez-utils, busybox, cairo, can-utils, + cifs-utils, cjson, cmake, collectd, connman, conntrack-tools, + coreutils, cups, cvs, dbus, dhcp, directfb, dmalloc, dnsmasq, + dropbear, e2fsprogs, ethtool, fbdump, feh, fftw, file, + flashrom, fluxbox, gdb, gdisk, gdk-pixbuf, genext2fs, gettext, + gnutls, gpsd, gqview, grep, gsl, gst-plugins-{bad,good}, + hdparm, hiawatha, hostapd, input-tools, iproute2, ipset, + iptables, iw, json-c, kexec, kmod, lcdproc, leafpad, less, + libcurl, libdrm, libdvdnav, libdvdread, libffi, libfuse, + libglib2, libhid, liblockfile, libmad, libmbus, libmnl, + libnetfilter_{acct,conntrack,cthelper,cttimeout,queue}, + libnfc, libnfc-llcp, libnfnetlink, libnl, libnspr, libnss, + libpcap, libplayer, libtool, libtorrent, liburcu, libv4l, + libxcb, libxml2, libxslt, links, linux-firmware, lm-sensors, + lmbench, lockfile-progs, logrotate, lshw, lsof, + lttng-babeltrace, lttng-tools, lua, luajit, mesa3d, microperl, + mii-diag, module-init-tools, mpc, mpd, mpg123, mplayer, + mtd-utils, mysql_client, nbd, ncurses, netatalk, netkitbase, + netkittelnet, netsnmp, newt, nfs-utils, openntpd, openssh, + openssl, opkg, patch, pciutils, pcre, php, poco, polarssl, + popt, portmap, pppd, procps, pulseaudio, python, python-nfc, + python-protobuf, qt, quota, rp-pppoe, rtorrent, sam-ba, samba, + scons, sdl_gfx, smartmontools, sqlite, squid, strace, sudo, + sylpheed, tcpdump, tremor, ttcp, tiff, unionfs, + usb_modeswitch, usbutils, util-linux, vala, valgrind, vpnc, + vsftpd, webkit, wget, which, wpa_supplicant, x11vnc, xapp_*, + xdriver_*, xenomai, xfont_*, xinetd, xl2tp, xlib_*, xlsclient, + xproto_*, xserver_xorg-server, xutil_util-macros, xz, zeromq + + New packages: arptables, at91bootstrap3, boot-wrapper-aarch64, + ccid, cpanminus, cpuload, erlang, evtest, fb-test-apps, + fxload, gdbm, gnupg, googlefontdirectory, grantlee, gsl, + lcdapi, liblo, liblog4c-localtime, libtirpc, linux-pam, + lua-msgpack-native, macchanger, mtdev, mtdev2tuio, nfacct, + opus, opus-tools, pcsc-lite, perl, pkgconf, python-meld3, + python3, qemu, qextserialport, qtuio, rpcbind, schifra, + sconeserver, supervisor, time, ulogd, usb_modeswitch_data, + yasm + + Deprecated packages: netkitbase, netkittelnet + + Issues resolved (http://bugs.uclibc.org): + + #807: [PATCH] samba - make iconv and smbd optional + #3049: binutils have a sysroot bug in ld + #5330: update vsftpd to 3.0.0 + #5486: libglib2 build fails on: libs/libglib-2.0.so: undefined... + #5666: Fails to build python 2.7.2 for 2440 arm + +2012.08, Release August 31th, 2012 + + Updated/fixed packages: microperl, cups, luajit, rrdtool, + prboom, oprofile. + + Added license information for: sqlite. + + Changed the source URLs of all packages located on Sourceforge + in order to use the automatic mirror selection URL + downloads.sourceforge.net, and get rid of the + BR2_SOURCEFORGE_MIRROR option. + +2012.08-rc3, Released August 25th, 2012 + + Updated/fixed packages: libglib2, netsnmp, freetype, libfuse, + libpng, x11vnc, zlib, gpsd, ifplugd, bash, distcc. + + Added license informations for: barebox, grub, syslinux, + uboot, xloader, yajl, zlib, zxing, alsa-lib, alsa-utils, + faad2, nano, fbdump, rsync, librsync, fontconfig, + inotify-tools, + +2012.08-rc2, Released August 15th, 2012 + + Updated/fixed packages: imagemagick, sudo, crosstool-ng. + + Added license informations for: mxml, nanocom, empty, expat, + lua, lucjson, xinetd, cjson, luaexpat, lmbench, bwm-ng, + input-event-daemon, luajit, cgilua, copas, coxpcall, + luafilesystem, luasocket, rings, wsapi, xavante, libtpl, + avahi, busybox, libfcgi, ifplugd, libcgicc, libcurl, + libdaemon, libdnet, libgpg-error, libpcap, libpng, lighttpd, + mtd, openssl, psmisc, socat, spawn-fcgi. + + Fixes to Microblaze external toolchains + configuration. Improvements of the pkg-stats + script. Out-of-tree fix for the graph-depends script. + + Kernel headers version bump. + +2012.08-rc1, Released August 1st, 2012 + + Fixes all over the tree and new features. + + Integration of a legal information reporting infrastructure, + which allows to generate detailed informations about the + licenses and source code of all components of a system + generated by Buildroot. License information will progressively + be added on packages. + + Default configuration files added for Calao-systems USB-A9263 + and Calao-systems USB-A9G20-LPW. + + External toolchains update: allow download of a custom + toolchain, add Linaro 2012.05 and 2012.06 for ARM, add + Blackfin toolchain 2012R1-BETA1, add Sourcery CodeBench MIPS + 2011.09. + + Allow the restriction of downloads to the primary site only. + This is useful for project developers who want to ensure that + the project can be built even if the upstream tarball + locations disappear. + + Add a 'System configuration' choice to select between 3 + different init systems: Busybox init, SysV init and Systemd + init. + + Cleanups to the package infrastructure. The visible change to + developers is that $(eval $(call AUTOTARGETS)) is now $(eval + $(autotools-package)), and similarly for other package + infrastructures and host packages. Refer to the documentation + for details. + + By default, automatic detection of the number of compilation + jobs to use, depending on the number of CPUs available. + + Improvements to generate systems with static libraries only + (infrastructure and package fixes). + + Add proper support in the Linux kernel package to generate + Device Tree Blobs or combined Device Tree / Kernel + images. This will be useful on Microblaze, PowerPC and ARM, + which are architectures making extensive use of the Device + Tree. + + Updated/fixed packages: audiofile, autoconf, automake, axel, + barebox, bash, beecrypt, berkeleydb, bind, bison, bluez_utils, + bonnie, boost, busybox, bsdiff, bwm-ng, bzip2, cifs-utils, + cgilua, cmake, connman, conntrack-tools, crosstool-ng, cups, + dbus, dhcp, dnsmasq, e2fsprogs, eeprog, ethtool, faad2, fbv, + ffmpeg, freetype, gmp, gnutls, gob2, gpsd, grep, + gst-plugins-base, gst-plugins-good, gzip, hiawatha, hostapd, + htop, icu, igh-ethercat, imagemagick, input-tools, iostat, + iproute2, ipset, iptables, iw, kmod, less, libcap, libgci, + libconfig, libcurl, libelf, libevas, libeXosip2, libexif, + libfuse, libidn, libmad, libmbus, libmnl, + libnetfilter-conntrack, libnl, libnspr, libnss, libogg, + libosip2, libpcap, libpng, libroxml, liburcu, libusb, libxml2, + libxslt, lighttpd, linux, ltrace, lttng-libust, lttng-modules, + lttng-tools, lua, m4, memtester, midori, mii-diag, + module-init-tools, mpfr, mpg123, mrouted, msmtp, mtd, mxml, + mysql_client, nasm, nbd, ncurses, nfs-utils, opencv, openocd, + openssl, pciutils, php, polarssl, portaudio, pppd, + pthread-stubs, pulseaudio, qt, quagga, quota, radvd, rpm, + rrdtool, samba, sam-ba, scons, sdl_gfx, sdl_sound, speex, + sqlite, squashfs, squid, sudo, synergy, syslinux, systemd, + tar, tcpdump, tcpreplay, udev, usbutils, valgrind, wget, + wpa_supplicant, wsapi, xavante, xserver_xorg-server, zlib + + New packages: cjson, collectd, dfu-util, dmidecode, elftosb, + fbterm, flashrom, freerdp, inadyn, libfreefare, + libnetfilter_cttimeout, libnfc, libnfc-llcp, liboping, + libtorrent, linphone, logsurfer, lshw, luacjson, luaexpat, + luajit, mediastreamer, mobile-broadband-provider-info, monit, + mxs-bootlets, nanocom, nss-mdns, ofone, omap-u-boot-utils, + opkg, ortp, owl-linux, python-id3, python-nfc, quota, + ramspeed, rtorrent, sound-theme-borealis, + sound-theme-freedesktop, sysprof, webrtc-audio-processing, + xinetd, zxing + + Issues resolved (http://bugs.uclibc.org): + + #1315: Allow use of older external toolchains without sysroot + support [won't fix] + #5276: Hiawatha needs to manage IPV6 if so [fixed] + #5360: buildroot fails when building "host-libglib2 2.30.2 + Building" [won't fix, upstream problem] + #5384: Can't build packages relying on gets on newer glibc + [fixed] + +2012.05, Released May 30th, 2012: + + Updated/fixed packages: busybox, netsnmp, pptp-linux + +2012.05-rc3, Released May 25th, 2012: + + Minor fixes around the tree. + + Infra: Fix for DOWNLOAD macro when using primary mirrors with + scp targets. + + Toolchain: Kernel headers 3.2.18 / 3.3.7. + + Updated/fixed packages: binutils, bison, busybox, cifs-utils, + gnuchess, gpsd, iperf, libmpeg2, mtd, ntfs-3g, oprofile, + xserver-xorg + +2012.05-rc2, Released May 18th, 2012: + + Fixes all over the tree. + + Toolchain: uClibc: Use 0.9.33.2, Crosstool-ng: fix gperf + dependency, disable decimal floats support, Linux 3.2.17 / + 3.3.6 kernel headers. Fix sysroot copy handling for toolchains + without C++ support. + + Updated/fixed packages: apr, apr-util, ccache, dnsmasq, + heirloom-mailx, gdb, ndisc6, opencv, openssl, socat, vala + +2012.05-rc1, Released May 10th, 2012: + + Fixes all over the tree and new features. + + Use /etc/os-release for version info rather than + /etc/br-version. + + CMake toolchain file moved to $HOST_DIR/usr/share/buildroot. + + Apply-patches.sh: cleanups, archived patches handling fixes, + support series files. + + Defconfigs: beaglebone, mx53qsb, pandaboard, qemu configs for + arm-vexpress/microblaze/ppc-mpc88544ds, use 3.2.x for + atngw100, use 3.3.x for qemu configs. + + Menu structure: Libraries moved out of multimedia section + + Atom processor support. Prescott fix, blackfin ABI fix, + Microblaze architecture support (using ext toolchain). Cleanup + architecture names, deprecate Xtensa support. + + Toolchain: Add GCC 4.4.7, 4.6.3, 4.7.0. uClibc 0.9.33.1, + default to uClibc 0.9.33.x, enable + UCLIBC_SUPPORT_AI_ADDRCONFIG by default, static and 64bit + fixes for external toolchains, linaro ext toolchains, new + sourcery codebench ext toolchains, GDB 7.4.1, crosstool-ng + 1.15.2. + + Bootloaders: U-Boot: add 2012.04.01, SPL and u-boot.img + support. Barebox: add 2012.04, remove 2011.12. + + Updated/fixed packages: alsa-lib, alsa-utils, at, atk, avahi, + barebox, berkeleydb, bind, bluez_utils, boost, busybox, + can-utils, ccache, cifs-utils, coreutils, cups, dbus, dhcp, + directfb, dnsmasq, doom-wad, dosfstools, e2fsprogs, expat, + fakeroot, feh, ffmpeg, file, fis, freetype, gamin, gawk, + gdk-pixbuf, gettext, giblib, glib-networking, gmp, gnutls, + gpsd, grep, gstreamer, gst-plugins-{bad,base,good,ugly}, + haserl, hdparm, imagemagick, iproute2, iptable, iw, kexec, + kmod, lame, libaio, libarchive, libatomic_ops, libconfig, + libcurl, libdvdnav, libdvdread, libedbus, libethumb, libffi, + libfuse, libglib2, libgtk2, libhid, libmad, libmbus, libmpeg2, + libnl, libplayer, libpng, libsigc, libsoup, libupnp, liburcu, + libusb, libusb-compat, libxml2, libxml-parser-perl, libxslt, + lighttpd, linux-firmware, linux-fusion, lite, lsof, ltrace, + lttng-libust, lua, m4, makedevs, microperl, mpd, mpfr, mpg123, + mrouted, mtd, mysql_client, nbd, ncftp, ncurses, neon, + netsnmp, network-manager, nfs-utils, ngrep, ntfs-3g, openntpd, + openssh, openssl, parted, pango, pcre, php, pixman, poco, + psmisc, pulseaudio, python, qt, quagga, radvd, rpm, rsync, + ruby, samba, sam-ba, sane-backends, sawman, screen, sdl_net, + smartmontools, speex, sqlite, squashfs3, squid, sshfs, sudo, + syslinux, sysstat, taglib, tcpdump, tftp-hpa, transmission, + tiff, tinyhttpd, uboot-tools, udev, uemacs, unionfs, usbutils, + util-linux, vala, valgrind, vim, vsftpd, wget, wipe, + wpa_supplicant, xdriver_xf86-{input-vmmouse,video-fbdev}, + xfsprogs, zlib + + New packages: apr, apr-util, audiofile, bellagio, + conntrack-tools, empty, fmtools, glib-networking, + heirloom-mailx, hiawatha, latencytop, lcdproc, libcap-ng, + libdmtx, libfcgi, libnetfilter_conntrack, libnfnetlink, + libtpl, localedef, minicom, msmtp, ndisc6, netatalk, + ocf-linux, openswan, parted, polarssl, protobuf, read-edid, + socketcand, stress, systemd, ushare, zeromq + + Deprecated packages: ttcp + + Removed packages: ntfsprogs + + Issues resolved (http://bugs.uclibc.org): + + #2353: [lua] fix build with 2010.08-rc1 + #2503: Microperl fails build on MIPSel or with Fedora13.x86_64 + #2557: [PATCH] mkfs.xfs complains about missing libxfs.so.0 + #2881: Can't build project statically with external toolchain + #3751: MIPS: fix BR2_GCC_TARGET_ABI for MIPS n64 + #4808: ccache may build against wrong zlib + #4880: New package lcdproc + #4886: New package protobuf + #4892: build fails on ltp-testsuite-20101031/testcases/kernel/fs/... + #4898: * make: [target-finalize] Error 1 (ignored)* + #4985: Qt 4.7.4 build crashes with Linux 2.6.29 + #4970: udev 181 fails to build if kernel version 3.3 is selected + #5018: dialog broken: exits with assert in uClibc + #5102: qt package moc, uic, rcc read from wrong place + #5144: Patch to fix ixon bug in uemacs + #5198: Line graphics output is broken in GNU Screen + #5204: Missing terminfo file(s) for GNU screen terminal type + +2012.02, Released February 29th, 2012: + + Updated/fixed packages: libecore + +2012.02-rc3, Released February 27th, 2012: + + Fixes all over the tree. + + Automatic host dependencies handling for cmake packages + fixed. Customize package deprecated as using a post-build + script is nowadays the preferred way of adding extra stuff to + the rootfs. + + Linux-headers 3.0.x / 3.2.x stable version bumped. + + QEMU defconfigs updated to 3.2.x kernels and readme fixed. + + Updated/fixed packages: dropbear, ffmpeg, libpng + +2012.02-rc2, Released February 19th, 2012: + + Fixes all over the tree. + + Toolchain: uClibc: Added upstream post-0.9.33 fixes, Bump + linux-headers 3.0.x / 3.2.x stable versions. + + Documentation: Added makedev / _DEVICES / + _PERMISSIONS documentation. + + Updated/fixed packages: busybox, ffmpeg, gst-dsp, libecore, + libvncserver, mxml, python. + +2012.02-rc1, Released February 12th, 2012: + + Fixes all over the tree and new features. + + Toolchain: Default to GCC 4.5.x, add binutils 2.22. Java + support removed, Powerpc SPE ABI support. GDB ELF support fix, + GDB 7.4, crosstool-NG 1.13.4. + + Gentargets: scp and mercurial support. + Autotools: derive host dependencies from target by default. + Packages can now declare device table snippets. + + Host utilities menu with commonly used host tools. + + defconfigs: qemu configs for x86-64, mips and sparc, at91 + defconfigs now use modern U-Boot / mainline Linux, added + lpc3250 defconfigs. + + uClibc: remove 0.9.30, backport unshare() support, add + 0.9.32.1 / 0.9.33, use same config for ctng. + + Bootloaders: U-Boot: add 2011.12, remove 2010.xx versions, + Barebox: add 2012.01/02, remove 2011.10/11, LPC32xx + bootloaders added. + + Various manual updates. Release tarballs now contain generated + manual in text/html/pdf formats. + + Buildroot now calls the stop function of scripts in + /etc/init.d at shutdown. + + Updated/fixed packages: atk, avahi, barebox, bash, beecrypt, + bind, binutils, bison, bluez_utils, bzip2, busybox, cairo, + ccache, cdrkit, coreutils, cramfs, dbus, dbus-glib, dialog, + diffutils, dmalloc, dropbear, e2fsprogs, ebtables, ed, + ethtool, expat, ffmpeg, file, fis, flex, fluxbox, fontconfig, + freetype, gawk, grep, gst-dsp, gst-ffmpeg, gst-plugins-base, + hdparm, hostapd, htop, i2c-tools, icu, iproute2, ipsec-tools, + ipset, iptables, iw, jpeg, kismet, lame, libcap, libcgi, + libev, libeXosip2, libffi, libftdi, libgpg-error, libgtk2, + libidn, libmms, libmnl, libmodbus, libnl, libogg, libosip, + libpcap, libpng, libraw1394, libroxml, libusb, libusb-compat, + libv4l, libvorbis, libxcb, libxml-parser-perl, libxslt, + lighttpd, links, lm-sensors, lua, m4, module-init-tools, mpc, + mesa3d, mpd, mpfr, mplayer, mtd-utils, nano, nbd, ncurses, + netperf, netsnmp, ntp, opencv, openocd, openssl, openvpn, orc, + pciutils, pcre, pixman, pkg-config, poco, popt, proftpd, + python, python-serial, qt, ruby, samba, sdl, sdparm, + squashfs3, sshfs, sqlite, squid, sudo, syslinux, tcl, tcpdump, + ti-utils, tiff, tremor, uboot, uboot-tools, udev, usbmount, + util-linux, vala, valgrind, vsftpd, wpa_supplicant, + xapp_{bdftopcf,mkfontdir,mkfontscale,xkbcomp,xcursorgen,xinit}, + xapp_xinput, xapp_xman, xcb-util, xdm, xenomai, + xf86-video-sis, xfont_{encodings,font-util}, + xlib_lib{fontenc,X11,Xau,Xcursor,Xdmcp,Xfixes,Xfont,Xrender}, + xlib_libxkbfile, xterm, xutil_makedepend, yajl + + New packages: boost, connman, dstat, expedite, explorercanvas, + feh, flot, giblib, igh-ethercat, imlib2, jquery, + jquery-sparklines, jquery-validation, jsmin, kmod, libecore, + libedbus, libedje, libeet, libeina, libelementary, libesmtp, + libethumb, libevas, libical, libmbus, liboauth, liburcu, + libvncserver, linux-firmware, + lttng-{babeltrace,libust,modules,tools}, NetworkManager, + open2300, python-distutilscross, python-dpkt, + python-netifaces, python-pygame, python-setuptools, rt-tests, + sam-ba, sane-backends, sqlcipher, transmission, unionfs, + xf86-input-tslib, xinput-calibrator + + Issues resolved (http://bugs.uclibc.org): + + #743: Add Transmission bit torrent option to buildroot + #755: Add Boost libraries as a package + #2299: Add crypto support to libsoup + #2617: Pixman 0.19.2 & Cairo 1.10.0 + #3403: libgpg-error: bump to version 1.10 + #3409: libgpg-error: download from gnupg.org + #3421: nano: make tiny flag optional + #3691: New EFL packages + #4664: Cannot patch AT91Bootstrap + #4700: setlocalversion not working for combination svn/ubuntu 11.10... + #4760: Qt: add host-pkg-config to dependency-list + +2011.11, Released November 30th, 2011: + + Fixes all over the tree. + + Bump kernel headers / default Linux version to 3.1.4. + + Updated/fixed packages: ruby + +2011.11-rc3, Released November 26th, 2011: + + Fixes all over the tree. + + Toolchain: Fix gdb dependencies for external toolchains, + adjust uClibc patches so they don't confuse modern versions of + patch, bump crosstool-ng, kernel headers and linux versions. + + Updated/fixed packages: busybox, freetype, mplayer, opencv, + php, rsyslog, ruby, thttpd, xapp_xf86dga + + Issues resolved (http://bugs.uclibc.org): + + #4357: Prevent patch commands from accessing source control + #4369: Fix permissions on untared lsof archive + +2011.11-rc2, Released November 18th, 2011: + + Fixes all over the tree and new features. + + Updated asciidoc documentation + + Toolchain: Bumped 3.x stable kernel headers, use wget in + crosstool-ng as well, bump crosstool-ng version, gdb fixes, + uClibc sparc fix. + + Updated/fixed packages: distcc, file, gst-plugins-bad, libxcb, + mplayer, newt, qt, rpm, rrdtool, tar, tftpd + + Issues resolved (http://bugs.uclibc.org): + + #3355: mplayer fails to build + #4021: uClibc: undefined reference to `__GI___errno_location' + #4297: Qt's qmake uses wrong pkg-config + +2011.11-rc1, Released November 11th, 2011: + + Fixes all over the tree and new features. + + Moved misc scripts and support stuff to support/. Renamed + patch-kernel.sh to support/scripts/apply-patches.sh. + + Documentation: Moved to asciidoc format, make targets to + generate text/html/pdf/epub output added. + + Defconfigs: Qemu configs updated to 3.1 kernel and readmes + added. + + Bootloaders: Add support for custom git tree / tarballs for + barebox, similar to how it's handled for u-boot. Clean up + menuconfig options. + + Toolchain: Update external codesourcery toolchain download + URLs after Codesourcery got bought by Mentor, add x86 + toolchain, update toolchain versions and optimize toolchain + sysroot copying. Fix uClibc 0.9.32 builds for e500 PPC, + updated GDB versions / download URLs. Binutils + libbfd/libopcodes static/dynamic linking fix. GCC 4.6.2 added, + use ctng-1.13.0. + + Package infrastructure: Support for local packages / + overrides, package dir / name arguments dropped from + {GEN,AUTO,CMAKE}TARGETS. + + Linux: Kernel extensions infrastructure support, Xenomai + + RTAI support. + + Updated/fixed packages: acpid, bind, busybox, dash, dbus, + dbus-glib, directfb, dnsmasq, drystone, e2fsprogs, ethtool, + fakeroot, fbdump, file, freetype, fuse, gamin, gmp, gmpc, + gnutls, gob2, gst-plugins-{base,bad,good,ugly}, gstreamer, + hostapd, ifplugd, imagemagick, intltool, ipsec-tools, ipset, + iptables, iw, jpeg, kexec, leafpad, less, libargtable2, libao, + libconfuse, libcuefile, libcurl, libdaemon, libevent, + libglib2, libiconv, libmpd, libreplaygain, libroxml, + libsamplerate, libsndfile, libsoup, libsvgtiny, libtool, + libxcb, lighttpd, links, linux-fusion, lite, lrzsz, lsof, lzo, + lzop, makedevs, mcookie, mpg123, mpd, mpfr, mtd, musepack, + mutt, mysql_client, ncftp, ncurses, neon, netcat, netsnmp, + ntfs-3g, ntfsprogs, ntp, openntpd, openssh, openssl, oprofile, + orc, pciutils, psmisc, python, qt, quagga, radvd, rpm, rsync, + samba, sawman, sdl_sound, smartmontools, sqlite, squid, + stunnel, sudo, sylpheed, sysstat, taglib, tar, tcpreplay, + tslib, usbutils, util-linux, valgrind, wget, whetstone, which, + wpa-supplicant, xdata_xcursor-themes, xmlstarlet, xterm + + New packages: bluez-utils, cifs-utils, fftw, fluxbox, json-c, + libev, libftdi, libgeotiff, libmodbus, libplayer, live555, + ngrep, noip, opencv, openocd, picocom, poco, portaudio, + pulseaudio, pv, rtai, vala, xenomai. + + Removed packages: liboil, sfdisk, swfdec, webif + + Issues resolved (http://bugs.uclibc.org): + + #505: live555: new package + #507: Enable live and tv options in MPlayer-1.0rc2 + #531: let e2fsprogs package to export headers to staging dir if needed + #1171: Linuxthreads new cannot find sysdep.h + #1357: Add bluez to buildroot system + #2107: New package: input-event-daemon + #2599: New package: orc (Oil Runtime Compiler) + #2605: gstreamer: Update to 0.10.30 + #2677: introducing util-linux-ng as replacement for util-linux + #2917: Qt: Add declarative module + #3145: jffs2 image generation fails + #3271: netperf-2.4.5 fails to compile + #3331: xdata_xcursor-themes depends on xcursorgen + #3343: Add file:// download SITE_METHOD + #3391: Add support for specifying an external kernel tree + #3631: Error while compiling with Xorg + #3709: oprofile doesn't build for mipsel + #3925: midori not getting compile + #4045: Add support for downloading i386 toolchains from codesourcery + #4165: lrzsz-fix-symlink-at-rebuild.patch + #4171: makedevs-unused-but-set-variable.patch + #4183: Codesourcery toolchain download site has changed + #4231: libneon.so: undefined reference to `SSL_SESSION_cmp' + #4381: Add option to lighttpd to enable Lua support + #4387: Make sure that dest dir exists before installing mtd files + +2011.08, Released August 31th, 2011: + + Fixes all over the tree. + + Toolchain: Fix codesourcery 2009q3 ARM download, Linux 3.0.4 + kernel headers. + + Updated/fixed packages: ipset, python + +2011.08-rc2, Released August 29th, 2011: + + Fixes all over the tree. + + Toolchain: crosstool-NG 1.12.1, use binutils 2.21 on + mips/sh/older uClibc, disallow uClibc 0.9.32 on avr32/sh + (broken). + + Defconfigs: kernel updates, fix mini2440 serial port config, + remove old arm toolchain configs. + + Bootloaders: Fix grub patching, add barebox-{n,x,menuconfig} + targets similar to linux/busybox. + + Updated/fixed packages: barebox, directfb, libsoup, + libxml-parser-perl, mtd, ncurses, python, ti-utils, udev, + usbmount, util-linux, xfont_font-misc-misc + + Issues resolved (http://bugs.uclibc.org): + + #3685: ncurses installation hangs due to old version of tic + #4093: Grub fails to install bz2 patch after conversion to... + +2011.08-rc1, Released August 4th, 2011: + + Fixes all over the tree and new features. + + Toolchain: uClibc 0.9.32 / NPTL support, 0.9.29 removed, + ext-toolchain-wrapper improvements, improved non-MMU + support. GCC 4.3.6 / 4.6.1. + + GENTARGETS infrastructure extended to cover bootloaders and + Linux kernel as well. Options to retrive Linux/U-Boot from a + custom git repo instead of upstream tarballs. + Support for Linux 3.x and release candidate tarballs. + X-Loader bootloader for omap added. + + Make source/external-deps now also works for external + toolchains / crosstool-ng backend. + + Updated/fixed packages: autoconf, berkeleydb, bind, binutils, + bmon, bridge-utils, busybox, cmake, dbus, dbus-glib, + e2fsprogs, ethtool, ffmpeg, gst-plugins-{bad,base,good,ugly}, + gvfs, hostapd, iproute2, iptables, iw, jpeg, lame, libarchive, + libdnet, libdrm, libgcrypt, libgtk2, libmpeg2, libpng, + libsoup, lighttpd, linux-fusion, lzo, midori, mtd-utils, + nfs-utils, openvpn, oprofile, orc, pkg-config, proftpd, qt, + ruby, samba, sdl, shared-mime-info, sudo, sqlite, squid, + synergy, udev, usbmount, usbutils, util-linux, valgrind, + webkit, xorg-xserver, xz, zlib + + New packages: acl, attr, ebtables, gnutls, inotify-tools, + ipset, libargtable2, libiqrf, libmnl, libnspr, libnss, + libroxml, libyaml, live555, mxml, orc, rsyslog, sredird, + statserial, stunnel, ti-utils, uboot-tools, yajl + + Deprecated packages: liboil, swfdec + + Removed packages: hal + + Issues resolved (http://bugs.uclibc.org): + + #3559: libnspr: Add new package + #3595: patch to add libroxml + #3565: libnss: Add new package + #3583: xfonts_font-adobe-100dpi fails due to missing map file + #3649: [PATCH] Add mapdir to existing pkg-config patch + #3907: 2011.05 - Qt 4.7.3 not building on ARM + #3961: Nfs-utils: Remove SUSv3-function index + #3985: "help" target's defconfig list needs sort + #3997: bump libroxml to v2.1.0 + +2011.05, Released May 27th, 2011: + + Updated/fixed packages: makedevs + +2011.05-rc2, Released May 24th, 2011: + + Fixes all over the tree. + + Toolchain: Code sourcery ARM 2009q1 download URL fixed / + 2009q3 external toolchains added. Crosstool-NG bumped to + 1.11.3, eglic/glibc configuration fixes. Linux kernel 2.6.38.x + bumped to 2.6.38.7. + + Updated/fixed packages: bind, fakeroot, kbd, psmisc, qt + +2011.05-rc1, Released May 18th, 2011: + + Fixes all over the tree and new features. + + External toolchain improvements: We now build a binary + toolchain wrapper and install it into HOST_DIR/usr/bin, which + enforces the correct compiler arguments, making an external + toolchain as easy to use outside of Buildroot as the internal + ones are. This also brought a cleanup of CFLAGS, making the + Buildroot build output easier to read. + + Rootfs device handling improvements: Choice between static + /dev, devtmpfs and devtmpfs with either mdev or udev. + + Toolchain: More preconfigured codesourcery external + toolchains, improved Crosstool-NG support, fix for GCC + snapshot versions, GCC 4.4.6 / 4.5.3, experimental GCC 4.6.0 + support, target-GCC fixes, uClibc fixes, 0.9.32-rc3 support. + + Bootloaders: U-boot 2011.03, Barebox 2011.05.0 + + Linux: support for custom kernel image targets, E.G. for + powerpc builds with embedded device trees. + + Misc fixes for qemu defconfigs, ensuring correct serial + terminal setup out of the box. + + Misc gentarget / autotools handling fixes. + + Updated/fixed packages: alsa-lib, alsa-utils, alsamixergui, + atk, avahi, bind, bison, busybox, copas, dbus-glib, dhcp, + dhcpdump, dnsmasq, dropbear, ethtool, fakeroot, ffmpeg, file, + gamin, gnuconfig, gst-ffmpeg, gst-plugins-good, gtk2-engines, + haserl, hostapd, icu, imagemagick, iproute2, iw, kismet, less, + libcap, libdnet, libglade, libglib2, libgtk2, libnl, libpng, + libxml2, libxml2, libxslt, lighttpd, lockfile-progs, makedevs, + midori, mpg123, mpc, mpd, mpfr, mplayer, mtd-utils, ncurses, + netsnmp, openssh, openssl, openvpn, pango, pkg-config, popt, + procps, proftpd, qt, quagga, readline, rsync, samba, sdl, + socat, squashfs, squid, sudo, tslib, udev, usbutils, webkit, + wpa_supplicant, xerces, xfont_font-misc-misc, xlib_libX11, + xlib_libXfont, xlib_xtrans, xorg-server, xterm, xz + + New packages: bonnie++, can-utils, gdisk, htop, + input-event-daemon, libexif, libraw, libv4l, ngircd + + Removed packages: festival + + Issues resolved (http://bugs.uclibc.org): + + #2131: Add OpenMP support to the toolchain + #3379: New Package: bonnie++ + #3445: Not working openssl-10.0.0d on 386sx + #3451: fakeroot package: wrong FAKEROOT_SITE variable + #3457: alsamixergui: broken URL + #3475: Calling sync on large filesystems when not always necessary + #3511: make busybox-menuconfig does not download busybox package + #3541: Quotes in the top Makefile:217 break buildroot/kernel config... + #3571: u-boot: fw_printenv does not build + #3643: popt source url is not responding + #3733: dropbear: make zlib optional + #3757: Buildroot can't build mplayer with libmad + +2011.02, Released February 28th, 2011: + + Fixes all over the tree. + + Updated/fixed packages: alsamixergui, avahi, ffmpeg, icu, mpd, + nuttcp, qt, slang, squashfs, sylpheed, synergy, xerces + + Deprecated packages: devmem2, webif + + Issues resolved (http://bugs.uclibc.org): + + #2911: Qt: Disable qt3support-option, if gui-module isn't selected + #3259: Unable to build webkit (on arm) + #3295: slang fails to build on mipsel + #3325: ffmpeg fails to build + +2011.02-rc2, Released February 24th, 2011: + + Fixes all over the tree. + + Festival packages marked as broken. Unless someone steps up + to support them, they will be removed during the 2011.05 + development cycle. + + Updated/fixed packages: atk, avahi, bind, cairo, dbus, + enchant, fakeroot, gmpc, gpsd, gvfs, iperf, jpeg, libarchive, + libcgicc, libdaemon, libdrm, libevent, libgail, libglib2, + libgpg-error, libmicrohttpd, librsvg, libsoup, libxcp, + makedevs, matchbox-fakekey, matchbox-startup-monitor, mdadm, + metacity, mpd, nasm, nfs-utils, olsr, openssl, popt, + pthread-stubs, quagga, rpm, samba, sdl, sdl_gfx, sdl_image, + sdl_mixer, sdl_sound, sdl_ttf, squashfs, synergy, taglib, + tcpreplay, tiff, wpa_supplicant, xcb-util, + xdriver_xf86-input-{acepad,aiptek,evdev,joystick,keyboard}, + xdriver_xf86-input-{mouse,synaptics,void}, + xdriver_xf86-video-{chips,dummy,geode,glide,intel,nv,wsfb}, + xlib_lib{ICE,SM,XScrnSaver,Xau,Xcursor,Xdmcp,Xi,Xinerama}, + xlib_lib{Xrandr,Xt,Xtst,Xxf86dga,Xxf86vm,dmx,fontenc,pciaccess}, + xserver_xorg-server, xz + + Removed packages: ace_of_penguins, vlc + + Issues resolved (http://bugs.uclibc.org): + + #3205: Failing chmod when running "make" in buildroot (openssl)... + #3277: quagga fails to build with SNMP support + #3283: See why nfs-utils needs fakeroot, and convert to autotools + #3307: synergy fails to build due to missing XTest library + +2011.02-rc1, Released February 14th, 2011: + + Fixes all over the tree and new features. + + External toolchain improvements: clarification of the options, + and introduction of the toolchain profile concept, for + well-known toolchains. Buildroot is now capable of + automatically downloading and extracting well-known toolchains + (for the moment, CodeSourcery ARM, PowerPC, MIPS and SuperH + toolchains are supported). Crosstool-NG backend updated and + improved. + + Complete rework of how hardware boards are supported. + Each board now only has a single defconfig file, and all + board-specific options have been removed. See + docs/buildroot.html#board_support for details. + + Added support for the following boards: Mini2440, Qemu ARM + Versatile, Qemu MIPSel Malta, Qemu PowerPC G3beige, Qemu SH4 + r2d and Qemu x86. The Qemu boards support allows to easily + build systems that are known to work under Qemu. + + Initial support for Blackfin processors. + + Staging directory moved into $(O)/host/usr//sysroot, in + preparation for support of SDK. For the same reason, the + toolchain binaries (cross-compiler and other related tools) + are now installed in $(O)/host/usr/bin/. The cross pkg-config + now also automatically returns correct values for cross + compilation, without needing any environment variables to be + set. + + Ccache support reworked. Now used for both host and target + compilation, and cache is stored in ~/.buildroot-ccache. + + Toolchain: uClibc 0.9.32-rc2, several components moved to + normal AUTOTARGET packages. + + Generic cmake infrastructure, similar to the existing + GENTARGETS/AUTOTARGETS. + + Support for bzr downloads, next to the existing git/svn support. + + Kconfig infrastructure rebased against 2.6.38-rc3, bringing + misc fixes. 'xconfig' now uses Qt4 rather than Qt3. + + EXT2 file system size handling improved, UBI image support, fs + configuration options cleanup, U-Boot/Barebox version bumps. + + Updated/fixed packages: alsa-utils, at, autoconf, automake, + bash, binutils, bison, busybox, bzip2, cdrkit, cloop, cmake, + coreutils, cups, dbus, dbus-python, dhcp, directfb, + direcfb-examples, dmalloc, dnsmasq, dosfstools, e2fsprogs, ed, + fbset, ffmpeg, findutils, flac, freetype, gdk-pixbuf, gmp, + grep, gperf, gst-ffmpeg, gst-plugins-bad, gst-plugins-base, + gst-plugins-good, gst-plugins-ugly, gstreamer, gvfs, hdparm, + hostapd, i2c-tools, icu, imagemagick, input-tools, iproute2, + iptables, iw, jpeg, kexec, libaio, libart, libcap, libconfig, + libfuse, libglib2, libidn, libmad, libogg, libpcap, libpng, + libsndfile, libtheora, libtool, libusb-compat, libvorbis, + libxcb, libxml2, libxslt, links, linux-fusion, lm-sensors, + lsof, ltp-testsuite, ltrace, lvm2, lzo, m4, makedevs, + memtester, mesa3d, mii-diag, mpc, mpfr, mpg123, mplayer, + mrouted, mtd-utils, nano, netperf, netplug, ntfs-3g, ntp, + openssh, openssl, openvpn, oprofile, pango, patch, pciutils, + php, pkgconfig, portmap, psmisc, python, qt, rsync, ruby, + sawman, screen, sdl_gfx, sdl_sound, smartmontools, socat, + sqlite, squid, sshfs, sstrip, sysklogd, sysstat, sysvinit, + tar, tcpdump, tslib, udev, usbutils, vim, vtun, webkit, wipe, + x11vnc, xapp_xlogo, xcb-proto, xfont_font-util, + xkeyboard-config, xlib_libX11, xz, zlib + + New packages: dhrystone, dsp-tools, faad2, fbgrab, gst-dsp, + gst-omapfb, irda-utils, lame, libao, libcue, libcuefile, + libffi, libhid, libreplaygain, libsamplerate, libsigc++, + lsuio, mpd, musepack, python-mad, python-serial, rsh-redone, + sdparm, tidsp-binaries, vorbis-tools, wavpack, whetstone, + xl2tp, xmlstarlet + + Removed packages: hotplug, l2tp, libfloat, microcom, + ng-spice-rework + + Issues resolved (http://bugs.uclibc.org): + + #267: The make target: cross fails because toolchain_build_... + #415: Berkeley DB: mut_pthread.o: relocation R_X86_64_32 against... + #561: ltp-testsuite failed to install + #1447: Installing gfortran on PowerPC + #1651: Build fail caused by ccache in module-init-tools + #1681: Cross-compiled binaries shouldn't be installed into staging + #1723: [PATCH] axel: convert to generic package infrastructure and... + #1735: [PATCH] mplayer: convert to autotools infrastructure + #2551: [PATCH] native toolchain in the target filesystem fails + #2623: buildroot-snapshot-20100922 fails when compiling development... + #2647: makedevs package lacks support for 16-bit major/minor numbers + #2371: QT MYSQL Module does not build when MySQL installed on the host + #2839: compile fails in various packages with a odd message "error:... + #2887: tar "buffer overflow detected" error + #2893: Broken "make source" with external toolchain + #2905: Qt: Speed up compilation, if gui-module isn't selected + #2929: genext2fs: couldn't allocate a block (no free space) + #2935: Ntpdate isn't installed + #2965: Broken linkage to xkbcomp (blocking X server startup) + #2983: xlib_libX11 build failed + #3007: kexec doesn't build: Missing regdef.h file + #3085: Init scripts are not compatible with sysVinit (when busybox... + #3103: make external-deps wants to download gcc-.tar.bz2 when... + #3109: abnormal `make busybox-menuconfig` + #3115: How about board specific makefiles? + #3169: python patch has typo, aborts build in scenario + #3181: dhcp.mk copies S80dhcp-server to etc/init.d, not etc/init.d/ + +2010.11, Released November 30th, 2010: + + Fixes all over the tree. + + Updated/fixed packages: libgcrypt, qt, squid, sysstat, tcpdump, + xserver-xorg + + Issues resolved (http://bugs.uclibc.org): + + #2773: squid with openssl support needs openssl on the host + #2857: OBJDUMP definition is missing from TARGET_CONFIGURE_OPTS + +2010.11-rc2, Released November 25th, 2010: + + Fixes all over the tree. + + Add support for LEON Sparc architecture variants. Fix make + source/external-deps for host packages. + + Updated/fixed packages: bash, bind, busybox, dialog, gpsd, + libglib2, libcurl, libmad, lrzsz, midori, module-init-tools, + mtd-utils, openssh, openssl, pciutils, php, qt, sqlite, + sysstat, webkit, zlib + + Issues resolved (http://bugs.uclibc.org): + + #759: Sysstat build broken without libintl + #2479: host-module-init-tools 3.11 fails to build + #2725: Buildroot overrides kernel config + #2785: mtd-utils build fails due to missing libmtd + #2791: Added PHP-Process Control to the PHP-Package + #2797: pciutils dependencies on zlib not taken into account + #2809: failed to compile libglib2 + #2821: [PATCH] Patch for JavaScriptCore in QtWebKit module + #2827: qt-4.7.0-pthread_getattr_np.patch invalid for qt 4.6... + #2833: Failed to compile webkit without X11 + +2010.11-rc1, Released November 8th, 2010: + + Fixes all over the tree and new features. + + Kconfig infrastructure rebased against 2.6.36-rc1, bringing + misc fixes + nconfig and savedefconfig targets. + + Toolchain: ARM cortex A9 support, experimental crosstool-ng + backend, GCC 4.5.x. + + Fs: Squashfs 4.1 with lzo support + + Old-style package hooks (*_HOOK_POST_*) removed. Use the more + generic new-style ones instead. + + Download handling reworked and support for git/svn downloads + added. + + Removed experimental shared config.cache support, as it is + too unreliable. + + A convenience Makefile wrapper is created when using + out-of-tree building, similar to how it is done for the kernel. + + Alpha, Cris, IA64 and Sparc64 architecture support removed. + + New packages: argp-standalone, gdk-pixbuf, gpsd, gst-ffmpeg, + libmpeg2, kbd, librsvg, nuttcp, rng-tools, rrdtool, xz + + Updated/fixed packages: acpid, alsa-lib, argus, at, autoconf, + automake, avahi, axel, beecrypt, berkeleydb, bind, bmon, boa, + bootutils, bridge-utils, bsdiff, busybox, cvs, dbus, directfb, + dmraid, docker, dosfstools, dropbear, e2fsprogs, ethtool, + expat, ezxml, fbset, fconfig, ffmpeg, freetype, gadgetfs-test, + gamin, gawk, genext2fs, gperf, gst-plugins-base, + gst-plugins-ugly, gtk2-themes, gtkperf, gvfs, haserl, hdparm, + hostapd, hwdata, ifplugd, imagemagick, iperf, ipsec-tools, + iproute2, iptables, iw, jpeg, kexec, kismet, less, libcgi, + libcurl, libdaemon, libdnet, liberation, libevent, libeXosip2, + libglade, libgtk2, libiconv, libidn, libintl, libmms, libmpd, + libnl, liboil, libosip2, libpcap, libpng, libtool, libungif, + libxml2, libxslt, lighttpd, lite, lm-sensors, lockfile-progs, + logrotate, m4, matchbox, mdadm, mesa3d, metacity, mplayer, + mtd-utils, mysql_client, nano, nbd, ncftp, neon, netperf, + netsnmp, ng-spice-rework, ntfsprogs, ntp, openntpd, openssh, + openssl, openvpn, oprofile, pango, patch, pcre, php, + pkg-config, portmap, pppd, pptp-linux, prboom, proftpd, radvd, + rdesktop, readline, rp-pppoe, ruby, qt, quagga, samba, sawman, + sdl_mixer, sdl_sound, sed, setserial, shared-mime-info, slang, + speex, sqlite, squashfs, startup-notification, strace, + sylpheed, sysstat, taglib, tcpdump, thttpd, tiff, tn5250, + torsmo, tslib, udev, udpcast, usbmount, usbutils, vsftpd, + vtun, which, wireless-tools, wpa_supplicant, xapp_twm, + xapp_xbacklight, xapp_xcursorgen, xapp_xinit, xapp_xinput, + xapp_xmore, + xdriver_xf86-input-{acecad,aiptek,evdev,joystick,keyboard}, + xdriver-xf86-input-{mouse,synaptics,vmmouse,void}, + xdriver-xf86-video-{apm,ark,ast,ati,chips,cirrus,dummy,fbdev}, + xdriver-xf86-video-{geode,glide,glint,i128,i740,intel,mach64}, + xdriver-xf86-video-{mga,neomagic,newport,nv,openchrome,r128}, + xdriver-xf86-video-{rendition,s3,s3virge,savage,siliconmotion}, + xdriver-xf86-video-{sis,sisusb,suncg3,suncg6,suncg14,sunffb}, + xdriver-xf86-video-{sunleo,suntcx,tdfx,tga,trident,v4l,vesa}, + xdriver-xf86-video-{vmware,voodeo,wsfb,xgi,xgixp}, + xkeyboard-config, xlib_libX11, xserver_xorg-server, xstroke, + xterm, xvkbd, zlib + + Deprecated packages: hotplug, lzma, ng-spice-rework, sfdisk + + Removed packages: dillo, libglib12, libgtk12, microwin, + pcmcia + + Issues resolved (http://bugs.uclibc.org): + + #901: new package: gpsd + #2389: Generate a Makefile wrapper in $(O) + #2461: wireless_tools: install shared library if needed + #2521: Can't compile sdl_mixer, mikmod.h can't be found + #2533: xserver_xorg-server: Enable glx, if mesa3d is built + #2563: [PATCH] cairo: Expose the configure option to disable some... + #2581: libmms: Update to 0.6, and patch to work on architectures... + #2707: Can't compile linux kernel using buildroot + crosstool-ng + #2731: Build order + #2737: buildroot configuration tool crashing when the path exceeds... + #2767: Build for lsof broken in buildroot-2010.08 + +2010.08: Released August 31th, 2010: + + Fixes all over the tree. + + Updated/fixed packages: atk, xstroke + + Removed packages: lxdoom + +2010.08-rc2, Released August 30th, 2010: + + Fixes all over the tree. + + Mark the combination of uClibc 0.9.31, gcc 4.2.x, C++ and + locale support as broken. Remove deprecated GCC 4.2.[1-3] + versions. + + Mark CRIS architecture as deprecated, as it is discontinued + upstream. + + Marked shared config.cache as experimental and disabled by + default as it is known to break with certain package + combinations. + + Toolchain: fixed gcc 4.2.x build after uClibc NPTL support got + added. + + fs: old-style squashfs for big endian archs fixed. + + Updated/fixed packages: busybox, gst-plugins-base, + imagemagick, kismet, libgail, libglib2, libgtk2, lua, + luafilesystem, lzo, ncurses, netcat, pango, php, pppd, + proftpd, qt, samba, startup-notification, swfdec, sysvinit, + util-linux + + Removed packages: stunnel + + Issues resolved (http://bugs.uclibc.org): + + #635: util-linux fails to build in 2009.08 + #2239: netcat package installs its binary to target as avr32-linux... + #2395: libglib2-2.24.1 and libxml2-2.7.7 fails build on MIPS because... + #2443: Initramfs: Don't overwrite $(TARGET_DIR)/init if it exists + #2449: Minor fixes for squashfs makefile and correct PowerPC e500 ... + +2010.08-rc1, Released July 30th, 2010: + + Fixes all over the tree and new features. + + Toolchain: GCC 4.3.5, older 4.3.x versions removed. GCC 4.1.2 + and non-sysroot support removed. Added support for (snapshot) + NPTL in uClibc, 0.9.28.3 removed, + + Bootloaders: Various cleanups, moved to boot/, added Barebox, + removed yaboot. Support building u-boot from custom tarball, + u-boot 2010.06. + + New GTK-based configurator, usable using 'make gconfig'. + + Java packages marked as broken. Unless someone steps up to + support this, they will be removed during the 2010.11 + development cycle. + + Alpha, IA64 and Sparc64 architectures marked as deprecated. + GTK+ on DirectFB has also been marked as deprecated, as it is + not supported in recent GTK+ versions, and more and more + packages depends on the new versions. + Unless someone steps up to support them, they will be removed + during the 2010.11 development cycle. + + New packages: cgilua, copas, coxpcall, ffmpeg, libsvgtiny, + libgail, luafilesystem, luasocket, rings, wsapi, xavante, xterm + + Updated/fixed packages: alsa-lib, alsamixergui, at, atk, + avahi, berkeleydb, bash, blackbox, busybox, bzip2, cairo, + cdrkit, cmake, dash, dhcp, dialog, diffutils, distcc, dmalloc, + dnsmasq, dropbear, e2fsprogs, fbv, file, flex, fontconfig, + gawk, gmpc, gnuchess, gst-plugins-base, gst-plugins-good, + gstreamer, gzip, icu, intltool, iostat, ipsec-tools, iptables, + iw, libart, libcgi, libcurl, libdrm, libeXosip, libfuse, + libglib2, libgpg-error, libiconv, libidn, liblockfile, libpng, + libsoup, lighttpd, links, linux-fusion, lmbench, lrzsz, + ltrace, make, midori, module-init-tools, mplayer, + mysql_client, nbd, ncurses, neon, netcat, netperf, netsnmp, + ntfsprogs, openssl, oprofile, pango, php, qt, quagga, samba, + setserial, sdl, sdl_mixer, sdl_sound, sdl_ttf, speech-tools, + sqlite, squashfs, swfdec, tftpd, thttpd, tn5250, tremor, + usbutils, webif, webkit, wireless_tools, xerces, + xkeyboard-config, xserver_xorg-server, xvkbd, zlib + + Removed packages: modutils, portage, rxvt + + Deprecated packages: dillo, libglib12, libgtk12, microwin, pcmcia + + Issues resolved (http://bugs.uclibc.org): + + #321: alsa-lib uses host include files for python which breaks ... + #361: linux kernel configuration choice works incorrectly + #387: Tremor not installed to toolchain + #401: new package: ffmpeg + #475: uImage target for U-boot failed generating + #543: ATK requires X11 on DirectFB target + #575: webkit: Buildroot Libtool Patch Fails + #583: build fails with external x86_64 toolchain + #729: sstrip creates corrupted headers + #829: Webkit r44552 needs libXt + #835: Package Dataflashboot-1.05 does not compile with buildroot... + #847: Compiling target-gcc v4.4 fails with "libc.so.0: cannot open... + #859: Add (head of) nptl branch to list of uClibc versions + #949: compile with debug info + #955: Grub fails to build with External Toolchain + #1051: Webkit doesn't compile (Linuxthreads new, x86) + #1213: Move .config into output directory + #1225: Buildroot fails to account for "nof" subdirectory (no float... + #1231: (sparc) Linux kernel fails to build + #1261: The getline() in output/build/linux-2.6.28/scripts/unifdef.c... + #1339: Busybox needs -fno-strict-aliasing to compile cleanly + #1393: neon config fails libxml/parser.h: libxml2 requires, but not ... + #1405: WebKit fails to build because pthread_getattr_np is not impl... + #1675: GMP Error during buildroot make process + #1741: external toolchain linking error + #1753: lmbench: convert to generic package infrastructure + #1771: Fakeroot and the target/generic/device_table.txt create bad... + #1807: LZMA 4.32.7, Required header file(s) are missing + #1813: xkeyboard-config fails to build because of intltool problem + #1879: Bump iptables to 1.4.8 + #1885: Add a bunch of lua modules + #1897: Bump libusb to 1.0.7 + #1903: Bump tn5250 to 0.17.4 and migrate to autotargets + #1909: netperf-2.4.5 fails to build because of undeclared SOCK_DCCP + #1927: Bump file to 5.03 and migrate to autotargets + #1933: Bump gawk to 3.1.8 and migrate to autotargets + #1945: PHP: add sqlite3 dependency when using external lib + #1951: Bump openssl to 0.9.8o + #1957: Bump sqlite to 3.6.23.1 + #1975: Package removal/deprecation + #1981: zlib: bump to 1.2.5 + #1987: intltool: Fix spelling mistake + #1993: Bump bash to 4.1.7(1) and migrate to autotargets + #1999: Typo in path checking + #2005: Bump dnsmasq to 2.55 and migrate to gentargets + #2035: ipsec-tools-0.7.2 fails to build with gcc-4.4.x + #2038: Bump ncurses to 5.7 + #2095: make gconfig: undefined reference to symbol 'dlsym@@GLIBC_2.2.5' + #2101: blackbox depends on locale support + #2119: Tries to build kernel, although disabled in config + #2125: libXfont build fail + #2143: buildroot compiler generates segfaulting statically linked exe.. + #2149: xterm build failure + #2155: Compression lzo don't set for ubifs + #2161: [SECURITY] Update libpng to 1.2.44 + #2167: Bump busybox to 1.17.0, convert to gentargets, drop 1.12, ... + #2181: pixman can't apply pixman-0.10.0-no-tests.patch + #2191: linux-fusion build fail + #2221: Qt does not compile (dependencies not taken into account?) + #2233: Atmel atstk target skeletons have /etc/mtab as a file, not ... + #2245: Netcat does not work due to incorrect assumptions about signed.. + #2251: directory output/build after make *_defconfig not found + #2257: Convert netsnmp package to autotargets + #2263: Bump samba to 3.3.13 + #2269: setserial causes make error + +2010.05, Released May 30th, 2010: + + Fixes all over the tree. + + Updated/fixed packages: coreutils, hal, libcap, + lockfile-progs, ncftp, xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #1789: binutils fails to build for i386 + #1843: Fix libcap build failure + #1855: XORG Keyboard driver fails to compile + +2010.05-rc3, Released May 27th, 2010: + + Fixes all over the tree. + + Updated/fixed packages: aumix, atk, avahi, bmon, busybox, cairo, + cdrkit, dbus-glib, dbus-python, docker, enchant, fltk, gamin, + gettext, gmpc, gob2, grep, gstreamer, gst-plugins-bad, + gst-plugins-base, gvfs, hal, iconv, icu, iperf, libcgicc, + libdvdnav, libdvdread, libglade, libglib2, libgtk2, libidn, + libmms, libmpd, libpcap, libsoup, lmbench, lsof, ltrace, lvm2, + make, metacity, microperl, mtd-utils, mutt, nbd, netsnmp, + ntfsprogs, ntp, olsr, pango, pciutils, pcmanfm, php, + pkg-config, psmisc, qt, samba, shared-mime-info, squashfs, + squashfs3, sshfs, startup-notification, swfdec, sylpheed, + uemacs, util-linux, valgrind, vpnc, vsftpd, webkit, xstroke + + Issues resolved (http://bugs.uclibc.org): + + #75: arm buildroot "unrecognized option" error + #699: Buildroot fails to copy libstdc++ to target when using external... + #1693: NTP trys IPV6 even if not configured error: 'IPV6_MULTICAST... + #1729: alsamixergui fails to build + #1801: Avahi-autoipd doesn't create TARGET_DIR/var/lib + #1819: pciutils small bugs + #2065: Internal toolchain: bump gcc 4.3.x series to 4.3.5 + +2010.05-rc2, Released May 11th, 2010: + + Fixes all over the tree. + + Updated/fixed packages: busybox, customize, gawk, gnuchess, + hal, hostapd, less, libgcrypt, libnl, libxcb, linux-fusion, + ltp-testsuite, mplayer, netplug, pciutils, php, sed, + shared-mime-info usb_modeswitch, usbutils, vlc wpa_supplicant, + xapp_bdftopcf, xapp_mkfontdir, xdriver_xf86-video-openchrome, + xfont_encodings, xlib_libX11, xlib_libXfont, xlib_xtrans, + xproto_fontcacheproto, xproto_fontsproto, xvkbd + + Removed packages: vice + + Issues resolved (http://bugs.uclibc.org): + + #849: "customize" package copies files to wrong place in target tree + #985: Bump usb_modeswitch package to 1.1.0 + #1135: Package customize. Wrong copying + #1525: Package hal deletes a whole /etc/rc.d directory + #1531: libxcb 1.5 build fails, due to missing xcbgen Python module + #1669: Busybox failed to compile when using an external toolchain + #1699: Fix usbutils dependencies and bump + #1705: Fix pciutils broken cross compiling + #1717: External toolchain fixes for hostapd & wpa_supplicant + +2010.05-rc1, Released May 3rd, 2010: + + Cleaned up / restructured package menu. + + Toolchain: uClibc 0.9.30.3 / 0.9.31, older 0.9.30.x removed. + 2.6.33 kernel headers, binutils 2.20.1, GCC 4.4.4, + removed broken nios2 support, ppc e300cX/e500mc support, + improved external toolchain support, GDB 7.x support. + + X.org updated to 7.5. + + New packages: cdrkit, cramfs, genext2fs, genromfs, + libatomic_ops, librsync, libusb-compat, lmbench, netperf, + squashfs, squashfs3, squid + + Updated/fixed packages: alsa-utils, argus, autoconf, bison, + busybox, bzip2, directfb, dnsmasq, dosfstools, e2fsprogs, + eeprog, fakeroot, fbv, findutils, freetype, haserl, hostapd, + iperf, iptables, iw, less, libaio, libcgi, libcgicc, libdrm, + libgcrypt, libglib2, libid3tag, libmad, liboil, libosip2, + libpng, libraw1394, libsysfs, libxml2, libxslt, linux-fusion, + ltrace, lua, lzma, madplay, makedevs, matchbox, mdadm, + memstat, mesa3d, mtd-utils, nano, ncurses, openssl, patch, + pciutils, php, pixman, portage, pppd, pthread-stubs, python, + qt, radvd, samba, setserial, smartmontools, tar, tslib, + udpcast, usb_modeswith, vtun, wget, xdata_xcursor-themes, + xdriver_xf86-video-intel, xkeyboard-config, xlib_libX11, + xlib_libXaw, xlib_libXfont, xlib_libXfontcache, + xlib_libXxf86misc, xlib_libXtst, xlib_libpciaccess, + xproto_dri2proto, xproto_eviext, xproto_fontcacheproto, + xproto_xf86miscproto, xserver_xorg-server + + Removed packages: xapp_xtrap, xlib_libXTrap, xlib_libXevie, + xlib_libXxf86misc, xxproto_evieext, proto_trapproto, + xproto_xf86miscproto + + Issues resolved (http://bugs.uclibc.org): + + #513: Add new squid package + #661: lmbench: new package + #719: Add lua option to haserl + #800: [PATCH] iperf update to 2.0.4 + #803: [PATCH] lua - add shared library patch and config option for... + #805: [PATCH] mdadm - version update + #817: integrator926_defconfig uses unsupported uboot board name + #851: Add option to specify --sysroot value for external toolchain + #1093: Upgrade libusb to v1.0.3 and add new libusb-compat + package for compatibility with old packages that expect + the pre-1.0 API. + #1105: Add new netperf package + #1111: Bump wget to 1.12 and migrate to Makefile.autotools.in + #1117: Bump nano to 2.2.3 and migrate to Makefile.autotools.in + #1123: Bump less to 436 and migrate to Makefile.autotools.in + #1129: Bump memstat to 0.8 and migrate to Makefile.package.in + #1189: Wrong u-boot configuration name for integrator926 target + #1219: kernel headers not correctly installed into toolchain/staging + #1267: Wrong BR2_EXTRA_VERSION + #1273: BR2_INET_IPV6 does not enable IPv6 in pppd + #1303: Add librsync package + #1321: Busybox link fails due to lack of --sysroot option + #1327: mtd-utils compile failure due to lack of --sysroot in CFLAGS + #1345: Bump pppd to 2.4.5 and convert to Makefile.autotools.in + #1369: cannot build radvd (flex problem) + #1387: xlib_libX11-1.3.2 can't find libjpeg + #1411: [SECURITY] Update openssl package to 0.9.8n + #1417: Bump iptables to 1.4.7 + #1423: Bump e2fsprogs to 1.41.11 + #1429: [SECURITY] Update php to 5.2.13 + #1441: Add binutils 2.20.1 + #1447: Package installation on target with debug symbols is broken + #1459: Misc QA fixes + #1489: radvd update to 1.6 + #1513: Enable powerpc e300c2, e300c3 and e500mc optimization + #1537: dev entries not created anymore + #1555: Fix default uclibc-0.9.31 configuration + #1561: [SECURITY] Update samba to 3.3.12 + #1567: openssl0.9.8n fails to compile + #1573: Alsa-utils alsactl/init/* not installed to target + #1591: portmap fails to compile + #1615: Convert eeprog package to gentargets + #1645: Bump hostapd package to 0.7.2 + +2010.02, Release February 26th, 2010: + + Fixes all over the tree. + + Updated/fixed packages: avahi, busybox, cramfs, ipsec-tools, libcgicc, + libgtk2, libraw1394, madplay, netsnmp, pango, squashfs, sylpheed, qt, + xfont_font-util + + Removed packages: hostap, openmotif, xpdf + + Issues resolved (http://bugs.uclibc.org): + + #165: openmotif does not build + #1147: Remove obsolete hostap package + #1183: make source fails to download gmp, mpfr and patches + +2010.02-rc2, Released February 23th, 2010: + + Fixes all over the tree and new features. + + New packages: intltool + + Updated/fixed packages: ace_of_penguins, alsa-lib, alsa-utils, argus, + at, automake, ccache, dosfstools, e2fsprogs, flex, gob2, gmpc, + gst-plugins-good, imagemagick, iw, kexec, libeXosip, libgtk2, + libpcap, libpng, libsoup, libxcb, libxml-parser-perl, libxml2, + libxslt, lvm2, matchbox, mplayer, rsync, rubix, shared-mime-info, + tcl, webkit, xapp_mkfontscale, xfont_encodings, xfont_font-util, + xlib_libfontenc, xproto_trapproto, zlib + + Removed package: xboard + + Issues resolved (http://bugs.uclibc.org): + + #335: atk looks for the path to the gnome library on the host + #355: Please update WebKit - it doesn't compile! + #453: libglib2 autoreconf + #457: e2fsprogs link problem + #459: libgtk2 autoreconf + #469: build of libgtk2 for host incorrectly assumes that X.org ... + #671: Bash fails to build when building buildront on Ubuntu 9.04 + #711: WebKit host dependencies problems + #821: cp: illegal operation + #1039: Not compiled on ubuntu karmic + #1069: [PATCH] The AT91BOOTSTRAP makefile contains a typo + +2010.02-rc1, Released February 9th, 2010: + + Fixes all over the tree and new features. + + Generalized autotools infrastructure to be usable for + non-autotools packages, see package/Makefile.package.in for + details. + + Cleaned up avr32 toolchain config, external source-based + toolchain support is gone. + + Dependency checks: Also check for makeinfo, only print output + on errors. + + Toolchain: uClibc 0.9.30.2, gcc 4.4.3 + + New packages: libcdaudio, libdvdnav, libdvdread, hostapd, ser2net, + tcpreplay + + Updated/fixed packages: alsa-lib, alsa-utils, at, autoconf, bash, + bind, binutils, bootutils, busybox, dbus, directfb, dnsmasq, + e2fsprogs, gstreamer, gperf, gst-plugins-bad, gvfs, fbdump, flex, + hal, iptables, iw, jpeg, kismet, libfuse, libglib2, liboil, libpcap, + libungif, libxml2, libxslt, lighttpd, mesa, mpg123, mtd-utils, nbd, + neon, netstat-nat, newt, openvpn, pcre, php, qt, rdesktop, readline, + rpm, sawman, sdl, sdl_ttf, sqlite, sshfs, tremor, u-boot, + usb_modeswitch, usbutils, webkit, wpa_supplicant, xfsprogs, zlib + + Removed package: asterisk, openswan + + Issues resolved (http://bugs.uclibc.org): + + #515: tcpreplay: new package + #553: Wrong DirectFB ps2mouse limitation + #559: mesa3d build fails + #679: Autoconf cannot find M4 + #739: New/updated hostapd package + #749: Bump usbutils package to version 0.86 + #751: Kernel 2.6 snapshot fetch fail + #753: Bump lighttpd package to 1.4.25 + #757: U-Boot: mkimage cannot be installed using external toolchain + #761: Add binutils 2.20 to toolchain options + #763: [SECURITY] Update pcre to 7.9 + #765: Add buildroot branding to gcc + #767: Bump iw package to 0.9.18 + #773: [SECURITY] Update bind to 9.5.2-P1 + #795: Minor edits to fix typos, grammar, spelling, usage in documen... + #813: Drop not very useful generic package selection options ... + #823: Editor backup files (~) is copied from the target_skeleton + #827: Bump mtd-utils package to version 1.2.0 + #841: Build error + #913: Bump iptables to 1.4.6 + #919: Bump usb_modeswitch package to 1.0.7 + #925: Bump wpa_supplicant package to 0.6.10 + #931: Bump kismet package to 2010-01-R1 + #937: Bump openvpn package to 2.1.1 + #943: Bump sqlite package to 3.6.22 + #961: Bump dnsmasq to 2.52 + #967: Bump netstat-nat to 1.4.10 + #973: Bump iw to 0.9.19 + #1003: DHCP options disabled with busybox-1.16.0 + #1009: [SECURITY] Bump php to 5.2.12 + #1015: [SECURITY] Bump bind to 9.5.1-P2 + #1027: Busybox flash commands conflict with those from mtd-utils + #1063: [SECURITY] Update lighttpd to 1.4.26 + +2009.11, Released December 1st, 2009: + + Additional fixes and cleanups. + + Updated/fixed packages: alsamixergui, autoconf, coreutils, fltk, + microperl, ncurses, vim + + Issues resolved (http://bugs.uclibc.org): + + #707: Cant configure fltk-1.1.7. configure: error: Configure could ... + +2009.11-rc2, Released November 29th, 2009: + + Additional fixes and cleanups. + + Updated/fixed packages: busybox, dbus, fltk, gvfs, ltrace + +2009.11-rc1, Released November 23rd, 2009: + + Fixes all over the tree and new features. + + Cleaned up / Simplified build directory layout. Refer to + docs/buildroot.html#using for details. + + Target defconfig files moved to configs/ and listed in 'make help' + output. + + Fixed *clean targets. Now clean removes everything generated, + so you can do a fresh rebuild. Distclean furthermore removes + kbuild tools and .config, bringing the source tree back in a + pristine state. + + Toolchain: ARM cortex A8 support, GCC 4.4.2, sensible default + soft / hardfloat setting for architecture, ensure target-ldd + gets installed. + + New packages: divine, gvfs, libarchive, libmicrohttpd, + sdl_sound, swfdec, sysstat + + Updated/fixed packages: alsa-lib, alsamixergui, autoconf, bootutils, + busybox, gcc, directfb, dnsmasq, e2fsprogs, festival, gamin, gperf, + gqview, gstreamer, gst-plugins-bad, gst-plugins-base, gst-plugins-good, + imagemagick, ipkg, iptables, iw, kernel-headers, kismet, leafpad, + libelf, libevent, libglib2, libidn, liblockfile, libmad, libpcap, + libupnp, libuuid, libxml2, lighttpd, ltrace, lua, lzma, magiccube4d, + matchbox, mdadm, nbd, ncftp, ncurses, netkittelnet, netsnmp, + ng-spice-rework, ntfs-3g, openntp, openssl, pcmanfm, php, psmisc, + python, quagga, radvd, rpm, rsync, rubix, samba, sawman, sdl, sdl_image, + shared-mime-info, sfdisk, spawn-fcgi, speech-tools, sqlite, squashfs, + synergy, syslinux, sysklogd, target-binutils, tcpdump, torsmo, u-boot, + udpcast, util-linux, valgrind, vsftpd, wipe, wpa-supplicant, x11vnc, + xdata_xcursor-themes, xboard, xfsprogs, xstroke, zlib[5~ + + Removed package: mdnsresponder, mpatrol, gcc 3.4.6 + 4.0.4, vice + + Issues resolved (http://bugs.uclibc.org): + + #301: allow to install libsmbclient + #303: add gvfs package + #477: Add sdl_sound package + #487: Make kismet package sexier + #511: New package usb_modeswitch + #527: misc fixes for dnsmasq package + #565: libevent: Bump version and clean up makefile + #587: Use iptables multipurpose binaries and bump to 1.4.4 + #593: Missing early check for patch(1) + #597: (REOP) Selecting busybox in buildroot's config clobbers ar ... + #609: libmicrohttpd: New package + #615: python: Don't delete .py files unless asked + #617: netkit/inetd requires RPC and fails to build if RPC is disabled + #619: netkittelnet requires netkitbase to install, but there's no ... + #645: allow to build nbd-server with NBD package + #653: [SECURITY] Update php package to version 5.2.11 + #655: Update sqlite package to version 3.6.18 + #657: Bug in imagemagick-clean target + #663: Add option for NAND flash with 512B Page and 16 kB erasesize ... + #665: [PATCH] Samba package + #667: [PATCH] e2fsprogs + #683: SDL-dfb does not select directfb + #701: make install problem with unstripped binaries + #703: [SECURITY] Update openssl package to 0.9.8l + #705: Bump spawn-fcgi package to 1.6.3 + #709: Bump lighttpd package to 1.4.24 + #713: Migrate openntpd package to Makefile.autotools.in + #715: Bump libidn package to 1.15 and other fixes + #717: Bump dnsmasq to 2.51 and introduce new IDN option + #731: Bump iw package to 0.9.17 + +2009.08, Released August 31th, 2009: + + Additional fixes and cleanups. + + Updated/fixed packages: ctorrent, saveconfig/getconfig, + sdl_net, util-linux. + + Issues resolved (http://bugs.uclibc.org): + + #529: util-linux doesn't find headers and include libs correctly + #557: Build ctorrent with SSL support if available + +2009.08-rc3, Released August 26th, 2009: + + Additional fixes and cleanups. + + Updated/fixed packages: alsa-utils, berkeleydb, busybox, dbus, + directfb, enchant, kernel headers. + + Issues resolved (http://bugs.uclibc.org): + + #471: Allow directfb compilation with debug + #541: Removal of CVS directories in target filesystem broken + #547: berkeleydb: Update config.{sub, guess} + #549: enchant: Fix dependencies. + #569: Fix alsa-utils build for x86 on x86-64 + +2009.08-rc2, Released August 6th, 2009: + + Additional fixes and new features. + + New packages: libuuid, gcc 4.3.4. + + Updated/fixed packages: busybox, classpath, gzip, ipsec-tools, + jamvm, libusb, microperl, neon, popt, sed, webkit. + + Fixed issue with 'make oldconfig' + + Issues resolved (http://bugs.uclibc.org): + + #525: sed broken with external toolchain + #537: Fix gzip build with recent glibc + +2009.08-rc1, Released August 2nd, 2009: + + Fixes all over the tree and new features. + + Improvement of external toolchain support: + - Support for glibc toolchains. + - The toolchain configuration announced to Buildroot is + verified against the real toolchain configuration. + - Fixes, documentation. + + Cleanup X.org support: clarified configuration options, and + removed mandatory dependency on useless libraries such as + libXt or libXaw. + + New QT-based configurator, usable using 'make xconfig'. + + Support for the Xtensa architecture. + + Toolchain: GCC 4.4.1, 2.6.30 kernel headers, removed < 2.6.26 + headers. + + New packages: bmon, ctorrent, dosfstools, enchant, + gst-plugins-bad, iw, libmms, libnl, netstat-nat, ntfsprogs, + sdl_gfx, spawn-fcgi. + + Updated packages: bind, busybox, coreutils, sqlite, directfb, + expat, gamin, gnuconfig, haserl, ipsec-tools, classpath, + libcurl, libglib2, liblockfile, libpng, libsoup, libxml2, + lighttpd, ltp-testsuite, lvm2, matchbox, memstat, + gst-plugins-good, gstreamer, libogg, libvorbis, mplayer, + neon, openssl, pciutils, php, qt, ruby, sawman, webkit, + wpa-supplicant, xdriver_xf86-input-synaptics, + xdriver_xf86-video-intel, xlib_libXfont, xlib_libXft, + xlib_libXt, xproto_xproto, xserver-xorg, xutil_makedepend, + xutil_util-macros. + + Issues resolved (http://bugs.uclibc.org): + + #83: liblockfile fails to compile due to eaccess redefinition + #163: Xtensa architecture port + #171: xorg-server / kernel headers 2.6.26 - vm86.c compilation issue + #241: device mapper + lvm2: build together + #243: ctorrent: new package + #247: ntfsprogs: new package + #271: Library 'libgcc_s.so.1' not installed in search path + #287: New package libnl + #289: New package iw + #331: Update MPlayer to version 1.0rc2 + #333: Bump sqlite package to 3.6.15 + #349: update libsoup to version 2.26.2 + #357: New package netstat-nat + #359,#413: Upgrade openvpn to Makefile.autotools.in + #367: linux kernel compile error for arm926t + #369: Add SDL_gfx package + #373: Support for building gstreamer without libxml + #379: update DirectFB to version 1.4.0 + #383: gst-plugins-good: Allow soup plugin to be configured + #385: neon: Fix pkgconfig dependency + #387: Tremor not installed to toolchain + #389: New package bmon + #391: gstreamer: Bump version to 0.10.23 + #393: gst-plugins-base: Bump version to 0.10.23 + #395: gst-plugins-bad: New package + #403: Error while building iso9660 image + #409: Bump php package to 5.2.10 + #411: ipsec-tools: Bump version to 0.7.2 + #417: New package spawn-fcgi + #419: Bump lighttpd package to 1.4.23 + #421: toolchain: Clean up toolchain locale support menu + #427: webkit: Update to WebKit svn r44552 + #437: ltp-testsuite: Bump version to 20090630 + #451: Upgrade from unmaintained dosfstools-2.11 to dosfstools-3.0.3 + #467: DirectFB 1.4.1 + #473: memstat_0.5.tar.gz has install with -D and that fails "make" + #491: libxml2: Bump version to 0.7.3 + #495: Bump bind package to 9.5.1-P3 (security) + #497: OpenSSL RSA key generation hangs on x86_64 + #509: Bump sqlite package to 3.6.16 + #523: pciutils broken with external toolchain + #533: Update gamin to 0.1.10 to fix compilation + +2009.05, Released June 1st, 2009: + + Fixes for dropbear & diffutils, bump linux-advanced 2.6.29.x + version and marked ubifsroot as broken. + +2009.05-rc3, Released May 27th, 2009: + + Fixes for toolchain (gcc arm pr37436), stable kernel versions, + busybox, curl, libusb, readline, python and strace. + + Issues resolved (http://bugs.uclibc.org): + + #345: libcurl package needs a urandom fix + +2009.05-rc2, Released May 19th, 2009: + + Fixes for toolchain (gcc w/softfloat on ppc, 3.4.6 buildfix + for newer hosts), stable kernel versions, busybox, cups, + dmraid, docker, mesa3d, rsync and updated defconfigs. + + xserver marked as broken on AVR32 and atngw100-expanded + config removed. + + Issues resolved (http://bugs.uclibc.org): + + #167: metacity does not build + #295: gamin installs python support even if python is disabled + #323: gen_matypes fails to execute during build of Mesa when us... + +2009.05-rc1, Released May 5th, 2009: + + Fixes all over the tree, further conversion of packages to + Makefile.autotools.in and we now build host versions of + packages where needed for build time dependencies instead of + relying on the correct versions being available on the build + host. Ancient toolchain / busybox versions have furthermore + been removed as announced in the 2009.02 release notes. + + New packages: flac, gob2, lzop, taglib, wpa_supplicant + + Updated packages: avahi, bind, binutils, busybox, dbus, dbus-glib, + directfb, dnsmasq, freetype, gcc, gmp, gstreamer, iptables, kernel + headers, kexec, libglib2, libpng, libsndfile, lua, mpfr, ntfs-3g, + openssl, php, qtopia4, rsync, samba, sqlite, tar, uboot, uclibc, + util-linux, xorg7, xerces + + Issues resolved (http://bugs.uclibc.org): + + #5,#77,#141,#143: Convert php package to Makefile.autotools.in + and a ton of other improvements + #19: page.h missing by util-linux + #37: update libglib2 to version 2.18.4 + #61: tslib puts staging_dir into pkgconfig file + #69: tar refuses to build + #71,#175: ./wchar.h:41:12: error: empty filename in #include + #73: Bump openssl package to the latest version + #81: New package wpa_supplicant + #99: new package: flac + #101: update gstreamer packages + #105,#313: menuconfig segfaults on tinyx if wchar is not + selected + #107: convert libvorbis to Makefile.autotools.in + #109: Make pppd package avoid bsd err + #111: binutils 2.17 fails to build when texinfo >= 4.10 + #133: Modify ncurses5-config to get correct include path + #137: Bump php to version 5.2.9 + #139: Bump sqlite to 3.6.11 and convert to + Makefile.autotools.in + #145: Bump bind package to 9.5.1-P1 (security) + #147: buildroot toolchain fails to build w/binutils-2.19.1 + #151: openssl package trivial fixes + #161: vim fails on patching with errors in configure.patch + #169: blackbox-0.70.1 does not build + #177: xdriver_xf86-input-keyboard does not build + #179: Upgrade dropbear to Makefile.autotools.in + #181: Update to Xorg 7.4 + #187: ntfs-3g: could not build cross + #191: alsa-lib ARM binaries always built with EABI + #213: Bump wpa_supplicant package to version 0.6.9 + #217: Bump openssl package to 0.9.8k (security) + #219: Toolchain build fails on m4 + #225: m4 macros are out of place + #233: make ipv6 optional in iptables + #237: ncftp: convert to Makefile.autotools.in + #239: ntfs-3g: convert to Makefile.autotools.in + #245: lzop: new package + #271: Bump bind package to 9.5.1-P2 (security) + #277: Bump sqlite package to 3.6.16 + #279: update libglib2 to version 2.20.1 + #281: update DirectFB to version 1.2.8 + #283: add taglib + #285: compilation of samba fails if IPV6 support is missing + #293: update samba to version 3.3.3 + #299: add shared-mime-info package + #307: make openssl package respect build flags diff --git a/COPYING b/COPYING new file mode 100644 index 00000000..0c018b03 --- /dev/null +++ b/COPYING @@ -0,0 +1,355 @@ +With the exceptions below, Buildroot is distributed under the terms of +the GNU General Public License, reproduced below; either version 2 of +the License, or (at your option) any later version. + +Some files in Buildroot contain a different license statement. Those +files are licensed under the license contained in the file itself. + +Buildroot also bundles patch files, which are applied to the sources +of the various packages. Those patches are not covered by the license +of Buildroot. Instead, they are covered by the license of the software +to which the patches are applied. When said software is available +under multiple licenses, the Buildroot patches are only provided under +the publicly accessible licenses. + +----------------------------------------------------------------- + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/Config.in b/Config.in new file mode 100644 index 00000000..df43db7e --- /dev/null +++ b/Config.in @@ -0,0 +1,1002 @@ +# + +mainmenu "Buildroot $BR2_VERSION Configuration" + +config BR2_HAVE_DOT_CONFIG + bool + default y + +config BR2_VERSION + string + option env="BR2_VERSION_FULL" + +config BR2_HOSTARCH + string + option env="HOSTARCH" + +config BR2_BASE_DIR + string + option env="BASE_DIR" + +# br2-external paths definitions +source "$BR2_BASE_DIR/.br2-external.in.paths" + +# 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_9 + bool + default y if BR2_HOST_GCC_VERSION = "4 9" + +config BR2_HOST_GCC_AT_LEAST_5 + bool + default y if BR2_HOST_GCC_VERSION = "5" + select BR2_HOST_GCC_AT_LEAST_4_9 + +config BR2_HOST_GCC_AT_LEAST_6 + bool + default y if BR2_HOST_GCC_VERSION = "6" + select BR2_HOST_GCC_AT_LEAST_5 + +config BR2_HOST_GCC_AT_LEAST_7 + bool + default y if BR2_HOST_GCC_VERSION = "7" + select BR2_HOST_GCC_AT_LEAST_6 + +config BR2_HOST_GCC_AT_LEAST_8 + bool + default y if BR2_HOST_GCC_VERSION = "8" + select BR2_HOST_GCC_AT_LEAST_7 + +config BR2_HOST_GCC_AT_LEAST_9 + bool + default y if BR2_HOST_GCC_VERSION = "9" + select BR2_HOST_GCC_AT_LEAST_8 + +config BR2_HOST_GCC_AT_LEAST_10 + bool + default y if BR2_HOST_GCC_VERSION = "10" + select BR2_HOST_GCC_AT_LEAST_9 + +config BR2_HOST_GCC_AT_LEAST_11 + bool + default y if BR2_HOST_GCC_VERSION = "11" + select BR2_HOST_GCC_AT_LEAST_10 + +# When adding new entries above, be sure to update +# the HOSTCC_MAX_VERSION variable in the Makefile. + +# Hidden boolean selected by packages in need of Java in order to build +# (example: kodi) +config BR2_NEEDS_HOST_JAVA + bool + +# Hidden boolean selected by pre-built packages for x86, when they +# need to run on x86-64 machines (example: pre-built external +# toolchains, binary tools, etc.). +config BR2_HOSTARCH_NEEDS_IA32_LIBS + bool + +# Hidden boolean selected by packages that need to build 32 bits +# binaries with the host compiler, even on 64 bits build machines (e.g +# bootloaders). +config BR2_HOSTARCH_NEEDS_IA32_COMPILER + bool + +# Hidden boolean selected by packages that need the host to have an +# UTF8 locale. +config BR2_NEEDS_HOST_UTF8_LOCALE + bool + +# Hidden boolean selected by packages that need the host to have +# support for building gcc plugins +config BR2_NEEDS_HOST_GCC_PLUGIN_SUPPORT + bool + +source "arch/Config.in" + +source "toolchain/Config.in" + +menu "Build options" + +menu "Commands" + +config BR2_CURL + string "Curl command" + default "curl -q --ftp-pasv --retry 3" + +config BR2_WGET + string "Wget command" + default "wget -nd -t 3" + +config BR2_SVN + string "Subversion (svn) command" + default "svn --non-interactive" + +config BR2_BZR + string "Bazaar (bzr) command" + default "bzr" + +config BR2_GIT + string "Git command" + default "git" + +config BR2_CVS + string "CVS command" + default "cvs" + +config BR2_LOCALFILES + string "Local files retrieval command" + default "cp" + +config BR2_SCP + string "Secure copy (scp) command" + default "scp" + +config BR2_SFTP + string "Secure file transfer (sftp) command" + default "sftp" + +config BR2_HG + string "Mercurial (hg) command" + default "hg" + +config BR2_ZCAT + string "zcat command" + default "gzip -d -c" + help + Command to be used to extract a gzip'ed file to stdout. zcat + is identical to gunzip -c except that the former may not be + available on your system. + Default is "gzip -d -c" + Other possible values include "gunzip -c" or "zcat". + +config BR2_BZCAT + string "bzcat command" + default "bzcat" + help + Command to be used to extract a bzip2'ed file to stdout. + bzcat is identical to bunzip2 -c except that the former may + not be available on your system. + Default is "bzcat" + Other possible values include "bunzip2 -c" or "bzip2 -d -c". + +config BR2_XZCAT + string "xzcat command" + default "xzcat" + help + Command to be used to extract a xz'ed file to stdout. + Default is "xzcat" + +config BR2_LZCAT + string "lzcat command" + default "lzip -d -c" + help + Command to be used to extract a lzip'ed file to stdout. + Default is "lzip -d -c" + +config BR2_ZSTDCAT + string "zstdcat command" + default "zstdcat" + help + Command to be used to extract a zstd'ed file to stdout. + Default is "zstdcat" + +config BR2_TAR_OPTIONS + string "Tar options" + default "" + help + Options to pass to tar when extracting the sources. + E.g. " -v --exclude='*.svn*'" to exclude all .svn internal + files and to be verbose. + +endmenu + +config BR2_DEFCONFIG_FROM_ENV + string + option env="BR2_DEFCONFIG" + +config BR2_DEFCONFIG + string "Location to save buildroot config" + default BR2_DEFCONFIG_FROM_ENV if BR2_DEFCONFIG_FROM_ENV != "" + default "$(CONFIG_DIR)/defconfig" + help + When running 'make savedefconfig', the defconfig file will be + saved in this location. + +config BR2_DL_DIR + string "Download dir" + default "$(TOPDIR)/dl" + help + Directory to store all the source files that we need to fetch. + If the Linux shell environment has defined the BR2_DL_DIR + environment variable, then this overrides this configuration + item. + The directory is organized with a subdirectory for each + package. Each package has its own $(LIBFOO_DL_DIR) variable + that can be used to find the correct path. + + The default is $(TOPDIR)/dl + +config BR2_HOST_DIR + string "Host dir" + default "$(BASE_DIR)/host" + help + Directory to store all the binary files that are built for the + host. This includes the cross compilation toolchain when + building the internal buildroot toolchain. + + The default is $(BASE_DIR)/host + +menu "Mirrors and Download locations" + +config BR2_PRIMARY_SITE + string "Primary download site" + default "" + help + Primary site to download from. If this option is set then + buildroot will try to download package source first from this + site and try the default if the file is not found. + Valid URIs are: + - URIs recognized by $(WGET) + - local URIs of the form file://absolutepath + - scp URIs of the form scp://[user@]host:path. + +config BR2_PRIMARY_SITE_ONLY + bool "Only allow downloads from primary download site" + depends on BR2_PRIMARY_SITE != "" + help + If this option is enabled, downloads will only be attempted + from the primary download site. Other locations, like the + package's official download location or the backup download + site, will not be considered. Therefore, if the package is not + present on the primary site, the download fails. + + This is useful for project developers who want to ensure that + the project can be built even if the upstream tarball + locations disappear. + +if !BR2_PRIMARY_SITE_ONLY + +config BR2_BACKUP_SITE + string "Backup download site" + default "https://sources.buildroot.net" + help + Backup site to download from. If this option is set then + buildroot will fall back to download package sources from here + if the normal location fails. + +config BR2_KERNEL_MIRROR + string "Kernel.org mirror" + default "https://cdn.kernel.org/pub" + help + kernel.org is mirrored on a number of servers around the + world. The following allows you to select your preferred + mirror. By default, a CDN is used, which automatically + redirects to a mirror geographically close to you. + + Have a look on the kernel.org site for a list of mirrors, then + enter the URL to the base directory. Examples: + + http://www.XX.kernel.org/pub (XX = country code) + http://mirror.aarnet.edu.au/pub/ftp.kernel.org + +config BR2_GNU_MIRROR + string "GNU Software mirror" + default "http://ftpmirror.gnu.org" + help + GNU has multiple software mirrors scattered around the + world. The following allows you to select your preferred + mirror. By default, a generic address is used, which + automatically selects an up-to-date and local mirror. + + Have a look on the gnu.org site for a list of mirrors, then + enter the URL to the base directory. Examples: + + http://ftp.gnu.org/pub/gnu + http://mirror.aarnet.edu.au/pub/gnu + +config BR2_LUAROCKS_MIRROR + string "LuaRocks mirror" + default "http://rocks.moonscript.org" + help + LuaRocks repository. + + See http://luarocks.org + +config BR2_CPAN_MIRROR + string "CPAN mirror (Perl packages)" + default "https://cpan.metacpan.org" + help + CPAN (Comprehensive Perl Archive Network) is a repository of + Perl packages. It has multiple software mirrors scattered + around the world. This option allows you to select a mirror. + + The list of mirrors is available at: + http://mirrors.cpan.org/ (tabular) + http://mirrors.cpan.org/map.html (clickable world map) + +endif + +endmenu + +config BR2_JLEVEL + int "Number of jobs to run simultaneously (0 for auto)" + default "0" + help + Number of jobs to run simultaneously. If 0, determine + automatically according to number of CPUs on the host system. + +comment "ccache needs a host gcc >= 8" + depends on !BR2_HOST_GCC_AT_LEAST_8 + +config BR2_CCACHE + bool "Enable compiler cache" + depends on BR2_HOST_GCC_AT_LEAST_8 + help + This option will enable the use of ccache, a compiler cache. + It will cache the result of previous builds to speed up future + builds. By default, the cache is stored in + $HOME/.buildroot-ccache. + + Note that Buildroot does not try to invalidate the cache + contents when the compiler changes in an incompatible way. + Therefore, if you make a change to the compiler version and/or + configuration, you are responsible for purging the ccache + cache by removing the $HOME/.buildroot-ccache directory. + +if BR2_CCACHE + +config BR2_CCACHE_DIR + string "Compiler cache location" + default "$(HOME)/.buildroot-ccache" + help + Where ccache should store cached files. + If the Linux shell environment has defined the BR2_CCACHE_DIR + environment variable, then this overrides this configuration + item. + +config BR2_CCACHE_INITIAL_SETUP + string "Compiler cache initial setup" + help + Initial ccache settings to apply, such as --max-files or + --max-size. + + For example, if your project is known to require more space + than the default max cache size, then you might want to + increase the cache size to a suitable amount using the -M + (--max-size) option. + + The string you specify here is passed verbatim to ccache. + Refer to ccache documentation for more details. + + These initial settings are applied after ccache has been + compiled. + +config BR2_CCACHE_USE_BASEDIR + bool "Use relative paths" + default y + help + Allow ccache to convert absolute paths within the output + directory into relative paths. + + During the build, many -I include directives are given with an + absolute path. These absolute paths end up in the hashes that + are computed by ccache. Therefore, when you build from a + different directory, the hash will be different and the cached + object will not be used. + + To improve cache performance, set this option to y. This + allows ccache to rewrite absolute paths within the output + directory into relative paths. Note that only paths within the + output directory will be rewritten; therefore, if you change + BR2_HOST_DIR to point outside the output directory and + subsequently move it to a different location, this will lead + to cache misses. + + This option has as a result that the debug information in the + object files also has only relative paths. Therefore, make + sure you cd to the build directory before starting gdb. See + the section "COMPILING IN DIFFERENT DIRECTORIES" in the ccache + manual for more information. + +endif + +config BR2_ENABLE_DEBUG + bool "build packages with debugging symbols" + help + Build packages with debugging symbols enabled. All libraries + and binaries in the 'staging' directory will have debugging + symbols, which allows remote debugging even if libraries and + binaries are stripped on the target. Whether libraries and + binaries are stripped on the target is controlled by the + BR2_STRIP_* options below. + +if BR2_ENABLE_DEBUG +choice + prompt "gcc debug level" + default BR2_DEBUG_2 + help + Set the debug level for gcc + +config BR2_DEBUG_1 + bool "debug level 1" + help + Debug level 1 produces minimal information, enough for making + backtraces in parts of the program that you don't plan to + debug. This includes descriptions of functions and external + variables, but no information about local variables and no + line numbers. + +config BR2_DEBUG_2 + bool "debug level 2" + help + The default gcc debug level is 2 + +config BR2_DEBUG_3 + bool "debug level 3" + help + Level 3 includes extra information, such as all the macro + definitions present in the program. Some debuggers support + macro expansion when you use -g3. +endchoice +endif + +config BR2_ENABLE_RUNTIME_DEBUG + bool "build packages with runtime debugging info" + help + Some packages may have runtime assertions, extra traces, and + similar runtime elements that can help debugging. However, + these elements may negatively influence performance so should + normally not be enabled on production systems. + + Enable this option to enable such runtime debugging. + + Note: disabling this option is not a guarantee that all + packages effectively removed these runtime debugging elements. + +config BR2_STRIP_strip + bool "strip target binaries" + default y + depends on BR2_BINFMT_ELF + help + Binaries and libraries in the target filesystem will be + stripped using the normal 'strip' command. This allows to save + space, mainly by removing debugging symbols. Debugging symbols + on the target are needed for native debugging, but not when + remote debugging is used. + +config BR2_STRIP_EXCLUDE_FILES + string "executables that should not be stripped" + default "" + depends on BR2_STRIP_strip + help + You may specify a space-separated list of binaries and + libraries here that should not be stripped on the target. + +config BR2_STRIP_EXCLUDE_DIRS + string "directories that should be skipped when stripping" + default "" + depends on BR2_STRIP_strip + help + You may specify a space-separated list of directories that + should be skipped when stripping. Binaries and libraries in + these directories will not be touched. The directories should + be specified relative to the target directory, without leading + slash. + +choice + prompt "gcc optimization level" + default BR2_OPTIMIZE_2 + help + Set the optimization level for gcc + +config BR2_OPTIMIZE_0 + bool "optimization level 0" + help + Do not optimize. + +config BR2_OPTIMIZE_1 + bool "optimization level 1" + help + Optimize. Optimizing compilation takes somewhat more time, and + a lot more memory for a large function. With -O, the compiler + tries to reduce code size and execution time, without + performing any optimizations that take a great deal of + compilation time. -O turns on the following optimization + flags: -fdefer-pop -fdelayed-branch -fguess-branch-probability + -fcprop-registers -floop-optimize -fif-conversion + -fif-conversion2 -ftree-ccp -ftree-dce -ftree-dominator-opts + -ftree-dse -ftree-ter -ftree-lrs -ftree-sra -ftree-copyrename + -ftree-fre -ftree-ch -funit-at-a-time -fmerge-constants. -O + also turns on -fomit-frame-pointer on machines where doing so + does not interfere with debugging. + +config BR2_OPTIMIZE_2 + bool "optimization level 2" + help + Optimize even more. GCC performs nearly all supported + optimizations that do not involve a space-speed tradeoff. The + compiler does not perform loop unrolling or function inlining + when you specify -O2. As compared to -O, this option increases + both compilation time and the performance of the generated + code. -O2 turns on all optimization flags specified by -O. It + also turns on the following optimization flags: + -fthread-jumps -fcrossjumping -foptimize-sibling-calls + -fcse-follow-jumps -fcse-skip-blocks -fgcse -fgcse-lm + -fexpensive-optimizations -fstrength-reduce + -frerun-cse-after-loop -frerun-loop-opt -fcaller-saves + -fpeephole2 -fschedule-insns -fschedule-insns2 + -fsched-interblock -fsched-spec -fregmove -fstrict-aliasing + -fdelete-null-pointer-checks -freorder-blocks + -freorder-functions -falign-functions -falign-jumps + -falign-loops -falign-labels -ftree-vrp -ftree-pre. Please + note the warning under -fgcse about invoking -O2 on programs + that use computed gotos. + This is the default. + +config BR2_OPTIMIZE_3 + bool "optimization level 3" + help + Optimize yet more. -O3 turns on all optimizations specified by + -O2 and also turns on the -finline-functions, -funswitch-loops + and -fgcse-after-reload options. + +config BR2_OPTIMIZE_G + bool "optimize for debugging" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + help + Optimize for debugging. This enables optimizations that do not + interfere with debugging. It should be the optimization level + of choice for the standard edit-compile-debug cycle, offering + a reasonable level of optimization while maintaining fast + compilation and a good debugging experience. + +config BR2_OPTIMIZE_S + bool "optimize for size" + help + Optimize for size. -Os enables all -O2 optimizations that do + not typically increase code size. It also performs further + optimizations designed to reduce code size. -Os disables the + following optimization flags: -falign-functions -falign-jumps + -falign-loops -falign-labels -freorder-blocks + -freorder-blocks-and-partition -fprefetch-loop-arrays + -ftree-vect-loop-version + +config BR2_OPTIMIZE_FAST + bool "optimize for fast (may break packages!)" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 + help + Optimize for fast. Disregard strict standards + compliance. -Ofast enables all -O3 optimizations. It also + enables optimizations that are not valid for all + standard-compliant programs, so be careful, as it may break + some packages. It turns on -ffast-math and the + Fortran-specific -fstack-arrays, unless -fmax-stack-var-size + is specified, and -fno-protect-parens. + +endchoice + +config BR2_ENABLE_LTO + bool "build packages with link-time optimisation" + help + Enable the link-time optimisation (LTO) option when building + packages. Link-time optimisation re-runs optimisations at + link time, which allows the compiler to do interprocedural + analysis across compilation units and thus come with better + results: smaller size and better performance. + + Note that this analysis is limited to statically linked + object files and libraries. + + This option may significantly increase build times, + sometimes 5 times longer, with only limited gains. + + At this time, this option only enables LTO in packages that + have an explicit configuration option for it. Other packages + always enable LTO, but most packages never enable LTO. + +config BR2_GOOGLE_BREAKPAD_ENABLE + bool "Enable google-breakpad support" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17 + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS + select BR2_PACKAGE_GOOGLE_BREAKPAD + help + This option will enable the use of google breakpad, a library + and tool suite that allows you to distribute an application to + users with compiler-provided debugging information removed, + record crashes in compact "minidump" files, send them back to + your server and produce C and C++ stack traces from these + minidumps. Breakpad can also write minidumps on request for + programs that have not crashed. + +if BR2_GOOGLE_BREAKPAD_ENABLE + +config BR2_GOOGLE_BREAKPAD_INCLUDE_FILES + string "List of executables and libraries to extract symbols from" + default "" + help + You may specify a space-separated list of binaries and + libraries with full paths relative to $(TARGET_DIR) of which + debug symbols will be dumped for further use with google + breakpad. + + A directory structure that can be used by minidump-stackwalk + will be created at: + + $(STAGING_DIR)/usr/share/google-breakpad-symbols + +endif + +choice + bool "libraries" + default BR2_SHARED_LIBS if BR2_BINFMT_SUPPORTS_SHARED + default BR2_STATIC_LIBS if !BR2_BINFMT_SUPPORTS_SHARED + help + Select the type of libraries you want to use on the target. + + The default is to build dynamic libraries and use those on the + target filesystem, except when the architecture and/or the + selected binary format does not support shared libraries. + +config BR2_STATIC_LIBS + bool "static only" + depends on !BR2_TOOLCHAIN_USES_GLIBC + help + Build and use only static libraries. No shared libraries will + be installed on the target. This potentially increases your + code size and should only be used if you know what you are + doing. Note that some packages may not be available when this + option is enabled, due to their need for dynamic library + support. + +comment "static only needs a toolchain w/ uclibc or musl" + depends on BR2_TOOLCHAIN_USES_GLIBC + +config BR2_SHARED_LIBS + bool "shared only" + depends on BR2_BINFMT_SUPPORTS_SHARED + help + Build and use only shared libraries. This is the recommended + solution as it saves space and build time. + +config BR2_SHARED_STATIC_LIBS + bool "both static and shared" + depends on BR2_BINFMT_SUPPORTS_SHARED + help + Build both shared and static libraries, but link executables + dynamically. While building both shared and static libraries + take more time and more disk space, having static libraries + may be useful to link some of the applications statically. + +endchoice + +config BR2_PACKAGE_OVERRIDE_FILE + string "location of a package override file" + default "$(CONFIG_DIR)/local.mk" + help + A package override file is a short makefile that contains + variable definitions of the form _OVERRIDE_SRCDIR, which + allows to tell Buildroot to use an existing directory as the + source directory for a particular package. See the Buildroot + documentation for more details on this feature. + +config BR2_GLOBAL_PATCH_DIR + string "global patch and hash directories" + help + You may specify a space separated list of one or more + directories containing global package patches and/or hashes. + For a specific version of a specific package + , patches are looked up as follows: + + First, the default Buildroot patch set for the package is + applied from the package's directory in Buildroot. + + Then for every directory - - that exists in + BR2_GLOBAL_PATCH_DIR, if the directory + /// exists, + then all *.patch files in this directory will be applied. + + Otherwise, if the directory / + exists, then all *.patch files in the directory will be + applied. + + The hash files are looked up similarly to the patches. + +menu "Advanced" + +config BR2_FORCE_HOST_BUILD + bool "Force the building of host dependencies" + help + Build all available host dependencies, even if they are + already installed on the system. + + This option can be used to ensure that the download cache of + source archives for packages remain consistent between + different build hosts. + + This option will increase build time. + +config BR2_DOWNLOAD_FORCE_CHECK_HASHES + bool "Force all downloads to have a valid hash" + help + Say 'y' here to enforce downloads to have at least one valid + hash (and of course, that all hashes be valid). + + By default, Buildroot checks hashes of all packages + downloaded, except those for which a custom version is + used. + + With this option turned on, Buildroot will check hashes of + all packages, including those that use a custom version. In + order to provide hashes for such packages, place additional + hash files in BR2_GLOBAL_PATCH_DIR directories. + +config BR2_REPRODUCIBLE + bool "Make the build reproducible (experimental)" + # SOURCE_DATE_EPOCH support in toolchain-wrapper requires GCC 4.4 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 + help + This option will remove all sources of non-reproducibility + from the build process. For a given Buildroot configuration, + this allows to generate exactly identical binaries from one + build to the other, including on different machines. + + The current implementation is restricted to builds with the + same output directory. Many (absolute) paths are recorded in + intermediary files, and it is very likely that some of these + paths leak into the target rootfs. If you build with the + same O=... path, however, the result is identical. + + This is labeled as an experimental feature, as not all + packages behave properly to ensure reproducibility. + +config BR2_PER_PACKAGE_DIRECTORIES + bool "Use per-package directories (experimental)" + help + This option will change the build process of Buildroot + package to use per-package target and host directories. + + This is useful for two related purposes: + + - Cleanly isolate the build of each package, so that a + given package only "sees" the dependencies it has + explicitly expressed, and not other packages that may + have by chance been built before. + + - Enable top-level parallel build. + + This is labeled as an experimental feature, as not all + packages behave properly with per-package directories. + +endmenu + +config BR2_TIME_BITS_64 + bool "Build Y2038-ready code" + depends on BR2_TOOLCHAIN_USES_GLIBC && !BR2_ARCH_IS_64 + help + This option will pass -D_TIME_BITS=64 in the compiler flags + to ensure the glibc C library uses a 64-bit representation + for time_t and other time types, which ensures that + programs/libraries will correctly handle time past year + 2038. + + This option only has an effect with glibc >= 2.34, as + earlier glibc versions did not have support for 64-bit + time_t. + +comment "Security Hardening Options" + +config BR2_PIC_PIE_ARCH_SUPPORTS + bool + default y + # Microblaze glibc toolchains don't work with PIC/PIE enabled + depends on !BR2_microblaze + # Nios2 toolchains produce non working binaries with -fPIC + depends on !BR2_nios2 + +config BR2_PIC_PIE + bool "Build code with PIC/PIE" + default y + depends on BR2_PIC_PIE_ARCH_SUPPORTS + depends on BR2_SHARED_LIBS + depends on BR2_TOOLCHAIN_SUPPORTS_PIE + help + Generate Position-Independent Code (PIC) and link + Position-Independent Executables (PIE). + +comment "PIC/PIE needs a toolchain w/ PIE" + depends on BR2_PIC_PIE_ARCH_SUPPORTS + depends on BR2_SHARED_LIBS + depends on !BR2_TOOLCHAIN_SUPPORTS_PIE + +choice + bool "Stack Smashing Protection" + default BR2_SSP_ALL if BR2_ENABLE_SSP # legacy + default BR2_SSP_STRONG if BR2_TOOLCHAIN_HAS_SSP_STRONG + default BR2_SSP_REGULAR + depends on BR2_TOOLCHAIN_HAS_SSP + help + Enable stack smashing protection support using GCC's + -fstack-protector option family. + + See + http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt + for details. + + Note that this requires the toolchain to have SSP support. + This is always the case for glibc and eglibc toolchain, but is + optional in uClibc toolchains. + +config BR2_SSP_NONE + bool "None" + help + Disable stack-smashing protection. + +config BR2_SSP_REGULAR + bool "-fstack-protector" + help + Emit extra code to check for buffer overflows, such as stack + smashing attacks. This is done by adding a guard variable to + functions with vulnerable objects. This includes functions + that call alloca, and functions with buffers larger than 8 + bytes. The guards are initialized when a function is entered + and then checked when the function exits. If a guard check + fails, an error message is printed and the program exits. + +config BR2_SSP_STRONG + bool "-fstack-protector-strong" + depends on BR2_TOOLCHAIN_HAS_SSP_STRONG + help + Like -fstack-protector but includes additional functions to be + protected - those that have local array definitions, or have + references to local frame addresses. + + -fstack-protector-strong officially appeared in gcc 4.9, but + some vendors have backported -fstack-protector-strong to older + versions of gcc. + +config BR2_SSP_ALL + bool "-fstack-protector-all" + help + Like -fstack-protector except that all functions are + protected. This option might have a significant performance + impact on the compiled binaries. + +endchoice + +config BR2_SSP_OPTION + string + default "-fstack-protector" if BR2_SSP_REGULAR + default "-fstack-protector-strong" if BR2_SSP_STRONG + default "-fstack-protector-all" if BR2_SSP_ALL + +comment "Stack Smashing Protection needs a toolchain w/ SSP" + depends on !BR2_TOOLCHAIN_HAS_SSP + +choice + bool "RELRO Protection" + default BR2_RELRO_FULL if BR2_TOOLCHAIN_SUPPORTS_PIE + default BR2_RELRO_PARTIAL + depends on BR2_SHARED_LIBS + help + Enable a link-time protection know as RELRO (RELocation Read + Only) which helps to protect from certain type of exploitation + techniques altering the content of some ELF sections. + +config BR2_RELRO_NONE + bool "None" + help + Disables Relocation link-time protections. + +config BR2_RELRO_PARTIAL + bool "Partial" + help + This option makes the dynamic section not writeable after + initialization (with almost no performance penalty). + +config BR2_RELRO_FULL + bool "Full" + depends on BR2_PIC_PIE_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_SUPPORTS_PIE + select BR2_PIC_PIE + help + This option includes the partial configuration, but also marks + the GOT as read-only at the cost of initialization time during + program loading, i.e every time an executable is started. + +comment "RELRO Full needs a toolchain w/ PIE" + depends on BR2_PIC_PIE_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_SUPPORTS_PIE + +endchoice + +comment "RELocation Read Only (RELRO) needs shared libraries" + depends on !BR2_SHARED_LIBS + +config BR2_FORTIFY_SOURCE_ARCH_SUPPORTS + bool + default y + # Microblaze glibc toolchains don't work with Fortify Source enabled + depends on !BR2_microblaze + +choice + bool "Buffer-overflow Detection (FORTIFY_SOURCE)" + default BR2_FORTIFY_SOURCE_1 + depends on BR2_FORTIFY_SOURCE_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on !BR2_OPTIMIZE_0 + help + Enable the _FORTIFY_SOURCE macro which introduces additional + checks to detect buffer-overflows in the following standard + library functions: memcpy, mempcpy, memmove, memset, strcpy, + stpcpy, strncpy, strcat, strncat, sprintf, vsprintf, snprintf, + vsnprintf, gets. + + NOTE: This feature requires an optimization level of s/1/2/3/g + + Support for this feature has been present since GCC 4.x. + +config BR2_FORTIFY_SOURCE_NONE + bool "None" + help + Disables additional checks to detect buffer-overflows. + +config BR2_FORTIFY_SOURCE_1 + bool "Conservative" + # gcc bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61164 + depends on !BR2_TOOLCHAIN_BUILDROOT || BR2_TOOLCHAIN_GCC_AT_LEAST_6 + help + This option sets _FORTIFY_SOURCE to 1 and only introduces + checks that shouldn't change the behavior of conforming + programs. Adds checks at compile-time only. + +config BR2_FORTIFY_SOURCE_2 + bool "Aggressive" + # gcc bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61164 + depends on !BR2_TOOLCHAIN_BUILDROOT || BR2_TOOLCHAIN_GCC_AT_LEAST_6 + help + This option sets _FORTIFY_SOURCES to 2 and some more + checking is added, but some conforming programs might fail. + Also adds checks at run-time (detected buffer overflow + terminates the program) + +config BR2_FORTIFY_SOURCE_3 + bool "Extended" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_12 + help + This option sets _FORTIFY_SOURCES to 3 and even more + checking is added compared to level 2. Extends checks at + run-time that can introduce an additional performance + overhead. + +endchoice + +comment "Fortify Source needs a glibc toolchain and optimization" + depends on BR2_FORTIFY_SOURCE_ARCH_SUPPORTS + depends on (!BR2_TOOLCHAIN_USES_GLIBC || BR2_OPTIMIZE_0) +endmenu + +source "system/Config.in" + +source "linux/Config.in" + +source "package/Config.in" + +source "fs/Config.in" + +source "boot/Config.in" + +source "package/Config.in.host" + +source "Config.in.legacy" + +# br2-external menus definitions +source "$BR2_BASE_DIR/.br2-external.in.menus" diff --git a/Config.in.legacy b/Config.in.legacy new file mode 100644 index 00000000..d1f892dd --- /dev/null +++ b/Config.in.legacy @@ -0,0 +1,5729 @@ +# +# Config.in.legacy - support for backward compatibility +# +# When an existing Config.in symbol is removed, it should be added again in +# this file, and take appropriate action to approximate backward compatibility. +# This will make the transition for the user more convenient. +# +# When adding legacy symbols to this file, add them to the front. The oldest +# symbols will be removed again after about two years. +# +# The symbol should be copied as-is from the place where it was previously +# defined, but the help text should be removed or replaced with something that +# explains how to fix it. +# +# For bool options, the old symbol should select BR2_LEGACY, so that the user +# is informed at build-time about selected legacy options. +# If there is an equivalent (set of) new symbols, these should be select'ed by +# the old symbol for backwards compatibility. +# It is not possible to select an option that is part of a choice. In that +# case, the new option should use the old symbol as default. This requires a +# change outside of Config.in.legacy, and this should be clearly marked as such +# in a comment, so that removal of legacy options also include the removal of +# these external references. +# +# [Example: renaming a bool option that is part of a choice from FOO to BAR] +# original choice: +# choice +# prompt "Choose foobar" +# config BR2_FOO_1 +# bool "foobar 1" +# config BR2_FOO_2 +# bool "foobar 2" +# endchoice +# +# becomes: +# choice +# prompt "Choose foobar" +# default BR2_BAR_1 if BR2_FOO_1 # legacy +# default BR2_BAR_2 if BR2_FOO_2 # legacy +# config BR2_BAR_1 +# bool "foobar 1" +# config BR2_BAR_2 +# bool "foobar 2" +# endchoice +# +# and in Config.in.legacy: +# config BR2_FOO_1 +# bool "foobar 1 has been renamed" +# help +# +# # Note: BR2_FOO_1 is still referenced from package/foo/Config.in +# config BR2_FOO_2 +# bool "foobar 2 has been renamed" +# help +# +# # Note: BR2_FOO_2 is still referenced from package/foo/Config.in +# +# [End of example] +# +# For string options, it is not possible to directly select another symbol. In +# this case, a hidden wrap bool option has to be added, that defaults to y if +# the old string is not set at its default value. The wrap symbol should select +# BR2_LEGACY. +# If the original symbol has been renamed, the new symbol should use the value +# of the old symbol as default. Like for choice options, a comment should be +# added to flag that the symbol is still used in another file. +# +# [Example: renaming a string option from FOO to BAR] +# original symbol: +# config BR2_FOO_STRING +# string "Some foo string" +# +# becomes: +# config BR2_BAR_STRING +# string "Some bar string" +# default BR2_FOO_STRING if BR2_FOO_STRING != "" # legacy +# +# and in Config.in.legacy: +# config BR2_FOO_STRING +# string "The foo string has been renamed" +# help +# +# +# config BR2_FOO_STRING_WRAP +# bool +# default y if BR2_FOO_STRING != "" +# select BR2_LEGACY +# +# # Note: BR2_FOO_STRING is still referenced from package/foo/Config.in +# +# [End of example] + +config BR2_SKIP_LEGACY + bool + option env="SKIP_LEGACY" + +if !BR2_SKIP_LEGACY + +config BR2_LEGACY + bool + help + This option is selected automatically when your old .config + uses an option that no longer exists in current buildroot. In + that case, the build will fail. Look for config options which + are selected in the menu below: they no longer exist and + should be replaced by something else. + +# This comment fits exactly in a 80-column display +comment "Legacy detected: check the content of the menu below" + depends on BR2_LEGACY + +menu "Legacy config options" + +if BR2_LEGACY +comment "----------------------------------------------------" +comment "Your old configuration uses legacy options that no " +comment "longer exist in buildroot, as indicated in the menu " +comment "below. As long as these options stay selected, or in" +comment "case of string options are non-empty, the build " +comment "will fail. " +comment "* " +comment "Where possible, an automatic conversion from old to " +comment "new symbols has been performed. Before making any " +comment "change in this legacy menu, make sure to exit the " +comment "configuration editor a first time and save the " +comment "configuration. Otherwise, the automatic conversion " +comment "of symbols will be lost. " +comment "* " +comment "After this initial save, reopen the configuration " +comment "editor, inspect the options selected below, read " +comment "their help texts, and verify/update the new " +comment "configuration in the corresponding configuration " +comment "menus. When everything is ok, you can disable the " +comment "legacy options in the menu below. Once you have " +comment "disabled all legacy options, this text will " +comment "disappear and you will be able to start the build. " +comment "* " +comment "Note: legacy options older than 5 years have been " +comment "removed, and configuration files that still have " +comment "those options set, will fail to build, or run in " +comment "unpredictable ways. " +comment "----------------------------------------------------" +endif + +############################################################################### + +comment "Legacy options removed in 2024.08" + +config BR2_PACKAGE_MIDORI + bool "midori has been removed" + select BR2_LEGACY + help + The original WebKitGTK-based Midori is no longer maintained + and doesn't build since WebKitGTK moved to libsoup3 as of + commit 38a098df133aaa2ebf09742054b02db5a44f58e5. + +config BR2_PACKAGE_FROTZ + bool "frotz has been removed" + select BR2_LEGACY + help + This package was causing build breakage, and was no longer + maintained in Buildroot. + +config BR2_PACKAGE_FAN_CTRL + bool "fan-ctrl has been removed" + select BR2_LEGACY + help + This package was no longer available from SourceForge, the + upstream is completely dead. + +config BR2_PACKAGE_FLUTTER_DYNAMIC_LAYOUTS_EXAMPLE + bool "flutter-dynamic-layouts-example has been removed" + select BR2_LEGACY + help + flutter-dynamic-layouts was removed from flutter-packages + as of commit e35f29177495131f0f598fc7ae1ffd74d89edf15. + +config BR2_KERNEL_HEADERS_6_9 + bool "kernel headers version 6.9.x are no longer supported" + select BR2_LEGACY + help + Version 6.9.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_x86_knightslanding + bool "knightslanding x86 architecture support dropped" + select BR2_LEGACY + help + GCC 14.x has marked this architecture as obsolete, and emits + a warning causing build failures. + +config BR2_x86_knightsmill + bool "knightsmill x86 architecture support dropped" + select BR2_LEGACY + help + GCC 14.x has marked this architecture as obsolete, and emits + a warning causing build failures. + +config BR2_PACKAGE_DVB_APPS + bool "dvb-apps package removed" + select BR2_LEGACY + help + The dvb-apps package was removed as it is not maintained + anymore (no commit since 2014). + +config BR2_PACKAGE_GAMIN + bool "gamin package removed" + select BR2_LEGACY + help + The gamin package was removed as it is not maintained + anymore (no commit since 2016). + +config BR2_PACKAGE_CAIRO_SVG + bool "cairo svg support" + select BR2_LEGACY + select BR2_PACKAGE_CAIRO_PNG + help + Cairo SVG is compiled together with PNG. + +config BR2_PACKAGE_CAIRO_SCRIPT + bool "cairo script support" + select BR2_LEGACY + select BR2_PACKAGE_CAIRO_ZLIB + help + Cairo script got merged into cairo zlib. + +config BR2_PACKAGE_CAIRO_PS + bool "cairo postscript support" + select BR2_LEGACY + select BR2_PACKAGE_CAIRO_ZLIB + help + Cairo PS got merged into cairo zlib. + +config BR2_PACKAGE_CAIRO_PDF + bool "cairo pdf support" + select BR2_LEGACY + select BR2_PACKAGE_CAIRO_ZLIB + help + Cairo PDF got merged into cairo zlib. + +config BR2_PACKAGE_CAIRO_XML + bool "cairo xml support" + select BR2_LEGACY + select BR2_PACKAGE_CAIRO_ZLIB + help + Cairo XML got merged into cairo zlib. + +config BR2_GDB_VERSION_12 + bool "gdb 12.x has been removed" + select BR2_LEGACY + help + GDB 12.x has been removed. The new default version of GDB + 14.x has been automatically selected instead. + +config BR2_TARGET_BEAGLEV_DDRINIT + bool "beaglev-ddrinit has been removed" + select BR2_LEGACY + help + The beaglev-secondboot package has been removed after + the beaglev_defconfig removal. + +config BR2_TARGET_BEAGLEV_SECONDBOOT + bool "beaglev-secondboot has been removed" + select BR2_LEGACY + help + The beaglev-secondboot package has been removed after + the beaglev_defconfig removal. + +config BR2_PACKAGE_ONEVPL_INTEL_GPU + bool "onevpl-intel-gpu has been renamed" + select BR2_LEGACY + select BR2_PACKAGE_INTEL_VPL_GPU_RT + help + The onevpl-intel-gpu package has been renamed to + intel-vpl-gpu-rt. + +config BR2_PACKAGE_CGIC + bool "cgic has been removed" + select BR2_LEGACY + help + the cgic upstream no longer exists. + +config BR2_PACKAGE_BEECRYPT + bool "beecrypt package removed" + select BR2_LEGACY + help + The beecrypt package was removed as it is not maintained + anymore (no release since 2015). + +config BR2_PACKAGE_VERSAL_FIRMWARE + bool "versal-firmware has been replaced by xilinx-prebuilt" + select BR2_TARGET_XILINX_PREBUILT + select BR2_LEGACY + help + The versal-firmware package has been replaced by the more + generic xilinx-prebuilt package. + +config BR2_KERNEL_HEADERS_6_8 + bool "kernel headers version 6.8.x are no longer supported" + select BR2_LEGACY + help + Version 6.8.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_TARGET_AT91BOOTSTRAP + bool "at91bootstrap removed" + select BR2_LEGACY + help + Upstream for at91bootstrap 1.x is no longer available and + has been replaced by at91bootstrap3. + +config BR2_TARGET_AT91DATAFLASHBOOT + bool "at91dataflashboot removed" + select BR2_LEGACY + help + at91dataflashboot has been replaced by at91bootstrap3. + +config BR2_PACKAGE_ON2_8170_MODULES + bool "on2-8170-modules removed" + select BR2_LEGACY + help + The corresponding library and gstreamer 0.10 plugin are no + longer available. + +config BR2_PACKAGE_ON2_8170_LIBS + bool "on2-8170-libs removed" + select BR2_LEGACY + help + Upstream for this binary only library is no longer available. + +config BR2_GCC_VERSION_11_X + bool "gcc 11.x support removed" + select BR2_LEGACY + help + Support for gcc version 11.x has been removed. The current + default version (13.x or later) has been selected instead. + +config BR2_BINFMT_FLAT_SHARED + bool "FLAT shared binary format removed" + select BR2_LEGACY + help + Support for the FLAT shared binary format has been removed: + its support was removed from the Linux kernel, and also from + uClibc-ng, the only C library that supported it. + +config BR2_PACKAGE_OMXPLAYER + bool "omxplayer removed" + select BR2_LEGACY + help + Package was deprecated in 2020 and is broken with ffmpeg 6.x + +config BR2_KERNEL_HEADERS_6_7 + bool "kernel headers version 6.7.x are no longer supported" + select BR2_LEGACY + help + Version 6.7.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_TARGET_TI_K3_IMAGE_GEN + bool "ti-k3-image-gen removed" + select BR2_LEGACY + help + ti-k3-image-gen tool has been removed and replaced by + U-Boot binman tool (requires U-boot >= 2023.10). + +config BR2_TARGET_UBOOT_NEEDS_TI_K3_DM + bool "u-boot TI K3 DM option has been removed." + select BR2_LEGACY + help + The TI K3 Device Manager is already included in + ti-k3-boot-firmware. + +config BR2_PACKAGE_FLUTTER_GALLERY + bool "flutter-gallery removed" + select BR2_LEGACY + help + flutter-gallery has been removed due to being abandoned + and no longer working with flutter 3.19+. It is replaced by + flutter-packages, where individual sub-packages (examples) + must be selected for the build. + +config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS + bool "Codescape IMG GNU Linux Toolchain 2018.09 has been removed" + select BR2_LEGACY + help + The Codescape IMG GNU Linux toolchain has been removed, use a + Bootlin toolchain instead. + +config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS + bool "Codescape MTI GNU Linux Toolchain 2018.09 has been removed" + select BR2_LEGACY + help + The Codescape MTI GNU Linux toolchain has been removed, use a + Bootlin toolchain instead. + +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64 + bool "CodeSourcery AArch64 2014.11 has been removed" + select BR2_LEGACY + help + The Sourcery CodeBench AArch64 toolchain has been removed, + use an ARM/Bootlin/Linaro toolchain instead. + +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM + bool "Sourcery CodeBench ARM 2014.05 has been removed" + select BR2_LEGACY + help + The Sourcery CodeBench ARM toolchain has been removed, use + an ARM/Bootlin/Linaro toolchain instead. + +config BR2_BINUTILS_VERSION_2_39_X + bool "binutils 2.39 has been removed" + select BR2_LEGACY + help + binutils 2.39 has been removed, use a newer version. + +comment "Legacy options removed in 2024.02" + +config BR2_PACKAGE_MYSQL + bool "mysql virtual package removed" + select BR2_LEGACY + help + The mysql virtual package has been removed as mariadb is the + only supported mysql variant. Use the mariadb package + instead. + +config BR2_PACKAGE_ORACLE_MYSQL + bool "oracle mysql removed" + select BR2_LEGACY + help + Oracle mysql has been removed as the package was + unmaintained. Consider using mariadb instead. + +config BR2_PACKAGE_STRONGSWAN_SCEP + bool "strongswan SCEP client tool removed" + select BR2_LEGACY + help + "ipsec scepclient" tool has been removed and replaced by the + pki subcommands "pki --scep" and "pki --scepca" which + implement the new SCEP RFC 8894 standard that was released in + September 2020 and which supports trusted "certificate + renewal" based on the existing client certificate. + +config BR2_PACKAGE_SHADOW_UTMPX + bool "shadow utmpx removed" + select BR2_LEGACY + help + UTMPX has been dropped by upstream. + +config BR2_PACKAGE_TINYMEMBENCH + bool "tinymembench removed" + select BR2_LEGACY + help + tinymembench has been removed due to being abandoned. + +config BR2_PACKAGE_DAVINCI_BOOTCOUNT + bool "davinci-bootcount has been renamed" + select BR2_LEGACY + select BR2_PACKAGE_UBOOT_BOOTCOUNT + help + The davinci-bootcount package has been renamed to + uboot-bootcount. + +config BR2_PACKAGE_PYTHON_CROSSBAR + bool "python-crossbar removed" + select BR2_LEGACY + help + python-crossbar has been removed. The current package has + not received an update since Sat Oct 9 13:55:06 2021 commit: + 33ece2446e25e20929d1c7eefa9f3244a3b79a92 and is not python + 3.12.0 compatible. + + Furthermore, the current version requires at least 42 new + packages worth of depedencies of which several require + patches to be python 3.12.0 compatible. As nobody has + stepped up to maintain the package and its ever-growing list + of dependencies, along with the other problems, it was time + to drop the package. + +config BR2_PACKAGE_PYTHON_PYGAME + bool "python-pygame removed" + select BR2_LEGACY + help + python-pygame has been removed due to being abandoned and + the old version no longer building with python 3.12.0. + +config BR2_KERNEL_HEADERS_4_14 + bool "kernel headers version 4.14.x are no longer supported" + select BR2_LEGACY + help + Version 4.14.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_PACKAGE_LIBCAMERA_PIPELINE_RASPBERRYPI + bool "libcamera pipeline 'raspberrypi' was renamed to 'rpi/vc4'" + depends on BR2_arm || BR2_aarch64 + depends on BR2_USE_WCHAR + select BR2_LEGACY + select BR2_PACKAGE_LIBCAMERA_PIPELINE_RPI_VC4 + help + Since version 0.1.0, the pipeline option 'raspberrypi' was + renamed to 'rpi/vc4'. + +config BR2_GDB_VERSION_11 + bool "gdb 11.x removed" + select BR2_LEGACY + help + GDB 11.x has been removed, use a newer version. + +config BR2_PACKAGE_LIBMPD + bool "libmpd package was removed" + select BR2_LEGACY + help + The libmpd package was only used by gmpc, both of which are + no longer maintained upstream. + +config BR2_PACKAGE_GMPC + bool "gmpc package was removed" + select BR2_LEGACY + help + The gmpc package was removed because it was unmaintained, + and still using the old libsoup2 library. + +config BR2_PACKAGE_FLICKCURL + bool "flickcurl package was removed" + select BR2_LEGACY + help + The flickcurl package was removed because it was + unmaintained upstream and causing build failures. + +config BR2_PACKAGE_ONEVPL + bool "onevpl package was renamed" + select BR2_LEGACY + select BR2_PACKAGE_LIBVPL + +config BR2_KERNEL_HEADERS_6_5 + bool "kernel headers version 6.5.x are no longer supported" + select BR2_LEGACY + help + Version 6.5.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_PACKAGE_WATCHDOGD_GENERIC_POLL + int "watchdogd generic poll has been replaced" + default 0 + help + The generic script poll interval has been replaced upstream + with a boolean on/off. Your configuration has been migrated. + + Set this legacy option to 0 here to remove the warning. + +# Note: BR2_PACKAGE_WATCHDOGD_*_POLL_WRAP referenced in package/watchdogd/Config.in +config BR2_PACKAGE_WATCHDOGD_GENERIC_POLL_WRAP + bool + default y if BR2_PACKAGE_WATCHDOGD_GENERIC_POLL != 0 + select BR2_LEGACY + +config BR2_PACKAGE_WATCHDOGD_LOADAVG_POLL + int "watchdogd loadavg poll has been replaced" + default 0 + help + The CPU load average poll interval has been replaced upstream + with a boolean on/off. Your configuration has been migrated. + + Set this legacy option to 0 here to remove the warning. + +# Note: BR2_PACKAGE_WATCHDOGD_*_POLL_WRAP referenced in package/watchdogd/Config.in +config BR2_PACKAGE_WATCHDOGD_LOADAVG_POLL_WRAP + bool + default y if BR2_PACKAGE_WATCHDOGD_LOADAVG_POLL != 0 + select BR2_LEGACY + +config BR2_PACKAGE_WATCHDOGD_FILENR_POLL + int "watchdogd filenr poll has been replaced" + default 0 + help + The file descriptor leak poll has been replaced upstream with + a boolean on/off. Your configuration has been migrated. + + Set this legacy option to 0 here to remove the warning. + +# Note: BR2_PACKAGE_WATCHDOGD_*_POLL_WRAP referenced in package/watchdogd/Config.in +config BR2_PACKAGE_WATCHDOGD_FILENR_POLL_WRAP + bool + default y if BR2_PACKAGE_WATCHDOGD_FILENR_POLL != 0 + select BR2_LEGACY + +config BR2_PACKAGE_WATCHDOGD_MEMINFO_POLL + int "watchdogd meminfo poll has been replaced" + default 0 + help + The memleak detector poll interval has been replaced upstream + with a boolean on/off. Your configuration has been migrated. + + Set this legacy option to 0 here to remove the warning. + +# Note: BR2_PACKAGE_WATCHDOGD_*_POLL_WRAP referenced in package/watchdogd/Config.in +config BR2_PACKAGE_WATCHDOGD_MEMINFO_POLL_WRAP + bool + default y if BR2_PACKAGE_WATCHDOGD_MEMINFO_POLL != 0 + select BR2_LEGACY + +comment "Legacy options removed in 2023.11" + +config BR2_PACKAGE_PYTHON_PYXB + bool "python-pyxb removed" + select BR2_LEGACY + help + python-pyxb has been removed due to being abandoned and + distutils no longer being supported in python 3.12.0. + +config BR2_PACKAGE_OPENJDK_VERSION_11 + bool "openjdk 11 has been removed" + select BR2_LEGACY + help + Version 11 of OpenJDK is no longer supported, version 17 + should now be used as the new LTS release. + +config BR2_KERNEL_HEADERS_6_4 + bool "kernel headers version 6.4.x are no longer supported" + select BR2_LEGACY + help + Version 6.4.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS + bool "google-material-design-icons removed" + select BR2_LEGACY + help + The google-material-design-icons package has been removed. + +config BR2_GDB_VERSION_10 + bool "gdb 10.x removed" + select BR2_LEGACY + help + gdb 10.x has been removed, use a newer version. + +comment "Legacy options removed in 2023.08" + +config BR2_TARGET_LPC32XXCDL + bool "lpc32xxcdl has been removed" + select BR2_LEGACY + help + lpc32xxcdl has been removed, due to licensing concerns. + +config BR2_BINUTILS_VERSION_2_38_X + bool "binutils 2.38.x has been removed" + select BR2_LEGACY + help + binutils 2.38 has been removed, use a newer version. + +config BR2_GCC_VERSION_10_X + bool "gcc 10.x support removed" + select BR2_LEGACY + help + Support for gcc version 10.x has been removed. The current + default version (12.x or later) has been selected instead. + +config BR2_KERNEL_HEADERS_6_3 + bool "kernel headers version 6.3.x are no longer supported" + select BR2_LEGACY + help + Version 6.3.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_PACKAGE_TOVID + bool "tovid removed" + select BR2_LEGACY + help + tovid was removed + +config BR2_PACKAGE_LIBASPLIB + bool "libasplib removed" + select BR2_LEGACY + help + libasplib is no longer needed. + +config BR2_PACKAGE_OCF_LINUX + bool "ocf-linux has been removed" + select BR2_LEGACY + help + ocf-linux is incompatible with newer kernels. + +config BR2_BINUTILS_VERSION_2_37_X + bool "binutils 2.37.x has been removed" + select BR2_LEGACY + help + binutils 2.37 has been removed, use a newer version. + +comment "Legacy options removed in 2023.05" + +config BR2_KERNEL_HEADERS_6_2 + bool "kernel headers version 6.2.x are no longer supported" + select BR2_LEGACY + help + Version 6.2.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_PACKAGE_ATK + bool "atk removed" + select BR2_LEGACY + help + atk is now part of at-spi2-core. + +config BR2_PACKAGE_AT_SPI2_ATK + bool "at-spi2-atk removed" + select BR2_LEGACY + help + at-spi2-atk is now part of at-spi2-core. + +config BR2_PACKAGE_OPTEE_BENCHMARK + bool "optee-benchmark has been removed" + select BR2_LEGACY + help + optee-benchmark is no longer maintained upstream. + +config BR2_PACAKGE_OPENFPGALOADER_CMSIS + bool "openfpgaloader cmsis option name fixed" + select BR2_LEGACY + help + A typo on BR2_PACAKGE_OPENFPGALOADER_CMSIS was fixed by + renaming the option to BR2_PACKAGE_OPENFPGALOADER_CMSIS. + +comment "Legacy options removed in 2023.02" + +config BR2_PACKAGE_PUGIXML_HEADER_ONLY + bool "pugixml header-only removed" + select BR2_LEGACY + help + The header-only version raises a build failure with gerbera. + +config BR2_PACKAGE_UCCP420WLAN + bool "uccp420wlan removed" + select BR2_LEGACY + help + The uccp420wlan package is unmaintained and doesn't build + with any "recent" kernel (e.g. >= 4.7). + +config BR2_PACKAGE_IMX_GPU_G2D_EXAMPLES + bool "imx-gpu-g2d examples removed" + select BR2_LEGACY + help + The examples are not provided by NXP anymore. + +config BR2_KERNEL_HEADERS_6_0 + bool "kernel headers version 6.0.x are no longer supported" + select BR2_LEGACY + help + Version 6.0.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_9 + bool "kernel headers version 4.9.x are no longer supported" + select BR2_LEGACY + help + Version 4.9.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_PACKAGE_DOCKER_PROXY + bool "docker-proxy removed" + select BR2_LEGACY + select BR2_PACKAGE_DOCKER_ENGINE + help + docker-proxy has been dropped by upstream since version + 563fe8. it has been merged into docker-engine (moby). + +config BR2_PACKAGE_PYTHON_BUNCH + bool "python-bunch removed" + select BR2_LEGACY + help + The python-bunch package is unmaintained and is replaced + by the python-munch package. + +config BR2_TARGET_GUMMIBOOT + bool "gummiboot removed" + select BR2_LEGACY + help + gummiboot has been deprecated since 2015, with no further + updates. It became integrated into the systemd project as + systemd-boot. + +config BR2_PACKAGE_IPUTILS_NINFOD + bool "iputils 20221126 removed ninfod" + select BR2_LEGACY + help + iputils 20221126 removed ninfod. + +config BR2_PACKAGE_IPUTILS_RARPD + bool "iputils 20221126 removed rarpd" + select BR2_LEGACY + help + iputils 20221126 removed rarpd. + +config BR2_PACKAGE_IPUTILS_RDISC + bool "iputils 20221126 removed rdisc" + select BR2_LEGACY + help + iputils 20221126 removed rdisc. + +config BR2_PACKAGE_IPUTILS_RDISC_SERVER + bool "iputils 20221126 removed rdisc" + select BR2_LEGACY + help + iputils 20221126 removed rdisc. + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_XINGMUX + bool "xingmux moved" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_XINGMUX + help + The xingmux option has been moved to gst1-plugins-good. + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOSCALE + bool "videoscale removed" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERTSCALE + help + The videoscale option has been combined with videoconvert. + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERT + bool "videoconvert removed" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERTSCALE + help + The videoconvert option has been combined with videoscale. + +config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11 + bool "imx-gpu-viv X11 output has been removed" + select BR2_LEGACY + help + The X11 output was dropped by NXP. + +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_IMX_VIV + bool "xf86-video-imx-viv has been removed" + select BR2_LEGACY + help + The X11 output was dropped by NXP. + +config BR2_PACKAGE_QEMU_CUSTOM_TARGETS + string "the QEMU specific targets option has been removed" + help + This option has been replaced by a list of individual targets + for the many architectures supported by QEMU. + +config BR2_PACKAGE_QEMU_CUSTOM_TARGETS_WRAP + bool + default y if BR2_PACKAGE_QEMU_CUSTOM_TARGETS != "" + select BR2_LEGACY + +config BR2_PACKAGE_XDRIVER_XF86_INPUT_KEYBOARD + bool "xf86-input-keyboard removed" + select BR2_LEGACY + help + The X.org keyboard input driver no longer support Linux. + +config BR2_TARGET_SUN20I_D1_SPL + bool "sun20-d1-spl removed" + select BR2_LEGACY + help + U-Boot has gained SPL support for D1, so this temporary + bootloader is no longer supported. + +config BR2_PACKAGE_PYTHON_M2R + bool "python-m2r removed" + select BR2_LEGACY + help + The python-m2r package is unmaintained. + +config BR2_PACKAGE_MESA3D_XVMC + bool "mesa Gallium XvMC state tracker removed" + select BR2_LEGACY + help + The Gallium XvMC state tracker was removed upstream. + +config BR2_KERNEL_HEADERS_5_19 + bool "kernel headers version 5.19.x are no longer supported" + select BR2_LEGACY + help + Version 5.19.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_TGA + bool "xf86-video-tga removed" + select BR2_LEGACY + help + The X.org xf86-video-tga package was removed. + +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_GLINT + bool "xf86-video-glint removed" + select BR2_LEGACY + help + The X.org xf86-video-glint package no longer builds with + Xserver 21 and is unmaintained. + +config BR2_PACKAGE_USBREDIR_SERVER + bool "usbredirserver removed" + select BR2_LEGACY + help + usbredirserver has been dropped by upstream since version + 0.13.0. usbredir tools (which include usbredirect binary) can + be used as a replacement. + +comment "Legacy options removed in 2022.11" + +config BR2_BINUTILS_VERSION_2_36_X + bool "binutils 2.36.x has been removed" + select BR2_LEGACY + help + binutils 2.36 has been removed, use a newer version. + +config BR2_PACKAGE_RABBITMQ_SERVER + bool "rabbitmq-server removed" + select BR2_LEGACY + help + Package was removed because it was unmaintained and had + known security issues. + +config BR2_PACKAGE_LIBOPENSSL_ENABLE_RC5 + bool "libopenssl rc5 was never enabled" + select BR2_LEGACY + help + The libopenssl option for rc5 never actually enabled rc5, + which had always been disabled in Buildroot. + +config BR2_PACKAGE_LIBDCADEC + bool "package was deprecated upstream, use ffmpeg instead" + select BR2_LEGACY + help + This decoder has been fully integrated into FFmpeg master + branch and further development will continue there. Using + FFmpeg for DTS decoding is now recommended. + +config BR2_KERNEL_HEADERS_5_17 + bool "kernel headers version 5.17.x are no longer supported" + select BR2_LEGACY + help + Version 5.17.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_iwmmxt + bool "ARM iwmmxt variant removed" + select BR2_LEGACY + help + Support for the ARM iwmmxt architecture variant in GCC has + bitroten and is no longer maintained. GCC maintainers + recommend to no longer use it, and suggest to use "xscale" + as a replacement architecture variant. See + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106972 + +config BR2_PACKAGE_UHD_N230 + bool "uhd N230 support removed" + select BR2_LEGACY + help + uhd N230 support has been dropped by upstream since version + 4.0.0.0. + +config BR2_PACKAGE_UHD_RFNOC + bool "uhd RFNoC support removed" + select BR2_LEGACY + help + uhd RFNoC support has been dropped by upstream since version + 4.0.0.0. + +config BR2_PACKAGE_GPSD_OLDSTYLE + bool "gpsd oldstyle removed" + select BR2_LEGACY + help + gpsd oldstyle option has been removed by upstream in 2015. + +config BR2_GDB_VERSION_9_2 + bool "gdb 9.2 removed" + select BR2_LEGACY + help + Support for GDB 9.2 has been removed. A new version has + automatically been selected. + +comment "Legacy options removed in 2022.08" + +config BR2_ECLIPSE_REGISTER + bool "Eclipse integration removed" + select BR2_LEGACY + help + The Buildroot integration with the Eclipse IDE has been + removed, as the corresponding Eclipse plugin is no longer + maintained, and is no longer usable with current versions of + Eclipse. + +config BR2_csky + bool "csky architecture removed" + select BR2_LEGACY + help + The csky architecture was removed, by lack of toolchain + support. + +config BR2_PACKAGE_MESA3D_DRI_DRIVER_I915 + bool "mesa DRI i915 driver removed" + select BR2_LEGACY + help + The DRI i915 driver was removed upstream. + +config BR2_PACKAGE_MESA3D_DRI_DRIVER_I965 + bool "mesa DRI i965 driver removed" + select BR2_LEGACY + help + The DRI i965 driver was removed upstream. + +config BR2_PACKAGE_MESA3D_DRI_DRIVER_NOUVEAU + bool "mesa DRI nouveau driver removed" + select BR2_LEGACY + help + The DRI radeon nouveau was removed upstream. + +config BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON + bool "mesa DRI radeon r100 driver removed" + select BR2_LEGACY + help + The DRI radeon r100 driver was removed upstream. + +config BR2_GCC_VERSION_9_X + bool "gcc 9.x support removed" + select BR2_LEGACY + help + Support for gcc version 9.x has been removed. The current + default version (11.x or later) has been selected instead. + +config BR2_PACKAGE_PHP_EXT_WDDX + bool "php wddx removed" + select BR2_LEGACY + help + The WDDX extension was removed from php. + +config BR2_nds32 + bool "nds32 architecture removed" + select BR2_LEGACY + help + Support for the nds32 architecture has been removed, due to + its support being removed from the upstream Linux kernel, + and its lack of maintenance in Buildroot. + +config BR2_PACKAGE_RTL8723BS + bool "rtl8723bs removed" + select BR2_LEGACY + help + Package was removed because it is not compatible with latest + kernels and is not maintained anymore: code has been removed + in 2017 as driver is available in the linux-next tree. + +comment "Legacy options removed in 2022.05" + +config BR2_PACKAGE_KTAP + bool "ktap removed" + select BR2_LEGACY + help + Package was removed because it is not compatible with latest + kernels and is not maintained anymore (no release since 2013). + +config BR2_KERNEL_HEADERS_5_16 + bool "kernel headers version 5.16.x are no longer supported" + select BR2_LEGACY + help + Version 5.16.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_4 + bool "kernel headers version 4.4.x are no longer supported" + select BR2_LEGACY + help + Version 4.4.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_BINUTILS_VERSION_2_32_X + bool "binutils 2.32.x has been removed" + select BR2_LEGACY + help + binutils 2.32 has been removed, use a newer version. + +config BR2_sh2a + bool "sh2a architecture support removed" + select BR2_LEGACY + help + The SuperH 2A (SH2A) architecture was not maintained, and + broken, so its support was dropped. + +config BR2_BINUTILS_VERSION_2_35_X + bool "binutils 2.35.x has been removed" + select BR2_LEGACY + help + binutils 2.35 has been removed, use a newer version. + +config BR2_PACKAGE_BOOST_LAYOUT_TAGGED + bool "boost tagged layout removed" + select BR2_LEGACY + help + Boost tagged layout isn't handled by some packages (e.g. botan + or libcpprestsdk). + +config BR2_PACKAGE_BOOST_LAYOUT_VERSIONED + bool "boost versioned layout removed" + select BR2_LEGACY + help + Boost versioned layout isn't handled by a number of autotools + and cmake packages (e.g. azmq, cc-tool, i2pd). + +comment "Legacy options removed in 2022.02" + +config BR2_TARGET_ROOTFS_OCI_ENTRYPOINT_ARGS + string "entrypoint argumetns has been changed as command" + help + The OCI image BR2_TARGET_ROOTFS_OCI_ENTRYPOINT_ARGS option + has been renamed to BR2_TARGET_ROOTFS_OCI_CMD to better + reflect its relation to the actual 'command' of the OCI + image. + + The new semantic for BR2_TARGET_ROOTFS_OCI_CMD is slightly + differnt in relation to how it is interpreted, so be sure to + review the help entry for it. + + Due to this breaking change, the old value here could not be + set to the new variable. + +config BR2_TARGET_ROOTFS_OCI_ENTRYPOINT_ARGS_WRAP + bool + default y if BR2_TARGET_ROOTFS_OCI_ENTRYPOINT_ARGS != "" + select BR2_LEGACY + +config BR2_PACKAGE_LIBCURL_LIBNSS + bool "libcurl NSS removed" + select BR2_LEGACY + help + NSS was deprecated in libcurl 7.82.0. + +config BR2_PACKAGE_WESTON_DEFAULT_FBDEV + bool "weston fbdev removed" + select BR2_LEGACY + help + fbdev was deprecated in weston 10.0.0. + +config BR2_PACKAGE_WESTON_FBDEV + bool "weston fbdev compositor removed" + select BR2_LEGACY + help + fbdev compositor was deprecated in weston 10.0.0. + +config BR2_PACKAGE_PYTHON_PYCLI + bool "python-pycli removed" + select BR2_LEGACY + help + Package was removed because it is not compatible with python + 3.10 and is not maintained anymore (no release since 2012). + +config BR2_PACKAGE_LINUX_TOOLS_BPFTOOL + bool "bpftool was moved" + select BR2_LEGACY + select BR2_PACKAGE_BPFTOOL + help + The linux-tools bpftool build has been moved out + of the linux-tools package. + +config BR2_TARGET_UBOOT_NEEDS_PYTHON2 + bool "host-python 2.7 support for U-Boot was removed" + select BR2_LEGACY + help + Option was removed together with python 2.7 support. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIBMMS + bool "gst1-plugins-bad plugin libmms was removed" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_LEGACY + help + This plugin was removed with gst1-plugins-bad-1.20.0. + +config BR2_PACKAGE_PYTHON_FUNCTOOLS32 + bool "python-functools32 removed" + select BR2_LEGACY + help + Package was removed together with python 2.7 support. + +config BR2_PACKAGE_PYTHON_ENUM34 + bool "python-enum34 removed" + select BR2_LEGACY + help + Package was removed together with python 2.7 support. + +config BR2_PACKAGE_PYTHON_ENUM + bool "python-enum removed" + select BR2_LEGACY + help + Package was removed together with python 2.7 support. + +config BR2_PACKAGE_PYTHON_DIALOG + bool "python-dialog removed" + select BR2_LEGACY + help + Package was removed together with python 2.7 support. + +config BR2_PACKAGE_PYTHON_YIELDFROM + bool "python-yieldfrom removed" + select BR2_LEGACY + help + Package was removed together with python 2.7 support. + +config BR2_PACKAGE_PYTHON_TYPING + bool "python-typing removed" + select BR2_LEGACY + help + Package was removed together with python 2.7 support. + +config BR2_PACKAGE_PYTHON_SUBPROCESS32 + bool "python-subprocess32 removed" + select BR2_LEGACY + help + Package was removed together with python 2.7 support. + +config BR2_PACKAGE_PYTHON_SINGLEDISPATCH + bool "python-singledispatch removed" + select BR2_LEGACY + help + Package was removed together with python 2.7 support. + +config BR2_PACKAGE_PYTHON_PYRO + bool "python-pyro removed" + select BR2_LEGACY + help + Package was removed together with python 2.7 support. + +config BR2_PACKAGE_PYTHON_PYPCAP + bool "python-pypcap removed" + select BR2_LEGACY + help + Package was removed together with python 2.7 support. + +config BR2_PACKAGE_PYTHON_PATHLIB2 + bool "python-pathlib2 removed" + select BR2_LEGACY + help + Package was removed together with python 2.7 support. + +config BR2_PACKAGE_PYTHON_PAM + bool "python-pam removed" + select BR2_LEGACY + help + Package was removed together with python 2.7 support. + +config BR2_PACKAGE_PYTHON_NFC + bool "python-nfc removed" + select BR2_LEGACY + help + Package was removed together with python 2.7 support. + +config BR2_PACKAGE_PYTHON_MAD + bool "python-mad removed" + select BR2_LEGACY + help + Package was removed together with python 2.7 support. + +config BR2_PACKAGE_PYTHON_IPADDRESS + bool "python-ipaddress removed" + select BR2_LEGACY + help + Package was removed together with python 2.7 support. + +config BR2_PACKAGE_PYTHON_IPADDR + bool "python-ipaddr removed" + select BR2_LEGACY + help + Package was removed together with python 2.7 support. + +config BR2_PACKAGE_PYTHON_ID3 + bool "python-id3 removed" + select BR2_LEGACY + help + Package was removed together with python 2.7 support. + +config BR2_PACKAGE_PYTHON_FUTURES + bool "python-futures removed" + select BR2_LEGACY + help + Package was removed together with python 2.7 support. + +config BR2_PACKAGE_PYTHON_BACKPORTS_SSL_MATCH_HOSTNAME + bool "python-backports-ssl-match-hostname removed" + select BR2_LEGACY + help + Package was removed together with python 2.7 support. + +config BR2_PACKAGE_PYTHON_BACKPORTS_SHUTIL_GET_TERMINAL_SIZE + bool "python-backports-shutil-get-terminal-size removed" + select BR2_LEGACY + help + Package was removed together with python 2.7 support. + +config BR2_PACKAGE_PYTHON_BACKPORTS_ABC + bool "python-backports-abc removed" + select BR2_LEGACY + help + Package was removed together with python 2.7 support. + +config BR2_PACKAGE_PYTHON + bool "python2.7 package removed" + select BR2_LEGACY + help + Python 2.7 is EOL since April 2020 and has been removed. + + https://www.python.org/dev/peps/pep-0373/ + +config BR2_TARGET_UBOOT_ZYNQ_IMAGE + bool "Generate image for Xilinx Zynq" + select BR2_LEGACY + help + Since 2016.1, U-Boot can natively generate the Zynq boot + image, and so the Xilinx-specific format and tools have been + removed. Should you still have an older U-Boot that needs + this, a python3 version of the zynq-boot-bin.py script can be + downloaded from the URL below and called from a post-build + script. + + https://gist.githubusercontent.com/jameshilliard/e09235dfc6f96c11418a134e6ebf7890/raw/135b7480c405ae8a77a9db615e495f9a9f2d3242/zynq-boot-bin.py + +config BR2_PACKAGE_RPI_BT_FIRMWARE + bool "rpi-bt-firmware package was renamed" + depends on BR2_arm || BR2_aarch64 + select BR2_LEGACY + select BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI + select BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_BT + help + Package rpi-bt-firmware was moved as option to + package brcmfmac_sdio-firmware-rpi. + +config BR2_PACKAGE_RPI_WIFI_FIRMWARE + bool "rpi-wifi-firmware package was renamed" + depends on BR2_arm || BR2_aarch64 + select BR2_LEGACY + select BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI + select BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_WIFI + help + Package rpi-wifi-firmware was moved as option to + package brcmfmac_sdio-firmware-rpi. + +config BR2_PACKAGE_HOST_GDB_PYTHON + bool "GDB Python2 support removed" + select BR2_LEGACY + help + Python2 is deprecated and no longer supported. + Please migrate to Python3. + +config BR2_PACKAGE_GSTREAMER1_MM + bool "gstreamer1-mm package removed" + select BR2_LEGACY + help + This package has been removed as it is not actively + maintained anymore and does not support glibmm-2.68 API. + +config BR2_KERNEL_HEADERS_5_14 + bool "kernel headers version 5.14.x are no longer supported" + select BR2_LEGACY + help + Version 5.14.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_PACKAGE_PYTHON_BACKPORTS_FUNCTOOLS_LRU_CACHE + bool "python-backports-functools-lru-cache package removed" + select BR2_LEGACY + help + This package has been removed as python-setuptools-scm + dropped support of python 2 since version 6.0.0. + +config BR2_PACKAGE_CIVETWEB_WITH_LUA + bool "civetweb lua support option removed" + select BR2_LEGACY + help + Lua support does not depend on a version of Lua bundled + within the Civetweb sources anymore. Lua support is + automatically enabled if an Lua interpreter (lua or luajit) + is enabled in Buildroot. + +config BR2_PACKAGE_SUNXI_MALI_MAINLINE_DRIVER + bool "sunxi-mali-mainline-driver package was renamed" + select BR2_LEGACY + select BR2_PACKAGE_SUNXI_MALI_UTGARD_DRIVER + help + Since the removal of the sunxi-mali-driver package, the + sunxi-mali-mainline-driver package that coexisted became the + only package to provide the Sunxi Mali driver. The "-mainline" + suffix being undescriptive nowadays and before adding new + packages bringing Mali support for other SoCs/GPU flavors, it + is clearer to rename it SUNXI_MALI_UTGARD_DRIVER. + +config BR2_PACKAGE_SUNXI_MALI_MAINLINE + bool "sunxi-mali-mainline package was renamed" + select BR2_LEGACY + select BR2_PACKAGE_SUNXI_MALI_UTGARD + help + Since the removal of the sunxi-mali package, the + sunxi-mali-mainline package that coexisted became the only + package to provide Mali blobs. The "-mainline" suffix being + undescriptive nowadays and before adding new packages bringing + Mali support for other SoCs/GPU flavors, it is clearer to + rename it SUNXI_MALI_UTGARD. + +config BR2_PACKAGE_SUNXI_MALI_MAINLINE_R6P2 + bool "sunxi-mali-mainline-r6p2 was renamed" + select BR2_LEGACY + help + The sunxi-mali-mainline package has been renamed + sunxi-mali-utgard, the suboptions of this package have also + been renamed accordingly. +# Note: BR2_PACKAGE_SUNXI_MALI_MAINLINE_R6P2 is still referenced from +# package/sunxi-mali-utgard/Config.in + +config BR2_PACKAGE_SUNXI_MALI_MAINLINE_R8P1 + bool "sunxi-mali-mainline-r8p1 was renamed" + select BR2_LEGACY + help + The sunxi-mali-mainline package has been renamed + sunxi-mali-utgard, the suboptions of this package have also + been renamed accordingly. +# Note: BR2_PACKAGE_SUNXI_MALI_MAINLINE_R8P1 is still referenced from +# package/sunxi-mali-utgard/Config.in + +config BR2_PACKAGE_QT5WEBKIT_EXAMPLES + bool "qt5webkit-examples removed" + select BR2_LEGACY + help + The qt5webkit-examples package is unmaintained and has been + removed. + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_GLIBC_BLEEDING_EDGE + bool "Bootlin riscv64 glibc bleeding-edge toolchain removed" + select BR2_LEGACY + help + The RISC-V 64-bit LP64 Bootlin toolchains have been removed, + in favor of RISC-V 64-bit LP64D toolchains. + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_MUSL_BLEEDING_EDGE + bool "Bootlin riscv64 musl bleeding-edge toolchain removed" + select BR2_LEGACY + help + The RISC-V 64-bit LP64 Bootlin toolchains have been removed, + in favor of RISC-V 64-bit LP64D toolchains. + +config BR2_PACKAGE_IPUTILS_TFTPD + bool "iputils tftpd option removed" + select BR2_LEGACY + help + tftpd has been removed from iputils since version 20211215. + +config BR2_PACKAGE_IPUTILS_TRACEROUTE6 + bool "iputils traceroute6 option removed" + select BR2_LEGACY + help + traceroute6 has been removed from iputils since version + 20211215. + +config BR2_PACKAGE_LIBMEDIAART_BACKEND_NONE + bool "libmediaart 'none' backend removed" + select BR2_LEGACY + help + 'none' backend has been removed from libmediaart since version + 1.9.5. + +config BR2_PACKAGE_MPD_UPNP + bool "MPD UPnP configuration changed" + select BR2_LEGACY + help + From version 0.23, MPD supports npupnp in addition to pupnp to + provide database access to a UPnP media server. To preserve + the existing functionality, the pupnp option has been selected + in the MPD UPnP configuration. +# Note: BR2_PACKAGE_MPD_UPNP is still referenced from package/mpd/Config.in + +comment "Legacy options removed in 2021.11" + +config BR2_OPENJDK_VERSION_LTS + bool "OpenJDK LTS version was renamed to OpenJDK 11" + select BR2_LEGACY + help + The LTS version option was renamed to OpenJDK 11 to make it + clear what LTS version is. +# Note: BR2_OPENJDK_VERSION_LTS is still referenced from +# package/openjdk/Config.in + +config BR2_OPENJDK_VERSION_LATEST + bool "OpenJDK latest version (16.x) was removed" + select BR2_LEGACY + help + OpenJDK 16.x is no longer mainted, so the option has been + removed. Use OpenJDK 17.x instead. +# Note: BR2_OPENJDK_VERSION_LATEST is still referenced from +# package/openjdk/Config.in + +config BR2_PACKAGE_MPD_TIDAL + bool "mpd tidal option removed" + select BR2_LEGACY + help + tidal has been removed from mpd since version 0.22.10. + +config BR2_PACKAGE_MROUTED_RSRR + bool "RSRR for RSVP removed in mrouted v4.4" + select BR2_LEGACY + help + The RSRR configure option and feature was dropped in upstream + mrouted as of v4.4. This feature was marked as experimental + since its inception well before v4.0 and was never deployed + in the field outside of academia. + +config BR2_BINUTILS_VERSION_CSKY + bool "binutils csky version removed" + select BR2_LEGACY + help + Support for binutils csky version has been removed. + +config BR2_GCC_VERSION_CSKY + bool "gcc csky version removed" + select BR2_LEGACY + help + Support for gcc csky version has been removed. + +config BR2_PACKAGE_CANFESTIVAL + bool "canfestival package removed" + select BR2_LEGACY + help + This package has been removed as it is unmaintained since + November 2017. + +config BR2_PACKAGE_NMAP_NDIFF + bool "The ndiff utility has been removed" + select BR2_LEGACY + select BR2_PACKAGE_PYTHON_PYNDIFF + help + The ndiff utility provided by nmap requires python2 which is + deprecated. The same functionality is provided by the python + package pyndiff. + +config BR2_GDB_VERSION_8_3 + bool "gdb version 8.3.x removed" + select BR2_LEGACY + help + gdb 8.3.x has been removed, use a newer version instead. + +config BR2_PACKAGE_PYTHON_MELD3 + bool "python-meld3 package removed" + select BR2_LEGACY + help + This package has been removed as it is unmaintained since + April 2020. + +config BR2_PACKAGE_STRONGSWAN_EAP + bool "strongswan EAP plugins now individually selectable" + select BR2_LEGACY + help + The various EAP plugins are now individually selectable. + +config BR2_PACKAGE_GNURADIO_PAGER + bool "gnuradio gr-flex support removed" + select BR2_LEGACY + help + gr-flex has been removed from gnuradio since version 3.8.0.0. + +config BR2_KERNEL_HEADERS_5_11 + bool "kernel headers version 5.11.x are no longer supported" + select BR2_LEGACY + help + Version 5.11.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_5_12 + bool "kernel headers version 5.12.x are no longer supported" + select BR2_LEGACY + help + Version 5.12.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_5_13 + bool "kernel headers version 5.13.x are no longer supported" + select BR2_LEGACY + help + Version 5.13.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +comment "Legacy options removed in 2021.08" + +config BR2_TARGET_GRUB2_BUILTIN_MODULES + string "the grub2 builtin modules has been renamed" + help + This option has been split to separate the builtin modules + between BR2_TARGET_GRUB2_BUILTIN_MODULES_PC and + BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI. + +config BR2_TARGET_GRUB2_BUILTIN_MODULES_WRAP + bool + default y if BR2_TARGET_GRUB2_BUILTIN_MODULES != "" + select BR2_LEGACY + +config BR2_TARGET_GRUB2_BUILTIN_CONFIG + string "the grub2 builtin configuration has been renamed" + help + This option has been split to separate the builtin + configuration between BR2_TARGET_GRUB2_BUILTIN_CONFIG_PC and + BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI. + +config BR2_TARGET_GRUB2_BUILTIN_CONFIG_WRAP + bool + default y if BR2_TARGET_GRUB2_BUILTIN_CONFIG != "" + select BR2_LEGACY + +config BR2_PACKAGE_LIBMCRYPT + bool "libmcrypt package was removed" + select BR2_LEGACY + help + This package has been removed as "the last update to libmcrypt + was in 2007, despite years of unmerged patches. These facts + have led security experts to declare mcrypt abandonware and + discourage its use in new development" (extract from + https://en.wikipedia.org/wiki/Mcrypt). + +config BR2_PACKAGE_MCRYPT + bool "mcrypt package was removed" + select BR2_LEGACY + help + This package has been removed as "the last update to libmcrypt + was in 2007, despite years of unmerged patches. These facts + have led security experts to declare mcrypt abandonware and + discourage its use in new development" (extract from + https://en.wikipedia.org/wiki/Mcrypt). + +config BR2_PACKAGE_PHP_EXT_MCRYPT + bool "PHP mcrypt extension removed" + select BR2_LEGACY + help + mcrypt has been removed from php since version 7.2.0. + +config BR2_BINUTILS_VERSION_2_34_X + bool "binutils 2.34 has been removed" + select BR2_LEGACY + help + binutils 2.34 has been removed, use a newer version. + +config BR2_PACKAGE_LIBSOIL + bool "libsoil package removed" + select BR2_LEGACY + help + The libsoil package was removed. All packages needing + libsoil removed the dependency. + +config BR2_PACKAGE_CLAPACK + bool "cblas/clapack package removed" + select BR2_LEGACY + select BR2_PACKAGE_LAPACK if BR2_PACKAGE_LAPACK_ARCH_SUPPORTS && BR2_TOOLCHAIN_HAS_FORTRAN + help + The clapack package was removed. LAPACK no longer generates a + C version. Use lapack instead. This does require a Fortran + compiler however. + +config BR2_PACKAGE_SPIDERMONKEY + bool "spidermonkey package removed" + select BR2_LEGACY + help + The spidermonkey package was removed. The only package that + depended on spidermonkey was polkit. The spidermonkey + dependency is replaced with duktape. + +config BR2_PACKAGE_KODI_LIBVA + bool "kodi option to add libva support removed" + select BR2_LEGACY + help + Kodi still has support for libva if the package is enabled but + the kodi-specific dependencies limiting libva support to non- + OPENGLES platforms were removed including this option. + +config BR2_PACKAGE_PYTHON_COHERENCE + bool "python-coherence package removed" + select BR2_LEGACY + help + This package has been removed as it can't be built anymore due + to python-twisted being now incompatible with python 2. + +config BR2_PACKAGE_PHP_EXT_XMLRPC + bool "PHP XMLRPC extension removed" + select BR2_LEGACY + help + The XMLRPC php extension was removed. + See: https://wiki.php.net/rfc/unbundle_xmlprc + +config BR2_GCC_VERSION_8_X + bool "gcc 8.x support removed" + select BR2_LEGACY + help + Support for gcc version 8.x has been removed. The current + default version (10.x or later) has been selected instead. + +comment "Legacy options removed in 2021.05" + +config BR2_PACKAGE_UDISKS_LVM2 + bool "udisks lvm2 support removed" + select BR2_LEGACY + help + The lvm2 support was removed because udisks < 2.7.0 still + depends on lvm2 application library, which was removed + in lvm2. + +config BR2_PACKAGE_LVM2_APP_LIBRARY + bool "lvm2 application library removed" + select BR2_LEGACY + help + The lvm2 application library was removed upstream. + +config BR2_PACKAGE_LVM2_LVMETAD + bool "lvm2 lvmetad removed" + select BR2_LEGACY + help + The lvm2 lvmetad was removed upstream. + +config BR2_PACKAGE_MONKEY + bool "monkey package removed" + select BR2_LEGACY + help + This package has been removed as it has not seen any release + since 2016 and because TLS is broken on master. + +config BR2_PACKAGE_DOCKER_CONTAINERD + bool "docker-containerd package was renamed to containerd" + select BR2_LEGACY + select BR2_PACKAGE_CONTAINERD + help + The containerd project is now independent from Docker. + The package was renamed to containerd accordingly. + +config BR2_PACKAGE_IOSTAT + bool "iostat package removed" + select BR2_LEGACY + help + This package has been removed, use sysstat instead. + +config BR2_PACKAGE_SCONESERVER_HTTP_SCONESITE_IMAGE + bool "sconeserver http::sconesite::image removed" + select BR2_LEGACY + help + Sconeserver cannot be built with ImageMagick - it uses the + "transofrm" function which is removed from public API. + +config BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_EVDEV + bool "KDrive/TinyX evdev input driver removed" + select BR2_LEGACY + help + The evdev input driver in KDrive was removed. + +config BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_KBD + bool "KDrive/TinyX kbd input driver removed" + select BR2_LEGACY + help + The kbd input driver in KDrive was removed. + +config BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_MOUSE + bool "KDrive/TinyX mouse input driver removed" + select BR2_LEGACY + help + The mouse input driver in KDrive was removed. + +config BR2_PACKAGE_MESA3D_OSMESA_CLASSIC + bool "mesa OSMesa (classic) option removed" + select BR2_LEGACY + select BR2_PACKAGE_MESA3D_OSMESA_GALLIUM + help + The OSMesa "classic" library option was removed upstream. + Only the Gallium-based implementation remains. + +config BR2_PACKAGE_MESA3D_DRI_DRIVER_SWRAST + bool "mesa DRI swrast driver removed" + select BR2_LEGACY + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST + help + The DRI swrast driver was removed upstream. + Only the Gallium-based implementation remains. + +config BR2_PACKAGE_KODI_SCREENSAVER_CRYSTALMORPH + bool "kodi-screensaver-crystalmorph removed" + select BR2_LEGACY + help + The package received its last updates in 2017, is not part + of the official Kodi github repo and its build is broken + with Kodi 19.x, so it was removed. + +comment "Legacy options removed in 2021.02" + +config BR2_PACKAGE_MPD_AUDIOFILE + bool "mpd audiofile support removed" + select BR2_LEGACY + help + The audiofile support was removed from mpd as audiofile is + affected by multiple CVEs and is not maintained anymore (no + release since 2013). + +config BR2_PACKAGE_AUDIOFILE + bool "audiofile package removed" + select BR2_LEGACY + help + The audiofile package was removed as it is affected by + multiple CVEs and is not maintained anymore (no release since + 2013). + +config BR2_BINUTILS_VERSION_2_33_X + bool "binutils 2.33.x has been removed" + select BR2_LEGACY + help + binutils 2.33.x has been removed, use a newer version. + +config BR2_PACKAGE_LIBUPNP18 + bool "libupnp18 package removed" + select BR2_LEGACY + select BR2_PACKAGE_LIBUPNP + help + Version 1.8.x of libupnp (i.e. libupnp18) has been removed + because it will never be fixed against CallStranger a.k.a. + CVE-2020-12695. The libupnp package (which has been updated to + version 1.14.x) has been selected instead. + +config BR2_PACKAGE_BOA + bool "boa package removed" + select BR2_LEGACY + help + The boa package was removed as it is affected by multiple + CVEs and is not maintained anymore (no release since 2005). + +config BR2_PACKAGE_LINUX_FIRMWARE_IMX_SDMA + bool "imx sdma firmware is provided by firmware-imx" + select BR2_LEGACY + select BR2_PACKAGE_FREESCALE_IMX + select BR2_PACKAGE_FIRMWARE_IMX + help + linux-firmware provide the same firmware as firmware-imx. + We prefer using firmware-imx as the only provider. + +config BR2_GDB_VERSION_8_2 + bool "gdb 8.2.x has been removed" + select BR2_LEGACY + help + gdb 8.2 support has been removed, you can use a newer + version such as 8.3 or more recent. + +config BR2_PACKAGE_HOST_RCW + bool "rcw package was renamed to qoriq-rcw" + select BR2_PACKAGE_HOST_QORIQ_RCW + select BR2_LEGACY + help + The rcw package was specific to the QorIQ platform, so it has + been renamed to qoriq-rcw, to leave room for other *-rcw + packages for other platforms. + +config BR2_KERNEL_HEADERS_5_9 + bool "kernel headers version 5.9.x are no longer supported" + select BR2_LEGACY + help + Version 5.9.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_5_8 + bool "kernel headers version 5.8.x are no longer supported" + select BR2_LEGACY + help + Version 5.8.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_powerpc_601 + bool "PowerPC 601 support removed" + select BR2_LEGACY + help + The support for the PowerPC 601 processors has been removed. + +config BR2_PACKAGE_TI_SGX_LIBGBM + bool "ti-sgx-libgbm support removed" + select BR2_LEGACY + help + TI has merged the ti-sgx-libgbm package with the ti-sgx-um + package + +config BR2_PACKAGE_IPSEC_TOOLS + bool "ipsec-tools package was removed" + select BR2_LEGACY + help + This package has been removed as it has security issues and + has been abandoned since 2014. + +comment "Legacy options removed in 2020.11" + +config BR2_PACKAGE_GPSD_FIXED_PORT_SPEED + bool "compile with fixed serial port speed" + select BR2_LEGACY + help + Since gpsd 3.20, GPSD_FIXED_PORT_SPEED is replaced + by runtime option --speed. + +config BR2_PACKAGE_GPSD_RECONFIGURE + bool "allow gpsd to change device settings" + select BR2_LEGACY + help + Since gpsd 3.21, GPSD_RECONFIGURE is replaced + by runtime option --passive. + +config BR2_PACKAGE_GPSD_CONTROLSEND + bool "allow gpsctl/gpsmon to change device settings" + select BR2_LEGACY + help + Option removed in gpsd 3.21 + +config BR2_PACKAGE_OPENCV + bool "opencv package was removed" + select BR2_LEGACY + help + This package has been removed, use opencv3 instead. + +config BR2_PACKAGE_LIBCROCO + bool "libcroco package was removed" + select BR2_LEGACY + help + This package has been removed as it is affected by several + security issues such as CVE-2020-12825 which will never be + fixed as libcroco has been archived. + +config BR2_PACKAGE_BELLAGIO + bool "bellagio package was removed" + select BR2_LEGACY + help + This package has been removed as it is not maintained anymore + (no release since 2011). + +config BR2_PACKAGE_SYSTEMD_JOURNAL_GATEWAY + bool "systemd-journal-gatewayd now in systemd-journal-remote" + select BR2_LEGACY + select BR2_PACKAGE_SYSTEMD_JOURNAL_REMOTE + help + All system journal remote programs are now enabled using + BR2_PACKAGE_SYSTEMD_JOURNAL_REMOTE. + +config BR2_TARGET_UBOOT_BOOT_SCRIPT + bool "u-boot script generation was moved" + select BR2_LEGACY + select BR2_PACKAGE_HOST_UBOOT_TOOLS + select BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT + help + Migrated U-Boot script generation to uboot-tools + +# Note: BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE is still referenced from +# package/uboot-tools/Config.in +config BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE + string "The uboot script source string has been renamed" + depends on BR2_TARGET_UBOOT_BOOT_SCRIPT + help + Migrated U-Boot script generation to uboot-tools. + New option is named + BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE + +config BR2_TARGET_UBOOT_ENVIMAGE + bool "u-boot env generation was moved" + select BR2_LEGACY + select BR2_PACKAGE_HOST_UBOOT_TOOLS + select BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE + help + Migrated U-Boot env generation to uboot-tools + +# Note: BR2_TARGET_UBOOT_ENVIMAGE_SOURCE is still referenced from +# package/uboot-tools/Config.in +config BR2_TARGET_UBOOT_ENVIMAGE_SOURCE + string "The uboot env image source string has been renamed" + depends on BR2_TARGET_UBOOT_ENVIMAGE + help + Migrated U-Boot env generation to uboot-tools. + New option is named + BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE + +# Note: BR2_TARGET_UBOOT_ENVIMAGE_SIZE is still referenced from +# package/uboot-tools/Config.in +config BR2_TARGET_UBOOT_ENVIMAGE_SIZE + string "The uboot env image size string has been renamed" + depends on BR2_TARGET_UBOOT_ENVIMAGE + help + Migrated U-Boot env generation to uboot-tools. + New option is named BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE + +config BR2_TARGET_UBOOT_ENVIMAGE_REDUNDANT + bool "u-boot env generation was moved" + depends on BR2_TARGET_UBOOT_ENVIMAGE + select BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_REDUNDANT + help + Migrated U-Boot env generation to uboot-tools + +config BR2_PACKAGE_KISMET_CLIENT + bool "kismet client support was removed" + select BR2_LEGACY + help + Kismet client support was removed since version 2019-04-R1. + +config BR2_PACKAGE_KISMET_DRONE + bool "kismet drone support was removed" + select BR2_LEGACY + help + Kismet drone support was removed since version 2019-04-R1. + +config BR2_GCC_VERSION_7_X + bool "gcc 7.x support removed" + select BR2_LEGACY + help + Support for gcc version 7.x has been removed. The current + default version (9.x or later) has been selected instead. + +config BR2_PACKAGE_GST1_VALIDATE + bool "gst1-validate was moved to gst1-devtools" + select BR2_PACKAGE_GST1_DEVTOOLS + select BR2_LEGACY + help + This package has been removed, use gst1-devtools instead. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_YADIF + bool "gst1-plugins-bad yadif plugin was removed" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DEINTERLACE + help + This plugin was removed with gst1-plugins-bad-1.18.0, the + same functionality has moved to gst1-plugins-good + deinterlace plugin (method=yadif). + +config BR2_PACKAGE_GQVIEW + bool "gqview package was removed" + select BR2_LEGACY + help + This package has been removed as it is not maintained anymore + (no release since 2006). + +config BR2_PACKAGE_WESTON_IMX + bool "weston-imx package was removed" + select BR2_LEGACY + help + This package has been removed, use weston instead. + +config BR2_KERNEL_HEADERS_5_7 + bool "kernel headers version 5.7.x are no longer supported" + select BR2_LEGACY + help + Version 5.7.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_PACKAGE_TINYHTTPD + bool "tinyhttpd package removed" + select BR2_LEGACY + help + The tinyhttpd package was removed as it is affected by + CVE-2002-1819 and is not maintained anymore (no release since + 2001). + +config BR2_PACKAGE_XSERVER_XORG_SERVER_AIGLX + bool "X.org Enable AIGLX Extension" + select BR2_LEGACY + help + AIGLX Extension was removed in X.org X server version 1.19.0 + +config BR2_PACKAGE_AMD_CATALYST + bool "amd-catalyst" + select BR2_LEGACY + help + Current X.org server is incompatible with this driver. + +config BR2_PACKAGE_NVIDIA_TEGRA23 + bool "nvidia-tegra23 package removed" + select BR2_LEGACY + help + Current X.org server is incompatible with this driver. + +config BR2_GDB_VERSION_8_1 + bool "gdb 8.1.x has been removed" + select BR2_LEGACY + help + The 8.1.x version of gdb has been removed. Use a newer + version instead. + +comment "Legacy options removed in 2020.08" + +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64 + bool "toolchain-external-codesourcery-amd64 removed" + select BR2_LEGACY + help + The CodeSourcery toolchain for AMD64, in version 2016.11 was + dropped, due to it using a too old gcc 6.2.0 compiler which + caused issues compiling a number of recent packages + (e.g. Boost). CodeSourcery has stopped making newer versions + of this toolchain publicly available, so it was not possible + to update it. + +config BR2_KERNEL_HEADERS_5_6 + bool "kernel headers version 5.6.x are no longer supported" + select BR2_LEGACY + help + Version 5.6.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_5_5 + bool "kernel headers version 5.5.x are no longer supported" + select BR2_LEGACY + help + Version 5.5.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_BINUTILS_VERSION_2_31_X + bool "binutils version 2.31.1 support removed" + select BR2_LEGACY + help + Support for binutils version 2.31.1 has been removed. The + current default version (2.33.1 or later) has been selected + instead. + +config BR2_PACKAGE_KODI_PERIPHERAL_STEAMCONTROLLER + bool "kodi-peripheral-steamcontroller package was removed" + select BR2_LEGACY + help + This package is broken. + +comment "Legacy options removed in 2020.05" + +config BR2_PACKAGE_WIRINGPI + bool "wiringpi package removed" + select BR2_LEGACY + help + The author of wiringpi has deprecated the package, and + completely removed the git tree that was serving the + sources, with this message: + Please look for alternatives for wiringPi + +config BR2_PACKAGE_PYTHON_PYCRYPTO + bool "python-pycrypto package removed" + select BR2_LEGACY + help + This package has been removed, use python-pycryptodomex + instead. + +config BR2_PACKAGE_MTDEV2TUIO + bool "mtdev2tuio package removed" + select BR2_LEGACY + help + The mtdev2tuio package was removed as it breaks the builds + every now and then and is not maintained upstream. + +config BR2_PACKAGE_EZXML + bool "ezxml package removed" + select BR2_LEGACY + help + The ezXML package was removed as it is affected by several + CVEs and is not maintained anymore (no release since 2006). + +config BR2_PACKAGE_COLLECTD_LVM + bool "lvm support in collectd was removed" + select BR2_LEGACY + help + collectd removed LVM plugin, liblvm2app has been deprecated + +config BR2_PACKAGE_PYTHON_PYASN + bool "duplicate python-pyasn1 package removed" + select BR2_LEGACY + select BR2_PACKAGE_PYTHON_PYASN1 + help + This package was a duplicate of python-pyasn1. + +config BR2_PACKAGE_PYTHON_PYASN_MODULES + bool "duplicate python-pyasn1-modules package removed" + select BR2_LEGACY + select BR2_PACKAGE_PYTHON_PYASN1_MODULES + help + This package was a duplicate of python-pyasn1-modules. + +config BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_10K_QCA6174 + bool "duplicate QCA6174 firmware symbol removed" + select BR2_LEGACY + select BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174 + help + This config symbol duplicates existing symbol for QCA6174 + firmware. + +config BR2_PACKAGE_QT5CANVAS3D + bool "qt5canvas3d was removed" + select BR2_LEGACY + help + This Qt5 module was removed by the upstream Qt project since + Qt 5.13, so the corresponding Buildroot package was removed + as well. + +config BR2_PACKAGE_KODI_LIBTHEORA + bool "libtheora support in Kodi was removed" + select BR2_LEGACY + help + Kodi does not need libtheora + +config BR2_PACKAGE_CEGUI06 + bool "BR2_PACKAGE_CEGUI06 was renamed" + select BR2_PACKAGE_CEGUI + select BR2_LEGACY + help + The BR2_PACKAGE_CEGUI06 config symbol was renamed to + BR2_PACKAGE_CEGUI. + +config BR2_GCC_VERSION_5_X + bool "gcc 5.x support removed" + select BR2_LEGACY + help + Support for gcc version 5.x has been removed. The current + default version (8.x or later) has been selected instead. + +comment "Legacy options removed in 2020.02" + +config BR2_PACKAGE_JAMVM + bool "jamvm removed" + select BR2_LEGACY + help + JamVM has not had a release since 2014 and is unmaintained. + +config BR2_PACKAGE_CLASSPATH + bool "classpath removed" + select BR2_LEGACY + help + GNU Classpath package was removed. The last upstream + release was in 2012 and there hasn't been a commit + since 2016. + +config BR2_PACKAGE_QT5_VERSION_5_6 + bool "qt 5.6 support removed" + select BR2_LEGACY + help + Support for Qt 5.6 is EOL and has been removed. The current + version (5.12 or later) has been selected instead. + +config BR2_PACKAGE_CURL + bool "BR2_PACKAGE_CURL was renamed" + select BR2_PACKAGE_LIBCURL_CURL + select BR2_LEGACY + help + The BR2_PACKAGE_CURL config symbol was renamed to + BR2_PACKAGE_LIBCURL_CURL. + +config BR2_PACKAGE_GSTREAMER + bool "gstreamer-0.10 removed" + select BR2_LEGACY + help + Gstreamer-0.10 package was removed. It has been deprecated + upstream since 2012, and is missing a lot of features and + fixes compared to gstreamer-1.x. + +config BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_GSTREAMER_PLUGINS + bool "nvidia-tegra23 binaries gstreamer 0.10.x support removed" + select BR2_LEGACY + help + Gstreamer 0.10.x is no longer available in Buildroot, so + neither is the support in nvidia-tegra23 binaries. + +config BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_NV_SAMPLE_APPS + bool "nvidia-tegra23 binaries sample apps removed" + select BR2_LEGACY + help + Gstreamer 0.10.x is no longer available in Buildroot, so + neither is the support in nvidia-tegra23 binaries. + +config BR2_PACKAGE_FREERDP_GSTREAMER + bool "freerdp gstreamer 0.10.x support removed" + select BR2_LEGACY + help + Gstreamer 0.10.x is no longer available in Buildroot, so + neither is the support in freerdp. + +config BR2_PACKAGE_OPENCV3_WITH_GSTREAMER + bool "opencv3 gstreamer 0.10.x support removed" + select BR2_LEGACY + help + Gstreamer 0.10.x is no longer available in Buildroot, so + neither is the support in opencv3. + +config BR2_PACKAGE_OPENCV_WITH_GSTREAMER + bool "opencv gstreamer 0.10.x support removed" + select BR2_LEGACY + help + Gstreamer 0.10.x is no longer available in Buildroot, so + neither is the support in opencv. + +config BR2_PACKAGE_LIBPLAYER + bool "libplayer package was removed" + select BR2_LEGACY + help + The libplayer package was removed. The latest release is + from 2010 and none of the backends are available in + Buildroot any more. + +config BR2_GCC_VERSION_OR1K + bool "gcc 5.x fork for or1k has been removed" + select BR2_LEGACY + help + Support for gcc 5.x for or1k has been removed. The current + default version (9.x or later) has been selected instead. + +config BR2_PACKAGE_BLUEZ_UTILS + bool "bluez-utils was removed" + select BR2_LEGACY + select BR2_PACKAGE_BLUEZ5_UTILS if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 \ + && BR2_TOOLCHAIN_HAS_SYNC_4 + help + The bluez-utils (BlueZ 4.x) package was removed as it is + deprecated since a long time. As an alternative, the + bluez5-utils (BlueZ 5.x) has been automatically selected in + your configuration. + +config BR2_PACKAGE_GADGETFS_TEST + bool "gadgetfs-test was removed" + select BR2_LEGACY + help + The gadgetfs-test package was removed. Gadgetfs has been + deprecated in favour of functionfs. Consider using + gadget-tool (gt) instead. + +config BR2_PACKAGE_FIS + bool "fis was removed" + select BR2_LEGACY + help + The fis package was removed. + +config BR2_PACKAGE_REFPOLICY_POLICY_VERSION + string "refpolicy policy version" + help + The refpolicy policy version option has been moved to the + libsepol package. + +config BR2_PACKAGE_REFPOLICY_POLICY_VERSION_WRAP + bool + default y if BR2_PACKAGE_REFPOLICY_POLICY_VERSION != "" + select BR2_LEGACY + +config BR2_PACKAGE_CELT051 + bool "celt051 package was removed" + select BR2_LEGACY + select BR2_PACKAGE_OPUS + help + The celt051 package was removed as it is now obsolete since + the CELT codec has been merged into the IETF Opus codec. As + a result, the opus package has been automatically selected + in your configuration. + +config BR2_PACKAGE_WIREGUARD + bool "wireguard package renamed" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 + select BR2_LEGACY + select BR2_PACKAGE_WIREGUARD_LINUX_COMPAT if BR2_LINUX_KERNEL + select BR2_PACKAGE_WIREGUARD_TOOLS + help + The wireguard package has been renamed to wireguard-tools + for the userspace tooling and wireguard-linux-compat for the + kernel side for legacy (<5.6) kernels to match upstream. + +config BR2_PACKAGE_PERL_NET_PING + bool "perl-net-ping was removed" + select BR2_LEGACY + help + Net::Ping is a Perl core module (ie. bundled with perl). + +config BR2_PACKAGE_PERL_MIME_BASE64 + bool "perl-mime-base64 was removed" + select BR2_LEGACY + help + MIME::Base64 is a Perl core module (ie. bundled with perl). + +config BR2_PACKAGE_PERL_DIGEST_MD5 + bool "perl-digest-md5 was removed" + select BR2_LEGACY + help + Digest::MD5 is a Perl core module (ie. bundled with perl). + +config BR2_PACKAGE_ERLANG_P1_ICONV + bool "erlang-p1-iconv has been removed" + select BR2_LEGACY + help + The erlang-p1-iconv package was no longer used by ejabberd, + and was no longer maintained upstream, so it was removed. + +config BR2_KERNEL_HEADERS_5_3 + bool "kernel headers version 5.3.x are no longer supported" + select BR2_LEGACY + help + Version 5.3.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_PACKAGE_PYTHON_SCAPY3K + bool "python-scapy3k is replaced by python-scapy" + select BR2_LEGACY + select BR2_PACKAGE_PYTHON_SCAPY + help + python-scapy3k has been deprecated, since python-scapy has + gained Python 3 support. Use BR2_PACKAGE_PYTHON_SCAPY + instead. + +config BR2_BINUTILS_VERSION_2_30_X + bool "binutils version 2.30 support removed" + select BR2_LEGACY + help + Support for binutils version 2.30 has been removed. The + current default version (2.31 or later) has been selected + instead. + +config BR2_PACKAGE_RPI_USERLAND_START_VCFILED + bool "rpi-userland start vcfiled was removed" + select BR2_LEGACY + help + The vcfiled support was removed upstream. + +config BR2_PACKAGE_TI_SGX_KM_AM335X + bool "ti-sgx-km AM335X option removed" + select BR2_LEGACY + select BR2_PACKAGE_TI_SGX_KM + help + Starting from buildroot release 2020.02, the buildroot package + only supports the target am335x. + +config BR2_PACKAGE_TI_SGX_KM_AM437X + bool "ti-sgx-km AM437X option removed" + select BR2_LEGACY + help + Starting from buildroot release 2020.02, the buildroot package + only supports the target am335x. + +config BR2_PACKAGE_TI_SGX_KM_AM4430 + bool "ti-sgx-km AM4430 option removed" + select BR2_LEGACY + help + Starting from buildroot release 2020.02, the buildroot package + only supports the target am335x. + +config BR2_PACKAGE_TI_SGX_KM_AM5430 + bool "ti-sgx-km AM5430 option removed" + select BR2_LEGACY + help + Starting from buildroot release 2020.02, the buildroot package + only supports the target am335x. + +comment "Legacy options removed in 2019.11" + +config BR2_PACKAGE_OPENVMTOOLS_PROCPS + bool "openvmtools' procps support was removed" + select BR2_LEGACY + help + Upstream stopped supporting this option a while ago. + +config BR2_PACKAGE_ALLJOYN + bool "alljoyn was removed" + select BR2_LEGACY + help + The alljoyn framework is dead + +config BR2_PACKAGE_ALLJOYN_BASE + bool "alljoyn-base was removed" + select BR2_LEGACY + help + The alljoyn framework is dead + +config BR2_PACKAGE_ALLJOYN_BASE_CONTROLPANEL + bool "alljoyn-base control panel was removed" + select BR2_LEGACY + help + The alljoyn framework is dead + +config BR2_PACKAGE_ALLJOYN_BASE_NOTIFICATION + bool "alljoyn-base notification was removed" + select BR2_LEGACY + help + The alljoyn framework is dead + +config BR2_PACKAGE_ALLJOYN_BASE_ONBOARDING + bool "alljoyn-base onboarding was removed" + select BR2_LEGACY + help + The alljoyn framework is dead + +config BR2_PACKAGE_ALLJOYN_TCL_BASE + bool "alljoyn-tcl-base was removed" + select BR2_LEGACY + help + The alljoyn framework is dead + +config BR2_PACKAGE_ALLJOYN_TCL + bool "alljoyn-tcl was removed" + select BR2_LEGACY + help + The alljoyn framework is dead + +config BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS + string "toolchain-external extra libs option has been renamed" + help + The option BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS has + been renamed to BR2_TOOLCHAIN_EXTRA_LIBS. + +config BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS_WRAP + bool + default y if BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS != "" + select BR2_LEGACY + +config BR2_PACKAGE_PYTHON_PYSNMP_APPS + bool "python-pysnmp-apps was removed" + select BR2_LEGACY + select BR2_PACKAGE_SNMPCLITOOLS + help + Following upstream changes, the python-pysnmp-apps package + has been removed, and snmpclitools should be used as a + replacement. + +config BR2_KERNEL_HEADERS_5_2 + bool "kernel headers version 5.2.x are no longer supported" + select BR2_LEGACY + help + Version 5.2.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_TARGET_RISCV_PK + bool "riscv-pk was removed" + select BR2_LEGACY + help + The RISC-V Proxy Kernel (pk) and Berkley Boot Loader (BBL) + have been replaced with OpenSBI. + +config BR2_PACKAGE_SQLITE_STAT3 + bool "sqlite stat3 support was removed" + select BR2_LEGACY + help + Upstream removed the support for stat3. + +config BR2_KERNEL_HEADERS_5_1 + bool "kernel headers version 5.1.x are no longer supported" + select BR2_LEGACY + help + Version 5.1.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_PACKAGE_DEVMEM2 + bool "devmem2 package was removed" + select BR2_LEGACY + help + Use the the Busybox devmem utility, instead, which provides + the same functionality. + +config BR2_PACKAGE_USTR + bool "ustr package removed" + select BR2_LEGACY + help + The 'ustr' package was only used by SELinux libsemanage, but + since SELinux 2.7, ustr is no longer used. Therefore, we + removed this package from Buildroot. + +config BR2_PACKAGE_KODI_SCREENSAVER_PLANESTATE + bool "kodi-screensaver-planestate package was removed" + select BR2_LEGACY + help + This package is incompatible with Kodi 18.x. + +config BR2_PACKAGE_KODI_VISUALISATION_WAVEFORHUE + bool "kodi-visualisation-waveforhue package was removed" + select BR2_LEGACY + help + This package is incompatible with Kodi 18.x. + +config BR2_PACKAGE_KODI_AUDIODECODER_OPUS + bool "kodi-audiodecoder-opus package was removed" + select BR2_LEGACY + help + This package is incompatible with Kodi 18.x. + +config BR2_PACKAGE_MESA3D_OSMESA + bool "mesa OSMesa option renamed" + select BR2_PACKAGE_MESA3D_OSMESA_CLASSIC if BR2_PACKAGE_MESA3D_DRI_DRIVER_SWRAST + select BR2_LEGACY + help + The option was renamed in order to match the naming used + by the meson buildsystem. + +config BR2_PACKAGE_HOSTAPD_DRIVER_RTW + bool "hostapd rtl871xdrv driver removed" + select BR2_LEGACY + help + Since the update of hostapd to 2.9, the patch provided for + the rtl871xdrv no longer works, although it + applies. Moreover, AP support for Realtek chips is broken + anyway in kernels > 4.9. Therefore, this option has been + removed. + +config BR2_PACKAGE_WPA_SUPPLICANT_DBUS_NEW + bool "new dbus support option in wpa_supplicant was renamed" + select BR2_PACKAGE_WPA_SUPPLICANT_DBUS if BR2_TOOLCHAIN_HAS_THREADS + select BR2_LEGACY + help + The new dbus support option was renamed. + +config BR2_PACKAGE_WPA_SUPPLICANT_DBUS_OLD + bool "old dbus support in wpa_supplicant was removed" + select BR2_LEGACY + help + The old dbus support was removed. + +comment "Legacy options removed in 2019.08" + +config BR2_TARGET_TS4800_MBRBOOT + bool "ts4800-mbrboot package was removed" + select BR2_LEGACY + help + The defconfig for the TS4800 platform has been removed, so + the ts4800-mbrboot package, containing the boot code for + this specific platform has been removed as welL. + +config BR2_PACKAGE_LIBAMCODEC + bool "liamcodec package was removed" + select BR2_LEGACY + help + Support for odroidc2 based systems was removed, making the + libamcodec package useless. + +config BR2_PACKAGE_ODROID_SCRIPTS + bool "odroid-scripts package was removed" + select BR2_LEGACY + help + Support for odroidc2 based systems was removed, making the + odroid-scripts package useless. + +config BR2_PACKAGE_ODROID_MALI + bool "odroid-mali package was removed" + select BR2_LEGACY + help + Support for odroidc2 based systems was removed, making the + odroid-mali package useless. + +config BR2_PACKAGE_KODI_PLATFORM_AML + bool "Kodi AMLogic support was removed" + select BR2_LEGACY + help + Support for AMLogic was removed due to the removal of the + odroidc2 defconfig. + +config BR2_GCC_VERSION_6_X + bool "gcc 6.x support removed" + select BR2_LEGACY + help + Support for gcc version 6.x has been removed. The current + default version (8.x or later) has been selected instead. + +config BR2_GCC_VERSION_4_9_X + bool "gcc 4.9.x support removed" + select BR2_LEGACY + help + Support for gcc version 4.9.x has been removed. The current + default version (8.x or later) has been selected instead. + +config BR2_GDB_VERSION_7_12 + bool "gdb 7.12.x has been removed" + select BR2_LEGACY + help + The 7.12.x version of gdb has been removed. Use a newer + version instead. + +config BR2_PACKAGE_XAPP_MKFONTDIR + bool "mkfontdir is now included in xapp_mkfontscale" + select BR2_PACKAGE_XAPP_MKFONTSCALE + select BR2_LEGACY + help + xapp_mkfontscale now includes the mkfontdir script previously + distributed separately for compatibility with older X11 + versions. + +config BR2_GDB_VERSION_8_0 + bool "gdb 8.0.x has been removed" + select BR2_LEGACY + help + The 8.0.x version of gdb has been removed. Use a newer + version instead. + +config BR2_KERNEL_HEADERS_4_20 + bool "kernel headers version 4.20.x are no longer supported" + select BR2_LEGACY + help + Version 4.20.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_5_0 + bool "kernel headers version 5.0.x are no longer supported" + select BR2_LEGACY + help + Version 5.0.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +comment "Legacy options removed in 2019.05" + +config BR2_CSKY_DSP + bool "C-SKY DSP support removed" + select BR2_LEGACY + help + C-SKY DSP instruction support for ck810 / ck807 was removed, + as it was no longer supported in C-SKY gcc. Perhaps the VDSP + instructions should be used instead, using the BR2_CSKY_VDSP + option. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_COMPOSITOR + bool "compositor moved to gst1-plugins-base" + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_COMPOSITOR + select BR2_LEGACY + help + The gst1-plugins-bad compositor plugin has moved + to gst1-plugins-base. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IQA + bool "gst-plugins-bad IQA option was removed" + select BR2_LEGACY + help + The gst1-plugins-bad IQA option was removed. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENCV + bool "gst-plugins-bad opencv option was removed" + select BR2_LEGACY + help + The gst1-plugins-bad opencv option was removed because + buildroot does not have the opencv_contrib package which + is required for the bgsegm module which gst1-plugins-bad + now requires along with opencv3. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_STEREO + bool "stereo was merged into audiofx in gst1-plugins-good" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUDIOFX + help + The gst1-plugins-bad stereo plugin has merged with the + gst1-plugins-base audiofx plugin. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VCD + bool "gst-plugins-bad vcd plugin was removed." + select BR2_LEGACY + help + The gst1-plugins-bad vcd plugin was removed. + +config BR2_PACKAGE_LUNIT + bool "lunit package removed" + select BR2_LEGACY + select BR2_PACKAGE_LUA_LUNITX + help + The lunit package was removed in favor of its fork lunitx, + which supports all versions of Lua. + +config BR2_PACKAGE_FFMPEG_FFSERVER + bool "ffmpeg ffserver removed" + select BR2_LEGACY + help + On July 10th, 2016, ffserver program has been dropped. + +config BR2_PACKAGE_LIBUMP + bool "libump package removed" + select BR2_LEGACY + help + The libump package was removed, it was only used as a + dependency of sunxi-mali, which itself was removed. + +config BR2_PACKAGE_SUNXI_MALI + bool "sunxi-mali package removed" + select BR2_LEGACY + select BR2_PACKAGE_SUNXI_MALI_UTGARD + help + The sunxi-mali package was removed, as the + sunxi-mali-mainline package replaces it for mainline + kernels on Allwinner platforms. + +config BR2_BINUTILS_VERSION_2_29_X + bool "binutils version 2.29 support removed" + select BR2_LEGACY + help + Support for binutils version 2.29 has been removed. The + current default version (2.31 or later) has been selected + instead. + +config BR2_BINUTILS_VERSION_2_28_X + bool "binutils version 2.28 support removed" + select BR2_LEGACY + help + Support for binutils version 2.28 has been removed. The + current default version (2.31 or later) has been selected + instead. + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_APEXSINK + bool "gst-plugins-bad apexsink option removed" + select BR2_LEGACY + help + The gst-plugins-bad apexsink option was removed. + +comment "Legacy options removed in 2019.02" + +config BR2_PACKAGE_QT + bool "qt package removed" + select BR2_LEGACY + help + The qt package was removed. + +config BR2_PACKAGE_QTUIO + bool "qtuio package removed" + select BR2_LEGACY + help + The qtuio package was removed. + +config BR2_PACKAGE_PINENTRY_QT4 + bool "pinentry-qt4 option removed" + select BR2_LEGACY + help + The pinentry-qt4 option was removed. + +config BR2_PACKAGE_POPPLER_QT + bool "poppler qt option removed" + select BR2_LEGACY + help + The poppler qt option was removed. + +config BR2_PACKAGE_OPENCV3_WITH_QT + bool "opencv3 qt backend option removed" + select BR2_LEGACY + help + The opencv3 qt backend option was removed. + +config BR2_PACKAGE_OPENCV_WITH_QT + bool "opencv qt backend option removed" + select BR2_LEGACY + help + The opencv qt backend option was removed. + +config BR2_PACKAGE_AMD_CATALYST_CCCLE + bool "catalyst control center option removed" + select BR2_LEGACY + help + The AMD Catalyst Control Center option was removed. + +config BR2_PACKAGE_SDL_QTOPIA + bool "sdl qtopia video driver option removed" + select BR2_LEGACY + help + The SDL QTopia video driver option was removed. + +config BR2_PACKAGE_PYTHON_PYQT + bool "python-pyqt package removed" + select BR2_LEGACY + help + The python-pyqt package was removed. Consider python-pyqt5 + instead. + +config BR2_PACKAGE_LUACRYPTO + bool "luacrypto package removed" + select BR2_LEGACY + help + The luacrypto package was removed. Consider luaossl instead. + +config BR2_PACKAGE_TN5250 + bool "tn5250 package removed" + select BR2_LEGACY + help + The tn5250 package was removed. + +config BR2_PACKAGE_BOOST_SIGNALS + bool "Boost signals removed" + select BR2_LEGACY + help + Its removal was announced in boost 1.68 and its deprecation + was announced in 1.54. Users are encouraged to use Signals2 + instead. + +config BR2_PACKAGE_FFTW_PRECISION_SINGLE + bool "single" + select BR2_LEGACY + select BR2_PACKAGE_FFTW_SINGLE + help + This option has been removed in favor of + BR2_PACKAGE_FFTW_SINGLE. + +config BR2_PACKAGE_FFTW_PRECISION_DOUBLE + bool "double" + select BR2_LEGACY + select BR2_PACKAGE_FFTW_DOUBLE + help + This option has been removed in favor of + BR2_PACKAGE_FFTW_DOUBLE. + +config BR2_PACKAGE_FFTW_PRECISION_LONG_DOUBLE + bool "long double" + depends on !(BR2_TOOLCHAIN_BUILDROOT_UCLIBC && \ + (BR2_arm || BR2_mips || BR2_mipsel)) + select BR2_LEGACY + select BR2_PACKAGE_FFTW_LONG_DOUBLE + help + This option has been removed in favor of + BR2_PACKAGE_FFTW_LONG_DOUBLE. + +config BR2_PACKAGE_FFTW_PRECISION_QUAD + bool "quad" + depends on (BR2_i386 || BR2_x86_64) && BR2_USE_WCHAR + select BR2_LEGACY + select BR2_PACKAGE_FFTW_QUAD + help + This option has been removed in favor of + BR2_PACKAGE_FFTW_QUAD. + +config BR2_PACKAGE_LUA_5_2 + bool "Lua 5.2.x version removed" + select BR2_LEGACY + help + The Lua 5.2.x version was removed. +# Note: BR2_PACKAGE_LUA_5_2 is still referenced from package/lua/Config.in + +config BR2_TARGET_GENERIC_PASSWD_MD5 + bool "target passwd md5 format support has been removed" + select BR2_LEGACY + help + The default has been moved to SHA256 and all C libraries + now support that method by default + +comment "Legacy options removed in 2018.11" + +config BR2_TARGET_XLOADER + bool "xloader has been removed" + select BR2_LEGACY + help + The package has been removed as u-boot SPL provides + similar functionality + +config BR2_PACKAGE_TIDSP_BINARIES + bool "tidsp-binaries package removed" + select BR2_LEGACY + help + The tidsp-binaries package was removed. + +config BR2_PACKAGE_DSP_TOOLS + bool "dsp-tools package removed" + select BR2_LEGACY + help + The dsp-tools package was removed. + +config BR2_PACKAGE_GST_DSP + bool "gst-dsp package removed" + select BR2_LEGACY + help + The gst-dsp package was removed. + +config BR2_PACKAGE_BOOTUTILS + bool "bootutils package removed" + select BR2_LEGACY + help + The bootutils package was removed. + +config BR2_PACKAGE_EXPEDITE + bool "expedite package has been removed" + select BR2_LEGACY + help + expedite is not actively maintained anymore. + https://sourceforge.net/p/enlightenment/mailman/message/36428571 + +config BR2_PACKAGE_MESA3D_OPENGL_TEXTURE_FLOAT + bool "mesa3d opengl texture float option removed" + select BR2_LEGACY + help + mesa3d now unconditionally enables floating-point textures, + as the corresponding patent has expired. + +config BR2_KERNEL_HEADERS_4_10 + bool "kernel headers version 4.10.x are no longer supported" + select BR2_LEGACY + help + Version 4.10.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_11 + bool "kernel headers version 4.11.x are no longer supported" + select BR2_LEGACY + help + Version 4.11.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_12 + bool "kernel headers version 4.12.x are no longer supported" + select BR2_LEGACY + help + Version 4.12.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_13 + bool "kernel headers version 4.13.x are no longer supported" + select BR2_LEGACY + help + Version 4.13.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_15 + bool "kernel headers version 4.15.x are no longer supported" + select BR2_LEGACY + help + Version 4.15.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_17 + bool "kernel headers version 4.17.x are no longer supported" + select BR2_LEGACY + help + Version 4.17.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_PACKAGE_LIBNFTNL_XML + bool "libnftl no longer supports XML output" + select BR2_LEGACY + help + libnftnl removed integration with libmxml. + +config BR2_KERNEL_HEADERS_3_2 + bool "kernel headers version 3.2.x are no longer supported" + select BR2_LEGACY + help + Version 3.2.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_1 + bool "kernel headers version 4.1.x are no longer supported" + select BR2_LEGACY + help + Version 4.1.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_16 + bool "kernel headers version 4.16.x are no longer supported" + select BR2_LEGACY + help + Version 4.16.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_18 + bool "kernel headers version 4.18.x are no longer supported" + select BR2_LEGACY + help + Version 4.18.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +############################################################################### +comment "Legacy options removed in 2018.08" + +config BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT + bool "docker-engine static client option renamed" + select BR2_LEGACY + select BR2_PACKAGE_DOCKER_CLI_STATIC + help + BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT has been renamed to + BR2_PACKAGE_DOCKER_CLI_STATIC, following the package split of + docker-engine and docker-cli. + +config BR2_PACKAGE_XPROTO_APPLEWMPROTO + bool "xproto-applewmproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-applewmproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_BIGREQSPROTO + bool "xproto-bigreqsproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-bigreqsproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_COMPOSITEPROTO + bool "xproto-compositeproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-compositeproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_DAMAGEPROTO + bool "xproto-dameproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-dameproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_DMXPROTO + bool "xproto-dmxproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-dmxproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_DRI2PROTO + bool "xproto-dri2proto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-dri2proto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_DRI3PROTO + bool "xproto-dri3proto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-dri3proto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_FIXESPROTO + bool "xproto-fixesproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-fixesproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_FONTCACHEPROTO + bool "xproto-fontcacheproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-fontcacheproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_FONTSPROTO + bool "xproto-fontsproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-fontsproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_GLPROTO + bool "xproto-glproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-glproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_INPUTPROTO + bool "xproto-inputproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-inputproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_KBPROTO + bool "xproto-kbproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-kbproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_PRESENTPROTO + bool "xproto-presentproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-presentproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_RANDRPROTO + bool "xproto-randrproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-randrproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_RECORDPROTO + bool "xproto-recordproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-recordproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_RENDERPROTO + bool "xproto-renderproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-renderproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_RESOURCEPROTO + bool "xproto-resourceproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-resourceproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_SCRNSAVERPROTO + bool "xproto-scrnsaverprot package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-scrnsaverprot package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_VIDEOPROTO + bool "xproto-videoproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-videoproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_WINDOWSWMPROTO + bool "xproto-windowswmproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-windowswmproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_XCMISCPROTO + bool "xproto-xcmiscproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-xcmiscproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_XEXTPROTO + bool "xproto-xextproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-xextproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_XF86BIGFONTPROTO + bool "xproto-xf86bigfontproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-xf86bigfontproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_XF86DGAPROTO + bool "xproto-xf86dgaproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-xf86dgaproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_XF86DRIPROTO + bool "xproto-xf86driproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-xf86driproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_XF86VIDMODEPROTO + bool "xproto-xf86vidmodeproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-xf86vidmodeproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_XINERAMAPROTO + bool "xproto-xineramaproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-xineramaproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_XPROTO + bool "xproto-xproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-xproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_XPROXYMANAGEMENTPROTOCOL + bool "xproto-xproxymanagementprotocol package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-xproxymanagementprotocol package has been + replaced by the xorgproto package, which combines all + xproto_* packages. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_OPENGL + bool "gst1-plugins-bad opengl option moved to gst1-plugins-base" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_OPENGL + help + The opengl option has been moved from gst1-plugins-bad to + gst1-plugins-base. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_GLES2 + bool "gst1-plugins-bad gles2 option moved to gst1-plugins-base" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_GLES2 + help + The gles2 option has been moved from gst1-plugins-bad to + gst1-plugins-base. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_GLX + bool "gst1-plugins-bad glx option moved to gst1-plugins-base" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_GLX + help + The glx option has been moved from gst1-plugins-bad to + gst1-plugins-base. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_EGL + bool "gst1-plugins-bad egl option moved to gst1-plugins-base" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL + help + The egl option has been moved from gst1-plugins-bad to + gst1-plugins-base. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_X11 + bool "gst1-plugins-bad x11 option moved to gst1-plugins-base" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_X11 + help + The x11 option has been moved from gst1-plugins-bad to + gst1-plugins-base. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_WAYLAND + bool "gst1-plugins-bad wayland option moved to gst1-plugins-base" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_WAYLAND + help + The wayland option has been moved from gst1-plugins-bad to + gst1-plugins-base. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_DISPMANX + bool "gst1-plugins-bad dispmanx option moved to gst1-plugins-base" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_DISPMANX + help + The dispmanx option has been moved from gst1-plugins-mad to + gst1-plugins-base. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOMIXER + bool "gst1-plugins-bad audiomixer option moved to gst1-plugins-base" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOMIXER + help + The audiomixer option has been moved from gst1-plugins-bad to + gst1-plugins-base. + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_LAME + bool "gst1-plugins-ugly lame option moved to gst1-plugins-good" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LAME + help + The lame option has been moved from gst1-plugins-ugly to + gst1-plugins-good. + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MPG123 + bool "gst1-plugins-ugly mpg123 option moved to gst1-plugins-good" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MPG123 + help + The mpg123 option has been moved from gst1-plugins-ugly to + gst1-plugins-good. + +config BR2_GDB_VERSION_7_11 + bool "gdb 7.11 has been removed" + select BR2_LEGACY + help + The 7.11 version of gdb has been removed. Use a newer version + instead. + +config BR2_GDB_VERSION_7_10 + bool "gdb 7.10 has been removed" + select BR2_LEGACY + help + The 7.10 version of gdb has been removed. Use a newer version + instead. + +############################################################################### +comment "Legacy options removed in 2018.05" + +config BR2_PACKAGE_MEDIAART_BACKEND_NONE + bool "libmediaart none backend option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_MEDIAART_BACKEND_NONE has been renamed to + BR2_PACKAGE_LIBMEDIAART_BACKEND_NONE + +config BR2_PACKAGE_MEDIAART_BACKEND_GDK_PIXBUF + bool "libmediaart gdk-pixbuf backend option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_MEDIAART_BACKEND_GDK_PIXBUF has been renamed to + BR2_PACKAGE_LIBMEDIAART_BACKEND_GDK_PIXBUF + +config BR2_PACKAGE_MEDIAART_BACKEND_QT + bool "libmediaart qt backend option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_MEDIAART_BACKEND_QT has been renamed to + BR2_PACKAGE_LIBMEDIAART_BACKEND_QT + +config BR2_PACKAGE_TI_SGX_AM335X + bool "ti-sgx-km AM335X option removed" + select BR2_LEGACY + select BR2_PACKAGE_TI_SGX_KM + help + Starting from buildroot release 2020.02, the buildroot package + only supports the target am335x. + +config BR2_PACKAGE_TI_SGX_AM437X + bool "ti-sgx-km AM437X option removed" + select BR2_LEGACY + help + Starting from buildroot release 2020.02, the buildroot package + only supports the target am335x. + +config BR2_PACKAGE_TI_SGX_AM4430 + bool "ti-sgx-km AM4430 option removed" + select BR2_LEGACY + help + Starting from buildroot release 2020.02, the buildroot package + only supports the target am335x. + +config BR2_PACKAGE_TI_SGX_AM5430 + bool "ti-sgx-km AM5430 option removed" + select BR2_LEGACY + help + Starting from buildroot release 2020.02, the buildroot package + only supports the target am335x. + +config BR2_PACKAGE_JANUS_AUDIO_BRIDGE + bool "janus-gateway audio-bridge option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_AUDIO_BRIDGE + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_AUDIO_BRIDGE has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_AUDIO_BRIDGE. + +config BR2_PACKAGE_JANUS_ECHO_TEST + bool "janus-gateway echo-test option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_ECHO_TEST + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_ECHO_TEST has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_ECHO_TEST. + +config BR2_PACKAGE_JANUS_RECORDPLAY + bool "janus-gateway recordplay option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_RECORDPLAY + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_RECORDPLAY has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_RECORDPLAY. + +config BR2_PACKAGE_JANUS_SIP_GATEWAY + bool "janus-gateway sip-gateway option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_SIP_GATEWAY + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_SIP_GATEWAY has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_SIP_GATEWAY. + +config BR2_PACKAGE_JANUS_STREAMING + bool "janus-gateway streaming option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_STREAMING + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_STREAMING has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_STREAMING. + +config BR2_PACKAGE_JANUS_TEXT_ROOM + bool "janus-gateway text-room option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_TEXT_ROOM + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_TEXT_ROOM has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_TEXT_ROOM. + +config BR2_PACKAGE_JANUS_VIDEO_CALL + bool "janus-gateway video-call option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_VIDEO_CALL + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_VIDEO_CALL has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_VIDEO_CALL. + +config BR2_PACKAGE_JANUS_VIDEO_ROOM + bool "janus-gateway video-room option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_VIDEO_ROOM + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_VIDEO_ROOM has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_VIDEO_ROOM. + +config BR2_PACKAGE_JANUS_MQTT + bool "janus-gateway mqtt option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_MQTT + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_MQTT has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_MQTT. + +config BR2_PACKAGE_JANUS_RABBITMQ + bool "janus-gateway rabbitmq option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_RABBITMQ + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_RABBITMQ has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_RABBITMQ. + +config BR2_PACKAGE_JANUS_REST + bool "janus-gateway rest option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_REST + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_REST has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_REST. + +config BR2_PACKAGE_JANUS_UNIX_SOCKETS + bool "janus-gateway unix-sockets option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_UNIX_SOCKETS + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_UNIX_SOCKETS has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_UNIX_SOCKETS. + +config BR2_PACKAGE_JANUS_WEBSOCKETS + bool "janus-gateway websockets option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_WEBSOCKETS + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_WEBSOCKETS has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_WEBSOCKETS. + +config BR2_PACKAGE_IPSEC_SECCTX_DISABLE + bool "ipsec-tools security context disable option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_IPSEC_SECCTX_DISABLE was renamed to + BR2_PACKAGE_IPSEC_TOOLS_SECCTX_DISABLE. + +config BR2_PACKAGE_IPSEC_SECCTX_ENABLE + bool "ipsec-tools SELinux security context enable option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_IPSEC_SECCTX_ENABLE was renamed to + BR2_PACKAGE_IPSEC_TOOLS_SECCTX_ENABLE. + +config BR2_PACKAGE_IPSEC_SECCTX_KERNEL + bool "ipsec-tools kernel security context enable option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_IPSEC_SECCTX_KERNEL was renamed to + BR2_PACKAGE_IPSEC_TOOLS_SECCTX_KERNEL. + +config BR2_PACKAGE_LIBTFDI_CPP + bool "libftdi C++ bindings option renamed" + select BR2_LEGACY + select BR2_PACKAGE_LIBFTDI_CPP + help + The option BR2_PACKAGE_LIBTFDI_CPP was renamed to + BR2_PACKAGE_LIBFTDI_CPP in order to fix a typo in the option + name. + +config BR2_PACKAGE_JQUERY_UI_THEME_BLACK_TIE + bool "jquery-ui-themes option black-tie renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + black-tie theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_BLACK_TIE to + BR2_PACKAGE_JQUERY_UI_THEMES_BLACK_TIE. + +config BR2_PACKAGE_JQUERY_UI_THEME_BLITZER + bool "jquery-ui-themes option blitzer renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + blitzer theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_BLITZER to + BR2_PACKAGE_JQUERY_UI_THEMES_BLITZER. + +config BR2_PACKAGE_JQUERY_UI_THEME_CUPERTINO + bool "jquery-ui-themes option cupertino renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + cupertino theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_CUPERTINO to + BR2_PACKAGE_JQUERY_UI_THEMES_CUPERTINO. + +config BR2_PACKAGE_JQUERY_UI_THEME_DARK_HIVE + bool "jquery-ui-themes option dark-hive renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + dark-hive theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_DARK_HIVE to + BR2_PACKAGE_JQUERY_UI_THEMES_DARK_HIVE. + +config BR2_PACKAGE_JQUERY_UI_THEME_DOT_LUV + bool "jquery-ui-themes option dot-luv renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + dot-luv theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_DOT_LUV to + BR2_PACKAGE_JQUERY_UI_THEMES_DOT_LUV. + +config BR2_PACKAGE_JQUERY_UI_THEME_EGGPLANT + bool "jquery-ui-themes option eggplant renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + eggplant theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_EGGPLANT to + BR2_PACKAGE_JQUERY_UI_THEMES_EGGPLANT. + +config BR2_PACKAGE_JQUERY_UI_THEME_EXCITE_BIKE + bool "jquery-ui-themes option excite-bike renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + excite-bike theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_EXCITE_BIKE to + BR2_PACKAGE_JQUERY_UI_THEMES_EXCITE_BIKE. + +config BR2_PACKAGE_JQUERY_UI_THEME_FLICK + bool "jquery-ui-themes option flick renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + flick theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_FLICK to + BR2_PACKAGE_JQUERY_UI_THEMES_FLICK. + +config BR2_PACKAGE_JQUERY_UI_THEME_HOT_SNEAKS + bool "jquery-ui-themes option hot-sneaks renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + hot-sneaks theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_HOT_SNEAKS to + BR2_PACKAGE_JQUERY_UI_THEMES_HOT_SNEAKS. + +config BR2_PACKAGE_JQUERY_UI_THEME_HUMANITY + bool "jquery-ui-themes option humanity renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + humanity theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_HUMANITY to + BR2_PACKAGE_JQUERY_UI_THEMES_HUMANITY. + +config BR2_PACKAGE_JQUERY_UI_THEME_LE_FROG + bool "jquery-ui-themes option le-frog renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + le-frog theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_LE_FROG to + BR2_PACKAGE_JQUERY_UI_THEMES_LE_FROG. + +config BR2_PACKAGE_JQUERY_UI_THEME_MINT_CHOC + bool "jquery-ui-themes option mint-choc renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + mint-choc theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_MINT_CHOC to + BR2_PACKAGE_JQUERY_UI_THEMES_MINT_CHOC. + +config BR2_PACKAGE_JQUERY_UI_THEME_OVERCAST + bool "jquery-ui-themes option overcast renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + overcast theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_OVERCAST to + BR2_PACKAGE_JQUERY_UI_THEMES_OVERCAST. + +config BR2_PACKAGE_JQUERY_UI_THEME_PEPPER_GRINDER + bool "jquery-ui-themes option pepper-grinder renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + pepper-grinder theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_PEPPER_GRINDER to + BR2_PACKAGE_JQUERY_UI_THEMES_PEPPER_GRINDER. + +config BR2_PACKAGE_JQUERY_UI_THEME_REDMOND + bool "jquery-ui-themes option redmond renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + redmond theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_REDMOND to + BR2_PACKAGE_JQUERY_UI_THEMES_REDMOND. + +config BR2_PACKAGE_JQUERY_UI_THEME_SMOOTHNESS + bool "jquery-ui-themes option smoothness renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + smoothness theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_SMOOTHNESS to + BR2_PACKAGE_JQUERY_UI_THEMES_SMOOTHNESS. + +config BR2_PACKAGE_JQUERY_UI_THEME_SOUTH_STREET + bool "jquery-ui-themes option south-street renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + south-street theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_SOUTH_STREET to + BR2_PACKAGE_JQUERY_UI_THEMES_SOUTH_STREET. + +config BR2_PACKAGE_JQUERY_UI_THEME_START + bool "jquery-ui-themes option start renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + start theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_START to + BR2_PACKAGE_JQUERY_UI_THEMES_START. + +config BR2_PACKAGE_JQUERY_UI_THEME_SUNNY + bool "jquery-ui-themes option sunny renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + sunny theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_SUNNY to + BR2_PACKAGE_JQUERY_UI_THEMES_SUNNY. + +config BR2_PACKAGE_JQUERY_UI_THEME_SWANKY_PURSE + bool "jquery-ui-themes option swanky-purse renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + swanky-purse theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_SWANKY_PURSE to + BR2_PACKAGE_JQUERY_UI_THEMES_SWANKY_PURSE. + +config BR2_PACKAGE_JQUERY_UI_THEME_TRONTASTIC + bool "jquery-ui-themes option trontastic renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + trontastic theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_TRONTASTIC to + BR2_PACKAGE_JQUERY_UI_THEMES_TRONTASTIC. + +config BR2_PACKAGE_JQUERY_UI_THEME_UI_DARKNESS + bool "jquery-ui-themes option ui-darkness renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + ui-darkness theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_UI_DARKNESS to + BR2_PACKAGE_JQUERY_UI_THEMES_UI_DARKNESS. + +config BR2_PACKAGE_JQUERY_UI_THEME_UI_LIGHTNESS + bool "jquery-ui-themes option ui-lightness renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + ui-lightness theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_UI_LIGHTNESS to + BR2_PACKAGE_JQUERY_UI_THEMES_UI_LIGHTNESS. + +config BR2_PACKAGE_JQUERY_UI_THEME_VADER + bool "jquery-ui-themes option vader renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + vader theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_VADER to + BR2_PACKAGE_JQUERY_UI_THEMES_VADER. + +config BR2_PACKAGE_BLUEZ5_PLUGINS_HEALTH + bool "bluez5-utils health plugin option renamed" + select BR2_LEGACY + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HEALTH + help + For consistency reasons, the option + BR2_PACKAGE_BLUEZ5_PLUGINS_HEALTH has been renamed to + BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HEALTH. + +config BR2_PACKAGE_BLUEZ5_PLUGINS_MIDI + bool "bluez5-utils midi plugin option renamed" + select BR2_LEGACY + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MIDI + help + For consistency reasons, the option + BR2_PACKAGE_BLUEZ5_PLUGINS_MIDI has been renamed to + BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MIDI. + +config BR2_PACKAGE_BLUEZ5_PLUGINS_NFC + bool "bluez5-utils nfc plugin option renamed" + select BR2_LEGACY + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NFC + help + For consistency reasons, the option + BR2_PACKAGE_BLUEZ5_PLUGINS_NFC has been renamed to + BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NFC. + +config BR2_PACKAGE_BLUEZ5_PLUGINS_SAP + bool "bluez5-utils sap plugin option renamed" + select BR2_LEGACY + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SAP + help + For consistency reasons, the option + BR2_PACKAGE_BLUEZ5_PLUGINS_SAP has been renamed to + BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SAP. + +config BR2_PACKAGE_BLUEZ5_PLUGINS_SIXAXIS + bool "bluez5-utils sixaxis plugin option renamed" + select BR2_LEGACY + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS + help + For consistency reasons, the option + BR2_PACKAGE_BLUEZ5_PLUGINS_SIXAXIS has been renamed to + BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS. + +config BR2_PACKAGE_TRANSMISSION_REMOTE + bool "transmission remote tool option removed" + select BR2_LEGACY + select BR2_PACKAGE_TRANSMISSION_DAEMON + help + Upstream does not provide a separate configure option for + the tool transmission-remote, it is built when the + transmission daemon has been enabled. Therefore, Buildroot + has automatically enabled BR2_PACKAGE_TRANSMISSION_DAEMON + for you. + +config BR2_PACKAGE_LIBKCAPI_APPS + bool "libkcapi test applications removed" + select BR2_LEGACY + select BR2_PACKAGE_LIBKCAPI_HASHER if !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBKCAPI_RNGAPP + select BR2_PACKAGE_LIBKCAPI_SPEED + select BR2_PACKAGE_LIBKCAPI_TEST + help + Test applications (hasher, rng read, speed-test, test) now + have their own configuration options in the libkcapi menu. + +config BR2_PACKAGE_MPLAYER + bool "mplayer package removed" + select BR2_LEGACY + help + The mplayer package was removed. + +config BR2_PACKAGE_MPLAYER_MPLAYER + bool "mplayer package removed" + select BR2_LEGACY + help + The mplayer package was removed. + +config BR2_PACKAGE_MPLAYER_MENCODER + bool "mplayer package removed" + select BR2_LEGACY + help + The mplayer package was removed. + +config BR2_PACKAGE_LIBPLAYER_MPLAYER + bool "mplayer support in libplayer removed" + select BR2_LEGACY + help + The mplayer package was removed. + +config BR2_PACKAGE_IQVLINUX + bool "iqvlinux package removed" + select BR2_LEGACY + help + This package contained a kernel module from Intel, which + could only be used together with Intel userspace tools + provided under NDA, which also come with the same kernel + module. The copy of the kernel module available on + SourceForge is provided only to comply with the GPLv2 + requirement. Intel engineers were even surprised it even + built and were not willing to make any effort to fix their + tarball naming to contain a version number. Therefore, it + does not make sense for Buildroot to provide such a package. + + See https://sourceforge.net/p/e1000/bugs/589/ for the + discussion. + +config BR2_BINFMT_FLAT_SEP_DATA + bool "binfmt FLAT with separate code and data removed" + select BR2_LEGACY + help + This FLAT binary format was only used on Blackfin, which has + been removed. + +config BR2_bfin + bool "Blackfin architecture support removed" + select BR2_LEGACY + help + Following the removal of Blackfin support for the upstream + Linux kernel, Buildroot has removed support for this CPU + architecture. + +config BR2_PACKAGE_KODI_ADSP_BASIC + bool "kodi-adsp-basic package removed" + select BR2_LEGACY + help + kodi-adsp-basic is unmaintained + +config BR2_PACKAGE_KODI_ADSP_FREESURROUND + bool "kodi-adsp-freesurround package removed" + select BR2_LEGACY + help + kodi-adsp-freesurround is unmaintained + +############################################################################### +comment "Legacy options removed in 2018.02" + +config BR2_KERNEL_HEADERS_3_4 + bool "kernel headers version 3.4.x are no longer supported" + select BR2_LEGACY + help + Version 3.4.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_3_10 + bool "kernel headers version 3.10.x are no longer supported" + select BR2_LEGACY + help + Version 3.10.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_3_12 + bool "kernel headers version 3.12.x are no longer supported" + select BR2_LEGACY + help + Version 3.12.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_BINUTILS_VERSION_2_27_X + bool "binutils version 2.27 support removed" + select BR2_LEGACY + help + Support for binutils version 2.27 has been removed. The + current default version (2.29 or later) has been selected + instead. + +config BR2_PACKAGE_EEPROG + bool "eeprog package removed" + select BR2_LEGACY + select BR2_PACKAGE_I2C_TOOLS + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + The eeprog program is now provided by the i2c-tools package. + +config BR2_PACKAGE_GNUPG2_GPGV2 + bool "gnupg2 gpgv2 option removed" + select BR2_LEGACY + select BR2_PACKAGE_GNUPG2_GPGV + help + The gpgv2 executable is now named gpgv. The config option + has been renamed accordingly. + +config BR2_PACKAGE_IMX_GPU_VIV_APITRACE + bool "Vivante apitrace tool option removed" + select BR2_LEGACY + help + The apitrace tool for Vivante is not provided by the + imx-gpu-viv package any longer. + +config BR2_PACKAGE_IMX_GPU_VIV_G2D + bool "Vivante G2D libraries from imx-gpu-viv removed" + select BR2_LEGACY + select BR2_PACKAGE_IMX_GPU_G2D + help + The G2D libraries are now provided by the imx-gpu-g2d package. + +############################################################################### +comment "Legacy options removed in 2017.11" + +config BR2_PACKAGE_RFKILL + bool "rfkill package removed" + select BR2_LEGACY + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_RFKILL + help + The rfkill program is now provided by the util-linux package. + +config BR2_PACKAGE_UTIL_LINUX_RESET + bool "util-linux reset option removed" + select BR2_LEGACY + help + The util-linux package no longer offers a "reset" command. Use + either the reset command provided by BusyBox or select ncurses + programs, which will install a symlink from "tset" to reset. + +config BR2_PACKAGE_POLICYCOREUTILS_AUDIT2ALLOW + bool "policycoreutils audit2allow option removed" + select BR2_LEGACY + select BR2_PACKAGE_SELINUX_PYTHON + select BR2_PACKAGE_SELINUX_PYTHON_AUDIT2ALLOW + help + The policycoreutils package no longer offers audit2allow + as a option. This package has been moved into the + selinux-python package by the SELinux maintainers. + +config BR2_PACKAGE_POLICYCOREUTILS_RESTORECOND + bool "policycoreutils restorecond option removed" + select BR2_LEGACY + select BR2_PACKAGE_RESTORECOND + help + The policycoreutils package no longer offers restorecond + as a option. This package has been moved into a separate + package maintained by the SELinux maintainers. + +config BR2_PACKAGE_SEPOLGEN + bool "sepolgen package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_SELINUX_PYTHON + select BR2_PACKAGE_SELINUX_PYTHON_SEPOLGEN + help + Sepolgen is no longer a individual package, but instead has + been moved into the selinux-python package by the SELinux + maintainers. + +config BR2_PACKAGE_OPENOBEX_BLUEZ + bool "openobex bluez option removed" + select BR2_LEGACY + select BR2_PACKAGE_BLUEZ_UTILS + help + The OpenOBEX package no longer offers an option to enable or + disable BlueZ support. Instead, BlueZ support is always + included when the bluez5_utils or bluez_utils package is + selected. + +config BR2_PACKAGE_OPENOBEX_LIBUSB + bool "openobex libusb option removed" + select BR2_LEGACY + select BR2_PACKAGE_LIBUSB + help + The OpenOBEX package no longer offers an option to enable or + disable libusb support. Instead, USB support is always + included when the libusb package is selected. + +config BR2_PACKAGE_OPENOBEX_APPS + bool "openobex apps option removed" + select BR2_LEGACY + help + The OpenOBEX package no longer offers an option to enable or + disable apps support. + +config BR2_PACKAGE_OPENOBEX_SYSLOG + bool "openobex syslog option removed" + select BR2_LEGACY + help + The OpenOBEX package no longer offers an option to enable or + disable syslog support. + +config BR2_PACKAGE_OPENOBEX_DUMP + bool "openobex dump option removed" + select BR2_LEGACY + help + The OpenOBEX package no longer offers an option to enable or + disable dump support. + +config BR2_PACKAGE_AICCU + bool "aiccu utility removed" + select BR2_LEGACY + help + As the SixXS project has ceased its operation on 2017-06-06, + the AICCU utility has no use anymore and has been removed. + + https://www.sixxs.net/sunset/ + +config BR2_PACKAGE_UTIL_LINUX_LOGIN_UTILS + bool "util-linux login utilities option removed" + select BR2_LEGACY + select BR2_PACKAGE_UTIL_LINUX_LAST + select BR2_PACKAGE_UTIL_LINUX_LOGIN + select BR2_PACKAGE_UTIL_LINUX_RUNUSER + select BR2_PACKAGE_UTIL_LINUX_SU + select BR2_PACKAGE_UTIL_LINUX_SULOGIN + help + Login utilities (last, login, runuser, su, sulogin) now have + their own configuration options in the util-linux menu. + +############################################################################### +comment "Legacy options removed in 2017.08" + +config BR2_TARGET_GRUB + bool "grub (aka grub-legacy) has been removed" + select BR2_LEGACY + help + grub-legacy is no longer maintained, and no longer builds with + recent binutils versions. + + Use grub2 or syslinux instead. + +config BR2_PACKAGE_SIMICSFS + bool "simicsfs support removed" + select BR2_LEGACY + help + Support for simicsfs kernel driver that provides access to a + host computer's local filesystem when the target is + executing within a SIMICS simulation has been removed. + + Simics is now moving away from the simicsfs kernel module, + as the kernel module has required too much maintenance + work. Users should move to the user mode Simics agent + instead. + +config BR2_BINUTILS_VERSION_2_26_X + bool "binutils version 2.26 support removed" + select BR2_LEGACY + help + Support for binutils version 2.26 has been removed. The + current default version (2.28 or later) has been selected + instead. + +config BR2_XTENSA_OVERLAY_DIR + string "The BR2_XTENSA_OVERLAY_DIR option has been removed" + help + The BR2_XTENSA_OVERLAY_DIR has been removed in favour of + BR2_XTENSA_OVERLAY_FILE. You must now pass the complete + path to the overlay file, not to the directory containing + it. + +config BR2_XTENSA_OVERLAY_DIR_WRAP + bool + default y if BR2_XTENSA_OVERLAY_DIR != "" + select BR2_LEGACY + +config BR2_XTENSA_CUSTOM_NAME + string "The BR2_XTENSA_CUSTOM_NAME option has been removed" + help + The BR2_XTENSA_CUSTOM_NAME option has been removed. + +config BR2_XTENSA_CUSTOM_NAME_WRAP + bool + default y if BR2_XTENSA_CUSTOM_NAME != "" + select BR2_LEGACY + +config BR2_PACKAGE_HOST_MKE2IMG + bool "host mke2img has been removed" + select BR2_LEGACY + help + We now call mkfs directly to generate ext2/3/4 filesystem + image, so mke2img is no longer necessary. + +config BR2_TARGET_ROOTFS_EXT2_BLOCKS + int "exact size in blocks has been removed" + default 0 + help + This option has been removed in favor of + BR2_TARGET_ROOTFS_EXT2_SIZE. It has been set automatically + to the value you had before. Set to 0 here to remove the + warning. + +config BR2_TARGET_ROOTFS_EXT2_BLOCKS_WRAP + bool + default y if BR2_TARGET_ROOTFS_EXT2_BLOCKS != 0 && \ + BR2_TARGET_ROOTFS_EXT2_BLOCKS != 61440 # deprecated default value + select BR2_LEGACY + +# Note: BR2_TARGET_ROOTFS_EXT2_BLOCKS_WRAP still referenced in fs/ext2/Config.in + +config BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES + int "ext2 extra inodes has been removed" if BR2_TARGET_ROOTFS_EXT2_INODES = 0 + default 0 + help + Buildroot now uses mkfs.ext2/3/4 to generate ext2/3/4 + images. It now automatically selects the number of inodes + based on the image size. The extra number of inodes can no + longer be provided; instead, provide the total number of + inodes needed in BR2_TARGET_ROOTFS_EXT2_INODES. + +config BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES_WRAP + bool + default y if BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES != 0 + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CDXAPARSE + bool "cdxaparse removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DATAURISRC + bool "dataurisrc moved to gstreamer1" + select BR2_LEGACY + help + Dataurisrc has moved to gstreamer core and is always built. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DCCP + bool "dccp removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_HDVPARSE + bool "hdvparse removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MVE + bool "mve removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NUVDEMUX + bool "nuvdemux removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PATCHDETECT + bool "patchdetect removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDI + bool "sdi removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TTA + bool "tta removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOMEASURE + bool "videomeasure removed" + select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IQA + select BR2_LEGACY + help + videomeasure plugin has been removed and has been replaced by + iqa, which has automatically been enabled. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_APEXSINK + bool "apexsink removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDL + bool "sdl removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MAD + bool "mad (*.mp3 audio) removed" + select BR2_LEGACY + +config BR2_STRIP_none + bool "Strip command 'none' has been removed" + select BR2_LEGACY + help + The strip command choice has been changed into a single + boolean option. Please check that the new setting is + correct (in the "Build options" sub-menu) + +config BR2_PACKAGE_BEECRYPT_CPP + bool "C++ support removed in beecrypt" + select BR2_LEGACY + help + Support for C++ depends on icu. The beecrypt package is + incompatible with icu 59+. + +config BR2_PACKAGE_SPICE_CLIENT + bool "spice client support removed" + select BR2_LEGACY + help + Spice client support has been removed upstream. The + functionality now lives in the spice-gtk widget and + virt-viewer. + +config BR2_PACKAGE_SPICE_GUI + bool "spice gui support removed" + select BR2_LEGACY + help + Spice gui support has been removed upstream. The + functionality now lives in the spice-gtk widget and + virt-viewer. + +config BR2_PACKAGE_SPICE_TUNNEL + bool "spice network redirection removed" + select BR2_LEGACY + help + Spice network redirection, aka tunnelling has been removed + upstream. + +config BR2_PACKAGE_INPUT_TOOLS + bool "input-tools removed" + select BR2_LEGACY + select BR2_PACKAGE_LINUXCONSOLETOOLS + help + input-tools has been removed, it is replaced by + linuxconsoletools, which has automatically been enabled. + +config BR2_PACKAGE_INPUT_TOOLS_INPUTATTACH + bool "inputattach moved to linuxconsoletools" + select BR2_LEGACY + select BR2_PACKAGE_LINUXCONSOLETOOLS + select BR2_PACKAGE_LINUXCONSOLETOOLS_INPUTATTACH + help + input-tools has been removed, inputattach is now part + of linuxconsoletools, which has automatically been + enabled. + +config BR2_PACKAGE_INPUT_TOOLS_JSCAL + bool "jscal moved to linuxconsoletools" + select BR2_LEGACY + select BR2_PACKAGE_LINUXCONSOLETOOLS + select BR2_PACKAGE_LINUXCONSOLETOOLS_JOYSTICK + help + input-tools has been removed, jscal is now part + of linuxconsoletools, which has automatically been + enabled. + +config BR2_PACKAGE_INPUT_TOOLS_JSTEST + bool "jstest moved to linuxconsoletools" + select BR2_LEGACY + select BR2_PACKAGE_LINUXCONSOLETOOLS + select BR2_PACKAGE_LINUXCONSOLETOOLS_JOYSTICK + help + input-tools has been removed, jstest is now part + of linuxconsoletools, which has automatically been + enabled. + +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH + bool "SH Sourcery toolchain has been removed" + select BR2_LEGACY + help + The Sourcery CodeBench toolchain for the sh architecture has + been removed, since it uses glibc older than 2.17 that + requires -lrt to link executables using clock_* system calls. + This makes this toolchain difficult to maintain over time. + +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86 + bool "x86 Sourcery toolchain has been removed" + select BR2_LEGACY + help + The Sourcery CodeBench toolchain for the x86 architecture has + been removed, since it uses glibc older than 2.17 that + requires -lrt to link executables using clock_* system calls. + This makes this toolchain difficult to maintain over time. + +config BR2_GCC_VERSION_4_8_X + bool "gcc 4.8.x support removed" + select BR2_LEGACY + help + Support for gcc version 4.8.x has been removed. The current + default version (5.x or later) has been selected instead. + +############################################################################### +comment "Legacy options removed in 2017.05" + +config BR2_PACKAGE_SUNXI_MALI_R2P4 + bool "sunxi-mali r2p4 removed" + select BR2_LEGACY + help + sunxi-mali libMali for r2p4 Mali kernel module has been + removed since the libump package only provides libUMP.so.3. + libMali for r2p4 Mali kernel module requires libUMP.so.2. + +config BR2_PACKAGE_NODEJS_MODULES_COFFEESCRIPT + bool "CoffeeScript option has been removed" + select BR2_LEGACY + help + The option to enable NodeJS CoffeeScript has been removed. + To continue using it, add "coffee-script" to + BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL. + +config BR2_PACKAGE_NODEJS_MODULES_EXPRESS + bool "Express web application framework option has been removed" + select BR2_LEGACY + help + The option to enable the NodeJS Express web application + framework has been removed. To continue using it, add + "express" to BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL. + +config BR2_PACKAGE_BLUEZ5_UTILS_GATTTOOL + bool "bluez5_utils gatttool install option removed" + select BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED + help + The option to install gatttool specifically has been removed. + Since version 5.44 gatttool is in the list of deprecated + tools. The option to build and install deprecated tools has + been automatically enabled. + +config BR2_PACKAGE_OPENOCD_FT2XXX + bool "openocd ft2232 support has been removed" + select BR2_PACKAGE_OPENOCD_FTDI + select BR2_LEGACY + help + FT2232 support in OpenOCD has been removed, it's replaced by + FDTI support, which has automatically been enabled. + +config BR2_PACKAGE_KODI_RTMPDUMP + bool "kodi rtmp has been removed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_INPUTSTREAM_RTMP + help + Internal rtmp support was removed from Kodi. + +config BR2_PACKAGE_KODI_VISUALISATION_FOUNTAIN + bool "kodi-visualisation-fountain has been removed" + select BR2_LEGACY + help + According to upstream 'the visualization is not currently + in a working shape.' + +config BR2_PACKAGE_PORTMAP + bool "portmap has been removed" + select BR2_LEGACY + select BR2_PACKAGE_RPCBIND + help + The portmap upstream tarball is removed, no releases since + ten years and latest change in upstream git in 2014. + You should better use rpcbind as a RPC portmapper. + +config BR2_BINUTILS_VERSION_2_25_X + bool "binutils version 2.25 support removed" + select BR2_LEGACY + help + Support for binutils version 2.25 has been removed. The + current default version (2.27 or later) has been selected + instead. + +config BR2_TOOLCHAIN_BUILDROOT_INET_RPC + bool "uclibc RPC support has been removed" + select BR2_LEGACY + help + uClibc-ng removed internal RPC implementation in 1.0.23. You + should use libtirpc instead. + +config BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS + int "extra size in blocks has been removed" + default 0 + help + Since the support for auto calculation of the filesystem size + has been removed, this option is now useless and must be 0. + You may want to check that BR2_TARGET_ROOTFS_EXT2_BLOCKS + matchs your needs. + +config BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS_WRAP + bool + default y if BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS != 0 + select BR2_LEGACY + +config BR2_PACKAGE_SYSTEMD_KDBUS + bool "systemd-kdbus has been removed" + select BR2_LEGACY + help + --enable/disable-kdbus configure option has been removed since + systemd-231. + +config BR2_PACKAGE_POLARSSL + bool "polarssl has been removed" + select BR2_LEGACY + help + The polarssl crypto library has been removed since the 1.2.x + release branch is no longer maintained. Newer upstream + branches/releases (mbedtls) have API changes so they're not + drop-in replacements. + +config BR2_NBD_CLIENT + bool "nbd client option was renamed" + select BR2_LEGACY + select BR2_PACKAGE_NBD_CLIENT + help + The nbd client option has been renamed to + BR2_PACKAGE_NBD_CLIENT. + +config BR2_NBD_SERVER + bool "nbd server option was renamed" + select BR2_LEGACY + select BR2_PACKAGE_NBD_SERVER + help + The nbd server option has been renamed to + BR2_PACKAGE_NBD_SERVER. + +config BR2_PACKAGE_GMOCK + bool "gmock merged into gtest package" + select BR2_LEGACY + select BR2_PACKAGE_GTEST + select BR2_PACKAGE_GTEST_GMOCK + help + GMock is now a suboption of the GTest package. + +config BR2_KERNEL_HEADERS_4_8 + bool "kernel headers version 4.8.x are no longer supported" + select BR2_LEGACY + help + Version 4.8.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_3_18 + bool "kernel headers version 3.18.x are no longer supported" + select BR2_LEGACY + help + Version 3.18.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_GLIBC_VERSION_2_22 + bool "glibc 2.22 removed" + select BR2_LEGACY + help + Support for glibc version 2.22 has been removed. The current + default version has been selected instead. + +############################################################################### +comment "Legacy options removed in 2017.02" + +config BR2_PACKAGE_PERL_DB_FILE + bool "perl-db-file removed" + select BR2_LEGACY + select BR2_PACKAGE_BERKELEYDB + select BR2_PACKAGE_PERL + help + DB_File can be built as a core Perl module, so the separate + perl-db-file package has been removed. + +config BR2_KERNEL_HEADERS_4_7 + bool "kernel headers version 4.7.x are no longer supported" + select BR2_LEGACY + help + Version 4.7.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_6 + bool "kernel headers version 4.6.x are no longer supported" + select BR2_LEGACY + help + Version 4.6.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_5 + bool "kernel headers version 4.5.x are no longer supported" + select BR2_LEGACY + help + Version 4.5.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_3_14 + bool "kernel headers version 3.14.x are no longer supported" + select BR2_LEGACY + help + Version 3.14.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS + bool "musl-cross 1.1.12 toolchain removed" + select BR2_LEGACY + help + The support for the prebuilt toolchain based on the Musl C + library provided by the musl-cross project has been removed. + Upstream doesn't provide any prebuilt toolchain anymore, use + the Buildroot toolchain instead. + +config BR2_UCLIBC_INSTALL_TEST_SUITE + bool "uClibc tests now in uclibc-ng-test" + select BR2_LEGACY + select BR2_PACKAGE_UCLIBC_NG_TEST + help + The test suite of the uClibc C library has been moved into a + separate package, uclibc-ng-test. + +config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX + bool "Blackfin.uclinux.org 2014R1 toolchain removed" + select BR2_LEGACY + help + The ADI Blackfin toolchain has many bugs which are fixed in + more recent gcc and uClibc-ng releases. Use the Buildroot + toolchain instead. + +config BR2_PACKAGE_MAKEDEVS + bool "makedevs removed" + select BR2_LEGACY + help + The makedevs tool is part of busybox. The Buildroot fork + should not be used outside of the Buildroot infrastructure. + +config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A + bool "Arago ARMv7 2011.09 removed" + select BR2_LEGACY + help + The Arago toolchains are every old and not updated anymore. + +config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE + bool "Arago ARMv5 2011.09 removed" + select BR2_LEGACY + help + The Arago toolchains are every old and not updated anymore. + +config BR2_PACKAGE_SNOWBALL_HDMISERVICE + bool "snowball-hdmiservice removed" + select BR2_LEGACY + help + We no longer have support for the Snowball platform in + Buildroot, so this package was no longer useful. + +config BR2_PACKAGE_SNOWBALL_INIT + bool "snowball-init removed" + select BR2_LEGACY + help + We no longer have support for the Snowball platform in + Buildroot, so this package was no longer useful. + +config BR2_GDB_VERSION_7_9 + bool "gdb 7.9 has been removed" + select BR2_LEGACY + help + The 7.9 version of gdb has been removed. Use a newer version + instead. + +############################################################################### +comment "Legacy options removed in 2016.11" + +config BR2_PACKAGE_PHP_SAPI_CLI_CGI + bool "PHP CGI and CLI options are now separate" + select BR2_PACKAGE_PHP_SAPI_CLI + select BR2_PACKAGE_PHP_SAPI_CGI + select BR2_LEGACY + help + The PHP Interface options have been split up into a + separate option for each interface. + +config BR2_PACKAGE_PHP_SAPI_CLI_FPM + bool "PHP CLI and FPM options are now separate" + select BR2_PACKAGE_PHP_SAPI_CLI + select BR2_PACKAGE_PHP_SAPI_FPM + select BR2_LEGACY + help + The PHP Interface options have been split up into a + separate option for each interface. + +config BR2_PACKAGE_WVSTREAMS + bool "wvstreams removed" + select BR2_LEGACY + help + wvstreams is not maintained anymore since about 2009. It also + doesn't build anymore with recent compilers (GCC 5+). + +config BR2_PACKAGE_WVDIAL + bool "wvdial removed" + select BR2_LEGACY + help + wvdial is not maintained anymore since about 2009. It also + doesn't build anymore with recent compilers (GCC 5+). + +config BR2_PACKAGE_WEBKITGTK24 + bool "webkitgtk 2.4.x removed" + select BR2_LEGACY + help + This legacy package only existed because some other packages + depended on that specific version of webkitgtk. However, the + other packages have been fixed. webkitgtk 2.4 is full of + security issues so it needs to be removed. + +config BR2_PACKAGE_TORSMO + bool "torsmo removed" + select BR2_LEGACY + help + torsmo has been unmaintained for a long time, and nobody + seems to be interested in it. + +config BR2_PACKAGE_SSTRIP + bool "sstrip removed" + select BR2_LEGACY + help + sstrip is unmaintained and potentially harmful. It doesn't + save so much compared to normal binutils strip, and there is + a big risk of binaries that don't work. Use normal strip + instead. + +config BR2_KERNEL_HEADERS_4_3 + bool "kernel headers version 4.3.x are no longer supported" + select BR2_LEGACY + help + Version 4.3.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_2 + bool "kernel headers version 4.2.x are no longer supported" + select BR2_LEGACY + help + Version 4.2.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_PACKAGE_KODI_ADDON_XVDR + bool "kodi-addon-xvdr removed" + select BR2_LEGACY + help + According to the github project page: + https://github.com/pipelka/xbmc-addon-xvdr + this package is discontinued. + +config BR2_PACKAGE_IPKG + bool "ipkg removed" + select BR2_LEGACY + help + ipkg dates back to the early 2000s when Compaq started the + handhelds.org project and it hasn't seen development since + 2006. Use opkg as a replacement. + +config BR2_GCC_VERSION_4_7_X + bool "gcc 4.7.x support removed" + select BR2_LEGACY + help + Support for gcc version 4.7.x has been removed. The current + default version (4.9.x or later) has been selected instead. + +config BR2_BINUTILS_VERSION_2_24_X + bool "binutils version 2.24 support removed" + select BR2_LEGACY + help + Support for binutils version 2.24 has been removed. The + current default version (2.26 or later) has been selected + instead. + +config BR2_PACKAGE_WESTON_RPI + bool "Weston propietary RPI support is gone" + select BR2_LEGACY + help + Upstream decided the propietary (rpi-userland) weston composer + support wasn't worth the effort so it was removed. Switch to + the open VC4 support. + +config BR2_LINUX_KERNEL_TOOL_CPUPOWER + bool "linux-tool cpupower" + depends on BR2_LINUX_KERNEL + select BR2_LEGACY + select BR2_PACKAGE_LINUX_TOOLS_CPUPOWER + help + Linux tool cpupower option was renamed. + +config BR2_LINUX_KERNEL_TOOL_PERF + bool "linux-tool perf" + depends on BR2_LINUX_KERNEL + select BR2_LEGACY + select BR2_PACKAGE_LINUX_TOOLS_PERF + help + Linux tool perf option was renamed. + +config BR2_LINUX_KERNEL_TOOL_SELFTESTS + bool "linux-tool selftests" + depends on BR2_LINUX_KERNEL + select BR2_LEGACY + select BR2_PACKAGE_LINUX_TOOLS_SELFTESTS + help + Linux tool selftests option was renamed. + +config BR2_GCC_VERSION_4_8_ARC + bool "gcc arc option renamed" + select BR2_LEGACY + help + The option that selects the gcc version for the ARC + architecture has been renamed to BR2_GCC_VERSION_ARC. +# Note: BR2_GCC_VERSION_4_8_ARC is still referenced from +# package/gcc/Config.in.host + +config BR2_KERNEL_HEADERS_4_0 + bool "kernel headers version 4.0.x are no longer supported" + select BR2_LEGACY + help + Version 4.0.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + +config BR2_KERNEL_HEADERS_3_19 + bool "kernel headers version 3.19.x are no longer supported" + select BR2_LEGACY + help + Version 3.19.x of the Linux kernel headers have been + deprecated for more than four buildroot releases and are now + removed. + +config BR2_PACKAGE_LIBEVAS_GENERIC_LOADERS + bool "libevas-generic-loaders package removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.18, libevas-generic-loaders is now provided by the + efl package. + +config BR2_PACKAGE_ELEMENTARY + bool "elementary package removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.18, elementary is now provided by the efl package. + +config BR2_LINUX_KERNEL_CUSTOM_LOCAL + bool "Linux kernel local directory option removed" + select BR2_LEGACY + help + The option to select a local directory as the source of the + Linux kernel has been removed. It hurts reproducibility of + builds. + + In case you were using this option during development of your + Linux kernel, use the override mechanism instead. + +############################################################################### +comment "Legacy options removed in 2016.08" + +config BR2_PACKAGE_EFL_JP2K + bool "libevas jp2k loader has been removed" + select BR2_LEGACY + help + JP2K support in EFL requires openjpeg 1.x (libopenjpeg1.pc) + while Buildroot only packages openjpeg 2.x. Therefore, the + JP2K loader has been removed from EFL. + +config BR2_PACKAGE_SYSTEMD_COMPAT + bool "systemd compatibility libraries have been removed" + select BR2_LEGACY + help + The systemd option to enable the compatibility libraries has + been removed. Theses libraries have been useless since a few + version, and have been fully dropped from the source since + v230. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIVEADDER + bool "gst1-plugins-bad liveadder plugin removed" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOMIXER + help + The functionality of the liveadder plugin of the + gst1-plugins-bad package has been merged into audiomixer. + +config BR2_PACKAGE_LIBFSLVPUWRAP + bool "libfslvpuwrap has been renamed to imx-vpuwrap" + select BR2_LEGACY + select BR2_PACKAGE_IMX_VPUWRAP + help + The libfslvpuwrap has been renamed to match the renamed + package. + +config BR2_PACKAGE_LIBFSLPARSER + bool "libfslparser has been renamed to imx-parser" + select BR2_LEGACY + select BR2_PACKAGE_IMX_PARSER + help + The libfslparser has been renamed to match the renamed + package. + +config BR2_PACKAGE_LIBFSLCODEC + bool "libfslcodec has been renamed to imx-codec" + select BR2_LEGACY + select BR2_PACKAGE_IMX_CODEC + help + The libfslcodec has been renamed to match the renamed package. + +config BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT + bool "FIT support in uboot-tools has been refactored" + select BR2_LEGACY + select BR2_PACKAGE_DTC + select BR2_PACKAGE_DTC_PROGRAMS + select BR2_PACKAGE_UBOOT_TOOLS_FIT_SUPPORT + select BR2_PACKAGE_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT + select BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE + help + This option has been removed in favor of a more fine-grained + configuration, which is recommended. Selecting this option + enables FIT and FIT signature support for the target packages. + It will also select the dtc and openssl packages. + +config BR2_PTHREADS_OLD + bool "linuxthreads (stable/old)" + select BR2_LEGACY + help + Linuxthreads have been reworked, BR2_PTHREADS_OLD is now + BR2_PTHREADS and the old BR2_PTHREADS - LT.new got removed. + +config BR2_BINUTILS_VERSION_2_23_X + bool "binutils 2.23 removed" + select BR2_LEGACY + help + Binutils 2.23 has been removed, using a newer version is + recommended. + +config BR2_TOOLCHAIN_BUILDROOT_EGLIBC + bool "eglibc support has been removed" + select BR2_LEGACY + help + The eglibc project no longer exists, as it has been merged + back into the glibc project. Therefore, support for eglibc + has been removed, and glibc should be used instead. + +config BR2_GDB_VERSION_7_8 + bool "gdb 7.8 has been removed" + select BR2_LEGACY + help + The 7.8 version of gdb has been removed. Use a newer version + instead. + +############################################################################### +comment "Legacy options removed in 2016.05" + +config BR2_PACKAGE_OPENVPN_CRYPTO_POLARSSL + bool "openvpn polarssl crypto backend removed" + select BR2_LEGACY + help + The OpenVPN polarssl crypto backend option has been removed. + Version from 2.3.10 onwards need polarssl >= 1.3.8 but aren't + compatible with mbedtls (polarssl) series 2.x which is the + version provided in buildroot. And both can't coexist. + It now uses OpenSSL as the only option. + +config BR2_PACKAGE_NGINX_HTTP_SPDY_MODULE + bool "nginx http spdy module removed" + select BR2_LEGACY + select BR2_PACKAGE_NGINX_HTTP_V2_MODULE + help + The ngx_http_spdy_module has been superseded by the + ngx_http_v2_module since nginx v1.9.5. The + ngx_http_v2_module modules has been automatically selected + in your configuration. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTP + bool "gst1-plugins-bad rtp plugin moved to good" + select BR2_LEGACY + help + The rtp plugin has been moved from gst1-plugins-base to + gst1-plugins-good. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPG123 + bool "gst1-plugins-bad mpg123 plugin moved to ugly" + select BR2_LEGACY + help + The mpg123 plugin has been moved from gst1-plugins-bad to + gst1-plugins-ugly. + +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC + bool "PowerPC Sourcery toolchain has been removed" + select BR2_LEGACY + help + The Sourcery CodeBench toolchain for the PowerPC + architecture has been removed, as it was very old, not + maintained, and causing numerous build failures with modern + userspace packages. + +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC_E500V2 + bool "PowerPC Sourcery E500v2 toolchain has been removed" + select BR2_LEGACY + help + The Sourcery CodeBench toolchain for the PowerPC E500v2 + architecture has been removed, as it was very old, not + maintained, and causing numerous build failures with modern + userspace packages. + +config BR2_x86_i386 + bool "x86 i386 support removed" + select BR2_LEGACY + help + The support for the i386 processors of the x86 architecture + has been removed. + +config BR2_PACKAGE_QT5QUICK1 + bool "qt5quick1 package removed" + select BR2_LEGACY + help + The qt5quick1 package has been removed, since it was removed + from upstream starting from Qt 5.6. + +config BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR + string "uboot custom patch dir has been removed" + help + The uboot custom patch directory option has been removed. Use + the improved BR2_TARGET_UBOOT_PATCH option instead. + +config BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR_WRAP + bool + default y if BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR != "" + select BR2_LEGACY + +# Note: BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR is still referenced from +# boot/uboot/Config.in + +config BR2_PACKAGE_XDRIVER_XF86_INPUT_VOID + bool "xf86-input-void removed" + select BR2_LEGACY + help + The xf86-input-void package has been removed, there's no need + for it in any modern (post-2007) xorg server. + +config BR2_KERNEL_HEADERS_3_17 + bool "kernel headers version 3.17.x are no longer supported" + select BR2_LEGACY + help + Version 3.17.x of the Linux kernel headers have been + deprecated for more than four buildroot releases and are now + removed. + +config BR2_GDB_VERSION_7_7 + bool "gdb 7.7 has been removed" + select BR2_LEGACY + help + The 7.7 version of gdb has been removed. Use a newer version + instead. + +config BR2_PACKAGE_FOOMATIC_FILTERS + bool "foomatic-filters" + select BR2_LEGACY + help + The foomatic-filters package was removed. + +config BR2_PACKAGE_SAMBA + bool "samba" + select BR2_LEGACY + help + The samba package was removed in favour of samba4 since the + 3.x series isn't supported by upstream any longer. + +config BR2_PACKAGE_KODI_WAVPACK + bool "wavpack" + select BR2_LEGACY + help + wavpack support was removed in favour of ffmpeg: + https://github.com/xbmc/xbmc/commit/7916902c9e6f7a523265594f3ad7f921f93f1cd4 + +config BR2_PACKAGE_KODI_RSXS + bool "rsxs support in Kodi was moved to an addon" + select BR2_LEGACY + select BR2_PACKAGE_KODI_SCREENSAVER_RSXS + help + rsxs support in Kodi was moved to an addon + +config BR2_PACKAGE_KODI_GOOM + bool "Goom support in Kodi was moved to an addon" + select BR2_LEGACY + select BR2_PACKAGE_KODI_VISUALISATION_GOOM + help + Goom support in Kodi was moved to an addon + +config BR2_PACKAGE_SYSTEMD_ALL_EXTRAS + bool "systemd all extras option has been removed" + select BR2_LEGACY + select BR2_PACKAGE_XZ + select BR2_PACKAGE_LIBGCRYPT + help + The systemd option to enable "all extras" has been + removed. To get the same features, the libgcrypt and xz + package should now be enabled. + +config BR2_GCC_VERSION_4_5_X + bool "gcc 4.5.x has been removed" + select BR2_LEGACY + help + The 4.5.x version of gcc has been removed. Use a newer + version instead. + +config BR2_PACKAGE_SQLITE_READLINE + bool "sqlite command-line editing support was updated" + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_READLINE + select BR2_LEGACY + help + This option was removed in favour of the sqlite package + deciding itself depending on the enabled packages whether + command-line editing should be enabled, it also also takes + libedit into account. + +############################################################################### +comment "Legacy options removed in 2016.02" + +config BR2_PACKAGE_DOVECOT_BZIP2 + bool "bzip2 support option has been removed" + select BR2_LEGACY + select BR2_PACKAGE_BZIP2 + help + Bzip2 support is built if the bzip2 package is selected. + +config BR2_PACKAGE_DOVECOT_ZLIB + bool "zlib support option has been removed" + select BR2_LEGACY + select BR2_PACKAGE_ZLIB + help + Zlib support is built if the zlib package is selected. + +config BR2_PACKAGE_E2FSPROGS_FINDFS + bool "e2fsprogs findfs option has been removed" + select BR2_LEGACY + help + This option attempted to enable findfs capabilities from + e2fsprogs but has not worked since July 2015 (due to + packaging changes). One can use BusyBox's findfs support or + enable the BR2_PACKAGE_UTIL_LINUX_BINARIES option. + +config BR2_PACKAGE_OPENPOWERLINK_DEBUG_LEVEL + bool "openpowerlink debug option has been removed" + select BR2_LEGACY + help + This option depends on BR2_ENABLE_DEBUG which should not be + used by packages anymore. + +config BR2_PACKAGE_OPENPOWERLINK_KERNEL_MODULE + bool "openpowerlink package has been updated" + select BR2_LEGACY + help + openpowerlink kernel modules are built if the + kernel stack library is selected. +# Note: BR2_PACKAGE_OPENPOWERLINK_KERNEL_MODULE is still referenced from +# package/openpowerlink/Config.in + +config BR2_PACKAGE_OPENPOWERLINK_LIBPCAP + bool "openpowerlink package has been updated" + select BR2_LEGACY + help + The user space support has been split in two part: + - a monolithic user space library + - a user space daemon driver +# Note: BR2_PACKAGE_OPENPOWERLINK_LIBPCAP is still referenced from +# package/openpowerlink/Config.in + +config BR2_LINUX_KERNEL_SAME_AS_HEADERS + bool "using the linux headers version for the kernel has been removed" + select BR2_LEGACY + help + The option to use the version of the kernel headers for the + kernel to build has been removed. + + There is now the converse, better-suited and more versatile + option to use the kernel version for the linux headers. + +config BR2_PACKAGE_CUPS_PDFTOPS + bool "Pdftops support has been removed from Cups" + select BR2_PACKAGE_CUPS_FILTERS + select BR2_LEGACY + help + Pdftops support has been removed from the cups package + It is now part of the cups-filters package. + +config BR2_KERNEL_HEADERS_3_16 + bool "kernel headers version 3.16.x are no longer supported" + select BR2_LEGACY + help + Version 3.16.x of the Linux kernel headers have been + deprecated for more than four buildroot releases and are now + removed. + +config BR2_PACKAGE_PYTHON_PYXML + bool "python-pyxml package has been removed" + select BR2_LEGACY + help + PyXML is obsolete and its functionality is covered either via + native Python XML support or python-lxml package. + +# BR2_ENABLE_SSP is still referenced in Config.in (default in choice) +config BR2_ENABLE_SSP + bool "Stack Smashing protection now has different levels" + help + The protection offered by SSP can now be selected from + different protection levels. Be sure to review the SSP level + in the build options menu. + +config BR2_PACKAGE_DIRECTFB_CLE266 + bool "cle266 driver for directfb removed" + select BR2_LEGACY + help + The cle266 directfb driver support has been removed. + It doesn't build in the latest version and it's unlikely + anyone has any use for it. + +config BR2_PACKAGE_DIRECTFB_UNICHROME + bool "unichrome driver for directfb removed" + select BR2_LEGACY + help + The unichrome directfb driver support has been removed. + It doesn't build in the latest version and it's unlikely + anyone has any use for it. + +config BR2_PACKAGE_LIBELEMENTARY + bool "libelementary has been renamed to elementary" + select BR2_LEGACY + select BR2_PACKAGE_ELEMENTARY + help + The libelementary package has been renamed to match the + upstream name. + +config BR2_PACKAGE_LIBEINA + bool "libeina package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libeina is now provided by the efl package. + +config BR2_PACKAGE_LIBEET + bool "libeet package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libeet is now provided by the efl package. + +config BR2_PACKAGE_LIBEVAS + bool "libevas package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libevas is now provided by the efl package. + +config BR2_PACKAGE_LIBECORE + bool "libecore package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libecore is now provided by the efl package. + +config BR2_PACKAGE_LIBEDBUS + bool "libedbus package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libedbus is now provided by the efl package. + +config BR2_PACKAGE_LIBEFREET + bool "libefreet package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libefreet is now provided by the efl package. + +config BR2_PACKAGE_LIBEIO + bool "libeio package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libeio is now provided by the efl package. + +config BR2_PACKAGE_LIBEMBRYO + bool "libembryo package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libembryo is now provided by the efl package. + +config BR2_PACKAGE_LIBEDJE + bool "libedje package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libedje is now provided by the efl package. + +config BR2_PACKAGE_LIBETHUMB + bool "libethumb package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libethumb is now provided by the efl package. + +config BR2_PACKAGE_INFOZIP + bool "infozip option has been renamed to zip" + select BR2_LEGACY + select BR2_PACKAGE_ZIP + help + Info-Zip's Zip package has been renamed from infozip to zip, + to avoid ambiguities with Info-Zip's UnZip which has been + added in the unzip package. + +config BR2_BR2_PACKAGE_NODEJS_0_10_X + bool "nodejs 0.10.x option removed" + select BR2_LEGACY + select BR2_PACKAGE_NODEJS + help + nodejs 0.10.x option has been removed. 0.10.x is now + automatically chosen for ARMv5 architectures only and the + latest nodejs for all other supported architectures. The + correct nodejs version has been automatically selected in your + configuration. + +config BR2_BR2_PACKAGE_NODEJS_0_12_X + bool "nodejs version 0.12.x has been removed" + select BR2_LEGACY + select BR2_PACKAGE_NODEJS + help + nodejs version 0.12.x has been removed. As an alternative, + the latest nodejs version has been automatically selected in + your configuration. + +config BR2_BR2_PACKAGE_NODEJS_4_X + bool "nodejs version 4.x has been removed" + select BR2_LEGACY + select BR2_PACKAGE_NODEJS + help + nodejs version 4.x has been removed. As an alternative, + the latest nodejs version has been automatically selected in + your configuration. + +############################################################################### +comment "Legacy options removed in 2015.11" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_REAL + bool "gst1-plugins-bad real plugin has been removed" + select BR2_LEGACY + help + The real plugin from GStreamer 1 bad plugins has been + removed. + +config BR2_PACKAGE_MEDIA_CTL + bool "media-ctl package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_LIBV4L + select BR2_PACKAGE_LIBV4L_UTILS + help + media-ctl source and developement have been moved to v4l-utils + since June 2014. For an up-to-date media-ctl version select + BR2_PACKAGE_LIBV4L and BR2_PACKAGE_LIBV4L_UTILS. + +config BR2_PACKAGE_SCHIFRA + bool "schifra package has been removed" + select BR2_LEGACY + help + Schifra package has been maked broken since 2014.11 release + and haven't been fixed since then. + +config BR2_PACKAGE_ZXING + bool "zxing option has been renamed" + select BR2_LEGACY + select BR2_PACKAGE_ZXING_CPP + help + ZXing no longer provides the cpp bindings, it has been renamed + to BR2_PACKAGE_ZXING_CPP which uses a new upstream. + +# Since FreeRDP has new dependencies, protect this legacy to avoid the +# infamous "unmet direct dependencies" kconfig error. +config BR2_PACKAGE_FREERDP_CLIENT + bool "freerdp client option renamed" + depends on BR2_PACKAGE_FREERDP + select BR2_LEGACY + select BR2_PACKAGE_FREERDP_CLIENT_X11 + +config BR2_PACKAGE_BLACKBOX + bool "blackbox package has been removed" + select BR2_LEGACY + help + Upstream is dead and the package has been deprecated for + some time. There are other alternative maintained WMs. + +config BR2_KERNEL_HEADERS_3_0 + bool "kernel headers version 3.0.x are no longer supported" + select BR2_LEGACY + help + Version 3.0.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + +config BR2_KERNEL_HEADERS_3_11 + bool "kernel headers version 3.11.x are no longer supported" + select BR2_LEGACY + help + Version 3.11.x of the Linux kernel headers have been + deprecated for more than four buildroot releases and are now + removed. + +config BR2_KERNEL_HEADERS_3_13 + bool "kernel headers version 3.13.x are no longer supported" + select BR2_LEGACY + help + Version 3.13.x of the Linux kernel headers have been + deprecated for more than four buildroot releases and are now + removed. + +config BR2_KERNEL_HEADERS_3_15 + bool "kernel headers version 3.15.x are no longer supported" + select BR2_LEGACY + help + Version 3.15.x of the Linux kernel headers have been + deprecated for more than four buildroot releases and are now + removed. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_ANDI + bool "DirectFB example df_andi has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_BLTLOAD + bool "DirectFB example df_bltload has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_CPULOAD + bool "DirectFB example df_cpuload has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_DATABUFFER + bool "DirectFB example df_databuffer has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_DIOLOAD + bool "DirectFB example df_dioload has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_DOK + bool "DirectFB example df_dok has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_DRIVERTEST + bool "DirectFB example df_drivertest has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_FIRE + bool "DirectFB example df_fire has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_FLIP + bool "DirectFB example df_flip has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_FONTS + bool "DirectFB example df_fonts has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_INPUT + bool "DirectFB example df_input has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_JOYSTICK + bool "DirectFB example df_joystick has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_KNUCKLES + bool "DirectFB example df_knuckles has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_LAYER + bool "DirectFB example df_layer has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_MATRIX + bool "DirectFB example df_matrix has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_MATRIX_WATER + bool "DirectFB example df_matrix_water has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_NEO + bool "DirectFB example df_neo has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_NETLOAD + bool "DirectFB example df_netload has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_PALETTE + bool "DirectFB example df_palette has been removed" + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_PARTICLE + bool "DirectFB example df_particle has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_PORTER + bool "DirectFB example df_porter has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_STRESS + bool "DirectFB example df_stress has been removed" + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_TEXTURE + bool "DirectFB example df_texture has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_VIDEO + bool "DirectFB example df_video has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_VIDEO_PARTICLE + bool "DirectFB example df_video_particle has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_WINDOW + bool "DirectFB example df_window has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_KOBS_NG + bool "kobs-ng was replaced by imx-kobs" + select BR2_LEGACY + select BR2_PACKAGE_IMX_KOBS + help + The outdated kobs-ng has been replaced by the Freescale- + maintained imx-kobs package. + +config BR2_PACKAGE_SAWMAN + bool "sawman package removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_SAWMAN + help + This option has been removed because the sawman package no + longer exists: it was merged inside DirectFB itself. This + feature can now be enabled using the + BR2_PACKAGE_DIRECTFB_SAWMAN option. + +config BR2_PACKAGE_DIVINE + bool "divine package removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_DIVINE + help + This option has been removed because the divine package no + longer exists: it was merged inside DirectFB itself. This + feature can now be enabled using the + BR2_PACKAGE_DIRECTFB_DIVINE option. + +############################################################################### +comment "Legacy options removed in 2015.08" + +config BR2_PACKAGE_KODI_PVR_ADDONS + bool "Kodi PVR addon was split" + select BR2_LEGACY + select BR2_PACKAGE_KODI_PVR_ARGUSTV + select BR2_PACKAGE_KODI_PVR_DVBLINK + select BR2_PACKAGE_KODI_PVR_DVBVIEWER + select BR2_PACKAGE_KODI_PVR_FILMON + select BR2_PACKAGE_KODI_PVR_HTS + select BR2_PACKAGE_KODI_PVR_IPTVSIMPLE + select BR2_PACKAGE_KODI_PVR_MEDIAPORTAL_TVSERVER + select BR2_PACKAGE_KODI_PVR_MYTHTV + select BR2_PACKAGE_KODI_PVR_NEXTPVR + select BR2_PACKAGE_KODI_PVR_NJOY + select BR2_PACKAGE_KODI_PVR_PCTV + select BR2_PACKAGE_KODI_PVR_STALKER + select BR2_PACKAGE_KODI_PVR_VBOX + select BR2_PACKAGE_KODI_PVR_VDR_VNSI + select BR2_PACKAGE_KODI_PVR_VUPLUS + select BR2_PACKAGE_KODI_PVR_WMC + help + Kodi PVR addon was split into separate modules + +config BR2_BINUTILS_VERSION_2_23_2 + bool "binutils 2.23 option renamed" + select BR2_LEGACY + help + Binutils 2.23.2 has been removed, using a newer version is + recommended. + +config BR2_BINUTILS_VERSION_2_24 + bool "binutils 2.24 option renamed" + select BR2_LEGACY + select BR2_BINUTILS_VERSION_2_24_X + help + The binutils version option has been renamed to match the + same patchlevel logic used by gcc. The new option is now + BR2_BINUTILS_VERSION_2_24_X. + +config BR2_BINUTILS_VERSION_2_25 + bool "binutils 2.25 option renamed" + select BR2_LEGACY + select BR2_BINUTILS_VERSION_2_25_X + help + The binutils version option has been renamed to match the + same patchlevel logic used by gcc. The new option is now + BR2_BINUTILS_VERSION_2_25_X. + +config BR2_PACKAGE_PERF + bool "perf option has been renamed" + select BR2_LEGACY + select BR2_LINUX_KERNEL_TOOL_PERF + help + The perf package has been moved as a Linux tools package, + and the option to enable it is now + BR2_LINUX_KERNEL_TOOL_PERF. + +config BR2_BINUTILS_VERSION_2_22 + bool "binutils 2.22 removed" + select BR2_LEGACY + help + Binutils 2.22 has been removed, using a newer version is + recommended. + +config BR2_PACKAGE_GPU_VIV_BIN_MX6Q + bool "gpu-viv-bin-mx6q" + select BR2_LEGACY + select BR2_PACKAGE_IMX_GPU_VIV + help + Vivante graphics libraries have been renamed to + BR2_PACKAGE_IMX_GPU_VIV to be aligned with upstream package + name. + +config BR2_PACKAGE_LIBSEMANAGE_PYTHON_BINDINGS + bool "libsemanage python bindings removed" + depends on BR2_PACKAGE_PYTHON + select BR2_LEGACY + help + This option has been removed, since the libsemanage Python + bindings on the target were not useful. + +config BR2_TARGET_UBOOT_NETWORK + bool "U-Boot custom network settings removed" + select BR2_LEGACY + help + U-Boot's custom network settings options have been removed. + +endmenu + +endif # !SKIP_LEGACY diff --git a/DEVELOPERS b/DEVELOPERS new file mode 100644 index 00000000..06996568 --- /dev/null +++ b/DEVELOPERS @@ -0,0 +1,3462 @@ +# 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: Adam Duskett +F: package/depot-tools/ +F: package/dmenu-wayland/ +F: package/fcft/ +F: package/foot/ +F: package/flutter-engine/ +F: package/flutter-packages/ +F: package/flutter-packages/flutter-adaptive-scaffold-example/ +F: package/flutter-packages/flutter-animations-example/ +F: package/flutter-packages/flutter-go-router-example/ +F: package/flutter-packages/flutter-image-example/ +F: package/flutter-packages/flutter-markdown-example/ +F: package/flutter-packages/flutter-rfw-local-example/ +F: package/flutter-pi/ +F: package/flutter-sdk-bin/ +F: package/ivi-homescreen/ +F: package/libutempter/ +F: package/tllist/ +F: support/testing/tests/package/test_flutter.py + +N: Adam Heinrich +F: package/jack1/ + +N: Adrian Perez de Castro +F: package/brotli/ +F: package/bubblewrap/ +F: package/cage/ +F: package/cog/ +F: package/libavif/ +F: package/libdex/ +F: package/libepoxy/ +F: package/libmanette/ +F: package/libpsl/ +F: package/libwpe/ +F: package/sysprof/ +F: package/webkitgtk/ +F: package/wlroots/ +F: package/woff2/ +F: package/wpebackend-fdo/ +F: package/wpewebkit/ +F: package/xdg-dbus-proxy/ + +N: Adrien Gallouët +F: package/bird/ +F: package/glorytun/ + +N: Alejandro González +F: package/qprint/ +F: package/watchdog/ + +N: Aleksander Morgado +F: package/libmbim/ +F: package/libqmi/ +F: package/modem-manager/ + +N: Alessandro Partesotti +F: package/oatpp/ + +N: Alex Michel +F: package/libzenoh-c/ +F: package/libzenoh-pico/ +F: package/network-manager-openvpn/ + +N: Alex Suykov +F: board/chromebook/snow/ +F: configs/chromebook_snow_defconfig +F: package/vboot-utils/ + +N: Alexander Clouter +F: package/odhcp6c/ + +N: Alexander Dahl +F: package/fastd/ +F: package/libuecc/ +F: package/siproxd/ +F: package/putty/ + +N: Alexander Egorenkov +F: package/makedumpfile/ +F: package/multipath-tools/ + +N: Alexander Egorenkov +F: arch/Config.in.s390x +F: board/qemu/s390x/ +F: configs/qemu_s390x_defconfig +F: package/s390-tools/ + +N: Alexander Kurz +F: package/minimodem/ + +N: Alexander Lukichev +F: package/openpgm/ + +N: Aleksandr Makarov +F: package/libest/ + +N: Alexander Mukhin +F: package/tinyproxy/ +F: package/zfs/ + +N: Alexander Sverdlin +F: package/mini-snmpd/ + +N: Alexander Varnin +F: package/liblog4c-localtime/ + +N: Alexandre Belloni +F: package/tz/ + +N: Alexandre Esse +F: package/kvazaar/ +F: package/v4l2loopback/ + +N: Alexey Brodkin +F: board/cubietech/cubieboard2/ +F: configs/cubieboard2_defconfig + +N: Alexey Lukyanchuk +F: package/zabbix/ + +N: Alistair Francis +F: board/sifive/ +F: boot/opensbi/ +F: configs/hifive_unleashed_defconfig +F: package/libspdm/ +F: package/xen/ + +N: Alvaro G. M +F: package/dcron/ +F: package/libxmlrpc/ +F: package/python-docopt/ + +N: Anand Gadiyar +F: board/ti/am62x-sk/ +F: board/ti/am64x-sk/ +F: boot/ti-k3-boot-firmware/ +F: boot/ti-k3-r5-loader/ +F: configs/ti_am62x_sk_defconfig +F: configs/ti_am64x_sk_defconfig + +N: André Zwing +F: package/libkrb5/ +F: package/p7zip/ +F: package/wine/ + +N: Andreas Klinger +F: package/ply/ + +N: Andreas Naumann +F: package/evemu/ +F: package/libevdev/ +F: package/pkg-qmake.mk +F: package/qt5/qt5opcua/ +F: package/qt6/qt6opcua/ + +N: Andreas Ziegler +F: package/mpd/ + +N: Andrey Smirnov +F: package/python-decorator/ +F: package/python-ipython-genutils/ +F: package/python-pickleshare/ +F: package/python-scandir/ +F: package/python-simplegeneric/ +F: package/python-systemd/ +F: package/python-traitlets/ +F: package/zstd/ + +N: Andrey Yurovsky +F: package/rauc/ + +N: Angelo Compagnucci +F: board/sipeed/lichee_rv/ +F: board/sipeed/lichee_rv_dock/ +F: configs/sipeed_lichee_rv* +F: package/apparmor/ +F: package/corkscrew/ +F: package/cups/ +F: package/cups-filters/ +F: package/cutekeyboard/ +F: package/fail2ban/ +F: package/grep/ +F: package/gtkiostream/ +F: package/htpdate/ +F: package/i2c-tools/ +F: package/jq/ +F: package/libapparmor/ +F: package/libb64/ +F: package/libdill/ +F: package/mender/ +F: package/mender-artifact/ +F: package/mono/ +F: package/mono-gtksharp3/ +F: package/monolite/ +F: package/openjpeg/ +F: package/python-can/ +F: package/python-minimalmodbus/ +F: package/python-pillow/ +F: package/python-pydal/ +F: package/python-spidev/ +F: package/python-web2py/ +F: package/qt5/qt5coap/ +F: package/qt5/qt5knx/ +F: package/qt5/qt5mqtt/ +F: package/rtl8723ds/ +F: package/rtl8723ds-bt/ +F: package/sam-ba/ +F: package/sshguard/ +F: package/sunwait/ +F: package/sysdig/ + +N: Andy Shevchenko +F: package/fb-test-app/ + +N: Anisse Astier +F: package/go/ +F: package/nghttp2/ +F: package/pkg-golang.mk + +N: Anthony Viallard +F: package/gnuplot/ + +N: Antoine Tenart +F: package/libselinux/ +F: package/refpolicy/ +F: support/testing/tests/core/test_selinux/ +F: support/testing/tests/core/test_selinux.py +F: support/testing/tests/init/test_systemd_selinux/ +F: support/testing/tests/init/test_systemd_selinux.py + +N: Antony Pavlov +F: package/lsscsi/ + +N: ARC Maintainers +F: arch/Config.in.arc +F: board/synopsys/ +F: configs/snps_arc700_axs101_defconfig +F: configs/snps_archs38_axs103_defconfig +F: configs/snps_archs38_haps_defconfig +F: configs/snps_archs38_hsdk_defconfig + +N: Arnaud Aujon +F: package/espeak/ + +N: Arnout Vandecappelle +F: package/arp-scan/ +F: package/dehydrated/ +F: package/dracut/ +F: package/freescale-imx/firmware-imx/ +F: package/freescale-imx/imx-lib/ +F: package/libpagekite/ +F: package/lua-bit32/ +F: package/owfs/ +F: package/python-bottle/ +F: package/sqlcipher/ +F: package/stress/ + +N: Asaf Kahlon +F: package/collectd/ +F: package/libfuse3/ +F: package/libuv/ +F: package/python* +F: package/snmpclitools/ +F: package/spdlog/ +F: package/uftp/ +F: package/uftrace/ +F: package/uvw/ +F: package/zeromq/ + +N: Ash Charles +F: package/pru-software-support/ +F: package/ti-cgt-pru/ + +N: Assaf Inbal +F: package/lbase64/ +F: package/luabitop/ +F: package/luaexpatutils/ +F: package/luaposix/ +F: package/luasec/ +F: package/lua-ev/ +F: package/orbit/ + +N: Attila Wagner +F: package/python-canopen/ + +N: Bagas Sanjaya +F: package/git/ + +N: Bartosz Bilas +F: board/stmicroelectronics/stm32mp157a-dk1/ +F: configs/stm32mp157a_dk1_defconfig +F: package/cegui/ +F: package/log4qt/ +F: package/python-esptool/ +F: package/python-pyaes/ +F: package/ttyd/ +F: package/qt5/qt5scxml/ +F: package/qt5/qt5webview/ + +N: Baruch Siach +F: board/solidrun/clearfog_gt_8k/ +F: configs/solidrun_clearfog_gt_8k_defconfig +F: package/18xx-ti-utils/ +F: package/cpuburn-arm/ +F: package/daemon/ +F: package/dropbear/ +F: package/ebtables/ +F: package/i2c-tools/ +F: package/libcurl/ +F: package/libpcap/ +F: package/sexpect/ +F: package/socat/ +F: package/strace/ +F: package/tcpdump/ +F: package/ti-uim/ +F: package/uhubctl/ + +N: Ben Boeckel +F: package/taskd/ + +N: Benjamin Kamath +F: package/lapack/ + +N: Bernd Kuhls +F: package/alsa-lib/ +F: package/alsa-utils/ +F: package/apache/ +F: package/apg/ +F: package/apr/ +F: package/apr-util/ +F: package/bcg729/ +F: package/bento4/ +F: package/bitcoin/ +F: package/clamav/ +F: package/dav1d/ +F: package/dht/ +F: package/dnsmasq/ +F: package/dovecot/ +F: package/dovecot-pigeonhole/ +F: package/dtv-scan-tables/ +F: package/ethtool/ +F: package/eudev/ +F: package/exim/ +F: package/fetchmail/ +F: package/ffmpeg/ +F: package/flac/ +F: package/flatbuffers/ +F: package/freeswitch/ +F: package/freeswitch-mod-bcg729/ +F: package/freetype/ +F: package/fstrcmp/ +F: package/ghostscript/ +F: package/giflib/ +F: package/gkrellm/ +F: package/gpsd/ +F: package/gptfdisk/ +F: package/hddtemp/ +F: package/hdparm/ +F: package/igt-gpu-tools/ +F: package/intel-gmmlib/ +F: package/intel-mediadriver/ +F: package/intel-mediasdk/ +F: package/intel-microcode/ +F: package/intel-vpl-gpu-rt/ +F: package/jsoncpp/ +F: package/kodi* +F: package/lame/ +F: package/lcms2/ +F: package/leafnode2/ +F: package/libaacs/ +F: package/libass/ +F: package/libbdplus/ +F: package/libbluray/ +F: package/libbroadvoice/ +F: package/libcap/ +F: package/libcdio/ +F: package/libcec/ +F: package/libcodec2/ +F: package/libcrossguid/ +F: package/libde265/ +F: package/libdecor/ +F: package/libdeflate/ +F: package/libdisplay-info/ +F: package/libdrm/ +F: package/libdvbcsa/ +F: package/libdvdcss/ +F: package/libdvdnav/ +F: package/libdvdread/ +F: package/libebur128/ +F: package/libfreeglut/ +F: package/libfribidi/ +F: package/libg7221/ +F: package/libglew/ +F: package/libglfw/ +F: package/libglu/ +F: package/libhdhomerun/ +F: package/libheif/ +F: package/libilbc/ +F: package/libldns/ +F: package/libmicrohttpd/ +F: package/libminiupnpc/ +F: package/libmspack/ +F: package/libnatpmp/ +F: package/libnpth/ +F: package/libogg/ +F: package/libopenh264/ +F: package/libpciaccess/ +F: package/libplatform/ +F: package/libpng/ +F: package/libsidplay2/ +F: package/libsilk/ +F: package/libsndfile/ +F: package/libsoundtouch/ +F: package/libudfread/ +F: package/libunibreak/ +F: package/liburiparser/ +F: package/libutp/ +F: package/libuv/ +F: package/libva/ +F: package/libva-intel-driver/ +F: package/libva-utils/ +F: package/libvorbis/ +F: package/libvpl/ +F: package/libvpx/ +F: package/libyuv/ +F: package/linux-firmware/ +F: package/mc/ +F: package/mesa3d/ +F: package/minidlna/ +F: package/mjpg-streamer/ +F: package/mpg123/ +F: package/ntp/ +F: package/nut/ +F: package/openconnect/ +F: package/openvpn/ +F: package/opus/ +F: package/pciutils/ +F: package/perl-crypt-openssl-guess/ +F: package/perl-crypt-openssl-random/ +F: package/perl-crypt-openssl-rsa/ +F: package/perl-digest-sha1/ +F: package/perl-encode-detect/ +F: package/perl-encode-locale/ +F: package/perl-file-listing/ +F: package/perl-html-parser/ +F: package/perl-html-tagset/ +F: package/perl-http-cookies/ +F: package/perl-http-daemon/ +F: package/perl-http-date/ +F: package/perl-http-message/ +F: package/perl-http-negotiate/ +F: package/perl-io-html/ +F: package/perl-lwp-mediatypes/ +F: package/perl-mail-dkim/ +F: package/perl-mailtools/ +F: package/perl-netaddr-ip/ +F: package/perl-net-dns/ +F: package/perl-net-http/ +F: package/perl-timedate/ +F: package/perl-uri/ +F: package/perl-www-robotrules/ +F: package/php/ +F: package/pngquant/ +F: package/pppd/ +F: package/privoxy/ +F: package/pure-ftpd/ +F: package/python-couchdb/ +F: package/python-cssutils/ +F: package/python-glslang/ +F: package/python-mako/ +F: package/python-mwclient/ +F: package/python-mwscrape/ +F: package/python-mwscrape2slob/ +F: package/python-oauthlib/ +F: package/python-pyicu/ +F: package/python-pylru/ +F: package/python-requests-oauthlib/ +F: package/python-slob/ +F: package/rrdtool/ +F: package/rsync/ +F: package/rtmpdump/ +F: package/samba4/ +F: package/sofia-sip/ +F: package/spandsp/ +F: package/sqlite/ +F: package/stellarium/ +F: package/taglib/ +F: package/tinyxml2/ +F: package/tor/ +F: package/transmission/ +F: package/tvheadend/ +F: package/unixodbc/ +F: package/vlc/ +F: package/wget/ +F: package/wireless-regdb/ +F: package/wireless_tools/ +F: package/x264/ +F: package/x265/ +F: package/xmrig/ +F: package/ytree/ +F: package/znc/ +F: support/testing/tests/package/test_perl_html_parser.py + +N: Biagio Montaruli +F: board/acmesystems/ +F: configs/acmesystems_* + +N: Bilal Wasim +F: board/chromebook/elm/ +F: configs/chromebook_elm_defconfig + +N: Boerge Struempfel +F: package/libgpiod2/ + +N: Bogdan Radulescu +F: package/iftop/ +F: package/ncdu/ + +N: Brandon Maier +F: board/freescale/ls1046a-frwy/ +F: configs/ls1046a-frwy_defconfig +F: package/atftp/ +F: package/bats-assert/ +F: package/bats-file/ +F: package/bats-support/ +F: package/mtd/ +F: package/python-pysensors/ +F: package/qoriq-fm-ucode/ +F: package/unifdef/ +F: package/vmtouch/ +F: support/testing/tests/package/test_atftp.py +F: support/testing/tests/package/test_zip.py + +N: Brock Williams +F: package/pdmenu/ + +N: Bryan Brattlof +F: board/ti/ +F: board/beagleboard/beagleplay/ +F: boot/ti-k3-boot-firmware/ +F: boot/ti-k3-r5-loader/ +F: configs/beagleplay_defconfig +F: configs/ti_am62ax_sk_defconfig +F: configs/ti_am62x_sk_defconfig +F: configs/ti_am64x_sk_defconfig + +N: Carlo Caione +F: package/jailhouse/ +F: package/sunxi-boards/ + +N: Carsten Schoenert +F: package/dvbsnoop/ +F: package/libdvbsi/ +F: package/libsvg/ +F: package/libsvg-cairo/ + +N: Cédric Chépied +F: package/znc/ + +N: Cédric Le Goater +F: board/aspeed/ +F: board/qemu/ppc-bamboo/ +F: board/qemu/ppc64le-powernv8/readme.txt +F: configs/aspeed* +F: configs/qemu_ppc_bamboo_defconfig +F: configs/qemu_ppc64le_powernv8_defconfig + +N: Charles Hardin +F: package/alsa-plugins/ + +N: Changming Huang +F: package/qoriq-cadence-dp-firmware/ + +N: Chris Dimich +F: package/freescale-imx/imx-vpu-hantro-daemon/ + +N: Chris Packham +F: package/coremark/ +F: package/coremark-pro/ +F: package/gstreamer1/gst1-shark/ +F: package/micropython/ +F: package/syslog-ng/ + +N: Christian Kellermann +F: package/python-pylibftdi/ + +N: Christian Stewart +F: package/balena-engine/ +F: package/batman-adv/ +F: package/catatonit/ +F: package/cni-plugins/ +F: package/conmon/ +F: package/containerd/ +F: package/crun/ +F: package/delve/ +F: package/docker-cli/ +F: package/docker-compose/ +F: package/docker-engine/ +F: package/embiggen-disk/ +F: package/fuse-overlayfs/ +F: package/go/ +F: package/gocryptfs/ +F: package/mbpfan/ +F: package/moby-buildkit/ +F: package/mosh/ +F: package/nerdctl/ +F: package/pkg-golang.mk +F: package/rtl8821au/ +F: package/rtl8821cu/ +F: package/runc/ +F: package/tini/ +F: support/testing/tests/package/test_docker_compose.py + +N: Christophe Priouzeau +F: board/stmicroelectronics/stm32f429-disco/ +F: board/stmicroelectronics/stm32f469-disco/ +F: configs/stm32f429_disco_xip_defconfig +F: configs/stm32f469_disco_sd_defconfig +F: configs/stm32f469_disco_xip_defconfig + +N: Christophe Vu-Brugier +F: package/drbd-utils/ +F: package/iotop/ +F: package/python-configshell-fb/ +F: package/python-rtslib-fb/ +F: package/python-urwid/ +F: package/targetcli-fb/ + +N: Christopher McCrory +F: package/perl-appconfig/ +F: package/perl-astro-suntime/ +F: package/perl-class-load/ +F: package/perl-class-std/ +F: package/perl-class-std-fast/ +F: package/perl-data-dump/ +F: package/perl-data-optlist/ +F: package/perl-data-uuid/ +F: package/perl-date-manip/ +F: package/perl-dbd-mysql/ +F: package/perl-dbi/ +F: package/perl-device-serialport/ +F: package/perl-dist-checkconflicts/ +F: package/perl-file-slurp/ +F: package/perl-io-interface/ +F: package/perl-io-socket-multicast/ +F: package/perl-json-maybexs/ +F: package/perl-mime-tools/ +F: package/perl-module-implementation/ +F: package/perl-module-runtime/ +F: package/perl-number-bytes-human/ +F: package/perl-package-stash/ +F: package/perl-params-util/ +F: package/perl-sub-install/ +F: package/perl-sys-cpu/ +F: package/perl-sys-meminfo/ +F: package/perl-sys-mmap/ +F: package/perl-time-parsedate/ +F: package/perl-x10/ + +N: Clayton Shotwell +F: package/audit/ +F: package/checkpolicy/ +F: package/cpio/ +F: package/libcgroup/ +F: package/libee/ +F: package/libestr/ +F: package/liblogging/ +F: package/libselinux/ +F: package/libsemanage/ +F: package/libsepol/ +F: package/policycoreutils/ + +N: Clément Péron +F: board/beelink/gs1/ +F: configs/beelink_gs1_defconfig + +N: Colin Foster +F: package/python-tftpy/ +F: package/rauc-hawkbit-updater/ +F: support/testing/tests/package/sample_python_tftpy.py +F: support/testing/tests/package/test_python_tftpy.py + +N: Corentin Guillevic +F: package/libloki/ + +N: Cyril Bur +F: arch/Config.in.powerpc +F: package/kvm-unit-tests + +N: Dagg Stompler +F: board/hardkernel/odroidc2/ +F: configs/odroidc2_defconfig +F: package/meson-tools/ +F: package/odroidc2-firmware/ + +N: Daniel J. Leach +F: package/dacapo/ + +N: Daniel Lang +F: package/atkmm/ +F: package/atkmm2_28/ +F: package/cairomm/ +F: package/cairomm1_14/ +F: package/dbus-cxx/ +F: package/glibmm/ +F: package/glibmm2_66/ +F: package/gtkmm3/ +F: package/libsigc/ +F: package/libsigc2/ +F: package/llvm-project/ +F: package/paho-mqtt-cpp/ +F: package/pangomm/ +F: package/pangomm2_46/ +F: package/sam-ba/ + +N: Damien Lanson +F: package/libvdpau/ +F: package/log4cpp/ + +N: Damien Le Moal +F: package/python-kflash/ +F: board/canaan/ +F: configs/canaan_kd233_defconfig +F: board/sipeed/ +F: configs/sipeed_maix_bit_defconfig +F: configs/sipeed_maix_bit_sdcard_defconfig +F: configs/sipeed_maixduino_defconfig +F: configs/sipeed_maixduino_sdcard_defconfig +F: configs/sipeed_maix_dock_defconfig +F: configs/sipeed_maix_dock_sdcard_defconfig +F: configs/sipeed_maix_go_defconfig +F: configs/sipeed_maix_go_sdcard_defconfig + +N: Daniel Nicoletti +F: package/cutelyst/ + +N: Daniel Price +F: package/nodejs/ +F: package/redis/ + +N: Daniel Sangue +F: package/libftdi1/ + +N: Danilo Bargen +F: board/pcengines/apu2/ +F: configs/pcengines_apu2_defconfig +F: package/tealdeer/ + +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: Dario Binacchi +F: board/bsh/ +F: board/stmicroelectronics/stm32f769-disco/ +F: configs/imx6ulz_bsh_smm_m2_defconfig +F: configs/imx8mn_bsh_smm_s2_defconfig +F: configs/imx8mn_bsh_smm_s2_pro_defconfig +F: configs/stm32f769_disco_sd_defconfig +F: package/armadillo/ +F: package/babeld/ +F: package/sscep/ +F: package/uuu/ + +N: Dario Binacchi +F: package/uboot-bootcount/ +F: package/libmnl/ + +N: David Bender +F: package/benejson/ +F: package/freeradius-client/ +F: package/openldap/ + +N: David du Colombier <0intro@gmail.com> +F: package/x264/ + +N: David GOUARIN +F: package/freeradius-server/ +F: package/librelp/ +F: package/libtalloc/ + +N: David Lechner +F: board/lego/ev3/ +F: configs/lego_ev3_defconfig +F: linux/linux-ext-ev3dev-linux-drivers.mk +F: package/brickd/ +F: package/ev3dev-linux-drivers/ + +N: David Pierret +F: package/bat/ + +N: Davide Viti +F: package/flann/ +F: package/python-paho-mqtt/ +F: package/qhull/ +F: package/tcllib/ + +N: Denis Bodor +F: package/libstrophe/ + +N: Dick Olsson +F: board/aarch64-efi/ +F: board/pc/ +F: board/qemu/aarch64-sbsa/ +F: boot/arm-trusted-firmware/ +F: boot/edk2/ +F: configs/qemu_aarch64_sbsa_defconfig +F: package/bearssl/ +F: package/bitcoin/ +F: package/edk2-platforms/ +F: package/execline/ +F: package/mdevd/ +F: package/s6-dns/ +F: package/s6-linux-init/ +F: package/s6-linux-utils/ +F: package/s6-networking/ +F: package/s6-portable-utils/ +F: package/s6-rc/ +F: package/s6/ +F: package/skalibs/ +F: support/testing/tests/boot/test_edk2.py + +N: Dimitar Tomov +F: package/wolftpm/ + +N: Dimitrios Siganos +F: package/wireless-regdb/ + +N: Dmitry Chestnykh +F: board/qemu/sparc-ss10/ +F: configs/qemu_sparc_ss10_defconfig +F: package/uclibc-ng-test/ + +N: Dominik Faessler +F: package/logsurfer/ + +N: Dominik Michael Rauh +F: package/gdal/ + +N: Doug Kehn +F: package/nss-pam-ldapd/ +F: package/sp-oops-extract/ +F: package/unscd/ + +N: Dushara Jayasinghe +F: package/prosody/ + +N: Edgar Bonet +F: board/acmesystems/acqua-a5/ +F: configs/acmesystems_acqua_a5_256mb_defconfig +F: configs/acmesystems_acqua_a5_512mb_defconfig + +N: Eero Aaltonen +F: package/docopt-cpp/ + +N: Eloi Bail +F: package/bayer2rgb-neon/ +F: package/gstreamer1/gst1-plugins-bayer2rgb-neon/ + +N: Eric Le Bihan +F: docs/manual/adding-packages-meson.adoc +F: package/adwaita-icon-theme/ +F: package/darkhttpd/ +F: package/eudev/ +F: package/execline/ +F: package/hicolor-icon-theme/ +F: package/jemalloc/ +F: package/mdevd/ +F: package/meson/ +F: package/ninja/ +F: package/pkg-meson.mk +F: package/rust-bin/ +F: package/rust/ +F: package/s6/ +F: package/s6-dns/ +F: package/s6-linux-init/ +F: package/s6-linux-utils/ +F: package/s6-networking/ +F: package/s6-portable-utils/ +F: package/s6-rc/ +F: package/skalibs/ +F: package/smack/ +F: package/xvisor/ + +N: Eric Limpens +F: package/pifmrds/ +F: package/ympd/ + +N: Erico Nunes +F: board/aarch64-efi/ +F: configs/aarch64_efi_defconfig +F: package/acpica/ +F: package/acpitool/ +F: package/efibootmgr/ +F: package/efivar/ +F: package/fwts/ +F: package/spi-tools/ +F: package/xdotool/ +F: configs/pc_x86_64_* + +N: Erik Larsson +F: package/imx-mkimage/ + +N: Erik Stromdahl +F: package/mxsldr/ + +N: Ernesto L. Williams Jr +F: package/szip/ + +N: Esben Haabendal +F: package/python-kiwisolver/ + +N: Etienne Carriere +F: boot/optee-os/ +F: package/optee-client/ +F: package/optee-examples/ +F: package/optee-test/ + +N: Eugen Hristev +F: board/atmel/readme.txt +F: board/microchip/sama7g5ek/ +F: configs/microchip_sama7g5ek* + +N: Eugene Tarassov +F: package/tcf-agent/ + +N: Ezequiel Garcia +F: board/ci20/ +F: configs/ci20_defconfig +F: arch/Config.in.nios2 +F: package/fio/ +F: package/iptraf-ng/ +F: package/jimtcl/ +F: package/mimic/ +F: package/nodm/ +F: package/openbox/ +F: package/supertuxkart/ + +N: Fabio Estevam +F: board/warp7/ +F: configs/freescale_imx* +F: configs/imx23evk_defconfig +F: configs/imx6-sabre* +F: configs/imx6slevk_defconfig +F: configs/imx6sx-sdb_defconfig +F: configs/imx6ulevk_defconfig +F: configs/imx6ullevk_defconfig +F: configs/imx6ulpico_defconfig +F: configs/imx7d-sdb_defconfig +F: configs/imx7dpico_defconfig +F: configs/imx8mqevk_defconfig +F: configs/mx51evk_defconfig +F: configs/mx53loco_defconfig +F: configs/mx6cubox_defconfig +F: configs/mx6sx_udoo_neo_defconfig +F: configs/mx6udoo_defconfig +F: configs/wandboard_defconfig +F: configs/warp7_defconfig +F: package/atest/ +F: package/crucible/ +F: package/kmscube/ + +N: Fabio Porcedda +F: package/netsurf-buildsystem/ + +N: Fabio Urquiza +F: package/bitcoin/ + +N: Fabrice Fontaine +F: package/domoticz/ +F: package/libmediaart/ +F: package/libmaxminddb/ +F: package/openzwave/ + +N: Fabrice Fontaine +F: package/bearssl/ +F: package/belle-sip/ +F: package/belr/ +F: package/boinc/ +F: package/cairo/ +F: package/daq3/ +F: package/duktape/ +F: package/expat/ +F: package/flatbuffers/ +F: package/freeipmi/ +F: package/gdk-pixbuf-xlib/ +F: package/gerbera/ +F: package/gtksourceview/ +F: package/gssdp/ +F: package/gupnp/ +F: package/gupnp-dlna/ +F: package/gupnp-tools/ +F: package/haproxy/ +F: package/hiredis/ +F: package/i2pd/ +F: package/igd2-for-linux/ +F: package/json-c/ +F: package/ksmbd-tools/ +F: package/lcms2/ +F: package/lftp/ +F: package/libcap-ng/ +F: package/libcdio-paranoia/ +F: package/libcgicc/ +F: package/libconfig/ +F: package/libcue/ +F: package/libebml/ +F: package/libgee/ +F: package/libglib2/ +F: package/libgtk2/ +F: package/libgtk3/ +F: package/libhtp/ +F: package/libidn/ +F: package/libidn2/ +F: package/libjpeg/ +F: package/liblockfile/ +F: package/libmatroska/ +F: package/libmd/ +F: package/libmpdclient/ +F: package/libnetfilter_conntrack/ +F: package/libnetfilter_queue/ +F: package/libnpupnp/ +F: package/liboping/ +F: package/libpfm4/ +F: package/libraw/ +F: package/libraw1394/ +F: package/libroxml/ +F: package/librsvg/ +F: package/librsync/ +F: package/libsoup/ +F: package/libsoxr/ +F: package/libupnp/ +F: package/liburing/ +F: package/libv4l/ +F: package/libxslt/ +F: package/mbedtls/ +F: package/minissdpd/ +F: package/minizip/ +F: package/minizip-zlib/ +F: package/mongodb/ +F: package/motion/ +F: package/mutt/ +F: package/ncmpc/ +F: package/oniguruma/ +F: package/opencv4/ +F: package/oprofile/ +F: package/pcmanfm/ +F: package/perl-extutils-pkgconfig/ +F: package/python-backcall/ +F: package/python-jedi/ +F: package/python-parso/ +F: package/python-yatl/ +F: package/rocksdb/ +F: package/rtl_433/ +F: package/rygel/ +F: package/safeclib/ +F: package/snort3/ +F: package/suricata/ +F: package/tinycbor/ +F: package/tinydtls/ +F: package/whois/ +F: package/x11r7/xlib_libXpresent/ +F: package/zeek/ + +N: Fabrice Goucem +F: board/freescale/imx6ullevk/ +F: configs/freescale_imx6ullevk_defconfig + +N: Falco Hyfing +F: package/python-pymodbus/ + +N: Fiona Klute +F: package/python-pyasynchat/ +F: package/python-pyasyncore/ + +N: Flávio Tapajós +F: configs/asus_tinker-s_rk3288_defconfig +F: board/asus/tinker-s/ +F: package/python-paho-mqtt/ +F: package/python-sqlalchemy/ +F: package/rsyslog/ + +N: Florian Fainelli +F: package/cpulimit/ + +N: Floris Bos +F: package/ipmitool/ +F: package/odhcploc/ + +N: Francis Laniel +F: package/falcosecurity-libs +F: package/pahole/ +F: package/sysdig/ +F: package/tbb/ + +N: Francisco Gonzalez +F: package/ser2net/ + +N: Francois Dugast +F: board/sipeed/licheepi_nano/ +F: board/visionfive2/ +F: configs/sipeed_licheepi_nano_defconfig +F: configs/visionfive2_defconfig + +N: Francois Perrad +F: board/freescale/ls1028ardb/ +F: board/olimex/a20_olinuxino +F: board/olimex/imx233_olinuxino/ +F: board/olimex/stmp1_olinuxino/ +F: configs/ls1028ardb_defconfig +F: configs/olimex_a20_olinuxino_* +F: configs/olimex_imx233_olinuxino_defconfig +F: configs/olimex_stmp157_olinuxino_lime_defconfig +F: package/4th/ +F: package/cgilua/ +F: package/chipmunk/ +F: package/cog/ +F: package/collectl/ +F: package/copas/ +F: package/coxpcall/ +F: package/dado/ +F: package/ficl/ +F: package/graphene/ +F: package/janet/ +F: package/libgtk4/ +F: package/libtomcrypt/ +F: package/libtommath/ +F: package/libwpe/ +F: package/linenoise/ +F: package/ljlinenoise/ +F: package/lua-inotify/ +F: package/lmdb/ +F: package/lpeg/ +F: package/lpty/ +F: package/lrandom/ +F: package/lsqlite3/ +F: package/lua* +F: package/lzlib/ +F: package/moarvm/ +F: package/mstpd/ +F: package/netsurf/ +F: package/perl* +F: package/pkg-perl.mk +F: package/pkg-luarocks.mk +F: package/quickjs/ +F: package/rings/ +F: package/tekui/ +F: package/wpebackend-fdo/ +F: package/wpewebkit/ +F: package/wsapi/ +F: package/wsapi-fcgi/ +F: package/wsapi-xavante/ +F: package/xavante/ +F: support/testing/tests/package/test_lua* +F: utils/scancpan + +N: Frank Hunleth +F: package/am335x-pru-package/ +F: package/libconfuse/ +F: package/libdmtx/ +F: package/libsodium/ +F: package/php-amqp/ +F: package/python-cherrypy/ +F: package/sane-backends/ +F: package/upx/ +F: package/zxing-cpp/ + +N: Frank Vanbever +F: package/libmodsecurity/ +F: package/nginx-modsecurity/ + +N: Gao Xiang +F: package/erofs-utils/ + +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/ + +N: Geoff Levand +F: package/flannel/ + +N: Geoffrey Ragot +F: package/python-pyyaml/ + +N: Gero Schwaericke +F: board/cubietech/cubieboard1/ +F: configs/cubieboard1_defconfig + +N: Gilles Talis +F: board/freescale/imx8mmevk/ +F: board/friendlyarm/nanopi-r2s/ +F: configs/freescale_imx8mmevk_defconfig +F: configs/friendlyarm_nanopi_r2s_defconfig +F: package/cctz/ +F: package/clpeak/ +F: package/faad2/ +F: package/fdk-aac/ +F: package/hawktracer/ +F: package/httping/ +F: package/iozone/ +F: package/leptonica/ +F: package/libeXosip2/ +F: package/libolm/ +F: package/libosip2/ +F: package/ocrad/ +F: package/opencl-clhpp/ +F: package/opusfile/ +F: package/restclient-cpp/ +F: package/tesseract-ocr/ +F: package/webp/ +F: package/xapian/ + +N: Giulio Benetti +F: board/bananapi/bananapi-m2-ultra/ +F: board/freescale/imx6ullevk/ +F: board/freescale/imxrt1050evk/ +F: board/mangopi/mq1rdw2/ +F: board/olimex/a* +F: board/pine64/rockpro64 +F: configs/amarula_vyasa_rk3288_defconfig +F: configs/asus_tinker_rk3288_defconfig +F: configs/bananapi_m2_berry_defconfig +F: configs/bananapi_m2_ultra_defconfig +F: configs/freescale_imx6ullevk_defconfig +F: configs/imx6ullevk_defconfig +F: configs/imxrt1050-evk_defconfig +F: configs/mangopi_mq1rdw2_defconfig +F: configs/olimex_a* +F: configs/rockpro64_defconfig +F: package/at/ +F: package/binutils/ +F: package/cryptsetup/ +F: package/erlang-jiffy/ +F: package/esp-hosted/ +F: package/gcc/ +F: package/harfbuzz/ +F: package/libblockdev/ +F: package/libfuse3/ +F: package/libnspr/ +F: package/libnss/ +F: package/libnvme/ +F: package/libtraceevent/ +F: package/libtracefs +F: package/linux-tools/linux-tool-rtla.mk.in +F: package/mali-driver/ +F: package/minicom/ +F: package/mongoose/ +F: package/mmc-utils/ +F: package/nfs-utils/ +F: package/python-libconf/ +F: package/python-uvloop/ +F: package/qt5/ +F: package/rockchip-mali/ +F: package/rtl8188eu/ +F: package/rtl8189es/ +F: package/rtl8192eu/ +F: package/rtl8723bu/ +F: package/rtl8723ds/ +F: package/rtl8812au-aircrack-ng/ +F: package/rtl8821au/ +F: package/rtl8821cu/ +F: package/sunxi-mali-utgard/ +F: package/sunxi-mali-utgard-driver/ +F: package/sunxi-tools/ +F: package/swugenerator/ +F: package/swupdate/ +F: package/trace-cmd/ +F: package/udisks/ +F: package/wilc-driver/ +F: toolchain/ + +N: Graeme Smecher +F: package/python-orjson/ + +N: Gregory Dymarek +F: package/ding-libs/ +F: package/gengetopt/ +F: package/janus-gateway/ +F: package/libnice/ +F: package/libsrtp/ +F: package/libwebsock/ +F: package/sofia-sip/ + +N: Grzegorz Blach +F: fs/f2fs/ +F: package/bluez5_utils-headers/ +F: package/f2fs-tools/ +F: package/graphicsmagick/ +F: package/pigpio/ +F: package/python-aioblescan/ +F: package/python-bluezero/ +F: package/python-crontab/ +F: package/python-falcon/ +F: package/python-ifaddr/ +F: package/python-hiredis/ +F: package/python-mimeparse/ +F: package/python-pigpio/ +F: package/python-pyjwt/ +F: package/python-redis/ +F: package/python-rpi-ws281x/ +F: package/python-wtforms/ +F: package/rpi-rgb-led-matrix/ + +N: Guillaume William Brs +F: package/libnids/ +F: package/libxcrypt/ +F: package/liquid-dsp/ +F: package/mbw/ +F: package/pixiewps/ +F: package/python-beniget/ +F: package/python-gast/ +F: package/python-pybind/ +F: package/python-pythran/ +F: package/python-scipy/ +F: package/reaver/ +F: support/testing/tests/package/br2-external/python-pybind +F: support/testing/tests/package/sample_python_pybind.py +F: support/testing/tests/package/sample_python_scipy.py +F: support/testing/tests/package/test_python_pybind.py +F: support/testing/tests/package/test_python_scipy.py + +N: Gustavo Heinz +F: package/python-m2crypto/ + +N: Gwenhael Goavec-Merou +F: board/terasic/de10nano_cyclone5/ +F: configs/terasic_de10nano_cyclone5_defconfig +F: package/gnuradio/ +F: package/gqrx/ +F: package/gr-osmosdr/ +F: package/librtlsdr/ +F: package/libusbgx/ +F: package/matio/ +F: package/python-cheetah/ +F: package/python-markdown/ +F: package/python-remi/ +F: package/python-sip/ +F: package/uhd/ +F: package/volk/ + +N: Heiko Thiery +F: board/kontron/bl-imx8mm/ +F: board/kontron/smarc-sal28/ +F: board/kontron/pitx-imx8m/ +F: configs/kontron_bl_imx8mm_defconfig +F: configs/kontron_smarc_sal28_defconfig +F: configs/kontron_pitx_imx8m_defconfig +F: package/altera-stapl/ +F: package/blake3/ +F: package/ipmitool/ +F: package/libnetconf2/ +F: package/libyang/ +F: package/linuxptp/ +F: package/netopeer2/ +F: package/python-yamllint/ +F: package/rauc/ +F: package/sysrepo/ +F: support/testing/tests/package/sample_python_yamllint.py +F: support/testing/tests/package/test_python_yamllint.py + +N: Hervé Codina +F: package/alchemy/ +F: package/dtbocfg/ +F: package/libdbi/ +F: package/libdbi-drivers/ +F: package/libfutils/ +F: package/libshdata/ +F: package/lua-augeas/ +F: package/modsecurity2/ +F: package/php-apcu/ +F: package/php-lua/ +F: package/php-pam/ +F: package/php-pecl-dbus/ +F: package/ulog/ +F: support/testing/tests/package/test_dtbocfg.py +F: support/testing/tests/package/test_libshdata.py +F: support/testing/tests/package/test_lua_augeas.py +F: support/testing/tests/package/test_php_apcu.py +F: support/testing/tests/package/test_php_lua.py +F: support/testing/tests/package/test_php_pam.py +F: support/testing/tests/package/test_php_pecl_dbus.py + +N: Hiroshi Kawashima +F: package/gauche/ +F: package/gmrender-resurrect/ +F: package/squeezelite/ + +N: Horatiu Vultur +F: package/cfm/ +F: package/easyframes/ +F: package/mrp/ + +N: Ian Haylock +F: package/python-rpi-gpio/ + +N: Ibai Erkiaga +F: package/binutils-bare-metal/ +F: package/gcc-bare-metal/ +F: package/newlib-bare-metal/ +F: toolchain/toolchain-bare-metal-buildroot/ + +N: Ignacy Gawędzki +F: package/angularjs/ + +N: Ilias Apalodimas +F: package/keepalived/ + +N: Ilya Averyanov +F: package/exempi/ + +N: Ismael Luceno +F: package/axel/ +F: package/mawk/ + +N: J. Neuschäfer +F: package/tipidee + +N: Jagan Teki +F: board/amarula/ +F: board/asus/ +F: board/bananapi/ +F: board/engicam/ +F: board/olimex/a33_olinuxino/ +F: board/olimex/a64-olinuxino/ +F: board/orangepi/orangepi-lite2/ +F: board/orangepi/orangepi-one-plus +F: board/orangepi/orangepi-zero-plus2/ +F: board/pine64/ +F: configs/amarula_vyasa_rk3288_defconfig +F: configs/asus_tinker_rk3288_defconfig +F: configs/engicam_imx6qdl_icore_defconfig +F: configs/engicam_imx6qdl_icore_qt5_defconfig +F: configs/engicam_imx6qdl_icore_rqs_defconfig +F: configs/engicam_imx6ul_geam_defconfig +F: configs/engicam_imx6ul_isiot_defconfig +F: configs/olimex_a33_olinuxino_defconfig +F: configs/olimex_a64_olinuxino_defconfig +F: configs/orangepi_lite2_defconfig +F: configs/orangepi_one_plus_defconfig +F: configs/orangepi_zero_plus2_defconfig +F: configs/pine64_defconfig +F: configs/pine64_sopine_defconfig +F: package/python-scipy/ +F: support/testing/tests/package/sample_python_scipy.py +F: support/testing/tests/package/test_python_scipy.py + +N: James Hilliard +F: package/apcupsd/ +F: package/bpftool/ +F: package/cloudflared/ +F: package/exfatprogs/ +F: package/fwupd/ +F: package/fwupd-efi/ +F: package/fxdiv/ +F: package/gensio/ +F: package/lua-std-debug/ +F: package/lua-std-normalize/ +F: package/libjcat/ +F: package/libucontext/ +F: package/lilv/ +F: package/lv2/ +F: package/neon-2-sse/ +F: package/pipewire/ +F: package/python* +F: package/rtl8192eu/ +F: package/serd/ +F: package/sord/ +F: package/sratom/ +F: package/stb/ +F: package/zchunk/ +F: support/testing/tests/package/sample_python_rtoml.py +F: support/testing/tests/package/test_python_rtoml.py + +N: James Knight +F: package/atkmm/ +F: package/cairomm/ +F: package/glibmm/ +F: package/gtkmm3/ +F: package/libpqxx/ +F: package/pangomm/ +F: package/rpm/ +F: package/swaybg/ +F: package/yad/ + +N: Jamie Gibbons +F: board/beagleboard/beaglev_fire/ +F: board/microchip/mpfs_icicle/ +F: configs/beaglev_fire_defconfig +F: configs/microchip_mpfs_icicle_defconfig +F: package/microchip-hss-payload-generator/ + +N: Jan Havran +F: board/pine64/pinecube/ +F: configs/pine64_pinecube_defconfig + +N: Jan Heylen +F: package/opentracing-cpp/ + +N: Jan Kraval +F: board/orangepi/orangepi-lite +F: configs/orangepi_lite_defconfig + +N: Jan Kundrát +F: configs/solidrun_clearfog_defconfig +F: board/solidrun/clearfog/ +F: package/libnetconf2/ +F: package/libyang/ +F: package/sysrepo/ + +N: Jan Pedersen +F: package/zip/ + +N: Jared Bents +F: package/libvirt/ + +N: Jarkko Sakkinen +F: package/libtpms/ +F: package/quota/ +F: package/swtpm/ + +N: Jason Pruitt +F: package/librtlsdr/ + +N: Javad Rahimi +F: board/orangepi/orangepi-pc2 +F: configs/orangepi_pc2_defconfig + +N: Jean Burgat +F: package/openfpgaloader/ + +N: Jens Kleintje +F: package/gcnano-binaries/ + +N: Jens Rosenboom +F: package/sl/ + +N: Jens Zettelmeyer +F: package/batctl/ + +N: Jeremy Rosen +F: package/fxload/ + +N: Jérôme Oufella +F: package/libdri2/ +F: package/qt-webkit-kiosk/ + +N: Jérôme Pouiller +F: package/apitrace/ +F: package/freescale-imx/gpu-amd-bin-mx51/ +F: package/freescale-imx/libz160/ +F: package/lxc/ +F: package/strongswan/ +F: package/wmctrl/ +F: package/x11r7/xdriver_xf86-video-imx/ + +N: Jesse Taube +F: board/freescale/imxrt1050evk/ +F: configs/imxrt1050-evk_defconfig + +N: Jesse Van Gavere +F: package/qt6/ + +N: Jianhui Zhao +F: package/libuhttpd/ +F: package/libuwsc/ +F: package/rtty/ + +N: Joachim Wiberg +F: configs/globalscale_espressobin_defconfig +F: board/globalscale/espressobin/ +F: package/inadyn/ +F: package/libconfuse/ +F: package/libite/ +F: package/libnet/ +F: package/libteam/ +F: package/libuev/ +F: package/mg/ +F: package/mdnsd/ +F: package/mini-snmpd/ +F: package/mrouted/ +F: package/netcalc/ +F: package/pimd/ +F: package/redir/ +F: package/smcroute/ +F: package/ssdp-responder/ +F: package/sysklogd/ +F: package/uredir/ +F: package/watchdogd/ + +N: Jochen Baltes +F: package/altera-stapl + +N: Joel Carlson +F: package/c-capnproto/ +F: package/capnproto/ +F: package/cmocka/ +F: package/flatcc/ +F: package/libcorrect/ + +N: Joel Stanley +F: package/pdbg/ +F: board/qemu/ppc64le-pseries/ +F: configs/qemu_ppc64le_pseries_defconfig +F: board/qemu/ppc-mac99/ +F: configs/qemu_ppc_mac99_defconfig +F: board/aspeed/ +F: configs/aspeed* + +N: Johan Derycke +F: package/python-libconfig/ + +N: Johan Oudinet +F: package/ejabberd/ +F: package/erlang-base64url/ +F: package/erlang-eimp/ +F: package/erlang-goldrush/ +F: package/erlang-idna/ +F: package/erlang-jiffy/ +F: package/erlang-jose/ +F: package/erlang-lager/ +F: package/erlang-p1-acme/ +F: package/erlang-p1-cache-tab/ +F: package/erlang-p1-mqtree/ +F: package/erlang-p1-oauth2/ +F: package/erlang-p1-pkix/ +F: package/erlang-p1-sip/ +F: package/erlang-p1-stringprep/ +F: package/erlang-p1-stun/ +F: package/erlang-p1-tls/ +F: package/erlang-p1-utils/ +F: package/erlang-p1-xml/ +F: package/erlang-p1-xmpp/ +F: package/erlang-p1-yaml/ +F: package/erlang-p1-yconf/ +F: package/erlang-p1-zlib/ +F: package/forge/ +F: package/nginx-dav-ext/ +F: package/vis-network/ +F: package/vuejs/ + +N: John Stile +F: package/dhcpcd/ + +N: John Faith +F: package/python-inflection/ +F: package/sdbusplus/ + +N: Jon Ringle +F: package/mbpoll/ + +N: Jon Henrik Bjørnstad +F: package/qbee-agent/ + +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: Joris Offouga +F: package/python-colorlog/ +F: package/python-simplelogging/ + +N: Joris Lijssens +F: package/emlog/ +F: package/libcoap/ +F: package/libnet/ +F: package/libuio/ +F: package/netsniff-ng/ +F: package/rabbitmq-c/ + +N: José Luis Salvador Rufo +F: package/zfs/ +F: support/testing/tests/package/test_zfs.py + +N: Joseph Kogut +F: package/at-spi2-core/ +F: package/earlyoom/ +F: package/gconf/ +F: package/libnss/ +F: package/llvm-project/clang/ +F: package/llvm-project/lld/ +F: package/llvm-project/llvm/ +F: package/python-cython/ +F: package/python-pycups/ +F: package/python-raven/ +F: package/python-schedule/ +F: package/python-sentry-sdk/ +F: package/python-websockets/ +F: package/python-xlib/ +F: package/sentry-cli/ +F: package/sentry-native/ +F: package/unclutter-xfixes/ + +N: Joshua Henderson +F: package/qt5/qt5wayland/ + +N: Jugurtha BELKALEM +F: package/bcc/ +F: package/python-aiofiles/ +F: package/python-crayons/ +F: package/python-cycler/ +F: package/python-matplotlib/ +F: package/python-opcua-asyncio/ +F: package/python-piexif/ + +N: Juha Rantanen +F: package/acsccid/ + +N: Julian Scheel +F: package/bitstream/ +F: package/cbootimage/ +F: package/cryptopp/ +F: package/dvblast/ +F: package/tegrarcm/ + +N: Julien Boibessot +F: board/armadeus/ +F: configs/armadeus* +F: package/abootimg/ +F: package/gpm/ +F: package/lbreakout2/ +F: package/libcddb/ +F: package/libmodbus/ +F: package/ltris/ +F: package/opentyrian/ + +N: Julien Corjon +F: package/qt5/ + +N: Julien Grossholtz +F: board/raspberrypi/ +F: board/technologic/ts7680/ +F: configs/raspberrypizero2w_defconfig +F: configs/ts7680_defconfig +F: package/paho-mqtt-c + +N: Julien Olivain +F: board/qemu/riscv64-virt-efi/ +F: board/spike/ +F: board/technexion/imx8mmpico/ +F: configs/imx8mmpico_defconfig +F: configs/qemu_riscv64_virt_efi_defconfig +F: configs/spike_riscv32_defconfig +F: configs/spike_riscv64_defconfig +F: package/fluid-soundfont/ +F: package/fluidsynth/ +F: package/glslsandbox-player/ +F: package/gnupg2/ +F: package/highway/ +F: package/kexec/ +F: package/libjxl/ +F: package/libopenmpt/ +F: package/mokutil/ +F: package/octave/ +F: package/ola/ +F: package/openblas/ +F: package/opencsd/ +F: package/openmpi/ +F: package/perftest/ +F: package/ptm2human/ +F: package/python-distro/ +F: package/python-gnupg/ +F: package/python-hkdf/ +F: package/python-hwdata/ +F: package/python-magic-wormhole/ +F: package/python-magic-wormhole-mailbox-server/ +F: package/python-magic-wormhole-transit-relay/ +F: package/python-midiutil/ +F: package/python-ml-dtypes/ +F: package/python-pyalsa/ +F: package/python-spake2/ +F: package/rdma-core/ +F: package/riscv-isa-sim/ +F: package/swipl/ +F: package/tig/ +F: package/tinycompress/ +F: package/z3/ +F: package/zynaddsubfx/ +F: support/testing/tests/boot/test_optee_os.py +F: support/testing/tests/boot/test_optee_os/ +F: support/testing/tests/fs/test_btrfs.py +F: support/testing/tests/fs/test_btrfs/ +F: support/testing/tests/package/sample_python_distro.py +F: support/testing/tests/package/sample_python_gnupg.py +F: support/testing/tests/package/sample_python_hwdata.py +F: support/testing/tests/package/sample_python_midiutil.py +F: support/testing/tests/package/sample_python_ml_dtypes.py +F: support/testing/tests/package/sample_python_mpmath.py +F: support/testing/tests/package/sample_python_pyalsa.py +F: support/testing/tests/package/sample_python_spake2.py +F: support/testing/tests/package/sample_python_sympy.py +F: support/testing/tests/package/test_4th.py +F: support/testing/tests/package/test_acl.py +F: support/testing/tests/package/test_acpica.py +F: support/testing/tests/package/test_acpica/ +F: support/testing/tests/package/test_apache.py +F: support/testing/tests/package/test_attr.py +F: support/testing/tests/package/test_audio_codec_base.py +F: support/testing/tests/package/test_bc.py +F: support/testing/tests/package/test_bcc.py +F: support/testing/tests/package/test_bcc/ +F: support/testing/tests/package/test_bitcoin.py +F: support/testing/tests/package/test_brotli.py +F: support/testing/tests/package/test_btrfs_progs.py +F: support/testing/tests/package/test_btrfs_progs/ +F: support/testing/tests/package/test_bzip2.py +F: support/testing/tests/package/test_compressor_base.py +F: support/testing/tests/package/test_coremark.py +F: support/testing/tests/package/test_cryptsetup.py +F: support/testing/tests/package/test_cryptsetup/ +F: support/testing/tests/package/test_ddrescue.py +F: support/testing/tests/package/test_ddrescue/ +F: support/testing/tests/package/test_dmidecode.py +F: support/testing/tests/package/test_dos2unix.py +F: support/testing/tests/package/test_ed.py +F: support/testing/tests/package/test_ethtool.py +F: support/testing/tests/package/test_ethtool/ +F: support/testing/tests/package/test_file.py +F: support/testing/tests/package/test_file/ +F: support/testing/tests/package/test_fluidsynth.py +F: support/testing/tests/package/test_fluidsynth/ +F: support/testing/tests/package/test_fping.py +F: support/testing/tests/package/test_fwts.py +F: support/testing/tests/package/test_gawk.py +F: support/testing/tests/package/test_ghostscript.py +F: support/testing/tests/package/test_ghostscript/ +F: support/testing/tests/package/test_glslsandbox_player.py +F: support/testing/tests/package/test_glslsandbox_player/ +F: support/testing/tests/package/test_gnupg2.py +F: support/testing/tests/package/test_gnuplot.py +F: support/testing/tests/package/test_gnuplot/ +F: support/testing/tests/package/test_gnuradio.py +F: support/testing/tests/package/test_gnuradio/ +F: support/testing/tests/package/test_gpsd.py +F: support/testing/tests/package/test_gpsd/ +F: support/testing/tests/package/test_gzip.py +F: support/testing/tests/package/test_highway.py +F: support/testing/tests/package/test_hwloc.py +F: support/testing/tests/package/test_iozone.py +F: support/testing/tests/package/test_iperf.py +F: support/testing/tests/package/test_iperf3.py +F: support/testing/tests/package/test_iproute2.py +F: support/testing/tests/package/test_iptables.py +F: support/testing/tests/package/test_jailhouse.py +F: support/testing/tests/package/test_jq.py +F: support/testing/tests/package/test_jq/ +F: support/testing/tests/package/test_kexec.py +F: support/testing/tests/package/test_kexec/ +F: support/testing/tests/package/test_kmod.py +F: support/testing/tests/package/test_kmod/ +F: support/testing/tests/package/test_kmscube.py +F: support/testing/tests/package/test_kmscube/ +F: support/testing/tests/package/test_lame.py +F: support/testing/tests/package/test_less.py +F: support/testing/tests/package/test_libcamera.py +F: support/testing/tests/package/test_libcamera/ +F: support/testing/tests/package/test_libgpgme.py +F: support/testing/tests/package/test_libjxl.py +F: support/testing/tests/package/test_links.py +F: support/testing/tests/package/test_links/ +F: support/testing/tests/package/test_lrzip.py +F: support/testing/tests/package/test_lrzsz.py +F: support/testing/tests/package/test_ltrace.py +F: support/testing/tests/package/test_lvm2.py +F: support/testing/tests/package/test_lzip.py +F: support/testing/tests/package/test_lsof.py +F: support/testing/tests/package/test_lz4.py +F: support/testing/tests/package/test_lzop.py +F: support/testing/tests/package/test_make.py +F: support/testing/tests/package/test_make/ +F: support/testing/tests/package/test_mariadb.py +F: support/testing/tests/package/test_mawk.py +F: support/testing/tests/package/test_mdadm.py +F: support/testing/tests/package/test_mdadm/ +F: support/testing/tests/package/test_micropython.py +F: support/testing/tests/package/test_micropython/ +F: support/testing/tests/package/test_mosquitto.py +F: support/testing/tests/package/test_mtools.py +F: support/testing/tests/package/test_mtr.py +F: support/testing/tests/package/test_ncdu.py +F: support/testing/tests/package/test_netcat.py +F: support/testing/tests/package/test_netsnmp.py +F: support/testing/tests/package/test_netsnmp/ +F: support/testing/tests/package/test_nftables.py +F: support/testing/tests/package/test_nftables/ +F: support/testing/tests/package/test_ngrep.py +F: support/testing/tests/package/test_nmap.py +F: support/testing/tests/package/test_ntp.py +F: support/testing/tests/package/test_ntp/ +F: support/testing/tests/package/test_numactl.py +F: support/testing/tests/package/test_numactl/ +F: support/testing/tests/package/test_octave.py +F: support/testing/tests/package/test_ola.py +F: support/testing/tests/package/test_ola/ +F: support/testing/tests/package/test_openblas.py +F: support/testing/tests/package/test_pciutils.py +F: support/testing/tests/package/test_perftest.py +F: support/testing/tests/package/test_pigz.py +F: support/testing/tests/package/test_postgresql.py +F: support/testing/tests/package/test_python_distro.py +F: support/testing/tests/package/test_python_gnupg.py +F: support/testing/tests/package/test_python_hkdf.py +F: support/testing/tests/package/test_python_hwdata.py +F: support/testing/tests/package/test_python_magic_wormhole.py +F: support/testing/tests/package/test_python_midiutil.py +F: support/testing/tests/package/test_python_ml_dtypes.py +F: support/testing/tests/package/test_python_mpmath.py +F: support/testing/tests/package/test_python_pyalsa.py +F: support/testing/tests/package/test_python_spake2.py +F: support/testing/tests/package/test_python_sympy.py +F: support/testing/tests/package/test_rdma_core.py +F: support/testing/tests/package/test_rdma_core/ +F: support/testing/tests/package/test_rt_tests.py +F: support/testing/tests/package/test_screen.py +F: support/testing/tests/package/test_sed.py +F: support/testing/tests/package/test_socat.py +F: support/testing/tests/package/test_sox.py +F: support/testing/tests/package/test_sqlite.py +F: support/testing/tests/package/test_strace.py +F: support/testing/tests/package/test_stress_ng.py +F: support/testing/tests/package/test_swipl.py +F: support/testing/tests/package/test_swipl/ +F: support/testing/tests/package/test_tcl.py +F: support/testing/tests/package/test_tcl/ +F: support/testing/tests/package/test_tcpdump.py +F: support/testing/tests/package/test_tesseract_ocr.py +F: support/testing/tests/package/test_thttpd.py +F: support/testing/tests/package/test_trace_cmd.py +F: support/testing/tests/package/test_trace_cmd/ +F: support/testing/tests/package/test_usbutils.py +F: support/testing/tests/package/test_usbutils/ +F: support/testing/tests/package/test_vorbis_tools.py +F: support/testing/tests/package/test_weston.py +F: support/testing/tests/package/test_weston/ +F: support/testing/tests/package/test_wine.py +F: support/testing/tests/package/test_xfsprogs.py +F: support/testing/tests/package/test_xfsprogs/ +F: support/testing/tests/package/test_xz.py +F: support/testing/tests/package/test_z3.py +F: support/testing/tests/package/test_z3/ +F: support/testing/tests/package/test_zbar.py +F: support/testing/tests/package/test_zchunk.py +F: support/testing/tests/package/test_zstd.py + +N: Julien Viard de Galbert +F: package/dieharder/ +F: package/easy-rsa/ + +N: Justin Maggard +F: package/dtach/ + +N: Kadambini Nema +F: package/ustreamer/ + +N: Kamel Bouhara +F: package/libodb-boost/ +F: package/libodb-mysql/ +F: package/libqb/ +F: package/usbguard/ + +N: Karoly Kasza +F: package/irqbalance/ +F: package/openvmtools/ + +N: Kelvin Cheung +F: package/cpuload/ +F: package/bwm-ng/ +F: package/ramsmp/ + +N: Kieran Bingham +F: package/libcamera/ + +N: Kilian Zinnecker +F: board/avnet/rzboard_v2l/ +F: board/radxa/rock5b/ +F: configs/avnet_rzboard_v2l_defconfig +F: configs/rock5b_defconfig +F: package/rockchip-rkbin/ + +N: Klaus Heinrich Kiwi +F: package/wqy-zenhei/ + +N: Koen Martens +F: package/capnproto/ +F: package/linuxconsoletools/ + +N: Kory Maincent +F: board/octavo/osd32mp1-brk/ +F: board/octavo/osd32mp1-red/ +F: configs/octavo_osd32mp1_brk_defconfig +F: configs/octavo_osd32mp1_red_defconfig + +N: Kris Bahnsen +F: package/wilc-firmware/ +F: package/wilc-driver/ + +N: Kurt Van Dijck +F: package/bcusdk/ +F: package/libpthsem/ +F: package/nilfs-utils/ + +N: Laurent Cans +F: package/aircrack-ng/ + +N: Laurent Charpentier +F: package/open-lldp/ + +N: Laurent Vivier +F: package/petitboot/ + +N: Lee Jones +F: boot/afboot-stm32/ + +N: Leon Anavi +F: board/olimex/a10_olinuxino +F: configs/olimex_a10_olinuxino_lime_defconfig + +N: Leonid Yuriev +F: package/libmdbx/ + +N: Lionel Flandrin +F: package/python-babel/ +F: package/python-daemonize/ +F: package/python-flask/ +F: package/python-flask-babel/ +F: package/python-gunicorn/ +F: support/testing/tests/package/sample_python_flask.py +F: support/testing/tests/package/test_python_flask.py + +N: Lionel Orry +F: package/mongrel2/ + +N: Lothar Felten +F: board/bananapi/bananapi-m2-ultra/ +F: board/beagleboard/beaglebone/ +F: configs/bananapi_m2_ultra_defconfig +F: configs/beaglebone_defconfig +F: configs/beaglebone_qt5_defconfig +F: package/ti-sgx-demos/ +F: package/ti-sgx-km/ +F: package/ti-sgx-um/ + +N: Louis Aussedat +F: package/mfoc +F: package/libpam-nfc +F: package/python-dnspython/ +F: package/python-future/ +F: package/python-huepy/ +F: package/python-tqdm/ +F: package/rtl8189es/ + +N: Louis-Paul Cordier +F: package/intel-gmmlib/ +F: package/intel-mediadriver/ +F: package/intel-mediasdk/ + +N: Luca Ceresoli +F: board/olimex/a20_olinuxino/ +F: board/zynq/ +F: board/zynqmp/ +F: configs/olimex_a20_olinuxino_* +F: configs/zynq_microzed_defconfig +F: configs/zynq_zed_defconfig +F: configs/zynq_zc706_defconfig +F: configs/zynqmp_zcu106_defconfig +F: package/agentpp/ +F: package/exim/ +F: package/libpjsip/ +F: package/linux-tools/linux-tool-usbtools.mk.in +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: Lubomir Rintel +F: board/olpc/ +F: configs/olpc_xo1_defconfig +F: configs/olpc_xo175_defconfig + +N: Ludovic Desroches +F: board/atmel/ +F: board/microchip/ +F: configs/at91* +F: configs/atmel_* +F: configs/microchip_* +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/wilc-firmware/ + +N: Ludwig Kormann +F: board/in-circuit/ +F: configs/icnova* + +N: Mahyar Koshkouei +F: package/ffmpeg/ +F: package/mpv/ +F: package/rpi-firmware/ +F: package/rpi-userland/ + +N: Marcin Bis +F: package/bluez5_utils/ +F: package/cc-tool/ +F: package/ecryptfs-utils/ + +N: Marcin Niestroj +F: board/grinn/ +F: board/orangepi/orangepi-zero-plus/ +F: board/orangepi/orangepi-zero3/ +F: configs/grinn_* +F: configs/orangepi_zero_plus_defconfig +F: configs/orangepi_zero3_defconfig +F: package/argparse/ +F: package/dt-utils/ +F: package/easydbus/ +F: package/gitlab-runner/ +F: package/lua-flu/ +F: package/lua-stdlib/ +F: package/luaossl/ +F: package/murata-cyw-fw/ +F: package/netdata/ +F: package/python-ansicolors/ +F: package/python-bleak/ +F: package/python-dbus-fast/ +F: package/python-dbus-next/ +F: package/python-iniconfig/ +F: package/python-intelhex/ +F: package/python-packaging/ +F: package/python-pluggy/ +F: package/python-pytest/ +F: package/python-pytest-asyncio/ +F: package/python-typing-extensions/ +F: package/python-xmodem/ +F: package/rs485conf/ +F: package/turbolua/ +F: support/testing/tests/package/sample_python_dbus_fast.py +F: support/testing/tests/package/sample_python_dbus_next.py +F: support/testing/tests/package/sample_python_pytest.py +F: support/testing/tests/package/sample_python_pytest_asyncio.py +F: support/testing/tests/package/test_netdata.py +F: support/testing/tests/package/test_python_dbus_next.py +F: support/testing/tests/package/test_python_pytest.py +F: support/testing/tests/package/test_python_pytest_asyncio.py + +N: Marcus Folkesson +F: package/criu/ +F: package/libcamera/ +F: package/libcamera-apps/ +F: package/libostree/ +F: package/libselinux/ +F: package/libsemanage/ +F: package/libsepol/ +F: package/selinux-python/ +F: support/testing/tests/package/sample_python_asn1crypto.py +F: support/testing/tests/package/test_python_asn1crypto.py +F: utils/config +F: utils/diffconfig + +N: Marcus Hoffmann +F: package/nethogs/ +F: package/pico-sdk/ +F: package/picotool/ +F: package/python-jc/ +F: package/python-ruamel-yaml-clib/ +F: support/testing/tests/package/test_python_fastapi.py +F: support/testing/tests/package/test_python_ruamel_yaml.py +F: support/testing/tests/package/sample_python_fastapi.py +F: support/testing/tests/package/sample_python_ruamel_yaml.py + +N: Marek Belisko +F: package/libatasmart/ +F: package/polkit/ +F: package/sg3_utils/ +F: package/udisks/ + +N: Mario Lang +F: package/brltty/ +F: package/lynx/ + +N: Mario Rugiero +F: package/ratpoison/ + +N: Mark Corbin +F: arch/arch.mk.riscv +F: arch/Config.in.riscv +F: board/qemu/riscv32-virt/ +F: board/qemu/riscv64-virt/ +F: configs/qemu_riscv32_virt_defconfig +F: configs/qemu_riscv64_virt_defconfig + +N: Marleen Vos +F: board/stmicroelectronics/common/stm32mp157/ +F: configs/avenger96_defconfig +F: configs/stm32mp157a_dk1_defconfig +F: configs/stm32mp157c_dk2_defconfig + +N: Martin Bark +F: board/raspberrypi/ +F: configs/raspberrypi3_defconfig +F: package/brcmfmac_sdio-firmware-rpi/ +F: package/ca-certificates/ +F: package/connman/ +F: package/nodejs/ +F: package/rpi-firmware/ +F: package/tzdata/ +F: package/zic/ + +N: Martin Hundebøll +F: package/python-apispec/ +F: package/python-flask-smorest/ +F: package/python-marshmallow/ +F: package/python-marshmallow-sqlalchemy/ +F: package/python-webargs/ + +N: Martin Kepplinger +F: package/tslib/ +F: package/x11r7/xdriver_xf86-input-tslib/ +F: package/x11vnc/ + +N: Martin Povišer +F: package/python-construct/ +F: support/testing/tests/package/sample_python_construct.py +F: support/testing/tests/package/test_python_construct.py + +N: Masahiro Yamada +F: board/arm/foundation-v8/ +F: configs/arm_foundationv8_defconfig + +N: Matt Flax +F: package/gtkiostream/ + +N: Matt Silva +F: package/rlwrap/ + +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-lmdb/ +F: package/python-mistune/ +F: package/python-netaddr/ +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: Maksim Kiselev +F: package/ledmon/ + +N: Max Filippov +F: arch/Config.in.xtensa + +N: Maxim Kochetkov +F: package/libgeos/ +F: package/libosmium/ +F: package/osm2pgsql/ +F: package/postgis/ +F: package/postgresql/ +F: package/protozero/ +F: package/timescaledb/ + +N: Maxime Chevallier +F: package/libtraceevent/ +F: package/libtracefs +F: package/linux-tools/linux-tool-rtla.mk.in + +N: Michael Durrant +F: board/arcturus/ +F: configs/arcturus_ucp1020_defconfig +F: configs/arcturus_ucls1012a_defconfig + +N: Michael Fischer +F: package/gnuplot/ +F: package/sdl2/ + +N: Michael Nosthoff +F: package/boost/ +F: package/catch2/ +F: package/fmt/ +F: package/grpc/ +F: package/gtest/ +F: package/json-for-modern-cpp/ +F: package/libabseil-cpp/ +F: package/networkd-dispatcher/ +F: package/protobuf/ +F: package/re2/ +F: package/spdlog/ +F: package/sqlitecpp/ + +N: Michael Trimarchi +F: board/bsh/ +F: configs/imx6ulz_bsh_smm_m2_defconfig +F: configs/imx8mn_bsh_smm_s2_defconfig +F: configs/imx8mn_bsh_smm_s2_pro_defconfig +F: package/python-spidev/ + +N: Michael Vetter +F: package/jasper/ +F: package/libstrophe/ + +N: Michael Walle +F: board/kontron/smarc-sal28/ +F: configs/kontron_smarc_sal28_defconfig +F: package/libavl/ +F: package/rcw-smarc-sal28/ + +N: Michał Łyszczek +F: board/altera/socrates_cyclone5/ +F: board/pine64/rock64 +F: configs/rock64_defconfig +F: configs/socrates_cyclone5_defconfig +F: package/netifrc/ +F: package/openrc/ +F: package/skeleton-init-openrc/ + +N: Michel Stempin +F: board/sipeed/licheepi_zero/ +F: configs/sipeed_licheepi_zero_defconfig + +N: Mika Westerberg +F: package/tbtools/ + +N: Mike Frampton +F: package/qcom-db410c-firmware/ + +N: Mikhail Boiko +F: package/libfribidi/ + +N: Mircea Gliga +F: package/mbuffer/ + +N: Murat Demirten +F: package/jpeg-turbo/ +F: package/libgeotiff/ + +N: Nasser Afshin +F: package/python-pycrate/ + +N: Nathaniel Roach +F: package/bandwidthd/ +F: package/libgudev/ + +N: Neal Frager +F: board/versal/ +F: board/xilinx/ +F: board/zynq/ +F: board/zynqmp/ +F: boot/xilinx-prebuilt/ +F: configs/versal_vck190_defconfig +F: configs/versal_vpk180_defconfig +F: configs/zynq_zc702_defconfig +F: configs/zynq_zc706_defconfig +F: configs/zynqmp_kria_kd240_defconfig +F: configs/zynqmp_kria_kr260_defconfig +F: configs/zynqmp_kria_kv260_defconfig +F: configs/zynqmp_zcu102_defconfig +F: configs/zynqmp_zcu104_defconfig +F: configs/zynqmp_zcu106_defconfig +F: package/binutils-bare-metal/ +F: package/bootgen/ +F: package/gcc-bare-metal/ +F: package/newlib-bare-metal/ +F: toolchain/toolchain-bare-metal-buildroot/ + +N: Nicola Di Lieto +F: package/uacme/ + +N: Nicholas Sielicki +F: board/intel/galileo/ +F: configs/galileo_defconfig + +N: Nicolas Carrier +F: package/bmap-tools/ +F: package/composer/ +F: package/libdbi/ +F: package/libdbi-drivers/ +F: package/lua-augeas/ +F: package/modsecurity2/ +F: package/php-apcu/ +F: package/php-lua/ +F: package/php-pam/ +F: package/php-pecl-dbus/ +F: package/php-xdebug/ +F: package/python-augeas/ +F: package/python-flask-expects-json/ +F: package/python-git/ +F: package/python-unittest-xml-reporting/ +F: support/testing/tests/package/sample_bmap_tools.sh +F: support/testing/tests/package/sample_python_augeas.py +F: support/testing/tests/package/sample_python_flask_expects_json.py +F: support/testing/tests/package/sample_python_git.py +F: support/testing/tests/package/sample_python_unittest_xml_reporting.py +F: support/testing/tests/package/test_bmap_tools.py +F: support/testing/tests/package/test_lua_augeas.py +F: support/testing/tests/package/test_php_apcu.py +F: support/testing/tests/package/test_php_pecl_dbus.py +F: support/testing/tests/package/test_php_lua.py +F: support/testing/tests/package/test_php_pam.py +F: support/testing/tests/package/test_python_augeas.py +F: support/testing/tests/package/test_python_flask_expects_json.py +F: support/testing/tests/package/test_python_git.py +F: support/testing/tests/package/test_python_unittest_xml_reporting.py + +N: Nicolas Cavallari +F: package/libgit2/ + +N: Nicolas Serafini +F: package/exiv2/ +F: package/ofono/ + +N: Niklas Cassel +F: configs/qemu_riscv64_nommu_virt_defconfig + +N: Nikolay Dimitrov +F: board/embest/riotboard/ +F: configs/riotboard_defconfig + +N: Nimai Mahajan +F: package/libucl/ + +N: Noé Rubinstein +F: package/tpm-tools/ +F: package/trousers/ + +N: Norbert Lange +F: package/dbus-broker/ +F: package/systemd/ +F: package/tcf-agent/ + +N: Yu Chien Peter Lin +F: board/andes +F: configs/andes_ae350_45_defconfig +F: package/kmon/ + +N: Olaf Rempel +F: package/ctorrent/ + +N: Oleksandr Zhadan +F: board/arcturus/ +F: configs/arcturus_ucp1020_defconfig +F: configs/arcturus_ucls1012a_defconfig + +N: Oli Vogt +F: package/python-django/ +F: package/python-flup/ + +N: Olivier Matz +F: package/python-pyelftools/ + +N: Olivier Schonken +F: package/cups/ +F: package/cups-filters/ +F: package/ijs/ +F: package/poppler/ +F: package/qpdf/ +F: package/openjpeg/ + +N: Olivier Singla +F: package/shellinabox/ + +N: Parnell Springmeyer +F: package/scrypt/ + +N: Pascal de Bruijn +F: package/libargon2/ +F: package/linux-tools/S10hyperv +F: package/linux-tools/hyperv*.service +F: package/linux-tools/linux-tool-hv.mk.in + +N: Pascal Huerst +F: package/google-breakpad/ + +N: Patrick Gerber +F: package/yavta/ + +N: Patrick Havelange +F: support/testing/tests/package/test_lxc.py +F: support/testing/tests/package/test_lxc/ + +N: Patrick Oppenlander +F: package/minisign/ + +N: Paul Cercueil +F: package/libiio/ +F: package/lightning/ +F: package/umtprd/ + +N: Pedro Aguilar +F: package/bdwgc/ +F: package/guile/ +F: package/libunistring/ + +N: Peter Korsgaard +F: board/arrow/avenger96/ +F: board/beagleboard/beagleboneai/ +F: board/minnowboard/ +F: board/nezha/ +F: board/librecomputer/lafrite/ +F: board/nexbox/a95x/ +F: board/openblocks/a6/ +F: board/orangepi/ +F: board/roseapplepi/ +F: board/visionfive/ +F: boot/shim/ +F: configs/avenger96_defconfig +F: configs/beagleboneai_defconfig +F: configs/lafrite_defconfig +F: configs/minnowboard_max_defconfig +F: configs/nexbox_a95x_defconfig +F: configs/nezha_defconfig +F: configs/openblocks_a6_defconfig +F: configs/orangepi_pc_defconfig +F: configs/orangepi_r1_defconfig +F: configs/roseapplepi_defconfig +F: configs/sheevaplug_defconfig +F: configs/visionfive_defconfig +F: package/bats-core/ +F: package/dfu-programmer/ +F: package/docker-compose/ +F: package/dump1090/ +F: package/fatcat/ +F: package/fscryptctl/ +F: package/ifmetric/ +F: package/jo/ +F: package/jose/ +F: package/libfastjson/ +F: package/luksmeta/ +F: package/lzop/ +F: package/memtool/ +F: package/mosquitto/ +F: package/python-alsaaudio/ +F: package/python-cached-property/ +F: package/python-docker/ +F: package/python-dockerpty/ +F: package/python-docker-pycreds/ +F: package/python-hid/ +F: package/python-psutil/ +F: package/python-request-id/ +F: package/python-semver/ +F: package/python-texttable/ +F: package/python-validators/ +F: package/python-webob/ +F: package/python-websocket-client/ +F: package/sedutil/ +F: package/tpm2-totp/ +F: package/triggerhappy/ +F: package/wireguard-linux-compat/ +F: package/wireguard-tools/ +F: support/testing/tests/package/test_docker_compose.py +F: support/testing/tests/package/test_python_hid.py + +N: Peter Seiderer +F: package/dotconf/ +F: package/fft-eval/ +F: package/python-blinker/ +F: package/qt5/qt5speech/ +F: package/speechd/ + +N: Peter Thompson +F: package/sdl2_gfx/ +F: package/sdl2_image/ +F: package/sdl2_ttf/ + +N: Petr Kulhavy +F: package/linuxptp/ + +N: Petr Vorel +F: package/ima-evm-utils/ +F: package/iproute2/ +F: package/iputils/ +F: package/libqrtr-glib/ +F: package/libtirpc/ +F: package/linux-backports/ +F: package/ltp-testsuite/ +F: package/nfs-utils/ +F: package/rpcbind/ +F: support/kconfig/ + +N: Phil Eichinger +F: package/libqrencode/ +F: package/psplash/ +F: package/sispmctl/ +F: package/zsh/ + +N: Philipp Richter +F: package/libtorrent-rasterbar/ + +N: Philippe Proulx +F: package/babeltrace2/ +F: package/lttng-babeltrace/ +F: package/lttng-libust/ +F: package/lttng-modules/ +F: package/lttng-tools/ +F: package/python-ipython/ +F: package/liburcu/ + +N: Philippe Reynes +F: package/ibm-sw-tpm2/ + +N: Pierre Crokaert +F: board/hardkernel/odroidxu4/ +F: configs/odroidxu4_defconfig + +N: Pierre Ducroquet +F: package/kf5/ + +N: Pierre Floury +F: package/trace-cmd/ + +N: Pierre-Jean Texier +F: package/fping/ +F: package/genimage/ +F: package/haveged/ +F: package/ipset/ +F: package/libarchive/ +F: package/libevent/ +F: package/libubootenv/ +F: package/libxml2/ +F: package/mongoose/ +F: package/mxml/ +F: package/numactl/ +F: package/python-modbus-tk/ +F: package/python-periphery/ +F: package/raspi-gpio/ +F: package/sbc/ +F: package/stunnel/ +F: package/tree/ + +N: Pieter De Gendt +F: package/libvips/ + +N: Pieterjan Camerlynck +F: package/libdvbpsi/ +F: package/mraa/ +F: package/synergy/ + +N: Prabhu Sannachi +F: package/redis-plus-plus/ + +N: Qais Yousef +F: package/bpftrace/ + +N: Rafal Susz +F: board/avnet/s6lx9_microboard/ +F: configs/s6lx9_microboard_defconfig + +N: Rafał Miłecki +F: board/broadcom/northstar/ +F: configs/broadcom_northstar_defconfig +F: package/firmware-utils/ + +N: Rahul Bedarkar +F: package/cxxtest/ +F: package/gflags/ +F: package/glog/ +F: package/gssdp/ +F: package/gupnp/ +F: package/gupnp-av/ +F: package/let-me-create/ +F: package/nanomsg/ + +N: Ramon Fried +F: package/bitwise/ + +N: Raphaël Mélotte +F: package/gumbo-parser/ +F: package/jbig2dec/ +F: package/mupdf/ +F: package/python-boto3/ +F: package/python-botocore/ +F: package/python-jmespath/ +F: package/python-pymupdf/ +F: package/python-rsa/ +F: package/python-s3transfer/ +F: support/testing/tests/package/sample_python_jmespath.py +F: support/testing/tests/package/sample_python_pymupdf.py +F: support/testing/tests/package/sample_python_rsa.py +F: support/testing/tests/package/sample_python_s3transfer.py +F: support/testing/tests/package/test_python_jmespath.py +F: support/testing/tests/package/test_python_pymupdf.py +F: support/testing/tests/package/test_python_rsa.py +F: support/testing/tests/package/test_python_s3transfer.py + +N: Raphael Pavlidis +F: package/nvidia-persistenced/ +F: package/shadow/ +F: package/slirp4netns/ +F: package/sway/ +F: package/x11r7/xwayland/ + +N: Refik Tuzakli +F: package/freescale-imx/ +F: package/paho-mqtt-cpp/ + +N: Rémi Rérolle +F: package/libfreeimage/ + +N: Renaud Aubin +F: package/libhttpparser/ + +N: Ricardo Martincoski +F: .flake8 +F: .shellcheckrc +F: package/atop/ +F: package/thermald/ +F: support/testing/infra/ +F: support/testing/run-tests +F: support/testing/tests/package/test_atop.py +F: support/testing/tests/utils/test_check_package.py +F: utils/check-package +F: utils/check-symbols +F: utils/checkpackagelib/ +F: utils/checksymbolslib/ +F: utils/docker-run + +N: Richard Braun +F: package/curlftpfs/ +F: package/tzdata/ + +N: RJ Ascani +F: package/azmq/ + +N: Robert Marko +F: package/mdio-tools/ +F: package/mhz/ + +N: Robert Rose +F: package/grpc/ + +N: Roberto Medina +F: board/firefly/roc-rk3399-pc/ +F: configs/roc_pc_rk3399_defconfig + +N: Rodrigo Rebello +F: package/chocolate-doom/ +F: package/irssi/ +F: package/vnstat/ + +N: Romain Naour +F: board/beagleboard/beagleboneai64/ +F: board/qemu/ +F: board/ti/am574x-idk/ +F: configs/qemu_* +F: configs/am574x_idk_defconfig +F: configs/beagleboneai64_defconfig +F: package/alure/ +F: package/aubio/ +F: package/bcc/ +F: package/binutils/ +F: package/bpftrace/ +F: package/bullet/ +F: package/clinfo/ +F: package/efl/ +F: package/enet/ +F: package/enlightenment/ +F: package/flare-engine/ +F: package/flare-game/ +F: package/gcc/ +F: package/gitlab-runner/ +F: package/glibc/ +F: package/irrlicht/ +F: package/liblinear/ +F: package/lensfun/ +F: package/libbpf/ +F: package/libgta/ +F: package/libiec61850/ +F: package/libspatialindex/ +F: package/linux-syscall-support/ +F: package/llvm-project/clang/ +F: package/llvm-project/libclc/ +F: package/llvm-project/llvm/ +F: package/lugaru/ +F: package/mcelog/ +F: package/mesa3d/ +F: package/minetest/ +F: package/minetest-game/ +F: package/ogre/ +F: package/openpowerlink/ +F: package/physfs/ +F: package/piglit/ +F: package/python-libevdev/ +F: package/python-pkgconfig/ +F: package/python-tpm2-pytss/ +F: package/qemu/ +F: package/solarus/ +F: package/stress-ng/ +F: package/supertux/ +F: package/supertuxkart/ +F: package/terminology/ +F: package/tk/ +F: package/tpm2-openssl/ +F: package/upower/ +F: package/waffle/ +F: package/xenomai/ +F: package/zziplib/ +F: support/testing/tests/package/sample_python_mako.py +F: support/testing/tests/package/sample_python_mako_ext.py +F: support/testing/tests/package/test_glxinfo.py +F: support/testing/tests/package/test_openssh.py +F: support/testing/tests/package/test_python_mako.py +F: toolchain/ + +N: Roy Kollen Svendsen +F: package/qt6/ + +N: Rufus Segar +F: package/agent-proxy/ + +N: Ryan Wilkins +F: package/biosdevname/ + +N: Saeed Kazemi +F: package/eza/ +F: package/fd/ +F: package/parsec-tool/ +F: package/procs/ +F: package/mxt-app/ +F: package/zoxide/ + +N: Sam Lancia +F: package/lrzip/ + +N: Samuel Martin +F: package/armadillo/ +F: package/cwiid/ +F: package/flite/ +F: package/nginx/ +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: Sam Voss +F: package/ripgrep/ + +N: Sébastien Szymanski +F: board/armadeus/ +F: configs/armadeus* +F: package/mmc-utils/ +F: package/python-flask-jsonrpc/ +F: package/python-flask-login/ +F: package/qt5/qt5charts/ + +N: Semyon Kolganov +F: package/fmt/ +F: package/libbson/ +F: package/lua-resty-http/ +F: package/mpir/ + +N: Sen Hastings +F: package/systemd +F: support/scripts/pkg-stats + +N: Sergey Bobrenok +F: package/basu/ +F: package/sdbus-cpp/ + +N: Sergey Matyukevich +F: boot/arm-trusted-firmware/ +F: board/linksprite/pcduino +F: board/orangepi/orangepi-zero +F: board/orangepi/orangepi-one +F: board/orangepi/orangepi-pc-plus/ +F: board/orangepi/orangepi-zero-plus2/ +F: board/orangepi/orangepi-zero2w/ +F: configs/linksprite_pcduino_defconfig +F: configs/orangepi_one_defconfig +F: configs/orangepi_pc_plus_defconfig +F: configs/orangepi_zero_defconfig +F: configs/orangepi_zero_plus2_defconfig +F: configs/orangepi_zero2w_defconfig +F: package/armbian-firmware/ +F: package/hostapd/ +F: package/rtl8189fs/ +F: package/wpa_supplicant/ +F: package/xr819-xradio/ + +N: Sergio Prado +F: board/toradex/apalis-imx6/ +F: configs/toradex_apalis_imx6_defconfig +F: package/aoetools/ +F: package/asn1c/ +F: package/azure-iot-sdk-c/ +F: package/curlpp/ +F: package/daq/ +F: package/libgdiplus/ +F: package/pimd/ +F: package/sloci-image/ +F: package/snort/ +F: package/stella/ +F: package/tio/ +F: package/traceroute/ +F: package/tunctl/ +F: package/ubus/ +F: package/wolfssl/ + +N: Simon Dawson +F: boot/at91bootstrap3/ +F: package/cppzmq/ +F: package/czmq/ +F: package/filemq/ +F: package/googlefontdirectory/ +F: package/jansson/ +F: package/jquery-ui/ +F: package/jquery-ui-themes/ +F: package/json-javascript/ +F: package/lcdapi/ +F: package/libfreefare/ +F: package/libjson/ +F: package/libnfc/ +F: package/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/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: Simon Doppler +F: board/seeed/ +F: configs/stm32mp157c_odyssey_defconfig + +N: Spenser Gilliland +F: arch/Config.in.microblaze +F: package/a10disp/ +F: package/glmark2/ +F: package/libvpx/ +F: package/mesa3d-demos/ +F: package/ti-gfx/ + +N: Stefan Nickl +F: board/freescale/imx8dxlevk/ +F: configs/freescale_imx8dxlevk_defconfig + +N: Stefan Ott +F: package/unbound/ + +N: Stefan Sørensen +F: package/cracklib/ +F: package/libpwquality/ +F: package/libscrypt/ + +N: Stephan Hoffmann +F: package/cache-calibrator/ +F: package/gtest/ +F: package/libhttpserver/ +F: package/mtdev/ + +N: Stephane Viau +F: board/freescale/imx8mnevk/ +F: board/freescale/imx8mpevk/ +F: configs/freescale_imx8mnevk_defconfig +F: configs/freescale_imx8mpevk_defconfig + +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/udftools/ +F: package/xorriso/ + +N: Steven Noonan +F: package/hwloc/ +F: package/powertop/ + +N: Suniel Mahesh +F: board/pine64/rockpro64 +F: board/radxa/rockpi-n8 +F: configs/rock_pi_n8_defconfig +F: configs/rockpro64_defconfig +F: package/arm-gnu-toolchain/ + +N: Sven Oliver Moll +F: package/most/ + +N: TIAN Yuanhao +F: package/cli11/ +F: package/libsolv/ +F: package/open-iscsi/ +F: package/open-isns/ +F: package/reproc/ +F: package/termcolor/ +F: package/tl-expected/ + +N: Takumi Takahashi +F: package/gsettings-desktop-schemas/ +F: package/libcanberra/ + +N: Tan En De +F: package/libkcapi/ + +N: Theo Debrouwere +F: package/pugixml/ + +N: Thierry Bultel +F: package/dracut/ +F: package/mpd-mpc/ + +N: Thijs Vermeir +F: package/ranger/ +F: package/x265/ + +N: Thomas Bonnefille +F: board/pine64/star64 +F: configs/pine64_star64_defconfig +F: package/starfive-spltool/ + +N: Thomas Claveirole +F: package/fcgiwrap/ +F: package/openlayers/ +F: package/vuejs/ +F: package/vuejs-router/ + +N: Thomas Devoogdt +F: package/fluent-bit/ +F: package/libsoup3/ + +N: Thomas Huth +F: package/ascii-invaders/ +F: package/kvm-unit-tests/ +F: package/xorcurses/ + +N: Thomas Perale +F: package/go/ + +N: Thomas Petazzoni +F: arch/Config.in.arm +F: board/stmicroelectronics/stm32mp157c-dk2/ +F: boot/boot-wrapper-aarch64/ +F: boot/grub2/ +F: configs/stm32mp157c_dk2_defconfig +F: package/android-tools/ +F: package/b43-firmware/ +F: package/b43-fwcutter/ +F: package/bmap-tools/ +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/double-conversion/ +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/jh71xx-tools/ +F: package/libb2/ +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/musl-fts/ +F: package/ne10/ +F: package/nodejs/ +F: package/pkg-python.mk +F: package/pkg-autotools.mk +F: package/pkg-generic.mk +F: package/python3/ +F: package/python-augeas/ +F: package/python-flask-expects-json/ +F: package/python-git/ +F: package/python-qrcode/ +F: package/python-serial/ +F: package/python-unittest-xml-reporting/ +F: package/qextserialport/ +F: package/qt6/ +F: package/riscv64-elf-toolchain/ +F: package/rpcbind/ +F: package/rt-tests/ +F: package/rtc-tools/ +F: package/sam-ba/ +F: package/scons/ +F: package/squashfs/ +F: package/tinifier/ +F: package/wayland/ +F: package/weston/ +F: support/testing/tests/boot/test_grub.py +F: support/testing/tests/boot/test_grub/ +F: support/testing/tests/boot/test_syslinux.py +F: support/testing/tests/package/sample_nodejs_basic.js +F: support/testing/tests/package/sample_nodejs_module.js +F: support/testing/tests/package/sample_python_augeas.py +F: support/testing/tests/package/sample_python_flask.py +F: support/testing/tests/package/sample_python_flask_expects_json.py +F: support/testing/tests/package/sample_python_git.py +F: support/testing/tests/package/sample_python_unittest_xml_reporting.py +F: support/testing/tests/package/test_nodejs.py +F: support/testing/tests/package/test_python_augeas.py +F: support/testing/tests/package/test_python_flask.py +F: support/testing/tests/package/test_python_flask_expects_json.py +F: support/testing/tests/package/test_python_git.py +F: support/testing/tests/package/test_python_unittest_xml_reporting.py +F: toolchain/ + +N: Timo Ketola +F: package/fbgrab/ + +N: Titouan Christophe +F: package/avro-c/ +F: package/mosquitto/ +F: package/python-avro/ +F: package/redis/ +F: package/waf/ +F: support/testing/tests/package/test_crudini.py +F: support/testing/tests/package/test_redis.py + +N: Tobias Waldekranz +F: package/kmemd/ + +N: Torben Voltmer +F: package/espflash/ + +N: Tudor Holton +F: package/openjdk/ + +N: Tzu-Jung Lee +F: package/dropwatch/ +F: package/tstools/ + +N: Uladzimir Bely +F: package/python-mpd2/ + +N: Vadim Kochan +F: package/brcm-patchram-plus/ +F: package/frr/ +F: package/gettext-tiny/ +F: package/tinyssh/ + +N: Valentin Korenblit +F: package/clinfo/ +F: package/llvm-project/clang/ +F: package/llvm-project/libclc/ +F: package/llvm-project/llvm/ + +N: Vanya Sergeev +F: package/lua-periphery/ + +N: Viacheslav Bocharov +F: package/rtl8822cs/ + +N: Victor Huesca +F: support/testing/tests/core/test_root_password.py + +N: Vincent Prince +F: package/nss-myhostname/ +F: package/utp_com/ + +N: Vincent Stehlé +F: board/arm/fvp-ebbr/ +F: board/qemu/aarch64-ebbr/ +F: board/qemu/arm-ebbr/ +F: configs/arm_fvp_ebbr_defconfig +F: configs/qemu_aarch64_ebbr_defconfig +F: configs/qemu_arm_ebbr_defconfig +F: package/edk2-non-osi/ + +N: Vincent Stehlé +F: board/bananapi/bananapi-m2-zero/ +F: configs/bananapi_m2_zero_defconfig +F: configs/uevm5432_defconfig +F: package/i7z/ +F: package/msr-tools/ +F: package/pixz/ +F: package/zerofree/ +F: support/testing/tests/package/test_msr_tools* +F: support/testing/tests/package/test_pixz.py +F: support/testing/tests/package/test_zerofree.py + +N: Vinicius Tinti +F: package/python-thrift/ + +N: Vivien Didelot +F: board/technologic/ts5500/ +F: configs/ts5500_defconfig + +N: Volkov Viacheslav +F: package/v4l2grab/ +F: package/zbar/ + +N: Wade Berrier +F: package/ngrep/ + +N: Waldemar Brodkorb +F: board/qemu/riscv32-virt/ +F: configs/qemu_riscv32_nommu_virt_defconfig +F: package/asterisk/ +F: package/libjwt/ +F: package/mksh/ +F: package/ruby/ +F: package/uclibc/ +F: package/uclibc-ng-test/ +F: support/testing/tests/package/test_ruby.py + +N: Will Newton +F: package/enchant/ +F: package/erlang/ +F: package/libmicrohttpd/ +F: package/time/ + +N: Will Wagner +F: package/yaffs2utils/ + +N: Witold Lipieta +F: package/python-segno/ +F: support/testing/tests/package/sample_python_segno.py +F: support/testing/tests/package/test_python_segno.py + +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: Woodrow Douglass +F: package/chicken +F: package/opencv4 +F: package/opencv4-contrib + +N: Xuanhao Shi +F: board/ti/am62x-sk/ +F: board/ti/am64x-sk/ +F: boot/ti-k3-boot-firmware/ +F: boot/ti-k3-r5-loader/ +F: configs/ti_am62x_sk_defconfig +F: configs/ti_am64x_sk_defconfig + +N: Yair Ben Avraham +F: package/casync/ +F: package/gloox/ +F: package/tpm2-pkcs11/ + +N: Yann E. MORIN +F: fs/squashfs/ +F: package/asterisk/ +F: package/cegui/ +F: package/dahdi-linux/ +F: package/dahdi-tools/ +F: package/dbus-broker/ +F: package/dtc/ +F: package/dtv-scan-tables/ +F: package/freerdp/ +F: package/keyutils/ +F: package/libbsd/ +F: package/libedit/ +F: package/libgsm/ +F: package/libiberty/ +F: package/libinput/ +F: package/libiscsi/ +F: package/libpri/ +F: package/libseccomp/ +F: package/libss7/ +F: package/linux-firmware/ +F: package/linux-tools/ +F: package/matchbox* +F: package/mesa3d-headers/ +F: package/nbd/ +F: package/nut/ +F: package/nvidia-driver/ +F: package/python-pyparsing/ +F: package/pkg-download.mk +F: package/pkg-waf.mk +F: package/slirp/ +F: package/snappy/ +F: package/spice/ +F: package/spice-protocol/ +F: package/systemd/ +F: package/systemd-bootchart/ +F: package/tmux/ +F: package/tvheadend/ +F: package/usbredir/ +F: package/vde2/ +F: package/w_scan/ +F: package/wayland/ +F: package/weston/ +F: package/wtfutil/ +F: package/zisofs-tools/ +F: support/download/ +F: support/testing/tests/graphics_base.py + +N: Yann E. MORIN +F: .editorconfig +F: package/gpsd/ +F: package/skopeo/ + +N: Yegor Yefremov +F: configs/beaglebone_defconfig +F: configs/beaglebone_qt5_defconfig +F: package/acl/ +F: package/attr/ +F: package/avrdude/ +F: package/boost/ +F: package/bootstrap/ +F: package/cannelloni/ +F: package/can-utils/ +F: package/circus/ +F: package/dhcpcd/ +F: package/feh/ +F: package/giblib/ +F: package/hostapd/ +F: package/imlib2/ +F: package/jquery-datetimepicker/ +F: package/jquery-sidebar/ +F: package/kmod/ +F: package/libftdi1/ +F: package/libical/ +F: package/libmbim/ +F: package/libndp/ +F: package/libnftnl/ +F: package/libqmi/ +F: package/libqrtr-glib/ +F: package/libsoc/ +F: package/libsocketcan/ +F: package/libubox/ +F: package/libuci/ +F: package/libxmlb/ +F: package/linux-firmware/ +F: package/linux-serial-test/ +F: package/modem-manager/ +F: package/ncftp/ +F: package/nftables/ +F: package/nuttcp/ +F: package/parted/ +F: package/phytool/ +F: package/poco/ +F: package/python* +F: package/ser2net/ +F: package/socketcand/ +F: package/swig/ +F: package/qt5/qt5serialbus/ +F: package/sdparm/ +F: package/ti-utils/ +F: package/wpa_supplicant/ +F: package/x11r7/xapp_xconsole/ +F: package/x11r7/xapp_xinput-calibrator/ +F: package/zlog/ +F: support/testing/tests/package/sample_python_dicttoxml2.py +F: support/testing/tests/package/sample_python_dtschema.py +F: support/testing/tests/package/sample_python_munch.py +F: support/testing/tests/package/sample_python_pysmb.py +F: support/testing/tests/package/test_libftdi1.py +F: support/testing/tests/package/test_python_can.py +F: support/testing/tests/package/test_python_dicttoxml2.py +F: support/testing/tests/package/test_python_dtschema.py +F: support/testing/tests/package/test_python_munch.py +F: support/testing/tests/package/test_python_pysmb.py +F: utils/scanpypi + +N: Yunhao Tian +F: package/libopenaptx/ + +N: Zoltan Gyarmati +F: package/crudini/ +F: package/grantlee/ +F: package/libusb/ +F: package/libusb-compat/ +F: package/proj/ +F: package/python-iniparse/ +F: package/qjson/ +F: package/qt6/qt6core5compat/ +F: package/quazip/ +F: package/shapelib/ +F: package/simple-mail/ +F: package/tinc/ diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..43730c02 --- /dev/null +++ b/Makefile @@ -0,0 +1,1279 @@ +# Makefile for buildroot +# +# Copyright (C) the Buildroot developers +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +#-------------------------------------------------------------- +# Just run 'make menuconfig', configure stuff, then run 'make'. +# You shouldn't need to mess with anything beyond this point... +#-------------------------------------------------------------- + +# Delete default rules. We don't use them. This saves a bit of time. +.SUFFIXES: + +# we want bash as shell +SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ + else if [ -x /bin/bash ]; then echo /bin/bash; \ + else echo sh; fi; fi) + +# Set O variable if not already done on the command line; +# or avoid confusing packages that can use the O= syntax for out-of-tree +# build by preventing it from being forwarded to sub-make calls. +ifneq ("$(origin O)", "command line") +O := $(CURDIR)/output +endif + +# Check if the current Buildroot execution meets all the pre-requisites. +# If they are not met, Buildroot will actually do its job in a sub-make meeting +# its pre-requisites, which are: +# 1- Permissive enough umask: +# Wrong or too restrictive umask will prevent Buildroot and packages from +# creating files and directories. +# 2- Absolute canonical CWD (i.e. $(CURDIR)): +# Otherwise, some packages will use CWD as-is, others will compute its +# absolute canonical path. This makes harder tracking and fixing host +# machine path leaks. +# 3- Absolute canonical output location (i.e. $(O)): +# For the same reason as the one for CWD. + +# Remove the trailing '/.' from $(O) as it can be added by the makefile wrapper +# installed in the $(O) directory. +# Also remove the trailing '/' the user can set when on the command line. +override O := $(patsubst %/,%,$(patsubst %.,%,$(O))) +# Make sure $(O) actually exists before calling realpath on it; this is to +# avoid empty CANONICAL_O in case on non-existing entry. +CANONICAL_O := $(shell mkdir -p $(O) >/dev/null 2>&1)$(realpath $(O)) + +# gcc fails to build when the srcdir contains a '@' +ifneq ($(findstring @,$(CANONICAL_O)),) +$(error The build directory can not contain a '@') +endif + +CANONICAL_CURDIR = $(realpath $(CURDIR)) + +REQ_UMASK = 0022 +CUR_UMASK := $(shell umask) + +# 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 ($(CUR_UMASK):$(CURDIR):$(O),$(REQ_UMASK):$(CANONICAL_CURDIR):$(CANONICAL_O)) +.PHONY: _all $(MAKECMDGOALS) + +$(MAKECMDGOALS): _all + @: + +_all: + @umask $(REQ_UMASK) && \ + $(MAKE) -C $(CANONICAL_CURDIR) --no-print-directory \ + BR_ORIG_UMASK=$(CUR_UMASK) \ + $(MAKECMDGOALS) $(EXTRAMAKEARGS) + +else # umask / $(CURDIR) / $(O) + +# This is our default rule, so must come first +all: +.PHONY: all + +# Set and export the version string +export BR2_VERSION := 2024.08 +# Actual time the release is cut (for reproducible builds) +BR2_VERSION_EPOCH = 1725627000 + +# Save running make version since it's clobbered by the make package +RUNNING_MAKE_VERSION := $(MAKE_VERSION) + +# Check for minimal make version (note: this check will break at make 10.x) +MIN_MAKE_VERSION = 3.81 +ifneq ($(firstword $(sort $(RUNNING_MAKE_VERSION) $(MIN_MAKE_VERSION))),$(MIN_MAKE_VERSION)) +$(error You have make '$(RUNNING_MAKE_VERSION)' installed. GNU make >= $(MIN_MAKE_VERSION) is required) +endif + +# absolute path +TOPDIR := $(CURDIR) +CONFIG_CONFIG_IN = Config.in +CONFIG = support/kconfig +DATE := $(shell date +%Y%m%d) + +# Compute the full local version string so packages can use it as-is +# Need to export it, so it can be got from environment in children (eg. mconf) + +BR2_LOCALVERSION := $(shell $(TOPDIR)/support/scripts/setlocalversion) +ifeq ($(BR2_LOCALVERSION),) +export BR2_VERSION_FULL := $(BR2_VERSION) +else +export BR2_VERSION_FULL := $(BR2_LOCALVERSION) +endif + +# List of targets and target patterns for which .config doesn't need to be read in +noconfig_targets := menuconfig nconfig gconfig xconfig config oldconfig randconfig \ + defconfig %_defconfig allyesconfig allnoconfig alldefconfig syncconfig release \ + randpackageconfig allyespackageconfig allnopackageconfig \ + print-version olddefconfig distclean manual manual-% check-package + +# Some global targets do not trigger a build, but are used to collect +# metadata, or do various checks. When such targets are triggered, +# some packages should not do their configuration sanity +# checks. Provide them a BR_BUILDING variable set to 'y' when we're +# actually building and they should do their sanity checks. +# +# We're building in two situations: when MAKECMDGOALS is empty +# (default target is to build), or when MAKECMDGOALS contains +# something else than one of the nobuild_targets. +nobuild_targets := source %-source \ + legal-info %-legal-info external-deps _external-deps \ + clean distclean help show-targets graph-depends \ + %-graph-depends %-show-depends %-show-version \ + graph-build graph-size list-defconfigs \ + savedefconfig update-defconfig printvars show-vars +ifeq ($(MAKECMDGOALS),) +BR_BUILDING = y +else ifneq ($(filter-out $(nobuild_targets),$(MAKECMDGOALS)),) +BR_BUILDING = y +endif + +# We call make recursively to build packages. The command-line overrides that +# are passed to Buildroot don't apply to those package build systems. In +# particular, we don't want to pass down the O= option for out-of-tree +# builds, because the value specified on the command line will not be correct +# for packages. +MAKEOVERRIDES := + +# Include some helper macros and variables +include support/misc/utils.mk + +# Set variables related to in-tree or out-of-tree build. +# Here, both $(O) and $(CURDIR) are absolute canonical paths. +ifeq ($(O),$(CURDIR)/output) +CONFIG_DIR := $(CURDIR) +NEED_WRAPPER = +else +CONFIG_DIR := $(O) +NEED_WRAPPER = y +endif + +# bash prints the name of the directory on 'cd ' if CDPATH is +# set, so unset it here to not cause problems. Notice that the export +# line doesn't affect the environment of $(shell ..) calls. +export CDPATH := + +BASE_DIR := $(CANONICAL_O) +$(if $(BASE_DIR),, $(error output directory "$(O)" does not exist)) + + +# Handling of BR2_EXTERNAL. +# +# The value of BR2_EXTERNAL is stored in .br-external in the output directory. +# The location of the external.mk makefile fragments is computed in that file. +# On subsequent invocations of make, this file is read in. BR2_EXTERNAL can +# still be overridden on the command line, therefore the file is re-created +# every time make is run. + +BR2_EXTERNAL_FILE = $(BASE_DIR)/.br2-external.mk +-include $(BR2_EXTERNAL_FILE) +$(shell support/scripts/br2-external -d '$(BASE_DIR)' $(BR2_EXTERNAL)) +BR2_EXTERNAL_ERROR = +include $(BR2_EXTERNAL_FILE) +ifneq ($(BR2_EXTERNAL_ERROR),) +$(error $(BR2_EXTERNAL_ERROR)) +endif + +# Workaround bug in make-4.3: https://savannah.gnu.org/bugs/?57676 +$(BASE_DIR)/.br2-external.mk:; + +# To make sure that the environment variable overrides the .config option, +# set this before including .config. +ifneq ($(BR2_DL_DIR),) +DL_DIR := $(BR2_DL_DIR) +endif +ifneq ($(BR2_CCACHE_DIR),) +BR_CACHE_DIR := $(BR2_CCACHE_DIR) +endif + +# Need that early, before we scan packages +# Avoids doing the $(or...) everytime +BR_GRAPH_OUT := $(or $(BR2_GRAPH_OUT),pdf) + +BUILD_DIR := $(BASE_DIR)/build +BINARIES_DIR := $(BASE_DIR)/images +BASE_TARGET_DIR := $(BASE_DIR)/target +PER_PACKAGE_DIR := $(BASE_DIR)/per-package +# initial definition so that 'make clean' works for most users, even without +# .config. HOST_DIR will be overwritten later when .config is included. +HOST_DIR := $(BASE_DIR)/host +GRAPHS_DIR := $(BASE_DIR)/graphs + +LEGAL_INFO_DIR = $(BASE_DIR)/legal-info +REDIST_SOURCES_DIR_TARGET = $(LEGAL_INFO_DIR)/sources +REDIST_SOURCES_DIR_HOST = $(LEGAL_INFO_DIR)/host-sources +LICENSE_FILES_DIR_TARGET = $(LEGAL_INFO_DIR)/licenses +LICENSE_FILES_DIR_HOST = $(LEGAL_INFO_DIR)/host-licenses +LEGAL_MANIFEST_CSV_TARGET = $(LEGAL_INFO_DIR)/manifest.csv +LEGAL_MANIFEST_CSV_HOST = $(LEGAL_INFO_DIR)/host-manifest.csv +LEGAL_WARNINGS = $(LEGAL_INFO_DIR)/.warnings +LEGAL_REPORT = $(LEGAL_INFO_DIR)/README + +BR2_CONFIG = $(CONFIG_DIR)/.config + +# Pull in the user's configuration file +ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),) +-include $(BR2_CONFIG) +endif + +ifeq ($(BR2_PER_PACKAGE_DIRECTORIES),) +# Disable top-level parallel build if per-package directories is not +# used. Indeed, per-package directories is necessary to guarantee +# determinism and reproducibility with top-level parallel build. +.NOTPARALLEL: +endif + +# timezone and locale may affect build output +ifeq ($(BR2_REPRODUCIBLE),y) +export TZ = UTC +export LANG = C +export LC_ALL = C +endif + +# To put more focus on warnings, be less verbose as default +# Use 'make V=1' to see the full commands +ifeq ("$(origin V)", "command line") + KBUILD_VERBOSE = $(V) +endif +ifndef KBUILD_VERBOSE + KBUILD_VERBOSE = 0 +endif + +ifeq ($(KBUILD_VERBOSE),1) + Q = +ifndef VERBOSE + VERBOSE = 1 +endif +export VERBOSE +else + Q = @ +endif + +# kconfig uses CONFIG_SHELL +CONFIG_SHELL := $(SHELL) + +export SHELL CONFIG_SHELL Q KBUILD_VERBOSE + +ifndef HOSTAR +HOSTAR := ar +endif +ifndef HOSTAS +HOSTAS := as +endif +ifndef HOSTCC +HOSTCC := gcc +HOSTCC := $(shell which $(HOSTCC) || type -p $(HOSTCC) || echo gcc) +endif +ifndef HOSTCC_NOCCACHE +HOSTCC_NOCCACHE := $(HOSTCC) +endif +ifndef HOSTCXX +HOSTCXX := g++ +HOSTCXX := $(shell which $(HOSTCXX) || type -p $(HOSTCXX) || echo g++) +endif +ifndef HOSTCXX_NOCCACHE +HOSTCXX_NOCCACHE := $(HOSTCXX) +endif +ifndef HOSTCPP +HOSTCPP := cpp +endif +ifndef HOSTLD +HOSTLD := ld +endif +ifndef HOSTLN +HOSTLN := ln +endif +ifndef HOSTNM +HOSTNM := nm +endif +ifndef HOSTOBJCOPY +HOSTOBJCOPY := objcopy +endif +ifndef HOSTRANLIB +HOSTRANLIB := ranlib +endif +HOSTAR := $(shell which $(HOSTAR) || type -p $(HOSTAR) || echo ar) +HOSTAS := $(shell which $(HOSTAS) || type -p $(HOSTAS) || echo as) +HOSTCPP := $(shell which $(HOSTCPP) || type -p $(HOSTCPP) || echo cpp) +HOSTLD := $(shell which $(HOSTLD) || type -p $(HOSTLD) || echo ld) +HOSTLN := $(shell which $(HOSTLN) || type -p $(HOSTLN) || echo ln) +HOSTNM := $(shell which $(HOSTNM) || type -p $(HOSTNM) || echo nm) +HOSTOBJCOPY := $(shell which $(HOSTOBJCOPY) || type -p $(HOSTOBJCOPY) || echo objcopy) +HOSTRANLIB := $(shell which $(HOSTRANLIB) || type -p $(HOSTRANLIB) || echo ranlib) +SED := $(shell which sed || type -p sed) -i -e + +export HOSTAR HOSTAS HOSTCC HOSTCXX HOSTLD +export HOSTCC_NOCCACHE HOSTCXX_NOCCACHE + +# Determine the userland we are running on. +# +# Note that, despite its name, we are not interested in the actual +# architecture name. This is mostly used to determine whether some +# of the binary tools (e.g. pre-built external toolchains) can run +# on the current host. So we need to know if the userland we're +# running on can actually run those toolchains. +# +# For example, a 64-bit prebuilt toolchain will not run on a 64-bit +# kernel if the userland is 32-bit (e.g. in a chroot for example). +# +# So, we extract the first part of the tuple the host gcc was +# configured to generate code for; we assume this is our userland. +# +export HOSTARCH := $(shell LC_ALL=C $(HOSTCC_NOCCACHE) -v 2>&1 | \ + sed -e '/^Target: \([^-]*\).*/!d' \ + -e 's//\1/' \ + -e 's/i.86/x86/' \ + -e 's/sun4u/sparc64/' \ + -e 's/arm.*/arm/' \ + -e 's/sa110/arm/' \ + -e 's/ppc64/powerpc64/' \ + -e 's/ppc/powerpc/' \ + -e 's/macppc/powerpc/' \ + -e 's/sh.*/sh/' ) + +# When adding a new host gcc version in Config.in, +# update the HOSTCC_MAX_VERSION variable: +HOSTCC_MAX_VERSION := 11 + +HOSTCC_VERSION := $(shell V=$$($(HOSTCC_NOCCACHE) --version | \ + sed -n -r 's/^.* ([0-9]*)\.([0-9]*)\.([0-9]*)[ ]*.*/\1 \2/p'); \ + [ "$${V%% *}" -le $(HOSTCC_MAX_VERSION) ] || V=$(HOSTCC_MAX_VERSION); \ + printf "%s" "$${V}") + +# For gcc >= 5.x, we only need the major version. +ifneq ($(firstword $(HOSTCC_VERSION)),4) +HOSTCC_VERSION := $(firstword $(HOSTCC_VERSION)) +endif + +ifeq ($(BR2_NEEDS_HOST_UTF8_LOCALE),y) +# First, we try to use the user's configured locale (as that's the +# language they'd expect messages to be displayed), then we favour +# a non language-specific locale like C.UTF-8 if one is available, +# so we sort with the C locale to get it at the top. +# This is guaranteed to not be empty, because of the check in +# support/dependencies/dependencies.sh +HOST_UTF8_LOCALE := $(shell \ + ( echo $${LC_ALL:-$${LC_MESSAGES:-$${LANG}}}; \ + locale -a 2>/dev/null | LC_ALL=C sort \ + ) \ + | grep -i -E 'utf-?8$$' \ + | head -n 1) +HOST_UTF8_LOCALE_ENV := LC_ALL=$(HOST_UTF8_LOCALE) +endif + +# Make sure pkg-config doesn't look outside the buildroot tree +HOST_PKG_CONFIG_PATH := $(PKG_CONFIG_PATH) +unexport PKG_CONFIG_PATH +unexport PKG_CONFIG_SYSROOT_DIR +unexport PKG_CONFIG_LIBDIR + +# Having DESTDIR set in the environment confuses the installation +# steps of some packages. +unexport DESTDIR + +# Causes breakage with packages that needs host-ruby +unexport RUBYOPT + +# Compilation of perl-related packages will fail otherwise +unexport PERL_MM_OPT + +include package/pkg-utils.mk +include package/doc-asciidoc.mk + +ifeq ($(BR2_HAVE_DOT_CONFIG),y) + +################################################################################ +# +# Hide troublesome environment variables from sub processes +# +################################################################################ +unexport CROSS_COMPILE +unexport ARCH +unexport CC +unexport LD +unexport AR +unexport CXX +unexport CPP +unexport RANLIB +unexport CFLAGS +unexport CXXFLAGS +unexport GREP_OPTIONS +unexport TAR_OPTIONS +unexport CONFIG_SITE +unexport QMAKESPEC +unexport TERMINFO +unexport MACHINE +unexport O +unexport GCC_COLORS +unexport PLATFORM +unexport OS +unexport DEVICE_TREE + +GNU_HOST_NAME := $(shell support/gnuconfig/config.guess) + +PACKAGES := +PACKAGES_ALL := + +# silent mode requested? +QUIET := $(if $(findstring s,$(filter-out --%,$(MAKEFLAGS))),-q) + +# Strip off the annoying quoting +ARCH := $(call qstrip,$(BR2_ARCH)) +NORMALIZED_ARCH := $(call qstrip,$(BR2_NORMALIZED_ARCH)) +KERNEL_ARCH := $(call qstrip,$(BR2_NORMALIZED_ARCH)) + +ZCAT := $(call qstrip,$(BR2_ZCAT)) +BZCAT := $(call qstrip,$(BR2_BZCAT)) +XZCAT := $(call qstrip,$(BR2_XZCAT)) +LZCAT := $(call qstrip,$(BR2_LZCAT)) +ZSTDCAT := $(call qstrip,$(BR2_ZSTDCAT)) +TAR_OPTIONS = $(call qstrip,$(BR2_TAR_OPTIONS)) -xf + +ifeq ($(BR2_PER_PACKAGE_DIRECTORIES),y) +HOST_DIR = $(if $(PKG),$(PER_PACKAGE_DIR)/$($(PKG)_NAME)/host,$(call qstrip,$(BR2_HOST_DIR))) +TARGET_DIR = $(if $(ROOTFS),$(ROOTFS_$(ROOTFS)_TARGET_DIR),$(if $(PKG),$(PER_PACKAGE_DIR)/$($(PKG)_NAME)/target,$(BASE_TARGET_DIR))) +else +HOST_DIR := $(call qstrip,$(BR2_HOST_DIR)) +TARGET_DIR = $(if $(ROOTFS),$(ROOTFS_$(ROOTFS)_TARGET_DIR),$(BASE_TARGET_DIR)) +endif + +ifneq ($(HOST_DIR),$(BASE_DIR)/host) +HOST_DIR_SYMLINK = $(BASE_DIR)/host +$(HOST_DIR_SYMLINK): | $(BASE_DIR) + ln -snf $(HOST_DIR) $(HOST_DIR_SYMLINK) +endif + +STAGING_DIR_SYMLINK = $(BASE_DIR)/staging +$(STAGING_DIR_SYMLINK): | $(BASE_DIR) + ln -snf $(STAGING_DIR) $(STAGING_DIR_SYMLINK) + +# Quotes are needed for spaces and all in the original PATH content. +BR_PATH = "$(HOST_DIR)/bin:$(HOST_DIR)/sbin:$(PATH)" + +# Location of a file giving a big fat warning that output/target +# should not be used as the root filesystem. +TARGET_DIR_WARNING_FILE = $(TARGET_DIR)/THIS_IS_NOT_YOUR_ROOT_FILESYSTEM + +ifeq ($(BR2_CCACHE),y) +CCACHE = $(HOST_DIR)/bin/ccache +BR_CACHE_DIR ?= $(call qstrip,$(BR2_CCACHE_DIR)) +export BR_CACHE_DIR +HOSTCC = $(CCACHE) $(HOSTCC_NOCCACHE) +HOSTCXX = $(CCACHE) $(HOSTCXX_NOCCACHE) +export BR2_USE_CCACHE ?= 1 +endif + +# Scripts in support/ or post-build scripts may need to reference +# these locations, so export them so it is easier to use +export BR2_CONFIG +export BR2_REPRODUCIBLE +export TARGET_DIR +export STAGING_DIR +export HOST_DIR +export BINARIES_DIR +export BASE_DIR + +################################################################################ +# +# You should probably leave this stuff alone unless you know +# what you are doing. +# +################################################################################ + +all: world + +# Include legacy before the other things, because package .mk files +# may rely on it. +include Makefile.legacy + +include system/system.mk +include package/Makefile.in +# arch/arch.mk must be after package/Makefile.in because it may need to +# complement variables defined therein, like BR_NO_CHECK_HASH_FOR. +include arch/arch.mk +include support/dependencies/dependencies.mk + +include $(sort $(wildcard toolchain/*.mk)) +include $(sort $(wildcard toolchain/*/*.mk)) + +ifeq ($(BR2_REPRODUCIBLE),y) +# If SOURCE_DATE_EPOCH has not been set then use the commit date, or the last +# release date if the source tree is not within a Git repository. +# See: https://reproducible-builds.org/specs/source-date-epoch/ +BR2_VERSION_GIT_EPOCH := $(shell $(GIT) log -1 --format=%at 2> /dev/null) +export SOURCE_DATE_EPOCH ?= $(or $(BR2_VERSION_GIT_EPOCH),$(BR2_VERSION_EPOCH)) +endif + +# Include the package override file if one has been provided in the +# configuration. +PACKAGE_OVERRIDE_FILE = $(call qstrip,$(BR2_PACKAGE_OVERRIDE_FILE)) +ifneq ($(PACKAGE_OVERRIDE_FILE),) +-include $(PACKAGE_OVERRIDE_FILE) +endif + +include $(sort $(wildcard package/*/*.mk)) + +include boot/common.mk +include linux/linux.mk +include fs/common.mk + +# If using a br2-external tree, the BR2_EXTERNAL_$(NAME)_PATH variables +# are also present in the .config file. Since .config is included after +# we defined them in the Makefile, the values for those variables are +# quoted. We just include the generated Makefile fragment .br2-external.mk +# a third time, which will set those variables to the un-quoted values. +include $(BR2_EXTERNAL_FILE) + +# Nothing to include if no BR2_EXTERNAL tree in use +include $(BR2_EXTERNAL_MKS) + +# Now we are sure we have all the packages scanned and defined. We now +# check for each package in the list of enabled packages, that all its +# dependencies are indeed enabled. +# +# Only trigger the check for default builds. If the user forces building +# a package, even if not enabled in the configuration, we want to accept +# it. However; we also want to be able to force checking the dependencies +# if the user so desires. Forcing a dependency check is useful in the case +# of test-pkg, as we want to make sure during testing, that a package has +# all the dependencies selected in the config file. +# +ifeq ($(MAKECMDGOALS),) +BR_FORCE_CHECK_DEPENDENCIES = YES +endif + +ifeq ($(BR_FORCE_CHECK_DEPENDENCIES),YES) + +define CHECK_ONE_DEPENDENCY +ifeq ($$($(2)_TYPE),target) +ifneq ($$($$($(2)_KCONFIG_VAR)),y) +$$(error $$($(2)_NAME) is in the dependency chain of $$($(1)_NAME) that \ +has added it to its _DEPENDENCIES variable without selecting it or \ +depending on it from Config.in) +endif +endif +endef + +$(foreach pkg,$(call UPPERCASE,$(PACKAGES)),\ + $(foreach dep,$(call UPPERCASE,$($(pkg)_FINAL_ALL_DEPENDENCIES)),\ + $(eval $(call CHECK_ONE_DEPENDENCY,$(pkg),$(dep))$(sep)))) + +endif + +$(BUILD_DIR)/buildroot-config/auto.conf: $(BR2_CONFIG) + $(MAKE1) $(EXTRAMAKEARGS) HOSTCC="$(HOSTCC_NOCCACHE)" HOSTCXX="$(HOSTCXX_NOCCACHE)" syncconfig + +.PHONY: prepare +prepare: $(BUILD_DIR)/buildroot-config/auto.conf + @$(foreach s, $(call qstrip,$(BR2_ROOTFS_PRE_BUILD_SCRIPT)), \ + $(call MESSAGE,"Executing pre-build script $(s)"); \ + $(EXTRA_ENV) $(s) \ + $(TARGET_DIR) \ + $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS)) \ + $(call qstrip,$(BR2_ROOTFS_PRE_BUILD_SCRIPT_ARGS))$(sep)) + +.PHONY: world +world: target-post-image + +.PHONY: prepare-sdk +prepare-sdk: world + @$(call MESSAGE,"Rendering the SDK relocatable") + PARALLEL_JOBS=$(PARALLEL_JOBS) \ + PER_PACKAGE_DIR=$(PER_PACKAGE_DIR) \ + $(TOPDIR)/support/scripts/fix-rpath host + PARALLEL_JOBS=$(PARALLEL_JOBS) \ + PER_PACKAGE_DIR=$(PER_PACKAGE_DIR) \ + $(TOPDIR)/support/scripts/fix-rpath staging + $(call ppd-fixup-paths,$(BASE_DIR)) + $(INSTALL) -m 755 $(TOPDIR)/support/misc/relocate-sdk.sh $(HOST_DIR)/relocate-sdk.sh + mkdir -p $(HOST_DIR)/share/buildroot + echo $(HOST_DIR) > $(HOST_DIR)/share/buildroot/sdk-location + +BR2_SDK_PREFIX ?= $(GNU_TARGET_NAME)_sdk-buildroot +.PHONY: sdk +sdk: prepare-sdk $(BR2_TAR_HOST_DEPENDENCY) + @$(call MESSAGE,"Generating SDK tarball") + $(if $(BR2_SDK_PREFIX),,$(error BR2_SDK_PREFIX can not be empty)) + $(Q)mkdir -p $(BINARIES_DIR) + $(TAR) czf "$(BINARIES_DIR)/$(BR2_SDK_PREFIX).tar.gz" \ + --owner=0 --group=0 --numeric-owner \ + --transform='s#^$(patsubst /%,%,$(HOST_DIR))#$(BR2_SDK_PREFIX)#' \ + -C / $(patsubst /%,%,$(HOST_DIR)) + +RSYNC_VCS_EXCLUSIONS = \ + --exclude .svn --exclude .git --exclude .hg --exclude .bzr \ + --exclude CVS + +# When stripping, obey to BR2_STRIP_EXCLUDE_DIRS and +# BR2_STRIP_EXCLUDE_FILES +STRIP_FIND_COMMON_CMD = \ + find $(TARGET_DIR) \ + $(if $(call qstrip,$(BR2_STRIP_EXCLUDE_DIRS)), \ + \( $(call finddirclauses,$(TARGET_DIR),$(call qstrip,$(BR2_STRIP_EXCLUDE_DIRS))) \) \ + -prune -o \ + ) \ + $(if $(call qstrip,$(BR2_STRIP_EXCLUDE_FILES)), \ + -not \( $(call findfileclauses,$(call qstrip,$(BR2_STRIP_EXCLUDE_FILES))) \) ) + +# Regular stripping for everything, except libpthread, ld-*.so and +# kernel modules: +# - libpthread.so: a non-stripped libpthread shared library is needed for +# proper debugging of pthread programs using gdb. +# - ld.so: a non-stripped dynamic linker library is needed for valgrind +# - kernel modules (*.ko): do not function properly when stripped like normal +# applications and libraries. Normally kernel modules are already excluded +# by the executable permission check, so the explicit exclusion is only +# done for kernel modules with incorrect permissions. +STRIP_FIND_CMD = \ + $(STRIP_FIND_COMMON_CMD) \ + -type f \( -perm /111 -o -name '*.so*' \) \ + -not \( $(call findfileclauses,libpthread*.so* ld-*.so* *.ko) \) \ + -print0 + +# Special stripping (only debugging symbols) for libpthread and ld-*.so. +STRIP_FIND_SPECIAL_LIBS_CMD = \ + $(STRIP_FIND_COMMON_CMD) \ + \( -name 'ld-*.so*' -o -name 'libpthread*.so*' \) \ + -print0 + +# Generate locale data. +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y) +GLIBC_GENERATE_LOCALES = $(call qstrip,$(BR2_GENERATE_LOCALE)) +ifneq ($(GLIBC_GENERATE_LOCALES),) +PACKAGES += host-localedef + +define GENERATE_GLIBC_LOCALES + +$(MAKE) -f support/misc/gen-glibc-locales.mk \ + ENDIAN=$(call LOWERCASE,$(BR2_ENDIAN)) \ + LOCALES="$(GLIBC_GENERATE_LOCALES)" \ + Q=$(Q) +endef +TARGET_FINALIZE_HOOKS += GENERATE_GLIBC_LOCALES +endif +endif + +ifeq ($(BR2_ENABLE_LOCALE_PURGE),y) +LOCALE_WHITELIST = $(BUILD_DIR)/locales.nopurge +LOCALE_NOPURGE = $(call qstrip,$(BR2_ENABLE_LOCALE_WHITELIST)) + +# This piece of junk does the following: +# First collect the whitelist in a file. +# Then go over all the locale dirs and for each subdir, check if it exists +# in the whitelist file. If it doesn't, kill it. +# Finally, specifically for X11, regenerate locale.dir from the whitelist. +define PURGE_LOCALES + printf '%s\n' $(LOCALE_NOPURGE) locale-archive > $(LOCALE_WHITELIST) + + for dir in $(addprefix $(TARGET_DIR),/usr/share/locale /usr/share/X11/locale /usr/lib/locale); \ + do \ + if [ ! -d $$dir ]; then continue; fi; \ + for langdir in $$dir/*; \ + do \ + if [ -e "$${langdir}" ]; \ + then \ + grep -qx "$${langdir##*/}" $(LOCALE_WHITELIST) || rm -rf $$langdir; \ + fi \ + done; \ + done + if [ -d $(TARGET_DIR)/usr/share/X11/locale ]; \ + then \ + for lang in $(LOCALE_NOPURGE); \ + do \ + if [ -f $(TARGET_DIR)/usr/share/X11/locale/$$lang/XLC_LOCALE ]; \ + then \ + echo "$$lang/XLC_LOCALE: $$lang"; \ + fi \ + done > $(TARGET_DIR)/usr/share/X11/locale/locale.dir; \ + fi +endef +TARGET_FINALIZE_HOOKS += PURGE_LOCALES +endif + +$(TARGETS_ROOTFS): target-finalize + +# Avoid the rootfs name leaking down the dependency chain +target-finalize: ROOTFS= + +TARGET_DIR_FILES_LISTS = $(sort $(wildcard $(BUILD_DIR)/*/.files-list.txt)) +HOST_DIR_FILES_LISTS = $(sort $(wildcard $(BUILD_DIR)/*/.files-list-host.txt)) +STAGING_DIR_FILES_LISTS = $(sort $(wildcard $(BUILD_DIR)/*/.files-list-staging.txt)) + +.PHONY: host-finalize +host-finalize: $(PACKAGES) $(HOST_DIR) $(HOST_DIR_SYMLINK) + @$(call MESSAGE,"Finalizing host directory") + $(call per-package-rsync,$(sort $(PACKAGES)),host,$(HOST_DIR),copy) + +.PHONY: staging-finalize +staging-finalize: $(STAGING_DIR_SYMLINK) + +.PHONY: target-finalize +target-finalize: $(PACKAGES) $(TARGET_DIR) host-finalize + @$(call MESSAGE,"Finalizing target directory") + $(call per-package-rsync,$(sort $(PACKAGES)),target,$(TARGET_DIR),copy) + $(foreach hook,$(TARGET_FINALIZE_HOOKS),$($(hook))$(sep)) + rm -rf $(TARGET_DIR)/usr/include $(TARGET_DIR)/usr/share/aclocal \ + $(TARGET_DIR)/usr/lib/pkgconfig $(TARGET_DIR)/usr/share/pkgconfig \ + $(TARGET_DIR)/usr/lib/cmake $(TARGET_DIR)/usr/share/cmake \ + $(TARGET_DIR)/usr/lib/rpm $(TARGET_DIR)/usr/doc + find $(TARGET_DIR)/usr/{lib,share}/ -name '*.cmake' -print0 | xargs -0 rm -f + find $(TARGET_DIR)/lib/ $(TARGET_DIR)/usr/lib/ $(TARGET_DIR)/usr/libexec/ \ + \( -name '*.a' -o -name '*.la' -o -name '*.prl' \) -print0 | xargs -0 rm -f +ifneq ($(BR2_PACKAGE_GDB),y) + rm -rf $(TARGET_DIR)/usr/share/gdb +endif +ifneq ($(BR2_PACKAGE_BASH),y) + rm -rf $(TARGET_DIR)/usr/share/bash-completion + rm -rf $(TARGET_DIR)/etc/bash_completion.d +endif +ifneq ($(BR2_PACKAGE_ZSH),y) + rm -rf $(TARGET_DIR)/usr/share/zsh +endif + rm -rf $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/man + rm -rf $(TARGET_DIR)/usr/info $(TARGET_DIR)/usr/share/info + rm -rf $(TARGET_DIR)/usr/doc $(TARGET_DIR)/usr/share/doc + rm -rf $(TARGET_DIR)/usr/share/gtk-doc + rmdir $(TARGET_DIR)/usr/share 2>/dev/null || true +ifneq ($(BR2_ENABLE_DEBUG):$(BR2_STRIP_strip),y:) + rm -rf $(TARGET_DIR)/lib/debug $(TARGET_DIR)/usr/lib/debug +endif + $(STRIP_FIND_CMD) | xargs -0 $(STRIPCMD) 2>/dev/null || true + $(STRIP_FIND_SPECIAL_LIBS_CMD) | xargs -0 -r $(STRIPCMD) $(STRIP_STRIP_DEBUG) 2>/dev/null || true + + test -f $(TARGET_DIR)/etc/ld.so.conf && \ + { echo "ERROR: we shouldn't have a /etc/ld.so.conf file"; exit 1; } || true + test -d $(TARGET_DIR)/etc/ld.so.conf.d && \ + { echo "ERROR: we shouldn't have a /etc/ld.so.conf.d directory"; exit 1; } || true + mkdir -p $(TARGET_DIR)/etc + ( \ + echo "NAME=Buildroot"; \ + echo "VERSION=$(BR2_VERSION_FULL)"; \ + echo "ID=buildroot"; \ + echo "VERSION_ID=$(BR2_VERSION)"; \ + echo "PRETTY_NAME=\"Buildroot $(BR2_VERSION)\"" \ + ) > $(TARGET_DIR)/usr/lib/os-release + ln -sf ../usr/lib/os-release $(TARGET_DIR)/etc + + @$(call MESSAGE,"Sanitizing RPATH in target tree") + PARALLEL_JOBS=$(PARALLEL_JOBS) \ + PER_PACKAGE_DIR=$(PER_PACKAGE_DIR) \ + $(TOPDIR)/support/scripts/fix-rpath target + +# For a merged /usr, ensure that /lib, /bin and /sbin and their /usr +# counterparts are appropriately setup as symlinks ones to the others. +ifeq ($(BR2_ROOTFS_MERGED_USR),y) + + $(foreach d, $(call qstrip,$(BR2_ROOTFS_OVERLAY)), \ + @$(call MESSAGE,"Sanity check in overlay $(d)")$(sep) \ + $(Q)not_merged_dirs="$$(support/scripts/check-merged-usr.sh $(d))"; \ + test -n "$$not_merged_dirs" && { \ + echo "ERROR: The overlay in $(d) is not" \ + "using a merged /usr for the following directories:" \ + $$not_merged_dirs; \ + exit 1; \ + } || true$(sep)) + +endif # merged /usr + + $(foreach d, $(call qstrip,$(BR2_ROOTFS_OVERLAY)), \ + @$(call MESSAGE,"Copying overlay $(d)")$(sep) \ + $(Q)$(call SYSTEM_RSYNC,$(d),$(TARGET_DIR))$(sep)) + + $(Q)$(if $(TARGET_DIR_FILES_LISTS), \ + cat $(TARGET_DIR_FILES_LISTS)) > $(BUILD_DIR)/packages-file-list.txt + $(Q)$(if $(HOST_DIR_FILES_LISTS), \ + cat $(HOST_DIR_FILES_LISTS)) > $(BUILD_DIR)/packages-file-list-host.txt + $(Q)$(if $(STAGING_DIR_FILES_LISTS), \ + cat $(STAGING_DIR_FILES_LISTS)) > $(BUILD_DIR)/packages-file-list-staging.txt + + $(foreach s, $(call qstrip,$(BR2_ROOTFS_POST_BUILD_SCRIPT)), \ + @$(call MESSAGE,"Executing post-build script $(s)")$(sep) \ + $(Q)$(EXTRA_ENV) $(s) \ + $(TARGET_DIR) \ + $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS)) \ + $(call qstrip,$(BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS))$(sep)) + + touch $(TARGET_DIR)/usr + +# Note: this will run in the filesystem context, so will use a copy +# of target/, not the real one, so the files are still available on +# re-builds (foo-rebuild, etc...) +define ROOTFS_RM_HWDB_DATA + rm -rf $(TARGET_DIR)/usr/lib/udev/hwdb.d/ $(TARGET_DIR)/etc/udev/hwdb.d/ +endef +ROOTFS_PRE_CMD_HOOKS += ROOTFS_RM_HWDB_DATA + +.PHONY: target-post-image +target-post-image: $(TARGETS_ROOTFS) target-finalize staging-finalize + @rm -f $(ROOTFS_COMMON_TAR) + $(Q)mkdir -p $(BINARIES_DIR) + @$(foreach s, $(call qstrip,$(BR2_ROOTFS_POST_IMAGE_SCRIPT)), \ + $(call MESSAGE,"Executing post-image script $(s)"); \ + $(EXTRA_ENV) $(s) \ + $(BINARIES_DIR) \ + $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS)) \ + $(call qstrip,$(BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS))$(sep)) + +.PHONY: source +source: $(foreach p,$(PACKAGES),$(p)-all-source) + +.PHONY: _external-deps external-deps +_external-deps: $(foreach p,$(PACKAGES),$(p)-all-external-deps) +external-deps: + @$(MAKE1) -Bs $(EXTRAMAKEARGS) _external-deps | sort -u + +.PHONY: legal-info-clean +legal-info-clean: + @rm -fr $(LEGAL_INFO_DIR) + +.PHONY: legal-info-prepare +legal-info-prepare: $(LEGAL_INFO_DIR) + @$(call MESSAGE,"Buildroot $(BR2_VERSION_FULL) Collecting legal info") + @$(call legal-license-file,HOST,buildroot,buildroot,COPYING,COPYING,support/legal-info/buildroot.hash) + @$(call legal-manifest,TARGET,PACKAGE,VERSION,LICENSE,LICENSE FILES,SOURCE ARCHIVE,SOURCE SITE,DEPENDENCIES WITH LICENSES) + @$(call legal-manifest,HOST,PACKAGE,VERSION,LICENSE,LICENSE FILES,SOURCE ARCHIVE,SOURCE SITE,DEPENDENCIES WITH LICENSES) + @$(call legal-manifest,HOST,buildroot,$(BR2_VERSION_FULL),GPL-2.0+,COPYING,not saved,not saved) + @$(call legal-warning,the Buildroot source code has not been saved) + @cp $(BR2_CONFIG) $(LEGAL_INFO_DIR)/buildroot.config + +.PHONY: legal-info +legal-info: legal-info-clean legal-info-prepare $(foreach p,$(PACKAGES),$(p)-all-legal-info) \ + $(REDIST_SOURCES_DIR_TARGET) $(REDIST_SOURCES_DIR_HOST) + @cat support/legal-info/README.header >>$(LEGAL_REPORT) + @if [ -r $(LEGAL_WARNINGS) ]; then \ + cat support/legal-info/README.warnings-header \ + $(LEGAL_WARNINGS) >>$(LEGAL_REPORT); \ + cat $(LEGAL_WARNINGS); fi + @rm -f $(LEGAL_WARNINGS) + @(cd $(LEGAL_INFO_DIR); \ + find * -type f -exec sha256sum {} + | LC_ALL=C sort -k2 \ + >.legal-info.sha256; \ + mv .legal-info.sha256 legal-info.sha256) + @echo "Legal info produced in $(LEGAL_INFO_DIR)" + +.PHONY: show-targets +show-targets: + @echo $(sort $(PACKAGES)) $(sort $(TARGETS_ROOTFS)) + +.PHONY: show-build-order +show-build-order: $(patsubst %,%-show-build-order,$(PACKAGES)) + +.PHONY: graph-build +graph-build: $(O)/build/build-time.log + @install -d $(GRAPHS_DIR) + $(foreach o,name build duration,./support/scripts/graph-build-time \ + --type=histogram --order=$(o) --input=$(<) \ + --output=$(GRAPHS_DIR)/build.hist-$(o).$(BR_GRAPH_OUT) \ + $(if $(BR2_GRAPH_ALT),--alternate-colors)$(sep)) + $(foreach t,packages steps,./support/scripts/graph-build-time \ + --type=pie-$(t) --input=$(<) \ + --output=$(GRAPHS_DIR)/build.pie-$(t).$(BR_GRAPH_OUT) \ + $(if $(BR2_GRAPH_ALT),--alternate-colors)$(sep)) + ./support/scripts/graph-build-time --type=timeline --input=$(<) \ + --output=$(GRAPHS_DIR)/build.timeline.$(BR_GRAPH_OUT) \ + $(if $(BR2_GRAPH_ALT),--alternate-colors) + +.PHONY: graph-depends-requirements +graph-depends-requirements: + @dot -? >/dev/null 2>&1 || \ + { echo "ERROR: The 'dot' program from Graphviz is needed for graph-depends" >&2; exit 1; } + +.PHONY: graph-depends +graph-depends: graph-depends-requirements + @$(INSTALL) -d $(GRAPHS_DIR) + @cd "$(CONFIG_DIR)"; \ + $(TOPDIR)/support/scripts/graph-depends $(BR2_GRAPH_DEPS_OPTS) \ + --direct -o $(GRAPHS_DIR)/$(@).dot + dot $(BR2_GRAPH_DOT_OPTS) -T$(BR_GRAPH_OUT) \ + -o $(GRAPHS_DIR)/$(@).$(BR_GRAPH_OUT) \ + $(GRAPHS_DIR)/$(@).dot + +.PHONY: graph-size +graph-size: + $(Q)mkdir -p $(GRAPHS_DIR) + $(Q)$(TOPDIR)/support/scripts/size-stats --builddir $(BASE_DIR) \ + --graph $(GRAPHS_DIR)/graph-size.$(BR_GRAPH_OUT) \ + --file-size-csv $(GRAPHS_DIR)/file-size-stats.csv \ + --package-size-csv $(GRAPHS_DIR)/package-size-stats.csv \ + $(BR2_GRAPH_SIZE_OPTS) + +.PHONY: check-dependencies +check-dependencies: + @cd "$(CONFIG_DIR)"; \ + $(TOPDIR)/support/scripts/graph-depends -C + +.PHONY: show-info +show-info: + @: + $(info $(call clean-json, \ + { $(foreach p, \ + $(sort $(foreach i,$(PACKAGES) $(TARGETS_ROOTFS), \ + $(i) \ + $($(call UPPERCASE,$(i))_FINAL_RECURSIVE_DEPENDENCIES) \ + ) \ + ), \ + $(call json-info,$(call UPPERCASE,$(p)))$(comma) \ + ) } \ + ) \ + ) + +.PHONY: pkg-stats +pkg-stats: + @cd "$(CONFIG_DIR)" ; \ + $(TOPDIR)/support/scripts/pkg-stats -c \ + --json $(O)/pkg-stats.json \ + --html $(O)/pkg-stats.html \ + --nvd-path $(DL_DIR)/buildroot-nvd + +else # ifeq ($(BR2_HAVE_DOT_CONFIG),y) + +# Some subdirectories are also package names. To avoid that "make linux" +# on an unconfigured tree produces "Nothing to be done", add an explicit +# rule for it. +# Also for 'all' we error out and ask the user to configure first. +.PHONY: linux toolchain +linux toolchain all: outputmakefile + $(error Please configure Buildroot first (e.g. "make menuconfig")) + @exit 1 + +endif # ifeq ($(BR2_HAVE_DOT_CONFIG),y) + +# configuration +# --------------------------------------------------------------------------- + +HOSTCFLAGS = $(CFLAGS_FOR_BUILD) +export HOSTCFLAGS + +$(BUILD_DIR)/buildroot-config/%onf: + mkdir -p $(@D)/lxdialog + PKG_CONFIG_PATH="$(HOST_PKG_CONFIG_PATH)" $(MAKE) CC="$(HOSTCC_NOCCACHE)" HOSTCC="$(HOSTCC_NOCCACHE)" \ + obj=$(@D) -C $(CONFIG) -f Makefile.br $(@F) + +DEFCONFIG = $(call qstrip,$(BR2_DEFCONFIG)) + +# We don't want to fully expand BR2_DEFCONFIG here, so Kconfig will +# recognize that if it's still at its default $(CONFIG_DIR)/defconfig +COMMON_CONFIG_ENV = \ + BR2_DEFCONFIG='$(call qstrip,$(value BR2_DEFCONFIG))' \ + KCONFIG_AUTOCONFIG=$(BUILD_DIR)/buildroot-config/auto.conf \ + KCONFIG_AUTOHEADER=$(BUILD_DIR)/buildroot-config/autoconf.h \ + KCONFIG_TRISTATE=$(BUILD_DIR)/buildroot-config/tristate.config \ + BR2_CONFIG=$(BR2_CONFIG) \ + HOST_GCC_VERSION="$(HOSTCC_VERSION)" \ + BASE_DIR=$(BASE_DIR) \ + SKIP_LEGACY= + +xconfig: $(BUILD_DIR)/buildroot-config/qconf outputmakefile + @$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN) + +gconfig: $(BUILD_DIR)/buildroot-config/gconf outputmakefile + @$(COMMON_CONFIG_ENV) srctree=$(TOPDIR) $< $(CONFIG_CONFIG_IN) + +menuconfig: $(BUILD_DIR)/buildroot-config/mconf outputmakefile + @$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN) + +nconfig: $(BUILD_DIR)/buildroot-config/nconf outputmakefile + @$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN) + +config: $(BUILD_DIR)/buildroot-config/conf outputmakefile + @$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN) + +# For the config targets that automatically select options, we pass +# SKIP_LEGACY=y to disable the legacy options. However, in that case +# no values are set for the legacy options so a subsequent oldconfig +# will query them. Therefore, run an additional olddefconfig. + +randconfig allyesconfig alldefconfig allnoconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile + @$(COMMON_CONFIG_ENV) SKIP_LEGACY=y $< --$@ $(CONFIG_CONFIG_IN) + @$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null + +randpackageconfig allyespackageconfig allnopackageconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile + @grep -v BR2_PACKAGE_ $(BR2_CONFIG) > $(CONFIG_DIR)/.config.nopkg + @$(COMMON_CONFIG_ENV) SKIP_LEGACY=y \ + KCONFIG_ALLCONFIG=$(CONFIG_DIR)/.config.nopkg \ + $< --$(subst package,,$@) $(CONFIG_CONFIG_IN) + @rm -f $(CONFIG_DIR)/.config.nopkg + @$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null + +oldconfig syncconfig olddefconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile + @$(COMMON_CONFIG_ENV) $< --$@ $(CONFIG_CONFIG_IN) + +defconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile + @$(COMMON_CONFIG_ENV) $< --defconfig$(if $(DEFCONFIG),=$(DEFCONFIG)) $(CONFIG_CONFIG_IN) + +%_defconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile + @defconfig=$(or \ + $(firstword \ + $(foreach d, \ + $(call reverse,$(TOPDIR) $(BR2_EXTERNAL_DIRS)), \ + $(wildcard $(d)/configs/$@) \ + ) \ + ), \ + $(error "Can't find $@") \ + ); \ + $(COMMON_CONFIG_ENV) BR2_DEFCONFIG=$${defconfig} \ + $< --defconfig=$${defconfig} $(CONFIG_CONFIG_IN) + +update-defconfig: savedefconfig + +savedefconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile + @$(COMMON_CONFIG_ENV) $< \ + --savedefconfig=$(if $(DEFCONFIG),$(DEFCONFIG),$(CONFIG_DIR)/defconfig) \ + $(CONFIG_CONFIG_IN) + @$(SED) '/^BR2_DEFCONFIG=/d' $(if $(DEFCONFIG),$(DEFCONFIG),$(CONFIG_DIR)/defconfig) + +.PHONY: defconfig savedefconfig update-defconfig + +################################################################################ +# +# Cleanup and misc junk +# +################################################################################ + +# staging and target directories do NOT list these as +# dependencies anywhere else +$(BASE_DIR) $(BUILD_DIR) $(BASE_TARGET_DIR) $(HOST_DIR) $(BINARIES_DIR) $(LEGAL_INFO_DIR) $(REDIST_SOURCES_DIR_TARGET) $(REDIST_SOURCES_DIR_HOST) $(PER_PACKAGE_DIR): + @mkdir -p $@ + +# outputmakefile generates a Makefile in the output directory, if using a +# separate output directory. This allows convenient use of make in the +# output directory. +.PHONY: outputmakefile +outputmakefile: +ifeq ($(NEED_WRAPPER),y) + $(Q)$(TOPDIR)/support/scripts/mkmakefile $(TOPDIR) $(O) +endif + +# printvars prints all the variables currently defined in our +# Makefiles. Alternatively, if a non-empty VARS variable is passed, +# only the variables matching the make pattern passed in VARS are +# displayed. +# show-vars does the same, but as a JSON dictionnary. +# +# Note: we iterate of .VARIABLES and filter each variable individually, +# to workaround a bug in make 4.3; see https://savannah.gnu.org/bugs/?59093 +.PHONY: printvars +printvars: +ifndef VARS + $(error Please pass a non-empty VARS to 'make printvars') +endif + @: + $(foreach V, \ + $(sort $(foreach X, $(.VARIABLES), $(filter $(VARS),$(X)))), \ + $(if $(filter-out environment% default automatic, \ + $(origin $V)), \ + $(if $(QUOTED_VARS),\ + $(info $V='$(subst ','\'',$(if $(RAW_VARS),$(value $V),$($V)))'), \ + $(info $V=$(if $(RAW_VARS),$(value $V),$($V)))))) +# ')))) # Syntax colouring... + +# See details above, same as for printvars +.PHONY: show-vars +show-vars: VARS?=% +show-vars: + @: + $(foreach i, \ + $(call clean-json, { \ + $(foreach V, \ + $(.VARIABLES), \ + $(and $(filter $(VARS),$(V)) \ + , \ + $(filter-out environment% default automatic, $(origin $V)) \ + , \ + "$V": { \ + "expanded": $(call mk-json-str,$($V))$(comma) \ + "raw": $(call mk-json-str,$(value $V)) \ + }$(comma) \ + ) \ + ) \ + } ) \ + , \ + $(info $(i)) \ + ) + +.PHONY: clean +clean: + rm -rf $(BASE_TARGET_DIR) $(BINARIES_DIR) $(HOST_DIR) $(HOST_DIR_SYMLINK) \ + $(BUILD_DIR) $(BASE_DIR)/staging \ + $(LEGAL_INFO_DIR) $(GRAPHS_DIR) $(PER_PACKAGE_DIR) $(O)/pkg-stats.* + +.PHONY: distclean +distclean: clean +ifeq ($(O),$(CURDIR)/output) + rm -rf $(O) +endif + rm -rf $(TOPDIR)/dl $(BR2_CONFIG) $(CONFIG_DIR)/.config.old $(CONFIG_DIR)/..config.tmp \ + $(CONFIG_DIR)/.auto.deps $(BASE_DIR)/.br2-external.* + +.PHONY: help +help: + @echo 'Cleaning:' + @echo ' clean - delete all files created by build' + @echo ' distclean - delete all non-source files (including .config)' + @echo + @echo 'Build:' + @echo ' all - make world' + @echo ' toolchain - build toolchain' + @echo ' sdk - build relocatable SDK' + @echo + @echo 'Configuration:' + @echo ' menuconfig - interactive curses-based configurator' + @echo ' nconfig - interactive ncurses-based configurator' + @echo ' xconfig - interactive Qt-based configurator' + @echo ' gconfig - interactive GTK-based configurator' + @echo ' oldconfig - resolve any unresolved symbols in .config' + @echo ' syncconfig - Same as oldconfig, but quietly, additionally update deps' + @echo ' olddefconfig - Same as syncconfig but sets new symbols to their default value' + @echo ' randconfig - New config with random answer to all options' + @echo ' defconfig - New config with default answer to all options;' + @echo ' BR2_DEFCONFIG, if set on the command line, is used as input' + @echo ' savedefconfig - Save current config to BR2_DEFCONFIG (minimal config)' + @echo ' update-defconfig - Same as savedefconfig' + @echo ' allyesconfig - New config where all options are accepted with yes' + @echo ' allnoconfig - New config where all options are answered with no' + @echo ' alldefconfig - New config where all options are set to default' + @echo ' randpackageconfig - New config with random answer to package options' + @echo ' allyespackageconfig - New config where pkg options are accepted with yes' + @echo ' allnopackageconfig - New config where package options are answered with no' + @echo + @echo 'Package-specific:' + @echo ' - Build and install and all its dependencies' + @echo ' -source - Only download the source files for ' + @echo ' -extract - Extract sources' + @echo ' -patch - Apply patches to ' + @echo ' -depends - Build '\''s dependencies' + @echo ' -configure - Build up to the configure step' + @echo ' -build - Build up to the build step' + @echo ' -show-info - generate info about , as a JSON blurb' + @echo ' -show-depends - List packages on which depends' + @echo ' -show-rdepends - List packages which have as a dependency' + @echo ' -show-recursive-depends' + @echo ' - Recursively list packages on which depends' + @echo ' -show-recursive-rdepends' + @echo ' - Recursively list packages which have as a dependency' + @echo ' -graph-depends - Generate a graph of '\''s dependencies' + @echo ' -graph-rdepends - Generate a graph of '\''s reverse dependencies' + @echo ' -graph-both-depends' + @echo ' - Generate a graph of both '\''s forward and' + @echo ' 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' + @echo ' -reinstall - Restart the build from the install step' + $(foreach p,$(HELP_PACKAGES), \ + @echo $(sep) \ + @echo '$($(p)_NAME):' $(sep) \ + $($(p)_HELP_CMDS)$(sep)) + @echo + @echo 'Documentation:' + @echo ' manual - build manual in all formats' + @echo ' manual-html - build manual in HTML' + @echo ' manual-split-html - build manual in split HTML' + @echo ' manual-pdf - build manual in PDF' + @echo ' manual-text - build manual in text' + @echo ' manual-epub - build manual in ePub' + @echo ' graph-build - generate graphs of the build times' + @echo ' graph-depends - generate graph of the dependency tree' + @echo ' graph-size - generate stats of the filesystem size' + @echo ' list-defconfigs - list all defconfigs (pre-configured minimal systems)' + @echo + @echo 'Miscellaneous:' + @echo ' source - download all sources needed for offline-build' + @echo ' external-deps - list external packages used' + @echo ' legal-info - generate info about license compliance' + @echo ' show-info - generate info about packages, as a JSON blurb' + @echo ' pkg-stats - generate info about packages as JSON and HTML' + @echo ' printvars - dump internal variables selected with VARS=...' + @echo ' show-vars - dump all internal variables as a JSON blurb; use VARS=...' + @echo ' to limit the list to variables names matching that pattern' + @echo + @echo ' make V=0|1 - 0 => quiet build (default), 1 => verbose build' + @echo ' make O=dir - Locate all output files in "dir", including .config' + @echo + @echo 'For further details, see README, generate the Buildroot manual, or consult' + @echo 'it on-line at http://buildroot.org/docs.html' + @echo + +# List the defconfig files +# $(1): base directory +# $(2): br2-external name, empty for bundled +define list-defconfigs + @first=true; \ + for defconfig in $(1)/configs/*_defconfig; do \ + [ -f "$${defconfig}" ] || continue; \ + if $${first}; then \ + if [ "$(2)" ]; then \ + printf 'External configs in "$(call qstrip,$(2))":\n'; \ + else \ + printf "Built-in configs:\n"; \ + fi; \ + first=false; \ + fi; \ + defconfig="$${defconfig##*/}"; \ + printf " %-35s - Build for %s\n" "$${defconfig}" "$${defconfig%_defconfig}"; \ + done; \ + $${first} || printf "\n" +endef + +# We iterate over BR2_EXTERNAL_NAMES rather than BR2_EXTERNAL_DIRS, +# because we want to display the name of the br2-external tree. +.PHONY: list-defconfigs +list-defconfigs: + $(call list-defconfigs,$(TOPDIR)) + $(foreach name,$(BR2_EXTERNAL_NAMES),\ + $(call list-defconfigs,$(BR2_EXTERNAL_$(name)_PATH),\ + $(BR2_EXTERNAL_$(name)_DESC))$(sep)) + +release: OUT = buildroot-$(BR2_VERSION) + +# Create release tarballs. We need to fiddle a bit to add the generated +# documentation to the git output +release: + git archive --format=tar --prefix=$(OUT)/ HEAD > $(OUT).tar + $(MAKE) O=$(OUT) manual-html manual-text manual-pdf + $(MAKE) O=$(OUT) distclean + tar rf $(OUT).tar $(OUT) + gzip -9 -c < $(OUT).tar > $(OUT).tar.gz + xz -9 -c < $(OUT).tar > $(OUT).tar.xz + rm -rf $(OUT) $(OUT).tar + +print-version: + @echo $(BR2_VERSION_FULL) + +check-package: + $(Q)./utils/check-package `git ls-tree -r --name-only HEAD` \ + --ignore-list=$(TOPDIR)/.checkpackageignore + +.PHONY: .checkpackageignore +.checkpackageignore: + $(Q)./utils/check-package --failed-only `git ls-tree -r --name-only HEAD` \ + > .checkpackageignore + +include docs/manual/manual.mk +-include $(foreach dir,$(BR2_EXTERNAL_DIRS),$(sort $(wildcard $(dir)/docs/*/*.mk))) + +.PHONY: $(noconfig_targets) + +# .WAIT was introduced in make 4.4. For older make, define it as phony. +.PHONY: .WAIT + +endif #umask / $(CURDIR) / $(O) diff --git a/Makefile.legacy b/Makefile.legacy new file mode 100644 index 00000000..800c0892 --- /dev/null +++ b/Makefile.legacy @@ -0,0 +1,59 @@ +# +# Makefile.legacy - support for backward compatibility +# +# This file contains placeholders to detect backward-compatibility problems. +# When a buildroot "API" feature is being deprecated, a rule should be added +# here that issues an error when the old feature is used. + +ifeq ($(BR2_LEGACY),y) +$(error "You have legacy configuration in your .config! Please check your configuration.") +endif + +# +# Legacy options from 2014.02 +# + +# The BUILDROOT_DL_DIR environment variable was renamed by BR2_DL_DIR. We +# want to detect someone using the old variable, _except_ if also the new +# variable was set. By the time we get here, however, we no longer have +# access to the BR2_DL_DIR environment variable (because it has been overridden +# by the .config inclusion). However, the environment variable (if defined) was +# saved in DL_DIR, so we can use that. +ifneq ($(BUILDROOT_DL_DIR),) +ifneq ($(BUILDROOT_DL_DIR),$(DL_DIR)) +$(error "The BUILDROOT_DL_DIR environment variable was renamed to BR2_DL_DIR.") +endif +endif + +# If a script is using the deprecated BUILDROOT_CONFIG, make sure it fails. +# Add some directories in front just in case someone used dirname on it. +BUILDROOT_CONFIG_FAKE = /tmp/deprecated/The-BUILDROOT_CONFIG-environment-variable-was-renamed-to-BR2_CONFIG + +# Similar to above for BUILDROOT_CONFIG, but here we have no .config equivalent. +ifneq ($(BUILDROOT_CONFIG),) +ifneq ($(BUILDROOT_CONFIG),$(BR2_CONFIG)) +ifneq ($(BUILDROOT_CONFIG),$(BUILDROOT_CONFIG_FAKE)) +$(error "The BUILDROOT_CONFIG environment variable was renamed to BR2_CONFIG.") +endif +endif +endif + +BUILDROOT_CONFIG = $(BUILDROOT_CONFIG_FAKE) +export BUILDROOT_CONFIG + +# +# Legacy options from 2012.08 +# + +host-pkg-config: + @$(call MESSAGE,host-pkg-config is replaced by host-pkgconf) + @$(call MESSAGE,please update your .mk files) + @false +.PHONY: host-pkg-config + +# +# Legacy options from 2012.05 +# +GENTARGETS = $$(error The GENTARGETS macro no longer exists; use $$$$(eval $$$$(generic-package)) or $$$$(eval $$$$(host-generic-package))) +AUTOTARGETS = $$(error The AUTOTARGETS macro no longer exists; use $$$$(eval $$$$(autotools-package)) or $$$$(eval $$$$(host-autotools-package))) +CMAKETARGETS = $$(error The CMAKETARGETS macro no longer exists; use $$$$(eval $$$$(cmake-package)) or $$$$(eval $$$$(host-cmake-package))) diff --git a/README b/README new file mode 100644 index 00000000..008e996f --- /dev/null +++ b/README @@ -0,0 +1,26 @@ +Buildroot is a simple, efficient and easy-to-use tool to generate embedded +Linux systems through cross-compilation. + +The documentation can be found in docs/manual. You can generate a text +document with 'make manual-text' and read output/docs/manual/manual.text. +Online documentation can be found at http://buildroot.org/docs.html + +To build and use the buildroot stuff, do the following: + +1) run 'make menuconfig' +2) select the target architecture and the packages you wish to compile +3) run 'make' +4) wait while it compiles +5) find the kernel, bootloader, root filesystem, etc. in output/images + +You do not need to be root to build or run buildroot. Have fun! + +Buildroot comes with a basic configuration for a number of boards. Run +'make list-defconfigs' to view the list of provided configurations. + +Please feed suggestions, bug reports, insults, and bribes back to the +buildroot mailing list: buildroot@buildroot.org +You can also find us on #buildroot on OFTC IRC. + +If you would like to contribute patches, please read +https://buildroot.org/manual.html#submitting-patches diff --git a/arch/Config.in b/arch/Config.in new file mode 100644 index 00000000..f39c33ef --- /dev/null +++ b/arch/Config.in @@ -0,0 +1,450 @@ +menu "Target options" + +config BR2_ARCH_IS_64 + bool + +config BR2_KERNEL_64_USERLAND_32 + bool + +config BR2_SOFT_FLOAT + bool + +config BR2_USE_MMU + bool + +choice + prompt "Target Architecture" + default BR2_i386 + help + Select the target architecture family to build for. + +config BR2_arcle + bool "ARC (little endian)" + select BR2_USE_MMU + help + Synopsys' DesignWare ARC Processor Cores are a family of + 32-bit CPUs that can be used from deeply embedded to high + performance host applications. Little endian. + +config BR2_arceb + bool "ARC (big endian)" + select BR2_USE_MMU + help + Synopsys' DesignWare ARC Processor Cores are a family of + 32-bit CPUs that can be used from deeply embedded to high + performance host applications. Big endian. + +config BR2_arm + bool "ARM (little endian)" + # MMU support is set by the subarchitecture file, arch/Config.in.arm + help + ARM is a 32-bit reduced instruction set computer (RISC) + instruction set architecture (ISA) developed by ARM Holdings. + Little endian. + http://www.arm.com/ + http://en.wikipedia.org/wiki/ARM + +config BR2_armeb + bool "ARM (big endian)" + select BR2_USE_MMU + help + ARM is a 32-bit reduced instruction set computer (RISC) + instruction set architecture (ISA) developed by ARM Holdings. + Big endian. + http://www.arm.com/ + http://en.wikipedia.org/wiki/ARM + +config BR2_aarch64 + bool "AArch64 (little endian)" + select BR2_ARCH_IS_64 + help + Aarch64 is a 64-bit architecture developed by ARM Holdings. + http://www.arm.com/products/processors/instruction-set-architectures/armv8-architecture.php + http://en.wikipedia.org/wiki/ARM + +config BR2_aarch64_be + bool "AArch64 (big endian)" + select BR2_ARCH_IS_64 + help + Aarch64 is a 64-bit architecture developed by ARM Holdings. + http://www.arm.com/products/processors/instruction-set-architectures/armv8-architecture.php + http://en.wikipedia.org/wiki/ARM + +config BR2_i386 + bool "i386" + select BR2_USE_MMU + help + Intel i386 architecture compatible microprocessor + http://en.wikipedia.org/wiki/I386 + +config BR2_m68k + bool "m68k" + # MMU support is set by the subarchitecture file, arch/Config.in.m68k + help + Motorola 68000 family microprocessor + http://en.wikipedia.org/wiki/M68k + +config BR2_microblazeel + bool "Microblaze AXI (little endian)" + select BR2_USE_MMU + help + Soft processor core designed for Xilinx FPGAs from Xilinx. AXI + bus based architecture (little endian) + http://www.xilinx.com + http://en.wikipedia.org/wiki/Microblaze + +config BR2_microblazebe + bool "Microblaze non-AXI (big endian)" + select BR2_USE_MMU + help + Soft processor core designed for Xilinx FPGAs from Xilinx. PLB + bus based architecture (non-AXI, big endian) + http://www.xilinx.com + http://en.wikipedia.org/wiki/Microblaze + +config BR2_mips + bool "MIPS (big endian)" + select BR2_USE_MMU + help + MIPS is a RISC microprocessor from MIPS Technologies. Big + endian. + http://www.mips.com/ + http://en.wikipedia.org/wiki/MIPS_Technologies + +config BR2_mipsel + bool "MIPS (little endian)" + select BR2_USE_MMU + help + MIPS is a RISC microprocessor from MIPS Technologies. Little + endian. + http://www.mips.com/ + http://en.wikipedia.org/wiki/MIPS_Technologies + +config BR2_mips64 + bool "MIPS64 (big endian)" + select BR2_ARCH_IS_64 + select BR2_USE_MMU + help + MIPS is a RISC microprocessor from MIPS Technologies. Big + endian. + http://www.mips.com/ + http://en.wikipedia.org/wiki/MIPS_Technologies + +config BR2_mips64el + bool "MIPS64 (little endian)" + select BR2_ARCH_IS_64 + select BR2_USE_MMU + help + MIPS is a RISC microprocessor from MIPS Technologies. Little + endian. + http://www.mips.com/ + http://en.wikipedia.org/wiki/MIPS_Technologies + +config BR2_nios2 + bool "Nios II" + select BR2_USE_MMU + help + Nios II is a soft core processor from Altera Corporation. + http://www.altera.com/ + http://en.wikipedia.org/wiki/Nios_II + +config BR2_or1k + bool "OpenRISC" + select BR2_USE_MMU + help + OpenRISC is a free and open processor for embedded system. + http://openrisc.io + +config BR2_powerpc + bool "PowerPC" + select BR2_USE_MMU + help + PowerPC is a RISC architecture created by Apple-IBM-Motorola + alliance. Big endian. + http://www.power.org/ + http://en.wikipedia.org/wiki/Powerpc + +config BR2_powerpc64 + bool "PowerPC64 (big endian)" + select BR2_ARCH_IS_64 + select BR2_USE_MMU + help + PowerPC is a RISC architecture created by Apple-IBM-Motorola + alliance. Big endian. + http://www.power.org/ + http://en.wikipedia.org/wiki/Powerpc + +config BR2_powerpc64le + bool "PowerPC64 (little endian)" + select BR2_ARCH_IS_64 + select BR2_USE_MMU + help + PowerPC is a RISC architecture created by Apple-IBM-Motorola + alliance. Little endian. + http://www.power.org/ + http://en.wikipedia.org/wiki/Powerpc + +config BR2_riscv + bool "RISCV" + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 + help + RISC-V is an open, free Instruction Set Architecture created + by the UC Berkeley Architecture Research group and supported + and promoted by RISC-V Foundation. + https://riscv.org/ + https://en.wikipedia.org/wiki/RISC-V + +config BR2_s390x + bool "s390x" + select BR2_ARCH_IS_64 + select BR2_USE_MMU + help + s390x is a big-endian architecture made by IBM. + http://www.ibm.com/ + http://en.wikipedia.org/wiki/IBM_System/390 + +config BR2_sh + bool "SuperH" + select BR2_USE_MMU + help + SuperH (or SH) is a 32-bit reduced instruction set computer + (RISC) instruction set architecture (ISA) developed by + Hitachi. + http://www.hitachi.com/ + http://en.wikipedia.org/wiki/SuperH + +config BR2_sparc + bool "SPARC" + select BR2_USE_MMU + help + SPARC (from Scalable Processor Architecture) is a RISC + instruction set architecture (ISA) developed by Sun + Microsystems. + http://www.oracle.com/sun + http://en.wikipedia.org/wiki/Sparc + +config BR2_sparc64 + bool "SPARC64" + select BR2_ARCH_IS_64 + select BR2_USE_MMU + help + SPARC (from Scalable Processor Architecture) is a RISC + instruction set architecture (ISA) developed by Sun + Microsystems. + http://www.oracle.com/sun + http://en.wikipedia.org/wiki/Sparc + +config BR2_x86_64 + bool "x86_64" + select BR2_ARCH_IS_64 + select BR2_USE_MMU + help + x86-64 is an extension of the x86 instruction set (Intel i386 + architecture compatible microprocessor). + http://en.wikipedia.org/wiki/X86_64 + +config BR2_xtensa + bool "Xtensa" + # MMU support is set by the subarchitecture file, arch/Config.in.xtensa + help + Xtensa is a Tensilica processor IP architecture. + http://en.wikipedia.org/wiki/Xtensa + http://www.tensilica.com/ + +endchoice + +# For some architectures or specific cores, our internal toolchain +# backend is not suitable (like, missing support in upstream gcc, or +# no ChipCo fork exists...) +config BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT + bool + +config BR2_ARCH_HAS_TOOLCHAIN_BUILDROOT + bool + default y if !BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT + +# The following symbols are selected by the individual +# Config.in.$ARCH files +config BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8 + bool + +config BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8 + +config BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 + +config BR2_ARCH_NEEDS_GCC_AT_LEAST_6 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + +config BR2_ARCH_NEEDS_GCC_AT_LEAST_7 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 + +config BR2_ARCH_NEEDS_GCC_AT_LEAST_8 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 + +config BR2_ARCH_NEEDS_GCC_AT_LEAST_9 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_8 + +config BR2_ARCH_NEEDS_GCC_AT_LEAST_10 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_9 + +config BR2_ARCH_NEEDS_GCC_AT_LEAST_11 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_10 + +config BR2_ARCH_NEEDS_GCC_AT_LEAST_12 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_11 + +config BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_12 + +config BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + +# The following string values are defined by the individual +# Config.in.$ARCH files +config BR2_ARCH + string + +config BR2_NORMALIZED_ARCH + string + +config BR2_ENDIAN + string + +config BR2_GCC_TARGET_ARCH + string + +config BR2_GCC_TARGET_ABI + string + +config BR2_GCC_TARGET_NAN + string + +config BR2_GCC_TARGET_FP32_MODE + string + +config BR2_GCC_TARGET_CPU + string + +# The value of this option will be passed as --with-fpu= when +# building gcc (internal backend) or -mfpu= in the toolchain +# wrapper (external toolchain) +config BR2_GCC_TARGET_FPU + string + +# The value of this option will be passed as --with-float= when +# building gcc (internal backend) or -mfloat-abi= in the toolchain +# wrapper (external toolchain) +config BR2_GCC_TARGET_FLOAT_ABI + string + +# The value of this option will be passed as --with-mode= when +# building gcc (internal backend) or -m in the toolchain +# wrapper (external toolchain) +config BR2_GCC_TARGET_MODE + string + +# Must be selected by binary formats that support shared libraries. +config BR2_BINFMT_SUPPORTS_SHARED + bool + +# Must match the name of the architecture from readelf point of view, +# i.e the "Machine:" field of readelf output. See get_machine_name() +# in binutils/readelf.c for the list of possible values. +config BR2_READELF_ARCH_NAME + string + +if BR2_arcle || BR2_arceb +source "arch/Config.in.arc" +endif + +if BR2_arm || BR2_armeb || BR2_aarch64 || BR2_aarch64_be +source "arch/Config.in.arm" +endif + +if BR2_m68k +source "arch/Config.in.m68k" +endif + +if BR2_microblazeel || BR2_microblazebe +source "arch/Config.in.microblaze" +endif + +if BR2_mips || BR2_mips64 || BR2_mipsel || BR2_mips64el +source "arch/Config.in.mips" +endif + +if BR2_nios2 +source "arch/Config.in.nios2" +endif + +if BR2_or1k +source "arch/Config.in.or1k" +endif + +if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le +source "arch/Config.in.powerpc" +endif + +if BR2_riscv +source "arch/Config.in.riscv" +endif + +if BR2_s390x +source "arch/Config.in.s390x" +endif + +if BR2_sh +source "arch/Config.in.sh" +endif + +if BR2_sparc || BR2_sparc64 +source "arch/Config.in.sparc" +endif + +if BR2_i386 || BR2_x86_64 +source "arch/Config.in.x86" +endif + +if BR2_xtensa +source "arch/Config.in.xtensa" +endif + +# Set up target binary format +choice + prompt "Target Binary Format" + default BR2_BINFMT_ELF if BR2_USE_MMU + default BR2_BINFMT_FLAT + +config BR2_BINFMT_ELF + bool "ELF" + depends on BR2_USE_MMU + select BR2_BINFMT_SUPPORTS_SHARED + help + ELF (Executable and Linkable Format) is a format for libraries + and executables used across different architectures and + operating systems. + +config BR2_BINFMT_FLAT + bool "FLAT" + depends on !BR2_USE_MMU + help + FLAT binary is a relatively simple and lightweight executable + format based on the original a.out format. It is widely used + in environment where no MMU is available. + +endchoice + +endmenu # Target options diff --git a/arch/Config.in.arc b/arch/Config.in.arc new file mode 100644 index 00000000..388d3496 --- /dev/null +++ b/arch/Config.in.arc @@ -0,0 +1,129 @@ +choice + prompt "Target CPU" + default BR2_arc770d + depends on BR2_arc + help + Specific CPU to use + +config BR2_arc750d + bool "ARC 750D" + +config BR2_arc770d + bool "ARC 770D" + +config BR2_archs38 + bool "ARC HS38" + help + Generic ARC HS capable of running Linux, i.e. with MMU, + caches and 32-bit multiplier. Also it corresponds to the + default configuration in older GNU toolchain versions. + +config BR2_archs38_64mpy + bool "ARC HS38 with 64-bit mpy" + help + Fully featured ARC HS capable of running Linux, i.e. with + MMU, caches and 64-bit multiplier. + + If you're not sure which version of ARC HS core you build + for use this one. + +config BR2_archs38_full + bool "ARC HS38 with Quad MAC & FPU" + help + Fully featured ARC HS with additional support for + - Dual- and quad multiply and MC oprations + - Double-precision FPU + + It corresponds to "hs38_slc_full" ARC HS template in + ARChitect. + +config BR2_archs4x_rel31 + bool "ARC HS48 rel 31" + help + Build for HS48 release 3.1 + +config BR2_archs4x + bool "ARC HS48" + help + Latest release of HS48 processor + - Dual and Quad multiply and MAC operations + - Double-precision FPU + +endchoice + +# Choice of atomic instructions presence +config BR2_ARC_ATOMIC_EXT + bool "Atomic extension (LLOCK/SCOND instructions)" + default y if BR2_arc770d + default y if BR2_archs38 || BR2_archs38_64mpy || BR2_archs38_full + default y if BR2_archs4x_rel31 || BR2_archs4x + +config BR2_ARCH + default "arc" if BR2_arcle + default "arceb" if BR2_arceb + +config BR2_NORMALIZED_ARCH + default "arc" + +config BR2_arc + bool + default y if BR2_arcle || BR2_arceb + +config BR2_ENDIAN + default "LITTLE" if BR2_arcle + default "BIG" if BR2_arceb + +config BR2_GCC_TARGET_CPU + default "arc700" if BR2_arc750d + default "arc700" if BR2_arc770d + default "archs" if BR2_archs38 + default "hs38" if BR2_archs38_64mpy + default "hs38_linux" if BR2_archs38_full + default "hs4x_rel31" if BR2_archs4x_rel31 + default "hs4x" if BR2_archs4x + +config BR2_READELF_ARCH_NAME + default "ARCompact" if BR2_arc750d || BR2_arc770d + default "ARCv2" if BR2_archs38 || BR2_archs38_64mpy || BR2_archs38_full + default "ARCv2" if BR2_archs4x_rel31 || BR2_archs4x + +choice + prompt "MMU Page Size" + default BR2_ARC_PAGE_SIZE_8K + help + MMU starting from version 3 (found in ARC 770) and now + version 4 (found in ARC HS38) allows the selection of the + page size during ASIC design creation. + + The following options are available for MMU v3 and v4: 4kB, + 8kB and 16 kB. + + The default is 8 kB (that really matches the only page size + in MMU v2). It is important to build a toolchain with page + size matching the hardware configuration. Otherwise + user-space applications will fail at runtime. + +config BR2_ARC_PAGE_SIZE_4K + bool "4KB" + depends on !BR2_arc750d + +config BR2_ARC_PAGE_SIZE_8K + bool "8KB" + help + This is the one and only option available for MMUv2 and + default value for MMU v3 and v4. + +config BR2_ARC_PAGE_SIZE_16K + bool "16KB" + depends on !BR2_arc750d + +endchoice + +config BR2_ARC_PAGE_SIZE + string + default "4K" if BR2_ARC_PAGE_SIZE_4K + default "8K" if BR2_ARC_PAGE_SIZE_8K + default "16K" if BR2_ARC_PAGE_SIZE_16K + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/arch/Config.in.arm b/arch/Config.in.arm new file mode 100644 index 00000000..b44a164e --- /dev/null +++ b/arch/Config.in.arm @@ -0,0 +1,916 @@ +# arm cpu features +config BR2_ARM_CPU_HAS_NEON + bool + +# for some cores, NEON support is optional +config BR2_ARM_CPU_MAYBE_HAS_NEON + bool + +# For some cores, the FPU is optional +config BR2_ARM_CPU_MAYBE_HAS_FPU + bool + +config BR2_ARM_CPU_HAS_FPU + bool + +# for some cores, VFPv2 is optional +config BR2_ARM_CPU_MAYBE_HAS_VFPV2 + bool + select BR2_ARM_CPU_MAYBE_HAS_FPU + +config BR2_ARM_CPU_HAS_VFPV2 + bool + select BR2_ARM_CPU_HAS_FPU + +# for some cores, VFPv3 is optional +config BR2_ARM_CPU_MAYBE_HAS_VFPV3 + bool + select BR2_ARM_CPU_MAYBE_HAS_VFPV2 + +config BR2_ARM_CPU_HAS_VFPV3 + bool + select BR2_ARM_CPU_HAS_VFPV2 + +# for some cores, VFPv4 is optional +config BR2_ARM_CPU_MAYBE_HAS_VFPV4 + bool + select BR2_ARM_CPU_MAYBE_HAS_VFPV3 + +config BR2_ARM_CPU_HAS_VFPV4 + bool + select BR2_ARM_CPU_HAS_VFPV3 + +# FPv4 is always optional +config BR2_ARM_CPU_MAYBE_HAS_FPV4 + bool + select BR2_ARM_CPU_MAYBE_HAS_FPU + +config BR2_ARM_CPU_HAS_FPV4 + bool + select BR2_ARM_CPU_HAS_FPU + +# FPv5 is always optional +config BR2_ARM_CPU_MAYBE_HAS_FPV5 + bool + select BR2_ARM_CPU_MAYBE_HAS_FPV4 + +config BR2_ARM_CPU_HAS_FPV5 + bool + select BR2_ARM_CPU_HAS_FPV4 + +config BR2_ARM_CPU_HAS_FP_ARMV8 + bool + select BR2_ARM_CPU_HAS_VFPV4 + +config BR2_ARM_CPU_HAS_ARM + bool + +config BR2_ARM_CPU_HAS_THUMB + bool + +config BR2_ARM_CPU_HAS_THUMB2 + bool + +config BR2_ARM_CPU_ARMV4 + bool + select BR2_USE_MMU + +config BR2_ARM_CPU_ARMV5 + bool + select BR2_USE_MMU + +config BR2_ARM_CPU_ARMV6 + bool + select BR2_USE_MMU + +config BR2_ARM_CPU_ARMV7A + bool + select BR2_USE_MMU + +config BR2_ARM_CPU_ARMV7M + bool + +config BR2_ARM_CPU_ARMV8A + bool + select BR2_USE_MMU + +choice + prompt "Target Architecture Variant" + default BR2_cortex_a53 if BR2_ARCH_IS_64 + default BR2_arm926t + help + Specific CPU variant to use + +if !BR2_ARCH_IS_64 +comment "armv4 cores" +config BR2_arm920t + bool "arm920t" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV4 +config BR2_arm922t + bool "arm922t" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV4 +config BR2_fa526 + bool "fa526/626" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_ARMV4 +config BR2_strongarm + bool "strongarm sa110/sa1100" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_ARMV4 + +comment "armv5 cores" +config BR2_arm926t + bool "arm926t" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_MAYBE_HAS_VFPV2 + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV5 +config BR2_xscale + bool "xscale" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV5 + +comment "armv6 cores" +config BR2_arm1136j_s + bool "arm1136j-s" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV6 +config BR2_arm1136jf_s + bool "arm1136jf-s" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_VFPV2 + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV6 +config BR2_arm1176jz_s + bool "arm1176jz-s" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV6 +config BR2_arm1176jzf_s + bool "arm1176jzf-s" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_VFPV2 + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV6 +config BR2_arm11mpcore + bool "mpcore" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_MAYBE_HAS_VFPV2 + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV6 + +comment "armv7a cores" +config BR2_cortex_a5 + bool "cortex-A5" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_MAYBE_HAS_NEON + select BR2_ARM_CPU_MAYBE_HAS_VFPV4 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A +config BR2_cortex_a7 + bool "cortex-A7" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_VFPV4 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A +config BR2_cortex_a8 + bool "cortex-A8" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_VFPV3 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A +config BR2_cortex_a9 + bool "cortex-A9" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_MAYBE_HAS_NEON + select BR2_ARM_CPU_MAYBE_HAS_VFPV3 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A +config BR2_cortex_a12 + bool "cortex-A12" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_VFPV4 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A +config BR2_cortex_a15 + bool "cortex-A15" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_VFPV4 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A +config BR2_cortex_a15_a7 + bool "cortex-A15/A7 big.LITTLE" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_VFPV4 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 +config BR2_cortex_a17 + bool "cortex-A17" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_VFPV4 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_cortex_a17_a7 + bool "cortex-A17/A7 big.LITTLE" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_VFPV4 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_pj4 + bool "pj4" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_VFPV3 + select BR2_ARM_CPU_ARMV7A + +# Cortex-M cores are only supported for little endian configurations +if BR2_arm +comment "armv7m cores" +config BR2_cortex_m3 + bool "cortex-M3" + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7M +config BR2_cortex_m4 + bool "cortex-M4" + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_MAYBE_HAS_FPV4 + select BR2_ARM_CPU_ARMV7M +config BR2_cortex_m7 + bool "cortex-M7" + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_MAYBE_HAS_FPV5 + select BR2_ARM_CPU_ARMV7M + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +endif # BR2_arm +endif # !BR2_ARCH_IS_64 + +comment "armv8 cores" +config BR2_cortex_a32 + bool "cortex-A32" + depends on !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_cortex_a35 + bool "cortex-A35" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_cortex_a53 + bool "cortex-A53" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A +config BR2_cortex_a57 + bool "cortex-A57" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A +config BR2_cortex_a57_a53 + bool "cortex-A57/A53 big.LITTLE" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_cortex_a72 + bool "cortex-A72" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_cortex_a72_a53 + bool "cortex-A72/A53 big.LITTLE" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_cortex_a73 + bool "cortex-A73" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_cortex_a73_a35 + bool "cortex-A73/A35 big.LITTLE" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_cortex_a73_a53 + bool "cortex-A73/A53 big.LITTLE" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_emag + bool "emag" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_9 +config BR2_exynos_m1 + bool "exynos-m1" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_falkor + bool "falkor" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_phecda + bool "phecda" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_9 +config BR2_qdf24xx + bool "qdf24xx" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_thunderx + bool "thunderx (aka octeontx)" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_thunderxt81 + bool "thunderxt81 (aka octeontx81)" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_thunderxt83 + bool "thunderxt83 (aka octeontx83)" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_thunderxt88 + bool "thunderxt88" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_thunderxt88p1 + bool "thunderxt88p1" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_xgene1 + bool "xgene1" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + +comment "armv8.1a cores" +config BR2_thunderx2t99 + bool "thunderx2t99" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_thunderx2t99p1 + bool "thunderx2t99p1" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_vulcan + bool "vulcan" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 + +comment "armv8.2a cores" +config BR2_cortex_a55 + bool "cortex-A55" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_8 +config BR2_cortex_a75 + bool "cortex-A75" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_8 +config BR2_cortex_a75_a55 + bool "cortex-A75/A55 big.LITTLE" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_8 +config BR2_cortex_a76 + bool "cortex-A76" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_9 +config BR2_cortex_a76_a55 + bool "cortex-A76/A55 big.LITTLE" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_9 +config BR2_neoverse_n1 + bool "neoverse-N1 (aka ares)" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_9 +config BR2_tsv110 + bool "tsv110" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_9 + +comment "armv8.4a cores" +config BR2_saphira + bool "saphira" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_NEEDS_GCC_AT_LEAST_8 +endchoice + +config BR2_ARM_ENABLE_NEON + bool "Enable NEON SIMD extension support" + depends on BR2_ARM_CPU_MAYBE_HAS_NEON + select BR2_ARM_CPU_HAS_NEON + help + For some CPU cores, the NEON SIMD extension is optional. + Select this option if you are certain your particular + implementation has NEON support and you want to use it. + +config BR2_ARM_ENABLE_VFP + bool "Enable VFP extension support" + depends on BR2_ARM_CPU_MAYBE_HAS_FPU + select BR2_ARM_CPU_HAS_FPV5 if BR2_ARM_CPU_MAYBE_HAS_FPV5 + select BR2_ARM_CPU_HAS_FPV4 if BR2_ARM_CPU_MAYBE_HAS_FPV4 + select BR2_ARM_CPU_HAS_VFPV4 if BR2_ARM_CPU_MAYBE_HAS_VFPV4 + select BR2_ARM_CPU_HAS_VFPV3 if BR2_ARM_CPU_MAYBE_HAS_VFPV3 + select BR2_ARM_CPU_HAS_VFPV2 if BR2_ARM_CPU_MAYBE_HAS_VFPV2 + help + For some CPU cores, the VFP extension is optional. Select + this option if you are certain your particular + implementation has VFP support and you want to use it. + +choice + prompt "Target ABI" + default BR2_ARM_EABIHF if BR2_ARM_CPU_HAS_FPU + default BR2_ARM_EABI + depends on BR2_arm || BR2_armeb + help + Application Binary Interface to use. The Application Binary + Interface describes the calling conventions (how arguments + are passed to functions, how the return value is passed, how + system calls are made, etc.). + +config BR2_ARM_EABI + bool "EABI" + help + The EABI is currently the standard ARM ABI, which is used in + most projects. It supports both the 'soft' floating point + model (in which floating point instructions are emulated in + software) and the 'softfp' floating point model (in which + floating point instructions are executed using an hardware + floating point unit, but floating point arguments to + functions are passed in integer registers). + + The 'softfp' floating point model is link-compatible with + the 'soft' floating point model, i.e you can link a library + built 'soft' with some other code built 'softfp'. + + However, passing the floating point arguments in integer + registers is a bit inefficient, so if your ARM processor has + a floating point unit, and you don't have pre-compiled + 'soft' or 'softfp' code, using the EABIhf ABI will provide + better floating point performances. + + If your processor does not have a floating point unit, then + you must use this ABI. + +config BR2_ARM_EABIHF + bool "EABIhf" + depends on BR2_ARM_CPU_HAS_FPU + help + The EABIhf is an extension of EABI which supports the 'hard' + floating point model. This model uses the floating point + unit to execute floating point instructions, and passes + floating point arguments in floating point registers. + + It is more efficient than EABI for floating point related + workload. However, it does not allow to link against code + that has been pre-built for the 'soft' or 'softfp' floating + point models. + + If your processor has a floating point unit, and you don't + depend on existing pre-compiled code, this option is most + likely the best choice. + +endchoice + +choice + prompt "Floating point strategy" + default BR2_ARM_FPU_FP_ARMV8 if BR2_ARM_CPU_HAS_FP_ARMV8 + default BR2_ARM_FPU_FPV5D16 if BR2_ARM_CPU_HAS_FPV5 + default BR2_ARM_FPU_FPV4D16 if BR2_ARM_CPU_HAS_FPV4 + default BR2_ARM_FPU_VFPV4D16 if BR2_ARM_CPU_HAS_VFPV4 + default BR2_ARM_FPU_VFPV3D16 if BR2_ARM_CPU_HAS_VFPV3 + default BR2_ARM_FPU_VFPV2 if BR2_ARM_CPU_HAS_VFPV2 + default BR2_ARM_SOFT_FLOAT if !BR2_ARM_CPU_HAS_FPU + +config BR2_ARM_SOFT_FLOAT + bool "Soft float" + depends on BR2_ARM_EABI + select BR2_SOFT_FLOAT + help + This option allows to use software emulated floating + point. It should be used for ARM cores that do not include a + Vector Floating Point unit, such as ARMv5 cores (ARM926 for + example) or certain ARMv6 cores. + +config BR2_ARM_FPU_VFPV2 + bool "VFPv2" + depends on BR2_ARM_CPU_HAS_VFPV2 + help + This option allows to use the VFPv2 floating point unit, as + available in some ARMv5 processors (ARM926EJ-S) and some + ARMv6 processors (ARM1136JF-S, ARM1176JZF-S and ARM11 + MPCore). + + Note that this option is also safe to use for newer cores + such as Cortex-A, because the VFPv3 and VFPv4 units are + backward compatible with VFPv2. + +config BR2_ARM_FPU_VFPV3 + bool "VFPv3" + depends on BR2_ARM_CPU_HAS_VFPV3 + help + This option allows to use the VFPv3 floating point unit, as + available in some ARMv7 processors (Cortex-A{8, 9}). This + option requires a VFPv3 unit that has 32 double-precision + registers, which is not necessarily the case in all SOCs + based on Cortex-A{8, 9}. If you're unsure, use VFPv3-D16 + instead, which is guaranteed to work on all Cortex-A{8, 9}. + + Note that this option is also safe to use for newer cores + that have a VFPv4 unit, because VFPv4 is backward compatible + with VFPv3. They must of course also have 32 + double-precision registers. + +config BR2_ARM_FPU_VFPV3D16 + bool "VFPv3-D16" + depends on BR2_ARM_CPU_HAS_VFPV3 + help + This option allows to use the VFPv3 floating point unit, as + available in some ARMv7 processors (Cortex-A{8, 9}). This + option requires a VFPv3 unit that has 16 double-precision + registers, which is generally the case in all SOCs based on + Cortex-A{8, 9}, even though VFPv3 is technically optional on + Cortex-A9. This is the safest option for those cores. + + Note that this option is also safe to use for newer cores + such that have a VFPv4 unit, because the VFPv4 is backward + compatible with VFPv3. + +config BR2_ARM_FPU_VFPV4 + bool "VFPv4" + depends on BR2_ARM_CPU_HAS_VFPV4 + help + This option allows to use the VFPv4 floating point unit, as + available in some ARMv7 processors (Cortex-A{5, 7, 12, + 15}). This option requires a VFPv4 unit that has 32 + double-precision registers, which is not necessarily the + case in all SOCs based on Cortex-A{5, 7, 12, 15}. If you're + unsure, you should probably use VFPv4-D16 instead. + + Note that if you want binary code that works on all ARMv7 + cores, including the earlier Cortex-A{8, 9}, you should + instead select VFPv3. + +config BR2_ARM_FPU_VFPV4D16 + bool "VFPv4-D16" + depends on BR2_ARM_CPU_HAS_VFPV4 + help + This option allows to use the VFPv4 floating point unit, as + available in some ARMv7 processors (Cortex-A{5, 7, 12, + 15}). This option requires a VFPv4 unit that has 16 + double-precision registers, which is always available on + Cortex-A12 and Cortex-A15, but optional on Cortex-A5 and + Cortex-A7. + + Note that if you want binary code that works on all ARMv7 + cores, including the earlier Cortex-A{8, 9}, you should + instead select VFPv3-D16. + +config BR2_ARM_FPU_NEON + bool "NEON" + depends on BR2_ARM_CPU_HAS_NEON + help + This option allows to use the NEON SIMD unit, as available + in some ARMv7 processors, as a floating-point unit. It + should however be noted that using NEON for floating point + operations doesn't provide a complete compatibility with the + IEEE 754. + +config BR2_ARM_FPU_NEON_VFPV4 + bool "NEON/VFPv4" + depends on BR2_ARM_CPU_HAS_VFPV4 + depends on BR2_ARM_CPU_HAS_NEON + help + This option allows to use both the VFPv4 and the NEON SIMD + units for floating point operations. Note that some ARMv7 + cores do not necessarily have VFPv4 and/or NEON support, for + example on Cortex-A5 and Cortex-A7, support for VFPv4 and + NEON is optional. + +config BR2_ARM_FPU_FPV4D16 + bool "FPv4-D16" + depends on BR2_ARM_CPU_HAS_FPV4 + help + This option allows to use the FPv4-SP (single precision) + floating point unit, as available in some ARMv7m processors + (Cortex-M4). + +config BR2_ARM_FPU_FPV5D16 + bool "FPv5-D16" + depends on BR2_ARM_CPU_HAS_FPV5 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + help + This option allows to use the FPv5-SP (single precision) + floating point unit, as available in some ARMv7m processors + (Cortex-M7). + + Note that if you want binary code that works on the earlier + Cortex-M4, you should instead select FPv4-D16. + +config BR2_ARM_FPU_FPV5DPD16 + bool "FPv5-DP-D16" + depends on BR2_ARM_CPU_HAS_FPV5 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + help + This option allows to use the FPv5-DP (double precision) + floating point unit, as available in some ARMv7m processors + (Cortex-M7). + + Note that if you want binary code that works on the earlier + Cortex-M4, you should instead select FPv4-D16. + +config BR2_ARM_FPU_FP_ARMV8 + bool "FP-ARMv8" + depends on BR2_ARM_CPU_HAS_FP_ARMV8 + help + This option allows to use the ARMv8 floating point unit. + +config BR2_ARM_FPU_NEON_FP_ARMV8 + bool "NEON/FP-ARMv8" + depends on BR2_ARM_CPU_HAS_FP_ARMV8 + depends on BR2_ARM_CPU_HAS_NEON + help + This option allows to use both the ARMv8 floating point unit + and the NEON SIMD unit for floating point operations. + +endchoice + +choice + prompt "ARM instruction set" + depends on BR2_arm || BR2_armeb + +config BR2_ARM_INSTRUCTIONS_ARM + bool "ARM" + depends on BR2_ARM_CPU_HAS_ARM + help + This option instructs the compiler to generate regular ARM + instructions, that are all 32 bits wide. + +config BR2_ARM_INSTRUCTIONS_THUMB + bool "Thumb" + depends on BR2_ARM_CPU_HAS_THUMB + # Thumb-1 and VFP are not compatible + depends on BR2_ARM_SOFT_FLOAT + help + This option instructions the compiler to generate Thumb + instructions, which allows to mix 16 bits instructions and + 32 bits instructions. This generally provides a much smaller + compiled binary size. + +comment "Thumb1 is not compatible with VFP" + depends on BR2_ARM_CPU_HAS_THUMB + depends on !BR2_ARM_SOFT_FLOAT + +config BR2_ARM_INSTRUCTIONS_THUMB2 + bool "Thumb2" + depends on BR2_ARM_CPU_HAS_THUMB2 + help + This option instructions the compiler to generate Thumb2 + instructions, which allows to mix 16 bits instructions and + 32 bits instructions. This generally provides a much smaller + compiled binary size. + +endchoice + +choice + prompt "MMU Page Size" + default BR2_ARM64_PAGE_SIZE_4K + depends on BR2_aarch64 || BR2_aarch64_be + help + The default is 4KB, and you should probably keep this unless + you know what you are doing. In particular, the kernel + configuration must match this choice. If your kernel is + built by Buildroot, the kernel configuration is + automatically adjusted, but not if you built your kernel + outside of Buildroot. + +config BR2_ARM64_PAGE_SIZE_4K + bool "4KB" + +config BR2_ARM64_PAGE_SIZE_16K + bool "16KB" + +config BR2_ARM64_PAGE_SIZE_64K + bool "64KB" + +endchoice + +config BR2_ARM64_PAGE_SIZE + string + default "4K" if BR2_ARM64_PAGE_SIZE_4K + default "16K" if BR2_ARM64_PAGE_SIZE_16K + default "64K" if BR2_ARM64_PAGE_SIZE_64K + +config BR2_ARCH + default "arm" if BR2_arm + default "armeb" if BR2_armeb + default "aarch64" if BR2_aarch64 + default "aarch64_be" if BR2_aarch64_be + +config BR2_NORMALIZED_ARCH + default "arm" if BR2_arm || BR2_armeb + default "arm64" if BR2_aarch64 || BR2_aarch64_be + +config BR2_ENDIAN + default "LITTLE" if (BR2_arm || BR2_aarch64) + default "BIG" if (BR2_armeb || BR2_aarch64_be) + +config BR2_GCC_TARGET_CPU + # armv4 + default "arm920t" if BR2_arm920t + default "arm922t" if BR2_arm922t + default "fa526" if BR2_fa526 + default "strongarm" if BR2_strongarm + # armv5 + default "arm926ej-s" if BR2_arm926t + default "xscale" if BR2_xscale + # armv6 + default "arm1136j-s" if BR2_arm1136j_s + default "arm1136jf-s" if BR2_arm1136jf_s + default "arm1176jz-s" if BR2_arm1176jz_s + default "arm1176jzf-s" if BR2_arm1176jzf_s + default "mpcore" if BR2_arm11mpcore && BR2_ARM_CPU_HAS_VFPV2 + default "mpcorenovfp" if BR2_arm11mpcore + # armv7a + default "cortex-a5" if BR2_cortex_a5 + default "cortex-a7" if BR2_cortex_a7 + default "cortex-a8" if BR2_cortex_a8 + default "cortex-a9" if BR2_cortex_a9 + default "cortex-a12" if BR2_cortex_a12 + default "cortex-a15" if BR2_cortex_a15 + default "cortex-a15.cortex-a7" if BR2_cortex_a15_a7 + default "cortex-a17" if BR2_cortex_a17 + default "cortex-a17.cortex-a7" if BR2_cortex_a17_a7 + default "marvell-pj4" if BR2_pj4 + # armv7m + default "cortex-m3" if BR2_cortex_m3 + default "cortex-m4" if BR2_cortex_m4 + default "cortex-m7" if BR2_cortex_m7 + # armv8a + default "cortex-a32" if BR2_cortex_a32 + default "cortex-a35" if BR2_cortex_a35 + default "cortex-a53" if BR2_cortex_a53 + default "cortex-a57" if BR2_cortex_a57 + default "cortex-a57.cortex-a53" if BR2_cortex_a57_a53 + default "cortex-a72" if BR2_cortex_a72 + default "cortex-a72.cortex-a53" if BR2_cortex_a72_a53 + default "cortex-a73" if BR2_cortex_a73 + default "cortex-a73.cortex-a35" if BR2_cortex_a73_a35 + default "cortex-a73.cortex-a53" if BR2_cortex_a73_a53 + default "emag" if BR2_emag + default "exynos-m1" if BR2_exynos_m1 + default "falkor" if BR2_falkor + default "phecda" if BR2_phecda + default "qdf24xx" if BR2_qdf24xx + default "thunderx" if BR2_thunderx && !BR2_TOOLCHAIN_GCC_AT_LEAST_9 + default "octeontx" if BR2_thunderx && BR2_TOOLCHAIN_GCC_AT_LEAST_9 + default "thunderxt81" if BR2_thunderxt81 && !BR2_TOOLCHAIN_GCC_AT_LEAST_9 + default "octeontx81" if BR2_thunderxt81 && BR2_TOOLCHAIN_GCC_AT_LEAST_9 + default "thunderxt83" if BR2_thunderxt83 && !BR2_TOOLCHAIN_GCC_AT_LEAST_9 + default "octeontx83" if BR2_thunderxt83 && BR2_TOOLCHAIN_GCC_AT_LEAST_9 + default "thunderxt88" if BR2_thunderxt88 + default "thunderxt88p1" if BR2_thunderxt88p1 + default "xgene1" if BR2_xgene1 + # armv8.1a + default "thunderx2t99" if BR2_thunderx2t99 + default "thunderx2t99p1" if BR2_thunderx2t99p1 + default "vulcan" if BR2_vulcan + # armv8.2a + default "cortex-a55" if BR2_cortex_a55 + default "cortex-a75" if BR2_cortex_a75 + default "cortex-a75.cortex-a55" if BR2_cortex_a75_a55 + default "cortex-a76" if BR2_cortex_a76 + default "cortex-a76.cortex-a55" if BR2_cortex_a76_a55 + default "neoverse-n1" if BR2_neoverse_n1 + default "tsv110" if BR2_tsv110 + # armv8.4a + default "saphira" if BR2_saphira + +config BR2_GCC_TARGET_ABI + default "aapcs-linux" if BR2_arm || BR2_armeb + default "lp64" if BR2_aarch64 || BR2_aarch64_be + +config BR2_GCC_TARGET_FPU + default "vfp" if BR2_ARM_FPU_VFPV2 + default "vfpv3" if BR2_ARM_FPU_VFPV3 + default "vfpv3-d16" if BR2_ARM_FPU_VFPV3D16 + default "vfpv4" if BR2_ARM_FPU_VFPV4 + default "vfpv4-d16" if BR2_ARM_FPU_VFPV4D16 + default "neon" if BR2_ARM_FPU_NEON + default "neon-vfpv4" if BR2_ARM_FPU_NEON_VFPV4 + default "fpv4-sp-d16" if BR2_ARM_FPU_FPV4D16 + default "fpv5-sp-d16" if BR2_ARM_FPU_FPV5D16 + default "fpv5-d16" if BR2_ARM_FPU_FPV5DPD16 + default "fp-armv8" if BR2_ARM_FPU_FP_ARMV8 + default "neon-fp-armv8" if BR2_ARM_FPU_NEON_FP_ARMV8 + depends on BR2_arm || BR2_armeb + +config BR2_GCC_TARGET_FLOAT_ABI + default "soft" if BR2_ARM_SOFT_FLOAT + default "softfp" if !BR2_ARM_SOFT_FLOAT && BR2_ARM_EABI + default "hard" if !BR2_ARM_SOFT_FLOAT && BR2_ARM_EABIHF + +config BR2_GCC_TARGET_MODE + default "arm" if BR2_ARM_INSTRUCTIONS_ARM + default "thumb" if BR2_ARM_INSTRUCTIONS_THUMB || BR2_ARM_INSTRUCTIONS_THUMB2 + +config BR2_READELF_ARCH_NAME + default "ARM" if BR2_arm || BR2_armeb + default "AArch64" if BR2_aarch64 || BR2_aarch64_be + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/arch/Config.in.m68k b/arch/Config.in.m68k new file mode 100644 index 00000000..9fd22aaf --- /dev/null +++ b/arch/Config.in.m68k @@ -0,0 +1,46 @@ +config BR2_ARCH + default "m68k" if BR2_m68k + +config BR2_NORMALIZED_ARCH + default "m68k" + +config BR2_ENDIAN + default "BIG" + +# symbols used to distinguish between m68k and coldfire +# for gcc multilib +config BR2_m68k_m68k + bool + +config BR2_m68k_cf + bool + +# coldfire variants will be added later +choice + prompt "Target CPU" + default BR2_m68k_68040 + depends on BR2_m68k + help + Specific CPU variant to use + +config BR2_m68k_68040 + bool "68040" + select BR2_m68k_m68k + select BR2_USE_MMU + +config BR2_m68k_cf5208 + bool "5208" + select BR2_m68k_cf + select BR2_SOFT_FLOAT + +endchoice + +config BR2_GCC_TARGET_CPU + default "68040" if BR2_m68k_68040 + default "5208" if BR2_m68k_cf5208 + +config BR2_READELF_ARCH_NAME + default "MC68000" + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/arch/Config.in.microblaze b/arch/Config.in.microblaze new file mode 100644 index 00000000..0502001a --- /dev/null +++ b/arch/Config.in.microblaze @@ -0,0 +1,20 @@ +config BR2_ARCH + default "microblazeel" if BR2_microblazeel + default "microblaze" if BR2_microblazebe + +config BR2_NORMALIZED_ARCH + default "microblaze" + +config BR2_ENDIAN + default "LITTLE" if BR2_microblazeel + default "BIG" if BR2_microblazebe + +config BR2_READELF_ARCH_NAME + default "Xilinx MicroBlaze" + +config BR2_microblaze + bool + default y if BR2_microblazeel || BR2_microblazebe + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/arch/Config.in.mips b/arch/Config.in.mips new file mode 100644 index 00000000..29b4180d --- /dev/null +++ b/arch/Config.in.mips @@ -0,0 +1,282 @@ +# mips default CPU ISAs +config BR2_MIPS_CPU_MIPS32 + bool + select BR2_MIPS_NAN_LEGACY +config BR2_MIPS_CPU_MIPS32R2 + bool + select BR2_MIPS_NAN_LEGACY +config BR2_MIPS_CPU_MIPS32R3 + bool + select BR2_MIPS_NAN_LEGACY +config BR2_MIPS_CPU_MIPS32R5 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_MIPS_CPU_MIPS32R6 + bool + select BR2_MIPS_NAN_2008 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_MIPS_CPU_MIPS64 + bool + select BR2_MIPS_NAN_LEGACY +config BR2_MIPS_CPU_MIPS64R2 + bool + select BR2_MIPS_NAN_LEGACY +config BR2_MIPS_CPU_MIPS64R3 + bool + select BR2_MIPS_NAN_LEGACY +config BR2_MIPS_CPU_MIPS64R5 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_MIPS_CPU_MIPS64R6 + bool + select BR2_MIPS_NAN_2008 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + +choice + prompt "Target Architecture Variant" + default BR2_mips_32 if BR2_mips || BR2_mipsel + default BR2_mips_64 if BR2_mips64 || BR2_mips64el + depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + help + Specific CPU variant to use + + 64bit capable: mips4, 64, 64r2, 64r3, 64r5, 64r6 + non-64bit capable: mips4, 32, 32r2, 32r3, 32r5, 32r6 + +config BR2_mips_32 + bool "Generic MIPS32" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32 +config BR2_mips_32r2 + bool "Generic MIPS32R2" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R2 +config BR2_mips_32r3 + bool "Generic MIPS32R3" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R3 +config BR2_mips_32r5 + bool "Generic MIPS32R5" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R5 +config BR2_mips_32r6 + bool "Generic MIPS32R6" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R6 +config BR2_mips_interaptiv + bool "interAptiv" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R2 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_mips_m5150 + bool "M5150" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R5 + select BR2_MIPS_NAN_2008 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_mips_m6250 + bool "M6250" + depends on !BR2_ARCH_IS_64 + select BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT + select BR2_MIPS_CPU_MIPS32R6 +config BR2_mips_p5600 + bool "P5600" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R5 + select BR2_MIPS_NAN_2008 +config BR2_mips_xburst + bool "XBurst" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R2 + help + The Ingenic XBurst is a MIPS32R2 microprocessor. It has a + bug in the FPU that can generate incorrect results in + certain cases. The problem shows up when you have several + fused madd instructions in sequence with dependant + operands. This requires the -mno-fused-madd compiler option + to be used in order to prevent emitting these instructions. + + See http://www.ingenic.com/en/?xburst.html +config BR2_mips4 + bool "MIPS IV" +config BR2_mips_64 + bool "Generic MIPS64" + depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64 +config BR2_mips_64r2 + bool "Generic MIPS64R2" + depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64R2 +config BR2_mips_64r3 + bool "Generic MIPS64R3" + depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64R3 +config BR2_mips_64r5 + bool "Generic MIPS64R5" + depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64R5 +config BR2_mips_64r6 + bool "Generic MIPS64R6" + depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64R6 +config BR2_mips_i6400 + bool "I6400" + depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64R6 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_mips_octeon2 + bool "Octeon II" + depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64R2 + help + Marvell (formerly Cavium Networks) Octeon II CN60XX + processors. +config BR2_mips_octeon3 + bool "Octeon III" + depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64R3 + help + Marvell (formerly Cavium Networks) Octeon III CN7XXX + processors. +config BR2_mips_p6600 + bool "P6600" + depends on BR2_ARCH_IS_64 + select BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT + select BR2_MIPS_CPU_MIPS64R6 +endchoice + +choice + prompt "Target ABI" + default BR2_MIPS_NABI32 + depends on BR2_mips64 || BR2_mips64el + + help + Application Binary Interface to use + +config BR2_MIPS_NABI32 + bool "n32" + depends on BR2_ARCH_IS_64 + select BR2_KERNEL_64_USERLAND_32 +config BR2_MIPS_NABI64 + bool "n64" + depends on BR2_ARCH_IS_64 +endchoice + +config BR2_MIPS_SOFT_FLOAT + bool "Use soft-float" + default y + depends on !BR2_mips_octeon3 # hard-float only + select BR2_SOFT_FLOAT + help + If your target CPU does not have a Floating Point Unit (FPU) + or a kernel FPU emulator, but you still wish to support + floating point functions, then everything will need to be + compiled with soft floating point support (-msoft-float). + +choice + prompt "FP mode" + default BR2_MIPS_FP32_MODE_XX + depends on !BR2_ARCH_IS_64 && !BR2_MIPS_SOFT_FLOAT + help + MIPS32 supports different FP modes (32,xx,64). Information + about FP modes can be found here: + https://sourceware.org/binutils/docs/as/MIPS-Options.html + https://dmz-portal.imgtec.com/wiki/MIPS_O32_ABI_-_FR0_and_FR1_Interlinking#5._Generating_modeless_code + +config BR2_MIPS_FP32_MODE_32 + bool "32" + depends on !BR2_MIPS_CPU_MIPS32R6 + +config BR2_MIPS_FP32_MODE_XX + bool "xx" + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + +config BR2_MIPS_FP32_MODE_64 + bool "64" + depends on !BR2_MIPS_CPU_MIPS32 +endchoice + +config BR2_GCC_TARGET_FP32_MODE + default "32" if BR2_MIPS_FP32_MODE_32 + default "xx" if BR2_MIPS_FP32_MODE_XX + default "64" if BR2_MIPS_FP32_MODE_64 + +config BR2_MIPS_NAN_LEGACY + bool + +config BR2_MIPS_NAN_2008 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 + +choice + prompt "Target NaN" + default BR2_MIPS_ENABLE_NAN_2008 + depends on BR2_mips_32r5 || BR2_mips_64r5 + help + MIPS supports two different NaN encodings, legacy and 2008. + Information about MIPS NaN encodings can be found here: + https://sourceware.org/binutils/docs/as/MIPS-NaN-Encodings.html + +config BR2_MIPS_ENABLE_NAN_LEGACY + bool "legacy" + select BR2_MIPS_NAN_LEGACY + +config BR2_MIPS_ENABLE_NAN_2008 + bool "2008" + depends on !BR2_MIPS_SOFT_FLOAT + select BR2_MIPS_NAN_2008 +endchoice + +config BR2_GCC_TARGET_NAN + default "legacy" if BR2_MIPS_NAN_LEGACY + default "2008" if BR2_MIPS_NAN_2008 + +config BR2_ARCH + default "mips" if BR2_mips + default "mipsel" if BR2_mipsel + default "mips64" if BR2_mips64 + default "mips64el" if BR2_mips64el + +config BR2_NORMALIZED_ARCH + default "mips" + +config BR2_ENDIAN + default "LITTLE" if BR2_mipsel || BR2_mips64el + default "BIG" if BR2_mips || BR2_mips64 + +config BR2_GCC_TARGET_ARCH + default "mips32" if BR2_mips_32 + default "mips32r2" if BR2_mips_32r2 + default "mips32r3" if BR2_mips_32r3 + default "mips32r5" if BR2_mips_32r5 + default "mips32r6" if BR2_mips_32r6 + default "interaptiv" if BR2_mips_interaptiv + default "m5101" if BR2_mips_m5150 + default "m6201" if BR2_mips_m6250 + default "p5600" if BR2_mips_p5600 + default "mips32r2" if BR2_mips_xburst + default "mips64" if BR2_mips_64 + default "mips64r2" if BR2_mips_64r2 + default "mips64r3" if BR2_mips_64r3 + default "mips64r5" if BR2_mips_64r5 + default "mips64r6" if BR2_mips_64r6 + default "i6400" if BR2_mips_i6400 + default "octeon2" if BR2_mips_octeon2 + default "octeon3" if BR2_mips_octeon3 + default "p6600" if BR2_mips_p6600 + default "mips4" if BR2_mips4 + +config BR2_MIPS_OABI32 + bool + default y if BR2_mips || BR2_mipsel + +config BR2_GCC_TARGET_ABI + default "32" if BR2_MIPS_OABI32 + default "n32" if BR2_MIPS_NABI32 + default "64" if BR2_MIPS_NABI64 + +config BR2_READELF_ARCH_NAME + default "MIPS R3000" + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/arch/Config.in.nios2 b/arch/Config.in.nios2 new file mode 100644 index 00000000..a5d7e66d --- /dev/null +++ b/arch/Config.in.nios2 @@ -0,0 +1,14 @@ +config BR2_ARCH + default "nios2" + +config BR2_NORMALIZED_ARCH + default "nios2" + +config BR2_ENDIAN + default "LITTLE" + +config BR2_READELF_ARCH_NAME + default "Altera Nios II" + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/arch/Config.in.or1k b/arch/Config.in.or1k new file mode 100644 index 00000000..f42aef9e --- /dev/null +++ b/arch/Config.in.or1k @@ -0,0 +1,14 @@ +config BR2_ARCH + default "or1k" + +config BR2_NORMALIZED_ARCH + default "openrisc" + +config BR2_ENDIAN + default "BIG" + +config BR2_READELF_ARCH_NAME + default "OpenRISC 1000" + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/arch/Config.in.powerpc b/arch/Config.in.powerpc new file mode 100644 index 00000000..3f4d348d --- /dev/null +++ b/arch/Config.in.powerpc @@ -0,0 +1,216 @@ +config BR2_POWERPC_CPU_HAS_ALTIVEC + bool + +config BR2_POWERPC_CPU_HAS_VSX + bool + select BR2_POWERPC_CPU_HAS_ALTIVEC + +config BR2_POWERPC_CPU_HAS_SPE + bool + +choice + prompt "Target Architecture Variant" + default BR2_generic_powerpc + help + Specific CPU variant to use +config BR2_generic_powerpc + bool "generic" + # No C library supports this variant on ppc64le + depends on BR2_powerpc || BR2_powerpc64 +config BR2_powerpc_401 + bool "401" + depends on BR2_powerpc +config BR2_powerpc_403 + bool "403" + depends on BR2_powerpc +config BR2_powerpc_405 + bool "405" + depends on BR2_powerpc +config BR2_powerpc_405fp + bool "405 with FPU" + depends on BR2_powerpc +config BR2_powerpc_440 + bool "440" + depends on BR2_powerpc +config BR2_powerpc_440fp + bool "440 with FPU" + depends on BR2_powerpc +config BR2_powerpc_464 + bool "464" + depends on BR2_powerpc +config BR2_powerpc_464fp + bool "464 with FPU" + depends on BR2_powerpc +config BR2_powerpc_476 + bool "476" + depends on BR2_powerpc +config BR2_powerpc_476fp + bool "476 with FPU" + depends on BR2_powerpc +config BR2_powerpc_505 + bool "505" + depends on BR2_powerpc +config BR2_powerpc_602 + bool "602" + depends on BR2_powerpc +config BR2_powerpc_603 + bool "603" + depends on BR2_powerpc +config BR2_powerpc_603e + bool "603e" + depends on BR2_powerpc +config BR2_powerpc_604 + bool "604" + depends on BR2_powerpc +config BR2_powerpc_604e + bool "604e" + depends on BR2_powerpc +config BR2_powerpc_620 + bool "620" + depends on BR2_powerpc || BR2_powerpc64 +config BR2_powerpc_630 + bool "630" + depends on BR2_powerpc || BR2_powerpc64 +config BR2_powerpc_740 + bool "740" + depends on BR2_powerpc +config BR2_powerpc_7400 + bool "7400" + depends on BR2_powerpc + select BR2_POWERPC_CPU_HAS_ALTIVEC +config BR2_powerpc_7450 + bool "7450" + depends on BR2_powerpc + select BR2_POWERPC_CPU_HAS_ALTIVEC +config BR2_powerpc_750 + bool "750" + depends on BR2_powerpc +config BR2_powerpc_821 + bool "821" + depends on BR2_powerpc +config BR2_powerpc_823 + bool "823" + depends on BR2_powerpc +config BR2_powerpc_860 + bool "860" + depends on BR2_powerpc +config BR2_powerpc_970 + bool "970" + depends on BR2_powerpc || BR2_powerpc64 + select BR2_POWERPC_CPU_HAS_ALTIVEC +config BR2_powerpc_8540 + bool "8540 / e500v1" + depends on BR2_powerpc + select BR2_POWERPC_CPU_HAS_SPE +config BR2_powerpc_8548 + bool "8548 / e500v2" + depends on BR2_powerpc + select BR2_POWERPC_CPU_HAS_SPE +config BR2_powerpc_e300c2 + bool "e300c2" + depends on BR2_powerpc +config BR2_powerpc_e300c3 + bool "e300c3" + depends on BR2_powerpc +config BR2_powerpc_e500mc + bool "e500mc" + depends on BR2_powerpc +config BR2_powerpc_e5500 + bool "e5500" + depends on BR2_powerpc || BR2_powerpc64 +config BR2_powerpc_e6500 + bool "e6500" + depends on BR2_powerpc || BR2_powerpc64 + select BR2_POWERPC_CPU_HAS_ALTIVEC +config BR2_powerpc_power4 + bool "power4" + depends on BR2_powerpc || BR2_powerpc64 +config BR2_powerpc_power5 + bool "power5" + depends on BR2_powerpc || BR2_powerpc64 +config BR2_powerpc_power6 + bool "power6" + depends on BR2_powerpc || BR2_powerpc64 + select BR2_POWERPC_CPU_HAS_ALTIVEC +config BR2_powerpc_power7 + bool "power7" + depends on BR2_powerpc || BR2_powerpc64 + select BR2_POWERPC_CPU_HAS_VSX +config BR2_powerpc_power8 + bool "power8" + select BR2_POWERPC_CPU_HAS_VSX +config BR2_powerpc_power9 + bool "power9" + select BR2_POWERPC_CPU_HAS_ALTIVEC + select BR2_POWERPC_CPU_HAS_VSX + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +endchoice + +config BR2_POWERPC_SOFT_FLOAT + bool "Use soft-float" + select BR2_SOFT_FLOAT + help + If your target CPU does not have a Floating Point Unit (FPU) + or a kernel FPU emulator, but you still wish to support + floating point functions, then everything will need to be + compiled with soft floating point support (-msoft-float). + +config BR2_ARCH + default "powerpc" if BR2_powerpc + default "powerpc64" if BR2_powerpc64 + default "powerpc64le" if BR2_powerpc64le + +config BR2_NORMALIZED_ARCH + default "powerpc" + +config BR2_ENDIAN + default "BIG" if BR2_powerpc || BR2_powerpc64 + default "LITTLE" if BR2_powerpc64le + +config BR2_GCC_TARGET_CPU + default "401" if BR2_powerpc_401 + default "403" if BR2_powerpc_403 + default "405" if BR2_powerpc_405 + default "405fp" if BR2_powerpc_405fp + default "440" if BR2_powerpc_440 + default "440fp" if BR2_powerpc_440fp + default "464" if BR2_powerpc_464 + default "464fp" if BR2_powerpc_464fp + default "476" if BR2_powerpc_476 + default "476fp" if BR2_powerpc_476fp + default "505" if BR2_powerpc_505 + default "602" if BR2_powerpc_602 + default "603" if BR2_powerpc_603 + default "603e" if BR2_powerpc_603e + default "604" if BR2_powerpc_604 + default "604e" if BR2_powerpc_604e + default "620" if BR2_powerpc_620 + default "630" if BR2_powerpc_630 + default "740" if BR2_powerpc_740 + default "7400" if BR2_powerpc_7400 + default "7450" if BR2_powerpc_7450 + default "750" if BR2_powerpc_750 + default "821" if BR2_powerpc_821 + default "823" if BR2_powerpc_823 + default "860" if BR2_powerpc_860 + default "970" if BR2_powerpc_970 + default "8540" if BR2_powerpc_8540 + default "8548" if BR2_powerpc_8548 + default "e300c2" if BR2_powerpc_e300c2 + default "e300c3" if BR2_powerpc_e300c3 + default "e500mc" if BR2_powerpc_e500mc + default "e5500" if BR2_powerpc_e5500 + default "e6500" if BR2_powerpc_e6500 + default "power4" if BR2_powerpc_power4 + default "power5" if BR2_powerpc_power5 + default "power6" if BR2_powerpc_power6 + default "power7" if BR2_powerpc_power7 + default "power8" if BR2_powerpc_power8 + default "power9" if BR2_powerpc_power9 + +config BR2_READELF_ARCH_NAME + default "PowerPC" if BR2_powerpc + default "PowerPC64" if BR2_powerpc64 || BR2_powerpc64le + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/arch/Config.in.riscv b/arch/Config.in.riscv new file mode 100644 index 00000000..23d095d1 --- /dev/null +++ b/arch/Config.in.riscv @@ -0,0 +1,126 @@ +# RISC-V CPU ISA extensions. + +choice + prompt "Target Architecture Variant" + default BR2_riscv_g + +config BR2_riscv_g + bool "General purpose (G)" + select BR2_RISCV_ISA_RVI + select BR2_RISCV_ISA_RVM + select BR2_RISCV_ISA_RVA + select BR2_RISCV_ISA_RVF + select BR2_RISCV_ISA_RVD + help + General purpose (G) is equivalent to IMAFD. + +config BR2_riscv_custom + bool "Custom architecture" + select BR2_RISCV_ISA_RVI + +endchoice + +comment "Instruction Set Extensions" + +config BR2_RISCV_ISA_RVI + bool "Base Integer (I)" + +config BR2_RISCV_ISA_RVM + bool "Integer Multiplication and Division (M)" + +config BR2_RISCV_ISA_RVA + bool "Atomic Instructions (A)" + +config BR2_RISCV_ISA_RVF + bool "Single-precision Floating-point (F)" + +config BR2_RISCV_ISA_RVD + bool "Double-precision Floating-point (D)" + depends on BR2_RISCV_ISA_RVF + +config BR2_RISCV_ISA_RVC + bool "Compressed Instructions (C)" + +config BR2_RISCV_ISA_RVV + bool "Vector Instructions (V)" + select BR2_ARCH_NEEDS_GCC_AT_LEAST_12 + +choice + prompt "Target Architecture Size" + default BR2_RISCV_64 + +config BR2_RISCV_32 + bool "32-bit" + +config BR2_RISCV_64 + bool "64-bit" + select BR2_ARCH_IS_64 + +endchoice + +config BR2_RISCV_USE_MMU + bool "MMU support" + default y + select BR2_USE_MMU + help + Enable this option if your RISC-V core has a MMU (Memory + Management Unit). + +choice + prompt "Target ABI" + default BR2_RISCV_ABI_ILP32D if !BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVD + default BR2_RISCV_ABI_ILP32F if !BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVF + default BR2_RISCV_ABI_ILP32 if !BR2_ARCH_IS_64 + default BR2_RISCV_ABI_LP64D if BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVD + default BR2_RISCV_ABI_LP64F if BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVF + default BR2_RISCV_ABI_LP64 if BR2_ARCH_IS_64 + +config BR2_RISCV_ABI_ILP32 + bool "ilp32" + depends on !BR2_ARCH_IS_64 + +config BR2_RISCV_ABI_ILP32F + bool "ilp32f" + depends on !BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVF + +config BR2_RISCV_ABI_ILP32D + bool "ilp32d" + depends on !BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVD + +config BR2_RISCV_ABI_LP64 + bool "lp64" + depends on BR2_ARCH_IS_64 + +config BR2_RISCV_ABI_LP64F + bool "lp64f" + depends on BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVF + depends on BR2_USE_MMU + +config BR2_RISCV_ABI_LP64D + bool "lp64d" + depends on BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVD +endchoice + +config BR2_ARCH + default "riscv32" if !BR2_ARCH_IS_64 + default "riscv64" if BR2_ARCH_IS_64 + +config BR2_NORMALIZED_ARCH + default "riscv" + +config BR2_ENDIAN + default "LITTLE" + +config BR2_GCC_TARGET_ABI + default "ilp32" if BR2_RISCV_ABI_ILP32 + default "ilp32f" if BR2_RISCV_ABI_ILP32F + default "ilp32d" if BR2_RISCV_ABI_ILP32D + default "lp64" if BR2_RISCV_ABI_LP64 + default "lp64f" if BR2_RISCV_ABI_LP64F + default "lp64d" if BR2_RISCV_ABI_LP64D + +config BR2_READELF_ARCH_NAME + default "RISC-V" + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/arch/Config.in.s390x b/arch/Config.in.s390x new file mode 100644 index 00000000..da6ac55d --- /dev/null +++ b/arch/Config.in.s390x @@ -0,0 +1,32 @@ +choice + prompt "Target Architecture Variant" + help + Specific CPU variant to use + +config BR2_s390x_z13 + bool "z13" + +config BR2_s390x_z14 + bool "z14" + +config BR2_s390x_z15 + bool "z15" + +endchoice + +config BR2_ARCH + default "s390x" if BR2_s390x + +config BR2_NORMALIZED_ARCH + default "s390" + +config BR2_ENDIAN + default "BIG" + +config BR2_GCC_TARGET_ARCH + default "arch11" if BR2_s390x_z13 + default "arch12" if BR2_s390x_z14 + default "arch13" if BR2_s390x_z15 + +config BR2_READELF_ARCH_NAME + default "IBM S/390" if BR2_s390x diff --git a/arch/Config.in.sh b/arch/Config.in.sh new file mode 100644 index 00000000..d3acc8cc --- /dev/null +++ b/arch/Config.in.sh @@ -0,0 +1,35 @@ +choice + prompt "Target Architecture Variant" + default BR2_sh4 + depends on BR2_sh + help + Specific CPU variant to use + +config BR2_sh4 + bool "sh4 (SH4 little endian)" +config BR2_sh4eb + bool "sh4eb (SH4 big endian)" +config BR2_sh4a + bool "sh4a (SH4A little endian)" +config BR2_sh4aeb + bool "sh4aeb (SH4A big endian)" +endchoice + +config BR2_ARCH + default "sh4" if BR2_sh4 + default "sh4eb" if BR2_sh4eb + default "sh4a" if BR2_sh4a + default "sh4aeb" if BR2_sh4aeb + +config BR2_NORMALIZED_ARCH + default "sh" + +config BR2_ENDIAN + default "LITTLE" if BR2_sh4 || BR2_sh4a + default "BIG" if BR2_sh4eb || BR2_sh4aeb + +config BR2_READELF_ARCH_NAME + default "Renesas / SuperH SH" + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/arch/Config.in.sparc b/arch/Config.in.sparc new file mode 100644 index 00000000..f5f4bd67 --- /dev/null +++ b/arch/Config.in.sparc @@ -0,0 +1,41 @@ +choice + prompt "Target Architecture Variant" + default BR2_sparc_v8 if BR2_sparc + default BR2_sparc_v9 if BR2_sparc64 + depends on BR2_sparc || BR2_sparc64 + help + Specific CPU variant to use + +config BR2_sparc_v8 + bool "v8" + depends on BR2_sparc +config BR2_sparc_leon3 + bool "leon3" + depends on BR2_sparc +config BR2_sparc_v9 + bool "v9" + depends on BR2_sparc64 +endchoice + +config BR2_ARCH + default "sparc" if BR2_sparc + default "sparc64" if BR2_sparc64 + +config BR2_NORMALIZED_ARCH + default "sparc" if BR2_sparc + default "sparc64" if BR2_sparc64 + +config BR2_ENDIAN + default "BIG" + +config BR2_GCC_TARGET_CPU + default "leon3" if BR2_sparc_leon3 + default "v8" if BR2_sparc_v8 + default "ultrasparc" if BR2_sparc_v9 + +config BR2_READELF_ARCH_NAME + default "Sparc" if BR2_sparc + default "Sparc v9" if BR2_sparc64 + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/arch/Config.in.x86 b/arch/Config.in.x86 new file mode 100644 index 00000000..f9b32130 --- /dev/null +++ b/arch/Config.in.x86 @@ -0,0 +1,810 @@ +# i386/x86_64 cpu features +config BR2_X86_CPU_HAS_MMX + bool +config BR2_X86_CPU_HAS_3DNOW + bool +config BR2_X86_CPU_HAS_SSE + bool +config BR2_X86_CPU_HAS_SSE2 + bool +config BR2_X86_CPU_HAS_SSE3 + bool +config BR2_X86_CPU_HAS_SSSE3 + bool +config BR2_X86_CPU_HAS_SSE4 + bool +config BR2_X86_CPU_HAS_SSE42 + bool +config BR2_X86_CPU_HAS_AVX + bool +config BR2_X86_CPU_HAS_AVX2 + bool + +# BR2_X86_CPU_HAS_AVX512 implies the following AVX512 extensions: +# AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL +# This subset is common to Intel Xeon (excl Xeon Phi), AMD Zen 4, and +# the x86-64-v4 psABI. +# +# Only select BR2_X86_CPU_HAS_AVX512 if the CPU supports this entire +# subset of extensions. +config BR2_X86_CPU_HAS_AVX512 + bool + +# This list of CPU architecture variant is (loosely) ordered according +# to the gcc documentation at +# https://gcc.gnu.org/onlinedocs/gcc-13.2.0/gcc/x86-Options.html +choice + prompt "Target Architecture Variant" + default BR2_x86_i586 if BR2_i386 + depends on BR2_i386 || BR2_x86_64 + help + Specific CPU variant to use + +config BR2_x86_i486 + bool "i486" + depends on !BR2_x86_64 +config BR2_x86_i586 + bool "i586" + depends on !BR2_x86_64 +config BR2_x86_x1000 + bool "x1000" + depends on !BR2_x86_64 + help + The Intel X1000 is a Pentium class microprocessor in the + Quark (sub-Atom) Product Line. The X1000 has a bug on the + lock prefix requiring that prefix must be stripped at build + time. + + See https://en.wikipedia.org/wiki/Intel_Quark + +config BR2_x86_i686 + bool "i686" + depends on !BR2_x86_64 +config BR2_x86_pentiumpro + bool "pentium pro" + depends on !BR2_x86_64 +config BR2_x86_pentium_mmx + bool "pentium MMX" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX +config BR2_x86_pentium_m + bool "pentium mobile" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 +config BR2_x86_pentium2 + bool "pentium2" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX +config BR2_x86_pentium3 + bool "pentium3" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE +config BR2_x86_pentium4 + bool "pentium4" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 +config BR2_x86_prescott + bool "prescott" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 +config BR2_x86_x86_64 + bool "x86-64" + depends on BR2_x86_64 + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + help + This option corresponds to -march=x86-64, documented as a + "Generic CPU with 64-bit extensions" by the GCC + documentation. It is a 64-bit CPU with MMX, SSE and SSE2 + support. +config BR2_x86_x86_64_v2 + bool "x86-64-v2" + depends on BR2_x86_64 + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_11 + help + This option corresponds to the x86-64-v2 micro-architecture + level, as defined by the x86-64 psABI document, see + https://gitlab.com/x86-psABIs/x86-64-ABI/-/blob/master/x86-64-ABI/low-level-sys-info.tex. + + It is close to the Nehalem CPU architecture, and is + applicable for CPUs that support CMPXCHG16B, LAHF-SAHF, + POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3. +config BR2_x86_x86_64_v3 + bool "x86-64-v3" + depends on BR2_x86_64 + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_11 + help + This option corresponds to the x86-64-v3 micro-architecture + level, as defined by the x86-64 psABI document, see + https://gitlab.com/x86-psABIs/x86-64-ABI/-/blob/master/x86-64-ABI/low-level-sys-info.tex. + + It is close to the Haswell CPU architecture, and is + applicable for CPUs that support all of x86-64-v2 plus AVX, + AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE. +config BR2_x86_x86_64_v4 + bool "x86-64-v4" + depends on BR2_x86_64 + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_X86_CPU_HAS_AVX512 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_11 + help + This option corresponds to the x86-64-v4 micro-architecture + level, as defined by the x86-64 psABI document, see + https://gitlab.com/x86-psABIs/x86-64-ABI/-/blob/master/x86-64-ABI/low-level-sys-info.tex. + + It is applicable for CPUs that support all of x86-64-v3 plus + AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL. +config BR2_x86_nocona + bool "nocona" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 +config BR2_x86_core2 + bool "core2" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 +config BR2_x86_corei7 + bool "corei7" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + help + This option is deprecated. Since gcc 4.9, the gcc option + "nehalem" is preferred. Use BR2_x86_nehalem instead. +config BR2_x86_nehalem + bool "nehalem" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 +config BR2_x86_westmere + bool "westmere" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 +config BR2_x86_corei7_avx + bool "corei7-avx" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + help + This option is deprecated. Since gcc 4.9, the gcc option + "sandybridge" is preferred. Use BR2_x86_sandybridge instead. +config BR2_x86_sandybridge + bool "sandybridge" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 +config BR2_x86_ivybridge + bool "ivybridge" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 +config BR2_x86_core_avx2 + bool "core-avx2" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + help + This option is deprecated. Since gcc 4.9, the gcc option + "haswell" is preferred. Use BR2_x86_haswell instead. +config BR2_x86_haswell + bool "haswell" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 +config BR2_x86_broadwell + bool "broadwell" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 +config BR2_x86_skylake + bool "skylake" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_x86_atom + bool "atom" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + help + This option is deprecated. Since gcc 4.9, the gcc option + "bonnell" is preferred. Use BR2_x86_bonnell instead. +config BR2_x86_bonnell + bool "bonnell" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 +config BR2_x86_silvermont + bool "silvermont" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 +config BR2_x86_goldmont + bool "goldmont" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_9 +config BR2_x86_goldmont_plus + bool "goldmont-plus" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_9 +config BR2_x86_tremont + bool "tremont" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_9 +config BR2_x86_sierraforest + bool "sierraforest" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_13 +config BR2_x86_grandridge + bool "grandridge" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_13 +config BR2_x86_skylake_avx512 + bool "skylake-avx512" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_X86_CPU_HAS_AVX512 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_x86_cannonlake + bool "cannonlake" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_X86_CPU_HAS_AVX512 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_8 +config BR2_x86_icelake_client + bool "icelake-client" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_X86_CPU_HAS_AVX512 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_8 +config BR2_x86_icelake_server + bool "icelake-server" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_X86_CPU_HAS_AVX512 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_8 +config BR2_x86_cascadelake + bool "cascadelake" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_X86_CPU_HAS_AVX512 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_9 +config BR2_x86_cooperlake + bool "cooperlake" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_X86_CPU_HAS_AVX512 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_10 +config BR2_x86_tigerlake + bool "tigerlake" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_X86_CPU_HAS_AVX512 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_9 +config BR2_x86_sapphirerapids + bool "sapphirerapids" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_X86_CPU_HAS_AVX512 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_11 + help + Use for Sapphire Rapids, Emerald Rapids +config BR2_x86_alderlake + bool "alderlake" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_11 + help + Use for Alder Lake, Raptor Lake, Meteor Lake +config BR2_x86_rocketlake + bool "rocketlake" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_X86_CPU_HAS_AVX512 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_11 +config BR2_x86_graniterapids + bool "graniterapids" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_X86_CPU_HAS_AVX512 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_13 +config BR2_x86_graniterapids_d + bool "graniterapids-d" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_X86_CPU_HAS_AVX512 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_13 +config BR2_x86_k6 + bool "k6" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX +config BR2_x86_k6_2 + bool "k6-2" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_3DNOW +config BR2_x86_athlon + bool "athlon" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_3DNOW +config BR2_x86_athlon_4 + bool "athlon-4" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_3DNOW +config BR2_x86_opteron + bool "opteron" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 +config BR2_x86_opteron_sse3 + bool "opteron w/ SSE3" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 +config BR2_x86_barcelona + bool "barcelona" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 +config BR2_x86_bobcat + bool "bobcat" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 +config BR2_x86_jaguar + bool "jaguar" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8 +config BR2_x86_bulldozer + bool "bulldozer" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 +config BR2_x86_piledriver + bool "piledriver" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 +config BR2_x86_steamroller + bool "steamroller" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8 +config BR2_x86_excavator + bool "excavator" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 +config BR2_x86_zen + bool "zen" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_x86_zen2 + bool "zen 2" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_9 +config BR2_x86_zen3 + bool "zen 3" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_11 +config BR2_x86_zen4 + bool "zen 4" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_X86_CPU_HAS_AVX512 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_13 +config BR2_x86_geode + bool "AMD Geode" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_3DNOW +config BR2_x86_c3 + bool "Via/Cyrix C3 (Samuel/Ezra cores)" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_3DNOW +config BR2_x86_c32 + bool "Via C3-2 (Nehemiah cores)" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE +config BR2_x86_winchip_c6 + bool "IDT Winchip C6" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX +config BR2_x86_winchip2 + bool "IDT Winchip 2" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX +endchoice + +config BR2_ARCH + default "i486" if BR2_x86_i486 + default "i586" if BR2_x86_i586 + default "i586" if BR2_x86_x1000 + default "i586" if BR2_x86_pentium_mmx + default "i586" if BR2_x86_geode + default "i586" if BR2_x86_c3 + default "i686" if BR2_x86_c32 + default "i586" if BR2_x86_winchip_c6 + default "i586" if BR2_x86_winchip2 + # We use the property of Kconfig that the first match of a + # list of default will be chosen. So the following entry will + # not match for all BR2_i386=y configurations, but only the + # ones that didn't match any of the previous cases (i486, + # i586). + default "i686" if BR2_i386 + default "x86_64" if BR2_x86_64 + +config BR2_NORMALIZED_ARCH + default "i386" if !BR2_x86_64 + default "x86_64" if BR2_x86_64 + +config BR2_ENDIAN + default "LITTLE" + +config BR2_GCC_TARGET_ARCH + default "i486" if BR2_x86_i486 + default "i586" if BR2_x86_i586 + default "i586" if BR2_x86_x1000 + default "pentium-mmx" if BR2_x86_pentium_mmx + default "i686" if BR2_x86_i686 + default "pentiumpro" if BR2_x86_pentiumpro + default "pentium-m" if BR2_x86_pentium_m + default "pentium2" if BR2_x86_pentium2 + default "pentium3" if BR2_x86_pentium3 + default "pentium4" if BR2_x86_pentium4 + default "prescott" if BR2_x86_prescott + default "x86-64" if BR2_x86_x86_64 + default "x86-64-v2" if BR2_x86_x86_64_v2 + default "x86-64-v3" if BR2_x86_x86_64_v3 + default "x86-64-v4" if BR2_x86_x86_64_v4 + default "nocona" if BR2_x86_nocona + default "core2" if BR2_x86_core2 + default "corei7" if BR2_x86_corei7 + default "nehalem" if BR2_x86_nehalem + default "corei7-avx" if BR2_x86_corei7_avx + default "sandybridge" if BR2_x86_sandybridge + default "ivybridge" if BR2_x86_ivybridge + default "core-avx2" if BR2_x86_core_avx2 + default "haswell" if BR2_x86_haswell + default "broadwell" if BR2_x86_broadwell + default "skylake" if BR2_x86_skylake + default "atom" if BR2_x86_atom + default "bonnell" if BR2_x86_bonnell + default "westmere" if BR2_x86_westmere + default "silvermont" if BR2_x86_silvermont + default "goldmont" if BR2_x86_goldmont + default "goldmont-plus" if BR2_x86_goldmont_plus + default "tremont" if BR2_x86_tremont + default "sierraforest" if BR2_x86_sierraforest + default "grandridge" if BR2_x86_grandridge + default "skylake-avx512" if BR2_x86_skylake_avx512 + default "cannonlake" if BR2_x86_cannonlake + default "icelake-client" if BR2_x86_icelake_client + default "icelake-server" if BR2_x86_icelake_server + default "cascadelake" if BR2_x86_cascadelake + default "cooperlake" if BR2_x86_cooperlake + default "tigerlake" if BR2_x86_tigerlake + default "sapphirerapids" if BR2_x86_sapphirerapids + default "alderlake" if BR2_x86_alderlake + default "rocketlake" if BR2_x86_rocketlake + default "graniterapids" if BR2_x86_graniterapids + default "graniterapids-d" if BR2_x86_graniterapids_d + default "k8" if BR2_x86_opteron + default "k8-sse3" if BR2_x86_opteron_sse3 + default "barcelona" if BR2_x86_barcelona + default "btver1" if BR2_x86_bobcat + default "btver2" if BR2_x86_jaguar + default "bdver1" if BR2_x86_bulldozer + default "bdver2" if BR2_x86_piledriver + default "bdver3" if BR2_x86_steamroller + default "bdver4" if BR2_x86_excavator + default "znver1" if BR2_x86_zen + default "znver2" if BR2_x86_zen2 + default "znver3" if BR2_x86_zen3 + default "znver4" if BR2_x86_zen4 + default "k6" if BR2_x86_k6 + default "k6-2" if BR2_x86_k6_2 + default "athlon" if BR2_x86_athlon + default "athlon-4" if BR2_x86_athlon_4 + default "winchip-c6" if BR2_x86_winchip_c6 + default "winchip2" if BR2_x86_winchip2 + default "c3" if BR2_x86_c3 + default "c3-2" if BR2_x86_c32 + default "geode" if BR2_x86_geode + +config BR2_READELF_ARCH_NAME + default "Intel 80386" if BR2_i386 + default "Advanced Micro Devices X86-64" if BR2_x86_64 + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/arch/Config.in.xtensa b/arch/Config.in.xtensa new file mode 100644 index 00000000..f9d5adb4 --- /dev/null +++ b/arch/Config.in.xtensa @@ -0,0 +1,66 @@ +choice + prompt "Target Architecture Variant" + default BR2_xtensa_fsf + depends on BR2_xtensa + +config BR2_XTENSA_CUSTOM + bool "Custom Xtensa processor configuration" + +config BR2_xtensa_fsf + bool "fsf - Default configuration" + select BR2_USE_MMU + +endchoice + +config BR2_XTENSA_OVERLAY_FILE + string "Overlay file for custom configuration" + depends on BR2_XTENSA_CUSTOM + help + Enter the path to the overlay tarball for a custom processor + configuration. + + These overlay files are tar packages with updated + configuration files for various toolchain packages and Xtensa + processor configurations. They are provided by the processor + vendor or directly from Tensilica. + + The path can be either absolute, or relative to the top + directory of buildroot. + +choice + prompt "Target Architecture Endianness" + default BR2_XTENSA_LITTLE_ENDIAN + depends on BR2_XTENSA_CUSTOM + +config BR2_XTENSA_LITTLE_ENDIAN + bool "Little endian" + +config BR2_XTENSA_BIG_ENDIAN + bool "Big endian" + +endchoice + +config BR2_XTENSA_USE_MMU + bool "MMU support" + default y + depends on BR2_XTENSA_CUSTOM + select BR2_USE_MMU + help + Enable this option if your Xtensa core has a MMU (Memory + Management Unit). + +config BR2_ENDIAN + default "LITTLE" if BR2_XTENSA_LITTLE_ENDIAN + default "BIG" if BR2_xtensa_fsf || BR2_XTENSA_BIG_ENDIAN + +config BR2_ARCH + default "xtensa" if BR2_xtensa + +config BR2_NORMALIZED_ARCH + default "xtensa" + +config BR2_READELF_ARCH_NAME + default "Tensilica Xtensa Processor" + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/arch/arch.mk b/arch/arch.mk new file mode 100644 index 00000000..4174d33d --- /dev/null +++ b/arch/arch.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# Architecture-specific definitions +# +################################################################################ + +# Allow GCC target configuration settings to be optionally +# overwritten by architecture specific makefiles. + +# Makefiles must use the GCC_TARGET_* variables below instead +# of the BR2_GCC_TARGET_* versions. +GCC_TARGET_ARCH := $(call qstrip,$(BR2_GCC_TARGET_ARCH)) +GCC_TARGET_ABI := $(call qstrip,$(BR2_GCC_TARGET_ABI)) +GCC_TARGET_NAN := $(call qstrip,$(BR2_GCC_TARGET_NAN)) +GCC_TARGET_FP32_MODE := $(call qstrip,$(BR2_GCC_TARGET_FP32_MODE)) +GCC_TARGET_CPU := $(call qstrip,$(BR2_GCC_TARGET_CPU)) +GCC_TARGET_FPU := $(call qstrip,$(BR2_GCC_TARGET_FPU)) +GCC_TARGET_FLOAT_ABI := $(call qstrip,$(BR2_GCC_TARGET_FLOAT_ABI)) +GCC_TARGET_MODE := $(call qstrip,$(BR2_GCC_TARGET_MODE)) + +# Explicitly set LD's "max-page-size" instead of relying on some defaults +ifeq ($(BR2_ARC_PAGE_SIZE_4K)$(BR2_ARM64_PAGE_SIZE_4K),y) +ARCH_TOOLCHAIN_WRAPPER_OPTS += -Wl,-z,max-page-size=4096 -Wl,-z,common-page-size=4096 +else ifeq ($(BR2_ARC_PAGE_SIZE_8K),y) +ARCH_TOOLCHAIN_WRAPPER_OPTS += -Wl,-z,max-page-size=8192 -Wl,-z,common-page-size=8192 +else ifeq ($(BR2_ARC_PAGE_SIZE_16K)$(BR2_ARM64_PAGE_SIZE_16K),y) +ARCH_TOOLCHAIN_WRAPPER_OPTS += -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384 +else ifeq ($(BR2_ARM64_PAGE_SIZE_64K),y) +ARCH_TOOLCHAIN_WRAPPER_OPTS += -Wl,-z,max-page-size=65536 -Wl,-z,common-page-size=65536 +endif + +# Include any architecture specific makefiles. +-include $(sort $(wildcard arch/arch.mk.*)) diff --git a/arch/arch.mk.arc b/arch/arch.mk.arc new file mode 100644 index 00000000..42037626 --- /dev/null +++ b/arch/arch.mk.arc @@ -0,0 +1,8 @@ +ifeq ($(BR2_arc),y) + +# -matomic is always required when the ARC core has the atomic extensions +ifeq ($(BR2_ARC_ATOMIC_EXT),y) +ARCH_TOOLCHAIN_WRAPPER_OPTS += -matomic +endif + +endif diff --git a/arch/arch.mk.riscv b/arch/arch.mk.riscv new file mode 100644 index 00000000..ee5c434b --- /dev/null +++ b/arch/arch.mk.riscv @@ -0,0 +1,42 @@ +# +# Configure the GCC_TARGET_ARCH variable and append the +# appropriate RISC-V ISA extensions. +# + +ifeq ($(BR2_riscv),y) + +ifeq ($(BR2_RISCV_64),y) +GCC_TARGET_ARCH := rv64i +else +GCC_TARGET_ARCH := rv32i +endif + +ifeq ($(BR2_RISCV_ISA_RVM),y) +GCC_TARGET_ARCH := $(GCC_TARGET_ARCH)m +endif +ifeq ($(BR2_RISCV_ISA_RVA),y) +GCC_TARGET_ARCH := $(GCC_TARGET_ARCH)a +endif +ifeq ($(BR2_RISCV_ISA_RVF),y) +GCC_TARGET_ARCH := $(GCC_TARGET_ARCH)f +endif +ifeq ($(BR2_RISCV_ISA_RVD),y) +GCC_TARGET_ARCH := $(GCC_TARGET_ARCH)d +endif +ifeq ($(BR2_RISCV_ISA_RVC),y) +GCC_TARGET_ARCH := $(GCC_TARGET_ARCH)c +endif +ifeq ($(BR2_RISCV_ISA_RVV),y) +GCC_TARGET_ARCH := $(GCC_TARGET_ARCH)v +endif + +# Starting from gcc 12.x, csr and fence instructions have been +# separated from the base I instruction set, and special -march +# suffixes are needed to enable their support. In Buildroot, we assume +# all RISC-V cores that support Linux implement those instructions, so +# we unconditionally enable those extensions. +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_12),y) +GCC_TARGET_ARCH := $(GCC_TARGET_ARCH)_zicsr_zifencei +endif + +endif diff --git a/arch/arch.mk.xtensa b/arch/arch.mk.xtensa new file mode 100644 index 00000000..75145e72 --- /dev/null +++ b/arch/arch.mk.xtensa @@ -0,0 +1,41 @@ +BR_ARCH_XTENSA_OVERLAY_FILE = $(call qstrip,$(BR2_XTENSA_OVERLAY_FILE)) + +ifeq ($(BR_BUILDING)$(BR2_XTENSA_CUSTOM)$(BR2_TOOLCHAIN_BUILDROOT):$(BR_ARCH_XTENSA_OVERLAY_FILE),yyy:) +$(error No xtensa overlay file provided. Check your BR2_XTENSA_OVERLAY_FILE setting) +endif + +################################################################################ +# This variable can be used by packages that need to extract the overlay. +# +# ARCH_XTENSA_OVERLAY_FILE is the path to the overlay tarball; empty if not +# using any overlay +# +# Example: +# ifneq ($(ARCH_XTENSA_OVERLAY_FILE),) +# tar xf $(ARCH_XTENSA_OVERLAY_FILE) -C $(@D) --strip-components=1 gcc +# endif +################################################################################ +ifneq ($(filter http://% https://% ftp://% scp://%,$(BR_ARCH_XTENSA_OVERLAY_FILE)),) +ARCH_XTENSA_OVERLAY_URL = $(BR_ARCH_XTENSA_OVERLAY_FILE) +ARCH_XTENSA_OVERLAY_FILE = $($(PKG)_DL_DIR)/$(notdir $(BR_ARCH_XTENSA_OVERLAY_FILE)) +# Do not check that file, we can't know its hash +BR_NO_CHECK_HASH_FOR += $(notdir $(ARCH_XTENSA_OVERLAY_URL)) +else +ARCH_XTENSA_OVERLAY_FILE = $(BR_ARCH_XTENSA_OVERLAY_FILE) +endif + +################################################################################ +# arch-xtensa-overlay-extract -- extract an extensa overlay +# +# argument 1 is the path in which to extract +# argument 2 is the component to extract, one of: gcc, binutils, gdb, linux, +# u-boot +# +# Example: +# $(call arch-xtensa-overlay-extract,/path/to/overlay.tar,$(@D),gcc) +################################################################################ +define arch-xtensa-overlay-extract + $(call suitable-extractor,$(ARCH_XTENSA_OVERLAY_FILE)) \ + $(ARCH_XTENSA_OVERLAY_FILE) | \ + $(TAR) --strip-components=1 -C $(1) $(TAR_OPTIONS) - $(2) +endef diff --git a/board/aarch64-efi/genimage-efi.cfg b/board/aarch64-efi/genimage-efi.cfg new file mode 100644 index 00000000..158deab8 --- /dev/null +++ b/board/aarch64-efi/genimage-efi.cfg @@ -0,0 +1,30 @@ +image efi-part.vfat { + vfat { + file EFI { + image = "efi-part/EFI" + } + file Image { + image = "Image" + } + } + + size = 64M +} + +image disk.img { + hdimage { + partition-table-type = "gpt" + } + + partition boot { + image = "efi-part.vfat" + partition-type-uuid = U + offset = 32K + bootable = true + } + + partition root { + partition-type-uuid = b921b045-1df0-41c3-af44-4c6f280d3fae + image = "rootfs.ext2" + } +} diff --git a/board/aarch64-efi/grub.cfg b/board/aarch64-efi/grub.cfg new file mode 100644 index 00000000..d99e19c4 --- /dev/null +++ b/board/aarch64-efi/grub.cfg @@ -0,0 +1,6 @@ +set default="0" +set timeout="5" + +menuentry "Buildroot" { + linux /Image root=PARTLABEL=root rootwait +} diff --git a/board/aarch64-efi/post-image.sh b/board/aarch64-efi/post-image.sh new file mode 100755 index 00000000..f0214dc8 --- /dev/null +++ b/board/aarch64-efi/post-image.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +cp -f ${BOARD_DIR}/grub.cfg ${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg diff --git a/board/aarch64-efi/readme.txt b/board/aarch64-efi/readme.txt new file mode 100644 index 00000000..0e7ea0b5 --- /dev/null +++ b/board/aarch64-efi/readme.txt @@ -0,0 +1,53 @@ + +The aarch64_efi_defconfig allows to build a minimal Linux system that +can boot on all AArch64 servers providing an EFI firmware. + +This includes all Arm EBBR[1] compliant systems, and all Arm SystemReady[2] +compliant systems for example. + + +Building and booting +==================== + +$ make aarch64_efi_defconfig +$ make + +The file output/images/disk.img is a complete disk image that can be +booted, it includes the grub2 bootloader, Linux kernel and root +filesystem. + +Testing under Qemu +================== + +This image can also be tested using Qemu: + +qemu-system-aarch64 \ + -M virt \ + -cpu cortex-a57 \ + -m 512 \ + -nographic \ + -bios \ + -drive file=output/images/disk.img,if=none,format=raw,id=hd0 \ + -device virtio-blk-device,drive=hd0 \ + -netdev user,id=eth0 \ + -device virtio-net-device,netdev=eth0 + +Note that needs to point to a valid aarch64 UEFI +firmware image for qemu. +It may be provided by your distribution as a edk2-aarch64 or AAVMF +package, in path such as /usr/share/edk2/aarch64/QEMU_EFI.fd . + +U-Boot based qemu firmware +========================== + +A qemu firmware with support for UEFI based on U-Boot can be built following +the instructions in [3], with qemu_arm64_defconfig. + +This should give you a nor_flash.bin, which you can use with qemu as an +alternative to QEMU_EFI.fd. You will also need to change the machine +specification to "-M virt,secure=on" on qemu command line, to enable TrustZone +support, and you will need to increase the memory with "-m 1024". + +[1]: https://github.com/ARM-software/ebbr +[2]: https://developer.arm.com/architectures/system-architectures/arm-systemready +[3]: https://github.com/glikely/u-boot-tfa-build diff --git a/board/acmesystems/acqua-a5/at91-sama5d3_acqua.dts b/board/acmesystems/acqua-a5/at91-sama5d3_acqua.dts new file mode 100644 index 00000000..a7a4a203 --- /dev/null +++ b/board/acmesystems/acqua-a5/at91-sama5d3_acqua.dts @@ -0,0 +1,334 @@ +/* + * acme-acqua.dts - Device Tree file for Acqua A5 Board + * + * Copyright (C) 2014 Atmel, + * 2014 Nicolas Ferre + * + * 2022 Sergio Tanzilli + * + * Licensed under GPLv2 or later. + */ +/dts-v1/; +#include "microchip/sama5d31.dtsi" + +/ { + model = "Acme Systems Acqua SOM"; + compatible = "acme,acqua", "atmel,sama5d3", "atmel,sama5"; + + chosen { + stdout-path = "serial0:115200n8"; + bootargs = "mem=256M console=ttyS0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rw rootwait net.ifnames=0"; + }; + + memory { + reg = <0x20000000 0x10000000>; + }; + + clocks { + slow_xtal { + clock-frequency = <32768>; + }; + + main_xtal { + clock-frequency = <12000000>; + }; + }; + + ahb { + apb { + hlcdc: hlcdc@f0030000 { + status = "disabled"; + hlcdc-display-controller { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_rgb888_alt>; + port@0 { + hlcdc_panel_output: endpoint@0 { + remote-endpoint = <&panel_input>; + }; + }; + }; + }; + + /* MicroSD mounted on the SOM */ + + mmc0: mmc@f0000000 { + pinctrl-0 = <&pinctrl_mmc0_clk_cmd_dat0 &pinctrl_mmc0_dat1_3 &pinctrl_mmc0_cd>; + status = "okay"; + slot@0 { + reg = <0>; + bus-width = <4>; + }; + }; + + /* Optional MicroSD to mount on the carrier board */ + + mmc1: mmc@f8000000 { + pinctrl-0 = <&pinctrl_mmc1_clk_cmd_dat0 &pinctrl_mmc1_dat1_3 &pinctrl_mmc1_cd>; + status = "disabled"; + slot@0 { + reg = <0>; + bus-width = <4>; + cd-gpios = <&pioE 1 GPIO_ACTIVE_LOW>; + }; + }; + + spi0: spi@f0004000 { + cs-gpios = <&pioD 13 0>, <0>, <0>, <&pioD 16 0>; + status = "disabled"; + }; + + can0: can@f000c000 { + status = "disabled"; + }; + + tcb0: timer@f0010000 { + timer0: timer@0 { + compatible = "atmel,tcb-timer"; + reg = <0>; + }; + + timer1: timer@1 { + compatible = "atmel,tcb-timer"; + reg = <1>; + }; + }; + + i2c0: i2c@f0014000 { + pinctrl-0 = <&pinctrl_i2c0_pu>; + status = "disabled"; + }; + + i2c1: i2c@f0018000 { + status = "disabled"; + }; + + macb1: ethernet@f802c000 { + compatible = "atmel,sama5d3-macb", "cdns,at91sam9260-macb", "cdns,macb"; + + status = "okay"; + phy-mode = "rmii"; + #address-cells = <1>; + #size-cells = <0>; + + nvmem-cells = <ð0_addr>; + nvmem-cell-names = "mac-address"; + + phy0: ethernet-phy@1 { + interrupt-parent = <&pioE>; + interrupts = <30 IRQ_TYPE_EDGE_FALLING>; + reg = <1>; + }; + + /*ethernet-phy@1 { + reg = <0x1>; + };*/ + }; + + /* Bit banging internal I2C to manage the AT24MAC402 chip */ + + i2c3@ { + compatible = "i2c-gpio"; + + sda-gpios = <&pioE 1 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; + scl-gpios = <&pioE 2 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; + + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_i2c3_gpio>; + + i2c-gpio,delay-us = <4>; /* ~178 kHz */ + #address-cells = <1>; + #size-cells = <0>; + + /* EEPROM contains the eth0 MAC address */ + + eeprom@58 { + compatible = "atmel,24mac402"; + pagesize = <256>; + read-only; + reg = <0x58>; + #address-cells = <1>; + #size-cells = <1>; + + eth0_addr: eth-mac-addr@9A { + reg = <0x0 0x06>; + }; + }; + + }; + + pwm0: pwm@f002c000 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_pwm0_pwmh0_0 &pinctrl_pwm0_pwmh1_0>; + status = "disabled"; + }; + + usart0: serial@f001c000 { + status = "okay"; + }; + + usart1: serial@f0020000 { + pinctrl-0 = <&pinctrl_usart1 &pinctrl_usart1_rts_cts>; + status = "disabled"; + }; + + uart0: serial@f0024000 { + status = "disabled"; + }; + + + spi1: spi@f8008000 { + cs-gpios = <&pioC 25 0>; + status = "disabled"; + }; + + adc0: adc@f8018000 { + atmel,adc-vref = <3300>; + atmel,adc-channels-used = <0xfe>; + pinctrl-0 = < + &pinctrl_adc0_adtrg + &pinctrl_adc0_ad1 + &pinctrl_adc0_ad2 + &pinctrl_adc0_ad3 + &pinctrl_adc0_ad4 + &pinctrl_adc0_ad5 + &pinctrl_adc0_ad6 + &pinctrl_adc0_ad7 + >; + status = "disabled"; + }; + + i2c2: i2c@f801c000 { + dmas = <0>, <0>; /* Do not use DMA for i2c2 */ + pinctrl-0 = <&pinctrl_i2c2_pu>; + status = "disabled"; + }; + + + dbgu: serial@ffffee00 { + status = "okay"; + }; + + pinctrl@fffff200 { + + atmel,mux-mask = < + /* A B C */ + 0xffffffff 0xc0fc0000 0xc0ff0000 /* pioA */ + 0xffffffff 0x0ff8ffff 0x00000000 /* pioB */ + 0xffffffff 0xbc00f1ff 0x7c00fc00 /* pioC */ + 0xffffffff 0xc001c0e0 0x0001c1e0 /* pioD */ + 0xfffffff9 0xbf9f8000 0x18000000 /* pioE */ + /* 0xffffffff 0xb8000000 0x18000000 */ /* pioE */ + >; + + board { + pinctrl_i2c0_pu: i2c0_pu { + atmel,pins = + , + ; + }; + + pinctrl_i2c2_pu: i2c2_pu { + atmel,pins = + , + ; + }; + + pinctrl_i2c3_gpio: i2c3-gpio { + atmel,pins = + ; + }; + + + pinctrl_key_gpio: key_gpio_0 { + atmel,pins = + ; + }; + + pinctrl_mmc0_cd: mmc0_cd { + atmel,pins = + ; + }; + + pinctrl_mmc1_cd: mmc1_cd { + atmel,pins = + ; + }; + + pinctrl_usba_vbus: usba_vbus { + atmel,pins = + ; /* PE9, conflicts with A9 */ + }; + + pinctrl_gpio_leds: gpio_leds_default { + atmel,pins = + ; + }; + }; + }; + }; + + usb0: gadget@500000 { + status = "disabled"; + }; + + usb1: ohci@600000 { + status = "okay"; + }; + + usb2: ehci@700000 { + status = "okay"; + }; + + }; + + + panel: panel { + /* compatible = "acme,43inch", "simple-panel"; */ + compatible = "acme,50inch", "simple-panel"; + /* compatible = "acme,70inch", "simple-panel"; */ + + status = "disable"; + + port@0 { + panel_input: endpoint@0 { + remote-endpoint = <&hlcdc_panel_output>; + }; + }; + }; + + + leds { + compatible = "gpio-leds"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_gpio_leds>; + + led0 { + label = "led0"; + gpios = <&pioE 3 GPIO_ACTIVE_LOW>; + default-state = "off"; + }; + + led1 { + label = "led1"; + gpios = <&pioE 4 GPIO_ACTIVE_LOW>; + default-state = "off"; + }; + + led2 { + label = "led2"; + gpios = <&pioE 5 GPIO_ACTIVE_LOW>; + linux,default-trigger = "heartbeat"; + }; + + led3 { + label = "led3"; + gpios = <&pioE 6 GPIO_ACTIVE_LOW>; + linux,default-trigger = "mmc0"; + default-state = "off"; + }; + }; +}; diff --git a/board/acmesystems/acqua-a5/genimage.cfg b/board/acmesystems/acqua-a5/genimage.cfg new file mode 100644 index 00000000..7fa0a69c --- /dev/null +++ b/board/acmesystems/acqua-a5/genimage.cfg @@ -0,0 +1,29 @@ +# Minimal SD card image for the Acme Systems Acqua A5 + +image boot.vfat { + vfat { + files = { + "boot.bin", + "zImage", + "at91-sama5d3_acqua.dtb" + } + } + + size = 16M +} + +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/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash b/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash new file mode 100644 index 00000000..6edf3d33 --- /dev/null +++ b/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 5ea2a8fed1ba0024229c6f6d77176679e1b24791bdbce8e285634013d4a93551 at91bootstrap3-v3.10.3-git4.tar.gz diff --git a/board/acmesystems/acqua-a5/patches/linux-headers/linux-headers.hash b/board/acmesystems/acqua-a5/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/acmesystems/acqua-a5/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/acmesystems/acqua-a5/patches/linux/linux.hash b/board/acmesystems/acqua-a5/patches/linux/linux.hash new file mode 100644 index 00000000..4b20a009 --- /dev/null +++ b/board/acmesystems/acqua-a5/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b66a5b863b0f8669448b74ca83bd641a856f164b29956e539bbcb5fdeeab9cc6 linux-6.6.30.tar.xz diff --git a/board/acmesystems/acqua-a5/readme.txt b/board/acmesystems/acqua-a5/readme.txt new file mode 100644 index 00000000..ce7dbafb --- /dev/null +++ b/board/acmesystems/acqua-a5/readme.txt @@ -0,0 +1,44 @@ +Acme Systems Acqua A5 + +Intro +===== + +The Acqua A5 is a system on module based on the Microchip SAMA5D31 SoC: + + https://www.acmesystems.it/acqua + +The files here support configurations that build a microSD image for a +minimal system that can be accessed through the serial console. You will +need an USB-to-serial interface in order to access that console from +your computer: + + https://www.acmesystems.it/DPI + +How to build the image +====================== + +If you have an Acqua module with 256 MiB of RAM, type: + +$ make acmesystems_acqua_a5_256mb_defconfig + +If you have the 512 MiB version, type instead: + +$ make acmesystems_acqua_a5_512mb_defconfig + +You can optionally tweak the configuration and add packages by typing: + +$ make menuconfig + +Then, proceed with the build: + +$ make + +How to write the microSD card +============================= + +The system image is the file "sdcard.img" in the "output/images" +directory. Write it to the card by invoking: + +$ sudo dd if=output/images/sdcard.img of=/dev/sdX bs=1M + +where `sdX' is the block device representing the microSD card. diff --git a/board/acmesystems/aria-g25/genimage.cfg b/board/acmesystems/aria-g25/genimage.cfg new file mode 100644 index 00000000..29dc6971 --- /dev/null +++ b/board/acmesystems/aria-g25/genimage.cfg @@ -0,0 +1,36 @@ +# 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.10.3.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/board/acmesystems/aria-g25/patches/at91bootstrap3/at91bootstrap3.hash b/board/acmesystems/aria-g25/patches/at91bootstrap3/at91bootstrap3.hash new file mode 100644 index 00000000..6edf3d33 --- /dev/null +++ b/board/acmesystems/aria-g25/patches/at91bootstrap3/at91bootstrap3.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 5ea2a8fed1ba0024229c6f6d77176679e1b24791bdbce8e285634013d4a93551 at91bootstrap3-v3.10.3-git4.tar.gz diff --git a/board/acmesystems/aria-g25/patches/linux-headers/linux-headers.hash b/board/acmesystems/aria-g25/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/acmesystems/aria-g25/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/acmesystems/aria-g25/patches/linux/linux.hash b/board/acmesystems/aria-g25/patches/linux/linux.hash new file mode 100644 index 00000000..81824a41 --- /dev/null +++ b/board/acmesystems/aria-g25/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 6c5e4d3c87feadbfdb9f7d2e46f3f120b00286ba380491c5956708e0b94232c8 linux-4.19.315.tar.xz diff --git a/board/acmesystems/aria-g25/readme.txt b/board/acmesystems/aria-g25/readme.txt new file mode 100644 index 00000000..cb9e9abf --- /dev/null +++ b/board/acmesystems/aria-g25/readme.txt @@ -0,0 +1,44 @@ +Acme Systems Aria G25 + +Build instructions +================== + +To build an image for the Aria G25 choose the configuration +corresponding to the Aria variant. + +For 128MB RAM variant type: + +$ make acmesystems_aria_g25_128mb_defconfig + +else for 256MB RAM variant type: + +$ make acmesystems_aria_g25_256mb_defconfig + +To customize the configuration choosed type: + +$ make menuconfig + +When you are ready to start building Buildroot type: + +$ make + +How to write the microSD card +============================= + +Once the build process is finished you will have an image called +"sdcard.img" in the output/images/ directory. + +Write the bootable SD card image "sdcard.img" onto an SD card with +"dd" command: + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Assuming your Aria G25 baseboard has a MicroSD socket, for example +with the Terra baseboard, insert the microSD card into the baseboard +slot and power it. + +To get the kernel log messages you can use a DPI cable +(http://www.acmesystems.it/DPI) + +You can find additional informations, tutorials and a very +comprehensive documentation on http://www.acmesystems.it/aria. diff --git a/board/acmesystems/arietta-g25/genimage.cfg b/board/acmesystems/arietta-g25/genimage.cfg new file mode 100644 index 00000000..3b67a474 --- /dev/null +++ b/board/acmesystems/arietta-g25/genimage.cfg @@ -0,0 +1,36 @@ +# Minimal SD card image for the Acmesystems Arietta G25 + +image boot.vfat { + vfat { + file zImage { + image = "zImage" + } + + file acme-arietta.dtb { + image = "at91-ariettag25.dtb" + } + + file boot.bin { + image = "at91sam9x5_arietta-sdcardboot-linux-zimage-dt-3.10.3.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/board/acmesystems/arietta-g25/patches/at91bootstrap3/at91bootstrap3.hash b/board/acmesystems/arietta-g25/patches/at91bootstrap3/at91bootstrap3.hash new file mode 100644 index 00000000..6edf3d33 --- /dev/null +++ b/board/acmesystems/arietta-g25/patches/at91bootstrap3/at91bootstrap3.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 5ea2a8fed1ba0024229c6f6d77176679e1b24791bdbce8e285634013d4a93551 at91bootstrap3-v3.10.3-git4.tar.gz diff --git a/board/acmesystems/arietta-g25/patches/linux-headers/linux-headers.hash b/board/acmesystems/arietta-g25/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/acmesystems/arietta-g25/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/acmesystems/arietta-g25/patches/linux/linux.hash b/board/acmesystems/arietta-g25/patches/linux/linux.hash new file mode 100644 index 00000000..81824a41 --- /dev/null +++ b/board/acmesystems/arietta-g25/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 6c5e4d3c87feadbfdb9f7d2e46f3f120b00286ba380491c5956708e0b94232c8 linux-4.19.315.tar.xz diff --git a/board/acmesystems/arietta-g25/readme.txt b/board/acmesystems/arietta-g25/readme.txt new file mode 100644 index 00000000..f356b0a2 --- /dev/null +++ b/board/acmesystems/arietta-g25/readme.txt @@ -0,0 +1,49 @@ +Acme Systems Arietta G25 + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Arietta G25. With the current configuration +it will bring-up the board, and allow access through the serial console. + +You can find additional informations, tutorials and a very comprehensive +documentation on http://www.acmesystems.it/arietta. + +Build instructions +================== + +To build an image for the Arietta G25 choose the configuration +corresponding to the Arietta variant. + +For 128MB RAM variant type: + +$ make acmesystems_arietta_g25_128mb_defconfig + +else for 256MB RAM variant type: + +$ make acmesystems_arietta_g25_256mb_defconfig + +To customize the configuration chosen type: + +$ make menuconfig + +When you are ready to start building Buildroot type: + +$ make + +How to write the microSD card +============================= + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Insert the microSD card into the Arietta slot and power it. + +The image just built is fairly basic and the only output +you will get is on serial console, please consider to use a DPI +cable (http://www.acmesystems.it/DPI) diff --git a/board/altera/socrates_cyclone5/boot-env.txt b/board/altera/socrates_cyclone5/boot-env.txt new file mode 100644 index 00000000..ed5b6138 --- /dev/null +++ b/board/altera/socrates_cyclone5/boot-env.txt @@ -0,0 +1,8 @@ +linux_load_address=0x100000 +linux_dtb_load_address=0x100 +linux_dtb=socfpga_cyclone5_socrates.dtb +linux_load=mmc rescan; fatload mmc 0:1 ${linux_load_address} zImage; fatload mmc 0:1 ${linux_dtb_load_address} ${linux_dtb} +bootargs=console=ttyS0,115200 root=/dev/mmcblk0p3 ro rootwait +source_env=fatload mmc 0:1 0x2000000 boot.scr; source 0x2000000 +bootcmd=run linux_load; bootz ${linux_load_address} - ${linux_dtb_load_address} +bootdelay=1 diff --git a/board/altera/socrates_cyclone5/genimage.cfg b/board/altera/socrates_cyclone5/genimage.cfg new file mode 100644 index 00000000..d31c3838 --- /dev/null +++ b/board/altera/socrates_cyclone5/genimage.cfg @@ -0,0 +1,59 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "socfpga_cyclone5_socrates.dtb" + } + } + + size = 8M +} + +image uboot.img { + hdimage { + partition-table = "no" + } + + partition spl { + in-partition-table = "no" + image = "u-boot-spl.bin.crc" + offset = 0 + size = 64K + } + + partition uboot-full { + in-partition-table = "no" + image = "u-boot.img" + offset = 256K + } + + size = 1M +} + +image sdcard.img { + hdimage { + } + + partition uboot-env { + in-partition-table = "no" + image = "uboot-env.bin" + offset = 17K # 512 * 34 -> just after gpt + } + + partition boot { + partition-type = 0xc + bootable = "true" + image = "boot.vfat" + } + + partition uboot { + partition-type = 0xa2 + image = "uboot.img" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + size = 500M + } +} diff --git a/board/altera/socrates_cyclone5/readme.txt b/board/altera/socrates_cyclone5/readme.txt new file mode 100644 index 00000000..4e78feef --- /dev/null +++ b/board/altera/socrates_cyclone5/readme.txt @@ -0,0 +1,52 @@ +EBV SoCrates Evaluation Board + +Intro +===== + +More information about this board can be found here: +https://rocketboards.org/foswiki/Documentation/EBVSoCratesEvaluationBoard + +Build +===== + +First, load socrates config for buildroot + + make socrates_cyclone5_defconfig + +Build everything + + make + +Following files will be generated in output/images + +. +├── boot.vfat +├── rootfs.ext2 +├── rootfs.ext4 -> rootfs.ext2 +├── rootfs.tar +├── sdcard.img +├── socfpga_cyclone5_socrates.dtb +├── u-boot-spl.bin +├── u-boot-spl.bin.crc +├── u-boot.bin +├── u-boot.img +├── uboot-env.bin +├── uboot.img +└── zImage + + +Creating bootable SD card +========================= + +Simply invoke + +dd if=output/images/sdcard.img of=/dev/sdX + +Where X is your SD card device (not partition) + +Booting +======= + +Pins 6:8 on P18 selector is used to determine boot device. To boot socrates from +sdcard set these pins to value 0x5 (101b). Remaining pins are used to determine +how to configure FPGA and are not associated with booting into Linux kernel. diff --git a/board/amarula/vyasa/extlinux.conf b/board/amarula/vyasa/extlinux.conf new file mode 100644 index 00000000..a8fcc35f --- /dev/null +++ b/board/amarula/vyasa/extlinux.conf @@ -0,0 +1,4 @@ +label Vyasa linux-next + kernel /boot/uImage + devicetree /boot/rk3288-vyasa.dtb + append console=ttyS2,115200n8 root=/dev/mmcblk0p1 rootwait diff --git a/board/amarula/vyasa/genimage.cfg b/board/amarula/vyasa/genimage.cfg new file mode 100644 index 00000000..e7076679 --- /dev/null +++ b/board/amarula/vyasa/genimage.cfg @@ -0,0 +1,22 @@ +image sdcard.img { + hdimage { + } + + partition u-boot-tpl-spl-dtb { + in-partition-table = "no" + image = "u-boot-tpl-spl-dtb.img" + offset = 32K + } + + partition u-boot-dtb { + in-partition-table = "no" + image = "u-boot-dtb.img" + offset = 8M + size = 30M # falcon mode: args @ 16M args, uImage @ 17M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/amarula/vyasa/linux_gmac.fragment b/board/amarula/vyasa/linux_gmac.fragment new file mode 100644 index 00000000..8ebf3835 --- /dev/null +++ b/board/amarula/vyasa/linux_gmac.fragment @@ -0,0 +1,3 @@ +# Currently mainline kernel exhibits issues when running rockchip gmac +# on the board, so enable it as loadable module and insert it later +CONFIG_DWMAC_ROCKCHIP=m diff --git a/board/amarula/vyasa/patches/linux-headers/linux-headers.hash b/board/amarula/vyasa/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/amarula/vyasa/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/amarula/vyasa/patches/linux/linux.hash b/board/amarula/vyasa/patches/linux/linux.hash new file mode 100644 index 00000000..b763fc94 --- /dev/null +++ b/board/amarula/vyasa/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 880ace63ca2291b8b639e9bd862cc828649d3e1e00ccfee5861473debd2e4dec linux-6.1.91.tar.xz diff --git a/board/amarula/vyasa/patches/uboot/uboot.hash b/board/amarula/vyasa/patches/uboot/uboot.hash new file mode 100644 index 00000000..5e017f54 --- /dev/null +++ b/board/amarula/vyasa/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 50b4482a505bc281ba8470c399a3c26e145e29b23500bc35c50debd7fa46bdf8 u-boot-2022.10.tar.bz2 diff --git a/board/amarula/vyasa/post-build.sh b/board/amarula/vyasa/post-build.sh new file mode 100755 index 00000000..ffbbcdeb --- /dev/null +++ b/board/amarula/vyasa/post-build.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +MKIMAGE=$HOST_DIR/bin/mkimage +BOARD_DIR="$(dirname $0)" + +$MKIMAGE -n rk3288 -T rksd -d $BINARIES_DIR/u-boot-tpl.bin $BINARIES_DIR/u-boot-tpl.img +cat $BINARIES_DIR/u-boot-tpl.img $BINARIES_DIR/u-boot-spl-dtb.bin > $BINARIES_DIR/u-boot-tpl-spl-dtb.img + +install -m 0644 -D $BOARD_DIR/extlinux.conf $TARGET_DIR/boot/extlinux/extlinux.conf diff --git a/board/amarula/vyasa/readme.txt b/board/amarula/vyasa/readme.txt new file mode 100644 index 00000000..b95889e8 --- /dev/null +++ b/board/amarula/vyasa/readme.txt @@ -0,0 +1,31 @@ +Vyasa RK3288 +============ + +Vyasa is RK3288 based Single board computer with fully supported opensource software. + +https://openedev.amarulasolutions.com/display/ODWIKI/Vyasa+RK3288 + +How to build it +=============== + + $ make amarula_vyasa_rk3288_defconfig + +Then you can edit the build options using + + $ make menuconfig + +Compile all and build rootfs image: + + $ make + +Prepare your SDCard +=================== + +Buildroot generates a ready-to-use SD card image that you can flash directly to +the card. The image will be in output/images/sdcard.img. +You can write this image directly to an SD card device (i.e. /dev/xxx): + + $ sudo dd if=output/images/sdcard.img of=/dev/xxx + $ sudo sync + +Finally, you can insert the SD card to the Vyasa RK3288 board, close J4 and boot it. diff --git a/board/andes/ae350/genimage_sdcard.cfg b/board/andes/ae350/genimage_sdcard.cfg new file mode 100644 index 00000000..58c6f8f1 --- /dev/null +++ b/board/andes/ae350/genimage_sdcard.cfg @@ -0,0 +1,26 @@ +image boot.vfat { + vfat { + files = { + "u-boot-spl.bin", + "u-boot.itb", + "ae350_ax45mp.dtb", + } + } + size = 2M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + bootable = true + image = "rootfs.ext4" + } +} diff --git a/board/andes/ae350/patches/uboot/0001-mmc-ftsdc010_mci-Support-DTS-of-ftsdc010-driver-for-.patch b/board/andes/ae350/patches/uboot/0001-mmc-ftsdc010_mci-Support-DTS-of-ftsdc010-driver-for-.patch new file mode 100644 index 00000000..be89a156 --- /dev/null +++ b/board/andes/ae350/patches/uboot/0001-mmc-ftsdc010_mci-Support-DTS-of-ftsdc010-driver-for-.patch @@ -0,0 +1,38 @@ +From 16aad5594e08550295ea3c12c1c9ed6f64774748 Mon Sep 17 00:00:00 2001 +From: Rick Chen +Date: Tue, 29 Mar 2022 13:41:10 +0800 +Subject: [PATCH] mmc: ftsdc010_mci: Support DTS of ftsdc010 driver for + generic dma + +The ftsdc010 driver has been implemented for generic dma in Linux +kernel. And its compatible is andestech,atfsdc010g to distinguish +the legacy andestech,atfsdc010 which is not for generic dma. + +Althought the ftsdc010_mci driver in U-Boot does not use dma, but +it still can work well with the mmc node for generic dma. So add +the compatible string to support it. + +Signed-off-by: Rick Chen + +Upstream-Status: Pending + +Signed-off-by: Yu Chien Peter Lin +--- + drivers/mmc/ftsdc010_mci.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/mmc/ftsdc010_mci.c b/drivers/mmc/ftsdc010_mci.c +index 570d54cf9d..65b1d447a8 100644 +--- a/drivers/mmc/ftsdc010_mci.c ++++ b/drivers/mmc/ftsdc010_mci.c +@@ -460,6 +460,7 @@ int ftsdc010_mmc_bind(struct udevice *dev) + + static const struct udevice_id ftsdc010_mmc_ids[] = { + { .compatible = "andestech,atfsdc010" }, ++ { .compatible = "andestech,atfsdc010g" }, + { } + }; + +-- +2.34.1 + diff --git a/board/andes/ae350/patches/uboot/0002-spl-Align-device-tree-blob-address-at-8-byte-boundar.patch b/board/andes/ae350/patches/uboot/0002-spl-Align-device-tree-blob-address-at-8-byte-boundar.patch new file mode 100644 index 00000000..5080554c --- /dev/null +++ b/board/andes/ae350/patches/uboot/0002-spl-Align-device-tree-blob-address-at-8-byte-boundar.patch @@ -0,0 +1,42 @@ +From 933ad8a59f7fd9b2088badc3e97167d750a40b5a Mon Sep 17 00:00:00 2001 +From: Bin Meng +Date: Mon, 12 Jul 2021 11:52:31 +0800 +Subject: [PATCH] spl: Align device tree blob address at 8-byte boundary + +Since libfdt v1.6.1, a new requirement on the device tree address via: + + commit 5e735860c478 ("libfdt: Check for 8-byte address alignment in fdt_ro_probe_()") + +must be met that the device tree must be loaded in to memory at an +8-byte aligned address. + +Signed-off-by: Bin Meng + +This patch was imported from U-boot patchwork: +https://patchwork.ozlabs.org/project/uboot/patch/20210712035231.26475-1-bmeng.cn@gmail.com/ + +Signed-off-by: Yu Chien Peter Lin +--- + common/spl/spl_fit.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c +index a35be529..a76ad14a 100644 +--- a/common/spl/spl_fit.c ++++ b/common/spl/spl_fit.c +@@ -382,6 +382,12 @@ static int spl_fit_append_fdt(struct spl_image_info *spl_image, + */ + image_info.load_addr = spl_image->load_addr + spl_image->size; + ++ /* ++ * Since libfdt v1.6.1, the device tree must be loaded in to memory ++ * at an 8-byte aligned address. ++ */ ++ image_info.load_addr = roundup(image_info.load_addr, 8); ++ + /* Figure out which device tree the board wants to use */ + node = spl_fit_get_image_node(ctx, FIT_FDT_PROP, index++); + if (node < 0) { +-- +2.34.1 + diff --git a/board/andes/ae350/post-build.sh b/board/andes/ae350/post-build.sh new file mode 100755 index 00000000..84187a06 --- /dev/null +++ b/board/andes/ae350/post-build.sh @@ -0,0 +1,3 @@ +#!/bin/sh +cp $BINARIES_DIR/Image $TARGET_DIR/boot +cp $BINARIES_DIR/ae350_ax45mp.dtb $TARGET_DIR/boot diff --git a/board/andes/ae350/readme.txt b/board/andes/ae350/readme.txt new file mode 100644 index 00000000..4de4cb38 --- /dev/null +++ b/board/andes/ae350/readme.txt @@ -0,0 +1,63 @@ +Intro +===== + +Andestech AE350 Platform + +The AE350 prototype demonstrates the AE350 platform on the FPGA. + +How to build it +=============== + +Configure Buildroot +------------------- + + $ make andes_ae350_45_defconfig + +If you want to customize your configuration: + + $ make menuconfig + +Build everything +---------------- +Note: you will need to access to the network, since Buildroot will +download the packages' sources. + + $ make + +Result of the build +------------------- + +After building, you should obtain the following files: + + output/images/ + |-- ae350_ax45mp.dtb + |-- boot.vfat + |-- fw_dynamic.bin + |-- fw_dynamic.elf + |-- Image + |-- rootfs.ext2 + |-- rootfs.ext4 -> rootfs.ext2 + |-- sdcard.img + |-- u-boot-spl.bin + `-- u-boot.itb + +Copy the sdcard.img to a SD card with "dd": + + $ sudo dd if=sdcard.img of=/dev/sdX bs=4096 + $ sudo sync + +Your SD card partition should be: + + Disk /dev/sdb: 14.48 GiB, 15552479232 bytes, 30375936 sectors + Disk model: Multi-Card + Units: sectors of 1 * 512 = 512 bytes + Sector size (logical/physical): 512 bytes / 512 bytes + I/O size (minimum/optimal): 512 bytes / 512 bytes + Disklabel type: dos + Disk identifier: 0x00000000 + + Device Boot Start End Sectors Size Id Type + /dev/sdb1 1 4096 4096 2M c W95 FAT32 (LBA) + /dev/sdb2 * 4097 126976 122880 60M 83 Linux + +Insert SD card and reset the board, it should boot Linux from mmc. diff --git a/board/andes/ae350/rootfs_overlay/boot/extlinux/extlinux.conf b/board/andes/ae350/rootfs_overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..be19e196 --- /dev/null +++ b/board/andes/ae350/rootfs_overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +label linux + kernel /boot/Image + fdt /boot/ae350_ax45mp.dtb + append earlycon=sbi root=/dev/mmcblk0p2 rootwait diff --git a/board/andes/ae350/uboot.config.fragment b/board/andes/ae350/uboot.config.fragment new file mode 100644 index 00000000..fa38bbca --- /dev/null +++ b/board/andes/ae350/uboot.config.fragment @@ -0,0 +1,7 @@ +CONFIG_SPL_FS_FAT=y +CONFIG_SPL_MMC=y +# CONFIG_SPL_RAM_SUPPORT is not set +CONFIG_SPL_OPENSBI_LOAD_ADDR=0x0 +CONFIG_SPL_OPENSBI_SCRATCH_OPTIONS=0x0 +CONFIG_DISPLAY_CPUINFO=y +CONFIG_DISPLAY_BOARDINFO=y diff --git a/board/arcturus/aarch64-ucls1012a/post-build.sh b/board/arcturus/aarch64-ucls1012a/post-build.sh new file mode 100755 index 00000000..372df59c --- /dev/null +++ b/board/arcturus/aarch64-ucls1012a/post-build.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +mkdir -p ${TARGET_DIR}/lib/firmware +cp -f ${BUILD_DIR}/linux-custom/br2-ucls1012a.its ${BINARIES_DIR}/ diff --git a/board/arcturus/aarch64-ucls1012a/post-image.sh b/board/arcturus/aarch64-ucls1012a/post-image.sh new file mode 100755 index 00000000..ccfacd38 --- /dev/null +++ b/board/arcturus/aarch64-ucls1012a/post-image.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +MKIMAGE=${HOST_DIR}/usr/bin/mkimage +MKIMAGE_IN=${BINARIES_DIR}/br2-ucls1012a.its +MKIMAGE_OUT=${BINARIES_DIR}/part0-000000.itb +${MKIMAGE} -f ${MKIMAGE_IN} ${MKIMAGE_OUT} diff --git a/board/arcturus/aarch64-ucls1012a/readme.txt b/board/arcturus/aarch64-ucls1012a/readme.txt new file mode 100644 index 00000000..b486eceb --- /dev/null +++ b/board/arcturus/aarch64-ucls1012a/readme.txt @@ -0,0 +1,74 @@ +Arcturus uCLS1012A SoM +====================== + +This tutorial describes how to use the predefined Buildroot +configuration for the Arcturus uCLS101A SoM platform. + +Additional information about the uCLS1012A System on Module can be found at +https://www.arcturusnetworks.com/products/ucls1012a +and product support for registered users at +https://www.arcturusnetworks.com/support + +Building +-------- + +Return to the top directory and execute the following commands. + + make arcturus_ucls1012a_defconfig + make + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + +-- arc-ucls1012a.dtb + +-- Image.gz + +-- part0-000000.itb + +-- rootfs.cpio + +-- rootfs.cpio.gz + +-- rootfs.tar + +-- u-boot.bin + +-- br2-ucls1012a.its + +Flashing +-------- + +You'll need to program the image created by buildroot into the SPI NOR flash. + +1. Reboot your module and via the serial console press to enter the B$ +u-boot shell. + From the shell you will need to update four environment variables replacing the + IPv4 IP Address with ones that will work with your network and tftp server. + + B$ setenv ipaddr 192.168.1.81 + B$ setenv serverip 192.168.1.80 + B$ setenv gatewayip 192.168.1.1 + B$ setenv netmask 255.255.255.0 + B$ saveenv + +2. Enable tftp server to serve the /output/images/ folder. + +3. Program the new U-Boot binary (optional) + If you don't feel confident upgrading your bootloader then don't do it, + it's unnecessary most of the time. + + B$ tftp u-boot.bin + B$ run program_uboot + +4. Program the ITB image (includes Kernel, DTB and Ramdisk) + + B$ tftp part0-000000.itb + B$ run iprogram + +5. Booting your new system + + Reboot your system by reset command + B$ reset + + or + + B$ run bootcmd + +Good Luck ! diff --git a/board/arcturus/ppc-ucp1020/readme.txt b/board/arcturus/ppc-ucp1020/readme.txt new file mode 100644 index 00000000..07986f50 --- /dev/null +++ b/board/arcturus/ppc-ucp1020/readme.txt @@ -0,0 +1,74 @@ +Arcturus uCP1020 SoM +==================== + +This tutorial describes how to use the predefined Buildroot +configuration for the Arcturus uCP1020 SoM platform. + +Additional information about this module can be found at + + +Building +-------- + + make arcturus_ucp1020_defconfig + make + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + +-- rootfs.jffs2 + +-- rootfs.tar + +-- u-boot.bin + +-- ucp1020.dtb + +-- uImage + +Flashing +-------- + +You'll need to program the files created by buildroot into the NOR flash. + +1. Program the new U-Boot binary (optional) + If you don't feel confident upgrading your bootloader then don't do it, + it's unnecessary most of the time. + + B$ tftp u-boot.bin + B$ protect off 0xeff80000 +$filesize + B$ erase 0xeff80000 +$filesize + B$ cp.b $loadaddr 0xeff80000 $filesize + B$ protect on 0xeff80000 +$filesize + +2. Program the kernel + + B$ tftp uImage + B$ erase 0xec140000 +$filesize + B$ cp.b $loadaddr 0xec140000 $filesize + +3. Program the DTB + + B$ tftp ucp1020.dtb + B$ erase 0xec100000 +$filesize + B$ cp.b $loadaddr 0xec100000 $filesize + +4. Program the jffs2 root filesystem + + B$ tftp rootfs.jffs2 + B$ erase 0xec800000 0xee8fffff + B$ cp.b $loadaddr 0xec800000 $filesize + +5. Booting your new system + + B$ setenv norboot 'setenv bootargs root=/dev/mtdblock1 rootfstype=jffs2 console=$consoledev,$baudrate;bootm 0xec140000 - 0xec100000' + + If you want to set this boot option as default: + + B$ setenv bootcmd 'run norboot' + B$ saveenv + + ...or for a single boot: + + B$ run norboot + +Good Luck ! diff --git a/board/arm/foundation-v8/patches/linux-headers/linux-headers.hash b/board/arm/foundation-v8/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/arm/foundation-v8/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/arm/foundation-v8/patches/linux/linux.hash b/board/arm/foundation-v8/patches/linux/linux.hash new file mode 100644 index 00000000..559b53be --- /dev/null +++ b/board/arm/foundation-v8/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b0bb92d982f88380e5b2059349c3a862e0afa712e0646eb0e082b9c2c5cb5176 linux-6.8.10.tar.xz diff --git a/board/arm/foundation-v8/readme.txt b/board/arm/foundation-v8/readme.txt new file mode 100644 index 00000000..701cf3ce --- /dev/null +++ b/board/arm/foundation-v8/readme.txt @@ -0,0 +1,20 @@ +This is the support for the ARM Foundation v8 machine emulated by the +ARM software simulator of the AArch64 architecture. + +First, one has to download the AArch64 software simulator from: + + https://developer.arm.com/-/media/Files/downloads/ecosystem-models/FM_11_25/Foundation_Platform_11.25_15_Linux64.tgz + +Then, use the arm_foundationv8_defconfig configuration to build your +Buildroot system. + +Finally, boot your system with: + + ${LOCATION_OF_FOUNDATIONV8_SIMULATOR}/models/Linux64_GCC-9.3/Foundation_Platform \ + --image output/images/linux-system.axf \ + --block-device output/images/rootfs.ext2 \ + --network=nat \ + --cores 4 + +You can get network access from within the simulated environment +by requesting an IP address using DHCP (run the command 'udhcpc'). diff --git a/board/arm/fvp-ebbr/fvp-config.txt b/board/arm/fvp-ebbr/fvp-config.txt new file mode 100644 index 00000000..61e04001 --- /dev/null +++ b/board/arm/fvp-ebbr/fvp-config.txt @@ -0,0 +1,15 @@ +# Arm A-Profile Base RevC AEM FVP config +bp.secure_memory=1 +bp.ve_sysregs.exit_on_shutdown=1 +cache_state_modelled=0 +cluster0.NUM_CORES=4 +cluster0.cpu0.enable_crc32=1 +cluster0.cpu1.enable_crc32=1 +cluster0.cpu2.enable_crc32=1 +cluster0.cpu3.enable_crc32=1 +cluster1.NUM_CORES=4 +cluster1.cpu0.enable_crc32=1 +cluster1.cpu1.enable_crc32=1 +cluster1.cpu2.enable_crc32=1 +cluster1.cpu3.enable_crc32=1 +pctl.startup=0.0.0.0 diff --git a/board/arm/fvp-ebbr/fvp-ebbr.dts b/board/arm/fvp-ebbr/fvp-ebbr.dts new file mode 100644 index 00000000..45e4b472 --- /dev/null +++ b/board/arm/fvp-ebbr/fvp-ebbr.dts @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2024, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "fvp-base-gicv3-psci-1t.dts" + +/* The TF-A Devicetree does not have the OP-TEE node; let's add it. */ + +/ { + firmware { + optee { + compatible = "linaro,optee-tz"; + method = "smc"; + }; + }; +}; diff --git a/board/arm/fvp-ebbr/genimage.cfg b/board/arm/fvp-ebbr/genimage.cfg new file mode 100644 index 00000000..1ca8332b --- /dev/null +++ b/board/arm/fvp-ebbr/genimage.cfg @@ -0,0 +1,31 @@ +image efi-part.vfat { + vfat { + file EFI { + image = "efi-part/EFI" + } + + file Image { + image = "Image" + } + } + + size = 128M +} + +image disk.img { + hdimage { + partition-table-type = "gpt" + } + + partition boot { + image = "efi-part.vfat" + partition-type-uuid = U + offset = 32K + bootable = true + } + + partition root { + partition-type-uuid = b921b045-1df0-41c3-af44-4c6f280d3fae + image = "rootfs.ext2" + } +} diff --git a/board/arm/fvp-ebbr/grub.cfg b/board/arm/fvp-ebbr/grub.cfg new file mode 100644 index 00000000..d99e19c4 --- /dev/null +++ b/board/arm/fvp-ebbr/grub.cfg @@ -0,0 +1,6 @@ +set default="0" +set timeout="5" + +menuentry "Buildroot" { + linux /Image root=PARTLABEL=root rootwait +} diff --git a/board/arm/fvp-ebbr/patches/arm-trusted-firmware/0001-feat-fvp-add-stdout-path.patch b/board/arm/fvp-ebbr/patches/arm-trusted-firmware/0001-feat-fvp-add-stdout-path.patch new file mode 100644 index 00000000..0a04c022 --- /dev/null +++ b/board/arm/fvp-ebbr/patches/arm-trusted-firmware/0001-feat-fvp-add-stdout-path.patch @@ -0,0 +1,45 @@ +From 8c30a0c7fe0162de0618b26fb34cc91ea582e5f7 Mon Sep 17 00:00:00 2001 +From: Debbie Martin +Date: Wed, 27 Sep 2023 18:05:26 +0100 +Subject: [PATCH] feat(fvp): add stdout-path + +Add stdout-path to the fvp-base devicetree to be passed to BL33 (U-Boot) +and then to the Linux kernel to be compliant to Arm SystemReady IR: +https://developer.arm.com/documentation/DUI1101/2-0/ +Configure-U-Boot-for-SystemReady/Adapt-the-Devicetree + +This has been tested by booting fvp-base to Linux and ensuring the +console is accessible. + +Change-Id: Iae98630f18f735ce344c1158f41f358c2a49eeb6 +Signed-off-by: Diego Sueiro +Signed-off-by: Debbie Martin +Upstream: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/+/8c30a0c7fe0162de0618b26fb34cc91ea582e5f7%5E!/ +Signed-off-by: Vincent Stehlé +--- + fdts/fvp-base-psci-common.dtsi | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/fdts/fvp-base-psci-common.dtsi b/fdts/fvp-base-psci-common.dtsi +index 79cf37d3b0..ff31ba7616 100644 +--- a/fdts/fvp-base-psci-common.dtsi ++++ b/fdts/fvp-base-psci-common.dtsi +@@ -27,11 +27,12 @@ + #address-cells = <2>; + #size-cells = <2>; + ++ chosen { ++ stdout-path = "serial0:115200n8"; + #if (ENABLE_RME == 1) +- chosen { bootargs = "console=ttyAMA0 earlycon=pl011,0x1c090000 root=/dev/vda ip=on";}; +-#else +- chosen {}; ++ bootargs = "console=ttyAMA0 earlycon=pl011,0x1c090000 root=/dev/vda ip=on"; + #endif ++ }; + + aliases { + serial0 = &v2m_serial0; +-- +2.43.0 + diff --git a/board/arm/fvp-ebbr/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/arm/fvp-ebbr/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 00000000..6f02bfbb --- /dev/null +++ b/board/arm/fvp-ebbr/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 7efa89e1b4e4106ee05d68e876c8efbb146364d89cfd5d26bf4647b09c08f32b arm-trusted-firmware-v2.10-git4.tar.gz diff --git a/board/arm/fvp-ebbr/patches/linux-headers/linux-headers.hash b/board/arm/fvp-ebbr/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/arm/fvp-ebbr/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/arm/fvp-ebbr/patches/linux/linux.hash b/board/arm/fvp-ebbr/patches/linux/linux.hash new file mode 100644 index 00000000..04e69e88 --- /dev/null +++ b/board/arm/fvp-ebbr/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b78dcd09f6b725872a2c0c87a70a064b0fbbcccfe5ce60aa46c669934a9e28b6 linux-6.8.11.tar.xz diff --git a/board/arm/fvp-ebbr/patches/uboot/uboot.hash b/board/arm/fvp-ebbr/patches/uboot/uboot.hash new file mode 100644 index 00000000..9f554d5c --- /dev/null +++ b/board/arm/fvp-ebbr/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 077cf8ca283411103ad274a3724dacb5068ede824de749beff9c9e5b531b43ea u-boot-2024.07-rc3.tar.bz2 diff --git a/board/arm/fvp-ebbr/post-image.sh b/board/arm/fvp-ebbr/post-image.sh new file mode 100755 index 00000000..72b156eb --- /dev/null +++ b/board/arm/fvp-ebbr/post-image.sh @@ -0,0 +1,7 @@ +#!/bin/sh +set -eu + +BOARD_DIR=$(dirname "$0") + +# Override the default GRUB configuration file with our own. +cp -f "${BOARD_DIR}/grub.cfg" "${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg" diff --git a/board/arm/fvp-ebbr/readme.txt b/board/arm/fvp-ebbr/readme.txt new file mode 100644 index 00000000..8115bfbd --- /dev/null +++ b/board/arm/fvp-ebbr/readme.txt @@ -0,0 +1,73 @@ +Introduction +============ + +The arm_fvp_ebbr_defconfig is meant to illustrate some aspects of the Arm EBBR +specification[1] and the Arm SystemReady IR[2] compliance program. +It allows building an AArch64 U-Boot based firmware implementing the subset of +UEFI defined by EBBR, as well as a Linux OS disk image booting with UEFI, to run +on the Arm A-Profile Base RevC AEM FVP. + +Building +======== + + $ make arm_fvp_ebbr_defconfig + $ make + +Generated files under output/images: + +* bl1.bin: A ROM image built from TF-A. +* fip.bin: A firmware image comprising TF-A, OP-TEE and the U-Boot bootloader. +* disk.img: An OS disk image comprising the GRUB bootloader, the Linux kernel + and the root filesystem. + +Running on the FVP +================== + +Download the FVP from one of the following sources, corresponding to your host +computer: + +- https://developer.arm.com/-/media/Files/downloads/ecosystem-models/FM_11_25/FVP_Base_RevC-2xAEMvA_11.25_15_Linux64.tgz +- https://developer.arm.com/-/media/Files/downloads/ecosystem-models/FM_11_25/FVP_Base_RevC-2xAEMvA_11.25_15_Linux64_armv8l.tgz + +The FVP will be located under one of the corresponding folders: + +- Base_RevC_AEMvA_pkg/models/Linux64_GCC-9.3 +- Base_RevC_AEMvA_pkg/models/Linux64_armv8l_GCC-9.3 + +Run the simulation with: + + FVP_Base_RevC-2xAEMvA \ + --config-file board/arm/fvp-ebbr/fvp-config.txt \ + -C bp.secureflashloader.fname="output/images/bl1.bin" \ + -C bp.flashloader0.fname="output/images/fip.bin" \ + -C bp.virtioblockdevice.image_path="output/images/disk.img" + +The login prompt will appear in a new X terminal. + +Using the EBBR firmware to run another OS on the FVP +---------------------------------------------------- + +It is possible to use the generated firmware binaries to run another OS +supporting the EBBR specification. + +To run another OS on simulation using a live or pre-installed image, use the +same FVP command line as for the generated OS but adapt the OS image path in the +virtioblockdevice stanza. +The image generated by the aarch64_efi_defconfig or the Arm ACS-IR images[3] are +examples of pre-installed OS images. +Linux distributions such as Debian, Fedora, openSUSE or Ubuntu provide a +pre-installed OS image. + +Miscellaneous +============= + +This configuration is inspired by the arm_foundationv8_defconfig, the +qemu_aarch64_virt_defconfig and the Arm SystemReady IR IoT Integration, Test, +and Certification Guide[4]. + +Firmware update, MMC and network are currently not supported. + +[1]: https://github.com/ARM-software/ebbr +[2]: https://developer.arm.com/Architectures/Arm%20SystemReady%20IR +[3]: https://github.com/ARM-software/arm-systemready/tree/main/IR/prebuilt_images +[4]: https://developer.arm.com/documentation/DUI1101/latest/ diff --git a/board/arm/fvp-ebbr/u-boot.fragment b/board/arm/fvp-ebbr/u-boot.fragment new file mode 100644 index 00000000..abbf8395 --- /dev/null +++ b/board/arm/fvp-ebbr/u-boot.fragment @@ -0,0 +1,49 @@ +# CONFIG_USE_BOOTCOMMAND is not set +CONFIG_BOOTCOMMAND="bootflow scan -lb" +CONFIG_BOOTMETH_DISTRO=y +CONFIG_BOOTM_EFI=y +CONFIG_BOOTSTD_BOOTCOMMAND=y +CONFIG_BOOTSTD_DEFAULTS=y +CONFIG_BOOTSTD_FULL=y +CONFIG_CMD_BOOTDEV=y +CONFIG_CMD_BOOTEFI=y +CONFIG_CMD_BOOTEFI_HELLO=y +CONFIG_CMD_BOOTEFI_HELLO_COMPILE=y +CONFIG_CMD_BOOTEFI_SELFTEST=y +CONFIG_CMD_BOOTMETH=y +CONFIG_CMD_DM=y +CONFIG_CMD_EFIDEBUG=y +CONFIG_CMD_EFI_VARIABLE_FILE_STORE=y +CONFIG_CMD_GETTIME=y +CONFIG_CMD_GPT=y +CONFIG_CMD_NVEDIT_EFI=y +CONFIG_CMD_RNG=y +CONFIG_CMD_RTC=y +CONFIG_CMD_TIME=y +CONFIG_DM_RNG=y +CONFIG_DM_RTC=y +CONFIG_EFI_DEVICE_PATH_TO_TEXT=y +CONFIG_EFI_GET_TIME=y +CONFIG_EFI_HAVE_RUNTIME_RESET=y +CONFIG_EFI_LOADER=y +CONFIG_EFI_LOADER_HII=y +CONFIG_EFI_MM_COMM_TEE=y +CONFIG_EFI_PARTITION=y +CONFIG_EFI_SECURE_BOOT=y +CONFIG_EFI_SET_TIME=y +CONFIG_EFI_UNICODE_CAPITALIZATION=y +CONFIG_EFI_UNICODE_COLLATION_PROTOCOL2=y +CONFIG_EFI_VARIABLE_FILE_STORE=y +CONFIG_FAT_WRITE=y +CONFIG_FIT=y +CONFIG_FS_FAT=y +CONFIG_ISO_PARTITION=y +CONFIG_MISC=y +CONFIG_OF_CONTROL=y +CONFIG_OF_LIBFDT=y +CONFIG_OPTEE=y +CONFIG_PARTITION_TYPE_GUID=y +CONFIG_RNG_OPTEE=y +CONFIG_TEE=y +CONFIG_USE_BOOTCOMMAND=y +CONFIG_VEXPRESS_CONFIG=y diff --git a/board/armadeus/apf27/linux-5.10.config b/board/armadeus/apf27/linux-5.10.config new file mode 100644 index 00000000..5f5776f8 --- /dev/null +++ b/board/armadeus/apf27/linux-5.10.config @@ -0,0 +1,227 @@ +# CONFIG_SWAP is not set +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_PREEMPT=y +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_CGROUPS=y +CONFIG_EMBEDDED=y +# CONFIG_COMPAT_BRK is not set +CONFIG_SLAB=y +CONFIG_PROFILING=y +# CONFIG_ARCH_MULTI_V7 is not set +CONFIG_ARCH_MXC=y +CONFIG_AEABI=y +CONFIG_PM_DEBUG=y +CONFIG_OPROFILE=m +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_IOSCHED_DEADLINE is not set +# CONFIG_IOSCHED_CFQ is not set +CONFIG_MACH_IMX27_DT=y +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +# CONFIG_INET_DIAG is not set +CONFIG_IPV6=y +CONFIG_CAN=m +CONFIG_CAN_VCAN=m +CONFIG_CAN_MCP251X=m +CONFIG_BT=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_HIDP=m +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_CFG80211=m +CONFIG_MAC80211=m +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_CFI=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_GEOMETRY=y +# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set +# CONFIG_MTD_CFI_I2 is not set +CONFIG_MTD_CFI_INTELEXT=y +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_MXC=y +CONFIG_MTD_UBI=y +CONFIG_EEPROM_AT24=y +CONFIG_EEPROM_AT25=y +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SR=y +CONFIG_CHR_DEV_SG=y +CONFIG_CHR_DEV_SCH=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_NETDEVICES=y +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_CIRRUS is not set +# CONFIG_NET_VENDOR_FARADAY is not set +# CONFIG_NET_VENDOR_INTEL is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SMSC is not set +# CONFIG_NET_VENDOR_STMICRO is not set +# CONFIG_NET_VENDOR_WIZNET is not set +CONFIG_SMSC_PHY=y +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_SDIO=m +CONFIG_RT2X00=m +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RTL8187=m +CONFIG_RTL8192CU=m +CONFIG_ZD1211RW=m +CONFIG_INPUT_JOYDEV=y +CONFIG_INPUT_EVDEV=y +CONFIG_KEYBOARD_GPIO=y +CONFIG_KEYBOARD_IMX=m +# CONFIG_INPUT_MOUSE is not set +CONFIG_INPUT_JOYSTICK=y +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_TSC2102=y +# CONFIG_LEGACY_PTYS is not set +CONFIG_SERIAL_IMX=y +CONFIG_SERIAL_IMX_CONSOLE=y +# CONFIG_HW_RANDOM is not set +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_IMX=y +CONFIG_SPI=y +CONFIG_SPI_IMX=y +CONFIG_SPI_SPIDEV=m +CONFIG_GPIO_SYSFS=y +CONFIG_W1=y +CONFIG_W1_MASTER_MXC=y +CONFIG_W1_SLAVE_THERM=y +CONFIG_WATCHDOG=y +CONFIG_IMX2_WDT=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_USB_SUPPORT=y +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_PWC=m +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_SOC_CAMERA=m +CONFIG_VIDEO_MX2=m +CONFIG_V4L_MEM2MEM_DRIVERS=y +CONFIG_VIDEO_CODA=m +CONFIG_VIDEO_MX2_EMMAPRP=m +# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set +CONFIG_SOC_CAMERA_MT9M111=m +# CONFIG_DVB_AU8522_V4L is not set +# CONFIG_DVB_TUNER_DIB0070 is not set +# CONFIG_DVB_TUNER_DIB0090 is not set +CONFIG_FB=y +CONFIG_FB_IMX=y +CONFIG_LCD_L4F00242T03=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_LOGO=y +CONFIG_SOUND=m +CONFIG_SND=m +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +# CONFIG_SND_DRIVERS is not set +# CONFIG_SND_ARM is not set +# CONFIG_SND_SPI is not set +# CONFIG_SND_USB is not set +CONFIG_SND_SOC=m +CONFIG_SND_IMX_SOC=m +CONFIG_USB=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_MXC=y +CONFIG_USB_ACM=y +CONFIG_USB_PRINTER=y +CONFIG_USB_STORAGE=y +CONFIG_USB_CHIPIDEA=y +CONFIG_USB_CHIPIDEA_UDC=y +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_CHIPIDEA_DEBUG=y +CONFIG_USB_SERIAL=y +CONFIG_USB_SERIAL_FTDI_SIO=y +CONFIG_USB_SERIAL_PL2303=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_USB_ULPI=y +CONFIG_USB_GADGET=y +CONFIG_USB_FSL_USB2=y +CONFIG_USB_ETH=m +CONFIG_USB_GADGETFS=m +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_G_HID=m +CONFIG_MMC=y +CONFIG_MMC_MXC=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_ONESHOT=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=y +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_GPIO=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y +CONFIG_LEDS_TRIGGER_TRANSIENT=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_DS1374=y +CONFIG_RTC_DRV_MXC=m +CONFIG_DMADEVICES=y +CONFIG_IMX_DMA=y +CONFIG_IMX_SDMA=y +# CONFIG_IOMMU_SUPPORT is not set +CONFIG_IIO=y +CONFIG_MAX1027=y +CONFIG_PWM=y +CONFIG_PWM_IMX=y +CONFIG_EXT2_FS=y +CONFIG_EXT3_FS=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +# CONFIG_DNOTIFY is not set +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +# CONFIG_PROC_PAGE_MONITOR is not set +CONFIG_TMPFS=y +CONFIG_JFFS2_FS=y +CONFIG_UBIFS_FS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V4=y +CONFIG_ROOT_NFS=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_850=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_ISO8859_15=m +CONFIG_FONTS=y +CONFIG_FONT_8x8=y +CONFIG_PRINTK_TIME=y +CONFIG_DEBUG_INFO=y +CONFIG_DEBUG_FS=y +# CONFIG_SCHED_DEBUG is not set +# CONFIG_DEBUG_PREEMPT is not set +# CONFIG_FTRACE is not set +CONFIG_DEBUG_LL=y +CONFIG_EARLY_PRINTK=y diff --git a/board/armadeus/apf51/linux-5.10.config b/board/armadeus/apf51/linux-5.10.config new file mode 100644 index 00000000..6957b635 --- /dev/null +++ b/board/armadeus/apf51/linux-5.10.config @@ -0,0 +1,278 @@ +CONFIG_EXPERIMENTAL=y +# CONFIG_LOCALVERSION_AUTO is not set +# CONFIG_SWAP is not set +CONFIG_SYSVIPC=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_EMBEDDED=y +# CONFIG_COMPAT_BRK is not set +CONFIG_SLAB=y +CONFIG_PROFILING=y +CONFIG_OPROFILE=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +# CONFIG_BLK_DEV_BSG is not set +CONFIG_PARTITION_ADVANCED=y +CONFIG_BSD_DISKLABEL=y +# CONFIG_IOSCHED_CFQ is not set +CONFIG_ARCH_MXC=y +CONFIG_MXC_IRQ_PRIOR=y +CONFIG_SOC_IMX51=y +CONFIG_ARM_THUMBEE=y +CONFIG_PREEMPT=y +CONFIG_AEABI=y +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_STAT_DETAILS=y +CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_CPU_FREQ_IMX=y +CONFIG_CPU_IDLE=y +CONFIG_VFP=y +CONFIG_NEON=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +# CONFIG_SUSPEND is not set +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_PNP=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_LRO is not set +# CONFIG_INET_DIAG is not set +CONFIG_IPV6=y +CONFIG_CAN=m +CONFIG_CAN_RAW=m +CONFIG_CAN_BCM=m +CONFIG_CAN_VCAN=m +CONFIG_CAN_MCP251X=m +CONFIG_BT=m +CONFIG_BT_L2CAP=y +CONFIG_BT_SCO=y +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_HIDP=m +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_CFG80211=m +CONFIG_MAC80211=m +CONFIG_MAC80211_RC_PID=y +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_FW_LOADER=m +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_MXC=y +CONFIG_MTD_UBI=y +CONFIG_MISC_DEVICES=y +CONFIG_EEPROM_AT24=y +CONFIG_EEPROM_AT25=y +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_ST=y +CONFIG_BLK_DEV_SR=y +CONFIG_CHR_DEV_SG=y +CONFIG_CHR_DEV_SCH=y +CONFIG_SCSI_MULTI_LUN=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_NETDEVICES=y +CONFIG_MII=y +CONFIG_SMSC_PHY=y +CONFIG_NET_ETHERNET=y +# CONFIG_NETDEV_1000 is not set +# CONFIG_NETDEV_10000 is not set +CONFIG_RTL8187=m +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_SDIO=m +CONFIG_RT2X00=m +CONFIG_RT73USB=m +CONFIG_ZD1211RW=m +CONFIG_INPUT_JOYDEV=y +CONFIG_INPUT_EVDEV=y +CONFIG_KEYBOARD_GPIO=m +CONFIG_KEYBOARD_IMX=m +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_WM831X=y +CONFIG_TOUCHSCREEN_MC13XXX=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_MC13783_PWRBUTTON=m +CONFIG_INPUT_UINPUT=m +CONFIG_INPUT_WM831X_ON=y +# CONFIG_LEGACY_PTYS is not set +CONFIG_SERIAL_8250=m +CONFIG_SERIAL_IMX=y +CONFIG_SERIAL_IMX_CONSOLE=y +# CONFIG_HW_RANDOM is not set +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_IMX=y +CONFIG_SPI=y +CONFIG_SPI_IMX=y +CONFIG_SPI_SPIDEV=m +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_WM831X=m +CONFIG_POWER_SUPPLY=y +CONFIG_WM831X_BACKUP=m +CONFIG_WM831X_POWER=m +CONFIG_HWMON=m +CONFIG_SENSORS_AS1531=m +CONFIG_SENSORS_MC13783_ADC=m +CONFIG_SENSORS_WM831X=m +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_NOWAYOUT=y +CONFIG_WM831X_WATCHDOG=m +CONFIG_IMX2_WDT=y +CONFIG_MFD_MC13XXX_I2C=y +CONFIG_MFD_WM831X_I2C=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_MC13892=m +CONFIG_IMX_IPUV3_CORE=y +CONFIG_DRM=y +CONFIG_MFD_IMX_IPU_V3=y +CONFIG_MEDIA_SUPPORT=m +CONFIG_VIDEO_DEV=m +# CONFIG_RC_CORE is not set +# CONFIG_MEDIA_TUNER_SIMPLE is not set +# CONFIG_MEDIA_TUNER_TDA8290 is not set +# CONFIG_MEDIA_TUNER_TDA827X is not set +# CONFIG_MEDIA_TUNER_TDA18271 is not set +# CONFIG_MEDIA_TUNER_TDA9887 is not set +# CONFIG_MEDIA_TUNER_TEA5761 is not set +# CONFIG_MEDIA_TUNER_TEA5767 is not set +# CONFIG_MEDIA_TUNER_MT20XX is not set +# CONFIG_MEDIA_TUNER_MT2060 is not set +# CONFIG_MEDIA_TUNER_MT2266 is not set +# CONFIG_MEDIA_TUNER_MT2131 is not set +# CONFIG_MEDIA_TUNER_QT1010 is not set +# CONFIG_MEDIA_TUNER_XC2028 is not set +# CONFIG_MEDIA_TUNER_XC5000 is not set +# CONFIG_MEDIA_TUNER_MXL5005S is not set +# CONFIG_MEDIA_TUNER_MXL5007T is not set +# CONFIG_MEDIA_TUNER_MC44S803 is not set +# CONFIG_MEDIA_TUNER_MAX2165 is not set +# CONFIG_MEDIA_TUNER_TDA18218 is not set +CONFIG_VIDEO_VIVI=m +CONFIG_USB_VIDEO_CLASS=m +# CONFIG_RADIO_ADAPTERS is not set +CONFIG_FB=y +CONFIG_FB_MX5=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FONTS=y +CONFIG_FONT_8x8=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +CONFIG_SOUND=m +# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set +CONFIG_SND=m +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +# CONFIG_SND_DRIVERS is not set +# CONFIG_SND_ARM is not set +# CONFIG_SND_SPI is not set +# CONFIG_SND_USB is not set +CONFIG_SND_SOC=m +CONFIG_SND_IMX_SOC=m +CONFIG_SND_SOC_APF51_DEV_WM8960=m +CONFIG_USB=y +CONFIG_USB_DEBUG=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_DEVICE_CLASS is not set +CONFIG_USB_SUSPEND=y +CONFIG_USB_OTG=y +# CONFIG_USB_OTG_WHITELIST is not set +CONFIG_USB_MON=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_MXC=y +CONFIG_USB_ACM=y +CONFIG_USB_PRINTER=y +CONFIG_USB_WDM=y +CONFIG_USB_STORAGE=y +CONFIG_USB_CHIPIDEA=y +CONFIG_USB_CHIPIDEA_UDC=y +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_PHY=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_USB_GPIO_VBUS=y +CONFIG_USB_ULPI=y +CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_DEBUG_FILES=y +CONFIG_USB_GADGET_DEBUG_FS=y +CONFIG_USB_ETH=m +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_G_SERIAL=m +CONFIG_USB_CDC_COMPOSITE=m +CONFIG_USB_G_MULTI=m +CONFIG_USB_G_MULTI_CDC=y +CONFIG_USB_G_HID=m +CONFIG_MMC=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SDHCI_ESDHC_IMX=y +CONFIG_MMC_SPI=m +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_WM831X_STATUS=m +CONFIG_LEDS_MC13783=m +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_MXC=y +CONFIG_RTC_DRV_WM831X=y +CONFIG_RTC_DRV_MC13XXX=m +CONFIG_STAGING=y +CONFIG_DRM_IMX=y +CONFIG_DRM_IMX_FB_HELPER=y +CONFIG_DRM_IMX_PARALLEL_DISPLAY=y +CONFIG_DRM_IMX_TVE=y +CONFIG_DRM_IMX_IPUV3=y +CONFIG_IIO=m +CONFIG_EXT2_FS=y +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +CONFIG_EXT2_FS_XIP=y +CONFIG_EXT3_FS=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT4_FS=y +CONFIG_AUTOFS4_FS=y +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +CONFIG_UBIFS_FS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +CONFIG_NFS_V4=y +CONFIG_ROOT_NFS=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_850=y +CONFIG_NLS_ISO8859_1=y +CONFIG_DEBUG_FS=y +# CONFIG_CRYPTO_ANSI_CPRNG is not set +# CONFIG_CRYPTO_HW is not set diff --git a/board/armadeus/patches/linux-headers/linux-headers.hash b/board/armadeus/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/armadeus/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/armadeus/patches/linux/linux.hash b/board/armadeus/patches/linux/linux.hash new file mode 100644 index 00000000..804920c1 --- /dev/null +++ b/board/armadeus/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 879ca159c34ea9d3a6775f292cc59c2d3931d57dca00f0bebe2675ea0c82c6a9 linux-5.10.215.tar.xz diff --git a/board/armadeus/patches/uboot/uboot.hash b/board/armadeus/patches/uboot/uboot.hash new file mode 100644 index 00000000..777e0ada --- /dev/null +++ b/board/armadeus/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 839bf23cfe8ce613a77e583a60375179d0ad324e92c82fbdd07bebf0fd142268 u-boot-2018.09.tar.bz2 diff --git a/board/armadeus/readme.txt b/board/armadeus/readme.txt new file mode 100644 index 00000000..c03508c6 --- /dev/null +++ b/board/armadeus/readme.txt @@ -0,0 +1,84 @@ +Introduction +============ + +Armadeus APFxx are Systems On Module (SOM) based on Freescale/NXP i.MX +processors associated with an FPGA (except on APF28). Non volatile +data are stored in on-module NOR or NAND Flash, depending on the +model. These SOM can be used on Armadeus development boards or with +custom docking boards. + +Supported platforms +=================== + +Buildroot currently supports the following Armadeus platforms with the +associated defconfigs: + + * APF27 SOM + devt board -> armadeus_apf27_defconfig + * APF51 SOM + devt board -> armadeus_apf51_defconfig + * APF28 SOM + devt board -> armadeus_apf28_defconfig + +Vanilla Linux versions are preferred to Freescale's one in these +configurations. + +How to build it +=============== + +Configure Buildroot +------------------- + +Let's say you own an APFxx SOM with it's corresponding development +board, all you have to do is: + + $ make armadeus_apfxx_defconfig + +where "apfxx" is the version of your SOM. + +Launch build +------------ + + $ make + +Result of the build +------------------- + +When the build is finished, you will end up with: + + output/images/ + +-- imx**-apfxxdev.dtb [1] + +-- rootfs.tar + +-- rootfs.ubi + +-- rootfs.ubifs + +-- uImage + +[1] Only if the kernel version used uses a Device Tree. + +Building U-Boot is currently not supported in these configurations. + +Installation +============ + +You will require a serial connection to the board and a TFTP server on +your Host PC. Assuming your server is configured for exporting +/tftpboot/ directory, you will have to copy the generated images to +it: + + $ cp output/images/uImage /tftpboot/apfxx-linux.bin + $ cp output/images/*.dtb /tftpboot/ + $ cp output/images/rootfs.ubi /tftpboot/apfxx-rootfs.ubi + +where "apfxx" is the version of your SOM, as used with _defconfigs. + +Then on your serial terminal, all you have to do is: + +* interrupt the boot process and access U-Boot console by pressing any + key when booting, +* configure board and server IP addresses with "ipaddr" and "serverip" + environment variables, +* if you want to update kernel: + BIOS > run update_kernel +* if you want to update device tree: + BIOS > run update_dtb +* if you want to update rootfs: + BIOS > run update_rootfs + +That's it ! diff --git a/board/arrow/avenger96/overlay/boot/extlinux/extlinux.conf b/board/arrow/avenger96/overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..7d6d7f8a --- /dev/null +++ b/board/arrow/avenger96/overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +label stm32mp157c-dk2-buildroot + kernel /boot/zImage + devicetree /boot/stm32mp157a-dhcor-avenger96.dtb + append root=/dev/mmcblk0p4 rootwait diff --git a/board/arrow/avenger96/readme.txt b/board/arrow/avenger96/readme.txt new file mode 100644 index 00000000..19ab09eb --- /dev/null +++ b/board/arrow/avenger96/readme.txt @@ -0,0 +1,41 @@ +Arrow Avenger96 + +Intro +===== + +This configuration supports the Arrow Avenger96 board: + +https://wiki.dh-electronics.com/index.php/Avenger96 + +How to build +============ + + $ make avenger96_defconfig + $ make + +How to write the microSD card +============================= + +WARNING! This will destroy all the card content. Use with care! + +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 microSD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Boot the board +============== + + (1) Configure the boot switches for boot from microsd: 1-0-1 + + (2) Insert the microSD card in the slot + + (3) Plug a serial adapter (beware: 1v8 levels!) to the low speed + expansion connector + + (4) Plug in power cable + + (5) The system will start, with the console on UART, but also visible + on the screen. diff --git a/board/aspeed/ast2500-evb/genimage.cfg b/board/aspeed/ast2500-evb/genimage.cfg new file mode 100644 index 00000000..498a71e4 --- /dev/null +++ b/board/aspeed/ast2500-evb/genimage.cfg @@ -0,0 +1,40 @@ +# +# This config reproduces the OpenBMC flash layout defined in Linux : +# +# arch/arm/boot/dts/openbmc-flash-layout.dtsi +# +# and included by aspeed-ast2500-evb.dts +# +flash nor-32M-256 { + pebsize = 4K + numpebs = 8K + minimum-io-unit-size = 256 +} + +image flash.img { + flash { + } + flashtype = "nor-32M-256" + + partition uboot { + image = "u-boot.bin" + size = 384K + } + + partition ubootenv { + /* TODO */ + offset = 384K + size = 128K + } + + partition fitimage { + image = "image.itb" + offset = 512K + size = 4352K + } + + partition spare { + offset = 4864K + size = 27904K + } +} diff --git a/board/aspeed/ast2500-evb/linux.fragment b/board/aspeed/ast2500-evb/linux.fragment new file mode 100644 index 00000000..1cee95f8 --- /dev/null +++ b/board/aspeed/ast2500-evb/linux.fragment @@ -0,0 +1,7 @@ +CONFIG_KERNEL_XZ=y +CONFIG_ARCH_MULTI_V7=n +CONFIG_MACH_ASPEED_G6=n +CONFIG_SMP=n +CONFIG_EXT4_FS=n +CONFIG_DEBUG_FS=n +CONFIG_SUSPEND=n diff --git a/board/aspeed/ast2500-evb/readme.txt b/board/aspeed/ast2500-evb/readme.txt new file mode 100644 index 00000000..f509be55 --- /dev/null +++ b/board/aspeed/ast2500-evb/readme.txt @@ -0,0 +1,80 @@ +Aspeed AST2500 EVB + +Introduction +============ + +The AST2500 EVB is an evaluation board for the AST2500 SoC, most +commonly used as a Server Management Processor. It includes an 800MHz +ARM11 processor with DDR3 or DDR4 SDRAM (up to 1GB), SPI flash memory +devices for BMC and host firmwares and numerous controllers to drive +the server board. + + https://www.aspeedtech.com/server_ast2500/ + +How to build it +=============== + +Configure buildroot: + + $ make aspeed_ast2500evb_defconfig + +Compile everything and build the rootfs image: + + $ make + +Result of the build +=================== + +After building, the output/images directory contains: + + output/images/ + ├── aspeed-ast2500-evb.dtb + ├── flash.img + ├── image.itb + ├── rootfs.cpio + ├── rootfs.cpio.xz + ├── rootfs.tar + ├── u-boot.bin + └── zImage + +Flashing the image +================== + +To update the contents of the first flash device, copy flash.img : + + $ flashcp flash.img /dev/mtd0 + +or simply the boot loader: + + $ flashcp u-boot.bin /dev/mtd1 + +Preparing the board +=================== + + * Connect a serial line to the board + * Power-up the board + +Booting the board +================= + +The AST2500 EVB boots from the SPI flash device directly and loads a +first bootloader (usually U-Boot). U-Boot will attempt to load a Linux +kernel from the same flash device by default but other storage could +be used. + + * from U-Boot + + The FIT image image.itb can be used to boot the board from U-Boot + using tftp + + * with QEMU + + $ qemu-system-arm -M ast2500-evb \ + -drive file=output/images/flash.img,format=raw,if=mtd \ + -nographic + + $ qemu-system-arm -M ast2500-evb \ + -kernel output/images/zImage \ + -initrd output/images/rootfs.cpio \ + -dtb output/images/aspeed-ast2500-evb.dtb \ + -nographic diff --git a/board/aspeed/ast2500-evb/uboot.fragment b/board/aspeed/ast2500-evb/uboot.fragment new file mode 100644 index 00000000..8463252e --- /dev/null +++ b/board/aspeed/ast2500-evb/uboot.fragment @@ -0,0 +1,3 @@ +CONFIG_BOOTCOMMAND="bootm 20080000" +CONFIG_FIT=y +CONFIG_SHA256=y diff --git a/board/aspeed/ast2600-evb/genimage.cfg b/board/aspeed/ast2600-evb/genimage.cfg new file mode 100644 index 00000000..56932d47 --- /dev/null +++ b/board/aspeed/ast2600-evb/genimage.cfg @@ -0,0 +1,40 @@ +# +# This config reproduces the OpenBMC flash layout defined in Linux : +# +# arch/arm/boot/dts/openbmc-flash-layout-64.dtsi +# +# and included by aspeed-ast2600-evb.dts +# +flash nor-64M-256 { + pebsize = 4K + numpebs = 16K + minimum-io-unit-size = 256 +} + +image flash.img { + flash { + } + flashtype = "nor-64M-256" + + partition uboot { + image = "u-boot.bin" + size = 896K + } + + partition ubootenv { + /* TODO */ + offset = 896K + size = 128K + } + + partition fitimage { + image = "image.itb" + offset = 1M + size = 9M + } + + partition spare { + offset = 10M + size = 54M + } +} diff --git a/board/aspeed/ast2600-evb/readme.txt b/board/aspeed/ast2600-evb/readme.txt new file mode 100644 index 00000000..1f7ba13d --- /dev/null +++ b/board/aspeed/ast2600-evb/readme.txt @@ -0,0 +1,80 @@ +Aspeed AST2600 EVB + +Introduction +============ + +The AST2600 EVB is an evaluation board for the AST2600 SoC, most +commonly used as a Server Management Processor. It includes a +Dual-core ARM Cortex A7 processor with DDR4 SDRAM (up to 2GB), SPI +flash memory devices for BMC and host firmwares and numerous +controllers to drive the server board. + + https://www.aspeedtech.com/server_ast2600/ + +How to build it +=============== + +Configure buildroot: + + $ make aspeed_ast2600evb_defconfig + +Compile everything and build the rootfs image: + + $ make + +Result of the build +=================== + +After building, the output/images directory contains: + + output/images/ + ├── aspeed-ast2600-evb.dtb + ├── flash.img + ├── image.itb + ├── rootfs.cpio + ├── rootfs.cpio.xz + ├── rootfs.tar + ├── u-boot.bin + └── zImage + +Flashing the image +================== + +To update the contents of the first flash device, copy flash.img : + + $ flashcp flash.img /dev/mtd0 + +or simply the boot loader: + + $ flashcp u-boot.bin /dev/mtd1 + +Preparing the board +=================== + + * Connect a serial line to the board + * Power-up the board + +Booting the board +================= + +The AST2600 EVB boots from the SPI flash device directly and loads a +first bootloader (usually U-Boot). U-Boot will attempt to load a Linux +kernel from the same flash device by default but other storage could +be used. + + * from U-Boot + + The FIT image image.itb can be used to boot the board from U-Boot + using tftp + + * with QEMU + + $ qemu-system-arm -M ast2600-evb \ + -drive file=output/images/flash.img,format=raw,if=mtd \ + -nographic + + $ qemu-system-arm -M ast2600-evb \ + -kernel output/images/zImage \ + -initrd output/images/rootfs.cpio \ + -dtb output/images/aspeed-ast2600-evb.dtb \ + -nographic diff --git a/board/aspeed/common/image.its.template b/board/aspeed/common/image.its.template new file mode 100644 index 00000000..e3200e24 --- /dev/null +++ b/board/aspeed/common/image.its.template @@ -0,0 +1,56 @@ +/dts-v1/; + +/ { + description = "Kernel and buildroot image"; + #address-cells = <1>; + + images { + kernel-1 { + description = "Linux kernel"; + data = /incbin/("zImage"); + type = "kernel"; + arch = "arm"; + os = "linux"; + compression = "none"; + load = <0x80001000>; + entry = <0x80001000>; + hash-1 { + algo = "sha256"; + }; + }; + fdt-1 { + description = "Flattened Device Tree blob"; + data = /incbin/("%BOARD_DTB%"); + type = "flat_dt"; + arch = "arm"; + compression = "none"; + hash-1 { + algo = "sha256"; + }; + }; + ramdisk-1 { + description = "ramdisk"; + data = /incbin/("rootfs.cpio.xz"); + type = "ramdisk"; + arch = "arm"; + os = "linux"; + compression = "none"; + hash-1 { + algo = "sha256"; + }; + }; + }; + + configurations { + default = "conf-1"; + conf-1 { + description = "Boot Linux kernel with FDT blob, ramdisk"; + kernel = "kernel-1"; + fdt = "fdt-1"; + ramdisk = "ramdisk-1"; + hash-1 { + algo = "sha256"; + }; + }; + }; +}; diff --git a/board/aspeed/common/post-image.sh b/board/aspeed/common/post-image.sh new file mode 100755 index 00000000..ea65a49a --- /dev/null +++ b/board/aspeed/common/post-image.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +BOARD_DIR="$(dirname $0)" +mkimage=$HOST_DIR/bin/mkimage + +BOARD_DT=$(sed -n \ + 's/^BR2_LINUX_KERNEL_INTREE_DTS_NAME="\([a-z0-9\-]*\).*"$/\1/p' \ + ${BR2_CONFIG}) + +sed -e "s/%BOARD_DTB%/${BOARD_DT}.dtb/" \ + $BOARD_DIR/image.its.template > $BINARIES_DIR/image.its + +(cd $BINARIES_DIR && $mkimage -f image.its image.itb) + +GENIMAGE_CFG="board/aspeed/${BOARD_DT#aspeed-*}/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}" + +rm -f $BINARIES_DIR/image.its diff --git a/board/asus/tinker-s/extlinux.conf b/board/asus/tinker-s/extlinux.conf new file mode 100644 index 00000000..61ebe50c --- /dev/null +++ b/board/asus/tinker-s/extlinux.conf @@ -0,0 +1,4 @@ +label Tinker linux + kernel /boot/zImage + devicetree /boot/rk3288-tinker-s.dtb + append console=ttyS2,115200n8 root=179:1 rootwait diff --git a/board/asus/tinker-s/post-build.sh b/board/asus/tinker-s/post-build.sh new file mode 100755 index 00000000..f9388766 --- /dev/null +++ b/board/asus/tinker-s/post-build.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +MKIMAGE=$HOST_DIR/bin/mkimage +BOARD_DIR="$(dirname "$0")" + +$MKIMAGE -n rk3288 -T rksd -d "$BINARIES_DIR"/u-boot-tpl.bin "$BINARIES_DIR"/u-boot-tpl.img +cat "$BINARIES_DIR"/u-boot-tpl.img "$BINARIES_DIR"/u-boot-spl-dtb.bin > "$BINARIES_DIR"/u-boot-tpl-spl-dtb.img + +install -m 0644 -D "$BOARD_DIR"/extlinux.conf "$TARGET_DIR"/boot/extlinux/extlinux.conf diff --git a/board/asus/tinker-s/readme.txt b/board/asus/tinker-s/readme.txt new file mode 100644 index 00000000..3dffa12b --- /dev/null +++ b/board/asus/tinker-s/readme.txt @@ -0,0 +1,43 @@ +Tinker S RK3288 +============= + +Tinker Board is a Single Board Computer (SBC) in an ultra-small form +factor that offers class-leading performance while leveraging outstanding +mechanical compatibility. The "S" variant of the Tinker Board has eMMC + +Tinker link: +https://www.asus.com/br/motherboards-components/single-board-computer/all-series/tinker-board-s/ + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Tinker+RK3288 + +How to build it +=============== + + $ make asus_tinker-s_rk3288_defconfig + +Then you can edit the build options using + + $ make menuconfig + +Compile all and build rootfs image: + + $ make + +Prepare your SDCard +=================== + +Buildroot generates a ready-to-use SD card image that you can flash directly to +the card. The image will be in output/images/sdcard.img. +You can write this image directly to an SD card device (i.e. /dev/xxx): + + $ sudo dd if=output/images/sdcard.img of=/dev/xxx + $ sudo sync + +Finally, you can insert the SD card to the Tinker RK3288 board and boot it. + +NOTE: +USB power supply requires more than the standard 500mA USB current, so +this board must be supplied from a capable port or from an external +AC/DC adapter. Otherwise it will hang forever while loading the kernel +image. diff --git a/board/asus/tinker/extlinux.conf b/board/asus/tinker/extlinux.conf new file mode 100644 index 00000000..be21e246 --- /dev/null +++ b/board/asus/tinker/extlinux.conf @@ -0,0 +1,4 @@ +label Tinker linux + kernel /boot/zImage + devicetree /boot/rk3288-tinker.dtb + append console=ttyS2,115200n8 root=/dev/mmcblk0p1 rootwait diff --git a/board/asus/tinker/genimage.cfg b/board/asus/tinker/genimage.cfg new file mode 100644 index 00000000..fa7fd734 --- /dev/null +++ b/board/asus/tinker/genimage.cfg @@ -0,0 +1,22 @@ +image sdcard.img { + hdimage { + } + + partition u-boot-tpl-spl-dtb { + in-partition-table = "no" + image = "u-boot-tpl-spl-dtb.img" + offset = 32K + } + + partition u-boot-dtb { + in-partition-table = "no" + image = "u-boot-dtb.img" + offset = 8M + size = 30M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/asus/tinker/post-build.sh b/board/asus/tinker/post-build.sh new file mode 100755 index 00000000..ffbbcdeb --- /dev/null +++ b/board/asus/tinker/post-build.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +MKIMAGE=$HOST_DIR/bin/mkimage +BOARD_DIR="$(dirname $0)" + +$MKIMAGE -n rk3288 -T rksd -d $BINARIES_DIR/u-boot-tpl.bin $BINARIES_DIR/u-boot-tpl.img +cat $BINARIES_DIR/u-boot-tpl.img $BINARIES_DIR/u-boot-spl-dtb.bin > $BINARIES_DIR/u-boot-tpl-spl-dtb.img + +install -m 0644 -D $BOARD_DIR/extlinux.conf $TARGET_DIR/boot/extlinux/extlinux.conf diff --git a/board/asus/tinker/readme.txt b/board/asus/tinker/readme.txt new file mode 100644 index 00000000..110e2168 --- /dev/null +++ b/board/asus/tinker/readme.txt @@ -0,0 +1,43 @@ +Tinker RK3288 +============= + +Tinker Board is a Single Board Computer (SBC) in an ultra-small form +factor that offers class-leading performance while leveraging outstanding +mechanical compatibility. + +Tinker link: +https://www.asus.com/in/Single-Board-Computer/Tinker-Board/ + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Tinker+RK3288 + +How to build it +=============== + + $ make asus_tinker_rk3288_defconfig + +Then you can edit the build options using + + $ make menuconfig + +Compile all and build rootfs image: + + $ make + +Prepare your SDCard +=================== + +Buildroot generates a ready-to-use SD card image that you can flash directly to +the card. The image will be in output/images/sdcard.img. +You can write this image directly to an SD card device (i.e. /dev/xxx): + + $ sudo dd if=output/images/sdcard.img of=/dev/xxx + $ sudo sync + +Finally, you can insert the SD card to the Tinker RK3288 board and boot it. + +NOTE: +USB power supply requires more than the standard 500mA USB current, so +this board must be supplied from a capable port or from an external +AC/DC adapter. Otherwise it will hang forever while loading the kernel +image. diff --git a/board/atmel/at91sam9x5ek/patches/at91bootstrap3/at91bootstrap3.hash b/board/atmel/at91sam9x5ek/patches/at91bootstrap3/at91bootstrap3.hash new file mode 100644 index 00000000..6edf3d33 --- /dev/null +++ b/board/atmel/at91sam9x5ek/patches/at91bootstrap3/at91bootstrap3.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 5ea2a8fed1ba0024229c6f6d77176679e1b24791bdbce8e285634013d4a93551 at91bootstrap3-v3.10.3-git4.tar.gz diff --git a/board/atmel/at91sam9x5ek/patches/linux-headers/linux-headers.hash b/board/atmel/at91sam9x5ek/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/atmel/at91sam9x5ek/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/atmel/at91sam9x5ek/patches/linux/0001-ARM-8933-1-replace-Sun-Solaris-style-flag-on-section.patch b/board/atmel/at91sam9x5ek/patches/linux/0001-ARM-8933-1-replace-Sun-Solaris-style-flag-on-section.patch new file mode 100644 index 00000000..81c4ce2f --- /dev/null +++ b/board/atmel/at91sam9x5ek/patches/linux/0001-ARM-8933-1-replace-Sun-Solaris-style-flag-on-section.patch @@ -0,0 +1,435 @@ +From 762d2dcd9e233e3025f8627ea65f23e568045edb Mon Sep 17 00:00:00 2001 +From: Nick Desaulniers +Date: Mon, 4 Nov 2019 19:31:45 +0100 +Subject: [PATCH] ARM: 8933/1: replace Sun/Solaris style flag on section + directive + +[ Upstream commit 790756c7e0229dedc83bf058ac69633045b1000e ] + +It looks like a section directive was using "Solaris style" to declare +the section flags. Replace this with the GNU style so that Clang's +integrated assembler can assemble this directive. + +The modified instances were identified via: +$ ag \.section | grep # + +Link: https://ftp.gnu.org/old-gnu/Manuals/gas-2.9.1/html_chapter/as_7.html#SEC119 +Link: https://github.com/ClangBuiltLinux/linux/issues/744 +Link: https://bugs.llvm.org/show_bug.cgi?id=43759 +Link: https://reviews.llvm.org/D69296 + +Acked-by: Nicolas Pitre +Reviewed-by: Ard Biesheuvel +Reviewed-by: Stefan Agner +Signed-off-by: Nick Desaulniers +Suggested-by: Fangrui Song +Suggested-by: Jian Cai +Suggested-by: Peter Smith +Signed-off-by: Russell King +Signed-off-by: Sasha Levin +Upstream: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=762d2dcd9e233e3025f8627ea65f23e568045edb +--- + arch/arm/boot/bootp/init.S | 2 +- + arch/arm/boot/compressed/big-endian.S | 2 +- + arch/arm/boot/compressed/head.S | 2 +- + arch/arm/boot/compressed/piggy.S | 2 +- + arch/arm/mm/proc-arm1020.S | 2 +- + arch/arm/mm/proc-arm1020e.S | 2 +- + arch/arm/mm/proc-arm1022.S | 2 +- + arch/arm/mm/proc-arm1026.S | 2 +- + arch/arm/mm/proc-arm720.S | 2 +- + arch/arm/mm/proc-arm740.S | 2 +- + arch/arm/mm/proc-arm7tdmi.S | 2 +- + arch/arm/mm/proc-arm920.S | 2 +- + arch/arm/mm/proc-arm922.S | 2 +- + arch/arm/mm/proc-arm925.S | 2 +- + arch/arm/mm/proc-arm926.S | 2 +- + arch/arm/mm/proc-arm940.S | 2 +- + arch/arm/mm/proc-arm946.S | 2 +- + arch/arm/mm/proc-arm9tdmi.S | 2 +- + arch/arm/mm/proc-fa526.S | 2 +- + arch/arm/mm/proc-feroceon.S | 2 +- + arch/arm/mm/proc-mohawk.S | 2 +- + arch/arm/mm/proc-sa110.S | 2 +- + arch/arm/mm/proc-sa1100.S | 2 +- + arch/arm/mm/proc-v6.S | 2 +- + arch/arm/mm/proc-v7.S | 2 +- + arch/arm/mm/proc-v7m.S | 4 ++-- + arch/arm/mm/proc-xsc3.S | 2 +- + arch/arm/mm/proc-xscale.S | 2 +- + 28 files changed, 29 insertions(+), 29 deletions(-) + +diff --git a/arch/arm/boot/bootp/init.S b/arch/arm/boot/bootp/init.S +index 78b508075161..868eeeaaa46e 100644 +--- a/arch/arm/boot/bootp/init.S ++++ b/arch/arm/boot/bootp/init.S +@@ -16,7 +16,7 @@ + * size immediately following the kernel, we could build this into + * a binary blob, and concatenate the zImage using the cat command. + */ +- .section .start,#alloc,#execinstr ++ .section .start, "ax" + .type _start, #function + .globl _start + +diff --git a/arch/arm/boot/compressed/big-endian.S b/arch/arm/boot/compressed/big-endian.S +index 88e2a88d324b..0e092c36da2f 100644 +--- a/arch/arm/boot/compressed/big-endian.S ++++ b/arch/arm/boot/compressed/big-endian.S +@@ -6,7 +6,7 @@ + * Author: Nicolas Pitre + */ + +- .section ".start", #alloc, #execinstr ++ .section ".start", "ax" + + mrc p15, 0, r0, c1, c0, 0 @ read control reg + orr r0, r0, #(1 << 7) @ enable big endian mode +diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S +index 69e661f574a0..e4d1b3d0b7d9 100644 +--- a/arch/arm/boot/compressed/head.S ++++ b/arch/arm/boot/compressed/head.S +@@ -114,7 +114,7 @@ + #endif + .endm + +- .section ".start", #alloc, #execinstr ++ .section ".start", "ax" + /* + * sort out different calling conventions + */ +diff --git a/arch/arm/boot/compressed/piggy.S b/arch/arm/boot/compressed/piggy.S +index 0284f84dcf38..27577644ee72 100644 +--- a/arch/arm/boot/compressed/piggy.S ++++ b/arch/arm/boot/compressed/piggy.S +@@ -1,5 +1,5 @@ + /* SPDX-License-Identifier: GPL-2.0 */ +- .section .piggydata,#alloc ++ .section .piggydata, "a" + .globl input_data + input_data: + .incbin "arch/arm/boot/compressed/piggy_data" +diff --git a/arch/arm/mm/proc-arm1020.S b/arch/arm/mm/proc-arm1020.S +index 774ef1323554..4773490177c9 100644 +--- a/arch/arm/mm/proc-arm1020.S ++++ b/arch/arm/mm/proc-arm1020.S +@@ -505,7 +505,7 @@ cpu_arm1020_name: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .type __arm1020_proc_info,#object + __arm1020_proc_info: +diff --git a/arch/arm/mm/proc-arm1020e.S b/arch/arm/mm/proc-arm1020e.S +index ae3c27b71594..928e8ca58f40 100644 +--- a/arch/arm/mm/proc-arm1020e.S ++++ b/arch/arm/mm/proc-arm1020e.S +@@ -463,7 +463,7 @@ arm1020e_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .type __arm1020e_proc_info,#object + __arm1020e_proc_info: +diff --git a/arch/arm/mm/proc-arm1022.S b/arch/arm/mm/proc-arm1022.S +index dbb2413fe04d..385584c3d222 100644 +--- a/arch/arm/mm/proc-arm1022.S ++++ b/arch/arm/mm/proc-arm1022.S +@@ -448,7 +448,7 @@ arm1022_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .type __arm1022_proc_info,#object + __arm1022_proc_info: +diff --git a/arch/arm/mm/proc-arm1026.S b/arch/arm/mm/proc-arm1026.S +index 0b37b2cef9d3..29cc81857373 100644 +--- a/arch/arm/mm/proc-arm1026.S ++++ b/arch/arm/mm/proc-arm1026.S +@@ -442,7 +442,7 @@ arm1026_crval: + string cpu_arm1026_name, "ARM1026EJ-S" + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .type __arm1026_proc_info,#object + __arm1026_proc_info: +diff --git a/arch/arm/mm/proc-arm720.S b/arch/arm/mm/proc-arm720.S +index 3651cd70e418..c08cd1b0a1d0 100644 +--- a/arch/arm/mm/proc-arm720.S ++++ b/arch/arm/mm/proc-arm720.S +@@ -186,7 +186,7 @@ arm720_crval: + * See for a definition of this structure. + */ + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .macro arm720_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cpu_flush:req + .type __\name\()_proc_info,#object +diff --git a/arch/arm/mm/proc-arm740.S b/arch/arm/mm/proc-arm740.S +index 024fb7732407..6eed87103b95 100644 +--- a/arch/arm/mm/proc-arm740.S ++++ b/arch/arm/mm/proc-arm740.S +@@ -132,7 +132,7 @@ __arm740_setup: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + .type __arm740_proc_info,#object + __arm740_proc_info: + .long 0x41807400 +diff --git a/arch/arm/mm/proc-arm7tdmi.S b/arch/arm/mm/proc-arm7tdmi.S +index 25472d94426d..beb64a7ccb38 100644 +--- a/arch/arm/mm/proc-arm7tdmi.S ++++ b/arch/arm/mm/proc-arm7tdmi.S +@@ -76,7 +76,7 @@ __arm7tdmi_setup: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .macro arm7tdmi_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, \ + extra_hwcaps=0 +diff --git a/arch/arm/mm/proc-arm920.S b/arch/arm/mm/proc-arm920.S +index 7a14bd4414c9..5d4319708362 100644 +--- a/arch/arm/mm/proc-arm920.S ++++ b/arch/arm/mm/proc-arm920.S +@@ -448,7 +448,7 @@ arm920_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .type __arm920_proc_info,#object + __arm920_proc_info: +diff --git a/arch/arm/mm/proc-arm922.S b/arch/arm/mm/proc-arm922.S +index edccfcdcd551..7e22ca780b36 100644 +--- a/arch/arm/mm/proc-arm922.S ++++ b/arch/arm/mm/proc-arm922.S +@@ -426,7 +426,7 @@ arm922_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .type __arm922_proc_info,#object + __arm922_proc_info: +diff --git a/arch/arm/mm/proc-arm925.S b/arch/arm/mm/proc-arm925.S +index 32a47cc19076..d343e77b8456 100644 +--- a/arch/arm/mm/proc-arm925.S ++++ b/arch/arm/mm/proc-arm925.S +@@ -491,7 +491,7 @@ arm925_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .macro arm925_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache + .type __\name\()_proc_info,#object +diff --git a/arch/arm/mm/proc-arm926.S b/arch/arm/mm/proc-arm926.S +index fb827c633693..8cf78c608c42 100644 +--- a/arch/arm/mm/proc-arm926.S ++++ b/arch/arm/mm/proc-arm926.S +@@ -474,7 +474,7 @@ arm926_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .type __arm926_proc_info,#object + __arm926_proc_info: +diff --git a/arch/arm/mm/proc-arm940.S b/arch/arm/mm/proc-arm940.S +index ee5b66f847c4..631ae64eeccd 100644 +--- a/arch/arm/mm/proc-arm940.S ++++ b/arch/arm/mm/proc-arm940.S +@@ -344,7 +344,7 @@ __arm940_setup: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .type __arm940_proc_info,#object + __arm940_proc_info: +diff --git a/arch/arm/mm/proc-arm946.S b/arch/arm/mm/proc-arm946.S +index 7361837edc31..033ad7402d67 100644 +--- a/arch/arm/mm/proc-arm946.S ++++ b/arch/arm/mm/proc-arm946.S +@@ -399,7 +399,7 @@ __arm946_setup: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + .type __arm946_proc_info,#object + __arm946_proc_info: + .long 0x41009460 +diff --git a/arch/arm/mm/proc-arm9tdmi.S b/arch/arm/mm/proc-arm9tdmi.S +index 7fac8c612134..2195468ccd76 100644 +--- a/arch/arm/mm/proc-arm9tdmi.S ++++ b/arch/arm/mm/proc-arm9tdmi.S +@@ -70,7 +70,7 @@ __arm9tdmi_setup: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .macro arm9tdmi_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req + .type __\name\()_proc_info, #object +diff --git a/arch/arm/mm/proc-fa526.S b/arch/arm/mm/proc-fa526.S +index 4001b73af4ee..fd3e5dd94e59 100644 +--- a/arch/arm/mm/proc-fa526.S ++++ b/arch/arm/mm/proc-fa526.S +@@ -190,7 +190,7 @@ fa526_cr1_set: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .type __fa526_proc_info,#object + __fa526_proc_info: +diff --git a/arch/arm/mm/proc-feroceon.S b/arch/arm/mm/proc-feroceon.S +index 92e08bf37aad..685d324a74d3 100644 +--- a/arch/arm/mm/proc-feroceon.S ++++ b/arch/arm/mm/proc-feroceon.S +@@ -584,7 +584,7 @@ feroceon_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .macro feroceon_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache:req + .type __\name\()_proc_info,#object +diff --git a/arch/arm/mm/proc-mohawk.S b/arch/arm/mm/proc-mohawk.S +index 6f07d2ef4ff2..9182321a586a 100644 +--- a/arch/arm/mm/proc-mohawk.S ++++ b/arch/arm/mm/proc-mohawk.S +@@ -429,7 +429,7 @@ mohawk_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .type __88sv331x_proc_info,#object + __88sv331x_proc_info: +diff --git a/arch/arm/mm/proc-sa110.S b/arch/arm/mm/proc-sa110.S +index ee2ce496239f..093ad2ceff28 100644 +--- a/arch/arm/mm/proc-sa110.S ++++ b/arch/arm/mm/proc-sa110.S +@@ -199,7 +199,7 @@ sa110_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .type __sa110_proc_info,#object + __sa110_proc_info: +diff --git a/arch/arm/mm/proc-sa1100.S b/arch/arm/mm/proc-sa1100.S +index 222d5836f666..12b8fcab4b59 100644 +--- a/arch/arm/mm/proc-sa1100.S ++++ b/arch/arm/mm/proc-sa1100.S +@@ -242,7 +242,7 @@ sa1100_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .macro sa1100_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req + .type __\name\()_proc_info,#object +diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S +index 06d890a2342b..32f4df0915ef 100644 +--- a/arch/arm/mm/proc-v6.S ++++ b/arch/arm/mm/proc-v6.S +@@ -264,7 +264,7 @@ v6_crval: + string cpu_elf_name, "v6" + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + /* + * Match any ARMv6 processor core. +diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S +index 339eb17c9808..e351d682c2e3 100644 +--- a/arch/arm/mm/proc-v7.S ++++ b/arch/arm/mm/proc-v7.S +@@ -637,7 +637,7 @@ __v7_setup_stack: + string cpu_elf_name, "v7" + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + /* + * Standard v7 proc info content +diff --git a/arch/arm/mm/proc-v7m.S b/arch/arm/mm/proc-v7m.S +index 9c2978c128d9..0be14b64879c 100644 +--- a/arch/arm/mm/proc-v7m.S ++++ b/arch/arm/mm/proc-v7m.S +@@ -96,7 +96,7 @@ ENTRY(cpu_cm7_proc_fin) + ret lr + ENDPROC(cpu_cm7_proc_fin) + +- .section ".init.text", #alloc, #execinstr ++ .section ".init.text", "ax" + + __v7m_cm7_setup: + mov r8, #(V7M_SCB_CCR_DC | V7M_SCB_CCR_IC| V7M_SCB_CCR_BP) +@@ -180,7 +180,7 @@ ENDPROC(__v7m_setup) + string cpu_elf_name "v7m" + string cpu_v7m_name "ARMv7-M" + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .macro __v7m_proc name, initfunc, cache_fns = nop_cache_fns, hwcaps = 0, proc_fns = v7m_processor_functions + .long 0 /* proc_info_list.__cpu_mm_mmu_flags */ +diff --git a/arch/arm/mm/proc-xsc3.S b/arch/arm/mm/proc-xsc3.S +index 293dcc2c441f..da96e4de1353 100644 +--- a/arch/arm/mm/proc-xsc3.S ++++ b/arch/arm/mm/proc-xsc3.S +@@ -499,7 +499,7 @@ xsc3_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .macro xsc3_proc_info name:req, cpu_val:req, cpu_mask:req + .type __\name\()_proc_info,#object +diff --git a/arch/arm/mm/proc-xscale.S b/arch/arm/mm/proc-xscale.S +index 3d75b7972fd1..c7800c69921b 100644 +--- a/arch/arm/mm/proc-xscale.S ++++ b/arch/arm/mm/proc-xscale.S +@@ -613,7 +613,7 @@ xscale_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .macro xscale_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache + .type __\name\()_proc_info,#object +-- +2.43.0 + diff --git a/board/atmel/at91sam9x5ek/patches/linux/linux.hash b/board/atmel/at91sam9x5ek/patches/linux/linux.hash new file mode 100644 index 00000000..ef899fbb --- /dev/null +++ b/board/atmel/at91sam9x5ek/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 6cc67b3d2d550c3f0b201d7850bdb25503bc6a51e41b98d2c0fbd531b56f3a20 linux-linux4sam_6.1.tar.gz diff --git a/board/atmel/at91sam9x5ek/patches/uboot/uboot.hash b/board/atmel/at91sam9x5ek/patches/uboot/uboot.hash new file mode 100644 index 00000000..723ce137 --- /dev/null +++ b/board/atmel/at91sam9x5ek/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c7c08f44487c97ade41966ed6cd639258d124e781580ea0a82d96b6b5ca230a5 uboot-linux4sam_6.1-git4.tar.gz diff --git a/board/atmel/at91sam9x5ek_mmc/genimage.cfg b/board/atmel/at91sam9x5ek_mmc/genimage.cfg new file mode 100644 index 00000000..d99ebd26 --- /dev/null +++ b/board/atmel/at91sam9x5ek_mmc/genimage.cfg @@ -0,0 +1,40 @@ +# Image for SD card boot on Atmel at91sam9x5ek boards +# +image boot.vfat { + vfat { + files = { + "zImage", + "at91sam9g15ek.dtb", + "at91sam9g25ek.dtb", + "at91sam9g35ek.dtb", + "at91sam9x25ek.dtb", + "at91sam9x35ek.dtb", + "boot.bin", + "u-boot.bin" + } + + file uboot.env { + image = "uboot-env.bin" + } + } + + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 1M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/atmel/at91sam9x5ek_mmc/uboot-env.txt b/board/atmel/at91sam9x5ek_mmc/uboot-env.txt new file mode 100644 index 00000000..568e4bc9 --- /dev/null +++ b/board/atmel/at91sam9x5ek_mmc/uboot-env.txt @@ -0,0 +1,7 @@ +bootargs=console=ttyS0,115200 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait video=Unknown-1:800x480-16 +bootcmd=fatload mmc 0:1 0x21000000 at91sam9g35ek.dtb; fatload mmc 0:1 0x22000000 zImage; bootz 0x22000000 - 0x21000000 +bootdelay=1 +ethact=gmac0 +stderr=serial +stdin=serial +stdout=serial diff --git a/board/atmel/flasher.sh b/board/atmel/flasher.sh new file mode 100755 index 00000000..a7409ce8 --- /dev/null +++ b/board/atmel/flasher.sh @@ -0,0 +1,145 @@ +#!/usr/bin/env bash + +BUILDIR=$1 +TTY=$2 +BOARD=$3 + +family_at91sam9260ek="at91sam9260ek" +mach_at91sam9260ek="at91sam9260-ek" +dtb_at91sam9260ek="at91sam9260ek.dtb" + +family_at91sam9g45m10ek="at91sam9m10g45ek" +mach_at91sam9g45m10ek="at91sam9m10-g45-ek" +dtb_at91sam9g45m10ek="at91sam9m10g45ek.dtb" + +family_at91sam9rlek="at91sam9rlek" +mach_at91sam9rlek="at91sam9rl64-ek" +dtb_at91sam9rlek="at91sam9rlek.dtb" + +family_at91sam9g15ek="at91sam9x5ek" +mach_at91sam9g15ek="at91sam9g15-ek" +dtb_at91sam9g15ek="at91sam9g15ek.dtb" + +family_at91sam9g20ek="at91sam9g20ek" +mach_at91sam9g20ek="at91sam9g20-ek" +dtb_at91sam9g20ek="at91sam9g20ek.dtb" + +family_at91sam9g25ek="at91sam9x5ek" +mach_at91sam9g25ek="at91sam9g25-ek" +dtb_at91sam9g25ek="at91sam9g25ek.dtb" + +family_at91sam9g35ek="at91sam9x5ek" +mach_at91sam9g35ek="at91sam9g35-ek" +dtb_at91sam9g35ek="at91sam9g35ek.dtb" + +family_at91sam9x25ek="at91sam9x5ek" +mach_at91sam9x25ek="at91sam9x25-ek" +dtb_at91sam9x25ek="at91sam9x25ek.dtb" + +family_at91sam9x35ek="at91sam9x5ek" +mach_at91sam9x35ek="at91sam9x35-ek" +dtb_at91sam9x35ek="at91sam9x35ek.dtb" + +family_sama5d31ek="sama5d3xek" +mach_sama5d31ek="at91sama5d3x-ek" +dtb_sama5d31ek="sama5d31ek.dtb" + +family_sama5d31ek_revc="sama5d3xek" +mach_sama5d31ek_revc="at91sama5d3x-ek" +dtb_sama5d31ek_revc="sama5d31ek_revc.dtb" + +family_sama5d33ek="sama5d3xek" +mach_sama5d33ek="at91sama5d3x-ek" +dtb_sama5d33ek="sama5d33ek.dtb" + +family_sama5d33ek_revc="sama5d3xek" +mach_sama5d33ek_revc="at91sama5d3x-ek" +dtb_sama5d33ek_revc="sama5d33ek_revc.dtb" + +family_sama5d34ek="sama5d3xek" +mach_sama5d34ek="at91sama5d3x-ek" +dtb_sama5d34ek="sama5d34ek.dtb" + +family_sama5d34ek_revc="sama5d3xek" +mach_sama5d34ek_revc="at91sama5d3x-ek" +dtb_sama5d34ek_revc="sama5d34ek_revc.dtb" + +family_sama5d35ek="sama5d3xek" +mach_sama5d35ek="at91sama5d3x-ek" +dtb_sama5d35ek="sama5d35ek.dtb" + +family_sama5d35ek_revc="sama5d3xek" +mach_sama5d35ek_revc="at91sama5d3x-ek" +dtb_sama5d35ek_revc="sama5d35ek_revc.dtb" + +family_sama5d36ek="sama5d3xek" +mach_sama5d36ek="at91sama5d3x-ek" +dtb_sama5d36ek="sama5d36ek.dtb" + +family_sama5d36ek_revc="sama5d3xek" +mach_sama5d36ek_revc="at91sama5d3x-ek" +dtb_sama5d36ek_revc="sama5d36ek_revc.dtb" + +family_sama5d3_xplained="sama5d3_xplained" +mach_sama5d3_xplained="at91sama5d3x-xplained" +dtb_sama5d3_xplained="at91-sama5d3_xplained.dtb" + +family_sama5d4ek="sama5d4ek" +mach_sama5d4ek="at91sama5d4x-ek" +dtb_sama5d4ek="at91-sama5d4ek.dtb" + +family_sama5d4_xplained="sama5d4_xplained" +mach_sama5d4_xplained="at91sama5d4x-ek" +dtb_sama5d4_xplained="at91-sama5d4_xplained.dtb" + +usage() { + cat << EOF +Usage: + $0 + +Available boards: + at91sam9260ek + at91sam9g45m10ek + at91sam9rlek + at91sam9g15ek + at91sam9g20ek + at91sam9g25ek + at91sam9x25ek + at91sam9g35ek + at91sam9x35ek + sama5d31ek + sama5d33ek + sama5d34ek + sama5d35ek + sama5d36ek + sama5d31ek_revc (Until rev. C) + sama5d33ek_revc (Until rev. C) + sama5d34ek_revc (Until rev. C) + sama5d35ek_revc (Until rev. C) + sama5d36ek_revc (Until rev. C) + sama5d3_xplained + sama5d4ek + sama5d4_xplained + +Example: + $0 ./output /dev/ttyACM0 at91sam9g45m10ek +EOF +} + +F="family_$BOARD" +M="mach_$BOARD" +D="dtb_$BOARD" + +if [[ $# != 3 || -z ${!F} ]]; then + usage + exit 1 +fi + +video_mode="video=LVDS-1:800x480-16" +if [[ $BOARD == "*pda4" ]]; then + video_mode="video=LVDS-1:480x272-16" +fi + +echo "Executing: ${!F} O=$1/images $1/host/bin/sam-ba $TTY ${!M} $(dirname $0)/nandflash.tcl -- ${!F} ${!D} $video_mode" +export O=$1/images +$1/host/bin/sam-ba $TTY ${!M} $(dirname $0)/nandflash.tcl -- ${!F} ${!D} $video_mode diff --git a/board/atmel/nandflash.tcl b/board/atmel/nandflash.tcl new file mode 100644 index 00000000..3955b345 --- /dev/null +++ b/board/atmel/nandflash.tcl @@ -0,0 +1,358 @@ +# ---------------------------------------------------------------------------- +# ATMEL Microcontroller +# ---------------------------------------------------------------------------- +# Copyright (c) 2015, Atmel Corporation +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# - Redistributions of source code must retain the above copyright notice, +# this list of conditions and the disclaimer below. +# +# Atmel's name may not be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE +# DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, +# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# ---------------------------------------------------------------------------- + +################################################################################ +# Script data +################################################################################ +# DBGU address for rm9200, 9260/9g20, 9261/9g10, 9rl, 9x5 +set at91_base_dbgu0 0xfffff200 +# DBGU address for 9263, 9g45, sama5d3 +set at91_base_dbgu1 0xffffee00 +# DBGU address for sama5d4 +set at91_base_dbgu2 0xfc069000 + +set arch_exid_offset 0x44 + +# arch id +set arch_id_at91sam9g20 0x019905a0 +set arch_id_at91sam9g45 0x819b05a0 +set arch_id_at91sam9x5 0x819a05a0 +set arch_id_at91sam9n12 0x819a07a0 +set arch_id_sama5d3 0x8a5c07c0 + +## Find out at91sam9x5 variant to load the corresponding dtb file +array set at91sam9x5_variant { + 0x00000000 at91sam9g15 + 0x00000001 at91sam9g35 + 0x00000002 at91sam9x35 + 0x00000003 at91sam9g25 + 0x00000004 at91sam9x25 +} + +## Find out sama5d3 variant to load the corresponding dtb file +array set sama5d3_variant { + 0x00444300 sama5d31 + 0x00414300 sama5d33 + 0x00414301 sama5d34 + 0x00584300 sama5d35 + 0x00004301 sama5d36 +} + +## Find out sama5d4 variant +array set sama5d4_variant { + 0x00000001 sama5d41 + 0x00000002 sama5d42 + 0x00000003 sama5d43 + 0x00000004 sama5d44 +} + +################################################################################ +# proc uboot_env: Convert u-boot variables in a string ready to be flashed +# in the region reserved for environment variables +################################################################################ +proc set_uboot_env {nameOfLstOfVar} { + upvar $nameOfLstOfVar lstOfVar + + # sector size is the size defined in u-boot CFG_ENV_SIZE + set sectorSize [expr 0x20000 - 5] + + set strEnv [join $lstOfVar "\0"] + while {[string length $strEnv] < $sectorSize} { + append strEnv "\0" + } + # \0 between crc and strEnv is the flag value for redundant environment + set strCrc [binary format i [::vfs::crc $strEnv]] + return "$strCrc\0$strEnv" +} + +################################################################################ +proc find_variant_name {boardType} { + global at91_base_dbgu0 + global at91_base_dbgu1 + global at91_base_dbgu2 + global arch_exid_offset + global at91sam9x5_variant + global sama5d3_variant + global sama5d4_variant + set socName "none" + + switch $boardType { + at91sam9x5ek { + set exidAddr [expr {$at91_base_dbgu0 + $arch_exid_offset}] + set chip_variant [format "0x%08x" [read_int $exidAddr]] + + foreach {key value} [array get at91sam9x5_variant] { + if {$key == $chip_variant} { + set socName "$value" + break; + } + } + } + sama5d3xek { + set exidAddr [expr {$at91_base_dbgu1 + $arch_exid_offset}] + set chip_variant [format "0x%08x" [read_int $exidAddr]] + + foreach {key value} [array get sama5d3_variant] { + #puts "-I- === $chip_variant ? $key ($value) ===" + if {$key == $chip_variant} { + set socName "$value" + break; + } + } + } + sama5d3_xplained { + set exidAddr [expr {$at91_base_dbgu1 + $arch_exid_offset}] + set chip_variant [format "0x%08x" [read_int $exidAddr]] + + foreach {key value} [array get sama5d3_variant] { + #puts "-I- === $chip_variant ? $key ($value) ===" + if {$key == $chip_variant} { + set socName "$value" + break; + } + } + } + sama5d4ek { + set exidAddr [expr {$at91_base_dbgu2 + $arch_exid_offset}] + set chip_variant [format "0x%08x" [read_int $exidAddr]] + + foreach {key value} [array get sama5d4_variant] { + #puts "-I- === $chip_variant ? $key ($value) ===" + if {$key == $chip_variant} { + set socName "$value" + break; + } + } + } + sama5d4_xplained { + set exidAddr [expr {$at91_base_dbgu2 + $arch_exid_offset}] + set chip_variant [format "0x%08x" [read_int $exidAddr]] + + foreach {key value} [array get sama5d4_variant] { + #puts "-I- === $chip_variant ? $key ($value) ===" + if {$key == $chip_variant} { + set socName "$value" + break; + } + } + } + } + + return "$socName" +} + +proc find_variant_ecc {boardType} { + set eccType "none" + + switch $boardType { + at91sam9x5ek { + set eccType 0xc0c00405 + } + at91sam9n12ek { + set eccType 0xc0c00405 + } + sama5d3xek { + set eccType 0xc0902405 + } + sama5d3_xplained { + set eccType 0xc0902405 + } + sama5d4ek { + set eccType 0xc1e04e07 + } + sama5d4_xplained { + set eccType 0xc1e04e07 + } + } + + puts "-I- === eccType is $eccType ===" + return $eccType +} + +proc get_kernel_load_addr {boardType} { + set kernel_load_addr 0x22000000 + + switch $boardType { + at91sam9m10g45ek { + set kernel_load_addr 0x72000000 + } + } + + return $kernel_load_addr +} + +proc get_dtb_load_addr {boardType} { + set dtb_load_addr 0x21000000 + + switch $boardType { + at91sam9m10g45ek { + set dtb_load_addr 0x71000000 + } + } + + return $dtb_load_addr +} + +################################################################################ +# Main script: Load the linux demo in NandFlash, +# Update the environment variables +################################################################################ + +################################################################################ + +# check for proper variable initialization +if {! [info exists boardFamily]} { + puts "-I- === Parsing script arguments ===" + if {! [info exists env(O)]} { + puts "-E- === Binaries path not defined ===" + exit + } + + set bootstrapFile "$env(O)/at91bootstrap.bin" + set ubootFile "$env(O)/u-boot.bin" + set kernelFile "$env(O)/zImage" + set rootfsFile "$env(O)/rootfs.ubi" + set build_uboot_env "yes" + + set i 1 + foreach arg $::argv { + puts "argument $i is $arg" + switch $i { + 4 { set boardFamily $arg } + 5 { set dtbFile "$env(O)/$arg" } + 6 { set videoMode $arg } + } + incr i + } +} + +puts "-I- === Board Family is $boardFamily ===" + +set pmeccConfig [find_variant_ecc $boardFamily] + +## Now check for the needed files +if {! [file exists $bootstrapFile]} { + puts "-E- === AT91Bootstrap file not found ===" + exit +} + +if {! [file exists $ubootFile]} { + puts "-E- === U-Boot file not found ===" + exit +} + +if {! [file exists $kernelFile]} { + puts "-E- === Linux kernel file not found ===" + exit +} + +if {! [file exists $dtbFile]} { + puts "-E- === Device Tree binary: $dtbFile file not found ===" + exit +} + +if {! [file exists $rootfsFile]} { + puts "-E- === Rootfs file not found ===" + exit +} + +## NandFlash Mapping +set bootStrapAddr 0x00000000 +set ubootAddr 0x00040000 +set ubootEnvAddr 0x000c0000 +set dtbAddr 0x00180000 +set kernelAddr 0x00200000 +set rootfsAddr 0x00800000 + +## u-boot variable +set kernelLoadAddr [get_kernel_load_addr $boardFamily] +set dtbLoadAddr [get_dtb_load_addr $boardFamily] + +## NandFlash Mapping +set kernelSize [format "0x%08X" [file size $kernelFile]] +set dtbSize [format "0x%08X" [file size $dtbFile]] +set bootCmd "bootcmd=nand read $dtbLoadAddr $dtbAddr $dtbSize; nand read $kernelLoadAddr $kernelAddr $kernelSize; bootz $kernelLoadAddr - $dtbLoadAddr" +set rootfsSize [format "0x%08X" [file size $rootfsFile]] + +lappend u_boot_variables \ + "bootdelay=1" \ + "baudrate=115200" \ + "stdin=serial" \ + "stdout=serial" \ + "stderr=serial" \ + "bootargs=console=ttyS0,115200 mtdparts=atmel_nand:256k(bootstrap)ro,512k(uboot)ro,256k(env),256k(env_redundant),256k(spare),512k(dtb),6M(kernel)ro,-(rootfs) rootfstype=ubifs ubi.mtd=7 root=ubi0:rootfs rw $videoMode" \ + "$bootCmd" + +## Additional files to load +set ubootEnvFile "ubootEnvtFileNandFlash.bin" + + +## Start flashing procedure ################################################## +puts "-I- === Initialize the NAND access ===" +NANDFLASH::Init + +if {$pmeccConfig != "none"} { + puts "-I- === Enable PMECC OS Parameters ===" + NANDFLASH::NandHeaderValue HEADER $pmeccConfig +} + +puts "-I- === Erase all the NAND flash blocs and test the erasing ===" +NANDFLASH::EraseAllNandFlash + +puts "-I- === Load AT91Bootstrap in the first sector ===" +if {$pmeccConfig != "none"} { + NANDFLASH::SendBootFilePmeccCmd $bootstrapFile +} else { + NANDFLASH::sendBootFile $bootstrapFile +} + +puts "-I- === Load u-boot in the next sectors ===" +send_file {NandFlash} "$ubootFile" $ubootAddr 0 + +if {$build_uboot_env == "yes"} { + puts "-I- === Load the u-boot environment variables ===" + set fh [open "$ubootEnvFile" w] + fconfigure $fh -translation binary + puts -nonewline $fh [set_uboot_env u_boot_variables] + close $fh + send_file {NandFlash} "$ubootEnvFile" $ubootEnvAddr 0 +} + +puts "-I- === Load the Kernel image and device tree database ===" +send_file {NandFlash} "$dtbFile" $dtbAddr 0 +send_file {NandFlash} "$kernelFile" $kernelAddr 0 + +if {$pmeccConfig != "none"} { + puts "-I- === Enable trimffs ===" + NANDFLASH::NandSetTrimffs 1 +} + +puts "-I- === Load the linux file system ===" +send_file {NandFlash} "$rootfsFile" $rootfsAddr 0 + +puts "-I- === DONE. ===" diff --git a/board/atmel/readme.txt b/board/atmel/readme.txt new file mode 100644 index 00000000..a9c427e9 --- /dev/null +++ b/board/atmel/readme.txt @@ -0,0 +1,181 @@ +This document explains how to set up a basic Buildroot system on +various Atmel/Microchip boards. Additional details can also be found +on the Linux4SAM website: http://www.linux4sam.org + +This guide covers the following configurations: + - at91sam9g45m10ek_defconfig + - at91sam9rlek_defconfig + - at91sam9x5ek_defconfig (at91sam9g15, at91sam9g25, at91sam9x25, + at91sam9g35 and at91sam9x35) + - atmel_sama5d3xek_defconfig (sama5d31, sama5d33, sama5d34, sama5d35, + sama5d36) + - atmel_sama5d3_xplained_defconfig + - atmel_sama5d3_xplained_dev_defconfig + - atmel_sama5d3_xplained_mmc_defconfig + - atmel_sama5d3_xplained_mmc_dev_defconfig + - atmel_sama5d4_xplained_defconfig + - atmel_sama5d4_xplained_dev_defconfig + - atmel_sama5d4_xplained_mmc_defconfig + - atmel_sama5d4_xplained_mmc_dev_defconfig + - atmel_sama5d2_xplained_mmc_defconfig + - atmel_sama5d2_xplained_mmc_dev_defconfig + - microchip_sama5d27_wlsom1_ek_mmc_defconfig + - microchip_sama5d27_wlsom1_ek_mmc_dev_defconfig + - microchip_sam9x60ek_mmc_defconfig + - microchip_sam9x60ek_mmc_dev_defconfig + - microchip_sama5d2_icp_mmc_defconfig + - microchip_sama5d2_icp_mmc_dev_defconfig + - microchip_sama7g5ek_mmc_defconfig + - microchip_sama7g5ek_mmc_dev_defconfig + +These configurations will use AT91Bootstrap, u-boot and a linux kernel from +the git trees maintained by Atmel. + +The configurations labeled as 'dev' provide a development rootfs with tools to +tests the features of the SoC: +- ALSA tools to test audio +- FFMPEG to record video from the ISI/ISC +- I2C, SPI, CAN, etc. tools +- modetest for LCD screens, HDMI +- Wilc1000/Wilc3000 firmware for the Atmel Wireless sdio module +- SSH for convenience +- GDB/GDB server for debug + +Configuring and building Buildroot +================================== + +For the Xplained/Evaluation Kit boards, the Buildroot configuration is +provided to boot from an SD card. Those configurations are labeled as +'mmc'. In this case, after building Buildroot, follow the instructions +in the "Preparing the SD card" section. + +For the other configurations listed above, the Buildroot configuration +assumes the system will be flashed on NAND. In this case, after +building Buildroot, follow the instructions in the "Flashing the NAND +using SAM-BA" section below. + +To configure and build Buildroot, run: + + make _defconfig + make + +Flashing the NAND using SAM-BA +============================== + +Flashing the board +------------------ + +Connect the board: + o at91sam9g45m10ek: DBGU: J10, USB sam-ba: J14 + o at91sam9rlek: DBGU: J19, USB sam-ba: J21 + o at91sam9x5ek: DBGU: J11, USB sam-ba: J20 + o sama5d3xek: DBGU: J14, USB sam-ba: J20 + o sama5d3 Xplained: DBGU: J23, USB sam-ba: J6 + o sama5d4ek: DBGU: J22 or J24, USB sam-ba: J1 + o sama5d4 Xplained: DBGU: J1, USB sam-ba: J11 + +Start the board in RomBOOT: + o at91sam9g45m10ek: + 1. open JP8, JP10 and JP12 + 2. start the board + 3. close JP8, JP10 and JP12 + + o at91sam9rlek: + 1. J11 on 1-2 (BMS=1), open J12 and J13 + 2. start the board + 3. close J12 and J13 + + o at91sam9x5ek: + 1. open JP9 and: + - Cogent: open *NCS jumper + - Embest: open SW1 + - Ronetix: open J1 and J2 + 2. start the board + 3. close JP9 and: + - Cogent: close *NCS jumper + - Embest: close SW1 (ON position) + - Ronetix: close J1 and J2 + + o sama5d3xek: + 1. start the board + 2. push BP4 and BP1 + 3. release BP1 + 4. release BP4 + + o sama5d3 Xplained: + 1. open JP5 (NANDCS) and JP6 (SPICS) + 2. start the board + 3. close JP5 ans JP6 + + o sama5d4ek: + 1. start the board + 2. push BP3 and BP4 + 3. release BP4 + 4. release BP3 + + o sama5d4 Xplained: + 1. close JP7 (BOOT_DIS) + 2. start the board + 3. open JP7 + +"RomBOOT" should appear on your console (this should be ttyUSBx or ttyACMx) + +Now locate the USB sam-ba interface it should be ttyACMx, usually ttyACM0 +dmesg on your machine should give: +usb 1-2.1.4: New USB device found, idVendor=03eb, idProduct=6124 +usb 1-2.1.4: New USB device strings: Mfr=0, Product=0, SerialNumber=0 +cdc_acm 1-2.1.4:1.0: ttyACM0: USB ACM device + +Look for idVendor=03eb, idProduct=6124, this is the interface you want to use. + +You can then flash the board using the provided flasher.sh script in board/atmel: + +board/atmel/flasher.sh + +For example, for an out of tree build made in +/tmp/atmel_sama5d3_xplained/ for the sama5d3 Xplained, you would use: +board/atmel/flasher.sh /tmp/atmel_sama5d3_xplained/ /dev/ttyACM0 sama5d3_xplained + +Reboot, the system should boot up to the buildroot login invite. + +Preparing the SD card +===================== + +An image named sdcard.img is automatically generated. With this image, +you no longer have to care about the creation of the partition and +copying files to the SD card. + +You need at least a 1GB SD card. All the data on the SD card will be +lost. To copy the image on the SD card: + +/!\ Caution be sure to do it on the right mmcblk device /!\ + +dd if=output/images/sdcard.img of=/dev/mmcblk0 + +Insert your SD card in your Xplained/Evaluation Kit board, and +enjoy. The default U-Boot environment will load properly the kernel +and Device Tree blob from the first partition of the SD card, so +everything works automatically. + +By default a 16MB FAT partition is created. It contains at91bootstrap, +u-boot, the kernel image and all dtb variants for your board. The dtb +used is the basic one: + +U-Boot> print +[...] +bootcmd=fatload mmc 1:1 0x21000000 at91-sama5d2_xplained.dtb; fatload mmc 1:1 0x22000000 zImage; bootz 0x22000000 - 0x21000000 +[...] + +If you want to use a variant such as the _pda7 one, you will have to +update your u-boot environment: + +U-Boot> setenv bootcmd 'fatload mmc 1:1 0x21000000 at91-sama5d2_xplained_pda7.dtb; fatload mmc 1:1 0x22000000 zImage; bootz 0x22000000 - 0x21000000' +U-Boot> save +Saving Environment to FAT... +writing uboot.env +done + +A 512MB ext4 partition is also created to store the rootfs generated. + +If you want to customize the size of the partitions and their content, +take a look at the the genimage.cfg file in the board directory. diff --git a/board/atmel/sama5d27_som1_ek_mmc/genimage.cfg b/board/atmel/sama5d27_som1_ek_mmc/genimage.cfg new file mode 100644 index 00000000..a0adecfd --- /dev/null +++ b/board/atmel/sama5d27_som1_ek_mmc/genimage.cfg @@ -0,0 +1,32 @@ +# Image for SD card boot on Atmel SAMA5D2 Xplained boards +# +image boot.vfat { + vfat { + files = { + "zImage", + "at91-sama5d27_som1_ek.dtb", + "boot.bin", + "u-boot.bin" + } + } + + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 1M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/atmel/sama5d27_wlsom1_ek_mmc/genimage.cfg b/board/atmel/sama5d27_wlsom1_ek_mmc/genimage.cfg new file mode 100644 index 00000000..cf55f46f --- /dev/null +++ b/board/atmel/sama5d27_wlsom1_ek_mmc/genimage.cfg @@ -0,0 +1,32 @@ +# Image for SD card boot on Microchip SAMA5D27 WLSOM1 EK +# +image boot.vfat { + vfat { + files = { + "zImage", + "at91-sama5d27_wlsom1_ek.dtb", + "boot.bin", + "u-boot.bin" + } + } + + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 1M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/atmel/sama5d2_xplained_mmc/genimage.cfg b/board/atmel/sama5d2_xplained_mmc/genimage.cfg new file mode 100644 index 00000000..2c5a0f6d --- /dev/null +++ b/board/atmel/sama5d2_xplained_mmc/genimage.cfg @@ -0,0 +1,32 @@ +# Image for SD card boot on Atmel SAMA5D2 Xplained boards +# +image boot.vfat { + vfat { + files = { + "zImage", + "at91-sama5d2_xplained.dtb", + "boot.bin", + "u-boot.bin" + } + } + + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 1M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/atmel/sama5d3_xplained_mmc/genimage.cfg b/board/atmel/sama5d3_xplained_mmc/genimage.cfg new file mode 100644 index 00000000..0456e8d5 --- /dev/null +++ b/board/atmel/sama5d3_xplained_mmc/genimage.cfg @@ -0,0 +1,32 @@ +# Image for SD card boot on Atmel SAMA5D3 Xplained boards +# +image boot.vfat { + vfat { + files = { + "zImage", + "at91-sama5d3_xplained.dtb", + "boot.bin", + "u-boot.bin" + } + } + + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 1M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/atmel/sama5d4_xplained_mmc/genimage.cfg b/board/atmel/sama5d4_xplained_mmc/genimage.cfg new file mode 100644 index 00000000..bd929ffa --- /dev/null +++ b/board/atmel/sama5d4_xplained_mmc/genimage.cfg @@ -0,0 +1,32 @@ +# Image for SD card boot on Atmel SAMA5D4 Xplained boards +# +image boot.vfat { + vfat { + files = { + "zImage", + "at91-sama5d4_xplained.dtb", + "boot.bin", + "u-boot.bin" + } + } + + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 1M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/avnet/rzboard_v2l/genimage.cfg b/board/avnet/rzboard_v2l/genimage.cfg new file mode 100644 index 00000000..94f35cb3 --- /dev/null +++ b/board/avnet/rzboard_v2l/genimage.cfg @@ -0,0 +1,29 @@ +# SD card image for RZBoard V2L + +image boot.vfat { + vfat { + files = { + "Image", + "rzboard.dtb", + "uEnv.txt" + } + } + size = 24M +} + +image sdcard.img { + hdimage { + partition-table-type = "hybrid" + } + + partition boot { + partition-type = "0xC" + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/board/avnet/rzboard_v2l/post-image.sh b/board/avnet/rzboard_v2l/post-image.sh new file mode 100755 index 00000000..25bef8f7 --- /dev/null +++ b/board/avnet/rzboard_v2l/post-image.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +set -e + +cp board/avnet/rzboard_v2l/uEnv.txt "${BINARIES_DIR}" +support/scripts/genimage.sh -c board/avnet/rzboard_v2l/genimage.cfg diff --git a/board/avnet/rzboard_v2l/readme.txt b/board/avnet/rzboard_v2l/readme.txt new file mode 100644 index 00000000..24b56808 --- /dev/null +++ b/board/avnet/rzboard_v2l/readme.txt @@ -0,0 +1,71 @@ +RZBoard V2L +=========== + +https://www.avnet.com/wps/portal/us/products/avnet-boards/avnet-board-families/rzboard-v2l/ + +This board support creates a bootable sd card image for the AVNET RZBoard V2L. +This board is shipped with a u-boot inside its eMMC. This board support uses +that u-boot and only puts uEnv.txt, kernel image and rootfs onto the sd card. + +Build: +====== + + $ make rzboard_v2l_defconfig + $ make + +Files created in output directory +================================= + +output/images +. +├── Image +├── boot.vfat +├── rootfs.ext2 +├── rootfs.ext4 +├── rootfs.tar +├── rzboard.dtb +├── sdcard.img +└── uEnv.txt + +Creating bootable SD card: +========================== + +Simply invoke (as root) + +sudo dd if=output/images/sdcard.img of=/dev/sdX && sync + +Where X is your SD card device. + +Booting: +======== + +Configure board for sd card boot: +--------------------------------- +Set the 'BOOT1' switch (next to the audio jack) to '1' (away from 'ON') in +order to let the board boot kernel and rootfs from SD card. + +Serial console: +--------------- +The RZBoard V2L has a 4-pin header "J19" right next to the micro USB. Its +layout can be seen in the Quick-Start Guide, or the Hardware User Guide, +obtainable from: +https://www.avnet.com/wps/portal/us/products/avnet-boards/avnet-board-families/rzboard-v2l/ + +The uart pins are as follows (from left to right - orientation according to the +board's labeling): + +pin 1: n/a (most away from the board's corner) +pin 2: tx +pin 3: rx +pin 4: gnd (nearest to the board's corner) + +Baudrate for this board is 115200. + +Power-Up: +--------- +Plug in a suitable USB-C power supply and press the button 'S1' (next to the +USB-C port) for 2 seconds until the LED goes on. + +Login: +------ +Enter 'root' as login user, and the prompt is ready. diff --git a/board/avnet/rzboard_v2l/uEnv.txt b/board/avnet/rzboard_v2l/uEnv.txt new file mode 100644 index 00000000..28b8acb8 --- /dev/null +++ b/board/avnet/rzboard_v2l/uEnv.txt @@ -0,0 +1,3 @@ +bootcmd=booti ${kernel_addr_r} - ${fdt_addr_r} +uenvcmd=fatload mmc 0:1 ${kernel_addr_r} Image; fatload mmc 0:1 ${fdt_addr_r} rzboard.dtb +bootargs=root=/dev/mmcblk0p2 rw rootfstype=ext4 earlyprintk console=ttyS0,115200 rootwait earlycon clk_ignore_unused debug diff --git a/board/avnet/s6lx9_microboard/lx9_mmu.dts b/board/avnet/s6lx9_microboard/lx9_mmu.dts new file mode 100644 index 00000000..8ffedd9f --- /dev/null +++ b/board/avnet/s6lx9_microboard/lx9_mmu.dts @@ -0,0 +1,247 @@ +/* + * Device Tree Generator version: 1.3 + * + * (C) Copyright 2007-2008 Xilinx, Inc. + * (C) Copyright 2007-2009 Michal Simek + * + * Michal SIMEK + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * CAUTION: This file is automatically generated by libgen. + * Version: Xilinx EDK 13.2 EDK_O.61xd + * + * XPS project directory: device-tree_bsp_230-orig + */ + +/dts-v1/; +/ { + #address-cells = <1>; + #size-cells = <1>; + compatible = "xlnx,microblaze"; + model = "testing"; + MCB3_LPDDR: memory@80000000 { + device_type = "memory"; + reg = < 0x80000000 0x4000000 >; + } ; + aliases { + ethernet0 = &Ethernet_MAC; + serial0 = &USB_Uart; + } ; + chosen { + bootargs = "console=ttyUL0"; + linux,stdout-path = "/axi@0/serial@40600000"; + } ; + cpus { + #address-cells = <1>; + #cpus = <0x1>; + #size-cells = <0>; + microblaze_0: cpu@0 { + clock-frequency = <66666667>; + compatible = "xlnx,microblaze-8.20.a"; + d-cache-baseaddr = <0x80000000>; + d-cache-highaddr = <0x83ffffff>; + d-cache-line-size = <0x10>; + d-cache-size = <0x2000>; + device_type = "cpu"; + i-cache-baseaddr = <0x80000000>; + i-cache-highaddr = <0x83ffffff>; + i-cache-line-size = <0x10>; + i-cache-size = <0x2000>; + model = "microblaze,8.20.a"; + reg = <0>; + timebase-frequency = <66666667>; + xlnx,addr-tag-bits = <0xd>; + xlnx,allow-dcache-wr = <0x1>; + xlnx,allow-icache-wr = <0x1>; + xlnx,area-optimized = <0x0>; + xlnx,avoid-primitives = <0x0>; + xlnx,branch-target-cache-size = <0x0>; + xlnx,cache-byte-size = <0x2000>; + xlnx,d-axi = <0x1>; + xlnx,d-lmb = <0x1>; + xlnx,d-plb = <0x0>; + xlnx,data-size = <0x20>; + xlnx,dcache-addr-tag = <0xd>; + xlnx,dcache-always-used = <0x1>; + xlnx,dcache-byte-size = <0x2000>; + xlnx,dcache-data-width = <0x0>; + xlnx,dcache-force-tag-lutram = <0x0>; + xlnx,dcache-interface = <0x0>; + xlnx,dcache-line-len = <0x4>; + xlnx,dcache-use-fsl = <0x0>; + xlnx,dcache-use-writeback = <0x0>; + xlnx,dcache-victims = <0x0>; + xlnx,debug-enabled = <0x1>; + xlnx,div-zero-exception = <0x0>; + xlnx,dynamic-bus-sizing = <0x1>; + xlnx,ecc-use-ce-exception = <0x0>; + xlnx,edge-is-positive = <0x1>; + xlnx,endianness = <0x1>; + xlnx,family = "spartan6"; + xlnx,fault-tolerant = <0x0>; + xlnx,fpu-exception = <0x0>; + xlnx,freq = <0x3f940ab>; + xlnx,fsl-data-size = <0x20>; + xlnx,fsl-exception = <0x0>; + xlnx,fsl-links = <0x0>; + xlnx,i-axi = <0x0>; + xlnx,i-lmb = <0x1>; + xlnx,i-plb = <0x0>; + xlnx,icache-always-used = <0x1>; + xlnx,icache-data-width = <0x0>; + xlnx,icache-force-tag-lutram = <0x0>; + xlnx,icache-interface = <0x0>; + xlnx,icache-line-len = <0x4>; + xlnx,icache-streams = <0x0>; + xlnx,icache-use-fsl = <0x0>; + xlnx,icache-victims = <0x0>; + xlnx,ill-opcode-exception = <0x0>; + xlnx,instance = "microblaze_0"; + xlnx,interconnect = <0x2>; + xlnx,interconnect-m-axi-dc-aw-register = <0x0>; + xlnx,interconnect-m-axi-dc-read-issuing = <0x2>; + xlnx,interconnect-m-axi-dc-w-register = <0x0>; + xlnx,interconnect-m-axi-dc-write-issuing = <0x20>; + xlnx,interconnect-m-axi-dp-read-issuing = <0x1>; + xlnx,interconnect-m-axi-dp-write-issuing = <0x1>; + xlnx,interconnect-m-axi-ic-read-issuing = <0x2>; + xlnx,interconnect-m-axi-ip-read-issuing = <0x1>; + xlnx,interrupt-is-edge = <0x0>; + xlnx,lockstep-slave = <0x0>; + xlnx,mmu-dtlb-size = <0x1>; + xlnx,mmu-itlb-size = <0x1>; + xlnx,mmu-privileged-instr = <0x0>; + xlnx,mmu-tlb-access = <0x3>; + xlnx,mmu-zones = <0x2>; + xlnx,number-of-pc-brk = <0x1>; + xlnx,number-of-rd-addr-brk = <0x0>; + xlnx,number-of-wr-addr-brk = <0x0>; + xlnx,opcode-0x0-illegal = <0x0>; + xlnx,optimization = <0x0>; + xlnx,pvr = <0x0>; + xlnx,pvr-user1 = <0x0>; + xlnx,pvr-user2 = <0x0>; + xlnx,reset-msr = <0x0>; + xlnx,sco = <0x0>; + xlnx,stream-interconnect = <0x0>; + xlnx,unaligned-exceptions = <0x0>; + xlnx,use-barrel = <0x1>; + xlnx,use-branch-target-cache = <0x0>; + xlnx,use-dcache = <0x1>; + xlnx,use-div = <0x0>; + xlnx,use-ext-brk = <0x1>; + xlnx,use-ext-nm-brk = <0x1>; + xlnx,use-extended-fsl-instr = <0x0>; + xlnx,use-fpu = <0x0>; + xlnx,use-hw-mul = <0x1>; + xlnx,use-icache = <0x1>; + xlnx,use-interrupt = <0x1>; + xlnx,use-mmu = <0x3>; + xlnx,use-msr-instr = <0x1>; + xlnx,use-pcmp-instr = <0x0>; + xlnx,use-stack-protection = <0x0>; + } ; + } ; + axi4lite_0: axi@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "xlnx,axi-interconnect-1.03.a", "simple-bus"; + ranges ; + Ethernet_MAC: ethernet@40e00000 { + compatible = "xlnx,axi-ethernetlite-1.00.a", "xlnx,xps-ethernetlite-1.00.a"; + device_type = "network"; + interrupt-parent = <µblaze_0_intc>; + interrupts = < 2 0 >; + local-mac-address = [ 00 0a 35 aa de 00 ]; +// phy-handle = <&phy0>; + reg = < 0x40e00000 0x10000 >; + xlnx,duplex = <0x1>; + xlnx,family = "spartan6"; + xlnx,include-global-buffers = <0x0>; + xlnx,include-internal-loopback = <0x0>; + xlnx,include-mdio = <0x1>; + xlnx,include-phy-constraints = <0x1>; + xlnx,interconnect-s-axi-read-acceptance = <0x1>; + xlnx,interconnect-s-axi-write-acceptance = <0x1>; + xlnx,rx-ping-pong = <0x0>; + xlnx,s-axi-aclk-period-ps = <0x3a98>; + xlnx,s-axi-id-width = <0x1>; + xlnx,s-axi-supports-narrow-burst = <0x0>; + xlnx,tx-ping-pong = <0x0>; +/* + mdio { + #address-cells = <1>; + #size-cells = <0>; + phy0: phy@7 { + compatible = "marvell,88e1111"; + device_type = "ethernet-phy"; + reg = <7>; + } ; + } ; +*/ + } ; + SPI_FLASH: spi@40a00000 { + compatible = "xlnx,axi-spi-1.01.a", "xlnx,xps-spi-2.00.a"; + interrupt-parent = <µblaze_0_intc>; + interrupts = < 1 2 >; + reg = < 0x40a00000 0x10000 >; + xlnx,family = "spartan6"; + xlnx,fifo-exist = <0x1>; + xlnx,num-ss-bits = <0x1>; + xlnx,num-transfer-bits = <0x8>; + xlnx,sck-ratio = <0x4>; + } ; + USB_Uart: serial@40600000 { + clock-frequency = <66666667>; + compatible = "xlnx,axi-uartlite-1.02.a", "xlnx,xps-uartlite-1.00.a"; + current-speed = <115200>; + device_type = "serial"; + interrupt-parent = <µblaze_0_intc>; + interrupts = < 3 0 >; + port-number = <0>; + reg = < 0x40600000 0x10000 >; + xlnx,baudrate = <0x1c200>; + xlnx,data-bits = <0x8>; + xlnx,family = "spartan6"; + xlnx,odd-parity = <0x1>; + xlnx,s-axi-aclk-freq-hz = <0x3f940ab>; + xlnx,use-parity = <0x0>; + } ; + microblaze_0_intc: interrupt-controller@41200000 { + #interrupt-cells = <0x2>; + compatible = "xlnx,axi-intc-1.01.a", "xlnx,xps-intc-1.00.a"; + interrupt-controller ; + reg = < 0x41200000 0x10000 >; + xlnx,kind-of-intr = <0xc>; + xlnx,num-intr-inputs = <0x4>; + } ; + system_timer: timer@41c00000 { + clock-frequency = <66666667>; + compatible = "xlnx,axi-timer-1.02.a", "xlnx,xps-timer-1.00.a"; + interrupt-parent = <µblaze_0_intc>; + interrupts = < 0 2 >; + reg = < 0x41c00000 0x10000 >; + xlnx,count-width = <0x20>; + xlnx,family = "spartan6"; + xlnx,gen0-assert = <0x1>; + xlnx,gen1-assert = <0x1>; + xlnx,one-timer-only = <0x0>; + xlnx,trig0-assert = <0x1>; + xlnx,trig1-assert = <0x1>; + } ; + } ; +} ; diff --git a/board/avnet/s6lx9_microboard/lx9_mmu_defconfig b/board/avnet/s6lx9_microboard/lx9_mmu_defconfig new file mode 100644 index 00000000..5d01ca00 --- /dev/null +++ b/board/avnet/s6lx9_microboard/lx9_mmu_defconfig @@ -0,0 +1,68 @@ +CONFIG_EXPERIMENTAL=y +CONFIG_SYSVIPC=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="rootfs.cpio" +CONFIG_INITRAMFS_COMPRESSION_GZIP=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_EXPERT=y +CONFIG_KALLSYMS_ALL=y +CONFIG_KALLSYMS_EXTRA_PASS=y +# CONFIG_HOTPLUG is not set +# CONFIG_BASE_FULL is not set +# CONFIG_FUTEX is not set +# CONFIG_EPOLL is not set +# CONFIG_SIGNALFD is not set +# CONFIG_SHMEM is not set +CONFIG_SLAB=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_OPT_LIB_ASM is not set +CONFIG_KERNEL_BASE_ADDR=0x80000000 +CONFIG_XILINX_MICROBLAZE0_FAMILY="spartan6" +CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR=1 +# CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR is not set +CONFIG_XILINX_MICROBLAZE0_USE_BARREL=1 +CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL=1 +CONFIG_XILINX_MICROBLAZE0_HW_VER="8.20.a" +CONFIG_HZ_100=y +CONFIG_MMU=y +CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE_FORCE=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_INET_LRO is not set +# CONFIG_IPV6 is not set +CONFIG_PROC_DEVICETREE=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_NETDEVICES=y +CONFIG_NET_ETHERNET=y +CONFIG_XILINX_EMACLITE=y +# CONFIG_INPUT is not set +# CONFIG_SERIO is not set +# CONFIG_VT is not set +CONFIG_SERIAL_UARTLITE=y +CONFIG_SERIAL_UARTLITE_CONSOLE=y +# CONFIG_HW_RANDOM is not set +# CONFIG_HWMON is not set +# CONFIG_USB_SUPPORT is not set +CONFIG_EXT2_FS=y +# CONFIG_DNOTIFY is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +CONFIG_CIFS=y +CONFIG_CIFS_STATS=y +CONFIG_CIFS_STATS2=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_DEBUG_KERNEL=y +CONFIG_DETECT_HUNG_TASK=y +CONFIG_DEBUG_SLAB=y +CONFIG_DEBUG_SPINLOCK=y +CONFIG_DEBUG_INFO=y +CONFIG_EARLY_PRINTK=y +# CONFIG_CRYPTO_ANSI_CPRNG is not set diff --git a/board/avnet/s6lx9_microboard/readme.txt b/board/avnet/s6lx9_microboard/readme.txt new file mode 100644 index 00000000..3cb2ce98 --- /dev/null +++ b/board/avnet/s6lx9_microboard/readme.txt @@ -0,0 +1,70 @@ +This is the buildroot board support for the Avnet Spartan6 LX9 MicroBoard. + +The Avnet S6LX9 Microboard is a small USB-Stick sized module containing +a Spartan6 FPGA capable of running the Microblaze softcore processor +together with RAM and FLASH memory. + +The board can be bought from Avnet (avnet.com) or from Trenz Electronic +(www.trenz-electronic.de) for a low price. + +To run the Linux built with buildroot you have to install the FPGA bitfile +and u-boot as described in the tutorial AvtS6LX9MicroBoard_SW302_PetaLinux +available on http://www.em.avnet.com/s6microboard + +On this site also is a forum containing information on how to build your own +Microblaze processor for the Microboard. + +The image file (default name is simpleImage.lx9_mmu.ub) has to be copied +to your tftp folder (often /tftpboot/) or can be programmed into the +board's SPI flash. + +Sample session: + +$ make s6lx9_microboard_defconfig +$ make +$ cp build/linux-/arch/microblaze/boot/simpleImage.lx9_mmu.ub /tftpboot/br12.2a.ub +$ minicom + + + Icache:ON + Dcache:ON + U-Boot Start:0x83f00000 +SF: Got idcode 20 ba 18 10 01 +*** Warning - bad CRC, using default environment + +Net: Xilinx_Emaclite +MAC: 00:0a:35:00:63:37 +U-BOOT for Avnet-LX9-Microboard-AXI-tiny-13.1 + +BOOTP broadcast 1 +DHCP client bound to address 192.168.11.122 +Hit any key to stop autoboot: 0 +U-Boot-PetaLinux> tftp br12.2a.ub +Using Xilinx_Emaclite device +TFTP from server 192.168.11.10; our IP address is 192.168.11.122 +Filename 'br12.2a.ub'. +Load address: 0x80002000 +Loading: ################################################################# + ################################################################# + ################################################################# + ################################################################# + ################################################################# + ############################## +done +Bytes transferred = 5207724 (4f76ac hex) +U-Boot-PetaLinux> bootm +## Booting kernel from Legacy Image at 80002000 ... + Image Name: Linux-3.1.0 + Image Type: MicroBlaze Linux Kernel Image (uncompressed) + Data Size: 5207660 Bytes = 5 MB + Load Address: 80000000 + Entry Point: 80000000 + Verifying Checksum ... OK + Loading Kernel Image ... OK +OK +## Transferring control to Linux (at address 80000000), 0x80000000 ramdisk 0x00000000, FDT 0x00000000... +Early console on uartlite at 0x40600000 +..... boot log skipped + +Welcome to Microblaze Buildroot +Microblaze login: diff --git a/board/bananapi/bananapi-m2-berry/extlinux.conf b/board/bananapi/bananapi-m2-berry/extlinux.conf new file mode 100644 index 00000000..1f1b4f5c --- /dev/null +++ b/board/bananapi/bananapi-m2-berry/extlinux.conf @@ -0,0 +1,4 @@ +label Bananapi M2 Berry linux + kernel /boot/zImage + devicetree /boot/sun8i-v40-bananapi-m2-berry.dtb + append console=ttyS0,115200n8 root=/dev/mmcblk0p1 rootwait diff --git a/board/bananapi/bananapi-m2-berry/genimage.cfg b/board/bananapi/bananapi-m2-berry/genimage.cfg new file mode 100644 index 00000000..92c86775 --- /dev/null +++ b/board/bananapi/bananapi-m2-berry/genimage.cfg @@ -0,0 +1,16 @@ +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + size = 1016K # 1MB - 8KB + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/bananapi/bananapi-m2-berry/post-build.sh b/board/bananapi/bananapi-m2-berry/post-build.sh new file mode 100755 index 00000000..21a2b0d8 --- /dev/null +++ b/board/bananapi/bananapi-m2-berry/post-build.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +BOARD_DIR="$(dirname "$0")" + +install -m 644 -D "${BOARD_DIR}"/extlinux.conf \ + "${TARGET_DIR}"/boot/extlinux/extlinux.conf diff --git a/board/bananapi/bananapi-m2-berry/readme.txt b/board/bananapi/bananapi-m2-berry/readme.txt new file mode 100644 index 00000000..838675ed --- /dev/null +++ b/board/bananapi/bananapi-m2-berry/readme.txt @@ -0,0 +1,35 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Bananapi M2 Berry. With the current +configuration it will bring-up the board, and allow access through the +serial console. + +Bananapi M2 Berry link: +https://wiki.banana-pi.org/Banana_Pi_BPI-M2_Berry + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make bananapi_m2_berry_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Bananapi M2 Berry and power it up. The console +is on the serial line, 115200 8N1. diff --git a/board/bananapi/bananapi-m2-ultra/extlinux.conf b/board/bananapi/bananapi-m2-ultra/extlinux.conf new file mode 100644 index 00000000..f5f35c1d --- /dev/null +++ b/board/bananapi/bananapi-m2-ultra/extlinux.conf @@ -0,0 +1,4 @@ +label Bananapi M2 Ultra linux + kernel /boot/zImage + devicetree /boot/sun8i-r40-bananapi-m2-ultra.dtb + append console=ttyS0,115200n8 root=/dev/mmcblk0p1 rootwait diff --git a/board/bananapi/bananapi-m2-ultra/genimage.cfg b/board/bananapi/bananapi-m2-ultra/genimage.cfg new file mode 100644 index 00000000..92c86775 --- /dev/null +++ b/board/bananapi/bananapi-m2-ultra/genimage.cfg @@ -0,0 +1,16 @@ +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + size = 1016K # 1MB - 8KB + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/bananapi/bananapi-m2-ultra/post-build.sh b/board/bananapi/bananapi-m2-ultra/post-build.sh new file mode 100755 index 00000000..21a2b0d8 --- /dev/null +++ b/board/bananapi/bananapi-m2-ultra/post-build.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +BOARD_DIR="$(dirname "$0")" + +install -m 644 -D "${BOARD_DIR}"/extlinux.conf \ + "${TARGET_DIR}"/boot/extlinux/extlinux.conf diff --git a/board/bananapi/bananapi-m2-ultra/readme.txt b/board/bananapi/bananapi-m2-ultra/readme.txt new file mode 100644 index 00000000..c3de84f5 --- /dev/null +++ b/board/bananapi/bananapi-m2-ultra/readme.txt @@ -0,0 +1,35 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Bananapi M2 ULtra. With the current +configuration it will bring-up the board, and allow access through the +serial console. + +Bananapi M2 Ultra link: +http://www.banana-pi.org/m2u.html + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make bananapi_m2_ultra_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Bananapi M2 Ultra and power it up. The console +is on the serial line, 115200 8N1. diff --git a/board/bananapi/bananapi-m2-zero/boot.cmd b/board/bananapi/bananapi-m2-zero/boot.cmd new file mode 100644 index 00000000..70ccdf70 --- /dev/null +++ b/board/bananapi/bananapi-m2-zero/boot.cmd @@ -0,0 +1,7 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk1p2 rootwait + +mmc dev 0 +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-h2-plus-bananapi-m2-zero.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/board/bananapi/bananapi-m2-zero/genimage.cfg b/board/bananapi/bananapi-m2-zero/genimage.cfg new file mode 100644 index 00000000..1f565b52 --- /dev/null +++ b/board/bananapi/bananapi-m2-zero/genimage.cfg @@ -0,0 +1,34 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h2-plus-bananapi-m2-zero.dtb", + "boot.scr" + } + } + + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + size = 1016K # 1MB - 8KB + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/bananapi/bananapi-m2-zero/readme.txt b/board/bananapi/bananapi-m2-zero/readme.txt new file mode 100644 index 00000000..9edd477f --- /dev/null +++ b/board/bananapi/bananapi-m2-zero/readme.txt @@ -0,0 +1,34 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +Buildroot environment for the Bananapi M2 Zero. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Bananapi M2 Zero link: +http://www.banana-pi.org/m2z.html + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make bananapi_m2_zero_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sync + +Insert the micro SDcard in your Bananapi M2 Zero and power it up. The console +is on the Debug UART on the CON3 header, with serial settings 115200 8N1. diff --git a/board/beagleboard/beaglebone-qt5/patches/linux-headers/linux-headers.hash b/board/beagleboard/beaglebone-qt5/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/beagleboard/beaglebone-qt5/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/beagleboard/beaglebone-qt5/patches/linux/0001-keep-jtag-clock-alive-for-debugger.patch b/board/beagleboard/beaglebone-qt5/patches/linux/0001-keep-jtag-clock-alive-for-debugger.patch new file mode 100644 index 00000000..8e36d9ab --- /dev/null +++ b/board/beagleboard/beaglebone-qt5/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/board/beagleboard/beaglebone-qt5/patches/linux/0002-ARM-8933-1-replace-Sun-Solaris-style-flag-on-section.patch b/board/beagleboard/beaglebone-qt5/patches/linux/0002-ARM-8933-1-replace-Sun-Solaris-style-flag-on-section.patch new file mode 100644 index 00000000..e99363ae --- /dev/null +++ b/board/beagleboard/beaglebone-qt5/patches/linux/0002-ARM-8933-1-replace-Sun-Solaris-style-flag-on-section.patch @@ -0,0 +1,432 @@ +From 790756c7e0229dedc83bf058ac69633045b1000e Mon Sep 17 00:00:00 2001 +From: Nick Desaulniers +Date: Mon, 4 Nov 2019 19:31:45 +0100 +Subject: [PATCH] ARM: 8933/1: replace Sun/Solaris style flag on section + directive + +It looks like a section directive was using "Solaris style" to declare +the section flags. Replace this with the GNU style so that Clang's +integrated assembler can assemble this directive. + +The modified instances were identified via: +$ ag \.section | grep # + +Link: https://ftp.gnu.org/old-gnu/Manuals/gas-2.9.1/html_chapter/as_7.html#SEC119 +Link: https://github.com/ClangBuiltLinux/linux/issues/744 +Link: https://bugs.llvm.org/show_bug.cgi?id=43759 +Link: https://reviews.llvm.org/D69296 + +Acked-by: Nicolas Pitre +Reviewed-by: Ard Biesheuvel +Reviewed-by: Stefan Agner +Signed-off-by: Nick Desaulniers +Suggested-by: Fangrui Song +Suggested-by: Jian Cai +Suggested-by: Peter Smith +Signed-off-by: Russell King +Upstream: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=762d2dcd9e233e3025f8627ea65f23e568045edb +--- + arch/arm/boot/bootp/init.S | 2 +- + arch/arm/boot/compressed/big-endian.S | 2 +- + arch/arm/boot/compressed/head.S | 2 +- + arch/arm/boot/compressed/piggy.S | 2 +- + arch/arm/mm/proc-arm1020.S | 2 +- + arch/arm/mm/proc-arm1020e.S | 2 +- + arch/arm/mm/proc-arm1022.S | 2 +- + arch/arm/mm/proc-arm1026.S | 2 +- + arch/arm/mm/proc-arm720.S | 2 +- + arch/arm/mm/proc-arm740.S | 2 +- + arch/arm/mm/proc-arm7tdmi.S | 2 +- + arch/arm/mm/proc-arm920.S | 2 +- + arch/arm/mm/proc-arm922.S | 2 +- + arch/arm/mm/proc-arm925.S | 2 +- + arch/arm/mm/proc-arm926.S | 2 +- + arch/arm/mm/proc-arm940.S | 2 +- + arch/arm/mm/proc-arm946.S | 2 +- + arch/arm/mm/proc-arm9tdmi.S | 2 +- + arch/arm/mm/proc-fa526.S | 2 +- + arch/arm/mm/proc-feroceon.S | 2 +- + arch/arm/mm/proc-mohawk.S | 2 +- + arch/arm/mm/proc-sa110.S | 2 +- + arch/arm/mm/proc-sa1100.S | 2 +- + arch/arm/mm/proc-v6.S | 2 +- + arch/arm/mm/proc-v7.S | 2 +- + arch/arm/mm/proc-v7m.S | 4 ++-- + arch/arm/mm/proc-xsc3.S | 2 +- + arch/arm/mm/proc-xscale.S | 2 +- + 28 files changed, 29 insertions(+), 29 deletions(-) + +diff --git a/arch/arm/boot/bootp/init.S b/arch/arm/boot/bootp/init.S +index 5c476bd2b4ce..b562da2f7040 100644 +--- a/arch/arm/boot/bootp/init.S ++++ b/arch/arm/boot/bootp/init.S +@@ -13,7 +13,7 @@ + * size immediately following the kernel, we could build this into + * a binary blob, and concatenate the zImage using the cat command. + */ +- .section .start,#alloc,#execinstr ++ .section .start, "ax" + .type _start, #function + .globl _start + +diff --git a/arch/arm/boot/compressed/big-endian.S b/arch/arm/boot/compressed/big-endian.S +index 88e2a88d324b..0e092c36da2f 100644 +--- a/arch/arm/boot/compressed/big-endian.S ++++ b/arch/arm/boot/compressed/big-endian.S +@@ -6,7 +6,7 @@ + * Author: Nicolas Pitre + */ + +- .section ".start", #alloc, #execinstr ++ .section ".start", "ax" + + mrc p15, 0, r0, c1, c0, 0 @ read control reg + orr r0, r0, #(1 << 7) @ enable big endian mode +diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S +index ae70754d003d..ead21e5f2b80 100644 +--- a/arch/arm/boot/compressed/head.S ++++ b/arch/arm/boot/compressed/head.S +@@ -140,7 +140,7 @@ + #endif + .endm + +- .section ".start", #alloc, #execinstr ++ .section ".start", "ax" + /* + * sort out different calling conventions + */ +diff --git a/arch/arm/boot/compressed/piggy.S b/arch/arm/boot/compressed/piggy.S +index 0284f84dcf38..27577644ee72 100644 +--- a/arch/arm/boot/compressed/piggy.S ++++ b/arch/arm/boot/compressed/piggy.S +@@ -1,5 +1,5 @@ + /* SPDX-License-Identifier: GPL-2.0 */ +- .section .piggydata,#alloc ++ .section .piggydata, "a" + .globl input_data + input_data: + .incbin "arch/arm/boot/compressed/piggy_data" +diff --git a/arch/arm/mm/proc-arm1020.S b/arch/arm/mm/proc-arm1020.S +index 4fa5371bc662..2785da387c91 100644 +--- a/arch/arm/mm/proc-arm1020.S ++++ b/arch/arm/mm/proc-arm1020.S +@@ -491,7 +491,7 @@ cpu_arm1020_name: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .type __arm1020_proc_info,#object + __arm1020_proc_info: +diff --git a/arch/arm/mm/proc-arm1020e.S b/arch/arm/mm/proc-arm1020e.S +index 5d8a8339e09a..e9ea237ed785 100644 +--- a/arch/arm/mm/proc-arm1020e.S ++++ b/arch/arm/mm/proc-arm1020e.S +@@ -449,7 +449,7 @@ arm1020e_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .type __arm1020e_proc_info,#object + __arm1020e_proc_info: +diff --git a/arch/arm/mm/proc-arm1022.S b/arch/arm/mm/proc-arm1022.S +index b3dd95c345e4..920c279e7879 100644 +--- a/arch/arm/mm/proc-arm1022.S ++++ b/arch/arm/mm/proc-arm1022.S +@@ -443,7 +443,7 @@ arm1022_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .type __arm1022_proc_info,#object + __arm1022_proc_info: +diff --git a/arch/arm/mm/proc-arm1026.S b/arch/arm/mm/proc-arm1026.S +index e927187157d7..0bdf25a95b10 100644 +--- a/arch/arm/mm/proc-arm1026.S ++++ b/arch/arm/mm/proc-arm1026.S +@@ -437,7 +437,7 @@ arm1026_crval: + string cpu_arm1026_name, "ARM1026EJ-S" + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .type __arm1026_proc_info,#object + __arm1026_proc_info: +diff --git a/arch/arm/mm/proc-arm720.S b/arch/arm/mm/proc-arm720.S +index c99d24363f32..39361e196d61 100644 +--- a/arch/arm/mm/proc-arm720.S ++++ b/arch/arm/mm/proc-arm720.S +@@ -172,7 +172,7 @@ arm720_crval: + * See for a definition of this structure. + */ + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .macro arm720_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cpu_flush:req + .type __\name\()_proc_info,#object +diff --git a/arch/arm/mm/proc-arm740.S b/arch/arm/mm/proc-arm740.S +index 1b4a3838393f..1a94bbf6e53f 100644 +--- a/arch/arm/mm/proc-arm740.S ++++ b/arch/arm/mm/proc-arm740.S +@@ -128,7 +128,7 @@ __arm740_setup: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + .type __arm740_proc_info,#object + __arm740_proc_info: + .long 0x41807400 +diff --git a/arch/arm/mm/proc-arm7tdmi.S b/arch/arm/mm/proc-arm7tdmi.S +index 17a4687065c7..52b66cf0259e 100644 +--- a/arch/arm/mm/proc-arm7tdmi.S ++++ b/arch/arm/mm/proc-arm7tdmi.S +@@ -72,7 +72,7 @@ __arm7tdmi_setup: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .macro arm7tdmi_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, \ + extra_hwcaps=0 +diff --git a/arch/arm/mm/proc-arm920.S b/arch/arm/mm/proc-arm920.S +index 298c76b47749..31ac8acc34dc 100644 +--- a/arch/arm/mm/proc-arm920.S ++++ b/arch/arm/mm/proc-arm920.S +@@ -434,7 +434,7 @@ arm920_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .type __arm920_proc_info,#object + __arm920_proc_info: +diff --git a/arch/arm/mm/proc-arm922.S b/arch/arm/mm/proc-arm922.S +index 824be3a0bc23..ca2c7ca8af21 100644 +--- a/arch/arm/mm/proc-arm922.S ++++ b/arch/arm/mm/proc-arm922.S +@@ -412,7 +412,7 @@ arm922_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .type __arm922_proc_info,#object + __arm922_proc_info: +diff --git a/arch/arm/mm/proc-arm925.S b/arch/arm/mm/proc-arm925.S +index d40cff8f102c..a381a0c9f109 100644 +--- a/arch/arm/mm/proc-arm925.S ++++ b/arch/arm/mm/proc-arm925.S +@@ -477,7 +477,7 @@ arm925_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .macro arm925_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache + .type __\name\()_proc_info,#object +diff --git a/arch/arm/mm/proc-arm926.S b/arch/arm/mm/proc-arm926.S +index 4ef89e1d1127..1ba253c2bce1 100644 +--- a/arch/arm/mm/proc-arm926.S ++++ b/arch/arm/mm/proc-arm926.S +@@ -460,7 +460,7 @@ arm926_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .type __arm926_proc_info,#object + __arm926_proc_info: +diff --git a/arch/arm/mm/proc-arm940.S b/arch/arm/mm/proc-arm940.S +index 1c26d991386d..4b8a00220cc9 100644 +--- a/arch/arm/mm/proc-arm940.S ++++ b/arch/arm/mm/proc-arm940.S +@@ -340,7 +340,7 @@ __arm940_setup: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .type __arm940_proc_info,#object + __arm940_proc_info: +diff --git a/arch/arm/mm/proc-arm946.S b/arch/arm/mm/proc-arm946.S +index 2dc1c75a4fd4..555becf9c758 100644 +--- a/arch/arm/mm/proc-arm946.S ++++ b/arch/arm/mm/proc-arm946.S +@@ -395,7 +395,7 @@ __arm946_setup: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + .type __arm946_proc_info,#object + __arm946_proc_info: + .long 0x41009460 +diff --git a/arch/arm/mm/proc-arm9tdmi.S b/arch/arm/mm/proc-arm9tdmi.S +index 913c06e590af..ef517530130b 100644 +--- a/arch/arm/mm/proc-arm9tdmi.S ++++ b/arch/arm/mm/proc-arm9tdmi.S +@@ -66,7 +66,7 @@ __arm9tdmi_setup: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .macro arm9tdmi_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req + .type __\name\()_proc_info, #object +diff --git a/arch/arm/mm/proc-fa526.S b/arch/arm/mm/proc-fa526.S +index 8120b6f4dbb8..dddf833fe000 100644 +--- a/arch/arm/mm/proc-fa526.S ++++ b/arch/arm/mm/proc-fa526.S +@@ -185,7 +185,7 @@ fa526_cr1_set: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .type __fa526_proc_info,#object + __fa526_proc_info: +diff --git a/arch/arm/mm/proc-feroceon.S b/arch/arm/mm/proc-feroceon.S +index bb6dc34d42a3..b12b76bc8d30 100644 +--- a/arch/arm/mm/proc-feroceon.S ++++ b/arch/arm/mm/proc-feroceon.S +@@ -571,7 +571,7 @@ feroceon_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .macro feroceon_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache:req + .type __\name\()_proc_info,#object +diff --git a/arch/arm/mm/proc-mohawk.S b/arch/arm/mm/proc-mohawk.S +index f08308578885..d47d6c5cee63 100644 +--- a/arch/arm/mm/proc-mohawk.S ++++ b/arch/arm/mm/proc-mohawk.S +@@ -416,7 +416,7 @@ mohawk_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .type __88sv331x_proc_info,#object + __88sv331x_proc_info: +diff --git a/arch/arm/mm/proc-sa110.S b/arch/arm/mm/proc-sa110.S +index d5bc5d702563..baba503ba816 100644 +--- a/arch/arm/mm/proc-sa110.S ++++ b/arch/arm/mm/proc-sa110.S +@@ -196,7 +196,7 @@ sa110_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .type __sa110_proc_info,#object + __sa110_proc_info: +diff --git a/arch/arm/mm/proc-sa1100.S b/arch/arm/mm/proc-sa1100.S +index be7b611c76c7..75ebacc8e4e5 100644 +--- a/arch/arm/mm/proc-sa1100.S ++++ b/arch/arm/mm/proc-sa1100.S +@@ -239,7 +239,7 @@ sa1100_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .macro sa1100_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req + .type __\name\()_proc_info,#object +diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S +index c1c85eb3484f..1dd0d5ca27da 100644 +--- a/arch/arm/mm/proc-v6.S ++++ b/arch/arm/mm/proc-v6.S +@@ -261,7 +261,7 @@ v6_crval: + string cpu_elf_name, "v6" + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + /* + * Match any ARMv6 processor core. +diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S +index c4e8006a1a8c..48e0ef6f0dcc 100644 +--- a/arch/arm/mm/proc-v7.S ++++ b/arch/arm/mm/proc-v7.S +@@ -644,7 +644,7 @@ __v7_setup_stack: + string cpu_elf_name, "v7" + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + /* + * Standard v7 proc info content +diff --git a/arch/arm/mm/proc-v7m.S b/arch/arm/mm/proc-v7m.S +index 1a49d503eafc..84459c1d31b8 100644 +--- a/arch/arm/mm/proc-v7m.S ++++ b/arch/arm/mm/proc-v7m.S +@@ -93,7 +93,7 @@ ENTRY(cpu_cm7_proc_fin) + ret lr + ENDPROC(cpu_cm7_proc_fin) + +- .section ".init.text", #alloc, #execinstr ++ .section ".init.text", "ax" + + __v7m_cm7_setup: + mov r8, #(V7M_SCB_CCR_DC | V7M_SCB_CCR_IC| V7M_SCB_CCR_BP) +@@ -177,7 +177,7 @@ ENDPROC(__v7m_setup) + string cpu_elf_name "v7m" + string cpu_v7m_name "ARMv7-M" + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .macro __v7m_proc name, initfunc, cache_fns = nop_cache_fns, hwcaps = 0, proc_fns = v7m_processor_functions + .long 0 /* proc_info_list.__cpu_mm_mmu_flags */ +diff --git a/arch/arm/mm/proc-xsc3.S b/arch/arm/mm/proc-xsc3.S +index 1ac0fbbe9f12..42eaecc43cfe 100644 +--- a/arch/arm/mm/proc-xsc3.S ++++ b/arch/arm/mm/proc-xsc3.S +@@ -496,7 +496,7 @@ xsc3_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .macro xsc3_proc_info name:req, cpu_val:req, cpu_mask:req + .type __\name\()_proc_info,#object +diff --git a/arch/arm/mm/proc-xscale.S b/arch/arm/mm/proc-xscale.S +index bdb2b7749b03..18ac5a1f8922 100644 +--- a/arch/arm/mm/proc-xscale.S ++++ b/arch/arm/mm/proc-xscale.S +@@ -610,7 +610,7 @@ xscale_crval: + + .align + +- .section ".proc.info.init", #alloc ++ .section ".proc.info.init", "a" + + .macro xscale_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache + .type __\name\()_proc_info,#object +-- +2.43.0 + diff --git a/board/beagleboard/beaglebone-qt5/patches/linux/0003-ata-ahci-Match-EM_MAX_SLOTS-with-SATA_PMP_MAX_PORTS.patch b/board/beagleboard/beaglebone-qt5/patches/linux/0003-ata-ahci-Match-EM_MAX_SLOTS-with-SATA_PMP_MAX_PORTS.patch new file mode 100644 index 00000000..50f5cf71 --- /dev/null +++ b/board/beagleboard/beaglebone-qt5/patches/linux/0003-ata-ahci-Match-EM_MAX_SLOTS-with-SATA_PMP_MAX_PORTS.patch @@ -0,0 +1,80 @@ +From 67a00c299c5c143817c948fbc7de1a2fa1af38fb Mon Sep 17 00:00:00 2001 +From: Kai-Heng Feng +Date: Tue, 11 Oct 2022 10:46:17 +0800 +Subject: [PATCH] ata: ahci: Match EM_MAX_SLOTS with SATA_PMP_MAX_PORTS + +commit 1e41e693f458eef2d5728207dbd327cd3b16580a upstream. + +UBSAN complains about array-index-out-of-bounds: +[ 1.980703] kernel: UBSAN: array-index-out-of-bounds in /build/linux-9H675w/linux-5.15.0/drivers/ata/libahci.c:968:41 +[ 1.980709] kernel: index 15 is out of range for type 'ahci_em_priv [8]' +[ 1.980713] kernel: CPU: 0 PID: 209 Comm: scsi_eh_8 Not tainted 5.15.0-25-generic #25-Ubuntu +[ 1.980716] kernel: Hardware name: System manufacturer System Product Name/P5Q3, BIOS 1102 06/11/2010 +[ 1.980718] kernel: Call Trace: +[ 1.980721] kernel: +[ 1.980723] kernel: show_stack+0x52/0x58 +[ 1.980729] kernel: dump_stack_lvl+0x4a/0x5f +[ 1.980734] kernel: dump_stack+0x10/0x12 +[ 1.980736] kernel: ubsan_epilogue+0x9/0x45 +[ 1.980739] kernel: __ubsan_handle_out_of_bounds.cold+0x44/0x49 +[ 1.980742] kernel: ahci_qc_issue+0x166/0x170 [libahci] +[ 1.980748] kernel: ata_qc_issue+0x135/0x240 +[ 1.980752] kernel: ata_exec_internal_sg+0x2c4/0x580 +[ 1.980754] kernel: ? vprintk_default+0x1d/0x20 +[ 1.980759] kernel: ata_exec_internal+0x67/0xa0 +[ 1.980762] kernel: sata_pmp_read+0x8d/0xc0 +[ 1.980765] kernel: sata_pmp_read_gscr+0x3c/0x90 +[ 1.980768] kernel: sata_pmp_attach+0x8b/0x310 +[ 1.980771] kernel: ata_eh_revalidate_and_attach+0x28c/0x4b0 +[ 1.980775] kernel: ata_eh_recover+0x6b6/0xb30 +[ 1.980778] kernel: ? ahci_do_hardreset+0x180/0x180 [libahci] +[ 1.980783] kernel: ? ahci_stop_engine+0xb0/0xb0 [libahci] +[ 1.980787] kernel: ? ahci_do_softreset+0x290/0x290 [libahci] +[ 1.980792] kernel: ? trace_event_raw_event_ata_eh_link_autopsy_qc+0xe0/0xe0 +[ 1.980795] kernel: sata_pmp_eh_recover.isra.0+0x214/0x560 +[ 1.980799] kernel: sata_pmp_error_handler+0x23/0x40 +[ 1.980802] kernel: ahci_error_handler+0x43/0x80 [libahci] +[ 1.980806] kernel: ata_scsi_port_error_handler+0x2b1/0x600 +[ 1.980810] kernel: ata_scsi_error+0x9c/0xd0 +[ 1.980813] kernel: scsi_error_handler+0xa1/0x180 +[ 1.980817] kernel: ? scsi_unjam_host+0x1c0/0x1c0 +[ 1.980820] kernel: kthread+0x12a/0x150 +[ 1.980823] kernel: ? set_kthread_struct+0x50/0x50 +[ 1.980826] kernel: ret_from_fork+0x22/0x30 +[ 1.980831] kernel: + +This happens because sata_pmp_init_links() initialize link->pmp up to +SATA_PMP_MAX_PORTS while em_priv is declared as 8 elements array. + +I can't find the maximum Enclosure Management ports specified in AHCI +spec v1.3.1, but "12.2.1 LED message type" states that "Port Multiplier +Information" can utilize 4 bits, which implies it can support up to 16 +ports. Hence, use SATA_PMP_MAX_PORTS as EM_MAX_SLOTS to resolve the +issue. + +BugLink: https://bugs.launchpad.net/bugs/1970074 +Cc: stable@vger.kernel.org +Signed-off-by: Kai-Heng Feng +Signed-off-by: Damien Le Moal +Signed-off-by: Greg Kroah-Hartman +Upstream: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=67a00c299c5c143817c948fbc7de1a2fa1af38fb +--- + drivers/ata/ahci.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/ata/ahci.h b/drivers/ata/ahci.h +index 9290e787abdc..d5b9f9689877 100644 +--- a/drivers/ata/ahci.h ++++ b/drivers/ata/ahci.h +@@ -265,7 +265,7 @@ enum { + PCS_7 = 0x94, /* 7+ port PCS (Denverton) */ + + /* em constants */ +- EM_MAX_SLOTS = 8, ++ EM_MAX_SLOTS = SATA_PMP_MAX_PORTS, + EM_MAX_RETRY = 5, + + /* em_ctl bits */ +-- +2.43.0 + diff --git a/board/beagleboard/beaglebone-qt5/patches/linux/0004-ata-ahci-fix-enum-constants-for-gcc-13.patch b/board/beagleboard/beaglebone-qt5/patches/linux/0004-ata-ahci-fix-enum-constants-for-gcc-13.patch new file mode 100644 index 00000000..6a5b3f59 --- /dev/null +++ b/board/beagleboard/beaglebone-qt5/patches/linux/0004-ata-ahci-fix-enum-constants-for-gcc-13.patch @@ -0,0 +1,357 @@ +From ba6e23d2c9e3bcabda328467ba4eeca12f37e2ae Mon Sep 17 00:00:00 2001 +From: Arnd Bergmann +Date: Sat, 3 Dec 2022 11:54:25 +0100 +Subject: [PATCH] ata: ahci: fix enum constants for gcc-13 + +commit f07788079f515ca4a681c5f595bdad19cfbd7b1d upstream. + +gcc-13 slightly changes the type of constant expressions that are defined +in an enum, which triggers a compile time sanity check in libata: + +linux/drivers/ata/libahci.c: In function 'ahci_led_store': +linux/include/linux/compiler_types.h:357:45: error: call to '__compiletime_assert_302' declared with attribute error: BUILD_BUG_ON failed: sizeof(_s) > sizeof(long) +357 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) + +The new behavior is that sizeof() returns the same value for the +constant as it does for the enum type, which is generally more sensible +and consistent. + +The problem in libata is that it contains a single enum definition for +lots of unrelated constants, some of which are large positive (unsigned) +integers like 0xffffffff, while others like (1<<31) are interpreted as +negative integers, and this forces the enum type to become 64 bit wide +even though most constants would still fit into a signed 32-bit 'int'. + +Fix this by changing the entire enum definition to use BIT(x) in place +of (1< +Cc: linux-ide@vger.kernel.org +Cc: Damien Le Moal +Cc: stable@vger.kernel.org +Cc: Randy Dunlap +Signed-off-by: Arnd Bergmann +Tested-by: Luis Machado +Signed-off-by: Damien Le Moal +[Backport to linux-4.19.y] +Signed-off-by: Paul Barker +Signed-off-by: Greg Kroah-Hartman +Upstream: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=4c3ddc06cedb62f2904e58fd95170bf206bee149 +--- + drivers/ata/ahci.h | 232 +++++++++++++++++++++++---------------------- + 1 file changed, 117 insertions(+), 115 deletions(-) + +diff --git a/drivers/ata/ahci.h b/drivers/ata/ahci.h +index d5b9f9689877..8cc6cb14767b 100644 +--- a/drivers/ata/ahci.h ++++ b/drivers/ata/ahci.h +@@ -40,6 +40,7 @@ + #include + #include + #include ++#include + + /* Enclosure Management Control */ + #define EM_CTRL_MSG_TYPE 0x000f0000 +@@ -70,12 +71,12 @@ enum { + AHCI_PORT_PRIV_FBS_DMA_SZ = AHCI_CMD_SLOT_SZ + + AHCI_CMD_TBL_AR_SZ + + (AHCI_RX_FIS_SZ * 16), +- AHCI_IRQ_ON_SG = (1 << 31), +- AHCI_CMD_ATAPI = (1 << 5), +- AHCI_CMD_WRITE = (1 << 6), +- AHCI_CMD_PREFETCH = (1 << 7), +- AHCI_CMD_RESET = (1 << 8), +- AHCI_CMD_CLR_BUSY = (1 << 10), ++ AHCI_IRQ_ON_SG = BIT(31), ++ AHCI_CMD_ATAPI = BIT(5), ++ AHCI_CMD_WRITE = BIT(6), ++ AHCI_CMD_PREFETCH = BIT(7), ++ AHCI_CMD_RESET = BIT(8), ++ AHCI_CMD_CLR_BUSY = BIT(10), + + RX_FIS_PIO_SETUP = 0x20, /* offset of PIO Setup FIS data */ + RX_FIS_D2H_REG = 0x40, /* offset of D2H Register FIS data */ +@@ -93,37 +94,37 @@ enum { + HOST_CAP2 = 0x24, /* host capabilities, extended */ + + /* HOST_CTL bits */ +- HOST_RESET = (1 << 0), /* reset controller; self-clear */ +- HOST_IRQ_EN = (1 << 1), /* global IRQ enable */ +- HOST_MRSM = (1 << 2), /* MSI Revert to Single Message */ +- HOST_AHCI_EN = (1 << 31), /* AHCI enabled */ ++ HOST_RESET = BIT(0), /* reset controller; self-clear */ ++ HOST_IRQ_EN = BIT(1), /* global IRQ enable */ ++ HOST_MRSM = BIT(2), /* MSI Revert to Single Message */ ++ HOST_AHCI_EN = BIT(31), /* AHCI enabled */ + + /* HOST_CAP bits */ +- HOST_CAP_SXS = (1 << 5), /* Supports External SATA */ +- HOST_CAP_EMS = (1 << 6), /* Enclosure Management support */ +- HOST_CAP_CCC = (1 << 7), /* Command Completion Coalescing */ +- HOST_CAP_PART = (1 << 13), /* Partial state capable */ +- HOST_CAP_SSC = (1 << 14), /* Slumber state capable */ +- HOST_CAP_PIO_MULTI = (1 << 15), /* PIO multiple DRQ support */ +- HOST_CAP_FBS = (1 << 16), /* FIS-based switching support */ +- HOST_CAP_PMP = (1 << 17), /* Port Multiplier support */ +- HOST_CAP_ONLY = (1 << 18), /* Supports AHCI mode only */ +- HOST_CAP_CLO = (1 << 24), /* Command List Override support */ +- HOST_CAP_LED = (1 << 25), /* Supports activity LED */ +- HOST_CAP_ALPM = (1 << 26), /* Aggressive Link PM support */ +- HOST_CAP_SSS = (1 << 27), /* Staggered Spin-up */ +- HOST_CAP_MPS = (1 << 28), /* Mechanical presence switch */ +- HOST_CAP_SNTF = (1 << 29), /* SNotification register */ +- HOST_CAP_NCQ = (1 << 30), /* Native Command Queueing */ +- HOST_CAP_64 = (1 << 31), /* PCI DAC (64-bit DMA) support */ ++ HOST_CAP_SXS = BIT(5), /* Supports External SATA */ ++ HOST_CAP_EMS = BIT(6), /* Enclosure Management support */ ++ HOST_CAP_CCC = BIT(7), /* Command Completion Coalescing */ ++ HOST_CAP_PART = BIT(13), /* Partial state capable */ ++ HOST_CAP_SSC = BIT(14), /* Slumber state capable */ ++ HOST_CAP_PIO_MULTI = BIT(15), /* PIO multiple DRQ support */ ++ HOST_CAP_FBS = BIT(16), /* FIS-based switching support */ ++ HOST_CAP_PMP = BIT(17), /* Port Multiplier support */ ++ HOST_CAP_ONLY = BIT(18), /* Supports AHCI mode only */ ++ HOST_CAP_CLO = BIT(24), /* Command List Override support */ ++ HOST_CAP_LED = BIT(25), /* Supports activity LED */ ++ HOST_CAP_ALPM = BIT(26), /* Aggressive Link PM support */ ++ HOST_CAP_SSS = BIT(27), /* Staggered Spin-up */ ++ HOST_CAP_MPS = BIT(28), /* Mechanical presence switch */ ++ HOST_CAP_SNTF = BIT(29), /* SNotification register */ ++ HOST_CAP_NCQ = BIT(30), /* Native Command Queueing */ ++ HOST_CAP_64 = BIT(31), /* PCI DAC (64-bit DMA) support */ + + /* HOST_CAP2 bits */ +- HOST_CAP2_BOH = (1 << 0), /* BIOS/OS handoff supported */ +- HOST_CAP2_NVMHCI = (1 << 1), /* NVMHCI supported */ +- HOST_CAP2_APST = (1 << 2), /* Automatic partial to slumber */ +- HOST_CAP2_SDS = (1 << 3), /* Support device sleep */ +- HOST_CAP2_SADM = (1 << 4), /* Support aggressive DevSlp */ +- HOST_CAP2_DESO = (1 << 5), /* DevSlp from slumber only */ ++ HOST_CAP2_BOH = BIT(0), /* BIOS/OS handoff supported */ ++ HOST_CAP2_NVMHCI = BIT(1), /* NVMHCI supported */ ++ HOST_CAP2_APST = BIT(2), /* Automatic partial to slumber */ ++ HOST_CAP2_SDS = BIT(3), /* Support device sleep */ ++ HOST_CAP2_SADM = BIT(4), /* Support aggressive DevSlp */ ++ HOST_CAP2_DESO = BIT(5), /* DevSlp from slumber only */ + + /* registers for each SATA port */ + PORT_LST_ADDR = 0x00, /* command list DMA addr */ +@@ -145,24 +146,25 @@ enum { + PORT_DEVSLP = 0x44, /* device sleep */ + + /* PORT_IRQ_{STAT,MASK} bits */ +- PORT_IRQ_COLD_PRES = (1 << 31), /* cold presence detect */ +- PORT_IRQ_TF_ERR = (1 << 30), /* task file error */ +- PORT_IRQ_HBUS_ERR = (1 << 29), /* host bus fatal error */ +- PORT_IRQ_HBUS_DATA_ERR = (1 << 28), /* host bus data error */ +- PORT_IRQ_IF_ERR = (1 << 27), /* interface fatal error */ +- PORT_IRQ_IF_NONFATAL = (1 << 26), /* interface non-fatal error */ +- PORT_IRQ_OVERFLOW = (1 << 24), /* xfer exhausted available S/G */ +- PORT_IRQ_BAD_PMP = (1 << 23), /* incorrect port multiplier */ +- +- PORT_IRQ_PHYRDY = (1 << 22), /* PhyRdy changed */ +- PORT_IRQ_DEV_ILCK = (1 << 7), /* device interlock */ +- PORT_IRQ_CONNECT = (1 << 6), /* port connect change status */ +- PORT_IRQ_SG_DONE = (1 << 5), /* descriptor processed */ +- PORT_IRQ_UNK_FIS = (1 << 4), /* unknown FIS rx'd */ +- PORT_IRQ_SDB_FIS = (1 << 3), /* Set Device Bits FIS rx'd */ +- PORT_IRQ_DMAS_FIS = (1 << 2), /* DMA Setup FIS rx'd */ +- PORT_IRQ_PIOS_FIS = (1 << 1), /* PIO Setup FIS rx'd */ +- PORT_IRQ_D2H_REG_FIS = (1 << 0), /* D2H Register FIS rx'd */ ++ PORT_IRQ_COLD_PRES = BIT(31), /* cold presence detect */ ++ PORT_IRQ_TF_ERR = BIT(30), /* task file error */ ++ PORT_IRQ_HBUS_ERR = BIT(29), /* host bus fatal error */ ++ PORT_IRQ_HBUS_DATA_ERR = BIT(28), /* host bus data error */ ++ PORT_IRQ_IF_ERR = BIT(27), /* interface fatal error */ ++ PORT_IRQ_IF_NONFATAL = BIT(26), /* interface non-fatal error */ ++ PORT_IRQ_OVERFLOW = BIT(24), /* xfer exhausted available S/G */ ++ PORT_IRQ_BAD_PMP = BIT(23), /* incorrect port multiplier */ ++ ++ PORT_IRQ_PHYRDY = BIT(22), /* PhyRdy changed */ ++ PORT_IRQ_DEV_ILCK = BIT(7), /* device interlock */ ++ PORT_IRQ_DMPS = BIT(7), /* mechanical presence status */ ++ PORT_IRQ_CONNECT = BIT(6), /* port connect change status */ ++ PORT_IRQ_SG_DONE = BIT(5), /* descriptor processed */ ++ PORT_IRQ_UNK_FIS = BIT(4), /* unknown FIS rx'd */ ++ PORT_IRQ_SDB_FIS = BIT(3), /* Set Device Bits FIS rx'd */ ++ PORT_IRQ_DMAS_FIS = BIT(2), /* DMA Setup FIS rx'd */ ++ PORT_IRQ_PIOS_FIS = BIT(1), /* PIO Setup FIS rx'd */ ++ PORT_IRQ_D2H_REG_FIS = BIT(0), /* D2H Register FIS rx'd */ + + PORT_IRQ_FREEZE = PORT_IRQ_HBUS_ERR | + PORT_IRQ_IF_ERR | +@@ -178,34 +180,34 @@ enum { + PORT_IRQ_PIOS_FIS | PORT_IRQ_D2H_REG_FIS, + + /* PORT_CMD bits */ +- PORT_CMD_ASP = (1 << 27), /* Aggressive Slumber/Partial */ +- PORT_CMD_ALPE = (1 << 26), /* Aggressive Link PM enable */ +- PORT_CMD_ATAPI = (1 << 24), /* Device is ATAPI */ +- PORT_CMD_FBSCP = (1 << 22), /* FBS Capable Port */ +- PORT_CMD_ESP = (1 << 21), /* External Sata Port */ +- PORT_CMD_HPCP = (1 << 18), /* HotPlug Capable Port */ +- PORT_CMD_PMP = (1 << 17), /* PMP attached */ +- PORT_CMD_LIST_ON = (1 << 15), /* cmd list DMA engine running */ +- PORT_CMD_FIS_ON = (1 << 14), /* FIS DMA engine running */ +- PORT_CMD_FIS_RX = (1 << 4), /* Enable FIS receive DMA engine */ +- PORT_CMD_CLO = (1 << 3), /* Command list override */ +- PORT_CMD_POWER_ON = (1 << 2), /* Power up device */ +- PORT_CMD_SPIN_UP = (1 << 1), /* Spin up device */ +- PORT_CMD_START = (1 << 0), /* Enable port DMA engine */ +- +- PORT_CMD_ICC_MASK = (0xf << 28), /* i/f ICC state mask */ +- PORT_CMD_ICC_ACTIVE = (0x1 << 28), /* Put i/f in active state */ +- PORT_CMD_ICC_PARTIAL = (0x2 << 28), /* Put i/f in partial state */ +- PORT_CMD_ICC_SLUMBER = (0x6 << 28), /* Put i/f in slumber state */ ++ PORT_CMD_ASP = BIT(27), /* Aggressive Slumber/Partial */ ++ PORT_CMD_ALPE = BIT(26), /* Aggressive Link PM enable */ ++ PORT_CMD_ATAPI = BIT(24), /* Device is ATAPI */ ++ PORT_CMD_FBSCP = BIT(22), /* FBS Capable Port */ ++ PORT_CMD_ESP = BIT(21), /* External Sata Port */ ++ PORT_CMD_HPCP = BIT(18), /* HotPlug Capable Port */ ++ PORT_CMD_PMP = BIT(17), /* PMP attached */ ++ PORT_CMD_LIST_ON = BIT(15), /* cmd list DMA engine running */ ++ PORT_CMD_FIS_ON = BIT(14), /* FIS DMA engine running */ ++ PORT_CMD_FIS_RX = BIT(4), /* Enable FIS receive DMA engine */ ++ PORT_CMD_CLO = BIT(3), /* Command list override */ ++ PORT_CMD_POWER_ON = BIT(2), /* Power up device */ ++ PORT_CMD_SPIN_UP = BIT(1), /* Spin up device */ ++ PORT_CMD_START = BIT(0), /* Enable port DMA engine */ ++ ++ PORT_CMD_ICC_MASK = (0xfu << 28), /* i/f ICC state mask */ ++ PORT_CMD_ICC_ACTIVE = (0x1u << 28), /* Put i/f in active state */ ++ PORT_CMD_ICC_PARTIAL = (0x2u << 28), /* Put i/f in partial state */ ++ PORT_CMD_ICC_SLUMBER = (0x6u << 28), /* Put i/f in slumber state */ + + /* PORT_FBS bits */ + PORT_FBS_DWE_OFFSET = 16, /* FBS device with error offset */ + PORT_FBS_ADO_OFFSET = 12, /* FBS active dev optimization offset */ + PORT_FBS_DEV_OFFSET = 8, /* FBS device to issue offset */ + PORT_FBS_DEV_MASK = (0xf << PORT_FBS_DEV_OFFSET), /* FBS.DEV */ +- PORT_FBS_SDE = (1 << 2), /* FBS single device error */ +- PORT_FBS_DEC = (1 << 1), /* FBS device error clear */ +- PORT_FBS_EN = (1 << 0), /* Enable FBS */ ++ PORT_FBS_SDE = BIT(2), /* FBS single device error */ ++ PORT_FBS_DEC = BIT(1), /* FBS device error clear */ ++ PORT_FBS_EN = BIT(0), /* Enable FBS */ + + /* PORT_DEVSLP bits */ + PORT_DEVSLP_DM_OFFSET = 25, /* DITO multiplier offset */ +@@ -213,45 +215,45 @@ enum { + PORT_DEVSLP_DITO_OFFSET = 15, /* DITO offset */ + PORT_DEVSLP_MDAT_OFFSET = 10, /* Minimum assertion time */ + PORT_DEVSLP_DETO_OFFSET = 2, /* DevSlp exit timeout */ +- PORT_DEVSLP_DSP = (1 << 1), /* DevSlp present */ +- PORT_DEVSLP_ADSE = (1 << 0), /* Aggressive DevSlp enable */ ++ PORT_DEVSLP_DSP = BIT(1), /* DevSlp present */ ++ PORT_DEVSLP_ADSE = BIT(0), /* Aggressive DevSlp enable */ + + /* hpriv->flags bits */ + + #define AHCI_HFLAGS(flags) .private_data = (void *)(flags) + +- AHCI_HFLAG_NO_NCQ = (1 << 0), +- AHCI_HFLAG_IGN_IRQ_IF_ERR = (1 << 1), /* ignore IRQ_IF_ERR */ +- AHCI_HFLAG_IGN_SERR_INTERNAL = (1 << 2), /* ignore SERR_INTERNAL */ +- AHCI_HFLAG_32BIT_ONLY = (1 << 3), /* force 32bit */ +- AHCI_HFLAG_MV_PATA = (1 << 4), /* PATA port */ +- AHCI_HFLAG_NO_MSI = (1 << 5), /* no PCI MSI */ +- AHCI_HFLAG_NO_PMP = (1 << 6), /* no PMP */ +- AHCI_HFLAG_SECT255 = (1 << 8), /* max 255 sectors */ +- AHCI_HFLAG_YES_NCQ = (1 << 9), /* force NCQ cap on */ +- AHCI_HFLAG_NO_SUSPEND = (1 << 10), /* don't suspend */ +- AHCI_HFLAG_SRST_TOUT_IS_OFFLINE = (1 << 11), /* treat SRST timeout as +- link offline */ +- AHCI_HFLAG_NO_SNTF = (1 << 12), /* no sntf */ +- AHCI_HFLAG_NO_FPDMA_AA = (1 << 13), /* no FPDMA AA */ +- AHCI_HFLAG_YES_FBS = (1 << 14), /* force FBS cap on */ +- AHCI_HFLAG_DELAY_ENGINE = (1 << 15), /* do not start engine on +- port start (wait until +- error-handling stage) */ +- AHCI_HFLAG_NO_DEVSLP = (1 << 17), /* no device sleep */ +- AHCI_HFLAG_NO_FBS = (1 << 18), /* no FBS */ ++ AHCI_HFLAG_NO_NCQ = BIT(0), ++ AHCI_HFLAG_IGN_IRQ_IF_ERR = BIT(1), /* ignore IRQ_IF_ERR */ ++ AHCI_HFLAG_IGN_SERR_INTERNAL = BIT(2), /* ignore SERR_INTERNAL */ ++ AHCI_HFLAG_32BIT_ONLY = BIT(3), /* force 32bit */ ++ AHCI_HFLAG_MV_PATA = BIT(4), /* PATA port */ ++ AHCI_HFLAG_NO_MSI = BIT(5), /* no PCI MSI */ ++ AHCI_HFLAG_NO_PMP = BIT(6), /* no PMP */ ++ AHCI_HFLAG_SECT255 = BIT(8), /* max 255 sectors */ ++ AHCI_HFLAG_YES_NCQ = BIT(9), /* force NCQ cap on */ ++ AHCI_HFLAG_NO_SUSPEND = BIT(10), /* don't suspend */ ++ AHCI_HFLAG_SRST_TOUT_IS_OFFLINE = BIT(11), /* treat SRST timeout as ++ link offline */ ++ AHCI_HFLAG_NO_SNTF = BIT(12), /* no sntf */ ++ AHCI_HFLAG_NO_FPDMA_AA = BIT(13), /* no FPDMA AA */ ++ AHCI_HFLAG_YES_FBS = BIT(14), /* force FBS cap on */ ++ AHCI_HFLAG_DELAY_ENGINE = BIT(15), /* do not start engine on ++ port start (wait until ++ error-handling stage) */ ++ AHCI_HFLAG_NO_DEVSLP = BIT(17), /* no device sleep */ ++ AHCI_HFLAG_NO_FBS = BIT(18), /* no FBS */ + + #ifdef CONFIG_PCI_MSI +- AHCI_HFLAG_MULTI_MSI = (1 << 20), /* per-port MSI(-X) */ ++ AHCI_HFLAG_MULTI_MSI = BIT(20), /* per-port MSI(-X) */ + #else + /* compile out MSI infrastructure */ + AHCI_HFLAG_MULTI_MSI = 0, + #endif +- AHCI_HFLAG_WAKE_BEFORE_STOP = (1 << 22), /* wake before DMA stop */ +- AHCI_HFLAG_YES_ALPM = (1 << 23), /* force ALPM cap on */ +- AHCI_HFLAG_NO_WRITE_TO_RO = (1 << 24), /* don't write to read +- only registers */ +- AHCI_HFLAG_IS_MOBILE = (1 << 25), /* mobile chipset, use ++ AHCI_HFLAG_WAKE_BEFORE_STOP = BIT(22), /* wake before DMA stop */ ++ AHCI_HFLAG_YES_ALPM = BIT(23), /* force ALPM cap on */ ++ AHCI_HFLAG_NO_WRITE_TO_RO = BIT(24), /* don't write to read ++ only registers */ ++ AHCI_HFLAG_IS_MOBILE = BIT(25), /* mobile chipset, use + SATA_MOBILE_LPM_POLICY + as default lpm_policy */ + +@@ -269,22 +271,22 @@ enum { + EM_MAX_RETRY = 5, + + /* em_ctl bits */ +- EM_CTL_RST = (1 << 9), /* Reset */ +- EM_CTL_TM = (1 << 8), /* Transmit Message */ +- EM_CTL_MR = (1 << 0), /* Message Received */ +- EM_CTL_ALHD = (1 << 26), /* Activity LED */ +- EM_CTL_XMT = (1 << 25), /* Transmit Only */ +- EM_CTL_SMB = (1 << 24), /* Single Message Buffer */ +- EM_CTL_SGPIO = (1 << 19), /* SGPIO messages supported */ +- EM_CTL_SES = (1 << 18), /* SES-2 messages supported */ +- EM_CTL_SAFTE = (1 << 17), /* SAF-TE messages supported */ +- EM_CTL_LED = (1 << 16), /* LED messages supported */ ++ EM_CTL_RST = BIT(9), /* Reset */ ++ EM_CTL_TM = BIT(8), /* Transmit Message */ ++ EM_CTL_MR = BIT(0), /* Message Received */ ++ EM_CTL_ALHD = BIT(26), /* Activity LED */ ++ EM_CTL_XMT = BIT(25), /* Transmit Only */ ++ EM_CTL_SMB = BIT(24), /* Single Message Buffer */ ++ EM_CTL_SGPIO = BIT(19), /* SGPIO messages supported */ ++ EM_CTL_SES = BIT(18), /* SES-2 messages supported */ ++ EM_CTL_SAFTE = BIT(17), /* SAF-TE messages supported */ ++ EM_CTL_LED = BIT(16), /* LED messages supported */ + + /* em message type */ +- EM_MSG_TYPE_LED = (1 << 0), /* LED */ +- EM_MSG_TYPE_SAFTE = (1 << 1), /* SAF-TE */ +- EM_MSG_TYPE_SES2 = (1 << 2), /* SES-2 */ +- EM_MSG_TYPE_SGPIO = (1 << 3), /* SGPIO */ ++ EM_MSG_TYPE_LED = BIT(0), /* LED */ ++ EM_MSG_TYPE_SAFTE = BIT(1), /* SAF-TE */ ++ EM_MSG_TYPE_SES2 = BIT(2), /* SES-2 */ ++ EM_MSG_TYPE_SGPIO = BIT(3), /* SGPIO */ + }; + + struct ahci_cmd_hdr { +-- +2.43.0 + diff --git a/board/beagleboard/beaglebone-qt5/patches/linux/linux.hash b/board/beagleboard/beaglebone-qt5/patches/linux/linux.hash new file mode 100644 index 00000000..72d5bfff --- /dev/null +++ b/board/beagleboard/beaglebone-qt5/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 394523e61eabf24bf920981ba967799ff90b6099a72dc1d1b92c918433439f61 linux-4.19.94-ti-r72.tar.gz diff --git a/board/beagleboard/beaglebone-qt5/patches/uboot/uboot.hash b/board/beagleboard/beaglebone-qt5/patches/uboot/uboot.hash new file mode 100644 index 00000000..fe9b4f53 --- /dev/null +++ b/board/beagleboard/beaglebone-qt5/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f591da9ab90ef3d6b3d173766d0ddff90c4ed7330680897486117df390d83c8f u-boot-2024.07.tar.bz2 diff --git a/board/beagleboard/beaglebone/extlinux.conf b/board/beagleboard/beaglebone/extlinux.conf new file mode 100644 index 00000000..13affcab --- /dev/null +++ b/board/beagleboard/beaglebone/extlinux.conf @@ -0,0 +1,4 @@ +label beaglebone-buildroot + kernel /zImage + fdtdir / + append console=ttyS0,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait diff --git a/board/beagleboard/beaglebone/genimage.cfg b/board/beagleboard/beaglebone/genimage.cfg new file mode 100644 index 00000000..4b026fda --- /dev/null +++ b/board/beagleboard/beaglebone/genimage.cfg @@ -0,0 +1,37 @@ +image boot.vfat { + vfat { + files = { + "MLO", + "u-boot.img", + "zImage", + "uEnv.txt", + "am335x-evm.dtb", + "am335x-evmsk.dtb", + "am335x-bone.dtb", + "am335x-boneblack.dtb", + "am335x-bonegreen.dtb", + "am335x-boneblack-wireless.dtb", + "am335x-bonegreen-wireless.dtb", + "extlinux" + } + } + + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/beagleboard/beaglebone/linux-sgx.fragment b/board/beagleboard/beaglebone/linux-sgx.fragment new file mode 100644 index 00000000..58d46f58 --- /dev/null +++ b/board/beagleboard/beaglebone/linux-sgx.fragment @@ -0,0 +1,13 @@ +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 +CONFIG_DRM_LEGACY=y diff --git a/board/beagleboard/beaglebone/patches/linux-headers/linux-headers.hash b/board/beagleboard/beaglebone/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/beagleboard/beaglebone/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/beagleboard/beaglebone/patches/linux/linux.hash b/board/beagleboard/beaglebone/patches/linux/linux.hash new file mode 100644 index 00000000..4a7384d0 --- /dev/null +++ b/board/beagleboard/beaglebone/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f1ae7325c6c146e0f852866a3bfd3f90ae1b5f46e414bc99a38384ed677e3721 linux-6.6.32-ti-arm32-r7.tar.gz diff --git a/board/beagleboard/beaglebone/patches/uboot/uboot.hash b/board/beagleboard/beaglebone/patches/uboot/uboot.hash new file mode 100644 index 00000000..fe9b4f53 --- /dev/null +++ b/board/beagleboard/beaglebone/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f591da9ab90ef3d6b3d173766d0ddff90c4ed7330680897486117df390d83c8f u-boot-2024.07.tar.bz2 diff --git a/board/beagleboard/beaglebone/post-build.sh b/board/beagleboard/beaglebone/post-build.sh new file mode 100755 index 00000000..b7afd92f --- /dev/null +++ b/board/beagleboard/beaglebone/post-build.sh @@ -0,0 +1,6 @@ +#!/bin/sh +BOARD_DIR="$(dirname $0)" + +cp $BOARD_DIR/uEnv.txt $BINARIES_DIR/uEnv.txt + +install -m 0644 -D $BOARD_DIR/extlinux.conf $BINARIES_DIR/extlinux/extlinux.conf diff --git a/board/beagleboard/beaglebone/readme.txt b/board/beagleboard/beaglebone/readme.txt new file mode 100644 index 00000000..a11377ea --- /dev/null +++ b/board/beagleboard/beaglebone/readme.txt @@ -0,0 +1,66 @@ +CircuitCo BeagleBone +Texas Instuments AM335x Evaluation Module (TMDXEVM3358) + +Description +=========== + +This configuration will build a complete image for the beaglebone and +the TI AM335x-EVM, the board type is identified by the on-board +EEPROM. The configuration is based on the +ti-processor-sdk-06.01.00.08. Device tree blobs for beaglebone +variants and the evm-sk are built too. + +For Qt5 support support use the beaglebone_qt5_defconfig. + +How to build it +=============== + +Select the default configuration for the target: +$ make beaglebone_defconfig + +Optional: modify the configuration: +$ make menuconfig + +Build: +$ make + +Result of the build +=================== +output/images/ ++-- am335x-boneblack.dtb ++-- am335x-boneblack-wireless.dtb ++-- am335x-boneblue.dtb ++-- am335x-bonegreen.dtb ++-- am335x-bonegreen-wireless.dtb ++-- am335x-bone.dtb ++-- am335x-evm.dtb ++-- am335x-evmsk.dtb ++-- boot.vfat ++-- MLO ++-- rootfs.ext2 ++-- rootfs.tar ++-- sdcard.img ++-- u-boot.img ++-- uEnv.txt ++-- zImage + +To copy the image file to the sdcard use dd: +$ dd if=output/images/sdcard.img of=/dev/XXX + + +Running Qt5 hellowindow opengl demo: +=================== +# export QT_QPA_EGLFS_KMS_CONFIG=/etc/qt5/eglfs_kms_cfg.json +# export QT_QPA_PLATFORM=eglfs +# export QT_QPA_EGLFS_INTEGRATION=none +# /usr/lib/qt/examples/opengl/hellowindow/hellowindow + + +Tested hardware +=============== +am335x-evm (rev. 1.1A) +beagleboneblack (rev. A5A) +beaglebone (rev. A6) + +2020, Adam Duskett +2016, Lothar Felten diff --git a/board/beagleboard/beaglebone/rootfs_overlay/etc/qt5/eglfs_kms_cfg.json b/board/beagleboard/beaglebone/rootfs_overlay/etc/qt5/eglfs_kms_cfg.json new file mode 100644 index 00000000..76f5e7d3 --- /dev/null +++ b/board/beagleboard/beaglebone/rootfs_overlay/etc/qt5/eglfs_kms_cfg.json @@ -0,0 +1,15 @@ +{ + "device": "/dev/dri/card0", + "hwcursor": false, + "pbuffers": true, + "outputs": [ + { + "name": "VGA1", + "mode": "off" + }, + { + "name": "HDMI1", + "mode": "1024x768" + } + ] +} diff --git a/board/beagleboard/beaglebone/uEnv.txt b/board/beagleboard/beaglebone/uEnv.txt new file mode 100644 index 00000000..8fce54d8 --- /dev/null +++ b/board/beagleboard/beaglebone/uEnv.txt @@ -0,0 +1,11 @@ +bootpart=0:1 +devtype=mmc +bootdir= +bootfile=zImage +bootpartition=mmcblk0p2 +console=ttyS0,115200n8 +loadaddr=0x82000000 +fdtaddr=0x88000000 +set_mmc1=if test $board_name = A33515BB; then setenv bootpartition mmcblk1p2; fi +set_bootargs=setenv bootargs console=${console} root=/dev/${bootpartition} rw rootfstype=ext4 rootwait +uenvcmd=run set_mmc1; run set_bootargs;run loadimage;run loadfdt;printenv bootargs;bootz ${loadaddr} - ${fdtaddr} diff --git a/board/beagleboard/beagleboneai/genimage.cfg b/board/beagleboard/beagleboneai/genimage.cfg new file mode 100644 index 00000000..8aefd76e --- /dev/null +++ b/board/beagleboard/beagleboneai/genimage.cfg @@ -0,0 +1,30 @@ +image boot.vfat { + vfat { + files = { + "MLO", + "u-boot.img", + "zImage", + "am5729-beagleboneai.dtb", + "uEnv.txt" + } + } + + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/beagleboard/beagleboneai/patches/linux-headers/linux-headers.hash b/board/beagleboard/beagleboneai/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/beagleboard/beagleboneai/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/beagleboard/beagleboneai/patches/linux/linux.hash b/board/beagleboard/beagleboneai/patches/linux/linux.hash new file mode 100644 index 00000000..ec1a3601 --- /dev/null +++ b/board/beagleboard/beagleboneai/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c52bc1ffc396c11bce335c9ee5cd55fe4213cbc1fb4026ff62bb90c864c61f62 linux-5.10.217.tar.xz diff --git a/board/beagleboard/beagleboneai/patches/uboot/0001-am57xx_evm-fixes.patch b/board/beagleboard/beagleboneai/patches/uboot/0001-am57xx_evm-fixes.patch new file mode 100644 index 00000000..9c7b12be --- /dev/null +++ b/board/beagleboard/beagleboneai/patches/uboot/0001-am57xx_evm-fixes.patch @@ -0,0 +1,839 @@ +From 702ea30b462ba06f4fbee3393f0e6c19531f1e5f Mon Sep 17 00:00:00 2001 +From: Robert Nelson +Date: Fri, 25 Jun 2021 11:33:25 -0500 +Subject: [PATCH] am57xx_evm-fixes + +Signed-off-by: Robert Nelson +[Patch from https://github.com/beagleboard/u-boot/commit/702ea30b462ba06f4fbee3393f0e6c19531f1e5f] +Signed-off-by: Peter Korsgaard +--- + arch/arm/mach-omap2/omap5/hw_data.c | 1 + + board/ti/am57xx/board.c | 167 +++++++++++- + configs/am57xx_evm_defconfig | 15 +- + include/configs/ti_armv7_common.h | 407 ++++++++++++++++++++++++++++ + include/configs/ti_omap5_common.h | 5 + + include/environment/ti/boot.h | 32 ++- + include/environment/ti/mmc.h | 49 +++- + 7 files changed, 651 insertions(+), 25 deletions(-) + +diff --git a/arch/arm/mach-omap2/omap5/hw_data.c b/arch/arm/mach-omap2/omap5/hw_data.c +index fa4e27063c..d5192b1671 100644 +--- a/arch/arm/mach-omap2/omap5/hw_data.c ++++ b/arch/arm/mach-omap2/omap5/hw_data.c +@@ -421,6 +421,7 @@ void enable_basic_clocks(void) + (*prcm)->cm_l4per_uart1_clkctrl, + (*prcm)->cm_l4per_uart3_clkctrl, + (*prcm)->cm_l4per_i2c1_clkctrl, ++ (*prcm)->cm_l4per_i2c4_clkctrl, + #ifdef CONFIG_DRIVER_TI_CPSW + (*prcm)->cm_gmac_gmac_clkctrl, + #endif +diff --git a/board/ti/am57xx/board.c b/board/ti/am57xx/board.c +index 73063faee6..ad05c41f22 100644 +--- a/board/ti/am57xx/board.c ++++ b/board/ti/am57xx/board.c +@@ -41,6 +41,7 @@ + #include + #include + #include ++#include + + #include "../common/board_detect.h" + #include "mux_data.h" +@@ -528,8 +529,10 @@ void do_board_detect(void) + + rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS, + CONFIG_EEPROM_CHIP_ADDRESS); +- if (rc) ++ if (rc) { + printf("ti_i2c_eeprom_init failed %d\n", rc); ++ ti_i2c_eeprom_am_set("BBONE-AI", "A"); ++ }; + + #ifdef CONFIG_SUPPORT_EMMC_BOOT + rc = board_bootmode_has_emmc(); +@@ -579,6 +582,164 @@ void do_board_detect(void) + "Board: %s REV %s\n", bname, board_ti_get_rev()); + } + ++struct am335x_cape_eeprom_id { ++ unsigned int header; ++ char eeprom_rev[2]; ++ char board_name[32]; ++ char version[4]; ++ char manufacture[16]; ++ char part_number[16]; ++ char number_of_pins[2]; ++ char serial_number[12]; ++ char pin_usage[140]; ++ char vdd_3v3exp[ 2]; ++ char vdd_5v[ 2]; ++ char sys_5v[2]; ++ char dc_supplied[2]; ++}; ++ ++#define CAPE_EEPROM_BUS_NUM 3 ++#define CAPE_EEPROM_ADDR0 0x54 ++#define CAPE_EEPROM_ADDR1 0x55 ++#define CAPE_EEPROM_ADDR2 0x56 ++#define CAPE_EEPROM_ADDR3 0x57 ++ ++#define CAPE_EEPROM_ADDR_LEN 0x10 ++ ++static int probe_cape_eeprom(struct am335x_cape_eeprom_id *cape_header) ++{ ++ int ret; ++ struct udevice *dev; ++ unsigned char addr; ++ /* /lib/firmware/BB-CAPE-DISP-CT4-00A0.dtbo */ ++ /* 14 + 16 + 1 + 4 + 5 = 40 */ ++ char hash_cape_overlay[40]; ++ char cape_overlay[26]; ++ char process_cape_part_number[16]; ++ char process_cape_version[4]; ++ char end_part_number; ++ char cape_overlay_pass_to_kernel[18]; ++ ++ strlcpy(cape_overlay_pass_to_kernel, "", 1); ++ ++ for ( addr = CAPE_EEPROM_ADDR0; addr <= CAPE_EEPROM_ADDR3; addr++ ) { ++ ret = i2c_get_chip_for_busnum(CAPE_EEPROM_BUS_NUM, addr, 1, &dev); ++ if (ret) { ++ printf("BeagleBone Cape EEPROM: no EEPROM at address: 0x%x\n", addr); ++ } else { ++ printf("BeagleBone Cape EEPROM: found EEPROM at address: 0x%x\n", addr); ++ ++ ret = i2c_set_chip_offset_len(dev, 2); ++ if (ret) { ++ printf("BeagleBone Cape EEPROM: i2c_set_chip_offset_len failure\n"); ++ } ++ ++ ret = dm_i2c_read(dev, 0, (uchar *)cape_header, sizeof(struct am335x_cape_eeprom_id)); ++ if (ret) { ++ printf("BeagleBone Cape EEPROM: Cannot read eeprom params\n"); ++ } ++ ++ if (cape_header->header == 0xEE3355AA) { ++ strlcpy(hash_cape_overlay, "/lib/firmware/", 14 + 1); ++ strlcpy(cape_overlay, "", 2); ++ strlcpy(cape_overlay_pass_to_kernel, "", 2); ++ strlcpy(process_cape_part_number, "...............", 16 + 1); ++ strlcpy(process_cape_version, "...", 4 + 1); ++ ++ strlcpy(process_cape_part_number, cape_header->part_number, 16 + 1); ++ printf("BeagleBone Cape EEPROM: debug part_number field:[%s]\n", process_cape_part_number); ++ ++ //FIXME: some capes end with '.' ++ if ( process_cape_part_number[15] == 0x2E ) { ++ puts("debug: fixup, extra . in eeprom field\n"); ++ process_cape_part_number[15] = 0x00; ++ if ( process_cape_part_number[14] == 0x2E ) { ++ process_cape_part_number[14] = 0x00; ++ } ++ } ++ ++ //Find ending 0x00 or 0xFF ++ puts("BeagleBone Cape EEPROM: debug part_number field HEX:["); ++ end_part_number=16; ++ for ( int i=0; i <= 16; i++ ) { ++ if (( process_cape_part_number[i] == 0x00 ) || ( process_cape_part_number[i] == 0xFF )) { ++ end_part_number=i; ++ i=17; ++ } else { ++ printf("%x", process_cape_part_number[i]); ++ } ++ } ++ puts("]\n"); ++ ++ strncat(cape_overlay_pass_to_kernel, process_cape_part_number, end_part_number); ++ strncat(cape_overlay_pass_to_kernel, ",", 1); ++ //printf("debug: %s\n", cape_overlay_pass_to_kernel); ++ ++ strncat(hash_cape_overlay, process_cape_part_number, end_part_number); ++ strncat(cape_overlay, process_cape_part_number, end_part_number); ++ //printf("debug: %s %s\n", hash_cape_overlay, cape_overlay); ++ ++ strncat(hash_cape_overlay, "-", 1); ++ strncat(cape_overlay, "-", 1); ++ //printf("debug: %s %s\n", hash_cape_overlay, cape_overlay); ++ ++ strlcpy(process_cape_version, cape_header->version, 4 + 1); ++ //printf("debug: version field:[%s]\n", process_cape_version); ++ ++ //Find invalid 0xFF -> 0x30 BBAI FAN Cape... ++ puts("BeagleBone Cape EEPROM: debug version field HEX:["); ++ for ( int i=0; i <= 3; i++ ) { ++ printf("%x", process_cape_version[i]); ++ if ( process_cape_version[i] == 0xFF ) { ++ process_cape_version[i] = 0x30; ++ } ++ } ++ puts("]\n"); ++ ++ strncat(hash_cape_overlay, process_cape_version, 4); ++ strncat(cape_overlay, process_cape_version, 4); ++ //printf("debug: %s %s\n", hash_cape_overlay, cape_overlay); ++ ++ strncat(hash_cape_overlay, ".dtbo", 5); ++ strncat(cape_overlay, ".dtbo", 5); ++ //printf("debug: %s %s\n", hash_cape_overlay, cape_overlay); ++ ++ printf("BeagleBone Cape EEPROM: 0x%x %s\n", addr, cape_overlay); ++ ++ switch(addr) { ++ case CAPE_EEPROM_ADDR0: ++ env_set("uboot_overlay_addr0", cape_overlay); ++ env_set("uboot_detected_capes_addr0", cape_overlay_pass_to_kernel); ++ break; ++ case CAPE_EEPROM_ADDR1: ++ env_set("uboot_overlay_addr1", cape_overlay); ++ env_set("uboot_detected_capes_addr1", cape_overlay_pass_to_kernel); ++ break; ++ case CAPE_EEPROM_ADDR2: ++ env_set("uboot_overlay_addr2", cape_overlay); ++ env_set("uboot_detected_capes_addr2", cape_overlay_pass_to_kernel); ++ break; ++ case CAPE_EEPROM_ADDR3: ++ env_set("uboot_overlay_addr3", cape_overlay); ++ env_set("uboot_detected_capes_addr3", cape_overlay_pass_to_kernel); ++ break; ++ } ++ env_set("uboot_detected_capes", "1"); ++ } else { ++ printf("BeagleBone Cape EEPROM: EEPROM contents not valid (or blank) on address: 0x%x\n", addr); ++ } ++ } ++ } ++ return 0; ++} ++ ++void do_cape_detect(void) ++{ ++ struct am335x_cape_eeprom_id cape_header; ++ ++ probe_cape_eeprom(&cape_header); ++} ++ + static void setup_board_eeprom_env(void) + { + char *name = "beagle_x15"; +@@ -782,8 +943,10 @@ int board_late_init(void) + /* Just probe the potentially supported cdce913 device */ + uclass_get_device(UCLASS_CLK, 0, &dev); + +- if (board_is_bbai()) ++ if (board_is_bbai()) { + env_set("console", "ttyS0,115200n8"); ++ do_cape_detect(); ++ } + + #if !defined(CONFIG_SPL_BUILD) + board_ti_set_ethaddr(2); +diff --git a/configs/am57xx_evm_defconfig b/configs/am57xx_evm_defconfig +index 4da4aaa1c7..ed5b8aec16 100644 +--- a/configs/am57xx_evm_defconfig ++++ b/configs/am57xx_evm_defconfig +@@ -10,16 +10,20 @@ CONFIG_SPL_TEXT_BASE=0x40300000 + CONFIG_OMAP54XX=y + CONFIG_TARGET_AM57XX_EVM=y + CONFIG_SPL=y +-CONFIG_ENV_OFFSET_REDUND=0x280000 + CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI_SUPPORT=y + CONFIG_ARMV7_LPAE=y +-CONFIG_DEFAULT_DEVICE_TREE="am572x-idk" ++CONFIG_DEFAULT_DEVICE_TREE="am57xx-beagle-x15-revc" + CONFIG_AHCI=y + CONFIG_DISTRO_DEFAULTS=y + CONFIG_SPL_LOAD_FIT=y + # CONFIG_USE_SPL_FIT_GENERATOR is not set + CONFIG_OF_BOARD_SETUP=y ++CONFIG_BOOTDELAY=1 ++CONFIG_AUTOBOOT_KEYED=y ++CONFIG_AUTOBOOT_PROMPT="Press SPACE to abort autoboot in %d seconds\n" ++CONFIG_AUTOBOOT_DELAY_STR="d" ++CONFIG_AUTOBOOT_STOP_STR=" " + CONFIG_USE_BOOTARGS=y + CONFIG_BOOTARGS="androidboot.serialno=${serial#} console=ttyS2,115200 androidboot.console=ttyS2 androidboot.hardware=beagle_x15board" + # CONFIG_USE_BOOTCOMMAND is not set +@@ -48,13 +52,12 @@ CONFIG_BOOTP_DNS2=y + CONFIG_CMD_AVB=y + CONFIG_OF_CONTROL=y + CONFIG_SPL_OF_CONTROL=y +-CONFIG_OF_LIST="am57xx-beagle-x15 am57xx-beagle-x15-revb1 am57xx-beagle-x15-revc am5729-beagleboneai am572x-idk am571x-idk am574x-idk" ++CONFIG_OF_LIST="am57xx-beagle-x15 am57xx-beagle-x15-revb1 am57xx-beagle-x15-revc am5729-beagleboneai" + CONFIG_ENV_OVERWRITE=y +-CONFIG_ENV_IS_IN_MMC=y +-CONFIG_SYS_REDUNDAND_ENVIRONMENT=y ++# CONFIG_ENV_IS_IN_FAT is not set + CONFIG_SYS_RELOC_GD_ENV_ADDR=y +-CONFIG_SYS_MMC_ENV_DEV=1 + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y ++# CONFIG_SPL_ENV_IS_NOWHERE is not set + CONFIG_VERSION_VARIABLE=y + CONFIG_BOOTP_SEND_HOSTNAME=y + CONFIG_DM=y +diff --git a/include/configs/ti_armv7_common.h b/include/configs/ti_armv7_common.h +index f13e9e5264..eabd03e27d 100644 +--- a/include/configs/ti_armv7_common.h ++++ b/include/configs/ti_armv7_common.h +@@ -92,6 +92,413 @@ + #define CONFIG_SYS_I2C + #endif + ++#define EEPROM_PROGRAMMING \ ++ "eeprom_dump=i2c dev 0; " \ ++ "i2c md 0x50 0x00.2 20; " \ ++ "\0" \ ++ "eeprom_blank=i2c dev 0; " \ ++ "i2c mw 0x50 0x00.2 ff; " \ ++ "i2c mw 0x50 0x01.2 ff; " \ ++ "i2c mw 0x50 0x02.2 ff; " \ ++ "i2c mw 0x50 0x03.2 ff; " \ ++ "i2c mw 0x50 0x04.2 ff; " \ ++ "i2c mw 0x50 0x05.2 ff; " \ ++ "i2c mw 0x50 0x06.2 ff; " \ ++ "i2c mw 0x50 0x07.2 ff; " \ ++ "i2c mw 0x50 0x08.2 ff; " \ ++ "i2c mw 0x50 0x09.2 ff; " \ ++ "i2c mw 0x50 0x0a.2 ff; " \ ++ "i2c mw 0x50 0x0b.2 ff; " \ ++ "i2c mw 0x50 0x0c.2 ff; " \ ++ "i2c mw 0x50 0x0d.2 ff; " \ ++ "i2c mw 0x50 0x0e.2 ff; " \ ++ "i2c mw 0x50 0x0f.2 ff; " \ ++ "i2c mw 0x50 0x10.2 ff; " \ ++ "i2c mw 0x50 0x11.2 ff; " \ ++ "i2c mw 0x50 0x12.2 ff; " \ ++ "i2c mw 0x50 0x13.2 ff; " \ ++ "i2c mw 0x50 0x14.2 ff; " \ ++ "i2c mw 0x50 0x15.2 ff; " \ ++ "i2c mw 0x50 0x16.2 ff; " \ ++ "i2c mw 0x50 0x17.2 ff; " \ ++ "i2c mw 0x50 0x18.2 ff; " \ ++ "i2c mw 0x50 0x19.2 ff; " \ ++ "i2c mw 0x50 0x1a.2 ff; " \ ++ "i2c mw 0x50 0x1b.2 ff; " \ ++ "i2c mw 0x50 0x1c.2 ff; " \ ++ "i2c mw 0x50 0x1d.2 ff; " \ ++ "i2c mw 0x50 0x1e.2 ff; " \ ++ "i2c mw 0x50 0x1f.2 ff; " \ ++ "i2c md 0x50 0x00.2 20; " \ ++ "\0" \ ++ "eeprom_x15_b1=i2c dev 0; " \ ++ "i2c mw 0x50 0x00.2 aa; " \ ++ "i2c mw 0x50 0x01.2 55; " \ ++ "i2c mw 0x50 0x02.2 33; " \ ++ "i2c mw 0x50 0x03.2 ee; " \ ++ "i2c mw 0x50 0x04.2 42; " \ ++ "i2c mw 0x50 0x05.2 42; " \ ++ "i2c mw 0x50 0x06.2 52; " \ ++ "i2c mw 0x50 0x07.2 44; " \ ++ "i2c mw 0x50 0x08.2 58; " \ ++ "i2c mw 0x50 0x09.2 31; " \ ++ "i2c mw 0x50 0x0a.2 35; " \ ++ "i2c mw 0x50 0x0b.2 5f; " \ ++ "i2c mw 0x50 0x0c.2 42; " \ ++ "i2c mw 0x50 0x0d.2 2e; " \ ++ "i2c mw 0x50 0x0e.2 31; " \ ++ "i2c mw 0x50 0x0f.2 30; " \ ++ "i2c mw 0x50 0x10.2 57; " \ ++ "i2c mw 0x50 0x11.2 57; " \ ++ "i2c mw 0x50 0x12.2 59; " \ ++ "i2c mw 0x50 0x13.2 59; " \ ++ "i2c mw 0x50 0x14.2 34; " \ ++ "i2c mw 0x50 0x15.2 50; " \ ++ "i2c mw 0x50 0x16.2 35; " \ ++ "i2c mw 0x50 0x17.2 35; " \ ++ "i2c mw 0x50 0x18.2 30; " \ ++ "i2c mw 0x50 0x19.2 30; " \ ++ "i2c mw 0x50 0x1a.2 30; " \ ++ "i2c mw 0x50 0x1b.2 30; " \ ++ "i2c mw 0x50 0x1c.2 ff; " \ ++ "i2c mw 0x50 0x1d.2 ff; " \ ++ "i2c mw 0x50 0x1e.2 ff; " \ ++ "i2c mw 0x50 0x1f.2 ff; " \ ++ "i2c md 0x50 0x00.2 20; " \ ++ "\0" \ ++ "eeprom_x15_c=i2c dev 0; " \ ++ "i2c mw 0x50 0x00.2 aa; " \ ++ "i2c mw 0x50 0x01.2 55; " \ ++ "i2c mw 0x50 0x02.2 33; " \ ++ "i2c mw 0x50 0x03.2 ee; " \ ++ "i2c mw 0x50 0x04.2 42; " \ ++ "i2c mw 0x50 0x05.2 42; " \ ++ "i2c mw 0x50 0x06.2 52; " \ ++ "i2c mw 0x50 0x07.2 44; " \ ++ "i2c mw 0x50 0x08.2 58; " \ ++ "i2c mw 0x50 0x09.2 31; " \ ++ "i2c mw 0x50 0x0a.2 35; " \ ++ "i2c mw 0x50 0x0b.2 5f; " \ ++ "i2c mw 0x50 0x0c.2 43; " \ ++ "i2c mw 0x50 0x0d.2 2e; " \ ++ "i2c mw 0x50 0x0e.2 30; " \ ++ "i2c mw 0x50 0x0f.2 30; " \ ++ "i2c mw 0x50 0x10.2 79; " \ ++ "i2c mw 0x50 0x11.2 79; " \ ++ "i2c mw 0x50 0x12.2 77; " \ ++ "i2c mw 0x50 0x13.2 77; " \ ++ "i2c mw 0x50 0x14.2 50; " \ ++ "i2c mw 0x50 0x15.2 58; " \ ++ "i2c mw 0x50 0x16.2 31; " \ ++ "i2c mw 0x50 0x17.2 35; " \ ++ "i2c mw 0x50 0x18.2 6e; " \ ++ "i2c mw 0x50 0x19.2 6e; " \ ++ "i2c mw 0x50 0x1a.2 6e; " \ ++ "i2c mw 0x50 0x1b.2 6e; " \ ++ "i2c mw 0x50 0x1c.2 ff; " \ ++ "i2c mw 0x50 0x1d.2 ff; " \ ++ "i2c mw 0x50 0x1e.2 ff; " \ ++ "i2c mw 0x50 0x1f.2 ff; " \ ++ "i2c md 0x50 0x00.2 20; " \ ++ "eeprom_bbai_a2=i2c dev 0; " \ ++ "i2c mw 0x50 0x00.2 aa; " \ ++ "i2c mw 0x50 0x01.2 55; " \ ++ "i2c mw 0x50 0x02.2 33; " \ ++ "i2c mw 0x50 0x03.2 ee; " \ ++ "i2c mw 0x50 0x04.2 42; " \ ++ "i2c mw 0x50 0x05.2 42; " \ ++ "i2c mw 0x50 0x06.2 4F; " \ ++ "i2c mw 0x50 0x07.2 4E; " \ ++ "i2c mw 0x50 0x08.2 45; " \ ++ "i2c mw 0x50 0x09.2 2D; " \ ++ "i2c mw 0x50 0x0a.2 41; " \ ++ "i2c mw 0x50 0x0b.2 49; " \ ++ "i2c mw 0x50 0x0c.2 30; " \ ++ "i2c mw 0x50 0x0d.2 30; " \ ++ "i2c mw 0x50 0x0e.2 41; " \ ++ "i2c mw 0x50 0x0f.2 32; " \ ++ "i2c mw 0x50 0x10.2 57; " \ ++ "i2c mw 0x50 0x11.2 57; " \ ++ "i2c mw 0x50 0x12.2 59; " \ ++ "i2c mw 0x50 0x13.2 59; " \ ++ "i2c mw 0x50 0x14.2 53; " \ ++ "i2c mw 0x50 0x15.2 42; " \ ++ "i2c mw 0x50 0x16.2 41; " \ ++ "i2c mw 0x50 0x17.2 49; " \ ++ "i2c mw 0x50 0x18.2 30; " \ ++ "i2c mw 0x50 0x19.2 30; " \ ++ "i2c mw 0x50 0x1a.2 30; " \ ++ "i2c mw 0x50 0x1b.2 30; " \ ++ "i2c mw 0x50 0x1c.2 30; " \ ++ "i2c mw 0x50 0x1d.2 30; " \ ++ "i2c mw 0x50 0x1e.2 ff; " \ ++ "i2c mw 0x50 0x1f.2 ff; " \ ++ "i2c md 0x50 0x00.2 20; " \ ++ "\0" \ ++ ++#define EEWIKI_MMC_BOOT \ ++ "mmc_boot=${devtype} dev ${mmcdev}; ${devtype} part; " \ ++ "if ${devtype} rescan; then " \ ++ "echo Scanning ${devtype} device ${mmcdev};" \ ++ "setenv bootpart ${mmcdev}:1; " \ ++ "echo Checking for: /uEnv.txt ...;" \ ++ "if test -e ${devtype} ${bootpart} /uEnv.txt; then " \ ++ "load ${devtype} ${bootpart} ${loadaddr} /uEnv.txt;" \ ++ "env import -t ${loadaddr} ${filesize};" \ ++ "echo Loaded environment from /uEnv.txt;" \ ++ "echo Checking if uenvcmd is set ...;" \ ++ "if test -n ${uenvcmd}; then " \ ++ "echo Running uenvcmd ...;" \ ++ "run uenvcmd;" \ ++ "fi;" \ ++ "fi; " \ ++ "echo Checking for: /boot/uEnv.txt ...;" \ ++ "for i in 1 2 3 4 5 6 7 ; do " \ ++ "setenv mmcpart ${i};" \ ++ "setenv bootpart ${mmcdev}:${mmcpart};" \ ++ "if test -e ${devtype} ${bootpart} /boot/uEnv.txt; then " \ ++ "load ${devtype} ${bootpart} ${loadaddr} /boot/uEnv.txt;" \ ++ "env import -t ${loadaddr} ${filesize};" \ ++ "echo Loaded environment from /boot/uEnv.txt;" \ ++ "if test -n ${dtb}; then " \ ++ "setenv fdtfile ${dtb};" \ ++ "echo debug: [dtb=${fdtfile}] ...;" \ ++ "fi;" \ ++ "echo Checking if uname_r is set in /boot/uEnv.txt ...;" \ ++ "if test -n ${uname_r}; then " \ ++ "echo debug: [uname_r=${uname_r}] ...;" \ ++ "setenv oldroot /dev/mmcblk${mmcdev}p${mmcpart};" \ ++ "run uname_boot;" \ ++ "fi;" \ ++ "fi;" \ ++ "done;" \ ++ "fi;\0" \ ++ ++#define EEWIKI_SCSI_BOOT \ ++ "scsi_boot=${devtype} reset ; " \ ++ "if ${devtype} dev ${mmcdev}; then " \ ++ "echo Scanning ${devtype} device ${mmcdev};" \ ++ "setenv bootpart ${mmcdev}:1; " \ ++ "echo Checking for: /uEnv.txt ...;" \ ++ "if test -e ${devtype} ${bootpart} /uEnv.txt; then " \ ++ "load ${devtype} ${bootpart} ${loadaddr} /uEnv.txt;" \ ++ "env import -t ${loadaddr} ${filesize};" \ ++ "echo Loaded environment from /uEnv.txt;" \ ++ "echo Checking if uenvcmd is set ...;" \ ++ "if test -n ${uenvcmd}; then " \ ++ "echo Running uenvcmd ...;" \ ++ "run uenvcmd;" \ ++ "fi;" \ ++ "fi; " \ ++ "echo Checking for: /boot/uEnv.txt ...;" \ ++ "for i in 1 2 3 4 ; do " \ ++ "setenv mmcpart ${i};" \ ++ "setenv bootpart ${mmcdev}:${mmcpart};" \ ++ "if test -e ${devtype} ${bootpart} /boot/uEnv.txt; then " \ ++ "load ${devtype} ${bootpart} ${loadaddr} /boot/uEnv.txt;" \ ++ "env import -t ${loadaddr} ${filesize};" \ ++ "echo Loaded environment from /boot/uEnv.txt;" \ ++ "if test -n ${dtb}; then " \ ++ "setenv fdtfile ${dtb};" \ ++ "echo debug: [dtb=${fdtfile}] ...;" \ ++ "fi;" \ ++ "echo Checking if uname_r is set in /boot/uEnv.txt ...;" \ ++ "if test -n ${uname_r}; then " \ ++ "echo debug: [uname_r=${uname_r}] ...;" \ ++ "setenv oldroot /dev/sda${mmcpart};" \ ++ "run uname_boot;" \ ++ "fi;" \ ++ "fi;" \ ++ "done;" \ ++ "fi;\0" \ ++ ++#define EEWIKI_USB_BOOT \ ++ "usb_boot=${devtype} reset ; " \ ++ "if ${devtype} dev ${mmcdev}; then " \ ++ "echo Scanning ${devtype} device ${mmcdev};" \ ++ "setenv bootpart ${mmcdev}:1; " \ ++ "echo Checking for: /uEnv.txt ...;" \ ++ "if test -e ${devtype} ${bootpart} /uEnv.txt; then " \ ++ "load ${devtype} ${bootpart} ${loadaddr} /uEnv.txt;" \ ++ "env import -t ${loadaddr} ${filesize};" \ ++ "echo Loaded environment from /uEnv.txt;" \ ++ "echo Checking if uenvcmd is set in /uEnv.txt ...;" \ ++ "if test -n ${uenvcmd}; then " \ ++ "echo Running uenvcmd ...;" \ ++ "run uenvcmd;" \ ++ "fi;" \ ++ "fi; " \ ++ "echo Checking for: /boot/uEnv.txt ...;" \ ++ "for i in 1 2 3 4 ; do " \ ++ "setenv mmcpart ${i};" \ ++ "setenv bootpart ${mmcdev}:${mmcpart};" \ ++ "if test -e ${devtype} ${bootpart} /boot/uEnv.txt; then " \ ++ "load ${devtype} ${bootpart} ${loadaddr} /boot/uEnv.txt;" \ ++ "env import -t ${loadaddr} ${filesize};" \ ++ "echo Loaded environment from /boot/uEnv.txt;" \ ++ "if test -n ${dtb}; then " \ ++ "setenv fdtfile ${dtb};" \ ++ "echo debug: [dtb=${fdtfile}] ...;" \ ++ "fi;" \ ++ "echo Checking if uname_r is set in /boot/uEnv.txt ...;" \ ++ "if test -n ${uname_r}; then " \ ++ "echo debug: [uname_r=${uname_r}] ...;" \ ++ "setenv oldroot /dev/sda${mmcpart};" \ ++ "run uname_boot;" \ ++ "fi;" \ ++ "fi;" \ ++ "done;" \ ++ "fi;\0" \ ++ ++#define EEWIKI_UNAME_BOOT \ ++ "uname_boot="\ ++ "setenv bootdir /boot; " \ ++ "setenv bootfile vmlinuz-${uname_r}; " \ ++ "if test -e ${devtype} ${bootpart} ${bootdir}/${bootfile}; then " \ ++ "echo loading ${bootdir}/${bootfile} ...; "\ ++ "run loadimage;" \ ++ "setenv fdtdir /boot/dtbs/${uname_r}; " \ ++ "if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \ ++ "run loadfdt;" \ ++ "else " \ ++ "setenv fdtdir /usr/lib/linux-image-${uname_r}; " \ ++ "if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \ ++ "run loadfdt;" \ ++ "else " \ ++ "setenv fdtdir /lib/firmware/${uname_r}/device-tree; " \ ++ "if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \ ++ "run loadfdt;" \ ++ "else " \ ++ "setenv fdtdir /boot/dtb-${uname_r}; " \ ++ "if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \ ++ "run loadfdt;" \ ++ "else " \ ++ "setenv fdtdir /boot/dtbs; " \ ++ "if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \ ++ "run loadfdt;" \ ++ "else " \ ++ "setenv fdtdir /boot/dtb; " \ ++ "if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \ ++ "run loadfdt;" \ ++ "else " \ ++ "setenv fdtdir /boot; " \ ++ "if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \ ++ "run loadfdt;" \ ++ "else " \ ++ "echo; echo unable to find ${fdtfile} ...; echo booting legacy ...;"\ ++ "run args_mmc;" \ ++ "echo debug: [${bootargs}] ... ;" \ ++ "echo debug: [bootz ${loadaddr}] ... ;" \ ++ "bootz ${loadaddr}; " \ ++ "fi;" \ ++ "fi;" \ ++ "fi;" \ ++ "fi;" \ ++ "fi;" \ ++ "fi;" \ ++ "fi; " \ ++ "if test -n ${enable_uboot_overlays}; then " \ ++ "setenv fdt_buffer 0x60000;" \ ++ "if test -n ${uboot_fdt_buffer}; then " \ ++ "setenv fdt_buffer ${uboot_fdt_buffer};" \ ++ "fi;" \ ++ "echo uboot_overlays: [fdt_buffer=${fdt_buffer}] ... ;" \ ++ "if test -n ${uboot_overlay_addr0}; then " \ ++ "if test -n ${disable_uboot_overlay_addr0}; then " \ ++ "echo uboot_overlays: uboot loading of [${uboot_overlay_addr0}] disabled by /boot/uEnv.txt [disable_uboot_overlay_addr0=1]...;" \ ++ "else " \ ++ "setenv uboot_overlay ${uboot_overlay_addr0}; " \ ++ "run virtualloadoverlay;" \ ++ "fi;" \ ++ "fi;" \ ++ "if test -n ${uboot_overlay_addr1}; then " \ ++ "if test -n ${disable_uboot_overlay_addr1}; then " \ ++ "echo uboot_overlays: uboot loading of [${uboot_overlay_addr1}] disabled by /boot/uEnv.txt [disable_uboot_overlay_addr1=1]...;" \ ++ "else " \ ++ "setenv uboot_overlay ${uboot_overlay_addr1}; " \ ++ "run virtualloadoverlay;" \ ++ "fi;" \ ++ "fi;" \ ++ "if test -n ${uboot_overlay_addr2}; then " \ ++ "if test -n ${disable_uboot_overlay_addr2}; then " \ ++ "echo uboot_overlays: uboot loading of [${uboot_overlay_addr2}] disabled by /boot/uEnv.txt [disable_uboot_overlay_addr2=1]...;" \ ++ "else " \ ++ "setenv uboot_overlay ${uboot_overlay_addr2}; " \ ++ "run virtualloadoverlay;" \ ++ "fi;" \ ++ "fi;" \ ++ "if test -n ${uboot_overlay_addr3}; then " \ ++ "if test -n ${disable_uboot_overlay_addr3}; then " \ ++ "echo uboot_overlays: uboot loading of [${uboot_overlay_addr3}] disabled by /boot/uEnv.txt [disable_uboot_overlay_addr3=1]...;" \ ++ "else " \ ++ "setenv uboot_overlay ${uboot_overlay_addr3}; " \ ++ "run virtualloadoverlay;" \ ++ "fi;" \ ++ "fi;" \ ++ "if test -n ${uboot_overlay_addr4}; then " \ ++ "setenv uboot_overlay ${uboot_overlay_addr4}; " \ ++ "run virtualloadoverlay;" \ ++ "fi;" \ ++ "if test -n ${uboot_overlay_addr5}; then " \ ++ "setenv uboot_overlay ${uboot_overlay_addr5}; " \ ++ "run virtualloadoverlay;" \ ++ "fi;" \ ++ "if test -n ${uboot_overlay_addr6}; then " \ ++ "setenv uboot_overlay ${uboot_overlay_addr6}; " \ ++ "run virtualloadoverlay;" \ ++ "fi;" \ ++ "if test -n ${uboot_overlay_addr7}; then " \ ++ "setenv uboot_overlay ${uboot_overlay_addr7}; " \ ++ "run virtualloadoverlay;" \ ++ "fi;" \ ++ "if test -n ${uboot_overlay_pru}; then " \ ++ "setenv uboot_overlay ${uboot_overlay_pru}; " \ ++ "run virtualloadoverlay;" \ ++ "fi;" \ ++ "else " \ ++ "echo uboot_overlays: add [enable_uboot_overlays=1] to /boot/uEnv.txt to enable...;" \ ++ "fi;" \ ++ "setenv rdfile initrd.img-${uname_r}; " \ ++ "if test -e ${devtype} ${bootpart} ${bootdir}/${rdfile}; then " \ ++ "echo loading ${bootdir}/${rdfile} ...; "\ ++ "run loadrd;" \ ++ "if test -n ${netinstall_enable}; then " \ ++ "run args_netinstall; run message;" \ ++ "echo debug: [${bootargs}] ... ;" \ ++ "echo debug: [bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}] ... ;" \ ++ "bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \ ++ "fi;" \ ++ "if test -n ${uenv_root}; then " \ ++ "run args_uenv_root;" \ ++ "echo debug: [${bootargs}] ... ;" \ ++ "echo debug: [bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}] ... ;" \ ++ "bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \ ++ "fi;" \ ++ "if test -n ${uuid}; then " \ ++ "run args_mmc_uuid;" \ ++ "echo debug: [${bootargs}] ... ;" \ ++ "echo debug: [bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}] ... ;" \ ++ "bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \ ++ "else " \ ++ "run args_mmc_old;" \ ++ "echo debug: [${bootargs}] ... ;" \ ++ "echo debug: [bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}] ... ;" \ ++ "bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \ ++ "fi;" \ ++ "else " \ ++ "if test -n ${uenv_root}; then " \ ++ "run args_uenv_root;" \ ++ "echo debug: [${bootargs}] ... ;" \ ++ "echo debug: [bootz ${loadaddr} - ${fdtaddr}] ... ;" \ ++ "bootz ${loadaddr} - ${fdtaddr}; " \ ++ "fi;" \ ++ "run args_mmc_old;" \ ++ "echo debug: [${bootargs}] ... ;" \ ++ "echo debug: [bootz ${loadaddr} - ${fdtaddr}] ... ;" \ ++ "bootz ${loadaddr} - ${fdtaddr}; " \ ++ "fi;" \ ++ "fi;\0" \ ++ + /* + * The following are general good-enough settings for U-Boot. We set a + * large malloc pool as we generally have a lot of DDR, and we opt for +diff --git a/include/configs/ti_omap5_common.h b/include/configs/ti_omap5_common.h +index de0a6af2fd..0cd2ccea03 100644 +--- a/include/configs/ti_omap5_common.h ++++ b/include/configs/ti_omap5_common.h +@@ -64,6 +64,11 @@ + DEFAULT_FIT_TI_ARGS \ + DEFAULT_COMMON_BOOT_TI_ARGS \ + DEFAULT_FDT_TI_ARGS \ ++ EEWIKI_USB_BOOT \ ++ EEWIKI_SCSI_BOOT \ ++ EEWIKI_MMC_BOOT \ ++ EEWIKI_UNAME_BOOT \ ++ EEPROM_PROGRAMMING \ + DFUARGS \ + NETARGS \ + NANDARGS \ +diff --git a/include/environment/ti/boot.h b/include/environment/ti/boot.h +index a9d8f28d46..1480b6e3df 100644 +--- a/include/environment/ti/boot.h ++++ b/include/environment/ti/boot.h +@@ -132,6 +132,7 @@ + "bootpart=0:2\0" \ + "bootdir=/boot\0" \ + "bootfile=zImage\0" \ ++ "board_eeprom_header=undefined\0" \ + "usbtty=cdc_acm\0" \ + "vram=16M\0" \ + AVB_VERIFY_CMD \ +@@ -183,7 +184,14 @@ + "else " \ + "echo $apart partition not found; " \ + "exit; " \ +- "fi;\0" ++ "fi;\0 " \ ++ "read_board_eeprom=" \ ++ "if test $board_eeprom_header = beagle_x15_revb1_blank; then " \ ++ "run eeprom_dump; run eeprom_x15_b1; reset; fi; " \ ++ "if test $board_eeprom_header = beagle_x15_revc_blank; then " \ ++ "run eeprom_dump; run eeprom_x15_c; reset; fi; " \ ++ "if test $board_eeprom_header = bbai_a2_blank; then " \ ++ "run eeprom_dump; run eeprom_bbai_a2; reset; fi; \0 " + + #ifdef CONFIG_OMAP54XX + +@@ -223,19 +231,17 @@ + "echo WARNING: Could not determine device tree to use; fi; \0" + + #define CONFIG_BOOTCOMMAND \ +- "if test ${dofastboot} -eq 1; then " \ +- "echo Boot fastboot requested, resetting dofastboot ...;" \ +- "setenv dofastboot 0; saveenv;" \ +- FASTBOOT_CMD \ +- "fi;" \ +- "if test ${boot_fit} -eq 1; then " \ +- "run update_to_fit;" \ +- "fi;" \ ++ "run read_board_eeprom; " \ + "run findfdt; " \ +- "run envboot; " \ +- "run mmcboot;" \ +- "run emmc_linux_boot; " \ +- "run emmc_android_boot; " \ ++ "setenv mmcdev 0; " \ ++ "setenv devtype usb; " \ ++ "echo usb_boot is currently disabled;" \ ++ "setenv devtype scsi; " \ ++ "echo scsi_boot is currently disabled;" \ ++ "setenv devtype mmc; " \ ++ "run mmc_boot;" \ ++ "setenv mmcdev 1; " \ ++ "run mmc_boot;" \ + "" + + #endif /* CONFIG_OMAP54XX */ +diff --git a/include/environment/ti/mmc.h b/include/environment/ti/mmc.h +index b86c8dc7a4..0ec09f279a 100644 +--- a/include/environment/ti/mmc.h ++++ b/include/environment/ti/mmc.h +@@ -11,11 +11,31 @@ + #define DEFAULT_MMC_TI_ARGS \ + "mmcdev=0\0" \ + "mmcrootfstype=ext4 rootwait\0" \ +- "finduuid=part uuid mmc ${bootpart} uuid\0" \ ++ "finduuid=part uuid ${devtype} ${bootpart} uuid\0" \ + "args_mmc=run finduuid;setenv bootargs console=${console} " \ + "${optargs} " \ +- "root=PARTUUID=${uuid} rw " \ +- "rootfstype=${mmcrootfstype}\0" \ ++ "root=PARTUUID=${uuid} ro " \ ++ "rootfstype=${mmcrootfstype} " \ ++ "${cmdline}\0" \ ++ "args_mmc_old=setenv bootargs console=${console} " \ ++ "${optargs} " \ ++ "root=${oldroot} ro " \ ++ "rootfstype=${mmcrootfstype} " \ ++ "${cmdline}\0" \ ++ "args_mmc_uuid=setenv bootargs console=${console} " \ ++ "${optargs} " \ ++ "root=UUID=${uuid} ro " \ ++ "rootfstype=${mmcrootfstype} " \ ++ "${cmdline}\0" \ ++ "args_uenv_root=setenv bootargs console=${console} " \ ++ "${optargs} " \ ++ "root=${uenv_root} ro " \ ++ "rootfstype=${mmcrootfstype} " \ ++ "${musb} ${cmdline}\0" \ ++ "args_netinstall=setenv bootargs ${netinstall_bootargs} " \ ++ "${optargs} " \ ++ "root=/dev/ram rw " \ ++ "${cmdline}\0" \ + "loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr\0" \ + "bootscript=echo Running bootscript from mmc${mmcdev} ...; " \ + "source ${loadaddr}\0" \ +@@ -24,7 +44,28 @@ + "env import -t ${loadaddr} ${filesize}\0" \ + "loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}\0" \ + "loadimage=load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \ +- "loadfdt=load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \ ++ "loadrd=load ${devtype} ${bootpart} ${rdaddr} ${bootdir}/${rdfile}; setenv rdsize ${filesize}\0" \ ++ "loadfdt=echo loading ${fdtdir}/${fdtfile} ...; load ${devtype} ${bootpart} ${fdtaddr} ${fdtdir}/${fdtfile}\0" \ ++ "loadoverlay=echo uboot_overlays: loading ${actual_uboot_overlay} ...; " \ ++ "load ${devtype} ${bootpart} ${rdaddr} ${actual_uboot_overlay}; " \ ++ "fdt addr ${fdtaddr}; fdt resize ${fdt_buffer}; " \ ++ "fdt apply ${rdaddr}; fdt resize ${fdt_buffer};\0" \ ++ "virtualloadoverlay=if test -e ${devtype} ${bootpart} ${fdtdir}/overlays/${uboot_overlay}; then " \ ++ "setenv actual_uboot_overlay ${fdtdir}/overlays/${uboot_overlay}; " \ ++ "run loadoverlay;" \ ++ "else " \ ++ "if test -e ${devtype} ${bootpart} /lib/firmware/${uboot_overlay}; then " \ ++ "setenv actual_uboot_overlay /lib/firmware/${uboot_overlay}; " \ ++ "run loadoverlay;" \ ++ "else " \ ++ "if test -e ${devtype} ${bootpart} ${uboot_overlay}; then " \ ++ "setenv actual_uboot_overlay ${uboot_overlay}; " \ ++ "run loadoverlay;" \ ++ "else " \ ++ "echo uboot_overlays: unable to find [${devtype} ${bootpart} ${uboot_overlay}]...;" \ ++ "fi;" \ ++ "fi;" \ ++ "fi;\0" \ + "envboot=mmc dev ${mmcdev}; " \ + "if mmc rescan; then " \ + "echo SD/MMC found on device ${mmcdev};" \ +-- +2.20.1 + diff --git a/board/beagleboard/beagleboneai/patches/uboot/uboot.hash b/board/beagleboard/beagleboneai/patches/uboot/uboot.hash new file mode 100644 index 00000000..4b82872f --- /dev/null +++ b/board/beagleboard/beagleboneai/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 0d438b1bb5cceb57a18ea2de4a0d51f7be5b05b98717df05938636e0aadfe11a u-boot-2021.04.tar.bz2 diff --git a/board/beagleboard/beagleboneai/post-build.sh b/board/beagleboard/beagleboneai/post-build.sh new file mode 100755 index 00000000..384b4d87 --- /dev/null +++ b/board/beagleboard/beagleboneai/post-build.sh @@ -0,0 +1,4 @@ +#!/bin/sh +BOARD_DIR="$(dirname $0)" + +cp board/beagleboard/beagleboneai/uEnv.txt $BINARIES_DIR/uEnv.txt diff --git a/board/beagleboard/beagleboneai/readme.txt b/board/beagleboard/beagleboneai/readme.txt new file mode 100644 index 00000000..f4c798f5 --- /dev/null +++ b/board/beagleboard/beagleboneai/readme.txt @@ -0,0 +1,28 @@ +Intro +===== + +This configuration will build a basic image for the BeagleBoard.org +BeagleBone AI. For more details about the board, visit: + +https://beagleboard.org/ai + +How to build it +=============== + +Configure Buildroot: + + $ make beagleboneai_defconfig + +Compile everything and build the USB flash drive 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/board/beagleboard/beagleboneai/uEnv.txt b/board/beagleboard/beagleboneai/uEnv.txt new file mode 100644 index 00000000..d38df772 --- /dev/null +++ b/board/beagleboard/beagleboneai/uEnv.txt @@ -0,0 +1,6 @@ +bootpart=0:1 +bootdir=/ +bootargs=console=ttyS0,115200n8 root=/dev/mmcblk0p2 ro rootwait +devtype=mmc +fdtfile=am5729-beagleboneai.dtb +uenvcmd=run loadimage; run loadfdt; printenv bootargs; bootz ${loadaddr} - ${fdtaddr} diff --git a/board/beagleboard/beagleboneai64/extlinux.conf b/board/beagleboard/beagleboneai64/extlinux.conf new file mode 100644 index 00000000..582d510b --- /dev/null +++ b/board/beagleboard/beagleboneai64/extlinux.conf @@ -0,0 +1,5 @@ +default buildroot +label buildroot + kernel /Image + devicetreedir / +append root=/dev/mmcblk1p2 rootwait rw console=ttyS2,115200n8 diff --git a/board/beagleboard/beagleboneai64/genimage.cfg b/board/beagleboard/beagleboneai64/genimage.cfg new file mode 100644 index 00000000..b5ba2d21 --- /dev/null +++ b/board/beagleboard/beagleboneai64/genimage.cfg @@ -0,0 +1,33 @@ +image boot.vfat { + vfat { + files = { + "sysfw.itb", + "tiboot3.bin", + "tispl.bin", + "u-boot.img", + "Image", + "ti", + "extlinux", + } + + label = "boot" + } + + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/beagleboard/beagleboneai64/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/beagleboard/beagleboneai64/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 00000000..6f02bfbb --- /dev/null +++ b/board/beagleboard/beagleboneai64/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 7efa89e1b4e4106ee05d68e876c8efbb146364d89cfd5d26bf4647b09c08f32b arm-trusted-firmware-v2.10-git4.tar.gz diff --git a/board/beagleboard/beagleboneai64/patches/linux-headers/linux-headers.hash b/board/beagleboard/beagleboneai64/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/beagleboard/beagleboneai64/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/beagleboard/beagleboneai64/patches/linux/linux.hash b/board/beagleboard/beagleboneai64/patches/linux/linux.hash new file mode 100644 index 00000000..4b20a009 --- /dev/null +++ b/board/beagleboard/beagleboneai64/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b66a5b863b0f8669448b74ca83bd641a856f164b29956e539bbcb5fdeeab9cc6 linux-6.6.30.tar.xz diff --git a/board/beagleboard/beagleboneai64/patches/ti-k3-r5-loader/ti-k3-r5-loader.hash b/board/beagleboard/beagleboneai64/patches/ti-k3-r5-loader/ti-k3-r5-loader.hash new file mode 100644 index 00000000..97a2b4ea --- /dev/null +++ b/board/beagleboard/beagleboneai64/patches/ti-k3-r5-loader/ti-k3-r5-loader.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/board/beagleboard/beagleboneai64/patches/uboot/uboot.hash b/board/beagleboard/beagleboneai64/patches/uboot/uboot.hash new file mode 100644 index 00000000..97a2b4ea --- /dev/null +++ b/board/beagleboard/beagleboneai64/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/board/beagleboard/beagleboneai64/post-build.sh b/board/beagleboard/beagleboneai64/post-build.sh new file mode 100755 index 00000000..2315ff39 --- /dev/null +++ b/board/beagleboard/beagleboneai64/post-build.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +BOARD_DIR="$(dirname "$0")" + +ln -sf tispl.bin_unsigned "$BINARIES_DIR"/tispl.bin + +install -m 0644 -D "$BOARD_DIR"/extlinux.conf "$BINARIES_DIR"/extlinux/extlinux.conf diff --git a/board/beagleboard/beagleboneai64/readme.txt b/board/beagleboard/beagleboneai64/readme.txt new file mode 100644 index 00000000..fa4e189c --- /dev/null +++ b/board/beagleboard/beagleboneai64/readme.txt @@ -0,0 +1,39 @@ +BeagleBoard.org BeagleBone AI-64 Development Board + +Description +=========== + +This configuration will build a basic image for the BeagleBoard.org +BeagleBone AI-64. For more details about the board, visit: + +https://www.beagleboard.org/boards/beaglebone-ai-64 + +How to Build +============ + +Select the default configuration for the target: + +$ make beagleboneai64_defconfig + +Optional: modify the configuration: + +$ make menuconfig + +Build: + +$ make + +To copy the resultimg output image file to an SD card use dd: + +$ dd if=output/images/sdcard.img of=/dev/sdX bs=1M + +How to Run +========== + +Insert the SD card into the BeagleBone AI-64 board, and power it up +through the USB Type-C connector. The system should come up (make sure +to boot from the SD card not from the eMMC). You can use a USB to +serial adapter to connect to the connector labeled UART0 (J3) to +communicate with the board. + +https://docs.beagleboard.org/latest/boards/beaglebone/ai-64/02-quick-start.html diff --git a/board/beagleboard/beagleplay/extlinux.conf b/board/beagleboard/beagleplay/extlinux.conf new file mode 100644 index 00000000..2b3aa734 --- /dev/null +++ b/board/beagleboard/beagleplay/extlinux.conf @@ -0,0 +1,5 @@ +label beagleplay-buildroot + kernel /Image + fdtdir / + devicetree /k3-am625-beagleplay.dtb + append console=ttyS2,115200n8 root=/dev/mmcblk1p2 rw rootfstype=ext4 rootwait earlycon=ns16550a,mmio32,0x02800000 diff --git a/board/beagleboard/beagleplay/genimage.cfg b/board/beagleboard/beagleplay/genimage.cfg new file mode 100644 index 00000000..4b516dc7 --- /dev/null +++ b/board/beagleboard/beagleplay/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "Image", + "k3-am625-beagleplay.dtb", + "tiboot3.bin", + } + + file tispl.bin { + image = tispl.bin_unsigned + } + + file u-boot.img { + image = u-boot.img_unsigned + } + + file extlinux/extlinux.conf { + image = extlinux.conf + } + } + + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/beagleboard/beagleplay/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/beagleboard/beagleplay/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 00000000..6f02bfbb --- /dev/null +++ b/board/beagleboard/beagleplay/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 7efa89e1b4e4106ee05d68e876c8efbb146364d89cfd5d26bf4647b09c08f32b arm-trusted-firmware-v2.10-git4.tar.gz diff --git a/board/beagleboard/beagleplay/patches/linux-headers/linux-headers.hash b/board/beagleboard/beagleplay/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/beagleboard/beagleplay/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/beagleboard/beagleplay/patches/linux/linux.hash b/board/beagleboard/beagleplay/patches/linux/linux.hash new file mode 100644 index 00000000..a53ec1f4 --- /dev/null +++ b/board/beagleboard/beagleplay/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 24fa01fb989c7a3e28453f117799168713766e119c5381dac30115f18f268149 linux-6.9.tar.xz diff --git a/board/beagleboard/beagleplay/patches/ti-k3-r5-loader/ti-k3-r5-loader.hash b/board/beagleboard/beagleplay/patches/ti-k3-r5-loader/ti-k3-r5-loader.hash new file mode 100644 index 00000000..97a2b4ea --- /dev/null +++ b/board/beagleboard/beagleplay/patches/ti-k3-r5-loader/ti-k3-r5-loader.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/board/beagleboard/beagleplay/patches/uboot/uboot.hash b/board/beagleboard/beagleplay/patches/uboot/uboot.hash new file mode 100644 index 00000000..97a2b4ea --- /dev/null +++ b/board/beagleboard/beagleplay/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/board/beagleboard/beagleplay/post-build.sh b/board/beagleboard/beagleplay/post-build.sh new file mode 100755 index 00000000..f11dc6c3 --- /dev/null +++ b/board/beagleboard/beagleplay/post-build.sh @@ -0,0 +1,5 @@ +#!/bin/sh -x + +BOARD_DIR="$(dirname "$0")" + +install -m 0644 -D "$BOARD_DIR"/extlinux.conf "$BINARIES_DIR"/extlinux.conf diff --git a/board/beagleboard/beagleplay/readme.txt b/board/beagleboard/beagleplay/readme.txt new file mode 100644 index 00000000..eed87e6d --- /dev/null +++ b/board/beagleboard/beagleplay/readme.txt @@ -0,0 +1,39 @@ +BeagleBoard's BeaglePlay + +Description +=========== + +This configuration will build a complete image for the BeaglePlay +board: https://www.beagleboard.org/boards/beagleplay + +How to Build +============ + +Select the default configuration for the target: + + $ make beagleplay_defconfig + +Optional: modify the configuration: + + $ make menuconfig + +NOTE: The AM625x processor has multiple security variants. You must +ensure the matching tiboot3.bin is uses or the board will not boot. +The BeaglePlay uses the General Purpose (GP) variant, ensure you use +the tiboot3-am62x-gp-evm.bin + +Build: + + $ make + +To copy the resultimg output image file to an SD card use dd: + + $ dd if=output/images/sdcard.img of=/dev/sdX bs=1M + +How to Run +========== + +This configuration has both the boot/ and root/ partitions which is +capable of booting from the bootloaders embedded in the eMMC as well +as when using holding the USR button to boot from the SD card. + diff --git a/board/beagleboard/beaglev_fire/README.txt b/board/beagleboard/beaglev_fire/README.txt new file mode 100644 index 00000000..c9a824b6 --- /dev/null +++ b/board/beagleboard/beaglev_fire/README.txt @@ -0,0 +1,134 @@ +Beagle-V Fire +============== + +BeagleV Fire is a low-cost RISC-V 64-bit based platform, powered by +Microchip's PolarFire SoC. This file describes how to use the +pre-defined Buildroot configuration for the Beagle-V Fire board. + +Further information about the Beagle-V Fire can be found at +https://docs.beagleboard.org/latest/boards/beaglev/fire/index.html. + + +Building +======== + +Configure Buildroot using the default board configuration: + + '$ make beaglev_fire_defconfig' + +Customise the build as necessary: + + '$ make menuconfig' + +Start the build: + + '$ make' + + +Result of the build +=================== + +Once the build has finished you will have the following files: + + output/images/ + +-- boot.scr + +-- boot.vfat + +-- Image + +-- Image.gz + +-- beaglev_fire.itb + +-- beaglev_fire.its + +-- mpfs-beaglev-fire.dtb + +-- payload.bin + +-- rootfs.ext2 + +-- rootfs.ext4 + +-- rootfs.tar + +-- sdcard.img + +-- u-boot.bin + + +Flashing the image to your eMMC +=============================== + +By default Buildroot builds an image suitable for the eMMC. The first partition +of this image contains a U-Boot binary, embedded in a Hart Software Services +(HSS) payload. The second partition contains a FAT filesystem with a U-Boot env +and an ITB file containing the kernel and the device tree. The third partition +contains the file system. This image can be written directly to the eMMC. + +To do so, follow the below steps: + +1. Connect to BeagleV-Fire UART debug port using a 3.3v USB to UART bridge. + +2. Now you can run `tio ` in a terminal window to access the UART debug +port connection. + e.g `tio /dev/ttyUSB4` + +3. Once you are connected properly, you can press the Reset button which will +show you a progress bar. + +4. Press any key in the terminal application to stop the HSS from booting. This +will give you access to the HSS command line interface and a ">>" for input +will be displayed in the terminal. + +5. Type `usbdmsc` in the HSS command line interface. The HSS `usbdmsc` command +exposes the eMMC as a USB mass storage device using the USB type C connector. +If successful, a message saying "USB Host connected" will be displayed. + +6. The eMMC should now appear as mass storage device/drive on your host PC, as +it is mounted through your USB type C connector. + +7. Now, all you need to do is dd the image to the eMMC, which can be done with +the following command on your development host: + + '$ sudo dd if=output/images/sdcard.img of=/dev/sdX bs=1M' + +You will have to replace /dev/sdX by the actual device name of your eMMC. +Please, be especially cautious not to overwrite the wrong drive as this cannot +be undone. + +8. Once the image transfer has completed you can type `CTRL+C` to disconnect +your device. + +9. Finally, type `boot` or reset your board to boot your new Linux image. + +Customize BeagleV-Fire Cape Gateware Using Verilog (Optional) +============================================================= + +To customize your Beagle-V Fire gateware please follow the guide below to +create your custom bitstream (steps 1 - 6): +https://docs.beagleboard.org/latest/boards/beaglev/fire/demos-and-tutorials/gateware/customize-cape-gateware-verilog.html + + + Program BeagleV-Fire With Your Custom Bitstream with Buildroot + ============================================================== + + After following the steps 1-6 from the above tutorial, you should now have a + artifacts.zip file on your local host. + + Unzip the downloaded artifacts.zip file. + + Go to the custom FPGA design directory: + 'cd artifacts/bitstreams/my_custom_fpga_design' + + On your Linux host development computer, copy the bitstream to BeagleV-Fire + board, replacing with the path to your BeagleV-Fire root file + system. + 'cp -r ./LinuxProgramming /path/to/your/buildroot/board/beagleboard/beaglev_fire/rootfs-overlay/etc/' + + To apply these changes to your image, make sure to re-build it with: + `make` + + Then, re-flash your image - to ensure you have the necessary firmware files - by + following the above section "Flashing the image to your eMMC". + + On BeagleV-Fire, + 1. Make your update gateware script executable + 'chmod +x /usr/share/microchip/update-gateware.sh' + 2. Create a firmware directory + 'mkdir /lib/firmware' + 3. Change to the directory of your gateware script + `cd /usr/share/microchip/` + 3. initiate the reprogramming of the FPGA with your gateware bitstream: + './update-gateware.sh /etc/LinuxProgramming/' + + Wait for a couple of minutes for the BeagleV-Fire to reprogram itself. diff --git a/board/beagleboard/beaglev_fire/beaglev_fire.its b/board/beagleboard/beaglev_fire/beaglev_fire.its new file mode 100644 index 00000000..97c878c1 --- /dev/null +++ b/board/beagleboard/beaglev_fire/beaglev_fire.its @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Flattened Image Tree file for BVF + * + * Copyright (C) 2024 Microchip Technology Inc. and its subsidiaries. + * + */ + +/dts-v1/; + +/ { + description = "U-Boot fitImage for the BeagleV-Fire"; + #address-cells = <2>; + + images { + kernel { + description = "Linux kernel"; + data = /incbin/("./Image.gz"); + type = "kernel"; + arch = "riscv"; + os = "linux"; + compression = "gzip"; + load = <0x80200000>; + entry = <0x80200000>; + hash-1 { + algo = "sha256"; + }; + }; + base_fdt { + description = "Flattened Device Tree blob"; + data = /incbin/("./mpfs-beaglev-fire.dtb"); + type = "flat_dt"; + arch = "riscv"; + compression = "none"; + load = <0x8a000000>; + hash-1 { + algo = "sha256"; + }; + }; + }; + + configurations { + default = "kernel_dtb"; + kernel_dtb { + description = "1 Linux kernel, FDT blob"; + kernel = "kernel"; + fdt = "base_fdt"; + }; + + base_dtb { + description = "Base FDT blob for BeagleV-Fire board"; + fdt = "base_fdt"; + }; + }; +}; diff --git a/board/beagleboard/beaglev_fire/boot.cmd b/board/beagleboard/beaglev_fire/boot.cmd new file mode 100644 index 00000000..05f4858b --- /dev/null +++ b/board/beagleboard/beaglev_fire/boot.cmd @@ -0,0 +1,15 @@ +# this assumes ${scriptaddr} is already set!! + +# Try to boot a fitImage from eMMC/SD + +setenv fdt_high 0xffffffffffffffff +setenv initrd_high 0xffffffffffffffff + +load mmc 0:${distro_bootpart} ${scriptaddr} beaglev_fire.itb; +bootm start ${scriptaddr}#kernel_dtb; +bootm loados ${scriptaddr}; +# Try to load a ramdisk if available inside fitImage +bootm ramdisk; +bootm prep; +fdt set /soc/ethernet@20110000 mac-address ${beaglevfire_mac_addr0}; +bootm go; diff --git a/board/beagleboard/beaglev_fire/config.yaml b/board/beagleboard/beaglev_fire/config.yaml new file mode 100644 index 00000000..5fccdfd3 --- /dev/null +++ b/board/beagleboard/beaglev_fire/config.yaml @@ -0,0 +1,28 @@ +# +# HSS Payload Generator - buildroot configuration file +# + +# First, we can optionally set a name for our image, otherwise one will be created dynamically +set-name: 'PolarFire-SoC-HSS::U-Boot' + +# +# Next, we'll define the entry point addresses for each hart, as follows: +# +hart-entry-points: {u54_1: '0x80200000', u54_2: '0x80200000', u54_3: '0x80200000', u54_4: '0x80200000'} +# +# Finally, we'll define a payloads (source binary file) that will be placed at certain regions in memory +# The payload section is defined with the keyword payloads, and then a number of individual +# payload descriptors. +# +# Each payload has a name (path to its ELF/bin file), an owner-hart, and optionally 1-3 secondary-harts. +# +# Additionally, it has a privilege mode in which it will start execution. +# * Valid privilege modes are PRV_M, PRV_S and PRV_U. +# +# +# In this case, the only payload is the u-boot s-mode binary. +# +# Case only matters for the ELF path names, not the keywords. +# +payloads: + u-boot.bin: {exec-addr: '0x80200000', owner-hart: u54_1, secondary-hart: u54_2, secondary-hart: u54_3, secondary-hart: u54_4, priv-mode: prv_s} diff --git a/board/beagleboard/beaglev_fire/genimage.cfg b/board/beagleboard/beaglev_fire/genimage.cfg new file mode 100644 index 00000000..ef650704 --- /dev/null +++ b/board/beagleboard/beaglev_fire/genimage.cfg @@ -0,0 +1,35 @@ +# Image for eMMC boot on the Microchip PolarFire SOC BeagleV-Fire Board +# +image boot.vfat { + vfat { + files = { + "beaglev_fire.itb", + } + + file boot.scr { + image = "boot.scr" + } + } + size = 60M +} + +image sdcard.img { + hdimage { + partition-table-type = "gpt" + } + + partition uboot { + partition-type-uuid = 21686148-6449-6E6F-744E-656564454649 + image = "payload.bin" + } + + partition kernel { + partition-type-uuid = 0FC63DAF-8483-4772-8E79-3D69D8477DE4 + bootable = "true" + image = "boot.vfat" + } + + partition root { + image = "rootfs.ext4" + } +} diff --git a/board/beagleboard/beaglev_fire/patches/linux-headers/linux-headers.hash b/board/beagleboard/beaglev_fire/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/beagleboard/beaglev_fire/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/beagleboard/beaglev_fire/patches/linux/linux.hash b/board/beagleboard/beaglev_fire/patches/linux/linux.hash new file mode 100644 index 00000000..416a8b15 --- /dev/null +++ b/board/beagleboard/beaglev_fire/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 dcb7b41fd363729675c34545fcb514d5a94dbb3714ee10f527a26ca7716c2579 linux-linux4microchip+fpga-2024.06.tar.gz diff --git a/board/beagleboard/beaglev_fire/patches/uboot/uboot.hash b/board/beagleboard/beaglev_fire/patches/uboot/uboot.hash new file mode 100644 index 00000000..2628d4b4 --- /dev/null +++ b/board/beagleboard/beaglev_fire/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 d461c45a9c5acd019776cdcf8ab2b571315282a880dd6580431f7dd5bfac3889 uboot-linux4microchip+fpga-2024.06.tar.gz diff --git a/board/beagleboard/beaglev_fire/post-image.sh b/board/beagleboard/beaglev_fire/post-image.sh new file mode 100755 index 00000000..43be1356 --- /dev/null +++ b/board/beagleboard/beaglev_fire/post-image.sh @@ -0,0 +1,14 @@ +#!/bin/bash +set -e + +HSS_PAYLOAD_GENERATOR="${HOST_DIR}"/bin/hss-payload-generator +MKIMAGE="${HOST_DIR}"/bin/mkimage +BOARD_DIR="$(pwd)"/"${0%/*}" + +pushd "${BINARIES_DIR}" +"${HSS_PAYLOAD_GENERATOR}" -c "${BOARD_DIR}"/config.yaml payload.bin +cp "${BOARD_DIR}"/beaglev_fire.its "${BINARIES_DIR}"/beaglev_fire.its +gzip -9 Image -c > Image.gz +"${MKIMAGE}" -f beaglev_fire.its beaglev_fire.itb +popd +support/scripts/genimage.sh -c "${BOARD_DIR}"/genimage.cfg diff --git a/board/beagleboard/beaglev_fire/rootfs-overlay/usr/share/microchip/update-gateware.sh b/board/beagleboard/beaglev_fire/rootfs-overlay/usr/share/microchip/update-gateware.sh new file mode 100644 index 00000000..f455037b --- /dev/null +++ b/board/beagleboard/beaglev_fire/rootfs-overlay/usr/share/microchip/update-gateware.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +if [ ! -e "$1"/mpfs_bitstream.spi ]; then + echo "No gateware file found." + exit 1 +fi + +if [ ! -d /lib/firmware ] +then + mkdir /lib/firmware +fi + +cp "$1"/mpfs_dtbo.spi /lib/firmware/mpfs_dtbo.spi +cp "$1"/mpfs_bitstream.spi /lib/firmware/mpfs_bitstream.spi + +mount -t debugfs none /sys/kernel/debug + +# Trash existing device tree overlay in case the rest of the process fails: +flash_erase /dev/mtd0 0 1024 + +# # Write device tree overlay +dd if=/lib/firmware/mpfs_dtbo.spi of=/dev/mtd0 seek=1024 + +# Fake the presence of a golden image for now. +dd if=/dev/zero of=/dev/mtd0 count=4 bs=1 + +# Initiate FPGA update. +echo 1 > /sys/kernel/debug/fpga/microchip_exec_update + +# Reboot Linux for the gateware update to take effect. +# FPGA reprogramming takes places between Linux shut-down and HSS restarting the board. +reboot diff --git a/board/beagleboard/beaglev_fire/uboot-fragment.config b/board/beagleboard/beaglev_fire/uboot-fragment.config new file mode 100644 index 00000000..e2a5eb94 --- /dev/null +++ b/board/beagleboard/beaglev_fire/uboot-fragment.config @@ -0,0 +1,3 @@ +CONFIG_USE_BOOTARGS=y +CONFIG_BOOTARGS="root=/dev/mmcblk0p3 rootwait uio_pdrv_genirq.of_id=generic-uio" +CONFIG_MPFS_PRIORITISE_QSPI_BOOT=n diff --git a/board/beelink/gs1/extlinux.conf b/board/beelink/gs1/extlinux.conf new file mode 100644 index 00000000..046681f7 --- /dev/null +++ b/board/beelink/gs1/extlinux.conf @@ -0,0 +1,4 @@ +label linux + kernel /Image + devicetree /sun50i-h6-beelink-gs1.dtb + append console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait diff --git a/board/beelink/gs1/genimage.cfg b/board/beelink/gs1/genimage.cfg new file mode 100644 index 00000000..71578743 --- /dev/null +++ b/board/beelink/gs1/genimage.cfg @@ -0,0 +1,34 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-h6-beelink-gs1.dtb", + "extlinux" + } + } + + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + size = 1016K # 1MB - 8KB + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/beelink/gs1/post-build.sh b/board/beelink/gs1/post-build.sh new file mode 100755 index 00000000..ec20fca7 --- /dev/null +++ b/board/beelink/gs1/post-build.sh @@ -0,0 +1,4 @@ +#!/bin/sh +BOARD_DIR="$(dirname $0)" + +install -m 0644 -D $BOARD_DIR/extlinux.conf $BINARIES_DIR/extlinux/extlinux.conf diff --git a/board/boundarydevices/common/boot.cmd b/board/boundarydevices/common/boot.cmd new file mode 100644 index 00000000..2f2bd8d0 --- /dev/null +++ b/board/boundarydevices/common/boot.cmd @@ -0,0 +1,170 @@ +setenv bootargs '' + +m4='' +kernelimage=zImage +bootcommand=bootz +a_base=0x10000000 + +#grab 1st 2/3 characters of string +setexpr cpu2 sub "^(..?).*" "\\1" "${imx_cpu}" +setexpr cpu3 sub "^(..?.?).*" "\\1" "${imx_cpu}" +if itest.s x51 == "x${cpu2}" ; then + a_base=0x90000000 +elif itest.s x53 == "x${cpu2}"; then + a_base=0x70000000 +elif itest.s x6SX == "x${cpu3}" || itest.s x6U == "x${cpu2}" || itest.s x7D == "x${cpu2}"; then + a_base=0x80000000 +elif itest.s x8M == "x${cpu2}"; then + a_base=0x40000000 + kernelimage=Image + bootcommand=booti +fi +if itest.s "x1" == "x${m4enabled}" ; then + run m4boot; + m4='-m4'; +fi + +setexpr a_script ${a_base} + 0x00800000 +setexpr a_zImage ${a_base} + 0x00800000 +setexpr a_fdt ${a_base} + 0x03000000 +setexpr a_initrd ${a_base} + 0x03100000 +setexpr a_reset_cause_marker ${a_base} + 0x80 +setexpr a_reset_cause ${a_base} + 0x84 + +if itest.s "x" == "x${board}" ; then + echo "!!!! Error: Your u-boot is outdated. Please upgrade."; + exit; +fi + +if itest.s "x" == "x${fdt_file}" ; then + if itest.s x51 == "x${cpu2}" ; then + fdt_file=imx51-${board}${m4}.dtb; + elif itest.s x53 == "x${cpu2}" ; then + fdt_file=imx53-${board}${m4}.dtb; + elif itest.s x6DL == "x${cpu3}" || itest.s x6SO == "x${cpu3}" ; then + fdt_file=imx6dl-${board}.dtb; + elif itest.s x6QP == "x${cpu3}" ; then + fdt_file=imx6qp-${board}.dtb; + elif itest.s x6SX == "x${cpu3}" ; then + fdt_file=imx6sx-${board}${m4}.dtb; + elif itest.s x6UL == "x${cpu3}" ; then + fdt_file=imx6ull-${board}.dtb; + elif itest.s x7D == "x${cpu2}" ; then + fdt_file=imx7d-${board}${m4}.dtb; + elif itest.s x8MM == "x${cpu3}" ; then + fdt_file=imx8mm-${board}${m4}.dtb; + elif itest.s x8MN == "x${cpu3}" ; then + fdt_file=imx8mn-${board}${m4}.dtb; + elif itest.s x8MP == "x${cpu3}" ; then + if itest *0x30360800 == 0x00824310 ; then + fdt_file=imx8mp-a0-${board}${m4}.dtb; + else + fdt_file=imx8mp-${board}${m4}.dtb; + fi + elif itest.s x8MQ == "x${cpu3}" ; then + fdt_file=imx8mq-${board}${m4}.dtb; + else + fdt_file=imx6q-${board}.dtb; + fi +fi + +if itest.s x${distro_bootpart} == x ; then + distro_bootpart=1 +fi + +if load ${devtype} ${devnum}:${distro_bootpart} ${a_script} uEnv.txt ; then + env import -t ${a_script} ${filesize} +fi + +if itest.s x${console} != x ; then + setenv bootargs ${bootargs} console=${console},115200 +fi +if itest.s "x" == "x$vmalloc" ; then + vmalloc=400M +fi +if itest.s x${consoleblank} == x ; then + consoleblank=0 +fi +setenv bootargs ${bootargs} vmalloc=${vmalloc} consoleblank=${consoleblank} rootwait fixrtc cpu=${imx_cpu} board=${board} uboot_release=${uboot_release} + +if load ${devtype} ${devnum}:${distro_bootpart} ${a_fdt} ${prefix}${fdt_file} ; then + fdt addr ${a_fdt} +else + echo "!!!! Error loading ${prefix}${fdt_file}"; + exit; +fi + +fdt resize 4096 +if itest.s "x" != "x${cmd_board}" ; then + run cmd_board +fi +if itest.s "x" != "x${cmd_custom}" ; then + run cmd_custom +fi +if itest.s "x" != "x${cmd_hdmi}" ; then + run cmd_hdmi + if itest.s x != x${allow_noncea} ; then + setenv bootargs ${bootargs} mxc_hdmi.only_cea=0; + echo "non-CEA modes allowed on HDMI, audio may be affected"; + fi +fi +if itest.s "x" != "x${cmd_lcd}" ; then + run cmd_lcd +fi +if itest.s "x" != "x${cmd_lcd2}" ; then + run cmd_lcd2 +fi +if itest.s "x" != "x${cmd_lvds}" ; then + run cmd_lvds +fi +if itest.s "x" != "x${cmd_lvds2}" ; then + run cmd_lvds2 +fi +if itest.s "x" != "x${cmd_mipi}" ; then + run cmd_mipi +fi + +if test "sata" = "${devtype}" ; then + setenv bootargs "${bootargs} root=/dev/sda${distro_bootpart}" ; +elif test "usb" = "${devtype}" ; then + setenv bootargs "${bootargs} root=/dev/sda${distro_bootpart}" ; +else + setenv bootargs "${bootargs} root=/dev/mmcblk${devnum}p${distro_bootpart}" +fi + +if itest.s "x" != "x${disable_msi}" ; then + setenv bootargs ${bootargs} pci=nomsi +fi; + +if itest.s "x" != "x${disable_giga}" ; then + setenv bootargs ${bootargs} fec.disable_giga=1 +fi + +if itest.s "x" != "x${wlmac}" ; then + setenv bootargs ${bootargs} wlcore.mac=${wlmac} +fi + +if itest.s "x" != "x${gpumem}" ; then + setenv bootargs ${bootargs} galcore.contiguousSize=${gpumem} +fi + +if itest.s "x" != "x${cma}" ; then + setenv bootargs ${bootargs} cma=${cma} +fi + +if itest.s "x" != "x${loglevel}" ; then + setenv bootargs ${bootargs} loglevel=${loglevel} +fi + +if itest.s "x" != "x${show_fdt}" ; then + fdt print / +fi + +if itest.s "x" != "x${show_env}" ; then + printenv +fi + +if load ${devtype} ${devnum}:${distro_bootpart} ${a_zImage} ${prefix}${kernelimage} ; then + ${bootcommand} ${a_zImage} - ${a_fdt} +fi +echo "Error loading kernel image" diff --git a/board/boundarydevices/common/genimage.cfg b/board/boundarydevices/common/genimage.cfg new file mode 100644 index 00000000..a383fb75 --- /dev/null +++ b/board/boundarydevices/common/genimage.cfg @@ -0,0 +1,18 @@ +# Minimal SD card image for Boundary Devices platforms +# +# It does not need a boot section for a bootloader since it is booted +# from its NOR flash memory. +# +# To update the bootloader, execute the following from U-Boot prompt: +# => run upgradeu + +image sdcard.img { + hdimage { + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/boundarydevices/common/post-build.sh b/board/boundarydevices/common/post-build.sh new file mode 100755 index 00000000..161ec064 --- /dev/null +++ b/board/boundarydevices/common/post-build.sh @@ -0,0 +1,29 @@ +#!/bin/sh +# post-build fixups +# for further details, see +# +# http://boundarydevices.com/u-boot-on-i-mx6/ +# + +BOARD_DIR="$(dirname $0)" +UBOOT_DEFCONFIG="$(grep BR2_TARGET_UBOOT_BOARD_DEFCONFIG ${BR2_CONFIG} | sed 's/.*\"\(.*\)\"/\1/')" + +if grep -Eq "^BR2_aarch64=y$" ${BR2_CONFIG}; then + MKIMAGE_ARCH=arm64 + UBOOT_BINARY=imx8-boot-sd.bin +else + MKIMAGE_ARCH=arm + UBOOT_BINARY=u-boot.imx +fi + +# bd u-boot looks for standard bootscript +$HOST_DIR/bin/mkimage -A $MKIMAGE_ARCH -O linux -T script -C none -a 0 -e 0 \ + -n "boot script" -d $BOARD_DIR/boot.cmd $TARGET_DIR/boot/boot.scr + +# u-boot / update script for bd upgradeu command +if [ -e $BINARIES_DIR/$UBOOT_BINARY ]; then + install -D -m 0644 $BINARIES_DIR/$UBOOT_BINARY \ + $TARGET_DIR/u-boot.$UBOOT_DEFCONFIG + $HOST_DIR/bin/mkimage -A $MKIMAGE_ARCH -O linux -T script -C none -a 0 -e 0 \ + -n "upgrade script" -d $BOARD_DIR/upgrade.cmd $TARGET_DIR/upgrade.scr +fi diff --git a/board/boundarydevices/common/post-image.sh b/board/boundarydevices/common/post-image.sh new file mode 100755 index 00000000..5c70d98e --- /dev/null +++ b/board/boundarydevices/common/post-image.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +support/scripts/genimage.sh -c $(dirname $0)/genimage.cfg + +exit $? diff --git a/board/boundarydevices/common/readme.txt b/board/boundarydevices/common/readme.txt new file mode 100644 index 00000000..d3169b08 --- /dev/null +++ b/board/boundarydevices/common/readme.txt @@ -0,0 +1,51 @@ +Buildroot for Boundary Devices platforms: + +https://boundarydevices.com/nitrogen-sbcs-and-soms/ + +Here is the list of targeted platforms per defconfig: + +- nitrogen6x_defconfig + - BD-SL-i.MX6 (SABRE-Lite) + - Nitrogen6X + - Nitrogen6_Lite + - Nitrogen6_MAX + - Nitrogen6_VM + - Nitrogen6_SOM + - Nitrogen6_SOMv2 + +- nitrogen6sx_defconfig + - Nitrogen6_SoloX + +- nitrogen7_defconfig + - Nitrogen7 + +- nitrogen8m_defconfig + - Nitrogen8M + - Nitrogen8M_SOM + +- nitrogen8mm_defconfig + - Nitrogen8MMini + - Nitrogen8MMini_SOM + +- nitrogen8mn_defconfig + - Nitrogen8MNano + - Nitrogen8MNano_SOM + +- nitrogen8mp_defconfig + - Nitrogen8MPlus_SOM + +To install, simply copy the image to your storage (SD, eMMC, USB): + +$ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Where 'sdX' is the device node of the uSD partition. + +To upgrade u-boot, cancel autoboot and type: + +> run upgradeu + +See Boundary Devices's buildroot-external-boundary project +for additional and advanced defconfigs using Qt5, gstreamer, +NXP proprietary packages with demo applications: + +https://github.com/boundarydevices/buildroot-external-boundary diff --git a/board/boundarydevices/common/upgrade.cmd b/board/boundarydevices/common/upgrade.cmd new file mode 100644 index 00000000..a26bacd9 --- /dev/null +++ b/board/boundarydevices/common/upgrade.cmd @@ -0,0 +1,230 @@ +if itest.s a$uboot_defconfig == a; then + echo "Please set uboot_defconfig to the appropriate value" + exit +fi + +offset=0x400 +erase_size=0xC0000 +qspi_offset=0x0 +a_base=0x12000000 +block_size=0x200 + +#grab 1st 2/3 characters of string +setexpr cpu2 sub "^(..?).*" "\\1" "${imx_cpu}" +setexpr cpu3 sub "^(..?.?).*" "\\1" "${imx_cpu}" +if itest.s x51 == "x${cpu2}"; then + a_base=0x92000000 +elif itest.s x53 == "x${cpu2}"; then + a_base=0x72000000 +elif itest.s x6SX == "x${cpu3}" || itest.s x6U == "x${cpu2}" || itest.s x7D == "x${cpu2}"; then + a_base=0x82000000 +elif itest.s x8M == "x${cpu2}"; then + a_base=0x42000000 + offset=0x8400 + if itest.s x8MN == "x${cpu3}" || itest.s x8MP == "x${cpu3}"; then + offset=0x8000 + if itest ${env_part} != 0 ; then + offset=0x0 + fi + fi +fi + +qspi_match=1 +setexpr a_qspi1 ${a_base} +setexpr a_qspi2 ${a_qspi1} + 0x400000 +setexpr a_uImage1 ${a_qspi1} + 0x400 +setexpr a_uImage2 ${a_qspi2} + 0x400 +setexpr a_script ${a_base} + +if itest.s "x${vidconsole}" == "x" ; then + vidconsole=vga +fi +setenv stdout serial,${vidconsole} + +if itest.s "x${sfname}" == "x" ; then +# U-Boot resides in (e)MMC +if itest.s "x${env_dev}" == "x" || itest.s "x${env_part}" == "x"; then + echo "Please set env_dev/part to the appropriate values" + exit +fi + +# Load bootloader binary for this board +if ${fs}load ${devtype} ${devnum}:${distro_bootpart} ${a_uImage1} u-boot.$uboot_defconfig ; then +else + echo "File u-boot.$uboot_defconfig not found on SD card" ; + exit +fi + +# Compute block count for filesize and offset +setexpr cntoffset ${offset} / ${block_size} +setexpr cntfile ${filesize} / ${block_size} +# Add 1 in case the $filesize is not a multiple of $block_size +setexpr cntfile ${cntfile} + 1 + +# Select media partition (if different from main partition) +mmc dev ${env_dev} ${env_part} + +# Read and compare current U-Boot +mmc read ${a_uImage2} ${cntoffset} ${cntfile} +if cmp.b ${a_uImage1} ${a_uImage2} ${filesize} ; then + echo "------- U-Boot versions match" ; + echo "------- U-Boot upgrade NOT needed" ; + exit ; +fi + +echo "Need U-Boot upgrade" ; +echo "Program in 5 seconds" ; +for n in 5 4 3 2 1 ; do + echo $n ; + sleep 1 ; +done +mmc write ${a_uImage1} ${cntoffset} ${cntfile} + +# Make sure to boot from the proper partition +if itest ${env_part} != 0 ; then + mmc partconf ${env_dev} 1 ${env_part} 0 +fi + +# Switch back to main eMMC partition (to avoid confusion) +mmc dev ${env_dev} + +else +# U-Boot resides in NOR flash +if sf probe || sf probe || sf probe 1 27000000 || sf probe 1 27000000 ; then + echo "probed SPI ROM" ; +else + echo "Error initializing EEPROM" + exit +fi + +if itest.s "x${sfname}" == "xat45db041d" ; then + erase_size=0x7e000 +fi + +if itest.s x7D == "x${imx_cpu}"; then + echo "check qspi parameter block" ; + if ${fs}load ${devtype} ${devnum}:${distro_bootpart} ${a_qspi1} qspi-${sfname}.${uboot_defconfig} ; then + else + echo "parameter file qspi-${sfname}.${uboot_defconfig} not found on SD card" + exit + fi + if itest ${filesize} != 0x200 ; then + echo "------- qspi-${sfname}.${uboot_defconfig} 0x${filesize} != 0x200 bytes" ; + exit + fi + setexpr a_marker ${a_qspi1} + 0x1fc + if itest *${a_marker} != c0ffee01 ; then + echo "------- qspi-${sfname}.${uboot_defconfig} c0ffee01 marker missing" ; + exit + fi + if sf read ${a_qspi2} ${qspi_offset} 0x200 ; then + else + echo "Error reading qspi parameter from EEPROM" + exit + fi + if cmp.b ${a_qspi1} ${a_qspi2} 0x200 ; then + echo "------- qspi parameters match" + else + echo "------- qspi parameters mismatch" + qspi_match=0 + fi +fi + +echo "check U-Boot" ; + +if ${fs}load ${devtype} ${devnum}:${distro_bootpart} ${a_uImage1} u-boot.$uboot_defconfig ; then +else + echo "File u-boot.$uboot_defconfig not found on SD card" ; + exit +fi +echo "read $filesize bytes from SD card" ; +if sf read ${a_uImage2} $offset $filesize ; then +else + echo "Error reading boot loader from EEPROM" ; + exit +fi + +if cmp.b ${a_uImage1} ${a_uImage2} $filesize ; then + echo "------- U-Boot versions match" ; + if itest.s "${qspi_match}" == "1" ; then + echo "------- U-Boot upgrade NOT needed" ; + if itest.s "x" != "x${next}" ; then + if ${fs}load ${devtype} ${devnum}:${distro_bootpart} ${a_script} ${next} ; then + source ${a_script} + else + echo "${next} not found on SD card" + fi + fi + exit + fi + erase_size=0x1000 + if itest.s xMX25L6405D == "x${sfname}"; then + erase_size=0x10000 + fi + setexpr filesize ${erase_size} - ${offset} +fi + +echo "Need U-Boot upgrade" ; +echo "Program in 5 seconds" ; +for n in 5 4 3 2 1 ; do + echo $n ; + sleep 1 ; +done +echo "erasing" ; +sf erase 0 ${erase_size} ; + +# two steps to prevent bricking +echo "programming" ; +setexpr a1 ${a_uImage1} + 0x400 +setexpr o1 ${offset} + 0x400 +setexpr s1 ${filesize} - 0x400 +sf write ${a1} ${o1} ${s1} ; +sf write ${a_uImage1} $offset 0x400 ; + +if itest.s x7D == "x${imx_cpu}"; then + sf write ${a_qspi1} ${qspi_offset} 0x200 +fi + +echo "verifying" ; +if sf read ${a_uImage2} $offset $filesize ; then +else + echo "Error re-reading EEPROM" ; + exit +fi +if cmp.b ${a_uImage1} ${a_uImage2} $filesize ; then +else + echo "Read verification error" ; + exit +fi + +if itest.s x7D == "x${imx_cpu}"; then + if sf read ${a_qspi2} ${qspi_offset} 0x200 ; then + else + echo "Error re-reading qspi" ; + exit + fi + if cmp.b ${a_qspi1} ${a_qspi2} 0x200 ; then + else + echo "qspi parameter block verification error" ; + exit + fi +fi + +if itest.s "x" != "x${next}" ; then + if ${fs}load ${devtype} ${devnum}:${distro_bootpart} ${a_script} ${next} ; then + source ${a_script} + else + echo "${next} not found on ${devtype} ${devnum}:${distro_bootpart}" + fi +fi +fi + +if itest.s "xno" == "x${reset}" ; then + while echo "---- U-Boot upgraded. Please reset the board" ; do + sleep 120 + done +fi +echo "---- U-Boot upgraded. The board will now reset." +sleep 1 +reset +done diff --git a/board/broadcom/northstar/linux.config b/board/broadcom/northstar/linux.config new file mode 100644 index 00000000..47e69900 --- /dev/null +++ b/board/broadcom/northstar/linux.config @@ -0,0 +1,70 @@ +CONFIG_EMBEDDED=y +CONFIG_ARCH_BCM=y +CONFIG_ARCH_BCM_5301X=y +CONFIG_ARCH_BCM_53573=y +CONFIG_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_HIGHMEM=y +CONFIG_ARM_APPENDED_DTB=y +CONFIG_CMDLINE="ubi.mtd=ubi root=ubi0:rootfs rootfstype=ubifs" +CONFIG_CMDLINE_FORCE=y +# CONFIG_SUSPEND is not set +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_BRIDGE=y +CONFIG_BRIDGE_VLAN_FILTERING=y +CONFIG_NET_DSA=y +CONFIG_VLAN_8021Q=y +CONFIG_PCI=y +CONFIG_BCM47XX_NVRAM=y +CONFIG_BCM47XX_SPROM=y +CONFIG_MTD=y +CONFIG_MTD_BCM47XX_PARTS=y +CONFIG_MTD_PARSER_TRX=y +CONFIG_MTD_BCM47XXSFLASH=y +CONFIG_MTD_RAW_NAND=y +CONFIG_MTD_NAND_BRCMNAND=y +CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_UBI=y +CONFIG_NETDEVICES=y +CONFIG_VXLAN=y +CONFIG_VETH=y +CONFIG_B53=y +CONFIG_BGMAC_BCMA=y +CONFIG_BROADCOM_PHY=y +CONFIG_MDIO_BUS_MUX_MMIOREG=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=2 +CONFIG_SERIAL_8250_RUNTIME_UARTS=2 +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_SPI=y +CONFIG_THERMAL=y +CONFIG_WATCHDOG=y +CONFIG_BCM47XX_WDT=y +CONFIG_BCMA_HOST_SOC=y +CONFIG_BCMA_DRIVER_GMAC_CMN=y +CONFIG_BCMA_DRIVER_GPIO=y +CONFIG_USB=y +CONFIG_USB_LEDS_TRIGGER_USBPORT=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_PLATFORM=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_OHCI_HCD=y +# CONFIG_USB_OHCI_HCD_PCI is not set +CONFIG_USB_HCD_BCMA=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_DEFAULT_ON=y +CONFIG_PHY_BCM_NS_USB2=y +CONFIG_PHY_BCM_NS_USB3=y +CONFIG_UBIFS_FS=y +CONFIG_DEBUG_LL=y +CONFIG_DEBUG_UNCOMPRESS=y +CONFIG_EARLY_PRINTK=y diff --git a/board/broadcom/northstar/post-image.sh b/board/broadcom/northstar/post-image.sh new file mode 100755 index 00000000..559ed8bf --- /dev/null +++ b/board/broadcom/northstar/post-image.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +# $1: images directory path +# $2: device dts filename +# $3: board id +build_lxl() { + local images="$1" + local device="$2" + local board="$3" + + $HOST_DIR/bin/lzma_alone e $images/zImage.$device $images/zImage.$device.lzma -d16 + rm -f $images/zImage.$device + $HOST_DIR/bin/otrx create $images/$device.trx -f $images/zImage.$device.lzma -a 0x20000 -f $images/rootfs.ubi + rm -f $images/zImage.$device.lzma + $HOST_DIR/bin/lxlfw create $images/$device.lxl -i $images/$device.trx -b "$board" +} + +# $1: images directory path +# $2: device dts filename +build_trx() { + local images="$1" + local device="$2" + + $HOST_DIR/bin/lzma_alone e $images/zImage.$device $images/zImage.$device.lzma -d16 + rm -f $images/zImage.$device + $HOST_DIR/bin/otrx create $images/$device.trx -f $images/zImage.$device.lzma -a 0x20000 -f $images/rootfs.ubi + rm -f $images/zImage.$device.lzma +} + +devices="$(sed -n 's/^BR2_LINUX_KERNEL_INTREE_DTS_NAME="\([^"]*\)"$/\1/p' ${BR2_CONFIG})" +for device in $devices; do + device="${device#broadcom/}" + case "$device" in + "bcm4708-smartrg-sr400ac") + build_trx "$1" "$device" + ;; + "bcm47094-luxul-xwr-3150-v1") + build_lxl "$1" "$device" "XWR-3150" + ;; + esac +done diff --git a/board/broadcom/northstar/readme.txt b/board/broadcom/northstar/readme.txt new file mode 100644 index 00000000..523bb439 --- /dev/null +++ b/board/broadcom/northstar/readme.txt @@ -0,0 +1,38 @@ +Broadcom Northstar + +Intro +===== + +This readme covers Northstar family of Broadcom SoCs. It includes: + - BCM4708 (2 x 800 MHz) + - BCM47081 (1 x 800 MHz) + - BCM4709 (2 x 1 GHz) + - BCM47094 (2 x 1 GHz) (AKA BCM4709C0) + +Northstar platform is used in some home routers by multiple vendors. There are +over 100 market devices based on it and they can all be supported with 1 kernel. + +There is no point in having separated board for each model. This board code is +meant for all supported Northstar devices. + +All Northstar devices come with CFE bootloader by default. It's basically closed +source as sources are available for some old releases only. There is no U-Boot (or +any other) drop-in replacement or second stage loader with Northstar support. + +CFE supports flashing firmware images over TFTP and HTTP (depending on vendor / +device setup). + +How to build it +=============== + + $ make broadcom_northstar_defconfig + + $ make + +How to flash over HTTP +====================== + +Power on device and press (and hold) CTRL+C in serial console terminal. When CFE +gets into prompt mode it'll automatically start built-in HTTP server. Navigate +to http://192.168.1.1/ (unless IP was changed - verify with "ifconfig") and +upload new firmware using a web browser. diff --git a/board/bsh/common/imx8mn-bsh-smm-s2/linux.fragment b/board/bsh/common/imx8mn-bsh-smm-s2/linux.fragment new file mode 100644 index 00000000..80803ab0 --- /dev/null +++ b/board/bsh/common/imx8mn-bsh-smm-s2/linux.fragment @@ -0,0 +1,895 @@ +# CONFIG_BPF_SYSCALL is not set +CONFIG_TASK_DELAY_ACCT=y +CONFIG_CGROUP_FREEZER=y +# CONFIG_CGROUP_BPF is not set +CONFIG_RELAY=y +# CONFIG_ARCH_ACTIONS is not set +# CONFIG_ARCH_SUNXI is not set +# CONFIG_ARCH_ALPINE is not set +# CONFIG_ARCH_APPLE is not set +# CONFIG_ARCH_BCM2835 is not set +# CONFIG_ARCH_BCM4908 is not set +# CONFIG_ARCH_BCM_IPROC is not set +# CONFIG_ARCH_BERLIN is not set +# CONFIG_ARCH_BRCMSTB is not set +# CONFIG_ARCH_EXYNOS is not set +# CONFIG_ARCH_K3 is not set +# CONFIG_ARCH_LAYERSCAPE is not set +# CONFIG_ARCH_LG1K is not set +# CONFIG_ARCH_HISI is not set +# CONFIG_ARCH_KEEMBAY is not set +# CONFIG_ARCH_MEDIATEK is not set +# CONFIG_ARCH_MESON is not set +# CONFIG_ARCH_MVEBU is not set +# CONFIG_ARCH_QCOM is not set +# CONFIG_ARCH_RENESAS is not set +# CONFIG_ARCH_ROCKCHIP is not set +# CONFIG_ARCH_S32 is not set +# CONFIG_ARCH_SEATTLE is not set +# CONFIG_ARCH_INTEL_SOCFPGA is not set +# CONFIG_ARCH_SYNQUACER is not set +# CONFIG_ARCH_TEGRA is not set +# CONFIG_ARCH_TESLA_FSD is not set +# CONFIG_ARCH_SPRD is not set +# CONFIG_ARCH_THUNDER is not set +# CONFIG_ARCH_THUNDER2 is not set +# CONFIG_ARCH_UNIPHIER is not set +# CONFIG_ARCH_VEXPRESS is not set +# CONFIG_ARCH_VISCONTI is not set +# CONFIG_ARCH_XGENE is not set +# CONFIG_ARCH_ZYNQMP is not set +# CONFIG_KEXEC is not set +# CONFIG_KEXEC_FILE is not set +# CONFIG_XEN is not set +# CONFIG_ARM64_PTR_AUTH is not set +# CONFIG_ARM64_TLB_RANGE is not set +# CONFIG_ARM64_MTE is not set +CONFIG_PM_DEBUG=y +CONFIG_PM_TEST_SUSPEND=y +# CONFIG_HIBERNATION is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y +# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set +# CONFIG_ARM_ALLWINNER_SUN50I_CPUFREQ_NVMEM is not set +# CONFIG_ARM_ARMADA_37XX_CPUFREQ is not set +CONFIG_ARM_IMX_CPUFREQ_DT=y +# CONFIG_ARM_QCOM_CPUFREQ_NVMEM is not set +# CONFIG_ARM_QCOM_CPUFREQ_HW is not set +# CONFIG_ARM_RASPBERRYPI_CPUFREQ is not set +# CONFIG_ARM_SCMI_CPUFREQ is not set +# CONFIG_ARM_TEGRA186_CPUFREQ is not set +# CONFIG_ARM_MEDIATEK_CPUFREQ is not set +# CONFIG_QORIQ_CPUFREQ is not set +# CONFIG_ACPI_APEI_PCIEAER is not set +# CONFIG_VIRTUALIZATION is not set +# CONFIG_KVM is not set +# CONFIG_GCC_PLUGINS is not set +CONFIG_IPV6=y +CONFIG_MODVERSIONS=y +CONFIG_IPV6_SIT=m +CONFIG_NET_DSA_TAG_OCELOT=m +CONFIG_VLAN_8021Q=y +CONFIG_LLC2=y +CONFIG_NET_SCH_MULTIQ=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_PKTGEN=m +CONFIG_BT=y +CONFIG_BT_RFCOMM=y +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=y +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_HIDP=y +# CONFIG_CAN_RCAR is not set +# CONFIG_CAN_RCAR_CANFD is not set +# CONFIG_CAN_MCP251XFD is not set +CONFIG_BT_HCIUART=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_ATH3K=y +CONFIG_BT_HCIUART_3WIRE=y +CONFIG_BT_HCIVHCI=y +CONFIG_CFG80211=y +CONFIG_NL80211_TESTMODE=y +CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211=y +# CONFIG_BT_HCIUART_MRVL is not set +# CONFIG_BT_MRVL is not set +# CONFIG_BT_MRVL_SDIO is not set +# CONFIG_BT_QCOMSMD is not set +# CONFIG_RFKILL is not set +# CONFIG_PCI is not set +# CONFIG_PCIEPORTBUS is not set +# CONFIG_PCIEAER is not set +# CONFIG_PCI_IOV is not set +# CONFIG_PCI_PASID is not set +# CONFIG_HOTPLUG_PCI is not set +# CONFIG_HOTPLUG_PCI_ACPI is not set +# CONFIG_PCI_AARDVARK is not set +# CONFIG_PCI_TEGRA is not set +# CONFIG_PCIE_RCAR_HOST is not set +# CONFIG_PCIE_RCAR_EP is not set +# CONFIG_PCI_HOST_GENERIC is not set +# CONFIG_PCI_XGENE is not set +# CONFIG_PCIE_ALTERA is not set +# CONFIG_PCIE_ALTERA_MSI is not set +# CONFIG_PCI_HOST_THUNDER_PEM is not set +# CONFIG_PCI_HOST_THUNDER_ECAM is not set +# CONFIG_PCIE_ROCKCHIP_HOST is not set +# CONFIG_PCIE_BRCMSTB is not set +# CONFIG_PCI_IMX6 is not set +# CONFIG_PCI_LAYERSCAPE is not set +# CONFIG_PCI_HISI is not set +# CONFIG_PCIE_QCOM is not set +# CONFIG_PCIE_ARMADA_8K is not set +# CONFIG_PCIE_KIRIN is not set +# CONFIG_PCIE_HISI_STB is not set +# CONFIG_PCIE_TEGRA194_HOST is not set +# CONFIG_PCIE_VISCONTI_HOST is not set +# CONFIG_PCIE_LAYERSCAPE_GEN4 is not set +# CONFIG_PCI_ENDPOINT is not set +# CONFIG_PCI_ENDPOINT_CONFIGFS is not set +# CONFIG_PCI_EPF_TEST is not set +CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y +CONFIG_BRCMSTB_GISB_ARB=y +CONFIG_VEXPRESS_CONFIG=y +# CONFIG_HISILICON_LPC is not set +# CONFIG_TEGRA_ACONNECT is not set +# CONFIG_RASPBERRYPI_FIRMWARE is not set +# CONFIG_INTEL_STRATIX10_SERVICE is not set +# CONFIG_INTEL_STRATIX10_RSU is not set +CONFIG_IMX_DSP=y +# CONFIG_GNSS is not set +# CONFIG_GNSS_MTK_SERIAL is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_NAND_BRCMNAND is not set +CONFIG_MTD_NAND_GPMI_NAND=y +# CONFIG_MTD_NAND_MARVELL is not set +# CONFIG_MTD_NAND_FSL_IFC is not set +# CONFIG_MTD_NAND_QCOM is not set +# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set +CONFIG_MTD_UBI=y +# CONFIG_BLK_DEV_NVME is not set +# CONFIG_PCI_ENDPOINT_TEST is not set +CONFIG_RAID_ATTRS=m +# CONFIG_SCSI_HISI_SAS_PCI is not set +# CONFIG_MEGARAID_SAS is not set +# CONFIG_SCSI_MPT3SAS is not set +# CONFIG_SCSI_UFS_QCOM is not set +# CONFIG_SCSI_UFS_HISI is not set +# CONFIG_SCSI_UFS_EXYNOS is not set +# CONFIG_SATA_AHCI is not set +CONFIG_AHCI_IMX=y +# CONFIG_AHCI_BRCM is not set +# CONFIG_AHCI_MVEBU is not set +# CONFIG_SATA_SIL24 is not set +# CONFIG_SATA_RCAR is not set +CONFIG_DM_CRYPT=m +# CONFIG_NET_DSA_BCM_SF2 is not set +# CONFIG_NET_DSA_MSCC_FELIX is not set +# CONFIG_NET_XGENE is not set +# CONFIG_ATL1C is not set +# CONFIG_SYSTEMPORT is not set +# CONFIG_BNX2X is not set +# CONFIG_THUNDER_NIC_PF is not set +CONFIG_FSL_XGMAC_MDIO=y +CONFIG_FSL_ENETC_IERB=y +# CONFIG_FSL_FMAN is not set +# CONFIG_FSL_DPAA_ETH is not set +# CONFIG_FSL_DPAA2_ETH is not set +# CONFIG_FSL_ENETC is not set +# CONFIG_FSL_ENETC_VF is not set +# CONFIG_FSL_ENETC_QOS is not set +CONFIG_MVMDIO=y +CONFIG_MSCC_OCELOT_SWITCH=m +# CONFIG_HNS3 is not set +# CONFIG_HNS3_HCLGE is not set +# CONFIG_HNS3_ENET is not set +# CONFIG_E1000 is not set +# CONFIG_E1000E is not set +# CONFIG_IGB is not set +# CONFIG_IGBVF is not set +# CONFIG_MVNETA is not set +# CONFIG_MVPP2 is not set +# CONFIG_SKY2 is not set +# CONFIG_MLX4_EN is not set +# CONFIG_MLX5_CORE is not set +# CONFIG_MLX5_CORE_EN is not set +# CONFIG_R8169 is not set +# CONFIG_SH_ETH is not set +# CONFIG_RAVB is not set +CONFIG_STMMAC_ETH=y +CONFIG_DWMAC_GENERIC=m +CONFIG_MICROCHIP_PHY=y +CONFIG_NXP_TJA11XX_PHY=y +CONFIG_MDIO_BITBANG=y +# CONFIG_SNI_AVE is not set +# CONFIG_SNI_NETSEC is not set +# CONFIG_TI_K3_AM65_CPSW_NUSS is not set +# CONFIG_QCOM_IPA is not set +# CONFIG_MESON_GXL_PHY is not set +# CONFIG_AQUANTIA_PHY is not set +# CONFIG_BCM54140_PHY is not set +# CONFIG_MARVELL_PHY is not set +# CONFIG_MARVELL_10G_PHY is not set +# CONFIG_MICREL_PHY is not set +# CONFIG_MICROSEMI_PHY is not set +# CONFIG_AT803X_PHY is not set +# CONFIG_REALTEK_PHY is not set +# CONFIG_ROCKCHIP_PHY is not set +# CONFIG_DP83867_PHY is not set +# CONFIG_VITESSE_PHY is not set +# CONFIG_USB_BRCMSTB is not set +CONFIG_USB_RTL8152=y +CONFIG_USB_USBNET=y +CONFIG_BRCMFMAC=y +CONFIG_HOSTAP=y +# CONFIG_ATH10K is not set +# CONFIG_ATH10K_PCI is not set +# CONFIG_ATH10K_SNOC is not set +# CONFIG_WCN36XX is not set +# CONFIG_MWIFIEX is not set +# CONFIG_MWIFIEX_SDIO is not set +# CONFIG_MWIFIEX_PCIE is not set +CONFIG_KEYBOARD_SNVS_PWRKEY=y +# CONFIG_KEYBOARD_IMX_SC_KEY is not set +# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set +# CONFIG_INPUT_PM8941_PWRKEY is not set +# CONFIG_INPUT_PM8XXX_VIBRATOR is not set +# CONFIG_INPUT_PWM_BEEPER is not set +# CONFIG_INPUT_PWM_VIBRA is not set +# CONFIG_INPUT_HISI_POWERKEY is not set +# CONFIG_SERIAL_8250_BCM2835AUX is not set +# CONFIG_SERIAL_8250_OMAP is not set +# CONFIG_SERIAL_8250_MT6577 is not set +# CONFIG_SERIAL_8250_UNIPHIER is not set +# CONFIG_SERIAL_MESON is not set +# CONFIG_SERIAL_MESON_CONSOLE is not set +# CONFIG_SERIAL_SAMSUNG is not set +# CONFIG_SERIAL_SAMSUNG_CONSOLE is not set +# CONFIG_SERIAL_TEGRA is not set +# CONFIG_SERIAL_TEGRA_TCU is not set +# CONFIG_SERIAL_SH_SCI is not set +# CONFIG_SERIAL_MSM is not set +# CONFIG_SERIAL_MSM_CONSOLE is not set +# CONFIG_SERIAL_QCOM_GENI is not set +# CONFIG_SERIAL_QCOM_GENI_CONSOLE is not set +# CONFIG_SERIAL_MVEBU_UART is not set +# CONFIG_SERIAL_OWL is not set +# CONFIG_I2C_MUX is not set +# CONFIG_I2C_BCM2835 is not set +# CONFIG_I2C_MESON is not set +# CONFIG_I2C_MT65XX is not set +# CONFIG_I2C_MV64XXX is not set +# CONFIG_I2C_OMAP is not set +# CONFIG_I2C_OWL is not set +# CONFIG_I2C_PXA is not set +# CONFIG_I2C_QCOM_CCI is not set +# CONFIG_I2C_QCOM_GENI is not set +# CONFIG_I2C_QUP is not set +# CONFIG_I2C_RIIC is not set +# CONFIG_I2C_S3C2410 is not set +# CONFIG_I2C_SH_MOBILE is not set +# CONFIG_I2C_TEGRA is not set +# CONFIG_I2C_UNIPHIER_F is not set +# CONFIG_I2C_RCAR is not set +# CONFIG_SPI_ARMADA_3700 is not set +# CONFIG_SPI_BCM2835 is not set +# CONFIG_SPI_BCM2835AUX is not set +# CONFIG_SPI_DESIGNWARE is not set +# CONFIG_SPI_DW_DMA is not set +# CONFIG_SPI_DW_MMIO is not set +CONFIG_SPI_IMX=y +# CONFIG_SPI_FSL_DSPI is not set +# CONFIG_SPI_MESON_SPICC is not set +# CONFIG_SPI_MESON_SPIFC is not set +# CONFIG_SPI_ORION is not set +CONFIG_SPI_SPIDEV=y +CONFIG_SPI_SLAVE=y +CONFIG_SPI_SLAVE_TIME=y +CONFIG_SPI_SLAVE_SYSTEM_CONTROL=y +CONFIG_PINCTRL=y +# CONFIG_SPI_RPCIF is not set +# CONFIG_SPI_RSPI is not set +# CONFIG_SPI_QCOM_QSPI is not set +# CONFIG_SPI_QUP is not set +# CONFIG_SPI_QCOM_GENI is not set +# CONFIG_SPI_S3C64XX is not set +# CONFIG_SPI_SH_MSIOF is not set +# CONFIG_SPI_SUN6I is not set +# CONFIG_SPMI is not set +# CONFIG_PINCTRL_OWL is not set +# CONFIG_PINCTRL_S700 is not set +# CONFIG_PINCTRL_S900 is not set +CONFIG_GPIOLIB=y +# CONFIG_PINCTRL_MSM is not set +# CONFIG_PINCTRL_IPQ8074 is not set +# CONFIG_PINCTRL_IPQ6018 is not set +# CONFIG_PINCTRL_MSM8916 is not set +# CONFIG_PINCTRL_MSM8994 is not set +# CONFIG_PINCTRL_MSM8996 is not set +# CONFIG_PINCTRL_MSM8998 is not set +# CONFIG_PINCTRL_QCS404 is not set +# CONFIG_PINCTRL_QDF2XXX is not set +# CONFIG_PINCTRL_QCOM_SPMI_PMIC is not set +# CONFIG_PINCTRL_SC7180 is not set +# CONFIG_PINCTRL_SC7280 is not set +# CONFIG_PINCTRL_SDM845 is not set +# CONFIG_PINCTRL_SM8150 is not set +# CONFIG_PINCTRL_SM8250 is not set +# CONFIG_PINCTRL_SM8350 is not set +# CONFIG_PINCTRL_SM8450 is not set +# CONFIG_PINCTRL_LPASS_LPI is not set +# CONFIG_GPIO_DAVINCI is not set +# CONFIG_GPIO_MPC8XXX is not set +# CONFIG_GPIO_RCAR is not set +# CONFIG_GPIO_UNIPHIER is not set +# CONFIG_GPIO_VISCONTI is not set +# CONFIG_GPIO_XGENE_SB is not set +CONFIG_POWER_RESET_BRCMSTB=y +# CONFIG_GPIO_MAX77620 is not set +# CONFIG_GPIO_SL28CPLD is not set +# CONFIG_POWER_RESET_MSM is not set +# CONFIG_POWER_RESET_QCOM_PON is not set +# CONFIG_BATTERY_MAX17042 is not set +# CONFIG_CHARGER_BQ25890 is not set +# CONFIG_CHARGER_BQ25980 is not set +# CONFIG_SENSORS_JC42 is not set +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_RASPBERRYPI_HWMON is not set +# CONFIG_SENSORS_SL28CPLD is not set +CONFIG_THERMAL_WRITABLE_TRIPS=y +CONFIG_IMX_SC_THERMAL=y +CONFIG_IMX8MM_THERMAL=y +CONFIG_QORIQ_THERMAL=y +# CONFIG_SUN8I_THERMAL is not set +# CONFIG_ROCKCHIP_THERMAL is not set +# CONFIG_RCAR_THERMAL is not set +# CONFIG_RCAR_GEN3_THERMAL is not set +# CONFIG_RZG2L_THERMAL is not set +# CONFIG_ARMADA_THERMAL is not set +# CONFIG_BCM2711_THERMAL is not set +# CONFIG_BCM2835_THERMAL is not set +# CONFIG_BRCMSTB_THERMAL is not set +# CONFIG_EXYNOS_THERMAL is not set +# CONFIG_TEGRA_SOCTHERM is not set +# CONFIG_TEGRA_BPMP_THERMAL is not set +# CONFIG_QCOM_TSENS is not set +# CONFIG_QCOM_SPMI_TEMP_ALARM is not set +# CONFIG_QCOM_LMH is not set +# CONFIG_UNIPHIER_THERMAL is not set +# CONFIG_SL28CPLD_WATCHDOG is not set +# CONFIG_S3C2410_WATCHDOG is not set +# CONFIG_BCM7038_WDT is not set +# CONFIG_SUNXI_WATCHDOG is not set +CONFIG_IMX_SC_WDT=y +CONFIG_IMX7ULP_WDT=y +# CONFIG_QCOM_WDT is not set +# CONFIG_MESON_GXBB_WATCHDOG is not set +# CONFIG_MESON_WATCHDOG is not set +# CONFIG_RENESAS_WDT is not set +# CONFIG_RENESAS_RZG2LWDT is not set +# CONFIG_UNIPHIER_WATCHDOG is not set +# CONFIG_BCM2835_WDT is not set +# CONFIG_MFD_ALTERA_SYSMGR is not set +# CONFIG_MFD_AXP20X_RSB is not set +# CONFIG_MFD_EXYNOS_LPASS is not set +# CONFIG_MFD_HI655X_PMIC is not set +# CONFIG_MFD_MT6397 is not set +# CONFIG_MFD_SPMI_PMIC is not set +# CONFIG_MFD_SL28CPLD is not set +CONFIG_REGULATOR=y +# CONFIG_REGULATOR_HI655X is not set +# CONFIG_REGULATOR_MP8859 is not set +# CONFIG_REGULATOR_MT6358 is not set +# CONFIG_REGULATOR_MT6397 is not set +# CONFIG_REGULATOR_PF8X00 is not set +# CONFIG_REGULATOR_QCOM_RPMH is not set +# CONFIG_REGULATOR_QCOM_SMD_RPM is not set +# CONFIG_REGULATOR_QCOM_SPMI is not set +# CONFIG_REGULATOR_TPS65132 is not set +CONFIG_MEDIA_SUPPORT=y +# CONFIG_RC_CORE is not set +# CONFIG_RC_DECODERS is not set +# CONFIG_RC_DEVICES is not set +# CONFIG_IR_MESON is not set +# CONFIG_IR_SUNXI is not set +CONFIG_SDR_PLATFORM_DRIVERS=y +# CONFIG_VIDEO_QCOM_CAMSS is not set +# CONFIG_VIDEO_RCAR_CSI2 is not set +# CONFIG_VIDEO_RCAR_VIN is not set +# CONFIG_VIDEO_SUN6I_CSI is not set +# CONFIG_VIDEO_RCAR_ISP is not set +# CONFIG_VIDEO_SAMSUNG_S5P_JPEG is not set +# CONFIG_VIDEO_SAMSUNG_S5P_MFC is not set +# CONFIG_VIDEO_SAMSUNG_EXYNOS_GSC is not set +# CONFIG_VIDEO_RENESAS_FDP1 is not set +# CONFIG_VIDEO_RENESAS_FCP is not set +# CONFIG_VIDEO_RENESAS_VSP1 is not set +# CONFIG_VIDEO_QCOM_VENUS is not set +# CONFIG_VIDEO_RCAR_DRIF is not set +CONFIG_VIDEO_OV5640=y +CONFIG_DRM=y +CONFIG_DRM_I2C_CH7006=m +CONFIG_DRM_I2C_SIL164=m +# CONFIG_DRM_NOUVEAU is not set +# CONFIG_DRM_EXYNOS is not set +# CONFIG_DRM_EXYNOS5433_DECON is not set +# CONFIG_DRM_EXYNOS7_DECON is not set +# CONFIG_DRM_EXYNOS_DSI is not set +# CONFIG_DRM_EXYNOS_DP is not set +# CONFIG_DRM_EXYNOS_HDMI is not set +# CONFIG_DRM_EXYNOS_MIC is not set +# CONFIG_DRM_ROCKCHIP is not set +# CONFIG_ROCKCHIP_ANALOGIX_DP is not set +# CONFIG_ROCKCHIP_CDN_DP is not set +# CONFIG_ROCKCHIP_DW_HDMI is not set +# CONFIG_ROCKCHIP_DW_MIPI_DSI is not set +# CONFIG_ROCKCHIP_INNO_HDMI is not set +# CONFIG_ROCKCHIP_LVDS is not set +# CONFIG_DRM_RCAR_DU is not set +# CONFIG_DRM_RCAR_MIPI_DSI is not set +# CONFIG_DRM_SUN4I is not set +# CONFIG_DRM_SUN6I_DSI is not set +# CONFIG_DRM_SUN8I_DW_HDMI is not set +# CONFIG_DRM_SUN8I_MIXER is not set +# CONFIG_DRM_MSM is not set +# CONFIG_DRM_TEGRA is not set +# CONFIG_DRM_PANEL_BOE_TV101WUM_NL6 is not set +# CONFIG_DRM_PANEL_LVDS is not set +# CONFIG_DRM_PANEL_SIMPLE is not set +# CONFIG_DRM_PANEL_EDP is not set +# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set +# CONFIG_DRM_PANEL_RAYDIUM_RM67191 is not set +# CONFIG_DRM_PANEL_SITRONIX_ST7703 is not set +CONFIG_DRM_DISPLAY_CONNECTOR=m +# CONFIG_DRM_LONTIUM_LT8912B is not set +CONFIG_DRM_NWL_MIPI_DSI=y +# CONFIG_DRM_LONTIUM_LT9611UXC is not set +# CONFIG_DRM_PARADE_PS8640 is not set +CONFIG_DRM_I2C_ADV7511=y +CONFIG_DRM_DW_HDMI_I2S_AUDIO=m +CONFIG_DRM_IMX_DCSS=y +# CONFIG_DRM_VC4 is not set +# CONFIG_DRM_HISI_HIBMC is not set +CONFIG_DRM_MXSFB=y +# CONFIG_DRM_MEDIATEK is not set +# CONFIG_DRM_MEDIATEK_HDMI is not set +# CONFIG_DRM_MESON is not set +CONFIG_DRM_LEGACY=y +# CONFIG_FB is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_EFI is not set +# CONFIG_BACKLIGHT_PWM is not set +# CONFIG_BACKLIGHT_LP855X is not set +# CONFIG_LOGO is not set +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_ALOOP=m +# CONFIG_SND_SPI is not set +# CONFIG_SND_USB is not set +# CONFIG_SND_HDA_TEGRA is not set +# CONFIG_SND_HDA_CODEC_HDMI is not set +CONFIG_SND_SOC_FSL_ASRC=y +CONFIG_SND_SOC_FSL_EASRC=y +CONFIG_SND_IMX_SOC=y +CONFIG_SND_SOC_FSL_ASOC_CARD=y +CONFIG_SND_SOC_SOF_TOPLEVEL=y +CONFIG_SND_SOC_SOF_OF=m +CONFIG_SND_SOC_SOF_IMX_TOPLEVEL=y +CONFIG_SND_SOC_AK4458=y +CONFIG_SND_SOC_AK5558=y +CONFIG_SND_SOC_PCM512x_I2C=y +CONFIG_SND_SIMPLE_CARD=y +CONFIG_SND_AUDIO_GRAPH_CARD=y +CONFIG_USB_CONN_GPIO=y +# CONFIG_SND_BCM2835_SOC_I2S is not set +# CONFIG_SND_SOC_FSL_MICFIL is not set +# CONFIG_SND_SOC_IMX_SGTL5000 is not set +# CONFIG_SND_SOC_IMX_SPDIF is not set +# CONFIG_SND_SOC_IMX_AUDMIX is not set +# CONFIG_SND_MESON_AXG_SOUND_CARD is not set +# CONFIG_SND_MESON_GX_SOUND_CARD is not set +# CONFIG_SND_SOC_QCOM is not set +# CONFIG_SND_SOC_APQ8016_SBC is not set +# CONFIG_SND_SOC_MSM8996 is not set +# CONFIG_SND_SOC_SDM845 is not set +# CONFIG_SND_SOC_SM8250 is not set +# CONFIG_SND_SOC_ROCKCHIP is not set +# CONFIG_SND_SOC_ROCKCHIP_SPDIF is not set +# CONFIG_SND_SOC_ROCKCHIP_RT5645 is not set +# CONFIG_SND_SOC_RK3399_GRU_SOUND is not set +# CONFIG_SND_SOC_SAMSUNG is not set +# CONFIG_SND_SOC_RCAR is not set +# CONFIG_SND_SOC_RZ is not set +# CONFIG_SND_SUN4I_I2S is not set +# CONFIG_SND_SUN4I_SPDIF is not set +# CONFIG_SND_SOC_TEGRA is not set +# CONFIG_SND_SOC_TEGRA210_AHUB is not set +# CONFIG_SND_SOC_TEGRA210_DMIC is not set +# CONFIG_SND_SOC_TEGRA210_I2S is not set +# CONFIG_SND_SOC_TEGRA186_DSPK is not set +# CONFIG_SND_SOC_TEGRA210_ADMAIF is not set +# CONFIG_SND_SOC_TEGRA210_MVC is not set +# CONFIG_SND_SOC_TEGRA210_SFC is not set +# CONFIG_SND_SOC_TEGRA210_AMX is not set +# CONFIG_SND_SOC_TEGRA210_ADX is not set +# CONFIG_SND_SOC_TEGRA210_MIXER is not set +# CONFIG_SND_SOC_TEGRA_AUDIO_GRAPH_CARD is not set +# CONFIG_SND_SOC_AK4613 is not set +# CONFIG_SND_SOC_ES7134 is not set +# CONFIG_SND_SOC_ES7241 is not set +# CONFIG_SND_SOC_GTM601 is not set +# CONFIG_SND_SOC_MSM8916_WCD_ANALOG is not set +# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set +# CONFIG_SND_SOC_PCM3168A_I2C is not set +# CONFIG_SND_SOC_RT5659 is not set +# CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set +# CONFIG_SND_SOC_SIMPLE_MUX is not set +# CONFIG_SND_SOC_TAS571X is not set +# CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set +# CONFIG_SND_SOC_WCD934X is not set +# CONFIG_SND_SOC_WM8904 is not set +# CONFIG_SND_SOC_WM8960 is not set +# CONFIG_SND_SOC_WM8962 is not set +# CONFIG_SND_SOC_WM8978 is not set +# CONFIG_SND_SOC_WSA881X is not set +# CONFIG_SND_SOC_NAU8822 is not set +# CONFIG_SND_SOC_LPASS_WSA_MACRO is not set +# CONFIG_SND_SOC_LPASS_VA_MACRO is not set +# CONFIG_SND_AUDIO_GRAPH_CARD2 is not set +# CONFIG_HID_MULTITOUCH is not set +# CONFIG_I2C_HID_ACPI is not set +# CONFIG_I2C_HID_OF is not set +# CONFIG_USB_XHCI_PCI_RENESAS is not set +# CONFIG_USB_XHCI_TEGRA is not set +# CONFIG_USB_EHCI_EXYNOS is not set +# CONFIG_USB_OHCI_EXYNOS is not set +CONFIG_USB_HCD_TEST_MODE=y +# CONFIG_USB_RENESAS_USBHS_HCD is not set +# CONFIG_USB_RENESAS_USBHS is not set +CONFIG_USB_UAS=y +# CONFIG_USB_CDNS_SUPPORT is not set +# CONFIG_USB_CDNS3 is not set +# CONFIG_USB_CDNS3_GADGET is not set +# CONFIG_USB_CDNS3_HOST is not set +# CONFIG_USB_MTU3 is not set +# CONFIG_USB_MUSB_SUNXI is not set +CONFIG_USB_SERIAL=y +CONFIG_USB_SERIAL_CONSOLE=y +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_SIMPLE=y +CONFIG_USB_SERIAL_FTDI_SIO=y +CONFIG_USB_TEST=m +CONFIG_USB_EHSET_TEST_FIXTURE=y +# CONFIG_USB_SERIAL_CP210X is not set +# CONFIG_USB_SERIAL_OPTION is not set +CONFIG_USB_MXS_PHY=y +CONFIG_USB_ULPI=y +CONFIG_USB_SNP_UDC_PLAT=y +CONFIG_USB_BDC_UDC=y +CONFIG_USB_CONFIGFS=y +# CONFIG_USB_RENESAS_USBHS_UDC is not set +# CONFIG_USB_RENESAS_USB3 is not set +# CONFIG_USB_TEGRA_XUDC is not set +CONFIG_USB_CONFIGFS_F_LB_SS=y +CONFIG_USB_CONFIGFS_F_UAC1=y +CONFIG_USB_CONFIGFS_F_UAC1_LEGACY=y +CONFIG_USB_CONFIGFS_F_UAC2=y +CONFIG_USB_CONFIGFS_F_MIDI=y +CONFIG_USB_CONFIGFS_F_HID=y +CONFIG_USB_CONFIGFS_F_UVC=y +CONFIG_USB_ZERO=m +CONFIG_USB_AUDIO=m +CONFIG_USB_ETH=m +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_G_SERIAL=m +CONFIG_TYPEC=y +CONFIG_TYPEC_TCPM=y +CONFIG_TYPEC_TCPCI=y +# CONFIG_TYPEC_TPS6598X is not set +# CONFIG_MMC_SDHCI_ACPI is not set +# CONFIG_MMC_SDHCI_TEGRA is not set +# CONFIG_MMC_MESON_GX is not set +# CONFIG_MMC_SDHCI_MSM is not set +# CONFIG_MMC_SDHI is not set +# CONFIG_MMC_UNIPHIER is not set +# CONFIG_MMC_DW_ROCKCHIP is not set +# CONFIG_MMC_SUNXI is not set +# CONFIG_MMC_BCM2835 is not set +# CONFIG_MMC_MTK is not set +# CONFIG_MMC_OWL is not set +# CONFIG_LEDS_LM3692X is not set +# CONFIG_LEDS_PCA9532 is not set +# CONFIG_EDAC_LAYERSCAPE is not set +# CONFIG_RTC_DRV_HYM8563 is not set +# CONFIG_RTC_DRV_PCF85063 is not set +# CONFIG_RTC_DRV_M41T80 is not set +# CONFIG_RTC_DRV_RV3028 is not set +# CONFIG_RTC_DRV_FSL_FTM_ALARM is not set +# CONFIG_RTC_DRV_S3C is not set +CONFIG_RTC_DRV_SNVS=y +CONFIG_RTC_DRV_IMX_SC=y +# CONFIG_RTC_DRV_SUN6I is not set +# CONFIG_RTC_DRV_ARMADA38X is not set +# CONFIG_RTC_DRV_PM8XXX is not set +# CONFIG_RTC_DRV_TEGRA is not set +# CONFIG_RTC_DRV_XGENE is not set +# CONFIG_RTC_DRV_MT6397 is not set +CONFIG_BCM_SBA_RAID=m +# CONFIG_DMA_BCM2835 is not set +# CONFIG_DMA_SUN6I is not set +CONFIG_FSL_QDMA=m +CONFIG_IMX_SDMA=y +# CONFIG_K3_DMA is not set +# CONFIG_MV_XOR is not set +CONFIG_MXS_DMA=y +# CONFIG_OWL_DMA is not set +# CONFIG_TEGRA186_GPC_DMA is not set +# CONFIG_TEGRA20_APB_DMA is not set +# CONFIG_TEGRA210_ADMA is not set +# CONFIG_QCOM_BAM_DMA is not set +CONFIG_DMATEST=y +CONFIG_DMABUF_HEAPS=y +CONFIG_DMABUF_HEAPS_SYSTEM=y +CONFIG_DMABUF_HEAPS_CMA=y +# CONFIG_RCAR_DMAC is not set +# CONFIG_RENESAS_USB_DMAC is not set +# CONFIG_RZ_DMAC is not set +# CONFIG_TI_K3_UDMA is not set +# CONFIG_TI_K3_UDMA_GLUE_LAYER is not set +# CONFIG_VFIO_PCI is not set +# CONFIG_VIRTIO_PCI is not set +# CONFIG_XEN_GNTDEV is not set +# CONFIG_XEN_GRANT_DEV_ALLOC is not set +# CONFIG_VIDEO_HANTRO is not set +# CONFIG_VIDEO_IMX_MEDIA is not set +# CONFIG_COMMON_CLK_SCMI is not set +# CONFIG_COMMON_CLK_FSL_SAI is not set +CONFIG_COMMON_CLK_XGENE=y +# CONFIG_COMMON_CLK_BD718XX is not set +# CONFIG_CLK_RASPBERRYPI is not set +# CONFIG_CLK_IMX8MM is not set +# CONFIG_CLK_IMX8MP is not set +# CONFIG_CLK_IMX8MQ is not set +# CONFIG_CLK_IMX8QXP is not set +# CONFIG_CLK_IMX8ULP is not set +# CONFIG_TI_SCI_CLK is not set +# CONFIG_COMMON_CLK_QCOM is not set +# CONFIG_QCOM_A53PLL is not set +# CONFIG_QCOM_CLK_APCS_MSM8916 is not set +# CONFIG_QCOM_CLK_APCC_MSM8996 is not set +# CONFIG_QCOM_CLK_SMD_RPM is not set +# CONFIG_QCOM_CLK_RPMH is not set +# CONFIG_IPQ_GCC_6018 is not set +# CONFIG_IPQ_GCC_8074 is not set +# CONFIG_MSM_GCC_8916 is not set +# CONFIG_MSM_GCC_8994 is not set +# CONFIG_MSM_MMCC_8996 is not set +# CONFIG_MSM_GCC_8998 is not set +# CONFIG_QCS_GCC_404 is not set +# CONFIG_SC_GCC_7180 is not set +# CONFIG_SC_GCC_7280 is not set +# CONFIG_SDM_CAMCC_845 is not set +# CONFIG_SDM_GPUCC_845 is not set +# CONFIG_SDM_VIDEOCC_845 is not set +# CONFIG_SDM_DISPCC_845 is not set +# CONFIG_SM_GCC_8350 is not set +# CONFIG_SM_GCC_8450 is not set +# CONFIG_SM_GPUCC_8150 is not set +# CONFIG_SM_GPUCC_8250 is not set +# CONFIG_QCOM_HFPLL is not set +# CONFIG_CLK_GFM_LPASS_SM8250 is not set +# CONFIG_CLK_RCAR_USB2_CLOCK_SEL is not set +# CONFIG_HWSPINLOCK_QCOM is not set +# CONFIG_RENESAS_OSTM is not set +# CONFIG_BCM2835_MBOX is not set +# CONFIG_QCOM_APCS_IPC is not set +# CONFIG_QCOM_IPCC is not set +# CONFIG_ROCKCHIP_IOMMU is not set +# CONFIG_TEGRA_IOMMU_SMMU is not set +# CONFIG_MTK_IOMMU is not set +# CONFIG_QCOM_IOMMU is not set +CONFIG_IMX_REMOTEPROC=y +CONFIG_IMX_DSP_REMOTEPROC=y +CONFIG_RPMSG_CHAR=y +# CONFIG_QCOM_Q6V5_MSS is not set +# CONFIG_QCOM_Q6V5_PAS is not set +# CONFIG_QCOM_SYSMON is not set +# CONFIG_QCOM_WCNSS_PIL is not set +# CONFIG_RPMSG_QCOM_GLINK_SMEM is not set +# CONFIG_RPMSG_QCOM_SMD is not set +CONFIG_SOC_BRCMSTB=y +# CONFIG_OWL_PM_DOMAINS is not set +# CONFIG_RASPBERRYPI_POWER is not set +# CONFIG_FSL_DPAA is not set +# CONFIG_FSL_MC_DPIO is not set +CONFIG_SOC_TI=y +# CONFIG_MTK_DEVAPC is not set +# CONFIG_MTK_PMIC_WRAP is not set +# CONFIG_QCOM_AOSS_QMP is not set +# CONFIG_QCOM_COMMAND_DB is not set +# CONFIG_QCOM_CPR is not set +# CONFIG_QCOM_GENI_SE is not set +# CONFIG_QCOM_RMTFS_MEM is not set +# CONFIG_QCOM_RPMH is not set +# CONFIG_QCOM_RPMHPD is not set +# CONFIG_QCOM_RPMPD is not set +# CONFIG_QCOM_SMEM is not set +# CONFIG_QCOM_SMD_RPM is not set +# CONFIG_QCOM_SMP2P is not set +# CONFIG_QCOM_SMSM is not set +# CONFIG_QCOM_SOCINFO is not set +# CONFIG_QCOM_STATS is not set +# CONFIG_QCOM_WCNSS_CTRL is not set +# CONFIG_QCOM_APR is not set +# CONFIG_ARCH_R8A77995 is not set +# CONFIG_ARCH_R8A77990 is not set +# CONFIG_ARCH_R8A77950 is not set +# CONFIG_ARCH_R8A77951 is not set +# CONFIG_ARCH_R8A77965 is not set +# CONFIG_ARCH_R8A77960 is not set +# CONFIG_ARCH_R8A77961 is not set +# CONFIG_ARCH_R8A779F0 is not set +# CONFIG_ARCH_R8A77980 is not set +# CONFIG_ARCH_R8A77970 is not set +# CONFIG_ARCH_R8A779A0 is not set +# CONFIG_ARCH_R8A774C0 is not set +# CONFIG_ARCH_R8A774E1 is not set +# CONFIG_ARCH_R8A774A1 is not set +# CONFIG_ARCH_R8A774B1 is not set +# CONFIG_ARCH_R9A07G044 is not set +# CONFIG_ROCKCHIP_IODOMAIN is not set +# CONFIG_ROCKCHIP_PM_DOMAINS is not set +# CONFIG_ARCH_TEGRA_132_SOC is not set +# CONFIG_ARCH_TEGRA_210_SOC is not set +# CONFIG_ARCH_TEGRA_186_SOC is not set +# CONFIG_ARCH_TEGRA_194_SOC is not set +# CONFIG_ARCH_TEGRA_234_SOC is not set +# CONFIG_TI_SCI_PM_DOMAINS is not set +# CONFIG_ARM_IMX_BUS_DEVFREQ is not set +# CONFIG_ARM_IMX8M_DDRC_DEVFREQ is not set +CONFIG_MEMORY=y +# CONFIG_RENESAS_RPCIF is not set +CONFIG_IMX8QXP_ADC=y +# CONFIG_EXYNOS_ADC is not set +# CONFIG_QCOM_SPMI_VADC is not set +# CONFIG_QCOM_SPMI_ADC5 is not set +# CONFIG_ROCKCHIP_SARADC is not set +# CONFIG_RZG2L_ADC is not set +# CONFIG_TI_ADS1015 is not set +CONFIG_IIO_ST_LSM6DSX=y +# CONFIG_SENSORS_ISL29018 is not set +# CONFIG_VCNL4000 is not set +# CONFIG_IIO_ST_MAGN_3AXIS is not set +# CONFIG_MPL3115 is not set +# CONFIG_PWM_BCM2835 is not set +# CONFIG_PWM_BRCMSTB is not set +CONFIG_PWM_FSL_FTM=m +CONFIG_PWM_IMX27=y +# CONFIG_PWM_MESON is not set +# CONFIG_PWM_MTK_DISP is not set +# CONFIG_PWM_MEDIATEK is not set +# CONFIG_PWM_RCAR is not set +# CONFIG_PWM_RENESAS_TPU is not set +# CONFIG_PWM_ROCKCHIP is not set +# CONFIG_PWM_SAMSUNG is not set +# CONFIG_PWM_SL28CPLD is not set +# CONFIG_PWM_SUN4I is not set +# CONFIG_PWM_TEGRA is not set +# CONFIG_PWM_VISCONTI is not set +# CONFIG_SL28CPLD_INTC is not set +# CONFIG_QCOM_PDC is not set +# CONFIG_RESET_QCOM_AOSS is not set +# CONFIG_RESET_QCOM_PDC is not set +# CONFIG_RESET_RZG2L_USBPHY_CTRL is not set +# CONFIG_RESET_TI_SCI is not set +CONFIG_PHY_CADENCE_SALVO=y +CONFIG_PHY_MIXEL_MIPI_DPHY=y +# CONFIG_PHY_SUN4I_USB is not set +# CONFIG_PHY_CADENCE_SIERRA is not set +# CONFIG_PHY_FSL_IMX8M_PCIE is not set +# CONFIG_PHY_HI6220_USB is not set +# CONFIG_PHY_HISTB_COMBPHY is not set +# CONFIG_PHY_HISI_INNO_USB2 is not set +# CONFIG_PHY_MVEBU_CP110_COMPHY is not set +# CONFIG_PHY_MTK_TPHY is not set +# CONFIG_PHY_QCOM_QMP is not set +# CONFIG_PHY_QCOM_QUSB2 is not set +CONFIG_PHY_SAMSUNG_USB2=y +# CONFIG_PHY_QCOM_USB_SNPS_FEMTO_V2 is not set +# CONFIG_PHY_RCAR_GEN3_PCIE is not set +# CONFIG_PHY_RCAR_GEN3_USB2 is not set +# CONFIG_PHY_RCAR_GEN3_USB3 is not set +# CONFIG_PHY_ROCKCHIP_EMMC is not set +# CONFIG_PHY_ROCKCHIP_INNO_HDMI is not set +# CONFIG_PHY_ROCKCHIP_INNO_USB2 is not set +# CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY is not set +# CONFIG_PHY_ROCKCHIP_PCIE is not set +# CONFIG_PHY_ROCKCHIP_TYPEC is not set +# CONFIG_PHY_SAMSUNG_UFS is not set +# CONFIG_PHY_UNIPHIER_USB2 is not set +# CONFIG_PHY_UNIPHIER_USB3 is not set +# CONFIG_PHY_TEGRA_XUSB is not set +# CONFIG_PHY_AM654_SERDES is not set +# CONFIG_PHY_J721E_WIZ is not set +CONFIG_FSL_IMX8_DDR_PMU=y +# CONFIG_QCOM_L2_PMU is not set +# CONFIG_QCOM_L3_PMU is not set +# CONFIG_MTK_EFUSE is not set +# CONFIG_QCOM_QFPROM is not set +# CONFIG_ROCKCHIP_EFUSE is not set +# CONFIG_NVMEM_SUNXI_SID is not set +# CONFIG_UNIPHIER_EFUSE is not set +# CONFIG_MESON_EFUSE is not set +# CONFIG_NVMEM_RMEM is not set +# CONFIG_NVMEM_LAYERSCAPE_SFP is not set +# CONFIG_FPGA_MGR_ALTERA_CVP is not set +# CONFIG_FPGA_MGR_STRATIX10_SOC is not set +# CONFIG_SLIMBUS is not set +# CONFIG_SLIM_QCOM_NGD_CTRL is not set +# CONFIG_INTERCONNECT_IMX is not set +# CONFIG_INTERCONNECT_IMX8MM is not set +# CONFIG_INTERCONNECT_IMX8MN is not set +# CONFIG_INTERCONNECT_IMX8MQ is not set +# CONFIG_INTERCONNECT_QCOM is not set +# CONFIG_INTERCONNECT_QCOM_MSM8916 is not set +# CONFIG_INTERCONNECT_QCOM_OSM_L3 is not set +# CONFIG_INTERCONNECT_QCOM_SC7280 is not set +# CONFIG_INTERCONNECT_QCOM_SDM845 is not set +# CONFIG_INTERCONNECT_QCOM_SM8150 is not set +# CONFIG_INTERCONNECT_QCOM_SM8250 is not set +# CONFIG_INTERCONNECT_QCOM_SM8350 is not set +# CONFIG_INTERCONNECT_QCOM_SM8450 is not set +# CONFIG_TMPFS_POSIX_ACL is not set +# CONFIG_CONFIGFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_UBIFS_FS=y +CONFIG_SQUASHFS_XZ=y +CONFIG_CRYPTO_USER=y +CONFIG_CRYPTO_TEST=m +CONFIG_CRYPTO_DH=m +CONFIG_CRYPTO_CHACHA20POLY1305=m +CONFIG_CRYPTO_CFB=m +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_OFB=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_VMAC=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_RMD160=m +CONFIG_CRYPTO_STREEBOG=m +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_SEED=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_USER_API_HASH=m +CONFIG_CRYPTO_USER_API_SKCIPHER=m +CONFIG_CRYPTO_USER_API_AEAD=m +# CONFIG_CRYPTO_DEV_SUN8I_CE is not set +# CONFIG_CRYPTO_DEV_FSL_DPAA2_CAAM is not set +# CONFIG_CRYPTO_DEV_QCOM_RNG is not set +CONFIG_CRYPTO_DEV_AMLOGIC_GXL=m +CONFIG_INDIRECT_PIO=y +CONFIG_CRC_CCITT=m +# CONFIG_CRYPTO_DEV_HISI_SEC2 is not set +# CONFIG_CRYPTO_DEV_HISI_ZIP is not set +# CONFIG_CRYPTO_DEV_HISI_HPRE is not set +# CONFIG_CRYPTO_DEV_HISI_TRNG is not set +CONFIG_IRQ_POLL=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_INFO_REDUCED is not set +CONFIG_CORESIGHT=y +CONFIG_CORESIGHT_LINK_AND_SINK_TMC=y +CONFIG_CORESIGHT_SOURCE_ETM4X=y diff --git a/board/bsh/common/imx8mn-bsh-smm-s2/patches/arm-trusted-firmware/0001-fix-imx8m-drop-UARTs-domain-permissions-setting.patch b/board/bsh/common/imx8mn-bsh-smm-s2/patches/arm-trusted-firmware/0001-fix-imx8m-drop-UARTs-domain-permissions-setting.patch new file mode 100644 index 00000000..74b12df3 --- /dev/null +++ b/board/bsh/common/imx8mn-bsh-smm-s2/patches/arm-trusted-firmware/0001-fix-imx8m-drop-UARTs-domain-permissions-setting.patch @@ -0,0 +1,65 @@ +From 0d12fc41d6c68b257de1610a1511144d731f9af4 Mon Sep 17 00:00:00 2001 +From: Dario Binacchi +Date: Wed, 24 Jul 2024 10:46:49 +0200 +Subject: [PATCH] fix(imx8m): drop UARTs domain permissions setting + +The commit d76f012ea8fc0 ("refactor(imx8m): replace magic number with +enum type") also hardcodes the domain permissions configuration for the +UARTs, causing a regression for any board using a boot console different +from UART2. Indeed, previously, the RDC_PDAP_UARTn registers were set to +the reset value (0xff), meaning all domains were enabled for read and +write access. + +This patch partially reverts that commit to fix the regression. + +Fixes: d76f012ea8fc0 ("refactor(imx8m): replace magic number with enum type") +Change-Id: I2670bf485372f32ef45cebb72a7694a9a800f417 +Signed-off-by: Dario Binacchi +Upstream: https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/30131 +--- + plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c | 2 -- + plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c | 2 -- + plat/imx/imx8m/imx8mp/imx8mp_bl31_setup.c | 1 - + 3 files changed, 5 deletions(-) + +diff --git a/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c b/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c +index f6e46eb67bc9..539df931a6a4 100644 +--- a/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c ++++ b/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c +@@ -67,8 +67,6 @@ static const struct imx_rdc_cfg rdc[] = { + RDC_MDAn(RDC_MDA_M4, DID1), + + /* peripherals domain permission */ +- RDC_PDAPn(RDC_PDAP_UART4, D1R | D1W), +- RDC_PDAPn(RDC_PDAP_UART2, D0R | D0W), + + /* memory region */ + +diff --git a/plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c b/plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c +index befa7698f912..604ef3cae6dc 100644 +--- a/plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c ++++ b/plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c +@@ -53,8 +53,6 @@ static const struct imx_rdc_cfg rdc[] = { + RDC_MDAn(RDC_MDA_M7, DID1), + + /* peripherals domain permission */ +- RDC_PDAPn(RDC_PDAP_UART4, D1R | D1W), +- RDC_PDAPn(RDC_PDAP_UART2, D0R | D0W), + + /* memory region */ + RDC_MEM_REGIONn(16, 0x0, 0x0, 0xff), +diff --git a/plat/imx/imx8m/imx8mp/imx8mp_bl31_setup.c b/plat/imx/imx8m/imx8mp/imx8mp_bl31_setup.c +index ffad3d159e59..5251c28e6ba8 100644 +--- a/plat/imx/imx8m/imx8mp/imx8mp_bl31_setup.c ++++ b/plat/imx/imx8m/imx8mp/imx8mp_bl31_setup.c +@@ -54,7 +54,6 @@ static const struct imx_rdc_cfg rdc[] = { + RDC_MDAn(RDC_MDA_M7, DID1), + + /* peripherals domain permission */ +- RDC_PDAPn(RDC_PDAP_UART2, D0R | D0W), + + /* memory region */ + +-- +2.43.0 + diff --git a/board/bsh/common/imx8mn-bsh-smm-s2/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/bsh/common/imx8mn-bsh-smm-s2/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 00000000..6f02bfbb --- /dev/null +++ b/board/bsh/common/imx8mn-bsh-smm-s2/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 7efa89e1b4e4106ee05d68e876c8efbb146364d89cfd5d26bf4647b09c08f32b arm-trusted-firmware-v2.10-git4.tar.gz diff --git a/board/bsh/common/imx8mn-bsh-smm-s2/patches/linux-headers/linux-headers.hash b/board/bsh/common/imx8mn-bsh-smm-s2/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/bsh/common/imx8mn-bsh-smm-s2/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/bsh/common/imx8mn-bsh-smm-s2/patches/linux/linux.hash b/board/bsh/common/imx8mn-bsh-smm-s2/patches/linux/linux.hash new file mode 100644 index 00000000..53eb1438 --- /dev/null +++ b/board/bsh/common/imx8mn-bsh-smm-s2/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 774698422ee54c5f1e704456f37c65c06b51b4e9a8b0866f34580d86fef8e226 linux-6.10.tar.xz diff --git a/board/bsh/common/imx8mn-bsh-smm-s2/patches/uboot/uboot.hash b/board/bsh/common/imx8mn-bsh-smm-s2/patches/uboot/uboot.hash new file mode 100644 index 00000000..fe9b4f53 --- /dev/null +++ b/board/bsh/common/imx8mn-bsh-smm-s2/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f591da9ab90ef3d6b3d173766d0ddff90c4ed7330680897486117df390d83c8f u-boot-2024.07.tar.bz2 diff --git a/board/bsh/imx6ulz-bsh-smm-m2/flash.sh b/board/bsh/imx6ulz-bsh-smm-m2/flash.sh new file mode 100755 index 00000000..b2a61064 --- /dev/null +++ b/board/bsh/imx6ulz-bsh-smm-m2/flash.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +if [ $# -eq 0 ]; then + OUTPUT_DIR=output +else + OUTPUT_DIR=$1 +fi + +if ! test -d "${OUTPUT_DIR}" ; then + echo "ERROR: no output directory specified." + echo "Usage: $0 OUTPUT_DIR" + echo "" + echo "Arguments:" + echo " OUTPUT_DIR The Buildroot output directory." + exit 1 +fi + +IMAGES_DIR="${OUTPUT_DIR}/images" + +"${OUTPUT_DIR}"/host/bin/uuu -v -b "${IMAGES_DIR}/nand-full.lst" \ + "${IMAGES_DIR}/u-boot-with-spl.imx" \ + "${IMAGES_DIR}/u-boot-with-spl.imx" \ + "${IMAGES_DIR}/rootfs.ubifs" \ + "${IMAGES_DIR}/zImage" \ + "${IMAGES_DIR}/imx6ulz-bsh-smm-m2.dtb" diff --git a/board/bsh/imx6ulz-bsh-smm-m2/linux.config b/board/bsh/imx6ulz-bsh-smm-m2/linux.config new file mode 100644 index 00000000..7da8d4ab --- /dev/null +++ b/board/bsh/imx6ulz-bsh-smm-m2/linux.config @@ -0,0 +1,303 @@ +CONFIG_SYSVIPC=y +CONFIG_NO_HZ_IDLE=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_CGROUPS=y +CONFIG_CGROUP_FREEZER=y +CONFIG_RELAY=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_EXPERT=y +CONFIG_ARCH_MULTI_V6=y +CONFIG_ARCH_MXC=y +CONFIG_SOC_IMX6Q=y +CONFIG_SOC_IMX6SL=y +CONFIG_SOC_IMX6SLL=y +CONFIG_SOC_IMX6SX=y +CONFIG_SOC_IMX6UL=y +CONFIG_SMP=y +CONFIG_HAVE_ARM_ARCH_TIMER=y +CONFIG_ARM_PSCI=y +CONFIG_HIGHMEM=y +CONFIG_ARCH_FORCE_MAX_ORDER=14 +CONFIG_CMDLINE="noinitrd console=ttymxc0,115200" +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_STAT=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_CPU_FREQ_GOV_SCHEDUTIL=y +CONFIG_CPUFREQ_DT=y +CONFIG_ARM_IMX6Q_CPUFREQ=y +CONFIG_ARM_IMX_CPUFREQ_DT=y +CONFIG_CPU_IDLE=y +CONFIG_ARM_CPUIDLE=y +CONFIG_ARM_PSCI_CPUIDLE=y +CONFIG_VFP=y +CONFIG_NEON=y +CONFIG_PM_DEBUG=y +CONFIG_PM_TEST_SUSPEND=y +CONFIG_KPROBES=y +# CONFIG_GCC_PLUGINS is not set +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_BINFMT_MISC=m +# CONFIG_COMPAT_BRK is not set +CONFIG_CMA=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IPV6_SIT=m +CONFIG_NETFILTER=y +CONFIG_IP_NF_IPTABLES=y +CONFIG_IP_NF_FILTER=y +CONFIG_VLAN_8021Q=y +CONFIG_LLC2=y +CONFIG_DNS_RESOLVER=y +CONFIG_NET_PKTGEN=m +CONFIG_BT=y +CONFIG_BT_RFCOMM=y +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=y +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_HIDP=y +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_ATH3K=y +CONFIG_BT_HCIUART_LL=y +CONFIG_BT_HCIUART_3WIRE=y +CONFIG_BT_HCIUART_BCM=y +CONFIG_BT_HCIVHCI=y +CONFIG_CFG80211=y +CONFIG_NL80211_TESTMODE=y +CONFIG_MAC80211=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_STANDALONE is not set +CONFIG_FW_LOADER_USER_HELPER=y +CONFIG_BRCMSTB_GISB_ARB=y +CONFIG_IMX_WEIM=y +CONFIG_VEXPRESS_CONFIG=y +CONFIG_CONNECTOR=y +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_CFI=y +CONFIG_MTD_JEDECPROBE=y +CONFIG_MTD_CFI_INTELEXT=y +CONFIG_MTD_CFI_AMDSTD=y +CONFIG_MTD_CFI_STAA=y +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_PHYSMAP_OF=y +CONFIG_MTD_DATAFLASH=y +CONFIG_MTD_SST25L=y +CONFIG_MTD_RAW_NAND=y +CONFIG_MTD_NAND_GPMI_NAND=y +CONFIG_MTD_NAND_MXC=y +CONFIG_MTD_SPI_NOR=y +# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set +CONFIG_MTD_UBI=y +CONFIG_MTD_UBI_FASTMAP=y +CONFIG_MTD_UBI_BLOCK=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=65536 +CONFIG_EEPROM_AT25=y +CONFIG_NETDEVICES=y +# CONFIG_ETHERNET is not set +# CONFIG_USB_NET_DRIVERS is not set +CONFIG_BRCMFMAC=m +CONFIG_HOSTAP=y +CONFIG_INPUT_MISC=y +CONFIG_SERIO_SERPORT=m +CONFIG_VT_HW_CONSOLE_BINDING=y +# CONFIG_LEGACY_PTYS is not set +CONFIG_SERIAL_IMX=y +CONFIG_SERIAL_IMX_CONSOLE=y +CONFIG_SERIAL_FSL_LPUART=y +CONFIG_SERIAL_FSL_LPUART_CONSOLE=y +CONFIG_SERIAL_DEV_BUS=y +CONFIG_SPI=y +CONFIG_SPI_FSL_QUADSPI=y +CONFIG_SPI_GPIO=y +CONFIG_SPI_IMX=y +CONFIG_SPI_SPIDEV=y +CONFIG_PTP_1588_CLOCK=y +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_MXC=y +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_SYSCON=y +CONFIG_POWER_RESET_SYSCON_POWEROFF=y +CONFIG_SENSORS_GPIO_FAN=y +CONFIG_THERMAL=y +CONFIG_THERMAL_STATISTICS=y +CONFIG_THERMAL_WRITABLE_TRIPS=y +CONFIG_CPU_THERMAL=y +CONFIG_IMX_THERMAL=y +CONFIG_IMX8MM_THERMAL=y +CONFIG_WATCHDOG=y +CONFIG_IMX2_WDT=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_ANATOP=y +CONFIG_REGULATOR_GPIO=y +CONFIG_MEDIA_CEC_SUPPORT=y +CONFIG_IMX_IPUV3_CORE=y +CONFIG_USB=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_HCD_TEST_MODE=y +CONFIG_USB_ACM=m +CONFIG_USB_CHIPIDEA=y +CONFIG_USB_CHIPIDEA_UDC=y +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_EHSET_TEST_FIXTURE=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_USB_MXS_PHY=y +CONFIG_USB_ULPI=y +CONFIG_USB_GADGET=y +CONFIG_USB_SNP_UDC_PLAT=y +CONFIG_USB_BDC_UDC=y +CONFIG_USB_CONFIGFS=y +CONFIG_USB_CONFIGFS_SERIAL=y +CONFIG_USB_CONFIGFS_ACM=y +CONFIG_USB_CONFIGFS_OBEX=y +CONFIG_USB_CONFIGFS_NCM=y +CONFIG_USB_CONFIGFS_ECM=y +CONFIG_USB_CONFIGFS_ECM_SUBSET=y +CONFIG_USB_CONFIGFS_RNDIS=y +CONFIG_USB_CONFIGFS_EEM=y +CONFIG_USB_CONFIGFS_MASS_STORAGE=y +CONFIG_USB_CONFIGFS_F_LB_SS=y +CONFIG_USB_CONFIGFS_F_FS=y +CONFIG_USB_CONFIGFS_F_HID=y +CONFIG_USB_CONFIGFS_F_PRINTER=y +CONFIG_USB_ZERO=m +CONFIG_USB_ETH=m +CONFIG_USB_G_NCM=m +CONFIG_USB_GADGETFS=m +CONFIG_USB_FUNCTIONFS=m +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_G_SERIAL=m +CONFIG_TYPEC=y +CONFIG_TYPEC_TCPM=y +CONFIG_MMC=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SDHCI_ESDHC_IMX=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_INTF_DEV_UIE_EMUL=y +CONFIG_RTC_DRV_MXC=y +CONFIG_RTC_DRV_MXC_V2=y +CONFIG_RTC_DRV_SNVS=y +CONFIG_DMADEVICES=y +CONFIG_FSL_EDMA=y +CONFIG_FSL_QDMA=m +CONFIG_IMX_SDMA=m +CONFIG_MXS_DMA=y +CONFIG_DMATEST=y +CONFIG_DMABUF_HEAPS=y +CONFIG_DMABUF_HEAPS_SYSTEM=y +CONFIG_DMABUF_HEAPS_CMA=y +# CONFIG_VIRTIO_MENU is not set +# CONFIG_VHOST_MENU is not set +CONFIG_COMMON_CLK_PWM=y +CONFIG_CLK_IMX8MN=y +CONFIG_SOC_BRCMSTB=y +CONFIG_IMX_GPCV2_PM_DOMAINS=y +CONFIG_SOC_IMX8M=y +CONFIG_SOC_TI=y +CONFIG_MEMORY=y +CONFIG_PWM=y +CONFIG_PWM_FSL_FTM=m +CONFIG_PWM_IMX27=y +CONFIG_PWM_IMX_TPM=y +CONFIG_PHY_CADENCE_SALVO=y +CONFIG_FSL_IMX8_DDR_PMU=y +CONFIG_NVMEM_IMX_OCOTP=y +CONFIG_NVMEM_SNVS_LPGPR=y +CONFIG_EXT2_FS=y +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +CONFIG_EXT3_FS=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_AUTOFS_FS=y +CONFIG_ISO9660_FS=m +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +CONFIG_MSDOS_FS=m +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_XATTR=y +CONFIG_UBIFS_FS=y +# CONFIG_NETWORK_FILESYSTEMS is not set +CONFIG_NLS_DEFAULT="cp437" +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_UTF8=y +CONFIG_SECURITYFS=y +CONFIG_CRYPTO_USER=y +CONFIG_CRYPTO_TEST=m +CONFIG_CRYPTO_DH=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_SEED=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_CFB=m +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_OFB=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_CHACHA20POLY1305=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_RMD160=m +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_STREEBOG=m +CONFIG_CRYPTO_VMAC=m +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_USER_API_HASH=m +CONFIG_CRYPTO_USER_API_SKCIPHER=m +CONFIG_CRYPTO_USER_API_AEAD=m +CONFIG_CRYPTO_DEV_FSL_CAAM=y +CONFIG_CRYPTO_DEV_SAHARA=y +CONFIG_CRYPTO_DEV_MXS_DCP=y +CONFIG_CRYPTO_DEV_AMLOGIC_GXL=m +CONFIG_CRC_T10DIF=y +CONFIG_CRC7=m +CONFIG_LIBCRC32C=m +CONFIG_DMA_CMA=y +CONFIG_CMA_SIZE_MBYTES=64 +CONFIG_IRQ_POLL=y +CONFIG_PRINTK_TIME=y +# CONFIG_DEBUG_BUGVERBOSE is not set +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_FS=y +# CONFIG_SLUB_DEBUG is not set +# CONFIG_SCHED_DEBUG is not set +CONFIG_PROVE_LOCKING=y +# CONFIG_FTRACE is not set +CONFIG_CORESIGHT=y diff --git a/board/bsh/imx6ulz-bsh-smm-m2/nand-full.lst b/board/bsh/imx6ulz-bsh-smm-m2/nand-full.lst new file mode 100644 index 00000000..7c5a884d --- /dev/null +++ b/board/bsh/imx6ulz-bsh-smm-m2/nand-full.lst @@ -0,0 +1,40 @@ +# @_flash.bin | bootloader +# @_image [_flash.bin] | image burn to nand, default is the same as bootloader +# @_filesystem | filesystem to burn +# @_kernel | kernel image +# @_dtb | dtb image + +# This command will be run when i.MX6/7 i.MX8MM, i.MX8MQ +SDP: boot -f _flash.bin + +# These commands will be run when use SPL and will be skipped if no spl +# SDPU will be deprecated. please use SDPV instead of SDPU +# { +SDPU: delay 1000 +SDPU: write -f _flash.bin -offset 0x57c00 +SDPU: jump +# } + +# These commands will be run when use SPL and will be skipped if no spl +# if (SPL support SDPV) +# { +SDPV: delay 1000 +SDPV: write -f _flash.bin -offset 0x11000 +SDPV: jump +# } + +FB: ucmd setenv fastboot_buffer ${loadaddr} +FB[-t 60000]: ucmd nand erase.chip +FB[-t 60000]: ucmd ubi part rootfs +FB[-t 60000]: ucmd ubi create root - +FB: download -f _filesystem +FB[-t 60000]: ucmd ubi write ${loadaddr} root ${filesize} + +FB: download -f _kernel +FB[-t 60000]: ucmd nand write ${loadaddr} kernel ${filesize} + +FB: download -f _dtb +FB[-t 8000]: ucmd nand write ${loadaddr} nanddtb ${filesize} +FB: ucmd setenv loadaddr 0x82000000 + +FB: done diff --git a/board/bsh/imx6ulz-bsh-smm-m2/patches/linux-headers/linux-headers.hash b/board/bsh/imx6ulz-bsh-smm-m2/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/bsh/imx6ulz-bsh-smm-m2/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/bsh/imx6ulz-bsh-smm-m2/patches/linux/linux.hash b/board/bsh/imx6ulz-bsh-smm-m2/patches/linux/linux.hash new file mode 100644 index 00000000..25e4464a --- /dev/null +++ b/board/bsh/imx6ulz-bsh-smm-m2/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 365ff26a30e206de9b18489f45d38582a0a61b7c5919f8ab89295a47316784e1 linux-6.1.68.tar.xz diff --git a/board/bsh/imx6ulz-bsh-smm-m2/patches/uboot/uboot.hash b/board/bsh/imx6ulz-bsh-smm-m2/patches/uboot/uboot.hash new file mode 100644 index 00000000..c0b3bcdd --- /dev/null +++ b/board/bsh/imx6ulz-bsh-smm-m2/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 e00e6c6f014e046101739d08d06f328811cebcf5ae101348f409cbbd55ce6900 u-boot-2023.10.tar.bz2 diff --git a/board/bsh/imx6ulz-bsh-smm-m2/post-build.sh b/board/bsh/imx6ulz-bsh-smm-m2/post-build.sh new file mode 100755 index 00000000..eac82cc2 --- /dev/null +++ b/board/bsh/imx6ulz-bsh-smm-m2/post-build.sh @@ -0,0 +1,4 @@ +#!/bin/sh +BOARD_DIR="$(dirname "$0")" + +cp "${BOARD_DIR}/nand-full.lst" "${BINARIES_DIR}" diff --git a/board/bsh/imx6ulz-bsh-smm-m2/readme.txt b/board/bsh/imx6ulz-bsh-smm-m2/readme.txt new file mode 100644 index 00000000..e6641e6d --- /dev/null +++ b/board/bsh/imx6ulz-bsh-smm-m2/readme.txt @@ -0,0 +1,67 @@ +i.MX6ULZ BSH SMM M2 +================== + +This tutorial describes how to use the predefined Buildroot +configuration for the i.MX6ULZ BSH SMM M2 board. + +Building +-------- + +Configure buildroot: + + $ make imx6ulz_bsh_smm_m2_defconfig + +Change settings to fit your needs (optional): + + $ make menuconfig + +Compile everything and build the rootfs image: + + $ make + + +Result of the build +------------------- + +After building, the output/images directory contains: + + output/images/ + ├── imx6ulz-bsh-smm-m2.dtb + ├── zImage + ├── nand-full.lst + ├── rootfs.ubifs + └── u-boot-with-spl.imx + +Preparing the board +------------------- + +Plug the USB type A to micro B cable into the USB Debug +Connector (DBG UART). Use serial port settings 115200 8N1 +to access the debug console. + +Plug another USB type A to micro B cable into the USB-OTG +Connector (USB1). This connection is used to flash the board +firmware using the Freescale/NXP UUU tool. + +Connect the power supply/adaptor to the DC Power Jack (labelled ++5V). + + +Flashing +-------- + +Power up the board by switching on the Power ON Switch, which is +placed right next to the DC Jack. + +Enter the following U-Boot commands on the debug serial console: + + $ nand erase.chip + $ reset + +Flash the built images directly to board’s memory. On your computer, +run: + + $ board/bsh/imx6ulz-bsh-smm-m2/flash.sh output/ + +It will flash the bootloader, the Device Tree Blob, the kernel image +and the UBI root file system. diff --git a/board/bsh/imx8mn-bsh-smm-s2-pro/extlinux.conf b/board/bsh/imx8mn-bsh-smm-s2-pro/extlinux.conf new file mode 100644 index 00000000..91113547 --- /dev/null +++ b/board/bsh/imx8mn-bsh-smm-s2-pro/extlinux.conf @@ -0,0 +1,4 @@ +label buildroot + kernel /boot/Image + devicetree /boot/freescale/imx8mn-bsh-smm-s2pro.dtb + append root=PARTUUID=%PARTUUID% rootwait rw diff --git a/board/bsh/imx8mn-bsh-smm-s2-pro/flash.sh b/board/bsh/imx8mn-bsh-smm-s2-pro/flash.sh new file mode 100755 index 00000000..17b20f00 --- /dev/null +++ b/board/bsh/imx8mn-bsh-smm-s2-pro/flash.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +if [ $# -eq 0 ]; then + OUTPUT_DIR=output +else + OUTPUT_DIR=$1 +fi + +if ! test -d "${OUTPUT_DIR}" ; then + echo "ERROR: no output directory specified." + echo "Usage: $0 OUTPUT_DIR" + echo "" + echo "Arguments:" + echo " OUTPUT_DIR The Buildroot output directory." + exit 1 +fi + +IMAGES_DIR=${OUTPUT_DIR}/images + +${OUTPUT_DIR}/host/bin/uuu -v -b emmc_all \ + ${IMAGES_DIR}/flash.bin \ + ${IMAGES_DIR}/sdcard.img + diff --git a/board/bsh/imx8mn-bsh-smm-s2-pro/genimage.cfg b/board/bsh/imx8mn-bsh-smm-s2-pro/genimage.cfg new file mode 100644 index 00000000..10c52548 --- /dev/null +++ b/board/bsh/imx8mn-bsh-smm-s2-pro/genimage.cfg @@ -0,0 +1,17 @@ +image sdcard.img { + hdimage { + partition-table-type = "gpt" + } + + partition imx-boot { + in-partition-table = "no" + image = "flash.bin" + offset = 32K + } + + partition rootfs { + offset = 8M + image = "rootfs.ext4" + partition-uuid = %PARTUUID% + } +} diff --git a/board/bsh/imx8mn-bsh-smm-s2-pro/post-build.sh b/board/bsh/imx8mn-bsh-smm-s2-pro/post-build.sh new file mode 100755 index 00000000..bf8861f6 --- /dev/null +++ b/board/bsh/imx8mn-bsh-smm-s2-pro/post-build.sh @@ -0,0 +1,7 @@ +#!/bin/sh +BOARD_DIR="$(dirname $0)" +PARTUUID="$($HOST_DIR/bin/uuidgen)" + +install -d "$TARGET_DIR/boot/extlinux/" +sed "s/%PARTUUID%/$PARTUUID/g" "$BOARD_DIR/extlinux.conf" > "$TARGET_DIR/boot/extlinux/extlinux.conf" +sed "s/%PARTUUID%/$PARTUUID/g" "$BOARD_DIR/genimage.cfg" > "$BINARIES_DIR/genimage.cfg" diff --git a/board/bsh/imx8mn-bsh-smm-s2-pro/post-image.sh b/board/bsh/imx8mn-bsh-smm-s2-pro/post-image.sh new file mode 100755 index 00000000..3452fd45 --- /dev/null +++ b/board/bsh/imx8mn-bsh-smm-s2-pro/post-image.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +support/scripts/genimage.sh -c ${BINARIES_DIR}/genimage.cfg diff --git a/board/bsh/imx8mn-bsh-smm-s2-pro/readme.txt b/board/bsh/imx8mn-bsh-smm-s2-pro/readme.txt new file mode 100644 index 00000000..5763f164 --- /dev/null +++ b/board/bsh/imx8mn-bsh-smm-s2-pro/readme.txt @@ -0,0 +1,73 @@ +i.MX8MN BSH SMM S2 PRO +====================== + +How to build it +--------------- + +Configure buildroot: + + $ make imx8mn_bsh_smm_s2_pro_defconfig + +Change settings to fit your needs (optional): + + $ make menuconfig + +Compile everything and build the rootfs image: + + $ make + + +Result of the build +------------------- + +After building, the output/images directory contains: + + output/images/ + ├── bl31.bin + ├── Image + ├── flash.bin + ├── ddr3* + ├── rootfs.ext2 + ├── rootfs.ext4 -> rootfs.ext2 + ├── rootfs.tar + ├── sdcard.img + ├── u-boot.bin + ├── u-boot-nodtb.bin + └── u-boot-spl.bin + + +Preparing the board +------------------- + +Plug the USB type A to micro B cable into the USB Debug +Connector (DBG UART). Use serial port settings 115200 8N1 +to access the debug console. + +Plug another USB type A to micro B cable into the USB-OTG +Connector (USB1). This connection is used to flash the board +firmware using the Freescale/NXP UUU tool. + +Connect the power supply/adaptor to the DC Power Jack (labelled ++5V). + + +Flashing the emmc card image +---------------------------- + +Power up the board by switching on the Power ON Switch, which is +placed right next to the DC Jack. + +Enter the following U-Boot commands on the debug serial console: + + $ fastboot usb 0 + +Flash the images on eMMC. On your computer, run: + + $ board/bsh/imx8mn-bsh-smm-s2-pro/flash.sh output/ + + +Booting the board +----------------- + +By default the bootloader will search for the first valid image, +starting with the internal eMMC. diff --git a/board/bsh/imx8mn-bsh-smm-s2/flash.sh b/board/bsh/imx8mn-bsh-smm-s2/flash.sh new file mode 100755 index 00000000..1f343d51 --- /dev/null +++ b/board/bsh/imx8mn-bsh-smm-s2/flash.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +if [ $# -eq 0 ]; then + OUTPUT_DIR=output +else + OUTPUT_DIR=$1 +fi + +if ! test -d "${OUTPUT_DIR}" ; then + echo "ERROR: no output directory specified." + echo "Usage: $0 OUTPUT_DIR" + echo "" + echo "Arguments:" + echo " OUTPUT_DIR The Buildroot output directory." + exit 1 +fi + +IMAGES_DIR=${OUTPUT_DIR}/images + +${OUTPUT_DIR}/host/bin/uuu -v -b ${IMAGES_DIR}/nand-full.lst \ + ${IMAGES_DIR}/flash.bin \ + ${IMAGES_DIR}/flash.bin \ + ${IMAGES_DIR}/rootfs.ubifs \ + ${IMAGES_DIR}/Image \ + ${IMAGES_DIR}/freescale/imx8mn-bsh-smm-s2.dtb + diff --git a/board/bsh/imx8mn-bsh-smm-s2/nand-full.lst b/board/bsh/imx8mn-bsh-smm-s2/nand-full.lst new file mode 100644 index 00000000..c01d2d6c --- /dev/null +++ b/board/bsh/imx8mn-bsh-smm-s2/nand-full.lst @@ -0,0 +1,29 @@ +# @_flash.bin | bootloader +# @_image [_flash.bin] | image burn to nand, default is the same as bootloader +# @_filesystem | filesystem to burn +# @_kernel | kernel image +# @_dtb | dtb image + +# This command will be run when ROM support stream mode +# i.MX8QXP, i.MX8QM +SDPS: boot -f _flash.bin + +FB: ucmd setenv fastboot_buffer ${loadaddr} +FB: download -f _image +# Burn image to nandfit partition if needed +FB: ucmd if env exists nandfit_part; then nand erase.part nandfit; nand write ${fastboot_buffer} nandfit ${filesize}; else true; fi; +FB: ucmd nandbcb init ${fastboot_buffer} nandboot ${filesize} + +FB[-t 10000]: ucmd ubi part nandrootfs +FB[-t 10000]: ucmd ubi create root - +FB: download -f _filesystem +FB[-t 60000]: ucmd ubi write ${loadaddr} root ${filesize} + +FB: download -f _kernel +FB[-t 10000]: ucmd nand write ${loadaddr} nandkernel ${filesize} + +FB: download -f _dtb +FB[-t 8000]: ucmd nand write ${loadaddr} nanddtb ${filesize} + +FB: reboot +FB: done diff --git a/board/bsh/imx8mn-bsh-smm-s2/post-build.sh b/board/bsh/imx8mn-bsh-smm-s2/post-build.sh new file mode 100755 index 00000000..49df4cd6 --- /dev/null +++ b/board/bsh/imx8mn-bsh-smm-s2/post-build.sh @@ -0,0 +1,4 @@ +#!/bin/sh +BOARD_DIR="$(dirname $0)" + +cp ${BOARD_DIR}/nand-full.lst ${BINARIES_DIR} diff --git a/board/bsh/imx8mn-bsh-smm-s2/readme.txt b/board/bsh/imx8mn-bsh-smm-s2/readme.txt new file mode 100644 index 00000000..6b8cd031 --- /dev/null +++ b/board/bsh/imx8mn-bsh-smm-s2/readme.txt @@ -0,0 +1,75 @@ +i.MX8MN BSH SMM S2 +================== + +This tutorial describes how to use the predefined Buildroot +configuration for the i.MX8MN BSH SMM S2 board. + +Building +-------- + +Configure buildroot: + + $ make imx8mn_bsh_smm_s2_defconfig + +Change settings to fit your needs (optional): + + $ make menuconfig + +Compile everything and build the rootfs image: + + $ make + + +Result of the build +------------------- + +After building, the output/images directory contains: + + output/images/ + ├── bl31.bin + ├── ddr3* + ├── flash.bin + ├── freescale/imx8mn-bsh-smm-s2.dtb + ├── Image + ├── nand-full.lst + ├── rootfs.ext2 + ├── rootfs.ext4 -> rootfs.ext2 + ├── rootfs.tar + ├── rootfs.ubifs + ├── u-boot.bin + └── u-boot-spl.bin + + +Preparing the board +------------------- + +Plug the USB type A to micro B cable into the USB Debug +Connector (DBG UART). Use serial port settings 115200 8N1 +to access the debug console. + +Plug another USB type A to micro B cable into the USB-OTG +Connector (USB1). This connection is used to flash the board +firmware using the Freescale/NXP UUU tool. + +Connect the power supply/adaptor to the DC Power Jack (labelled ++5V). + + +Flashing +-------- + +Power up the board by switching on the Power ON Switch, which is +placed right next to the DC Jack. + +Enter the following U-Boot commands on the debug serial console: + + $ nand erase.chip + $ reset + +Flash the built images directly to board’s memory. On your computer, +run: + + $ board/bsh/imx8mn-bsh-smm-s2/flash.sh output/ + +It will flash the bootloader, the Device Tree Blob, the kernel image +and the UBI root file system. diff --git a/board/canaan/k210-soc/busybox-tiny.config b/board/canaan/k210-soc/busybox-tiny.config new file mode 100644 index 00000000..9db12b56 --- /dev/null +++ b/board/canaan/k210-soc/busybox-tiny.config @@ -0,0 +1,231 @@ +# +# Additional config changes for busybox-minimal.config +# to reduce the size of the busybox executable. +# + +# +# Settings +# +# CONFIG_INCLUDE_SUSv2 is not set +# CONFIG_LONG_OPTS is not set +# CONFIG_LFS is not set +# CONFIG_FEATURE_DEVPTS is not set +# CONFIG_FEATURE_SYSLOG_INFO is not set +# CONFIG_FEATURE_SYSLOG is not set + +# +# Library Tuning +# +# CONFIG_FEATURE_RTMINMAX is not set +# CONFIG_FEATURE_RTMINMAX_USE_LIBC_DEFINITIONS is not set +# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set +CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y +# CONFIG_FEATURE_EDITING_VI is not set +# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set +# CONFIG_FEATURE_REVERSE_SEARCH is not set +# CONFIG_FEATURE_EDITING_WINCH is not set +# CONFIG_FEATURE_HWIB is not set + +# +# Archival Utilities +# +# CONFIG_ZCAT is not set +# CONFIG_BZCAT is not set +# CONFIG_LZCAT is not set +# CONFIG_XZCAT is not set +# CONFIG_UNLZOP is not set +# CONFIG_LZOPCAT is not set + +# +# Coreutils +# +# CONFIG_CKSUM is not set +# CONFIG_DOS2UNIX is not set +# CONFIG_UNIX2DOS is not set +# CONFIG_DU is not set +# CONFIG_FACTOR is not set +# CONFIG_FOLD is not set +# CONFIG_HEAD is not set +# CONFIG_INSTALL is not set +# CONFIG_LINK is not set +# CONFIG_LOGNAME is not set +# CONFIG_MD5SUM is not set +# CONFIG_SHA1SUM is not set +# CONFIG_SHA256SUM is not set +# CONFIG_SHA512SUM is not set +# CONFIG_SHA3SUM is not set +# CONFIG_MKFIFO is not set +# CONFIG_NICE is not set +# CONFIG_NL is not set +# CONFIG_NOHUP is not set +# CONFIG_OD is not set +# CONFIG_PASTE is not set +# CONFIG_SHRED is not set +# CONFIG_SORT is not set +# CONFIG_TAIL is not set +# CONFIG_TEE is not set +# CONFIG_TIMEOUT is not set +# CONFIG_TR is not set +# CONFIG_UNIQ is not set +# CONFIG_UUDECODE is not set +# CONFIG_BASE32 is not set +# CONFIG_UUENCODE is not set +# CONFIG_WC is not set +# CONFIG_WHOAMI is not set +# CONFIG_WHO is not set +# CONFIG_W is not set +# CONFIG_USERS is not set +# CONFIG_YES is not set + +# +# Common options +# +# CONFIG_FEATURE_VERBOSE is not set + +# +# Debian Utilities +# +# CONFIG_RUN_PARTS is not set +# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set +# CONFIG_FEATURE_RUN_PARTS_FANCY is not set +# CONFIG_START_STOP_DAEMON is not set +# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set +# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set +# CONFIG_WHICH is not set + +# +# klibc-utils +# +# CONFIG_NUKE is not set +# CONFIG_RESUME is not set +# CONFIG_RUN_INIT is not set + +# +# Editors +# +# CONFIG_SED is not set +CONFIG_VI=y +CONFIG_FEATURE_VI_MAX_LEN=4096 +CONFIG_FEATURE_VI_COLON=y +CONFIG_FEATURE_VI_YANKMARK=y +CONFIG_FEATURE_VI_USE_SIGNALS=y +CONFIG_FEATURE_VI_DOT_CMD=y +CONFIG_FEATURE_VI_READONLY=y +CONFIG_FEATURE_VI_SETOPTS=y +CONFIG_FEATURE_VI_SET=y +CONFIG_FEATURE_VI_WIN_RESIZE=y +CONFIG_FEATURE_VI_ASK_TERMINAL=y +CONFIG_FEATURE_VI_UNDO=y + +# +# Finding Utilities +# +CONFIG_GREP=y +# CONFIG_EGREP is not set +# CONFIG_FGREP is not set +# CONFIG_XARGS is not set + +# +# Init Utilities +# +# CONFIG_HALT is not set +# CONFIG_POWEROFF is not set +# CONFIG_FEATURE_WAIT_FOR_INIT is not set +# CONFIG_FEATURE_CALL_TELINIT is not set +# CONFIG_INIT is not set +# CONFIG_LINUXRC is not set + +# +# Login/Password Management Utilities +# +# CONFIG_FEATURE_SHADOWPASSWDS is not set +# CONFIG_USE_BB_CRYPT is not set +# CONFIG_USE_BB_CRYPT_SHA is not set +# CONFIG_ADDUSER is not set +# CONFIG_GETTY is not set +# CONFIG_LOGIN is not set +# CONFIG_PASSWD is not set + +# +# Linux System Utilities +# +# CONFIG_FALLOCATE is not set +# CONFIG_FREERAMDISK is not set +# CONFIG_FSFREEZE is not set +# CONFIG_GETOPT is not set +# CONFIG_XXD is not set +# CONFIG_MESG is not set +# CONFIG_MKE2FS is not set +# CONFIG_MKDOSFS is not set +# CONFIG_FEATURE_MOUNT_CIFS is not set +# CONFIG_FEATURE_MOUNT_FSTAB is not set +# CONFIG_FEATURE_MOUNT_OTHERTAB is not set +# CONFIG_NOLOGIN is not set +# CONFIG_LINUX32 is not set +# CONFIG_LINUX64 is not set +# CONFIG_SETPRIV is not set + +# +# Common options for mount/umount +# +# CONFIG_FEATURE_MOUNT_LOOP is not set +# CONFIG_FEATURE_MOUNT_LOOP_CREATE is not set + +# +# Miscellaneous Utilities +# +# CONFIG_BC is not set +# CONFIG_HEXEDIT is not set +# CONFIG_I2CTRANSFER is not set +# CONFIG_LSSCSI is not set +# CONFIG_MIM is not set +# CONFIG_PARTPROBE is not set +# CONFIG_SETFATTR is not set +# CONFIG_SETSERIAL is not set +# CONFIG_TS is not set + +# +# Networking Utilities +# +# CONFIG_HOSTNAME is not set +# CONFIG_DNSDOMAINNAME is not set +# CONFIG_IFCONFIG is not set +# CONFIG_IFUP is not set +# CONFIG_IFDOWN is not set +# CONFIG_IP is not set +# CONFIG_IPADDR is not set +# CONFIG_IPLINK is not set +# CONFIG_IPROUTE is not set +# CONFIG_NC is not set +# CONFIG_NETSTAT is not set +# CONFIG_PING is not set +# CONFIG_ROUTE is not set +# CONFIG_TC is not set +# CONFIG_TELNET is not set +# CONFIG_WGET is not set +# CONFIG_UDHCPC is not set + +# +# Process Utilities +# +# CONFIG_KILLALL is not set +# CONFIG_KILLALL5 is not set + +# +# Runit Utilities +# +# CONFIG_SVC is not set +# CONFIG_SVOK is not set + +# +# Shells +# +CONFIG_BASH_IS_HUSH=y +# CONFIG_BASH_IS_NONE is not set +# CONFIG_HUSH_SAVEHISTORY is not set + +# +# Options common to all shells +# +# CONFIG_FEATURE_SH_READ_FRAC is not set +# CONFIG_FEATURE_SH_EMBEDDED_SCRIPTS is not set diff --git a/board/canaan/k210-soc/genimage.cfg b/board/canaan/k210-soc/genimage.cfg new file mode 100644 index 00000000..da7d5dba --- /dev/null +++ b/board/canaan/k210-soc/genimage.cfg @@ -0,0 +1,30 @@ +image boot.vfat { + vfat { + file uImage { + image = "uImage" + } + + file k210.dtb { + image = "k210.dtb" + } + } + size = 4M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + image = "boot.vfat" + bootable = "true" + offset = 4M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + size = 64M + } +} diff --git a/board/canaan/k210-soc/linux-sdcard.config b/board/canaan/k210-soc/linux-sdcard.config new file mode 100644 index 00000000..4b0ead78 --- /dev/null +++ b/board/canaan/k210-soc/linux-sdcard.config @@ -0,0 +1,4 @@ +CONFIG_BUILTIN_DTB=n +CONFIG_SOC_CANAAN_K210_DTB_BUILTIN=n +CONFIG_SOC_CANAAN_K210_DTB_SOURCE="" +CONFIG_CMDLINE="earlycon console=ttySIF0 root=/dev/mmcblk0p2 rootwait ro" diff --git a/board/canaan/k210-soc/patches/uboot/0001-riscv-Fix-build-against-binutils-2.38.patch b/board/canaan/k210-soc/patches/uboot/0001-riscv-Fix-build-against-binutils-2.38.patch new file mode 100644 index 00000000..52b496f0 --- /dev/null +++ b/board/canaan/k210-soc/patches/uboot/0001-riscv-Fix-build-against-binutils-2.38.patch @@ -0,0 +1,58 @@ +From 0cf11f3c0478f4286adcfb09bf9137f8b00212e3 Mon Sep 17 00:00:00 2001 +From: Alexandre Ghiti +Date: Mon, 3 Oct 2022 18:07:54 +0200 +Subject: [PATCH] riscv: Fix build against binutils 2.38 + +The following description is copied from the equivalent patch for the +Linux Kernel proposed by Aurelien Jarno: + +>From version 2.38, binutils default to ISA spec version 20191213. This +means that the csr read/write (csrr*/csrw*) instructions and fence.i +instruction has separated from the `I` extension, become two standalone +extensions: Zicsr and Zifencei. As the kernel uses those instruction, +this causes the following build failure: + +arch/riscv/cpu/mtrap.S: Assembler messages: +arch/riscv/cpu/mtrap.S:65: Error: unrecognized opcode `csrr a0,scause' +arch/riscv/cpu/mtrap.S:66: Error: unrecognized opcode `csrr a1,sepc' +arch/riscv/cpu/mtrap.S:67: Error: unrecognized opcode `csrr a2,stval' +arch/riscv/cpu/mtrap.S:70: Error: unrecognized opcode `csrw sepc,a0' + +Signed-off-by: Alexandre Ghiti +Reviewed-by: Bin Meng +Tested-by: Heinrich Schuchardt +Tested-by: Heiko Stuebner +Tested-by: Christian Stewart +Reviewed-by: Rick Chen +(cherry picked from commit 1dde977518f13824b847e23275001191139bc384) +Upstream: https://gitlab.com/u-boot/u-boot/-/commit/1dde977518f13824b847e23275001191139bc384 +Signed-off-by: Romain Naour +--- + arch/riscv/Makefile | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile +index 0b80eb8d864..53d1194ffb6 100644 +--- a/arch/riscv/Makefile ++++ b/arch/riscv/Makefile +@@ -24,7 +24,16 @@ ifeq ($(CONFIG_CMODEL_MEDANY),y) + CMODEL = medany + endif + +-ARCH_FLAGS = -march=$(ARCH_BASE)$(ARCH_A)$(ARCH_C) -mabi=$(ABI) \ ++RISCV_MARCH = $(ARCH_BASE)$(ARCH_A)$(ARCH_C) ++ ++# Newer binutils versions default to ISA spec version 20191213 which moves some ++# instructions from the I extension to the Zicsr and Zifencei extensions. ++toolchain-need-zicsr-zifencei := $(call cc-option-yn, -mabi=$(ABI) -march=$(RISCV_MARCH)_zicsr_zifencei) ++ifeq ($(toolchain-need-zicsr-zifencei),y) ++ RISCV_MARCH := $(RISCV_MARCH)_zicsr_zifencei ++endif ++ ++ARCH_FLAGS = -march=$(RISCV_MARCH) -mabi=$(ABI) \ + -mcmodel=$(CMODEL) + + PLATFORM_CPPFLAGS += $(ARCH_FLAGS) +-- +2.41.0 + diff --git a/board/canaan/k210-soc/post-build.sh b/board/canaan/k210-soc/post-build.sh new file mode 100755 index 00000000..5b6f56a2 --- /dev/null +++ b/board/canaan/k210-soc/post-build.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +MKIMAGE=${HOST_DIR}/bin/mkimage + +# Generate u-Boot kernel image +${MKIMAGE} -A riscv -O linux -T kernel -C none \ + -a 0x80000000 -e 0x80000000 \ + -n Linux -d ${BINARIES_DIR}/loader.bin ${BINARIES_DIR}/uImage + +# Link the kernel-built board dtb file to using the k210.dtb generic +# name for use by genimage.cfg +BOARDDTBKPATH="$(grep BR2_LINUX_KERNEL_INTREE_DTS_NAME ${BR2_CONFIG} | cut -d'=' -f2 | tr -d \")" + +BOARDDTB="$(basename ${BOARDDTBKPATH})" +if [ -z "${BOARDDTB}" ]; then + echo "Board DTB file not specified" + exit 1 +fi + +BOARDDTB="${BINARIES_DIR}/${BOARDDTB}.dtb" +if [ ! -f "${BOARDDTB}" ]; then + echo "Board DTB file not found in ${BINARIES_DIR}" + exit 1 +fi + +TARGETDTB=${BINARIES_DIR}/k210.dtb +rm -f ${TARGETDTB} +ln -s ${BOARDDTB} ${TARGETDTB} diff --git a/board/canaan/k210-soc/rootfs_overlay/init b/board/canaan/k210-soc/rootfs_overlay/init new file mode 120000 index 00000000..a0b71977 --- /dev/null +++ b/board/canaan/k210-soc/rootfs_overlay/init @@ -0,0 +1 @@ +/sbin/init \ No newline at end of file diff --git a/board/canaan/k210-soc/rootfs_overlay/sbin/init b/board/canaan/k210-soc/rootfs_overlay/sbin/init new file mode 100755 index 00000000..d4bf53d4 --- /dev/null +++ b/board/canaan/k210-soc/rootfs_overlay/sbin/init @@ -0,0 +1,41 @@ +#!/bin/sh + +# This script replaces the default busybox init process to avoid having that +# process staying alive and sleeping in the background, (uselessly) consuming +# precious memory. + +# Mount procfs and sysfs +/bin/mount -t proc proc /proc +/bin/mount -t sysfs sysfs /sys + +# When the kernel is directly booted, devtmpfs is not automatically mounted. +# Manually mount it if needed. +devmnt=$(mount | grep -c devtmpfs) +if [ ${devmnt} -eq 0 ]; then + /bin/mount -t devtmpfs devtmpfs /dev +fi + +# Use the /dev/console device node from devtmpfs if possible to not +# confuse glibc's ttyname_r(). +# This may fail (E.G. booted with console=), and errors from exec will +# terminate the shell, so use a subshell for the test +if (exec 0/dev/null; then + exec 0/dev/console + exec 2>/dev/console +fi + +# Clear memory to reduce page fragmentation +echo 3 > /proc/sys/vm/drop_caches + +# Print a fun logo :) +echo " __ _" +echo " / / (_) ____ _ _ __ __" +echo " / / | || _ \\ | | | |\\ \\/ /" +echo " / /___| || | | || |_| | > < " +echo " /_____/|_||_| |_| \\____|/_/\\_\\" +echo " 64-bits RISC-V Kendryte K210 NOMMU" +echo "" + +# Finally, let's start an interactive shell +exec /bin/sh diff --git a/board/canaan/k210-soc/uboot.config b/board/canaan/k210-soc/uboot.config new file mode 100644 index 00000000..159085f8 --- /dev/null +++ b/board/canaan/k210-soc/uboot.config @@ -0,0 +1 @@ +# CONFIG_WATCHDOG_AUTOSTART is not set diff --git a/board/canaan/kd233/linux-cpio.config b/board/canaan/kd233/linux-cpio.config new file mode 100644 index 00000000..d5b10712 --- /dev/null +++ b/board/canaan/kd233/linux-cpio.config @@ -0,0 +1,2 @@ +CONFIG_SOC_CANAAN_K210_DTB_BUILTIN=y +CONFIG_SOC_CANAAN_K210_DTB_SOURCE="canaan_kd233" diff --git a/board/canaan/kd233/readme.txt b/board/canaan/kd233/readme.txt new file mode 100644 index 00000000..47b78fa2 --- /dev/null +++ b/board/canaan/kd233/readme.txt @@ -0,0 +1,149 @@ +Canaan KD233 Board +================== + +The Canaan KD233 is a dual-core RISC-V 64-bits board based on the Canaan +Kendryte K210 SoC. + +Prerequisite +------------ + +In order to use the kflash utility to program this board, the user must have +access to the board USB serial device file. The simplest way to do this is to +add your user to the same group as this device file. Assume the device file is +/dev/ttyUSB0, first identify the device group name. In most cases, it is +either "dialout" or "uucp". Also verify that read-write access is enabled for +the group: + +``` +$ ls -l /dev/ttyUSB0 +crw-rw---- 1 root dialout 188, 0 May 26 13:48 /dev/ttyUSB0 +``` + +Then add yourself to that group (dialout in this example): + +``` +$ sudo usermod -a -G dialout $(whoami) +``` + +To enable the above, it is sometimes necessary to logout and login again. + +Buildroot Configuration +----------------------- + +Unlike other K210 based boards (Sipeed boards), U-Boot does not work on the +KD233 board due to the different wiring for the SD-Card mmc controller. As such, +the KD233 board can only be used by directly booting into Linux Kernel. + +buildroot can be configured to do so using the canaan_kd233_defconfig +configuration file. This configuration allows building a bootable kernel image +with a built-in initramfs root file system (the board SD card is not used). The +built kernel image can be flashed directly to the board ROM for direct booting. +No boot loader is required. + +Once booted, the on-board SD card can be used by Linux. + +The configuration file will also compile and install the kflash and +pyserial-miniterm host utilities to program bootable image files to the board +and open a serial terminal console. + +Direct Linux Kernel Boot +------------------------- + +Using the canaan_kd233_defconfig configuration, the bootable kernel binary image +is built as follows. + +``` +$ make canaan_kd233_defconfig +$ make +``` + +The bootable binary image is the output/images/loader.bin file. This image file +can be written to the board boot flash using the kflash utility. + +``` +$ output/host/bin/kflash -b 1500000 -p /dev/ttyUSB0 -t output/images/loader.bin +``` + +Once the kernel image file is fully programmed, a terminal console is open and +the board can be rebooted by pressing the reset button on the board (if it does +not reboot automatically). + +The output will be similar to the following. + +``` +[ 0.000000] Linux version 5.17.0 (foo@bar.com) (riscv64-buildroot-linux-uclibc-gcc.br_real (Buildroot 2022.02-560-g6a2b542a09-dirty) 10.3.0, GNU ld (GNU Binutils) 2.32) #2 SMP Thu Apr 21 16:40:44 JST 2022 +[ 0.000000] Machine model: Kendryte KD233 +[ 0.000000] earlycon: sifive0 at MMIO 0x0000000038000000 (options '115200n8') +[ 0.000000] printk: bootconsole [sifive0] enabled +[ 0.000000] Zone ranges: +[ 0.000000] DMA32 [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] Normal empty +[ 0.000000] Movable zone start for each node +[ 0.000000] Early memory node ranges +[ 0.000000] node 0: [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] riscv: ISA extensions acdfim +[ 0.000000] riscv: ELF capabilities acdfim +[ 0.000000] percpu: max_distance=0x16000 too large for vmalloc space 0x0 +[ 0.000000] percpu: Embedded 11 pages/cpu s15264 r0 d29792 u45056 +[ 0.000000] percpu: wasting 10 pages per chunk +[ 0.000000] Built 1 zonelists, mobility grouping off. Total pages: 2020 +[ 0.000000] Kernel command line: earlycon console=ttySIF0 +[ 0.000000] Dentry cache hash table entries: 1024 (order: 1, 8192 bytes, linear) +[ 0.000000] Inode-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off +[ 0.000000] Memory: 5984K/8192K available (964K kernel code, 137K rwdata, 205K rodata, 546K init, 66K bss, 2208K reserved, 0K cma-reserved) +[ 0.000000] rcu: Hierarchical RCU implementation. +[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies. +[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 +[ 0.000000] riscv-intc: 64 local interrupts mapped +[ 0.000000] plic: interrupt-controller@c000000: mapped 65 interrupts with 2 handlers for 4 contexts. +[ 0.000000] k210-clk: clock-controller: CPU running at 390 MHz +[ 0.000000] clint: timer@2000000: timer running at 7800000 Hz +[ 0.000000] clocksource: clint_clocksource: mask: 0xffffffffffffffff max_cycles: 0x3990be68b, max_idle_ns: 881590404272 ns +[ 0.000001] sched_clock: 64 bits at 7MHz, resolution 128ns, wraps every 4398046511054ns +[ 0.008178] Calibrating delay loop (skipped), value calculated using timer frequency.. 15.60 BogoMIPS (lpj=31200) +[ 0.018251] pid_max: default: 4096 minimum: 301 +[ 0.022861] Mount-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.029971] Mountpoint-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.040234] rcu: Hierarchical SRCU implementation. +[ 0.045110] smp: Bringing up secondary CPUs ... +[ 0.050211] smp: Brought up 1 node, 2 CPUs +[ 0.054340] devtmpfs: initialized +[ 0.070401] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns +[ 0.079473] pinctrl core: initialized pinctrl subsystem +[ 0.117795] clocksource: Switched to clocksource clint_clocksource +[ 0.130245] workingset: timestamp_bits=62 max_order=11 bucket_order=0 +[ 0.176925] k210-sysctl 50440000.syscon: K210 system controller +[ 0.192947] k210-rst 50440000.syscon:reset-controller: K210 reset controller +[ 0.200870] cacheinfo: Unable to detect cache hierarchy for CPU 0 +[ 0.210947] i2c_dev: i2c /dev entries driver +[ 0.220535] k210-fpioa 502b0000.pinmux: K210 FPIOA pin controller +[ 0.232253] 38000000.serial: ttySIF0 at MMIO 0x38000000 (irq = 1, base_baud = 115200) is a SiFive UART v0 +[ 0.241202] printk: console [ttySIF0] enabled +[ 0.241202] printk: console [ttySIF0] enabled +[ 0.249818] printk: bootconsole [sifive0] disabled +[ 0.249818] printk: bootconsole [sifive0] disabled +[ 0.261664] panel@0 enforce active low on chipselect handle +[ 0.275950] Freeing unused kernel image (initmem) memory: 540K +[ 0.281098] This architecture does not have kernel memory protection. +[ 0.287520] Run /init as init process + __ _ + / / (_) ____ _ _ __ __ + / / | || _ \ | | | |\ \/ / + / /___| || | | || |_| | > < + /_____/|_||_| |_| \____|/_/\_\ + 64-bits RISC-V Kendryte K210 NOMMU + +/ # +``` + +To open a terminal console without re-flashing the board, the pyserial-miniterm +host tool can be used. + +``` +$ output/host/bin/pyserial-miniterm --raw --eol=LF /dev/ttyUSB0 115200 +``` + +The options "--raw" and "--eol=LF" are added here to avoid a double carriage +return each time a command is entered. diff --git a/board/chromebook/elm/kernel.args b/board/chromebook/elm/kernel.args new file mode 100644 index 00000000..848e179d --- /dev/null +++ b/board/chromebook/elm/kernel.args @@ -0,0 +1 @@ +root=PARTUUID=%U/PARTNROFF=1 rootwait rw noinitrd kern_guid=%U console=tty0 diff --git a/board/chromebook/elm/kernel.its b/board/chromebook/elm/kernel.its new file mode 100644 index 00000000..bc4b09ea --- /dev/null +++ b/board/chromebook/elm/kernel.its @@ -0,0 +1,38 @@ +/dts-v1/; + +/ { + description = "Chrome OS kernel image with FDT"; + #address-cells = <1>; + + images { + kernel-1 { + data = /incbin/("Image"); + type = "kernel_noload"; + arch = "arm64"; + os = "linux"; + compression = "none"; + load = <0>; + entry = <0>; + }; + + fdt-1 { + description = "mt8173-elm.dtb"; + data = /incbin/("mt8173-elm.dtb"); + type = "flat_dt"; + arch = "arm64"; + compression = "none"; + + hash-1 { + algo = "sha1"; + }; + }; + }; + + configurations { + default = "conf-1"; + conf-1 { + kernel = "kernel-1"; + fdt = "fdt-1"; + }; + }; +}; diff --git a/board/chromebook/elm/linux.config b/board/chromebook/elm/linux.config new file mode 100644 index 00000000..895a3b85 --- /dev/null +++ b/board/chromebook/elm/linux.config @@ -0,0 +1,477 @@ +CONFIG_SYSVIPC=y +CONFIG_NO_HZ_IDLE=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_PREEMPT=y +CONFIG_IRQ_TIME_ACCOUNTING=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_NUMA_BALANCING=y +CONFIG_MEMCG=y +CONFIG_BLK_CGROUP=y +CONFIG_CGROUP_PIDS=y +CONFIG_CGROUP_HUGETLB=y +CONFIG_CPUSETS=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_PERF=y +CONFIG_USER_NS=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_RELAY=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_KALLSYMS_ALL=y +# CONFIG_COMPAT_BRK is not set +CONFIG_SLAB=y +CONFIG_PROFILING=y +CONFIG_ARCH_MEDIATEK=y +CONFIG_ARM64_VA_BITS_48=y +CONFIG_SCHED_MC=y +CONFIG_SCHED_SMT=y +CONFIG_NR_CPUS=4 +CONFIG_NUMA=y +CONFIG_PARAVIRT=y +CONFIG_CRASH_DUMP=y +CONFIG_COMPAT=y +CONFIG_RANDOMIZE_BASE=y +# CONFIG_EFI is not set +# CONFIG_SUSPEND is not set +CONFIG_PM=y +CONFIG_PM_DEBUG=y +CONFIG_PM_ADVANCED_DEBUG=y +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_ARM_CPUIDLE=y +CONFIG_ARM_PSCI_CPUIDLE=y +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y +CONFIG_CPUFREQ_DT=y +CONFIG_ARM_SCPI_CPUFREQ=y +CONFIG_ARM_MEDIATEK_CPUFREQ=y +CONFIG_ARM_SCPI_PROTOCOL=y +CONFIG_JUMP_LABEL=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +# CONFIG_BLK_DEBUG_FS is not set +# CONFIG_MQ_IOSCHED_KYBER is not set +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_KSM=y +CONFIG_MEMORY_FAILURE=y +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_CMA=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_UNIX_DIAG=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_INET_UDP_DIAG=y +# CONFIG_IPV6 is not set +CONFIG_CFG80211=y +# CONFIG_CFG80211_DEFAULT_PS is not set +CONFIG_MAC80211=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_FW_LOADER_USER_HELPER=y +CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y +CONFIG_BRCMSTB_GISB_ARB=y +CONFIG_VEXPRESS_CONFIG=y +CONFIG_MTD=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_CFI=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_INTELEXT=y +CONFIG_MTD_CFI_AMDSTD=y +CONFIG_MTD_CFI_STAA=y +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_PHYSMAP_OF=y +CONFIG_MTD_DATAFLASH=y +CONFIG_MTD_SST25L=y +CONFIG_MTD_RAW_NAND=y +CONFIG_MTD_NAND_DENALI_DT=y +CONFIG_MTD_SPI_NOR=y +CONFIG_OF_OVERLAY=y +# CONFIG_BLK_DEV is not set +CONFIG_SRAM=y +CONFIG_EEPROM_AT24=m +CONFIG_EEPROM_AT25=m +CONFIG_RAID_ATTRS=m +CONFIG_SCSI=y +# CONFIG_SCSI_PROC_FS is not set +CONFIG_BLK_DEV_SD=y +CONFIG_SCSI_SAS_LIBSAS=y +CONFIG_SCSI_UFSHCD=y +CONFIG_SCSI_UFSHCD_PLATFORM=y +CONFIG_MD=y +CONFIG_BLK_DEV_MD=m +CONFIG_BLK_DEV_DM=m +CONFIG_DM_MIRROR=m +CONFIG_DM_ZERO=m +CONFIG_NETDEVICES=y +# CONFIG_ETHERNET is not set +CONFIG_PHYLIB=y +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_RTL8152=m +CONFIG_USB_LAN78XX=m +CONFIG_USB_USBNET=m +CONFIG_USB_NET_CDC_EEM=m +CONFIG_USB_NET_HUAWEI_CDC_NCM=m +CONFIG_USB_NET_CDC_MBIM=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SR9700=m +CONFIG_USB_NET_SR9800=m +CONFIG_USB_NET_SMSC75XX=m +CONFIG_USB_NET_SMSC95XX=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_KC2190=y +CONFIG_USB_NET_CX82310_ETH=m +CONFIG_USB_NET_KALMIA=m +CONFIG_USB_NET_QMI_WWAN=m +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_IPHETH=m +CONFIG_USB_SIERRA_NET=m +CONFIG_USB_VL600=m +CONFIG_USB_NET_CH9200=m +CONFIG_USB_NET_AQC111=m +# CONFIG_WLAN_VENDOR_ADMTEK is not set +# CONFIG_WLAN_VENDOR_ATH is not set +# CONFIG_WLAN_VENDOR_ATMEL is not set +# CONFIG_WLAN_VENDOR_BROADCOM is not set +# CONFIG_WLAN_VENDOR_CISCO is not set +# CONFIG_WLAN_VENDOR_INTEL is not set +# CONFIG_WLAN_VENDOR_INTERSIL is not set +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m +# CONFIG_WLAN_VENDOR_MEDIATEK is not set +# CONFIG_WLAN_VENDOR_RALINK is not set +# CONFIG_WLAN_VENDOR_REALTEK is not set +# CONFIG_WLAN_VENDOR_RSI is not set +# CONFIG_WLAN_VENDOR_ST is not set +# CONFIG_WLAN_VENDOR_TI is not set +# CONFIG_WLAN_VENDOR_ZYDAS is not set +# CONFIG_WLAN_VENDOR_QUANTENNA is not set +CONFIG_INPUT_EVDEV=y +CONFIG_KEYBOARD_ADC=m +CONFIG_KEYBOARD_GPIO=y +CONFIG_KEYBOARD_CROS_EC=y +CONFIG_MOUSE_ELAN_I2C=y +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ATMEL_MXT=m +CONFIG_TOUCHSCREEN_ELAN=y +CONFIG_INPUT_MISC=y +# CONFIG_SERIO_SERPORT is not set +CONFIG_SERIO_AMBAKMI=y +CONFIG_LEGACY_PTY_COUNT=16 +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_DW=y +CONFIG_SERIAL_8250_MT6577=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_SERIAL_XILINX_PS_UART=y +CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y +CONFIG_SERIAL_FSL_LPUART=y +CONFIG_SERIAL_FSL_LPUART_CONSOLE=y +CONFIG_SERIAL_FSL_LINFLEXUART=y +CONFIG_SERIAL_FSL_LINFLEXUART_CONSOLE=y +CONFIG_SERIAL_DEV_BUS=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_IPMI_HANDLER=m +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_SI=m +CONFIG_TCG_TPM=y +CONFIG_TCG_TIS_I2C_INFINEON=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MUX_PCA954x=y +CONFIG_I2C_DESIGNWARE_PLATFORM=y +CONFIG_I2C_GPIO=m +CONFIG_I2C_MT65XX=y +CONFIG_I2C_RK3X=y +CONFIG_I2C_SLAVE=y +CONFIG_SPI=y +CONFIG_SPI_CADENCE_QUADSPI=y +CONFIG_SPI_NXP_FLEXSPI=y +CONFIG_SPI_GPIO=y +CONFIG_SPI_MT65XX=y +CONFIG_SPI_PL022=y +CONFIG_SPI_ROCKCHIP=y +CONFIG_SPI_SPIDEV=y +CONFIG_PINCTRL_SINGLE=y +CONFIG_PINCTRL_MAX77620=y +CONFIG_GPIO_ALTERA=m +CONFIG_GPIO_DWAPB=y +CONFIG_GPIO_MB86S7X=y +CONFIG_GPIO_PL061=y +CONFIG_GPIO_XGENE=y +CONFIG_GPIO_MAX732X=y +CONFIG_GPIO_PCA953X=y +CONFIG_GPIO_PCA953X_IRQ=y +CONFIG_GPIO_BD9571MWV=m +CONFIG_GPIO_MAX77620=y +CONFIG_POWER_RESET_BRCMSTB=y +CONFIG_POWER_RESET_XGENE=y +CONFIG_POWER_RESET_SYSCON=y +CONFIG_SYSCON_REBOOT_MODE=y +CONFIG_BATTERY_SBS=m +CONFIG_BATTERY_BQ27XXX=y +CONFIG_SENSORS_ARM_SCPI=y +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_PWM_FAN=m +CONFIG_SENSORS_INA2XX=m +CONFIG_SENSORS_INA3221=m +CONFIG_THERMAL=y +CONFIG_CPU_THERMAL=y +CONFIG_DEVFREQ_THERMAL=y +CONFIG_THERMAL_EMULATION=y +CONFIG_WATCHDOG=y +CONFIG_MEDIATEK_WATCHDOG=y +CONFIG_MFD_BD9571MWV=y +CONFIG_MFD_AXP20X_I2C=y +CONFIG_MFD_HI6421_PMIC=y +CONFIG_MFD_MAX77620=y +CONFIG_MFD_MT6397=y +CONFIG_MFD_RK808=y +CONFIG_MFD_SEC_CORE=y +CONFIG_MFD_ROHM_BD718XX=y +CONFIG_REGULATOR_DEBUG=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_AXP20X=y +CONFIG_REGULATOR_BD718XX=y +CONFIG_REGULATOR_BD9571MWV=y +CONFIG_REGULATOR_DA9211=y +CONFIG_REGULATOR_FAN53555=y +CONFIG_REGULATOR_GPIO=y +CONFIG_REGULATOR_HI6421V530=y +CONFIG_REGULATOR_MAX77620=y +CONFIG_REGULATOR_MAX8973=y +CONFIG_REGULATOR_MT6397=y +CONFIG_REGULATOR_PFUZE100=y +CONFIG_REGULATOR_PWM=y +CONFIG_REGULATOR_RK808=y +CONFIG_REGULATOR_S2MPS11=y +CONFIG_REGULATOR_VCTRL=m +CONFIG_MEDIA_SUPPORT=y +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_SDR_SUPPORT=y +CONFIG_VIDEO_V4L2_SUBDEV_API=y +CONFIG_MEDIA_USB_SUPPORT=y +CONFIG_USB_VIDEO_CLASS=m +CONFIG_DRM=y +CONFIG_DRM_I2C_CH7006=m +CONFIG_DRM_I2C_SIL164=m +CONFIG_DRM_I2C_NXP_TDA998X=m +CONFIG_DRM_MALI_DISPLAY=m +CONFIG_DRM_PANEL_LVDS=m +CONFIG_DRM_PANEL_SIMPLE=y +CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA=m +CONFIG_DRM_DISPLAY_CONNECTOR=y +CONFIG_DRM_PARADE_PS8640=y +CONFIG_DRM_SII902X=m +CONFIG_DRM_THINE_THC63LVD1024=m +CONFIG_DRM_TI_SN65DSI86=m +CONFIG_DRM_ANALOGIX_ANX78XX=y +CONFIG_DRM_I2C_ADV7511=m +CONFIG_DRM_MEDIATEK=y +CONFIG_DRM_MEDIATEK_HDMI=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_SIMPLE=y +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_PWM=y +CONFIG_BACKLIGHT_LP855X=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_SOC=y +CONFIG_SND_SOC_MT8173=y +CONFIG_SND_SOC_MT8173_RT5650_RT5676=y +CONFIG_I2C_HID=m +CONFIG_USB_CONN_GPIO=y +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_STORAGE=y +CONFIG_USB_MTU3=y +CONFIG_USB_MUSB_HDRC=y +CONFIG_USB_DWC3=y +CONFIG_USB_DWC2=y +CONFIG_USB_CHIPIDEA=y +CONFIG_USB_CHIPIDEA_UDC=y +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_ISP1760=y +CONFIG_USB_SERIAL=y +CONFIG_USB_SERIAL_CONSOLE=y +CONFIG_USB_SERIAL_PL2303=y +CONFIG_USB_HSIC_USB3503=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_USB_ULPI=y +CONFIG_USB_GADGET=y +CONFIG_USB_SNP_UDC_PLAT=y +CONFIG_USB_BDC_UDC=y +CONFIG_USB_ETH=m +CONFIG_USB_ETH_EEM=y +CONFIG_TYPEC=m +CONFIG_TYPEC_TCPM=m +CONFIG_TYPEC_FUSB302=m +CONFIG_MMC=y +CONFIG_MMC_BLOCK_MINORS=32 +CONFIG_MMC_ARMMMCI=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SDHCI_OF_ARASAN=y +CONFIG_MMC_SDHCI_CADENCE=y +CONFIG_MMC_SDHCI_F_SDH30=y +CONFIG_MMC_SPI=y +CONFIG_MMC_DW=y +CONFIG_MMC_DW_EXYNOS=y +CONFIG_MMC_DW_HI3798CV200=y +CONFIG_MMC_DW_K3=y +CONFIG_MMC_MTK=y +CONFIG_MMC_SDHCI_XENON=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_PWM=y +CONFIG_LEDS_SYSCON=y +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y +CONFIG_LEDS_TRIGGER_PANIC=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_DS1307=m +CONFIG_RTC_DRV_MAX77686=y +CONFIG_RTC_DRV_RK808=m +CONFIG_RTC_DRV_PCF85363=m +CONFIG_RTC_DRV_RX8581=m +CONFIG_RTC_DRV_S5M=y +CONFIG_RTC_DRV_DS3232=y +CONFIG_RTC_DRV_PCF2127=m +CONFIG_RTC_DRV_PL031=y +CONFIG_DMADEVICES=y +CONFIG_FSL_EDMA=y +CONFIG_MV_XOR_V2=y +CONFIG_PL330_DMA=y +CONFIG_MTK_CQDMA=y +CONFIG_QCOM_HIDMA_MGMT=y +CONFIG_QCOM_HIDMA=y +# CONFIG_VIRTIO_MENU is not set +CONFIG_CHROME_PLATFORMS=y +CONFIG_CROS_EC=y +CONFIG_CROS_EC_I2C=y +CONFIG_CROS_EC_SPI=y +CONFIG_COMMON_CLK_RK808=y +CONFIG_COMMON_CLK_SCPI=y +CONFIG_COMMON_CLK_CS2000_CP=y +CONFIG_COMMON_CLK_S2MPS11=y +CONFIG_COMMON_CLK_XGENE=y +CONFIG_COMMON_CLK_PWM=y +CONFIG_COMMON_CLK_VC5=y +CONFIG_COMMON_CLK_MT6797_MMSYS=y +CONFIG_COMMON_CLK_MT6797_IMGSYS=y +CONFIG_COMMON_CLK_MT6797_VDECSYS=y +CONFIG_COMMON_CLK_MT6797_VENCSYS=y +CONFIG_HWSPINLOCK=y +CONFIG_ARM_MHU=y +CONFIG_PLATFORM_MHU=y +CONFIG_ARM_SMMU=y +CONFIG_ARM_SMMU_V3=y +CONFIG_MTK_IOMMU=y +CONFIG_REMOTEPROC=y +CONFIG_MTK_CMDQ=y +CONFIG_MTK_PMIC_WRAP=y +CONFIG_EXTCON_USB_GPIO=y +CONFIG_IIO=y +CONFIG_MAX9611=m +CONFIG_SENSORS_ISL29018=m +CONFIG_MPL3115=m +CONFIG_PWM=y +CONFIG_PWM_MTK_DISP=y +CONFIG_PWM_MEDIATEK=y +CONFIG_PHY_XGENE=y +CONFIG_PHY_FSL_IMX8MQ_USB=y +CONFIG_PHY_MTK_TPHY=y +CONFIG_PHY_QCOM_USB_HS=y +CONFIG_PHY_SAMSUNG_USB2=y +CONFIG_EXT2_FS=y +CONFIG_EXT3_FS=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_FANOTIFY=y +CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y +CONFIG_QUOTA=y +CONFIG_AUTOFS4_FS=y +CONFIG_FUSE_FS=m +CONFIG_CUSE=m +CONFIG_OVERLAY_FS=y +CONFIG_OVERLAY_FS_INDEX=y +CONFIG_OVERLAY_FS_XINO_AUTO=y +CONFIG_OVERLAY_FS_METACOPY=y +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_HUGETLBFS=y +CONFIG_CONFIGFS_FS=y +CONFIG_PSTORE=y +CONFIG_NFS_FS=m +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=m +CONFIG_NFS_SWAP=y +CONFIG_CIFS=m +CONFIG_CIFS_STATS2=y +CONFIG_CIFS_WEAK_PW_HASH=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ISO8859_1=y +CONFIG_SECURITY=y +CONFIG_CRYPTO_CRYPTD=y +CONFIG_CRYPTO_DH=m +CONFIG_CRYPTO_ECDH=m +CONFIG_CRYPTO_SEQIV=y +CONFIG_CRYPTO_ECHAINIV=y +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_XXHASH=m +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA3=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_ANSI_CPRNG=y +CONFIG_CRYPTO_DEV_CCREE=m +CONFIG_PACKING=y +CONFIG_INDIRECT_PIO=y +CONFIG_CRC_CCITT=m +CONFIG_CRC_T10DIF=y +CONFIG_LIBCRC32C=m +CONFIG_DMA_CMA=y +CONFIG_CMA_SIZE_MBYTES=32 +CONFIG_IRQ_POLL=y +CONFIG_PRINTK_TIME=y +CONFIG_DEBUG_INFO=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_FS=y +CONFIG_DEBUG_KERNEL=y +# CONFIG_SCHED_DEBUG is not set +# CONFIG_DEBUG_PREEMPT is not set +CONFIG_STACKTRACE=y +# CONFIG_FTRACE is not set +# CONFIG_STRICT_DEVMEM is not set diff --git a/board/chromebook/elm/patches/linux-headers/linux-headers.hash b/board/chromebook/elm/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/chromebook/elm/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/chromebook/elm/patches/linux/linux.hash b/board/chromebook/elm/patches/linux/linux.hash new file mode 100644 index 00000000..88aa603a --- /dev/null +++ b/board/chromebook/elm/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 dcdf99e43e98330d925016985bfbc7b83c66d367b714b2de0cbbfcbf83d8ca43 linux-5.10.tar.xz diff --git a/board/chromebook/elm/readme.txt b/board/chromebook/elm/readme.txt new file mode 100644 index 00000000..b63e7e8b --- /dev/null +++ b/board/chromebook/elm/readme.txt @@ -0,0 +1,56 @@ +Mediatek MT8173 aka Chromebook Elm +================================== + +This file describes booting the Chromebook from an SD card containing +Buildroot kernel and rootfs, using the original bootloader. This is +the least invasive way to get Buildroot onto the devices and a good +starting point. + +The bootloader will only boot a kernel from a GPT partition marked +bootable with cgpt tool from vboot-utils package. +The kernel image must be signed using futility from the same package. +The signing part is done by sign.sh script in this directory. + +It does not really matter where rootfs is as long as the kernel is able +to find it, but this particular configuration assumes the kernel is on +partition 1 and rootfs is on partition 2 of the SD card. +Make sure to check kernel.args if you change this. + +Making the boot media +--------------------- +Start by configuring and building the images. + + make chromebook_elm_defconfig + make menuconfig # if necessary + make + +The important files are: + + uImage.kpart (kernel and device tree, signed) + rootfs.tar + bootsd.img (SD card image containing both kernel and rootfs) + +Write the image directly to some SD card. +WARNING: make sure there is nothing important on that card, +and double-check the device name! + + SD=/dev/mmcblk1 # may be /dev/sdX on some hosts + dd if=output/images/bootsd.img of=$SD + +Switching to developer mode and booting from SD +----------------------------------------------- +Power Chromebook down, then power it up while holding Esc+F3. +BEWARE: switching to developer mode deletes all user data. +Create backups if you need them. + +While in developer mode, Chromebook will boot into a white screen saying +"OS verification is off". + +Press Ctrl-D at this screen to boot Chromium OS from eMMC. +Press Ctrl-U at this screen to boot from SD (or USB) +Press Power to power it off. +Do NOT press Space unless you mean it. +This will switch it back to normal mode. + +The is no way to get rid of the white screen without re-flashing the bootloader. + diff --git a/board/chromebook/elm/sign.sh b/board/chromebook/elm/sign.sh new file mode 100755 index 00000000..af1f9d21 --- /dev/null +++ b/board/chromebook/elm/sign.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +# This script creates u-boot FIT image containing the kernel and the DT, +# then signs it using futility from vboot-utils. +# The resulting file is called uImage.kpart. + +BOARD_DIR=$(dirname $0)/${BOARD_NAME} +mkimage=$HOST_DIR/bin/mkimage +futility=$HOST_DIR/bin/futility +devkeys=$HOST_DIR/share/vboot/devkeys + +run() { echo "$@"; "$@"; } +die() { echo "$@" >&2; exit 1; } +test -f $BINARIES_DIR/Image || \ + die "No kernel image found" +test -x $mkimage || \ + die "No mkimage found (host-uboot-tools has not been built?)" +test -x $futility || \ + die "No futility found (host-vboot-utils has not been built?)" + +# kernel.its references Image and mt8173-elm.dtb, and all three +# files must be in current directory for mkimage. +run cp $BOARD_DIR/kernel.its $BINARIES_DIR/kernel.its || exit 1 +echo "# entering $BINARIES_DIR for the next command" +(cd $BINARIES_DIR && run $mkimage -f kernel.its uImage.itb) || exit 1 + +# futility requires non-empty file to be supplied with --bootloader +# even if it does not make sense for the target platform. +echo > $BINARIES_DIR/dummy.txt + +run $futility vbutil_kernel \ + --keyblock $devkeys/kernel.keyblock \ + --signprivate $devkeys/kernel_data_key.vbprivk \ + --arch aarch64 \ + --version 1 \ + --config $BOARD_DIR/kernel.args \ + --vmlinuz $BINARIES_DIR/uImage.itb \ + --bootloader $BINARIES_DIR/dummy.txt \ + --pack $BINARIES_DIR/uImage.kpart || exit 1 + +rm -f $BINARIES_DIR/kernel.its $BINARIES_DIR/dummy.txt diff --git a/board/chromebook/mksd.sh b/board/chromebook/mksd.sh new file mode 100755 index 00000000..cba1578e --- /dev/null +++ b/board/chromebook/mksd.sh @@ -0,0 +1,69 @@ +#!/bin/sh + +# This scripts makes a minimal bootable SD card image for the Chromebook. +# The resulting file is called bootsd.img. It should be written directly +# to the card: +# +# SD=/dev/mmcblk1 # check your device name! +# dd if=output/images/bootsd.img of=$SD +# +# The partitions are created just large enough to hold the kernel and +# the rootfs image. Most of the card will be empty, and the secondary +# GPT will not be in its proper location. + +# cgpt does not create protective MBR, and the kernel refuses to read +# GPT unless there's some kind of MBR in sector 0. So we need parted +# to write that single sector before doing anything with the GPT. +cgpt=$HOST_DIR/bin/cgpt +parted=$HOST_DIR/sbin/parted +kernel=$BINARIES_DIR/uImage.kpart +rootfs=$BINARIES_DIR/rootfs.ext2 + +run() { echo "$@"; "$@"; } +die() { echo "$@" >&2; exit 1; } +test -f $kernel || die "No kernel image found" +test -f $rootfs || die "No rootfs image found" +test -x $cgpt || die "cgpt not found (host-vboot-utils have not been built?)" + +# True file sizes in bytes +kernelsize=`stat -t $kernel | cut -d\ -f2` +rootfssize=`stat -t $rootfs | cut -d\ -f2` + +# The card is partitioned in sectors of 8KB. +# 4 sectors are reserved for MBR+GPT. Their actual size turns out +# to be 33 512-blocks which is just over 2 sectors, but we align +# it to a nice round number. +sec=8192 +kernelsec=$(((kernelsize+8191)>>13)) +rootfssec=$(((rootfssize+8191)>>13)) +headersec=4 + +# There is also a copy of MBR+GPT at the end of the image. +# It's going to be useless but both tools assume it's there. +imagesec=$((2*headersec+kernelsec+rootfssec)) +bootsd="$BINARIES_DIR/bootsd.img" +run dd bs=$sec count=$imagesec if=/dev/zero of=$bootsd + +# cgpt needs offsets and sizes in 512-blocks. +block=512 +kernelstart=$((headersec<<4)) +kernelblocks=$((kernelsec<<4)) +rootfsblocks=$((rootfssec<<4)) +rootfsstart=$((kernelstart+kernelblocks)) + +# This command initializes both GPT and MBR +run $parted -s $bootsd mklabel gpt + +# The kernel partition must be marked as bootable, that's why -S -T -P +run $cgpt add -i 1 -b $kernelstart -s $kernelblocks \ + -t kernel -l kernel \ + -S 1 -T 1 -P 10 $bootsd + +# It does not really matter where the rootfs partition is located as long +# as the kernel can find it. +# However, if anything is changed here, kernel.args must be updated as well. +run $cgpt add -i 2 -b $rootfsstart -s $rootfsblocks \ + -t data -l rootfs $bootsd + +run dd bs=$block if=$kernel of=$bootsd seek=$kernelstart +run dd bs=$block if=$rootfs of=$bootsd seek=$rootfsstart diff --git a/board/chromebook/snow/kernel.args b/board/chromebook/snow/kernel.args new file mode 100644 index 00000000..1220bf84 --- /dev/null +++ b/board/chromebook/snow/kernel.args @@ -0,0 +1 @@ +console=tty1 clk_ignore_unused root=/dev/mmcblk1p2 rootfstype=ext4 ro diff --git a/board/chromebook/snow/kernel.its b/board/chromebook/snow/kernel.its new file mode 100644 index 00000000..c8766ef9 --- /dev/null +++ b/board/chromebook/snow/kernel.its @@ -0,0 +1,37 @@ +/dts-v1/; + +/ { + description = "Buildroot kernel for Chromebook Snow"; + images { + kernel@1 { + description = "kernel"; + data = /incbin/("zImage"); + type = "kernel_noload"; + arch = "arm"; + os = "linux"; + compression = "none"; + load = <0>; + entry = <0>; + hash@1 { + algo = "sha1"; + }; + }; + fdt@1{ + description = "exynos5250-snow.dtb"; + data = /incbin/("exynos5250-snow.dtb"); + type = "flat_dt"; + arch = "arm"; + compression = "none"; + hash@1 { + algo = "sha1"; + }; + }; + }; + configurations { + default = "conf@1"; + conf@1{ + kernel = "kernel@1"; + fdt = "fdt@1"; + }; + }; +}; diff --git a/board/chromebook/snow/linux-4.15.fragment b/board/chromebook/snow/linux-4.15.fragment new file mode 100644 index 00000000..e2786dac --- /dev/null +++ b/board/chromebook/snow/linux-4.15.fragment @@ -0,0 +1,2 @@ +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m diff --git a/board/chromebook/snow/patches/linux-headers/linux-headers.hash b/board/chromebook/snow/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/chromebook/snow/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/chromebook/snow/patches/linux/0001-linux-4.15-dts-tpm.patch b/board/chromebook/snow/patches/linux/0001-linux-4.15-dts-tpm.patch new file mode 100644 index 00000000..01f452b5 --- /dev/null +++ b/board/chromebook/snow/patches/linux/0001-linux-4.15-dts-tpm.patch @@ -0,0 +1,30 @@ +Some versions of u-boot for this Chromebook check for tpm node +in the device tree and fail badly (reboot) if it is not found. + +While not exactly correct, it is much easier to patch the mainline +device tree to match u-boot expectations than to fix u-boot on +this device. + +See https://code.google.com/p/chromium/issues/detail?id=220169 +and https://lkml.org/lkml/2013/3/4/242 + +Signed-off-by: Alex Suykov +Upstream: Not Applicable +[yann.morin.1998@free.fr: add Upstream tag] +Signed-off-by: Yann E. MORIN + +--- a/arch/arm/boot/dts/exynos5250-snow-common.dtsi ++++ b/arch/arm/boot/dts/exynos5250-snow-common.dtsi +@@ -466,6 +466,11 @@ + status = "okay"; + samsung,i2c-sda-delay = <100>; + samsung,i2c-max-bus-freq = <66000>; ++ ++ tpm { ++ compatible = "infineon,slb9635tt"; ++ reg = <0x20>; ++ }; + }; + + &i2c_5 { + diff --git a/board/chromebook/snow/patches/linux/linux.hash b/board/chromebook/snow/patches/linux/linux.hash new file mode 100644 index 00000000..1064af46 --- /dev/null +++ b/board/chromebook/snow/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Localy computed +sha256 5a26478906d5005f4f809402e981518d2b8844949199f60c4b6e1f986ca2a769 linux-4.15.tar.xz diff --git a/board/chromebook/snow/readme.txt b/board/chromebook/snow/readme.txt new file mode 100644 index 00000000..1afd9498 --- /dev/null +++ b/board/chromebook/snow/readme.txt @@ -0,0 +1,137 @@ +Samsung XE303C12 aka Chromebook Snow +==================================== + +This file describes booting the Chromebook from an SD card containing +Buildroot kernel and rootfs, using the original bootloader. This is +the least invasive way to get Buildroot onto the devices and a good +starting point. + +The bootloader will only boot a kernel from a GPT partition marked +bootable with cgpt tool from vboot-utils package. +The kernel image must be signed using futility from the same package. +The signing part is done by sign.sh script in this directory. + +It does not really matter where rootfs is as long as the kernel is able +to find it, but this particular configuration assumes the kernel is on +partition 1 and rootfs is on partition 2 of the SD card. +Make sure to check kernel.args if you change this. + +Making the boot media +--------------------- +Start by configuring and building the images. + + make chromebook_snow_defconfig + make menuconfig # if necessary + make + +The important files are: + + uImage.kpart (kernel and device tree, signed) + rootfs.tar + bootsd.img (SD card image containing both kernel and rootfs) + +Write the image directly to some SD card. +WARNING: make sure there is nothing important on that card, +and double-check the device name! + + SD=/dev/mmcblk1 # may be /dev/sdX on some hosts + dd if=output/images/bootsd.img of=$SD + +Switching to developer mode and booting from SD +----------------------------------------------- +Power Chromebook down, then power it up while holding Esc+F3. +BEWARE: switching to developer mode deletes all user data. +Create backups if you need them. + +While in developer mode, Chromebook will boot into a white screen saying +"OS verification is off". + +Press Ctrl-D at this screen to boot Chromium OS from eMMC. +Press Ctrl-U at this screen to boot from SD (or USB) +Press Power to power it off. +Do NOT press Space unless you mean it. +This will switch it back to normal mode. + +The is no way to get rid of the white screen without re-flashing the bootloader. + +Troubleshooting +--------------- +Loud *BEEP* after pressing Ctrl-U means there's no valid partition to boot from. +Which in turn means either bad GPT or improperly signed kernel. + +Return to the OS verification screen without any sounds means the code managed +to reboot the board. May indicate properly signed but invalid image. + +Blank screen means the image is valid and properly signed but cannot boot +for some reason, like missing or incorrect DT. + +In case the board becomes unresponsive: + +* Press Esc+F3+Power. The board should reboot instantly. + Remove SD card to prevent it from attempting a system recovery. + +* Hold Power button for around 10s. The board should shut down into + its soft-off mode. Press Power button again or open the lid to turn in on. + +* If that does not work, disconnect the charger and push a hidden + button on the underside with a pin of some sort. The board should shut + down completely. Opening the lid and pressing Power button will not work. + To turn it back on, connect the charger. + +Partitioning SD card manually +----------------------------- +Check mksd.sh for partitioning commands. + +Use parted and cgpt on a real device, and calculate the partition +sizes properly. The kernel partition may be as small as 4MB, but +you will probably want the rootfs to occupy the whole remaining space. + +cgpt may be used to check current layout: + + output/host/bin/cgpt show $SD + +All sizes and all offsets are in 512-byte blocks. + +Writing kernel and rootfs to a partitioned SD card +-------------------------------------------------- +Write .kpart directly to the bootable partition: + + dd if=output/images/uImage.kpart of=${SD}1 + +Make a new filesystem on the rootfs partition, and unpack rootfs.tar there: + + mkfs.ext4 ${SD}2 + mount ${SD2} /mnt/ + tar -xvf output/images/rootfs.tar -C /mnt/ + umount /mnt/ + +This will require root permissions even if you can write to $SD. + +Kernel command line +------------------- +The command line is taken from board/chromebook/snow/kernel.args and stored +in the vboot header (which also holds the signature). + +The original bootloader prepends "cros_secure console= " to the supplied +command line. The only way to suppress this is to enable CMDLINE_FORCE +in the kernel config, disabling external command line completely. + +That's not necessary however. The mainline kernel ignores cros_secure, +and supplying console=tty1 in kernel.args undoes the effect of console= + +Booting with console= suppresses all kernel output. +As a side effect, it makes /dev/console unusable, which the init in use must +be able to handle. + +WiFi card +--------- +Run modprobe mwifiex_sdio to load the driver. +The name of the device should be mlan0. + +Further reading +--------------- +https://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices/samsung-arm-chromebook +http://linux-exynos.org/wiki/Samsung_Chromebook_XE303C12/Installing_Linux +http://archlinuxarm.org/platforms/armv7/samsung/samsung-chromebook +http://www.de7ec7ed.com/2013/05/application-processor-ap-uart-samsung.html +http://www.de7ec7ed.com/2013/05/embedded-controller-ec-uart-samsung.html diff --git a/board/chromebook/snow/sign.sh b/board/chromebook/snow/sign.sh new file mode 100755 index 00000000..e8f111ff --- /dev/null +++ b/board/chromebook/snow/sign.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +# This script creates u-boot FIT image containing the kernel and the DT, +# then signs it using futility from vboot-utils. +# The resulting file is called uImage.kpart. + +BOARD_DIR=$(dirname $0) +mkimage=$HOST_DIR/bin/mkimage +futility=$HOST_DIR/bin/futility +devkeys=$HOST_DIR/share/vboot/devkeys + +run() { echo "$@"; "$@"; } +die() { echo "$@" >&2; exit 1; } +test -f $BINARIES_DIR/zImage || \ + die "No kernel image found" +test -x $mkimage || \ + die "No mkimage found (host-uboot-tools has not been built?)" +test -x $futility || \ + die "No futility found (host-vboot-utils has not been built?)" + +# kernel.its references zImage and exynos5250-snow.dtb, and all three +# files must be in current directory for mkimage. +run cp $BOARD_DIR/kernel.its $BINARIES_DIR/kernel.its || exit 1 +echo "# entering $BINARIES_DIR for the next command" +(cd $BINARIES_DIR && run $mkimage -f kernel.its uImage.itb) || exit 1 + +# futility requires non-empty file to be supplied with --bootloader +# even if it does not make sense for the target platform. +echo > $BINARIES_DIR/dummy.txt + +run $futility vbutil_kernel \ + --keyblock $devkeys/kernel.keyblock \ + --signprivate $devkeys/kernel_data_key.vbprivk \ + --arch arm \ + --version 1 \ + --config $BOARD_DIR/kernel.args \ + --vmlinuz $BINARIES_DIR/uImage.itb \ + --bootloader $BINARIES_DIR/dummy.txt \ + --pack $BINARIES_DIR/uImage.kpart || exit 1 + +rm -f $BINARIES_DIR/kernel.its $BINARIES_DIR/dummy.txt diff --git a/board/ci20/genimage.cfg b/board/ci20/genimage.cfg new file mode 100644 index 00000000..2d4a18a9 --- /dev/null +++ b/board/ci20/genimage.cfg @@ -0,0 +1,28 @@ +image sdcard.img { + hdimage { + } + + partition uboot-spl { + in-partition-table = "no" + image = "u-boot-spl.bin" + offset = 512 + } + + partition uboot { + in-partition-table = "no" + image = "u-boot.img" + offset = 14K + } + + partition uboot-env { + in-partition-table = "no" + image = "uboot-env.bin" + offset = 526K + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + offset = 2M + } +} diff --git a/board/ci20/patches/uboot/0001-mips-Remove-default-endiannes.patch b/board/ci20/patches/uboot/0001-mips-Remove-default-endiannes.patch new file mode 100644 index 00000000..a6191804 --- /dev/null +++ b/board/ci20/patches/uboot/0001-mips-Remove-default-endiannes.patch @@ -0,0 +1,66 @@ +From b3a1e97498e7987073775d49a703932c20f2df1d Mon Sep 17 00:00:00 2001 +From: Ezequiel Garcia +Date: Mon, 12 Nov 2018 14:04:46 -0300 +Subject: [PATCH] mips: Remove default endiannes + +Currently, trying to build ci20_mmc fails on little-endian +toolchains. The problem seems to be that some targets don't +have CONFIG_SYS_LITTLE_ENDIAN properly set, and therefore +the default -EB switch is selected. + +Let's get rid of the default switch entirely, and fix this problem. +While this may be a hack, it is a quick solution until +U-Boot gets CI20 proper support. + +make ARCH=mips CROSS_COMPILE=mips-linux-gnu- ci20_mmc +Configuring for ci20_mmc - Board: ci20, Options: SPL_MMC_SUPPORT,ENV_IS_IN_MMC +make +make[1]: Entering directory '/home/zeta/repos/u-boot-ci20' +Generating include/autoconf.mk +Generating include/autoconf.mk.dep +mips-linux-gnu-gcc: error: may not use both -EB and -EL +mips-linux-gnu-gcc: error: may not use both -EB and -EL +Generating include/spl-autoconf.mk +mips-linux-gnu-gcc: error: may not use both -EB and -EL +Generating include/tpl-autoconf.mk +mips-linux-gnu-gcc: error: may not use both -EB and -EL +mips-linux-gnu-gcc -DDO_DEPS_ONLY \ + -g -Os -ffunction-sections -fdata-sections -D__KERNEL__ -I/home/zeta/repos/u-boot-ci20/include -fno-builtin -ffreestanding -nostdinc -isystem /home/zeta/repos/buildroot/mips/output/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/include -pipe -DCONFIG_MIPS -D__MIPS__ -G 0 -EB -msoft-float -fpic -mabicalls -march=mips32 -mabi=32 -DCONFIG_32BIT -mno-branch-likely -Wall -Wstrict-prototypes \ + -o lib/asm-offsets.s lib/asm-offsets.c -c -S +if [ -f arch/mips/cpu/xburst/jz4780/asm-offsets.c ];then \ + mips-linux-gnu-gcc -DDO_DEPS_ONLY \ + -g -Os -ffunction-sections -fdata-sections -D__KERNEL__ -I/home/zeta/repos/u-boot-ci20/include -fno-builtin -ffreestanding -nostdinc -isystem /home/zeta/repos/buildroot/mips/output/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/include -pipe -DCONFIG_MIPS -D__MIPS__ -G 0 -EB -msoft-float -fpic -mabicalls -march=mips32 -mabi=32 -DCONFIG_32BIT -mno-branch-likely -Wall -Wstrict-prototypes \ + -o arch/mips/cpu/xburst/jz4780/asm-offsets.s arch/mips/cpu/xburst/jz4780/asm-offsets.c -c -S; \ +else \ + touch arch/mips/cpu/xburst/jz4780/asm-offsets.s; \ +fi +mips-linux-gnu-gcc: error: may not use both -EB and -EL +make[1]: *** [Makefile:747: lib/asm-offsets.s] Error 1 +make[1]: *** Waiting for unfinished jobs.... +make[1]: Leaving directory '/home/zeta/repos/u-boot-ci20' +make: *** [.boards.depend:463: ci20_mmc] Error 2 + +Signed-off-by: Ezequiel Garcia +--- +https://github.com/MIPS/CI20_u-boot/pull/19 + + arch/mips/config.mk | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/arch/mips/config.mk b/arch/mips/config.mk +index c89279025507..43560abbc0e1 100644 +--- a/arch/mips/config.mk ++++ b/arch/mips/config.mk +@@ -20,9 +20,6 @@ ifdef CONFIG_SYS_BIG_ENDIAN + ENDIANNESS := -EB + endif + +-# Default to EB if no endianess is configured +-ENDIANNESS ?= -EB +- + PLATFORM_CPPFLAGS += -DCONFIG_MIPS -D__MIPS__ + + # +-- +2.19.1 + diff --git a/board/ci20/readme.txt b/board/ci20/readme.txt new file mode 100644 index 00000000..71d50706 --- /dev/null +++ b/board/ci20/readme.txt @@ -0,0 +1,46 @@ +********************* +* MIPS Creator CI20 * +********************* + +Introduction +============ + +The 'ci20_defconfig' will create a root filesystem and a kernel image +under the 'output/images/' directory. This document will try to explain how +to use them in order to run Buildroot in the MIPS Creator CI20 board. + +How to build it +=============== + +Configure Buildroot +------------------- + + $ make ci20_defconfig + +Build the rootfs +---------------- + +Note: you will need to have access to the network, since Buildroot will +download the packages' sources. + +You may now build your rootfs with: + + $ make + +(This may take a while, consider getting yourself a coffee ;-) ) + +How to write the SD card +======================== + +Once the build process is finished you will have an image called +"sdcard.img" in the output/images/ directory. + +Make sure the SD card is not mounted then copy the bootable "sdcard.img" onto +it with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Insert the SDcard into your ci20, and power it up. Your new system +should come up now and start a console on the UART HEADER. + +see: https://elinux.org/CI20_Hardware#Dedicated_UART_header diff --git a/board/ci20/uboot-env.txt b/board/ci20/uboot-env.txt new file mode 100644 index 00000000..2d693af7 --- /dev/null +++ b/board/ci20/uboot-env.txt @@ -0,0 +1,10 @@ +baudrate=115200 +board_mfr=NP +bootargs=console=ttyS4,115200 console=tty0 mem=256M@0x0 mem=768M@0x30000000 rootwait root=/dev/mmcblk0p1 devtmpfs.mount=1 +bootcmd=run ethargs; ext4load mmc 0:1 0x88000000 /boot/uImage; bootm 0x88000000 +bootdelay=1 +ethargs=env set bootargs ${bootargs} +loads_echo=1 +stderr=eserial0,eserial4 +stdin=eserial0,eserial4 +stdout=eserial0,eserial4 diff --git a/board/cubietech/cubieboard1/genimage.cfg b/board/cubietech/cubieboard1/genimage.cfg new file mode 100644 index 00000000..92c86775 --- /dev/null +++ b/board/cubietech/cubieboard1/genimage.cfg @@ -0,0 +1,16 @@ +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + size = 1016K # 1MB - 8KB + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/cubietech/cubieboard1/patches/linux-headers/linux-headers.hash b/board/cubietech/cubieboard1/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/cubietech/cubieboard1/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/cubietech/cubieboard1/patches/linux/linux.hash b/board/cubietech/cubieboard1/patches/linux/linux.hash new file mode 100644 index 00000000..5e9df51e --- /dev/null +++ b/board/cubietech/cubieboard1/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 19b31956d229b5b9ca5671fa1c74320179682a3d8d00fc86794114b21da86039 linux-6.8.12.tar.xz diff --git a/board/cubietech/cubieboard1/patches/uboot/uboot.hash b/board/cubietech/cubieboard1/patches/uboot/uboot.hash new file mode 100644 index 00000000..97a2b4ea --- /dev/null +++ b/board/cubietech/cubieboard1/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/board/cubietech/cubieboard1/readme.txt b/board/cubietech/cubieboard1/readme.txt new file mode 100644 index 00000000..d5033f47 --- /dev/null +++ b/board/cubietech/cubieboard1/readme.txt @@ -0,0 +1,32 @@ +Cubietech Cubieboard1 +===================== + +Cubieboard1 is the first generation Cubieboard from Cubietech. + +Cubietech: +http://www.cubietech.com/product-detail/cubieboard1 + +Linux Sunxi Wiki: +https://linux-sunxi.org/Cubietech_Cubieboard + +Building +-------- + +Configure and build with + + make cubieboard1_defconfig + make + +Flashing +-------- + +Flash the sdcard image onto a micro sdcard with + + dd if=output/images/sdcard.img of=/dev/sdX bs=1M conv=fsync + +Running +------- + +Connect a 3V3 serial interface to the serial header on the top side of the board +(between the USB jacks and the A10 chip). Then provide power to the board. The +interface uses 115200 baud. diff --git a/board/cubietech/cubieboard1/rootfs_overlay/boot/extlinux/extlinux.conf b/board/cubietech/cubieboard1/rootfs_overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..2fde683f --- /dev/null +++ b/board/cubietech/cubieboard1/rootfs_overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,5 @@ +DEFAULT linux +LABEL linux + KERNEL /boot/zImage + DEVICETREE /boot/sun4i-a10-cubieboard.dtb + APPEND console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p1 rootwait diff --git a/board/cubietech/cubieboard2/boot.cmd b/board/cubietech/cubieboard2/boot.cmd new file mode 100644 index 00000000..a9ae0e24 --- /dev/null +++ b/board/cubietech/cubieboard2/boot.cmd @@ -0,0 +1,5 @@ +setenv fdt_high ffffffff +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun7i-a20-cubieboard2.dtb +bootz $kernel_addr_r - $fdt_addr_r diff --git a/board/cubietech/cubieboard2/genimage.cfg b/board/cubietech/cubieboard2/genimage.cfg new file mode 100644 index 00000000..0ba74d6b --- /dev/null +++ b/board/cubietech/cubieboard2/genimage.cfg @@ -0,0 +1,38 @@ +# Minimal SD card image for the Cubieboard2 +# Based in the Orange Pi genimage.cfg + +image boot.vfat { + vfat { + files = { + "zImage", + "sun7i-a20-cubieboard2.dtb", + "boot.scr" + } + } + + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + size = 1016K # 1MB - 8KB + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/cubietech/cubieboard2/post-image.sh b/board/cubietech/cubieboard2/post-image.sh new file mode 100755 index 00000000..9cca1b17 --- /dev/null +++ b/board/cubietech/cubieboard2/post-image.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +exit $? diff --git a/board/embest/riotboard/genimage.cfg b/board/embest/riotboard/genimage.cfg new file mode 100644 index 00000000..d2e851a7 --- /dev/null +++ b/board/embest/riotboard/genimage.cfg @@ -0,0 +1,17 @@ +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.imx" + offset = 1K + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + offset = 1M + size = 60M + } +} diff --git a/board/embest/riotboard/readme.txt b/board/embest/riotboard/readme.txt new file mode 100644 index 00000000..4ba836fa --- /dev/null +++ b/board/embest/riotboard/readme.txt @@ -0,0 +1,38 @@ +Buildroot for Embest RIoTboard +============================== + +This is a small development board, based on Freescale IMX6 Solo SoC +(single core ARM Cortex-A9). + +More details about the board can be found at: + + http://www.embest-tech.com/riotboard + +1. Compiling buildroot +---------------------- + +$ make riotboard_defconfig +$ make + +2. Installing buildroot +----------------------- + +Prepare an SD-card and plug it into your card reader. Always double +check the block device before writing to it, as writing to the wrong +block device can cause irrecoverable data loss. Now you can write the +image to your SD-card: + +sudo dd if=output/images/sdcard.img of=/dev/ bs=1M + +3. Running buildroot +-------------------- + +Position the board so you can read the label "RIoTboard" on the right +side of SW1 DIP switches. Configure the SW1 swiches like this: + +1 0 1 0 0 1 0 1 +ON OFF ON OFF OFF ON OFF ON + +Now plug your prepared SD-card in slot J6. Connect a serial console +(115200, 8, N, 1) to header J18. Connect a 5V/1A power supply to the +board and enjoy. diff --git a/board/embest/riotboard/rootfs_overlay/boot/extlinux/extlinux.conf b/board/embest/riotboard/rootfs_overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..23e48a0d --- /dev/null +++ b/board/embest/riotboard/rootfs_overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,6 @@ +default buildroot + +label buildroot +kernel /boot/zImage +devicetree /boot/imx6dl-riotboard.dtb +append console=ttymxc1,115200 root=/dev/mmcblk1p1 rw diff --git a/board/engicam/geam6ul/genimage.cfg b/board/engicam/geam6ul/genimage.cfg new file mode 100644 index 00000000..3d290b2e --- /dev/null +++ b/board/engicam/geam6ul/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "uImage", + "imx6ul-geam-kit.dtb" + } + } + + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition SPL { + in-partition-table = "no" + image = "SPL" + offset = 1K + } + + partition u-boot-dtb { + in-partition-table = "no" + image = "u-boot-dtb.img" + offset = 69K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/board/engicam/geam6ul/readme.txt b/board/engicam/geam6ul/readme.txt new file mode 100644 index 00000000..ace993a6 --- /dev/null +++ b/board/engicam/geam6ul/readme.txt @@ -0,0 +1,66 @@ +******************************************** +Buildroot for Engicam GEAM6UL SOM platforms: +******************************************** + +This file documents the Buildroot support for all Engicam GEAM6UL +SOM platform boards. + +GEAM6UL SOM Starter kits: +https://www.engicam.com/vis-prod/101115 + +This configuration uses U-Boot mainline and kernel mainline. + +Build +===== + +First, configure Buildroot for the Engicam GEAM6UL SOM: + +- for GEAM6UL SOM: + + make engicam_imx6ul_geam_defconfig + +Build all components: + + make + +You will find the following files in output/images/: + - imx6ul-geam-kit.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - SPL + - u-boot-dtb.img + - uImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + sync + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/engicam/geam6ul/genimage.cfg + +Boot the GEAM6UL boards with SD boot: +==================================== + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- connect 3-wire RS232 serial port J28 on board, and connect with other + serial end or USB cable(if serial-to-usb converter used) using + a terminal emulator at 115200 bps, 8n1; +- close JM3 for sd boot. +- power on the board. + +Enjoy! diff --git a/board/engicam/icorem6/genimage.cfg b/board/engicam/icorem6/genimage.cfg new file mode 100644 index 00000000..985d9e5d --- /dev/null +++ b/board/engicam/icorem6/genimage.cfg @@ -0,0 +1,42 @@ +image boot.vfat { + vfat { + files = { + "uImage", + "imx6dl-icore.dtb", + "imx6q-icore.dtb", + "imx6q-icore-ofcap10.dtb", + "imx6q-icore-ofcap12.dtb" + } + } + + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition SPL { + in-partition-table = "no" + image = "SPL" + offset = 1K + } + + partition u-boot-dtb { + in-partition-table = "no" + image = "u-boot-dtb.img" + offset = 69K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/board/engicam/icorem6/linux_qt5.fragment b/board/engicam/icorem6/linux_qt5.fragment new file mode 100644 index 00000000..5c0505e5 --- /dev/null +++ b/board/engicam/icorem6/linux_qt5.fragment @@ -0,0 +1,4 @@ +# Currently kernel mainline exhibits issues when running cpufreq as ondemand +# governor on mx6. +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y diff --git a/board/engicam/icorem6/readme.txt b/board/engicam/icorem6/readme.txt new file mode 100644 index 00000000..bd78c5a5 --- /dev/null +++ b/board/engicam/icorem6/readme.txt @@ -0,0 +1,93 @@ +********************************************* +Buildroot for Engicam i.CoreM6 SOM platforms: +********************************************* + +This file documents the Buildroot support for Engicam i.CoreM6 +platform boards. + +i.CoreM6 Quad/Dual/DualLite/Solo SOM Starter kits: +https://www.engicam.com/vis-prod/101120 +i.CoreM6 Quad/Dual/DualLite/Solo Open Frame 10.1 C.TOUCH kits: +https://www.engicam.com/vis-prod/101133 + +This configuration uses U-Boot mainline and kernel mainline. + +Build +===== + +First, configure Buildroot for the Engicam i.CoreM6: + + make engicam_imx6qdl_icore_defconfig + +Build all components: + + make + +You will find the following files in output/images/: + - imx6q-icore.dtb (for i.CoreM6 Quad/Dual) + - imx6dl-icore.dtb (for i.CoreM6 DualLite/Solo) + - imx6q-icore-ofcap10.dtb (for i.CoreM6 Quad/Dual ofcap 10) + - imx6q-icore-ofcap12.dtb (for i.CoreM6 Quad/Dual ofcap 12) + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - SPL + - u-boot-dtb.img + - uImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + sync + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/engicam/icorem6/genimage.cfg + +Boot the i.CoreM6 boards with SD boot: +===================================== + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- connect 3-wire RS232 serial port J28 on board, and connect with other + serial end or USB cable(if serial-to-usb converter used) using + a terminal emulator at 115200 bps, 8n1; +- close JM3 for sd boot. +- power on the board. + +Testing graphics on i.CoreM6: +============================ + +Build with support for Etnaviv, Qt5 and demo applications: + + make engicam_imx6qdl_icore_qt5_defconfig + make + +Running kmscube +# kmscube -D /dev/dri/card1 + +Running glmark2-es2-drm +# glmark2-es2-drm + +Running Qt5 Cinematic Demo: +- for i.CoreM6 Starter Kit +# export QT_QPA_EGLFS_KMS_CONFIG=/root/imx6qdl-icore.json +- for i.CoreM6 ofcap10 +# export QT_QPA_EGLFS_KMS_CONFIG=/root/imx6qdl-icore-ofcap10.json +- for i.CoreM6 ofcap12 +# export QT_QPA_EGLFS_KMS_CONFIG=/root/imx6qdl-icore-ofcap12.json + +# CinematicExperience-demo + +Enjoy! diff --git a/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore-ofcap10.json b/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore-ofcap10.json new file mode 100644 index 00000000..3bfe4a23 --- /dev/null +++ b/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore-ofcap10.json @@ -0,0 +1,11 @@ +{ + "device": "/dev/dri/card1", + "hwcursor": false, + "pbuffers": true, + "outputs": [ + { + "name": "LVDS1", + "mode": "1280x800" + } + ] +} diff --git a/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore-ofcap12.json b/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore-ofcap12.json new file mode 100644 index 00000000..ea5ce6f9 --- /dev/null +++ b/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore-ofcap12.json @@ -0,0 +1,11 @@ +{ + "device": "/dev/dri/card1", + "hwcursor": false, + "pbuffers": true, + "outputs": [ + { + "name": "LVDS1", + "mode": "1280x480" + } + ] +} diff --git a/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore.json b/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore.json new file mode 100644 index 00000000..b4fa359b --- /dev/null +++ b/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore.json @@ -0,0 +1,11 @@ +{ + "device": "/dev/dri/card1", + "hwcursor": false, + "pbuffers": true, + "outputs": [ + { + "name": "LVDS1", + "mode": "800x480" + } + ] +} diff --git a/board/engicam/icorem6_rqs/genimage.cfg b/board/engicam/icorem6_rqs/genimage.cfg new file mode 100644 index 00000000..d6936f81 --- /dev/null +++ b/board/engicam/icorem6_rqs/genimage.cfg @@ -0,0 +1,40 @@ +image boot.vfat { + vfat { + files = { + "uImage", + "imx6dl-icore-rqs.dtb", + "imx6q-icore-rqs.dtb" + } + } + + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition SPL { + in-partition-table = "no" + image = "SPL" + offset = 1K + } + + partition u-boot-dtb { + in-partition-table = "no" + image = "u-boot-dtb.img" + offset = 69K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/board/engicam/icorem6_rqs/readme.txt b/board/engicam/icorem6_rqs/readme.txt new file mode 100644 index 00000000..a0bf6f50 --- /dev/null +++ b/board/engicam/icorem6_rqs/readme.txt @@ -0,0 +1,69 @@ +************************************************* +Buildroot for Engicam i.CoreM6 RQS SOM platforms: +************************************************* + +This file documents the Buildroot support for Engicam i.CoreM6 RQS +SOM platform boards. + +i.CoreM6 Quad/Dual/DualLite/Solo RQS SOM Starter kits: +https://www.engicam.com/vis-prod/101124 + +This configuration uses U-Boot mainline and kernel mainline. + +Build +===== + +First, configure Buildroot for the Engicam i.CoreM6 RQS: + +- for i.CoreM6 RQS Quad/Dual/DualLite/Solo: + + make engicam_imx6qdl_icore_rqs_defconfig + +Build all components: + + make + +You will find the following files in output/images/: +- for i.CoreM6 Quad/Dual RQS: + - imx6q-icore-rqs.dtb +- for i.CoreM6 DualLite/Solo RQS: + - imx6dl-icore-rqs.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - SPL + - u-boot-dtb.img + - uImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + sync + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/engicam/icorem6_rqs/genimage.cfg + +Boot the i.CoreM6 RQS boards with SD boot: +========================================= + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- connect 3-wire RS232 serial port J7 on board, and connect with other + serial end or USB cable(if serial-to-usb converter used) using + a terminal emulator at 115200 bps, 8n1; +- close JM2 for sd boot. +- power on the board. + +Enjoy! diff --git a/board/engicam/isiot/genimage.cfg b/board/engicam/isiot/genimage.cfg new file mode 100644 index 00000000..4e65a701 --- /dev/null +++ b/board/engicam/isiot/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "uImage", + "imx6ul-isiot-emmc.dtb" + } + } + + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition SPL { + in-partition-table = "no" + image = "SPL" + offset = 1K + } + + partition u-boot-dtb { + in-partition-table = "no" + image = "u-boot-dtb.img" + offset = 69K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/board/engicam/isiot/readme.txt b/board/engicam/isiot/readme.txt new file mode 100644 index 00000000..5394007c --- /dev/null +++ b/board/engicam/isiot/readme.txt @@ -0,0 +1,66 @@ +******************************************** +Buildroot for Engicam Is.IoT SOM platforms: +******************************************** + +This file documents the Buildroot support for all Engicam Is.IoT MX6UL +SOM platform boards. + +Is.IoT MX6UL SOM Starter kits: +https://www.engicam.com/vis-prod/101122 + +This configuration uses U-Boot mainline and kernel mainline. + +Build +===== + +First, configure Buildroot for the Engicam Is.IoT MX6UL SOM: + +- for Is.IoT MX6UL SOM: + + make engicam_imx6ul_isiot_defconfig + +Build all components: + + make + +You will find the following files in output/images/: + - imx6ul-isiot-emmc.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - SPL + - u-boot-dtb.img + - uImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + sync + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/engicam/isiot/genimage.cfg + +Boot the Is.IoT MX6UL boards with SD boot: +========================================= + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- connect 3-wire RS232 serial port J28 on board, and connect with other + serial end or USB cable(if serial-to-usb converter used) using + a terminal emulator at 115200 bps, 8n1; +- close JM3 for sd boot. +- power on the board. + +Enjoy! diff --git a/board/firefly/roc-rk3399-pc/extlinux.conf b/board/firefly/roc-rk3399-pc/extlinux.conf new file mode 100644 index 00000000..50a358fa --- /dev/null +++ b/board/firefly/roc-rk3399-pc/extlinux.conf @@ -0,0 +1,4 @@ +label RK3399RocPC linux + kernel /boot/Image + devicetree /boot/rk3399-roc-pc.dtb + append earlycon=uart8250,mmio32,0xff1a0000 root=/dev/mmcblk0p1 rootwait diff --git a/board/firefly/roc-rk3399-pc/genimage.cfg b/board/firefly/roc-rk3399-pc/genimage.cfg new file mode 100644 index 00000000..966c8692 --- /dev/null +++ b/board/firefly/roc-rk3399-pc/genimage.cfg @@ -0,0 +1,22 @@ +image sdcard.img { + hdimage { + } + + partition u-boot-tpl-spl-dtb { + in-partition-table = "no" + image = "idbloader.img" + offset = 32K + } + + partition u-boot-dtb { + in-partition-table = "no" + image = "u-boot.itb" + offset = 8M + size = 30M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/firefly/roc-rk3399-pc/post-build.sh b/board/firefly/roc-rk3399-pc/post-build.sh new file mode 100755 index 00000000..d84a5da0 --- /dev/null +++ b/board/firefly/roc-rk3399-pc/post-build.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +BOARD_DIR="$(dirname "$0")" + +install -m 0644 -D "$BOARD_DIR"/extlinux.conf "$TARGET_DIR"/boot/extlinux/extlinux.conf diff --git a/board/firefly/roc-rk3399-pc/readme.txt b/board/firefly/roc-rk3399-pc/readme.txt new file mode 100644 index 00000000..8a6f1cde --- /dev/null +++ b/board/firefly/roc-rk3399-pc/readme.txt @@ -0,0 +1,40 @@ +Libre Computer Board ROC-RK3399-PC +=================================== + +Build: + + $ make roc_pc_rk3399_defconfig + $ make + +Files created in output directory +================================= + +output/images + +├── bl31.elf +├── idbloader.img +├── Image +├── rk3399-roc-pc.dtb +├── rootfs.ext2 +├── rootfs.ext4 -> rootfs.ext2 +├── rootfs.tar +├── sdcard.img +├── u-boot.bin +└── u-boot.itb + +Creating bootable SD card: +========================== + +Simply invoke (as root) + +sudo dd if=output/images/sdcard.img of=/dev/sdX && sync + +Where X is your SD card device + +Serial console +-------------- + +Baudrate for this board is 1500000 + +Wiki link: +https://wiki.amarulasolutions.com/bsp/rockchip/rk3399/roc-rk3399-pc.html diff --git a/board/freescale/common/imx/genimage.cfg.template b/board/freescale/common/imx/genimage.cfg.template new file mode 100644 index 00000000..61b09bde --- /dev/null +++ b/board/freescale/common/imx/genimage.cfg.template @@ -0,0 +1,41 @@ +# Minimal SD card image for the Freescale boards Template +# +# We mimic the .sdcard Freescale's image format: +# * the SD card must have 1 kB free space at the beginning, +# * U-Boot is dumped as is, +# * a FAT partition at offset 8 MB is containing zImage/uImage and DTB files +# * a single root filesystem partition is required (ext2, ext3 or ext4) +# + +image boot.vfat { + vfat { + label = "boot" + files = { + %FILES% + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "%UBOOTBIN%" + offset = 1024 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/board/freescale/common/imx/genimage.cfg.template_imx8 b/board/freescale/common/imx/genimage.cfg.template_imx8 new file mode 100644 index 00000000..56892050 --- /dev/null +++ b/board/freescale/common/imx/genimage.cfg.template_imx8 @@ -0,0 +1,41 @@ +# Minimal SD card image for the Freescale iMX8 boards +# +# We mimic the .sdcard Freescale's image format: +# * the SD card must have 33 kB free space at the beginning, +# * U-Boot is integrated into imx8-boot-sd.bin and is dumped as is, +# * a FAT partition at offset 8MB is containing Image and DTB files +# * a single root filesystem partition is required (ext2, ext3 or ext4) +# + +image boot.vfat { + vfat { + label = "boot" + files = { + %FILES% + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition imx-boot { + in-partition-table = "no" + image = "imx8-boot-sd.bin" + offset = %IMXOFFSET% + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/board/freescale/common/imx/genimage.cfg.template_imx9 b/board/freescale/common/imx/genimage.cfg.template_imx9 new file mode 100644 index 00000000..df7ddc25 --- /dev/null +++ b/board/freescale/common/imx/genimage.cfg.template_imx9 @@ -0,0 +1,42 @@ +# Minimal SD card image for the NXP i.MX9 boards +# +# We mimic the .sdcard NXP's image format: +# * the SD card must have 32 kB free space at the beginning, +# * U-Boot is integrated into imx9-boot-sd.bin and is dumped as is, +# * a FAT partition at offset 8MB is containing Image and DTB files +# * a single root filesystem partition is required (ext2, ext3 or ext4) +# + +image boot.vfat { + vfat { + label = "boot" + files = { + %FILES% + } + } + + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition imx-boot { + in-partition-table = "no" + image = "imx9-boot-sd.bin" + offset = %IMXOFFSET% + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/board/freescale/common/imx/genimage.cfg.template_no_boot_part b/board/freescale/common/imx/genimage.cfg.template_no_boot_part new file mode 100644 index 00000000..b8fa4321 --- /dev/null +++ b/board/freescale/common/imx/genimage.cfg.template_no_boot_part @@ -0,0 +1,16 @@ +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "%UBOOTBIN%" + offset = 1024 + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + offset = 8M + } +} diff --git a/board/freescale/common/imx/genimage.cfg.template_no_boot_part_spl b/board/freescale/common/imx/genimage.cfg.template_no_boot_part_spl new file mode 100644 index 00000000..ef015918 --- /dev/null +++ b/board/freescale/common/imx/genimage.cfg.template_no_boot_part_spl @@ -0,0 +1,31 @@ +# Minimal SD card image for the Freescale boards Template for SPL Boot +# +# We mimic the .sdcard Freescale's image format: +# * the SD card must have 1 kB free space at the beginning, +# * SPL is at the offset expected by ROM, +# * U-Boot is at the offset expected by SPL, +# * The first partition is expected to be an ext2 and have a /boot directory. +# + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "SPL" + offset = 1024 + } + + partition u-boot { + in-partition-table = "no" + image = "%UBOOTBIN%" + offset = 69K + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + offset = 8M + } +} diff --git a/board/freescale/common/imx/genimage.cfg.template_spl b/board/freescale/common/imx/genimage.cfg.template_spl new file mode 100644 index 00000000..3b0667c3 --- /dev/null +++ b/board/freescale/common/imx/genimage.cfg.template_spl @@ -0,0 +1,47 @@ +# Minimal SD card image for the Freescale boards Template for SPL Boot +# +# We mimic the .sdcard Freescale's image format: +# * the SD card must have 1 kB free space at the beginning, +# * U-Boot is dumped as is, +# * a FAT partition at offset 8MB is containing zImage/uImage and DTB files +# * a single root filesystem partition is required (ext2, ext3 or ext4) +# + +image boot.vfat { + vfat { + label = "boot" + files = { + %FILES% + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "SPL" + offset = 1024 + } + + partition u-boot { + in-partition-table = "no" + image = "%UBOOTBIN%" + offset = 69K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/board/freescale/common/imx/imx8-bootloader-prepare.sh b/board/freescale/common/imx/imx8-bootloader-prepare.sh new file mode 100755 index 00000000..0f5dff67 --- /dev/null +++ b/board/freescale/common/imx/imx8-bootloader-prepare.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash + +main () +{ + UBOOT_DTB=$2 + if [ ! -e "$UBOOT_DTB" ]; then + echo "ERROR: couldn't find dtb: $UBOOT_DTB" + exit 1 + fi + + FIT_EXTERNAL_POSITION=0x5000 + + if grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M=y$" ${BR2_CONFIG}; then + dd if=${BINARIES_DIR}/u-boot-spl.bin of=${BINARIES_DIR}/u-boot-spl-padded.bin bs=4 conv=sync + cat ${BINARIES_DIR}/u-boot-spl-padded.bin ${BINARIES_DIR}/ddr_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin + if grep -Eq "^BR2_TARGET_OPTEE_OS=y$" ${BR2_CONFIG}; then + BL31=${BINARIES_DIR}/bl31.bin BL32=${BINARIES_DIR}/tee.bin BL33=${BINARIES_DIR}/u-boot-nodtb.bin TEE_LOAD_ADDR=0xfe000000 ATF_LOAD_ADDR=0x00910000 ${HOST_DIR}/bin/mkimage_fit_atf.sh ${UBOOT_DTB} > ${BINARIES_DIR}/u-boot.its + else + BL31=${BINARIES_DIR}/bl31.bin BL33=${BINARIES_DIR}/u-boot-nodtb.bin ATF_LOAD_ADDR=0x00910000 ${HOST_DIR}/bin/mkimage_fit_atf.sh ${UBOOT_DTB} > ${BINARIES_DIR}/u-boot.its + fi + ${HOST_DIR}/bin/mkimage -E -p ${FIT_EXTERNAL_POSITION} -f ${BINARIES_DIR}/u-boot.its ${BINARIES_DIR}/u-boot.itb + rm -f ${BINARIES_DIR}/u-boot.its + + ${HOST_DIR}/bin/mkimage_imx8 -fit -signed_hdmi ${BINARIES_DIR}/signed_hdmi_imx8m.bin -loader ${BINARIES_DIR}/u-boot-spl-ddr.bin 0x7E1000 -second_loader ${BINARIES_DIR}/u-boot.itb 0x40200000 0x60000 -out ${BINARIES_DIR}/imx8-boot-sd.bin + elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM=y$" ${BR2_CONFIG}; then + dd if=${BINARIES_DIR}/u-boot-spl.bin of=${BINARIES_DIR}/u-boot-spl-padded.bin bs=4 conv=sync + cat ${BINARIES_DIR}/u-boot-spl-padded.bin ${BINARIES_DIR}/ddr_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin + if grep -Eq "^BR2_TARGET_OPTEE_OS=y$" ${BR2_CONFIG}; then + BL31=${BINARIES_DIR}/bl31.bin BL32=${BINARIES_DIR}/tee.bin BL33=${BINARIES_DIR}/u-boot-nodtb.bin TEE_LOAD_ADDR=0xbe000000 ATF_LOAD_ADDR=0x00920000 ${HOST_DIR}/bin/mkimage_fit_atf.sh ${UBOOT_DTB} > ${BINARIES_DIR}/u-boot.its + else + BL31=${BINARIES_DIR}/bl31.bin BL33=${BINARIES_DIR}/u-boot-nodtb.bin ATF_LOAD_ADDR=0x00920000 ${HOST_DIR}/bin/mkimage_fit_atf.sh ${UBOOT_DTB} > ${BINARIES_DIR}/u-boot.its + fi + ${HOST_DIR}/bin/mkimage -E -p ${FIT_EXTERNAL_POSITION} -f ${BINARIES_DIR}/u-boot.its ${BINARIES_DIR}/u-boot.itb + rm -f ${BINARIES_DIR}/u-boot.its + + ${HOST_DIR}/bin/mkimage_imx8 -fit -loader ${BINARIES_DIR}/u-boot-spl-ddr.bin 0x7E1000 -second_loader ${BINARIES_DIR}/u-boot.itb 0x40200000 0x60000 -out ${BINARIES_DIR}/imx8-boot-sd.bin + elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN=y$" ${BR2_CONFIG}; then + dd if=${BINARIES_DIR}/u-boot-spl.bin of=${BINARIES_DIR}/u-boot-spl-padded.bin bs=4 conv=sync + cat ${BINARIES_DIR}/u-boot-spl-padded.bin ${BINARIES_DIR}/ddr_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin + if grep -Eq "^BR2_TARGET_OPTEE_OS=y$" ${BR2_CONFIG}; then + BL31=${BINARIES_DIR}/bl31.bin BL32=${BINARIES_DIR}/tee.bin BL33=${BINARIES_DIR}/u-boot-nodtb.bin TEE_LOAD_ADDR=0x56000000 ATF_LOAD_ADDR=0x00960000 ${HOST_DIR}/bin/mkimage_fit_atf.sh ${UBOOT_DTB} > ${BINARIES_DIR}/u-boot.its + else + BL31=${BINARIES_DIR}/bl31.bin BL33=${BINARIES_DIR}/u-boot-nodtb.bin ATF_LOAD_ADDR=0x00960000 ${HOST_DIR}/bin/mkimage_fit_atf.sh ${UBOOT_DTB} > ${BINARIES_DIR}/u-boot.its + fi + ${HOST_DIR}/bin/mkimage -E -p ${FIT_EXTERNAL_POSITION} -f ${BINARIES_DIR}/u-boot.its ${BINARIES_DIR}/u-boot.itb + rm -f ${BINARIES_DIR}/u-boot.its + + ${HOST_DIR}/bin/mkimage_imx8 -v v2 -fit -loader ${BINARIES_DIR}/u-boot-spl-ddr.bin 0x912000 -second_loader ${BINARIES_DIR}/u-boot.itb 0x40200000 0x60000 -out ${BINARIES_DIR}/imx8-boot-sd.bin + elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP=y$" ${BR2_CONFIG}; then + dd if=${BINARIES_DIR}/u-boot-spl.bin of=${BINARIES_DIR}/u-boot-spl-padded.bin bs=4 conv=sync + cat ${BINARIES_DIR}/u-boot-spl-padded.bin ${BINARIES_DIR}/ddr_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin + if grep -Eq "^BR2_TARGET_OPTEE_OS=y$" ${BR2_CONFIG}; then + BL31=${BINARIES_DIR}/bl31.bin BL32=${BINARIES_DIR}/tee.bin BL33=${BINARIES_DIR}/u-boot-nodtb.bin TEE_LOAD_ADDR=0x56000000 ATF_LOAD_ADDR=0x00970000 ${HOST_DIR}/bin/mkimage_fit_atf.sh ${UBOOT_DTB} > ${BINARIES_DIR}/u-boot.its + else + BL31=${BINARIES_DIR}/bl31.bin BL33=${BINARIES_DIR}/u-boot-nodtb.bin ATF_LOAD_ADDR=0x00970000 ${HOST_DIR}/bin/mkimage_fit_atf.sh ${UBOOT_DTB} > ${BINARIES_DIR}/u-boot.its + fi + ${HOST_DIR}/bin/mkimage -E -p ${FIT_EXTERNAL_POSITION} -f ${BINARIES_DIR}/u-boot.its ${BINARIES_DIR}/u-boot.itb + rm -f ${BINARIES_DIR}/u-boot.its + + ${HOST_DIR}/bin/mkimage_imx8 -v v2 -fit -loader ${BINARIES_DIR}/u-boot-spl-ddr.bin 0x920000 -second_loader ${BINARIES_DIR}/u-boot.itb 0x40200000 0x60000 -out ${BINARIES_DIR}/imx8-boot-sd.bin + elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8ULP=y$" "${BR2_CONFIG}"; then + SPL_LOAD_ADDR=0x22020000 + ATF_LOAD_ADDR=0x20040000 + "${HOST_DIR}/bin/mkimage_imx8" -commit > "${BINARIES_DIR}/mkimg.commit" + cat "${BINARIES_DIR}/u-boot.bin" "${BINARIES_DIR}/mkimg.commit" > "${BINARIES_DIR}/u-boot-hash.bin" + rm -f "${BINARIES_DIR}/mkimg.commit" + if grep -Eq "^BR2_TARGET_OPTEE_OS=y$" "${BR2_CONFIG}"; then + "${HOST_DIR}/bin/mkimage_imx8" -soc ULP -c -ap "${BINARIES_DIR}/bl31.bin" a35 ${ATF_LOAD_ADDR} -ap "${BINARIES_DIR}/u-boot-hash.bin" a35 0x80200000 -ap "${BINARIES_DIR}/tee.bin" a35 0xa6000000 -out "${BINARIES_DIR}/u-boot-atf-container.img" + else + "${HOST_DIR}/bin/mkimage_imx8" -soc ULP -c -ap "${BINARIES_DIR}/bl31.bin" a35 ${ATF_LOAD_ADDR} -ap "${BINARIES_DIR}/u-boot-hash.bin" a35 0x80200000 -out "${BINARIES_DIR}/u-boot-atf-container.img" + fi + if [ -e "${BINARIES_DIR}/m33_image.bin" ]; then + "${HOST_DIR}/bin/mkimage_imx8" -soc ULP -append "${BINARIES_DIR}/ahab-container.img" -c -upower "${BINARIES_DIR}/upower.bin" -m4 "${BINARIES_DIR}/m33_image.bin" 0 0x1ffc2000 -ap "${BINARIES_DIR}/u-boot-spl.bin" a35 ${SPL_LOAD_ADDR} -out "${BINARIES_DIR}/imx8-boot-sd.bin" + else + "${HOST_DIR}/bin/mkimage_imx8" -soc ULP -append "${BINARIES_DIR}/ahab-container.img" -c -upower "${BINARIES_DIR}/upower.bin" 0 0x1ffc2000 -ap "${BINARIES_DIR}/u-boot-spl.bin" a35 ${SPL_LOAD_ADDR} -out "${BINARIES_DIR}/imx8-boot-sd.bin" + fi + flashbin_size="$(wc -c "${BINARIES_DIR}/imx8-boot-sd.bin" | awk '{print $1}')" + pad_cnt=$(($((flashbin_size + 0x400 - 1)) / 0x400)) + dd if="${BINARIES_DIR}/u-boot-atf-container.img" of="${BINARIES_DIR}/imx8-boot-sd.bin" bs=1K seek=${pad_cnt} + else + ${HOST_DIR}/bin/mkimage_imx8 -commit > ${BINARIES_DIR}/mkimg.commit + cat ${BINARIES_DIR}/u-boot.bin ${BINARIES_DIR}/mkimg.commit > ${BINARIES_DIR}/u-boot-hash.bin + cp ${BINARIES_DIR}/bl31.bin ${BINARIES_DIR}/u-boot-atf.bin + dd if=${BINARIES_DIR}/u-boot-hash.bin of=${BINARIES_DIR}/u-boot-atf.bin bs=1K seek=128 + if grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8=y$" ${BR2_CONFIG}; then + ${HOST_DIR}/bin/mkimage_imx8 -soc QM -rev B0 -append ${BINARIES_DIR}/ahab-container.img -c -scfw ${BINARIES_DIR}/mx8qm-mek-scfw-tcm.bin -ap ${BINARIES_DIR}/u-boot-atf.bin a53 0x80000000 -out ${BINARIES_DIR}/imx8-boot-sd.bin + elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8DXL=y$" ${BR2_CONFIG}; then + ${HOST_DIR}/bin/mkimage_imx8 -soc DXL -rev B0 -append ${BINARIES_DIR}/ahab-container.img -c -scfw ${BINARIES_DIR}/mx8dxl-evk-scfw-tcm.bin -ap ${BINARIES_DIR}/u-boot-atf.bin a35 0x80000000 -out ${BINARIES_DIR}/imx8-boot-sd.bin + else + ${HOST_DIR}/bin/mkimage_imx8 -soc QX -rev B0 -append ${BINARIES_DIR}/ahab-container.img -c -scfw ${BINARIES_DIR}/mx8qx-mek-scfw-tcm.bin -ap ${BINARIES_DIR}/u-boot-atf.bin a35 0x80000000 -out ${BINARIES_DIR}/imx8-boot-sd.bin + fi + fi + + exit $? +} + +set -e +main $@ diff --git a/board/freescale/common/imx/imx9-bootloader-prepare.sh b/board/freescale/common/imx/imx9-bootloader-prepare.sh new file mode 100755 index 00000000..8ab5a241 --- /dev/null +++ b/board/freescale/common/imx/imx9-bootloader-prepare.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +main () +{ + SPL_LOAD_ADDR=0x2049A000 + ATF_LOAD_ADDR=0x204E0000 + if grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX91=y$" "${BR2_CONFIG}"; then + SPL_LOAD_ADDR=0x204A0000 + ATF_LOAD_ADDR=0x204C0000 + fi + + dd if="${BINARIES_DIR}/u-boot-spl.bin" of="${BINARIES_DIR}/u-boot-spl-padded.bin" bs=4 conv=sync + cat "${BINARIES_DIR}/u-boot-spl-padded.bin" "${BINARIES_DIR}/ddr_fw.bin" > "${BINARIES_DIR}/u-boot-spl-ddr.bin" + + "${HOST_DIR}/bin/mkimage_imx8" -commit > "${BINARIES_DIR}/mkimg.commit" + cat "${BINARIES_DIR}/u-boot.bin" "${BINARIES_DIR}/mkimg.commit" > "${BINARIES_DIR}/u-boot-hash.bin" + rm -f "${BINARIES_DIR}/mkimg.commit" + + if grep -Eq "^BR2_TARGET_OPTEE_OS=y$" "${BR2_CONFIG}"; then + "${HOST_DIR}/bin/mkimage_imx8" -soc IMX9 -c \ + -ap "${BINARIES_DIR}/bl31.bin" a35 ${ATF_LOAD_ADDR} \ + -ap "${BINARIES_DIR}/u-boot-hash.bin" a35 0x80200000 \ + -ap "${BINARIES_DIR}/tee.bin" a35 0x96000000 \ + -out "${BINARIES_DIR}/u-boot-atf-container.img" + else + "${HOST_DIR}/bin/mkimage_imx8" -soc IMX9 -c \ + -ap "${BINARIES_DIR}/bl31.bin" a35 ${ATF_LOAD_ADDR} \ + -ap "${BINARIES_DIR}/u-boot-hash.bin" a35 0x80200000 \ + -out "${BINARIES_DIR}/u-boot-atf-container.img" + fi + + "${HOST_DIR}/bin/mkimage_imx8" -soc IMX9 -append "${BINARIES_DIR}/ahab-container.img" -c \ + -ap "${BINARIES_DIR}/u-boot-spl-ddr.bin" a35 ${SPL_LOAD_ADDR} \ + -out "${BINARIES_DIR}/imx9-boot-sd.bin" + + flashbin_size="$(wc -c "${BINARIES_DIR}/imx9-boot-sd.bin" | awk '{print $1}')" + pad_cnt=$(($((flashbin_size + 0x400 - 1)) / 0x400)) + dd if="${BINARIES_DIR}/u-boot-atf-container.img" of="${BINARIES_DIR}/imx9-boot-sd.bin" bs=1K seek=${pad_cnt} + + exit $? +} + +main "$@" diff --git a/board/freescale/common/imx/post-image.sh b/board/freescale/common/imx/post-image.sh new file mode 100755 index 00000000..a440bfb7 --- /dev/null +++ b/board/freescale/common/imx/post-image.sh @@ -0,0 +1,122 @@ +#!/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 + + DTB_LIST="$(sed -n 's/^BR2_LINUX_KERNEL_INTREE_DTS_NAME="\([\/a-z0-9 \-]*\)"$/\1/p' "${BR2_CONFIG}")" + + for dt in $DTB_LIST; do + echo -n "\"$(basename "${dt}").dtb\", " + done +} + +# +# linux_image extracts the Linux image format from BR2_LINUX_KERNEL_UIMAGE in +# ${BR_CONFIG}, then prints the corresponding file name for the genimage +# configuration file +# +linux_image() +{ + if grep -Eq "^BR2_LINUX_KERNEL_UIMAGE=y$" "${BR2_CONFIG}"; then + echo "\"uImage\"" + elif grep -Eq "^BR2_LINUX_KERNEL_IMAGE=y$" "${BR2_CONFIG}"; then + echo "\"Image\"" + elif grep -Eq "^BR2_LINUX_KERNEL_IMAGEGZ=y$" "${BR2_CONFIG}"; then + echo "\"Image.gz\"" + else + echo "\"zImage\"" + fi +} + +genimage_type() +{ + if grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8=y$" "${BR2_CONFIG}"; then + echo "genimage.cfg.template_imx8" + elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M=y$" "${BR2_CONFIG}"; then + echo "genimage.cfg.template_imx8" + elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM=y$" "${BR2_CONFIG}"; then + echo "genimage.cfg.template_imx8" + elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN=y$" "${BR2_CONFIG}"; then + echo "genimage.cfg.template_imx8" + elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP=y$" "${BR2_CONFIG}"; then + echo "genimage.cfg.template_imx8" + elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X=y$" "${BR2_CONFIG}"; then + echo "genimage.cfg.template_imx8" + elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8DXL=y$" "${BR2_CONFIG}"; then + echo "genimage.cfg.template_imx8" + elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX91=y$" "${BR2_CONFIG}"; then + echo "genimage.cfg.template_imx9" + elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93=y$" "${BR2_CONFIG}"; then + echo "genimage.cfg.template_imx9" + elif grep -Eq "^BR2_LINUX_KERNEL_INSTALL_TARGET=y$" "${BR2_CONFIG}"; then + if grep -Eq "^BR2_TARGET_UBOOT_SPL=y$" "${BR2_CONFIG}"; then + echo "genimage.cfg.template_no_boot_part_spl" + else + echo "genimage.cfg.template_no_boot_part" + fi + elif grep -Eq "^BR2_TARGET_UBOOT_SPL=y$" "${BR2_CONFIG}"; then + echo "genimage.cfg.template_spl" + else + echo "genimage.cfg.template" + fi +} + +imx_offset() +{ + if grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M=y$" "${BR2_CONFIG}"; then + echo "33K" + elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM=y$" "${BR2_CONFIG}"; then + echo "33K" + else + echo "32K" + fi +} + +uboot_image() +{ + if grep -Eq "^BR2_TARGET_UBOOT_FORMAT_DTB_IMX=y$" "${BR2_CONFIG}"; then + echo "u-boot-dtb.imx" + elif grep -Eq "^BR2_TARGET_UBOOT_FORMAT_IMX=y$" "${BR2_CONFIG}"; then + echo "u-boot.imx" + elif grep -Eq "^BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y$" "${BR2_CONFIG}"; then + echo "u-boot-dtb.img" + elif grep -Eq "^BR2_TARGET_UBOOT_FORMAT_IMG=y$" "${BR2_CONFIG}"; then + echo "u-boot.img" + fi +} + +main() +{ + local FILES IMXOFFSET UBOOTBIN GENIMAGE_CFG GENIMAGE_TMP + FILES="$(dtb_list) $(linux_image)" + IMXOFFSET="$(imx_offset)" + UBOOTBIN="$(uboot_image)" + GENIMAGE_CFG="$(mktemp --suffix genimage.cfg)" + GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + + sed -e "s/%FILES%/${FILES}/" \ + -e "s/%IMXOFFSET%/${IMXOFFSET}/" \ + -e "s/%UBOOTBIN%/${UBOOTBIN}/" \ + "board/freescale/common/imx/$(genimage_type)" > "${GENIMAGE_CFG}" + + rm -rf "${GENIMAGE_TMP}" + + genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + + rm -f "${GENIMAGE_CFG}" + + exit $? +} + +main "$@" diff --git a/board/freescale/common/mxs/genimage.cfg.template b/board/freescale/common/mxs/genimage.cfg.template new file mode 100644 index 00000000..c9da4528 --- /dev/null +++ b/board/freescale/common/mxs/genimage.cfg.template @@ -0,0 +1,40 @@ +# 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 { + label = "boot" + 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/board/freescale/common/mxs/post-image.sh b/board/freescale/common/mxs/post-image.sh new file mode 100755 index 00000000..0bfb835c --- /dev/null +++ b/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/board/freescale/common/patches/arm-trusted-firmware/0001-feat-build-add-support-for-new-binutils-versions.patch b/board/freescale/common/patches/arm-trusted-firmware/0001-feat-build-add-support-for-new-binutils-versions.patch new file mode 100644 index 00000000..335c1855 --- /dev/null +++ b/board/freescale/common/patches/arm-trusted-firmware/0001-feat-build-add-support-for-new-binutils-versions.patch @@ -0,0 +1,61 @@ +From 0f75b03c008eacb9818af3a56dc088e72a623d17 Mon Sep 17 00:00:00 2001 +From: Marco Felsch +Date: Wed, 9 Nov 2022 12:59:09 +0100 +Subject: [PATCH] feat(build): add support for new binutils versions + +Users of GNU ld (BPF) from binutils 2.39+ will observe multiple instaces +of a new warning when linking the bl*.elf in the form: + + ld.bfd: warning: stm32mp1_helper.o: missing .note.GNU-stack section implies executable stack + ld.bfd: NOTE: This behaviour is deprecated and will be removed in a future version of the linker + ld.bfd: warning: bl2.elf has a LOAD segment with RWX permissions + ld.bfd: warning: bl32.elf has a LOAD segment with RWX permissions + +These new warnings are enbaled by default to secure elf binaries: + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a6e8434126b8fac7aa75107 + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=0d38576a34ec64a1b4500c9277a8e9d0f07e6774 + +Fix it in a similar way to what the Linux kernel does, see: +https://lore.kernel.org/all/20220810222442.2296651-1-ndesaulniers@google.com/ + +Following the reasoning there, we set "-z noexecstack" for all linkers +(although LLVM's LLD defaults to it) and optional add +--no-warn-rwx-segments since this a ld.bfd related. + +Signed-off-by: Marco Felsch +Signed-off-by: Robert Schwebel +Change-Id: I9430f5fa5036ca88da46cd3b945754d62616b617 +Signed-off-by: Heiko Thiery +Upstream: https://github.com/ARM-software/arm-trusted-firmware/commit/1f49db5f25cdd4e43825c9bcc0575070b80f628c +--- + Makefile | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 1ddb7b844..470956b19 100644 +--- a/Makefile ++++ b/Makefile +@@ -416,6 +416,8 @@ endif + + GCC_V_OUTPUT := $(shell $(CC) -v 2>&1) + ++TF_LDFLAGS += -z noexecstack ++ + # LD = armlink + ifneq ($(findstring armlink,$(notdir $(LD))),) + TF_LDFLAGS += --diag_error=warning --lto_level=O1 +@@ -442,7 +444,10 @@ TF_LDFLAGS += $(subst --,-Xlinker --,$(TF_LDFLAGS_$(ARCH))) + + # LD = gcc-ld (ld) or llvm-ld (ld.lld) or other + else +-TF_LDFLAGS += --fatal-warnings -O1 ++# With ld.bfd version 2.39 and newer new warnings are added. Skip those since we ++# are not loaded by a elf loader. ++TF_LDFLAGS += $(call ld_option, --no-warn-rwx-segments) ++TF_LDFLAGS += -O1 + TF_LDFLAGS += --gc-sections + # ld.lld doesn't recognize the errata flags, + # therefore don't add those in that case +-- +2.30.2 + diff --git a/board/freescale/common/patches/arm-trusted-firmware/0002-LF-7968-01-fix-Makefile-Suppress-array-bounds-error.patch b/board/freescale/common/patches/arm-trusted-firmware/0002-LF-7968-01-fix-Makefile-Suppress-array-bounds-error.patch new file mode 100644 index 00000000..7a7a7bbc --- /dev/null +++ b/board/freescale/common/patches/arm-trusted-firmware/0002-LF-7968-01-fix-Makefile-Suppress-array-bounds-error.patch @@ -0,0 +1,51 @@ +From b2a94de52ae4a940a87d569815b19d3fa92dd32a Mon Sep 17 00:00:00 2001 +From: Tom Hochstein +Date: Mon, 16 May 2022 13:45:16 -0500 +Subject: [PATCH] LF-7968-01 fix(Makefile): Suppress array-bounds error + +The array-bounds error is triggered now in cases where it was silent +before, causing errors like: + +``` +plat/imx/imx8m/hab.c: In function 'imx_hab_handler': +plat/imx/imx8m/hab.c:64:57: error: array subscript 0 is outside array bounds of 'uint32_t[0]' {aka 'unsigned int[]'} [-Werror=array-bounds] + 64 | #define HAB_RVT_CHECK_TARGET_ARM64 ((unsigned long)*(uint32_t *)(HAB_RVT_BASE + 0x18)) + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +``` + +The error is a false-positive and is entered as a bug [1]. The problem +is fixed partially in GCC 12 and fully in GCC 13 [2]. + +The partial fix does not work here because the constant addresses used +are less than the 4kB boundary chosen for the partial fix, so suppress +the error until GCC is upgraded to 13. + +[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99578 +[2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99578#c39 + +Upstream-Status: Inappropriate [other] +Signed-off-by: Tom Hochstein +Signed-off-by: Jacky Bai +Reviewed-by: Ye Li +Signed-off-by: Brandon Maier +Upstream: https://github.com/nxp-imx/imx-atf/commit/058bf0f104115037d03e277f079825ef3659c5b9 +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index c87c3ae08..2d6b90f47 100644 +--- a/Makefile ++++ b/Makefile +@@ -346,7 +346,7 @@ WARNINGS += -Wshift-overflow -Wshift-sign-overflow \ + endif + + ifneq (${E},0) +-ERRORS := -Werror ++ERRORS := -Werror -Wno-error=array-bounds + endif + + CPPFLAGS = ${DEFINES} ${INCLUDES} ${MBEDTLS_INC} -nostdinc \ +-- +2.41.0 + diff --git a/board/freescale/imx23evk/readme.txt b/board/freescale/imx23evk/readme.txt new file mode 100644 index 00000000..6574577d --- /dev/null +++ b/board/freescale/imx23evk/readme.txt @@ -0,0 +1,48 @@ +************************** +Freescale i.MX23 EVK board +************************** + +This file documents the Buildroot support for the Freescale i.MX23 EVK board. + +Build +===== + +First, configure Buildroot for your i.MX23 EVK board: + + make imx23evk_defconfig + +Build all components: + + make + +You will find in output/images/ directory the following files: + - imx23-evk.dtb + - rootfs.tar + - u-boot.sd + - zImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Then, run the following command: + +*** WARNING! The command will destroy all the card content. Use with care! *** + + sudo dd if=output/images/sdcard.img of=/dev/ + +Boot the i.MX23 EVK board +========================= + +- Put the Boot Mode Select jumper as 1 0 0 1 so that it can boot + from the SD card +- Insert the SD card in the SD Card slot of the board; +- Connect an RS232 UART cable to the Debug UART Port and connect using a + terminal emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! diff --git a/board/freescale/imx28evk/readme.txt b/board/freescale/imx28evk/readme.txt new file mode 100644 index 00000000..3b77634f --- /dev/null +++ b/board/freescale/imx28evk/readme.txt @@ -0,0 +1,57 @@ +************************** +Freescale i.MX28 EVK board +************************** + +This file documents the Buildroot support for the Freescale i.MX28 EVK board. + +Read the i.MX28 Evaluation Kit Quick Start Guide [1] for an introduction to the +board. + +Build +===== + +First, configure Buildroot for your i.MX28 EVK board: + + make freescale_imx28evk_defconfig + +Build all components: + + make + +You will find in ./output/images/ the following files: + - imx28-evk.dtb + - rootfs.tar + - u-boot.sd + - zImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Then, run the following command as root: + +*** WARNING! The command will destroy all the card content. Use with care! *** + + sudo dd if=output/images/sdcard.img of=/dev/ + +Boot the i.MX28 EVK board +========================= + +To boot your newly created system (refer to the i.MX28 EVK Quick Start Guide +[1] for guidance): +- insert the SD card in the SD Card Socket 0 of the board; +- verify that your i.MX28 EVK board jumpers and switches are set as mentioned + in the i.MX28 EVK Quick Start Guide [1]; +- connect an RS232 UART cable to the Debug UART Port and connect using a + terminal emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! + +References +========== +[1] https://www.nxp.com/docs/en/user-guide/EVK_imx28_QuickStart.pdf diff --git a/board/freescale/imx51evk/patches/linux-headers/linux-headers.hash b/board/freescale/imx51evk/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/freescale/imx51evk/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/freescale/imx51evk/patches/linux/linux.hash b/board/freescale/imx51evk/patches/linux/linux.hash new file mode 100644 index 00000000..fdda2dfd --- /dev/null +++ b/board/freescale/imx51evk/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# From: https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/sha256sums.asc +sha256 9c36b243e8c3ec1d5963366618f336710b84340bf95be2037b26c452392cb2d6 linux-5.10.218.tar.xz diff --git a/board/freescale/imx51evk/patches/uboot/uboot.hash b/board/freescale/imx51evk/patches/uboot/uboot.hash new file mode 100644 index 00000000..716b56e1 --- /dev/null +++ b/board/freescale/imx51evk/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 b407e1510a74e863b8b5cb42a24625344f0e0c2fc7582d8c866bd899367d0454 u-boot-2021.01.tar.bz2 diff --git a/board/freescale/imx51evk/readme.txt b/board/freescale/imx51evk/readme.txt new file mode 100644 index 00000000..d67a3fd7 --- /dev/null +++ b/board/freescale/imx51evk/readme.txt @@ -0,0 +1,54 @@ +************************** +Freescale i.MX51 EVK board +************************** + +This file documents the Buildroot support for the Freescale i.MX51 EVK board. + +Build +===== + +First, configure Buildroot for the i.MX51 EVK board: + + make mx51evk_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - imx51-babbage.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.imx + - zImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the i.MX51 EVK board +========================= + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! diff --git a/board/freescale/imx6-sabresd/linux_qt5.fragment b/board/freescale/imx6-sabresd/linux_qt5.fragment new file mode 100644 index 00000000..ffa5f63e --- /dev/null +++ b/board/freescale/imx6-sabresd/linux_qt5.fragment @@ -0,0 +1,4 @@ +# Currently mx6sabresd exhibits touchscreen issues when running cpufreq as +# ondemand governor with a mainline kernel. +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y diff --git a/board/freescale/imx6-sabresd/readme.txt b/board/freescale/imx6-sabresd/readme.txt new file mode 100644 index 00000000..292dab72 --- /dev/null +++ b/board/freescale/imx6-sabresd/readme.txt @@ -0,0 +1,111 @@ +******************************* +Freescale i.MX6 Sabre SD boards +******************************* + +This file documents the Buildroot support for the Freescale i.MX6 Sabre SD +boards based on i.MX6Q, i.MX6DL and iMX6QP. + +Thanks to the SPL support in U-Boot it is possible to run a single +sdcard.img in all i.MX6 Sabre SD board variants. + +This configuration uses U-Boot mainline and kernel mainline. + +Build +===== + +First, configure Buildroot for the i.MX6 Sabre SD board: + + make imx6-sabresd_defconfig + +Build all components: + + make + +You will find the following files in output/images/ : + - imx6q-sabresd.dtb + - imx6dl-sabresd.dtb + - imx6qp-sabresd.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.imx + - zImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the i.MX6 Sabre SD board +============================= + +To boot your newly created system: +- insert the SD card in the SD3 slot of the board (close to the HDMI connector); +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Testing graphics on the i.MX6 Sabre SD board +============================================ + +The imx6-sabresd_qt5_defconfig allows to quickly test the graphics +capabilities of i.MX6 using the opensource Etnaviv graphics stack +and kernel mainline. + +In order to build it: + +make imx6-sabresd_qt5_defconfig +make + +Then flash the SD card as explained above. + +Running kmscube application: + +# kmscube + +Running Qt5 Cinematic Demo: + +# export QT_QPA_EGLFS_KMS_CONFIG=/root/sabresd.json +# export QT_QPA_EGLFS_ALWAYS_SET_MODE=1 +# /usr/share/Qt5/CinematicExperience/Qt5_CinematicExperience + +Running gl2mark benchmark: + +# glmark2-es2-drm + +Testing video playback on the i.MX6 Sabre SD board +================================================== + +As the mx6sabresd has two display outputs (LVDS and HDMI), it is necessary to +know what is the connector that corresponds to the HDMI output. + +This information can be found by running: + +# modetest + +And search for the HDMI connector number. In our case it shows up as 37. + +In the mx6sabresd prompt run the following Gstreamer pipeline: + +# gst-launch-1.0 filesrc location=/root/trailer_1080p_h264_mp3.avi ! avidemux ! \ +h264parse ! v4l2video1dec capture-io-mode=dmabuf ! kmssink connector-id=37 \ +name=imx-drm sync=0 + +(The video used on this example was retrieved from: +http://linode.boundarydevices.com/videos/trailer_1080p_h264_mp3.avi) + +Enjoy! diff --git a/board/freescale/imx6-sabresd/rootfs_overlay/root/sabresd.json b/board/freescale/imx6-sabresd/rootfs_overlay/root/sabresd.json new file mode 100644 index 00000000..fe92ce5b --- /dev/null +++ b/board/freescale/imx6-sabresd/rootfs_overlay/root/sabresd.json @@ -0,0 +1,15 @@ +{ + "device": "/dev/dri/card0", + "hwcursor": false, + "pbuffers": true, + "outputs": [ + { + "name": "HDMI1", + "mode": "off" + }, + { + "name": "LVDS1", + "mode": "1024x768" + } + ] +} diff --git a/board/freescale/imx6sabre/patches/linux-headers/linux-headers.hash b/board/freescale/imx6sabre/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/freescale/imx6sabre/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/freescale/imx6sabre/patches/linux/linux.hash b/board/freescale/imx6sabre/patches/linux/linux.hash new file mode 100644 index 00000000..3c422397 --- /dev/null +++ b/board/freescale/imx6sabre/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c70adedadce88f8685cb26d9703b930292c1349138e2c55ed9b4cd6e277de3bd linux-imx-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx6sabre/patches/uboot/0001-mx6qsabre_common-boot-Linux-to-init-in-mfgtools-mode.patch b/board/freescale/imx6sabre/patches/uboot/0001-mx6qsabre_common-boot-Linux-to-init-in-mfgtools-mode.patch new file mode 100644 index 00000000..cbcb7c73 --- /dev/null +++ b/board/freescale/imx6sabre/patches/uboot/0001-mx6qsabre_common-boot-Linux-to-init-in-mfgtools-mode.patch @@ -0,0 +1,40 @@ +From 221b57404b29190e0b37f03b81dd3ee6a0fc9ce0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Vincent=20Stehl=C3=A9?= +Date: Tue, 12 Aug 2014 10:17:31 +0200 +Subject: [PATCH] mx6qsabre_common: boot Linux to /init in mfgtools mode +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Buildroot supplies a nice /init wrapper script to use when booting from a +ramdisk. + +This patch tells u-boot to tell the kernel to boot into /init (instead of +/linuxrc) on i.MX6, when booting in mfgtools mode. This way we can boot a +buildroot system entirely through USB. + +Signed-off-by: Vincent Stehlé +Signed-off-by: Julien Olivain +[Julien: rebased patch on lf-6.6.23-2.0.0] +Signed-off-by: Julien Olivain +Upstream: Not applicable, Buildroot specific. +--- + include/configs/imx_env.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/configs/imx_env.h b/include/configs/imx_env.h +index 1b34478fc3f..9106d59ff9f 100644 +--- a/include/configs/imx_env.h ++++ b/include/configs/imx_env.h +@@ -54,7 +54,7 @@ + + #define CFG_MFG_ENV_SETTINGS_DEFAULT \ + "mfgtool_args=setenv bootargs console=${console},${baudrate} " \ +- "rdinit=/linuxrc " \ ++ "rdinit=/init " \ + "clk_ignore_unused "\ + "\0" \ + "kboot="MFG_BOOT_CMD"\0"\ +-- +2.45.2 + diff --git a/board/freescale/imx6sabre/patches/uboot/uboot.hash b/board/freescale/imx6sabre/patches/uboot/uboot.hash new file mode 100644 index 00000000..4e0d729c --- /dev/null +++ b/board/freescale/imx6sabre/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 179b6531ef1d4ce681d139741ac7b4144220c90b7223297df28b61e98e8d37fc uboot-imx-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx6sabre/readme.txt b/board/freescale/imx6sabre/readme.txt new file mode 100644 index 00000000..320ee463 --- /dev/null +++ b/board/freescale/imx6sabre/readme.txt @@ -0,0 +1,171 @@ +******************************************************** +Freescale i.MX6 Q, DL and SoloX SABRE development boards +******************************************************** + +This file documents the Buildroot support for the Freescale SABRE Board +for Smart Devices Based on the i.MX 6 and i.MX 6SoloX Series (SABRESD), +as well as the Freescale SABRE Board for Automotive Infotainment. + +Read the i.MX 6 SABRESD Quick Start Guide for an introduction to the +board: +https://www.nxp.com/files-static/32bit/doc/quick_start_guide/SABRESDB_IMX6_QSG.pdf + +Read the i.MX 6 SoloX SABRESD Quick Start Guide for an introduction to +the board: +https://www.nxp.com/files-static/32bit/doc/quick_start_guide/IMX6SOLOXQSG.pdf + +Read the SABRE for Automotive Infotainment Quick Start Guide for an +introduction to the board: +https://www.nxp.com/webapp/Download?colCode=IMX6SABREINFOQSG + +Building with NXP kernel and NXP U-Boot +======================================= + +First, configure Buildroot for your SABRE board. +For i.MX6Q SABRE SD board: + + make freescale_imx6qsabresd_defconfig + +For i.MX6DL SABRE SD board: + + make freescale_imx6dlsabresd_defconfig + +For i.MX6 SoloX SABRE SD board: + + make freescale_imx6sxsabresd_defconfig + +For i.MX6Q SABRE Auto board: + + make freescale_imx6qsabreauto_defconfig + +For i.MX6DL SABRE Auto board: + + make freescale_imx6dlsabreauto_defconfig + +Build all components: + + make + +You will find in ./output/images/ the following files: + - imx6dl-sabresd.dtb or imx6q-sabresd.dtb or imx6sx-sdb.dtb or + imx6q-sabreauto.dtb or imx6dl-sabreauto.dtb + - rootfs.ext2 + - rootfs.tar + - u-boot.imx + - uImage, or zImage for i.MX6 SoloX + +Building with mainline kernel and mainline U-Boot +================================================= + +Mainline U-Boot uses SPL and can support the three +variants of mx6sabreauto boards: mx6q, mx6dl and mx6qp. + +First, configure Buildroot for your mx6sabreauto board + + make imx6-sabreauto_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - imx6dl-sabresd.dtb, imx6q-sabresd.dtb, imx6q-sabresd.dtb + - rootfs.ext2 + - SPL and u-boot.img + - u-boot.imx + - zImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a microSD card. Launch the following +command as root: + + dd if=./output/images/sdcard.img of=/dev/ + +*** WARNING! The script will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the SABRE board +==================== + +i.MX6 SABRE SD +-------------- + +To boot your newly created system on an i.MX6 SABRE SD Board (refer to +the i.MX6 SABRE SD Quick Start Guide for guidance): +- insert the SD card in the SD3 slot of the board; +- locate the BOOT dip switches (SW6), set dips 2 and 7 to ON, all others to OFF; +- connect a Micro USB cable to Debug Port and connect using a terminal emulator + at 115200 bps, 8n1; +- power on the board. + +i.MX6 SoloX SABRE SD +-------------------- + +To boot your newly created system on an i.MX6 SoloX SABRE SD Board +(refer to the i.MX6 SoloX SABRE SD Quick Start Guide for guidance): +- insert the SD card in the J4-SD4 socket at the bottom of the board; +- Set the SW10, SW11 and SW12 DIP switches at the top of the board in + their default position, to boot from SD card. Reference configuration: + + SW10 + 1 2 3 4 5 6 7 8 + off off off off off off off off + + SW11 + 1 2 3 4 5 6 7 8 + off off ON ON ON off off off + + SW12 + 1 2 3 4 5 6 7 8 + off ON off off off off off off + +- connect a Micro USB cable to the J16 Debug Port at the bottom of the + board. This is a dual UART debug port; connect to the first tty using + a terminal emulator at 115200 bps, 8n1; +- power on the board with the SW1-PWR switch at the top of the board. + +SABRE Auto +---------- + +To boot your newly created system on a SABRE Auto Board (refer to the SABRE for +Automotive Infotainment Quick Start Guide for guidance): +- insert the SD card in the CPU card SD card socket J14; +- Set the S1, S2 and S3 DIP switches and J3 jumper to boot from SD on CPU card. + Reference configuration: + + S1 + 1 2 3 4 5 6 7 8 9 10 + off ON off off ON off off off off off + + S2 + 1 2 3 4 + off off ON off + + S3 + 1 2 3 4 + off off ON ON + + J3: 1-2 + +- connect an RS-232 UART cable to CPU card debug port J18 UART DB9 and + connect using a terminal emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! + +References +========== + +https://community.nxp.com/docs/DOC-95015 +https://community.nxp.com/docs/DOC-95017 +https://community.nxp.com/docs/DOC-99218 diff --git a/board/freescale/imx6slevk/readme.txt b/board/freescale/imx6slevk/readme.txt new file mode 100644 index 00000000..424380e3 --- /dev/null +++ b/board/freescale/imx6slevk/readme.txt @@ -0,0 +1,14 @@ +NXP i.MX6SL EVK board +--------------------- + +To build a minimal support for this board: + +$ make imx6slevk_defconfig +$ make + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be flashed into the SD card: + +$ sudo dd if=output/images/sdcard.img of=/dev/; sync + +Then insert the SD card into the SD2 slot and boot the board. diff --git a/board/freescale/imx6sxsdb/readme.txt b/board/freescale/imx6sxsdb/readme.txt new file mode 100644 index 00000000..2779075f --- /dev/null +++ b/board/freescale/imx6sxsdb/readme.txt @@ -0,0 +1,14 @@ +NXP i.MX6SX SDB board +--------------------- + +To build a minimal support for this board: + +$ make imx6sx-sdb_defconfig +$ make + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be flashed into the SD card: + +$ sudo dd if=output/images/sdcard.img of=/dev/; sync + +Then insert the SD card into the SD4 boot slot and boot the board. diff --git a/board/freescale/imx6ulevk/readme.txt b/board/freescale/imx6ulevk/readme.txt new file mode 100644 index 00000000..5a5b4ae5 --- /dev/null +++ b/board/freescale/imx6ulevk/readme.txt @@ -0,0 +1,74 @@ +*************************** +Freescale i.MX6UL EVK board +*************************** + +This file documents the Buildroot support for the Freescale i.MX6UL EVK board. + +Please read the i.MX6UL Evaluation Kit Quick Start Guide [1] for an +introduction to the board. + +Build +===== + +First, configure Buildroot for your i.MX6UL EVK board: + +In order to do so there are two supported options: + + make freescale_imx6ulevk_defconfig + +if you plan to use NXP provided U-Boot and kernel. + +or + + make imx6ulevk_defconfig + +if you plan to use mainline U-Boot and mainline kernel. + +Build all components: + + make + +You will find in ./output/images/ the following files: + - imx6ul-14x14-evk.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.imx + - zImage + +Create a bootable microSD card +============================== + +To determine the device associated to the microSD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a microSD card. Launch the following +command as root: + + dd if=./output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the i.MX6UL EVK board +========================= + +To boot your newly created system (refer to the i.MX6UL EVK Quick Start Guide +[1] for guidance): +- insert the microSD card in the microSD slot of the board; +- verify that your i.MX6UL EVK board jumpers and switches are set as mentioned + in the i.MX6UL EVK Quick Start Guide [1]; +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! + +References +========== +[1] https://www.nxp.com/webapp/Download?colCode=IMX6ULTRALITEQSG diff --git a/board/freescale/imx6ullevk/linux_sdma.fragment b/board/freescale/imx6ullevk/linux_sdma.fragment new file mode 100644 index 00000000..6f1c8b43 --- /dev/null +++ b/board/freescale/imx6ullevk/linux_sdma.fragment @@ -0,0 +1 @@ +CONFIG_IMX_SDMA=m diff --git a/board/freescale/imx6ullevk/patches/linux-headers/linux-headers.hash b/board/freescale/imx6ullevk/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/freescale/imx6ullevk/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/freescale/imx6ullevk/patches/linux/linux.hash b/board/freescale/imx6ullevk/patches/linux/linux.hash new file mode 100644 index 00000000..3c422397 --- /dev/null +++ b/board/freescale/imx6ullevk/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c70adedadce88f8685cb26d9703b930292c1349138e2c55ed9b4cd6e277de3bd linux-imx-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx6ullevk/patches/uboot/uboot.hash b/board/freescale/imx6ullevk/patches/uboot/uboot.hash new file mode 100644 index 00000000..4e0d729c --- /dev/null +++ b/board/freescale/imx6ullevk/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 179b6531ef1d4ce681d139741ac7b4144220c90b7223297df28b61e98e8d37fc uboot-imx-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx6ullevk/readme.txt b/board/freescale/imx6ullevk/readme.txt new file mode 100644 index 00000000..dc7c5f36 --- /dev/null +++ b/board/freescale/imx6ullevk/readme.txt @@ -0,0 +1,71 @@ +**************************** +Freescale i.MX6ULL EVK board +**************************** + +This file documents the Buildroot support for the Freescale i.MX6ULL EVK board. + +Build +===== + +First, configure Buildroot for your i.MX6ULL EVK board: + +In order to do so there are two supported options: + + make freescale_imx6ullevk_defconfig + +if you plan to use NXP provided U-Boot and kernel. + +or + + make imx6ullevk_defconfig + +if you plan to use mainline U-Boot and mainline kernel. + +Build all components: + + make + +You will find in output/images/ the following files: + - boot.vfat + - imx6ull-14x14-evk.dtb + - rootfs.ext2 + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.bin + - 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.MX6ULL EVK board +=========================== + +To boot your newly created system (refer to the i.MX 6ULL EVK Quick Start Guide [1] for guidance): +- insert the SD card in the micro SD slot of the board; +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! + +References +========== +[1] https://www.nxp.com/files-static/32bit/doc/brochure/IMX6ULLQSG.pdf diff --git a/board/freescale/imx7dsdb/patches/linux-headers/linux-headers.hash b/board/freescale/imx7dsdb/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/freescale/imx7dsdb/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/freescale/imx7dsdb/patches/linux/linux.hash b/board/freescale/imx7dsdb/patches/linux/linux.hash new file mode 100644 index 00000000..3c422397 --- /dev/null +++ b/board/freescale/imx7dsdb/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c70adedadce88f8685cb26d9703b930292c1349138e2c55ed9b4cd6e277de3bd linux-imx-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx7dsdb/patches/uboot/uboot.hash b/board/freescale/imx7dsdb/patches/uboot/uboot.hash new file mode 100644 index 00000000..4e0d729c --- /dev/null +++ b/board/freescale/imx7dsdb/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 179b6531ef1d4ce681d139741ac7b4144220c90b7223297df28b61e98e8d37fc uboot-imx-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx7dsdb/readme.txt b/board/freescale/imx7dsdb/readme.txt new file mode 100644 index 00000000..c6030f69 --- /dev/null +++ b/board/freescale/imx7dsdb/readme.txt @@ -0,0 +1,54 @@ +*************************** +Freescale i.MX7D SDB board +*************************** + +This file documents the Buildroot support for the Freescale i.MX7D SDB board. + +Build +===== + +First, configure Buildroot for your i.MX7D SDB board: + + make freescale_imx7dsabresd_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - imx7d-sdb.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.imx + - zImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=./output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the i.MX7D SDB board +========================= + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! diff --git a/board/freescale/imx7dsdb/rootfs_overlay/boot/extlinux/extlinux.conf b/board/freescale/imx7dsdb/rootfs_overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..d538b5d6 --- /dev/null +++ b/board/freescale/imx7dsdb/rootfs_overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +Label imx7d-sabresd-buildroot + kernel /boot/zImage + devicetree /boot/imx7d-sdb.dtb + append root=PARTUUID=${uuid} rootwait rw console=${console},${baudrate} diff --git a/board/freescale/imx8dxlevk/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/freescale/imx8dxlevk/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 00000000..0266b45d --- /dev/null +++ b/board/freescale/imx8dxlevk/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 37f0dee8b3b52d6c7f8a46c3bdd4138b528f9cc607015400e7cad0c206df41d7 imx-atf-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx8dxlevk/patches/linux-headers/linux-headers.hash b/board/freescale/imx8dxlevk/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/freescale/imx8dxlevk/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/freescale/imx8dxlevk/patches/linux/linux.hash b/board/freescale/imx8dxlevk/patches/linux/linux.hash new file mode 100644 index 00000000..3c422397 --- /dev/null +++ b/board/freescale/imx8dxlevk/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c70adedadce88f8685cb26d9703b930292c1349138e2c55ed9b4cd6e277de3bd linux-imx-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx8dxlevk/patches/uboot/uboot.hash b/board/freescale/imx8dxlevk/patches/uboot/uboot.hash new file mode 100644 index 00000000..4e0d729c --- /dev/null +++ b/board/freescale/imx8dxlevk/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 179b6531ef1d4ce681d139741ac7b4144220c90b7223297df28b61e98e8d37fc uboot-imx-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx8dxlevk/readme.txt b/board/freescale/imx8dxlevk/readme.txt new file mode 100644 index 00000000..33ceb669 --- /dev/null +++ b/board/freescale/imx8dxlevk/readme.txt @@ -0,0 +1,69 @@ +****************************** +Freescale i.MX8DXL WEVK board +****************************** + +This file documents the Buildroot support for the Freescale i.MX8DXL WEVK +board. + +Build +===== + +First, configure Buildroot for the i.MX8DXL WEVK board: + + make freescale_imx8dxlevk_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - ahab-container.img + - bl31.bin + - boot.vfat + - Image + - imx8-boot-sd.bin + - imx8dxl-evk.dtb + - mkimg.commit + - mx8dxl-ddr3-evk-scfw-tcm.bin + - mx8dxl-evk-scfw-tcm.bin + - mx8dxl-phantom-mek-scfw-tcm.bin + - mx8dxl-val-scfw-tcm.bin + - rootfs.ext2 + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot-atf.bin + - u-boot.bin + - u-boot-hash.bin + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template_imx8. + +Boot the i.MX8DXL WEVK board +============================ + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- Configure the boot switch as follows: +SW1: ON ON OFF OFF +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! diff --git a/board/freescale/imx8mmevk/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/freescale/imx8mmevk/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 00000000..0266b45d --- /dev/null +++ b/board/freescale/imx8mmevk/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 37f0dee8b3b52d6c7f8a46c3bdd4138b528f9cc607015400e7cad0c206df41d7 imx-atf-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx8mmevk/patches/linux-headers/linux-headers.hash b/board/freescale/imx8mmevk/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/freescale/imx8mmevk/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/freescale/imx8mmevk/patches/linux/linux.hash b/board/freescale/imx8mmevk/patches/linux/linux.hash new file mode 100644 index 00000000..3c422397 --- /dev/null +++ b/board/freescale/imx8mmevk/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c70adedadce88f8685cb26d9703b930292c1349138e2c55ed9b4cd6e277de3bd linux-imx-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx8mmevk/patches/uboot/uboot.hash b/board/freescale/imx8mmevk/patches/uboot/uboot.hash new file mode 100644 index 00000000..4e0d729c --- /dev/null +++ b/board/freescale/imx8mmevk/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 179b6531ef1d4ce681d139741ac7b4144220c90b7223297df28b61e98e8d37fc uboot-imx-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx8mmevk/readme.txt b/board/freescale/imx8mmevk/readme.txt new file mode 100644 index 00000000..7b69405d --- /dev/null +++ b/board/freescale/imx8mmevk/readme.txt @@ -0,0 +1,71 @@ +*************************** +Freescale i.MX8MM EVK board +*************************** + +This file documents the Buildroot support for the Freescale i.MX8MM +EVK board. + +Build +===== + +First, configure Buildroot for the i.MX8MM EVK board: + + make freescale_imx8mmevk_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - bl31.bin + - boot.vfat + - fsl-imx8mm-evk.dtb + - Image + - imx8-boot-sd.bin + - lpddr4_pmu_train_fw.bin + - rootfs.ext2 + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.bin + - u-boot.imx + - u-boot-nodtb.bin + - u-boot-spl-ddr.bin + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template_imx8. + +Boot the i.MX8MM EVK board +========================== + +To boot your newly created system (refer to the i.MX8MMini EVK Quick Start Guide +[1] for guidance): +- insert the SD card in the SD slot of the board; +- Configure the switches as follows: +SW1101: 0110110010 [D1-D10] +SW1102: 0001101000 [D1-D10] +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! + +References +========== +[1] https://www.nxp.com/document/guide/Get-Started-with-the-i.MX-8M-Mini-EVK:GS-iMX-8M-Mini-EVK diff --git a/board/freescale/imx8mnevk/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/freescale/imx8mnevk/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 00000000..0266b45d --- /dev/null +++ b/board/freescale/imx8mnevk/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 37f0dee8b3b52d6c7f8a46c3bdd4138b528f9cc607015400e7cad0c206df41d7 imx-atf-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx8mnevk/patches/linux-headers/linux-headers.hash b/board/freescale/imx8mnevk/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/freescale/imx8mnevk/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/freescale/imx8mnevk/patches/linux/linux.hash b/board/freescale/imx8mnevk/patches/linux/linux.hash new file mode 100644 index 00000000..3c422397 --- /dev/null +++ b/board/freescale/imx8mnevk/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c70adedadce88f8685cb26d9703b930292c1349138e2c55ed9b4cd6e277de3bd linux-imx-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx8mnevk/patches/uboot/uboot.hash b/board/freescale/imx8mnevk/patches/uboot/uboot.hash new file mode 100644 index 00000000..4e0d729c --- /dev/null +++ b/board/freescale/imx8mnevk/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 179b6531ef1d4ce681d139741ac7b4144220c90b7223297df28b61e98e8d37fc uboot-imx-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx8mnevk/readme.txt b/board/freescale/imx8mnevk/readme.txt new file mode 100644 index 00000000..d7700568 --- /dev/null +++ b/board/freescale/imx8mnevk/readme.txt @@ -0,0 +1,73 @@ +*************************** +Freescale i.MX8MN EVK board +*************************** + +This file documents the Buildroot support for the i.MX8M Nano EVK board. + +Build +===== + +First, configure Buildroot for the i.MX8MN EVK board: + + make freescale_imx8mnevk_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - bl31.bin + - boot.vfat + - ddr4_201810_fw.bin + - ddr_fw.bin + - fsl-imx8mn-ddr4-evk.dtb + - Image + - imx8-boot-sd.bin + - rootfs.ext2 + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.bin + - u-boot.imx + - u-boot.itb + - u-boot-nodtb.bin + - u-boot-spl.bin + - u-boot-spl-ddr.bin + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template_imx8. + +Boot the i.MX8MN EVK board +========================== + +To boot your newly created system (refer to the i.MX8MNano EVK Quick Start Guide +[1] for guidance): +- insert the SD card in the SD slot of the board; +- Configure the switches as follows (X = "don't care"): +SW1101: 1100XXXXXX [D1-D10] +SW1102: XXXXXXXXXX [D1-D10] +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! + +References +========== +[1] https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/evaluation-kit-for-the-i-mx-8m-nano-applications-processor:8MNANOD4-EVK diff --git a/board/freescale/imx8mpevk/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/freescale/imx8mpevk/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 00000000..0266b45d --- /dev/null +++ b/board/freescale/imx8mpevk/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 37f0dee8b3b52d6c7f8a46c3bdd4138b528f9cc607015400e7cad0c206df41d7 imx-atf-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx8mpevk/patches/linux-headers/linux-headers.hash b/board/freescale/imx8mpevk/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/freescale/imx8mpevk/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/freescale/imx8mpevk/patches/linux/linux.hash b/board/freescale/imx8mpevk/patches/linux/linux.hash new file mode 100644 index 00000000..3c422397 --- /dev/null +++ b/board/freescale/imx8mpevk/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c70adedadce88f8685cb26d9703b930292c1349138e2c55ed9b4cd6e277de3bd linux-imx-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx8mpevk/patches/uboot/uboot.hash b/board/freescale/imx8mpevk/patches/uboot/uboot.hash new file mode 100644 index 00000000..4e0d729c --- /dev/null +++ b/board/freescale/imx8mpevk/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 179b6531ef1d4ce681d139741ac7b4144220c90b7223297df28b61e98e8d37fc uboot-imx-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx8mpevk/readme.txt b/board/freescale/imx8mpevk/readme.txt new file mode 100644 index 00000000..dfc95af3 --- /dev/null +++ b/board/freescale/imx8mpevk/readme.txt @@ -0,0 +1,71 @@ +********************* +NXP i.MX8MP EVK board +********************* + +This file documents the Buildroot support for the i.MX 8M Plus EVK board. + +Build +===== + +First, configure Buildroot for the i.MX 8M Plus EVK board: + + make freescale_imx8mpevk_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - bl31.bin + - boot.vfat + - ddr_fw.bin + - Image + - imx8-boot-sd.bin + - imx8mp-evk.dtb + - lpddr4_pmu_train_fw.bin + - rootfs.ext2 + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.bin + - u-boot.itb + - u-boot-nodtb.bin + - u-boot-spl.bin + - u-boot-spl-ddr.bin + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template_imx8. + +Boot the i.MX 8M Plus EVK board +=============================== + +To boot your newly created system (refer to the i.MX 8M Plus EVK Documentation +[1] for guidance): +- insert the SD card in the SD slot of the board; +- Configure the switches as follows (X = "don't care"): +SW4: 0011 SW4[1-4] +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! + +References +========== +[1] https://www.nxp.com/document/guide/get-started-with-the-i-mx-8m-plus-evk:GS-iMX-8M-Plus-EVK diff --git a/board/freescale/imx8mpevk/uboot-fragment.config b/board/freescale/imx8mpevk/uboot-fragment.config new file mode 100644 index 00000000..b4683be9 --- /dev/null +++ b/board/freescale/imx8mpevk/uboot-fragment.config @@ -0,0 +1,3 @@ +# Use the upstream devicetree name for EVK board +# Revert https://github.com/nxp-imx/uboot-imx/commit/a60e787a6e35b9c14c391e03d41468e4ad63d598 +CONFIG_DEFAULT_FDT_FILE="imx8mp-evk.dtb" diff --git a/board/freescale/imx8mqevk/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/freescale/imx8mqevk/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 00000000..0266b45d --- /dev/null +++ b/board/freescale/imx8mqevk/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 37f0dee8b3b52d6c7f8a46c3bdd4138b528f9cc607015400e7cad0c206df41d7 imx-atf-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx8mqevk/patches/linux-headers/linux-headers.hash b/board/freescale/imx8mqevk/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/freescale/imx8mqevk/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/freescale/imx8mqevk/patches/linux/linux.hash b/board/freescale/imx8mqevk/patches/linux/linux.hash new file mode 100644 index 00000000..3c422397 --- /dev/null +++ b/board/freescale/imx8mqevk/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c70adedadce88f8685cb26d9703b930292c1349138e2c55ed9b4cd6e277de3bd linux-imx-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx8mqevk/patches/uboot/uboot.hash b/board/freescale/imx8mqevk/patches/uboot/uboot.hash new file mode 100644 index 00000000..4e0d729c --- /dev/null +++ b/board/freescale/imx8mqevk/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 179b6531ef1d4ce681d139741ac7b4144220c90b7223297df28b61e98e8d37fc uboot-imx-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx8mqevk/readme.txt b/board/freescale/imx8mqevk/readme.txt new file mode 100644 index 00000000..61fb2bc8 --- /dev/null +++ b/board/freescale/imx8mqevk/readme.txt @@ -0,0 +1,86 @@ +*************************** +Freescale i.MX8MQ EVK board +*************************** + +This file documents the Buildroot support for the Freescale i.MX8MQ +EVK board. + +Build +===== + +First, configure Buildroot for the i.MX8MQ EVK board: + +If you want to use the NXP kernel: + + make freescale_imx8mqevk_defconfig + +Or if you want to use a mainline kernel: + + make imx8mqevk_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - bl31.bin + - boot.vfat + - fsl-imx8mq-evk.dtb + - Image + - imx8-boot-sd.bin + - lpddr4_pmu_train_fw.bin + - rootfs.ext2 + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - signed_hdmi_imx8m.bin + - u-boot.bin + - u-boot.imx + - u-boot-nodtb.bin + - u-boot-spl-ddr.bin + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template_imx8. + +Boot the i.MX8MQ EVK board +========================== + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- Configure the switches as follows: +SW801: ON ON OFF OFF +SW802: ON OFF +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Enable HDMI output +================== + +To enable HDMI output at boot you must provide the video kernel boot +argument. To set the video boot argument from U-Boot run after +stopping in U-Boot prompt: + +setenv mmcargs 'setenv bootargs console=${console} root=${mmcroot} video=HDMI-A-1:1920x1080-32@60' +saveenv +reset + +Change screen resolution to suit your connected display. + +Enjoy! diff --git a/board/freescale/imx8qmmek/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/freescale/imx8qmmek/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 00000000..0266b45d --- /dev/null +++ b/board/freescale/imx8qmmek/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 37f0dee8b3b52d6c7f8a46c3bdd4138b528f9cc607015400e7cad0c206df41d7 imx-atf-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx8qmmek/patches/linux-headers/linux-headers.hash b/board/freescale/imx8qmmek/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/freescale/imx8qmmek/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/freescale/imx8qmmek/patches/linux/linux.hash b/board/freescale/imx8qmmek/patches/linux/linux.hash new file mode 100644 index 00000000..3c422397 --- /dev/null +++ b/board/freescale/imx8qmmek/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c70adedadce88f8685cb26d9703b930292c1349138e2c55ed9b4cd6e277de3bd linux-imx-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx8qmmek/patches/uboot/uboot.hash b/board/freescale/imx8qmmek/patches/uboot/uboot.hash new file mode 100644 index 00000000..4e0d729c --- /dev/null +++ b/board/freescale/imx8qmmek/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 179b6531ef1d4ce681d139741ac7b4144220c90b7223297df28b61e98e8d37fc uboot-imx-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx8qmmek/readme.txt b/board/freescale/imx8qmmek/readme.txt new file mode 100644 index 00000000..b6bb3c47 --- /dev/null +++ b/board/freescale/imx8qmmek/readme.txt @@ -0,0 +1,76 @@ +*************************** +Freescale i.MX8QM MEK board +*************************** + +This file documents the Buildroot support for the NXP i.MX8QM MEK board. + +You will find a reference to the board on nxp.com: +https://www.nxp.com/design/development-boards/i.mx-evaluation-and-development-boards/i.mx-8quadmax-multisensory-enablement-kit-mek:MCIMX8QM-CPU + +You can also find the get started guide here: +https://www.nxp.com/document/guide/get-started-with-the-i.mx-8quadmax-mek:GS-iMX-8QM-MEK + +Build +===== + +First, configure Buildroot for the i.MX8QM MEK board: + +$ make freescale_imx8qmmek_defconfig + +Build all components: + +$ make + +You will find in output/images/ the following files: + - ahab-container.img + - bl31.bin + - boot.vfat + - fsl-imx8qm-mek.dtb + - Image + - imx8-boot-sd.bin + - mkimg.commit + - mx8qm-mek-scfw-tcm.bin + - mx8qm-val-scfw-tcm.bin + - mx8qm-a0-ddr4-scfw-tcm.bin + - mx8qm-a0-mek-scfw-tcm.bin + - mx8qm-a0-val-scfw-tcm.bin + - mx8qm-ddr4-scfw-tcm.bin + - rootfs.ext2 + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot-atf.bin + - u-boot.bin + - u-boot-hash.bin + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template_imx8. + +Boot the i.MX8QM MEK board +========================== + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- Configure the boot switch as follows: +SW2: OFF OFF ON ON OFF OFF +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! diff --git a/board/freescale/imx8qxpmek/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/freescale/imx8qxpmek/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 00000000..0266b45d --- /dev/null +++ b/board/freescale/imx8qxpmek/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 37f0dee8b3b52d6c7f8a46c3bdd4138b528f9cc607015400e7cad0c206df41d7 imx-atf-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx8qxpmek/patches/linux-headers/linux-headers.hash b/board/freescale/imx8qxpmek/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/freescale/imx8qxpmek/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/freescale/imx8qxpmek/patches/linux/linux.hash b/board/freescale/imx8qxpmek/patches/linux/linux.hash new file mode 100644 index 00000000..3c422397 --- /dev/null +++ b/board/freescale/imx8qxpmek/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c70adedadce88f8685cb26d9703b930292c1349138e2c55ed9b4cd6e277de3bd linux-imx-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx8qxpmek/patches/uboot/uboot.hash b/board/freescale/imx8qxpmek/patches/uboot/uboot.hash new file mode 100644 index 00000000..4e0d729c --- /dev/null +++ b/board/freescale/imx8qxpmek/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 179b6531ef1d4ce681d139741ac7b4144220c90b7223297df28b61e98e8d37fc uboot-imx-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx8qxpmek/readme.txt b/board/freescale/imx8qxpmek/readme.txt new file mode 100644 index 00000000..45f7915f --- /dev/null +++ b/board/freescale/imx8qxpmek/readme.txt @@ -0,0 +1,67 @@ +*************************** +Freescale i.MX8QXP MEK board +*************************** + +This file documents the Buildroot support for the Freescale i.MX8QXP +MEK board. + +Build +===== + +First, configure Buildroot for the i.MX8QXP MEK board: + + make freescale_imx8qxpmek_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - ahab-container.img + - bl31.bin + - boot.vfat + - fsl-imx8qxp-mek.dtb + - Image + - imx8-boot-sd.bin + - mkimg.commit + - mx8qx-mek-scfw-tcm.bin + - mx8qx-val-scfw-tcm.bin + - rootfs.ext2 + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot-atf.bin + - u-boot.bin + - u-boot-hash.bin + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template_imx8. + +Boot the i.MX8QXP MEK board +========================== + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- Configure the boot switch as follows: +SW2: ON ON OFF OFF +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! diff --git a/board/freescale/imx93evk/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/freescale/imx93evk/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 00000000..0266b45d --- /dev/null +++ b/board/freescale/imx93evk/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 37f0dee8b3b52d6c7f8a46c3bdd4138b528f9cc607015400e7cad0c206df41d7 imx-atf-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx93evk/patches/linux-headers/linux-headers.hash b/board/freescale/imx93evk/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/freescale/imx93evk/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/freescale/imx93evk/patches/linux/linux.hash b/board/freescale/imx93evk/patches/linux/linux.hash new file mode 100644 index 00000000..3c422397 --- /dev/null +++ b/board/freescale/imx93evk/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c70adedadce88f8685cb26d9703b930292c1349138e2c55ed9b4cd6e277de3bd linux-imx-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx93evk/patches/uboot/uboot.hash b/board/freescale/imx93evk/patches/uboot/uboot.hash new file mode 100644 index 00000000..4e0d729c --- /dev/null +++ b/board/freescale/imx93evk/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 179b6531ef1d4ce681d139741ac7b4144220c90b7223297df28b61e98e8d37fc uboot-imx-lf-6.6.23-2.0.0.tar.gz diff --git a/board/freescale/imx93evk/readme.txt b/board/freescale/imx93evk/readme.txt new file mode 100644 index 00000000..1173de39 --- /dev/null +++ b/board/freescale/imx93evk/readme.txt @@ -0,0 +1,77 @@ +********************* +NXP i.MX93 EVK board +********************* + +This file documents the Buildroot support for the i.MX 93 EVK board. + +Build +===== + +First, configure Buildroot for the i.MX 93 EVK board: + + make freescale_imx93evk_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - ahab-container.img + - bl31.bin + - boot.vfat + - ddr_fw.bin + - Image + - imx93-11x11-evk.dtb + - imx9-boot-sd.bin + - lpddr4_pmu_train_fw.bin + - rootfs.ext2 + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot-atf-container.img + - u-boot.bin + - u-boot-hash.bin + - u-boot-spl.bin + - u-boot-spl-ddr.bin + - u-boot-spl-padded.bin + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template_imx9. + +Boot the i.MX 93 EVK board +=============================== + +To boot your newly created system (refer to the i.MX 93 EVK Documentation +[1] for guidance): +- insert the SD card in the SD slot of the board; +- Configure the switches as follows: +SW1301: 0100 SW1301[1-4] +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Note: the debug USB connector presents 4 UARTs (for example /dev/ttyUSB[0-3]), +the Cortex-A55 UART should be the 3rd one (in the previous example, /dev/ttyUSB2). +Refer to the documentation [1] for more details. + +Enjoy! + +References +========== +[1] https://www.nxp.com/document/guide/getting-started-with-the-i-mx93-evk:GS-IMX93EVK diff --git a/board/freescale/imxrt1050evk/genimage.cfg b/board/freescale/imxrt1050evk/genimage.cfg new file mode 100644 index 00000000..64fc8452 --- /dev/null +++ b/board/freescale/imxrt1050evk/genimage.cfg @@ -0,0 +1,40 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "imxrt1050-evk.dtb", + } + } + + size = 8M +} + +image sdcard.img { + hdimage { + } + + partition SPL { + in-partition-table = "no" + image = "SPL" + offset = 1K + size = 127K + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.img" + offset = 128K + size = 512K + } + + partition boot { + partition-type = 0xc + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/freescale/imxrt1050evk/readme.txt b/board/freescale/imxrt1050evk/readme.txt new file mode 100644 index 00000000..1fc4edd8 --- /dev/null +++ b/board/freescale/imxrt1050evk/readme.txt @@ -0,0 +1,30 @@ +NXP i.MXRT1050 EVK board +------------------------ + +i.MX RT1050 are NXP's crossover MCUs. They combine the high performance and high +level of integration of an applications processors with the ease-of-use and +real-time functionality of a microcontroller. The i.MX RT1050 MCU runs on the Arm +Cortex-M7 core at 600 MHz. +https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/i-mx-rt1050-evaluation-kit:MIMXRT1050-EVK + +To build a minimal support for this board: + +$ make imxrt1050-evk_defconfig +$ make + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be flashed into the SD card: + +$ dd if=output/images/sdcard.img of=/dev/sdX +Where 'sdX' is the device node of the uSD. + +Jumper settings: + + SW7: 1 0 1 0 + +Where 0 means bottom position and 1 means top position (from the +switch label numbers reference). + +Connect the USB cable between the EVK and the PC for the console. + +Insert the micro SD card in the board, power it up and U-Boot messages should come up. diff --git a/board/freescale/imxrt1050evk/uboot.fragment b/board/freescale/imxrt1050evk/uboot.fragment new file mode 100644 index 00000000..dd45ca4c --- /dev/null +++ b/board/freescale/imxrt1050evk/uboot.fragment @@ -0,0 +1,2 @@ +CONFIG_USE_BOOTCOMMAND=y +CONFIG_BOOTCOMMAND="setenv bootargs console=ttyLP0 root=/dev/mmcblk0p2 rw earlycon rootwait;load mmc 0:1 0x80800000 imxrt1050-evk.dtb;load mmc 0:1 0x80000000 zImage;bootz 0x80000000 - 0x80800000" diff --git a/board/freescale/ls1028ardb/genimage.cfg b/board/freescale/ls1028ardb/genimage.cfg new file mode 100644 index 00000000..3efef0bf --- /dev/null +++ b/board/freescale/ls1028ardb/genimage.cfg @@ -0,0 +1,23 @@ +image sdcard.img { + hdimage { + } + + partition fsbl { + offset = 4K + in-partition-table = "no" + image = "bl2_sd.pbl" + } + + partition ssbl { + offset = 1M + in-partition-table = "no" + image = "fip.bin" + } + + partition rootfs { + offset = 8M + partition-type = 0x83 + bootable = "true" + image = "rootfs.ext4" + } +} diff --git a/board/freescale/ls1028ardb/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/freescale/ls1028ardb/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 00000000..17c40953 --- /dev/null +++ b/board/freescale/ls1028ardb/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 0dda154c335e1a50c727601e698b6a0827e3f92308873b373449fb888df5acfd atf-LSDK-21.08.tar.gz diff --git a/board/freescale/ls1028ardb/patches/linux-headers/linux-headers.hash b/board/freescale/ls1028ardb/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/freescale/ls1028ardb/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/freescale/ls1028ardb/patches/linux/linux.hash b/board/freescale/ls1028ardb/patches/linux/linux.hash new file mode 100644 index 00000000..bd5e29d0 --- /dev/null +++ b/board/freescale/ls1028ardb/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 6db58cf91b98f7fc279f341279a5d43d4069fb56a660a34209aba6af53ea2b57 linux-LSDK-21.08.tar.gz diff --git a/board/freescale/ls1028ardb/patches/uboot/uboot.hash b/board/freescale/ls1028ardb/patches/uboot/uboot.hash new file mode 100644 index 00000000..d0cc110f --- /dev/null +++ b/board/freescale/ls1028ardb/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 6279c161ad8a218b549e6631be969b74f358cf01a20103953ccaf3bb14185ac2 u-boot-LSDK-21.08.tar.gz diff --git a/board/freescale/ls1028ardb/readme.txt b/board/freescale/ls1028ardb/readme.txt new file mode 100644 index 00000000..cfd1c8c4 --- /dev/null +++ b/board/freescale/ls1028ardb/readme.txt @@ -0,0 +1,87 @@ +************** +NXP LS1028ARDB +************** + +This file documents the Buildroot support for the LS1028A Reference Design Board. + +for more details about the board and the QorIQ Layerscape SoC, see the following pages: + - https://www.nxp.com/design/qoriq-developer-resources/layerscape-ls1028a-reference-design-board:LS1028ARDB + - https://www.nxp.com/LS1028A + +for the software NXP LSDK (Layerscape Software Development Kit), see + - https://www.nxp.com/docs/en/user-guide/LSDKUG_Rev21.08.pdf + +the components from NXP are: + - rcw, LSDK 21.08 + - atf (fork), LSDK 21.08 + - uboot (fork), LSDK 21.08 + - cadence-dp-firmware (blob), LSDK 20.12 + - linux (fork), LSDK 21.08 + +Build +===== + +First, configure Buildroot for the LS1028ARDB board: + + make ls1028ardb_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - bl2_sd.pbl + - fip.bin + - fsl-ls1028a-rdb.dtb + - Image + - PBL.bin + - rootfs.ext2 + - rootfs.ext4 -> rootfs.ext2 + - sdcard.img + - u-boot.bin + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/sdX + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/ls1028ardb/genimage.cfg. + +Boot the LS1028ARDB board +========================= + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- Configure the switches SW2[1:4] = 1000 (select SD Card boot option) +- put a DB9F cable into the UART1 Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +The Cadence DP (Display Port) firmware must loaded from uboot with the following commands: + + => ext2load mmc 0 0x80000000 /boot/ls1028a-dp-fw.bin + 102464 bytes read in 24 ms (4.1 MiB/s) + => hdp load 0x80000000 0x2000 + Loading hdp firmware from 0x0000000080000000 offset 0x0000000000002000 + Loading hdp firmware Complete + => boot + +The interfaces of Ethernet switch (Felix DSA) are bring up with the following commands: + + ip link set eno2 up + ip link set swp0 up + ip link set swp1 up + ip link set swp2 up + ip link set swp3 up diff --git a/board/freescale/ls1028ardb/rootfs_overlay/boot/extlinux/extlinux.conf b/board/freescale/ls1028ardb/rootfs_overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..bd6c7c95 --- /dev/null +++ b/board/freescale/ls1028ardb/rootfs_overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +label ls1028ardb-buildroot + kernel /boot/Image + devicetree /boot/fsl-ls1028a-rdb.dtb + append root=/dev/mmcblk0p1 rootwait video=1920x1080-32@60 cma=256M diff --git a/board/freescale/ls1028ardb/rootfs_overlay/etc/udev/rules.d/73-fsl-enetc-networking.rules b/board/freescale/ls1028ardb/rootfs_overlay/etc/udev/rules.d/73-fsl-enetc-networking.rules new file mode 100644 index 00000000..19f41634 --- /dev/null +++ b/board/freescale/ls1028ardb/rootfs_overlay/etc/udev/rules.d/73-fsl-enetc-networking.rules @@ -0,0 +1,16 @@ +# ENETC rules +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.0", DRIVERS=="fsl_enetc", NAME:="eno0" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.1", DRIVERS=="fsl_enetc", NAME:="eno1" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.2", DRIVERS=="fsl_enetc", NAME:="eno2" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.6", DRIVERS=="fsl_enetc", NAME:="eno3" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:01.0", DRIVERS=="fsl_enetc_vf", NAME:="eno0vf0" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:01.1", DRIVERS=="fsl_enetc_vf", NAME:="eno0vf1" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:01.2", DRIVERS=="fsl_enetc_vf", NAME:="eno1vf0" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:01.3", DRIVERS=="fsl_enetc_vf", NAME:="eno1vf1" +# LS1028 switch rules +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p0", NAME="swp0" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p1", NAME="swp1" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p2", NAME="swp2" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p3", NAME="swp3" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p4", NAME="swp4" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p5", NAME="swp5" diff --git a/board/freescale/ls1046a-frwy/genimage.cfg b/board/freescale/ls1046a-frwy/genimage.cfg new file mode 100644 index 00000000..63cca042 --- /dev/null +++ b/board/freescale/ls1046a-frwy/genimage.cfg @@ -0,0 +1,29 @@ +image sdcard.img { + hdimage { + } + + partition fsbl { + offset = 4K + in-partition-table = "no" + image = "bl2_sd.pbl" + } + + partition ssbl { + offset = 1M + in-partition-table = "no" + image = "fip.bin" + } + + partition fman { + offset = 9M + in-partition-table = "no" + image = "fsl_fman_ucode_ls1046_r1.0_106_4_18.bin" + } + + partition rootfs { + offset = 16M + partition-type = 0x83 + bootable = "true" + image = "rootfs.ext4" + } +} diff --git a/board/freescale/ls1046a-frwy/readme.txt b/board/freescale/ls1046a-frwy/readme.txt new file mode 100644 index 00000000..fbcfdb1b --- /dev/null +++ b/board/freescale/ls1046a-frwy/readme.txt @@ -0,0 +1,90 @@ +************** +NXP LS1046A-FRWY +************** + +This file documents the Buildroot support for the LS1046A Freeway Board. + +for more details about the board and the QorIQ Layerscape SoC, see the following pages: + - https://www.nxp.com/design/software/qoriq-developer-resources/ls1046a-freeway-board:FRWY-LS1046A + - https://www.nxp.com/FRWY-LS1046A + - https://www.nxp.com/docs/en/quick-reference-guide/FRWY-LS1046AGSG.pdf + +for the software NXP LSDK (Layerscape Software Development Kit), see + - https://www.nxp.com/docs/en/user-guide/LSDKUG_Rev21.08.pdf + +the components from NXP are: + - rcw, LSDK 21.08 + - atf (fork), LSDK 21.08 + - uboot (fork), LSDK 21.08 + - qoriq-fm-ucode (blob), LSDK 21.08 + - linux (fork), LSDK 21.08 + +Build +===== + +First, configure Buildroot for the LS1046A-FRWY board: + + make ls1046a-frwy_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - bl2_sd.pbl + - fip.bin + - fsl_fman_ucode_ls1046_r1.0_106_4_18.bin + - fsl_fman_ucode_ls1046_r1.0_108_4_9.bin + - fsl-ls1046a-frwy.dtb + - fsl-ls1046a-frwy-sdk.dtb + - Image + - PBL.bin + - rootfs.ext2 + - rootfs.ext4 + - sdcard.img + - u-boot.bin + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/sdX + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/ls1046a-frwy/genimage.cfg. + +Boot the LS1046A-FRWY board +========================= + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- Configure the switches SW1[1:9] = 0_0100_0000 (select SD Card boot option) +- put a Micro-USB cable into UART1 Port and connect using a terminal emulator + at 115200 bps, 8n1. Or remove the jumper on J72, connect a USB to TTL cable + to J73, and connect using a terminal emualtor at 115200 bps, 8n1. +- power on the board. + +The front panel Ethernet connectors are off at boot, to bring them up run the +following commands. + +1G PORT1 + ip link set eth1 up + +1G PORT2 + ip link set eth2 up + +1G PORT3 + ip link set eth0 up + +1G PORT4 + ip link set eth3 up diff --git a/board/freescale/ls1046a-frwy/rootfs_overlay/boot/extlinux/extlinux.conf b/board/freescale/ls1046a-frwy/rootfs_overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..536d62b6 --- /dev/null +++ b/board/freescale/ls1046a-frwy/rootfs_overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +label ls1046afrwy-buildroot + kernel /boot/Image + devicetree /boot/fsl-ls1046a-frwy-sdk.dtb + append console=ttyS0,115200 root=/dev/mmcblk0p1 earlycon=uart8250,mmio,0x21c0500 rootwait diff --git a/board/freescale/p1025twr/readme.txt b/board/freescale/p1025twr/readme.txt new file mode 100644 index 00000000..9179aeac --- /dev/null +++ b/board/freescale/p1025twr/readme.txt @@ -0,0 +1,25 @@ +The bootloader is no longer buildable in the latest Freescale/NXP tree or +upstream. As such, retrieve the "Image: SDK V1.2 e500v2 Binary ISO" from +NXP downloads and follow the release notes for reflashing. + +For programming the kernel and rootfs created by buildroot into the flash. +The fast way is to tftp transfer the files via one of the network interfaces. +Make sure your devkit has ipaddr and serverip defined to reach your tftp +server. + +(Assuming the default u-boot env from NXP) +1. Program the DTB to NOR flash + + => setenv dtbfile p1025twr.dtb + => run dtbflash + +2. Program the kernel and rootfs to NOR flash (reusing orignal rootfs + NOR location, as the kernel location is to small) + + => tftpboot $loadaddr uImage; protect off 0xeeb80000 +$filesize; erase 0xeeb80000 +$filesize; cp.b $loadaddr 0xeeb80000 $filesize; protect on 0xeeb80000 +$filesize; cmp.b $loadaddr 0xefa80000 $filesize + +3. Booting your new system + + => bootm 0xeeb80000 - 0xefe80000 + + You can login with user "root". diff --git a/board/freescale/t1040_t2080/readme.txt b/board/freescale/t1040_t2080/readme.txt new file mode 100644 index 00000000..65695295 --- /dev/null +++ b/board/freescale/t1040_t2080/readme.txt @@ -0,0 +1,51 @@ +For the bootloader, NXP has stablized at SDK2.0 (final release). It is +suggested to download the prebuilt from NXP downloads and follow the +release notes for reflashing. + +To program the kernel and rootfs created by buildroot into the flash. The +fast way is to tftp transfer the files via one of the network interfaces. +Make sure your devkit has ipaddr, netmask, and serverip defined to reach your +tftp server. Verify bootargs are reasonable (console=ttyS0,115200). + +------------------------------------------------------------------------------ + +Devkit: T1040RDB + +(Assuming the default u-boot env from NXP) +1. Program the DTB to NOR flash + + => tftpboot $loadaddr t1040d4rdb.dtb; protect off 0xe8800000 +$filesize; erase 0xe8800000 +$filesize; cp.b $loadaddr 0xe8800000 $filesize; protect on 0xe8800000 +$filesize; cmp.b $loadaddr 0xe8800000 $filesize + +2. Program the kernel and rootfs to NOR flash + + => tftpboot $loadaddr uImage; protect off 0xe8020000 +$filesize; erase 0xe8020000 +$filesize; cp.b $loadaddr 0xe8020000 $filesize; protect on 0xe8020000 +$filesize; cmp.b $loadaddr 0xe8020000 $filesize + => tftpboot $loadaddr rootfs.cpio.uboot; protect off 0xe9300000 +$filesize; erase 0xe9300000 +$filesize; cp.b $loadaddr 0xe9300000 $filesize; protect on 0xe9300000 +$filesize; cmp.b $loadaddr 0xe9300000 $filesize + +3. Booting your new system + + => boot + + You can login with user "root". +------------------------------------------------------------------------------ + +Devkit: T2080 QDS or RDB + +(Assuming the default u-boot env from NXP) +1. Netboot the kernel/rootfs/dtb + + => tftp 0x1000000 uImage && tftp 0x2000000 rootfs.cpio.uboot + + RDB => tftp 0x3000000 t2080rdb.dtb + or + QDS => tftp 0x3000000 t2080qds.dtb + +2. Booting your new system + + => bootm 0x1000000 0x2000000 0x3000000 + + You can login with user "root". + +3. If flashing is desired, a similar approach to the T1040 can be followed + with updated addresses for the flash layout. Example is in the NXP default + env. +------------------------------------------------------------------------------ diff --git a/board/friendlyarm/nanopi-r2s/extlinux.conf b/board/friendlyarm/nanopi-r2s/extlinux.conf new file mode 100644 index 00000000..1ea0cdd8 --- /dev/null +++ b/board/friendlyarm/nanopi-r2s/extlinux.conf @@ -0,0 +1,4 @@ +label NanoPi R2S linux + kernel /boot/Image + devicetree /boot/rk3328-nanopi-r2s.dtb + append root=/dev/mmcblk0p1 rw rootwait diff --git a/board/friendlyarm/nanopi-r2s/genimage.cfg b/board/friendlyarm/nanopi-r2s/genimage.cfg new file mode 100644 index 00000000..a686b4f1 --- /dev/null +++ b/board/friendlyarm/nanopi-r2s/genimage.cfg @@ -0,0 +1,22 @@ +image sdcard.img { + hdimage { + } + + partition u-boot-tpl-spl-dtb { + in-partition-table = "no" + image = "idbloader.img" + offset = 32K + } + + partition u-boot-dtb { + in-partition-table = "no" + image = "u-boot.itb" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + offset = 16M + image = "rootfs.ext4" + } +} diff --git a/board/friendlyarm/nanopi-r2s/post-build.sh b/board/friendlyarm/nanopi-r2s/post-build.sh new file mode 100755 index 00000000..1f5ff6a6 --- /dev/null +++ b/board/friendlyarm/nanopi-r2s/post-build.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +install -m 0644 -D $BOARD_DIR/extlinux.conf $TARGET_DIR/boot/extlinux/extlinux.conf diff --git a/board/friendlyarm/nanopi-r2s/readme.txt b/board/friendlyarm/nanopi-r2s/readme.txt new file mode 100644 index 00000000..6d291cdd --- /dev/null +++ b/board/friendlyarm/nanopi-r2s/readme.txt @@ -0,0 +1,57 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Nanopi R2S. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Nanopi R2S link: +https://www.friendlyarm.com/index.php?route=product/product&path=69&product_id=282 + +This configuration uses ATF, U-Boot mainline and kernel mainline. + +How to build +============ + + $ make friendlyarm_nanopi_r2s_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +Files created in output directory +================================= + +output/images + +├── bl31.elf +├── boot.vfat +├── extlinux +├── idbloader.img +├── Image +├── rk3328-nanopi-r2s.dtb +├── rootfs.ext2 +├── rootfs.ext4 -> rootfs.ext2 +├── rootfs.tar +├── sdcard.img +├── u-boot.bin +└── u-boot.itb + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Nanopi R2S and power it up. The console +is on the serial line, 1500000 8N1. + +Notes +===== + +This configuration can also be used to drive the Friendlyarm Nanopi Neo3 board. diff --git a/board/globalscale/espressobin/genimage.cfg b/board/globalscale/espressobin/genimage.cfg new file mode 100644 index 00000000..360c8f09 --- /dev/null +++ b/board/globalscale/espressobin/genimage.cfg @@ -0,0 +1,11 @@ +# Minimal image, no U-boot since v3/v5 cannot boot from sdcard, see +# readme.txt for details on configuring the on-board u-boot. +image sdcard.img { + hdimage { + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/globalscale/espressobin/linux-extras.config b/board/globalscale/espressobin/linux-extras.config new file mode 100644 index 00000000..7ce0a495 --- /dev/null +++ b/board/globalscale/espressobin/linux-extras.config @@ -0,0 +1,14 @@ +# +# The Espressobin has a switchcore with full support in the kernel. +# This fragment enables DSA and its drivers, inclding VLAN aware bridge +# support to allow users to easily set up a LAN switch + WAN interface. +# +CONFIG_NET_DSA=m +CONFIG_VLAN_8021Q=y + +CONFIG_BRIDGE=m +CONFIG_BRIDGE_IGMP_SNOOPING=y +CONFIG_BRIDGE_VLAN_FILTERING=y + +CONFIG_NET_DSA_MV88E6XXX=m +CONFIG_NET_DSA_MV88E6XXX_PTP=y diff --git a/board/globalscale/espressobin/readme.txt b/board/globalscale/espressobin/readme.txt new file mode 100644 index 00000000..c5af7e3c --- /dev/null +++ b/board/globalscale/espressobin/readme.txt @@ -0,0 +1,90 @@ +Marvell ESPRESSObin +=================== + +This default configuration allows you to quickly get up and running with +the Marvell ESPRESSObin board by Globalscale Technologies Inc. + +The ESPRESSObin is based on the Marvell Armada 88F3720 SoC, coupled with +a Marvell 88E6341 switch core "Topaz", with three exposed gigabit ports. + + _________________________ + |# U W L L U #| + |# S A A A S #| + |# B N N N B #| + |# 0 1 #| + |# Mini #| + |# -PCI #| + |# #| + |# 5 #| + |#__V___usb_PWR_SATA__SW_#| + + Fig 1: Overview of board + +Notice difference in Ethernet port layout compared to the Globalscale +docs. They order the ports; LAN2, LAN1, WAN (left to right in figure +above). For more information, see http://espressobin.net + + +Building +-------- + + $ make globalscale_espressobin_defconfig + $ make + +This generates the kernel image, the devicetree binary, the rootfs as a +tar.gz, and a filesystem image containing everything. + +All build artifacts are located in `output/images/` + + +Booting +------- + +To boot, you need a UART connection, using the on-board micro USB port +set to 115200 8N1. + +By default, the ESPRESSObin comes with a pre-flashed U-Boot set up to +load the kernel, device-tree and rootfs from SPI NOR flash. The board +jumpers can be changed to boot from different sources, see the quick +start guide for each board revision for details: + +- ftp://downloads.globalscaletechnologies.com/Downloads/Espressobin/ESPRESSObin%20V5/ +- ftp://downloads.globalscaletechnologies.com/Downloads/Espressobin/ESPRESSObin%20V7/ + +Note: the v5, and earlier, cannot boot from sdcard, so you have to set +up the factory U-Boot to boot into Buildroot: + +1. Flash rootfs image to sdcard drive, your `of=` device may differ: + + $ sudo dd if=output/images/sdcard.img of=/dev/mmcblk0 bs=1M + $ sync + +2. Boot board from SPI NOR, interrupt boot by pressing any key ... +3. Check with `printenv` that the default setup is OK, otherwise ensure + the following are set, and define `bootcmd` for automatic boot: + + > setenv kernel_addr 0x5000000 + > setenv fdt_addr 0x1800000 + > setenv fdt_name boot/armada-3720-espressobin.dtb + > setenv console console=ttyMV0,115200 earlycon=ar3700_uart,0xd0012000 + > setenv bootcmd 'mmc dev 0; ext4load mmc 0:1 $kernel_addr $image_name;ext4load mmc 0:1 $fdt_addr $fdt_name;setenv bootargs $console root=/dev/mmcblk0p1 rw rootwait; booti $kernel_addr - $fdt_addr' + +4. Call the boot command, or `reset` the board to start: + + > run bootcmd + + +Networking +---------- + +To enable Ethernet networking, load the `mv88e6xxx` kernel module, and +bring up each respective interface needed: + + # modprobe mv88e6xxx + # ifconfig wan up + +A more advanced scenario is setting up switching between the ports using +the Linux bridge. The kernel switchdev layer, and DSA driver, ensure +switch functions are "offloaded" to the HW switch, i.e., all traffic +between LAN ports never reach the CPU. For this you need the iproute2 +suite of tools. diff --git a/board/grinn/chiliboard/genimage.cfg b/board/grinn/chiliboard/genimage.cfg new file mode 100644 index 00000000..f335d7de --- /dev/null +++ b/board/grinn/chiliboard/genimage.cfg @@ -0,0 +1,32 @@ +# 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/board/grinn/chiliboard/readme.txt b/board/grinn/chiliboard/readme.txt new file mode 100644 index 00000000..676aa704 --- /dev/null +++ b/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/board/grinn/liteboard/genimage.cfg b/board/grinn/liteboard/genimage.cfg new file mode 100644 index 00000000..d0b29819 --- /dev/null +++ b/board/grinn/liteboard/genimage.cfg @@ -0,0 +1,49 @@ +# Minimal microSD card image for Grinn's liteBoard +# +# We mimic the .sdcard Freescale's image format for i.MX6UL: +# * the microSD card must have 1 kB free space at the beginning, +# * SPL is dumped as is, +# * U-Boot is dumped at 69K offset, as configured in SPL +# * a FAT partition at offset 8 MB is containing zImage and dtbs, +# * a single root filesystem partition is required (Ext4 in this case). +# + +image boot.vfat { + vfat { + files = { + "imx6ul-liteboard.dtb", + "zImage" + } + } + + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition SPL { + in-partition-table = "no" + image = "SPL" + offset = 1K + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.img" + offset = 69K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/grinn/liteboard/readme.txt b/board/grinn/liteboard/readme.txt new file mode 100644 index 00000000..fe1386a0 --- /dev/null +++ b/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/board/hardkernel/odroidc2/boot.cmd b/board/hardkernel/odroidc2/boot.cmd new file mode 100644 index 00000000..d800a6d4 --- /dev/null +++ b/board/hardkernel/odroidc2/boot.cmd @@ -0,0 +1,11 @@ +setenv kernel_filename "Image" +setenv fdt_filename "meson-gxbb-odroidc2.dtb" +setenv bootargs "console=ttyAML0,115200n8 earlyprintk root=/dev/mmcblk1p2 rootwait rw" + +echo > Loading Kernel... +fatload mmc 0:1 ${kernel_addr_r} ${kernel_filename} +echo > Loading FDT... +fatload mmc 0:1 ${fdt_addr_r} ${fdt_filename} + +echo > Booting System... +booti ${kernel_addr_r} - ${fdt_addr_r} diff --git a/board/hardkernel/odroidc2/genimage.cfg b/board/hardkernel/odroidc2/genimage.cfg new file mode 100644 index 00000000..f31867a5 --- /dev/null +++ b/board/hardkernel/odroidc2/genimage.cfg @@ -0,0 +1,40 @@ +image boot.vfat { + vfat { + files = { + "Image", + "meson-gxbb-odroidc2.dtb", + "boot.scr" + } + } + + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition bl1 { + in-partition-table = "no" + image = "bl1.bin.hardkernel" + offset = 0 + holes = {"(440; 512)"} + } + + partition u-boot { + in-partition-table = "no" + image = "uboot-odc2.img" + offset = 49664 # 48KB + 512B + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/hardkernel/odroidc2/post-image.sh b/board/hardkernel/odroidc2/post-image.sh new file mode 100755 index 00000000..eb6fd4f0 --- /dev/null +++ b/board/hardkernel/odroidc2/post-image.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +${HOST_DIR}/bin/fip_create \ + --bl30 ${BINARIES_DIR}/bl30.bin \ + --bl301 ${BINARIES_DIR}/bl301.bin \ + --bl31 ${BINARIES_DIR}/bl31.bin \ + --bl33 ${BINARIES_DIR}/u-boot.bin \ + ${BINARIES_DIR}/fip.bin + +${HOST_DIR}/bin/fip_create --dump ${BINARIES_DIR}/fip.bin + +cat ${BINARIES_DIR}/bl2.package ${BINARIES_DIR}/fip.bin \ + > ${BINARIES_DIR}/boot_new.bin + +${HOST_DIR}/bin/amlbootsig ${BINARIES_DIR}/boot_new.bin ${BINARIES_DIR}/u-boot.img + +dd if=${BINARIES_DIR}/u-boot.img of=${BINARIES_DIR}/uboot-odc2.img bs=512 skip=96 + +support/scripts/genimage.sh -c ${BOARD_DIR}/genimage.cfg diff --git a/board/hardkernel/odroidc2/readme.txt b/board/hardkernel/odroidc2/readme.txt new file mode 100644 index 00000000..24847827 --- /dev/null +++ b/board/hardkernel/odroidc2/readme.txt @@ -0,0 +1,64 @@ +ODROID-C2 + +Intro +===== +To be able to use ODROID-C2 board with the images generated by +Buildroot, you have to prepare the SDCard or eMMC. + +How to build it +=============== + + $ make odroidc2_defconfig + +Then you can edit the build options using + + $ make menuconfig + +Compile all and build rootfs image: + + $ make + +Note: you will need to have access to the network, since Buildroot will +download the packages' sources. + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + +-- bl1.bin.hardkernel + +-- bl2.package + +-- bl301.bin + +-- bl30.bin + +-- bl31.bin + +-- boot_new.bin + +-- boot.scr [1] + +-- boot.vfat + +-- fip.bin + +-- Image [2] + +-- meson-gxbb-odroidc2.dtb + +-- rootfs.ext2 + +-- rootfs.ext4 + +-- rootfs.tar + +-- sdcard.img + +-- u-boot.bin + +-- u-boot.img + +-- uboot-odc2.img [3] + +[1] This is the ODROID-C2 configuration file used in u-boot. +[2] This is the ODROID-C2 kernel image file which will be booted. +[3] This is the ODROID-C2 signed u-boot image which will be used. + +How to write the SD card or eMMC +================================ + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card or eMMC with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Insert the SDcard into your ODROID-C2, and power it up. Your new system +should come up now. diff --git a/board/hardkernel/odroidc2/rootfs_overlay/etc/init.d/S09modload b/board/hardkernel/odroidc2/rootfs_overlay/etc/init.d/S09modload new file mode 100755 index 00000000..8d694a73 --- /dev/null +++ b/board/hardkernel/odroidc2/rootfs_overlay/etc/init.d/S09modload @@ -0,0 +1,23 @@ +#!/bin/sh +# + +load_drivers() +{ + echo "Loading needed modules..." + for file in $(echo "dwmac_generic dwmac-meson8b meson_dw_hdmi meson_gxbb_wdt"); do + modprobe ${file} + done +} + +case "$1" in + start) + load_drivers + ;; + stop) + ;; + restart|reload) + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/board/hardkernel/odroidxu4/boot.ini b/board/hardkernel/odroidxu4/boot.ini new file mode 100644 index 00000000..87ac7ac1 --- /dev/null +++ b/board/hardkernel/odroidxu4/boot.ini @@ -0,0 +1,38 @@ +ODROIDXU-UBOOT-CONFIG + +# U-Boot Parameters +setenv initrd_high "0xffffffff" +setenv fdt_high "0xffffffff" + +setenv macaddr "00:1e:06:61:7a:39" +setenv bootrootfs "console=tty1 root=/dev/mmcblk1p2 rootwait rw fsck.repair=yes net.ifnames=0" +setenv bootcmd "load mmc 0:1 0x40008000 zImage; load mmc 0:1 0x44000000 exynos5422-odroidxu4.dtb; bootz 0x40008000 - 0x44000000" +setenv vout "hdmi" +setenv governor "performance" +setenv HPD "true" + +# TMDS data amplitude control. +setenv hdmi_tx_amp_lvl "31" + +# TMDS data amplitude fine control for each channel. +setenv hdmi_tx_lvl_ch0 "3" +setenv hdmi_tx_lvl_ch1 "3" +setenv hdmi_tx_lvl_ch2 "3" + +# TMDS data pre-emphasis level control. +setenv hdmi_tx_emp_lvl "6" + +# TMDS clock amplitude control. +setenv hdmi_clk_amp_lvl "31" + +# TMDS data source termination resistor control. +setenv hdmi_tx_res "0" + +setenv hdmi_phy_control "hdmi_tx_amp_lvl=${hdmi_tx_amp_lvl} hdmi_tx_lvl_ch0=${hdmi_tx_lvl_ch0} hdmi_tx_lvl_ch1=${hdmi_tx_lvl_ch1} hdmi_tx_lvl_ch2=${hdmi_tx_lvl_ch2} hdmi_tx_emp_lvl=${hdmi_tx_emp_lvl} hdmi_clk_amp_lvl=${hdmi_clk_amp_lvl} hdmi_tx_res=${hdmi_tx_res} HPD=${HPD} vout=${vout}" + +# final boot args +setenv bootargs "${bootrootfs} ${videoconfig} smsc95xx.macaddr=${macaddr} governor=${governor} ${hdmi_phy_control}" + +# Boot the board +boot + diff --git a/board/hardkernel/odroidxu4/genimage.cfg b/board/hardkernel/odroidxu4/genimage.cfg new file mode 100644 index 00000000..0a90d6be --- /dev/null +++ b/board/hardkernel/odroidxu4/genimage.cfg @@ -0,0 +1,55 @@ +image boot.vfat { + vfat { + files = { + "boot.ini", + "zImage", + "exynos5422-odroidxu4.dtb" + } + } + + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition bl1 { + in-partition-table = "no" + image = "bl1.bin.hardkernel" + offset = 512 + size = 15K + } + + partition bl2 { + in-partition-table = "no" + image = "bl2.bin.hardkernel.720k_uboot" + offset = 15872 # 15KB + 512B + size = 16K + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-dtb.bin" + offset = 32256 # 31KB + 512B + size = 720K + } + + partition tzsw { + in-partition-table = "no" + image = "tzsw.bin.hardkernel" + offset = 769536 # 751KB + 512B + size = 256K + } + + partition vfat { + partition-type = 0xC + image = "boot.vfat" + offset = 2M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/hardkernel/odroidxu4/post-image.sh b/board/hardkernel/odroidxu4/post-image.sh new file mode 100755 index 00000000..025906cd --- /dev/null +++ b/board/hardkernel/odroidxu4/post-image.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +cp ${BOARD_DIR}/boot.ini ${BINARIES_DIR}/ + +# The bl1.bin.hardkernel file provided by the uboot hardkernel repository is overwritten +# by the bl2.bin.hardkernel in the sd_fusing.sh script because it is too big. +# In order to implement this in genimage, we need to truncate the bl1.bin file +# so that it does not exceed the available place. +# An issue has been filled about this: https://github.com/hardkernel/u-boot/issues/45 +truncate -s 15360 ${BINARIES_DIR}/bl1.bin.hardkernel + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + diff --git a/board/hardkernel/odroidxu4/readme.txt b/board/hardkernel/odroidxu4/readme.txt new file mode 100644 index 00000000..e3cba8b0 --- /dev/null +++ b/board/hardkernel/odroidxu4/readme.txt @@ -0,0 +1,37 @@ +Odroid XU-4 board with Samsung Exynos 5422 SoC + +How to build it +=============== + + $ make odroidxu4_defconfig + +Then you can edit the build options using + + $ make menuconfig + +Compile all and build rootfs image: + + $ make + +Note: you will need to have access to the network, since Buildroot will +download the packages' sources. + +Result of the build +------------------- + +After building, you should obtain all output files in output/images/ + + +How to write the SD card or eMMC +================================ + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card or eMMC with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Insert the SDcard into your ODROID-XU4, and power it up. Your new system +should come up now. + diff --git a/board/in-circuit/icnova-a20-adb4006/boot.cmd b/board/in-circuit/icnova-a20-adb4006/boot.cmd new file mode 100644 index 00000000..93d32a5e --- /dev/null +++ b/board/in-circuit/icnova-a20-adb4006/boot.cmd @@ -0,0 +1,5 @@ +setenv fdt_high ffffffff +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun7i-a20-icnova-a20-adb4006.dtb +bootz $kernel_addr_r - $fdt_addr_r diff --git a/board/in-circuit/icnova-a20-adb4006/genimage.cfg b/board/in-circuit/icnova-a20-adb4006/genimage.cfg new file mode 100644 index 00000000..4975d679 --- /dev/null +++ b/board/in-circuit/icnova-a20-adb4006/genimage.cfg @@ -0,0 +1,38 @@ +# Minimal SD card image for the ICnova A20 SomPi on ADB4006 +# Based in the Cubieboard2 genimage.cfg + +image boot.vfat { + vfat { + files = { + "zImage", + "sun7i-a20-icnova-a20-adb4006.dtb", + "boot.scr" + } + } + + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + size = 1016K # 1MB - 8KB + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/in-circuit/icnova-a20-adb4006/linux.fragment b/board/in-circuit/icnova-a20-adb4006/linux.fragment new file mode 100644 index 00000000..1c99df12 --- /dev/null +++ b/board/in-circuit/icnova-a20-adb4006/linux.fragment @@ -0,0 +1 @@ +CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y diff --git a/board/intel/galileo/genimage.cfg b/board/intel/galileo/genimage.cfg new file mode 100644 index 00000000..76c3d9c3 --- /dev/null +++ b/board/intel/galileo/genimage.cfg @@ -0,0 +1,29 @@ +# Create an image of the efi partition +image efi-part.vfat { + vfat { + file EFI { + image = "efi-part/EFI" + } + } + + size = 512K +} + +# Create the sdcard image, pulling in +# * the image created by buildroot +# * the efi-partition created above +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + image = "efi-part.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + size = 512M + } +} diff --git a/board/intel/galileo/grub.cfg b/board/intel/galileo/grub.cfg new file mode 100644 index 00000000..dde2f762 --- /dev/null +++ b/board/intel/galileo/grub.cfg @@ -0,0 +1,11 @@ +set default="0" +set timeout="0" + +menuentry "Buildroot" { + # Grub2 supports ext4, load the kernel from the Linux rootfs partition + # Set root tells grub to search the 2nd partition for the bzImage + set root=(hd0,msdos2) + + # Set Linux to boot from the 2nd partition, SD/MMC support is baked into the kernel + linux /boot/bzImage root=/dev/mmcblk0p2 rootwait console=ttyS1,115200n8 earlycon=uart8250,mmio32,0x9000b000,115200n8 reboot=efi,warm apic=debug rw +} diff --git a/board/intel/galileo/linux-3.14.config b/board/intel/galileo/linux-3.14.config new file mode 100644 index 00000000..c658afb8 --- /dev/null +++ b/board/intel/galileo/linux-3.14.config @@ -0,0 +1,311 @@ +# CONFIG_LOCALVERSION_AUTO is not set +# CONFIG_SWAP is not set +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_FHANDLE=y +CONFIG_KERNEL_LZMA=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_CGROUPS=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CPUSETS=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_RESOURCE_COUNTERS=y +CONFIG_CGROUP_SCHED=y +CONFIG_NAMESPACES=y +CONFIG_RELAY=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +CONFIG_SYSCTL_SYSCALL=y +# CONFIG_PCSPKR_PLATFORM is not set +CONFIG_EMBEDDED=y +# CONFIG_COMPAT_BRK is not set +CONFIG_JUMP_LABEL=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_LBDAF=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_BSD_DISKLABEL=y +# CONFIG_ZONE_DMA is not set +CONFIG_X86_INTEL_QUARK=y +CONFIG_M586TSC=y +CONFIG_X86_GENERIC=y +CONFIG_HPET_TIMER=y +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_X86_UP_IOAPIC=y +# CONFIG_X86_MCE_AMD is not set +# CONFIG_X86_16BIT is not set +CONFIG_X86_REBOOTFIXUPS=y +CONFIG_MICROCODE=y +CONFIG_X86_MSR=y +CONFIG_X86_CPUID=y +CONFIG_HIGHMEM64G=y +# CONFIG_COMPACTION is not set +# CONFIG_MTRR is not set +# CONFIG_ARCH_RANDOM is not set +CONFIG_EFI=y +CONFIG_EFI_STUB=y +CONFIG_EFI_CAPSULE=m +CONFIG_HZ_100=y +CONFIG_KEXEC=y +CONFIG_PHYSICAL_START=0x400000 +CONFIG_PHYSICAL_ALIGN=0x1000000 +# CONFIG_COMPAT_VDSO is not set +CONFIG_PM_RUNTIME=y +CONFIG_PM_DEBUG=y +CONFIG_PM_TRACE_RTC=y +CONFIG_ACPI_PROCFS=y +CONFIG_ACPI_PROCFS_POWER=y +CONFIG_ACPI_EC_DEBUGFS=y +# CONFIG_ACPI_BATTERY is not set +# CONFIG_ACPI_FAN is not set +CONFIG_ACPI_DEBUG=y +CONFIG_ACPI_PCI_SLOT=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCI_MSI=y +CONFIG_PCI_DEBUG=y +CONFIG_PCI_IOAPIC=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_SYN_COOKIES=y +# CONFIG_IPV6_SIT is not set +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_SUBTREES=y +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_CAN=m +# CONFIG_CAN_GW is not set +CONFIG_CAN_J1939=m +CONFIG_CAN_VCAN=m +CONFIG_CAN_SLCAN=m +# CONFIG_CAN_DEV is not set +CONFIG_BT=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_HIDP=m +CONFIG_BT_HCIBTUSB=m +CONFIG_CFG80211=m +CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211=m +CONFIG_MAC80211_LEDS=y +CONFIG_RFKILL=m +CONFIG_RFKILL_INPUT=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_FW_LOADER_USER_HELPER is not set +CONFIG_DEBUG_DEVRES=y +CONFIG_MTD=y +CONFIG_MTD_BLOCK=m +# CONFIG_PNP_DEBUG_MESSAGES is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=2 +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=1 +CONFIG_BLK_DEV_RAM_SIZE=81920 +CONFIG_EEPROM_AT24=m +CONFIG_EEPROM_93CX6=m +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_SG=y +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_SPI_ATTRS=y +# CONFIG_SCSI_LOWLEVEL is not set +CONFIG_NETDEVICES=y +CONFIG_TUN=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_NET_VENDOR_AMD is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_BROCADE is not set +# CONFIG_NET_VENDOR_CHELSIO is not set +# CONFIG_NET_VENDOR_CISCO is not set +# CONFIG_NET_VENDOR_DEC is not set +# CONFIG_NET_VENDOR_DLINK is not set +# CONFIG_NET_VENDOR_EMULEX is not set +# CONFIG_NET_VENDOR_EXAR is not set +# CONFIG_NET_VENDOR_HP is not set +# CONFIG_NET_VENDOR_I825XX is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MELLANOX is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_NET_PACKET_ENGINE is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_REALTEK is not set +# CONFIG_NET_VENDOR_RDC is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +# CONFIG_NET_VENDOR_SMSC is not set +CONFIG_STMMAC_ETH=y +# CONFIG_STMMAC_PLATFORM is not set +CONFIG_STMMAC_PCI=y +# CONFIG_NET_VENDOR_SUN is not set +# CONFIG_NET_VENDOR_TEHUTI is not set +# CONFIG_NET_VENDOR_TI is not set +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WIZNET is not set +CONFIG_PHYLIB=y +CONFIG_PPP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_ASYNC=m +# CONFIG_RTL_CARDS is not set +# CONFIG_INPUT_MOUSEDEV is not set +CONFIG_INPUT_EVDEV=m +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_SERIO is not set +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_LEGACY_PTY_COUNT=32 +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_PNP is not set +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_PCI is not set +CONFIG_SERIAL_8250_NR_UARTS=8 +CONFIG_SERIAL_8250_RUNTIME_UARTS=2 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_8250_DW=y +CONFIG_SERIAL_SC16IS7XX=m +CONFIG_SERIAL_SC16IS7XX_SPI=m +# CONFIG_HW_RANDOM is not set +CONFIG_HPET=y +# CONFIG_HPET_MMAP is not set +CONFIG_I2C=y +CONFIG_SPI_DEBUG=y +CONFIG_SPI_GPIO=y +CONFIG_SPI_PXA2XX=y +CONFIG_PTP_1588_CLOCK=y +CONFIG_GPIO_SCH=y +CONFIG_GPIO_PCA953X=y +CONFIG_GPIO_PCA953X_IRQ=y +CONFIG_GPIO_PCF857X=y +CONFIG_HWMON=m +CONFIG_SENSORS_LM75=m +# CONFIG_X86_PKG_TEMP_THERMAL is not set +CONFIG_MFD_INTEL_QUARK_HSUART_DMA=y +CONFIG_CY8C9540A=m +CONFIG_MFD_PCA9685=m +CONFIG_INTEL_QRK_GIP=m +CONFIG_INTEL_QRK_GIP_TEST=m +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_USB_SUPPORT=y +CONFIG_USB_VIDEO_CLASS=m +# CONFIG_USB_GSPCA is not set +# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set +# CONFIG_VGA_ARB is not set +# CONFIG_VGA_CONSOLE is not set +CONFIG_SOUND=m +CONFIG_SND=m +CONFIG_SND_USB_AUDIO=m +CONFIG_USB=m +# CONFIG_USB_DEFAULT_PERSIST is not set +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_OHCI_HCD=m +CONFIG_USB_UHCI_HCD=m +CONFIG_USB_ACM=m +CONFIG_USB_STORAGE=m +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_GADGET=m +CONFIG_USB_EG20T=m +CONFIG_USB_ZERO=m +CONFIG_USB_ETH=m +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_G_SERIAL=y +CONFIG_USB_G_ACM_MS=m +CONFIG_MMC=y +CONFIG_MMC_UNSAFE_RESUME=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=m +CONFIG_RTC_CLASS=y +# CONFIG_RTC_SYSTOHC is not set +CONFIG_DMADEVICES=y +CONFIG_DW_DMAC=y +CONFIG_UIO=y +CONFIG_STAGING=y +CONFIG_INTEL_QRK_THERMAL=y +CONFIG_INTEL_QRK_AUDIO_CTRL=m +CONFIG_INTEL_QRK_J1708=m +CONFIG_INTEL_QRK_ESRAM=y +# CONFIG_IOMMU_SUPPORT is not set +CONFIG_IIO=y +CONFIG_IIO_BUFFER_CB=y +CONFIG_IIO_LIS331DLH_INTEL_QRK=y +CONFIG_IIO_ST_ACCEL_3AXIS=y +CONFIG_AD7298=m +CONFIG_ADC1x8S102=m +CONFIG_IIO_SYSFS_TRIGGER=m +CONFIG_IIO_HRTIMER_TRIGGER=m +CONFIG_PWM=y +CONFIG_DMI_SYSFS=y +CONFIG_EFI_VARS=m +# CONFIG_EFI_RUNTIME_MAP is not set +CONFIG_EXT2_FS=y +CONFIG_EXT3_FS=y +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT4_FS=y +CONFIG_VFAT_FS=y +CONFIG_PROC_KCORE=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_HUGETLBFS=y +# CONFIG_MISC_FILESYSTEMS is not set +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_850=y +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=y +CONFIG_PRINTK_TIME=y +# CONFIG_ENABLE_WARN_DEPRECATED is not set +CONFIG_FRAME_WARN=2048 +# CONFIG_UNUSED_SYMBOLS is not set +CONFIG_HEADERS_CHECK=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_MEMORY_INIT=y +CONFIG_DEBUG_STACKOVERFLOW=y +CONFIG_TIMER_STATS=y +CONFIG_LATENCYTOP=y +# CONFIG_FTRACE is not set +CONFIG_X86_PTDUMP=y +# CONFIG_DEBUG_RODATA_TEST is not set +CONFIG_DEBUG_SET_MODULE_RONX=y +# CONFIG_DOUBLEFAULT is not set +CONFIG_OPTIMIZE_INLINING=y +CONFIG_KEYS=y +CONFIG_KEYS_DEBUG_PROC_KEYS=y +CONFIG_SECURITY=y +CONFIG_SECURITY_NETWORK=y +# CONFIG_VIRTUALIZATION is not set +CONFIG_CRC_T10DIF=y +CONFIG_NFS_FS=y +CONFIG_ROOT_NFS=y +CONFIG_IP_PNP=y diff --git a/board/intel/galileo/patches/linux/0001-x86-relocs-Make-per_cpu_load_addr-static.patch b/board/intel/galileo/patches/linux/0001-x86-relocs-Make-per_cpu_load_addr-static.patch new file mode 100644 index 00000000..1d206cc6 --- /dev/null +++ b/board/intel/galileo/patches/linux/0001-x86-relocs-Make-per_cpu_load_addr-static.patch @@ -0,0 +1,39 @@ +From eeeda4cd06e828b331b15741a204ff9f5874d28d Mon Sep 17 00:00:00 2001 +From: Ben Hutchings +Date: Wed, 24 Sep 2014 13:30:12 +0100 +Subject: [PATCH] x86/relocs: Make per_cpu_load_addr static + +per_cpu_load_addr is only used for 64-bit relocations, but is +declared in both configurations of relocs.c - with different +types. This has undefined behaviour in general. GNU ld is +documented to use the larger size in this case, but other tools +may differ and some warn about this. + +References: https://bugs.debian.org/748577 +Reported-by: Michael Tautschnig +Signed-off-by: Ben Hutchings +Cc: 748577@bugs.debian.org +Cc: Linus Torvalds +Link: http://lkml.kernel.org/r/1411561812.3659.23.camel@decadent.org.uk +Signed-off-by: Ingo Molnar +Signed-off-by: Giulio Benetti +--- + arch/x86/tools/relocs.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c +index bbb1d2259ecf..a5efb21d5228 100644 +--- a/arch/x86/tools/relocs.c ++++ b/arch/x86/tools/relocs.c +@@ -695,7 +695,7 @@ static void walk_relocs(int (*process)(struct section *sec, Elf_Rel *rel, + * + */ + static int per_cpu_shndx = -1; +-Elf_Addr per_cpu_load_addr; ++static Elf_Addr per_cpu_load_addr; + + static void percpu_init(void) + { +-- +2.25.1 + diff --git a/board/intel/galileo/post-build.sh b/board/intel/galileo/post-build.sh new file mode 100755 index 00000000..2b34cb43 --- /dev/null +++ b/board/intel/galileo/post-build.sh @@ -0,0 +1,2 @@ +#!/bin/sh -e +cp board/intel/galileo/grub.cfg ${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg diff --git a/board/intel/galileo/post-image.sh b/board/intel/galileo/post-image.sh new file mode 100755 index 00000000..f9aef0b1 --- /dev/null +++ b/board/intel/galileo/post-image.sh @@ -0,0 +1,13 @@ +#!/bin/sh -e + +GENIMAGE_CFG="board/intel/galileo/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/board/intel/galileo/readme.txt b/board/intel/galileo/readme.txt new file mode 100644 index 00000000..7a3abd4f --- /dev/null +++ b/board/intel/galileo/readme.txt @@ -0,0 +1,52 @@ + +Intel Galileo Gen 1/2 + +Intro +============ + +These instructions apply to both the Intel Galileo Gen 1/2 development boards +based on the Intel Quark X1000. + +How to build +============ + +Apply the defconfig for the Intel Galileo Gen 1/2 + + $ make galileo_defconfig + +Add any additional packages required and build. + + $ make + +The build process will create a SD card image and place it in output/images. + + $ ls -lh output/images/sdcard.img + -rw-r--r--. 1 foo foo 11M Nov 17 16:19 output/images/sdcard.img + +Write the image to an mSD card, insert into the Galileo and power on. + + $ dd if=output/images/sdcard.img of=/dev/mmcblk0; sync + +Accessing the console +===================== + +During power-on the console will become available on the Galileo's ttyS1. This +may be accessed as follows. + + * Galileo Gen 1 + + http://clayskits.com/products/galileo-gen-1-serial-cable + + A USB to RS-232 to 3.5mm Jack cable is required. Connect to the 3.5mm + Jack next to the Ethernet Header. + + * Galileo Gen 2 + + http://www.ftdichip.com/Products/Cables/USBTTLSerial.htm + + A FTDI TTL-232R-3V3 cable may be used to connect to the FTDI header + next to the Ethernet connector on the Galileo Gen 2. + +The console should now be visible at 115200 baud. + + $ picocom -b 115200 /dev/ttyUSB0 diff --git a/board/intel/galileo/rootfs_overlay/etc/init.d/S09modload b/board/intel/galileo/rootfs_overlay/etc/init.d/S09modload new file mode 100755 index 00000000..359d607c --- /dev/null +++ b/board/intel/galileo/rootfs_overlay/etc/init.d/S09modload @@ -0,0 +1,33 @@ +#!/bin/sh +# + +load_drivers() +{ + while IFS= read -r line; do + modprobe $line + done < "/etc/modules-load.galileo/$1.conf" +} + +do_board() +{ + board=$(cat /sys/devices/virtual/dmi/id/board_name) + case "$board" in + *"GalileoGen2" ) + load_drivers "galileo_gen2" ;; + *"Galileo" ) + load_drivers "galileo" ;; + esac +} + +case "$1" in + start) + do_board + ;; + stop) + ;; + restart|reload) + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/board/intel/galileo/rootfs_overlay/etc/modules-load.galileo/galileo.conf b/board/intel/galileo/rootfs_overlay/etc/modules-load.galileo/galileo.conf new file mode 100644 index 00000000..b6582619 --- /dev/null +++ b/board/intel/galileo/rootfs_overlay/etc/modules-load.galileo/galileo.conf @@ -0,0 +1,3 @@ +intel_qrk_gip +cy8c9540a +ad7298 diff --git a/board/intel/galileo/rootfs_overlay/etc/modules-load.galileo/galileo_gen2.conf b/board/intel/galileo/rootfs_overlay/etc/modules-load.galileo/galileo_gen2.conf new file mode 100644 index 00000000..4f80a330 --- /dev/null +++ b/board/intel/galileo/rootfs_overlay/etc/modules-load.galileo/galileo_gen2.conf @@ -0,0 +1,4 @@ +intel_qrk_gip +gpio-pca953x +pca9685 +adc1x8s102 diff --git a/board/khadas/vim3/extlinux.conf b/board/khadas/vim3/extlinux.conf new file mode 100644 index 00000000..2b1544a5 --- /dev/null +++ b/board/khadas/vim3/extlinux.conf @@ -0,0 +1,5 @@ +default buildroot +label buildroot + kernel /Image + devicetree /meson-g12b-a311d-khadas-vim3.dtb +append root=/dev/mmcblk0p2 rootwait console=ttyAML0,115200 diff --git a/board/khadas/vim3/genimage.cfg b/board/khadas/vim3/genimage.cfg new file mode 100644 index 00000000..79d7f9ca --- /dev/null +++ b/board/khadas/vim3/genimage.cfg @@ -0,0 +1,33 @@ +image boot.vfat { + vfat { + files = { + "Image", + "meson-g12b-a311d-khadas-vim3.dtb", + "extlinux" + } + + label = "boot" + } + + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image="boot.vfat" + size = 64M + offset = 2M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + size = 128M + offset = 0 + } +} diff --git a/board/khadas/vim3/post-build.sh b/board/khadas/vim3/post-build.sh new file mode 100755 index 00000000..8dae08a4 --- /dev/null +++ b/board/khadas/vim3/post-build.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +BOARD_DIR="$(dirname "$0")" + +install -m 0644 -D "$BOARD_DIR"/extlinux.conf "$BINARIES_DIR"/extlinux/extlinux.conf diff --git a/board/khadas/vim3/post-image.sh b/board/khadas/vim3/post-image.sh new file mode 100755 index 00000000..db384214 --- /dev/null +++ b/board/khadas/vim3/post-image.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +BOARD_DIR="$(dirname "$0")" + +support/scripts/genimage.sh -c "${BOARD_DIR}/genimage.cfg" + +AMLOGIC_DIR=${BINARIES_DIR}/amlogic-boot-fip +FIP_DIR=${BINARIES_DIR}/fip + +mkdir -p "${FIP_DIR}" + +(cd "${AMLOGIC_DIR}" && \ + ./build-fip.sh khadas-vim3 \ + "${BINARIES_DIR}"/u-boot.bin \ + "${FIP_DIR}") + +dd if="${FIP_DIR}"/u-boot.bin.sd.bin \ + of="${BINARIES_DIR}"/sdcard.img \ + conv=fsync,notrunc bs=1 count=444 + +dd if="${FIP_DIR}"/u-boot.bin.sd.bin \ + of="${BINARIES_DIR}"/sdcard.img \ + conv=fsync,notrunc bs=512 skip=1 seek=1 diff --git a/board/khadas/vim3/readme.txt b/board/khadas/vim3/readme.txt new file mode 100644 index 00000000..cc9b5136 --- /dev/null +++ b/board/khadas/vim3/readme.txt @@ -0,0 +1,71 @@ +Khadas VIM3 + +Description +=========== + +This configuration builds a complete image for the Khadas VIM3 to be flashed +on an SD-card. + +How to build it +=============== + +Select the default configuration for the target: +$ make khadas_vim3_defconfig + +Optional: modify the configuration: +$ make menuconfig + +Build: +$ make + +Result of the build +=================== +output/images/ ++-- amlogic-boot-fip ++ +-- build-fip.sh ++ +-- g12a.inc ++ `-- khadas-vim3 ++ +-- acs.bin ++ +-- acs_tool.py ++ +-- aml_ddr.fw ++ +-- aml_encrypt_g12b ++ +-- bl2.bin ++ +-- bl301.bin ++ +-- bl30.bin ++ +-- bl31.bin ++ +-- bl31.img ++ +-- blx_fix.sh ++ +-- ddr3_1d.fw ++ +-- ddr4_1d.fw ++ +-- ddr4_2d.fw ++ +-- diag_lpddr4.fw ++ +-- lpddr3_1d.fw ++ +-- lpddr4_1d.fw ++ +-- lpddr4_2d.fw ++ +-- Makefile ++ `-- piei.fw ++-- boot.vfat ++-- extlinux ++ `-- extlinux.conf ++-- fip ++ +-- u-boot.bin ++ +-- u-boot.bin.sd.bin ++ +-- u-boot.bin.usb.bl2 ++ `-- u-boot.bin.usb.tpl ++-- Image ++-- meson-g12b-a311d-khadas-vim3.dtb ++-- rootfs.ext2 ++-- rootfs.ext4 -> rootfs.ext2 ++-- rootfs.tar ++-- sdcard.img +`-- u-boot.bin + +The post-image script uses the files in the amlogic-boot-fip folder to sign +the bootloader image before integrating it into the sdcard image. + +To copy the image file to the sdcard use dd: +$ dd if=output/images/sdcard.img of=/dev/sdX + +Tested hardware +=============== +Khadas vim3 (rev. 14) diff --git a/board/kontron/bl-imx8mm/extlinux.conf b/board/kontron/bl-imx8mm/extlinux.conf new file mode 100644 index 00000000..d38f7f81 --- /dev/null +++ b/board/kontron/bl-imx8mm/extlinux.conf @@ -0,0 +1,4 @@ +label buildroot + kernel /boot/Image + devicetree /boot/freescale/imx8mm-kontron-n801x-s.dtb + append root=PARTUUID=%PARTUUID% rootwait rw diff --git a/board/kontron/bl-imx8mm/genimage.cfg b/board/kontron/bl-imx8mm/genimage.cfg new file mode 100644 index 00000000..c98bc4f1 --- /dev/null +++ b/board/kontron/bl-imx8mm/genimage.cfg @@ -0,0 +1,18 @@ +image sdcard.img { + hdimage { + partition-table-type = "gpt" + gpt-location = 16K + } + + partition imx-boot { + in-partition-table = "no" + image = "flash.bin" + offset = 33K + } + + partition rootfs { + image = "rootfs.ext4" + offset = 8M + partition-uuid = %PARTUUID% + } +} diff --git a/board/kontron/bl-imx8mm/post-build.sh b/board/kontron/bl-imx8mm/post-build.sh new file mode 100755 index 00000000..bf8861f6 --- /dev/null +++ b/board/kontron/bl-imx8mm/post-build.sh @@ -0,0 +1,7 @@ +#!/bin/sh +BOARD_DIR="$(dirname $0)" +PARTUUID="$($HOST_DIR/bin/uuidgen)" + +install -d "$TARGET_DIR/boot/extlinux/" +sed "s/%PARTUUID%/$PARTUUID/g" "$BOARD_DIR/extlinux.conf" > "$TARGET_DIR/boot/extlinux/extlinux.conf" +sed "s/%PARTUUID%/$PARTUUID/g" "$BOARD_DIR/genimage.cfg" > "$BINARIES_DIR/genimage.cfg" diff --git a/board/kontron/bl-imx8mm/readme.txt b/board/kontron/bl-imx8mm/readme.txt new file mode 100644 index 00000000..df47ba51 --- /dev/null +++ b/board/kontron/bl-imx8mm/readme.txt @@ -0,0 +1,85 @@ +Kontron BL i.MX8M Mini +====================== + +https://www.kontron.com/produkte/baseboard-bl-i.mx8m-mini/p158549 + + +How to build it +=============== + +Configure buildroot: + + $ make kontron_bl_imx8mm_defconfig + +Change settings to fit your needs (optional): + + $ make menuconfig + +Compile everything and build the rootfs image: + + $ make + + +Result of the build +=================== + +After building, the output/images directory contains: + + output/images/ + ├── bl31.bin + ├── boot.scr + ├── ddr_fw.bin + ├── flash.bin + ├── Image + ├── imx8mm-kontron-n801x-s.dtb + ├── lpddr4_pmu_train_1d_dmem_201904.bin + ├── lpddr4_pmu_train_1d_dmem_202006.bin + ├── lpddr4_pmu_train_1d_dmem.bin + ├── lpddr4_pmu_train_1d_dmem_pad.bin + ├── lpddr4_pmu_train_1d_fw.bin + ├── lpddr4_pmu_train_1d_imem_201904.bin + ├── lpddr4_pmu_train_1d_imem_202006.bin + ├── lpddr4_pmu_train_1d_imem.bin + ├── lpddr4_pmu_train_1d_imem_pad.bin + ├── lpddr4_pmu_train_2d_dmem_201904.bin + ├── lpddr4_pmu_train_2d_dmem_202006.bin + ├── lpddr4_pmu_train_2d_dmem.bin + ├── lpddr4_pmu_train_2d_dmem_pad.bin + ├── lpddr4_pmu_train_2d_fw.bin + ├── lpddr4_pmu_train_2d_imem_201904.bin + ├── lpddr4_pmu_train_2d_imem_202006.bin + ├── lpddr4_pmu_train_2d_imem.bin + ├── lpddr4_pmu_train_2d_imem_pad.bin + ├── lpddr4_pmu_train_fw.bin + ├── rootfs.ext2 + ├── rootfs.ext4 -> rootfs.ext2 + ├── rootfs.tar + ├── sdcard.img + ├── u-boot.bin + └── u-boot-spl.bin + + +Flashing the SD card image +========================== + +To install the image on a SDCard simply copy sdcard.img to the storage (e.g. SD, eMMC) + + $ sudo dd if=output/images/sdcard.img of= + + +Preparing the board +=================== + + * Connect a serial line to the board + * Insert the SD card + * Power-up the board + + +Booting the board +================= + +By default the bootloader will search for the first valid image, starting +with the internal eMMC. To make sure the bootloader loads bootscript from +the correct location (SD card) set the boot_targets environment variable: + + $ setenv boot_targets mmc1 diff --git a/board/kontron/pitx-imx8m/extlinux.conf b/board/kontron/pitx-imx8m/extlinux.conf new file mode 100644 index 00000000..2911acec --- /dev/null +++ b/board/kontron/pitx-imx8m/extlinux.conf @@ -0,0 +1,4 @@ +label buildroot + kernel /boot/Image + devicetree /boot/freescale/imx8mq-kontron-pitx-imx8m.dtb + append root=PARTUUID=%PARTUUID% rootwait rw diff --git a/board/kontron/pitx-imx8m/genimage.cfg b/board/kontron/pitx-imx8m/genimage.cfg new file mode 100644 index 00000000..bc100b17 --- /dev/null +++ b/board/kontron/pitx-imx8m/genimage.cfg @@ -0,0 +1,17 @@ +image sdcard.img { + hdimage { + partition-table-type = "gpt" + } + + partition imx-boot { + in-partition-table = "no" + image = "flash.bin" + offset = 33K + } + + partition rootfs { + offset = 8M + image = "rootfs.ext4" + partition-uuid = %PARTUUID% + } +} diff --git a/board/kontron/pitx-imx8m/patches/uboot/2022.04/0001-tools-mkeficapsule-use-pkg-config-to-get-luuid-and-l.patch b/board/kontron/pitx-imx8m/patches/uboot/2022.04/0001-tools-mkeficapsule-use-pkg-config-to-get-luuid-and-l.patch new file mode 100644 index 00000000..9530a45e --- /dev/null +++ b/board/kontron/pitx-imx8m/patches/uboot/2022.04/0001-tools-mkeficapsule-use-pkg-config-to-get-luuid-and-l.patch @@ -0,0 +1,33 @@ +From f3523977e8f5f6b2173708777001332431ebc609 Mon Sep 17 00:00:00 2001 +From: Heiko Thiery +Date: Tue, 19 Jul 2022 16:17:09 +0200 +Subject: [PATCH 1/2] tools: mkeficapsule: use pkg-config to get -luuid and -lgnutls + +Instead of hardcoding -luuid -lgnutls as the flags needed to build +mkeficapsule, use pkg-config when available. + +We gracefully fallback on the previous behavior of hardcoding -luuid +-lgnutls if pkg-config is not available or fails with an error. + +Signed-off-by: Heiko Thiery +--- + tools/Makefile | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/tools/Makefile b/tools/Makefile +index 9f2339666a..9f6b282ad8 100644 +--- a/tools/Makefile ++++ b/tools/Makefile +@@ -242,7 +242,8 @@ hostprogs-$(CONFIG_MIPS) += mips-relocs + hostprogs-$(CONFIG_ASN1_COMPILER) += asn1_compiler + HOSTCFLAGS_asn1_compiler.o = -idirafter $(srctree)/include + +-HOSTLDLIBS_mkeficapsule += -lgnutls -luuid ++HOSTLDLIBS_mkeficapsule += \ ++ $(shell pkg-config --libs gnutls uuid 2> /dev/null || echo "-lgnutls -luuid") + hostprogs-$(CONFIG_TOOLS_MKEFICAPSULE) += mkeficapsule + + # We build some files with extra pedantic flags to try to minimize things +-- +2.30.2 + diff --git a/board/kontron/pitx-imx8m/post-build.sh b/board/kontron/pitx-imx8m/post-build.sh new file mode 100755 index 00000000..bf8861f6 --- /dev/null +++ b/board/kontron/pitx-imx8m/post-build.sh @@ -0,0 +1,7 @@ +#!/bin/sh +BOARD_DIR="$(dirname $0)" +PARTUUID="$($HOST_DIR/bin/uuidgen)" + +install -d "$TARGET_DIR/boot/extlinux/" +sed "s/%PARTUUID%/$PARTUUID/g" "$BOARD_DIR/extlinux.conf" > "$TARGET_DIR/boot/extlinux/extlinux.conf" +sed "s/%PARTUUID%/$PARTUUID/g" "$BOARD_DIR/genimage.cfg" > "$BINARIES_DIR/genimage.cfg" diff --git a/board/kontron/pitx-imx8m/readme.txt b/board/kontron/pitx-imx8m/readme.txt new file mode 100644 index 00000000..7c85dd43 --- /dev/null +++ b/board/kontron/pitx-imx8m/readme.txt @@ -0,0 +1,74 @@ +Kontron pitx-imx8m +================== + +https://www.kontron.com/produkte/pitx-imx8m/p155258 + + +How to build it +=============== + +Configure buildroot: + + $ make kontron_pitx_imx8m_defconfig + +Change settings to fit your needs (optional): + + $ make menuconfig + +Compile everything and buildr the rootfs image: + + $ make + + +Result of the build +=================== + +After building, the output/images directory contains: + + output/images/ + ├── bl31.bin + ├── boot.scr + ├── ddr_fw.bin + ├── Image + ├── imx8-boot-sd.bin + ├── imx8mq-kontron-pitx-imx8m.dtb + ├── lpddr4_pmu_train_fw.bin + ├── rootfs.ext2 + ├── rootfs.ext4 -> rootfs.ext2 + ├── rootfs.tar + ├── sdcard.img + ├── signed_hdmi_imx8m.bin + ├── u-boot.bin + ├── u-boot.itb + ├── u-boot-nodtb.bin + ├── u-boot-spl.bin + └── u-boot-spl-ddr.bin + + +Flashing the SD card image +========================== + +To install the image on a SDCard simply copy sdcard.img to the storage (e.g. SD, eMMC) + + $ sudo dd if=output/images/sdcard.img of= + + +Preparing the board +=================== + + * Connect a serial line to the board + * Insert the SD card + * Make sure the boot source selection DIP switches are set correctly + * SW1 1-4 OFF + * SW1 2-3 OFF + * Power-up the board + + +Booting the board +================= + +By default the bootloader will search for the first valid image, starting +with the internal eMMC. To make sure the bootloader loads bootscript from +the correct location (SD card) set the boot_targets environment variable: + + $ setenv boot_targets mmc1 diff --git a/board/kontron/smarc-sal28/extlinux.conf b/board/kontron/smarc-sal28/extlinux.conf new file mode 100644 index 00000000..bf60bc37 --- /dev/null +++ b/board/kontron/smarc-sal28/extlinux.conf @@ -0,0 +1,4 @@ +label buildroot + kernel /boot/Image + devicetreedir /boot + append root=PARTUUID=%PARTUUID% rootwait diff --git a/board/kontron/smarc-sal28/genimage.cfg b/board/kontron/smarc-sal28/genimage.cfg new file mode 100644 index 00000000..82bab26f --- /dev/null +++ b/board/kontron/smarc-sal28/genimage.cfg @@ -0,0 +1,24 @@ +image sdcard-emmc.img { + hdimage { + partition-table-type = "gpt" + gpt-location = 16K + } + + partition rcw { + offset = 4K + in-partition-table = "no" + image = "rcw.bin" + } + + partition u-boot { + offset = 1M + in-partition-table = "no" + image = "u-boot.rom" + } + + partition rootfs { + offset = 4M + image = rootfs.ext4 + partition-uuid = %PARTUUID% + } +} diff --git a/board/kontron/smarc-sal28/post-build.sh b/board/kontron/smarc-sal28/post-build.sh new file mode 100755 index 00000000..bf8861f6 --- /dev/null +++ b/board/kontron/smarc-sal28/post-build.sh @@ -0,0 +1,7 @@ +#!/bin/sh +BOARD_DIR="$(dirname $0)" +PARTUUID="$($HOST_DIR/bin/uuidgen)" + +install -d "$TARGET_DIR/boot/extlinux/" +sed "s/%PARTUUID%/$PARTUUID/g" "$BOARD_DIR/extlinux.conf" > "$TARGET_DIR/boot/extlinux/extlinux.conf" +sed "s/%PARTUUID%/$PARTUUID/g" "$BOARD_DIR/genimage.cfg" > "$BINARIES_DIR/genimage.cfg" diff --git a/board/kontron/smarc-sal28/readme.txt b/board/kontron/smarc-sal28/readme.txt new file mode 100644 index 00000000..bdf2258b --- /dev/null +++ b/board/kontron/smarc-sal28/readme.txt @@ -0,0 +1,88 @@ +Kontron SMARC-sAL28 +=================== + +How to build it +=============== + +Configure Buildroot: + + $ make kontron_smarc_sal28_defconfig + +Change settings to fit your needs (optional): + + $ make menuconfig + +Compile everything and build the rootfs image: + + $ make + +Copying the image to a storage device +===================================== + +Buildroot builds an image which can be written to the internal eMMC +storage, a SD card or an USB thumb drive. You can use the following +command on your host: + + $ sudo dd if=output/images/sdcard-emmc.img of=/dev/sdx bs=1M + +Where /dev/sdx is the corresponding block device of your SD card or USB +thumb drive. To flash it on your internal eMMC use the following command on +the board: + + # dd if=sdcard-emmc.img of=/dev/mmcblk1 bs=1M + +Be sure you have not booted from the internal eMMC in this case! + +Booting the board +================= + +By default the bootloader will search for the first valid image, starting +with the internal eMMC. Consult the vendor documentation on how to use the +DIP switches to select specific boot devices. To use the bootloader +environment set the boot_targets correspondingly. E.g.: + + # setenv boot_targets usb0 + +To boot from an USB thumb drive. + +The device tree is loaded according to the filename in fdtfile. The +following command will set the default device tree, which works on almost +all variants (with less features of course): + + # setenv fdtfile freescale/fsl-ls1028a-kontron-sl28.dtb + +Set this to a device tree which fits your board variant. + +Connect your serial cable to SER1 and open your favorite terminal emulation +program (baudrate 115200, 8n1). E.g.: + + $ picocom -b 115200 /dev/ttyUSB0 + +You will get a warning reported by fdisk when you examine the SD card. +This is because the genimage.cfg file doesn't specify the SD card size +(as people will naturally have different sized cards), so the +secondary GPT header is placed after the rootfs rather than at the end +of the disk where it is expected to be. + +You will see something like this at boot time: + +[ 4.552797] GPT:Primary header thinks Alt. header is not at the end of the disk. +[ 4.560237] GPT:266272 != 7864319 +[ 4.563565] GPT:Alternate GPT header not at the end of the disk. +[ 4.569596] GPT:266272 != 7864319 +[ 4.572925] GPT: Use GNU Parted to correct GPT errors. + +Updating the bootloader +======================= + +Buildroot will automatically build the u-boot bootloader. The resulting +image is called u-boot.rom and you can find it in the images/ directory. + +To update the bootloader on the board you could either copy it to an +USB thumb drive or you could put it on a TFTP server. The following +example assumes you have the bootloader image copied to the root of +a thumb drive: + + # usb start + # load usb 0:1 $loadaddr u-boot.rom + # sf probe 0 && sf update $fileaddr 0x210000 $filesize diff --git a/board/kontron/smarc-sal28/rootfs_overlay/etc/udev/rules.d/70-enetc-networking.rules b/board/kontron/smarc-sal28/rootfs_overlay/etc/udev/rules.d/70-enetc-networking.rules new file mode 100644 index 00000000..8774bc55 --- /dev/null +++ b/board/kontron/smarc-sal28/rootfs_overlay/etc/udev/rules.d/70-enetc-networking.rules @@ -0,0 +1,8 @@ +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.0", DRIVERS=="fsl_enetc", NAME="eno0" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.1", DRIVERS=="fsl_enetc", NAME="eno1" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.2", DRIVERS=="fsl_enetc", NAME="eno2" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.6", DRIVERS=="fsl_enetc", NAME="eno3" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:01.0", DRIVERS=="fsl_enetc_vf", NAME="eno0vf0" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:01.1", DRIVERS=="fsl_enetc_vf", NAME="eno0vf1" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:01.2", DRIVERS=="fsl_enetc_vf", NAME="eno1vf0" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:01.3", DRIVERS=="fsl_enetc_vf", NAME="eno1vf1" diff --git a/board/kontron/smarc-sal28/rootfs_overlay/etc/udev/rules.d/70-felix-networking.rules b/board/kontron/smarc-sal28/rootfs_overlay/etc/udev/rules.d/70-felix-networking.rules new file mode 100644 index 00000000..917c0244 --- /dev/null +++ b/board/kontron/smarc-sal28/rootfs_overlay/etc/udev/rules.d/70-felix-networking.rules @@ -0,0 +1,6 @@ +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p0", NAME="swp0" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p1", NAME="swp1" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p2", NAME="swp2" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p3", NAME="swp3" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p4", NAME="swp4" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p5", NAME="swp5" diff --git a/board/kontron/smarc-sal28/rootfs_overlay/etc/udev/rules.d/71-smarc-networking.rules b/board/kontron/smarc-sal28/rootfs_overlay/etc/udev/rules.d/71-smarc-networking.rules new file mode 100644 index 00000000..8c946b05 --- /dev/null +++ b/board/kontron/smarc-sal28/rootfs_overlay/etc/udev/rules.d/71-smarc-networking.rules @@ -0,0 +1,19 @@ +# Map the GBE0 and GBE1 names from the SMARC standard to the network +# interfaces. This depends on the variant of the board. + +# get the variant compatible string +PROGRAM=="/bin/grep '^kontron,sl28-var[1-4]$' /sys/firmware/devicetree/base/compatible", ENV{sl28_compatible}="%c" + +# variant 1 +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.1", DRIVERS=="fsl_enetc", ENV{sl28_compatible}=="kontron,sl28-var1", NAME="gbe0" + +# variant 2 +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p0", ENV{sl28_compatible}=="kontron,sl28-var2", NAME="gbe0" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p1", ENV{sl28_compatible}=="kontron,sl28-var2", NAME="gbe1" + +# variant 3 +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.0", DRIVERS=="fsl_enetc", ENV{sl28_compatible}=="kontron,sl28-var3", NAME="gbe0" + +# variant 4 +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.0", DRIVERS=="fsl_enetc", ENV{sl28_compatible}=="kontron,sl28-var4", NAME="gbe0" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.1", DRIVERS=="fsl_enetc", ENV{sl28_compatible}=="kontron,sl28-var4", NAME="gbe1" diff --git a/board/lego/ev3/busybox.fragment b/board/lego/ev3/busybox.fragment new file mode 100644 index 00000000..901274d3 --- /dev/null +++ b/board/lego/ev3/busybox.fragment @@ -0,0 +1,3 @@ +CONFIG_BEEP=y +CONFIG_FEATURE_BEEP_FREQ=440 +CONFIG_FEATURE_BEEP_LENGTH_MS=250 diff --git a/board/lego/ev3/genimage.cfg b/board/lego/ev3/genimage.cfg new file mode 100644 index 00000000..3eaf3915 --- /dev/null +++ b/board/lego/ev3/genimage.cfg @@ -0,0 +1,73 @@ +# 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 = 4K + numpebs = 4K + minimum-io-unit-size = 256 +} + +image flash.bin { + flash { + } + flashtype = "nor-16M-256" + + partition uboot { + image = "u-boot.bin" + size = 256K + } + + partition dtb { + image = "da850-lego-ev3.dtb" + offset = 256K + size = 64K + } + + partition uimage { + image = "uImage" + offset = 320K + size = 4M + } + + partition rootfs { + image = "rootfs.squashfs" + offset = 4416K # 4M + 320KB + size = 10M + } +} + +# The SD card image + +image boot.vfat { + vfat { + file uImage { + image = "uImage" + } + + file da850-lego-ev3.dtb { + image = "da850-lego-ev3.dtb" + } + } + + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 4M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/board/lego/ev3/linux.fragment b/board/lego/ev3/linux.fragment new file mode 100644 index 00000000..79efd27d --- /dev/null +++ b/board/lego/ev3/linux.fragment @@ -0,0 +1,68 @@ +CONFIG_ARM_APPENDED_DTB=n +CONFIG_ARCH_DAVINCI_DM644x=n +CONFIG_ARCH_DAVINCI_DM355=n +CONFIG_ARCH_DAVINCI_DM646x=n +CONFIG_ARCH_DAVINCI_DA830=n +CONFIG_ARCH_DAVINCI_DM365=n +CONFIG_MACH_SFFSDR=n +CONFIG_MACH_NEUROS_OSD2=n +CONFIG_MACH_DM355_LEOPARD=n +CONFIG_MACH_MITYOMAPL138=n +CONFIG_MACH_OMAPL138_HAWKBOARD=n +CONFIG_MACH_DAVINCI_DA850_EVM=n +CONFIG_ATA=n +CONFIG_MTD=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_M25P80=y +CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_UBI=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=1 +CONFIG_BLK_DEV_RAM_SIZE=32768 +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_PWM_BEEPER=y +CONFIG_SPI_DAVINCI=y +CONFIG_PINCTRL_DA850_PUPD=y +CONFIG_V4L_PLATFORM_DRIVERS=n +CONFIG_SOUND=n +CONFIG_SND=n +CONFIG_SND_SOC=n +CONFIG_SND_EDMA_SOC=n +CONFIG_SND_DAVINCI_SOC_MCASP=n +CONFIG_SND_SOC_TLV320AIC3X=n +CONFIG_SND_SIMPLE_CARD=n +CONFIG_DAVINCI_WATCHDOG=y +CONFIG_USB=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_DAVINCI=y +CONFIG_USB_MUSB_HDRC=y +CONFIG_USB_MUSB_GADGET=y +CONFIG_USB_MUSB_DA8XX=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_USB_GADGET=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGER_MTD=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y +CONFIG_RTC_DRV_OMAP=y +CONFIG_IIO=y +CONFIG_TI_ADS7950=y +CONFIG_PWM_TIECAP=y +CONFIG_PWM_TIEHRPWM=y +CONFIG_SQUASHFS=y +CONFIG_SQUASHFS_LZ4=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XZ=y +CONFIG_DRM=y +CONFIG_DRM_TILCDC=n +CONFIG_DRM_DUMB_VGA_DAC=n +CONFIG_DRM_TINYDRM=y +CONFIG_TINYDRM_ST7586=y +CONFIG_FB_DA8XX=n +CONFIG_COMMON_CLK_PWM=y +CONFIG_BT=y +CONFIG_BT_HS=n +CONFIG_BT_LE=n +CONFIG_RFKILL=y diff --git a/board/lego/ev3/patches/linux-headers/linux-headers.hash b/board/lego/ev3/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/lego/ev3/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/lego/ev3/patches/linux/linux.hash b/board/lego/ev3/patches/linux/linux.hash new file mode 100644 index 00000000..81824a41 --- /dev/null +++ b/board/lego/ev3/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 6c5e4d3c87feadbfdb9f7d2e46f3f120b00286ba380491c5956708e0b94232c8 linux-4.19.315.tar.xz diff --git a/board/lego/ev3/patches/uboot/uboot.hash b/board/lego/ev3/patches/uboot/uboot.hash new file mode 100644 index 00000000..c53d9ecc --- /dev/null +++ b/board/lego/ev3/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 312b7eeae44581d1362c3a3f02c28d806647756c82ba8c72241c7cdbe68ba77e u-boot-2021.07.tar.bz2 diff --git a/board/lego/ev3/post-image.sh b/board/lego/ev3/post-image.sh new file mode 100755 index 00000000..81626dc3 --- /dev/null +++ b/board/lego/ev3/post-image.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/board/lego/ev3/readme.txt b/board/lego/ev3/readme.txt new file mode 100644 index 00000000..648bca1e --- /dev/null +++ b/board/lego/ev3/readme.txt @@ -0,0 +1,99 @@ +Lego Mindstorms EV3 + +Intro +===== + +This is the buildroot basic board support for the Lego Mindstorms EV3 +programmable brick. + +The Lego Mindstorms EV3 brick comprises a Texas Instruments AM1808 SoC, with +an ARM 926EJ-S main processor running at 300 MHz. +See: +- https://en.wikipedia.org/wiki/Lego_Mindstorms_EV3 +- http://www.lego.com/en-us/mindstorms/products/ev3/31313-mindstorms-ev3/ +- http://www.ti.com/product/am1808 + +How it works +============ + +Boot process : +-------------- + +The EV3 boots from an EEPROM. This loads whatever is on the built-in 16MB flash +(usually U-Boot) and runs it. The U-Boot from the official LEGO firmware and +mainline U-Boot will attempt to boot a Linux kernel from the external µSD card. +It will try to load a uImage (and optional boot.scr) from the first µSD card +partition, which must be formatted with a FAT filesystem. If no µSD is found or +it does not contain a uImage file, then the EV3 will boot the uImage from the +built-in 16MB flash. + +How to build it +=============== + +Configure Buildroot +------------------- + +The lego_ev3_defconfig configuration provides basic support to boot on the Lego +Mindstorms EV3 programmable brick: + + $ make lego_ev3_defconfig + +Build everything +---------------- + +Note: you will need to have access to the network, since Buildroot will +download the packages' sources. + + $ make + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + ├── boot.vfat + ├── flash.bin + ├── rootfs.ext2 + ├── rootfs.ext3 -> rootfs.ext2 + ├── rootfs.squashfs + ├── sdcard.img + ├── u-boot.bin + ├── uImage -> uImage.da850-lego-ev3 + └── uImage.da850-lego-ev3 + +Installation +============ + +You can use either flash.bin or the sdcard.img. To load flash.bin, use the +official Lego Mindstorms EV3 programming software firmware update tool to load +the image. To use sdcard.img, use a disk writing tool such as Etcher or dd to +write the image to the µSD card. + +NOTE: The sdcard.img created by lego_ev3_defconfig won't boot if the official +LEGO firmware is installed on the EV3 (it has an old version of U-Boot that +doesn't know about device tree). You must either set the kernel configuration +option to append the device tree to the kernel or you can create a boot.scr +that chainloads a newer U-Boot or you can install a newer U-Boot in the flash +memory (just flashing u-boot.bin is enough). + +Finish +====== + +To have a serial console, you will need a proper USB to Lego serial port +adapter plugged into the EV3 sensors port 1. +See: +- http://botbench.com/blog/2013/08/15/ev3-creating-console-cable/ +- http://botbench.com/blog/2013/08/05/mindsensors-ev3-usb-console-adapter/ + +The serial port config to use is 115200/8-N-1. + +Bluetooth +========= + +To enable Bluetooth: + + # modprobe hci_uart + # /usr/libexec/bluetooth/bluetoothd & + # bluetoothctl + [bluetooth]# power on diff --git a/board/lemaker/bananapro/boot.cmd b/board/lemaker/bananapro/boot.cmd new file mode 100644 index 00000000..439f5b12 --- /dev/null +++ b/board/lemaker/bananapro/boot.cmd @@ -0,0 +1,5 @@ +setenv fdt_high ffffffff +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun7i-a20-bananapro.dtb +bootz $kernel_addr_r - $fdt_addr_r diff --git a/board/lemaker/bananapro/genimage.cfg b/board/lemaker/bananapro/genimage.cfg new file mode 100644 index 00000000..9d15f35e --- /dev/null +++ b/board/lemaker/bananapro/genimage.cfg @@ -0,0 +1,38 @@ +# Minimal SD card image for the Banana Pro +# Based in the Orange Pi genimage.cfg + +image boot.vfat { + vfat { + files = { + "zImage", + "sun7i-a20-bananapro.dtb", + "boot.scr" + } + } + + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + size = 1016K # 1MB - 8KB + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/lemaker/bananapro/linux-wifi.fragment b/board/lemaker/bananapro/linux-wifi.fragment new file mode 100644 index 00000000..f4ede39f --- /dev/null +++ b/board/lemaker/bananapro/linux-wifi.fragment @@ -0,0 +1,24 @@ +# Networking support +CONFIG_WIRELESS=y +CONFIG_CFG80211=y +CONFIG_CFG80211_WEXT=y +CONFIG_RFKILL=y + +# Network device support +CONFIG_WLAN=y +CONFIG_WLAN_VENDOR_BROADCOM=y +CONFIG_BRCMFMAC=m +# CONFIG_WLAN_VENDOR_ADMTEK is not set +# CONFIG_WLAN_VENDOR_ATH is not set +# CONFIG_WLAN_VENDOR_ATMEL is not set +# CONFIG_WLAN_VENDOR_CISCO is not set +# CONFIG_WLAN_VENDOR_INTEL is not set +# CONFIG_WLAN_VENDOR_INTERSIL is not set +# CONFIG_WLAN_VENDOR_MARVELL is not set +# CONFIG_WLAN_VENDOR_MEDIATEK is not set +# CONFIG_WLAN_VENDOR_RALINK is not set +# CONFIG_WLAN_VENDOR_REALTEK is not set +# CONFIG_WLAN_VENDOR_RSI is not set +# CONFIG_WLAN_VENDOR_ST is not set +# CONFIG_WLAN_VENDOR_TI is not set +# CONFIG_WLAN_VENDOR_ZYDAS is not set diff --git a/board/lemaker/bananapro/patches/linux/0001-arch-arm-boot-dts-sun7i-a20-bananapro.dts-disable-00.patch b/board/lemaker/bananapro/patches/linux/0001-arch-arm-boot-dts-sun7i-a20-bananapro.dts-disable-00.patch new file mode 100644 index 00000000..c8e8c037 --- /dev/null +++ b/board/lemaker/bananapro/patches/linux/0001-arch-arm-boot-dts-sun7i-a20-bananapro.dts-disable-00.patch @@ -0,0 +1,44 @@ +From 896e82ab14e7e4e361ffa7c81def787907c1bf4c Mon Sep 17 00:00:00 2001 +From: Bartosz Bilas +Date: Sun, 19 May 2019 21:04:35 +0200 +Subject: [PATCH] arch/arm/boot/dts/sun7i-a20-bananapro.dts: disable 00B + IRQ for brcm wifi module + + BugLink: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=908438 + +Signed-off-by: Hans de Goede +Signed-off-by: Bartosz Bilas +--- + arch/arm/boot/dts/sun7i-a20-bananapro.dts | 16 +++++++++++++--- + 1 file changed, 13 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/boot/dts/sun7i-a20-bananapro.dts b/arch/arm/boot/dts/sun7i-a20-bananapro.dts +index 0176e9de0..93b3340f5 100644 +--- a/arch/arm/boot/dts/sun7i-a20-bananapro.dts ++++ b/arch/arm/boot/dts/sun7i-a20-bananapro.dts +@@ -160,9 +160,19 @@ + brcmf: wifi@1 { + reg = <1>; + compatible = "brcm,bcm4329-fmac"; +- interrupt-parent = <&pio>; +- interrupts = <7 15 IRQ_TYPE_LEVEL_LOW>; +- interrupt-names = "host-wake"; ++ /* ++ * OOB interrupt support is broken ATM, often the first irq ++ * does not get seen resulting in the drv probe failing with: ++ * ++ * brcmfmac: brcmf_sdio_bus_rxctl: resumed on timeout ++ * brcmfmac: brcmf_bus_started: failed: -110 ++ * brcmfmac: brcmf_attach: dongle is not responding: err=-110 ++ * brcmfmac: brcmf_sdio_firmware_callback: brcmf_attach failed ++ * ++ * interrupt-parent = <&pio>; ++ * interrupts = <7 15 IRQ_TYPE_LEVEL_LOW>; ++ * interrupt-names = "host-wake"; ++ */ + }; + }; + +-- +2.21.0 + diff --git a/board/lemaker/bananapro/post-build.sh b/board/lemaker/bananapro/post-build.sh new file mode 100755 index 00000000..a335310d --- /dev/null +++ b/board/lemaker/bananapro/post-build.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +# Remove all but the brcmfmac43362 firmware files +find $TARGET_DIR/lib/firmware/brcm -type f -not -name "brcmfmac43362*" -delete + +BOARD_DIR="$(dirname $0)" +MKIMAGE=$HOST_DIR/bin/mkimage +BOOT_CMD=$BOARD_DIR/boot.cmd +BOOT_CMD_H=$BINARIES_DIR/boot.scr + +# U-Boot script +$MKIMAGE -C none -A arm -T script -d $BOOT_CMD $BOOT_CMD_H diff --git a/board/lemaker/bananapro/post-image.sh b/board/lemaker/bananapro/post-image.sh new file mode 100755 index 00000000..9cca1b17 --- /dev/null +++ b/board/lemaker/bananapro/post-image.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +exit $? diff --git a/board/lemaker/bananapro/readme.txt b/board/lemaker/bananapro/readme.txt new file mode 100644 index 00000000..27b922e2 --- /dev/null +++ b/board/lemaker/bananapro/readme.txt @@ -0,0 +1,62 @@ +Banana Pro + +Intro +===== + +This default configuration will allow you to start experimenting with the +Buildroot environment for the Banana Pro. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make bananapro_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ dd if=output/images/sdcard.img of=/dev/sdX + +Notes: + - replace 'sdX' with the actual device with your micro SD card + - you may need to be root to do that (use 'sudo') + +Insert the micro SD card in your Banana Pro and power it up. The console +is on the debug TTL UART, 115200 8N1. + +Ethernet +========== + + # udhcpc -i eth0 + +Wifi +========== + + # wpa_passphrase YOUR_SSID >> /etc/wpa_supplicant.conf + (enter the wifi password and press enter) + # wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -B + # udhcpc -i wlan0 + +Note: + - replace 'YOUR_SSID' with the actual SSID from your access point + +Audio +========== + +Connect a headphone to the 3.5mm jack (TRRS). Note, that the Banana Pro +has an on-board microphone, too. + + # amixer cset name='Power Amplifier DAC Playback Switch' on + # amixer cset name='Power Amplifier Mute Switch' on + # amixer cset name='Power Amplifier Volume' 42 diff --git a/board/lemaker/bananapro/rootfs_overlay/lib/firmware/brcm/brcmfmac43362-sdio.lemaker,bananapro.txt b/board/lemaker/bananapro/rootfs_overlay/lib/firmware/brcm/brcmfmac43362-sdio.lemaker,bananapro.txt new file mode 120000 index 00000000..93947975 --- /dev/null +++ b/board/lemaker/bananapro/rootfs_overlay/lib/firmware/brcm/brcmfmac43362-sdio.lemaker,bananapro.txt @@ -0,0 +1 @@ +brcmfmac43362-sdio.txt \ No newline at end of file diff --git a/board/lemaker/bananapro/rootfs_overlay/lib/firmware/brcm/brcmfmac43362-sdio.txt b/board/lemaker/bananapro/rootfs_overlay/lib/firmware/brcm/brcmfmac43362-sdio.txt new file mode 100644 index 00000000..14a554fd --- /dev/null +++ b/board/lemaker/bananapro/rootfs_overlay/lib/firmware/brcm/brcmfmac43362-sdio.txt @@ -0,0 +1,56 @@ +#AP6210_NVRAM_V1.2_03192013 +manfid=0x2d0 +prodid=0x492 +vendid=0x14e4 +devid=0x4343 +boardtype=0x0598 + +# Board Revision is P307, same nvram file can be used for P304, P305, P306 and P307 as the tssi pa params used are same +#Please force the automatic RX PER data to the respective board directory if not using P307 board, for e.g. for P305 boards force the data into the following directory /projects/BCM43362/a1_labdata/boardtests/results/sdg_rev0305 +boardrev=0x1307 +boardnum=777 +xtalfreq=26000 +boardflags=0x80201 +boardflags2=0x80 +sromrev=3 +wl0id=0x431b +macaddr=00:90:4c:07:71:12 +aa2g=1 +ag0=2 +maxp2ga0=74 +cck2gpo=0x2222 +ofdm2gpo=0x44444444 +mcs2gpo0=0x6666 +mcs2gpo1=0x6666 +pa0maxpwr=56 + +#P207 PA params +#pa0b0=5447 +#pa0b1=-658 +#pa0b2=-175 + +#Same PA params for P304,P305, P306, P307 + +pa0b0=5447 +pa0b1=-607 +pa0b2=-160 +pa0itssit=62 +pa1itssit=62 + + +cckPwrOffset=5 +ccode=0 +rssismf2g=0xa +rssismc2g=0x3 +rssisav2g=0x7 +triso2g=0 +noise_cal_enable_2g=0 +noise_cal_po_2g=0 +swctrlmap_2g=0x04040404,0x02020202,0x02020202,0x010101,0x1ff +temp_add=29767 +temp_mult=425 + +btc_flags=0x6 +btc_params0=5000 +btc_params1=1000 +btc_params6=63 diff --git a/board/librecomputer/lafrite/genimage.cfg b/board/librecomputer/lafrite/genimage.cfg new file mode 100644 index 00000000..212f8295 --- /dev/null +++ b/board/librecomputer/lafrite/genimage.cfg @@ -0,0 +1,10 @@ +image usb.img { + hdimage { + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/librecomputer/lafrite/overlay/extlinux/extlinux.conf b/board/librecomputer/lafrite/overlay/extlinux/extlinux.conf new file mode 100644 index 00000000..60aa9d6e --- /dev/null +++ b/board/librecomputer/lafrite/overlay/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +label linux + kernel /boot/Image + devicetree /boot/meson-gxl-s805x-libretech-ac.dtb + append console=ttyAML0,115200 earlyprintk root=/dev/sda1 rootwait diff --git a/board/librecomputer/lafrite/patches/linux-headers/linux-headers.hash b/board/librecomputer/lafrite/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/librecomputer/lafrite/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/librecomputer/lafrite/patches/linux/linux.hash b/board/librecomputer/lafrite/patches/linux/linux.hash new file mode 100644 index 00000000..899adefd --- /dev/null +++ b/board/librecomputer/lafrite/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 23e3e7b56407250f5411bdab95763d0bc4e3a19dfa431d951df7eacabd61a2f4 linux-6.6.22.tar.xz diff --git a/board/librecomputer/lafrite/readme.txt b/board/librecomputer/lafrite/readme.txt new file mode 100644 index 00000000..c439c5e9 --- /dev/null +++ b/board/librecomputer/lafrite/readme.txt @@ -0,0 +1,34 @@ +Intro +===== + +Libre Computer "La Frite" is a low cost SBC based around an Amlogic +s805x SoC (quad A53), 512MB/1GB DDR4 and a 16MB SPI NOR flash: + +https://libre.computer/products/boards/aml-s805x-ac/ + +How to build it +=============== + +Configure Buildroot: + + $ make lafrite_defconfig + +Compile everything and build the USB flash drive image: + + $ make + +How to write the USB flash drive image +====================================== + +Once the build process is finished you will have an image called "usb.img" +in the output/images/ directory. + +Copy the bootable "usb.img" onto a USB flash drive with "dd": + + $ sudo dd if=output/images/usb.img of=/dev/sdX + +How to boot +=========== + +Insert flash drive to the USB connector furthest away from the IR +receiver and power up board. The system will boot automatically. diff --git a/board/linksprite/pcduino/linux-extras.config b/board/linksprite/pcduino/linux-extras.config new file mode 100644 index 00000000..670f83fa --- /dev/null +++ b/board/linksprite/pcduino/linux-extras.config @@ -0,0 +1,16 @@ +# spidev +CONFIG_SPI_SPIDEV=y + +# wireless core +CONFIG_CFG80211=m +CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211=m + +# wireless drivers +CONFIG_WLAN=y +CONFIG_RTL_CARDS=m +CONFIG_RTL8192CU=m +CONFIG_RTLWIFI=m +CONFIG_RTLWIFI_USB=m +CONFIG_RTLWIFI_DEBUG=y +CONFIG_RTL8192C_COMMON=m diff --git a/board/linksprite/pcduino/readme.txt b/board/linksprite/pcduino/readme.txt new file mode 100644 index 00000000..08f380fb --- /dev/null +++ b/board/linksprite/pcduino/readme.txt @@ -0,0 +1,42 @@ +pcDuino v1 boards (http://www.linksprite.com/linksprite-pcduino) + +Intro +===== + +This default configuration will allow you to start experimenting +with the buildroot environment for the LinkSprite pcDuino v1 board +including its flavors pcDuino-Lite and pcDuino-Lite-WiFi. With the +current configuration it will bring-up the board and allow access +through the serial console as well as ethernet and wireless +network interfaces. + +How to build it +=============== + +Configure Buildroot: + + $ make linksprite_pcduino_defconfig + +Modify configuration if needed, e.g. add more packages to target: + + $ make menuconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image +called "sdcard.img" in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +How to boot new image +===================== + +Insert SD card and reset the board. By default pcDuino board +boots from SD card. diff --git a/board/mangopi/mq1rdw2/genimage.cfg b/board/mangopi/mq1rdw2/genimage.cfg new file mode 100644 index 00000000..92c86775 --- /dev/null +++ b/board/mangopi/mq1rdw2/genimage.cfg @@ -0,0 +1,16 @@ +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + size = 1016K # 1MB - 8KB + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/mangopi/mq1rdw2/readme.txt b/board/mangopi/mq1rdw2/readme.txt new file mode 100644 index 00000000..fd37f631 --- /dev/null +++ b/board/mangopi/mq1rdw2/readme.txt @@ -0,0 +1,46 @@ +MangoPi MQ1RDW2 +=============== + +MangoPi MQ1RDW2 is a tiny ARM Cortex-A7 based single board computer. +It's built around Allwinner T113-S3 dual core 1GHz CPU with integrated +128MB DDR3-1600 RAM. +Board features: +- USB-OTG Type-C socket +- USB-HOST Type-C socket +- 2x 18 pin GPIO headers +- TF card slot +- RTL8723DS WiFi module with ext. antenna connector +- 40 pin RGB FPC connector +- 6 pin CTP FPC connector +- 24 pin DVP FPC connector +- onboard mic +- onboard audio amplifier +- FEL,reset button + +How to build +============ + +$ make mangopi_mq1rdw2_defconfig +$ make + +Wifi +========== + +Edit board/mangopi/mq1rdw2/overlay/etc/wpa_supplicant.conf or +/etc/wpa_supplicant.conf once connected to the board: + +* Replace YOURSSID with your AP ssid +* Replace YOURPASSWD with your AP password + +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 + +Connect a TTL UART to the UART3 on P8 header (unpopulated), insert the microSD card and +plug in a USB-C cable to the OTG or HOST connector to boot the system. diff --git a/board/mangopi/mq1rdw2/rootfs_overlay/boot/extlinux/extlinux.conf b/board/mangopi/mq1rdw2/rootfs_overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..c190ff76 --- /dev/null +++ b/board/mangopi/mq1rdw2/rootfs_overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +label MANGOPI-MQ1RDW2 + kernel /boot/zImage + devicetree /boot/sun8i-t113s-mangopi-mq-r-t113.dtb + append console=ttyS3,115200 root=/dev/mmcblk0p1 rootwait panic=10 ${extra} diff --git a/board/mangopi/mq1rdw2/rootfs_overlay/etc/network/interfaces b/board/mangopi/mq1rdw2/rootfs_overlay/etc/network/interfaces new file mode 100644 index 00000000..89e7d74a --- /dev/null +++ b/board/mangopi/mq1rdw2/rootfs_overlay/etc/network/interfaces @@ -0,0 +1,6 @@ +auto lo +iface lo inet loopback + +auto wlan0 +iface wlan0 inet dhcp +wpa-conf /etc/wpa_supplicant.conf diff --git a/board/mangopi/mq1rdw2/rootfs_overlay/etc/wpa_supplicant.conf b/board/mangopi/mq1rdw2/rootfs_overlay/etc/wpa_supplicant.conf new file mode 100644 index 00000000..b43292b0 --- /dev/null +++ b/board/mangopi/mq1rdw2/rootfs_overlay/etc/wpa_supplicant.conf @@ -0,0 +1,8 @@ +ap_scan=1 + +network={ + ssid="YOURSSID" + scan_ssid=1 + key_mgmt=WPA-PSK + psk="YOURPASSWD" +} diff --git a/board/mender/x86_64/genimage-efi.cfg b/board/mender/x86_64/genimage-efi.cfg new file mode 100644 index 00000000..9c2723d8 --- /dev/null +++ b/board/mender/x86_64/genimage-efi.cfg @@ -0,0 +1,43 @@ +image efi-part.vfat { + vfat { + file EFI { + image = "efi-part/EFI" + } + file grub-mender-grubenv { + image = "efi-part/grub-mender-grubenv" + } + file bzImage { + image = "bzImage" + } + } + + size = 16M +} + +image disk.img { + hdimage { + partition-table-type = "gpt" + } + + partition boot { + partition-type-uuid = U + offset = 32K + image = "efi-part.vfat" + bootable = true + } + + partition roota { + partition-type-uuid = 4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709 + image = "rootfs.ext2" + } + + partition rootb { + partition-type-uuid = 4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709 + image = "rootfs.ext2" + } + + partition data { + partition-type-uuid = L + image = "data-part.ext4" + } +} diff --git a/board/mender/x86_64/linux.config b/board/mender/x86_64/linux.config new file mode 100644 index 00000000..f17fc18e --- /dev/null +++ b/board/mender/x86_64/linux.config @@ -0,0 +1,64 @@ +CONFIG_SYSVIPC=y +CONFIG_SMP=y +CONFIG_HYPERVISOR_GUEST=y +CONFIG_PARAVIRT=y +CONFIG_EFI=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_NETFILTER=y +CONFIG_IP_NF_IPTABLES=y +CONFIG_IP_NF_FILTER=y +CONFIG_CFG80211=m +CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211=m +CONFIG_PCI=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_VIRTIO_BLK=y +CONFIG_BLK_DEV_SD=y +CONFIG_SCSI_VIRTIO=y +CONFIG_ATA=y +CONFIG_NETDEVICES=y +CONFIG_VIRTIO_NET=y +CONFIG_ATH9K=m +CONFIG_ATH9K_HTC=m +CONFIG_CARL9170=m +CONFIG_ATH10K=m +CONFIG_RT2X00=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT3573=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +# CONFIG_RTL_CARDS is not set +CONFIG_RTL8XXXU=m +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_DRM=y +CONFIG_DRM_VIRTIO_GPU=y +CONFIG_FB_VESA=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_STORAGE=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_INPUT=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_EXT4_FS=y +CONFIG_FUSE_FS=y +CONFIG_VFAT_FS=y +CONFIG_SQUASHFS=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ISO8859_1=y +CONFIG_UNWINDER_FRAME_POINTER=y diff --git a/board/mender/x86_64/mender_grubenv_defines b/board/mender/x86_64/mender_grubenv_defines new file mode 100644 index 00000000..77f68fe6 --- /dev/null +++ b/board/mender/x86_64/mender_grubenv_defines @@ -0,0 +1,25 @@ +################################################################################ +# Mandatory +################################################################################ +# Warning: This file is an example and should be customized to fit your needs! + +# Partition index of root filesystem A +mender_rootfsa_part=2 + +# Partition index of root filesystem B +mender_rootfsb_part=3 + +# Device file corresponding to the root filesystem partitions, without index. +mender_kernel_root_base=/dev/vda + +# Name of the storage device containing root filesystem partitions in GRUB +# format. +mender_grub_storage_device=hd0 + +# Type of kernel (bzImage or zImage) +kernel_imagetype=bzImage + +# Type of initrd image. +# Note: An initrd image is not strictly necessary, and the system will boot and +# update without a initrd image. +# initrd_imagetype=initrd.img diff --git a/board/mender/x86_64/overlay/etc/fstab b/board/mender/x86_64/overlay/etc/fstab new file mode 100644 index 00000000..45a7ba02 --- /dev/null +++ b/board/mender/x86_64/overlay/etc/fstab @@ -0,0 +1,7 @@ +# +/dev/root / ext4 rw,noauto 0 1 +/dev/vda1 /boot vfat defaults 0 0 +/dev/vda4 /var/lib/mender ext4 rw,relatime 0 0 +proc /proc proc defaults 0 0 +devpts /dev/pts devpts defaults,gid=5,mode=620,ptmxmode=0666 0 0 +sysfs /sys sysfs defaults 0 0 diff --git a/board/mender/x86_64/overlay/etc/mender/mender.conf b/board/mender/x86_64/overlay/etc/mender/mender.conf new file mode 100644 index 00000000..5f423fb2 --- /dev/null +++ b/board/mender/x86_64/overlay/etc/mender/mender.conf @@ -0,0 +1,11 @@ +{ + "InventoryPollIntervalSeconds": 1800, + "UpdatePollIntervalSeconds": 1800, + "RetryPollIntervalSeconds": 300, + "RootfsPartA": "/dev/vda2", + "RootfsPartB": "/dev/vda3", + "ServerCertificate": "/etc/mender/server.crt", + "ServerURL": "https://docker.mender.io", + "TenantToken": "dummy", + "DeviceTypeFile": "/etc/mender/device_type" +} diff --git a/board/mender/x86_64/post-build.sh b/board/mender/x86_64/post-build.sh new file mode 100755 index 00000000..23d1120d --- /dev/null +++ b/board/mender/x86_64/post-build.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash +set -e +DEVICE_TYPE="buildroot-x86_64" +ARTIFACT_NAME="1.0" + +function parse_args { + local o O opts + o='a:o:d:' + O='artifact-name:,data-part-size:,device-type:' + opts="$(getopt -o "${o}" -l "${O}" -- "${@}")" + eval set -- "${opts}" + while [ ${#} -gt 0 ]; do + case "${1}" in + (-o|--data-part-size) + # Ignored to have same options as other scripts + shift 2 + ;; + (-d|--device-type) + DEVICE_TYPE="${2}"; shift 2 + ;; + (-a|--artifact-name) + ARTIFACT_NAME="${2}"; shift 2 + ;; + (--) + shift; break + ;; + esac + done +} + + # Create a persistent directory to mount the data partition at. +function mender_fixup { + pushd "${TARGET_DIR}" + if [[ -L var/lib/mender ]]; then + rm var/lib/mender + mkdir -p var/lib/mender + fi + + # The common paradigm is to have the persistent data volume at /data for mender. + if [[ ! -L data ]]; then + ln -s var/lib/mender data + fi + + popd +} + +function main { + parse_args "${@}" + mender_fixup + echo "device_type=${DEVICE_TYPE}" > "${TARGET_DIR}/etc/mender/device_type" + echo "artifact_name=${ARTIFACT_NAME}" > "${TARGET_DIR}/etc/mender/artifact_info" +} + +main "${@}" diff --git a/board/mender/x86_64/post-image-efi.sh b/board/mender/x86_64/post-image-efi.sh new file mode 100755 index 00000000..97b9e06d --- /dev/null +++ b/board/mender/x86_64/post-image-efi.sh @@ -0,0 +1,72 @@ +#!/usr/bin/env bash +set -e +BOARD_DIR="$(realpath "$(dirname "$0")")" +DATA_PART_SIZE="32M" +DEVICE_TYPE="buildroot-x86_64" +ARTIFACT_NAME="1.0" + + +# Parse arguments. +function parse_args { + local o O opts + o='a:o:d:' + O='artifact-name:,data-part-size:,device-type:' + opts="$(getopt -o "${o}" -l "${O}" -- "${@}")" + eval set -- "${opts}" + while [ ${#} -gt 0 ]; do + case "${1}" in + (-o|--data-part-size) + DATA_PART_SIZE="${2}"; shift 2 + ;; + (-d|--device-type) + DEVICE_TYPE="${2}"; shift 2 + ;; + (-a|--artifact-name) + ARTIFACT_NAME="${2}"; shift 2 + ;; + (--) + shift; break + ;; + esac + done +} + +# Create the data partition +function make_data_partition { + "${HOST_DIR}/sbin/mkfs.ext4" \ + -F \ + -r 1 \ + -N 0 \ + -m 5 \ + -L "data" \ + "${BINARIES_DIR}/data-part.ext4" "${DATA_PART_SIZE}" +} + + +# Create a mender image. +function generate_mender_image { + echo "Creating ${BINARIES_DIR}/${DEVICE_TYPE}-${ARTIFACT_NAME}.mender" + "${HOST_DIR}/bin/mender-artifact" \ + --compression lzma \ + write rootfs-image \ + -t "${DEVICE_TYPE}" \ + -n "${BR2_VERSION}" \ + -f "${BINARIES_DIR}/rootfs.ext2" \ + -o "${BINARIES_DIR}/${DEVICE_TYPE}-${ARTIFACT_NAME}.mender" +} + + +function generate_image { + sh support/scripts/genimage.sh -c "${BOARD_DIR}/genimage-efi.cfg" +} + +# Main function. +function main { + parse_args "${@}" + make_data_partition + generate_image + generate_mender_image + exit $? +} + +main "${@}" diff --git a/board/mender/x86_64/readme.txt b/board/mender/x86_64/readme.txt new file mode 100644 index 00000000..a9755ec5 --- /dev/null +++ b/board/mender/x86_64/readme.txt @@ -0,0 +1,69 @@ +Mender UEFI PC sample config +===================== + +1. Build + + $ make mender_x86_64_efi_defconfig + + Add any additional packages required. Update the files in board/mender/x86_64 + and change /dev/vda to what is relevant for your platform: typically + /dev/mmcblk0p for eMMC and /dev/sda for USB or SATA. + + $ make + +2. Write the Pendrive + + The build process will create a Pendrive image called disk.img in + output/images. + + Write the image to a pendrive: + + $ dd if=output/images/disk.img of=/dev/${pendrive}; sync + + Once the process is complete, insert it into the target PC and boot. + + Remember that if said PC has another boot device you might need to + select this alternative for it to boot. + + You might need to disable Secure Boot from the setup as well. + +3. Enjoy + +Emulation in qemu +======================== + +Run the emulation with: + +qemu-system-x86_64 \ + -M pc \ + -drive file=output/images/disk.img,if=virtio,format=raw \ + -net nic,model=virtio \ + -net user \ + -serial stdio \ + -bios + +Note that needs to point to a valid x86_64 UEFI +firmware image for qemu. It may be provided by your distribution as an +edk2 or OVMF package, in a path such as /usr/share/edk2/ovmf/OVMF_CODE.fd. + +Optional arguments: + - -enable-kvm to speed up qemu. This requires a loaded kvm module on the host + system. + - Add -smp N to emulate an SMP system with N CPUs. + +The login prompt will appear in the serial window. + +Tested with QEMU 4.1.1 on Fedora 31 + +Creating a mender-artifact +======================== + +The mender artifact is created in output/images/buildroot-x86_64-1.0.mender + +You may wish to change --artifact-name=1.0 to a name that best suits your +particular needs, as this option changes the mender artifact name. + +Using mender +======================== +Please read the mender documentation at: +https://docs.mender.io/2.2/getting-started diff --git a/board/microchip/mpfs_icicle/README.txt b/board/microchip/mpfs_icicle/README.txt new file mode 100644 index 00000000..de20ecc4 --- /dev/null +++ b/board/microchip/mpfs_icicle/README.txt @@ -0,0 +1,62 @@ +Microchip PolarFire SoC Icicle Kit +================================== + +This file describes how to use the pre-defined Buildroot +configuration for Microchip's PolarFire SoC Icicle Kit. + +Further information about the PolarFire SoC Icicle Kit can be found +at https://github.com/polarfire-soc/polarfire-soc-documentation + +Building +======== + +Configure Buildroot using the default board configuration: + + '$ make microchip_mpfs_icicle_defconfig' + +Customise the build as necessary: + + '$ make menuconfig' + +Start the build: + + '$ make' + +Result of the build +=================== + +Once the build has finished you will have the following files: + + output/images/ + +-- boot.scr + +-- boot.vfat + +-- Image + +-- mpfs_icicle.itb + +-- mpfs_icicle.its + +-- mpfs-icicle-kit.dtb + +-- payload.bin + +-- rootfs.ext2 + +-- rootfs.ext4 + +-- rootfs.tar + +-- sdcard.img + +-- u-boot.bin + + +Creating a bootable SD card with genimage +========================================= + +By default Buildroot builds a SD card image for you. The first partition +of this image contains a U-Boot binary, embedded in a Hart Software +Services (HSS) payload. The second partition contains a FAT filesystem +with a U-Boot env and an ITB file containing the kernel and the device +tree. The third partition contains the file system. This image can be +written directly to the eMMC or an SD card. All you need to do is dd the +image to the eMMC or your SD card, which can be done with the following +command on your development host: + + '$ sudo dd if=output/images/sdcard.img of=/dev/sdb bs=1M' + +For instructions on how to transfer the image to the eMMC/SD, please refer to +the "Programming the Linux image" section of our guide on updating +PolarFire SoC dev kits: +https://github.com/polarfire-soc/polarfire-soc-documentation/blob/master/reference-designs-fpga-and-development-kits/updating-mpfs-kit.md. diff --git a/board/microchip/mpfs_icicle/config.yaml b/board/microchip/mpfs_icicle/config.yaml new file mode 100644 index 00000000..5fccdfd3 --- /dev/null +++ b/board/microchip/mpfs_icicle/config.yaml @@ -0,0 +1,28 @@ +# +# HSS Payload Generator - buildroot configuration file +# + +# First, we can optionally set a name for our image, otherwise one will be created dynamically +set-name: 'PolarFire-SoC-HSS::U-Boot' + +# +# Next, we'll define the entry point addresses for each hart, as follows: +# +hart-entry-points: {u54_1: '0x80200000', u54_2: '0x80200000', u54_3: '0x80200000', u54_4: '0x80200000'} +# +# Finally, we'll define a payloads (source binary file) that will be placed at certain regions in memory +# The payload section is defined with the keyword payloads, and then a number of individual +# payload descriptors. +# +# Each payload has a name (path to its ELF/bin file), an owner-hart, and optionally 1-3 secondary-harts. +# +# Additionally, it has a privilege mode in which it will start execution. +# * Valid privilege modes are PRV_M, PRV_S and PRV_U. +# +# +# In this case, the only payload is the u-boot s-mode binary. +# +# Case only matters for the ELF path names, not the keywords. +# +payloads: + u-boot.bin: {exec-addr: '0x80200000', owner-hart: u54_1, secondary-hart: u54_2, secondary-hart: u54_3, secondary-hart: u54_4, priv-mode: prv_s} diff --git a/board/microchip/mpfs_icicle/genimage.cfg b/board/microchip/mpfs_icicle/genimage.cfg new file mode 100644 index 00000000..9282c9ce --- /dev/null +++ b/board/microchip/mpfs_icicle/genimage.cfg @@ -0,0 +1,34 @@ +# Image for eMMC or SDCard boot on the Microchip PolarFire SOC Icicle Board +# +image boot.vfat { + vfat { + files = { + "mpfs_icicle.itb", + } + + file boot.scr { + image = "boot.scr" + } + } + size = 60M +} + +image sdcard.img { + hdimage { + partition-table-type = "gpt" + } + + partition uboot { + partition-type-uuid = 21686148-6449-6E6F-744E-656564454649 + image = "payload.bin" + } + + partition kernel { + bootable = "true" + image = "boot.vfat" + } + + partition root { + image = "rootfs.ext4" + } +} diff --git a/board/microchip/mpfs_icicle/linux.fragment b/board/microchip/mpfs_icicle/linux.fragment new file mode 100644 index 00000000..0cecddb6 --- /dev/null +++ b/board/microchip/mpfs_icicle/linux.fragment @@ -0,0 +1 @@ +CONFIG_POLARFIRE_SOC_DMA_NONCOHERENT=y diff --git a/board/microchip/mpfs_icicle/mpfs_icicle.its b/board/microchip/mpfs_icicle/mpfs_icicle.its new file mode 100644 index 00000000..a62b079f --- /dev/null +++ b/board/microchip/mpfs_icicle/mpfs_icicle.its @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Flattened Image Tree file for Icicle Kit + * + */ + +/dts-v1/; + +/ { + description = "U-Boot fitImage for the MPFS"; + address-cells = <1>; + + images { + kernel { + description = "Linux kernel"; + data = /incbin/("./Image"); + type = "kernel"; + arch = "riscv"; + os = "linux"; + compression = "none"; + load = <0x80200000>; + entry = <0x80200000>; + hash-1 { + algo = "sha256"; + }; + }; + base_fdt { + description = "Flattened Device Tree blob"; + data = /incbin/("./mpfs-icicle-kit.dtb"); + type = "flat_dt"; + arch = "riscv"; + compression = "none"; + load = <0x8a000000>; + hash-1 { + algo = "sha256"; + }; + }; + }; + + configurations { + default = "kernel_dtb"; + kernel_dtb { + description = "1 Linux kernel, FDT blob"; + kernel = "kernel"; + fdt = "base_fdt"; + }; + + base_dtb { + description = "Base FDT blob for MPFS Icicle board"; + fdt = "base_fdt"; + }; + }; +}; diff --git a/board/microchip/mpfs_icicle/patches/linux-headers/linux-headers.hash b/board/microchip/mpfs_icicle/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/microchip/mpfs_icicle/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/microchip/mpfs_icicle/patches/linux/linux.hash b/board/microchip/mpfs_icicle/patches/linux/linux.hash new file mode 100644 index 00000000..416a8b15 --- /dev/null +++ b/board/microchip/mpfs_icicle/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 dcb7b41fd363729675c34545fcb514d5a94dbb3714ee10f527a26ca7716c2579 linux-linux4microchip+fpga-2024.06.tar.gz diff --git a/board/microchip/mpfs_icicle/patches/uboot/uboot.hash b/board/microchip/mpfs_icicle/patches/uboot/uboot.hash new file mode 100644 index 00000000..2628d4b4 --- /dev/null +++ b/board/microchip/mpfs_icicle/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 d461c45a9c5acd019776cdcf8ab2b571315282a880dd6580431f7dd5bfac3889 uboot-linux4microchip+fpga-2024.06.tar.gz diff --git a/board/microchip/mpfs_icicle/post-image.sh b/board/microchip/mpfs_icicle/post-image.sh new file mode 100755 index 00000000..596bb21d --- /dev/null +++ b/board/microchip/mpfs_icicle/post-image.sh @@ -0,0 +1,13 @@ +#!/bin/bash +set -e + +HSS_PAYLOAD_GENERATOR="${HOST_DIR}"/bin/hss-payload-generator +MKIMAGE="${HOST_DIR}"/bin/mkimage +BOARD_DIR="$(pwd)"/"${0%/*}" + +pushd "${BINARIES_DIR}" +"${HSS_PAYLOAD_GENERATOR}" -c "${BOARD_DIR}"/config.yaml payload.bin +cp "${BOARD_DIR}"/mpfs_icicle.its "${BINARIES_DIR}"/mpfs_icicle.its +"${MKIMAGE}" -f mpfs_icicle.its mpfs_icicle.itb +popd +support/scripts/genimage.sh -c "${BOARD_DIR}"/genimage.cfg diff --git a/board/microchip/mpfs_icicle/uboot-env.txt b/board/microchip/mpfs_icicle/uboot-env.txt new file mode 100644 index 00000000..8a655085 --- /dev/null +++ b/board/microchip/mpfs_icicle/uboot-env.txt @@ -0,0 +1,16 @@ +# this assumes ${scriptaddr} is already set!! + +# Try to boot a fitImage from eMMC/SD + +setenv fdt_high 0xffffffffffffffff +setenv initrd_high 0xffffffffffffffff + +load mmc 0:${distro_bootpart} ${scriptaddr} mpfs_icicle.itb; +bootm start ${scriptaddr}#kernel_dtb; +bootm loados ${scriptaddr}; +# Try to load a ramdisk if available inside fitImage +bootm ramdisk; +bootm prep; +fdt set /soc/ethernet@20112000 mac-address ${icicle_mac_addr0}; +fdt set /soc/ethernet@20110000 mac-address ${icicle_mac_addr1}; +bootm go; diff --git a/board/microchip/mpfs_icicle/uboot-fragment-rootfs.config b/board/microchip/mpfs_icicle/uboot-fragment-rootfs.config new file mode 100644 index 00000000..e2a5eb94 --- /dev/null +++ b/board/microchip/mpfs_icicle/uboot-fragment-rootfs.config @@ -0,0 +1,3 @@ +CONFIG_USE_BOOTARGS=y +CONFIG_BOOTARGS="root=/dev/mmcblk0p3 rootwait uio_pdrv_genirq.of_id=generic-uio" +CONFIG_MPFS_PRIORITISE_QSPI_BOOT=n diff --git a/board/microchip/sam9x60ek_mmc/genimage.cfg b/board/microchip/sam9x60ek_mmc/genimage.cfg new file mode 100644 index 00000000..629caf3e --- /dev/null +++ b/board/microchip/sam9x60ek_mmc/genimage.cfg @@ -0,0 +1,32 @@ +# Image for SD card boot on Microchip SAM9X60-EK +# +image boot.vfat { + vfat { + files = { + "zImage", + "at91-sam9x60ek.dtb", + "boot.bin", + "u-boot.bin" + } + } + + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 1M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/microchip/sama5d2_icp/genimage.cfg b/board/microchip/sama5d2_icp/genimage.cfg new file mode 100644 index 00000000..eecb2ef1 --- /dev/null +++ b/board/microchip/sama5d2_icp/genimage.cfg @@ -0,0 +1,32 @@ +# Image for SD card boot on Microchip SAMA5D2 ICP (Industrial Connectivity Platform) +# +image boot.vfat { + vfat { + files = { + "zImage", + "at91-sama5d2_icp.dtb", + "boot.bin", + "u-boot.bin" + } + } + + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 1M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/microchip/sama7g5ek/genimage.cfg b/board/microchip/sama7g5ek/genimage.cfg new file mode 100644 index 00000000..ade29e4b --- /dev/null +++ b/board/microchip/sama7g5ek/genimage.cfg @@ -0,0 +1,31 @@ +# Image for SD card boot on Microchip SAMA7G5EK (sama7g5 evaluation kit) +# +image boot.vfat { + vfat { + files = { + "zImage", + "at91-sama7g5ek.dtb", + "boot.bin", + "u-boot.bin" + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 1M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/minnowboard/genimage.cfg b/board/minnowboard/genimage.cfg new file mode 100644 index 00000000..b169d1d0 --- /dev/null +++ b/board/minnowboard/genimage.cfg @@ -0,0 +1,33 @@ +# Create an image of the efi partition +image efi-part.vfat { + vfat { + file EFI { + image = "efi-part/EFI" + } + file bzImage { + image = "bzImage" + } + } + + size = 10M +} + +# Create the sdcard image, pulling in +# * the image created by buildroot +# * the efi-partition created above +image sdcard.img { + hdimage { + partition-table-type = "gpt" + } + + partition boot { + partition-type-uuid = U + image = "efi-part.vfat" + } + + partition rootfs { + partition-type-uuid = L + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/minnowboard/grub.cfg b/board/minnowboard/grub.cfg new file mode 100644 index 00000000..1f75f4d7 --- /dev/null +++ b/board/minnowboard/grub.cfg @@ -0,0 +1,6 @@ +set default="0" +set timeout="5" + +menuentry "Buildroot" { + linux /bzImage root=PARTLABEL=rootfs rootwait console=tty0 console=ttyS0,115200 net.ifnames=0 +} diff --git a/board/minnowboard/linux.config b/board/minnowboard/linux.config new file mode 100644 index 00000000..928e353c --- /dev/null +++ b/board/minnowboard/linux.config @@ -0,0 +1,61 @@ +CONFIG_SYSVIPC=y +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_X86_INTEL_LPSS=y +CONFIG_MATOM=y +CONFIG_EFI=y +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +CONFIG_X86_INTEL_PSTATE=y +CONFIG_X86_ACPI_CPUFREQ=y +CONFIG_INTEL_IDLE=y +CONFIG_IA32_EMULATION=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_PCI=y +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_SG=y +CONFIG_ATA=y +CONFIG_SATA_AHCI=y +CONFIG_ATA_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_R8169=y +CONFIG_IGB=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_DW=y +CONFIG_I2C_I801=y +CONFIG_I2C_DESIGNWARE_PLATFORM=y +CONFIG_I2C_DESIGNWARE_PCI=y +CONFIG_SPI=y +CONFIG_SPI_DESIGNWARE=y +CONFIG_SPI_PXA2XX=y +CONFIG_PINCTRL_BAYTRAIL=y +CONFIG_GPIOLIB=y +CONFIG_GPIO_SYSFS=y +CONFIG_AGP=y +CONFIG_DRM=y +CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_I915=y +CONFIG_SOUND=y +CONFIG_SND=y +# CONFIG_SND_DRIVERS is not set +CONFIG_SND_HDA_INTEL=y +CONFIG_SND_HDA_CODEC_HDMI=y +# CONFIG_SND_SPI is not set +# CONFIG_SND_USB is not set +CONFIG_USB=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_STORAGE=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_MMC=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PCI=y +CONFIG_MMC_SDHCI_ACPI=y +CONFIG_PWM=y +CONFIG_EXT4_FS=y +CONFIG_UNWINDER_FRAME_POINTER=y diff --git a/board/minnowboard/post-build.sh b/board/minnowboard/post-build.sh new file mode 100755 index 00000000..24b8c053 --- /dev/null +++ b/board/minnowboard/post-build.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +cp -v board/minnowboard/grub.cfg ${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg + +# Add a console on tty1 +if [ -e ${TARGET_DIR}/etc/inittab ]; then + grep -qE '^tty1::' ${TARGET_DIR}/etc/inittab || \ + sed -i '/GENERIC_SERIAL/a\ +tty1::respawn:/sbin/getty -L tty1 0 vt100 # HDMI console' ${TARGET_DIR}/etc/inittab +fi diff --git a/board/minnowboard/readme.txt b/board/minnowboard/readme.txt new file mode 100644 index 00000000..fdbb81e3 --- /dev/null +++ b/board/minnowboard/readme.txt @@ -0,0 +1,28 @@ +How to get started with the MinnowBoard MAX +=========================================== + +1. Build + + Apply the defconfig: + + $ make minnowboard_max_defconfig + + Add any additional packages required and build: + + $ make + +2. Write the SD card + + The build process will create a SD card image in output/images. + Write the image to an mSD card, insert into the MinnowBoard MAX + and power the board on. + + $ dd if=output/images/sdcard.img of=/dev/mmcblk0; sync + + The system starts two consoles: one on the serial port + and one on HDMI. + +3. Enjoy + +Additional information about this board can be found at +http://www.minnowboard.org/. diff --git a/board/nexbox/a95x/boot.txt b/board/nexbox/a95x/boot.txt new file mode 100644 index 00000000..eef1c8ca --- /dev/null +++ b/board/nexbox/a95x/boot.txt @@ -0,0 +1,11 @@ +setenv bootargs console=ttyAML0,115200 earlyprintk root=PARTUUID=feedc0de-02 rootwait + +fatload mmc 0:1 0x01080000 uImage + +if itest.s "${aml_dt}" == "gxl_p212_2g"; then + fatload mmc 0:1 $dtb_mem_addr meson-gxl-s905x-nexbox-a95x.dtb +else + fatload mmc 0:1 $dtb_mem_addr meson-gxbb-nexbox-a95x.dtb +fi + +bootm 0x1080000 - $dtb_mem_addr diff --git a/board/nexbox/a95x/genimage.cfg b/board/nexbox/a95x/genimage.cfg new file mode 100644 index 00000000..81bcc82c --- /dev/null +++ b/board/nexbox/a95x/genimage.cfg @@ -0,0 +1,31 @@ +image boot.vfat { + vfat { + files = { + "uImage", + "meson-gxbb-nexbox-a95x.dtb", + "meson-gxl-s905x-nexbox-a95x.dtb", + "boot.scr" + } + } + + size = 32M +} + +image sdcard.img { + hdimage { + # for root=PARTUUID support + disk-signature = 0xfeedc0de + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/nexbox/a95x/post-build.sh b/board/nexbox/a95x/post-build.sh new file mode 100755 index 00000000..f8706f2d --- /dev/null +++ b/board/nexbox/a95x/post-build.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +MKIMAGE=$HOST_DIR/bin/mkimage + +$MKIMAGE -C none -A arm64 -T script -d $BOARD_DIR/boot.txt $BINARIES_DIR/boot.scr + +# vendor u-boot uses uImage +if [ -e $BINARIES_DIR/Image ]; then + $MKIMAGE -A arm64 -O linux -T kernel -C none -a 0x1080000 -e 0x1080000 \ + -n linux -d $BINARIES_DIR/Image $BINARIES_DIR/uImage +fi diff --git a/board/nexbox/a95x/post-image.sh b/board/nexbox/a95x/post-image.sh new file mode 100755 index 00000000..359b4c9e --- /dev/null +++ b/board/nexbox/a95x/post-image.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/board/nexbox/a95x/readme.txt b/board/nexbox/a95x/readme.txt new file mode 100644 index 00000000..e08b4e4e --- /dev/null +++ b/board/nexbox/a95x/readme.txt @@ -0,0 +1,48 @@ +Nexbox A95X + +Intro +===== + +Nexbox A95X is a low cost Android STB based around an Amlogic s905(x) SoC +(quad A53), 8/16GB eMMC and 1/2GB RAM. To use this defconfig, wires to the +internal UART solder pads must be added. See the linux-meson page for +details: + +http://linux-meson.com/doku.php?id=nexbox_a95x_s905 + +Both the s905 (gxbb) and s905x (gxl) variant is supported. + +This default configuration will allow you to start experimenting with the +buildroot environment for the A95X. With the current configuration it will +bring-up the board from microSD, and allow access through the serial +console. + +How to build it +=============== + +Configure Buildroot: + + $ make nexbox_a95x_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto a microSD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +How to boot +=========== + +Insert microSD card and connect serial cable. Power board and stop +U-Boot by pressing any key. Boot the system by typing: + +fatload mmc 0:1 0x1070000 boot.scr +autoscr 0x1070000 diff --git a/board/nezha/genimage.cfg b/board/nezha/genimage.cfg new file mode 100644 index 00000000..836666ff --- /dev/null +++ b/board/nezha/genimage.cfg @@ -0,0 +1,19 @@ +# Minimal SD card image for the Allwinner Nezha + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = false + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + bootable = "true" + offset = 1M + } +} diff --git a/board/nezha/linux.fragment b/board/nezha/linux.fragment new file mode 100644 index 00000000..4b101eaa --- /dev/null +++ b/board/nezha/linux.fragment @@ -0,0 +1,2 @@ +CONFIG_USB_GADGET=y +CONFIG_USB_MUSB_DUAL_ROLE=y diff --git a/board/nezha/overlay/boot/extlinux/extlinux.conf b/board/nezha/overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..91b22986 --- /dev/null +++ b/board/nezha/overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +label linux + kernel /boot/Image + # use devicetree from u-boot + append console=ttyS0,115200 root=/dev/mmcblk0p1 ro rootwait diff --git a/board/nezha/patches/linux-headers/linux-headers.hash b/board/nezha/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/nezha/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/nezha/patches/linux/linux.hash b/board/nezha/patches/linux/linux.hash new file mode 100644 index 00000000..899adefd --- /dev/null +++ b/board/nezha/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 23e3e7b56407250f5411bdab95763d0bc4e3a19dfa431d951df7eacabd61a2f4 linux-6.6.22.tar.xz diff --git a/board/nezha/patches/opensbi/opensbi.hash b/board/nezha/patches/opensbi/opensbi.hash new file mode 100644 index 00000000..bc4058ab --- /dev/null +++ b/board/nezha/patches/opensbi/opensbi.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 319b62a4186fbce9b81a0c5f0ec9f003a10c808397a72138bc9745d9b87b1eb1 opensbi-1.4.tar.gz diff --git a/board/nezha/patches/uboot/uboot.hash b/board/nezha/patches/uboot/uboot.hash new file mode 100644 index 00000000..7d051859 --- /dev/null +++ b/board/nezha/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 36db7c20b179f03aa29009565c6b34380d5629fd5c57ed110244594d9930dfed uboot-2e89b706f5c956a70c989cd31665f1429e9a0b48.tar.gz diff --git a/board/nezha/readme.txt b/board/nezha/readme.txt new file mode 100644 index 00000000..fd4c6707 --- /dev/null +++ b/board/nezha/readme.txt @@ -0,0 +1,24 @@ +Allwinner Nezha +=============== + +Nezha is is a low-cost RISC-V 64-bit based platform, powered by an +Allwinner D1 SoC. + +How to build +============ + +$ make nezha_defconfig +$ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Connect a TTL UART to the debug connector, insert the microSD card and +plug in a USB-C cable to the PWR connector to boot the system. diff --git a/board/octavo/osd32mp1-brk/genimage.cfg b/board/octavo/osd32mp1-brk/genimage.cfg new file mode 100644 index 00000000..40bde81e --- /dev/null +++ b/board/octavo/osd32mp1-brk/genimage.cfg @@ -0,0 +1,23 @@ +image sdcard.img { + hdimage { + partition-table-type = "gpt" + } + + partition fsbl1 { + image = "tf-a-stm32mp157c-osd32mp1-brk.stm32" + } + + partition fsbl2 { + image = "tf-a-stm32mp157c-osd32mp1-brk.stm32" + } + + partition fip { + image = "fip.bin" + size = 2M + } + + partition rootfs { + image = "rootfs.ext4" + bootable = "yes" + } +} diff --git a/board/octavo/osd32mp1-brk/linux-dts/stm32mp157c-osd32mp1-brk.dts b/board/octavo/osd32mp1-brk/linux-dts/stm32mp157c-osd32mp1-brk.dts new file mode 100644 index 00000000..d5f2793f --- /dev/null +++ b/board/octavo/osd32mp1-brk/linux-dts/stm32mp157c-osd32mp1-brk.dts @@ -0,0 +1,1120 @@ +/* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */ +/* + * Copyright (C) Octavo Systems LLC 2020 - All Rights Reserved + */ + +/* For more information on Device Tree configuration, please refer to + * https://wiki.st.com/stm32mpu/wiki/Category:Device_tree_configuration + */ + +/dts-v1/; +#include +#include "stm32mp157.dtsi" +#include "stm32mp15xc.dtsi" +#include "stm32mp15xxac-pinctrl.dtsi" +#include "stm32mp15-m4-srm.dtsi" +#include +#include +#include + +/ { + model = "Octavo OSD32MP1 BRK board"; + compatible = "st,stm32mp157c-osd32mp1-brk", "st,stm32mp157"; + + memory@c0000000 { + device_type = "memory"; + reg = <0xc0000000 0x20000000>; + }; + + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + mcuram2:mcuram2@10000000{ + compatible = "shared-dma-pool"; + reg = <0x10000000 0x40000>; + no-map; + }; + + vdev0vring0:vdev0vring0@10040000{ + compatible = "shared-dma-pool"; + reg = <0x10040000 0x1000>; + no-map; + }; + + vdev0vring1:vdev0vring1@10041000{ + compatible = "shared-dma-pool"; + reg = <0x10041000 0x1000>; + no-map; + }; + + vdev0buffer:vdev0buffer@10042000{ + compatible = "shared-dma-pool"; + reg = <0x10042000 0x4000>; + no-map; + }; + + mcuram:mcuram@30000000{ + compatible = "shared-dma-pool"; + reg = <0x30000000 0x40000>; + no-map; + }; + + retram:retram@38000000{ + compatible = "shared-dma-pool"; + reg = <0x38000000 0x10000>; + no-map; + }; + + gpu_reserved:gpu@d4000000{ + reg = <0xd4000000 0x4000000>; + no-map; + }; + }; + + led{ + compatible = "gpio-leds"; + + red1{ + label = "LED1_RED"; + gpios = <&gpioz 6 GPIO_ACTIVE_LOW>; + linux,default-trigger = "heartbeat"; + status = "okay"; + default-state = "off"; + }; + + green1{ + label = "LED1_GRN"; + gpios = <&gpioz 7 GPIO_ACTIVE_LOW>; + status = "okay"; + default-state = "on"; + }; + + red2{ + label = "LED2_RED"; + gpios = <&gpioi 8 GPIO_ACTIVE_LOW>; + status = "okay"; + default-state = "off"; + }; + + green2{ + label = "LED2_GRN"; + gpios = <&gpioi 9 GPIO_ACTIVE_LOW>; + default-state = "off"; + }; + }; + + usb_phy_tuning:usb-phy-tuning{ + st,hs-dc-level = <2>; + st,fs-rftime-tuning; + st,hs-rftime-reduction; + st,hs-current-trim = <15>; + st,hs-impedance-trim = <1>; + st,squelch-level = <3>; + st,hs-rx-offset = <2>; + st,no-lsfs-sc; + }; + + vin:vin{ + compatible = "regulator-fixed"; + regulator-name = "vin"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + regulator-always-on; + }; + + aliases{ + serial0 = &uart4; + serial2 = &usart2; + serial5 = &uart5; + serial7 = &uart7; + serial1 = &uart8; + }; + + chosen{ + stdout-path = "serial0:115200n8"; + }; + +}; /*root*/ + +&pinctrl { + u-boot,dm-pre-reloc; + i2c1_pins_mx: i2c1-0 { + pins { + pinmux = , /* I2C1_SCL */ + ; /* I2C1_SDA */ + bias-disable; + drive-open-drain; + slew-rate = <0>; + }; + }; + + i2c1_pins_sleep_mx: i2c1-1 { + pins { + pinmux = , /* I2C1_SCL */ + ; /* I2C1_SDA */ + }; + }; + + i2c2_pins_mx: i2c2-0 { + pins { + pinmux = , /* I2C2_SCL */ + ; /* I2C2_SDA */ + bias-disable; + drive-open-drain; + slew-rate = <0>; + }; + }; + + i2c2_pins_sleep_mx: i2c2-1 { + pins { + pinmux = , /* I2C2_SCL */ + ; /* I2C2_SDA */ + }; + }; + + i2c5_pins_mx: i2c5-0 { + pins { + pinmux = , /* I2C5_SCL */ + ; /* I2C5_SDA */ + bias-disable; + drive-open-drain; + slew-rate = <0>; + }; + }; + + i2c5_pins_sleep_mx: i2c5-1 { + pins { + pinmux = , /* I2C5_SCL */ + ; /* I2C5_SDA */ + }; + }; + + spi2_pins_mx: spi2-0 { + pins1 { + pinmux = , /* SPI2_SCK */ + ; /* SPI2_MOSI */ + bias-disable; + drive-push-pull; + slew-rate = <1>; + }; + + pins2 { + pinmux = ; /* SPI2_MISO */ + bias-disable; + }; + }; + + spi2_sleep_pins_mx: spi2-sleep-0 { + pins { + pinmux = , /* SPI2_SCK */ + , /* SPI2_MISO */ + ; /* SPI2_MOSI */ + }; + }; + + spi4_pins_mx: spi4-0 { + pins1 { + pinmux = , /* SPI4_SCK */ + ; /* SPI4_MOSI */ + bias-disable; + drive-push-pull; + slew-rate = <1>; + }; + + pins2 { + pinmux = ; /* SPI4_MISO */ + bias-disable; + }; + }; + + spi4_sleep_pins_mx: spi4-sleep-0 { + pins { + pinmux = , /* SPI2_SCK */ + , /* SPI2_MISO */ + ; /* SPI2_MOSI */ + }; + }; + + usart2_pins_mx: usart2-0 { + pins1 { + pinmux = ; /* USART2_TX */ + bias-disable; + drive-push-pull; + slew-rate = <0>; + }; + pins2 { + pinmux = ; /* USART2_RX */ + bias-disable; + }; + }; + + usart2_idle_pins_mx: usart2-idle-0 { + pins1 { + pinmux = ; /* USART2_TX */ + }; + pins2 { + pinmux = ; /* USART2_RX */ + bias-disable; + }; + }; + + usart2_sleep_pins_mx: usart2-sleep-0 { + pins { + pinmux = , /* USART2_TX */ + ; /* USART2_RX */ + }; + }; + + uart5_pins_mx: uart5-0 { + pins1 { + pinmux = ; /* USART5_TX */ + bias-disable; + drive-push-pull; + slew-rate = <0>; + }; + pins2 { + pinmux = ; /* USART5_RX */ + bias-disable; + }; + }; + + uart5_idle_pins_mx: uart5-idle-0 { + pins1 { + pinmux = ; /* USART5_TX */ + }; + pins2 { + pinmux = ; /* USART5_RX */ + bias-disable; + }; + }; + + uart5_sleep_pins_mx: uart5-sleep-0 { + pins { + pinmux = , /* USART5_TX */ + ; /* USART5_RX */ + }; + }; + + uart7_pins_mx: uart7-0 { + pins1 { + pinmux = ; /* USART7_TX */ + bias-disable; + drive-push-pull; + slew-rate = <0>; + }; + pins2 { + pinmux = ; /* USART7_RX */ + bias-disable; + }; + }; + + uart7_idle_pins_mx: uart7-idle-0 { + pins1 { + pinmux = ; /* USART7_TX */ + }; + pins2 { + pinmux = ; /* USART7_RX */ + bias-disable; + }; + }; + + uart7_sleep_pins_mx: uart7-sleep-0 { + pins { + pinmux = , /* USART7_TX */ + ; /* USART7_RX */ + }; + }; + + uart8_pins_mx: uart8-0 { + pins1 { + pinmux = ; /* USART8_TX */ + bias-disable; + drive-push-pull; + slew-rate = <0>; + }; + pins2 { + pinmux = ; /* USART8_RX */ + bias-disable; + }; + }; + + uart8_idle_pins_mx: uart8-idle-0 { + pins1 { + pinmux = ; /* USART8_TX */ + }; + pins2 { + pinmux = ; /* USART8_RX */ + bias-disable; + }; + }; + + uart8_sleep_pins_mx: uart8-sleep-0 { + pins { + pinmux = , /* USART8_TX */ + ; /* USART8_RX */ + }; + }; + + m_can1_pins_mx: m-can1-0 { + pins1 { + pinmux = ; /* CAN1_TX */ + slew-rate = <0>; + drive-push-pull; + bias-disable; + }; + pins2 { + pinmux = ; /* CAN1_RX */ + bias-disable; + }; + }; + + m_can1_sleep_pins_mx: m_can1-sleep@0 { + pins { + pinmux = , /* CAN1_TX */ + ; /* CAN1_RX */ + }; + }; + + pwm1_pins_mx: pwm1-0 { + pins { + pinmux = ; /* TIM1_CH2 */ + bias-pull-down; + drive-push-pull; + slew-rate = <0>; + }; + }; + + pwm1_sleep_pins_mx: pwm1-sleep-0 { + pins { + pinmux = ; /* TIM1_CH1 */ + }; + }; + + pwm3_pins_mx: pwm3-0 { + pins { + pinmux = ; /* TIM3_CH2 */ + bias-pull-down; + drive-push-pull; + slew-rate = <0>; + }; + }; + + pwm3_sleep_pins_mx: pwm3-sleep-0 { + pins { + pinmux = ; /* TIM3_CH2 */ + }; + }; + + pwm4_pins_mx: pwm4-0 { + pins { + pinmux = ; /* TIM4_CH2 */ + bias-pull-down; + drive-push-pull; + slew-rate = <0>; + }; + }; + + pwm4_sleep_pins_mx: pwm4-sleep-0 { + pins { + pinmux = ; /* TIM4_CH2 */ + }; + }; + + pwm8_pins_mx: pwm8-0 { + pins { + pinmux = ; /* TIM8_CH2 */ + bias-pull-down; + drive-push-pull; + slew-rate = <0>; + }; + }; + + pwm8_sleep_pins_mx: pwm8-sleep-0 { + pins { + pinmux = ; /* TIM8_CH2 */ + }; + }; + + + pwm12_pins_mx: pwm12-0 { + pins { + pinmux = ; /* TIM12_CH2 */ + bias-pull-down; + drive-push-pull; + slew-rate = <0>; + }; + }; + + pwm12_sleep_pins_mx: pwm12-sleep-0 { + pins { + pinmux = ; /* TIM12_CH2 */ + }; + }; + + sdmmc1_pins_mx: sdmmc1_mx-0 { + u-boot,dm-pre-reloc; + pins1 { + u-boot,dm-pre-reloc; + pinmux = , /* SDMMC1_D0 */ + , /* SDMMC1_D1 */ + , /* SDMMC1_D2 */ + , /* SDMMC1_D3 */ + ; /* SDMMC1_CMD */ + bias-disable; + drive-push-pull; + slew-rate = <1>; + }; + pins2 { + u-boot,dm-pre-reloc; + pinmux = ; /* SDMMC1_CK */ + bias-disable; + drive-push-pull; + slew-rate = <2>; + }; + }; + + sdmmc1_opendrain_pins_mx: sdmmc1_opendrain_mx-0 { + u-boot,dm-pre-reloc; + pins1 { + u-boot,dm-pre-reloc; + pinmux = , /* SDMMC1_D0 */ + , /* SDMMC1_D1 */ + , /* SDMMC1_D2 */ + ; /* SDMMC1_D3 */ + bias-disable; + drive-push-pull; + slew-rate = <1>; + }; + pins2 { + u-boot,dm-pre-reloc; + pinmux = ; /* SDMMC1_CK */ + bias-disable; + drive-push-pull; + slew-rate = <2>; + }; + pins3 { + u-boot,dm-pre-reloc; + pinmux = ; /* SDMMC1_CMD */ + bias-disable; + drive-open-drain; + slew-rate = <1>; + }; + }; + + sdmmc1_sleep_pins_mx: sdmmc1_sleep_mx-0 { + u-boot,dm-pre-reloc; + pins { + u-boot,dm-pre-reloc; + pinmux = , /* SDMMC1_D0 */ + , /* SDMMC1_D1 */ + , /* SDMMC1_D2 */ + , /* SDMMC1_D3 */ + , /* SDMMC1_CK */ + ; /* SDMMC1_CMD */ + }; + }; + + uart4_pins_mx: uart4_mx-0 { + u-boot,dm-pre-reloc; + pins1 { + u-boot,dm-pre-reloc; + pinmux = ; /* UART4_RX */ + /* pull-up on rx to avoid floating level */ + bias-pull-up; + }; + pins2 { + u-boot,dm-pre-reloc; + pinmux = ; /* UART4_TX */ + bias-disable; + drive-push-pull; + slew-rate = <0>; + }; + }; + + uart4_sleep_pins_mx: uart4_sleep_mx-0 { + u-boot,dm-pre-reloc; + pins { + u-boot,dm-pre-reloc; + pinmux = , /* UART4_RX */ + ; /* UART4_TX */ + }; + }; +}; + +&pinctrl_z { + u-boot,dm-pre-reloc; + + i2c4_pins_z_mx: i2c4_mx-0 { + u-boot,dm-pre-reloc; + pins { + u-boot,dm-pre-reloc; + pinmux = , /* I2C4_SCL */ + ; /* I2C4_SDA */ + bias-disable; + drive-open-drain; + slew-rate = <0>; + }; + }; + + i2c4_sleep_pins_z_mx: i2c4_sleep_mx-0 { + u-boot,dm-pre-reloc; + pins { + u-boot,dm-pre-reloc; + pinmux = , /* I2C4_SCL */ + ; /* I2C4_SDA */ + }; + }; + + spi6_pins_mx: spi6-0 { + pins1 { + pinmux = , /* SPI6_SCK */ + ; /* SPI6_MOSI */ + bias-disable; + drive-push-pull; + slew-rate = <1>; + }; + + pins2 { + pinmux = ; /* SPI6_MISO */ + bias-disable; + }; + }; + + spi6_sleep_pins_mx: spi6-sleep-0 { + pins { + pinmux = , /* SPI6_SCK */ + , /* SPI6_MISO */ + ; /* SPI6_MOSI */ + }; + }; +}; + +&m4_rproc{ + memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>, + <&vdev0vring1>, <&vdev0buffer>; + mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>; + mbox-names = "vq0", "vq1", "shutdown"; + interrupt-parent = <&exti>; + interrupts = <68 1>; + wakeup-source; + status = "okay"; +}; + +&pwr_regulators { + vdd-supply = <&vdd>; + vdd_3v3_usbfs-supply = <&vdd_usb>; +}; + + +&crc1{ + status = "okay"; +}; + +&cryp1{ + u-boot,dm-pre-reloc; + status = "okay"; +}; + +&dma1{ + status = "okay"; + sram = <&dma_pool>; +}; + +&dma2{ + status = "okay"; + sram = <&dma_pool>; +}; + +&dts{ + status = "okay"; +}; + +&gpu{ + status = "okay"; + contiguous-area = <&gpu_reserved>; +}; + +&hash1{ + u-boot,dm-pre-reloc; + status = "okay"; +}; + +&hsem{ + status = "okay"; +}; + +&i2c1 { + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&i2c1_pins_mx>; + pinctrl-1 = <&i2c1_pins_sleep_mx>; + i2c-scl-rising-time-ns = <100>; + i2c-scl-falling-time-ns = <7>; + status = "okay"; + /delete-property/dmas; + /delete-property/dma-names; +}; + +&i2c2 { + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&i2c2_pins_mx>; + pinctrl-1 = <&i2c2_pins_sleep_mx>; + i2c-scl-rising-time-ns = <100>; + i2c-scl-falling-time-ns = <7>; + status = "okay"; + /delete-property/dmas; + /delete-property/dma-names; +}; + +&i2c5 { + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&i2c5_pins_mx>; + pinctrl-1 = <&i2c5_pins_sleep_mx>; + i2c-scl-rising-time-ns = <100>; + i2c-scl-falling-time-ns = <7>; + status = "okay"; + /delete-property/dmas; + /delete-property/dma-names; +}; + +&i2c4{ + u-boot,dm-pre-reloc; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&i2c4_pins_z_mx>; + pinctrl-1 = <&i2c4_sleep_pins_z_mx>; + status = "okay"; + + i2c-scl-rising-time-ns = <185>; + i2c-scl-falling-time-ns = <20>; + clock-frequency = <400000>; + /delete-property/ dmas; + /delete-property/ dma-names; + + pmic:stpmic@33{ + compatible = "st,stpmic1"; + reg = <0x33>; + interrupts-extended = <&exti_pwr 55 IRQ_TYPE_EDGE_FALLING>; + interrupt-controller; + #interrupt-cells = <2>; + status = "okay"; + + regulators{ + compatible = "st,stpmic1-regulators"; + buck1-supply = <&vin>; + buck2-supply = <&vin>; + buck3-supply = <&vin>; + buck4-supply = <&vin>; + ldo1-supply = <&v3v3>; + ldo2-supply = <&vin>; + ldo3-supply = <&vdd_ddr>; + ldo4-supply = <&vin>; + ldo5-supply = <&vin>; + ldo6-supply = <&v3v3>; + vref_ddr-supply = <&vin>; + boost-supply = <&vin>; + pwr_sw1-supply = <&bst_out>; + pwr_sw2-supply = <&bst_out>; + + vddcore:buck1{ + regulator-name = "vddcore"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1350000>; + regulator-always-on; + regulator-initial-mode = <0>; + regulator-over-current-protection; + }; + + vdd_ddr:buck2{ + regulator-name = "vdd_ddr"; + regulator-min-microvolt = <1350000>; + regulator-max-microvolt = <1350000>; + regulator-always-on; + regulator-initial-mode = <0>; + regulator-over-current-protection; + }; + + vdd:buck3{ + regulator-name = "vdd"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + st,mask-reset; + regulator-initial-mode = <0>; + regulator-over-current-protection; + }; + + v3v3:buck4{ + regulator-name = "v3v3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + regulator-over-current-protection; + regulator-initial-mode = <0>; + }; + + v1v8_audio:ldo1{ + regulator-name = "v1v8_audio"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + interrupts = ; + }; + + v3v3_hdmi:ldo2{ + regulator-name = "v3v3_hdmi"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + interrupts = ; + }; + + vtt_ddr:ldo3{ + regulator-name = "vtt_ddr"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <750000>; + regulator-always-on; + regulator-over-current-protection; + }; + + vdd_usb:ldo4{ + regulator-name = "vdd_usb"; + interrupts = ; + }; + + vdda:ldo5{ + regulator-name = "vdda"; + regulator-min-microvolt = <2900000>; + regulator-max-microvolt = <2900000>; + interrupts = ; + regulator-boot-on; + }; + + v1v2_hdmi:ldo6{ + regulator-name = "v1v2_hdmi"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-always-on; + interrupts = ; + }; + + vref_ddr:vref_ddr{ + regulator-name = "vref_ddr"; + regulator-always-on; + regulator-over-current-protection; + }; + + bst_out:boost{ + regulator-name = "bst_out"; + interrupts = ; + }; + + vbus_otg:pwr_sw1{ + regulator-name = "vbus_otg"; + interrupts = ; + }; + + vbus_sw:pwr_sw2{ + regulator-name = "vbus_sw"; + interrupts = ; + regulator-active-discharge = <1>; + }; + }; + + onkey{ + compatible = "st,stpmic1-onkey"; + interrupts = , ; + interrupt-names = "onkey-falling", "onkey-rising"; + power-off-time-sec = <10>; + status = "okay"; + }; + + watchdog { + compatible = "st,stpmic1-wdt"; + status = "disabled"; + }; + }; + eeprom@50 { + compatible = "atmel,24c02"; + reg = <0x50>; + pagesize = <16>; + }; +}; + +&ipcc{ + status = "okay"; +}; + +&iwdg2{ + status = "okay"; + timeout-sec = <32>; +}; + +&mdma1{ + status = "okay"; +}; + +&rcc{ + u-boot,dm-pre-reloc; + status = "okay"; +}; + +&rng1{ + status = "okay"; +}; + +&rtc{ + status = "okay"; +}; + +&sdmmc1{ + u-boot,dm-pre-reloc; + pinctrl-names = "default", "opendrain", "sleep"; + pinctrl-0 = <&sdmmc1_pins_mx>; + pinctrl-1 = <&sdmmc1_opendrain_pins_mx>; + pinctrl-2 = <&sdmmc1_sleep_pins_mx>; + status = "okay"; + + cd-gpios = <&gpiog 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; + disable-wp; + st,neg-edge; + bus-width = <4>; + vmmc-supply = <&v3v3>; +}; + +&tamp{ + status = "okay"; +}; + +&uart4{ + u-boot,dm-pre-reloc; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&uart4_pins_mx>; + pinctrl-1 = <&uart4_sleep_pins_mx>; + status = "okay"; + + /delete-property/ dmas; + /delete-property/ dma-names; +}; + +&usbh_ehci{ + status = "okay"; + phys = <&usbphyc_port0>; +}; + +&usbh_ohci{ + status = "okay"; +}; + +&usbotg_hs{ + u-boot,dm-pre-reloc; + status = "okay"; + phys = <&usbphyc_port1 0>; + phy-names = "usb2-phy"; +}; + +&usbphyc{ + u-boot,dm-pre-reloc; + status = "okay"; +}; + +&usbphyc_port0{ + u-boot,dm-pre-reloc; + status = "okay"; + phy-supply = <&vdd_usb>; + st,phy-tuning = <&usb_phy_tuning>; +}; + +&usbphyc_port1{ + u-boot,dm-pre-reloc; + status = "okay"; + phy-supply = <&vdd_usb>; + st,phy-tuning = <&usb_phy_tuning>; +}; + +&adc { + vdd-supply = <&vdd>; + vdda-supply = <&vdda>; + vref-supply = <&vdda>; + status = "okay"; + adc1: adc@0 { + st,min-sample-time-nsecs = <5000>; + st,adc-channels = <0 1>; + status = "okay"; + }; + + adc2: adc@100 { + status = "okay"; + }; + + adc_temp: temp { + status = "okay"; + }; +}; + +&usbh_ohci{ + phys = <&usbphyc_port0>; +}; + +&cpu0{ + cpu-supply = <&vddcore>; +}; + +&cpu1{ + cpu-supply = <&vddcore>; +}; + +&sram{ + dma_pool:dma_pool@0{ + reg = <0x50000 0x10000>; + pool; + }; +}; + +&spi2 { + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&spi2_pins_mx>; + pinctrl-1 = <&spi2_sleep_pins_mx>; + cs-gpios = <&gpioi 0 0>; + status = "okay"; + + spidev2: spidev2@0{ + compatible = "rohm,dh2228fv"; + spi-max-frequency = <30000000>; + reg = <0>; + }; +}; + +&spi4 { + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&spi4_pins_mx>; + pinctrl-1 = <&spi4_sleep_pins_mx>; + cs-gpios = <&gpioe 11 0>; + status = "okay"; + + spidev4: spidev4@0{ + compatible = "rohm,dh2228fv"; + spi-max-frequency = <30000000>; + reg = <0>; + }; +}; + +&spi6 { + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&spi6_pins_mx>; + pinctrl-1 = <&spi6_sleep_pins_mx>; + cs-gpios = <&gpioz 3 0>; + status = "okay"; + + spidev6: spidev6@0{ + compatible = "rohm,dh2228fv"; + spi-max-frequency = <30000000>; + reg = <0>; + }; +}; + +&usart2 { + pinctrl-names = "default", "sleep", "idle"; + pinctrl-0 = <&usart2_pins_mx>; + pinctrl-1 = <&usart2_sleep_pins_mx>; + pinctrl-2 = <&usart2_idle_pins_mx>; + status = "okay"; +}; + +&uart5 { + pinctrl-names = "default", "sleep", "idle"; + pinctrl-0 = <&uart5_pins_mx>; + pinctrl-1 = <&uart5_sleep_pins_mx>; + pinctrl-2 = <&uart5_idle_pins_mx>; + status = "okay"; +}; + +&uart7 { + pinctrl-names = "default", "sleep", "idle"; + pinctrl-0 = <&uart7_pins_mx>; + pinctrl-1 = <&uart7_sleep_pins_mx>; + pinctrl-2 = <&uart7_idle_pins_mx>; + status = "okay"; +}; + +&uart8 { + pinctrl-names = "default", "sleep", "idle"; + pinctrl-0 = <&uart8_pins_mx>; + pinctrl-1 = <&uart8_sleep_pins_mx>; + pinctrl-2 = <&uart8_idle_pins_mx>; + status = "okay"; +}; + +&m_can1 { + pinctrl-names = "default"; + pinctrl-0 = <&m_can1_pins_mx>; + status = "okay"; + can-transceiver { + max-bitrate = <5000000>; + }; +}; + +&timers1 { + status = "okay"; + /* spare dmas for other usage */ + /delete-property/dmas; + /delete-property/dma-names; + pwm1: pwm { + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&pwm1_pins_mx>; + pinctrl-1 = <&pwm1_sleep_pins_mx>; + status = "okay"; + }; +}; + +&timers3 { + status = "okay"; + /* spare dmas for other usage */ + /delete-property/dmas; + /delete-property/dma-names; + pwm3: pwm { + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&pwm3_pins_mx>; + pinctrl-1 = <&pwm3_sleep_pins_mx>; + status = "okay"; + }; +}; + +&timers4 { + status = "okay"; + /* spare dmas for other usage */ + /delete-property/dmas; + /delete-property/dma-names; + pwm4: pwm { + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&pwm4_pins_mx>; + pinctrl-1 = <&pwm4_sleep_pins_mx>; + status = "okay"; + }; +}; + +&timers8 { + status = "okay"; + /* spare dmas for other usage */ + /delete-property/dmas; + /delete-property/dma-names; + pwm8: pwm { + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&pwm8_pins_mx>; + pinctrl-1 = <&pwm8_sleep_pins_mx>; + status = "okay"; + }; +}; + +&timers12 { + status = "okay"; + /* spare dmas for other usage */ + /delete-property/dmas; + /delete-property/dma-names; + pwm12: pwm { + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&pwm12_pins_mx>; + pinctrl-1 = <&pwm12_sleep_pins_mx>; + status = "okay"; + }; +}; diff --git a/board/octavo/osd32mp1-brk/overlay/boot/extlinux/extlinux.conf b/board/octavo/osd32mp1-brk/overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..a1ca2e58 --- /dev/null +++ b/board/octavo/osd32mp1-brk/overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +label osd32mp1-brk-buildroot + kernel /boot/zImage + devicetree /boot/stm32mp157c-osd32mp1-brk.dtb + append root=/dev/mmcblk0p4 rootwait diff --git a/board/octavo/osd32mp1-brk/patches/uboot/0001-Add-OSD32MP1-BRK-device-tree-support.patch b/board/octavo/osd32mp1-brk/patches/uboot/0001-Add-OSD32MP1-BRK-device-tree-support.patch new file mode 100644 index 00000000..3e4b6de2 --- /dev/null +++ b/board/octavo/osd32mp1-brk/patches/uboot/0001-Add-OSD32MP1-BRK-device-tree-support.patch @@ -0,0 +1,1509 @@ +From 4731b1f73e0bfe3e3539f6b7c17e0f5366996a98 Mon Sep 17 00:00:00 2001 +From: "neeraj.dantu" +Date: Sun, 21 Nov 2021 23:26:05 -0600 +Subject: [PATCH 1/2] Add OSD32MP1-BRK device tree support + +Signed-off-by: Kory Maincent +--- + arch/arm/dts/Makefile | 3 +- + .../dts/stm32mp15-osd32mp1-ddr3-1x4Gb.dtsi | 119 ++ + .../dts/stm32mp157c-osd32mp1-brk-u-boot.dtsi | 219 ++++ + arch/arm/dts/stm32mp157c-osd32mp1-brk.dts | 1120 +++++++++++++++++ + 4 files changed, 1460 insertions(+), 1 deletion(-) + create mode 100644 arch/arm/dts/stm32mp15-osd32mp1-ddr3-1x4Gb.dtsi + create mode 100644 arch/arm/dts/stm32mp157c-osd32mp1-brk-u-boot.dtsi + create mode 100644 arch/arm/dts/stm32mp157c-osd32mp1-brk.dts + +diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile +index 83677c3d4f..6e67c6d18a 100644 +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -959,7 +959,8 @@ dtb-$(CONFIG_STM32MP15x) += \ + stm32mp157f-ed1.dtb \ + stm32mp157f-ev1.dtb \ + stm32mp15xx-dhcom-pdk2.dtb \ +- stm32mp15xx-dhcor-avenger96.dtb ++ stm32mp15xx-dhcor-avenger96.dtb \ ++ stm32mp157c-osd32mp1-brk.dtb + + dtb-$(CONFIG_SOC_K3_AM6) += k3-am654-base-board.dtb k3-am654-r5-base-board.dtb + dtb-$(CONFIG_SOC_K3_J721E) += k3-j721e-common-proc-board.dtb \ +diff --git a/arch/arm/dts/stm32mp15-osd32mp1-ddr3-1x4Gb.dtsi b/arch/arm/dts/stm32mp15-osd32mp1-ddr3-1x4Gb.dtsi +new file mode 100644 +index 0000000000..362f3281b8 +--- /dev/null ++++ b/arch/arm/dts/stm32mp15-osd32mp1-ddr3-1x4Gb.dtsi +@@ -0,0 +1,119 @@ ++/* ++ * Copyright (C) 2015-2018, STMicroelectronics - All Rights Reserved ++ * ++ * SPDX-License-Identifier: GPL-2.0+ BSD-3-Clause ++ * ++ */ ++ ++/* ++ * File generated by STMicroelectronics STM32CubeMX DDR Tool for MPUs ++ * DDR type: DDR3 / DDR3L ++ * DDR width: 16bits ++ * DDR density: 4Gb ++ * System frequency: 533000Khz ++ * Relaxed Timing Mode: false ++ * Address mapping type: RBC ++ * ++ * Save Date: 2020.08.20, save Time: 10:57:25 ++ */ ++ ++#define DDR_MEM_NAME "DDR3-DDR3L 16bits 533000Khz" ++#define DDR_MEM_SPEED 533000 ++#define DDR_MEM_SIZE 0x20000000 ++ ++#define DDR_MSTR 0x00041401 ++#define DDR_MRCTRL0 0x00000010 ++#define DDR_MRCTRL1 0x00000000 ++#define DDR_DERATEEN 0x00000000 ++#define DDR_DERATEINT 0x00800000 ++#define DDR_PWRCTL 0x00000000 ++#define DDR_PWRTMG 0x00400010 ++#define DDR_HWLPCTL 0x00000000 ++#define DDR_RFSHCTL0 0x00210000 ++#define DDR_RFSHCTL3 0x00000000 ++#define DDR_RFSHTMG 0x0081008B ++#define DDR_CRCPARCTL0 0x00000000 ++#define DDR_DRAMTMG0 0x121B2414 ++#define DDR_DRAMTMG1 0x000A041C ++#define DDR_DRAMTMG2 0x0608090F ++#define DDR_DRAMTMG3 0x0050400C ++#define DDR_DRAMTMG4 0x08040608 ++#define DDR_DRAMTMG5 0x06060403 ++#define DDR_DRAMTMG6 0x02020002 ++#define DDR_DRAMTMG7 0x00000202 ++#define DDR_DRAMTMG8 0x00001005 ++#define DDR_DRAMTMG14 0x000000A0 ++#define DDR_ZQCTL0 0xC2000040 ++#define DDR_DFITMG0 0x02060105 ++#define DDR_DFITMG1 0x00000202 ++#define DDR_DFILPCFG0 0x07000000 ++#define DDR_DFIUPD0 0xC0400003 ++#define DDR_DFIUPD1 0x00000000 ++#define DDR_DFIUPD2 0x00000000 ++#define DDR_DFIPHYMSTR 0x00000000 ++#define DDR_ODTCFG 0x06000600 ++#define DDR_ODTMAP 0x00000001 ++#define DDR_SCHED 0x00000C01 ++#define DDR_SCHED1 0x00000000 ++#define DDR_PERFHPR1 0x01000001 ++#define DDR_PERFLPR1 0x08000200 ++#define DDR_PERFWR1 0x08000400 ++#define DDR_DBG0 0x00000000 ++#define DDR_DBG1 0x00000000 ++#define DDR_DBGCMD 0x00000000 ++#define DDR_POISONCFG 0x00000000 ++#define DDR_PCCFG 0x00000010 ++#define DDR_PCFGR_0 0x00010000 ++#define DDR_PCFGW_0 0x00000000 ++#define DDR_PCFGQOS0_0 0x02100C03 ++#define DDR_PCFGQOS1_0 0x00800100 ++#define DDR_PCFGWQOS0_0 0x01100C03 ++#define DDR_PCFGWQOS1_0 0x01000200 ++#define DDR_PCFGR_1 0x00010000 ++#define DDR_PCFGW_1 0x00000000 ++#define DDR_PCFGQOS0_1 0x02100C03 ++#define DDR_PCFGQOS1_1 0x00800040 ++#define DDR_PCFGWQOS0_1 0x01100C03 ++#define DDR_PCFGWQOS1_1 0x01000200 ++#define DDR_ADDRMAP1 0x00070707 ++#define DDR_ADDRMAP2 0x00000000 ++#define DDR_ADDRMAP3 0x1F000000 ++#define DDR_ADDRMAP4 0x00001F1F ++#define DDR_ADDRMAP5 0x06060606 ++#define DDR_ADDRMAP6 0x0F060606 ++#define DDR_ADDRMAP9 0x00000000 ++#define DDR_ADDRMAP10 0x00000000 ++#define DDR_ADDRMAP11 0x00000000 ++#define DDR_PGCR 0x01442E02 ++#define DDR_PTR0 0x0022AA5B ++#define DDR_PTR1 0x04841104 ++#define DDR_PTR2 0x042DA068 ++#define DDR_ACIOCR 0x10400812 ++#define DDR_DXCCR 0x00000C40 ++#define DDR_DSGCR 0xF200011F ++#define DDR_DCR 0x0000000B ++#define DDR_DTPR0 0x38D488D0 ++#define DDR_DTPR1 0x098B00D8 ++#define DDR_DTPR2 0x10023600 ++#define DDR_MR0 0x00000840 ++#define DDR_MR1 0x00000000 ++#define DDR_MR2 0x00000208 ++#define DDR_MR3 0x00000000 ++#define DDR_ODTCR 0x00010000 ++#define DDR_ZQ0CR1 0x00000038 ++#define DDR_DX0GCR 0x0000CE81 ++#define DDR_DX0DLLCR 0x40000000 ++#define DDR_DX0DQTR 0xFFFFFFFF ++#define DDR_DX0DQSTR 0x3DB02000 ++#define DDR_DX1GCR 0x0000CE81 ++#define DDR_DX1DLLCR 0x40000000 ++#define DDR_DX1DQTR 0xFFFFFFFF ++#define DDR_DX1DQSTR 0x3DB02000 ++#define DDR_DX2GCR 0x0000CE80 ++#define DDR_DX2DLLCR 0x40000000 ++#define DDR_DX2DQTR 0xFFFFFFFF ++#define DDR_DX2DQSTR 0x3DB02000 ++#define DDR_DX3GCR 0x0000CE80 ++#define DDR_DX3DLLCR 0x40000000 ++#define DDR_DX3DQTR 0xFFFFFFFF ++#define DDR_DX3DQSTR 0x3DB02000 +diff --git a/arch/arm/dts/stm32mp157c-osd32mp1-brk-u-boot.dtsi b/arch/arm/dts/stm32mp157c-osd32mp1-brk-u-boot.dtsi +new file mode 100644 +index 0000000000..b7284f3028 +--- /dev/null ++++ b/arch/arm/dts/stm32mp157c-osd32mp1-brk-u-boot.dtsi +@@ -0,0 +1,219 @@ ++/* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause*/ ++/* ++ * Copyright (C) 2020, Octavo Systems LLC - All Rights Reserved ++ */ ++ ++/* For more information on Device Tree configuration, please refer to ++ * https://wiki.st.com/stm32mpu/wiki/Category:Device_tree_configuration ++ */ ++ ++#include ++#include "stm32mp15-osd32mp1-ddr3-1x4Gb.dtsi" ++#include "stm32mp15-u-boot.dtsi" ++#include "stm32mp15-ddr.dtsi" ++ ++ ++/ { ++ ++ aliases{ ++ i2c0 = &i2c4; ++ mmc0 = &sdmmc1; ++ usb0 = &usbotg_hs; ++ }; ++ ++ config{ ++ u-boot,boot-led = "LED2_GRN"; ++ u-boot,error-led = "LED2_RED"; ++ u-boot,mmc-env-partition = "fip"; ++ st,stm32prog-gpios = <&gpiod 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; ++ }; ++ ++#ifdef CONFIG_STM32MP15x_STM32IMAGE ++ config { ++ u-boot,mmc-env-partition = "ssbl"; ++ }; ++ ++ /* only needed for boot with TF-A, witout FIP support */ ++ firmware { ++ optee { ++ compatible = "linaro,optee-tz"; ++ method = "smc"; ++ }; ++ }; ++ ++ reserved-memory { ++ optee@de000000 { ++ reg = <0xde000000 0x02000000>; ++ no-map; ++ }; ++ }; ++#endif ++ ++}; /*root*/ ++ ++#ifndef CONFIG_TFABOOT ++ ++&clk_hse { ++ st,digbypass; ++}; ++ ++&rcc { ++ u-boot,dm-pre-reloc; ++ st,clksrc = < ++ CLK_MPU_PLL1P ++ CLK_AXI_PLL2P ++ CLK_MCU_PLL3P ++ CLK_PLL12_HSE ++ CLK_PLL3_HSE ++ CLK_PLL4_HSE ++ CLK_RTC_LSE ++ CLK_MCO1_DISABLED ++ CLK_MCO2_DISABLED ++ >; ++ st,clkdiv = < ++ 1 /*MPU*/ ++ 0 /*AXI*/ ++ 0 /*MCU*/ ++ 1 /*APB1*/ ++ 1 /*APB2*/ ++ 1 /*APB3*/ ++ 1 /*APB4*/ ++ 2 /*APB5*/ ++ 23 /*RTC*/ ++ 0 /*MCO1*/ ++ 0 /*MCO2*/ ++ >; ++ st,pkcs = < ++ CLK_CKPER_HSE ++ CLK_FMC_ACLK ++ CLK_QSPI_ACLK ++ CLK_ETH_DISABLED ++ CLK_SDMMC12_PLL4P ++ CLK_DSI_DSIPLL ++ CLK_STGEN_HSE ++ CLK_USBPHY_HSE ++ CLK_SPI2S1_PLL3Q ++ CLK_SPI2S23_PLL3Q ++ CLK_SPI45_HSI ++ CLK_SPI6_HSI ++ CLK_I2C46_HSI ++ CLK_SDMMC3_PLL4P ++ CLK_USBO_USBPHY ++ CLK_ADC_CKPER ++ CLK_CEC_LSE ++ CLK_I2C12_HSI ++ CLK_I2C35_HSI ++ CLK_UART1_HSI ++ CLK_UART24_HSI ++ CLK_UART35_HSI ++ CLK_UART6_HSI ++ CLK_UART78_HSI ++ CLK_SPDIF_PLL4P ++ CLK_FDCAN_PLL4R ++ CLK_SAI1_PLL3Q ++ CLK_SAI2_PLL3Q ++ CLK_SAI3_PLL3Q ++ CLK_SAI4_PLL3Q ++ CLK_RNG1_LSI ++ CLK_RNG2_LSI ++ CLK_LPTIM1_PCLK1 ++ CLK_LPTIM23_PCLK3 ++ CLK_LPTIM45_LSE ++ >; ++ pll2:st,pll@1 { ++ compatible = "st,stm32mp1-pll"; ++ reg = <1>; ++ cfg = < 2 65 1 0 0 PQR(1,1,1) >; ++ frac = < 0x1400 >; ++ u-boot,dm-pre-reloc; ++ }; ++ pll3:st,pll@2 { ++ compatible = "st,stm32mp1-pll"; ++ reg = <2>; ++ cfg = < 1 33 1 16 36 PQR(1,1,1) >; ++ frac = < 0x1a04 >; ++ u-boot,dm-pre-reloc; ++ }; ++ pll4:st,pll@3 { ++ compatible = "st,stm32mp1-pll"; ++ reg = <3>; ++ cfg = < 3 98 5 7 7 PQR(1,1,1) >; ++ u-boot,dm-pre-reloc; ++ }; ++}; ++ ++&i2c4{ ++ u-boot,dm-pre-reloc; ++}; ++ ++&i2c4_pins_z_mx { ++ u-boot,dm-pre-reloc; ++ pins { ++ u-boot,dm-pre-reloc; ++ }; ++}; ++ ++&sdmmc1{ ++ u-boot,dm-pre-reloc; ++}; ++ ++&sdmmc1_pins_mx { ++ u-boot,dm-spl; ++ pins1 { ++ u-boot,dm-spl; ++ }; ++ pins2 { ++ u-boot,dm-spl; ++ }; ++}; ++ ++#endif /*CONFIG_TFABOOT*/ ++ ++&cryp1{ ++ u-boot,dm-pre-reloc; ++}; ++ ++&hash1{ ++ u-boot,dm-pre-reloc; ++}; ++ ++&uart4{ ++ u-boot,dm-pre-reloc; ++}; ++ ++&usbotg_hs{ ++ u-boot,dm-pre-reloc; ++ u-boot,force-b-session-valid; ++ hnp-srp-disable; ++ dr_mode = "peripheral"; ++}; ++ ++&usbphyc{ ++ u-boot,dm-pre-reloc; ++}; ++ ++&usbphyc_port0{ ++ u-boot,dm-pre-reloc; ++}; ++ ++&usbphyc_port1{ ++ u-boot,dm-pre-reloc; ++}; ++ ++&adc{ ++ status = "okay"; ++}; ++ ++#ifndef CONFIG_STM32MP1_TRUSTED ++&i2s2{ ++ clocks = <&rcc SPI2>, <&rcc SPI2_K>, <&rcc PLL3_Q>, <&rcc PLL3_R>; ++}; ++ ++&pmic{ ++ u-boot,dm-pre-reloc; ++}; ++ ++&sai2{ ++ clocks = <&rcc SAI2>, <&rcc PLL3_Q>, <&rcc PLL3_R>; ++}; ++#endif /*CONFIG_STM32MP1_TRUSTED*/ +diff --git a/arch/arm/dts/stm32mp157c-osd32mp1-brk.dts b/arch/arm/dts/stm32mp157c-osd32mp1-brk.dts +new file mode 100644 +index 0000000000..d5f2793f54 +--- /dev/null ++++ b/arch/arm/dts/stm32mp157c-osd32mp1-brk.dts +@@ -0,0 +1,1120 @@ ++/* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */ ++/* ++ * Copyright (C) Octavo Systems LLC 2020 - All Rights Reserved ++ */ ++ ++/* For more information on Device Tree configuration, please refer to ++ * https://wiki.st.com/stm32mpu/wiki/Category:Device_tree_configuration ++ */ ++ ++/dts-v1/; ++#include ++#include "stm32mp157.dtsi" ++#include "stm32mp15xc.dtsi" ++#include "stm32mp15xxac-pinctrl.dtsi" ++#include "stm32mp15-m4-srm.dtsi" ++#include ++#include ++#include ++ ++/ { ++ model = "Octavo OSD32MP1 BRK board"; ++ compatible = "st,stm32mp157c-osd32mp1-brk", "st,stm32mp157"; ++ ++ memory@c0000000 { ++ device_type = "memory"; ++ reg = <0xc0000000 0x20000000>; ++ }; ++ ++ reserved-memory { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ranges; ++ ++ mcuram2:mcuram2@10000000{ ++ compatible = "shared-dma-pool"; ++ reg = <0x10000000 0x40000>; ++ no-map; ++ }; ++ ++ vdev0vring0:vdev0vring0@10040000{ ++ compatible = "shared-dma-pool"; ++ reg = <0x10040000 0x1000>; ++ no-map; ++ }; ++ ++ vdev0vring1:vdev0vring1@10041000{ ++ compatible = "shared-dma-pool"; ++ reg = <0x10041000 0x1000>; ++ no-map; ++ }; ++ ++ vdev0buffer:vdev0buffer@10042000{ ++ compatible = "shared-dma-pool"; ++ reg = <0x10042000 0x4000>; ++ no-map; ++ }; ++ ++ mcuram:mcuram@30000000{ ++ compatible = "shared-dma-pool"; ++ reg = <0x30000000 0x40000>; ++ no-map; ++ }; ++ ++ retram:retram@38000000{ ++ compatible = "shared-dma-pool"; ++ reg = <0x38000000 0x10000>; ++ no-map; ++ }; ++ ++ gpu_reserved:gpu@d4000000{ ++ reg = <0xd4000000 0x4000000>; ++ no-map; ++ }; ++ }; ++ ++ led{ ++ compatible = "gpio-leds"; ++ ++ red1{ ++ label = "LED1_RED"; ++ gpios = <&gpioz 6 GPIO_ACTIVE_LOW>; ++ linux,default-trigger = "heartbeat"; ++ status = "okay"; ++ default-state = "off"; ++ }; ++ ++ green1{ ++ label = "LED1_GRN"; ++ gpios = <&gpioz 7 GPIO_ACTIVE_LOW>; ++ status = "okay"; ++ default-state = "on"; ++ }; ++ ++ red2{ ++ label = "LED2_RED"; ++ gpios = <&gpioi 8 GPIO_ACTIVE_LOW>; ++ status = "okay"; ++ default-state = "off"; ++ }; ++ ++ green2{ ++ label = "LED2_GRN"; ++ gpios = <&gpioi 9 GPIO_ACTIVE_LOW>; ++ default-state = "off"; ++ }; ++ }; ++ ++ usb_phy_tuning:usb-phy-tuning{ ++ st,hs-dc-level = <2>; ++ st,fs-rftime-tuning; ++ st,hs-rftime-reduction; ++ st,hs-current-trim = <15>; ++ st,hs-impedance-trim = <1>; ++ st,squelch-level = <3>; ++ st,hs-rx-offset = <2>; ++ st,no-lsfs-sc; ++ }; ++ ++ vin:vin{ ++ compatible = "regulator-fixed"; ++ regulator-name = "vin"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ }; ++ ++ aliases{ ++ serial0 = &uart4; ++ serial2 = &usart2; ++ serial5 = &uart5; ++ serial7 = &uart7; ++ serial1 = &uart8; ++ }; ++ ++ chosen{ ++ stdout-path = "serial0:115200n8"; ++ }; ++ ++}; /*root*/ ++ ++&pinctrl { ++ u-boot,dm-pre-reloc; ++ i2c1_pins_mx: i2c1-0 { ++ pins { ++ pinmux = , /* I2C1_SCL */ ++ ; /* I2C1_SDA */ ++ bias-disable; ++ drive-open-drain; ++ slew-rate = <0>; ++ }; ++ }; ++ ++ i2c1_pins_sleep_mx: i2c1-1 { ++ pins { ++ pinmux = , /* I2C1_SCL */ ++ ; /* I2C1_SDA */ ++ }; ++ }; ++ ++ i2c2_pins_mx: i2c2-0 { ++ pins { ++ pinmux = , /* I2C2_SCL */ ++ ; /* I2C2_SDA */ ++ bias-disable; ++ drive-open-drain; ++ slew-rate = <0>; ++ }; ++ }; ++ ++ i2c2_pins_sleep_mx: i2c2-1 { ++ pins { ++ pinmux = , /* I2C2_SCL */ ++ ; /* I2C2_SDA */ ++ }; ++ }; ++ ++ i2c5_pins_mx: i2c5-0 { ++ pins { ++ pinmux = , /* I2C5_SCL */ ++ ; /* I2C5_SDA */ ++ bias-disable; ++ drive-open-drain; ++ slew-rate = <0>; ++ }; ++ }; ++ ++ i2c5_pins_sleep_mx: i2c5-1 { ++ pins { ++ pinmux = , /* I2C5_SCL */ ++ ; /* I2C5_SDA */ ++ }; ++ }; ++ ++ spi2_pins_mx: spi2-0 { ++ pins1 { ++ pinmux = , /* SPI2_SCK */ ++ ; /* SPI2_MOSI */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <1>; ++ }; ++ ++ pins2 { ++ pinmux = ; /* SPI2_MISO */ ++ bias-disable; ++ }; ++ }; ++ ++ spi2_sleep_pins_mx: spi2-sleep-0 { ++ pins { ++ pinmux = , /* SPI2_SCK */ ++ , /* SPI2_MISO */ ++ ; /* SPI2_MOSI */ ++ }; ++ }; ++ ++ spi4_pins_mx: spi4-0 { ++ pins1 { ++ pinmux = , /* SPI4_SCK */ ++ ; /* SPI4_MOSI */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <1>; ++ }; ++ ++ pins2 { ++ pinmux = ; /* SPI4_MISO */ ++ bias-disable; ++ }; ++ }; ++ ++ spi4_sleep_pins_mx: spi4-sleep-0 { ++ pins { ++ pinmux = , /* SPI2_SCK */ ++ , /* SPI2_MISO */ ++ ; /* SPI2_MOSI */ ++ }; ++ }; ++ ++ usart2_pins_mx: usart2-0 { ++ pins1 { ++ pinmux = ; /* USART2_TX */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <0>; ++ }; ++ pins2 { ++ pinmux = ; /* USART2_RX */ ++ bias-disable; ++ }; ++ }; ++ ++ usart2_idle_pins_mx: usart2-idle-0 { ++ pins1 { ++ pinmux = ; /* USART2_TX */ ++ }; ++ pins2 { ++ pinmux = ; /* USART2_RX */ ++ bias-disable; ++ }; ++ }; ++ ++ usart2_sleep_pins_mx: usart2-sleep-0 { ++ pins { ++ pinmux = , /* USART2_TX */ ++ ; /* USART2_RX */ ++ }; ++ }; ++ ++ uart5_pins_mx: uart5-0 { ++ pins1 { ++ pinmux = ; /* USART5_TX */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <0>; ++ }; ++ pins2 { ++ pinmux = ; /* USART5_RX */ ++ bias-disable; ++ }; ++ }; ++ ++ uart5_idle_pins_mx: uart5-idle-0 { ++ pins1 { ++ pinmux = ; /* USART5_TX */ ++ }; ++ pins2 { ++ pinmux = ; /* USART5_RX */ ++ bias-disable; ++ }; ++ }; ++ ++ uart5_sleep_pins_mx: uart5-sleep-0 { ++ pins { ++ pinmux = , /* USART5_TX */ ++ ; /* USART5_RX */ ++ }; ++ }; ++ ++ uart7_pins_mx: uart7-0 { ++ pins1 { ++ pinmux = ; /* USART7_TX */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <0>; ++ }; ++ pins2 { ++ pinmux = ; /* USART7_RX */ ++ bias-disable; ++ }; ++ }; ++ ++ uart7_idle_pins_mx: uart7-idle-0 { ++ pins1 { ++ pinmux = ; /* USART7_TX */ ++ }; ++ pins2 { ++ pinmux = ; /* USART7_RX */ ++ bias-disable; ++ }; ++ }; ++ ++ uart7_sleep_pins_mx: uart7-sleep-0 { ++ pins { ++ pinmux = , /* USART7_TX */ ++ ; /* USART7_RX */ ++ }; ++ }; ++ ++ uart8_pins_mx: uart8-0 { ++ pins1 { ++ pinmux = ; /* USART8_TX */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <0>; ++ }; ++ pins2 { ++ pinmux = ; /* USART8_RX */ ++ bias-disable; ++ }; ++ }; ++ ++ uart8_idle_pins_mx: uart8-idle-0 { ++ pins1 { ++ pinmux = ; /* USART8_TX */ ++ }; ++ pins2 { ++ pinmux = ; /* USART8_RX */ ++ bias-disable; ++ }; ++ }; ++ ++ uart8_sleep_pins_mx: uart8-sleep-0 { ++ pins { ++ pinmux = , /* USART8_TX */ ++ ; /* USART8_RX */ ++ }; ++ }; ++ ++ m_can1_pins_mx: m-can1-0 { ++ pins1 { ++ pinmux = ; /* CAN1_TX */ ++ slew-rate = <0>; ++ drive-push-pull; ++ bias-disable; ++ }; ++ pins2 { ++ pinmux = ; /* CAN1_RX */ ++ bias-disable; ++ }; ++ }; ++ ++ m_can1_sleep_pins_mx: m_can1-sleep@0 { ++ pins { ++ pinmux = , /* CAN1_TX */ ++ ; /* CAN1_RX */ ++ }; ++ }; ++ ++ pwm1_pins_mx: pwm1-0 { ++ pins { ++ pinmux = ; /* TIM1_CH2 */ ++ bias-pull-down; ++ drive-push-pull; ++ slew-rate = <0>; ++ }; ++ }; ++ ++ pwm1_sleep_pins_mx: pwm1-sleep-0 { ++ pins { ++ pinmux = ; /* TIM1_CH1 */ ++ }; ++ }; ++ ++ pwm3_pins_mx: pwm3-0 { ++ pins { ++ pinmux = ; /* TIM3_CH2 */ ++ bias-pull-down; ++ drive-push-pull; ++ slew-rate = <0>; ++ }; ++ }; ++ ++ pwm3_sleep_pins_mx: pwm3-sleep-0 { ++ pins { ++ pinmux = ; /* TIM3_CH2 */ ++ }; ++ }; ++ ++ pwm4_pins_mx: pwm4-0 { ++ pins { ++ pinmux = ; /* TIM4_CH2 */ ++ bias-pull-down; ++ drive-push-pull; ++ slew-rate = <0>; ++ }; ++ }; ++ ++ pwm4_sleep_pins_mx: pwm4-sleep-0 { ++ pins { ++ pinmux = ; /* TIM4_CH2 */ ++ }; ++ }; ++ ++ pwm8_pins_mx: pwm8-0 { ++ pins { ++ pinmux = ; /* TIM8_CH2 */ ++ bias-pull-down; ++ drive-push-pull; ++ slew-rate = <0>; ++ }; ++ }; ++ ++ pwm8_sleep_pins_mx: pwm8-sleep-0 { ++ pins { ++ pinmux = ; /* TIM8_CH2 */ ++ }; ++ }; ++ ++ ++ pwm12_pins_mx: pwm12-0 { ++ pins { ++ pinmux = ; /* TIM12_CH2 */ ++ bias-pull-down; ++ drive-push-pull; ++ slew-rate = <0>; ++ }; ++ }; ++ ++ pwm12_sleep_pins_mx: pwm12-sleep-0 { ++ pins { ++ pinmux = ; /* TIM12_CH2 */ ++ }; ++ }; ++ ++ sdmmc1_pins_mx: sdmmc1_mx-0 { ++ u-boot,dm-pre-reloc; ++ pins1 { ++ u-boot,dm-pre-reloc; ++ pinmux = , /* SDMMC1_D0 */ ++ , /* SDMMC1_D1 */ ++ , /* SDMMC1_D2 */ ++ , /* SDMMC1_D3 */ ++ ; /* SDMMC1_CMD */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <1>; ++ }; ++ pins2 { ++ u-boot,dm-pre-reloc; ++ pinmux = ; /* SDMMC1_CK */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <2>; ++ }; ++ }; ++ ++ sdmmc1_opendrain_pins_mx: sdmmc1_opendrain_mx-0 { ++ u-boot,dm-pre-reloc; ++ pins1 { ++ u-boot,dm-pre-reloc; ++ pinmux = , /* SDMMC1_D0 */ ++ , /* SDMMC1_D1 */ ++ , /* SDMMC1_D2 */ ++ ; /* SDMMC1_D3 */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <1>; ++ }; ++ pins2 { ++ u-boot,dm-pre-reloc; ++ pinmux = ; /* SDMMC1_CK */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <2>; ++ }; ++ pins3 { ++ u-boot,dm-pre-reloc; ++ pinmux = ; /* SDMMC1_CMD */ ++ bias-disable; ++ drive-open-drain; ++ slew-rate = <1>; ++ }; ++ }; ++ ++ sdmmc1_sleep_pins_mx: sdmmc1_sleep_mx-0 { ++ u-boot,dm-pre-reloc; ++ pins { ++ u-boot,dm-pre-reloc; ++ pinmux = , /* SDMMC1_D0 */ ++ , /* SDMMC1_D1 */ ++ , /* SDMMC1_D2 */ ++ , /* SDMMC1_D3 */ ++ , /* SDMMC1_CK */ ++ ; /* SDMMC1_CMD */ ++ }; ++ }; ++ ++ uart4_pins_mx: uart4_mx-0 { ++ u-boot,dm-pre-reloc; ++ pins1 { ++ u-boot,dm-pre-reloc; ++ pinmux = ; /* UART4_RX */ ++ /* pull-up on rx to avoid floating level */ ++ bias-pull-up; ++ }; ++ pins2 { ++ u-boot,dm-pre-reloc; ++ pinmux = ; /* UART4_TX */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <0>; ++ }; ++ }; ++ ++ uart4_sleep_pins_mx: uart4_sleep_mx-0 { ++ u-boot,dm-pre-reloc; ++ pins { ++ u-boot,dm-pre-reloc; ++ pinmux = , /* UART4_RX */ ++ ; /* UART4_TX */ ++ }; ++ }; ++}; ++ ++&pinctrl_z { ++ u-boot,dm-pre-reloc; ++ ++ i2c4_pins_z_mx: i2c4_mx-0 { ++ u-boot,dm-pre-reloc; ++ pins { ++ u-boot,dm-pre-reloc; ++ pinmux = , /* I2C4_SCL */ ++ ; /* I2C4_SDA */ ++ bias-disable; ++ drive-open-drain; ++ slew-rate = <0>; ++ }; ++ }; ++ ++ i2c4_sleep_pins_z_mx: i2c4_sleep_mx-0 { ++ u-boot,dm-pre-reloc; ++ pins { ++ u-boot,dm-pre-reloc; ++ pinmux = , /* I2C4_SCL */ ++ ; /* I2C4_SDA */ ++ }; ++ }; ++ ++ spi6_pins_mx: spi6-0 { ++ pins1 { ++ pinmux = , /* SPI6_SCK */ ++ ; /* SPI6_MOSI */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <1>; ++ }; ++ ++ pins2 { ++ pinmux = ; /* SPI6_MISO */ ++ bias-disable; ++ }; ++ }; ++ ++ spi6_sleep_pins_mx: spi6-sleep-0 { ++ pins { ++ pinmux = , /* SPI6_SCK */ ++ , /* SPI6_MISO */ ++ ; /* SPI6_MOSI */ ++ }; ++ }; ++}; ++ ++&m4_rproc{ ++ memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>, ++ <&vdev0vring1>, <&vdev0buffer>; ++ mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>; ++ mbox-names = "vq0", "vq1", "shutdown"; ++ interrupt-parent = <&exti>; ++ interrupts = <68 1>; ++ wakeup-source; ++ status = "okay"; ++}; ++ ++&pwr_regulators { ++ vdd-supply = <&vdd>; ++ vdd_3v3_usbfs-supply = <&vdd_usb>; ++}; ++ ++ ++&crc1{ ++ status = "okay"; ++}; ++ ++&cryp1{ ++ u-boot,dm-pre-reloc; ++ status = "okay"; ++}; ++ ++&dma1{ ++ status = "okay"; ++ sram = <&dma_pool>; ++}; ++ ++&dma2{ ++ status = "okay"; ++ sram = <&dma_pool>; ++}; ++ ++&dts{ ++ status = "okay"; ++}; ++ ++&gpu{ ++ status = "okay"; ++ contiguous-area = <&gpu_reserved>; ++}; ++ ++&hash1{ ++ u-boot,dm-pre-reloc; ++ status = "okay"; ++}; ++ ++&hsem{ ++ status = "okay"; ++}; ++ ++&i2c1 { ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&i2c1_pins_mx>; ++ pinctrl-1 = <&i2c1_pins_sleep_mx>; ++ i2c-scl-rising-time-ns = <100>; ++ i2c-scl-falling-time-ns = <7>; ++ status = "okay"; ++ /delete-property/dmas; ++ /delete-property/dma-names; ++}; ++ ++&i2c2 { ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&i2c2_pins_mx>; ++ pinctrl-1 = <&i2c2_pins_sleep_mx>; ++ i2c-scl-rising-time-ns = <100>; ++ i2c-scl-falling-time-ns = <7>; ++ status = "okay"; ++ /delete-property/dmas; ++ /delete-property/dma-names; ++}; ++ ++&i2c5 { ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&i2c5_pins_mx>; ++ pinctrl-1 = <&i2c5_pins_sleep_mx>; ++ i2c-scl-rising-time-ns = <100>; ++ i2c-scl-falling-time-ns = <7>; ++ status = "okay"; ++ /delete-property/dmas; ++ /delete-property/dma-names; ++}; ++ ++&i2c4{ ++ u-boot,dm-pre-reloc; ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&i2c4_pins_z_mx>; ++ pinctrl-1 = <&i2c4_sleep_pins_z_mx>; ++ status = "okay"; ++ ++ i2c-scl-rising-time-ns = <185>; ++ i2c-scl-falling-time-ns = <20>; ++ clock-frequency = <400000>; ++ /delete-property/ dmas; ++ /delete-property/ dma-names; ++ ++ pmic:stpmic@33{ ++ compatible = "st,stpmic1"; ++ reg = <0x33>; ++ interrupts-extended = <&exti_pwr 55 IRQ_TYPE_EDGE_FALLING>; ++ interrupt-controller; ++ #interrupt-cells = <2>; ++ status = "okay"; ++ ++ regulators{ ++ compatible = "st,stpmic1-regulators"; ++ buck1-supply = <&vin>; ++ buck2-supply = <&vin>; ++ buck3-supply = <&vin>; ++ buck4-supply = <&vin>; ++ ldo1-supply = <&v3v3>; ++ ldo2-supply = <&vin>; ++ ldo3-supply = <&vdd_ddr>; ++ ldo4-supply = <&vin>; ++ ldo5-supply = <&vin>; ++ ldo6-supply = <&v3v3>; ++ vref_ddr-supply = <&vin>; ++ boost-supply = <&vin>; ++ pwr_sw1-supply = <&bst_out>; ++ pwr_sw2-supply = <&bst_out>; ++ ++ vddcore:buck1{ ++ regulator-name = "vddcore"; ++ regulator-min-microvolt = <1200000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-always-on; ++ regulator-initial-mode = <0>; ++ regulator-over-current-protection; ++ }; ++ ++ vdd_ddr:buck2{ ++ regulator-name = "vdd_ddr"; ++ regulator-min-microvolt = <1350000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-always-on; ++ regulator-initial-mode = <0>; ++ regulator-over-current-protection; ++ }; ++ ++ vdd:buck3{ ++ regulator-name = "vdd"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ st,mask-reset; ++ regulator-initial-mode = <0>; ++ regulator-over-current-protection; ++ }; ++ ++ v3v3:buck4{ ++ regulator-name = "v3v3"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ regulator-over-current-protection; ++ regulator-initial-mode = <0>; ++ }; ++ ++ v1v8_audio:ldo1{ ++ regulator-name = "v1v8_audio"; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-always-on; ++ interrupts = ; ++ }; ++ ++ v3v3_hdmi:ldo2{ ++ regulator-name = "v3v3_hdmi"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ interrupts = ; ++ }; ++ ++ vtt_ddr:ldo3{ ++ regulator-name = "vtt_ddr"; ++ regulator-min-microvolt = <500000>; ++ regulator-max-microvolt = <750000>; ++ regulator-always-on; ++ regulator-over-current-protection; ++ }; ++ ++ vdd_usb:ldo4{ ++ regulator-name = "vdd_usb"; ++ interrupts = ; ++ }; ++ ++ vdda:ldo5{ ++ regulator-name = "vdda"; ++ regulator-min-microvolt = <2900000>; ++ regulator-max-microvolt = <2900000>; ++ interrupts = ; ++ regulator-boot-on; ++ }; ++ ++ v1v2_hdmi:ldo6{ ++ regulator-name = "v1v2_hdmi"; ++ regulator-min-microvolt = <1200000>; ++ regulator-max-microvolt = <1200000>; ++ regulator-always-on; ++ interrupts = ; ++ }; ++ ++ vref_ddr:vref_ddr{ ++ regulator-name = "vref_ddr"; ++ regulator-always-on; ++ regulator-over-current-protection; ++ }; ++ ++ bst_out:boost{ ++ regulator-name = "bst_out"; ++ interrupts = ; ++ }; ++ ++ vbus_otg:pwr_sw1{ ++ regulator-name = "vbus_otg"; ++ interrupts = ; ++ }; ++ ++ vbus_sw:pwr_sw2{ ++ regulator-name = "vbus_sw"; ++ interrupts = ; ++ regulator-active-discharge = <1>; ++ }; ++ }; ++ ++ onkey{ ++ compatible = "st,stpmic1-onkey"; ++ interrupts = , ; ++ interrupt-names = "onkey-falling", "onkey-rising"; ++ power-off-time-sec = <10>; ++ status = "okay"; ++ }; ++ ++ watchdog { ++ compatible = "st,stpmic1-wdt"; ++ status = "disabled"; ++ }; ++ }; ++ eeprom@50 { ++ compatible = "atmel,24c02"; ++ reg = <0x50>; ++ pagesize = <16>; ++ }; ++}; ++ ++&ipcc{ ++ status = "okay"; ++}; ++ ++&iwdg2{ ++ status = "okay"; ++ timeout-sec = <32>; ++}; ++ ++&mdma1{ ++ status = "okay"; ++}; ++ ++&rcc{ ++ u-boot,dm-pre-reloc; ++ status = "okay"; ++}; ++ ++&rng1{ ++ status = "okay"; ++}; ++ ++&rtc{ ++ status = "okay"; ++}; ++ ++&sdmmc1{ ++ u-boot,dm-pre-reloc; ++ pinctrl-names = "default", "opendrain", "sleep"; ++ pinctrl-0 = <&sdmmc1_pins_mx>; ++ pinctrl-1 = <&sdmmc1_opendrain_pins_mx>; ++ pinctrl-2 = <&sdmmc1_sleep_pins_mx>; ++ status = "okay"; ++ ++ cd-gpios = <&gpiog 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; ++ disable-wp; ++ st,neg-edge; ++ bus-width = <4>; ++ vmmc-supply = <&v3v3>; ++}; ++ ++&tamp{ ++ status = "okay"; ++}; ++ ++&uart4{ ++ u-boot,dm-pre-reloc; ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&uart4_pins_mx>; ++ pinctrl-1 = <&uart4_sleep_pins_mx>; ++ status = "okay"; ++ ++ /delete-property/ dmas; ++ /delete-property/ dma-names; ++}; ++ ++&usbh_ehci{ ++ status = "okay"; ++ phys = <&usbphyc_port0>; ++}; ++ ++&usbh_ohci{ ++ status = "okay"; ++}; ++ ++&usbotg_hs{ ++ u-boot,dm-pre-reloc; ++ status = "okay"; ++ phys = <&usbphyc_port1 0>; ++ phy-names = "usb2-phy"; ++}; ++ ++&usbphyc{ ++ u-boot,dm-pre-reloc; ++ status = "okay"; ++}; ++ ++&usbphyc_port0{ ++ u-boot,dm-pre-reloc; ++ status = "okay"; ++ phy-supply = <&vdd_usb>; ++ st,phy-tuning = <&usb_phy_tuning>; ++}; ++ ++&usbphyc_port1{ ++ u-boot,dm-pre-reloc; ++ status = "okay"; ++ phy-supply = <&vdd_usb>; ++ st,phy-tuning = <&usb_phy_tuning>; ++}; ++ ++&adc { ++ vdd-supply = <&vdd>; ++ vdda-supply = <&vdda>; ++ vref-supply = <&vdda>; ++ status = "okay"; ++ adc1: adc@0 { ++ st,min-sample-time-nsecs = <5000>; ++ st,adc-channels = <0 1>; ++ status = "okay"; ++ }; ++ ++ adc2: adc@100 { ++ status = "okay"; ++ }; ++ ++ adc_temp: temp { ++ status = "okay"; ++ }; ++}; ++ ++&usbh_ohci{ ++ phys = <&usbphyc_port0>; ++}; ++ ++&cpu0{ ++ cpu-supply = <&vddcore>; ++}; ++ ++&cpu1{ ++ cpu-supply = <&vddcore>; ++}; ++ ++&sram{ ++ dma_pool:dma_pool@0{ ++ reg = <0x50000 0x10000>; ++ pool; ++ }; ++}; ++ ++&spi2 { ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&spi2_pins_mx>; ++ pinctrl-1 = <&spi2_sleep_pins_mx>; ++ cs-gpios = <&gpioi 0 0>; ++ status = "okay"; ++ ++ spidev2: spidev2@0{ ++ compatible = "rohm,dh2228fv"; ++ spi-max-frequency = <30000000>; ++ reg = <0>; ++ }; ++}; ++ ++&spi4 { ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&spi4_pins_mx>; ++ pinctrl-1 = <&spi4_sleep_pins_mx>; ++ cs-gpios = <&gpioe 11 0>; ++ status = "okay"; ++ ++ spidev4: spidev4@0{ ++ compatible = "rohm,dh2228fv"; ++ spi-max-frequency = <30000000>; ++ reg = <0>; ++ }; ++}; ++ ++&spi6 { ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&spi6_pins_mx>; ++ pinctrl-1 = <&spi6_sleep_pins_mx>; ++ cs-gpios = <&gpioz 3 0>; ++ status = "okay"; ++ ++ spidev6: spidev6@0{ ++ compatible = "rohm,dh2228fv"; ++ spi-max-frequency = <30000000>; ++ reg = <0>; ++ }; ++}; ++ ++&usart2 { ++ pinctrl-names = "default", "sleep", "idle"; ++ pinctrl-0 = <&usart2_pins_mx>; ++ pinctrl-1 = <&usart2_sleep_pins_mx>; ++ pinctrl-2 = <&usart2_idle_pins_mx>; ++ status = "okay"; ++}; ++ ++&uart5 { ++ pinctrl-names = "default", "sleep", "idle"; ++ pinctrl-0 = <&uart5_pins_mx>; ++ pinctrl-1 = <&uart5_sleep_pins_mx>; ++ pinctrl-2 = <&uart5_idle_pins_mx>; ++ status = "okay"; ++}; ++ ++&uart7 { ++ pinctrl-names = "default", "sleep", "idle"; ++ pinctrl-0 = <&uart7_pins_mx>; ++ pinctrl-1 = <&uart7_sleep_pins_mx>; ++ pinctrl-2 = <&uart7_idle_pins_mx>; ++ status = "okay"; ++}; ++ ++&uart8 { ++ pinctrl-names = "default", "sleep", "idle"; ++ pinctrl-0 = <&uart8_pins_mx>; ++ pinctrl-1 = <&uart8_sleep_pins_mx>; ++ pinctrl-2 = <&uart8_idle_pins_mx>; ++ status = "okay"; ++}; ++ ++&m_can1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&m_can1_pins_mx>; ++ status = "okay"; ++ can-transceiver { ++ max-bitrate = <5000000>; ++ }; ++}; ++ ++&timers1 { ++ status = "okay"; ++ /* spare dmas for other usage */ ++ /delete-property/dmas; ++ /delete-property/dma-names; ++ pwm1: pwm { ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&pwm1_pins_mx>; ++ pinctrl-1 = <&pwm1_sleep_pins_mx>; ++ status = "okay"; ++ }; ++}; ++ ++&timers3 { ++ status = "okay"; ++ /* spare dmas for other usage */ ++ /delete-property/dmas; ++ /delete-property/dma-names; ++ pwm3: pwm { ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&pwm3_pins_mx>; ++ pinctrl-1 = <&pwm3_sleep_pins_mx>; ++ status = "okay"; ++ }; ++}; ++ ++&timers4 { ++ status = "okay"; ++ /* spare dmas for other usage */ ++ /delete-property/dmas; ++ /delete-property/dma-names; ++ pwm4: pwm { ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&pwm4_pins_mx>; ++ pinctrl-1 = <&pwm4_sleep_pins_mx>; ++ status = "okay"; ++ }; ++}; ++ ++&timers8 { ++ status = "okay"; ++ /* spare dmas for other usage */ ++ /delete-property/dmas; ++ /delete-property/dma-names; ++ pwm8: pwm { ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&pwm8_pins_mx>; ++ pinctrl-1 = <&pwm8_sleep_pins_mx>; ++ status = "okay"; ++ }; ++}; ++ ++&timers12 { ++ status = "okay"; ++ /* spare dmas for other usage */ ++ /delete-property/dmas; ++ /delete-property/dma-names; ++ pwm12: pwm { ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&pwm12_pins_mx>; ++ pinctrl-1 = <&pwm12_sleep_pins_mx>; ++ status = "okay"; ++ }; ++}; +-- +2.25.1 + diff --git a/board/octavo/osd32mp1-brk/patches/uboot/0002-Add-OSD32MP1-BRK-build-config.patch b/board/octavo/osd32mp1-brk/patches/uboot/0002-Add-OSD32MP1-BRK-build-config.patch new file mode 100644 index 00000000..ff323562 --- /dev/null +++ b/board/octavo/osd32mp1-brk/patches/uboot/0002-Add-OSD32MP1-BRK-build-config.patch @@ -0,0 +1,881 @@ +From cbe33390a338428d74a4549cb28e25af42d7f7d9 Mon Sep 17 00:00:00 2001 +From: "neeraj.dantu" +Date: Sun, 21 Nov 2021 23:31:02 -0600 +Subject: [PATCH 2/2] Add OSD32MP1-BRK build config + +Signed-off-by: Kory Maincent +--- + arch/arm/mach-stm32mp/Kconfig | 10 +- + board/octavo/osd32mp1-brk/Kconfig | 13 + + board/octavo/osd32mp1-brk/MAINTAINERS | 8 + + board/octavo/osd32mp1-brk/Makefile | 9 + + board/octavo/osd32mp1-brk/board.c | 631 +++++++++++++++++++++++++ + configs/osd32mp1_brk_trusted_defconfig | 141 ++++++ + 6 files changed, 811 insertions(+), 1 deletion(-) + create mode 100644 board/octavo/osd32mp1-brk/Kconfig + create mode 100644 board/octavo/osd32mp1-brk/MAINTAINERS + create mode 100644 board/octavo/osd32mp1-brk/Makefile + create mode 100644 board/octavo/osd32mp1-brk/board.c + create mode 100644 configs/osd32mp1_brk_trusted_defconfig + +diff --git a/arch/arm/mach-stm32mp/Kconfig b/arch/arm/mach-stm32mp/Kconfig +index 44bfac9000..006855acad 100644 +--- a/arch/arm/mach-stm32mp/Kconfig ++++ b/arch/arm/mach-stm32mp/Kconfig +@@ -92,6 +92,14 @@ config TARGET_DH_STM32MP1_PDK2 + help + Target the DH PDK2 development kit with STM32MP15x SoM. + ++config TARGET_OCTAVO_OSD32MP1_BRK ++ bool "Octavo OSD32MP1 BRK" ++ select STM32MP15x ++ imply BOOTCOUNT_LIMIT ++ imply CMD_BOOTCOUNT ++ help ++ Target the Octavo BRK board based on OSD32MP1 SiP. ++ + endchoice + + config SYS_TEXT_BASE +@@ -172,5 +180,5 @@ endif + source "arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig" + source "board/st/stm32mp1/Kconfig" + source "board/dhelectronics/dh_stm32mp1/Kconfig" +- ++source "board/octavo/osd32mp1-brk/Kconfig" + endif +diff --git a/board/octavo/osd32mp1-brk/Kconfig b/board/octavo/osd32mp1-brk/Kconfig +new file mode 100644 +index 0000000000..907a09c170 +--- /dev/null ++++ b/board/octavo/osd32mp1-brk/Kconfig +@@ -0,0 +1,13 @@ ++if TARGET_OCTAVO_OSD32MP1_BRK ++ ++config SYS_BOARD ++ default "osd32mp1-brk" ++ ++config SYS_VENDOR ++ default "octavo" ++ ++config SYS_CONFIG_NAME ++ default "stm32mp1" ++ ++source "board/st/common/Kconfig" ++endif +diff --git a/board/octavo/osd32mp1-brk/MAINTAINERS b/board/octavo/osd32mp1-brk/MAINTAINERS +new file mode 100644 +index 0000000000..9c0addbc21 +--- /dev/null ++++ b/board/octavo/osd32mp1-brk/MAINTAINERS +@@ -0,0 +1,8 @@ ++OCTAVO osd32mp1-brk BOARD ++M: Martin Lesniak ++M: Neeraj Dantu ++S: Maintained ++F: arch/arm/dts/stm32mp157c-osd32mp1-brk* ++F: board/Octavo/osd32mp1-brk/ ++F: configs/osd32mp1_brk_trusted_defconfig ++F: include/configs/stm32mp1.h +diff --git a/board/octavo/osd32mp1-brk/Makefile b/board/octavo/osd32mp1-brk/Makefile +new file mode 100644 +index 0000000000..b368b396a4 +--- /dev/null ++++ b/board/octavo/osd32mp1-brk/Makefile +@@ -0,0 +1,9 @@ ++# SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause ++# ++# Copyright (C) 2018, STMicroelectronics - All Rights Reserved ++# ++ ++obj-y += ../../st/common/stpmic1.o board.o ++ ++obj-$(CONFIG_SYS_MTDPARTS_RUNTIME) += ../../st/common/stm32mp_mtdparts.o ++obj-$(CONFIG_SET_DFU_ALT_INFO) += ../../st/common/stm32mp_dfu.o +diff --git a/board/octavo/osd32mp1-brk/board.c b/board/octavo/osd32mp1-brk/board.c +new file mode 100644 +index 0000000000..fd97c9a390 +--- /dev/null ++++ b/board/octavo/osd32mp1-brk/board.c +@@ -0,0 +1,631 @@ ++// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause ++/* ++ * Copyright (C) 2018, STMicroelectronics - All Rights Reserved ++ */ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++/* SYSCFG registers */ ++#define SYSCFG_BOOTR 0x00 ++#define SYSCFG_PMCSETR 0x04 ++#define SYSCFG_IOCTRLSETR 0x18 ++#define SYSCFG_ICNR 0x1C ++#define SYSCFG_CMPCR 0x20 ++#define SYSCFG_CMPENSETR 0x24 ++#define SYSCFG_PMCCLRR 0x44 ++ ++#define SYSCFG_BOOTR_BOOT_MASK GENMASK(2, 0) ++#define SYSCFG_BOOTR_BOOTPD_SHIFT 4 ++ ++#define SYSCFG_IOCTRLSETR_HSLVEN_TRACE BIT(0) ++#define SYSCFG_IOCTRLSETR_HSLVEN_QUADSPI BIT(1) ++#define SYSCFG_IOCTRLSETR_HSLVEN_ETH BIT(2) ++#define SYSCFG_IOCTRLSETR_HSLVEN_SDMMC BIT(3) ++#define SYSCFG_IOCTRLSETR_HSLVEN_SPI BIT(4) ++ ++#define SYSCFG_CMPCR_SW_CTRL BIT(1) ++#define SYSCFG_CMPCR_READY BIT(8) ++ ++#define SYSCFG_CMPENSETR_MPU_EN BIT(0) ++ ++#define SYSCFG_PMCSETR_ETH_CLK_SEL BIT(16) ++#define SYSCFG_PMCSETR_ETH_REF_CLK_SEL BIT(17) ++ ++#define SYSCFG_PMCSETR_ETH_SELMII BIT(20) ++ ++#define SYSCFG_PMCSETR_ETH_SEL_MASK GENMASK(23, 21) ++#define SYSCFG_PMCSETR_ETH_SEL_GMII_MII 0 ++#define SYSCFG_PMCSETR_ETH_SEL_RGMII BIT(21) ++#define SYSCFG_PMCSETR_ETH_SEL_RMII BIT(23) ++ ++/* ++ * Get a global data pointer ++ */ ++DECLARE_GLOBAL_DATA_PTR; ++ ++int setup_mac_address(void) ++{ ++ struct udevice *dev; ++ ofnode eeprom; ++ unsigned char enetaddr[6]; ++ int ret; ++ ++ ret = eth_env_get_enetaddr("ethaddr", enetaddr); ++ if (ret) /* ethaddr is already set */ ++ return 0; ++ ++ eeprom = ofnode_path("/soc/i2c@5c002000/eeprom@50"); ++ if (!ofnode_valid(eeprom)) { ++ printf("Invalid hardware path to EEPROM!\n"); ++ return -ENODEV; ++ } ++ ++ ret = uclass_get_device_by_ofnode(UCLASS_I2C_EEPROM, eeprom, &dev); ++ if (ret) { ++ printf("Cannot find EEPROM!\n"); ++ return ret; ++ } ++ ++ ret = i2c_eeprom_read(dev, 0xfa, enetaddr, 0x6); ++ if (ret) { ++ printf("Error reading configuration EEPROM!\n"); ++ return ret; ++ } ++ ++ if (is_valid_ethaddr(enetaddr)) ++ eth_env_set_enetaddr("ethaddr", enetaddr); ++ ++ return 0; ++} ++ ++int checkboard(void) ++{ ++ char *mode; ++ const char *fdt_compat; ++ int fdt_compat_len; ++ ++ if (IS_ENABLED(CONFIG_STM32MP15x_STM32IMAGE)) ++ mode = "trusted - stm32image"; ++ else if (IS_ENABLED(CONFIG_TFABOOT)) ++ mode = "trusted"; ++ else ++ mode = "basic"; ++ ++ printf("Board: stm32mp1 in %s mode", mode); ++ fdt_compat = fdt_getprop(gd->fdt_blob, 0, "compatible", ++ &fdt_compat_len); ++ if (fdt_compat && fdt_compat_len) ++ printf(" (%s)", fdt_compat); ++ puts("\n"); ++ ++ return 0; ++} ++ ++static void board_key_check(void) ++{ ++ ofnode node; ++ struct gpio_desc gpio; ++ enum forced_boot_mode boot_mode = BOOT_NORMAL; ++ ++ if (!IS_ENABLED(CONFIG_FASTBOOT) && !IS_ENABLED(CONFIG_CMD_STM32PROG)) ++ return; ++ ++ node = ofnode_path("/config"); ++ if (!ofnode_valid(node)) { ++ debug("%s: no /config node?\n", __func__); ++ return; ++ } ++ if (IS_ENABLED(CONFIG_FASTBOOT)) { ++ if (gpio_request_by_name_nodev(node, "st,fastboot-gpios", 0, ++ &gpio, GPIOD_IS_IN)) { ++ debug("%s: could not find a /config/st,fastboot-gpios\n", ++ __func__); ++ } else { ++ if (dm_gpio_get_value(&gpio)) { ++ puts("Fastboot key pressed, "); ++ boot_mode = BOOT_FASTBOOT; ++ } ++ ++ dm_gpio_free(NULL, &gpio); ++ } ++ } ++ if (IS_ENABLED(CONFIG_CMD_STM32PROG)) { ++ if (gpio_request_by_name_nodev(node, "st,stm32prog-gpios", 0, ++ &gpio, GPIOD_IS_IN)) { ++ debug("%s: could not find a /config/st,stm32prog-gpios\n", ++ __func__); ++ } else { ++ if (dm_gpio_get_value(&gpio)) { ++ puts("STM32Programmer key pressed, "); ++ boot_mode = BOOT_STM32PROG; ++ } ++ dm_gpio_free(NULL, &gpio); ++ } ++ } ++ if (boot_mode != BOOT_NORMAL) { ++ puts("entering download mode...\n"); ++ clrsetbits_le32(TAMP_BOOT_CONTEXT, ++ TAMP_BOOT_FORCED_MASK, ++ boot_mode); ++ } ++} ++ ++int g_dnl_board_usb_cable_connected(void) ++{ ++ struct udevice *dwc2_udc_otg; ++ int ret; ++ ++ if (!IS_ENABLED(CONFIG_USB_GADGET_DWC2_OTG)) ++ return -ENODEV; ++ ret = uclass_get_device_by_driver(UCLASS_USB_GADGET_GENERIC, ++ DM_GET_DRIVER(dwc2_udc_otg), ++ &dwc2_udc_otg); ++ if (!ret) ++ debug("dwc2_udc_otg init failed\n"); ++ ++ return dwc2_udc_B_session_valid(dwc2_udc_otg); ++} ++ ++#ifdef CONFIG_USB_GADGET_DOWNLOAD ++#define STM32MP1_G_DNL_DFU_PRODUCT_NUM 0xdf11 ++#define STM32MP1_G_DNL_FASTBOOT_PRODUCT_NUM 0x0afb ++ ++int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name) ++{ ++ if (IS_ENABLED(CONFIG_DFU_OVER_USB) && ++ !strcmp(name, "usb_dnl_dfu")) ++ put_unaligned(STM32MP1_G_DNL_DFU_PRODUCT_NUM, &dev->idProduct); ++ else if (IS_ENABLED(CONFIG_FASTBOOT) && ++ !strcmp(name, "usb_dnl_fastboot")) ++ put_unaligned(STM32MP1_G_DNL_FASTBOOT_PRODUCT_NUM, ++ &dev->idProduct); ++ else ++ put_unaligned(CONFIG_USB_GADGET_PRODUCT_NUM, &dev->idProduct); ++ ++ return 0; ++} ++#endif /* CONFIG_USB_GADGET_DOWNLOAD */ ++ ++static int get_led(struct udevice **dev, char *led_string) ++{ ++ char *led_name; ++ int ret; ++ ++ led_name = fdtdec_get_config_string(gd->fdt_blob, led_string); ++ if (!led_name) { ++ pr_debug("%s: could not find %s config string\n", ++ __func__, led_string); ++ return -ENOENT; ++ } ++ ret = led_get_by_label(led_name, dev); ++ if (ret) { ++ debug("%s: get=%d\n", __func__, ret); ++ return ret; ++ } ++ ++ return 0; ++} ++ ++static int setup_led(enum led_state_t cmd) ++{ ++ struct udevice *dev; ++ int ret; ++ ++ if (!CONFIG_IS_ENABLED(LED)) ++ return 0; ++ ++ ret = get_led(&dev, "u-boot,boot-led"); ++ if (ret) ++ return ret; ++ ++ ret = led_set_state(dev, cmd); ++ return ret; ++} ++ ++static void __maybe_unused led_error_blink(u32 nb_blink) ++{ ++ int ret; ++ struct udevice *led; ++ u32 i; ++ ++ if (!nb_blink) ++ return; ++ ++ if (CONFIG_IS_ENABLED(LED)) { ++ ret = get_led(&led, "u-boot,error-led"); ++ if (!ret) { ++ /* make u-boot,error-led blinking */ ++ /* if U32_MAX and 125ms interval, for 17.02 years */ ++ for (i = 0; i < 2 * nb_blink; i++) { ++ led_set_state(led, LEDST_TOGGLE); ++ mdelay(125); ++ WATCHDOG_RESET(); ++ } ++ led_set_state(led, LEDST_ON); ++ } ++ } ++ ++ /* infinite: the boot process must be stopped */ ++ if (nb_blink == U32_MAX) ++ hang(); ++} ++ ++static void sysconf_init(void) ++{ ++ u8 *syscfg; ++ struct udevice *pwr_dev; ++ struct udevice *pwr_reg; ++ struct udevice *dev; ++ u32 otp = 0; ++ int ret; ++ u32 bootr, val; ++ ++ syscfg = (u8 *)syscon_get_first_range(STM32MP_SYSCON_SYSCFG); ++ ++ /* interconnect update : select master using the port 1 */ ++ /* LTDC = AXI_M9 */ ++ /* GPU = AXI_M8 */ ++ /* today information is hardcoded in U-Boot */ ++ writel(BIT(9), syscfg + SYSCFG_ICNR); ++ ++ /* disable Pull-Down for boot pin connected to VDD */ ++ bootr = readl(syscfg + SYSCFG_BOOTR); ++ bootr &= ~(SYSCFG_BOOTR_BOOT_MASK << SYSCFG_BOOTR_BOOTPD_SHIFT); ++ bootr |= (bootr & SYSCFG_BOOTR_BOOT_MASK) << SYSCFG_BOOTR_BOOTPD_SHIFT; ++ writel(bootr, syscfg + SYSCFG_BOOTR); ++ ++ /* High Speed Low Voltage Pad mode Enable for SPI, SDMMC, ETH, QSPI ++ * and TRACE. Needed above ~50MHz and conditioned by AFMUX selection. ++ * The customer will have to disable this for low frequencies ++ * or if AFMUX is selected but the function not used, typically for ++ * TRACE. Otherwise, impact on power consumption. ++ * ++ * WARNING: ++ * enabling High Speed mode while VDD>2.7V ++ * with the OTP product_below_2v5 (OTP 18, BIT 13) ++ * erroneously set to 1 can damage the IC! ++ * => U-Boot set the register only if VDD < 2.7V (in DT) ++ * but this value need to be consistent with board design ++ */ ++ ret = uclass_get_device_by_driver(UCLASS_PMIC, ++ DM_GET_DRIVER(stm32mp_pwr_pmic), ++ &pwr_dev); ++ if (!ret && IS_ENABLED(CONFIG_DM_REGULATOR)) { ++ ret = uclass_get_device_by_driver(UCLASS_MISC, ++ DM_GET_DRIVER(stm32mp_bsec), ++ &dev); ++ if (ret) { ++ pr_err("Can't find stm32mp_bsec driver\n"); ++ return; ++ } ++ ++ ret = misc_read(dev, STM32_BSEC_SHADOW(18), &otp, 4); ++ if (ret > 0) ++ otp = otp & BIT(13); ++ ++ /* get VDD = vdd-supply */ ++ ret = device_get_supply_regulator(pwr_dev, "vdd-supply", ++ &pwr_reg); ++ ++ /* check if VDD is Low Voltage */ ++ if (!ret) { ++ if (regulator_get_value(pwr_reg) < 2700000) { ++ writel(SYSCFG_IOCTRLSETR_HSLVEN_TRACE | ++ SYSCFG_IOCTRLSETR_HSLVEN_QUADSPI | ++ SYSCFG_IOCTRLSETR_HSLVEN_ETH | ++ SYSCFG_IOCTRLSETR_HSLVEN_SDMMC | ++ SYSCFG_IOCTRLSETR_HSLVEN_SPI, ++ syscfg + SYSCFG_IOCTRLSETR); ++ ++ if (!otp) ++ pr_err("product_below_2v5=0: HSLVEN protected by HW\n"); ++ } else { ++ if (otp) ++ pr_err("product_below_2v5=1: HSLVEN update is destructive, no update as VDD>2.7V\n"); ++ } ++ } else { ++ debug("VDD unknown"); ++ } ++ } ++ ++ /* activate automatic I/O compensation ++ * warning: need to ensure CSI enabled and ready in clock driver ++ */ ++ writel(SYSCFG_CMPENSETR_MPU_EN, syscfg + SYSCFG_CMPENSETR); ++ ++ /* poll until ready (1s timeout) */ ++ ret = readl_poll_timeout(syscfg + SYSCFG_CMPCR, val, ++ val & SYSCFG_CMPCR_READY, ++ 1000000); ++ if (ret) { ++ pr_err("SYSCFG: I/O compensation failed, timeout.\n"); ++ led_error_blink(10); ++ } ++ ++ clrbits_le32(syscfg + SYSCFG_CMPCR, SYSCFG_CMPCR_SW_CTRL); ++} ++ ++/* board dependent setup after realloc */ ++int board_init(void) ++{ ++ /* address of boot parameters */ ++ gd->bd->bi_boot_params = STM32_DDR_BASE + 0x100; ++ ++ if (CONFIG_IS_ENABLED(DM_GPIO_HOG)) ++ gpio_hog_probe_all(); ++ ++ board_key_check(); ++ ++ if (IS_ENABLED(CONFIG_DM_REGULATOR)) ++ regulators_enable_boot_on(_DEBUG); ++ ++ if (!IS_ENABLED(CONFIG_TFABOOT)) ++ sysconf_init(); ++ ++ if (CONFIG_IS_ENABLED(LED)) ++ led_default_state(); ++ ++ return 0; ++} ++ ++int board_late_init(void) ++{ ++ char *boot_device; ++ const void *fdt_compat; ++ int fdt_compat_len; ++ int ret; ++ u32 otp; ++ struct udevice *dev; ++ char buf[10]; ++ char dtb_name[256]; ++ int buf_len; ++ ++ if (IS_ENABLED(CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG)) { ++ fdt_compat = fdt_getprop(gd->fdt_blob, 0, "compatible", ++ &fdt_compat_len); ++ if (fdt_compat && fdt_compat_len) { ++ if (strncmp(fdt_compat, "st,", 3) != 0) { ++ env_set("board_name", fdt_compat); ++ } else { ++ env_set("board_name", fdt_compat + 3); ++ ++ buf_len = sizeof(dtb_name); ++ strncpy(dtb_name, fdt_compat + 3, buf_len); ++ buf_len -= strlen(fdt_compat + 3); ++ strncat(dtb_name, ".dtb", buf_len); ++ env_set("fdtfile", dtb_name); ++ } ++ } ++ ret = uclass_get_device_by_driver(UCLASS_MISC, ++ DM_GET_DRIVER(stm32mp_bsec), ++ &dev); ++ ++ if (!ret) ++ ret = misc_read(dev, STM32_BSEC_SHADOW(BSEC_OTP_BOARD), ++ &otp, sizeof(otp)); ++ if (ret > 0 && otp) { ++ snprintf(buf, sizeof(buf), "0x%04x", otp >> 16); ++ env_set("board_id", buf); ++ ++ snprintf(buf, sizeof(buf), "0x%04x", ++ ((otp >> 8) & 0xF) - 1 + 0xA); ++ env_set("board_rev", buf); ++ } ++ } ++ ++ /* Check the boot-source to disable bootdelay */ ++ boot_device = env_get("boot_device"); ++ if (!strcmp(boot_device, "serial") || !strcmp(boot_device, "usb")) ++ env_set("bootdelay", "0"); ++ ++ return 0; ++} ++ ++void board_quiesce_devices(void) ++{ ++ setup_led(LEDST_OFF); ++} ++ ++/* eth init function : weak called in eqos driver */ ++int board_interface_eth_init(struct udevice *dev, ++ phy_interface_t interface_type, ulong rate) ++{ ++ u8 *syscfg; ++ u32 value; ++ bool eth_clk_sel_reg = false; ++ bool eth_ref_clk_sel_reg = false; ++ ++ /* Gigabit Ethernet 125MHz clock selection. */ ++ eth_clk_sel_reg = dev_read_bool(dev, "st,eth_clk_sel"); ++ ++ /* Ethernet 50Mhz RMII clock selection */ ++ eth_ref_clk_sel_reg = ++ dev_read_bool(dev, "st,eth_ref_clk_sel"); ++ ++ syscfg = (u8 *)syscon_get_first_range(STM32MP_SYSCON_SYSCFG); ++ ++ if (!syscfg) ++ return -ENODEV; ++ ++ switch (interface_type) { ++ case PHY_INTERFACE_MODE_MII: ++ value = SYSCFG_PMCSETR_ETH_SEL_GMII_MII | ++ SYSCFG_PMCSETR_ETH_REF_CLK_SEL; ++ debug("%s: PHY_INTERFACE_MODE_MII\n", __func__); ++ break; ++ case PHY_INTERFACE_MODE_GMII: ++ if (eth_clk_sel_reg) ++ value = SYSCFG_PMCSETR_ETH_SEL_GMII_MII | ++ SYSCFG_PMCSETR_ETH_CLK_SEL; ++ else ++ value = SYSCFG_PMCSETR_ETH_SEL_GMII_MII; ++ debug("%s: PHY_INTERFACE_MODE_GMII\n", __func__); ++ break; ++ case PHY_INTERFACE_MODE_RMII: ++ if (eth_ref_clk_sel_reg) ++ value = SYSCFG_PMCSETR_ETH_SEL_RMII | ++ SYSCFG_PMCSETR_ETH_REF_CLK_SEL; ++ else ++ value = SYSCFG_PMCSETR_ETH_SEL_RMII; ++ debug("%s: PHY_INTERFACE_MODE_RMII\n", __func__); ++ break; ++ case PHY_INTERFACE_MODE_RGMII: ++ case PHY_INTERFACE_MODE_RGMII_ID: ++ case PHY_INTERFACE_MODE_RGMII_RXID: ++ case PHY_INTERFACE_MODE_RGMII_TXID: ++ if (eth_clk_sel_reg) ++ value = SYSCFG_PMCSETR_ETH_SEL_RGMII | ++ SYSCFG_PMCSETR_ETH_CLK_SEL; ++ else ++ value = SYSCFG_PMCSETR_ETH_SEL_RGMII; ++ debug("%s: PHY_INTERFACE_MODE_RGMII\n", __func__); ++ break; ++ default: ++ debug("%s: Do not manage %d interface\n", ++ __func__, interface_type); ++ /* Do not manage others interfaces */ ++ return -EINVAL; ++ } ++ ++ /* clear and set ETH configuration bits */ ++ writel(SYSCFG_PMCSETR_ETH_SEL_MASK | SYSCFG_PMCSETR_ETH_SELMII | ++ SYSCFG_PMCSETR_ETH_REF_CLK_SEL | SYSCFG_PMCSETR_ETH_CLK_SEL, ++ syscfg + SYSCFG_PMCCLRR); ++ writel(value, syscfg + SYSCFG_PMCSETR); ++ ++ return 0; ++} ++ ++enum env_location env_get_location(enum env_operation op, int prio) ++{ ++ u32 bootmode = get_bootmode(); ++ ++ if (prio) ++ return ENVL_UNKNOWN; ++ ++ switch (bootmode & TAMP_BOOT_DEVICE_MASK) { ++ case BOOT_FLASH_SD: ++ case BOOT_FLASH_EMMC: ++ if (CONFIG_IS_ENABLED(ENV_IS_IN_MMC)) ++ return ENVL_MMC; ++ else if (CONFIG_IS_ENABLED(ENV_IS_IN_EXT4)) ++ return ENVL_EXT4; ++ else ++ return ENVL_NOWHERE; ++ ++ case BOOT_FLASH_NAND: ++ case BOOT_FLASH_SPINAND: ++ if (CONFIG_IS_ENABLED(ENV_IS_IN_UBI)) ++ return ENVL_UBI; ++ else ++ return ENVL_NOWHERE; ++ ++ case BOOT_FLASH_NOR: ++ if (CONFIG_IS_ENABLED(ENV_IS_IN_SPI_FLASH)) ++ return ENVL_SPI_FLASH; ++ else ++ return ENVL_NOWHERE; ++ ++ default: ++ return ENVL_NOWHERE; ++ } ++} ++ ++const char *env_ext4_get_intf(void) ++{ ++ u32 bootmode = get_bootmode(); ++ ++ switch (bootmode & TAMP_BOOT_DEVICE_MASK) { ++ case BOOT_FLASH_SD: ++ case BOOT_FLASH_EMMC: ++ return "mmc"; ++ default: ++ return ""; ++ } ++} ++ ++const char *env_ext4_get_dev_part(void) ++{ ++ static char *const dev_part[] = {"0:auto", "1:auto", "2:auto"}; ++ u32 bootmode = get_bootmode(); ++ ++ return dev_part[(bootmode & TAMP_BOOT_INSTANCE_MASK) - 1]; ++} ++ ++int mmc_get_env_dev(void) ++{ ++ u32 bootmode; ++ ++ if (CONFIG_SYS_MMC_ENV_DEV >= 0) ++ return CONFIG_SYS_MMC_ENV_DEV; ++ ++ bootmode = get_bootmode(); ++ ++ /* use boot instance to select the correct mmc device identifier */ ++ return (bootmode & TAMP_BOOT_INSTANCE_MASK) - 1; ++} ++ ++#if defined(CONFIG_OF_BOARD_SETUP) ++int ft_board_setup(void *blob, struct bd_info *bd) ++{ ++ return 0; ++} ++#endif ++ ++static void board_copro_image_process(ulong fw_image, size_t fw_size) ++{ ++ int ret, id = 0; /* Copro id fixed to 0 as only one coproc on mp1 */ ++ ++ if (!rproc_is_initialized()) ++ if (rproc_init()) { ++ printf("Remote Processor %d initialization failed\n", ++ id); ++ return; ++ } ++ ++ ret = rproc_load(id, fw_image, fw_size); ++ printf("Load Remote Processor %d with data@addr=0x%08lx %u bytes:%s\n", ++ id, fw_image, fw_size, ret ? " Failed!" : " Success!"); ++ ++ if (!ret) ++ rproc_start(id); ++} ++ ++U_BOOT_FIT_LOADABLE_HANDLER(IH_TYPE_COPRO, board_copro_image_process); +diff --git a/configs/osd32mp1_brk_trusted_defconfig b/configs/osd32mp1_brk_trusted_defconfig +new file mode 100644 +index 0000000000..6d41af8886 +--- /dev/null ++++ b/configs/osd32mp1_brk_trusted_defconfig +@@ -0,0 +1,141 @@ ++CONFIG_ARM=y ++CONFIG_ARCH_STM32MP=y ++CONFIG_TFABOOT=y ++CONFIG_SYS_MALLOC_F_LEN=0x3000 ++CONFIG_ENV_OFFSET=0x480000 ++CONFIG_ENV_SECT_SIZE=0x40000 ++# CONFIG_TARGET_ST_STM32MP15x=y ++CONFIG_TARGET_OCTAVO_OSD32MP1_BRK=y ++CONFIG_CMD_STM32PROG=y ++CONFIG_ENV_OFFSET_REDUND=0x4C0000 ++CONFIG_DEFAULT_DEVICE_TREE="stm32mp157c-osd32mp1-brk" ++CONFIG_DISTRO_DEFAULTS=y ++CONFIG_FIT=y ++CONFIG_BOOTDELAY=1 ++CONFIG_BOOTCOMMAND="run bootcmd_stm32mp" ++CONFIG_SYS_PROMPT="OSD32MP> " ++# CONFIG_CMD_BOOTD is not set ++CONFIG_CMD_ADTIMG=y ++# CONFIG_CMD_ELF is not set ++CONFIG_CMD_EEPROM=y ++CONFIG_CMD_ERASEENV=y ++CONFIG_CMD_MEMINFO=y ++CONFIG_CMD_MEMTEST=y ++CONFIG_SYS_MEMTEST_START=0xc0000000 ++CONFIG_SYS_MEMTEST_END=0xc4000000 ++CONFIG_CMD_ADC=y ++CONFIG_CMD_CLK=y ++CONFIG_CMD_DFU=y ++CONFIG_CMD_FUSE=y ++CONFIG_CMD_GPIO=y ++CONFIG_CMD_I2C=y ++CONFIG_CMD_MMC=y ++CONFIG_CMD_REMOTEPROC=y ++CONFIG_CMD_SPI=y ++CONFIG_CMD_USB=y ++CONFIG_CMD_USB_MASS_STORAGE=y ++CONFIG_CMD_BMP=y ++CONFIG_CMD_CACHE=y ++CONFIG_CMD_TIME=y ++CONFIG_CMD_TIMER=y ++CONFIG_CMD_PMIC=y ++CONFIG_CMD_REGULATOR=y ++CONFIG_CMD_EXT4_WRITE=y ++CONFIG_CMD_MTDPARTS=y ++CONFIG_CMD_UBI=y ++CONFIG_ENV_IS_NOWHERE=y ++CONFIG_ENV_IS_IN_MMC=y ++CONFIG_ENV_IS_IN_UBI=y ++CONFIG_SYS_REDUNDAND_ENVIRONMENT=y ++CONFIG_ENV_UBI_PART="UBI" ++CONFIG_ENV_UBI_VOLUME="uboot_config" ++CONFIG_ENV_UBI_VOLUME_REDUND="uboot_config_r" ++CONFIG_SYS_RELOC_GD_ENV_ADDR=y ++CONFIG_SYS_MMC_ENV_DEV=-1 ++CONFIG_STM32_ADC=y ++CONFIG_CLK_SCMI=y ++CONFIG_SET_DFU_ALT_INFO=y ++CONFIG_USB_FUNCTION_FASTBOOT=y ++CONFIG_FASTBOOT_BUF_ADDR=0xC0000000 ++CONFIG_FASTBOOT_BUF_SIZE=0x02000000 ++CONFIG_FASTBOOT_USB_DEV=1 ++CONFIG_FASTBOOT_FLASH=y ++CONFIG_FASTBOOT_FLASH_MMC_DEV=1 ++CONFIG_GPIO_HOG=y ++CONFIG_DM_HWSPINLOCK=y ++CONFIG_HWSPINLOCK_STM32=y ++CONFIG_DM_I2C=y ++CONFIG_SYS_I2C_STM32F7=y ++CONFIG_LED=y ++CONFIG_LED_GPIO=y ++CONFIG_DM_MAILBOX=y ++CONFIG_STM32_IPCC=y ++CONFIG_STM32_FMC2_EBI=y ++CONFIG_I2C_EEPROM=y ++CONFIG_DM_MMC=y ++CONFIG_SUPPORT_EMMC_BOOT=y ++CONFIG_STM32_SDMMC2=y ++CONFIG_MTD=y ++CONFIG_DM_MTD=y ++CONFIG_SYS_MTDPARTS_RUNTIME=y ++CONFIG_MTD_RAW_NAND=y ++CONFIG_NAND_STM32_FMC2=y ++CONFIG_MTD_SPI_NAND=y ++CONFIG_DM_SPI_FLASH=y ++CONFIG_SPI_FLASH_MACRONIX=y ++CONFIG_SPI_FLASH_SPANSION=y ++CONFIG_SPI_FLASH_STMICRO=y ++CONFIG_SPI_FLASH_WINBOND=y ++# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set ++CONFIG_SPI_FLASH_MTD=y ++CONFIG_PHY_REALTEK=y ++CONFIG_DM_ETH=y ++CONFIG_DWC_ETH_QOS=y ++CONFIG_PHY=y ++CONFIG_PHY_STM32_USBPHYC=y ++CONFIG_PINCONF=y ++CONFIG_PINCTRL_STMFX=y ++CONFIG_DM_PMIC=y ++CONFIG_PMIC_STPMIC1=y ++CONFIG_DM_REGULATOR=y ++CONFIG_DM_REGULATOR_FIXED=y ++CONFIG_DM_REGULATOR_GPIO=y ++CONFIG_DM_REGULATOR_STM32_VREFBUF=y ++CONFIG_DM_REGULATOR_STPMIC1=y ++CONFIG_REMOTEPROC_STM32_COPRO=y ++CONFIG_RESET_SCMI=y ++CONFIG_DM_RNG=y ++CONFIG_RNG_STM32MP1=y ++CONFIG_DM_RTC=y ++CONFIG_RTC_STM32=y ++CONFIG_SERIAL_RX_BUFFER=y ++CONFIG_SPI=y ++CONFIG_DM_SPI=y ++CONFIG_STM32_QSPI=y ++CONFIG_STM32_SPI=y ++CONFIG_TEE=y ++CONFIG_OPTEE=y ++# CONFIG_OPTEE_TA_AVB is not set ++CONFIG_USB=y ++CONFIG_DM_USB=y ++CONFIG_DM_USB_GADGET=y ++CONFIG_USB_EHCI_HCD=y ++CONFIG_USB_EHCI_GENERIC=y ++CONFIG_USB_GADGET=y ++CONFIG_USB_GADGET_MANUFACTURER="STMicroelectronics" ++CONFIG_USB_GADGET_VENDOR_NUM=0x0483 ++CONFIG_USB_GADGET_PRODUCT_NUM=0x5720 ++CONFIG_USB_GADGET_DWC2_OTG=y ++CONFIG_DM_VIDEO=y ++CONFIG_BACKLIGHT_GPIO=y ++CONFIG_VIDEO_LCD_ORISETECH_OTM8009A=y ++CONFIG_VIDEO_LCD_RAYDIUM_RM68200=y ++CONFIG_VIDEO_STM32=y ++CONFIG_VIDEO_STM32_DSI=y ++CONFIG_VIDEO_STM32_MAX_XRES=1280 ++CONFIG_VIDEO_STM32_MAX_YRES=800 ++CONFIG_WDT=y ++CONFIG_WDT_STM32MP=y ++CONFIG_ERRNO_STR=y ++CONFIG_FDT_FIXUP_PARTITIONS=y ++CONFIG_LMB_RESERVED_REGIONS=16 +-- +2.25.1 + diff --git a/board/octavo/osd32mp1-brk/readme.txt b/board/octavo/osd32mp1-brk/readme.txt new file mode 100644 index 00000000..8aae419f --- /dev/null +++ b/board/octavo/osd32mp1-brk/readme.txt @@ -0,0 +1,35 @@ +OSD32MP1-BRK + +Intro +===== + +This configuration supports the OSD32MP1-BRK platform: + + https://octavosystems.com/octavo_products/osd32mp1-brk/ + +How to build +============ + + $ make octavo_osd32mp1_brk_defconfig + $ make + +How to write the microSD card +============================= + +Once the build process is finished you will have an image called +"sdcard.img" in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an microSD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Boot the board +============== + + (1) Insert the microSD card. + + (2) Plug an USB-SERIAL cable on the RX, TX and GND pins + + (3) Plug a micro-USB cable to power-up the board. + + (4) The system will start, with the console on UART. diff --git a/board/octavo/osd32mp1-brk/tfa-dts/osd32mp1_ddr_1x4Gb.dtsi b/board/octavo/osd32mp1-brk/tfa-dts/osd32mp1_ddr_1x4Gb.dtsi new file mode 100644 index 00000000..3cd2c3f5 --- /dev/null +++ b/board/octavo/osd32mp1-brk/tfa-dts/osd32mp1_ddr_1x4Gb.dtsi @@ -0,0 +1,121 @@ +/* + * Copyright (C) 2015-2018, STMicroelectronics - All Rights Reserved + * + * SPDX-License-Identifier: GPL-2.0+ BSD-3-Clause + * + */ + +/* + * File generated by STMicroelectronics STM32CubeMX DDR Tool for MPUs + * DDR type: DDR3 / DDR3L + * DDR width: 16bits + * DDR density: 4Gb + * System frequency: 533000Khz + * Relaxed Timing Mode: false + * Address mapping type: RBC + * + * Save Date: 2020.08.27, save Time: 15:22:11 + */ + +#define DDR_MEM_NAME "DDR3-DDR3L 16bits 533000Khz" +#define DDR_MEM_SPEED 533000 +#define DDR_MEM_SIZE 0x20000000 + +#define DDR_MSTR 0x00041401 +#define DDR_MRCTRL0 0x00000010 +#define DDR_MRCTRL1 0x00000000 +#define DDR_DERATEEN 0x00000000 +#define DDR_DERATEINT 0x00800000 +#define DDR_PWRCTL 0x00000000 +#define DDR_PWRTMG 0x00400010 +#define DDR_HWLPCTL 0x00000000 +#define DDR_RFSHCTL0 0x00210000 +#define DDR_RFSHCTL3 0x00000000 +#define DDR_RFSHTMG 0x0081008B +#define DDR_CRCPARCTL0 0x00000000 +#define DDR_DRAMTMG0 0x121B2414 +#define DDR_DRAMTMG1 0x000A041C +#define DDR_DRAMTMG2 0x0608090F +#define DDR_DRAMTMG3 0x0050400C +#define DDR_DRAMTMG4 0x08040608 +#define DDR_DRAMTMG5 0x06060403 +#define DDR_DRAMTMG6 0x02020002 +#define DDR_DRAMTMG7 0x00000202 +#define DDR_DRAMTMG8 0x00001005 +#define DDR_DRAMTMG14 0x000000A0 +#define DDR_ZQCTL0 0xC2000040 +#define DDR_DFITMG0 0x02060105 +#define DDR_DFITMG1 0x00000202 +#define DDR_DFILPCFG0 0x07000000 +#define DDR_DFIUPD0 0xC0400003 +#define DDR_DFIUPD1 0x00000000 +#define DDR_DFIUPD2 0x00000000 +#define DDR_DFIPHYMSTR 0x00000000 +#define DDR_ODTCFG 0x06000600 +#define DDR_ODTMAP 0x00000001 +#define DDR_SCHED 0x00000C01 +#define DDR_SCHED1 0x00000000 +#define DDR_PERFHPR1 0x01000001 +#define DDR_PERFLPR1 0x08000200 +#define DDR_PERFWR1 0x08000400 +#define DDR_DBG0 0x00000000 +#define DDR_DBG1 0x00000000 +#define DDR_DBGCMD 0x00000000 +#define DDR_POISONCFG 0x00000000 +#define DDR_PCCFG 0x00000010 +#define DDR_PCFGR_0 0x00010000 +#define DDR_PCFGW_0 0x00000000 +#define DDR_PCFGQOS0_0 0x02100C03 +#define DDR_PCFGQOS1_0 0x00800100 +#define DDR_PCFGWQOS0_0 0x01100C03 +#define DDR_PCFGWQOS1_0 0x01000200 +#define DDR_PCFGR_1 0x00010000 +#define DDR_PCFGW_1 0x00000000 +#define DDR_PCFGQOS0_1 0x02100C03 +#define DDR_PCFGQOS1_1 0x00800040 +#define DDR_PCFGWQOS0_1 0x01100C03 +#define DDR_PCFGWQOS1_1 0x01000200 +#define DDR_ADDRMAP1 0x00070707 +#define DDR_ADDRMAP2 0x00000000 +#define DDR_ADDRMAP3 0x1F000000 +#define DDR_ADDRMAP4 0x00001F1F +#define DDR_ADDRMAP5 0x06060606 +#define DDR_ADDRMAP6 0x0F060606 +#define DDR_ADDRMAP9 0x00000000 +#define DDR_ADDRMAP10 0x00000000 +#define DDR_ADDRMAP11 0x00000000 +#define DDR_PGCR 0x01442E02 +#define DDR_PTR0 0x0022AA5B +#define DDR_PTR1 0x04841104 +#define DDR_PTR2 0x042DA068 +#define DDR_ACIOCR 0x10400812 +#define DDR_DXCCR 0x00000C40 +#define DDR_DSGCR 0xF200011F +#define DDR_DCR 0x0000000B +#define DDR_DTPR0 0x38D488D0 +#define DDR_DTPR1 0x098B00D8 +#define DDR_DTPR2 0x10023600 +#define DDR_MR0 0x00000840 +#define DDR_MR1 0x00000000 +#define DDR_MR2 0x00000208 +#define DDR_MR3 0x00000000 +#define DDR_ODTCR 0x00010000 +#define DDR_ZQ0CR1 0x00000038 +#define DDR_DX0GCR 0x0000CE81 +#define DDR_DX0DLLCR 0x40000000 +#define DDR_DX0DQTR 0x00112121 +#define DDR_DX0DQSTR 0x3D200000 +#define DDR_DX1GCR 0x0000CE81 +#define DDR_DX1DLLCR 0x40000000 +#define DDR_DX1DQTR 0x11100121 +#define DDR_DX1DQSTR 0x3D200000 +#define DDR_DX2GCR 0x0000CE80 +#define DDR_DX2DLLCR 0x40000000 +#define DDR_DX2DQTR 0xFFFFFFFF +#define DDR_DX2DQSTR 0x3DB02000 +#define DDR_DX3GCR 0x0000CE80 +#define DDR_DX3DLLCR 0x40000000 +#define DDR_DX3DQTR 0xFFFFFFFF +#define DDR_DX3DQSTR 0x3DB02000 + +#include "stm32mp15-ddr.dtsi" diff --git a/board/octavo/osd32mp1-brk/tfa-dts/stm32mp157c-osd32mp1-brk-fw-config.dts b/board/octavo/osd32mp1-brk/tfa-dts/stm32mp157c-osd32mp1-brk-fw-config.dts new file mode 100644 index 00000000..256d0db9 --- /dev/null +++ b/board/octavo/osd32mp1-brk/tfa-dts/stm32mp157c-osd32mp1-brk-fw-config.dts @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) +/* + * Copyright (c) 2020, STMicroelectronics - All Rights Reserved + */ + +#include "stm32mp15-ddr-512m-fw-config.dts" diff --git a/board/octavo/osd32mp1-brk/tfa-dts/stm32mp157c-osd32mp1-brk.dts b/board/octavo/osd32mp1-brk/tfa-dts/stm32mp157c-osd32mp1-brk.dts new file mode 100644 index 00000000..4f21a211 --- /dev/null +++ b/board/octavo/osd32mp1-brk/tfa-dts/stm32mp157c-osd32mp1-brk.dts @@ -0,0 +1,547 @@ +/* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */ +/* + * Copyright (C) STMicroelectronics 2020 - All Rights Reserved + * Author: STM32CubeMX code generation for STMicroelectronics. + */ + +/dts-v1/; +#include +#include +#include +#include + +#include "stm32mp157.dtsi" +#include "stm32mp15xc.dtsi" +#include "stm32mp15xxac-pinctrl.dtsi" +#include "osd32mp1_ddr_1x4Gb.dtsi" + +/ { + model = "Octavo OSD32MP1 BRK board"; + compatible = "st,stm32mp157c-osd32mp1-brk", "st,stm32mp157"; + + aliases { + serial0 = &uart4; + }; + + memory@c0000000 { + device_type = "memory"; + reg = <0xc0000000 0x20000000>; + }; + + vin: vin { + compatible = "regulator-fixed"; + regulator-name = "vin"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + regulator-always-on; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; +}; + +&bsec { + board_id: board_id@ec { + reg = <0xec 0x4>; + st,non-secure-otp; + }; +}; + +&clk_hse { + st,digbypass; +}; + +&cpu0 { + cpu-supply = <&vddcore>; +}; + +&cpu1 { + cpu-supply = <&vddcore>; +}; + +&hash1 { + status = "okay"; +}; + +&cryp1 { + status = "okay"; +}; + +&etzpc { + st,decprot = < + DECPROT(STM32MP1_ETZPC_USART1_ID, DECPROT_NS_RW, DECPROT_UNLOCK) + DECPROT(STM32MP1_ETZPC_SPI6_ID, DECPROT_NS_RW, DECPROT_UNLOCK) + DECPROT(STM32MP1_ETZPC_I2C4_ID, DECPROT_NS_RW, DECPROT_UNLOCK) + DECPROT(STM32MP1_ETZPC_I2C6_ID, DECPROT_NS_RW, DECPROT_UNLOCK) + DECPROT(STM32MP1_ETZPC_RNG1_ID, DECPROT_NS_RW, DECPROT_UNLOCK) + DECPROT(STM32MP1_ETZPC_HASH1_ID, DECPROT_NS_RW, DECPROT_UNLOCK) + DECPROT(STM32MP1_ETZPC_CRYP1_ID, DECPROT_NS_RW, DECPROT_UNLOCK) + DECPROT(STM32MP1_ETZPC_DDRCTRL_ID, DECPROT_NS_R_S_W, DECPROT_LOCK) + DECPROT(STM32MP1_ETZPC_DDRPHYC_ID, DECPROT_NS_R_S_W, DECPROT_LOCK) + DECPROT(STM32MP1_ETZPC_STGENC_ID, DECPROT_S_RW, DECPROT_LOCK) + DECPROT(STM32MP1_ETZPC_BKPSRAM_ID, DECPROT_S_RW, DECPROT_LOCK) + DECPROT(STM32MP1_ETZPC_IWDG1_ID, DECPROT_S_RW, DECPROT_LOCK) + >; +}; + + + +&i2c4 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c4_pins_z_mx>; + i2c-scl-rising-time-ns = <185>; + i2c-scl-falling-time-ns = <20>; + clock-frequency = <400000>; + status = "okay"; + secure-status = "okay"; + + pmic: stpmic@33 { + compatible = "st,stpmic1"; + reg = <0x33>; + interrupts-extended = <&exti_pwr 55 IRQ_TYPE_EDGE_FALLING>; + interrupt-controller; + #interrupt-cells = <2>; + status = "okay"; + secure-status = "okay"; + + regulators { + compatible = "st,stpmic1-regulators"; + buck1-supply = <&vin>; + buck2-supply = <&vin>; + buck3-supply = <&vin>; + buck4-supply = <&vin>; + ldo1-supply = <&v3v3>; + ldo2-supply = <&vin>; + ldo3-supply = <&vdd_ddr>; + ldo4-supply = <&vin>; + ldo5-supply = <&vin>; + ldo6-supply = <&v3v3>; + vref_ddr-supply = <&vin>; + boost-supply = <&vin>; + pwr_sw1-supply = <&bst_out>; + pwr_sw2-supply = <&bst_out>; + + vddcore: buck1 { + regulator-name = "vddcore"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1350000>; + regulator-always-on; + regulator-initial-mode = <0>; + regulator-over-current-protection; + lp-stop{ + regulator-on-in-suspend; + regulator-suspend-microvolt = <1200000>; + }; + standby-ddr-sr{ + regulator-off-in-suspend; + }; + standby-ddr-off{ + regulator-off-in-suspend; + }; + }; + + vdd_ddr: buck2 { + regulator-name = "vdd_ddr"; + regulator-min-microvolt = <1350000>; + regulator-max-microvolt = <1350000>; + regulator-always-on; + regulator-initial-mode = <0>; + regulator-over-current-protection; + lp-stop{ + regulator-suspend-microvolt = <1350000>; + regulator-on-in-suspend; + }; + standby-ddr-sr{ + regulator-suspend-microvolt = <1350000>; + regulator-on-in-suspend; + }; + standby-ddr-off{ + regulator-off-in-suspend; + }; + }; + + vdd: buck3 { + regulator-name = "vdd"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + st,mask-reset; + regulator-initial-mode = <0>; + regulator-over-current-protection; + lp-stop{ + regulator-suspend-microvolt = <3300000>; + regulator-on-in-suspend; + }; + standby-ddr-sr{ + regulator-suspend-microvolt = <3300000>; + regulator-on-in-suspend; + }; + standby-ddr-off{ + regulator-suspend-microvolt = <3300000>; + regulator-on-in-suspend; + }; + }; + + v3v3: buck4 { + regulator-name = "v3v3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + regulator-over-current-protection; + regulator-initial-mode = <0>; + lp-stop{ + regulator-suspend-microvolt = <3300000>; + regulator-on-in-suspend; + }; + standby-ddr-sr{ + regulator-off-in-suspend; + }; + standby-ddr-off{ + regulator-off-in-suspend; + }; + }; + + v1v8_ldo1: ldo1 { + regulator-name = "v1v8_audio"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + standby-ddr-sr{ + regulator-off-in-suspend; + }; + standby-ddr-off{ + regulator-off-in-suspend; + }; + }; + + v3v3_ldo2: ldo2 { + regulator-name = "v3v3_hdmi"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + standby-ddr-sr{ + regulator-off-in-suspend; + }; + standby-ddr-off{ + regulator-off-in-suspend; + }; + }; + + vtt_ddr: ldo3 { + regulator-name = "vtt_ddr"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <750000>; + regulator-always-on; + regulator-over-current-protection; + lp-stop{ + regulator-off-in-suspend; + }; + standby-ddr-sr{ + regulator-off-in-suspend; + }; + standby-ddr-off{ + regulator-off-in-suspend; + }; + }; + + vdd_usb: ldo4 { + regulator-name = "vdd_usb"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + standby-ddr-sr{ + regulator-on-in-suspend; + }; + standby-ddr-off{ + regulator-off-in-suspend; + }; + }; + + vdda: ldo5 { + regulator-name = "vdda"; + regulator-min-microvolt = <2900000>; + regulator-max-microvolt = <2900000>; + regulator-boot-on; + standby-ddr-sr{ + regulator-off-in-suspend; + }; + standby-ddr-off{ + regulator-off-in-suspend; + }; + }; + + v1v2_ldo6: ldo6 { + regulator-name = "v1v2_ldo6"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-always-on; + standby-ddr-sr{ + regulator-off-in-suspend; + }; + standby-ddr-off{ + regulator-off-in-suspend; + }; + }; + + vref_ddr: vref_ddr { + regulator-name = "vref_ddr"; + regulator-always-on; + regulator-over-current-protection; + lp-stop{ + regulator-on-in-suspend; + }; + standby-ddr-sr{ + regulator-on-in-suspend; + }; + standby-ddr-off{ + regulator-off-in-suspend; + }; + }; + + bst_out: boost { + regulator-name = "bst_out"; + }; + + vbus_otg: pwr_sw1 { + regulator-name = "vbus_otg"; + }; + + vbus_sw: pwr_sw2 { + regulator-name = "vbus_sw"; + regulator-active-discharge = <1>; + }; + }; + }; +}; + +&iwdg2 { + timeout-sec = <32>; + secure-timeout-sec = <5>; + status = "okay"; + secure-status = "okay"; +}; + +&nvmem_layout { + nvmem-cells = <&cfg0_otp>, + <&part_number_otp>, + <&monotonic_otp>, + <&nand_otp>, + <&uid_otp>, + <&package_otp>, + <&hw2_otp>, + <&pkh_otp>, + <&board_id>; + + nvmem-cell-names = "cfg0_otp", + "part_number_otp", + "monotonic_otp", + "nand_otp", + "uid_otp", + "package_otp", + "hw2_otp", + "pkh_otp", + "board_id"; +}; + +&pwr_regulators { + system_suspend_supported_soc_modes = < + STM32_PM_CSLEEP_RUN + STM32_PM_CSTOP_ALLOW_LP_STOP + STM32_PM_CSTOP_ALLOW_STANDBY_DDR_SR + >; + system_off_soc_mode = ; + vdd-supply = <&vdd>; + vdd_3v3_usbfs-supply = <&vdd_usb>; +}; + +&rcc { + st,hsi-cal; + st,csi-cal; + st,cal-sec = <60>; + st,clksrc = < + CLK_MPU_PLL1P + CLK_AXI_PLL2P + CLK_MCU_PLL3P + CLK_PLL12_HSE + CLK_PLL3_HSE + CLK_PLL4_HSE + CLK_RTC_LSE + CLK_MCO1_DISABLED + CLK_MCO2_DISABLED + >; + + st,clkdiv = < + 1 /*MPU*/ + 0 /*AXI*/ + 0 /*MCU*/ + 1 /*APB1*/ + 1 /*APB2*/ + 1 /*APB3*/ + 1 /*APB4*/ + 2 /*APB5*/ + 23 /*RTC*/ + 0 /*MCO1*/ + 0 /*MCO2*/ + >; + + st,pkcs = < + CLK_CKPER_HSE + CLK_FMC_ACLK + CLK_QSPI_ACLK + CLK_ETH_DISABLED + CLK_SDMMC12_PLL4P + CLK_DSI_DSIPLL + CLK_STGEN_HSE + CLK_USBPHY_HSE + CLK_SPI2S1_PLL3Q + CLK_SPI2S23_PLL3Q + CLK_SPI45_HSI + CLK_SPI6_HSI + CLK_I2C46_HSI + CLK_SDMMC3_PLL4P + CLK_USBO_USBPHY + CLK_ADC_CKPER + CLK_CEC_LSE + CLK_I2C12_HSI + CLK_I2C35_HSI + CLK_UART1_HSI + CLK_UART24_HSI + CLK_UART35_HSI + CLK_UART6_HSI + CLK_UART78_HSI + CLK_SPDIF_PLL4P + CLK_FDCAN_PLL4R + CLK_SAI1_PLL3Q + CLK_SAI2_PLL3Q + CLK_SAI3_PLL3Q + CLK_SAI4_PLL3Q + CLK_RNG1_LSI + CLK_RNG2_LSI + CLK_LPTIM1_PCLK1 + CLK_LPTIM23_PCLK3 + CLK_LPTIM45_LSE + >; + + /* VCO = 1066.0 MHz => P = 266 (AXI), Q = 533 (GPU), R = 533 (DDR) */ + pll2: st,pll@1 { + compatible = "st,stm32mp1-pll"; + reg = <1>; + cfg = <2 65 1 0 0 PQR(1,1,1)>; + frac = <0x1400>; + }; + + /* VCO = 417.8 MHz => P = 209, Q = 24, R = 11 */ + pll3: st,pll@2 { + compatible = "st,stm32mp1-pll"; + reg = <2>; + cfg = <1 33 1 16 36 PQR(1,1,1)>; + frac = <0x1a04>; + }; + + /* VCO = 594.0 MHz => P = 99, Q = 74, R = 74 */ + pll4: st,pll@3 { + compatible = "st,stm32mp1-pll"; + reg = <3>; + cfg = <3 98 5 7 7 PQR(1,1,1)>; + }; +}; + +&rng1 { + status = "okay"; + secure-status = "okay"; +}; + +&rtc { + status = "okay"; + secure-status = "okay"; +}; + +&sdmmc1 { + pinctrl-names = "default"; + pinctrl-0 = <&sdmmc1_pins_mx>; + disable-wp; + st,neg-edge; + bus-width = <4>; + vmmc-supply = <&v3v3>; + status = "okay"; +}; + +&timers15 { + secure-status = "okay"; + st,hsi-cal-input = <7>; + st,csi-cal-input = <8>; +}; +&uart4 { + pinctrl-names = "default"; + pinctrl-0 = <&uart4_pins_mx>; + status = "okay"; +}; + +&usbotg_hs { + phys = <&usbphyc_port1 0>; + phy-names = "usb2-phy"; + usb-role-switch; + status = "okay"; +}; + +&usbphyc { + status = "okay"; +}; + +&usbphyc_port0 { + phy-supply = <&vdd_usb>; +}; + +&usbphyc_port1 { + phy-supply = <&vdd_usb>; +}; + + + + +&pinctrl { + sdmmc1_pins_mx: sdmmc1-b4-0 { + pins1 { + pinmux = , /* SDMMC1_D0 */ + , /* SDMMC1_D1 */ + , /* SDMMC1_D2 */ + , /* SDMMC1_D3 */ + ; /* SDMMC1_CMD */ + slew-rate = <1>; + drive-push-pull; + bias-disable; + }; + pins2 { + pinmux = ; /* SDMMC1_CK */ + slew-rate = <2>; + drive-push-pull; + bias-disable; + }; + }; + + uart4_pins_mx: uart4-0 { + pins1 { + pinmux = ; /* UART4_TX */ + bias-disable; + drive-push-pull; + slew-rate = <0>; + }; + pins2 { + pinmux = ; /* UART4_RX */ + bias-disable; + }; + }; +}; + +&pinctrl_z { + i2c4_pins_z_mx: i2c4-0 { + pins { + pinmux = , /* I2C4_SCL */ + ; /* I2C4_SDA */ + bias-disable; + drive-open-drain; + slew-rate = <0>; + }; + }; +}; diff --git a/board/octavo/osd32mp1-red/genimage.cfg b/board/octavo/osd32mp1-red/genimage.cfg new file mode 100644 index 00000000..bdad1914 --- /dev/null +++ b/board/octavo/osd32mp1-red/genimage.cfg @@ -0,0 +1,23 @@ +image sdcard.img { + hdimage { + partition-table-type = "gpt" + } + + partition fsbl1 { + image = "tf-a-stm32mp157c-osd32mp1-red.stm32" + } + + partition fsbl2 { + image = "tf-a-stm32mp157c-osd32mp1-red.stm32" + } + + partition fip { + image = "fip.bin" + size = 2M + } + + partition rootfs { + image = "rootfs.ext4" + bootable = "yes" + } +} diff --git a/board/octavo/osd32mp1-red/linux-dts/stm32mp157c-osd32mp1-red.dts b/board/octavo/osd32mp1-red/linux-dts/stm32mp157c-osd32mp1-red.dts new file mode 100644 index 00000000..bf0e23c7 --- /dev/null +++ b/board/octavo/osd32mp1-red/linux-dts/stm32mp157c-osd32mp1-red.dts @@ -0,0 +1,1440 @@ +/* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */ +/* + * Copyright (C) Octavo Systems 2021 - All Rights Reserved + * Author: Neeraj Dantu for Octavo Systems + */ + +/dts-v1/; + +#include +#include "stm32mp157.dtsi" +#include "stm32mp15xc.dtsi" +#include "stm32mp15xxac-pinctrl.dtsi" +#include "stm32mp15-m4-srm.dtsi" +#include +#include +#include + +/ { + model = "Octavo OSD32MP1 RED board"; + compatible = "octavo,stm32mp157c-osd32mp1-red", "st,stm32mp157"; + + memory@c0000000 { + device_type = "memory"; + reg = <0xc0000000 0x20000000>; + }; + + wifi_pwrseq: wifi-pwrseq { + compatible = "mmc-pwrseq-simple"; + reset-gpios = <&gpiog 5 GPIO_ACTIVE_LOW>; + }; + + clocks { + clk_ext_camera: clk-ext-camera { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <24000000>; + }; + }; + + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + mcuram2:mcuram2@10000000{ + compatible = "shared-dma-pool"; + reg = <0x10000000 0x40000>; + no-map; + }; + + vdev0vring0:vdev0vring0@10040000{ + compatible = "shared-dma-pool"; + reg = <0x10040000 0x1000>; + no-map; + }; + + vdev0vring1:vdev0vring1@10041000{ + compatible = "shared-dma-pool"; + reg = <0x10041000 0x1000>; + no-map; + }; + + vdev0buffer:vdev0buffer@10042000{ + compatible = "shared-dma-pool"; + reg = <0x10042000 0x4000>; + no-map; + }; + + mcuram:mcuram@30000000{ + compatible = "shared-dma-pool"; + reg = <0x30000000 0x40000>; + no-map; + }; + + retram:retram@38000000{ + compatible = "shared-dma-pool"; + reg = <0x38000000 0x10000>; + no-map; + }; + + gpu_reserved:gpu@d4000000{ + reg = <0xd4000000 0x4000000>; + no-map; + }; + }; + + + aliases { + ethernet0 = ðernet0; + serial0 = &uart4; + serial1 = &usart3; + serial2 = &uart7; + serial3 = &usart2; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + led { + compatible = "gpio-leds"; + blue { + label = "heartbeat"; + gpios = <&gpiod 11 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "heartbeat"; + default-state = "off"; + }; + }; + + usb_phy_tuning:usb-phy-tuning{ + st,hs-dc-level = <2>; + st,fs-rftime-tuning; + st,hs-rftime-reduction; + st,hs-current-trim = <15>; + st,hs-impedance-trim = <1>; + st,squelch-level = <3>; + st,hs-rx-offset = <2>; + st,no-lsfs-sc; + }; + + vin:vin{ + compatible = "regulator-fixed"; + regulator-name = "vin"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + regulator-always-on; + }; + + sound { + compatible = "audio-graph-card"; + label = "STM32MP15-DK"; + dais = <&i2s2_port>; + status = "okay"; + }; +}; + +&pinctrl { + u-boot,dm-pre-reloc; + dcmi_pins_mx: dcmi_mx-0 { + pins { + pinmux = , /* DCMI_HSYNC */ + , /* DCMI_PIXCLK */ + , /* DCMI_D1 */ + , /* DCMI_D7 */ + , /* DCMI_D0 */ + , /* DCMI_D2 */ + , /* DCMI_D3 */ + , /* DCMI_D4 */ + , /* DCMI_D6 */ + , /* DCMI_VSYNC */ + , /* DCMI_D8 */ + , /* DCMI_D9 */ + , /* DCMI_D11 */ + , /* DCMI_D10 */ + ; /* DCMI_D5 */ + bias-disable; + }; + }; + + dcmi_sleep_pins_mx: dcmi_sleep_mx-0 { + pins { + pinmux = , /* DCMI_HSYNC */ + , /* DCMI_PIXCLK */ + , /* DCMI_D1 */ + , /* DCMI_D7 */ + , /* DCMI_D0 */ + , /* DCMI_D2 */ + , /* DCMI_D3 */ + , /* DCMI_D4 */ + , /* DCMI_D6 */ + , /* DCMI_VSYNC */ + , /* DCMI_D8 */ + , /* DCMI_D9 */ + , /* DCMI_D11 */ + , /* DCMI_D10 */ + ; /* DCMI_D5 */ + }; + }; + + eth1_pins_mx: eth1_mx-0 { + pins1 { + pinmux = , /* ETH1_RX_CLK */ + , /* ETH1_RX_CTL */ + , /* ETH1_RXD2 */ + , /* ETH1_RXD3 */ + , /* ETH1_RXD0 */ + ; /* ETH1_RXD1 */ + bias-disable; + }; + pins2 { + pinmux = ; /* ETH1_MDIO */ + bias-disable; + drive-push-pull; + slew-rate = <0>; + }; + pins3 { + pinmux = , /* ETH1_TX_CTL */ + , /* ETH1_MDC */ + , /* ETH1_TXD2 */ + , /* ETH1_TXD3 */ + , /* ETH1_GTX_CLK */ + , /* ETH1_TXD0 */ + ; /* ETH1_TXD1 */ + bias-disable; + drive-push-pull; + slew-rate = <2>; + }; + }; + + eth1_sleep_pins_mx: eth1_sleep_mx-0 { + pins { + pinmux = , /* ETH1_RX_CLK */ + , /* ETH1_MDIO */ + , /* ETH1_RX_CTL */ + , /* ETH1_RXD2 */ + , /* ETH1_RXD3 */ + , /* ETH1_TX_CTL */ + , /* ETH1_MDC */ + , /* ETH1_TXD2 */ + , /* ETH1_RXD0 */ + , /* ETH1_RXD1 */ + , /* ETH1_TXD3 */ + , /* ETH1_GTX_CLK */ + , /* ETH1_TXD0 */ + ; /* ETH1_TXD1 */ + }; + }; + + i2c1_pins_mx: i2c1_mx-0 { + pins { + pinmux = , /* I2C1_SCL */ + ; /* I2C1_SDA */ + bias-disable; + drive-open-drain; + slew-rate = <0>; + }; + }; + + i2c1_sleep_pins_mx: i2c1_sleep_mx-0 { + pins { + pinmux = , /* I2C1_SCL */ + ; /* I2C1_SDA */ + }; + }; + + i2c2_pins_mx: i2c2_mx-0 { + pins { + pinmux = ; /* I2C2_SDA */ + bias-disable; + drive-open-drain; + slew-rate = <0>; + }; + }; + + i2c2_sleep_pins_mx: i2c2_sleep_mx-0 { + pins { + pinmux = ; /* I2C2_SDA */ + }; + }; + + i2c5_pins_mx: i2c5_mx-0 { + pins { + pinmux = , /* I2C5_SCL */ + ; /* I2C5_SDA */ + bias-disable; + drive-open-drain; + slew-rate = <0>; + }; + }; + + i2c5_sleep_pins_mx: i2c5_sleep_mx-0 { + pins { + pinmux = , /* I2C5_SCL */ + ; /* I2C5_SDA */ + }; + }; + + i2s2_pins_mx: i2s2_mx-0 { + pins { + pinmux = , /* I2S2_WS */ + , /* I2S2_CK */ + ; /* I2S2_SDO */ + bias-disable; + drive-push-pull; + slew-rate = <1>; + }; + }; + + i2s2_sleep_pins_mx: i2s2_sleep_mx-0 { + pins { + pinmux = , /* I2S2_WS */ + , /* I2S2_CK */ + ; /* I2S2_SDO */ + }; + }; + + ltdc_pins_mx: ltdc_mx-0 { + pins1 { + pinmux = , /* LTDC_B5 */ + , /* LTDC_B6 */ + , /* LTDC_R5 */ + , /* LTDC_B7 */ + , /* LTDC_B0 */ + , /* LTDC_B3 */ + , /* LTDC_G1 */ + , /* LTDC_B4 */ + , /* LTDC_G0 */ + , /* LTDC_R7 */ + , /* LTDC_DE */ + , /* LTDC_B2 */ + , /* LTDC_B1 */ + , /* LTDC_R0 */ + , /* LTDC_R1 */ + , /* LTDC_G4 */ + , /* LTDC_R2 */ + , /* LTDC_R3 */ + , /* LTDC_R4 */ + , /* LTDC_R6 */ + , /* LTDC_G2 */ + , /* LTDC_G3 */ + , /* LTDC_G5 */ + , /* LTDC_G6 */ + , /* LTDC_G7 */ + , /* LTDC_VSYNC */ + ; /* LTDC_HSYNC */ + bias-disable; + drive-push-pull; + slew-rate = <0>; + }; + pins2 { + pinmux = ; /* LTDC_CLK */ + bias-disable; + drive-push-pull; + slew-rate = <1>; + }; + }; + + ltdc_sleep_pins_mx: ltdc_sleep_mx-0 { + pins { + pinmux = , /* LTDC_B5 */ + , /* LTDC_B6 */ + , /* LTDC_R5 */ + , /* LTDC_B7 */ + , /* LTDC_B0 */ + , /* LTDC_B3 */ + , /* LTDC_G1 */ + , /* LTDC_B4 */ + , /* LTDC_G0 */ + , /* LTDC_R7 */ + , /* LTDC_DE */ + , /* LTDC_CLK */ + , /* LTDC_B2 */ + , /* LTDC_B1 */ + , /* LTDC_R0 */ + , /* LTDC_R1 */ + , /* LTDC_G4 */ + , /* LTDC_R2 */ + , /* LTDC_R3 */ + , /* LTDC_R4 */ + , /* LTDC_R6 */ + , /* LTDC_G2 */ + , /* LTDC_G3 */ + , /* LTDC_G5 */ + , /* LTDC_G6 */ + , /* LTDC_G7 */ + , /* LTDC_VSYNC */ + ; /* LTDC_HSYNC */ + }; + }; + + sdmmc1_pins_mx: sdmmc1_mx-0 { + u-boot,dm-pre-reloc; + pins1 { + u-boot,dm-pre-reloc; + pinmux = , /* SDMMC1_D0 */ + , /* SDMMC1_D1 */ + , /* SDMMC1_D2 */ + , /* SDMMC1_D3 */ + ; /* SDMMC1_CMD */ + bias-disable; + drive-push-pull; + slew-rate = <1>; + }; + pins2 { + u-boot,dm-pre-reloc; + pinmux = ; /* SDMMC1_CK */ + bias-disable; + drive-push-pull; + slew-rate = <2>; + }; + }; + + sdmmc1_opendrain_pins_mx: sdmmc1_opendrain_mx-0 { + u-boot,dm-pre-reloc; + pins1 { + u-boot,dm-pre-reloc; + pinmux = , /* SDMMC1_D0 */ + , /* SDMMC1_D1 */ + , /* SDMMC1_D2 */ + ; /* SDMMC1_D3 */ + bias-disable; + drive-push-pull; + slew-rate = <1>; + }; + pins2 { + u-boot,dm-pre-reloc; + pinmux = ; /* SDMMC1_CK */ + bias-disable; + drive-push-pull; + slew-rate = <2>; + }; + pins3 { + u-boot,dm-pre-reloc; + pinmux = ; /* SDMMC1_CMD */ + bias-disable; + drive-open-drain; + slew-rate = <1>; + }; + }; + + sdmmc1_sleep_pins_mx: sdmmc1_sleep_mx-0 { + u-boot,dm-pre-reloc; + pins { + u-boot,dm-pre-reloc; + pinmux = , /* SDMMC1_D0 */ + , /* SDMMC1_D1 */ + , /* SDMMC1_D2 */ + , /* SDMMC1_D3 */ + , /* SDMMC1_CK */ + ; /* SDMMC1_CMD */ + }; + }; + + sdmmc2_pins_mx: sdmmc2_mx-0 { + u-boot,dm-pre-reloc; + pins1 { + u-boot,dm-pre-reloc; + pinmux = , /* SDMMC2_D4 */ + , /* SDMMC2_D5 */ + , /* SDMMC2_D2 */ + , /* SDMMC2_D3 */ + , /* SDMMC2_D0 */ + , /* SDMMC2_D1 */ + , /* SDMMC2_D7 */ + , /* SDMMC2_D6 */ + ; /* SDMMC2_CMD */ + bias-pull-up; + drive-push-pull; + slew-rate = <1>; + }; + pins2 { + u-boot,dm-pre-reloc; + pinmux = ; /* SDMMC2_CK */ + bias-pull-up; + drive-push-pull; + slew-rate = <2>; + }; + }; + + sdmmc2_opendrain_pins_mx: sdmmc2_opendrain_mx-0 { + u-boot,dm-pre-reloc; + pins1 { + u-boot,dm-pre-reloc; + pinmux = , /* SDMMC2_D4 */ + , /* SDMMC2_D5 */ + , /* SDMMC2_D2 */ + , /* SDMMC2_D3 */ + , /* SDMMC2_D0 */ + , /* SDMMC2_D1 */ + , /* SDMMC2_D7 */ + ; /* SDMMC2_D6 */ + bias-pull-up; + drive-push-pull; + slew-rate = <1>; + }; + pins2 { + u-boot,dm-pre-reloc; + pinmux = ; /* SDMMC2_CK */ + bias-pull-up; + drive-push-pull; + slew-rate = <2>; + }; + pins3 { + u-boot,dm-pre-reloc; + pinmux = ; /* SDMMC2_CMD */ + bias-pull-up; + drive-open-drain; + slew-rate = <1>; + }; + }; + + sdmmc2_sleep_pins_mx: sdmmc2_sleep_mx-0 { + u-boot,dm-pre-reloc; + pins { + u-boot,dm-pre-reloc; + pinmux = , /* SDMMC2_D4 */ + , /* SDMMC2_D5 */ + , /* SDMMC2_D2 */ + , /* SDMMC2_D3 */ + , /* SDMMC2_D0 */ + , /* SDMMC2_D1 */ + , /* SDMMC2_D7 */ + , /* SDMMC2_CK */ + , /* SDMMC2_D6 */ + ; /* SDMMC2_CMD */ + }; + }; + + sdmmc3_pins_mx: sdmmc3_mx-0 { + u-boot,dm-pre-reloc; + pins1 { + u-boot,dm-pre-reloc; + pinmux = , /* SDMMC3_D3 */ + , /* SDMMC3_D0 */ + , /* SDMMC3_CMD */ + , /* SDMMC3_D1 */ + ; /* SDMMC3_D2 */ + bias-disable; + drive-push-pull; + slew-rate = <1>; + }; + pins2 { + u-boot,dm-pre-reloc; + pinmux = ; /* SDMMC3_CK */ + bias-disable; + drive-push-pull; + slew-rate = <2>; + }; + }; + + sdmmc3_opendrain_pins_mx: sdmmc3_opendrain_mx-0 { + u-boot,dm-pre-reloc; + pins1 { + u-boot,dm-pre-reloc; + pinmux = , /* SDMMC3_D3 */ + , /* SDMMC3_D0 */ + , /* SDMMC3_D1 */ + ; /* SDMMC3_D2 */ + bias-disable; + drive-push-pull; + slew-rate = <1>; + }; + pins2 { + u-boot,dm-pre-reloc; + pinmux = ; /* SDMMC3_CMD */ + bias-disable; + drive-open-drain; + slew-rate = <1>; + }; + pins3 { + u-boot,dm-pre-reloc; + pinmux = ; /* SDMMC3_CK */ + bias-disable; + drive-push-pull; + slew-rate = <2>; + }; + }; + + sdmmc3_sleep_pins_mx: sdmmc3_sleep_mx-0 { + u-boot,dm-pre-reloc; + pins { + u-boot,dm-pre-reloc; + pinmux = , /* SDMMC3_D3 */ + , /* SDMMC3_D0 */ + , /* SDMMC3_CMD */ + , /* SDMMC3_D1 */ + , /* SDMMC3_D2 */ + ; /* SDMMC3_CK */ + }; + }; + + spi5_pins_mx: spi5_mx-0 { + pins { + pinmux = , /* SPI5_SCK */ + , /* SPI5_MISO */ + ; /* SPI5_MOSI */ + bias-disable; + drive-push-pull; + slew-rate = <1>; + }; + }; + + spi5_sleep_pins_mx: spi5_sleep_mx-0 { + pins { + pinmux = , /* SPI5_SCK */ + , /* SPI5_MISO */ + ; /* SPI5_MOSI */ + }; + }; + + tim5_pwm_pins_mx: tim5_pwm_mx-0 { + pins { + pinmux = ; /* TIM5_CH2 */ + bias-disable; + drive-push-pull; + slew-rate = <0>; + }; + }; + + tim5_pwm_sleep_pins_mx: tim5_pwm_sleep_mx-0 { + pins { + pinmux = ; /* TIM5_CH2 */ + }; + }; + + uart4_pins_mx: uart4_mx-0 { + u-boot,dm-pre-reloc; + pins1 { + u-boot,dm-pre-reloc; + pinmux = ; /* UART4_RX */ + bias-disable; + }; + pins2 { + u-boot,dm-pre-reloc; + pinmux = ; /* UART4_TX */ + bias-disable; + drive-push-pull; + slew-rate = <0>; + }; + }; + + uart4_sleep_pins_mx: uart4_sleep_mx-0 { + u-boot,dm-pre-reloc; + pins { + u-boot,dm-pre-reloc; + pinmux = , /* UART4_RX */ + ; /* UART4_TX */ + }; + }; + + usart2_pins_mx: usart2_mx-0 { + pins1 { + pinmux = , /* USART2_CTS */ + ; /* USART2_RX */ + bias-disable; + }; + pins2 { + pinmux = , /* USART2_RTS */ + ; /* USART2_TX */ + bias-disable; + drive-push-pull; + slew-rate = <0>; + }; + }; + + usart2_sleep_pins_mx: usart2_sleep_mx-0 { + pins { + pinmux = , /* USART2_CTS */ + , /* USART2_RTS */ + , /* USART2_TX */ + ; /* USART2_RX */ + }; + }; + + cec_pins_mx: cec-1 { + pins { + pinmux = ; + bias-disable; + drive-open-drain; + slew-rate = <0>; + }; + }; + + cec_sleep_pins_mx: cec-sleep-1 { + pins { + pinmux = ; /* HDMI_CEC */ + }; + }; + + stusb1600_pins_mx: stusb1600-0 { + pins { + pinmux = ; + bias-pull-up; + }; + }; + + m_can1_pins_mx: m_can1_sleep_mx-0 { + pins1 { + pinmux = ; /* CAN1_TX */ + slew-rate = <0>; + drive-push-pull; + bias-disable; + }; + pins2 { + pinmux = ; /* CAN1_RX */ + bias-disable; + }; + }; + + m_can1_sleep_pins_mx: m_can1_sleep-0 { + pins { + pinmux = , /* CAN1_TX */ + ; /* CAN1_RX */ + }; + }; + +}; + +&pinctrl_z { + u-boot,dm-pre-reloc; + + i2c2_pins_z_mx: i2c2_mx-0 { + pins { + pinmux = ; /* I2C2_SCL */ + bias-disable; + drive-open-drain; + slew-rate = <0>; + }; + }; + + i2c2_sleep_pins_z_mx: i2c2_sleep_mx-0 { + pins { + pinmux = ; /* I2C2_SCL */ + }; + }; + + i2c4_pins_z_mx: i2c4_mx-0 { + u-boot,dm-pre-reloc; + pins { + u-boot,dm-pre-reloc; + pinmux = , /* I2C4_SCL */ + ; /* I2C4_SDA */ + bias-disable; + drive-open-drain; + slew-rate = <0>; + }; + }; + + i2c4_sleep_pins_z_mx: i2c4_sleep_mx-0 { + u-boot,dm-pre-reloc; + pins { + u-boot,dm-pre-reloc; + pinmux = , /* I2C4_SCL */ + ; /* I2C4_SDA */ + }; + }; +}; + +&m4_rproc{ + memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>, + <&vdev0vring1>, <&vdev0buffer>; + mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>; + mbox-names = "vq0", "vq1", "shutdown"; + interrupt-parent = <&exti>; + interrupts = <68 1>; + wakeup-source; + status = "okay"; +}; + +&dcmi{ + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&dcmi_pins_mx>; + pinctrl-1 = <&dcmi_sleep_pins_mx>; + status = "okay"; + + port { + dcmi_0: endpoint { + remote-endpoint = <&ov5640_0>; + bus-width = <8>; + hsync-active = <0>; + vsync-active = <0>; + pclk-sample = <1>; + pclk-max-frequency = <77000000>; + }; + }; +}; + +&dsi{ + status = "okay"; + + ports { + port@0 { + reg = <0>; + dsi_in: endpoint { + remote-endpoint = <<dc_ep1_out>; + }; + }; + + port@1 { + reg = <1>; + dsi_out: endpoint { + remote-endpoint = <&panel_in>; + }; + }; + }; + + panel_otm8009a: panel-otm8009a@0 { + compatible = "orisetech,otm8009a"; + reg = <0>; + reset-gpios = <&gpioe 9 GPIO_ACTIVE_LOW>; + power-supply = <&v3v3>; + status = "okay"; + + port { + panel_in: endpoint { + remote-endpoint = <&dsi_out>; + }; + }; + }; +}; + +ðernet0{ + pinctrl-names = "default", "sleep"; + pinctrl-0 = <ð1_pins_mx>; + pinctrl-1 = <ð1_sleep_pins_mx>; + status = "okay"; + + + st,eth-clk-sel; //custom + phy-mode = "rgmii-id"; + max-speed = <1000>; + phy-handle = <&phy0>; + nvmem-cells = <ðernet_mac_address>; + nvmem-cell-names = "mac-address"; + + mdio0 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "snps,dwmac-mdio"; + phy0: ethernet-phy@0 { + reg = <3>; + }; + }; +}; + +&gpu{ + status = "okay"; + contiguous-area = <&gpu_reserved>; +}; + +&hash1 { + status = "okay"; +}; + +&hsem{ + status = "okay"; +}; + +&cryp1{ + u-boot,dm-pre-reloc; + status = "okay"; +}; + +&i2c1{ + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&i2c1_pins_mx>; + pinctrl-1 = <&i2c1_sleep_pins_mx>; + status = "okay"; + i2c-scl-rising-time-ns = <100>; + i2c-scl-falling-time-ns = <7>; + /delete-property/dmas; + /delete-property/dma-names; + + touchscreen@2a { + compatible = "focaltech,ft6236"; + reg = <0x2a>; + interrupts = <2 2>; + interrupt-parent = <&gpiof>; + interrupt-controller; + touchscreen-size-x = <480>; + touchscreen-size-y = <800>; + panel = <&panel_otm8009a>; + vcc-supply = <&v3v3>; + status = "okay"; + }; + touchscreen@38 { + compatible = "focaltech,ft6236"; + reg = <0x38>; + interrupts = <2 2>; + interrupt-parent = <&gpiof>; + interrupt-controller; + touchscreen-size-x = <480>; + touchscreen-size-y = <800>; + panel = <&panel_otm8009a>; + vcc-supply = <&v3v3>; + status = "okay"; + }; + + hdmi-transmitter@39 { + compatible = "sil,sii9022"; + reg = <0x39>; + reset-gpios = <&gpiog 0 GPIO_ACTIVE_LOW>; + interrupts = <1 IRQ_TYPE_EDGE_FALLING>; + interrupt-parent = <&gpiog>; + #sound-dai-cells = <0>; + status = "okay"; + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + sii9022_in: endpoint { + remote-endpoint = <<dc_ep0_out>; + }; + }; + + port@3 { + reg = <3>; + sii9022_tx_endpoint: endpoint { + remote-endpoint = <&i2s2_endpoint>; + }; + }; + }; + }; +}; + +&i2c2{ + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&i2c2_pins_mx &i2c2_pins_z_mx>; + pinctrl-1 = <&i2c2_sleep_pins_mx &i2c2_sleep_pins_z_mx>; + status = "okay"; + i2c-scl-rising-time-ns = <185>; + i2c-scl-falling-time-ns = <20>; + /delete-property/dmas; + /delete-property/dma-names; + + ov5640: camera@3c { + compatible = "ovti,ov5640"; + reg = <0x3c>; + clocks = <&clk_ext_camera>; + clock-names = "xclk"; + DOVDD-supply = <&v3v3>; + //powerdown-gpios = <&stmfx_pinctrl 18 (GPIO_ACTIVE_HIGH | GPIO_PUSH_PULL)>; + //reset-gpios = <&stmfx_pinctrl 19 (GPIO_ACTIVE_LOW | GPIO_PUSH_PULL)>; + //powerdown-gpios = <&gpioc 3 GPIO_ACTIVE_HIGH>; //custom + //reset-gpios = <&gpioa 14 GPIO_ACTIVE_LOW>; //custom + rotation = <180>; + status = "okay"; + + port { + ov5640_0: endpoint { + remote-endpoint = <&dcmi_0>; + bus-width = <8>; + data-shift = <2>; /* lines 9:2 are used */ + hsync-active = <0>; + vsync-active = <0>; + pclk-sample = <1>; + pclk-max-frequency = <77000000>; + }; + }; + }; +}; + +&i2c4{ + u-boot,dm-pre-reloc; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&i2c4_pins_z_mx>; + pinctrl-1 = <&i2c4_sleep_pins_z_mx>; + status = "okay"; + i2c-scl-rising-time-ns = <185>; + i2c-scl-falling-time-ns = <20>; + clock-frequency = <400000>; + /delete-property/ dmas; + /delete-property/ dma-names; + + typec: stusb1600@28 { + compatible = "st,stusb1600"; + reg = <0x28>; + interrupt-parent = <&gpioe>; + interrupts = <8 IRQ_TYPE_EDGE_FALLING>; + pinctrl-0 = <&stusb1600_pins_mx>; + pinctrl-names = "default"; + status = "okay"; + vdd-supply = <&vin>; + + typec_con: connector { + compatible = "usb-c-connector"; + label = "USB-C"; + power-role = "dual"; + power-opmode = "default"; + + port { + con_usbotg_hs_ep: endpoint { + remote-endpoint = <&usbotg_hs_ep>; + }; + }; + }; + }; + + pmic:stpmic@33{ + compatible = "st,stpmic1"; + reg = <0x33>; + interrupts-extended = <&exti_pwr 55 IRQ_TYPE_EDGE_FALLING>; + interrupt-controller; + #interrupt-cells = <2>; + status = "okay"; + + st,main-control-register = <0x04>; + st,vin-control-register = <0xc0>; + st,usb-control-register = <0x20>; + + regulators{ + compatible = "st,stpmic1-regulators"; + buck1-supply = <&vin>; + buck2-supply = <&vin>; + buck3-supply = <&vin>; + buck4-supply = <&vin>; + ldo1-supply = <&v3v3>; + ldo2-supply = <&vin>; + ldo3-supply = <&vdd_ddr>; + ldo4-supply = <&vin>; + ldo5-supply = <&vin>; + ldo6-supply = <&v3v3>; + vref_ddr-supply = <&vin>; + boost-supply = <&vin>; + pwr_sw1-supply = <&bst_out>; + pwr_sw2-supply = <&bst_out>; + + + vddcore:buck1{ + regulator-name = "vddcore"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1350000>; + regulator-always-on; + regulator-initial-mode = <0>; + regulator-over-current-protection; + }; + + vdd_ddr:buck2{ + regulator-name = "vdd_ddr"; + regulator-min-microvolt = <1350000>; + regulator-max-microvolt = <1350000>; + regulator-always-on; + regulator-initial-mode = <0>; + regulator-over-current-protection; + }; + + vdd:buck3{ + regulator-name = "vdd"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + st,mask-reset; + regulator-initial-mode = <0>; + regulator-over-current-protection; + }; + + v3v3:buck4{ + regulator-name = "v3v3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + regulator-over-current-protection; + regulator-initial-mode = <0>; + }; + + v1v8_audio:ldo1{ + regulator-name = "v1v8_audio"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + interrupts = ; + }; + + v3v3_hdmi:ldo2{ + regulator-name = "v3v3_hdmi"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + interrupts = ; + }; + + vtt_ddr:ldo3{ + regulator-name = "vtt_ddr"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <750000>; + regulator-always-on; + regulator-over-current-protection; + }; + + vdd_usb:ldo4{ + regulator-name = "vdd_usb"; + interrupts = ; + }; + + v3v3_eth:ldo5{ + regulator-name = "v3v3_eth"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + interrupts = ; + regulator-boot-on; + }; + + v3v3_dsi:ldo6{ + regulator-name = "v3v3_dsi"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + interrupts = ; + }; + + vref_ddr:vref_ddr{ + regulator-name = "vref_ddr"; + regulator-always-on; + regulator-over-current-protection; + }; + + bst_out:boost{ + regulator-name = "bst_out"; + interrupts = ; + regulator-always-on; + }; + + vbus_otg:pwr_sw1{ + regulator-name = "vbus_otg"; + interrupts = ; + regulator-active-discharge; + regulator-always-on; + }; + + vbus_sw:pwr_sw2{ + regulator-name = "vbus_sw"; + interrupts = ; + regulator-active-discharge = <1>; + regulator-always-on; + }; + }; + + onkey{ + compatible = "st,stpmic1-onkey"; + interrupts = , ; + interrupt-names = "onkey-falling", "onkey-rising"; + power-off-time-sec = <10>; + status = "okay"; + }; + + watchdog { + compatible = "st,stpmic1-wdt"; + status = "disabled"; + }; + }; + eeprom@50 { + compatible = "atmel,24c02"; + reg = <0x50>; + pagesize = <16>; + }; +}; + +&i2c5{ + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&i2c5_pins_mx>; + pinctrl-1 = <&i2c5_sleep_pins_mx>; + status = "okay"; + + /delete-property/dmas; + /delete-property/dma-names; + +}; + +&spi5 { + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&spi5_pins_mx>; + pinctrl-1 = <&spi5_sleep_pins_mx>; + cs-gpios = <&gpiof 6 0>; + status = "okay"; + + spidev: spidev@0 { + compatible = "rohm,dh2228fv"; + spi-max-frequency = <30000000>; + reg = <0>; + }; +}; + +&i2s2{ + clocks = <&rcc SPI2>, <&rcc SPI2_K>, <&rcc PLL3_Q>, <&rcc PLL3_R>; + clock-names = "pclk", "i2sclk", "x8k", "x11k"; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&i2s2_pins_mx>; + pinctrl-1 = <&i2s2_sleep_pins_mx>; + status = "okay"; + + i2s2_port: port { + i2s2_endpoint: endpoint { + remote-endpoint = <&sii9022_tx_endpoint>; + format = "i2s"; + mclk-fs = <256>; + }; + }; +}; + +&ipcc{ + status = "okay"; +}; + +&iwdg2{ + status = "okay"; + timeout-sec = <32>; +}; + +<dc{ + pinctrl-names = "default", "sleep"; + pinctrl-0 = <<dc_pins_mx>; + pinctrl-1 = <<dc_sleep_pins_mx>; + status = "okay"; + port { + ltdc_ep0_out: endpoint@0 { + reg = <0>; + remote-endpoint = <&sii9022_in>; + }; + + ltdc_ep1_out: endpoint@1 { + reg = <1>; + remote-endpoint = <&dsi_in>; + }; + }; +}; + +&pwr_regulators { + vdd-supply = <&vdd>; + vdd_3v3_usbfs-supply = <&vdd_usb>; +}; + +&rcc{ + u-boot,dm-pre-reloc; + status = "okay"; +}; + +&rng1{ + status = "okay"; +}; + +&rtc{ + status = "okay"; +}; + +&cec { + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&cec_pins_mx>; + pinctrl-1 = <&cec_sleep_pins_mx>; + status = "okay"; +}; + +&cpu0{ + cpu-supply = <&vddcore>; +}; + +&cpu1{ + cpu-supply = <&vddcore>; +}; + +&crc1 { + status = "okay"; +}; + +&dts { + status = "okay"; +}; + +&sdmmc1{ + u-boot,dm-pre-reloc; + pinctrl-names = "default", "opendrain", "sleep"; + pinctrl-0 = <&sdmmc1_pins_mx>; + pinctrl-1 = <&sdmmc1_opendrain_pins_mx>; + pinctrl-2 = <&sdmmc1_sleep_pins_mx>; + status = "okay"; + + cd-gpios = <&gpioe 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; + disable-wp; + st,neg-edge; + bus-width = <4>; + vmmc-supply = <&v3v3>; +}; + +&sdmmc2{ + u-boot,dm-pre-reloc; + pinctrl-names = "default", "opendrain", "sleep"; + pinctrl-0 = <&sdmmc2_pins_mx>; + pinctrl-1 = <&sdmmc2_opendrain_pins_mx>; + pinctrl-2 = <&sdmmc2_sleep_pins_mx>; + status = "okay"; + non-removable; + no-sd; + no-sdio; + st,neg-edge; + bus-width = <8>; + vmmc-supply = <&v3v3>; + vqmmc-supply = <&v3v3>; + mmc-ddr-3_3v; +}; + +&sdmmc3{ + pinctrl-names = "default", "opendrain", "sleep"; + pinctrl-0 = <&sdmmc3_pins_mx>; + pinctrl-1 = <&sdmmc3_opendrain_pins_mx>; + pinctrl-2 = <&sdmmc3_sleep_pins_mx>; + arm,primecell-periphid = <0x10153180>; + non-removable; + st,neg-edge; + bus-width = <4>; + vmmc-supply = <&v3v3>; + mmc-pwrseq = <&wifi_pwrseq>; + #address-cells = <1>; + #size-cells = <0>; + keep-power-in-suspend; + status = "okay"; + + brcmf: bcrmf@1 { + reg = <1>; + compatible = "brcm,bcm4329-fmac"; + }; +}; + +&tamp{ + status = "okay"; +}; + +&timers5 { + /delete-property/dmas; + /delete-property/dma-names; + status = "okay"; + pwm { + pinctrl-0 = <&tim5_pwm_pins_mx>; + pinctrl-1 = <&tim5_pwm_sleep_pins_mx>; + pinctrl-names = "default", "sleep"; + status = "okay"; + }; + timer@4 { + status = "okay"; + }; +}; + +&uart4{ + u-boot,dm-pre-reloc; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&uart4_pins_mx>; + pinctrl-1 = <&uart4_sleep_pins_mx>; + /delete-property/dmas; + /delete-property/dma-names; + status = "okay"; +}; + +&usart2{ + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&usart2_pins_mx>; + pinctrl-1 = <&usart2_sleep_pins_mx>; + uart-has-rtscts; + status = "okay"; + + bluetooth { + shutdown-gpios = <&gpioe 10 GPIO_ACTIVE_HIGH>; + compatible = "brcm,bcm43438-bt"; + max-speed = <3000000>; + vbat-supply = <&v3v3>; + vddio-supply = <&v3v3>; + }; +}; + +&sram { + dma_pool: dma_pool@0 { + reg = <0x50000 0x10000>; + pool; + }; +}; + +&dma1 { + sram = <&dma_pool>; +}; + +&dma2 { + sram = <&dma_pool>; +}; + +&adc { + vdd-supply = <&vdd>; + vdda-supply = <&v3v3_eth>; + vref-supply = <&v3v3_eth>; + status = "okay"; + adc1: adc@0 { + st,min-sample-time-nsecs = <5000>; + st,adc-channels = <0 1>; + status = "okay"; + }; + + adc_temp: temp { + status = "okay"; + }; +}; + + +// WARNING: Do not try to enable DAC1 and DCMI +// This devices share the same pin PA4 +/* &dac { + pinctrl-names = "default"; + status = "okay"; + dac1: dac@1 { + pinctrl-0 = <&dac_ch1_pins_a>; + status = "disabled"; + }; + dac2: dac@2 { + pinctrl-0 = <&dac_ch2_pins_a>; + status = "okay"; + }; +};*/ + +&usbh_ehci { + phys = <&usbphyc_port0>; + phy-names = "usb"; + status = "okay"; +}; + +&usbh_ohci{ + phys = <&usbphyc_port0>; + phy-names = "usb"; + status = "okay"; +}; + +&usbotg_hs { + phys = <&usbphyc_port1 0>; + phy-names = "usb2-phy"; + usb-role-switch; + status = "okay"; + + port { + usbotg_hs_ep: endpoint { + remote-endpoint = <&con_usbotg_hs_ep>; + }; + }; +}; + +&usbphyc { + status = "okay"; +}; + +&usbphyc_port0 { + phy-supply = <&vdd_usb>; + st,phy-tuning = <&usb_phy_tuning>; +}; + +&usbphyc_port1 { + phy-supply = <&vdd_usb>; + st,phy-tuning = <&usb_phy_tuning>; +}; + +&m_can1 { + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&m_can1_pins_mx>; + pinctrl-1 = <&m_can1_sleep_pins_mx>; + status = "okay"; +}; diff --git a/board/octavo/osd32mp1-red/overlay/boot/extlinux/extlinux.conf b/board/octavo/osd32mp1-red/overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..b3f16b22 --- /dev/null +++ b/board/octavo/osd32mp1-red/overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +label osd32mp1-red-buildroot + kernel /boot/zImage + devicetree /boot/stm32mp157c-osd32mp1-red.dtb + append root=/dev/mmcblk1p4 rootwait diff --git a/board/octavo/osd32mp1-red/patches/uboot/0001-Add-OSD32MP1-RED-Device-Tree-support.patch b/board/octavo/osd32mp1-red/patches/uboot/0001-Add-OSD32MP1-RED-Device-Tree-support.patch new file mode 100644 index 00000000..9b075139 --- /dev/null +++ b/board/octavo/osd32mp1-red/patches/uboot/0001-Add-OSD32MP1-RED-Device-Tree-support.patch @@ -0,0 +1,1848 @@ +From 69029a32acdfac1499750f657c16ab3a3cbfa8f8 Mon Sep 17 00:00:00 2001 +From: Kory Maincent +Date: Mon, 3 Oct 2022 12:17:37 +0200 +Subject: [PATCH 1/2] Add OSD32MP1-RED Device Tree support + +Signed-off-by: Kory Maincent +--- + arch/arm/dts/Makefile | 3 +- + .../dts/stm32mp15-osd32mp1-ddr3-1x4Gb.dtsi | 119 ++ + .../dts/stm32mp157c-osd32mp1-red-u-boot.dtsi | 233 +++ + arch/arm/dts/stm32mp157c-osd32mp1-red.dts | 1445 +++++++++++++++++ + 4 files changed, 1799 insertions(+), 1 deletion(-) + create mode 100644 arch/arm/dts/stm32mp15-osd32mp1-ddr3-1x4Gb.dtsi + create mode 100644 arch/arm/dts/stm32mp157c-osd32mp1-red-u-boot.dtsi + create mode 100644 arch/arm/dts/stm32mp157c-osd32mp1-red.dts + +diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile +index 83677c3d4f..00b27c8695 100644 +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -959,7 +959,8 @@ dtb-$(CONFIG_STM32MP15x) += \ + stm32mp157f-ed1.dtb \ + stm32mp157f-ev1.dtb \ + stm32mp15xx-dhcom-pdk2.dtb \ +- stm32mp15xx-dhcor-avenger96.dtb ++ stm32mp15xx-dhcor-avenger96.dtb \ ++ stm32mp157c-osd32mp1-red.dtb + + dtb-$(CONFIG_SOC_K3_AM6) += k3-am654-base-board.dtb k3-am654-r5-base-board.dtb + dtb-$(CONFIG_SOC_K3_J721E) += k3-j721e-common-proc-board.dtb \ +diff --git a/arch/arm/dts/stm32mp15-osd32mp1-ddr3-1x4Gb.dtsi b/arch/arm/dts/stm32mp15-osd32mp1-ddr3-1x4Gb.dtsi +new file mode 100644 +index 0000000000..362f3281b8 +--- /dev/null ++++ b/arch/arm/dts/stm32mp15-osd32mp1-ddr3-1x4Gb.dtsi +@@ -0,0 +1,119 @@ ++/* ++ * Copyright (C) 2015-2018, STMicroelectronics - All Rights Reserved ++ * ++ * SPDX-License-Identifier: GPL-2.0+ BSD-3-Clause ++ * ++ */ ++ ++/* ++ * File generated by STMicroelectronics STM32CubeMX DDR Tool for MPUs ++ * DDR type: DDR3 / DDR3L ++ * DDR width: 16bits ++ * DDR density: 4Gb ++ * System frequency: 533000Khz ++ * Relaxed Timing Mode: false ++ * Address mapping type: RBC ++ * ++ * Save Date: 2020.08.20, save Time: 10:57:25 ++ */ ++ ++#define DDR_MEM_NAME "DDR3-DDR3L 16bits 533000Khz" ++#define DDR_MEM_SPEED 533000 ++#define DDR_MEM_SIZE 0x20000000 ++ ++#define DDR_MSTR 0x00041401 ++#define DDR_MRCTRL0 0x00000010 ++#define DDR_MRCTRL1 0x00000000 ++#define DDR_DERATEEN 0x00000000 ++#define DDR_DERATEINT 0x00800000 ++#define DDR_PWRCTL 0x00000000 ++#define DDR_PWRTMG 0x00400010 ++#define DDR_HWLPCTL 0x00000000 ++#define DDR_RFSHCTL0 0x00210000 ++#define DDR_RFSHCTL3 0x00000000 ++#define DDR_RFSHTMG 0x0081008B ++#define DDR_CRCPARCTL0 0x00000000 ++#define DDR_DRAMTMG0 0x121B2414 ++#define DDR_DRAMTMG1 0x000A041C ++#define DDR_DRAMTMG2 0x0608090F ++#define DDR_DRAMTMG3 0x0050400C ++#define DDR_DRAMTMG4 0x08040608 ++#define DDR_DRAMTMG5 0x06060403 ++#define DDR_DRAMTMG6 0x02020002 ++#define DDR_DRAMTMG7 0x00000202 ++#define DDR_DRAMTMG8 0x00001005 ++#define DDR_DRAMTMG14 0x000000A0 ++#define DDR_ZQCTL0 0xC2000040 ++#define DDR_DFITMG0 0x02060105 ++#define DDR_DFITMG1 0x00000202 ++#define DDR_DFILPCFG0 0x07000000 ++#define DDR_DFIUPD0 0xC0400003 ++#define DDR_DFIUPD1 0x00000000 ++#define DDR_DFIUPD2 0x00000000 ++#define DDR_DFIPHYMSTR 0x00000000 ++#define DDR_ODTCFG 0x06000600 ++#define DDR_ODTMAP 0x00000001 ++#define DDR_SCHED 0x00000C01 ++#define DDR_SCHED1 0x00000000 ++#define DDR_PERFHPR1 0x01000001 ++#define DDR_PERFLPR1 0x08000200 ++#define DDR_PERFWR1 0x08000400 ++#define DDR_DBG0 0x00000000 ++#define DDR_DBG1 0x00000000 ++#define DDR_DBGCMD 0x00000000 ++#define DDR_POISONCFG 0x00000000 ++#define DDR_PCCFG 0x00000010 ++#define DDR_PCFGR_0 0x00010000 ++#define DDR_PCFGW_0 0x00000000 ++#define DDR_PCFGQOS0_0 0x02100C03 ++#define DDR_PCFGQOS1_0 0x00800100 ++#define DDR_PCFGWQOS0_0 0x01100C03 ++#define DDR_PCFGWQOS1_0 0x01000200 ++#define DDR_PCFGR_1 0x00010000 ++#define DDR_PCFGW_1 0x00000000 ++#define DDR_PCFGQOS0_1 0x02100C03 ++#define DDR_PCFGQOS1_1 0x00800040 ++#define DDR_PCFGWQOS0_1 0x01100C03 ++#define DDR_PCFGWQOS1_1 0x01000200 ++#define DDR_ADDRMAP1 0x00070707 ++#define DDR_ADDRMAP2 0x00000000 ++#define DDR_ADDRMAP3 0x1F000000 ++#define DDR_ADDRMAP4 0x00001F1F ++#define DDR_ADDRMAP5 0x06060606 ++#define DDR_ADDRMAP6 0x0F060606 ++#define DDR_ADDRMAP9 0x00000000 ++#define DDR_ADDRMAP10 0x00000000 ++#define DDR_ADDRMAP11 0x00000000 ++#define DDR_PGCR 0x01442E02 ++#define DDR_PTR0 0x0022AA5B ++#define DDR_PTR1 0x04841104 ++#define DDR_PTR2 0x042DA068 ++#define DDR_ACIOCR 0x10400812 ++#define DDR_DXCCR 0x00000C40 ++#define DDR_DSGCR 0xF200011F ++#define DDR_DCR 0x0000000B ++#define DDR_DTPR0 0x38D488D0 ++#define DDR_DTPR1 0x098B00D8 ++#define DDR_DTPR2 0x10023600 ++#define DDR_MR0 0x00000840 ++#define DDR_MR1 0x00000000 ++#define DDR_MR2 0x00000208 ++#define DDR_MR3 0x00000000 ++#define DDR_ODTCR 0x00010000 ++#define DDR_ZQ0CR1 0x00000038 ++#define DDR_DX0GCR 0x0000CE81 ++#define DDR_DX0DLLCR 0x40000000 ++#define DDR_DX0DQTR 0xFFFFFFFF ++#define DDR_DX0DQSTR 0x3DB02000 ++#define DDR_DX1GCR 0x0000CE81 ++#define DDR_DX1DLLCR 0x40000000 ++#define DDR_DX1DQTR 0xFFFFFFFF ++#define DDR_DX1DQSTR 0x3DB02000 ++#define DDR_DX2GCR 0x0000CE80 ++#define DDR_DX2DLLCR 0x40000000 ++#define DDR_DX2DQTR 0xFFFFFFFF ++#define DDR_DX2DQSTR 0x3DB02000 ++#define DDR_DX3GCR 0x0000CE80 ++#define DDR_DX3DLLCR 0x40000000 ++#define DDR_DX3DQTR 0xFFFFFFFF ++#define DDR_DX3DQSTR 0x3DB02000 +diff --git a/arch/arm/dts/stm32mp157c-osd32mp1-red-u-boot.dtsi b/arch/arm/dts/stm32mp157c-osd32mp1-red-u-boot.dtsi +new file mode 100644 +index 0000000000..6da91e0bb8 +--- /dev/null ++++ b/arch/arm/dts/stm32mp157c-osd32mp1-red-u-boot.dtsi +@@ -0,0 +1,233 @@ ++/* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause*/ ++/* ++ * Copyright (C) 2020, Octavo Systems LLC - All Rights Reserved ++ */ ++ ++/* For more information on Device Tree configuration, please refer to ++ * https://wiki.st.com/stm32mpu/wiki/Category:Device_tree_configuration ++ */ ++ ++#include ++#include "stm32mp15-osd32mp1-ddr3-1x4Gb.dtsi" ++#include "stm32mp15-u-boot.dtsi" ++#include "stm32mp15-ddr.dtsi" ++ ++ ++/ { ++ ++ aliases{ ++ i2c0 = &i2c4; ++ mmc0 = &sdmmc1; ++ usb0 = &usbotg_hs; ++ }; ++ ++ config{ ++ u-boot,boot-led = "heartbeat"; ++ u-boot,error-led = "error"; ++ u-boot,mmc-env-partition = "fip"; ++ }; ++ ++#ifdef CONFIG_STM32MP15x_STM32IMAGE ++ config { ++ u-boot,mmc-env-partition = "ssbl"; ++ }; ++ ++ /* only needed for boot with TF-A, witout FIP support */ ++ firmware { ++ optee { ++ compatible = "linaro,optee-tz"; ++ method = "smc"; ++ }; ++ }; ++ ++ reserved-memory { ++ optee@de000000 { ++ reg = <0xde000000 0x02000000>; ++ no-map; ++ }; ++ }; ++#endif ++ ++ led { ++ red { ++ label = "error"; ++ gpios = <&gpioa 13 GPIO_ACTIVE_LOW>; ++ default-state = "off"; ++ status = "okay"; ++ }; ++ ++ blue { ++ default-state = "on"; ++ }; ++ }; ++}; /*root*/ ++ ++#ifndef CONFIG_TFABOOT ++ ++&i2s2{ ++ clocks = <&rcc SPI2>, <&rcc SPI2_K>, <&rcc PLL3_Q>, <&rcc PLL3_R>; ++}; ++ ++ ++ ++&sai2{ ++ clocks = <&rcc SAI2>, <&rcc PLL3_Q>, <&rcc PLL3_R>; ++}; ++ ++ ++&clk_hse { ++ st,digbypass; ++}; ++ ++&rcc { ++ u-boot,dm-pre-reloc; ++ st,clksrc = < ++ CLK_MPU_PLL1P ++ CLK_AXI_PLL2P ++ CLK_MCU_PLL3P ++ CLK_PLL12_HSE ++ CLK_PLL3_HSE ++ CLK_PLL4_HSE ++ CLK_RTC_LSE ++ CLK_MCO1_DISABLED ++ CLK_MCO2_DISABLED ++ >; ++ st,clkdiv = < ++ 1 /*MPU*/ ++ 0 /*AXI*/ ++ 0 /*MCU*/ ++ 1 /*APB1*/ ++ 1 /*APB2*/ ++ 1 /*APB3*/ ++ 1 /*APB4*/ ++ 2 /*APB5*/ ++ 23 /*RTC*/ ++ 0 /*MCO1*/ ++ 0 /*MCO2*/ ++ >; ++ st,pkcs = < ++ CLK_CKPER_HSE ++ CLK_ETH_PLL3Q ++ CLK_SDMMC12_PLL4P ++ CLK_DSI_DSIPLL ++ CLK_STGEN_HSE ++ CLK_USBPHY_HSE ++ CLK_SPI2S1_PLL3Q ++ CLK_SPI2S23_CKPER ++ CLK_SPI45_PCLK2 ++ CLK_SPI6_DISABLED ++ CLK_I2C46_HSI ++ CLK_SDMMC3_PLL4P ++ CLK_USBO_USBPHY ++ CLK_ADC_CKPER ++ CLK_CEC_LSE ++ CLK_I2C12_HSI ++ CLK_I2C35_HSI ++ CLK_UART1_DISABLED ++ CLK_UART24_HSI ++ CLK_UART35_HSI ++ CLK_UART6_DISABLED ++ CLK_UART78_DISABLED ++ CLK_SPDIF_DISABLED ++ CLK_SAI1_DISABLED ++ CLK_SAI2_DISABLED ++ CLK_SAI3_DISABLED ++ CLK_SAI4_DISABLED ++ CLK_RNG1_LSI ++ CLK_LPTIM1_DISABLED ++ CLK_LPTIM23_DISABLED ++ CLK_LPTIM45_DISABLED ++ >; ++ pll1:st,pll@0 { ++ cfg = < 2 80 0 1 1 PQR(1,0,0) >; ++ frac = < 0x800>; ++ u-boot,dm-pre-reloc; ++ }; ++ pll2:st,pll@1 { ++ cfg = < 2 65 1 0 0 PQR(1,1,1) >; ++ frac = < 0x1400>; ++ u-boot,dm-pre-reloc; ++ }; ++ pll3:st,pll@2 { ++ cfg = < 1 61 3 5 36 PQR(1,1,0) >; ++ frac = < 0x1000 >; ++ u-boot,dm-pre-reloc; ++ }; ++ pll4:st,pll@3 { ++ cfg = < 3 98 5 7 7 PQR(1,1,1) >; ++ u-boot,dm-pre-reloc; ++ }; ++}; ++ ++&i2c4{ ++ u-boot,dm-pre-reloc; ++}; ++ ++&i2c4_pins_z_mx { ++ u-boot,dm-pre-reloc; ++ pins { ++ u-boot,dm-pre-reloc; ++ }; ++}; ++ ++&sdmmc1{ ++ u-boot,dm-pre-reloc; ++}; ++ ++&sdmmc2{ ++ u-boot,dm-pre-reloc; ++}; ++ ++&sdmmc1_pins_mx { ++ u-boot,dm-spl; ++ pins1 { ++ u-boot,dm-spl; ++ }; ++ pins2 { ++ u-boot,dm-spl; ++ }; ++}; ++ ++&sdmmc2_pins_mx { ++ u-boot,dm-spl; ++ pins1 { ++ u-boot,dm-spl; ++ }; ++ pins2 { ++ u-boot,dm-spl; ++ }; ++}; ++ ++#endif /*CONFIG_TFABOOT*/ ++ ++&cryp1{ ++ u-boot,dm-pre-reloc; ++}; ++ ++&hash1{ ++ u-boot,dm-pre-reloc; ++}; ++ ++&uart4{ ++ u-boot,dm-pre-reloc; ++}; ++ ++&usbotg_hs{ ++ u-boot,dm-pre-reloc; ++ u-boot,force-b-session-valid; ++ hnp-srp-disable; ++ dr_mode = "peripheral"; ++}; ++ ++&usbphyc{ ++ u-boot,dm-pre-reloc; ++}; ++ ++&usbphyc_port0{ ++ u-boot,dm-pre-reloc; ++}; ++ ++&usbphyc_port1{ ++ u-boot,dm-pre-reloc; ++}; ++ +diff --git a/arch/arm/dts/stm32mp157c-osd32mp1-red.dts b/arch/arm/dts/stm32mp157c-osd32mp1-red.dts +new file mode 100644 +index 0000000000..6104aff03d +--- /dev/null ++++ b/arch/arm/dts/stm32mp157c-osd32mp1-red.dts +@@ -0,0 +1,1445 @@ ++/* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */ ++/* ++ * Copyright (C) Octavo Systems 2021 - All Rights Reserved ++ * Author: Neeraj Dantu for Octavo Systems ++ */ ++ ++/dts-v1/; ++ ++#include ++#include "stm32mp157.dtsi" ++#include "stm32mp15xc.dtsi" ++#include "stm32mp15xxac-pinctrl.dtsi" ++#include "stm32mp15-m4-srm.dtsi" ++#include ++#include ++#include ++ ++/ { ++ model = "Octavo OSD32MP1 RED board"; ++ compatible = "st,stm32mp157c-osd32mp1-red", "st,stm32mp157"; ++ ++ memory@c0000000 { ++ device_type = "memory"; ++ reg = <0xc0000000 0x20000000>; ++ }; ++ ++ wifi_pwrseq: wifi-pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ reset-gpios = <&gpiog 5 GPIO_ACTIVE_LOW>; ++ }; ++ ++ clocks { ++ clk_ext_camera: clk-ext-camera { ++ #clock-cells = <0>; ++ compatible = "fixed-clock"; ++ clock-frequency = <24000000>; ++ }; ++ }; ++ ++ reserved-memory { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ranges; ++ ++ mcuram2:mcuram2@10000000{ ++ compatible = "shared-dma-pool"; ++ reg = <0x10000000 0x40000>; ++ no-map; ++ }; ++ ++ vdev0vring0:vdev0vring0@10040000{ ++ compatible = "shared-dma-pool"; ++ reg = <0x10040000 0x1000>; ++ no-map; ++ }; ++ ++ vdev0vring1:vdev0vring1@10041000{ ++ compatible = "shared-dma-pool"; ++ reg = <0x10041000 0x1000>; ++ no-map; ++ }; ++ ++ vdev0buffer:vdev0buffer@10042000{ ++ compatible = "shared-dma-pool"; ++ reg = <0x10042000 0x4000>; ++ no-map; ++ }; ++ ++ mcuram:mcuram@30000000{ ++ compatible = "shared-dma-pool"; ++ reg = <0x30000000 0x40000>; ++ no-map; ++ }; ++ ++ retram:retram@38000000{ ++ compatible = "shared-dma-pool"; ++ reg = <0x38000000 0x10000>; ++ no-map; ++ }; ++ ++ gpu_reserved:gpu@d4000000{ ++ reg = <0xd4000000 0x4000000>; ++ no-map; ++ }; ++ }; ++ ++ ++ aliases { ++ ethernet0 = ðernet0; ++ serial0 = &uart4; ++ serial1 = &usart3; ++ serial2 = &uart7; ++ serial3 = &usart2; ++ }; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ }; ++ ++ led { ++ compatible = "gpio-leds"; ++ blue { ++ label = "heartbeat"; ++ gpios = <&gpiod 11 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "heartbeat"; ++ default-state = "off"; ++ }; ++ }; ++ ++ usb_phy_tuning:usb-phy-tuning{ ++ st,hs-dc-level = <2>; ++ st,fs-rftime-tuning; ++ st,hs-rftime-reduction; ++ st,hs-current-trim = <15>; ++ st,hs-impedance-trim = <1>; ++ st,squelch-level = <3>; ++ st,hs-rx-offset = <2>; ++ st,no-lsfs-sc; ++ }; ++ ++ vin:vin{ ++ compatible = "regulator-fixed"; ++ regulator-name = "vin"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ }; ++ ++ sound { ++ compatible = "audio-graph-card"; ++ label = "STM32MP15-DK"; ++ routing = ++ "Playback" , "MCLK", ++ "Capture" , "MCLK", ++ "MICL" , "Mic Bias"; ++ dais = <&i2s2_port>; ++ status = "okay"; ++ }; ++}; ++ ++&pinctrl { ++ u-boot,dm-pre-reloc; ++ dcmi_pins_mx: dcmi_mx-0 { ++ pins { ++ pinmux = , /* DCMI_HSYNC */ ++ , /* DCMI_PIXCLK */ ++ , /* DCMI_D1 */ ++ , /* DCMI_D7 */ ++ , /* DCMI_D0 */ ++ , /* DCMI_D2 */ ++ , /* DCMI_D3 */ ++ , /* DCMI_D4 */ ++ , /* DCMI_D6 */ ++ , /* DCMI_VSYNC */ ++ , /* DCMI_D8 */ ++ , /* DCMI_D9 */ ++ , /* DCMI_D11 */ ++ , /* DCMI_D10 */ ++ ; /* DCMI_D5 */ ++ bias-disable; ++ }; ++ }; ++ ++ dcmi_sleep_pins_mx: dcmi_sleep_mx-0 { ++ pins { ++ pinmux = , /* DCMI_HSYNC */ ++ , /* DCMI_PIXCLK */ ++ , /* DCMI_D1 */ ++ , /* DCMI_D7 */ ++ , /* DCMI_D0 */ ++ , /* DCMI_D2 */ ++ , /* DCMI_D3 */ ++ , /* DCMI_D4 */ ++ , /* DCMI_D6 */ ++ , /* DCMI_VSYNC */ ++ , /* DCMI_D8 */ ++ , /* DCMI_D9 */ ++ , /* DCMI_D11 */ ++ , /* DCMI_D10 */ ++ ; /* DCMI_D5 */ ++ }; ++ }; ++ ++ eth1_pins_mx: eth1_mx-0 { ++ pins1 { ++ pinmux = , /* ETH1_RX_CLK */ ++ , /* ETH1_RX_CTL */ ++ , /* ETH1_RXD2 */ ++ , /* ETH1_RXD3 */ ++ , /* ETH1_RXD0 */ ++ ; /* ETH1_RXD1 */ ++ bias-disable; ++ }; ++ pins2 { ++ pinmux = ; /* ETH1_MDIO */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <0>; ++ }; ++ pins3 { ++ pinmux = , /* ETH1_TX_CTL */ ++ , /* ETH1_MDC */ ++ , /* ETH1_TXD2 */ ++ , /* ETH1_TXD3 */ ++ , /* ETH1_GTX_CLK */ ++ , /* ETH1_TXD0 */ ++ ; /* ETH1_TXD1 */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <2>; ++ }; ++ }; ++ ++ eth1_sleep_pins_mx: eth1_sleep_mx-0 { ++ pins { ++ pinmux = , /* ETH1_RX_CLK */ ++ , /* ETH1_MDIO */ ++ , /* ETH1_RX_CTL */ ++ , /* ETH1_RXD2 */ ++ , /* ETH1_RXD3 */ ++ , /* ETH1_TX_CTL */ ++ , /* ETH1_MDC */ ++ , /* ETH1_TXD2 */ ++ , /* ETH1_RXD0 */ ++ , /* ETH1_RXD1 */ ++ , /* ETH1_TXD3 */ ++ , /* ETH1_GTX_CLK */ ++ , /* ETH1_TXD0 */ ++ ; /* ETH1_TXD1 */ ++ }; ++ }; ++ ++ i2c1_pins_mx: i2c1_mx-0 { ++ pins { ++ pinmux = , /* I2C1_SCL */ ++ ; /* I2C1_SDA */ ++ bias-disable; ++ drive-open-drain; ++ slew-rate = <0>; ++ }; ++ }; ++ ++ i2c1_sleep_pins_mx: i2c1_sleep_mx-0 { ++ pins { ++ pinmux = , /* I2C1_SCL */ ++ ; /* I2C1_SDA */ ++ }; ++ }; ++ ++ i2c2_pins_mx: i2c2_mx-0 { ++ pins { ++ pinmux = ; /* I2C2_SDA */ ++ bias-disable; ++ drive-open-drain; ++ slew-rate = <0>; ++ }; ++ }; ++ ++ i2c2_sleep_pins_mx: i2c2_sleep_mx-0 { ++ pins { ++ pinmux = ; /* I2C2_SDA */ ++ }; ++ }; ++ ++ i2c5_pins_mx: i2c5_mx-0 { ++ pins { ++ pinmux = , /* I2C5_SCL */ ++ ; /* I2C5_SDA */ ++ bias-disable; ++ drive-open-drain; ++ slew-rate = <0>; ++ }; ++ }; ++ ++ i2c5_sleep_pins_mx: i2c5_sleep_mx-0 { ++ pins { ++ pinmux = , /* I2C5_SCL */ ++ ; /* I2C5_SDA */ ++ }; ++ }; ++ ++ i2s2_pins_mx: i2s2_mx-0 { ++ pins { ++ pinmux = , /* I2S2_WS */ ++ , /* I2S2_CK */ ++ ; /* I2S2_SDO */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <1>; ++ }; ++ }; ++ ++ i2s2_sleep_pins_mx: i2s2_sleep_mx-0 { ++ pins { ++ pinmux = , /* I2S2_WS */ ++ , /* I2S2_CK */ ++ ; /* I2S2_SDO */ ++ }; ++ }; ++ ++ ltdc_pins_mx: ltdc_mx-0 { ++ pins1 { ++ pinmux = , /* LTDC_B5 */ ++ , /* LTDC_B6 */ ++ , /* LTDC_R5 */ ++ , /* LTDC_B7 */ ++ , /* LTDC_B0 */ ++ , /* LTDC_B3 */ ++ , /* LTDC_G1 */ ++ , /* LTDC_B4 */ ++ , /* LTDC_G0 */ ++ , /* LTDC_R7 */ ++ , /* LTDC_DE */ ++ , /* LTDC_B2 */ ++ , /* LTDC_B1 */ ++ , /* LTDC_R0 */ ++ , /* LTDC_R1 */ ++ , /* LTDC_G4 */ ++ , /* LTDC_R2 */ ++ , /* LTDC_R3 */ ++ , /* LTDC_R4 */ ++ , /* LTDC_R6 */ ++ , /* LTDC_G2 */ ++ , /* LTDC_G3 */ ++ , /* LTDC_G5 */ ++ , /* LTDC_G6 */ ++ , /* LTDC_G7 */ ++ , /* LTDC_VSYNC */ ++ ; /* LTDC_HSYNC */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <0>; ++ }; ++ pins2 { ++ pinmux = ; /* LTDC_CLK */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <1>; ++ }; ++ }; ++ ++ ltdc_sleep_pins_mx: ltdc_sleep_mx-0 { ++ pins { ++ pinmux = , /* LTDC_B5 */ ++ , /* LTDC_B6 */ ++ , /* LTDC_R5 */ ++ , /* LTDC_B7 */ ++ , /* LTDC_B0 */ ++ , /* LTDC_B3 */ ++ , /* LTDC_G1 */ ++ , /* LTDC_B4 */ ++ , /* LTDC_G0 */ ++ , /* LTDC_R7 */ ++ , /* LTDC_DE */ ++ , /* LTDC_CLK */ ++ , /* LTDC_B2 */ ++ , /* LTDC_B1 */ ++ , /* LTDC_R0 */ ++ , /* LTDC_R1 */ ++ , /* LTDC_G4 */ ++ , /* LTDC_R2 */ ++ , /* LTDC_R3 */ ++ , /* LTDC_R4 */ ++ , /* LTDC_R6 */ ++ , /* LTDC_G2 */ ++ , /* LTDC_G3 */ ++ , /* LTDC_G5 */ ++ , /* LTDC_G6 */ ++ , /* LTDC_G7 */ ++ , /* LTDC_VSYNC */ ++ ; /* LTDC_HSYNC */ ++ }; ++ }; ++ ++ sdmmc1_pins_mx: sdmmc1_mx-0 { ++ u-boot,dm-pre-reloc; ++ pins1 { ++ u-boot,dm-pre-reloc; ++ pinmux = , /* SDMMC1_D0 */ ++ , /* SDMMC1_D1 */ ++ , /* SDMMC1_D2 */ ++ , /* SDMMC1_D3 */ ++ ; /* SDMMC1_CMD */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <1>; ++ }; ++ pins2 { ++ u-boot,dm-pre-reloc; ++ pinmux = ; /* SDMMC1_CK */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <2>; ++ }; ++ }; ++ ++ sdmmc1_opendrain_pins_mx: sdmmc1_opendrain_mx-0 { ++ u-boot,dm-pre-reloc; ++ pins1 { ++ u-boot,dm-pre-reloc; ++ pinmux = , /* SDMMC1_D0 */ ++ , /* SDMMC1_D1 */ ++ , /* SDMMC1_D2 */ ++ ; /* SDMMC1_D3 */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <1>; ++ }; ++ pins2 { ++ u-boot,dm-pre-reloc; ++ pinmux = ; /* SDMMC1_CK */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <2>; ++ }; ++ pins3 { ++ u-boot,dm-pre-reloc; ++ pinmux = ; /* SDMMC1_CMD */ ++ bias-disable; ++ drive-open-drain; ++ slew-rate = <1>; ++ }; ++ }; ++ ++ sdmmc1_sleep_pins_mx: sdmmc1_sleep_mx-0 { ++ u-boot,dm-pre-reloc; ++ pins { ++ u-boot,dm-pre-reloc; ++ pinmux = , /* SDMMC1_D0 */ ++ , /* SDMMC1_D1 */ ++ , /* SDMMC1_D2 */ ++ , /* SDMMC1_D3 */ ++ , /* SDMMC1_CK */ ++ ; /* SDMMC1_CMD */ ++ }; ++ }; ++ ++ sdmmc2_pins_mx: sdmmc2_mx-0 { ++ u-boot,dm-pre-reloc; ++ pins1 { ++ u-boot,dm-pre-reloc; ++ pinmux = , /* SDMMC2_D4 */ ++ , /* SDMMC2_D5 */ ++ , /* SDMMC2_D2 */ ++ , /* SDMMC2_D3 */ ++ , /* SDMMC2_D0 */ ++ , /* SDMMC2_D1 */ ++ , /* SDMMC2_D7 */ ++ , /* SDMMC2_D6 */ ++ ; /* SDMMC2_CMD */ ++ bias-pull-up; ++ drive-push-pull; ++ slew-rate = <1>; ++ }; ++ pins2 { ++ u-boot,dm-pre-reloc; ++ pinmux = ; /* SDMMC2_CK */ ++ bias-pull-up; ++ drive-push-pull; ++ slew-rate = <2>; ++ }; ++ }; ++ ++ sdmmc2_opendrain_pins_mx: sdmmc2_opendrain_mx-0 { ++ u-boot,dm-pre-reloc; ++ pins1 { ++ u-boot,dm-pre-reloc; ++ pinmux = , /* SDMMC2_D4 */ ++ , /* SDMMC2_D5 */ ++ , /* SDMMC2_D2 */ ++ , /* SDMMC2_D3 */ ++ , /* SDMMC2_D0 */ ++ , /* SDMMC2_D1 */ ++ , /* SDMMC2_D7 */ ++ ; /* SDMMC2_D6 */ ++ bias-pull-up; ++ drive-push-pull; ++ slew-rate = <1>; ++ }; ++ pins2 { ++ u-boot,dm-pre-reloc; ++ pinmux = ; /* SDMMC2_CK */ ++ bias-pull-up; ++ drive-push-pull; ++ slew-rate = <2>; ++ }; ++ pins3 { ++ u-boot,dm-pre-reloc; ++ pinmux = ; /* SDMMC2_CMD */ ++ bias-pull-up; ++ drive-open-drain; ++ slew-rate = <1>; ++ }; ++ }; ++ ++ sdmmc2_sleep_pins_mx: sdmmc2_sleep_mx-0 { ++ u-boot,dm-pre-reloc; ++ pins { ++ u-boot,dm-pre-reloc; ++ pinmux = , /* SDMMC2_D4 */ ++ , /* SDMMC2_D5 */ ++ , /* SDMMC2_D2 */ ++ , /* SDMMC2_D3 */ ++ , /* SDMMC2_D0 */ ++ , /* SDMMC2_D1 */ ++ , /* SDMMC2_D7 */ ++ , /* SDMMC2_CK */ ++ , /* SDMMC2_D6 */ ++ ; /* SDMMC2_CMD */ ++ }; ++ }; ++ ++ sdmmc3_pins_mx: sdmmc3_mx-0 { ++ u-boot,dm-pre-reloc; ++ pins1 { ++ u-boot,dm-pre-reloc; ++ pinmux = , /* SDMMC3_D3 */ ++ , /* SDMMC3_D0 */ ++ , /* SDMMC3_CMD */ ++ , /* SDMMC3_D1 */ ++ ; /* SDMMC3_D2 */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <1>; ++ }; ++ pins2 { ++ u-boot,dm-pre-reloc; ++ pinmux = ; /* SDMMC3_CK */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <2>; ++ }; ++ }; ++ ++ sdmmc3_opendrain_pins_mx: sdmmc3_opendrain_mx-0 { ++ u-boot,dm-pre-reloc; ++ pins1 { ++ u-boot,dm-pre-reloc; ++ pinmux = , /* SDMMC3_D3 */ ++ , /* SDMMC3_D0 */ ++ , /* SDMMC3_D1 */ ++ ; /* SDMMC3_D2 */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <1>; ++ }; ++ pins2 { ++ u-boot,dm-pre-reloc; ++ pinmux = ; /* SDMMC3_CMD */ ++ bias-disable; ++ drive-open-drain; ++ slew-rate = <1>; ++ }; ++ pins3 { ++ u-boot,dm-pre-reloc; ++ pinmux = ; /* SDMMC3_CK */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <2>; ++ }; ++ }; ++ ++ sdmmc3_sleep_pins_mx: sdmmc3_sleep_mx-0 { ++ u-boot,dm-pre-reloc; ++ pins { ++ u-boot,dm-pre-reloc; ++ pinmux = , /* SDMMC3_D3 */ ++ , /* SDMMC3_D0 */ ++ , /* SDMMC3_CMD */ ++ , /* SDMMC3_D1 */ ++ , /* SDMMC3_D2 */ ++ ; /* SDMMC3_CK */ ++ }; ++ }; ++ ++ spi5_pins_mx: spi5_mx-0 { ++ pins { ++ pinmux = , /* SPI5_SCK */ ++ , /* SPI5_MISO */ ++ ; /* SPI5_MOSI */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <1>; ++ }; ++ }; ++ ++ spi5_sleep_pins_mx: spi5_sleep_mx-0 { ++ pins { ++ pinmux = , /* SPI5_SCK */ ++ , /* SPI5_MISO */ ++ ; /* SPI5_MOSI */ ++ }; ++ }; ++ ++ tim5_pwm_pins_mx: tim5_pwm_mx-0 { ++ pins { ++ pinmux = ; /* TIM5_CH2 */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <0>; ++ }; ++ }; ++ ++ tim5_pwm_sleep_pins_mx: tim5_pwm_sleep_mx-0 { ++ pins { ++ pinmux = ; /* TIM5_CH2 */ ++ }; ++ }; ++ ++ uart4_pins_mx: uart4_mx-0 { ++ u-boot,dm-pre-reloc; ++ pins1 { ++ u-boot,dm-pre-reloc; ++ pinmux = ; /* UART4_RX */ ++ bias-disable; ++ }; ++ pins2 { ++ u-boot,dm-pre-reloc; ++ pinmux = ; /* UART4_TX */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <0>; ++ }; ++ }; ++ ++ uart4_sleep_pins_mx: uart4_sleep_mx-0 { ++ u-boot,dm-pre-reloc; ++ pins { ++ u-boot,dm-pre-reloc; ++ pinmux = , /* UART4_RX */ ++ ; /* UART4_TX */ ++ }; ++ }; ++ ++ usart2_pins_mx: usart2_mx-0 { ++ pins1 { ++ pinmux = , /* USART2_CTS */ ++ ; /* USART2_RX */ ++ bias-disable; ++ }; ++ pins2 { ++ pinmux = , /* USART2_RTS */ ++ ; /* USART2_TX */ ++ bias-disable; ++ drive-push-pull; ++ slew-rate = <0>; ++ }; ++ }; ++ ++ usart2_sleep_pins_mx: usart2_sleep_mx-0 { ++ pins { ++ pinmux = , /* USART2_CTS */ ++ , /* USART2_RTS */ ++ , /* USART2_TX */ ++ ; /* USART2_RX */ ++ }; ++ }; ++ ++ cec_pins_mx: cec-1 { ++ pins { ++ pinmux = ; ++ bias-disable; ++ drive-open-drain; ++ slew-rate = <0>; ++ }; ++ }; ++ ++ cec_sleep_pins_mx: cec-sleep-1 { ++ pins { ++ pinmux = ; /* HDMI_CEC */ ++ }; ++ }; ++ ++ stusb1600_pins_mx: stusb1600-0 { ++ pins { ++ pinmux = ; ++ bias-pull-up; ++ }; ++ }; ++ ++ m_can1_pins_mx: m_can1_sleep_mx-0 { ++ pins1 { ++ pinmux = ; /* CAN1_TX */ ++ slew-rate = <0>; ++ drive-push-pull; ++ bias-disable; ++ }; ++ pins2 { ++ pinmux = ; /* CAN1_RX */ ++ bias-disable; ++ }; ++ }; ++ ++ m_can1_sleep_pins_mx: m_can1_sleep-0 { ++ pins { ++ pinmux = , /* CAN1_TX */ ++ ; /* CAN1_RX */ ++ }; ++ }; ++ ++}; ++ ++&pinctrl_z { ++ u-boot,dm-pre-reloc; ++ ++ i2c2_pins_z_mx: i2c2_mx-0 { ++ pins { ++ pinmux = ; /* I2C2_SCL */ ++ bias-disable; ++ drive-open-drain; ++ slew-rate = <0>; ++ }; ++ }; ++ ++ i2c2_sleep_pins_z_mx: i2c2_sleep_mx-0 { ++ pins { ++ pinmux = ; /* I2C2_SCL */ ++ }; ++ }; ++ ++ i2c4_pins_z_mx: i2c4_mx-0 { ++ u-boot,dm-pre-reloc; ++ pins { ++ u-boot,dm-pre-reloc; ++ pinmux = , /* I2C4_SCL */ ++ ; /* I2C4_SDA */ ++ bias-disable; ++ drive-open-drain; ++ slew-rate = <0>; ++ }; ++ }; ++ ++ i2c4_sleep_pins_z_mx: i2c4_sleep_mx-0 { ++ u-boot,dm-pre-reloc; ++ pins { ++ u-boot,dm-pre-reloc; ++ pinmux = , /* I2C4_SCL */ ++ ; /* I2C4_SDA */ ++ }; ++ }; ++}; ++ ++&m4_rproc{ ++ memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>, ++ <&vdev0vring1>, <&vdev0buffer>; ++ mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>; ++ mbox-names = "vq0", "vq1", "shutdown"; ++ interrupt-parent = <&exti>; ++ interrupts = <68 1>; ++ wakeup-source; ++ status = "okay"; ++}; ++ ++&dcmi{ ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&dcmi_pins_mx>; ++ pinctrl-1 = <&dcmi_sleep_pins_mx>; ++ status = "okay"; ++ ++ port { ++ dcmi_0: endpoint { ++ remote-endpoint = <&ov5640_0>; ++ bus-width = <8>; ++ hsync-active = <0>; ++ vsync-active = <0>; ++ pclk-sample = <1>; ++ pclk-max-frequency = <77000000>; ++ }; ++ }; ++}; ++ ++&dsi{ ++ status = "okay"; ++ ++ ports { ++ port@0 { ++ reg = <0>; ++ dsi_in: endpoint { ++ remote-endpoint = <<dc_ep1_out>; ++ }; ++ }; ++ ++ port@1 { ++ reg = <1>; ++ dsi_out: endpoint { ++ remote-endpoint = <&panel_in>; ++ }; ++ }; ++ }; ++ ++ panel_otm8009a: panel-otm8009a@0 { ++ compatible = "orisetech,otm8009a"; ++ reg = <0>; ++ reset-gpios = <&gpioe 9 GPIO_ACTIVE_LOW>; ++ power-supply = <&v3v3>; ++ status = "okay"; ++ ++ port { ++ panel_in: endpoint { ++ remote-endpoint = <&dsi_out>; ++ }; ++ }; ++ }; ++}; ++ ++ðernet0{ ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <ð1_pins_mx>; ++ pinctrl-1 = <ð1_sleep_pins_mx>; ++ status = "okay"; ++ ++ ++ st,eth-clk-sel; //custom ++ phy-mode = "rgmii-id"; ++ max-speed = <1000>; ++ phy-handle = <&phy0>; ++ nvmem-cells = <ðernet_mac_address>; ++ nvmem-cell-names = "mac-address"; ++ ++ mdio0 { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ compatible = "snps,dwmac-mdio"; ++ phy0: ethernet-phy@0 { ++ reg = <3>; ++ }; ++ }; ++}; ++ ++&gpu{ ++ status = "okay"; ++ contiguous-area = <&gpu_reserved>; ++}; ++ ++&hash1 { ++ status = "okay"; ++}; ++ ++&hsem{ ++ status = "okay"; ++}; ++ ++&cryp1{ ++ u-boot,dm-pre-reloc; ++ status = "okay"; ++}; ++ ++&i2c1{ ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&i2c1_pins_mx>; ++ pinctrl-1 = <&i2c1_sleep_pins_mx>; ++ status = "okay"; ++ i2c-scl-rising-time-ns = <100>; ++ i2c-scl-falling-time-ns = <7>; ++ /delete-property/dmas; ++ /delete-property/dma-names; ++ ++ touchscreen@2a { ++ compatible = "focaltech,ft6236"; ++ reg = <0x2a>; ++ interrupts = <2 2>; ++ interrupt-parent = <&gpiof>; ++ interrupt-controller; ++ touchscreen-size-x = <480>; ++ touchscreen-size-y = <800>; ++ panel = <&panel_otm8009a>; ++ vcc-supply = <&v3v3>; ++ status = "okay"; ++ }; ++ touchscreen@38 { ++ compatible = "focaltech,ft6236"; ++ reg = <0x38>; ++ interrupts = <2 2>; ++ interrupt-parent = <&gpiof>; ++ interrupt-controller; ++ touchscreen-size-x = <480>; ++ touchscreen-size-y = <800>; ++ panel = <&panel_otm8009a>; ++ vcc-supply = <&v3v3>; ++ status = "okay"; ++ }; ++ ++ hdmi-transmitter@39 { ++ compatible = "sil,sii9022"; ++ reg = <0x39>; ++ reset-gpios = <&gpiog 0 GPIO_ACTIVE_LOW>; ++ interrupts = <1 IRQ_TYPE_EDGE_FALLING>; ++ interrupt-parent = <&gpiog>; ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <<dc_pins_mx>; ++ pinctrl-1 = <<dc_sleep_pins_mx>; ++ status = "okay"; ++ ++ ports { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ port@0 { ++ reg = <0>; ++ sii9022_in: endpoint { ++ remote-endpoint = <<dc_ep0_out>; ++ }; ++ }; ++ ++ port@1 { ++ reg = <1>; ++ sii9022_tx_endpoint: endpoint { ++ remote-endpoint = <&i2s2_endpoint>; ++ }; ++ }; ++ }; ++ }; ++}; ++ ++&i2c2{ ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&i2c2_pins_mx &i2c2_pins_z_mx>; ++ pinctrl-1 = <&i2c2_sleep_pins_mx &i2c2_sleep_pins_z_mx>; ++ status = "okay"; ++ i2c-scl-rising-time-ns = <185>; ++ i2c-scl-falling-time-ns = <20>; ++ /delete-property/dmas; ++ /delete-property/dma-names; ++ ++ ov5640: camera@3c { ++ compatible = "ovti,ov5640"; ++ reg = <0x3c>; ++ clocks = <&clk_ext_camera>; ++ clock-names = "xclk"; ++ DOVDD-supply = <&v3v3>; ++ //powerdown-gpios = <&stmfx_pinctrl 18 (GPIO_ACTIVE_HIGH | GPIO_PUSH_PULL)>; ++ //reset-gpios = <&stmfx_pinctrl 19 (GPIO_ACTIVE_LOW | GPIO_PUSH_PULL)>; ++ //powerdown-gpios = <&gpioc 3 GPIO_ACTIVE_HIGH>; //custom ++ //reset-gpios = <&gpioa 14 GPIO_ACTIVE_LOW>; //custom ++ rotation = <180>; ++ status = "okay"; ++ ++ port { ++ ov5640_0: endpoint { ++ remote-endpoint = <&dcmi_0>; ++ bus-width = <8>; ++ data-shift = <2>; /* lines 9:2 are used */ ++ hsync-active = <0>; ++ vsync-active = <0>; ++ pclk-sample = <1>; ++ pclk-max-frequency = <77000000>; ++ }; ++ }; ++ }; ++}; ++ ++&i2c4{ ++ u-boot,dm-pre-reloc; ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&i2c4_pins_z_mx>; ++ pinctrl-1 = <&i2c4_sleep_pins_z_mx>; ++ status = "okay"; ++ i2c-scl-rising-time-ns = <185>; ++ i2c-scl-falling-time-ns = <20>; ++ clock-frequency = <400000>; ++ /delete-property/ dmas; ++ /delete-property/ dma-names; ++ ++ typec: stusb1600@28 { ++ compatible = "st,stusb1600"; ++ reg = <0x28>; ++ interrupt-parent = <&gpioe>; ++ interrupts = <8 IRQ_TYPE_EDGE_FALLING>; ++ pinctrl-0 = <&stusb1600_pins_mx>; ++ pinctrl-names = "default"; ++ status = "okay"; ++ vdd-supply = <&vin>; ++ ++ typec_con: connector { ++ compatible = "usb-c-connector"; ++ label = "USB-C"; ++ power-role = "dual"; ++ power-opmode = "default"; ++ ++ port { ++ con_usbotg_hs_ep: endpoint { ++ remote-endpoint = <&usbotg_hs_ep>; ++ }; ++ }; ++ }; ++ }; ++ ++ pmic:stpmic@33{ ++ compatible = "st,stpmic1"; ++ reg = <0x33>; ++ interrupts-extended = <&exti_pwr 55 IRQ_TYPE_EDGE_FALLING>; ++ interrupt-controller; ++ #interrupt-cells = <2>; ++ status = "okay"; ++ ++ st,main-control-register = <0x04>; ++ st,vin-control-register = <0xc0>; ++ st,usb-control-register = <0x20>; ++ ++ regulators{ ++ compatible = "st,stpmic1-regulators"; ++ buck1-supply = <&vin>; ++ buck2-supply = <&vin>; ++ buck3-supply = <&vin>; ++ buck4-supply = <&vin>; ++ ldo1-supply = <&v3v3>; ++ ldo2-supply = <&vin>; ++ ldo3-supply = <&vdd_ddr>; ++ ldo4-supply = <&vin>; ++ ldo5-supply = <&vin>; ++ ldo6-supply = <&v3v3>; ++ vref_ddr-supply = <&vin>; ++ boost-supply = <&vin>; ++ pwr_sw1-supply = <&bst_out>; ++ pwr_sw2-supply = <&bst_out>; ++ ++ ++ vddcore:buck1{ ++ regulator-name = "vddcore"; ++ regulator-min-microvolt = <1200000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-always-on; ++ regulator-initial-mode = <0>; ++ regulator-over-current-protection; ++ }; ++ ++ vdd_ddr:buck2{ ++ regulator-name = "vdd_ddr"; ++ regulator-min-microvolt = <1350000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-always-on; ++ regulator-initial-mode = <0>; ++ regulator-over-current-protection; ++ }; ++ ++ vdd:buck3{ ++ regulator-name = "vdd"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ st,mask-reset; ++ regulator-initial-mode = <0>; ++ regulator-over-current-protection; ++ }; ++ ++ v3v3:buck4{ ++ regulator-name = "v3v3"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ regulator-over-current-protection; ++ regulator-initial-mode = <0>; ++ }; ++ ++ v1v8_audio:ldo1{ ++ regulator-name = "v1v8_audio"; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-always-on; ++ interrupts = ; ++ }; ++ ++ v3v3_hdmi:ldo2{ ++ regulator-name = "v3v3_hdmi"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ interrupts = ; ++ }; ++ ++ vtt_ddr:ldo3{ ++ regulator-name = "vtt_ddr"; ++ regulator-min-microvolt = <500000>; ++ regulator-max-microvolt = <750000>; ++ regulator-always-on; ++ regulator-over-current-protection; ++ }; ++ ++ vdd_usb:ldo4{ ++ regulator-name = "vdd_usb"; ++ interrupts = ; ++ }; ++ ++ v3v3_eth:ldo5{ ++ regulator-name = "v3v3_eth"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ interrupts = ; ++ regulator-boot-on; ++ }; ++ ++ v3v3_dsi:ldo6{ ++ regulator-name = "v3v3_dsi"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ interrupts = ; ++ }; ++ ++ vref_ddr:vref_ddr{ ++ regulator-name = "vref_ddr"; ++ regulator-always-on; ++ regulator-over-current-protection; ++ }; ++ ++ bst_out:boost{ ++ regulator-name = "bst_out"; ++ interrupts = ; ++ regulator-always-on; ++ }; ++ ++ vbus_otg:pwr_sw1{ ++ regulator-name = "vbus_otg"; ++ interrupts = ; ++ regulator-active-discharge; ++ regulator-always-on; ++ }; ++ ++ vbus_sw:pwr_sw2{ ++ regulator-name = "vbus_sw"; ++ interrupts = ; ++ regulator-active-discharge = <1>; ++ regulator-always-on; ++ }; ++ }; ++ ++ onkey{ ++ compatible = "st,stpmic1-onkey"; ++ interrupts = , ; ++ interrupt-names = "onkey-falling", "onkey-rising"; ++ power-off-time-sec = <10>; ++ status = "okay"; ++ }; ++ ++ watchdog { ++ compatible = "st,stpmic1-wdt"; ++ status = "disabled"; ++ }; ++ }; ++ eeprom@50 { ++ compatible = "atmel,24c02"; ++ reg = <0x50>; ++ pagesize = <16>; ++ }; ++}; ++ ++&i2c5{ ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&i2c5_pins_mx>; ++ pinctrl-1 = <&i2c5_sleep_pins_mx>; ++ status = "okay"; ++ ++ /delete-property/dmas; ++ /delete-property/dma-names; ++ ++}; ++ ++&spi5 { ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&spi5_pins_mx>; ++ pinctrl-1 = <&spi5_sleep_pins_mx>; ++ cs-gpios = <&gpiof 6 0>; ++ status = "okay"; ++ ++ spidev: spidev@0 { ++ compatible = "rohm,dh2228fv"; ++ spi-max-frequency = <30000000>; ++ reg = <0>; ++ }; ++}; ++ ++&i2s2{ ++ clocks = <&rcc SPI2>, <&rcc SPI2_K>, <&rcc PLL3_Q>, <&rcc PLL3_R>; ++ clock-names = "pclk", "i2sclk", "x8k", "x11k"; ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&i2s2_pins_mx>; ++ pinctrl-1 = <&i2s2_sleep_pins_mx>; ++ status = "okay"; ++ ++ i2s2_port: port { ++ i2s2_endpoint: endpoint { ++ remote-endpoint = <&sii9022_tx_endpoint>; ++ format = "i2s"; ++ mclk-fs = <256>; ++ }; ++ }; ++}; ++ ++&ipcc{ ++ status = "okay"; ++}; ++ ++&iwdg2{ ++ status = "okay"; ++ timeout-sec = <32>; ++}; ++ ++<dc{ ++ status = "okay"; ++ port { ++ ltdc_ep0_out: endpoint@0 { ++ reg = <0>; ++ remote-endpoint = <&sii9022_in>; ++ }; ++ ++ ltdc_ep1_out: endpoint@1 { ++ reg = <1>; ++ remote-endpoint = <&dsi_in>; ++ }; ++ }; ++}; ++ ++&pwr_regulators { ++ vdd-supply = <&vdd>; ++ vdd_3v3_usbfs-supply = <&vdd_usb>; ++}; ++ ++&rcc{ ++ u-boot,dm-pre-reloc; ++ status = "okay"; ++}; ++ ++&rng1{ ++ status = "okay"; ++}; ++ ++&rtc{ ++ status = "okay"; ++}; ++ ++&cec { ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&cec_pins_mx>; ++ pinctrl-1 = <&cec_sleep_pins_mx>; ++ status = "okay"; ++}; ++ ++&cpu0{ ++ cpu-supply = <&vddcore>; ++}; ++ ++&cpu1{ ++ cpu-supply = <&vddcore>; ++}; ++ ++&crc1 { ++ status = "okay"; ++}; ++ ++&dts { ++ status = "okay"; ++}; ++ ++&sdmmc1{ ++ u-boot,dm-pre-reloc; ++ pinctrl-names = "default", "opendrain", "sleep"; ++ pinctrl-0 = <&sdmmc1_pins_mx>; ++ pinctrl-1 = <&sdmmc1_opendrain_pins_mx>; ++ pinctrl-2 = <&sdmmc1_sleep_pins_mx>; ++ status = "okay"; ++ ++ cd-gpios = <&gpioe 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; ++ disable-wp; ++ st,neg-edge; ++ bus-width = <4>; ++ vmmc-supply = <&v3v3>; ++}; ++ ++&sdmmc2{ ++ u-boot,dm-pre-reloc; ++ pinctrl-names = "default", "opendrain", "sleep"; ++ pinctrl-0 = <&sdmmc2_pins_mx>; ++ pinctrl-1 = <&sdmmc2_opendrain_pins_mx>; ++ pinctrl-2 = <&sdmmc2_sleep_pins_mx>; ++ status = "okay"; ++ non-removable; ++ no-sd; ++ no-sdio; ++ st,neg-edge; ++ bus-width = <8>; ++ vmmc-supply = <&v3v3>; ++ vqmmc-supply = <&v3v3>; ++ mmc-ddr-3_3v; ++}; ++ ++&sdmmc3{ ++ pinctrl-names = "default", "opendrain", "sleep"; ++ pinctrl-0 = <&sdmmc3_pins_mx>; ++ pinctrl-1 = <&sdmmc3_opendrain_pins_mx>; ++ pinctrl-2 = <&sdmmc3_sleep_pins_mx>; ++ arm,primecell-periphid = <0x10153180>; ++ non-removable; ++ st,neg-edge; ++ bus-width = <4>; ++ vmmc-supply = <&v3v3>; ++ //mmc-pwrseq = <&wifi_pwrseq>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ keep-power-in-suspend; ++ status = "disabled"; ++ //status = "okay"; ++ ++ brcmf: bcrmf@1 { ++ reg = <1>; ++ compatible = "brcm,bcm4329-fmac"; ++ }; ++}; ++ ++&tamp{ ++ status = "okay"; ++}; ++ ++&timers5 { ++ /delete-property/dmas; ++ /delete-property/dma-names; ++ status = "okay"; ++ pwm { ++ pinctrl-0 = <&tim5_pwm_pins_mx>; ++ pinctrl-1 = <&tim5_pwm_sleep_pins_mx>; ++ pinctrl-names = "default", "sleep"; ++ status = "okay"; ++ }; ++ timer@4 { ++ status = "okay"; ++ }; ++}; ++ ++&uart4{ ++ u-boot,dm-pre-reloc; ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&uart4_pins_mx>; ++ pinctrl-1 = <&uart4_sleep_pins_mx>; ++ /delete-property/dmas; ++ /delete-property/dma-names; ++ status = "okay"; ++}; ++ ++&usart2{ ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&usart2_pins_mx>; ++ pinctrl-1 = <&usart2_sleep_pins_mx>; ++ uart-has-rtscts; ++ status = "okay"; ++ ++ bluetooth { ++ shutdown-gpios = <&gpioe 10 GPIO_ACTIVE_HIGH>; ++ compatible = "brcm,bcm43438-bt"; ++ max-speed = <3000000>; ++ vbat-supply = <&v3v3>; ++ vddio-supply = <&v3v3>; ++ }; ++}; ++ ++&sram { ++ dma_pool: dma_pool@0 { ++ reg = <0x50000 0x10000>; ++ pool; ++ }; ++}; ++ ++&dma1 { ++ sram = <&dma_pool>; ++}; ++ ++&dma2 { ++ sram = <&dma_pool>; ++}; ++ ++&adc { ++ vdd-supply = <&vdd>; ++ vdda-supply = <&v3v3_eth>; ++ vref-supply = <&v3v3_eth>; ++ status = "okay"; ++ adc1: adc@0 { ++ st,min-sample-time-nsecs = <5000>; ++ st,adc-channels = <0 1>; ++ status = "okay"; ++ }; ++ ++ adc_temp: temp { ++ status = "okay"; ++ }; ++}; ++ ++ ++// WARNING: Do not try to enable DAC1 and DCMI ++// This devices share the same pin PA4 ++/* &dac { ++ pinctrl-names = "default"; ++ status = "okay"; ++ dac1: dac@1 { ++ pinctrl-0 = <&dac_ch1_pins_a>; ++ status = "disabled"; ++ }; ++ dac2: dac@2 { ++ pinctrl-0 = <&dac_ch2_pins_a>; ++ status = "okay"; ++ }; ++};*/ ++ ++&usbh_ehci { ++ phys = <&usbphyc_port0>; ++ phy-names = "usb"; ++ status = "okay"; ++}; ++ ++&usbh_ohci{ ++ phys = <&usbphyc_port0>; ++ phy-names = "usb"; ++ status = "okay"; ++}; ++ ++&usbotg_hs { ++ phys = <&usbphyc_port1 0>; ++ phy-names = "usb2-phy"; ++ usb-role-switch; ++ status = "okay"; ++ ++ port { ++ usbotg_hs_ep: endpoint { ++ remote-endpoint = <&con_usbotg_hs_ep>; ++ }; ++ }; ++}; ++ ++&usbphyc { ++ status = "okay"; ++}; ++ ++&usbphyc_port0 { ++ phy-supply = <&vdd_usb>; ++ st,phy-tuning = <&usb_phy_tuning>; ++}; ++ ++&usbphyc_port1 { ++ phy-supply = <&vdd_usb>; ++ st,phy-tuning = <&usb_phy_tuning>; ++}; ++ ++&m_can1 { ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&m_can1_pins_mx>; ++ pinctrl-1 = <&m_can1_sleep_pins_mx>; ++ status = "okay"; ++}; +-- +2.25.1 + diff --git a/board/octavo/osd32mp1-red/patches/uboot/0002-configs-stm32mp15_trusted_defconfig-disable-environm.patch b/board/octavo/osd32mp1-red/patches/uboot/0002-configs-stm32mp15_trusted_defconfig-disable-environm.patch new file mode 100644 index 00000000..a2ec783e --- /dev/null +++ b/board/octavo/osd32mp1-red/patches/uboot/0002-configs-stm32mp15_trusted_defconfig-disable-environm.patch @@ -0,0 +1,49 @@ +From 27a516e2ad464bf1de5e23e8277e0f6d6735bd21 Mon Sep 17 00:00:00 2001 +From: Kory Maincent +Date: Mon, 3 Oct 2022 12:20:40 +0200 +Subject: [PATCH 2/2] configs/stm32mp15_trusted_defconfig: disable environment + +Signed-off-by: Kory Maincent +--- + board/st/stm32mp1/stm32mp1.c | 4 ++++ + configs/stm32mp15_trusted_defconfig | 9 --------- + 2 files changed, 4 insertions(+), 9 deletions(-) + +diff --git a/board/st/stm32mp1/stm32mp1.c b/board/st/stm32mp1/stm32mp1.c +index 48591b2f1e..ba510d843c 100644 +--- a/board/st/stm32mp1/stm32mp1.c ++++ b/board/st/stm32mp1/stm32mp1.c +@@ -78,6 +78,10 @@ DECLARE_GLOBAL_DATA_PTR; + #define USB_START_LOW_THRESHOLD_UV 1230000 + #define USB_START_HIGH_THRESHOLD_UV 2150000 + ++#ifndef CONFIG_SYS_MMC_ENV_DEV ++#define CONFIG_SYS_MMC_ENV_DEV -1 ++#endif ++ + int board_early_init_f(void) + { + /* nothing to do, only used in SPL */ +diff --git a/configs/stm32mp15_trusted_defconfig b/configs/stm32mp15_trusted_defconfig +index 2161ccbefa..fd3fed8fb0 100644 +--- a/configs/stm32mp15_trusted_defconfig ++++ b/configs/stm32mp15_trusted_defconfig +@@ -45,15 +45,6 @@ CONFIG_CMD_EXT4_WRITE=y + CONFIG_CMD_MTDPARTS=y + CONFIG_CMD_UBI=y + CONFIG_ENV_IS_NOWHERE=y +-CONFIG_ENV_IS_IN_MMC=y +-CONFIG_ENV_IS_IN_SPI_FLASH=y +-CONFIG_ENV_IS_IN_UBI=y +-CONFIG_SYS_REDUNDAND_ENVIRONMENT=y +-CONFIG_ENV_UBI_PART="UBI" +-CONFIG_ENV_UBI_VOLUME="uboot_config" +-CONFIG_ENV_UBI_VOLUME_REDUND="uboot_config_r" +-CONFIG_SYS_RELOC_GD_ENV_ADDR=y +-CONFIG_SYS_MMC_ENV_DEV=-1 + CONFIG_STM32_ADC=y + CONFIG_CLK_SCMI=y + CONFIG_SET_DFU_ALT_INFO=y +-- +2.25.1 + diff --git a/board/octavo/osd32mp1-red/readme.txt b/board/octavo/osd32mp1-red/readme.txt new file mode 100644 index 00000000..e087e386 --- /dev/null +++ b/board/octavo/osd32mp1-red/readme.txt @@ -0,0 +1,37 @@ +OSD32MP1-RED + +Intro +===== + +This configuration supports the OSD32MP1-RED platform: + + https://octavosystems.com/octavo_products/osd32mp1-red/ + +How to build +============ + + $ make octavo_osd32mp1_red_defconfig + $ make + +How to write the microSD card +============================= + +Once the build process is finished you will have an image called +"sdcard.img" in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an microSD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Boot the board +============== + + (1) Insert the microSD card in connector X5. + + (2) Plug an USB-SERIAL cable in the JP4 pin connector and run your serial + communication program on /dev/ttySTM0. + + (3) Plug an USB-C cable in the J2 connector or use barrel power supply to + power-up the board. + + (4) The system will start, with the console on UART. diff --git a/board/octavo/osd32mp1-red/tfa-dts/osd32mp1_ddr_1x4Gb.dtsi b/board/octavo/osd32mp1-red/tfa-dts/osd32mp1_ddr_1x4Gb.dtsi new file mode 100644 index 00000000..3cd2c3f5 --- /dev/null +++ b/board/octavo/osd32mp1-red/tfa-dts/osd32mp1_ddr_1x4Gb.dtsi @@ -0,0 +1,121 @@ +/* + * Copyright (C) 2015-2018, STMicroelectronics - All Rights Reserved + * + * SPDX-License-Identifier: GPL-2.0+ BSD-3-Clause + * + */ + +/* + * File generated by STMicroelectronics STM32CubeMX DDR Tool for MPUs + * DDR type: DDR3 / DDR3L + * DDR width: 16bits + * DDR density: 4Gb + * System frequency: 533000Khz + * Relaxed Timing Mode: false + * Address mapping type: RBC + * + * Save Date: 2020.08.27, save Time: 15:22:11 + */ + +#define DDR_MEM_NAME "DDR3-DDR3L 16bits 533000Khz" +#define DDR_MEM_SPEED 533000 +#define DDR_MEM_SIZE 0x20000000 + +#define DDR_MSTR 0x00041401 +#define DDR_MRCTRL0 0x00000010 +#define DDR_MRCTRL1 0x00000000 +#define DDR_DERATEEN 0x00000000 +#define DDR_DERATEINT 0x00800000 +#define DDR_PWRCTL 0x00000000 +#define DDR_PWRTMG 0x00400010 +#define DDR_HWLPCTL 0x00000000 +#define DDR_RFSHCTL0 0x00210000 +#define DDR_RFSHCTL3 0x00000000 +#define DDR_RFSHTMG 0x0081008B +#define DDR_CRCPARCTL0 0x00000000 +#define DDR_DRAMTMG0 0x121B2414 +#define DDR_DRAMTMG1 0x000A041C +#define DDR_DRAMTMG2 0x0608090F +#define DDR_DRAMTMG3 0x0050400C +#define DDR_DRAMTMG4 0x08040608 +#define DDR_DRAMTMG5 0x06060403 +#define DDR_DRAMTMG6 0x02020002 +#define DDR_DRAMTMG7 0x00000202 +#define DDR_DRAMTMG8 0x00001005 +#define DDR_DRAMTMG14 0x000000A0 +#define DDR_ZQCTL0 0xC2000040 +#define DDR_DFITMG0 0x02060105 +#define DDR_DFITMG1 0x00000202 +#define DDR_DFILPCFG0 0x07000000 +#define DDR_DFIUPD0 0xC0400003 +#define DDR_DFIUPD1 0x00000000 +#define DDR_DFIUPD2 0x00000000 +#define DDR_DFIPHYMSTR 0x00000000 +#define DDR_ODTCFG 0x06000600 +#define DDR_ODTMAP 0x00000001 +#define DDR_SCHED 0x00000C01 +#define DDR_SCHED1 0x00000000 +#define DDR_PERFHPR1 0x01000001 +#define DDR_PERFLPR1 0x08000200 +#define DDR_PERFWR1 0x08000400 +#define DDR_DBG0 0x00000000 +#define DDR_DBG1 0x00000000 +#define DDR_DBGCMD 0x00000000 +#define DDR_POISONCFG 0x00000000 +#define DDR_PCCFG 0x00000010 +#define DDR_PCFGR_0 0x00010000 +#define DDR_PCFGW_0 0x00000000 +#define DDR_PCFGQOS0_0 0x02100C03 +#define DDR_PCFGQOS1_0 0x00800100 +#define DDR_PCFGWQOS0_0 0x01100C03 +#define DDR_PCFGWQOS1_0 0x01000200 +#define DDR_PCFGR_1 0x00010000 +#define DDR_PCFGW_1 0x00000000 +#define DDR_PCFGQOS0_1 0x02100C03 +#define DDR_PCFGQOS1_1 0x00800040 +#define DDR_PCFGWQOS0_1 0x01100C03 +#define DDR_PCFGWQOS1_1 0x01000200 +#define DDR_ADDRMAP1 0x00070707 +#define DDR_ADDRMAP2 0x00000000 +#define DDR_ADDRMAP3 0x1F000000 +#define DDR_ADDRMAP4 0x00001F1F +#define DDR_ADDRMAP5 0x06060606 +#define DDR_ADDRMAP6 0x0F060606 +#define DDR_ADDRMAP9 0x00000000 +#define DDR_ADDRMAP10 0x00000000 +#define DDR_ADDRMAP11 0x00000000 +#define DDR_PGCR 0x01442E02 +#define DDR_PTR0 0x0022AA5B +#define DDR_PTR1 0x04841104 +#define DDR_PTR2 0x042DA068 +#define DDR_ACIOCR 0x10400812 +#define DDR_DXCCR 0x00000C40 +#define DDR_DSGCR 0xF200011F +#define DDR_DCR 0x0000000B +#define DDR_DTPR0 0x38D488D0 +#define DDR_DTPR1 0x098B00D8 +#define DDR_DTPR2 0x10023600 +#define DDR_MR0 0x00000840 +#define DDR_MR1 0x00000000 +#define DDR_MR2 0x00000208 +#define DDR_MR3 0x00000000 +#define DDR_ODTCR 0x00010000 +#define DDR_ZQ0CR1 0x00000038 +#define DDR_DX0GCR 0x0000CE81 +#define DDR_DX0DLLCR 0x40000000 +#define DDR_DX0DQTR 0x00112121 +#define DDR_DX0DQSTR 0x3D200000 +#define DDR_DX1GCR 0x0000CE81 +#define DDR_DX1DLLCR 0x40000000 +#define DDR_DX1DQTR 0x11100121 +#define DDR_DX1DQSTR 0x3D200000 +#define DDR_DX2GCR 0x0000CE80 +#define DDR_DX2DLLCR 0x40000000 +#define DDR_DX2DQTR 0xFFFFFFFF +#define DDR_DX2DQSTR 0x3DB02000 +#define DDR_DX3GCR 0x0000CE80 +#define DDR_DX3DLLCR 0x40000000 +#define DDR_DX3DQTR 0xFFFFFFFF +#define DDR_DX3DQSTR 0x3DB02000 + +#include "stm32mp15-ddr.dtsi" diff --git a/board/octavo/osd32mp1-red/tfa-dts/stm32mp157c-osd32mp1-red-fw-config.dts b/board/octavo/osd32mp1-red/tfa-dts/stm32mp157c-osd32mp1-red-fw-config.dts new file mode 100644 index 00000000..256d0db9 --- /dev/null +++ b/board/octavo/osd32mp1-red/tfa-dts/stm32mp157c-osd32mp1-red-fw-config.dts @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) +/* + * Copyright (c) 2020, STMicroelectronics - All Rights Reserved + */ + +#include "stm32mp15-ddr-512m-fw-config.dts" diff --git a/board/octavo/osd32mp1-red/tfa-dts/stm32mp157c-osd32mp1-red.dts b/board/octavo/osd32mp1-red/tfa-dts/stm32mp157c-osd32mp1-red.dts new file mode 100644 index 00000000..7cf64d9d --- /dev/null +++ b/board/octavo/osd32mp1-red/tfa-dts/stm32mp157c-osd32mp1-red.dts @@ -0,0 +1,571 @@ +/* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */ +/* + * Copyright (C) STMicroelectronics 2020 - All Rights Reserved + * Author: STM32CubeMX code generation for STMicroelectronics. + */ + +/dts-v1/; +#include +#include +#include +#include + +#include "stm32mp157.dtsi" +#include "stm32mp15xc.dtsi" +#include "stm32mp15xxac-pinctrl.dtsi" +#include "osd32mp1_ddr_1x4Gb.dtsi" + +/ { + model = "Octavo OSD32MP1 RED board"; + compatible = "octavo,stm32mp157c-osd32mp1-red", "st,stm32mp157"; + + aliases { + serial0 = &uart4; + }; + + memory@c0000000 { + device_type = "memory"; + reg = <0xc0000000 0x20000000>; + }; + + vin: vin { + compatible = "regulator-fixed"; + regulator-name = "vin"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + regulator-always-on; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; +}; + +&bsec { + board_id: board_id@ec { + reg = <0xec 0x4>; + st,non-secure-otp; + }; +}; + +&clk_hse { + st,digbypass; +}; + +&cpu0 { + cpu-supply = <&vddcore>; +}; + +&cpu1 { + cpu-supply = <&vddcore>; +}; + +&hash1 { + status = "okay"; +}; + +&cryp1 { + status = "okay"; +}; + +&etzpc { + st,decprot = < + DECPROT(STM32MP1_ETZPC_DCMI_ID, DECPROT_NS_RW, DECPROT_UNLOCK) + DECPROT(STM32MP1_ETZPC_ETH_ID, DECPROT_NS_RW, DECPROT_UNLOCK) + DECPROT(STM32MP1_ETZPC_USART1_ID, DECPROT_NS_RW, DECPROT_UNLOCK) + DECPROT(STM32MP1_ETZPC_SPI6_ID, DECPROT_NS_RW, DECPROT_UNLOCK) + DECPROT(STM32MP1_ETZPC_I2C4_ID, DECPROT_NS_RW, DECPROT_UNLOCK) + DECPROT(STM32MP1_ETZPC_SPI2_ID, DECPROT_NS_RW, DECPROT_UNLOCK) + DECPROT(STM32MP1_ETZPC_I2C6_ID, DECPROT_NS_RW, DECPROT_UNLOCK) + DECPROT(STM32MP1_ETZPC_RNG1_ID, DECPROT_NS_RW, DECPROT_UNLOCK) + DECPROT(STM32MP1_ETZPC_HASH1_ID, DECPROT_NS_RW, DECPROT_UNLOCK) + DECPROT(STM32MP1_ETZPC_CRYP1_ID, DECPROT_NS_RW, DECPROT_UNLOCK) + DECPROT(STM32MP1_ETZPC_DDRCTRL_ID, DECPROT_NS_R_S_W, DECPROT_LOCK) + DECPROT(STM32MP1_ETZPC_DDRPHYC_ID, DECPROT_NS_R_S_W, DECPROT_LOCK) + DECPROT(STM32MP1_ETZPC_STGENC_ID, DECPROT_S_RW, DECPROT_LOCK) + DECPROT(STM32MP1_ETZPC_BKPSRAM_ID, DECPROT_S_RW, DECPROT_LOCK) + DECPROT(STM32MP1_ETZPC_IWDG1_ID, DECPROT_S_RW, DECPROT_LOCK) + >; +}; + + + +&i2c4 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c4_pins_z_mx>; + i2c-scl-rising-time-ns = <185>; + i2c-scl-falling-time-ns = <20>; + clock-frequency = <400000>; + status = "okay"; + secure-status = "okay"; + + pmic: stpmic@33 { + compatible = "st,stpmic1"; + reg = <0x33>; + interrupts-extended = <&exti_pwr 55 IRQ_TYPE_EDGE_FALLING>; + interrupt-controller; + #interrupt-cells = <2>; + status = "okay"; + secure-status = "okay"; + + regulators { + compatible = "st,stpmic1-regulators"; + buck1-supply = <&vin>; + buck2-supply = <&vin>; + buck3-supply = <&vin>; + buck4-supply = <&vin>; + ldo1-supply = <&v3v3>; + ldo2-supply = <&vin>; + ldo3-supply = <&vdd_ddr>; + ldo4-supply = <&vin>; + ldo5-supply = <&vin>; + ldo6-supply = <&v3v3>; + vref_ddr-supply = <&vin>; + boost-supply = <&vin>; + pwr_sw1-supply = <&bst_out>; + pwr_sw2-supply = <&bst_out>; + + vddcore: buck1 { + regulator-name = "vddcore"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1350000>; + regulator-always-on; + regulator-initial-mode = <0>; + regulator-over-current-protection; + lp-stop{ + regulator-on-in-suspend; + regulator-suspend-microvolt = <1200000>; + }; + standby-ddr-sr{ + regulator-off-in-suspend; + }; + standby-ddr-off{ + regulator-off-in-suspend; + }; + }; + + vdd_ddr: buck2 { + regulator-name = "vdd_ddr"; + regulator-min-microvolt = <1350000>; + regulator-max-microvolt = <1350000>; + regulator-always-on; + regulator-initial-mode = <0>; + regulator-over-current-protection; + lp-stop{ + regulator-suspend-microvolt = <1350000>; + regulator-on-in-suspend; + }; + standby-ddr-sr{ + regulator-suspend-microvolt = <1350000>; + regulator-on-in-suspend; + }; + standby-ddr-off{ + regulator-off-in-suspend; + }; + }; + + vdd: buck3 { + regulator-name = "vdd"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + st,mask-reset; + regulator-initial-mode = <0>; + regulator-over-current-protection; + lp-stop{ + regulator-suspend-microvolt = <3300000>; + regulator-on-in-suspend; + }; + standby-ddr-sr{ + regulator-suspend-microvolt = <3300000>; + regulator-on-in-suspend; + }; + standby-ddr-off{ + regulator-suspend-microvolt = <3300000>; + regulator-on-in-suspend; + }; + }; + + v3v3: buck4 { + regulator-name = "v3v3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + regulator-over-current-protection; + regulator-initial-mode = <0>; + lp-stop{ + regulator-suspend-microvolt = <3300000>; + regulator-on-in-suspend; + }; + standby-ddr-sr{ + regulator-off-in-suspend; + }; + standby-ddr-off{ + regulator-off-in-suspend; + }; + }; + + v1v8_ldo1: ldo1 { + regulator-name = "v1v8_audio"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + standby-ddr-sr{ + regulator-off-in-suspend; + }; + standby-ddr-off{ + regulator-off-in-suspend; + }; + }; + + v3v3_ldo2: ldo2 { + regulator-name = "v3v3_hdmi"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + standby-ddr-sr{ + regulator-off-in-suspend; + }; + standby-ddr-off{ + regulator-off-in-suspend; + }; + }; + + vtt_ddr: ldo3 { + regulator-name = "vtt_ddr"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <750000>; + regulator-always-on; + regulator-over-current-protection; + lp-stop{ + regulator-off-in-suspend; + }; + standby-ddr-sr{ + regulator-off-in-suspend; + }; + standby-ddr-off{ + regulator-off-in-suspend; + }; + }; + + vdd_usb: ldo4 { + regulator-name = "vdd_usb"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + standby-ddr-sr{ + regulator-on-in-suspend; + }; + standby-ddr-off{ + regulator-off-in-suspend; + }; + }; + + vdda: ldo5 { + regulator-name = "vdda"; + regulator-min-microvolt = <2900000>; + regulator-max-microvolt = <2900000>; + regulator-boot-on; + standby-ddr-sr{ + regulator-off-in-suspend; + }; + standby-ddr-off{ + regulator-off-in-suspend; + }; + }; + + v1v2_ldo6: ldo6 { + regulator-name = "v1v2_ldo6"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-always-on; + standby-ddr-sr{ + regulator-off-in-suspend; + }; + standby-ddr-off{ + regulator-off-in-suspend; + }; + }; + + vref_ddr: vref_ddr { + regulator-name = "vref_ddr"; + regulator-always-on; + regulator-over-current-protection; + lp-stop{ + regulator-on-in-suspend; + }; + standby-ddr-sr{ + regulator-on-in-suspend; + }; + standby-ddr-off{ + regulator-off-in-suspend; + }; + }; + + bst_out: boost { + regulator-name = "bst_out"; + }; + + vbus_otg: pwr_sw1 { + regulator-name = "vbus_otg"; + }; + + vbus_sw: pwr_sw2 { + regulator-name = "vbus_sw"; + regulator-active-discharge = <1>; + }; + }; + }; +}; + +&iwdg2 { + timeout-sec = <32>; + secure-timeout-sec = <5>; + status = "okay"; + secure-status = "okay"; +}; + +&nvmem_layout { + nvmem-cells = <&cfg0_otp>, + <&part_number_otp>, + <&monotonic_otp>, + <&nand_otp>, + <&uid_otp>, + <&package_otp>, + <&hw2_otp>, + <&pkh_otp>, + <&board_id>; + + nvmem-cell-names = "cfg0_otp", + "part_number_otp", + "monotonic_otp", + "nand_otp", + "uid_otp", + "package_otp", + "hw2_otp", + "pkh_otp", + "board_id"; +}; + +&pwr_regulators { + system_suspend_supported_soc_modes = < + STM32_PM_CSLEEP_RUN + STM32_PM_CSTOP_ALLOW_LP_STOP + STM32_PM_CSTOP_ALLOW_STANDBY_DDR_SR + >; + system_off_soc_mode = ; + vdd-supply = <&vdd>; + vdd_3v3_usbfs-supply = <&vdd_usb>; +}; + +&rcc { + st,hsi-cal; + st,csi-cal; + st,cal-sec = <60>; + st,clksrc = < + CLK_MPU_PLL1P + CLK_AXI_PLL2P + CLK_MCU_PLL3P + CLK_PLL12_HSE + CLK_PLL3_HSE + CLK_PLL4_HSE + CLK_RTC_LSE + CLK_MCO1_DISABLED + CLK_MCO2_DISABLED + >; + + st,clkdiv = < + 1 /*MPU*/ + 0 /*AXI*/ + 0 /*MCU*/ + 1 /*APB1*/ + 1 /*APB2*/ + 1 /*APB3*/ + 1 /*APB4*/ + 2 /*APB5*/ + 23 /*RTC*/ + 0 /*MCO1*/ + 0 /*MCO2*/ + >; + + st,pkcs = < + CLK_CKPER_HSE + CLK_ETH_PLL3Q + CLK_SDMMC12_PLL4P + CLK_DSI_DSIPLL + CLK_STGEN_HSE + CLK_USBPHY_HSE + CLK_SPI2S1_PLL3Q + CLK_SPI2S23_CKPER + CLK_SPI45_PCLK2 + CLK_SPI6_DISABLED + CLK_I2C46_HSI + CLK_SDMMC3_PLL4P + CLK_USBO_USBPHY + CLK_ADC_CKPER + CLK_CEC_LSE + CLK_I2C12_HSI + CLK_I2C35_HSI + CLK_UART1_DISABLED + CLK_UART24_HSI + CLK_UART35_HSI + CLK_UART6_DISABLED + CLK_UART78_DISABLED + CLK_SPDIF_DISABLED + CLK_SAI1_DISABLED + CLK_SAI2_DISABLED + CLK_SAI3_DISABLED + CLK_SAI4_DISABLED + CLK_RNG1_LSI + CLK_LPTIM1_DISABLED + CLK_LPTIM23_DISABLED + CLK_LPTIM45_DISABLED + >; + + pll1:st,pll@0 { + cfg = < 2 80 0 1 1 PQR(1,0,0) >; + frac = < 0x800>; + }; + + pll2:st,pll@1 { + cfg = < 2 65 1 0 0 PQR(1,1,1) >; + frac = < 0x1400>; + }; + + pll3:st,pll@2 { + cfg = < 1 61 3 5 36 PQR(1,1,0) >; + frac = < 0x1000 >; + }; + + pll4: st,pll@3 { + cfg = < 3 98 5 7 7 PQR(1,1,1) >; + }; +}; + +&rng1 { + status = "okay"; + secure-status = "okay"; +}; + +&rtc { + status = "okay"; + secure-status = "okay"; +}; + +&sdmmc1 { + pinctrl-names = "default"; + pinctrl-0 = <&sdmmc1_pins_mx>; + disable-wp; + st,neg-edge; + bus-width = <4>; + vmmc-supply = <&v3v3>; + status = "okay"; +}; + +&sdmmc2{ + pinctrl-names = "default"; + pinctrl-0 = <&sdmmc2_pins_mx>; + status = "okay"; +}; + +&timers15 { + secure-status = "okay"; + st,hsi-cal-input = <7>; + st,csi-cal-input = <8>; +}; +&uart4 { + pinctrl-names = "default"; + pinctrl-0 = <&uart4_pins_mx>; + status = "okay"; +}; + +&usbotg_hs { + phys = <&usbphyc_port1 0>; + phy-names = "usb2-phy"; + usb-role-switch; + status = "okay"; +}; + +&usbphyc { + status = "okay"; +}; + +&usbphyc_port0 { + phy-supply = <&vdd_usb>; +}; + +&usbphyc_port1 { + phy-supply = <&vdd_usb>; +}; + + + + +&pinctrl { + sdmmc1_pins_mx: sdmmc1-b4-0 { + pins1 { + pinmux = , /* SDMMC1_D0 */ + , /* SDMMC1_D1 */ + , /* SDMMC1_D2 */ + , /* SDMMC1_D3 */ + ; /* SDMMC1_CMD */ + slew-rate = <1>; + drive-push-pull; + bias-disable; + }; + pins2 { + pinmux = ; /* SDMMC1_CK */ + slew-rate = <2>; + drive-push-pull; + bias-disable; + }; + }; + + sdmmc2_pins_mx: sdmmc2_mx-0 { + pins1 { + pinmux = , /* SDMMC2_D4 */ + , /* SDMMC2_D5 */ + , /* SDMMC2_D2 */ + , /* SDMMC2_D3 */ + , /* SDMMC2_D0 */ + , /* SDMMC2_D1 */ + , /* SDMMC2_D7 */ + , /* SDMMC2_D6 */ + ; /* SDMMC2_CMD */ + bias-pull-up; + drive-push-pull; + slew-rate = <1>; + }; + pins2 { + pinmux = ; /* SDMMC2_CK */ + bias-pull-up; + drive-push-pull; + slew-rate = <2>; + }; + }; + + uart4_pins_mx: uart4-0 { + pins1 { + pinmux = ; /* UART4_TX */ + bias-disable; + drive-push-pull; + slew-rate = <0>; + }; + pins2 { + pinmux = ; /* UART4_RX */ + bias-disable; + }; + }; +}; + +&pinctrl_z { + i2c4_pins_z_mx: i2c4-0 { + pins { + pinmux = , /* I2C4_SCL */ + ; /* I2C4_SDA */ + bias-disable; + drive-open-drain; + slew-rate = <0>; + }; + }; +}; diff --git a/board/olimex/a10_olinuxino/boot.cmd b/board/olimex/a10_olinuxino/boot.cmd new file mode 120000 index 00000000..612c7455 --- /dev/null +++ b/board/olimex/a10_olinuxino/boot.cmd @@ -0,0 +1 @@ +../a20_olinuxino/boot.cmd \ No newline at end of file diff --git a/board/olimex/a10_olinuxino/genimage.cfg b/board/olimex/a10_olinuxino/genimage.cfg new file mode 120000 index 00000000..c21932fe --- /dev/null +++ b/board/olimex/a10_olinuxino/genimage.cfg @@ -0,0 +1 @@ +../a20_olinuxino/genimage.cfg \ No newline at end of file diff --git a/board/olimex/a10_olinuxino/post-build.sh b/board/olimex/a10_olinuxino/post-build.sh new file mode 120000 index 00000000..b3468960 --- /dev/null +++ b/board/olimex/a10_olinuxino/post-build.sh @@ -0,0 +1 @@ +../a20_olinuxino/post-build.sh \ No newline at end of file diff --git a/board/olimex/a10_olinuxino/readme.txt b/board/olimex/a10_olinuxino/readme.txt new file mode 100644 index 00000000..ba4bf691 --- /dev/null +++ b/board/olimex/a10_olinuxino/readme.txt @@ -0,0 +1,57 @@ +A10-OLinuXino-LIME + +Intro +===== + +These are open hardware boards, all based on the Allwinner A10 SoC. + +for more details about the boards see the following pages: + - https://www.olimex.com/Products/OLinuXino/open-source-hardware + - https://www.olimex.com/Products/OLinuXino/A10/A10-OLinuXino-LIME/ + +The following defconfigs are available: + - olimex_a10_olinuxino_lime_defconfig + for the A10-OLinuXino-LIME board using mainline kernel + +(see http://linux-sunxi.org/Linux_Kernel for more details) + +How to build it +=============== + +Configure Buildroot: + + $ make _defconfig + +Compile everything and build the rootfs image: + + $ make + +Result of the build +------------------- + +After building, you should get a tree like this: + + output/images/ + +-- boot.scr + +-- rootfs.ext2 + +-- rootfs.ext4 -> rootfs.ext2 + +-- sdcard.img + +-- sun4i-a10-olinuxino-lime.dtb (lime, mainline) + +-- u-boot.bin + +-- u-boot-sunxi-with-spl.bin + `-- zImage + + +How to write the SD card +======================== + +The sdcard.img file is a complete bootable image ready to be written +on the boot medium. To install it, simply copy the image to a uSD +card: + + # dd if=output/images/sdcard.img of=/dev/sdX + +Where 'sdX' is the device node of the uSD. + +Eject the SD card, insert it in the A10-OLinuXino board, and power it up. + diff --git a/board/olimex/a13_olinuxino/boot.cmd b/board/olimex/a13_olinuxino/boot.cmd new file mode 100644 index 00000000..4dd1c7b7 --- /dev/null +++ b/board/olimex/a13_olinuxino/boot.cmd @@ -0,0 +1,7 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +mmc dev 0 +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun5i-a13-olinuxino.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/board/olimex/a13_olinuxino/genimage.cfg b/board/olimex/a13_olinuxino/genimage.cfg new file mode 100644 index 00000000..4eb14eb5 --- /dev/null +++ b/board/olimex/a13_olinuxino/genimage.cfg @@ -0,0 +1,34 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "sun5i-a13-olinuxino.dtb", + "boot.scr" + } + } + + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + size = 1016K # 1MB - 8KB + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/olimex/a13_olinuxino/post-build.sh b/board/olimex/a13_olinuxino/post-build.sh new file mode 100755 index 00000000..aa2a76bd --- /dev/null +++ b/board/olimex/a13_olinuxino/post-build.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +MKIMAGE=$HOST_DIR/bin/mkimage + +$MKIMAGE -A arm -O linux -T script -C none \ + -d board/olimex/a13_olinuxino/boot.cmd \ + ${BINARIES_DIR}/boot.scr diff --git a/board/olimex/a13_olinuxino/readme.txt b/board/olimex/a13_olinuxino/readme.txt new file mode 100644 index 00000000..b64e339f --- /dev/null +++ b/board/olimex/a13_olinuxino/readme.txt @@ -0,0 +1,43 @@ +A13-OLinuXino + +Intro +===== + +This default configuration will allow you to start experimenting with +the buildroot environment for the A13-OLinuXino. With the current +configuration it will bring-up the board, and allow access through the +serial console. + +For more details about the A13-OLinuXino: + +https://www.olimex.com/Products/OLinuXino/A13/A13-OLinuXino/open-source-hardware + +How to build it +=============== + +Configure Buildroot: + + $ make olimex_a13_olinuxino_defconfig + +Compile everything and build the rootfs image: + + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +The sdcard.img file is a complete bootable image ready to be written +on the boot medium. To install it, simply copy the image to a micro SD +card: + + # dd if=output/images/sdcard.img of=/dev/sdX + +Notes: + - replace 'sdX' with the actual device with your micro SDcard, + - you may need to be root to do that (use 'sudo'). + +Eject the SD card, insert it in the A13-OLinuXino board, and power it +up. diff --git a/board/olimex/a20_olinuxino/boot.cmd b/board/olimex/a20_olinuxino/boot.cmd new file mode 100644 index 00000000..44d9239a --- /dev/null +++ b/board/olimex/a20_olinuxino/boot.cmd @@ -0,0 +1,5 @@ +setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p1 rootwait panic=10 ${extra} +ext4load mmc 0 0x49000000 /boot/${fdtfile} +ext4load mmc 0 0x46000000 /boot/zImage +env set fdt_high ffffffff +bootz 0x46000000 - 0x49000000 diff --git a/board/olimex/a20_olinuxino/genimage.cfg b/board/olimex/a20_olinuxino/genimage.cfg new file mode 100644 index 00000000..b48e12a8 --- /dev/null +++ b/board/olimex/a20_olinuxino/genimage.cfg @@ -0,0 +1,17 @@ +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + size = 1016K # 1MB - 8KB + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/olimex/a20_olinuxino/linux-disable-lima.fragment b/board/olimex/a20_olinuxino/linux-disable-lima.fragment new file mode 100644 index 00000000..4c36f8aa --- /dev/null +++ b/board/olimex/a20_olinuxino/linux-disable-lima.fragment @@ -0,0 +1,2 @@ +# Disable LIMA in favour of Mali +# CONFIG_DRM_LIMA is not set diff --git a/board/olimex/a20_olinuxino/patches/linux-headers/linux-headers.hash b/board/olimex/a20_olinuxino/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/olimex/a20_olinuxino/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/olimex/a20_olinuxino/patches/linux/linux.hash b/board/olimex/a20_olinuxino/patches/linux/linux.hash new file mode 100644 index 00000000..8ffd3e4f --- /dev/null +++ b/board/olimex/a20_olinuxino/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 b9676828b737e8fb8eaa5198303d35d35e8df019550be153c8a42c99afe0cdd5 linux-6.6.36.tar.xz diff --git a/board/olimex/a20_olinuxino/patches/uboot/uboot.hash b/board/olimex/a20_olinuxino/patches/uboot/uboot.hash new file mode 100644 index 00000000..72699801 --- /dev/null +++ b/board/olimex/a20_olinuxino/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 f591da9ab90ef3d6b3d173766d0ddff90c4ed7330680897486117df390d83c8f u-boot-2024.07.tar.bz2 diff --git a/board/olimex/a20_olinuxino/post-build.sh b/board/olimex/a20_olinuxino/post-build.sh new file mode 100755 index 00000000..d3f612f8 --- /dev/null +++ b/board/olimex/a20_olinuxino/post-build.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +cp $BINARIES_DIR/boot.scr $TARGET_DIR/boot/boot.scr diff --git a/board/olimex/a20_olinuxino/readme.txt b/board/olimex/a20_olinuxino/readme.txt new file mode 100644 index 00000000..504483b5 --- /dev/null +++ b/board/olimex/a20_olinuxino/readme.txt @@ -0,0 +1,69 @@ +A20-OLinuXino-LIME and A20-OLinuXino-MICRO + +Intro +===== + +These are open hardware boards, all based on the Allwinner A20 SoC. + +for more details about the boards see the following pages: + - https://www.olimex.com/Products/OLinuXino/open-source-hardware + - https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXino-MICRO/ + - https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXino-LIME/ + - https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXino-LIME2/ + +The following defconfigs are available: + - olimex_a20_olinuxino_micro_defconfig + for the A20-OLinuXino-MICRO board using mainline kernel + - olimex_a20_olinuxino_lime_defconfig + for the A20-OLinuXino-LIME board using mainline kernel + - olimex_a20_olinuxino_lime2_defconfig + for the A20-OLinuXino-LIME2 board using mainline kernel + +The Mainline Kernel is already a much better choice for a headless server. +And also the mainline kernel works fine even for a basic Linux desktop +system running on top of a simple framebuffer, which may be good enough for +the users who do not need fancy 3D graphics or video playback acceleration. + +(see http://linux-sunxi.org/Linux_Kernel for more details) + +How to build it +=============== + +Configure Buildroot: + + $ make _defconfig + +Compile everything and build the rootfs image: + + $ make + +Result of the build +------------------- + +After building, you should get a tree like this: + + output/images/ + +-- rootfs.ext2 + +-- rootfs.ext4 -> rootfs.ext2 + +-- sdcard.img + +-- sun7i-a20-olinuxino-lime.dtb (lime, mainline) + +-- sun7i-a20-olinuxino-lime2.dtb (lime2, mainline) + +-- sun7i-a20-olinuxino-micro.dtb (micro, mainline) + +-- u-boot.bin + +-- u-boot-sunxi-with-spl.bin + `-- zImage + + +How to write the SD card +======================== + +The sdcard.img file is a complete bootable image ready to be written +on the boot medium. To install it, simply copy the image to a uSD +card: + + # dd if=output/images/sdcard.img of=/dev/sdX + +Where 'sdX' is the device node of the uSD. + +Eject the SD card, insert it in the A20-OLinuXino board, and power it up. + diff --git a/board/olimex/a20_olinuxino/rootfs_overlay/boot/extlinux/extlinux.conf b/board/olimex/a20_olinuxino/rootfs_overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..358bda05 --- /dev/null +++ b/board/olimex/a20_olinuxino/rootfs_overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +label Olinuxino + kernel /boot/zImage + fdtdir /boot + append console=ttyS0,115200 root=/dev/mmcblk0p1 rootwait panic=10 drm_kms_helper.drm_leak_fbdev_smem=1 drm_kms_helper.drm_fbdev_overalloc=200 ${extra} diff --git a/board/olimex/a33_olinuxino/boot.cmd b/board/olimex/a33_olinuxino/boot.cmd new file mode 100644 index 00000000..44d9239a --- /dev/null +++ b/board/olimex/a33_olinuxino/boot.cmd @@ -0,0 +1,5 @@ +setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p1 rootwait panic=10 ${extra} +ext4load mmc 0 0x49000000 /boot/${fdtfile} +ext4load mmc 0 0x46000000 /boot/zImage +env set fdt_high ffffffff +bootz 0x46000000 - 0x49000000 diff --git a/board/olimex/a33_olinuxino/genimage.cfg b/board/olimex/a33_olinuxino/genimage.cfg new file mode 100644 index 00000000..b48e12a8 --- /dev/null +++ b/board/olimex/a33_olinuxino/genimage.cfg @@ -0,0 +1,17 @@ +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + size = 1016K # 1MB - 8KB + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/olimex/a33_olinuxino/post-build.sh b/board/olimex/a33_olinuxino/post-build.sh new file mode 100755 index 00000000..b4181206 --- /dev/null +++ b/board/olimex/a33_olinuxino/post-build.sh @@ -0,0 +1,2 @@ +#!/bin/sh +cp $BINARIES_DIR/boot.scr $TARGET_DIR/boot/boot.scr diff --git a/board/olimex/a33_olinuxino/readme.txt b/board/olimex/a33_olinuxino/readme.txt new file mode 100644 index 00000000..b1906020 --- /dev/null +++ b/board/olimex/a33_olinuxino/readme.txt @@ -0,0 +1,50 @@ +A33-OLinuXino + +Intro +===== + +This board is based on Allwinner A33 SoC. + +Home Page: https://www.olimex.com/Products/OLinuXino/A33/A33-OLinuXino/open-source-hardware +Wiki: https://wiki.amarulasolutions.com/bsp/sunxi/a33/Olimex-A33-Olinuxino.html + +How to build it +=============== + +Configure Buildroot: + + $ make olimex_a33_olinuxino_defconfig + +Build everything by running: + + $ make + +Result of the build +------------------- + +After building, you should get a tree like this: + +output/images/ +├── boot.scr +├── rootfs.ext2 +├── rootfs.ext4 -> rootfs.ext2 +├── rootfs.tar +├── sdcard.img +├── sun8i-a33-olinuxino.dtb +├── u-boot.bin +├── u-boot-sunxi-with-spl.bin +└── zImage + + +How to write the SD card +======================== + +The sdcard.img file is a complete bootable image ready to be written +on the boot medium. To install it, simply copy the image to a uSD +card: + + # dd if=output/images/sdcard.img of=/dev/sdX + +Where 'sdX' is the device node of the uSD. + +Eject the SD card, insert it in the A33-OLinuXino board, and power it up. diff --git a/board/olimex/a64-olinuxino/boot.cmd b/board/olimex/a64-olinuxino/boot.cmd new file mode 100644 index 00000000..28ed6d9d --- /dev/null +++ b/board/olimex/a64-olinuxino/boot.cmd @@ -0,0 +1,6 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r Image +fatload mmc 0 $fdt_addr_r sun50i-a64-olinuxino.dtb + +booti $kernel_addr_r - $fdt_addr_r diff --git a/board/olimex/a64-olinuxino/genimage.cfg b/board/olimex/a64-olinuxino/genimage.cfg new file mode 100644 index 00000000..ac59e915 --- /dev/null +++ b/board/olimex/a64-olinuxino/genimage.cfg @@ -0,0 +1,34 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-a64-olinuxino.dtb", + "boot.scr" + } + } + + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + size = 1032K # 1MB - 8KB + 16KB(GPT) + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/olimex/a64-olinuxino/readme.txt b/board/olimex/a64-olinuxino/readme.txt new file mode 100644 index 00000000..342bdc77 --- /dev/null +++ b/board/olimex/a64-olinuxino/readme.txt @@ -0,0 +1,37 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the A64-OLinuXino. With the current configuration +it will bring-up the board, and allow access through the serial console. + +A64-OLinuXino link: +https://www.olimex.com/Products/OLinuXino/A64/ + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Olimex+A64-Olinuxino + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make olimex_a64_olinuxino_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your A64-OLinuXino and power it up. The console +is on the serial line, 115200 8N1. diff --git a/board/olimex/imx233_olinuxino/linux-wifi.fragment b/board/olimex/imx233_olinuxino/linux-wifi.fragment new file mode 100644 index 00000000..b70dea2c --- /dev/null +++ b/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/board/olimex/imx233_olinuxino/patches/linux-headers/linux-headers.hash b/board/olimex/imx233_olinuxino/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/olimex/imx233_olinuxino/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/olimex/imx233_olinuxino/patches/linux/linux.hash b/board/olimex/imx233_olinuxino/patches/linux/linux.hash new file mode 100644 index 00000000..1dba724d --- /dev/null +++ b/board/olimex/imx233_olinuxino/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 88b69611093613ce4494527685f833af0c31b986dcbeda7086f69f18f9e0b190 linux-6.1.83.tar.xz diff --git a/board/olimex/imx233_olinuxino/patches/uboot/uboot.hash b/board/olimex/imx233_olinuxino/patches/uboot/uboot.hash new file mode 100644 index 00000000..c1aeddf0 --- /dev/null +++ b/board/olimex/imx233_olinuxino/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/board/olimex/imx233_olinuxino/readme.txt b/board/olimex/imx233_olinuxino/readme.txt new file mode 100644 index 00000000..1e676c45 --- /dev/null +++ b/board/olimex/imx233_olinuxino/readme.txt @@ -0,0 +1,29 @@ +This configuration is intended as a base image. +It includes kernel and firmware support for the common USB WiFi hardware. +Packages for WiFi support are up to the user, you'll probably want +one or more of: hostapd, iw, wireless_tools and/or wpa_supplicant. + +It also pulls up the console on the serial port, not on TV output. + +=== Output files after building ============================================== + +output/images ++-- boot.vfat (VFAT kernel partition image generated by genimage) ++-- imx23-olinuxino.dtb (device tree blob) ++-- rootfs.ext2 (Root file system) ++-- sdcard.img (Complete SD card image generated by genimage) ++-- u-boot.sd (U-Boot image) ++-- uImage (Kernel binary) + +=== Use of generated SD card image =========================================== + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Then, run the following command as root: + +*** WARNING! The command will destroy all the card content. Use with care! *** + + sudo dd if=output/images/sdcard.img of=/dev/ diff --git a/board/olimex/stmp1_olinuxino/genimage.cfg b/board/olimex/stmp1_olinuxino/genimage.cfg new file mode 100644 index 00000000..02800db8 --- /dev/null +++ b/board/olimex/stmp1_olinuxino/genimage.cfg @@ -0,0 +1,25 @@ +image sdcard.img { + hdimage { + partition-table-type = "gpt" + } + + partition fsbl1 { + image = "u-boot-spl.stm32" + size = 256K + } + + partition fsbl2 { + image = "u-boot-spl.stm32" + size = 256K + } + + partition ssbl { + image = "u-boot.img" + size = 2M + } + + partition rootfs { + image = "rootfs.ext4" + bootable = "yes" + } +} diff --git a/board/olimex/stmp1_olinuxino/linux.config b/board/olimex/stmp1_olinuxino/linux.config new file mode 100644 index 00000000..592c4436 --- /dev/null +++ b/board/olimex/stmp1_olinuxino/linux.config @@ -0,0 +1,125 @@ +CONFIG_SYSVIPC=y +CONFIG_PREEMPT=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_NAMESPACES=y +CONFIG_EMBEDDED=y +CONFIG_ARCH_STM32=y +CONFIG_ARM_THUMBEE=y +CONFIG_SMP=y +CONFIG_HIGHMEM=y +CONFIG_VFP=y +CONFIG_NEON=y +CONFIG_KERNEL_MODE_NEON=y +CONFIG_ARM_CRYPTO=y +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_CAN=m +CONFIG_CAN_M_CAN=m +CONFIG_CAN_M_CAN_PLATFORM=m +CONFIG_UEVENT_HELPER=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_OF_OVERLAY=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=4 +CONFIG_NETDEVICES=y +CONFIG_STMMAC_ETH=y +CONFIG_MICREL_PHY=y +CONFIG_INPUT_MOUSEDEV=m +CONFIG_INPUT_EVDEV=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_AXP20X_PEK=m +CONFIG_SERIAL_STM32=y +CONFIG_SERIAL_STM32_CONSOLE=y +CONFIG_NULL_TTY=m +CONFIG_SERIAL_DEV_BUS=m +CONFIG_HW_RANDOM=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MUX=y +CONFIG_I2C_STM32F7=y +CONFIG_SPI=y +CONFIG_SPI_MEM=y +CONFIG_SPI_STM32=m +CONFIG_SPI_STM32_QSPI=m +CONFIG_PINCTRL_AXP209=m +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_GPIO=y +CONFIG_POWER_RESET_GPIO_RESTART=y +CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE=y +CONFIG_CPU_THERMAL=y +CONFIG_WATCHDOG=y +CONFIG_MFD_AXP20X_I2C=y +CONFIG_MFD_STM32_LPTIMER=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_AXP20X=y +CONFIG_REGULATOR_STM32_VREFBUF=y +CONFIG_REGULATOR_STM32_PWR=y +CONFIG_DRM=y +CONFIG_DRM_STM=m +CONFIG_DRM_STM_DSI=m +CONFIG_DRM_PANEL_LVDS=m +CONFIG_DRM_PANEL_SIMPLE=m +CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO=m +CONFIG_DRM_ITE_IT66121=m +CONFIG_DRM_ETNAVIV=m +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_PWM=m +CONFIG_BACKLIGHT_GPIO=m +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_LOGO=y +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_OHCI_HCD=y +CONFIG_MMC=y +CONFIG_MMC_ARMMMCI=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_STM32=y +CONFIG_DMADEVICES=y +CONFIG_STM32_DMA=y +CONFIG_STM32_DMAMUX=y +CONFIG_STM32_MDMA=y +CONFIG_UIO=m +CONFIG_UIO_PDRV_GENIRQ=m +CONFIG_UIO_DMEM_GENIRQ=m +CONFIG_HWSPINLOCK=y +CONFIG_HWSPINLOCK_STM32=y +CONFIG_CLKSRC_STM32_LP=y +CONFIG_STM32_IPCC=y +CONFIG_REMOTEPROC=y +CONFIG_STM32_RPROC=y +CONFIG_IIO=y +CONFIG_IIO_SW_TRIGGER=y +CONFIG_SD_ADC_MODULATOR=y +CONFIG_STM32_ADC_CORE=y +CONFIG_STM32_ADC=y +CONFIG_STM32_DFSDM_ADC=y +CONFIG_STM32_DAC=y +CONFIG_IIO_HRTIMER_TRIGGER=y +CONFIG_IIO_STM32_LPTIMER_TRIGGER=y +CONFIG_PWM=y +CONFIG_PWM_STM32=m +CONFIG_PWM_STM32_LP=m +CONFIG_PHY_STM32_USBPHYC=y +CONFIG_NVMEM_STM32_ROMEM=y +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_VFAT_FS=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_UTF8=y +CONFIG_PRINTK_TIME=y diff --git a/board/olimex/stmp1_olinuxino/patches/linux-headers/linux-headers.hash b/board/olimex/stmp1_olinuxino/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/olimex/stmp1_olinuxino/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/olimex/stmp1_olinuxino/patches/linux/linux.hash b/board/olimex/stmp1_olinuxino/patches/linux/linux.hash new file mode 100644 index 00000000..8691d5ff --- /dev/null +++ b/board/olimex/stmp1_olinuxino/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 5d3ca43b81056305860d7407c871eac4f8eafa603029ee67816574a31444fd93 linux-fc74113e14d76aea9482264ff42e07397b94553d-git4.tar.gz diff --git a/board/olimex/stmp1_olinuxino/patches/uboot/uboot.hash b/board/olimex/stmp1_olinuxino/patches/uboot/uboot.hash new file mode 100644 index 00000000..a991a192 --- /dev/null +++ b/board/olimex/stmp1_olinuxino/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 6aaa18a9023db29ceaad5bca240605990b68a6bf348aaefad0bee8be8d37648e uboot-efadf793a0a5924e2c96362dc1df3e56622ebb97-git4.tar.gz diff --git a/board/olimex/stmp1_olinuxino/readme.txt b/board/olimex/stmp1_olinuxino/readme.txt new file mode 100644 index 00000000..8c641c6c --- /dev/null +++ b/board/olimex/stmp1_olinuxino/readme.txt @@ -0,0 +1,53 @@ +STMP157-OLinuXino-LIME2 + +Intro +===== + +These are open hardware boards, all based on the STmicro STMP157 SoC. + +for more details about the board see the following pages: + - https://www.olimex.com/Products/OLinuXino/open-source-hardware + - https://www.olimex.com/Products/OLinuXino/STMP1/STMP157-OLinuXino-LIME2/ + +The following defconfigs are available: + - olimex_stmp157_olinuxino_lime_defconfig + +How to build it +=============== + +Configure Buildroot: + + $ make _defconfig + +Compile everything and build the rootfs image: + + $ make + +Result of the build +------------------- + +After building, you should get a tree like this: + + output/images/ + +-- rootfs.ext2 + +-- rootfs.ext4 -> rootfs.ext2 + +-- sdcard.img + +-- stm32mp1xx-olinuxino-lime.dtb + +-- u-boot-spl.stm32 + +-- u-boot.img + `-- zImage + + +How to write the SD card +======================== + +The sdcard.img file is a complete bootable image ready to be written +on the boot medium. To install it, simply copy the image to a uSD +card: + + # dd if=output/images/sdcard.img of=/dev/sdX + +Where 'sdX' is the device node of the uSD. + +Eject the SD card, insert it in the STMP1-OLinuXino board, and power it up. + diff --git a/board/olimex/stmp1_olinuxino/rootfs_overlay/boot/extlinux/extlinux.conf b/board/olimex/stmp1_olinuxino/rootfs_overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..edb601c7 --- /dev/null +++ b/board/olimex/stmp1_olinuxino/rootfs_overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +label stmp1-olinuxino-buildroot + kernel /boot/zImage + devicetree /boot/stm32mp1xx-olinuxino-lime.dtb + append root=/dev/mmcblk0p4 rootwait diff --git a/board/olpc/genimage.cfg b/board/olpc/genimage.cfg new file mode 100644 index 00000000..baafe317 --- /dev/null +++ b/board/olpc/genimage.cfg @@ -0,0 +1,9 @@ +image sdcard.img { + hdimage { + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/olpc/linux.config b/board/olpc/linux.config new file mode 100644 index 00000000..538f7c59 --- /dev/null +++ b/board/olpc/linux.config @@ -0,0 +1,71 @@ +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_PREEMPT=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_CFG80211=y +CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211=y +CONFIG_RFKILL=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SR=y +CONFIG_CHR_DEV_SG=y +CONFIG_MTD=y +CONFIG_MTD_BLOCK=y +CONFIG_GPIO_SYSFS=y +CONFIG_NETDEVICES=y +CONFIG_LIBERTAS=m +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1200 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=900 +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_TABLET=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_POWER_SUPPLY=y +CONFIG_BATTERY_OLPC=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_MEDIA_SUPPORT=y +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_CONTROLLER=y +CONFIG_VIDEO_V4L2_SUBDEV_API=y +CONFIG_MEDIA_USB_SUPPORT=y +CONFIG_USB_VIDEO_CLASS=m +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_DRM=y +CONFIG_DRM_PANEL_SIMPLE=m +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FB_SIMPLE=y +CONFIG_LCD_CLASS_DEVICE=y +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_USB=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_STORAGE=y +CONFIG_MMC=y +CONFIG_MMC_SDHCI=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y +CONFIG_RTC_CLASS=y +CONFIG_EXT4_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_FONTS=y +CONFIG_FONT_TER16x32=y diff --git a/board/olpc/olpc.fth b/board/olpc/olpc.fth new file mode 100644 index 00000000..b4cbecf1 --- /dev/null +++ b/board/olpc/olpc.fth @@ -0,0 +1,47 @@ +\ OLPC XO boot script + +: (visible) " unfreeze visible" evaluate ; +' (visible) catch drop forget (visible) + +" /aliases" find-device " last" get-property +abort" No last alias" +" /pci/sd@c" 2over substring? if " root=/dev/mmcblk0p1 " to boot-file then +" /sd/sdhci@d4280000" 2over substring? if " root=/dev/mmcblk1p1 " to boot-file then +" /pci/usb@" 2over substring? if " root=/dev/sda1 " to boot-file then +" /usb@" 2over substring? if " root=/dev/sda1 " to boot-file then +" /pci/nandflash@c" 2over substring? if " root=/dev/mtdblock0 rootfstype=jffs2 " to boot-file then +2drop + +root-device " compatible" get-property dend if 0 0 then ( compatible$ ) +" olpc,xo-1.75" 2over sindex -1 > if ( compatible$ ) + \ Version check on XO-1.75 + " mrvl,mmp2" 2over sindex -1 = if ( compatible$ ) + 2drop ( ) + cr + ." Firmware Q4E00 or newer is needed to boot a Devicetree enabled kernel." cr + cr + ." One way to update is to copy http://dev.laptop.org/~quozl/q4e00ja.rom" cr + ." to a FAT partition on a USB flash stick and run ""flash u:\q4e00ja.rom""" cr + cr + ." Aborting boot." cr + " show-sad" evaluate + abort + then +then ( compatible$ ) + +" mmp" 2swap sindex -1 > if + \ A Marvell MMP-based machine + " last:\boot\zImage" to boot-device + boot-file " console=ttyS2,115200 " $cat2 to boot-file +else + \ Assume XO-1 + " last:\boot\bzImage" to boot-device + boot-file " console=ttyS0,115200 reboot=pci " $cat2 to boot-file +then + +\ Pick a terminal that looks better on the XO screen +root-device " architecture" get-property dend if 0 0 else 1- then +" OLPC" $= if boot-file " fbcon=font:TER16x32 vt.color=0xf0 " $cat2 to boot-file then + +boot-file " console=tty0 rootwait" $cat2 to boot-file +boot diff --git a/board/olpc/post-build.sh b/board/olpc/post-build.sh new file mode 100755 index 00000000..4d4cf970 --- /dev/null +++ b/board/olpc/post-build.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +install -m 0644 -D $BOARD_DIR/olpc.fth $TARGET_DIR/boot/olpc.fth diff --git a/board/olpc/readme.txt b/board/olpc/readme.txt new file mode 100644 index 00000000..f1110c82 --- /dev/null +++ b/board/olpc/readme.txt @@ -0,0 +1,98 @@ +OLPC XO Laptops +=============== + +This document explains how to build and run images that run on the OLPC +XO laptops. + +Supported models +---------------- + +* OLPC XO-1 + The original NS Geode based OLPC laptop, uses the x86 architecture. + Can be booted either from an internal MTD device formatted with JFFS2 + or from a FAT or EXT4 partition on a SD card or a USB flash stick. + +* OLPC XO-7.5 + The ARM-based laptop. Needs a recent enough firmware to provide a good + enough flattened device tree to the kernel. Can be from a FAT or EXT4 + partition on a internal eMMC, a SD card or a USB flash stick. + +Configure and build +=================== + + $ make olpc_xo1_defconfig # Configure for XO-1 + +or: + + $ make olpc_xo175_defconfig # Configure for XO-1.75 + +Then: + + $ make menuconfig # Customize the build configuration + $ make # Build + +Preparing the machine +===================== + +Firmware security +----------------- + +Most OLPC machines were shipped with the security system that disallows +booting unsigned software. If this is the case with your machine, in order +to run the image you've built on it you'll need to get a developer key and +deactivate the security system. + +The procedure is descriped in the OLPC wiki: +http://wiki.laptop.org/go/Activation_and_Developer_Keys + +Firmware upgrade +---------------- + +It is always preferrable to use an up to date firmware. The firmware images +are available at http://wiki.laptop.org/go/Firmware. For the XO-1.75 laptop +to boot the mainline kernel a firmware Q4E00JA or newer is needed. You can +get it at http://dev.laptop.org/~quozl/q4e00ja.rom. + +To update the firmware, place the .rom file on to your bootable media, +connect a charged battery pack and a wall adapter, and enter the Open +Firmware prompt by pressing ESC during the early boot (needs an unlocked +laptop -- see "Firmware security" above). Then use the "flash" command +to update the firmware: + + ok flash ext:\q4e00ja.rom \ Flash the "q4e00ja.rom" from the SD card + ok flash u:\q4e00ja.rom \ Flash the "q4e00ja.rom" from USB stick + +Create the bootable SD card or USB flash stick +============================================== + +When the build is finished, an image file called "sdcard.img" will be created. +It is suitable for writing directly to a SD card, USB flash stick or (on a +XO-1.75) the internal eMMC flash. + +Before writing the image, please double check that you're using the right +device (e.g. with "lsblk" command). Doing the following will DESTROY ALL DATA +that's currently on the media. + + # cat output/images/sdcard.img >/dev/ + +Flashing the JFFS2 image (XO-1 only) +==================================== + +Unlike XO-1.75, the internal NAND flash on XO-1 is accessed without a +FTL and needs a flash-friendly filesystem. A build configured for XO-1 +creates a file named "root.jffs2" that can be written to it. + +One way to write it is from the Open Firmware prompt. First, partition +and format a USB flash disk with a FAT file system and place the +"root.jffs2" file onto it. Then power on the machine, enter the +Open Firmware port by pressing the ESC key and run the following: + + ok patch noop ?open-crcs copy-nand \ Disable CRC check + ok copy-nand u:\root.jffs2 + +Booting the machine +=================== + +Once your machine is unlocked, it will automatically boot from your media +wherever it will detect it attached to the USB bus or the SD card slot, +otherwise it will proceed booting from the internal flash. diff --git a/board/olpc/xo-1.75/linux.config b/board/olpc/xo-1.75/linux.config new file mode 100644 index 00000000..937cc38b --- /dev/null +++ b/board/olpc/xo-1.75/linux.config @@ -0,0 +1,55 @@ +CONFIG_ARCH_MMP=y +CONFIG_MACH_MMP2_DT=y +CONFIG_MACH_MMP3_DT=y +CONFIG_USB_EHCI_MV_U2O=y +CONFIG_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_HIGHMEM=y +CONFIG_FORCE_MAX_ZONEORDER=16 +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_ARM_APPENDED_DTB=y +CONFIG_ARM_ATAG_DTB_COMPAT=y +CONFIG_VFP=y +CONFIG_NEON=y +CONFIG_SENSORS_LIS3_SPI=y +CONFIG_SERIO_OLPC_APSP=y +CONFIG_REGULATOR_88PG86X=m +CONFIG_MEDIA_PLATFORM_SUPPORT=y +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_VIDEO_MMP_CAMERA=y +CONFIG_DRM_ARMADA=y +CONFIG_DRM_CHRONTEL_CH7033=m +CONFIG_DRM_DISPLAY_CONNECTOR=m +CONFIG_DRM_SIMPLE_BRIDGE=m +CONFIG_DRM_ETNAVIV=m +CONFIG_USB_EHCI_MV=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SDHCI_PXAV3=y +CONFIG_OLPC_XO175=y +CONFIG_OLPC_XO175_EC=y +CONFIG_PHY_PXA_USB=y +CONFIG_PHY_MMP3_USB=y +CONFIG_CRYPTO_LZO=m +CONFIG_LIBERTAS_SDIO=m +CONFIG_LIBERTAS_THINFIRM=m +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m +CONFIG_MTD_SPI_NOR=m +CONFIG_SRAM=y +CONFIG_I2C_PXA=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_SPI=y +CONFIG_SPI_PXA2XX=y +CONFIG_SPI_SLAVE=y +CONFIG_SND_SOC=y +CONFIG_SND_MMP_SOC_SSPA=y +CONFIG_SND_SOC_RT5631=y +CONFIG_SND_AUDIO_GRAPH_CARD=y +CONFIG_PWRSEQ_SD8787=m +CONFIG_RTC_DRV_DS1307=y +CONFIG_DMADEVICES=y +CONFIG_MMP_TDMA=y +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ZFORCE=y +CONFIG_COMMON_CLK_MMP2_AUDIO=y diff --git a/board/olpc/xo-1/linux.config b/board/olpc/xo-1/linux.config new file mode 100644 index 00000000..12919471 --- /dev/null +++ b/board/olpc/xo-1/linux.config @@ -0,0 +1,80 @@ +# CONFIG_64BIT is not set +CONFIG_IOSF_MBI=y +CONFIG_MGEODE_LX=y +CONFIG_X86_MSR=y +CONFIG_HZ_100=y +CONFIG_KEXEC=y +CONFIG_CMDLINE_BOOL=y +CONFIG_ACPI=y +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_OLPC=y +CONFIG_OLPC_XO1_PM=y +CONFIG_OLPC_XO1_RTC=y +CONFIG_OLPC_XO1_SCI=y +# CONFIG_VIRTUALIZATION is not set +CONFIG_SPARSEMEM_MANUAL=y +CONFIG_CMA=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_REDBOOT_PARTS=y +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=0 +CONFIG_MTD_ONENAND=y +CONFIG_MTD_ONENAND_GENERIC=y +CONFIG_MTD_RAW_NAND=y +CONFIG_MTD_NAND_CAFE=y +CONFIG_MTD_UBI=y +CONFIG_CS5535_MFGPT=y +CONFIG_CS5535_CLOCK_EVENT_SRC=y +CONFIG_MOUSE_PS2_OLPC=y +CONFIG_SERIAL_8250_NR_UARTS=1 +CONFIG_SERIAL_8250_RUNTIME_UARTS=1 +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_HW_RANDOM=y +# CONFIG_HW_RANDOM_VIA is not set +CONFIG_NVRAM=y +CONFIG_SCx200_ACB=y +CONFIG_PINCTRL=y +CONFIG_PINCTRL_SINGLE=y +CONFIG_GPIO_CS5535=y +CONFIG_THERMAL=y +CONFIG_WATCHDOG=y +CONFIG_GEODE_WDT=y +CONFIG_MFD_CS5535=y +CONFIG_MFD_MAX8925=y +CONFIG_VIDEO_CAFE_CCIC=y +CONFIG_FB_TILEBLITTING=y +CONFIG_FB_VESA=y +CONFIG_FB_GEODE=y +CONFIG_FB_GEODE_LX=y +CONFIG_BACKLIGHT_MAX8925=y +CONFIG_VGACON_SOFT_SCROLLBACK=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +CONFIG_SND_OSSEMUL=y +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_AC97_POWER_SAVE=y +CONFIG_SND_CS5535AUDIO=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_OHCI_HCD=y +CONFIG_MMC_SDHCI_PCI=y +CONFIG_STAGING=y +CONFIG_FB_OLPC_DCON=y +CONFIG_XO1_RFKILL=y +CONFIG_RESET_CONTROLLER=y +CONFIG_GENERIC_PHY=y +CONFIG_PROC_KCORE=y +CONFIG_HUGETLBFS=y +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_WBUF_VERIFY=y +CONFIG_JFFS2_SUMMARY=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_UBIFS_FS=y +CONFIG_PCI=y +CONFIG_LIBERTAS_USB=m +CONFIG_LIBERTAS_MESH=y +CONFIG_LIBERTAS_THINFIRM=m +CONFIG_LIBERTAS_THINFIRM_USB=m diff --git a/board/openblocks/a6/patches/linux-headers/linux-headers.hash b/board/openblocks/a6/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/openblocks/a6/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/openblocks/a6/patches/linux/linux.hash b/board/openblocks/a6/patches/linux/linux.hash new file mode 100644 index 00000000..b207306a --- /dev/null +++ b/board/openblocks/a6/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 0820fdb7971c6974338081c11fbf2dc869870501e7bdcac4d0ed58ba1f57b61c linux-4.14.336.tar.xz diff --git a/board/openblocks/a6/readme.txt b/board/openblocks/a6/readme.txt new file mode 100644 index 00000000..10a78bb7 --- /dev/null +++ b/board/openblocks/a6/readme.txt @@ -0,0 +1,78 @@ +Openblocks A6 + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Openblocks A6. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make openblocks_a6_defconfig + +Compile everything: + + $ make + +Updating board over TFTP +======================== + +Copy the content of output/images to the root of your TFTP server. + +Connect serial and ethernet, power up board and stop it in U-Boot: + +DRAM (DDR2) CAS Latency = 5 tRP = 5 tRAS = 14 tRCD=5 +DRAM CS[0] base 0x00000000 size 512MB +DRAM Total size 512MB 16bit width +Addresses 8M - 0M are saved for the U-Boot usage. +Mem malloc Initialization (8M - 7M): Done +NAND:64 MB +POST: mac verify Eth0 PASSED + +CPU : Marvell Feroceon (Rev 1) + +Streaming disabled +Write allocate disabled + + +USB 0: host mode +Net: egiga0 +Hit any key to stop autoboot: 0 +openblocks>> + + +Load kernel from tftp: + +setenv serverip +setenv bootfile uImage.kirkwood-openblocks_a6 +bootp && tftp + + +Write it to nand: + +nand erase 0x590000 0x1c5c000 +nand write.e $loadaddr 0x590000 0x1c5c000 + + +Load rootfs from tftp: + +setenv serverip +setenv bootfile rootfs.jffs2 +bootp && tftp + + +Write it to nand: + +nand erase 0x2214000 0x1dc4000 +nand write.jffs2 $loadaddr 0x2214000 0x1dc4000 + + +Configure kernel to use rootfs: + +setenv root /dev/mtdblock5 rootfstype=jffs2 +saveenv +boot diff --git a/board/orangepi/common/extlinux.conf b/board/orangepi/common/extlinux.conf new file mode 100644 index 00000000..12f496b1 --- /dev/null +++ b/board/orangepi/common/extlinux.conf @@ -0,0 +1,4 @@ +LABEL default + kernel /boot/%LINUXIMAGE% + devicetreedir /boot + append root=PARTUUID=%PARTUUID% rootwait console=${console} rootfstype=ext4 quiet panic=10 diff --git a/board/orangepi/common/genimage.cfg b/board/orangepi/common/genimage.cfg new file mode 100644 index 00000000..c748108c --- /dev/null +++ b/board/orangepi/common/genimage.cfg @@ -0,0 +1,20 @@ +image sdcard.img { + partition u-boot { + in-partition-table = false + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + size = 1000K # 1MB - 8KB(offset) - 16KB(GPT) + } + + hdimage { + partition-table-type = "gpt" + gpt-location = 1008K # 1MB - 16KB(GPT) + gpt-no-backup = true + } + + partition rootfs { + offset = 1M + image = "rootfs.ext4" + partition-uuid = %PARTUUID% + } +} diff --git a/board/orangepi/common/post-build.sh b/board/orangepi/common/post-build.sh new file mode 100755 index 00000000..296f94b1 --- /dev/null +++ b/board/orangepi/common/post-build.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +linux_image() +{ + if grep -Eq "^BR2_LINUX_KERNEL_UIMAGE=y$" ${BR2_CONFIG}; then + echo "uImage" + elif grep -Eq "^BR2_LINUX_KERNEL_IMAGE=y$" ${BR2_CONFIG}; then + echo "Image" + elif grep -Eq "^BR2_LINUX_KERNEL_IMAGEGZ=y$" ${BR2_CONFIG}; then + echo "Image.gz" + else + echo "zImage" + fi +} + +generic_getty() +{ + if grep -Eq "^BR2_TARGET_GENERIC_GETTY=y$" ${BR2_CONFIG}; then + echo "" + else + echo "s/\s*console=\S*//" + fi +} + +PARTUUID="$($HOST_DIR/bin/uuidgen)" + +install -d "$TARGET_DIR/boot/extlinux/" + +sed -e "$(generic_getty)" \ + -e "s/%LINUXIMAGE%/$(linux_image)/g" \ + -e "s/%PARTUUID%/$PARTUUID/g" \ + "board/orangepi/common/extlinux.conf" > "$TARGET_DIR/boot/extlinux/extlinux.conf" + +sed "s/%PARTUUID%/$PARTUUID/g" "board/orangepi/common/genimage.cfg" > "$BINARIES_DIR/genimage.cfg" diff --git a/board/orangepi/orangepi-lite/linux-extras.config b/board/orangepi/orangepi-lite/linux-extras.config new file mode 100644 index 00000000..6bb71690 --- /dev/null +++ b/board/orangepi/orangepi-lite/linux-extras.config @@ -0,0 +1,15 @@ +# wireless core +CONFIG_WIRELESS=y +CONFIG_CFG80211=y +CONFIG_MAC80211=y +CONFIG_CFG80211_WEXT=y + +# wireless drivers +CONFIG_WLAN=y + +# hdmi +CONFIG_DRM_SUN8I_DW_HDMI=y +CONFIG_SUN8I_DE2_CCU=y + +# analog audio +CONFIG_SND_SUN8I_CODEC_ANALOG=y diff --git a/board/orangepi/orangepi-lite/patches/linux-headers/linux-headers.hash b/board/orangepi/orangepi-lite/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/orangepi/orangepi-lite/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/orangepi/orangepi-lite/patches/linux/linux.hash b/board/orangepi/orangepi-lite/patches/linux/linux.hash new file mode 100644 index 00000000..e8609bab --- /dev/null +++ b/board/orangepi/orangepi-lite/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b21d5795a3bead4f112916423222faa8a0f519e4201df343e3eb88dc9e4aaa30 linux-6.6.16.tar.xz diff --git a/board/orangepi/orangepi-lite/patches/uboot/uboot.hash b/board/orangepi/orangepi-lite/patches/uboot/uboot.hash new file mode 100644 index 00000000..bc999536 --- /dev/null +++ b/board/orangepi/orangepi-lite/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b99611f1ed237bf3541bdc8434b68c96a6e05967061f992443cb30aabebef5b3 u-boot-2024.01.tar.bz2 diff --git a/board/orangepi/orangepi-lite/readme.txt b/board/orangepi/orangepi-lite/readme.txt new file mode 100644 index 00000000..5f402bf2 --- /dev/null +++ b/board/orangepi/orangepi-lite/readme.txt @@ -0,0 +1,29 @@ +OrangePi Lite + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the OrangePi Lite. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make orangepi_lite_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/board/orangepi/orangepi-lite2/extlinux.conf b/board/orangepi/orangepi-lite2/extlinux.conf new file mode 100644 index 00000000..1966186a --- /dev/null +++ b/board/orangepi/orangepi-lite2/extlinux.conf @@ -0,0 +1,4 @@ +label linux + kernel /Image + devicetree /sun50i-h6-orangepi-lite2.dtb + append console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait diff --git a/board/orangepi/orangepi-lite2/genimage.cfg b/board/orangepi/orangepi-lite2/genimage.cfg new file mode 100644 index 00000000..bc981eed --- /dev/null +++ b/board/orangepi/orangepi-lite2/genimage.cfg @@ -0,0 +1,34 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-h6-orangepi-lite2.dtb", + "extlinux" + } + } + + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + size = 1016K # 1MB - 8KB + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/orangepi/orangepi-lite2/post-build.sh b/board/orangepi/orangepi-lite2/post-build.sh new file mode 100755 index 00000000..ec20fca7 --- /dev/null +++ b/board/orangepi/orangepi-lite2/post-build.sh @@ -0,0 +1,4 @@ +#!/bin/sh +BOARD_DIR="$(dirname $0)" + +install -m 0644 -D $BOARD_DIR/extlinux.conf $BINARIES_DIR/extlinux/extlinux.conf diff --git a/board/orangepi/orangepi-lite2/readme.txt b/board/orangepi/orangepi-lite2/readme.txt new file mode 100644 index 00000000..7f882504 --- /dev/null +++ b/board/orangepi/orangepi-lite2/readme.txt @@ -0,0 +1,44 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Orangepi Lite2. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Orangepi Lite2 link: +http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-Lite-2.html + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Orangepi+Lite2 + +How to build +============ + + $ make orangepi_lite2_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Orangepi Lite2 and power it up. The console +is on the serial line, 115200 8N1. + +WiFi +==== + + # wpa_passphrase ACCESSPOINTNAME >> /etc/wpa_supplicant.conf + (type password and enter) + # wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -B + # udhcpc -i wlan0 + # ping google.com diff --git a/board/orangepi/orangepi-lite2/rootfs_overlay/lib/firmware/brcm/brcmfmac43455-sdio.txt b/board/orangepi/orangepi-lite2/rootfs_overlay/lib/firmware/brcm/brcmfmac43455-sdio.txt new file mode 100755 index 00000000..c1cc4c3c --- /dev/null +++ b/board/orangepi/orangepi-lite2/rootfs_overlay/lib/firmware/brcm/brcmfmac43455-sdio.txt @@ -0,0 +1,82 @@ +#AP6255_NVRAM_V1.0_29052015 + +NVRAMRev=$Rev: 498373 $ +sromrev=11 +vendid=0x14e4 +devid=0x43ab +manfid=0x2d0 +prodid=0x06e4 +macaddr=00:90:4c:c5:12:38 +nocrc=1 +boardtype=0x6e4 +boardrev=0x1304 +xtalfreq=37400 +#boardflags: 5GHz eTR switch by default +#2.4GHz eTR switch by default +#bit1 for btcoex +boardflags=0x00080201 +boardflags2=0x40000000 +boardflags3=0x48200100 +rxgains2gelnagaina0=0 +rxgains2gtrisoa0=0 +rxgains2gtrelnabypa0=0 +rxgains5gelnagaina0=0 +rxgains5gtrisoa0=0 +rxgains5gtrelnabypa0=0 +rxchain=1 +txchain=1 +aa2g=1 +aa5g=1 +tssipos5g=1 +tssipos2g=1 +femctrl=0 +AvVmid_c0=0,157,1,126,1,126,1,126,1,126 +pa2ga0=-112,6296,-662 +pa2ga1=-165,3699,-515 +pa5ga0=-143,6016,-683,-141,6013,-678,-137,5988,-670,-136,5982,-670 +pa5ga1=-161,3544,-499,-166,3543,-497,-169,3569,-497,-171,3598,-498 +itrsw=1 +pdoffset2g40ma0=10 +pdoffset40ma0=0xaaaa +pdoffset80ma0=0xaaaa +extpagain5g=2 +extpagain2g=2 +tworangetssi2g=1 +tworangetssi5g=1 +# LTECX flags +# WCI2 +ltecxmux=0 +ltecxpadnum=0x0504 +ltecxfnsel=0x22 +ltecxgcigpio=0x32 + +maxp2ga0=64 +ofdmlrbw202gpo=0x0033 +dot11agofdmhrbw202gpo=0x1553 +mcsbw202gpo=0x99355533 + +maxp5ga0=80,82,76,77 + +mcsbw205glpo=0x99755000 +mcsbw205gmpo=0x9df55000 +mcsbw205ghpo=0x99855000 + +mcsbw405glpo=0xb8555000 +mcsbw405gmpo=0xed955000 +mcsbw405ghpo=0xd9755000 + +mcsbw805glpo=0xc8555000 +mcsbw805gmpo=0xe9555000 +mcsbw805ghpo=0xd9555000 + +swctrlmap_2g=0x00040004,0x00020002,0x00040004,0x010a02,0x1ff +swctrlmap_5g=0x00100010,0x00200020,0x00100010,0x010a02,0x2f4 +swctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x000 +swctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x000 + +vcodivmode=1 +deadman_to=481500000 +ed_thresh2g=-54 +ed_thresh5g=-54 + +muxenab=0x10 diff --git a/board/orangepi/orangepi-one-plus/extlinux.conf b/board/orangepi/orangepi-one-plus/extlinux.conf new file mode 100644 index 00000000..f573aa17 --- /dev/null +++ b/board/orangepi/orangepi-one-plus/extlinux.conf @@ -0,0 +1,4 @@ +label linux + kernel /Image + devicetree /sun50i-h6-orangepi-one-plus.dtb + append console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait diff --git a/board/orangepi/orangepi-one-plus/genimage.cfg b/board/orangepi/orangepi-one-plus/genimage.cfg new file mode 100644 index 00000000..80b83b02 --- /dev/null +++ b/board/orangepi/orangepi-one-plus/genimage.cfg @@ -0,0 +1,34 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-h6-orangepi-one-plus.dtb", + "extlinux" + } + } + + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + size = 1016K # 1MB - 8KB + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/orangepi/orangepi-one-plus/post-build.sh b/board/orangepi/orangepi-one-plus/post-build.sh new file mode 100755 index 00000000..ec20fca7 --- /dev/null +++ b/board/orangepi/orangepi-one-plus/post-build.sh @@ -0,0 +1,4 @@ +#!/bin/sh +BOARD_DIR="$(dirname $0)" + +install -m 0644 -D $BOARD_DIR/extlinux.conf $BINARIES_DIR/extlinux/extlinux.conf diff --git a/board/orangepi/orangepi-one-plus/readme.txt b/board/orangepi/orangepi-one-plus/readme.txt new file mode 100644 index 00000000..547f8742 --- /dev/null +++ b/board/orangepi/orangepi-one-plus/readme.txt @@ -0,0 +1,37 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Orangepi One Plus. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Orangepi One Plus link: +http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-One-Plus.html + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Orangepi+One+Plus + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make orangepi_one_plus_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Orangepi One Plus and power it up. The console +is on the serial line, 115200 8N1. diff --git a/board/orangepi/orangepi-one/readme.txt b/board/orangepi/orangepi-one/readme.txt new file mode 100644 index 00000000..e650f82d --- /dev/null +++ b/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/board/orangepi/orangepi-pc-plus/linux-extras.config b/board/orangepi/orangepi-pc-plus/linux-extras.config new file mode 100644 index 00000000..5e3af2b8 --- /dev/null +++ b/board/orangepi/orangepi-pc-plus/linux-extras.config @@ -0,0 +1,8 @@ +# wireless core +CONFIG_WIRELESS=y +CONFIG_CFG80211=y +CONFIG_MAC80211=y +CONFIG_CFG80211_WEXT=y + +# wireless drivers +CONFIG_WLAN=y diff --git a/board/orangepi/orangepi-pc-plus/readme.txt b/board/orangepi/orangepi-pc-plus/readme.txt new file mode 100644 index 00000000..49206949 --- /dev/null +++ b/board/orangepi/orangepi-pc-plus/readme.txt @@ -0,0 +1,29 @@ +OrangePi PC Plus + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the OrangePi PC Plus. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make orangepi_pc_plus_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/board/orangepi/orangepi-pc/linux.fragment b/board/orangepi/orangepi-pc/linux.fragment new file mode 100644 index 00000000..b1dda162 --- /dev/null +++ b/board/orangepi/orangepi-pc/linux.fragment @@ -0,0 +1,3 @@ +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +CONFIG_REGULATOR_SY8106A=y +CONFIG_SUN8I_DE2_CCU=y diff --git a/board/orangepi/orangepi-pc/patches/linux-headers/linux-headers.hash b/board/orangepi/orangepi-pc/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/orangepi/orangepi-pc/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/orangepi/orangepi-pc/patches/linux/linux.hash b/board/orangepi/orangepi-pc/patches/linux/linux.hash new file mode 100644 index 00000000..b763fc94 --- /dev/null +++ b/board/orangepi/orangepi-pc/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 880ace63ca2291b8b639e9bd862cc828649d3e1e00ccfee5861473debd2e4dec linux-6.1.91.tar.xz diff --git a/board/orangepi/orangepi-pc/patches/uboot/uboot.hash b/board/orangepi/orangepi-pc/patches/uboot/uboot.hash new file mode 100644 index 00000000..bc999536 --- /dev/null +++ b/board/orangepi/orangepi-pc/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b99611f1ed237bf3541bdc8434b68c96a6e05967061f992443cb30aabebef5b3 u-boot-2024.01.tar.bz2 diff --git a/board/orangepi/orangepi-pc/readme.txt b/board/orangepi/orangepi-pc/readme.txt new file mode 100644 index 00000000..d316b6fc --- /dev/null +++ b/board/orangepi/orangepi-pc/readme.txt @@ -0,0 +1,29 @@ +OrangePi PC + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the OrangePi PC. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make orangepi_pc_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/board/orangepi/orangepi-pc2/readme.txt b/board/orangepi/orangepi-pc2/readme.txt new file mode 100644 index 00000000..6c699244 --- /dev/null +++ b/board/orangepi/orangepi-pc2/readme.txt @@ -0,0 +1,37 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Orangepi PC2. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Orangepi PC2 link: +http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-PC-2.html + +Sunxi Wiki link: +https://linux-sunxi.org/Xunlong_Orange_Pi_PC_2 + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make orangepi_pc2_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Orangepi PC2 and power it up. The console +is on the serial line, 115200 8N1. diff --git a/board/orangepi/orangepi-r1/boot.cmd b/board/orangepi/orangepi-r1/boot.cmd new file mode 100644 index 00000000..50745f7e --- /dev/null +++ b/board/orangepi/orangepi-r1/boot.cmd @@ -0,0 +1,8 @@ +setenv fdt_high ffffffff + +setenv bootargs console=ttyS0,115200 earlyprintk root=PARTLABEL=rootfs rootwait + +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-h2-plus-orangepi-r1.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/board/orangepi/orangepi-r1/genimage.cfg b/board/orangepi/orangepi-r1/genimage.cfg new file mode 100644 index 00000000..78b69269 --- /dev/null +++ b/board/orangepi/orangepi-r1/genimage.cfg @@ -0,0 +1,43 @@ +# Minimal SD card image for the OrangePi R1 +# +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h2-plus-orangepi-r1.dtb", + "boot.scr" + } + } + + size = 10M +} + +image sdcard.img { + hdimage { + # for root=PARTLABEL support + partition-table-type = "gpt" + # default GPT location conflicts with spl, move it after + gpt-location = 1M + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + size = 1016K # 1MB - 8KB + } + + partition boot { + partition-type-uuid = F + bootable = "true" + image = "boot.vfat" + } + + # 'rootfs' will be used as the partition label, used + # with root=PARTLABEL=rootfs kernel command line + partition rootfs { + partition-type-uuid = L + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/orangepi/orangepi-r1/linux-extras.config b/board/orangepi/orangepi-r1/linux-extras.config new file mode 100644 index 00000000..47ba88f6 --- /dev/null +++ b/board/orangepi/orangepi-r1/linux-extras.config @@ -0,0 +1,11 @@ +# spi nor +CONFIG_MTD=y +CONFIG_MTD_OF_PARTS=y +CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_M25P80=y + +# ondemand cpufreq governor +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y + +# USB ethernet +CONFIG_USB_RTL8152=y diff --git a/board/orangepi/orangepi-r1/patches/linux-headers/linux-headers.hash b/board/orangepi/orangepi-r1/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/orangepi/orangepi-r1/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/orangepi/orangepi-r1/patches/linux/linux.hash b/board/orangepi/orangepi-r1/patches/linux/linux.hash new file mode 100644 index 00000000..2ec07fd8 --- /dev/null +++ b/board/orangepi/orangepi-r1/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 d6ecff966f8c95ec4cb3bb303904f757b7de6a6bcfef0d0771cb852158e61c20 linux-6.6.31.tar.xz diff --git a/board/orangepi/orangepi-r1/patches/uboot/uboot.hash b/board/orangepi/orangepi-r1/patches/uboot/uboot.hash new file mode 100644 index 00000000..bc999536 --- /dev/null +++ b/board/orangepi/orangepi-r1/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b99611f1ed237bf3541bdc8434b68c96a6e05967061f992443cb30aabebef5b3 u-boot-2024.01.tar.bz2 diff --git a/board/orangepi/orangepi-r1/readme.txt b/board/orangepi/orangepi-r1/readme.txt new file mode 100644 index 00000000..82664993 --- /dev/null +++ b/board/orangepi/orangepi-r1/readme.txt @@ -0,0 +1,29 @@ +OrangePi R1 + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the OrangePi R1. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make orangepi_r1_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/board/orangepi/orangepi-zero-plus/readme.txt b/board/orangepi/orangepi-zero-plus/readme.txt new file mode 100644 index 00000000..1e60e0f8 --- /dev/null +++ b/board/orangepi/orangepi-zero-plus/readme.txt @@ -0,0 +1,34 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Orangepi Zero Plus. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Orangepi Zero Plus link: +http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-Zero-Plus.html + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make orangepi_zero_plus_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Orangepi Zero Plus and power it up. The console +is on the serial line, 115200 8N1. diff --git a/board/orangepi/orangepi-zero-plus2/linux-extras.config b/board/orangepi/orangepi-zero-plus2/linux-extras.config new file mode 100644 index 00000000..52b4b4b2 --- /dev/null +++ b/board/orangepi/orangepi-zero-plus2/linux-extras.config @@ -0,0 +1,10 @@ +# wireless core +CONFIG_WIRELESS=y +CONFIG_CFG80211=y +CONFIG_MAC80211=y +CONFIG_CFG80211_WEXT=y + +# wireless drivers +CONFIG_WLAN=y +CONFIG_WLAN_VENDOR_BROADCOM=y +CONFIG_BRCMFMAC=m diff --git a/board/orangepi/orangepi-zero-plus2/readme.txt b/board/orangepi/orangepi-zero-plus2/readme.txt new file mode 100644 index 00000000..2df6dd9b --- /dev/null +++ b/board/orangepi/orangepi-zero-plus2/readme.txt @@ -0,0 +1,37 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Orangepi Zero Plus2. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Orangepi Zero Plus2 link: +http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-Zero-Plus-2.html + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Orangepi+Zero+Plus2 + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make orangepi_zero_plus2_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Orangepi Zero Plus2 and power it up. The console +is on the serial line, 115200 8N1. diff --git a/board/orangepi/orangepi-zero-plus2/rootfs_overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt b/board/orangepi/orangepi-zero-plus2/rootfs_overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt new file mode 100644 index 00000000..8f0bf690 --- /dev/null +++ b/board/orangepi/orangepi-zero-plus2/rootfs_overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt @@ -0,0 +1,54 @@ +#AP6212_NVRAM_V1.0_20140603 +# 2.4 GHz, 20 MHz BW mode + +# The following parameter values are just placeholders, need to be updated. +manfid=0x2d0 +prodid=0x0726 +vendid=0x14e4 +devid=0x43e2 +boardtype=0x0726 +boardrev=0x1101 +boardnum=22 +macaddr=00:90:4c:c5:12:38 +sromrev=11 +boardflags=0x00404201 +xtalfreq=26000 +nocrc=1 +ag0=255 +aa2g=1 +ccode=ALL + +pa0itssit=0x20 +extpagain2g=0 + +#PA parameters for 2.4GHz, measured at CHIP OUTPUT +pa2ga0=-168,7161,-820 +AvVmid_c0=0x0,0xc8 +cckpwroffset0=5 + +# PPR params +maxp2ga0=90 +txpwrbckof=6 +cckbw202gpo=0x5555 +legofdmbw202gpo=0x77777777 +mcsbw202gpo=0xaaaaaaaa + +# OFDM IIR : +ofdmdigfilttype=7 +# PAPD mode: +papdmode=2 + +il0macaddr=00:90:4c:c5:12:38 +wl0id=0x431b + +#OOB parameters +hostwake=0x40 +hostrdy=0x41 +usbrdy=0x03 +usbrdydelay=100 +deadman_to=0xffffffff +# muxenab: 0x1 for UART enable, 0x10 for Host awake +muxenab=0x10 +# CLDO PWM voltage settings - 0x4 - 1.1 volt +#cldo_pwm=0x4 + diff --git a/board/orangepi/orangepi-zero/linux-extras.fragment b/board/orangepi/orangepi-zero/linux-extras.fragment new file mode 100644 index 00000000..2db241de --- /dev/null +++ b/board/orangepi/orangepi-zero/linux-extras.fragment @@ -0,0 +1,20 @@ +# spidev +CONFIG_SPI_SPIDEV=y + +# spi nor +CONFIG_MTD=y +CONFIG_MTD_OF_PARTS=y +CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_M25P80=y + +# wireless core +CONFIG_WIRELESS=y +CONFIG_CFG80211=y +CONFIG_MAC80211=y +CONFIG_CFG80211_WEXT=y + +# wireless drivers +CONFIG_WLAN=y + +# ondemand cpufreq governor +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y diff --git a/board/orangepi/orangepi-zero/patches/linux/0001-ARM-dts-orange-pi-zero-interrupt-triggering-xr819.patch b/board/orangepi/orangepi-zero/patches/linux/0001-ARM-dts-orange-pi-zero-interrupt-triggering-xr819.patch new file mode 100644 index 00000000..6a5aa0bb --- /dev/null +++ b/board/orangepi/orangepi-zero/patches/linux/0001-ARM-dts-orange-pi-zero-interrupt-triggering-xr819.patch @@ -0,0 +1,35 @@ +From 321faaf4b78d46a0c77782c1798856746f0619e9 Mon Sep 17 00:00:00 2001 +From: Sergey Matyukevich +Date: Fri, 19 May 2017 23:39:48 +0300 +Subject: [PATCH] ARM: dts: orange-pi-zero: specify XR819 WiFi chip + interrupts + +The orange-pi-zero board has Allwinner XR819 SDIO wifi chip. The board +dts file provides a node enabling mmc1 controller. Together with an +out-of-tree driver https://github.com/fifteenhex/xradio this node +enables using the wifi chip. + +This commit specifies XR819 interrupt configuration for the driver. + +Signed-off-by: Sergey Matyukevich +--- + arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts +index b7ca916d871d..4e1a9050c6b4 100644 +--- a/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts ++++ b/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts +@@ -125,6 +125,9 @@ + */ + xr819: sdio_wifi@1 { + reg = <1>; ++ compatible = "xradio,xr819"; ++ interrupt-parent = <&pio>; ++ interrupts = <6 10 IRQ_TYPE_EDGE_RISING>; + }; + }; + +-- +2.11.0 + diff --git a/board/orangepi/orangepi-zero/patches/linux/0002-ARM-dts-orange-pi-zero-enable-spi-nor.patch b/board/orangepi/orangepi-zero/patches/linux/0002-ARM-dts-orange-pi-zero-enable-spi-nor.patch new file mode 100644 index 00000000..ff350d68 --- /dev/null +++ b/board/orangepi/orangepi-zero/patches/linux/0002-ARM-dts-orange-pi-zero-enable-spi-nor.patch @@ -0,0 +1,45 @@ +From ddc295a04269437e5c726f63239689786354d44b Mon Sep 17 00:00:00 2001 +From: Sergey Matyukevich +Date: Sat, 20 May 2017 11:24:26 +0300 +Subject: [PATCH] ARM: dts: orange-pi-zero: enable SPI NOR + +Enable SPI NOR on orange-pi-zero board. + +For more information see: +- http://linux-sunxi.org/Orange_Pi_Zero#SPI_NOR_flash + +Signed-off-by: Sergey Matyukevich +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + .../boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts +index 6b74cc923e16..4012f8712cd7 100644 +--- a/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts ++++ b/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts +@@ -167,14 +167,18 @@ &ohci1 { + + &spi0 { + /* Disable SPI NOR by default: it optional on Orange Pi Zero boards */ +- status = "disabled"; ++ status = "okay"; + + flash@0 { + #address-cells = <1>; + #size-cells = <1>; +- compatible = "mxicy,mx25l1606e", "jedec,spi-nor"; ++ compatible = "mxicy,mx25l1606e", "winbond,w25q128"; + reg = <0>; + spi-max-frequency = <40000000>; ++ ++ partition@00000000 { ++ reg = <0x00000000 0x200000>; /* 2Mb */ ++ }; + }; + }; + +-- +2.43.0 + diff --git a/board/orangepi/orangepi-zero/patches/linux/0003-ARM-dts-orange-pi-zero-enable-spidev.patch b/board/orangepi/orangepi-zero/patches/linux/0003-ARM-dts-orange-pi-zero-enable-spidev.patch new file mode 100644 index 00000000..61dc97fd --- /dev/null +++ b/board/orangepi/orangepi-zero/patches/linux/0003-ARM-dts-orange-pi-zero-enable-spidev.patch @@ -0,0 +1,47 @@ +From 208b13119fc0f709935fc2fc13c0295b19edbbf5 Mon Sep 17 00:00:00 2001 +From: Sergey Matyukevich +Date: Sat, 20 May 2017 15:36:51 +0300 +Subject: [PATCH] ARM: dts: orange-pi-zero: enable spidev + +On orange-pi-zero board SPI1 pins are accessible via GPIO expansion port. +This patch enables spidev driver for SPI1. + +Signed-off-by: Sergey Matyukevich +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + .../dts/allwinner/sun8i-h2-plus-orangepi-zero.dts | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts +index 4012f8712cd7..3552eb312747 100644 +--- a/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts ++++ b/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts +@@ -59,6 +59,7 @@ aliases { + /* ethernet0 is the H3 emac, defined in sun8i-h3.dtsi */ + ethernet0 = &emac; + ethernet1 = &xr819; ++ spi1 = &spi1; + }; + + chosen { +@@ -182,6 +183,16 @@ partition@00000000 { + }; + }; + ++&spi1 { ++ status = "okay"; ++ ++ spidev@0 { ++ compatible = "rohm,dh2228fv"; ++ reg = <0>; ++ spi-max-frequency = <10000000>; ++ }; ++}; ++ + &uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_pa_pins>; +-- +2.43.0 + diff --git a/board/orangepi/orangepi-zero/patches/linux/0004-ARM-dts-orange-pi-zero-enable-uart.patch b/board/orangepi/orangepi-zero/patches/linux/0004-ARM-dts-orange-pi-zero-enable-uart.patch new file mode 100644 index 00000000..41c23209 --- /dev/null +++ b/board/orangepi/orangepi-zero/patches/linux/0004-ARM-dts-orange-pi-zero-enable-uart.patch @@ -0,0 +1,35 @@ +From e8768cc1f0f1231cbd4864417de629330e21222d Mon Sep 17 00:00:00 2001 +From: Sergey Kuzminov +Date: Sun, 21 Nov 2021 00:58:32 +0300 +Subject: [PATCH] ARM: dts: orange-pi-zero: enable uart + +Enable uart1 and uart2 on orange-pi-zero board. + +Signed-off-by: Sergey Kuzminov +--- + arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts +index f19ed981da9d..03acf166ab70 100644 +--- a/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts ++++ b/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts +@@ -184,13 +184,13 @@ &uart0 { + &uart1 { + pinctrl-names = "default"; + pinctrl-0 = <&uart1_pins>; +- status = "disabled"; ++ status = "okay"; + }; + + &uart2 { + pinctrl-names = "default"; + pinctrl-0 = <&uart2_pins>; +- status = "disabled"; ++ status = "okay"; + }; + + &usb_otg { +-- +2.32.0 + diff --git a/board/orangepi/orangepi-zero/readme.txt b/board/orangepi/orangepi-zero/readme.txt new file mode 100644 index 00000000..1afdbb78 --- /dev/null +++ b/board/orangepi/orangepi-zero/readme.txt @@ -0,0 +1,29 @@ +OrangePi Zero + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the OrangePi Zero. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make orangepi_zero_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/board/orangepi/orangepi-zero2w/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/orangepi/orangepi-zero2w/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 00000000..8b3df439 --- /dev/null +++ b/board/orangepi/orangepi-zero2w/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 7efa89e1b4e4106ee05d68e876c8efbb146364d89cfd5d26bf4647b09c08f32b arm-trusted-firmware-v2.10-git4.tar.gz diff --git a/board/orangepi/orangepi-zero2w/patches/linux-headers/linux-headers.hash b/board/orangepi/orangepi-zero2w/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/orangepi/orangepi-zero2w/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/orangepi/orangepi-zero2w/patches/linux/linux.hash b/board/orangepi/orangepi-zero2w/patches/linux/linux.hash new file mode 100644 index 00000000..5a6f308c --- /dev/null +++ b/board/orangepi/orangepi-zero2w/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9e723232d603ab45ebf043c34714c48f277ab195c29abcb8472f2a4c3a5a1995 linux-6.8.6.tar.xz diff --git a/board/orangepi/orangepi-zero2w/patches/uboot/uboot.hash b/board/orangepi/orangepi-zero2w/patches/uboot/uboot.hash new file mode 100644 index 00000000..97a2b4ea --- /dev/null +++ b/board/orangepi/orangepi-zero2w/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/board/orangepi/orangepi-zero2w/readme.txt b/board/orangepi/orangepi-zero2w/readme.txt new file mode 100644 index 00000000..84796579 --- /dev/null +++ b/board/orangepi/orangepi-zero2w/readme.txt @@ -0,0 +1,32 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the OrangePi Zero2W. Current configuration will +bring-up the board and allow access through the serial console. + +Orangepi Zero 2W links: +- http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-Zero-2W.html +- https://linux-sunxi.org/Xunlong_Orange_Pi_Zero2W + +How to build +============ + + $ make orangepi_zero2w_defconfig + $ make + +Note: you will need access to the internet to download the required sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Orangepi Zero2W and power it up. The console +is on the serial line, 115200 8N1. diff --git a/board/orangepi/orangepi-zero3/readme.txt b/board/orangepi/orangepi-zero3/readme.txt new file mode 100644 index 00000000..4872a363 --- /dev/null +++ b/board/orangepi/orangepi-zero3/readme.txt @@ -0,0 +1,34 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Orangepi Zero3. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Orangepi Zero3 link: +http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-Zero-3.html + +This configuration uses Orangepi's fork of U-Boot and Linux kernel. + +How to build +============ + + $ make orangepi_zero3_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Orangepi Zero3 and power it up. The console +is on the serial line, 115200 8N1. diff --git a/board/pc/genimage-bios.cfg b/board/pc/genimage-bios.cfg new file mode 100644 index 00000000..54026f65 --- /dev/null +++ b/board/pc/genimage-bios.cfg @@ -0,0 +1,23 @@ +image disk.img { + hdimage { + } + + partition boot { + in-partition-table = "no" + image = "boot.img" + offset = 0 + size = 512 + holes = {"(440; 512)"} + } + + partition grub { + in-partition-table = "no" + image = "grub.img" + offset = 512 + } + + partition root { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/board/pc/genimage-efi.cfg b/board/pc/genimage-efi.cfg new file mode 100644 index 00000000..c231e1b9 --- /dev/null +++ b/board/pc/genimage-efi.cfg @@ -0,0 +1,32 @@ +image efi-part.vfat { + vfat { + file EFI { + image = "efi-part/EFI" + } + + file bzImage { + image = "bzImage" + } + } + + size = 16352K # 16MB - 32KB +} + +image disk.img { + hdimage { + partition-table-type = "gpt" + } + + partition boot { + image = "efi-part.vfat" + partition-type-uuid = U + offset = 32K + bootable = true + } + + partition root { + partition-type-uuid = 44479540-f297-41b2-9af7-d131d5f0458a + partition-uuid = UUID_TMP + image = "rootfs.ext2" + } +} diff --git a/board/pc/grub-bios.cfg b/board/pc/grub-bios.cfg new file mode 100644 index 00000000..bd3e3f00 --- /dev/null +++ b/board/pc/grub-bios.cfg @@ -0,0 +1,6 @@ +set default="0" +set timeout="5" + +menuentry "Buildroot" { + linux /boot/bzImage root=/dev/sda1 rootwait console=tty1 +} diff --git a/board/pc/grub-efi.cfg b/board/pc/grub-efi.cfg new file mode 100644 index 00000000..bd446664 --- /dev/null +++ b/board/pc/grub-efi.cfg @@ -0,0 +1,6 @@ +set default="0" +set timeout="5" + +menuentry "Buildroot" { + linux /bzImage root=PARTUUID=UUID_TMP rootwait console=tty1 +} diff --git a/board/pc/linux.config b/board/pc/linux.config new file mode 100644 index 00000000..43b15c94 --- /dev/null +++ b/board/pc/linux.config @@ -0,0 +1,89 @@ +CONFIG_SYSVIPC=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_SMP=y +CONFIG_HYPERVISOR_GUEST=y +CONFIG_PARAVIRT=y +CONFIG_EFI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_NETFILTER=y +CONFIG_IP_NF_IPTABLES=y +CONFIG_IP_NF_FILTER=y +CONFIG_CFG80211=m +CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211=m +CONFIG_PCI=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_VIRTIO_BLK=y +CONFIG_BLK_DEV_SD=y +CONFIG_SCSI_VIRTIO=y +CONFIG_ATA=y +CONFIG_ATA_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_VIRTIO_NET=y +CONFIG_ATL2=m +CONFIG_ATL1=m +CONFIG_ATL1E=m +CONFIG_ATL1C=m +CONFIG_ALX=m +CONFIG_E100=m +CONFIG_E1000=m +CONFIG_E1000E=m +CONFIG_IGB=m +CONFIG_NE2K_PCI=y +CONFIG_8139CP=y +CONFIG_R8169=m +CONFIG_ATH9K=m +CONFIG_ATH9K_HTC=m +CONFIG_CARL9170=m +CONFIG_ATH10K=m +CONFIG_ATH10K_PCI=m +CONFIG_IWL4965=m +CONFIG_IWL3945=m +CONFIG_IWLWIFI=m +CONFIG_RT2X00=m +CONFIG_RT2800PCI=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT3573=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +# CONFIG_RTL_CARDS is not set +CONFIG_RTL8XXXU=m +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_DRM=y +CONFIG_DRM_I915=y +CONFIG_DRM_QXL=y +CONFIG_DRM_BOCHS=y +CONFIG_DRM_VIRTIO_GPU=y +CONFIG_FB=y +CONFIG_FIRMWARE_EDID=y +CONFIG_FB_VESA=y +CONFIG_FB_EFI=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_HDA_INTEL=y +CONFIG_SND_HDA_GENERIC=y +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_STORAGE=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_INPUT=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_EXT4_FS=y +CONFIG_FUSE_FS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_SQUASHFS=y +CONFIG_UNWINDER_FRAME_POINTER=y diff --git a/board/pc/post-build.sh b/board/pc/post-build.sh new file mode 100755 index 00000000..c76dee26 --- /dev/null +++ b/board/pc/post-build.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +set -e + +BOARD_DIR=$(dirname "$0") + +# Detect boot strategy, EFI or BIOS +if [ -d "$BINARIES_DIR/efi-part/" ]; then + cp -f "$BOARD_DIR/grub-efi.cfg" "$BINARIES_DIR/efi-part/EFI/BOOT/grub.cfg" +else + cp -f "$BOARD_DIR/grub-bios.cfg" "$TARGET_DIR/boot/grub/grub.cfg" + + # Copy grub 1st stage to binaries, required for genimage + cp -f "$TARGET_DIR/lib/grub/i386-pc/boot.img" "$BINARIES_DIR" +fi diff --git a/board/pc/post-image-efi.sh b/board/pc/post-image-efi.sh new file mode 100755 index 00000000..a0df70a6 --- /dev/null +++ b/board/pc/post-image-efi.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +set -e + +UUID=$(dumpe2fs "$BINARIES_DIR/rootfs.ext2" 2>/dev/null | sed -n 's/^Filesystem UUID: *\(.*\)/\1/p') +sed -i "s/UUID_TMP/$UUID/g" "$BINARIES_DIR/efi-part/EFI/BOOT/grub.cfg" +sed "s/UUID_TMP/$UUID/g" board/pc/genimage-efi.cfg > "$BINARIES_DIR/genimage-efi.cfg" +support/scripts/genimage.sh -c "$BINARIES_DIR/genimage-efi.cfg" diff --git a/board/pc/readme.txt b/board/pc/readme.txt new file mode 100644 index 00000000..41aec50d --- /dev/null +++ b/board/pc/readme.txt @@ -0,0 +1,72 @@ +Bare PC sample config +===================== + +1. Build + + First select the appropriate target you want. + + For BIOS-based boot strategy: + + $ make pc_x86_64_bios_defconfig + + For EFI-based boot strategy on a GPT-partitioned disk: + + $ make pc_x86_64_efi_defconfig + + Add any additional packages required and build: + + $ make + +2. Write the pendrive + + The build process will create a pendrive image called sdcard.img in + output/images. + + Write the image to a pendrive: + + $ dd if=output/images/disk.img of=/dev/sdc; sync + + Once it's done insert it into the target PC and boot. + + Remember that if said PC has another boot device you might need to + select this alternative for it to boot. + + In the case of EFI boot you might need to disable Secure Boot from + the setup as well. + +3. Enjoy + +Emulation in qemu (BIOS) +======================== + +1. Edit grub-bios.cfg + + Since the driver will show up in the virtual machine as /dev/vda, + change board/pc/grub-bios.cfg to use root=/dev/vda2 instead of + root=/dev/sda2. Then rebuild grub2 and the image. + +2. Run the emulation with: + +qemu-system-x86_64 \ + -M pc \ + -drive file=output/images/disk.img,if=virtio,format=raw \ + -net nic,model=virtio \ + -net user + + +Emulation in qemu (UEFI) +======================== + +Run the emulation with: + +qemu-system-x86_64 \ + -M pc \ + -bios \ + -drive file=output/images/disk.img,if=virtio,format=raw \ + -net nic,model=virtio \ + -net user + +Note that needs to point to a valid x86_64 UEFI +firmware image for qemu. It may be provided by your distribution as a +edk2 or OVMF package, in path such as +/usr/share/edk2/ovmf/OVMF_CODE.fd . diff --git a/board/pcengines/apu2/isolinux.cfg b/board/pcengines/apu2/isolinux.cfg new file mode 100644 index 00000000..cb19b5a8 --- /dev/null +++ b/board/pcengines/apu2/isolinux.cfg @@ -0,0 +1,6 @@ +serial 0 115200 +default 1 +label 1 + kernel __KERNEL_PATH__ + initrd __INITRD_PATH__ + append root=/dev/sr0 console=ttyS0,115200n8 diff --git a/board/pcengines/apu2/linux.config b/board/pcengines/apu2/linux.config new file mode 100644 index 00000000..5e3593b0 --- /dev/null +++ b/board/pcengines/apu2/linux.config @@ -0,0 +1,51 @@ +CONFIG_SYSVIPC=y +CONFIG_CGROUPS=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_SMP=y +CONFIG_HYPERVISOR_GUEST=y +CONFIG_PARAVIRT=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_WIRELESS is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_VIRTIO_BLK=y +CONFIG_BLK_DEV_SD=y +CONFIG_SCSI_VIRTIO=y +CONFIG_ATA=y +CONFIG_SATA_AHCI=y +CONFIG_ATA_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_VIRTIO_NET=y +CONFIG_IGB=y +CONFIG_NE2K_PCI=y +CONFIG_8139CP=y +# CONFIG_WLAN is not set +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_DRM=y +CONFIG_SOUND=y +CONFIG_SND=y +# CONFIG_SND_PCI is not set +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_STORAGE=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_INPUT=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_EXT4_FS=y +CONFIG_AUTOFS4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_UNWINDER_FRAME_POINTER=y diff --git a/board/pcengines/apu2/readme.txt b/board/pcengines/apu2/readme.txt new file mode 100644 index 00000000..9da1b802 --- /dev/null +++ b/board/pcengines/apu2/readme.txt @@ -0,0 +1,40 @@ +Intro +===== + +This is a board configuration for the apu2 platform by PC Engines. + +https://pcengines.ch/apu2.htm + +Since the apu2 does not have any graphical output, the default configuration +will ensure that the kernel output as well as the login prompt will be sent to +the serial port. + +How to build +============ + +The provided defconfig creates a hybrid isolinux image that can be booted from +either an USB stick or a CD. + + $ make pcengines_apu2_defconfig + $ make + +How to write to an USB stick +============================ + +Once the build process is finished you will have an image +called "rootfs.iso9660" in the output/images/ directory. + +Copy the bootable "rootfs.iso9660" onto the USB stick with "dd": + + $ sudo dd if=output/images/rootfs.iso9660 of=/dev/sdX bs=1M conv=fsync + $ sudo sync + +How to connect to the apu2 +========================== + +Connect to the DB9 serial port of the apu2 board (either directly or through a +USB adapter) with a baudrate of 115200. + +For example with miniterm (part of pyserial): + + $ miniterm.py -f direct /dev/ttyUSB0 115200 diff --git a/board/pine64/pine64/boot.cmd b/board/pine64/pine64/boot.cmd new file mode 100644 index 00000000..14f56104 --- /dev/null +++ b/board/pine64/pine64/boot.cmd @@ -0,0 +1,6 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r Image +fatload mmc 0 $fdt_addr_r sun50i-a64-pine64.dtb + +booti $kernel_addr_r - $fdt_addr_r diff --git a/board/pine64/pine64/genimage.cfg b/board/pine64/pine64/genimage.cfg new file mode 100644 index 00000000..06b4ed10 --- /dev/null +++ b/board/pine64/pine64/genimage.cfg @@ -0,0 +1,40 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-a64-pine64.dtb", + "boot.scr" + } + } + + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "sunxi-spl.bin" + offset = 8K + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 40K + size = 1M # 1MB - 40KB + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/pine64/pine64/readme.txt b/board/pine64/pine64/readme.txt new file mode 100644 index 00000000..85226fdd --- /dev/null +++ b/board/pine64/pine64/readme.txt @@ -0,0 +1,38 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Pine64. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Pine64 link: +https://www.pine64.org/?page_id=1194 + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Pine64 + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make pine64_defconfig + + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Pine64 and power it up. The console +is on the serial line, 115200 8N1. diff --git a/board/pine64/pinecube/extlinux.conf b/board/pine64/pinecube/extlinux.conf new file mode 100644 index 00000000..6a18d9a2 --- /dev/null +++ b/board/pine64/pinecube/extlinux.conf @@ -0,0 +1,4 @@ +label buildroot + kernel /zImage + devicetree /sun8i-s3-pinecube.dtb + append console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait rw diff --git a/board/pine64/pinecube/genimage.cfg b/board/pine64/pinecube/genimage.cfg new file mode 100644 index 00000000..398d45e2 --- /dev/null +++ b/board/pine64/pinecube/genimage.cfg @@ -0,0 +1,34 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-s3-pinecube.dtb", + "extlinux" + } + } + + size = 8M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + size = 504K # 512KB - 8KB + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/pine64/pinecube/post-build.sh b/board/pine64/pinecube/post-build.sh new file mode 100755 index 00000000..8dae08a4 --- /dev/null +++ b/board/pine64/pinecube/post-build.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +BOARD_DIR="$(dirname "$0")" + +install -m 0644 -D "$BOARD_DIR"/extlinux.conf "$BINARIES_DIR"/extlinux/extlinux.conf diff --git a/board/pine64/pinecube/readme.txt b/board/pine64/pinecube/readme.txt new file mode 100644 index 00000000..4cf6df21 --- /dev/null +++ b/board/pine64/pinecube/readme.txt @@ -0,0 +1,31 @@ +Intro +===== + +This directory contains a Buildroot configuration for building a +Pine64 PineCube. + +Board homepage: https://www.pine64.org/cube/ +Board wiki: https://wiki.pine64.org/wiki/PineCube + +How to build it +=============== + + $ make pine64_pinecube_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your PineCube and power it up. The console +is on the serial port 2, 115200 8N1 (check Wiki for board pinout). diff --git a/board/pine64/rock64/extlinux.conf b/board/pine64/rock64/extlinux.conf new file mode 100644 index 00000000..bf71982a --- /dev/null +++ b/board/pine64/rock64/extlinux.conf @@ -0,0 +1,4 @@ +label rock64-buildroot + kernel /boot/Image + devicetree /boot/rk3328-rock64.dtb + append console=ttyS2,1500000n8 root=/dev/mmcblk0p1 ro rootwait diff --git a/board/pine64/rock64/genimage.cfg b/board/pine64/rock64/genimage.cfg new file mode 100644 index 00000000..7b749d1d --- /dev/null +++ b/board/pine64/rock64/genimage.cfg @@ -0,0 +1,23 @@ +image sdcard.img { + hdimage { + } + + partition uboot-spl { + in-partition-table = "no" + image = "u-boot-tpl-spl.img" + offset = 32K # 512 * 0x40 from start of sd card + } + + partition uboot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 256K # 512 * 0x200 from start of sd card + } + + partition rootfs { + partition-type = 0x83 + bootable = "yes" + image = "rootfs.ext2" + size = 500M + } +} diff --git a/board/pine64/rock64/patches/uboot/0001-Makefile-rk3328-needs-itb-image-to-boot-properly.patch b/board/pine64/rock64/patches/uboot/0001-Makefile-rk3328-needs-itb-image-to-boot-properly.patch new file mode 100644 index 00000000..7c847360 --- /dev/null +++ b/board/pine64/rock64/patches/uboot/0001-Makefile-rk3328-needs-itb-image-to-boot-properly.patch @@ -0,0 +1,34 @@ +From d312c4e40bf816823bdcfd066dd2511b23e83c9c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20=C5=81yszczek?= +Date: Tue, 5 Feb 2019 22:08:54 +0100 +Subject: [PATCH] Makefile: rk3328 needs itb image to boot properly +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Michał Łyszczek +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + Makefile | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/Makefile b/Makefile +index 149f83994814..ebbdf2596b9b 100644 +--- a/Makefile ++++ b/Makefile +@@ -923,6 +923,11 @@ ifeq ($(CONFIG_SYS_COREBOOT)$(CONFIG_SPL),yy) + ALL-$(CONFIG_BINMAN) += u-boot-x86-with-spl.bin + endif + ++# rk3328 needs itb image to boot properly ++ifeq ($(CONFIG_ROCKCHIP_RK3328),y) ++ALL-y += u-boot.itb ++endif ++ + # Build a combined spl + u-boot image for sunxi + ifeq ($(CONFIG_ARCH_SUNXI)$(CONFIG_SPL),yy) + ALL-y += u-boot-sunxi-with-spl.bin +-- +2.43.0 + diff --git a/board/pine64/rock64/post-build.sh b/board/pine64/rock64/post-build.sh new file mode 100755 index 00000000..26b53cba --- /dev/null +++ b/board/pine64/rock64/post-build.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +MKIMAGE=$HOST_DIR/bin/mkimage +BOARD_DIR="$(dirname $0)" + +$MKIMAGE -n rk3328 -T rksd -d $BINARIES_DIR/u-boot-tpl.bin $BINARIES_DIR/u-boot-tpl.img +cat $BINARIES_DIR/u-boot-tpl.img $BINARIES_DIR/u-boot-spl.bin > $BINARIES_DIR/u-boot-tpl-spl.img + +install -m 0644 -D $BOARD_DIR/extlinux.conf $TARGET_DIR/boot/extlinux/extlinux.conf diff --git a/board/pine64/rock64/readme.txt b/board/pine64/rock64/readme.txt new file mode 100644 index 00000000..029c6764 --- /dev/null +++ b/board/pine64/rock64/readme.txt @@ -0,0 +1,95 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Rock64. With this default configuration you +can log in into board via uart and look around. + +Board homepage: https://www.pine64.org/?page_id=7147 + +Build +===== + +First, load rock64 config for buildroot + + $ make rock64_defconfig + +Optionally make changes to buildroot config (to install more programs) + + $ make menuconfig + +And then build everything + + $ make + +When completed, following files will be generated in output/images directory: + + . + ├── Image + ├── bl31.bin + ├── bl31.elf + ├── rk3328-rock64.dtb + ├── rootfs.ext2 + ├── rootfs.ext4 -> rootfs.ext2 + ├── rootfs.tar + ├── sdcard.img + ├── u-boot-spl.bin + ├── u-boot-tpl-spl.img + ├── u-boot-tpl.bin + ├── u-boot-tpl.img + ├── u-boot.bin + └── u-boot.itb + +Creating bootable SD card +========================= + +!!! THIS COMMAND MAY WIPE YOUR DISK! +!!! MAKE SURE YOU PASSED CORRECT DEVICE! +!!! OR IT THIS WILL WIPE YOUR DISK! + +Simply invoke (as root) + + # dd if=output/images/sdcard.img of=/dev/sdX && sync + +Where X is your SD card device (not partition), of= argument may also be +/dev/mmcblk0 if you are using built-in sd card reader. + +Runtime +======= + +Login +----- + +By default, buildroot has no password, just type 'root' as login user, and +you will be logged in. + +Serial console +-------------- + +Serial console needs to be connected to pins (into 40pin rpi compatible part) + +pin 6: gnd +pin 8: tx +pin 10: rx + +Pin numbers are printed on board. + +Uart configuration is not standard. Rock64 uses 1500000 (1,5M) baudrate +with standard 8n1. + +Ethernet +-------- + +To enable ethernet you need to load modules for it: + +# modprobe stmmac +# modprobe dwmac-rk + +and since by default there is no dhcp installed, you need to configure ip +address, remember to change address to fit your network. + +# ifconfig eth0 up +# ip addr add 10.1.1.180/24 dev eth0 +# ping 10.1.1.1 +PING 10.1.1.1 (10.1.1.1): 56 data bytes +64 bytes from 10.1.1.1: seq=0 ttl=64 time=0.695 ms diff --git a/board/pine64/rockpro64/extlinux.conf b/board/pine64/rockpro64/extlinux.conf new file mode 100644 index 00000000..83467ef4 --- /dev/null +++ b/board/pine64/rockpro64/extlinux.conf @@ -0,0 +1,4 @@ +label RK3399_ROCKPRO64 linux + kernel /Image + devicetree /rk3399-rockpro64.dtb + append earlycon=uart8250,mmio32,0xff1a0000 root=/dev/mmcblk1p4 rw rootwait diff --git a/board/pine64/rockpro64/genimage.cfg b/board/pine64/rockpro64/genimage.cfg new file mode 100644 index 00000000..94fa2f7c --- /dev/null +++ b/board/pine64/rockpro64/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "Image", + "rk3399-rockpro64.dtb", + "extlinux" + } + } + + size = 64M +} + +image sdcard.img { + hdimage { + partition-table-type = "gpt" + } + + partition loader1 { + image = "idbloader.img" + offset = 32K + } + + partition loader2 { + image = "u-boot.itb" + offset = 8M + } + + partition boot { + partition-type-uuid = F + bootable = "true" + image = "boot.vfat" + offset = 16M + } + + partition rootfs { + partition-type-uuid = b921b045-1df0-41c3-af44-4c6f280d3fae + image = "rootfs.ext4" + } +} diff --git a/board/pine64/rockpro64/linux.fragment b/board/pine64/rockpro64/linux.fragment new file mode 100644 index 00000000..ed7dfd3d --- /dev/null +++ b/board/pine64/rockpro64/linux.fragment @@ -0,0 +1,3 @@ +CONFIG_STMMAC_ETH=y +CONFIG_STMMAC_PLATFORM=y +CONFIG_DWMAC_ROCKCHIP=y diff --git a/board/pine64/rockpro64/post-build.sh b/board/pine64/rockpro64/post-build.sh new file mode 100755 index 00000000..ba29375c --- /dev/null +++ b/board/pine64/rockpro64/post-build.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +install -m 0644 -D $BOARD_DIR/extlinux.conf $BINARIES_DIR/extlinux/extlinux.conf diff --git a/board/pine64/rockpro64/readme.txt b/board/pine64/rockpro64/readme.txt new file mode 100644 index 00000000..de869701 --- /dev/null +++ b/board/pine64/rockpro64/readme.txt @@ -0,0 +1,60 @@ +PINE64 ROCKPro64 +================ +https://www.pine64.org/rockpro64/ + +Build: +====== + $ make rockpro64_defconfig + $ make + +Files created in output directory +================================= + +output/images + +├── bl31.elf +├── boot.vfat +├── extlinux +├── idbloader.img +├── Image +├── rk3399-rockpro64.dtb +├── rootfs.ext2 +├── rootfs.ext4 -> rootfs.ext2 +├── rootfs.tar +├── sdcard.img +├── u-boot.bin +└── u-boot.itb + +Creating bootable SD card: +========================== + +Simply invoke (as root) + +sudo dd if=output/images/sdcard.img of=/dev/sdX && sync + +Where X is your SD card device. + +Booting: +======== +RockPro64 has a 40-pin PI-2 GPIO Bus. + +Connect a jumper between pin 23 and pin 25 for SD card boot. + +Serial console: +--------------- +The pin layout for serial console on PI-2 GPIO Bus is as follows: + +pin 6: gnd +pin 8: tx +pin 10: rx + +Initially connect pin 6 and pin 8(transmit). Apply power to RockPro64, once the +power is on then connect pin 10(receive). + +Baudrate for this board is 1500000. + +Login: +------ +Enter 'root' as login user, and the prompt is ready. + +https://wiki.amarulasolutions.com/bsp/rockchip/rk3399/rockpro64.html diff --git a/board/pine64/sopine/boot.cmd b/board/pine64/sopine/boot.cmd new file mode 100644 index 00000000..2eab6423 --- /dev/null +++ b/board/pine64/sopine/boot.cmd @@ -0,0 +1,6 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r Image +fatload mmc 0 $fdt_addr_r sun50i-a64-sopine-baseboard.dtb + +booti $kernel_addr_r - $fdt_addr_r diff --git a/board/pine64/sopine/genimage.cfg b/board/pine64/sopine/genimage.cfg new file mode 100644 index 00000000..9300f3d6 --- /dev/null +++ b/board/pine64/sopine/genimage.cfg @@ -0,0 +1,40 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-a64-sopine-baseboard.dtb", + "boot.scr" + } + } + + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "sunxi-spl.bin" + offset = 8K + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 40K + size = 1M # 1MB - 40KB + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/pine64/sopine/readme.txt b/board/pine64/sopine/readme.txt new file mode 100644 index 00000000..08cb380b --- /dev/null +++ b/board/pine64/sopine/readme.txt @@ -0,0 +1,38 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the SoPine. With the current configuration +it will bring-up the board, and allow access through the serial console. + +SoPINE link: +https://www.pine64.org/?page_id=1491 + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/SoPine + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make pine64_sopine_defconfig + + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your SoPine and power it up. The console +is on the serial line, 115200 8N1. diff --git a/board/pine64/star64/genimage.cfg b/board/pine64/star64/genimage.cfg new file mode 100644 index 00000000..74940016 --- /dev/null +++ b/board/pine64/star64/genimage.cfg @@ -0,0 +1,24 @@ +# SD card image for the Pine64 Star64 board + +image sdcard.img { + hdimage { + partition-table-type = "gpt" + } + + partition spl { + image = "u-boot-spl.bin.normal.out" + partition-type-uuid = 2E54B353-1271-4842-806F-E436D6AF6985 + offset = 2M + } + + partition uboot { + image = "opensbi_uboot_payload.img" + partition-type-uuid = 5B193300-FC78-40CD-8002-E86C45580B47 + offset = 4M + } + + partition rootfs { + image = "rootfs.ext4" + bootable = true + } +} diff --git a/board/pine64/star64/overlay/boot/extlinux/extlinux.conf b/board/pine64/star64/overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..db7cfb7b --- /dev/null +++ b/board/pine64/star64/overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +label star64 + kernel /boot/Image + devicetree /boot/jh7110-pine64-star64.dtb + append root=/dev/mmcblk1p3 earlycon=sbi diff --git a/board/pine64/star64/post-build.sh b/board/pine64/star64/post-build.sh new file mode 100755 index 00000000..ed0a6ebd --- /dev/null +++ b/board/pine64/star64/post-build.sh @@ -0,0 +1,9 @@ +#!/bin/bash +BOARD_DIR="$CONFIG_DIR"/board/pine64/star64 + +# Add header to the SPL +"$HOST_DIR"/bin/spl_tool -c -f "$BINARIES_DIR"/u-boot-spl.bin + +# Create the u-boot FIT image +cp "$BOARD_DIR"/star64-uboot-fit-image.its "$BINARIES_DIR" +mkimage -f "$BINARIES_DIR"/star64-uboot-fit-image.its -A riscv -O u-boot -T firmware "$BINARIES_DIR"/opensbi_uboot_payload.img diff --git a/board/pine64/star64/readme.txt b/board/pine64/star64/readme.txt new file mode 100644 index 00000000..5e6ce251 --- /dev/null +++ b/board/pine64/star64/readme.txt @@ -0,0 +1,32 @@ +Pine64 Star64 +============= + +The Star64 is a low-cost RISC-V 64-bit based platform, powered by a +Starfive JH7110 processor. + +https://wiki.pine64.org/wiki/STAR64 + +How to build +============ + +$ make pine64_star64_defconfig +$ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX conv=fdatasync + +Preparing the board +=================== + +Connect a TTL UART cable to pin 6 (GND), 8 (TX) and 10 (RX). + +Insert your SD card. + +Power-up the board using a 12V power supply. diff --git a/board/pine64/star64/star64-uboot-fit-image.its b/board/pine64/star64/star64-uboot-fit-image.its new file mode 100644 index 00000000..08f60316 --- /dev/null +++ b/board/pine64/star64/star64-uboot-fit-image.its @@ -0,0 +1,29 @@ +/dts-v1/; + +/ { + description = "U-boot-spl FIT image for JH7110 Pine64 Star64"; + #address-cells = <2>; + + images { + firmware { + description = "u-boot"; + data = /incbin/("fw_payload.bin"); + type = "firmware"; + arch = "riscv"; + os = "u-boot"; + load = <0x0 0x40000000>; + entry = <0x0 0x40000000>; + compression = "none"; + }; + }; + + configurations { + default = "config-1"; + + config-1 { + description = "U-boot-spl FIT config for JH7110 Pine64 Star64"; + firmware = "firmware"; + }; + }; +}; + diff --git a/board/qemu/aarch64-ebbr/genimage.cfg b/board/qemu/aarch64-ebbr/genimage.cfg new file mode 100644 index 00000000..1ca8332b --- /dev/null +++ b/board/qemu/aarch64-ebbr/genimage.cfg @@ -0,0 +1,31 @@ +image efi-part.vfat { + vfat { + file EFI { + image = "efi-part/EFI" + } + + file Image { + image = "Image" + } + } + + size = 128M +} + +image disk.img { + hdimage { + partition-table-type = "gpt" + } + + partition boot { + image = "efi-part.vfat" + partition-type-uuid = U + offset = 32K + bootable = true + } + + partition root { + partition-type-uuid = b921b045-1df0-41c3-af44-4c6f280d3fae + image = "rootfs.ext2" + } +} diff --git a/board/qemu/aarch64-ebbr/grub.cfg b/board/qemu/aarch64-ebbr/grub.cfg new file mode 100644 index 00000000..d99e19c4 --- /dev/null +++ b/board/qemu/aarch64-ebbr/grub.cfg @@ -0,0 +1,6 @@ +set default="0" +set timeout="5" + +menuentry "Buildroot" { + linux /Image root=PARTLABEL=root rootwait +} diff --git a/board/qemu/aarch64-ebbr/post-image.sh b/board/qemu/aarch64-ebbr/post-image.sh new file mode 100755 index 00000000..c884a8b6 --- /dev/null +++ b/board/qemu/aarch64-ebbr/post-image.sh @@ -0,0 +1,11 @@ +#!/bin/sh +set -eu + +BOARD_DIR=$(dirname "$0") + +# Create flash.bin TF-A FIP image from bl1.bin and fip.bin +dd if="${BINARIES_DIR}/bl1.bin" of="${BINARIES_DIR}/flash.bin" bs=1M +dd if="${BINARIES_DIR}/fip.bin" of="${BINARIES_DIR}/flash.bin" seek=64 bs=4096 conv=notrunc + +# Override the default GRUB configuration file with our own. +cp -f "${BOARD_DIR}/grub.cfg" "${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg" diff --git a/board/qemu/aarch64-ebbr/readme.txt b/board/qemu/aarch64-ebbr/readme.txt new file mode 100644 index 00000000..15353a8f --- /dev/null +++ b/board/qemu/aarch64-ebbr/readme.txt @@ -0,0 +1,101 @@ +Introduction +============ + +The qemu_aarch64_ebbr_defconfig is meant to illustrate some aspects of the Arm +EBBR specification[1] and the Arm SystemReady IR[2] compliance program. +It allows building an AArch64 U-Boot based firmware implementing the subset of +UEFI defined by EBBR, as well as a Linux OS disk image booting with UEFI, to run +on Qemu. + +Building +======== + + $ make qemu_aarch64_ebbr_defconfig + $ make + +Generated files under output/images: + +* flash.bin: A firmware image comprising TF-A, OP-TEE and the U-Boot bootloader. + +* disk.img: An OS disk image comprising the GRUB bootloader, the Linux kernel + and the root filesystem. + +Running under Qemu +================== + +Run the emulation with: + + qemu-system-aarch64 \ + -M virt,secure=on,acpi=off \ + -bios output/images/flash.bin \ + -cpu cortex-a53 \ + -device virtio-blk-device,drive=hd0 \ + -device virtio-net-device,netdev=eth0 \ + -device virtio-rng-device,rng=rng0 \ + -drive file=output/images/disk.img,if=none,format=raw,id=hd0 \ + -m 2048 \ + -netdev user,id=eth0 \ + -nographic \ + -object rng-random,filename=/dev/urandom,id=rng0 \ + -rtc base=utc,clock=host \ + -smp 2 # qemu_aarch64_ebbr_defconfig + +The login prompt will appear in the terminal that started Qemu. + +Using the EBBR firmware to run another OS under Qemu +---------------------------------------------------- + +It is possible to use the generated firmware binary to install or run another OS +supporting the EBBR specification. + +To run another OS on emulation using a live or pre-installed image, use the same +Qemu command line as for the generated OS but adapt the OS image path in the +-drive stanza. +The image generated by the aarch64_efi_defconfig or the Arm ACS-IR images[3] are +examples of pre-installed OS images. + +To install another OS using an installer iso image, prepare a destination disk +image first with: + + qemu-img create -f qcow2 disk.qcow2 10G + +Then run the OS installer iso image on emulation with: + + qemu-system-aarch64 \ + -M virt,secure=on,acpi=off \ + -bios output/images/flash.bin \ + -cpu cortex-a53 \ + -device virtio-blk-device,drive=hd1 \ + -device virtio-blk-device,drive=hd0 \ + -device virtio-net-device,netdev=eth0 \ + -device virtio-rng-device,rng=rng0 \ + -drive file=,if=none,format=raw,readonly=on,id=hd0 \ + -drive file=disk.qcow2,if=none,id=hd1 \ + -m 2048 \ + -netdev user,id=eth0 \ + -nographic \ + -object rng-random,filename=/dev/urandom,id=rng0 \ + -rtc base=utc,clock=host \ + -smp 2 + +The installation medium will show up under the Linux OS installer as /dev/vda +and the destination disk as /dev/vdb. +To reboot into the installed OS, use the same Qemu command line as for the +installation, but without the two stanzas +referring to hd0. +Linux distributions such as Debian, Fedora, openSUSE or Ubuntu provide an OS +installer iso image. + +Miscellaneous +============= + +This configuration is inspired by the qemu_aarch64_virt_defconfig, the +aarch64_efi_defconfig and the Arm SystemReady IR IoT Integration, Test, and +Certification Guide[4]. + +Firmware update is currently not supported. + +[1]: https://github.com/ARM-software/ebbr +[2]: https://developer.arm.com/Architectures/Arm%20SystemReady%20IR +[3]: https://github.com/ARM-software/arm-systemready/tree/main/IR/prebuilt_images +[4]: https://developer.arm.com/documentation/DUI1101/latest/ diff --git a/board/qemu/aarch64-ebbr/u-boot.fragment b/board/qemu/aarch64-ebbr/u-boot.fragment new file mode 100644 index 00000000..94aae9d2 --- /dev/null +++ b/board/qemu/aarch64-ebbr/u-boot.fragment @@ -0,0 +1,34 @@ +CONFIG_BOOTM_EFI=y +CONFIG_CMD_BOOTEFI=y +CONFIG_CMD_BOOTEFI_HELLO=y +CONFIG_CMD_BOOTEFI_HELLO_COMPILE=y +CONFIG_CMD_BOOTEFI_SELFTEST=y +CONFIG_CMD_EFIDEBUG=y +CONFIG_CMD_EFI_VARIABLE_FILE_STORE=y +CONFIG_CMD_GPT=y +CONFIG_CMD_NVEDIT_EFI=y +CONFIG_CMD_RNG=y +CONFIG_CMD_RTC=y +CONFIG_DM_RTC=y +CONFIG_EFI_DEVICE_PATH_TO_TEXT=y +CONFIG_EFI_GET_TIME=y +CONFIG_EFI_HAVE_RUNTIME_RESET=y +CONFIG_EFI_LOADER=y +CONFIG_EFI_LOADER_HII=y +CONFIG_EFI_MM_COMM_TEE=y +CONFIG_EFI_PARTITION=y +CONFIG_EFI_SECURE_BOOT=y +CONFIG_EFI_SET_TIME=y +CONFIG_EFI_UNICODE_CAPITALIZATION=y +CONFIG_EFI_UNICODE_COLLATION_PROTOCOL2=y +CONFIG_EFI_VARIABLE_FILE_STORE=y +CONFIG_FAT_WRITE=y +CONFIG_FIT=y +CONFIG_FS_FAT=y +CONFIG_OF_LIBFDT=y +CONFIG_OPTEE=y +CONFIG_PARTITION_TYPE_GUID=y +CONFIG_RNG_OPTEE=y +CONFIG_RTC_EMULATION=y +CONFIG_SCMI_FIRMWARE=y +CONFIG_TEE=y diff --git a/board/qemu/aarch64-sbsa/assemble-flash-images b/board/qemu/aarch64-sbsa/assemble-flash-images new file mode 100755 index 00000000..abcc276b --- /dev/null +++ b/board/qemu/aarch64-sbsa/assemble-flash-images @@ -0,0 +1,11 @@ +#!/bin/bash + +set -e + +BOARD_DIR="$(dirname $0)" + +cp -f ${BOARD_DIR}/grub.cfg ${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg + +# The QEMU sbsa machine expects flash devices to be 256M. +truncate -s 256M ${BINARIES_DIR}/SBSA_FLASH0.fd +truncate -s 256M ${BINARIES_DIR}/SBSA_FLASH1.fd diff --git a/board/qemu/aarch64-sbsa/genimage.cfg b/board/qemu/aarch64-sbsa/genimage.cfg new file mode 100644 index 00000000..e7ac7f2e --- /dev/null +++ b/board/qemu/aarch64-sbsa/genimage.cfg @@ -0,0 +1,31 @@ +image efi-part.vfat { + vfat { + file EFI { + image = "efi-part/EFI" + } + + file Image { + image = "Image" + } + } + + size = 64M +} + +image disk.img { + hdimage { + partition-table-type = "gpt" + } + + partition boot { + image = "efi-part.vfat" + partition-type-uuid = U + offset = 32K + bootable = true + } + + partition root { + partition-type-uuid = b921b045-1df0-41c3-af44-4c6f280d3fae + image = "rootfs.ext2" + } +} diff --git a/board/qemu/aarch64-sbsa/grub.cfg b/board/qemu/aarch64-sbsa/grub.cfg new file mode 100644 index 00000000..d99e19c4 --- /dev/null +++ b/board/qemu/aarch64-sbsa/grub.cfg @@ -0,0 +1,6 @@ +set default="0" +set timeout="5" + +menuentry "Buildroot" { + linux /Image root=PARTLABEL=root rootwait +} diff --git a/board/qemu/aarch64-sbsa/readme.txt b/board/qemu/aarch64-sbsa/readme.txt new file mode 100644 index 00000000..cf5f66d4 --- /dev/null +++ b/board/qemu/aarch64-sbsa/readme.txt @@ -0,0 +1,32 @@ +Intro +===== + +The QEMU sbsa-ref machine is primarily meant for firmware development +and testing according to ARM's SBSA and SBBR standards. + +Build +===== + + $ make qemu_aarch64_sbsa_defconfig + $ make + +Emulation +========= + +Run the emulation with: + + qemu-system-aarch64 \ + -M sbsa-ref \ + -cpu cortex-a57 \ + -smp 4 \ + -m 1024 \ + -nographic \ + -pflash output/images/SBSA_FLASH0.fd \ + -pflash output/images/SBSA_FLASH1.fd \ + -hda output/images/disk.img # qemu_aarch64_sbsa_defconfig + +Note that if you want to run sbsa-ref emulation with QEMU provided by +your distro (i.e., not host-qemu by Buildroot) then you may need to +install the SeaBIOS package for some required drivers. On Debian: + + # apt install seabios diff --git a/board/qemu/aarch64-virt/linux.config b/board/qemu/aarch64-virt/linux.config new file mode 100644 index 00000000..971b9fcf --- /dev/null +++ b/board/qemu/aarch64-virt/linux.config @@ -0,0 +1,76 @@ +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_NO_HZ_IDLE=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_TASKSTATS=y +CONFIG_MEMCG=y +CONFIG_BLK_CGROUP=y +CONFIG_CPUSETS=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_PROFILING=y +CONFIG_ARCH_VEXPRESS=y +CONFIG_COMPAT=y +CONFIG_ACPI=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_BLK_DEV_BSGLIB=y +CONFIG_BINFMT_MISC=y +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_PACKET_DIAG=y +CONFIG_UNIX=y +CONFIG_NET_KEY=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_BRIDGE=m +CONFIG_NET_SCHED=y +CONFIG_VSOCKETS=y +CONFIG_PCI=y +CONFIG_PCI_HOST_GENERIC=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_FW_CFG_SYSFS=y +CONFIG_FW_CFG_SYSFS_CMDLINE=y +CONFIG_VIRTIO_BLK=y +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_SG=y +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SCSI_VIRTIO=y +CONFIG_ATA=y +CONFIG_NETDEVICES=y +CONFIG_DUMMY=y +CONFIG_MACVLAN=y +CONFIG_VIRTIO_NET=y +CONFIG_NLMON=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_VIRTIO=y +CONFIG_TCG_TPM=y +CONFIG_TCG_TIS=y +CONFIG_DRM=y +CONFIG_DRM_VIRTIO_GPU=y +CONFIG_FB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_PL031=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_INPUT=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_MAILBOX=y +CONFIG_PL320_MBOX=y +CONFIG_ARM_SMMU_V3=y +CONFIG_EXT4_FS=y +CONFIG_FUSE_FS=y +CONFIG_VIRTIO_FS=y +CONFIG_OVERLAY_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/board/qemu/aarch64-virt/readme.txt b/board/qemu/aarch64-virt/readme.txt new file mode 100644 index 00000000..db35a3a7 --- /dev/null +++ b/board/qemu/aarch64-virt/readme.txt @@ -0,0 +1,5 @@ +Run the emulation with: + + qemu-system-aarch64 -M virt -cpu cortex-a53 -nographic -smp 1 -kernel output/images/Image -append "rootwait root=/dev/vda console=ttyAMA0" -netdev user,id=eth0 -device virtio-net-device,netdev=eth0 -drive file=output/images/rootfs.ext4,if=none,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 # qemu_aarch64_virt_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/board/qemu/arm-ebbr/genimage.cfg b/board/qemu/arm-ebbr/genimage.cfg new file mode 100644 index 00000000..3d4c9cff --- /dev/null +++ b/board/qemu/arm-ebbr/genimage.cfg @@ -0,0 +1,31 @@ +image efi-part.vfat { + vfat { + file EFI { + image = "efi-part/EFI" + } + + file zImage { + image = "zImage" + } + } + + size = 128M +} + +image disk.img { + hdimage { + partition-table-type = "gpt" + } + + partition boot { + image = "efi-part.vfat" + partition-type-uuid = U + offset = 32K + bootable = true + } + + partition root { + partition-type-uuid = 69dad710-2ce4-4e3c-b16c-21a1d49abed3 + image = "rootfs.ext2" + } +} diff --git a/board/qemu/arm-ebbr/grub.cfg b/board/qemu/arm-ebbr/grub.cfg new file mode 100644 index 00000000..ab3a6ec2 --- /dev/null +++ b/board/qemu/arm-ebbr/grub.cfg @@ -0,0 +1,6 @@ +set default="0" +set timeout="5" + +menuentry "Buildroot" { + linux /zImage root=PARTLABEL=root rootwait +} diff --git a/board/qemu/arm-ebbr/linux.fragment b/board/qemu/arm-ebbr/linux.fragment new file mode 100644 index 00000000..07554cf8 --- /dev/null +++ b/board/qemu/arm-ebbr/linux.fragment @@ -0,0 +1,2 @@ +CONFIG_TEE=y +CONFIG_OPTEE=y diff --git a/board/qemu/arm-ebbr/post-image.sh b/board/qemu/arm-ebbr/post-image.sh new file mode 100755 index 00000000..c884a8b6 --- /dev/null +++ b/board/qemu/arm-ebbr/post-image.sh @@ -0,0 +1,11 @@ +#!/bin/sh +set -eu + +BOARD_DIR=$(dirname "$0") + +# Create flash.bin TF-A FIP image from bl1.bin and fip.bin +dd if="${BINARIES_DIR}/bl1.bin" of="${BINARIES_DIR}/flash.bin" bs=1M +dd if="${BINARIES_DIR}/fip.bin" of="${BINARIES_DIR}/flash.bin" seek=64 bs=4096 conv=notrunc + +# Override the default GRUB configuration file with our own. +cp -f "${BOARD_DIR}/grub.cfg" "${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg" diff --git a/board/qemu/arm-ebbr/readme.txt b/board/qemu/arm-ebbr/readme.txt new file mode 100644 index 00000000..19e11457 --- /dev/null +++ b/board/qemu/arm-ebbr/readme.txt @@ -0,0 +1,70 @@ +Introduction +============ + +The qemu_arm_ebbr_defconfig is meant to illustrate some aspects of the Arm +EBBR specification[1] and the Arm SystemReady IR[2] compliance program. +It allows building a 32b ARMv7-A U-Boot based firmware implementing the subset +of UEFI defined by EBBR, as well as a Linux OS disk image booting with UEFI, to +run on Qemu. + +Building +======== + + $ make qemu_arm_ebbr_defconfig + $ make + +Generated files under output/images: + +* flash.bin: A firmware image comprising TF-A, OP-TEE and the U-Boot bootloader. + +* disk.img: An OS disk image comprising the GRUB bootloader, the Linux kernel + and the root filesystem. + +Running under Qemu +================== + +Run the emulation with: + + qemu-system-arm \ + -M virt,secure=on,acpi=off \ + -bios output/images/flash.bin \ + -cpu cortex-a15 \ + -device virtio-blk-device,drive=hd0 \ + -device virtio-net-device,netdev=eth0 \ + -device virtio-rng-device,rng=rng0 \ + -drive file=output/images/disk.img,if=none,format=raw,id=hd0 \ + -m 1024 \ + -netdev user,id=eth0 \ + -nographic \ + -object rng-random,filename=/dev/urandom,id=rng0 \ + -rtc base=utc,clock=host \ + -smp 2 # qemu_arm_ebbr_defconfig + +The login prompt will appear in the terminal that started Qemu. + +Using the EBBR firmware to run another OS under Qemu +---------------------------------------------------- + +It is possible to use the generated firmware binary to run another OS +supporting the EBBR specification. + +To run another OS on emulation using a live or pre-installed image, use the same +Qemu command line as for the generated OS but adapt the OS image path in the +-drive stanza. +The 32b Arm ACS-IR image[3] is an example of a pre-installed OS image. +Linux distributions such as Debian or openSUSE provide a pre-installed OS +image. + +Miscellaneous +============= + +This configuration is inspired by the qemu_arm_vexpress_tz_defconfig, the +qemu_aarch64_ebbr_defconfig and the Arm SystemReady IR IoT Integration, Test, +and Certification Guide[4]. + +Firmware update is currently not supported. + +[1]: https://github.com/ARM-software/ebbr +[2]: https://developer.arm.com/Architectures/Arm%20SystemReady%20IR +[3]: https://github.com/ARM-software/arm-systemready/tree/main/IR/prebuilt_images +[4]: https://developer.arm.com/documentation/DUI1101/latest/ diff --git a/board/qemu/arm-ebbr/u-boot.fragment b/board/qemu/arm-ebbr/u-boot.fragment new file mode 100644 index 00000000..66fe910f --- /dev/null +++ b/board/qemu/arm-ebbr/u-boot.fragment @@ -0,0 +1,35 @@ +CONFIG_BOOTM_EFI=y +CONFIG_CMD_BOOTEFI=y +CONFIG_CMD_BOOTEFI_HELLO=y +CONFIG_CMD_BOOTEFI_HELLO_COMPILE=y +CONFIG_CMD_BOOTEFI_SELFTEST=y +CONFIG_CMD_EFIDEBUG=y +CONFIG_CMD_EFI_VARIABLE_FILE_STORE=y +CONFIG_CMD_GPT=y +CONFIG_CMD_NVEDIT_EFI=y +CONFIG_CMD_RNG=y +CONFIG_CMD_RTC=y +CONFIG_DM_RTC=y +CONFIG_EFI_DEVICE_PATH_TO_TEXT=y +CONFIG_EFI_GET_TIME=y +CONFIG_EFI_HAVE_RUNTIME_RESET=y +CONFIG_EFI_LOADER=y +CONFIG_EFI_LOADER_HII=y +CONFIG_EFI_MM_COMM_TEE=y +CONFIG_EFI_PARTITION=y +CONFIG_EFI_SECURE_BOOT=y +CONFIG_EFI_SET_TIME=y +CONFIG_EFI_UNICODE_CAPITALIZATION=y +CONFIG_EFI_UNICODE_COLLATION_PROTOCOL2=y +CONFIG_EFI_VARIABLE_FILE_STORE=y +CONFIG_FAT_WRITE=y +CONFIG_FIT=y +CONFIG_FS_FAT=y +CONFIG_OF_LIBFDT=y +CONFIG_OPTEE=y +CONFIG_PARTITION_TYPE_GUID=y +CONFIG_RNG_OPTEE=y +CONFIG_RTC_EMULATION=y +CONFIG_SCMI_FIRMWARE=y +CONFIG_TEE=y +CONFIG_TEXT_BASE=0x60000000 diff --git a/board/qemu/arm-versatile/linux.fragment b/board/qemu/arm-versatile/linux.fragment new file mode 100644 index 00000000..0aed5583 --- /dev/null +++ b/board/qemu/arm-versatile/linux.fragment @@ -0,0 +1,66 @@ +# CONFIG_BLK_DEV_INITRD is not set +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_CMA is not set +# CONFIG_CRAMFS is not set +CONFIG_CMDLINE="" +CONFIG_CRC16=y +CONFIG_CRYPTO=y +# CONFIG_DEBUG_FS is not set +# CONFIG_DEBUG_KERNEL is not set +# CONFIG_DEBUG_USER is not set +CONFIG_DEVTMPFS=y +# CONFIG_DRM is not set +# CONFIG_EEPROM_LEGACY is not set +# CONFIG_EXT2_FS is not set +CONFIG_EXT4_FS=y +CONFIG_FB_ARMCLCD=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x16=y +CONFIG_FONT_8x8=y +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set +# CONFIG_FTRACE is not set +# CONFIG_GPIOLIB is not set +# CONFIG_HIGH_RES_TIMERS is not set +CONFIG_HWMON=y +CONFIG_HZ_PERIODIC=y +# CONFIG_I2C_VERSATILE is not set +CONFIG_INET_DIAG=y +CONFIG_INPUT_EVDEV=y +CONFIG_IPV6=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_PNP is not set +CONFIG_LOCALVERSION_AUTO=y +# CONFIG_LOGO is not set +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_MDIO_DEVICE=y +# CONFIG_MINIX_FS is not set +# CONFIG_MMC is not set +# CONFIG_MTD is not set +# CONFIG_NEW_LEDS is not set +# CONFIG_NFSD is not set +# CONFIG_NFS_FS is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NO_HZ_IDLE is not set +# CONFIG_NVMEM is not set +# CONFIG_OABI_COMPAT is not set +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_PCI=y +CONFIG_PCI_VERSATILE=y +CONFIG_PHYLIB=y +# CONFIG_ROMFS_FS is not set +# CONFIG_RTC_CLASS is not set +CONFIG_SCSI=y +CONFIG_SCSI_SPI_ATTRS=y +CONFIG_SCSI_SYM53C8XX_2=y +CONFIG_SERIO_SERPORT=y +CONFIG_SLUB=y +# CONFIG_SPI is not set +# CONFIG_SYNC_FILE is not set +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +# CONFIG_VFP is not set +# CONFIG_XZ_DEC is not set +CONFIG_8139CP=y +CONFIG_BLK_DEV_SD=y diff --git a/board/qemu/arm-versatile/readme.txt b/board/qemu/arm-versatile/readme.txt new file mode 100644 index 00000000..757ef378 --- /dev/null +++ b/board/qemu/arm-versatile/readme.txt @@ -0,0 +1,6 @@ +Run the emulation with: + + qemu-system-arm -M versatilepb -kernel output/images/zImage -dtb output/images/versatile-pb.dtb -drive file=output/images/rootfs.ext2,if=scsi,format=raw -append "rootwait root=/dev/sda console=ttyAMA0,115200" -serial stdio -net nic,model=rtl8139 -net user # qemu_arm_versatile_defconfig + +The login prompt will appear in the terminal that started Qemu. The +graphical window is the framebuffer. diff --git a/board/qemu/arm-vexpress-tz/linux.fragment b/board/qemu/arm-vexpress-tz/linux.fragment new file mode 100644 index 00000000..1537d938 --- /dev/null +++ b/board/qemu/arm-vexpress-tz/linux.fragment @@ -0,0 +1,3 @@ +### Enable OP-TEE +CONFIG_TEE=y +CONFIG_OPTEE=y diff --git a/board/qemu/arm-vexpress-tz/post-build.sh b/board/qemu/arm-vexpress-tz/post-build.sh new file mode 100755 index 00000000..97cc5379 --- /dev/null +++ b/board/qemu/arm-vexpress-tz/post-build.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +set -u +set -e + +# Create flash.bin TF-A FIP image from bl1.bin and fip.bin +cd "$BINARIES_DIR" +dd if=bl1.bin of=flash.bin bs=4096 +dd if=fip.bin of=flash.bin seek=64 bs=4096 conv=notrunc diff --git a/board/qemu/arm-vexpress-tz/readme.txt b/board/qemu/arm-vexpress-tz/readme.txt new file mode 100644 index 00000000..920777af --- /dev/null +++ b/board/qemu/arm-vexpress-tz/readme.txt @@ -0,0 +1,135 @@ +Board qemu_arm_vexpress_tz builds a QEMU ARMv7-A target system with +OP-TEE running in the TrustZone secure world and a Linux based +OS running in the non-secure world. The board configuration enables +builds of the QEMU host ARM target emulator. + + make qemu_arm_vexpress_tz_defconfig + make + +The BIOS used in the QEMU host is the ARM Trusted Firmware-A (TF-A). +In our configuration, U-Boot uses QEMU semihosting file access to load the +kernel and rootfs image files. For this reason the emulation needs to be run +from the image directory: + + cd output/images && ../host/bin/qemu-system-arm \ + -machine virt -machine secure=on -cpu cortex-a15 \ + -smp 1 -s -m 1024 -d unimp \ + -serial stdio \ + -netdev user,id=vmnic -device virtio-net-device,netdev=vmnic \ + -semihosting-config enable=on,target=native \ + -bios flash.bin # qemu_arm_vexpress_tz_defconfig + +The boot stage traces (if any) followed by the login prompt will appear +in the terminal that started QEMU. + +If you want to emulate more cores, use "-smp {1|2|3|4}" to select the +number of cores. + +Note: "-netdev user,id=vmnic -device virtio-net-device,netdev=vmnic" +brings network support that is used e.g. in OP-TEE regression tests. + + +-- Boot Details -- + +TF-A is used as QEMU BIOS. Its BL1 image boots and load its BL2 image. In turn, +this image loads the OP-TEE secure world (ARMv7-A BL32 stage) and the U-boot as +non-secure bootloader (BL33 stage). + +QEMU natively hosts and loads in RAM the QEMU ARM target device tree. OP-TEE +reads and modifies its content according to OP-TEE configuration. + +Enable TF-A traces from LOG_LEVEL (e.g. LOG_LEVEL=40) from +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES. + + +-- OP-TEE Traces -- + +Secure boot stages and/or secure runtime services may use a serial link for +their traces. + +The ARM Trusted Firmware outputs its traces on the QEMU standard (first) +serial interface. + +The OP-TEE OS uses the QEMU second serial interface. + +To get the OP-TEE OS traces, append a second -serial argument after +-serial stdio in the QEMU command line. E.g., the following enables 2 serial +consoles over telnet connections: + + cd output/images && ../host/bin/qemu-system-arm \ + -machine virt -machine secure=on -cpu cortex-a15 \ + -smp 1 -s -m 1024 -d unimp \ + -serial telnet:127.0.0.1:1235,server \ + -serial telnet:127.0.0.1:1236,server \ + -netdev user,id=vmnic -device virtio-net-device,netdev=vmnic \ + -semihosting-config enable=on,target=native \ + -bios flash.bin + +QEMU is now waiting for the telnet connection. From another shell, open a +telnet connection on the port for the U-boot and Linux consoles: + + telnet 127.0.0.1 1235 + +and again for the secure console + + telnet 127.0.0.1 1236 + + +-- Using gdb -- + +One can debug the OP-TEE secure world using GDB through the QEMU host. +To do so, simply run the qemu-system-arm emulation, then run a GDB client +and connect the QEMU internal GDB server. + +The example below assumes we run QEMU and the GDB client from the same +host computer. We use option -S of qemu-system-arm to make QEMU +waiting for the GDB continue instruction before booting the images. + +From a first shell: + cd output/images && ../host/bin/qemu-system-arm \ + -machine virt -machine secure=on -cpu cortex-a15 \ + -smp 1 -s -m 1024 -d unimp \ + -serial stdio \ + -netdev user,id=vmnic -device virtio-net-device,netdev=vmnic \ + -semihosting-config enable=on,target=native \ + -bios flash.bin \ + -S + +From a second shell: + ./output/host/bin/arm-linux-gdb + GNU gdb (GNU Toolchain for the A-profile Architecture 8.2-2018-08 (arm-rel-8.23)) 8.1.1.20180704-git + Copyright (C) 2018 Free Software Foundation, Inc. + ... + For help, type "help". + Type "apropos word" to search for commands related to "word". + (gdb) + +From this GDB console, connect to the target, load the OP-TEE core symbols, +set a breakpoint to its entry point (__text_start) and start emulation: + + (gdb) target remote 127.0.0.1:1234 + (gdb) symbol-file ./output/build/optee-os-/out/core/tee.elf + (gdb) hbreak __text_start + Hardware assisted breakpoint 1 at 0xe100000: file core/arch/arm/kernel/generic_entry_a32.S, line 246. + (gdb) cont + Continuing. + + Thread 1 hit Breakpoint 1, _start () at core/arch/arm/kernel/generic_entry_a32.S:246 + 246 bootargs_entry + (gdb) + + +Emulation has started, TF-A has loaded OP-TEE and U-boot images in memory and +has booted OP-TEE. Emulation stopped at OP-TEE core entry. + +Note: QEMU hosts a GDB service listening to TCP port 1234, as set through +qemu-system-arm command line option -S. + +Note: To build the GDB server, the following extra options have to be added to +the Buildroot configuration: + + BR2_ENABLE_DEBUG=y + BR2_PACKAGE_GDB=y + BR2_PACKAGE_HOST_GDB=y + BR2_TOOLCHAIN_BUILDROOT_CXX=y + BR2_TOOLCHAIN_BUILDROOT_GLIBC=y diff --git a/board/qemu/arm-vexpress-tz/u-boot.config b/board/qemu/arm-vexpress-tz/u-boot.config new file mode 100644 index 00000000..48b1d06f --- /dev/null +++ b/board/qemu/arm-vexpress-tz/u-boot.config @@ -0,0 +1,8 @@ +CONFIG_SYS_TEXT_BASE=0x60000000 +CONFIG_BOOTCOMMAND="smhload zImage ${kernel_addr_r} && smhload rootfs.cpio.uboot ${ramdisk_addr_r} && setenv bootargs console=ttyAMA0,115200 earlyprintk=serial,ttyAMA0,115200 && bootz ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr}" +CONFIG_SEMIHOSTING=y +# Drop flash accesses +CONFIG_ENV_IS_IN_FLASH=n +CONFIG_MTD=n +CONFIG_MTD_NOR_FLASH=n +CONFIG_ENV_IS_NOWHERE=y diff --git a/board/qemu/arm-vexpress/readme.txt b/board/qemu/arm-vexpress/readme.txt new file mode 100644 index 00000000..8d1bb72f --- /dev/null +++ b/board/qemu/arm-vexpress/readme.txt @@ -0,0 +1,9 @@ +Run the emulation with: + + qemu-system-arm -M vexpress-a9 -smp 1 -m 256 -kernel output/images/zImage -dtb output/images/vexpress-v2p-ca9.dtb -drive file=output/images/rootfs.ext2,if=sd,format=raw -append "console=ttyAMA0,115200 rootwait root=/dev/mmcblk0" -serial stdio -net nic,model=lan9118 -net user # qemu_arm_vexpress_defconfig + +The login prompt will appear in the terminal that started Qemu. The +graphical window is the framebuffer. + +If you want to emulate more cores change "-smp 1" to "-smp 2" for +dual-core or even "smp -4" for a quad-core configuration. diff --git a/board/qemu/m68k-mcf5208/linux.config b/board/qemu/m68k-mcf5208/linux.config new file mode 100644 index 00000000..09a89d72 --- /dev/null +++ b/board/qemu/m68k-mcf5208/linux.config @@ -0,0 +1,28 @@ +CONFIG_M68K=y +CONFIG_COLDFIRE=y +# CONFIG_MMU is not set +CONFIG_M520x=y +CONFIG_CLOCK_SET=y +CONFIG_CLOCK_FREQ=66666666 +CONFIG_CLOCK_DIV=1 +CONFIG_M5208EVB=y +CONFIG_FREESCALE=y +CONFIG_RAMBASE=0x40000000 +CONFIG_RAMSIZE=0x0 +CONFIG_VECTORBASE=0x40000000 +CONFIG_KERNELBASE=0x40020000 +CONFIG_4KSTACKS=y +CONFIG_RAMKERNEL=y +CONFIG_BINFMT_FLAT=y +CONFIG_SERIAL_MCF=y +CONFIG_SERIAL_MCF_BAUDRATE=115200 +CONFIG_SERIAL_MCF_CONSOLE=y +CONFIG_BOOTPARAM=y +CONFIG_BOOTPARAM_STRING="console=ttyS0,115200" +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_NETDEVICES=y +CONFIG_NET_VENDOR_FREESCALE=y +CONFIG_FEC=y diff --git a/board/qemu/m68k-mcf5208/readme.txt b/board/qemu/m68k-mcf5208/readme.txt new file mode 100644 index 00000000..79bf7146 --- /dev/null +++ b/board/qemu/m68k-mcf5208/readme.txt @@ -0,0 +1,5 @@ +Run the emulation with: + + qemu-system-m68k -M mcf5208evb -cpu m5208 -kernel output/images/vmlinux -nographic # qemu_m68k_mcf5208_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/board/qemu/m68k-q800/linux.config b/board/qemu/m68k-q800/linux.config new file mode 100644 index 00000000..44eb70e2 --- /dev/null +++ b/board/qemu/m68k-q800/linux.config @@ -0,0 +1,26 @@ +CONFIG_M68K=y +CONFIG_M68040=y +CONFIG_M68KFPU_EMU=y +CONFIG_MAC=y +CONFIG_MACINTOSH_DRIVERS=y +CONFIG_ADB=y +CONFIG_ADB_MACII=y +CONFIG_TTY=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_NETDEVICES=y +CONFIG_MACSONIC=y +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +CONFIG_SCSI_LOWLEVEL=y +CONFIG_SCSI_MAC_ESP=y +CONFIG_BLK_DEV_SD=y +CONFIG_SERIAL_PMACZILOG=y +CONFIG_SERIAL_PMACZILOG_TTYS=y +CONFIG_SERIAL_PMACZILOG_CONSOLE=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y diff --git a/board/qemu/m68k-q800/readme.txt b/board/qemu/m68k-q800/readme.txt new file mode 100644 index 00000000..f1db57d5 --- /dev/null +++ b/board/qemu/m68k-q800/readme.txt @@ -0,0 +1,5 @@ +Run the emulation with: + + qemu-system-m68k -M q800 -kernel output/images/vmlinux -nographic -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/sda console=ttyS0" # qemu_m68k_q800_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/board/qemu/microblazebe-mmu/linux.config b/board/qemu/microblazebe-mmu/linux.config new file mode 100644 index 00000000..7bcd3820 --- /dev/null +++ b/board/qemu/microblazebe-mmu/linux.config @@ -0,0 +1,20 @@ +CONFIG_SYSVIPC=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_OPT_LIB_ASM=y +CONFIG_XILINX_MICROBLAZE0_FAMILY="spartan3adsp" +CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR=1 +CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR=1 +CONFIG_XILINX_MICROBLAZE0_USE_BARREL=1 +CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL=1 +CONFIG_MMU=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_NETDEVICES=y +CONFIG_XILINX_EMACLITE=y +CONFIG_SERIAL_UARTLITE=y +CONFIG_SERIAL_UARTLITE_CONSOLE=y +# CONFIG_VGA_CONSOLE is not set +CONFIG_TMPFS=y diff --git a/board/qemu/microblazebe-mmu/readme.txt b/board/qemu/microblazebe-mmu/readme.txt new file mode 100644 index 00000000..7bb98642 --- /dev/null +++ b/board/qemu/microblazebe-mmu/readme.txt @@ -0,0 +1,5 @@ +Run the emulation with: + + qemu-system-microblaze -M petalogix-s3adsp1800 -kernel output/images/linux.bin -serial stdio # qemu_microblazebe_mmu_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/board/qemu/microblazeel-mmu/linux.config b/board/qemu/microblazeel-mmu/linux.config new file mode 100644 index 00000000..a6228280 --- /dev/null +++ b/board/qemu/microblazeel-mmu/linux.config @@ -0,0 +1,19 @@ +CONFIG_SYSVIPC=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_XILINX_MICROBLAZE0_FAMILY="spartan3adsp" +CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR=1 +CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR=1 +CONFIG_XILINX_MICROBLAZE0_USE_BARREL=1 +CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL=1 +CONFIG_MMU=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_NETDEVICES=y +CONFIG_XILINX_EMACLITE=y +CONFIG_SERIAL_UARTLITE=y +CONFIG_SERIAL_UARTLITE_CONSOLE=y +# CONFIG_VGA_CONSOLE is not set +CONFIG_TMPFS=y diff --git a/board/qemu/microblazeel-mmu/readme.txt b/board/qemu/microblazeel-mmu/readme.txt new file mode 100644 index 00000000..20fa0072 --- /dev/null +++ b/board/qemu/microblazeel-mmu/readme.txt @@ -0,0 +1,5 @@ +Run the emulation with: + + qemu-system-microblazeel -M petalogix-s3adsp1800 -kernel output/images/linux.bin -serial stdio # qemu_microblazeel_mmu_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/board/qemu/mips32r2-malta/linux.config b/board/qemu/mips32r2-malta/linux.config new file mode 100644 index 00000000..db8ad176 --- /dev/null +++ b/board/qemu/mips32r2-malta/linux.config @@ -0,0 +1,28 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_MIPS32_R2=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +CONFIG_ATA_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/board/qemu/mips32r2-malta/readme.txt b/board/qemu/mips32r2-malta/readme.txt new file mode 100644 index 00000000..77518cce --- /dev/null +++ b/board/qemu/mips32r2-malta/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-mips -M malta -kernel output/images/vmlinux -serial stdio -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/sda" -net nic,model=pcnet -net user # qemu_mips32r2_malta_defconfig + +The login prompt will appear in the terminal that started Qemu. The +graphical window is the framebuffer. No keyboard support has been +enabled. diff --git a/board/qemu/mips32r2el-malta/linux.config b/board/qemu/mips32r2el-malta/linux.config new file mode 100644 index 00000000..916e5222 --- /dev/null +++ b/board/qemu/mips32r2el-malta/linux.config @@ -0,0 +1,29 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_LITTLE_ENDIAN=y +CONFIG_CPU_MIPS32_R2=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +CONFIG_ATA_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/board/qemu/mips32r2el-malta/readme.txt b/board/qemu/mips32r2el-malta/readme.txt new file mode 100644 index 00000000..2a1e84a0 --- /dev/null +++ b/board/qemu/mips32r2el-malta/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-mipsel -M malta -kernel output/images/vmlinux -serial stdio -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/sda" -net nic,model=pcnet -net user # qemu_mips32r2el_malta_defconfig + +The login prompt will appear in the terminal that started Qemu. The +graphical window is the framebuffer. No keyboard support has been +enabled. diff --git a/board/qemu/mips32r6-malta/linux.config b/board/qemu/mips32r6-malta/linux.config new file mode 100644 index 00000000..fbfffe20 --- /dev/null +++ b/board/qemu/mips32r6-malta/linux.config @@ -0,0 +1,28 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_MIPS32_R6=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +CONFIG_ATA_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/board/qemu/mips32r6-malta/readme.txt b/board/qemu/mips32r6-malta/readme.txt new file mode 100644 index 00000000..ff5f1e36 --- /dev/null +++ b/board/qemu/mips32r6-malta/readme.txt @@ -0,0 +1,5 @@ +Run the emulation with: + + qemu-system-mips -M malta -cpu mips32r6-generic -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/sda" -nographic # qemu_mips32r6_malta_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/board/qemu/mips32r6el-malta/linux.config b/board/qemu/mips32r6el-malta/linux.config new file mode 100644 index 00000000..fbfffe20 --- /dev/null +++ b/board/qemu/mips32r6el-malta/linux.config @@ -0,0 +1,28 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_MIPS32_R6=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +CONFIG_ATA_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/board/qemu/mips32r6el-malta/readme.txt b/board/qemu/mips32r6el-malta/readme.txt new file mode 100644 index 00000000..29a5a1e0 --- /dev/null +++ b/board/qemu/mips32r6el-malta/readme.txt @@ -0,0 +1,5 @@ +Run the emulation with: + + qemu-system-mipsel -M malta -cpu mips32r6-generic -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/sda" -net nic,model=pcnet -net user -nographic # qemu_mips32r6el_malta_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/board/qemu/mips64-malta/linux.config b/board/qemu/mips64-malta/linux.config new file mode 100644 index 00000000..66932fb3 --- /dev/null +++ b/board/qemu/mips64-malta/linux.config @@ -0,0 +1,32 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_MIPS64_R1=y +CONFIG_64BIT=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_MIPS32_COMPAT=y +CONFIG_MIPS32_O32=y +CONFIG_MIPS32_N32=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +CONFIG_ATA_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/board/qemu/mips64-malta/readme.txt b/board/qemu/mips64-malta/readme.txt new file mode 100644 index 00000000..d148a139 --- /dev/null +++ b/board/qemu/mips64-malta/readme.txt @@ -0,0 +1,6 @@ +Run the emulation with: + + qemu-system-mips64 -M malta -kernel output/images/vmlinux -serial stdio -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/sda" # qemu_mips64_malta_defconfig + +The login prompt will appear in the terminal that started Qemu. The +graphical window is the framebuffer. diff --git a/board/qemu/mips64el-malta/linux.config b/board/qemu/mips64el-malta/linux.config new file mode 100644 index 00000000..516b05b5 --- /dev/null +++ b/board/qemu/mips64el-malta/linux.config @@ -0,0 +1,33 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_LITTLE_ENDIAN=y +CONFIG_CPU_MIPS64_R1=y +CONFIG_64BIT=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_MIPS32_COMPAT=y +CONFIG_MIPS32_O32=y +CONFIG_MIPS32_N32=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +CONFIG_ATA_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/board/qemu/mips64el-malta/readme.txt b/board/qemu/mips64el-malta/readme.txt new file mode 100644 index 00000000..4545fcd9 --- /dev/null +++ b/board/qemu/mips64el-malta/readme.txt @@ -0,0 +1,6 @@ +Run the emulation with: + + qemu-system-mips64el -M malta -kernel output/images/vmlinux -serial stdio -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/sda" # qemu_mips64el_malta_defconfig + +The login prompt will appear in the terminal that started Qemu. The +graphical window is the framebuffer. diff --git a/board/qemu/mips64r6-malta/linux.config b/board/qemu/mips64r6-malta/linux.config new file mode 100644 index 00000000..020e02f1 --- /dev/null +++ b/board/qemu/mips64r6-malta/linux.config @@ -0,0 +1,32 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_MIPS64_R6=y +CONFIG_64BIT=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_MIPS32_COMPAT=y +CONFIG_MIPS32_O32=y +CONFIG_MIPS32_N32=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +CONFIG_ATA_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/board/qemu/mips64r6-malta/readme.txt b/board/qemu/mips64r6-malta/readme.txt new file mode 100644 index 00000000..6712d668 --- /dev/null +++ b/board/qemu/mips64r6-malta/readme.txt @@ -0,0 +1,5 @@ +Run the emulation with: + + qemu-system-mips64 -M malta -cpu I6400 -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/sda" -nographic # qemu_mips64r6_malta_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/board/qemu/mips64r6el-malta/linux.config b/board/qemu/mips64r6el-malta/linux.config new file mode 100644 index 00000000..020e02f1 --- /dev/null +++ b/board/qemu/mips64r6el-malta/linux.config @@ -0,0 +1,32 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_MIPS64_R6=y +CONFIG_64BIT=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_MIPS32_COMPAT=y +CONFIG_MIPS32_O32=y +CONFIG_MIPS32_N32=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +CONFIG_ATA_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/board/qemu/mips64r6el-malta/readme.txt b/board/qemu/mips64r6el-malta/readme.txt new file mode 100644 index 00000000..150ce752 --- /dev/null +++ b/board/qemu/mips64r6el-malta/readme.txt @@ -0,0 +1,5 @@ +Run the emulation with: + + qemu-system-mips64el -M malta -cpu I6400 -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/sda" -nographic # qemu_mips64r6el_malta_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/board/qemu/nios2-10m50/linux.fragment b/board/qemu/nios2-10m50/linux.fragment new file mode 100644 index 00000000..c7647cee --- /dev/null +++ b/board/qemu/nios2-10m50/linux.fragment @@ -0,0 +1,3 @@ +# Embed the DTB in the kernel image +CONFIG_NIOS2_DTB_SOURCE_BOOL=y +CONFIG_NIOS2_DTB_SOURCE="10m50_devboard.dts" diff --git a/board/qemu/nios2-10m50/readme.txt b/board/qemu/nios2-10m50/readme.txt new file mode 100644 index 00000000..f8f8f3b3 --- /dev/null +++ b/board/qemu/nios2-10m50/readme.txt @@ -0,0 +1,5 @@ +Run the emulation with: + + qemu-system-nios2 -kernel output/images/vmlinux -nographic # qemu_nios2_10m50_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/board/qemu/or1k/linux.config b/board/qemu/or1k/linux.config new file mode 100644 index 00000000..0a817b1e --- /dev/null +++ b/board/qemu/or1k/linux.config @@ -0,0 +1,30 @@ +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="${BR_BINARIES_DIR}/rootfs.cpio" +CONFIG_OPENRISC_BUILTIN_DTB="or1ksim" +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_IPV6 is not set +# CONFIG_WIRELESS is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_TMPFS=y +CONFIG_NETDEVICES=y +CONFIG_ETHOC=y +# CONFIG_WLAN is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_SERIO is not set +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_OF_PLATFORM=y +# CONFIG_HWMON is not set +# CONFIG_VGA_CONSOLE is not set +# CONFIG_USB_SUPPORT is not set diff --git a/board/qemu/or1k/readme.txt b/board/qemu/or1k/readme.txt new file mode 100644 index 00000000..ed0359a0 --- /dev/null +++ b/board/qemu/or1k/readme.txt @@ -0,0 +1,5 @@ +Run the emulation with: + + qemu-system-or1k -kernel output/images/vmlinux -nographic # qemu_or1k_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/board/qemu/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/qemu/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 00000000..5632db01 --- /dev/null +++ b/board/qemu/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 c9f0d0bf967d690edbf34b621728a6271856f2e26ed46081a285b6d627a358c5 arm-trusted-firmware-v2.7-git4.tar.gz +sha256 7efa89e1b4e4106ee05d68e876c8efbb146364d89cfd5d26bf4647b09c08f32b arm-trusted-firmware-v2.10-git4.tar.gz diff --git a/board/qemu/patches/binutils/binutils.hash b/board/qemu/patches/binutils/binutils.hash new file mode 100644 index 00000000..6affaadf --- /dev/null +++ b/board/qemu/patches/binutils/binutils.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 a76052c0c71d4025b117dcfc18ca7e189ac495a7645fa98c1bdaddca15cce815 xtensa_dc233c.tar.gz diff --git a/board/qemu/patches/gcc-final/gcc-final.hash b/board/qemu/patches/gcc-final/gcc-final.hash new file mode 100644 index 00000000..84bf45ec --- /dev/null +++ b/board/qemu/patches/gcc-final/gcc-final.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 a76052c0c71d4025b117dcfc18ca7e189ac495a7645fa98c1bdaddca15cce815 xtensa_dc233c.tar.gz diff --git a/board/qemu/patches/gcc-initial/gcc-initial.hash b/board/qemu/patches/gcc-initial/gcc-initial.hash new file mode 100644 index 00000000..84bf45ec --- /dev/null +++ b/board/qemu/patches/gcc-initial/gcc-initial.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 a76052c0c71d4025b117dcfc18ca7e189ac495a7645fa98c1bdaddca15cce815 xtensa_dc233c.tar.gz diff --git a/board/qemu/patches/linux-headers/linux-headers.hash b/board/qemu/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/qemu/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/qemu/patches/linux/linux.hash b/board/qemu/patches/linux/linux.hash new file mode 100644 index 00000000..deb1ad0c --- /dev/null +++ b/board/qemu/patches/linux/linux.hash @@ -0,0 +1,5 @@ +# sha256 locally computed +sha256 aaa824eaf07f61911d22b75ff090a403c3dd0bd73e23933e0bba8b5971436ce1 linux-6.6.32.tar.xz + +# sha256 locally computed +sha256 a76052c0c71d4025b117dcfc18ca7e189ac495a7645fa98c1bdaddca15cce815 xtensa_dc233c.tar.gz diff --git a/board/qemu/patches/opensbi/opensbi.hash b/board/qemu/patches/opensbi/opensbi.hash new file mode 100644 index 00000000..1408f547 --- /dev/null +++ b/board/qemu/patches/opensbi/opensbi.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 8fcbce598a73acc2c7f7d5607d46b9d5107d3ecbede8f68f42631dcfc25ef2b2 opensbi-1.2.tar.gz diff --git a/board/qemu/patches/uboot/uboot.hash b/board/qemu/patches/uboot/uboot.hash new file mode 100644 index 00000000..7762ff3f --- /dev/null +++ b/board/qemu/patches/uboot/uboot.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 68e065413926778e276ec3abd28bb32fa82abaa4a6898d570c1f48fbdb08bcd0 u-boot-2022.04.tar.bz2 +sha256 b99611f1ed237bf3541bdc8434b68c96a6e05967061f992443cb30aabebef5b3 u-boot-2024.01.tar.bz2 diff --git a/board/qemu/post-image.sh b/board/qemu/post-image.sh new file mode 100755 index 00000000..fe46d0d4 --- /dev/null +++ b/board/qemu/post-image.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +QEMU_BOARD_DIR="$(dirname "$0")" +DEFCONFIG_NAME="$(basename "$2")" +README_FILES="${QEMU_BOARD_DIR}/*/readme.txt" +START_QEMU_SCRIPT="${BINARIES_DIR}/start-qemu.sh" + +if [[ "${DEFCONFIG_NAME}" =~ ^"qemu_*" ]]; then + # Not a Qemu defconfig, can't test. + exit 0 +fi + +# Search for "# qemu_*_defconfig" tag in all readme.txt files. +# Qemu command line on multilines using back slash are accepted. +# shellcheck disable=SC2086 # glob over each readme file +QEMU_CMD_LINE="$(sed -r ':a; /\\$/N; s/\\\n//; s/\t/ /; ta; /# '"${DEFCONFIG_NAME}"'$/!d; s/#.*//' ${README_FILES})" + +if [ -z "${QEMU_CMD_LINE}" ]; then + # No Qemu cmd line found, can't test. + exit 0 +fi + +# Remove output/images path since the script will be in +# the same directory as the kernel and the rootfs images. +QEMU_CMD_LINE="${QEMU_CMD_LINE//output\/images\//}" + +# Remove -serial stdio if present, keep it as default args +DEFAULT_ARGS="$(sed -r -e '/-serial stdio/!d; s/.*(-serial stdio).*/\1/' <<<"${QEMU_CMD_LINE}")" +QEMU_CMD_LINE="${QEMU_CMD_LINE//-serial stdio/}" + +# Remove any string before qemu-system-* +QEMU_CMD_LINE="$(sed -r -e 's/^.*(qemu-system-)/\1/' <<<"${QEMU_CMD_LINE}")" + +# Disable graphical output and redirect serial I/Os to console +case ${DEFCONFIG_NAME} in + (qemu_sh4eb_r2d_defconfig|qemu_sh4_r2d_defconfig) + # Special case for SH4 + SERIAL_ARGS="-serial stdio -display none" + ;; + (*) + SERIAL_ARGS="-nographic" + ;; +esac + +sed -e "s|@SERIAL_ARGS@|${SERIAL_ARGS}|g" \ + -e "s|@DEFAULT_ARGS@|${DEFAULT_ARGS}|g" \ + -e "s|@QEMU_CMD_LINE@|${QEMU_CMD_LINE}|g" \ + -e "s|@HOST_DIR@|${HOST_DIR}|g" \ + <"${QEMU_BOARD_DIR}/start-qemu.sh.in" \ + >"${START_QEMU_SCRIPT}" +chmod +x "${START_QEMU_SCRIPT}" diff --git a/board/qemu/ppc-bamboo/linux.fragment b/board/qemu/ppc-bamboo/linux.fragment new file mode 100644 index 00000000..cc272d05 --- /dev/null +++ b/board/qemu/ppc-bamboo/linux.fragment @@ -0,0 +1,6 @@ +# Enable virtio (blk, rng and net devices) +CONFIG_VIRTIO=y +CONFIG_VIRTIO_PCI=y +CONFIG_HW_RANDOM_VIRTIO=y +CONFIG_VIRTIO_BLK=y +CONFIG_VIRTIO_NET=y diff --git a/board/qemu/ppc-bamboo/readme.txt b/board/qemu/ppc-bamboo/readme.txt new file mode 100644 index 00000000..53d19706 --- /dev/null +++ b/board/qemu/ppc-bamboo/readme.txt @@ -0,0 +1,5 @@ +Run the emulation with: + +qemu-system-ppc -nographic -M bamboo -kernel output/images/vmlinux -net nic,model=virtio-net-pci -net user # qemu_ppc_bamboo_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/board/qemu/ppc-e500mc/linux.fragment b/board/qemu/ppc-e500mc/linux.fragment new file mode 100644 index 00000000..35a8dccf --- /dev/null +++ b/board/qemu/ppc-e500mc/linux.fragment @@ -0,0 +1,10 @@ +# Enables generic PPC e500 base arch support for QEMU. +# The e500mc is a variant of the e500 arch. +CONFIG_PPC_QEMU_E500=y + +# Enable virtio (blk, rng and net devices) +CONFIG_VIRTIO=y +CONFIG_VIRTIO_PCI=y +CONFIG_HW_RANDOM_VIRTIO=y +CONFIG_VIRTIO_BLK=y +CONFIG_VIRTIO_NET=y diff --git a/board/qemu/ppc-e500mc/readme.txt b/board/qemu/ppc-e500mc/readme.txt new file mode 100644 index 00000000..76bad015 --- /dev/null +++ b/board/qemu/ppc-e500mc/readme.txt @@ -0,0 +1,5 @@ +Run the emulation with: + + qemu-system-ppc -M ppce500 -cpu e500mc -m 256 -kernel output/images/uImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -net nic,model=virtio-net-pci -net user -append "console=ttyS0 rootwait root=/dev/vda" -serial mon:stdio -nographic # qemu_ppc_e500mc_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/board/qemu/ppc-g3beige/linux.config b/board/qemu/ppc-g3beige/linux.config new file mode 100644 index 00000000..f9448842 --- /dev/null +++ b/board/qemu/ppc-g3beige/linux.config @@ -0,0 +1,28 @@ +CONFIG_ALTIVEC=y +CONFIG_SYSVIPC=y +CONFIG_HIGHMEM=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_PCCARD=y +CONFIG_YENTA=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SR=y +CONFIG_ATA=y +CONFIG_PATA_MACIO=y +CONFIG_ADB=y +CONFIG_ADB_CUDA=y +CONFIG_ADB_PMU=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_8139CP=y +CONFIG_SERIAL_PMACZILOG=y +CONFIG_SERIAL_PMACZILOG_TTYS=y +CONFIG_SERIAL_PMACZILOG_CONSOLE=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_BOOTX_TEXT=y diff --git a/board/qemu/ppc-g3beige/readme.txt b/board/qemu/ppc-g3beige/readme.txt new file mode 100644 index 00000000..e39579ad --- /dev/null +++ b/board/qemu/ppc-g3beige/readme.txt @@ -0,0 +1,6 @@ +Run the emulation with: + + qemu-system-ppc -M g3beige -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "console=ttyS0 rootwait root=/dev/sda" -serial stdio -net nic,model=rtl8139 -net user # qemu_ppc_g3beige_defconfig + +The login prompt will appear in the terminal that started Qemu. The +graphical window is the framebuffer. diff --git a/board/qemu/ppc-mac99/linux.fragment b/board/qemu/ppc-mac99/linux.fragment new file mode 100644 index 00000000..b1975f82 --- /dev/null +++ b/board/qemu/ppc-mac99/linux.fragment @@ -0,0 +1,3 @@ +CONFIG_SERIAL_PMACZILOG=y +CONFIG_SERIAL_PMACZILOG_TTYS=y +CONFIG_SERIAL_PMACZILOG_CONSOLE=y diff --git a/board/qemu/ppc-mac99/readme.txt b/board/qemu/ppc-mac99/readme.txt new file mode 100644 index 00000000..fb94a783 --- /dev/null +++ b/board/qemu/ppc-mac99/readme.txt @@ -0,0 +1,3 @@ +Run the emulation with: + + qemu-system-ppc -nographic -vga none -M mac99 -cpu g4 -m 1G -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -net nic,model=sungem -net user -append "root=/dev/sda" # qemu_ppc_mac99_defconfig diff --git a/board/qemu/ppc-mpc8544ds/linux.config b/board/qemu/ppc-mpc8544ds/linux.config new file mode 100644 index 00000000..b36847c9 --- /dev/null +++ b/board/qemu/ppc-mpc8544ds/linux.config @@ -0,0 +1,38 @@ +CONFIG_PPC_85xx=y +CONFIG_PHYS_64BIT=y +CONFIG_SYSVIPC=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="${BR_BINARIES_DIR}/rootfs.cpio" +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MPC8540_ADS=y +CONFIG_MPC85xx_DS=y +CONFIG_HIGHMEM=y +CONFIG_MATH_EMULATION=y +CONFIG_PCI=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCI_MSI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_NETDEVICES=y +CONFIG_E1000=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=6 +CONFIG_SERIAL_8250_RUNTIME_UARTS=6 +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y +CONFIG_USB=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_FSL=y +CONFIG_USB_OHCI_HCD=y +CONFIG_TMPFS=y diff --git a/board/qemu/ppc-mpc8544ds/readme.txt b/board/qemu/ppc-mpc8544ds/readme.txt new file mode 100644 index 00000000..d34d64c3 --- /dev/null +++ b/board/qemu/ppc-mpc8544ds/readme.txt @@ -0,0 +1,5 @@ +Run the emulation with: + + qemu-system-ppc -M mpc8544ds -kernel output/images/vmlinux -serial stdio -net nic,model=e1000 -net user # qemu_ppc_mpc8544ds_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/board/qemu/ppc64-e5500/linux.fragment b/board/qemu/ppc64-e5500/linux.fragment new file mode 100644 index 00000000..071a55cc --- /dev/null +++ b/board/qemu/ppc64-e5500/linux.fragment @@ -0,0 +1,10 @@ +# Enables generic PPC e500 base arch support for QEMU. +# The e5500 is a variant of the e500 arch. +CONFIG_PPC_QEMU_E500=y + +# Enable virtio (blk, rng and net devices) +CONFIG_VIRTIO=y +CONFIG_VIRTIO_PCI=y +CONFIG_HW_RANDOM_VIRTIO=y +CONFIG_VIRTIO_BLK=y +CONFIG_VIRTIO_NET=y diff --git a/board/qemu/ppc64-e5500/readme.txt b/board/qemu/ppc64-e5500/readme.txt new file mode 100644 index 00000000..7c8c80af --- /dev/null +++ b/board/qemu/ppc64-e5500/readme.txt @@ -0,0 +1,5 @@ +Run the emulation with: + + qemu-system-ppc64 -M ppce500 -cpu e5500 -m 256 -kernel output/images/uImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -net nic,model=virtio-net-pci -net user -append "console=ttyS0 rootwait root=/dev/vda" -serial mon:stdio -nographic # qemu_ppc64_e5500_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/board/qemu/ppc64-pseries/readme.txt b/board/qemu/ppc64-pseries/readme.txt new file mode 100644 index 00000000..cbd3c6ca --- /dev/null +++ b/board/qemu/ppc64-pseries/readme.txt @@ -0,0 +1,5 @@ +Run the emulation with: + + qemu-system-ppc64 -M pseries -cpu POWER7 -m 256 -kernel output/images/vmlinux -append "console=hvc0 rootwait root=/dev/sda" -drive file=output/images/rootfs.ext2,if=scsi,index=0,format=raw -serial stdio -display curses # qemu_ppc64_pseries_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/board/qemu/ppc64le-powernv8/readme.txt b/board/qemu/ppc64le-powernv8/readme.txt new file mode 100644 index 00000000..b57c9746 --- /dev/null +++ b/board/qemu/ppc64le-powernv8/readme.txt @@ -0,0 +1,5 @@ +Run the emulation with: + +qemu-system-ppc64 -M powernv9 -kernel output/images/vmlinux -append "console=hvc0 rootwait root=/dev/nvme0n1" -device nvme,bus=pcie.3,addr=0x0,drive=drive0,serial=1234 -drive file=output/images/rootfs.ext2,if=none,id=drive0,format=raw,cache=none -device e1000e,netdev=net0,mac=C0:FF:EE:00:01:03,bus=pcie.1,addr=0x0 -netdev user,id=net0 -serial mon:stdio -nographic # qemu_ppc64le_powernv8_defconfig + +The login prompt will appear in the terminal window. diff --git a/board/qemu/ppc64le-pseries/readme.txt b/board/qemu/ppc64le-pseries/readme.txt new file mode 100644 index 00000000..3d5577aa --- /dev/null +++ b/board/qemu/ppc64le-pseries/readme.txt @@ -0,0 +1,5 @@ +Run the emulation with: + +qemu-system-ppc64 -M pseries,x-vof=on -cpu POWER8 -m 256 -kernel output/images/vmlinux -append "console=hvc0 rootwait root=/dev/sda" -drive file=output/images/rootfs.ext2,if=scsi,index=0,format=raw -serial stdio -display curses # qemu_ppc64le_pseries_defconfig + +The login prompt will appear in the terminal window. diff --git a/board/qemu/riscv32-virt/linux-nommu.config b/board/qemu/riscv32-virt/linux-nommu.config new file mode 100644 index 00000000..784b12f1 --- /dev/null +++ b/board/qemu/riscv32-virt/linux-nommu.config @@ -0,0 +1,21 @@ +CONFIG_BLK_DEV_INITRD=y +# CONFIG_MMU is not set +CONFIG_SOC_VIRT=y +CONFIG_NONPORTABLE=y +CONFIG_ARCH_RV32I=y +CONFIG_BINFMT_FLAT=y +CONFIG_SLOB=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_NETDEVICES=y +CONFIG_VIRTIO_BLK=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_VIRTIO_NET=y +CONFIG_EXT2_FS=y +CONFIG_PRINTK_TIME=y diff --git a/board/qemu/riscv32-virt/readme.txt b/board/qemu/riscv32-virt/readme.txt new file mode 100644 index 00000000..555924f9 --- /dev/null +++ b/board/qemu/riscv32-virt/readme.txt @@ -0,0 +1,7 @@ +Run Linux in emulation with: + + qemu-system-riscv32 -M virt -bios output/images/fw_jump.elf -kernel output/images/Image -append "rootwait root=/dev/vda ro" -drive file=output/images/rootfs.ext2,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -netdev user,id=net0 -device virtio-net-device,netdev=net0 -nographic # qemu_riscv32_virt_defconfig + + qemu-system-riscv32 -M virt -bios none -kernel output/images/Image -append "rootwait root=/dev/vda ro" -drive file=output/images/rootfs.ext2,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -nographic -cpu rv32,mmu=off -netdev user,id=eth0 -device virtio-net-device,netdev=eth0 # qemu_riscv32_nommu_virt_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/board/qemu/riscv64-virt-efi/assemble-flash-images b/board/qemu/riscv64-virt-efi/assemble-flash-images new file mode 100755 index 00000000..abcaa2c9 --- /dev/null +++ b/board/qemu/riscv64-virt-efi/assemble-flash-images @@ -0,0 +1,11 @@ +#! /bin/sh + +set -e + +BOARD_DIR="$(dirname "$0")" + +cp -f "${BOARD_DIR}"/grub.cfg "${BINARIES_DIR}"/efi-part/EFI/BOOT/grub.cfg + +# The QEMU riscv64 virt machine expects flash devices to be 32M. +truncate -s 32M "${BINARIES_DIR}"/RISCV_VIRT_CODE.fd +truncate -s 32M "${BINARIES_DIR}"/RISCV_VIRT_VARS.fd diff --git a/board/qemu/riscv64-virt-efi/genimage.cfg b/board/qemu/riscv64-virt-efi/genimage.cfg new file mode 100644 index 00000000..46950591 --- /dev/null +++ b/board/qemu/riscv64-virt-efi/genimage.cfg @@ -0,0 +1,34 @@ +image efi-part.vfat { + vfat { + file EFI { + image = "efi-part/EFI" + } + + file Image { + image = "Image" + } + } + + size = 64M +} + +image disk.img { + hdimage { + partition-table-type = "gpt" + } + + partition boot { + image = "efi-part.vfat" + partition-type-uuid = U + offset = 32K + bootable = true + } + + partition root { + # For partition-type-uuid value, see: + # https://uapi-group.org/specifications/specs/discoverable_partitions_specification/ + # SD_GPT_ROOT_RISCV64 + partition-type-uuid = 72ec70a6-cf74-40e6-bd49-4bda08e8f224 + image = "rootfs.ext2" + } +} diff --git a/board/qemu/riscv64-virt-efi/grub.cfg b/board/qemu/riscv64-virt-efi/grub.cfg new file mode 100644 index 00000000..d99e19c4 --- /dev/null +++ b/board/qemu/riscv64-virt-efi/grub.cfg @@ -0,0 +1,6 @@ +set default="0" +set timeout="5" + +menuentry "Buildroot" { + linux /Image root=PARTLABEL=root rootwait +} diff --git a/board/qemu/riscv64-virt-efi/readme.txt b/board/qemu/riscv64-virt-efi/readme.txt new file mode 100644 index 00000000..6b9651a0 --- /dev/null +++ b/board/qemu/riscv64-virt-efi/readme.txt @@ -0,0 +1,36 @@ +Intro +===== + +This is a RISC-V 64bit UEFI Linux boot demo in QEmu virt machine. + +Build +===== + + make qemu_riscv64_virt_efi_defconfig + make + +Emulation +========= + +Run the emulation with: + + qemu-system-riscv64 \ + -M virt,pflash0=pflash0,pflash1=pflash1,acpi=off \ + -smp 4 \ + -m 1024 \ + -nographic \ + -blockdev node-name=pflash0,driver=file,read-only=on,filename=output/images/RISCV_VIRT_CODE.fd \ + -blockdev node-name=pflash1,driver=file,filename=output/images/RISCV_VIRT_VARS.fd \ + \ + -drive file=output/images/disk.img,format=raw,id=hd0 \ + -device virtio-blk-device,drive=hd0 \ + \ + -netdev user,id=net0 \ + -device virtio-net-device,netdev=net0 # qemu_riscv64_virt_efi_defconfig + +Note: for information, qemu version >= 8.0.0 is needed for this UEFI +Linux demo. It introduced the two pflash memories (previous versions +had only one). The host-qemu package in Buildroot (enabled in this +defconfig) is sufficient to run this demo. In case another qemu is +used (for example, from the host OS), make sure to check the version +requirement. diff --git a/board/qemu/riscv64-virt/linux-nommu.config b/board/qemu/riscv64-virt/linux-nommu.config new file mode 100644 index 00000000..9adf4942 --- /dev/null +++ b/board/qemu/riscv64-virt/linux-nommu.config @@ -0,0 +1,22 @@ +CONFIG_ARCH_RV64I=y +CONFIG_64BIT=y +CONFIG_BLK_DEV_INITRD=y +# CONFIG_MMU is not set +CONFIG_SOC_VIRT=y +CONFIG_NONPORTABLE=y +CONFIG_BINFMT_FLAT=y +CONFIG_SLOB=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_NETDEVICES=y +CONFIG_VIRTIO_BLK=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_VIRTIO_NET=y +CONFIG_EXT2_FS=y +CONFIG_PRINTK_TIME=y diff --git a/board/qemu/riscv64-virt/readme.txt b/board/qemu/riscv64-virt/readme.txt new file mode 100644 index 00000000..f1c7bf41 --- /dev/null +++ b/board/qemu/riscv64-virt/readme.txt @@ -0,0 +1,7 @@ +Run Linux in emulation with: + + qemu-system-riscv64 -M virt -bios output/images/fw_jump.elf -kernel output/images/Image -append "rootwait root=/dev/vda ro" -drive file=output/images/rootfs.ext2,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -netdev user,id=net0 -device virtio-net-device,netdev=net0 -nographic # qemu_riscv64_virt_defconfig + + qemu-system-riscv64 -M virt -bios none -kernel output/images/Image -append "rootwait root=/dev/vda ro" -drive file=output/images/rootfs.ext2,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -nographic -cpu rv64,mmu=off -netdev user,id=net0 -device virtio-net-device,netdev=net0 # qemu_riscv64_nommu_virt_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/board/qemu/s390x/readme.txt b/board/qemu/s390x/readme.txt new file mode 100644 index 00000000..63e899c7 --- /dev/null +++ b/board/qemu/s390x/readme.txt @@ -0,0 +1,8 @@ +Run the emulation with: + + qemu-system-s390x -M s390-ccw-virtio -cpu max,zpci=on -m 4G -smp 2 \ + -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw \ + -append "rootwait root=/dev/vda net.ifnames=0 biosdevname=0" -display none -serial mon:stdio \ + -net nic,model=virtio -net user # qemu_s390x_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/board/qemu/sh4-r2d/linux.config b/board/qemu/sh4-r2d/linux.config new file mode 100644 index 00000000..a3d65445 --- /dev/null +++ b/board/qemu/sh4-r2d/linux.config @@ -0,0 +1,38 @@ +CONFIG_SYSVIPC=y +CONFIG_MODULES=y +CONFIG_CPU_SUBTYPE_SH7751R=y +CONFIG_MEMORY_START=0x0c000000 +CONFIG_FLATMEM_MANUAL=y +CONFIG_SH_RTS7751R2D=y +CONFIG_RTS7751R2D_PLUS=y +CONFIG_HEARTBEAT=y +CONFIG_PCI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +CONFIG_PATA_PLATFORM=y +CONFIG_NETDEVICES=y +CONFIG_8139CP=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_SH_SCI=y +CONFIG_SERIAL_SH_SCI_CONSOLE=y +CONFIG_SPI=y +CONFIG_SPI_SH_SCI=y +CONFIG_MFD_SM501=y +CONFIG_FB=y +CONFIG_FB_SH_MOBILE_LCDC=y +CONFIG_FB_SH_MOBILE_HDMI=y +CONFIG_FB_SM501=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_LOGO=y +CONFIG_SOUND=y +CONFIG_SND_YMFPCI=y +CONFIG_SOUND_PRIME=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_R9701=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/board/qemu/sh4-r2d/readme.txt b/board/qemu/sh4-r2d/readme.txt new file mode 100644 index 00000000..24c3676d --- /dev/null +++ b/board/qemu/sh4-r2d/readme.txt @@ -0,0 +1,6 @@ +Run the emulation with: + + qemu-system-sh4 -M r2d -kernel output/images/zImage -append "console=ttySC1,115200 noiotrap" -serial null -serial stdio -net nic,model=rtl8139 -net user # qemu_sh4_r2d_defconfig + +The login prompt will appear in the terminal that started Qemu. +The graphical window is the framebuffer. diff --git a/board/qemu/sh4eb-r2d/linux.config b/board/qemu/sh4eb-r2d/linux.config new file mode 100644 index 00000000..6ead626c --- /dev/null +++ b/board/qemu/sh4eb-r2d/linux.config @@ -0,0 +1,38 @@ +CONFIG_SYSVIPC=y +CONFIG_MODULES=y +CONFIG_CPU_SUBTYPE_SH7751R=y +CONFIG_MEMORY_START=0x0c000000 +CONFIG_FLATMEM_MANUAL=y +CONFIG_CPU_BIG_ENDIAN=y +CONFIG_SH_RTS7751R2D=y +CONFIG_RTS7751R2D_PLUS=y +CONFIG_HEARTBEAT=y +CONFIG_PCI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +CONFIG_PATA_PLATFORM=y +CONFIG_NETDEVICES=y +CONFIG_8139CP=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_SH_SCI=y +CONFIG_SERIAL_SH_SCI_CONSOLE=y +CONFIG_SPI=y +CONFIG_SPI_SH_SCI=y +CONFIG_MFD_SM501=y +CONFIG_FB=y +CONFIG_FB_SH_MOBILE_LCDC=y +CONFIG_FB_SH_MOBILE_HDMI=y +CONFIG_FB_SM501=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_LOGO=y +CONFIG_SND_YMFPCI=y +CONFIG_SOUND_PRIME=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_R9701=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/board/qemu/sh4eb-r2d/readme.txt b/board/qemu/sh4eb-r2d/readme.txt new file mode 100644 index 00000000..577c54cd --- /dev/null +++ b/board/qemu/sh4eb-r2d/readme.txt @@ -0,0 +1,6 @@ +Run the emulation with: + + qemu-system-sh4eb -M r2d -kernel output/images/zImage -append "console=ttySC1,115200 noiotrap" -serial null -serial stdio -net nic,model=rtl8139 -net user # qemu_sh4eb_r2d_defconfig + +The login prompt will appear in the terminal that started Qemu. +The graphical window is the framebuffer. diff --git a/board/qemu/sparc-ss10/linux.config b/board/qemu/sparc-ss10/linux.config new file mode 100644 index 00000000..cb8d01dc --- /dev/null +++ b/board/qemu/sparc-ss10/linux.config @@ -0,0 +1,31 @@ +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_SUN_OPENPROMFS=m +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_WIRELESS is not set +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SR=y +CONFIG_CHR_DEV_SG=y +CONFIG_SCSI_SUNESP=y +CONFIG_NETDEVICES=y +CONFIG_SUNLANCE=y +# CONFIG_WLAN is not set +CONFIG_INPUT_EVDEV=y +CONFIG_KEYBOARD_SUNKBD=y +CONFIG_MOUSE_SERIAL=y +CONFIG_SERIAL_SUNZILOG=y +CONFIG_SERIAL_SUNZILOG_CONSOLE=y +CONFIG_SERIAL_SUNSU=y +CONFIG_SERIAL_SUNSU_CONSOLE=y +CONFIG_SUN_OPENPROMIO=m +CONFIG_EXT4_FS=y +CONFIG_ISO9660_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/board/qemu/sparc-ss10/patches/linux-headers/linux-headers.hash b/board/qemu/sparc-ss10/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/qemu/sparc-ss10/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/qemu/sparc-ss10/patches/linux/linux.hash b/board/qemu/sparc-ss10/patches/linux/linux.hash new file mode 100644 index 00000000..9d0d5466 --- /dev/null +++ b/board/qemu/sparc-ss10/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# sha256 locally computed +sha256 9e723232d603ab45ebf043c34714c48f277ab195c29abcb8472f2a4c3a5a1995 linux-6.8.6.tar.xz diff --git a/board/qemu/sparc-ss10/readme.txt b/board/qemu/sparc-ss10/readme.txt new file mode 100644 index 00000000..d624b82d --- /dev/null +++ b/board/qemu/sparc-ss10/readme.txt @@ -0,0 +1,5 @@ +Run the emulation with: + + qemu-system-sparc -M SS-10 -kernel output/images/zImage -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/sda console=ttyS0,115200" -serial stdio -net nic,model=lance -net user # qemu_sparc_ss10_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/board/qemu/sparc64-sun4u/linux.config b/board/qemu/sparc64-sun4u/linux.config new file mode 100644 index 00000000..0e1e1687 --- /dev/null +++ b/board/qemu/sparc64-sun4u/linux.config @@ -0,0 +1,25 @@ +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_NO_HZ_IDLE=y +CONFIG_EMBEDDED=y +CONFIG_MODULES=y +CONFIG_PCI=y +CONFIG_SUN_OPENPROMFS=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +CONFIG_PATA_CMD64X=y +CONFIG_NETDEVICES=y +CONFIG_E1000=y +CONFIG_SERIAL_SUNSU=y +CONFIG_SERIAL_SUNSU_CONSOLE=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf-8" +CONFIG_MAGIC_SYSRQ=y diff --git a/board/qemu/sparc64-sun4u/readme.txt b/board/qemu/sparc64-sun4u/readme.txt new file mode 100644 index 00000000..17d8cbdf --- /dev/null +++ b/board/qemu/sparc64-sun4u/readme.txt @@ -0,0 +1,5 @@ +Run the emulation with: + + qemu-system-sparc64 -M sun4u -kernel output/images/vmlinux -append "rootwait root=/dev/sda console=ttyS0,115200" -serial stdio -drive file=output/images/rootfs.ext2,format=raw -net nic,model=e1000 -net user # qemu_sparc64_sun4u_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/board/qemu/start-qemu.sh.in b/board/qemu/start-qemu.sh.in new file mode 100644 index 00000000..38024b44 --- /dev/null +++ b/board/qemu/start-qemu.sh.in @@ -0,0 +1,28 @@ +#!/bin/sh + +BINARIES_DIR="${0%/*}/" +# shellcheck disable=SC2164 +cd "${BINARIES_DIR}" + +mode_serial=false +mode_sys_qemu=false +while [ "$1" ]; do + case "$1" in + --serial-only|serial-only) mode_serial=true; shift;; + --use-system-qemu) mode_sys_qemu=true; shift;; + --) shift; break;; + *) echo "unknown option: $1" >&2; exit 1;; + esac +done + +if ${mode_serial}; then + EXTRA_ARGS='@SERIAL_ARGS@' +else + EXTRA_ARGS='@DEFAULT_ARGS@' +fi + +if ! ${mode_sys_qemu}; then + export PATH="@HOST_DIR@/bin:${PATH}" +fi + +exec @QEMU_CMD_LINE@ ${EXTRA_ARGS} "$@" diff --git a/board/qemu/x86/linux.config b/board/qemu/x86/linux.config new file mode 100644 index 00000000..a4da99ff --- /dev/null +++ b/board/qemu/x86/linux.config @@ -0,0 +1,52 @@ +CONFIG_SYSVIPC=y +CONFIG_CGROUPS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_SMP=y +CONFIG_HYPERVISOR_GUEST=y +CONFIG_PARAVIRT=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_WIRELESS is not set +CONFIG_PCI=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_VIRTIO_BLK=y +CONFIG_BLK_DEV_SD=y +CONFIG_SCSI_VIRTIO=y +CONFIG_ATA=y +CONFIG_ATA_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_VIRTIO_NET=y +CONFIG_NE2K_PCI=y +CONFIG_8139CP=y +# CONFIG_WLAN is not set +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_DRM=y +CONFIG_DRM_QXL=y +CONFIG_DRM_BOCHS=y +CONFIG_DRM_VIRTIO_GPU=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_HDA_INTEL=y +CONFIG_SND_HDA_GENERIC=y +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_STORAGE=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_INPUT=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_EXT4_FS=y +CONFIG_AUTOFS4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/board/qemu/x86/post-build.sh b/board/qemu/x86/post-build.sh new file mode 100755 index 00000000..bf83a002 --- /dev/null +++ b/board/qemu/x86/post-build.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +set -u +set -e + +# Add a console on tty1 +if [ -e ${TARGET_DIR}/etc/inittab ]; then + grep -qE '^tty1::' ${TARGET_DIR}/etc/inittab || \ + sed -i '/GENERIC_SERIAL/a\ +tty1::respawn:/sbin/getty -L tty1 0 vt100 # QEMU graphical window' ${TARGET_DIR}/etc/inittab +fi diff --git a/board/qemu/x86/readme.txt b/board/qemu/x86/readme.txt new file mode 100644 index 00000000..a1f232e2 --- /dev/null +++ b/board/qemu/x86/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-i386 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append "rootwait root=/dev/vda console=tty1 console=ttyS0" -serial stdio -net nic,model=virtio -net user # qemu_x86_defconfig + +Optionally add -smp N to emulate a SMP system with N CPUs. + +The login prompt will appear in the graphical window. diff --git a/board/qemu/x86_64/linux.config b/board/qemu/x86_64/linux.config new file mode 100644 index 00000000..e1d2ce01 --- /dev/null +++ b/board/qemu/x86_64/linux.config @@ -0,0 +1,53 @@ +CONFIG_SYSVIPC=y +CONFIG_CGROUPS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_SMP=y +CONFIG_HYPERVISOR_GUEST=y +CONFIG_PARAVIRT=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_WIRELESS is not set +CONFIG_PCI=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_VIRTIO_BLK=y +CONFIG_BLK_DEV_SD=y +CONFIG_SCSI_VIRTIO=y +CONFIG_ATA=y +CONFIG_ATA_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_VIRTIO_NET=y +CONFIG_NE2K_PCI=y +CONFIG_8139CP=y +# CONFIG_WLAN is not set +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_DRM=y +CONFIG_DRM_QXL=y +CONFIG_DRM_BOCHS=y +CONFIG_DRM_VIRTIO_GPU=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_HDA_INTEL=y +CONFIG_SND_HDA_GENERIC=y +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_STORAGE=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_INPUT=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_EXT4_FS=y +CONFIG_AUTOFS4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_UNWINDER_FRAME_POINTER=y diff --git a/board/qemu/x86_64/post-build.sh b/board/qemu/x86_64/post-build.sh new file mode 100755 index 00000000..bf83a002 --- /dev/null +++ b/board/qemu/x86_64/post-build.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +set -u +set -e + +# Add a console on tty1 +if [ -e ${TARGET_DIR}/etc/inittab ]; then + grep -qE '^tty1::' ${TARGET_DIR}/etc/inittab || \ + sed -i '/GENERIC_SERIAL/a\ +tty1::respawn:/sbin/getty -L tty1 0 vt100 # QEMU graphical window' ${TARGET_DIR}/etc/inittab +fi diff --git a/board/qemu/x86_64/readme.txt b/board/qemu/x86_64/readme.txt new file mode 100644 index 00000000..2b2ae3be --- /dev/null +++ b/board/qemu/x86_64/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-x86_64 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append "rootwait root=/dev/vda console=tty1 console=ttyS0" -serial stdio -net nic,model=virtio -net user # qemu_x86_64_defconfig + +Optionally add -smp N to emulate a SMP system with N CPUs. + +The login prompt will appear in the graphical window. diff --git a/board/qemu/xtensa-lx60/linux-nommu.config b/board/qemu/xtensa-lx60/linux-nommu.config new file mode 100644 index 00000000..8077645e --- /dev/null +++ b/board/qemu/xtensa-lx60/linux-nommu.config @@ -0,0 +1,39 @@ +CONFIG_NO_HZ_IDLE=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_XTENSA_VARIANT_CUSTOM=y +CONFIG_XTENSA_VARIANT_CUSTOM_NAME="dc233c" +# CONFIG_XTENSA_VARIANT_MMU is not set +CONFIG_XTENSA_UNALIGNED_USER=y +CONFIG_PREEMPT=y +CONFIG_MEMMAP_CACHEATTR=0x2cccccc7 +CONFIG_KERNEL_LOAD_ADDRESS=0x00003000 +# CONFIG_PCI is not set +CONFIG_XTENSA_PLATFORM_XTFPGA=y +CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE="earlycon=uart8250,mmio32,0xfd050020,115200n8 console=ttyS0,115200n8 memmap=0x04000000@0" +CONFIG_DEFAULT_MEM_START=0x00000000 +CONFIG_BINFMT_FLAT=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IPV6 is not set +CONFIG_NETFILTER=y +CONFIG_DNS_RESOLVER=y +# CONFIG_WIRELESS is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_NETDEVICES=y +CONFIG_MARVELL_PHY=y +# CONFIG_WLAN is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_HWMON is not set +# CONFIG_VGA_CONSOLE is not set +CONFIG_TMPFS=y +CONFIG_FANOTIFY=y +CONFIG_PRINTK_TIME=y +# CONFIG_S32C1I_SELFTEST is not set diff --git a/board/qemu/xtensa-lx60/linux.config b/board/qemu/xtensa-lx60/linux.config new file mode 100644 index 00000000..625b8604 --- /dev/null +++ b/board/qemu/xtensa-lx60/linux.config @@ -0,0 +1,36 @@ +# CONFIG_SWAP is not set +# CONFIG_CROSS_MEMORY_ATTACH is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_XTENSA_VARIANT_DC233C=y +CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX=y +CONFIG_XTENSA_PLATFORM_XTFPGA=y +CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE="console=ttyS0,38400 memmap=0x04000000@0" +# CONFIG_COMPACTION is not set +# CONFIG_BOUNCE is not set +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_LRO is not set +# CONFIG_INET_DIAG is not set +# CONFIG_IPV6 is not set +# CONFIG_WIRELESS is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_NETDEVICES=y +# CONFIG_WLAN is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_HW_RANDOM is not set +# CONFIG_HWMON is not set +# CONFIG_VGA_CONSOLE is not set +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_LD_NO_RELAX=y +# CONFIG_S32C1I_SELFTEST is not set diff --git a/board/qemu/xtensa-lx60/readme.txt b/board/qemu/xtensa-lx60/readme.txt new file mode 100644 index 00000000..6f0e2710 --- /dev/null +++ b/board/qemu/xtensa-lx60/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-xtensa -M lx60 -cpu dc233c -monitor null -nographic -kernel output/images/Image.elf # qemu_xtensa_lx60_defconfig + + qemu-system-xtensa -M lx60 -cpu dc233c -monitor null -nographic -kernel output/images/Image.elf # qemu_xtensa_lx60_nommu_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/board/radxa/rock5b/extlinux.conf b/board/radxa/rock5b/extlinux.conf new file mode 100644 index 00000000..a1a531f0 --- /dev/null +++ b/board/radxa/rock5b/extlinux.conf @@ -0,0 +1,4 @@ +label Radxa Rock 5b Linux + kernel /boot/Image + devicetree /boot/rk3588-rock-5b.dtb + append root=/dev/mmcblk1p1 rw rootfstype=ext4 earlycon rootwait diff --git a/board/radxa/rock5b/genimage.cfg b/board/radxa/rock5b/genimage.cfg new file mode 100644 index 00000000..138ec26e --- /dev/null +++ b/board/radxa/rock5b/genimage.cfg @@ -0,0 +1,18 @@ +# SD card image for Radxa Rock 5b + +image sdcard.img { + hdimage { + partition-table-type = "hybrid" + } + + partition uboot { + in-partition-table = "false" + image = "u-boot-rockchip.bin" + offset = 32K + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/board/radxa/rock5b/linux.fragment b/board/radxa/rock5b/linux.fragment new file mode 100644 index 00000000..90f2f291 --- /dev/null +++ b/board/radxa/rock5b/linux.fragment @@ -0,0 +1,2 @@ +CONFIG_R8169=y +CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=y diff --git a/board/radxa/rock5b/patches/linux-headers/linux-headers.hash b/board/radxa/rock5b/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/radxa/rock5b/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/radxa/rock5b/patches/linux/linux.hash b/board/radxa/rock5b/patches/linux/linux.hash new file mode 100644 index 00000000..ba90c84f --- /dev/null +++ b/board/radxa/rock5b/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f68d9f5ffc0a24f850699b86c8aea8b8687de7384158d5ed3bede37de098d60c linux-6.7.4.tar.xz diff --git a/board/radxa/rock5b/patches/uboot/uboot.hash b/board/radxa/rock5b/patches/uboot/uboot.hash new file mode 100644 index 00000000..bc999536 --- /dev/null +++ b/board/radxa/rock5b/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b99611f1ed237bf3541bdc8434b68c96a6e05967061f992443cb30aabebef5b3 u-boot-2024.01.tar.bz2 diff --git a/board/radxa/rock5b/post-build.sh b/board/radxa/rock5b/post-build.sh new file mode 100755 index 00000000..d84a5da0 --- /dev/null +++ b/board/radxa/rock5b/post-build.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +BOARD_DIR="$(dirname "$0")" + +install -m 0644 -D "$BOARD_DIR"/extlinux.conf "$TARGET_DIR"/boot/extlinux/extlinux.conf diff --git a/board/radxa/rock5b/readme.txt b/board/radxa/rock5b/readme.txt new file mode 100644 index 00000000..441c28db --- /dev/null +++ b/board/radxa/rock5b/readme.txt @@ -0,0 +1,57 @@ +RADXA ROCK 5B +============== +https://wiki.radxa.com/Rock5/hardware/5b + +Build: +====== + $ make rock5b_defconfig + $ make + +Files created in output directory +================================= + +output/images +. +├── Image +├── rk3588_bl31_v1.40.elf +├── rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.12.bin +├── rk3588-rock-5b.dtb +├── rootfs.ext2 +├── rootfs.ext4 +├── rootfs.tar +├── sdcard.img +├── u-boot.bin +└── u-boot-rockchip.bin + +Creating bootable SD card: +========================== + +Simply invoke (as root) + +sudo dd if=output/images/sdcard.img of=/dev/sdX && sync + +Where X is your SD card device. + +Booting: +======== + +Serial console: +--------------- +The Rock 5B has a 40-pin GPIO header. Its layout can be seen here: +https://wiki.radxa.com/Rock5/hardware/5b/gpio + +The Uart pins are as follows: + +pin 6: gnd +pin 8: tx +pin 10: rx + +Baudrate for this board is 1500000. + +Login: +------ +Enter 'root' as login user, and the prompt is ready. + +wiki link: +---------- +https://forum.radxa.com/c/rock5 diff --git a/board/radxa/rockpi-n8/extlinux.conf b/board/radxa/rockpi-n8/extlinux.conf new file mode 100644 index 00000000..c323fe10 --- /dev/null +++ b/board/radxa/rockpi-n8/extlinux.conf @@ -0,0 +1,4 @@ +label RK3288_ROCKPI_N8 linux + kernel /zImage + devicetree /rk3288-rock-pi-n8.dtb + append console=ttyS2,115200n8 root=/dev/mmcblk0p4 rw rootwait diff --git a/board/radxa/rockpi-n8/genimage.cfg b/board/radxa/rockpi-n8/genimage.cfg new file mode 100644 index 00000000..bfcd92f5 --- /dev/null +++ b/board/radxa/rockpi-n8/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "rk3288-rock-pi-n8.dtb", + "extlinux" + } + } + + size = 16M +} + +image sdcard.img { + hdimage { + partition-table-type = "gpt" + } + + partition loader1 { + image = "idbloader.img" + offset = 32K + } + + partition loader2 { + image = "u-boot-dtb.img" + offset = 8M + } + + partition boot { + partition-type-uuid = F + bootable = "true" + image = "boot.vfat" + offset = 16M + } + + partition rootfs { + partition-type-uuid = 69dad710-2ce4-4e3c-b16c-21a1d49abed3 + image = "rootfs.ext4" + } +} diff --git a/board/radxa/rockpi-n8/post-build.sh b/board/radxa/rockpi-n8/post-build.sh new file mode 100755 index 00000000..ba29375c --- /dev/null +++ b/board/radxa/rockpi-n8/post-build.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +install -m 0644 -D $BOARD_DIR/extlinux.conf $BINARIES_DIR/extlinux/extlinux.conf diff --git a/board/radxa/rockpi-n8/readme.txt b/board/radxa/rockpi-n8/readme.txt new file mode 100644 index 00000000..ac83d5c8 --- /dev/null +++ b/board/radxa/rockpi-n8/readme.txt @@ -0,0 +1,61 @@ +RADXA ROCKPI-N8 +================ +https://wiki.radxa.com/RockpiN8 + +Build: +====== + $ make rock_pi_n8_defconfig + $ make + +Files created in output directory +================================= + +output/images +. +├── boot.vfat +├── extlinux +├── idbloader.img +├── rk3288-rock-pi-n8.dtb +├── rootfs.ext2 +├── rootfs.ext4 -> rootfs.ext2 +├── rootfs.tar +├── sdcard.img +├── u-boot.bin +├── u-boot-dtb.bin +├── u-boot-dtb.img +└── zImage + +Creating bootable SD card: +========================== + +Simply invoke (as root) + +sudo dd if=output/images/sdcard.img of=/dev/sdX && sync + +Where X is your SD card device. + +Booting: +======== + +Serial console: +--------------- +RockPi-N8 has a 40-pin GPIO header. The pin layout is as follows: + +pin 6: gnd +pin 8: tx +pin 10: rx + +Baudrate for this board is 115200. + +The boot order on rockpi-n8 is emmc, sd. If emmc contains a valid Image, the board +always boots from emmc. To boot from SD, erase emmc as per the guide: + +https://wiki.amarulasolutions.com/bsp/setup/rockchip/rk3399_emmc.html + +Login: +------ +Enter 'root' as login user, and the prompt is ready. + +wiki link: +---------- +https://wiki.amarulasolutions.com/bsp/rockchip/rk3288/rock-pi-n8.html diff --git a/board/raspberrypi/cmdline.txt b/board/raspberrypi/cmdline.txt new file mode 100644 index 00000000..155a5469 --- /dev/null +++ b/board/raspberrypi/cmdline.txt @@ -0,0 +1 @@ +root=/dev/mmcblk0p2 rootwait console=tty1 console=ttyAMA0,115200 diff --git a/board/raspberrypi/cmdline_5.txt b/board/raspberrypi/cmdline_5.txt new file mode 100644 index 00000000..ac457353 --- /dev/null +++ b/board/raspberrypi/cmdline_5.txt @@ -0,0 +1 @@ +root=/dev/mmcblk0p2 rootwait console=tty1 console=ttyAMA10,115200 diff --git a/board/raspberrypi/config_0w.txt b/board/raspberrypi/config_0w.txt new file mode 100644 index 00000000..123e09cf --- /dev/null +++ b/board/raspberrypi/config_0w.txt @@ -0,0 +1,29 @@ +# Please note that this is only a sample, we recommend you to change it to fit +# your needs. +# You should override this file using BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE. +# See http://buildroot.org/manual.html#rootfs-custom +# and http://elinux.org/RPiconfig for a description of config.txt syntax + +start_file=start.elf +fixup_file=fixup.dat + +kernel=zImage + +# To use an external initramfs file +#initramfs rootfs.cpio.gz + +# Disable overscan assuming the display supports displaying the full resolution +# If the text shown on the screen disappears off the edge, comment this out +disable_overscan=1 + +# How much memory in MB to assign to the GPU on Pi models having +# 256, 512 or 1024 MB total memory +gpu_mem_256=100 +gpu_mem_512=100 +gpu_mem_1024=100 + +# Enable UART0 for serial console on ttyAMA0 +dtoverlay=miniuart-bt + +# enable autoprobing of Bluetooth driver without need of hciattach/btattach +dtparam=krnbt=on diff --git a/board/raspberrypi/config_3.txt b/board/raspberrypi/config_3.txt new file mode 100644 index 00000000..123e09cf --- /dev/null +++ b/board/raspberrypi/config_3.txt @@ -0,0 +1,29 @@ +# Please note that this is only a sample, we recommend you to change it to fit +# your needs. +# You should override this file using BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE. +# See http://buildroot.org/manual.html#rootfs-custom +# and http://elinux.org/RPiconfig for a description of config.txt syntax + +start_file=start.elf +fixup_file=fixup.dat + +kernel=zImage + +# To use an external initramfs file +#initramfs rootfs.cpio.gz + +# Disable overscan assuming the display supports displaying the full resolution +# If the text shown on the screen disappears off the edge, comment this out +disable_overscan=1 + +# How much memory in MB to assign to the GPU on Pi models having +# 256, 512 or 1024 MB total memory +gpu_mem_256=100 +gpu_mem_512=100 +gpu_mem_1024=100 + +# Enable UART0 for serial console on ttyAMA0 +dtoverlay=miniuart-bt + +# enable autoprobing of Bluetooth driver without need of hciattach/btattach +dtparam=krnbt=on diff --git a/board/raspberrypi/config_3_64bit.txt b/board/raspberrypi/config_3_64bit.txt new file mode 100644 index 00000000..88206e9b --- /dev/null +++ b/board/raspberrypi/config_3_64bit.txt @@ -0,0 +1,32 @@ +# Please note that this is only a sample, we recommend you to change it to fit +# your needs. +# You should override this file using BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE. +# See http://buildroot.org/manual.html#rootfs-custom +# and http://elinux.org/RPiconfig for a description of config.txt syntax + +start_file=start.elf +fixup_file=fixup.dat + +kernel=Image + +# To use an external initramfs file +#initramfs rootfs.cpio.gz + +# Disable overscan assuming the display supports displaying the full resolution +# If the text shown on the screen disappears off the edge, comment this out +disable_overscan=1 + +# How much memory in MB to assign to the GPU on Pi models having +# 256, 512 or 1024 MB total memory +gpu_mem_256=100 +gpu_mem_512=100 +gpu_mem_1024=100 + +# Enable UART0 for serial console on ttyAMA0 +dtoverlay=miniuart-bt + +# enable autoprobing of Bluetooth driver without need of hciattach/btattach +dtparam=krnbt=on + +# enable 64bits support +arm_64bit=1 diff --git a/board/raspberrypi/config_3_qt5we.txt b/board/raspberrypi/config_3_qt5we.txt new file mode 100644 index 00000000..3d81a4e5 --- /dev/null +++ b/board/raspberrypi/config_3_qt5we.txt @@ -0,0 +1,26 @@ +# Please note that this is only a sample, we recommend you to change it to fit +# your needs. +# You should override this file using BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE. +# See http://buildroot.org/manual.html#rootfs-custom +# and http://elinux.org/RPiconfig for a description of config.txt syntax + +start_file=start.elf +fixup_file=fixup.dat + +kernel=zImage + +# To use an external initramfs file +#initramfs rootfs.cpio.gz + +# Disable overscan assuming the display supports displaying the full resolution +# If the text shown on the screen disappears off the edge, comment this out +disable_overscan=1 + +# How much memory in MB to assign to the GPU on Pi models having +# 256, 512 or 1024 MB total memory +gpu_mem_256=100 +gpu_mem_512=100 +gpu_mem_1024=200 + +# Enable UART0 for serial console on ttyAMA0 +dtoverlay=miniuart-bt diff --git a/board/raspberrypi/config_4.txt b/board/raspberrypi/config_4.txt new file mode 100644 index 00000000..9b77d23d --- /dev/null +++ b/board/raspberrypi/config_4.txt @@ -0,0 +1,29 @@ +# Please note that this is only a sample, we recommend you to change it to fit +# your needs. +# You should override this file using BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE. +# See http://buildroot.org/manual.html#rootfs-custom +# and http://elinux.org/RPiconfig for a description of config.txt syntax + +start_file=start4.elf +fixup_file=fixup4.dat + +kernel=zImage + +# To use an external initramfs file +#initramfs rootfs.cpio.gz + +# Disable overscan assuming the display supports displaying the full resolution +# If the text shown on the screen disappears off the edge, comment this out +disable_overscan=1 + +# How much memory in MB to assign to the GPU on Pi models having +# 256, 512 or 1024 MB total memory +gpu_mem_256=100 +gpu_mem_512=100 +gpu_mem_1024=100 + +# Enable UART0 for serial console on ttyAMA0 +dtoverlay=miniuart-bt + +# enable autoprobing of Bluetooth driver without need of hciattach/btattach +dtparam=krnbt=on diff --git a/board/raspberrypi/config_4_64bit.txt b/board/raspberrypi/config_4_64bit.txt new file mode 100644 index 00000000..fcb1c5c3 --- /dev/null +++ b/board/raspberrypi/config_4_64bit.txt @@ -0,0 +1,32 @@ +# Please note that this is only a sample, we recommend you to change it to fit +# your needs. +# You should override this file using BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE. +# See http://buildroot.org/manual.html#rootfs-custom +# and http://elinux.org/RPiconfig for a description of config.txt syntax + +start_file=start4.elf +fixup_file=fixup4.dat + +kernel=Image + +# To use an external initramfs file +#initramfs rootfs.cpio.gz + +# Disable overscan assuming the display supports displaying the full resolution +# If the text shown on the screen disappears off the edge, comment this out +disable_overscan=1 + +# How much memory in MB to assign to the GPU on Pi models having +# 256, 512 or 1024 MB total memory +gpu_mem_256=100 +gpu_mem_512=100 +gpu_mem_1024=100 + +# Enable UART0 for serial console on ttyAMA0 +dtoverlay=miniuart-bt + +# enable autoprobing of Bluetooth driver without need of hciattach/btattach +dtparam=krnbt=on + +# enable 64bits support +arm_64bit=1 diff --git a/board/raspberrypi/config_5.txt b/board/raspberrypi/config_5.txt new file mode 100644 index 00000000..bbed19fe --- /dev/null +++ b/board/raspberrypi/config_5.txt @@ -0,0 +1,14 @@ +# Please note that this is only a sample, we recommend you to change it to fit +# your needs. +# You should override this file using BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE. +# See http://buildroot.org/manual.html#rootfs-custom +# and http://elinux.org/RPiconfig for a description of config.txt syntax + +kernel=Image + +# To use an external initramfs file +#initramfs rootfs.cpio.gz + +# Disable overscan assuming the display supports displaying the full resolution +# If the text shown on the screen disappears off the edge, comment this out +disable_overscan=1 diff --git a/board/raspberrypi/config_cm4io.txt b/board/raspberrypi/config_cm4io.txt new file mode 100644 index 00000000..15751e71 --- /dev/null +++ b/board/raspberrypi/config_cm4io.txt @@ -0,0 +1,33 @@ +# Please note that this is only a sample, we recommend you to change it to fit +# your needs. +# You should override this file using BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE. +# See http://buildroot.org/manual.html#rootfs-custom +# and http://elinux.org/RPiconfig for a description of config.txt syntax + +start_file=start4.elf +fixup_file=fixup4.dat + +kernel=zImage + +# To use an external initramfs file +#initramfs rootfs.cpio.gz + +# Disable overscan assuming the display supports displaying the full resolution +# If the text shown on the screen disappears off the edge, comment this out +disable_overscan=1 + +# How much memory in MB to assign to the GPU on Pi models having +# 256, 512 or 1024 MB total memory +gpu_mem_256=100 +gpu_mem_512=100 +gpu_mem_1024=100 + +# Enable UART0 for serial console on ttyAMA0 +dtoverlay=miniuart-bt + +# enable RTC +dtparam=i2c_vc=on +dtoverlay=i2c-rtc,pcf85063a,i2c_csi_dsi + +# enable dwc2 USB controller (USB 2.0) +dtoverlay=dwc2,dr_mode=host diff --git a/board/raspberrypi/config_cm4io_64bit.txt b/board/raspberrypi/config_cm4io_64bit.txt new file mode 100644 index 00000000..4884bda5 --- /dev/null +++ b/board/raspberrypi/config_cm4io_64bit.txt @@ -0,0 +1,37 @@ +# Please note that this is only a sample, we recommend you to change it to fit +# your needs. +# You should override this file using BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE. +# See http://buildroot.org/manual.html#rootfs-custom +# and http://elinux.org/RPiconfig for a description of config.txt syntax + +start_file=start4.elf +fixup_file=fixup4.dat + +kernel=Image + +# To use an external initramfs file +#initramfs rootfs.cpio.gz + +# Disable overscan assuming the display supports displaying the full resolution +# If the text shown on the screen disappears off the edge, comment this out +disable_overscan=1 + +# How much memory in MB to assign to the GPU on Pi models having +# 256, 512 or 1024 MB total memory +gpu_mem_256=100 +gpu_mem_512=100 +gpu_mem_1024=100 + +# Enable UART0 for serial console on ttyAMA0 +dtoverlay=miniuart-bt + +# enable RTC +dtparam=i2c_vc=on +dtoverlay=i2c-rtc,pcf85063a,i2c_csi_dsi + +# enable dwc2 USB controller (USB 2.0) +dtoverlay=dwc2,dr_mode=host + +# enable 64bits support +arm_64bit=1 + diff --git a/board/raspberrypi/config_default.txt b/board/raspberrypi/config_default.txt new file mode 100644 index 00000000..c09ecca1 --- /dev/null +++ b/board/raspberrypi/config_default.txt @@ -0,0 +1,23 @@ +# Please note that this is only a sample, we recommend you to change it to fit +# your needs. +# You should override this file using BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE. +# See http://buildroot.org/manual.html#rootfs-custom +# and http://elinux.org/RPiconfig for a description of config.txt syntax + +start_file=start.elf +fixup_file=fixup.dat + +kernel=zImage + +# To use an external initramfs file +#initramfs rootfs.cpio.gz + +# Disable overscan assuming the display supports displaying the full resolution +# If the text shown on the screen disappears off the edge, comment this out +disable_overscan=1 + +# How much memory in MB to assign to the GPU on Pi models having +# 256, 512 or 1024 MB total memory +gpu_mem_256=100 +gpu_mem_512=100 +gpu_mem_1024=100 diff --git a/board/raspberrypi/config_zero2w.txt b/board/raspberrypi/config_zero2w.txt new file mode 100644 index 00000000..123e09cf --- /dev/null +++ b/board/raspberrypi/config_zero2w.txt @@ -0,0 +1,29 @@ +# Please note that this is only a sample, we recommend you to change it to fit +# your needs. +# You should override this file using BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE. +# See http://buildroot.org/manual.html#rootfs-custom +# and http://elinux.org/RPiconfig for a description of config.txt syntax + +start_file=start.elf +fixup_file=fixup.dat + +kernel=zImage + +# To use an external initramfs file +#initramfs rootfs.cpio.gz + +# Disable overscan assuming the display supports displaying the full resolution +# If the text shown on the screen disappears off the edge, comment this out +disable_overscan=1 + +# How much memory in MB to assign to the GPU on Pi models having +# 256, 512 or 1024 MB total memory +gpu_mem_256=100 +gpu_mem_512=100 +gpu_mem_1024=100 + +# Enable UART0 for serial console on ttyAMA0 +dtoverlay=miniuart-bt + +# enable autoprobing of Bluetooth driver without need of hciattach/btattach +dtparam=krnbt=on diff --git a/board/raspberrypi/genimage.cfg.in b/board/raspberrypi/genimage.cfg.in new file mode 100644 index 00000000..fd38b86a --- /dev/null +++ b/board/raspberrypi/genimage.cfg.in @@ -0,0 +1,25 @@ +image boot.vfat { + vfat { + files = { +#BOOT_FILES# + } + } + + 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/board/raspberrypi/linux-4k-page-size.fragment b/board/raspberrypi/linux-4k-page-size.fragment new file mode 100644 index 00000000..5df91df1 --- /dev/null +++ b/board/raspberrypi/linux-4k-page-size.fragment @@ -0,0 +1 @@ +CONFIG_ARM64_4K_PAGES=y diff --git a/board/raspberrypi/patches/linux-headers/linux-headers.hash b/board/raspberrypi/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/raspberrypi/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/raspberrypi/patches/linux/linux.hash b/board/raspberrypi/patches/linux/linux.hash new file mode 100644 index 00000000..8d43c251 --- /dev/null +++ b/board/raspberrypi/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 dab3052783c68c46a5bc645b1c38d9705da995ab42823566518b62eb1fa1ef97 linux-576cc10e1ed50a9eacffc7a05c796051d7343ea4.tar.gz diff --git a/board/raspberrypi/post-build.sh b/board/raspberrypi/post-build.sh new file mode 100755 index 00000000..73026e59 --- /dev/null +++ b/board/raspberrypi/post-build.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +set -u +set -e + +# Add a console on tty1 +if [ -e ${TARGET_DIR}/etc/inittab ]; then + grep -qE '^tty1::' ${TARGET_DIR}/etc/inittab || \ + sed -i '/GENERIC_SERIAL/a\ +tty1::respawn:/sbin/getty -L tty1 0 vt100 # HDMI console' ${TARGET_DIR}/etc/inittab +# systemd doesn't use /etc/inittab, enable getty.tty1.service instead +elif [ -d ${TARGET_DIR}/etc/systemd ]; then + mkdir -p "${TARGET_DIR}/etc/systemd/system/getty.target.wants" + ln -sf /lib/systemd/system/getty@.service \ + "${TARGET_DIR}/etc/systemd/system/getty.target.wants/getty@tty1.service" +fi diff --git a/board/raspberrypi/post-image.sh b/board/raspberrypi/post-image.sh new file mode 100755 index 00000000..9b9eac97 --- /dev/null +++ b/board/raspberrypi/post-image.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +set -e + +BOARD_DIR="$(dirname $0)" +BOARD_NAME="$(basename ${BOARD_DIR})" +GENIMAGE_CFG="${BOARD_DIR}/genimage-${BOARD_NAME}.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +# generate genimage from template if a board specific variant doesn't exists +if [ ! -e "${GENIMAGE_CFG}" ]; then + GENIMAGE_CFG="${BINARIES_DIR}/genimage.cfg" + FILES=() + + for i in "${BINARIES_DIR}"/*.dtb "${BINARIES_DIR}"/rpi-firmware/*; do + FILES+=( "${i#${BINARIES_DIR}/}" ) + done + + KERNEL=$(sed -n 's/^kernel=//p' "${BINARIES_DIR}/rpi-firmware/config.txt") + FILES+=( "${KERNEL}" ) + + BOOT_FILES=$(printf '\\t\\t\\t"%s",\\n' "${FILES[@]}") + sed "s|#BOOT_FILES#|${BOOT_FILES}|" "${BOARD_DIR}/genimage.cfg.in" \ + > "${GENIMAGE_CFG}" +fi + +# Pass an empty rootpath. genimage makes a full copy of the given rootpath to +# ${GENIMAGE_TMP}/root so passing TARGET_DIR would be a waste of time and disk +# space. We don't rely on genimage to build the rootfs image, just to insert a +# pre-built one in the disk image. + +trap 'rm -rf "${ROOTPATH_TMP}"' EXIT +ROOTPATH_TMP="$(mktemp -d)" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${ROOTPATH_TMP}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +exit $? diff --git a/board/raspberrypi/readme.txt b/board/raspberrypi/readme.txt new file mode 100644 index 00000000..81cd81a7 --- /dev/null +++ b/board/raspberrypi/readme.txt @@ -0,0 +1,172 @@ +Raspberry Pi + +Intro +===== + +These instructions apply to all models of the Raspberry Pi: + - the original models A and B, + - the "enhanced" models A+ and B+, + - the model B2 (aka Raspberry Pi 2) + - the model B3 (aka Raspberry Pi 3). + - the model B4 (aka Raspberry Pi 4). + - the model CM4 (aka Raspberry Pi Compute Module 4 and IO Board). + - the model B5 (aka Raspberry Pi 5). + +How to build it +=============== + +Configure Buildroot +------------------- + +There are several Raspberry Pi defconfig files in Buildroot, one for +each major variant, which you should base your work on: + +For models A, B, A+ or B+: + + $ make raspberrypi_defconfig + +For model Zero (model A+ in smaller form factor): + + $ make raspberrypi0_defconfig + +or for model Zero W (model Zero with wireless LAN and Bluetooth): + + $ make raspberrypi0w_defconfig + +For model Zero 2 W (model B3 in smaller form factor): + + $ make raspberrypizero2w_defconfig + +For model 2 B: + + $ make raspberrypi2_defconfig + +For model 3 B and B+: + + $ make raspberrypi3_defconfig + +or for model 3 B and B+ (64 bit): + + $ make raspberrypi3_64_defconfig + +For model 4 B: + + $ make raspberrypi4_defconfig + +or for model 4 B (64 bit): + + $ make raspberrypi4_64_defconfig + +For model CM4 (on IO Board): + + $ make raspberrypicm4io_defconfig + +or for CM4 (on IO Board - 64 bit): + + $ make raspberrypicm4io_64_defconfig + +For model 5 B: + + $ make raspberrypi5_defconfig + +Build the rootfs +---------------- + +Note: you will need to have access to the network, since Buildroot will +download the packages' sources. + +You may now build your rootfs with: + + $ make + +(This may take a while, consider getting yourself a coffee ;-) ) + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + +-- bcm2708-rpi-b-rev1.dtb [1] + +-- bcm2708-rpi-b.dtb [1] + +-- bcm2708-rpi-b-plus.dtb [1] + +-- bcm2708-rpi-cm.dtb [1] + +-- bcm2708-rpi-zero.dtb [1] + +-- bcm2708-rpi-zero-w.dtb [1] + +-- bcm2710-rpi-zero-2-w.dtb [1] + +-- bcm2709-rpi-2-b.dtb [1] + +-- bcm2710-rpi-2-b.dtb [1] + +-- bcm2710-rpi-3-b.dtb [1] + +-- bcm2710-rpi-3-b-plus.dtb [1] + +-- bcm2710-rpi-cm3.dtb [1] + +-- bcm2711-rpi-4-b.dtb [1] + +-- bcm2711-rpi-400.dtb [1] + +-- bcm2711-rpi-cm4.dtb [1] + +-- bcm2711-rpi-cm4s.dtb [1] + +-- bcm2712-rpi-5-b.dtb [1] + +-- bcm2712d0-rpi-5-b.dtb [1] + +-- boot.vfat + +-- rootfs.ext4 + +-- rpi-firmware/ + | +-- bootcode.bin + | +-- cmdline.txt + | +-- config.txt + | +-- fixup.dat [1] + | +-- fixup4.dat [1] + | +-- start.elf [1] + | +-- start4.elf [1] + | `-- overlays/ [2] + +-- sdcard.img + +-- Image [1] + `-- zImage [1] + +[1] Not all of them will be present, depending on the RaspberryPi + model you are using. + +[2] Only for the Raspberry Pi 3/4 Models (overlay miniuart-bt is needed + to enable the RPi3 serial console otherwise occupied by the bluetooth + chip). Alternative would be to disable the serial console in cmdline.txt + and /etc/inittab. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Insert the SDcard into your Raspberry Pi, and power it up. Your new system +should come up now and start two consoles: one on the serial port on +the P1 header, one on the HDMI output where you can login using a USB +keyboard. + +How to write to CM4 eMMC memory +=============================== + +For CM4 modules without eMMC memory see above for booting from SD card, +for CM4 modules with eMMC memory proceed as following: + +- fit jumper on IO Board header J2 to disable eMMC boot +- connect IO Board micro USB port (J11 USB slave) to your host linux system +- power up CM4/IO Board (lsusb command should show a '0a5c:2711 Broadcom Corp. + BCM2711 Boot' device) +- run 'sudo ./host/bin/rpiboot', output should look like the following: + Waiting for BCM2835/6/7/2711... + Loading embedded: bootcode4.bin + Sending bootcode.bin + Successful read 4 bytes + Waiting for BCM2835/6/7/2711... + Loading embedded: bootcode4.bin + Second stage boot server + Loading embedded: start4.elf + File read: start4.elf + Second stage boot server done + +- a USB mass storage device should show up (the CM4 eMMC memory), proceed + as described above to copy sdcard.img to it +- power down CM4/IO Board +- remove jumper on IO Board header J2 to re-enable eMMC boot +- power up CM4/IO Board diff --git a/board/raspberrypi0 b/board/raspberrypi0 new file mode 120000 index 00000000..fcdafc81 --- /dev/null +++ b/board/raspberrypi0 @@ -0,0 +1 @@ +raspberrypi \ No newline at end of file diff --git a/board/raspberrypi0w b/board/raspberrypi0w new file mode 120000 index 00000000..fcdafc81 --- /dev/null +++ b/board/raspberrypi0w @@ -0,0 +1 @@ +raspberrypi \ No newline at end of file diff --git a/board/raspberrypi2 b/board/raspberrypi2 new file mode 120000 index 00000000..fcdafc81 --- /dev/null +++ b/board/raspberrypi2 @@ -0,0 +1 @@ +raspberrypi \ No newline at end of file diff --git a/board/raspberrypi3 b/board/raspberrypi3 new file mode 120000 index 00000000..fcdafc81 --- /dev/null +++ b/board/raspberrypi3 @@ -0,0 +1 @@ +raspberrypi \ No newline at end of file diff --git a/board/raspberrypi3-64 b/board/raspberrypi3-64 new file mode 120000 index 00000000..fcdafc81 --- /dev/null +++ b/board/raspberrypi3-64 @@ -0,0 +1 @@ +raspberrypi \ No newline at end of file diff --git a/board/raspberrypi4 b/board/raspberrypi4 new file mode 120000 index 00000000..fcdafc81 --- /dev/null +++ b/board/raspberrypi4 @@ -0,0 +1 @@ +raspberrypi \ No newline at end of file diff --git a/board/raspberrypi4-64 b/board/raspberrypi4-64 new file mode 120000 index 00000000..fcdafc81 --- /dev/null +++ b/board/raspberrypi4-64 @@ -0,0 +1 @@ +raspberrypi \ No newline at end of file diff --git a/board/raspberrypi5 b/board/raspberrypi5 new file mode 120000 index 00000000..fcdafc81 --- /dev/null +++ b/board/raspberrypi5 @@ -0,0 +1 @@ +raspberrypi \ No newline at end of file diff --git a/board/raspberrypicm4io b/board/raspberrypicm4io new file mode 120000 index 00000000..fcdafc81 --- /dev/null +++ b/board/raspberrypicm4io @@ -0,0 +1 @@ +raspberrypi \ No newline at end of file diff --git a/board/raspberrypicm4io-64 b/board/raspberrypicm4io-64 new file mode 120000 index 00000000..fcdafc81 --- /dev/null +++ b/board/raspberrypicm4io-64 @@ -0,0 +1 @@ +raspberrypi \ No newline at end of file diff --git a/board/raspberrypizero2w b/board/raspberrypizero2w new file mode 120000 index 00000000..fcdafc81 --- /dev/null +++ b/board/raspberrypizero2w @@ -0,0 +1 @@ +raspberrypi \ No newline at end of file diff --git a/board/roseapplepi/genimage.cfg b/board/roseapplepi/genimage.cfg new file mode 100644 index 00000000..4c5a8de9 --- /dev/null +++ b/board/roseapplepi/genimage.cfg @@ -0,0 +1,45 @@ +# Minimal SD card image for the Roseapple Pi +# +image boot.vfat { + vfat { + files = { + "uEnv.txt", + "uImage" + } + + file kernel.dtb { + image = "owl-s500-roseapplepi.dtb" + } + } + + size = 128M +} + +image sdcard.img { + hdimage { + } + + partition s500-bootloader { + in-partition-table = "no" + image = "s500-bootloader.bin" + offset = 0x200200 # 2MB + 512B + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-dtb.img" + offset = 3M + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/roseapplepi/linux.config b/board/roseapplepi/linux.config new file mode 100644 index 00000000..89e7c891 --- /dev/null +++ b/board/roseapplepi/linux.config @@ -0,0 +1,70 @@ +# CONFIG_SWAP is not set +# CONFIG_CROSS_MEMORY_ATTACH is not set +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +# CONFIG_CPU_ISOLATION is not set +# CONFIG_KALLSYMS is not set +# CONFIG_RSEQ is not set +CONFIG_EMBEDDED=y +# CONFIG_SLUB_DEBUG is not set +# CONFIG_COMPAT_BRK is not set +CONFIG_ARCH_ACTIONS=y +CONFIG_SMP=y +CONFIG_ARM_PSCI=y +CONFIG_HIGHMEM=y +CONFIG_VFP=y +CONFIG_NEON=y +# CONFIG_SUSPEND is not set +# CONFIG_STACKPROTECTOR is not set +# CONFIG_MQ_IOSCHED_KYBER is not set +# CONFIG_COREDUMP is not set +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_INET_DIAG is not set +# CONFIG_IPV6 is not set +# CONFIG_WIRELESS is not set +# CONFIG_ETHTOOL_NETLINK is not set +CONFIG_NETDEVICES=y +CONFIG_OWL_EMAC=y +CONFIG_REALTEK_PHY=y +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_MISC=y +CONFIG_INPUT_ATC260X_ONKEY=y +# CONFIG_VT is not set +CONFIG_SERIAL_OWL=y +# CONFIG_HW_RANDOM is not set +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_OWL=y +CONFIG_PINCTRL=y +CONFIG_PINCTRL_OWL=y +CONFIG_PINCTRL_S500=y +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_ATC260X=y +CONFIG_MFD_ATC260X_I2C=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_ATC260X=y +# CONFIG_HID is not set +# CONFIG_USB_SUPPORT is not set +CONFIG_MMC=y +CONFIG_MMC_OWL=y +CONFIG_DMADEVICES=y +CONFIG_OWL_DMA=y +# CONFIG_VIRTIO_MENU is not set +# CONFIG_VHOST_MENU is not set +# CONFIG_IOMMU_SUPPORT is not set +CONFIG_EXT4_FS=y +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +# CONFIG_MISC_FILESYSTEMS is not set +# CONFIG_NETWORK_FILESYSTEMS is not set +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ISO8859_1=y +# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set +# CONFIG_CRYPTO_HW is not set +# CONFIG_FTRACE is not set +# CONFIG_RUNTIME_TESTING_MENU is not set diff --git a/board/roseapplepi/patches/uboot/0001-compiler-.h-sync-include-linux-compiler-.h-with-Linu.patch b/board/roseapplepi/patches/uboot/0001-compiler-.h-sync-include-linux-compiler-.h-with-Linu.patch new file mode 100644 index 00000000..ae19a490 --- /dev/null +++ b/board/roseapplepi/patches/uboot/0001-compiler-.h-sync-include-linux-compiler-.h-with-Linu.patch @@ -0,0 +1,809 @@ +From 9b2c282b348dfe966bbba967dc7a45ce817cce50 Mon Sep 17 00:00:00 2001 +From: Tom Rini +Date: Mon, 29 Feb 2016 11:34:15 -0500 +Subject: [PATCH] compiler*.h: sync include/linux/compiler*.h with Linux + 4.5-rc6 + +Copy these from Linux v4.5-rc6 tag. + +This is needed so that we can keep up with newer gcc versions. Note +that we don't have the uapi/ hierarchy from the kernel so continue to +use + +Signed-off-by: Tom Rini +Signed-off-by: Peter Korsgaard +--- + include/linux/compiler-gcc.h | 259 ++++++++++++++++++++++++++++++++--------- + include/linux/compiler-gcc3.h | 23 ---- + include/linux/compiler-gcc4.h | 88 -------------- + include/linux/compiler-gcc5.h | 65 ----------- + include/linux/compiler-intel.h | 5 + + include/linux/compiler.h | 178 ++++++++++++++++++++++++++-- + 6 files changed, 383 insertions(+), 235 deletions(-) + delete mode 100644 include/linux/compiler-gcc3.h + delete mode 100644 include/linux/compiler-gcc4.h + delete mode 100644 include/linux/compiler-gcc5.h + +diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h +index e057bd2a84..22ab246fee 100644 +--- a/include/linux/compiler-gcc.h ++++ b/include/linux/compiler-gcc.h +@@ -5,14 +5,28 @@ + /* + * Common definitions for all gcc versions go here. + */ +-#define GCC_VERSION (__GNUC__ * 10000 \ +- + __GNUC_MINOR__ * 100 \ +- + __GNUC_PATCHLEVEL__) +- ++#define GCC_VERSION (__GNUC__ * 10000 \ ++ + __GNUC_MINOR__ * 100 \ ++ + __GNUC_PATCHLEVEL__) + + /* Optimization barrier */ ++ + /* The "volatile" is due to gcc bugs */ + #define barrier() __asm__ __volatile__("": : :"memory") ++/* ++ * This version is i.e. to prevent dead stores elimination on @ptr ++ * where gcc and llvm may behave differently when otherwise using ++ * normal barrier(): while gcc behavior gets along with a normal ++ * barrier(), llvm needs an explicit input variable to be assumed ++ * clobbered. The issue is as follows: while the inline asm might ++ * access any memory it wants, the compiler could have fit all of ++ * @ptr into memory registers instead, and since @ptr never escaped ++ * from that, it proofed that the inline asm wasn't touching any of ++ * it. This version works well with both compilers, i.e. we're telling ++ * the compiler that the inline asm absolutely may see the contents ++ * of @ptr. See also: https://llvm.org/bugs/show_bug.cgi?id=15495 ++ */ ++#define barrier_data(ptr) __asm__ __volatile__("": :"r"(ptr) :"memory") + + /* + * This macro obfuscates arithmetic on a variable address so that gcc +@@ -32,58 +46,63 @@ + * the inline assembly constraint from =g to =r, in this particular + * case either is valid. + */ +-#define RELOC_HIDE(ptr, off) \ +- ({ unsigned long __ptr; \ +- __asm__ ("" : "=r"(__ptr) : "0"(ptr)); \ +- (typeof(ptr)) (__ptr + (off)); }) ++#define RELOC_HIDE(ptr, off) \ ++({ \ ++ unsigned long __ptr; \ ++ __asm__ ("" : "=r"(__ptr) : "0"(ptr)); \ ++ (typeof(ptr)) (__ptr + (off)); \ ++}) + + /* Make the optimizer believe the variable can be manipulated arbitrarily. */ +-#define OPTIMIZER_HIDE_VAR(var) __asm__ ("" : "=r" (var) : "0" (var)) ++#define OPTIMIZER_HIDE_VAR(var) \ ++ __asm__ ("" : "=r" (var) : "0" (var)) + + #ifdef __CHECKER__ +-#define __must_be_array(arr) 0 ++#define __must_be_array(a) 0 + #else + /* &a[0] degrades to a pointer: a different type from an array */ +-#define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0])) ++#define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0])) + #endif + + /* + * Force always-inline if the user requests it so via the .config, + * or if gcc is too old: + */ +-#if !defined(CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING) || \ ++#if !defined(CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING) || \ + !defined(CONFIG_OPTIMIZE_INLINING) || (__GNUC__ < 4) +-# define inline inline __attribute__((always_inline)) notrace +-# define __inline__ __inline__ __attribute__((always_inline)) notrace +-# define __inline __inline __attribute__((always_inline)) notrace ++#define inline inline __attribute__((always_inline)) notrace ++#define __inline__ __inline__ __attribute__((always_inline)) notrace ++#define __inline __inline __attribute__((always_inline)) notrace + #else + /* A lot of inline functions can cause havoc with function tracing */ +-# define inline inline notrace +-# define __inline__ __inline__ notrace +-# define __inline __inline notrace ++#define inline inline notrace ++#define __inline__ __inline__ notrace ++#define __inline __inline notrace + #endif + +-#define __deprecated __attribute__((deprecated)) +-#ifndef __packed +-#define __packed __attribute__((packed)) +-#endif +-#ifndef __weak +-#define __weak __attribute__((weak)) +-#endif ++#define __always_inline inline __attribute__((always_inline)) ++#define noinline __attribute__((noinline)) ++ ++#define __deprecated __attribute__((deprecated)) ++#define __packed __attribute__((packed)) ++#define __weak __attribute__((weak)) ++#define __alias(symbol) __attribute__((alias(#symbol))) + + /* +- * it doesn't make sense on ARM (currently the only user of __naked) to trace +- * naked functions because then mcount is called without stack and frame pointer +- * being set up and there is no chance to restore the lr register to the value +- * before mcount was called. ++ * it doesn't make sense on ARM (currently the only user of __naked) ++ * to trace naked functions because then mcount is called without ++ * stack and frame pointer being set up and there is no chance to ++ * restore the lr register to the value before mcount was called. ++ * ++ * The asm() bodies of naked functions often depend on standard calling ++ * conventions, therefore they must be noinline and noclone. + * +- * The asm() bodies of naked functions often depend on standard calling conventions, +- * therefore they must be noinline and noclone. GCC 4.[56] currently fail to enforce +- * this, so we must do so ourselves. See GCC PR44290. ++ * GCC 4.[56] currently fail to enforce this, so we must do so ourselves. ++ * See GCC PR44290. + */ +-#define __naked __attribute__((naked)) noinline __noclone notrace ++#define __naked __attribute__((naked)) noinline __noclone notrace + +-#define __noreturn __attribute__((noreturn)) ++#define __noreturn __attribute__((noreturn)) + + /* + * From the GCC manual: +@@ -95,34 +114,170 @@ + * would be. + * [...] + */ +-#ifndef __pure +-#define __pure __attribute__((pure)) ++#define __pure __attribute__((pure)) ++#define __aligned(x) __attribute__((aligned(x))) ++#define __printf(a, b) __attribute__((format(printf, a, b))) ++#define __scanf(a, b) __attribute__((format(scanf, a, b))) ++#define __attribute_const__ __attribute__((__const__)) ++#define __maybe_unused __attribute__((unused)) ++#define __always_unused __attribute__((unused)) ++ ++/* gcc version specific checks */ ++ ++#if GCC_VERSION < 30200 ++# error Sorry, your compiler is too old - please upgrade it. ++#endif ++ ++#if GCC_VERSION < 30300 ++# define __used __attribute__((__unused__)) ++#else ++# define __used __attribute__((__used__)) ++#endif ++ ++#ifdef CONFIG_GCOV_KERNEL ++# if GCC_VERSION < 30400 ++# error "GCOV profiling support for gcc versions below 3.4 not included" ++# endif /* __GNUC_MINOR__ */ ++#endif /* CONFIG_GCOV_KERNEL */ ++ ++#if GCC_VERSION >= 30400 ++#define __must_check __attribute__((warn_unused_result)) ++#endif ++ ++#if GCC_VERSION >= 40000 ++ ++/* GCC 4.1.[01] miscompiles __weak */ ++#ifdef __KERNEL__ ++# if GCC_VERSION >= 40100 && GCC_VERSION <= 40101 ++# error Your version of gcc miscompiles the __weak directive ++# endif ++#endif ++ ++#define __used __attribute__((__used__)) ++#define __compiler_offsetof(a, b) \ ++ __builtin_offsetof(a, b) ++ ++#if GCC_VERSION >= 40100 && GCC_VERSION < 40600 ++# define __compiletime_object_size(obj) __builtin_object_size(obj, 0) ++#endif ++ ++#if GCC_VERSION >= 40300 ++/* Mark functions as cold. gcc will assume any path leading to a call ++ * to them will be unlikely. This means a lot of manual unlikely()s ++ * are unnecessary now for any paths leading to the usual suspects ++ * like BUG(), printk(), panic() etc. [but let's keep them for now for ++ * older compilers] ++ * ++ * Early snapshots of gcc 4.3 don't support this and we can't detect this ++ * in the preprocessor, but we can live with this because they're unreleased. ++ * Maketime probing would be overkill here. ++ * ++ * gcc also has a __attribute__((__hot__)) to move hot functions into ++ * a special section, but I don't see any sense in this right now in ++ * the kernel context ++ */ ++#define __cold __attribute__((__cold__)) ++ ++#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) ++ ++#ifndef __CHECKER__ ++# define __compiletime_warning(message) __attribute__((warning(message))) ++# define __compiletime_error(message) __attribute__((error(message))) ++#endif /* __CHECKER__ */ ++#endif /* GCC_VERSION >= 40300 */ ++ ++#if GCC_VERSION >= 40500 ++/* ++ * Mark a position in code as unreachable. This can be used to ++ * suppress control flow warnings after asm blocks that transfer ++ * control elsewhere. ++ * ++ * Early snapshots of gcc 4.5 don't support this and we can't detect ++ * this in the preprocessor, but we can live with this because they're ++ * unreleased. Really, we need to have autoconf for the kernel. ++ */ ++#define unreachable() __builtin_unreachable() ++ ++/* Mark a function definition as prohibited from being cloned. */ ++#define __noclone __attribute__((__noclone__)) ++ ++#endif /* GCC_VERSION >= 40500 */ ++ ++#if GCC_VERSION >= 40600 ++/* ++ * When used with Link Time Optimization, gcc can optimize away C functions or ++ * variables which are referenced only from assembly code. __visible tells the ++ * optimizer that something else uses this function or variable, thus preventing ++ * this. ++ */ ++#define __visible __attribute__((externally_visible)) + #endif +-#ifndef __aligned +-#define __aligned(x) __attribute__((aligned(x))) ++ ++ ++#if GCC_VERSION >= 40900 && !defined(__CHECKER__) ++/* ++ * __assume_aligned(n, k): Tell the optimizer that the returned ++ * pointer can be assumed to be k modulo n. The second argument is ++ * optional (default 0), so we use a variadic macro to make the ++ * shorthand. ++ * ++ * Beware: Do not apply this to functions which may return ++ * ERR_PTRs. Also, it is probably unwise to apply it to functions ++ * returning extra information in the low bits (but in that case the ++ * compiler should see some alignment anyway, when the return value is ++ * massaged by 'flags = ptr & 3; ptr &= ~3;'). ++ */ ++#define __assume_aligned(a, ...) __attribute__((__assume_aligned__(a, ## __VA_ARGS__))) + #endif +-#define __printf(a, b) __attribute__((format(printf, a, b))) +-#define __scanf(a, b) __attribute__((format(scanf, a, b))) +-#define noinline __attribute__((noinline)) +-#define __attribute_const__ __attribute__((__const__)) +-#define __maybe_unused __attribute__((unused)) +-#define __always_unused __attribute__((unused)) + +-#define __gcc_header(x) #x +-#define _gcc_header(x) __gcc_header(linux/compiler-gcc##x.h) +-#define gcc_header(x) _gcc_header(x) +-#include gcc_header(__GNUC__) ++/* ++ * GCC 'asm goto' miscompiles certain code sequences: ++ * ++ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670 ++ * ++ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek. ++ * ++ * (asm goto is automatically volatile - the naming reflects this.) ++ */ ++#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) ++ ++#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP ++#if GCC_VERSION >= 40400 ++#define __HAVE_BUILTIN_BSWAP32__ ++#define __HAVE_BUILTIN_BSWAP64__ ++#endif ++#if GCC_VERSION >= 40800 || (defined(__powerpc__) && GCC_VERSION >= 40600) ++#define __HAVE_BUILTIN_BSWAP16__ ++#endif ++#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ ++ ++#if GCC_VERSION >= 50000 ++#define KASAN_ABI_VERSION 4 ++#elif GCC_VERSION >= 40902 ++#define KASAN_ABI_VERSION 3 ++#endif ++ ++#if GCC_VERSION >= 40902 ++/* ++ * Tell the compiler that address safety instrumentation (KASAN) ++ * should not be applied to that function. ++ * Conflicts with inlining: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67368 ++ */ ++#define __no_sanitize_address __attribute__((no_sanitize_address)) ++#endif ++ ++#endif /* gcc version >= 40000 specific checks */ + + #if !defined(__noclone) + #define __noclone /* not needed */ + #endif + ++#if !defined(__no_sanitize_address) ++#define __no_sanitize_address ++#endif ++ + /* + * A trick to suppress uninitialized variable warning without generating any + * code + */ + #define uninitialized_var(x) x = x +- +-#ifndef __always_inline +-#define __always_inline inline __attribute__((always_inline)) +-#endif +diff --git a/include/linux/compiler-gcc3.h b/include/linux/compiler-gcc3.h +deleted file mode 100644 +index 7d89febe4d..0000000000 +--- a/include/linux/compiler-gcc3.h ++++ /dev/null +@@ -1,23 +0,0 @@ +-#ifndef __LINUX_COMPILER_H +-#error "Please don't include directly, include instead." +-#endif +- +-#if GCC_VERSION < 30200 +-# error Sorry, your compiler is too old - please upgrade it. +-#endif +- +-#if GCC_VERSION >= 30300 +-# define __used __attribute__((__used__)) +-#else +-# define __used __attribute__((__unused__)) +-#endif +- +-#if GCC_VERSION >= 30400 +-#define __must_check __attribute__((warn_unused_result)) +-#endif +- +-#ifdef CONFIG_GCOV_KERNEL +-# if GCC_VERSION < 30400 +-# error "GCOV profiling support for gcc versions below 3.4 not included" +-# endif /* __GNUC_MINOR__ */ +-#endif /* CONFIG_GCOV_KERNEL */ +diff --git a/include/linux/compiler-gcc4.h b/include/linux/compiler-gcc4.h +deleted file mode 100644 +index 2507fd2a1e..0000000000 +--- a/include/linux/compiler-gcc4.h ++++ /dev/null +@@ -1,88 +0,0 @@ +-#ifndef __LINUX_COMPILER_H +-#error "Please don't include directly, include instead." +-#endif +- +-/* GCC 4.1.[01] miscompiles __weak */ +-#ifdef __KERNEL__ +-# if GCC_VERSION >= 40100 && GCC_VERSION <= 40101 +-# error Your version of gcc miscompiles the __weak directive +-# endif +-#endif +- +-#define __used __attribute__((__used__)) +-#define __must_check __attribute__((warn_unused_result)) +-#define __compiler_offsetof(a,b) __builtin_offsetof(a,b) +- +-#if GCC_VERSION >= 40100 && GCC_VERSION < 40600 +-# define __compiletime_object_size(obj) __builtin_object_size(obj, 0) +-#endif +- +-#if GCC_VERSION >= 40300 +-/* Mark functions as cold. gcc will assume any path leading to a call +- to them will be unlikely. This means a lot of manual unlikely()s +- are unnecessary now for any paths leading to the usual suspects +- like BUG(), printk(), panic() etc. [but let's keep them for now for +- older compilers] +- +- Early snapshots of gcc 4.3 don't support this and we can't detect this +- in the preprocessor, but we can live with this because they're unreleased. +- Maketime probing would be overkill here. +- +- gcc also has a __attribute__((__hot__)) to move hot functions into +- a special section, but I don't see any sense in this right now in +- the kernel context */ +-#define __cold __attribute__((__cold__)) +- +-#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) +- +-#ifndef __CHECKER__ +-# define __compiletime_warning(message) __attribute__((warning(message))) +-# define __compiletime_error(message) __attribute__((error(message))) +-#endif /* __CHECKER__ */ +-#endif /* GCC_VERSION >= 40300 */ +- +-#if GCC_VERSION >= 40500 +-/* +- * Mark a position in code as unreachable. This can be used to +- * suppress control flow warnings after asm blocks that transfer +- * control elsewhere. +- * +- * Early snapshots of gcc 4.5 don't support this and we can't detect +- * this in the preprocessor, but we can live with this because they're +- * unreleased. Really, we need to have autoconf for the kernel. +- */ +-#define unreachable() __builtin_unreachable() +- +-/* Mark a function definition as prohibited from being cloned. */ +-#define __noclone __attribute__((__noclone__)) +- +-#endif /* GCC_VERSION >= 40500 */ +- +-#if GCC_VERSION >= 40600 +-/* +- * Tell the optimizer that something else uses this function or variable. +- */ +-#define __visible __attribute__((externally_visible)) +-#endif +- +-/* +- * GCC 'asm goto' miscompiles certain code sequences: +- * +- * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670 +- * +- * Work it around via a compiler barrier quirk suggested by Jakub Jelinek. +- * Fixed in GCC 4.8.2 and later versions. +- * +- * (asm goto is automatically volatile - the naming reflects this.) +- */ +-#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) +- +-#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP +-#if GCC_VERSION >= 40400 +-#define __HAVE_BUILTIN_BSWAP32__ +-#define __HAVE_BUILTIN_BSWAP64__ +-#endif +-#if GCC_VERSION >= 40800 || (defined(__powerpc__) && GCC_VERSION >= 40600) +-#define __HAVE_BUILTIN_BSWAP16__ +-#endif +-#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ +diff --git a/include/linux/compiler-gcc5.h b/include/linux/compiler-gcc5.h +deleted file mode 100644 +index c8c5659525..0000000000 +--- a/include/linux/compiler-gcc5.h ++++ /dev/null +@@ -1,65 +0,0 @@ +-#ifndef __LINUX_COMPILER_H +-#error "Please don't include directly, include instead." +-#endif +- +-#define __used __attribute__((__used__)) +-#define __must_check __attribute__((warn_unused_result)) +-#define __compiler_offsetof(a, b) __builtin_offsetof(a, b) +- +-/* Mark functions as cold. gcc will assume any path leading to a call +- to them will be unlikely. This means a lot of manual unlikely()s +- are unnecessary now for any paths leading to the usual suspects +- like BUG(), printk(), panic() etc. [but let's keep them for now for +- older compilers] +- +- Early snapshots of gcc 4.3 don't support this and we can't detect this +- in the preprocessor, but we can live with this because they're unreleased. +- Maketime probing would be overkill here. +- +- gcc also has a __attribute__((__hot__)) to move hot functions into +- a special section, but I don't see any sense in this right now in +- the kernel context */ +-#define __cold __attribute__((__cold__)) +- +-#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) +- +-#ifndef __CHECKER__ +-# define __compiletime_warning(message) __attribute__((warning(message))) +-# define __compiletime_error(message) __attribute__((error(message))) +-#endif /* __CHECKER__ */ +- +-/* +- * Mark a position in code as unreachable. This can be used to +- * suppress control flow warnings after asm blocks that transfer +- * control elsewhere. +- * +- * Early snapshots of gcc 4.5 don't support this and we can't detect +- * this in the preprocessor, but we can live with this because they're +- * unreleased. Really, we need to have autoconf for the kernel. +- */ +-#define unreachable() __builtin_unreachable() +- +-/* Mark a function definition as prohibited from being cloned. */ +-#define __noclone __attribute__((__noclone__)) +- +-/* +- * Tell the optimizer that something else uses this function or variable. +- */ +-#define __visible __attribute__((externally_visible)) +- +-/* +- * GCC 'asm goto' miscompiles certain code sequences: +- * +- * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670 +- * +- * Work it around via a compiler barrier quirk suggested by Jakub Jelinek. +- * +- * (asm goto is automatically volatile - the naming reflects this.) +- */ +-#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) +- +-#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP +-#define __HAVE_BUILTIN_BSWAP32__ +-#define __HAVE_BUILTIN_BSWAP64__ +-#define __HAVE_BUILTIN_BSWAP16__ +-#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ +diff --git a/include/linux/compiler-intel.h b/include/linux/compiler-intel.h +index ba147a1727..d4c71132d0 100644 +--- a/include/linux/compiler-intel.h ++++ b/include/linux/compiler-intel.h +@@ -13,9 +13,14 @@ + /* Intel ECC compiler doesn't support gcc specific asm stmts. + * It uses intrinsics to do the equivalent things. + */ ++#undef barrier ++#undef barrier_data + #undef RELOC_HIDE + #undef OPTIMIZER_HIDE_VAR + ++#define barrier() __memory_barrier() ++#define barrier_data(ptr) barrier() ++ + #define RELOC_HIDE(ptr, off) \ + ({ unsigned long __ptr; \ + __ptr = (unsigned long) (ptr); \ +diff --git a/include/linux/compiler.h b/include/linux/compiler.h +index d5ad7b1118..020ad16a04 100644 +--- a/include/linux/compiler.h ++++ b/include/linux/compiler.h +@@ -17,6 +17,7 @@ + # define __release(x) __context__(x,-1) + # define __cond_lock(x,c) ((c) ? ({ __acquire(x); 1; }) : 0) + # define __percpu __attribute__((noderef, address_space(3))) ++# define __pmem __attribute__((noderef, address_space(5))) + #ifdef CONFIG_SPARSE_RCU_POINTER + # define __rcu __attribute__((noderef, address_space(4))) + #else +@@ -42,6 +43,7 @@ extern void __chk_io_ptr(const volatile void __iomem *); + # define __cond_lock(x,c) (c) + # define __percpu + # define __rcu ++# define __pmem + #endif + + /* Indirect macros required for expanded argument pasting, eg. __LINE__. */ +@@ -54,7 +56,11 @@ extern void __chk_io_ptr(const volatile void __iomem *); + #include + #endif + ++#if defined(CC_USING_HOTPATCH) && !defined(__CHECKER__) ++#define notrace __attribute__((hotpatch(0,0))) ++#else + #define notrace __attribute__((no_instrument_function)) ++#endif + + /* Intel compiler defines __GNUC__. So we will overwrite implementations + * coming from above header files here +@@ -138,7 +144,7 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); + */ + #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) + #define __trace_if(cond) \ +- if (__builtin_constant_p((cond)) ? !!(cond) : \ ++ if (__builtin_constant_p(!!(cond)) ? !!(cond) : \ + ({ \ + int ______r; \ + static struct ftrace_branch_data \ +@@ -165,6 +171,10 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); + # define barrier() __memory_barrier() + #endif + ++#ifndef barrier_data ++# define barrier_data(ptr) barrier() ++#endif ++ + /* Unreachable code */ + #ifndef unreachable + # define unreachable() do { } while (1) +@@ -186,6 +196,126 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); + # define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __LINE__) + #endif + ++#include ++ ++#define __READ_ONCE_SIZE \ ++({ \ ++ switch (size) { \ ++ case 1: *(__u8 *)res = *(volatile __u8 *)p; break; \ ++ case 2: *(__u16 *)res = *(volatile __u16 *)p; break; \ ++ case 4: *(__u32 *)res = *(volatile __u32 *)p; break; \ ++ case 8: *(__u64 *)res = *(volatile __u64 *)p; break; \ ++ default: \ ++ barrier(); \ ++ __builtin_memcpy((void *)res, (const void *)p, size); \ ++ barrier(); \ ++ } \ ++}) ++ ++static __always_inline ++void __read_once_size(const volatile void *p, void *res, int size) ++{ ++ __READ_ONCE_SIZE; ++} ++ ++#ifdef CONFIG_KASAN ++/* ++ * This function is not 'inline' because __no_sanitize_address confilcts ++ * with inlining. Attempt to inline it may cause a build failure. ++ * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67368 ++ * '__maybe_unused' allows us to avoid defined-but-not-used warnings. ++ */ ++static __no_sanitize_address __maybe_unused ++void __read_once_size_nocheck(const volatile void *p, void *res, int size) ++{ ++ __READ_ONCE_SIZE; ++} ++#else ++static __always_inline ++void __read_once_size_nocheck(const volatile void *p, void *res, int size) ++{ ++ __READ_ONCE_SIZE; ++} ++#endif ++ ++static __always_inline void __write_once_size(volatile void *p, void *res, int size) ++{ ++ switch (size) { ++ case 1: *(volatile __u8 *)p = *(__u8 *)res; break; ++ case 2: *(volatile __u16 *)p = *(__u16 *)res; break; ++ case 4: *(volatile __u32 *)p = *(__u32 *)res; break; ++ case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ++ default: ++ barrier(); ++ __builtin_memcpy((void *)p, (const void *)res, size); ++ barrier(); ++ } ++} ++ ++/* ++ * Prevent the compiler from merging or refetching reads or writes. The ++ * compiler is also forbidden from reordering successive instances of ++ * READ_ONCE, WRITE_ONCE and ACCESS_ONCE (see below), but only when the ++ * compiler is aware of some particular ordering. One way to make the ++ * compiler aware of ordering is to put the two invocations of READ_ONCE, ++ * WRITE_ONCE or ACCESS_ONCE() in different C statements. ++ * ++ * In contrast to ACCESS_ONCE these two macros will also work on aggregate ++ * data types like structs or unions. If the size of the accessed data ++ * type exceeds the word size of the machine (e.g., 32 bits or 64 bits) ++ * READ_ONCE() and WRITE_ONCE() will fall back to memcpy and print a ++ * compile-time warning. ++ * ++ * Their two major use cases are: (1) Mediating communication between ++ * process-level code and irq/NMI handlers, all running on the same CPU, ++ * and (2) Ensuring that the compiler does not fold, spindle, or otherwise ++ * mutilate accesses that either do not require ordering or that interact ++ * with an explicit memory barrier or atomic instruction that provides the ++ * required ordering. ++ */ ++ ++#define __READ_ONCE(x, check) \ ++({ \ ++ union { typeof(x) __val; char __c[1]; } __u; \ ++ if (check) \ ++ __read_once_size(&(x), __u.__c, sizeof(x)); \ ++ else \ ++ __read_once_size_nocheck(&(x), __u.__c, sizeof(x)); \ ++ __u.__val; \ ++}) ++#define READ_ONCE(x) __READ_ONCE(x, 1) ++ ++/* ++ * Use READ_ONCE_NOCHECK() instead of READ_ONCE() if you need ++ * to hide memory access from KASAN. ++ */ ++#define READ_ONCE_NOCHECK(x) __READ_ONCE(x, 0) ++ ++#define WRITE_ONCE(x, val) \ ++({ \ ++ union { typeof(x) __val; char __c[1]; } __u = \ ++ { .__val = (__force typeof(x)) (val) }; \ ++ __write_once_size(&(x), __u.__c, sizeof(x)); \ ++ __u.__val; \ ++}) ++ ++/** ++ * smp_cond_acquire() - Spin wait for cond with ACQUIRE ordering ++ * @cond: boolean expression to wait for ++ * ++ * Equivalent to using smp_load_acquire() on the condition variable but employs ++ * the control dependency of the wait to reduce the barrier on many platforms. ++ * ++ * The control dependency provides a LOAD->STORE order, the additional RMB ++ * provides LOAD->LOAD order, together they provide LOAD->{LOAD,STORE} order, ++ * aka. ACQUIRE. ++ */ ++#define smp_cond_acquire(cond) do { \ ++ while (!(cond)) \ ++ cpu_relax(); \ ++ smp_rmb(); /* ctrl + rmb := acquire */ \ ++} while (0) ++ + #endif /* __KERNEL__ */ + + #endif /* __ASSEMBLY__ */ +@@ -304,6 +434,14 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); + #define __visible + #endif + ++/* ++ * Assume alignment of return value. ++ */ ++#ifndef __assume_aligned ++#define __assume_aligned(a, ...) ++#endif ++ ++ + /* Are two types/vars the same type (ignoring qualifiers)? */ + #ifndef __same_type + # define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b)) +@@ -311,7 +449,7 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); + + /* Is this type a native word size -- useful for atomic operations */ + #ifndef __native_word +-# define __native_word(t) (sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long)) ++# define __native_word(t) (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long)) + #endif + + /* Compile time object size, -1 for unknown */ +@@ -373,12 +511,38 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); + * to make the compiler aware of ordering is to put the two invocations of + * ACCESS_ONCE() in different C statements. + * +- * This macro does absolutely -nothing- to prevent the CPU from reordering, +- * merging, or refetching absolutely anything at any time. Its main intended +- * use is to mediate communication between process-level code and irq/NMI +- * handlers, all running on the same CPU. ++ * ACCESS_ONCE will only work on scalar types. For union types, ACCESS_ONCE ++ * on a union member will work as long as the size of the member matches the ++ * size of the union and the size is smaller than word size. ++ * ++ * The major use cases of ACCESS_ONCE used to be (1) Mediating communication ++ * between process-level code and irq/NMI handlers, all running on the same CPU, ++ * and (2) Ensuring that the compiler does not fold, spindle, or otherwise ++ * mutilate accesses that either do not require ordering or that interact ++ * with an explicit memory barrier or atomic instruction that provides the ++ * required ordering. ++ * ++ * If possible use READ_ONCE()/WRITE_ONCE() instead. ++ */ ++#define __ACCESS_ONCE(x) ({ \ ++ __maybe_unused typeof(x) __var = (__force typeof(x)) 0; \ ++ (volatile typeof(x) *)&(x); }) ++#define ACCESS_ONCE(x) (*__ACCESS_ONCE(x)) ++ ++/** ++ * lockless_dereference() - safely load a pointer for later dereference ++ * @p: The pointer to load ++ * ++ * Similar to rcu_dereference(), but for situations where the pointed-to ++ * object's lifetime is managed by something other than RCU. That ++ * "something other" might be reference counting or simple immortality. + */ +-#define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x)) ++#define lockless_dereference(p) \ ++({ \ ++ typeof(p) _________p1 = READ_ONCE(p); \ ++ smp_read_barrier_depends(); /* Dependency order vs. p above. */ \ ++ (_________p1); \ ++}) + + /* Ignore/forbid kprobes attach on very low level functions marked by this attribute: */ + #ifdef CONFIG_KPROBES +-- +2.11.0 + diff --git a/board/roseapplepi/post-build.sh b/board/roseapplepi/post-build.sh new file mode 100755 index 00000000..ffdd1913 --- /dev/null +++ b/board/roseapplepi/post-build.sh @@ -0,0 +1,4 @@ +#!/bin/sh +BOARD_DIR="$(dirname $0)" + +cp $BOARD_DIR/uEnv.txt $BINARIES_DIR/uEnv.txt diff --git a/board/roseapplepi/uEnv.txt b/board/roseapplepi/uEnv.txt new file mode 100644 index 00000000..339eb8aa --- /dev/null +++ b/board/roseapplepi/uEnv.txt @@ -0,0 +1,3 @@ +# no ramdisk +ramdisk_addr_r=- +bootargs=console=ttyOWL2,115200 root=/dev/mmcblk0p2 rootwait clk_ignore_unused diff --git a/board/seeed/stm32mp157c-odyssey/genimage.cfg b/board/seeed/stm32mp157c-odyssey/genimage.cfg new file mode 100644 index 00000000..4c18a2eb --- /dev/null +++ b/board/seeed/stm32mp157c-odyssey/genimage.cfg @@ -0,0 +1,22 @@ +image sdcard.img { + hdimage { + partition-table-type = "gpt" + } + + partition fsbl1 { + image = "tf-a-stm32mp157c-odyssey.stm32" + } + + partition fsbl2 { + image = "tf-a-stm32mp157c-odyssey.stm32" + } + + partition ssbl { + image = "u-boot.stm32" + } + + partition rootfs { + image = "rootfs.ext4" + bootable = "yes" + } +} diff --git a/board/seeed/stm32mp157c-odyssey/linux.config b/board/seeed/stm32mp157c-odyssey/linux.config new file mode 100644 index 00000000..878a0c39 --- /dev/null +++ b/board/seeed/stm32mp157c-odyssey/linux.config @@ -0,0 +1,182 @@ +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_USELIB=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_PREEMPT=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=16 +CONFIG_BLK_DEV_INITRD=y +CONFIG_ARCH_STM32=y +CONFIG_ARM_THUMBEE=y +# CONFIG_CACHE_L2X0 is not set +CONFIG_ARM_ERRATA_430973=y +CONFIG_ARM_ERRATA_720789=y +CONFIG_ARM_ERRATA_754322=y +CONFIG_ARM_ERRATA_754327=y +CONFIG_ARM_ERRATA_764369=y +CONFIG_ARM_ERRATA_775420=y +CONFIG_ARM_ERRATA_798181=y +CONFIG_SMP=y +CONFIG_MCPM=y +CONFIG_HIGHMEM=y +CONFIG_FORCE_MAX_ZONEORDER=12 +CONFIG_SECCOMP=y +# CONFIG_ATAGS 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_VFP=y +CONFIG_NEON=y +CONFIG_KERNEL_MODE_NEON=y +CONFIG_ARM_CRYPTO=y +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_CMDLINE_PARTITION=y +CONFIG_CMA=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_CAN=y +CONFIG_CAN_M_CAN=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_DMA_CMA=y +CONFIG_CMA_SIZE_MBYTES=128 +CONFIG_SIMPLE_PM_BUS=y +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_M25P80=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_STM32_FMC2=y +CONFIG_MTD_SPI_NOR=y +# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set +CONFIG_MTD_UBI=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=65536 +CONFIG_SRAM=y +CONFIG_EEPROM_AT24=y +CONFIG_NETDEVICES=y +CONFIG_VIRTIO_NET=y +CONFIG_KS8851=y +CONFIG_SMSC911X=y +CONFIG_STMMAC_ETH=y +CONFIG_DWMAC_DWC_QOS_ETH=y +CONFIG_MDIO_BITBANG=y +CONFIG_INPUT_JOYDEV=y +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_EDT_FT5X06=y +CONFIG_INPUT_MISC=y +CONFIG_INPUT_STPMIC1_ONKEY=y +CONFIG_SERIAL_STM32=y +CONFIG_SERIAL_STM32_CONSOLE=y +CONFIG_SERIAL_DEV_BUS=y +CONFIG_HW_RANDOM=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MUX=y +CONFIG_I2C_STM32F7=y +CONFIG_SPI=y +CONFIG_SPI_STM32=y +CONFIG_SPI_STM32_QSPI=y +CONFIG_PINCTRL_SINGLE=y +CONFIG_PINCTRL_STMFX=y +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_GPIO=y +CONFIG_POWER_RESET_GPIO_RESTART=y +CONFIG_POWER_RESET_SYSCON=y +CONFIG_POWER_RESET_SYSCON_POWEROFF=y +CONFIG_SYSCON_REBOOT_MODE=y +CONFIG_WATCHDOG=y +CONFIG_STPMIC1_WATCHDOG=y +CONFIG_MFD_STM32_LPTIMER=y +CONFIG_MFD_STPMIC1=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_STM32_VREFBUF=y +CONFIG_REGULATOR_STM32_PWR=y +CONFIG_REGULATOR_STPMIC1=y +CONFIG_DRM=y +CONFIG_DRM_STM=y +CONFIG_DRM_STM_DSI=y +CONFIG_DRM_PANEL_ORISETECH_OTM8009A=y +CONFIG_DRM_SII902X=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +# CONFIG_LCD_CLASS_DEVICE is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=y +# CONFIG_BACKLIGHT_GENERIC is not set +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_USB=y +CONFIG_USB_OTG=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_PLATFORM=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_DWC2=y +CONFIG_USB_CHIPIDEA=y +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_ISP1760=y +CONFIG_USB_HSIC_USB3503=y +CONFIG_USB_GPIO_VBUS=y +CONFIG_USB_ISP1301=y +CONFIG_USB_ULPI=y +CONFIG_TYPEC=y +CONFIG_TYPEC_STUSB=y +CONFIG_MMC=y +CONFIG_MMC_BLOCK_MINORS=16 +CONFIG_MMC_ARMMMCI=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_DW=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_PWM=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_STM32=y +CONFIG_DMADEVICES=y +CONFIG_STM32_DMA=y +CONFIG_STM32_DMAMUX=y +CONFIG_STM32_MDMA=y +CONFIG_HWSPINLOCK=y +CONFIG_HWSPINLOCK_STM32=y +CONFIG_STM32_IPCC=y +CONFIG_REMOTEPROC=y +CONFIG_STM32_RPROC=y +CONFIG_RPMSG_VIRTIO=y +CONFIG_RPMSG_TTY=y +CONFIG_IIO=y +CONFIG_IIO_SW_TRIGGER=y +CONFIG_SD_ADC_MODULATOR=y +CONFIG_STM32_ADC_CORE=y +CONFIG_STM32_ADC=y +CONFIG_STM32_ADC_TEMP=y +CONFIG_STM32_DFSDM_ADC=y +CONFIG_STM32_LPTIMER_CNT=y +CONFIG_STM32_DAC=y +CONFIG_IIO_HRTIMER_TRIGGER=y +CONFIG_IIO_STM32_LPTIMER_TRIGGER=y +CONFIG_PWM=y +CONFIG_PWM_STM32=y +CONFIG_PWM_STM32_LP=y +CONFIG_PHY_STM32_USBPHYC=y +CONFIG_NVMEM_STM32_ROMEM=y +CONFIG_EXT4_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_PRINTK_TIME=y diff --git a/board/seeed/stm32mp157c-odyssey/overlay/boot/extlinux/extlinux.conf b/board/seeed/stm32mp157c-odyssey/overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..b5795415 --- /dev/null +++ b/board/seeed/stm32mp157c-odyssey/overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +label stm32mp157c-odyssey-buildroot + kernel /boot/zImage + devicetree /boot/stm32mp157c-odyssey.dtb + append root=/dev/mmcblk0p4 rootwait diff --git a/board/seeed/stm32mp157c-odyssey/patches/linux/0001-ARM-dts-stm32-fix-stm32mp157c-odyssey-card-detect.patch b/board/seeed/stm32mp157c-odyssey/patches/linux/0001-ARM-dts-stm32-fix-stm32mp157c-odyssey-card-detect.patch new file mode 100644 index 00000000..ab2dc5de --- /dev/null +++ b/board/seeed/stm32mp157c-odyssey/patches/linux/0001-ARM-dts-stm32-fix-stm32mp157c-odyssey-card-detect.patch @@ -0,0 +1,36 @@ +From 0171b07373cc8c2815ca5fa79a7308fdefa54ca4 Mon Sep 17 00:00:00 2001 +From: Grzegorz Szymaszek +Date: Sat, 10 Apr 2021 21:35:21 +0200 +Subject: [PATCH] ARM: dts: stm32: fix stm32mp157c-odyssey card detect pin +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The microSD card detect pin is physically connected to the MPU pin PI3. +The Device Tree configuration of the card detect pin was wrong—it was +set to pin PB7 instead. If such configuration was used, the kernel would +hang on “Waiting for root device” when booting from a microSD card. + +Signed-off-by: Grzegorz Szymaszek +Signed-off-by: Alexandre Torgue +Backported from: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/arch/arm/boot/dts/stm32mp157c-odyssey.dts?id=0171b07373cc8c2815ca5fa79a7308fdefa54ca4 +--- + arch/arm/boot/dts/stm32mp157c-odyssey.dts | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/stm32mp157c-odyssey.dts b/arch/arm/boot/dts/stm32mp157c-odyssey.dts +index a7ffec8f1516..be1dd5e9e744 100644 +--- a/arch/arm/boot/dts/stm32mp157c-odyssey.dts ++++ b/arch/arm/boot/dts/stm32mp157c-odyssey.dts +@@ -64,7 +64,7 @@ &sdmmc1 { + pinctrl-0 = <&sdmmc1_b4_pins_a>; + pinctrl-1 = <&sdmmc1_b4_od_pins_a>; + pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>; +- cd-gpios = <&gpiob 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; ++ cd-gpios = <&gpioi 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; + disable-wp; + st,neg-edge; + bus-width = <4>; +-- +2.30.2 + diff --git a/board/seeed/stm32mp157c-odyssey/readme.txt b/board/seeed/stm32mp157c-odyssey/readme.txt new file mode 100644 index 00000000..09328673 --- /dev/null +++ b/board/seeed/stm32mp157c-odyssey/readme.txt @@ -0,0 +1,38 @@ +STM32MP157C-Odyssey + +Intro +===== + +This configuration supports the STM32MP157C-Odyssey platform: + + https://wiki.seeedstudio.com/ODYSSEY-STM32MP157C/ + +How to build +============ + + $ make stm32mp157c_odyssey_defconfig + $ make + +How to write the microSD card +============================= + +Once the build process is finished you will have an image called +"sdcard.img" in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an microSD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Boot the board +============== + + (1) Insert the microSD card in connector J21. + + (2) Connect to the UART connector J24 (located next the the DC jack + J24 and the battery connector J20) and run your serial communication + program on /dev/ttyACM0. + + (3) Plug a USB-C cable in J6 or a center-positive 12V jack into J17 + to power-up the board. + + (4) The system will start, with the console on UART. diff --git a/board/sheevaplug/patches/linux-headers/linux-headers.hash b/board/sheevaplug/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/sheevaplug/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/sheevaplug/patches/linux/linux.hash b/board/sheevaplug/patches/linux/linux.hash new file mode 100644 index 00000000..b207306a --- /dev/null +++ b/board/sheevaplug/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 0820fdb7971c6974338081c11fbf2dc869870501e7bdcac4d0ed58ba1f57b61c linux-4.14.336.tar.xz diff --git a/board/sheevaplug/patches/uboot/0001-Remove-redundant-YYLOC-global-declaration.patch b/board/sheevaplug/patches/uboot/0001-Remove-redundant-YYLOC-global-declaration.patch new file mode 100644 index 00000000..c9d5d71c --- /dev/null +++ b/board/sheevaplug/patches/uboot/0001-Remove-redundant-YYLOC-global-declaration.patch @@ -0,0 +1,28 @@ +From 018921ee79d3f30893614b3b2b63b588d8544f73 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Thu, 30 Jan 2020 09:37:15 +0000 +Subject: [PATCH] Remove redundant YYLOC global declaration + +Same as the upstream fix for building dtc with gcc 10. + +Signed-off-by: Peter Robinson +Signed-off-by: Peter Korsgaard +--- + scripts/dtc/dtc-lexer.l | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/scripts/dtc/dtc-lexer.l b/scripts/dtc/dtc-lexer.l +index fd825ebba6..24af549977 100644 +--- a/scripts/dtc/dtc-lexer.l ++++ b/scripts/dtc/dtc-lexer.l +@@ -38,7 +38,6 @@ LINECOMMENT "//".*\n + #include "srcpos.h" + #include "dtc-parser.tab.h" + +-YYLTYPE yylloc; + extern bool treesource_error; + + /* CAUTION: this will stop working if we ever use yyless() or yyunput() */ +-- +2.20.1 + diff --git a/board/sheevaplug/patches/uboot/uboot.hash b/board/sheevaplug/patches/uboot/uboot.hash new file mode 100644 index 00000000..d6818bac --- /dev/null +++ b/board/sheevaplug/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9f10df88bc91b35642e461217f73256bbaeeca9ae2db8db56197ba5e89e1f6d4 u-boot-2018.07.tar.bz2 diff --git a/board/sheevaplug/readme.txt b/board/sheevaplug/readme.txt new file mode 100644 index 00000000..e0ed2684 --- /dev/null +++ b/board/sheevaplug/readme.txt @@ -0,0 +1,36 @@ +Sheevaplug +========== + +Once the build process is finished you will have the following files +in the output/images/ directory: + +- u-boot.kwb +- uImage.kirkwood-sheevaplug +- rootfs.jffs2 + +Copy these to a TFTP server, connect ethernet and mini-USB cable and +power up the board. Stop the board in U-Boot and update U-Boot by +executing: + +setenv serverip +setenv bootfile +bootp +nand erase 0x0 0x80000 +nand write $fileaddr 0x0 0x80000 +reset + +Once the new U-Boot boots up, stop it again and update Linux kernel +and rootfs by: + +setenv serverip +setenv bootfile +bootp +nand erase.part kernel +nand write $fileaddr kernel 0x400000 + +setenv bootfile +bootp +nand erase.part rootfs +nand write $fileaddr rootfs $filesize + +reset diff --git a/board/sifive/hifive-unleashed/boot.cmd b/board/sifive/hifive-unleashed/boot.cmd new file mode 100644 index 00000000..7b5137d2 --- /dev/null +++ b/board/sifive/hifive-unleashed/boot.cmd @@ -0,0 +1,4 @@ +setenv bootargs earlycon=sbi root=/dev/mmcblk0p3 rootwait +load mmc 0:3 ${kernel_addr_r} boot/Image +load mmc 0:3 ${fdt_addr_r} boot/hifive-unleashed-a00.dtb +booti ${kernel_addr_r} - ${fdt_addr_r} diff --git a/board/sifive/hifive-unleashed/genimage_sdcard.cfg b/board/sifive/hifive-unleashed/genimage_sdcard.cfg new file mode 100644 index 00000000..99e3525a --- /dev/null +++ b/board/sifive/hifive-unleashed/genimage_sdcard.cfg @@ -0,0 +1,24 @@ +image sdcard.img { + hdimage { + partition-table-type = "gpt" + } + + partition u-boot-spl { + image = "u-boot-spl.bin" + offset = 17K + partition-type-uuid = 5b193300-fc78-40cd-8002-e86c45580b47 + } + + partition u-boot { + image = "u-boot.itb" + offset = 1041K + partition-type-uuid = 2e54b353-1271-4842-806f-e436d6af6985 + } + + partition rootfs { + image = "rootfs.ext4" + offset = 4076K + partition-type-uuid = 0fc63daf-8483-4772-8e79-3d69d8477de4 + bootable = true + } +} diff --git a/board/sifive/hifive-unleashed/genimage_spi-nor.cfg b/board/sifive/hifive-unleashed/genimage_spi-nor.cfg new file mode 100644 index 00000000..14b7bb1e --- /dev/null +++ b/board/sifive/hifive-unleashed/genimage_spi-nor.cfg @@ -0,0 +1,19 @@ +image spi-nor.img { + size = 32M + + hdimage { + partition-table-type = "gpt" + } + + partition u-boot-spl { + image = "u-boot-spl.bin" + offset = 20K + partition-type-uuid = 5b193300-fc78-40cd-8002-e86c45580b47 + } + + partition u-boot { + image = "u-boot.itb" + offset = 1044K + partition-type-uuid = 2e54b353-1271-4842-806f-e436d6af6985 + } +} diff --git a/board/sifive/hifive-unleashed/linux.config.fragment b/board/sifive/hifive-unleashed/linux.config.fragment new file mode 100644 index 00000000..385a961d --- /dev/null +++ b/board/sifive/hifive-unleashed/linux.config.fragment @@ -0,0 +1,10 @@ +CONFIG_HZ_100=y +CONFIG_GPIOLIB=y +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_SIFIVE=y +CONFIG_POWER_RESET_GPIO_RESTART=y +CONFIG_MTD=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_SPI_NOR=y +CONFIG_PWM=y +CONFIG_PWM_SIFIVE=y diff --git a/board/sifive/hifive-unleashed/post-build.sh b/board/sifive/hifive-unleashed/post-build.sh new file mode 100755 index 00000000..b4181206 --- /dev/null +++ b/board/sifive/hifive-unleashed/post-build.sh @@ -0,0 +1,2 @@ +#!/bin/sh +cp $BINARIES_DIR/boot.scr $TARGET_DIR/boot/boot.scr diff --git a/board/sifive/hifive-unleashed/readme.txt b/board/sifive/hifive-unleashed/readme.txt new file mode 100644 index 00000000..e9ccb26f --- /dev/null +++ b/board/sifive/hifive-unleashed/readme.txt @@ -0,0 +1,132 @@ +SiFive HiFive Unleashed +======================= + +This file describes how to use the pre-defined Buildroot +configuration for the SiFive HiFive Unleashed board. + +Further information about the HiFive Unleashed board can be found +at https://www.sifive.com/boards/hifive-unleashed + +Building +======== + +Configure Buildroot using the default board configuration: + + $ make hifive_unleashed_defconfig + +Customise the build as necessary: + + $ make menuconfig + +Start the build: + + $ make + +Result of the build +=================== + +Once the build has finished you will have the following files: + + output/images/ + +-- boot.scr + +-- fw_dynamic.bin + +-- fw_dynamic.elf + +-- fw_jump.bin + +-- fw_jump.elf + +-- hifive-unleashed-a00.dtb + +-- Image + +-- rootfs.cpio + +-- rootfs.ext2 + +-- rootfs.ext4 + +-- rootfs.tar + +-- sdcard.img + +-- u-boot.bin + +-- u-boot.itb + +-- u-boot-spl.bin + + +Creating a bootable SD card with genimage +========================================= + +By default Buildroot builds a SD card image for you. All you need to do +is dd the image to your SD card, which can be done with the following +command on your development host: + + $ sudo dd if=output/images/sdcard.img of=/dev/sdb bs=4096 + +The above example command assumes the SD card is accessed via a USB card +reader and shows up as /dev/sdb on the host. Adjust it accordingly per +your actual setup. + +Booting the SD card on the board +================================ + +Make sure that the all DIP switches are set to the off position for +default boot mode (MSEL mode = 1011), insert the SD card and power +up the board. + +Connect the USB cable and open minicom (/dev/ttyUSB1, 115200, 8N1). + +See the 'SiFive HiFive Unleashed Getting Started Guide' for +more details (https://www.sifive.com/documentation). + +You will get a warning reported by fdisk when you examine the SD card. +This is because the genimage_sdcard.cfg file doesn't specify the SD card +size (as people will naturally have different sized cards), so the +secondary GPT header is placed after the rootfs rather than at the end +of the disk where it is expected to be. + +You will see something like this at boot time: + +[ 0.989458] mmc0: host does not support reading read-only switch, assuming write-enable +[ 0.996772] mmc0: new SDHC card on SPI +[ 1.001634] mmcblk0: mmc0:0000 SD8GB 7.28 GiB +[ 1.038079] GPT:Primary header thinks Alt. header is not at the end of the disk. +[ 1.044759] GPT:52389 != 15264767 +[ 1.048051] GPT:Alternate GPT header not at the end of the disk. +[ 1.054015] GPT:52389 != 15264767 +[ 1.057323] GPT: Use GNU Parted to correct GPT errors. +[ 1.062479] mmcblk0: p1 p2 p3 + + +Creating a bootable SPI flash with genimage +=========================================== + +Adjust Buildroot configuration by: + + $ make menuconfig + +Change "System configuration" -> "Extra arguments passed to custom scripts" +value to "-c board/sifive/hifive-unleashed/genimage_spi-nor.cfg", save the +configuration and build. This creates a output/images/spi-nor.img that can +be programmed to the on-board SPI flash. + +Boot the board from the SD card prepared above, stop the U-Boot auto boot, +and type the following commands to program the whole SPI flash: + + => tftp 82000000 output/images/spi-nor.img + => sf probe + => sf update 82000000 0 2000000 + +Booting the SPI flash on the board +================================== + +Make sure that the all DIP switches are set to the off position for +default boot mode (MSEL mode = 0110) to boot from SPI flash. + +Testing under QEMU +================== + +The SD card image can be tested using QEMU: + +$ qemu-system-riscv64 -M sifive_u,msel=11 -smp 5 -m 8G \ + -display none -serial stdio -nic user \ + -bios output/images/u-boot-spl.bin \ + -drive file=output/images/sdcard.img,if=sd + +The SPI flash image can be tested with a slightly different command: + +$ qemu-system-riscv64 -M sifive_u,msel=6 -smp 5 -m 8G \ + -display none -serial stdio -nic user \ + -bios output/images/u-boot-spl.bin \ + -drive file=output/images/spi-nor.img,if=mtd diff --git a/board/sipeed/lichee_rv/genimage.cfg b/board/sipeed/lichee_rv/genimage.cfg new file mode 100644 index 00000000..d5df4120 --- /dev/null +++ b/board/sipeed/lichee_rv/genimage.cfg @@ -0,0 +1,19 @@ +# Minimal SD card image for the sipeed Lichee RV + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = false + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + bootable = "true" + offset = 1M + } +} diff --git a/board/sipeed/lichee_rv/overlay/boot/extlinux/extlinux.conf b/board/sipeed/lichee_rv/overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..91b22986 --- /dev/null +++ b/board/sipeed/lichee_rv/overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +label linux + kernel /boot/Image + # use devicetree from u-boot + append console=ttyS0,115200 root=/dev/mmcblk0p1 ro rootwait diff --git a/board/sipeed/lichee_rv/readme.txt b/board/sipeed/lichee_rv/readme.txt new file mode 100644 index 00000000..24e81418 --- /dev/null +++ b/board/sipeed/lichee_rv/readme.txt @@ -0,0 +1,26 @@ +Lichee RV +=============== + +Lichee RV - Nezha CM is a compute module with modular design, equipped +with Allwinner D1 chip (based on T-Head XuanTie C906 core), 512MB DDR3 RAM. +It can boot from TF card or SD-NAND, uses two sets of M.2 b key 67 pin +connectors to route all IO, making it convient for wide use and easy to replace. + +How to build +============ + +$ make sipeed_lichee_rv_defconfig +$ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Connect a TTL UART to the debug connector, insert the microSD card and +plug in a USB-C cable to the PWR connector to boot the system. diff --git a/board/sipeed/lichee_rv_dock/genimage.cfg b/board/sipeed/lichee_rv_dock/genimage.cfg new file mode 100644 index 00000000..38078f0a --- /dev/null +++ b/board/sipeed/lichee_rv_dock/genimage.cfg @@ -0,0 +1,19 @@ +# Minimal SD card image for the sipeed Lichee RV dock + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = false + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + bootable = "true" + offset = 1M + } +} diff --git a/board/sipeed/lichee_rv_dock/linux.fragment b/board/sipeed/lichee_rv_dock/linux.fragment new file mode 100644 index 00000000..10016889 --- /dev/null +++ b/board/sipeed/lichee_rv_dock/linux.fragment @@ -0,0 +1,7 @@ +CONFIG_BT=y +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_SERDEV=y +CONFIG_BT_HCIUART_3WIRE=y +CONFIG_BT_HCIUART_RTL=y +CONFIG_SERIAL_DEV_BUS=y +CONFIG_SERIAL_DEV_CTRL_TTYPORT=y diff --git a/board/sipeed/lichee_rv_dock/overlay/etc/network/interfaces b/board/sipeed/lichee_rv_dock/overlay/etc/network/interfaces new file mode 100644 index 00000000..89e7d74a --- /dev/null +++ b/board/sipeed/lichee_rv_dock/overlay/etc/network/interfaces @@ -0,0 +1,6 @@ +auto lo +iface lo inet loopback + +auto wlan0 +iface wlan0 inet dhcp +wpa-conf /etc/wpa_supplicant.conf diff --git a/board/sipeed/lichee_rv_dock/overlay/etc/wpa_supplicant.conf b/board/sipeed/lichee_rv_dock/overlay/etc/wpa_supplicant.conf new file mode 100644 index 00000000..b43292b0 --- /dev/null +++ b/board/sipeed/lichee_rv_dock/overlay/etc/wpa_supplicant.conf @@ -0,0 +1,8 @@ +ap_scan=1 + +network={ + ssid="YOURSSID" + scan_ssid=1 + key_mgmt=WPA-PSK + psk="YOURPASSWD" +} diff --git a/board/sipeed/lichee_rv_dock/readme.txt b/board/sipeed/lichee_rv_dock/readme.txt new file mode 100644 index 00000000..048ba64d --- /dev/null +++ b/board/sipeed/lichee_rv_dock/readme.txt @@ -0,0 +1,45 @@ +Lichee RV dock +=============== + +Lichee RV Dock is a RISC-V Linux development kits with high integration, small +size and affordable price designed for opensource developer. It's equipped with +HDMI interface and it supports many screen by its screen convert board. It's +also equipped with many peripherals, including a UAB-A port, 2.4G Wifi-BT module, +an analog microphone and a speaker jack interface. + +How to build +============ + +$ make sipeed_lichee_rv_dock_defconfig +$ make + +Wifi +========== + +Edit board/sipeed/lichee_rv_dock/overlay/etc/wpa_supplicant.conf or +/etc/wpa_supplicant.conf once connected to the board: + +* Replace YOURSSID with your AP ssid +* Replace YOURPASSWD with your AP password + +Bluetooth +========== + +To make the device discoverable and pairable, once connected to the board: + +* bluetoothctl power on +* bluetoothctl discoverable yes +* bluetoothctl pairable yes + +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 + +Connect a TTL UART to the debug connector, insert the microSD card and +plug in a USB-C cable to the PWR connector to boot the system. diff --git a/board/sipeed/licheepi_nano/genimage.cfg b/board/sipeed/licheepi_nano/genimage.cfg new file mode 100644 index 00000000..5e398eeb --- /dev/null +++ b/board/sipeed/licheepi_nano/genimage.cfg @@ -0,0 +1,33 @@ +flash w25q128 { + pebsize = 65536 + numpebs = 256 + minimum-io-unit-size = 1 + sub-page-size = 1 + vid-header-offset = 64 +} + +image flash.bin { + flash {} + flashtype = w25q128 + + partition uboot { + image = "u-boot-sunxi-with-spl.bin" + size = 512K + } + + partition dtb { + image = "suniv-f1c100s-licheepi-nano.dtb" + size = 64K + } + + partition zimage { + image = "zImage" + size = 5M + } + + partition rootfs { + image = "rootfs.jffs2" + size = 0 + } +} + diff --git a/board/sipeed/licheepi_nano/linux.fragment b/board/sipeed/licheepi_nano/linux.fragment new file mode 100644 index 00000000..af68f281 --- /dev/null +++ b/board/sipeed/licheepi_nano/linux.fragment @@ -0,0 +1,11 @@ +# CONFIG_NET is not set +# CONFIG_DRM is not set +# CONFIG_CMA is not set +# CONFIG_ARCH_MULTI_V7 is not set +CONFIG_UEVENT_HELPER=y +CONFIG_MTD=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_SPI_NOR=y +# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_JFFS2_FS=y diff --git a/board/sipeed/licheepi_nano/readme.txt b/board/sipeed/licheepi_nano/readme.txt new file mode 100644 index 00000000..1f1f8ef1 --- /dev/null +++ b/board/sipeed/licheepi_nano/readme.txt @@ -0,0 +1,84 @@ +Intro +===== + +This directory contains a buildroot configuration for building a +LicheePi Nano image which can be flashed into the board. + +This frees the MMC port which can be used for an additional SD +card of for a WiFi adapter. + +How to build it +=============== + +Configure Buildroot +------------------- + + $ make sipeed_licheepi_nano_defconfig + +Build the rootfs +---------------- + +Note: you will need to have access to the network, since Buildroot +will download the packages' sources. + +You may now build your rootfs with: + + $ make + +(This may take a while, consider getting yourself a coffee ;-) ) + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + +-- flash.bin + +-- rootfs.jffs2 + +-- rootfs.tar + +-- suniv-f1c100s-licheepi-nano.dtb + +-- u-boot.bin + +-- u-boot-sunxi-with-spl.bin + `-- zImage + +How to flash +============ + +Once the build process is finished you will have an image called +"flash.bin" in the output/images/ directory. It contains the +bootloader, the device tree, the kernel and the root file system. + +The device can be flashed when it is in special mode called "FEL +mode". There are multiple ways to enter this mode described here: +https://linux-sunxi.org/FEL#Entering_FEL_mode + +One way is to write one file from sunxi-tools to a SD card with: + + $ sudo dd if=./output/build/host-sunxi-tools-*/bin/fel-sdboot.sunxi of=/dev/sdX bs=1024 seek=8 + +Once the SD card is burned, insert it into your LicheePi Nano board, +and plug the USB cable. A new USB device should be visible with +lsusb: + + 1f3a:efe8 Allwinner Technology sunxi SoC OTG connector in FEL/flashing mode + +The image can be flashed with: + + $ sudo ./output/host/bin/sunxi-fel -p spiflash-write 0 output/images/flash.bin + +Once this completes, remove the SD card and power the board. Your +new system should come up now and start a console on the UART0 +serial port. + +Note +==== + +Some standard kernel features are disabled using the fragment in +order to reduce the size. They can be enabled again if other +features are disabled instead. + +For U-Boot, the upstream repository is preferred and the system +boots, but loading the image from the flash takes a long time. It +is much faster when using the branch "licheepi-nano-v2020.01" of +this fork: +https://github.com/florpor/u-boot diff --git a/board/sipeed/licheepi_nano/uboot.fragment b/board/sipeed/licheepi_nano/uboot.fragment new file mode 100644 index 00000000..39f2bfe7 --- /dev/null +++ b/board/sipeed/licheepi_nano/uboot.fragment @@ -0,0 +1,3 @@ +CONFIG_USE_BOOTARGS=y +CONFIG_BOOTARGS="console=tty0 console=ttyS0,115200 panic=5 rootwait root=/dev/mtdblock3 rw rootfstype=jffs2 mtdparts=spi0.0:512k(uboot)ro,64k(dtb),5M(kernel)ro,-(rootfs)" +CONFIG_BOOTCOMMAND="sf probe 0 50000000; sf read 0x80C00000 0x80000 0x4000; sf read 0x80008000 0x90000 0x500000; bootz 0x80008000 - 0x80C00000" diff --git a/board/sipeed/licheepi_zero/boot.cmd b/board/sipeed/licheepi_zero/boot.cmd new file mode 100644 index 00000000..383b3473 --- /dev/null +++ b/board/sipeed/licheepi_zero/boot.cmd @@ -0,0 +1,4 @@ +setenv bootargs console=ttyS0,115200 panic=5 console=tty0 rootwait root=/dev/mmcblk0p2 earlyprintk rw +load mmc 0:1 0x41000000 zImage +load mmc 0:1 0x41800000 sun8i-v3s-licheepi-zero-dock.dtb +bootz 0x41000000 - 0x41800000 diff --git a/board/sipeed/licheepi_zero/genimage.cfg b/board/sipeed/licheepi_zero/genimage.cfg new file mode 100644 index 00000000..8dcb2e70 --- /dev/null +++ b/board/sipeed/licheepi_zero/genimage.cfg @@ -0,0 +1,36 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-v3s-licheepi-zero-dock.dtb", + "sun8i-v3s-licheepi-zero.dtb", + "boot.scr" + } + } + + size = 8M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + size = 504K # 512KB - 8KB + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 0 + } +} diff --git a/board/sipeed/licheepi_zero/readme.txt b/board/sipeed/licheepi_zero/readme.txt new file mode 100644 index 00000000..2f122125 --- /dev/null +++ b/board/sipeed/licheepi_zero/readme.txt @@ -0,0 +1,62 @@ +Intro +===== + +This directory contains a buildroot configuration for building a +LicheePi Zero. + +How to build it +=============== + +Configure Buildroot +------------------- + + $ make sipeed_licheepi_zero_defconfig + +Build the rootfs +---------------- + +Note: you will need to have access to the network, since Buildroot +will download the packages' sources. + +You may now build your rootfs with: + + $ make + +(This may take a while, consider getting yourself a coffee ;-) ) + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + +-- boot.scr + +-- boot.vfat + +-- rootfs.ext2 + +-- rootfs.ext4 -> rootfs.ext2 + +-- rootfs.tar + +-- sdcard.img + +-- sun8i-v3s-licheepi-zero-dock.dtb + +-- sun8i-v3s-licheepi-zero.dtb + +-- u-boot.bin + +-- u-boot-sunxi-with-spl.bin + `-- zImage + +How to write the SD card +======================== + +Once the build process is finished you will have an image called +"sdcard.img" in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Alternatively, you can use the Etcher graphical tool to burn the image +to the SD card safely and on any platform: + +https://etcher.io/ + +Once the SD card is burned, insert it into your LicheePi Zero board, +and power it up. Your new system should come up now and start a +console on the UART0 serial port. diff --git a/board/sipeed/maix-bit/linux-cpio.config b/board/sipeed/maix-bit/linux-cpio.config new file mode 100644 index 00000000..de2f8fd0 --- /dev/null +++ b/board/sipeed/maix-bit/linux-cpio.config @@ -0,0 +1,2 @@ +CONFIG_SOC_CANAAN_K210_DTB_BUILTIN=y +CONFIG_SOC_CANAAN_K210_DTB_SOURCE="sipeed_maix_bit" diff --git a/board/sipeed/maix-bit/readme.txt b/board/sipeed/maix-bit/readme.txt new file mode 100644 index 00000000..7cc53bca --- /dev/null +++ b/board/sipeed/maix-bit/readme.txt @@ -0,0 +1,316 @@ +Sipeed MAIX-Bit Board +===================== + +The Sipeed MAXI-Bit board is a dual-core RISC-V 64-bits board based on the +Canaan Kendryte K210 SoC. + +Prerequisite +------------ + +In order to use the kflash utility to program this board, the user must have +access to the board USB serial device file. The simplest way to do this is to +add your user to the same group as this device file. Assume the device file is +/dev/ttyUSB0, first identify the device group name. In most cases, it is +either "dialout" or "uucp". Also verify that read-write access is enabled for +the group: + +``` +$ ls -l /dev/ttyUSB0 +crw-rw---- 1 root dialout 188, 0 May 26 13:48 /dev/ttyUSB0 +``` + +Then add yourself to that group (dialout in this example): + +``` +$ sudo usermod -a -G dialout $(whoami) +``` + +To enable the above, it is sometimes necessary to logout and login again. + +Buildroot Configuration +----------------------- + +Two buildroot configuration files are provided: + +(1) Direct Linux Kernel Boot + +This is defined by the sipeed_maix_bit_defconfig configuration. This +configuration allows building a bootable kernel image with a built-in initramfs +root file system (the board SD card is not used). The built kernel image can be +flashed directly to the board ROM for direct booting. No boot loader is +required. + +(2) U-Boot SD-Card Boot + +The sipeed_maix_bit_sdcard_defconfig configuration allows building a kernel +image with the root file system on the board SD card. U-Boot is used as the +boot loader. + +Both configuration files will also compile and install the kflash and +pyserial-miniterm host utilities to program bootable image files to the board +and open a serial terminal console. + +Direct Linux Kernel Boot +------------------------- + +Using the sipeed_maix_bit_defconfig configuration, the bootable kernel binary +image is built as follows. + +``` +$ make sipeed_maix_bit_defconfig +$ make +``` + +The bootable binary image is the output/images/loader.bin file. This image file +can be written to the board boot ROM using the kflash utility. + +``` +$ output/host/bin/kflash -b 1500000 -p /dev/ttyUSB0 -t output/images/loader.bin +``` + +Once the kernel image file is fully programmed, a terminal console is open and +the board can be rebooted by pressing the reset button on the board (if it does +not reboot automatically). + +The output will be similar to the following. + +``` +[ 0.000000] Linux version 5.18.0 (foo@bar.com) (riscv64-buildroot-linux-uclibc-gcc.br_real (Buildroot 2022.02-560-g6a2b542a09-dirty) 10.3.0, GNU ld (GNU Binutils) 2.32) #2 SMP Thu Apr 21 14:30:02 JST 2022 +[ 0.000000] Machine model: SiPeed MAIX BiT +[ 0.000000] earlycon: sifive0 at MMIO 0x0000000038000000 (options '115200n8') +[ 0.000000] printk: bootconsole [sifive0] enabled +[ 0.000000] Zone ranges: +[ 0.000000] DMA32 [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] Normal empty +[ 0.000000] Movable zone start for each node +[ 0.000000] Early memory node ranges +[ 0.000000] node 0: [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] riscv: ISA extensions acdfim +[ 0.000000] riscv: ELF capabilities acdfim +[ 0.000000] percpu: max_distance=0x16000 too large for vmalloc space 0x0 +[ 0.000000] percpu: Embedded 11 pages/cpu s15264 r0 d29792 u45056 +[ 0.000000] percpu: wasting 10 pages per chunk +[ 0.000000] Built 1 zonelists, mobility grouping off. Total pages: 2020 +[ 0.000000] Kernel command line: earlycon console=ttySIF0 +[ 0.000000] Dentry cache hash table entries: 1024 (order: 1, 8192 bytes, linear) +[ 0.000000] Inode-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off +[ 0.000000] Memory: 5996K/8192K available (964K kernel code, 137K rwdata, 205K rodata, 530K init, 66K bss, 2196K reserved, 0K cma-reserved) +[ 0.000000] rcu: Hierarchical RCU implementation. +[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies. +[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 +[ 0.000000] riscv-intc: 64 local interrupts mapped +[ 0.000000] plic: interrupt-controller@c000000: mapped 65 interrupts with 2 handlers for 4 contexts. +[ 0.000000] k210-clk: clock-controller: CPU running at 390 MHz +[ 0.000000] clint: timer@2000000: timer running at 7800000 Hz +[ 0.000000] clocksource: clint_clocksource: mask: 0xffffffffffffffff max_cycles: 0x3990be68b, max_idle_ns: 881590404272 ns +[ 0.000001] sched_clock: 64 bits at 7MHz, resolution 128ns, wraps every 4398046511054ns +[ 0.008188] Calibrating delay loop (skipped), value calculated using timer frequency.. 15.60 BogoMIPS (lpj=31200) +[ 0.018250] pid_max: default: 4096 minimum: 301 +[ 0.022860] Mount-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.029972] Mountpoint-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.040244] rcu: Hierarchical SRCU implementation. +[ 0.045121] smp: Bringing up secondary CPUs ... +[ 0.050225] smp: Brought up 1 node, 2 CPUs +[ 0.054355] devtmpfs: initialized +[ 0.071168] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns +[ 0.080240] pinctrl core: initialized pinctrl subsystem +[ 0.119221] clocksource: Switched to clocksource clint_clocksource +[ 0.131498] workingset: timestamp_bits=62 max_order=11 bucket_order=0 +[ 0.176943] k210-sysctl 50440000.syscon: K210 system controller +[ 0.193558] k210-rst 50440000.syscon:reset-controller: K210 reset controller +[ 0.201526] cacheinfo: Unable to detect cache hierarchy for CPU 0 +[ 0.211611] i2c_dev: i2c /dev entries driver +[ 0.221375] k210-fpioa 502b0000.pinmux: K210 FPIOA pin controller +[ 0.233591] 38000000.serial: ttySIF0 at MMIO 0x38000000 (irq = 1, base_baud = 115200) is a SiFive UART v0 +[ 0.242529] printk: console [ttySIF0] enabled +[ 0.242529] printk: console [ttySIF0] enabled +[ 0.251165] printk: bootconsole [sifive0] disabled +[ 0.251165] printk: bootconsole [sifive0] disabled +[ 0.274348] Freeing unused kernel image (initmem) memory: 524K +[ 0.279504] This architecture does not have kernel memory protection. +[ 0.285908] Run /init as init process + __ _ + / / (_) ____ _ _ __ __ + / / | || _ \ | | | |\ \/ / + / /___| || | | || |_| | > < + /_____/|_||_| |_| \____|/_/\_\ + 64-bits RISC-V Kendryte K210 NOMMU + +/ # +``` + +To open a terminal console without re-flashing the board, the pyserial-miniterm +host tool can be used. + +``` +$ output/host/bin/pyserial-miniterm --raw --eol=LF /dev/ttyUSB0 115200 +``` + +The options "--raw" and "--eol=LF" are added here to avoid a double carriage +return each time a command is entered. + + +U-Boot SD-Card Boot +------------------- + +The build procedure is similar to the direct Linux kernel boot case. + +``` +$ make sipeed_maix_bit_sdcard_defconfig +$ make +``` + +The build process will generate two files under the output/images directory. + +* sdcard.img: The image file for the SD card filesystem. This image has 2 + partitions. The first partition is a vfat partition containing the kernel + uImage and the board device tree binary. The second partition is the root + filesystem with busybox installed. The second partition is formatted using + ext2 (rev1). + +* uboot.bin: U-Boot bootable binary to load and boot the kernel from the SD + card. + +The SD card can be prepared by writing the sdcard.img file, as follows. + +``` +$ sudo dd if=output/images/sdcard.img of=/dev/sdX bs=1M +$ sync +$ eject /dev/sdX +``` + +Where /dev/sdX is the device file name of the SD card. Once completed, the SD +card can be inserted into the board and the U-Boot binary image written to the +board boot flash using the kflash utility. + +``` +$ output/host/bin/kflash -b 1500000 -p /dev/ttyUSB0 -t output/images/u-boot.bin +``` + +The above command will program U-Boot image to the board boot ROM and open a +terminal console once the u-boot.bin file is fully programmed. Reboot into the +newly programmed environment by pressing the board reset button. + +The output will be similar to the following. + +``` +U-Boot 2022.04 (May 24 2022 - 17:08:34 +0900) + +DRAM: 8 MiB +Core: 34 devices, 17 uclasses, devicetree: separate +WDT: Not starting watchdog@50400000 +MMC: spi@53000000:slot@0: 0 +Loading Environment from SPIFlash... SF: Detected gd25lq128 with page size 256 Bytes, erase size 4 KiB, total 16 MiB +*** Warning - bad CRC, using default environment + +In: serial@38000000 +Out: serial@38000000 +Err: serial@38000000 +Hit any key to stop autoboot: 0 +1668562 bytes read in 933 ms (1.7 MiB/s) +10468 bytes read in 11 ms (928.7 KiB/s) +## Booting kernel from Legacy Image at 80060000 ... + Image Name: Linux + Image Type: RISC-V Linux Kernel Image (uncompressed) + Data Size: 1668498 Bytes = 1.6 MiB + Load Address: 80000000 + Entry Point: 80000000 + Verifying Checksum ... OK +## Flattened Device Tree blob at 80400000 + Booting using the fdt blob at 0x80400000 + Loading Kernel Image + Loading Device Tree to 00000000803fa000, end 00000000803ff8e3 ... OK + +Starting kernel ... + +[ 0.000000] Linux version 5.18.0 (foo@bar.com) (riscv64-buildroot-linux-uclibc-gcc.br_real (Buildroot 2022.02-1056-gc356b62332) 10.3.0, GNU ld (GNU Binutils) 2.37) #1 SMP Tue May 24 06:45:04 JST 2022 +[ 0.000000] Machine model: SiPeed MAIX BiT +[ 0.000000] earlycon: sifive0 at MMIO 0x0000000038000000 (options '115200n8') +[ 0.000000] printk: bootconsole [sifive0] enabled +[ 0.000000] Zone ranges: +[ 0.000000] DMA32 [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] Normal empty +[ 0.000000] Movable zone start for each node +[ 0.000000] Early memory node ranges +[ 0.000000] node 0: [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] riscv: base ISA extensions acdfim +[ 0.000000] riscv: ELF capabilities acdfim +[ 0.000000] percpu: max_distance=0x16000 too large for vmalloc space 0x0 +[ 0.000000] percpu: Embedded 11 pages/cpu s15648 r0 d29408 u45056 +[ 0.000000] percpu: wasting 10 pages per chunk +[ 0.000000] Built 1 zonelists, mobility grouping off. Total pages: 2020 +[ 0.000000] Kernel command line: earlycon console=ttySIF0 root=/dev/mmcblk0p2 rootwait ro +[ 0.000000] Dentry cache hash table entries: 1024 (order: 1, 8192 bytes, linear) +[ 0.000000] Inode-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off +[ 0.000000] Memory: 6204K/8192K available (1134K kernel code, 150K rwdata, 239K rodata, 100K init, 68K bss, 1988K reserved, 0K cma-reserved) +[ 0.000000] rcu: Hierarchical RCU implementation. +[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies. +[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 +[ 0.000000] riscv-intc: 64 local interrupts mapped +[ 0.000000] plic: interrupt-controller@c000000: mapped 65 interrupts with 2 handlers for 4 contexts. +[ 0.000000] k210-clk: clock-controller: CPU running at 390 MHz +[ 0.000000] clint: timer@2000000: timer running at 7800000 Hz +[ 0.000000] clocksource: clint_clocksource: mask: 0xffffffffffffffff max_cycles: 0x3990be68b, max_idle_ns: 881590404272 ns +[ 0.000001] sched_clock: 64 bits at 7MHz, resolution 128ns, wraps every 4398046511054ns +[ 0.008194] Calibrating delay loop (skipped), value calculated using timer frequency.. 15.60 BogoMIPS (lpj=31200) +[ 0.018257] pid_max: default: 4096 minimum: 301 +[ 0.022869] Mount-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.029982] Mountpoint-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.040424] rcu: Hierarchical SRCU implementation. +[ 0.045397] smp: Bringing up secondary CPUs ... +[ 0.050518] smp: Brought up 1 node, 2 CPUs +[ 0.054676] devtmpfs: initialized +[ 0.072365] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns +[ 0.081396] pinctrl core: initialized pinctrl subsystem +[ 0.123762] clocksource: Switched to clocksource clint_clocksource +[ 0.136796] workingset: timestamp_bits=62 max_order=11 bucket_order=0 +[ 0.181768] k210-sysctl 50440000.syscon: K210 system controller +[ 0.198397] k210-rst 50440000.syscon:reset-controller: K210 reset controller +[ 0.207373] cacheinfo: Unable to detect cache hierarchy for CPU 0 +[ 0.218270] spi spi1.0: setup: ignoring unsupported mode bits a00 +[ 0.224786] i2c_dev: i2c /dev entries driver +[ 0.235984] k210-fpioa 502b0000.pinmux: K210 FPIOA pin controller +[ 0.249172] 38000000.serial: ttySIF0 at MMIO 0x38000000 (irq = 1, base_baud = 115200) is a SiFive UART v0 +[ 0.258078] printk: console [ttySIF0] enabled +[ 0.258078] printk: console [ttySIF0] enabled +[ 0.266707] printk: bootconsole [sifive0] disabled +[ 0.266707] printk: bootconsole [sifive0] disabled +[ 0.307910] mmc_spi spi3.0: SD/MMC host mmc0, no WP, no poweroff, cd polling +[ 0.319869] Waiting for root device /dev/mmcblk0p2... +[ 0.345016] mmc0: host does not support reading read-only switch, assuming write-enable +[ 0.352330] mmc0: new SDHC card on SPI +[ 0.359338] mmcblk0: mmc0:0000 SA16G 14.5 GiB +[ 0.367589] random: fast init done +[ 0.371533] mmcblk0: p1 p2 +[ 0.391794] random: get_random_bytes called from 0x0000000080095ae8 with crng_init=1 +[ 0.393388] VFS: Mounted root (ext2 filesystem) readonly on device 179:2. +[ 0.411377] devtmpfs: mounted +[ 0.413922] Freeing unused kernel image (initmem) memory: 96K +[ 0.419344] This architecture does not have kernel memory protection. +[ 0.425777] Run /sbin/init as init process +[ 0.718314] random: crng init done +[ 0.799903] init (1): drop_caches: 3 + __ _ + / / (_) ____ _ _ __ __ + / / | || _ \ | | | |\ \/ / + / /___| || | | || |_| | > < + /_____/|_||_| |_| \____|/_/\_\ + 64-bits RISC-V Kendryte K210 NOMMU + +/ # +``` + +Of note is that the kernel mounts the SD card as read-only by default to avoid +corruptions of the ext2 root file system when the board is powered down. This +is recommended as this board does not support clean shutdown or halt. + +Similarly to the initramfs build case, a console can be open without +re-flashing the board using the host tool pyserial-miniterm. + +``` +$ output/host/bin/pyserial-miniterm --raw --eol=LF /dev/ttyUSB0 115200 +``` diff --git a/board/sipeed/maix-dock/linux-cpio.config b/board/sipeed/maix-dock/linux-cpio.config new file mode 100644 index 00000000..b1ca3166 --- /dev/null +++ b/board/sipeed/maix-dock/linux-cpio.config @@ -0,0 +1,2 @@ +CONFIG_SOC_CANAAN_K210_DTB_BUILTIN=y +CONFIG_SOC_CANAAN_K210_DTB_SOURCE="sipeed_maix_dock" diff --git a/board/sipeed/maix-dock/readme.txt b/board/sipeed/maix-dock/readme.txt new file mode 100644 index 00000000..5971f6e5 --- /dev/null +++ b/board/sipeed/maix-dock/readme.txt @@ -0,0 +1,321 @@ +Sipeed MAIX-Dock Board +====================== + +The Sipeed MAXI-Dock board is a dual-core RISC-V 64-bits board based on the +Canaan Kendryte K210 SoC. + +Prerequisite +------------ + +In order to use the kflash utility to program this board, the user must have +access to the board USB serial device file. The simplest way to do this is to +add your user to the same group as this device file. Assume the device file is +/dev/ttyUSB0, first identify the device group name. In most cases, it is +either "dialout" or "uucp". Also verify that read-write access is enabled for +the group: + +``` +$ ls -l /dev/ttyUSB0 +crw-rw---- 1 root dialout 188, 0 May 26 13:48 /dev/ttyUSB0 +``` + +Then add yourself to that group (dialout in this example): + +``` +$ sudo usermod -a -G dialout $(whoami) +``` + +To enable the above, it is sometimes necessary to logout and login again. + +Buildroot Configuration +----------------------- + +Two buildroot configuration files are provided: + +(1) Direct Linux Kernel Boot + +This is defined by the sipeed_maix_dock_defconfig configuration. This +configuration allows building a bootable kernel image with a built-in initramfs +root file system (the board SD card is not used). The built kernel image can be +flashed directly to the board ROM for direct booting. No boot loader is +required. + +(2) U-Boot SD-Card Boot + +The sipeed_maix_dock_sdcard_defconfig configuration allows building a kernel +image with the root file system on the board SD card. U-Boot is used as the +boot loader. + +Note: U-Boot does not natively support the Sipeed MAIX-Dock board. However, the +board and device tree differences with the Sipeed MAIX-Bit board are small +enough for U-Boot to work. + +Both configuration files will also compile the pyserial-miniterm host tool open +a serial terminal console for the board. + +Direct Linux Kernel Boot +------------------------- + +Using the sipeed_maix_dock_defconfig configuration, the bootable kernel binary +image is built as follows. + +``` +$ make sipeed_maix_dock_defconfig +$ make +``` + +Both configuration files will also compile and install the kflash and +pyserial-miniterm host utilities to program bootable image files to the board +and open a serial terminal console. + +``` +$ output/host/bin/kflash -b 1500000 -p /dev/ttyUSB0 -t output/images/loader.bin +``` + +Once the kernel image file is fully programmed, a terminal console is open and +the board can be rebooted by pressing the reset button on the board (if it does +not reboot automatically). + +The output will be similar to the following. + +``` +[ 0.000000] Linux version 5.18.0 (foo@bar.com) (riscv64-buildroot-linux-uclibc-gcc.br_real (Buildroot 2022.02-560-g6a2b542a09-dirty) 10.3.0, GNU ld (GNU Binutils) 2.32) #2 SMP Thu Apr 21 15:47:42 JST 2022 +[ 0.000000] Machine model: SiPeed MAIX Dock +[ 0.000000] earlycon: sifive0 at MMIO 0x0000000038000000 (options '115200n8') +[ 0.000000] printk: bootconsole [sifive0] enabled +[ 0.000000] Zone ranges: +[ 0.000000] DMA32 [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] Normal empty +[ 0.000000] Movable zone start for each node +[ 0.000000] Early memory node ranges +[ 0.000000] node 0: [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] riscv: ISA extensions acdfim +[ 0.000000] riscv: ELF capabilities acdfim +[ 0.000000] percpu: max_distance=0x16000 too large for vmalloc space 0x0 +[ 0.000000] percpu: Embedded 11 pages/cpu s15264 r0 d29792 u45056 +[ 0.000000] percpu: wasting 10 pages per chunk +[ 0.000000] Built 1 zonelists, mobility grouping off. Total pages: 2020 +[ 0.000000] Kernel command line: earlycon console=ttySIF0 +[ 0.000000] Dentry cache hash table entries: 1024 (order: 1, 8192 bytes, linear) +[ 0.000000] Inode-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off +[ 0.000000] Memory: 5980K/8192K available (964K kernel code, 137K rwdata, 205K rodata, 546K init, 66K bss, 2212K reserved, 0K cma-reserved) +[ 0.000000] rcu: Hierarchical RCU implementation. +[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies. +[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 +[ 0.000000] riscv-intc: 64 local interrupts mapped +[ 0.000000] plic: interrupt-controller@c000000: mapped 65 interrupts with 2 handlers for 4 contexts. +[ 0.000000] k210-clk: clock-controller: CPU running at 390 MHz +[ 0.000000] clint: timer@2000000: timer running at 7800000 Hz +[ 0.000000] clocksource: clint_clocksource: mask: 0xffffffffffffffff max_cycles: 0x3990be68b, max_idle_ns: 881590404272 ns +[ 0.000001] sched_clock: 64 bits at 7MHz, resolution 128ns, wraps every 4398046511054ns +[ 0.008187] Calibrating delay loop (skipped), value calculated using timer frequency.. 15.60 BogoMIPS (lpj=31200) +[ 0.018250] pid_max: default: 4096 minimum: 301 +[ 0.022859] Mount-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.029971] Mountpoint-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.040238] rcu: Hierarchical SRCU implementation. +[ 0.045110] smp: Bringing up secondary CPUs ... +[ 0.050215] smp: Brought up 1 node, 2 CPUs +[ 0.054345] devtmpfs: initialized +[ 0.071112] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns +[ 0.080182] pinctrl core: initialized pinctrl subsystem +[ 0.120689] clocksource: Switched to clocksource clint_clocksource +[ 0.133165] workingset: timestamp_bits=62 max_order=11 bucket_order=0 +[ 0.181750] k210-sysctl 50440000.syscon: K210 system controller +[ 0.198612] k210-rst 50440000.syscon:reset-controller: K210 reset controller +[ 0.206644] cacheinfo: Unable to detect cache hierarchy for CPU 0 +[ 0.216569] i2c_dev: i2c /dev entries driver +[ 0.225905] k210-fpioa 502b0000.pinmux: K210 FPIOA pin controller +[ 0.238866] 38000000.serial: ttySIF0 at MMIO 0x38000000 (irq = 1, base_baud = 115200) is a SiFive UART v0 +[ 0.247778] printk: console [ttySIF0] enabled +[ 0.247778] printk: console [ttySIF0] enabled +[ 0.256459] printk: bootconsole [sifive0] disabled +[ 0.256459] printk: bootconsole [sifive0] disabled +[ 0.268225] panel@0 enforce active low on chipselect handle +[ 0.285238] Freeing unused kernel image (initmem) memory: 540K +[ 0.290372] This architecture does not have kernel memory protection. +[ 0.296807] Run /init as init process + __ _ + / / (_) ____ _ _ __ __ + / / | || _ \ | | | |\ \/ / + / /___| || | | || |_| | > < + /_____/|_||_| |_| \____|/_/\_\ + 64-bits RISC-V Kendryte K210 NOMMU + +/ # +``` + +To open a terminal console without re-flashing the board, the pyserial-miniterm +host tool can be used. + +``` +$ output/host/bin/pyserial-miniterm --raw --eol=LF /dev/ttyUSB0 115200 +``` + +The options "--raw" and "--eol=LF" are added here to avoid a double carriage +return each time a command is entered. + + +U-Boot SD-Card Boot +------------------- + +The build procedure is similar to the built-in initramfs case. + +``` +$ make sipeed_maix_dock_sdcard_defconfig +$ make +``` + +The build process will generate two files under the output/images directory. + +* sdcard.img: The image file for the SD card filesystem. This image has 2 + partitions. The first partition is a vfat partition containing the kernel + uImage and the board device tree binary. The second partition is the root + filesystem with busybox installed. The second partition is formatted using + ext2 (rev1). + +* uboot.bin: U-Boot bootable binary to load and boot the kernel from the SD + card. + +The SD card can be prepared by writing the sdcard.img file, as follows. + +``` +$ sudo dd if=output/images/sdcard.img of=/dev/sdX bs=1M +$ sync +$ eject /dev/sdX +``` + +Where /dev/sdX is the device file name of the SD card. Once completed, the SD +card can be inserted into the board and the U-Boot binary image written to the +board boot flash using the kflash utility. + +``` +$ output/host/bin/kflash -b 1500000 -p /dev/ttyUSB0 -t output/images/u-boot.bin +``` + +The above command will program U-Boot image to the board boot ROM and open a +terminal console once the u-boot.bin file is fully programmed. Reboot into the +newly programmed environment by pressing the board reset button if it does not +reboot automatically. + +The output will be similar to the following. + +``` +U-Boot 2022.04 (Apr 21 2022 - 15:59:50 +0900) + +DRAM: 8 MiB +Core: 34 devices, 17 uclasses, devicetree: separate +WDT: Not starting watchdog@50400000 +MMC: spi@53000000:slot@0: 0 +Loading Environment from SPIFlash... SF: Detected w25q128fw with page size 256 Bytes, erase size 4 KiB, total 16 MiB +*** Warning - bad CRC, using default environment + +In: serial@38000000 +Out: serial@38000000 +Err: serial@38000000 +Hit any key to stop autoboot: 0 +1717730 bytes read in 957 ms (1.7 MiB/s) +10382 bytes read in 11 ms (920.9 KiB/s) +## Booting kernel from Legacy Image at 80060000 ... + Image Name: Linux + Image Type: RISC-V Linux Kernel Image (uncompressed) + Data Size: 1717666 Bytes = 1.6 MiB + Load Address: 80000000 + Entry Point: 80000000 + Verifying Checksum ... OK +## Flattened Device Tree blob at 80400000 + Booting using the fdt blob at 0x80400000 + Loading Kernel Image + Loading Device Tree to 00000000803fa000, end 00000000803ff88d ... OK + +Starting kernel ... + +[ 0.000000] Linux version 5.18.0 (foo@bar.com) (riscv64-buildroot-linux-uclibc-gcc.br_real (Buildroot 2022.02-560-g6a2b542a09-dirty) 10.3.0, GNU ld (GNU Binutils) 2.32) #1 SMP Thu Apr 21 16:00:03 JST 2022 +[ 0.000000] Machine model: SiPeed MAIX Dock +[ 0.000000] earlycon: sifive0 at MMIO 0x0000000038000000 (options '115200n8') +[ 0.000000] printk: bootconsole [sifive0] enabled +[ 0.000000] Zone ranges: +[ 0.000000] DMA32 [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] Normal empty +[ 0.000000] Movable zone start for each node +[ 0.000000] Early memory node ranges +[ 0.000000] node 0: [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] riscv: ISA extensions acdfim +[ 0.000000] riscv: ELF capabilities acdfim +[ 0.000000] percpu: max_distance=0x16000 too large for vmalloc space 0x0 +[ 0.000000] percpu: Embedded 11 pages/cpu s15392 r0 d29664 u45056 +[ 0.000000] percpu: wasting 10 pages per chunk +[ 0.000000] Built 1 zonelists, mobility grouping off. Total pages: 2020 +[ 0.000000] Kernel command line: earlycon console=ttySIF0 root=/dev/mmcblk0p2 rootwait ro +[ 0.000000] Dentry cache hash table entries: 1024 (order: 1, 8192 bytes, linear) +[ 0.000000] Inode-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off +[ 0.000000] Memory: 6156K/8192K available (1180K kernel code, 151K rwdata, 239K rodata, 102K init, 69K bss, 2036K reserved, 0K cma-reserved) +[ 0.000000] rcu: Hierarchical RCU implementation. +[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies. +[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 +[ 0.000000] riscv-intc: 64 local interrupts mapped +[ 0.000000] plic: interrupt-controller@c000000: mapped 65 interrupts with 2 handlers for 4 contexts. +[ 0.000000] k210-clk: clock-controller: CPU running at 390 MHz +[ 0.000000] clint: timer@2000000: timer running at 7800000 Hz +[ 0.000000] clocksource: clint_clocksource: mask: 0xffffffffffffffff max_cycles: 0x3990be68b, max_idle_ns: 881590404272 ns +[ 0.000001] sched_clock: 64 bits at 7MHz, resolution 128ns, wraps every 4398046511054ns +[ 0.008196] Calibrating delay loop (skipped), value calculated using timer frequency.. 15.60 BogoMIPS (lpj=31200) +[ 0.018256] pid_max: default: 4096 minimum: 301 +[ 0.022876] Mount-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.029980] Mountpoint-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.040401] rcu: Hierarchical SRCU implementation. +[ 0.045379] smp: Bringing up secondary CPUs ... +[ 0.050494] smp: Brought up 1 node, 2 CPUs +[ 0.054656] devtmpfs: initialized +[ 0.072338] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns +[ 0.081415] pinctrl core: initialized pinctrl subsystem +[ 0.123902] clocksource: Switched to clocksource clint_clocksource +[ 0.136898] workingset: timestamp_bits=62 max_order=11 bucket_order=0 +[ 0.182570] k210-sysctl 50440000.syscon: K210 system controller +[ 0.198158] k210-rst 50440000.syscon:reset-controller: K210 reset controller +[ 0.207473] cacheinfo: Unable to detect cache hierarchy for CPU 0 +[ 0.219724] i2c_dev: i2c /dev entries driver +[ 0.230080] k210-fpioa 502b0000.pinmux: K210 FPIOA pin controller +[ 0.243091] 38000000.serial: ttySIF0 at MMIO 0x38000000 (irq = 1, base_baud = 115200) is a SiFive UART v0 +[ 0.252034] printk: console [ttySIF0] enabled +[ 0.252034] printk: console [ttySIF0] enabled +[ 0.260656] printk: bootconsole [sifive0] disabled +[ 0.260656] printk: bootconsole [sifive0] disabled +[ 0.272546] panel@0 enforce active low on chipselect handle +[ 0.308098] mmc_spi spi3.0: SD/MMC host mmc0, no WP, no poweroff, cd polling +[ 0.320197] Waiting for root device /dev/mmcblk0p2... +[ 0.344667] mmc0: host does not support reading read-only switch, assuming write-enable +[ 0.352020] mmc0: new SDHC card on SPI +[ 0.358566] mmcblk0: mmc0:0000 SA16G 14.5 GiB +[ 0.366866] random: fast init done +[ 0.371439] mmcblk0: p1 p2 +[ 0.391314] random: get_random_bytes called from 0x000000008009b7d2 with crng_init=1 +[ 0.400977] VFS: Mounted root (ext2 filesystem) readonly on device 179:2. +[ 0.410966] devtmpfs: mounted +[ 0.413521] Freeing unused kernel image (initmem) memory: 96K +[ 0.418944] This architecture does not have kernel memory protection. +[ 0.425370] Run /sbin/init as init process +[ 0.633502] random: crng init done + __ _ + / / (_) ____ _ _ __ __ + / / | || _ \ | | | |\ \/ / + / /___| || | | || |_| | > < + /_____/|_||_| |_| \____|/_/\_\ + 64-bits RISC-V Kendryte K210 NOMMU + +/ # +``` + +Of note is that the kernel mounts the SD card as read-only by default to avoid +corruptions of the ext2 root file system when the board is powered down. This +is recommended as this board does not support clean shutdown or halt. + +Similarly to the initramfs build case, a console can be open without +re-flashing the board using the host tool pyserial-miniterm. + +``` +$ output/host/bin/pyserial-miniterm --raw --eol=LF /dev/ttyUSB0 115200 +``` diff --git a/board/sipeed/maix-go/linux-cpio.config b/board/sipeed/maix-go/linux-cpio.config new file mode 100644 index 00000000..ea8c30e2 --- /dev/null +++ b/board/sipeed/maix-go/linux-cpio.config @@ -0,0 +1,2 @@ +CONFIG_SOC_CANAAN_K210_DTB_BUILTIN=y +CONFIG_SOC_CANAAN_K210_DTB_SOURCE="sipeed_maix_go" diff --git a/board/sipeed/maix-go/readme.txt b/board/sipeed/maix-go/readme.txt new file mode 100644 index 00000000..9f930fb6 --- /dev/null +++ b/board/sipeed/maix-go/readme.txt @@ -0,0 +1,320 @@ +Sipeed MAIX-Go Board +==================== + +The Sipeed MAXI-Go board is a dual-core RISC-V 64-bits board based on the +Canaan Kendryte K210 SoC. + +Prerequisite +------------ + +In order to use the kflash utility to program this board, the user must have +access to the board USB serial device file. The simplest way to do this is to +add your user to the same group as this device file. Assume the device file is +/dev/ttyUSB0, first identify the device group name. In most cases, it is +either "dialout" or "uucp". Also verify that read-write access is enabled for +the group: + +``` +$ ls -l /dev/ttyUSB0 +crw-rw---- 1 root dialout 188, 0 May 26 13:48 /dev/ttyUSB0 +``` + +Then add yourself to that group (dialout in this example): + +``` +$ sudo usermod -a -G dialout $(whoami) +``` + +To enable the above, it is sometimes necessary to logout and login again. + +Buildroot Configuration +----------------------- + +Two buildroot configuration files are provided: + +(1) Direct Linux Kernel Boot + +This is defined by the sipeed_maix_go_defconfig configuration. This +configuration allows building a bootable kernel image with a built-in initramfs +root file system (the board SD card is not used). The built kernel image can be +flashed directly to the board ROM for direct booting. No boot loader is +required. + +(2) U-Boot SD-Card Boot + +The sipeed_maix_go_sdcard_defconfig configuration allows building a kernel +image with the root file system on the board SD card. U-Boot is used as the +boot loader. + +Note: U-Boot does not natively support the Sipeed MAIX-Go board. However, the +board and device tree differences with the Sipeed MAIX-bit board are small +enough for U-Boot to work. + +Both configuration files will also compile and install the kflash and +pyserial-miniterm host utilities to program bootable image files to the board +and open a serial terminal console. + +Direct Linux Kernel Boot +------------------------- + +Using the sipeed_maix_go_defconfig configuration, the bootable kernel binary +image is built as follows. + +``` +$ make sipeed_maix_go_defconfig +$ make +``` + +The bootable binary image is the output/images/loader.bin file. This image file +can be written to the board boot flash using the kflash utility. + +``` +$ output/host/bin/kflash -b 1500000 -p /dev/ttyUSB0 -t output/images/loader.bin +``` + +Once the kernel image file is fully programmed, a terminal console is open and +the board can be rebooted by pressing the reset button on the board (if it does +not reboot automatically). + +The output will be similar to the following. + +``` +[ 0.000000] Linux version 5.17.0 (foo@bar.com) (riscv64-buildroot-linux-uclibc-gcc.br_real (Buildroot 2022.02-560-g6a2b542a09-dirty) 10.3.0, GNU ld (GNU Binutils) 2.32) #2 SMP Thu Apr 21 16:09:24 JST 2022 +[ 0.000000] Machine model: SiPeed MAIX GO +[ 0.000000] earlycon: sifive0 at MMIO 0x0000000038000000 (options '115200n8') +[ 0.000000] printk: bootconsole [sifive0] enabled +[ 0.000000] Zone ranges: +[ 0.000000] DMA32 [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] Normal empty +[ 0.000000] Movable zone start for each node +[ 0.000000] Early memory node ranges +[ 0.000000] node 0: [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] riscv: ISA extensions acdfim +[ 0.000000] riscv: ELF capabilities acdfim +[ 0.000000] percpu: max_distance=0x16000 too large for vmalloc space 0x0 +[ 0.000000] percpu: Embedded 11 pages/cpu s15264 r0 d29792 u45056 +[ 0.000000] percpu: wasting 10 pages per chunk +[ 0.000000] Built 1 zonelists, mobility grouping off. Total pages: 2020 +[ 0.000000] Kernel command line: earlycon console=ttySIF0 +[ 0.000000] Dentry cache hash table entries: 1024 (order: 1, 8192 bytes, linear) +[ 0.000000] Inode-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off +[ 0.000000] Memory: 5980K/8192K available (964K kernel code, 137K rwdata, 205K rodata, 546K init, 66K bss, 2212K reserved, 0K cma-reserved) +[ 0.000000] rcu: Hierarchical RCU implementation. +[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies. +[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 +[ 0.000000] riscv-intc: 64 local interrupts mapped +[ 0.000000] plic: interrupt-controller@c000000: mapped 65 interrupts with 2 handlers for 4 contexts. +[ 0.000000] k210-clk: clock-controller: CPU running at 390 MHz +[ 0.000000] clint: timer@2000000: timer running at 7800000 Hz +[ 0.000000] clocksource: clint_clocksource: mask: 0xffffffffffffffff max_cycles: 0x3990be68b, max_idle_ns: 881590404272 ns +[ 0.000001] sched_clock: 64 bits at 7MHz, resolution 128ns, wraps every 4398046511054ns +[ 0.008193] Calibrating delay loop (skipped), value calculated using timer frequency.. 15.60 BogoMIPS (lpj=31200) +[ 0.018250] pid_max: default: 4096 minimum: 301 +[ 0.022862] Mount-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.029971] Mountpoint-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.040239] rcu: Hierarchical SRCU implementation. +[ 0.045118] smp: Bringing up secondary CPUs ... +[ 0.050204] smp: Brought up 1 node, 2 CPUs +[ 0.054336] devtmpfs: initialized +[ 0.071519] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns +[ 0.080591] pinctrl core: initialized pinctrl subsystem +[ 0.121163] clocksource: Switched to clocksource clint_clocksource +[ 0.133221] workingset: timestamp_bits=62 max_order=11 bucket_order=0 +[ 0.180960] k210-sysctl 50440000.syscon: K210 system controller +[ 0.196811] k210-rst 50440000.syscon:reset-controller: K210 reset controller +[ 0.204879] cacheinfo: Unable to detect cache hierarchy for CPU 0 +[ 0.214087] i2c_dev: i2c /dev entries driver +[ 0.222736] k210-fpioa 502b0000.pinmux: K210 FPIOA pin controller +[ 0.236173] 38000000.serial: ttySIF0 at MMIO 0x38000000 (irq = 1, base_baud = 115200) is a SiFive UART v0 +[ 0.245104] printk: console [ttySIF0] enabled +[ 0.245104] printk: console [ttySIF0] enabled +[ 0.253726] printk: bootconsole [sifive0] disabled +[ 0.253726] printk: bootconsole [sifive0] disabled +[ 0.265588] panel@0 enforce active low on chipselect handle +[ 0.282358] Freeing unused kernel image (initmem) memory: 540K +[ 0.287492] This architecture does not have kernel memory protection. +[ 0.293926] Run /init as init process + __ _ + / / (_) ____ _ _ __ __ + / / | || _ \ | | | |\ \/ / + / /___| || | | || |_| | > < + /_____/|_||_| |_| \____|/_/\_\ + 64-bits RISC-V Kendryte K210 NOMMU + +/ # +``` + +To open a terminal console without re-flashing the board, the pyserial-miniterm +host tool can be used. + +``` +$ output/host/bin/pyserial-miniterm --raw --eol=LF /dev/ttyUSB0 115200 +``` + +The options "--raw" and "--eol=LF" are added here to avoid a double carriage +return each time a command is entered. + + +U-Boot SD-Card Boot +------------------- + +The build procedure is similar to the built-in initramfs case. + +``` +$ make sipeed_maix_go_sdcard_defconfig +$ make +``` + +The build process will generate two files under the output/images directory. + +* sdcard.img: The image file for the SD card filesystem. This image has 2 + partitions. The first partition is a vfat partition containing the kernel + uImage and the board device tree binary. The second partition is the root + filesystem with busybox installed. The second partition is formatted using + ext2 (rev1). + +* uboot.bin: U-Boot bootable binary to load and boot the kernel from the SD + card. + +The SD card can be prepared by writing the sdcard.img file, as follows. + +``` +$ sudo dd if=output/images/sdcard.img of=/dev/sdX bs=1M +$ sync +$ eject /dev/sdX +``` + +Where /dev/sdX is the device file name of the SD card. Once completed, the SD +card can be inserted into the board and the U-Boot binary image written to the +board boot flash using the kflash utility. + +``` +$ output/host/bin/kflash -b 1500000 -p /dev/ttyUSB0 -t output/images/u-boot.bin +``` + +The above command will program U-Boot image to the board boot ROM and open a +terminal console once the u-boot.bin file is fully programmed. Reboot into the +newly programmed environment by pressing the board reset button. + +The output will be similar to the following. + +``` +U-Boot 2022.04 (Apr 21 2022 - 16:28:58 +0900) + +DRAM: 8 MiB +Core: 34 devices, 17 uclasses, devicetree: separate +WDT: Not starting watchdog@50400000 +MMC: spi@53000000:slot@0: 0 +Loading Environment from SPIFlash... SF: Detected gd25lq128 with page size 256 Bytes, erase size 4 KiB, total 16 MiB +*** Warning - bad CRC, using default environment + +In: serial@38000000 +Out: serial@38000000 +Err: serial@38000000 +Hit any key to stop autoboot: 0 +1717730 bytes read in 956 ms (1.7 MiB/s) +10502 bytes read in 11 ms (931.6 KiB/s) +## Booting kernel from Legacy Image at 80060000 ... + Image Name: Linux + Image Type: RISC-V Linux Kernel Image (uncompressed) + Data Size: 1717666 Bytes = 1.6 MiB + Load Address: 80000000 + Entry Point: 80000000 + Verifying Checksum ... OK +## Flattened Device Tree blob at 80400000 + Booting using the fdt blob at 0x80400000 + Loading Kernel Image + Loading Device Tree to 00000000803fa000, end 00000000803ff905 ... OK + +Starting kernel ... + +[ 0.000000] Linux version 5.17.0 (foo@bar.com) (riscv64-buildroot-linux-uclibc-gcc.br_real (Buildroot 2022.02-560-g6a2b542a09-dirty) 10.3.0, GNU ld (GNU Binutils) 2.32) #1 SMP Thu Apr 21 16:29:10 JST 2022 +[ 0.000000] Machine model: SiPeed MAIX GO +[ 0.000000] earlycon: sifive0 at MMIO 0x0000000038000000 (options '115200n8') +[ 0.000000] printk: bootconsole [sifive0] enabled +[ 0.000000] Zone ranges: +[ 0.000000] DMA32 [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] Normal empty +[ 0.000000] Movable zone start for each node +[ 0.000000] Early memory node ranges +[ 0.000000] node 0: [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] riscv: ISA extensions acdfim +[ 0.000000] riscv: ELF capabilities acdfim +[ 0.000000] percpu: max_distance=0x16000 too large for vmalloc space 0x0 +[ 0.000000] percpu: Embedded 11 pages/cpu s15392 r0 d29664 u45056 +[ 0.000000] percpu: wasting 10 pages per chunk +[ 0.000000] Built 1 zonelists, mobility grouping off. Total pages: 2020 +[ 0.000000] Kernel command line: earlycon console=ttySIF0 root=/dev/mmcblk0p2 rootwait ro +[ 0.000000] Dentry cache hash table entries: 1024 (order: 1, 8192 bytes, linear) +[ 0.000000] Inode-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off +[ 0.000000] Memory: 6156K/8192K available (1180K kernel code, 151K rwdata, 239K rodata, 102K init, 69K bss, 2036K reserved, 0K cma-reserved) +[ 0.000000] rcu: Hierarchical RCU implementation. +[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies. +[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 +[ 0.000000] riscv-intc: 64 local interrupts mapped +[ 0.000000] plic: interrupt-controller@c000000: mapped 65 interrupts with 2 handlers for 4 contexts. +[ 0.000000] k210-clk: clock-controller: CPU running at 390 MHz +[ 0.000000] clint: timer@2000000: timer running at 7800000 Hz +[ 0.000000] clocksource: clint_clocksource: mask: 0xffffffffffffffff max_cycles: 0x3990be68b, max_idle_ns: 881590404272 ns +[ 0.000001] sched_clock: 64 bits at 7MHz, resolution 128ns, wraps every 4398046511054ns +[ 0.008201] Calibrating delay loop (skipped), value calculated using timer frequency.. 15.60 BogoMIPS (lpj=31200) +[ 0.018256] pid_max: default: 4096 minimum: 301 +[ 0.022875] Mount-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.029983] Mountpoint-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.040405] rcu: Hierarchical SRCU implementation. +[ 0.045387] smp: Bringing up secondary CPUs ... +[ 0.050501] smp: Brought up 1 node, 2 CPUs +[ 0.054662] devtmpfs: initialized +[ 0.072840] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns +[ 0.081918] pinctrl core: initialized pinctrl subsystem +[ 0.124601] clocksource: Switched to clocksource clint_clocksource +[ 0.137869] workingset: timestamp_bits=62 max_order=11 bucket_order=0 +[ 0.183507] k210-sysctl 50440000.syscon: K210 system controller +[ 0.199987] k210-rst 50440000.syscon:reset-controller: K210 reset controller +[ 0.209219] cacheinfo: Unable to detect cache hierarchy for CPU 0 +[ 0.221062] i2c_dev: i2c /dev entries driver +[ 0.232254] k210-fpioa 502b0000.pinmux: K210 FPIOA pin controller +[ 0.245342] 38000000.serial: ttySIF0 at MMIO 0x38000000 (irq = 1, base_baud = 115200) is a SiFive UART v0 +[ 0.254281] printk: console [ttySIF0] enabled +[ 0.254281] printk: console [ttySIF0] enabled +[ 0.262908] printk: bootconsole [sifive0] disabled +[ 0.262908] printk: bootconsole [sifive0] disabled +[ 0.274939] panel@0 enforce active low on chipselect handle +[ 0.308760] mmc_spi spi3.0: SD/MMC host mmc0, no WP, no poweroff, cd polling +[ 0.321220] Waiting for root device /dev/mmcblk0p2... +[ 0.344805] mmc0: host does not support reading read-only switch, assuming write-enable +[ 0.352142] mmc0: new SDHC card on SPI +[ 0.358622] mmcblk0: mmc0:0000 SA16G 14.5 GiB +[ 0.366636] random: fast init done +[ 0.371323] mmcblk0: p1 p2 +[ 0.392887] random: get_random_bytes called from 0x000000008009b7d2 with crng_init=1 +[ 0.394338] VFS: Mounted root (ext2 filesystem) readonly on device 179:2. +[ 0.411277] devtmpfs: mounted +[ 0.413836] Freeing unused kernel image (initmem) memory: 96K +[ 0.419267] This architecture does not have kernel memory protection. +[ 0.425683] Run /sbin/init as init process +[ 0.594251] random: crng init done + __ _ + / / (_) ____ _ _ __ __ + / / | || _ \ | | | |\ \/ / + / /___| || | | || |_| | > < + /_____/|_||_| |_| \____|/_/\_\ + 64-bits RISC-V Kendryte K210 NOMMU + +/ # +``` + +Of note is that the kernel mounts the SD card as read-only by default to avoid +corruptions of the ext2 root file system when the board is powered down. This +is recommended as this board does not support clean shutdown or halt. + +Similarly to the initramfs build case, a console can be open without +re-flashing the board using the host tool pyserial-miniterm. + +``` +$ output/host/bin/pyserial-miniterm --raw --eol=LF /dev/ttyUSB0 115200 +``` diff --git a/board/sipeed/maixduino/linux-cpio.config b/board/sipeed/maixduino/linux-cpio.config new file mode 100644 index 00000000..049a2550 --- /dev/null +++ b/board/sipeed/maixduino/linux-cpio.config @@ -0,0 +1,2 @@ +CONFIG_SOC_CANAAN_K210_DTB_BUILTIN=y +CONFIG_SOC_CANAAN_K210_DTB_SOURCE="sipeed_maixduino" diff --git a/board/sipeed/maixduino/readme.txt b/board/sipeed/maixduino/readme.txt new file mode 100644 index 00000000..53a9e5c2 --- /dev/null +++ b/board/sipeed/maixduino/readme.txt @@ -0,0 +1,292 @@ +Sipeed MAIXDUINO Board +====================== + +The Sipeed MAIXDUINO board is a dual-core RISC-V 64-bits board based on the +Canaan Kendryte K210 SoC. This board has the same form factor as the Arduino +UNO board. + +Prerequisite +------------ + +In order to use the kflash utility to program this board, the user must have +access to the board USB serial device file. The simplest way to do this is to +add your user to the same group as this device file. Assume the device file is +/dev/ttyUSB0, first identify the device group name. In most cases, it is +either "dialout" or "uucp". Also verify that read-write access is enabled for +the group: + +``` +$ ls -l /dev/ttyUSB0 +crw-rw---- 1 root dialout 188, 0 May 26 13:48 /dev/ttyUSB0 +``` + +Then add yourself to that group (dialout in this example): + +``` +$ sudo usermod -a -G dialout $(whoami) +``` + +To enable the above, it is sometimes necessary to logout and login again. + +Buildroot Configuration +----------------------- + +Two buildroot configurations are provided: + +(1) Direct Linux Kernel Boot + +This is defined by the sipeed_maixduino_defconfig configuration. This +configuration allows building a bootable kernel image with a built-in initramfs +root file system (the board SD card is not used). The built kernel image can be +flashed directly to the board ROM for direct booting. No boot loader is +required. + +(2) U-Boot SD-Card Boot + +The sipeed_maixduino_sdcard_defconfig configuration allows building a kernel +image with the root file system on the board SD card. U-Boot is used as the +boot loader. + +Note: U-Boot does not natively support the Sipeed MAIXDUINO board. However, the +board and device tree differences with the Sipeed MAIX-bit board are small +enough for U-Boot to work. + +Both configuration files will also compile and install the kflash and +pyserial-miniterm host utilities to program bootable image files to the board +and open a serial terminal console. + +Direct Linux Kernel Boot +------------------------ + +Using the sipeed_maixduino_defconfig configuration, the bootable kernel binary +image is built as follows. + +``` +$ make sipeed_maixduino_defconfig +$ make +``` + +The bootable binary image is the output/images/loader.bin file. This image file +can be written to the board boot flash using the kflash utility. + +``` +$ output/host/bin/kflash -b 1500000 -p /dev/ttyUSB0 -t output/images/loader.bin +``` + +Once the kernel image file is fully programmed, a terminal console is open and +the board can be rebooted by pressing the reset button on the board (if it does +not reboot automatically). + +The output will be similar to the following. + +``` +[ 0.000000] Linux version 5.18.0 (foo@bar.com) (riscv64-buildroot-linux-uclibc-gcc.br_real (Buildroot 2022.02-560-g6a2b542a09-dirty) 10.3.0, GNU ld (GNU Binutils) 2.32) #2 SMP Thu Apr 21 15:16:00 JST 2022 +[ 0.000000] Machine model: SiPeed MAIXDUINO +[ 0.000000] earlycon: sifive0 at MMIO 0x0000000038000000 (options '115200n8') +[ 0.000000] printk: bootconsole [sifive0] enabled +[ 0.000000] Zone ranges: +[ 0.000000] DMA32 [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] Normal empty +[ 0.000000] Movable zone start for each node +[ 0.000000] Early memory node ranges +[ 0.000000] node 0: [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] riscv: ISA extensions acdfim +[ 0.000000] riscv: ELF capabilities acdfim +[ 0.000000] percpu: max_distance=0x16000 too large for vmalloc space 0x0 +[ 0.000000] percpu: Embedded 11 pages/cpu s15264 r0 d29792 u45056 +[ 0.000000] percpu: wasting 10 pages per chunk +[ 0.000000] Built 1 zonelists, mobility grouping off. Total pages: 2020 +[ 0.000000] Kernel command line: earlycon console=ttySIF0 +[ 0.000000] Dentry cache hash table entries: 1024 (order: 1, 8192 bytes, linear) +[ 0.000000] Inode-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off +[ 0.000000] Memory: 6000K/8192K available (964K kernel code, 137K rwdata, 205K rodata, 530K init, 66K bss, 2192K reserved, 0K cma-reserved) +[ 0.000000] rcu: Hierarchical RCU implementation. +[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies. +[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 +[ 0.000000] riscv-intc: 64 local interrupts mapped +[ 0.000000] plic: interrupt-controller@c000000: mapped 65 interrupts with 2 handlers for 4 contexts. +[ 0.000000] k210-clk: clock-controller: CPU running at 390 MHz +[ 0.000000] clint: timer@2000000: timer running at 7800000 Hz +[ 0.000000] clocksource: clint_clocksource: mask: 0xffffffffffffffff max_cycles: 0x3990be68b, max_idle_ns: 881590404272 ns +[ 0.000001] sched_clock: 64 bits at 7MHz, resolution 128ns, wraps every 4398046511054ns +[ 0.008183] Calibrating delay loop (skipped), value calculated using timer frequency.. 15.60 BogoMIPS (lpj=31200) +[ 0.018249] pid_max: default: 4096 minimum: 301 +[ 0.022860] Mount-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.029971] Mountpoint-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.040242] rcu: Hierarchical SRCU implementation. +[ 0.045124] smp: Bringing up secondary CPUs ... +[ 0.050217] smp: Brought up 1 node, 2 CPUs +[ 0.054346] devtmpfs: initialized +[ 0.070924] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns +[ 0.079996] pinctrl core: initialized pinctrl subsystem +[ 0.119893] clocksource: Switched to clocksource clint_clocksource +[ 0.131992] workingset: timestamp_bits=62 max_order=11 bucket_order=0 +[ 0.179099] k210-sysctl 50440000.syscon: K210 system controller +[ 0.194904] k210-rst 50440000.syscon:reset-controller: K210 reset controller +[ 0.203108] cacheinfo: Unable to detect cache hierarchy for CPU 0 +[ 0.213867] i2c_dev: i2c /dev entries driver +[ 0.223397] k210-fpioa 502b0000.pinmux: K210 FPIOA pin controller +[ 0.235632] 38000000.serial: ttySIF0 at MMIO 0x38000000 (irq = 1, base_baud = 115200) is a SiFive UART v0 +[ 0.244585] printk: console [ttySIF0] enabled +[ 0.244585] printk: console [ttySIF0] enabled +[ 0.253190] printk: bootconsole [sifive0] disabled +[ 0.253190] printk: bootconsole [sifive0] disabled +[ 0.264820] panel@0 enforce active low on chipselect handle +[ 0.281482] Freeing unused kernel image (initmem) memory: 524K +[ 0.286621] This architecture does not have kernel memory protection. +[ 0.293047] Run /init as init process + __ _ + / / (_) ____ _ _ __ __ + / / | || _ \ | | | |\ \/ / + / /___| || | | || |_| | > < + /_____/|_||_| |_| \____|/_/\_\ + 64-bits RISC-V Kendryte K210 NOMMU + +/ # +``` + +To open a terminal console without re-flashing the board, the pyserial-miniterm +host tool can be used. + +``` +$ output/host/bin/pyserial-miniterm --raw --eol=LF /dev/ttyUSB0 115200 +``` + +The options "--raw" and "--eol=LF" are added here to avoid a double carriage +return each time a command is entered. + + +U-Boot SD-Card Boot +------------------- + +The build procedure is similar to the built-in initramfs case. + +``` +$ make sipeed_maixduino_sdcard_defconfig +$ make +``` + +The build process will generate two files under the output/images directory. + +* sdcard.img: The image file for the SD card filesystem. This image has 2 + partitions. The first partition is a vfat partition containing the kernel + uImage and the board device tree binary. The second partition is the root + filesystem with busybox installed. The second partition is formatted using + ext2 (rev1). + +* uboot.bin: U-Boot bootable binary to load and boot the kernel from the SD + card. + +The SD card can be prepared by writing the sdcard.img file, as follows. + +``` +$ sudo dd if=output/images/sdcard.img of=/dev/sdX bs=1M +$ sync +$ eject /dev/sdX +``` + +Where /dev/sdX is the device file name of the SD card. Once completed, the SD +card can be inserted into the board and the U-Boot binary image written to the +board boot flash using the kflash utility. + +``` +$ output/host/bin/kflash -b 1500000 -p /dev/ttyUSB0 -t output/images/u-boot.bin +``` + +The above command will program U-Boot image to the board boot ROM and open a +terminal console once the u-boot.bin file is fully programmed. Reboot into the +newly programmed environment by pressing the board reset button. + +The output will be similar to the following. + +``` +[ 0.000000] Linux version 5.18.0 (foo@bar.com) (riscv64-buildroot-linux-uclibc-gcc.br_real (Buildroot 2022.02-560-g6a2b542a09-dirty) 10.3.0, GNU ld (GNU Binutils) 2.32) #1 SMP Thu Apr 21 15:30:18 JST 2022 +[ 0.000000] Machine model: SiPeed MAIXDUINO +[ 0.000000] earlycon: sifive0 at MMIO 0x0000000038000000 (options '115200n8') +[ 0.000000] printk: bootconsole [sifive0] enabled +[ 0.000000] Zone ranges: +[ 0.000000] DMA32 [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] Normal empty +[ 0.000000] Movable zone start for each node +[ 0.000000] Early memory node ranges +[ 0.000000] node 0: [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000807fffff] +[ 0.000000] riscv: ISA extensions acdfim +[ 0.000000] riscv: ELF capabilities acdfim +[ 0.000000] percpu: max_distance=0x16000 too large for vmalloc space 0x0 +[ 0.000000] percpu: Embedded 11 pages/cpu s15392 r0 d29664 u45056 +[ 0.000000] percpu: wasting 10 pages per chunk +[ 0.000000] Built 1 zonelists, mobility grouping off. Total pages: 2020 +[ 0.000000] Kernel command line: earlycon console=ttySIF0 root=/dev/mmcblk0p2 rootwait ro +[ 0.000000] Dentry cache hash table entries: 1024 (order: 1, 8192 bytes, linear) +[ 0.000000] Inode-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off +[ 0.000000] Memory: 6156K/8192K available (1180K kernel code, 151K rwdata, 239K rodata, 102K init, 69K bss, 2036K reserved, 0K cma-reserved) +[ 0.000000] rcu: Hierarchical RCU implementation. +[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies. +[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 +[ 0.000000] riscv-intc: 64 local interrupts mapped +[ 0.000000] plic: interrupt-controller@c000000: mapped 65 interrupts with 2 handlers for 4 contexts. +[ 0.000000] k210-clk: clock-controller: CPU running at 390 MHz +[ 0.000000] clint: timer@2000000: timer running at 7800000 Hz +[ 0.000000] clocksource: clint_clocksource: mask: 0xffffffffffffffff max_cycles: 0x3990be68b, max_idle_ns: 881590404272 ns +[ 0.000001] sched_clock: 64 bits at 7MHz, resolution 128ns, wraps every 4398046511054ns +[ 0.008191] Calibrating delay loop (skipped), value calculated using timer frequency.. 15.60 BogoMIPS (lpj=31200) +[ 0.018255] pid_max: default: 4096 minimum: 301 +[ 0.022876] Mount-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.029982] Mountpoint-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.040417] rcu: Hierarchical SRCU implementation. +[ 0.045397] smp: Bringing up secondary CPUs ... +[ 0.050513] smp: Brought up 1 node, 2 CPUs +[ 0.054680] devtmpfs: initialized +[ 0.072127] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns +[ 0.081205] pinctrl core: initialized pinctrl subsystem +[ 0.125074] clocksource: Switched to clocksource clint_clocksource +[ 0.138311] workingset: timestamp_bits=62 max_order=11 bucket_order=0 +[ 0.183471] k210-sysctl 50440000.syscon: K210 system controller +[ 0.199873] k210-rst 50440000.syscon:reset-controller: K210 reset controller +[ 0.208858] cacheinfo: Unable to detect cache hierarchy for CPU 0 +[ 0.221586] i2c_dev: i2c /dev entries driver +[ 0.232786] k210-fpioa 502b0000.pinmux: K210 FPIOA pin controller +[ 0.246572] 38000000.serial: ttySIF0 at MMIO 0x38000000 (irq = 1, base_baud = 115200) is a SiFive UART v0 +[ 0.255508] printk: console [ttySIF0] enabled +[ 0.255508] printk: console [ttySIF0] enabled +[ 0.264137] printk: bootconsole [sifive0] disabled +[ 0.264137] printk: bootconsole [sifive0] disabled +[ 0.275560] panel@0 enforce active low on chipselect handle +[ 0.313245] mmc_spi spi3.0: SD/MMC host mmc0, no WP, no poweroff, cd polling +[ 0.322845] Waiting for root device /dev/mmcblk0p2... +[ 0.345869] mmc0: host does not support reading read-only switch, assuming write-enable +[ 0.353221] mmc0: new SDHC card on SPI +[ 0.360233] mmcblk0: mmc0:0000 SA16G 14.5 GiB +[ 0.368350] random: fast init done +[ 0.372926] mmcblk0: p1 p2 +[ 0.391887] random: get_random_bytes called from 0x000000008009b7d2 with crng_init=1 +[ 0.400427] VFS: Mounted root (ext2 filesystem) readonly on device 179:2. +[ 0.410128] devtmpfs: mounted +[ 0.412628] Freeing unused kernel image (initmem) memory: 96K +[ 0.418137] This architecture does not have kernel memory protection. +[ 0.424530] Run /sbin/init as init process +[ 0.563384] random: crng init done + __ _ + / / (_) ____ _ _ __ __ + / / | || _ \ | | | |\ \/ / + / /___| || | | || |_| | > < + /_____/|_||_| |_| \____|/_/\_\ + 64-bits RISC-V Kendryte K210 NOMMU + +/ # +``` + +Of note is that the kernel mounts the SD card as read-only by default to avoid +corruptions of the ext2 root file system when the board is powered down. This +is recommended as this board does not support clean shutdown or halt. + +Similarly to the initramfs build case, a console can be open without +re-flashing the board using the host tool pyserial-miniterm. + +``` +$ output/host/bin/pyserial-miniterm --raw --eol=LF /dev/ttyUSB0 115200 +``` diff --git a/board/solidrun/clearfog/extlinux.conf b/board/solidrun/clearfog/extlinux.conf new file mode 100644 index 00000000..f35974e3 --- /dev/null +++ b/board/solidrun/clearfog/extlinux.conf @@ -0,0 +1,4 @@ +label Clearfog Linux + kernel /boot/zImage + devicetree /boot/armada-388-clearfog-base.dtb + append console=ttyS0,115200n8 root=/dev/mmcblk0p1 rootwait diff --git a/board/solidrun/clearfog/genimage.cfg b/board/solidrun/clearfog/genimage.cfg new file mode 100644 index 00000000..8963619c --- /dev/null +++ b/board/solidrun/clearfog/genimage.cfg @@ -0,0 +1,16 @@ +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-spl.kwb" + offset = 512 + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + offset = 1M + } +} diff --git a/board/solidrun/clearfog/linux.fragment b/board/solidrun/clearfog/linux.fragment new file mode 100644 index 00000000..b7ed5b00 --- /dev/null +++ b/board/solidrun/clearfog/linux.fragment @@ -0,0 +1 @@ +CONFIG_SENSORS_MCP3021=y diff --git a/board/solidrun/clearfog/post-build.sh b/board/solidrun/clearfog/post-build.sh new file mode 100755 index 00000000..1f5ff6a6 --- /dev/null +++ b/board/solidrun/clearfog/post-build.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +install -m 0644 -D $BOARD_DIR/extlinux.conf $TARGET_DIR/boot/extlinux/extlinux.conf diff --git a/board/solidrun/clearfog/readme.txt b/board/solidrun/clearfog/readme.txt new file mode 100644 index 00000000..60bf9532 --- /dev/null +++ b/board/solidrun/clearfog/readme.txt @@ -0,0 +1,61 @@ +********************** +SolidRun Clearfog Base +********************** + +This file documents Buildroot's support for the Clearfog Base by Solid Run. + +Vendor's documentation: +https://wiki.solid-run.com/doku.php?id=products:a38x:documents + +Warning for eMMC variant of the MicroSoM +======================================== + +If you bought a MicroSoM version that includes an on-board eMMC flash, the +built-in microSD card slot *WILL NOT WORK*. The Internet says that you have to +upload the first bootloader via UART. This manual does not cover these steps; +only MicroSoMs without the eMMC are supported. + +Build +===== + +Start with the default Buildroot's configuration for Clearfog: + + make solidrun_clearfog_defconfig + +Build all components: + + make + +The results of the build are available in ./output/images. + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a microSD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ conv=fdatasync + +*** WARNING! The dd command will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/solidrun/clearfog/genimage.cfg. + +Boot the Clearfog board +======================= + +Here's how to boot the board: + +- Set up the DIP switches for microSD boot. The correct values are: + 1: off, 2: off, 3: ON, 4: ON, 5: ON. In this scheme, switch #1" is closer to + the ethernet ports and #5 is closer to the microSD card, "ON" means towards + the SOM, and "off" means towards the SFP cage. +- Connect to the board's console over the microUSB port. +- Insert the SD card into the slot on the board (pins up). +- Power up the board. diff --git a/board/solidrun/clearfog_gt_8k/extlinux.conf b/board/solidrun/clearfog_gt_8k/extlinux.conf new file mode 100644 index 00000000..aae0c0d5 --- /dev/null +++ b/board/solidrun/clearfog_gt_8k/extlinux.conf @@ -0,0 +1,4 @@ +label Clearfog GT-8K Linux + kernel /boot/Image + devicetree /boot/armada-8040-clearfog-gt-8k.dtb + append console=ttyS0,115200n8 root=/dev/mmcblk1p1 rootwait diff --git a/board/solidrun/clearfog_gt_8k/genimage.cfg b/board/solidrun/clearfog_gt_8k/genimage.cfg new file mode 120000 index 00000000..0cc2754f --- /dev/null +++ b/board/solidrun/clearfog_gt_8k/genimage.cfg @@ -0,0 +1 @@ +../macchiatobin/genimage.cfg \ No newline at end of file diff --git a/board/solidrun/clearfog_gt_8k/linux-extras.config b/board/solidrun/clearfog_gt_8k/linux-extras.config new file mode 100644 index 00000000..24f4f554 --- /dev/null +++ b/board/solidrun/clearfog_gt_8k/linux-extras.config @@ -0,0 +1,6 @@ +CONFIG_MARVELL_PHY=y +CONFIG_SFP=y +CONFIG_IPV6=y +CONFIG_BRIDGE=y +CONFIG_NET_DSA=y +CONFIG_NET_DSA_MV88E6XXX=y diff --git a/board/solidrun/clearfog_gt_8k/post-build-mainline.sh b/board/solidrun/clearfog_gt_8k/post-build-mainline.sh new file mode 120000 index 00000000..a8c9a524 --- /dev/null +++ b/board/solidrun/clearfog_gt_8k/post-build-mainline.sh @@ -0,0 +1 @@ +../macchiatobin/post-build-mainline.sh \ No newline at end of file diff --git a/board/solidrun/clearfog_gt_8k/readme.txt b/board/solidrun/clearfog_gt_8k/readme.txt new file mode 100644 index 00000000..1648ffa3 --- /dev/null +++ b/board/solidrun/clearfog_gt_8k/readme.txt @@ -0,0 +1,61 @@ +Intro +===== + +The default configuration described below will allow you to start +experimenting with the buildroot environment for the SolidRun Clearfog GT-8K +based on the Marvell Armada 8040 SoC. + +This default configuration will bring up the board and allow shell command +line access through the serial console. + +How to build +============ + + $ make solidrun_clearfog_gt_8k_defconfig + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image file named +"sdcard.img" in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX bs=1M conv=fsync + +How to boot the board +===================== + +The Clearfog GT-8K can be setup to load the bootloader from different sources +including eMMC, SPI flash, and SD-card. + +To select boot from SD-card the DIP switches in SW6 (at the bottom of the +board) should be configured as follows: + + SW6: 11010 + +Insert the micro SDcard in the Cleargfog GT-8K and power it up. + +Serial console +============== + +The serial console is accessible at the J27 pins header (TTL UART) with the +following pinout (pin #1 is marked with triangle on the PCB): + + pin #1: Ground + pin #2: Armada 8040 Rx + pin #3: Armada 8040 Tx + +Enable the switch (yellow) Ethernet ports +========================================= + +To enable the Clearfog GT-8K internal switch port make sure to load the +'mv88e6xxx' kernel module, and up the switch up-link port (eth2 by default): + + modprobe mv88e6xxx + ifconfig eth2 up + +Then you can configure each switch port separately. These port are named +'lan1' to 'lan4' by default. 'lan1' is closest to the USB port, while 'lan4' +is closest to the blue Ethernet port. diff --git a/board/solidrun/clearfog_gt_8k/uboot-fragment.config b/board/solidrun/clearfog_gt_8k/uboot-fragment.config new file mode 120000 index 00000000..996c4aa6 --- /dev/null +++ b/board/solidrun/clearfog_gt_8k/uboot-fragment.config @@ -0,0 +1 @@ +../macchiatobin/uboot-fragment.config \ No newline at end of file diff --git a/board/solidrun/macchiatobin/extlinux.conf b/board/solidrun/macchiatobin/extlinux.conf new file mode 100644 index 00000000..1008af1a --- /dev/null +++ b/board/solidrun/macchiatobin/extlinux.conf @@ -0,0 +1,4 @@ +label Macchiatobin Linux + kernel /boot/Image + devicetree /boot/armada-8040-mcbin.dtb + append console=ttyS0,115200n8 root=/dev/mmcblk1p1 rootwait diff --git a/board/solidrun/macchiatobin/genimage.cfg b/board/solidrun/macchiatobin/genimage.cfg new file mode 100644 index 00000000..378e2082 --- /dev/null +++ b/board/solidrun/macchiatobin/genimage.cfg @@ -0,0 +1,16 @@ +image sdcard.img { + hdimage { + } + + partition uboot { + in-partition-table = "no" + image = "flash-image.bin" + offset = 2M + } + + partition rootfs { + partition-type = 0x83 + offset = 34M + image = "rootfs.ext4" + } +} diff --git a/board/solidrun/macchiatobin/linux-extras.config b/board/solidrun/macchiatobin/linux-extras.config new file mode 100644 index 00000000..29fd6306 --- /dev/null +++ b/board/solidrun/macchiatobin/linux-extras.config @@ -0,0 +1,3 @@ +CONFIG_MARVELL_PHY=y +CONFIG_MARVELL_10G_PHY=y +CONFIG_SFP=y diff --git a/board/solidrun/macchiatobin/post-build-mainline.sh b/board/solidrun/macchiatobin/post-build-mainline.sh new file mode 100755 index 00000000..1f5ff6a6 --- /dev/null +++ b/board/solidrun/macchiatobin/post-build-mainline.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +install -m 0644 -D $BOARD_DIR/extlinux.conf $TARGET_DIR/boot/extlinux/extlinux.conf diff --git a/board/solidrun/macchiatobin/post-build.sh b/board/solidrun/macchiatobin/post-build.sh new file mode 100755 index 00000000..9c1b5b88 --- /dev/null +++ b/board/solidrun/macchiatobin/post-build.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +install -m 0644 -D ${BOARD_DIR}/uEnv-example.txt ${TARGET_DIR}/boot/uEnv-example.txt diff --git a/board/solidrun/macchiatobin/readme.txt b/board/solidrun/macchiatobin/readme.txt new file mode 100644 index 00000000..ef5a6cba --- /dev/null +++ b/board/solidrun/macchiatobin/readme.txt @@ -0,0 +1,79 @@ +Intro +===== + +This default configuration will allow you to start experimenting with +the buildroot environment for the MacchiatoBin board based on the +Marvell Armada 8040 SoC. Documentation for the board hardware and +software is available on the wiki at: http://wiki.macchiatobin.net + +This default configuration will bring up the board and allow access +through the serial console. + +How to build +============ + +Default configuration provides the following BSP versions: + - Linux v5.10.5 + - U-Boot v2020.10 + - ATF v2.4 + +To build images run the following commands: + + $ make solidrun_macchiatobin_defconfig + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image +called "sdcard.img" in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX bs=1M conv=fsync + $ sudo sync + +How to boot the board +===================== + +The MacchiatoBin board can be setup to load the bootloader from +different sources including eMMC, SPI flash, and SD-card. + +On Rev 1.2 board to select boot from SD-card the DIP switches +SW1 and SW2 should be configured as follows: + +SW2: 01110 +SW1: 1xxxx + +The upcoming Rev 1.3 board will have a single pins header J1 instead +of the SW1/2 DIP switches. To boot from SD-card the setting of J1 +jumpers should match the DIP switches of Rev v1.2 board +from left to right: + +J1: 011101xxxx + +Insert the micro SDcard in the MacchiatoBin board and power it up. +The serial console is accessible at the micro-USB Type-B connector +marked CON9. The serial line settings are 115200 8N1. + +U-Boot environment +================== + +By default current configuration provides U-Boot that keeps environment +in SD/eMMC. However, if needed, u-boot-fragment.config can be tweaked +so that U-Boot will keep environment in SPI flash. On the first boot +SPI flash may be empty or it may contain a stale environment that +prevents proper boot. Then the following commands can be used +to boot the board: + +=> ext4load mmc 1:1 0x01700000 /boot/uEnv-example.txt +=> env import -t 0x01700000 $filesize +=> boot + +The example environment from uEnv-example.txt can be written to +SPI flash using the following commands: + +=> env default -f -a +=> ext4load mmc 1:1 0x01700000 /boot/uEnv-example.txt +=> env import -t 0x01700000 $filesize +=> saveenv diff --git a/board/solidrun/macchiatobin/uEnv-example.txt b/board/solidrun/macchiatobin/uEnv-example.txt new file mode 100644 index 00000000..1967e2ba --- /dev/null +++ b/board/solidrun/macchiatobin/uEnv-example.txt @@ -0,0 +1,7 @@ +bootargs=console=ttyS0,115200 root=/dev/mmcblk1p1 rw rootwait +fdt_addr=0x1000000 +fdt_high=0xffffffffffffffff +fdt_name=boot/armada-8040-mcbin.dtb +kernel_addr=0x2000000 +image_name=boot/Image +bootcmd=mmc dev 1; ext4load mmc 1:1 $kernel_addr $image_name; ext4load mmc 1:1 $fdt_addr $fdt_name; booti $kernel_addr - $fdt_addr diff --git a/board/solidrun/macchiatobin/uboot-fragment.config b/board/solidrun/macchiatobin/uboot-fragment.config new file mode 100644 index 00000000..717a0942 --- /dev/null +++ b/board/solidrun/macchiatobin/uboot-fragment.config @@ -0,0 +1,2 @@ +CONFIG_ENV_IS_IN_MMC=y +# CONFIG_ENV_IS_IN_SPI_FLASH is not set diff --git a/board/solidrun/mx6cubox/patches/linux-headers/linux-headers.hash b/board/solidrun/mx6cubox/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/solidrun/mx6cubox/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/solidrun/mx6cubox/patches/linux/linux.hash b/board/solidrun/mx6cubox/patches/linux/linux.hash new file mode 100644 index 00000000..8b8381e6 --- /dev/null +++ b/board/solidrun/mx6cubox/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 639e50060e3c8f23ed017cb10cfeacc6ba88ff5583812bb76859b4cc6a128291 linux-6.6.27.tar.xz diff --git a/board/solidrun/mx6cubox/patches/uboot/uboot.hash b/board/solidrun/mx6cubox/patches/uboot/uboot.hash new file mode 100644 index 00000000..c1aeddf0 --- /dev/null +++ b/board/solidrun/mx6cubox/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/board/solidrun/mx6cubox/readme.txt b/board/solidrun/mx6cubox/readme.txt new file mode 100644 index 00000000..630ab6c7 --- /dev/null +++ b/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/board/solidrun/mx6cubox/rootfs_overlay/boot/extlinux/extlinux.conf b/board/solidrun/mx6cubox/rootfs_overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..d0110663 --- /dev/null +++ b/board/solidrun/mx6cubox/rootfs_overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +Label imx6qdl-cubox Buildroot + kernel ../zImage + fdtdir ../ + append root=PARTUUID=${uuid} rootwait rw console=${console},${baudrate} diff --git a/board/spike/riscv32/patches/linux-headers/linux-headers.hash b/board/spike/riscv32/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/spike/riscv32/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/spike/riscv32/patches/linux/linux.hash b/board/spike/riscv32/patches/linux/linux.hash new file mode 100644 index 00000000..a3b67a09 --- /dev/null +++ b/board/spike/riscv32/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# From https://cdn.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc +sha256 fce3ee728712ed063aa8c14a8756c8ff8c7a46ba3827f61d2b04a73c7cf5dd9e linux-6.6.35.tar.xz diff --git a/board/spike/riscv32/patches/opensbi/opensbi.hash b/board/spike/riscv32/patches/opensbi/opensbi.hash new file mode 100644 index 00000000..bc4058ab --- /dev/null +++ b/board/spike/riscv32/patches/opensbi/opensbi.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 319b62a4186fbce9b81a0c5f0ec9f003a10c808397a72138bc9745d9b87b1eb1 opensbi-1.4.tar.gz diff --git a/board/spike/riscv32/readme.txt b/board/spike/riscv32/readme.txt new file mode 100644 index 00000000..9cc49af9 --- /dev/null +++ b/board/spike/riscv32/readme.txt @@ -0,0 +1,30 @@ +Linux on Spike RISC-V 32-bit ISA simulator +========================================== + +This configuration provides a minimal working setup to run a Linux +kernel in the Spike RISC-V ISA simulator. + +The Spike ISA simulator can be an interresting alternative to Qemu, in +some specific cases. For example: simulating new instructions (see [1]), +simulating riscv-openocd/gdb debug sessions (see [2], [3]), or +generating an accurate per-instruction log of execution (see +riscv-isa-sim spike -l option)... + +To run Buildroot Linux in Spike, use the commands: + + make spike_riscv32_defconfig + make + ./board/spike/riscv32/start.sh + +The boot is made with the standard RISC-V OpenSBI boot loader. In +order to keep the simulation simple, the rootfs is passed as an initrd +ramfs. + +[1]. +https://github.com/riscv-software-src/riscv-isa-sim/tree/v1.1.0#simulating-a-new-instruction + +[2]. +https://github.com/riscv-software-src/riscv-isa-sim/tree/v1.1.0#debugging-with-gdb + +[3]. +https://github.com/riscv-collab/riscv-openocd diff --git a/board/spike/riscv32/start.sh b/board/spike/riscv32/start.sh new file mode 100755 index 00000000..43d2d9dc --- /dev/null +++ b/board/spike/riscv32/start.sh @@ -0,0 +1,23 @@ +#! /bin/sh + +SCRIPT_DIR="$(dirname "$0")" +BR_BASEDIR="$(readlink -e "${SCRIPT_DIR}/../../..")" + +# spike uses dtc at runtime startup, so make sure buildroot host +# directory is in the PATH +export PATH="${BR_BASEDIR}/output/host/usr/bin:$PATH" + +# Use Buildroot host spike by default, but allow the caller to +# redefine another spike binary +: "${SPIKE:=spike}" + +# Note 1: Kernel with initrd fail to boot on riscv32 when the system +# has more than 1GB of RAM. So we set exactly this amount of RAM. +# Note 2: The default spike ISA is RV64IMAFDC_zicntr_zihpm, so we need +# to force the RV32 ISA here. +exec "${SPIKE}" \ + -m1024 \ + --initrd "${BR_BASEDIR}"/output/images/rootfs.cpio \ + --isa="RV32IMAFDC_zicntr_zihpm" \ + "${@}" \ + "${BR_BASEDIR}"/output/images/fw_payload.elf diff --git a/board/spike/riscv64/patches/linux-headers/linux-headers.hash b/board/spike/riscv64/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/spike/riscv64/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/spike/riscv64/patches/linux/linux.hash b/board/spike/riscv64/patches/linux/linux.hash new file mode 100644 index 00000000..a3b67a09 --- /dev/null +++ b/board/spike/riscv64/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# From https://cdn.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc +sha256 fce3ee728712ed063aa8c14a8756c8ff8c7a46ba3827f61d2b04a73c7cf5dd9e linux-6.6.35.tar.xz diff --git a/board/spike/riscv64/patches/opensbi/opensbi.hash b/board/spike/riscv64/patches/opensbi/opensbi.hash new file mode 100644 index 00000000..bc4058ab --- /dev/null +++ b/board/spike/riscv64/patches/opensbi/opensbi.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 319b62a4186fbce9b81a0c5f0ec9f003a10c808397a72138bc9745d9b87b1eb1 opensbi-1.4.tar.gz diff --git a/board/spike/riscv64/readme.txt b/board/spike/riscv64/readme.txt new file mode 100644 index 00000000..465fb06b --- /dev/null +++ b/board/spike/riscv64/readme.txt @@ -0,0 +1,31 @@ +Linux on Spike RISC-V ISA simulator +=================================== + +This configuration provides a minimal working setup to run a Linux +kernel in the Spike RISC-V ISA simulator. + +The Spike ISA simulator can be an interresting alternative to Qemu, in +some specific cases. For example: simulating new instructions (see [1]), +simulating riscv-openocd/gdb debug sessions (see [2], [3]), or +generating an accurate per-instruction log of execution (see +riscv-isa-sim spike -l option)... + +To run Buildroot Linux in Spike, use the commands: + + make spike_riscv64_defconfig + make + ./board/spike/riscv64/start.sh + +The boot is made with the standard RISC-V OpenSBI boot loader. In +order to keep the simulation simple, the rootfs is passed as an initrd +ramfs. + + +[1]. +https://github.com/riscv-software-src/riscv-isa-sim/tree/v1.1.0#simulating-a-new-instruction + +[2]. +https://github.com/riscv-software-src/riscv-isa-sim/tree/v1.1.0#debugging-with-gdb + +[3]. +https://github.com/riscv-collab/riscv-openocd diff --git a/board/spike/riscv64/start.sh b/board/spike/riscv64/start.sh new file mode 100755 index 00000000..6fbbced8 --- /dev/null +++ b/board/spike/riscv64/start.sh @@ -0,0 +1,17 @@ +#! /bin/sh + +SCRIPT_DIR="$(dirname "$0")" +BR_BASEDIR="$(readlink -e "${SCRIPT_DIR}/../../..")" + +# spike uses dtc at runtime startup, so make sure buildroot host +# directory is in the PATH +export PATH="${BR_BASEDIR}/output/host/usr/bin:$PATH" + +# Use Buildroot host spike by default, but allow the caller to +# redefine another spike binary +: "${SPIKE:=spike}" + +exec "${SPIKE}" \ + --initrd "${BR_BASEDIR}"/output/images/rootfs.cpio \ + "${@}" \ + "${BR_BASEDIR}"/output/images/fw_payload.elf diff --git a/board/stmicroelectronics/common/stm32f4xx/busybox.fragment b/board/stmicroelectronics/common/stm32f4xx/busybox.fragment new file mode 100644 index 00000000..d0bf2cb9 --- /dev/null +++ b/board/stmicroelectronics/common/stm32f4xx/busybox.fragment @@ -0,0 +1,21 @@ +# CONFIG_FEATURE_HWIB is not set +# CONFIG_HOSTNAME is not set +# CONFIG_DNSDOMAINNAME is not set +# CONFIG_FEATURE_HTTPD_PORT_DEFAULT is not set +# CONFIG_IFCONFIG is not set +# CONFIG_FEATURE_IFCONFIG_HW is not set +# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set +# CONFIG_IFUP is not set +# CONFIG_IFDOWN is not set +# CONFIG_IP is not set +# CONFIG_IPADDR is not set +# CONFIG_IPLINK is not set +# CONFIG_IPROUTE is not set +# CONFIG_NC is not set +# CONFIG_NETSTAT is not set +# CONFIG_PING is not set +# CONFIG_ROUTE is not set +# CONFIG_TC is not set +# CONFIG_TELNET is not set +# CONFIG_WGET is not set +# CONFIG_UDHCPC is not set diff --git a/board/stmicroelectronics/common/stm32f4xx/stm32-post-build.sh b/board/stmicroelectronics/common/stm32f4xx/stm32-post-build.sh new file mode 100755 index 00000000..4fcce615 --- /dev/null +++ b/board/stmicroelectronics/common/stm32f4xx/stm32-post-build.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +# Busybox is built without network support +sed -i '/hostname/d' ${TARGET_DIR}/etc/inittab + +# Kernel is built without devpts support +sed -i '/^devpts/d' ${TARGET_DIR}/etc/fstab diff --git a/board/stmicroelectronics/common/stm32mp157/genimage.cfg.template b/board/stmicroelectronics/common/stm32mp157/genimage.cfg.template new file mode 100644 index 00000000..c2affd98 --- /dev/null +++ b/board/stmicroelectronics/common/stm32mp157/genimage.cfg.template @@ -0,0 +1,23 @@ +image sdcard.img { + hdimage { + partition-table-type = "gpt" + } + + partition fsbl1 { + image = "%ATFBIN%" + } + + partition fsbl2 { + image = "%ATFBIN%" + } + + partition fip { + image = "fip.bin" + size = 2M + } + + partition rootfs { + image = "rootfs.ext4" + bootable = "yes" + } +} diff --git a/board/stmicroelectronics/common/stm32mp157/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/stmicroelectronics/common/stm32mp157/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 00000000..2bc5030c --- /dev/null +++ b/board/stmicroelectronics/common/stm32mp157/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 72df0928138de111bf5e75fae47f88a4d1b4930ad52b7902e2b53e117be650c8 arm-trusted-firmware-v2.9-git4.tar.gz diff --git a/board/stmicroelectronics/common/stm32mp157/patches/linux-headers/linux-headers.hash b/board/stmicroelectronics/common/stm32mp157/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/stmicroelectronics/common/stm32mp157/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/stmicroelectronics/common/stm32mp157/patches/linux/linux.hash b/board/stmicroelectronics/common/stm32mp157/patches/linux/linux.hash new file mode 100644 index 00000000..95bd23c8 --- /dev/null +++ b/board/stmicroelectronics/common/stm32mp157/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f048267b7b88316c9ca708c68d15a9ae802dcfc943c3188c1273eb958c433281 linux-6.9.8.tar.xz diff --git a/board/stmicroelectronics/common/stm32mp157/patches/uboot/uboot.hash b/board/stmicroelectronics/common/stm32mp157/patches/uboot/uboot.hash new file mode 100644 index 00000000..fe9b4f53 --- /dev/null +++ b/board/stmicroelectronics/common/stm32mp157/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f591da9ab90ef3d6b3d173766d0ddff90c4ed7330680897486117df390d83c8f u-boot-2024.07.tar.bz2 diff --git a/board/stmicroelectronics/common/stm32mp157/post-image.sh b/board/stmicroelectronics/common/stm32mp157/post-image.sh new file mode 100755 index 00000000..0cf52f45 --- /dev/null +++ b/board/stmicroelectronics/common/stm32mp157/post-image.sh @@ -0,0 +1,34 @@ +#!/bin/sh -eu + +# +# atf_image extracts the ATF binary image from DTB_FILE_NAME that appears in +# BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES in ${BR_CONFIG}, +# then prints the corresponding file name for the genimage +# configuration file +# +atf_image() +{ + ATF_VARIABLES="$(sed -n 's/^BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="\([^\"]*\)"$/\1/p' ${BR2_CONFIG})" + # make sure DTB_FILE_NAME is set + printf '%s\n' "${ATF_VARIABLES}" | grep -Eq 'DTB_FILE_NAME=[0-9A-Za-z_\-]*' + # extract the value + DTB_FILE_NAME="$(printf '%s\n' "${ATF_VARIABLES}" | sed 's/.*DTB_FILE_NAME=\([a-zA-Z0-9_\-]*\)\.dtb.*/\1/')" + echo "tf-a-${DTB_FILE_NAME}.stm32" +} + +main() +{ + ATFBIN="$(atf_image)" + GENIMAGE_CFG="$(mktemp --suffix genimage.cfg)" + + sed -e "s/%ATFBIN%/${ATFBIN}/" \ + board/stmicroelectronics/common/stm32mp157/genimage.cfg.template > ${GENIMAGE_CFG} + + support/scripts/genimage.sh -c ${GENIMAGE_CFG} + + rm -f ${GENIMAGE_CFG} + + exit $? +} + +main $@ diff --git a/board/stmicroelectronics/stm32f429-disco/flash.sh b/board/stmicroelectronics/stm32f429-disco/flash.sh new file mode 100755 index 00000000..3e2bf121 --- /dev/null +++ b/board/stmicroelectronics/stm32f429-disco/flash.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +OUTPUT_DIR=$1 +BOARD_NAME=${2:-stm32f429discovery} + +if ! test -d "${OUTPUT_DIR}" ; then + echo "ERROR: no output directory specified." + echo "Usage: $0 OUTPUT_DIR BOARD_NAME" + echo "" + echo "Arguments:" + echo " OUTPUT_DIR The Buildroot output directory." + echo " BOARD_NAME One of the available boards among:" + echo " stm32f429discovery, stm32f429disc1" + exit 1 +fi + +${OUTPUT_DIR}/host/bin/openocd -f board/${BOARD_NAME}.cfg \ + -c "init" \ + -c "reset init" \ + -c "flash probe 0" \ + -c "flash info 0" \ + -c "flash write_image erase ${OUTPUT_DIR}/images/stm32f429i-disco.bin 0x08000000" \ + -c "flash write_image erase ${OUTPUT_DIR}/images/stm32f429-disco.dtb 0x08004000" \ + -c "flash write_image erase ${OUTPUT_DIR}/images/xipImage 0x0800C000" \ + -c "reset run" \ + -c "shutdown" diff --git a/board/stmicroelectronics/stm32f429-disco/linux.config b/board/stmicroelectronics/stm32f429-disco/linux.config new file mode 100644 index 00000000..02d9c2d1 --- /dev/null +++ b/board/stmicroelectronics/stm32f429-disco/linux.config @@ -0,0 +1,116 @@ +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_KERNEL_XZ=y +CONFIG_NO_HZ_IDLE=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_PREEMPT=y +CONFIG_LOG_BUF_SHIFT=12 +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=10 +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="${BR_BINARIES_DIR}/rootfs.cpio" +# CONFIG_RD_GZIP is not set +# CONFIG_RD_BZIP2 is not set +# CONFIG_RD_LZMA is not set +# CONFIG_RD_XZ is not set +# CONFIG_RD_LZO is not set +# CONFIG_RD_LZ4 is not set +# CONFIG_RD_ZSTD is not set +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +# CONFIG_MULTIUSER is not set +# CONFIG_SYSFS_SYSCALL is not set +# CONFIG_FHANDLE is not set +CONFIG_POSIX_TIMERS=y +CONFIG_BUG=y +# CONFIG_BASE_FULL is not set +# CONFIG_FUTEX is not set +# CONFIG_EPOLL is not set +# CONFIG_SIGNALFD is not set +# CONFIG_TIMERFD is not set +# CONFIG_EVENTFD is not set +# CONFIG_AIO is not set +# CONFIG_IO_URING is not set +# CONFIG_ADVISE_SYSCALLS is not set +# CONFIG_MEMBARRIER is not set +# CONFIG_KALLSYMS is not set +CONFIG_KCMP=y +# CONFIG_RSEQ is not set +CONFIG_EMBEDDED=y +# CONFIG_VM_EVENT_COUNTERS is not set +# CONFIG_COMPAT_BRK is not set +CONFIG_SLOB=y +# CONFIG_SLAB_MERGE_DEFAULT is not set +# CONFIG_MMU is not set +CONFIG_ARCH_STM32=y +# CONFIG_MACH_STM32F469 is not set +# CONFIG_MACH_STM32F746 is not set +# CONFIG_MACH_STM32F769 is not set +# CONFIG_MACH_STM32H743 is not set +CONFIG_CPU_V7M_NUM_IRQ=240 +# CONFIG_ARM_DMA_MEM_BUFFERABLE is not set +CONFIG_SET_MEM_PARAM=y +CONFIG_DRAM_BASE=0x90000000 +CONFIG_DRAM_SIZE=0x00800000 +CONFIG_HZ_1000=y +# CONFIG_ATAGS is not set +CONFIG_XIP_KERNEL=y +CONFIG_XIP_PHYS_ADDR=0x0800C000 +CONFIG_XIP_DEFLATED_DATA=y +# CONFIG_SUSPEND is not set +# CONFIG_STACKPROTECTOR is not set +# CONFIG_COMPAT_32BIT_TIME is not set +# CONFIG_GCC_PLUGINS is not set +# CONFIG_BLOCK is not set +CONFIG_BINFMT_FLAT=y +CONFIG_BINFMT_SHARED_FLAT=y +# CONFIG_COREDUMP is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_STANDALONE is not set +# CONFIG_PREVENT_FIRMWARE_BUILD is not set +# CONFIG_FW_LOADER is not set +# CONFIG_ALLOW_DEV_COREDUMP is not set +CONFIG_EEPROM_93CX6=y +# CONFIG_INPUT is not set +# CONFIG_VT is not set +# CONFIG_UNIX98_PTYS is not set +# CONFIG_LEGACY_PTYS is not set +# CONFIG_LDISC_AUTOLOAD is not set +CONFIG_SERIAL_STM32=y +CONFIG_SERIAL_STM32_CONSOLE=y +# CONFIG_DEVMEM is not set +# CONFIG_HWMON is not set +CONFIG_WATCHDOG=y +CONFIG_MFD_STM32_TIMERS=y +# CONFIG_USB_SUPPORT is not set +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_STM32=y +CONFIG_DMADEVICES=y +CONFIG_STM32_DMA=y +CONFIG_STM32_DMAMUX=y +CONFIG_STM32_MDMA=y +CONFIG_SYNC_FILE=y +# CONFIG_VIRTIO_MENU is not set +# CONFIG_VHOST_MENU is not set +# CONFIG_FILE_LOCKING is not set +# CONFIG_DNOTIFY is not set +# CONFIG_INOTIFY_USER is not set +# CONFIG_PROC_SYSCTL is not set +CONFIG_CONFIGFS_FS=y +# CONFIG_MISC_FILESYSTEMS is not set +CONFIG_NLS=y +CONFIG_PRINTK_TIME=y +CONFIG_CONSOLE_LOGLEVEL_DEFAULT=15 +CONFIG_CONSOLE_LOGLEVEL_QUIET=15 +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7 +# CONFIG_SYMBOLIC_ERRNAME is not set +CONFIG_DEBUG_INFO=y +# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set +CONFIG_DEBUG_FS=y +# CONFIG_DEBUG_MISC is not set +# CONFIG_SCHED_DEBUG is not set +# CONFIG_RCU_TRACE is not set +# CONFIG_RUNTIME_TESTING_MENU is not set diff --git a/board/stmicroelectronics/stm32f429-disco/patches/linux-headers/linux-headers.hash b/board/stmicroelectronics/stm32f429-disco/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/stmicroelectronics/stm32f429-disco/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/stmicroelectronics/stm32f429-disco/patches/linux/linux.hash b/board/stmicroelectronics/stm32f429-disco/patches/linux/linux.hash new file mode 100644 index 00000000..88e1ba46 --- /dev/null +++ b/board/stmicroelectronics/stm32f429-disco/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 97cdc9127c7700556ea0891267a0c24cf372f4b81636fb8203a914f3a69f3406 linux-6.1.98.tar.xz diff --git a/board/stmicroelectronics/stm32f429-disco/readme.txt b/board/stmicroelectronics/stm32f429-disco/readme.txt new file mode 100644 index 00000000..f512cb2e --- /dev/null +++ b/board/stmicroelectronics/stm32f429-disco/readme.txt @@ -0,0 +1,37 @@ +STM32F429 Discovery +=================== + +This tutorial describes how to use the predefined Buildroot +configuration for the STM32F429 Discovery evaluation platform. + +Supported HW +------------ + + - STM32F429I-DISCO evaluation board + - STM32F429I-DISC1 evaluation board + +Building +-------- + + make stm32f429_disco_defconfig + make + +Wire the UART +------------- + +Use a USB to TTL adapter, and connect: + + - RX to PA9 + - TX to PA10 + - GND to one of the GND available on the board + +The UART is configured at 115200. + +Flashing +-------- + + ./board/stmicroelectronics/stm32f429-disco/flash.sh output/ \ + {stm32f429discovery|stm32f429disc1} + +It will flash the minimal bootloader, the Device Tree Blob, and the +kernel image which includes the root filesystem as initramfs. diff --git a/board/stmicroelectronics/stm32f469-disco/extlinux.conf b/board/stmicroelectronics/stm32f469-disco/extlinux.conf new file mode 100644 index 00000000..1c2db438 --- /dev/null +++ b/board/stmicroelectronics/stm32f469-disco/extlinux.conf @@ -0,0 +1,4 @@ +label stm32f469-disco-buildroot + kernel /zImage + devicetree /stm32f469-disco.dtb + append console=ttySTM0,115200 root=/dev/mmcblk0p2 rw rootfstype=ext2 rootwait earlyprintk consoleblank=0 ignore_loglevel diff --git a/board/stmicroelectronics/stm32f469-disco/flash_sd.sh b/board/stmicroelectronics/stm32f469-disco/flash_sd.sh new file mode 100755 index 00000000..984d2b25 --- /dev/null +++ b/board/stmicroelectronics/stm32f469-disco/flash_sd.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +OUTPUT_DIR=$1 + +if ! test -d "${OUTPUT_DIR}" ; then + echo "ERROR: no output directory specified." + echo "Usage: $0 OUTPUT_DIR" + exit 1 +fi + +${OUTPUT_DIR}/host/bin/openocd -f board/stm32f469discovery.cfg \ + -c "init" \ + -c "reset init" \ + -c "flash probe 0" \ + -c "flash info 0" \ + -c "flash write_image erase ${OUTPUT_DIR}/images/u-boot.bin 0x08000000" \ + -c "reset run" \ + -c "shutdown" diff --git a/board/stmicroelectronics/stm32f469-disco/flash_xip.sh b/board/stmicroelectronics/stm32f469-disco/flash_xip.sh new file mode 100755 index 00000000..da27cd32 --- /dev/null +++ b/board/stmicroelectronics/stm32f469-disco/flash_xip.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +OUTPUT_DIR=$1 + +if ! test -d "${OUTPUT_DIR}"; then + echo "ERROR: no output directory specified." + echo "Usage: $0 OUTPUT_DIR" + exit 1 +fi + +${OUTPUT_DIR}/host/bin/openocd -f board/stm32f469discovery.cfg \ + -c "init" \ + -c "reset init" \ + -c "flash probe 0" \ + -c "flash info 0" \ + -c "flash write_image erase ${OUTPUT_DIR}/images/stm32f469i-disco.bin 0x08000000" \ + -c "flash write_image erase ${OUTPUT_DIR}/images/stm32f469-disco.dtb 0x08004000" \ + -c "flash write_image erase ${OUTPUT_DIR}/images/xipImage 0x0800C000" \ + -c "reset run" \ + -c "shutdown" diff --git a/board/stmicroelectronics/stm32f469-disco/genimage.cfg b/board/stmicroelectronics/stm32f469-disco/genimage.cfg new file mode 100644 index 00000000..517ead77 --- /dev/null +++ b/board/stmicroelectronics/stm32f469-disco/genimage.cfg @@ -0,0 +1,27 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "stm32f469-disco.dtb", + "extlinux" + } + } + + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + partition-type = 0xC + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + size = 32M + } +} diff --git a/board/stmicroelectronics/stm32f469-disco/linux-sd.fragment b/board/stmicroelectronics/stm32f469-disco/linux-sd.fragment new file mode 100644 index 00000000..e5d39bf0 --- /dev/null +++ b/board/stmicroelectronics/stm32f469-disco/linux-sd.fragment @@ -0,0 +1,7 @@ +# CONFIG_XIP_KERNEL is not set +CONFIG_DRM=y +CONFIG_DRM_STM=y +CONFIG_DRM_STM_DSI=y +CONFIG_DRM_PANEL_ORISETECH_OTM8009A=y +CONFIG_FB=y +CONFIG_BACKLIGHT_CLASS_DEVICE=y diff --git a/board/stmicroelectronics/stm32f469-disco/linux-xip.config b/board/stmicroelectronics/stm32f469-disco/linux-xip.config new file mode 100644 index 00000000..01a94eb9 --- /dev/null +++ b/board/stmicroelectronics/stm32f469-disco/linux-xip.config @@ -0,0 +1,120 @@ +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_KERNEL_XZ=y +CONFIG_NO_HZ_IDLE=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_PREEMPT=y +CONFIG_LOG_BUF_SHIFT=12 +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=10 +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="${BR_BINARIES_DIR}/rootfs.cpio" +# CONFIG_RD_GZIP is not set +# CONFIG_RD_BZIP2 is not set +# CONFIG_RD_LZMA is not set +# CONFIG_RD_XZ is not set +# CONFIG_RD_LZO is not set +# CONFIG_RD_LZ4 is not set +# CONFIG_RD_ZSTD is not set +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +# CONFIG_MULTIUSER is not set +# CONFIG_SYSFS_SYSCALL is not set +# CONFIG_FHANDLE is not set +CONFIG_POSIX_TIMERS=y +# CONFIG_BUG is not set +# CONFIG_BASE_FULL is not set +# CONFIG_FUTEX is not set +# CONFIG_EPOLL is not set +# CONFIG_SIGNALFD is not set +# CONFIG_TIMERFD is not set +# CONFIG_EVENTFD is not set +# CONFIG_AIO is not set +# CONFIG_IO_URING is not set +# CONFIG_ADVISE_SYSCALLS is not set +# CONFIG_MEMBARRIER is not set +# CONFIG_KALLSYMS is not set +CONFIG_KCMP=y +# CONFIG_RSEQ is not set +CONFIG_EMBEDDED=y +# CONFIG_VM_EVENT_COUNTERS is not set +# CONFIG_COMPAT_BRK is not set +CONFIG_SLOB=y +# CONFIG_SLAB_MERGE_DEFAULT is not set +# CONFIG_MMU is not set +CONFIG_ARCH_STM32=y +# CONFIG_MACH_STM32F429 is not set +# CONFIG_MACH_STM32F746 is not set +# CONFIG_MACH_STM32F769 is not set +# CONFIG_MACH_STM32H743 is not set +CONFIG_CPU_V7M_NUM_IRQ=240 +# CONFIG_ARM_DMA_MEM_BUFFERABLE is not set +CONFIG_SET_MEM_PARAM=y +CONFIG_DRAM_BASE=0x00000000 +CONFIG_DRAM_SIZE=0x00800000 +CONFIG_HZ_1000=y +# CONFIG_ATAGS is not set +CONFIG_XIP_KERNEL=y +CONFIG_XIP_PHYS_ADDR=0x0800C000 +CONFIG_XIP_DEFLATED_DATA=y +# CONFIG_SUSPEND is not set +# CONFIG_STACKPROTECTOR is not set +# CONFIG_COMPAT_32BIT_TIME is not set +# CONFIG_GCC_PLUGINS is not set +# CONFIG_BLOCK is not set +CONFIG_BINFMT_FLAT=y +CONFIG_BINFMT_SHARED_FLAT=y +# CONFIG_COREDUMP is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_STANDALONE is not set +# CONFIG_PREVENT_FIRMWARE_BUILD is not set +# CONFIG_FW_LOADER is not set +# CONFIG_ALLOW_DEV_COREDUMP is not set +CONFIG_EEPROM_93CX6=y +# CONFIG_INPUT is not set +# CONFIG_VT is not set +# CONFIG_UNIX98_PTYS is not set +# CONFIG_LEGACY_PTYS is not set +# CONFIG_LDISC_AUTOLOAD is not set +CONFIG_SERIAL_STM32=y +CONFIG_SERIAL_STM32_CONSOLE=y +# CONFIG_DEVMEM is not set +# CONFIG_HWMON is not set +CONFIG_WATCHDOG=y +CONFIG_MFD_STM32_TIMERS=y +# CONFIG_USB_SUPPORT is not set +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_STM32=y +CONFIG_DMADEVICES=y +CONFIG_STM32_DMA=y +CONFIG_STM32_DMAMUX=y +CONFIG_STM32_MDMA=y +CONFIG_SYNC_FILE=y +# CONFIG_VIRTIO_MENU is not set +# CONFIG_VHOST_MENU is not set +CONFIG_IIO=y +CONFIG_IIO_BUFFER=y +CONFIG_IIO_TRIGGERED_BUFFER=y +CONFIG_IIO_STM32_TIMER_TRIGGER=y +# CONFIG_FILE_LOCKING is not set +# CONFIG_DNOTIFY is not set +# CONFIG_INOTIFY_USER is not set +# CONFIG_PROC_SYSCTL is not set +CONFIG_CONFIGFS_FS=y +# CONFIG_MISC_FILESYSTEMS is not set +CONFIG_NLS=y +CONFIG_PRINTK_TIME=y +CONFIG_CONSOLE_LOGLEVEL_DEFAULT=15 +CONFIG_CONSOLE_LOGLEVEL_QUIET=15 +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7 +# CONFIG_SYMBOLIC_ERRNAME is not set +CONFIG_DEBUG_INFO=y +# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set +CONFIG_DEBUG_FS=y +# CONFIG_DEBUG_MISC is not set +# CONFIG_SCHED_DEBUG is not set +# CONFIG_RCU_TRACE is not set +# CONFIG_RUNTIME_TESTING_MENU is not set diff --git a/board/stmicroelectronics/stm32f469-disco/patches/linux-headers/linux-headers.hash b/board/stmicroelectronics/stm32f469-disco/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/stmicroelectronics/stm32f469-disco/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/stmicroelectronics/stm32f469-disco/patches/linux/linux.hash b/board/stmicroelectronics/stm32f469-disco/patches/linux/linux.hash new file mode 100644 index 00000000..d8e8263e --- /dev/null +++ b/board/stmicroelectronics/stm32f469-disco/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 91bfc0ea152ce7b102a0b79d35a7c92843874ebf085c99d2ba8b4d85e62b1a7c linux-5.15.162.tar.xz diff --git a/board/stmicroelectronics/stm32f469-disco/patches/uboot/uboot.hash b/board/stmicroelectronics/stm32f469-disco/patches/uboot/uboot.hash new file mode 100644 index 00000000..fe9b4f53 --- /dev/null +++ b/board/stmicroelectronics/stm32f469-disco/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f591da9ab90ef3d6b3d173766d0ddff90c4ed7330680897486117df390d83c8f u-boot-2024.07.tar.bz2 diff --git a/board/stmicroelectronics/stm32f469-disco/post-build.sh b/board/stmicroelectronics/stm32f469-disco/post-build.sh new file mode 100755 index 00000000..ec20fca7 --- /dev/null +++ b/board/stmicroelectronics/stm32f469-disco/post-build.sh @@ -0,0 +1,4 @@ +#!/bin/sh +BOARD_DIR="$(dirname $0)" + +install -m 0644 -D $BOARD_DIR/extlinux.conf $BINARIES_DIR/extlinux/extlinux.conf diff --git a/board/stmicroelectronics/stm32f469-disco/readme.txt b/board/stmicroelectronics/stm32f469-disco/readme.txt new file mode 100644 index 00000000..99d26ccb --- /dev/null +++ b/board/stmicroelectronics/stm32f469-disco/readme.txt @@ -0,0 +1,45 @@ +STM32F469 Discovery +=================== + +This tutorial describes how to use the predefined Buildroot +configuration for the STM32F469 Discovery evaluation platform. + +Building +-------- + + make stm32f469_disco_sd_defconfig + make + +Flashing +-------- + + ./board/stmicroelectronics/stm32f469-disco/flash_sd.sh output/ + +It will flash the U-boot bootloader. + +Creating SD card +---------------- + +Buildroot prepares an"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 and its content, see the +definition in board/stmicroelectronics/stm32f469-disco/genimage.cfg. + +Framebuffer +----------- +After Linux boots, /dev/fb0 will be accessible. You can control the +brightness of the display after enabling the framebuffer by running the +following commands: + + # echo 0 0 > /sys/class/graphics/fb0/pan + # echo 255 >/sys/class/backlight/40016c00.dsi.0/brightness + +The brightness ranges from 0 to 255, as you can see running the +command: + + # cat /sys/class/backlight/40016c00.dsi.0/max_brightness diff --git a/board/stmicroelectronics/stm32f469-disco/readme_xip.txt b/board/stmicroelectronics/stm32f469-disco/readme_xip.txt new file mode 100644 index 00000000..7c20c2d0 --- /dev/null +++ b/board/stmicroelectronics/stm32f469-disco/readme_xip.txt @@ -0,0 +1,24 @@ +STM32F469 Discovery +=================== + +This tutorial describes how to use the predefined Buildroot +configuration for the STM32F469 Discovery evaluation platform. + +Internal flash memory stores simple afboot-stm32 bootloader, device tree and +in place (XIP) kernel with built-in initramfs. No external flash or SD card +is needed. + +Kernel is based on tinyconfig. + +Building +-------- + + make stm32f469_disco_xip_defconfig + make + +Flashing +-------- + + ./board/stmicroelectronics/stm32f469-disco/flash_xip.sh output/ + +It will flash binary to internal flash memory. diff --git a/board/stmicroelectronics/stm32f769-disco/extlinux.conf b/board/stmicroelectronics/stm32f769-disco/extlinux.conf new file mode 100644 index 00000000..48483a01 --- /dev/null +++ b/board/stmicroelectronics/stm32f769-disco/extlinux.conf @@ -0,0 +1,4 @@ +label stm32f769-disco-buildroot + kernel /zImage + devicetree /stm32f769-disco.dtb + append console=ttySTM0,115200 root=/dev/mmcblk0p2 rw rootfstype=ext2 rootwait earlyprintk consoleblank=0 ignore_loglevel diff --git a/board/stmicroelectronics/stm32f769-disco/flash_sd.sh b/board/stmicroelectronics/stm32f769-disco/flash_sd.sh new file mode 100755 index 00000000..0ff3ae7d --- /dev/null +++ b/board/stmicroelectronics/stm32f769-disco/flash_sd.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +OUTPUT_DIR=$1 + +if ! test -d "${OUTPUT_DIR}" ; then + echo "ERROR: no output directory specified." + echo "Usage: $0 OUTPUT_DIR" + exit 1 +fi + +"${OUTPUT_DIR}"/host/bin/openocd -f board/stm32f769i-disco.cfg \ + -c "init" \ + -c "reset init" \ + -c "flash probe 0" \ + -c "flash info 0" \ + -c "flash write_image erase ${OUTPUT_DIR}/images/u-boot.bin 0x08000000" \ + -c "reset run" \ + -c "shutdown" diff --git a/board/stmicroelectronics/stm32f769-disco/genimage.cfg b/board/stmicroelectronics/stm32f769-disco/genimage.cfg new file mode 100644 index 00000000..41f9da51 --- /dev/null +++ b/board/stmicroelectronics/stm32f769-disco/genimage.cfg @@ -0,0 +1,27 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "stm32f769-disco.dtb", + "extlinux" + } + } + + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + partition-type = 0xC + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + size = 32M + } +} diff --git a/board/stmicroelectronics/stm32f769-disco/linux-sd.fragment b/board/stmicroelectronics/stm32f769-disco/linux-sd.fragment new file mode 100644 index 00000000..846229d0 --- /dev/null +++ b/board/stmicroelectronics/stm32f769-disco/linux-sd.fragment @@ -0,0 +1 @@ +# CONFIG_XIP_KERNEL is not set diff --git a/board/stmicroelectronics/stm32f769-disco/patches/linux-headers/linux-headers.hash b/board/stmicroelectronics/stm32f769-disco/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/stmicroelectronics/stm32f769-disco/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/stmicroelectronics/stm32f769-disco/patches/linux/linux.hash b/board/stmicroelectronics/stm32f769-disco/patches/linux/linux.hash new file mode 100644 index 00000000..d8e8263e --- /dev/null +++ b/board/stmicroelectronics/stm32f769-disco/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 91bfc0ea152ce7b102a0b79d35a7c92843874ebf085c99d2ba8b4d85e62b1a7c linux-5.15.162.tar.xz diff --git a/board/stmicroelectronics/stm32f769-disco/patches/uboot/uboot.hash b/board/stmicroelectronics/stm32f769-disco/patches/uboot/uboot.hash new file mode 100644 index 00000000..fe9b4f53 --- /dev/null +++ b/board/stmicroelectronics/stm32f769-disco/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f591da9ab90ef3d6b3d173766d0ddff90c4ed7330680897486117df390d83c8f u-boot-2024.07.tar.bz2 diff --git a/board/stmicroelectronics/stm32f769-disco/post-build.sh b/board/stmicroelectronics/stm32f769-disco/post-build.sh new file mode 100755 index 00000000..c8cca3de --- /dev/null +++ b/board/stmicroelectronics/stm32f769-disco/post-build.sh @@ -0,0 +1,7 @@ +#!/bin/sh +BOARD_DIR="$(dirname "$0")" + +# Kernel is built without devpts support +sed -i '/^devpts/d' "${TARGET_DIR}"/etc/fstab + +install -m 0644 -D "${BOARD_DIR}"/extlinux.conf "${BINARIES_DIR}"/extlinux/extlinux.conf diff --git a/board/stmicroelectronics/stm32f769-disco/readme.txt b/board/stmicroelectronics/stm32f769-disco/readme.txt new file mode 100644 index 00000000..8f4f79a8 --- /dev/null +++ b/board/stmicroelectronics/stm32f769-disco/readme.txt @@ -0,0 +1,32 @@ +STM32F769 Discovery +=================== + +This tutorial describes how to use the predefined Buildroot +configuration for the STM32F769 Discovery evaluation platform. + +Building +-------- + + make stm32f769_disco_sd_defconfig + make + +Flashing +-------- + + ./board/stmicroelectronics/stm32f769-disco/flash_sd.sh output/ + +It will flash the U-boot bootloader. + +Creating SD card +---------------- + +Buildroot prepares an"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 and its content, see the +definition in board/stmicroelectronics/stm32f769-disco/genimage.cfg. + diff --git a/board/stmicroelectronics/stm32mp157a-dk1/linux.config b/board/stmicroelectronics/stm32mp157a-dk1/linux.config new file mode 100644 index 00000000..95c834e4 --- /dev/null +++ b/board/stmicroelectronics/stm32mp157a-dk1/linux.config @@ -0,0 +1,182 @@ +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_USELIB=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_PREEMPT=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=16 +CONFIG_BLK_DEV_INITRD=y +CONFIG_ARCH_STM32=y +CONFIG_ARM_THUMBEE=y +# CONFIG_CACHE_L2X0 is not set +CONFIG_ARM_ERRATA_430973=y +CONFIG_ARM_ERRATA_720789=y +CONFIG_ARM_ERRATA_754322=y +CONFIG_ARM_ERRATA_754327=y +CONFIG_ARM_ERRATA_764369=y +CONFIG_ARM_ERRATA_775420=y +CONFIG_ARM_ERRATA_798181=y +CONFIG_SMP=y +CONFIG_MCPM=y +CONFIG_HIGHMEM=y +CONFIG_FORCE_MAX_ZONEORDER=12 +CONFIG_SECCOMP=y +# CONFIG_ATAGS 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_VFP=y +CONFIG_NEON=y +CONFIG_KERNEL_MODE_NEON=y +CONFIG_ARM_CRYPTO=y +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_CMDLINE_PARTITION=y +CONFIG_CMA=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_CAN=y +CONFIG_CAN_M_CAN=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_DMA_CMA=y +CONFIG_CMA_SIZE_MBYTES=128 +CONFIG_SIMPLE_PM_BUS=y +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_M25P80=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_STM32_FMC2=y +CONFIG_MTD_SPI_NOR=y +# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set +CONFIG_MTD_UBI=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=65536 +CONFIG_SRAM=y +CONFIG_EEPROM_AT24=y +CONFIG_NETDEVICES=y +CONFIG_VIRTIO_NET=y +CONFIG_KS8851=y +CONFIG_SMSC911X=y +CONFIG_STMMAC_ETH=y +CONFIG_DWMAC_DWC_QOS_ETH=y +CONFIG_MDIO_BITBANG=y +CONFIG_INPUT_JOYDEV=y +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_EDT_FT5X06=y +CONFIG_INPUT_MISC=y +CONFIG_INPUT_STPMIC1_ONKEY=y +CONFIG_SERIAL_STM32=y +CONFIG_SERIAL_STM32_CONSOLE=y +CONFIG_SERIAL_DEV_BUS=y +CONFIG_HW_RANDOM=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MUX=y +CONFIG_I2C_STM32F7=y +CONFIG_SPI=y +CONFIG_SPI_STM32=y +CONFIG_SPI_STM32_QSPI=y +CONFIG_PINCTRL_SINGLE=y +CONFIG_PINCTRL_STMFX=y +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_GPIO=y +CONFIG_POWER_RESET_GPIO_RESTART=y +CONFIG_POWER_RESET_SYSCON=y +CONFIG_POWER_RESET_SYSCON_POWEROFF=y +CONFIG_SYSCON_REBOOT_MODE=y +CONFIG_WATCHDOG=y +CONFIG_STPMIC1_WATCHDOG=y +CONFIG_MFD_STM32_LPTIMER=y +CONFIG_MFD_STPMIC1=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_STM32_VREFBUF=y +CONFIG_REGULATOR_STM32_PWR=y +CONFIG_REGULATOR_STPMIC1=y +CONFIG_DRM=y +CONFIG_DRM_STM=y +CONFIG_DRM_STM_DSI=y +# CONFIG_DRM_PANEL_ORISETECH_OTM8009A is not set +# CONFIG_DRM_SII902X is not set +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set +# CONFIG_LCD_CLASS_DEVICE is not set +# CONFIG_BACKLIGHT_CLASS_DEVICE is not set +# CONFIG_BACKLIGHT_GENERIC is not set +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_USB=y +CONFIG_USB_OTG=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_PLATFORM=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_DWC2=y +CONFIG_USB_CHIPIDEA=y +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_ISP1760=y +CONFIG_USB_HSIC_USB3503=y +CONFIG_USB_GPIO_VBUS=y +CONFIG_USB_ISP1301=y +CONFIG_USB_ULPI=y +CONFIG_TYPEC=y +CONFIG_TYPEC_STUSB=y +CONFIG_MMC=y +CONFIG_MMC_BLOCK_MINORS=16 +CONFIG_MMC_ARMMMCI=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_DW=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_PWM=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_STM32=y +CONFIG_DMADEVICES=y +CONFIG_STM32_DMA=y +CONFIG_STM32_DMAMUX=y +CONFIG_STM32_MDMA=y +CONFIG_HWSPINLOCK=y +CONFIG_HWSPINLOCK_STM32=y +CONFIG_STM32_IPCC=y +CONFIG_REMOTEPROC=y +CONFIG_STM32_RPROC=y +CONFIG_RPMSG_VIRTIO=y +CONFIG_RPMSG_TTY=y +CONFIG_IIO=y +CONFIG_IIO_SW_TRIGGER=y +CONFIG_SD_ADC_MODULATOR=y +CONFIG_STM32_ADC_CORE=y +CONFIG_STM32_ADC=y +CONFIG_STM32_ADC_TEMP=y +CONFIG_STM32_DFSDM_ADC=y +CONFIG_STM32_LPTIMER_CNT=y +CONFIG_STM32_DAC=y +CONFIG_IIO_HRTIMER_TRIGGER=y +CONFIG_IIO_STM32_LPTIMER_TRIGGER=y +CONFIG_PWM=y +CONFIG_PWM_STM32=y +CONFIG_PWM_STM32_LP=y +CONFIG_PHY_STM32_USBPHYC=y +CONFIG_NVMEM_STM32_ROMEM=y +CONFIG_EXT4_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_PRINTK_TIME=y diff --git a/board/stmicroelectronics/stm32mp157a-dk1/overlay/boot/extlinux/extlinux.conf b/board/stmicroelectronics/stm32mp157a-dk1/overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..437e80fd --- /dev/null +++ b/board/stmicroelectronics/stm32mp157a-dk1/overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +label stm32mp157a-dk1-buildroot + kernel /boot/zImage + devicetree /boot/stm32mp157a-dk1.dtb + append root=/dev/mmcblk0p4 rootwait diff --git a/board/stmicroelectronics/stm32mp157a-dk1/readme.txt b/board/stmicroelectronics/stm32mp157a-dk1/readme.txt new file mode 100644 index 00000000..060f71d5 --- /dev/null +++ b/board/stmicroelectronics/stm32mp157a-dk1/readme.txt @@ -0,0 +1,38 @@ +STM32MP157A Discovery Kit v1 + +Intro +===== + +This configuration supports the STM32MP157 Discovery Kit 1 (DK1) +platform: + + https://www.st.com/en/evaluation-tools/stm32mp157a-dk1.html + +How to build +============ + + $ make stm32mp157a_dk1_defconfig + $ make + +How to write the microSD card +============================= + +Once the build process is finished you will have an image called +"sdcard.img" in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an microSD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Boot the board +============== + + (1) Insert the microSD card in connector CN15 + + (2) Plug a micro-USB cable in connector CN11 and run your serial + communication program on /dev/ttyACM0. + + (3) Plug a USB-C cable in CN6 to power-up the board. + + (4) The system will start, with the console on UART, but also visible + on the screen. diff --git a/board/stmicroelectronics/stm32mp157c-dk2/linux.config b/board/stmicroelectronics/stm32mp157c-dk2/linux.config new file mode 100644 index 00000000..878a0c39 --- /dev/null +++ b/board/stmicroelectronics/stm32mp157c-dk2/linux.config @@ -0,0 +1,182 @@ +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_USELIB=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_PREEMPT=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=16 +CONFIG_BLK_DEV_INITRD=y +CONFIG_ARCH_STM32=y +CONFIG_ARM_THUMBEE=y +# CONFIG_CACHE_L2X0 is not set +CONFIG_ARM_ERRATA_430973=y +CONFIG_ARM_ERRATA_720789=y +CONFIG_ARM_ERRATA_754322=y +CONFIG_ARM_ERRATA_754327=y +CONFIG_ARM_ERRATA_764369=y +CONFIG_ARM_ERRATA_775420=y +CONFIG_ARM_ERRATA_798181=y +CONFIG_SMP=y +CONFIG_MCPM=y +CONFIG_HIGHMEM=y +CONFIG_FORCE_MAX_ZONEORDER=12 +CONFIG_SECCOMP=y +# CONFIG_ATAGS 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_VFP=y +CONFIG_NEON=y +CONFIG_KERNEL_MODE_NEON=y +CONFIG_ARM_CRYPTO=y +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_CMDLINE_PARTITION=y +CONFIG_CMA=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_CAN=y +CONFIG_CAN_M_CAN=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_DMA_CMA=y +CONFIG_CMA_SIZE_MBYTES=128 +CONFIG_SIMPLE_PM_BUS=y +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_M25P80=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_STM32_FMC2=y +CONFIG_MTD_SPI_NOR=y +# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set +CONFIG_MTD_UBI=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=65536 +CONFIG_SRAM=y +CONFIG_EEPROM_AT24=y +CONFIG_NETDEVICES=y +CONFIG_VIRTIO_NET=y +CONFIG_KS8851=y +CONFIG_SMSC911X=y +CONFIG_STMMAC_ETH=y +CONFIG_DWMAC_DWC_QOS_ETH=y +CONFIG_MDIO_BITBANG=y +CONFIG_INPUT_JOYDEV=y +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_EDT_FT5X06=y +CONFIG_INPUT_MISC=y +CONFIG_INPUT_STPMIC1_ONKEY=y +CONFIG_SERIAL_STM32=y +CONFIG_SERIAL_STM32_CONSOLE=y +CONFIG_SERIAL_DEV_BUS=y +CONFIG_HW_RANDOM=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MUX=y +CONFIG_I2C_STM32F7=y +CONFIG_SPI=y +CONFIG_SPI_STM32=y +CONFIG_SPI_STM32_QSPI=y +CONFIG_PINCTRL_SINGLE=y +CONFIG_PINCTRL_STMFX=y +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_GPIO=y +CONFIG_POWER_RESET_GPIO_RESTART=y +CONFIG_POWER_RESET_SYSCON=y +CONFIG_POWER_RESET_SYSCON_POWEROFF=y +CONFIG_SYSCON_REBOOT_MODE=y +CONFIG_WATCHDOG=y +CONFIG_STPMIC1_WATCHDOG=y +CONFIG_MFD_STM32_LPTIMER=y +CONFIG_MFD_STPMIC1=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_STM32_VREFBUF=y +CONFIG_REGULATOR_STM32_PWR=y +CONFIG_REGULATOR_STPMIC1=y +CONFIG_DRM=y +CONFIG_DRM_STM=y +CONFIG_DRM_STM_DSI=y +CONFIG_DRM_PANEL_ORISETECH_OTM8009A=y +CONFIG_DRM_SII902X=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +# CONFIG_LCD_CLASS_DEVICE is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=y +# CONFIG_BACKLIGHT_GENERIC is not set +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_USB=y +CONFIG_USB_OTG=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_PLATFORM=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_DWC2=y +CONFIG_USB_CHIPIDEA=y +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_ISP1760=y +CONFIG_USB_HSIC_USB3503=y +CONFIG_USB_GPIO_VBUS=y +CONFIG_USB_ISP1301=y +CONFIG_USB_ULPI=y +CONFIG_TYPEC=y +CONFIG_TYPEC_STUSB=y +CONFIG_MMC=y +CONFIG_MMC_BLOCK_MINORS=16 +CONFIG_MMC_ARMMMCI=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_DW=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_PWM=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_STM32=y +CONFIG_DMADEVICES=y +CONFIG_STM32_DMA=y +CONFIG_STM32_DMAMUX=y +CONFIG_STM32_MDMA=y +CONFIG_HWSPINLOCK=y +CONFIG_HWSPINLOCK_STM32=y +CONFIG_STM32_IPCC=y +CONFIG_REMOTEPROC=y +CONFIG_STM32_RPROC=y +CONFIG_RPMSG_VIRTIO=y +CONFIG_RPMSG_TTY=y +CONFIG_IIO=y +CONFIG_IIO_SW_TRIGGER=y +CONFIG_SD_ADC_MODULATOR=y +CONFIG_STM32_ADC_CORE=y +CONFIG_STM32_ADC=y +CONFIG_STM32_ADC_TEMP=y +CONFIG_STM32_DFSDM_ADC=y +CONFIG_STM32_LPTIMER_CNT=y +CONFIG_STM32_DAC=y +CONFIG_IIO_HRTIMER_TRIGGER=y +CONFIG_IIO_STM32_LPTIMER_TRIGGER=y +CONFIG_PWM=y +CONFIG_PWM_STM32=y +CONFIG_PWM_STM32_LP=y +CONFIG_PHY_STM32_USBPHYC=y +CONFIG_NVMEM_STM32_ROMEM=y +CONFIG_EXT4_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_PRINTK_TIME=y diff --git a/board/stmicroelectronics/stm32mp157c-dk2/overlay/boot/extlinux/extlinux.conf b/board/stmicroelectronics/stm32mp157c-dk2/overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..5b7f56ee --- /dev/null +++ b/board/stmicroelectronics/stm32mp157c-dk2/overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +label stm32mp157c-dk2-buildroot + kernel /boot/zImage + devicetree /boot/stm32mp157c-dk2.dtb + append root=/dev/mmcblk0p4 rootwait diff --git a/board/stmicroelectronics/stm32mp157c-dk2/readme.txt b/board/stmicroelectronics/stm32mp157c-dk2/readme.txt new file mode 100644 index 00000000..8edc3e8b --- /dev/null +++ b/board/stmicroelectronics/stm32mp157c-dk2/readme.txt @@ -0,0 +1,38 @@ +STM32MP157C Discovery Kit v2 + +Intro +===== + +This configuration supports the STM32MP157C Discovery Kit 2 (DK2) +platform: + + https://www.st.com/en/evaluation-tools/stm32mp157c-dk2.html + +How to build +============ + + $ make stm32mp157c_dk2_defconfig + $ make + +How to write the microSD card +============================= + +Once the build process is finished you will have an image called +"sdcard.img" in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an microSD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Boot the board +============== + + (1) Insert the microSD card in connector CN15 + + (2) Plug a micro-USB cable in connector CN11 and run your serial + communication program on /dev/ttyACM0. + + (3) Plug a USB-C cable in CN6 to power-up the board. + + (4) The system will start, with the console on UART, but also visible + on the screen. diff --git a/board/synopsys/axs10x/post-build.sh b/board/synopsys/axs10x/post-build.sh new file mode 100755 index 00000000..f23c8a99 --- /dev/null +++ b/board/synopsys/axs10x/post-build.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +set -u +set -e + +# Add a console on tty0 +if [ -e ${TARGET_DIR}/etc/inittab ]; then + grep -qE '^tty0::' ${TARGET_DIR}/etc/inittab || \ + sed -i '/GENERIC_SERIAL/a\ +tty0::respawn:/sbin/getty 115200 tty0' ${TARGET_DIR}/etc/inittab +fi diff --git a/board/synopsys/axs10x/uboot-fragment.config b/board/synopsys/axs10x/uboot-fragment.config new file mode 100644 index 00000000..92fe20f4 --- /dev/null +++ b/board/synopsys/axs10x/uboot-fragment.config @@ -0,0 +1 @@ +CONFIG_SYS_MALLOC_F_LEN=0x0500 diff --git a/board/synopsys/hsdk/genimage.cfg b/board/synopsys/hsdk/genimage.cfg new file mode 100644 index 00000000..b5d702d5 --- /dev/null +++ b/board/synopsys/hsdk/genimage.cfg @@ -0,0 +1,29 @@ +image boot.vfat { + vfat { + files = { + "uImage" + } + + file uboot.env { + image = "uboot-env.bin" + } + } + + size = 20M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/synopsys/hsdk/linux.fragment b/board/synopsys/hsdk/linux.fragment new file mode 100644 index 00000000..aaca08e0 --- /dev/null +++ b/board/synopsys/hsdk/linux.fragment @@ -0,0 +1,3 @@ +CONFIG_INITRAMFS_SOURCE="" +CONFIG_ARC_UBOOT_SUPPORT=y +CONFIG_USB=y diff --git a/board/synopsys/hsdk/readme.txt b/board/synopsys/hsdk/readme.txt new file mode 100644 index 00000000..f4c65011 --- /dev/null +++ b/board/synopsys/hsdk/readme.txt @@ -0,0 +1,33 @@ +Synopsys, Inc. +ARC HS Development Kit (HSDK) + +https://embarc.org/platforms.html + +How to build it +=============== + +Select the default configuration for the target: +$ make snps_archs38_hsdk_defconfig + +Optional: modify the configuration: +$ make menuconfig + +Build: +$ make + +Result of the build +=================== +output/images/ +├── boot.vfat +├── rootfs.ext2 +├── sdcard.img +├── u-boot +├── u-boot.bin +├── uboot-env.bin +└── uImage + +To copy the image file to the sdcard use dd: +$ dd if=output/images/sdcard.img of=/dev/XXX + +2018, Evgeniy Didin + diff --git a/board/synopsys/hsdk/uboot.env.txt b/board/synopsys/hsdk/uboot.env.txt new file mode 100644 index 00000000..216f0c90 --- /dev/null +++ b/board/synopsys/hsdk/uboot.env.txt @@ -0,0 +1,9 @@ +baudrate=115200 +bootargs=root=/dev/mmcblk0p2 rootwait +bootcmd=fatload mmc 0:1; bootm +bootdelay=2 +bootfile=uImage +loadaddr=0x82000000 +stderr=serial0@f0005000 +stdin=serial0@f0005000 +stdout=serial0@f0005000 diff --git a/board/synopsys/nsim/readme.txt b/board/synopsys/nsim/readme.txt new file mode 100644 index 00000000..cc89cf87 --- /dev/null +++ b/board/synopsys/nsim/readme.txt @@ -0,0 +1,43 @@ +How to build it +=============== + +Configure build for the selected nSIM target. For instance, for +ARC700 nSIM target use the following defauilt configuration: +$ make snps_arc700_nsim_defconfig + +Optionally modify the configuration: +$ make menuconfig + +Build: +$ make + +How to use it +============= + +Resulting image can be booted using ARC nSIM instruction set simulator. +Free version of nSIM is available for download: +- https://www.synopsys.com/cgi-bin/dwarcnsim/req1.cgi +It provides nsimdrv binary for Linux that can be used stand-alone +or with GDB. + +To run ARC700 image use the following command: +$ nsimdrv \ + -prop=nsim_mem-dev=uart0,kind=dwuart,base=0xf0000000,irq=24 \ + -prop=icache=32768,64,2,0 \ + -prop=dcache=32768,64,4,0 \ + -prop=nsim_isa_enable_timer_0=1 \ + -prop=nsim_isa_enable_timer_1=1 \ + -prop=nsim_isa_host_timer=1 \ + -prop=nsim_mmu=3 \ + -prop=nsim_isa_family=a700 \ + -prop=nsim_isa_atomic_option=1 \ + -prop=nsim_isa_dpfp=none \ + -prop=nsim_isa_shift_option=2 \ + -prop=nsim_isa_swap_option=1 \ + -prop=nsim_isa_bitscan_option=1 \ + -prop=nsim_isa_sat=1 \ + -prop=nsim_isa_mpy32=1 \ + -prop=isa_counters=1 \ + -prop=nsim_isa_pct_counters=8 \ + -prop=nsim_isa_pct_size=48 \ + output/images/vmlinux diff --git a/board/technexion/imx6ulpico/readme.txt b/board/technexion/imx6ulpico/readme.txt new file mode 100644 index 00000000..7eab3f6b --- /dev/null +++ b/board/technexion/imx6ulpico/readme.txt @@ -0,0 +1,70 @@ +***************************** +Technexion i.MX6UL Pico board +***************************** + +This file documents the Buildroot support for the Technexion i.MX6UL Pico board. + +Build +===== + +First, configure Buildroot for the i.MX6UL Pico board: + + make imx6ulpico_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - imx6ul-pico-hobbit.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.imx + - zImage + +Create a bootable SD card +========================= + +In the U-Boot prompt lauch: + +=> ums 0 mmc 0 + +This will mount the eMMC content in the host PC as a mass storage device. + +To determine the device associated to the eMMC card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on the eMMC card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the i.MX6UL Pico board +========================= + +To boot your newly created system: +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Using Wifi +========== + +# modprobe brcmfmac +# iwconfig wlan0 essid ACCESSPOINTNAME +# wpa_passphrase ACCESSPOINTNAME > /etc/wpa.conf +(enter the wifi password and press enter) +# wpa_supplicant -Dwext -iwlan0 -c /etc/wpa.conf & +# udhcpc -i wlan0 +# ping buildroot.org + +Enjoy! diff --git a/board/technexion/imx6ulpico/rootfs_overlay/boot/extlinux/extlinux.conf b/board/technexion/imx6ulpico/rootfs_overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..24ed485c --- /dev/null +++ b/board/technexion/imx6ulpico/rootfs_overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +Label imx6ul-pico-buildroot + kernel ../zImage + fdtdir ../ + append root=PARTUUID=${uuid} rootwait rw console=${console},${baudrate} diff --git a/board/technexion/imx6ulpico/rootfs_overlay/lib/firmware/brcm/brcmfmac4339-sdio.txt b/board/technexion/imx6ulpico/rootfs_overlay/lib/firmware/brcm/brcmfmac4339-sdio.txt new file mode 100644 index 00000000..4716c7ef --- /dev/null +++ b/board/technexion/imx6ulpico/rootfs_overlay/lib/firmware/brcm/brcmfmac4339-sdio.txt @@ -0,0 +1,102 @@ +# Sample NVRAM for BCM94339 WLCSP with eTR,iPA, and eLNA. +sromrev=11 +boardrev=0x1100 +boardtype=0x06c9 +boardflags=0x10081401 +boardflags2=0x00000000 +boardflags3=0x08001188 +#boardnum=57410 +macaddr=00:90:4c:c5:12:38 +ccode=0 +regrev=0 +antswitch=0 +pdgain2g=7 +pdgain5g=7 +tworangetssi2g=0 +tworangetssi5g=0 +vendid=0x14e4 +devid=0x43ae +manfid=0x2d0 +#prodid=0x052e +nocrc=1 +otpimagesize=502 +xtalfreq=37400 +extpagain2g=2 +pdetrange2g=2 +extpagain5g=2 +pdetrange5g=2 +rxgains2gelnagaina0=2 +rxgains2gtrisoa0=6 +rxgains2gtrelnabypa0=1 +rxgains5gelnagaina0=4 +rxgains5gtrisoa0=4 +rxgains5gtrelnabypa0=1 +rxchain=1 +txchain=1 +aa2g=1 +aa5g=1 +tssipos5g=0 +tssipos2g=0 +pa2ga0=0xFF47,0x17B5,0xFD2B +pa2gccka0=0xFF5F,0x1B46,0xFCCC +pa5ga0=0xff54,0x16ec,0xfd45,0xff52,0x16a1,0xfd4d,0xff46,0x15b7,0xfd5a,0xff56,0x156d,0xfd79 +pa5gbw40a0=0xff59,0x17ca,0xfd30,0xff42,0x163d,0xfd4b,0xff31,0x152e,0xfd55,0xff60,0x16d8,0xfd54 +pa5gbw80a0=0xff56,0x1740,0xfd3f,0xff50,0x1738,0xfd3d,0xff4d,0x16b4,0xfd42,0xff58,0x1634,0xfd60 +# Default Target Power for 2G -- 17dBm(11)/14dBm(54)/13dBm(MCS7)/12dBm(MCS8)/12dBm(MCS9) +maxp2ga0=74 +maxp5ga0=74,74,74,74 +cckbw202gpo=0x0000 +cckbw20ul2gpo=0x0000 +mcsbw202gpo=0xaa888888 +mcsbw402gpo=0xaa888888 +dot11agofdmhrbw202gpo=0x6666 +ofdmlrbw202gpo=0x0066 +tssifloor2g=500 +# Default Target Power for 5G -- 14dBm(54)/13dBm(MCS7)/12dBm(MCS8)/12dBm(MCS9) +mcsbw205glpo=0xaa866666 +mcsbw405glpo=0xaa866666 +mcsbw805glpo=0xaa866666 +mcsbw205gmpo=0xaa866666 +mcsbw405gmpo=0xaa866666 +mcsbw805gmpo=0xaa866666 +mcsbw205ghpo=0xaa866666 +mcsbw405ghpo=0xaa866666 +mcsbw805ghpo=0xaa866666 +mcslr5glpo=0x0000 +mcslr5gmpo=0x0000 +mcslr5ghpo=0x0000 +sb20in40hrpo=0x0 +sb20in80and160hr5glpo=0x0 +sb40and80hr5glpo=0x0 +sb20in80and160hr5gmpo=0x0 +sb40and80hr5gmpo=0x0 +sb20in80and160hr5ghpo=0x0 +sb40and80hr5ghpo=0x0 +sb20in40lrpo=0x0 +sb20in80and160lr5glpo=0x0 +sb40and80lr5glpo=0x0 +sb20in80and160lr5gmpo=0x0 +sb40and80lr5gmpo=0x0 +sb20in80and160lr5ghpo=0x0 +sb40and80lr5ghpo=0x0 +dot11agduphrpo=0x0 +dot11agduplrpo=0x0 +phycal_tempdelta=25 +cckdigfilttype=2 +swctrlmap_5g=0x00080008,0x00500010,0x00100008,0x000000,0x078 +swctrlmap_2g=0x00010001,0x00220002,0x00020001,0x042202,0x1ff +swctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x000 +swctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x000 +# +#GPIO 0 for SDIO HW OOB interruption +#muxenab=0x10 +#sd_gpout=0 +#sd_oobonly=1 +# +rssicorrnorm_c0=-2,0 +rssicorrnorm5g_c0=3,5,2,3,4,2,2,3,1,2,3,1 +## ED threshold level to address the new ETSI requirement - 10/31/2013 +ed_thresh2g=-77 +ed_thresh5g=-77 +# +paparambwver=1 diff --git a/board/technexion/imx7dpico/readme.txt b/board/technexion/imx7dpico/readme.txt new file mode 100644 index 00000000..53197d45 --- /dev/null +++ b/board/technexion/imx7dpico/readme.txt @@ -0,0 +1,124 @@ +**************************** +Technexion i.MX7D Pico board +**************************** + +This file documents the Buildroot support for the Technexion i.MX7D Pico board. + +Build +===== + +First, configure Buildroot for the i.MX7D Pico board: + + make imx7dpico_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - imx7d-pico.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot-dtb.img + - SPL + - zImage + +Flash U-Boot and SPL +===== + +Note: This method is convenient for development purposes. +If the eMMC has already a U-Boot flashed with DFU support then +the user can go to step 2 below in order to update U-Boot. + +Put pico board in USB download mode (refer to the PICO-iMX7D Quick Start Guide +page 3) + +Connect a USB to serial adapter between the host PC and pico. + +Connect a USB cable between the OTG pico port and the host PC. + +Note: Some computers may be a bit strict with USB current draw and will +shut down their ports if the draw is too high. The solution for that is +to use an externally powered USB hub between the board and the host computer. + +Open a terminal program such as minicom. + +Copy SPL and u-boot-dtb.img to the imx_usb_loader folder. + +Load the SPL binary via USB: + +$ sudo ./imx_usb SPL + +Load the u-boot-dtb.img binary via USB: + +$ sudo ./imx_usb u-boot-dtb.img + +Then U-Boot starts and its messages appear in the console program. + +Use the default environment variables: + +=> env default -f -a +=> saveenv + +Run the DFU agent so we can flash the new images using dfu-util tool: + +=> dfu 0 mmc 0 + +Flash SPL and u-boot-dtb.img into the eMMC running the following commands on a PC: + +$ sudo dfu-util -D SPL -a spl + +$ sudo dfu-util -D u-boot-dtb.img -a u-boot + +Remove power from the pico board. + +Put pico board into normal boot mode. + +Power up the board and the new updated U-Boot should boot from eMMC. + +Flash the eMMC +============== + +In the U-Boot prompt lauch: + +=> ums 0 mmc 0 + +This will mount the eMMC content in the host PC as a mass storage device. + +To determine the device associated to the eMMC card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on the eMMC card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the eMMC content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the i.MX7D Pico board +========================== + +To boot your newly created system: +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Using Wifi +========== + +# modprobe brcmfmac +# iwconfig wlan0 essid ACCESSPOINTNAME +# wpa_passphrase ACCESSPOINTNAME > /etc/wpa.conf +(enter the wifi password and press enter) +# wpa_supplicant -Dwext -iwlan0 -c /etc/wpa.conf & +# udhcpc -i wlan0 +# ping buildroot.org + +Enjoy! diff --git a/board/technexion/imx7dpico/rootfs_overlay/boot/extlinux/extlinux.conf b/board/technexion/imx7dpico/rootfs_overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..4824aff0 --- /dev/null +++ b/board/technexion/imx7dpico/rootfs_overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +Label imx7d-pico-buildroot + kernel /boot/zImage + devicetree /boot/imx7d-pico-pi.dtb + append root=PARTUUID=${uuid} rootwait rw console=${console},${baudrate} \ No newline at end of file diff --git a/board/technexion/imx7dpico/rootfs_overlay/lib/firmware/brcm/brcmfmac4339-sdio.txt b/board/technexion/imx7dpico/rootfs_overlay/lib/firmware/brcm/brcmfmac4339-sdio.txt new file mode 100644 index 00000000..1ddd9295 --- /dev/null +++ b/board/technexion/imx7dpico/rootfs_overlay/lib/firmware/brcm/brcmfmac4339-sdio.txt @@ -0,0 +1,99 @@ +#AP6335_NVRAM_V1.5_03112014 +NVRAMRev=$Rev: 410316 $ +sromrev=11 +boardrev=0x1203 +boardtype=0x06c5 +boardflags=0x00000c01 +boardflags2=0x00002000 +boardflags3=0x101188 +macaddr=00:90:4c:c5:12:38 +ccode=0 +regrev=0 +antswitch=0 +pdgain2g=7 +pdgain5g=7 +tworangetssi2g=0 +tworangetssi5g=0 +femctrl=7 +pcieingress_war=15 +vendid=0x14e4 +devid=0x43ae +manfid=0x2d0 +nocrc=1 +otpimagesize=502 +xtalfreq=37400 +extpagain2g=2 +pdetrange2g=2 +extpagain5g=2 +pdetrange5g=2 +rxgains2gelnagaina0=0 +rxgains2gtrisoa0=7 +rxgains2gtrelnabypa0=0 +rxgains5gelnagaina0=0 +rxgains5gtrisoa0=11 +rxgains5gtrelnabypa0=0 +rxchain=1 +txchain=1 +aa2g=1 +aa5g=1 +tssipos5g=0 +tssipos2g=0 +pa2ga0=-161,6269,-723 +pa2gccka0=-116,7568,-852 +pa5ga0=0xFF61,0x163C,0xFD55,0xFF5D,0x1671,0xFD4F,0xFF5F,0x16CA,0xFD45,0xFF60,0x1676,0xFD4D +pa5gbw40a0=0xFF61,0x163C,0xFD55,0xFF5D,0x1671,0xFD4F,0xFF5F,0x16CA,0xFD45,0xFF60,0x1676,0xFD4D +pa5gbw80a0=0xFF61,0x163C,0xFD55,0xFF5D,0x1671,0xFD4F,0xFF5F,0x16CA,0xFD45,0xFF60,0x1676,0xFD4D +pdoffset40ma0=0 +pdoffset80ma0=0 +pdoffsetcckma0=0 +maxp2ga0=75 +maxp5ga0=64,64,72,72 +cckbw202gpo=0x0000 +cckbw20ul2gpo=0x0 +mcsbw202gpo=0x99445533 +mcsbw402gpo=0x99775533 +dot11agofdmhrbw202gpo=0x2233 +ofdmlrbw202gpo=0x0000 +tssifloor2g=500 +mcsbw205glpo=0x66333330 +mcsbw405glpo=0x66665530 +mcsbw805glpo=0xAA555530 +mcsbw1605glpo=0x99555530 +mcsbw205gmpo=0x99BB5530 +mcsbw405gmpo=0x99BB5530 +mcsbw805gmpo=0xEE555530 +mcsbw1605gmpo=0x99555530 +mcsbw205ghpo=0x99995530 +mcsbw405ghpo=0x99BB5530 +mcsbw805ghpo=0xEE555530 +mcsbw1605ghpo=0x99555530 +mcslr5glpo=0x0000 +mcslr5gmpo=0x0000 +mcslr5ghpo=0x0000 +sb20in40hrrpo=0x0 +sb20in80and160hr5glpo=0x0 +sb40and80hr5glpo=0x0 +sb20in80and160hr5gmpo=0x0 +sb40and80hr5gmpo=0x0 +sb20in80and160hr5ghpo=0x0 +sb40and80hr5ghpo=0x0 +sb20in40lrpo=0x0 +sb20in80and160lr5glpo=0x0 +sb40and80lr5glpo=0x0 +sb20in80and160lr5gmpo=0x0 +sb40and80lr5gmpo=0x0 +sb20in80and160lr5ghpo=0x0 +sb40and80lr5ghpo=0x0 +dot11agduphrpo=0x0 +dot11agduplrpo=0x0 +phycal_tempdelta=25 +cckdigfilttype=2 +pacalidx2g=65 +dacrate2g=160 +swctrlmap_5g=0x00000008,0x00000010,0x00000008,0x000000,0x038 +swctrlmap_2g=0x00000001,0x00000002,0x00000001,0x040002,0x0ff +swctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x000 +swctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x000 +rssicorrnorm_c0=3,3 +rssicorrnorm5g_c0=2,3,4,2,3,3,0,1,2,0,1,2 +muxenab=0x10 diff --git a/board/technexion/imx8mmpico/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/technexion/imx8mmpico/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 00000000..98f425a8 --- /dev/null +++ b/board/technexion/imx8mmpico/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 cfb927722272897f850681c78d5f129b0883a8efaba9c52d30e029086524f7ff imx-atf-lf-6.1.55-2.2.0.tar.gz diff --git a/board/technexion/imx8mmpico/patches/linux-headers/linux-headers.hash b/board/technexion/imx8mmpico/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/technexion/imx8mmpico/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/technexion/imx8mmpico/patches/linux/linux.hash b/board/technexion/imx8mmpico/patches/linux/linux.hash new file mode 100644 index 00000000..d88a78c4 --- /dev/null +++ b/board/technexion/imx8mmpico/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 875716dc8fe6e0df55b40600877232d9a1d62f81950244e16d563621f636f16e linux-tn-imx-tn-mickledore_6.1.55-2.2.0_20240417.tar.gz diff --git a/board/technexion/imx8mmpico/patches/uboot/uboot.hash b/board/technexion/imx8mmpico/patches/uboot/uboot.hash new file mode 100644 index 00000000..0f48f6f1 --- /dev/null +++ b/board/technexion/imx8mmpico/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 fbcdf336960f38a14ac4e9a383c207952f8b81cf0b5fe38b53dfe6ad0e8fa089 u-boot-tn-imx-tn-mickledore_6.1.55-2.2.0_20240417.tar.gz diff --git a/board/technexion/imx8mmpico/readme.txt b/board/technexion/imx8mmpico/readme.txt new file mode 100644 index 00000000..56a8c9bd --- /dev/null +++ b/board/technexion/imx8mmpico/readme.txt @@ -0,0 +1,100 @@ +********************************* +Technexion i.MX8M Mini Pico board +********************************* + +This file documents the Buildroot support for the Technexion i.MX8M +Mini Pico board. The Pico i.MX8M Mini system-on-module [1] is present +in development kits like the Pico Pi i.MX8M Mini [2]. + +Build +===== + +First, configure Buildroot for the i.MX8M Mini Pico board: + + make imx8mmpico_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - bl31.bin + - boot.vfat + - Image + - imx8-boot-sd.bin + - imx8mm-pico-pi.dtb + - imx8mm-pico-pi-ili9881c.dtb + - imx8mm-pico-pi-sn65dsi84-hj070na.dtb + - lpddr4_pmu_train_fw.bin + - rootfs.ext2 + - rootfs.ext4 + - sdcard.img + - u-boot.imx + +Flashing sdcard.img on the eMMC +=============================== + +i.MX8M Mini Pico board does not have a SD card slot. The storage is an +eMMC. An easy way to flash the eMMC is to use the u-boot ums +command. The boards are sold pre-flashed with such a u-boot. It is +assumed here that the board has already a working u-boot on eMMC and +jumpers are set to boot on eMMC. See [3]. + +Jumper configuration for eMMC boot: +J1: jumper on pins 4 and 6. +J2: jumper on pins 2 and 4. + +In case the board was flashed with a wrong u-boot, or the eMMC is +erased, u-boot can be loaded by USB Serial Download boot mode, using +imx-usb-loader. See [3]. + +For flashing: +- Plug the micro USB cable from the Debug USB Port, to your computer +- Plug the USB Type C to your computer, this will power up the board + +In the U-Boot prompt launch: + +=> ums 0 mmc ${mmcdev} + +This will mount the eMMC content in the host PC as a mass storage device. +Note: the ${mmcdev} id may change from one uboot version to another. The +actual id can be confirmed by running commands "mmc rescan" then +"mmc list", to find the eMMC entry. Finally it's possible to enter +directly the mmc device id, for example: "ums 0 mmc 2". + +To determine the device associated to the eMMC card have a look in the +/proc/partitions file: + + cat /proc/partitions + +If your system automatically mount some device partitions, make sure +to unmount them. + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on the eMMC. Launch the following +command as root: + + dd bs=1M if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the eMMC content. Use with care! *** + +This operation can take several minutes, depending on the image +size. When tested, a 10MB/s transfer rate was observed. Note: the +blocksize "bs=1M" parameter gives better transfer performances. + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the i.MX8M Mini Pico board +=============================== + +To boot your newly created system: +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board, with USB Type C connector. + +Enjoy! + +[1]. https://www.technexion.com/products/system-on-modules/pico/pico-compute-modules/detail/PICO-IMX8M-MINI +[2]. https://www.technexion.com/products/system-on-modules/evk/pico-pi-imx8m-mini/ +[3]. https://developer.technexion.com/docs/recover-to-factory-settings-pico-imx8m-mini diff --git a/board/technologic/ts4900/genimage.cfg b/board/technologic/ts4900/genimage.cfg new file mode 100644 index 00000000..7e580eb2 --- /dev/null +++ b/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/board/technologic/ts4900/post-image.sh b/board/technologic/ts4900/post-image.sh new file mode 100755 index 00000000..cb966d88 --- /dev/null +++ b/board/technologic/ts4900/post-image.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# +# Copyright (C) 2015-2016 Savoir-Faire Linux +# Post image generation script. + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG=$BOARD_DIR/genimage.cfg +GENIMAGE_TMP=$BUILD_DIR/.genimage_tmp + +rm -rf $GENIMAGE_TMP + +${HOST_DIR}/bin/genimage \ + --config ${GENIMAGE_CFG} \ + --rootpath $TARGET_DIR \ + --tmppath $GENIMAGE_TMP \ + --inputpath $BINARIES_DIR \ + --outputpath $BINARIES_DIR diff --git a/board/technologic/ts4900/readme.txt b/board/technologic/ts4900/readme.txt new file mode 100644 index 00000000..121e6397 --- /dev/null +++ b/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: + https://docs.embeddedTS.com/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 +https://docs.embeddedTS.com/TS-4900#U-Boot for details on which +U-Boot config to use and how to flash it. diff --git a/board/technologic/ts5500/fs-overlay/boot/syslinux/syslinux.cfg b/board/technologic/ts5500/fs-overlay/boot/syslinux/syslinux.cfg new file mode 100644 index 00000000..64f81877 --- /dev/null +++ b/board/technologic/ts5500/fs-overlay/boot/syslinux/syslinux.cfg @@ -0,0 +1,9 @@ +SERIAL 1 115200 +CONSOLE 0 + +DEFAULT linux + +LABEL linux + SAY Now booting the kernel from SYSLINUX... + LINUX /boot/bzImage + APPEND console=ttyS1,115200n8 root=/dev/sda1 rootfstype=ext4 rw diff --git a/board/technologic/ts5500/linux-4.14.config b/board/technologic/ts5500/linux-4.14.config new file mode 100644 index 00000000..eb81596e --- /dev/null +++ b/board/technologic/ts5500/linux-4.14.config @@ -0,0 +1,111 @@ +# CONFIG_CROSS_MEMORY_ATTACH is not set +CONFIG_PARTITION_ADVANCED=y +# CONFIG_X86_EXTENDED_PLATFORM is not set +CONFIG_MELAN=y +CONFIG_X86_GENERIC=y +CONFIG_X86_REBOOTFIXUPS=y +CONFIG_NOHIGHMEM=y +# CONFIG_COMPACTION is not set +# CONFIG_BOUNCE is not set +# CONFIG_RELOCATABLE is not set +# CONFIG_SUSPEND is not set +# CONFIG_ACPI is not set +CONFIG_CPU_IDLE=y +CONFIG_TS5500=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_DIAG is not set +# CONFIG_IPV6 is not set +# CONFIG_WIRELESS is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_BLK_DEV is not set +CONFIG_BLK_DEV_SD=y +# CONFIG_SCSI_LOWLEVEL is not set +CONFIG_ATA=y +# CONFIG_ATA_VERBOSE_ERROR is not set +# CONFIG_SATA_PMP is not set +CONFIG_ATA_GENERIC=y +CONFIG_PATA_LEGACY=y +CONFIG_NETDEVICES=y +# CONFIG_NET_CORE is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_NET_VENDOR_AMD is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_BROCADE is not set +# CONFIG_NET_VENDOR_CHELSIO is not set +# CONFIG_NET_VENDOR_CISCO is not set +CONFIG_NET_TULIP=y +CONFIG_DM9102=y +# CONFIG_NET_VENDOR_DLINK is not set +# CONFIG_NET_VENDOR_EMULEX is not set +# CONFIG_NET_VENDOR_EXAR is not set +# CONFIG_NET_VENDOR_HP is not set +# CONFIG_NET_VENDOR_INTEL is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MELLANOX is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_NET_PACKET_ENGINE is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_REALTEK is not set +# CONFIG_NET_VENDOR_RDC is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +# CONFIG_NET_VENDOR_SMSC is not set +# CONFIG_NET_VENDOR_STMICRO is not set +# CONFIG_NET_VENDOR_SUN is not set +# CONFIG_NET_VENDOR_TEHUTI is not set +# CONFIG_NET_VENDOR_TI is not set +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WIZNET is not set +CONFIG_PHYLIB=y +CONFIG_DAVICOM_PHY=y +# CONFIG_WLAN is not set +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_SERIO is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_HW_RANDOM is not set +CONFIG_GPIOLIB=y +CONFIG_GPIO_TS5500=y +CONFIG_SENSORS_MAX197=y +CONFIG_WATCHDOG=y +CONFIG_SC520_WDT=y +CONFIG_USB=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_SERIAL=y +CONFIG_USB_SERIAL_FTDI_SIO=y +CONFIG_USB_SERIAL_PL2303=y +# CONFIG_X86_PLATFORM_DEVICES is not set +# CONFIG_IOMMU_SUPPORT is not set +# CONFIG_DMIID is not set +CONFIG_EXT4_FS=y +# CONFIG_DNOTIFY is not set +# CONFIG_INOTIFY_USER is not set +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +# CONFIG_MISC_FILESYSTEMS is not set +# CONFIG_NETWORK_FILESYSTEMS is not set +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_850=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_ISO8859_15=y +CONFIG_NLS_UTF8=y +# CONFIG_VIRTUALIZATION is not set +CONFIG_XZ_DEC=y diff --git a/board/technologic/ts5500/readme.txt b/board/technologic/ts5500/readme.txt new file mode 100644 index 00000000..1fe384fa --- /dev/null +++ b/board/technologic/ts5500/readme.txt @@ -0,0 +1,52 @@ +Technologic Systems TS-5x00 SBCs +================================ + +This document explains how to set up a basic Buildroot system for the +Technologic Systems TS-5x00 serie of x86-based Single Board Computers. + +TS-5x00 Single Board Computers are based on the AMD Elan520 processor. For more +information please have a look at https://docs.embeddedTS.com/Documentation_Home#AMD + +The kernel configuration works for any AMD Elan520-based SBCs, but the support +is enhanced for the TS-5500 and TS-5400 models (on-board devices registration +and additional sysfs attributes under /sys/devices/platform/). + +To build the default configuration you only have to: + + $ make ts5500_defconfig + $ make + +You will need a Compact Flash card of sufficient size and the first or only +partition configured as Linux type, with the bootable flag. + +You can transfer the system on the partition then optionally resize it with: + + # dd if=output/images/rootfs.ext4 of=/dev/sdX1 + # resize2fs /dev/sdX1 + +Or you can just extract the root filesystem to the partition with: + + # mount /dev/sdX1 /mnt + # tar -pxf output/images/rootfs.tar -C /mnt + # umount /mnt + +To install the bootloader, you will need to copy the MBR: + + # cat output/images/syslinux/mbr.bin > /dev/sdX + +Then install SYSLINUX in the mounted partition: + + # mount /dev/sdX1 /mnt + # output/host/sbin/extlinux --install /mnt/boot/syslinux + # umount /mnt + +IMPORTANT: In order for the board to boot the Compact Flash with a recent +config, the BIOS must use Logical Block Addressing (LBA). You can do it by +choosing "Ide 0: AUTOCONFIG, LBA" under "IDE DRIVE GEOMETRY" in the "Basic CMOS +Configuration" screen. Also, don't forget to set the 'active' (or 'bootable') +flag on partition 1. For details about the CMOS setup, please see: +https://docs.embeddedts.com/TS-5500#System_BIOS_Setup_Screens + +Connect a terminal program to the rs232 connector marked "COM2" +with baudrate set to 115200, insert the Compact Flash card into the socket, +power up the board, and enjoy. diff --git a/board/technologic/ts7680/genimage.cfg b/board/technologic/ts7680/genimage.cfg new file mode 100644 index 00000000..58a63edd --- /dev/null +++ b/board/technologic/ts7680/genimage.cfg @@ -0,0 +1,14 @@ +image sdcard.img { + hdimage { + } + + partition unused { + size = 512 + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 256M + } +} diff --git a/board/technologic/ts7680/readme.txt b/board/technologic/ts7680/readme.txt new file mode 100644 index 00000000..3f703330 --- /dev/null +++ b/board/technologic/ts7680/readme.txt @@ -0,0 +1,50 @@ +Technologic Systems TS-7680 SBC +=============================== + +This document explains how to set up a basic Buildroot system for +the Technologic Systems TS-7680 Single Board Computer. + +The TS-7680 SBC is based on the Freescale i.MX286 ARM ARM926EJ-S +running at 454MHz. The TS-7680 features are 10/100 Ethernet ports, +Wi-Fi, microSD card, eMMC, NOR Flash, USB host port, CAN ports, +relays and ADC/DAC. More details on the board here: +https://docs.embeddedTS.com/TS-7680 + +The TS-7680 uses a 4.9 Linux kernel provided by Technologic Systems. + +To build the default configuration you only have to run: + + $ make ts7680_defconfig + $ make + +The output looks like: +output/images +├── imx28-ts7680.dtb +├── rootfs.ext2 +├── rootfs.ext4 -> rootfs.ext2 +├── rootfs.tar +├── sdcard.img +└── uImage + +The provided genimage configuration generates an image file containing +two partitions. The first one is unused, but mandatory as the +TS-7680 built-in bootloader loads the Linux uImage from the /boot +directory in the second partition. The second partition contains the +rootfs with the Linux uImage into the /boot directory. + + $ fdisk output/images/sdcard.img + output/images/sdcard.img1 1 1 1 512B 0 Empty + output/images/sdcard.img2 2 524289 524288 256M 83 Linux + +This image can be directly written to an SD card. + + $ sudo dd if=output/images/sdcard.img of=/dev/mmcblk0 + +To boot with Buildroot, insert this SD card on the board, make sure +the SD jumper is present and the U-Boot jumper is not. + +The bootloader comes pre-flashed on the board on an SPI flash. Since +updating the bootloader is risky and not trivial, it is not included +in the Buildroot defconfig. Refer to +https://docs.embeddedts.com/TS-7680#U-Boot for details on +which U-Boot config to use and how to flash it. diff --git a/board/terasic/de10nano_cyclone5/barebox-env/boot/mmc b/board/terasic/de10nano_cyclone5/barebox-env/boot/mmc new file mode 100644 index 00000000..fed2b0b4 --- /dev/null +++ b/board/terasic/de10nano_cyclone5/barebox-env/boot/mmc @@ -0,0 +1,8 @@ +#!/bin/sh + +global.bootm.oftree="/boot/socfpga_cyclone5_de0_nano_soc.dtb" +global.bootm.image="/boot/zImage" + +#bootargs-ip + +global.linux.bootargs.dyn.root="root=/dev/mmcblk0p3 rw rootwait" diff --git a/board/terasic/de10nano_cyclone5/barebox-env/init/automount b/board/terasic/de10nano_cyclone5/barebox-env/init/automount new file mode 100644 index 00000000..4092ecba --- /dev/null +++ b/board/terasic/de10nano_cyclone5/barebox-env/init/automount @@ -0,0 +1,5 @@ +#!/bin/sh + +# SD card slot, first partition +mkdir -p /mnt/mmcblk0p2 +automount -d /mnt/mmcblk0p2 'mount /dev/mmc0.1 /mnt/mmcblk0p2' diff --git a/board/terasic/de10nano_cyclone5/barebox-env/nv/boot.default b/board/terasic/de10nano_cyclone5/barebox-env/nv/boot.default new file mode 100644 index 00000000..61f529d6 --- /dev/null +++ b/board/terasic/de10nano_cyclone5/barebox-env/nv/boot.default @@ -0,0 +1 @@ +mmc diff --git a/board/terasic/de10nano_cyclone5/barebox-env/nv/linux.bootargs.console b/board/terasic/de10nano_cyclone5/barebox-env/nv/linux.bootargs.console new file mode 100644 index 00000000..476b1fbe --- /dev/null +++ b/board/terasic/de10nano_cyclone5/barebox-env/nv/linux.bootargs.console @@ -0,0 +1 @@ +console=ttyS0,115200 diff --git a/board/terasic/de10nano_cyclone5/genimage.cfg b/board/terasic/de10nano_cyclone5/genimage.cfg new file mode 100644 index 00000000..815e4a1b --- /dev/null +++ b/board/terasic/de10nano_cyclone5/genimage.cfg @@ -0,0 +1,43 @@ +image boot.vfat { + vfat { + file zImage { + image = "zImage" + } + + file socfpga_cyclone5_de0_nano_soc.dtb { + image = "socfpga_cyclone5_de0_nano_soc.dtb" + } + + file barebox.bin { + image = "barebox-socfpga-de10_nano.img" + } + + file barebox.env { + image = "barebox-env" + } + } + + size = 8M +} + +image sdcard.img { + hdimage { + } + + partition spl { + partition-type = 0xa2 + image = "barebox-socfpga-de10_nano-xload.img" + size = 1M + } + + partition boot { + partition-type = 0xc + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/board/terasic/de10nano_cyclone5/readme.txt b/board/terasic/de10nano_cyclone5/readme.txt new file mode 100644 index 00000000..f9d8fc75 --- /dev/null +++ b/board/terasic/de10nano_cyclone5/readme.txt @@ -0,0 +1,41 @@ +Terasic DE10 Nano Development Board + +Intro +===== + +More information about this board can be found here: +https://rocketboards.org/foswiki/Documentation/DE10NanoDevelopmentBoard + +Build +===== + +First, load socrates config for buildroot + + make terasic_de10nano_cyclone5_defconfig + +Build everything + + make + +Following files will be generated in output/images + +. +├── barebox-env +├── barebox-socfpga-de10_nano.img +├── barebox-socfpga-de10_nano-xload.img +├── boot.vfat +├── rootfs.ext2 +├── rootfs.ext4 -> rootfs.ext2 +├── rootfs.tar +├── sdcard.img +├── socfpga_cyclone5_de0_nano_soc.dtb +└── zImage + +Creating bootable SD card +========================= + +Simply invoke + +dd if=output/images/sdcard.img of=/dev/sdX + +Where X is your SD card device (not partition) diff --git a/board/ti/am574x-idk/extlinux.conf b/board/ti/am574x-idk/extlinux.conf new file mode 100644 index 00000000..29e0ecfa --- /dev/null +++ b/board/ti/am574x-idk/extlinux.conf @@ -0,0 +1,4 @@ +label am5749-idk-buildroot + kernel /zImage + fdtdir / + append console=ttyS0,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait diff --git a/board/ti/am574x-idk/genimage.cfg b/board/ti/am574x-idk/genimage.cfg new file mode 100644 index 00000000..02a9ffe0 --- /dev/null +++ b/board/ti/am574x-idk/genimage.cfg @@ -0,0 +1,30 @@ +image boot.vfat { + vfat { + files = { + "MLO", + "u-boot.img", + "zImage", + "am574x-idk.dtb", + "extlinux" + } + } + + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 1G + } +} diff --git a/board/ti/am574x-idk/post-build.sh b/board/ti/am574x-idk/post-build.sh new file mode 100755 index 00000000..5dcdb352 --- /dev/null +++ b/board/ti/am574x-idk/post-build.sh @@ -0,0 +1,4 @@ +#!/bin/sh +BOARD_DIR="$(dirname "$0")" + +install -m 0644 -D "${BOARD_DIR}"/extlinux.conf "${BINARIES_DIR}"/extlinux/extlinux.conf diff --git a/board/ti/am574x-idk/readme.txt b/board/ti/am574x-idk/readme.txt new file mode 100644 index 00000000..4869984c --- /dev/null +++ b/board/ti/am574x-idk/readme.txt @@ -0,0 +1,28 @@ +Texas Instuments AM574x IDK Test and Development Board + +Description +=========== + +This configuration will build a basic image for the TI AM574x IDK +board: https://www.ti.com/tool/TMDSIDK574 + +How to build it +=============== + +Configure Buildroot: + + $ make am574x_idk_defconfig + +Compile everything and build the USB flash drive 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/board/ti/am62ax-sk/genimage.cfg b/board/ti/am62ax-sk/genimage.cfg new file mode 100644 index 00000000..70d38faa --- /dev/null +++ b/board/ti/am62ax-sk/genimage.cfg @@ -0,0 +1,33 @@ +image boot.vfat { + vfat { + files = { + "tiboot3.bin", + "tispl.bin", + "u-boot.img", + "k3-am62a7-sk.dtb", + "Image" + } + + file extlinux/extlinux.conf { + image = extlinux.conf + } + } + + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/ti/am62ax-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/ti/am62ax-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 00000000..f0635a66 --- /dev/null +++ b/board/ti/am62ax-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 d7194687d13335f832a48c1b87ad4f15ffb983365ca2aba4afda57843fb01cb6 arm-trusted-firmware-lts-v2.10.4-git4.tar.gz diff --git a/board/ti/am62ax-sk/patches/linux-headers/linux-headers.hash b/board/ti/am62ax-sk/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/ti/am62ax-sk/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/ti/am62ax-sk/patches/linux/0001-clk-keystone-sci-clk-Adding-support-for-non-contiguo.patch b/board/ti/am62ax-sk/patches/linux/0001-clk-keystone-sci-clk-Adding-support-for-non-contiguo.patch new file mode 100644 index 00000000..2f3d80c8 --- /dev/null +++ b/board/ti/am62ax-sk/patches/linux/0001-clk-keystone-sci-clk-Adding-support-for-non-contiguo.patch @@ -0,0 +1,76 @@ +From 750cdf4cb6791c45d479ed73a97728100394fb32 Mon Sep 17 00:00:00 2001 +From: Udit Kumar +Date: Tue, 13 Feb 2024 13:56:40 +0530 +Subject: [PATCH] clk: keystone: sci-clk: Adding support for non contiguous + clocks +X-Developer-Signature: v=1; a=openpgp-sha256; l=1876; i=bb@ti.com; + h=from:subject; bh=CKSvD6FpqwRzx8blynhoCEc3XUR5TlwjFJdcgjQwpgg=; + b=owNCWmg5MUFZJlNZHYzOLwAAZP/////7puP/r7v/9q9s+8t7wa8/97UZO//d+XvPsvfv2/+wA + RsYHaQAAAAAAAAGg09IPUGmgAaAANBoAAAGmnqAPU9Q0DQ0HqMQDQ8ptTeqeogaABoPU0NAPUAA + 0GgDJ6gANAAMg0GmgNGgDEGh6jR6h6hp6mgepoPU2oDTIGho0IaHqA00yDQNBoGTRoDTRkAZNAD + AmTIBkGjIGmQyAZDRkAaANAYIxBk0DQAAHODcFn1CAGBsJeG8ZtU3FQCBdLH7LjDIouHeAszY1j + AFkqjaWIFXEVi8NV3giRplb1JjCYunXimTaK06SgQRYsUGRSbKOVQP2t1LlAYS93QjOMWF6CHXK + 69KzHyBDpXR2mHAAkHcHX0X3SAYJkxPElwJ1ZnHK1RfDKRfJcRQKzxnryM+4x2mCxpIFIIjpVLk + nItd1Vl1SEF2QiWZIYV4b0lawcUqLGgTQZ0+qpJ5QORYrvPXE4DR89JlJYBU4DjxAoyACH6KN0o + AiaknqZTfMwmF8iREpU4SgDEVun3X3OFlkBp3hBO+Ynb12GJoLSFBSz9IWE2ooLKFalh5XJMZfl + +GthEEOnlrMQHOF8qCr+JAKqXEqSrwLGuEIMFbnGEjJYruo4ENGOmGVlkvW+kLRp5ibCXAAcDMM + TPOUZ/i7kinChIDsZnF4A== +X-Developer-Key: i=bb@ti.com; a=openpgp; + fpr=D3D177E40A38DF4D1853FEEF41B90D5D71D56CE0 + +Most of clocks and their parents are defined in contiguous range, +But in few cases, there is gap in clock numbers[0]. +Driver assumes clocks to be in contiguous range, and add their clock +ids incrementally. + +New firmware started returning error while calling get_freq and is_on +API for non-available clock ids. + +In this fix, driver checks and adds only valid clock ids. + +[0] https://software-dl.ti.com/tisci/esd/latest/5_soc_doc/j7200/clocks.html +Section Clocks for NAVSS0_CPTS_0 Device, clock id 12-15 not present. + +Upstream: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=ad3ac13c6ec318b43e769cc9ffde67528e58e555 + +Fixes: 3c13933c6033 ("clk: keystone: sci-clk: add support for dynamically probing clocks") +Signed-off-by: Udit Kumar +Reviewed-by: Nishanth Menon +Signed-off-by: Bryan Brattlof +--- + drivers/clk/keystone/sci-clk.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/drivers/clk/keystone/sci-clk.c b/drivers/clk/keystone/sci-clk.c +index 35fe197dd303c..eb2ef44869b23 100644 +--- a/drivers/clk/keystone/sci-clk.c ++++ b/drivers/clk/keystone/sci-clk.c +@@ -516,6 +516,7 @@ static int ti_sci_scan_clocks_from_dt(struct sci_clk_provider *provider) + struct sci_clk *sci_clk, *prev; + int num_clks = 0; + int num_parents; ++ bool state; + int clk_id; + const char * const clk_names[] = { + "clocks", "assigned-clocks", "assigned-clock-parents", NULL +@@ -586,6 +587,15 @@ static int ti_sci_scan_clocks_from_dt(struct sci_clk_provider *provider) + clk_id = args.args[1] + 1; + + while (num_parents--) { ++ /* Check if this clock id is valid */ ++ ret = provider->ops->is_auto(provider->sci, ++ sci_clk->dev_id, clk_id, &state); ++ ++ if (ret) { ++ clk_id++; ++ continue; ++ } ++ + sci_clk = devm_kzalloc(dev, + sizeof(*sci_clk), + GFP_KERNEL); + +base-commit: 9fbb5fcb41e7e96fb8769a9f5a12a35a984c23bd +-- +2.43.2 + diff --git a/board/ti/am62ax-sk/patches/linux/linux.hash b/board/ti/am62ax-sk/patches/linux/linux.hash new file mode 100644 index 00000000..2e9aad39 --- /dev/null +++ b/board/ti/am62ax-sk/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1c4cdcb9d560fad1fb95db2cb8afbedc922f9ead848371fe40363b13f9f631ba linux-6.8.8.tar.xz diff --git a/board/ti/am62ax-sk/patches/ti-k3-r5-loader/ti-k3-r5-loader.hash b/board/ti/am62ax-sk/patches/ti-k3-r5-loader/ti-k3-r5-loader.hash new file mode 100644 index 00000000..75de6acf --- /dev/null +++ b/board/ti/am62ax-sk/patches/ti-k3-r5-loader/ti-k3-r5-loader.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/board/ti/am62ax-sk/patches/uboot/uboot.hash b/board/ti/am62ax-sk/patches/uboot/uboot.hash new file mode 100644 index 00000000..6f8624c3 --- /dev/null +++ b/board/ti/am62ax-sk/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/board/ti/am62ax-sk/readme.txt b/board/ti/am62ax-sk/readme.txt new file mode 100644 index 00000000..d7d529c1 --- /dev/null +++ b/board/ti/am62ax-sk/readme.txt @@ -0,0 +1,39 @@ +Texas Instuments SK-AM62A Test and Development Board + +Description +=========== + +This configuration will build a complete image for the TI SK-AM62A +board: https://www.ti.com/tool/SK-AM62A-LP + +How to Build +============ + +Select the default configuration for the target: + +$ make ti_am62ax_sk_defconfig + +Optional: modify the configuration: + +$ make menuconfig + +IMPORTANT: make sure to use the tiboot3 firmware that match with the TI +K3 SoC boot ROM (tiboot3-am62ax-{gp/hs-fs/hs}-evm.bin) used on the board. +Use the BR2_TARGET_TI_K3_R5_LOADER_TIBOOT3_BIN to name which tiboot3.bin +security variant we want to use. + +Build: + +$ make + +To copy the resultimg output image file to an SD card use dd: + +$ dd if=output/images/sdcard.img of=/dev/sdX bs=1M + +How to Run +========== + +Insert the SD card into the SK-AM62A board, and power it up through the +USB Type-C connector. The system should come up. You can use a +micro-USB cable to connect to the connector labeled UART to +communicate with the board. diff --git a/board/ti/am62x-sk/genimage.cfg b/board/ti/am62x-sk/genimage.cfg new file mode 100644 index 00000000..398209f4 --- /dev/null +++ b/board/ti/am62x-sk/genimage.cfg @@ -0,0 +1,32 @@ +image boot.vfat { + vfat { + files = { + "tiboot3.bin", + "tispl.bin", + "u-boot.img", + "k3-am625-sk.dtb", + "Image" + } + file extlinux/extlinux.conf { + image = extlinux.conf + } + } + + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 00000000..d68ac4bd --- /dev/null +++ b/board/ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 d7194687d13335f832a48c1b87ad4f15ffb983365ca2aba4afda57843fb01cb6 arm-trusted-firmware-lts-v2.10.4-git4.tar.gz diff --git a/board/ti/am62x-sk/patches/linux-headers/linux-headers.hash b/board/ti/am62x-sk/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/ti/am62x-sk/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/ti/am62x-sk/patches/linux/0001-clk-keystone-sci-clk-Adding-support-for-non-contiguo.patch b/board/ti/am62x-sk/patches/linux/0001-clk-keystone-sci-clk-Adding-support-for-non-contiguo.patch new file mode 100644 index 00000000..788b6439 --- /dev/null +++ b/board/ti/am62x-sk/patches/linux/0001-clk-keystone-sci-clk-Adding-support-for-non-contiguo.patch @@ -0,0 +1,75 @@ +From 750cdf4cb6791c45d479ed73a97728100394fb32 Mon Sep 17 00:00:00 2001 +From: Udit Kumar +Date: Tue, 13 Feb 2024 13:56:40 +0530 +Subject: [PATCH] clk: keystone: sci-clk: Adding support for non contiguous + clocks +X-Developer-Signature: v=1; a=openpgp-sha256; l=1876; i=bb@ti.com; + h=from:subject; bh=CKSvD6FpqwRzx8blynhoCEc3XUR5TlwjFJdcgjQwpgg=; + b=owNCWmg5MUFZJlNZHYzOLwAAZP/////7puP/r7v/9q9s+8t7wa8/97UZO//d+XvPsvfv2/+wA + RsYHaQAAAAAAAAGg09IPUGmgAaAANBoAAAGmnqAPU9Q0DQ0HqMQDQ8ptTeqeogaABoPU0NAPUAA + 0GgDJ6gANAAMg0GmgNGgDEGh6jR6h6hp6mgepoPU2oDTIGho0IaHqA00yDQNBoGTRoDTRkAZNAD + AmTIBkGjIGmQyAZDRkAaANAYIxBk0DQAAHODcFn1CAGBsJeG8ZtU3FQCBdLH7LjDIouHeAszY1j + AFkqjaWIFXEVi8NV3giRplb1JjCYunXimTaK06SgQRYsUGRSbKOVQP2t1LlAYS93QjOMWF6CHXK + 69KzHyBDpXR2mHAAkHcHX0X3SAYJkxPElwJ1ZnHK1RfDKRfJcRQKzxnryM+4x2mCxpIFIIjpVLk + nItd1Vl1SEF2QiWZIYV4b0lawcUqLGgTQZ0+qpJ5QORYrvPXE4DR89JlJYBU4DjxAoyACH6KN0o + AiaknqZTfMwmF8iREpU4SgDEVun3X3OFlkBp3hBO+Ynb12GJoLSFBSz9IWE2ooLKFalh5XJMZfl + +GthEEOnlrMQHOF8qCr+JAKqXEqSrwLGuEIMFbnGEjJYruo4ENGOmGVlkvW+kLRp5ibCXAAcDMM + TPOUZ/i7kinChIDsZnF4A== +X-Developer-Key: i=bb@ti.com; a=openpgp; + fpr=D3D177E40A38DF4D1853FEEF41B90D5D71D56CE0 + +Most of clocks and their parents are defined in contiguous range, +But in few cases, there is gap in clock numbers[0]. +Driver assumes clocks to be in contiguous range, and add their clock +ids incrementally. + +New firmware started returning error while calling get_freq and is_on +API for non-available clock ids. + +In this fix, driver checks and adds only valid clock ids. + +[0] https://software-dl.ti.com/tisci/esd/latest/5_soc_doc/j7200/clocks.html +Section Clocks for NAVSS0_CPTS_0 Device, clock id 12-15 not present. + +Fixes: 3c13933c6033 ("clk: keystone: sci-clk: add support for dynamically probing clocks") +Signed-off-by: Udit Kumar +Reviewed-by: Nishanth Menon +Upstream: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ad3ac13c6ec318b43e769cc9ffde67528e58e555 +Signed-off-by: Bryan Brattlof +--- + drivers/clk/keystone/sci-clk.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/drivers/clk/keystone/sci-clk.c b/drivers/clk/keystone/sci-clk.c +index 35fe197dd303c..eb2ef44869b23 100644 +--- a/drivers/clk/keystone/sci-clk.c ++++ b/drivers/clk/keystone/sci-clk.c +@@ -516,6 +516,7 @@ static int ti_sci_scan_clocks_from_dt(struct sci_clk_provider *provider) + struct sci_clk *sci_clk, *prev; + int num_clks = 0; + int num_parents; ++ bool state; + int clk_id; + const char * const clk_names[] = { + "clocks", "assigned-clocks", "assigned-clock-parents", NULL +@@ -586,6 +587,15 @@ static int ti_sci_scan_clocks_from_dt(struct sci_clk_provider *provider) + clk_id = args.args[1] + 1; + + while (num_parents--) { ++ /* Check if this clock id is valid */ ++ ret = provider->ops->is_auto(provider->sci, ++ sci_clk->dev_id, clk_id, &state); ++ ++ if (ret) { ++ clk_id++; ++ continue; ++ } ++ + sci_clk = devm_kzalloc(dev, + sizeof(*sci_clk), + GFP_KERNEL); + +base-commit: 9fbb5fcb41e7e96fb8769a9f5a12a35a984c23bd +-- +2.43.2 + diff --git a/board/ti/am62x-sk/patches/linux/linux.hash b/board/ti/am62x-sk/patches/linux/linux.hash new file mode 100644 index 00000000..5e9df51e --- /dev/null +++ b/board/ti/am62x-sk/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 19b31956d229b5b9ca5671fa1c74320179682a3d8d00fc86794114b21da86039 linux-6.8.12.tar.xz diff --git a/board/ti/am62x-sk/patches/ti-k3-r5-loader/ti-k3-r5-loader.hash b/board/ti/am62x-sk/patches/ti-k3-r5-loader/ti-k3-r5-loader.hash new file mode 100644 index 00000000..fe9b4f53 --- /dev/null +++ b/board/ti/am62x-sk/patches/ti-k3-r5-loader/ti-k3-r5-loader.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f591da9ab90ef3d6b3d173766d0ddff90c4ed7330680897486117df390d83c8f u-boot-2024.07.tar.bz2 diff --git a/board/ti/am62x-sk/patches/uboot/uboot.hash b/board/ti/am62x-sk/patches/uboot/uboot.hash new file mode 100644 index 00000000..fe9b4f53 --- /dev/null +++ b/board/ti/am62x-sk/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f591da9ab90ef3d6b3d173766d0ddff90c4ed7330680897486117df390d83c8f u-boot-2024.07.tar.bz2 diff --git a/board/ti/am62x-sk/readme.txt b/board/ti/am62x-sk/readme.txt new file mode 100644 index 00000000..a8d0c08d --- /dev/null +++ b/board/ti/am62x-sk/readme.txt @@ -0,0 +1,50 @@ +Texas Instuments SK-AM62 Test and Development Board + +Description +=========== + +This configuration will build a complete image for the TI SK-AM62 +board: https://www.ti.com/tool/SK-AM62. + +How to Build +============ + +Select the default configuration for the target: + +$ make ti_am62x_sk_defconfig + +Optional: modify the configuration: + +$ make menuconfig + +IMPORTANT: make sure to use the tiboot3 firmware that match with the TI +K3 SoC boot ROM (tiboot3-am62x-{gp/hs-fs/hs}-*.bin) used on the board. + +HS-FS should be the default for all TI AM6x devices but earlier version +of TI starter kit EVMs for AM6x was produced with a GP device. + +See further details on e2e Forum [1] : + + "Unfortunately with this transition any existing GP device based AM62x + (and AM64x) boards will no longer boot with MMC/SD card images generated" + +For such existing GP device based AM62x boards, users have to provide the +tiboot3.bin name using BR2_TARGET_TI_K3_R5_LOADER_TIBOOT3_BIN. + +[1]: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1210443/faq-am625-generating-sitara-am62x-am62ax-am64x-gp-device-bootable-mmc-sd-card-images-using-sdk-v8-6-and-yocto + +Build: + +$ make + +To copy the resultimg output image file to an SD card use dd: + +$ dd if=output/images/sdcard.img of=/dev/sdX bs=1M + +How to Run +========== + +Insert the SD card into the SK-AM62 board, and power it up through the +USB Type-C connector. The system should come up. You can use a +micro-USB cable to connect to the connector labeled UART to +communicate with the board. diff --git a/board/ti/am64x-sk/genimage.cfg b/board/ti/am64x-sk/genimage.cfg new file mode 100644 index 00000000..88dff8fe --- /dev/null +++ b/board/ti/am64x-sk/genimage.cfg @@ -0,0 +1,32 @@ +image boot.vfat { + vfat { + files = { + "tiboot3.bin", + "tispl.bin", + "u-boot.img", + "k3-am642-sk.dtb", + "Image" + } + file extlinux/extlinux.conf { + image = extlinux.conf + } + } + + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/ti/am64x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/ti/am64x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 00000000..d68ac4bd --- /dev/null +++ b/board/ti/am64x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 d7194687d13335f832a48c1b87ad4f15ffb983365ca2aba4afda57843fb01cb6 arm-trusted-firmware-lts-v2.10.4-git4.tar.gz diff --git a/board/ti/am64x-sk/patches/linux-headers/linux-headers.hash b/board/ti/am64x-sk/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/ti/am64x-sk/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/ti/am64x-sk/patches/linux/0001-clk-keystone-sci-clk-Adding-support-for-non-contiguo.patch b/board/ti/am64x-sk/patches/linux/0001-clk-keystone-sci-clk-Adding-support-for-non-contiguo.patch new file mode 100644 index 00000000..788b6439 --- /dev/null +++ b/board/ti/am64x-sk/patches/linux/0001-clk-keystone-sci-clk-Adding-support-for-non-contiguo.patch @@ -0,0 +1,75 @@ +From 750cdf4cb6791c45d479ed73a97728100394fb32 Mon Sep 17 00:00:00 2001 +From: Udit Kumar +Date: Tue, 13 Feb 2024 13:56:40 +0530 +Subject: [PATCH] clk: keystone: sci-clk: Adding support for non contiguous + clocks +X-Developer-Signature: v=1; a=openpgp-sha256; l=1876; i=bb@ti.com; + h=from:subject; bh=CKSvD6FpqwRzx8blynhoCEc3XUR5TlwjFJdcgjQwpgg=; + b=owNCWmg5MUFZJlNZHYzOLwAAZP/////7puP/r7v/9q9s+8t7wa8/97UZO//d+XvPsvfv2/+wA + RsYHaQAAAAAAAAGg09IPUGmgAaAANBoAAAGmnqAPU9Q0DQ0HqMQDQ8ptTeqeogaABoPU0NAPUAA + 0GgDJ6gANAAMg0GmgNGgDEGh6jR6h6hp6mgepoPU2oDTIGho0IaHqA00yDQNBoGTRoDTRkAZNAD + AmTIBkGjIGmQyAZDRkAaANAYIxBk0DQAAHODcFn1CAGBsJeG8ZtU3FQCBdLH7LjDIouHeAszY1j + AFkqjaWIFXEVi8NV3giRplb1JjCYunXimTaK06SgQRYsUGRSbKOVQP2t1LlAYS93QjOMWF6CHXK + 69KzHyBDpXR2mHAAkHcHX0X3SAYJkxPElwJ1ZnHK1RfDKRfJcRQKzxnryM+4x2mCxpIFIIjpVLk + nItd1Vl1SEF2QiWZIYV4b0lawcUqLGgTQZ0+qpJ5QORYrvPXE4DR89JlJYBU4DjxAoyACH6KN0o + AiaknqZTfMwmF8iREpU4SgDEVun3X3OFlkBp3hBO+Ynb12GJoLSFBSz9IWE2ooLKFalh5XJMZfl + +GthEEOnlrMQHOF8qCr+JAKqXEqSrwLGuEIMFbnGEjJYruo4ENGOmGVlkvW+kLRp5ibCXAAcDMM + TPOUZ/i7kinChIDsZnF4A== +X-Developer-Key: i=bb@ti.com; a=openpgp; + fpr=D3D177E40A38DF4D1853FEEF41B90D5D71D56CE0 + +Most of clocks and their parents are defined in contiguous range, +But in few cases, there is gap in clock numbers[0]. +Driver assumes clocks to be in contiguous range, and add their clock +ids incrementally. + +New firmware started returning error while calling get_freq and is_on +API for non-available clock ids. + +In this fix, driver checks and adds only valid clock ids. + +[0] https://software-dl.ti.com/tisci/esd/latest/5_soc_doc/j7200/clocks.html +Section Clocks for NAVSS0_CPTS_0 Device, clock id 12-15 not present. + +Fixes: 3c13933c6033 ("clk: keystone: sci-clk: add support for dynamically probing clocks") +Signed-off-by: Udit Kumar +Reviewed-by: Nishanth Menon +Upstream: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ad3ac13c6ec318b43e769cc9ffde67528e58e555 +Signed-off-by: Bryan Brattlof +--- + drivers/clk/keystone/sci-clk.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/drivers/clk/keystone/sci-clk.c b/drivers/clk/keystone/sci-clk.c +index 35fe197dd303c..eb2ef44869b23 100644 +--- a/drivers/clk/keystone/sci-clk.c ++++ b/drivers/clk/keystone/sci-clk.c +@@ -516,6 +516,7 @@ static int ti_sci_scan_clocks_from_dt(struct sci_clk_provider *provider) + struct sci_clk *sci_clk, *prev; + int num_clks = 0; + int num_parents; ++ bool state; + int clk_id; + const char * const clk_names[] = { + "clocks", "assigned-clocks", "assigned-clock-parents", NULL +@@ -586,6 +587,15 @@ static int ti_sci_scan_clocks_from_dt(struct sci_clk_provider *provider) + clk_id = args.args[1] + 1; + + while (num_parents--) { ++ /* Check if this clock id is valid */ ++ ret = provider->ops->is_auto(provider->sci, ++ sci_clk->dev_id, clk_id, &state); ++ ++ if (ret) { ++ clk_id++; ++ continue; ++ } ++ + sci_clk = devm_kzalloc(dev, + sizeof(*sci_clk), + GFP_KERNEL); + +base-commit: 9fbb5fcb41e7e96fb8769a9f5a12a35a984c23bd +-- +2.43.2 + diff --git a/board/ti/am64x-sk/patches/linux/linux.hash b/board/ti/am64x-sk/patches/linux/linux.hash new file mode 100644 index 00000000..2e9aad39 --- /dev/null +++ b/board/ti/am64x-sk/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1c4cdcb9d560fad1fb95db2cb8afbedc922f9ead848371fe40363b13f9f631ba linux-6.8.8.tar.xz diff --git a/board/ti/am64x-sk/patches/ti-k3-r5-loader/ti-k3-r5-loader.hash b/board/ti/am64x-sk/patches/ti-k3-r5-loader/ti-k3-r5-loader.hash new file mode 100644 index 00000000..97a2b4ea --- /dev/null +++ b/board/ti/am64x-sk/patches/ti-k3-r5-loader/ti-k3-r5-loader.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/board/ti/am64x-sk/patches/uboot/uboot.hash b/board/ti/am64x-sk/patches/uboot/uboot.hash new file mode 100644 index 00000000..97a2b4ea --- /dev/null +++ b/board/ti/am64x-sk/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/board/ti/am64x-sk/readme.txt b/board/ti/am64x-sk/readme.txt new file mode 100644 index 00000000..73215cb5 --- /dev/null +++ b/board/ti/am64x-sk/readme.txt @@ -0,0 +1,50 @@ +Texas Instuments SK-AM64 Test and Development Board + +Description +=========== + +This configuration will build a complete image for the TI SK-AM64 +board: https://www.ti.com/tool/SK-AM64. + +How to Build +============ + +Select the default configuration for the target: + +$ make am64x_sk_defconfig + +Optional: modify the configuration: + +$ make menuconfig + +IMPORTANT: make sure to use the tiboot3 firmware that match with the TI +K3 SoC boot ROM (tiboot3-am64x-{gp/hs-fs/hs}-*.bin) used on the board. + +HS-FS should be the default for all TI AM6x devices but earlier version +of TI starter kit EVMs for AM6x was produced with a GP device. + +See further details on e2e Forum [1] : + + "Unfortunately with this transition any existing GP device based AM62x + (and AM64x) boards will no longer boot with MMC/SD card images generated" + +For such existing GP device based AM64x boards, users have to provide the +tiboot3.bin name using BR2_TARGET_TI_K3_R5_LOADER_TIBOOT3_BIN. + +[1]: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1210443/faq-am625-generating-sitara-am62x-am62ax-am64x-gp-device-bootable-mmc-sd-card-images-using-sdk-v8-6-and-yocto + +Build: + +$ make + +To copy the resultimg output image file to an SD card use dd: + +$ dd if=output/images/sdcard.img of=/dev/sdX bs=1M + +How to Run +========== + +Insert the SD card into the SK-AM62 board, and power it up through the +USB Type-C connector. The system should come up. You can use a +micro-USB cable to connect to the connector labeled DEBUG CONSOLE to +communicate with the board. diff --git a/board/ti/common/am6xx/post-build.sh b/board/ti/common/am6xx/post-build.sh new file mode 100755 index 00000000..d066e28f --- /dev/null +++ b/board/ti/common/am6xx/post-build.sh @@ -0,0 +1,58 @@ +#!/bin/sh -x + +# genimage will need to find the extlinux.conf +# in the binaries directory + +die() { + cat <&2 +Error: $@ + +Usage: ${0} -c -r [-x ] +EOF + exit 1 +} + +o='c:d:l:r:x:' +O='console:,devicetree:,label:,root:,extra-args:' +opts="$(getopt -n "${0##*/}" -o "${o}" -l "${O}" -- "${@}")" +eval set -- "${opts}" +while [ ${#} -gt 0 ]; do + case "${1}" in + (-c|--console) + CONSOLE="${2}"; shift 2 + ;; + (-d|--devicetree) + DEVICETREE="${2}"; shift 2 + ;; + (-l|--label) + LABEL="${2}"; shift 2 + ;; + (-r|--root) + ROOT="${2}"; shift 2 + ;; + (-x|--extra-args) + EXTRA_ARGS="${2}"; shift 2 + ;; + (--) + shift 1; break + ;; + esac +done + +[ -n "${CONSOLE}" ] || die "Missing \`console' argument" +[ -n "${DEVICETREE}" ] || die "Missing \`devicetree' argument" +[ -n "${LABEL}" ] || die "Missing \`label' argument" +[ -n "${ROOT}" ] || die "Missing \`root' argument" +append="console=${CONSOLE} root=${ROOT} rw rootfstype=ext4 rootwait" +if [ -n "${EXTRA_ARGS}" ]; then + append="${append} ${EXTRA_ARGS}" +fi + +mkdir -p "${BINARIES_DIR}" +cat <<-__HEADER_EOF > "${BINARIES_DIR}/extlinux.conf" + label ${LABEL} + kernel /Image + fdtdir / + devicetree /${DEVICETREE} + append ${append} + __HEADER_EOF diff --git a/board/toradex/apalis-imx6/genimage.cfg b/board/toradex/apalis-imx6/genimage.cfg new file mode 100644 index 00000000..a277deca --- /dev/null +++ b/board/toradex/apalis-imx6/genimage.cfg @@ -0,0 +1,15 @@ +# Minimal SD card image for the Toradex Apalis i.MX6 COM +# +# It does not need a boot section for a bootloader since it is booted +# from its internal flash memory (eMMC). + +image sdcard.img { + hdimage { + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + size = 512M + } +} diff --git a/board/toradex/apalis-imx6/patches/linux-headers/linux-headers.hash b/board/toradex/apalis-imx6/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/toradex/apalis-imx6/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/toradex/apalis-imx6/patches/linux/linux.hash b/board/toradex/apalis-imx6/patches/linux/linux.hash new file mode 100644 index 00000000..06972287 --- /dev/null +++ b/board/toradex/apalis-imx6/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 722ece80ee8dbcc04309c89139da8b1df6974e1ab4bb66d04c1906a576fa46fa linux-d899927728beca8357a5b4120b690cb3c1d80844-git4.tar.gz diff --git a/board/toradex/apalis-imx6/patches/uboot/uboot.hash b/board/toradex/apalis-imx6/patches/uboot/uboot.hash new file mode 100644 index 00000000..6132435f --- /dev/null +++ b/board/toradex/apalis-imx6/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f8d3e45d7944c9620ecacbd8f8824db42134c70e3b55efd6dab127bf763e48c2 uboot-30a1208727729dae22cb42f9ba9ba17efe5e6f77-git4.tar.gz diff --git a/board/toradex/apalis-imx6/post-image.sh b/board/toradex/apalis-imx6/post-image.sh new file mode 100755 index 00000000..2b49f9d3 --- /dev/null +++ b/board/toradex/apalis-imx6/post-image.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +GENIMAGE_CFG="$(dirname $0)/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +# copy the uEnv.txt to the output/images directory +cp board/toradex/apalis-imx6/uEnv.txt $BINARIES_DIR/uEnv.txt + +rm -rf "${GENIMAGE_TMP}" + +# generate rootfs.img +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +RET=${?} +exit ${RET} diff --git a/board/toradex/apalis-imx6/readme.txt b/board/toradex/apalis-imx6/readme.txt new file mode 100644 index 00000000..feddad64 --- /dev/null +++ b/board/toradex/apalis-imx6/readme.txt @@ -0,0 +1,53 @@ +Toradex Apalis i.MX6 Computer on Module + +Intro +===== + +The Apalis iMX6 is a small form-factor Computer on Module that comes +in both quad core and dual core versions based on Freescale i.MX6Q and +Freescale i.MX6D SoCs respectively. The Cortex A9 quad core and dual +core CPU peaks at 1 GHz for commercial temperature variant, while the +industrial temperature variant has a peak frequency of 800 MHz. + +https://www.toradex.com/computer-on-modules/apalis-arm-family/freescale-imx-6 + +It supports two carrier boards: + +Apalis Evaluation Board +https://www.toradex.com/products/carrier-boards/apalis-evaluation-board + +Ixora Carrier Board +https://www.toradex.com/products/carrier-boards/ixora-carrier-board + +How to build it +=============== + +Configure Buildroot: + + $ make toradex_apalis_imx6_defconfig + +Compile everything and build the rootfs image: + + $ make + +How to boot the image +===================== + +The board only boots from its internal flash memory eMMC, so the +bootloader image should be copied to it, following the procedures +described in Toradex website. + +http://developer.toradex.com/knowledge-base/flashing-linux-on-imx6-modules + +Buildroot prepares a "sdcard.img" in output/images/ with the kernel +image, device tree and a root filesystem, ready to be dumped on an SD +card. + + $ dd if=output/images/sdcard.img of=/dev/sdX bs=1M + +To boot from the SD card, you should change the U-Boot +environment. Since U-Boot is running from internal eMMC, you will need +to access its command line prompt and manually set the necessary +variables to boot from the external SD card. For convenience, you can +use uEnv.txt provided in output/images/ as a reference to create the +necessary U-Boot variables to boot from the SD card. diff --git a/board/toradex/apalis-imx6/uEnv.txt b/board/toradex/apalis-imx6/uEnv.txt new file mode 100644 index 00000000..96ab80cf --- /dev/null +++ b/board/toradex/apalis-imx6/uEnv.txt @@ -0,0 +1,6 @@ +boot_file=zImage +fdt_file=imx6q-apalis_v1_0-ixora.dtb +sdargs=ip=off root=/dev/mmcblk1p1 rw,noatime rootfstype=ext4 rootwait +sddtbload=ext2load mmc 2:1 ${fdt_addr_r} boot/${fdt_file} +sdkernelload=ext2load mmc 2:1 ${kernel_addr_r} boot/${boot_file} +bootcmd=run setup; setenv bootargs ${defargs} ${sdargs} ${setupargs} ${vidargs}; echo Booting from SD card...; run sddtbload; run sdkernelload; bootz ${kernel_addr_r} - ${fdt_addr_r} diff --git a/board/udoo/common/boot.scr.txt b/board/udoo/common/boot.scr.txt new file mode 100644 index 00000000..7a7d756c --- /dev/null +++ b/board/udoo/common/boot.scr.txt @@ -0,0 +1,7 @@ +setenv finduuid "part uuid mmc 1:1 uuid" +run finduuid +run findfdt +setenv bootargs "console=${console} root=PARTUUID=${uuid} rootwait rootfstype=ext4" +load mmc 1:1 ${fdt_addr} boot/${fdtfile} +load mmc 1:1 ${loadaddr} boot/zImage +bootz ${loadaddr} - ${fdt_addr} diff --git a/board/udoo/common/post-build.sh b/board/udoo/common/post-build.sh new file mode 100755 index 00000000..d3f612f8 --- /dev/null +++ b/board/udoo/common/post-build.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +cp $BINARIES_DIR/boot.scr $TARGET_DIR/boot/boot.scr diff --git a/board/udoo/mx6qdl/patches/linux/0000-udoo-disable-usbh1.patch b/board/udoo/mx6qdl/patches/linux/0000-udoo-disable-usbh1.patch new file mode 100644 index 00000000..d151a40d --- /dev/null +++ b/board/udoo/mx6qdl/patches/linux/0000-udoo-disable-usbh1.patch @@ -0,0 +1,26 @@ +[PATCH] ARM: dts: imx6qdl-udoo: Disable usbh1 to avoid kernel hang + +Currently the kernel hangs when USB Host1 is enabled due to the lack of +support for controlling the USB hub clock and GPIO reset line. + +Peter Chen has made several attempts to fix this problem, but his series +has not been applied yet, so better disable USB host1 for now to avoid +the kernel hang. + +Signed-off-by: Fabio Estevam +--- + +diff --git a/arch/arm/boot/dts/imx6qdl-udoo.dtsi b/arch/arm/boot/dts/imx6qdl-udoo.dtsi +index 828dd20cd27d..c9e122865312 100644 +--- a/arch/arm/boot/dts/imx6qdl-udoo.dtsi ++++ b/arch/arm/boot/dts/imx6qdl-udoo.dtsi +@@ -292,7 +292,8 @@ &usbh1 { + pinctrl-0 = <&pinctrl_usbh>; + vbus-supply = <®_usb_h1_vbus>; + clocks = <&clks IMX6QDL_CLK_CKO>; +- status = "okay"; ++ /* currently USB support causes a kernel hang. Disable it for now */ ++ status = "disabled"; + }; + + &usbotg { diff --git a/board/udoo/mx6qdl/readme.txt b/board/udoo/mx6qdl/readme.txt new file mode 100644 index 00000000..a7ca98cc --- /dev/null +++ b/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/freescale/common/imx/genimage.cfg.template_no_boot_part_spl. diff --git a/board/udoo/neo/patches/linux-headers/linux-headers.hash b/board/udoo/neo/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/udoo/neo/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/udoo/neo/patches/linux/linux.hash b/board/udoo/neo/patches/linux/linux.hash new file mode 100644 index 00000000..b8935a25 --- /dev/null +++ b/board/udoo/neo/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 0ad83b1a1a780a1aad948d55aa55ee63c50c626f2d46910b9d2180028d100a5e linux-6.6.43.tar.xz diff --git a/board/udoo/neo/patches/uboot/uboot.hash b/board/udoo/neo/patches/uboot/uboot.hash new file mode 100644 index 00000000..0bfbf306 --- /dev/null +++ b/board/udoo/neo/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 81b4543227db228c03f8a1bf5ddbc813b0bb8f6555ce46064ef721a6fc680413 u-boot-2022.01.tar.bz2 diff --git a/board/udoo/neo/readme.txt b/board/udoo/neo/readme.txt new file mode 100644 index 00000000..e9f9fbac --- /dev/null +++ b/board/udoo/neo/readme.txt @@ -0,0 +1,68 @@ +MX6X Udoo Neo board +=================== +http://www.udoo.org/udoo-neo/ + +Build: +====== + +To build a minimal support for these boards: + + $ make mx6sx_udoo_neo_defconfig + $ make + +Files created in the output directory: +====================================== + +output/images +. +├── boot.scr +├── imx6sx-udoo-neo-basic.dtb +├── imx6sx-udoo-neo-extended.dtb +├── imx6sx-udoo-neo-full.dtb +├── rootfs.ext2 +├── rootfs.ext4 -> rootfs.ext2 +├── rootfs.tar +├── sdcard.img +├── SPL +├── u-boot.bin +├── u-boot.img +└── zImage + +Creating bootable SD card: +========================== + +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/freescale/common/imx/genimage.cfg.template_no_boot_part_spl. + +Booting: +======== + +Serial console: +--------------- +The Udoo Neo features the serial console "UART1" on the pin header "P7". The +Uart pins are as follows (see board labels): + +pin 46: rx +pin 47: tx + +Baudrate for this board is 115200. + +Login: +------ +Enter 'root' as login user, and the prompt is ready. + +Documentation: +============== + +documentation link: +------------------- +https://www.udoo.org/docs-neo/Introduction/Introduction.html + +forum link: +----------- +https://www.udoo.org/forum/forums/udoo-neo.39/ diff --git a/board/uevm5432/extlinux.conf b/board/uevm5432/extlinux.conf new file mode 100644 index 00000000..50f3cd30 --- /dev/null +++ b/board/uevm5432/extlinux.conf @@ -0,0 +1,4 @@ +label uevm5432-buildroot + kernel /zImage + fdt /omap5-uevm.dtb + append root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait console=ttyO2,115200 diff --git a/board/uevm5432/genimage.cfg b/board/uevm5432/genimage.cfg new file mode 100644 index 00000000..7bb90e19 --- /dev/null +++ b/board/uevm5432/genimage.cfg @@ -0,0 +1,29 @@ +image boot.vfat { + vfat { + files = { + "MLO", + "u-boot.img", + "zImage", + "omap5-uevm.dtb", + "extlinux" + } + } + + size = 8M +} + +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/board/uevm5432/post-build.sh b/board/uevm5432/post-build.sh new file mode 100755 index 00000000..f90f76d8 --- /dev/null +++ b/board/uevm5432/post-build.sh @@ -0,0 +1,6 @@ +#!/bin/sh +set -e + +BOARD_DIR="$(dirname "$0")" + +install -m 0644 -D "$BOARD_DIR"/extlinux.conf "$BINARIES_DIR"/extlinux/extlinux.conf diff --git a/board/uevm5432/readme.txt b/board/uevm5432/readme.txt new file mode 100644 index 00000000..4569fbd8 --- /dev/null +++ b/board/uevm5432/readme.txt @@ -0,0 +1,40 @@ +OMAP5432 uEVM +============= + +This file documents the Buildroot support for the OMAP5432 uEVM[1], a +single-board computer development platform based on the Texas Instruments +OMAP5432 system on a chip (SoC). + +How to build +============ + + $ make uevm5432_defconfig + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sync + +Where /dev/sdX is the device node of your SD card (may be /dev/mmcblkX instead +depending on setup). + +To boot from SD card, set the SYSBOOT switches S1 of your OMAP5432 uEVM to the +following position: + + ON x x + x x + 1 2 3 4 + +Insert the micro SDcard in your OMAP5432 uEVM, and power it up with the POWER +ON push button switch S3. The console is on the micro USB Debug UART, with +serial settings 115200 8N1. Refer also to the quick start guide[2]. + +[1]: https://svtronics.com/5432 +[2]: https://www.ti.com/lit/ug/swcu131/swcu131.pdf diff --git a/board/versal/genimage.cfg b/board/versal/genimage.cfg new file mode 100644 index 00000000..d994d3a2 --- /dev/null +++ b/board/versal/genimage.cfg @@ -0,0 +1,30 @@ +image boot.vfat { + vfat { + files = { + "boot.bin", + "system.dtb", + "Image" + } + file extlinux/extlinux.conf { + image = extlinux.conf + } + } + + 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/board/versal/post-build.sh b/board/versal/post-build.sh new file mode 100755 index 00000000..faa75a0d --- /dev/null +++ b/board/versal/post-build.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# genimage will need to find the extlinux.conf +# in the binaries directory + +CONSOLE="$2" +ROOT="$3" + +mkdir -p "${BINARIES_DIR}" +cat <<-__HEADER_EOF > "${BINARIES_DIR}/extlinux.conf" + label linux + kernel /Image + devicetree /system.dtb + append console=${CONSOLE} root=/dev/${ROOT} rw rootwait + __HEADER_EOF diff --git a/board/versal/post-image.sh b/board/versal/post-image.sh new file mode 100755 index 00000000..22367d50 --- /dev/null +++ b/board/versal/post-image.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +# By default U-Boot loads DTB from a file named "system.dtb", so +# let's use a symlink with that name that points to the *first* +# devicetree listed in the config. + +FIRST_DT=$(sed -nr \ + -e 's|^BR2_LINUX_KERNEL_INTREE_DTS_NAME="(xilinx/)?([-_/[:alnum:]\\.]*).*"$|\2|p' \ + "${BR2_CONFIG}") + +[ -z "${FIRST_DT}" ] || ln -fs "${FIRST_DT}.dtb" "${BINARIES_DIR}/system.dtb" + +BOARD_DIR="$(dirname "$0")" + +mkdir -p "${BINARIES_DIR}" +cat <<-__HEADER_EOF > "${BINARIES_DIR}/bootgen.bif" + the_ROM_image: + { + image { + { type=bootimage, file=${BINARIES_DIR}/vpl_gen_fixed.pdi } + { type=bootloader, file=${BINARIES_DIR}/plm.elf } + { core=psm, file=${BINARIES_DIR}/psmfw.elf } + } + image { + id = 0x1c000000, name=apu_subsystem + { type=raw, load=0x00001000, file=${BINARIES_DIR}/u-boot.dtb } + { core=a72-0, exception_level=el-3, trustzone, file=${BINARIES_DIR}/bl31.elf } + { core=a72-0, exception_level=el-2, file=${BINARIES_DIR}/u-boot.elf } + } + } + __HEADER_EOF + +"${HOST_DIR}/bin/bootgen" -arch versal -image "${BINARIES_DIR}/bootgen.bif" -o "${BINARIES_DIR}/boot.bin" -w on +support/scripts/genimage.sh -c "${BOARD_DIR}/genimage.cfg" diff --git a/board/versal/readme.txt b/board/versal/readme.txt new file mode 100644 index 00000000..9cf499b3 --- /dev/null +++ b/board/versal/readme.txt @@ -0,0 +1,58 @@ +This document describes the Buildroot support for the following +Xilinx Versal boards: + +****************************************** +Supported Versal Boards: +Xilinx VCK190 board +Xilinx VPK180 board +****************************************** + +Evaluation board features can be found here with the links below. + +VCK190: +https://www.xilinx.com/products/boards-and-kits/vck190.html + +VPK180: +https://www.xilinx.com/products/boards-and-kits/vpk180.html + + +How to build it +=============== + +Configure Buildroot: + + $ make versal_vck190_defconfig + +Compile everything and build the rootfs image: + + $ make + +Result of the build +------------------- + +After building, you should get a tree like this: + + output/images/ + +-- boot.bin + +-- boot.vfat + +-- Image + +-- rootfs.ext2 + +-- rootfs.ext4 -> rootfs.ext2 + +-- sdcard.img + +-- system.dtb -> versal-vck190-rev1.1.dtb + `-- versal-vck190-rev1.1.dtb + +How to write the SD card +======================== + +WARNING! This will destroy all the card content. Use with care! + +The sdcard.img file is a complete bootable image ready to be written +on the boot medium. To install it, simply copy the image to an SD +card: + + # dd if=output/images/sdcard.img of=/dev/sdX + +Where 'sdX' is the device node of the SD. + +Eject the SD card, insert it in the board, and power it up. diff --git a/board/visionfive/genimage.cfg b/board/visionfive/genimage.cfg new file mode 100644 index 00000000..433387c9 --- /dev/null +++ b/board/visionfive/genimage.cfg @@ -0,0 +1,21 @@ +# Minimal SD card image for the Starfive VisionFive board + +image sdcard.img { + hdimage { + } + + # u-boot is hard coded to look at 3rd partition + partition dummy1 { + size = 512 + } + + partition dummy2 { + size = 512 + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + bootable = "true" + } +} diff --git a/board/visionfive/overlay/boot/extlinux/extlinux.conf b/board/visionfive/overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..44ac6f79 --- /dev/null +++ b/board/visionfive/overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +label linux + kernel /boot/Image + devicetree /boot/jh7100-starfive-visionfive-v1.dtb + append console=ttyS0,115200 root=/dev/mmcblk0p3 diff --git a/board/visionfive/overlay/boot/uEnv.txt b/board/visionfive/overlay/boot/uEnv.txt new file mode 100644 index 00000000..b831d2d2 --- /dev/null +++ b/board/visionfive/overlay/boot/uEnv.txt @@ -0,0 +1,15 @@ +fdt_high=0xffffffffffffffff +initrd_high=0xffffffffffffffff + +scriptaddr=0x88100000 +script_offset_f=0x1fff000 +script_size_f=0x1000 + +kernel_addr_r=0x84000000 +kernel_comp_addr_r=0x90000000 +kernel_comp_size=0x10000000 + +fdt_addr_r=0x88000000 +ramdisk_addr_r=0x88300000 + +bootcmd=devnum=0; run mmc_boot diff --git a/board/visionfive/readme.txt b/board/visionfive/readme.txt new file mode 100644 index 00000000..7aefa241 --- /dev/null +++ b/board/visionfive/readme.txt @@ -0,0 +1,32 @@ +Starfive VisionFive +=================== + +The VisionFive is a low-cost RISC-V 64-bit based platform, powered by a +Starfive JH7100 processor. + +https://doc-en.rvspace.org/Doc_Center/visionfive.html + +How to build +============ + +$ make visionfive_defconfig +$ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Preparing the board +=================== + +Connect a TTL UART cable to pin 6 (GND), 8 (TX) and 10 (RX). + +Insert your SD card. + +Power-up the board using an USB-C cable. diff --git a/board/visionfive2/genimage.cfg b/board/visionfive2/genimage.cfg new file mode 100644 index 00000000..8133e740 --- /dev/null +++ b/board/visionfive2/genimage.cfg @@ -0,0 +1,23 @@ +# Minimal SD card image for the Starfive VisionFive2 board + +image sdcard.img { + hdimage { + partition-table-type = "gpt" + } + + partition spl { + partition-type-uuid = 2E54B353-1271-4842-806F-E436D6AF6985 + image = "u-boot-spl.bin.normal.out" + } + + partition uboot { + partition-type-uuid = BC13C2FF-59E6-4262-A352-B275FD6F7172 + image = "u-boot.itb" + } + + partition rootfs { + partition-type-uuid = 0FC63DAF-8483-4772-8E79-3D69D8477DE4 + bootable = true + image = "rootfs.ext4" + } +} diff --git a/board/visionfive2/genimage_spi-nor.cfg b/board/visionfive2/genimage_spi-nor.cfg new file mode 100644 index 00000000..8b1d1398 --- /dev/null +++ b/board/visionfive2/genimage_spi-nor.cfg @@ -0,0 +1,36 @@ +flash nor-16M-256 { + pebsize = 4K + minimum-io-unit-size = 256 + numpebs = 4096 +} + +image spi-nor.img { + size = 16M + + flash { + } + + flashtype = "nor-16M-256" + + partition spl { + image = "u-boot-spl.bin.normal.out" + offset = 0K + size = 512K + } + + partition uboot-env { + offset = 960K + size = 64K + } + + partition uboot { + image = "u-boot.itb" + offset = 1M + size = 4M + } + + partition reserved-data { + offset = 6M + size = 10M + } +} diff --git a/board/visionfive2/linux_defconfig b/board/visionfive2/linux_defconfig new file mode 100644 index 00000000..d6d1a652 --- /dev/null +++ b/board/visionfive2/linux_defconfig @@ -0,0 +1,234 @@ +CONFIG_SYSVIPC=y +# CONFIG_CROSS_MEMORY_ATTACH is not set +CONFIG_NO_HZ_IDLE=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_PSI=y +# CONFIG_CPU_ISOLATION is not set +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_CGROUPS=y +CONFIG_CGROUP_SCHED=y +CONFIG_CGROUP_PIDS=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_NAMESPACES=y +CONFIG_BLK_DEV_INITRD=y +# CONFIG_RD_BZIP2 is not set +# CONFIG_RD_LZMA is not set +# CONFIG_RD_XZ is not set +# CONFIG_RD_LZO is not set +# CONFIG_RD_LZ4 is not set +CONFIG_EXPERT=y +# CONFIG_SYSFS_SYSCALL is not set +CONFIG_PERF_EVENTS=y +CONFIG_SOC_STARFIVE=y +CONFIG_ERRATA_SIFIVE=y +CONFIG_NONPORTABLE=y +CONFIG_SMP=y +# CONFIG_RISCV_ISA_SVPBMT is not set +# CONFIG_COMPAT is not set +CONFIG_HIBERNATION=y +CONFIG_CPU_IDLE=y +CONFIG_RISCV_SBI_CPUIDLE=y +CONFIG_CPU_FREQ=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_CPU_FREQ_GOV_SCHEDUTIL=y +CONFIG_CPUFREQ_DT=y +CONFIG_JUMP_LABEL=y +# CONFIG_STACKPROTECTOR is not set +# CONFIG_GCC_PLUGINS is not set +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_COMPRESS_ZSTD=y +# CONFIG_BLOCK_LEGACY_AUTOLOAD is not set +CONFIG_BLK_WBT=y +# CONFIG_BLK_DEBUG_FS is not set +CONFIG_PARTITION_ADVANCED=y +# CONFIG_MQ_IOSCHED_DEADLINE is not set +# CONFIG_MQ_IOSCHED_KYBER is not set +CONFIG_KSM=y +# CONFIG_VM_EVENT_COUNTERS is not set +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_PNP=y +CONFIG_INET_DIAG=m +# CONFIG_IPV6_SIT is not set +CONFIG_IPV6_MULTIPLE_TABLES=y +# CONFIG_WIRELESS is not set +# CONFIG_ETHTOOL_NETLINK is not set +CONFIG_PCI=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCI_HOST_GENERIC=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_STANDALONE is not set +# CONFIG_PREVENT_FIRMWARE_BUILD is not set +CONFIG_FW_LOADER=m +CONFIG_SIFIVE_CCACHE=y +CONFIG_EFI_DISABLE_RUNTIME=y +CONFIG_MTD=y +CONFIG_MTD_SPI_NOR=y +CONFIG_ZRAM=y +CONFIG_ZRAM_MEMORY_TRACKING=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=1 +CONFIG_BLK_DEV_NVME=y +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SR=y +CONFIG_NETDEVICES=y +CONFIG_STMMAC_ETH=y +CONFIG_DWMAC_DWC_QOS_ETH=y +# CONFIG_DWMAC_GENERIC is not set +CONFIG_DWMAC_STARFIVE=y +CONFIG_MICROCHIP_PHY=y +CONFIG_MOTORCOMM_PHY=y +# CONFIG_WLAN is not set +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_SERIO is not set +# CONFIG_VT is not set +# CONFIG_LEGACY_PTYS is not set +# CONFIG_LDISC_AUTOLOAD is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +# CONFIG_SERIAL_8250_16550A_VARIANTS is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=6 +CONFIG_SERIAL_8250_RUNTIME_UARTS=6 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_DW=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_JH7110=y +# CONFIG_I2C_COMPAT is not set +CONFIG_I2C_CHARDEV=y +# CONFIG_I2C_HELPER_AUTO is not set +CONFIG_I2C_DESIGNWARE_PLATFORM=y +CONFIG_SPI=y +CONFIG_SPI_CADENCE_QUADSPI=y +CONFIG_SPI_PL022=y +CONFIG_SPI_SPIDEV=y +# CONFIG_PTP_1588_CLOCK is not set +CONFIG_GPIOLIB_FASTPATH_LIMIT=128 +CONFIG_GPIO_SYSFS=y +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_GPIO_RESTART=y +CONFIG_SENSORS_SFCTEMP=y +CONFIG_THERMAL=y +CONFIG_CPU_THERMAL=y +CONFIG_THERMAL_EMULATION=y +CONFIG_WATCHDOG=y +CONFIG_MFD_AXP20X_I2C=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_AXP20X=y +CONFIG_MEDIA_SUPPORT=y +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_VIDEO_CADENCE_CSI2RX=y +CONFIG_VIDEO_IMX219=y +CONFIG_DRM=y +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_SOC=y +CONFIG_SND_DESIGNWARE_I2S=y +CONFIG_SND_SOC_STARFIVE=y +CONFIG_SND_SOC_JH7110_PWMDAC=y +CONFIG_SND_SOC_JH7110_TDM=y +CONFIG_SND_SOC_WM8960=y +CONFIG_SND_SIMPLE_CARD=y +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_STORAGE=y +CONFIG_USB_UAS=y +CONFIG_USB_CDNS_SUPPORT=y +CONFIG_USB_CDNS3=y +CONFIG_USB_CDNS3_GADGET=y +CONFIG_USB_CDNS3_HOST=y +CONFIG_USB_CDNS3_STARFIVE=y +CONFIG_USB_GADGET=y +CONFIG_USB_CONFIGFS=y +CONFIG_USB_CONFIGFS_F_FS=y +CONFIG_MMC=y +# CONFIG_PWRSEQ_EMMC is not set +# CONFIG_PWRSEQ_SIMPLE is not set +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SDHCI_OF_DWCMSHC=y +CONFIG_MMC_DW=y +CONFIG_MMC_DW_STARFIVE=y +CONFIG_DMADEVICES=y +CONFIG_AMBA_PL08X=y +CONFIG_DW_AXI_DMAC=y +CONFIG_DMATEST=y +# CONFIG_VIRTIO_MENU is not set +# CONFIG_VHOST_MENU is not set +CONFIG_STAGING=y +CONFIG_STAGING_MEDIA=y +CONFIG_VIDEO_STARFIVE_CAMSS=y +CONFIG_CLK_STARFIVE_JH7110_AON=y +CONFIG_CLK_STARFIVE_JH7110_STG=y +CONFIG_CLK_STARFIVE_JH7110_ISP=y +CONFIG_CLK_STARFIVE_JH7110_VOUT=y +# CONFIG_IOMMU_SUPPORT is not set +CONFIG_PWM=y +CONFIG_PHY_STARFIVE_JH7110_DPHY_RX=y +CONFIG_PHY_STARFIVE_JH7110_PCIE=y +CONFIG_PHY_STARFIVE_JH7110_USB=y +CONFIG_EXT4_FS=y +CONFIG_BTRFS_FS=y +CONFIG_BTRFS_FS_POSIX_ACL=y +# CONFIG_DNOTIFY is not set +CONFIG_FANOTIFY=y +CONFIG_AUTOFS_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_UTF8=y +CONFIG_EXFAT_FS=y +CONFIG_NTFS_FS=y +CONFIG_NTFS_RW=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_CHILDREN=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_EFIVAR_FS=y +CONFIG_JFFS2_FS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V4=y +CONFIG_NFS_V4_1=y +CONFIG_NFS_V4_2=y +CONFIG_ROOT_NFS=y +CONFIG_NLS_DEFAULT="iso8859-15" +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ISO8859_15=y +CONFIG_LSM="" +CONFIG_CRYPTO_ZSTD=y +# CONFIG_RAID6_PQ_BENCHMARK is not set +# CONFIG_DEBUG_MISC is not set +CONFIG_STRIP_ASM_SYMS=y +CONFIG_DEBUG_SECTION_MISMATCH=y +# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set +CONFIG_DEBUG_FS=y +# CONFIG_SLUB_DEBUG is not set +CONFIG_DEBUG_RODATA_TEST=y +CONFIG_DEBUG_WX=y +CONFIG_SOFTLOCKUP_DETECTOR=y +CONFIG_WQ_WATCHDOG=y +# CONFIG_SCHED_DEBUG is not set +CONFIG_STACKTRACE=y +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +# CONFIG_RCU_TRACE is not set +# CONFIG_FTRACE is not set +# CONFIG_RUNTIME_TESTING_MENU is not set diff --git a/board/visionfive2/overlay/boot/extlinux/extlinux.conf b/board/visionfive2/overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..fd772f36 --- /dev/null +++ b/board/visionfive2/overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +label linux + kernel /boot/Image + devicetree /boot/jh7110-starfive-visionfive-2-v1.3b.dtb + append console=ttyS0,115200 root=/dev/mmcblk1p3 diff --git a/board/visionfive2/patches/linux-headers/linux-headers.hash b/board/visionfive2/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/visionfive2/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/visionfive2/patches/linux/linux.hash b/board/visionfive2/patches/linux/linux.hash new file mode 100644 index 00000000..ccad8068 --- /dev/null +++ b/board/visionfive2/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9ac322d85bcf98a04667d929f5c2666b15bd58c6c2d68dd512c72acbced07d04 linux-6.8.2.tar.xz diff --git a/board/visionfive2/patches/opensbi/opensbi.hash b/board/visionfive2/patches/opensbi/opensbi.hash new file mode 100644 index 00000000..bc4058ab --- /dev/null +++ b/board/visionfive2/patches/opensbi/opensbi.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 319b62a4186fbce9b81a0c5f0ec9f003a10c808397a72138bc9745d9b87b1eb1 opensbi-1.4.tar.gz diff --git a/board/visionfive2/patches/uboot/uboot.hash b/board/visionfive2/patches/uboot/uboot.hash new file mode 100644 index 00000000..97a2b4ea --- /dev/null +++ b/board/visionfive2/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/board/visionfive2/post-image.sh b/board/visionfive2/post-image.sh new file mode 100755 index 00000000..3da106dc --- /dev/null +++ b/board/visionfive2/post-image.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +support/scripts/genimage.sh -c board/visionfive2/genimage.cfg +support/scripts/genimage.sh -c board/visionfive2/genimage_spi-nor.cfg diff --git a/board/visionfive2/readme.txt b/board/visionfive2/readme.txt new file mode 100644 index 00000000..cc4fece6 --- /dev/null +++ b/board/visionfive2/readme.txt @@ -0,0 +1,56 @@ +Starfive VisionFive2 +==================== + +The VisionFive2 is a low-cost RISC-V 64-bit based platform, powered by a +Starfive JH7110 processor. + +https://doc-en.rvspace.org/Doc_Center/visionfive_2.html + +How to build +============ + +$ make visionfive2_defconfig +$ make + +Once the build process is finished you will have two images +in the output/images/ directory: +- sdcard.img +- spi-nor.img + +How to write the SPI NOR flash +============================= + +If you have a booting device use u-boot and tftp: + + # tftpboot 0x82000000 spi-nor.img + # sf probe + # sf update 0x82000000 0x0 {filesize} + +Otherwise, follow the recovery instruction: + +https://doc-en.rvspace.org/VisionFive2/Quick_Start_Guide/VisionFive2_SDK_QSG/recovering_bootloader%20-%20vf2.html + +How to write the SD card +======================== + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Preparing the board +=================== + +Connect a TTL UART cable to pin 6 (GND), 8 (TX) and 10 (RX). + +Use the correct mode for booting: +- SD card RGPIO_0=1, GRPIO_1=0 +- SPI NOR flash RGPIO_0=1, GRPIO_1=1 + +Note that Buildroot puts the bootloader both in SPI NOR and on the SD card, +so after flashing as instructed above, either boot mode should work. + +https://doc-en.rvspace.org/VisionFive2/Quick_Start_Guide/VisionFive2_SDK_QSG/boot_mode_settings.html + +Insert your SD card. + +Power-up the board using an USB-C cable. diff --git a/board/wandboard/readme.txt b/board/wandboard/readme.txt new file mode 100644 index 00000000..adc4e5c1 --- /dev/null +++ b/board/wandboard/readme.txt @@ -0,0 +1,14 @@ +Wandboard + +http://www.wandboard.org + +To build a minimal support for this board: + + $ make wandboard_defconfig + $ make + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on an SD card. + +For details about the medium image layout, see the definition in +board/wandboard/genimage.cfg. diff --git a/board/wandboard/rootfs_overlay/boot/extlinux/extlinux.conf b/board/wandboard/rootfs_overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..e3b90660 --- /dev/null +++ b/board/wandboard/rootfs_overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +Label imx6qdl-wandboard Buildroot + kernel ../zImage + fdtdir ../ + append root=PARTUUID=${uuid} rootwait rw console=${console},${baudrate} diff --git a/board/warp7/readme.txt b/board/warp7/readme.txt new file mode 100644 index 00000000..aff7a601 --- /dev/null +++ b/board/warp7/readme.txt @@ -0,0 +1,118 @@ +***************** +Warp i.MX7S board +***************** + +This file documents the Buildroot support for the Warp i.MX7S board. + +Build +===== + +First, configure Buildroot for the Warp i.MX7S board: + + make warp7_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - imx7s-warp.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot-dtb.imx + - zImage + +Flash the eMMC image +==================== + +In the U-Boot prompt lauch: + +=> ums 0 mmc 0 + +This will mount the eMMC content in the host PC as a mass storage device. + +To determine the device associated to the eMMC have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped into the eMMC. Launch the following +command: + +sudo dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the eMMC content. Use it with care! *** + +For details about the medium image layout, see the definition in +board/warp7/genimage.cfg. + +How to recover from a bad eMMC image +==================================== + +In case a bad U-Boot has been flashed to the eMMC and the board no +longer boots, it is possible to recover using the imx_usb_loader utility. + +Put the warp7 board in USB download mode by removing the CPU board +from the base board then putting switch 2 in the upper position. + +Connect a USB to serial adapter between the host PC and warp7 serial +USB port, and also a USB cable between the OTG warp7 port and the host +PC. + +Copy u-boot-dtb.imx to the imx_usb_loader folder. + +Load u-boot-dtb.imx via USB: + +$ sudo ./imx_usb u-boot-dtb.imx + +Then U-Boot should start and its messages will appear in the console program. + +Open a terminal program such as minicom. + +Use the default environment variables: + +=> env default -f -a +=> saveenv + +Run the DFU command: +=> dfu 0 mmc 0 + +Transfer u-boot-dtb.imx that will be flashed into the eMMC: + +$ sudo dfu-util -D u-boot-dtb.imx -a boot + +Then on the U-Boot prompt the following message should be seen after a +successful upgrade: + +#DOWNLOAD ... OK +Ctrl+C to exit ... + +=> ums 0 mmc 0 + +sudo dd if=output/images/sdcard.img of=/dev/ + +Put warp7 back in eMMC boot mode by placing switch 2 in the lower position +and reboot the board. + +Boot the Warp i.MX7S board +========================== + +To boot your newly created system: +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Using Wifi +========== + +# modprobe brcmfmac +# iwconfig wlan0 essid ACCESSPOINTNAME +# wpa_passphrase ACCESSPOINTNAME > /etc/wpa.conf +(enter the wifi password and press enter) +# wpa_supplicant -Dwext -iwlan0 -c /etc/wpa.conf & +# udhcpc -i wlan0 +# ping buildroot.org + +Enjoy! diff --git a/board/warp7/rootfs_overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt b/board/warp7/rootfs_overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt new file mode 100644 index 00000000..a1dc2035 --- /dev/null +++ b/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/board/xilinx/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/xilinx/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 00000000..e3003985 --- /dev/null +++ b/board/xilinx/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c3369c89eab4e452bbc76c630e5dccb6c0ae588c0175b6c8549aa0241deb06ef xlnx_rebase_v2.10_2024.1.tar.gz diff --git a/board/xilinx/patches/linux-headers/linux-headers.hash b/board/xilinx/patches/linux-headers/linux-headers.hash new file mode 120000 index 00000000..5808d92a --- /dev/null +++ b/board/xilinx/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/xilinx/patches/linux/linux.hash b/board/xilinx/patches/linux/linux.hash new file mode 100644 index 00000000..d85f7734 --- /dev/null +++ b/board/xilinx/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 ea85988e66b9a2e19ccd76d0f5f5e657988a873fed292160917712f45605a805 xlnx_rebase_v6.6_LTS_2024.1.tar.gz diff --git a/board/xilinx/patches/uboot/uboot.hash b/board/xilinx/patches/uboot/uboot.hash new file mode 100644 index 00000000..a5ab9fae --- /dev/null +++ b/board/xilinx/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 58e391a001d9d8ed347ab3258ff7c8435c866b1ff2b2c22ebc95af592444c0f5 xlnx_rebase_v2024.01_2024.1.tar.gz diff --git a/board/xilinx/patches/xilinx-prebuilt/xilinx-prebuilt.hash b/board/xilinx/patches/xilinx-prebuilt/xilinx-prebuilt.hash new file mode 100644 index 00000000..c955cd79 --- /dev/null +++ b/board/xilinx/patches/xilinx-prebuilt/xilinx-prebuilt.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 7abcba4e0e44e3a4adf9c1f971d918575226d7604dfd64a386baaa00c1c6c35f xilinx-prebuilt-xilinx_v2024.1.tar.gz diff --git a/board/zynq/extlinux.conf b/board/zynq/extlinux.conf new file mode 100644 index 00000000..3c2ab4f4 --- /dev/null +++ b/board/zynq/extlinux.conf @@ -0,0 +1,4 @@ +label linux + kernel /uImage + devicetree /system.dtb + append console=ttyPS0,115200 root=/dev/mmcblk0p2 rw rootwait diff --git a/board/zynq/genimage.cfg b/board/zynq/genimage.cfg new file mode 100644 index 00000000..78eb9275 --- /dev/null +++ b/board/zynq/genimage.cfg @@ -0,0 +1,32 @@ +image boot.vfat { + vfat { + files = { + "boot.bin", + "u-boot.img", + "system.dtb", + "uImage" + } + + file extlinux/extlinux.conf { + image = extlinux.conf + } + } + + 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/board/zynq/post-build.sh b/board/zynq/post-build.sh new file mode 100755 index 00000000..810fe998 --- /dev/null +++ b/board/zynq/post-build.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +# genimage will need to find the extlinux.conf +# in the binaries directory + +BOARD_DIR="$(dirname "$0")" + +install -m 0644 -D "${BOARD_DIR}/extlinux.conf" "${BINARIES_DIR}/extlinux.conf" diff --git a/board/zynq/post-image.sh b/board/zynq/post-image.sh new file mode 120000 index 00000000..77518441 --- /dev/null +++ b/board/zynq/post-image.sh @@ -0,0 +1 @@ +../zynqmp/post-image.sh \ No newline at end of file diff --git a/board/zynq/readme.txt b/board/zynq/readme.txt new file mode 100644 index 00000000..b2a4cefe --- /dev/null +++ b/board/zynq/readme.txt @@ -0,0 +1,87 @@ +This is the Buildroot support for Zynq boards. Zynq boards are available from +Xilinx and some third party vendors, but the build procedure is very similar. + +Currently, four boards are natively supported by Buildroot: + - Xilinx ZC702 board (zynq_zc702_defconfig) + - Xilinx ZC706 board (zynq_zc706_defconfig) + - Avnet ZedBoard (zynq_zed_defconfig) + - Avnet MicroZed (zynq_microzed_defconfig) + +Steps to create a working system for a Zynq board: + +1) Configuration (do one of the following) + make zynq_zc702_defconfig (ZC702) + make zynq_zc706_defconfig (ZC706) + make zynq_zed_defconfig (Zedboard) + make zynq_microzed_defconfig (MicroZed) +2) make +3) All needed files will be available in the output/images directory. + The sdcard.img file is a complete bootable image ready to be written + on the boot medium. To install it, simply copy the image to an SD + card: + + # dd if=output/images/sdcard.img of=/dev/sdX + + Where 'sdX' is the device node of the uSD. +4) boot your board + +You can alter the booting procedure by creating a file uEnv.txt +in the root of the SD card. It is a plain text file in format += one per line: + +kernel_image=myimage +modeboot=myboot +myboot=... + +References: + - ZC702 information including schematics, reference designs, and manuals are + available from + https://www.xilinx.com/products/boards-and-kits/ek-z7-zc702-g.html + + - ZC706 information including schematics, reference designs, and manuals are + available from + http://www.xilinx.com/products/boards-and-kits/ek-z7-zc706-g.html. + + - Zedboard/Microzed information including schematics, reference designs, and + manuals are available from http://www.zedboard.org . + +Support for other boards: + +If you want to build a system for other boards based on the same SoC +(for ex. Digilent Zybo board), and the board is already supported by +the upstream kernel and U-Boot, you simply need to change the +following Buildroot options: + + - Kernel Device Tree file name (BR2_LINUX_KERNEL_INTREE_DTS_NAME) + - U-Boot (BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=") + +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/board/zynqmp/genimage.cfg b/board/zynqmp/genimage.cfg new file mode 100644 index 00000000..20d8352c --- /dev/null +++ b/board/zynqmp/genimage.cfg @@ -0,0 +1,31 @@ +image boot.vfat { + vfat { + files = { + "boot.bin", + "u-boot.itb", + "system.dtb", + "Image" + } + file extlinux/extlinux.conf { + image = extlinux.conf + } + } + + 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/board/zynqmp/kria/kd240/kd240.sh b/board/zynqmp/kria/kd240/kd240.sh new file mode 100755 index 00000000..2203536a --- /dev/null +++ b/board/zynqmp/kria/kd240/kd240.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +# This is a temporary work around for generating kd240 u-boot.itb. +# The problem is there is no way to currently configure u-boot to apply +# the carrier board dtb overlay during build, so all kd240 carrier board +# drivers are missing. +# This will be removed when u-boot can build the kd240 u-boot.itb natively. + +UBOOT_DIR="$4" + +fdtoverlay -o "${UBOOT_DIR}/fit-dtb.blob" \ + -i "${UBOOT_DIR}/arch/arm/dts/zynqmp-smk-k24-revA.dtb" \ + "${UBOOT_DIR}/arch/arm/dts/zynqmp-sck-kd-g-revA.dtbo" + +"${UBOOT_DIR}/tools/mkimage" -E -f "${UBOOT_DIR}/u-boot.its" \ + -B 0x8 "${BINARIES_DIR}/u-boot.itb" diff --git a/board/zynqmp/kria/kd240/patches/uboot/0001-arm64-zynqmp-Enable-usb3-for-k24-som.patch b/board/zynqmp/kria/kd240/patches/uboot/0001-arm64-zynqmp-Enable-usb3-for-k24-som.patch new file mode 100644 index 00000000..0cc10d34 --- /dev/null +++ b/board/zynqmp/kria/kd240/patches/uboot/0001-arm64-zynqmp-Enable-usb3-for-k24-som.patch @@ -0,0 +1,81 @@ +From 73c99c29508d7adfe11b6a81f13cf00efab5f9de Mon Sep 17 00:00:00 2001 +From: Neal Frager +Date: Tue, 4 Jun 2024 09:15:23 +0100 +Subject: [PATCH] arm64: zynqmp: Enable usb3 for k24 som + +This patch corrects the mio and pll configuration registers for using usb3 +on the kd240 starter kit. Without this patch, the usb3 to sd card bridge does +not initialize correctly and u-boot is unable to find the OS located on the +kd240 starter kit sd card. + +In addition, this patch correctly configures mio76 and mio77 as gpio pins +which are used as reset gpio pins on the kd240 starter kit. + +Signed-off-by: Neal Frager +Upstream: https://patchwork.ozlabs.org/project/uboot/patch/20240604083854.2033917-1-neal.frager@amd.com/ +--- + .../zynqmp/zynqmp-sm-k24-revA/psu_init_gpl.c | 23 ++++++++----------- + 1 file changed, 10 insertions(+), 13 deletions(-) + +diff --git a/board/xilinx/zynqmp/zynqmp-sm-k24-revA/psu_init_gpl.c b/board/xilinx/zynqmp/zynqmp-sm-k24-revA/psu_init_gpl.c +index 166e61431b..274203ffaa 100644 +--- a/board/xilinx/zynqmp/zynqmp-sm-k24-revA/psu_init_gpl.c ++++ b/board/xilinx/zynqmp/zynqmp-sm-k24-revA/psu_init_gpl.c +@@ -528,8 +528,8 @@ static unsigned long psu_mio_init_data(void) + psu_mask_write(0xFF180124, 0x000000FEU, 0x00000002U); + psu_mask_write(0xFF180128, 0x000000FEU, 0x00000002U); + psu_mask_write(0xFF18012C, 0x000000FEU, 0x00000002U); +- psu_mask_write(0xFF180130, 0x000000FEU, 0x000000C0U); +- psu_mask_write(0xFF180134, 0x000000FEU, 0x000000C0U); ++ psu_mask_write(0xFF180130, 0x000000FEU, 0x00000000U); ++ psu_mask_write(0xFF180134, 0x000000FEU, 0x00000000U); + psu_mask_write(0xFF180204, 0xFFFFFFFFU, 0x50000000U); + psu_mask_write(0xFF180208, 0xFFFFFFFFU, 0x00B02020U); + psu_mask_write(0xFF18020C, 0x00003FFFU, 0x00000FC0U); +@@ -569,21 +569,16 @@ static unsigned long psu_peripherals_init_data(void) + psu_mask_write(0xFD1A0100, 0x0001807CU, 0x00000000U); + psu_mask_write(0xFF5E0238, 0x001A0000U, 0x00000000U); + psu_mask_write(0xFF5E023C, 0x0093C018U, 0x00000000U); +- psu_mask_write(0xFF5E0230, 0x00000008U, 0x00000000U); ++ psu_mask_write(0xFF5E0230, 0x00000002U, 0x00000000U); + psu_mask_write(0xFF5E0238, 0x00000001U, 0x00000000U); + psu_mask_write(0xFF180390, 0x00000004U, 0x00000004U); + psu_mask_write(0xFF5E023C, 0x00000400U, 0x00000000U); +- psu_mask_write(0xFF5E0238, 0x00000040U, 0x00000000U); +- psu_mask_write(0xFF180310, 0x00008000U, 0x00000000U); +- psu_mask_write(0xFF180320, 0x33840000U, 0x02840000U); +- psu_mask_write(0xFF18031C, 0x7FFE0000U, 0x64500000U); +- psu_mask_write(0xFF180358, 0x00000008U, 0x00000008U); +- psu_mask_write(0xFF180324, 0x03C00000U, 0x00000000U); ++ psu_mask_write(0xFF5E0238, 0x00000080U, 0x00000000U); + psu_mask_write(0xFF5E0238, 0x00000400U, 0x00000000U); + psu_mask_write(0xFF5E0238, 0x00008000U, 0x00000000U); + psu_mask_write(0xFF5E0238, 0x00000010U, 0x00000000U); + psu_mask_write(0xFF5E0238, 0x00007800U, 0x00000000U); +- psu_mask_write(0xFF5E0238, 0x00000004U, 0x00000000U); ++ psu_mask_write(0xFF5E0238, 0x00000006U, 0x00000000U); + psu_mask_write(0xFF5E0238, 0x00040000U, 0x00000000U); + psu_mask_write(0xFF4B0024, 0x000000FFU, 0x000000FFU); + psu_mask_write(0xFFCA5000, 0x00001FFFU, 0x00000000U); +@@ -591,13 +586,15 @@ static unsigned long psu_peripherals_init_data(void) + psu_mask_write(0xFFA60040, 0x80000000U, 0x80000000U); + psu_mask_write(0xFF260020, 0xFFFFFFFFU, 0x05F5DD18U); + psu_mask_write(0xFF260000, 0x00000001U, 0x00000001U); +- psu_mask_write(0xFF5E0250, 0x00000F0FU, 0x00000202U); ++ psu_mask_write(0xFF0A0284, 0x03FFFFFFU, 0x01000000U); ++ psu_mask_write(0xFF0A0288, 0x03FFFFFFU, 0x01000000U); ++ psu_mask_write(0xFF0A0014, 0x03FF03FFU, 0x02FF0100U); + + mask_delay(1); +- psu_mask_write(0xFF5E0250, 0x00000F0FU, 0x00000002U); ++ psu_mask_write(0xFF0A0014, 0x03FF03FFU, 0x02FF0000U); + + mask_delay(5); +- psu_mask_write(0xFF5E0250, 0x00000F0FU, 0x00000202U); ++ psu_mask_write(0xFF0A0014, 0x03FF03FFU, 0x02FF0100U); + + return 1; + } +-- +2.25.1 + diff --git a/board/zynqmp/kria/kd240/pm_cfg_obj.c b/board/zynqmp/kria/kd240/pm_cfg_obj.c new file mode 100644 index 00000000..13061ddc --- /dev/null +++ b/board/zynqmp/kria/kd240/pm_cfg_obj.c @@ -0,0 +1,494 @@ +/****************************************************************************** +* Copyright (c) 2017 - 2021 Xilinx, Inc. All rights reserved. +* SPDX-License-Identifier: MIT +******************************************************************************/ + +#include "xil_types.h" +#include "pm_defs.h" + +#define PM_CONFIG_MASTER_SECTION_ID 0x101U +#define PM_CONFIG_SLAVE_SECTION_ID 0x102U +#define PM_CONFIG_PREALLOC_SECTION_ID 0x103U +#define PM_CONFIG_POWER_SECTION_ID 0x104U +#define PM_CONFIG_RESET_SECTION_ID 0x105U +#define PM_CONFIG_SHUTDOWN_SECTION_ID 0x106U +#define PM_CONFIG_SET_CONFIG_SECTION_ID 0x107U +#define PM_CONFIG_GPO_SECTION_ID 0x108U + +#define PM_SLAVE_FLAG_IS_SHAREABLE 0x1U +#define PM_MASTER_USING_SLAVE_MASK 0x2U + +#define PM_CONFIG_GPO1_MIO_PIN_34_MAP (1U << 10U) +#define PM_CONFIG_GPO1_MIO_PIN_35_MAP (1U << 11U) +#define PM_CONFIG_GPO1_MIO_PIN_36_MAP (1U << 12U) +#define PM_CONFIG_GPO1_MIO_PIN_37_MAP (1U << 13U) + +#define PM_CONFIG_GPO1_BIT_2_MASK (1U << 2U) +#define PM_CONFIG_GPO1_BIT_3_MASK (1U << 3U) +#define PM_CONFIG_GPO1_BIT_4_MASK (1U << 4U) +#define PM_CONFIG_GPO1_BIT_5_MASK (1U << 5U) + +#define SUSPEND_TIMEOUT 0xFFFFFFFFU + +#define PM_CONFIG_OBJECT_TYPE_BASE 0x1U + + +#define PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK 0x00000001 +#define PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK 0x00000100 +#define PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK 0x00000200 + + + +#if defined (__ICCARM__) +#pragma language=save +#pragma language=extended +#endif +#if defined (__GNUC__) + const u32 XPm_ConfigObject[] __attribute__((used, section(".sys_cfg_data"))) = +#elif defined (__ICCARM__) +#pragma location = ".sys_cfg_data" +__root const u32 XPm_ConfigObject[] = +#endif +{ + /**********************************************************************/ + /* HEADER */ + 2, /* Number of remaining words in the header */ + 8, /* Number of sections included in config object */ + PM_CONFIG_OBJECT_TYPE_BASE, /* Type of config object as base */ + /**********************************************************************/ + /* MASTER SECTION */ + PM_CONFIG_MASTER_SECTION_ID, /* Master SectionID */ + 3U, /* No. of Masters*/ + + NODE_APU, /* Master Node ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK, /* IPI Mask of this master */ + SUSPEND_TIMEOUT, /* Suspend timeout */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Suspend permissions */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Wake permissions */ + + NODE_RPU_0, /* Master Node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask of this master */ + SUSPEND_TIMEOUT, /* Suspend timeout */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Suspend permissions */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Wake permissions */ + + NODE_RPU_1, /* Master Node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask of this master */ + SUSPEND_TIMEOUT, /* Suspend timeout */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* Suspend permissions */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* Wake permissions */ + + + /**********************************************************************/ + /* SLAVE SECTION */ + + + PM_CONFIG_SLAVE_SECTION_ID, /* Section ID */ + 35, /* Number of slaves */ + + NODE_OCM_BANK_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_OCM_BANK_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_OCM_BANK_2, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_OCM_BANK_3, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TCM_0_A, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask */ + + NODE_TCM_0_B, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask */ + + NODE_TCM_1_A, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TCM_1_B, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_L2, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPU_PP_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPU_PP_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_USB_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_2, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_3, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_ETH_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_UART_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_UART_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_SPI_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_I2C_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_DP, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GDMA, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_ADMA, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_QSPI, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPIO, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_CAN_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_EXTERN, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_DDR, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_IPI_APU, + 0U, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK, /* IPI Mask */ + + NODE_IPI_RPU_0, + 0U, + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask */ + + NODE_IPI_RPU_1, + 0U, + PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPU, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_RTC, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_PL, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + + /**********************************************************************/ + /* PREALLOC SECTION */ + + PM_CONFIG_PREALLOC_SECTION_ID, /* Preallaoc SectionID */ + 3U, /* No. of Masters*/ + + /* Prealloc for psu_cortexa53_0 */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK, + 10, + NODE_DDR, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_L2, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_0, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_1, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_2, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_3, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_I2C_1, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_QSPI, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_PL, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_IPI_APU, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + + /* Prealloc for psu_cortexr5_0 */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, + 3, + NODE_TCM_0_A, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_TCM_0_B, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_IPI_RPU_0, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + + /* Prealloc for psu_cortexr5_1 */ + PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + 3, + NODE_TCM_1_A, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_TCM_1_B, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_IPI_RPU_1, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + + + /**********************************************************************/ + /* POWER SECTION */ + + PM_CONFIG_POWER_SECTION_ID, /* Power Section ID */ + 4U, /* Number of power nodes */ + + NODE_APU, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + NODE_RPU, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + NODE_FPD, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + NODE_PLD, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + + /**********************************************************************/ + /* RESET SECTION */ + + PM_CONFIG_RESET_SECTION_ID, /* Reset Section ID */ + 120U, /* Number of resets */ + + XILPM_RESET_PCIE_CFG, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PCIE_BRIDGE, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PCIE_CTRL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DP, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SWDT_CRF, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM5, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM4, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GDMA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPU_PP1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPU_PP0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPU, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GT, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SATA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU3_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU2_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU1_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU0_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APU_L2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DDR, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APM_FPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SOFT, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_QSPI, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_UART0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_UART1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SPI0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SPI1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SDIO0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SDIO1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_CAN0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_CAN1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_I2C0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_I2C1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SWDT_CRL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_NAND, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ADMA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_IOU_CC, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TIMESTAMP, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_R50, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_R51, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_AMBA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_OCM, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_PGE, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB0_CORERESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB1_CORERESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB0_HIBERRESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB1_HIBERRESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB0_APB, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB1_APB, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_IPI, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APM_LPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RTC, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SYSMON, 0, + XILPM_RESET_AFI_FM6, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_LPD_SWDT, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_FPD, PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, + XILPM_RESET_RPU_DBG1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_DBG0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DBG_LPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DBG_FPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_VPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_IOPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_4, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_5, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_6, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_7, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_8, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_9, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_10, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_11, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_12, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_13, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_14, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_15, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_16, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_17, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_18, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_19, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_20, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_21, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_22, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_23, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_24, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_25, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_26, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_27, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_28, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_29, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_30, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_31, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_LS, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PS_ONLY, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_92, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_93, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_94, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_95, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + + /**********************************************************************/ + /* SET CONFIG SECTION */ + PM_CONFIG_SET_CONFIG_SECTION_ID, /* Set Config Section ID */ + 0U, /* Permissions to load base config object */ + 0U, /* Permissions to load overlay config object */ + + /**********************************************************************/ + /* SHUTDOWN SECTION */ + + PM_CONFIG_SHUTDOWN_SECTION_ID, /* Shutdown Section ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* System Shutdown/Restart Permission */ + + /**********************************************************************/ + /* GPO SECTION */ + PM_CONFIG_GPO_SECTION_ID, /* GPO Section ID */ + 0, /* State of GPO pins */ +}; +#if defined (__ICCARM__) +#pragma language=restore +#endif diff --git a/board/zynqmp/kria/kr260/kr260.sh b/board/zynqmp/kria/kr260/kr260.sh new file mode 100755 index 00000000..ac49fa5e --- /dev/null +++ b/board/zynqmp/kria/kr260/kr260.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +# This is a temporary work around for generating kr260 u-boot.itb. +# The problem is there is no way to currently configure u-boot to apply +# the carrier board dtb overlay during build, so all kr260 carrier board +# drivers are missing. +# This will be removed when u-boot can build the kr260 u-boot.itb natively. + +UBOOT_DIR="$4" + +fdtoverlay -o "${UBOOT_DIR}/fit-dtb.blob" \ + -i "${UBOOT_DIR}/arch/arm/dts/zynqmp-smk-k26-revA.dtb" \ + "${UBOOT_DIR}/arch/arm/dts/zynqmp-sck-kr-g-revB.dtbo" + +"${UBOOT_DIR}/tools/mkimage" -E -f "${UBOOT_DIR}/u-boot.its" \ + -B 0x8 "${BINARIES_DIR}/u-boot.itb" diff --git a/board/zynqmp/kria/kr260/pm_cfg_obj.c b/board/zynqmp/kria/kr260/pm_cfg_obj.c new file mode 100644 index 00000000..9692a30d --- /dev/null +++ b/board/zynqmp/kria/kr260/pm_cfg_obj.c @@ -0,0 +1,496 @@ +/****************************************************************************** +* Copyright (c) 2017 - 2021 Xilinx, Inc. All rights reserved. +* SPDX-License-Identifier: MIT +******************************************************************************/ + +#include "xil_types.h" +#include "pm_defs.h" + +#define PM_CONFIG_MASTER_SECTION_ID 0x101U +#define PM_CONFIG_SLAVE_SECTION_ID 0x102U +#define PM_CONFIG_PREALLOC_SECTION_ID 0x103U +#define PM_CONFIG_POWER_SECTION_ID 0x104U +#define PM_CONFIG_RESET_SECTION_ID 0x105U +#define PM_CONFIG_SHUTDOWN_SECTION_ID 0x106U +#define PM_CONFIG_SET_CONFIG_SECTION_ID 0x107U +#define PM_CONFIG_GPO_SECTION_ID 0x108U + +#define PM_SLAVE_FLAG_IS_SHAREABLE 0x1U +#define PM_MASTER_USING_SLAVE_MASK 0x2U + +#define PM_CONFIG_GPO1_MIO_PIN_34_MAP (1U << 10U) +#define PM_CONFIG_GPO1_MIO_PIN_35_MAP (1U << 11U) +#define PM_CONFIG_GPO1_MIO_PIN_36_MAP (1U << 12U) +#define PM_CONFIG_GPO1_MIO_PIN_37_MAP (1U << 13U) + +#define PM_CONFIG_GPO1_BIT_2_MASK (1U << 2U) +#define PM_CONFIG_GPO1_BIT_3_MASK (1U << 3U) +#define PM_CONFIG_GPO1_BIT_4_MASK (1U << 4U) +#define PM_CONFIG_GPO1_BIT_5_MASK (1U << 5U) + +#define SUSPEND_TIMEOUT 0xFFFFFFFFU + +#define PM_CONFIG_OBJECT_TYPE_BASE 0x1U + + +#define PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK 0x00000001 +#define PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK 0x00000100 +#define PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK 0x00000200 + + + +#if defined (__ICCARM__) +#pragma language=save +#pragma language=extended +#endif +#if defined (__GNUC__) + const u32 XPm_ConfigObject[] __attribute__((used, section(".sys_cfg_data"))) = +#elif defined (__ICCARM__) +#pragma location = ".sys_cfg_data" +__root const u32 XPm_ConfigObject[] = +#endif +{ + /**********************************************************************/ + /* HEADER */ + 2, /* Number of remaining words in the header */ + 8, /* Number of sections included in config object */ + PM_CONFIG_OBJECT_TYPE_BASE, /* Type of config object as base */ + /**********************************************************************/ + /* MASTER SECTION */ + PM_CONFIG_MASTER_SECTION_ID, /* Master SectionID */ + 3U, /* No. of Masters*/ + + NODE_APU, /* Master Node ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK, /* IPI Mask of this master */ + SUSPEND_TIMEOUT, /* Suspend timeout */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Suspend permissions */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Wake permissions */ + + NODE_RPU_0, /* Master Node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask of this master */ + SUSPEND_TIMEOUT, /* Suspend timeout */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Suspend permissions */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Wake permissions */ + + NODE_RPU_1, /* Master Node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask of this master */ + SUSPEND_TIMEOUT, /* Suspend timeout */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* Suspend permissions */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* Wake permissions */ + + + /**********************************************************************/ + /* SLAVE SECTION */ + + + PM_CONFIG_SLAVE_SECTION_ID, /* Section ID */ + 35, /* Number of slaves */ + + NODE_OCM_BANK_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_OCM_BANK_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_OCM_BANK_2, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_OCM_BANK_3, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TCM_0_A, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask */ + + NODE_TCM_0_B, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask */ + + NODE_TCM_1_A, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TCM_1_B, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_L2, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPU_PP_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPU_PP_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_USB_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_USB_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_2, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_3, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_ETH_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_ETH_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_UART_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_SPI_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_I2C_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_DP, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GDMA, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_ADMA, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_QSPI, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPIO, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_EXTERN, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_DDR, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_IPI_APU, + 0U, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK, /* IPI Mask */ + + NODE_IPI_RPU_0, + 0U, + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask */ + + NODE_IPI_RPU_1, + 0U, + PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPU, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_RTC, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_PL, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + + /**********************************************************************/ + /* PREALLOC SECTION */ + + PM_CONFIG_PREALLOC_SECTION_ID, /* Preallaoc SectionID */ + 3U, /* No. of Masters*/ + +/* Prealloc for psu_cortexa53_0 */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK, + 10, + NODE_DDR, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_L2, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_0, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_1, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_2, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_3, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_I2C_1, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_QSPI, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_PL, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_IPI_APU, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + + /* Prealloc for psu_cortexr5_0 */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, + 3, + NODE_TCM_0_A, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_TCM_0_B, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_IPI_RPU_0, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + + /* Prealloc for psu_cortexr5_1 */ + PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + 3, + NODE_TCM_1_A, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_TCM_1_B, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_IPI_RPU_1, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + + + /**********************************************************************/ + /* POWER SECTION */ + + PM_CONFIG_POWER_SECTION_ID, /* Power Section ID */ + 4U, /* Number of power nodes */ + + NODE_APU, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + NODE_RPU, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + NODE_FPD, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + NODE_PLD, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + + /**********************************************************************/ + /* RESET SECTION */ + + PM_CONFIG_RESET_SECTION_ID, /* Reset Section ID */ + 120U, /* Number of resets */ + + XILPM_RESET_PCIE_CFG, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PCIE_BRIDGE, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PCIE_CTRL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DP, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SWDT_CRF, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM5, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM4, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GDMA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPU_PP1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPU_PP0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPU, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GT, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SATA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU3_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU2_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU1_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU0_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APU_L2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DDR, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APM_FPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SOFT, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_QSPI, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_UART0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_UART1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SPI0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SPI1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SDIO0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SDIO1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_CAN0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_CAN1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_I2C0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_I2C1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SWDT_CRL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_NAND, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ADMA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_IOU_CC, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TIMESTAMP, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_R50, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_R51, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_AMBA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_OCM, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_PGE, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB0_CORERESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB1_CORERESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB0_HIBERRESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB1_HIBERRESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB0_APB, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB1_APB, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_IPI, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APM_LPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RTC, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SYSMON, 0, + XILPM_RESET_AFI_FM6, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_LPD_SWDT, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_FPD, PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, + XILPM_RESET_RPU_DBG1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_DBG0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DBG_LPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DBG_FPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_VPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_IOPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_4, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_5, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_6, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_7, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_8, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_9, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_10, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_11, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_12, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_13, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_14, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_15, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_16, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_17, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_18, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_19, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_20, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_21, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_22, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_23, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_24, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_25, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_26, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_27, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_28, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_29, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_30, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_31, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_LS, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PS_ONLY, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_92, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_93, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_94, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_95, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + + /**********************************************************************/ + /* SET CONFIG SECTION */ + PM_CONFIG_SET_CONFIG_SECTION_ID, /* Set Config Section ID */ + 0U, /* Permissions to load base config object */ + 0U, /* Permissions to load overlay config object */ + + /**********************************************************************/ + /* SHUTDOWN SECTION */ + + PM_CONFIG_SHUTDOWN_SECTION_ID, /* Shutdown Section ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* System Shutdown/Restart Permission */ + + /**********************************************************************/ + /* GPO SECTION */ + PM_CONFIG_GPO_SECTION_ID, /* GPO Section ID */ + PM_CONFIG_GPO1_MIO_PIN_35_MAP | + 0, /* State of GPO pins */ +}; +#if defined (__ICCARM__) +#pragma language=restore +#endif + diff --git a/board/zynqmp/kria/kv260/kv260.sh b/board/zynqmp/kria/kv260/kv260.sh new file mode 100755 index 00000000..dc92c51d --- /dev/null +++ b/board/zynqmp/kria/kv260/kv260.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +# This is a temporary work around for generating kv260 u-boot.itb. +# The problem is there is no way to currently configure u-boot to apply +# the carrier board dtb overlay during build, so all kv260 carrier board +# drivers are missing. +# This will be removed when u-boot can build the kv260 u-boot.itb natively. + +UBOOT_DIR="$4" + +fdtoverlay -o "${UBOOT_DIR}/fit-dtb.blob" \ + -i "${UBOOT_DIR}/arch/arm/dts/zynqmp-smk-k26-revA.dtb" \ + "${UBOOT_DIR}/arch/arm/dts/zynqmp-sck-kv-g-revB.dtbo" + +"${UBOOT_DIR}/tools/mkimage" -E -f "${UBOOT_DIR}/u-boot.its" \ + -B 0x8 "${BINARIES_DIR}/u-boot.itb" diff --git a/board/zynqmp/kria/kv260/pm_cfg_obj.c b/board/zynqmp/kria/kv260/pm_cfg_obj.c new file mode 100644 index 00000000..fc6c4024 --- /dev/null +++ b/board/zynqmp/kria/kv260/pm_cfg_obj.c @@ -0,0 +1,497 @@ +/****************************************************************************** +* Copyright (c) 2017 - 2021 Xilinx, Inc. All rights reserved. +* SPDX-License-Identifier: MIT +******************************************************************************/ + +#include "xil_types.h" +#include "pm_defs.h" + +#define PM_CONFIG_MASTER_SECTION_ID 0x101U +#define PM_CONFIG_SLAVE_SECTION_ID 0x102U +#define PM_CONFIG_PREALLOC_SECTION_ID 0x103U +#define PM_CONFIG_POWER_SECTION_ID 0x104U +#define PM_CONFIG_RESET_SECTION_ID 0x105U +#define PM_CONFIG_SHUTDOWN_SECTION_ID 0x106U +#define PM_CONFIG_SET_CONFIG_SECTION_ID 0x107U +#define PM_CONFIG_GPO_SECTION_ID 0x108U + +#define PM_SLAVE_FLAG_IS_SHAREABLE 0x1U +#define PM_MASTER_USING_SLAVE_MASK 0x2U + +#define PM_CONFIG_GPO1_MIO_PIN_34_MAP (1U << 10U) +#define PM_CONFIG_GPO1_MIO_PIN_35_MAP (1U << 11U) +#define PM_CONFIG_GPO1_MIO_PIN_36_MAP (1U << 12U) +#define PM_CONFIG_GPO1_MIO_PIN_37_MAP (1U << 13U) + +#define PM_CONFIG_GPO1_BIT_2_MASK (1U << 2U) +#define PM_CONFIG_GPO1_BIT_3_MASK (1U << 3U) +#define PM_CONFIG_GPO1_BIT_4_MASK (1U << 4U) +#define PM_CONFIG_GPO1_BIT_5_MASK (1U << 5U) + +#define SUSPEND_TIMEOUT 0xFFFFFFFFU + +#define PM_CONFIG_OBJECT_TYPE_BASE 0x1U + + +#define PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK 0x00000001 +#define PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK 0x00000100 +#define PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK 0x00000200 + + + +#if defined (__ICCARM__) +#pragma language=save +#pragma language=extended +#endif +#if defined (__GNUC__) + const u32 XPm_ConfigObject[] __attribute__((used, section(".sys_cfg_data"))) = +#elif defined (__ICCARM__) +#pragma location = ".sys_cfg_data" +__root const u32 XPm_ConfigObject[] = +#endif +{ + /**********************************************************************/ + /* HEADER */ + 2, /* Number of remaining words in the header */ + 8, /* Number of sections included in config object */ + PM_CONFIG_OBJECT_TYPE_BASE, /* Type of config object as base */ + /**********************************************************************/ + /* MASTER SECTION */ + PM_CONFIG_MASTER_SECTION_ID, /* Master SectionID */ + 3U, /* No. of Masters*/ + + NODE_APU, /* Master Node ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK, /* IPI Mask of this master */ + SUSPEND_TIMEOUT, /* Suspend timeout */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Suspend permissions */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Wake permissions */ + + NODE_RPU_0, /* Master Node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask of this master */ + SUSPEND_TIMEOUT, /* Suspend timeout */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Suspend permissions */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Wake permissions */ + + NODE_RPU_1, /* Master Node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask of this master */ + SUSPEND_TIMEOUT, /* Suspend timeout */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* Suspend permissions */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* Wake permissions */ + + + /**********************************************************************/ + /* SLAVE SECTION */ + + + PM_CONFIG_SLAVE_SECTION_ID, /* Section ID */ + 34, /* Number of slaves */ + + NODE_OCM_BANK_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_OCM_BANK_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_OCM_BANK_2, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_OCM_BANK_3, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TCM_0_A, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask */ + + NODE_TCM_0_B, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask */ + + NODE_TCM_1_A, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TCM_1_B, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_L2, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPU_PP_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPU_PP_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_USB_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_2, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_3, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_ETH_3, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_UART_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_SPI_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_I2C_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_SD_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_DP, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GDMA, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_ADMA, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_QSPI, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPIO, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_EXTERN, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_DDR, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_IPI_APU, + 0U, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK, /* IPI Mask */ + + NODE_IPI_RPU_0, + 0U, + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask */ + + NODE_IPI_RPU_1, + 0U, + PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPU, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_RTC, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_PL, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + + /**********************************************************************/ + /* PREALLOC SECTION */ + + PM_CONFIG_PREALLOC_SECTION_ID, /* Preallaoc SectionID */ + 3U, /* No. of Masters*/ + +/* Prealloc for psu_cortexa53_0 */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK, + 11, + NODE_DDR, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_L2, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_0, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_1, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_2, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_3, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_I2C_1, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_SD_1, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_QSPI, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_PL, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_IPI_APU, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + + /* Prealloc for psu_cortexr5_0 */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, + 3, + NODE_TCM_0_A, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_TCM_0_B, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_IPI_RPU_0, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + + /* Prealloc for psu_cortexr5_1 */ + PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + 3, + NODE_TCM_1_A, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_TCM_1_B, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_IPI_RPU_1, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + + + /**********************************************************************/ + /* POWER SECTION */ + + PM_CONFIG_POWER_SECTION_ID, /* Power Section ID */ + 4U, /* Number of power nodes */ + + NODE_APU, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + NODE_RPU, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + NODE_FPD, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + NODE_PLD, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + + /**********************************************************************/ + /* RESET SECTION */ + + PM_CONFIG_RESET_SECTION_ID, /* Reset Section ID */ + 120U, /* Number of resets */ + + XILPM_RESET_PCIE_CFG, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PCIE_BRIDGE, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PCIE_CTRL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DP, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SWDT_CRF, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM5, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM4, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GDMA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPU_PP1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPU_PP0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPU, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GT, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SATA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU3_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU2_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU1_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU0_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APU_L2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DDR, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APM_FPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SOFT, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_QSPI, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_UART0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_UART1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SPI0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SPI1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SDIO0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SDIO1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_CAN0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_CAN1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_I2C0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_I2C1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SWDT_CRL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_NAND, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ADMA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_IOU_CC, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TIMESTAMP, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_R50, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_R51, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_AMBA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_OCM, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_PGE, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB0_CORERESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB1_CORERESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB0_HIBERRESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB1_HIBERRESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB0_APB, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB1_APB, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_IPI, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APM_LPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RTC, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SYSMON, 0, + XILPM_RESET_AFI_FM6, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_LPD_SWDT, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_FPD, PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, + XILPM_RESET_RPU_DBG1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_DBG0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DBG_LPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DBG_FPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_VPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_IOPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_4, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_5, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_6, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_7, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_8, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_9, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_10, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_11, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_12, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_13, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_14, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_15, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_16, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_17, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_18, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_19, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_20, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_21, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_22, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_23, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_24, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_25, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_26, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_27, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_28, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_29, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_30, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_31, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_LS, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PS_ONLY, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_92, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_93, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_94, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_95, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + + /**********************************************************************/ + /* SET CONFIG SECTION */ + PM_CONFIG_SET_CONFIG_SECTION_ID, /* Set Config Section ID */ + 0U, /* Permissions to load base config object */ + 0U, /* Permissions to load overlay config object */ + + /**********************************************************************/ + /* SHUTDOWN SECTION */ + + PM_CONFIG_SHUTDOWN_SECTION_ID, /* Shutdown Section ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* System Shutdown/Restart Permission */ + + /**********************************************************************/ + /* GPO SECTION */ + PM_CONFIG_GPO_SECTION_ID, /* GPO Section ID */ + PM_CONFIG_GPO1_MIO_PIN_35_MAP | + 0, /* State of GPO pins */ +}; +#if defined (__ICCARM__) +#pragma language=restore +#endif + diff --git a/board/zynqmp/kria/readme.txt b/board/zynqmp/kria/readme.txt new file mode 100644 index 00000000..ca316438 --- /dev/null +++ b/board/zynqmp/kria/readme.txt @@ -0,0 +1,116 @@ +************************************************** +Xilinx Kria SOM Starter Kits - ZynqMP SoC +************************************************** + +This document describes the Buildroot support for the Kria KD240, +KR260 and KV260 starter kits by Xilinx, based on Kria SOM including the +Zynq UltraScale+ MPSoC (aka ZynqMP). It has been tested with +the KD240, KR260 and KV260 production boards. + +Evaluation board features can be found here with the links below. + +KD240: +https://www.xilinx.com/products/som/kria/kd240-drives-starter-kit.html + +KR260: +https://www.xilinx.com/products/som/kria/kr260-robotics-starter-kit.html + +KV260: +https://www.xilinx.com/products/som/kria/kv260-vision-starter-kit.html + +How to build it +=============== + +Configure Buildroot: (use the command for the specific board) + + $ make zynqmp_kria_kd240_defconfig + $ make zynqmp_kria_kr260_defconfig + $ make zynqmp_kria_kv260_defconfig + +Compile everything and build the rootfs image: + + $ make + +Result of the build +------------------- + +After building, you should get a tree like this: + + output/images/ + +-- atf-uboot.ub + +-- bl31.bin + +-- boot.bin + +-- boot.vfat + +-- Image + +-- rootfs.ext2 + +-- rootfs.ext4 -> rootfs.ext2 + +-- sdcard.img + +-- system.dtb -> smk-k26-revA-sck-kv-g-revB.dtb + +-- u-boot.itb + `-- smk-k26-revA-sck-kv-g-revB.dtb + +How to write the SD card +======================== + +WARNING! This will destroy all the card content. Use with care! + +The sdcard.img file is a complete bootable image ready to be written +on the boot medium. To install it, simply copy the image to an SD +card: + + # dd if=output/images/sdcard.img of=/dev/sdX + +Where 'sdX' is the device node of the SD. + +Eject the SD card, insert it in the board, and power it up. + +How to write boot.bin and u-boot.itb to QSPI boot flash +======================================================= + +The Kria SOMs are preconfigured to boot initially from QSPI. +This makes these boards different from other ZynqMP boards +in that the boot.bin and u-boot.itb files need to be flashed +into the QSPI boot flash such that U-Boot can then load all +of the remaining images from the SD card. + +In addition, the Kria Starter Kits QSPI comes pre-flashed with +a utility designed to make updating the QSPI flash memory +easier. + +Instructions for using these utilities to update the files +in QSPI flash can be found on the wiki link below. + +https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/1641152513/Kria+K26+SOM#Boot-Firmware-Updates + +Additionally, it is possible to use u-boot for updating the +QSPI with new boot.bin and u-boot.itb images with the u-boot +commands below. + +KV260 Flashing Instructions: +Flashing u-boot.itb: + $ sf probe + $ fatload mmc 1 0x1000000 u-boot.itb + $ sf erase 0x280000 +$filesize + $ sf write 0x1000000 0x280000 $filesize + +Flashing boot.bin: + $ sf probe + $ fatload mmc 1 0x1000000 boot.bin + $ sf erase 0x200000 +$filesize + $ sf write 0x1000000 0x200000 $filesize + +KD240 / KR260 Flashing Instructions: +Flashing u-boot.itb: + $ sf probe + $ fatload usb 0 0x1000000 u-boot.itb + $ sf erase 0x280000 +$filesize + $ sf write 0x1000000 0x280000 $filesize + +Flashing boot.bin: + $ sf probe + $ fatload usb 0 0x1000000 boot.bin + $ sf erase 0x200000 +$filesize + $ sf write 0x1000000 0x200000 $filesize + +It is possible to boot the Buildroot generated SD card image without +updating the QSPI boot.bin image, so this is an optional step. diff --git a/board/zynqmp/post-build.sh b/board/zynqmp/post-build.sh new file mode 100755 index 00000000..747991e3 --- /dev/null +++ b/board/zynqmp/post-build.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# genimage will need to find the extlinux.conf +# in the binaries directory + +CONSOLE="$2" +ROOT="$3" + +mkdir -p "${BINARIES_DIR}" +cat <<-__HEADER_EOF > "${BINARIES_DIR}/extlinux.conf" + label linux + kernel /Image + devicetree /system.dtb + append console="${CONSOLE}" root="/dev/${ROOT}" rw rootwait + __HEADER_EOF diff --git a/board/zynqmp/post-image.sh b/board/zynqmp/post-image.sh new file mode 100755 index 00000000..f44b6634 --- /dev/null +++ b/board/zynqmp/post-image.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# By default U-Boot loads DTB from a file named "system.dtb", so +# let's use a symlink with that name that points to the *first* +# devicetree listed in the config. + +FIRST_DT=$(sed -nr \ + -e 's|^BR2_LINUX_KERNEL_INTREE_DTS_NAME="(xilinx/)?([-_/[:alnum:]\\.]*).*"$|\2|p' \ + "${BR2_CONFIG}") + +[ -z "${FIRST_DT}" ] || ln -fs "${FIRST_DT}.dtb" "${BINARIES_DIR}/system.dtb" + +BOARD_DIR="$(dirname "$0")" + +support/scripts/genimage.sh -c "${BOARD_DIR}/genimage.cfg" diff --git a/board/zynqmp/readme.txt b/board/zynqmp/readme.txt new file mode 100644 index 00000000..3f1b3a80 --- /dev/null +++ b/board/zynqmp/readme.txt @@ -0,0 +1,92 @@ +*************************************************** +Xilinx ZCU102 / ZCU104 / ZCU106 boards - ZynqMP SoC +*************************************************** + +This document describes the Buildroot support for the ZCU102, ZCU104 +and ZCU106 boards by Xilinx, based on the Zynq UltraScale+ MPSoC (aka +ZynqMP). It has been tested with the ZCU102 and ZCU106 production +boards. + +Evaluation board features can be found here with the links below. + +ZCU102: +https://www.xilinx.com/products/boards-and-kits/zcu102.html + +ZCU104: +https://www.xilinx.com/products/boards-and-kits/zcu104.html + +ZCU106: +https://www.xilinx.com/products/boards-and-kits/zcu106.html + + +How to build it +=============== + +Configure Buildroot: (use the command for the specific board) + + $ make zynqmp_zcu102_defconfig + $ make zynqmp_zcu104_defconfig + $ make zynqmp_zcu106_defconfig + +Compile everything and build the rootfs image: + + $ make + +Result of the build +------------------- + +After building, you should get a tree like this: + + output/images/ + +-- atf-uboot.ub + +-- bl31.bin + +-- boot.bin + +-- boot.vfat + +-- Image + +-- rootfs.ext2 + +-- rootfs.ext4 -> rootfs.ext2 + +-- sdcard.img + +-- system.dtb -> zynqmp-zcu106-revA.dtb + +-- u-boot.itb + `-- zynqmp-zcu106-revA.dtb + +How to write the SD card +======================== + +WARNING! This will destroy all the card content. Use with care! + +The sdcard.img file is a complete bootable image ready to be written +on the boot medium. To install it, simply copy the image to an SD +card: + + # dd if=output/images/sdcard.img of=/dev/sdX + +Where 'sdX' is the device node of the SD. + +Eject the SD card, insert it in the board, and power it up. + +============== +Important Note +============== + +The DDR memory on the original ZCU102 and ZCU106 boards is EOL. +The Buildroot defconfigs for these boards use the new DDR memory +which is configured by the u-boot spl initialization with the +Buildroot config options below. + +New DDR Memories: +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=zynqmp-zcu102-rev1.0" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=zynqmp-zcu106-rev1.0" + +If nothing is printing upon boot, most likely it is because the +board has the original DDR memories. To fix the problem, modify +the Buildroot defconfig file to use the u-boot spl initialization +for the original DDR memory using the config below for the target +board. + +Original DDR Memories: +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=zynqmp-zcu102-revA" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=zynqmp-zcu106-revA" + +For more information on this issue: +https://support.xilinx.com/s/article/71961?language=en_US diff --git a/board/zynqmp/zcu102/pm_cfg_obj.c b/board/zynqmp/zcu102/pm_cfg_obj.c new file mode 100644 index 00000000..04bfb16e --- /dev/null +++ b/board/zynqmp/zcu102/pm_cfg_obj.c @@ -0,0 +1,522 @@ +/****************************************************************************** +* Copyright (c) 2017 - 2021 Xilinx, Inc. All rights reserved. +* SPDX-License-Identifier: MIT +******************************************************************************/ + +#include "xil_types.h" +#include "pm_defs.h" + +#define PM_CONFIG_MASTER_SECTION_ID 0x101U +#define PM_CONFIG_SLAVE_SECTION_ID 0x102U +#define PM_CONFIG_PREALLOC_SECTION_ID 0x103U +#define PM_CONFIG_POWER_SECTION_ID 0x104U +#define PM_CONFIG_RESET_SECTION_ID 0x105U +#define PM_CONFIG_SHUTDOWN_SECTION_ID 0x106U +#define PM_CONFIG_SET_CONFIG_SECTION_ID 0x107U +#define PM_CONFIG_GPO_SECTION_ID 0x108U + +#define PM_SLAVE_FLAG_IS_SHAREABLE 0x1U +#define PM_MASTER_USING_SLAVE_MASK 0x2U + +#define PM_CONFIG_GPO1_MIO_PIN_34_MAP (1U << 10U) +#define PM_CONFIG_GPO1_MIO_PIN_35_MAP (1U << 11U) +#define PM_CONFIG_GPO1_MIO_PIN_36_MAP (1U << 12U) +#define PM_CONFIG_GPO1_MIO_PIN_37_MAP (1U << 13U) + +#define PM_CONFIG_GPO1_BIT_2_MASK (1U << 2U) +#define PM_CONFIG_GPO1_BIT_3_MASK (1U << 3U) +#define PM_CONFIG_GPO1_BIT_4_MASK (1U << 4U) +#define PM_CONFIG_GPO1_BIT_5_MASK (1U << 5U) + +#define SUSPEND_TIMEOUT 0xFFFFFFFFU + +#define PM_CONFIG_OBJECT_TYPE_BASE 0x1U + + +#define PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK 0x00000001 +#define PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK 0x00000100 +#define PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK 0x00000200 + + + +#if defined (__ICCARM__) +#pragma language=save +#pragma language=extended +#endif +#if defined (__GNUC__) + const u32 XPm_ConfigObject[] __attribute__((used, section(".sys_cfg_data"))) = +#elif defined (__ICCARM__) +#pragma location = ".sys_cfg_data" +__root const u32 XPm_ConfigObject[] = +#endif +{ + /**********************************************************************/ + /* HEADER */ + 2, /* Number of remaining words in the header */ + 8, /* Number of sections included in config object */ + PM_CONFIG_OBJECT_TYPE_BASE, /* Type of config object as base */ + /**********************************************************************/ + /* MASTER SECTION */ + PM_CONFIG_MASTER_SECTION_ID, /* Master SectionID */ + 3U, /* No. of Masters*/ + + NODE_APU, /* Master Node ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK, /* IPI Mask of this master */ + SUSPEND_TIMEOUT, /* Suspend timeout */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Suspend permissions */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Wake permissions */ + + NODE_RPU_0, /* Master Node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask of this master */ + SUSPEND_TIMEOUT, /* Suspend timeout */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Suspend permissions */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Wake permissions */ + + NODE_RPU_1, /* Master Node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask of this master */ + SUSPEND_TIMEOUT, /* Suspend timeout */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* Suspend permissions */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* Wake permissions */ + + + /**********************************************************************/ + /* SLAVE SECTION */ + + + PM_CONFIG_SLAVE_SECTION_ID, /* Section ID */ + 38, /* Number of slaves */ + + NODE_OCM_BANK_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_OCM_BANK_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_OCM_BANK_2, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_OCM_BANK_3, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TCM_0_A, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask */ + + NODE_TCM_0_B, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask */ + + NODE_TCM_1_A, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TCM_1_B, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_L2, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPU_PP_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPU_PP_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_USB_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_2, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_3, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_SATA, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_ETH_3, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_UART_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_UART_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_I2C_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_I2C_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_SD_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_DP, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GDMA, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_ADMA, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_QSPI, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPIO, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_CAN_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_EXTERN, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_DDR, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_IPI_APU, + 0U, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK, /* IPI Mask */ + + NODE_IPI_RPU_0, + 0U, + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask */ + + NODE_IPI_RPU_1, + 0U, + PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPU, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_PCIE, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_RTC, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_PL, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + + /**********************************************************************/ + /* PREALLOC SECTION */ + + PM_CONFIG_PREALLOC_SECTION_ID, /* Preallaoc SectionID */ + 3U, /* No. of Masters*/ + +/* Prealloc for psu_cortexa53_0 */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK, + 12, + NODE_DDR, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_L2, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_0, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_1, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_2, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_3, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_I2C_0, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_I2C_1, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_SD_1, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_QSPI, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_PL, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_IPI_APU, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + + /* Prealloc for psu_cortexr5_0 */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, + 3, + NODE_TCM_0_A, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_TCM_0_B, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_IPI_RPU_0, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + + /* Prealloc for psu_cortexr5_1 */ + PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + 3, + NODE_TCM_1_A, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_TCM_1_B, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_IPI_RPU_1, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + + + /**********************************************************************/ + /* POWER SECTION */ + + PM_CONFIG_POWER_SECTION_ID, /* Power Section ID */ + 4U, /* Number of power nodes */ + + NODE_APU, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + NODE_RPU, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + NODE_FPD, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + NODE_PLD, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + + /**********************************************************************/ + /* RESET SECTION */ + + PM_CONFIG_RESET_SECTION_ID, /* Reset Section ID */ + 120U, /* Number of resets */ + + XILPM_RESET_PCIE_CFG, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PCIE_BRIDGE, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PCIE_CTRL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DP, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SWDT_CRF, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM5, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM4, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GDMA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPU_PP1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPU_PP0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPU, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GT, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SATA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU3_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU2_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU1_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU0_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APU_L2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DDR, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APM_FPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SOFT, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_QSPI, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_UART0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_UART1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SPI0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SPI1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SDIO0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SDIO1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_CAN0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_CAN1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_I2C0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_I2C1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SWDT_CRL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_NAND, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ADMA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_IOU_CC, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TIMESTAMP, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_R50, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_R51, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_AMBA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_OCM, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_PGE, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB0_CORERESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB1_CORERESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB0_HIBERRESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB1_HIBERRESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB0_APB, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB1_APB, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_IPI, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APM_LPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RTC, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SYSMON, 0, + XILPM_RESET_AFI_FM6, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_LPD_SWDT, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_FPD, PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, + XILPM_RESET_RPU_DBG1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_DBG0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DBG_LPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DBG_FPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_VPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_IOPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_4, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_5, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_6, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_7, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_8, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_9, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_10, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_11, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_12, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_13, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_14, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_15, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_16, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_17, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_18, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_19, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_20, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_21, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_22, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_23, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_24, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_25, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_26, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_27, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_28, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_29, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_30, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_31, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_LS, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PS_ONLY, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_92, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_93, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_94, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_95, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + + /**********************************************************************/ + /* SET CONFIG SECTION */ + PM_CONFIG_SET_CONFIG_SECTION_ID, /* Set Config Section ID */ + 0U, /* Permissions to load base config object */ + 0U, /* Permissions to load overlay config object */ + + /**********************************************************************/ + /* SHUTDOWN SECTION */ + + PM_CONFIG_SHUTDOWN_SECTION_ID, /* Shutdown Section ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* System Shutdown/Restart Permission */ + + /**********************************************************************/ + /* GPO SECTION */ + PM_CONFIG_GPO_SECTION_ID, /* GPO Section ID */ + PM_CONFIG_GPO1_BIT_2_MASK | + PM_CONFIG_GPO1_MIO_PIN_34_MAP | + PM_CONFIG_GPO1_MIO_PIN_35_MAP | + PM_CONFIG_GPO1_MIO_PIN_36_MAP | + PM_CONFIG_GPO1_MIO_PIN_37_MAP | + 0, /* State of GPO pins */ +}; +#if defined (__ICCARM__) +#pragma language=restore +#endif + diff --git a/board/zynqmp/zcu104/pm_cfg_obj.c b/board/zynqmp/zcu104/pm_cfg_obj.c new file mode 100644 index 00000000..bd0b59cf --- /dev/null +++ b/board/zynqmp/zcu104/pm_cfg_obj.c @@ -0,0 +1,503 @@ +/****************************************************************************** +* Copyright (c) 2017 - 2021 Xilinx, Inc. All rights reserved. +* SPDX-License-Identifier: MIT +******************************************************************************/ + +#include "xil_types.h" +#include "pm_defs.h" + +#define PM_CONFIG_MASTER_SECTION_ID 0x101U +#define PM_CONFIG_SLAVE_SECTION_ID 0x102U +#define PM_CONFIG_PREALLOC_SECTION_ID 0x103U +#define PM_CONFIG_POWER_SECTION_ID 0x104U +#define PM_CONFIG_RESET_SECTION_ID 0x105U +#define PM_CONFIG_SHUTDOWN_SECTION_ID 0x106U +#define PM_CONFIG_SET_CONFIG_SECTION_ID 0x107U +#define PM_CONFIG_GPO_SECTION_ID 0x108U + +#define PM_SLAVE_FLAG_IS_SHAREABLE 0x1U +#define PM_MASTER_USING_SLAVE_MASK 0x2U + +#define PM_CONFIG_GPO1_MIO_PIN_34_MAP (1U << 10U) +#define PM_CONFIG_GPO1_MIO_PIN_35_MAP (1U << 11U) +#define PM_CONFIG_GPO1_MIO_PIN_36_MAP (1U << 12U) +#define PM_CONFIG_GPO1_MIO_PIN_37_MAP (1U << 13U) + +#define PM_CONFIG_GPO1_BIT_2_MASK (1U << 2U) +#define PM_CONFIG_GPO1_BIT_3_MASK (1U << 3U) +#define PM_CONFIG_GPO1_BIT_4_MASK (1U << 4U) +#define PM_CONFIG_GPO1_BIT_5_MASK (1U << 5U) + +#define SUSPEND_TIMEOUT 0xFFFFFFFFU + +#define PM_CONFIG_OBJECT_TYPE_BASE 0x1U + + +#define PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK 0x00000001 +#define PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK 0x00000100 +#define PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK 0x00000200 + + + +#if defined (__ICCARM__) +#pragma language=save +#pragma language=extended +#endif +#if defined (__GNUC__) + const u32 XPm_ConfigObject[] __attribute__((used, section(".sys_cfg_data"))) = +#elif defined (__ICCARM__) +#pragma location = ".sys_cfg_data" +__root const u32 XPm_ConfigObject[] = +#endif +{ + /**********************************************************************/ + /* HEADER */ + 2, /* Number of remaining words in the header */ + 8, /* Number of sections included in config object */ + PM_CONFIG_OBJECT_TYPE_BASE, /* Type of config object as base */ + /**********************************************************************/ + /* MASTER SECTION */ + PM_CONFIG_MASTER_SECTION_ID, /* Master SectionID */ + 3U, /* No. of Masters*/ + + NODE_APU, /* Master Node ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK, /* IPI Mask of this master */ + SUSPEND_TIMEOUT, /* Suspend timeout */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Suspend permissions */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Wake permissions */ + + NODE_RPU_0, /* Master Node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask of this master */ + SUSPEND_TIMEOUT, /* Suspend timeout */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Suspend permissions */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Wake permissions */ + + NODE_RPU_1, /* Master Node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask of this master */ + SUSPEND_TIMEOUT, /* Suspend timeout */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* Suspend permissions */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* Wake permissions */ + + + /**********************************************************************/ + /* SLAVE SECTION */ + + + PM_CONFIG_SLAVE_SECTION_ID, /* Section ID */ + 36, /* Number of slaves */ + + NODE_OCM_BANK_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_OCM_BANK_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_OCM_BANK_2, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_OCM_BANK_3, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TCM_0_A, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask */ + + NODE_TCM_0_B, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask */ + + NODE_TCM_1_A, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TCM_1_B, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_L2, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPU_PP_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPU_PP_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_USB_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_2, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_3, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_SATA, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_ETH_3, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_UART_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_UART_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_I2C_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_SD_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_DP, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GDMA, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_ADMA, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_QSPI, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPIO, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_CAN_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_EXTERN, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_DDR, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_IPI_APU, + 0U, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK, /* IPI Mask */ + + NODE_IPI_RPU_0, + 0U, + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask */ + + NODE_IPI_RPU_1, + 0U, + PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPU, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_RTC, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_PL, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + + /**********************************************************************/ + /* PREALLOC SECTION */ + + PM_CONFIG_PREALLOC_SECTION_ID, /* Preallaoc SectionID */ + 3U, /* No. of Masters*/ + + /* Prealloc for psu_cortexa53_0 */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK, + 11, + NODE_DDR, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_L2, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_0, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_1, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_2, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_3, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_I2C_1, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_SD_1, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_QSPI, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_PL, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_IPI_APU, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + + /* Prealloc for psu_cortexr5_0 */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, + 3, + NODE_TCM_0_A, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_TCM_0_B, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_IPI_RPU_0, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + + /* Prealloc for psu_cortexr5_1 */ + PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + 3, + NODE_TCM_1_A, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_TCM_1_B, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_IPI_RPU_1, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + + + /**********************************************************************/ + /* POWER SECTION */ + + PM_CONFIG_POWER_SECTION_ID, /* Power Section ID */ + 4U, /* Number of power nodes */ + + NODE_APU, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + NODE_RPU, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + NODE_FPD, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + NODE_PLD, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + + /**********************************************************************/ + /* RESET SECTION */ + + PM_CONFIG_RESET_SECTION_ID, /* Reset Section ID */ + 120U, /* Number of resets */ + + XILPM_RESET_PCIE_CFG, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PCIE_BRIDGE, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PCIE_CTRL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DP, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SWDT_CRF, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM5, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM4, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GDMA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPU_PP1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPU_PP0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPU, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GT, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SATA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU3_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU2_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU1_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU0_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APU_L2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DDR, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APM_FPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SOFT, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_QSPI, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_UART0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_UART1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SPI0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SPI1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SDIO0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SDIO1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_CAN0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_CAN1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_I2C0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_I2C1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SWDT_CRL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_NAND, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ADMA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_IOU_CC, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TIMESTAMP, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_R50, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_R51, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_AMBA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_OCM, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_PGE, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB0_CORERESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB1_CORERESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB0_HIBERRESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB1_HIBERRESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB0_APB, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB1_APB, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_IPI, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APM_LPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RTC, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SYSMON, 0, + XILPM_RESET_AFI_FM6, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_LPD_SWDT, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_FPD, PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, + XILPM_RESET_RPU_DBG1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_DBG0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DBG_LPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DBG_FPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_VPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_IOPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_4, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_5, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_6, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_7, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_8, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_9, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_10, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_11, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_12, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_13, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_14, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_15, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_16, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_17, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_18, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_19, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_20, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_21, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_22, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_23, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_24, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_25, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_26, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_27, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_28, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_29, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_30, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_31, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_LS, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PS_ONLY, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_92, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_93, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_94, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_95, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + + /**********************************************************************/ + /* SET CONFIG SECTION */ + PM_CONFIG_SET_CONFIG_SECTION_ID, /* Set Config Section ID */ + 0U, /* Permissions to load base config object */ + 0U, /* Permissions to load overlay config object */ + + /**********************************************************************/ + /* SHUTDOWN SECTION */ + + PM_CONFIG_SHUTDOWN_SECTION_ID, /* Shutdown Section ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* System Shutdown/Restart Permission */ + + /**********************************************************************/ + /* GPO SECTION */ + PM_CONFIG_GPO_SECTION_ID, /* GPO Section ID */ + 0, /* State of GPO pins */ +}; +#if defined (__ICCARM__) +#pragma language=restore +#endif diff --git a/board/zynqmp/zcu106/pm_cfg_obj.c b/board/zynqmp/zcu106/pm_cfg_obj.c new file mode 100644 index 00000000..54a1afa9 --- /dev/null +++ b/board/zynqmp/zcu106/pm_cfg_obj.c @@ -0,0 +1,521 @@ +/****************************************************************************** +* Copyright (c) 2017 - 2021 Xilinx, Inc. All rights reserved. +* SPDX-License-Identifier: MIT +******************************************************************************/ + +#include "xil_types.h" +#include "pm_defs.h" + +#define PM_CONFIG_MASTER_SECTION_ID 0x101U +#define PM_CONFIG_SLAVE_SECTION_ID 0x102U +#define PM_CONFIG_PREALLOC_SECTION_ID 0x103U +#define PM_CONFIG_POWER_SECTION_ID 0x104U +#define PM_CONFIG_RESET_SECTION_ID 0x105U +#define PM_CONFIG_SHUTDOWN_SECTION_ID 0x106U +#define PM_CONFIG_SET_CONFIG_SECTION_ID 0x107U +#define PM_CONFIG_GPO_SECTION_ID 0x108U + +#define PM_SLAVE_FLAG_IS_SHAREABLE 0x1U +#define PM_MASTER_USING_SLAVE_MASK 0x2U + +#define PM_CONFIG_GPO1_MIO_PIN_34_MAP (1U << 10U) +#define PM_CONFIG_GPO1_MIO_PIN_35_MAP (1U << 11U) +#define PM_CONFIG_GPO1_MIO_PIN_36_MAP (1U << 12U) +#define PM_CONFIG_GPO1_MIO_PIN_37_MAP (1U << 13U) + +#define PM_CONFIG_GPO1_BIT_2_MASK (1U << 2U) +#define PM_CONFIG_GPO1_BIT_3_MASK (1U << 3U) +#define PM_CONFIG_GPO1_BIT_4_MASK (1U << 4U) +#define PM_CONFIG_GPO1_BIT_5_MASK (1U << 5U) + +#define SUSPEND_TIMEOUT 0xFFFFFFFFU + +#define PM_CONFIG_OBJECT_TYPE_BASE 0x1U + + +#define PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK 0x00000001 +#define PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK 0x00000100 +#define PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK 0x00000200 + + + +#if defined (__ICCARM__) +#pragma language=save +#pragma language=extended +#endif +#if defined (__GNUC__) + const u32 XPm_ConfigObject[] __attribute__((used, section(".sys_cfg_data"))) = +#elif defined (__ICCARM__) +#pragma location = ".sys_cfg_data" +__root const u32 XPm_ConfigObject[] = +#endif +{ + /**********************************************************************/ + /* HEADER */ + 2, /* Number of remaining words in the header */ + 8, /* Number of sections included in config object */ + PM_CONFIG_OBJECT_TYPE_BASE, /* Type of config object as base */ + /**********************************************************************/ + /* MASTER SECTION */ + PM_CONFIG_MASTER_SECTION_ID, /* Master SectionID */ + 3U, /* No. of Masters*/ + + NODE_APU, /* Master Node ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK, /* IPI Mask of this master */ + SUSPEND_TIMEOUT, /* Suspend timeout */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Suspend permissions */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Wake permissions */ + + NODE_RPU_0, /* Master Node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask of this master */ + SUSPEND_TIMEOUT, /* Suspend timeout */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Suspend permissions */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Wake permissions */ + + NODE_RPU_1, /* Master Node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask of this master */ + SUSPEND_TIMEOUT, /* Suspend timeout */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* Suspend permissions */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* Wake permissions */ + + + /**********************************************************************/ + /* SLAVE SECTION */ + + + PM_CONFIG_SLAVE_SECTION_ID, /* Section ID */ + 38, /* Number of slaves */ + + NODE_OCM_BANK_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_OCM_BANK_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_OCM_BANK_2, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_OCM_BANK_3, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TCM_0_A, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask */ + + NODE_TCM_0_B, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask */ + + NODE_TCM_1_A, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TCM_1_B, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_L2, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPU_PP_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPU_PP_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_USB_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_2, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_TTC_3, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_SATA, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_ETH_3, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_UART_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_UART_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_I2C_0, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_I2C_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_SD_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_DP, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GDMA, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_ADMA, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_QSPI, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPIO, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_CAN_1, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_EXTERN, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_DDR, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK| PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_IPI_APU, + 0U, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK, /* IPI Mask */ + + NODE_IPI_RPU_0, + 0U, + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, /* IPI Mask */ + + NODE_IPI_RPU_1, + 0U, + PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_GPU, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_RTC, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_VCU, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + NODE_PL, + PM_SLAVE_FLAG_IS_SHAREABLE, + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* IPI Mask */ + + + /**********************************************************************/ + /* PREALLOC SECTION */ + + PM_CONFIG_PREALLOC_SECTION_ID, /* Preallaoc SectionID */ + 3U, /* No. of Masters*/ + +/* Prealloc for psu_cortexa53_0 */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK, + 12, + NODE_DDR, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_L2, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_0, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_1, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_2, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_OCM_BANK_3, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_I2C_0, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_I2C_1, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_SD_1, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_QSPI, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_PL, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_IPI_APU, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + + /* Prealloc for psu_cortexr5_0 */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, + 3, + NODE_TCM_0_A, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_TCM_0_B, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_IPI_RPU_0, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + + /* Prealloc for psu_cortexr5_1 */ + PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + 3, + NODE_TCM_1_A, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_TCM_1_B, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + NODE_IPI_RPU_1, + PM_MASTER_USING_SLAVE_MASK, /* Master is using Slave */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Current Requirements */ + PM_CAP_ACCESS | PM_CAP_CONTEXT, /* Default Requirements */ + + + + /**********************************************************************/ + /* POWER SECTION */ + + PM_CONFIG_POWER_SECTION_ID, /* Power Section ID */ + 4U, /* Number of power nodes */ + + NODE_APU, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + NODE_RPU, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + NODE_FPD, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + NODE_PLD, /* Power node ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* Force power down permissions */ + + + /**********************************************************************/ + /* RESET SECTION */ + + PM_CONFIG_RESET_SECTION_ID, /* Reset Section ID */ + 120U, /* Number of resets */ + + XILPM_RESET_PCIE_CFG, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PCIE_BRIDGE, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PCIE_CTRL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DP, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SWDT_CRF, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM5, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM4, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_AFI_FM0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GDMA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPU_PP1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPU_PP0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPU, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GT, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SATA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU3_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU2_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU1_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU0_PWRON, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APU_L2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ACPU0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DDR, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APM_FPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SOFT, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GEM3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_QSPI, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_UART0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_UART1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SPI0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SPI1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SDIO0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SDIO1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_CAN0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_CAN1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_I2C0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_I2C1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TTC3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SWDT_CRL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_NAND, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_ADMA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_IOU_CC, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_TIMESTAMP, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_R50, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_R51, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_AMBA, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_OCM, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_PGE, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB0_CORERESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB1_CORERESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB0_HIBERRESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB1_HIBERRESET, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB0_APB, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_USB1_APB, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_IPI, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APM_LPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RTC, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_SYSMON, 0, + XILPM_RESET_AFI_FM6, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_LPD_SWDT, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_FPD, PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK, + XILPM_RESET_RPU_DBG1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_DBG0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DBG_LPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DBG_FPD, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_APLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_DPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_VPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_IOPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPLL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_0, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_1, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_2, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_3, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_4, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_5, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_6, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_7, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_8, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_9, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_10, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_11, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_12, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_13, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_14, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_15, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_16, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_17, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_18, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_19, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_20, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_21, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_22, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_23, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_24, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_25, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_26, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_27, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_28, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_29, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_30, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPO3_PL_31, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_RPU_LS, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PS_ONLY, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_PL, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_92, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_93, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_94, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + XILPM_RESET_GPIO5_EMIO_95, PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, + + /**********************************************************************/ + /* SET CONFIG SECTION */ + PM_CONFIG_SET_CONFIG_SECTION_ID, /* Set Config Section ID */ + 0U, /* Permissions to load base config object */ + 0U, /* Permissions to load overlay config object */ + + /**********************************************************************/ + /* SHUTDOWN SECTION */ + + PM_CONFIG_SHUTDOWN_SECTION_ID, /* Shutdown Section ID */ + PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK | PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK, /* System Shutdown/Restart Permission */ + + /**********************************************************************/ + /* GPO SECTION */ + PM_CONFIG_GPO_SECTION_ID, /* GPO Section ID */ + PM_CONFIG_GPO1_MIO_PIN_34_MAP | + PM_CONFIG_GPO1_MIO_PIN_35_MAP | + PM_CONFIG_GPO1_MIO_PIN_36_MAP | + PM_CONFIG_GPO1_MIO_PIN_37_MAP | + 0, /* State of GPO pins */ +}; +#if defined (__ICCARM__) +#pragma language=restore +#endif + diff --git a/boot/Config.in b/boot/Config.in new file mode 100644 index 00000000..5c8d0e7e --- /dev/null +++ b/boot/Config.in @@ -0,0 +1,24 @@ +menu "Bootloaders" + +source "boot/afboot-stm32/Config.in" +source "boot/at91bootstrap3/Config.in" +source "boot/arm-trusted-firmware/Config.in" +source "boot/barebox/Config.in" +source "boot/binaries-marvell/Config.in" +source "boot/boot-wrapper-aarch64/Config.in" +source "boot/edk2/Config.in" +source "boot/grub2/Config.in" +source "boot/mv-ddr-marvell/Config.in" +source "boot/mxs-bootlets/Config.in" +source "boot/optee-os/Config.in" +source "boot/opensbi/Config.in" +source "boot/s500-bootloader/Config.in" +source "boot/shim/Config.in" +source "boot/syslinux/Config.in" +source "boot/ti-k3-boot-firmware/Config.in" +source "boot/ti-k3-r5-loader/Config.in" +source "boot/uboot/Config.in" +source "boot/vexpress-firmware/Config.in" +source "boot/xilinx-prebuilt/Config.in" + +endmenu diff --git a/boot/afboot-stm32/0001-Pass-fno-builtin-to-fix-build-with-gcc-10.patch b/boot/afboot-stm32/0001-Pass-fno-builtin-to-fix-build-with-gcc-10.patch new file mode 100644 index 00000000..aef28327 --- /dev/null +++ b/boot/afboot-stm32/0001-Pass-fno-builtin-to-fix-build-with-gcc-10.patch @@ -0,0 +1,46 @@ +From 9901603e18524c4c52fd1dd47bda4ab4016628fc Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 10 Sep 2020 11:37:33 +0200 +Subject: [PATCH] Pass -fno-builtin to fix build with gcc 10 + +gcc 10, if it recognizes some hand-written code that looks like +memcpy, will generate a call to memcpy(). + +For example: + + while (dst < &_end_data) { + *dst++ = *src++; + } + +gets recognized as such. However, in the context of bare-metal code, +having a call to memcpy() in the C library doesn't work. So we fix +that by disabling builtins. + +Fixes: + +/home/thomas/projets/buildroot/output/host/opt/ext-toolchain/bin/../arm-buildroot-uclinux-uclibcgnueabi/bin/ld.real: stm32f429i-disco.o: in function `reset': +stm32f429i-disco.c:(.text.reset+0x1a): undefined reference to `memcpy' +/home/thomas/projets/buildroot/output/host/opt/ext-toolchain/bin/../arm-buildroot-uclinux-uclibcgnueabi/bin/ld.real: stm32f429i-disco.c:(.text.reset+0x34): undefined reference to `memset' +make[1]: *** [Makefile:26: stm32f429i-disco] Error 1 + +Upstream: https://github.com/mcoquelin-stm32/afboot-stm32/pull/11 +Signed-off-by: Thomas Petazzoni +--- + Makefile | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Makefile b/Makefile +index f699176..1e8557d 100644 +--- a/Makefile ++++ b/Makefile +@@ -13,6 +13,7 @@ DTB_ADDR?=0x08004000 + CFLAGS := -mthumb -mcpu=cortex-m4 + CFLAGS += -ffunction-sections -fdata-sections + CFLAGS += -Os -std=gnu99 -Wall ++CFLAGS += -fno-builtin + LINKERFLAGS := -nostartfiles --gc-sections + + obj-y += gpio.o mpu.o qspi.o start_kernel.o +-- +2.35.1 + diff --git a/boot/afboot-stm32/0002-Makefile-drop-nostartfiles.patch b/boot/afboot-stm32/0002-Makefile-drop-nostartfiles.patch new file mode 100644 index 00000000..7e5a6430 --- /dev/null +++ b/boot/afboot-stm32/0002-Makefile-drop-nostartfiles.patch @@ -0,0 +1,40 @@ +From be760c062c5d05bd2223f3916afafd37120d3318 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 28 Apr 2022 22:47:09 +0200 +Subject: [PATCH] Makefile: drop -nostartfiles + +In commit 0f3e61c9dd48fd8b4248ce4672c044c2562e4de1 ("Use ld instead of +gcc for linking "), we started using ld instead of gcc for the link +step. This worked fine for a while, but recent versions of ld no +longer accept the -nostartfiles option, causing the build to break: + +Error: unable to disambiguate: -nostartfiles (did you mean --nostartfiles ?) + +In fact, -nostartfiles was passed to gcc prior to +0f3e61c9dd48fd8b4248ce4672c044c2562e4de1, but it is not a ld +option. It is only by luck that it was accepted and ignored by older +ld versions. Since this option is useless when calling ld directly, we +can simply drop it. + +Upstream: https://github.com/mcoquelin-stm32/afboot-stm32/pull/11 +Signed-off-by: Thomas Petazzoni +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 1e8557d..8f42be1 100644 +--- a/Makefile ++++ b/Makefile +@@ -14,7 +14,7 @@ CFLAGS := -mthumb -mcpu=cortex-m4 + CFLAGS += -ffunction-sections -fdata-sections + CFLAGS += -Os -std=gnu99 -Wall + CFLAGS += -fno-builtin +-LINKERFLAGS := -nostartfiles --gc-sections ++LINKERFLAGS := --gc-sections + + obj-y += gpio.o mpu.o qspi.o start_kernel.o + obj-f4 += $(obj-y) usart-f4.o +-- +2.35.1 + diff --git a/boot/afboot-stm32/0003-Makefile-disable-stack-protector.patch b/boot/afboot-stm32/0003-Makefile-disable-stack-protector.patch new file mode 100644 index 00000000..27a81b45 --- /dev/null +++ b/boot/afboot-stm32/0003-Makefile-disable-stack-protector.patch @@ -0,0 +1,36 @@ +From d65b07d6fe438e760fdbc33a8e42650a27d5b417 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 31 Dec 2022 11:09:38 +0100 +Subject: [PATCH] Makefile: disable stack-protector + +Disable stack-protector to avoid the following build failure: + +/home/autobuild/autobuild/instance-14/output-1/host/bin/arm-buildroot-linux-gnueabi-ld -T stm32f429.lds --gc-sections -o stm32f469i-disco.elf stm32f469i-disco.o gpio.o mpu.o qspi.o start_kernel.o usart-f4.o +/home/autobuild/autobuild/instance-14/output-1/host/bin/arm-buildroot-linux-gnueabi-ld: stm32f469i-disco.o: in function `main': +stm32f469i-disco.c:(.text.startup.main+0x3b0): undefined reference to `__stack_chk_guard' +/home/autobuild/autobuild/instance-14/output-1/host/bin/arm-buildroot-linux-gnueabi-ld: stm32f469i-disco.c:(.text.startup.main+0x4c0): undefined reference to `__stack_chk_fail' +/home/autobuild/autobuild/instance-14/output-1/host/bin/arm-buildroot-linux-gnueabi-ld: stm32f469i-disco.c:(.text.startup.main+0x4ec): undefined reference to `__stack_chk_guard' + +Fixes: + - http://autobuild.buildroot.org/results/fa6ffab24c3998f21034ab24e8d2852cacde08c1 + +Signed-off-by: Fabrice Fontaine +--- + Makefile | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Makefile b/Makefile +index 8f42be1..8da7a25 100644 +--- a/Makefile ++++ b/Makefile +@@ -14,6 +14,7 @@ CFLAGS := -mthumb -mcpu=cortex-m4 + CFLAGS += -ffunction-sections -fdata-sections + CFLAGS += -Os -std=gnu99 -Wall + CFLAGS += -fno-builtin ++CFLAGS += -fno-stack-protector + LINKERFLAGS := --gc-sections + + obj-y += gpio.o mpu.o qspi.o start_kernel.o +-- +2.35.1 + diff --git a/boot/afboot-stm32/Config.in b/boot/afboot-stm32/Config.in new file mode 100644 index 00000000..23372705 --- /dev/null +++ b/boot/afboot-stm32/Config.in @@ -0,0 +1,27 @@ +config BR2_TARGET_AFBOOT_STM32 + bool "afboot-stm32" + depends on BR2_arm + help + afboot-stm32 is a very small bootloader for STM32 platforms + + https://github.com/mcoquelin-stm32/afboot-stm32 + +if BR2_TARGET_AFBOOT_STM32 + +config BR2_TARGET_AFBOOT_STM32_KERNEL_ADDR + hex "Kernel load address" + default "0x08008000" + help + This is the physical address in your flash memory the kernel + will be linked for and stored to. This address is dependent on + your own flash usage. + +config BR2_TARGET_AFBOOT_STM32_DTB_ADDR + hex "Device-tree load address" + default "0x08004000" + help + This is the physical address in your flash memory the + device-tree will be stored to. This address is dependent on + your own flash usage. + +endif diff --git a/boot/afboot-stm32/afboot-stm32.hash b/boot/afboot-stm32/afboot-stm32.hash new file mode 100644 index 00000000..d22c96d4 --- /dev/null +++ b/boot/afboot-stm32/afboot-stm32.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 2caacd302ab3ed5b70b3b93a6aef04162abf779c758a5be547be3ab01b68ca10 afboot-stm32-3566acd582e5536fb60864281788a30f5527df2d.tar.gz diff --git a/boot/afboot-stm32/afboot-stm32.mk b/boot/afboot-stm32/afboot-stm32.mk new file mode 100644 index 00000000..25ba13c8 --- /dev/null +++ b/boot/afboot-stm32/afboot-stm32.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# afboot-stm32 +# +################################################################################ + +AFBOOT_STM32_VERSION = 3566acd582e5536fb60864281788a30f5527df2d +AFBOOT_STM32_SITE = $(call github,mcoquelin-stm32,afboot-stm32,$(AFBOOT_STM32_VERSION)) +AFBOOT_STM32_INSTALL_IMAGES = YES +AFBOOT_STM32_INSTALL_TARGET = NO + +define AFBOOT_STM32_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CROSS_COMPILE=$(TARGET_CROSS) all \ + KERNEL_ADDR=$(BR2_TARGET_AFBOOT_STM32_KERNEL_ADDR) \ + DTB_ADDR=$(BR2_TARGET_AFBOOT_STM32_DTB_ADDR) +endef + +define AFBOOT_STM32_INSTALL_IMAGES_CMDS + $(INSTALL) -m 0755 -t $(BINARIES_DIR) -D $(@D)/stm32*.bin +endef + +$(eval $(generic-package)) diff --git a/boot/arm-trusted-firmware/Config.in b/boot/arm-trusted-firmware/Config.in new file mode 100644 index 00000000..02a6db79 --- /dev/null +++ b/boot/arm-trusted-firmware/Config.in @@ -0,0 +1,276 @@ +config BR2_TARGET_ARM_TRUSTED_FIRMWARE + bool "ARM Trusted Firmware (ATF)" + depends on (BR2_ARM_CPU_ARMV8A || BR2_ARM_CPU_ARMV7A) + 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 "v2.11" + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_LATEST_LTS_2_10_VERSION + bool "latest lts-v2.10.x" + help + Select the latest LTS v2.10.x version available + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_LATEST_LTS_2_8_VERSION + bool "latest lts-v2.8.x" + help + Select the latest LTS v2.8.x version available + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION + bool "Custom version" + help + This option allows to use a specific official versions + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL + bool "Custom tarball" + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT + bool "Custom Git repository" + +endchoice + +if BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION + string "URL of custom ATF tarball" + +endif + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE + string "ATF version" + depends on BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_VERSION + string + default "v2.11" if BR2_TARGET_ARM_TRUSTED_FIRMWARE_LATEST_VERSION + default "lts-v2.10.5" if BR2_TARGET_ARM_TRUSTED_FIRMWARE_LATEST_LTS_2_10_VERSION + default "lts-v2.8.20" if BR2_TARGET_ARM_TRUSTED_FIRMWARE_LATEST_LTS_2_8_VERSION + default "custom" if BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL + default BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION \ + if BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT + default BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE \ + if BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION + +if BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL + string "URL of custom repository" + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION + string "Custom repository version" + help + Revision to use in the typical format used by Git + E.G. a sha id, a tag, .. + +endif + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM + string "ATF platform" + help + Target plaform to build for. + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_TARGET_BOARD + string "ATF target board" + help + Target board to build for. In many cases, this can be left + empty. + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_DTS_PATH + string "Device Tree Source file paths" + help + Space-separated list of paths to device tree source files + that will be copied to fdts/ before starting the build. + + To use this device tree source file, the ATF configuration + file must refer to it. + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP + bool "Build FIP image" + help + This option enables building the FIP image (Firmware Image + Package). This is typically the image format used by + platforms were ATF encapsulates the second stage bootloader + (such as U-Boot). + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31 + bool "Build BL31 image" + help + This option enables building the BL31 image. This is + typically used on platforms where another bootloader (e.g + U-Boot) encapsulates ATF BL31. + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31_UBOOT + bool "Build BL31 U-Boot image" + select BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31 + help + Generates a U-Boot image named atf-uboot.ub containing + bl31.bin. This is used for example by the Xilinx version of + U-Boot SPL to load ATF on the ZynqMP SoC. + +choice + prompt "BL32" + default BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_DEFAULT + help + Select BL32 stage for the trusted firmware + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_DEFAULT + bool "Default" + help + With this option selected, ATF will not use any BL32 stage, + unless if one is explicitly chosen using the SPD (for + AArch64) or AARCH32_SP (for AArch32) variables, which can be + passed through + BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES. + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE + bool "OP-TEE OS" + depends on BR2_TARGET_OPTEE_OS + help + This option allows to embed OP-TEE OS as the BL32 part of + the ARM Trusted Firmware boot sequence. + +endchoice + +choice + prompt "BL33" + default BR2_TARGET_ARM_TRUSTED_FIRMWARE_NONE_AS_BL33 + help + Select the image to include as BL33. + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_NONE_AS_BL33 + bool "None" + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_BAREBOX_AS_BL33 + bool "Barebox" + depends on BR2_TARGET_BAREBOX + help + This option allows to embed the Barebox generic BL33 image in + the ARM Trusted Firmware. It ensures that the Barebox package + gets built before ATF, and that the appropriate BL33 + variable pointing to the generic bl33 image is passed + when building ATF. + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33 + bool "U-Boot" + depends on BR2_TARGET_UBOOT + help + This option allows to embed u-boot.bin as the BL33 part of + the ARM Trusted Firmware. It ensures that the u-boot package + gets built before ATF, and that the appropriate BL33 + variable pointing to u-boot.bin is passed when building ATF. + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_EDK2_AS_BL33 + bool "EDK2" + depends on BR2_TARGET_EDK2 + help + This option allows to embed EDK2 as the BL33 part of + the ARM Trusted Firmware. It ensures that the EDK2 package + gets built before ATF, and that the appropriate BL33 + variable pointing to the EDK2 is passed when building ATF. + + Do not choose this option if you intend to build ATF and EDK2 + for the 'qemu_sbsa' platform. In this case, due to the EDK2 + build system, the dependency between ATF and EDK is reversed. + +endchoice + +if BR2_TARGET_ARM_TRUSTED_FIRMWARE_BAREBOX_AS_BL33 + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_BAREBOX_BL33_IMAGE + string "Barebox BL33 image name" + default "*-generic-bl33.img" + help + Name of the Barebox BL33 image to include in ATF, it must + have been installed to BINARIES_DIR by the Barebox package. + +endif + +if BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33 + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_BL33_IMAGE + string "U-Boot BL33 image name" + default "u-boot.bin" + help + Name of the U-Boot BL33 image to include in ATF, it must + have been installed to BINARIES_DIR by the U-Boot package. + +endif + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_RCW + bool "Include NXP RCW in BL2" + depends on BR2_PACKAGE_HOST_QORIQ_RCW + help + Include the NXP RCW (Reset Control Word) in BL2. See + package/qoriq-rcw/ for more details. This is mostly useful + on NXP LayerScape platforms. + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_TARGETS + string "Additional ATF make targets" + help + Additional targets for the ATF build + E.G. When using the QorIQ custom ATF repository from NXP, + the target 'pbl' can be used to build the pbl binary. + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES + string "Additional ATF build variables" + help + Additional parameters for the ATF build + E.G. 'DEBUG=1 LOG_LEVEL=20' + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_DEBUG + bool "Build in debug mode" + help + Enable this option to build ATF with DEBUG=1. + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_IMAGES + string "Binary boot images" + default "*.bin" + help + Names of generated image files that are installed in the + output images/ directory. + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_DTC + bool "Needs dtc" + select BR2_PACKAGE_HOST_DTC + help + Select this option if your ATF board configuration + requires the Device Tree compiler to be available. + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_ARM32_TOOLCHAIN + bool "Needs arm-none-eabi toolchain" + depends on BR2_aarch64 + depends on BR2_HOSTARCH = "x86_64" + help + Select this option if your ATF board configuration requires + an ARM32 bare metal toolchain to be available. + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_SSP + bool "Build with SSP" + depends on BR2_TOOLCHAIN_HAS_SSP + depends on !BR2_SSP_NONE + help + Say 'y' here if you want to build ATF with SSP. + + Your board must have SSP support in ATF: it must have an + implementation for plat_get_stack_protector_canary(). + + If you say 'y', the SSP level will be the level selected + by the global SSP setting. + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_SSP_LEVEL + string + default "default" if BR2_SSP_REGULAR + default "strong" if BR2_SSP_STRONG + default "all" if BR2_SSP_ALL + +endif diff --git a/boot/arm-trusted-firmware/arm-trusted-firmware.mk b/boot/arm-trusted-firmware/arm-trusted-firmware.mk new file mode 100644 index 00000000..172a930b --- /dev/null +++ b/boot/arm-trusted-firmware/arm-trusted-firmware.mk @@ -0,0 +1,233 @@ +################################################################################ +# +# arm-trusted-firmware +# +################################################################################ + +ARM_TRUSTED_FIRMWARE_VERSION = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_VERSION)) + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL),y) +# Handle custom ATF tarballs as specified by the configuration +ARM_TRUSTED_FIRMWARE_TARBALL = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION)) +ARM_TRUSTED_FIRMWARE_SITE = $(patsubst %/,%,$(dir $(ARM_TRUSTED_FIRMWARE_TARBALL))) +ARM_TRUSTED_FIRMWARE_SOURCE = $(notdir $(ARM_TRUSTED_FIRMWARE_TARBALL)) +else ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT),y) +ARM_TRUSTED_FIRMWARE_SITE = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL)) +ARM_TRUSTED_FIRMWARE_SITE_METHOD = git +else +# Handle stable official ATF versions +ARM_TRUSTED_FIRMWARE_SITE = https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git +ARM_TRUSTED_FIRMWARE_SITE_METHOD = git +# The licensing of custom or from-git versions is unknown. +# This is valid only for the latest (i.e. known) version. +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_LATEST_VERSION)$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_LATEST_LTS_2_10_VERSION)$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_LATEST_LTS_2_8_VERSION),y) +ARM_TRUSTED_FIRMWARE_LICENSE = BSD-3-Clause +ARM_TRUSTED_FIRMWARE_LICENSE_FILES = docs/license.rst +endif +endif + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE):$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION)$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL)$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT),y:y) +BR_NO_CHECK_HASH_FOR += $(ARM_TRUSTED_FIRMWARE_SOURCE) +endif + +ARM_TRUSTED_FIRMWARE_INSTALL_IMAGES = YES + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_DTC),y) +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += host-dtc +endif + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_ARM32_TOOLCHAIN),y) +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += host-arm-gnu-toolchain +endif + +ARM_TRUSTED_FIRMWARE_PLATFORM = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM)) + +ARM_TRUSTED_FIRMWARE_TARGET_BOARD = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_TARGET_BOARD)) + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_DEBUG),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += DEBUG=1 +ifneq ($(ARM_TRUSTED_FIRMWARE_TARGET_BOARD),) +ARM_TRUSTED_FIRMWARE_IMG_DIR = $(@D)/build/$(ARM_TRUSTED_FIRMWARE_PLATFORM)/$(ARM_TRUSTED_FIRMWARE_TARGET_BOARD)/debug +else +ARM_TRUSTED_FIRMWARE_IMG_DIR = $(@D)/build/$(ARM_TRUSTED_FIRMWARE_PLATFORM)/debug +endif +else +ifneq ($(ARM_TRUSTED_FIRMWARE_TARGET_BOARD),) +ARM_TRUSTED_FIRMWARE_IMG_DIR = $(@D)/build/$(ARM_TRUSTED_FIRMWARE_PLATFORM)/$(ARM_TRUSTED_FIRMWARE_TARGET_BOARD)/release +else +ARM_TRUSTED_FIRMWARE_IMG_DIR = $(@D)/build/$(ARM_TRUSTED_FIRMWARE_PLATFORM)/release +endif +endif + +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += \ + $(if $(VERBOSE),V=1) \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + BUILD_STRING=$(ARM_TRUSTED_FIRMWARE_VERSION) \ + $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES)) \ + PLAT=$(ARM_TRUSTED_FIRMWARE_PLATFORM) \ + TARGET_BOARD=$(ARM_TRUSTED_FIRMWARE_TARGET_BOARD) \ + HOSTCC="$(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS)" + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_SSP),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += \ + ENABLE_STACK_PROTECTOR=$(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_SSP_LEVEL)) +else +ARM_TRUSTED_FIRMWARE_CFLAGS += -fno-stack-protector +endif + +ifeq ($(BR2_PIC_PIE),y) +ARM_TRUSTED_FIRMWARE_CFLAGS += -fno-PIE +ARM_TRUSTED_FIRMWARE_LDFLAGS += -no-pie +endif + +ARM_TRUSTED_FIRMWARE_MAKE_ENV += \ + $(TARGET_MAKE_ENV) \ + CFLAGS="$(ARM_TRUSTED_FIRMWARE_CFLAGS)" \ + LDFLAGS="$(ARM_TRUSTED_FIRMWARE_LDFLAGS)" + +ifeq ($(BR2_ARM_CPU_ARMV7A),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += ARM_ARCH_MAJOR=7 +else ifeq ($(BR2_ARM_CPU_ARMV8A),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += ARM_ARCH_MAJOR=8 +endif + +ifeq ($(BR2_arm),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += ARCH=aarch32 +else ifeq ($(BR2_aarch64),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += ARCH=aarch64 +endif + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE),y) +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += optee-os +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += \ + BL32=$(BINARIES_DIR)/tee-header_v2.bin \ + BL32_EXTRA1=$(BINARIES_DIR)/tee-pager_v2.bin \ + BL32_EXTRA2=$(BINARIES_DIR)/tee-pageable_v2.bin +ifeq ($(BR2_aarch64),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += SPD=opteed +endif +ifeq ($(BR2_arm),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += AARCH32_SP=optee +endif +endif # BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_BAREBOX_AS_BL33),y) +ARM_TRUSTED_FIRMWARE_BAREBOX_BIN = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_BAREBOX_BL33_IMAGE)) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += BL33=$(BINARIES_DIR)/$(ARM_TRUSTED_FIRMWARE_BAREBOX_BIN) +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += barebox +endif + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_EDK2_AS_BL33),y) +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += edk2 +# Since the flash device name vary between platforms, we use the variable +# provided by the EDK2 package for this. Using this variable here is OK +# as it will expand after all dependencies are resolved, inside _BUILD_CMDS. +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += \ + BL33=$(BINARIES_DIR)/$(call qstrip,$(BR2_TARGET_EDK2_FD_NAME).fd) +endif + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33),y) +ARM_TRUSTED_FIRMWARE_UBOOT_BIN = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_BL33_IMAGE)) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += BL33=$(BINARIES_DIR)/$(ARM_TRUSTED_FIRMWARE_UBOOT_BIN) +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += uboot +endif + +ifeq ($(BR2_TARGET_VEXPRESS_FIRMWARE),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += SCP_BL2=$(BINARIES_DIR)/scp-fw.bin +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += vexpress-firmware +endif + +ifeq ($(BR2_TARGET_BINARIES_MARVELL),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += SCP_BL2=$(BINARIES_DIR)/scp-fw.bin +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += binaries-marvell +endif + +ifeq ($(BR2_TARGET_MV_DDR_MARVELL),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += MV_DDR_PATH=$(MV_DDR_MARVELL_DIR) +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += mv-ddr-marvell +endif + +ARM_TRUSTED_FIRMWARE_MAKE_TARGETS = all + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP),y) +ARM_TRUSTED_FIRMWARE_MAKE_TARGETS += fip +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += host-openssl +endif + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_RCW),y) +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += host-qoriq-rcw +ARM_TRUSTED_FIRMWARE_MAKE_TARGETS += pbl +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += RCW=$(BINARIES_DIR)/PBL.bin +endif + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31),y) +ARM_TRUSTED_FIRMWARE_MAKE_TARGETS += bl31 +endif + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31_UBOOT),y) +define ARM_TRUSTED_FIRMWARE_BL31_UBOOT_BUILD +# Get the entry point address from the elf. + BASE_ADDR=$$($(TARGET_READELF) -h $(ARM_TRUSTED_FIRMWARE_IMG_DIR)/bl31/bl31.elf | \ + sed -r '/^ Entry point address:\s*(.*)/!d; s//\1/') && \ + $(MKIMAGE) \ + -A $(MKIMAGE_ARCH) -O arm-trusted-firmware -C none \ + -a $${BASE_ADDR} -e $${BASE_ADDR} \ + -d $(ARM_TRUSTED_FIRMWARE_IMG_DIR)/bl31.bin \ + $(ARM_TRUSTED_FIRMWARE_IMG_DIR)/atf-uboot.ub +endef +define ARM_TRUSTED_FIRMWARE_BL31_UBOOT_INSTALL + $(INSTALL) -m 0644 $(ARM_TRUSTED_FIRMWARE_IMG_DIR)/atf-uboot.ub \ + $(BINARIES_DIR)/atf-uboot.ub +endef +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += RESET_TO_BL31=1 +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += host-uboot-tools +endif + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_ATF_BL31_ELF),y) +define ARM_TRUSTED_FIRMWARE_BL31_UBOOT_INSTALL_ELF + $(INSTALL) -D -m 0644 $(ARM_TRUSTED_FIRMWARE_IMG_DIR)/bl31/bl31.elf \ + $(BINARIES_DIR)/bl31.elf +endef +endif + +ARM_TRUSTED_FIRMWARE_MAKE_TARGETS += \ + $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_TARGETS)) + +ARM_TRUSTED_FIRMWARE_CUSTOM_DTS_PATH = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_DTS_PATH)) + +define ARM_TRUSTED_FIRMWARE_BUILD_CMDS + $(if $(ARM_TRUSTED_FIRMWARE_CUSTOM_DTS_PATH), + cp -f $(ARM_TRUSTED_FIRMWARE_CUSTOM_DTS_PATH) $(@D)/fdts/ + ) + $(ARM_TRUSTED_FIRMWARE_MAKE_ENV) $(MAKE) -C $(@D) \ + $(ARM_TRUSTED_FIRMWARE_MAKE_OPTS) \ + $(ARM_TRUSTED_FIRMWARE_MAKE_TARGETS) + $(ARM_TRUSTED_FIRMWARE_BL31_UBOOT_BUILD) +endef + +define ARM_TRUSTED_FIRMWARE_INSTALL_IMAGES_CMDS + $(foreach f,$(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_IMAGES)), \ + cp -dpf $(ARM_TRUSTED_FIRMWARE_IMG_DIR)/$(f) $(BINARIES_DIR)/ + ) + $(ARM_TRUSTED_FIRMWARE_BL31_UBOOT_INSTALL) + $(ARM_TRUSTED_FIRMWARE_BL31_UBOOT_INSTALL_ELF) +endef + +# Configuration check +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE)$(BR_BUILDING),yy) + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL),y) +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/boot/arm-trusted-firmware/lts-v2.10.5/arm-trusted-firmware.hash b/boot/arm-trusted-firmware/lts-v2.10.5/arm-trusted-firmware.hash new file mode 100644 index 00000000..66573371 --- /dev/null +++ b/boot/arm-trusted-firmware/lts-v2.10.5/arm-trusted-firmware.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 62af6f1f2e9406d761ace03025f6bf22a0670578b1d0b76092dc1db455746dad arm-trusted-firmware-lts-v2.10.5-git4.tar.gz +sha256 130d0c6e5159fa454b1e969fd281fa1d388819aefb203f65dd282544b5ab7ba9 docs/license.rst diff --git a/boot/arm-trusted-firmware/lts-v2.8.20/0001-build-tools-avoid-unnecessary-link.patch b/boot/arm-trusted-firmware/lts-v2.8.20/0001-build-tools-avoid-unnecessary-link.patch new file mode 100644 index 00000000..9e0ea742 --- /dev/null +++ b/boot/arm-trusted-firmware/lts-v2.8.20/0001-build-tools-avoid-unnecessary-link.patch @@ -0,0 +1,77 @@ +From aa57ce632c629fe72ff417e261e0f5bfd8db6bab Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Vincent=20Stehl=C3=A9?= +Date: Tue, 4 Jul 2023 16:14:02 +0200 +Subject: [PATCH] build(tools): avoid unnecessary link +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +In their respective makefiles, cert_create, encrypt_fw and fiptool +depend on the --openssl phony target as a prerequisite. This forces +those tools to be re-linked each time. + +Move the dependencies on the --openssl target from the tools to their +makefiles all targets, to avoid unnecessary linking while preserving the +OpenSSL version printing done in the --openssl targets when in debug. + +Fixes: cf2dd17ddda2 ("refactor(security): add OpenSSL 1.x compatibility") +Signed-off-by: Vincent Stehlé +Change-Id: I98a3ab30f36dffc253cecaaf3a57d2712522135d +Upstream: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/commit/?id=aa57ce632c629fe72ff417e261e0f5bfd8db6bab +--- + tools/cert_create/Makefile | 4 ++-- + tools/encrypt_fw/Makefile | 4 ++-- + tools/fiptool/Makefile | 4 ++-- + 3 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/tools/cert_create/Makefile b/tools/cert_create/Makefile +index 042e844626..b911d19d2b 100644 +--- a/tools/cert_create/Makefile ++++ b/tools/cert_create/Makefile +@@ -85,9 +85,9 @@ HOSTCC ?= gcc + + .PHONY: all clean realclean --openssl + +-all: ${BINARY} ++all: --openssl ${BINARY} + +-${BINARY}: --openssl ${OBJECTS} Makefile ++${BINARY}: ${OBJECTS} Makefile + @echo " HOSTLD $@" + @echo 'const char build_msg[] = "Built : "__TIME__", "__DATE__; \ + const char platform_msg[] = "${PLAT_MSG}";' | \ +diff --git a/tools/encrypt_fw/Makefile b/tools/encrypt_fw/Makefile +index 2939b142be..924e5febab 100644 +--- a/tools/encrypt_fw/Makefile ++++ b/tools/encrypt_fw/Makefile +@@ -65,9 +65,9 @@ HOSTCC ?= gcc + + .PHONY: all clean realclean --openssl + +-all: ${BINARY} ++all: --openssl ${BINARY} + +-${BINARY}: --openssl ${OBJECTS} Makefile ++${BINARY}: ${OBJECTS} Makefile + @echo " HOSTLD $@" + @echo 'const char build_msg[] = "Built : "__TIME__", "__DATE__;' | \ + ${HOSTCC} -c ${HOSTCCFLAGS} -xc - -o src/build_msg.o +diff --git a/tools/fiptool/Makefile b/tools/fiptool/Makefile +index 2ebee33931..4bdebd9235 100644 +--- a/tools/fiptool/Makefile ++++ b/tools/fiptool/Makefile +@@ -68,9 +68,9 @@ DEPS := $(patsubst %.o,%.d,$(OBJECTS)) + + .PHONY: all clean distclean --openssl + +-all: ${PROJECT} ++all: --openssl ${PROJECT} + +-${PROJECT}: --openssl ${OBJECTS} Makefile ++${PROJECT}: ${OBJECTS} Makefile + @echo " HOSTLD $@" + ${Q}${HOSTCC} ${OBJECTS} -o $@ ${LDLIBS} + @${ECHO_BLANK_LINE} +-- +2.25.1 + diff --git a/boot/arm-trusted-firmware/lts-v2.8.20/arm-trusted-firmware.hash b/boot/arm-trusted-firmware/lts-v2.8.20/arm-trusted-firmware.hash new file mode 100644 index 00000000..6368bf7f --- /dev/null +++ b/boot/arm-trusted-firmware/lts-v2.8.20/arm-trusted-firmware.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a90617cc2c1791c98d36b9e3d9a7f3f77029897e00c4279ff4ef559b769e9d7b arm-trusted-firmware-lts-v2.8.20-git4.tar.gz +sha256 130d0c6e5159fa454b1e969fd281fa1d388819aefb203f65dd282544b5ab7ba9 docs/license.rst diff --git a/boot/arm-trusted-firmware/v2.11/arm-trusted-firmware.hash b/boot/arm-trusted-firmware/v2.11/arm-trusted-firmware.hash new file mode 100644 index 00000000..984978dc --- /dev/null +++ b/boot/arm-trusted-firmware/v2.11/arm-trusted-firmware.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c0f23ccc71c49989e9ad238acf334473c17b7c88f79a20c829c3d443e3794a22 arm-trusted-firmware-v2.11-git4.tar.gz +sha256 03d5088ff4fbfe989f3c807117356191c263cf27d62ee6916bde8532611728ed docs/license.rst diff --git a/boot/arm-trusted-firmware/v2.2/0001-PATCH-feat-build-add-support-for-new-binutils-versio.patch b/boot/arm-trusted-firmware/v2.2/0001-PATCH-feat-build-add-support-for-new-binutils-versio.patch new file mode 100644 index 00000000..d4d2b068 --- /dev/null +++ b/boot/arm-trusted-firmware/v2.2/0001-PATCH-feat-build-add-support-for-new-binutils-versio.patch @@ -0,0 +1,59 @@ +From 5e1beb793c06352e87c46eca1144ff1fe8555103 Mon Sep 17 00:00:00 2001 +From: Heiko Thiery +Date: Mon, 10 Jul 2023 10:43:03 +0200 +Subject: [PATCH] [PATCH] feat(build): add support for new binutils versions + +Users of GNU ld (BPF) from binutils 2.39+ will observe multiple instaces +of a new warning when linking the bl*.elf in the form: + + ld.bfd: warning: stm32mp1_helper.o: missing .note.GNU-stack section implies executable stack + ld.bfd: NOTE: This behaviour is deprecated and will be removed in a future version of the linker + ld.bfd: warning: bl2.elf has a LOAD segment with RWX permissions + ld.bfd: warning: bl32.elf has a LOAD segment with RWX permissions + +These new warnings are enbaled by default to secure elf binaries: + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a6e8434126b8fac7aa75107 + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=0d38576a34ec64a1b4500c9277a8e9d0f07e6774 + +Fix it in a similar way to what the Linux kernel does, see: +https://lore.kernel.org/all/20220810222442.2296651-1-ndesaulniers@google.com/ + +Following the reasoning there, we set "-z noexecstack" for all linkers +(although LLVM's LLD defaults to it) and optional add +--no-warn-rwx-segments since this a ld.bfd related. + +Signed-off-by: Marco Felsch +Signed-off-by: Robert Schwebel +Change-Id: I9430f5fa5036ca88da46cd3b945754d62616b617 + +Signed-off-by: Heiko Thiery +Upstream: https://github.com/ARM-software/arm-trusted-firmware/commit/1f49db5f25cdd4e43825c9bcc0575070b80f628c +--- + Makefile | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 721246d51..5893cf422 100644 +--- a/Makefile ++++ b/Makefile +@@ -297,11 +297,16 @@ endif + + GCC_V_OUTPUT := $(shell $(CC) -v 2>&1) + ++TF_LDFLAGS += -z noexecstack ++ + ifneq ($(findstring armlink,$(notdir $(LD))),) + TF_LDFLAGS += --diag_error=warning --lto_level=O1 + TF_LDFLAGS += --remove --info=unused,unusedsymbols + else +-TF_LDFLAGS += --fatal-warnings -O1 ++# With ld.bfd version 2.39 and newer new warnings are added. Skip those since we ++# are not loaded by a elf loader. ++TF_LDFLAGS += $(call ld_option, --no-warn-rwx-segments) ++TF_LDFLAGS += -O1 + TF_LDFLAGS += --gc-sections + endif + TF_LDFLAGS += $(TF_LDFLAGS_$(ARCH)) +-- +2.30.2 + diff --git a/boot/arm-trusted-firmware/v2.3/0001-feat-build-add-support-for-new-binutils-versions.patch b/boot/arm-trusted-firmware/v2.3/0001-feat-build-add-support-for-new-binutils-versions.patch new file mode 100644 index 00000000..335c1855 --- /dev/null +++ b/boot/arm-trusted-firmware/v2.3/0001-feat-build-add-support-for-new-binutils-versions.patch @@ -0,0 +1,61 @@ +From 0f75b03c008eacb9818af3a56dc088e72a623d17 Mon Sep 17 00:00:00 2001 +From: Marco Felsch +Date: Wed, 9 Nov 2022 12:59:09 +0100 +Subject: [PATCH] feat(build): add support for new binutils versions + +Users of GNU ld (BPF) from binutils 2.39+ will observe multiple instaces +of a new warning when linking the bl*.elf in the form: + + ld.bfd: warning: stm32mp1_helper.o: missing .note.GNU-stack section implies executable stack + ld.bfd: NOTE: This behaviour is deprecated and will be removed in a future version of the linker + ld.bfd: warning: bl2.elf has a LOAD segment with RWX permissions + ld.bfd: warning: bl32.elf has a LOAD segment with RWX permissions + +These new warnings are enbaled by default to secure elf binaries: + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a6e8434126b8fac7aa75107 + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=0d38576a34ec64a1b4500c9277a8e9d0f07e6774 + +Fix it in a similar way to what the Linux kernel does, see: +https://lore.kernel.org/all/20220810222442.2296651-1-ndesaulniers@google.com/ + +Following the reasoning there, we set "-z noexecstack" for all linkers +(although LLVM's LLD defaults to it) and optional add +--no-warn-rwx-segments since this a ld.bfd related. + +Signed-off-by: Marco Felsch +Signed-off-by: Robert Schwebel +Change-Id: I9430f5fa5036ca88da46cd3b945754d62616b617 +Signed-off-by: Heiko Thiery +Upstream: https://github.com/ARM-software/arm-trusted-firmware/commit/1f49db5f25cdd4e43825c9bcc0575070b80f628c +--- + Makefile | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 1ddb7b844..470956b19 100644 +--- a/Makefile ++++ b/Makefile +@@ -416,6 +416,8 @@ endif + + GCC_V_OUTPUT := $(shell $(CC) -v 2>&1) + ++TF_LDFLAGS += -z noexecstack ++ + # LD = armlink + ifneq ($(findstring armlink,$(notdir $(LD))),) + TF_LDFLAGS += --diag_error=warning --lto_level=O1 +@@ -442,7 +444,10 @@ TF_LDFLAGS += $(subst --,-Xlinker --,$(TF_LDFLAGS_$(ARCH))) + + # LD = gcc-ld (ld) or llvm-ld (ld.lld) or other + else +-TF_LDFLAGS += --fatal-warnings -O1 ++# With ld.bfd version 2.39 and newer new warnings are added. Skip those since we ++# are not loaded by a elf loader. ++TF_LDFLAGS += $(call ld_option, --no-warn-rwx-segments) ++TF_LDFLAGS += -O1 + TF_LDFLAGS += --gc-sections + # ld.lld doesn't recognize the errata flags, + # therefore don't add those in that case +-- +2.30.2 + diff --git a/boot/arm-trusted-firmware/v2.4/0001-feat-build-add-support-for-new-binutils-versions.patch b/boot/arm-trusted-firmware/v2.4/0001-feat-build-add-support-for-new-binutils-versions.patch new file mode 100644 index 00000000..335c1855 --- /dev/null +++ b/boot/arm-trusted-firmware/v2.4/0001-feat-build-add-support-for-new-binutils-versions.patch @@ -0,0 +1,61 @@ +From 0f75b03c008eacb9818af3a56dc088e72a623d17 Mon Sep 17 00:00:00 2001 +From: Marco Felsch +Date: Wed, 9 Nov 2022 12:59:09 +0100 +Subject: [PATCH] feat(build): add support for new binutils versions + +Users of GNU ld (BPF) from binutils 2.39+ will observe multiple instaces +of a new warning when linking the bl*.elf in the form: + + ld.bfd: warning: stm32mp1_helper.o: missing .note.GNU-stack section implies executable stack + ld.bfd: NOTE: This behaviour is deprecated and will be removed in a future version of the linker + ld.bfd: warning: bl2.elf has a LOAD segment with RWX permissions + ld.bfd: warning: bl32.elf has a LOAD segment with RWX permissions + +These new warnings are enbaled by default to secure elf binaries: + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a6e8434126b8fac7aa75107 + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=0d38576a34ec64a1b4500c9277a8e9d0f07e6774 + +Fix it in a similar way to what the Linux kernel does, see: +https://lore.kernel.org/all/20220810222442.2296651-1-ndesaulniers@google.com/ + +Following the reasoning there, we set "-z noexecstack" for all linkers +(although LLVM's LLD defaults to it) and optional add +--no-warn-rwx-segments since this a ld.bfd related. + +Signed-off-by: Marco Felsch +Signed-off-by: Robert Schwebel +Change-Id: I9430f5fa5036ca88da46cd3b945754d62616b617 +Signed-off-by: Heiko Thiery +Upstream: https://github.com/ARM-software/arm-trusted-firmware/commit/1f49db5f25cdd4e43825c9bcc0575070b80f628c +--- + Makefile | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 1ddb7b844..470956b19 100644 +--- a/Makefile ++++ b/Makefile +@@ -416,6 +416,8 @@ endif + + GCC_V_OUTPUT := $(shell $(CC) -v 2>&1) + ++TF_LDFLAGS += -z noexecstack ++ + # LD = armlink + ifneq ($(findstring armlink,$(notdir $(LD))),) + TF_LDFLAGS += --diag_error=warning --lto_level=O1 +@@ -442,7 +444,10 @@ TF_LDFLAGS += $(subst --,-Xlinker --,$(TF_LDFLAGS_$(ARCH))) + + # LD = gcc-ld (ld) or llvm-ld (ld.lld) or other + else +-TF_LDFLAGS += --fatal-warnings -O1 ++# With ld.bfd version 2.39 and newer new warnings are added. Skip those since we ++# are not loaded by a elf loader. ++TF_LDFLAGS += $(call ld_option, --no-warn-rwx-segments) ++TF_LDFLAGS += -O1 + TF_LDFLAGS += --gc-sections + # ld.lld doesn't recognize the errata flags, + # therefore don't add those in that case +-- +2.30.2 + diff --git a/boot/arm-trusted-firmware/v2.5/0001-feat-build-add-support-for-new-binutils-versions.patch b/boot/arm-trusted-firmware/v2.5/0001-feat-build-add-support-for-new-binutils-versions.patch new file mode 100644 index 00000000..335c1855 --- /dev/null +++ b/boot/arm-trusted-firmware/v2.5/0001-feat-build-add-support-for-new-binutils-versions.patch @@ -0,0 +1,61 @@ +From 0f75b03c008eacb9818af3a56dc088e72a623d17 Mon Sep 17 00:00:00 2001 +From: Marco Felsch +Date: Wed, 9 Nov 2022 12:59:09 +0100 +Subject: [PATCH] feat(build): add support for new binutils versions + +Users of GNU ld (BPF) from binutils 2.39+ will observe multiple instaces +of a new warning when linking the bl*.elf in the form: + + ld.bfd: warning: stm32mp1_helper.o: missing .note.GNU-stack section implies executable stack + ld.bfd: NOTE: This behaviour is deprecated and will be removed in a future version of the linker + ld.bfd: warning: bl2.elf has a LOAD segment with RWX permissions + ld.bfd: warning: bl32.elf has a LOAD segment with RWX permissions + +These new warnings are enbaled by default to secure elf binaries: + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a6e8434126b8fac7aa75107 + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=0d38576a34ec64a1b4500c9277a8e9d0f07e6774 + +Fix it in a similar way to what the Linux kernel does, see: +https://lore.kernel.org/all/20220810222442.2296651-1-ndesaulniers@google.com/ + +Following the reasoning there, we set "-z noexecstack" for all linkers +(although LLVM's LLD defaults to it) and optional add +--no-warn-rwx-segments since this a ld.bfd related. + +Signed-off-by: Marco Felsch +Signed-off-by: Robert Schwebel +Change-Id: I9430f5fa5036ca88da46cd3b945754d62616b617 +Signed-off-by: Heiko Thiery +Upstream: https://github.com/ARM-software/arm-trusted-firmware/commit/1f49db5f25cdd4e43825c9bcc0575070b80f628c +--- + Makefile | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 1ddb7b844..470956b19 100644 +--- a/Makefile ++++ b/Makefile +@@ -416,6 +416,8 @@ endif + + GCC_V_OUTPUT := $(shell $(CC) -v 2>&1) + ++TF_LDFLAGS += -z noexecstack ++ + # LD = armlink + ifneq ($(findstring armlink,$(notdir $(LD))),) + TF_LDFLAGS += --diag_error=warning --lto_level=O1 +@@ -442,7 +444,10 @@ TF_LDFLAGS += $(subst --,-Xlinker --,$(TF_LDFLAGS_$(ARCH))) + + # LD = gcc-ld (ld) or llvm-ld (ld.lld) or other + else +-TF_LDFLAGS += --fatal-warnings -O1 ++# With ld.bfd version 2.39 and newer new warnings are added. Skip those since we ++# are not loaded by a elf loader. ++TF_LDFLAGS += $(call ld_option, --no-warn-rwx-segments) ++TF_LDFLAGS += -O1 + TF_LDFLAGS += --gc-sections + # ld.lld doesn't recognize the errata flags, + # therefore don't add those in that case +-- +2.30.2 + diff --git a/boot/arm-trusted-firmware/v2.6/0001-feat-build-add-support-for-new-binutils-versions.patch b/boot/arm-trusted-firmware/v2.6/0001-feat-build-add-support-for-new-binutils-versions.patch new file mode 100644 index 00000000..335c1855 --- /dev/null +++ b/boot/arm-trusted-firmware/v2.6/0001-feat-build-add-support-for-new-binutils-versions.patch @@ -0,0 +1,61 @@ +From 0f75b03c008eacb9818af3a56dc088e72a623d17 Mon Sep 17 00:00:00 2001 +From: Marco Felsch +Date: Wed, 9 Nov 2022 12:59:09 +0100 +Subject: [PATCH] feat(build): add support for new binutils versions + +Users of GNU ld (BPF) from binutils 2.39+ will observe multiple instaces +of a new warning when linking the bl*.elf in the form: + + ld.bfd: warning: stm32mp1_helper.o: missing .note.GNU-stack section implies executable stack + ld.bfd: NOTE: This behaviour is deprecated and will be removed in a future version of the linker + ld.bfd: warning: bl2.elf has a LOAD segment with RWX permissions + ld.bfd: warning: bl32.elf has a LOAD segment with RWX permissions + +These new warnings are enbaled by default to secure elf binaries: + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a6e8434126b8fac7aa75107 + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=0d38576a34ec64a1b4500c9277a8e9d0f07e6774 + +Fix it in a similar way to what the Linux kernel does, see: +https://lore.kernel.org/all/20220810222442.2296651-1-ndesaulniers@google.com/ + +Following the reasoning there, we set "-z noexecstack" for all linkers +(although LLVM's LLD defaults to it) and optional add +--no-warn-rwx-segments since this a ld.bfd related. + +Signed-off-by: Marco Felsch +Signed-off-by: Robert Schwebel +Change-Id: I9430f5fa5036ca88da46cd3b945754d62616b617 +Signed-off-by: Heiko Thiery +Upstream: https://github.com/ARM-software/arm-trusted-firmware/commit/1f49db5f25cdd4e43825c9bcc0575070b80f628c +--- + Makefile | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 1ddb7b844..470956b19 100644 +--- a/Makefile ++++ b/Makefile +@@ -416,6 +416,8 @@ endif + + GCC_V_OUTPUT := $(shell $(CC) -v 2>&1) + ++TF_LDFLAGS += -z noexecstack ++ + # LD = armlink + ifneq ($(findstring armlink,$(notdir $(LD))),) + TF_LDFLAGS += --diag_error=warning --lto_level=O1 +@@ -442,7 +444,10 @@ TF_LDFLAGS += $(subst --,-Xlinker --,$(TF_LDFLAGS_$(ARCH))) + + # LD = gcc-ld (ld) or llvm-ld (ld.lld) or other + else +-TF_LDFLAGS += --fatal-warnings -O1 ++# With ld.bfd version 2.39 and newer new warnings are added. Skip those since we ++# are not loaded by a elf loader. ++TF_LDFLAGS += $(call ld_option, --no-warn-rwx-segments) ++TF_LDFLAGS += -O1 + TF_LDFLAGS += --gc-sections + # ld.lld doesn't recognize the errata flags, + # therefore don't add those in that case +-- +2.30.2 + diff --git a/boot/arm-trusted-firmware/v2.7/0001-feat-build-add-support-for-new-binutils-versions.patch b/boot/arm-trusted-firmware/v2.7/0001-feat-build-add-support-for-new-binutils-versions.patch new file mode 100644 index 00000000..335c1855 --- /dev/null +++ b/boot/arm-trusted-firmware/v2.7/0001-feat-build-add-support-for-new-binutils-versions.patch @@ -0,0 +1,61 @@ +From 0f75b03c008eacb9818af3a56dc088e72a623d17 Mon Sep 17 00:00:00 2001 +From: Marco Felsch +Date: Wed, 9 Nov 2022 12:59:09 +0100 +Subject: [PATCH] feat(build): add support for new binutils versions + +Users of GNU ld (BPF) from binutils 2.39+ will observe multiple instaces +of a new warning when linking the bl*.elf in the form: + + ld.bfd: warning: stm32mp1_helper.o: missing .note.GNU-stack section implies executable stack + ld.bfd: NOTE: This behaviour is deprecated and will be removed in a future version of the linker + ld.bfd: warning: bl2.elf has a LOAD segment with RWX permissions + ld.bfd: warning: bl32.elf has a LOAD segment with RWX permissions + +These new warnings are enbaled by default to secure elf binaries: + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a6e8434126b8fac7aa75107 + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=0d38576a34ec64a1b4500c9277a8e9d0f07e6774 + +Fix it in a similar way to what the Linux kernel does, see: +https://lore.kernel.org/all/20220810222442.2296651-1-ndesaulniers@google.com/ + +Following the reasoning there, we set "-z noexecstack" for all linkers +(although LLVM's LLD defaults to it) and optional add +--no-warn-rwx-segments since this a ld.bfd related. + +Signed-off-by: Marco Felsch +Signed-off-by: Robert Schwebel +Change-Id: I9430f5fa5036ca88da46cd3b945754d62616b617 +Signed-off-by: Heiko Thiery +Upstream: https://github.com/ARM-software/arm-trusted-firmware/commit/1f49db5f25cdd4e43825c9bcc0575070b80f628c +--- + Makefile | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 1ddb7b844..470956b19 100644 +--- a/Makefile ++++ b/Makefile +@@ -416,6 +416,8 @@ endif + + GCC_V_OUTPUT := $(shell $(CC) -v 2>&1) + ++TF_LDFLAGS += -z noexecstack ++ + # LD = armlink + ifneq ($(findstring armlink,$(notdir $(LD))),) + TF_LDFLAGS += --diag_error=warning --lto_level=O1 +@@ -442,7 +444,10 @@ TF_LDFLAGS += $(subst --,-Xlinker --,$(TF_LDFLAGS_$(ARCH))) + + # LD = gcc-ld (ld) or llvm-ld (ld.lld) or other + else +-TF_LDFLAGS += --fatal-warnings -O1 ++# With ld.bfd version 2.39 and newer new warnings are added. Skip those since we ++# are not loaded by a elf loader. ++TF_LDFLAGS += $(call ld_option, --no-warn-rwx-segments) ++TF_LDFLAGS += -O1 + TF_LDFLAGS += --gc-sections + # ld.lld doesn't recognize the errata flags, + # therefore don't add those in that case +-- +2.30.2 + diff --git a/boot/arm-trusted-firmware/v2.8/0001-feat-build-add-support-for-new-binutils-versions.patch b/boot/arm-trusted-firmware/v2.8/0001-feat-build-add-support-for-new-binutils-versions.patch new file mode 100644 index 00000000..335c1855 --- /dev/null +++ b/boot/arm-trusted-firmware/v2.8/0001-feat-build-add-support-for-new-binutils-versions.patch @@ -0,0 +1,61 @@ +From 0f75b03c008eacb9818af3a56dc088e72a623d17 Mon Sep 17 00:00:00 2001 +From: Marco Felsch +Date: Wed, 9 Nov 2022 12:59:09 +0100 +Subject: [PATCH] feat(build): add support for new binutils versions + +Users of GNU ld (BPF) from binutils 2.39+ will observe multiple instaces +of a new warning when linking the bl*.elf in the form: + + ld.bfd: warning: stm32mp1_helper.o: missing .note.GNU-stack section implies executable stack + ld.bfd: NOTE: This behaviour is deprecated and will be removed in a future version of the linker + ld.bfd: warning: bl2.elf has a LOAD segment with RWX permissions + ld.bfd: warning: bl32.elf has a LOAD segment with RWX permissions + +These new warnings are enbaled by default to secure elf binaries: + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a6e8434126b8fac7aa75107 + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=0d38576a34ec64a1b4500c9277a8e9d0f07e6774 + +Fix it in a similar way to what the Linux kernel does, see: +https://lore.kernel.org/all/20220810222442.2296651-1-ndesaulniers@google.com/ + +Following the reasoning there, we set "-z noexecstack" for all linkers +(although LLVM's LLD defaults to it) and optional add +--no-warn-rwx-segments since this a ld.bfd related. + +Signed-off-by: Marco Felsch +Signed-off-by: Robert Schwebel +Change-Id: I9430f5fa5036ca88da46cd3b945754d62616b617 +Signed-off-by: Heiko Thiery +Upstream: https://github.com/ARM-software/arm-trusted-firmware/commit/1f49db5f25cdd4e43825c9bcc0575070b80f628c +--- + Makefile | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 1ddb7b844..470956b19 100644 +--- a/Makefile ++++ b/Makefile +@@ -416,6 +416,8 @@ endif + + GCC_V_OUTPUT := $(shell $(CC) -v 2>&1) + ++TF_LDFLAGS += -z noexecstack ++ + # LD = armlink + ifneq ($(findstring armlink,$(notdir $(LD))),) + TF_LDFLAGS += --diag_error=warning --lto_level=O1 +@@ -442,7 +444,10 @@ TF_LDFLAGS += $(subst --,-Xlinker --,$(TF_LDFLAGS_$(ARCH))) + + # LD = gcc-ld (ld) or llvm-ld (ld.lld) or other + else +-TF_LDFLAGS += --fatal-warnings -O1 ++# With ld.bfd version 2.39 and newer new warnings are added. Skip those since we ++# are not loaded by a elf loader. ++TF_LDFLAGS += $(call ld_option, --no-warn-rwx-segments) ++TF_LDFLAGS += -O1 + TF_LDFLAGS += --gc-sections + # ld.lld doesn't recognize the errata flags, + # therefore don't add those in that case +-- +2.30.2 + diff --git a/boot/arm-trusted-firmware/v2.8/0002-build-tools-avoid-unnecessary-link.patch b/boot/arm-trusted-firmware/v2.8/0002-build-tools-avoid-unnecessary-link.patch new file mode 100644 index 00000000..9e0ea742 --- /dev/null +++ b/boot/arm-trusted-firmware/v2.8/0002-build-tools-avoid-unnecessary-link.patch @@ -0,0 +1,77 @@ +From aa57ce632c629fe72ff417e261e0f5bfd8db6bab Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Vincent=20Stehl=C3=A9?= +Date: Tue, 4 Jul 2023 16:14:02 +0200 +Subject: [PATCH] build(tools): avoid unnecessary link +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +In their respective makefiles, cert_create, encrypt_fw and fiptool +depend on the --openssl phony target as a prerequisite. This forces +those tools to be re-linked each time. + +Move the dependencies on the --openssl target from the tools to their +makefiles all targets, to avoid unnecessary linking while preserving the +OpenSSL version printing done in the --openssl targets when in debug. + +Fixes: cf2dd17ddda2 ("refactor(security): add OpenSSL 1.x compatibility") +Signed-off-by: Vincent Stehlé +Change-Id: I98a3ab30f36dffc253cecaaf3a57d2712522135d +Upstream: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/commit/?id=aa57ce632c629fe72ff417e261e0f5bfd8db6bab +--- + tools/cert_create/Makefile | 4 ++-- + tools/encrypt_fw/Makefile | 4 ++-- + tools/fiptool/Makefile | 4 ++-- + 3 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/tools/cert_create/Makefile b/tools/cert_create/Makefile +index 042e844626..b911d19d2b 100644 +--- a/tools/cert_create/Makefile ++++ b/tools/cert_create/Makefile +@@ -85,9 +85,9 @@ HOSTCC ?= gcc + + .PHONY: all clean realclean --openssl + +-all: ${BINARY} ++all: --openssl ${BINARY} + +-${BINARY}: --openssl ${OBJECTS} Makefile ++${BINARY}: ${OBJECTS} Makefile + @echo " HOSTLD $@" + @echo 'const char build_msg[] = "Built : "__TIME__", "__DATE__; \ + const char platform_msg[] = "${PLAT_MSG}";' | \ +diff --git a/tools/encrypt_fw/Makefile b/tools/encrypt_fw/Makefile +index 2939b142be..924e5febab 100644 +--- a/tools/encrypt_fw/Makefile ++++ b/tools/encrypt_fw/Makefile +@@ -65,9 +65,9 @@ HOSTCC ?= gcc + + .PHONY: all clean realclean --openssl + +-all: ${BINARY} ++all: --openssl ${BINARY} + +-${BINARY}: --openssl ${OBJECTS} Makefile ++${BINARY}: ${OBJECTS} Makefile + @echo " HOSTLD $@" + @echo 'const char build_msg[] = "Built : "__TIME__", "__DATE__;' | \ + ${HOSTCC} -c ${HOSTCCFLAGS} -xc - -o src/build_msg.o +diff --git a/tools/fiptool/Makefile b/tools/fiptool/Makefile +index 2ebee33931..4bdebd9235 100644 +--- a/tools/fiptool/Makefile ++++ b/tools/fiptool/Makefile +@@ -68,9 +68,9 @@ DEPS := $(patsubst %.o,%.d,$(OBJECTS)) + + .PHONY: all clean distclean --openssl + +-all: ${PROJECT} ++all: --openssl ${PROJECT} + +-${PROJECT}: --openssl ${OBJECTS} Makefile ++${PROJECT}: ${OBJECTS} Makefile + @echo " HOSTLD $@" + ${Q}${HOSTCC} ${OBJECTS} -o $@ ${LDLIBS} + @${ECHO_BLANK_LINE} +-- +2.25.1 + diff --git a/boot/arm-trusted-firmware/v2.9/0001-build-tools-avoid-unnecessary-link.patch b/boot/arm-trusted-firmware/v2.9/0001-build-tools-avoid-unnecessary-link.patch new file mode 100644 index 00000000..9e0ea742 --- /dev/null +++ b/boot/arm-trusted-firmware/v2.9/0001-build-tools-avoid-unnecessary-link.patch @@ -0,0 +1,77 @@ +From aa57ce632c629fe72ff417e261e0f5bfd8db6bab Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Vincent=20Stehl=C3=A9?= +Date: Tue, 4 Jul 2023 16:14:02 +0200 +Subject: [PATCH] build(tools): avoid unnecessary link +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +In their respective makefiles, cert_create, encrypt_fw and fiptool +depend on the --openssl phony target as a prerequisite. This forces +those tools to be re-linked each time. + +Move the dependencies on the --openssl target from the tools to their +makefiles all targets, to avoid unnecessary linking while preserving the +OpenSSL version printing done in the --openssl targets when in debug. + +Fixes: cf2dd17ddda2 ("refactor(security): add OpenSSL 1.x compatibility") +Signed-off-by: Vincent Stehlé +Change-Id: I98a3ab30f36dffc253cecaaf3a57d2712522135d +Upstream: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/commit/?id=aa57ce632c629fe72ff417e261e0f5bfd8db6bab +--- + tools/cert_create/Makefile | 4 ++-- + tools/encrypt_fw/Makefile | 4 ++-- + tools/fiptool/Makefile | 4 ++-- + 3 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/tools/cert_create/Makefile b/tools/cert_create/Makefile +index 042e844626..b911d19d2b 100644 +--- a/tools/cert_create/Makefile ++++ b/tools/cert_create/Makefile +@@ -85,9 +85,9 @@ HOSTCC ?= gcc + + .PHONY: all clean realclean --openssl + +-all: ${BINARY} ++all: --openssl ${BINARY} + +-${BINARY}: --openssl ${OBJECTS} Makefile ++${BINARY}: ${OBJECTS} Makefile + @echo " HOSTLD $@" + @echo 'const char build_msg[] = "Built : "__TIME__", "__DATE__; \ + const char platform_msg[] = "${PLAT_MSG}";' | \ +diff --git a/tools/encrypt_fw/Makefile b/tools/encrypt_fw/Makefile +index 2939b142be..924e5febab 100644 +--- a/tools/encrypt_fw/Makefile ++++ b/tools/encrypt_fw/Makefile +@@ -65,9 +65,9 @@ HOSTCC ?= gcc + + .PHONY: all clean realclean --openssl + +-all: ${BINARY} ++all: --openssl ${BINARY} + +-${BINARY}: --openssl ${OBJECTS} Makefile ++${BINARY}: ${OBJECTS} Makefile + @echo " HOSTLD $@" + @echo 'const char build_msg[] = "Built : "__TIME__", "__DATE__;' | \ + ${HOSTCC} -c ${HOSTCCFLAGS} -xc - -o src/build_msg.o +diff --git a/tools/fiptool/Makefile b/tools/fiptool/Makefile +index 2ebee33931..4bdebd9235 100644 +--- a/tools/fiptool/Makefile ++++ b/tools/fiptool/Makefile +@@ -68,9 +68,9 @@ DEPS := $(patsubst %.o,%.d,$(OBJECTS)) + + .PHONY: all clean distclean --openssl + +-all: ${PROJECT} ++all: --openssl ${PROJECT} + +-${PROJECT}: --openssl ${OBJECTS} Makefile ++${PROJECT}: ${OBJECTS} Makefile + @echo " HOSTLD $@" + ${Q}${HOSTCC} ${OBJECTS} -o $@ ${LDLIBS} + @${ECHO_BLANK_LINE} +-- +2.25.1 + diff --git a/boot/at91bootstrap3/Config.in b/boot/at91bootstrap3/Config.in new file mode 100644 index 00000000..b3e18fce --- /dev/null +++ b/boot/at91bootstrap3/Config.in @@ -0,0 +1,117 @@ +config BR2_TARGET_AT91BOOTSTRAP3 + bool "AT91 Bootstrap 3+" + depends on BR2_arm926t || BR2_cortex_a5 || BR2_cortex_a7 + help + AT91Bootstrap is a first level bootloader for the Atmel AT91 + devices. It integrates algorithms for: + - Device initialization such as clock configuration, PIO + settings... + - Peripheral drivers such as PIO, PMC or SDRAMC... + - Physical media algorithm such as DataFlash, NandFlash, NOR + Flash... + + https://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap + +if BR2_TARGET_AT91BOOTSTRAP3 + +choice + + prompt "AT91 Bootstrap 3+ version" + +config BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION + bool "4.0.0" + +config BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION_3X + bool "3.10.3" + +config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT + bool "Custom Git repository" + help + This option allows Buildroot to get the AT91 Bootstrap 3 + source code from a Git repository. + +config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_SVN + bool "Custom SVN repository" + help + This option allows Buildroot to get the AT91 Bootstrap 3 + source code from a Subversion repository + +config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL + bool "Custom tarball" + +endchoice + +config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION + string "URL of custom AT91Bootstrap tarball" + depends on BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL + +if BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT || BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_SVN + +config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL + string "URL of custom repository" + +config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION + string "Custom repository version" + help + Revision to use in the typical format used by Git or SVN + E.G. a sha id, a tag, branch, .. + +endif + +config BR2_TARGET_AT91BOOTSTRAP3_VERSION + string + default "v4.0.0" if BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION + default "v3.10.3" if BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION_3X + default BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION \ + if BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT || BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_SVN + default "custom" if BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL + +config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_PATCH_DIR + string "custom patch dir" + help + If your board requires custom patches, add the path to the + directory containing the patches here. The patches must be + named at91bootstrap3-.patch. + + Most users may leave this empty + +# +# Configuration selection +# + +choice + prompt "AT91 Bootstrap 3 configuration" + default BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG + +config BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG + bool "Using a defconfig" + +config BR2_TARGET_AT91BOOTSTRAP3_USE_CUSTOM_CONFIG + bool "Using a custom config file" + +endchoice + +config BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG + string "Defconfig name" + depends on BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG + help + Name of the at91bootstrap3 defconfig file to use, without the + trailing _defconfig. The defconfig is located at + board//_defconfig in the at91bootstrap3 + tree. + +config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_TARGET_AT91BOOTSTRAP3_USE_CUSTOM_CONFIG + help + Path to the at91bootstrap3 configuration file + +config BR2_TARGET_AT91BOOTSTRAP3_NEEDS_PYTHON3 + bool "needs host-python3" + help + Enable this option if the at91bootstrap build process needs + Python 3.x to be available on the host. This is needed in + some at91bootstrap configurations to use NAND/PMECC Python + scripts. + +endif # BR2_TARGET_AT91BOOTSTRAP3 diff --git a/boot/at91bootstrap3/at91bootstrap3.hash b/boot/at91bootstrap3/at91bootstrap3.hash new file mode 100644 index 00000000..e611f163 --- /dev/null +++ b/boot/at91bootstrap3/at91bootstrap3.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 b6ae5bcaacc5a949f400182e036ae053049638444a3ba8b1dd154ec5f7898d8e at91bootstrap3-v3.10.3.tar.gz +sha256 08c5b95df28be7f2e0439fb2b77fe27524f97c499850641e4540c07ea0b2c25d at91bootstrap3-v4.0.0.tar.gz +sha256 5a3809b1c2ba13b7242572322951311c584419f1f8516f665d6c06f0668d78de LICENSES/MIT.txt diff --git a/boot/at91bootstrap3/at91bootstrap3.mk b/boot/at91bootstrap3/at91bootstrap3.mk new file mode 100644 index 00000000..4bbe7cc7 --- /dev/null +++ b/boot/at91bootstrap3/at91bootstrap3.mk @@ -0,0 +1,109 @@ +################################################################################ +# +# at91bootstrap3 +# +################################################################################ + +AT91BOOTSTRAP3_VERSION = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_VERSION)) + +ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL),y) +AT91BOOTSTRAP3_TARBALL = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION)) +AT91BOOTSTRAP3_SITE = $(patsubst %/,%,$(dir $(AT91BOOTSTRAP3_TARBALL))) +AT91BOOTSTRAP3_SOURCE = $(notdir $(AT91BOOTSTRAP3_TARBALL)) +BR_NO_CHECK_HASH_FOR += $(AT91BOOTSTRAP3_SOURCE) +else ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT),y) +AT91BOOTSTRAP3_SITE = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL)) +AT91BOOTSTRAP3_SITE_METHOD = git +BR_NO_CHECK_HASH_FOR += $(AT91BOOTSTRAP3_SOURCE) +else ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_SVN),y) +AT91BOOTSTRAP3_SITE = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL)) +AT91BOOTSTRAP3_SITE_METHOD = svn +BR_NO_CHECK_HASH_FOR += $(AT91BOOTSTRAP3_SOURCE) +else +AT91BOOTSTRAP3_SITE = $(call github,linux4sam,at91bootstrap,$(AT91BOOTSTRAP3_VERSION)) +endif + +ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION),y) +AT91BOOTSTRAP3_LICENSE = MIT +AT91BOOTSTRAP3_LICENSE_FILES = LICENSES/MIT.txt +else ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION_3X),y) +AT91BOOTSTRAP3_LICENSE = Atmel License +endif + +AT91BOOTSTRAP3_CPE_ID_VENDOR = linux4sam +AT91BOOTSTRAP3_CPE_ID_PRODUCT = at91bootstrap + +AT91BOOTSTRAP3_INSTALL_IMAGES = YES +AT91BOOTSTRAP3_INSTALL_TARGET = NO + +ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_NEEDS_PYTHON3),y) +AT91BOOTSTRAP3_DEPENDENCIES += host-python3 +endif + +AT91BOOTSTRAP3_CUSTOM_PATCH_DIR = \ + $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_PATCH_DIR)) + +AT91BOOTSTRAP3_MAKE_OPTS = CROSS_COMPILE=$(TARGET_CROSS) DESTDIR=$(BINARIES_DIR) + +ifneq ($(AT91BOOTSTRAP3_CUSTOM_PATCH_DIR),) +define AT91BOOTSTRAP3_APPLY_CUSTOM_PATCHES + $(APPLY_PATCHES) $(@D) $(AT91BOOTSTRAP3_CUSTOM_PATCH_DIR) \*.patch +endef + +AT91BOOTSTRAP3_POST_PATCH_HOOKS += AT91BOOTSTRAP3_APPLY_CUSTOM_PATCHES +endif + +define AT91BOOTSTRAP3_BUILD_CMDS + $(MAKE) $(AT91BOOTSTRAP3_MAKE_OPTS) -C $(@D) +endef + +define AT91BOOTSTRAP3_INSTALL_IMAGES_CMDS + cp $(wildcard $(@D)/build/binaries/*.bin $(@D)/binaries/*.bin) $(BINARIES_DIR) +endef + +ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG),y) +AT91BOOTSTRAP3_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG))_defconfig +else ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_CUSTOM_CONFIG),y) +AT91BOOTSTRAP3_KCONFIG_FILE = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE)) +endif + +AT91BOOTSTRAP3_KCONFIG_EDITORS = menuconfig xconfig gconfig +AT91BOOTSTRAP3_KCONFIG_OPTS = $(AT91BOOTSTRAP3_MAKE_OPTS) + +# Checks to give errors that the user can understand +# Must be before we call to kconfig-package +ifeq ($(BR_BUILDING),y) + +ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG),y) +# We must use the user-supplied kconfig value, because +# AT91BOOTSTRAP3_KCONFIG_DEFCONFIG will at least contain +# the trailing _defconfig +ifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG)),) +$(error No at91bootstrap3 defconfig name specified, check your BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG setting) +endif +endif + +ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_CUSTOM_CONFIG),y) +ifeq ($(AT91BOOTSTRAP3_KCONFIG_FILE),) +$(error No at91bootstrap3 configuration file specified, check your BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE setting) +endif +endif + +ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT),y) +ifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL)),) +$(error No custom at91bootstrap3 repository URL specified. Check your BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL setting) +endif +ifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION)),) +$(error No custom at91bootstrap3 repository version specified. Check your BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION setting) +endif +endif + +ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL),y) +ifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION)),) +$(error No custom AT91Bootstrap3 tarball specified. Check your BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION setting) +endif # qstrip BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION +endif # BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL + +endif # BR_BUILDING + +$(eval $(kconfig-package)) diff --git a/boot/barebox/Config.in b/boot/barebox/Config.in new file mode 100644 index 00000000..0bd33867 --- /dev/null +++ b/boot/barebox/Config.in @@ -0,0 +1,97 @@ +config BR2_TARGET_BAREBOX + bool "Barebox" + help + The Barebox bootloader, formerly known as U-Boot v2. + + http://www.barebox.org + +if BR2_TARGET_BAREBOX +choice + prompt "version" + help + Select the specific Barebox version you want to use + +config BR2_TARGET_BAREBOX_LATEST_VERSION + bool "2022.12.0" + +config BR2_TARGET_BAREBOX_CUSTOM_VERSION + bool "Custom version" + help + This option allows to use a specific official versions + +config BR2_TARGET_BAREBOX_CUSTOM_TARBALL + bool "Custom tarball" + +config BR2_TARGET_BAREBOX_CUSTOM_GIT + bool "Custom Git repository" + +endchoice + +config BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE + string "Barebox version" + depends on BR2_TARGET_BAREBOX_CUSTOM_VERSION + +if BR2_TARGET_BAREBOX_CUSTOM_TARBALL + +config BR2_TARGET_BAREBOX_CUSTOM_TARBALL_LOCATION + string "URL of custom Barebox tarball" + +endif + +config BR2_TARGET_BAREBOX_VERSION + string + default "2022.12.0" if BR2_TARGET_BAREBOX_LATEST_VERSION + default BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE if BR2_TARGET_BAREBOX_CUSTOM_VERSION + default "custom" if BR2_TARGET_BAREBOX_CUSTOM_TARBALL + default BR2_TARGET_BAREBOX_CUSTOM_GIT_VERSION if BR2_TARGET_BAREBOX_CUSTOM_GIT + +config BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR + string "custom patch dir" + help + If your board requires custom patches, add the path to the + directory containing the patches here. The patches must be + named barebox--.patch. + + Most users may leave this empty + +config BR2_TARGET_BAREBOX_NEEDS_OPENSSL + bool "Barebox needs OpenSSL" + help + Select this option if your Barebox board configuration + requires OpenSSL to be available on the host. + +config BR2_TARGET_BAREBOX_NEEDS_LIBUSB + bool "Barebox needs LibUSB" + help + Select this option if your Barebox board configuration + requires libUSB to be available on the host. + +if BR2_TARGET_BAREBOX_CUSTOM_GIT + +config BR2_TARGET_BAREBOX_CUSTOM_GIT_REPO_URL + string "URL of custom Git repository" + +config BR2_TARGET_BAREBOX_CUSTOM_GIT_VERSION + string "Custom Git version" + +endif + +source "boot/barebox/barebox/Config.in" + +menuconfig BR2_TARGET_BAREBOX_AUX + bool "Build barebox with an auxiliary config" + help + Build barebox with an auxiliary configuration. + + Useful for building an SPL (Secondary Program Loader) in + addition to the traditional TPL (Tertiary Program Loader), + such as the X-Loader or MLO for Texas Instruments + processors. + +if BR2_TARGET_BAREBOX_AUX + +source "boot/barebox/barebox-aux/Config.in" + +endif + +endif diff --git a/boot/barebox/barebox-aux/Config.in b/boot/barebox/barebox-aux/Config.in new file mode 100644 index 00000000..4b0201ea --- /dev/null +++ b/boot/barebox/barebox-aux/Config.in @@ -0,0 +1,80 @@ +choice + prompt "Barebox configuration" + default BR2_TARGET_BAREBOX_AUX_USE_DEFCONFIG + +config BR2_TARGET_BAREBOX_AUX_USE_DEFCONFIG + bool "Using a defconfig" + +config BR2_TARGET_BAREBOX_AUX_USE_CUSTOM_CONFIG + bool "Using a custom config file" + +endchoice + +config BR2_TARGET_BAREBOX_AUX_BOARD_DEFCONFIG + string "board defconfig" + depends on BR2_TARGET_BAREBOX_AUX_USE_DEFCONFIG + help + Name of the board for which Barebox should be built, without + the _defconfig suffix. + +config BR2_TARGET_BAREBOX_AUX_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_TARGET_BAREBOX_AUX_USE_CUSTOM_CONFIG + help + Path to the barebox configuration file + +config BR2_TARGET_BAREBOX_AUX_CONFIG_FRAGMENT_FILES + string "Additional configuration fragment files" + help + A space-separated list of configuration fragment files, + that will be merged to the main Barebox configuration file. + +config BR2_TARGET_BAREBOX_AUX_IMAGE_FILE + string "Image file names" + help + Space-separated list of barebox images which will be copied to + the images directory. + + If left empty, defaults to: + - all images as listed in barebox-flash-images (>= v2015.12.0) + - the image pointed at by barebox-flash-image (>= v2012.10.0) + - barebox.bin for even older barebox versions + + In any case, this only influences the artifacts collected by + Buildroot. They will still need to be referenced from image + packages or flashed separately onto the hardware. + +config BR2_TARGET_BAREBOX_AUX_CUSTOM_ENV + bool "Generate an environment image" + help + Generate a custom environment image. This environment will + contain the variables and scripts to be used at boot by + barebox. + +config BR2_TARGET_BAREBOX_AUX_CUSTOM_ENV_PATH + string "Environment path" + depends on BR2_TARGET_BAREBOX_AUX_CUSTOM_ENV + help + Path to the directory containing the custom barebox + environment. Depending on your setup, it will probably be + based on either the content of the defaultenv or + defaultenv-2 directories in the barebox source code, plus + the additions needed. The output will be an image in the + barebox devfs format, stored in the images directory, with + the same name as the directory name given here. + +config BR2_TARGET_BAREBOX_AUX_CUSTOM_EMBEDDED_ENV_PATH + string "Embedded environment path" + help + If this option is not empty, it is the path to a custom + embedded barebox environment. This image will be used when + the environment found in the environment sector is + invalid. This option sets the barebox Kconfig option + CONFIG_DEFAULT_ENVIRONMENT_PATH to the specified path. This + way it is possible to use Buildroot variables like + TOPDIR etc. to refer to the custom environment. + + Depending on your setup, the custom embedded environment + will probably be based on either the content of the + defaultenv or defaultenv-2 directories in the barebox source + code. diff --git a/boot/barebox/barebox-aux/barebox-aux.hash b/boot/barebox/barebox-aux/barebox-aux.hash new file mode 120000 index 00000000..b6462b80 --- /dev/null +++ b/boot/barebox/barebox-aux/barebox-aux.hash @@ -0,0 +1 @@ +../barebox.hash \ No newline at end of file diff --git a/boot/barebox/barebox-aux/barebox-aux.mk b/boot/barebox/barebox-aux/barebox-aux.mk new file mode 100644 index 00000000..fb287d36 --- /dev/null +++ b/boot/barebox/barebox-aux/barebox-aux.mk @@ -0,0 +1,8 @@ +################################################################################ +# +# barebox-aux +# +################################################################################ + +# Instantiate the auxiliary barebox package +$(eval $(barebox-package)) diff --git a/boot/barebox/barebox.hash b/boot/barebox/barebox.hash new file mode 100644 index 00000000..161fc43d --- /dev/null +++ b/boot/barebox/barebox.hash @@ -0,0 +1,8 @@ +# From https://www.barebox.org/download/barebox-2022.12.0.tar.bz2.md5 +md5 e4bf25cbf1e0b0c9a67ee56214617b9c barebox-2022.12.0.tar.bz2 + +# Locally calculated +sha256 9f570d4ae089560bd6c17b2b7d21cdb6557ecb00612c77ecee72ac47575a6b74 barebox-2022.12.0.tar.bz2 + +# License files, locally computed +sha256 ab1122aa9f9073ad1ec824edcd970b16a6a7881a34a18fd56c080debb2dca5d4 COPYING diff --git a/boot/barebox/barebox.mk b/boot/barebox/barebox.mk new file mode 100644 index 00000000..fe366989 --- /dev/null +++ b/boot/barebox/barebox.mk @@ -0,0 +1,201 @@ +################################################################################ +# +# barebox +# +################################################################################ + +################################################################################ +# inner-barebox-package -- generates the KConfig logic and make targets needed +# to support a barebox package. All barebox packages are built from the same +# source (origin, version and patches). The remainder of the package +# configuration is unique to each barebox package. +# +# argument 1 is the uppercase package name (used for variable name-space) +################################################################################ + +define inner-barebox-package + +$(1)_VERSION = $$(call qstrip,$$(BR2_TARGET_BAREBOX_VERSION)) + +ifeq ($$(BR2_TARGET_BAREBOX_CUSTOM_TARBALL),y) +# Handle custom Barebox tarballs as specified by the configuration +$(1)_TARBALL = $$(call qstrip,$$(BR2_TARGET_BAREBOX_CUSTOM_TARBALL_LOCATION)) +$(1)_SITE = $$(patsubst %/,%,$$(dir $$($(1)_TARBALL))) +$(1)_SOURCE = $$(notdir $$($(1)_TARBALL)) +else ifeq ($$(BR2_TARGET_BAREBOX_CUSTOM_GIT),y) +$(1)_SITE = $$(call qstrip,$$(BR2_TARGET_BAREBOX_CUSTOM_GIT_REPO_URL)) +$(1)_SITE_METHOD = git +# Override the default value of _SOURCE to 'barebox-*' so that it is not +# downloaded a second time for barebox-aux; also alows avoiding the hash +# check: +$(1)_SOURCE = barebox-$$($(1)_VERSION)$$(BR_FMT_VERSION_git).tar.gz +else +# Handle stable official Barebox versions +$(1)_SOURCE = barebox-$$($(1)_VERSION).tar.bz2 +$(1)_SITE = https://www.barebox.org/download +endif + +$(1)_DL_SUBDIR = barebox + +$(1)_DEPENDENCIES = host-lzop +$(1)_LICENSE = GPL-2.0 with exceptions +ifeq ($(BR2_TARGET_BAREBOX_LATEST_VERSION),y) +$(1)_LICENSE_FILES = COPYING +endif + +ifeq ($(BR2_TARGET_BAREBOX_NEEDS_OPENSSL),y) +BAREBOX_DEPENDENCIES += host-openssl host-pkgconf +endif + +ifeq ($(BR2_TARGET_BAREBOX_NEEDS_LIBUSB),y) +BAREBOX_DEPENDENCIES += host-libusb host-pkgconf +endif + +$(1)_CUSTOM_EMBEDDED_ENV_PATH = $$(call qstrip,$$(BR2_TARGET_$(1)_CUSTOM_EMBEDDED_ENV_PATH)) + +ifneq ($$(call qstrip,$$(BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR)),) +define $(1)_APPLY_CUSTOM_PATCHES + $$(APPLY_PATCHES) $$(@D) \ + $$(BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR) \*.patch +endef + +$(1)_POST_PATCH_HOOKS += $(1)_APPLY_CUSTOM_PATCHES +endif + +$(1)_INSTALL_IMAGES = YES +ifneq ($$(BR2_TARGET_$(1)_BAREBOXENV),y) +$(1)_INSTALL_TARGET = NO +endif + +ifeq ($$(NORMALIZED_ARCH),i386) +$(1)_ARCH = x86 +else ifeq ($$(NORMALIZED_ARCH),x86_64) +$(1)_ARCH = x86 +else ifeq ($$(NORMALIZED_ARCH),powerpc) +$(1)_ARCH = ppc +else ifeq ($$(NORMALIZED_ARCH),arm64) +$(1)_ARCH = arm +else +$(1)_ARCH = $$(NORMALIZED_ARCH) +endif + +$(1)_MAKE_FLAGS = ARCH=$$($(1)_ARCH) CROSS_COMPILE="$$(TARGET_CROSS)" +$(1)_MAKE_ENV = $$(TARGET_MAKE_ENV) +$(1)_MAKE_ENV += \ + PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ + PKG_CONFIG_SYSROOT_DIR="/" \ + PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \ + PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \ + PKG_CONFIG_LIBDIR="$(HOST_DIR)/lib/pkgconfig:$(HOST_DIR)/share/pkgconfig" + +ifeq ($$(BR2_REPRODUCIBLE),y) +$(1)_MAKE_ENV += \ + KBUILD_BUILD_USER=buildroot \ + KBUILD_BUILD_HOST=buildroot \ + KBUILD_BUILD_TIMESTAMP="$$(shell LC_ALL=C TZ='UTC' date -d @$(SOURCE_DATE_EPOCH))" +endif + +ifeq ($$(BR2_TARGET_$(1)_USE_DEFCONFIG),y) +$(1)_KCONFIG_DEFCONFIG = $$(call qstrip,$$(BR2_TARGET_$(1)_BOARD_DEFCONFIG))_defconfig +else ifeq ($$(BR2_TARGET_$(1)_USE_CUSTOM_CONFIG),y) +$(1)_KCONFIG_FILE = $$(call qstrip,$$(BR2_TARGET_$(1)_CUSTOM_CONFIG_FILE)) +endif + +$(1)_KCONFIG_FRAGMENT_FILES = $$(call qstrip,$$(BR2_TARGET_$(1)_CONFIG_FRAGMENT_FILES)) +$(1)_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig +$(1)_KCONFIG_OPTS = $$($(1)_MAKE_FLAGS) + +$(1)_KCONFIG_DEPENDENCIES = \ + $(BR2_BISON_HOST_DEPENDENCY) \ + $(BR2_FLEX_HOST_DEPENDENCY) + +ifeq ($$(BR2_TARGET_$(1)_CUSTOM_ENV),y) +$(1)_ENV_NAME = $$(notdir $$(call qstrip,\ + $$(BR2_TARGET_$(1)_CUSTOM_ENV_PATH))) +define $(1)_BUILD_CUSTOM_ENV + $$(@D)/scripts/bareboxenv -s \ + $$(call qstrip, $$(BR2_TARGET_$(1)_CUSTOM_ENV_PATH)) \ + $$(@D)/$$($(1)_ENV_NAME) +endef +define $(1)_INSTALL_CUSTOM_ENV + cp $$(@D)/$$($(1)_ENV_NAME) $$(BINARIES_DIR) +endef +endif + +ifneq ($$($(1)_CUSTOM_EMBEDDED_ENV_PATH),) +define $(1)_KCONFIG_FIXUP_CUSTOM_EMBEDDED_ENV_PATH + $$(call KCONFIG_ENABLE_OPT,CONFIG_DEFAULT_ENVIRONMENT) + $$(call KCONFIG_SET_OPT,CONFIG_DEFAULT_ENVIRONMENT_PATH,"$$($(1)_CUSTOM_EMBEDDED_ENV_PATH)") +endef +endif + +define $(1)_KCONFIG_FIXUP_BAREBOXENV + $$(if $$(BR2_TARGET_$(1)_BAREBOXENV),\ + $$(call KCONFIG_ENABLE_OPT,CONFIG_BAREBOXENV_TARGET),\ + $$(call KCONFIG_DISABLE_OPT,CONFIG_BAREBOXENV_TARGET)) +endef + +define $(1)_KCONFIG_FIXUP_CMDS + $$($(1)_KCONFIG_FIXUP_CUSTOM_EMBEDDED_ENV_PATH) + $$($(1)_KCONFIG_FIXUP_BAREBOXENV) +endef + +define $(1)_BUILD_CMDS + $$($(1)_BUILD_BAREBOXENV_CMDS) + $$($(1)_MAKE_ENV) $$(MAKE) $$($(1)_MAKE_FLAGS) -C $$(@D) + $$($(1)_BUILD_CUSTOM_ENV) +endef + +$(1)_IMAGE_FILES = $$(call qstrip,$$(BR2_TARGET_$(1)_IMAGE_FILE)) + +define $(1)_INSTALL_IMAGES_CMDS + if test -n "$$($(1)_IMAGE_FILES)"; then \ + cp -L $$(foreach image,$$($(1)_IMAGE_FILES),$$(@D)/$$(image)) $$(BINARIES_DIR) ; \ + elif test -e $$(@D)/barebox-flash-images ; then \ + cp -L $$(foreach image,$$(shell cat $$(@D)/barebox-flash-images),$$(@D)/$$(image)) $$(BINARIES_DIR) ; \ + elif test -h $$(@D)/barebox-flash-image ; then \ + cp -L $$(@D)/barebox-flash-image $$(BINARIES_DIR)/barebox.bin ; \ + else \ + cp $$(@D)/barebox.bin $$(BINARIES_DIR);\ + fi + $$($(1)_INSTALL_CUSTOM_ENV) +endef + +# Starting with barebox v2020.09.0, the kconfig used calls the +# cross-compiler to check its capabilities. So we need the +# toolchain before we can call the configurators. +$(1)_KCONFIG_DEPENDENCIES += toolchain + +ifeq ($$(BR2_TARGET_$(1)_BAREBOXENV),y) +define $(1)_INSTALL_TARGET_CMDS + cp $$(@D)/scripts/bareboxenv-target $$(TARGET_DIR)/usr/bin/bareboxenv +endef +endif + +# Checks to give errors that the user can understand +# Must be before we call to kconfig-package +ifeq ($$(BR2_TARGET_$(1))$$(BR_BUILDING),yy) +# We must use the user-supplied kconfig value, because +# $(1)_KCONFIG_DEFCONFIG will at least contain the +# trailing _defconfig +ifeq ($$(or $$($(1)_KCONFIG_FILE),$$(call qstrip,$$(BR2_TARGET_$(1)_BOARD_DEFCONFIG))),) +$$(error No Barebox config. Check your BR2_TARGET_$(1)_BOARD_DEFCONFIG or BR2_TARGET_$(1)_CUSTOM_CONFIG_FILE settings) +endif +endif + +$$(eval $$(kconfig-package)) + +endef + +################################################################################ +# barebox-package -- the target generator macro for barebox packages +################################################################################ + +barebox-package=$(call inner-barebox-package,$(call UPPERCASE,$(pkgname))) + +include boot/barebox/barebox/barebox.mk +include boot/barebox/barebox-aux/barebox-aux.mk + +ifeq ($(BR2_TARGET_BAREBOX)$(BR2_TARGET_BAREBOX_LATEST_VERSION),y) +BR_NO_CHECK_HASH_FOR += $(BAREBOX_SOURCE) +endif diff --git a/boot/barebox/barebox/Config.in b/boot/barebox/barebox/Config.in new file mode 100644 index 00000000..2fd70a84 --- /dev/null +++ b/boot/barebox/barebox/Config.in @@ -0,0 +1,85 @@ +choice + prompt "Barebox configuration" + default BR2_TARGET_BAREBOX_USE_DEFCONFIG + +config BR2_TARGET_BAREBOX_USE_DEFCONFIG + bool "Using a defconfig" + +config BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG + bool "Using a custom config file" + +endchoice + +config BR2_TARGET_BAREBOX_BOARD_DEFCONFIG + string "board defconfig" + depends on BR2_TARGET_BAREBOX_USE_DEFCONFIG + help + Name of the board for which Barebox should be built, without + the _defconfig suffix. + +config BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG + help + Path to the barebox configuration file + +config BR2_TARGET_BAREBOX_CONFIG_FRAGMENT_FILES + string "Additional configuration fragment files" + help + A space-separated list of configuration fragment files, + that will be merged to the main Barebox configuration file. + +config BR2_TARGET_BAREBOX_IMAGE_FILE + string "Image file names" + help + Space-separated list of barebox images which will be copied to + the images directory. + + If left empty, defaults to: + - all images as listed in barebox-flash-images (>= v2015.12.0) + - the image pointed at by barebox-flash-image (>= v2012.10.0) + - barebox.bin for even older barebox versions + + In any case, this only influences the artifacts collected by + Buildroot. They will still need to be referenced from image + packages or flashed separately onto the hardware. + +config BR2_TARGET_BAREBOX_BAREBOXENV + bool "bareboxenv tool in target" + help + Install bareboxenv tool in target. + +config BR2_TARGET_BAREBOX_CUSTOM_ENV + bool "Generate an environment image" + help + Generate a custom environment image. This environment will + contain the variables and scripts to be used at boot by + barebox. + +config BR2_TARGET_BAREBOX_CUSTOM_ENV_PATH + string "Environment path" + depends on BR2_TARGET_BAREBOX_CUSTOM_ENV + help + Path to the directory containing the custom barebox + environment. Depending on your setup, it will probably be + based on either the content of the defaultenv or + defaultenv-2 directories in the barebox source code, plus + the additions needed. The output will be an image in the + barebox devfs format, stored in the images directory, with + the same name as the directory name given here. + +config BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH + string "Embedded environment path" + help + If this option is not empty, it is the path to a custom + embedded barebox environment. This image will be used when + the environment found in the environment sector is + invalid. This option sets the barebox Kconfig option + CONFIG_DEFAULT_ENVIRONMENT_PATH to the specified path. This + way it is possible to use Buildroot variables like + TOPDIR etc. to refer to the custom environment. + + Depending on your setup, the custom embedded environment + will probably be based on either the content of the + defaultenv or defaultenv-2 directories in the barebox source + code. diff --git a/boot/barebox/barebox/barebox.hash b/boot/barebox/barebox/barebox.hash new file mode 120000 index 00000000..b6462b80 --- /dev/null +++ b/boot/barebox/barebox/barebox.hash @@ -0,0 +1 @@ +../barebox.hash \ No newline at end of file diff --git a/boot/barebox/barebox/barebox.mk b/boot/barebox/barebox/barebox.mk new file mode 100644 index 00000000..6a5a80de --- /dev/null +++ b/boot/barebox/barebox/barebox.mk @@ -0,0 +1,8 @@ +################################################################################ +# +# barebox +# +################################################################################ + +# Instantiate the barebox package +$(eval $(barebox-package)) diff --git a/boot/binaries-marvell/Config.in b/boot/binaries-marvell/Config.in new file mode 100644 index 00000000..80fbecb2 --- /dev/null +++ b/boot/binaries-marvell/Config.in @@ -0,0 +1,12 @@ +config BR2_TARGET_BINARIES_MARVELL + bool "binaries-marvell" + depends on BR2_aarch64 + help + Some systems, including Marvell Armada SoC, have a separate + System Control Processor (SCP) for power management, clocks, + reset and system control. ATF Boot Loader stage 2 (BL2) loads + optional SCP_BL2 image into a platform-specific region + of secure memory. This package downloads and installs such + firmware, which is needed to build ATF. + + https://github.com/MarvellEmbeddedProcessors/binaries-marvell/ diff --git a/boot/binaries-marvell/binaries-marvell.hash b/boot/binaries-marvell/binaries-marvell.hash new file mode 100644 index 00000000..654fb94e --- /dev/null +++ b/boot/binaries-marvell/binaries-marvell.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 d818c95bcd4d5c026238d6e554151184ed7fea15bce1f861f9068b97b4cd320a binaries-marvell-c5d3ef2b63ba66d8717ecbe679fd2e639cde88ee.tar.gz +sha256 e6d08ef60068ee72c68835001a24eb832dcba27cac0dde0f179dfb428be050ca README.md diff --git a/boot/binaries-marvell/binaries-marvell.mk b/boot/binaries-marvell/binaries-marvell.mk new file mode 100644 index 00000000..1a27fa98 --- /dev/null +++ b/boot/binaries-marvell/binaries-marvell.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# binaries-marvell +# +################################################################################ + +# This is version binaries-marvell-armada-18.12 +BINARIES_MARVELL_VERSION = c5d3ef2b63ba66d8717ecbe679fd2e639cde88ee +BINARIES_MARVELL_SITE = $(call github,MarvellEmbeddedProcessors,binaries-marvell,$(BINARIES_MARVELL_VERSION)) + +BINARIES_MARVELL_LICENSE = GPL-2.0 with freertos-exception-2.0 +BINARIES_MARVELL_LICENSE_FILES = README.md + +BINARIES_MARVELL_INSTALL_IMAGES = YES + +define BINARIES_MARVELL_INSTALL_IMAGES_CMDS + $(INSTALL) -D -m 0644 $(@D)/mrvl_scp_bl2.img $(BINARIES_DIR)/scp-fw.bin +endef + +$(eval $(generic-package)) diff --git a/boot/boot-wrapper-aarch64/Config.in b/boot/boot-wrapper-aarch64/Config.in new file mode 100644 index 00000000..cf738928 --- /dev/null +++ b/boot/boot-wrapper-aarch64/Config.in @@ -0,0 +1,46 @@ +comment "boot-wrapper-aarch64 needs a Linux kernel to be built" + depends on BR2_aarch64 + depends on !BR2_LINUX_KERNEL + +config BR2_TARGET_BOOT_WRAPPER_AARCH64 + bool "boot-wrapper-aarch64" + depends on BR2_aarch64 + depends on BR2_LINUX_KERNEL + help + The boot-wrapper-aarch64 is a small bootloader that makes it + possible to start an Aarch64 kernel inside the available + software simulators for the Aarch64 architecture. + + git://git.kernel.org/pub/scm/linux/kernel/git/mark/boot-wrapper-aarch64.git + +if BR2_TARGET_BOOT_WRAPPER_AARCH64 + +config BR2_TARGET_BOOT_WRAPPER_AARCH64_DTS + string "Device Tree Source name" + default "" + help + Name of the Device Tree Source file to use to generate the + Device Tree Blob that will be embedded in the image + generated by the boot wrapper. Valid names are the .dts + files from arch/arm64/boot/dts/ in the kernel source + tree. The name must be specified without the .dts suffix. + +config BR2_TARGET_BOOT_WRAPPER_AARCH64_BOOTARGS + string "Kernel bootargs" + default "" + help + Kernel bootargs to embed inside the image generated by the + boot wrapper. + +config BR2_TARGET_BOOT_WRAPPER_AARCH64_PSCI + bool "Boot secondary SMP cores using PSCI" + help + Boot secondary SMP cores using PSCI firmware calls. If + disabled, the spin-table method is used instead. + +config BR2_TARGET_BOOT_WRAPPER_AARCH64_GICV3 + bool "Enable GICv3 instead of GICv2" + help + Boot using GICv3 instead of GICv2. + +endif diff --git a/boot/boot-wrapper-aarch64/boot-wrapper-aarch64.mk b/boot/boot-wrapper-aarch64/boot-wrapper-aarch64.mk new file mode 100644 index 00000000..95f7e227 --- /dev/null +++ b/boot/boot-wrapper-aarch64/boot-wrapper-aarch64.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# boot-wrapper-aarch64 +# +################################################################################ + +BOOT_WRAPPER_AARCH64_VERSION = 9f26a1c1f27bd6b5b66c265114848007fc22e4aa +BOOT_WRAPPER_AARCH64_SITE = https://git.kernel.org/pub/scm/linux/kernel/git/mark/boot-wrapper-aarch64.git +BOOT_WRAPPER_AARCH64_SITE_METHOD = git +BOOT_WRAPPER_AARCH64_LICENSE = BSD-3-Clause +BOOT_WRAPPER_AARCH64_LICENSE_FILES = LICENSE.txt +BOOT_WRAPPER_AARCH64_DEPENDENCIES = linux +BOOT_WRAPPER_AARCH64_INSTALL_IMAGES = YES + +# The Git repository does not have the generated configure script and +# Makefile. +BOOT_WRAPPER_AARCH64_AUTORECONF = YES + +BOOT_WRAPPER_AARCH64_DTB = $(LINUX_DIR)/arch/arm64/boot/dts/$(basename $(call qstrip,$(BR2_TARGET_BOOT_WRAPPER_AARCH64_DTS))).dtb + +BOOT_WRAPPER_AARCH64_CONF_OPTS = \ + --with-kernel-dir=$(LINUX_DIR) \ + --with-dtb=$(BOOT_WRAPPER_AARCH64_DTB) \ + --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 + +ifeq ($(BR2_TARGET_BOOT_WRAPPER_AARCH64_GICV3),y) +BOOT_WRAPPER_AARCH64_CONF_OPTS += --enable-gicv3 +endif + +# We need to convince the configure script that the Linux kernel tree +# exists, as well as the DTB and the kernel Image. Even though those +# are available on the build machine, the configure script uses +# AC_CHECK_FILE tests, which are always disabled in cross-compilation +# situations. +BOOT_WRAPPER_AARCH64_CONF_ENV = \ + $(call AUTOCONF_AC_CHECK_FILE_VAL,$(LINUX_DIR))=yes \ + $(call AUTOCONF_AC_CHECK_FILE_VAL,$(LINUX_DIR)$(BOOT_WRAPPER_AARCH64_DTB))=yes \ + $(call AUTOCONF_AC_CHECK_FILE_VAL,$(LINUX_DIR)/arch/arm64/boot/Image)=yes + +define BOOT_WRAPPER_AARCH64_INSTALL_IMAGES_CMDS + cp $(@D)/linux-system.axf $(BINARIES_DIR) +endef + +$(eval $(autotools-package)) diff --git a/boot/common.mk b/boot/common.mk new file mode 100644 index 00000000..3021e519 --- /dev/null +++ b/boot/common.mk @@ -0,0 +1 @@ +include $(sort $(wildcard boot/*/*.mk)) diff --git a/boot/edk2/Config.in b/boot/edk2/Config.in new file mode 100644 index 00000000..4e6e7d12 --- /dev/null +++ b/boot/edk2/Config.in @@ -0,0 +1,150 @@ +config BR2_TARGET_EDK2_ARCH_SUPPORTS + bool + default y if BR2_aarch64 + default y if BR2_i386 + default y if BR2_RISCV_64 + default y if BR2_x86_64 + +config BR2_TARGET_EDK2 + bool "EDK2" + depends on BR2_TARGET_EDK2_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 + select BR2_PACKAGE_EDK2_PLATFORMS + help + EDK II is a modern, feature-rich, cross-platform firmware + development environment for the UEFI and PI specifications. + + https://github.com/tianocore/tianocore.github.io/wiki/EDK-II + +if BR2_TARGET_EDK2 + +choice + prompt "Platform" + default BR2_TARGET_EDK2_PLATFORM_OVMF_I386 if BR2_i386 + default BR2_TARGET_EDK2_PLATFORM_OVMF_RISCV if BR2_RISCV_64 + default BR2_TARGET_EDK2_PLATFORM_OVMF_X64 if BR2_x86_64 + default BR2_TARGET_EDK2_PLATFORM_ARM_VIRT_QEMU if BR2_aarch64 + +config BR2_TARGET_EDK2_PLATFORM_OVMF_I386 + bool "i386" + depends on BR2_i386 || BR2_x86_64 + help + Platform configuration for a generic i386 target. + This platform will boot from flash address 0x0. + It should therefore be used as the first bootloader. + +config BR2_TARGET_EDK2_PLATFORM_OVMF_RISCV + bool "RISC-V" + depends on BR2_RISCV_64 + help + Platform configuration for RISC-V QEMU targeting the Virt + machine. This platform will only boot from flash address + 0x0. It should therefore be used as the first bootloader. + +config BR2_TARGET_EDK2_PLATFORM_OVMF_X64 + bool "x86-64" + depends on BR2_x86_64 + help + Platform configuration for a generic x86-64 target. + This platform will boot from flash address 0x0. + It should therefore be used as the first bootloader. + +config BR2_TARGET_EDK2_PLATFORM_ARM_VIRT_QEMU + bool "ARM Virt Qemu (flash)" + depends on BR2_aarch64 + help + Platform configuration for QEMU targeting the Virt machine. + This platform will only boot from flash address 0x0. + It should therefore be used as the first bootloader. + +config BR2_TARGET_EDK2_PLATFORM_ARM_VIRT_QEMU_KERNEL + bool "ARM Virt Qemu (kernel)" + depends on BR2_aarch64 + help + Platform configuration for QEMU targeting the Virt machine. + This platform can boot from either flash address 0x0 or via + the Linux boot protocol. It can therefore be loaded by a + previous bootloader like ARM Trusted Firmware or OP-TEE. + +config BR2_TARGET_EDK2_PLATFORM_ARM_SGI575 + bool "ARM SGI-575" + depends on BR2_aarch64 + help + Platform configuration for ARM SGI-575 on ARM's + Fixed Virtual Platform (FVP). + +config BR2_TARGET_EDK2_PLATFORM_ARM_VEXPRESS_FVP_AARCH64 + bool "ARM VExpress FVP Aarch64" + depends on BR2_aarch64 + help + Platform configuration for ARM Versatile Express targeting + the Aarch64 Fixed Virtual Platform (FVP). + +config BR2_TARGET_EDK2_PLATFORM_SOCIONEXT_DEVELOPERBOX + bool "Socionext DeveloperBox" + depends on BR2_aarch64 + depends on BR2_TARGET_ARM_TRUSTED_FIRMWARE + depends on !BR2_TARGET_ARM_TRUSTED_FIRMWARE_EDK2_AS_BL33 + select BR2_PACKAGE_HOST_DTC + select BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP + help + Platform configuration for Socionext SynQuacer DeveloperBox + (SC2A11). + +comment "Socionext DeveloperBox depends on ATF not using EDK2 as BL33" + depends on BR2_TARGET_ARM_TRUSTED_FIRMWARE_EDK2_AS_BL33 + +config BR2_TARGET_EDK2_PLATFORM_SOLIDRUN_ARMADA80X0MCBIN + bool "SolidRun MacchiatoBin" + depends on BR2_aarch64 + depends on BR2_TARGET_ARM_TRUSTED_FIRMWARE + select BR2_PACKAGE_EDK2_NON_OSI + select BR2_PACKAGE_HOST_DTC + select BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP + help + Platform configuration for the SolidRun MacchiatoBin. + +config BR2_TARGET_EDK2_PLATFORM_QEMU_SBSA + bool "QEMU SBSA" + depends on BR2_aarch64 + depends on BR2_TARGET_ARM_TRUSTED_FIRMWARE + depends on !BR2_TARGET_ARM_TRUSTED_FIRMWARE_EDK2_AS_BL33 + help + Platform configuration for QEMU targeting the SBSA reference + machine. + +comment "QEMU SBSA depends on ATF not using EDK2 as BL33" + depends on BR2_TARGET_ARM_TRUSTED_FIRMWARE_EDK2_AS_BL33 + +endchoice + +config BR2_TARGET_EDK2_OVMF_DEBUG_ON_SERIAL + bool "OVMF Debug on Serial" + depends on BR2_ENABLE_DEBUG + depends on BR2_TARGET_EDK2_PLATFORM_OVMF_I386 || \ + BR2_TARGET_EDK2_PLATFORM_OVMF_X64 + help + When EDK2 OVMF is built with debug, messages are printed to + IO port 0x402. Those messages are not shown in the normal + Qemu emulated serial port. Enabling this option will print + debug messages on the emulated serial port, potentially + mixing messages with UEFI serial console output. + + See OVMF README: + https://github.com/tianocore/edk2/blob/master/OvmfPkg/README + +config BR2_TARGET_EDK2_FD_NAME + string + default "OVMF" if BR2_TARGET_EDK2_PLATFORM_OVMF_I386 + default "OVMF" if BR2_TARGET_EDK2_PLATFORM_OVMF_X64 + default "QEMU_EFI" if BR2_TARGET_EDK2_PLATFORM_ARM_VIRT_QEMU + default "QEMU_EFI" if BR2_TARGET_EDK2_PLATFORM_ARM_VIRT_QEMU_KERNEL + default "BL33_AP_UEFI" if BR2_TARGET_EDK2_PLATFORM_ARM_SGI575 + default "FVP_AARCH64_EFI" if BR2_TARGET_EDK2_PLATFORM_ARM_VEXPRESS_FVP_AARCH64 + default "FVP_AARCH64_EFI" if BR2_TARGET_EDK2_PLATFORM_SOCIONEXT_DEVELOPERBOX + default "ARMADA_EFI" if BR2_TARGET_EDK2_PLATFORM_SOLIDRUN_ARMADA80X0MCBIN + +endif + +comment "EDK2 needs a toolchain w/ gcc >= 5" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_5 diff --git a/boot/edk2/edk2.hash b/boot/edk2/edk2.hash new file mode 100644 index 00000000..f7daa8dd --- /dev/null +++ b/boot/edk2/edk2.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 6bdfdffcc2235a117b3f9d4124da63103f19ff30157673f812e1093b20ebb7ad edk2-edk2-stable202308-git4.tar.gz +sha256 50ce20c9cfdb0e19ee34fe0a51fc0afe961f743697b068359ab2f862b494df80 License.txt diff --git a/boot/edk2/edk2.mk b/boot/edk2/edk2.mk new file mode 100644 index 00000000..87ac80c8 --- /dev/null +++ b/boot/edk2/edk2.mk @@ -0,0 +1,187 @@ +################################################################################ +# +# edk2 +# +################################################################################ + +EDK2_VERSION = edk2-stable202308 +EDK2_SITE = https://github.com/tianocore/edk2 +EDK2_SITE_METHOD = git +EDK2_LICENSE = BSD-2-Clause-Patent +EDK2_LICENSE_FILES = License.txt +EDK2_CPE_ID_VENDOR = tianocore +EDK2_DEPENDENCIES = edk2-platforms host-python3 host-acpica host-util-linux +EDK2_INSTALL_TARGET = NO +EDK2_INSTALL_IMAGES = YES + +ifeq ($(BR2_ENABLE_DEBUG),y) +EDK2_BUILD_TYPE = DEBUG +ifeq ($(BR2_TARGET_EDK2_OVMF_DEBUG_ON_SERIAL),y) +# DEBUG_ON_SERIAL_PORT is only tested to be set, so don't disable it, as +# it would still be set. +EDK2_BUILD_OPTS += -DDEBUG_ON_SERIAL_PORT +endif +else +EDK2_BUILD_TYPE = RELEASE +# DEBUG_ON_SERIAL_PORT is only valid in debug builds, so useless to set +# it (enabled or disabled) on a relase build. +endif + +# Build system notes. +# +# The EDK2 build system is rather unique, so here are a few useful notes. +# +# First, builds rely heavily on Git submodules to fetch various dependencies +# into specific directory structures. It might be possible to work around this +# and rely on Buildroot's infrastructure, but using Git submodules greatly +# simplifies this already complicated build system. +# +# Second, the build system is spread across various commands and stages. +# Therefore, all build variables needs to be exported to be available +# accordingly. The first stage will build $(@D)/BaseTools which contains +# various tools and scripts for the host. +# +# Third, where applicable, the dependency direction between EDK2 and +# ARM Trusted Firmware (ATF) will go in different direction for different +# platforms. Most commonly, ATF will depend on EDK2 via the BL33 payload. +# But for some platforms (e.g. QEMU SBSA or DeveloperBox) EDK2 will package +# the ATF images within its own build system. In such cases, intermediary +# "EDK2 packages" will be built in $(EDK2_BUILD_PACKAGES) in order for EDK2 +# to be able to use them in subsequent build stages. +# +# For more information about the build setup: +# https://edk2-docs.gitbook.io/edk-ii-build-specification/4_edk_ii_build_process_overview + +EDK2_GIT_SUBMODULES = YES +EDK2_BUILD_PACKAGES = $(@D)/Build/Buildroot +EDK2_PACKAGES_PATHS = $(@D) $(EDK2_BUILD_PACKAGES) $(STAGING_DIR)/usr/share/edk2-platforms + +ifeq ($(BR2_TARGET_EDK2_PLATFORM_OVMF_I386),y) +EDK2_ARCH = IA32 +EDK2_DEPENDENCIES += host-nasm +EDK2_PACKAGE_NAME = OvmfPkg +EDK2_PLATFORM_NAME = OvmfPkgIa32 +EDK2_BUILD_DIR = OvmfIa32 + +else ifeq ($(BR2_TARGET_EDK2_PLATFORM_OVMF_X64),y) +EDK2_ARCH = X64 +EDK2_DEPENDENCIES += host-nasm +EDK2_PACKAGE_NAME = OvmfPkg +EDK2_PLATFORM_NAME = OvmfPkgX64 +EDK2_BUILD_DIR = OvmfX64 + +else ifeq ($(BR2_TARGET_EDK2_PLATFORM_ARM_VIRT_QEMU),y) +EDK2_ARCH = AARCH64 +EDK2_PACKAGE_NAME = ArmVirtPkg +EDK2_PLATFORM_NAME = ArmVirtQemu +EDK2_BUILD_DIR = $(EDK2_PLATFORM_NAME)-$(EDK2_ARCH) + +else ifeq ($(BR2_TARGET_EDK2_PLATFORM_ARM_VIRT_QEMU_KERNEL),y) +EDK2_ARCH = AARCH64 +EDK2_PACKAGE_NAME = ArmVirtPkg +EDK2_PLATFORM_NAME = ArmVirtQemuKernel +EDK2_BUILD_DIR = $(EDK2_PLATFORM_NAME)-$(EDK2_ARCH) + +else ifeq ($(BR2_TARGET_EDK2_PLATFORM_ARM_SGI575),y) +EDK2_ARCH = AARCH64 +EDK2_PACKAGE_NAME = Platform/ARM/SgiPkg/Sgi575 +EDK2_PLATFORM_NAME = Sgi575 +EDK2_BUILD_DIR = $(EDK2_PLATFORM_NAME) + +else ifeq ($(BR2_TARGET_EDK2_PLATFORM_ARM_VEXPRESS_FVP_AARCH64),y) +EDK2_ARCH = AARCH64 +EDK2_PACKAGE_NAME = Platform/ARM/VExpressPkg +EDK2_PLATFORM_NAME = ArmVExpress-FVP-AArch64 +EDK2_BUILD_DIR = $(EDK2_PLATFORM_NAME) + +else ifeq ($(BR2_TARGET_EDK2_PLATFORM_SOCIONEXT_DEVELOPERBOX),y) +EDK2_ARCH = AARCH64 +EDK2_DEPENDENCIES += host-dtc arm-trusted-firmware +EDK2_PACKAGE_NAME = Platform/Socionext/DeveloperBox +EDK2_PLATFORM_NAME = DeveloperBox +EDK2_BUILD_DIR = $(EDK2_PLATFORM_NAME) +EDK2_BUILD_ENV += DTC_PREFIX=$(HOST_DIR)/bin/ +EDK2_BUILD_OPTS += -D DO_X86EMU=TRUE +EDK2_PRE_BUILD_HOOKS += EDK2_PRE_BUILD_SOCIONEXT_DEVELOPERBOX + +define EDK2_PRE_BUILD_SOCIONEXT_DEVELOPERBOX + mkdir -p $(EDK2_BUILD_PACKAGES)/Platform/Socionext/DeveloperBox + $(ARM_TRUSTED_FIRMWARE_DIR)/tools/fiptool/fiptool create \ + --tb-fw $(BINARIES_DIR)/bl31.bin \ + --soc-fw $(BINARIES_DIR)/bl31.bin \ + --scp-fw $(BINARIES_DIR)/bl31.bin \ + $(EDK2_BUILD_PACKAGES)/Platform/Socionext/DeveloperBox/fip_all_arm_tf.bin +endef + +else ifeq ($(BR2_TARGET_EDK2_PLATFORM_SOLIDRUN_ARMADA80X0MCBIN),y) +EDK2_ARCH = AARCH64 +EDK2_DEPENDENCIES += host-dtc arm-trusted-firmware edk2-non-osi +EDK2_PACKAGE_NAME = Platform/SolidRun/Armada80x0McBin +EDK2_PLATFORM_NAME = Armada80x0McBin +EDK2_BUILD_DIR = $(EDK2_PLATFORM_NAME)-$(EDK2_ARCH) +EDK2_BUILD_ENV += DTC_PREFIX=$(HOST_DIR)/bin/ +EDK2_BUILD_OPTS += -D INCLUDE_TFTP_COMMAND +EDK2_PACKAGES_PATHS += $(STAGING_DIR)/usr/share/edk2-non-osi + +else ifeq ($(BR2_TARGET_EDK2_PLATFORM_QEMU_SBSA),y) +EDK2_ARCH = AARCH64 +EDK2_DEPENDENCIES += arm-trusted-firmware +EDK2_PACKAGE_NAME = Platform/Qemu/SbsaQemu +EDK2_PLATFORM_NAME = SbsaQemu +EDK2_BUILD_DIR = $(EDK2_PLATFORM_NAME) +EDK2_PRE_BUILD_HOOKS += EDK2_PRE_BUILD_QEMU_SBSA + +define EDK2_PRE_BUILD_QEMU_SBSA + mkdir -p $(EDK2_BUILD_PACKAGES)/Platform/Qemu/Sbsa + ln -srf $(BINARIES_DIR)/{bl1.bin,fip.bin} $(EDK2_BUILD_PACKAGES)/Platform/Qemu/Sbsa/ +endef + +else ifeq ($(BR2_TARGET_EDK2_PLATFORM_OVMF_RISCV),y) +EDK2_ARCH = RISCV64 +EDK2_PACKAGE_NAME = OvmfPkg/RiscVVirt +EDK2_PLATFORM_NAME = RiscVVirtQemu +EDK2_BUILD_DIR = $(EDK2_PLATFORM_NAME) + +endif + +EDK2_BASETOOLS_OPTS = \ + EXTRA_LDFLAGS="$(HOST_LDFLAGS)" \ + EXTRA_OPTFLAGS="$(HOST_CPPFLAGS)" + +EDK2_PACKAGES_PATH = $(subst $(space),:,$(strip $(EDK2_PACKAGES_PATHS))) + +# EDK2 "build" script internally uses and calls "make", which controls +# its own flags. It is mainly tested while not being a sub-make. In +# order to stay in that configuration, we avoid leaking top-level +# Buildroot make flags into EDK2 build by clearing the MAKEFLAGS +# environment variable. +EDK2_BUILD_ENV += \ + MAKEFLAGS= \ + WORKSPACE=$(@D) \ + PACKAGES_PATH=$(EDK2_PACKAGES_PATH) \ + PYTHON_COMMAND=$(HOST_DIR)/bin/python3 \ + IASL_PREFIX=$(HOST_DIR)/bin/ \ + NASM_PREFIX=$(HOST_DIR)/bin/ \ + GCC5_$(EDK2_ARCH)_PREFIX=$(TARGET_CROSS) + +EDK2_BUILD_OPTS += \ + -t GCC5 \ + -n $(BR2_JLEVEL) \ + -a $(EDK2_ARCH) \ + -b $(EDK2_BUILD_TYPE) \ + -p $(EDK2_PACKAGE_NAME)/$(EDK2_PLATFORM_NAME).dsc + +define EDK2_BUILD_CMDS + mkdir -p $(EDK2_BUILD_PACKAGES) + export $(EDK2_BUILD_ENV) && \ + unset ARCH && \ + source $(@D)/edksetup.sh && \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/BaseTools $(EDK2_BASETOOLS_OPTS) && \ + build $(EDK2_BUILD_OPTS) all +endef + +define EDK2_INSTALL_IMAGES_CMDS + cp -f $(@D)/Build/$(EDK2_BUILD_DIR)/$(EDK2_BUILD_TYPE)_GCC5/FV/*.fd $(BINARIES_DIR) +endef + +$(eval $(generic-package)) diff --git a/boot/grub2/0001-Add-missing-grub-core-extra_deps.lst-file-in-release.patch b/boot/grub2/0001-Add-missing-grub-core-extra_deps.lst-file-in-release.patch new file mode 100644 index 00000000..2a7c206b --- /dev/null +++ b/boot/grub2/0001-Add-missing-grub-core-extra_deps.lst-file-in-release.patch @@ -0,0 +1,37 @@ +From 4d4dae6a52b1749642261a15f5dcc1e3d4150b36 Mon Sep 17 00:00:00 2001 +From: Julien Olivain +Date: Fri, 22 Dec 2023 19:02:53 +0100 +Subject: [PATCH] Add missing grub-core/extra_deps.lst file in release tarball + +A file is missing in the grub-2.12 release tarballs (both .gz and .xz). +See [1]. The issue was reported in [2] and fixed upstream in [3]. + +This patch adds the missing file, on top of the release tarball. This +patch won't apply on upstream git, since the file is present in the +source repository. Since the issue is fixed upstream in [3], it is +expected upcoming releases tarballs will include the file. + +The file content was fetched from the upstream git repo: +https://git.savannah.gnu.org/gitweb/?p=grub.git;a=blob_plain;f=grub-core/extra_deps.lst;hb=refs/tags/grub-2.12 + +[1] https://ftp.gnu.org/gnu/grub/grub-2.12.tar.xz +[2] https://lists.gnu.org/archive/html/grub-devel/2023-12/msg00054.html +[3] https://git.savannah.gnu.org/gitweb/?p=grub.git;a=commit;h=b835601c7639ed1890f2d3db91900a8506011a8e + +Signed-off-by: Julien Olivain +Upstream: Fixed by: https://git.savannah.gnu.org/gitweb/?p=grub.git;a=commit;h=b835601c7639ed1890f2d3db91900a8506011a8e +--- + grub-core/extra_deps.lst | 1 + + 1 file changed, 1 insertion(+) + create mode 100644 grub-core/extra_deps.lst + +diff --git a/grub-core/extra_deps.lst b/grub-core/extra_deps.lst +new file mode 100644 +index 0000000..f44ad6a +--- /dev/null ++++ b/grub-core/extra_deps.lst +@@ -0,0 +1 @@ ++depends bli part_gpt +-- +2.43.0 + diff --git a/boot/grub2/Config.in b/boot/grub2/Config.in new file mode 100644 index 00000000..7c235e96 --- /dev/null +++ b/boot/grub2/Config.in @@ -0,0 +1,178 @@ +config BR2_TARGET_GRUB2_ARCH_SUPPORTS + bool + default y if BR2_i386 + default y if BR2_x86_64 + default y if BR2_arm + default y if BR2_aarch64 + default y if BR2_RISCV_64 + depends on BR2_USE_MMU + +config BR2_TARGET_GRUB2 + bool "grub2" + depends on BR2_TARGET_GRUB2_ARCH_SUPPORTS + depends on BR2_USE_WCHAR + select BR2_TARGET_GRUB2_I386_PC if \ + !BR2_TARGET_GRUB2_HAS_PTF && \ + (BR2_i386 || BR2_x86_64) + select BR2_TARGET_GRUB2_ARM_UBOOT if \ + !BR2_TARGET_GRUB2_HAS_PTF && \ + BR2_arm + select BR2_TARGET_GRUB2_ARM64_EFI if BR2_aarch64 + help + GNU GRUB is a Multiboot boot loader. It was derived from + GRUB, the GRand Unified Bootloader, which was originally + designed and implemented by Erich Stefan Boleyn. GRUB 2 has + replaced what was formerly known as GRUB (i.e. version + 0.9x), which has, in turn, become GRUB Legacy. + + Amongst others, GRUB2 offers EFI support, which GRUB Legacy + doesn't provide. + + The file boot/grub2/grub.cfg is used by default as the Grub + configuration file. It can be overridden using a rootfs + overlay or post-build script. + + For additional notes on using Grub 2 with Buildroot, see + boot/grub2/readme.txt + + http://www.gnu.org/software/grub/ + +if BR2_TARGET_GRUB2 + +config BR2_TARGET_GRUB2_HAS_LEGACY_BOOT + bool + +config BR2_TARGET_GRUB2_HAS_EFI_BOOT + bool + +config BR2_TARGET_GRUB2_HAS_PTF + bool + +config BR2_TARGET_GRUB2_I386_PC + bool "i386-pc" + depends on BR2_i386 || BR2_x86_64 + select BR2_TARGET_GRUB2_HAS_LEGACY_BOOT + help + Select this option if the platform you're targetting is a + x86 or x86-64 legacy BIOS based platform. + +config BR2_TARGET_GRUB2_I386_EFI + bool "i386-efi" + depends on BR2_i386 || BR2_x86_64 + select BR2_TARGET_GRUB2_HAS_PTF + select BR2_TARGET_GRUB2_HAS_EFI_BOOT + help + Select this option if the platform you're targetting has a + 32 bits EFI BIOS. Note that some x86-64 platforms use a 32 + bits EFI BIOS, and this option should be used in this case. + +config BR2_TARGET_GRUB2_X86_64_EFI + bool "x86-64-efi" + depends on BR2_x86_64 + select BR2_TARGET_GRUB2_HAS_PTF + select BR2_TARGET_GRUB2_HAS_EFI_BOOT + help + Select this option if the platform you're targetting has a + 64 bits EFI BIOS. + +config BR2_TARGET_GRUB2_ARM_UBOOT + bool "arm-uboot" + depends on BR2_arm + select BR2_TARGET_GRUB2_HAS_LEGACY_BOOT + help + Select this option if the platform you're targetting is an + ARM u-boot platform, and you want to boot Grub 2 as an u-boot + compatible image. + +config BR2_TARGET_GRUB2_ARM_EFI + bool "arm-efi" + depends on BR2_arm + select BR2_TARGET_GRUB2_HAS_PTF + select BR2_TARGET_GRUB2_HAS_EFI_BOOT + help + Select this option if the platform you're targetting is an + ARM platform and you want to boot Grub 2 as an EFI + application. + +config BR2_TARGET_GRUB2_ARM64_EFI + bool "arm64-efi" + depends on BR2_aarch64 + select BR2_TARGET_GRUB2_HAS_EFI_BOOT + help + Select this option if the platform you're targetting is an + Aarch64 platform and you want to boot Grub 2 as an EFI + application. + +config BR2_TARGET_GRUB2_RISCV64_EFI + bool "riscv64-efi" + depends on BR2_RISCV_64 + select BR2_TARGET_GRUB2_HAS_EFI_BOOT + help + Select this option if the platform you're targetting is a + 64bit RISC-V platform and you want to boot Grub 2 as an EFI + application. + +if BR2_TARGET_GRUB2_HAS_LEGACY_BOOT + +comment "Options for the x86 legacy BIOS or ARM U-Boot support" + +config BR2_TARGET_GRUB2_BOOT_PARTITION + string "boot partition" + default "hd0,msdos1" + help + Specify the partition where the /boot/grub/grub.cfg file is + located. Use 'hd0,msdos1' for the first partition of the + first disk if using a legacy partition table, or 'hd0,gpt1' + if using GPT partition table. + +config BR2_TARGET_GRUB2_BUILTIN_MODULES_PC + string "builtin modules" + default BR2_TARGET_GRUB2_BUILTIN_MODULES if BR2_TARGET_GRUB2_BUILTIN_MODULES != "" # legacy + default "boot linux ext2 fat squash4 part_msdos part_gpt normal biosdisk" if BR2_TARGET_GRUB2_I386_PC + default "linux ext2 fat part_msdos normal" if BR2_TARGET_GRUB2_ARM_UBOOT + +config BR2_TARGET_GRUB2_BUILTIN_CONFIG_PC + string "builtin config" + default BR2_TARGET_GRUB2_BUILTIN_CONFIG if BR2_TARGET_GRUB2_BUILTIN_CONFIG != "" # legacy + help + Path to a Grub 2 configuration file that will be embedded + into the Grub image itself. This allows to set the root + device and other configuration parameters, but however menu + entries cannot be described in this embedded configuration. + +endif # BR2_TARGET_GRUB2_HAS_LEGACY_BOOT + +if BR2_TARGET_GRUB2_HAS_EFI_BOOT + +comment "Options for the EFI BIOS or ARM EFI support" + +config BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI + string "builtin modules" + default BR2_TARGET_GRUB2_BUILTIN_MODULES if BR2_TARGET_GRUB2_BUILTIN_MODULES != "" # legacy + default "boot linux ext2 fat squash4 part_msdos part_gpt normal efi_gop" + +config BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI + string "builtin config" + default BR2_TARGET_GRUB2_BUILTIN_CONFIG if BR2_TARGET_GRUB2_BUILTIN_CONFIG != "" # legacy + help + Path to a Grub 2 configuration file that will be embedded + into the Grub image itself. This allows to set the root + device and other configuration parameters, but however menu + entries cannot be described in this embedded configuration. + +endif # BR2_TARGET_GRUB2_HAS_EFI_BOOT + +config BR2_TARGET_GRUB2_INSTALL_TOOLS + bool "install tools" + help + Install support tools to interact with GNU GRUB Multiboot + boot loader. + + This will also install the Grub 2 loadable modules to the + target. + +endif # BR2_TARGET_GRUB2 + +comment "grub2 needs a toolchain w/ wchar" + depends on BR2_TARGET_GRUB2_ARCH_SUPPORTS + depends on !BR2_USE_WCHAR diff --git a/boot/grub2/grub.cfg b/boot/grub2/grub.cfg new file mode 100644 index 00000000..bd3e3f00 --- /dev/null +++ b/boot/grub2/grub.cfg @@ -0,0 +1,6 @@ +set default="0" +set timeout="5" + +menuentry "Buildroot" { + linux /boot/bzImage root=/dev/sda1 rootwait console=tty1 +} diff --git a/boot/grub2/grub2.hash b/boot/grub2/grub2.hash new file mode 100644 index 00000000..65a8ec8e --- /dev/null +++ b/boot/grub2/grub2.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking signature +# https://ftp.gnu.org/gnu/grub/grub-2.12.tar.xz.sig +sha256 f3c97391f7c4eaa677a78e090c7e97e6dc47b16f655f04683ebd37bef7fe0faa grub-2.12.tar.xz +# Locally computed: +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/boot/grub2/grub2.mk b/boot/grub2/grub2.mk new file mode 100644 index 00000000..1263c63c --- /dev/null +++ b/boot/grub2/grub2.mk @@ -0,0 +1,203 @@ +################################################################################ +# +# grub2 +# +################################################################################ + +GRUB2_VERSION = 2.12 +GRUB2_SITE = http://ftp.gnu.org/gnu/grub +GRUB2_SOURCE = grub-$(GRUB2_VERSION).tar.xz +GRUB2_LICENSE = GPL-3.0+ +GRUB2_LICENSE_FILES = COPYING +GRUB2_DEPENDENCIES = host-bison host-flex host-gawk host-grub2 +HOST_GRUB2_DEPENDENCIES = host-bison host-flex host-gawk +GRUB2_INSTALL_IMAGES = YES + +# CVE-2019-14865 is about a flaw in the grub2-set-bootflag tool, which +# doesn't exist upstream, but is added by the Redhat/Fedora +# packaging. Not applicable to Buildroot. +GRUB2_IGNORE_CVES += CVE-2019-14865 +# CVE-2020-15705 is related to a flaw in the use of the +# grub_linuxefi_secure_validate(), which was added by Debian/Ubuntu +# patches. The issue doesn't affect upstream Grub, and +# grub_linuxefi_secure_validate() is not implemented in the grub2 +# version available in Buildroot. +GRUB2_IGNORE_CVES += CVE-2020-15705 +# vulnerability is specific to the SUSE distribution +GRUB2_IGNORE_CVES += CVE-2021-46705 +# vulnerability is specific to the Redhat distribution, affects a +# downstream change from Redhat related to password authentication +GRUB2_IGNORE_CVES += CVE-2023-4001 +# vulnerability is specific to the Redhat distribution, affects the +# grub2-set-bootflag tool, which doesn't exist upstream +GRUB2_IGNORE_CVES += CVE-2024-1048 + +ifeq ($(BR2_TARGET_GRUB2_INSTALL_TOOLS),y) +GRUB2_INSTALL_TARGET = YES +else +GRUB2_INSTALL_TARGET = NO +endif +GRUB2_CPE_ID_VENDOR = gnu + +GRUB2_BUILTIN_MODULES_PC = $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_MODULES_PC)) +GRUB2_BUILTIN_MODULES_EFI = $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI)) +GRUB2_BUILTIN_CONFIG_PC = $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_CONFIG_PC)) +GRUB2_BUILTIN_CONFIG_EFI = $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI)) +GRUB2_BOOT_PARTITION = $(call qstrip,$(BR2_TARGET_GRUB2_BOOT_PARTITION)) + +GRUB2_IMAGE_i386-pc = $(BINARIES_DIR)/grub.img +GRUB2_CFG_i386-pc = $(TARGET_DIR)/boot/grub/grub.cfg +GRUB2_PREFIX_i386-pc = ($(GRUB2_BOOT_PARTITION))/boot/grub +GRUB2_TARGET_i386-pc = i386 +GRUB2_PLATFORM_i386-pc = pc +GRUB2_BUILTIN_CONFIG_i386-pc = $(GRUB2_BUILTIN_CONFIG_PC) +GRUB2_BUILTIN_MODULES_i386-pc = $(GRUB2_BUILTIN_MODULES_PC) +GRUB2_TUPLES-$(BR2_TARGET_GRUB2_I386_PC) += i386-pc + +GRUB2_IMAGE_i386-efi = $(BINARIES_DIR)/efi-part/EFI/BOOT/bootia32.efi +GRUB2_CFG_i386-efi = $(BINARIES_DIR)/efi-part/EFI/BOOT/grub.cfg +GRUB2_PREFIX_i386-efi = /EFI/BOOT +GRUB2_TARGET_i386-efi = i386 +GRUB2_PLATFORM_i386-efi = efi +GRUB2_BUILTIN_CONFIG_i386-efi = $(GRUB2_BUILTIN_CONFIG_EFI) +GRUB2_BUILTIN_MODULES_i386-efi = $(GRUB2_BUILTIN_MODULES_EFI) +GRUB2_TUPLES-$(BR2_TARGET_GRUB2_I386_EFI) += i386-efi + +GRUB2_IMAGE_x86_64-efi = $(BINARIES_DIR)/efi-part/EFI/BOOT/bootx64.efi +GRUB2_CFG_x86_64-efi = $(BINARIES_DIR)/efi-part/EFI/BOOT/grub.cfg +GRUB2_PREFIX_x86_64-efi = /EFI/BOOT +GRUB2_TARGET_x86_64-efi = x86_64 +GRUB2_PLATFORM_x86_64-efi = efi +GRUB2_BUILTIN_CONFIG_x86_64-efi = $(GRUB2_BUILTIN_CONFIG_EFI) +GRUB2_BUILTIN_MODULES_x86_64-efi = $(GRUB2_BUILTIN_MODULES_EFI) +GRUB2_TUPLES-$(BR2_TARGET_GRUB2_X86_64_EFI) += x86_64-efi + +GRUB2_IMAGE_arm-uboot = $(BINARIES_DIR)/boot-part/grub/grub.img +GRUB2_CFG_arm-uboot = $(BINARIES_DIR)/boot-part/grub/grub.cfg +GRUB2_PREFIX_arm-uboot = ($(GRUB2_BOOT_PARTITION))/boot/grub +GRUB2_TARGET_arm-uboot = arm +GRUB2_PLATFORM_arm-uboot = uboot +GRUB2_BUILTIN_CONFIG_arm-uboot = $(GRUB2_BUILTIN_CONFIG_PC) +GRUB2_BUILTIN_MODULES_arm-uboot = $(GRUB2_BUILTIN_MODULES_PC) +GRUB2_TUPLES-$(BR2_TARGET_GRUB2_ARM_UBOOT) += arm-uboot + +GRUB2_IMAGE_arm-efi = $(BINARIES_DIR)/efi-part/EFI/BOOT/bootarm.efi +GRUB2_CFG_arm-efi = $(BINARIES_DIR)/efi-part/EFI/BOOT/grub.cfg +GRUB2_PREFIX_arm-efi = /EFI/BOOT +GRUB2_TARGET_arm-efi = arm +GRUB2_PLATFORM_arm-efi = efi +GRUB2_BUILTIN_CONFIG_arm-efi = $(GRUB2_BUILTIN_CONFIG_EFI) +GRUB2_BUILTIN_MODULES_arm-efi = $(GRUB2_BUILTIN_MODULES_EFI) +GRUB2_TUPLES-$(BR2_TARGET_GRUB2_ARM_EFI) += arm-efi + +GRUB2_IMAGE_arm64-efi = $(BINARIES_DIR)/efi-part/EFI/BOOT/bootaa64.efi +GRUB2_CFG_arm64-efi = $(BINARIES_DIR)/efi-part/EFI/BOOT/grub.cfg +GRUB2_PREFIX_arm64-efi = /EFI/BOOT +GRUB2_TARGET_arm64-efi = aarch64 +GRUB2_PLATFORM_arm64-efi = efi +GRUB2_BUILTIN_CONFIG_arm64-efi = $(GRUB2_BUILTIN_CONFIG_EFI) +GRUB2_BUILTIN_MODULES_arm64-efi = $(GRUB2_BUILTIN_MODULES_EFI) +GRUB2_TUPLES-$(BR2_TARGET_GRUB2_ARM64_EFI) += arm64-efi + +GRUB2_IMAGE_riscv64-efi = $(BINARIES_DIR)/efi-part/EFI/BOOT/bootriscv64.efi +GRUB2_CFG_riscv64-efi = $(BINARIES_DIR)/efi-part/EFI/BOOT/grub.cfg +GRUB2_PREFIX_riscv64-efi = /EFI/BOOT +GRUB2_TARGET_riscv64-efi = riscv64 +GRUB2_PLATFORM_riscv64-efi = efi +GRUB2_BUILTIN_CONFIG_riscv64-efi = $(GRUB2_BUILTIN_CONFIG_EFI) +GRUB2_BUILTIN_MODULES_riscv64-efi = $(GRUB2_BUILTIN_MODULES_EFI) +GRUB2_TUPLES-$(BR2_TARGET_GRUB2_RISCV64_EFI) += riscv64-efi + +# Grub2 is kind of special: it considers CC, LD and so on to be the +# tools to build the host programs and uses TARGET_CC, TARGET_CFLAGS, +# TARGET_CPPFLAGS, TARGET_LDFLAGS to build the bootloader itself. +# +# NOTE: TARGET_STRIP is overridden by !BR2_STRIP_strip, so always +# use the cross compile variant to ensure grub2 builds + +HOST_GRUB2_CONF_ENV = \ + CPP="$(HOSTCC) -E" + +GRUB2_CONF_ENV = \ + CPP="$(TARGET_CC) -E" \ + TARGET_CC="$(TARGET_CC)" \ + CFLAGS="$(TARGET_CFLAGS) -Os" \ + TARGET_CFLAGS="$(TARGET_CFLAGS) -Os" \ + CPPFLAGS="$(TARGET_CPPFLAGS) -Os -fno-stack-protector" \ + TARGET_CPPFLAGS="$(TARGET_CPPFLAGS) -Os -fno-stack-protector" \ + TARGET_LDFLAGS="$(TARGET_LDFLAGS) -Os" \ + TARGET_NM="$(TARGET_NM)" \ + TARGET_OBJCOPY="$(TARGET_OBJCOPY)" \ + TARGET_STRIP="$(TARGET_CROSS)strip" + +HOST_GRUB2_CONF_OPTS = \ + --with-platform=none \ + --disable-grub-mkfont \ + --enable-efiemu=no \ + ac_cv_lib_lzma_lzma_code=no \ + --enable-device-mapper=no \ + --enable-libzfs=no \ + --disable-werror + +define GRUB2_CONFIGURE_CMDS + $(foreach tuple, $(GRUB2_TUPLES-y), \ + @$(call MESSAGE,Configuring $(tuple)) + mkdir -p $(@D)/build-$(tuple) + cd $(@D)/build-$(tuple) && \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + $(GRUB2_CONF_ENV) \ + ../configure \ + --target=$(GRUB2_TARGET_$(tuple)) \ + --with-platform=$(GRUB2_PLATFORM_$(tuple)) \ + --host=$(GNU_TARGET_NAME) \ + --build=$(GNU_HOST_NAME) \ + --prefix=/ \ + --exec-prefix=/ \ + --disable-grub-mkfont \ + --enable-efiemu=no \ + ac_cv_lib_lzma_lzma_code=no \ + --enable-device-mapper=no \ + --enable-libzfs=no \ + --disable-werror + ) +endef + +define GRUB2_BUILD_CMDS + $(foreach tuple, $(GRUB2_TUPLES-y), \ + @$(call MESSAGE,Building $(tuple)) + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/build-$(tuple) + ) +endef + +define GRUB2_INSTALL_IMAGES_CMDS + $(foreach tuple, $(GRUB2_TUPLES-y), \ + @$(call MESSAGE,Installing $(tuple) to images directory) + mkdir -p $(dir $(GRUB2_IMAGE_$(tuple))) + $(HOST_DIR)/bin/grub-mkimage \ + -d $(@D)/build-$(tuple)/grub-core/ \ + -O $(tuple) \ + -o $(GRUB2_IMAGE_$(tuple)) \ + -p "$(GRUB2_PREFIX_$(tuple))" \ + $(if $(GRUB2_BUILTIN_CONFIG_$(tuple)), \ + -c $(GRUB2_BUILTIN_CONFIG_$(tuple))) \ + $(GRUB2_BUILTIN_MODULES_$(tuple)) + $(INSTALL) -D -m 0644 boot/grub2/grub.cfg $(GRUB2_CFG_$(tuple)) + $(if $(findstring $(GRUB2_PLATFORM_$(tuple)), pc), \ + cat $(@D)/build-$(tuple)/grub-core/cdboot.img $(GRUB2_IMAGE_$(tuple)) > \ + $(BINARIES_DIR)/grub-eltorito.img + ) \ + ) +endef + +ifeq ($(BR2_TARGET_GRUB2_INSTALL_TOOLS),y) +define GRUB2_INSTALL_TARGET_CMDS + $(foreach tuple, $(GRUB2_TUPLES-y), \ + @$(call MESSAGE,Installing $(tuple) to target directory) + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/build-$(tuple) DESTDIR=$(TARGET_DIR) install + ) +endef +endif + +$(eval $(generic-package)) +$(eval $(host-autotools-package)) diff --git a/boot/grub2/readme.txt b/boot/grub2/readme.txt new file mode 100644 index 00000000..5d59fb4e --- /dev/null +++ b/boot/grub2/readme.txt @@ -0,0 +1,192 @@ +Notes on using Grub2 for BIOS-based platforms +============================================= + +1. Create a disk image + dd if=/dev/zero of=disk.img bs=1M count=32 +2. Partition it (either legacy or GPT style partitions work) + cfdisk disk.img + - Create one partition, type Linux, for the root + filesystem. The only constraint is to make sure there + is enough free space *before* the first partition to + store Grub2. Leaving 1 MB of free space is safe. +3. Setup loop device and loop partitions + sudo losetup -f disk.img + sudo partx -a /dev/loop0 +4. Prepare the root partition + sudo mkfs.ext3 -L root /dev/loop0p1 + sudo mount /dev/loop0p1 /mnt + sudo tar -C /mnt -xf output/images/rootfs.tar + sudo umount /mnt +5. Install Grub2 + sudo ./output/host/sbin/grub-bios-setup \ + -b ./output/host/lib/grub/i386-pc/boot.img \ + -c ./output/images/grub.img -d . /dev/loop0 +6. Cleanup loop device + sudo partx -d /dev/loop0 + sudo losetup -d /dev/loop0 +7. Your disk.img is ready! + +Using genimage +-------------- + +If you use genimage to generate your complete image, +installing Grub can be tricky. Here is how to achieve Grub's +installation with genimage: + +partition boot { + in-partition-table = "no" + image = "path_to_boot.img" + offset = 0 + size = 512 +} +partition grub { + in-partition-table = "no" + image = "path_to_grub.img" + offset = 512 +} + +The result is not byte to byte identical to what +grub-bios-setup does but it works anyway. + +To test your BIOS image in Qemu +------------------------------- + +qemu-system-{i386,x86-64} -hda disk.img + +Notes on using Grub2 for x86/x86_64 EFI-based platforms +======================================================= + +1. Create a disk image + dd if=/dev/zero of=disk.img bs=1M count=32 +2. Partition it with GPT partitions + cgdisk disk.img + - Create a first partition, type EF00, for the + bootloader and kernel image + - Create a second partition, type 8300, for the root + filesystem. +3. Setup loop device and loop partitions + sudo losetup -f disk.img + sudo partx -a /dev/loop0 +4. Prepare the boot partition + sudo mkfs.vfat -n boot /dev/loop0p1 + sudo mount /dev/loop0p1 /mnt + sudo cp -a output/images/efi-part/* /mnt/ + sudo cp output/images/bzImage /mnt/ + sudo umount /mnt +5. Prepare the root partition + sudo mkfs.ext3 -L root /dev/loop0p2 + sudo mount /dev/loop0p2 /mnt + sudo tar -C /mnt -xf output/images/rootfs.tar + sudo umount /mnt +6 Cleanup loop device + sudo partx -d /dev/loop0 + sudo losetup -d /dev/loop0 +7. Your disk.img is ready! + +To test your i386/x86-64 EFI image in Qemu +------------------------------------------ + +1. Download/install the EFI BIOS for Qemu + You can get it using the edk2 package in Buildroot (installed + in BINARIES_DIR), grab prebuilt images from the unofficial nightly + builds [0], or use one provided by your distribution as OVMF. + + [0] https://github.com/retrage/edk2-nightly + +2. qemu-system-{i386,x86-64} -bios -hda disk.img + +Notes on using Grub2 for ARM u-boot-based platforms +=================================================== + +The following steps show how to use the Grub2 arm-uboot platform +support in the simplest way possible and with a single +buildroot-generated filesystem. + + 1. Load qemu_arm_vexpress_defconfig + + 2. Enable u-boot with the vexpress_ca9x4 board name and with + u-boot.elf image format. + + 3. Enable grub2 for the arm-uboot platform. + + 4. Enable "Install kernel image to /boot in target" in the kernel + menu to populate a /boot directory with zImage in it. + + 5. The upstream u-boot vexpress_ca9x4 doesn't have CONFIG_API enabled + by default, which is required. + + Before building, patch u-boot (for example, make u-boot-extract to + edit the source before building) file + include/configs/vexpress_common.h to define: + + #define CONFIG_API + #define CONFIG_SYS_MMC_MAX_DEVICE 1 + + 6. Create a custom grub2 config file with the following contents and + set its path in BR2_TARGET_GRUB2_CFG: + + set default="0" + set timeout="5" + + menuentry "Buildroot" { + set root='(hd0)' + linux /boot/zImage root=/dev/mmcblk0 console=ttyAMA0 + devicetree /boot/vexpress-v2p-ca9.dtb + } + + 7. Create a custom builtin config file with the following contents + and set its path in BR2_TARGET_GRUB2_BUILTIN_CONFIG: + + set root=(hd0) + set prefix=/boot/grub + + 8. Create a custom post-build script which copies files from + ${BINARIES_DIR}/boot-part to $(TARGET_DIR)/boot (set its path in + BR2_ROOTFS_POST_BUILD_SCRIPT): + + #!/bin/sh + cp -r ${BINARIES_DIR}/boot-part/* ${TARGET_DIR}/boot/ + + 9. make + +10. Run qemu with: + + qemu-system-arm -M vexpress-a9 -kernel output/images/u-boot -m 1024 \ + -nographic -sd output/images/rootfs.ext2 + +11. In u-boot, stop at the prompt and run grub2 with: + + => ext2load mmc 0:0 ${loadaddr} /boot/grub/grub.img + => bootm + +12. This should bring the grub2 menu, upon which selecting the "Buildroot" + entry should boot Linux. + + +Notes on using Grub2 for Aarch64 EFI-based platforms +==================================================== + +The following steps show how to use the Grub2 arm64-efi platform, +using qemu and EFI firmware built for qemu. + + 1. Load aarch64_efi_defconfig + + 2. make + + 3. Download the EFI firmware for qemu aarch64 + + You can get it using the edk2 package in Buildroot (installed + in BINARIES_DIR), grab prebuilt images from the unofficial nightly + builds [1], or use one provided by your distribution as OVMF-aarch64 + or AAVMF. + + [1] https://github.com/retrage/edk2-nightly + + 4. Run qemu with: + + qemu-system-aarch64 -M virt -cpu cortex-a57 -m 512 -nographic \ + -bios /QEMU_EFI.fd -hda output/images/disk.img \ + -netdev user,id=eth0 -device virtio-net-device,netdev=eth0 + + 5. This should bring the grub2 menu, upon which selecting the + "Buildroot" entry should boot Linux. diff --git a/boot/mv-ddr-marvell/0001-Allow-access-to-low-addresses-with-gcc-12.patch b/boot/mv-ddr-marvell/0001-Allow-access-to-low-addresses-with-gcc-12.patch new file mode 100644 index 00000000..5a623f28 --- /dev/null +++ b/boot/mv-ddr-marvell/0001-Allow-access-to-low-addresses-with-gcc-12.patch @@ -0,0 +1,49 @@ +From 4796a1eacc6a5ccb623e7d2e46a5196f8335e496 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Fri, 11 Aug 2023 11:19:49 +0300 +Subject: [PATCH] Allow access to low addresses with gcc 12 + +gcc 12 added a warning that triggers on access to low addresses. Add a +compile option that allows access to lower addresses. + +Add the 'cc_option' macro to avoid the compile option when the compiler +does not support it. + +This fixes build with TF-A. TF-A added a similar fix in commit +dea23e245fb89. + +See some more details in +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105523 + +Upstream: https://github.com/MarvellEmbeddedProcessors/mv-ddr-marvell/pull/42 +Signed-off-by: Baruch Siach +--- + Makefile | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/Makefile b/Makefile +index 3f0dd89a7381..045284c30cbc 100644 +--- a/Makefile ++++ b/Makefile +@@ -108,6 +108,10 @@ MV_DDR_VER_CSRC = mv_ddr_build_message.c + # create mv_ddr build message and version string source file + $(shell $(MV_DDR_ROOT)/scripts/localversion.sh $(MV_DDR_ROOT) $(MV_DDR_VER_CSRC) 2> /dev/null) + ++define cc_option ++ $(shell if $(CC) $(1) -c -x c /dev/null -o /dev/null >/dev/null 2>&1; then echo $(1); fi ) ++endef ++ + # ****************** + # U-BOOT SPL SUPPORT + # ****************** +@@ -331,6 +335,7 @@ OBJ_DIR ?= $(MV_DDR_ROOT) + CFLAGS = -DMV_DDR_ATF -DCONFIG_DDR4 + CFLAGS += -Wall -Werror -Os -ffreestanding -mlittle-endian -g -gdwarf-2 -nostdinc + CFLAGS += -march=armv8-a -fpie ++CFLAGS += $(call cc_option, --param=min-pagesize=0) + + # PLATFORM is set in ble/ble.mk + ifneq ($(findstring a80x0,$(PLATFORM)),) +-- +2.40.1 + diff --git a/boot/mv-ddr-marvell/0002-Makefile-disable-stack-protection.patch b/boot/mv-ddr-marvell/0002-Makefile-disable-stack-protection.patch new file mode 100644 index 00000000..626279eb --- /dev/null +++ b/boot/mv-ddr-marvell/0002-Makefile-disable-stack-protection.patch @@ -0,0 +1,33 @@ +From 53e34e3bff26fcbb7cc14178fa9fc80e7a73d556 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Tue, 11 Oct 2022 16:34:44 +0300 +Subject: [PATCH] Makefile: disable stack protection + +The Buildroot toolchain might enable stack protection by default. That +breaks linking because ATF does not provide the required __stack_chk +routines. + +The mv-ddr-marvell Makefile provides no way to add custom CFLAGS. Patch +Makefile to disable stack protection. + +Upstream: not applicable; Buildroot specific +Signed-off-by: Baruch Siach +--- + Makefile | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Makefile b/Makefile +index 045284c30cbc..9641354bcf86 100644 +--- a/Makefile ++++ b/Makefile +@@ -336,6 +336,7 @@ CFLAGS = -DMV_DDR_ATF -DCONFIG_DDR4 + CFLAGS += -Wall -Werror -Os -ffreestanding -mlittle-endian -g -gdwarf-2 -nostdinc + CFLAGS += -march=armv8-a -fpie + CFLAGS += $(call cc_option, --param=min-pagesize=0) ++CFLAGS += -fno-stack-protector + + # PLATFORM is set in ble/ble.mk + ifneq ($(findstring a80x0,$(PLATFORM)),) +-- +2.40.1 + diff --git a/boot/mv-ddr-marvell/Config.in b/boot/mv-ddr-marvell/Config.in new file mode 100644 index 00000000..4ee8c95b --- /dev/null +++ b/boot/mv-ddr-marvell/Config.in @@ -0,0 +1,10 @@ +config BR2_TARGET_MV_DDR_MARVELL + bool "mv-ddr-marvell" + depends on BR2_aarch64 + help + Marvell keeps algorithms for DDR training in a separate + repository. This code is not built separately, it is needed + as a dependency to build ATF firmware for Marvell Armada 7040 + and 8040 SoCs. + + https://github.com/MarvellEmbeddedProcessors/mv-ddr-marvell/ diff --git a/boot/mv-ddr-marvell/mv-ddr-marvell.hash b/boot/mv-ddr-marvell/mv-ddr-marvell.hash new file mode 100644 index 00000000..75e87d83 --- /dev/null +++ b/boot/mv-ddr-marvell/mv-ddr-marvell.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 16f02232e21a15979b3d9971e28f7e59562484a5c1f99c2b28c248a3b76a63fa mv-ddr-marvell-d5acc10c287e40cc2feeb28710b92e45c93c702c.tar.gz +sha256 907a03943ca940790e97620aca8d46b5b04c653dcf2ab6c66a25238b60cf5635 ddr3_init.c diff --git a/boot/mv-ddr-marvell/mv-ddr-marvell.mk b/boot/mv-ddr-marvell/mv-ddr-marvell.mk new file mode 100644 index 00000000..e05192fe --- /dev/null +++ b/boot/mv-ddr-marvell/mv-ddr-marvell.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# mv-ddr-marvell +# +################################################################################ + +# This is the latest commit on mv-ddr-devel as of 20220529 +MV_DDR_MARVELL_VERSION = d5acc10c287e40cc2feeb28710b92e45c93c702c +MV_DDR_MARVELL_SITE = $(call github,MarvellEmbeddedProcessors,mv-ddr-marvell,$(MV_DDR_MARVELL_VERSION)) +MV_DDR_MARVELL_LICENSE = GPL-2.0+ or LGPL-2.1 with freertos-exception-2.0, BSD-3-Clause, Marvell Commercial +MV_DDR_MARVELL_LICENSE_FILES = ddr3_init.c + +$(eval $(generic-package)) diff --git a/boot/mxs-bootlets/Config.in b/boot/mxs-bootlets/Config.in new file mode 100644 index 00000000..8f9334b6 --- /dev/null +++ b/boot/mxs-bootlets/Config.in @@ -0,0 +1,92 @@ +config BR2_TARGET_MXS_BOOTLETS + bool "mxs-bootlets" + depends on BR2_arm + depends on BR2_TARGET_BAREBOX || BR2_LINUX_KERNEL || \ + BR2_TARGET_UBOOT + help + Stage1 bootloaders for Freescale iMX23/iMX28 SoCs + +if BR2_TARGET_MXS_BOOTLETS + +choice + prompt "Source" + default BR2_TARGET_MXS_BOOTLETS_FREESCALE + help + Select the location of the bootlets you want to use + +config BR2_TARGET_MXS_BOOTLETS_FREESCALE + bool "Freescale 10.12.01 version" + +config BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL + bool "Custom tarball" + +config BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT + bool "Custom Git repository" + +endchoice + +config BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL_URL + string "URL of custom bootlets tarball" + depends on BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL + +if BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT + +config BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT_URL + string "URL of custom Git repository" + +config BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT_VERSION + string "Custom Git version" + +endif + +choice + prompt "Bootstream" + help + Select which bootstream to generate + +config BR2_TARGET_MXS_BOOTLETS_BAREBOX + bool "Barebox Bootloader" + depends on BR2_TARGET_BAREBOX + +config BR2_TARGET_MXS_BOOTLETS_LINUX + bool "Linux Kernel" + depends on BR2_LINUX_KERNEL + +config BR2_TARGET_MXS_BOOTLETS_UBOOT + bool "U-boot bootloader" + depends on BR2_TARGET_UBOOT + +endchoice + +config BR2_TARGET_MXS_BOOTLETS_HAS_IVT + bool "HAB Support" + help + Enable this option if you are building bootlets + for the iMX28 platform that needs to include instructions + for the secure boot mechanism present on these SoCs + +choice + prompt "Board" + help + Select the board to build the bootlets for + +config BR2_TARGET_MXS_BOOTLETS_STMP37xx + bool "Sigmatel ST-MP3-7xx Board" + +config BR2_TARGET_MXS_BOOTLETS_STMP378x + bool "Sigmatel ST-MP3-78x Board" + +config BR2_TARGET_MXS_BOOTLETS_IMX28EVK + bool "Freescale iMX28 EVK Board" + +config BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD + bool "Custom board" +endchoice + +config BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD_NAME + string "Custom board name" + depends on BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD + help + Name of the board to build the bootlets for + +endif diff --git a/boot/mxs-bootlets/barebox_ivt.bd b/boot/mxs-bootlets/barebox_ivt.bd new file mode 100644 index 00000000..0c67e9cf --- /dev/null +++ b/boot/mxs-bootlets/barebox_ivt.bd @@ -0,0 +1,34 @@ +// STMP378x ROM command script to load and run U-Boot + +sources { + power_prep="./power_prep/power_prep"; + sdram_prep="./boot_prep/boot_prep"; + barebox="./barebox"; +} + +section (0) { + + //---------------------------------------------------------- + // Power Supply initialization + //---------------------------------------------------------- + + load power_prep; + load ivt (entry = power_prep:_start) > 0x8000; + hab call 0x8000; + + //---------------------------------------------------------- + // SDRAM initialization + //---------------------------------------------------------- + + load sdram_prep; + load ivt (entry = sdram_prep:_start) > 0x8000; + hab call 0x8000; + //---------------------------------------------------------- + // Load and call u_boot - ELF ARM image + //---------------------------------------------------------- + + load barebox; + load ivt (entry = barebox:start) > 0x8000; + hab call 0x8000; + +} diff --git a/boot/mxs-bootlets/mxs-bootlets.hash b/boot/mxs-bootlets/mxs-bootlets.hash new file mode 100644 index 00000000..6d3483c7 --- /dev/null +++ b/boot/mxs-bootlets/mxs-bootlets.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 63f6068ae36884adef4259bbb1fe2591755718f22c46d0a59d854883dfab1ffc imx-bootlets-src-10.12.01.tar.gz diff --git a/boot/mxs-bootlets/mxs-bootlets.mk b/boot/mxs-bootlets/mxs-bootlets.mk new file mode 100644 index 00000000..adc22767 --- /dev/null +++ b/boot/mxs-bootlets/mxs-bootlets.mk @@ -0,0 +1,106 @@ +################################################################################ +# +# mxs-bootlets +# +################################################################################ + +ifeq ($(BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL),y) +MXS_BOOTLETS_TARBALL = $(call qstrip,$(BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL_URL)) +MXS_BOOTLETS_SITE = $(patsubst %/,%,$(dir $(MXS_BOOTLETS_TARBALL))) +MXS_BOOTLETS_SOURCE = $(notdir $(MXS_BOOTLETS_TARBALL)) +BR_NO_CHECK_HASH_FOR += $(MXS_BOOTLETS_SOURCE) +else ifeq ($(BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT),y) +MXS_BOOTLETS_SITE = $(BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT_URL) +MXS_BOOTLETS_SITE_METHOD = git +MXS_BOOTLETS_VERSION = $(call qstrip,$(BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT_VERSION)) +BR_NO_CHECK_HASH_FOR += $(MXS_BOOTLETS_SOURCE) +else +MXS_BOOTLETS_VERSION = 10.12.01 +MXS_BOOTLETS_SITE = http://download.ossystems.com.br/bsp/freescale/source +MXS_BOOTLETS_SOURCE = imx-bootlets-src-$(MXS_BOOTLETS_VERSION).tar.gz +endif + +ifeq ($(BR2_TARGET_MXS_BOOTLETS_STMP37xx),y) +MXS_BOOTLETS_BOARD = stmp37xx_dev +else ifeq ($(BR2_TARGET_MXS_BOOTLETS_STMP378x),y) +MXS_BOOTLETS_BOARD = stmp378x_dev +else ifeq ($(BR2_TARGET_MXS_BOOTLETS_IMX28EVK),y) +MXS_BOOTLETS_BOARD = iMX28_EVK +else ifeq ($(BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD),y) +MXS_BOOTLETS_BOARD = $(call qstrip,$(BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD_NAME)) +endif + +ifeq ($(BR2_TARGET_MXS_BOOTLETS_HAS_IVT),y) +MXS_BOOTLETS_IVT_SUFFIX = _ivt +MXS_BOOTLETS_ELFTOSB_OPTIONS += -f imx28 +endif + +MXS_BOOTLETS_DEPENDENCIES = host-elftosb +MXS_BOOTLETS_LICENSE = GPL-2.0+ + +ifeq ($(BR2_TARGET_MXS_BOOTLETS_BAREBOX),y) +MXS_BOOTLETS_DEPENDENCIES += barebox +MXS_BOOTLETS_BOOTDESC = barebox$(MXS_BOOTLETS_IVT_SUFFIX).bd +MXS_BOOTLETS_BOOTSTREAM = $(MXS_BOOTLETS_BOARD)_barebox$(MXS_BOOTLETS_IVT_SUFFIX).sb + +else ifeq ($(BR2_TARGET_MXS_BOOTLETS_LINUX),y) +MXS_BOOTLETS_DEPENDENCIES += linux +MXS_BOOTLETS_BOOTDESC = linux$(MXS_BOOTLETS_IVT_SUFFIX).bd +MXS_BOOTLETS_BOOTSTREAM = $(MXS_BOOTLETS_BOARD)_linux$(MXS_BOOTLETS_IVT_SUFFIX).sb + +else ifeq ($(BR2_TARGET_MXS_BOOTLETS_UBOOT),y) +MXS_BOOTLETS_DEPENDENCIES += uboot +MXS_BOOTLETS_BOOTDESC = uboot$(MXS_BOOTLETS_IVT_SUFFIX).bd +MXS_BOOTLETS_BOOTSTREAM = $(MXS_BOOTLETS_BOARD)_uboot$(MXS_BOOTLETS_IVT_SUFFIX).sb +endif + +ifeq ($(BR2_TARGET_MXS_BOOTLETS_BAREBOX),y) +define MXS_BOOTLETS_SED_BAREBOX + sed -i 's,[^ *]barebox.*;,\tbarebox="$(BAREBOX_DIR)/barebox";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC) +endef +endif + +ifeq ($(BR2_TARGET_MXS_BOOTLETS_LINUX),y) +define MXS_BOOTLETS_BUILD_LINUX_PREP + BOARD=$(MXS_BOOTLETS_BOARD) CROSS_COMPILE="$(TARGET_CROSS)" \ + $(MAKE1) -C $(@D) linux_prep +endef +define MXS_BOOTLETS_SED_LINUX + sed -i 's,[^ *]linux_prep.*;,\tlinux_prep="$(@D)/linux_prep/output-target/linux_prep";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC) + sed -i 's,[^ *]zImage.*;,\tzImage="$(LINUX_DIR)/arch/arm/boot/zImage";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC) +endef +endif + +ifeq ($(BR2_TARGET_MXS_BOOTLETS_UBOOT),y) +define MXS_BOOTLETS_SED_UBOOT + sed -i 's,[^ *]u_boot.*;,\tu_boot="$(UBOOT_DIR)/u-boot";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC) +endef +endif + +define MXS_BOOTLETS_INSTALL_BAREBOX_BOOTDESC + cp boot/mxs-bootlets/barebox_ivt.bd $(@D)/ +endef + +MXS_BOOTLETS_POST_EXTRACT_HOOKS += MXS_BOOTLETS_INSTALL_BAREBOX_BOOTDESC + +define MXS_BOOTLETS_BUILD_CMDS + BOARD=$(MXS_BOOTLETS_BOARD) CROSS_COMPILE="$(TARGET_CROSS)" \ + $(MAKE1) -C $(@D) power_prep + BOARD=$(MXS_BOOTLETS_BOARD) CROSS_COMPILE="$(TARGET_CROSS)" \ + $(MAKE1) -C $(@D) boot_prep + $(MXS_BOOTLETS_BUILD_LINUX_PREP) + sed -i 's,[^ *]power_prep.*;,\tpower_prep="$(@D)/power_prep/power_prep";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC) + sed -i 's,[^ *]sdram_prep.*;,\tsdram_prep="$(@D)/boot_prep/boot_prep";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC) + $(MXS_BOOTLETS_SED_BAREBOX) + $(MXS_BOOTLETS_SED_LINUX) + $(MXS_BOOTLETS_SED_UBOOT) + $(HOST_DIR)/bin/elftosb $(MXS_BOOTLETS_ELFTOSB_OPTIONS) \ + -z -c $(@D)/$(MXS_BOOTLETS_BOOTDESC) \ + -o $(@D)/$(MXS_BOOTLETS_BOOTSTREAM) +endef + +define MXS_BOOTLETS_INSTALL_TARGET_CMDS + cp $(@D)/$(MXS_BOOTLETS_BOOTSTREAM) $(BINARIES_DIR)/ +endef + +$(eval $(generic-package)) diff --git a/boot/opensbi/Config.in b/boot/opensbi/Config.in new file mode 100644 index 00000000..de2f0aae --- /dev/null +++ b/boot/opensbi/Config.in @@ -0,0 +1,128 @@ +config BR2_TARGET_OPENSBI + bool "opensbi" + depends on BR2_riscv + help + OpenSBI aims to provide an open-source and extensible + implementation of the RISC-V SBI specification for a platform + specific firmware (M-mode) and a general purpose OS, + hypervisor or bootloader (S-mode or HS-mode). OpenSBI + implementation can be easily extended by RISC-V platform or + System-on-Chip vendors to fit a particular hadware + configuration. + + https://github.com/riscv/opensbi.git + +if BR2_TARGET_OPENSBI +choice + prompt "OpenSBI Version" + help + Select the specific OpenSBI version you want to use + +config BR2_TARGET_OPENSBI_LATEST_VERSION + bool "1.3" + +config BR2_TARGET_OPENSBI_CUSTOM_VERSION + bool "Custom version" + help + This option allows to use a specific official versions + +config BR2_TARGET_OPENSBI_CUSTOM_TARBALL + bool "Custom tarball" + +config BR2_TARGET_OPENSBI_CUSTOM_GIT + bool "Custom Git repository" + +endchoice + +config BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE + string "OpenSBI version" + depends on BR2_TARGET_OPENSBI_CUSTOM_VERSION + +config BR2_TARGET_OPENSBI_CUSTOM_TARBALL_LOCATION + string "URL of custom OpenSBI tarball" + depends on BR2_TARGET_OPENSBI_CUSTOM_TARBALL + +if BR2_TARGET_OPENSBI_CUSTOM_GIT + +config BR2_TARGET_OPENSBI_CUSTOM_REPO_URL + string "URL of custom repository" + +config BR2_TARGET_OPENSBI_CUSTOM_REPO_VERSION + string "Custom repository version" + help + Revision to use in the typical format used by Git. E.G. a + sha id, a tag, branch, .. + +endif + +config BR2_TARGET_OPENSBI_VERSION + string + default "1.3" if BR2_TARGET_OPENSBI_LATEST_VERSION + default BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE \ + if BR2_TARGET_OPENSBI_CUSTOM_VERSION + default "custom" if BR2_TARGET_OPENSBI_CUSTOM_TARBALL + default BR2_TARGET_OPENSBI_CUSTOM_REPO_VERSION \ + if BR2_TARGET_OPENSBI_CUSTOM_GIT + +config BR2_TARGET_OPENSBI_PLAT + string "OpenSBI Platform" + default "" + help + Specifies the OpenSBI platform to build. If no platform is + specified only the OpenSBI platform independent static + library libsbi.a is built. If a platform is specified then + the platform specific static library libplatsbi.a and firmware + examples are built. + +config BR2_TARGET_OPENSBI_INSTALL_DYNAMIC_IMG + bool "Install fw_dynamic image" + default y if BR2_TARGET_OPENSBI_PLAT != "" + help + This installs the fw_dynamic image. + +config BR2_TARGET_OPENSBI_INSTALL_JUMP_IMG + bool "Install fw_jump image" + default y if BR2_TARGET_OPENSBI_PLAT != "" + help + This installs the fw_jump image. + +config BR2_TARGET_OPENSBI_INSTALL_PAYLOAD_IMG + bool "Install fw_payload image" + help + This option enables the installation of the fw_paylaod + image. + +config BR2_TARGET_OPENSBI_LINUX_PAYLOAD + bool "Include Linux as OpenSBI Payload" + depends on BR2_TARGET_OPENSBI_PLAT != "" + depends on BR2_LINUX_KERNEL + depends on BR2_LINUX_KERNEL_IMAGE + select BR2_TARGET_OPENSBI_INSTALL_PAYLOAD_IMG + help + Build OpenSBI with the Linux kernel as a Payload. + +config BR2_TARGET_OPENSBI_UBOOT_PAYLOAD + bool "Include U-Boot as OpenSBI Payload" + depends on BR2_TARGET_OPENSBI_PLAT != "" + depends on BR2_TARGET_UBOOT + select BR2_TARGET_OPENSBI_INSTALL_PAYLOAD_IMG + help + Build OpenSBI with the U-Boot as a Payload. + +config BR2_TARGET_OPENSBI_FW_FDT_PATH + bool "Include U-Boot DTB in OpenSBI Payload" + depends on BR2_TARGET_OPENSBI_UBOOT_PAYLOAD + select BR2_TARGET_UBOOT_FORMAT_DTB + help + Build OpenSBI with FW_FDT_PATH set to + $(BINARIES_DIR)/u-boot.dtb. Note that CONFIG_OF_SEPARATE + must be set in the U-Boot configuration for this file to be + produced. + +config BR2_TARGET_OPENSBI_ADDITIONAL_VARIABLES + string "Additional build variables" + help + Additional parameters for the build, which will be passed on + the make command line. E.g: BUILD_INFO=1. + +endif diff --git a/boot/opensbi/opensbi.hash b/boot/opensbi/opensbi.hash new file mode 100644 index 00000000..980fb141 --- /dev/null +++ b/boot/opensbi/opensbi.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 2c0501eb3475f463b15f5b8531996f64604ea49e0e3ed040ecbd1fc27ecd8c5c opensbi-1.3.tar.gz +sha256 82d13fb1bf6bb162629deeea9eb9c117e74548d3b707e478967691fe79a68e21 COPYING.BSD diff --git a/boot/opensbi/opensbi.mk b/boot/opensbi/opensbi.mk new file mode 100644 index 00000000..dd113a0b --- /dev/null +++ b/boot/opensbi/opensbi.mk @@ -0,0 +1,92 @@ +################################################################################ +# +# opensbi +# +################################################################################ + +OPENSBI_VERSION = $(call qstrip,$(BR2_TARGET_OPENSBI_VERSION)) + +ifeq ($(BR2_TARGET_OPENSBI_CUSTOM_TARBALL),y) +# Handle custom OpenSBI tarballs as specified by the configuration +OPENSBI_TARBALL = $(call qstrip,$(BR2_TARGET_OPENSBI_CUSTOM_TARBALL_LOCATION)) +OPENSBI_SITE = $(patsubst %/,%,$(dir $(OPENSBI_TARBALL))) +OPENSBI_SOURCE = $(notdir $(OPENSBI_TARBALL)) +else ifeq ($(BR2_TARGET_OPENSBI_CUSTOM_GIT),y) +OPENSBI_SITE = $(call qstrip,$(BR2_TARGET_OPENSBI_CUSTOM_REPO_URL)) +OPENSBI_SITE_METHOD = git +else +# Handle official OpenSBI versions +OPENSBI_SITE = $(call github,riscv,opensbi,v$(OPENSBI_VERSION)) +endif + +OPENSBI_LICENSE = BSD-2-Clause +ifeq ($(BR2_TARGET_OPENSBI_LATEST_VERSION),y) +OPENSBI_LICENSE_FILES = COPYING.BSD +endif +OPENSBI_INSTALL_TARGET = NO +OPENSBI_INSTALL_STAGING = YES + +ifeq ($(BR2_TARGET_OPENSBI)$(BR2_TARGET_OPENSBI_LATEST_VERSION),y) +BR_NO_CHECK_HASH_FOR += $(OPENSBI_SOURCE) +endif + +OPENSBI_MAKE_ENV = \ + CROSS_COMPILE=$(TARGET_CROSS) \ + $(call qstrip,$(BR2_TARGET_OPENSBI_ADDITIONAL_VARIABLES)) + +OPENSBI_PLAT = $(call qstrip,$(BR2_TARGET_OPENSBI_PLAT)) +ifneq ($(OPENSBI_PLAT),) +OPENSBI_MAKE_ENV += PLATFORM=$(OPENSBI_PLAT) +endif + +ifeq ($(BR2_TARGET_OPENSBI_LINUX_PAYLOAD),y) +OPENSBI_DEPENDENCIES += linux +OPENSBI_MAKE_ENV += FW_PAYLOAD_PATH="$(BINARIES_DIR)/Image" +endif + +ifeq ($(BR2_TARGET_OPENSBI_UBOOT_PAYLOAD),y) +OPENSBI_DEPENDENCIES += uboot +OPENSBI_MAKE_ENV += FW_PAYLOAD_PATH="$(BINARIES_DIR)/u-boot.bin" +ifeq ($(BR2_TARGET_OPENSBI_FW_FDT_PATH),y) +OPENSBI_MAKE_ENV += FW_FDT_PATH="$(BINARIES_DIR)/u-boot.dtb" +endif +endif + +define OPENSBI_BUILD_CMDS + $(TARGET_MAKE_ENV) $(OPENSBI_MAKE_ENV) $(MAKE) -C $(@D) +endef + +ifeq ($(BR2_TARGET_OPENSBI_INSTALL_DYNAMIC_IMG),y) +OPENSBI_INSTALL_IMAGES = YES +OPENSBI_FW_IMAGES += dynamic +endif + +ifeq ($(BR2_TARGET_OPENSBI_INSTALL_JUMP_IMG),y) +OPENSBI_INSTALL_IMAGES = YES +OPENSBI_FW_IMAGES += jump +endif + +ifeq ($(BR2_TARGET_OPENSBI_INSTALL_PAYLOAD_IMG),y) +OPENSBI_INSTALL_IMAGES = YES +OPENSBI_FW_IMAGES += payload +endif + +ifneq ($(OPENSBI_PLAT),) +define OPENSBI_INSTALL_IMAGES_CMDS + $(foreach f,$(OPENSBI_FW_IMAGES),\ + $(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_$(f).bin \ + $(BINARIES_DIR)/fw_$(f).bin + $(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_$(f).elf \ + $(BINARIES_DIR)/fw_$(f).elf + ) +endef +endif + +# libsbi.a is not a library meant to be linked in user-space code, but +# with bare metal code, which is why we don't install it in +# $(STAGING_DIR)/usr/lib +define OPENSBI_INSTALL_STAGING_CMDS + $(INSTALL) -m 0644 -D $(@D)/build/lib/libsbi.a $(STAGING_DIR)/usr/share/opensbi/libsbi.a +endef + +$(eval $(generic-package)) diff --git a/boot/optee-os/3.13.0/0001-core-zlib-fix-build-warning-when-_LFS64_LARGEFILE-is.patch b/boot/optee-os/3.13.0/0001-core-zlib-fix-build-warning-when-_LFS64_LARGEFILE-is.patch new file mode 100644 index 00000000..0ff61dc5 --- /dev/null +++ b/boot/optee-os/3.13.0/0001-core-zlib-fix-build-warning-when-_LFS64_LARGEFILE-is.patch @@ -0,0 +1,56 @@ +From 82becbadd5918ed7ad3c2b651ce479084b5feb2a Mon Sep 17 00:00:00 2001 +From: Etienne Carriere +Date: Mon, 10 May 2021 15:58:41 +0200 +Subject: core: zlib: fix build warning when _LFS64_LARGEFILE is not defined + +In zlib, _LFS64_LARGEFILE is expected to be a boolean directive, either +1 (true) or 0 (false). Depending on toolchain version and directives +build may produces warnings (as shown below with gcc 9.3) when the macro +is not defined hence this change to default it to value 0 (false). + +core/lib/zlib/zutil.h:196:39: warning: "_LFS64_LARGEFILE" is not defined, evaluates to 0 [-Wundef] + 196 | (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0) + | ^~~~~~~~~~~~~~~~ +In file included from core/lib/zlib/adler32.c:9: +core/lib/zlib/zutil.h:196:39: warning: "_LFS64_LARGEFILE" is not defined, evaluates to 0 [-Wundef] + 196 | (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0) + | ^~~~~~~~~~~~~~~~ + CC out/core/lib/zlib/zutil.o +In file included from core/lib/zlib/inftrees.c:7: +core/lib/zlib/zutil.h:196:39: warning: "_LFS64_LARGEFILE" is not defined, evaluates to 0 [-Wundef] + 196 | (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0) + | ^~~~~~~~~~~~~~~~ +In file included from core/lib/zlib/inflate.c:84: +core/lib/zlib/zutil.h:196:39: warning: "_LFS64_LARGEFILE" is not defined, evaluates to 0 [-Wundef] + 196 | (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0) + | ^~~~~~~~~~~~~~~~ +In file included from core/lib/zlib/zutil.c:9: +core/lib/zlib/zutil.h:196:39: warning: "_LFS64_LARGEFILE" is not defined, evaluates to 0 [-Wundef] + 196 | (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0) + | ^~~~~~~~~~~~~~~~ + +Signed-off-by: Etienne Carriere +Reviewed-by: Jens Wiklander +--- + core/lib/zlib/zconf.h | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/core/lib/zlib/zconf.h b/core/lib/zlib/zconf.h +index 0bca18be..a7d13741 100644 +--- a/core/lib/zlib/zconf.h ++++ b/core/lib/zlib/zconf.h +@@ -487,6 +487,11 @@ typedef uLong FAR uLongf; + # endif + #endif + ++/* Other places expect _LFS64_LARGEFILE to be defined with a valid value */ ++#ifndef _LFS64_LARGEFILE ++#define _LFS64_LARGEFILE 0 ++#endif ++ + #if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 + # define Z_LFS64 + #endif +-- +2.17.1 + diff --git a/boot/optee-os/Config.in b/boot/optee-os/Config.in new file mode 100644 index 00000000..2f996cba --- /dev/null +++ b/boot/optee-os/Config.in @@ -0,0 +1,164 @@ +config BR2_TARGET_OPTEE_OS + bool "optee_os" + depends on BR2_ARM_CPU_ARMV8A || BR2_ARM_CPU_ARMV7A + help + OP-TEE OS provides the secure world boot image and the trust + application development kit of the OP-TEE project. OP-TEE OS + also provides generic trusted application one can embedded + into its system. + + http://github.com/OP-TEE/optee_os + +if BR2_TARGET_OPTEE_OS + +choice + prompt "OP-TEE OS version" + default BR2_TARGET_OPTEE_OS_LATEST if BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS + help + Select the version of OP-TEE OS you want to use + +config BR2_TARGET_OPTEE_OS_LATEST + bool "4.3.0" + depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS + select BR2_TARGET_OPTEE_OS_NEEDS_PYTHON_CRYPTOGRAPHY + help + Use the latest release tag from the OP-TEE OS official Git + repository. + +config BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL + bool "Custom tarball" + help + This option allows to specify a URL pointing to an OP-TEE OS + source tarball. This URL can use any protocol recognized by + Buildroot, like http://, ftp://, file:// or scp://. + + When pointing to a local tarball using file://, you may want + to use a make variable like $(TOPDIR) to reference the root of + the Buildroot tree. + +config BR2_TARGET_OPTEE_OS_CUSTOM_GIT + bool "Custom Git repository" + help + Use a custom version fetched from a Git repository. + +endchoice + +if BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL + +config BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL_LOCATION + string "URL of custom OP-TEE OS tarball" + +endif + +if BR2_TARGET_OPTEE_OS_CUSTOM_GIT + +config BR2_TARGET_OPTEE_OS_CUSTOM_REPO_URL + string "URL of custom repository" + depends on BR2_TARGET_OPTEE_OS_CUSTOM_GIT + help + Specific location of the reference source tree Git + repository. + +config BR2_TARGET_OPTEE_OS_CUSTOM_REPO_VERSION + string "Custom repository version" + depends on BR2_TARGET_OPTEE_OS_CUSTOM_GIT + help + Revision to use in the typical format used by Git, i.e a + SHA1 or a tag. + +endif + +config BR2_TARGET_OPTEE_OS_VERSION + string + default "4.3.0" if BR2_TARGET_OPTEE_OS_LATEST + default "custom" if BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL + default BR2_TARGET_OPTEE_OS_CUSTOM_REPO_VERSION \ + if BR2_TARGET_OPTEE_OS_CUSTOM_GIT + +config BR2_TARGET_OPTEE_OS_NEEDS_DTC + bool "OP-TEE OS needs dtc" + select BR2_PACKAGE_HOST_DTC + help + Select this option if your OP-TEE OS platform configuration + requires the Device Tree compiler to be available. + +config BR2_TARGET_OPTEE_OS_NEEDS_PYTHON_CRYPTOGRAPHY + bool "OP-TEE OS needs host-python-cryptography" + depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS + help + OP-TEE OS version below 3.16 used python-pycryptodomex + package in python scripts. Newer version uses + python-cryptography. Select this option if optee-os needs + python-cryptography to be built. + +config BR2_TARGET_OPTEE_OS_NEEDS_CMAKE + bool "OP-TEE OS needs cmake" + help + Select this option if your OP-TEE OS platform configuration + requires the cmake build system to be available. + +config BR2_TARGET_OPTEE_OS_CORE + bool "Build core" + default y + help + This option will build and install the OP-TEE core + boot images. + +config BR2_TARGET_OPTEE_OS_SDK + bool "Build TA devkit" + default y + help + This option will build and install the OP-TEE development + kit for building OP-TEE trusted application images. It is + installed in the staging directory /lib/optee. + +config BR2_TARGET_OPTEE_OS_SERVICES + bool "Build service TAs and libs" + default y + select BR2_TARGET_OPTEE_OS_CORE + help + This option installs the service trusted applications and + trusted shared libraries built from OP-TEE OS source tree. + These are installed in target /lib/optee_armtz directory + as other trusted applications. At runtime OP-TEE OS can + load these from this non-secure filesystem/directory into + the secure world for execution. + +config BR2_TARGET_OPTEE_OS_PLATFORM + string "Target platform (mandatory)" + help + Value for the mandated PLATFORM build directive provided to + OP-TEE OS. + +config BR2_TARGET_OPTEE_OS_PLATFORM_FLAVOR + string "Target platform flavor (optional)" + help + Value for the optional PLATFORM_FLAVOR build directive + provided to OP-TEE OS. + +config BR2_TARGET_OPTEE_OS_CUSTOM_DTS_PATH + string "Device Tree Source file paths" + help + Space-separated list of paths to device tree source files + that will be copied to core/arch/arm/dts/ before starting + the build. + + To use this device tree source file, the OP-TEE OS + configuration must refer to it with the + CFG_EMBED_DTB_SOURCE_FILE option and no platform flavor + needs to be specified. + +config BR2_TARGET_OPTEE_OS_ADDITIONAL_VARIABLES + string "Additional build variables" + help + Additional parameters for the OP-TEE OS build + E.g. 'CFG_TEE_CORE_LOG_LEVEL=3 CFG_UNWIND=y' + +config BR2_TARGET_OPTEE_OS_CORE_IMAGES + string "Binary boot images" + default "tee.bin tee-*_v2.bin" + help + Names of generated image files that are installed in the + output images/ directory. + +endif # BR2_TARGET_OPTEE_OS diff --git a/boot/optee-os/optee-os.hash b/boot/optee-os/optee-os.hash new file mode 100644 index 00000000..16b3d743 --- /dev/null +++ b/boot/optee-os/optee-os.hash @@ -0,0 +1,4 @@ +# From https://github.com/OP-TEE/optee_os/archive/4.3.0/optee-os-4.3.0.tar.gz +sha256 390b271905c828d6def9fa6a77bbaa425f3b434d733c8eb18f582ccbc6896096 optee-os-4.3.0.tar.gz +# Locally computed +sha256 1247ee90858f4037b6cac63cbffddfed435d0d73c631b37d78c1e6e6ab3e5d1a LICENSE diff --git a/boot/optee-os/optee-os.mk b/boot/optee-os/optee-os.mk new file mode 100644 index 00000000..6b04a0f5 --- /dev/null +++ b/boot/optee-os/optee-os.mk @@ -0,0 +1,160 @@ +################################################################################ +# +# optee-os +# +################################################################################ + +OPTEE_OS_VERSION = $(call qstrip,$(BR2_TARGET_OPTEE_OS_VERSION)) +OPTEE_OS_LICENSE = BSD-2-Clause +ifeq ($(BR2_TARGET_OPTEE_OS_LATEST),y) +OPTEE_OS_LICENSE_FILES = LICENSE +endif + +OPTEE_OS_INSTALL_STAGING = YES +OPTEE_OS_INSTALL_IMAGES = YES + +ifeq ($(BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL),y) +OPTEE_OS_TARBALL = $(call qstrip,$(BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL_LOCATION)) +OPTEE_OS_SITE = $(patsubst %/,%,$(dir $(OPTEE_OS_TARBALL))) +OPTEE_OS_SOURCE = $(notdir $(OPTEE_OS_TARBALL)) +else ifeq ($(BR2_TARGET_OPTEE_OS_CUSTOM_GIT),y) +OPTEE_OS_SITE = $(call qstrip,$(BR2_TARGET_OPTEE_OS_CUSTOM_REPO_URL)) +OPTEE_OS_SITE_METHOD = git +else +OPTEE_OS_SITE = $(call github,OP-TEE,optee_os,$(OPTEE_OS_VERSION)) +endif + +ifeq ($(BR2_TARGET_OPTEE_OS):$(BR2_TARGET_OPTEE_OS_LATEST),y:) +BR_NO_CHECK_HASH_FOR += $(OPTEE_OS_SOURCE) +endif + +OPTEE_OS_DEPENDENCIES = host-openssl host-python3 host-python-pyelftools + +ifeq ($(BR2_TARGET_OPTEE_OS_NEEDS_CMAKE),y) +OPTEE_OS_DEPENDENCIES += $(BR2_CMAKE_HOST_DEPENDENCY) +endif + +ifeq ($(BR2_TARGET_OPTEE_OS_NEEDS_PYTHON_CRYPTOGRAPHY),y) +OPTEE_OS_DEPENDENCIES += host-python-cryptography +else +OPTEE_OS_DEPENDENCIES += host-python-pycryptodomex +endif + +ifeq ($(BR2_TARGET_OPTEE_OS_NEEDS_DTC),y) +OPTEE_OS_DEPENDENCIES += host-dtc +endif + +# On 64bit targets, OP-TEE OS can be built in 32bit mode, or +# can be built in 64bit mode and support 32bit and 64bit +# trusted applications. Since buildroot currently references +# a single cross compiler, build exclusively in 32bit +# or 64bit mode. +OPTEE_OS_MAKE_OPTS = \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + CROSS_COMPILE_core="$(TARGET_CROSS)" \ + CROSS_COMPILE_ta_arm64="$(TARGET_CROSS)" \ + CROSS_COMPILE_ta_arm32="$(TARGET_CROSS)" \ + PYTHON3="$(HOST_DIR)/bin/python3" + +ifeq ($(BR2_aarch64),y) +OPTEE_OS_MAKE_OPTS += \ + CFG_ARM64_core=y \ + CFG_USER_TA_TARGETS=ta_arm64 +else +OPTEE_OS_MAKE_OPTS += \ + CFG_ARM32_core=y +endif + +# Get mandatory PLAFORM and optional PLATFORM_FLAVOR and additional +# variables +OPTEE_OS_MAKE_OPTS += PLATFORM=$(call qstrip,$(BR2_TARGET_OPTEE_OS_PLATFORM)) +ifneq ($(call qstrip,$(BR2_TARGET_OPTEE_OS_PLATFORM_FLAVOR)),) +OPTEE_OS_MAKE_OPTS += PLATFORM_FLAVOR=$(call qstrip,$(BR2_TARGET_OPTEE_OS_PLATFORM_FLAVOR)) +endif +OPTEE_OS_MAKE_OPTS += $(call qstrip,$(BR2_TARGET_OPTEE_OS_ADDITIONAL_VARIABLES)) + +# Requests OP-TEE OS to build from subdirectory out/ of its sourcetree +# root path otherwise the output directory path depends on the target +# platform name. +OPTEE_OS_BUILDDIR_OUT = out +ifeq ($(BR2_aarch64),y) +OPTEE_OS_LOCAL_SDK = $(OPTEE_OS_BUILDDIR_OUT)/export-ta_arm64 +OPTEE_OS_SDK = $(STAGING_DIR)/lib/optee/export-ta_arm64 +endif +ifeq ($(BR2_arm),y) +OPTEE_OS_LOCAL_SDK = $(OPTEE_OS_BUILDDIR_OUT)/export-ta_arm32 +OPTEE_OS_SDK = $(STAGING_DIR)/lib/optee/export-ta_arm32 +endif + +OPTEE_OS_IMAGE_FILES = $(call qstrip,$(BR2_TARGET_OPTEE_OS_CORE_IMAGES)) + +OPTEE_OS_CUSTOM_DTS_PATH = $(call qstrip,$(BR2_TARGET_OPTEE_OS_CUSTOM_DTS_PATH)) + +ifeq ($(BR2_TARGET_OPTEE_OS_CORE),y) +define OPTEE_OS_BUILD_CORE + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) O=$(OPTEE_OS_BUILDDIR_OUT) \ + $(TARGET_CONFIGURE_OPTS) $(OPTEE_OS_MAKE_OPTS) all +endef +define OPTEE_OS_INSTALL_IMAGES_CORE + mkdir -p $(BINARIES_DIR) + $(foreach f,$(OPTEE_OS_IMAGE_FILES), \ + cp -dpf $(wildcard $(@D)/$(OPTEE_OS_BUILDDIR_OUT)/core/$(f)) $(BINARIES_DIR)/ + ) +endef +endif # BR2_TARGET_OPTEE_OS_CORE + +ifeq ($(BR2_TARGET_OPTEE_OS_SERVICES),y) +define OPTEE_OS_INSTALL_TARGET_CMDS + $(if $(wildcard $(@D)/$(OPTEE_OS_BUILDDIR_OUT)/ta/*/*.ta), + $(INSTALL) -D -m 444 -t $(TARGET_DIR)/lib/optee_armtz \ + $(@D)/$(OPTEE_OS_BUILDDIR_OUT)/ta/*/*.ta) + $(if $(wildcard $(@D)/$(OPTEE_OS_LOCAL_SDK)/lib/*.ta), + $(INSTALL) -D -m 444 -t $(TARGET_DIR)/lib/optee_armtz \ + $(@D)/$(OPTEE_OS_LOCAL_SDK)/lib/*.ta) +endef +endif # BR2_TARGET_OPTEE_OS_SERVICES + +ifeq ($(BR2_TARGET_OPTEE_OS_SDK),y) +define OPTEE_OS_BUILD_SDK + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) O=$(OPTEE_OS_BUILDDIR_OUT) \ + $(TARGET_CONFIGURE_OPTS) $(OPTEE_OS_MAKE_OPTS) ta_dev_kit +endef +define OPTEE_OS_INSTALL_STAGING_CMDS + mkdir -p $(OPTEE_OS_SDK) + cp -ardpf $(@D)/$(OPTEE_OS_LOCAL_SDK)/* $(OPTEE_OS_SDK) +endef +endif # BR2_TARGET_OPTEE_OS_SDK + +define OPTEE_OS_BUILD_CMDS + $(if $(OPTEE_OS_CUSTOM_DTS_PATH), + cp -f $(OPTEE_OS_CUSTOM_DTS_PATH) $(@D)/core/arch/arm/dts/ + ) + $(OPTEE_OS_BUILD_CORE) + $(OPTEE_OS_BUILD_SDK) +endef + +define OPTEE_OS_INSTALL_IMAGES_CMDS + $(OPTEE_OS_INSTALL_IMAGES_CORE) + $(OPTEE_OS_INSTALL_IMAGES_SERVICES) +endef + +ifeq ($(BR2_TARGET_OPTEE_OS)$(BR_BUILDING),yy) +ifeq ($(call qstrip,$(BR2_TARGET_OPTEE_OS_PLATFORM)),) +$(error No OP-TEE OS platform set. Check your BR2_TARGET_OPTEE_OS_PLATFORM setting) +endif + +ifeq ($(BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL),y) +ifeq ($(call qstrip,$(BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL_LOCATION)),) +$(error No tarball location specified. Please check BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL_LOCATION) +endif +endif + +ifeq ($(BR2_TARGET_OPTEE_OS_CUSTOM_GIT),y) +ifeq ($(call qstrip,$(BR2_TARGET_OPTEE_OS_CUSTOM_REPO_URL)),) +$(error No repository specified. Please check BR2_TARGET_OPTEE_OS_CUSTOM_REPO_URL) +endif +endif + +endif # BR2_TARGET_OPTEE_OS && BR2_BUILDING + +$(eval $(generic-package)) diff --git a/boot/s500-bootloader/Config.in b/boot/s500-bootloader/Config.in new file mode 100644 index 00000000..7bb689f3 --- /dev/null +++ b/boot/s500-bootloader/Config.in @@ -0,0 +1,17 @@ +config BR2_TARGET_S500_BOOTLOADER + bool "s500-bootloader" + depends on BR2_arm + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + select BR2_HOSTARCH_NEEDS_IA32_LIBS + help + 1st level bootloader for Actions Semiconductor S500 SoC. + + https://github.com/xapp-le/owl + +config BR2_TARGET_S500_BOOTLOADER_BOARD + string "board to configure for" + depends on BR2_TARGET_S500_BOOTLOADER + help + Specify the board to configure the bootloader for. + This should be the name of a directory under s500/boards + containing a suitable bootloader.ini file. diff --git a/boot/s500-bootloader/s500-bootloader.hash b/boot/s500-bootloader/s500-bootloader.hash new file mode 100644 index 00000000..2ebd933e --- /dev/null +++ b/boot/s500-bootloader/s500-bootloader.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b183024ac69f51ea7befd28d03b2ec35a7280e270405600fb4f37aa91d9c9571 s500-bootloader-a8d7fa1d9a7f353ec4613febf30f4ca99a10a106.tar.gz diff --git a/boot/s500-bootloader/s500-bootloader.mk b/boot/s500-bootloader/s500-bootloader.mk new file mode 100644 index 00000000..bc87b091 --- /dev/null +++ b/boot/s500-bootloader/s500-bootloader.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# s500-bootloader +# +################################################################################ + +S500_BOOTLOADER_VERSION = a8d7fa1d9a7f353ec4613febf30f4ca99a10a106 +S500_BOOTLOADER_SITE = $(call github,xapp-le,owl,$(S500_BOOTLOADER_VERSION)) +S500_BOOTLOADER_LICENSE = PROPRIETARY +S500_BOOTLOADER_INSTALL_TARGET = NO +S500_BOOTLOADER_INSTALL_IMAGES = YES + +S500_BOOTLOADER_BOARD = $(call qstrip,$(BR2_TARGET_S500_BOOTLOADER_BOARD)) + +define S500_BOOTLOADER_BUILD_CMDS + cd $(@D) && ./tools/utils/bootloader_pack \ + s500/bootloader/bootloader.bin \ + s500/boards/$(S500_BOOTLOADER_BOARD)/bootloader.ini \ + s500-bootloader.bin +endef + +define S500_BOOTLOADER_INSTALL_IMAGES_CMDS + $(INSTALL) -m 0644 -D $(@D)/s500-bootloader.bin \ + $(BINARIES_DIR)/s500-bootloader.bin +endef + +$(eval $(generic-package)) + +ifeq ($(BR2_TARGET_S500_BOOTLOADER)$(BR_BUILDING),yy) +# we NEED a board name +ifeq ($(S500_BOOTLOADER_BOARD),) +$(error No s500-bootloader board specified. Check your BR2_TARGET_S500_BOOTLOADER settings) +endif +endif diff --git a/boot/shim/Config.in b/boot/shim/Config.in new file mode 100644 index 00000000..462ef12d --- /dev/null +++ b/boot/shim/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_SHIM_ARCH_SUPPORTS + bool + default y if BR2_aarch64 + default y if BR2_arm + default y if BR2_i386 + default y if BR2_x86_64 + # it includes gnu-efi + depends on BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS + +config BR2_TARGET_SHIM + bool "shim" + depends on BR2_PACKAGE_SHIM_ARCH_SUPPORTS + help + Boot loader to chain-load signed boot loaders under Secure + Boot. + + This package provides a minimalist boot loader which allows + verifying signatures of other UEFI binaries against either + the Secure Boot DB/DBX or against a built-in signature + database. Its purpose is to allow a small, + infrequently-changing binary to be signed by the UEFI CA, + while allowing an OS distributor to revision their main + bootloader independently of the CA. + + https://github.com/rhboot/shim diff --git a/boot/shim/shim.hash b/boot/shim/shim.hash new file mode 100644 index 00000000..5aa4ca06 --- /dev/null +++ b/boot/shim/shim.hash @@ -0,0 +1,3 @@ +# locally computed hash +sha256 a79f0a9b89f3681ab384865b1a46ab3f79d88b11b4ca59aa040ab03fffae80a9 shim-15.8.tar.bz2 +sha256 15edf527919ddcb2f514ab9d16ad07ef219e4bb490e0b79560be510f0c159cc2 COPYRIGHT diff --git a/boot/shim/shim.mk b/boot/shim/shim.mk new file mode 100644 index 00000000..ae576773 --- /dev/null +++ b/boot/shim/shim.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# shim +# +################################################################################ + +SHIM_VERSION = 15.8 +SHIM_SITE = https://github.com/rhboot/shim/releases/download/$(SHIM_VERSION) +SHIM_SOURCE = shim-$(SHIM_VERSION).tar.bz2 +SHIM_LICENSE = BSD-2-Clause +SHIM_LICENSE_FILES = COPYRIGHT +SHIM_CPE_ID_VENDOR = redhat +SHIM_INSTALL_TARGET = NO +SHIM_INSTALL_IMAGES = YES + +SHIM_CFLAGS = $(TARGET_CFLAGS) +SHIM_MAKE_OPTS = \ + ARCH="$(GNU_EFI_PLATFORM)" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + DASHJ="-j$(PARALLEL_JOBS)" \ + OPTIMIZATIONS="$(SHIM_CFLAGS)" + +# shim has some assembly function that is not present in Thumb mode: +# Error: selected processor does not support `mrc p15,0,r2,c9,c13,0' in Thumb mode +# so, we desactivate Thumb mode +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +SHIM_CFLAGS += -marm +endif + +define SHIM_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(SHIM_MAKE_OPTS) +endef + +define SHIM_INSTALL_IMAGES_CMDS + $(INSTALL) -m 0755 -t $(BINARIES_DIR) $(@D)/*.efi +endef + +$(eval $(generic-package)) diff --git a/boot/syslinux/0001-bios-Fix-alignment-change-with-gcc-5.patch b/boot/syslinux/0001-bios-Fix-alignment-change-with-gcc-5.patch new file mode 100644 index 00000000..633d996e --- /dev/null +++ b/boot/syslinux/0001-bios-Fix-alignment-change-with-gcc-5.patch @@ -0,0 +1,82 @@ +From da5cbd1a3b248f2d32281a1766a3d1414c0e8e03 Mon Sep 17 00:00:00 2001 +From: Sylvain Gault +Date: Tue, 29 Sep 2015 02:38:25 +0200 +Subject: [PATCH] bios: Fix alignment change with gcc 5 + +The section aligment specified in the ld scripts have to be greater or +equal to those in the .o files generated by gcc. + +Signed-off-by: Sylvain Gault +Tested-by: poma +Signed-off-by: Paulo Alcantara +Signed-off-by: Frank Hunleth +--- + core/i386/syslinux.ld | 6 +++--- + core/x86_64/syslinux.ld | 6 +++--- + 2 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/core/i386/syslinux.ld b/core/i386/syslinux.ld +index 7b4e012..7390451 100644 +--- a/core/i386/syslinux.ld ++++ b/core/i386/syslinux.ld +@@ -266,7 +266,7 @@ SECTIONS + __text_end = .; + } + +- . = ALIGN(16); ++ . = ALIGN(32); + + __rodata_vma = .; + __rodata_lma = __rodata_vma + __text_lma - __text_vma; +@@ -361,7 +361,7 @@ SECTIONS + __dynamic_end = .; + } + +- . = ALIGN(16); ++ . = ALIGN(32); + + __data_vma = .; + __data_lma = __data_vma + __text_lma - __text_vma; +@@ -377,7 +377,7 @@ SECTIONS + __pm_code_dwords = (__pm_code_len + 3) >> 2; + + . = ALIGN(128); +- ++ + __bss_vma = .; + __bss_lma = .; /* Dummy */ + .bss (NOLOAD) : AT (__bss_lma) { +diff --git a/core/x86_64/syslinux.ld b/core/x86_64/syslinux.ld +index 1057112..bf815c4 100644 +--- a/core/x86_64/syslinux.ld ++++ b/core/x86_64/syslinux.ld +@@ -266,7 +266,7 @@ SECTIONS + __text_end = .; + } + +- . = ALIGN(16); ++ . = ALIGN(32); + + __rodata_vma = .; + __rodata_lma = __rodata_vma + __text_lma - __text_vma; +@@ -361,7 +361,7 @@ SECTIONS + __dynamic_end = .; + } + +- . = ALIGN(16); ++ . = ALIGN(32); + + __data_vma = .; + __data_lma = __data_vma + __text_lma - __text_vma; +@@ -377,7 +377,7 @@ SECTIONS + __pm_code_dwords = (__pm_code_len + 3) >> 2; + + . = ALIGN(128); +- ++ + __bss_vma = .; + __bss_lma = .; /* Dummy */ + .bss (NOLOAD) : AT (__bss_lma) { +-- +2.7.4 + diff --git a/boot/syslinux/0002-Disable-PIE-to-avoid-FTBFS-on-amd64.patch b/boot/syslinux/0002-Disable-PIE-to-avoid-FTBFS-on-amd64.patch new file mode 100644 index 00000000..64a08b85 --- /dev/null +++ b/boot/syslinux/0002-Disable-PIE-to-avoid-FTBFS-on-amd64.patch @@ -0,0 +1,30 @@ +From 250bf2c921713434627dc7bc8b0918fa0841f9b7 Mon Sep 17 00:00:00 2001 +From: Graham Inggs +Date: Wed, 5 Apr 2017 22:03:12 +0200 +Subject: [PATCH] Disable PIE to avoid FTBFS on amd64 + +gcc 6.x has PIE support enabled by default, which causes a build issue +with syslinux. This patch disables PIE support in the relevant +syslinux Makefile. + +Signed-off-by: Ryan Coe +--- + gpxe/src/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gpxe/src/Makefile b/gpxe/src/Makefile +index cc91d78..077af64 100644 +--- a/gpxe/src/Makefile ++++ b/gpxe/src/Makefile +@@ -4,7 +4,7 @@ + # + + CLEANUP := +-CFLAGS := ++CFLAGS := -fno-PIE + ASFLAGS := + LDFLAGS := + MAKEDEPS := Makefile +-- +2.7.4 + diff --git a/boot/syslinux/0003-memdisk-Force-ld-output-format-to-32-bits.patch b/boot/syslinux/0003-memdisk-Force-ld-output-format-to-32-bits.patch new file mode 100644 index 00000000..4eedf497 --- /dev/null +++ b/boot/syslinux/0003-memdisk-Force-ld-output-format-to-32-bits.patch @@ -0,0 +1,32 @@ +From c0287594239d5af2082cac20817f8e8b11a4b1b2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Beno=C3=AEt=20Allard?= +Date: Wed, 5 Apr 2017 14:18:09 +0200 +Subject: [PATCH] memdisk: Force ld output format to 32-bits +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +On toolchains where the default output is x86_64, we need to be +consistent with the other .o files + +Signed-off-by: Benoît Allard +--- + memdisk/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/memdisk/Makefile b/memdisk/Makefile +index e6557d8..06613ff 100644 +--- a/memdisk/Makefile ++++ b/memdisk/Makefile +@@ -78,7 +78,7 @@ memdisk16.o: memdisk16.asm + $(NASM) -f bin $(NASMOPT) $(NFLAGS) $(NINCLUDE) -o $@ -l $*.lst $< + + memdisk_%.o: memdisk_%.bin +- $(LD) -r -b binary -o $@ $< ++ $(LD) --oformat elf32-i386 -r -b binary -o $@ $< + + memdisk16.elf: $(OBJS16) + $(LD) -Ttext 0 -o $@ $^ +-- +2.7.4 + diff --git a/boot/syslinux/0004-utils-Use-the-host-toolchain-to-build.patch b/boot/syslinux/0004-utils-Use-the-host-toolchain-to-build.patch new file mode 100644 index 00000000..e091a3a8 --- /dev/null +++ b/boot/syslinux/0004-utils-Use-the-host-toolchain-to-build.patch @@ -0,0 +1,60 @@ +From e000251144056c99e390a2a4449d06cbd2a19c0a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Beno=C3=AEt=20Allard?= +Date: Wed, 5 Apr 2017 14:25:02 +0200 +Subject: [PATCH] utils: Use the host toolchain to build. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The utilities are meant to run on the host machine, hence must be built using +the host toolchain. + +Signed-off-by: Benoît Allard +--- + utils/Makefile | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/utils/Makefile b/utils/Makefile +index dfe6259..ac91aaa 100644 +--- a/utils/Makefile ++++ b/utils/Makefile +@@ -17,8 +17,8 @@ + VPATH = $(SRC) + include $(MAKEDIR)/syslinux.mk + +-CFLAGS = $(GCCWARN) -Os -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 -I$(SRC) +-LDFLAGS = -O2 ++CFLAGS = $(CFLAGS_FOR_BUILD) $(GCCWARN) -Os -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 -I$(SRC) ++LDFLAGS = $(LDFLAGS_FOR_BUILD) -O2 + + C_TARGETS = isohybrid gethostip memdiskfind + SCRIPT_TARGETS = mkdiskimage +@@ -35,7 +35,7 @@ ISOHDPFX = $(addprefix $(OBJ)/,../mbr/isohdpfx.bin ../mbr/isohdpfx_f.bin \ + all: $(TARGETS) + + %.o: %.c +- $(CC) $(UMAKEDEPS) $(CFLAGS) -c -o $@ $< ++ $(CC_FOR_BUILD) $(UMAKEDEPS) $(CFLAGS) -c -o $@ $< + + mkdiskimage: mkdiskimage.in ../mbr/mbr.bin bin2hex.pl + $(PERL) $(SRC)/bin2hex.pl < $(OBJ)/../mbr/mbr.bin | cat $(SRC)/mkdiskimage.in - > $@ +@@ -51,13 +51,13 @@ isohdpfx.c: $(ISOHDPFX) isohdpfxarray.pl + $(PERL) $(SRC)/isohdpfxarray.pl $(ISOHDPFX) > $@ + + isohybrid: isohybrid.o isohdpfx.o +- $(CC) $(LDFLAGS) -o $@ $^ -luuid ++ $(CC_FOR_BUILD) $(LDFLAGS) -o $@ $^ -luuid + + gethostip: gethostip.o +- $(CC) $(LDFLAGS) -o $@ $^ ++ $(CC_FOR_BUILD) $(LDFLAGS) -o $@ $^ + + memdiskfind: memdiskfind.o +- $(CC) $(LDFLAGS) -o $@ $^ ++ $(CC_FOR_BUILD) $(LDFLAGS) -o $@ $^ + + tidy dist: + rm -f *.o .*.d isohdpfx.c +-- +2.1.4 + diff --git a/boot/syslinux/0005-lzo-Use-the-host-toolchain-for-prepcore.patch b/boot/syslinux/0005-lzo-Use-the-host-toolchain-for-prepcore.patch new file mode 100644 index 00000000..c6fa7feb --- /dev/null +++ b/boot/syslinux/0005-lzo-Use-the-host-toolchain-for-prepcore.patch @@ -0,0 +1,44 @@ +From 83e1f00990c25554723609bb549e18b987034317 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Beno=C3=AEt=20Allard?= +Date: Thu, 6 Apr 2017 09:43:46 +0200 +Subject: [PATCH] lzo: Use the host toolchain for prepcore +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Benoît Allard +--- + lzo/Makefile | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/lzo/Makefile b/lzo/Makefile +index 29f1fa6..c016e5a 100644 +--- a/lzo/Makefile ++++ b/lzo/Makefile +@@ -11,10 +11,13 @@ + ## ----------------------------------------------------------------------- + + VPATH = $(SRC) +-include $(MAKEDIR)/build.mk ++include $(MAKEDIR)/syslinux.mk + + INCLUDES += -I$(SRC)/include + ++%.o: %.c ++ $(CC_FOR_BUILD) $(UMAKEDEPS) $(CFLAGS_FOR_BUILD) $(INCLUDES) -c -o $@ $< ++ + LIBOBJS = $(patsubst %.c,%.o,$(subst $(SRC)/,,$(wildcard $(SRC)/src/*.c))) + LIB = lzo.a + BINS = prepcore +@@ -30,7 +33,7 @@ $(LIB) : $(LIBOBJS) + $(RANLIB) $@ + + prepcore : prepcore.o $(LIB) +- $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) ++ $(CC_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ $^ $(LIBS) + + tidy dist clean spotless: + rm -f $(BINS) +-- +2.1.4 + diff --git a/boot/syslinux/0006-The-VPrint-definition-is-now-part-of-the-exports-of-.patch b/boot/syslinux/0006-The-VPrint-definition-is-now-part-of-the-exports-of-.patch new file mode 100644 index 00000000..c3760102 --- /dev/null +++ b/boot/syslinux/0006-The-VPrint-definition-is-now-part-of-the-exports-of-.patch @@ -0,0 +1,37 @@ +From 39274503292a6003b1b0c93f694e34f11e85ea44 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Beno=C3=AEt=20Allard?= +Date: Fri, 9 Jun 2017 11:55:14 +0200 +Subject: [PATCH] The VPrint definition is now part of the exports of + gnu-efi +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Benoît Allard +--- + efi/fio.h | 9 --------- + 1 file changed, 9 deletions(-) + +diff --git a/efi/fio.h b/efi/fio.h +index 65fff8d..a1bfe68 100644 +--- a/efi/fio.h ++++ b/efi/fio.h +@@ -11,15 +11,6 @@ + #define MAX_EFI_ARGS 64 + #define WS(c16) (c16 == L' ' || c16 == CHAR_TAB) + +-/* VPrint is not in export declarations in gnu-efi lib yet +- * although it is a global function; declare it here +- */ +-extern UINTN +-VPrint ( +- IN CHAR16 *fmt, +- va_list args +- ); +- + extern EFI_STATUS efi_errno; + + void efi_memcpy(unsigned char *dst, unsigned char *src, size_t len); +-- +2.1.4 + diff --git a/boot/syslinux/0007-Update-the-longjump-calls-to-fit-the-new-declaration.patch b/boot/syslinux/0007-Update-the-longjump-calls-to-fit-the-new-declaration.patch new file mode 100644 index 00000000..90d0b81f --- /dev/null +++ b/boot/syslinux/0007-Update-the-longjump-calls-to-fit-the-new-declaration.patch @@ -0,0 +1,37 @@ +From 3bd5c2d951421a89f76b2423e5810862f53486c1 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Beno=C3=AEt=20Allard?= +Date: Fri, 9 Jun 2017 11:59:43 +0200 +Subject: [PATCH] Update the longjump calls to fit the new declaration +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Benoît Allard +--- + efi/main.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/efi/main.c b/efi/main.c +index 208fee4f..71d31a5c 100644 +--- a/efi/main.c ++++ b/efi/main.c +@@ -10,7 +10,6 @@ + #include + #include + #include +-#include + + #include "efi.h" + #include "fio.h" +@@ -30,7 +29,7 @@ uint32_t timer_irq; + __export uint8_t KbdMap[256]; + char aux_seg[256]; + +-static jmp_buf load_error_buf; ++static jmp_buf *load_error_buf; + + static inline EFI_STATUS + efi_close_protocol(EFI_HANDLE handle, EFI_GUID *guid, EFI_HANDLE agent, +-- +2.13.3 + diff --git a/boot/syslinux/0008-efi-wrapper-build-it-with-the-host-toolchain.patch b/boot/syslinux/0008-efi-wrapper-build-it-with-the-host-toolchain.patch new file mode 100644 index 00000000..9ec12a17 --- /dev/null +++ b/boot/syslinux/0008-efi-wrapper-build-it-with-the-host-toolchain.patch @@ -0,0 +1,32 @@ +From ca8aaded0c7c3900397029bd9520132b62629308 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Beno=C3=AEt=20Allard?= +Date: Mon, 12 Jun 2017 14:59:16 +0200 +Subject: [PATCH] efi/wrapper: build it with the host toolchain. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The wrapper program is executed on the build machine, so it should be +built with CC_FOR_BUILD. + +Signed-off-by: Benoît Allard +--- + efi/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/efi/Makefile b/efi/Makefile +index d5443bd5..d24d16db 100644 +--- a/efi/Makefile ++++ b/efi/Makefile +@@ -79,7 +79,7 @@ syslinux.so: $(OBJS) $(CORE_OBJS) $(LIB_OBJS) + # cp $^ $@ + + wrapper: wrapper.c +- $(CC) $^ -o $@ ++ $(CC_FOR_BUILD) $^ -o $@ + + # + # Build the wrapper app and wrap our .so to produce a .efi +-- +2.13.3 + diff --git a/boot/syslinux/0009-bios-Don-t-try-to-guess-the-sections-alignment.patch b/boot/syslinux/0009-bios-Don-t-try-to-guess-the-sections-alignment.patch new file mode 100644 index 00000000..916012f6 --- /dev/null +++ b/boot/syslinux/0009-bios-Don-t-try-to-guess-the-sections-alignment.patch @@ -0,0 +1,295 @@ +From 76946dd67bc856eaf4fe69d0826547a794176f78 Mon Sep 17 00:00:00 2001 +From: Sylvain Gault +Date: Tue, 29 Sep 2015 04:45:09 +0200 +Subject: [PATCH] bios: Don't try to guess the sections alignment + +For the compression / decompression to succeed, the sections layout must +be the same between the virtual memory and load memory. The section +alignment was kept in sync by introducing aligment that should be +greater or equal to the actual section alignment. + +This patch compute the load memory addresses of the sections so that +the layout is the same as the virtual memory addresses. + +Signed-off-by: Sylvain Gault +Tested-by: poma +Signed-off-by: Paulo Alcantara + +Upstream: 0cc9a99e560a2f52bcf052fd85b1efae35ee812f +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + core/i386/syslinux.ld | 63 ++++++++++--------------------------------------- + core/x86_64/syslinux.ld | 63 ++++++++++--------------------------------------- + 2 files changed, 24 insertions(+), 102 deletions(-) + +diff --git a/core/i386/syslinux.ld b/core/i386/syslinux.ld +index 73904510..92b75b11 100644 +--- a/core/i386/syslinux.ld ++++ b/core/i386/syslinux.ld +@@ -255,10 +255,9 @@ SECTIONS + . = 0x100000; + + __pm_code_start = .; ++ __vma_to_lma = __pm_code_lma - __pm_code_start; + +- __text_vma = .; +- __text_lma = __pm_code_lma; +- .text : AT(__text_lma) { ++ .text : AT(ADDR(.text) + __vma_to_lma) { + FILL(0x90909090) + __text_start = .; + *(.text) +@@ -266,106 +265,68 @@ SECTIONS + __text_end = .; + } + +- . = ALIGN(32); +- +- __rodata_vma = .; +- __rodata_lma = __rodata_vma + __text_lma - __text_vma; +- .rodata : AT(__rodata_lma) { ++ .rodata : AT(ADDR(.rodata) + __vma_to_lma) { + __rodata_start = .; + *(.rodata) + *(.rodata.*) + __rodata_end = .; + } + +- . = ALIGN(4); +- +- __ctors_vma = .; +- __ctors_lma = __ctors_vma + __text_lma - __text_vma; +- .ctors : AT(__ctors_lma) { ++ .ctors : AT(ADDR(.ctors) + __vma_to_lma) { + __ctors_start = .; + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + __ctors_end = .; + } + +- __dtors_vma = .; +- __dtors_lma = __dtors_vma + __text_lma - __text_vma; +- .dtors : AT(__dtors_lma) { ++ .dtors : AT(ADDR(.dtors) + __vma_to_lma) { + __dtors_start = .; + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + __dtors_end = .; + } + +- . = ALIGN(4); +- +- __dynsym_vma = .; +- __dynsym_lma = __dynsym_vma + __text_lma - __text_vma; +- .dynsym : AT(__dynsym_lma) { ++ .dynsym : AT(ADDR(.dynsym) + __vma_to_lma) { + __dynsym_start = .; + *(.dynsym) + __dynsym_end = .; + } + __dynsym_len = __dynsym_end - __dynsym_start; + +- . = ALIGN(4); +- +- __dynstr_vma = .; +- __dynstr_lma = __dynstr_vma + __text_lma - __text_vma; +- .dynstr : AT(__dynstr_lma) { ++ .dynstr : AT(ADDR(.dynstr) + __vma_to_lma) { + __dynstr_start = .; + *(.dynstr) + __dynstr_end = .; + } + __dynstr_len = __dynstr_end - __dynstr_start; + +- . = ALIGN(4); +- +- __gnu_hash_vma = .; +- __gnu_hash_lma = __gnu_hash_vma + __text_lma - __text_vma; +- .gnu.hash : AT(__gnu_hash_lma) { ++ .gnu.hash : AT(ADDR(.gnu.hash) + __vma_to_lma) { + __gnu_hash_start = .; + *(.gnu.hash) + __gnu_hash_end = .; + } + + +- . = ALIGN(4); +- +- __dynlink_vma = .; +- __dynlink_lma = __dynlink_vma + __text_lma - __text_vma; +- .dynlink : AT(__dynlink_lma) { ++ .dynlink : AT(ADDR(.dynlink) + __vma_to_lma) { + __dynlink_start = .; + *(.dynlink) + __dynlink_end = .; + } + +- . = ALIGN(4); +- +- __got_vma = .; +- __got_lma = __got_vma + __text_lma - __text_vma; +- .got : AT(__got_lma) { ++ .got : AT(ADDR(.got) + __vma_to_lma) { + __got_start = .; + KEEP (*(.got.plt)) + KEEP (*(.got)) + __got_end = .; + } + +- . = ALIGN(4); +- +- __dynamic_vma = .; +- __dynamic_lma = __dynamic_vma + __text_lma - __text_vma; +- .dynamic : AT(__dynamic_lma) { ++ .dynamic : AT(ADDR(.dynamic) + __vma_to_lma) { + __dynamic_start = .; + *(.dynamic) + __dynamic_end = .; + } + +- . = ALIGN(32); +- +- __data_vma = .; +- __data_lma = __data_vma + __text_lma - __text_vma; +- .data : AT(__data_lma) { ++ .data : AT(ADDR(.data) + __vma_to_lma) { + __data_start = .; + *(.data) + *(.data.*) +diff --git a/core/x86_64/syslinux.ld b/core/x86_64/syslinux.ld +index bf815c46..70c6e00a 100644 +--- a/core/x86_64/syslinux.ld ++++ b/core/x86_64/syslinux.ld +@@ -255,10 +255,9 @@ SECTIONS + . = 0x100000; + + __pm_code_start = .; ++ __vma_to_lma = __pm_code_lma - __pm_code_start; + +- __text_vma = .; +- __text_lma = __pm_code_lma; +- .text : AT(__text_lma) { ++ .text : AT(ADDR(.text) + __vma_to_lma) { + FILL(0x90909090) + __text_start = .; + *(.text) +@@ -266,106 +265,68 @@ SECTIONS + __text_end = .; + } + +- . = ALIGN(32); +- +- __rodata_vma = .; +- __rodata_lma = __rodata_vma + __text_lma - __text_vma; +- .rodata : AT(__rodata_lma) { ++ .rodata : AT(ADDR(.rodata) + __vma_to_lma) { + __rodata_start = .; + *(.rodata) + *(.rodata.*) + __rodata_end = .; + } + +- . = ALIGN(4); +- +- __ctors_vma = .; +- __ctors_lma = __ctors_vma + __text_lma - __text_vma; +- .ctors : AT(__ctors_lma) { ++ .ctors : AT(ADDR(.ctors) + __vma_to_lma) { + __ctors_start = .; + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + __ctors_end = .; + } + +- __dtors_vma = .; +- __dtors_lma = __dtors_vma + __text_lma - __text_vma; +- .dtors : AT(__dtors_lma) { ++ .dtors : AT(ADDR(.dtors) + __vma_to_lma) { + __dtors_start = .; + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + __dtors_end = .; + } + +- . = ALIGN(4); +- +- __dynsym_vma = .; +- __dynsym_lma = __dynsym_vma + __text_lma - __text_vma; +- .dynsym : AT(__dynsym_lma) { ++ .dynsym : AT(ADDR(.dynsym) + __vma_to_lma) { + __dynsym_start = .; + *(.dynsym) + __dynsym_end = .; + } + __dynsym_len = __dynsym_end - __dynsym_start; + +- . = ALIGN(4); +- +- __dynstr_vma = .; +- __dynstr_lma = __dynstr_vma + __text_lma - __text_vma; +- .dynstr : AT(__dynstr_lma) { ++ .dynstr : AT(ADDR(.dynstr) + __vma_to_lma) { + __dynstr_start = .; + *(.dynstr) + __dynstr_end = .; + } + __dynstr_len = __dynstr_end - __dynstr_start; + +- . = ALIGN(4); +- +- __gnu_hash_vma = .; +- __gnu_hash_lma = __gnu_hash_vma + __text_lma - __text_vma; +- .gnu.hash : AT(__gnu_hash_lma) { ++ .gnu.hash : AT(ADDR(.gnu.hash) + __vma_to_lma) { + __gnu_hash_start = .; + *(.gnu.hash) + __gnu_hash_end = .; + } + + +- . = ALIGN(4); +- +- __dynlink_vma = .; +- __dynlink_lma = __dynlink_vma + __text_lma - __text_vma; +- .dynlink : AT(__dynlink_lma) { ++ .dynlink : AT(ADDR(.dynlink) + __vma_to_lma) { + __dynlink_start = .; + *(.dynlink) + __dynlink_end = .; + } + +- . = ALIGN(4); +- +- __got_vma = .; +- __got_lma = __got_vma + __text_lma - __text_vma; +- .got : AT(__got_lma) { ++ .got : AT(ADDR(.got) + __vma_to_lma) { + __got_start = .; + KEEP (*(.got.plt)) + KEEP (*(.got)) + __got_end = .; + } + +- . = ALIGN(4); +- +- __dynamic_vma = .; +- __dynamic_lma = __dynamic_vma + __text_lma - __text_vma; +- .dynamic : AT(__dynamic_lma) { ++ .dynamic : AT(ADDR(.dynamic) + __vma_to_lma) { + __dynamic_start = .; + *(.dynamic) + __dynamic_end = .; + } + +- . = ALIGN(32); +- +- __data_vma = .; +- __data_lma = __data_vma + __text_lma - __text_vma; +- .data : AT(__data_lma) { ++ .data : AT(ADDR(.data) + __vma_to_lma) { + __data_start = .; + *(.data) + *(.data.*) +-- +2.13.3 + diff --git a/boot/syslinux/0010-core-Clean-up-the-i386-bios-build.patch b/boot/syslinux/0010-core-Clean-up-the-i386-bios-build.patch new file mode 100644 index 00000000..8b6d5254 --- /dev/null +++ b/boot/syslinux/0010-core-Clean-up-the-i386-bios-build.patch @@ -0,0 +1,622 @@ +From a14b1b3d3e375d2e8af8804171ef5e52574dbb2a Mon Sep 17 00:00:00 2001 +From: "H. Peter Anvin" +Date: Tue, 9 Feb 2016 18:15:50 -0800 +Subject: [PATCH] core: Clean up the i386-bios build + +Remove symbols and data structures not used in the i386-bios build, +and clean up the linker script so that most internal symbols are +HIDDEN. + +Signed-off-by: H. Peter Anvin + +Upstream: ff859050fa4e6535cae098dc35d88a265466448d + +This patch fixes the following build failure with i386 binutils 2.28.1: + +/builds/arnout/buildroot/output/host/bin/i586-buildroot-linux-uclibc-ld -Bsymbolic -pie -E --hash-style=gnu -T +/builds/arnout/buildroot/output/build/syslinux-6.03/core/i386/syslinux.ld -M -o ldlinux.elf ldlinux.o \ + --start-group libcom32.a --whole-archive /builds/arnout/buildroot/output/build/syslinux-6.03/bios/com32/lib/libcom32core.a libldlinux.a --end-group -N +--no-omagic \ + > ldlinux.map +/builds/arnout/buildroot/output/host/bin/i586-buildroot-linux-uclibc-ld: ldlinux.elf: Not enough room for program headers, try linking with -N +/builds/arnout/buildroot/output/host/bin/i586-buildroot-linux-uclibc-ld: final link failed: Bad value +/builds/arnout/buildroot/output/build/syslinux-6.03/core/Makefile:167: recipe for target 'ldlinux.elf' failed + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + core/extern.inc | 17 +-- + core/i386/syslinux.ld | 287 +++++++++++++++++++++++++------------------------- + core/layout.inc | 11 -- + 3 files changed, 143 insertions(+), 172 deletions(-) + +diff --git a/core/extern.inc b/core/extern.inc +index af8eb04c..ce4abfab 100644 +--- a/core/extern.inc ++++ b/core/extern.inc +@@ -12,27 +12,17 @@ + ; hello.c + extern hello + +- ;abort.c +- extern abort_load_new +- + ; elflink/load_env32.c + extern load_env32, pm_env32_run + +- ; memscan.c +- extern highmem_init +- +- extern linux_kernel +- + extern mp1, mp2, mp3, mp4, mp5 + +- extern hexdump, mydump ++ extern hexdump + + extern mem_init + + ; fs.c +- extern pm_fs_init, pm_searchdir, getfssec, getfsbytes +- extern pm_mangle_name, pm_load_config +- extern pm_open_file, pm_close_file ++ extern pm_fs_init + extern SectorSize, SectorShift + + ; chdir.c +@@ -41,9 +31,6 @@ + ; readdir.c + extern opendir, readdir, closedir + +- ; newconfig.c +- extern pm_is_config_file +- + ; idle.c + extern __idle + +diff --git a/core/i386/syslinux.ld b/core/i386/syslinux.ld +index 92b75b11..39198d75 100644 +--- a/core/i386/syslinux.ld ++++ b/core/i386/syslinux.ld +@@ -1,7 +1,7 @@ + /* ----------------------------------------------------------------------- + * + * Copyright 2008-2009 H. Peter Anvin - All Rights Reserved +- * Copyright 2009 Intel Corporation; author: H. Peter Anvin ++ * Copyright 2009-2016 Intel Corporation; author: H. Peter Anvin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by +@@ -12,7 +12,7 @@ + * ----------------------------------------------------------------------- */ + + /* +- * Linker script for the SYSLINUX core ++ * Linker script for the SYSLINUX core when built for i386-bios + */ + + OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") +@@ -26,7 +26,7 @@ SECTIONS + { + /* Prefix structure for the compression program */ + . = 0; +- __module_start = .; ++ HIDDEN(__module_start = ABSOLUTE(.)); + .prefix : { + *(.prefix) + } +@@ -35,81 +35,82 @@ SECTIONS + . = 0x1000; + + .earlybss (NOLOAD) : { +- __earlybss_start = .; ++ HIDDEN(__earlybss_start = .); + *(.earlybss) +- __earlybss_end = .; ++ HIDDEN(__earlybss_end = .); + } +- __earlybss_len = ABSOLUTE(__earlybss_end) - ABSOLUTE(__earlybss_start); +- __earlybss_dwords = (__earlybss_len + 3) >> 2; ++ HIDDEN(__earlybss_len = ABSOLUTE(__earlybss_end) - ABSOLUTE(__earlybss_start)); ++ HIDDEN(__earlybss_dwords = (__earlybss_len + 3) >> 2); + + . = ALIGN(4); + .bss16 (NOLOAD) : { +- __bss16_start = .; ++ HIDDEN(__bss16_start = .); + *(.bss16) +- __bss16_end = .; ++ HIDDEN(__bss16_end = .); + } +- __bss16_len = ABSOLUTE(__bss16_end) - ABSOLUTE(__bss16_start); +- __bss16_dwords = (__bss16_len + 3) >> 2; ++ HIDDEN(__bss16_len = ABSOLUTE(__bss16_end) - ABSOLUTE(__bss16_start)); ++ HIDDEN(__bss16_dwords = (__bss16_len + 3) >> 2); + + . = ALIGN(4); + .config : AT (__config_lma) { +- __config_start = .; ++ HIDDEN(__config_start = .); + *(.config) +- __config_end = .; ++ HIDDEN(__config_end = .); + } +- __config_len = ABSOLUTE(__config_end) - ABSOLUTE(__config_start); +- __config_dwords = (__config_len + 3) >> 2; ++ HIDDEN(__config_len = ABSOLUTE(__config_end) - ABSOLUTE(__config_start)); ++ HIDDEN(__config_dwords = (__config_len + 3) >> 2); + + /* Generated and/or copied code */ + + . = ALIGN(128); /* Minimum separation from mutable data */ + .replacestub : AT (__replacestub_lma) { +- __replacestub_start = .; ++ HIDDEN(__replacestub_start = .); + *(.replacestub) +- __replacestub_end = .; ++ HIDDEN(__replacestub_end = .); + } +- __replacestub_len = ABSOLUTE(__replacestub_end) - ABSOLUTE(__replacestub_start); +- __replacestub_dwords = (__replacestub_len + 3) >> 2; ++ HIDDEN(__replacestub_len = ABSOLUTE(__replacestub_end) - ABSOLUTE(__replacestub_start)); ++ HIDDEN(__replacestub_dwords = (__replacestub_len + 3) >> 2); + + . = ALIGN(16); +- __gentextnr_lma = .; ++ HIDDEN(__gentextnr_lma = .); + .gentextnr : AT(__gentextnr_lma) { +- __gentextnr_start = .; ++ HIDDEN(__gentextnr_start = .); + *(.gentextnr) +- __gentextnr_end = .; ++ HIDDEN(__gentextnr_end = .); + } +- __gentextnr_len = ABSOLUTE(__gentextnr_end) - ABSOLUTE(__gentextnr_start); +- __gentextnr_dwords = (__gentextnr_len + 3) >> 2; ++ HIDDEN(__gentextnr_len = ABSOLUTE(__gentextnr_end) - ABSOLUTE(__gentextnr_start)); ++ HIDDEN(__gentextnr_dwords = (__gentextnr_len + 3) >> 2); + + . = STACK_BASE; + .stack16 : AT(STACK_BASE) { +- __stack16_start = .; ++ HIDDEN(__stack16_start = .); + . += STACK_LEN; +- __stack16_end = .; ++ HIDDEN(__stack16_end = .); + } +- __stack16_len = ABSOLUTE(__stack16_end) - ABSOLUTE(__stack16_start); +- __stack16_dwords = (__stack16_len + 3) >> 2; ++ HIDDEN(__stack16_len = ABSOLUTE(__stack16_end) - ABSOLUTE(__stack16_start)); ++ HIDDEN(__stack16_dwords = (__stack16_len + 3) >> 2); + + /* Initialized sections */ + + . = 0x7c00; + .init : { + FILL(0x90909090) +- __init_start = .; ++ HIDDEN(__init_start = .); + *(.init) +- __init_end = .; ++ HIDDEN(__init_end = .); + } +- __init_len = ABSOLUTE(__init_end) - ABSOLUTE(__init_start); +- __init_dwords = (__init_len + 3) >> 2; ++ HIDDEN(__init_len = ABSOLUTE(__init_end) - ABSOLUTE(__init_start)); ++ HIDDEN(__init_dwords = (__init_len + 3) >> 2); + ++ . = ALIGN(4); + .text16 : { + FILL(0x90909090) +- __text16_start = .; ++ HIDDEN(__text16_start = .); + *(.text16) +- __text16_end = .; ++ HIDDEN(__text16_end = .); + } +- __text16_len = ABSOLUTE(__text16_end) - ABSOLUTE(__text16_start); +- __text16_dwords = (__text16_len + 3) >> 2; ++ HIDDEN(__text16_len = ABSOLUTE(__text16_end) - ABSOLUTE(__text16_start)); ++ HIDDEN(__text16_dwords = (__text16_len + 3) >> 2); + + /* + * .textnr is used for 32-bit code that is used on the code +@@ -118,99 +119,92 @@ SECTIONS + . = ALIGN(16); + .textnr : { + FILL(0x90909090) +- __textnr_start = .; ++ HIDDEN(__textnr_start = .); + *(.textnr) +- __textnr_end = .; ++ HIDDEN(__textnr_end = .); + } +- __textnr_len = ABSOLUTE(__textnr_end) - ABSOLUTE(__textnr_start); +- __textnr_dwords = (__textnr_len + 3) >> 2; ++ HIDDEN(__textnr_len = ABSOLUTE(__textnr_end) - ABSOLUTE(__textnr_start)); ++ HIDDEN(__textnr_dwords = (__textnr_len + 3) >> 2); + + . = ALIGN(16); +- __bcopyxx_start = .; ++ HIDDEN(__bcopyxx_start = .); + + .bcopyxx.text : { + FILL(0x90909090) +- __bcopyxx_text_start = .; ++ HIDDEN(__bcopyxx_text_start = .); + *(.bcopyxx.text) +- __bcopyxx_text_end = .; ++ HIDDEN(__bcopyxx_text_end = .); + } +- __bcopyxx_text_len = ABSOLUTE(__bcopyxx_text_end) - ABSOLUTE(__bcopyxx_text_start); +- __bcopyxx_text_dwords = (__bcopyxx_text_len + 3) >> 2; ++ HIDDEN(__bcopyxx_text_len = ABSOLUTE(__bcopyxx_text_end) - ABSOLUTE(__bcopyxx_text_start)); ++ HIDDEN(__bcopyxx_text_dwords = (__bcopyxx_text_len + 3) >> 2); + + .bcopyxx.data : { +- __bcopyxx_data_start = .; ++ HIDDEN(__bcopyxx_data_start = .); + *(.bcopyxx.text) +- __bcopyxx_data_end = .; ++ HIDDEN(__bcopyxx_data_end = .); + } +- __bcopyxx_data_len = ABSOLUTE(__bcopyxx_data_end) - ABSOLUTE(__bcopyxx_data_start); +- __bcopyxx_data_dwords = (__bcopyxx_data_len + 3) >> 2; ++ HIDDEN(__bcopyxx_data_len = ABSOLUTE(__bcopyxx_data_end) - ABSOLUTE(__bcopyxx_data_start)); ++ HIDDEN(__bcopyxx_data_dwords = (__bcopyxx_data_len + 3) >> 2); + +- __bcopyxx_end = .; +- __bcopyxx_len = ABSOLUTE(__bcopyxx_end) - ABSOLUTE(__bcopyxx_start); +- __bcopyxx_dwords = (__bcopyxx_len + 3) >> 2; ++ HIDDEN(__bcopyxx_end = .); ++ HIDDEN(__bcopyxx_len = ABSOLUTE(__bcopyxx_end) - ABSOLUTE(__bcopyxx_start)); ++ HIDDEN(__bcopyxx_dwords = (__bcopyxx_len + 3) >> 2); + + . = ALIGN(4); + .data16 : { +- __data16_start = .; ++ HIDDEN(__data16_start = .); + *(.data16) +- __data16_end = .; ++ HIDDEN(__data16_end = .); + } +- __data16_len = ABSOLUTE(__data16_end) - ABSOLUTE(__data16_start); +- __data16_dwords = (__data16_len + 3) >> 2; ++ HIDDEN(__data16_len = ABSOLUTE(__data16_end) - ABSOLUTE(__data16_start)); ++ HIDDEN(__data16_dwords = (__data16_len + 3) >> 2); + + . = ALIGN(4); +- __config_lma = .; ++ HIDDEN(__config_lma = ABSOLUTE(.)); + . += SIZEOF(.config); + + . = ALIGN(4); +- __replacestub_lma = .; ++ HIDDEN(__replacestub_lma = ABSOLUTE(.)); + . += SIZEOF(.replacestub); + + /* The 32-bit code loads above the non-progbits sections */ + + . = ALIGN(16); +- __pm_code_lma = .; ++ HIDDEN(__pm_code_lma = ABSOLUTE(.)); + +- __high_clear_start = .; ++ HIDDEN(__high_clear_start = .); + + . = ALIGN(512); + .adv (NOLOAD) : { +- __adv_start = .; ++ HIDDEN(__adv_start = .); + *(.adv) +- __adv_end = .; ++ HIDDEN(__adv_end = .); + } +- __adv_len = ABSOLUTE(__adv_end) - ABSOLUTE(__adv_start); +- __adv_dwords = (__adv_len + 3) >> 2; ++ HIDDEN(__adv_len = ABSOLUTE(__adv_end) - ABSOLUTE(__adv_start)); ++ HIDDEN(__adv_dwords = (__adv_len + 3) >> 2); + + /* Late uninitialized sections */ + + . = ALIGN(4); + .uibss (NOLOAD) : { +- __uibss_start = .; ++ HIDDEN(__uibss_start = .); + *(.uibss) +- __uibss_end = .; ++ HIDDEN(__uibss_end = .); + } +- __uibss_len = ABSOLUTE(__uibss_end) - ABSOLUTE(__uibss_start); +- __uibss_dwords = (__uibss_len + 3) >> 2; ++ HIDDEN(__uibss_len = ABSOLUTE(__uibss_end) - ABSOLUTE(__uibss_start)); ++ HIDDEN(__uibss_dwords = (__uibss_len + 3) >> 2); + +- _end16 = .; +- __assert_end16 = ASSERT(_end16 <= 0x10000, "64K overflow"); ++ HIDDEN(_end16 = .); ++ HIDDEN(__assert_end16 = ASSERT(_end16 <= 0x10000, "64K overflow")); + + /* + * Special 16-bit segments + */ +- +- . = ALIGN(65536); +- .real_mode (NOLOAD) : { +- *(.real_mode) +- } +- real_mode_seg = core_real_mode >> 4; +- + . = ALIGN(65536); + .xfer_buf (NOLOAD) : { + *(.xfer_buf) + } +- xfer_buf_seg = core_xfer_buf >> 4; ++ HIDDEN(xfer_buf_seg = core_xfer_buf >> 4); + + /* + * The auxilliary data segment is used by the 16-bit code +@@ -219,33 +213,33 @@ SECTIONS + + . = ALIGN(16); + .auxseg (NOLOAD) : { +- __auxseg_start = .; ++ HIDDEN(__auxseg_start = .); + *(.auxseg) +- __auxseg_end = .; ++ HIDDEN(__auxseg_end = .); + } +- __auxseg_len = ABSOLUTE(__auxseg_end) - ABSOLUTE(__auxseg_start); +- __auxseg_dwords = (__auxseg_len + 3) >> 2; +- aux_seg = __auxseg_start >> 4; ++ HIDDEN(__auxseg_len = ABSOLUTE(__auxseg_end) - ABSOLUTE(__auxseg_start)); ++ HIDDEN(__auxseg_dwords = (__auxseg_len + 3) >> 2); ++ HIDDEN(aux_seg = __auxseg_start >> 4); + + /* + * Used to allocate lowmem buffers from 32-bit code + */ + .lowmem (NOLOAD) : { +- __lowmem_start = .; ++ HIDDEN(__lowmem_start = .); + *(.lowmem) +- __lowmem_end = .; ++ HIDDEN(__lowmem_end = .); + } +- __lowmem_len = ABSOLUTE(__lowmem_end) - ABSOLUTE(__lowmem_start); +- __lowmem_dwords = (__lowmem_len + 3) >> 2; ++ HIDDEN(__lowmem_len = ABSOLUTE(__lowmem_end) - ABSOLUTE(__lowmem_start)); ++ HIDDEN(__lowmem_dwords = (__lowmem_len + 3) >> 2); + +- __high_clear_end = .; ++ HIDDEN(__high_clear_end = .); + +- __high_clear_len = ABSOLUTE(__high_clear_end) - ABSOLUTE(__high_clear_start); +- __high_clear_dwords = (__high_clear_len + 3) >> 2; ++ HIDDEN(__high_clear_len = ABSOLUTE(__high_clear_end) - ABSOLUTE(__high_clear_start)); ++ HIDDEN(__high_clear_dwords = (__high_clear_len + 3) >> 2); + + /* Start of the lowmem heap */ + . = ALIGN(16); +- __lowmem_heap = .; ++ HIDDEN(__lowmem_heap = .); + + /* + * 32-bit code. This is a hack for the moment due to the +@@ -254,136 +248,137 @@ SECTIONS + + . = 0x100000; + +- __pm_code_start = .; +- __vma_to_lma = __pm_code_lma - __pm_code_start; ++ HIDDEN(__pm_code_start = .); ++ HIDDEN(__vma_to_lma = ABSOLUTE(__pm_code_lma - __pm_code_start)); + + .text : AT(ADDR(.text) + __vma_to_lma) { + FILL(0x90909090) +- __text_start = .; ++ HIDDEN(__text_start = .); + *(.text) + *(.text.*) +- __text_end = .; ++ HIDDEN(__text_end = .); + } + + .rodata : AT(ADDR(.rodata) + __vma_to_lma) { +- __rodata_start = .; ++ HIDDEN(__rodata_start = .); + *(.rodata) + *(.rodata.*) +- __rodata_end = .; ++ HIDDEN(__rodata_end = .); + } + + .ctors : AT(ADDR(.ctors) + __vma_to_lma) { +- __ctors_start = .; ++ HIDDEN(__ctors_start = .); + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) +- __ctors_end = .; ++ HIDDEN(__ctors_end = .); + } + + .dtors : AT(ADDR(.dtors) + __vma_to_lma) { +- __dtors_start = .; ++ HIDDEN(__dtors_start = .); + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) +- __dtors_end = .; ++ HIDDEN(__dtors_end = .); + } + + .dynsym : AT(ADDR(.dynsym) + __vma_to_lma) { +- __dynsym_start = .; +- *(.dynsym) +- __dynsym_end = .; ++ HIDDEN(__dynsym_start = .); ++ KEEP (*(.dynsym)) ++ HIDDEN(__dynsym_end = .); + } +- __dynsym_len = __dynsym_end - __dynsym_start; ++ HIDDEN(__dynsym_len = __dynsym_end - __dynsym_start); + + .dynstr : AT(ADDR(.dynstr) + __vma_to_lma) { +- __dynstr_start = .; +- *(.dynstr) +- __dynstr_end = .; ++ HIDDEN(__dynstr_start = .); ++ KEEP (*(.dynstr)) ++ HIDDEN(__dynstr_end = .); + } +- __dynstr_len = __dynstr_end - __dynstr_start; ++ HIDDEN(__dynstr_len = __dynstr_end - __dynstr_start); + + .gnu.hash : AT(ADDR(.gnu.hash) + __vma_to_lma) { +- __gnu_hash_start = .; +- *(.gnu.hash) +- __gnu_hash_end = .; ++ HIDDEN(__gnu_hash_start = .); ++ KEEP (*(.gnu.hash)) ++ HIDDEN(__gnu_hash_end = .); + } + + + .dynlink : AT(ADDR(.dynlink) + __vma_to_lma) { +- __dynlink_start = .; +- *(.dynlink) +- __dynlink_end = .; ++ HIDDEN(__dynlink_start = .); ++ KEEP (*(.dynlink)) ++ HIDDEN(__dynlink_end = .); + } + + .got : AT(ADDR(.got) + __vma_to_lma) { +- __got_start = .; +- KEEP (*(.got.plt)) ++ HIDDEN(__got_start = .); + KEEP (*(.got)) +- __got_end = .; ++ KEEP (*(.got.plt)) ++ HIDDEN(__got_end = .); + } + + .dynamic : AT(ADDR(.dynamic) + __vma_to_lma) { +- __dynamic_start = .; +- *(.dynamic) +- __dynamic_end = .; ++ HIDDEN(__dynamic_start = .); ++ KEEP (*(.dynamic)) ++ HIDDEN(__dynamic_end = .); + } + + .data : AT(ADDR(.data) + __vma_to_lma) { +- __data_start = .; ++ HIDDEN(__data_start = .); + *(.data) + *(.data.*) +- __data_end = .; ++ HIDDEN(__data_end = .); + } + +- __pm_code_end = .; +- __pm_code_len = ABSOLUTE(__pm_code_end) - ABSOLUTE(__pm_code_start); +- __pm_code_dwords = (__pm_code_len + 3) >> 2; ++ HIDDEN(__pm_code_end = .); ++ HIDDEN(__pm_code_len = ABSOLUTE(__pm_code_end) - ABSOLUTE(__pm_code_start)); ++ HIDDEN(__pm_code_dwords = (__pm_code_len + 3) >> 2); + + . = ALIGN(128); + +- __bss_vma = .; +- __bss_lma = .; /* Dummy */ ++ HIDDEN(__bss_vma = .); ++ HIDDEN(__bss_lma = ABSOLUTE(.)); /* Dummy */ + .bss (NOLOAD) : AT (__bss_lma) { +- __bss_start = .; ++ HIDDEN(__bss_start = .); + *(.bss) + *(.bss.*) + *(COMMON) +- __bss_end = .; ++ HIDDEN(__bss_end = .); + } +- __bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start); +- __bss_dwords = (__bss_len + 3) >> 2; ++ HIDDEN(__bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start)); ++ HIDDEN(__bss_dwords = (__bss_len + 3) >> 2); + + /* Very large objects which don't need to be zeroed */ + +- __hugebss_vma = .; +- __hugebss_lma = .; /* Dummy */ ++ HIDDEN(__hugebss_vma = .); ++ HIDDEN(__hugebss_lma = ABSOLUTE(.)); /* Dummy */ + .hugebss (NOLOAD) : AT (__hugebss_lma) { +- __hugebss_start = .; ++ HIDDEN(__hugebss_start = .); + *(.hugebss) + *(.hugebss.*) +- __hugebss_end = .; ++ HIDDEN(__hugebss_end = .); + } +- __hugebss_len = ABSOLUTE(__hugebss_end) - ABSOLUTE(__hugebss_start); +- __hugebss_dwords = (__hugebss_len + 3) >> 2; ++ HIDDEN(__hugebss_len = ABSOLUTE(__hugebss_end) - ABSOLUTE(__hugebss_start)); ++ HIDDEN(__hugebss_dwords = (__hugebss_len + 3) >> 2); + + + /* XXX: This stack should be unified with the COM32 stack */ +- __stack_vma = .; +- __stack_lma = .; /* Dummy */ ++ HIDDEN(__stack_vma = .); ++ HIDDEN(__stack_lma = ABSOLUTE(.)); /* Dummy */ + .stack (NOLOAD) : AT(__stack_lma) { +- __stack_start = .; ++ HIDDEN(__stack_start = .); + *(.stack) +- __stack_end = .; ++ HIDDEN(__stack_end = .); + } +- __stack_len = ABSOLUTE(__stack_end) - ABSOLUTE(__stack_start); +- __stack_dwords = (__stack_len + 3) >> 2; ++ HIDDEN(__stack_len = ABSOLUTE(__stack_end) - ABSOLUTE(__stack_start)); ++ HIDDEN(__stack_dwords = (__stack_len + 3) >> 2); + +- _end = .; ++ HIDDEN(_end = .); + + /* COM32R and kernels are loaded after our own PM code */ + . = ALIGN(65536); +- free_high_memory = .; ++ HIDDEN(free_high_memory = .); + + /* Stuff we don't need... */ + /DISCARD/ : { + *(.eh_frame) ++ *(.interp) + } + } +diff --git a/core/layout.inc b/core/layout.inc +index 53ca783d..635df537 100644 +--- a/core/layout.inc ++++ b/core/layout.inc +@@ -139,17 +139,6 @@ serial_buf_size equ 4096 ; Should be a power of 2 + core_xfer_buf resb 65536 + + ; +-; Segment for the real mode code (needed as long as we have a in-kernel +-; loader and/or COM16 support. +-; One symbol for the segment number, one for the absolute address +-; +- extern real_mode_seg +- section .real_mode write nobits align=65536 +- global core_real_mode:data hidden +-core_real_mode resb 65536 +-comboot_seg equ real_mode_seg ; COMBOOT image loading zone +- +-; + ; At the very end, the lowmem heap + ; + extern __lowmem_heap +-- +2.13.3 + diff --git a/boot/syslinux/0011-extlinux-Use-the-host-toolchain-to-build.patch b/boot/syslinux/0011-extlinux-Use-the-host-toolchain-to-build.patch new file mode 100644 index 00000000..62675cf6 --- /dev/null +++ b/boot/syslinux/0011-extlinux-Use-the-host-toolchain-to-build.patch @@ -0,0 +1,53 @@ +From 4df2e7c0ae84bfbdba0ed285c0664aa089b38b7e Mon Sep 17 00:00:00 2001 +From: Carlos Santos +Date: Sat, 30 Sep 2017 19:49:55 -0300 +Subject: [PATCH] extlinux: Use the host toolchain to build. + +It is meant to run on the host machine, hence must be built using the +host toolchain. + +Signed-off-by: Carlos Santos +--- + extlinux/Makefile | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/extlinux/Makefile b/extlinux/Makefile +index 02d1db51..5c4baa5a 100644 +--- a/extlinux/Makefile ++++ b/extlinux/Makefile +@@ -18,9 +18,9 @@ include $(MAKEDIR)/syslinux.mk + + OPTFLAGS = -g -Os + INCLUDES = -I$(SRC) -I$(objdir) -I$(SRC)/../libinstaller +-CFLAGS = $(GCCWARN) -Wno-sign-compare -D_FILE_OFFSET_BITS=64 \ ++CFLAGS = $(CFLAGS_FOR_BUILD) $(GCCWARN) -Wno-sign-compare -D_FILE_OFFSET_BITS=64 \ + $(OPTFLAGS) $(INCLUDES) +-LDFLAGS = ++LDFLAGS = $(LDFLAGS_FOR_BUILD) + + SRCS = main.c \ + mountinfo.c \ +@@ -52,16 +52,16 @@ spotless: clean + installer: extlinux + + extlinux: $(OBJS) +- $(CC) $(LDFLAGS) -o $@ $^ ++ $(CC_FOR_BUILD) $(LDFLAGS) -o $@ $^ + + strip: + $(STRIP) extlinux + + %.o: %.c +- $(CC) $(UMAKEDEPS) $(CFLAGS) -c -o $@ $< ++ $(CC_FOR_BUILD) $(UMAKEDEPS) $(CFLAGS) -c -o $@ $< + %.i: %.c +- $(CC) $(UMAKEDEPS) $(CFLAGS) -E -o $@ $< ++ $(CC_FOR_BUILD) $(UMAKEDEPS) $(CFLAGS) -E -o $@ $< + %.s: %.c +- $(CC) $(UMAKEDEPS) $(CFLAGS) -S -o $@ $< ++ $(CC_FOR_BUILD) $(UMAKEDEPS) $(CFLAGS) -S -o $@ $< + + -include .*.d +-- +2.13.5 + diff --git a/boot/syslinux/0012-pull-in-sys-sysmacros-h-for-major-minor-makedev.patch b/boot/syslinux/0012-pull-in-sys-sysmacros-h-for-major-minor-makedev.patch new file mode 100644 index 00000000..beba5cc2 --- /dev/null +++ b/boot/syslinux/0012-pull-in-sys-sysmacros-h-for-major-minor-makedev.patch @@ -0,0 +1,34 @@ +From 1a74985b2a404639b08882c57f3147229605dfd5 Mon Sep 17 00:00:00 2001 +From: Mike Frysinger +Date: Tue, 19 Apr 2016 06:50:31 -0400 +Subject: [PATCH] extlinux: pull in sys/sysmacros.h for major/minor/makedev + +These functions are defined in sys/sysmacros.h, so add the include to +main.c. This is already handled correctly in mountinfo.c. Otherwise +we get build failures like: + +main.o: In function 'find_device_sysfs': +extlinux/main.c:1131: undefined reference to 'minor' + +Signed-off-by: Mike Frysinger +Signed-off-by: Gene Cumm +Signed-off-by: Alexander Sverdlin +--- + extlinux/main.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/extlinux/main.c b/extlinux/main.c +index a7ebd49..ebff7ea 100644 +--- a/extlinux/main.c ++++ b/extlinux/main.c +@@ -38,6 +38,7 @@ + #include + #include + #include ++#include + #include + #include + #include +-- +2.10.5.GIT + diff --git a/boot/syslinux/0013-Fix-build-with-gnu-efi-version-3.0.9.patch b/boot/syslinux/0013-Fix-build-with-gnu-efi-version-3.0.9.patch new file mode 100644 index 00000000..17a6d37c --- /dev/null +++ b/boot/syslinux/0013-Fix-build-with-gnu-efi-version-3.0.9.patch @@ -0,0 +1,45 @@ +From 44a1b42e561b9a257209300e2860b901b100cc17 Mon Sep 17 00:00:00 2001 +From: Carlos Santos +Date: Tue, 26 Feb 2019 08:07:22 -0300 +Subject: [PATCH] Fix build with gnu-efi version 3.0.9 + +Adapt a patch already applied upstream to prevent multiple definitions +of 'memset' and 'memcpy'. + +Signed-off-by: Carlos Santos +(adapted from commit 363d61c4f112b972649b19d67e96b9321f738f00) +--- + mk/lib.mk | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/mk/lib.mk b/mk/lib.mk +index ceb95bd0..c9b6eaf3 100644 +--- a/mk/lib.mk ++++ b/mk/lib.mk +@@ -186,9 +186,9 @@ MINLIBOBJS = \ + # $(LIBVESA_OBJS) + + CORELIBOBJS = \ +- memcpy.o memset.o memcmp.o printf.o strncmp.o vfprintf.o \ ++ memcmp.o printf.o strncmp.o vfprintf.o \ + strlen.o vsnprintf.o snprintf.o stpcpy.o strcmp.o strdup.o \ +- strcpy.o strncpy.o setjmp.o fopen.o fread.o fread2.o puts.o \ ++ strcpy.o strncpy.o fopen.o fread.o fread2.o puts.o \ + strtoul.o strntoumax.o strcasecmp.o \ + sprintf.o strlcat.o strchr.o strlcpy.o strncasecmp.o ctypes.o \ + fputs.o fwrite2.o fwrite.o fgetc.o fclose.o lmalloc.o \ +@@ -203,6 +203,11 @@ CORELIBOBJS = \ + $(LIBENTRY_OBJS) \ + $(LIBMODULE_OBJS) + ++ifndef EFI_BUILD ++# For EFI, these are part of gnu-efi ++CORELIBOBJS += setjmp.o memcpy.o memset.o ++endif ++ + LDFLAGS = -m elf_$(ARCH) --hash-style=gnu -T $(com32)/lib/$(ARCH)/elf.ld + + .SUFFIXES: .c .o .a .so .lo .i .S .s .ls .ss .lss +-- +2.14.5 + diff --git a/boot/syslinux/0014-Fix-build-with-binutils-note-gnu-property-section.patch b/boot/syslinux/0014-Fix-build-with-binutils-note-gnu-property-section.patch new file mode 100644 index 00000000..fedd8156 --- /dev/null +++ b/boot/syslinux/0014-Fix-build-with-binutils-note-gnu-property-section.patch @@ -0,0 +1,47 @@ +From beb526ca925983c7da229043790ecd552d910650 Mon Sep 17 00:00:00 2001 +From: Christian Stewart +Date: Thu, 4 Apr 2019 23:24:31 -0700 +Subject: [PATCH] Fix build with binutils note gnu property section + +This fixes the following build error with newer binutils: + + objcopy -O binary mbr.elf mbr.bin + perl /build/syslinux/src/syslinux/mbr/checksize.pl mbr.bin + mbr.bin: too big (452 > 440) + +Corresponding bug reports: + + - https://bugs.archlinux.org/task/60405 + - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=906414 + +Strips the .note.gnu.property in the linker scripts for the MBRs. + +Signed-off-by: Christian Stewart +--- + mbr/i386/mbr.ld | 1 + + mbr/x86_64/mbr.ld | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/mbr/i386/mbr.ld b/mbr/i386/mbr.ld +index d14ba802..53683461 100644 +--- a/mbr/i386/mbr.ld ++++ b/mbr/i386/mbr.ld +@@ -70,4 +70,5 @@ SECTIONS + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + /DISCARD/ : { *(.note.GNU-stack) } ++ /DISCARD/ : { *(.note.gnu.property) } + } +diff --git a/mbr/x86_64/mbr.ld b/mbr/x86_64/mbr.ld +index ae27d49a..b8c0d895 100644 +--- a/mbr/x86_64/mbr.ld ++++ b/mbr/x86_64/mbr.ld +@@ -69,4 +69,5 @@ SECTIONS + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + /DISCARD/ : { *(.note.GNU-stack) } ++ /DISCARD/ : { *(.note.gnu.property) } + } +-- +2.21.0 + diff --git a/boot/syslinux/0015-efi-main.c-include-efisetjmp.h.patch b/boot/syslinux/0015-efi-main.c-include-efisetjmp.h.patch new file mode 100644 index 00000000..15adfc49 --- /dev/null +++ b/boot/syslinux/0015-efi-main.c-include-efisetjmp.h.patch @@ -0,0 +1,62 @@ +From 26979f738518404b1d3dc9ecdcf4fa5811412c49 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 24 Mar 2020 10:21:27 +0100 +Subject: [PATCH] efi/main.c: include +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Building syslinux against gnu-efi 3.0.10 currently fails with: + +syslinux/efi/main.c:33:8: error: unknown type name ‘jmp_buf’ + 33 | static jmp_buf load_error_buf; + | ^~~~~~~ +syslinux/efi/main.c: In function ‘local_boot’: +syslinux/efi/main.c:189:5: warning: implicit declaration of function ‘longjmp’ [-Wimplicit-function-declaration] + 189 | longjmp(&load_error_buf, 1); + | ^~~~~~~ +syslinux/efi/main.c: In function ‘build_gdt’: +syslinux/efi/main.c:907:75: warning: taking address of packed member of ‘struct dt_desc’ may result in an unaligned pointer value [-Waddress-of-packed-member] + 907 | status = emalloc(gdt.limit, __SIZEOF_POINTER__ , (EFI_PHYSICAL_ADDRESS *)&gdt.base); + | ^~~~~~~~~ +syslinux/efi/main.c: In function ‘efi_main’: +syslinux/efi/main.c:1390:7: warning: implicit declaration of function ‘setjmp’ [-Wimplicit-function-declaration] + 1390 | if (!setjmp(&load_error_buf)) + | ^~~~~~ +make[3]: *** [syslinux/mk/efi.mk:63: main.o] Error 1 + +This is due to gnu-efi commit 486ba3c3bdd147b7d98159b9e650be60bce0f027 +("Do not include efisetjmp.h on efi.h"), in which they state: + + Do not include efisetjmp.h on efi.h + + People than really want to use efisetjmp implementation can include + the header on their own. + + Signed-off-by: leo + +So we act as specified, and include from efi/main.c. + +Signed-off-by: Thomas Petazzoni +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +Upstream: https://www.syslinux.org/archives/2020-March/026621.html +--- + efi/main.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/efi/main.c b/efi/main.c +index 71d31a5c1f13..7dc7bca7aeba 100644 +--- a/efi/main.c ++++ b/efi/main.c +@@ -12,6 +12,7 @@ + #include + + #include "efi.h" ++#include + #include "fio.h" + #include "version.h" + +-- +2.43.0 + diff --git a/boot/syslinux/0016-Workaround-multiple-definition-of-symbol-errors.patch b/boot/syslinux/0016-Workaround-multiple-definition-of-symbol-errors.patch new file mode 100644 index 00000000..ea91de5c --- /dev/null +++ b/boot/syslinux/0016-Workaround-multiple-definition-of-symbol-errors.patch @@ -0,0 +1,126 @@ +From 16f293d67eace501c98494976030f4319778ebf5 Mon Sep 17 00:00:00 2001 +From: Merlin Mathesius +Date: Wed, 13 May 2020 08:02:27 -0500 +Subject: [PATCH] Workaround multiple definition of symbol errors + +[From https://src.fedoraproject.org/rpms/syslinux/raw/rawhide/f/0005-Workaround-multiple-definition-of-symbol-errors.patch + plus adding '-z muldefs' for gpxe] +Signed-off-by: Peter Seiderer +--- + com32/cmenu/Makefile | 2 +- + com32/elflink/ldlinux/Makefile | 2 +- + com32/gpllib/Makefile | 2 +- + com32/hdt/Makefile | 2 +- + core/Makefile | 2 +- + dos/Makefile | 2 +- + efi/Makefile | 2 +- + gpxe/src/arch/i386/Makefile | 2 +- + 8 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/com32/cmenu/Makefile b/com32/cmenu/Makefile +index 6bb52316..66cdd649 100644 +--- a/com32/cmenu/Makefile ++++ b/com32/cmenu/Makefile +@@ -49,7 +49,7 @@ makeoutputdirs: + @mkdir -p $(OBJ)/libmenu + + libmenu/libmenu.elf: $(LIBMENU) +- $(LD) -shared $(LDFLAGS) -soname $(patsubst %.elf,%.c32,$(@F)) \ ++ $(LD) -shared $(LDFLAGS) -z muldefs -soname $(patsubst %.elf,%.c32,$(@F)) \ + -o $@ $^ + + tidy dist: +diff --git a/com32/elflink/ldlinux/Makefile b/com32/elflink/ldlinux/Makefile +index d948da43..67434a1f 100644 +--- a/com32/elflink/ldlinux/Makefile ++++ b/com32/elflink/ldlinux/Makefile +@@ -33,7 +33,7 @@ endif + all: $(BTARGET) ldlinux_lnx.a + + ldlinux.elf : $(OBJS) +- $(LD) $(LDFLAGS) -soname $(SONAME) -o $@ $^ $(LIBS) ++ $(LD) $(LDFLAGS) -z muldefs -soname $(SONAME) -o $@ $^ $(LIBS) + + LNXCFLAGS += -D__export='__attribute__((visibility("default")))' + LNXLIBOBJS = get_key.lo +diff --git a/com32/gpllib/Makefile b/com32/gpllib/Makefile +index e3e30d76..17520a1e 100644 +--- a/com32/gpllib/Makefile ++++ b/com32/gpllib/Makefile +@@ -24,7 +24,7 @@ makeoutputdirs: + $(addprefix $(OBJ),$(sort $(dir $(LIBOBJS)))),$(b)) + + libgpl.elf : $(LIBOBJS) +- $(LD) -shared $(LDFLAGS) -soname $(patsubst %.elf,%.c32,$(@F)) -o $@ $^ ++ $(LD) -shared $(LDFLAGS) -z muldefs -soname $(patsubst %.elf,%.c32,$(@F)) -o $@ $^ + + tidy dist clean: + find . \( -name \*.o -o -name .\*.d -o -name \*.tmp \) -print0 | \ +diff --git a/com32/hdt/Makefile b/com32/hdt/Makefile +index 80f2d0a0..8509cd96 100644 +--- a/com32/hdt/Makefile ++++ b/com32/hdt/Makefile +@@ -52,7 +52,7 @@ QEMU ?= qemu-kvm + all: $(MODULES) $(TESTFILES) + + hdt.elf : $(OBJS) $(LIBS) $(C_LIBS) +- $(LD) $(LDFLAGS) -o $@ $^ ++ $(LD) $(LDFLAGS) -z muldefs -o $@ $^ + + memtest: + -[ ! -f $(FLOPPY_DIR)/$(MEMTEST) ] && $(WGET) $(MEMTEST_URL) -O $(FLOPPY_DIR)/$(MEMTEST) +diff --git a/core/Makefile b/core/Makefile +index ad0acb5a..3bee4dc9 100644 +--- a/core/Makefile ++++ b/core/Makefile +@@ -164,7 +164,7 @@ AUXLIBS = libisolinux.a libisolinux-debug.a libldlinux.a \ + LDSCRIPT = $(SRC)/$(ARCH)/syslinux.ld + + %.elf: %.o $(LIBDEP) $(LDSCRIPT) $(AUXLIBS) +- $(LD) $(LDFLAGS) -Bsymbolic $(LD_PIE) -E --hash-style=gnu -T $(LDSCRIPT) -M -o $@ $< \ ++ $(LD) $(LDFLAGS) -z muldefs -Bsymbolic $(LD_PIE) -E --hash-style=gnu -T $(LDSCRIPT) -M -o $@ $< \ + --start-group $(LIBS) $(subst $(*F).elf,lib$(*F).a,$@) --end-group \ + > $(@:.elf=.map) + $(OBJDUMP) -h $@ > $(@:.elf=.sec) +diff --git a/dos/Makefile b/dos/Makefile +index b9c337d5..2af87346 100644 +--- a/dos/Makefile ++++ b/dos/Makefile +@@ -19,7 +19,7 @@ include $(MAKEDIR)/embedded.mk + CFLAGS += -D__MSDOS__ -mregparm=3 -DREGPARM=3 + # CFLAGS += -DDEBUG + +-LDFLAGS = -T $(SRC)/dosexe.ld ++LDFLAGS = -T $(SRC)/dosexe.ld -z muldefs + OPTFLAGS = -g + INCLUDES = -include code16.h -nostdinc -iwithprefix include \ + -I$(SRC) -I$(SRC)/.. -I$(SRC)/../libfat \ +diff --git a/efi/Makefile b/efi/Makefile +index d24d16db..7c714ebf 100644 +--- a/efi/Makefile ++++ b/efi/Makefile +@@ -70,7 +70,7 @@ $(OBJS): subdirs + BTARGET = syslinux.efi + + syslinux.so: $(OBJS) $(CORE_OBJS) $(LIB_OBJS) +- $(LD) $(LDFLAGS) --strip-debug -o $@ $^ -lgnuefi -lefi ++ $(LD) $(LDFLAGS) -z muldefs --strip-debug -o $@ $^ -lgnuefi -lefi + + # We need to rename the .hash section because the EFI firmware + # linker really doesn't like it. +diff --git a/gpxe/src/arch/i386/Makefile b/gpxe/src/arch/i386/Makefile +index dd8da802..be1d00ff 100644 +--- a/gpxe/src/arch/i386/Makefile ++++ b/gpxe/src/arch/i386/Makefile +@@ -55,7 +55,7 @@ ASFLAGS += --32 + ifeq ($(HOST_OS),FreeBSD) + LDFLAGS += -m elf_i386_fbsd + else +-LDFLAGS += -m elf_i386 ++LDFLAGS += -z muldefs -m elf_i386 + endif + + # EFI requires -fshort-wchar, and nothing else currently uses wchar_t +-- +2.30.1 + diff --git a/boot/syslinux/0017-Replace-builtin-strlen-that-appears-to-get-optimized.patch b/boot/syslinux/0017-Replace-builtin-strlen-that-appears-to-get-optimized.patch new file mode 100644 index 00000000..69a7e87d --- /dev/null +++ b/boot/syslinux/0017-Replace-builtin-strlen-that-appears-to-get-optimized.patch @@ -0,0 +1,42 @@ +From 698a6ce88524b727d265b204d648e78d8acb485c Mon Sep 17 00:00:00 2001 +From: Merlin Mathesius +Date: Wed, 13 May 2020 11:58:37 -0500 +Subject: [PATCH] Replace builtin strlen that appears to get optimized away + +[From https://src.fedoraproject.org/rpms/syslinux/raw/rawhide/f/0006-Replace-builtin-strlen-that-appears-to-get-optimized.patch] +Signed-off-by: Peter Seiderer +--- + dos/string.h | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +diff --git a/dos/string.h b/dos/string.h +index f648de2d..407d0233 100644 +--- a/dos/string.h ++++ b/dos/string.h +@@ -5,12 +5,22 @@ + #ifndef _STRING_H + #define _STRING_H + ++#include ++ + /* Standard routines */ + #define memcpy(a,b,c) __builtin_memcpy(a,b,c) + #define memmove(a,b,c) __builtin_memmove(a,b,c) + #define memset(a,b,c) __builtin_memset(a,b,c) + #define strcpy(a,b) __builtin_strcpy(a,b) +-#define strlen(a) __builtin_strlen(a) ++#define strlen(a) inline_strlen(a) ++ ++/* replacement for builtin strlen that appears to get optimized away */ ++static inline size_t inline_strlen(const char *str) ++{ ++ size_t l; ++ for (l = 0; *str++; l++); ++ return l; ++} + + /* This only returns true or false */ + static inline int memcmp(const void *__m1, const void *__m2, unsigned int __n) +-- +2.30.1 + diff --git a/boot/syslinux/0018-single-load-segment.patch b/boot/syslinux/0018-single-load-segment.patch new file mode 100644 index 00000000..11d73c31 --- /dev/null +++ b/boot/syslinux/0018-single-load-segment.patch @@ -0,0 +1,313 @@ +From: Lukas Schwaighofer +Date: Sat, 18 Aug 2018 16:56:35 +0200 +Subject: Force the linker to put all sections into a single PT_LOAD segment + +This is required when using binutils >= 2.31 which writes two PT_LOAD segments +by default. This is not supported by the wrapper.c script used to convert the +shared object into an elf binary. + +Forwarded: https://www.syslinux.org/archives/2018-August/026167.html +[yann.morin.1998@free.fr: + - grab from the Debian package + - https://salsa.debian.org/images-team/syslinux/-/blob/fa1349f1f8e5f5d6307e589f02c0a679031d1c7f/debian/patches/0017-single-load-segment.patch +] +Signed-off-by: Yann E. MORIN +Upstream: reported https://www.syslinux.org/archives/2018-August/026167.html +Upstream: acknowledged https://wiki.syslinux.org/wiki/index.php?title=Building +--- + efi/i386/syslinux.ld | 37 +++++++++++++++++++++---------------- + efi/x86_64/syslinux.ld | 37 +++++++++++++++++++++---------------- + 2 files changed, 42 insertions(+), 32 deletions(-) + +diff --git a/efi/i386/syslinux.ld b/efi/i386/syslinux.ld +index bab3fc7..19c1647 100644 +--- a/efi/i386/syslinux.ld ++++ b/efi/i386/syslinux.ld +@@ -19,6 +19,11 @@ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") + OUTPUT_ARCH(i386) + ENTRY(_start) + ++PHDRS ++{ ++ all PT_LOAD ; ++} ++ + SECTIONS + { + . = 0; +@@ -31,7 +36,7 @@ SECTIONS + *(.text) + *(.text.*) + __text_end = .; +- } ++ } :all + + . = ALIGN(16); + +@@ -40,7 +45,7 @@ SECTIONS + *(.rodata) + *(.rodata.*) + __rodata_end = .; +- } ++ } :all + + . = ALIGN(4); + +@@ -49,14 +54,14 @@ SECTIONS + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + __ctors_end = .; +- } ++ } :all + + .dtors : { + __dtors_start = .; + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + __dtors_end = .; +- } ++ } :all + + . = ALIGN(4096); + .rel : { +@@ -64,7 +69,7 @@ SECTIONS + *(.rel.data) + *(.rel.data.*) + *(.rel.ctors) +- } ++ } :all + + . = ALIGN(4); + +@@ -72,14 +77,14 @@ SECTIONS + __gnu_hash_start = .; + *(.gnu.hash) + __gnu_hash_end = .; +- } ++ } :all + + + .dynsym : { + __dynsym_start = .; + *(.dynsym) + __dynsym_end = .; +- } ++ } :all + + . = ALIGN(4); + +@@ -87,7 +92,7 @@ SECTIONS + __dynstr_start = .; + *(.dynstr) + __dynstr_end = .; +- } ++ } :all + + . = ALIGN(4); + +@@ -104,7 +109,7 @@ SECTIONS + KEEP (*(.got.plt)) + KEEP (*(.got)) + __got_end = .; +- } ++ } :all + + . = ALIGN(4); + +@@ -112,7 +117,7 @@ SECTIONS + __dynamic_start = .; + *(.dynamic) + __dynamic_end = .; +- } ++ } :all + + . = ALIGN(16); + +@@ -122,19 +127,19 @@ SECTIONS + *(.data.*) + *(.lowmem) + __data_end = .; +- } ++ } :all + + .reloc : { + *(.reloc) +- } ++ } :all + + .symtab : { + *(.symtab) +- } ++ } :all + + .strtab : { + *(.strtab) +- } ++ } :all + + .bss (NOLOAD) : { + /* the EFI loader doesn't seem to like a .bss section, +@@ -148,7 +153,7 @@ SECTIONS + __bss_end = .; + *(.sbss) + *(.scommon) +- } ++ } :all + __bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start); + __bss_dwords = (__bss_len + 3) >> 2; + +@@ -161,7 +166,7 @@ SECTIONS + *(.hugebss) + *(.hugebss.*) + __hugebss_end = .; +- } ++ } :all + + _end = .; + +diff --git a/efi/x86_64/syslinux.ld b/efi/x86_64/syslinux.ld +index 450641c..a2c124f 100644 +--- a/efi/x86_64/syslinux.ld ++++ b/efi/x86_64/syslinux.ld +@@ -19,6 +19,11 @@ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") + OUTPUT_ARCH(i386:x86-64) + ENTRY(_start) + ++PHDRS ++{ ++ all PT_LOAD ; ++} ++ + SECTIONS + { + . = 0; +@@ -31,7 +36,7 @@ SECTIONS + *(.text) + *(.text.*) + __text_end = .; +- } ++ } :all + + . = ALIGN(16); + +@@ -40,7 +45,7 @@ SECTIONS + *(.rodata) + *(.rodata.*) + __rodata_end = .; +- } ++ } :all + + . = ALIGN(4); + +@@ -49,14 +54,14 @@ SECTIONS + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + __ctors_end = .; +- } ++ } :all + + .dtors : { + __dtors_start = .; + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + __dtors_end = .; +- } ++ } :all + + . = ALIGN(4096); + .rel : { +@@ -64,7 +69,7 @@ SECTIONS + *(.rel.data) + *(.rel.data.*) + *(.rel.ctors) +- } ++ } :all + + . = ALIGN(4); + +@@ -72,14 +77,14 @@ SECTIONS + __gnu_hash_start = .; + *(.gnu.hash) + __gnu_hash_end = .; +- } ++ } :all + + + .dynsym : { + __dynsym_start = .; + *(.dynsym) + __dynsym_end = .; +- } ++ } :all + + . = ALIGN(4); + +@@ -87,7 +92,7 @@ SECTIONS + __dynstr_start = .; + *(.dynstr) + __dynstr_end = .; +- } ++ } :all + + . = ALIGN(4); + +@@ -104,7 +109,7 @@ SECTIONS + KEEP (*(.got.plt)) + KEEP (*(.got)) + __got_end = .; +- } ++ } :all + + . = ALIGN(4); + +@@ -112,7 +117,7 @@ SECTIONS + __dynamic_start = .; + *(.dynamic) + __dynamic_end = .; +- } ++ } :all + + . = ALIGN(16); + +@@ -122,19 +127,19 @@ SECTIONS + *(.data.*) + *(.lowmem) + __data_end = .; +- } ++ } :all + + .reloc : { + *(.reloc) +- } ++ } :all + + .symtab : { + *(.symtab) +- } ++ } :all + + .strtab : { + *(.strtab) +- } ++ } :all + + .bss (NOLOAD) : { + /* the EFI loader doesn't seem to like a .bss section, +@@ -148,7 +153,7 @@ SECTIONS + __bss_end = .; + *(.sbss) + *(.scommon) +- } ++ } :all + __bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start); + __bss_dwords = (__bss_len + 3) >> 2; + +@@ -161,7 +166,7 @@ SECTIONS + *(.hugebss) + *(.hugebss.*) + __hugebss_end = .; +- } ++ } :all + + _end = .; + diff --git a/boot/syslinux/0019-stddef.h-add-wchar_t-type-definition.patch b/boot/syslinux/0019-stddef.h-add-wchar_t-type-definition.patch new file mode 100644 index 00000000..65d9463a --- /dev/null +++ b/boot/syslinux/0019-stddef.h-add-wchar_t-type-definition.patch @@ -0,0 +1,59 @@ +From 063dac55c45d0264671c3463e824ab659e5cbb87 Mon Sep 17 00:00:00 2001 +From: Julien Olivain +Date: Tue, 27 Feb 2024 21:09:15 +0100 +Subject: [PATCH] stddef.h: add wchar_t type definition + +Syslinux fail to build with gnu-efi >= 3.0.16 with error: + + In file included from /host/i686-buildroot-linux-gnu/sysroot/usr/include/efi/efi.h:44, + from /build/syslinux-6.03/efi/efi.h:23, + from /build/syslinux-6.03/efi/adv.h:4, + from /build/syslinux-6.03/efi/adv.c:29: + /host/i686-buildroot-linux-gnu/sysroot/usr/include/efi/ia32/efibind.h:90:9: error: unknown type name 'wchar_t' + typedef wchar_t CHAR16; + ^~~~~~~ + +This is because gnu-efi started to use the "wchar_t" type from the +toolchain's header, in commit [1]. Before this commit, +gnu-efi was defining the type as "short". + +Syslinux is including its own minimal stddef.h file, which masks the +one provided by the toolchain. See [2]. This file does not have a type +definition for "wchar_t". + +Finally, the POSIX header is supposed to provide this +"wchar_t" type definition. See [3]. + +This commit fixes the issue by adding the "wchar_t" type definition in +the com32/include/stddef.h header. Since Syslinux has "-fshort-wchar" +in its CFLAGS (see [4]), "wchar_t" is simply defined as "short". This +also follow the previous gnu-efi < 3.0.16 behavior. + +This issue was seen in Buildroot Linux, in [5]. + +[1] https://sourceforge.net/p/gnu-efi/code/ci/189200d0b0f6fff473d302880d9569f45d4d8c4d +[2] https://repo.or.cz/syslinux.git/blob/refs/tags/syslinux-6.03:/com32/include/stddef.h +[3] https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stddef.h.html +[4] https://repo.or.cz/syslinux.git/blob/refs/tags/syslinux-6.03:/mk/efi.mk#l27 +[5] https://lists.buildroot.org/pipermail/buildroot/2024-February/685971.html + +Upstream: Proposed: https://www.syslinux.org/archives/2024-February/026903.html +Signed-off-by: Julien Olivain +--- + com32/include/stddef.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/com32/include/stddef.h b/com32/include/stddef.h +index f52d62f3..437b11f2 100644 +--- a/com32/include/stddef.h ++++ b/com32/include/stddef.h +@@ -29,4 +29,6 @@ + */ + #define container_of(p, c, m) ((c *)((char *)(p) - offsetof(c,m))) + ++typedef short wchar_t; ++ + #endif /* _STDDEF_H */ +-- +2.44.0 + diff --git a/boot/syslinux/0020-pull-in-stdio-h-for-gcc14.patch b/boot/syslinux/0020-pull-in-stdio-h-for-gcc14.patch new file mode 100644 index 00000000..09a0074b --- /dev/null +++ b/boot/syslinux/0020-pull-in-stdio-h-for-gcc14.patch @@ -0,0 +1,34 @@ +From dfa2705100a893bc017d23406daa9a383fbc3c95 Mon Sep 17 00:00:00 2001 +From: Lance Fredrickson +Date: Wed, 5 Jun 2024 14:31:38 -0600 +Subject: [PATCH] com32/lib/syslinux/debug.c: add missing stdio.h include. + +Fix building syslinux with GCC 14.x + +Add missing stdio.h include. Without it results in the following error under GCC 14.x + +../../../com32/lib/syslinux/debug.c: In function ‘syslinux_debug’: +../../../com32/lib/syslinux/debug.c:91:5: error: implicit declaration of function ‘printf’ [-Wimplicit-function-declaration] + 91 | printf("Dynamic debug unavailable\n"); + +Upstream: dead (last release in 2014) +Signed-off-by: Lance Fredrickson +--- + com32/lib/syslinux/debug.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/com32/lib/syslinux/debug.c b/com32/lib/syslinux/debug.c +index d9ab863f..e8f53d57 100644 +--- a/com32/lib/syslinux/debug.c ++++ b/com32/lib/syslinux/debug.c +@@ -1,6 +1,7 @@ + #include + #include + #include ++#include + + #ifdef DYNAMIC_DEBUG + +-- +2.39.2 + diff --git a/boot/syslinux/Config.in b/boot/syslinux/Config.in new file mode 100644 index 00000000..c95dac18 --- /dev/null +++ b/boot/syslinux/Config.in @@ -0,0 +1,61 @@ +config BR2_TARGET_SYSLINUX + bool "syslinux" + depends on BR2_i386 || BR2_x86_64 + # Make sure at least one of the flavors is installed + select BR2_TARGET_SYSLINUX_ISOLINUX \ + if !BR2_TARGET_SYSLINUX_PXELINUX && \ + !BR2_TARGET_SYSLINUX_MBR && \ + !BR2_TARGET_SYSLINUX_EFI + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + The syslinux bootloader for x86 systems. + This includes: syslinux, pxelinux, extlinux. + + http://syslinux.org + +if BR2_TARGET_SYSLINUX + +config BR2_TARGET_SYSLINUX_LEGACY_BIOS + bool + +config BR2_TARGET_SYSLINUX_ISOLINUX + bool "install isolinux" + select BR2_TARGET_SYSLINUX_LEGACY_BIOS + help + Install the legacy-BIOS 'isolinux' image, to boot off + optical media (CDROM, DVD.) + +config BR2_TARGET_SYSLINUX_PXELINUX + bool "install pxelinux" + select BR2_TARGET_SYSLINUX_LEGACY_BIOS + help + Install the legacy-BIOS 'pxelinux' image, to boot off + the network using PXE. + +config BR2_TARGET_SYSLINUX_MBR + bool "install mbr" + select BR2_TARGET_SYSLINUX_LEGACY_BIOS + help + Install the legacy-BIOS 'mbr' image, to boot off a + local MBR-partition (e.g. prepared with 'extlinux' + or 'syslinux'). + +config BR2_TARGET_SYSLINUX_EFI + bool "install efi" + depends on BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS + select BR2_PACKAGE_GNU_EFI + help + Install the 'efi' image, to boot from an EFI environment. + +if BR2_TARGET_SYSLINUX_LEGACY_BIOS + +config BR2_TARGET_SYSLINUX_C32 + string "modules to install" + help + Enter a space-separated list of .c32 modules to install. + Leave empty to install no module. + +endif # BR2_TARGET_SYSLINUX_LEGACY_BIOS + +endif # BR2_TARGET_SYSLINUX diff --git a/boot/syslinux/syslinux.hash b/boot/syslinux/syslinux.hash new file mode 100644 index 00000000..9bec3a20 --- /dev/null +++ b/boot/syslinux/syslinux.hash @@ -0,0 +1,4 @@ +# From https://www.kernel.org/pub/linux/utils/boot/syslinux/sha256sums.asc +sha256 26d3986d2bea109d5dc0e4f8c4822a459276cf021125e8c9f23c3cca5d8c850e syslinux-6.03.tar.xz +# Locally computed +sha256 dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa COPYING diff --git a/boot/syslinux/syslinux.mk b/boot/syslinux/syslinux.mk new file mode 100644 index 00000000..cc52c49a --- /dev/null +++ b/boot/syslinux/syslinux.mk @@ -0,0 +1,115 @@ +################################################################################ +# +# syslinux to make target msdos/iso9660 filesystems bootable +# +################################################################################ + +SYSLINUX_VERSION = 6.03 +SYSLINUX_SOURCE = syslinux-$(SYSLINUX_VERSION).tar.xz +SYSLINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/boot/syslinux + +SYSLINUX_LICENSE = GPL-2.0+ +SYSLINUX_LICENSE_FILES = COPYING + +SYSLINUX_INSTALL_IMAGES = YES + +# host-util-linux needed to provide libuuid when building host tools +SYSLINUX_DEPENDENCIES = \ + host-nasm \ + host-python3 \ + host-upx \ + host-util-linux \ + util-linux + +ifeq ($(BR2_TARGET_SYSLINUX_LEGACY_BIOS),y) +SYSLINUX_TARGET += bios +endif + +# The syslinux build system must be forced to use Buildroot's gnu-efi +# package by setting EFIINC, LIBDIR and LIBEFI. Otherwise, it uses its +# own copy of gnu-efi included in syslinux's sources since 6.03 +# release. +ifeq ($(BR2_TARGET_SYSLINUX_EFI),y) +ifeq ($(BR2_ARCH_IS_64),y) +SYSLINUX_EFI_BITS = efi64 +else +SYSLINUX_EFI_BITS = efi32 +endif # 64-bit +SYSLINUX_DEPENDENCIES += gnu-efi +SYSLINUX_TARGET += $(SYSLINUX_EFI_BITS) +SYSLINUX_EFI_ARGS = \ + EFIINC=$(STAGING_DIR)/usr/include/efi \ + LIBDIR=$(STAGING_DIR)/usr/lib \ + LIBEFI=$(STAGING_DIR)/usr/lib/libefi.a +endif # EFI + +# The syslinux tarball comes with pre-compiled binaries. +# Since timestamps might not be in the correct order, a rebuild is +# not always triggered for all the different images. +# Cleanup the mess even before we attempt a build, so we indeed +# build everything from source. +define SYSLINUX_CLEANUP + rm -rf $(@D)/bios $(@D)/efi32 $(@D)/efi64 +endef +SYSLINUX_POST_PATCH_HOOKS += SYSLINUX_CLEANUP + +# syslinux build system has no convenient way to pass CFLAGS, +# and the internal zlib should take precedence so -I shouldn't +# be used. +define SYSLINUX_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) \ + ASCIIDOC_OK=-1 \ + A2X_XML_OK=-1 \ + CC="$(TARGET_CC)" \ + LD="$(TARGET_LD)" \ + OBJCOPY="$(TARGET_OBJCOPY)" \ + AS="$(TARGET_AS)" \ + NASM="$(HOST_DIR)/bin/nasm" \ + CC_FOR_BUILD="$(HOSTCC)" \ + CFLAGS_FOR_BUILD="$(HOST_CFLAGS)" \ + LDFLAGS_FOR_BUILD="$(HOST_LDFLAGS)" \ + PYTHON=$(HOST_DIR)/bin/python3 \ + $(SYSLINUX_EFI_ARGS) -C $(@D) $(SYSLINUX_TARGET) +endef + +# While the actual bootloader is compiled for the target, several +# utilities for installing the bootloader are meant for the host. +# Repeat the target, otherwise syslinux will try to build everything +# Repeat LD (and CC) as it happens that some binaries are linked at +# install-time. +define SYSLINUX_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) $(SYSLINUX_EFI_ARGS) INSTALLROOT=$(HOST_DIR) \ + CC="$(TARGET_CC)" \ + LD="$(TARGET_LD)" \ + -C $(@D) $(SYSLINUX_TARGET) install +endef + +# That 'syslinux' binary is an installer actually built for the target. +# However, buildroot makes no usage of it, so better delete it than have it +# installed at the wrong place +define SYSLINUX_POST_INSTALL_CLEANUP + rm -rf $(HOST_DIR)/bin/syslinux +endef +SYSLINUX_POST_INSTALL_TARGET_HOOKS += SYSLINUX_POST_INSTALL_CLEANUP + +SYSLINUX_IMAGES-$(BR2_TARGET_SYSLINUX_ISOLINUX) += bios/core/isolinux.bin +SYSLINUX_IMAGES-$(BR2_TARGET_SYSLINUX_PXELINUX) += bios/core/pxelinux.bin +SYSLINUX_IMAGES-$(BR2_TARGET_SYSLINUX_MBR) += bios/mbr/mbr.bin +SYSLINUX_IMAGES-$(BR2_TARGET_SYSLINUX_EFI) += $(SYSLINUX_EFI_BITS)/efi/syslinux.efi + +SYSLINUX_C32 = $(call qstrip,$(BR2_TARGET_SYSLINUX_C32)) + +# We install the c32 modules from the host-installed tree, where they +# are all neatly installed in a single location, while they are +# scattered around everywhere in the build tree. +define SYSLINUX_INSTALL_IMAGES_CMDS + for i in $(SYSLINUX_IMAGES-y); do \ + $(INSTALL) -D -m 0755 $(@D)/$$i $(BINARIES_DIR)/syslinux/$${i##*/}; \ + done + for i in $(SYSLINUX_C32); do \ + $(INSTALL) -D -m 0755 $(HOST_DIR)/share/syslinux/$${i} \ + $(BINARIES_DIR)/syslinux/$${i}; \ + done +endef + +$(eval $(generic-package)) diff --git a/boot/ti-k3-boot-firmware/Config.in b/boot/ti-k3-boot-firmware/Config.in new file mode 100644 index 00000000..d80bb4bd --- /dev/null +++ b/boot/ti-k3-boot-firmware/Config.in @@ -0,0 +1,7 @@ +config BR2_TARGET_TI_K3_BOOT_FIRMWARE + bool "ti-k3-boot-firmware" + depends on BR2_aarch64 + help + This package downloads and installs the TI-specific ti-sysfw + and ti-dm firmware needed to boot TI K3 platforms (which + include AM62x, AM64x, AM65x and more). diff --git a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash new file mode 100644 index 00000000..2398d02d --- /dev/null +++ b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 ab20ffbe7bba7e94be246b3417d33a914b3f07c16c47ef5a7f7602349a666a61 LICENSE.ti +sha256 ae888a0a22f8c5b8fe841236d6e40bb2f821d9a4161dab6924fd989e1467ef0e ti-linux-firmware-09.02.00.009.tar.xz diff --git a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk new file mode 100644 index 00000000..9332732a --- /dev/null +++ b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# ti-k3-boot-firmware +# +################################################################################ + +TI_K3_BOOT_FIRMWARE_VERSION = 09.02.00.009 +TI_K3_BOOT_FIRMWARE_SITE = https://git.ti.com/cgit/processor-firmware/ti-linux-firmware/snapshot +TI_K3_BOOT_FIRMWARE_SOURCE = ti-linux-firmware-$(TI_K3_BOOT_FIRMWARE_VERSION).tar.xz +TI_K3_BOOT_FIRMWARE_INSTALL_IMAGES = YES +TI_K3_BOOT_FIRMWARE_LICENSE = TI Proprietary +TI_K3_BOOT_FIRMWARE_LICENSE_FILES = LICENSE.ti + +define TI_K3_BOOT_FIRMWARE_INSTALL_IMAGES_CMDS + cp -dpfr $(@D)/ti-sysfw $(BINARIES_DIR)/ + cp -dpfr $(@D)/ti-dm $(BINARIES_DIR)/ +endef + +$(eval $(generic-package)) diff --git a/boot/ti-k3-r5-loader/Config.in b/boot/ti-k3-r5-loader/Config.in new file mode 100644 index 00000000..c276528f --- /dev/null +++ b/boot/ti-k3-r5-loader/Config.in @@ -0,0 +1,147 @@ +config BR2_TARGET_TI_K3_R5_LOADER + bool "ti-k3-r5-loader" + depends on BR2_aarch64 + select BR2_TARGET_TI_K3_BOOT_FIRMWARE # binman + help + Separate U-Boot SPL build for R5 core on TI's K3 processors. + Usually used to build tiboot3.bin with k3-image-gen. + +if BR2_TARGET_TI_K3_R5_LOADER + +choice + prompt "U-Boot Version" + help + Select the specific U-Boot version you want to use to build + the initial SPL running on the R5 core. Note that for most + use cases you will want to use the exact same version/source + here as it is used to build the main U-Boot package. + +config BR2_TARGET_TI_K3_R5_LOADER_LATEST_VERSION + bool "2024.04" + +config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION + bool "Custom version" + help + This option allows to use a specific official versions + +config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_TARBALL + bool "Custom tarball" + +config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_GIT + bool "Custom Git repository" + +config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_HG + bool "Custom Mercurial repository" + +config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_SVN + bool "Custom Subversion repository" + +endchoice + +config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE + string "U-Boot version" + depends on BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION + +config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_TARBALL_LOCATION + string "URL of custom U-Boot tarball" + depends on BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_TARBALL + +if BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_GIT || BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_HG || BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_SVN + +config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_REPO_URL + string "URL of custom repository" + +config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_REPO_VERSION + string "Custom repository version" + help + Revision to use in the typical format used by + Git/Mercurial/Subversion E.G. a sha id, a tag, branch, .. + +endif + +config BR2_TARGET_TI_K3_R5_LOADER_VERSION + string + default "2024.04" if BR2_TARGET_TI_K3_R5_LOADER_LATEST_VERSION + default BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE \ + if BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION + default "custom" if BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_TARBALL + default BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_REPO_VERSION \ + if BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_GIT || \ + BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_HG || \ + BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_SVN +choice + prompt "U-Boot Configuration" + default BR2_TARGET_TI_K3_R5_LOADER_USE_DEFCONFIG + +config BR2_TARGET_TI_K3_R5_LOADER_USE_DEFCONFIG + bool "Using an in-tree board defconfig file" + +config BR2_TARGET_TI_K3_R5_LOADER_USE_CUSTOM_CONFIG + bool "Using a custom board (def)config file" + +endchoice + +config BR2_TARGET_TI_K3_R5_LOADER_BOARD_DEFCONFIG + string "Board defconfig" + depends on BR2_TARGET_TI_K3_R5_LOADER_USE_DEFCONFIG + help + Name of the board for which TI K3 R5 Loader should be + built, without the _defconfig suffix. + +config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_TARGET_TI_K3_R5_LOADER_USE_CUSTOM_CONFIG + help + Path to the TI K3 R5 Loader configuration file. + +config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_DTS_PATH + string "Device Tree Source file paths" + help + Space-separated list of paths to device tree source files + that will be copied to arch/arm/dts/ before starting the + build. + + To use this device tree source file, the U-Boot configuration + file must refer to it. + +config BR2_TARGET_TI_K3_R5_LOADER_TIBOOT3_BIN + string "tiboot3.bin binary name" + default "tiboot3.bin" + help + Name of the TI K3 tiboot3.bin binary to use. + + The tiboot3 binary name must match with the TI K3 SoC boot + ROM: + + - General Purpose devices (gp) + - High Security - Field Securable devices (hs-fs) + - High Security - Security Enforcing devices (hs) + + Or if the tiboot3 binary generated use a custom name. + + If unsure, use the default tiboot3.bin (symlink) generated by + binman. + +config BR2_TARGET_TI_K3_R5_LOADER_SYSFW_ITB + string "sysfw.itb binary name" + default "sysfw.itb" + help + Name of the TI K3 sysfw.itb binary to use (if any required). + + sysfw*.itb are only generated for Split binary based Boot + Flow (eg: am65, j721e). This option is not used on other + TI K3 devices. + + The sysfw binary name must match with the TI K3 SoC boot + ROM: + + - General Purpose devices (gp) + - High Security - Field Securable devices (hs-fs) + - High Security - Security Enforcing devices (hs) + + Or if the sysfw binary generated use a custom name. + + If unsure, use the default sysfw.itb (symlink) generated by + binman. + +endif diff --git a/boot/ti-k3-r5-loader/ti-k3-r5-loader.hash b/boot/ti-k3-r5-loader/ti-k3-r5-loader.hash new file mode 100644 index 00000000..a8021fb6 --- /dev/null +++ b/boot/ti-k3-r5-loader/ti-k3-r5-loader.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 Licenses/gpl-2.0.txt diff --git a/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk b/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk new file mode 100644 index 00000000..e426f039 --- /dev/null +++ b/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk @@ -0,0 +1,124 @@ +################################################################################ +# +# ti-k3-r5-loader +# +################################################################################ + +TI_K3_R5_LOADER_VERSION = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_VERSION)) +TI_K3_R5_LOADER_DL_SUBDIR = uboot + +ifeq ($(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_TARBALL),y) +# Handle custom U-Boot tarballs as specified by the configuration +TI_K3_R5_LOADER_TARBALL = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_TARBALL_LOCATION)) +TI_K3_R5_LOADER_SITE = $(patsubst %/,%,$(dir $(TI_K3_R5_LOADER_TARBALL))) +TI_K3_R5_LOADER_SOURCE = $(notdir $(TI_K3_R5_LOADER_TARBALL)) +else ifeq ($(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_GIT),y) +TI_K3_R5_LOADER_SITE = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_REPO_URL)) +TI_K3_R5_LOADER_SITE_METHOD = git +TI_K3_R5_LOADER_SOURCE = u-boot-$(TI_K3_R5_LOADER_VERSION).tar.gz +else ifeq ($(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_HG),y) +TI_K3_R5_LOADER_SITE = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_REPO_URL)) +TI_K3_R5_LOADER_SITE_METHOD = hg +TI_K3_R5_LOADER_SOURCE = u-boot-$(TI_K3_R5_LOADER_VERSION).tar.gz +else ifeq ($(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_SVN),y) +TI_K3_R5_LOADER_SITE = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_REPO_URL)) +TI_K3_R5_LOADER_SITE_METHOD = svn +TI_K3_R5_LOADER_SOURCE = u-boot-$(TI_K3_R5_LOADER_VERSION).tar.gz +else +# Handle stable official U-Boot versions +TI_K3_R5_LOADER_SITE = https://ftp.denx.de/pub/u-boot +TI_K3_R5_LOADER_SOURCE = u-boot-$(TI_K3_R5_LOADER_VERSION).tar.bz2 +endif + +ifeq ($(BR2_TARGET_TI_K3_R5_LOADER)$(BR2_TARGET_TI_K3_R5_LOADER_LATEST_VERSION),y) +BR_NO_CHECK_HASH_FOR += $(TI_K3_R5_LOADER_SOURCE) +endif + +TI_K3_R5_LOADER_LICENSE = GPL-2.0+ +TI_K3_R5_LOADER_LICENSE_FILES = Licenses/gpl-2.0.txt +TI_K3_R5_LOADER_CPE_ID_VENDOR = denx +TI_K3_R5_LOADER_CPE_ID_PRODUCT = u-boot +TI_K3_R5_LOADER_INSTALL_IMAGES = YES +# https://source.denx.de/u-boot/u-boot/-/blob/v2024.04/tools/binman/binman.rst?plain=1#L377 +# https://source.denx.de/u-boot/u-boot/-/blob/v2024.04/tools/buildman/requirements.txt +# Make sure that all binman requirements are built before ti-k3-r5-loader. +TI_K3_R5_LOADER_DEPENDENCIES = \ + host-pkgconf \ + $(BR2_MAKE_HOST_DEPENDENCY) \ + host-arm-gnu-toolchain \ + host-openssl \ + host-python3 \ + host-python-jsonschema \ + host-python-pyelftools \ + host-python-pylibfdt \ + host-python-pyyaml \ + host-python-setuptools \ + host-python-yamllint \ + ti-k3-boot-firmware + +TI_K3_R5_LOADER_MAKE = $(BR2_MAKE) +TI_K3_R5_LOADER_MAKE_ENV = $(TARGET_MAKE_ENV) +TI_K3_R5_LOADER_KCONFIG_DEPENDENCIES = \ + host-arm-gnu-toolchain \ + $(BR2_MAKE_HOST_DEPENDENCY) \ + $(BR2_BISON_HOST_DEPENDENCY) \ + $(BR2_FLEX_HOST_DEPENDENCY) + +ifeq ($(BR2_TARGET_TI_K3_R5_LOADER_USE_DEFCONFIG),y) +TI_K3_R5_LOADER_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_BOARD_DEFCONFIG))_defconfig +else ifeq ($(BR2_TARGET_TI_K3_R5_LOADER_USE_CUSTOM_CONFIG),y) +TI_K3_R5_LOADER_KCONFIG_FILE = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_CONFIG_FILE)) +endif # BR2_TARGET_TI_K3_R5_LOADER_USE_DEFCONFIG +TI_K3_R5_LOADER_MAKE_OPTS = \ + CROSS_COMPILE=$(HOST_DIR)/bin/arm-none-eabi- \ + ARCH=arm \ + HOSTCC="$(HOSTCC) $(subst -I/,-isystem /,$(subst -I /,-isystem /,$(HOST_CFLAGS)))" \ + HOSTLDFLAGS="$(HOST_LDFLAGS)" \ + BINMAN_INDIRS=$(BINARIES_DIR) + +TI_K3_R5_LOADER_TIBOOT3_BIN = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_TIBOOT3_BIN)) + +define TI_K3_R5_LOADER_INSTALL_TIBOOT3_BIN + cp $(@D)/$(TI_K3_R5_LOADER_TIBOOT3_BIN) $(BINARIES_DIR)/tiboot3.bin +endef + +TI_K3_R5_LOADER_SYSFW_ITB = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_SYSFW_ITB)) + +# sysfw*.itb are only generated for Split binary based Boot Flow (eg: am65, j721e). +# So, if sysfw.itb symlink exist we must copy it or the custom sysfw.itb. +define TI_K3_R5_LOADER_INSTALL_SWSFW_ITB + if test -e $(@D)/sysfw.itb ; then \ + cp $(@D)/$(TI_K3_R5_LOADER_SYSFW_ITB) $(BINARIES_DIR)/sysfw.itb ; \ + fi +endef + +TI_K3_R5_LOADER_CUSTOM_DTS_PATH = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_DTS_PATH)) + +define TI_K3_R5_LOADER_BUILD_CMDS + $(if $(TI_K3_R5_LOADER_CUSTOM_DTS_PATH), + cp -f $(TI_K3_R5_LOADER_CUSTOM_DTS_PATH) $(@D)/arch/arm/dts/ + ) + $(TARGET_CONFIGURE_OPTS) $(TI_K3_R5_LOADER_MAKE) -C $(@D) $(TI_K3_R5_LOADER_MAKE_OPTS) +endef + +define TI_K3_R5_LOADER_INSTALL_IMAGES_CMDS + cp $(@D)/spl/u-boot-spl.bin $(BINARIES_DIR)/r5-u-boot-spl.bin + $(TI_K3_R5_LOADER_INSTALL_TIBOOT3_BIN) + $(TI_K3_R5_LOADER_INSTALL_SWSFW_ITB) +endef + +# Checks to give errors that the user can understand +# Must be before we call to kconfig-package +ifeq ($(BR2_TARGET_TI_K3_R5_LOADER)$(BR_BUILDING),yy) + +ifeq ($(TI_K3_R5_LOADER_TIBOOT3_BIN),) +$(error No custom tiboot3 name specified, check your BR2_TARGET_TI_K3_R5_LOADER_TIBOOT3_BIN setting) +endif + +ifeq ($(TI_K3_R5_LOADER_SYSFW_ITB),) +$(error No custom sysfw name specified, check your BR2_TARGET_TI_K3_R5_LOADER_SYSFW_ITB setting) +endif + +endif # BR_BUILDING + +$(eval $(kconfig-package)) diff --git a/boot/uboot/Config.in b/boot/uboot/Config.in new file mode 100644 index 00000000..c4d05259 --- /dev/null +++ b/boot/uboot/Config.in @@ -0,0 +1,683 @@ +config BR2_TARGET_UBOOT + bool "U-Boot" + help + Build "Das U-Boot" Boot Monitor + + https://www.denx.de/wiki/U-Boot + +if BR2_TARGET_UBOOT +choice + prompt "Build system" + default BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG if BR2_TARGET_UBOOT_LATEST_VERSION + default BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY + +config BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG + bool "Kconfig" + help + Select this option if you use a recent U-Boot version (2015.04 + or newer), so that we use the Kconfig build system. + +config BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY + bool "Legacy" + help + Select this option if you use an old U-Boot (older than + 2015.04), so that we use the old build system. + +endchoice + +if BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY +config BR2_TARGET_UBOOT_BOARDNAME + string "U-Boot board name" + help + One of U-Boot supported boards to be built. + This will be suffixed with _config to meet U-Boot standard + naming. See boards.cfg in U-Boot source code for the list of + available configurations. +endif + +choice + prompt "U-Boot Version" + help + Select the specific U-Boot version you want to use + +config BR2_TARGET_UBOOT_LATEST_VERSION + bool "2024.07" + +config BR2_TARGET_UBOOT_CUSTOM_VERSION + bool "Custom version" + help + This option allows to use a specific official versions + +config BR2_TARGET_UBOOT_CUSTOM_TARBALL + bool "Custom tarball" + +config BR2_TARGET_UBOOT_CUSTOM_GIT + bool "Custom Git repository" + +config BR2_TARGET_UBOOT_CUSTOM_HG + bool "Custom Mercurial repository" + +config BR2_TARGET_UBOOT_CUSTOM_SVN + bool "Custom Subversion repository" + +endchoice + +config BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE + string "U-Boot version" + depends on BR2_TARGET_UBOOT_CUSTOM_VERSION + +config BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION + string "URL of custom U-Boot tarball" + depends on BR2_TARGET_UBOOT_CUSTOM_TARBALL + +if BR2_TARGET_UBOOT_CUSTOM_GIT || BR2_TARGET_UBOOT_CUSTOM_HG || BR2_TARGET_UBOOT_CUSTOM_SVN + +config BR2_TARGET_UBOOT_CUSTOM_REPO_URL + string "URL of custom repository" + +config BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION + string "Custom repository version" + help + Revision to use in the typical format used by + Git/Mercurial/Subversion E.G. a sha id, a tag, branch, .. + +endif + +config BR2_TARGET_UBOOT_VERSION + string + default "2024.07" if BR2_TARGET_UBOOT_LATEST_VERSION + default BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE \ + if BR2_TARGET_UBOOT_CUSTOM_VERSION + default "custom" if BR2_TARGET_UBOOT_CUSTOM_TARBALL + default BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION \ + if BR2_TARGET_UBOOT_CUSTOM_GIT || BR2_TARGET_UBOOT_CUSTOM_HG || BR2_TARGET_UBOOT_CUSTOM_SVN + +config BR2_TARGET_UBOOT_PATCH + string "Custom U-Boot patches" + default BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR if BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR != "" # legacy + help + A space-separated list of patches to apply to U-Boot. + Each patch can be described as an URL, a local file path, + or a directory. In the case of a directory, all files + matching *.patch in the directory will be applied. + + Most users may leave this empty + +if BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG +choice + prompt "U-Boot configuration" + default BR2_TARGET_UBOOT_USE_DEFCONFIG + +config BR2_TARGET_UBOOT_USE_DEFCONFIG + bool "Using an in-tree board defconfig file" + +config BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG + bool "Using a custom board (def)config file" + +endchoice + +config BR2_TARGET_UBOOT_BOARD_DEFCONFIG + string "Board defconfig" + depends on BR2_TARGET_UBOOT_USE_DEFCONFIG + help + Name of the board for which U-Boot should be built, without + the _defconfig suffix. + +config BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG + help + Path to the U-Boot configuration file. + +config BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES + string "Additional configuration fragment files" + help + A space-separated list of configuration fragment files, + that will be merged to the main U-Boot configuration file. +endif + +# Hidden boolean that allows to select BR2_TARGET_UBOOT_NEEDS_XXD when +# needed. +config BR2_TARGET_UBOOT_DEFAULT_ENV_FILE_ENABLED + bool + default y if BR2_TARGET_UBOOT_DEFAULT_ENV_FILE != "" + select BR2_TARGET_UBOOT_NEEDS_XXD + +config BR2_TARGET_UBOOT_DEFAULT_ENV_FILE + string "Text file with default environment" + depends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG + help + Text file containing the variables to be used as the default + environment in U-Boot. + + If empty, let U-Boot generate the default enviromnent from the + source code and other U-Boot configuration values, which is + the default behaviour. + + If set to the path to a file, instructs U-Boot to define the + entire U-Boot default environment from the provided file, + disabling all the default behaviour. + + From the U-Boot documentation: + + The format is the same as accepted by the mkenvimage tool, + with lines containing key=value pairs. Blank lines and + lines beginning with '#' are ignored. + + Based on the USE_DEFAULT_ENV_FILE and DEFAULT_ENV_FILE U-Boot + configuration variables. + + For more info see: + https://docs.u-boot.org/en/latest/usage/environment.html#external-environment-file + + Requires U-Boot >= v2018.05. + +config BR2_TARGET_UBOOT_NEEDS_DTC + bool "U-Boot needs dtc" + select BR2_PACKAGE_HOST_DTC + help + Select this option if your U-Boot board configuration + requires the Device Tree compiler to be available. + +config BR2_TARGET_UBOOT_NEEDS_PYTHON3 + bool "U-Boot needs host python 3.x" + help + Select this option if U-Boot needs a host Python 3.x + interpreter. This is the case for some U-Boot + configurations, after U-Boot 2020.01. + +config BR2_TARGET_UBOOT_NEEDS_PYLIBFDT + bool "U-Boot needs pylibfdt" + select BR2_TARGET_UBOOT_NEEDS_PYTHON3 + help + Select this option if your U-Boot board configuration + requires the Python libfdt library to be available. + +config BR2_TARGET_UBOOT_NEEDS_PYELFTOOLS + bool "U-Boot needs pyelftools" + select BR2_TARGET_UBOOT_NEEDS_PYTHON3 + help + Select this option if your U-Boot board configuration + requires the Python pyelftools library to be available. + This is used by some rockchip SOCs for elf parsing. + For example: rk3399 soc boards. + +config BR2_TARGET_UBOOT_NEEDS_OPENSSL + bool "U-Boot needs OpenSSL" + help + Select this option if your U-Boot board configuration + requires OpenSSL to be available on the host. This is + typically the case when the board configuration has + CONFIG_FIT_SIGNATURE enabled. + +config BR2_TARGET_UBOOT_NEEDS_LZOP + bool "U-Boot needs lzop" + help + Select this option if your U-Boot board configuration + requires lzop to be available on the host. This is typically + the case when the board configuration has CONFIG_SPL_LZO + enabled. + +config BR2_TARGET_UBOOT_NEEDS_GNUTLS + bool "U-Boot needs gnutls" + help + Select this option if your U-Boot board configuration + requires gnutls to be available on the host. This is + typically the case when the board configuration has + CONFIG_TOOLS_MKEFICAPSULE enabled. + +config BR2_TARGET_UBOOT_NEEDS_UTIL_LINUX + bool "U-Boot needs util-linux" + help + Select this option if your U-Boot board configuration + requires util-linux (-luuid) to be available on the host. + This is typically the case when the board configuration + has CONFIG_TOOLS_MKEFICAPSULE enabled. + +config BR2_TARGET_UBOOT_NEEDS_XXD + bool "U-Boot needs xxd" + help + Select this option if your U-Boot board configuration + requires xxd to be available on the host. This is + typically the case when the board configuration has + CONFIG_USE_DEFAULT_ENV_FILE enabled. + +config BR2_TARGET_UBOOT_NEEDS_ATF_BL31 + bool "U-Boot needs ATF BL31" + depends on BR2_TARGET_ARM_TRUSTED_FIRMWARE + depends on !BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33 + select BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31 + help + Some specific platforms (such as Allwinner A64/H5) + encapsulate the BL31 part of ATF inside U-Boot. This option + makes sure ATF gets built prior to U-Boot, and that the BL31 + variable pointing to ATF's BL31 binary, is passed during the + Buildroot build. + +choice + prompt "U-Boot ATF BL31 format" + default BR2_TARGET_UBOOT_NEEDS_ATF_BL31_BIN + depends on BR2_TARGET_UBOOT_NEEDS_ATF_BL31 + +config BR2_TARGET_UBOOT_NEEDS_ATF_BL31_BIN + bool "bl31.bin" + +config BR2_TARGET_UBOOT_NEEDS_ATF_BL31_ELF + bool "bl31.elf" + +endchoice + +config BR2_TARGET_UBOOT_NEEDS_OPTEE_TEE + bool "U-Boot needs OPTEE TEE" + depends on BR2_TARGET_OPTEE_OS_CORE + help + Some platforms (such as Rockchip) encapsulate the TEE inside + U-Boot. This option makes sure optee-os gets built prior to + U-Boot, and that the TEE variable pointing to OPTEE's + tee.elf, is passed during the Buildroot build. + +config BR2_TARGET_UBOOT_NEEDS_OPENSBI + bool "U-Boot needs OpenSBI" + depends on BR2_TARGET_OPENSBI + help + Some RISC-V platforms (such as SiFive HiFive Unleashed) + encapsulate the OpenSBI firmware image inside U-Boot. + This option makes sure OpenSBI gets built prior to U-Boot, + and that the OpenSBI variable pointing to OpenSBI binary, + is passed during the Buildroot build. + +config BR2_TARGET_UBOOT_NEEDS_IMX_FIRMWARE + bool "U-Boot needs firmware-imx" + depends on BR2_PACKAGE_FIRMWARE_IMX + depends on BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW || \ + BR2_PACKAGE_FIRMWARE_IMX_NEEDS_HDMI_FW + help + Some i.MX8 platforms (such as i.MX8 M, i.MX 8M Mini, i.MX 8M + Nano) encapsulate NXP specific firmware (DDR, HDMI) inside + U-Boot. + This option makes sure that the i.MX firmwares are copied into + the U-Boot source directory. + +config BR2_TARGET_UBOOT_NEEDS_ROCKCHIP_RKBIN + bool "U-Boot needs rockchip-rkbin" + depends on BR2_PACKAGE_ROCKCHIP_RKBIN + help + For some Rockchip SoCs U-Boot needs binary blobs from + Rockchip. + This option makes sure that the needed binary blobs are copied + into the U-Boot source directory. + +config BR2_TARGET_UBOOT_USE_BINMAN + bool "U-Boot use binman" + select BR2_TARGET_UBOOT_NEEDS_PYTHON3 + select BR2_TARGET_UBOOT_NEEDS_PYELFTOOLS + select BR2_TARGET_UBOOT_NEEDS_PYLIBFDT + help + Use binman tool for generation and signing of boot images. + + https://docs.u-boot.org/en/v2024.07/develop/package/binman.html + +menu "U-Boot binary format" + +config BR2_TARGET_UBOOT_FORMAT_AIS + bool "u-boot.ais" + help + AIS (Application Image Script) is a format defined by TI. + It is required to load code/data on OMAP-L1 processors. + u-boot.ais contains U-Boot with the SPL support. + +config BR2_TARGET_UBOOT_FORMAT_BIN + bool "u-boot.bin" + default y + +config BR2_TARGET_UBOOT_FORMAT_DTB + bool "u-boot.dtb" + +config BR2_TARGET_UBOOT_FORMAT_DTB_BIN + bool "u-boot-dtb.bin" + +config BR2_TARGET_UBOOT_FORMAT_NAND_BIN + bool "u-boot-nand.bin" + +config BR2_TARGET_UBOOT_FORMAT_ELF + bool "u-boot" + help + Install the u-boot image, which is directly the ELF binary + for the main U-Boot, potentially with debugging symbols. + +config BR2_TARGET_UBOOT_FORMAT_REMAKE_ELF + bool "u-boot.elf" + help + Install the u-boot.elf image, which is produced when + CONFIG_REMAKE_ELF=y. It is an ELF image (u-boot.elf) + produced from the raw U-Boot binary (u-boot.bin), which may + already have been statically relocated and may already have + a device-tree appended to it. + +config BR2_TARGET_UBOOT_FORMAT_IMG + bool "u-boot.img" + +config BR2_TARGET_UBOOT_FORMAT_DTB_IMG + bool "u-boot-dtb.img" + +config BR2_TARGET_UBOOT_FORMAT_IMX + bool "u-boot.imx" + +config BR2_TARGET_UBOOT_FORMAT_DTB_IMX + bool "u-boot-dtb.imx" + +config BR2_TARGET_UBOOT_FORMAT_ITB + bool "u-boot.itb" + +config BR2_TARGET_UBOOT_FORMAT_KWB + bool "u-boot.kwb (Marvell)" + depends on BR2_arm + +config BR2_TARGET_UBOOT_FORMAT_NAND + bool "u-boot.nand (Freescale i.MX28)" + depends on BR2_arm + help + This is Freescale i.MX28 BootStream format (.sb), with a + header for booting from a NAND flash. + + U-Boot includes an mxsboot tool to generate this format, + starting from 2011.12. + + There are two possibilities when preparing an image writable + to NAND flash: + 1) The NAND was not written at all yet or the BCB (Boot + Control Blocks) is broken. In this case, the NAND image + 'u-boot.nand' needs to written. + 2) The NAND flash was already written with a good BCB. This + applies after 'u-boot.nand' was correctly written. There is no + need to write the BCB again. In this case, the bootloader can + be upgraded by writing 'u-boot.sb'. + + To satisfy both cases, the 'u-boot.nand' image obtained from + mxsboot as well as the U-Boot make target 'u-boot.sb' are + copied to the binaries directory. + + See doc/README.mxs (or doc/README.mx28_common before 2013.07) + +if BR2_TARGET_UBOOT_FORMAT_NAND + +config BR2_TARGET_UBOOT_FORMAT_NAND_PAGE_SIZE + int "NAND page size" + default 2048 + help + The NAND page size of the targets NAND flash in bytes as a + decimal integer value. + + The value provided here is passed to the -w option of mxsboot. + +config BR2_TARGET_UBOOT_FORMAT_NAND_OOB_SIZE + int "NAND OOB size" + default 64 + help + The NAND OOB size of the targets NAND flash in bytes as a + decimal integer value. + + The value provided here is passed to the -o option of mxsboot. + +config BR2_TARGET_UBOOT_FORMAT_NAND_ERASE_SIZE + int "NAND erase size" + default 131072 + help + The NAND eraseblock size of the targets NAND flash in bytes as + a decimal integer value. + + The value provided here is passed to the -e option of mxsboot. + +endif + +config BR2_TARGET_UBOOT_FORMAT_SB + bool "u-boot.sb (Freescale i.MX28)" + depends on BR2_arm + +config BR2_TARGET_UBOOT_FORMAT_SD + bool "u-boot.sd (Freescale i.MX28)" + depends on BR2_arm + help + This is Freescale i.MX28 SB format, with a header for booting + from an SD card. + + U-Boot includes an mxsboot tool to generate this format, + starting from 2011.12. + + See doc/README.mxs (or doc/README.mx28_common before 2013.07) + +config BR2_TARGET_UBOOT_FORMAT_STM32 + bool "u-boot.stm32" + depends on BR2_arm + +if BR2_TARGET_UBOOT_FORMAT_STM32 +config BR2_TARGET_UBOOT_BUILD_FORMAT_STM32_LEGACY + bool "Legacy build (u-boot.stm32 target)" + help + Select this option if you use U-Boot with version older than + 2022.01), so that we use the old build target. Otherwise, + binman application is called to create the stm32 binary + format. +endif + +config BR2_TARGET_UBOOT_FORMAT_CUSTOM + bool "Custom (specify below)" + help + On some platforms, the standard U-Boot binary is not called + u-boot.bin, but u-boot.bin. If this is your case, + you should select this option and specify the correct name(s) + in BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME. + +config BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME + string "U-Boot binary format: custom names" + depends on BR2_TARGET_UBOOT_FORMAT_CUSTOM + help + In case the U-Boot binary for the target platform is not among + the default names, one or more custom names can be listed + here. + Use space to separate multiple names. + Example: + u-boot_magic.bin + +endmenu + +config BR2_TARGET_UBOOT_OMAP_IFT + bool "produce a .ift signed image (OMAP)" + depends on BR2_TARGET_UBOOT_FORMAT_BIN + depends on BR2_arm || BR2_armeb + select BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS + help + Use gpsign to produce an image of u-boot.bin signed with + a Configuration Header for booting on OMAP processors. + This allows U-Boot to boot without the need for an + intermediate bootloader (e.g. x-loader) if it is written + on the first sector of the boot medium. + This only works for some media, such as NAND. Check your + chip documentation for details. You might also want to + read the documentation of gpsign, the tool that generates + the .ift image, at: + https://github.com/nmenon/omap-u-boot-utils/blob/master/README + +if BR2_TARGET_UBOOT_OMAP_IFT + +config BR2_TARGET_UBOOT_OMAP_IFT_CONFIG + string "gpsign Configuration Header config file" + help + The Configuration Header (CH) config file defines the + desired content of the CH for the signed image. + It usually contains external RAM settings and + possibly other external devices initialization. + The omap-u-boot-utils software contains example + configuration files for some boards: + https://github.com/nmenon/omap-u-boot-utils/tree/master/configs + +endif + +config BR2_TARGET_UBOOT_SPL + bool "Install U-Boot SPL binary image" + help + Install the U-Boot SPL binary image to the images + directory. + SPL is a first stage bootloader loaded into internal + memory in charge of enabling and configuring the + external memory (DDR), and load the u-boot program + into DDR. + +config BR2_TARGET_UBOOT_SPL_NAME + string "U-Boot SPL/TPL binary image name(s)" + default "spl/u-boot-spl.bin" + depends on BR2_TARGET_UBOOT_SPL + help + A space-separated list of SPL/TPL binaries, generated during + u-boot build. For most platform SPL name is spl/u-boot-spl.bin + and TPL name is tpl/u-boot-tpl.bin but not always. SPL name is + MLO on OMAP and SPL on i.MX6 for example. + +config BR2_TARGET_UBOOT_INITIAL_ENV + bool "Install u-boot-initial-env" + help + Install the U-Boot u-boot-initial-env on the target. + + This file is typically required by libubootenv. + +config BR2_TARGET_UBOOT_ZYNQMP + bool "Boot on the Xilinx ZynqMP SoCs" + depends on BR2_aarch64 + help + Enable options specific to the Xilinx ZynqMP family of SoCs. + +if BR2_TARGET_UBOOT_ZYNQMP + +config BR2_TARGET_UBOOT_ZYNQMP_PMUFW_PREBUILT + bool "xilinx-prebuilt pmufw.elf" + depends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG + depends on BR2_TARGET_XILINX_PREBUILT_ZYNQMP || BR2_TARGET_XILINX_PREBUILT_KRIA + help + Use xilinx-prebuilt boot package for downloading prebuilt + zynqmp pmufw.elf from + https://github.com/Xilinx/soc-prebuilt-firmware repo. + + U-Boot build process will generate a boot.bin (to be loaded by + by the ZynqMP boot ROM) containing both the U-Boot SPL and the + PMU firmware in the Xilinx-specific boot format. + +config BR2_TARGET_UBOOT_ZYNQMP_PMUFW + string "Custom PMU firmware location" + depends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG + depends on !BR2_TARGET_UBOOT_ZYNQMP_PMUFW_PREBUILT + help + Location of a PMU firmware binary. + + If not empty, instructs the U-Boot build process to generate + a boot.bin (to be loaded by the ZynqMP boot ROM) containing + both the U-Boot SPL and the PMU firmware in the + Xilinx-specific boot format. + + The value can be an absolute or relative path, and will be + used directly from where it is located, or an URI + (e.g. http://...), and it will be downloaded and used from + the download directory. + + The PMU firmware binary can be either in ELF or BIN format. + + If empty, the generated boot.bin will not contain a PMU + firmware. + + This feature requires U-Boot >= 2018.07. + +config BR2_TARGET_UBOOT_ZYNQMP_PM_CFG + string "PMU configuration location" + depends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG + help + Location of a PMU configuration file. + + If not empty, Buildroot will convert the PMU configuration + file into a loadable blob and pass it to U-Boot. The blob gets + embedded into the U-Boot SPL and is used to configure the PMU + during board initialization. + + Unlike the PMU firmware, the PMU configuration file is unique + to each board configuration. A PMU configuration file can be + generated by building your Xilinx SDK BSP. It can be found in + the BSP source, for example at + ./psu_cortexa53_0/libsrc/xilpm_v2_4/src/pm_cfg_obj.c + + Leave this option empty if your PMU firmware has a hard-coded + configuration object or you are loading it by any other means. + + This feature requires U-Boot >= v2019.10. + +config BR2_TARGET_UBOOT_ZYNQMP_PSU_INIT_FILE + string "Custom psu_init_gpl file" + depends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG + help + On ZynqMP the booloader is responsible for some basic + initializations, such as enabling peripherals and + configuring pinmuxes. The psu_init_gpl.c file (and, + optionally, psu_init_gpl.h) contains the code for such + initializations. + + Although U-Boot contains psu_init_gpl.c files for some + boards, each of them describes only one specific + configuration. Users of a different board, or needing a + different configuration, can generate custom files using the + Xilinx development tools. + + Set this variable to the path to your psu_init_gpl.c file + (e.g. "board/myboard/psu_init_gpl.c"). psu_init_gpl.h, if + needed, should be in the same directory. U-Boot will build + and link the user-provided file instead of the built-in one. + + Leave empty to use the files provided by U-Boot. + + This feature requires commit + 6da4f67ad09cd8b311d77b2b04e557b7ef65b56c from upstream + U-Boot, available from versions after 2018.07. + +endif + +config BR2_TARGET_UBOOT_ALTERA_SOCFPGA_IMAGE_CRC + bool "CRC image for Altera SoC FPGA (mkpimage)" + depends on BR2_arm + depends on BR2_TARGET_UBOOT_SPL || BR2_TARGET_UBOOT_FORMAT_DTB_BIN + help + Pass the U-Boot image through the mkpimage tool to enable + booting on the Altera SoC FPGA based platforms. + + On some platforms, it's the SPL that needs to be passed + through mkpimage. On some other platforms there is no SPL + because the internal SRAM is big enough to store the full + U-Boot. In this case, it's directly the full U-Boot image + that is passed through mkpimage. + + If BR2_TARGET_UBOOT_SPL is enabled then + BR2_TARGET_UBOOT_SPL_NAME is converted by mkpimage using + header version 0. + + Otherwise the full u-boot-dtb.bin is converted using + mkpimage header version 1. + + In either case the resulting file will be given a .crc + extension. + +if BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG + +config BR2_TARGET_UBOOT_CUSTOM_DTS_PATH + string "Device Tree Source file paths" + help + Space-separated list of paths to device tree source files + that will be copied to arch/ARCH/dts/ before starting the + build. + + To use this device tree source file, the U-Boot configuration + file must refer to it. + +endif + +config BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS + string "Custom make options" + help + List of custom make options passed at build time. Can be + used for example to pass a DEVICE_TREE= value. + +endif # BR2_TARGET_UBOOT diff --git a/boot/uboot/uboot.hash b/boot/uboot/uboot.hash new file mode 100644 index 00000000..0811ed58 --- /dev/null +++ b/boot/uboot/uboot.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 f591da9ab90ef3d6b3d173766d0ddff90c4ed7330680897486117df390d83c8f u-boot-2024.07.tar.bz2 +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 Licenses/gpl-2.0.txt diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk new file mode 100644 index 00000000..2c04abc8 --- /dev/null +++ b/boot/uboot/uboot.mk @@ -0,0 +1,621 @@ +################################################################################ +# +# uboot +# +################################################################################ + +UBOOT_VERSION = $(call qstrip,$(BR2_TARGET_UBOOT_VERSION)) +UBOOT_BOARD_NAME = $(call qstrip,$(BR2_TARGET_UBOOT_BOARDNAME)) + +UBOOT_LICENSE = GPL-2.0+ +ifeq ($(BR2_TARGET_UBOOT_LATEST_VERSION),y) +UBOOT_LICENSE_FILES = Licenses/gpl-2.0.txt +endif +UBOOT_CPE_ID_VENDOR = denx +UBOOT_CPE_ID_PRODUCT = u-boot + +UBOOT_INSTALL_IMAGES = YES + +# u-boot 2020.01+ needs make 4.0+ +UBOOT_DEPENDENCIES = host-pkgconf $(BR2_MAKE_HOST_DEPENDENCY) +UBOOT_MAKE = $(BR2_MAKE) + +ifeq ($(BR2_TARGET_UBOOT_CUSTOM_TARBALL),y) +# Handle custom U-Boot tarballs as specified by the configuration +UBOOT_TARBALL = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION)) +UBOOT_SITE = $(patsubst %/,%,$(dir $(UBOOT_TARBALL))) +UBOOT_SOURCE = $(notdir $(UBOOT_TARBALL)) +else ifeq ($(BR2_TARGET_UBOOT_CUSTOM_GIT),y) +UBOOT_SITE = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL)) +UBOOT_SITE_METHOD = git +else ifeq ($(BR2_TARGET_UBOOT_CUSTOM_HG),y) +UBOOT_SITE = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL)) +UBOOT_SITE_METHOD = hg +else ifeq ($(BR2_TARGET_UBOOT_CUSTOM_SVN),y) +UBOOT_SITE = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL)) +UBOOT_SITE_METHOD = svn +else +# Handle stable official U-Boot versions +UBOOT_SITE = https://ftp.denx.de/pub/u-boot +UBOOT_SOURCE = u-boot-$(UBOOT_VERSION).tar.bz2 +endif + +ifeq ($(BR2_TARGET_UBOOT)$(BR2_TARGET_UBOOT_LATEST_VERSION),y) +BR_NO_CHECK_HASH_FOR += $(UBOOT_SOURCE) +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_BIN),y) +UBOOT_BINS += u-boot.bin +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_DTB),y) +UBOOT_BINS += u-boot.dtb +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_ELF),y) +UBOOT_BINS += u-boot +# To make elf usable for debuging on ARC use special target +ifeq ($(BR2_arc),y) +UBOOT_MAKE_TARGET += mdbtrick +endif +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_REMAKE_ELF),y) +UBOOT_BINS += u-boot.elf +endif + +# Call 'make all' unconditionally +UBOOT_MAKE_TARGET += all + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_KWB),y) +UBOOT_BINS += u-boot.kwb +UBOOT_MAKE_TARGET += u-boot.kwb +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_AIS),y) +UBOOT_BINS += u-boot.ais +UBOOT_MAKE_TARGET += u-boot.ais +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND_BIN),y) +UBOOT_BINS += u-boot-nand.bin +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_DTB_IMG),y) +UBOOT_BINS += u-boot-dtb.img +UBOOT_MAKE_TARGET += u-boot-dtb.img +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_DTB_IMX),y) +UBOOT_BINS += u-boot-dtb.imx +UBOOT_MAKE_TARGET += u-boot-dtb.imx +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_DTB_BIN),y) +UBOOT_BINS += u-boot-dtb.bin +UBOOT_MAKE_TARGET += u-boot-dtb.bin +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_IMG),y) +UBOOT_BINS += u-boot.img +UBOOT_MAKE_TARGET += u-boot.img +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_ITB),y) +UBOOT_BINS += u-boot.itb +UBOOT_MAKE_TARGET += u-boot.itb +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_IMX),y) +UBOOT_BINS += u-boot.imx +UBOOT_MAKE_TARGET += u-boot.imx +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_SB),y) +UBOOT_BINS += u-boot.sb +UBOOT_MAKE_TARGET += u-boot.sb +# mxsimage needs OpenSSL +UBOOT_DEPENDENCIES += host-elftosb host-openssl +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_SD),y) +# BootStream (.sb) is generated by U-Boot, we convert it to SD format +UBOOT_BINS += u-boot.sd +UBOOT_MAKE_TARGET += u-boot.sb +UBOOT_DEPENDENCIES += host-elftosb host-openssl +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND),y) +UBOOT_BINS += u-boot.nand +UBOOT_MAKE_TARGET += u-boot.sb +UBOOT_DEPENDENCIES += host-elftosb host-openssl +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_STM32),y) +UBOOT_BINS += u-boot.stm32 +ifeq ($(BR2_TARGET_UBOOT_BUILD_FORMAT_STM32_LEGACY),y) +UBOOT_MAKE_TARGET += u-boot.stm32 +endif +endif + +ifeq ($(BR2_TARGET_UBOOT_INITIAL_ENV),y) +UBOOT_MAKE_TARGET += u-boot-initial-env +define UBOOT_INSTALL_UBOOT_INITIAL_ENV + $(INSTALL) -D -m 0644 $(@D)/u-boot-initial-env $(TARGET_DIR)/etc/u-boot-initial-env +endef +UBOOT_POST_INSTALL_TARGET_HOOKS += UBOOT_INSTALL_UBOOT_INITIAL_ENV +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_CUSTOM),y) +UBOOT_BINS += $(call qstrip,$(BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME)) +endif + +ifeq ($(BR2_TARGET_UBOOT_OMAP_IFT),y) +UBOOT_BINS += u-boot.bin +UBOOT_BIN_IFT = u-boot.bin.ift +endif + +# The kernel calls AArch64 'arm64', but U-Boot calls it just 'arm', so +# we have to special case it. Similar for i386/x86_64 -> x86 +ifeq ($(NORMALIZED_ARCH),arm64) +UBOOT_ARCH = arm +else ifneq ($(filter $(NORMALIZED_ARCH),i386 x86_64),) +UBOOT_ARCH = x86 +else +UBOOT_ARCH = $(NORMALIZED_ARCH) +endif + +UBOOT_MAKE_OPTS += \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + ARCH=$(UBOOT_ARCH) \ + HOSTCC="$(HOSTCC) $(subst -I/,-isystem /,$(subst -I /,-isystem /,$(HOST_CFLAGS)))" \ + HOSTLDFLAGS="$(HOST_LDFLAGS)" \ + $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS)) + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_ATF_BL31),y) +UBOOT_DEPENDENCIES += arm-trusted-firmware +ifeq ($(BR2_TARGET_UBOOT_NEEDS_ATF_BL31_ELF),y) +UBOOT_MAKE_OPTS += BL31=$(BINARIES_DIR)/bl31.elf +define UBOOT_COPY_ATF_FIRMWARE + cp $(BINARIES_DIR)/bl31.elf $(@D)/ +endef +UBOOT_PRE_BUILD_HOOKS += UBOOT_COPY_ATF_FIRMWARE +else +UBOOT_MAKE_OPTS += BL31=$(BINARIES_DIR)/bl31.bin +define UBOOT_COPY_ATF_FIRMWARE + cp $(BINARIES_DIR)/bl31.bin $(@D)/ +endef +UBOOT_PRE_BUILD_HOOKS += UBOOT_COPY_ATF_FIRMWARE +endif +endif + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_OPTEE_TEE),y) +UBOOT_DEPENDENCIES += optee-os +UBOOT_MAKE_OPTS += TEE=$(BINARIES_DIR)/tee.elf +endif + +# TI K3 devices needs at least ti-sysfw (System Firmware) provided +# by ti-k3-boot-firmware when built with u-boot's binman tool. +# Some TI K3 devices using a split firmware boot flow (AM62, +# j721e) also need the Device Manager (DM) firmware. +ifeq ($(BR2_TARGET_TI_K3_BOOT_FIRMWARE),y) +UBOOT_DEPENDENCIES += ti-k3-boot-firmware +endif + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_OPENSBI),y) +UBOOT_DEPENDENCIES += opensbi +UBOOT_MAKE_OPTS += OPENSBI=$(BINARIES_DIR)/fw_dynamic.bin +endif + +# Mainline U-Boot versions can create the i.MX specific boot images +# and need some NXP firmware blobs. +ifeq ($(BR2_TARGET_UBOOT_NEEDS_IMX_FIRMWARE),y) +UBOOT_DEPENDENCIES += firmware-imx +UBOOT_IMX_FW_FILES = \ + $(if $(BR2_PACKAGE_FIRMWARE_IMX_NEEDS_HDMI_FW),signed_hdmi_imx8m.bin) \ + $(if $(BR2_PACKAGE_FIRMWARE_IMX_LPDDR4),lpddr4*.bin) \ + $(if $(BR2_PACKAGE_FIRMWARE_IMX_DDR4),ddr4*.bin) \ + $(if $(BR2_PACKAGE_FIRMWARE_IMX_DDR3),ddr3*.bin) + +define UBOOT_COPY_IMX_FW_FILES + $(foreach fw,$(UBOOT_IMX_FW_FILES),\ + cp $(BINARIES_DIR)/$(fw) $(@D)/ + ) +endef +UBOOT_PRE_BUILD_HOOKS += UBOOT_COPY_IMX_FW_FILES +endif + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_ROCKCHIP_RKBIN),y) +UBOOT_DEPENDENCIES += rockchip-rkbin +define UBOOT_INSTALL_UBOOT_ROCKCHIP_BIN + $(INSTALL) -D -m 0644 $(@D)/u-boot-rockchip.bin $(BINARIES_DIR)/u-boot-rockchip.bin +endef +UBOOT_POST_INSTALL_IMAGES_HOOKS += UBOOT_INSTALL_UBOOT_ROCKCHIP_BIN +ifneq ($(ROCKCHIP_RKBIN_BL31_FILENAME),) +UBOOT_MAKE_OPTS += BL31=$(BINARIES_DIR)/$(notdir $(ROCKCHIP_RKBIN_BL31_FILENAME)) +endif +ifneq ($(ROCKCHIP_RKBIN_TPL_FILENAME),) +UBOOT_MAKE_OPTS += ROCKCHIP_TPL=$(BINARIES_DIR)/$(notdir $(ROCKCHIP_RKBIN_TPL_FILENAME)) +endif +ifneq ($(ROCKCHIP_RKBIN_TEE_FILENAME),) +UBOOT_MAKE_OPTS += TEE=$(BINARIES_DIR)/$(notdir $(ROCKCHIP_RKBIN_TEE_FILENAME)) +endif +endif + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_DTC),y) +UBOOT_DEPENDENCIES += host-dtc +UBOOT_MAKE_OPTS += DTC=$(HOST_DIR)/bin/dtc +endif + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_PYTHON3),y) +UBOOT_DEPENDENCIES += host-python3 host-python-setuptools +endif + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_PYLIBFDT),y) +UBOOT_DEPENDENCIES += host-python-pylibfdt +endif + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_PYELFTOOLS),y) +UBOOT_DEPENDENCIES += host-python-pyelftools +endif + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_OPENSSL),y) +UBOOT_DEPENDENCIES += host-openssl +endif + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_LZOP),y) +UBOOT_DEPENDENCIES += host-lzop +endif + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_GNUTLS),y) +UBOOT_DEPENDENCIES += host-gnutls +endif + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_UTIL_LINUX),y) +UBOOT_DEPENDENCIES += host-util-linux +endif + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_XXD),y) +UBOOT_DEPENDENCIES += host-vim +endif + +ifeq ($(BR2_TARGET_UBOOT_USE_BINMAN),y) +# https://source.denx.de/u-boot/u-boot/-/blob/v2024.04/tools/binman/binman.rst?plain=1#L377 +# https://source.denx.de/u-boot/u-boot/-/blob/v2024.04/tools/buildman/requirements.txt +UBOOT_DEPENDENCIES += \ + host-python-jsonschema \ + host-python-pyyaml \ + host-python-yamllint +UBOOT_MAKE_OPTS += BINMAN_INDIRS=$(BINARIES_DIR) +endif + +# prior to u-boot 2013.10 the license info was in COPYING. Copy it so +# legal-info finds it +define UBOOT_COPY_OLD_LICENSE_FILE + if [ -f $(@D)/COPYING ]; then \ + $(INSTALL) -m 0644 -D $(@D)/COPYING $(@D)/Licenses/gpl-2.0.txt; \ + fi +endef + +UBOOT_POST_EXTRACT_HOOKS += UBOOT_COPY_OLD_LICENSE_FILE +UBOOT_POST_RSYNC_HOOKS += UBOOT_COPY_OLD_LICENSE_FILE + +# Older versions break on gcc 10+ because of redefined symbols +define UBOOT_DROP_YYLLOC + $(Q)grep -Z -l -r -E '^YYLTYPE yylloc;$$' $(@D) \ + |xargs -0 -r $(SED) '/^YYLTYPE yylloc;$$/d' +endef +UBOOT_POST_PATCH_HOOKS += UBOOT_DROP_YYLLOC + +ifneq ($(ARCH_XTENSA_OVERLAY_FILE),) +define UBOOT_XTENSA_OVERLAY_EXTRACT + $(call arch-xtensa-overlay-extract,$(@D),u-boot) +endef +UBOOT_POST_EXTRACT_HOOKS += UBOOT_XTENSA_OVERLAY_EXTRACT +UBOOT_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL) +endif + +# Analogous code exists in linux/linux.mk. Basically, the generic +# package infrastructure handles downloading and applying remote +# patches. Local patches are handled depending on whether they are +# directories or files. +UBOOT_PATCHES = $(call qstrip,$(BR2_TARGET_UBOOT_PATCH)) +UBOOT_PATCH = $(filter ftp://% http://% https://%,$(UBOOT_PATCHES)) + +define UBOOT_APPLY_LOCAL_PATCHES + for p in $(filter-out ftp://% http://% https://%,$(UBOOT_PATCHES)) ; do \ + if test -d $$p ; then \ + $(APPLY_PATCHES) $(@D) $$p \*.patch || exit 1 ; \ + else \ + $(APPLY_PATCHES) $(@D) `dirname $$p` `basename $$p` || exit 1; \ + fi \ + done +endef +UBOOT_POST_PATCH_HOOKS += UBOOT_APPLY_LOCAL_PATCHES + +# Fixup inclusion of libfdt headers, which can fail in older u-boot versions +# when libfdt-devel is installed system-wide. +# The core change is equivalent to upstream commit +# e0d20dc1521e74b82dbd69be53a048847798a90a (first in v2018.03). However, the fixup +# is complicated by the fact that the underlying u-boot code changed multiple +# times in history: +# - The directory scripts/dtc/libfdt only exists since upstream commit +# c0e032e0090d6541549b19cc47e06ccd1f302893 (first in v2017.11). For earlier +# versions, create a dummy scripts/dtc/libfdt directory with symlinks for the +# fdt-related files. This allows to use the same -I option for both +# cases. +# - The variable 'srctree' used to be called 'SRCTREE' before upstream commit +# 01286329b27b27eaeda045b469d41b1d9fce545a (first in v2014.04). +# - The original location for libfdt, 'lib/libfdt/', used to be simply +# 'libfdt' before upstream commit 0de71d507157c4bd4fddcd3a419140d2b986eed2 +# (first in v2010.06). Make the 'lib' part optional in the substitution to +# handle this. +define UBOOT_FIXUP_LIBFDT_INCLUDE + $(Q)if [ ! -d $(@D)/scripts/dtc/libfdt ]; then \ + mkdir -p $(@D)/scripts/dtc/libfdt; \ + cd $(@D)/scripts/dtc/libfdt; \ + ln -s ../../../include/fdt.h .; \ + ln -s ../../../include/libfdt*.h .; \ + ln -s ../../../lib/libfdt/libfdt_internal.h .; \ + fi + $(Q)$(SED) \ + 's%-I\ *\$$(srctree)/lib/libfdt%-I$$(srctree)/scripts/dtc/libfdt%; \ + s%-I\ *\$$(SRCTREE)\(/lib\)\?/libfdt%-I$$(SRCTREE)/scripts/dtc/libfdt%' \ + $(@D)/tools/Makefile +endef +UBOOT_POST_PATCH_HOOKS += UBOOT_FIXUP_LIBFDT_INCLUDE + +ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY),y) +define UBOOT_CONFIGURE_CMDS + $(TARGET_CONFIGURE_OPTS) \ + $(UBOOT_MAKE) -C $(@D) $(UBOOT_MAKE_OPTS) \ + $(UBOOT_BOARD_NAME)_config +endef +else ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG),y) +ifeq ($(BR2_TARGET_UBOOT_USE_DEFCONFIG),y) +UBOOT_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_TARGET_UBOOT_BOARD_DEFCONFIG))_defconfig +else ifeq ($(BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG),y) +UBOOT_KCONFIG_FILE = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE)) +endif # BR2_TARGET_UBOOT_USE_DEFCONFIG + +UBOOT_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES)) +UBOOT_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig + +# UBOOT_MAKE_OPTS overrides HOSTCC / HOSTLDFLAGS to allow the build to +# find our host-openssl. However, this triggers a bug in the kconfig +# build script that causes it to build with /usr/include/ncurses.h +# (which is typically wchar) but link with +# $(HOST_DIR)/lib/libncurses.so (which is not). We don't actually +# need any host-package for kconfig, so remove the HOSTCC/HOSTLDFLAGS +# override again. In addition, host-ccache is not ready at kconfig +# time, so use HOSTCC_NOCCACHE. +UBOOT_KCONFIG_OPTS = $(UBOOT_MAKE_OPTS) HOSTCC="$(HOSTCC_NOCCACHE)" HOSTLDFLAGS="" + +ifeq ($(BR2_TARGET_UBOOT_DEFAULT_ENV_FILE_ENABLED),y) +UBOOT_DEFAULT_ENV_FILE = $(call qstrip,$(BR2_TARGET_UBOOT_DEFAULT_ENV_FILE)) +define UBOOT_KCONFIG_DEFAULT_ENV_FILE + $(call KCONFIG_SET_OPT,CONFIG_USE_DEFAULT_ENV_FILE,y) + $(call KCONFIG_SET_OPT,CONFIG_DEFAULT_ENV_FILE,"$(shell readlink -f $(UBOOT_DEFAULT_ENV_FILE))") +endef +endif +endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY + +UBOOT_CUSTOM_DTS_PATH = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_DTS_PATH)) + +define UBOOT_BUILD_CMDS + $(if $(UBOOT_CUSTOM_DTS_PATH), + cp -f $(UBOOT_CUSTOM_DTS_PATH) $(@D)/arch/$(UBOOT_ARCH)/dts/ + ) + $(TARGET_CONFIGURE_OPTS) \ + PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ + PKG_CONFIG_SYSROOT_DIR="/" \ + PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \ + PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \ + PKG_CONFIG_LIBDIR="$(HOST_DIR)/lib/pkgconfig:$(HOST_DIR)/share/pkgconfig" \ + $(UBOOT_MAKE) -C $(@D) $(UBOOT_MAKE_OPTS) \ + $(UBOOT_MAKE_TARGET) + $(if $(BR2_TARGET_UBOOT_FORMAT_SD), + $(@D)/tools/mxsboot sd $(@D)/u-boot.sb $(@D)/u-boot.sd) + $(if $(BR2_TARGET_UBOOT_FORMAT_NAND), + $(@D)/tools/mxsboot \ + -w $(BR2_TARGET_UBOOT_FORMAT_NAND_PAGE_SIZE) \ + -o $(BR2_TARGET_UBOOT_FORMAT_NAND_OOB_SIZE) \ + -e $(BR2_TARGET_UBOOT_FORMAT_NAND_ERASE_SIZE) \ + nand $(@D)/u-boot.sb $(@D)/u-boot.nand) +endef + +define UBOOT_BUILD_OMAP_IFT + $(HOST_DIR)/bin/gpsign -f $(@D)/u-boot.bin \ + -c $(call qstrip,$(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG)) +endef + +define UBOOT_INSTALL_IMAGES_CMDS + $(foreach f,$(UBOOT_BINS), \ + cp -dpf $(@D)/$(f) $(BINARIES_DIR)/ + ) + $(if $(BR2_TARGET_UBOOT_FORMAT_NAND), + cp -dpf $(@D)/u-boot.sb $(BINARIES_DIR)) + $(if $(BR2_TARGET_UBOOT_SPL), + $(foreach f,$(call qstrip,$(BR2_TARGET_UBOOT_SPL_NAME)), \ + cp -dpf $(@D)/$(f) $(BINARIES_DIR)/ + ) + ) +endef + +ifeq ($(BR2_TARGET_UBOOT_ZYNQMP),y) + +ifeq ($(BR2_TARGET_UBOOT_ZYNQMP_PMUFW_PREBUILT),y) +UBOOT_DEPENDENCIES += xilinx-prebuilt +UBOOT_ZYNQMP_PMUFW_PATH = $(BINARIES_DIR)/pmufw.elf +else +UBOOT_ZYNQMP_PMUFW = $(call qstrip,$(BR2_TARGET_UBOOT_ZYNQMP_PMUFW)) + +ifneq ($(findstring ://,$(UBOOT_ZYNQMP_PMUFW)),) +UBOOT_EXTRA_DOWNLOADS += $(UBOOT_ZYNQMP_PMUFW) +BR_NO_CHECK_HASH_FOR += $(notdir $(UBOOT_ZYNQMP_PMUFW)) +UBOOT_ZYNQMP_PMUFW_PATH = $(UBOOT_DL_DIR)/$(notdir $(UBOOT_ZYNQMP_PMUFW)) +else ifneq ($(UBOOT_ZYNQMP_PMUFW),) +UBOOT_ZYNQMP_PMUFW_PATH = $(shell readlink -f $(UBOOT_ZYNQMP_PMUFW)) +endif #ifneq ($(findstring ://,$(UBOOT_ZYNQMP_PMUFW)),) + +endif #BR2_TARGET_UBOOT_ZYNQMP_PMUFW_PREBUILT + +ifeq ($(suffix $(UBOOT_ZYNQMP_PMUFW_PATH)),.elf) +UBOOT_ZYNQMP_PMUFW_PATH_FINAL = $(basename $(UBOOT_ZYNQMP_PMUFW_PATH)).bin +# objcopy is arch-agnostic so we can use $(TARGET_OBJCOPY) in lack of a +# microblaze objcopy +define UBOOT_ZYNQMP_PMUFW_CONVERT + $(TARGET_OBJCOPY) -O binary -I elf32-little $(UBOOT_ZYNQMP_PMUFW_PATH) $(UBOOT_ZYNQMP_PMUFW_PATH_FINAL) +endef +UBOOT_PRE_BUILD_HOOKS += UBOOT_ZYNQMP_PMUFW_CONVERT +else +UBOOT_ZYNQMP_PMUFW_PATH_FINAL = $(UBOOT_ZYNQMP_PMUFW_PATH) +endif +define UBOOT_ZYNQMP_KCONFIG_PMUFW + $(call KCONFIG_SET_OPT,CONFIG_PMUFW_INIT_FILE,"$(UBOOT_ZYNQMP_PMUFW_PATH_FINAL)") +endef + +UBOOT_ZYNQMP_PM_CFG = $(call qstrip,$(BR2_TARGET_UBOOT_ZYNQMP_PM_CFG)) +ifneq ($(UBOOT_ZYNQMP_PM_CFG),) +UBOOT_ZYNQMP_PM_CFG_BIN = $(UBOOT_DIR)/pm_cfg_obj.bin +define UBOOT_ZYNQMP_KCONFIG_PM_CFG + $(call KCONFIG_SET_OPT,CONFIG_ZYNQMP_SPL_PM_CFG_OBJ_FILE,"$(UBOOT_ZYNQMP_PM_CFG_BIN)", \ + $(@D)/.config) +endef + +define UBOOT_ZYNQMP_PM_CFG_CONVERT + $(UBOOT_DIR)/tools/zynqmp_pm_cfg_obj_convert.py \ + "$(UBOOT_ZYNQMP_PM_CFG)" \ + "$(UBOOT_ZYNQMP_PM_CFG_BIN)" +endef +UBOOT_PRE_BUILD_HOOKS += UBOOT_ZYNQMP_PM_CFG_CONVERT +endif + +UBOOT_ZYNQMP_PSU_INIT = $(call qstrip,$(BR2_TARGET_UBOOT_ZYNQMP_PSU_INIT_FILE)) +UBOOT_ZYNQMP_PSU_INIT_PATH = $(shell readlink -f $(UBOOT_ZYNQMP_PSU_INIT)) + +ifneq ($(UBOOT_ZYNQMP_PSU_INIT),) +define UBOOT_ZYNQMP_KCONFIG_PSU_INIT + $(call KCONFIG_SET_OPT,CONFIG_XILINX_PS_INIT_FILE,"$(UBOOT_ZYNQMP_PSU_INIT_PATH)") +endef +endif + +endif # BR2_TARGET_UBOOT_ZYNQMP + +define UBOOT_INSTALL_OMAP_IFT_IMAGE + cp -dpf $(@D)/$(UBOOT_BIN_IFT) $(BINARIES_DIR)/ +endef + +ifeq ($(BR2_TARGET_UBOOT_OMAP_IFT),y) +ifeq ($(BR_BUILDING),y) +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG)),) +$(error No gpsign config file. Check your BR2_TARGET_UBOOT_OMAP_IFT_CONFIG setting) +endif +ifeq ($(wildcard $(call qstrip,$(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG))),) +$(error gpsign config file $(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG) not found. Check your BR2_TARGET_UBOOT_OMAP_IFT_CONFIG setting) +endif +endif +UBOOT_DEPENDENCIES += host-omap-u-boot-utils +UBOOT_POST_BUILD_HOOKS += UBOOT_BUILD_OMAP_IFT +UBOOT_POST_INSTALL_IMAGES_HOOKS += UBOOT_INSTALL_OMAP_IFT_IMAGE +endif + +ifeq ($(BR2_TARGET_UBOOT_ALTERA_SOCFPGA_IMAGE_CRC),y) +ifeq ($(BR2_TARGET_UBOOT_SPL),y) +UBOOT_CRC_ALTERA_SOCFPGA_INPUT_IMAGES = $(call qstrip,$(BR2_TARGET_UBOOT_SPL_NAME)) +UBOOT_CRC_ALTERA_SOCFPGA_HEADER_VERSION = 0 +else +UBOOT_CRC_ALTERA_SOCFPGA_INPUT_IMAGES = u-boot-dtb.bin +UBOOT_CRC_ALTERA_SOCFPGA_HEADER_VERSION = 1 +endif +define UBOOT_CRC_ALTERA_SOCFPGA_IMAGE + $(foreach f,$(UBOOT_CRC_ALTERA_SOCFPGA_INPUT_IMAGES), \ + $(HOST_DIR)/bin/mkpimage \ + -v $(UBOOT_CRC_ALTERA_SOCFPGA_HEADER_VERSION) \ + -o $(BINARIES_DIR)/$(notdir $(call qstrip,$(f))).crc \ + $(@D)/$(call qstrip,$(f)) + ) +endef +UBOOT_DEPENDENCIES += host-mkpimage +UBOOT_POST_INSTALL_IMAGES_HOOKS += UBOOT_CRC_ALTERA_SOCFPGA_IMAGE +endif + +define UBOOT_KCONFIG_FIXUP_CMDS + $(UBOOT_ZYNQMP_KCONFIG_PMUFW) + $(UBOOT_ZYNQMP_KCONFIG_PM_CFG) + $(UBOOT_ZYNQMP_KCONFIG_PSU_INIT) + $(UBOOT_KCONFIG_DEFAULT_ENV_FILE) +endef + +ifeq ($(BR2_TARGET_UBOOT)$(BR_BUILDING),yy) + +# +# Check U-Boot board name (for legacy) or the defconfig/custom config +# file options (for kconfig) +# +ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY),y) +ifeq ($(UBOOT_BOARD_NAME),) +$(error No U-Boot board name set. Check your BR2_TARGET_UBOOT_BOARDNAME setting) +endif # UBOOT_BOARD_NAME +else ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG),y) +ifeq ($(BR2_TARGET_UBOOT_USE_DEFCONFIG),y) +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_BOARD_DEFCONFIG)),) +$(error No board defconfig name specified, check your BR2_TARGET_UBOOT_BOARD_DEFCONFIG setting) +endif # qstrip BR2_TARGET_UBOOT_BOARD_DEFCONFIG +endif # BR2_TARGET_UBOOT_USE_DEFCONFIG +ifeq ($(BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG),y) +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE)),) +$(error No board configuration file specified, check your BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE setting) +endif # qstrip BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE +endif # BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG +endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY + +# +# Check custom version option +# +ifeq ($(BR2_TARGET_UBOOT_CUSTOM_VERSION),y) +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE)),) +$(error No custom U-Boot version specified. Check your BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE setting) +endif # qstrip BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE +endif # BR2_TARGET_UBOOT_CUSTOM_VERSION + +# +# Check custom tarball option +# +ifeq ($(BR2_TARGET_UBOOT_CUSTOM_TARBALL),y) +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION)),) +$(error No custom U-Boot tarball specified. Check your BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION setting) +endif # qstrip BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION +endif # BR2_TARGET_UBOOT_CUSTOM_TARBALL + +# +# Check Git/Mercurial repo options +# +ifeq ($(BR2_TARGET_UBOOT_CUSTOM_GIT)$(BR2_TARGET_UBOOT_CUSTOM_HG),y) +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL)),) +$(error No custom U-Boot repository URL specified. Check your BR2_TARGET_UBOOT_CUSTOM_REPO_URL setting) +endif # qstrip BR2_TARGET_UBOOT_CUSTOM_CUSTOM_REPO_URL +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION)),) +$(error No custom U-Boot repository version specified. Check your BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION setting) +endif # qstrip BR2_TARGET_UBOOT_CUSTOM_CUSTOM_REPO_VERSION +endif # BR2_TARGET_UBOOT_CUSTOM_GIT || BR2_TARGET_UBOOT_CUSTOM_HG + +endif # BR2_TARGET_UBOOT && BR_BUILDING + +ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY),y) +UBOOT_DEPENDENCIES += \ + $(BR2_BISON_HOST_DEPENDENCY) \ + $(BR2_FLEX_HOST_DEPENDENCY) +$(eval $(generic-package)) +else ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG),y) +UBOOT_MAKE_ENV = $(TARGET_MAKE_ENV) +# Starting with 2021.10, the kconfig in uboot calls the cross-compiler +# to check its capabilities. So we need the toolchain before we can +# call the configurators. +UBOOT_KCONFIG_DEPENDENCIES += \ + toolchain \ + $(BR2_MAKE_HOST_DEPENDENCY) \ + $(BR2_BISON_HOST_DEPENDENCY) \ + $(BR2_FLEX_HOST_DEPENDENCY) +$(eval $(kconfig-package)) +endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY diff --git a/boot/vexpress-firmware/Config.in b/boot/vexpress-firmware/Config.in new file mode 100644 index 00000000..265fb4be --- /dev/null +++ b/boot/vexpress-firmware/Config.in @@ -0,0 +1,8 @@ +config BR2_TARGET_VEXPRESS_FIRMWARE + bool "vexpress-firmware" + depends on BR2_aarch64 + help + Versatile Express firmware from ARM, with Linaro mods last + change. + + https://git.linaro.org/arm/vexpress-firmware.git diff --git a/boot/vexpress-firmware/vexpress-firmware.hash b/boot/vexpress-firmware/vexpress-firmware.hash new file mode 100644 index 00000000..26d1ccc6 --- /dev/null +++ b/boot/vexpress-firmware/vexpress-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 ba3253d422a53e97cff99548956b911eb971c8b28cd767118d563a3c2cd1da39 vexpress-firmware-901f81977c3b367a2e0bf3d6444be302822d97a3-git4.tar.gz diff --git a/boot/vexpress-firmware/vexpress-firmware.mk b/boot/vexpress-firmware/vexpress-firmware.mk new file mode 100644 index 00000000..693a9cb8 --- /dev/null +++ b/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/boot/xilinx-prebuilt/Config.in b/boot/xilinx-prebuilt/Config.in new file mode 100644 index 00000000..94ef3dd1 --- /dev/null +++ b/boot/xilinx-prebuilt/Config.in @@ -0,0 +1,73 @@ +config BR2_TARGET_XILINX_PREBUILT + bool "xilinx-prebuilt" + depends on BR2_aarch64 + help + Pre-built firmware files for Xilinx boards. + + https://github.com/Xilinx/soc-prebuilt-firmware + +if BR2_TARGET_XILINX_PREBUILT + +config BR2_TARGET_XILINX_PREBUILT_VERSION + string "prebuilt version" + default "xilinx_v2024.1" + help + Release version of Xilinx firmware. + Must be xilinx_v2023.1 or newer. + +choice + bool "family variant" + default BR2_TARGET_XILINX_PREBUILT_VERSAL if BR2_PACKAGE_VERSAL_FIRMWARE # legacy + default BR2_TARGET_XILINX_PREBUILT_ZYNQMP + +config BR2_TARGET_XILINX_PREBUILT_ZYNQMP + bool "zynqmp" + +config BR2_TARGET_XILINX_PREBUILT_KRIA + bool "kria" + +config BR2_TARGET_XILINX_PREBUILT_VERSAL + bool "versal" + +endchoice + +config BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA + bool "download a prebuilt Versal XSA" + depends on BR2_TARGET_XILINX_PREBUILT_VERSAL + help + The Xilinx Support Archive (XSA) provides custom Xilinx + firmware files generated by the AMD Vivado Design Suite. + + https://docs.amd.com/r/en-US/ug1400-vitis-embedded/Creating-a-Hardware-Design-XSA-File + +if BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA + +config BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA_LOCATION + string "URL of custom XSA" + help + This option allows to specify a URL pointing to an XSA source + file. This URL can use any protocol recognized by Buildroot, + like http://, ftp://, file:// or scp://. + + When pointing to a local XSA using file://, you may want to + use a make variable like $(TOPDIR) to reference the root of + the Buildroot tree. + +endif # BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA + +config BR2_TARGET_XILINX_PREBUILT_FAMILY + string + default "zynqmp" if BR2_TARGET_XILINX_PREBUILT_ZYNQMP + default "kria" if BR2_TARGET_XILINX_PREBUILT_KRIA + default "versal" if BR2_TARGET_XILINX_PREBUILT_VERSAL + +config BR2_TARGET_XILINX_PREBUILT_BOARD + string "board name" + default "zcu102" if BR2_TARGET_XILINX_PREBUILT_ZYNQMP + default "kr260" if BR2_TARGET_XILINX_PREBUILT_KRIA + default "vck190" if BR2_TARGET_XILINX_PREBUILT_VERSAL + help + Name of Xilinx target board. + Used for installing the appropriate firmware. + +endif # BR2_TARGET_XILINX_PREBUILT diff --git a/boot/xilinx-prebuilt/xilinx-prebuilt.hash b/boot/xilinx-prebuilt/xilinx-prebuilt.hash new file mode 100644 index 00000000..c955cd79 --- /dev/null +++ b/boot/xilinx-prebuilt/xilinx-prebuilt.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 7abcba4e0e44e3a4adf9c1f971d918575226d7604dfd64a386baaa00c1c6c35f xilinx-prebuilt-xilinx_v2024.1.tar.gz diff --git a/boot/xilinx-prebuilt/xilinx-prebuilt.mk b/boot/xilinx-prebuilt/xilinx-prebuilt.mk new file mode 100644 index 00000000..9f36ee72 --- /dev/null +++ b/boot/xilinx-prebuilt/xilinx-prebuilt.mk @@ -0,0 +1,68 @@ +################################################################################ +# +# xilinx-prebuilt +# +################################################################################ + +XILINX_PREBUILT_VERSION = $(call qstrip,$(BR2_TARGET_XILINX_PREBUILT_VERSION)) + +ifeq ($(BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA),y) +XILINX_PREBUILT_FILE = $(call qstrip,$(BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA_LOCATION)) +XILINX_PREBUILT_SITE = $(patsubst %/,%,$(dir $(XILINX_PREBUILT_FILE))) +XILINX_PREBUILT_SOURCE = $(notdir $(XILINX_PREBUILT_FILE)) +define XILINX_PREBUILT_EXTRACT_CMDS + $(UNZIP) $(XILINX_PREBUILT_DL_DIR)/$(XILINX_PREBUILT_SOURCE) -d $(@D) +endef +else # BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA +XILINX_PREBUILT_SITE = $(call github,Xilinx,soc-prebuilt-firmware,$(XILINX_PREBUILT_VERSION)) +XILINX_PREBUILT_LICENSE = MIT +XILINX_PREBUILT_LICENSE_FILES = LICENSE +endif # BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA + +XILINX_PREBUILT_INSTALL_TARGET = NO +XILINX_PREBUILT_INSTALL_IMAGES = YES + +XILINX_PREBUILT_FAMILY = $(call qstrip,$(BR2_TARGET_XILINX_PREBUILT_FAMILY)) +XILINX_PREBUILT_BOARD = $(call qstrip,$(BR2_TARGET_XILINX_PREBUILT_BOARD)) + +XILINX_PREBUILT_BOARD_DIR = $(@D)/$(XILINX_PREBUILT_BOARD)-$(XILINX_PREBUILT_FAMILY) + +ifeq ($(BR2_TARGET_XILINX_PREBUILT_VERSAL),y) +# We need the *.pdi glob, because the file has different names for the +# different boards, but there is only one, and it has to be named +# vpl_gen_fixed.pdi when installed. +ifeq ($(BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA),y) +XILINX_PREBUILT_PLM = $(@D)/pdi_files/gen_files/plm.elf +# Unlike the psmfw.elf file for Xilinx development boards, +# AMD Vivado Design Suite currently generates a file named psm_fw.elf. +# Future versions of AMD Vivado will generate a file named psmfw.elf, +# so to support current and future AMD Vivado versions, the filename +# psm*fw.elf is used. +XILINX_PREBUILT_PSMFW = $(@D)/pdi_files/static_files/psm*fw.elf +XILINX_PREBUILT_PDI = $(@D)/*.pdi +else # BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA +XILINX_PREBUILT_PLM = $(XILINX_PREBUILT_BOARD_DIR)/plm.elf +XILINX_PREBUILT_PSMFW = $(XILINX_PREBUILT_BOARD_DIR)/psmfw.elf +XILINX_PREBUILT_PDI = $(XILINX_PREBUILT_BOARD_DIR)/*.pdi +endif # BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA + +define XILINX_PREBUILT_INSTALL + $(INSTALL) -D -m 0755 $(XILINX_PREBUILT_PLM) \ + $(BINARIES_DIR)/plm.elf + $(INSTALL) -D -m 0755 $(XILINX_PREBUILT_PSMFW) \ + $(BINARIES_DIR)/psmfw.elf + $(INSTALL) -D -m 0755 $(XILINX_PREBUILT_PDI) \ + $(BINARIES_DIR)/vpl_gen_fixed.pdi +endef +else # BR2_TARGET_XILINX_PREBUILT_VERSAL +define XILINX_PREBUILT_INSTALL + $(INSTALL) -D -m 0755 $(XILINX_PREBUILT_BOARD_DIR)/pmufw.elf \ + $(BINARIES_DIR)/pmufw.elf +endef +endif # BR2_TARGET_XILINX_PREBUILT_VERSAL + +define XILINX_PREBUILT_INSTALL_IMAGES_CMDS + $(XILINX_PREBUILT_INSTALL) +endef + +$(eval $(generic-package)) diff --git a/configs/aarch64_efi_defconfig b/configs/aarch64_efi_defconfig new file mode 100644 index 00000000..443113e4 --- /dev/null +++ b/configs/aarch64_efi_defconfig @@ -0,0 +1,34 @@ +# Architecture +BR2_aarch64=y + +# System +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + +## Required tools to create bootable media +BR2_PACKAGE_HOST_GENIMAGE=y + +# Bootloader +BR2_TARGET_GRUB2=y +BR2_TARGET_GRUB2_ARM64_EFI=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="200M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/aarch64-efi/post-image.sh support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/aarch64-efi/genimage-efi.cfg" + +# Linux headers same as kernel, a 5.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.4" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Host tools for genimage +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/acmesystems_acqua_a5_256mb_defconfig b/configs/acmesystems_acqua_a5_256mb_defconfig new file mode 100644 index 00000000..b102dde0 --- /dev/null +++ b/configs/acmesystems_acqua_a5_256mb_defconfig @@ -0,0 +1,28 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/acmesystems/acqua-a5/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/acmesystems/acqua-a5/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.30" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="board/acmesystems/acqua-a5/at91-sama5d3_acqua.dts" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_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.10.3" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="acqua-256m" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/acmesystems_acqua_a5_512mb_defconfig b/configs/acmesystems_acqua_a5_512mb_defconfig new file mode 100644 index 00000000..da54eaf6 --- /dev/null +++ b/configs/acmesystems_acqua_a5_512mb_defconfig @@ -0,0 +1,28 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/acmesystems/acqua-a5/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/acmesystems/acqua-a5/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.30" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="board/acmesystems/acqua-a5/at91-sama5d3_acqua.dts" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_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.10.3" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="acqua-512m" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/acmesystems_aria_g25_128mb_defconfig b/configs/acmesystems_aria_g25_128mb_defconfig new file mode 100644 index 00000000..261a2c9f --- /dev/null +++ b/configs/acmesystems_aria_g25_128mb_defconfig @@ -0,0 +1,40 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Kernel headers +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# System configuration +BR2_GLOBAL_PATCH_DIR="board/acmesystems/aria-g25/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +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="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/acmesystems/aria-g25/genimage.cfg" + +# Kernel configuration +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.315" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-ariag25" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Root filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# 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.10.3" +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/configs/acmesystems_aria_g25_256mb_defconfig b/configs/acmesystems_aria_g25_256mb_defconfig new file mode 100644 index 00000000..183c4f7b --- /dev/null +++ b/configs/acmesystems_aria_g25_256mb_defconfig @@ -0,0 +1,40 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Kernel headers +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# System configuration +BR2_GLOBAL_PATCH_DIR="board/acmesystems/aria-g25/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +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="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/acmesystems/aria-g25/genimage.cfg" + +# Kernel configuration +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.315" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-ariag25" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Root filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# 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.10.3" +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/configs/acmesystems_arietta_g25_128mb_defconfig b/configs/acmesystems_arietta_g25_128mb_defconfig new file mode 100644 index 00000000..43ec1d2d --- /dev/null +++ b/configs/acmesystems_arietta_g25_128mb_defconfig @@ -0,0 +1,40 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Kernel headers +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# System configuration +BR2_GLOBAL_PATCH_DIR="board/acmesystems/arietta-g25/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +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="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/acmesystems/arietta-g25/genimage.cfg" + +# Kernel configuration +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.315" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-ariettag25" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Root filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# 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.10.3" +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/configs/acmesystems_arietta_g25_256mb_defconfig b/configs/acmesystems_arietta_g25_256mb_defconfig new file mode 100644 index 00000000..294ab312 --- /dev/null +++ b/configs/acmesystems_arietta_g25_256mb_defconfig @@ -0,0 +1,40 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Kernel headers +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# System configuration +BR2_GLOBAL_PATCH_DIR="board/acmesystems/arietta-g25/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +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="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/acmesystems/arietta-g25/genimage.cfg" + +# Kernel configuration +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.315" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-ariettag25" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Root filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# 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.10.3" +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/configs/am574x_idk_defconfig b/configs/am574x_idk_defconfig new file mode 100644 index 00000000..bbae73df --- /dev/null +++ b/configs/am574x_idk_defconfig @@ -0,0 +1,45 @@ +# Architecture +BR2_arm=y +BR2_cortex_a15=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.14" +BR2_LINUX_KERNEL_DEFCONFIG="multi_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="ti/omap/am574x-idk" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Image +BR2_ROOTFS_POST_BUILD_SCRIPT="board/ti/am574x-idk/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/ti/am574x-idk/genimage.cfg" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" +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_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="MLO" +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/amarula_vyasa_rk3288_defconfig b/configs/amarula_vyasa_rk3288_defconfig new file mode 100644 index 00000000..2267d49a --- /dev/null +++ b/configs/amarula_vyasa_rk3288_defconfig @@ -0,0 +1,49 @@ +# Architecture +BR2_arm=y +BR2_cortex_a17=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y +BR2_GLOBAL_PATCH_DIR="board/amarula/vyasa/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.10" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="vyasa-rk3288" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/u-boot-spl-dtb.bin tpl/u-boot-tpl.bin" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.91" +BR2_LINUX_KERNEL_DEFCONFIG="multi_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x02000000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="rk3288-vyasa" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/amarula/vyasa/linux_gmac.fragment" + +# Filesystem +BR2_TARGET_GENERIC_HOSTNAME="vyasa-rk3288" +BR2_TARGET_GENERIC_ISSUE="Welcome to VYASA RK3288!" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="512M" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/amarula/vyasa/genimage.cfg" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/amarula/vyasa/post-build.sh" diff --git a/configs/andes_ae350_45_defconfig b/configs/andes_ae350_45_defconfig new file mode 100644 index 00000000..fd8b7db0 --- /dev/null +++ b/configs/andes_ae350_45_defconfig @@ -0,0 +1,39 @@ +BR2_riscv=y +BR2_RISCV_ISA_RVC=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_0=y +BR2_GLOBAL_PATCH_DIR="board/andes/ae350/patches" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_ROOTFS_OVERLAY="board/andes/ae350/rootfs_overlay" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/andes/ae350/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/andes/ae350/genimage_sdcard.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,andestech,linux,v6.0.y_ae350-ax45mp)/linux-v6.0.y_ae350-ax45mp.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="ae350_ax45mp" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="andes/ae350_ax45mp" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_OPENSBI=y +BR2_TARGET_OPENSBI_CUSTOM_TARBALL=y +BR2_TARGET_OPENSBI_CUSTOM_TARBALL_LOCATION="$(call github,riscv,opensbi,22f38ee6c658a660083aa45c4ec6c72f66a17260)/opensbi-22f38ee6c658a660083aa45c4ec6c72f66a17260.tar.gz" +BR2_TARGET_OPENSBI_PLAT="andes/ae350" +# BR2_TARGET_OPENSBI_INSTALL_JUMP_IMG is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,u-boot,u-boot,a5dfa3b8a0f7ad555495bad1386613d2de4ba619)/u-boot-a5dfa3b8a0f7ad555495bad1386613d2de4ba619.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="ae350_rv64_spl_xip" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/andes/ae350/uboot.config.fragment" +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_OPENSBI=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/arcturus_ucls1012a_defconfig b/configs/arcturus_ucls1012a_defconfig new file mode 100644 index 00000000..124cc3ff --- /dev/null +++ b/configs/arcturus_ucls1012a_defconfig @@ -0,0 +1,36 @@ +# Architecture +BR2_aarch64=y + +# Linux headers same as kernel, a 5.4 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y + +# System settings +BR2_TARGET_GENERIC_HOSTNAME="ucls1012a" +BR2_TARGET_GENERIC_ISSUE="Welcome to uCLS1012A-SOM" +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/arcturus/aarch64-ucls1012a/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/arcturus/aarch64-ucls1012a/post-image.sh" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,ArcturusNetworks,uCLS1012A-kernel,v.22.06)/linux-v.22.06.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="ucls1012a" +BR2_LINUX_KERNEL_IMAGEGZ=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="arcturus/arc-ucls1012a" + +# Filesystem +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_GZIP=y + +# U-boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,ArcturusNetworks,uCLS1012A-uboot,v.22.06)/uboot-v.22.06.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="UCLS1012A_QSPI128" + +# Tools +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y diff --git a/configs/arcturus_ucp1020_defconfig b/configs/arcturus_ucp1020_defconfig new file mode 100644 index 00000000..8b90f447 --- /dev/null +++ b/configs/arcturus_ucp1020_defconfig @@ -0,0 +1,30 @@ +# Architecture +BR2_powerpc=y +BR2_powerpc_8548=y + +# Linux headers same as kernel, a 4.4 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y + +# System settings +BR2_TARGET_GENERIC_HOSTNAME="UCP1020" +BR2_TARGET_GENERIC_ISSUE="Welcome to Arcturus uCP1020 System on Module" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_SYSTEM_DHCP="eth0" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,ArcturusNetworks,uCP1020-kernel,v20190618)/linux-v20190618.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="ucp1020" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="ucp1020" + +# Filesystem +BR2_TARGET_ROOTFS_JFFS2=y + +# U-boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,ArcturusNetworks,uCP1020-uboot,v20190618)/uboot-v20190618.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="UCP1020" diff --git a/configs/arm_foundationv8_defconfig b/configs/arm_foundationv8_defconfig new file mode 100644 index 00000000..69266894 --- /dev/null +++ b/configs/arm_foundationv8_defconfig @@ -0,0 +1,20 @@ +BR2_aarch64=y +# Linux headers same as kernel, a 6.8 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_8=y +BR2_GLOBAL_PATCH_DIR="board/arm/foundation-v8/patches" +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.10" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="arm/foundation-v8-gicv3-psci" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_SIZE="128M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_BOOT_WRAPPER_AARCH64=y +BR2_TARGET_BOOT_WRAPPER_AARCH64_DTS="arm/foundation-v8-gicv3-psci" +BR2_TARGET_BOOT_WRAPPER_AARCH64_BOOTARGS="root=/dev/vda consolelog=9 console=ttyAMA0 rw" +BR2_TARGET_BOOT_WRAPPER_AARCH64_PSCI=y +BR2_TARGET_BOOT_WRAPPER_AARCH64_GICV3=y diff --git a/configs/arm_fvp_ebbr_defconfig b/configs/arm_fvp_ebbr_defconfig new file mode 100644 index 00000000..57b671d5 --- /dev/null +++ b/configs/arm_fvp_ebbr_defconfig @@ -0,0 +1,56 @@ +# Architecture +BR2_aarch64=y + +# Image +BR2_GLOBAL_PATCH_DIR="board/arm/fvp-ebbr/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/arm/fvp-ebbr/post-image.sh support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/arm/fvp-ebbr/genimage.cfg" + +# Linux headers +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_8=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.11" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Packages +BR2_PACKAGE_OPTEE_CLIENT=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="200M" +# BR2_TARGET_ROOTFS_TAR is not set + +# Firmware and bootloader +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.10" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="fvp" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_DTS_PATH="board/arm/fvp-ebbr/fvp-ebbr.dts" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="ARM_TSP_RAM_LOCATION=tdram FVP_DT_PREFIX=fvp-ebbr" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_DTC=y +BR2_TARGET_GRUB2=y +BR2_TARGET_OPTEE_OS=y +BR2_TARGET_OPTEE_OS_NEEDS_DTC=y +BR2_TARGET_OPTEE_OS_PLATFORM="vexpress-fvp" +BR2_TARGET_OPTEE_OS_ADDITIONAL_VARIABLES="CFG_ARM_GICV3=y" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.07-rc3" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="vexpress_fvp" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/arm/fvp-ebbr/u-boot.fragment" +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y + +# Host tools +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/armadeus_apf27_defconfig b/configs/armadeus_apf27_defconfig new file mode 100644 index 00000000..782587e4 --- /dev/null +++ b/configs/armadeus_apf27_defconfig @@ -0,0 +1,39 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 5.10 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y + +# Build +BR2_GLOBAL_PATCH_DIR="board/armadeus/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="apf27" +BR2_TARGET_GENERIC_ISSUE="Welcome to Armadeus development platform !" +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=2047 +BR2_TARGET_ROOTFS_UBI=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.215" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/armadeus/apf27/linux-5.10.config" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0xA0008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx27-apf27dev" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# U-boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.09" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="apf27" diff --git a/configs/armadeus_apf28_defconfig b/configs/armadeus_apf28_defconfig new file mode 100644 index 00000000..4ff79dd0 --- /dev/null +++ b/configs/armadeus_apf28_defconfig @@ -0,0 +1,33 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 5.10 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y + +# Build +BR2_GLOBAL_PATCH_DIR="board/armadeus/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="apf28" +BR2_TARGET_GENERIC_ISSUE="Welcome to Armadeus development platform !" +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.215" +BR2_LINUX_KERNEL_DEFCONFIG="mxs" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x40008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx28-apf28dev" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f000 +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=4227 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_SUBSIZE=0 diff --git a/configs/armadeus_apf51_defconfig b/configs/armadeus_apf51_defconfig new file mode 100644 index 00000000..8317dd7b --- /dev/null +++ b/configs/armadeus_apf51_defconfig @@ -0,0 +1,32 @@ +# Architecture +BR2_arm=y +BR2_cortex_a8=y + +# Linux headers same as kernel, a 5.10 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y + +# Build +BR2_GLOBAL_PATCH_DIR="board/armadeus/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="apf51" +BR2_TARGET_GENERIC_ISSUE="Welcome to Armadeus development platform !" +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc2" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.215" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/armadeus/apf51/linux-5.10.config" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x90008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx51-apf51dev" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=135301 +BR2_TARGET_ROOTFS_UBI=y diff --git a/configs/aspeed_ast2500evb_defconfig b/configs/aspeed_ast2500evb_defconfig new file mode 100644 index 00000000..8db5a39a --- /dev/null +++ b/configs/aspeed_ast2500evb_defconfig @@ -0,0 +1,44 @@ +# Architecture +BR2_arm=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="aspeed-evb" +BR2_TARGET_GENERIC_ISSUE="Aspeed EVB" +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_XZ=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/aspeed/common/post-image.sh" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_17=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.17.7" +BR2_LINUX_KERNEL_DEFCONFIG="aspeed_g5" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/aspeed/ast2500-evb/linux.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="aspeed-ast2500-evb" +BR2_LINUX_KERNEL_XZ=y + +# Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="evb-ast2500" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=ast2500-evb" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/aspeed/ast2500-evb/uboot.fragment" +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y +BR2_PACKAGE_HOST_GENIMAGE=y + +# Target tools +BR2_PACKAGE_MTD=y diff --git a/configs/aspeed_ast2600evb_defconfig b/configs/aspeed_ast2600evb_defconfig new file mode 100644 index 00000000..04239566 --- /dev/null +++ b/configs/aspeed_ast2600evb_defconfig @@ -0,0 +1,44 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4D16=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="aspeed-evb" +BR2_TARGET_GENERIC_ISSUE="Aspeed EVB" +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_XZ=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/aspeed/common/post-image.sh" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_17=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.17.7" +BR2_LINUX_KERNEL_DEFCONFIG="aspeed_g5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="aspeed-ast2600-evb" + +# Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/openbmc/u-boot.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="f2b82fa4ba17ed8091fe76c284220006645a293b" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="evb-ast2600" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=ast2600a1-evb" + +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y +BR2_PACKAGE_HOST_GENIMAGE=y + +# Target tools +BR2_PACKAGE_MTD=y diff --git a/configs/asus_tinker-s_rk3288_defconfig b/configs/asus_tinker-s_rk3288_defconfig new file mode 100644 index 00000000..2ed2c4f7 --- /dev/null +++ b/configs/asus_tinker-s_rk3288_defconfig @@ -0,0 +1,44 @@ +# Architecture +BR2_arm=y +BR2_cortex_a17=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="tinker-s-rk3288" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/u-boot-spl-dtb.bin tpl/u-boot-tpl.bin" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.79" +BR2_LINUX_KERNEL_DEFCONFIG="multi_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="rk3288-tinker-s" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_GENERIC_HOSTNAME="tinker-rk3288-s" +BR2_TARGET_GENERIC_ISSUE="Welcome to TINKER S RK3288!" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="512M" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/asus/tinker/genimage.cfg" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/asus/tinker-s/post-build.sh" diff --git a/configs/asus_tinker_rk3288_defconfig b/configs/asus_tinker_rk3288_defconfig new file mode 100644 index 00000000..b3e4502a --- /dev/null +++ b/configs/asus_tinker_rk3288_defconfig @@ -0,0 +1,43 @@ +# Architecture +BR2_arm=y +BR2_cortex_a17=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="tinker-rk3288" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/u-boot-spl-dtb.bin tpl/u-boot-tpl.bin" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.44" +BR2_LINUX_KERNEL_DEFCONFIG="multi_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="rk3288-tinker" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_GENERIC_HOSTNAME="tinker-rk3288" +BR2_TARGET_GENERIC_ISSUE="Welcome to TINKER RK3288!" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="512M" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/asus/tinker/genimage.cfg" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/asus/tinker/post-build.sh" diff --git a/configs/at91sam9260eknf_defconfig b/configs/at91sam9260eknf_defconfig new file mode 100644 index 00000000..b795ad6e --- /dev/null +++ b/configs/at91sam9260eknf_defconfig @@ -0,0 +1,33 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.8 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_8=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8.6" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9260ek" + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBI=y + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.10.3" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9260eknf_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.09.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9260ek_nandflash" + +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/configs/at91sam9g20dfc_defconfig b/configs/at91sam9g20dfc_defconfig new file mode 100644 index 00000000..46626d85 --- /dev/null +++ b/configs/at91sam9g20dfc_defconfig @@ -0,0 +1,39 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.8 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_8=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8.6" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9g20ek" + +# Filesystem +BR2_TARGET_ROOTFS_TAR=y +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_PEBSIZE=0x20000 +BR2_TARGET_ROOTFS_UBI_SUBSIZE=512 +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f800 +BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE=0x800 +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=2047 + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.10.3" +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/configs/at91sam9g45m10ek_defconfig b/configs/at91sam9g45m10ek_defconfig new file mode 100644 index 00000000..bf0771bc --- /dev/null +++ b/configs/at91sam9g45m10ek_defconfig @@ -0,0 +1,34 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.8 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_8=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8.6" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9m10g45ek" + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=2047 +BR2_TARGET_ROOTFS_UBI=y + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.10.3" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9m10g45eknf_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.09.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9m10g45ek_nandflash" + +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/configs/at91sam9rlek_defconfig b/configs/at91sam9rlek_defconfig new file mode 100644 index 00000000..5c0fdc59 --- /dev/null +++ b/configs/at91sam9rlek_defconfig @@ -0,0 +1,34 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.8 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_8=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8.6" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9rlek" + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=2047 +BR2_TARGET_ROOTFS_UBI=y + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.10.3" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9rleknf_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.09.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9rlek_nandflash" + +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/configs/at91sam9x5ek_defconfig b/configs/at91sam9x5ek_defconfig new file mode 100644 index 00000000..a87b2cb8 --- /dev/null +++ b/configs/at91sam9x5ek_defconfig @@ -0,0 +1,30 @@ +BR2_arm=y +BR2_arm926t=y +# Linux headers same as kernel, a 4.4 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y +BR2_GLOBAL_PATCH_DIR="board/atmel/at91sam9x5ek/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_6.1)/linux-linux4sam_6.1.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9g15ek at91sam9g25ek at91sam9g35ek at91sam9x25ek at91sam9x35ek" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f000 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_SUBSIZE=2048 +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.10.3" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eknf_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_6.1" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9x5ek_nandflash" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/configs/at91sam9x5ek_dev_defconfig b/configs/at91sam9x5ek_dev_defconfig new file mode 100644 index 00000000..7c95ec56 --- /dev/null +++ b/configs/at91sam9x5ek_dev_defconfig @@ -0,0 +1,97 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System Configuration +BR2_GLOBAL_PATCH_DIR="board/atmel/at91sam9x5ek/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +# Needed for usb-utils +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_6.1)/linux-linux4sam_6.1.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9g15ek at91sam9g25ek at91sam9g35ek at91sam9x25ek at91sam9x35ek" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Packages +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_WILC3000_FIRMWARE=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ5_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f000 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_SUBSIZE=2048 + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.10.3" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eknf_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_6.1" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9x5ek_nandflash" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/configs/at91sam9x5ek_mmc_defconfig b/configs/at91sam9x5ek_mmc_defconfig new file mode 100644 index 00000000..2ddf8d64 --- /dev/null +++ b/configs/at91sam9x5ek_mmc_defconfig @@ -0,0 +1,51 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Creation of the SD card image +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/at91sam9x5ek_mmc/genimage.cfg" + +# System Configuration +BR2_GLOBAL_PATCH_DIR="board/atmel/at91sam9x5ek/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_6.1)/linux-linux4sam_6.1.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9g15ek at91sam9g25ek at91sam9g35ek at91sam9x25ek at91sam9x35ek" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.10.3" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eksd_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_6.1" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9x5ek_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE="board/atmel/at91sam9x5ek_mmc/uboot-env.txt" +BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE="0x4000" + +# Host packages +# Needed to generate the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/at91sam9x5ek_mmc_dev_defconfig b/configs/at91sam9x5ek_mmc_dev_defconfig new file mode 100644 index 00000000..d261985b --- /dev/null +++ b/configs/at91sam9x5ek_mmc_dev_defconfig @@ -0,0 +1,106 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System Configuration +BR2_GLOBAL_PATCH_DIR="board/atmel/at91sam9x5ek/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +# Needed for usb-utils +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +# Creation of the SD card image +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/at91sam9x5ek_mmc/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_6.1)/linux-linux4sam_6.1.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9g15ek at91sam9g25ek at91sam9g35ek at91sam9x25ek at91sam9x35ek" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Packages +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_WILC3000_FIRMWARE=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ5_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.10.3" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eksd_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_6.1" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9x5ek_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE="board/atmel/at91sam9x5ek_mmc/uboot-env.txt" +BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE="0x4000" + +# Host packages +# Needed to generate the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/atmel_sama5d27_som1_ek_mmc_dev_defconfig b/configs/atmel_sama5d27_som1_ek_mmc_dev_defconfig new file mode 100644 index 00000000..85ff2977 --- /dev/null +++ b/configs/atmel_sama5d27_som1_ek_mmc_dev_defconfig @@ -0,0 +1,83 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d27_som1_ek_mmc/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4microchip,linux,linux4microchip-2021.10)/linux-linux4microchip-2021.10.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d27_som1_ek" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_WILC3000_FIRMWARE=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_RNG_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ5_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,at91bootstrap,v4.0.1)/at91bootstrap3-v4.0.1.tar.gz" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d27_som1_eksd_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,u-boot-at91,linux4sam-2020.04)/u-boot-at91-linux4sam-2020.04.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d27_som1_ek_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/atmel_sama5d2_xplained_mmc_defconfig b/configs/atmel_sama5d2_xplained_mmc_defconfig new file mode 100644 index 00000000..5b638126 --- /dev/null +++ b/configs/atmel_sama5d2_xplained_mmc_defconfig @@ -0,0 +1,30 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d2_xplained_mmc/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4microchip,linux,linux4microchip-2021.10)/linux-linux4microchip-2021.10.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d2_xplained" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,at91bootstrap,v4.0.1)/at91bootstrap3-v4.0.1.tar.gz" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d2_xplainedsd_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,u-boot-at91,linux4sam_6.2)/u-boot-at91-linux4sam_6.2.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d2_xplained_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/atmel_sama5d2_xplained_mmc_dev_defconfig b/configs/atmel_sama5d2_xplained_mmc_dev_defconfig new file mode 100644 index 00000000..4ee7fca3 --- /dev/null +++ b/configs/atmel_sama5d2_xplained_mmc_dev_defconfig @@ -0,0 +1,101 @@ +# Architecture +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System Configuration +# Needed for usb-utils +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +# Creation of the SD card image +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d2_xplained_mmc/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4microchip,linux,linux4microchip-2021.10)/linux-linux4microchip-2021.10.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d2_xplained" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Packages +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_WILC3000_FIRMWARE=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ5_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,at91bootstrap,v4.0.1)/at91bootstrap3-v4.0.1.tar.gz" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d2_xplainedsd_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,u-boot-at91,linux4sam_6.2)/u-boot-at91-linux4sam_6.2.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d2_xplained_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# Host packages +# Needed to generate the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/atmel_sama5d3_xplained_defconfig b/configs/atmel_sama5d3_xplained_defconfig new file mode 100644 index 00000000..7ef45db4 --- /dev/null +++ b/configs/atmel_sama5d3_xplained_defconfig @@ -0,0 +1,27 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4microchip,linux,linux4microchip-2021.10)/linux-linux4microchip-2021.10.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d3_xplained" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f000 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_SUBSIZE=2048 +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,at91bootstrap,v4.0.1)/at91bootstrap3-v4.0.1.tar.gz" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d3_xplainednf_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,u-boot-at91,linux4sam_6.2)/u-boot-at91-linux4sam_6.2.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3_xplained_nandflash" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/configs/atmel_sama5d3_xplained_dev_defconfig b/configs/atmel_sama5d3_xplained_dev_defconfig new file mode 100644 index 00000000..ef09df3f --- /dev/null +++ b/configs/atmel_sama5d3_xplained_dev_defconfig @@ -0,0 +1,95 @@ +# Architecture +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System Configuration +# Needed for usb-utils +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4microchip,linux,linux4microchip-2021.10)/linux-linux4microchip-2021.10.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d3_xplained" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Packages +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_WILC3000_FIRMWARE=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ5_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f000 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_SUBSIZE=2048 + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,at91bootstrap,v4.0.1)/at91bootstrap3-v4.0.1.tar.gz" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d3_xplainednf_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,u-boot-at91,linux4sam_6.2)/u-boot-at91-linux4sam_6.2.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3_xplained_nandflash" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/configs/atmel_sama5d3_xplained_mmc_defconfig b/configs/atmel_sama5d3_xplained_mmc_defconfig new file mode 100644 index 00000000..1b7d2698 --- /dev/null +++ b/configs/atmel_sama5d3_xplained_mmc_defconfig @@ -0,0 +1,29 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d3_xplained_mmc/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4microchip,linux,linux4microchip-2021.10)/linux-linux4microchip-2021.10.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d3_xplained" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,at91bootstrap,v4.0.1)/at91bootstrap3-v4.0.1.tar.gz" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d3_xplainedsd_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,u-boot-at91,linux4sam_6.2)/u-boot-at91-linux4sam_6.2.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3_xplained_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/atmel_sama5d3_xplained_mmc_dev_defconfig b/configs/atmel_sama5d3_xplained_mmc_dev_defconfig new file mode 100644 index 00000000..f5aa3e38 --- /dev/null +++ b/configs/atmel_sama5d3_xplained_mmc_dev_defconfig @@ -0,0 +1,100 @@ +# Architecture +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System Configuration +# Needed for usb-utils +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +# Creation of the SD card image +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d3_xplained_mmc/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4microchip,linux,linux4microchip-2021.10)/linux-linux4microchip-2021.10.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d3_xplained" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Packages +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_WILC3000_FIRMWARE=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ5_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,at91bootstrap,v4.0.1)/at91bootstrap3-v4.0.1.tar.gz" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d3_xplainedsd_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,u-boot-at91,linux4sam_6.2)/u-boot-at91-linux4sam_6.2.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3_xplained_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# Host packages +# Needed to generate the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/atmel_sama5d3xek_defconfig b/configs/atmel_sama5d3xek_defconfig new file mode 100644 index 00000000..f71e84bf --- /dev/null +++ b/configs/atmel_sama5d3xek_defconfig @@ -0,0 +1,38 @@ +# Architecture +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sama5d31ek sama5d33ek sama5d34ek sama5d35ek sama5d36ek" + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f000 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_SUBSIZE=2048 + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,at91bootstrap,v3.10.3)/at91bootstrap3-v3.10.3.tar.gz" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d3xeknf_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,u-boot-at91,linux4sam_5.8)/u-boot-at91-linux4sam_5.8.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3xek_nandflash" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_SPL=y + +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/configs/atmel_sama5d4_xplained_defconfig b/configs/atmel_sama5d4_xplained_defconfig new file mode 100644 index 00000000..c0b606bc --- /dev/null +++ b/configs/atmel_sama5d4_xplained_defconfig @@ -0,0 +1,31 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4microchip,linux,linux4microchip-2021.10)/linux-linux4microchip-2021.10.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d4_xplained" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x3e000 +BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE=0x1000 +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=2082 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_PEBSIZE=0x40000 +BR2_TARGET_ROOTFS_UBI_SUBSIZE=0 +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,at91bootstrap,v4.0.1)/at91bootstrap3-v4.0.1.tar.gz" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d4_xplainednf_uboot_secure" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,u-boot-at91,linux4sam_6.2)/u-boot-at91-linux4sam_6.2.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d4_xplained_nandflash" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/configs/atmel_sama5d4_xplained_dev_defconfig b/configs/atmel_sama5d4_xplained_dev_defconfig new file mode 100644 index 00000000..ca51ef5b --- /dev/null +++ b/configs/atmel_sama5d4_xplained_dev_defconfig @@ -0,0 +1,99 @@ +# Architecture +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System Configuration +# Needed for usb-utils +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4microchip,linux,linux4microchip-2021.10)/linux-linux4microchip-2021.10.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d4_xplained" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Packages +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_WILC3000_FIRMWARE=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ5_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x3e000 +BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE=0x1000 +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=2082 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_PEBSIZE=0x40000 +BR2_TARGET_ROOTFS_UBI_SUBSIZE=0 + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,at91bootstrap,v4.0.1)/at91bootstrap3-v4.0.1.tar.gz" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d4_xplainednf_uboot_secure" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,u-boot-at91,linux4sam_6.2)/u-boot-at91-linux4sam_6.2.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d4_xplained_nandflash" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/configs/atmel_sama5d4_xplained_mmc_defconfig b/configs/atmel_sama5d4_xplained_mmc_defconfig new file mode 100644 index 00000000..ff010732 --- /dev/null +++ b/configs/atmel_sama5d4_xplained_mmc_defconfig @@ -0,0 +1,30 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d4_xplained_mmc/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4microchip,linux,linux4microchip-2021.10)/linux-linux4microchip-2021.10.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d4_xplained" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,at91bootstrap,v4.0.1)/at91bootstrap3-v4.0.1.tar.gz" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d4_xplainedsd_uboot_secure" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,u-boot-at91,linux4sam_6.2)/u-boot-at91-linux4sam_6.2.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d4_xplained_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/atmel_sama5d4_xplained_mmc_dev_defconfig b/configs/atmel_sama5d4_xplained_mmc_dev_defconfig new file mode 100644 index 00000000..e8d126c7 --- /dev/null +++ b/configs/atmel_sama5d4_xplained_mmc_dev_defconfig @@ -0,0 +1,101 @@ +# Architecture +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System Configuration +# Needed for usb-utils +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +# Creation of the SD card image +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d4_xplained_mmc/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4microchip,linux,linux4microchip-2021.10)/linux-linux4microchip-2021.10.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d4_xplained" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Packages +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_WILC3000_FIRMWARE=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ5_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,at91bootstrap,v4.0.1)/at91bootstrap3-v4.0.1.tar.gz" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d4_xplainedsd_uboot_secure" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,u-boot-at91,linux4sam_6.2)/u-boot-at91-linux4sam_6.2.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d4_xplained_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# Host packages +# Needed to generate the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/avenger96_defconfig b/configs/avenger96_defconfig new file mode 100644 index 00000000..64cfb3c2 --- /dev/null +++ b/configs/avenger96_defconfig @@ -0,0 +1,53 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y + +# Linux headers same as kernel, a 5.8 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# System configuration +BR2_ROOTFS_OVERLAY="board/arrow/avenger96/overlay/" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/stmicroelectronics/common/stm32mp157/post-image.sh" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.22" +BR2_LINUX_KERNEL_DEFCONFIG="multi_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="st/stm32mp157a-dhcor-avenger96" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="lts-v2.8.16" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="stm32mp1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_BL33_IMAGE="u-boot-nodtb.bin" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="STM32MP_SDMMC=1 AARCH32_SP=sp_min DTB_FILE_NAME=stm32mp157a-dhcor-avenger96.dtb BL33_CFG=$(BINARIES_DIR)/u-boot.dtb" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_IMAGES="fip.bin *.stm32" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_DTC=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="stm32mp15_trusted" +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_DTB=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=stm32mp15xx-dhcor-avenger96" +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y + +# Additional tools +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/avnet_rzboard_v2l_defconfig b/configs/avnet_rzboard_v2l_defconfig new file mode 100644 index 00000000..285aef39 --- /dev/null +++ b/configs/avnet_rzboard_v2l_defconfig @@ -0,0 +1,20 @@ +BR2_aarch64=y +BR2_cortex_a55=y +BR2_KERNEL_HEADERS_5_10=y +BR2_TARGET_GENERIC_HOSTNAME="rzboard_v2l" +BR2_TARGET_GENERIC_ISSUE="Welcome to the AVNET RZBoard V2L" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/avnet/rzboard_v2l/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/Avnet/renesas-linux-cip.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="c197622df526c82ae9e3674e06b4092dac33eafa" +BR2_LINUX_KERNEL_DEFCONFIG="rzboard" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="renesas/rzboard" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="64M" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/bananapi_m2_berry_defconfig b/configs/bananapi_m2_berry_defconfig new file mode 100644 index 00000000..200257ac --- /dev/null +++ b/configs/bananapi_m2_berry_defconfig @@ -0,0 +1,30 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TARGET_GENERIC_ISSUE="Welcome to Bananapi M2 Berry" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/bananapi/bananapi-m2-berry/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/bananapi/bananapi-m2-berry/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.57" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-v40-bananapi-m2-berry" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.10" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="bananapi_m2_berry" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=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 diff --git a/configs/bananapi_m2_ultra_defconfig b/configs/bananapi_m2_ultra_defconfig new file mode 100644 index 00000000..6b2ba13e --- /dev/null +++ b/configs/bananapi_m2_ultra_defconfig @@ -0,0 +1,31 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y +BR2_TARGET_GENERIC_ISSUE="Welcome to Bananapi M2 Ultra" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/bananapi/bananapi-m2-ultra/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/bananapi/bananapi-m2-ultra/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.57" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-r40-bananapi-m2-ultra" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.10" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="bananapi_m2_berry" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=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 diff --git a/configs/bananapi_m2_zero_defconfig b/configs/bananapi_m2_zero_defconfig new file mode 100644 index 00000000..8a3e5cd8 --- /dev/null +++ b/configs/bananapi_m2_zero_defconfig @@ -0,0 +1,31 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_8=y +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Bananapi M2 Zero" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/bananapi/bananapi-m2-zero/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.4" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun8i-h2-plus-bananapi-m2-zero" +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="bananapi_m2_zero" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/bananapi/bananapi-m2-zero/boot.cmd" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/bananapro_defconfig b/configs/bananapro_defconfig new file mode 100644 index 00000000..dbebdf3e --- /dev/null +++ b/configs/bananapro_defconfig @@ -0,0 +1,73 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_GLOBAL_PATCH_DIR="board/lemaker/bananapro/patches" +BR2_ARM_EABIHF=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 5.4 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="bananapro" +BR2_TARGET_GENERIC_ISSUE="Welcome to Banana Pro!" +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_ROOTFS_OVERLAY="board/lemaker/bananapro/rootfs_overlay" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/lemaker/bananapro/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/lemaker/bananapro/post-image.sh" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.4.7" +BR2_LINUX_KERNEL_USE_DEFCONFIG=y +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/lemaker/bananapro/linux-wifi.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun7i-a20-bananapro" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="Bananapro" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" + +# Wifi firmware for brcm43362 +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX=y + +# Audio +BR2_PACKAGE_ALSA_UTILS=y +# BR2_PACKAGE_ALSA_UTILS_ALSAMIXER is not set +BR2_PACKAGE_ALSA_UTILS_AMIXER=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y + +# For automatic firmware loading +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y + +# Wireless packages +BR2_PACKAGE_IW=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y + +# Host tools +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/configs/beaglebone_defconfig b/configs/beaglebone_defconfig new file mode 100644 index 00000000..ca418bed --- /dev/null +++ b/configs/beaglebone_defconfig @@ -0,0 +1,55 @@ +# Architecture +BR2_arm=y +BR2_cortex_a8=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# System +BR2_GLOBAL_PATCH_DIR="board/beagleboard/beaglebone/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y + +# Image +BR2_ROOTFS_POST_BUILD_SCRIPT="board/beagleboard/beaglebone/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/beagleboard/beaglebone/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,beagleboard,linux,6.6.32-ti-arm32-r7)/linux-6.6.32-ti-arm32-r7.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="bb.org" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="ti/omap/am335x-evm ti/omap/am335x-bone ti/omap/am335x-boneblack ti/omap/am335x-bonegreen ti/omap/am335x-evmsk ti/omap/am335x-boneblue ti/omap/am335x-boneblack-wireless ti/omap/am335x-bonegreen-wireless" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am335x_evm" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="MLO" + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Enable compressed kernel module support +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_KMOD_TOOLS=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_KMOD=y +BR2_PACKAGE_HOST_KMOD_XZ=y diff --git a/configs/beaglebone_qt5_defconfig b/configs/beaglebone_qt5_defconfig new file mode 100644 index 00000000..4121065e --- /dev/null +++ b/configs/beaglebone_qt5_defconfig @@ -0,0 +1,46 @@ +BR2_arm=y +BR2_cortex_a8=y +BR2_GLOBAL_PATCH_DIR="board/beagleboard/beaglebone-qt5/patches" +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_ROOTFS_OVERLAY="board/beagleboard/beaglebone/rootfs_overlay" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/beagleboard/beaglebone/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/beagleboard/beaglebone/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,beagleboard,linux,4.19.94-ti-r72)/linux-4.19.94-ti-r72.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="omap2plus" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/beagleboard/beaglebone/linux-sgx.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="am335x-evm am335x-bone am335x-boneblack am335x-bonegreen am335x-evmsk am335x-boneblue am335x-boneblack-wireless am335x-bonegreen-wireless" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_FBV=y +BR2_PACKAGE_QT5=y +BR2_PACKAGE_QT5BASE_EXAMPLES=y +BR2_PACKAGE_QT5BASE_EGLFS=y +BR2_PACKAGE_QT5BASE_DEFAULT_QPA="eglfs" +BR2_PACKAGE_QT5QUICKCONTROLS=y +BR2_PACKAGE_TI_SGX_DEMOS=y +BR2_PACKAGE_TI_SGX_KM=y +BR2_PACKAGE_TI_SGX_UM=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="250M" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am335x_evm" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="MLO" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/beagleboneai64_defconfig b/configs/beagleboneai64_defconfig new file mode 100644 index 00000000..d4ba61cf --- /dev/null +++ b/configs/beagleboneai64_defconfig @@ -0,0 +1,50 @@ +BR2_aarch64=y +BR2_cortex_a72=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/beagleboard/beagleboneai64/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/beagleboard/beagleboneai64/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/beagleboard/beagleboneai64/genimage.cfg" +BR2_SYSTEM_DHCP="eth0" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.30" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="ti/k3-j721e-beagleboneai64" +BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="256M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.10" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="k3" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_TARGET_BOARD="generic" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y +BR2_TARGET_OPTEE_OS=y +BR2_TARGET_OPTEE_OS_PLATFORM="k3-j721e" +BR2_TARGET_TI_K3_BOOT_FIRMWARE=y +BR2_TARGET_TI_K3_R5_LOADER=y +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION=y +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_TI_K3_R5_LOADER_BOARD_DEFCONFIG="j721e_beagleboneai64_r5" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="j721e_beagleboneai64_a72" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_USE_BINMAN=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="tispl.bin_unsigned" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="TEE=$(BINARIES_DIR)/tee-pager_v2.bin" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/beagleboneai_defconfig b/configs/beagleboneai_defconfig new file mode 100644 index 00000000..9c5c3d16 --- /dev/null +++ b/configs/beagleboneai_defconfig @@ -0,0 +1,31 @@ +BR2_arm=y +BR2_cortex_a15=y +BR2_GLOBAL_PATCH_DIR="board/beagleboard/beagleboneai/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/beagleboard/beagleboneai/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/beagleboard/beagleboneai/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.217" +BR2_LINUX_KERNEL_DEFCONFIG="omap2plus" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="am5729-beagleboneai" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.04" +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_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/configs/beagleplay_defconfig b/configs/beagleplay_defconfig new file mode 100644 index 00000000..19b12825 --- /dev/null +++ b/configs/beagleplay_defconfig @@ -0,0 +1,55 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_9=y +BR2_GLOBAL_PATCH_DIR="board/beagleboard/beagleplay/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/beagleboard/beagleplay/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS="-c board/beagleboard/beagleplay/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.9" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="ti/k3-am625-beagleplay" +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_TI_WL18XX=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_WILC3000_FIRMWARE=y +BR2_PACKAGE_WILINK_BT_FIRMWARE=y +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="256M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.10" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="k3" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_TARGET_BOARD="lite" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y +BR2_TARGET_OPTEE_OS=y +BR2_TARGET_OPTEE_OS_PLATFORM="k3-am62x" +BR2_TARGET_TI_K3_R5_LOADER=y +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION=y +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_TI_K3_R5_LOADER_BOARD_DEFCONFIG="am62x_beagleplay_r5" +BR2_TARGET_TI_K3_R5_LOADER_TIBOOT3_BIN="tiboot3-am62x-gp-evm.bin" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am62x_beagleplay_a53" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_USE_BINMAN=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="u-boot.img_unsigned" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="tispl.bin_unsigned" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="TEE=$(BINARIES_DIR)/tee-pager_v2.bin" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/beaglev_fire_defconfig b/configs/beaglev_fire_defconfig new file mode 100644 index 00000000..5e1faf41 --- /dev/null +++ b/configs/beaglev_fire_defconfig @@ -0,0 +1,33 @@ +BR2_riscv=y +BR2_RISCV_ISA_RVC=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/beagleboard/beaglev_fire/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_OVERLAY="board/beagleboard/beaglev_fire/rootfs-overlay/" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/beagleboard/beaglev_fire/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4microchip,linux,linux4microchip+fpga-2024.06)/linux-linux4microchip+fpga-2024.06.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="mpfs" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="microchip/mpfs-beaglev-fire" +BR2_PACKAGE_MTD=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_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4microchip,u-boot-mchp,linux4microchip+fpga-2024.06)/uboot-linux4microchip+fpga-2024.06.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="beaglev_fire" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/beagleboard/beaglev_fire/uboot-fragment.config" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MICROCHIP_HSS_PAYLOAD_GENERATOR=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/beagleboard/beaglev_fire/boot.cmd" diff --git a/configs/beelink_gs1_defconfig b/configs/beelink_gs1_defconfig new file mode 100644 index 00000000..d4682d6b --- /dev/null +++ b/configs/beelink_gs1_defconfig @@ -0,0 +1,45 @@ +# Architecture +BR2_aarch64=y +BR2_ARM_FPU_VFPV4=y +BR2_TARGET_GENERIC_ISSUE="Welcome to Beelink GS1" +# MDEV is required to autoload the ethernet driver module +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/beelink/gs1/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/beelink/gs1/genimage.cfg" + +# Kernel Linux headers same as kernel, 5.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-h6-beelink-gs1" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.5" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50i_h6" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.10" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="beelink_gs1" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/broadcom_northstar_defconfig b/configs/broadcom_northstar_defconfig new file mode 100644 index 00000000..bbd368ac --- /dev/null +++ b/configs/broadcom_northstar_defconfig @@ -0,0 +1,17 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/broadcom/northstar/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.9" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/broadcom/northstar/linux.config" +BR2_LINUX_KERNEL_APPENDED_ZIMAGE=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm4708-smartrg-sr400ac broadcom/bcm47094-luxul-xwr-3150-v1" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_SUBSIZE=2048 +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f000 +BR2_PACKAGE_HOST_FIRMWARE_UTILS=y +BR2_PACKAGE_HOST_LZMA_ALONE=y diff --git a/configs/canaan_kd233_defconfig b/configs/canaan_kd233_defconfig new file mode 100644 index 00000000..832f8363 --- /dev/null +++ b/configs/canaan_kd233_defconfig @@ -0,0 +1,37 @@ +# Architecture +BR2_riscv=y +BR2_RISCV_64=y +BR2_riscv_custom=y +BR2_RISCV_ISA_RVM=y +BR2_RISCV_ISA_RVA=y +BR2_RISCV_ISA_RVF=y +BR2_RISCV_ISA_RVD=y +BR2_RISCV_ISA_RVC=y +# BR2_RISCV_USE_MMU is not set +BR2_RISCV_ABI_LP64D=y + +# Linux headers same as kernel, a 5.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_19=y + +# Binary format +BR2_BINFMT_FLAT=y +# BR2_TARGET_ENABLE_ROOT_LOGIN is not set + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.19" +BR2_LINUX_KERNEL_DEFCONFIG="nommu_k210" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/canaan/kd233/linux-cpio.config" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +BR2_LINUX_KERNEL_IMAGE_NAME="loader.bin" + +# Packages +BR2_PACKAGE_HOST_PYTHON_KFLASH=y +BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="board/canaan/k210-soc/busybox-tiny.config" +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set + +# Filesystem +BR2_INIT_NONE=y +BR2_TARGET_ROOTFS_INITRAMFS=y +BR2_ROOTFS_OVERLAY="board/canaan/k210-soc/rootfs_overlay" diff --git a/configs/chromebook_elm_defconfig b/configs/chromebook_elm_defconfig new file mode 100644 index 00000000..0e8b6287 --- /dev/null +++ b/configs/chromebook_elm_defconfig @@ -0,0 +1,41 @@ +# Architecture +BR2_aarch64=y +BR2_cortex_a72_a53=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Linux headers same as kernel (5.10 series) +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10" + +# Build Kernel with a Custom config. +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/chromebook/elm/linux.config" + +# DTS support +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="mediatek/mt8173-elm" + +# Package Firmware for WiFi chip. +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8797=y + +# Scripts to generate final images. +BR2_ROOTFS_POST_BUILD_SCRIPT="board/chromebook/elm/sign.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/chromebook/mksd.sh" + +# Supporting host tools to build / sign FIT Image. +BR2_PACKAGE_HOST_PARTED=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y +BR2_PACKAGE_HOST_VBOOT_UTILS=y + +# Misc +BR2_GLOBAL_PATCH_DIR="board/chromebook/elm/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y diff --git a/configs/chromebook_snow_defconfig b/configs/chromebook_snow_defconfig new file mode 100644 index 00000000..9a5bcce9 --- /dev/null +++ b/configs/chromebook_snow_defconfig @@ -0,0 +1,24 @@ +BR2_arm=y +BR2_cortex_a15=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y +BR2_GLOBAL_PATCH_DIR="board/chromebook/snow/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_TARGET_GENERIC_GETTY_PORT="tty1" +BR2_TARGET_GENERIC_GETTY_TERM="linux" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/chromebook/snow/sign.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/chromebook/mksd.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15" +BR2_LINUX_KERNEL_DEFCONFIG="exynos" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/chromebook/snow/linux-4.15.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="exynos5250-snow" +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8797=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_PARTED=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y +BR2_PACKAGE_HOST_VBOOT_UTILS=y diff --git a/configs/ci20_defconfig b/configs/ci20_defconfig new file mode 100644 index 00000000..4b3c7421 --- /dev/null +++ b/configs/ci20_defconfig @@ -0,0 +1,39 @@ +# architecture +BR2_mipsel=y +BR2_mips_xburst=y +# BR2_MIPS_SOFT_FLOAT is not set +BR2_KERNEL_HEADERS_AS_KERNEL=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttyS4" +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/ci20/genimage.cfg" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.81" +BR2_LINUX_KERNEL_DEFCONFIG="ci20" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# u-boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="ci20_mmc" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/u-boot-spl.bin" +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE="board/ci20/uboot-env.txt" +BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE="32768" + +# host +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/cubieboard1_defconfig b/configs/cubieboard1_defconfig new file mode 100644 index 00000000..d51f2ab7 --- /dev/null +++ b/configs/cubieboard1_defconfig @@ -0,0 +1,42 @@ +# Target +BR2_arm=y +BR2_cortex_a8=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_8=y + +# Build options +BR2_GLOBAL_PATCH_DIR="board/cubietech/cubieboard1/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System configuration +BR2_ROOTFS_OVERLAY="board/cubietech/cubieboard1/rootfs_overlay" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/cubietech/cubieboard1/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.12" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun4i-a10-cubieboard" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem images +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="Cubieboard" +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" + +# Host utilities +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/cubieboard2_defconfig b/configs/cubieboard2_defconfig new file mode 100644 index 00000000..18337fac --- /dev/null +++ b/configs/cubieboard2_defconfig @@ -0,0 +1,42 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 5.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.11" +BR2_LINUX_KERNEL_DEFCONFIG="multi_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun7i-a20-cubieboard2" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.10" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="Cubieboard2" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/cubietech/cubieboard2/boot.cmd" + +# System +BR2_TARGET_GENERIC_HOSTNAME="Cubieboard2" +BR2_TARGET_GENERIC_ISSUE="Welcome to Cubieboard2!" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/cubietech/cubieboard2/post-image.sh" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/engicam_imx6qdl_icore_defconfig b/configs/engicam_imx6qdl_icore_defconfig new file mode 100644 index 00000000..d8a51c7a --- /dev/null +++ b/configs/engicam_imx6qdl_icore_defconfig @@ -0,0 +1,43 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 5.0 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx6qdl_icore_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.0" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x10008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-icore imx6q-icore imx6q-icore-ofcap10 imx6q-icore-ofcap12" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Engicam i.CoreM6 Quad/Dual/DualLite/Solo" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/engicam/icorem6/genimage.cfg" diff --git a/configs/engicam_imx6qdl_icore_qt5_defconfig b/configs/engicam_imx6qdl_icore_qt5_defconfig new file mode 100644 index 00000000..6d3a344b --- /dev/null +++ b/configs/engicam_imx6qdl_icore_qt5_defconfig @@ -0,0 +1,80 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 4.13 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3" +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx6qdl_icore_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x10008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-icore imx6q-icore imx6q-icore-ofcap10 imx6q-icore-ofcap12" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/engicam/icorem6/linux_qt5.fragment" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Engicam i.CoreM6 Quad/Dual/DualLite/Solo" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/engicam/icorem6/genimage.cfg" +BR2_ROOTFS_OVERLAY="board/engicam/icorem6/rootfs_overlay" + +# qt5 dependencies +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# qt5 +BR2_PACKAGE_QT5=y +BR2_PACKAGE_QT5BASE_OPENGL_LIB=y +BR2_PACKAGE_QT5BASE_LINUXFB=y +BR2_PACKAGE_QT5BASE_FONTCONFIG=y +BR2_PACKAGE_QT5BASE_GIF=y +BR2_PACKAGE_QT5BASE_JPEG=y + +# mesa3d +BR2_PACKAGE_MESA3D=y +BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV=y +BR2_PACKAGE_MESA3D_OPENGL_ES=y +BR2_PACKAGE_MESA3D_OPENGL_EGL=y + +# qt5 demo packages +BR2_PACKAGE_GLMARK2=y +BR2_PACKAGE_MESA3D_DEMOS=y +BR2_PACKAGE_KMSCUBE=y +BR2_PACKAGE_QT5CINEX=y +BR2_PACKAGE_QT5CINEX_HD=y + +# fonts +BR2_PACKAGE_BITSTREAM_VERA=y +BR2_PACKAGE_CANTARELL=y +BR2_PACKAGE_DEJAVU=y +BR2_PACKAGE_FONT_AWESOME=y +BR2_PACKAGE_GHOSTSCRIPT_FONTS=y +BR2_PACKAGE_INCONSOLATA=y +BR2_PACKAGE_LIBERATION=y diff --git a/configs/engicam_imx6qdl_icore_rqs_defconfig b/configs/engicam_imx6qdl_icore_rqs_defconfig new file mode 100644 index 00000000..45ed67be --- /dev/null +++ b/configs/engicam_imx6qdl_icore_rqs_defconfig @@ -0,0 +1,43 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 5.0 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx6qdl_icore_rqs" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.0" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x10008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-icore-rqs imx6q-icore-rqs" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Engicam i.CoreM6 Quad/Dual/DualLite/Solo RQS Starter Kit" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/engicam/icorem6_rqs/genimage.cfg" diff --git a/configs/engicam_imx6ul_geam_defconfig b/configs/engicam_imx6ul_geam_defconfig new file mode 100644 index 00000000..aac8432e --- /dev/null +++ b/configs/engicam_imx6ul_geam_defconfig @@ -0,0 +1,43 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.07-rc1" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx6ul_geam_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.5" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x80008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6ul-geam-kit" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Engicam GEAM6UL Starter Kit" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/engicam/geam6ul/genimage.cfg" diff --git a/configs/engicam_imx6ul_isiot_defconfig b/configs/engicam_imx6ul_isiot_defconfig new file mode 100644 index 00000000..57a66dea --- /dev/null +++ b/configs/engicam_imx6ul_isiot_defconfig @@ -0,0 +1,43 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 5.0 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx6ul_isiot_emmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.0" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x80008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6ul-isiot-emmc" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Engicam Is.IoT eMMC Starter Kit" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/engicam/isiot/genimage.cfg" diff --git a/configs/freescale_imx28evk_defconfig b/configs/freescale_imx28evk_defconfig new file mode 100644 index 00000000..24b95eef --- /dev/null +++ b/configs/freescale_imx28evk_defconfig @@ -0,0 +1,34 @@ +# architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=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="6.6.26" +BR2_LINUX_KERNEL_DEFCONFIG="mxs" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="nxp/mxs/imx28-evk" + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx28evk" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_UBOOT_FORMAT_SD=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=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/configs/freescale_imx6dlsabreauto_defconfig b/configs/freescale_imx6dlsabreauto_defconfig new file mode 100644 index 00000000..0a60d1b6 --- /dev/null +++ b/configs/freescale_imx6dlsabreauto_defconfig @@ -0,0 +1,44 @@ +# 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" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,linux-imx,lf-6.6.23-2.0.0)/linux-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="nxp/imx/imx6dl-sabreauto" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=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 microSD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6dlsabreauto" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.6.23-2.0.0)/uboot-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y diff --git a/configs/freescale_imx6dlsabresd_defconfig b/configs/freescale_imx6dlsabresd_defconfig new file mode 100644 index 00000000..49a3ea84 --- /dev/null +++ b/configs/freescale_imx6dlsabresd_defconfig @@ -0,0 +1,43 @@ +# architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/freescale/imx6sabre/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,linux-imx,lf-6.6.23-2.0.0)/linux-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="nxp/imx/imx6dl-sabresd" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# 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_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.6.23-2.0.0)/uboot-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y diff --git a/configs/freescale_imx6qsabreauto_defconfig b/configs/freescale_imx6qsabreauto_defconfig new file mode 100644 index 00000000..8ae57fc7 --- /dev/null +++ b/configs/freescale_imx6qsabreauto_defconfig @@ -0,0 +1,44 @@ +# 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" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,linux-imx,lf-6.6.23-2.0.0)/linux-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="nxp/imx/imx6q-sabreauto" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=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 microSD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6qsabreauto" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.6.23-2.0.0)/uboot-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y diff --git a/configs/freescale_imx6qsabresd_defconfig b/configs/freescale_imx6qsabresd_defconfig new file mode 100644 index 00000000..09829c20 --- /dev/null +++ b/configs/freescale_imx6qsabresd_defconfig @@ -0,0 +1,44 @@ +# 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" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,linux-imx,lf-6.6.23-2.0.0)/linux-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="nxp/imx/imx6q-sabresd" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=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 microSD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6qsabresd" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.6.23-2.0.0)/uboot-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y diff --git a/configs/freescale_imx6sxsabresd_defconfig b/configs/freescale_imx6sxsabresd_defconfig new file mode 100644 index 00000000..5beef977 --- /dev/null +++ b/configs/freescale_imx6sxsabresd_defconfig @@ -0,0 +1,43 @@ +# architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/freescale/imx6sabre/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,linux-imx,lf-6.6.23-2.0.0)/linux-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="nxp/imx/imx6sx-sdb" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# 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_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.6.23-2.0.0)/uboot-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y diff --git a/configs/freescale_imx6ullevk_defconfig b/configs/freescale_imx6ullevk_defconfig new file mode 100644 index 00000000..e29a9898 --- /dev/null +++ b/configs/freescale_imx6ullevk_defconfig @@ -0,0 +1,31 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/freescale/imx6ullevk/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,linux-imx,lf-6.6.23-2.0.0)/linux-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/freescale/imx6ullevk/linux_sdma.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="nxp/imx/imx6ull-14x14-evk" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6UL=y +BR2_PACKAGE_FIRMWARE_IMX=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6ull_14x14_evk" +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.6.23-2.0.0)/uboot-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/freescale_imx7dsabresd_defconfig b/configs/freescale_imx7dsabresd_defconfig new file mode 100644 index 00000000..1b2412ad --- /dev/null +++ b/configs/freescale_imx7dsabresd_defconfig @@ -0,0 +1,41 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/freescale/imx7dsdb/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,linux-imx,lf-6.6.23-2.0.0)/linux-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="nxp/imx/imx7d-sdb" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx7dsabresd" +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.6.23-2.0.0)/uboot-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y + +# required tools to create the microSD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" diff --git a/configs/freescale_imx8dxlevk_defconfig b/configs/freescale_imx8dxlevk_defconfig new file mode 100644 index 00000000..1ee1413e --- /dev/null +++ b/configs/freescale_imx8dxlevk_defconfig @@ -0,0 +1,42 @@ +BR2_aarch64=y +BR2_cortex_a35=y +BR2_ARM_FPU_VFPV3=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/freescale/imx8dxlevk/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyLP0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/imx8-bootloader-prepare.sh board/freescale/common/imx/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="${UBOOT_DIR}/arch/arm/dts/fsl-imx8dxl-evk.dtb" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,linux-imx,lf-6.6.23-2.0.0)/linux-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v8" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8dxl-evk" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8DXL=y +BR2_PACKAGE_FIRMWARE_IMX=y +BR2_PACKAGE_IMX_SC_FIRMWARE=y +BR2_PACKAGE_IMX_SECO=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,imx-atf,lf-6.6.23-2.0.0)/imx-atf-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8dxl" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.6.23-2.0.0)/uboot-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx8dxl_evk" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_IMX_MKIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y diff --git a/configs/freescale_imx8mmevk_defconfig b/configs/freescale_imx8mmevk_defconfig new file mode 100644 index 00000000..335030fc --- /dev/null +++ b/configs/freescale_imx8mmevk_defconfig @@ -0,0 +1,43 @@ +BR2_aarch64=y +BR2_ARM_FPU_VFPV3=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/freescale/imx8mmevk/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/imx8-bootloader-prepare.sh board/freescale/common/imx/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="${UBOOT_DIR}/arch/arm/dts/imx8mm-evk.dtb" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,linux-imx,lf-6.6.23-2.0.0)/linux-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v8" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mm-evk freescale/imx8mm-evk-revb-qca-wifi" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM=y +BR2_PACKAGE_FIRMWARE_IMX=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,imx-atf,lf-6.6.23-2.0.0)/imx-atf-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mm" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.6.23-2.0.0)/uboot-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx8mm_evk" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" +BR2_TARGET_UBOOT_SPL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_IMX_MKIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y diff --git a/configs/freescale_imx8mnevk_defconfig b/configs/freescale_imx8mnevk_defconfig new file mode 100644 index 00000000..fc601dd5 --- /dev/null +++ b/configs/freescale_imx8mnevk_defconfig @@ -0,0 +1,43 @@ +BR2_aarch64=y +BR2_ARM_FPU_VFPV3=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/freescale/imx8mnevk/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/imx8-bootloader-prepare.sh board/freescale/common/imx/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="${UBOOT_DIR}/arch/arm/dts/imx8mn-ddr4-evk.dtb" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,linux-imx,lf-6.6.23-2.0.0)/linux-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v8" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mn-ddr4-evk" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN=y +BR2_PACKAGE_FIRMWARE_IMX=y +BR2_PACKAGE_FIRMWARE_IMX_DDR4=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,imx-atf,lf-6.6.23-2.0.0)/imx-atf-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mn" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.6.23-2.0.0)/uboot-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx8mn_ddr4_evk" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" +BR2_TARGET_UBOOT_SPL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_IMX_MKIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y diff --git a/configs/freescale_imx8mpevk_defconfig b/configs/freescale_imx8mpevk_defconfig new file mode 100644 index 00000000..0ced252c --- /dev/null +++ b/configs/freescale_imx8mpevk_defconfig @@ -0,0 +1,45 @@ +BR2_aarch64=y +BR2_ARM_FPU_VFPV3=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/freescale/imx8mpevk/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/imx8-bootloader-prepare.sh board/freescale/common/imx/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="${UBOOT_DIR}/arch/arm/dts/imx8mp-evk.dtb" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,linux-imx,lf-6.6.23-2.0.0)/linux-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v8" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mp-evk" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP=y +BR2_PACKAGE_FIRMWARE_IMX=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,imx-atf,lf-6.6.23-2.0.0)/imx-atf-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mp" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.6.23-2.0.0)/uboot-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx8mp_evk" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/freescale/imx8mpevk/uboot-fragment.config" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_UTIL_LINUX=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" +BR2_TARGET_UBOOT_SPL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_IMX_MKIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y diff --git a/configs/freescale_imx8mqevk_defconfig b/configs/freescale_imx8mqevk_defconfig new file mode 100644 index 00000000..50fcaeff --- /dev/null +++ b/configs/freescale_imx8mqevk_defconfig @@ -0,0 +1,43 @@ +BR2_aarch64=y +BR2_ARM_FPU_VFPV3=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/freescale/imx8mqevk/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/imx8-bootloader-prepare.sh board/freescale/common/imx/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="${UBOOT_DIR}/arch/arm/dts/imx8mq-evk.dtb" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,linux-imx,lf-6.6.23-2.0.0)/linux-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v8" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mq-evk" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M=y +BR2_PACKAGE_FIRMWARE_IMX=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,imx-atf,lf-6.6.23-2.0.0)/imx-atf-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mq" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.6.23-2.0.0)/uboot-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx8mq_evk" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" +BR2_TARGET_UBOOT_SPL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_IMX_MKIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y diff --git a/configs/freescale_imx8qmmek_defconfig b/configs/freescale_imx8qmmek_defconfig new file mode 100644 index 00000000..6fb3a54d --- /dev/null +++ b/configs/freescale_imx8qmmek_defconfig @@ -0,0 +1,40 @@ +BR2_aarch64=y +BR2_ARM_FPU_VFPV4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/freescale/imx8qmmek/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/imx8-bootloader-prepare.sh board/freescale/common/imx/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="${UBOOT_DIR}/arch/arm/dts/fsl-imx8qm-mek.dtb" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,linux-imx,lf-6.6.23-2.0.0)/linux-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v8" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8qm-mek" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8=y +BR2_PACKAGE_FIRMWARE_IMX=y +BR2_PACKAGE_IMX_SC_FIRMWARE=y +BR2_PACKAGE_IMX_SECO=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,imx-atf,lf-6.6.23-2.0.0)/imx-atf-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8qm" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.6.23-2.0.0)/uboot-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx8qm_mek" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_IMX_MKIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y diff --git a/configs/freescale_imx8qxpmek_defconfig b/configs/freescale_imx8qxpmek_defconfig new file mode 100644 index 00000000..3ff476e9 --- /dev/null +++ b/configs/freescale_imx8qxpmek_defconfig @@ -0,0 +1,42 @@ +BR2_aarch64=y +BR2_cortex_a35=y +BR2_ARM_FPU_VFPV3=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/freescale/imx8qxpmek/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyLP0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/imx8-bootloader-prepare.sh board/freescale/common/imx/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="${UBOOT_DIR}/arch/arm/dts/fsl-imx8qxp-mek.dtb" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,linux-imx,lf-6.6.23-2.0.0)/linux-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v8" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8qxp-mek" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X=y +BR2_PACKAGE_FIRMWARE_IMX=y +BR2_PACKAGE_IMX_SC_FIRMWARE=y +BR2_PACKAGE_IMX_SECO=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,imx-atf,lf-6.6.23-2.0.0)/imx-atf-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8qx" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.6.23-2.0.0)/uboot-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx8qxp_mek" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_IMX_MKIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y diff --git a/configs/freescale_imx93evk_defconfig b/configs/freescale_imx93evk_defconfig new file mode 100644 index 00000000..b244ba96 --- /dev/null +++ b/configs/freescale_imx93evk_defconfig @@ -0,0 +1,41 @@ +BR2_aarch64=y +BR2_cortex_a55=y +BR2_ARM_FPU_VFPV4D16=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/freescale/imx93evk/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyLP0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/imx9-bootloader-prepare.sh board/freescale/common/imx/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,linux-imx,lf-6.6.23-2.0.0)/linux-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v8" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx93-11x11-evk" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93=y +BR2_PACKAGE_FIRMWARE_ELE_IMX=y +BR2_PACKAGE_FIRMWARE_IMX=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,imx-atf,lf-6.6.23-2.0.0)/imx-atf-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx93" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.6.23-2.0.0)/uboot-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx93_11x11_evk" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y +BR2_TARGET_UBOOT_SPL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_IMX_MKIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/configs/freescale_p1025twr_defconfig b/configs/freescale_p1025twr_defconfig new file mode 100644 index 00000000..f476d927 --- /dev/null +++ b/configs/freescale_p1025twr_defconfig @@ -0,0 +1,24 @@ +# Architecture +BR2_powerpc=y +BR2_powerpc_8548=y + +# Linux headers same as kernel, a 4.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15.7" +BR2_LINUX_KERNEL_DEFCONFIG="mpc85xx_smp" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="fsl/p1025twr" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_GZIP=y +BR2_TARGET_ROOTFS_CPIO_UIMAGE=y +# BR2_TARGET_ROOTFS_TAR is not set diff --git a/configs/freescale_t1040d4rdb_defconfig b/configs/freescale_t1040d4rdb_defconfig new file mode 100644 index 00000000..df44046e --- /dev/null +++ b/configs/freescale_t1040d4rdb_defconfig @@ -0,0 +1,24 @@ +# Architecture +BR2_powerpc64=y +BR2_powerpc_e5500=y + +# Linux headers same as kernel, a 4.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15.7" +BR2_LINUX_KERNEL_DEFCONFIG="corenet64_smp" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="fsl/t1040d4rdb" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_GZIP=y +BR2_TARGET_ROOTFS_CPIO_UIMAGE=y +# BR2_TARGET_ROOTFS_TAR is not set diff --git a/configs/freescale_t2080_qds_rdb_defconfig b/configs/freescale_t2080_qds_rdb_defconfig new file mode 100644 index 00000000..3d03c32f --- /dev/null +++ b/configs/freescale_t2080_qds_rdb_defconfig @@ -0,0 +1,25 @@ +# Architecture +BR2_powerpc64=y +BR2_powerpc_e6500=y + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_17=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.17.14" +BR2_LINUX_KERNEL_DEFCONFIG="corenet64_smp" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="fsl/t2080qds fsl/t2080rdb" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_GZIP=y +BR2_TARGET_ROOTFS_CPIO_UIMAGE=y +# BR2_TARGET_ROOTFS_TAR is not set + diff --git a/configs/friendlyarm_nanopi_r2s_defconfig b/configs/friendlyarm_nanopi_r2s_defconfig new file mode 100644 index 00000000..284b28ec --- /dev/null +++ b/configs/friendlyarm_nanopi_r2s_defconfig @@ -0,0 +1,42 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_16=y +BR2_TARGET_GENERIC_HOSTNAME="rk3328-nanopi-r2s" +BR2_TARGET_GENERIC_ISSUE="Welcome to Nanopi R2S RK3328" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/friendlyarm/nanopi-r2s/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/friendlyarm/nanopi-r2s/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.16" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="rockchip/rk3328-nanopi-r2s" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.5" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="rk3328" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_IMAGES="" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_ARM32_TOOLCHAIN=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.10" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nanopi-r2s-rk3328" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31_ELF=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="idbloader.img" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/configs/galileo_defconfig b/configs/galileo_defconfig new file mode 100644 index 00000000..29110677 --- /dev/null +++ b/configs/galileo_defconfig @@ -0,0 +1,23 @@ +BR2_x86_x1000=y +BR2_GLOBAL_PATCH_DIR="board/intel/galileo/patches" +# Linux headers same as kernel, a 3.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_14=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS1" +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_ROOTFS_OVERLAY="board/intel/galileo/rootfs_overlay" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/intel/galileo/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/intel/galileo/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,mdr78,Linux-x1000,8b3c9d8ce1656a26b1097d9091d53bfb39fef640)/linux-8b3c9d8ce1656a26b1097d9091d53bfb39fef640.tar.gz" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/intel/galileo/linux-3.14.config" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_GRUB2=y +BR2_TARGET_GRUB2_I386_EFI=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/globalscale_espressobin_defconfig b/configs/globalscale_espressobin_defconfig new file mode 100644 index 00000000..8d44b25a --- /dev/null +++ b/configs/globalscale_espressobin_defconfig @@ -0,0 +1,27 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 5.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.1" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/globalscale/espressobin/linux-extras.config" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="marvell/armada-3720-espressobin marvell/armada-3720-espressobin-emmc marvell/armada-3720-espressobin-v7 marvell/armada-3720-espressobin-v7-emmc marvell/armada-3720-espressobin-ultra" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Marvell ESPRESSObin" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_ROOTFS_TAR_GZIP=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/globalscale/espressobin/genimage.cfg" diff --git a/configs/grinn_chiliboard_defconfig b/configs/grinn_chiliboard_defconfig new file mode 100644 index 00000000..a5a8f7a6 --- /dev/null +++ b/configs/grinn_chiliboard_defconfig @@ -0,0 +1,29 @@ +BR2_arm=y +BR2_cortex_a8=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/grinn/chiliboard/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.4" +BR2_LINUX_KERNEL_DEFCONFIG="omap2plus" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="am335x-chiliboard" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="chiliboard" +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="spl/u-boot-spl.bin" +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/configs/grinn_liteboard_defconfig b/configs/grinn_liteboard_defconfig new file mode 100644 index 00000000..3ae4a2a0 --- /dev/null +++ b/configs/grinn_liteboard_defconfig @@ -0,0 +1,27 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/grinn/liteboard/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.4" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6ul-liteboard" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="liteboard" +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +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/configs/hifive_unleashed_defconfig b/configs/hifive_unleashed_defconfig new file mode 100644 index 00000000..1aa06f59 --- /dev/null +++ b/configs/hifive_unleashed_defconfig @@ -0,0 +1,61 @@ +# Architecture +BR2_riscv=y +BR2_riscv_custom=y +BR2_RISCV_ISA_RVM=y +BR2_RISCV_ISA_RVA=y +BR2_RISCV_ISA_RVF=y +BR2_RISCV_ISA_RVD=y +BR2_RISCV_ISA_RVC=y +BR2_RISCV_64=y +BR2_RISCV_ABI_LP64D=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttySIF0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/sifive/hifive-unleashed/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/sifive/hifive-unleashed/genimage_sdcard.cfg" + +# Filesystem +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Linux headers same as kernel, a 5.10 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.190" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/sifive/hifive-unleashed/linux.config.fragment" +BR2_LINUX_KERNEL_IMAGE=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sifive/hifive-unleashed-a00" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Bootloader +BR2_TARGET_OPENSBI=y +BR2_TARGET_OPENSBI_CUSTOM_VERSION=y +BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE="1.2" +BR2_TARGET_OPENSBI_PLAT="generic" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.04" +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sifive_unleashed" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSBI=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y + +# Host tools +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/sifive/hifive-unleashed/boot.cmd" diff --git a/configs/icnova-a20-adb4006_defconfig b/configs/icnova-a20-adb4006_defconfig new file mode 100644 index 00000000..ba529c8d --- /dev/null +++ b/configs/icnova-a20-adb4006_defconfig @@ -0,0 +1,48 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 6.6 LTS series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="ICnova A20 ADB4006" +BR2_TARGET_GENERIC_ISSUE="Welcome to ICnova A20 ADB4006!" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/in-circuit/icnova-a20-adb4006/genimage.cfg" +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.14" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/in-circuit/icnova-a20-adb4006/linux.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun7i-a20-icnova-a20-adb4006" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="128M" + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="icnova-a20-adb4006" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/in-circuit/icnova-a20-adb4006/boot.cmd" diff --git a/configs/imx23evk_defconfig b/configs/imx23evk_defconfig new file mode 100644 index 00000000..b54af418 --- /dev/null +++ b/configs/imx23evk_defconfig @@ -0,0 +1,34 @@ +# architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=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="6.6.21" +BR2_LINUX_KERNEL_DEFCONFIG="mxs" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="nxp/mxs/imx23-evk" + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx23evk" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_UBOOT_FORMAT_SD=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=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/configs/imx6-sabreauto_defconfig b/configs/imx6-sabreauto_defconfig new file mode 100644 index 00000000..24b3fd38 --- /dev/null +++ b/configs/imx6-sabreauto_defconfig @@ -0,0 +1,41 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 5.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3" + +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6sabreauto" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.10" +BR2_TARGET_UBOOT_NEEDS_LZOP=y +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.1" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-sabreauto imx6dl-sabreauto imx6qp-sabreauto" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/configs/imx6-sabresd_defconfig b/configs/imx6-sabresd_defconfig new file mode 100644 index 00000000..d38478a6 --- /dev/null +++ b/configs/imx6-sabresd_defconfig @@ -0,0 +1,40 @@ +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 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6sabresd" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.28" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="nxp/imx/imx6q-sabresd nxp/imx/imx6dl-sabresd nxp/imx/imx6qp-sabresd" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/configs/imx6-sabresd_qt5_defconfig b/configs/imx6-sabresd_qt5_defconfig new file mode 100644 index 00000000..56470e27 --- /dev/null +++ b/configs/imx6-sabresd_qt5_defconfig @@ -0,0 +1,99 @@ +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 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Additional features needed for packages +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="320M" +BR2_ROOTFS_OVERLAY="board/freescale/imx6-sabresd/rootfs_overlay" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6sabresd" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.28" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="nxp/imx/imx6q-sabresd nxp/imx/imx6dl-sabresd nxp/imx/imx6qp-sabresd" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/freescale/imx6-sabresd/linux_qt5.fragment" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# GL driver +BR2_PACKAGE_MESA3D=y +BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV=y +BR2_PACKAGE_MESA3D_OPENGL_ES=y +BR2_PACKAGE_MESA3D_OPENGL_EGL=y + +# Fonts +BR2_PACKAGE_BITSTREAM_VERA=y +BR2_PACKAGE_CANTARELL=y +BR2_PACKAGE_DEJAVU=y +BR2_PACKAGE_FONT_AWESOME=y +BR2_PACKAGE_GHOSTSCRIPT_FONTS=y +BR2_PACKAGE_INCONSOLATA=y +BR2_PACKAGE_LIBERATION=y + +# GL demos +BR2_PACKAGE_GLMARK2=y +BR2_PACKAGE_KMSCUBE=y +BR2_PACKAGE_LIBV4L=y +BR2_PACKAGE_LIBV4L_UTILS=y +BR2_PACKAGE_MESA3D_DEMOS=y + +# Qt5 +BR2_PACKAGE_QT5=y +BR2_PACKAGE_QT5BASE_OPENGL_LIB=y +BR2_PACKAGE_QT5BASE_LINUXFB=y +BR2_PACKAGE_QT5BASE_FONTCONFIG=y +BR2_PACKAGE_QT5BASE_GIF=y +BR2_PACKAGE_QT5BASE_JPEG=y +BR2_PACKAGE_QT5CINEX=y +BR2_PACKAGE_QT5CINEX_HD=y + +# NXP firmware package +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q=y +BR2_PACKAGE_FIRMWARE_IMX=y + +# libdrm tests +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y + +# gstreamer-1.0 +BR2_PACKAGE_GSTREAMER1=y +BR2_PACKAGE_GST1_PLUGINS_GOOD=y +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2=y +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2_PROBE=y +BR2_PACKAGE_GST1_PLUGINS_BAD=y +BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOPARSERS=y +BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_KMS=y +BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOTESTSRC=y + +# For automatic kernel module loading +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y diff --git a/configs/imx6slevk_defconfig b/configs/imx6slevk_defconfig new file mode 100644 index 00000000..9448267e --- /dev/null +++ b/configs/imx6slevk_defconfig @@ -0,0 +1,27 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y +# Linux headers same as kernel, a 5.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6slevk" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.10" +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.11" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6sl-evk" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/imx6sx-sdb_defconfig b/configs/imx6sx-sdb_defconfig new file mode 100644 index 00000000..c36520a1 --- /dev/null +++ b/configs/imx6sx-sdb_defconfig @@ -0,0 +1,27 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y +# Linux headers same as kernel, a 5.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6sxsabresd" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.10" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.11" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6sx-sdb imx6sx-sdb-reva" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/imx6ulevk_defconfig b/configs/imx6ulevk_defconfig new file mode 100644 index 00000000..22b5a454 --- /dev/null +++ b/configs/imx6ulevk_defconfig @@ -0,0 +1,40 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 5.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.11" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6ul-14x14-evk" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6ul_14x14_evk" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.10" +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# filesystem / image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y diff --git a/configs/imx6ullevk_defconfig b/configs/imx6ullevk_defconfig new file mode 100644 index 00000000..662ef027 --- /dev/null +++ b/configs/imx6ullevk_defconfig @@ -0,0 +1,47 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.4" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="nxp/imx/imx6ull-14x14-evk" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6ull_14x14_evk" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.10" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMX=y + +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# filesystem / image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# NXP firmware package for SDMA Firmware +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6UL=y +BR2_PACKAGE_FIRMWARE_IMX=y + +# For automatic kernel module loading +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + diff --git a/configs/imx6ulpico_defconfig b/configs/imx6ulpico_defconfig new file mode 100644 index 00000000..e406d993 --- /dev/null +++ b/configs/imx6ulpico_defconfig @@ -0,0 +1,55 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 5.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc5" + +# rootfs overlay +BR2_ROOTFS_OVERLAY="board/technexion/imx6ulpico/rootfs_overlay" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.11" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6ul-pico-pi imx6ul-pico-hobbit imx6ul-pico-dwarf" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# wifi firmware for brcm4339 +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX=y + +# For automatic firmware loading +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y + +# wireless packages +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_TARGET_UBOOT_BOARDNAME="pico-imx6ul" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.10" +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y + +# required tools to create the eMMC image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# filesystem / image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y diff --git a/configs/imx6ulz_bsh_smm_m2_defconfig b/configs/imx6ulz_bsh_smm_m2_defconfig new file mode 100644 index 00000000..29177c47 --- /dev/null +++ b/configs/imx6ulz_bsh_smm_m2_defconfig @@ -0,0 +1,42 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV3=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y +BR2_GLOBAL_PATCH_DIR="board/bsh/imx6ulz-bsh-smm-m2/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/bsh/imx6ulz-bsh-smm-m2/post-build.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.68" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/bsh/imx6ulz-bsh-smm-m2/linux.config" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6ulz-bsh-smm-m2" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6UL=y +BR2_PACKAGE_FIRMWARE_IMX=y +BR2_PACKAGE_BLUEZ_TOOLS=y +BR2_PACKAGE_BLUEZ5_UTILS=y +BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y +BR2_PACKAGE_IW=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f000 +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.10" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx6ulz_smm_m2" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-with-spl.imx" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_E2FSPROGS=y +BR2_PACKAGE_HOST_ENVIRONMENT_SETUP=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/imx7d-sdb_defconfig b/configs/imx7d-sdb_defconfig new file mode 100644 index 00000000..e7f3df81 --- /dev/null +++ b/configs/imx7d-sdb_defconfig @@ -0,0 +1,38 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.21" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="nxp/imx/imx7d-sdb" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx7dsabresd" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.07" +BR2_TARGET_UBOOT_FORMAT_DTB_IMX=y + +# Filesystem +BR2_ROOTFS_OVERLAY="board/freescale/imx7dsdb/rootfs_overlay" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# 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/configs/imx7dpico_defconfig b/configs/imx7dpico_defconfig new file mode 100644 index 00000000..c6ea04b6 --- /dev/null +++ b/configs/imx7dpico_defconfig @@ -0,0 +1,50 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 5.13 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_13=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc4" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.13" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx7d-pico-pi" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_TARGET_UBOOT_BOARDNAME="pico-pi-imx7d" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.07" +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y + +# wifi firmware for brcm43439 +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX=y + +# For automatic firmware loading +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y + +# wireless packages +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y + +# required tools to create the eMMC image +BR2_PACKAGE_HOST_GENIMAGE=y + +# filesystem / image +BR2_ROOTFS_OVERLAY="board/technexion/imx7dpico/rootfs_overlay" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y diff --git a/configs/imx8mmpico_defconfig b/configs/imx8mmpico_defconfig new file mode 100644 index 00000000..d1836db6 --- /dev/null +++ b/configs/imx8mmpico_defconfig @@ -0,0 +1,41 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y +BR2_GLOBAL_PATCH_DIR="board/technexion/imx8mmpico/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/imx8-bootloader-prepare.sh board/freescale/common/imx/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="${UBOOT_DIR}/arch/arm/dts/imx8mm-pico-pi.dtb" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,TechNexion,linux-tn-imx,tn-mickledore_6.1.55-2.2.0_20240417)/linux-tn-imx-tn-mickledore_6.1.55-2.2.0_20240417.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="tn_imx8" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mm-pico-pi freescale/imx8mm-pico-pi-ili9881c" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM=y +BR2_PACKAGE_FIRMWARE_IMX=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,imx-atf,lf-6.1.55-2.2.0)/imx-atf-lf-6.1.55-2.2.0.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mm" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,TechNexion,u-boot-tn-imx,tn-mickledore_6.1.55-2.2.0_20240417)/u-boot-tn-imx-tn-mickledore_6.1.55-2.2.0_20240417.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="pico-imx8mm" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" +BR2_TARGET_UBOOT_SPL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_IMX_MKIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y diff --git a/configs/imx8mn_bsh_smm_s2_defconfig b/configs/imx8mn_bsh_smm_s2_defconfig new file mode 100644 index 00000000..2b358cf5 --- /dev/null +++ b/configs/imx8mn_bsh_smm_s2_defconfig @@ -0,0 +1,42 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_10=y +BR2_GLOBAL_PATCH_DIR="board/bsh/common/imx8mn-bsh-smm-s2/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/bsh/imx8mn-bsh-smm-s2/post-build.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.10" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/bsh/common/imx8mn-bsh-smm-s2/linux.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mn-bsh-smm-s2" +BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN=y +BR2_PACKAGE_FIRMWARE_IMX=y +BR2_PACKAGE_FIRMWARE_IMX_DDR3=y +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f000 +BR2_TARGET_ROOTFS_UBIFS_RT_NONE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.10" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mn" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="IMX_BOOT_UART_BASE=0x30a60000" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_DEBUG=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx8mn_bsh_smm_s2" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_NEEDS_IMX_FIRMWARE=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="flash.bin" +BR2_TARGET_UBOOT_SPL=y +BR2_PACKAGE_HOST_UUU=y diff --git a/configs/imx8mn_bsh_smm_s2_pro_defconfig b/configs/imx8mn_bsh_smm_s2_pro_defconfig new file mode 100644 index 00000000..e903cbf3 --- /dev/null +++ b/configs/imx8mn_bsh_smm_s2_pro_defconfig @@ -0,0 +1,44 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_10=y +BR2_GLOBAL_PATCH_DIR="board/bsh/common/imx8mn-bsh-smm-s2/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/bsh/imx8mn-bsh-smm-s2-pro/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/bsh/imx8mn-bsh-smm-s2-pro/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.10" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/bsh/common/imx8mn-bsh-smm-s2/linux.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mn-bsh-smm-s2pro" +BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN=y +BR2_PACKAGE_FIRMWARE_IMX=y +BR2_PACKAGE_FIRMWARE_IMX_DDR3=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.10" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mn" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="IMX_BOOT_UART_BASE=0x30a60000" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx8mn_bsh_smm_s2pro" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_NEEDS_IMX_FIRMWARE=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="flash.bin" +BR2_TARGET_UBOOT_SPL=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UUU=y diff --git a/configs/imx8mqevk_defconfig b/configs/imx8mqevk_defconfig new file mode 100644 index 00000000..350b863e --- /dev/null +++ b/configs/imx8mqevk_defconfig @@ -0,0 +1,41 @@ +BR2_aarch64=y +BR2_ARM_FPU_VFPV3=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/imx8-bootloader-prepare.sh board/freescale/common/imx/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="${UBOOT_DIR}/arch/arm/dts/imx8mq-evk.dtb" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.48" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mq-evk" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M=y +BR2_PACKAGE_FIRMWARE_IMX=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,imx-atf,lf-6.6.23-2.0.0)/imx-atf-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mq" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.6.23-2.0.0)/uboot-imx-lf-6.6.23-2.0.0.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx8mq_evk" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" +BR2_TARGET_UBOOT_SPL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_IMX_MKIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y diff --git a/configs/imxrt1050-evk_defconfig b/configs/imxrt1050-evk_defconfig new file mode 100644 index 00000000..b493c110 --- /dev/null +++ b/configs/imxrt1050-evk_defconfig @@ -0,0 +1,41 @@ +# Architecture +BR2_arm=y +BR2_cortex_m7=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/freescale/imxrt1050evk/genimage.cfg" + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_7=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.7" +BR2_LINUX_KERNEL_DEFCONFIG="imxrt" +BR2_LINUX_KERNEL_ZIMAGE=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="nxp/imx/imxrt1050-evk" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="16M" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imxrt1050-evk" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/freescale/imxrt1050evk/uboot.fragment" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y + +# Required tools to create the SD card image +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/khadas_vim3_defconfig b/configs/khadas_vim3_defconfig new file mode 100644 index 00000000..0a838833 --- /dev/null +++ b/configs/khadas_vim3_defconfig @@ -0,0 +1,47 @@ +# Architecture +BR2_aarch64=y +BR2_cortex_a73_a53=y +BR2_ARM_FPU_VFPV4=y + +# Image +BR2_ROOTFS_POST_BUILD_SCRIPT="board/khadas/vim3/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/khadas/vim3/post-image.sh" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.3" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="amlogic/meson-g12b-a311d-khadas-vim3" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Linux headers same as kernel, a 6.3 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_3=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="128M" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="khadas-vim3" +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y + +# Required tool to sign the bootloader image +BR2_PACKAGE_HOST_AMLOGIC_BOOT_FIP=y +BR2_PACKAGE_HOST_AMLOGIC_BOOT_FIP_DEVICE="khadas-vim3" + +# Required tools to create the SD image +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y + +# Supporting host tools to build FIT image +# BR2_PACKAGE_HOST_UBOOT_TOOLS=y +# BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y diff --git a/configs/kontron_bl_imx8mm_defconfig b/configs/kontron_bl_imx8mm_defconfig new file mode 100644 index 00000000..240cb522 --- /dev/null +++ b/configs/kontron_bl_imx8mm_defconfig @@ -0,0 +1,60 @@ +# Architecture +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV3=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc2" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.16" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mm-kontron-n801x-s" +BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_16=y + +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM=y +BR2_PACKAGE_FIRMWARE_IMX=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" + +# Bootloader +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.6" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mm" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="IMX_BOOT_UART_BASE=0x30880000" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.10" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="kontron-sl-mx8mm" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31_BIN=y +BR2_TARGET_UBOOT_NEEDS_IMX_FIRMWARE=y +BR2_TARGET_UBOOT_NEEDS_UTIL_LINUX=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="flash.bin" +BR2_TARGET_UBOOT_SPL=y + +# Required host tools to create the SD/eMMC image +BR2_ROOTFS_POST_BUILD_SCRIPT="board/kontron/bl-imx8mm/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BINARIES_DIR)/genimage.cfg" +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/kontron_pitx_imx8m_defconfig b/configs/kontron_pitx_imx8m_defconfig new file mode 100644 index 00000000..460f1a97 --- /dev/null +++ b/configs/kontron_pitx_imx8m_defconfig @@ -0,0 +1,61 @@ +# Architecture +BR2_aarch64=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc2" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/kontron/pitx-imx8m/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BINARIES_DIR)/genimage.cfg" +BR2_GLOBAL_PATCH_DIR="board/kontron/pitx-imx8m/patches" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.17.7" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mq-kontron-pitx-imx8m" +BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_17=y + +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M=y +BR2_PACKAGE_FIRMWARE_IMX=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" + +# Bootloader +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.5" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mq" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="kontron_pitx_imx8m" +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31_BIN=y +BR2_TARGET_UBOOT_NEEDS_IMX_FIRMWARE=y +BR2_TARGET_UBOOT_NEEDS_UTIL_LINUX=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="flash.bin" +BR2_TARGET_UBOOT_SPL=y + +# Required host tools to create the SD/eMMC image +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_IMX_MKIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y diff --git a/configs/kontron_smarc_sal28_defconfig b/configs/kontron_smarc_sal28_defconfig new file mode 100644 index 00000000..f8515f5b --- /dev/null +++ b/configs/kontron_smarc_sal28_defconfig @@ -0,0 +1,37 @@ +BR2_aarch64=y +BR2_cortex_a72=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_16=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_ROOTFS_OVERLAY="board/kontron/smarc-sal28/rootfs_overlay" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/kontron/smarc-sal28/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BINARIES_DIR)/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.16" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/fsl-ls1028a-kontron-sl28 freescale/fsl-ls1028a-kontron-sl28-var2 freescale/fsl-ls1028a-kontron-sl28-var3-ads2 freescale/fsl-ls1028a-kontron-sl28-var4 freescale/fsl-ls1028a-kontron-kbox-a-230-ls" +BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_RCW_SMARC_SAL28=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="128M" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.10" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="kontron_sl28" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_UTIL_LINUX=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.rom" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/configs/lafrite_defconfig b/configs/lafrite_defconfig new file mode 100644 index 00000000..19fca02c --- /dev/null +++ b/configs/lafrite_defconfig @@ -0,0 +1,23 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/librecomputer/lafrite/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_OVERLAY="board/librecomputer/lafrite/overlay/" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/librecomputer/lafrite/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.22" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="amlogic/meson-gxl-s805x-libretech-ac" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/lego_ev3_defconfig b/configs/lego_ev3_defconfig new file mode 100644 index 00000000..df80bb3f --- /dev/null +++ b/configs/lego_ev3_defconfig @@ -0,0 +1,51 @@ +# architecture +BR2_arm=y +BR2_arm926t=y + +# system +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS1" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_GLOBAL_PATCH_DIR="board/lego/ev3/patches" +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/lego/ev3/post-image.sh" +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.315" +BR2_LINUX_KERNEL_DEFCONFIG="davinci_all" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/lego/ev3/linux.fragment" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0xc0008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="da850-lego-ev3" + +# Target packages +BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="board/lego/ev3/busybox.fragment" +BR2_PACKAGE_BLUEZ5_UTILS=y +BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y +BR2_PACKAGE_BRICKD=y +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_TI_CC2560=y + +# filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_SQUASHFS=y +BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y +# BR2_TARGET_ROOTFS_TAR is not set + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.07" +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/configs/linksprite_pcduino_defconfig b/configs/linksprite_pcduino_defconfig new file mode 100644 index 00000000..2b215201 --- /dev/null +++ b/configs/linksprite_pcduino_defconfig @@ -0,0 +1,63 @@ +# Architecture +BR2_arm=y +BR2_cortex_a8=y + +# System settings +BR2_TARGET_GENERIC_HOSTNAME="pcduino" +BR2_TARGET_GENERIC_ISSUE="pcDuino buildroot is ready" + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# SD image scripts +BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BINARIES_DIR)/genimage.cfg" + +# For kernel modules autoloading +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.3" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun4i-a10-pcduino" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/linksprite/pcduino/linux-extras.config" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.10" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="Linksprite_pcDuino" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" + +# Host packages +BR2_PACKAGE_HOST_GENIMAGE=y + +# Target packages: wireless support for pcduino-lite-wifi +BR2_PACKAGE_IW=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WIRELESS_TOOLS_LIB=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y diff --git a/configs/ls1028ardb_defconfig b/configs/ls1028ardb_defconfig new file mode 100644 index 00000000..462e642c --- /dev/null +++ b/configs/ls1028ardb_defconfig @@ -0,0 +1,61 @@ +# Architecture +BR2_aarch64=y +BR2_cortex_a72=y + +# Build +BR2_GLOBAL_PATCH_DIR="board/freescale/ls1028ardb/patches board/freescale/common/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# Toolchain +# Linux headers same as kernel, a 5.10 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="ls1028a" +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_SYSTEM_DHCP="eno0" +BR2_ROOTFS_OVERLAY="board/freescale/ls1028ardb/rootfs_overlay" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/freescale/ls1028ardb/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-qoriq,linux,LSDK-21.08)/linux-LSDK-21.08.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v8" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(LINUX_DIR)/arch/arm64/configs/lsdk.config" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/fsl-ls1028a-rdb" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Target package +BR2_PACKAGE_QORIQ_CADENCE_DP_FIRMWARE=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,nxp-qoriq,atf,LSDK-21.08)/atf-LSDK-21.08.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="ls1028ardb" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_RCW=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="BOOT_MODE=sd" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_IMAGES="fip.bin bl2_sd.pbl" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-qoriq,u-boot,LSDK-21.08)/u-boot-LSDK-21.08.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="ls1028ardb_tfa" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# Host utilities +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_QORIQ_RCW=y +BR2_PACKAGE_HOST_QORIQ_RCW_INTREE="ls1028ardb/R_SQPP_0x85bb/rcw_1300_sdboot.bin" diff --git a/configs/ls1046a-frwy_defconfig b/configs/ls1046a-frwy_defconfig new file mode 100644 index 00000000..ce796ce3 --- /dev/null +++ b/configs/ls1046a-frwy_defconfig @@ -0,0 +1,61 @@ +# Architecture +BR2_aarch64=y +BR2_cortex_a72=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/freescale/common/patches" + +# Toolchain +# Linux headers same as kernel, a 5.10 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="ls1046afrwy" +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_OVERLAY="board/freescale/ls1046a-frwy/rootfs_overlay" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/freescale/ls1046a-frwy/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-qoriq,linux,LSDK-21.08)/linux-LSDK-21.08.tar.gz" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(LINUX_DIR)/arch/arm64/configs/lsdk.config" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/fsl-ls1046a-frwy freescale/fsl-ls1046a-frwy-sdk" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,nxp-qoriq,atf,LSDK-21.08)/atf-LSDK-21.08.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="ls1046afrwy" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_RCW=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="BOOT_MODE=sd" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_IMAGES="fip.bin bl2_sd.pbl" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-qoriq,u-boot,LSDK-21.08)/u-boot-LSDK-21.08.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="ls1046afrwy_tfa" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# Firmware +BR2_PACKAGE_QORIQ_FM_UCODE=y +BR2_PACKAGE_QORIQ_FM_UCODE_PLATFORM="ls1046" + +# Host utilities +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_QORIQ_RCW=y +BR2_PACKAGE_HOST_QORIQ_RCW_INTREE="ls1046afrwy/NN_NNQNNPNP_3040_0506/rcw_1600_sdboot.bin" diff --git a/configs/mangopi_mq1rdw2_defconfig b/configs/mangopi_mq1rdw2_defconfig new file mode 100644 index 00000000..2249fa4b --- /dev/null +++ b/configs/mangopi_mq1rdw2_defconfig @@ -0,0 +1,41 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_TARGET_GENERIC_HOSTNAME="mangopi-mq1rdw2" +BR2_TARGET_GENERIC_ISSUE="Welcome to MangoPI MQ1RDW2" +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS3" +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_OVERLAY="board/mangopi/mq1rdw2/rootfs_overlay" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/mangopi/mq1rdw2/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.5" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun8i-t113s-mangopi-mq-r-t113" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_RTL8723DS=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y +BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO=y +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01-rc4" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="mangopi_mq_r" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=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/configs/mender_x86_64_efi_defconfig b/configs/mender_x86_64_efi_defconfig new file mode 100644 index 00000000..25a463ab --- /dev/null +++ b/configs/mender_x86_64_efi_defconfig @@ -0,0 +1,79 @@ +# Architecture +BR2_x86_64=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_18=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + +# Required as vda4 doesn't mount on first boot with busybox +BR2_INIT_SYSV=y + +# Required tools to create bootable media +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Bootloader +BR2_TARGET_GRUB2=y +BR2_TARGET_GRUB2_X86_64_EFI=y +# Add mandatory modules from MENDER_GRUBENV_MANDATORY_MODULES +BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat squash4 part_msdos part_gpt normal efi_gop loadenv hashsum echo halt gcry_sha256 test regexp sleep" +BR2_TARGET_GRUB2_INSTALL_TOOLS=y + +# Required tools to create a mender image +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MENDER_ARTIFACT=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="128M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_OVERLAY="board/mender/x86_64/overlay" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/mender/x86_64/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/mender/x86_64/post-image-efi.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="--data-part-size=32M --device-type=buildroot-x86_64 --artifact-name=1.0" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.18.14" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/mender/x86_64/linux.config" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y + +# Firmware +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265=y +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y + +# Packages +# +# Use connman so that networking setup is simpler, via connmanctl tool +# acpid is for seamless power button support +BR2_PACKAGE_ACPID=y +BR2_PACKAGE_CONNMAN=y +BR2_PACKAGE_CONNMAN_CLIENT=y +BR2_PACKAGE_CONNMAN_WIFI=y +BR2_PACKAGE_MENDER=y +BR2_PACKAGE_MENDER_GRUBENV=y +BR2_PACKAGE_MENDER_GRUBENV_DEFINES="board/mender/x86_64/mender_grubenv_defines" diff --git a/configs/microchip_mpfs_icicle_defconfig b/configs/microchip_mpfs_icicle_defconfig new file mode 100644 index 00000000..4337ac34 --- /dev/null +++ b/configs/microchip_mpfs_icicle_defconfig @@ -0,0 +1,31 @@ +BR2_riscv=y +BR2_RISCV_ISA_RVC=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/microchip/mpfs_icicle/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_TARGET_GENERIC_HOSTNAME="mpfs_icicle" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/microchip/mpfs_icicle/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4microchip,linux,linux4microchip+fpga-2024.06)/linux-linux4microchip+fpga-2024.06.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="mpfs" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/microchip/mpfs_icicle/linux.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="microchip/mpfs-icicle-kit" +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_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4microchip,u-boot-mchp,linux4microchip+fpga-2024.06)/uboot-linux4microchip+fpga-2024.06.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="microchip_mpfs_icicle" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/microchip/mpfs_icicle/uboot-fragment-rootfs.config" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MICROCHIP_HSS_PAYLOAD_GENERATOR=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/microchip/mpfs_icicle/uboot-env.txt" diff --git a/configs/microchip_sam9x60ek_mmc_defconfig b/configs/microchip_sam9x60ek_mmc_defconfig new file mode 100644 index 00000000..7a1a699d --- /dev/null +++ b/configs/microchip_sam9x60ek_mmc_defconfig @@ -0,0 +1,27 @@ +BR2_arm=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_TARGET_GENERIC_HOSTNAME="sam9x60ek" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/microchip/sam9x60ek_mmc/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4microchip,linux,linux4microchip-2021.10)/linux-linux4microchip-2021.10.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sam9x60ek" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,at91bootstrap,v4.0.1)/at91bootstrap-v4.0.1.tar.gz" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sam9x60eksd_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,u-boot-at91,linux4sam-2020.04)/u-boot-at91-linux4sam-2020.04.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sam9x60ek_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/microchip_sam9x60ek_mmc_dev_defconfig b/configs/microchip_sam9x60ek_mmc_dev_defconfig new file mode 100644 index 00000000..4c842f2b --- /dev/null +++ b/configs/microchip_sam9x60ek_mmc_dev_defconfig @@ -0,0 +1,80 @@ +BR2_arm=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_TARGET_GENERIC_HOSTNAME="sam9x60ek" +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/microchip/sam9x60ek_mmc/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4microchip,linux,linux4microchip-2021.10)/linux-linux4microchip-2021.10.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sam9x60ek" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_WILC3000_FIRMWARE=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBSYSFS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ5_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,at91bootstrap,v4.0.1)/at91bootstrap-v4.0.1.tar.gz" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sam9x60eksd_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,u-boot-at91,linux4sam-2020.04)/u-boot-at91-linux4sam-2020.04.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sam9x60ek_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/microchip_sama5d27_wlsom1_ek_mmc_defconfig b/configs/microchip_sama5d27_wlsom1_ek_mmc_defconfig new file mode 100644 index 00000000..024e8a14 --- /dev/null +++ b/configs/microchip_sama5d27_wlsom1_ek_mmc_defconfig @@ -0,0 +1,30 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d27_wlsom1_ek_mmc/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4microchip,linux,linux4microchip-2021.10)/linux-linux4microchip-2021.10.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d27_wlsom1_ek" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,at91bootstrap,v4.0.1)/at91bootstrap-v4.0.1.tar.gz" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d27_wlsom1_eksd_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,u-boot-at91,linux4sam_6.2)/u-boot-at91-linux4sam_6.2.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d27_wlsom1_ek_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/microchip_sama5d27_wlsom1_ek_mmc_dev_defconfig b/configs/microchip_sama5d27_wlsom1_ek_mmc_dev_defconfig new file mode 100644 index 00000000..5f6eba48 --- /dev/null +++ b/configs/microchip_sama5d27_wlsom1_ek_mmc_dev_defconfig @@ -0,0 +1,83 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d27_wlsom1_ek_mmc/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4microchip,linux,linux4microchip-2021.10)/linux-linux4microchip-2021.10.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d27_wlsom1_ek" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_WILC3000_FIRMWARE=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBSYSFS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ5_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,at91bootstrap,v4.0.1)/at91bootstrap-v4.0.1.tar.gz" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d27_wlsom1_eksd_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,u-boot-at91,linux4sam_6.2)/u-boot-at91-linux4sam_6.2.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d27_wlsom1_ek_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/microchip_sama5d2_icp_mmc_defconfig b/configs/microchip_sama5d2_icp_mmc_defconfig new file mode 100644 index 00000000..27ea4970 --- /dev/null +++ b/configs/microchip_sama5d2_icp_mmc_defconfig @@ -0,0 +1,31 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/microchip/sama5d2_icp/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4microchip,linux,linux4microchip-2021.10)/linux-linux4microchip-2021.10.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d2_icp" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,at91bootstrap,v4.0.1)/at91bootstrap-v4.0.1.tar.gz" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d2_icpsd_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,u-boot-at91,linux4sam-2020.10)/u-boot-at91-linux4sam-2020.10.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d2_icp_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/microchip_sama5d2_icp_mmc_dev_defconfig b/configs/microchip_sama5d2_icp_mmc_dev_defconfig new file mode 100644 index 00000000..64df7b4d --- /dev/null +++ b/configs/microchip_sama5d2_icp_mmc_dev_defconfig @@ -0,0 +1,72 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/microchip/sama5d2_icp/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4microchip,linux,linux4microchip-2021.10)/linux-linux4microchip-2021.10.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d2_icp" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_LINUX_TOOLS_IIO=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_STRACE=y +BR2_PACKAGE_TREE=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_WILC3000_FIRMWARE=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBSYSFS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ5_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_HTOP=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,at91bootstrap,v4.0.1)/at91bootstrap-v4.0.1.tar.gz" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d2_icpsd_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,u-boot-at91,linux4sam-2020.10)/u-boot-at91-linux4sam-2020.10.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d2_icp_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/microchip_sama7g5ek_mmc_defconfig b/configs/microchip_sama7g5ek_mmc_defconfig new file mode 100644 index 00000000..7ab81d1d --- /dev/null +++ b/configs/microchip_sama7g5ek_mmc_defconfig @@ -0,0 +1,29 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/microchip/sama7g5ek/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.21" +BR2_LINUX_KERNEL_DEFCONFIG="sama7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama7g5ek" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,at91bootstrap,v4.0.1)/at91bootstrap-v4.0.1.tar.gz" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama7g5eksd_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,u-boot-at91,linux4sam-2021.04)/u-boot-at91-linux4sam-2021.04.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama7g5ek_mmc1" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/microchip_sama7g5ek_mmc_dev_defconfig b/configs/microchip_sama7g5ek_mmc_dev_defconfig new file mode 100644 index 00000000..2fca9873 --- /dev/null +++ b/configs/microchip_sama7g5ek_mmc_dev_defconfig @@ -0,0 +1,72 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/microchip/sama7g5ek/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.21" +BR2_LINUX_KERNEL_DEFCONFIG="sama7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama7g5ek" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_LINUX_TOOLS_IIO=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_STRACE=y +BR2_PACKAGE_TREE=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_WILC3000_FIRMWARE=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_RNG_TOOLS=y +# BR2_PACKAGE_RNG_TOOLS_JITTERENTROPY_LIBRARY is not set +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBSYSFS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ5_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_HTOP=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,at91bootstrap,v4.0.1)/at91bootstrap-v4.0.1.tar.gz" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama7g5eksd_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,u-boot-at91,linux4sam-2021.04)/u-boot-at91-linux4sam-2021.04.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama7g5ek_mmc1" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/minnowboard_max_defconfig b/configs/minnowboard_max_defconfig new file mode 100644 index 00000000..83a970f6 --- /dev/null +++ b/configs/minnowboard_max_defconfig @@ -0,0 +1,36 @@ +# Architecture +BR2_x86_64=y +BR2_x86_silvermont=y + +# Misc +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/minnowboard/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/minnowboard/genimage.cfg" + +# Linux headers same as kernel, a 5.10 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y + +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Needed for ethernet +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y + +# Linux kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.11" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/minnowboard/linux.config" + +# Bootloader +BR2_TARGET_GRUB2=y +BR2_TARGET_GRUB2_X86_64_EFI=y + +# Filesystem image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set diff --git a/configs/mx51evk_defconfig b/configs/mx51evk_defconfig new file mode 100644 index 00000000..e633a622 --- /dev/null +++ b/configs/mx51evk_defconfig @@ -0,0 +1,39 @@ +# Architecture +BR2_arm=y +BR2_cortex_a8=y + +# Global patches directory and hash check +BR2_GLOBAL_PATCH_DIR="board/freescale/imx51evk/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# Linux headers same as kernel, a 5.10 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx51evk" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.01" +BR2_TARGET_UBOOT_FORMAT_IMX=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.218" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx51-babbage" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/configs/mx53loco_defconfig b/configs/mx53loco_defconfig new file mode 100644 index 00000000..d03c7d09 --- /dev/null +++ b/configs/mx53loco_defconfig @@ -0,0 +1,36 @@ +# Architecture +BR2_arm=y +BR2_cortex_a8=y + +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx53loco" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.01" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.20" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx53-qsb imx53-qsrb" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/configs/mx6cubox_defconfig b/configs/mx6cubox_defconfig new file mode 100644 index 00000000..bd94f3fc --- /dev/null +++ b/configs/mx6cubox_defconfig @@ -0,0 +1,52 @@ +# Architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Toolchain +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Build +BR2_GLOBAL_PATCH_DIR="board/solidrun/mx6cubox/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System configuration +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_ROOTFS_OVERLAY="board/solidrun/mx6cubox/rootfs_overlay" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.27" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="nxp/imx/imx6dl-cubox-i nxp/imx/imx6dl-cubox-i-emmc-som-v15 nxp/imx/imx6dl-cubox-i-som-v15 nxp/imx/imx6dl-hummingboard nxp/imx/imx6dl-hummingboard-emmc-som-v15 nxp/imx/imx6dl-hummingboard-som-v15 nxp/imx/imx6q-cubox-i nxp/imx/imx6q-cubox-i-emmc-som-v15 nxp/imx/imx6q-cubox-i-som-v15 nxp/imx/imx6q-hummingboard nxp/imx/imx6q-hummingboard-emmc-som-v15 nxp/imx/imx6q-hummingboard-som-v15" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem images +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="mx6cuboxi" +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" + +# 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/configs/mx6sx_udoo_neo_defconfig b/configs/mx6sx_udoo_neo_defconfig new file mode 100644 index 00000000..adcd7aeb --- /dev/null +++ b/configs/mx6sx_udoo_neo_defconfig @@ -0,0 +1,36 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_GLOBAL_PATCH_DIR="board/udoo/neo/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/udoo/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="udoo_neo" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.01" +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +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="6.6.43" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="nxp/imx/imx6sx-udoo-neo-basic nxp/imx/imx6sx-udoo-neo-full nxp/imx/imx6sx-udoo-neo-extended" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/udoo/common/boot.scr.txt" diff --git a/configs/mx6udoo_defconfig b/configs/mx6udoo_defconfig new file mode 100644 index 00000000..5092ef0f --- /dev/null +++ b/configs/mx6udoo_defconfig @@ -0,0 +1,35 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y +BR2_GLOBAL_PATCH_DIR="board/udoo/mx6qdl/patches" +# Linux headers same as kernel, a 5.10 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/udoo/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="udoo" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2020.10" +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="5.10.84" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-udoo imx6dl-udoo" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/udoo/common/boot.scr.txt" diff --git a/configs/nexbox_a95x_defconfig b/configs/nexbox_a95x_defconfig new file mode 100644 index 00000000..69f8b907 --- /dev/null +++ b/configs/nexbox_a95x_defconfig @@ -0,0 +1,21 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/nexbox/a95x/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/nexbox/a95x/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.12" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="amlogic/meson-gxbb-nexbox-a95x amlogic/meson-gxl-s905x-nexbox-a95x" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/configs/nezha_defconfig b/configs/nezha_defconfig new file mode 100644 index 00000000..c234b3e2 --- /dev/null +++ b/configs/nezha_defconfig @@ -0,0 +1,38 @@ +BR2_riscv=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/nezha/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_OVERLAY="board/nezha/overlay" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/nezha/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.22" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/nezha/linux.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun20i-d1-nezha" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_OPENSBI=y +BR2_TARGET_OPENSBI_CUSTOM_VERSION=y +BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE="1.4" +BR2_TARGET_OPENSBI_PLAT="generic" +# BR2_TARGET_OPENSBI_INSTALL_JUMP_IMG is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,smaeul,u-boot,2e89b706f5c956a70c989cd31665f1429e9a0b48)/uboot-2e89b706f5c956a70c989cd31665f1429e9a0b48.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nezha" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_OPENSBI=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/nitrogen6sx_defconfig b/configs/nitrogen6sx_defconfig new file mode 100644 index 00000000..ba2c79d4 --- /dev/null +++ b/configs/nitrogen6sx_defconfig @@ -0,0 +1,45 @@ +# architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# system +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/boundarydevices/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/boundarydevices/common/post-image.sh" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y + +# filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +# Latest revision of branch boundary-v2022.04 +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot/archive/7e7eff74.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen6sx" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/boundarydevices/common/boot.cmd" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +# Latest revision of branch boundary-imx_6.1.y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux/archive/4470b050.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="boundary" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6sx-nitrogen6sx imx6sx-nitrogen6sx-m4" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/configs/nitrogen6x_defconfig b/configs/nitrogen6x_defconfig new file mode 100644 index 00000000..d490ec3c --- /dev/null +++ b/configs/nitrogen6x_defconfig @@ -0,0 +1,44 @@ +# architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# system +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/boundarydevices/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/boundarydevices/common/post-image.sh" +BR2_PACKAGE_HOST_GENIMAGE=y + +# filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +# Latest revision of branch boundary-v2022.04 +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot/archive/7e7eff74.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen6q" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/boundarydevices/common/boot.cmd" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +# Latest revision of branch boundary-imx_6.1.y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux/archive/4470b050.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="boundary" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-nit6xlite imx6dl-nitrogen6_vm imx6dl-nitrogen6x imx6q-nitrogen6x imx6dl-nitrogen6_som2 imx6q-nitrogen6_som2 imx6qp-nitrogen6_som2 imx6q-nitrogen6_max imx6qp-nitrogen6_max imx6q-sabrelite" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/configs/nitrogen7_defconfig b/configs/nitrogen7_defconfig new file mode 100644 index 00000000..429d84c1 --- /dev/null +++ b/configs/nitrogen7_defconfig @@ -0,0 +1,44 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y + +# system +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/boundarydevices/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/boundarydevices/common/post-image.sh" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y + +# filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +# Latest revision of branch boundary-v2022.04 +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot/archive/7e7eff74.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen7" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/boundarydevices/common/boot.cmd" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +# Latest revision of branch boundary-imx_6.1.y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux/archive/4470b050.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="boundary" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx7d-nitrogen7 imx7d-nitrogen7-m4" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/configs/nitrogen8m_defconfig b/configs/nitrogen8m_defconfig new file mode 100644 index 00000000..ea5f21cb --- /dev/null +++ b/configs/nitrogen8m_defconfig @@ -0,0 +1,60 @@ +# Architecture +BR2_aarch64=y +BR2_cortex_a53=y + +# System +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/freescale/common/imx/imx8-bootloader-prepare.sh board/boundarydevices/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/boundarydevices/common/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="${UBOOT_DIR}/arch/arm/dts/imx8mq-nitrogen8m.dtb" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_IMX_MKIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" + +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y + +# DDR training binaries +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M=y +BR2_PACKAGE_FIRMWARE_IMX=y + +# ARM Trusted Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +# Latest revision of branch boundary-lf-6.1.22-2.0.0 +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/imx-atf/archive/7e3484cc.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mq" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen8m" +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +# Latest revision of branch boundary-v2022.04 +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot/archive/7e7eff74.tar.gz" +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_SPL=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +# Latest revision of branch boundary-imx_6.1.y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux/archive/4470b050.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="boundary" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mq-nitrogen8m freescale/imx8mq-nitrogen8m-m4 freescale/imx8mq-nitrogen8m_som freescale/imx8mq-nitrogen8m_som-m4" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/configs/nitrogen8mm_defconfig b/configs/nitrogen8mm_defconfig new file mode 100644 index 00000000..5b7fb4a3 --- /dev/null +++ b/configs/nitrogen8mm_defconfig @@ -0,0 +1,60 @@ +# Architecture +BR2_aarch64=y +BR2_cortex_a53=y + +# System +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/freescale/common/imx/imx8-bootloader-prepare.sh board/boundarydevices/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/boundarydevices/common/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="${UBOOT_DIR}/arch/arm/dts/imx8mm-nitrogen8mm.dtb" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_IMX_MKIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" + +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y + +# DDR training binaries +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM=y +BR2_PACKAGE_FIRMWARE_IMX=y + +# ARM Trusted Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +# Latest revision of branch boundary-lf-6.1.22-2.0.0 +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/imx-atf/archive/7e3484cc.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mm" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen8mm_2g" +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +# Latest revision of branch boundary-v2022.04 +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot/archive/7e7eff74.tar.gz" +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_SPL=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +# Latest revision of branch boundary-imx_6.1.y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux/archive/4470b050.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="boundary" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mm-nitrogen8mm freescale/imx8mm-nitrogen8mm-m4 freescale/imx8mm-nitrogen8mm_rev2 freescale/imx8mm-nitrogen8mm_rev2-m4 freescale/imx8mm-nitrogen8mm_som freescale/imx8mm-nitrogen8mm_som-m4" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/configs/nitrogen8mn_defconfig b/configs/nitrogen8mn_defconfig new file mode 100644 index 00000000..2fc9442d --- /dev/null +++ b/configs/nitrogen8mn_defconfig @@ -0,0 +1,60 @@ +# Architecture +BR2_aarch64=y +BR2_cortex_a53=y + +# System +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/freescale/common/imx/imx8-bootloader-prepare.sh board/boundarydevices/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/boundarydevices/common/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="${UBOOT_DIR}/arch/arm/dts/imx8mn-nitrogen8_nano.dtb" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_IMX_MKIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" + +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y + +# DDR training binaries +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN=y +BR2_PACKAGE_FIRMWARE_IMX=y + +# ARM Trusted Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +# Latest revision of branch boundary-lf-6.1.22-2.0.0 +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/imx-atf/archive/7e3484cc.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mn" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen8_nano_8mn1gr0" +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +# Latest revision of branch boundary-v2022.04 +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot/archive/7e7eff74.tar.gz" +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_SPL=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +# Latest revision of branch boundary-imx_6.1.y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux/archive/4470b050.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="boundary" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mn-nitrogen8_nano freescale/imx8mn-nitrogen8mn freescale/imx8mn-nitrogen8mn_som" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/configs/nitrogen8mp_defconfig b/configs/nitrogen8mp_defconfig new file mode 100644 index 00000000..c5f79c39 --- /dev/null +++ b/configs/nitrogen8mp_defconfig @@ -0,0 +1,60 @@ +# Architecture +BR2_aarch64=y +BR2_cortex_a53=y + +# System +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/freescale/common/imx/imx8-bootloader-prepare.sh board/boundarydevices/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/boundarydevices/common/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="${UBOOT_DIR}/arch/arm/dts/imx8mp-nitrogen8mp.dtb" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_IMX_MKIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" + +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y + +# DDR training binaries +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP=y +BR2_PACKAGE_FIRMWARE_IMX=y + +# ARM Trusted Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +# Latest revision of branch boundary-lf-6.1.22-2.0.0 +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/imx-atf/archive/7e3484cc.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mp" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen8mp_2gr0" +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +# Latest revision of branch boundary-v2022.04 +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot/archive/7e7eff74.tar.gz" +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_SPL=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +# Latest revision of branch boundary-imx_6.1.y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux/archive/4470b050.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="boundary" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mp-nitrogen_smarc freescale/imx8mp-nitrogen8mp freescale/imx8mp-nitrogen8mp-m4 freescale/imx8mp-nitrogen8mp-enc freescale/imx8mp-nitrogen8mp-enc-tc358743" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/configs/octavo_osd32mp1_brk_defconfig b/configs/octavo_osd32mp1_brk_defconfig new file mode 100644 index 00000000..9a8ec8aa --- /dev/null +++ b/configs/octavo_osd32mp1_brk_defconfig @@ -0,0 +1,64 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y + +# global patch directory +BR2_GLOBAL_PATCH_DIR="board/octavo/osd32mp1-brk/patches" + +# Linux headers same as kernel, a 5.10 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y + +# rootfs overlay +BR2_ROOTFS_OVERLAY="board/octavo/osd32mp1-brk/overlay/" + +# image generation +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/octavo/osd32mp1-brk/genimage.cfg" + +# Kernel, use CUSTOM_DTS_PATH associated with INTREE_DTS_NAME to build the right +# device-tree +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/STMicroelectronics/linux.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="v5.10-stm32mp-r2.1" +BR2_LINUX_KERNEL_DEFCONFIG="multi_v7" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(LINUX_DIR)/arch/arm/configs/fragment-01-multiv7_cleanup.config $(LINUX_DIR)/arch/arm/configs/fragment-02-multiv7_addons.config" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="stm32mp157c-osd32mp1-brk" +BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="board/octavo/osd32mp1-brk/linux-dts/*" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# TF-A +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/STMicroelectronics/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="v2.4-stm32mp-r1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="stm32mp1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_DTS_PATH="board/octavo/osd32mp1-brk/tfa-dts/*" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_BL33_IMAGE="u-boot-nodtb.bin" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="STM32MP_SDMMC=1 AARCH32_SP=sp_min DTB_FILE_NAME=stm32mp157c-osd32mp1-brk.dtb STM32MP_USB_PROGRAMMER=1 BL33_CFG=$(BINARIES_DIR)/u-boot.dtb" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_IMAGES="*.stm32 fip.bin" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_DTC=y + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/STMicroelectronics/u-boot.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="v2020.10-stm32mp-r2.1" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="osd32mp1_brk_trusted" +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin u-boot.dtb" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=stm32mp157c-osd32mp1-brk" + +# Package needed to generate the image +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/octavo_osd32mp1_red_defconfig b/configs/octavo_osd32mp1_red_defconfig new file mode 100644 index 00000000..2d0b3405 --- /dev/null +++ b/configs/octavo_osd32mp1_red_defconfig @@ -0,0 +1,64 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y + +# global patch directory +BR2_GLOBAL_PATCH_DIR="board/octavo/osd32mp1-red/patches" + +# Linux headers same as kernel, a 5.10 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y + +# rootfs overlay +BR2_ROOTFS_OVERLAY="board/octavo/osd32mp1-red/overlay/" + +# image generation +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/octavo/osd32mp1-red/genimage.cfg" + +# Kernel, use CUSTOM_DTS_PATH associated with INTREE_DTS_NAME to build the right +# device-tree +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/STMicroelectronics/linux.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="v5.10-stm32mp-r2.1" +BR2_LINUX_KERNEL_DEFCONFIG="multi_v7" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(LINUX_DIR)/arch/arm/configs/fragment-01-multiv7_cleanup.config $(LINUX_DIR)/arch/arm/configs/fragment-02-multiv7_addons.config" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="stm32mp157c-osd32mp1-red" +BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="board/octavo/osd32mp1-red/linux-dts/*" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# TF-A +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/STMicroelectronics/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="v2.4-stm32mp-r1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="stm32mp1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_DTS_PATH="board/octavo/osd32mp1-red/tfa-dts/*" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_BL33_IMAGE="u-boot-nodtb.bin" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="STM32MP_SDMMC=1 AARCH32_SP=sp_min DTB_FILE_NAME=stm32mp157c-osd32mp1-red.dtb STM32MP_USB_PROGRAMMER=1 BL33_CFG=$(BINARIES_DIR)/u-boot.dtb" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_IMAGES="*.stm32 fip.bin" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_DTC=y + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/STMicroelectronics/u-boot.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="v2020.10-stm32mp-r2.1" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="stm32mp15_trusted" +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin u-boot.dtb" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=stm32mp157c-osd32mp1-red" + +# Package needed to generate the image +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/odroidc2_defconfig b/configs/odroidc2_defconfig new file mode 100644 index 00000000..5f97fc3d --- /dev/null +++ b/configs/odroidc2_defconfig @@ -0,0 +1,42 @@ +# Architecture +BR2_aarch64=y + +# Linux headers same as kernel, a 5.7 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_7=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="odroidc2" +BR2_TARGET_GENERIC_GETTY_PORT="ttyAML0" +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_ROOTFS_OVERLAY="board/hardkernel/odroidc2/rootfs_overlay" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/hardkernel/odroidc2/post-image.sh" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="amlogic/meson-gxbb-odroidc2" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY=y +BR2_TARGET_UBOOT_BOARDNAME="odroid-c2" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2020.07" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/hardkernel/odroidc2/boot.cmd" + +# Firmware +BR2_PACKAGE_ODROIDC2_FIRMWARE=y + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MESON_TOOLS=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/odroidxu4_defconfig b/configs/odroidxu4_defconfig new file mode 100644 index 00000000..69958e13 --- /dev/null +++ b/configs/odroidxu4_defconfig @@ -0,0 +1,27 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/hardkernel/odroidxu4/post-image.sh" +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/hardkernel/linux.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="4.14.16-104" +BR2_LINUX_KERNEL_DEFCONFIG="odroidxu4" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="exynos5422-odroidxu4" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/hardkernel/u-boot.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="88af53fbcef8386cb4d5f04c19f4b2bcb69e90ca" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="odroid-xu4" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_DTB_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="sd_fuse/bl1.bin.hardkernel sd_fuse/bl2.bin.hardkernel.720k_uboot sd_fuse/tzsw.bin.hardkernel " +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/olimex_a10_olinuxino_lime_defconfig b/configs/olimex_a10_olinuxino_lime_defconfig new file mode 100644 index 00000000..9c454b19 --- /dev/null +++ b/configs/olimex_a10_olinuxino_lime_defconfig @@ -0,0 +1,50 @@ +# Architecture +BR2_arm=y +BR2_cortex_a8=y + +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="a10-olinuxino" +BR2_TARGET_GENERIC_ISSUE="Welcome to OLinuXino!" +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/olimex/a10_olinuxino/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olimex/a10_olinuxino/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.9" +BR2_LINUX_KERNEL_USE_DEFCONFIG=y +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun4i-a10-olinuxino-lime" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A10-OLinuXino-Lime" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/olimex/a10_olinuxino/boot.cmd" + +# Additional tools +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/olimex_a13_olinuxino_defconfig b/configs/olimex_a13_olinuxino_defconfig new file mode 100644 index 00000000..8469ce1f --- /dev/null +++ b/configs/olimex_a13_olinuxino_defconfig @@ -0,0 +1,49 @@ +# Architecture +BR2_arm=y +BR2_cortex_a8=y + +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="a13-olinuxino" +BR2_TARGET_GENERIC_ISSUE="Welcome to OLinuXino!" +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A13-OLinuXino" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.9" +BR2_LINUX_KERNEL_USE_DEFCONFIG=y +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun5i-a13-olinuxino" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/olimex/a13_olinuxino/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olimex/a13_olinuxino/genimage.cfg" + +# Additional tools +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/olimex_a20_olinuxino_lime2_defconfig b/configs/olimex_a20_olinuxino_lime2_defconfig new file mode 100644 index 00000000..765504d1 --- /dev/null +++ b/configs/olimex_a20_olinuxino_lime2_defconfig @@ -0,0 +1,64 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_EABIHF=y + +# Linux headers same as kernel, a 6.6 LTS series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Toolchain +# glibc is needed for sunxi-mali-utgard package. +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y + +# Build +BR2_GLOBAL_PATCH_DIR="board/olimex/a20_olinuxino/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="a20-olinuxino" +BR2_TARGET_GENERIC_ISSUE="Welcome to OLinuXino!" +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_OVERLAY="board/olimex/a20_olinuxino/rootfs_overlay" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olimex/a20_olinuxino/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.36" +BR2_LINUX_KERNEL_USE_DEFCONFIG=y +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/olimex/a20_olinuxino/linux-disable-lima.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun7i-a20-olinuxino-lime2" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# sunxi packages +BR2_PACKAGE_SUNXI_TOOLS=y +BR2_PACKAGE_SUNXI_MALI_UTGARD=y +BR2_PACKAGE_SUNXI_MALI_UTGARD_DRIVER=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A20-OLinuXino-Lime2" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_PACKAGE_HOST_UBOOT_TOOLS=y + +# Additional tools +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/olimex_a20_olinuxino_lime_defconfig b/configs/olimex_a20_olinuxino_lime_defconfig new file mode 100644 index 00000000..27cd87d9 --- /dev/null +++ b/configs/olimex_a20_olinuxino_lime_defconfig @@ -0,0 +1,64 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_EABIHF=y + +# Linux headers same as kernel, a 6.6 LTS series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Toolchain +# glibc is needed for sunxi-mali-utgard package. +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y + +# Build +BR2_GLOBAL_PATCH_DIR="board/olimex/a20_olinuxino/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="a20-olinuxino" +BR2_TARGET_GENERIC_ISSUE="Welcome to OLinuXino!" +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_OVERLAY="board/olimex/a20_olinuxino/rootfs_overlay" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olimex/a20_olinuxino/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.36" +BR2_LINUX_KERNEL_USE_DEFCONFIG=y +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/olimex/a20_olinuxino/linux-disable-lima.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun7i-a20-olinuxino-lime" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# sunxi packages +BR2_PACKAGE_SUNXI_TOOLS=y +BR2_PACKAGE_SUNXI_MALI_UTGARD=y +BR2_PACKAGE_SUNXI_MALI_UTGARD_DRIVER=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A20-OLinuXino-Lime" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_PACKAGE_HOST_UBOOT_TOOLS=y + +# Additional tools +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/olimex_a20_olinuxino_micro_defconfig b/configs/olimex_a20_olinuxino_micro_defconfig new file mode 100644 index 00000000..a7a6eb51 --- /dev/null +++ b/configs/olimex_a20_olinuxino_micro_defconfig @@ -0,0 +1,49 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="a20-olinuxino" +BR2_TARGET_GENERIC_ISSUE="Welcome to OLinuXino!" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/olimex/a20_olinuxino/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olimex/a20_olinuxino/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.9" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun7i-a20-olinuxino-micro" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A20-OLinuXino_MICRO" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/olimex/a20_olinuxino/boot.cmd" + +# Additional tools +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/olimex_a33_olinuxino_defconfig b/configs/olimex_a33_olinuxino_defconfig new file mode 100644 index 00000000..35398ac6 --- /dev/null +++ b/configs/olimex_a33_olinuxino_defconfig @@ -0,0 +1,52 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y + +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="A33-olinuxino" +BR2_TARGET_GENERIC_ISSUE="Welcome to A33 OLinuXino!" +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A33-OLinuXino" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/olimex/a33_olinuxino/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.9" +BR2_LINUX_KERNEL_USE_DEFCONFIG=y +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-a33-olinuxino" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/olimex/a33_olinuxino/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olimex/a33_olinuxino/genimage.cfg" + +# Additional tools +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/olimex_a64_olinuxino_defconfig b/configs/olimex_a64_olinuxino_defconfig new file mode 100644 index 00000000..dd445e8c --- /dev/null +++ b/configs/olimex_a64_olinuxino_defconfig @@ -0,0 +1,51 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.8" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50i_a64" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="a64-olinuxino" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="SCP=/dev/null" +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/olimex/a64-olinuxino/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.9" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-a64-olinuxino" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Olimex A64-OLinuXino" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olimex/a64-olinuxino/genimage.cfg" diff --git a/configs/olimex_imx233_olinuxino_defconfig b/configs/olimex_imx233_olinuxino_defconfig new file mode 100644 index 00000000..d45c55ad --- /dev/null +++ b/configs/olimex_imx233_olinuxino_defconfig @@ -0,0 +1,57 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y + +# Build +BR2_GLOBAL_PATCH_DIR="board/olimex/imx233_olinuxino/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" +BR2_SYSTEM_DHCP="eth0" + +# For automatic firmware loading +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.83" +BR2_LINUX_KERNEL_DEFCONFIG="mxs" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/olimex/imx233_olinuxino/linux-wifi.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx23-olinuxino" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x42000000" + +# Firmware for WiFi +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010=y +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y +BR2_PACKAGE_ZD1211_FIRMWARE=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=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="2024.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="mx23_olinuxino" +BR2_TARGET_UBOOT_FORMAT_SD=y + +# To generate SD Image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/mxs/post-image.sh" + diff --git a/configs/olimex_stmp157_olinuxino_lime_defconfig b/configs/olimex_stmp157_olinuxino_lime_defconfig new file mode 100644 index 00000000..ecfa7813 --- /dev/null +++ b/configs/olimex_stmp157_olinuxino_lime_defconfig @@ -0,0 +1,53 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y + +# Linux headers same as kernel, a 5.10 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y + +# Build +BR2_GLOBAL_PATCH_DIR="board/olimex/stmp1_olinuxino/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="stmp1-olinuxino" +BR2_TARGET_GENERIC_ISSUE="Welcome to OLinuXino!" +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_OVERLAY="board/olimex/stmp1_olinuxino/rootfs_overlay" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olimex/stmp1_olinuxino/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/OLIMEX/linux-olimex.git" +# branch release-20230622-v5.10.180 +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="fc74113e14d76aea9482264ff42e07397b94553d" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/olimex/stmp1_olinuxino/linux.config" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="stm32mp1xx-olinuxino-lime" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/OLIMEX/u-boot-olinuxino.git" +# release-20230515, based on 2021.04 +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="efadf793a0a5924e2c96362dc1df3e56622ebb97" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="STM32-OLinuXino-LIME" +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_FORMAT_STM32=y +BR2_TARGET_UBOOT_BUILD_FORMAT_STM32_LEGACY=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/u-boot-spl.stm32" + +# Additional tools +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/olpc_xo175_defconfig b/configs/olpc_xo175_defconfig new file mode 100644 index 00000000..bb7aa047 --- /dev/null +++ b/configs/olpc_xo175_defconfig @@ -0,0 +1,29 @@ +BR2_arm=y +BR2_pj4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_8=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/olpc/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olpc/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.8.2" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/olpc/xo-1.75/linux.config" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/olpc/linux.config" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V8=y +BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V9=y +BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8688=y +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8787=y +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8797=y +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8887=y +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8897=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_LABEL="XO175" +BR2_TARGET_ROOTFS_EXT2_SIZE="32M" +BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS="-O dir_index,^huge_file,^64bit,^extent" +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/olpc_xo1_defconfig b/configs/olpc_xo1_defconfig new file mode 100644 index 00000000..41226d89 --- /dev/null +++ b/configs/olpc_xo1_defconfig @@ -0,0 +1,27 @@ +BR2_x86_geode=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_7=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/olpc/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olpc/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.7.1" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/olpc/xo-1/linux.config" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/olpc/linux.config" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_USB8388_V9=y +BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_USB8388_OLPC=y +BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_USB_THINFIRM=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_LABEL="XO1" +BR2_TARGET_ROOTFS_EXT2_SIZE="32M" +BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS="-O dir_index,^huge_file,^64bit,^extent" +BR2_TARGET_ROOTFS_JFFS2=y +BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K=y +BR2_TARGET_ROOTFS_JFFS2_PAD=y +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/openblocks_a6_defconfig b/configs/openblocks_a6_defconfig new file mode 100644 index 00000000..6a816597 --- /dev/null +++ b/configs/openblocks_a6_defconfig @@ -0,0 +1,26 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# system +BR2_GLOBAL_PATCH_DIR="board/openblocks/a6/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_TARGET_GENERIC_HOSTNAME="openblocks-a6" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_SYSTEM_DHCP="eth0" + +# filesystem +BR2_TARGET_ROOTFS_JFFS2=y +BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_16K=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.336" +BR2_LINUX_KERNEL_DEFCONFIG="mvebu_v5" +BR2_LINUX_KERNEL_APPENDED_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="kirkwood-openblocks_a6" diff --git a/configs/orangepi_lite2_defconfig b/configs/orangepi_lite2_defconfig new file mode 100644 index 00000000..c6be1c46 --- /dev/null +++ b/configs/orangepi_lite2_defconfig @@ -0,0 +1,60 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/ARM-software/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="v2.0" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50i_h6" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/amarula/u-boot-amarula" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="h6-v1.0a" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_lite2" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,amarula,linux-amarula,h6-v1.0b)/linux-amarula_h6-v1.0b.tar.gz" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-h6-orangepi-lite2" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Orangepi Lite2" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-lite2/genimage.cfg" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/orangepi-lite2/post-build.sh" +BR2_ROOTFS_OVERLAY="board/orangepi/orangepi-lite2/rootfs_overlay" + +# wireless firmware +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX=y + +# wireless tools +BR2_PACKAGE_IW=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y +BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y diff --git a/configs/orangepi_lite_defconfig b/configs/orangepi_lite_defconfig new file mode 100644 index 00000000..f1c63f9b --- /dev/null +++ b/configs/orangepi_lite_defconfig @@ -0,0 +1,38 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/orangepi/orangepi-lite/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_Lite" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi Lite" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BINARIES_DIR)/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.16" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-lite/linux-extras.config" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun8i-h3-orangepi-lite" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_RTL8189FS=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_lite" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=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/configs/orangepi_one_defconfig b/configs/orangepi_one_defconfig new file mode 100644 index 00000000..14316196 --- /dev/null +++ b/configs/orangepi_one_defconfig @@ -0,0 +1,33 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_One" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi One" +BR2_SYSTEM_DHCP="eth0" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.3" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun8i-h3-orangepi-one" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.10" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_one" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BINARIES_DIR)/genimage.cfg" diff --git a/configs/orangepi_one_plus_defconfig b/configs/orangepi_one_plus_defconfig new file mode 100644 index 00000000..1084d422 --- /dev/null +++ b/configs/orangepi_one_plus_defconfig @@ -0,0 +1,46 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/ARM-software/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="v2.0" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50i_h6" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.09" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_one_plus" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,amarula,linux-amarula,h6-v1.0b)/linux-amarula_h6-v1.0b.tar.gz" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-h6-orangepi-one-plus" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Orangepi One+" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-one-plus/genimage.cfg" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/orangepi-one-plus/post-build.sh" diff --git a/configs/orangepi_pc2_defconfig b/configs/orangepi_pc2_defconfig new file mode 100644 index 00000000..46d04b34 --- /dev/null +++ b/configs/orangepi_pc2_defconfig @@ -0,0 +1,37 @@ +BR2_aarch64=y +BR2_ARM_FPU_VFPV4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y +BR2_TARGET_GENERIC_ISSUE="Welcome to Orangepi PC2" +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BINARIES_DIR)/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.45" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-h5-orangepi-pc2" +BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="128M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.9" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50i_a64" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_pc2" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="SCP=/dev/null" +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/orangepi_pc_defconfig b/configs/orangepi_pc_defconfig new file mode 100644 index 00000000..17c61092 --- /dev/null +++ b/configs/orangepi_pc_defconfig @@ -0,0 +1,35 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y +BR2_GLOBAL_PATCH_DIR="board/orangepi/orangepi-pc/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_PC" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi PC" +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BINARIES_DIR)/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.91" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-pc/linux.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-orangepi-pc" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_pc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/orangepi_pc_plus_defconfig b/configs/orangepi_pc_plus_defconfig new file mode 100644 index 00000000..068eb096 --- /dev/null +++ b/configs/orangepi_pc_plus_defconfig @@ -0,0 +1,48 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_PC_Plus" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi PC Plus" +BR2_SYSTEM_DHCP="eth0" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.3" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun8i-h3-orangepi-pc-plus" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-pc-plus/linux-extras.config" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.10" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_pc_plus" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BINARIES_DIR)/genimage.cfg" + +# wireless driver and firmware +BR2_PACKAGE_RTL8189FS=y +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y + +# wireless tools +BR2_PACKAGE_IW=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WIRELESS_TOOLS_LIB=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y diff --git a/configs/orangepi_r1_defconfig b/configs/orangepi_r1_defconfig new file mode 100644 index 00000000..405e0a67 --- /dev/null +++ b/configs/orangepi_r1_defconfig @@ -0,0 +1,42 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/orangepi/orangepi-r1/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_R1" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi R1" +BR2_SYSTEM_DHCP="eth0" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.31" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun8i-h2-plus-orangepi-r1" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-r1/linux-extras.config" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_r1" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=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 +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-r1/boot.cmd" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-r1/genimage.cfg" + +# spi flash support +BR2_PACKAGE_MTD=y diff --git a/configs/orangepi_zero2w_defconfig b/configs/orangepi_zero2w_defconfig new file mode 100644 index 00000000..4d8f25f4 --- /dev/null +++ b/configs/orangepi_zero2w_defconfig @@ -0,0 +1,58 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_8=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y + +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_GLOBAL_PATCH_DIR="board/orangepi/orangepi-zero2w/patches" + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.10" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50i_h616" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_zero2w" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="SCP=/dev/null" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.6" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-h618-orangepi-zero2w" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME=y + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Orangepi Zero2W" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="256M" +# BR2_TARGET_ROOTFS_TAR is not set + +# host tools +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y + +# image scripts +BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BINARIES_DIR)/genimage.cfg" diff --git a/configs/orangepi_zero3_defconfig b/configs/orangepi_zero3_defconfig new file mode 100644 index 00000000..93d53dc3 --- /dev/null +++ b/configs/orangepi_zero3_defconfig @@ -0,0 +1,56 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_7=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_SYSTEM_DHCP="eth0" + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.10" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50i_h616" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_zero3" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="SCP=/dev/null" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.7" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-h618-orangepi-zero3" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME=y + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Orangepi Zero3" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set + +# host tools +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y + +# image scripts +BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BINARIES_DIR)/genimage.cfg" diff --git a/configs/orangepi_zero_defconfig b/configs/orangepi_zero_defconfig new file mode 100644 index 00000000..596805bd --- /dev/null +++ b/configs/orangepi_zero_defconfig @@ -0,0 +1,65 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_Zero" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi Zero" +BR2_GLOBAL_PATCH_DIR="board/orangepi/orangepi-zero/patches" +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_SYSTEM_DHCP="eth0" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.3" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun8i-h2-plus-orangepi-zero" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-zero/linux-extras.fragment" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.10" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_zero" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" + +# Required tools to create the SD image +BR2_PACKAGE_HOST_GENIMAGE=y + +# Image +BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BINARIES_DIR)/genimage.cfg" + +# Wireless driver and firmware +BR2_PACKAGE_XR819_XRADIO=y +BR2_PACKAGE_ARMBIAN_FIRMWARE=y +BR2_PACKAGE_ARMBIAN_FIRMWARE_XR819=y + +# Wireless support +BR2_PACKAGE_IW=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WIRELESS_TOOLS_LIB=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y + +# Spi flash support +BR2_PACKAGE_MTD=y diff --git a/configs/orangepi_zero_plus2_defconfig b/configs/orangepi_zero_plus2_defconfig new file mode 100644 index 00000000..990e1646 --- /dev/null +++ b/configs/orangepi_zero_plus2_defconfig @@ -0,0 +1,67 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_ROOTFS_OVERLAY="board/orangepi/orangepi-zero-plus2/rootfs_overlay" + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.9" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50i_a64" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.10" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_zero_plus2" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="SCP=/dev/null" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.3" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-h5-orangepi-zero-plus2" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-zero-plus2/linux-extras.config" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME=y + +# wireless firmware +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX=y + +# wireless tools +BR2_PACKAGE_IW=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WIRELESS_TOOLS_LIB=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Orangepi Zero Plus2" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="128M" + +# host tools +BR2_PACKAGE_HOST_GENIMAGE=y + +# image scripts +BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BINARIES_DIR)/genimage.cfg" diff --git a/configs/orangepi_zero_plus_defconfig b/configs/orangepi_zero_plus_defconfig new file mode 100644 index 00000000..c564d8a3 --- /dev/null +++ b/configs/orangepi_zero_plus_defconfig @@ -0,0 +1,54 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_SYSTEM_DHCP="eth0" + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.9" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50i_a64" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.07.02" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_zero_plus" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="SCP=/dev/null" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.53" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-h5-orangepi-zero-plus" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME=y + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Orangepi Zero Plus" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" + +# host tools +BR2_PACKAGE_HOST_GENIMAGE=y + +# image scripts +BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BINARIES_DIR)/genimage.cfg" diff --git a/configs/pc_x86_64_bios_defconfig b/configs/pc_x86_64_bios_defconfig new file mode 100644 index 00000000..cba92ad9 --- /dev/null +++ b/configs/pc_x86_64_bios_defconfig @@ -0,0 +1,65 @@ +# Architecture +BR2_x86_64=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="tty1" +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + +# Required tools to create bootable media +BR2_PACKAGE_HOST_GENIMAGE=y + +# Bootloader +BR2_TARGET_GRUB2=y +BR2_TARGET_GRUB2_INSTALL_TOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/pc/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/pc/genimage-bios.cfg" + +# Linux headers same as kernel, a 6.1 LTS series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.24" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/pc/linux.config" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y + +# Firmware +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265=y +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y + +# Packages +# +# Use connman so that networking setup is simpler, via connmanctl tool +# acpid is for seamless power button support +BR2_PACKAGE_ACPID=y +BR2_PACKAGE_CONNMAN=y +BR2_PACKAGE_CONNMAN_CLIENT=y +BR2_PACKAGE_CONNMAN_WIFI=y +BR2_PACKAGE_WIRELESS_REGDB=y diff --git a/configs/pc_x86_64_efi_defconfig b/configs/pc_x86_64_efi_defconfig new file mode 100644 index 00000000..fe6686b4 --- /dev/null +++ b/configs/pc_x86_64_efi_defconfig @@ -0,0 +1,66 @@ +# Architecture +BR2_x86_64=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="tty1" +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + +# Required tools to create bootable media +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Bootloader +BR2_TARGET_GRUB2=y +BR2_TARGET_GRUB2_X86_64_EFI=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/pc/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/pc/post-image-efi.sh" + +# Linux headers same as kernel, a 6.1 LTS series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.24" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/pc/linux.config" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y + +# Firmware +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265=y +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y + +# Packages +# +# Use connman so that networking setup is simpler, via connmanctl tool +# acpid is for seamless power button support +BR2_PACKAGE_ACPID=y +BR2_PACKAGE_CONNMAN=y +BR2_PACKAGE_CONNMAN_CLIENT=y +BR2_PACKAGE_CONNMAN_WIFI=y +BR2_PACKAGE_WIRELESS_REGDB=y diff --git a/configs/pcengines_apu2_defconfig b/configs/pcengines_apu2_defconfig new file mode 100644 index 00000000..a8580855 --- /dev/null +++ b/configs/pcengines_apu2_defconfig @@ -0,0 +1,28 @@ +# Architecture +BR2_x86_64=y + +# Kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_16=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/pcengines/apu2/linux.config" +BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y + +# Default hostname and TTY +BR2_TARGET_GENERIC_HOSTNAME="apu2" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Networking +BR2_SYSTEM_DHCP="eth0" + +# Rootfs +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_ISO9660=y +BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="board/pcengines/apu2/isolinux.cfg" +BR2_TARGET_ROOTFS_ISO9660_HYBRID=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloader +BR2_TARGET_SYSLINUX=y diff --git a/configs/pine64_defconfig b/configs/pine64_defconfig new file mode 100644 index 00000000..c454114d --- /dev/null +++ b/configs/pine64_defconfig @@ -0,0 +1,49 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 5.0 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.7" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50i_a64" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="pine64_plus" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/pine64/pine64/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.0" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-a64-pine64" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to PINE64" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/pine64/pine64/genimage.cfg" diff --git a/configs/pine64_pinecube_defconfig b/configs/pine64_pinecube_defconfig new file mode 100644 index 00000000..5cdaf59f --- /dev/null +++ b/configs/pine64_pinecube_defconfig @@ -0,0 +1,45 @@ +# Target options +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y + +# Toolchain options +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="pinecube" +BR2_TARGET_GENERIC_ISSUE="Welcome to Pine64 Pinecube" +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/pine64/pinecube/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/pine64/pinecube/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.60" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-s3-pinecube" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.10" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="pinecube" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" + +# Required host utilities for building an SDCard image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/pine64_sopine_defconfig b/configs/pine64_sopine_defconfig new file mode 100644 index 00000000..f59f2387 --- /dev/null +++ b/configs/pine64_sopine_defconfig @@ -0,0 +1,49 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 5.0 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.7" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50i_a64" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sopine_baseboard" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/pine64/sopine/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.0" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-a64-sopine-baseboard" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to PINE64 SOPINE" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/pine64/sopine/genimage.cfg" diff --git a/configs/pine64_star64_defconfig b/configs/pine64_star64_defconfig new file mode 100644 index 00000000..9852e6d8 --- /dev/null +++ b/configs/pine64_star64_defconfig @@ -0,0 +1,41 @@ +BR2_riscv=y + +# Linux headers same as kernel, a 5.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y + +# Kernel configuration +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,Fishwaldo,Star64_linux,1456c984f15e21e28fb8a9ce96d0ca10e61a71c4)/linux-1456c984f15e21e28fb8a9ce96d0ca10e61a71c4.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="pine64_star64" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="starfive/jh7110-pine64-star64" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# OpenSBI configuration +BR2_TARGET_OPENSBI=y +BR2_TARGET_OPENSBI_UBOOT_PAYLOAD=y +BR2_TARGET_OPENSBI_PLAT="generic" + +# U-Boot configuration +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,Fishwaldo,u-boot,172b47f62039605d6806fa96bd403c21cda28996)/u-boot-172b47f62039605d6806fa96bd403c21cda28996.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="pine64_star64" +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_SPL=y + +# Misc +BR2_ROOTFS_OVERLAY="board/pine64/star64/overlay/" +BR2_PACKAGE_HOST_STARFIVE_SPLTOOL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="100M" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/pine64/star64/genimage.cfg" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/pine64/star64/post-build.sh" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y diff --git a/configs/qemu_aarch64_ebbr_defconfig b/configs/qemu_aarch64_ebbr_defconfig new file mode 100644 index 00000000..9f187dcc --- /dev/null +++ b/configs/qemu_aarch64_ebbr_defconfig @@ -0,0 +1,58 @@ +# Architecture +BR2_aarch64=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh board/qemu/aarch64-ebbr/post-image.sh support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG) -c board/qemu/aarch64-ebbr/genimage.cfg" + +# Linux headers +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Packages +BR2_PACKAGE_OPTEE_CLIENT=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="200M" +# BR2_TARGET_ROOTFS_TAR is not set + +# Firmware and bootloader +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.10" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="qemu" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y +BR2_TARGET_GRUB2=y +BR2_TARGET_OPTEE_OS=y +BR2_TARGET_OPTEE_OS_NEEDS_DTC=y +BR2_TARGET_OPTEE_OS_PLATFORM="vexpress-qemu_armv8a" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="qemu_arm64" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/qemu/aarch64-ebbr/u-boot.fragment" +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y + +# Host tools +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_aarch64_sbsa_defconfig b/configs/qemu_aarch64_sbsa_defconfig new file mode 100644 index 00000000..24b059d6 --- /dev/null +++ b/configs/qemu_aarch64_sbsa_defconfig @@ -0,0 +1,54 @@ +# Architecture +BR2_aarch64=y +BR2_cortex_a57=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_EXT2_SIZE="128M" + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh board/qemu/aarch64-sbsa/assemble-flash-images support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG) -c board/qemu/aarch64-sbsa/genimage.cfg" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# UEFI firmware +BR2_TARGET_EDK2=y +BR2_TARGET_EDK2_PLATFORM_QEMU_SBSA=y +BR2_TARGET_GRUB2=y +BR2_TARGET_GRUB2_ARM64_EFI=y + +# ARM Trusted Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/ARM-software/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="v2.7" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="qemu_sbsa" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y + +# Host tools for genimage +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_MTOOLS=y + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_aarch64_virt_defconfig b/configs/qemu_aarch64_virt_defconfig new file mode 100644 index 00000000..30ecf04c --- /dev/null +++ b/configs/qemu_aarch64_virt_defconfig @@ -0,0 +1,34 @@ +# Architecture +BR2_aarch64=y +BR2_cortex_a53=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_arm_ebbr_defconfig b/configs/qemu_arm_ebbr_defconfig new file mode 100644 index 00000000..bdcd41bb --- /dev/null +++ b/configs/qemu_arm_ebbr_defconfig @@ -0,0 +1,62 @@ +# Architecture +BR2_arm=y +BR2_cortex_a15=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh board/qemu/arm-ebbr/post-image.sh support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG) -c board/qemu/arm-ebbr/genimage.cfg" + +# Linux headers +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/qemu/arm-ebbr/linux.fragment" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Packages +BR2_PACKAGE_OPTEE_CLIENT=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="200M" +# BR2_TARGET_ROOTFS_TAR is not set + +# Firmware and bootloader +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.10" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="qemu" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="BL32_RAM_LOCATION=tdram" +BR2_TARGET_GRUB2=y +BR2_TARGET_GRUB2_ARM_EFI=y +BR2_TARGET_OPTEE_OS=y +BR2_TARGET_OPTEE_OS_NEEDS_DTC=y +BR2_TARGET_OPTEE_OS_PLATFORM="vexpress-qemu_virt" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="qemu_arm" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/qemu/arm-ebbr/u-boot.fragment" +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y + +# Host tools +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_arm_versatile_defconfig b/configs/qemu_arm_versatile_defconfig new file mode 100644 index 00000000..17eb7165 --- /dev/null +++ b/configs/qemu_arm_versatile_defconfig @@ -0,0 +1,35 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_DEFCONFIG="versatile" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/qemu/arm-versatile/linux.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="arm/versatile-pb" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_arm_vexpress_defconfig b/configs/qemu_arm_vexpress_defconfig new file mode 100644 index 00000000..de09400f --- /dev/null +++ b/configs/qemu_arm_vexpress_defconfig @@ -0,0 +1,39 @@ +# Architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3D16=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" +# Qemu >= 5.1 requires an SD card size to be a power of 2, e.g. 64 MiB. +BR2_TARGET_ROOTFS_EXT2_SIZE="64M" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_DEFCONFIG="vexpress" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="arm/vexpress-v2p-ca9" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_arm_vexpress_tz_defconfig b/configs/qemu_arm_vexpress_tz_defconfig new file mode 100644 index 00000000..900bd17f --- /dev/null +++ b/configs/qemu_arm_vexpress_tz_defconfig @@ -0,0 +1,68 @@ +# Architecture +BR2_arm=y +BR2_cortex_a15=y +BR2_ARM_FPU_VFPV3D16=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/qemu/arm-vexpress-tz/post-build.sh" + +# optee-test needs toolchain C++ +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# Filesystem +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_GZIP=y +BR2_TARGET_ROOTFS_CPIO_UIMAGE=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_DEFCONFIG="vexpress" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/qemu/arm-vexpress-tz/linux.fragment" + +# TF-A for booting OP-TEE secure and uboot/linux non secure +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.7" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="qemu" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="BL32_RAM_LOCATION=tdram" + +# OP-TEE components +BR2_TARGET_OPTEE_OS=y +BR2_TARGET_OPTEE_OS_NEEDS_DTC=y +BR2_TARGET_OPTEE_OS_PLATFORM="vexpress-qemu_virt" +BR2_PACKAGE_OPTEE_EXAMPLES=y +BR2_PACKAGE_OPTEE_TEST=y + +# Enable OpenSSL library for some optee-test tests +BR2_PACKAGE_OPENSSL=y +BR2_PACKAGE_LIBOPENSSL=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# U-boot for booting the dear Linux kernel +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="qemu_arm" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/qemu/arm-vexpress-tz/u-boot.config" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_m68k_mcf5208_defconfig b/configs/qemu_m68k_mcf5208_defconfig new file mode 100644 index 00000000..6a1c9900 --- /dev/null +++ b/configs/qemu_m68k_mcf5208_defconfig @@ -0,0 +1,37 @@ +# Architecture +BR2_m68k=y +BR2_m68k_cf5208=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_INITRAMFS=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/m68k-mcf5208/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_m68k_q800_defconfig b/configs/qemu_m68k_q800_defconfig new file mode 100644 index 00000000..18a40907 --- /dev/null +++ b/configs/qemu_m68k_q800_defconfig @@ -0,0 +1,37 @@ +# Architecture +BR2_m68k=y +BR2_m68k_68040=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/m68k-q800/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_microblazebe_mmu_defconfig b/configs/qemu_microblazebe_mmu_defconfig new file mode 100644 index 00000000..fd1689b8 --- /dev/null +++ b/configs/qemu_microblazebe_mmu_defconfig @@ -0,0 +1,34 @@ +# Architecture +BR2_microblaze=y +BR2_microblazebe=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyUL0" + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/microblazebe-mmu/linux.config" +BR2_LINUX_KERNEL_LINUX_BIN=y + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_microblazeel_mmu_defconfig b/configs/qemu_microblazeel_mmu_defconfig new file mode 100644 index 00000000..88d3b560 --- /dev/null +++ b/configs/qemu_microblazeel_mmu_defconfig @@ -0,0 +1,34 @@ +# Architecture +BR2_microblaze=y +BR2_microblazeel=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyUL0" + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/microblazeel-mmu/linux.config" +BR2_LINUX_KERNEL_LINUX_BIN=y + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_mips32r2_malta_defconfig b/configs/qemu_mips32r2_malta_defconfig new file mode 100644 index 00000000..a4145608 --- /dev/null +++ b/configs/qemu_mips32r2_malta_defconfig @@ -0,0 +1,37 @@ +# Architecture +BR2_mips=y +BR2_mips_32r2=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r2-malta/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_mips32r2el_malta_defconfig b/configs/qemu_mips32r2el_malta_defconfig new file mode 100644 index 00000000..6385914a --- /dev/null +++ b/configs/qemu_mips32r2el_malta_defconfig @@ -0,0 +1,37 @@ +# Architecture +BR2_mipsel=y +BR2_mips_32r2=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r2el-malta/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_mips32r6_malta_defconfig b/configs/qemu_mips32r6_malta_defconfig new file mode 100644 index 00000000..c3a94210 --- /dev/null +++ b/configs/qemu_mips32r6_malta_defconfig @@ -0,0 +1,37 @@ +# Architecture +BR2_mips=y +BR2_mips_32r6=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r6-malta/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_mips32r6el_malta_defconfig b/configs/qemu_mips32r6el_malta_defconfig new file mode 100644 index 00000000..fdd26d18 --- /dev/null +++ b/configs/qemu_mips32r6el_malta_defconfig @@ -0,0 +1,37 @@ +# Architecture +BR2_mipsel=y +BR2_mips_32r6=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r6el-malta/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_mips64_malta_defconfig b/configs/qemu_mips64_malta_defconfig new file mode 100644 index 00000000..5126b2cc --- /dev/null +++ b/configs/qemu_mips64_malta_defconfig @@ -0,0 +1,37 @@ +# Architecture +BR2_mips64=y +BR2_MIPS_NABI64=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64-malta/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_mips64el_malta_defconfig b/configs/qemu_mips64el_malta_defconfig new file mode 100644 index 00000000..ad7a76eb --- /dev/null +++ b/configs/qemu_mips64el_malta_defconfig @@ -0,0 +1,37 @@ +# Architecture +BR2_mips64el=y +BR2_MIPS_NABI64=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64el-malta/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_mips64r6_malta_defconfig b/configs/qemu_mips64r6_malta_defconfig new file mode 100644 index 00000000..de671052 --- /dev/null +++ b/configs/qemu_mips64r6_malta_defconfig @@ -0,0 +1,38 @@ +# Architecture +BR2_mips64=y +BR2_mips_64r6=y +BR2_MIPS_NABI64=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64r6-malta/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_mips64r6el_malta_defconfig b/configs/qemu_mips64r6el_malta_defconfig new file mode 100644 index 00000000..51097c3a --- /dev/null +++ b/configs/qemu_mips64r6el_malta_defconfig @@ -0,0 +1,38 @@ +# Architecture +BR2_mips64el=y +BR2_mips_64r6=y +BR2_MIPS_NABI64=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64r6el-malta/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_nios2_10m50_defconfig b/configs/qemu_nios2_10m50_defconfig new file mode 100644 index 00000000..67419827 --- /dev/null +++ b/configs/qemu_nios2_10m50_defconfig @@ -0,0 +1,26 @@ +BR2_nios2=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_DEFCONFIG="10m50" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/qemu/nios2-10m50/linux.fragment" +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel needs mkimage +BR2_PACKAGE_HOST_UBOOT_TOOLS=y + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_or1k_defconfig b/configs/qemu_or1k_defconfig new file mode 100644 index 00000000..77ecb555 --- /dev/null +++ b/configs/qemu_or1k_defconfig @@ -0,0 +1,31 @@ +# Architecture +BR2_or1k=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/or1k/linux.config" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_ppc64_e5500_defconfig b/configs/qemu_ppc64_e5500_defconfig new file mode 100644 index 00000000..a63bc011 --- /dev/null +++ b/configs/qemu_ppc64_e5500_defconfig @@ -0,0 +1,34 @@ +# Architecture +BR2_powerpc64=y +BR2_powerpc_e5500=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as the kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_DEFCONFIG="corenet64_smp" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/qemu/ppc64-e5500/linux.fragment" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_ppc64_pseries_defconfig b/configs/qemu_ppc64_pseries_defconfig new file mode 100644 index 00000000..40016a55 --- /dev/null +++ b/configs/qemu_ppc64_pseries_defconfig @@ -0,0 +1,35 @@ +# Architecture +BR2_powerpc64=y +BR2_powerpc_power7=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="hvc0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_DEFCONFIG="pseries" +BR2_LINUX_KERNEL_VMLINUX=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_ppc64le_powernv8_defconfig b/configs/qemu_ppc64le_powernv8_defconfig new file mode 100644 index 00000000..763a428e --- /dev/null +++ b/configs/qemu_ppc64le_powernv8_defconfig @@ -0,0 +1,34 @@ +# Architecture +BR2_powerpc64le=y +BR2_powerpc_power8=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="hvc0" +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_DEFCONFIG="powernv" +BR2_LINUX_KERNEL_VMLINUX=y +BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_ppc64le_pseries_defconfig b/configs/qemu_ppc64le_pseries_defconfig new file mode 100644 index 00000000..fbcad654 --- /dev/null +++ b/configs/qemu_ppc64le_pseries_defconfig @@ -0,0 +1,35 @@ +# Architecture +BR2_powerpc64le=y +BR2_powerpc_power8=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="hvc0" +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_DEFCONFIG="pseries_le" +BR2_LINUX_KERNEL_VMLINUX=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_ppc_bamboo_defconfig b/configs/qemu_ppc_bamboo_defconfig new file mode 100644 index 00000000..e5d4e055 --- /dev/null +++ b/configs/qemu_ppc_bamboo_defconfig @@ -0,0 +1,40 @@ +# Architecture +BR2_powerpc=y +BR2_powerpc_440fp=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_DEFCONFIG="44x/bamboo" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/qemu/ppc-bamboo/linux.fragment" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Kernel needs mkimage +BR2_PACKAGE_HOST_UBOOT_TOOLS=y + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_ppc_e500mc_defconfig b/configs/qemu_ppc_e500mc_defconfig new file mode 100644 index 00000000..dc9598b5 --- /dev/null +++ b/configs/qemu_ppc_e500mc_defconfig @@ -0,0 +1,34 @@ +# Architecture +BR2_powerpc=y +BR2_powerpc_e500mc=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as the kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_DEFCONFIG="corenet32_smp" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/qemu/ppc-e500mc/linux.fragment" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_ppc_g3beige_defconfig b/configs/qemu_ppc_g3beige_defconfig new file mode 100644 index 00000000..85a97458 --- /dev/null +++ b/configs/qemu_ppc_g3beige_defconfig @@ -0,0 +1,37 @@ +# Architecture +BR2_powerpc=y +BR2_powerpc_750=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/ppc-g3beige/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_ppc_mac99_defconfig b/configs/qemu_ppc_mac99_defconfig new file mode 100644 index 00000000..5df26eb5 --- /dev/null +++ b/configs/qemu_ppc_mac99_defconfig @@ -0,0 +1,38 @@ +# Architecture +BR2_powerpc=y +BR2_powerpc_7400=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_DEFCONFIG="pmac32" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/qemu/ppc-mac99/linux.fragment" +BR2_LINUX_KERNEL_VMLINUX=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Filesystem +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_ppc_mpc8544ds_defconfig b/configs/qemu_ppc_mpc8544ds_defconfig new file mode 100644 index 00000000..cc0429e0 --- /dev/null +++ b/configs/qemu_ppc_mpc8544ds_defconfig @@ -0,0 +1,40 @@ +# Architecture +BR2_powerpc=y +BR2_powerpc_8548=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/ppc-mpc8544ds/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Kernel needs mkimage +BR2_PACKAGE_HOST_UBOOT_TOOLS=y + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_riscv32_nommu_virt_defconfig b/configs/qemu_riscv32_nommu_virt_defconfig new file mode 100644 index 00000000..b958d42d --- /dev/null +++ b/configs/qemu_riscv32_nommu_virt_defconfig @@ -0,0 +1,34 @@ +# Architecture +BR2_riscv=y +BR2_RISCV_32=y +# BR2_RISCV_USE_MMU is not set + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/riscv32-virt/linux-nommu.config" +BR2_LINUX_KERNEL_IMAGE=y + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_riscv32_virt_defconfig b/configs/qemu_riscv32_virt_defconfig new file mode 100644 index 00000000..631526b6 --- /dev/null +++ b/configs/qemu_riscv32_virt_defconfig @@ -0,0 +1,38 @@ +# Architecture +BR2_riscv=y +BR2_RISCV_32=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_DEFCONFIG="rv32" +BR2_LINUX_KERNEL_IMAGE=y + +# Bootloader +BR2_TARGET_OPENSBI=y +BR2_TARGET_OPENSBI_CUSTOM_VERSION=y +BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE="1.2" +BR2_TARGET_OPENSBI_PLAT="generic" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_riscv64_nommu_virt_defconfig b/configs/qemu_riscv64_nommu_virt_defconfig new file mode 100644 index 00000000..81214e54 --- /dev/null +++ b/configs/qemu_riscv64_nommu_virt_defconfig @@ -0,0 +1,34 @@ +# Architecture +BR2_riscv=y +BR2_RISCV_64=y +# BR2_RISCV_USE_MMU is not set + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/riscv64-virt/linux-nommu.config" +BR2_LINUX_KERNEL_IMAGE=y + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_riscv64_virt_defconfig b/configs/qemu_riscv64_virt_defconfig new file mode 100644 index 00000000..31ac1d1e --- /dev/null +++ b/configs/qemu_riscv64_virt_defconfig @@ -0,0 +1,38 @@ +# Architecture +BR2_riscv=y +BR2_RISCV_64=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_IMAGE=y + +# Bootloader +BR2_TARGET_OPENSBI=y +BR2_TARGET_OPENSBI_CUSTOM_VERSION=y +BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE="1.2" +BR2_TARGET_OPENSBI_PLAT="generic" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_riscv64_virt_efi_defconfig b/configs/qemu_riscv64_virt_efi_defconfig new file mode 100644 index 00000000..b789c43d --- /dev/null +++ b/configs/qemu_riscv64_virt_efi_defconfig @@ -0,0 +1,25 @@ +# Architecture +BR2_riscv=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh board/qemu/riscv64-virt-efi/assemble-flash-images support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG) -c board/qemu/riscv64-virt-efi/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_EDK2=y +BR2_TARGET_GRUB2=y +BR2_TARGET_GRUB2_RISCV64_EFI=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_s390x_defconfig b/configs/qemu_s390x_defconfig new file mode 100644 index 00000000..b22af68b --- /dev/null +++ b/configs/qemu_s390x_defconfig @@ -0,0 +1,31 @@ +# Architecture +BR2_s390x=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_sh4_r2d_defconfig b/configs/qemu_sh4_r2d_defconfig new file mode 100644 index 00000000..7b7af6f0 --- /dev/null +++ b/configs/qemu_sh4_r2d_defconfig @@ -0,0 +1,34 @@ +# Architecture +BR2_sh=y +BR2_sh4=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttySC1" + +# Filesystem +BR2_TARGET_ROOTFS_INITRAMFS=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Linux kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sh4-r2d/linux.config" +BR2_LINUX_KERNEL_ZIMAGE=y + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_sh4eb_r2d_defconfig b/configs/qemu_sh4eb_r2d_defconfig new file mode 100644 index 00000000..18f3805c --- /dev/null +++ b/configs/qemu_sh4eb_r2d_defconfig @@ -0,0 +1,33 @@ +# Architecture +BR2_sh=y +BR2_sh4eb=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttySC1" + +# Filesystem +BR2_TARGET_ROOTFS_INITRAMFS=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Linux kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sh4eb-r2d/linux.config" +BR2_LINUX_KERNEL_ZIMAGE=y + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_sparc64_sun4u_defconfig b/configs/qemu_sparc64_sun4u_defconfig new file mode 100644 index 00000000..f72bc578 --- /dev/null +++ b/configs/qemu_sparc64_sun4u_defconfig @@ -0,0 +1,32 @@ +# Architecture +BR2_sparc64=y +BR2_sparc_v9=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Linux kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc64-sun4u/linux.config" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_sparc_ss10_defconfig b/configs/qemu_sparc_ss10_defconfig new file mode 100644 index 00000000..ec90a580 --- /dev/null +++ b/configs/qemu_sparc_ss10_defconfig @@ -0,0 +1,32 @@ +# Architecture +BR2_sparc=y +BR2_sparc_v8=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Linux kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc-ss10/linux.config" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_x86_64_defconfig b/configs/qemu_x86_64_defconfig new file mode 100644 index 00000000..2a24533d --- /dev/null +++ b/configs/qemu_x86_64_defconfig @@ -0,0 +1,35 @@ +# Architecture +BR2_x86_64=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_BUILD_SCRIPT="board/qemu/x86_64/post-build.sh" + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86_64/linux.config" +BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_x86_defconfig b/configs/qemu_x86_defconfig new file mode 100644 index 00000000..a8596dae --- /dev/null +++ b/configs/qemu_x86_defconfig @@ -0,0 +1,35 @@ +# Architecture +BR2_i386=y +BR2_x86_pentiumpro=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_BUILD_SCRIPT="board/qemu/x86/post-build.sh" + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86/linux.config" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_xtensa_lx60_defconfig b/configs/qemu_xtensa_lx60_defconfig new file mode 100644 index 00000000..69f65bf9 --- /dev/null +++ b/configs/qemu_xtensa_lx60_defconfig @@ -0,0 +1,40 @@ +# Architecture +BR2_xtensa=y +BR2_XTENSA_CUSTOM=y +BR2_XTENSA_OVERLAY_FILE="https://github.com/jcmvbkbc/xtensa-toolchain-build/raw/95291b7c39e6f790d0b2f062c945a630290f2c81/overlays/xtensa_dc233c.tar.gz" + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/xtensa-lx60/linux.config" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +BR2_LINUX_KERNEL_IMAGE_NAME="Image.elf" +BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="Image" + +# Kernel needs mkimage +BR2_PACKAGE_HOST_UBOOT_TOOLS=y + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/qemu_xtensa_lx60_nommu_defconfig b/configs/qemu_xtensa_lx60_nommu_defconfig new file mode 100644 index 00000000..ab5aaca8 --- /dev/null +++ b/configs/qemu_xtensa_lx60_nommu_defconfig @@ -0,0 +1,41 @@ +# Architecture +BR2_xtensa=y +BR2_XTENSA_CUSTOM=y +BR2_XTENSA_OVERLAY_FILE="https://github.com/jcmvbkbc/xtensa-toolchain-build/raw/95291b7c39e6f790d0b2f062c945a630290f2c81/overlays/xtensa_dc233c.tar.gz" +# BR2_XTENSA_USE_MMU is not set + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/xtensa-lx60/linux-nommu.config" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +BR2_LINUX_KERNEL_IMAGE_NAME="Image.elf" +BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="Image" + +# Kernel needs mkimage +BR2_PACKAGE_HOST_UBOOT_TOOLS=y + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y diff --git a/configs/raspberrypi0_defconfig b/configs/raspberrypi0_defconfig new file mode 100644 index 00000000..23ea25eb --- /dev/null +++ b/configs/raspberrypi0_defconfig @@ -0,0 +1,47 @@ +BR2_arm=y +BR2_arm1176jzf_s=y +BR2_ARM_EABIHF=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/raspberrypi/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,576cc10e1ed50a9eacffc7a05c796051d7343ea4)/linux-576cc10e1ed50a9eacffc7a05c796051d7343ea4.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2708-rpi-zero" + +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y +BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi0/config_default.txt" +# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi0/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi0/post-image.sh" + +# Enable compressed kernel module support +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_KMOD_TOOLS=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_KMOD=y +BR2_PACKAGE_HOST_KMOD_XZ=y diff --git a/configs/raspberrypi0w_defconfig b/configs/raspberrypi0w_defconfig new file mode 100644 index 00000000..fc40471b --- /dev/null +++ b/configs/raspberrypi0w_defconfig @@ -0,0 +1,46 @@ +BR2_arm=y +BR2_arm1176jzf_s=y +BR2_ARM_EABIHF=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/raspberrypi/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,576cc10e1ed50a9eacffc7a05c796051d7343ea4)/linux-576cc10e1ed50a9eacffc7a05c796051d7343ea4.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2708-rpi-zero-w" + +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y +BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi0w/config_0w.txt" + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi0w/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi0w/post-image.sh" + +# Enable compressed kernel module support +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_KMOD_TOOLS=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_KMOD=y +BR2_PACKAGE_HOST_KMOD_XZ=y diff --git a/configs/raspberrypi2_defconfig b/configs/raspberrypi2_defconfig new file mode 100644 index 00000000..30b7ff9f --- /dev/null +++ b/configs/raspberrypi2_defconfig @@ -0,0 +1,50 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_EABIHF=y +BR2_ARM_FPU_NEON_VFPV4=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/raspberrypi/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +BR2_SYSTEM_DHCP="eth0" + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,576cc10e1ed50a9eacffc7a05c796051d7343ea4)/linux-576cc10e1ed50a9eacffc7a05c796051d7343ea4.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2709-rpi-2-b broadcom/bcm2710-rpi-2-b" + +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y +BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi/config_default.txt" +# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi2/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi2/post-image.sh" + +# Enable compressed kernel module support +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_KMOD_TOOLS=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_KMOD=y +BR2_PACKAGE_HOST_KMOD_XZ=y diff --git a/configs/raspberrypi3_64_defconfig b/configs/raspberrypi3_64_defconfig new file mode 100644 index 00000000..bfef4683 --- /dev/null +++ b/configs/raspberrypi3_64_defconfig @@ -0,0 +1,48 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/raspberrypi/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +BR2_SYSTEM_DHCP="eth0" + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,576cc10e1ed50a9eacffc7a05c796051d7343ea4)/linux-576cc10e1ed50a9eacffc7a05c796051d7343ea4.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi3" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2710-rpi-3-b broadcom/bcm2710-rpi-3-b-plus broadcom/bcm2710-rpi-cm3" + +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y +BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi3-64/config_3_64bit.txt" + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi3-64/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi3-64/post-image.sh" + +# Enable compressed kernel module support +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_KMOD_TOOLS=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_KMOD=y +BR2_PACKAGE_HOST_KMOD_XZ=y diff --git a/configs/raspberrypi3_defconfig b/configs/raspberrypi3_defconfig new file mode 100644 index 00000000..d5541077 --- /dev/null +++ b/configs/raspberrypi3_defconfig @@ -0,0 +1,48 @@ +BR2_arm=y +BR2_cortex_a53=y +BR2_ARM_FPU_NEON_VFPV4=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/raspberrypi/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +BR2_SYSTEM_DHCP="eth0" + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,576cc10e1ed50a9eacffc7a05c796051d7343ea4)/linux-576cc10e1ed50a9eacffc7a05c796051d7343ea4.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2710-rpi-3-b broadcom/bcm2710-rpi-3-b-plus broadcom/bcm2710-rpi-cm3" + +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y +BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi3/config_3.txt" + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi3/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi3/post-image.sh" + +# Enable compressed kernel module support +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_KMOD_TOOLS=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_KMOD=y +BR2_PACKAGE_HOST_KMOD_XZ=y diff --git a/configs/raspberrypi3_qt5we_defconfig b/configs/raspberrypi3_qt5we_defconfig new file mode 100644 index 00000000..826181a2 --- /dev/null +++ b/configs/raspberrypi3_qt5we_defconfig @@ -0,0 +1,63 @@ +BR2_arm=y +BR2_cortex_a53=y +BR2_ARM_FPU_NEON_VFPV4=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/raspberrypi/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +BR2_SYSTEM_DHCP="eth0" + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,576cc10e1ed50a9eacffc7a05c796051d7343ea4)/linux-576cc10e1ed50a9eacffc7a05c796051d7343ea4.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2710-rpi-3-b broadcom/bcm2710-rpi-3-b-plus broadcom/bcm2710-rpi-cm3" + +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Build Qt5 WebEngine +BR2_PACKAGE_LIBERATION=y +BR2_PACKAGE_QT5=y +BR2_PACKAGE_QT5BASE_EXAMPLES=y +BR2_PACKAGE_QT5BASE_GIF=y +BR2_PACKAGE_QT5BASE_JPEG=y +BR2_PACKAGE_QT5BASE_PNG=y +BR2_PACKAGE_QT5WEBENGINE=y +BR2_PACKAGE_QT5WEBENGINE_PROPRIETARY_CODECS=y +BR2_PACKAGE_RPI_USERLAND=y +BR2_PACKAGE_CA_CERTIFICATES=y +BR2_PACKAGE_NTP=y + +BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y +BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi3/config_3_qt5we.txt" + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="400M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi3/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi3/post-image.sh" + +# Enable compressed kernel module support +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_KMOD_TOOLS=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_KMOD=y +BR2_PACKAGE_HOST_KMOD_XZ=y diff --git a/configs/raspberrypi4_64_defconfig b/configs/raspberrypi4_64_defconfig new file mode 100644 index 00000000..d5fa72d5 --- /dev/null +++ b/configs/raspberrypi4_64_defconfig @@ -0,0 +1,47 @@ +BR2_aarch64=y +BR2_cortex_a72=y +BR2_ARM_FPU_VFPV4=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/raspberrypi/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +BR2_SYSTEM_DHCP="eth0" + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,576cc10e1ed50a9eacffc7a05c796051d7343ea4)/linux-576cc10e1ed50a9eacffc7a05c796051d7343ea4.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="bcm2711" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2711-rpi-4-b broadcom/bcm2711-rpi-400 broadcom/bcm2711-rpi-cm4 broadcom/bcm2711-rpi-cm4s" + +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi4-64/config_4_64bit.txt" + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi4-64/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi4-64/post-image.sh" + +# Enable compressed kernel module support +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_KMOD_TOOLS=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_KMOD=y +BR2_PACKAGE_HOST_KMOD_XZ=y diff --git a/configs/raspberrypi4_defconfig b/configs/raspberrypi4_defconfig new file mode 100644 index 00000000..d7d5ec24 --- /dev/null +++ b/configs/raspberrypi4_defconfig @@ -0,0 +1,47 @@ +BR2_arm=y +BR2_cortex_a72=y +BR2_ARM_FPU_NEON_VFPV4=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/raspberrypi/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +BR2_SYSTEM_DHCP="eth0" + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,576cc10e1ed50a9eacffc7a05c796051d7343ea4)/linux-576cc10e1ed50a9eacffc7a05c796051d7343ea4.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="bcm2711" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2711-rpi-4-b broadcom/bcm2711-rpi-400 broadcom/bcm2711-rpi-cm4 broadcom/bcm2711-rpi-cm4s" + +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi4/config_4.txt" + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi4/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi4/post-image.sh" + +# Enable compressed kernel module support +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_KMOD_TOOLS=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_KMOD=y +BR2_PACKAGE_HOST_KMOD_XZ=y diff --git a/configs/raspberrypi5_defconfig b/configs/raspberrypi5_defconfig new file mode 100644 index 00000000..18fdfa13 --- /dev/null +++ b/configs/raspberrypi5_defconfig @@ -0,0 +1,48 @@ +BR2_aarch64=y +BR2_cortex_a76=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/raspberrypi/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +BR2_SYSTEM_DHCP="eth0" + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/raspberrypi/linux-4k-page-size.fragment" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,576cc10e1ed50a9eacffc7a05c796051d7343ea4)/linux-576cc10e1ed50a9eacffc7a05c796051d7343ea4.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="bcm2712" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2712-rpi-5-b broadcom/bcm2712d0-rpi-5-b" + +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi5/config_5.txt" +BR2_PACKAGE_RPI_FIRMWARE_CMDLINE_FILE="board/raspberrypi5/cmdline_5.txt" +# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi5/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi5/post-image.sh" + +# Enable compressed kernel module support +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_KMOD_TOOLS=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_KMOD=y +BR2_PACKAGE_HOST_KMOD_XZ=y diff --git a/configs/raspberrypi_defconfig b/configs/raspberrypi_defconfig new file mode 100644 index 00000000..97cb4e73 --- /dev/null +++ b/configs/raspberrypi_defconfig @@ -0,0 +1,49 @@ +BR2_arm=y +BR2_arm1176jzf_s=y +BR2_ARM_EABIHF=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/raspberrypi/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +BR2_SYSTEM_DHCP="eth0" + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,576cc10e1ed50a9eacffc7a05c796051d7343ea4)/linux-576cc10e1ed50a9eacffc7a05c796051d7343ea4.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2708-rpi-b-rev1 broadcom/bcm2708-rpi-b broadcom/bcm2708-rpi-b-plus broadcom/bcm2708-rpi-cm" + +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y +BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi/config_default.txt" +# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi/post-image.sh" + +# Enable compressed kernel module support +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_KMOD_TOOLS=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_KMOD=y +BR2_PACKAGE_HOST_KMOD_XZ=y diff --git a/configs/raspberrypicm4io_64_defconfig b/configs/raspberrypicm4io_64_defconfig new file mode 100644 index 00000000..cff9270e --- /dev/null +++ b/configs/raspberrypicm4io_64_defconfig @@ -0,0 +1,50 @@ +BR2_aarch64=y +BR2_cortex_a72=y +BR2_ARM_FPU_VFPV4=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/raspberrypi/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +BR2_SYSTEM_DHCP="eth0" + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,576cc10e1ed50a9eacffc7a05c796051d7343ea4)/linux-576cc10e1ed50a9eacffc7a05c796051d7343ea4.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="bcm2711" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2711-rpi-cm4" + +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypicm4io-64/config_cm4io_64bit.txt" + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Required tool to flash CM4 eMMC memory +BR2_PACKAGE_HOST_RASPBERRYPI_USBBOOT=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypicm4io-64/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypicm4io-64/post-image.sh" + +# Enable compressed kernel module support +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_KMOD_TOOLS=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_KMOD=y +BR2_PACKAGE_HOST_KMOD_XZ=y diff --git a/configs/raspberrypicm4io_defconfig b/configs/raspberrypicm4io_defconfig new file mode 100644 index 00000000..2972419a --- /dev/null +++ b/configs/raspberrypicm4io_defconfig @@ -0,0 +1,50 @@ +BR2_arm=y +BR2_cortex_a72=y +BR2_ARM_FPU_NEON_VFPV4=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/raspberrypi/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +BR2_SYSTEM_DHCP="eth0" + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,576cc10e1ed50a9eacffc7a05c796051d7343ea4)/linux-576cc10e1ed50a9eacffc7a05c796051d7343ea4.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="bcm2711" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2711-rpi-cm4" + +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypicm4io-64/config_cm4io.txt" + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Required tool to flash CM4 eMMC memory +BR2_PACKAGE_HOST_RASPBERRYPI_USBBOOT=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypicm4io/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypicm4io/post-image.sh" + +# Enable compressed kernel module support +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_KMOD_TOOLS=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_KMOD=y +BR2_PACKAGE_HOST_KMOD_XZ=y diff --git a/configs/raspberrypizero2w_defconfig b/configs/raspberrypizero2w_defconfig new file mode 100644 index 00000000..7f83e9a2 --- /dev/null +++ b/configs/raspberrypizero2w_defconfig @@ -0,0 +1,48 @@ +BR2_arm=y +BR2_cortex_a53=y +BR2_ARM_FPU_NEON_VFPV4=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/raspberrypi/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,576cc10e1ed50a9eacffc7a05c796051d7343ea4)/linux-576cc10e1ed50a9eacffc7a05c796051d7343ea4.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" + +# Build the DTB from the kernel sources +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2710-rpi-zero-2-w" + +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y +BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypizero2w/config_zero2w.txt" + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypizero2w/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypizero2w/post-image.sh" + +# Enable compressed kernel module support +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_KMOD_TOOLS=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_KMOD=y +BR2_PACKAGE_HOST_KMOD_XZ=y diff --git a/configs/riotboard_defconfig b/configs/riotboard_defconfig new file mode 100644 index 00000000..3efcd885 --- /dev/null +++ b/configs/riotboard_defconfig @@ -0,0 +1,42 @@ +# architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# system +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1" + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.07" +BR2_TARGET_UBOOT_BOARDNAME="riotboard" +BR2_TARGET_UBOOT_FORMAT_IMX=y + +# Linux headers same as kernel, a 4.18 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_18=y + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.18.10" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-riotboard" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# rootfs +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_ROOTFS_OVERLAY="board/embest/riotboard/rootfs_overlay" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/embest/riotboard/genimage.cfg" diff --git a/configs/roc_pc_rk3399_defconfig b/configs/roc_pc_rk3399_defconfig new file mode 100644 index 00000000..13237526 --- /dev/null +++ b/configs/roc_pc_rk3399_defconfig @@ -0,0 +1,45 @@ +BR2_aarch64=y +BR2_cortex_a72_a53=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y +BR2_TARGET_GENERIC_HOSTNAME="roc-rk3399-pc" +BR2_TARGET_GENERIC_ISSUE="Welcome to ROC-RK3399-PC!" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/firefly/roc-rk3399-pc/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/firefly/roc-rk3399-pc/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.61" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="rockchip/rk3399-roc-pc" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="130M" +BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS="-O 64bit" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="v2.9" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="rk3399" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_IMAGES="" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_ARM32_TOOLCHAIN=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.10" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="roc-pc-rk3399" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_PYELFTOOLS=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31_ELF=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="idbloader.img" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/rock5b_defconfig b/configs/rock5b_defconfig new file mode 100644 index 00000000..0778e8af --- /dev/null +++ b/configs/rock5b_defconfig @@ -0,0 +1,49 @@ +# Architecture +BR2_aarch64=y +BR2_cortex_a76_a55=y + +# Linux headers same as kernel, a 6.7 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_7=y + +# Build +BR2_GLOBAL_PATCH_DIR="board/radxa/rock5b/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rock5b-rk3588" +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_PYELFTOOLS=y +BR2_TARGET_UBOOT_NEEDS_ROCKCHIP_RKBIN=y +BR2_PACKAGE_ROCKCHIP_RKBIN=y +BR2_PACKAGE_ROCKCHIP_RKBIN_TPL_FILENAME="bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.12.bin" +BR2_PACKAGE_ROCKCHIP_RKBIN_BL31_FILENAME="bin/rk35/rk3588_bl31_v1.40.elf" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.7.4" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="rockchip/rk3588-rock-5b" +BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/radxa/rock5b/linux.fragment" + +# Filesystem +BR2_TARGET_GENERIC_HOSTNAME="rock5b" +BR2_TARGET_GENERIC_ISSUE="Welcome to the rock5b board" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="250M" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_DTC=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/radxa/rock5b/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/radxa/rock5b/genimage.cfg" diff --git a/configs/rock64_defconfig b/configs/rock64_defconfig new file mode 100644 index 00000000..2fae2298 --- /dev/null +++ b/configs/rock64_defconfig @@ -0,0 +1,40 @@ +BR2_aarch64=y +BR2_GLOBAL_PATCH_DIR="board/pine64/rock64/patches" +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS2" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/pine64/rock64/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/pine64/rock64/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.216" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="rockchip/rk3328-rock64" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="128M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.2" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="rk3328" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_IMAGES="bl31/*.elf" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/ayufan-rock64/linux-mainline-u-boot.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="release-2020-07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rock64-rk3328" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31_ELF=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/u-boot-spl.bin tpl/u-boot-tpl.bin" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/configs/rock_pi_n8_defconfig b/configs/rock_pi_n8_defconfig new file mode 100644 index 00000000..b7135d63 --- /dev/null +++ b/configs/rock_pi_n8_defconfig @@ -0,0 +1,46 @@ +# Architecture +BR2_arm=y +BR2_cortex_a17=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 5.7 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_7=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/amarula/u-boot-amarula.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="ba120841bf40ebaed049d64bb4f980083a1cf6b7" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rock-pi-n8-rk3288" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_FORMAT_DTB_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="idbloader.img" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/amarula/linux-amarula.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="5dcb0132685b07beb82065c5d7521e6c555c55b6" +BR2_LINUX_KERNEL_USE_DEFCONFIG=y +BR2_LINUX_KERNEL_DEFCONFIG="multi_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="rk3288-rock-pi-n8" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_GENERIC_HOSTNAME="rockpi-n8" +BR2_TARGET_GENERIC_ISSUE="Welcome to ROCKPI-N8" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/radxa/rockpi-n8/genimage.cfg" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/radxa/rockpi-n8/post-build.sh" diff --git a/configs/rockpro64_defconfig b/configs/rockpro64_defconfig new file mode 100644 index 00000000..0c6cdd47 --- /dev/null +++ b/configs/rockpro64_defconfig @@ -0,0 +1,57 @@ +# Architecture +BR2_aarch64=y +BR2_cortex_a72_a53=y + +# Linux headers same as kernel, a 6.5 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_5=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.9.0" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="rk3399" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_ARM32_TOOLCHAIN=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_IMAGES="" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rockpro64-rk3399" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_PYELFTOOLS=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31_ELF=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="idbloader.img" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.5.7" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="rockchip/rk3399-rockpro64" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/pine64/rockpro64/linux.fragment" + +# Filesystem +BR2_TARGET_GENERIC_HOSTNAME="rockpro64" +BR2_TARGET_GENERIC_ISSUE="Welcome to ROCKPRO64" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/pine64/rockpro64/genimage.cfg" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/pine64/rockpro64/post-build.sh" diff --git a/configs/roseapplepi_defconfig b/configs/roseapplepi_defconfig new file mode 100644 index 00000000..0f37d5dc --- /dev/null +++ b/configs/roseapplepi_defconfig @@ -0,0 +1,43 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_GLOBAL_PATCH_DIR="board/roseapplepi/patches" +# Linux headers same as kernel, a 5.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/roseapplepi/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/roseapplepi/genimage.cfg" + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.14" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/roseapplepi/linux.config" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="owl-s500-roseapplepi" + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_S500_BOOTLOADER=y +BR2_TARGET_S500_BOOTLOADER_BOARD="linux/bubble_gum_sd" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/xapp-le/u-boot.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="a035d2673a90143a1a74557503b2e137b1447ae6" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="actduino_bubble_gum_v10" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/s6lx9_microboard_defconfig b/configs/s6lx9_microboard_defconfig new file mode 100644 index 00000000..97b2d3fe --- /dev/null +++ b/configs/s6lx9_microboard_defconfig @@ -0,0 +1,13 @@ +BR2_microblaze=y +BR2_microblazeel=y +# Linux headers same as kernel, a 4.4 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyUL0" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.7" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/avnet/s6lx9_microboard/lx9_mmu_defconfig" +BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="board/avnet/s6lx9_microboard/lx9_mmu.dts" diff --git a/configs/sheevaplug_defconfig b/configs/sheevaplug_defconfig new file mode 100644 index 00000000..6b3719a5 --- /dev/null +++ b/configs/sheevaplug_defconfig @@ -0,0 +1,35 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# system +BR2_GLOBAL_PATCH_DIR="board/sheevaplug/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_SYSTEM_DHCP="eth0" + +# filesystem +BR2_TARGET_ROOTFS_JFFS2=y +BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sheevaplug" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.07" +BR2_TARGET_UBOOT_FORMAT_KWB=y +# BR2_TARGET_UBOOT_NETWORK is not set + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.336" +BR2_LINUX_KERNEL_DEFCONFIG="mvebu_v5" +BR2_LINUX_KERNEL_APPENDED_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="kirkwood-sheevaplug" diff --git a/configs/sipeed_lichee_rv_defconfig b/configs/sipeed_lichee_rv_defconfig new file mode 100644 index 00000000..750d2d6e --- /dev/null +++ b/configs/sipeed_lichee_rv_defconfig @@ -0,0 +1,33 @@ +BR2_riscv=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y +BR2_ROOTFS_OVERLAY="board/sipeed/lichee_rv/overlay" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/sipeed/lichee_rv/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,smaeul,linux,ca67838d84af4c9f85d06311c9e98e1adf46308f)/linux-ca67838d84af4c9f85d06311c9e98e1adf46308f.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="nezha" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun20i-d1-lichee-rv" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_OPENSBI=y +BR2_TARGET_OPENSBI_CUSTOM_VERSION=y +BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE="1.2" +BR2_TARGET_OPENSBI_PLAT="generic" +# BR2_TARGET_OPENSBI_INSTALL_JUMP_IMG is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,smaeul,u-boot,528ae9bc6c55edd3ffe642734b4132a8246ea777)/uboot-528ae9bc6c55edd3ffe642734b4132a8246ea777.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="lichee_rv_dock" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_OPENSBI=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/sipeed_lichee_rv_dock_defconfig b/configs/sipeed_lichee_rv_dock_defconfig new file mode 100644 index 00000000..a228cd8c --- /dev/null +++ b/configs/sipeed_lichee_rv_dock_defconfig @@ -0,0 +1,41 @@ +BR2_riscv=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_ROOTFS_OVERLAY="board/sipeed/lichee_rv/overlay board/sipeed/lichee_rv_dock/overlay" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/sipeed/lichee_rv_dock/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,smaeul,linux,ca67838d84af4c9f85d06311c9e98e1adf46308f)/linux-ca67838d84af4c9f85d06311c9e98e1adf46308f.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="nezha" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun20i-d1-lichee-rv-dock" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/sipeed/lichee_rv_dock/linux.fragment" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_PACKAGE_RTL8723DS=y +BR2_PACKAGE_RTL8723DS_BT=y +BR2_PACKAGE_BLUEZ5_UTILS=y +BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_OPENSBI=y +BR2_TARGET_OPENSBI_CUSTOM_VERSION=y +BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE="1.2" +BR2_TARGET_OPENSBI_PLAT="generic" +# BR2_TARGET_OPENSBI_INSTALL_JUMP_IMG is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,smaeul,u-boot,528ae9bc6c55edd3ffe642734b4132a8246ea777)/uboot-528ae9bc6c55edd3ffe642734b4132a8246ea777.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="lichee_rv_dock" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_OPENSBI=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/sipeed_licheepi_nano_defconfig b/configs/sipeed_licheepi_nano_defconfig new file mode 100644 index 00000000..6eb4a306 --- /dev/null +++ b/configs/sipeed_licheepi_nano_defconfig @@ -0,0 +1,48 @@ +# Target options +BR2_arm=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="licheepi-nano" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the LicheePi Nano" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/sipeed/licheepi_nano/genimage.cfg" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_5=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.5.9" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/sipeed/licheepi_nano/linux.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/suniv-f1c100s-licheepi-nano" + +# Filesystem images +BR2_TARGET_ROOTFS_JFFS2=y +BR2_TARGET_ROOTFS_JFFS2_FLASH_64=y +BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER=y +BR2_TARGET_ROOTFS_JFFS2_PAD=y + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="licheepi_nano" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/sipeed/licheepi_nano/uboot.fragment" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y + +# Required host utilities +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_E2FSPROGS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_SUNXI_TOOLS=y diff --git a/configs/sipeed_licheepi_zero_defconfig b/configs/sipeed_licheepi_zero_defconfig new file mode 100644 index 00000000..1fa76923 --- /dev/null +++ b/configs/sipeed_licheepi_zero_defconfig @@ -0,0 +1,53 @@ +# Target options +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_3=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="licheepi-zero" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the LicheePi Zero" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/sipeed/licheepi_zero/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.5" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-v3s-licheepi-zero sun8i-v3s-licheepi-zero-dock" + +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y + +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y + +# Filesystem images +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="LicheePi_Zero" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/sipeed/licheepi_zero/boot.cmd" + +# Required host utilities for building an SDCard image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/sipeed_maix_bit_defconfig b/configs/sipeed_maix_bit_defconfig new file mode 100644 index 00000000..238e082a --- /dev/null +++ b/configs/sipeed_maix_bit_defconfig @@ -0,0 +1,37 @@ +# Architecture +BR2_riscv=y +BR2_RISCV_64=y +BR2_riscv_custom=y +BR2_RISCV_ISA_RVM=y +BR2_RISCV_ISA_RVA=y +BR2_RISCV_ISA_RVF=y +BR2_RISCV_ISA_RVD=y +BR2_RISCV_ISA_RVC=y +# BR2_RISCV_USE_MMU is not set +BR2_RISCV_ABI_LP64D=y + +# Linux headers same as kernel, a 5.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_19=y + +# Binary format +BR2_BINFMT_FLAT=y +# BR2_TARGET_ENABLE_ROOT_LOGIN is not set + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.19" +BR2_LINUX_KERNEL_DEFCONFIG="nommu_k210" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/sipeed/maix-bit/linux-cpio.config" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +BR2_LINUX_KERNEL_IMAGE_NAME="loader.bin" + +# Packages +BR2_PACKAGE_HOST_PYTHON_KFLASH=y +BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="board/canaan/k210-soc/busybox-tiny.config" +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set + +# Filesystem +BR2_INIT_NONE=y +BR2_TARGET_ROOTFS_INITRAMFS=y +BR2_ROOTFS_OVERLAY="board/canaan/k210-soc/rootfs_overlay" diff --git a/configs/sipeed_maix_bit_sdcard_defconfig b/configs/sipeed_maix_bit_sdcard_defconfig new file mode 100644 index 00000000..28aa1435 --- /dev/null +++ b/configs/sipeed_maix_bit_sdcard_defconfig @@ -0,0 +1,57 @@ +# Architecture +BR2_riscv=y +BR2_RISCV_64=y +BR2_riscv_custom=y +BR2_RISCV_ISA_RVM=y +BR2_RISCV_ISA_RVA=y +BR2_RISCV_ISA_RVF=y +BR2_RISCV_ISA_RVD=y +BR2_RISCV_ISA_RVC=y +# BR2_RISCV_USE_MMU is not set +BR2_RISCV_ABI_LP64D=y + +# Linux headers same as kernel, a 5.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_19=y + +# System +BR2_BINFMT_FLAT=y +# BR2_TARGET_ENABLE_ROOT_LOGIN is not set +BR2_GLOBAL_PATCH_DIR="board/canaan/k210-soc/patches" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.19" +BR2_LINUX_KERNEL_DEFCONFIG="nommu_k210_sdcard" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/canaan/k210-soc/linux-sdcard.config" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +BR2_LINUX_KERNEL_IMAGE_NAME="loader.bin" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="canaan/sipeed_maix_bit" + +# Packages +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set + +# Filesystem +BR2_INIT_NONE=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_SIZE="64M" +BR2_ROOTFS_OVERLAY="board/canaan/k210-soc/rootfs_overlay" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/canaan/k210-soc/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/canaan/k210-soc/genimage.cfg" + +# Bootloader and related host tools +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.04" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/canaan/k210-soc/uboot.config" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sipeed_maix_bitm" +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_PYTHON_KFLASH=y diff --git a/configs/sipeed_maix_dock_defconfig b/configs/sipeed_maix_dock_defconfig new file mode 100644 index 00000000..ee1b0d83 --- /dev/null +++ b/configs/sipeed_maix_dock_defconfig @@ -0,0 +1,37 @@ +# Architecture +BR2_riscv=y +BR2_RISCV_64=y +BR2_riscv_custom=y +BR2_RISCV_ISA_RVM=y +BR2_RISCV_ISA_RVA=y +BR2_RISCV_ISA_RVF=y +BR2_RISCV_ISA_RVD=y +BR2_RISCV_ISA_RVC=y +# BR2_RISCV_USE_MMU is not set +BR2_RISCV_ABI_LP64D=y + +# Linux headers same as kernel, a 5.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_19=y + +# Binary format +BR2_BINFMT_FLAT=y +# BR2_TARGET_ENABLE_ROOT_LOGIN is not set + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.19" +BR2_LINUX_KERNEL_DEFCONFIG="nommu_k210" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/sipeed/maix-dock/linux-cpio.config" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +BR2_LINUX_KERNEL_IMAGE_NAME="loader.bin" + +# Packages +BR2_PACKAGE_HOST_PYTHON_KFLASH=y +BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="board/canaan/k210-soc/busybox-tiny.config" +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set + +# Filesystem +BR2_INIT_NONE=y +BR2_TARGET_ROOTFS_INITRAMFS=y +BR2_ROOTFS_OVERLAY="board/canaan/k210-soc/rootfs_overlay" diff --git a/configs/sipeed_maix_dock_sdcard_defconfig b/configs/sipeed_maix_dock_sdcard_defconfig new file mode 100644 index 00000000..41a062c7 --- /dev/null +++ b/configs/sipeed_maix_dock_sdcard_defconfig @@ -0,0 +1,57 @@ +# Architecture +BR2_riscv=y +BR2_RISCV_64=y +BR2_riscv_custom=y +BR2_RISCV_ISA_RVM=y +BR2_RISCV_ISA_RVA=y +BR2_RISCV_ISA_RVF=y +BR2_RISCV_ISA_RVD=y +BR2_RISCV_ISA_RVC=y +# BR2_RISCV_USE_MMU is not set +BR2_RISCV_ABI_LP64D=y + +# Linux headers same as kernel, a 5.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_19=y + +# System +BR2_BINFMT_FLAT=y +# BR2_TARGET_ENABLE_ROOT_LOGIN is not set +BR2_GLOBAL_PATCH_DIR="board/canaan/k210-soc/patches" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.19" +BR2_LINUX_KERNEL_DEFCONFIG="nommu_k210_sdcard" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/canaan/k210-soc/linux-sdcard.config" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +BR2_LINUX_KERNEL_IMAGE_NAME="loader.bin" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="canaan/sipeed_maix_dock" + +# Packages +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set + +# Filesystem +BR2_INIT_NONE=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_SIZE="64M" +BR2_ROOTFS_OVERLAY="board/canaan/k210-soc/rootfs_overlay" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/canaan/k210-soc/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/canaan/k210-soc/genimage.cfg" + +# Bootloader and related host tools +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.04" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/canaan/k210-soc/uboot.config" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sipeed_maix_bitm" +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_PYTHON_KFLASH=y diff --git a/configs/sipeed_maix_go_defconfig b/configs/sipeed_maix_go_defconfig new file mode 100644 index 00000000..a5b09e17 --- /dev/null +++ b/configs/sipeed_maix_go_defconfig @@ -0,0 +1,37 @@ +# Architecture +BR2_riscv=y +BR2_RISCV_64=y +BR2_riscv_custom=y +BR2_RISCV_ISA_RVM=y +BR2_RISCV_ISA_RVA=y +BR2_RISCV_ISA_RVF=y +BR2_RISCV_ISA_RVD=y +BR2_RISCV_ISA_RVC=y +# BR2_RISCV_USE_MMU is not set +BR2_RISCV_ABI_LP64D=y + +# Linux headers same as kernel, a 5.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_19=y + +# Binary format +BR2_BINFMT_FLAT=y +# BR2_TARGET_ENABLE_ROOT_LOGIN is not set + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.19" +BR2_LINUX_KERNEL_DEFCONFIG="nommu_k210" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/sipeed/maix-go/linux-cpio.config" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +BR2_LINUX_KERNEL_IMAGE_NAME="loader.bin" + +# Packages +BR2_PACKAGE_HOST_PYTHON_KFLASH=y +BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="board/canaan/k210-soc/busybox-tiny.config" +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set + +# Filesystem +BR2_INIT_NONE=y +BR2_TARGET_ROOTFS_INITRAMFS=y +BR2_ROOTFS_OVERLAY="board/canaan/k210-soc/rootfs_overlay" diff --git a/configs/sipeed_maix_go_sdcard_defconfig b/configs/sipeed_maix_go_sdcard_defconfig new file mode 100644 index 00000000..0e80d9c8 --- /dev/null +++ b/configs/sipeed_maix_go_sdcard_defconfig @@ -0,0 +1,57 @@ +# Architecture +BR2_riscv=y +BR2_RISCV_64=y +BR2_riscv_custom=y +BR2_RISCV_ISA_RVM=y +BR2_RISCV_ISA_RVA=y +BR2_RISCV_ISA_RVF=y +BR2_RISCV_ISA_RVD=y +BR2_RISCV_ISA_RVC=y +# BR2_RISCV_USE_MMU is not set +BR2_RISCV_ABI_LP64D=y + +# Linux headers same as kernel, a 5.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_19=y + +# System +BR2_BINFMT_FLAT=y +# BR2_TARGET_ENABLE_ROOT_LOGIN is not set +BR2_GLOBAL_PATCH_DIR="board/canaan/k210-soc/patches" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.19" +BR2_LINUX_KERNEL_DEFCONFIG="nommu_k210_sdcard" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/canaan/k210-soc/linux-sdcard.config" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +BR2_LINUX_KERNEL_IMAGE_NAME="loader.bin" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="canaan/sipeed_maix_go" + +# Packages +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set + +# Filesystem +BR2_INIT_NONE=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_SIZE="64M" +BR2_ROOTFS_OVERLAY="board/canaan/k210-soc/rootfs_overlay" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/canaan/k210-soc/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/canaan/k210-soc/genimage.cfg" + +# Bootloader and related host tools +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.04" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/canaan/k210-soc/uboot.config" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sipeed_maix_bitm" +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_PYTHON_KFLASH=y diff --git a/configs/sipeed_maixduino_defconfig b/configs/sipeed_maixduino_defconfig new file mode 100644 index 00000000..7ba7653e --- /dev/null +++ b/configs/sipeed_maixduino_defconfig @@ -0,0 +1,37 @@ +# Architecture +BR2_riscv=y +BR2_RISCV_64=y +BR2_riscv_custom=y +BR2_RISCV_ISA_RVM=y +BR2_RISCV_ISA_RVA=y +BR2_RISCV_ISA_RVF=y +BR2_RISCV_ISA_RVD=y +BR2_RISCV_ISA_RVC=y +# BR2_RISCV_USE_MMU is not set +BR2_RISCV_ABI_LP64D=y + +# Linux headers same as kernel, a 5.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_19=y + +# Binary format +BR2_BINFMT_FLAT=y +# BR2_TARGET_ENABLE_ROOT_LOGIN is not set + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.19" +BR2_LINUX_KERNEL_DEFCONFIG="nommu_k210" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/sipeed/maixduino/linux-cpio.config" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +BR2_LINUX_KERNEL_IMAGE_NAME="loader.bin" + +# Packages +BR2_PACKAGE_HOST_PYTHON_KFLASH=y +BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="board/canaan/k210-soc/busybox-tiny.config" +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set + +# Filesystem +BR2_INIT_NONE=y +BR2_TARGET_ROOTFS_INITRAMFS=y +BR2_ROOTFS_OVERLAY="board/canaan/k210-soc/rootfs_overlay" diff --git a/configs/sipeed_maixduino_sdcard_defconfig b/configs/sipeed_maixduino_sdcard_defconfig new file mode 100644 index 00000000..7bdd36e1 --- /dev/null +++ b/configs/sipeed_maixduino_sdcard_defconfig @@ -0,0 +1,57 @@ +# Architecture +BR2_riscv=y +BR2_RISCV_64=y +BR2_riscv_custom=y +BR2_RISCV_ISA_RVM=y +BR2_RISCV_ISA_RVA=y +BR2_RISCV_ISA_RVF=y +BR2_RISCV_ISA_RVD=y +BR2_RISCV_ISA_RVC=y +# BR2_RISCV_USE_MMU is not set +BR2_RISCV_ABI_LP64D=y + +# Linux headers same as kernel, a 5.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_19=y + +# System +BR2_BINFMT_FLAT=y +# BR2_TARGET_ENABLE_ROOT_LOGIN is not set +BR2_GLOBAL_PATCH_DIR="board/canaan/k210-soc/patches" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.19" +BR2_LINUX_KERNEL_DEFCONFIG="nommu_k210_sdcard" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/canaan/k210-soc/linux-sdcard.config" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +BR2_LINUX_KERNEL_IMAGE_NAME="loader.bin" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="canaan/sipeed_maixduino" + +# Packages +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set + +# Filesystem +BR2_INIT_NONE=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_SIZE="64M" +BR2_ROOTFS_OVERLAY="board/canaan/k210-soc/rootfs_overlay" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/canaan/k210-soc/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/canaan/k210-soc/genimage.cfg" + +# Bootloader and related host tools +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.04" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/canaan/k210-soc/uboot.config" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sipeed_maix_bitm" +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_PYTHON_KFLASH=y diff --git a/configs/snps_arc700_axs101_defconfig b/configs/snps_arc700_axs101_defconfig new file mode 100644 index 00000000..3a6bd5c0 --- /dev/null +++ b/configs/snps_arc700_axs101_defconfig @@ -0,0 +1,29 @@ +# Architecture +BR2_arcle=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="axs101" +BR2_TARGET_GENERIC_ISSUE="Welcome to the ARC Software Development Platform" +BR2_TARGET_ROOTFS_INITRAMFS=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/synopsys/axs10x/post-build.sh" + +# Linux headers same as kernel, a 5.16 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_16=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.16" +BR2_LINUX_KERNEL_DEFCONFIG="axs101" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="axs101" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/synopsys/axs10x/uboot-fragment.config" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y diff --git a/configs/snps_arc700_nsim_defconfig b/configs/snps_arc700_nsim_defconfig new file mode 100644 index 00000000..3964924b --- /dev/null +++ b/configs/snps_arc700_nsim_defconfig @@ -0,0 +1,18 @@ +# Architecture +BR2_arcle=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="arc700" + +# Linux headers same as kernel, a 6.0 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_0=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.0.8" +BR2_LINUX_KERNEL_DEFCONFIG="nsim_700" +BR2_LINUX_KERNEL_VMLINUX=y + +# Rootfs +BR2_TARGET_ROOTFS_INITRAMFS=y diff --git a/configs/snps_archs38_axs103_defconfig b/configs/snps_archs38_axs103_defconfig new file mode 100644 index 00000000..2002520d --- /dev/null +++ b/configs/snps_archs38_axs103_defconfig @@ -0,0 +1,30 @@ +# Architecture +BR2_arcle=y +BR2_archs38=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="axs103" +BR2_TARGET_GENERIC_ISSUE="Welcome to the ARC Software Development Platform" +BR2_TARGET_ROOTFS_INITRAMFS=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/synopsys/axs10x/post-build.sh" + +# Linux headers same as kernel, a 5.16 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_16=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.16" +BR2_LINUX_KERNEL_DEFCONFIG="axs103_smp" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="axs103" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/synopsys/axs10x/uboot-fragment.config" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y diff --git a/configs/snps_archs38_haps_defconfig b/configs/snps_archs38_haps_defconfig new file mode 100644 index 00000000..02e020bb --- /dev/null +++ b/configs/snps_archs38_haps_defconfig @@ -0,0 +1,18 @@ +# Architecture +BR2_arcle=y +BR2_archs38=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="zebu_hs" +BR2_TARGET_GENERIC_ISSUE="Welcome to the HAPS Development Platform" +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 5.16 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_16=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.16" +BR2_LINUX_KERNEL_DEFCONFIG="haps_hs_smp" +BR2_LINUX_KERNEL_VMLINUX=y diff --git a/configs/snps_archs38_hsdk_defconfig b/configs/snps_archs38_hsdk_defconfig new file mode 100644 index 00000000..413ca509 --- /dev/null +++ b/configs/snps_archs38_hsdk_defconfig @@ -0,0 +1,34 @@ +BR2_arcle=y +BR2_archs38_full=y +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_16=y +BR2_PACKAGE_GLIBC_UTILS=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_TARGET_OPTIMIZATION="-mfpu=fpud_all" +BR2_TARGET_GENERIC_HOSTNAME="hsdk" +BR2_TARGET_GENERIC_ISSUE="Welcome to the HSDK Platform" +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/synopsys/hsdk/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.16" +BR2_LINUX_KERNEL_DEFCONFIG="hsdk" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/synopsys/hsdk/linux.fragment" +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="2022.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="hsdk" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_ELF=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE="board/synopsys/hsdk/uboot.env.txt" +BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE="0x4000" diff --git a/configs/socrates_cyclone5_defconfig b/configs/socrates_cyclone5_defconfig new file mode 100644 index 00000000..6ecbf05d --- /dev/null +++ b/configs/socrates_cyclone5_defconfig @@ -0,0 +1,32 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_NEON=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/altera/socrates_cyclone5/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7" +BR2_LINUX_KERNEL_DEFCONFIG="socfpga" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="socfpga_cyclone5_socrates" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.03" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="socfpga_socrates" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_ALTERA_SOCFPGA_IMAGE_CRC=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE="board/altera/socrates_cyclone5/boot-env.txt" +BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE="8192" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/solidrun_clearfog_defconfig b/configs/solidrun_clearfog_defconfig new file mode 100644 index 00000000..7f633d30 --- /dev/null +++ b/configs/solidrun_clearfog_defconfig @@ -0,0 +1,42 @@ +# Architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_NEON=y + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# System configuration +BR2_ROOTFS_POST_BUILD_SCRIPT="board/solidrun/clearfog/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/solidrun/clearfog/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.28" +BR2_LINUX_KERNEL_DEFCONFIG="mvebu_v7" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/solidrun/clearfog/linux.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="marvell/armada-388-clearfog-base" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_PACKAGE_HOST_GENIMAGE=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="clearfog" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-spl.kwb" diff --git a/configs/solidrun_clearfog_gt_8k_defconfig b/configs/solidrun_clearfog_gt_8k_defconfig new file mode 100644 index 00000000..30b1e179 --- /dev/null +++ b/configs/solidrun_clearfog_gt_8k_defconfig @@ -0,0 +1,46 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_TARGET_GENERIC_HOSTNAME="clearfog-gt-8k" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for SolidRun Clearfog GT-8K" + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.4" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="a80x0_mcbin" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_TARGETS="mrvl_flash" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="USE_COHERENT_MEM=0" +# BR2_TARGET_ARM_TRUSTED_FIRMWARE_SSP is not set +BR2_TARGET_BINARIES_MARVELL=y +BR2_TARGET_MV_DDR_MARVELL=y + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2020.10" +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="clearfog_gt_8k" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/solidrun/clearfog_gt_8k/uboot-fragment.config" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.5" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/solidrun/clearfog_gt_8k/linux-extras.config" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="marvell/armada-8040-clearfog-gt-8k" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# rootfs +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/solidrun/clearfog_gt_8k/post-build-mainline.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/solidrun/clearfog_gt_8k/genimage.cfg" diff --git a/configs/solidrun_macchiatobin_defconfig b/configs/solidrun_macchiatobin_defconfig new file mode 100644 index 00000000..f388e371 --- /dev/null +++ b/configs/solidrun_macchiatobin_defconfig @@ -0,0 +1,48 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_TARGET_GENERIC_HOSTNAME="mcbin" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for Marvell MacchiatoBin" + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.4" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="a80x0_mcbin" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_TARGETS="mrvl_flash" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="USE_COHERENT_MEM=0" +# BR2_TARGET_ARM_TRUSTED_FIRMWARE_SSP is not set +BR2_TARGET_BINARIES_MARVELL=y +BR2_TARGET_MV_DDR_MARVELL=y + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2020.10" +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_USE_DEFCONFIG=y +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="mvebu_mcbin-88f8040" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/solidrun/macchiatobin/uboot-fragment.config" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.5" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="marvell/armada-8040-mcbin" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/solidrun/macchiatobin/linux-extras.config" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# rootfs +BR2_TARGET_ROOTFS_TAR=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" + +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/solidrun/macchiatobin/genimage.cfg" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/solidrun/macchiatobin/post-build-mainline.sh" diff --git a/configs/spike_riscv32_defconfig b/configs/spike_riscv32_defconfig new file mode 100644 index 00000000..6ea12dc1 --- /dev/null +++ b/configs/spike_riscv32_defconfig @@ -0,0 +1,17 @@ +BR2_riscv=y +BR2_RISCV_32=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/spike/riscv32/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.35" +BR2_LINUX_KERNEL_DEFCONFIG="rv32" +BR2_TARGET_ROOTFS_CPIO=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_OPENSBI=y +BR2_TARGET_OPENSBI_CUSTOM_VERSION=y +BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE="1.4" +BR2_TARGET_OPENSBI_PLAT="generic" +BR2_TARGET_OPENSBI_LINUX_PAYLOAD=y +BR2_PACKAGE_HOST_RISCV_ISA_SIM=y diff --git a/configs/spike_riscv64_defconfig b/configs/spike_riscv64_defconfig new file mode 100644 index 00000000..feb13d84 --- /dev/null +++ b/configs/spike_riscv64_defconfig @@ -0,0 +1,17 @@ +BR2_riscv=y +BR2_RISCV_64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/spike/riscv64/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.35" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_TARGET_ROOTFS_CPIO=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_OPENSBI=y +BR2_TARGET_OPENSBI_CUSTOM_VERSION=y +BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE="1.4" +BR2_TARGET_OPENSBI_PLAT="generic" +BR2_TARGET_OPENSBI_LINUX_PAYLOAD=y +BR2_PACKAGE_HOST_RISCV_ISA_SIM=y diff --git a/configs/stm32f429_disco_xip_defconfig b/configs/stm32f429_disco_xip_defconfig new file mode 100644 index 00000000..41970d46 --- /dev/null +++ b/configs/stm32f429_disco_xip_defconfig @@ -0,0 +1,24 @@ +BR2_arm=y +BR2_cortex_m4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y +# BR2_UCLIBC_INSTALL_UTILS is not set +BR2_ENABLE_LTO=y +BR2_GLOBAL_PATCH_DIR="board/stmicroelectronics/stm32f429-disco/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/stmicroelectronics/common/stm32f4xx/stm32-post-build.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.98" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/stmicroelectronics/stm32f429-disco/linux.config" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="xipImage" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="stm32f429-disco" +BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="board/stmicroelectronics/common/stm32f4xx/busybox.fragment" +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set +BR2_TARGET_ROOTFS_INITRAMFS=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_AFBOOT_STM32=y +BR2_TARGET_AFBOOT_STM32_KERNEL_ADDR=0x0800C000 +BR2_PACKAGE_HOST_OPENOCD=y diff --git a/configs/stm32f469_disco_sd_defconfig b/configs/stm32f469_disco_sd_defconfig new file mode 100644 index 00000000..c00c0438 --- /dev/null +++ b/configs/stm32f469_disco_sd_defconfig @@ -0,0 +1,32 @@ +BR2_arm=y +BR2_cortex_m4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y +BR2_GLOBAL_PATCH_DIR="board/stmicroelectronics/stm32f469-disco/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/stmicroelectronics/common/stm32f4xx/stm32-post-build.sh board/stmicroelectronics/stm32f469-disco/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/stmicroelectronics/stm32f469-disco/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.162" +BR2_LINUX_KERNEL_DEFCONFIG="stm32" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(LINUX_DIR)/arch/arm/configs/dram_0x00000000.config board/stmicroelectronics/stm32f469-disco/linux-sd.fragment" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="zImage" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="stm32f469-disco" +BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="board/stmicroelectronics/common/stm32f4xx/busybox.fragment" +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_SIZE="32M" +# 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="2024.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="stm32f469-discovery" +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_OPENOCD=y diff --git a/configs/stm32f469_disco_xip_defconfig b/configs/stm32f469_disco_xip_defconfig new file mode 100644 index 00000000..5a9d3e8a --- /dev/null +++ b/configs/stm32f469_disco_xip_defconfig @@ -0,0 +1,24 @@ +BR2_arm=y +BR2_cortex_m4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y +# BR2_UCLIBC_INSTALL_UTILS is not set +BR2_ENABLE_LTO=y +BR2_GLOBAL_PATCH_DIR="board/stmicroelectronics/stm32f469-disco/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/stmicroelectronics/common/stm32f4xx/stm32-post-build.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.162" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/stmicroelectronics/stm32f469-disco/linux-xip.config" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="xipImage" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="stm32f469-disco" +BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="board/stmicroelectronics/common/stm32f4xx/busybox.fragment" +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set +BR2_TARGET_ROOTFS_INITRAMFS=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_AFBOOT_STM32=y +BR2_TARGET_AFBOOT_STM32_KERNEL_ADDR=0x0800C000 +BR2_PACKAGE_HOST_OPENOCD=y diff --git a/configs/stm32f769_disco_sd_defconfig b/configs/stm32f769_disco_sd_defconfig new file mode 100644 index 00000000..2ec26873 --- /dev/null +++ b/configs/stm32f769_disco_sd_defconfig @@ -0,0 +1,31 @@ +BR2_arm=y +BR2_cortex_m7=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y +BR2_GLOBAL_PATCH_DIR="board/stmicroelectronics/stm32f769-disco/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/stmicroelectronics/stm32f769-disco/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/stmicroelectronics/stm32f769-disco/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.162" +BR2_LINUX_KERNEL_DEFCONFIG="stm32" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(LINUX_DIR)/arch/arm/configs/dram_0xc0000000.config board/stmicroelectronics/stm32f769-disco/linux-sd.fragment" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="zImage" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="stm32f769-disco" +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_SIZE="32M" +# 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="2024.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="stm32f769-disco" +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_OPENOCD=y diff --git a/configs/stm32mp157a_dk1_defconfig b/configs/stm32mp157a_dk1_defconfig new file mode 100644 index 00000000..310e179c --- /dev/null +++ b/configs/stm32mp157a_dk1_defconfig @@ -0,0 +1,56 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y + +# Linux headers same as kernel, a 6.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_9=y + +# System configuration +BR2_GLOBAL_PATCH_DIR="board/stmicroelectronics/common/stm32mp157/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_OVERLAY="board/stmicroelectronics/stm32mp157a-dk1/overlay/" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/stmicroelectronics/common/stm32mp157/post-image.sh" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.9.8" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/stmicroelectronics/stm32mp157a-dk1/linux.config" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="st/stm32mp157a-dk1" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.9" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="stm32mp1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_BL33_IMAGE="u-boot-nodtb.bin" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="STM32MP_SDMMC=1 AARCH32_SP=sp_min DTB_FILE_NAME=stm32mp157a-dk1.dtb E=0 BL33_CFG=$(BINARIES_DIR)/u-boot.dtb" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_IMAGES="fip.bin *.stm32" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_DTC=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="stm32mp15_trusted" +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=stm32mp157a-dk1" + +# Additional tools +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/stm32mp157c_dk2_defconfig b/configs/stm32mp157c_dk2_defconfig new file mode 100644 index 00000000..2a9c31df --- /dev/null +++ b/configs/stm32mp157c_dk2_defconfig @@ -0,0 +1,56 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y + +# Linux headers same as kernel, a 6.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_9=y + +# System configuration +BR2_GLOBAL_PATCH_DIR="board/stmicroelectronics/common/stm32mp157/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_OVERLAY="board/stmicroelectronics/stm32mp157c-dk2/overlay/" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/stmicroelectronics/common/stm32mp157/post-image.sh" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.9.8" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/stmicroelectronics/stm32mp157c-dk2/linux.config" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="st/stm32mp157c-dk2" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.9" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="stm32mp1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_BL33_IMAGE="u-boot-nodtb.bin" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="STM32MP_SDMMC=1 AARCH32_SP=sp_min DTB_FILE_NAME=stm32mp157c-dk2.dtb E=0 BL33_CFG=$(BINARIES_DIR)/u-boot.dtb" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_IMAGES="fip.bin *.stm32" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_DTC=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="stm32mp15_trusted" +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_DTB=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=stm32mp157c-dk2" + +# Additional tools +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/stm32mp157c_odyssey_defconfig b/configs/stm32mp157c_odyssey_defconfig new file mode 100644 index 00000000..2d360041 --- /dev/null +++ b/configs/stm32mp157c_odyssey_defconfig @@ -0,0 +1,37 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_GLOBAL_PATCH_DIR="board/seeed/stm32mp157c-odyssey/patches" +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_ROOTFS_OVERLAY="board/seeed/stm32mp157c-odyssey/overlay/" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/seeed/stm32mp157c-odyssey/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.1" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/seeed/stm32mp157c-odyssey/linux.config" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="stm32mp157c-odyssey" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.5" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="stm32mp1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="STM32MP_SDMMC=1 AARCH32_SP=sp_min DTB_FILE_NAME=stm32mp157c-odyssey.dtb E=0" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_IMAGES="*.stm32" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_DTC=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.10" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="stm32mp15_trusted" +BR2_TARGET_UBOOT_NEEDS_DTC=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_STM32=y +BR2_TARGET_UBOOT_BUILD_FORMAT_STM32_LEGACY=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=stm32mp157c-odyssey" +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/terasic_de10nano_cyclone5_defconfig b/configs/terasic_de10nano_cyclone5_defconfig new file mode 100644 index 00000000..8fb7cf66 --- /dev/null +++ b/configs/terasic_de10nano_cyclone5_defconfig @@ -0,0 +1,31 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_NEON=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_11=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/terasic/de10nano_cyclone5/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/altera-opensource/linux-socfpga.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_socfpga-5.11_21.06.01_pr" +BR2_LINUX_KERNEL_DEFCONFIG="socfpga" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="socfpga_cyclone5_de0_nano_soc" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_BAREBOX=y +BR2_TARGET_BAREBOX_CUSTOM_VERSION=y +BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE="2021.07.0" +BR2_TARGET_BAREBOX_BOARD_DEFCONFIG="socfpga" +BR2_TARGET_BAREBOX_IMAGE_FILE="images/barebox-socfpga-de10_nano.img" +BR2_TARGET_BAREBOX_CUSTOM_ENV=y +BR2_TARGET_BAREBOX_CUSTOM_ENV_PATH="board/terasic/de10nano_cyclone5/barebox-env" +BR2_TARGET_BAREBOX_AUX=y +BR2_TARGET_BAREBOX_AUX_BOARD_DEFCONFIG="socfpga-xload-2" +BR2_TARGET_BAREBOX_AUX_IMAGE_FILE="images/barebox-socfpga-de10_nano-xload.img" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/ti_am62ax_sk_defconfig b/configs/ti_am62ax_sk_defconfig new file mode 100644 index 00000000..25735c28 --- /dev/null +++ b/configs/ti_am62ax_sk_defconfig @@ -0,0 +1,46 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_8=y +BR2_GLOBAL_PATCH_DIR="board/ti/am62ax-sk/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/ti/common/am6xx/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS="-c ttyS2,115200n8 -d k3-am62a7-sk.dtb -l am62ax-sk-buildroot -r /dev/mmcblk1p2 -x earlycon=ns16550a,mmio32,0x02800000" +BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS="-c board/ti/am62ax-sk/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.8" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="ti/k3-am62a7-sk" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="256M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="lts-v2.10.4" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="k3" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_TARGET_BOARD="lite" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y +BR2_TARGET_OPTEE_OS=y +BR2_TARGET_OPTEE_OS_PLATFORM="k3-am62ax" +BR2_TARGET_TI_K3_R5_LOADER=y +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION=y +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_TI_K3_R5_LOADER_BOARD_DEFCONFIG="am62ax_evm_r5" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am62ax_evm_a53" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_USE_BINMAN=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="tispl.bin" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="TEE=$(BINARIES_DIR)/tee-pager_v2.bin" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/ti_am62x_sk_defconfig b/configs/ti_am62x_sk_defconfig new file mode 100644 index 00000000..f56669c2 --- /dev/null +++ b/configs/ti_am62x_sk_defconfig @@ -0,0 +1,48 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_8=y +BR2_GLOBAL_PATCH_DIR="board/ti/am62x-sk/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/ti/common/am6xx/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS="-c ttyS2,115200n8 -d k3-am625-sk.dtb -l am62x-sk-buildroot -r /dev/mmcblk1p2 -x earlycon=ns16550a,mmio32,0x02800000" +BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS="-c board/ti/am62x-sk/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.12" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="ti/k3-am625-sk" +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_TI_WL18XX=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="256M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="lts-v2.10.4" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="k3" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_TARGET_BOARD="lite" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y +BR2_TARGET_OPTEE_OS=y +BR2_TARGET_OPTEE_OS_PLATFORM="k3-am62x" +BR2_TARGET_TI_K3_R5_LOADER=y +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION=y +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE="2024.07" +BR2_TARGET_TI_K3_R5_LOADER_BOARD_DEFCONFIG="am62x_evm_r5" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am62x_evm_a53" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_USE_BINMAN=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="tispl.bin" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="TEE=$(BINARIES_DIR)/tee-pager_v2.bin" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/ti_am64x_sk_defconfig b/configs/ti_am64x_sk_defconfig new file mode 100644 index 00000000..1e8b8c9c --- /dev/null +++ b/configs/ti_am64x_sk_defconfig @@ -0,0 +1,48 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_8=y +BR2_GLOBAL_PATCH_DIR="board/ti/am64x-sk/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/ti/common/am6xx/post-build.sh" +BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS="-c ttyS2,115200n8 -d k3-am642-sk.dtb -l am64x-sk-buildroot -r /dev/mmcblk1p2 -x earlycon=ns16550a,mmio32,0x02800000" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS="-c board/ti/am64x-sk/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.8" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="ti/k3-am642-sk" +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_TI_WL18XX=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="lts-v2.10.4" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="k3" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_TARGET_BOARD="lite" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y +BR2_TARGET_OPTEE_OS=y +BR2_TARGET_OPTEE_OS_PLATFORM="k3-am64x" +BR2_TARGET_TI_K3_R5_LOADER=y +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION=y +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_TI_K3_R5_LOADER_BOARD_DEFCONFIG="am64x_evm_r5" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am64x_evm_a53" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_USE_BINMAN=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="tispl.bin" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="TEE=$(BINARIES_DIR)/tee-pager_v2.bin" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/toradex_apalis_imx6_defconfig b/configs/toradex_apalis_imx6_defconfig new file mode 100644 index 00000000..e447190e --- /dev/null +++ b/configs/toradex_apalis_imx6_defconfig @@ -0,0 +1,26 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_GLOBAL_PATCH_DIR="board/toradex/apalis-imx6/patches" +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/toradex/apalis-imx6/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.toradex.com/linux-toradex.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="d899927728beca8357a5b4120b690cb3c1d80844" +BR2_LINUX_KERNEL_DEFCONFIG="apalis_imx6" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-apalis-eval imx6q-apalis-ixora imx6q-apalis-ixora-v1.1" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="git://git.toradex.com/u-boot-toradex.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="30a1208727729dae22cb42f9ba9ba17efe5e6f77" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="apalis_imx6" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/ts4900_defconfig b/configs/ts4900_defconfig new file mode 100644 index 00000000..e7950cea --- /dev/null +++ b/configs/ts4900_defconfig @@ -0,0 +1,16 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_12=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/technologic/ts4900/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.12" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x10008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-ts4900" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_PACKAGE_TS4900_FPGA=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/ts5500_defconfig b/configs/ts5500_defconfig new file mode 100644 index 00000000..871c02e9 --- /dev/null +++ b/configs/ts5500_defconfig @@ -0,0 +1,26 @@ +# architecture +BR2_i386=y +BR2_x86_i586=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttyS1" +BR2_ROOTFS_OVERLAY="board/technologic/ts5500/fs-overlay" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/technologic/ts5500/linux-4.14.config" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# rootfs +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# bootloader +BR2_TARGET_SYSLINUX=y +BR2_TARGET_SYSLINUX_MBR=y diff --git a/configs/ts7680_defconfig b/configs/ts7680_defconfig new file mode 100644 index 00000000..9e058b1d --- /dev/null +++ b/configs/ts7680_defconfig @@ -0,0 +1,16 @@ +BR2_arm=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/technologic/ts7680/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,embeddedTS,linux-4.9.y,v4.9.311-ts)/linux-v4.9.311-ts.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="ts_imx28" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x40008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx28-ts7680" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/uevm5432_defconfig b/configs/uevm5432_defconfig new file mode 100644 index 00000000..03dc789f --- /dev/null +++ b/configs/uevm5432_defconfig @@ -0,0 +1,47 @@ +# Architecture +BR2_arm=y +BR2_cortex_a15=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 6.8 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_8=y + +# System +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS2" +BR2_SYSTEM_DHCP="eth0" + +# Image +BR2_ROOTFS_POST_BUILD_SCRIPT="board/uevm5432/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/uevm5432/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.10" +BR2_LINUX_KERNEL_DEFCONFIG="omap2plus" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="ti/omap/omap5-uevm" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="omap5_uevm" +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="MLO" + +# 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/configs/versal_vck190_defconfig b/configs/versal_vck190_defconfig new file mode 100644 index 00000000..21dfe257 --- /dev/null +++ b/configs/versal_vck190_defconfig @@ -0,0 +1,43 @@ +BR2_aarch64=y +BR2_cortex_a72=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/versal/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/versal/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="ttyAMA0,115200 mmcblk0p2" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,linux-xlnx,xlnx_rebase_v6.6_LTS_2024.1)/xlnx_rebase_v6.6_LTS_2024.1.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="xilinx" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="xilinx/versal-vck190-rev1.1" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,arm-trusted-firmware,xlnx_rebase_v2.10_2024.1)/xlnx_rebase_v2.10_2024.1.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="versal" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31_UBOOT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31_ELF=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,u-boot-xlnx,xlnx_rebase_v2024.01_2024.1)/xlnx_rebase_v2024.01_2024.1.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="xilinx_versal_virt" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=versal-vck190-rev1.1" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y +BR2_TARGET_UBOOT_FORMAT_REMAKE_ELF=y +BR2_TARGET_UBOOT_FORMAT_DTB=y +BR2_TARGET_XILINX_PREBUILT=y +BR2_TARGET_XILINX_PREBUILT_VERSION="xilinx_v2024.1" +BR2_TARGET_XILINX_PREBUILT_VERSAL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_BOOTGEN=y +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_GLOBAL_PATCH_DIR="board/xilinx/patches" diff --git a/configs/versal_vpk180_defconfig b/configs/versal_vpk180_defconfig new file mode 100644 index 00000000..253a6d2c --- /dev/null +++ b/configs/versal_vpk180_defconfig @@ -0,0 +1,44 @@ +BR2_aarch64=y +BR2_cortex_a72=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/versal/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/versal/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="ttyAMA0,115200 mmcblk0p2" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,linux-xlnx,xlnx_rebase_v6.6_LTS_2024.1)/xlnx_rebase_v6.6_LTS_2024.1.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="xilinx" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="xilinx/versal-vpk180-revA" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,arm-trusted-firmware,xlnx_rebase_v2.10_2024.1)/xlnx_rebase_v2.10_2024.1.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="versal" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31_UBOOT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31_ELF=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,u-boot-xlnx,xlnx_rebase_v2024.01_2024.1)/xlnx_rebase_v2024.01_2024.1.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="xilinx_versal_virt" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=versal-vpk180-revA" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y +BR2_TARGET_UBOOT_FORMAT_REMAKE_ELF=y +BR2_TARGET_UBOOT_FORMAT_DTB=y +BR2_TARGET_XILINX_PREBUILT=y +BR2_TARGET_XILINX_PREBUILT_VERSION="xilinx_v2024.1" +BR2_TARGET_XILINX_PREBUILT_BOARD="vpk180" +BR2_TARGET_XILINX_PREBUILT_VERSAL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_BOOTGEN=y +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_GLOBAL_PATCH_DIR="board/xilinx/patches" diff --git a/configs/visionfive2_defconfig b/configs/visionfive2_defconfig new file mode 100644 index 00000000..18e0997f --- /dev/null +++ b/configs/visionfive2_defconfig @@ -0,0 +1,40 @@ +BR2_riscv=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_8=y +BR2_GLOBAL_PATCH_DIR="board/visionfive2/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_OVERLAY="board/visionfive2/overlay" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/visionfive2/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.2" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/visionfive2/linux_defconfig" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="starfive/jh7110-starfive-visionfive-2-v1.3b" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_OPENSBI=y +BR2_TARGET_OPENSBI_CUSTOM_VERSION=y +BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE="1.4" +BR2_TARGET_OPENSBI_PLAT="generic" +# BR2_TARGET_OPENSBI_INSTALL_JUMP_IMG is not set +BR2_TARGET_OPENSBI_ADDITIONAL_VARIABLES="FW_TEXT_START=0x40000000 FW_OPTIONS=0" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="starfive_visionfive2" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSBI=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/u-boot-spl.bin.normal.out" +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/visionfive_defconfig b/configs/visionfive_defconfig new file mode 100644 index 00000000..0d932507 --- /dev/null +++ b/configs/visionfive_defconfig @@ -0,0 +1,18 @@ +BR2_riscv=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_0=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_OVERLAY="board/visionfive/overlay" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/visionfive/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,starfive-tech,linux,cfcb617265422c0af0ae5bc9688dceba2d10b27a)/linux-cfcb617265422c0af0ae5bc9688dceba2d10b27a.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="visionfive" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="starfive/jh7100-starfive-visionfive-v1" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/wandboard_defconfig b/configs/wandboard_defconfig new file mode 100644 index 00000000..22eb5299 --- /dev/null +++ b/configs/wandboard_defconfig @@ -0,0 +1,47 @@ +# 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 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# Image +BR2_ROOTFS_OVERLAY="board/wandboard/rootfs_overlay" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="wandboard" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.27" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="nxp/imx/imx6q-wandboard nxp/imx/imx6dl-wandboard nxp/imx/imx6q-wandboard-revb1 nxp/imx/imx6dl-wandboard-revb1 nxp/imx/imx6q-wandboard-revd1 nxp/imx/imx6dl-wandboard-revd1 nxp/imx/imx6qp-wandboard-revd1" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Required tools to create the SD 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/configs/warp7_defconfig b/configs/warp7_defconfig new file mode 100644 index 00000000..73899193 --- /dev/null +++ b/configs/warp7_defconfig @@ -0,0 +1,52 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=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="6.6" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="nxp/imx/imx7s-warp" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="warp7" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.10" +BR2_TARGET_UBOOT_FORMAT_DTB_IMX=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=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/configs/zynq_microzed_defconfig b/configs/zynq_microzed_defconfig new file mode 100644 index 00000000..f955a0c4 --- /dev/null +++ b/configs/zynq_microzed_defconfig @@ -0,0 +1,35 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/xilinx/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/zynq/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/zynq/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,linux-xlnx,xlnx_rebase_v6.6_LTS_2024.1)/xlnx_rebase_v6.6_LTS_2024.1.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="xilinx_zynq" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="xilinx/zynq-microzed" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,u-boot-xlnx,xlnx_rebase_v2024.01_2024.1)/xlnx_rebase_v2024.01_2024.1.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="xilinx_zynq_virt" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=zynq-microzed" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/boot.bin" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/zynq_zc702_defconfig b/configs/zynq_zc702_defconfig new file mode 100644 index 00000000..75ebc2a3 --- /dev/null +++ b/configs/zynq_zc702_defconfig @@ -0,0 +1,35 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/xilinx/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/zynq/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/zynq/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,linux-xlnx,xlnx_rebase_v6.6_LTS_2024.1)/xlnx_rebase_v6.6_LTS_2024.1.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="xilinx_zynq" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="xilinx/zynq-zc702" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,u-boot-xlnx,xlnx_rebase_v2024.01_2024.1)/xlnx_rebase_v2024.01_2024.1.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="xilinx_zynq_virt" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=zynq-zc702" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/boot.bin" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/zynq_zc706_defconfig b/configs/zynq_zc706_defconfig new file mode 100644 index 00000000..ce539eef --- /dev/null +++ b/configs/zynq_zc706_defconfig @@ -0,0 +1,35 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/xilinx/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/zynq/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/zynq/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,linux-xlnx,xlnx_rebase_v6.6_LTS_2024.1)/xlnx_rebase_v6.6_LTS_2024.1.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="xilinx_zynq" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="xilinx/zynq-zc706" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,u-boot-xlnx,xlnx_rebase_v2024.01_2024.1)/xlnx_rebase_v2024.01_2024.1.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="xilinx_zynq_virt" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=zynq-zc706" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/boot.bin" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/zynq_zed_defconfig b/configs/zynq_zed_defconfig new file mode 100644 index 00000000..925faeac --- /dev/null +++ b/configs/zynq_zed_defconfig @@ -0,0 +1,35 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/xilinx/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/zynq/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/zynq/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,linux-xlnx,xlnx_rebase_v6.6_LTS_2024.1)/xlnx_rebase_v6.6_LTS_2024.1.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="xilinx_zynq" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="xilinx/zynq-zed" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,u-boot-xlnx,xlnx_rebase_v2024.01_2024.1)/xlnx_rebase_v2024.01_2024.1.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="xilinx_zynq_virt" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=zynq-zed" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/boot.bin" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/zynqmp_kria_kd240_defconfig b/configs/zynqmp_kria_kd240_defconfig new file mode 100644 index 00000000..ce768056 --- /dev/null +++ b/configs/zynqmp_kria_kd240_defconfig @@ -0,0 +1,47 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/zynqmp/post-build.sh board/zynqmp/kria/kd240/kd240.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/zynqmp/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="ttyPS1,115200 sda2 ${UBOOT_DIR}" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,linux-xlnx,xlnx_rebase_v6.6_LTS_2024.1)/xlnx_rebase_v6.6_LTS_2024.1.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="xilinx" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="xilinx/zynqmp-smk-k24-revA-sck-kd-g-revA" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,arm-trusted-firmware,xlnx_rebase_v2.10_2024.1)/xlnx_rebase_v2.10_2024.1.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="zynqmp" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="ZYNQMP_CONSOLE=cadence1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31_UBOOT=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,u-boot-xlnx,xlnx_rebase_v2024.01_2024.1)/xlnx_rebase_v2024.01_2024.1.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="xilinx_zynqmp_kria" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=zynqmp-smk-k24-revA" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y +BR2_TARGET_UBOOT_NEEDS_UTIL_LINUX=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/boot.bin" +BR2_TARGET_UBOOT_ZYNQMP=y +BR2_TARGET_UBOOT_ZYNQMP_PMUFW_PREBUILT=y +BR2_TARGET_UBOOT_ZYNQMP_PM_CFG="board/zynqmp/kria/kd240/pm_cfg_obj.c" +BR2_TARGET_UBOOT_FORMAT_ITB=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_XILINX_PREBUILT=y +BR2_TARGET_XILINX_PREBUILT_VERSION="xilinx_v2024.1" +BR2_TARGET_XILINX_PREBUILT_BOARD="kd240" +BR2_TARGET_XILINX_PREBUILT_KRIA=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_GLOBAL_PATCH_DIR="board/zynqmp/kria/kd240/patches board/xilinx/patches" diff --git a/configs/zynqmp_kria_kr260_defconfig b/configs/zynqmp_kria_kr260_defconfig new file mode 100644 index 00000000..21d01e5f --- /dev/null +++ b/configs/zynqmp_kria_kr260_defconfig @@ -0,0 +1,46 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/zynqmp/post-build.sh board/zynqmp/kria/kr260/kr260.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/zynqmp/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="ttyPS1,115200 sda2 ${UBOOT_DIR}" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,linux-xlnx,xlnx_rebase_v6.6_LTS_2024.1)/xlnx_rebase_v6.6_LTS_2024.1.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="xilinx" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="xilinx/zynqmp-smk-k26-revA-sck-kr-g-revB" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,arm-trusted-firmware,xlnx_rebase_v2.10_2024.1)/xlnx_rebase_v2.10_2024.1.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="zynqmp" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="ZYNQMP_CONSOLE=cadence1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31_UBOOT=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,u-boot-xlnx,xlnx_rebase_v2024.01_2024.1)/xlnx_rebase_v2024.01_2024.1.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="xilinx_zynqmp_kria" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=zynqmp-smk-k26-revA" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y +BR2_TARGET_UBOOT_NEEDS_UTIL_LINUX=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/boot.bin" +BR2_TARGET_UBOOT_ZYNQMP=y +BR2_TARGET_UBOOT_ZYNQMP_PMUFW_PREBUILT=y +BR2_TARGET_UBOOT_ZYNQMP_PM_CFG="board/zynqmp/kria/kr260/pm_cfg_obj.c" +BR2_TARGET_UBOOT_FORMAT_ITB=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_XILINX_PREBUILT=y +BR2_TARGET_XILINX_PREBUILT_VERSION="xilinx_v2024.1" +BR2_TARGET_XILINX_PREBUILT_KRIA=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_GLOBAL_PATCH_DIR="board/xilinx/patches" diff --git a/configs/zynqmp_kria_kv260_defconfig b/configs/zynqmp_kria_kv260_defconfig new file mode 100644 index 00000000..f83ef35b --- /dev/null +++ b/configs/zynqmp_kria_kv260_defconfig @@ -0,0 +1,47 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/zynqmp/post-build.sh board/zynqmp/kria/kv260/kv260.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/zynqmp/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="ttyPS1,115200 mmcblk1p2 ${UBOOT_DIR}" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,linux-xlnx,xlnx_rebase_v6.6_LTS_2024.1)/xlnx_rebase_v6.6_LTS_2024.1.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="xilinx" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="xilinx/zynqmp-smk-k26-revA-sck-kv-g-revB" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,arm-trusted-firmware,xlnx_rebase_v2.10_2024.1)/xlnx_rebase_v2.10_2024.1.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="zynqmp" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="ZYNQMP_CONSOLE=cadence1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31_UBOOT=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,u-boot-xlnx,xlnx_rebase_v2024.01_2024.1)/xlnx_rebase_v2024.01_2024.1.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="xilinx_zynqmp_kria" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=zynqmp-smk-k26-revA" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y +BR2_TARGET_UBOOT_NEEDS_UTIL_LINUX=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/boot.bin" +BR2_TARGET_UBOOT_ZYNQMP=y +BR2_TARGET_UBOOT_ZYNQMP_PMUFW_PREBUILT=y +BR2_TARGET_UBOOT_ZYNQMP_PM_CFG="board/zynqmp/kria/kv260/pm_cfg_obj.c" +BR2_TARGET_UBOOT_FORMAT_ITB=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_XILINX_PREBUILT=y +BR2_TARGET_XILINX_PREBUILT_VERSION="xilinx_v2024.1" +BR2_TARGET_XILINX_PREBUILT_BOARD="kv260" +BR2_TARGET_XILINX_PREBUILT_KRIA=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_GLOBAL_PATCH_DIR="board/xilinx/patches" diff --git a/configs/zynqmp_zcu102_defconfig b/configs/zynqmp_zcu102_defconfig new file mode 100644 index 00000000..df5eba7c --- /dev/null +++ b/configs/zynqmp_zcu102_defconfig @@ -0,0 +1,44 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/zynqmp/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/zynqmp/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="ttyPS0,115200 mmcblk0p2" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,linux-xlnx,xlnx_rebase_v6.6_LTS_2024.1)/xlnx_rebase_v6.6_LTS_2024.1.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="xilinx" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="xilinx/zynqmp-zcu102-rev1.0" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,arm-trusted-firmware,xlnx_rebase_v2.10_2024.1)/xlnx_rebase_v2.10_2024.1.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="zynqmp" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31_UBOOT=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,u-boot-xlnx,xlnx_rebase_v2024.01_2024.1)/xlnx_rebase_v2024.01_2024.1.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="xilinx_zynqmp_virt" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=zynqmp-zcu102-rev1.0" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y +BR2_TARGET_UBOOT_NEEDS_UTIL_LINUX=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/boot.bin" +BR2_TARGET_UBOOT_ZYNQMP=y +BR2_TARGET_UBOOT_ZYNQMP_PMUFW_PREBUILT=y +BR2_TARGET_UBOOT_ZYNQMP_PM_CFG="board/zynqmp/zcu102/pm_cfg_obj.c" +BR2_TARGET_UBOOT_FORMAT_ITB=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_XILINX_PREBUILT=y +BR2_TARGET_XILINX_PREBUILT_VERSION="xilinx_v2024.1" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_GLOBAL_PATCH_DIR="board/xilinx/patches" diff --git a/configs/zynqmp_zcu104_defconfig b/configs/zynqmp_zcu104_defconfig new file mode 100644 index 00000000..793a677a --- /dev/null +++ b/configs/zynqmp_zcu104_defconfig @@ -0,0 +1,45 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/zynqmp/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/zynqmp/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="ttyPS0,115200 mmcblk0p2" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,linux-xlnx,xlnx_rebase_v6.6_LTS_2024.1)/xlnx_rebase_v6.6_LTS_2024.1.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="xilinx" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="xilinx/zynqmp-zcu104-revC" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,arm-trusted-firmware,xlnx_rebase_v2.10_2024.1)/xlnx_rebase_v2.10_2024.1.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="zynqmp" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31_UBOOT=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,u-boot-xlnx,xlnx_rebase_v2024.01_2024.1)/xlnx_rebase_v2024.01_2024.1.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="xilinx_zynqmp_virt" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=zynqmp-zcu104-revC" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y +BR2_TARGET_UBOOT_NEEDS_UTIL_LINUX=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/boot.bin" +BR2_TARGET_UBOOT_ZYNQMP=y +BR2_TARGET_UBOOT_ZYNQMP_PMUFW_PREBUILT=y +BR2_TARGET_UBOOT_ZYNQMP_PM_CFG="board/zynqmp/zcu104/pm_cfg_obj.c" +BR2_TARGET_UBOOT_FORMAT_ITB=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_XILINX_PREBUILT=y +BR2_TARGET_XILINX_PREBUILT_VERSION="xilinx_v2024.1" +BR2_TARGET_XILINX_PREBUILT_BOARD="zcu104" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_GLOBAL_PATCH_DIR="board/xilinx/patches" diff --git a/configs/zynqmp_zcu106_defconfig b/configs/zynqmp_zcu106_defconfig new file mode 100644 index 00000000..fdf5e807 --- /dev/null +++ b/configs/zynqmp_zcu106_defconfig @@ -0,0 +1,45 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/zynqmp/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/zynqmp/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="ttyPS0,115200 mmcblk0p2" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,linux-xlnx,xlnx_rebase_v6.6_LTS_2024.1)/xlnx_rebase_v6.6_LTS_2024.1.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="xilinx" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="xilinx/zynqmp-zcu106-revA" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,arm-trusted-firmware,xlnx_rebase_v2.10_2024.1)/xlnx_rebase_v2.10_2024.1.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="zynqmp" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31_UBOOT=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,u-boot-xlnx,xlnx_rebase_v2024.01_2024.1)/xlnx_rebase_v2024.01_2024.1.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="xilinx_zynqmp_virt" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=zynqmp-zcu106-rev1.0" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y +BR2_TARGET_UBOOT_NEEDS_UTIL_LINUX=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/boot.bin" +BR2_TARGET_UBOOT_ZYNQMP=y +BR2_TARGET_UBOOT_ZYNQMP_PMUFW_PREBUILT=y +BR2_TARGET_UBOOT_ZYNQMP_PM_CFG="board/zynqmp/zcu106/pm_cfg_obj.c" +BR2_TARGET_UBOOT_FORMAT_ITB=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_XILINX_PREBUILT=y +BR2_TARGET_XILINX_PREBUILT_VERSION="xilinx_v2024.1" +BR2_TARGET_XILINX_PREBUILT_BOARD="zcu106" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_GLOBAL_PATCH_DIR="board/xilinx/patches" diff --git a/docs/conf/asciidoc-text.conf b/docs/conf/asciidoc-text.conf new file mode 100644 index 00000000..bb614b9d --- /dev/null +++ b/docs/conf/asciidoc-text.conf @@ -0,0 +1,23 @@ +# Refer to following asciidoc documentation: +# https://asciidoc-py.github.io/userguide.html +# In particular sections "Macros" and "Attribute References" +# +# For hyperlinks, show 'link text [URL]' (if link text provided) or 'URL' +[http-inlinemacro] +{0=}{0? [}{name}:{target}{0?]} +[https-inlinemacro] +{0=}{0? [}{name}:{target}{0?]} +[ftp-inlinemacro] +{0=}{0? [}{name}:{target}{0?]} +[file-inlinemacro] +{0=}{0? [}{name}:{target}{0?]} +[irc-inlinemacro] +{0=}{0? [}{name}:{target}{0?]} +[mailto-inlinemacro] +{0=}{0? [}{name}:{target}{0?]} + +# Hide image representation from text manual +[image-inlinemacro] +{empty} +[image-blockmacro] +{empty} diff --git a/docs/images b/docs/images new file mode 120000 index 00000000..7356350c --- /dev/null +++ b/docs/images @@ -0,0 +1 @@ +website/images \ No newline at end of file diff --git a/docs/manual/adding-board-support.adoc b/docs/manual/adding-board-support.adoc new file mode 100644 index 00000000..be769966 --- /dev/null +++ b/docs/manual/adding-board-support.adoc @@ -0,0 +1,77 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[adding-board-support]] +== Adding support for a particular board + +Buildroot contains basic configurations for several publicly available +hardware boards, so that users of such a board can easily build a system +that is known to work. You are welcome to add support for other boards +to Buildroot too. + +To do so, you need to create a normal Buildroot configuration that +builds a basic system for the hardware: (internal) toolchain, kernel, +bootloader, filesystem and a simple BusyBox-only userspace. No specific +package should be selected: the configuration should be as minimal as +possible, and should only build a working basic BusyBox system for the +target platform. You can of course use more complicated configurations +for your internal projects, but the Buildroot project will only +integrate basic board configurations. This is because package +selections are highly application-specific. + +Once you have a known working configuration, run +make +savedefconfig+. This will generate a minimal +defconfig+ file at the +root of the Buildroot source tree. Move this file into the +configs/+ +directory, and rename it +_defconfig+. If the configuration +is a bit more complicated, it is nice to manually reformat it and +separate it into sections, with a comment before each section. Typical +sections are _Architecture_, _Toolchain options_ (typically just linux +headers version), _Firmware_, _Bootloader_, _Kernel_, and _Filesystem_. + +Always use fixed versions or commit hashes for the different +components, not the "latest" version. For example, set ++BR2_LINUX_KERNEL_CUSTOM_VERSION=y+ and ++BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE+ to the kernel version you tested +with. If you are using the buildroot toolchain +BR2_TOOLCHAIN_BUILDROOT+ +(which is the default), additionally ensure that the same kernel headers +are used (+BR2_KERNEL_HEADERS_AS_KERNEL+, which is also the default) and +set the custom kernel headers series to match your kernel version +(+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_*+). + +It is recommended to use as much as possible upstream versions of the +Linux kernel and bootloaders, and to use as much as possible default +kernel and bootloader configurations. If they are incorrect for your +board, or no default exists, we encourage you to send fixes to the +corresponding upstream projects. + +However, in the mean time, you may want to store kernel or bootloader +configuration or patches specific to your target platform. To do so, +create a directory +board/+ and a subdirectory ++board//+. You can then store your patches +and configurations in these directories, and reference them from the main +Buildroot configuration. Refer to xref:customize[] for more details. + +Before submitting patches for new boards it is recommended to test it by +building it using latest gitlab-CI docker container. To do this use ++utils/docker-run+ script and inside it issue these commands: + +---- + $ make _defconfig + $ make +---- + +By default, Buildroot developers use the official image hosted on the +https://gitlab.com/buildroot.org/buildroot/container_registry/2395076[gitlab.com +registry] and it should be convenient for most usage. If you still want +to build your own docker image, you can base it off the official image +as the +FROM+ directive of your own _Dockerfile_: + +---- +FROM registry.gitlab.com/buildroot.org/buildroot/base:YYYYMMDD.HHMM +RUN ... +COPY ... +---- + +The current version _YYYYMMDD.HHMM_ can be found in the +.gitlab-ci.yml+ +file at the top of the Buildroot source tree; all past versions are +listed in the aforementioned registry as well. diff --git a/docs/manual/adding-packages-asciidoc.adoc b/docs/manual/adding-packages-asciidoc.adoc new file mode 100644 index 00000000..d68978b1 --- /dev/null +++ b/docs/manual/adding-packages-asciidoc.adoc @@ -0,0 +1,143 @@ +// -*- mode:doc; -*- +// vim: syntax=asciidoc + +=== Infrastructure for asciidoc documents + +[[asciidoc-documents-tutorial]] + +The Buildroot manual, which you are currently reading, is entirely written +using the http://asciidoc.org/[AsciiDoc] mark-up syntax. The manual is then +rendered to many formats: + +* html +* split-html +* pdf +* epub +* text + +Although Buildroot only contains one document written in AsciiDoc, there +is, as for packages, an infrastructure for rendering documents using the +AsciiDoc syntax. + +Also as for packages, the AsciiDoc infrastructure is available from a +xref:outside-br-custom[br2-external tree]. This allows documentation for +a br2-external tree to match the Buildroot documentation, as it will be +rendered to the same formats and use the same layout and theme. + +==== +asciidoc-document+ tutorial + +Whereas package infrastructures are suffixed with +-package+, the document +infrastructures are suffixed with +-document+. So, the AsciiDoc infrastructure +is named +asciidoc-document+. + +Here is an example to render a simple AsciiDoc document. + +---- +01: ################################################################################ +02: # +03: # foo-document +04: # +05: ################################################################################ +06: +07: FOO_SOURCES = $(sort $(wildcard $(FOO_DOCDIR)/*)) +08: $(eval $(call asciidoc-document)) +---- + +On line 7, the Makefile declares what the sources of the document are. +Currently, it is expected that the document's sources are only local; +Buildroot will not attempt to download anything to render a document. +Thus, you must indicate where the sources are. Usually, the string +above is sufficient for a document with no sub-directory structure. + +On line 8, we call the +asciidoc-document+ function, which generates all +the Makefile code necessary to render the document. + +==== +asciidoc-document+ reference + +The list of variables that can be set in a +.mk+ file to give metadata +information is (assuming the document name is +foo+) : + +* +FOO_SOURCES+, mandatory, defines the source files for the document. + +* +FOO_RESOURCES+, optional, may contain a space-separated list of paths + to one or more directories containing so-called resources (like CSS or + images). By default, empty. + +* +FOO_DEPENDENCIES+, optional, the list of packages (most probably, + host-packages) that must be built before building this document. + +* +FOO_TOC_DEPTH+, +FOO_TOC_DEPTH_+, optionals, the depth of the + table of content for this document, which can be overridden for the + specified format ++ (see the list of rendered formats, above, + but in uppercase, and with dash replaced by underscore; see example, + below). By default: +1+. + +There are also additional hooks (see xref:hooks[] for general information +on hooks), that a document may set to define extra actions to be done at +various steps: + +* +FOO_POST_RSYNC_HOOKS+ to run additional commands after the sources + have been copied by Buildroot. This can for example be used to + generate part of the manual with information extracted from the + tree. As an example, Buildroot uses this hook to generate the tables + in the appendices. + +* +FOO_CHECK_DEPENDENCIES_HOOKS+ to run additional tests on required + components to generate the document. In AsciiDoc, it is possible to + call filters, that is, programs that will parse an AsciiDoc block and + render it appropriately (e.g. http://ditaa.sourceforge.net/[ditaa] or + https://pythonhosted.org/aafigure/[aafigure]). + +* +FOO_CHECK_DEPENDENCIES__HOOKS+, to run additional tests for + the specified format ++ (see the list of rendered formats, above). + +Buildroot sets the following variable that can be used in the definitions +above: + +* +$(FOO_DOCDIR)+, similar to +$(FOO_PKGDIR)+, contains the path to the + directory containing +foo.mk+. It can be used to refer to the document + sources, and can be used in the hooks, especially the post-rsync hook + if parts of the documentation needs to be generated. + +* +$(@D)+, as for traditional packages, contains the path to the directory + where the document will be copied and built. + +Here is a complete example that uses all variables and all hooks: + +---- +01: ################################################################################ +02: # +03: # foo-document +04: # +05: ################################################################################ +06: +07: FOO_SOURCES = $(sort $(wildcard $(FOO_DOCDIR)/*)) +08: FOO_RESOURCES = $(sort $(wildcard $(FOO_DOCDIR)/ressources)) +09: +10: FOO_TOC_DEPTH = 2 +11: FOO_TOC_DEPTH_HTML = 1 +12: FOO_TOC_DEPTH_SPLIT_HTML = 3 +13: +14: define FOO_GEN_EXTRA_DOC +15: /path/to/generate-script --outdir=$(@D) +16: endef +17: FOO_POST_RSYNC_HOOKS += FOO_GEN_EXTRA_DOC +18: +19: define FOO_CHECK_MY_PROG +20: if ! which my-prog >/dev/null 2>&1; then \ +21: echo "You need my-prog to generate the foo document"; \ +22: exit 1; \ +23: fi +24: endef +25: FOO_CHECK_DEPENDENCIES_HOOKS += FOO_CHECK_MY_PROG +26: +27: define FOO_CHECK_MY_OTHER_PROG +28: if ! which my-other-prog >/dev/null 2>&1; then \ +29: echo "You need my-other-prog to generate the foo document as PDF"; \ +30: exit 1; \ +31: fi +32: endef +33: FOO_CHECK_DEPENDENCIES_PDF_HOOKS += FOO_CHECK_MY_OTHER_PROG +34: +35: $(eval $(call asciidoc-document)) +---- diff --git a/docs/manual/adding-packages-autotools.adoc b/docs/manual/adding-packages-autotools.adoc new file mode 100644 index 00000000..a45d1652 --- /dev/null +++ b/docs/manual/adding-packages-autotools.adoc @@ -0,0 +1,165 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for autotools-based packages + +[[autotools-package-tutorial]] + +==== +autotools-package+ tutorial + +First, let's see how to write a +.mk+ file for an autotools-based +package, with an example : + +---- +01: ################################################################################ +02: # +03: # libfoo +04: # +05: ################################################################################ +06: +07: LIBFOO_VERSION = 1.0 +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz +09: LIBFOO_SITE = http://www.foosoftware.org/download +10: LIBFOO_INSTALL_STAGING = YES +11: LIBFOO_INSTALL_TARGET = NO +12: LIBFOO_CONF_OPTS = --disable-shared +13: LIBFOO_DEPENDENCIES = libglib2 host-pkgconf +14: +15: $(eval $(autotools-package)) +---- + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball recommended) +and the location of the tarball on the Web. Buildroot will automatically +download the tarball from this location. + +On line 10, we tell Buildroot to install the package to the staging +directory. The staging directory, located in +output/staging/+ +is the directory where all the packages are installed, including their +development files, etc. By default, packages are not installed to the +staging directory, since usually, only libraries need to be installed in +the staging directory: their development files are needed to compile +other libraries or applications depending on them. Also by default, when +staging installation is enabled, packages are installed in this location +using the +make install+ command. + +On line 11, we tell Buildroot to not install the package to the +target directory. This directory contains what will become the root +filesystem running on the target. For purely static libraries, it is +not necessary to install them in the target directory because they will +not be used at runtime. By default, target installation is enabled; setting +this variable to NO is almost never needed. Also by default, packages are +installed in this location using the +make install+ command. + +On line 12, we tell Buildroot to pass a custom configure option, that +will be passed to the +./configure+ script before configuring +and building the package. + +On line 13, we declare our dependencies, so that they are built +before the build process of our package starts. + +Finally, on line line 15, we invoke the +autotools-package+ +macro that generates all the Makefile rules that actually allows the +package to be built. + +[[autotools-package-reference]] + +==== +autotools-package+ reference + +The main macro of the autotools package infrastructure is ++autotools-package+. It is similar to the +generic-package+ macro. The ability to +have target and host packages is also available, with the ++host-autotools-package+ macro. + +Just like the generic infrastructure, the autotools infrastructure +works by defining a number of variables before calling the ++autotools-package+ macro. + +All the package metadata information variables that exist in the +xref:generic-package-reference[generic package infrastructure] also +exist in the autotools infrastructure. + +A few additional variables, specific to the autotools infrastructure, +can also be defined. Many of them are only useful in very specific +cases, typical packages will therefore only use a few of them. + +* +LIBFOO_SUBDIR+ may contain the name of a subdirectory + inside the package that contains the configure script. This is useful, + if for example, the main configure script is not at the root of the + tree extracted by the tarball. If +HOST_LIBFOO_SUBDIR+ is + not specified, it defaults to +LIBFOO_SUBDIR+. + +* +LIBFOO_CONF_ENV+, to specify additional environment + variables to pass to the configure script. By default, empty. + +* +LIBFOO_CONF_OPTS+, to specify additional configure + options to pass to the configure script. By default, empty. + +* +LIBFOO_MAKE+, to specify an alternate +make+ + command. This is typically useful when parallel make is enabled in + the configuration (using +BR2_JLEVEL+) but that this + feature should be disabled for the given package, for one reason or + another. By default, set to +$(MAKE)+. If parallel building + is not supported by the package, then it should be set to + +LIBFOO_MAKE=$(MAKE1)+. + +* +LIBFOO_MAKE_ENV+, to specify additional environment + variables to pass to make in the build step. These are passed before + the +make+ command. By default, empty. + +* +LIBFOO_MAKE_OPTS+, to specify additional variables to + pass to make in the build step. These are passed after the + +make+ command. By default, empty. + +* +LIBFOO_AUTORECONF+, tells whether the package should + be autoreconfigured or not (i.e. if the configure script and + Makefile.in files should be re-generated by re-running autoconf, + automake, libtool, etc.). Valid values are +YES+ and + +NO+. By default, the value is +NO+ + +* +LIBFOO_AUTORECONF_ENV+, to specify additional environment + variables to pass to the 'autoreconf' program if + +LIBFOO_AUTORECONF=YES+. These are passed in the environment of + the 'autoreconf' command. By default, empty. + +* +LIBFOO_AUTORECONF_OPTS+ to specify additional options + passed to the 'autoreconf' program if + +LIBFOO_AUTORECONF=YES+. By default, empty. + +* +LIBFOO_AUTOPOINT+, tells whether the package should be + autopointed or not (i.e. if the package needs I18N infrastructure + copied in.) Only valid when +LIBFOO_AUTORECONF=YES+. Valid + values are +YES+ and +NO+. The default is +NO+. + +* +LIBFOO_LIBTOOL_PATCH+ tells whether the Buildroot + patch to fix libtool cross-compilation issues should be applied or + not. Valid values are +YES+ and +NO+. By + default, the value is +YES+ + +* +LIBFOO_INSTALL_STAGING_OPTS+ contains the make options + used to install the package to the staging directory. By default, the + value is +DESTDIR=$(STAGING_DIR) install+, which is + correct for most autotools packages. It is still possible to override + it. + +* +LIBFOO_INSTALL_TARGET_OPTS+ contains the make options + used to install the package to the target directory. By default, the + value is +DESTDIR=$(TARGET_DIR) install+. The default + value is correct for most autotools packages, but it is still possible + to override it if needed. + +With the autotools infrastructure, all the steps required to build +and install the packages are already defined, and they generally work +well for most autotools-based packages. However, when required, it is +still possible to customize what is done in any particular step: + +* By adding a post-operation hook (after extract, patch, configure, + build or install). See xref:hooks[] for details. + +* By overriding one of the steps. For example, even if the autotools + infrastructure is used, if the package +.mk+ file defines its + own +LIBFOO_CONFIGURE_CMDS+ variable, it will be used + instead of the default autotools one. However, using this method + should be restricted to very specific cases. Do not use it in the + general case. diff --git a/docs/manual/adding-packages-cargo.adoc b/docs/manual/adding-packages-cargo.adoc new file mode 100644 index 00000000..4df75853 --- /dev/null +++ b/docs/manual/adding-packages-cargo.adoc @@ -0,0 +1,101 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for Cargo-based packages + +Cargo is the package manager for the Rust programming language. It allows the +user to build programs or libraries written in Rust, but it also downloads and +manages their dependencies, to ensure repeatable builds. Cargo packages are +called "crates". + +[[cargo-package-tutorial]] + +==== +cargo-package+ tutorial + +The +Config.in+ file of Cargo-based package 'foo' should contain: + +---- +01: config BR2_PACKAGE_FOO +02: bool "foo" +03: depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS +04: select BR2_PACKAGE_HOST_RUSTC +05: help +06: This is a comment that explains what foo is. +07: +08: http://foosoftware.org/foo/ +---- + +And the +.mk+ file for this package should contain: + +---- +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: FOO_VERSION = 1.0 +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.gz +09: FOO_SITE = http://www.foosoftware.org/download +10: FOO_LICENSE = GPL-3.0+ +11: FOO_LICENSE_FILES = COPYING +12: +13: $(eval $(cargo-package)) +---- + +The Makefile starts with the definition of the standard variables for +package declaration (lines 7 to 11). + +As seen in line 13, it is based on the +cargo-package+ +infrastructure. Cargo will be invoked automatically by this +infrastructure to build and install the package. + +It is still possible to define custom build commands or install +commands (i.e. with FOO_BUILD_CMDS and FOO_INSTALL_TARGET_CMDS). +Those will then replace the commands from the cargo infrastructure. + +==== +cargo-package+ reference + +The main macros for the Cargo package infrastructure are ++cargo-package+ for target packages and +host-cargo-package+ for host +packages. + +Just like the generic infrastructure, the Cargo infrastructure works +by defining a number of variables before calling the +cargo-package+ +or +host-cargo-package+ macros. + +All the package metadata information variables that exist in the +xref:generic-package-reference[generic package infrastructure] also +exist in the Cargo infrastructure. + +A few additional variables, specific to the Cargo infrastructure, can +also be defined. Many of them are only useful in very specific cases, +typical packages will therefore only use a few of them. + +* +FOO_SUBDIR+ may contain the name of a subdirectory inside the package + that contains the Cargo.toml file. This is useful, if for example, it + is not at the root of the tree extracted by the tarball. If + +HOST_FOO_SUBDIR+ is not specified, it defaults to +FOO_SUBDIR+. + +* +FOO_CARGO_ENV+ can be used to pass additional variables in the + environment of +cargo+ invocations. It used at both build and + installation time + +* +FOO_CARGO_BUILD_OPTS+ can be used to pass additional options to + +cargo+ at build time. + +* +FOO_CARGO_INSTALL_OPTS+ can be used to pass additional options to + +cargo+ at install time. + +A crate can depend on other libraries from crates.io or git +repositories, listed in its +Cargo.toml+ file. Buildroot automatically +takes care of downloading such dependencies as part of the download +step of packages that use the +cargo-package+ infrastructure. Such +dependencies are then kept together with the package source code in +the tarball cached in Buildroot's +DL_DIR+, and therefore the hash of +the package's tarball doesn't only cover the source of the package +itself, but also covers the sources of the dependencies. Thus, a change +injected into one of the dependencies will also be discovered by the +hash check. In addition, this mechanism allows the build to be +performed completely offline since cargo will not do any downloads +during the build. This mechanism is called vendoring the dependencies. diff --git a/docs/manual/adding-packages-cmake.adoc b/docs/manual/adding-packages-cmake.adoc new file mode 100644 index 00000000..845f54ad --- /dev/null +++ b/docs/manual/adding-packages-cmake.adoc @@ -0,0 +1,163 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for CMake-based packages + +[[cmake-package-tutorial]] + +==== +cmake-package+ tutorial + +First, let's see how to write a +.mk+ file for a CMake-based package, +with an example : + +---- +01: ################################################################################ +02: # +03: # libfoo +04: # +05: ################################################################################ +06: +07: LIBFOO_VERSION = 1.0 +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz +09: LIBFOO_SITE = http://www.foosoftware.org/download +10: LIBFOO_INSTALL_STAGING = YES +11: LIBFOO_INSTALL_TARGET = NO +12: LIBFOO_CONF_OPTS = -DBUILD_DEMOS=ON +13: LIBFOO_DEPENDENCIES = libglib2 host-pkgconf +14: +15: $(eval $(cmake-package)) +---- + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball recommended) +and the location of the tarball on the Web. Buildroot will automatically +download the tarball from this location. + +On line 10, we tell Buildroot to install the package to the staging +directory. The staging directory, located in +output/staging/+ +is the directory where all the packages are installed, including their +development files, etc. By default, packages are not installed to the +staging directory, since usually, only libraries need to be installed in +the staging directory: their development files are needed to compile +other libraries or applications depending on them. Also by default, when +staging installation is enabled, packages are installed in this location +using the +make install+ command. + +On line 11, we tell Buildroot to not install the package to the +target directory. This directory contains what will become the root +filesystem running on the target. For purely static libraries, it is +not necessary to install them in the target directory because they will +not be used at runtime. By default, target installation is enabled; setting +this variable to NO is almost never needed. Also by default, packages are +installed in this location using the +make install+ command. + +On line 12, we tell Buildroot to pass custom options to CMake when it is +configuring the package. + +On line 13, we declare our dependencies, so that they are built +before the build process of our package starts. + +Finally, on line line 15, we invoke the +cmake-package+ +macro that generates all the Makefile rules that actually allows the +package to be built. + +[[cmake-package-reference]] + +==== +cmake-package+ reference + +The main macro of the CMake package infrastructure is ++cmake-package+. It is similar to the +generic-package+ macro. The ability to +have target and host packages is also available, with the ++host-cmake-package+ macro. + +Just like the generic infrastructure, the CMake infrastructure works +by defining a number of variables before calling the +cmake-package+ +macro. + +All the package metadata information variables that exist in the +xref:generic-package-reference[generic package infrastructure] also +exist in the CMake infrastructure. + +A few additional variables, specific to the CMake infrastructure, can +also be defined. Many of them are only useful in very specific cases, +typical packages will therefore only use a few of them. + +* +LIBFOO_SUBDIR+ may contain the name of a subdirectory inside the + package that contains the main CMakeLists.txt file. This is useful, + if for example, the main CMakeLists.txt file is not at the root of + the tree extracted by the tarball. If +HOST_LIBFOO_SUBDIR+ is not + specified, it defaults to +LIBFOO_SUBDIR+. + +* +LIBFOO_CMAKE_BACKEND+ specifies the cmake backend to use, one of + `make` (to use the GNU Makefiles generator, the default) or `ninja` + (to use the Ninja generator). + +* +LIBFOO_CONF_ENV+, to specify additional environment variables to + pass to CMake. By default, empty. + +* +LIBFOO_CONF_OPTS+, to specify additional configure options to pass + to CMake. By default, empty. A number of common CMake options are + set by the +cmake-package+ infrastructure; so it is normally not + necessary to set them in the package's +*.mk+ file unless you want + to override them: + +** +CMAKE_BUILD_TYPE+ is driven by +BR2_ENABLE_RUNTIME_DEBUG+; +** +CMAKE_INSTALL_PREFIX+; +** +BUILD_SHARED_LIBS+ is driven by +BR2_STATIC_LIBS+; +** +BUILD_DOC+, +BUILD_DOCS+ are disabled; +** +BUILD_EXAMPLE+, +BUILD_EXAMPLES+ are disabled; +** +BUILD_TEST+, +BUILD_TESTS+, +BUILD_TESTING+ are disabled. + +* +LIBFOO_BUILD_ENV+ and +LIBFOO_BUILD_OPTS+ to specify additional + environment variables, or command line options, to pass to the backend + at build time. + +* +LIBFOO_SUPPORTS_IN_SOURCE_BUILD = NO+ should be set when the package + cannot be built inside the source tree but needs a separate build + directory. + +* +LIBFOO_MAKE+, to specify an alternate +make+ command. This is + typically useful when parallel make is enabled in the configuration + (using +BR2_JLEVEL+) but that this feature should be disabled for + the given package, for one reason or another. By default, set to + +$(MAKE)+. If parallel building is not supported by the package, + then it should be set to +LIBFOO_MAKE=$(MAKE1)+. + +* +LIBFOO_MAKE_ENV+, to specify additional environment variables to + pass to make in the build step. These are passed before the +make+ + command. By default, empty. + +* +LIBFOO_MAKE_OPTS+, to specify additional variables to pass to make + in the build step. These are passed after the +make+ command. By + default, empty. + +* +LIBFOO_INSTALL_OPTS+ contains the make options used to + install the package to the host directory. By default, the value + is +install+, which is correct for most CMake packages. It is still + possible to override it. + +* +LIBFOO_INSTALL_STAGING_OPTS+ contains the make options used to + install the package to the staging directory. By default, the value + is +DESTDIR=$(STAGING_DIR) install/fast+, which is correct for most + CMake packages. It is still possible to override it. + +* +LIBFOO_INSTALL_TARGET_OPTS+ contains the make options used to + install the package to the target directory. By default, the value + is +DESTDIR=$(TARGET_DIR) install/fast+. The default value is correct + for most CMake packages, but it is still possible to override it if + needed. + +With the CMake infrastructure, all the steps required to build and +install the packages are already defined, and they generally work well +for most CMake-based packages. However, when required, it is still +possible to customize what is done in any particular step: + +* By adding a post-operation hook (after extract, patch, configure, + build or install). See xref:hooks[] for details. + +* By overriding one of the steps. For example, even if the CMake + infrastructure is used, if the package +.mk+ file defines its own + +LIBFOO_CONFIGURE_CMDS+ variable, it will be used instead of the + default CMake one. However, using this method should be restricted + to very specific cases. Do not use it in the general case. diff --git a/docs/manual/adding-packages-conclusion.adoc b/docs/manual/adding-packages-conclusion.adoc new file mode 100644 index 00000000..93f90a41 --- /dev/null +++ b/docs/manual/adding-packages-conclusion.adoc @@ -0,0 +1,13 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Conclusion + +As you can see, adding a software package to Buildroot is simply a +matter of writing a Makefile using an existing example and modifying it +according to the compilation process required by the package. + +If you package software that might be useful for other people, don't +forget to send a patch to the Buildroot mailing list (see +xref:submitting-patches[])! + diff --git a/docs/manual/adding-packages-directory.adoc b/docs/manual/adding-packages-directory.adoc new file mode 100644 index 00000000..4ca11507 --- /dev/null +++ b/docs/manual/adding-packages-directory.adoc @@ -0,0 +1,598 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Package directory + +First of all, create a directory under the +package+ directory for +your software, for example +libfoo+. + +Some packages have been grouped by topic in a sub-directory: ++x11r7+, +qt5+ and +gstreamer+. If your package fits in +one of these categories, then create your package directory in these. +New subdirectories are discouraged, however. + +=== Config files + +For the package to be displayed in the configuration tool, you need to +create a Config file in your package directory. There are two types: ++Config.in+ and +Config.in.host+. + +==== +Config.in+ file + +For packages used on the target, create a file named +Config.in+. This +file will contain the option descriptions related to our +libfoo+ software +that will be used and displayed in the configuration tool. It should basically +contain: + +---- +config BR2_PACKAGE_LIBFOO + bool "libfoo" + help + This is a comment that explains what libfoo is. The help text + should be wrapped. + + http://foosoftware.org/libfoo/ +---- + +The +bool+ line, +help+ line and other metadata information about the +configuration option must be indented with one tab. The help text +itself should be indented with one tab and two spaces, lines should +be wrapped to fit 72 columns, where tab counts for 8, so 62 characters +in the text itself. The help text must mention the upstream URL of the +project after an empty line. + +As a convention specific to Buildroot, the ordering of the attributes +is as follows: + +. The type of option: +bool+, +string+... with the prompt +. If needed, the +default+ value(s) +. Any dependencies on the target in +depends on+ form +. Any dependencies on the toolchain in +depends on+ form +. Any dependencies on other packages in +depends on+ form +. Any dependency of the +select+ form +. The help keyword and help text. + +You can add other sub-options into a +if BR2_PACKAGE_LIBFOO...endif+ +statement to configure particular things in your software. You can look at +examples in other packages. The syntax of the +Config.in+ file is the same +as the one for the kernel Kconfig file. The documentation for this syntax is +available at http://kernel.org/doc/Documentation/kbuild/kconfig-language.txt[] + +Finally you have to add your new +libfoo/Config.in+ to ++package/Config.in+ (or in a category subdirectory if you decided to +put your package in one of the existing categories). The files +included there are 'sorted alphabetically' per category and are 'NOT' +supposed to contain anything but the 'bare' name of the package. + +---- +source "package/libfoo/Config.in" +---- + + +==== +Config.in.host+ file + +Some packages also need to be built for the host system. There are two +options here: + +* The host package is only required to satisfy build-time + dependencies of one or more target packages. In this case, add + +host-foo+ to the target package's +BAR_DEPENDENCIES+ variable. No + +Config.in.host+ file should be created. + +* The host package should be explicitly selectable by the user from + the configuration menu. In this case, create a +Config.in.host+ file + for that host package: ++ +---- +config BR2_PACKAGE_HOST_FOO + bool "host foo" + help + This is a comment that explains what foo for the host is. + + http://foosoftware.org/foo/ +---- ++ +The same coding style and options as for the +Config.in+ file are valid. ++ +Finally you have to add your new +libfoo/Config.in.host+ to ++package/Config.in.host+. The files included there are 'sorted alphabetically' +and are 'NOT' supposed to contain anything but the 'bare' name of the package. ++ +---- +source "package/foo/Config.in.host" +---- ++ +The host package will then be available from the +Host utilities+ menu. + +[[depends-on-vs-select]] +==== Choosing +depends on+ or +select+ + +The +Config.in+ file of your package must also ensure that +dependencies are enabled. Typically, Buildroot uses the following +rules: + +* Use a +select+ type of dependency for dependencies on + libraries. These dependencies are generally not obvious and it + therefore make sense to have the kconfig system ensure that the + dependencies are selected. For example, the _libgtk2_ package uses + +select BR2_PACKAGE_LIBGLIB2+ to make sure this library is also + enabled. + The +select+ keyword expresses the dependency with a backward + semantic. + +* Use a +depends on+ type of dependency when the user really needs to + be aware of the dependency. Typically, Buildroot uses this type of + dependency for dependencies on target architecture, MMU support and + toolchain options (see xref:dependencies-target-toolchain-options[]), + or for dependencies on "big" things, such as the X.org system. + The +depends on+ keyword expresses the dependency with a forward + semantic. + +.Note +The current problem with the _kconfig_ language is that these two +dependency semantics are not internally linked. Therefore, it may be +possible to select a package, whom one of its dependencies/requirement +is not met. + +An example illustrates both the usage of +select+ and +depends on+. + +---- +config BR2_PACKAGE_RRDTOOL + bool "rrdtool" + depends on BR2_USE_WCHAR + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_LIBART + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_ZLIB + help + RRDtool is the OpenSource industry standard, high performance + data logging and graphing system for time series data. + + http://oss.oetiker.ch/rrdtool/ + +comment "rrdtool needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR +---- + + +Note that these two dependency types are only transitive with the +dependencies of the same kind. + +This means, in the following example: + +---- +config BR2_PACKAGE_A + bool "Package A" + +config BR2_PACKAGE_B + bool "Package B" + depends on BR2_PACKAGE_A + +config BR2_PACKAGE_C + bool "Package C" + depends on BR2_PACKAGE_B + +config BR2_PACKAGE_D + bool "Package D" + select BR2_PACKAGE_B + +config BR2_PACKAGE_E + bool "Package E" + select BR2_PACKAGE_D +---- + +* Selecting +Package C+ will be visible if +Package B+ has been + selected, which in turn is only visible if +Package A+ has been + selected. + +* Selecting +Package E+ will select +Package D+, which will select + +Package B+, it will not check for the dependencies of +Package B+, + so it will not select +Package A+. + +* Since +Package B+ is selected but +Package A+ is not, this violates + the dependency of +Package B+ on +Package A+. Therefore, in such a + situation, the transitive dependency has to be added explicitly: + +---- +config BR2_PACKAGE_D + bool "Package D" + depends on BR2_PACKAGE_A + select BR2_PACKAGE_B + +config BR2_PACKAGE_E + bool "Package E" + depends on BR2_PACKAGE_A + select BR2_PACKAGE_D +---- + +Overall, for package library dependencies, +select+ should be +preferred. + +Note that such dependencies will ensure that the dependency option +is also enabled, but not necessarily built before your package. To do +so, the dependency also needs to be expressed in the +.mk+ file of the +package. + +Further formatting details: see xref:writing-rules-config-in[the +coding style]. + +[[dependencies-target-toolchain-options]] +==== Dependencies on target and toolchain options + +Many packages depend on certain options of the toolchain: the choice of +C library, C++ support, thread support, RPC support, wchar support, +or dynamic library support. Some packages can only be built on certain +target architectures, or if an MMU is available in the processor. + +These dependencies have to be expressed with the appropriate 'depends +on' statements in the Config.in file. Additionally, for dependencies on +toolchain options, a +comment+ should be displayed when the option is +not enabled, so that the user knows why the package is not available. +Dependencies on target architecture or MMU support should not be +made visible in a comment: since it is unlikely that the user can +freely choose another target, it makes little sense to show these +dependencies explicitly. + +The +comment+ should only be visible if the +config+ option itself would +be visible when the toolchain option dependencies are met. This means +that all other dependencies of the package (including dependencies on +target architecture and MMU support) have to be repeated on the ++comment+ definition. To keep it clear, the +depends on+ statement for +these non-toolchain option should be kept separate from the +depends on+ +statement for the toolchain options. +If there is a dependency on a config option in that same file (typically +the main package) it is preferable to have a global +if ... endif+ +construct rather than repeating the +depends on+ statement on the +comment and other config options. + +The general format of a dependency +comment+ for package foo is: + +---- +foo needs a toolchain w/ featA, featB, featC +---- + +for example: + +---- +mpd needs a toolchain w/ C++, threads, wchar +---- + +or + +---- +crda needs a toolchain w/ threads +---- + +Note that this text is kept brief on purpose, so that it will fit on a +80-character terminal. + +The rest of this section enumerates the different target and toolchain +options, the corresponding config symbols to depend on, and the text to +use in the comment. + +* Target architecture +** Dependency symbol: +BR2_powerpc+, +BR2_mips+, ... (see +arch/Config.in+) +** Comment string: no comment to be added + +* MMU support +** Dependency symbol: +BR2_USE_MMU+ +** Comment string: no comment to be added + +* Gcc +__sync_*+ built-ins used for atomic operations. They are + available in variants operating on 1 byte, 2 bytes, 4 bytes and 8 + bytes. Since different architectures support atomic operations on + different sizes, one dependency symbol is available for each size: +** Dependency symbol: +BR2_TOOLCHAIN_HAS_SYNC_1+ for 1 byte, + +BR2_TOOLCHAIN_HAS_SYNC_2+ for 2 bytes, + +BR2_TOOLCHAIN_HAS_SYNC_4+ for 4 bytes, +BR2_TOOLCHAIN_HAS_SYNC_8+ + for 8 bytes. +** Comment string: no comment to be added + +* Gcc +__atomic_*+ built-ins used for atomic operations. +** Dependency symbol: +BR2_TOOLCHAIN_HAS_ATOMIC+. +** Comment string: no comment to be added + +* Kernel headers +** Dependency symbol: +BR2_TOOLCHAIN_HEADERS_AT_LEAST_X_Y+, (replace + +X_Y+ with the proper version, see +toolchain/Config.in+) +** Comment string: +headers >= X.Y+ and/or `headers <= X.Y` (replace + +X.Y+ with the proper version) + +* GCC version +** Dependency symbol: +BR2_TOOLCHAIN_GCC_AT_LEAST_X_Y+, (replace + +X_Y+ with the proper version, see +toolchain/Config.in+) +** Comment string: +gcc >= X.Y+ and/or `gcc <= X.Y` (replace + +X.Y+ with the proper version) + +* Host GCC version +** Dependency symbol: +BR2_HOST_GCC_AT_LEAST_X_Y+, (replace + +X_Y+ with the proper version, see +Config.in+) +** Comment string: no comment to be added +** Note that it is usually not the package itself that has a minimum + host GCC version, but rather a host-package on which it depends. + +* C library +** Dependency symbol: +BR2_TOOLCHAIN_USES_GLIBC+, + +BR2_TOOLCHAIN_USES_MUSL+, +BR2_TOOLCHAIN_USES_UCLIBC+ +** Comment string: for the C library, a slightly different comment text + is used: +foo needs a glibc toolchain+, or `foo needs a glibc + toolchain w/ C++` + +* C++ support +** Dependency symbol: +BR2_INSTALL_LIBSTDCPP+ +** Comment string: `C++` + +* D support +** Dependency symbol: +BR2_TOOLCHAIN_HAS_DLANG+ +** Comment string: `Dlang` + +* Fortran support +** Dependency symbol: +BR2_TOOLCHAIN_HAS_FORTRAN+ +** Comment string: `fortran` + +* thread support +** Dependency symbol: +BR2_TOOLCHAIN_HAS_THREADS+ +** Comment string: +threads+ (unless +BR2_TOOLCHAIN_HAS_THREADS_NPTL+ + is also needed, in which case, specifying only +NPTL+ is sufficient) + +* NPTL thread support +** Dependency symbol: +BR2_TOOLCHAIN_HAS_THREADS_NPTL+ +** Comment string: +NPTL+ + +* RPC support +** Dependency symbol: +BR2_TOOLCHAIN_HAS_NATIVE_RPC+ +** Comment string: +RPC+ + +* wchar support +** Dependency symbol: +BR2_USE_WCHAR+ +** Comment string: +wchar+ + +* dynamic library +** Dependency symbol: +!BR2_STATIC_LIBS+ +** Comment string: +dynamic library+ + +==== Dependencies on a Linux kernel built by buildroot + +Some packages need a Linux kernel to be built by buildroot. These are +typically kernel modules or firmware. A comment should be added in the +Config.in file to express this dependency, similar to dependencies on +toolchain options. The general format is: + +---- +foo needs a Linux kernel to be built +---- + +If there is a dependency on both toolchain options and the Linux +kernel, use this format: + +---- +foo needs a toolchain w/ featA, featB, featC and a Linux kernel to be built +---- + +==== Dependencies on udev /dev management + +If a package needs udev /dev management, it should depend on symbol ++BR2_PACKAGE_HAS_UDEV+, and the following comment should be added: + +---- +foo needs udev /dev management +---- + +If there is a dependency on both toolchain options and udev /dev +management, use this format: + +---- +foo needs udev /dev management and a toolchain w/ featA, featB, featC +---- + +==== Dependencies on features provided by virtual packages + +Some features can be provided by more than one package, such as the +openGL libraries. + +See xref:virtual-package-tutorial[] for more on the virtual packages. + +=== The +.mk+ file + +[[adding-packages-mk]] + +Finally, here's the hardest part. Create a file named +libfoo.mk+. It +describes how the package should be downloaded, configured, built, +installed, etc. + +Depending on the package type, the +.mk+ file must be written in a +different way, using different infrastructures: + +* *Makefiles for generic packages* (not using autotools or CMake): + These are based on an infrastructure similar to the one used for + autotools-based packages, but require a little more work from the + developer. They specify what should be done for the configuration, + compilation and installation of the package. This + infrastructure must be used for all packages that do not use the + autotools as their build system. In the future, other specialized + infrastructures might be written for other build systems. We cover + them through in a xref:generic-package-tutorial[tutorial] and a + xref:generic-package-reference[reference]. + +* *Makefiles for autotools-based software* (autoconf, automake, etc.): + We provide a dedicated infrastructure for such packages, since + autotools is a very common build system. This infrastructure 'must' + be used for new packages that rely on the autotools as their build + system. We cover them through a xref:autotools-package-tutorial[tutorial] + and xref:autotools-package-reference[reference]. + +* *Makefiles for cmake-based software*: We provide a dedicated + infrastructure for such packages, as CMake is a more and more + commonly used build system and has a standardized behaviour. This + infrastructure 'must' be used for new packages that rely on + CMake. We cover them through a xref:cmake-package-tutorial[tutorial] + and xref:cmake-package-reference[reference]. + +* *Makefiles for Python modules*: We have a dedicated infrastructure + for Python modules that use the +flit+, +pep517+, +setuptools+, + +setuptools-rust+ or +maturin+ mechanisms. We cover them through a + xref:python-package-tutorial[tutorial] and a + xref:python-package-reference[reference]. + +* *Makefiles for Lua modules*: We have a dedicated infrastructure for + Lua modules available through the LuaRocks web site. We cover them + through a xref:luarocks-package-tutorial[tutorial] and a + xref:luarocks-package-reference[reference]. + +Further formatting details: see xref:writing-rules-mk[the writing +rules]. + +[[adding-packages-hash]] +=== The +.hash+ file + +When possible, you must add a third file, named +libfoo.hash+, that +contains the hashes of the downloaded files for the +libfoo+ +package. The only reason for not adding a +.hash+ file is when hash +checking is not possible due to how the package is downloaded. + +When a package has a version selection choice, then the hash file may be +stored in a subdirectory named after the version, e.g. ++package/libfoo/1.2.3/libfoo.hash+. This is especially important if the +different versions have different licensing terms, but they are stored +in the same file. Otherwise, the hash file should stay in the package's +directory. + +The hashes stored in that file are used to validate the integrity of the +downloaded files and of the license files. + +The format of this file is one line for each file for which to check the +hash, each line with the following three fields separated by two spaces: + +* the type of hash, one of: +** +md5+, +sha1+, +sha224+, +sha256+, +sha384+, +sha512+ +* the hash of the file: +** for +md5+, 32 hexadecimal characters +** for +sha1+, 40 hexadecimal characters +** for +sha224+, 56 hexadecimal characters +** for +sha256+, 64 hexadecimal characters +** for +sha384+, 96 hexadecimal characters +** for +sha512+, 128 hexadecimal characters +* the name of the file: +** for a source archive: the basename of the file, without any directory + component, +** for a license file: the path as it appears in +FOO_LICENSE_FILES+. + +Lines starting with a +#+ sign are considered comments, and ignored. Empty +lines are ignored. + +There can be more than one hash for a single file, each on its own line. In +this case, all hashes must match. + +.Note +Ideally, the hashes stored in this file should match the hashes published by +upstream, e.g. on their website, in the e-mail announcement... If upstream +provides more than one type of hash (e.g. +sha1+ and +sha512+), then it is +best to add all those hashes in the +.hash+ file. If upstream does not +provide any hash, or only provides an +md5+ hash, then compute at least one +strong hash yourself (preferably +sha256+, but not +md5+), and mention +this in a comment line above the hashes. + +.Note +The hashes for license files are used to detect a license change when a +package version is bumped. The hashes are checked during the make legal-info +target run. For a package with multiple versions (like Qt5), +create the hash file in a subdirectory ++ of that package +(see also xref:patch-apply-order[]). + +The example below defines a +sha1+ and a +sha256+ published by upstream for +the main +libfoo-1.2.3.tar.bz2+ tarball, an +md5+ from upstream and a +locally-computed +sha256+ hashes for a binary blob, a +sha256+ for a +downloaded patch, and an archive with no hash: + +---- +# Hashes from: http://www.foosoftware.org/download/libfoo-1.2.3.tar.bz2.{sha1,sha256}: +sha1 486fb55c3efa71148fe07895fd713ea3a5ae343a libfoo-1.2.3.tar.bz2 +sha256 efc8103cc3bcb06bda6a781532d12701eb081ad83e8f90004b39ab81b65d4369 libfoo-1.2.3.tar.bz2 + +# md5 from: http://www.foosoftware.org/download/libfoo-1.2.3.tar.bz2.md5, sha256 locally computed: +md5 2d608f3c318c6b7557d551a5a09314f03452f1a1 libfoo-data.bin +sha256 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b libfoo-data.bin + +# Locally computed: +sha256 ff52101fb90bbfc3fe9475e425688c660f46216d7e751c4bbdb1dc85cdccacb9 libfoo-fix-blabla.patch + +# Hash for license files: +sha256 a45a845012742796534f7e91fe623262ccfb99460a2bd04015bd28d66fba95b8 COPYING +sha256 01b1f9f2c8ee648a7a596a1abe8aa4ed7899b1c9e5551bda06da6e422b04aa55 doc/COPYING.LGPL +---- + +If the +.hash+ file is present, and it contains one or more hashes for a +downloaded file, the hash(es) computed by Buildroot (after download) must +match the hash(es) stored in the +.hash+ file. If one or more hashes do +not match, Buildroot considers this an error, deletes the downloaded file, +and aborts. + +If the +.hash+ file is present, but it does not contain a hash for a +downloaded file, Buildroot considers this an error and aborts. However, +the downloaded file is left in the download directory since this +typically indicates that the +.hash+ file is wrong but the downloaded +file is probably OK. + +Hashes are currently checked for files fetched from http/ftp servers, +Git or subversion repositories, files copied using scp and local files. +Hashes are not checked for other version control systems (such as CVS, +mercurial) because Buildroot currently does not generate reproducible +tarballs when source code is fetched from such version control +systems. + +Additionally, for packages for which it is possible to specify a custom +version (e.g. a custom version string, a remote tarball URL, or a VCS +repository location and changeset), Buildroot can't carry hashes for +those. It is however possible to xref:customize-hashes[provide a list of +extra hashes] that can cover such cases. + +Hashes should only be added in +.hash+ files for files that are +guaranteed to be stable. For example, patches auto-generated by Github +are not guaranteed to be stable, and therefore their hashes can change +over time. Such patches should not be downloaded, and instead be added +locally to the package folder. + +If the +.hash+ file is missing, then no check is done at all. + +[[adding-packages-start-script]] +=== The +SNNfoo+ start script + +Packages that provide a system daemon usually need to be started somehow +at boot. Buildroot comes with support for several init systems, some +are considered tier one (see xref:init-system[]), while others are also +available but do not have the same level of integration. Ideally, all +packages providing a system daemon should provide a start script for +BusyBox/SysV init and a systemd unit file. + +For consistency, the start script must follow the style and composition +as shown in the reference: +package/busybox/S01syslogd+. An annotated +example of this style is shown below. There is no specific coding style +for systemd unit files, but if a package comes with its own unit file, +that is preferred over a buildroot specific one, if it is compatible +with buildroot. + +The name of the start script is composed of the +SNN+ and the daemon +name. The +NN+ is the start order number which needs to be carefully +chosen. For example, a program that requires networking to be up should +not start before +S40network+. The scripts are started in alphabetical +order, so +S01syslogd+ starts before +S01watchdogd+, and +S02sysctl+ +start thereafter. + +[source,sh] +---- +include::S01syslogd[] +---- + +*Note:* programs that support reloading their configuration in some +fashion (+SIGHUP+) should provide a +reload()+ function similar to ++stop()+. The +start-stop-daemon+ command supports +--stop --signal +HUP+ for this. It is recommended to always append +--exec +"/sbin/$DAEMON"+ to all +start-stop-daemon+ commands to ensure signals +are set to a PID that matches +$DAEMON+. + +Both start scripts and unit files can source command line arguments from ++/etc/default/foo+, in general, if such a file does not exist it should +not block the start of the daemon, unless there is some site specirfic +command line argument the daemon requires to start. For start scripts a ++FOO_ARGS="-s -o -m -e -args"+ can be defined to a default value in and +the user can override this from +/etc/default/foo+. diff --git a/docs/manual/adding-packages-generic.adoc b/docs/manual/adding-packages-generic.adoc new file mode 100644 index 00000000..89fc7004 --- /dev/null +++ b/docs/manual/adding-packages-generic.adoc @@ -0,0 +1,672 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for packages with specific build systems + +By 'packages with specific build systems' we mean all the packages +whose build system is not one of the standard ones, such as +'autotools' or 'CMake'. This typically includes packages whose build +system is based on hand-written Makefiles or shell scripts. + +[[generic-package-tutorial]] + +==== +generic-package+ tutorial + +---- +01: ################################################################################ +02: # +03: # libfoo +04: # +05: ################################################################################ +06: +07: LIBFOO_VERSION = 1.0 +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz +09: LIBFOO_SITE = http://www.foosoftware.org/download +10: LIBFOO_LICENSE = GPL-3.0+ +11: LIBFOO_LICENSE_FILES = COPYING +12: LIBFOO_INSTALL_STAGING = YES +13: LIBFOO_CONFIG_SCRIPTS = libfoo-config +14: LIBFOO_DEPENDENCIES = host-libaaa libbbb +15: +16: define LIBFOO_BUILD_CMDS +17: $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all +18: endef +19: +20: define LIBFOO_INSTALL_STAGING_CMDS +21: $(INSTALL) -D -m 0755 $(@D)/libfoo.a $(STAGING_DIR)/usr/lib/libfoo.a +22: $(INSTALL) -D -m 0644 $(@D)/foo.h $(STAGING_DIR)/usr/include/foo.h +23: $(INSTALL) -D -m 0755 $(@D)/libfoo.so* $(STAGING_DIR)/usr/lib +24: endef +25: +26: define LIBFOO_INSTALL_TARGET_CMDS +27: $(INSTALL) -D -m 0755 $(@D)/libfoo.so* $(TARGET_DIR)/usr/lib +28: $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/foo.d +29: endef +30: +31: define LIBFOO_USERS +32: foo -1 libfoo -1 * - - - LibFoo daemon +33: endef +34: +35: define LIBFOO_DEVICES +36: /dev/foo c 666 0 0 42 0 - - - +37: endef +38: +39: define LIBFOO_PERMISSIONS +40: /bin/foo f 4755 foo libfoo - - - - - +41: endef +42: +43: $(eval $(generic-package)) +---- + +The Makefile begins on line 7 to 11 with metadata information: the +version of the package (+LIBFOO_VERSION+), the name of the +tarball containing the package (+LIBFOO_SOURCE+) (xz-ed tarball recommended) +the Internet location at which the tarball can be downloaded from +(+LIBFOO_SITE+), the license (+LIBFOO_LICENSE+) and file with the +license text (+LIBFOO_LICENSE_FILES+). All variables must start with +the same prefix, +LIBFOO_+ in this case. This prefix is always the +uppercased version of the package name (see below to understand where +the package name is defined). + +On line 12, we specify that this package wants to install something to +the staging space. This is often needed for libraries, since they must +install header files and other development files in the staging space. +This will ensure that the commands listed in the ++LIBFOO_INSTALL_STAGING_CMDS+ variable will be executed. + +On line 13, we specify that there is some fixing to be done to some +of the 'libfoo-config' files that were installed during ++LIBFOO_INSTALL_STAGING_CMDS+ phase. +These *-config files are executable shell script files that are +located in '$(STAGING_DIR)/usr/bin' directory and are executed +by other 3rd party packages to find out the location and the linking +flags of this particular package. + +The problem is that all these *-config files by default give wrong, +host system linking flags that are unsuitable for cross-compiling. + +For example: '-I/usr/include' instead of '-I$(STAGING_DIR)/usr/include' +or: '-L/usr/lib' instead of '-L$(STAGING_DIR)/usr/lib' + +So some sed magic is done to these scripts to make them give correct +flags. +The argument to be given to +LIBFOO_CONFIG_SCRIPTS+ is the file name(s) +of the shell script(s) needing fixing. All these names are relative to +'$(STAGING_DIR)/usr/bin' and if needed multiple names can be given. + +In addition, the scripts listed in +LIBFOO_CONFIG_SCRIPTS+ are removed +from +$(TARGET_DIR)/usr/bin+, since they are not needed on the target. + +.Config script: 'divine' package +================================ +Package divine installs shell script '$(STAGING_DIR)/usr/bin/divine-config'. + +So its fixup would be: + +---- +DIVINE_CONFIG_SCRIPTS = divine-config +---- +================================ + +.Config script: 'imagemagick' package: +================================ +Package imagemagick installs the following scripts: +'$(STAGING_DIR)/usr/bin/{Magick,Magick++,MagickCore,MagickWand,Wand}-config' + +So it's fixup would be: + +---- +IMAGEMAGICK_CONFIG_SCRIPTS = \ + Magick-config Magick++-config \ + MagickCore-config MagickWand-config Wand-config +---- +================================ + +On line 14, we specify the list of dependencies this package relies +on. These dependencies are listed in terms of lower-case package names, +which can be packages for the target (without the +host-+ +prefix) or packages for the host (with the +host-+) prefix). +Buildroot will ensure that all these packages are built and installed +'before' the current package starts its configuration. + +The rest of the Makefile, lines 16..29, defines what should be done +at the different steps of the package configuration, compilation and +installation. ++LIBFOO_BUILD_CMDS+ tells what steps should be performed to +build the package. +LIBFOO_INSTALL_STAGING_CMDS+ tells what +steps should be performed to install the package in the staging space. ++LIBFOO_INSTALL_TARGET_CMDS+ tells what steps should be +performed to install the package in the target space. + +All these steps rely on the +$(@D)+ variable, which +contains the directory where the source code of the package has been +extracted. + +On lines 31..33, we define a user that is used by this package (e.g. +to run a daemon as non-root) (+LIBFOO_USERS+). + +On line 35..37, we define a device-node file used by this package +(+LIBFOO_DEVICES+). + +On line 39..41, we define the permissions to set to specific files +installed by this package (+LIBFOO_PERMISSIONS+). + +Finally, on line 43, we call the +generic-package+ function, which +generates, according to the variables defined previously, all the +Makefile code necessary to make your package working. + +[[generic-package-reference]] + +==== +generic-package+ reference + +There are two variants of the generic target. The +generic-package+ macro is +used for packages to be cross-compiled for the target. The ++host-generic-package+ macro is used for host packages, natively compiled +for the host. It is possible to call both of them in a single +.mk+ +file: once to create the rules to generate a target +package and once to create the rules to generate a host package: + +---- +$(eval $(generic-package)) +$(eval $(host-generic-package)) +---- + +This might be useful if the compilation of the target package requires +some tools to be installed on the host. If the package name is ++libfoo+, then the name of the package for the target is also ++libfoo+, while the name of the package for the host is ++host-libfoo+. These names should be used in the DEPENDENCIES +variables of other packages, if they depend on +libfoo+ or ++host-libfoo+. + +The call to the +generic-package+ and/or +host-generic-package+ macro +*must* be at the end of the +.mk+ file, after all variable definitions. +The call to +host-generic-package+ *must* be after the call to ++generic-package+, if any. + +For the target package, the +generic-package+ uses the variables defined by +the .mk file and prefixed by the uppercased package name: ++LIBFOO_*+. +host-generic-package+ uses the +HOST_LIBFOO_*+ variables. For +'some' variables, if the +HOST_LIBFOO_+ prefixed variable doesn't +exist, the package infrastructure uses the corresponding variable +prefixed by +LIBFOO_+. This is done for variables that are likely to +have the same value for both the target and host packages. See below +for details. + +The list of variables that can be set in a +.mk+ file to give metadata +information is (assuming the package name is +libfoo+) : + +* +LIBFOO_VERSION+, mandatory, must contain the version of the + package. Note that if +HOST_LIBFOO_VERSION+ doesn't exist, it is + assumed to be the same as +LIBFOO_VERSION+. It can also be a + revision number or a tag for packages that are fetched directly + from their version control system. Examples: + ** a version for a release tarball: +LIBFOO_VERSION = 0.1.2+ + ** a sha1 for a git tree: +LIBFOO_VERSION = cb9d6aa9429e838f0e54faa3d455bcbab5eef057+ + ** a tag for a git tree +LIBFOO_VERSION = v0.1.2+ ++ +.Note: +Using a branch name as +FOO_VERSION+ is not supported, because it does +not and can not work as people would expect it should: ++ + 1. due to local caching, Buildroot will not re-fetch the repository, + so people who expect to be able to follow the remote repository + would be quite surprised and disappointed; + 2. because two builds can never be perfectly simultaneous, and because + the remote repository may get new commits on the branch anytime, + two users, using the same Buildroot tree and building the same + configuration, may get different source, thus rendering the build + non reproducible, and people would be quite surprised and + disappointed. + +* +LIBFOO_SOURCE+ may contain the name of the tarball of the package, + which Buildroot will use to download the tarball from + +LIBFOO_SITE+. If +HOST_LIBFOO_SOURCE+ is not specified, it defaults + to +LIBFOO_SOURCE+. If none are specified, then the value is assumed + to be +libfoo-$(LIBFOO_VERSION).tar.gz+. + + Example: +LIBFOO_SOURCE = foobar-$(LIBFOO_VERSION).tar.bz2+ + +* +LIBFOO_PATCH+ may contain a space-separated list of patch file + names, that Buildroot will download and apply to the package source + code. If an entry contains +://+, then Buildroot will assume it is a + full URL and download the patch from this location. Otherwise, + Buildroot will assume that the patch should be downloaded from + +LIBFOO_SITE+. If +HOST_LIBFOO_PATCH+ is not specified, it defaults + to +LIBFOO_PATCH+. Note that patches that are included in Buildroot + itself use a different mechanism: all files of the form + +*.patch+ present in the package directory inside + Buildroot will be applied to the package after extraction (see + xref:patch-policy[patching a package]). Finally, patches listed in + the +LIBFOO_PATCH+ variable are applied _before_ the patches stored + in the Buildroot package directory. + +* +LIBFOO_SITE+ provides the location of the package, which can be a + URL or a local filesystem path. HTTP, FTP and SCP are supported URL + types for retrieving package tarballs. In these cases don't include a + trailing slash: it will be added by Buildroot between the directory + and the filename as appropriate. Git, Subversion, Mercurial, + and Bazaar are supported URL types for retrieving packages directly + from source code management systems. There is a helper function to make + it easier to download source tarballs from GitHub (refer to + xref:github-download-url[] for details). A filesystem path may be used + to specify either a tarball or a directory containing the package + source code. See +LIBFOO_SITE_METHOD+ below for more details on how + retrieval works. + + Note that SCP URLs should be of the form + +scp://[user@]host:filepath+, and that filepath is relative to the + user's home directory, so you may want to prepend the path with a + slash for absolute paths: + +scp://[user@]host:/absolutepath+. The same goes for SFTP URLs. + + If +HOST_LIBFOO_SITE+ is not specified, it defaults to + +LIBFOO_SITE+. + Examples: + + +LIBFOO_SITE=http://www.libfoosoftware.org/libfoo+ + + +LIBFOO_SITE=http://svn.xiph.org/trunk/Tremor+ + + +LIBFOO_SITE=/opt/software/libfoo.tar.gz+ + + +LIBFOO_SITE=$(TOPDIR)/../src/libfoo+ + +* +LIBFOO_DL_OPTS+ is a space-separated list of additional options to + pass to the downloader. Useful for retrieving documents with + server-side checking for user logins and passwords, or to use a proxy. + All download methods valid for +LIBFOO_SITE_METHOD+ are supported; + valid options depend on the download method (consult the man page + for the respective download utilities). + +* +LIBFOO_EXTRA_DOWNLOADS+ is a space-separated list of additional + files that Buildroot should download. If an entry contains +://+ + then Buildroot will assume it is a complete URL and will download + the file using this URL. Otherwise, Buildroot will assume the file + to be downloaded is located at +LIBFOO_SITE+. Buildroot will not do + anything with those additional files, except download them: it will + be up to the package recipe to use them from +$(LIBFOO_DL_DIR)+. + +* +LIBFOO_SITE_METHOD+ determines the method used to fetch or copy the + package source code. In many cases, Buildroot guesses the method + from the contents of +LIBFOO_SITE+ and setting +LIBFOO_SITE_METHOD+ + is unnecessary. When +HOST_LIBFOO_SITE_METHOD+ is not specified, it + defaults to the value of +LIBFOO_SITE_METHOD+. + + The possible values of +LIBFOO_SITE_METHOD+ are: + ** +wget+ for normal FTP/HTTP downloads of tarballs. Used by + default when +LIBFOO_SITE+ begins with +http://+, +https://+ or + +ftp://+. + ** +scp+ for downloads of tarballs over SSH with scp. Used by + default when +LIBFOO_SITE+ begins with +scp://+. + ** +sftp+ for downloads of tarballs over SSH with sftp. Used by + default when +LIBFOO_SITE+ begins with +sftp://+. + ** +svn+ for retrieving source code from a Subversion repository. + Used by default when +LIBFOO_SITE+ begins with +svn://+. When a + +http://+ Subversion repository URL is specified in + +LIBFOO_SITE+, one 'must' specify +LIBFOO_SITE_METHOD=svn+. + Buildroot performs a checkout which is preserved as a tarball in + the download cache; subsequent builds use the tarball instead of + performing another checkout. + ** +cvs+ for retrieving source code from a CVS repository. + Used by default when +LIBFOO_SITE+ begins with +cvs://+. + The downloaded source code is cached as with the +svn+ method. + Anonymous pserver mode is assumed otherwise explicitly defined + on +LIBFOO_SITE+. Both + +LIBFOO_SITE=cvs://libfoo.net:/cvsroot/libfoo+ and + +LIBFOO_SITE=cvs://:ext:libfoo.net:/cvsroot/libfoo+ + are accepted, on the former anonymous pserver access mode is + assumed. + +LIBFOO_SITE+ 'must' contain the source URL as well as the remote + repository directory. The module is the package name. + +LIBFOO_VERSION+ is 'mandatory' and 'must' be a tag, a branch, or + a date (e.g. "2014-10-20", "2014-10-20 13:45", "2014-10-20 + 13:45+01" see "man cvs" for further details). + ** +git+ for retrieving source code from a Git repository. Used by + default when +LIBFOO_SITE+ begins with +git://+. The downloaded + source code is cached as with the +svn+ method. + ** +hg+ for retrieving source code from a Mercurial repository. One + 'must' specify +LIBFOO_SITE_METHOD=hg+ when +LIBFOO_SITE+ + contains a Mercurial repository URL. The downloaded source code + is cached as with the +svn+ method. + ** +bzr+ for retrieving source code from a Bazaar repository. Used + by default when +LIBFOO_SITE+ begins with +bzr://+. The + downloaded source code is cached as with the +svn+ method. + ** +file+ for a local tarball. One should use this when + +LIBFOO_SITE+ specifies a package tarball as a local filename. + Useful for software that isn't available publicly or in version + control. + ** +local+ for a local source code directory. One should use this + when +LIBFOO_SITE+ specifies a local directory path containing + the package source code. Buildroot copies the contents of the + source directory into the package's build directory. Note that + for +local+ packages, no patches are applied. If you need to + still patch the source code, use +LIBFOO_POST_RSYNC_HOOKS+, see + xref:hooks-rsync[]. + +* +LIBFOO_GIT_SUBMODULES+ can be set to +YES+ to create an archive + with the git submodules in the repository. This is only available + for packages downloaded with git (i.e. when + +LIBFOO_SITE_METHOD=git+). Note that we try not to use such git + submodules when they contain bundled libraries, in which case we + prefer to use those libraries from their own package. + +* +LIBFOO_GIT_LFS+ should be set to +YES+ if the Git repository uses + Git LFS to store large files out of band. This is only available for + packages downloaded with git (i.e. when +LIBFOO_SITE_METHOD=git+). + +* +LIBFOO_SVN_EXTERNALS+ can be set to +YES+ to create an archive with + the svn external references. This is only available for packages + downloaded with subversion. + +* +LIBFOO_STRIP_COMPONENTS+ is the number of leading components + (directories) that tar must strip from file names on extraction. + The tarball for most packages has one leading component named + "-", thus Buildroot passes + --strip-components=1 to tar to remove it. + For non-standard packages that don't have this component, or + that have more than one leading component to strip, set this + variable with the value to be passed to tar. Default: 1. + +* +LIBFOO_EXCLUDES+ is a space-separated list of patterns to exclude + when extracting the archive. Each item from that list is passed as + a tar's +--exclude+ option. By default, empty. + +* +LIBFOO_DEPENDENCIES+ lists the dependencies (in terms of package + name) that are required for the current target package to + compile. These dependencies are guaranteed to be compiled and + installed before the configuration of the current package starts. + However, modifications to configuration of these dependencies will + not force a rebuild of the current package. In a similar way, + +HOST_LIBFOO_DEPENDENCIES+ lists the dependencies for the current + host package. + +* +LIBFOO_EXTRACT_DEPENDENCIES+ lists the dependencies (in terms of + package name) that are required for the current target package to be + extracted. These dependencies are guaranteed to be compiled and + installed before the extract step of the current package + starts. This is only used internally by the package infrastructure, + and should typically not be used directly by packages. + +* +LIBFOO_PATCH_DEPENDENCIES+ lists the dependencies (in terms of + package name) that are required for the current package to be + patched. These dependencies are guaranteed to be extracted and + patched (but not necessarily built) before the current package is + patched. In a similar way, +HOST_LIBFOO_PATCH_DEPENDENCIES+ lists + the dependencies for the current host package. + This is seldom used; usually, +LIBFOO_DEPENDENCIES+ is what you + really want to use. + +* +LIBFOO_PROVIDES+ lists all the virtual packages +libfoo+ is an + implementation of. See xref:virtual-package-tutorial[]. + +* +LIBFOO_INSTALL_STAGING+ can be set to +YES+ or +NO+ (default). If + set to +YES+, then the commands in the +LIBFOO_INSTALL_STAGING_CMDS+ + variables are executed to install the package into the staging + directory. + +* +LIBFOO_INSTALL_TARGET+ can be set to +YES+ (default) or +NO+. If + set to +YES+, then the commands in the +LIBFOO_INSTALL_TARGET_CMDS+ + variables are executed to install the package into the target + directory. + +* +LIBFOO_INSTALL_IMAGES+ can be set to +YES+ or +NO+ (default). If + set to +YES+, then the commands in the +LIBFOO_INSTALL_IMAGES_CMDS+ + variable are executed to install the package into the images + directory. + +* +LIBFOO_CONFIG_SCRIPTS+ lists the names of the files in + '$(STAGING_DIR)/usr/bin' that need some special fixing to make them + cross-compiling friendly. Multiple file names separated by space can + be given and all are relative to '$(STAGING_DIR)/usr/bin'. The files + listed in +LIBFOO_CONFIG_SCRIPTS+ are also removed from + +$(TARGET_DIR)/usr/bin+ since they are not needed on the target. + +* +LIBFOO_DEVICES+ lists the device files to be created by Buildroot + when using the static device table. The syntax to use is the + makedevs one. You can find some documentation for this syntax in the + xref:makedev-syntax[]. This variable is optional. + +* +LIBFOO_PERMISSIONS+ lists the changes of permissions to be done at + the end of the build process. The syntax is once again the makedevs one. + You can find some documentation for this syntax in the xref:makedev-syntax[]. + This variable is optional. + +* +LIBFOO_USERS+ lists the users to create for this package, if it installs + a program you want to run as a specific user (e.g. as a daemon, or as a + cron-job). The syntax is similar in spirit to the makedevs one, and is + described in the xref:makeuser-syntax[]. This variable is optional. + +* +LIBFOO_LICENSE+ defines the license (or licenses) under which the package + is released. + This name will appear in the manifest file produced by +make legal-info+. + If the license appears in https://spdx.org/licenses/[the SPDX License List], + use the SPDX short identifier to make the manifest file uniform. + Otherwise, describe the license in a precise and concise way, avoiding + ambiguous names such as +BSD+ which actually name a family of licenses. + This variable is optional. If it is not defined, +unknown+ will appear in + the +license+ field of the manifest file for this package. + + The expected format for this variable must comply with the following rules: + ** If different parts of the package are released under different + licenses, then +comma+ separate licenses (e.g. +`LIBFOO_LICENSE = + GPL-2.0+, LGPL-2.1+`+). If there is clear distinction between which + component is licensed under what license, then annotate the license + with that component, between parenthesis (e.g. +`LIBFOO_LICENSE = + GPL-2.0+ (programs), LGPL-2.1+ (libraries)`+). + ** If some licenses are conditioned on a sub-option being enabled, append + the conditional licenses with a comma (e.g.: `FOO_LICENSE += , GPL-2.0+ + (programs)`); the infrastructure will internally remove the space before + the comma. + ** If the package is dual licensed, then separate licenses with the + +or+ keyword (e.g. +`LIBFOO_LICENSE = AFL-2.1 or GPL-2.0+`+). + +* +LIBFOO_LICENSE_FILES+ is a space-separated list of files in the package + tarball that contain the license(s) under which the package is released. + +make legal-info+ copies all of these files in the +legal-info+ directory. + See xref:legal-info[] for more information. + This variable is optional. If it is not defined, a warning will be produced + to let you know, and +not saved+ will appear in the +license files+ field + of the manifest file for this package. + +* +LIBFOO_ACTUAL_SOURCE_TARBALL+ only applies to packages whose + +LIBFOO_SITE+ / +LIBFOO_SOURCE+ pair points to an archive that does + not actually contain source code, but binary code. This a very + uncommon case, only known to apply to external toolchains which come + already compiled, although theoretically it might apply to other + packages. In such cases a separate tarball is usually available with + the actual source code. Set +LIBFOO_ACTUAL_SOURCE_TARBALL+ to the + name of the actual source code archive and Buildroot will download + it and use it when you run +make legal-info+ to collect + legally-relevant material. Note this file will not be downloaded + during regular builds nor by +make source+. + +* +LIBFOO_ACTUAL_SOURCE_SITE+ provides the location of the actual + source tarball. The default value is +LIBFOO_SITE+, so you don't + need to set this variable if the binary and source archives are + hosted on the same directory. If +LIBFOO_ACTUAL_SOURCE_TARBALL+ is + not set, it doesn't make sense to define + +LIBFOO_ACTUAL_SOURCE_SITE+. + +* +LIBFOO_REDISTRIBUTE+ can be set to +YES+ (default) or +NO+ to indicate if + the package source code is allowed to be redistributed. Set it to +NO+ for + non-opensource packages: Buildroot will not save the source code for this + package when collecting the +legal-info+. + +* +LIBFOO_FLAT_STACKSIZE+ defines the stack size of an application built into + the FLAT binary format. The application stack size on the NOMMU architecture + processors can't be enlarged at run time. The default stack size for the + FLAT binary format is only 4k bytes. If the application consumes more stack, + append the required number here. + +* +LIBFOO_BIN_ARCH_EXCLUDE+ is a space-separated list of paths (relative + to the target directory) to ignore when checking that the package + installs correctly cross-compiled binaries. You seldom need to set this + variable, unless the package installs binary blobs outside the default + locations, `/lib/firmware`, `/usr/lib/firmware`, `/lib/modules`, + `/usr/lib/modules`, and `/usr/share`, which are automatically excluded. + +* +LIBFOO_IGNORE_CVES+ is a space-separated list of CVEs that tells + Buildroot CVE tracking tools which CVEs should be ignored for this + package. This is typically used when the CVE is fixed by a patch in + the package, or when the CVE for some reason does not affect the + Buildroot package. A Makefile comment must always precede the + addition of a CVE to this variable. Example: ++ +---- +# 0001-fix-cve-2020-12345.patch +LIBFOO_IGNORE_CVES += CVE-2020-12345 +# only when built with libbaz, which Buildroot doesn't support +LIBFOO_IGNORE_CVES += CVE-2020-54321 +---- + +* [[cpe-id]] +LIBFOO_CPE_ID_*+ variables is a set of variables that allows the + package to define its https://nvd.nist.gov/products/cpe[CPE + identifier]. The available variables are: ++ +-- +** +LIBFOO_CPE_ID_VALID+, if set to +YES+, specifies that the default + values for each of the following variables is appropriate, and + generates a valid CPE ID. + +** +LIBFOO_CPE_ID_PREFIX+, specifies the prefix of the CPE identifier, + i.e the first three fields. When not defined, the default value is + +cpe:2.3:a+. + +** +LIBFOO_CPE_ID_VENDOR+, specifies the vendor part of the CPE + identifier. When not defined, the default value is + +_project+. + +** +LIBFOO_CPE_ID_PRODUCT+, specifies the product part of the CPE + identifier. When not defined, the default value is ++. + +** +LIBFOO_CPE_ID_VERSION+, specifies the version part of the CPE + identifier. When not defined the default value is + +$(LIBFOO_VERSION)+. + +** +LIBFOO_CPE_ID_UPDATE+ specifies the _update_ part of the CPE + identifier. When not defined the default value is +*+. +-- ++ +If any of those variables is defined, then the generic package +infrastructure assumes the package provides valid CPE information. In +this case, the generic package infrastructure will define ++LIBFOO_CPE_ID+. ++ +For a host package, if its +LIBFOO_CPE_ID_*+ variables are not +defined, it inherits the value of those variables from the +corresponding target package. + +The recommended way to define these variables is to use the following +syntax: + +---- +LIBFOO_VERSION = 2.32 +---- + +Now, the variables that define what should be performed at the +different steps of the build process. + +* +LIBFOO_EXTRACT_CMDS+ lists the actions to be performed to extract + the package. This is generally not needed as tarballs are + automatically handled by Buildroot. However, if the package uses a + non-standard archive format, such as a ZIP or RAR file, or has a + tarball with a non-standard organization, this variable allows to + override the package infrastructure default behavior. + +* +LIBFOO_CONFIGURE_CMDS+ lists the actions to be performed to + configure the package before its compilation. + +* +LIBFOO_BUILD_CMDS+ lists the actions to be performed to + compile the package. + +* +HOST_LIBFOO_INSTALL_CMDS+ lists the actions to be performed + to install the package, when the package is a host package. The + package must install its files to the directory given by + +$(HOST_DIR)+. All files, including development files such as + headers should be installed, since other packages might be compiled + on top of this package. + +* +LIBFOO_INSTALL_TARGET_CMDS+ lists the actions to be + performed to install the package to the target directory, when the + package is a target package. The package must install its files to + the directory given by +$(TARGET_DIR)+. Only the files required for + 'execution' of the package have to be + installed. Header files, static libraries and documentation will be + removed again when the target filesystem is finalized. + +* +LIBFOO_INSTALL_STAGING_CMDS+ lists the actions to be + performed to install the package to the staging directory, when the + package is a target package. The package must install its files to + the directory given by +$(STAGING_DIR)+. All development files + should be installed, since they might be needed to compile other + packages. + +* +LIBFOO_INSTALL_IMAGES_CMDS+ lists the actions to be performed to + install the package to the images directory, when the package is a + target package. The package must install its files to the directory + given by +$(BINARIES_DIR)+. Only files that are binary images (aka + images) that do not belong in the +TARGET_DIR+ but are necessary + for booting the board should be placed here. For example, a package + should utilize this step if it has binaries which would be similar + to the kernel image, bootloader or root filesystem images. + +* +LIBFOO_INSTALL_INIT_SYSV+, +LIBFOO_INSTALL_INIT_OPENRC+ and + +LIBFOO_INSTALL_INIT_SYSTEMD+ list the actions to install init + scripts either for the systemV-like init systems (busybox, + sysvinit, etc.), openrc or for the systemd units. These commands + will be run only when the relevant init system is installed (i.e. + if systemd is selected as the init system in the configuration, + only +LIBFOO_INSTALL_INIT_SYSTEMD+ will be run). The only exception + is when openrc is chosen as init system and +LIBFOO_INSTALL_INIT_OPENRC+ + has not been set, in such situation +LIBFOO_INSTALL_INIT_SYSV+ will + be called, since openrc supports sysv init scripts. + When systemd is used as the init system, buildroot will automatically enable + all services using the +systemctl preset-all+ command in the final phase of + image building. You can add preset files to prevent a particular unit from + being automatically enabled by buildroot. + +* +LIBFOO_HELP_CMDS+ lists the actions to print the package help, which + is included to the main +make help+ output. These commands can print + anything in any format. + This is seldom used, as packages rarely have custom rules. *Do not use + this variable*, unless you really know that you need to print help. + +* +LIBFOO_LINUX_CONFIG_FIXUPS+ lists the Linux kernel configuration + options that are needed to build and use this package, and without + which the package is fundamentally broken. This shall be a set of + calls to one of the kconfig tweaking option: `KCONFIG_ENABLE_OPT`, + `KCONFIG_DISABLE_OPT`, or `KCONFIG_SET_OPT`. + This is seldom used, as package usually have no strict requirements on + the kernel options. + +The preferred way to define these variables is: + +---- +define LIBFOO_CONFIGURE_CMDS + action 1 + action 2 + action 3 +endef +---- + +In the action definitions, you can use the following variables: + +* +$(LIBFOO_PKGDIR)+ contains the path to the directory containing the + +libfoo.mk+ and +Config.in+ files. This variable is useful when it is + necessary to install a file bundled in Buildroot, like a runtime + configuration file, a splashscreen image... + +* +$(@D)+, which contains the directory in which the package source + code has been uncompressed. + +* +$(LIBFOO_DL_DIR)+ contains the path to the directory where all the downloads + made by Buildroot for +libfoo+ are stored in. + +* +$(TARGET_CC)+, +$(TARGET_LD)+, etc. to get the target + cross-compilation utilities + +* +$(TARGET_CROSS)+ to get the cross-compilation toolchain prefix + +* Of course the +$(HOST_DIR)+, +$(STAGING_DIR)+ and +$(TARGET_DIR)+ + variables to install the packages properly. Those variables point to + the global _host_, _staging_ and _target_ directories, unless + _per-package directory_ support is used, in which case they point to + the current package _host_, _staging_ and _target_ directories. In + both cases, it doesn't make any difference from the package point of + view: it should simply use +HOST_DIR+, +STAGING_DIR+ and + +TARGET_DIR+. See xref:top-level-parallel-build[] for more details + about _per-package directory_ support. + +Finally, you can also use hooks. See xref:hooks[] for more information. diff --git a/docs/manual/adding-packages-gettext.adoc b/docs/manual/adding-packages-gettext.adoc new file mode 100644 index 00000000..739bed25 --- /dev/null +++ b/docs/manual/adding-packages-gettext.adoc @@ -0,0 +1,62 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Gettext integration and interaction with packages + +Many packages that support internationalization use the gettext +library. Dependencies for this library are fairly complicated and +therefore, deserve some explanation. + +The 'glibc' C library integrates a full-blown implementation of +'gettext', supporting translation. Native Language Support is +therefore built-in in 'glibc'. + +On the other hand, the 'uClibc' and 'musl' C libraries only provide a +stub implementation of the gettext functionality, which allows to +compile libraries and programs using gettext functions, but without +providing the translation capabilities of a full-blown gettext +implementation. With such C libraries, if real Native Language Support +is necessary, it can be provided by the +libintl+ library of the ++gettext+ package. + +Due to this, and in order to make sure that Native Language Support is +properly handled, packages in Buildroot that can use NLS support +should: + +. Ensure NLS support is enabled when +BR2_SYSTEM_ENABLE_NLS=y+. This + is done automatically for 'autotools' packages and therefore should + only be done for packages using other package infrastructures. + +. Add +$(TARGET_NLS_DEPENDENCIES)+ to the package + +_DEPENDENCIES+ variable. This addition should be done + unconditionally: the value of this variable is automatically + adjusted by the core infrastructure to contain the relevant list of + packages. If NLS support is disabled, this variable is empty. If + NLS support is enabled, this variable contains +host-gettext+ so + that tools needed to compile translation files are available on the + host. In addition, if 'uClibc' or 'musl' are used, this variable + also contains +gettext+ in order to get the full-blown 'gettext' + implementation. + +. If needed, add +$(TARGET_NLS_LIBS)+ to the linker flags, so that + the package gets linked with +libintl+. This is generally not + needed with 'autotools' packages as they usually detect + automatically that they should link with +libintl+. However, + packages using other build systems, or problematic autotools-based + packages may need this. +$(TARGET_NLS_LIBS)+ should be added + unconditionally to the linker flags, as the core automatically + makes it empty or defined to +-lintl+ depending on the + configuration. + +No changes should be made to the +Config.in+ file to support NLS. + +Finally, certain packages need some gettext utilities on the target, +such as the +gettext+ program itself, which allows to retrieve +translated strings, from the command line. In such a case, the package +should: + +* use +select BR2_PACKAGE_GETTEXT+ in their +Config.in+ file, + indicating in a comment above that it's a runtime dependency only. + +* not add any +gettext+ dependency in the +DEPENDENCIES+ variable of + their +.mk+ file. diff --git a/docs/manual/adding-packages-golang.adoc b/docs/manual/adding-packages-golang.adoc new file mode 100644 index 00000000..3ddbe57a --- /dev/null +++ b/docs/manual/adding-packages-golang.adoc @@ -0,0 +1,132 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for Go packages + +This infrastructure applies to Go packages that use the standard +build system and use bundled dependencies. + +[[golang-package-tutorial]] + +==== +golang-package+ tutorial + +First, let's see how to write a +.mk+ file for a go package, +with an example : + +---- +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: FOO_VERSION = 1.0 +08: FOO_SITE = $(call github,bar,foo,$(FOO_VERSION)) +09: FOO_LICENSE = BSD-3-Clause +10: FOO_LICENSE_FILES = LICENSE +11: +12: $(eval $(golang-package)) +---- + +On line 7, we declare the version of the package. + +On line 8, we declare the upstream location of the package, here +fetched from Github, since a large number of Go packages are hosted on +Github. + +On line 9 and 10, we give licensing details about the package. + +Finally, on line 12, we invoke the +golang-package+ macro that +generates all the Makefile rules that actually allow the package to be +built. + +[[golang-package-reference]] + +==== +golang-package+ reference + +In their +Config.in+ file, packages using the +golang-package+ +infrastructure should depend on +BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS+ +because Buildroot will automatically add a dependency on +host-go+ +to such packages. +If you need CGO support in your package, you must add a dependency on ++BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS+. + +The main macro of the Go package infrastructure is ++golang-package+. It is similar to the +generic-package+ macro. The +ability to build host packages is also available, with the ++host-golang-package+ macro. +Host packages built by +host-golang-package+ macro should depend on ++BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS+. + +Just like the generic infrastructure, the Go infrastructure works +by defining a number of variables before calling the +golang-package+ +macro. + +All the package metadata information variables that exist in the +xref:generic-package-reference[generic package infrastructure] also +exist in the Go infrastructure. + +Note that it is not necessary to add +host-go+ in the ++FOO_DEPENDENCIES+ variable of a package, since this basic dependency +is automatically added as needed by the Go package infrastructure. + +A few additional variables, specific to the Go infrastructure, can +optionally be defined, depending on the package's needs. Many of them +are only useful in very specific cases, typical packages will +therefore only use a few of them, or none. + +* The package must specify its Go module name in the +FOO_GOMOD+ + variable. If not specified, it defaults to + +URL-domain/1st-part-of-URL/2nd-part-of-URL+, e.g +FOO_GOMOD+ will + take the value +github.com/bar/foo+ for a package that specifies + +FOO_SITE = $(call github,bar,foo,$(FOO_VERSION))+. The Go package + infrastructure will automatically generate a minimal +go.mod+ file + in the package source tree if it doesn't exist. + +* +FOO_LDFLAGS+ and +FOO_TAGS+ can be used to pass respectively the + +LDFLAGS+ or the +TAGS+ to the +go+ build command. + +* +FOO_BUILD_TARGETS+ can be used to pass the list of targets that + should be built. If +FOO_BUILD_TARGETS+ is not specified, it + defaults to +.+. We then have two cases: + +** +FOO_BUILD_TARGETS+ is +.+. In this case, we assume only one binary + will be produced, and that by default we name it after the package + name. If that is not appropriate, the name of the produced binary + can be overridden using +FOO_BIN_NAME+. + +** +FOO_BUILD_TARGETS+ is not +.+. In this case, we iterate over the + values to build each target, and for each produced a binary that is + the non-directory component of the target. For example if + +FOO_BUILD_TARGETS = cmd/docker cmd/dockerd+ the binaries produced + are +docker+ and +dockerd+. + +* +FOO_INSTALL_BINS+ can be used to pass the list of binaries that + should be installed in +/usr/bin+ on the target. If + +FOO_INSTALL_BINS+ is not specified, it defaults to the lower-case + name of package. + +With the Go infrastructure, all the steps required to build and +install the packages are already defined, and they generally work well +for most Go-based packages. However, when required, it is still +possible to customize what is done in any particular step: + +* By adding a post-operation hook (after extract, patch, configure, + build or install). See xref:hooks[] for details. + +* By overriding one of the steps. For example, even if the Go + infrastructure is used, if the package +.mk+ file defines its own + +FOO_BUILD_CMDS+ variable, it will be used instead of the default Go + one. However, using this method should be restricted to very + specific cases. Do not use it in the general case. + +A Go package can depend on other Go modules, listed in its +go.mod+ +file. Buildroot automatically takes care of downloading such +dependencies as part of the download step of packages that use the ++golang-package+ infrastructure. Such dependencies are then kept +together with the package source code in the tarball cached in +Buildroot's +DL_DIR+, and therefore the hash of the package's tarball +includes such dependencies. + +This mechanism ensures that any change in the dependencies will be +detected, and allows the build to be performed completely offline. diff --git a/docs/manual/adding-packages-hooks.adoc b/docs/manual/adding-packages-hooks.adoc new file mode 100644 index 00000000..7aa7aa23 --- /dev/null +++ b/docs/manual/adding-packages-hooks.adoc @@ -0,0 +1,89 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[hooks]] +=== Hooks available in the various build steps + +The generic infrastructure (and as a result also the derived autotools +and cmake infrastructures) allow packages to specify hooks. +These define further actions to perform after existing steps. +Most hooks aren't really useful for generic packages, since the +.mk+ +file already has full control over the actions performed in each step +of the package construction. + +The following hook points are available: + +* +LIBFOO_PRE_DOWNLOAD_HOOKS+ +* +LIBFOO_POST_DOWNLOAD_HOOKS+ + +* +LIBFOO_PRE_EXTRACT_HOOKS+ +* +LIBFOO_POST_EXTRACT_HOOKS+ + +* +LIBFOO_PRE_RSYNC_HOOKS+ +* +LIBFOO_POST_RSYNC_HOOKS+ + +* +LIBFOO_PRE_PATCH_HOOKS+ +* +LIBFOO_POST_PATCH_HOOKS+ + +* +LIBFOO_PRE_CONFIGURE_HOOKS+ +* +LIBFOO_POST_CONFIGURE_HOOKS+ + +* +LIBFOO_PRE_BUILD_HOOKS+ +* +LIBFOO_POST_BUILD_HOOKS+ + +* +LIBFOO_PRE_INSTALL_HOOKS+ (for host packages only) +* +LIBFOO_POST_INSTALL_HOOKS+ (for host packages only) + +* +LIBFOO_PRE_INSTALL_STAGING_HOOKS+ (for target packages only) +* +LIBFOO_POST_INSTALL_STAGING_HOOKS+ (for target packages only) + +* +LIBFOO_PRE_INSTALL_TARGET_HOOKS+ (for target packages only) +* +LIBFOO_POST_INSTALL_TARGET_HOOKS+ (for target packages only) + +* +LIBFOO_PRE_INSTALL_IMAGES_HOOKS+ +* +LIBFOO_POST_INSTALL_IMAGES_HOOKS+ + +* +LIBFOO_PRE_LEGAL_INFO_HOOKS+ +* +LIBFOO_POST_LEGAL_INFO_HOOKS+ + +* +LIBFOO_TARGET_FINALIZE_HOOKS+ + +These variables are 'lists' of variable names containing actions to be +performed at this hook point. This allows several hooks to be +registered at a given hook point. Here is an example: + +---- +define LIBFOO_POST_PATCH_FIXUP + action1 + action2 +endef + +LIBFOO_POST_PATCH_HOOKS += LIBFOO_POST_PATCH_FIXUP +---- + +[[hooks-rsync]] +==== Using the +POST_RSYNC+ hook +The +POST_RSYNC+ hook is run only for packages that use a local source, +either through the +local+ site method or the +OVERRIDE_SRCDIR+ +mechanism. In this case, package sources are copied using +rsync+ from +the local location into the buildroot build directory. The +rsync+ +command does not copy all files from the source directory, though. +Files belonging to a version control system, like the directories ++.git+, +.hg+, etc. are not copied. For most packages this is +sufficient, but a given package can perform additional actions using +the +POST_RSYNC+ hook. + +In principle, the hook can contain any command you want. One specific +use case, though, is the intentional copying of the version control +directory using +rsync+. The +rsync+ command you use in the hook can, among +others, use the following variables: + +* +$(SRCDIR)+: the path to the overridden source directory +* +$(@D)+: the path to the build directory + +==== Target-finalize hook + +Packages may also register hooks in +LIBFOO_TARGET_FINALIZE_HOOKS+. +These hooks are run after all packages are built, but before the +filesystem images are generated. They are seldom used, and your +package probably do not need them. diff --git a/docs/manual/adding-packages-kconfig.adoc b/docs/manual/adding-packages-kconfig.adoc new file mode 100644 index 00000000..ee52cbd7 --- /dev/null +++ b/docs/manual/adding-packages-kconfig.adoc @@ -0,0 +1,102 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for packages using kconfig for configuration files + +A popular way for a software package to handle user-specified +configuration is +kconfig+. Among others, it is used by the Linux +kernel, Busybox, and Buildroot itself. The presence of a .config file +and a +menuconfig+ target are two well-known symptoms of kconfig being +used. + +Buildroot features an infrastructure for packages that use kconfig for +their configuration. This infrastructure provides the necessary logic to +expose the package's +menuconfig+ target as +foo-menuconfig+ in +Buildroot, and to handle the copying back and forth of the configuration +file in a correct way. + +The main macro of the kconfig package infrastructure is ++kconfig-package+. It is similar to the +generic-package+ macro. + +Just like the generic infrastructure, the kconfig infrastructure works +by defining a number of variables before calling the +kconfig-package+ +macro. + +All the package metadata information variables that exist in the +xref:generic-package-reference[generic package infrastructure] also +exist in the kconfig infrastructure. + +In order to use the +kconfig-package+ infrastructure for a Buildroot +package, the minimally required lines in the +.mk+ file, in addition to +the variables required by the +generic-package+ infrastructure, are: + +---- +FOO_KCONFIG_FILE = reference-to-source-configuration-file + +$(eval $(kconfig-package)) +---- + +This snippet creates the following make targets: + +* +foo-menuconfig+, which calls the package's +menuconfig+ target + +* +foo-update-config+, which copies the configuration back to the + source configuration file. It is not possible to use this target + when fragment files are set. + +* +foo-update-defconfig+, which copies the configuration back to the + source configuration file. The configuration file will only list the + options that differ from the default values. It is not possible to + use this target when fragment files are set. + +* +foo-diff-config+, which outputs the differences between the current + configuration and the one defined in the Buildroot configuration for + this kconfig package. The output is useful to identify the + configuration changes that may have to be propagated to + configuration fragments for example. + +and ensures that the source configuration file is copied to the build +directory at the right moment. + +There are two options to specify a configuration file to use, either ++FOO_KCONFIG_FILE+ (as in the example, above) or +FOO_KCONFIG_DEFCONFIG+. +It is mandatory to provide either, but not both: + +* +FOO_KCONFIG_FILE+ specifies the path to a defconfig or full-config file + to be used to configure the package. + +* +FOO_KCONFIG_DEFCONFIG+ specifies the defconfig 'make' rule to call to + configure the package. + +In addition to these minimally required lines, several optional variables can +be set to suit the needs of the package under consideration: + +* +FOO_KCONFIG_EDITORS+: a space-separated list of kconfig editors to + support, for example 'menuconfig xconfig'. By default, 'menuconfig'. + +* +FOO_KCONFIG_FRAGMENT_FILES+: a space-separated list of configuration + fragment files that are merged to the main configuration file. + Fragment files are typically used when there is a desire to stay in sync + with an upstream (def)config file, with some minor modifications. + +* +FOO_KCONFIG_OPTS+: extra options to pass when calling the kconfig + editors. This may need to include '$(FOO_MAKE_OPTS)', for example. By + default, empty. + +* +FOO_KCONFIG_FIXUP_CMDS+: a list of shell commands needed to fixup the + configuration file after copying it or running a kconfig editor. Such + commands may be needed to ensure a configuration consistent with other + configuration of Buildroot, for example. By default, empty. + +* +FOO_KCONFIG_DOTCONFIG+: path (with filename) of the +.config+ file, + relative to the package source tree. The default, +.config+, should + be well suited for all packages that use the standard kconfig + infrastructure as inherited from the Linux kernel; some packages use + a derivative of kconfig that use a different location. + +* +FOO_KCONFIG_DEPENDENCIES+: the list of packages (most probably, host + packages) that need to be built before this package's kconfig is + interpreted. Seldom used. By default, empty. + +* +FOO_KCONFIG_SUPPORTS_DEFCONFIG+: whether the package's kconfig system + supports using defconfig files; few packages do not. By default, 'YES'. diff --git a/docs/manual/adding-packages-kernel-module.adoc b/docs/manual/adding-packages-kernel-module.adoc new file mode 100644 index 00000000..1d425133 --- /dev/null +++ b/docs/manual/adding-packages-kernel-module.adoc @@ -0,0 +1,143 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for packages building kernel modules + +Buildroot offers a helper infrastructure to make it easy to write packages that +build and install Linux kernel modules. Some packages only contain a kernel +module, other packages contain programs and libraries in addition to kernel +modules. Buildroot's helper infrastructure supports either case. + +[[kernel-module-tutorial]] +==== +kernel-module+ tutorial + +Let's start with an example on how to prepare a simple package that only +builds a kernel module, and no other component: + +---- +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: FOO_VERSION = 1.2.3 +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.xz +09: FOO_SITE = http://www.foosoftware.org/download +10: FOO_LICENSE = GPL-2.0 +11: FOO_LICENSE_FILES = COPYING +12: +13: $(eval $(kernel-module)) +14: $(eval $(generic-package)) +---- + +Lines 7-11 define the usual meta-data to specify the version, archive name, +remote URI where to find the package source, licensing information. + +On line 13, we invoke the +kernel-module+ helper infrastructure, that +generates all the appropriate Makefile rules and variables to build +that kernel module. + +Finally, on line 14, we invoke the +xref:generic-package-tutorial[+generic-package+ infrastructure]. + +The dependency on +linux+ is automatically added, so it is not needed to +specify it in +FOO_DEPENDENCIES+. + +What you may have noticed is that, unlike other package infrastructures, +we explicitly invoke a second infrastructure. This allows a package to +build a kernel module, but also, if needed, use any one of other package +infrastructures to build normal userland components (libraries, +executables...). Using the +kernel-module+ infrastructure on its own is +not sufficient; another package infrastructure *must* be used. + +Let's look at a more complex example: + +---- +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: FOO_VERSION = 1.2.3 +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.xz +09: FOO_SITE = http://www.foosoftware.org/download +10: FOO_LICENSE = GPL-2.0 +11: FOO_LICENSE_FILES = COPYING +12: +13: FOO_MODULE_SUBDIRS = driver/base +14: FOO_MODULE_MAKE_OPTS = KVERSION=$(LINUX_VERSION_PROBED) +15: +16: ifeq ($(BR2_PACKAGE_LIBBAR),y) +17: FOO_DEPENDENCIES += libbar +18: FOO_CONF_OPTS += --enable-bar +19: FOO_MODULE_SUBDIRS += driver/bar +20: else +21: FOO_CONF_OPTS += --disable-bar +22: endif +23: +24: $(eval $(kernel-module)) +26: $(eval $(autotools-package)) +---- + +Here, we see that we have an autotools-based package, that also builds +the kernel module located in sub-directory +driver/base+ and, if libbar +is enabled, the kernel module located in sub-directory +driver/bar+, and +defines the variable +KVERSION+ to be passed to the Linux buildsystem +when building the module(s). + + +[[kernel-module-reference]] +==== +kernel-module+ reference + +The main macro for the kernel module infrastructure is +kernel-module+. +Unlike other package infrastructures, it is not stand-alone, and requires +any of the other +*-package+ macros be called after it. + +The +kernel-module+ macro defines post-build and post-target-install +hooks to build the kernel modules. If the package's +.mk+ needs access +to the built kernel modules, it should do so in a post-build hook, +*registered after* the call to +kernel-module+. Similarly, if the +package's +.mk+ needs access to the kernel module after it has been +installed, it should do so in a post-install hook, *registered after* +the call to +kernel-module+. Here's an example: + +---- +$(eval $(kernel-module)) + +define FOO_DO_STUFF_WITH_KERNEL_MODULE + # Do something with it... +endef +FOO_POST_BUILD_HOOKS += FOO_DO_STUFF_WITH_KERNEL_MODULE + +$(eval $(generic-package)) +---- + +Finally, unlike the other package infrastructures, there is no ++host-kernel-module+ variant to build a host kernel module. + +The following additional variables can optionally be defined to further +configure the build of the kernel module: + +* +FOO_MODULE_SUBDIRS+ may be set to one or more sub-directories (relative + to the package source top-directory) where the kernel module sources are. + If empty or not set, the sources for the kernel module(s) are considered + to be located at the top of the package source tree. + +* +FOO_MODULE_MAKE_OPTS+ may be set to contain extra variable definitions + to pass to the Linux buildsystem. + +[[kernel-variables]] +You may also reference (but you may *not* set!) those variables: + + * +LINUX_DIR+ contains the path to where the Linux kernel has been + extracted and built. + + * +LINUX_VERSION+ contains the version string as configured by the user. + + * +LINUX_VERSION_PROBED+ contains the real version string of the kernel, + retrieved with running `make -C $(LINUX_DIR) kernelrelease` + + * +KERNEL_ARCH+ contains the name of the current architecture, like `arm`, + `mips`... diff --git a/docs/manual/adding-packages-linux-kernel-spec-infra.adoc b/docs/manual/adding-packages-linux-kernel-spec-infra.adoc new file mode 100644 index 00000000..3b3daebf --- /dev/null +++ b/docs/manual/adding-packages-linux-kernel-spec-infra.adoc @@ -0,0 +1,152 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[linux-kernel-specific-infra]] +=== Infrastructure specific to the Linux kernel package + +The Linux kernel package can use some specific infrastructures based on package +hooks for building Linux kernel tools or/and building Linux kernel extensions. + +[[linux-kernel-tools]] +==== linux-kernel-tools + +Buildroot offers a helper infrastructure to build some userspace tools +for the target available within the Linux kernel sources. Since their +source code is part of the kernel source code, a special package, ++linux-tools+, exists and re-uses the sources of the Linux kernel that +runs on the target. + +Let's look at an example of a Linux tool. For a new Linux tool named ++foo+, create a new menu entry in the existing ++package/linux-tools/Config.in+. This file will contain the option +descriptions related to each kernel tool that will be used and +displayed in the configuration tool. It would basically look like: + +---- +01: config BR2_PACKAGE_LINUX_TOOLS_FOO +02: bool "foo" +03: select BR2_PACKAGE_LINUX_TOOLS +04: help +05: This is a comment that explains what foo kernel tool is. +06: +07: http://foosoftware.org/foo/ +---- + +The name of the option starts with the prefix +BR2_PACKAGE_LINUX_TOOLS_+, +followed by the uppercase name of the tool (like is done for packages). + +.Note +Unlike other packages, the +linux-tools+ package options appear in the ++linux+ kernel menu, under the `Linux Kernel Tools` sub-menu, not under +the `Target packages` main menu. + +Then for each linux tool, add a new +.mk.in+ file named ++package/linux-tools/linux-tool-foo.mk.in+. It would basically look like: + +---- +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: LINUX_TOOLS += foo +08: +09: FOO_DEPENDENCIES = libbbb +10: +11: define FOO_BUILD_CMDS +12: $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools foo +13: endef +14: +15: define FOO_INSTALL_STAGING_CMDS +16: $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \ +17: DESTDIR=$(STAGING_DIR) \ +18: foo_install +19: endef +20: +21: define FOO_INSTALL_TARGET_CMDS +22: $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \ +23: DESTDIR=$(TARGET_DIR) \ +24: foo_install +25: endef +---- + +On line 7, we register the Linux tool +foo+ to the list of available +Linux tools. + +On line 9, we specify the list of dependencies this tool relies on. These +dependencies are added to the Linux package dependencies list only when the ++foo+ tool is selected. + +The rest of the Makefile, lines 11-25 defines what should be done at the +different steps of the Linux tool build process like for a +xref:generic-package-tutorial[+generic package+]. They will actually be +used only when the +foo+ tool is selected. The only supported commands are ++_BUILD_CMDS+, +_INSTALL_STAGING_CMDS+ and +_INSTALL_TARGET_CMDS+. + +.Note +One *must not* call +$(eval $(generic-package))+ or any other +package infrastructure! Linux tools are not packages by themselves, +they are part of the +linux-tools+ package. + +[[linux-kernel-ext]] +==== linux-kernel-extensions + +Some packages provide new features that require the Linux kernel tree +to be modified. This can be in the form of patches to be applied on +the kernel tree, or in the form of new files to be added to the +tree. The Buildroot's Linux kernel extensions infrastructure provides +a simple solution to automatically do this, just after the kernel +sources are extracted and before the kernel patches are +applied. Examples of extensions packaged using this mechanism are the +real-time extensions Xenomai and RTAI, as well as the set of +out-of-tree LCD screens drivers +fbtft+. + +Let's look at an example on how to add a new Linux extension +foo+. + +First, create the package +foo+ that provides the extension: this +package is a standard package; see the previous chapters on how to +create such a package. This package is in charge of downloading the +sources archive, checking the hash, defining the licence informations +and building user space tools if any. + +Then create the 'Linux extension' proper: create a new menu entry in +the existing +linux/Config.ext.in+. This file contains the option +descriptions related to each kernel extension that will be used and +displayed in the configuration tool. It would basically look like: + +---- +01: config BR2_LINUX_KERNEL_EXT_FOO +02: bool "foo" +03: help +04: This is a comment that explains what foo kernel extension is. +05: +06: http://foosoftware.org/foo/ +---- + +Then for each linux extension, add a new +.mk+ file named ++linux/linux-ext-foo.mk+. It should basically contain: + +---- +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: LINUX_EXTENSIONS += foo +08: +09: define FOO_PREPARE_KERNEL +10: $(FOO_DIR)/prepare-kernel-tree.sh --linux-dir=$(@D) +11: endef +---- + +On line 7, we add the Linux extension +foo+ to the list of available +Linux extensions. + +On line 9-11, we define what should be done by the extension to modify +the Linux kernel tree; this is specific to the linux extension and can +use the variables defined by the +foo+ package, like: +$(FOO_DIR)+ or ++$(FOO_VERSION)+... as well as all the Linux variables, like: ++$(LINUX_VERSION)+ or +$(LINUX_VERSION_PROBED)+, +$(KERNEL_ARCH)+... +See the xref:kernel-variables[definition of those kernel variables]. diff --git a/docs/manual/adding-packages-luarocks.adoc b/docs/manual/adding-packages-luarocks.adoc new file mode 100644 index 00000000..e9d47175 --- /dev/null +++ b/docs/manual/adding-packages-luarocks.adoc @@ -0,0 +1,109 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for LuaRocks-based packages + +[[luarocks-package-tutorial]] + +==== +luarocks-package+ tutorial + +First, let's see how to write a +.mk+ file for a LuaRocks-based package, +with an example : + +---- +01: ################################################################################ +02: # +03: # lua-foo +04: # +05: ################################################################################ +06: +07: LUA_FOO_VERSION = 1.0.2-1 +08: LUA_FOO_NAME_UPSTREAM = foo +09: LUA_FOO_DEPENDENCIES = bar +10: +11: LUA_FOO_BUILD_OPTS += BAR_INCDIR=$(STAGING_DIR)/usr/include +12: LUA_FOO_BUILD_OPTS += BAR_LIBDIR=$(STAGING_DIR)/usr/lib +13: LUA_FOO_LICENSE = luaFoo license +14: LUA_FOO_LICENSE_FILES = $(LUA_FOO_SUBDIR)/COPYING +15: +16: $(eval $(luarocks-package)) +---- + +On line 7, we declare the version of the package (the same as in the rockspec, +which is the concatenation of the upstream version and the rockspec revision, +separated by a hyphen '-'). + +On line 8, we declare that the package is called "foo" on LuaRocks. In +Buildroot, we give Lua-related packages a name that starts with "lua", so the +Buildroot name is different from the upstream name. +LUA_FOO_NAME_UPSTREAM+ +makes the link between the two names. + +On line 9, we declare our dependencies against native libraries, so that they +are built before the build process of our package starts. + +On lines 11-12, we tell Buildroot to pass custom options to LuaRocks when it is +building the package. + +On lines 13-14, we specify the licensing terms for the package. + +Finally, on line 16, we invoke the +luarocks-package+ +macro that generates all the Makefile rules that actually allows the +package to be built. + +Most of these details can be retrieved from the +rock+ and +rockspec+. +So, this file and the Config.in file can be generated by running the +command +luarocks buildroot foo lua-foo+ in the Buildroot +directory. This command runs a specific Buildroot addon of +luarocks+ +that will automatically generate a Buildroot package. The result must +still be manually inspected and possibly modified. + +* The +package/Config.in+ file has to be updated manually to include the + generated Config.in files. + +[[luarocks-package-reference]] + +==== +luarocks-package+ reference + +LuaRocks is a deployment and management system for Lua modules, and supports +various +build.type+: +builtin+, +make+ and +cmake+. In the context of +Buildroot, the +luarocks-package+ infrastructure only supports the +builtin+ +mode. LuaRocks packages that use the +make+ or +cmake+ build mechanisms +should instead be packaged using the +generic-package+ and +cmake-package+ +infrastructures in Buildroot, respectively. + +The main macro of the LuaRocks package infrastructure is +luarocks-package+: +like +generic-package+ it works by defining a number of variables providing +metadata information about the package, and then calling the +luarocks-package+ +macro. + +Just like the generic infrastructure, the LuaRocks infrastructure works +by defining a number of variables before calling the +luarocks-package+ +macro. + +All the package metadata information variables that exist in the +xref:generic-package-reference[generic package infrastructure] also +exist in the LuaRocks infrastructure. + +Two of them are populated by the LuaRocks infrastructure (for the ++download+ step). If your package is not hosted on the LuaRocks mirror ++$(BR2_LUAROCKS_MIRROR)+, you can override them: + +* +LUA_FOO_SITE+, which defaults to +$(BR2_LUAROCKS_MIRROR)+ + +* +LUA_FOO_SOURCE+, which defaults to + +$(lowercase LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION).src.rock+ + +A few additional variables, specific to the LuaRocks infrastructure, are +also defined. They can be overridden in specific cases. + +* +LUA_FOO_NAME_UPSTREAM+, which defaults to +lua-foo+, i.e. the Buildroot + package name + +* +LUA_FOO_ROCKSPEC+, which defaults to + +$(lowercase LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION).rockspec+ + +* +LUA_FOO_SUBDIR+, which defaults to + +$(LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION_WITHOUT_ROCKSPEC_REVISION)+ + +* +LUA_FOO_BUILD_OPTS+ contains additional build options for the + +luarocks build+ call. diff --git a/docs/manual/adding-packages-meson.adoc b/docs/manual/adding-packages-meson.adoc new file mode 100644 index 00000000..16135b12 --- /dev/null +++ b/docs/manual/adding-packages-meson.adoc @@ -0,0 +1,132 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for Meson-based packages + +[[meson-package-tutorial]] + +==== +meson-package+ tutorial + +http://mesonbuild.com[Meson] is an open source build system meant to be both +extremely fast, and, even more importantly, as user friendly as possible. It +uses https://ninja-build.org[Ninja] as a companion tool to perform the actual +build operations. + +Let's see how to write a +.mk+ file for a Meson-based package, with an example: + +---- +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: FOO_VERSION = 1.0 +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.gz +09: FOO_SITE = http://www.foosoftware.org/download +10: FOO_LICENSE = GPL-3.0+ +11: FOO_LICENSE_FILES = COPYING +12: FOO_INSTALL_STAGING = YES +13: +14: FOO_DEPENDENCIES = host-pkgconf bar +15: +16: ifeq ($(BR2_PACKAGE_BAZ),y) +17: FOO_CONF_OPTS += -Dbaz=true +18: FOO_DEPENDENCIES += baz +19: else +20: FOO_CONF_OPTS += -Dbaz=false +21: endif +22: +23: $(eval $(meson-package)) +---- + +The Makefile starts with the definition of the standard variables for package +declaration (lines 7 to 11). + +On line line 23, we invoke the +meson-package+ macro that generates all the +Makefile rules that actually allows the package to be built. + +In the example, +host-pkgconf+ and +bar+ are declared as dependencies in ++FOO_DEPENDENCIES+ at line 14 because the Meson build file of +foo+ uses +`pkg-config` to determine the compilation flags and libraries of package +bar+. + +Note that it is not necessary to add +host-meson+ in the +FOO_DEPENDENCIES+ +variable of a package, since this basic dependency is automatically added as +needed by the Meson package infrastructure. + +If the "baz" package is selected, then support for the "baz" feature in "foo" is +activated by adding +-Dbaz=true+ to +FOO_CONF_OPTS+ at line 17, as specified in +the +meson_options.txt+ file in "foo" source tree. The "baz" package is also +added to +FOO_DEPENDENCIES+. Note that the support for +baz+ is explicitly +disabled at line 20, if the package is not selected. + +To sum it up, to add a new meson-based package, the Makefile example can be +copied verbatim then edited to replace all occurences of +FOO+ with the +uppercase name of the new package and update the values of the standard +variables. + +[[meson-package-reference]] + +==== +meson-package+ reference + +The main macro of the Meson package infrastructure is +meson-package+. It is +similar to the +generic-package+ macro. The ability to have target and host +packages is also available, with the +host-meson-package+ macro. + +Just like the generic infrastructure, the Meson infrastructure works by defining +a number of variables before calling the +meson-package+ macro. + +All the package metadata information variables that exist in the +xref:generic-package-reference[generic package infrastructure] also +exist in the Meson infrastructure. + +A few additional variables, specific to the Meson infrastructure, can also be +defined. Many of them are only useful in very specific cases, typical packages +will therefore only use a few of them. + +* +FOO_SUBDIR+ may contain the name of a subdirectory inside the + package that contains the main meson.build file. This is useful, + if for example, the main meson.build file is not at the root of + the tree extracted by the tarball. If +HOST_FOO_SUBDIR+ is not + specified, it defaults to +FOO_SUBDIR+. + +* +FOO_CONF_ENV+, to specify additional environment variables to pass to + +meson+ for the configuration step. By default, empty. + +* +FOO_CONF_OPTS+, to specify additional options to pass to +meson+ for the + configuration step. By default, empty. + +* +FOO_CFLAGS+, to specify compiler arguments added to the package specific + +cross-compile.conf+ file +c_args+ property. By default, the value of + +TARGET_CFLAGS+. + +* +FOO_CXXFLAGS+, to specify compiler arguments added to the package specific + +cross-compile.conf+ file +cpp_args+ property. By default, the value of + +TARGET_CXXFLAGS+. + +* +FOO_LDFLAGS+, to specify compiler arguments added to the package specific + +cross-compile.conf+ file +c_link_args+ and +cpp_link_args+ properties. By + default, the value of +TARGET_LDFLAGS+. + +* +FOO_MESON_EXTRA_BINARIES+, to specify a space-separated list of programs + to add to the `[binaries]` section of the meson `cross-compilation.conf` + configuration file. The format is `program-name='/path/to/program'`, with + no space around the +=+ sign, and with the path of the program between + single quotes. By default, empty. Note that Buildroot already sets the + correct values for +c+, +cpp+, +ar+, +strip+, and +pkgconfig+. + +* +FOO_MESON_EXTRA_PROPERTIES+, to specify a space-separated list of + properties to add to the `[properties]` section of the meson + `cross-compilation.conf` configuration file. The format is + `property-name=` with no space around the +=+ sign, and with + single quotes around string values. By default, empty. Note that + Buildroot already sets values for +needs_exe_wrapper+, +c_args+, + +c_link_args+, +cpp_args+, +cpp_link_args+, +sys_root+, and + +pkg_config_libdir+. + +* +FOO_NINJA_ENV+, to specify additional environment variables to pass to + +ninja+, meson companion tool in charge of the build operations. By default, + empty. + +* +FOO_NINJA_OPTS+, to specify a space-separated list of targets to build. By + default, empty, to build the default target(s). diff --git a/docs/manual/adding-packages-perl.adoc b/docs/manual/adding-packages-perl.adoc new file mode 100644 index 00000000..40593177 --- /dev/null +++ b/docs/manual/adding-packages-perl.adoc @@ -0,0 +1,126 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for Perl/CPAN packages + +[[perl-package-tutorial]] + +==== +perl-package+ tutorial + +First, let's see how to write a +.mk+ file for a Perl/CPAN package, +with an example : + +---- +01: ################################################################################ +02: # +03: # perl-foo-bar +04: # +05: ################################################################################ +06: +07: PERL_FOO_BAR_VERSION = 0.02 +08: PERL_FOO_BAR_SOURCE = Foo-Bar-$(PERL_FOO_BAR_VERSION).tar.gz +09: PERL_FOO_BAR_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MO/MONGER +10: PERL_FOO_BAR_DEPENDENCIES = perl-strictures +11: PERL_FOO_BAR_LICENSE = Artistic or GPL-1.0+ +12: PERL_FOO_BAR_LICENSE_FILES = LICENSE +13: PERL_FOO_BAR_DISTNAME = Foo-Bar +14: +15: $(eval $(perl-package)) +---- + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball and the location +of the tarball on a CPAN server. Buildroot will automatically download +the tarball from this location. + +On line 10, we declare our dependencies, so that they are built +before the build process of our package starts. + +On line 11 and 12, we give licensing details about the package (its +license on line 11, and the file containing the license text on line +12). + +On line 13, the name of the distribution as needed by the script ++utils/scancpan+ (in order to regenerate/upgrade these package files). + +Finally, on line 15, we invoke the +perl-package+ macro that +generates all the Makefile rules that actually allow the package to be +built. + +Most of these data can be retrieved from https://metacpan.org/. +So, this file and the Config.in can be generated by running +the script +utils/scancpan Foo-Bar+ in the Buildroot directory +(or in a br2-external tree). +This script creates a Config.in file and foo-bar.mk file for the +requested package, and also recursively for all dependencies specified by +CPAN. You should still manually edit the result. In particular, the +following things should be checked. + +* If the perl module links with a shared library that is provided by + another (non-perl) package, this dependency is not added automatically. + It has to be added manually to +PERL_FOO_BAR_DEPENDENCIES+. +* The +package/Config.in+ file has to be updated manually to include the + generated Config.in files. As a hint, the +scancpan+ script prints out + the required +source "..."+ statements, sorted alphabetically. + +[[perl-package-reference]] + +==== +perl-package+ reference + +As a policy, packages that provide Perl/CPAN modules should all be +named +perl-+ in Buildroot. + +This infrastructure handles various Perl build systems : ++ExtUtils-MakeMaker+ (EUMM), +Module-Build+ (MB) and +Module-Build-Tiny+. ++Build.PL+ is preferred by default when a package provides a +Makefile.PL+ +and a +Build.PL+. + +The main macro of the Perl/CPAN package infrastructure is ++perl-package+. It is similar to the +generic-package+ macro. The ability to +have target and host packages is also available, with the ++host-perl-package+ macro. + +Just like the generic infrastructure, the Perl/CPAN infrastructure +works by defining a number of variables before calling the ++perl-package+ macro. + +All the package metadata information variables that exist in the +xref:generic-package-reference[generic package infrastructure] also +exist in the Perl/CPAN infrastructure. + +Note that setting +PERL_FOO_INSTALL_STAGING+ to +YES+ has no effect +unless a +PERL_FOO_INSTALL_STAGING_CMDS+ variable is defined. The perl +infrastructure doesn't define these commands since Perl modules generally +don't need to be installed to the +staging+ directory. + +A few additional variables, specific to the Perl/CPAN infrastructure, +can also be defined. Many of them are only useful in very specific +cases, typical packages will therefore only use a few of them. + +* +PERL_FOO_PREFER_INSTALLER+/+HOST_PERL_FOO_PREFER_INSTALLER+, + specifies the preferred installation method. Possible values are + +EUMM+ (for +Makefile.PL+ based installation using + +ExtUtils-MakeMaker+) and +MB+ (for +Build.PL+ based installation + using +Module-Build+). This variable is only used when the package + provides both installation methods. + +* +PERL_FOO_CONF_ENV+/+HOST_PERL_FOO_CONF_ENV+, to specify additional + environment variables to pass to the +perl Makefile.PL+ or +perl Build.PL+. + By default, empty. + +* +PERL_FOO_CONF_OPTS+/+HOST_PERL_FOO_CONF_OPTS+, to specify additional + configure options to pass to the +perl Makefile.PL+ or +perl Build.PL+. + By default, empty. + +* +PERL_FOO_BUILD_OPTS+/+HOST_PERL_FOO_BUILD_OPTS+, to specify additional + options to pass to +make pure_all+ or +perl Build build+ in the build step. + By default, empty. + +* +PERL_FOO_INSTALL_TARGET_OPTS+, to specify additional options to + pass to +make pure_install+ or +perl Build install+ in the install step. + By default, empty. + +* +HOST_PERL_FOO_INSTALL_OPTS+, to specify additional options to + pass to +make pure_install+ or +perl Build install+ in the install step. + By default, empty. diff --git a/docs/manual/adding-packages-python.adoc b/docs/manual/adding-packages-python.adoc new file mode 100644 index 00000000..f33770f9 --- /dev/null +++ b/docs/manual/adding-packages-python.adoc @@ -0,0 +1,244 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for Python packages + +This infrastructure applies to Python packages that use the standard +Python setuptools, pep517, flit or maturin mechanisms as their build +system, generally recognizable by the usage of a +setup.py+ script or ++pyproject.toml+ file. + +[[python-package-tutorial]] + +==== +python-package+ tutorial + +First, let's see how to write a +.mk+ file for a Python package, +with an example : + +---- +01: ################################################################################ +02: # +03: # python-foo +04: # +05: ################################################################################ +06: +07: PYTHON_FOO_VERSION = 1.0 +08: PYTHON_FOO_SOURCE = python-foo-$(PYTHON_FOO_VERSION).tar.xz +09: PYTHON_FOO_SITE = http://www.foosoftware.org/download +10: PYTHON_FOO_LICENSE = BSD-3-Clause +11: PYTHON_FOO_LICENSE_FILES = LICENSE +12: PYTHON_FOO_ENV = SOME_VAR=1 +13: PYTHON_FOO_DEPENDENCIES = libmad +14: PYTHON_FOO_SETUP_TYPE = setuptools +15: +16: $(eval $(python-package)) +---- + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10 and 11, we give licensing details about the package (its +license on line 10, and the file containing the license text on line +11). + +On line 12, we tell Buildroot to pass custom options to the Python ++setup.py+ script when it is configuring the package. + +On line 13, we declare our dependencies, so that they are built +before the build process of our package starts. + +On line 14, we declare the specific Python build system being used. In +this case the +setuptools+ Python build system is used. The five +supported ones are +flit+, +pep517+, +setuptools+, +setuptools-rust+ +and +maturin+. + +Finally, on line 16, we invoke the +python-package+ macro that +generates all the Makefile rules that actually allow the package to be +built. + +[[python-package-reference]] + +==== +python-package+ reference + +As a policy, packages that merely provide Python modules should all be +named +python-+ in Buildroot. Other packages that use the +Python build system, but are not Python modules, can freely choose +their name (existing examples in Buildroot are +scons+ and ++supervisor+). + +The main macro of the Python package infrastructure is ++python-package+. It is similar to the +generic-package+ macro. It is +also possible to create Python host packages with the ++host-python-package+ macro. + +Just like the generic infrastructure, the Python infrastructure works +by defining a number of variables before calling the +python-package+ +or +host-python-package+ macros. + +All the package metadata information variables that exist in the +xref:generic-package-reference[generic package infrastructure] also +exist in the Python infrastructure. + +Note that: + + * It is not necessary to add +python+ or +host-python+ in the + +PYTHON_FOO_DEPENDENCIES+ variable of a package, since these basic + dependencies are automatically added as needed by the Python + package infrastructure. + + * Similarly, it is not needed to add +host-python-setuptools+ to + +PYTHON_FOO_DEPENDENCIES+ for setuptools-based packages, since it's + automatically added by the Python infrastructure as needed. + +One variable specific to the Python infrastructure is mandatory: + +* +PYTHON_FOO_SETUP_TYPE+, to define which Python build system is used + by the package. The five supported values are +flit+, +pep517+ and + +setuptools+, +setuptools-rust+ and +maturin+. If you don't know + which one is used in your package, look at the +setup.py+ or + +pyproject.toml+ file in your package source code, and see whether + it imports things from the +flit+ module or the +setuptools+ + module. If the package is using a +pyproject.toml+ file without any + build-system requires and with a local in-tree backend-path one + should use +pep517+. + +A few additional variables, specific to the Python infrastructure, can +optionally be defined, depending on the package's needs. Many of them +are only useful in very specific cases, typical packages will +therefore only use a few of them, or none. + +* +PYTHON_FOO_SUBDIR+ may contain the name of a subdirectory inside the + package that contains the main +setup.py+ or +pyproject.toml+ file. + This is useful, if for example, the main +setup.py+ or +pyproject.toml+ + file is not at the root of the tree extracted by the tarball. If + +HOST_PYTHON_FOO_SUBDIR+ is not specified, it defaults to + +PYTHON_FOO_SUBDIR+. + +* +PYTHON_FOO_ENV+, to specify additional environment variables to + pass to the Python +setup.py+ script (for setuptools packages) or + the +support/scripts/pyinstaller.py+ script (for flit/pep517 + packages) for both the build and install steps. Note that the + infrastructure is automatically passing several standard variables, + defined in +PKG_PYTHON_SETUPTOOLS_ENV+ (for setuptools target + packages), +HOST_PKG_PYTHON_SETUPTOOLS_ENV+ (for setuptools host + packages), +PKG_PYTHON_PEP517_ENV+ (for flit/pep517 target packages) + and +HOST_PKG_PYTHON_PEP517_ENV+ (for flit/pep517 host packages). + +* +PYTHON_FOO_BUILD_OPTS+, to specify additional options to pass to + the Python +setup.py+ script during the build step, this generally + only makes sense to use for setuptools based packages as flit/pep517 + based packages do not pass these options to a +setup.py+ script but + instead pass them to +support/scripts/pyinstaller.py+. + +* +PYTHON_FOO_INSTALL_TARGET_OPTS+, +PYTHON_FOO_INSTALL_STAGING_OPTS+, + +HOST_PYTHON_FOO_INSTALL_OPTS+ to specify additional options to pass + to the Python +setup.py+ script (for setuptools packages) or + +support/scripts/pyinstaller.py+ (for flit/pep517 packages) during + the target installation step, the staging installation step or the + host installation, respectively. + +With the Python infrastructure, all the steps required to build and +install the packages are already defined, and they generally work well +for most Python-based packages. However, when required, it is still +possible to customize what is done in any particular step: + +* By adding a post-operation hook (after extract, patch, configure, + build or install). See xref:hooks[] for details. + +* By overriding one of the steps. For example, even if the Python + infrastructure is used, if the package +.mk+ file defines its own + +PYTHON_FOO_BUILD_CMDS+ variable, it will be used instead of the + default Python one. However, using this method should be restricted + to very specific cases. Do not use it in the general case. + +[[scanpypi]] + +==== Generating a +python-package+ from a PyPI repository + +If the Python package for which you would like to create a Buildroot +package is available on PyPI, you may want to use the +scanpypi+ tool +located in +utils/+ to automate the process. + +You can find the list of existing PyPI packages +https://pypi.python.org[here]. + ++scanpypi+ requires Python's +setuptools+ package to be installed on +your host. + +When at the root of your buildroot directory just do : + +---- +utils/scanpypi foo bar -o package +---- + +This will generate packages +python-foo+ and +python-bar+ in the package +folder if they exist on https://pypi.python.org. + +Find the +external python modules+ menu and insert your package inside. +Keep in mind that the items inside a menu should be in alphabetical order. + +Please keep in mind that you'll most likely have to manually check the +package for any mistakes as there are things that cannot be guessed by +the generator (e.g. dependencies on any of the python core modules +such as BR2_PACKAGE_PYTHON_ZLIB). Also, please take note that the +license and license files are guessed and must be checked. You also +need to manually add the package to the +package/Config.in+ file. + +If your Buildroot package is not in the official Buildroot tree but in +a br2-external tree, use the -o flag as follows: + +---- +utils/scanpypi foo bar -o other_package_dir +---- + +This will generate packages +python-foo+ and +python-bar+ in the ++other_package_directory+ instead of +package+. + +Option +-h+ will list the available options: + +---- +utils/scanpypi -h +---- + +[[python-package-cffi-backend]] + +==== +python-package+ CFFI backend + +C Foreign Function Interface for Python (CFFI) provides a convenient +and reliable way to call compiled C code from Python using interface +declarations written in C. Python packages relying on this backend can +be identified by the appearance of a +cffi+ dependency in the ++install_requires+ field of their +setup.py+ file. + +Such a package should: + + * add +python-cffi+ as a runtime dependency in order to install the +compiled C library wrapper on the target. This is achieved by adding ++select BR2_PACKAGE_PYTHON_CFFI+ to the package +Config.in+. + +---- +config BR2_PACKAGE_PYTHON_FOO + bool "python-foo" + select BR2_PACKAGE_PYTHON_CFFI # runtime +---- + + * add +host-python-cffi+ as a build-time dependency in order to +cross-compile the C wrapper. This is achieved by adding ++host-python-cffi+ to the +PYTHON_FOO_DEPENDENCIES+ variable. + +---- +################################################################################ +# +# python-foo +# +################################################################################ + +... + +PYTHON_FOO_DEPENDENCIES = host-python-cffi + +$(eval $(python-package)) +---- diff --git a/docs/manual/adding-packages-qmake.adoc b/docs/manual/adding-packages-qmake.adoc new file mode 100644 index 00000000..e09da166 --- /dev/null +++ b/docs/manual/adding-packages-qmake.adoc @@ -0,0 +1,83 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for QMake-based packages + +[[qmake-package-tutorial]] + +==== +qmake-package+ tutorial + +First, let's see how to write a +.mk+ file for a QMake-based package, with +an example : + +---- +01: ################################################################################ +02: # +03: # libfoo +04: # +05: ################################################################################ +06: +07: LIBFOO_VERSION = 1.0 +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz +09: LIBFOO_SITE = http://www.foosoftware.org/download +10: LIBFOO_CONF_OPTS = QT_CONFIG+=bar QT_CONFIG-=baz +11: LIBFOO_DEPENDENCIES = bar +12: +13: $(eval $(qmake-package)) +---- + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10, we tell Buildroot what options to enable for libfoo. + +On line 11, we tell Buildroot the dependencies of libfoo. + +Finally, on line line 13, we invoke the +qmake-package+ +macro that generates all the Makefile rules that actually allows the +package to be built. + +[[qmake-package-reference]] + +==== +qmake-package+ reference + +The main macro of the QMake package infrastructure is +qmake-package+. +It is similar to the +generic-package+ macro. + +Just like the generic infrastructure, the QMake infrastructure works +by defining a number of variables before calling the +qmake-package+ +macro. + +All the package metadata information variables that exist in the +xref:generic-package-reference[generic package infrastructure] also +exist in the QMake infrastructure. + +A few additional variables, specific to the QMake infrastructure, can +also be defined. + +* +LIBFOO_CONF_ENV+, to specify additional environment variables to + pass to the +qmake+ script for the configuration step. By default, empty. + +* +LIBFOO_CONF_OPTS+, to specify additional options to pass to the + +qmake+ script for the configuration step. By default, empty. + +* +LIBFOO_MAKE_ENV+, to specify additional environment variables to the + +make+ command during the build and install steps. By default, empty. + +* +LIBFOO_MAKE_OPTS+, to specify additional targets to pass to the + +make+ command during the build step. By default, empty. + +* +LIBFOO_INSTALL_STAGING_OPTS+, to specify additional targets to pass + to the +make+ command during the staging installation step. By default, + +install+. + +* +LIBFOO_INSTALL_TARGET_OPTS+, to specify additional targets to pass + to the +make+ command during the target installation step. By default, + +install+. + +* +LIBFOO_SYNC_QT_HEADERS+, to run syncqt.pl before qmake. Some packages + need this to have a properly populated include directory before + running the build. diff --git a/docs/manual/adding-packages-rebar.adoc b/docs/manual/adding-packages-rebar.adoc new file mode 100644 index 00000000..d2ed67c4 --- /dev/null +++ b/docs/manual/adding-packages-rebar.adoc @@ -0,0 +1,104 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for rebar-based packages + +[[rebar-package-tutorial]] + +==== +rebar-package+ tutorial + +First, let's see how to write a +.mk+ file for a rebar-based package, +with an example : + +---- +01: ################################################################################ +02: # +03: # erlang-foobar +04: # +05: ################################################################################ +06: +07: ERLANG_FOOBAR_VERSION = 1.0 +08: ERLANG_FOOBAR_SOURCE = erlang-foobar-$(ERLANG_FOOBAR_VERSION).tar.xz +09: ERLANG_FOOBAR_SITE = http://www.foosoftware.org/download +10: ERLANG_FOOBAR_DEPENDENCIES = host-libaaa libbbb +11: +12: $(eval $(rebar-package)) +---- + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10, we declare our dependencies, so that they are built +before the build process of our package starts. + +Finally, on line 12, we invoke the +rebar-package+ macro that +generates all the Makefile rules that actually allows the package to +be built. + +[[rebar-package-reference]] + +==== +rebar-package+ reference + +The main macro of the +rebar+ package infrastructure is ++rebar-package+. It is similar to the +generic-package+ macro. The +ability to have host packages is also available, with the ++host-rebar-package+ macro. + +Just like the generic infrastructure, the +rebar+ infrastructure works +by defining a number of variables before calling the +rebar-package+ +macro. + +All the package metadata information variables that exist in the +xref:generic-package-reference[generic package infrastructure] also +exist in the +rebar+ infrastructure. + +A few additional variables, specific to the +rebar+ infrastructure, +can also be defined. Many of them are only useful in very specific +cases, typical packages will therefore only use a few of them. + +* +ERLANG_FOOBAR_USE_AUTOCONF+, to specify that the package uses + _autoconf_ at the configuration step. When a package sets this + variable to +YES+, the +autotools+ infrastructure is used. ++ +.Note +You can also use some of the variables from the +autotools+ + infrastructure: +ERLANG_FOOBAR_CONF_ENV+, +ERLANG_FOOBAR_CONF_OPTS+, + +ERLANG_FOOBAR_AUTORECONF+, +ERLANG_FOOBAR_AUTORECONF_ENV+ and + +ERLANG_FOOBAR_AUTORECONF_OPTS+. + +* +ERLANG_FOOBAR_USE_BUNDLED_REBAR+, to specify that the package has + a bundled version of _rebar_ *and* that it shall be used. Valid + values are +YES+ or +NO+ (the default). ++ +.Note +If the package bundles a _rebar_ utility, but can use the generic + one that Buildroot provides, just say +NO+ (i.e., do not specify + this variable). Only set if it is mandatory to use the _rebar_ + utility bundled in this package. + +* +ERLANG_FOOBAR_REBAR_ENV+, to specify additional environment + variables to pass to the _rebar_ utility. + +* +ERLANG_FOOBAR_KEEP_DEPENDENCIES+, to keep the dependencies + described in the rebar.config file. Valid values are +YES+ or +NO+ + (the default). Unless this variable is set to +YES+, the _rebar_ + infrastructure removes such dependencies in a post-patch hook to + ensure rebar does not download nor compile them. + +With the rebar infrastructure, all the steps required to build +and install the packages are already defined, and they generally work +well for most rebar-based packages. However, when required, it is +still possible to customize what is done in any particular step: + +* By adding a post-operation hook (after extract, patch, configure, + build or install). See xref:hooks[] for details. + +* By overriding one of the steps. For example, even if the rebar + infrastructure is used, if the package +.mk+ file defines its + own +ERLANG_FOOBAR_BUILD_CMDS+ variable, it will be used instead + of the default rebar one. However, using this method should be + restricted to very specific cases. Do not use it in the general + case. diff --git a/docs/manual/adding-packages-tips.adoc b/docs/manual/adding-packages-tips.adoc new file mode 100644 index 00000000..b04b42b5 --- /dev/null +++ b/docs/manual/adding-packages-tips.adoc @@ -0,0 +1,242 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Tips and tricks + +[[package-name-variable-relation]] +==== Package name, config entry name and makefile variable relationship + +In Buildroot, there is some relationship between: + +* the _package name_, which is the package directory name (and the + name of the +*.mk+ file); + +* the config entry name that is declared in the +Config.in+ file; + +* the makefile variable prefix. + +It is mandatory to maintain consistency between these elements, +using the following rules: + +* the package directory and the +*.mk+ name are the _package name_ + itself (e.g.: +package/foo-bar_boo/foo-bar_boo.mk+); + +* the _make_ target name is the _package name_ itself (e.g.: + +foo-bar_boo+); + +* the config entry is the upper case _package name_ with `.` and `-` + characters substituted with `_`, prefixed with +BR2_PACKAGE_+ (e.g.: + +BR2_PACKAGE_FOO_BAR_BOO+); + +* the +*.mk+ file variable prefix is the upper case _package name_ + with `.` and `-` characters substituted with `_` (e.g.: + +FOO_BAR_BOO_VERSION+). + +[[check-package]] +==== How to check the coding style + +Buildroot provides a script in +utils/check-package+ that checks new or +changed files for coding style. It is not a complete language validator, +but it catches many common mistakes. It is meant to run in the actual +files you created or modified, before creating the patch for submission. + +This script can be used for packages, filesystem makefiles, Config.in +files, etc. It does not check the files defining the package +infrastructures and some other files containing similar common code. + +To use it, run the +check-package+ script, by telling which files you +created or changed: + +---- +$ ./utils/check-package package/new-package/* +---- + +If you have the +utils+ directory in your path you can also run: + +---- +$ cd package/new-package/ +$ check-package * +---- + +The tool can also be used for packages in a br2-external: + +---- +$ check-package -b /path/to/br2-ext-tree/package/my-package/* +---- + +[[testing-package]] +==== How to test your package + +Once you have added your new package, it is important that you test it +under various conditions: does it build for all architectures? Does it +build with the different C libraries? Does it need threads, NPTL? And +so on... + +Buildroot runs http://autobuild.buildroot.org/[autobuilders] which +continuously test random configurations. However, these only build the +`master` branch of the git tree, and your new fancy package is not yet +there. + +Buildroot provides a script in +utils/test-pkg+ that uses the same base +configurations as used by the autobuilders so you can test your package +in the same conditions. + +First, create a config snippet that contains all the necessary options +needed to enable your package, but without any architecture or toolchain +option. For example, let's create a config snippet that just enables ++libcurl+, without any TLS backend: + +---- +$ cat libcurl.config +BR2_PACKAGE_LIBCURL=y +---- + +If your package needs more configuration options, you can add them to the +config snippet. For example, here's how you would test +libcurl+ with ++openssl+ as a TLS backend and the +curl+ program: + +---- +$ cat libcurl.config +BR2_PACKAGE_LIBCURL=y +BR2_PACKAGE_LIBCURL_CURL=y +BR2_PACKAGE_OPENSSL=y +---- + +Then run the +test-pkg+ script, by telling it what config snippet to use +and what package to test: + +---- +$ ./utils/test-pkg -c libcurl.config -p libcurl +---- + +By default, +test-pkg+ will build your package against a subset of the +toolchains used by the autobuilders, which has been selected by the +Buildroot developers as being the most useful and representative +subset. If you want to test all toolchains, pass the +-a+ option. Note +that in any case, internal toolchains are excluded as they take too +long to build. + +The output lists all toolchains that are tested and the corresponding +result (excerpt, results are fake): + +---- +$ ./utils/test-pkg -c libcurl.config -p libcurl + armv5-ctng-linux-gnueabi [ 1/11]: OK + armv7-ctng-linux-gnueabihf [ 2/11]: OK + br-aarch64-glibc [ 3/11]: SKIPPED + br-arcle-hs38 [ 4/11]: SKIPPED + br-arm-basic [ 5/11]: FAILED + br-arm-cortex-a9-glibc [ 6/11]: OK + br-arm-cortex-a9-musl [ 7/11]: FAILED + br-arm-cortex-m4-full [ 8/11]: OK + br-arm-full [ 9/11]: OK + br-arm-full-nothread [10/11]: FAILED + br-arm-full-static [11/11]: OK +11 builds, 2 skipped, 2 build failed, 1 legal-info failed +---- + +The results mean: + +* `OK`: the build was successful. +* `SKIPPED`: one or more configuration options listed in the config + snippet were not present in the final configuration. This is due to + options having dependencies not satisfied by the toolchain, such as + for example a package that +depends on BR2_USE_MMU+ with a noMMU + toolchain. The missing options are reported in +missing.config+ in + the output build directory (+~/br-test-pkg/TOOLCHAIN_NAME/+ by + default). +* `FAILED`: the build failed. Inspect the +logfile+ file in the output + build directory to see what went wrong: +** the actual build failed, +** the legal-info failed, +** one of the preliminary steps (downloading the config file, applying + the configuration, running `dirclean` for the package) failed. + +When there are failures, you can just re-run the script with the same +options (after you fixed your package); the script will attempt to +re-build the package specified with +-p+ for all toolchains, without +the need to re-build all the dependencies of that package. + +The +test-pkg+ script accepts a few options, for which you can get some +help by running: + +---- +$ ./utils/test-pkg -h +---- + +[[github-download-url]] +==== How to add a package from GitHub + +Packages on GitHub often don't have a download area with release tarballs. +However, it is possible to download tarballs directly from the repository +on GitHub. As GitHub is known to have changed download mechanisms in the +past, the 'github' helper function should be used as shown below. + +---- +# Use a tag or a full commit ID +FOO_VERSION = 1.0 +FOO_SITE = $(call github,,,v$(FOO_VERSION)) +---- + +.Notes +- The FOO_VERSION can either be a tag or a commit ID. +- The tarball name generated by github matches the default one from + Buildroot (e.g.: +foo-f6fb6654af62045239caed5950bc6c7971965e60.tar.gz+), + so it is not necessary to specify it in the +.mk+ file. +- When using a commit ID as version, you should use the full 40 hex characters. +- When the tag contains a prefix such as +v+ in +v1.0+, then the + +VERSION+ variable should contain just +1.0+, and the +v+ should be + added directly in the +SITE+ variable, as illustrated above. This + ensures that the +VERSION+ variable value can be used to match + against http://www.release-monitoring.org/[release-monitoring.org] + results. + +If the package you wish to add does have a release section on GitHub, the +maintainer may have uploaded a release tarball, or the release may just point +to the automatically generated tarball from the git tag. If there is a +release tarball uploaded by the maintainer, we prefer to use that since it +may be slightly different (e.g. it contains a configure script so we don't +need to do AUTORECONF). + +You can see on the release page if it's an uploaded tarball or a git tag: + +image::github_hash_mongrel2.png[] + +- If it looks like the image above then it was uploaded by the + maintainer and you should use that link (in that example: + 'mongrel2-v1.9.2.tar.bz2') to specify +FOO_SITE+, and not use the + 'github' helper. + +- On the other hand, if there's is *only* the "Source code" link, then + it's an automatically generated tarball and you should use the + 'github' helper function. + +[[gitlab-download-url]] +==== How to add a package from Gitlab + +In a similar way to the +github+ macro described in +xref:github-download-url[], Buildroot also provides the +gitlab+ macro +to download from Gitlab repositories. It can be used to download +auto-generated tarballs produced by Gitlab, either for specific tags +or commits: + +---- +# Use a tag or a full commit ID +FOO_VERSION = 1.0 +FOO_SITE = $(call gitlab,,,v$(FOO_VERSION)) +---- + +By default, it will use a +.tar.gz+ tarball, but Gitlab also provides ++.tar.bz2+ tarballs, so by adding a +_SOURCE+ variable, this ++.tar.bz2+ tarball can be used: + +---- +# Use a tag or a full commit ID +FOO_VERSION = 1.0 +FOO_SITE = $(call gitlab,,,v$(FOO_VERSION)) +FOO_SOURCE = foo-$(FOO_VERSION).tar.bz2 +---- + +If there is a specific tarball uploaded by the upstream developers in ++https://gitlab.com//releases/+, do not use this macro, but +rather use directly the link to the tarball. diff --git a/docs/manual/adding-packages-virtual.adoc b/docs/manual/adding-packages-virtual.adoc new file mode 100644 index 00000000..297e1891 --- /dev/null +++ b/docs/manual/adding-packages-virtual.adoc @@ -0,0 +1,144 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for virtual packages + +[[virtual-package-tutorial]] + +In Buildroot, a virtual package is a package whose functionalities are +provided by one or more packages, referred to as 'providers'. The virtual +package management is an extensible mechanism allowing the user to choose +the provider used in the rootfs. + +For example, 'OpenGL ES' is an API for 2D and 3D graphics on embedded systems. +The implementation of this API is different for the 'Allwinner Tech Sunxi' and +the 'Texas Instruments OMAP35xx' platforms. So +libgles+ will be a virtual +package and +sunxi-mali-utgard+ and +ti-gfx+ will be the providers. + +==== +virtual-package+ tutorial + +In the following example, we will explain how to add a new virtual package +('something-virtual') and a provider for it ('some-provider'). + +First, let's create the virtual package. + +==== Virtual package's +Config.in+ file + +The +Config.in+ file of virtual package 'something-virtual' should contain: + +---- +01: config BR2_PACKAGE_HAS_SOMETHING_VIRTUAL +02: bool +03: +04: config BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL +05: depends on BR2_PACKAGE_HAS_SOMETHING_VIRTUAL +06: string +---- + +In this file, we declare two options, +BR2_PACKAGE_HAS_SOMETHING_VIRTUAL+ and ++BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL+, whose values will be used by the +providers. + +==== Virtual package's +.mk+ file + +The +.mk+ for the virtual package should just evaluate the +virtual-package+ macro: + +---- +01: ################################################################################ +02: # +03: # something-virtual +04: # +05: ################################################################################ +06: +07: $(eval $(virtual-package)) +---- + +The ability to have target and host packages is also available, with the ++host-virtual-package+ macro. + +==== Provider's +Config.in+ file + +When adding a package as a provider, only the +Config.in+ file requires some +modifications. + +The +Config.in+ file of the package 'some-provider', which provides the +functionalities of 'something-virtual', should contain: + +---- +01: config BR2_PACKAGE_SOME_PROVIDER +02: bool "some-provider" +03: select BR2_PACKAGE_HAS_SOMETHING_VIRTUAL +04: help +05: This is a comment that explains what some-provider is. +06: +07: http://foosoftware.org/some-provider/ +08: +09: if BR2_PACKAGE_SOME_PROVIDER +10: config BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL +11: default "some-provider" +12: endif +---- + +On line 3, we select +BR2_PACKAGE_HAS_SOMETHING_VIRTUAL+, and on line 11, we +set the value of +BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL+ to the name of the +provider, but only if it is selected. + +==== Provider's +.mk+ file + +The +.mk+ file should also declare an additional variable ++SOME_PROVIDER_PROVIDES+ to contain the names of all the virtual +packages it is an implementation of: + +---- +01: SOME_PROVIDER_PROVIDES = something-virtual +---- + +Of course, do not forget to add the proper build and runtime dependencies for +this package! + +==== Notes on depending on a virtual package + +When adding a package that requires a certain +FEATURE+ provided by a virtual +package, you have to use +depends on BR2_PACKAGE_HAS_FEATURE+, like so: + +---- +config BR2_PACKAGE_HAS_FEATURE + bool + +config BR2_PACKAGE_FOO + bool "foo" + depends on BR2_PACKAGE_HAS_FEATURE +---- + +==== Notes on depending on a specific provider + +If your package really requires a specific provider, then you'll have to +make your package +depends on+ this provider; you can _not_ +select+ a +provider. + +Let's take an example with two providers for a +FEATURE+: + +---- +config BR2_PACKAGE_HAS_FEATURE + bool + +config BR2_PACKAGE_FOO + bool "foo" + select BR2_PACKAGE_HAS_FEATURE + +config BR2_PACKAGE_BAR + bool "bar" + select BR2_PACKAGE_HAS_FEATURE +---- + +And you are adding a package that needs +FEATURE+ as provided by +foo+, +but not as provided by +bar+. + +If you were to use +select BR2_PACKAGE_FOO+, then the user would still +be able to select +BR2_PACKAGE_BAR+ in the menuconfig. This would create +a configuration inconsistency, whereby two providers of the same +FEATURE+ +would be enabled at once, one explicitly set by the user, the other +implicitly by your +select+. + +Instead, you have to use +depends on BR2_PACKAGE_FOO+, which avoids any +implicit configuration inconsistency. diff --git a/docs/manual/adding-packages-waf.adoc b/docs/manual/adding-packages-waf.adoc new file mode 100644 index 00000000..59029172 --- /dev/null +++ b/docs/manual/adding-packages-waf.adoc @@ -0,0 +1,89 @@ +// -*- 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 dependencies of libfoo. + +Finally, on line line 13, we invoke the +waf-package+ +macro that generates all the Makefile rules that actually allows the +package to be built. + +[[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. + +All the package metadata information variables that exist in the +xref:generic-package-reference[generic package infrastructure] also +exist in the Waf infrastructure. + +A few additional variables, specific to the Waf infrastructure, can +also be defined. + +* +LIBFOO_SUBDIR+ may contain the name of a subdirectory inside the + package that contains the main wscript file. This is useful, + if for example, the main wscript file is not at the root of + the tree extracted by the tarball. If +HOST_LIBFOO_SUBDIR+ is not + specified, it defaults to +LIBFOO_SUBDIR+. + +* +LIBFOO_NEEDS_EXTERNAL_WAF+ can be set to +YES+ or +NO+ to tell + Buildroot to use the bundled +waf+ executable. If set to +NO+, the + default, then Buildroot will use the waf executable provided in the + package source tree; if set to +YES+, then Buildroot will download, + install waf as a host tool and use it to build the package. + +* +LIBFOO_WAF_OPTS+, to specify additional options to pass to the + +waf+ script at every step of the package build process: configure, + build and installation. By default, empty. + +* +LIBFOO_CONF_OPTS+, to specify additional options to pass to the + +waf+ script for the configuration step. By default, empty. + +* +LIBFOO_BUILD_OPTS+, to specify additional options to pass to the + +waf+ script during the build step. By default, empty. + +* +LIBFOO_INSTALL_STAGING_OPTS+, to specify additional options to pass + to the +waf+ script during the staging installation step. By default, + empty. + +* +LIBFOO_INSTALL_TARGET_OPTS+, to specify additional options to pass + to the +waf+ script during the target installation step. By default, + empty. diff --git a/docs/manual/adding-packages.adoc b/docs/manual/adding-packages.adoc new file mode 100644 index 00000000..10acae0b --- /dev/null +++ b/docs/manual/adding-packages.adoc @@ -0,0 +1,58 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[adding-packages]] +== Adding new packages to Buildroot + +This section covers how new packages (userspace libraries or +applications) can be integrated into Buildroot. It also shows how +existing packages are integrated, which is needed for fixing issues or +tuning their configuration. + +When you add a new package, be sure to test it in various conditions +(see xref:testing-package[]) and also check it for coding style (see +xref:check-package[]). + +include::adding-packages-directory.adoc[] + +include::adding-packages-generic.adoc[] + +include::adding-packages-autotools.adoc[] + +include::adding-packages-cmake.adoc[] + +include::adding-packages-python.adoc[] + +include::adding-packages-luarocks.adoc[] + +include::adding-packages-perl.adoc[] + +include::adding-packages-virtual.adoc[] + +include::adding-packages-kconfig.adoc[] + +include::adding-packages-rebar.adoc[] + +include::adding-packages-waf.adoc[] + +include::adding-packages-meson.adoc[] + +include::adding-packages-cargo.adoc[] + +include::adding-packages-golang.adoc[] + +include::adding-packages-qmake.adoc[] + +include::adding-packages-kernel-module.adoc[] + +include::adding-packages-asciidoc.adoc[] + +include::adding-packages-linux-kernel-spec-infra.adoc[] + +include::adding-packages-hooks.adoc[] + +include::adding-packages-gettext.adoc[] + +include::adding-packages-tips.adoc[] + +include::adding-packages-conclusion.adoc[] diff --git a/docs/manual/advanced.adoc b/docs/manual/advanced.adoc new file mode 100644 index 00000000..7f650e66 --- /dev/null +++ b/docs/manual/advanced.adoc @@ -0,0 +1,16 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Advanced usage + +include::using-buildroot-toolchain.adoc[] + +include::using-buildroot-debugger.adoc[] + +include::ccache-support.adoc[] + +include::download-location.adoc[] + +include::package-make-target.adoc[] + +include::using-buildroot-development.adoc[] diff --git a/docs/manual/appendix.adoc b/docs/manual/appendix.adoc new file mode 100644 index 00000000..4eece716 --- /dev/null +++ b/docs/manual/appendix.adoc @@ -0,0 +1,6 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +include::makedev-syntax.adoc[] +include::makeusers-syntax.adoc[] +include::migrating.adoc[] diff --git a/docs/manual/beyond-buildroot.adoc b/docs/manual/beyond-buildroot.adoc new file mode 100644 index 00000000..871b591a --- /dev/null +++ b/docs/manual/beyond-buildroot.adoc @@ -0,0 +1,66 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== Beyond Buildroot + +=== Boot the generated images + +==== NFS boot + +To achieve NFS-boot, enable _tar root filesystem_ in the _Filesystem +images_ menu. + +After a complete build, just run the following commands to setup the +NFS-root directory: + +---- +sudo tar -xavf /path/to/output_dir/rootfs.tar -C /path/to/nfs_root_dir +---- + +Remember to add this path to +/etc/exports+. + +Then, you can execute a NFS-boot from your target. + +==== Live CD + +To build a live CD image, enable the _iso image_ option in the +_Filesystem images_ menu. Note that this option is only available on +the x86 and x86-64 architectures, and if you are building your kernel +with Buildroot. + +You can build a live CD image with either IsoLinux, Grub or Grub 2 as +a bootloader, but only Isolinux supports making this image usable both +as a live CD and live USB (through the _Build hybrid image_ option). + +You can test your live CD image using QEMU: + +---- +qemu-system-i386 -cdrom output/images/rootfs.iso9660 +---- + +Or use it as a hard-drive image if it is a hybrid ISO: + +---- +qemu-system-i386 -hda output/images/rootfs.iso9660 +---- + +It can be easily flashed to a USB drive with +dd+: + +---- +dd if=output/images/rootfs.iso9660 of=/dev/sdb +---- + +=== Chroot + +If you want to chroot in a generated image, then there are few thing +you should be aware of: + +* you should setup the new root from the _tar root filesystem_ image; + +* either the selected target architecture is compatible with your host + machine, or you should use some +qemu-*+ binary and correctly set it + within the +binfmt+ properties to be able to run the binaries built + for the target on your host machine; + +* Buildroot does not currently provide +host-qemu+ and +binfmt+ + correctly built and set for that kind of use. diff --git a/docs/manual/ccache-support.adoc b/docs/manual/ccache-support.adoc new file mode 100644 index 00000000..86cb4a15 --- /dev/null +++ b/docs/manual/ccache-support.adoc @@ -0,0 +1,69 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[ccache]] +==== Using +ccache+ in Buildroot + +http://ccache.samba.org[ccache] is a compiler cache. It stores the +object files resulting from each compilation process, and is able to +skip future compilation of the same source file (with same compiler +and same arguments) by using the pre-existing object files. When doing +almost identical builds from scratch a number of times, it can nicely +speed up the build process. + ++ccache+ support is integrated in Buildroot. You just have to enable ++Enable compiler cache+ in +Build options+. This will automatically +build +ccache+ and use it for every host and target compilation. + +The cache is located in the directory defined by the +BR2_CCACHE_DIR+ +configuration option, which defaults to ++$HOME/.buildroot-ccache+. This default location is outside of +Buildroot output directory so that it can be shared by separate +Buildroot builds. If you want to get rid of the cache, simply remove +this directory. + +You can get statistics on the cache (its size, number of hits, +misses, etc.) by running +make ccache-stats+. + +The make target +ccache-options+ and the +CCACHE_OPTIONS+ variable +provide more generic access to the ccache. For example + +---- +# set cache limit size +make CCACHE_OPTIONS="--max-size=5G" ccache-options + +# zero statistics counters +make CCACHE_OPTIONS="--zero-stats" ccache-options +---- + ++ccache+ makes a hash of the source files and of the compiler options. +If a compiler option is different, the cached object file will not be +used. Many compiler options, however, contain an absolute path to the +staging directory. Because of this, building in a different output +directory would lead to many cache misses. + +To avoid this issue, buildroot has the +Use relative paths+ option +(+BR2_CCACHE_USE_BASEDIR+). This will rewrite all absolute paths that +point inside the output directory into relative paths. Thus, changing +the output directory no longer leads to cache misses. + +A disadvantage of the relative paths is that they also end up to be +relative paths in the object file. Therefore, for example, the debugger +will no longer find the file, unless you cd to the output directory +first. + +See https://ccache.samba.org/manual.html#_compiling_in_different_directories[the +ccache manual's section on "Compiling in different directories"] for +more details about this rewriting of absolute paths. + +When +ccache+ is enabled in Buildroot using the +BR2_CCACHE=y+ option: + +* +ccache+ is used during the Buildroot build itself + +* +ccache+ is not used when building outside of Buildroot, for example + when directly calling the cross-compiler or using the SDK + +One can override this behavior using the +BR2_USE_CCACHE+ environment +variable: when set to +1+, usage of ccache is enabled (default during +the Buildroot build), when unset or set to a value different from +1+, +usage of ccache is disabled. diff --git a/docs/manual/common-usage.adoc b/docs/manual/common-usage.adoc new file mode 100644 index 00000000..43caa3a9 --- /dev/null +++ b/docs/manual/common-usage.adoc @@ -0,0 +1,420 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== General Buildroot usage + +include::make-tips.adoc[] + +include::rebuilding-packages.adoc[] + +=== Offline builds + +If you intend to do an offline build and just want to download +all sources that you previously selected in the configurator +('menuconfig', 'nconfig', 'xconfig' or 'gconfig'), then issue: + +---- + $ make source +---- + +You can now disconnect or copy the content of your +dl+ +directory to the build-host. + +=== Building out-of-tree + +As default, everything built by Buildroot is stored in the directory ++output+ in the Buildroot tree. + +Buildroot also supports building out of tree with a syntax similar to +the Linux kernel. To use it, add +O=+ to the make command +line: + +---- + $ make O=/tmp/build menuconfig +---- + +Or: + +---- + $ cd /tmp/build; make O=$PWD -C path/to/buildroot menuconfig +---- + +All the output files will be located under +/tmp/build+. If the +O+ +path does not exist, Buildroot will create it. + +*Note:* the +O+ path can be either an absolute or a relative path, but if it's +passed as a relative path, it is important to note that it is interpreted +relative to the main Buildroot source directory, *not* the current working +directory. + +When using out-of-tree builds, the Buildroot +.config+ and temporary +files are also stored in the output directory. This means that you can +safely run multiple builds in parallel using the same source tree as +long as they use unique output directories. + +For ease of use, Buildroot generates a Makefile wrapper in the output +directory - so after the first run, you no longer need to pass +O=<...>+ +and +-C <...>+, simply run (in the output directory): + +---- + $ make +---- + +[[env-vars]] + +=== Environment variables + +Buildroot also honors some environment variables, when they are passed +to +make+ or set in the environment: + +* +HOSTCXX+, the host C++ compiler to use +* +HOSTCC+, the host C compiler to use +* +UCLIBC_CONFIG_FILE=+, path to + the uClibc configuration file, used to compile uClibc, if an + internal toolchain is being built. + + + Note that the uClibc configuration file can also be set from the + configuration interface, so through the Buildroot +.config+ file; this + is the recommended way of setting it. + + +* +BUSYBOX_CONFIG_FILE=+, path to + the BusyBox configuration file. + + + Note that the BusyBox configuration file can also be set from the + configuration interface, so through the Buildroot +.config+ file; this + is the recommended way of setting it. + + +* +BR2_CCACHE_DIR+ to override the directory where + Buildroot stores the cached files when using ccache. + + +* +BR2_DL_DIR+ to override the directory in which + Buildroot stores/retrieves downloaded files. + + + Note that the Buildroot download directory can also be set from the + configuration interface, so through the Buildroot +.config+ file. See + xref:download-location[] for more details on how you can set the download + directory. +* +BR2_GRAPH_ALT+, if set and non-empty, to use an alternate color-scheme in + build-time graphs +* +BR2_GRAPH_OUT+ to set the filetype of generated graphs, either +pdf+ (the + default), or +png+. +* +BR2_GRAPH_DEPS_OPTS+ to pass extra options to the dependency graph; see + xref:graph-depends[] for the accepted options +* +BR2_GRAPH_DOT_OPTS+ is passed verbatim as options to the +dot+ utility to + draw the dependency graph. +* +BR2_GRAPH_SIZE_OPTS+ to pass extra options to the size graph; see + xref:graph-size[] for the acepted options + +An example that uses config files located in the toplevel directory and +in your $HOME: + +---- + $ make UCLIBC_CONFIG_FILE=uClibc.config BUSYBOX_CONFIG_FILE=$HOME/bb.config +---- + +If you want to use a compiler other than the default +gcc+ +or +g+++ for building helper-binaries on your host, then do + +---- + $ make HOSTCXX=g++-4.3-HEAD HOSTCC=gcc-4.3-HEAD +---- + +=== Dealing efficiently with filesystem images + +Filesystem images can get pretty big, depending on the filesystem you choose, +the number of packages, whether you provisioned free space... Yet, some +locations in the filesystems images may just be _empty_ (e.g. a long run of +'zeroes'); such a file is called a _sparse_ file. + +Most tools can handle sparse files efficiently, and will only store or write +those parts of a sparse file that are not empty. + +For example: + +* +tar+ accepts the +-S+ option to tell it to only store non-zero blocks + of sparse files: +** +tar cf archive.tar -S [files...]+ will efficiently store sparse files + in a tarball +** +tar xf archive.tar -S+ will efficiently store sparse files extracted + from a tarball + +* +cp+ accepts the +--sparse=WHEN+ option (+WHEN+ is one of +auto+, + +never+ or +always+): +** +cp --sparse=always source.file dest.file+ will make +dest.file+ a + sparse file if +source.file+ has long runs of zeroes + +Other tools may have similar options. Please consult their respective man +pages. + +You can use sparse files if you need to store the filesystem images (e.g. +to transfer from one machine to another), or if you need to send them (e.g. +to the Q&A team). + +Note however that flashing a filesystem image to a device while using the +sparse mode of +dd+ may result in a broken filesystem (e.g. the block bitmap +of an ext2 filesystem may be corrupted; or, if you have sparse files in +your filesystem, those parts may not be all-zeroes when read back). You +should only use sparse files when handling files on the build machine, not +when transferring them to an actual device that will be used on the target. + +=== Details about packages + +[[package-details]] + +Buildroot can produce a JSON blurb that describes the set of enabled +packages in the current configuration, together with their +dependencies, licenses and other metadata. This JSON blurb is produced +by using the +show-info+ make target: + +---- +make show-info +---- + +Buildroot can also produce details about packages as HTML and JSON +output using the +pkg-stats+ make target. Amongst other things, these +details include whether known CVEs (security vulnerabilities) affect +the packages in your current configuration. It also shows if there is +a newer upstream version for those packages. + +---- +make pkg-stats +---- + +=== Graphing the dependencies between packages + +[[graph-depends]] + +One of Buildroot's jobs is to know the dependencies between packages, +and make sure they are built in the right order. These dependencies +can sometimes be quite complicated, and for a given system, it is +often not easy to understand why such or such package was brought into +the build by Buildroot. + +In order to help understanding the dependencies, and therefore better +understand what is the role of the different components in your +embedded Linux system, Buildroot is capable of generating dependency +graphs. + +To generate a dependency graph of the full system you have compiled, +simply run: + +---- +make graph-depends +---- + +You will find the generated graph in ++output/graphs/graph-depends.pdf+. + +If your system is quite large, the dependency graph may be too complex +and difficult to read. It is therefore possible to generate the +dependency graph just for a given package: + +---- +make -graph-depends +---- + +You will find the generated graph in ++output/graph/-graph-depends.pdf+. + +Note that the dependency graphs are generated using the +dot+ tool +from the _Graphviz_ project, which you must have installed on your +system to use this feature. In most distributions, it is available as +the +graphviz+ package. + +By default, the dependency graphs are generated in the PDF +format. However, by passing the +BR2_GRAPH_OUT+ environment variable, you +can switch to other output formats, such as PNG, PostScript or +SVG. All formats supported by the +-T+ option of the +dot+ tool are +supported. + +---- +BR2_GRAPH_OUT=svg make graph-depends +---- + +The +graph-depends+ behaviour can be controlled by setting options in the ++BR2_GRAPH_DEPS_OPTS+ environment variable. The accepted options are: + +* +--depth N+, +-d N+, to limit the dependency depth to +N+ levels. The + default, +0+, means no limit. + +* +--stop-on PKG+, +-s PKG+, to stop the graph on the package +PKG+. + +PKG+ can be an actual package name, a glob, the keyword 'virtual' + (to stop on virtual packages), or the keyword 'host' (to stop on + host packages). The package is still present on the graph, but its + dependencies are not. + +* +--exclude PKG+, +-x PKG+, like +--stop-on+, but also omits +PKG+ from + the graph. + +* +--transitive+, +--no-transitive+, to draw (or not) the transitive + dependencies. The default is to not draw transitive dependencies. + +* +--colors R,T,H+, the comma-separated list of colors to draw the + root package (+R+), the target packages (+T+) and the host packages + (+H+). Defaults to: +lightblue,grey,gainsboro+ + +---- +BR2_GRAPH_DEPS_OPTS='-d 3 --no-transitive --colors=red,green,blue' make graph-depends +---- + +=== Graphing the build duration + +[[graph-duration]] + +When the build of a system takes a long time, it is sometimes useful +to be able to understand which packages are the longest to build, to +see if anything can be done to speed up the build. In order to help +such build time analysis, Buildroot collects the build time of each +step of each package, and allows to generate graphs from this data. + +To generate the build time graph after a build, run: + +---- +make graph-build +---- + +This will generate a set of files in +output/graphs+ : + +* +build.hist-build.pdf+, a histogram of the build time for each + package, ordered in the build order. + +* +build.hist-duration.pdf+, a histogram of the build time for each + package, ordered by duration (longest first) + +* +build.hist-name.pdf+, a histogram of the build time for each + package, order by package name. + +* +build.pie-packages.pdf+, a pie chart of the build time per package + +* +build.pie-steps.pdf+, a pie chart of the global time spent in each + step of the packages build process. + +This +graph-build+ target requires the Python Matplotlib and Numpy +libraries to be installed (+python-matplotlib+ and +python-numpy+ on +most distributions), and also the +argparse+ module if you're using a +Python version older than 2.7 (+python-argparse+ on most +distributions). + +By default, the output format for the graph is PDF, but a different +format can be selected using the +BR2_GRAPH_OUT+ environment variable. The +only other format supported is PNG: + +---- +BR2_GRAPH_OUT=png make graph-build +---- + +[[graph-size]] +=== Graphing the filesystem size contribution of packages + +When your target system grows, it is sometimes useful to understand +how much each Buildroot package is contributing to the overall root +filesystem size. To help with such an analysis, Buildroot collects +data about files installed by each package and using this data, +generates a graph and CSV files detailing the size contribution of +the different packages. + +To generate these data after a build, run: + +---- +make graph-size +---- + +This will generate: + +* +output/graphs/graph-size.pdf+, a pie chart of the contribution of + each package to the overall root filesystem size + +* +output/graphs/package-size-stats.csv+, a CSV file giving the size + contribution of each package to the overall root filesystem size + +* +output/graphs/file-size-stats.csv+, a CSV file giving the size + contribution of each installed file to the package it belongs, and + to the overall filesystem size. + +This +graph-size+ target requires the Python Matplotlib library to be +installed (+python-matplotlib+ on most distributions), and also the ++argparse+ module if you're using a Python version older than 2.7 +(+python-argparse+ on most distributions). + +Just like for the duration graph, a +BR2_GRAPH_OUT+ environment variable +is supported to adjust the output file format. See xref:graph-depends[] +for details about this environment variable. + +Additionally, one may set the environment variable +BR2_GRAPH_SIZE_OPTS+ +to further control the generated graph. Accepted options are: + +* `--size-limit X`, `-l X`, will group all packages which individual + contribution is below `X` percent, to a single entry labelled _Others_ + in the graph. By default, `X=0.01`, which means packages each + contributing less than 1% are grouped under _Others_. Accepted values + are in the range `[0.0..1.0]`. + +* `--iec`, `--binary`, `--si`, `--decimal`, to use IEC (binary, powers + of 1024) or SI (decimal, powers of 1000; the default) prefixes. + +* `--biggest-first`, to sort packages in decreasing size order, rather + than in increasing size order. + +.Note +The collected filesystem size data is only meaningful after a complete +clean rebuild. Be sure to run +make clean all+ before using +make +graph-size+. + +To compare the root filesystem size of two different Buildroot compilations, +for example after adjusting the configuration or when switching to another +Buildroot release, use the +size-stats-compare+ script. It takes two ++file-size-stats.csv+ files (produced by +make graph-size+) as input. +Refer to the help text of this script for more details: + +---- +utils/size-stats-compare -h +---- + +[[top-level-parallel-build]] +=== Top-level parallel build + +.Note +This section deals with a very experimental feature, which is known to +break even in some non-unusual situations. Use at your own risk. + +Buildroot has always been capable of using parallel build on a per +package basis: each package is built by Buildroot using +make -jN+ (or +the equivalent invocation for non-make-based build systems). The level +of parallelism is by default number of CPUs + 1, but it can be +adjusted using the +BR2_JLEVEL+ configuration option. + +Until 2020.02, Buildroot was however building packages in a serial +fashion: each package was built one after the other, without +parallelization of the build between packages. As of 2020.02, +Buildroot has experimental support for *top-level parallel build*, +which allows some signicant build time savings by building packages +that have no dependency relationship in parallel. This feature is +however marked as experimental and is known not to work in some cases. + +In order to use top-level parallel build, one must: + +. Enable the option +BR2_PER_PACKAGE_DIRECTORIES+ in the Buildroot +configuration + +. Use +make -jN+ when starting the Buildroot build + +Internally, the +BR2_PER_PACKAGE_DIRECTORIES+ will enable a mechanism +called *per-package directories*, which will have the following +effects: + +* Instead of a global _target_ directory and a global _host_ directory + common to all packages, per-package _target_ and _host_ directories + will be used, in +$(O)/per-package//target/+ and + +$(O)/per-package//host/+ respectively. Those folders will be + populated from the corresponding folders of the package dependencies + at the beginning of ++ build. The compiler and all other tools + will therefore only be able to see and access files installed by + dependencies explicitly listed by ++. + +* At the end of the build, the global _target_ and _host_ directories + will be populated, located in +$(O)/target+ and +$(O)/host+ + respectively. This means that during the build, those folders will + be empty and it's only at the very end of the build that they will + be populated. + +include::advanced.adoc[] diff --git a/docs/manual/configure-other-components.adoc b/docs/manual/configure-other-components.adoc new file mode 100644 index 00000000..60a80f0a --- /dev/null +++ b/docs/manual/configure-other-components.adoc @@ -0,0 +1,60 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== Configuration of other components + +Before attempting to modify any of the components below, make sure you +have already configured Buildroot itself, and have enabled the +corresponding package. + +BusyBox:: ++ +If you already have a BusyBox configuration file, you can directly +specify this file in the Buildroot configuration, using ++BR2_PACKAGE_BUSYBOX_CONFIG+. Otherwise, Buildroot will start from a +default BusyBox configuration file. ++ +To make subsequent changes to the configuration, use +make +busybox-menuconfig+ to open the BusyBox configuration editor. ++ +It is also possible to specify a BusyBox configuration file through an +environment variable, although this is not recommended. Refer to +xref:env-vars[] for more details. + +uClibc:: ++ +Configuration of uClibc is done in the same way as for BusyBox. The +configuration variable to specify an existing configuration file is ++BR2_UCLIBC_CONFIG+. The command to make subsequent changes is +make +uclibc-menuconfig+. + +Linux kernel:: ++ +If you already have a kernel configuration file, you can directly +specify this file in the Buildroot configuration, using ++BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG+. ++ +If you do not yet have a kernel configuration file, you can either start +by specifying a defconfig in the Buildroot configuration, using ++BR2_LINUX_KERNEL_USE_DEFCONFIG+, or start by creating an empty file and +specifying it as custom configuration file, using ++BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG+. ++ +To make subsequent changes to the configuration, use +make +linux-menuconfig+ to open the Linux configuration editor. + +Barebox:: ++ +Configuration of Barebox is done in the same way as for the Linux +kernel. The corresponding configuration variables are ++BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG+ and ++BR2_TARGET_BAREBOX_USE_DEFCONFIG+. To open the configuration editor, +use +make barebox-menuconfig+. + +U-Boot:: ++ +Configuration of U-Boot (version 2015.04 or newer) is done in the same +way as for the Linux kernel. The corresponding configuration variables +are +BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG+ and ++BR2_TARGET_UBOOT_USE_DEFCONFIG+. To open the configuration editor, +use +make uboot-menuconfig+. diff --git a/docs/manual/configure.adoc b/docs/manual/configure.adoc new file mode 100644 index 00000000..d27cdf3e --- /dev/null +++ b/docs/manual/configure.adoc @@ -0,0 +1,431 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[configure]] +== Buildroot configuration + +All the configuration options in +make *config+ have a help text +providing details about the option. + +The +make *config+ commands also offer a search tool. Read the help +message in the different frontend menus to know how to use it: + +* in _menuconfig_, the search tool is called by pressing +/+; +* in _xconfig_, the search tool is called by pressing +Ctrl+ + +f+. + +The result of the search shows the help message of the matching items. +In _menuconfig_, numbers in the left column provide a shortcut to the +corresponding entry. Just type this number to directly jump to the +entry, or to the containing menu in case the entry is not selectable due +to a missing dependency. + +Although the menu structure and the help text of the entries should be +sufficiently self-explanatory, a number of topics require additional +explanation that cannot easily be covered in the help text and are +therefore covered in the following sections. + +=== Cross-compilation toolchain + +A compilation toolchain is the set of tools that allows you to compile +code for your system. It consists of a compiler (in our case, +gcc+), +binary utils like assembler and linker (in our case, +binutils+) and a +C standard library (for example +http://www.gnu.org/software/libc/libc.html[GNU Libc], +http://www.uclibc-ng.org/[uClibc-ng]). + +The system installed on your development station certainly already has +a compilation toolchain that you can use to compile an application +that runs on your system. If you're using a PC, your compilation +toolchain runs on an x86 processor and generates code for an x86 +processor. Under most Linux systems, the compilation toolchain uses +the GNU libc (glibc) as the C standard library. This compilation +toolchain is called the "host compilation toolchain". The machine on +which it is running, and on which you're working, is called the "host +system" footnote:[This terminology differs from what is used by GNU +configure, where the host is the machine on which the application will +run (which is usually the same as target)]. + +The compilation toolchain is provided by your distribution, and +Buildroot has nothing to do with it (other than using it to build a +cross-compilation toolchain and other tools that are run on the +development host). + +As said above, the compilation toolchain that comes with your system +runs on and generates code for the processor in your host system. As +your embedded system has a different processor, you need a +cross-compilation toolchain - a compilation toolchain that runs on +your _host system_ but generates code for your _target system_ (and +target processor). For example, if your host system uses x86 and your +target system uses ARM, the regular compilation toolchain on your host +runs on x86 and generates code for x86, while the cross-compilation +toolchain runs on x86 and generates code for ARM. + +Buildroot provides two solutions for the cross-compilation toolchain: + + * The *internal toolchain backend*, called +Buildroot toolchain+ in + the configuration interface. + + * The *external toolchain backend*, called +External toolchain+ in + the configuration interface. + +The choice between these two solutions is done using the +Toolchain +Type+ option in the +Toolchain+ menu. Once one solution has been +chosen, a number of configuration options appear, they are detailed in +the following sections. + +[[internal-toolchain-backend]] +==== Internal toolchain backend + +The _internal toolchain backend_ is the backend where Buildroot builds +by itself a cross-compilation toolchain, before building the userspace +applications and libraries for your target embedded system. + +This backend supports several C libraries: +http://www.uclibc-ng.org[uClibc-ng], +http://www.gnu.org/software/libc/libc.html[glibc] and +http://www.musl-libc.org[musl]. + +Once you have selected this backend, a number of options appear. The +most important ones allow to: + + * Change the version of the Linux kernel headers used to build the + toolchain. This item deserves a few explanations. In the process of + building a cross-compilation toolchain, the C library is being + built. This library provides the interface between userspace + applications and the Linux kernel. In order to know how to "talk" + to the Linux kernel, the C library needs to have access to the + _Linux kernel headers_ (i.e. the +.h+ files from the kernel), which + define the interface between userspace and the kernel (system + calls, data structures, etc.). Since this interface is backward + compatible, the version of the Linux kernel headers used to build + your toolchain do not need to match _exactly_ the version of the + Linux kernel you intend to run on your embedded system. They only + need to have a version equal or older to the version of the Linux + kernel you intend to run. If you use kernel headers that are more + recent than the Linux kernel you run on your embedded system, then + the C library might be using interfaces that are not provided by + your Linux kernel. + + * Change the version of the GCC compiler, binutils and the C library. + + * Select a number of toolchain options (uClibc only): whether the + toolchain should have RPC support (used mainly for NFS), + wide-char support, locale support (for internationalization), + C++ support or thread support. Depending on which options you choose, + the number of userspace applications and libraries visible in + Buildroot menus will change: many applications and libraries require + certain toolchain options to be enabled. Most packages show a comment + when a certain toolchain option is required to be able to enable + those packages. If needed, you can further refine the uClibc + configuration by running +make uclibc-menuconfig+. Note however that + all packages in Buildroot are tested against the default uClibc + configuration bundled in Buildroot: if you deviate from this + configuration by removing features from uClibc, some packages may no + longer build. + +It is worth noting that whenever one of those options is modified, +then the entire toolchain and system must be rebuilt. See +xref:full-rebuild[]. + +Advantages of this backend: + +* Well integrated with Buildroot +* Fast, only builds what's necessary + +Drawbacks of this backend: + +* Rebuilding the toolchain is needed when doing +make clean+, which + takes time. If you're trying to reduce your build time, consider + using the _External toolchain backend_. + +[[external-toolchain-backend]] +==== External toolchain backend + +The _external toolchain backend_ allows to use existing pre-built +cross-compilation toolchains. Buildroot knows about a number of +well-known cross-compilation toolchains (from +http://www.linaro.org[Linaro] for ARM, +http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/[Sourcery +CodeBench] for ARM, x86-64, PowerPC, and MIPS, and is capable of +downloading them automatically, or it can be pointed to a custom +toolchain, either available for download or installed locally. + +Then, you have three solutions to use an external toolchain: + +* Use a predefined external toolchain profile, and let Buildroot + download, extract and install the toolchain. Buildroot already knows + about a few CodeSourcery and Linaro toolchains. Just select the + toolchain profile in +Toolchain+ from the available ones. This is + definitely the easiest solution. + +* Use a predefined external toolchain profile, but instead of having + Buildroot download and extract the toolchain, you can tell Buildroot + where your toolchain is already installed on your system. Just + select the toolchain profile in +Toolchain+ through the available + ones, unselect +Download toolchain automatically+, and fill the + +Toolchain path+ text entry with the path to your cross-compiling + toolchain. + +* Use a completely custom external toolchain. This is particularly + useful for toolchains generated using crosstool-NG or with Buildroot + itself. To do this, select the +Custom toolchain+ solution in the + +Toolchain+ list. You need to fill the +Toolchain path+, +Toolchain + prefix+ and +External toolchain C library+ options. Then, you have + to tell Buildroot what your external toolchain supports. If your + external toolchain uses the 'glibc' library, you only have to tell + whether your toolchain supports C\++ or not and whether it has + built-in RPC support. If your external toolchain uses the 'uClibc' + library, then you have to tell Buildroot if it supports RPC, + wide-char, locale, program invocation, threads and C++. + At the beginning of the execution, Buildroot will tell you if + the selected options do not match the toolchain configuration. + +Our external toolchain support has been tested with toolchains from +CodeSourcery and Linaro, toolchains generated by +http://crosstool-ng.org[crosstool-NG], and toolchains generated by +Buildroot itself. In general, all toolchains that support the +'sysroot' feature should work. If not, do not hesitate to contact the +developers. + +We do not support toolchains or SDK generated by OpenEmbedded or +Yocto, because these toolchains are not pure toolchains (i.e. just the +compiler, binutils, the C and C++ libraries). Instead these toolchains +come with a very large set of pre-compiled libraries and +programs. Therefore, Buildroot cannot import the 'sysroot' of the +toolchain, as it would contain hundreds of megabytes of pre-compiled +libraries that are normally built by Buildroot. + +We also do not support using the distribution toolchain (i.e. the +gcc/binutils/C library installed by your distribution) as the +toolchain to build software for the target. This is because your +distribution toolchain is not a "pure" toolchain (i.e. only with the +C/C++ library), so we cannot import it properly into the Buildroot +build environment. So even if you are building a system for a x86 or +x86_64 target, you have to generate a cross-compilation toolchain with +Buildroot or crosstool-NG. + +If you want to generate a custom toolchain for your project, that can +be used as an external toolchain in Buildroot, our recommendation is +to build it either with Buildroot itself (see +xref:build-toolchain-with-buildroot[]) or with +http://crosstool-ng.org[crosstool-NG]. + +Advantages of this backend: + +* Allows to use well-known and well-tested cross-compilation + toolchains. + +* Avoids the build time of the cross-compilation toolchain, which is + often very significant in the overall build time of an embedded + Linux system. + +Drawbacks of this backend: + +* If your pre-built external toolchain has a bug, may be hard to get a + fix from the toolchain vendor, unless you build your external + toolchain by yourself using Buildroot or Crosstool-NG. + +[[build-toolchain-with-buildroot]] +==== Build an external toolchain with Buildroot + +The Buildroot internal toolchain option can be used to create an +external toolchain. Here are a series of steps to build an internal +toolchain and package it up for reuse by Buildroot itself (or other +projects). + +Create a new Buildroot configuration, with the following details: + +* Select the appropriate *Target options* for your target CPU + architecture + +* In the *Toolchain* menu, keep the default of *Buildroot toolchain* + for *Toolchain type*, and configure your toolchain as desired + +* In the *System configuration* menu, select *None* as the *Init + system* and *none* as */bin/sh* + +* In the *Target packages* menu, disable *BusyBox* + +* In the *Filesystem images* menu, disable *tar the root filesystem* + +Then, we can trigger the build, and also ask Buildroot to generate a +SDK. This will conveniently generate for us a tarball which contains +our toolchain: + +---- +make sdk +---- + +This produces the SDK tarball in +$(O)/images+, with a name similar to ++arm-buildroot-linux-uclibcgnueabi_sdk-buildroot.tar.gz+. Save this +tarball, as it is now the toolchain that you can re-use as an external +toolchain in other Buildroot projects. + +In those other Buildroot projects, in the *Toolchain* menu: + +* Set *Toolchain type* to *External toolchain* + +* Set *Toolchain* to *Custom toolchain* + +* Set *Toolchain origin* to *Toolchain to be downloaded and installed* + +* Set *Toolchain URL* to +file:///path/to/your/sdk/tarball.tar.gz+ + +===== External toolchain wrapper + +When using an external toolchain, Buildroot generates a wrapper program, +that transparently passes the appropriate options (according to the +configuration) to the external toolchain programs. In case you need to +debug this wrapper to check exactly what arguments are passed, you can +set the environment variable +BR2_DEBUG_WRAPPER+ to either one of: + +* +0+, empty or not set: no debug + +* +1+: trace all arguments on a single line + +* +2+: trace one argument per line + +=== /dev management + +On a Linux system, the +/dev+ directory contains special files, called +_device files_, that allow userspace applications to access the +hardware devices managed by the Linux kernel. Without these _device +files_, your userspace applications would not be able to use the +hardware devices, even if they are properly recognized by the Linux +kernel. + +Under +System configuration+, +/dev management+, Buildroot offers four +different solutions to handle the +/dev+ directory : + + * The first solution is *Static using device table*. This is the old + classical way of handling device files in Linux. With this method, + the device files are persistently stored in the root filesystem + (i.e. they persist across reboots), and there is nothing that will + automatically create and remove those device files when hardware + devices are added or removed from the system. Buildroot therefore + creates a standard set of device files using a _device table_, the + default one being stored in +system/device_table_dev.txt+ in the + Buildroot source code. This file is processed when Buildroot + generates the final root filesystem image, and the _device files_ + are therefore not visible in the +output/target+ directory. The + +BR2_ROOTFS_STATIC_DEVICE_TABLE+ option allows to change the + default device table used by Buildroot, or to add an additional + device table, so that additional _device files_ are created by + Buildroot during the build. So, if you use this method, and a + _device file_ is missing in your system, you can for example create + a +board///device_table_dev.txt+ file + that contains the description of your additional _device files_, + and then you can set +BR2_ROOTFS_STATIC_DEVICE_TABLE+ to + +system/device_table_dev.txt + board///device_table_dev.txt+. For more + details about the format of the device table file, see + xref:makedev-syntax[]. + + * The second solution is *Dynamic using devtmpfs only*. _devtmpfs_ is + a virtual filesystem inside the Linux kernel that has been + introduced in kernel 2.6.32 (if you use an older kernel, it is not + possible to use this option). When mounted in +/dev+, this virtual + filesystem will automatically make _device files_ appear and + disappear as hardware devices are added and removed from the + system. This filesystem is not persistent across reboots: it is + filled dynamically by the kernel. Using _devtmpfs_ requires the + following kernel configuration options to be enabled: + +CONFIG_DEVTMPFS+ and +CONFIG_DEVTMPFS_MOUNT+. When Buildroot is in + charge of building the Linux kernel for your embedded device, it + makes sure that those two options are enabled. However, if you + build your Linux kernel outside of Buildroot, then it is your + responsibility to enable those two options (if you fail to do so, + your Buildroot system will not boot). + + * The third solution is *Dynamic using devtmpfs + mdev*. This method + also relies on the _devtmpfs_ virtual filesystem detailed above (so + the requirement to have +CONFIG_DEVTMPFS+ and + +CONFIG_DEVTMPFS_MOUNT+ enabled in the kernel configuration still + apply), but adds the +mdev+ userspace utility on top of it. +mdev+ + is a program part of BusyBox that the kernel will call every time a + device is added or removed. Thanks to the +/etc/mdev.conf+ + configuration file, +mdev+ can be configured to for example, set + specific permissions or ownership on a device file, call a script + or application whenever a device appears or disappear, + etc. Basically, it allows _userspace_ to react on device addition + and removal events. +mdev+ can for example be used to automatically + load kernel modules when devices appear on the system. +mdev+ is + also important if you have devices that require a firmware, as it + will be responsible for pushing the firmware contents to the + kernel. +mdev+ is a lightweight implementation (with fewer + features) of +udev+. For more details about +mdev+ and the syntax + of its configuration file, see + http://git.busybox.net/busybox/tree/docs/mdev.txt. + + * The fourth solution is *Dynamic using devtmpfs + eudev*. This + method also relies on the _devtmpfs_ virtual filesystem detailed + above, but adds the +eudev+ userspace daemon on top of it. +eudev+ + is a daemon that runs in the background, and gets called by the + kernel when a device gets added or removed from the system. It is a + more heavyweight solution than +mdev+, but provides higher + flexibility. +eudev+ is a standalone version of +udev+, the + original userspace daemon used in most desktop Linux distributions, + which is now part of Systemd. For more details, see + http://en.wikipedia.org/wiki/Udev. + +The Buildroot developers recommendation is to start with the *Dynamic +using devtmpfs only* solution, until you have the need for userspace +to be notified when devices are added/removed, or if firmwares are +needed, in which case *Dynamic using devtmpfs + mdev* is usually a +good solution. + +Note that if +systemd+ is chosen as init system, /dev management will +be performed by the +udev+ program provided by +systemd+. + +[[init-system]] +=== init system + +The _init_ program is the first userspace program started by the +kernel (it carries the PID number 1), and is responsible for starting +the userspace services and programs (for example: web server, +graphical applications, other network servers, etc.). + +Buildroot allows to use three different types of init systems, which +can be chosen from +System configuration+, +Init system+: + + * The first solution is *BusyBox*. Amongst many programs, BusyBox has + an implementation of a basic +init+ program, which is sufficient + for most embedded systems. Enabling the +BR2_INIT_BUSYBOX+ will + ensure BusyBox will build and install its +init+ program. This is + the default solution in Buildroot. The BusyBox +init+ program will + read the +/etc/inittab+ file at boot to know what to do. The syntax + of this file can be found in + http://git.busybox.net/busybox/tree/examples/inittab (note that + BusyBox +inittab+ syntax is special: do not use a random +inittab+ + documentation from the Internet to learn about BusyBox + +inittab+). The default +inittab+ in Buildroot is stored in + +system/skeleton/etc/inittab+. Apart from mounting a few important + filesystems, the main job the default inittab does is to start the + +/etc/init.d/rcS+ shell script, and start a +getty+ program (which + provides a login prompt). + + * The second solution is *systemV*. This solution uses the old + traditional _sysvinit_ program, packed in Buildroot in + +package/sysvinit+. This was the solution used in most desktop + Linux distributions, until they switched to more recent + alternatives such as Upstart or Systemd. +sysvinit+ also works with + an +inittab+ file (which has a slightly different syntax than the + one from BusyBox). The default +inittab+ installed with this init + solution is located in +package/sysvinit/inittab+. + + * The third solution is *systemd*. +systemd+ is the new generation + init system for Linux. It does far more than traditional _init_ + programs: aggressive parallelization capabilities, uses socket and + D-Bus activation for starting services, offers on-demand starting + of daemons, keeps track of processes using Linux control groups, + supports snapshotting and restoring of the system state, + etc. +systemd+ will be useful on relatively complex embedded + systems, for example the ones requiring D-Bus and services + communicating between each other. It is worth noting that +systemd+ + brings a fairly big number of large dependencies: +dbus+, +udev+ + and more. For more details about +systemd+, see + http://www.freedesktop.org/wiki/Software/systemd. + +The solution recommended by Buildroot developers is to use the +*BusyBox init* as it is sufficient for most embedded +systems. *systemd* can be used for more complex situations. diff --git a/docs/manual/contribute.adoc b/docs/manual/contribute.adoc new file mode 100644 index 00000000..ffaff6f8 --- /dev/null +++ b/docs/manual/contribute.adoc @@ -0,0 +1,752 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== Contributing to Buildroot + +There are many ways in which you can contribute to Buildroot: analyzing +and fixing bugs, analyzing and fixing package build failures detected by +the autobuilders, testing and reviewing patches sent by other +developers, working on the items in our TODO list and sending your own +improvements to Buildroot or its manual. The following sections give a +little more detail on each of these items. + +If you are interested in contributing to Buildroot, the first thing you +should do is to subscribe to the Buildroot mailing list. This list is +the main way of interacting with other Buildroot developers and to send +contributions to. If you aren't subscribed yet, then refer to +xref:community-resources[] for the subscription link. + +If you are going to touch the code, it is highly recommended to use a +git repository of Buildroot, rather than starting from an extracted +source code tarball. Git is the easiest way to develop from and directly +send your patches to the mailing list. Refer to xref:getting-buildroot[] +for more information on obtaining a Buildroot git tree. + +=== Reproducing, analyzing and fixing bugs + +A first way of contributing is to have a look at the open bug reports in +the https://gitlab.com/buildroot.org/buildroot/-/issues[Buildroot bug +tracker]. As we strive to keep the bug count as small as possible, all +help in reproducing, analyzing and fixing reported bugs is more than +welcome. Don't hesitate to add a comment to bug reports reporting your +findings, even if you don't yet see the full picture. + +=== Analyzing and fixing autobuild failures + +The Buildroot autobuilders are a set of build machines that continuously +run Buildroot builds based on random configurations. This is done for +all architectures supported by Buildroot, with various toolchains, and +with a random selection of packages. With the large commit activity on +Buildroot, these autobuilders are a great help in detecting problems +very early after commit. + +All build results are available at http://autobuild.buildroot.org[], +statistics are at http://autobuild.buildroot.org/stats.php[]. Every day, +an overview of all failed packages is sent to the mailing list. + +Detecting problems is great, but obviously these problems have to be +fixed as well. Your contribution is very welcome here! There are +basically two things that can be done: + +- Analyzing the problems. The daily summary mails do not contain details + about the actual failures: in order to see what's going on you have to + open the build log and check the last output. Having someone doing + this for all packages in the mail is very useful for other developers, + as they can make a quick initial analysis based on this output alone. + +- Fixing a problem. When fixing autobuild failures, you should follow + these steps: + . Check if you can reproduce the problem by building with the same + configuration. You can do this manually, or use the + http://git.buildroot.org/buildroot-test/tree/utils/br-reproduce-build[br-reproduce-build] + script that will automatically clone a Buildroot git repository, + checkout the correct revision, download and set the right + configuration, and start the build. + . Analyze the problem and create a fix. + . Verify that the problem is really fixed by starting from a clean + Buildroot tree and only applying your fix. + . Send the fix to the Buildroot mailing list (see + xref:submitting-patches[]). In case you created a patch against the + package sources, you should also send the patch upstream so that the + problem will be fixed in a later release, and the patch in Buildroot + can be removed. + In the commit message of a patch fixing an autobuild failure, add a + reference to the build result directory, as follows: +---- +Fixes: http://autobuild.buildroot.org/results/51000a9d4656afe9e0ea6f07b9f8ed374c2e4069 +---- + +=== Reviewing and testing patches + +With the amount of patches sent to the mailing list each day, the +maintainer has a very hard job to judge which patches are ready to apply +and which ones aren't. Contributors can greatly help here by reviewing +and testing these patches. + +In the review process, do not hesitate to respond to patch submissions +for remarks, suggestions or anything that will help everyone to +understand the patches and make them better. Please use internet +style replies in plain text emails when responding to patch +submissions. + +To indicate approval of a patch, there are three formal tags that keep +track of this approval. To add your tag to a patch, reply to it with the +approval tag below the original author's Signed-off-by line. These tags +will be picked up automatically by patchwork (see +xref:apply-patches-patchwork[]) and will be part of the commit log when +the patch is accepted. + +Tested-by:: Indicates that the patch has been tested successfully. + You are encouraged to specify what kind of testing you performed + (compile-test on architecture X and Y, runtime test on target A, + ...). This additional information helps other testers and the + maintainer. + +Reviewed-by:: Indicates that you code-reviewed the patch and did your + best in spotting problems, but you are not sufficiently familiar with + the area touched to provide an Acked-by tag. This means that there + may be remaining problems in the patch that would be spotted by + someone with more experience in that area. Should such problems be + detected, your Reviewed-by tag remains appropriate and you cannot + be blamed. + +Acked-by:: Indicates that you code-reviewed the patch and you are + familiar enough with the area touched to feel that the patch can be + committed as-is (no additional changes required). In case it later + turns out that something is wrong with the patch, your Acked-by could + be considered inappropriate. The difference between Acked-by and + Reviewed-by is thus mainly that you are prepared to take the blame on + Acked patches, but not on Reviewed ones. + +If you reviewed a patch and have comments on it, you should simply reply +to the patch stating these comments, without providing a Reviewed-by or +Acked-by tag. These tags should only be provided if you judge the patch +to be good as it is. + +It is important to note that neither Reviewed-by nor Acked-by imply +that testing has been performed. To indicate that you both reviewed and +tested the patch, provide two separate tags (Reviewed/Acked-by and +Tested-by). + +Note also that _any developer_ can provide Tested/Reviewed/Acked-by +tags, without exception, and we encourage everyone to do this. Buildroot +does not have a defined group of _core_ developers, it just so happens +that some developers are more active than others. The maintainer will +value tags according to the track record of their submitter. Tags +provided by a regular contributor will naturally be trusted more than +tags provided by a newcomer. As you provide tags more regularly, your +'trustworthiness' (in the eyes of the maintainer) will go up, but _any_ +tag provided is valuable. + +Buildroot's Patchwork website can be used to pull in patches for testing +purposes. Please see xref:apply-patches-patchwork[] for more +information on using Buildroot's Patchwork website to apply patches. + +[[apply-patches-patchwork]] +==== Applying Patches from Patchwork + +The main use of Buildroot's Patchwork website for a developer is for +pulling in patches into their local git repository for testing +purposes. + +When browsing patches in the patchwork management interface, an +mbox+ +link is provided at the top of the page. Copy this link address and +run the following commands: + +---- +$ git checkout -b +$ wget -O - | git am +---- + +Another option for applying patches is to create a bundle. A bundle is +a set of patches that you can group together using the patchwork +interface. Once the bundle is created and the bundle is made public, +you can copy the +mbox+ link for the bundle and apply the bundle +using the above commands. + + +=== Work on items from the TODO list + +If you want to contribute to Buildroot but don't know where to start, +and you don't like any of the above topics, you can always work on items +from the http://elinux.org/Buildroot#Todo_list[Buildroot TODO list]. +Don't hesitate to discuss an item first on the mailing list or on IRC. +Do edit the wiki to indicate when you start working on an item, so we +avoid duplicate efforts. + +[[submitting-patches]] +=== Submitting patches + +[NOTE] +_Please, do not attach patches to bugs, send them to the mailing list +instead_. + +If you made some changes to Buildroot and you would like to contribute +them to the Buildroot project, proceed as follows. + +==== The formatting of a patch + +We expect patches to be formatted in a specific way. This is necessary +to make it easy to review patches, to be able to apply them easily to +the git repository, to make it easy to find back in the history how +and why things have changed, and to make it possible to use +git +bisect+ to locate the origin of a problem. + +First of all, it is essential that the patch has a good commit +message. The commit message should start with a separate line with a +brief summary of the change, prefixed by the area touched by the +patch. A few examples of good commit titles: + +* +package/linuxptp: bump version to 2.0+ + +* +configs/imx23evk: bump Linux version to 4.19+ + +* +package/pkg-generic: postpone evaluation of dependency conditions+ + +* +boot/uboot: needs host-{flex,bison}+ + +* +support/testing: add python-ubjson tests+ + +The description that follows the prefix should start with a lower case +letter (i.e "bump", "needs", "postpone", "add" in the above examples). + +Second, the body of the commit message should describe _why_ this +change is needed, and if necessary also give details about _how_ it +was done. When writing the commit message, think of how the reviewers +will read it, but also think about how you will read it when you look +at this change again a few years down the line. + +Third, the patch itself should do only one change, but do it +completely. Two unrelated or weakly related changes should usually be +done in two separate patches. This usually means that a patch affects +only a single package. If several changes are related, it is often +still possible to split them up in small patches and apply them in a +specific order. Small patches make it easier to review, and often +make it easier to understand afterwards why a change was done. +However, each patch must be complete. It is not allowed that the +build is broken when only the first but not the second patch is +applied. This is necessary to be able to use +git bisect+ afterwards. + +Of course, while you're doing your development, you're probably going +back and forth between packages, and certainly not committing things +immediately in a way that is clean enough for submission. So most +developers rewrite the history of commits to produce a clean set of +commits that is appropriate for submission. To do this, you need to +use _interactive rebasing_. You can learn about it +https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History[in the Pro +Git book]. Sometimes, it is even easier to discard you history with ++git reset --soft origin/master+ and select individual changes with ++git add -i+ or +git add -p+. + +Finally, the patch should be signed off. This is done by adding ++Signed-off-by: Your Real Name + at the end of the +commit message. +git commit -s+ does that for you, if configured +properly. The +Signed-off-by+ tag means that you publish the patch +under the Buildroot license (i.e. GPL-2.0+, except for package patches, +which have the upstream license), and that you are allowed to do so. +See http://developercertificate.org/[the Developer Certificate of +Origin] for details. + +To give credits to who sponsored the creation of a patch or the process of +upstreaming it, you may use +https://datatracker.ietf.org/doc/html/rfc5233[email subaddressing] for +your git identity (i.e. what is used as commit author and email +From:+ +field, as well as your Signed-off-by tag); add suffix to the local part, +separated from it by a plus `+` sign. E.g.: + +* for a company which sponsored the submitted work, use the company name + as the detail (suffix) part: ++ +`Your-Name Your-Surname ` + +* for an individual who sponsored the submitted work, use + their name and surname: ++ +`Your-Name Your-Surname ` + +Alternatively, especially if your email server does not support +subaddressing, you can include the sponsor in your author name in +parentheses, e.g. "Your Name (Sponsor Name)". + +When adding new packages, you should submit every package in a +separate patch. This patch should have the update to ++package/Config.in+, the package +Config.in+ file, the +.mk+ file, the ++.hash+ file, any init script, and all package patches. If the package +has many sub-options, these are sometimes better added as separate +follow-up patches. The summary line should be something like ++: new package+. The body of the commit message can be +empty for simple packages, or it can contain the description of the +package (like the Config.in help text). If anything special has to be +done to build the package, this should also be explained explicitly in +the commit message body. + +When you bump a package to a new version, you should also submit a +separate patch for each package. Don't forget to update the +.hash+ +file, or add it if it doesn't exist yet. Also don't forget to check if +the +_LICENSE+ and +_LICENSE_FILES+ are still valid. The summary line +should be something like +: bump to version +. If the new version only contains security updates compared +to the existing one, the summary should be +: security +bump to version + and the commit message body should show +the CVE numbers that are fixed. If some package patches can be removed +in the new version, it should be explained explicitly why they can be +removed, preferably with the upstream commit ID. Also any other +required changes should be explained explicitly, like configure +options that no longer exist or are no longer needed. + +If you are interested in getting notified of build failures and of +further changes in the packages you added or modified, please add +yourself to the DEVELOPERS file. This should be done in the same patch +creating or modifying the package. See xref:DEVELOPERS[the DEVELOPERS file] +for more information. + +Buildroot provides a handy tool to check for common coding style +mistakes on files you created or modified, called +check-package+ (see +xref:check-package[] for more information). + +==== Preparing a patch series + +Starting from the changes committed in your local git view, _rebase_ +your development branch on top of the upstream tree before generating +a patch set. To do so, run: + +---- +$ git fetch --all --tags +$ git rebase origin/master +---- + +Now check the coding style for the changes you committed: + +---- +$ utils/docker-run make check-package +---- + +Now, you are ready to generate then submit your patch set. + +To generate it, run: + +---- +$ git format-patch -M -n -s -o outgoing origin/master +---- + +This will generate patch files in the +outgoing+ subdirectory, +automatically adding the +Signed-off-by+ line. + +Once patch files are generated, you can review/edit the commit message +before submitting them, using your favorite text editor. + +Buildroot provides a handy tool to know to whom your patches should be +sent, called +get-developers+ (see xref:DEVELOPERS[] for more +information). This tool reads your patches and outputs the appropriate ++git send-email+ command to use: + +---- +$ ./utils/get-developers outgoing/* +---- + +Use the output of +get-developers+ to send your patches: + +---- +$ git send-email --to buildroot@buildroot.org --cc bob --cc alice outgoing/* +---- + +Alternatively, +get-developers -e+ can be used directly with the ++--cc-cmd+ argument to +git send-email+ to automatically CC the +affected developers: + +---- +$ git send-email --to buildroot@buildroot.org \ + --cc-cmd './utils/get-developers -e' origin/master +---- + ++git+ can be configured to automatically do this out of the box with: + +---- +$ git config sendemail.to buildroot@buildroot.org +$ git config sendemail.ccCmd "$(pwd)/utils/get-developers -e" +---- + +And then just do: + +---- +$ git send-email origin/master +---- + +Note that +git+ should be configured to use your mail account. +To configure +git+, see +man git-send-email+ or https://git-send-email.io/. + +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+. + +https://sr.ht also has a light-weight UI for +https://man.sr.ht/git.sr.ht/#sending-patches-upstream[preparing patchseries] +and can also send out the patches for you. There are a few drawbacks to +this, as you cannot edit your patches' status in Patchwork and you +currently can't edit your display name with which the match emails are +sent out but it is an option if you cannot get git send-email to work +with your mail provider (i.e. O365); it shall not be considered the +official way of sending patches, but just a fallback. + +==== Cover letter + +If you want to present the whole patch set in a separate mail, add ++--cover-letter+ to the +git format-patch+ command (see +man +git-format-patch+ for further information). This will generate a +template for an introduction e-mail to your patch series. + +A 'cover letter' may be useful to introduce the changes you propose +in the following cases: + +* large number of commits in the series; + +* deep impact of the changes in the rest of the project; + +* RFC footnote:[RFC: (Request for comments) change proposal]; + +* whenever you feel it will help presenting your work, your choices, + the review process, etc. + +==== Patches for maintenance branches + +When fixing bugs on a maintenance branch, bugs should be fixed on the +master branch first. The commit log for such a patch may then contain a +post-commit note specifying what branches are affected: + +---- +package/foo: fix stuff + +Signed-off-by: Your Real Name +--- +Backport to: 2020.02.x, 2020.05.x +(2020.08.x not affected as the version was bumped) +---- + +Those changes will then be backported by a maintainer to the affected +branches. + +However, some bugs may apply only to a specific release, for example +because it is using an older version of a package. In that case, patches +should be based off the maintenance branch, and the patch subject prefix +must include the maintenance branch name (for example "[PATCH 2020.02.x]"). +This can be done with the +git format-patch+ flag +--subject-prefix+: + +---- +$ git format-patch --subject-prefix "PATCH 2020.02.x" \ + -M -s -o outgoing origin/2020.02.x +---- + +Then send the patches with +git send-email+, as described above. + +==== Patch revision changelog + +When improvements are requested, the new revision of each commit +should include a changelog of the modifications between each +submission. Note that when your patch series is introduced by a cover +letter, an overall changelog may be added to the cover letter in +addition to the changelog in the individual commits. +The best thing to rework a patch series is by interactive rebasing: ++git rebase -i origin/master+. Consult the git manual for more +information. + +When added to the individual commits, this changelog is added when +editing the commit message. Below the +Signed-off-by+ section, add ++---+ and your changelog. + +Although the changelog will be visible for the reviewers in the mail +thread, as well as in +https://patchwork.ozlabs.org/project/buildroot/list/[patchwork], +git+ +will automatically ignores lines below +---+ when the patch will be +merged. This is the intended behavior: the changelog is not meant to +be preserved forever in the +git+ history of the project. + +Hereafter the recommended layout: + +---- +Patch title: short explanation, max 72 chars + +A paragraph that explains the problem, and how it manifests itself. If +the problem is complex, it is OK to add more paragraphs. All paragraphs +should be wrapped at 72 characters. + +A paragraph that explains the root cause of the problem. Again, more +than one paragraph is OK. + +Finally, one or more paragraphs that explain how the problem is solved. +Don't hesitate to explain complex solutions in detail. + +Signed-off-by: John DOE + +--- +Changes v2 -> v3: + - foo bar (suggested by Jane) + - bar buz + +Changes v1 -> v2: + - alpha bravo (suggested by John) + - charly delta +---- + +Any patch revision should include the version number. The version number +is simply composed of the letter +v+ followed by an +integer+ greater or +equal to two (i.e. "PATCH v2", "PATCH v3" ...). + +This can be easily handled with +git format-patch+ by using the option ++--subject-prefix+: + +---- +$ git format-patch --subject-prefix "PATCH v4" \ + -M -s -o outgoing origin/master +---- + +Since git version 1.8.1, you can also use +-v + (where is the +version number): + +---- +$ git format-patch -v4 -M -s -o outgoing origin/master +---- + +When you provide a new version of a patch, please mark the old one as +superseded in +https://patchwork.ozlabs.org/project/buildroot/list/[patchwork]. You +need to create an account on +https://patchwork.ozlabs.org/project/buildroot/list/[patchwork] to be +able to modify the status of your patches. Note that you can only change +the status of patches you submitted yourself, which means the email +address you register in +https://patchwork.ozlabs.org/project/buildroot/list/[patchwork] should +match the one you use for sending patches to the mailing list. + +You can also add the +--in-reply-to=+ option when +submitting a patch to the mailing list. The id of the mail to reply to +can be found under the "Message Id" tag on +https://patchwork.ozlabs.org/project/buildroot/list/[patchwork]. The +advantage of *in-reply-to* is that patchwork will automatically mark +the previous version of the patch as superseded. + +[[reporting-bugs]] +=== Reporting issues/bugs or getting help + +Before reporting any issue, please check in +xref:community-resources[the mailing list archive] whether someone has +already reported and/or fixed a similar problem. + +However you choose to report bugs or get help, either by +opening a bug in the xref:community-resources[bug tracker] or by +xref:community-resources[sending a mail to the mailing list], there are +a number of details to provide in order to help people reproduce and +find a solution to the issue. + +Try to think as if you were trying to help someone else; in +that case, what would you need? + +Here is a short list of details to provide in such case: + +* host machine (OS/release) +* version of Buildroot +* target for which the build fails +* package(s) for which the build fails +* the command that fails and its output +* any information you think that may be relevant + +Additionally, you should add the +.config+ file (or if you know how, a ++defconfig+; see xref:customize-store-buildroot-config[]). + +If some of these details are too large, do not hesitate to use a +pastebin service. Note that not all available pastebin services will +preserve Unix-style line terminators when downloading raw pastes. +Following pastebin services are known to work correctly: +- https://gist.github.com/ +- http://code.bulix.org/ + +=== Using the runtime tests framework + +Buildroot includes a run-time testing framework built upon Python +scripting and QEMU runtime execution. The goals of the framework are +the following: + +* build a well defined Buildroot configuration +* optionally, verify some properties of the build output +* optionally, boot the build results under Qemu, and verify that a + given feature is working as expected + +The entry point to use the runtime tests framework is the ++support/testing/run-tests+ tool, which has a series of options +documented in the tool's help '-h' description. Some common options +include setting the download folder, the output folder, keeping build +output, and for multiple test cases, you can set the JLEVEL for each. + +Here is an example walk through of running a test case. + +* For a first step, let us see what all the test case options are. The test +cases can be listed by executing +support/testing/run-tests -l+. These tests +can all be run individually during test development from the console. Both +one at a time and selectively as a group of a subset of tests. + +---- +$ support/testing/run-tests -l +List of tests +test_run (tests.utils.test_check_package.TestCheckPackage) +test_run (tests.toolchain.test_external.TestExternalToolchainBuildrootMusl) ... ok +test_run (tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc) ... ok +test_run (tests.toolchain.test_external.TestExternalToolchainCCache) ... ok +test_run (tests.toolchain.test_external.TestExternalToolchainCtngMusl) ... ok +test_run (tests.toolchain.test_external.TestExternalToolchainLinaroArm) ... ok +test_run (tests.toolchain.test_external.TestExternalToolchainSourceryArmv4) ... ok +test_run (tests.toolchain.test_external.TestExternalToolchainSourceryArmv5) ... ok +test_run (tests.toolchain.test_external.TestExternalToolchainSourceryArmv7) ... ok +[snip] +test_run (tests.init.test_systemd.TestInitSystemSystemdRoFull) ... ok +test_run (tests.init.test_systemd.TestInitSystemSystemdRoIfupdown) ... ok +test_run (tests.init.test_systemd.TestInitSystemSystemdRoNetworkd) ... ok +test_run (tests.init.test_systemd.TestInitSystemSystemdRwFull) ... ok +test_run (tests.init.test_systemd.TestInitSystemSystemdRwIfupdown) ... ok +test_run (tests.init.test_systemd.TestInitSystemSystemdRwNetworkd) ... ok +test_run (tests.init.test_busybox.TestInitSystemBusyboxRo) ... ok +test_run (tests.init.test_busybox.TestInitSystemBusyboxRoNet) ... ok +test_run (tests.init.test_busybox.TestInitSystemBusyboxRw) ... ok +test_run (tests.init.test_busybox.TestInitSystemBusyboxRwNet) ... ok + +Ran 157 tests in 0.021s + +OK +---- + +* Then, to run one test case: + +---- +$ support/testing/run-tests -d dl -o output_folder -k tests.init.test_busybox.TestInitSystemBusyboxRw +15:03:26 TestInitSystemBusyboxRw Starting +15:03:28 TestInitSystemBusyboxRw Building +15:08:18 TestInitSystemBusyboxRw Building done +15:08:27 TestInitSystemBusyboxRw Cleaning up +. +Ran 1 test in 301.140s + +OK +---- + +The standard output indicates if the test is successful or not. By +default, the output folder for the test is deleted automatically +unless the option +-k+ is passed to *keep* the output directory. + +==== Creating a test case + +Within the Buildroot repository, the testing framework is organized at the +top level in +support/testing/+ by folders of +conf+, +infra+ and +tests+. +All the test cases live under the +tests+ folder and are organized in various +folders representing the category of test. + +The best way to get familiar with how to create a test case is to look +at a few of the basic file system +support/testing/tests/fs/+ and init ++support/testing/tests/init/+ test scripts. Those tests give good +examples of a basic tests that include both checking the build +results, and doing runtime tests. There are other more advanced cases +that use things like nested +br2-external+ folders to provide +skeletons and additional packages. + +Creating a basic test case involves: + +* Defining a test class that inherits from +infra.basetest.BRTest+ + +* Defining the +config+ member of the test class, to the Buildroot + configuration to build for this test case. It can optionally rely on + configuration snippets provided by the runtime test infrastructure: + +infra.basetest.BASIC_TOOLCHAIN_CONFIG+ to get a basic + architecture/toolchain configuration, and + +infra.basetest.MINIMAL_CONFIG+ to not build any filesystem. The + advantage of using +infra.basetest.BASIC_TOOLCHAIN_CONFIG+ is that a + matching Linux kernel image is provided, which allows to boot the + resulting image in Qemu without having to build a Linux kernel image + as part of the test case, therefore significant decreasing the build + time required for the test case. + +* Implementing a +def test_run(self):+ function to implement the + actual tests to run after the build has completed. They may be tests + that verify the build output, by running command on the host using + the +run_cmd_on_host()+ helper function. Or they may boot the + generated system in Qemu using the +Emulator+ object available as + +self.emulator+ in the test case. For example +self.emulator.boot()+ + allows to boot the system in Qemu, +self.emulator.login()+ allows to + login, +self.emulator.run()+ allows to run shell commands inside + Qemu. + +After creating the test script, add yourself to the +DEVELOPERS+ file to +be the maintainer of that test case. + +==== Debugging a test case + +When a test case runs, the +output_folder+ will contain the following: + +---- +$ ls output_folder/ +TestInitSystemBusyboxRw/ +TestInitSystemBusyboxRw-build.log +TestInitSystemBusyboxRw-run.log +---- + ++TestInitSystemBusyboxRw/+ is the Buildroot output directory, and it +is preserved only if the +-k+ option is passed. + ++TestInitSystemBusyboxRw-build.log+ is the log of the Buildroot build. + ++TestInitSystemBusyboxRw-run.log+ is the log of the Qemu boot and +test. This file will only exist if the build was successful and the +test case involves booting under Qemu. + +If you want to manually run Qemu to do manual tests of the build +result, the first few lines of +TestInitSystemBusyboxRw-run.log+ +contain the Qemu command line to use. + +You can also make modifications to the current sources inside the ++output_folder+ (e.g. for debug purposes) and rerun the standard +Buildroot make targets (in order to regenerate the complete image with +the new modifications) and then rerun the test. + +==== Runtime tests and Gitlab CI + +All runtime tests are regularly executed by Buildroot Gitlab CI +infrastructure, see .gitlab.yml and +https://gitlab.com/buildroot.org/buildroot/-/jobs. + +You can also use Gitlab CI to test your new test cases, or verify that +existing tests continue to work after making changes in Buildroot. + +In order to achieve this, you need to create a fork of the Buildroot +project on Gitlab, and be able to push branches to your Buildroot fork +on Gitlab. + +The name of the branch that you push will determine if a Gitlab CI +pipeline will be triggered or not, and for which test cases. + +In the examples below, the component of the branch name is an +arbitrary string you choose. + +* To trigger all run-test test case jobs, push a branch that ends with + +-runtime-tests+: + +---- + $ git push gitlab HEAD:-runtime-tests +---- + +* To trigger one or several test case jobs, push a branch that ends + with the complete test case name + (+tests.init.test_busybox.TestInitSystemBusyboxRo+) or with the name + of a category of tests (+tests.init.test_busybox+): + +---- + $ git push gitlab HEAD:- +---- + +Example to run one test: + +---- + $ git push gitlab HEAD:foo-tests.init.test_busybox.TestInitSystemBusyboxRo +---- + +Examples to run several tests part of the same group: + +---- + $ git push gitlab HEAD:foo-tests.init.test_busybox + $ git push gitlab HEAD:foo-tests.init +---- diff --git a/docs/manual/customize-configuration.adoc b/docs/manual/customize-configuration.adoc new file mode 100644 index 00000000..fa8f4546 --- /dev/null +++ b/docs/manual/customize-configuration.adoc @@ -0,0 +1,64 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[customize-store-buildroot-config]] +=== Storing the Buildroot configuration + +The Buildroot configuration can be stored using the command + +make savedefconfig+. + +This strips the Buildroot configuration down by removing configuration +options that are at their default value. The result is stored in a file +called +defconfig+. If you want to save it in another place, change the ++BR2_DEFCONFIG+ option in the Buildroot configuration itself, or call +make with +make savedefconfig BR2_DEFCONFIG=+. + +The recommended place to store this defconfig is ++configs/_defconfig+. If you follow this recommendation, the +configuration will be listed in +make list-defconfigs+ and can be set +again by running +make _defconfig+. + +Alternatively, you can copy the file to any other place and rebuild with ++make defconfig BR2_DEFCONFIG=+. + +[[customize-store-package-config]] +=== Storing the configuration of other components + +The configuration files for BusyBox, the Linux kernel, Barebox, U-Boot +and uClibc should be stored as well if changed. For each of these +components, a Buildroot configuration option exists to point to an input +configuration file, e.g. +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE+. To store +their configuration, set these configuration options to a path where you +want to save the configuration files, and then use the helper targets +described below to actually store the configuration. + +As explained in xref:customize-dir-structure[], the recommended path to +store these configuration files is ++board///foo.config+. + +Make sure that you create a configuration file 'before' changing +the +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE+ etc. options. Otherwise, +Buildroot will try to access this config file, which doesn't exist +yet, and will fail. You can create the configuration file by running ++make linux-menuconfig+ etc. + +Buildroot provides a few helper targets to make the saving of +configuration files easier. + +* +make linux-update-defconfig+ saves the linux configuration to the + path specified by +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE+. It + simplifies the config file by removing default values. However, + this only works with kernels starting from 2.6.33. For earlier + kernels, use +make linux-update-config+. +* +make busybox-update-config+ saves the busybox configuration to the + path specified by +BR2_PACKAGE_BUSYBOX_CONFIG+. +* +make uclibc-update-config+ saves the uClibc configuration to the + path specified by +BR2_UCLIBC_CONFIG+. +* +make barebox-update-defconfig+ saves the barebox configuration to the + path specified by +BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE+. +* +make uboot-update-defconfig+ saves the U-Boot configuration to the + path specified by +BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE+. +* For at91bootstrap3, no helper exists so you have to copy the config + file manually to +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE+. + + diff --git a/docs/manual/customize-device-permission-tables.adoc b/docs/manual/customize-device-permission-tables.adoc new file mode 100644 index 00000000..02dd8ad9 --- /dev/null +++ b/docs/manual/customize-device-permission-tables.adoc @@ -0,0 +1,30 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[customize-device-permission]] +==== Setting file permissions and ownership and adding custom devices nodes + +Sometimes it is needed to set specific permissions or ownership on files +or device nodes. For example, certain files may need to be owned by +root. Since the post-build scripts are not run as root, you cannot do +such changes from there unless you use an explicit fakeroot from the +post-build script. + +Instead, Buildroot provides support for so-called _permission tables_. +To use this feature, set config option +BR2_ROOTFS_DEVICE_TABLE+ to a +space-separated list of permission tables, regular text files following +the xref:makedev-syntax[makedev syntax]. + +If you are using a static device table (i.e. not using +devtmpfs+, ++mdev+, or +(e)udev+) then you can add device nodes using the same +syntax, in so-called _device tables_. To use this feature, set config +option +BR2_ROOTFS_STATIC_DEVICE_TABLE+ to a space-separated list of +device tables. + +As shown in xref:customize-dir-structure[], the recommended location for +such files is +board///+. + +It should be noted that if the specific permissions or device nodes are +related to a specific application, you should set variables ++FOO_PERMISSIONS+ and +FOO_DEVICES+ in the package's +.mk+ file instead +(see xref:generic-package-reference[]). diff --git a/docs/manual/customize-directory-structure.adoc b/docs/manual/customize-directory-structure.adoc new file mode 100644 index 00000000..e0eecb56 --- /dev/null +++ b/docs/manual/customize-directory-structure.adoc @@ -0,0 +1,111 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[customize-dir-structure]] +=== Recommended directory structure + +When customizing Buildroot for your project, you will be creating one or +more project-specific files that need to be stored somewhere. While most +of these files could be placed in _any_ location as their path is to be +specified in the Buildroot configuration, the Buildroot developers +recommend a specific directory structure which is described in this +section. + +Orthogonal to this directory structure, you can choose _where_ you place +this structure itself: either inside the Buildroot tree, or outside of +it using a br2-external tree. Both options are valid, the choice is up +to you. + +---- ++-- board/ +| +-- / +| +-- / +| +-- linux.config +| +-- busybox.config +| +-- +| +-- post_build.sh +| +-- post_image.sh +| +-- rootfs_overlay/ +| | +-- etc/ +| | +-- +| +-- patches/ +| +-- foo/ +| | +-- +| +-- libbar/ +| +-- +| ++-- configs/ +| +-- _defconfig +| ++-- package/ +| +-- / +| +-- Config.in (if not using a br2-external tree) +| +-- .mk (if not using a br2-external tree) +| +-- package1/ +| | +-- Config.in +| | +-- package1.mk +| +-- package2/ +| +-- Config.in +| +-- package2.mk +| ++-- Config.in (if using a br2-external tree) ++-- external.mk (if using a br2-external tree) ++-- external.desc (if using a br2-external tree) +---- + +Details on the files shown above are given further in this chapter. + +Note: if you choose to place this structure outside of the Buildroot +tree but in a br2-external tree, the and possibly +components may be superfluous and can be left out. + +==== Implementing layered customizations + +It is quite common for a user to have several related projects that partly +need the same customizations. Instead of duplicating these +customizations for each project, it is recommended to use a layered +customization approach, as explained in this section. + +Almost all of the customization methods available in Buildroot, like +post-build scripts and root filesystem overlays, accept a +space-separated list of items. The specified items are always treated in +order, from left to right. By creating more than one such item, one for +the common customizations and another one for the really +project-specific customizations, you can avoid unnecessary duplication. +Each layer is typically embodied by a separate directory inside ++board//+. Depending on your projects, you could even introduce +more than two layers. + +An example directory structure for where a user has two customization +layers 'common' and 'fooboard' is: + +---- ++-- board/ + +-- / + +-- common/ + | +-- post_build.sh + | +-- rootfs_overlay/ + | | +-- ... + | +-- patches/ + | +-- ... + | + +-- fooboard/ + +-- linux.config + +-- busybox.config + +-- + +-- post_build.sh + +-- rootfs_overlay/ + | +-- ... + +-- patches/ + +-- ... +---- + +For example, if the user has the +BR2_GLOBAL_PATCH_DIR+ configuration +option set as: + +---- +BR2_GLOBAL_PATCH_DIR="board//common/patches board//fooboard/patches" +---- + +then first the patches from the 'common' layer would be applied, +followed by the patches from the 'fooboard' layer. diff --git a/docs/manual/customize-outside-br.adoc b/docs/manual/customize-outside-br.adoc new file mode 100644 index 00000000..5e653f16 --- /dev/null +++ b/docs/manual/customize-outside-br.adoc @@ -0,0 +1,446 @@ +// -*- mode:doc -*- ; +// vim: set syntax=asciidoc: + +[[outside-br-custom]] +=== Keeping customizations outside of Buildroot + +As already briefly mentioned in xref:customize-dir-structure[], you can +place project-specific customizations in two locations: + + * directly within the Buildroot tree, typically maintaining them using + branches in a version control system so that upgrading to a newer + Buildroot release is easy. + + * outside of the Buildroot tree, using the _br2-external_ mechanism. + This mechanism allows to keep package recipes, board support and + configuration files outside of the Buildroot tree, while still + having them nicely integrated in the build logic. We call this + location a _br2-external tree_. This section explains how to use + the br2-external mechanism and what to provide in a br2-external + tree. + +One can tell Buildroot to use one or more br2-external trees by setting +the +BR2_EXTERNAL+ make variable set to the path(s) of the br2-external +tree(s) to use. It can be passed to any Buildroot +make+ invocation. It +is automatically saved in the hidden +.br2-external.mk+ file in the output +directory. Thanks to this, there is no need to pass +BR2_EXTERNAL+ at +every +make+ invocation. It can however be changed at any time by +passing a new value, and can be removed by passing an empty value. + +.Note +The path to a br2-external tree can be either absolute or relative. +If it is passed as a relative path, it is important to note that it is +interpreted relative to the main Buildroot source directory, *not* to +the Buildroot output directory. + +.Note: +If using an br2-external tree from before Buildroot 2016.11, you need to +convert it before you can use it with Buildroot 2016.11 onward. See +xref:br2-external-converting[] for help on doing so. + +Some examples: + +---- +buildroot/ $ make BR2_EXTERNAL=/path/to/foo menuconfig +---- + +From now on, definitions from the +/path/to/foo+ br2-external tree +will be used: + +---- +buildroot/ $ make +buildroot/ $ make legal-info +---- + +We can switch to another br2-external tree at any time: + +---- +buildroot/ $ make BR2_EXTERNAL=/where/we/have/bar xconfig +---- + +We can also use multiple br2-external trees: + +---- +buildroot/ $ make BR2_EXTERNAL=/path/to/foo:/where/we/have/bar menuconfig +---- + +Or disable the usage of any br2-external tree: + +---- +buildroot/ $ make BR2_EXTERNAL= xconfig +---- + +==== Layout of a br2-external tree + +A br2-external tree must contain at least those three files, described +in the following chapters: + + * +external.desc+ + * +external.mk+ + * +Config.in+ + +Apart from those mandatory files, there may be additional and optional +content that may be present in a br2-external tree, like the +configs/+ +or +provides/+ directories. They are described in the following chapters +as well. + +A complete example br2-external tree layout is also described later. + +===== The +external.desc+ file + +That file describes the br2-external tree: the _name_ and _description_ +for that br2-external tree. + +The format for this file is line based, with each line starting by a +keyword, followed by a colon and one or more spaces, followed by the +value assigned to that keyword. There are two keywords currently +recognised: + + * +name+, mandatory, defines the name for that br2-external tree. That + name must only use ASCII characters in the set +[A-Za-z0-9_]+; any + other character is forbidden. Buildroot sets the variable + +BR2_EXTERNAL_$(NAME)_PATH+ to the absolute path of the br2-external + tree, so that you can use it to refer to your br2-external tree. This + variable is available both in Kconfig, so you can use it to source your + Kconfig files (see below) and in the Makefile, so that you can use it + to include other Makefiles (see below) or refer to other files (like + data files) from your br2-external tree. ++ +.Note: +Since it is possible to use multiple br2-external trees at once, this + name is used by Buildroot to generate variables for each of those trees. + That name is used to identify your br2-external tree, so try to come up + with a name that really describes your br2-external tree, in order for + it to be relatively unique, so that it does not clash with another name + from another br2-external tree, especially if you are planning on + somehow sharing your br2-external tree with third parties or using + br2-external trees from third parties. + + * +desc+, optional, provides a short description for that br2-external + tree. It shall fit on a single line, is mostly free-form (see below), + and is used when displaying information about a br2-external tree (e.g. + above the list of defconfig files, or as the prompt in the menuconfig); + as such, it should relatively brief (40 chars is probably a good upper + limit). The description is available in the +BR2_EXTERNAL_$(NAME)_DESC+ + variable. + +Examples of names and the corresponding +BR2_EXTERNAL_$(NAME)_PATH+ +variables: + + * +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. + +===== The +provides/+ directory + +For some packages, Buildroot provides a choice between two (or more) +implementations of API-compatible such packages. For example, there is +a choice to choose either libjpeg ot jpeg-turbo; there is one between +openssl or libressl; there is one to select one of the known, +pre-configured toolchains... + +It is possible for a br2-external to extend those choices, by providing +a set of files that define those alternatives: + +* +provides/toolchains.in+ defines the pre-configured toolchains, which + will then be listed in the toolchain selection; +* +provides/jpeg.in+ defines the alternative libjpeg implementations; +* +provides/openssl.in+ defines the alternative openssl implementations; +* +provides/skeleton.in+ defines the alternative skeleton implementations; +* +provides/init.in+ defines the alternative init system implementations, this + can be used to select a default skeleton for your init. + +===== Free-form content + +One can store all the board-specific configuration files there, such +as the kernel configuration, the root filesystem overlay, or any other +configuration file for which Buildroot allows to set the location (by +using the +BR2_EXTERNAL_$(NAME)_PATH+ variable). For example, you +could set the paths to a global patch directory, to a rootfs overlay +and to the kernel configuration file as follows (e.g. by running +`make menuconfig` and filling in these options): + +---- +BR2_GLOBAL_PATCH_DIR=$(BR2_EXTERNAL_BAR_42_PATH)/patches/ +BR2_ROOTFS_OVERLAY=$(BR2_EXTERNAL_BAR_42_PATH)/board//overlay/ +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=$(BR2_EXTERNAL_BAR_42_PATH)/board//kernel.config +---- + +===== Additional Linux kernel extensions + +Additional Linux kernel extensions (see xref:linux-kernel-ext[]) can +be added by storing them in the `linux/` directory at the root of a +br2-external tree. + +===== Example layout + +Here is an example layout using all features of br2-external (the sample +content is shown for the file above it, when it is relevant to explain +the br2-external tree; this is all entirely made up just for the sake of +illustration, of course): + +---- +/path/to/br2-ext-tree/ + |- external.desc + | |name: BAR_42 + | |desc: Example br2-external tree + | `---- + | + |- Config.in + | |source "$BR2_EXTERNAL_BAR_42_PATH/toolchain/toolchain-external-mine/Config.in.options" + | |source "$BR2_EXTERNAL_BAR_42_PATH/package/pkg-1/Config.in" + | |source "$BR2_EXTERNAL_BAR_42_PATH/package/pkg-2/Config.in" + | |source "$BR2_EXTERNAL_BAR_42_PATH/package/my-jpeg/Config.in" + | | + | |config BAR_42_FLASH_ADDR + | | hex "my-board flash address" + | | default 0x10AD + | `---- + | + |- external.mk + | |include $(sort $(wildcard $(BR2_EXTERNAL_BAR_42_PATH)/package/*/*.mk)) + | |include $(sort $(wildcard $(BR2_EXTERNAL_BAR_42_PATH)/toolchain/*/*.mk)) + | | + | |flash-my-board: + | | $(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/flash-image \ + | | --image $(BINARIES_DIR)/image.bin \ + | | --address $(BAR_42_FLASH_ADDR) + | `---- + | + |- package/pkg-1/Config.in + | |config BR2_PACKAGE_PKG_1 + | | bool "pkg-1" + | | help + | | Some help about pkg-1 + | `---- + |- package/pkg-1/pkg-1.hash + |- package/pkg-1/pkg-1.mk + | |PKG_1_VERSION = 1.2.3 + | |PKG_1_SITE = /some/where/to/get/pkg-1 + | |PKG_1_LICENSE = blabla + | | + | |define PKG_1_INSTALL_INIT_SYSV + | | $(INSTALL) -D -m 0755 $(PKG_1_PKGDIR)/S99my-daemon \ + | | $(TARGET_DIR)/etc/init.d/S99my-daemon + | |endef + | | + | |$(eval $(autotools-package)) + | `---- + |- package/pkg-1/S99my-daemon + | + |- package/pkg-2/Config.in + |- package/pkg-2/pkg-2.hash + |- package/pkg-2/pkg-2.mk + | + |- provides/jpeg.in + | |config BR2_PACKAGE_MY_JPEG + | | bool "my-jpeg" + | `---- + |- package/my-jpeg/Config.in + | |config BR2_PACKAGE_PROVIDES_JPEG + | | default "my-jpeg" if BR2_PACKAGE_MY_JPEG + | `---- + |- package/my-jpeg/my-jpeg.mk + | |# This is a normal package .mk file + | |MY_JPEG_VERSION = 1.2.3 + | |MY_JPEG_SITE = https://example.net/some/place + | |MY_JPEG_PROVIDES = jpeg + | |$(eval $(autotools-package)) + | `---- + | + |- provides/init.in + | |config BR2_INIT_MINE + | | bool "my custom init" + | | select BR2_PACKAGE_MY_INIT + | | select BR2_PACKAGE_SKELETON_INIT_MINE if BR2_ROOTFS_SKELETON_DEFAULT + | `---- + | + |- provides/skeleton.in + | |config BR2_ROOTFS_SKELETON_MINE + | | bool "my custom skeleton" + | | select BR2_PACKAGE_SKELETON_MINE + | `---- + |- package/skeleton-mine/Config.in + | |config BR2_PACKAGE_SKELETON_MINE + | | bool + | | select BR2_PACKAGE_HAS_SKELETON + | | + | |config BR2_PACKAGE_PROVIDES_SKELETON + | | default "skeleton-mine" if BR2_PACKAGE_SKELETON_MINE + | `---- + |- package/skeleton-mine/skeleton-mine.mk + | |SKELETON_MINE_ADD_TOOLCHAIN_DEPENDENCY = NO + | |SKELETON_MINE_ADD_SKELETON_DEPENDENCY = NO + | |SKELETON_MINE_PROVIDES = skeleton + | |SKELETON_MINE_INSTALL_STAGING = YES + | |$(eval $(generic-package)) + | `---- + | + |- provides/toolchains.in + | |config BR2_TOOLCHAIN_EXTERNAL_MINE + | | bool "my custom toolchain" + | | depends on BR2_some_arch + | | select BR2_INSTALL_LIBSTDCPP + | `---- + |- toolchain/toolchain-external-mine/Config.in.options + | |if BR2_TOOLCHAIN_EXTERNAL_MINE + | |config BR2_TOOLCHAIN_EXTERNAL_PREFIX + | | default "arch-mine-linux-gnu" + | |config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + | | default "toolchain-external-mine" + | |endif + | `---- + |- toolchain/toolchain-external-mine/toolchain-external-mine.mk + | |TOOLCHAIN_EXTERNAL_MINE_SITE = https://example.net/some/place + | |TOOLCHAIN_EXTERNAL_MINE_SOURCE = my-toolchain.tar.gz + | |$(eval $(toolchain-external-package)) + | `---- + | + |- linux/Config.ext.in + | |config BR2_LINUX_KERNEL_EXT_EXAMPLE_DRIVER + | | bool "example-external-driver" + | | help + | | Example external driver + | |--- + |- linux/linux-ext-example-driver.mk + | + |- configs/my-board_defconfig + | |BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_BAR_42_PATH)/patches/" + | |BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/overlay/" + | |BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/post-image.sh" + | |BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/kernel.config" + | `---- + | + |- patches/linux/0001-some-change.patch + |- patches/linux/0002-some-other-change.patch + |- patches/busybox/0001-fix-something.patch + | + |- board/my-board/kernel.config + |- board/my-board/overlay/var/www/index.html + |- board/my-board/overlay/var/www/my.css + |- board/my-board/flash-image + `- board/my-board/post-image.sh + |#!/bin/sh + |generate-my-binary-image \ + | --root ${BINARIES_DIR}/rootfs.tar \ + | --kernel ${BINARIES_DIR}/zImage \ + | --dtb ${BINARIES_DIR}/my-board.dtb \ + | --output ${BINARIES_DIR}/image.bin + `---- +---- + +The br2-external tree will then be visible in the menuconfig (with +the layout expanded): + +---- +External options ---> + *** Example br2-external tree (in /path/to/br2-ext-tree/) + [ ] pkg-1 + [ ] pkg-2 + (0x10AD) my-board flash address +---- + +If you are using more than one br2-external tree, it would look like +(with the layout expanded and the second one with name +FOO_27+ but no ++desc:+ field in +external.desc+): + +---- +External options ---> + Example br2-external tree ---> + *** Example br2-external tree (in /path/to/br2-ext-tree) + [ ] pkg-1 + [ ] pkg-2 + (0x10AD) my-board flash address + FOO_27 ---> + *** FOO_27 (in /path/to/another-br2-ext) + [ ] foo + [ ] bar +---- + +Additionally, the jpeg provider will be visible in the jpeg choice: + +---- +Target packages ---> + Libraries ---> + Graphics ---> + [*] jpeg support + jpeg variant () ---> + ( ) jpeg + ( ) jpeg-turbo + *** jpeg from: Example br2-external tree *** + (X) my-jpeg + *** jpeg from: FOO_27 *** + ( ) another-jpeg +---- + +And similarly for the toolchains: + +---- +Toolchain ---> + Toolchain () ---> + ( ) Custom toolchain + *** Toolchains from: Example br2-external tree *** + (X) my custom toolchain +---- + +.Note +The toolchain options in +toolchain/toolchain-external-mine/Config.in.options+ +will not appear in the `Toolchain` menu. They must be explicitly included +from within the br2-external's top-level +Config.in+ and will thus appear +in the `External options` menu. diff --git a/docs/manual/customize-packages.adoc b/docs/manual/customize-packages.adoc new file mode 100644 index 00000000..af2fd13d --- /dev/null +++ b/docs/manual/customize-packages.adoc @@ -0,0 +1,56 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[customize-packages]] +=== Adding project-specific packages + +In general, any new package should be added directly in the +package+ +directory and submitted to the Buildroot upstream project. How to add +packages to Buildroot in general is explained in full detail in +xref:adding-packages[] and will not be repeated here. However, your +project may need some proprietary packages that cannot be upstreamed. +This section will explain how you can keep such project-specific +packages in a project-specific directory. + +As shown in xref:customize-dir-structure[], the recommended location for +project-specific packages is +package//+. If you are using the +br2-external tree feature (see xref:outside-br-custom[]) the recommended +location is to put them in a sub-directory named +package/+ in your +br2-external tree. + +However, Buildroot will not be aware of the packages in this location, +unless we perform some additional steps. As explained in +xref:adding-packages[], a package in Buildroot basically consists of two +files: a +.mk+ file (describing how to build the package) and a ++Config.in+ file (describing the configuration options for this +package). + +Buildroot will automatically include the +.mk+ files in first-level +subdirectories of the +package+ directory (using the pattern ++package/\*/*.mk+). If we want Buildroot to include +.mk+ files from +deeper subdirectories (like +package//package1/+) then we +simply have to add a +.mk+ file in a first-level subdirectory that +includes these additional +.mk+ files. Therefore, create a file ++package//.mk+ with following contents (assuming you +have only one extra directory level below +package//+): + +---- +include $(sort $(wildcard package//*/*.mk)) +---- + +For the +Config.in+ files, create a file +package//Config.in+ +that includes the +Config.in+ files of all your packages. An exhaustive +list has to be provided since wildcards are not supported in the source command of kconfig. +For example: + +---- +source "package//package1/Config.in" +source "package//package2/Config.in" +---- + +Include this new file +package//Config.in+ from ++package/Config.in+, preferably in a company-specific menu to make +merges with future Buildroot versions easier. + +If using a br2-external tree, refer to xref:outside-br-custom[] for how +to fill in those files. diff --git a/docs/manual/customize-patches.adoc b/docs/manual/customize-patches.adoc new file mode 100644 index 00000000..f33bbcdd --- /dev/null +++ b/docs/manual/customize-patches.adoc @@ -0,0 +1,83 @@ +// -*- mode:doc -*- ; +// vim: set syntax=asciidoc: + +=== Adding project-specific patches and hashes + +[[customize-patches]] +==== Providing extra patches + +It is sometimes useful to apply 'extra' patches to packages - on top of +those provided in Buildroot. This might be used to support custom +features in a project, for example, or when working on a new +architecture. + +The +BR2_GLOBAL_PATCH_DIR+ configuration option can be used to specify +a space separated list of one or more directories containing package +patches. + +For a specific version ++ of a specific package +++, patches are applied from +BR2_GLOBAL_PATCH_DIR+ as +follows: + +. For every directory - ++ - that exists in + +BR2_GLOBAL_PATCH_DIR+, a ++ will be determined as + follows: ++ +* +///+ if the + directory exists. ++ +* Otherwise, +/+ if the directory + exists. + +. Patches will then be applied from a ++ as + follows: ++ +* If a +series+ file exists in the package directory, then patches are + applied according to the +series+ file; ++ +* Otherwise, patch files matching +*.patch+ are applied in + alphabetical order. So, to ensure they are applied in the right + order, it is highly recommended to name the patch files like this: + +-.patch+, where ++ refers to the + 'apply order'. + +For information about how patches are applied for a package, see +xref:patch-apply-order[] + +The +BR2_GLOBAL_PATCH_DIR+ option is the preferred method for +specifying a custom patch directory for packages. It can be used to +specify a patch directory for any package in buildroot. It should also +be used in place of the custom patch directory options that are +available for packages such as U-Boot and Barebox. By doing this, it +will allow a user to manage their patches from one top-level +directory. + +The exception to +BR2_GLOBAL_PATCH_DIR+ being the preferred method for +specifying custom patches is +BR2_LINUX_KERNEL_PATCH+. ++BR2_LINUX_KERNEL_PATCH+ should be used to specify kernel patches that +are available at a URL. *Note:* +BR2_LINUX_KERNEL_PATCH+ specifies kernel +patches that are applied after patches available in +BR2_GLOBAL_PATCH_DIR+, +as it is done from a post-patch hook of the Linux package. + + +[[customize-hashes]] +==== Providing extra hashes + +Buildroot bundles a xref:adding-packages-hash[list of hashes] against +which it checks the integrity of the downloaded archives, or of those +it generates locally from VCS checkouts. However, it can only do so +for the known versions; for packages where it is possible to specify +a custom version (e.g. a custom version string, a remote tarball URL, +or a VCS repository location and changeset), Buildroot can't carry +hashes for those. + +For users concerned with the integrity of such downloads, it is possible +to provide a list of hashes that Buildroot can use to check arbitrary +downloaded files. Those extra hashes are looked up similarly to the +extra patches (above); for each directory in +BR2_GLOBAL_PATCH_DIR+, +the first file to exist is used to check a package download: + +* +///.hash+ +* +//.hash+ + +The +utils/add-custom-hashes+ script can be used to generate these files. diff --git a/docs/manual/customize-post-image.adoc b/docs/manual/customize-post-image.adoc new file mode 100644 index 00000000..849e941d --- /dev/null +++ b/docs/manual/customize-post-image.adoc @@ -0,0 +1,43 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Customization _after_ the images have been created + +While post-build scripts (xref:rootfs-custom[]) are run _before_ +building the filesystem image, kernel and bootloader, *post-image +scripts* can be used to perform some specific actions _after_ all images +have been created. + +Post-image scripts can for example be used to automatically extract your +root filesystem tarball in a location exported by your NFS server, or +to create a special firmware image that bundles your root filesystem and +kernel image, or any other custom action required for your project. + +To enable this feature, specify a space-separated list of post-image +scripts in config option +BR2_ROOTFS_POST_IMAGE_SCRIPT+ (in the +System +configuration+ menu). If you specify a relative path, it will be +relative to the root of the Buildroot tree. + +Just like post-build scripts, post-image scripts are run with the main +Buildroot tree as current working directory. The path to the +images+ +output directory is passed as the first argument to each script. If the +config option +BR2_ROOTFS_POST_SCRIPT_ARGS+ is not empty, these +arguments will be passed to the script too. All the scripts will be +passed the exact same set of arguments, it is not possible to pass +different sets of arguments to each script. + +Note that the arguments from +BR2_ROOTFS_POST_SCRIPT_ARGS+ will also be +passed to post-build and post-fakeroot scripts. If you want to use +arguments that are only used for the post-image scripts you can use ++BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS+. + +Again just like for the post-build scripts, the scripts have access to +the environment variables +BR2_CONFIG+, +HOST_DIR+, +STAGING_DIR+, ++TARGET_DIR+, +BUILD_DIR+, +BINARIES_DIR+, +CONFIG_DIR+, +BASE_DIR+, +and +PARALLEL_JOBS+. + +The post-image scripts will be executed as the user that executes +Buildroot, which should normally _not_ be the root user. Therefore, any +action requiring root permissions in one of these scripts will require +special handling (usage of fakeroot or sudo), which is left to the +script developer. diff --git a/docs/manual/customize-quick-guide.adoc b/docs/manual/customize-quick-guide.adoc new file mode 100644 index 00000000..315027c5 --- /dev/null +++ b/docs/manual/customize-quick-guide.adoc @@ -0,0 +1,66 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Quick guide to storing your project-specific customizations + +Earlier in this chapter, the different methods for making +project-specific customizations have been described. This section will +now summarize all this by providing step-by-step instructions to storing your +project-specific customizations. Clearly, the steps that are not relevant to +your project can be skipped. + +. +make menuconfig+ to configure toolchain, packages and kernel. +. +make linux-menuconfig+ to update the kernel config, similar for + other configuration like busybox, uclibc, ... +. +mkdir -p board//+ +. Set the following options to +board///.config+ + (as far as they are relevant): + * +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE+ + * +BR2_PACKAGE_BUSYBOX_CONFIG+ + * +BR2_UCLIBC_CONFIG+ + * +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE+ + * +BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE+ + * +BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE+ +. Write the configuration files: + * +make linux-update-defconfig+ + * +make busybox-update-config+ + * +make uclibc-update-config+ + * +cp /build/at91bootstrap3-*/.config + board///at91bootstrap3.config+ + * +make barebox-update-defconfig+ + * +make uboot-update-defconfig+ +. Create +board///rootfs-overlay/+ and fill it + with additional files you need on your rootfs, e.g. + +board///rootfs-overlay/etc/inittab+. + Set +BR2_ROOTFS_OVERLAY+ + to +board///rootfs-overlay+. +. Create a post-build script + +board///post_build.sh+. Set + +BR2_ROOTFS_POST_BUILD_SCRIPT+ to + +board///post_build.sh+ +. If additional setuid permissions have to be set or device nodes have + to be created, create +board///device_table.txt+ + and add that path to +BR2_ROOTFS_DEVICE_TABLE+. +. If additional user accounts have to be created, create + +board///users_table.txt+ and add that path + to +BR2_ROOTFS_USERS_TABLES+. +. To add custom patches to certain packages, set +BR2_GLOBAL_PATCH_DIR+ + to +board///patches/+ and add your patches + for each package in a subdirectory named after the package. Each + patch should be called +--.patch+. +. Specifically for the Linux kernel, there also exists the option + +BR2_LINUX_KERNEL_PATCH+ with as main advantage that it can also + download patches from a URL. If you do not need this, + +BR2_GLOBAL_PATCH_DIR+ is preferred. U-Boot, Barebox, at91bootstrap + and at91bootstrap3 also have separate options, but these do not + provide any advantage over +BR2_GLOBAL_PATCH_DIR+ and will likely be + removed in the future. +. If you need to add project-specific packages, create + +package//+ and place your packages in that + directory. Create an overall +.mk+ file that + includes the +.mk+ files of all your packages. Create an overall + +Config.in+ file that sources the +Config.in+ files of all your + packages. Include this +Config.in+ file from Buildroot's + +package/Config.in+ file. +. +make savedefconfig+ to save the buildroot configuration. +. +cp defconfig configs/_defconfig+ diff --git a/docs/manual/customize-rootfs.adoc b/docs/manual/customize-rootfs.adoc new file mode 100644 index 00000000..d3340937 --- /dev/null +++ b/docs/manual/customize-rootfs.adoc @@ -0,0 +1,163 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[rootfs-custom]] +=== Customizing the generated target filesystem + +Besides changing the configuration through +make *config+, +there are a few other ways to customize the resulting target filesystem. + +The two recommended methods, which can co-exist, are root filesystem +overlay(s) and post build script(s). + +Root filesystem overlays (+BR2_ROOTFS_OVERLAY+):: ++ +A filesystem overlay is a tree of files that is copied directly + over the target filesystem after it has been built. To enable this + feature, set config option +BR2_ROOTFS_OVERLAY+ (in the +System + configuration+ menu) to the root of the overlay. You can even specify + multiple overlays, space-separated. If you specify a relative path, + it will be relative to the root of the Buildroot tree. Hidden + directories of version control systems, like +.git+, +.svn+, +.hg+, + etc., files called +.empty+ and files ending in +~+ are excluded from + the copy. ++ +When +BR2_ROOTFS_MERGED_USR+ is enabled, then the overlay must not + contain the '/bin', '/lib' or '/sbin' directories, as Buildroot will + create them as symbolic links to the relevant folders in '/usr'. In + such a situation, should the overlay have any programs or libraries, + they should be placed in '/usr/bin', '/usr/sbin' and '/usr/lib'. ++ +As shown in xref:customize-dir-structure[], the recommended path for + this overlay is +board///rootfs-overlay+. + +Post-build scripts (+BR2_ROOTFS_POST_BUILD_SCRIPT+):: ++ +Post-build scripts are shell scripts called 'after' Buildroot builds + all the selected software, but 'before' the rootfs images are + assembled. To enable this feature, specify a space-separated list of + post-build scripts in config option +BR2_ROOTFS_POST_BUILD_SCRIPT+ (in + the +System configuration+ menu). If you specify a relative path, it + will be relative to the root of the Buildroot tree. ++ +Using post-build scripts, you can remove or modify any file in your + target filesystem. You should, however, use this feature with care. + Whenever you find that a certain package generates wrong or unneeded + files, you should fix that package rather than work around it with some + post-build cleanup scripts. ++ +As shown in xref:customize-dir-structure[], the recommended path for + this script is +board///post_build.sh+. ++ +The post-build scripts are run with the main Buildroot tree as current + working directory. The path to the target filesystem is passed as the + first argument to each script. If the config option + +BR2_ROOTFS_POST_SCRIPT_ARGS+ is not empty, these arguments will be + passed to the script too. All the scripts will be passed the exact + same set of arguments, it is not possible to pass different sets of + arguments to each script. + + Note that the arguments from +BR2_ROOTFS_POST_SCRIPT_ARGS+ will also be + passed to post-image and post-fakeroot scripts. If you want to use + arguments that are only used for the post-build scripts you can use + +BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS+. + ++ +In addition, you may also use these environment variables: + + - +BR2_CONFIG+: the path to the Buildroot .config file + - +CONFIG_DIR+: the directory containing the .config file, and + therefore the top-level Buildroot Makefile to use (which is + correct for both in-tree and out-of-tree builds) + - +HOST_DIR+, +STAGING_DIR+, +TARGET_DIR+: see + xref:generic-package-reference[] + - +BUILD_DIR+: the directory where packages are extracted and built + - +BINARIES_DIR+: the place where all binary files (aka images) are + stored + - +BASE_DIR+: the base output directory + - +PARALLEL_JOBS+: the number of jobs to use when running parallel processes. + +Below three more methods of customizing the target filesystem are +described, but they are not recommended. + +Direct modification of the target filesystem:: ++ +For temporary modifications, you can modify the target filesystem + directly and rebuild the image. The target filesystem is available + under +output/target/+. After making your changes, run +make+ to + rebuild the target filesystem image. ++ +This method allows you to do anything to the target filesystem, but if + you need to clean your Buildroot tree using +make clean+, these + changes will be lost. Such cleaning is necessary in several cases, + refer to xref:full-rebuild[] for details. This solution is therefore + only useful for quick tests: _changes do not survive the +make clean+ + command_. Once you have validated your changes, you should make sure + that they will persist after a +make clean+, using a root filesystem + overlay or a post-build script. + +Custom target skeleton (+BR2_ROOTFS_SKELETON_CUSTOM+):: ++ +The root filesystem image is created from a target skeleton, on top of + which all packages install their files. The skeleton is copied to the + target directory +output/target+ before any package is built and + installed. The default target skeleton provides the standard Unix + filesystem layout and some basic init scripts and configuration files. ++ +If the default skeleton (available under +system/skeleton+) does not + match your needs, you would typically use a root filesystem overlay or + post-build script to adapt it. However, if the default skeleton is + entirely different than what you need, using a custom skeleton may be + more suitable. ++ +To enable this feature, enable config option + +BR2_ROOTFS_SKELETON_CUSTOM+ and set +BR2_ROOTFS_SKELETON_CUSTOM_PATH+ + to the path of your custom skeleton. Both options are available in the + +System configuration+ menu. If you specify a relative path, it will + be relative to the root of the Buildroot tree. ++ +Custom skeletons don't need to contain the '/bin', '/lib' or '/sbin' + directories, since they are created automatically during the build. + When +BR2_ROOTFS_MERGED_USR+ is enabled, then the custom skeleton must + not contain the '/bin', '/lib' or '/sbin' directories, as Buildroot + will create them as symbolic links to the relevant folders in '/usr'. + In such a situation, should the skeleton have any programs or + libraries, they should be placed in '/usr/bin', '/usr/sbin' and + '/usr/lib'. ++ +This method is not recommended because it duplicates the entire + skeleton, which prevents taking advantage of the fixes or improvements + brought to the default skeleton in later Buildroot releases. + +Post-fakeroot scripts (+BR2_ROOTFS_POST_FAKEROOT_SCRIPT+):: ++ +When aggregating the final images, some parts of the process requires + root rights: creating device nodes in `/dev`, setting permissions or + ownership to files and directories... To avoid requiring actual root + rights, Buildroot uses +fakeroot+ to simulate root rights. This is not + a complete substitute for actually being root, but is enough for what + Buildroot needs. ++ +Post-fakeroot scripts are shell scripts that are called at the 'end' of + the fakeroot phase, 'right before' the filesystem image generator is + called. As such, they are called in the fakeroot context. ++ +Post-fakeroot scripts can be useful in case you need to tweak the + filesystem to do modifications that are usually only available to the + root user. ++ +.Note: +It is recommended to use the existing mechanisms to set file permissions + or create entries in `/dev` (see xref:customize-device-permission[]) or + to create users (see xref:customize-users[]) ++ +.Note: +The difference between post-build scripts (above) and fakeroot scripts, + is that post-build scripts are not called in the fakeroot context. ++ +.Note: +Using `fakeroot` is not an absolute substitute for actually being root. + `fakeroot` only ever fakes the file access rights and types (regular, + block-or-char device...) and uid/gid; these are emulated in-memory. + +include::customize-device-permission-tables.adoc[] diff --git a/docs/manual/customize-users-tables.adoc b/docs/manual/customize-users-tables.adoc new file mode 100644 index 00000000..e2d32e23 --- /dev/null +++ b/docs/manual/customize-users-tables.adoc @@ -0,0 +1,18 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[customize-users]] +=== Adding custom user accounts + +Sometimes it is needed to add specific users in the target system. +To cover this requirement, Buildroot provides support for so-called +_users tables_. To use this feature, set config option ++BR2_ROOTFS_USERS_TABLES+ to a space-separated list of users tables, +regular text files following the xref:makeuser-syntax[makeusers syntax]. + +As shown in xref:customize-dir-structure[], the recommended location for +such files is +board///+. + +It should be noted that if the custom users are related to a specific +application, you should set variable +FOO_USERS+ in the package's +.mk+ +file instead (see xref:generic-package-reference[]). diff --git a/docs/manual/customize.adoc b/docs/manual/customize.adoc new file mode 100644 index 00000000..23fad7ba --- /dev/null +++ b/docs/manual/customize.adoc @@ -0,0 +1,60 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[customize]] +== Project-specific customization + +Typical actions you may need to perform for a given project are: + +* configuring Buildroot (including build options and toolchain, + bootloader, kernel, package and filesystem image type selection) +* configuring other components, like the Linux kernel and BusyBox +* customizing the generated target filesystem + ** adding or overwriting files on the target filesystem (using + +BR2_ROOTFS_OVERLAY+) + ** modifying or deleting files on the target filesystem (using + +BR2_ROOTFS_POST_BUILD_SCRIPT+) + ** running arbitrary commands prior to generating the filesystem image + (using +BR2_ROOTFS_POST_BUILD_SCRIPT+) + ** setting file permissions and ownership (using + +BR2_ROOTFS_DEVICE_TABLE+) + ** adding custom devices nodes (using + +BR2_ROOTFS_STATIC_DEVICE_TABLE+) +* adding custom user accounts (using +BR2_ROOTFS_USERS_TABLES+) +* running arbitrary commands after generating the filesystem image + (using +BR2_ROOTFS_POST_IMAGE_SCRIPT+) +* adding project-specific patches to some packages (using + +BR2_GLOBAL_PATCH_DIR+) +* adding project-specific packages + +An important note regarding such 'project-specific' customizations: +please carefully consider which changes are indeed project-specific and +which changes are also useful to developers outside your project. The +Buildroot community highly recommends and encourages the upstreaming of +improvements, packages and board support to the official Buildroot +project. Of course, it is sometimes not possible or desirable to +upstream because the changes are highly specific or proprietary. + +This chapter describes how to make such project-specific customizations +in Buildroot and how to store them in a way that you can build the same +image in a reproducible way, even after running 'make clean'. By +following the recommended strategy, you can even use the same Buildroot +tree to build multiple distinct projects! + +include::customize-directory-structure.adoc[] + +include::customize-outside-br.adoc[] + +include::customize-configuration.adoc[] + +include::customize-rootfs.adoc[] + +include::customize-users-tables.adoc[] + +include::customize-post-image.adoc[] + +include::customize-patches.adoc[] + +include::customize-packages.adoc[] + +include::customize-quick-guide.adoc[] diff --git a/docs/manual/debugging-buildroot.adoc b/docs/manual/debugging-buildroot.adoc new file mode 100644 index 00000000..b9068ead --- /dev/null +++ b/docs/manual/debugging-buildroot.adoc @@ -0,0 +1,44 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[debugging-buildroot]] + +== Debugging Buildroot + +It is possible to instrument the steps +Buildroot+ does when building +packages. Define the variable +BR2_INSTRUMENTATION_SCRIPTS+ to contain +the path of one or more scripts (or other executables), in a +space-separated list, you want called before and after each step. The +scripts are called in sequence, with three parameters: + + - +start+ or +end+ to denote the start (resp. the end) of a step; + - the name of the step about to be started, or which just ended; + - the name of the package. + +For example : + +---- +make BR2_INSTRUMENTATION_SCRIPTS="/path/to/my/script1 /path/to/my/script2" +---- + +The list of steps is: + + - +extract+ + - +patch+ + - +configure+ + - +build+ + - +install-host+, when a host-package is installed in +$(HOST_DIR)+ + - +install-target+, when a target-package is installed in +$(TARGET_DIR)+ + - +install-staging+, when a target-package is installed in +$(STAGING_DIR)+ + - +install-image+, when a target-package installs files in +$(BINARIES_DIR)+ + +The script has access to the following variables: + + - +BR2_CONFIG+: the path to the Buildroot .config file + - +HOST_DIR+, +STAGING_DIR+, +TARGET_DIR+: see + xref:generic-package-reference[] + - +BUILD_DIR+: the directory where packages are extracted and built + - +BINARIES_DIR+: the place where all binary files (aka images) are + stored + - +BASE_DIR+: the base output directory + - +PARALLEL_JOBS+: the number of jobs to use when running parallel processes. diff --git a/docs/manual/developers.adoc b/docs/manual/developers.adoc new file mode 100644 index 00000000..29846b56 --- /dev/null +++ b/docs/manual/developers.adoc @@ -0,0 +1,50 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[DEVELOPERS]] +== DEVELOPERS file and get-developers + +The main Buildroot directory contains a file named +DEVELOPERS+ that +lists the developers involved with various areas of Buildroot. Thanks +to this file, the +get-developers+ tool allows to: + +- Calculate the list of developers to whom patches should be sent, by + parsing the patches and matching the modified files with the + relevant developers. See xref:submitting-patches[] for details. + +- Find which developers are taking care of a given architecture or + package, so that they can be notified when a build failure occurs on + this architecture or package. This is done in interaction with + Buildroot's autobuild infrastructure. + +We ask developers adding new packages, new boards, or generally new +functionality in Buildroot, to register themselves in the +DEVELOPERS+ +file. As an example, we expect a developer contributing a new package +to include in his patch the appropriate modification to the ++DEVELOPERS+ file. + +The +DEVELOPERS+ file format is documented in detail inside the file +itself. + +The +get-developers+ tool, located in +utils/+ allows to use +the +DEVELOPERS+ file for various tasks: + +- When passing one or several patches as command line argument, + +get-developers+ will return the appropriate +git send-email+ + command. If the +-e+ option is passed, only the email addresses are + printed in a format suitable for +git send-email --cc-cmd+. + +- When using the +-a + command line option, +get-developers+ will + return the list of developers in charge of the given architecture. + +- When using the +-p + command line option, +get-developers+ + will return the list of developers in charge of the given package. + +- When using the +-c+ command line option, +get-developers+ will look + at all files under version control in the Buildroot repository, and + list the ones that are not handled by any developer. The purpose of + this option is to help completing the +DEVELOPERS+ file. + +- When using the +-v+ command line option, it validates the integrity + of the DEVELOPERS file and will note WARNINGS for items that don't + match. diff --git a/docs/manual/docbook-xsl.css b/docs/manual/docbook-xsl.css new file mode 100644 index 00000000..ee9ca46d --- /dev/null +++ b/docs/manual/docbook-xsl.css @@ -0,0 +1,329 @@ +/* + CSS stylesheet for XHTML produced by DocBook XSL stylesheets. +*/ + +body { + font-family: Georgia,serif; +} + +code, pre { + font-family: "Courier New", Courier, monospace; +} + +span.strong { + font-weight: bold; +} + +body blockquote { + margin-top: .75em; + line-height: 1.5; + margin-bottom: .75em; +} + +html body { + margin: 1em 5% 1em 5%; + line-height: 1.2; +} + +body div { + margin: 0; +} + +h1, h2, h3, h4, h5, h6 +{ + color: #527bbd; + font-family: Arial,Helvetica,sans-serif; +} + +div.toc p:first-child, +div.list-of-figures p:first-child, +div.list-of-tables p:first-child, +div.list-of-examples p:first-child, +div.example p.title, +div.sidebar p.title +{ + font-weight: bold; + color: #527bbd; + font-family: Arial,Helvetica,sans-serif; + margin-bottom: 0.2em; +} + +body h1 { + margin: .0em 0 0 -4%; + line-height: 1.3; + border-bottom: 2px solid silver; +} + +body h2 { + margin: 0.5em 0 0 -4%; + line-height: 1.3; + border-bottom: 2px solid silver; +} + +body h3 { + margin: .8em 0 0 -3%; + line-height: 1.3; +} + +body h4 { + margin: .8em 0 0 -3%; + line-height: 1.3; +} + +body h5 { + margin: .8em 0 0 -2%; + line-height: 1.3; +} + +body h6 { + margin: .8em 0 0 -1%; + line-height: 1.3; +} + +body hr { + border: none; /* Broken on IE6 */ +} +div.footnotes hr { + border: 1px solid silver; +} + +div.navheader th, div.navheader td, div.navfooter td { + font-family: Arial,Helvetica,sans-serif; + font-size: 0.9em; + font-weight: bold; + color: #527bbd; +} +div.navheader img, div.navfooter img { + border-style: none; +} +div.navheader a, div.navfooter a { + font-weight: normal; +} +div.navfooter hr { + border: 1px solid silver; +} + +body td { + line-height: 1.2 +} + +body th { + line-height: 1.2; +} + +ol { + line-height: 1.2; +} + +ul, body dir, body menu { + line-height: 1.2; +} + +html { + margin: 0; + padding: 0; +} + +body h1, body h2, body h3, body h4, body h5, body h6 { + margin-left: 0 +} + +body pre { + margin: 0.5em 10% 0.5em 1em; + line-height: 1.0; + color: navy; +} + +tt.literal, code.literal { + color: navy; +} + +.programlisting, .screen { + border: 1px solid silver; + background: #f4f4f4; + margin: 0.5em 10% 0.5em 0; + padding: 0.5em 1em; +} + +div.sidebar { + background: #ffffee; + margin: 1.0em 10% 0.5em 0; + padding: 0.5em 1em; + border: 1px solid silver; +} +div.sidebar * { padding: 0; } +div.sidebar div { margin: 0; } +div.sidebar p.title { + margin-top: 0.5em; + margin-bottom: 0.2em; +} + +div.bibliomixed { + margin: 0.5em 5% 0.5em 1em; +} + +div.glossary dt { + font-weight: bold; +} +div.glossary dd p { + margin-top: 0.2em; +} + +dl { + margin: .8em 0; + line-height: 1.2; +} + +dt { + margin-top: 0.5em; +} + +dt span.term { + font-style: normal; + color: navy; +} + +div.variablelist dd p { + margin-top: 0; +} + +div.itemizedlist li, div.orderedlist li { + margin-left: -0.8em; + margin-top: 0.5em; +} + +ul, ol { + list-style-position: outside; +} + +div.sidebar ul, div.sidebar ol { + margin-left: 2.8em; +} + +div.itemizedlist p.title, +div.orderedlist p.title, +div.variablelist p.title +{ + margin-bottom: -0.8em; +} + +div.revhistory table { + border-collapse: collapse; + border: none; +} +div.revhistory th { + border: none; + color: #527bbd; + font-family: Arial,Helvetica,sans-serif; +} +div.revhistory td { + border: 1px solid silver; +} + +/* Keep TOC and index lines close together. */ +div.toc dl, div.toc dt, +div.list-of-figures dl, div.list-of-figures dt, +div.list-of-tables dl, div.list-of-tables dt, +div.indexdiv dl, div.indexdiv dt +{ + line-height: normal; + margin-top: 0; + margin-bottom: 0; +} + +/* + Table styling does not work because of overriding attributes in + generated HTML. +*/ +div.table table, +div.informaltable table +{ + margin-left: 0; + margin-right: 5%; + margin-bottom: 0.8em; +} +div.informaltable table +{ + margin-top: 0.4em +} +div.table thead, +div.table tfoot, +div.table tbody, +div.informaltable thead, +div.informaltable tfoot, +div.informaltable tbody +{ + /* No effect in IE6. */ + border-top: 3px solid #527bbd; + border-bottom: 3px solid #527bbd; +} +div.table thead, div.table tfoot, +div.informaltable thead, div.informaltable tfoot +{ + font-weight: bold; +} + +div.mediaobject img { + margin-bottom: 0.8em; +} +div.figure p.title, +div.table p.title +{ + margin-top: 1em; + margin-bottom: 0.4em; +} + +div.calloutlist p +{ + margin-top: 0em; + margin-bottom: 0.4em; +} + +a img { + border-style: none; +} + +@media print { + div.navheader, div.navfooter { display: none; } +} + +span.aqua { color: aqua; } +span.black { color: black; } +span.blue { color: blue; } +span.fuchsia { color: fuchsia; } +span.gray { color: gray; } +span.green { color: green; } +span.lime { color: lime; } +span.maroon { color: maroon; } +span.navy { color: navy; } +span.olive { color: olive; } +span.purple { color: purple; } +span.red { color: red; } +span.silver { color: silver; } +span.teal { color: teal; } +span.white { color: white; } +span.yellow { color: yellow; } + +span.aqua-background { background: aqua; } +span.black-background { background: black; } +span.blue-background { background: blue; } +span.fuchsia-background { background: fuchsia; } +span.gray-background { background: gray; } +span.green-background { background: green; } +span.lime-background { background: lime; } +span.maroon-background { background: maroon; } +span.navy-background { background: navy; } +span.olive-background { background: olive; } +span.purple-background { background: purple; } +span.red-background { background: red; } +span.silver-background { background: silver; } +span.teal-background { background: teal; } +span.white-background { background: white; } +span.yellow-background { background: yellow; } + +span.big { font-size: 2em; } +span.small { font-size: 0.6em; } + +span.underline { text-decoration: underline; } +span.overline { text-decoration: overline; } +span.line-through { text-decoration: line-through; } diff --git a/docs/manual/download-infra.adoc b/docs/manual/download-infra.adoc new file mode 100644 index 00000000..f2ccd149 --- /dev/null +++ b/docs/manual/download-infra.adoc @@ -0,0 +1,8 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[download-infra]] + +== Download infrastructure + +TODO diff --git a/docs/manual/download-location.adoc b/docs/manual/download-location.adoc new file mode 100644 index 00000000..b2c527ad --- /dev/null +++ b/docs/manual/download-location.adoc @@ -0,0 +1,27 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[download-location]] + +==== Location of downloaded packages + +The various tarballs that are downloaded by Buildroot are all stored +in +BR2_DL_DIR+, which by default is the +dl+ directory. If you want +to keep a complete version of Buildroot which is known to be working +with the associated tarballs, you can make a copy of this directory. +This will allow you to regenerate the toolchain and the target +filesystem with exactly the same versions. + +If you maintain several Buildroot trees, it might be better to have a +shared download location. This can be achieved by pointing the ++BR2_DL_DIR+ environment variable to a directory. If this is +set, then the value of +BR2_DL_DIR+ in the Buildroot configuration is +overridden. The following line should be added to +<~/.bashrc>+. + +---- + export BR2_DL_DIR= +---- + +The download location can also be set in the +.config+ file, with the ++BR2_DL_DIR+ option. Unlike most options in the .config file, this value +is overridden by the +BR2_DL_DIR+ environment variable. diff --git a/docs/manual/faq-troubleshooting.adoc b/docs/manual/faq-troubleshooting.adoc new file mode 100644 index 00000000..2122a689 --- /dev/null +++ b/docs/manual/faq-troubleshooting.adoc @@ -0,0 +1,273 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== Frequently Asked Questions & Troubleshooting + +[[faq-boot-hang-after-starting]] +=== The boot hangs after 'Starting network...' + +If the boot process seems to hang after the following messages +(messages not necessarily exactly similar, depending on the list of +packages selected): + +---- +Freeing init memory: 3972K +Initializing random number generator... done. +Starting network... +Starting dropbear sshd: generating rsa key... generating dsa key... OK +---- + +then it means that your system is running, but didn't start a shell on +the serial console. In order to have the system start a shell on your +serial console, you have to go into the Buildroot configuration, in ++System configuration+, modify +Run a getty (login prompt) after boot+ +and set the appropriate port and baud rate in the +getty options+ +submenu. This will automatically tune the +/etc/inittab+ file of the +generated system so that a shell starts on the correct serial port. + +[[faq-no-compiler-on-target]] +=== Why is there no compiler on the target? + +It has been decided that support for the _native compiler on the +target_ would be stopped from the Buildroot-2012.11 release because: + +* this feature was neither maintained nor tested, and often broken; +* this feature was only available for Buildroot toolchains; +* Buildroot mostly targets _small_ or _very small_ target hardware + with limited resource onboard (CPU, ram, mass-storage), for which + compiling on the target does not make much sense; +* Buildroot aims at easing the cross-compilation, making native + compilation on the target unnecessary. + +If you need a compiler on your target anyway, then Buildroot is not +suitable for your purpose. In such case, you need a _real +distribution_ and you should opt for something like: + +* http://www.openembedded.org[openembedded] +* https://www.yoctoproject.org[yocto] +* https://www.debian.org/ports/[Debian] +* https://fedoraproject.org/wiki/Architectures[Fedora] +* http://en.opensuse.org/Portal:ARM[openSUSE ARM] +* http://archlinuxarm.org[Arch Linux ARM] +* ... + +[[faq-no-dev-files-on-target]] +=== Why are there no development files on the target? + +Since there is no compiler available on the target (see +xref:faq-no-compiler-on-target[]), it does not make sense to waste +space with headers or static libraries. + +Therefore, those files are always removed from the target since the +Buildroot-2012.11 release. + +[[faq-no-doc-on-target]] +=== Why is there no documentation on the target? + +Because Buildroot mostly targets _small_ or _very small_ target +hardware with limited resource onboard (CPU, ram, mass-storage), it +does not make sense to waste space with the documentation data. + +If you need documentation data on your target anyway, then Buildroot +is not suitable for your purpose, and you should look for a _real +distribution_ (see: xref:faq-no-compiler-on-target[]). + +[[faq-why-not-visible-package]] +=== Why are some packages not visible in the Buildroot config menu? + +If a package exists in the Buildroot tree and does not appear in the +config menu, this most likely means that some of the package's +dependencies are not met. + +To know more about the dependencies of a package, search for the +package symbol in the config menu (see xref:make-tips[]). + +Then, you may have to recursively enable several options (which +correspond to the unmet dependencies) to finally be able to select +the package. + +If the package is not visible due to some unmet toolchain options, +then you should certainly run a full rebuild (see xref:make-tips[] for +more explanations). + +[[faq-why-not-use-target-as-chroot]] +=== Why not use the target directory as a chroot directory? + +There are plenty of reasons to *not* use the target directory a chroot +one, among these: + +* file ownerships, modes and permissions are not correctly set in the + target directory; +* device nodes are not created in the target directory. + +For these reasons, commands run through chroot, using the target +directory as the new root, will most likely fail. + +If you want to run the target filesystem inside a chroot, or as an NFS +root, then use the tarball image generated in +images/+ and extract it +as root. + +[[faq-no-binary-packages]] +=== Why doesn't Buildroot generate binary packages (.deb, .ipkg...)? + +One feature that is often discussed on the Buildroot list is the +general topic of "package management". To summarize, the idea +would be to add some tracking of which Buildroot package installs +what files, with the goals of: + + * being able to remove files installed by a package when this package + gets unselected from the menuconfig; + + * being able to generate binary packages (ipk or other format) that + can be installed on the target without re-generating a new root + filesystem image. + +In general, most people think it is easy to do: just track which package +installed what and remove it when the package is unselected. However, it +is much more complicated than that: + + * It is not only about the +target/+ directory, but also the sysroot in + +host//sysroot+ and the +host/+ directory itself. All files + installed in those directories by various packages must be tracked. + + * When a package is unselected from the configuration, it is not + sufficient to remove just the files it installed. One must also + remove all its reverse dependencies (i.e. packages relying on it) + and rebuild all those packages. For example, package A depends + optionally on the OpenSSL library. Both are selected, and Buildroot + is built. Package A is built with crypto support using OpenSSL. + Later on, OpenSSL gets unselected from the configuration, but + package A remains (since OpenSSL is an optional dependency, this + is possible.) If only OpenSSL files are removed, then the files + installed by package A are broken: they use a library that is no + longer present on the target. Although this is technically doable, + it adds a lot of complexity to Buildroot, which goes against the + simplicity we try to stick to. + + * In addition to the previous problem, there is the case where the + optional dependency is not even known to Buildroot. For example, + package A in version 1.0 never used OpenSSL, but in version 2.0 it + automatically uses OpenSSL if available. If the Buildroot .mk file + hasn't been updated to take this into account, then package A will + not be part of the reverse dependencies of OpenSSL and will not be + removed and rebuilt when OpenSSL is removed. For sure, the .mk file + of package A should be fixed to mention this optional dependency, + but in the mean time, you can have non-reproducible behaviors. + + * The request is to also allow changes in the menuconfig to be + applied on the output directory without having to rebuild + everything from scratch. However, this is very difficult to achieve + in a reliable way: what happens when the suboptions of a package + are changed (we would have to detect this, and rebuild the package + from scratch and potentially all its reverse dependencies), what + happens if toolchain options are changed, etc. At the moment, what + Buildroot does is clear and simple so its behaviour is very + reliable and it is easy to support users. If configuration changes + done in menuconfig are applied after the next make, then it has to + work correctly and properly in all situations, and not have some + bizarre corner cases. The risk is to get bug reports like "I have + enabled package A, B and C, then ran make, then disabled package + C and enabled package D and ran make, then re-enabled package C + and enabled package E and then there is a build failure". Or worse + "I did some configuration, then built, then did some changes, + built, some more changes, built, some more changes, built, and now + it fails, but I don't remember all the changes I did and in which + order". This will be impossible to support. + +For all these reasons, the conclusion is that adding tracking of +installed files to remove them when the package is unselected, or to +generate a repository of binary packages, is something that is very +hard to achieve reliably and will add a lot of complexity. + +On this matter, the Buildroot developers make this position statement: + + * Buildroot strives to make it easy to generate a root filesystem (hence + the name, by the way.) That is what we want to make Buildroot good at: + building root filesystems. + + * Buildroot is not meant to be a distribution (or rather, a distribution + generator.) It is the opinion of most Buildroot developers that this + is not a goal we should pursue. We believe that there are other tools + better suited to generate a distro than Buildroot is. For example, + http://openembedded.org/[Open Embedded], or https://openwrt.org/[openWRT], + are such tools. + + * We prefer to push Buildroot in a direction that makes it easy (or even + easier) to generate complete root filesystems. This is what makes + Buildroot stands out in the crowd (among other things, of course!) + + * We believe that for most embedded Linux systems, binary packages are + not necessary, and potentially harmful. When binary packages are + used, it means that the system can be partially upgraded, which + creates an enormous number of possible combinations of package + versions that should be tested before doing the upgrade on the + embedded device. On the other hand, by doing complete system + upgrades by upgrading the entire root filesystem image at once, + the image deployed to the embedded system is guaranteed to really + be the one that has been tested and validated. + +[[faq-speeding-up-build]] +=== How to speed-up the build process? + +Since Buildroot often involves doing full rebuilds of the entire +system that can be quite long, we provide below a number of tips to +help reduce the build time: + + * Use a pre-built external toolchain instead of the default Buildroot + internal toolchain. By using a pre-built Linaro toolchain (on ARM) + or a Sourcery CodeBench toolchain (for ARM, x86, x86-64, MIPS, + etc.), you will save the build time of the toolchain at each + complete rebuild, approximately 15 to 20 minutes. Note that + temporarily using an external toolchain does not prevent you to + switch back to an internal toolchain (that may provide a higher + level of customization) once the rest of your system is working; + + * Use the +ccache+ compiler cache (see: xref:ccache[]); + + * Learn about rebuilding only the few packages you actually care + about (see xref:rebuild-pkg[]), but beware that sometimes full + rebuilds are anyway necessary (see xref:full-rebuild[]); + + * Make sure you are not using a virtual machine for the Linux system + used to run Buildroot. Most of the virtual machine technologies are + known to cause a significant performance impact on I/O, which is + really important for building source code; + + * Make sure that you're using only local files: do not attempt to do + a build over NFS, which significantly slows down the build. Having + the Buildroot download folder available locally also helps a bit. + + * Buy new hardware. SSDs and lots of RAM are key to speeding up the + builds. + + * Experiment with top-level parallel build, see + xref:top-level-parallel-build[]. + +[[faq-2038]] +=== How does Buildroot support Y2038? + +There are multiple situations to consider: + + * On 64-bit architectures, there is no problem, as +time_t+ has + always been 64-bit. + + * On 32-bit architectures, the situation depends on the C library: + + ** With _uclibc-ng_, there is support for 64-bit +time_t+ on 32-bit + architectures since version 1.0.46, so systems using _uclibc-ng_ + on 32-bit platforms will be Y2038 compatible when + UCLIBC_USE_TIME64 is y. This is the default since 1.0.49. + + ** With _musl_, 64-bit +time_t+ has always been used on 32-bit + architectures, so systems using _musl_ on 32-bit platforms are + Y2038 compatible. + + ** With _glibc_, 64-bit +time_t+ on 32-bit architectures is enabled + by the Buildroot option +BR2_TIME_BITS_64+. With this option + enabled, systems using _glibc_ on 32-bit platforms are Y2038 + compatible. + +Note that the above only comments about the capabilities of the C +library. Individual user-space libraries or applications, even when +built in a Y2038-compatible setup, can exhibit incorrect behavior if +they do not make correct use of the time APIs and types. diff --git a/docs/manual/getting.adoc b/docs/manual/getting.adoc new file mode 100644 index 00000000..51c97d57 --- /dev/null +++ b/docs/manual/getting.adoc @@ -0,0 +1,36 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[getting-buildroot]] +== Getting Buildroot + +Buildroot releases are made every 3 months, in February, May, August and +November. Release numbers are in the format YYYY.MM, so for example +2013.02, 2014.08. + +Release tarballs are available at http://buildroot.org/downloads/[]. + +For your convenience, a https://www.vagrantup.com/[Vagrantfile] is +available in `support/misc/Vagrantfile` in the Buildroot source tree +to quickly set up a virtual machine with the needed dependencies to +get started. + +If you want to setup an isolated buildroot environment on Linux or Mac +Os X, paste this line onto your terminal: + +---- +curl -O https://buildroot.org/downloads/Vagrantfile; vagrant up +---- + +If you are on Windows, paste this into your powershell: + +---- +(new-object System.Net.WebClient).DownloadFile( +"https://buildroot.org/downloads/Vagrantfile","Vagrantfile"); +vagrant up +---- + +If you want to follow development, you can use the daily snapshots or +make a clone of the Git repository. Refer to the +http://buildroot.org/download[Download page] of the Buildroot website +for more details. diff --git a/docs/manual/github_hash_mongrel2.png b/docs/manual/github_hash_mongrel2.png new file mode 100644 index 00000000..c695c318 Binary files /dev/null and b/docs/manual/github_hash_mongrel2.png differ diff --git a/docs/manual/how-buildroot-works.adoc b/docs/manual/how-buildroot-works.adoc new file mode 100644 index 00000000..1204d1ec --- /dev/null +++ b/docs/manual/how-buildroot-works.adoc @@ -0,0 +1,69 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== How Buildroot works + +As mentioned above, Buildroot is basically a set of Makefiles that +download, configure, and compile software with the correct options. It +also includes patches for various software packages - mainly the ones +involved in the cross-compilation toolchain (+gcc+, +binutils+ and ++uClibc+). + +There is basically one Makefile per software package, and they are +named with the +.mk+ extension. Makefiles are split into many different +parts. + +* The +toolchain/+ directory contains the Makefiles + and associated files for all software related to the + cross-compilation toolchain: +binutils+, +gcc+, +gdb+, + +kernel-headers+ and +uClibc+. + +* The +arch/+ directory contains the definitions for all the processor + architectures that are supported by Buildroot. + +* The +package/+ directory contains the Makefiles and + associated files for all user-space tools and libraries that Buildroot + can compile and add to the target root filesystem. There is one + sub-directory per package. + +* The +linux/+ directory contains the Makefiles and associated files for + the Linux kernel. + +* The +boot/+ directory contains the Makefiles and associated files for + the bootloaders supported by Buildroot. + +* The +system/+ directory contains support for system integration, e.g. + the target filesystem skeleton and the selection of an init system. + +* The +fs/+ directory contains the Makefiles and + associated files for software related to the generation of the + target root filesystem image. + +Each directory contains at least 2 files: + +* +something.mk+ is the Makefile that downloads, configures, + compiles and installs the package +something+. + +* +Config.in+ is a part of the configuration tool + description file. It describes the options related to the + package. + +The main Makefile performs the following steps (once the +configuration is done): + +* Create all the output directories: +staging+, +target+, +build+, + etc. in the output directory (+output/+ by default, + another value can be specified using +O=+) + +* Generate the toolchain target. When an internal toolchain is used, this + means generating the cross-compilation toolchain. When an external + toolchain is used, this means checking the features of the external + toolchain and importing it into the Buildroot environment. + +* Generate all the targets listed in the +TARGETS+ variable. This + variable is filled by all the individual components' + Makefiles. Generating these targets will trigger the compilation of + the userspace packages (libraries, programs), the kernel, the + bootloader and the generation of the root filesystem images, + depending on the configuration. + diff --git a/docs/manual/integration-configurable-packages.adoc b/docs/manual/integration-configurable-packages.adoc new file mode 100644 index 00000000..5091cec9 --- /dev/null +++ b/docs/manual/integration-configurable-packages.adoc @@ -0,0 +1,20 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[configurable-packages]] +=== Configurable packages + +Some foundational packages like Busybox and uClibc can be configured +with or without certain features. When writing Buildroot code that +uses such packages, contributors may assume that the options enabled +in the Buildroot-provided configurations are enabled. For example, ++package/busybox/busybox.config+ sets ++CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y+, so init scripts +meant for use with Busybox init may use +start-stop-daemon+ with long +form options. + +People who use custom configurations that disable such default options +are responsible for making sure that any relevant scripts/packages +still work, and if not, adapting them accordingly. To follow the +Busybox example above, disabling long form options will require +replacing init scripts that use them (in an overlay). diff --git a/docs/manual/integration-selinux-support.adoc b/docs/manual/integration-selinux-support.adoc new file mode 100644 index 00000000..1f6bcf47 --- /dev/null +++ b/docs/manual/integration-selinux-support.adoc @@ -0,0 +1,74 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[selinux]] +=== Using SELinux in Buildroot + +https://selinuxproject.org[SELinux] is a Linux kernel security module +enforcing access control policies. In addition to the traditional file +permissions and access control lists, +SELinux+ allows to write rules +for users or processes to access specific functions of resources +(files, sockets...). + +_SELinux_ has three modes of operation: + +* _Disabled_: the policy is not applied +* _Permissive_: the policy is applied, and non-authorized actions are + simply logged. This mode is often used for troubleshooting SELinux + issues. +* _Enforcing_: the policy is applied, and non-authorized actions are + denied + +In Buildroot the mode of operation is controlled by the ++BR2_PACKAGE_REFPOLICY_POLICY_STATE_*+ configuration options. The +Linux kernel also has various configuration options that affect how ++SELinux+ is enabled (see +security/selinux/Kconfig+ in the Linux +kernel sources). + +By default in Buildroot the +SELinux+ policy is provided by the +upstream https://github.com/SELinuxProject/refpolicy[refpolicy] +project, enabled with +BR2_PACKAGE_REFPOLICY+. + +[[enabling-selinux]] +==== Enabling SELinux support + +To have proper support for +SELinux+ in a Buildroot generated system, +the following configuration options must be enabled: + +* +BR2_PACKAGE_LIBSELINUX+ +* +BR2_PACKAGE_REFPOLICY+ + +In addition, your filesystem image format must support extended +attributes. + +[[selinux-policy-tweaking]] +==== SELinux policy tweaking + +The +SELinux refpolicy+ contains modules that can be enabled or +disabled when being built. Each module provide a number of +SELinux+ +rules. In Buildroot the non-base modules are disabled by default and +several ways to enable such modules are provided: + +- Packages can enable a list of +SELinux+ modules within the +refpolicy+ using + the +_SELINUX_MODULES+ variable. +- Packages can provide additional +SELinux+ modules by putting them (.fc, .if + and .te files) in +package//selinux/+. +- Extra +SELinux+ modules can be added in directories pointed by the + +BR2_REFPOLICY_EXTRA_MODULES_DIRS+ configuration option. +- Additional modules in the +refpolicy+ can be enabled if listed in the + +BR2_REFPOLICY_EXTRA_MODULES_DEPENDENCIES+ configuration option. + +Buildroot also allows to completely override the +refpolicy+. This +allows to provide a full custom policy designed specifically for a +given system. When going this way, all of the above mechanisms are +disabled: no extra +SElinux+ module is added to the policy, and all +the available modules within the custom policy are enabled and built +into the final binary policy. The custom policy must be a fork of the +official https://github.com/SELinuxProject/refpolicy[refpolicy]. + +In order to fully override the +refpolicy+ the following configuration +variables have to be set: + +- +BR2_PACKAGE_REFPOLICY_CUSTOM_GIT+ +- +BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_URL+ +- +BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_VERSION+ diff --git a/docs/manual/integration-systemd.adoc b/docs/manual/integration-systemd.adoc new file mode 100644 index 00000000..44248b43 --- /dev/null +++ b/docs/manual/integration-systemd.adoc @@ -0,0 +1,27 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[integration-systemd]] +=== Systemd + +This chapter describes the decisions taken in Buildroot's integration of +systemd, and how various use cases can be implemented. + +==== DBus daemon + +Systemd requires a DBus daemon. There are two options for it: traditional dbus +(+BR2_PACKAGE_DBUS+) and bus1 dbus-broker (+BR2_PACKAGE_DBUS_BROKER+). At +least one of them must be chosen. If both are included in the configuration, +dbus-broker will be used as system bus, but the traditional dbus-daemon is +still installed as well and can be used as session bus. Also its tools (e.g. ++dbus-send+) can be used (systemd itself has +busctl+ as an alternative). In +addition, the traditional dbus package is the only one that provides +libdbus+, +which is used by many packages as dbus integration library. + +Both in the dbus and in the dbus-broker case, the daemon runs as user +dbus+. +The DBus configuration files are also identical for both. + +To make sure that only one of the two daemons is started as system bus, the +systemd activation files of the dbus package (+dbus.socket+ and the ++dbus.service+ symlink in +multi-user.target.wants+) are removed when +dbus-broker is selected. diff --git a/docs/manual/integration.adoc b/docs/manual/integration.adoc new file mode 100644 index 00000000..53305edc --- /dev/null +++ b/docs/manual/integration.adoc @@ -0,0 +1,16 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[integration]] +== Integration topics + +This chapter discusses how various things are integrated at system +level. Buildroot is highly configurable, almost everything discussed +here can be changed or overridden by xref:rootfs-custom[rootfs overlay +or custom skeleton] configuration. + +include::integration-configurable-packages.adoc[] + +include::integration-systemd.adoc[] + +include::integration-selinux-support.adoc[] diff --git a/docs/manual/introduction.adoc b/docs/manual/introduction.adoc new file mode 100644 index 00000000..476aa81e --- /dev/null +++ b/docs/manual/introduction.adoc @@ -0,0 +1,26 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== About Buildroot + +Buildroot is a tool that simplifies and automates the process of +building a complete Linux system for an embedded system, using +cross-compilation. + +In order to achieve this, Buildroot is able to generate a +cross-compilation toolchain, a root filesystem, a Linux kernel image +and a bootloader for your target. Buildroot can be used for any +combination of these options, independently (you can for example use +an existing cross-compilation toolchain, and build only your root +filesystem with Buildroot). + +Buildroot is useful mainly for people working with embedded systems. +Embedded systems often use processors that are not the regular x86 +processors everyone is used to having in his PC. They can be PowerPC +processors, MIPS processors, ARM processors, etc. + +Buildroot supports numerous processors and their variants; it also +comes with default configurations for several boards available +off-the-shelf. Besides this, a number of third-party projects are based on, +or develop their BSP footnote:[BSP: Board Support Package] or +SDK footnote:[SDK: Software Development Kit] on top of Buildroot. diff --git a/docs/manual/known-issues.adoc b/docs/manual/known-issues.adoc new file mode 100644 index 00000000..743b794e --- /dev/null +++ b/docs/manual/known-issues.adoc @@ -0,0 +1,15 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== Known issues + +* It is not possible to pass extra linker options via +BR2_TARGET_LDFLAGS+ + if such options contain a +$+ sign. For example, the following is known + to break: +BR2_TARGET_LDFLAGS="-Wl,-rpath=\'$ORIGIN/../lib'"+ + +* The +libffi+ package is not supported on the SuperH 2 and ARMv7-M + architectures. + +* The +prboom+ package triggers a compiler failure with the SuperH 4 + compiler from Sourcery CodeBench, version 2012.09. + diff --git a/docs/manual/legal-notice.adoc b/docs/manual/legal-notice.adoc new file mode 100644 index 00000000..495c5ffe --- /dev/null +++ b/docs/manual/legal-notice.adoc @@ -0,0 +1,122 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[legal-info]] + +== Legal notice and licensing + +=== Complying with open source licenses + +All of the end products of Buildroot (toolchain, root filesystem, kernel, +bootloaders) contain open source software, released under various licenses. + +Using open source software gives you the freedom to build rich embedded +systems, choosing from a wide range of packages, but also imposes some +obligations that you must know and honour. +Some licenses require you to publish the license text in the documentation of +your product. Others require you to redistribute the source code of the +software to those that receive your product. + +The exact requirements of each license are documented in each package, and +it is your responsibility (or that of your legal office) to comply with those +requirements. +To make this easier for you, Buildroot can collect for you some material you +will probably need. To produce this material, after you have configured +Buildroot with +make menuconfig+, +make xconfig+ or +make gconfig+, run: + +---- +make legal-info +---- + +Buildroot will collect legally-relevant material in your output directory, +under the +legal-info/+ subdirectory. +There you will find: + +* A +README+ file, that summarizes the produced material and contains warnings + about material that Buildroot could not produce. +* +buildroot.config+: this is the Buildroot configuration file that is usually + produced with +make menuconfig+, and which is necessary to reproduce the + build. +* The source code for all packages; this is saved in the +sources/+ and + +host-sources/+ subdirectories for target and host packages respectively. + The source code for packages that set +_REDISTRIBUTE = NO+ will not be + saved. + Patches that were applied are also saved, along with a file named +series+ + that lists the patches in the order they were applied. Patches are under the + same license as the files that they modify. + Note: Buildroot applies additional patches to Libtool scripts of + autotools-based packages. These patches can be found under + +support/libtool+ in the Buildroot source and, due to technical + limitations, are not saved with the package sources. You may need to + collect them manually. +* A manifest file (one for host and one for target packages) listing the + configured packages, their version, license and related information. + Some of this information might not be defined in Buildroot; such items are + marked as "unknown". +* The license texts of all packages, in the +licenses/+ and +host-licenses/+ + subdirectories for target and host packages respectively. + If the license file(s) are not defined in Buildroot, the file is not produced + and a warning in the +README+ indicates this. + +Please note that the aim of the +legal-info+ feature of Buildroot is to +produce all the material that is somehow relevant for legal compliance with the +package licenses. Buildroot does not try to produce the exact material that +you must somehow make public. Certainly, more material is produced than is +needed for a strict legal compliance. For example, it produces the source code +for packages released under BSD-like licenses, that you are not required to +redistribute in source form. + +Moreover, due to technical limitations, Buildroot does not produce some +material that you will or may need, such as the toolchain source code for +some of the external toolchains and the Buildroot source code itself. +When you run +make legal-info+, Buildroot produces warnings in the +README+ +file to inform you of relevant material that could not be saved. + +Finally, keep in mind that the output of +make legal-info+ is based on +declarative statements in each of the packages recipes. The Buildroot +developers try to do their best to keep those declarative statements as +accurate as possible, to the best of their knowledge. However, it is very +well possible that those declarative statements are not all fully accurate +nor exhaustive. You (or your legal department) _have_ to check the output +of +make legal-info+ before using it as your own compliance delivery. See +the _NO WARRANTY_ clauses (clauses 11 and 12) in the +COPYING+ file at the +root of the Buildroot distribution. + +[[legal-info-buildroot]] +=== Complying with the Buildroot license + +Buildroot itself is an open source software, released under the +http://www.gnu.org/licenses/old-licenses/gpl-2.0.html[GNU General +Public License, version 2] or (at your option) any later version, with +the exception of the package patches detailed below. +However, being a build system, it is not normally part of the end product: +if you develop the root filesystem, kernel, bootloader or toolchain for a +device, the code of Buildroot is only present on the development machine, not +in the device storage. + +Nevertheless, the general view of the Buildroot developers is that you should +release the Buildroot source code along with the source code of other packages +when releasing a product that contains GPL-licensed software. +This is because the +http://www.gnu.org/licenses/old-licenses/gpl-2.0.html[GNU GPL] +defines the "'complete source code'" for an executable work as "'all the +source code for all modules it contains, plus any associated interface +definition files, plus the scripts used to control compilation and installation +of the executable'". +Buildroot is part of the 'scripts used to control compilation and +installation of the executable', and as such it is considered part of the +material that must be redistributed. + +Keep in mind that this is only the Buildroot developers' opinion, and you +should consult your legal department or lawyer in case of any doubt. + +==== Patches to packages + +Buildroot also bundles patch files, which are applied to the sources +of the various packages. Those patches are not covered by the license +of Buildroot. Instead, they are covered by the license of the software +to which the patches are applied. When said software is available +under multiple licenses, the Buildroot patches are only provided under +the publicly accessible licenses. + +See xref:patch-policy[] for the technical details. diff --git a/docs/manual/logo.png b/docs/manual/logo.png new file mode 100644 index 00000000..2db743b4 Binary files /dev/null and b/docs/manual/logo.png differ diff --git a/docs/manual/make-tips.adoc b/docs/manual/make-tips.adoc new file mode 100644 index 00000000..4ccb4605 --- /dev/null +++ b/docs/manual/make-tips.adoc @@ -0,0 +1,134 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[make-tips]] +=== 'make' tips + +This is a collection of tips that help you make the most of Buildroot. + +.Display all commands executed by make: + +---- + $ make V=1 +---- + +.Display the list of boards with a defconfig: + +---- + $ make list-defconfigs +---- + +.Display all available targets: + +---- + $ make help +---- + +Not all targets are always available, +some settings in the +.config+ file may hide some targets: + +* +busybox-menuconfig+ only works when +busybox+ is enabled; +* +linux-menuconfig+ and +linux-savedefconfig+ only work when + +linux+ is enabled; +* +uclibc-menuconfig+ is only available when the uClibc C library is + selected in the internal toolchain backend; +* +barebox-menuconfig+ and +barebox-savedefconfig+ only work when the + +barebox+ bootloader is enabled. +* +uboot-menuconfig+ and +uboot-savedefconfig+ only work when the + +U-Boot+ bootloader is enabled and the +uboot+ build system is set + to +Kconfig+. + +.Cleaning: + +Explicit cleaning is required when any of the architecture or toolchain +configuration options are changed. + +To delete all build products (including build directories, host, staging +and target trees, the images and the toolchain): + +---- + $ make clean +---- + +.Generating the manual: + +The present manual sources are located in the 'docs/manual' directory. +To generate the manual: + +---- + $ make manual-clean + $ make manual +---- + +The manual outputs will be generated in 'output/docs/manual'. + +.Notes +- A few tools are required to build the documentation (see: + xref:requirement-optional[]). + +.Resetting Buildroot for a new target: + +To delete all build products as well as the configuration: + +---- + $ make distclean +---- + +.Notes +If +ccache+ is enabled, running +make clean+ or +distclean+ does +not empty the compiler cache used by Buildroot. To delete it, refer +to xref:ccache[]. + +.Dumping the internal make variables: + +One can dump the variables known to make, along with their values: + +---- + $ make -s printvars VARS='VARIABLE1 VARIABLE2' + VARIABLE1=value_of_variable + VARIABLE2=value_of_variable +---- + +It is possible to tweak the output using some variables: + +- +VARS+ will limit the listing to variables which names match the + specified make-patterns - this must be set else nothing is printed +- +QUOTED_VARS+, if set to +YES+, will single-quote the value +- +RAW_VARS+, if set to +YES+, will print the unexpanded value + +For example: + +---- + $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES + BUSYBOX_DEPENDENCIES=skeleton toolchain + BUSYBOX_FINAL_ALL_DEPENDENCIES=skeleton toolchain + BUSYBOX_FINAL_DEPENDENCIES=skeleton toolchain + BUSYBOX_FINAL_PATCH_DEPENDENCIES= + BUSYBOX_RDEPENDENCIES=ncurses util-linux +---- + +---- + $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES QUOTED_VARS=YES + BUSYBOX_DEPENDENCIES='skeleton toolchain' + BUSYBOX_FINAL_ALL_DEPENDENCIES='skeleton toolchain' + BUSYBOX_FINAL_DEPENDENCIES='skeleton toolchain' + BUSYBOX_FINAL_PATCH_DEPENDENCIES='' + BUSYBOX_RDEPENDENCIES='ncurses util-linux' +---- + +---- + $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES RAW_VARS=YES + BUSYBOX_DEPENDENCIES=skeleton toolchain + BUSYBOX_FINAL_ALL_DEPENDENCIES=$(sort $(BUSYBOX_FINAL_DEPENDENCIES) $(BUSYBOX_FINAL_PATCH_DEPENDENCIES)) + BUSYBOX_FINAL_DEPENDENCIES=$(sort $(BUSYBOX_DEPENDENCIES)) + BUSYBOX_FINAL_PATCH_DEPENDENCIES=$(sort $(BUSYBOX_PATCH_DEPENDENCIES)) + BUSYBOX_RDEPENDENCIES=ncurses util-linux +---- + +The output of quoted variables can be reused in shell scripts, for example: + +---- + $ eval $(make -s printvars VARS=BUSYBOX_DEPENDENCIES QUOTED_VARS=YES) + $ echo $BUSYBOX_DEPENDENCIES + skeleton toolchain +---- diff --git a/docs/manual/makedev-syntax.adoc b/docs/manual/makedev-syntax.adoc new file mode 100644 index 00000000..e63c9233 --- /dev/null +++ b/docs/manual/makedev-syntax.adoc @@ -0,0 +1,108 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[makedev-syntax]] +== Makedev syntax documentation + +The makedev syntax is used in several places in Buildroot to +define changes to be made for permissions, or which device files to +create and how to create them, in order to avoid calls to mknod. + +This syntax is derived from the makedev utility, and more complete +documentation can be found in the +package/makedevs/README+ file. + +It takes the form of a space separated list of fields, one file per +line; the fields are: + +|=========================================================== +|name |type |mode |uid |gid |major |minor |start |inc |count +|=========================================================== + +There are a few non-trivial blocks: + +- +name+ is the path to the file you want to create/modify +- +type+ is the type of the file, being one of: + * `f`: a regular file, which must already exist + * `F`: a regular file, which is ignored and not created if missing + * `d`: a directory, which is created, as well as its parents, if missing + * `r`: a directory recursively, which must already exist + * `c`: a character device file, which parent directory must exist + * `b`: a block device file, which parent directory must exist + * `p`: a named pipe, which parent directory must exist +- +mode+ are the usual permissions settings (only numerical values + are allowed); + for type `d`, the mode of existing parents is not changed, but the mode + of created parents is set; + for types `f`, `F`, and `r`, +mode+ can also be set to +-1+ to not + change the mode (and only change uid and gid) +- +uid+ and +gid+ are the UID and GID to set on this file; can be + either numerical values or actual names +- +major+ and +minor+ are here for device files, set to +-+ for other + files +- +start+, +inc+ and +count+ are for when you want to create a batch + of files, and can be reduced to a loop, beginning at +start+, + incrementing its counter by +inc+ until it reaches +count+ + +Let's say you want to change the ownership and permissions of a given +file; using this syntax, you will need to write: + +---- +/usr/bin/foo f 755 0 0 - - - - - +/usr/bin/bar f 755 root root - - - - - +/data/buz f 644 buz-user buz-group - - - - - +/data/baz f -1 baz-user baz-group - - - - - +---- + +Alternatively, if you want to change owner of a directory recursively, +you can write (to set UID to `foo` and GID to `bar` for the directory +`/usr/share/myapp` and all files and directories below it): + +---- +/usr/share/myapp r -1 foo bar - - - - - +---- + +On the other hand, if you want to create the device file +/dev/hda+ +and the corresponding 15 files for the partitions, you will need for ++/dev/hda+: + +---- +/dev/hda b 640 root root 3 0 0 0 - +---- + +and then for device files corresponding to the partitions of ++/dev/hda+, +/dev/hdaX+, +X+ ranging from 1 to 15: + +---- +/dev/hda b 640 root root 3 1 1 1 15 +---- + +Extended attributes are supported if ++BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES+ is enabled. +This is done by adding a line starting with +|xattr+ after +the line describing the file. Right now, only capability +is supported as extended attribute. + +|===================== +| \|xattr | capability +|===================== + +- +|xattr+ is a "flag" that indicate an extended attribute +- +capability+ is a capability to add to the previous file + +If you want to add the capability cap_sys_admin to the binary foo, +you will write : + +---- +/usr/bin/foo f 755 root root - - - - - +|xattr cap_sys_admin+eip +---- + +You can add several capabilities to a file by using several +|xattr+ lines. +If you want to add the capability cap_sys_admin and cap_net_admin to the +binary foo, you will write : + +---- +/usr/bin/foo f 755 root root - - - - - +|xattr cap_sys_admin+eip +|xattr cap_net_admin+eip +---- diff --git a/docs/manual/makeusers-syntax.adoc b/docs/manual/makeusers-syntax.adoc new file mode 100644 index 00000000..0a955970 --- /dev/null +++ b/docs/manual/makeusers-syntax.adoc @@ -0,0 +1,105 @@ +// -*- mode:doc -*- ; +// vim: set syntax=asciidoc: + +[[makeuser-syntax]] +== Makeusers syntax documentation + +The syntax to create users is inspired by the makedev syntax, above, but +is specific to Buildroot. + +The syntax for adding a user is a space-separated list of fields, one +user per line; the fields are: + +|================================================================= +|username |uid |group |gid |password |home |shell |groups |comment +|================================================================= + +Where: + +- +username+ is the desired user name (aka login name) for the user. + It can not be +root+, and must be unique. If set to +-+, then just a + group will be created. +- +uid+ is the desired UID for the user. It must be unique, and not + +0+. If set to +-1+ or +-2+, then a unique UID will be computed by + Buildroot, with +-1+ denoting a system UID from [100...999] and +-2+ + denoting a user UID from [1000...1999]. +- +group+ is the desired name for the user's main group. It can not + be +root+. If the group does not exist, it will be created. +- +gid+ is the desired GID for the user's main group. It must be unique, + and not +0+. If set to +-1+ or +-2+, and the group does not already + exist, then a unique GID will be computed by Buildroot, with +-1+ + denoting a system GID from [100...999] and +-2+ denoting a user GID + from [1000...1999]. +- +password+ is the crypt(3)-encoded password. If prefixed with +!+, + then login is disabled. If prefixed with +=+, then it is interpreted + as clear-text, and will be crypt-encoded (using MD5). If prefixed with + +!=+, then the password will be crypt-encoded (using MD5) and login + will be disabled. If set to +*+, then login is not allowed. If set to + +-+, then no password value will be set. +- +home+ is the desired home directory for the user. If set to '-', no + home directory will be created, and the user's home will be +/+. + Explicitly setting +home+ to +/+ is not allowed. +- +shell+ is the desired shell for the user. If set to +-+, then + +/bin/false+ is set as the user's shell. +- +groups+ is the comma-separated list of additional groups the user + should be part of. If set to +-+, then the user will be a member of + no additional group. Missing groups will be created with an arbitrary + +gid+. +- +comment+ (aka https://en.wikipedia.org/wiki/Gecos_field[GECOS] + field) is an almost-free-form text. + +There are a few restrictions on the content of each field: + +* except for +comment+, all fields are mandatory. +* except for +comment+, fields may not contain spaces. +* no field may contain a colon (+:+). + +If +home+ is not +-+, then the home directory, and all files below, +will belong to the user and its main group. + +Examples: + +---- +foo -1 bar -1 !=blabla /home/foo /bin/sh alpha,bravo Foo user +---- + +This will create this user: + +- +username+ (aka login name) is: +foo+ +- +uid+ is computed by Buildroot +- main +group+ is: +bar+ +- main group +gid+ is computed by Buildroot +- clear-text +password+ is: +blabla+, will be crypt(3)-encoded, and login is disabled. +- +home+ is: +/home/foo+ +- +shell+ is: +/bin/sh+ +- +foo+ is also a member of +groups+: +alpha+ and +bravo+ +- +comment+ is: +Foo user+ + +---- +test 8000 wheel -1 = - /bin/sh - Test user +---- + +This will create this user: + +- +username+ (aka login name) is: +test+ +- +uid+ is : +8000+ +- main +group+ is: +wheel+ +- main group +gid+ is computed by Buildroot, and will use the value defined in the rootfs skeleton +- +password+ is empty (aka no password). +- +home+ is +/+ but will not belong to +test+ +- +shell+ is: +/bin/sh+ +- +test+ is not a member of any additional +groups+ +- +comment+ is: +Test user+ + + +=== Caveat with automatic UIDs and GIDs + +When updating buildroot or when packages are added or removed to/from +the configuration, it is possible that the automatic UIDs and GIDs are +changed. This can be a problem if persistent files were created with +that user or group: after upgrade, they will suddenly have a different +owner. + +Therefore, it is advisable to perpetuate the automatic IDs. This can be +done by adding a users table with the generated IDs. It is only needed +to do this for UIDs that actually create persistent files, e.g. database. diff --git a/docs/manual/manual.adoc b/docs/manual/manual.adoc new file mode 100644 index 00000000..31d5f80b --- /dev/null +++ b/docs/manual/manual.adoc @@ -0,0 +1,75 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + += The Buildroot user manual +:toc: + +Buildroot {sys:echo $\{BR2_VERSION%%-git*\}} manual generated on {localdate} +{localtime} from git revision {sys:git rev-parse --short HEAD} + +The Buildroot manual is written by the Buildroot developers. +It is licensed under the GNU General Public License, version 2. Refer to the +http://git.buildroot.org/buildroot/tree/COPYING?id={sys:git rev-parse HEAD}[COPYING] +file in the Buildroot sources for the full text of this license. + +Copyright (C) The Buildroot developers + +image::logo.png[] + += Getting started + +include::introduction.adoc[] + +include::prerequisite.adoc[] + +include::getting.adoc[] + +include::quickstart.adoc[] + +include::resources.adoc[] + += User guide + +include::configure.adoc[] + +include::configure-other-components.adoc[] + +include::common-usage.adoc[] + +include::customize.adoc[] + +include::integration.adoc[] + +include::faq-troubleshooting.adoc[] + +include::known-issues.adoc[] + +include::legal-notice.adoc[] + +include::beyond-buildroot.adoc[] + += Developer guide + +include::how-buildroot-works.adoc[] + +include::writing-rules.adoc[] + +include::adding-board-support.adoc[] + +include::adding-packages.adoc[] + +include::patch-policy.adoc[] + +include::download-infra.adoc[] + +include::debugging-buildroot.adoc[] + +include::contribute.adoc[] + +include::developers.adoc[] + +include::release-engineering.adoc[] + += Appendix + +include::appendix.adoc[] diff --git a/docs/manual/manual.html b/docs/manual/manual.html new file mode 100644 index 00000000..778e07d9 --- /dev/null +++ b/docs/manual/manual.html @@ -0,0 +1,6259 @@ + +The Buildroot user manual

The Buildroot user manual


Table of Contents

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

Buildroot ${BR2_VERSION%%-git*} manual generated on 2024-09-06 +13:37:28 UTC from git revision 769d71ae84

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

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

logo.png

Part I. Getting started

Chapter 1. About Buildroot

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

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

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

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



[1] BSP: Board Support Package

[2] SDK: Software Development Kit

Chapter 2. System requirements

Buildroot is designed to run on Linux systems.

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

2.1. Mandatory packages

  • +Build tools: +

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

    • +wget +

2.2. Optional packages

  • +Recommended dependencies: +

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

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

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

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

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

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

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

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

    • +graphviz to use graph-depends and <pkg>-graph-depends +
    • +python-matplotlib to use graph-build +
  • +Package statistics tools (pkg-stats): +

    • +python-aiohttp +

Chapter 3. Getting Buildroot

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

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

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

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

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

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

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

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

Chapter 4. Buildroot quick start

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

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

From the buildroot directory, run

 $ make menuconfig

for the original curses-based configurator, or

 $ make nconfig

for the new curses-based configurator, or

 $ make xconfig

for the Qt-based configurator, or

 $ make gconfig

for the GTK-based configurator.

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

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

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

To start the build process, simply run:

 $ make

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

The make command will generally perform the following steps:

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

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

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

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

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

Chapter 5. Community resources

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

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

+Mailing List +

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

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

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

+IRC +

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

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

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

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

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

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

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

Part II. User guide

Chapter 6. Buildroot configuration

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

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

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

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

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

6.1. Cross-compilation toolchain

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

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

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

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

Buildroot provides two solutions for the cross-compilation toolchain:

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

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

6.1.1. Internal toolchain backend

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

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

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

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

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

Advantages of this backend:

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

Drawbacks of this backend:

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

6.1.2. External toolchain backend

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

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

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

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

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

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

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

Advantages of this backend:

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

Drawbacks of this backend:

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

6.1.3. Build an external toolchain with Buildroot

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

Create a new Buildroot configuration, with the following details:

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

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

make sdk

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

In those other Buildroot projects, in the Toolchain menu:

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

External toolchain wrapper

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

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

6.2. /dev management

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

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

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

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

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

6.3. init system

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

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

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

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



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

Chapter 7. Configuration of other components

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

+BusyBox +

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

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

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

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

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

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

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

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

Chapter 8. General Buildroot usage

8.1. make tips

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

Display all commands executed by make:  +

 $ make V=1 <target>

+

Display the list of boards with a defconfig:  +

 $ make list-defconfigs

+

Display all available targets:  +

 $ make help

+

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

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

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

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

 $ make clean

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

 $ make manual-clean
+ $ make manual

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

Notes

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

 $ make distclean

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

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

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

It is possible to tweak the output using some variables:

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

For example:

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

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

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

8.2. Understanding when a full rebuild is necessary

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

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

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

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

For reference, a full rebuild is achieved by running:

$ make clean all

8.3. Understanding how to rebuild packages

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

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

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

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

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

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

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

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

8.4. Offline builds

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

 $ make source

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

8.5. Building out-of-tree

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

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

 $ make O=/tmp/build menuconfig

Or:

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

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

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

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

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

 $ make <target>

8.6. Environment variables

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

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

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

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

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

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

8.7. Dealing efficiently with filesystem images

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

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

For example:

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

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

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

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

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

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

8.8. Details about packages

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

make show-info

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

make pkg-stats

8.9. Graphing the dependencies between packages

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

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

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

make graph-depends

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

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

make <pkg>-graph-depends

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

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

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

BR2_GRAPH_OUT=svg make graph-depends

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

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

8.10. Graphing the build duration

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

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

make graph-build

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

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

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

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

BR2_GRAPH_OUT=png make graph-build

8.11. Graphing the filesystem size contribution of packages

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

To generate these data after a build, run:

make graph-size

This will generate:

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

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

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

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

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

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

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

utils/size-stats-compare -h

8.12. Top-level parallel build

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

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

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

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

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

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

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

8.13. Advanced usage

8.13.1. Using the generated toolchain outside Buildroot

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

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

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

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

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

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

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

8.13.2. Using gdb in Buildroot

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

To achieve this:

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

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

gdbserver :2345 foo

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

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

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

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

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

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

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

8.13.3. Using ccache in Buildroot

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

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

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

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

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

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

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

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

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

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

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

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

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

8.13.4. Location of downloaded packages

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

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

 export BR2_DL_DIR=<shared download location>

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

8.13.5. Package-specific make targets

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

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

make <package>-<target>

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

command/target Description

source

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

depends

Build and install all dependencies required to +build the package

extract

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

patch

Apply the patches, if any

configure

Run the configure commands, if any

build

Run the compilation commands

install-staging

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

install-target

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

install

target package: Run the 2 previous installation commands

+

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

Additionally, there are some other useful make targets:

command/target Description

show-depends

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

show-recursive-depends

Recursively displays the dependencies + required to build the package

show-rdepends

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

show-recursive-rdepends

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

graph-depends

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

graph-rdepends

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

graph-both-depends

Generate a graph of this package in both + directions (i.e the packages that depend on it and on which it + depends, directly or indirectly)

dirclean

Remove the whole package build directory

reinstall

Re-run the install commands

rebuild

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

reconfigure

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

8.13.6. Using Buildroot during development

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

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

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

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

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

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

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

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

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

For example:

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

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

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

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

make linux-rebuild all

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

make busybox-rebuild all

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

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

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

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

LINUX_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS = --include .git

Chapter 9. Project-specific customization

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

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

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

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

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

9.1. Recommended directory structure

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

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

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

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

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

9.1.1. Implementing layered customizations

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

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

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

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

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

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

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

9.2. Keeping customizations outside of Buildroot

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

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

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

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

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

Some examples:

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

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

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

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

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

We can also use multiple br2-external trees:

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

Or disable the usage of any br2-external tree:

buildroot/ $ make BR2_EXTERNAL= xconfig

9.2.1. Layout of a br2-external tree

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

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

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

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

The external.desc file

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

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

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

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

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

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

  • +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 18, Adding new packages to Buildroot. +If you prefer, you can also group the packages in subdirectories +called <boardname> and adapt the above paths accordingly.

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

The configs/ directory

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

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

The provides/ directory

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

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

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

Free-form content

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

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

Additional Linux kernel extensions

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

Example layout

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

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

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

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

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

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

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

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

And similarly for the toolchains:

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

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

9.3. Storing the Buildroot configuration

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

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

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

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

9.4. Storing the configuration of other components

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

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

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

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

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

9.5. Customizing the generated target filesystem

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

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

+Root filesystem overlays (BR2_ROOTFS_OVERLAY) +

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

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

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

+Post-build scripts (BR2_ROOTFS_POST_BUILD_SCRIPT) +

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

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

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

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

Note that the arguments from +BR2_ROOTFS_POST_SCRIPT_ARGS+ will also be
+passed to post-image and post-fakeroot scripts. If you want to use
+arguments that are only used for the post-build scripts you can use
++BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS+.

+ +In addition, you may also use these environment variables:

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

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

+Direct modification of the target filesystem +

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

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

+Custom target skeleton (BR2_ROOTFS_SKELETON_CUSTOM) +

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

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

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

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

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

+Post-fakeroot scripts (BR2_ROOTFS_POST_FAKEROOT_SCRIPT) +

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

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

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

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

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

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

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

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

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

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

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

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

9.6. Adding custom user accounts

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

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

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

9.7. Customization after the images have been created

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

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

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

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

Note that the arguments from BR2_ROOTFS_POST_SCRIPT_ARGS will also be +passed to post-build and post-fakeroot scripts. If you want to use +arguments that are only used for the post-image scripts you can use +BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS.

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

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

9.8. Adding project-specific patches and hashes

9.8.1. Providing extra patches

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

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

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

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

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

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

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

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

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

9.8.2. Providing extra hashes

Buildroot bundles a list of hashes against +which it checks the integrity of the downloaded archives, or of those +it generates locally from VCS checkouts. However, it can only do so +for the known versions; for packages where it is possible to specify +a custom version (e.g. a custom version string, a remote tarball URL, +or a VCS repository location and changeset), Buildroot can’t carry +hashes for those.

For users concerned with the integrity of such downloads, it is possible +to provide a list of hashes that Buildroot can use to check arbitrary +downloaded files. Those extra hashes are looked up similarly to the +extra patches (above); for each directory in BR2_GLOBAL_PATCH_DIR, +the first file to exist is used to check a package download:

  • +<global-patch-dir>/<packagename>/<packageversion>/<packagename>.hash +
  • +<global-patch-dir>/<packagename>/<packagename>.hash +

The utils/add-custom-hashes script can be used to generate these files.

9.9. Adding project-specific packages

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

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

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

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

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

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

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

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

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

9.10. Quick guide to storing your project-specific customizations

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

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

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

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

Chapter 10. Integration topics

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

10.1. Configurable packages

Some foundational packages like Busybox and uClibc can be configured +with or without certain features. When writing Buildroot code that +uses such packages, contributors may assume that the options enabled +in the Buildroot-provided configurations are enabled. For example, +package/busybox/busybox.config sets +CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y, so init scripts +meant for use with Busybox init may use start-stop-daemon with long +form options.

People who use custom configurations that disable such default options +are responsible for making sure that any relevant scripts/packages +still work, and if not, adapting them accordingly. To follow the +Busybox example above, disabling long form options will require +replacing init scripts that use them (in an overlay).

10.2. Systemd

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

10.2.1. DBus daemon

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

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

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

10.3. Using SELinux in Buildroot

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

SELinux has three modes of operation:

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

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

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

10.3.1. Enabling SELinux support

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

  • +BR2_PACKAGE_LIBSELINUX +
  • +BR2_PACKAGE_REFPOLICY +

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

10.3.2. SELinux policy tweaking

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

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

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

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

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

Chapter 11. Frequently Asked Questions & Troubleshooting

11.1. The boot hangs after Starting network…

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

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

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

11.2. Why is there no compiler on the target?

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

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

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

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

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

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

11.4. Why is there no documentation on the target?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

11.8. How to speed-up the build process?

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

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

11.9. How does Buildroot support Y2038?

There are multiple situations to consider:

  • +On 64-bit architectures, there is no problem, as time_t has + always been 64-bit. +
  • +On 32-bit architectures, the situation depends on the C library: +

    • +With uclibc-ng, there is support for 64-bit time_t on 32-bit + architectures since version 1.0.46, so systems using uclibc-ng + on 32-bit platforms will be Y2038 compatible when + UCLIBC_USE_TIME64 is y. This is the default since 1.0.49. +
    • +With musl, 64-bit time_t has always been used on 32-bit + architectures, so systems using musl on 32-bit platforms are + Y2038 compatible. +
    • +With glibc, 64-bit time_t on 32-bit architectures is enabled + by the Buildroot option BR2_TIME_BITS_64. With this option + enabled, systems using glibc on 32-bit platforms are Y2038 + compatible. +

Note that the above only comments about the capabilities of the C +library. Individual user-space libraries or applications, even when +built in a Y2038-compatible setup, can exhibit incorrect behavior if +they do not make correct use of the time APIs and types.

Chapter 12. Known issues

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

Chapter 13. Legal notice and licensing

13.1. Complying with open source licenses

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

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

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

make legal-info

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

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

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

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

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

13.2. Complying with the Buildroot license

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

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

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

13.2.1. Patches to packages

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

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

Chapter 14. Beyond Buildroot

14.1. Boot the generated images

14.1.1. NFS boot

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

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

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

Remember to add this path to /etc/exports.

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

14.1.2. Live CD

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

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

You can test your live CD image using QEMU:

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

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

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

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

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

14.2. Chroot

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

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

Part III. Developer guide

Chapter 15. How Buildroot works

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

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

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

Each directory contains at least 2 files:

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

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

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

Chapter 16. Coding style

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

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

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

16.1. Config.in file

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

An entry has the following pattern:

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

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

16.2. The .mk file

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

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

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

    Do not align the = signs.

  • +Indentation: use tab only: +

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

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

  • +Optional dependency: +

    • +Prefer multi-line syntax. +

      YES:

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

      NO:

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

    YES:

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

    NO:

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

16.3. The genimage.cfg file

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

An example follows:

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

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

16.4. The documentation

The documentation uses the +asciidoc format.

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

16.5. Support scripts

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

Chapter 17. Adding support for a particular board

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

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

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

Always use fixed versions or commit hashes for the different +components, not the "latest" version. For example, set +BR2_LINUX_KERNEL_CUSTOM_VERSION=y and +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE to the kernel version you tested +with. If you are using the buildroot toolchain BR2_TOOLCHAIN_BUILDROOT +(which is the default), additionally ensure that the same kernel headers +are used (BR2_KERNEL_HEADERS_AS_KERNEL, which is also the default) and +set the custom kernel headers series to match your kernel version +(BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_*).

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

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

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

 $ make <boardname>_defconfig
+ $ make

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

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

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

Chapter 18. Adding new packages to Buildroot

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

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

18.1. Package directory

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

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

18.2. Config files

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

18.2.1. Config.in file

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

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

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

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

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

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

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

source "package/libfoo/Config.in"

18.2.2. Config.in.host file

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

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

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

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

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

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

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

18.2.3. Choosing depends on or select

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

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

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

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

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

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

This means, in the following example:

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

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

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

Further formatting details: see the +coding style.

18.2.4. Dependencies on target and toolchain options

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

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

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

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

foo needs a toolchain w/ featA, featB, featC

for example:

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

or

crda needs a toolchain w/ threads

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

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

  • +Target architecture +

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

18.2.5. Dependencies on a Linux kernel built by buildroot

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

foo needs a Linux kernel to be built

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

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

18.2.6. Dependencies on udev /dev management

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

foo needs udev /dev management

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

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

18.2.7. Dependencies on features provided by virtual packages

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

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

18.3. The .mk file

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

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

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

Further formatting details: see the writing +rules.

18.4. The .hash file

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

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

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

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

  • +the type of hash, one of: +

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

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

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

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

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

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

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

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

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

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

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

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

Additionally, for packages for which it is possible to specify a custom +version (e.g. a custom version string, a remote tarball URL, or a VCS +repository location and changeset), Buildroot can’t carry hashes for +those. It is however possible to provide a list of +extra hashes that can cover such cases.

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

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

18.5. The SNNfoo start script

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

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

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

#!/bin/sh
+
+DAEMON="syslogd"
+PIDFILE="/var/run/$DAEMON.pid"
+
+SYSLOGD_ARGS=""
+
+# shellcheck source=/dev/null
+[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON"
+
+# BusyBox' syslogd does not create a pidfile, so pass "-n" in the command line
+# and use "--make-pidfile" to instruct start-stop-daemon to create one.
+start() {
+        printf 'Starting %s: ' "$DAEMON"
+        # shellcheck disable=SC2086 # we need the word splitting
+        start-stop-daemon --start --background --make-pidfile \
+                --pidfile "$PIDFILE" --exec "/sbin/$DAEMON" \
+                -- -n $SYSLOGD_ARGS
+        status=$?
+        if [ "$status" -eq 0 ]; then
+                echo "OK"
+        else
+                echo "FAIL"
+        fi
+        return "$status"
+}
+
+stop() {
+        printf 'Stopping %s: ' "$DAEMON"
+        start-stop-daemon --stop --pidfile "$PIDFILE" --exec "/sbin/$DAEMON"
+        status=$?
+        if [ "$status" -eq 0 ]; then
+                echo "OK"
+        else
+                echo "FAIL"
+                return "$status"
+        fi
+        while start-stop-daemon --stop --test --quiet --pidfile "$PIDFILE" \
+                --exec "/sbin/$DAEMON"; do
+                sleep 0.1
+        done
+        rm -f "$PIDFILE"
+        return "$status"
+}
+
+restart() {
+        stop
+        start
+}
+
+case "$1" in
+        start|stop|restart)
+                "$1";;
+        reload)
+                # Restart, since there is no true "reload" feature.
+                restart;;
+        *)
+                echo "Usage: $0 {start|stop|restart|reload}"
+                exit 1
+esac

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

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

18.6. Infrastructure for packages with specific build systems

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

18.6.1. generic-package tutorial

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

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

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

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

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

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

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

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

Example 18.1. Config script: divine package

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

So its fixup would be:

DIVINE_CONFIG_SCRIPTS = divine-config

Example 18.2. Config script: imagemagick package:

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

So it’s fixup would be:

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

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

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

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

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

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

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

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

18.6.2. generic-package reference

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

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

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

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

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

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

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

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

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

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

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

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

    # 0001-fix-cve-2020-12345.patch
    +LIBFOO_IGNORE_CVES += CVE-2020-12345
    +# only when built with libbaz, which Buildroot doesn't support
    +LIBFOO_IGNORE_CVES += CVE-2020-54321
  • + LIBFOO_CPE_ID_* variables is a set of variables that allows the + package to define its CPE + identifier. The available variables are: +

    • +LIBFOO_CPE_ID_VALID, if set to YES, specifies that the default + values for each of the following variables is appropriate, and + generates a valid CPE ID. +
    • +LIBFOO_CPE_ID_PREFIX, specifies the prefix of the CPE identifier, + i.e the first three fields. When not defined, the default value is + cpe:2.3:a. +
    • +LIBFOO_CPE_ID_VENDOR, specifies the vendor part of the CPE + identifier. When not defined, the default value is + <pkgname>_project. +
    • +LIBFOO_CPE_ID_PRODUCT, specifies the product part of the CPE + identifier. When not defined, the default value is <pkgname>. +
    • +LIBFOO_CPE_ID_VERSION, specifies the version part of the CPE + identifier. When not defined the default value is + $(LIBFOO_VERSION). +
    • +LIBFOO_CPE_ID_UPDATE specifies the update part of the CPE + identifier. When not defined the default value is *. +

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

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

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

LIBFOO_VERSION = 2.32

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

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

The preferred way to define these variables is:

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

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

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

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

18.7. Infrastructure for autotools-based packages

18.7.1. autotools-package tutorial

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

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

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

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

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

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

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

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

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

18.7.2. autotools-package reference

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

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

All the package metadata information variables that exist in the +generic package infrastructure also +exist in the autotools infrastructure.

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

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

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

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

18.8. Infrastructure for CMake-based packages

18.8.1. cmake-package tutorial

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

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

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

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

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

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

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

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

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

18.8.2. cmake-package reference

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

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

All the package metadata information variables that exist in the +generic package infrastructure also +exist in the CMake infrastructure.

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

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

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

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

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

18.9. Infrastructure for Python packages

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

18.9.1. python-package tutorial

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

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

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

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

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

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

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

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

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

18.9.2. python-package reference

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

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

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

All the package metadata information variables that exist in the +generic package infrastructure also +exist in the Python infrastructure.

Note that:

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

One variable specific to the Python infrastructure is mandatory:

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

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

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

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

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

18.9.3. Generating a python-package from a PyPI repository

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

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

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

When at the root of your buildroot directory just do :

utils/scanpypi foo bar -o package

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

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

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

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

utils/scanpypi foo bar -o other_package_dir

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

Option -h will list the available options:

utils/scanpypi -h

18.9.4. python-package CFFI backend

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

Such a package should:

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

18.10. Infrastructure for LuaRocks-based packages

18.10.1. luarocks-package tutorial

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

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

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

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

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

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

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

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

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

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

18.10.2. luarocks-package reference

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

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

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

All the package metadata information variables that exist in the +generic package infrastructure also +exist in the LuaRocks infrastructure.

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

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

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

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

18.11. Infrastructure for Perl/CPAN packages

18.11.1. perl-package tutorial

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

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

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

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

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

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

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

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

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

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

18.11.2. perl-package reference

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

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

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

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

All the package metadata information variables that exist in the +generic package infrastructure also +exist in the Perl/CPAN infrastructure.

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

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

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

18.12. Infrastructure for virtual packages

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

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

18.12.1. virtual-package tutorial

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

First, let’s create the virtual package.

18.12.2. Virtual package’s Config.in file

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

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

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

18.12.3. Virtual package’s .mk file

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

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

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

18.12.4. Provider’s Config.in file

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

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

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

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

18.12.5. Provider’s .mk file

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

01: SOME_PROVIDER_PROVIDES = something-virtual

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

18.12.6. Notes on depending on a virtual package

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

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

18.12.7. Notes on depending on a specific provider

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

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

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

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

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

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

18.13. Infrastructure for packages using kconfig for configuration files

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

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

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

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

All the package metadata information variables that exist in the +generic package infrastructure also +exist in the kconfig infrastructure.

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

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

This snippet creates the following make targets:

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

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

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

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

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

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

18.14. Infrastructure for rebar-based packages

18.14.1. rebar-package tutorial

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

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

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

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

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

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

18.14.2. rebar-package reference

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

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

All the package metadata information variables that exist in the +generic package infrastructure also +exist in the rebar infrastructure.

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

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

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

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

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

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

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

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

18.15. Infrastructure for Waf-based packages

18.15.1. waf-package tutorial

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

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

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

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

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

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

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

18.15.2. waf-package reference

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

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

All the package metadata information variables that exist in the +generic package infrastructure also +exist in the Waf infrastructure.

A few additional variables, specific to the Waf infrastructure, can +also be defined.

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

18.16. Infrastructure for Meson-based packages

18.16.1. meson-package tutorial

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

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

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

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

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

In the example, host-pkgconf and bar are declared as dependencies in +FOO_DEPENDENCIES at line 14 because the Meson build file of foo uses +pkg-config to determine the compilation flags and libraries of package bar.

Note that it is not necessary to add host-meson in the FOO_DEPENDENCIES +variable of a package, since this basic dependency is automatically added as +needed by the Meson package infrastructure.

If the "baz" package is selected, then support for the "baz" feature in "foo" is +activated by adding -Dbaz=true to FOO_CONF_OPTS at line 17, as specified in +the meson_options.txt file in "foo" source tree. The "baz" package is also +added to FOO_DEPENDENCIES. Note that the support for baz is explicitly +disabled at line 20, if the package is not selected.

To sum it up, to add a new meson-based package, the Makefile example can be +copied verbatim then edited to replace all occurences of FOO with the +uppercase name of the new package and update the values of the standard +variables.

18.16.2. meson-package reference

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

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

All the package metadata information variables that exist in the +generic package infrastructure also +exist in the Meson infrastructure.

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

  • +FOO_SUBDIR may contain the name of a subdirectory inside the + package that contains the main meson.build file. This is useful, + if for example, the main meson.build file is not at the root of + the tree extracted by the tarball. If HOST_FOO_SUBDIR is not + specified, it defaults to FOO_SUBDIR. +
  • +FOO_CONF_ENV, to specify additional environment variables to pass to + meson for the configuration step. By default, empty. +
  • +FOO_CONF_OPTS, to specify additional options to pass to meson for the + configuration step. By default, empty. +
  • +FOO_CFLAGS, to specify compiler arguments added to the package specific + cross-compile.conf file c_args property. By default, the value of + TARGET_CFLAGS. +
  • +FOO_CXXFLAGS, to specify compiler arguments added to the package specific + cross-compile.conf file cpp_args property. By default, the value of + TARGET_CXXFLAGS. +
  • +FOO_LDFLAGS, to specify compiler arguments added to the package specific + cross-compile.conf file c_link_args and cpp_link_args properties. By + default, the value of TARGET_LDFLAGS. +
  • +FOO_MESON_EXTRA_BINARIES, to specify a space-separated list of programs + to add to the [binaries] section of the meson cross-compilation.conf + configuration file. The format is program-name='/path/to/program', with + no space around the = sign, and with the path of the program between + single quotes. By default, empty. Note that Buildroot already sets the + correct values for c, cpp, ar, strip, and pkgconfig. +
  • +FOO_MESON_EXTRA_PROPERTIES, to specify a space-separated list of + properties to add to the [properties] section of the meson + cross-compilation.conf configuration file. The format is + property-name=<value> with no space around the = sign, and with + single quotes around string values. By default, empty. Note that + Buildroot already sets values for needs_exe_wrapper, c_args, + c_link_args, cpp_args, cpp_link_args, sys_root, and + pkg_config_libdir. +
  • +FOO_NINJA_ENV, to specify additional environment variables to pass to + ninja, meson companion tool in charge of the build operations. By default, + empty. +
  • +FOO_NINJA_OPTS, to specify a space-separated list of targets to build. By + default, empty, to build the default target(s). +

18.17. Infrastructure for Cargo-based packages

Cargo is the package manager for the Rust programming language. It allows the +user to build programs or libraries written in Rust, but it also downloads and +manages their dependencies, to ensure repeatable builds. Cargo packages are +called "crates".

18.17.1. cargo-package tutorial

The Config.in file of Cargo-based package foo should contain:

01: config BR2_PACKAGE_FOO
+02:     bool "foo"
+03:     depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS
+04:     select BR2_PACKAGE_HOST_RUSTC
+05:     help
+06:       This is a comment that explains what foo is.
+07:
+08:       http://foosoftware.org/foo/

And the .mk file for this package should contain:

01: ################################################################################
+02: #
+03: # foo
+04: #
+05: ################################################################################
+06:
+07: FOO_VERSION = 1.0
+08: FOO_SOURCE = foo-$(FOO_VERSION).tar.gz
+09: FOO_SITE = http://www.foosoftware.org/download
+10: FOO_LICENSE = GPL-3.0+
+11: FOO_LICENSE_FILES = COPYING
+12:
+13: $(eval $(cargo-package))

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

As seen in line 13, it is based on the cargo-package +infrastructure. Cargo will be invoked automatically by this +infrastructure to build and install the package.

It is still possible to define custom build commands or install +commands (i.e. with FOO_BUILD_CMDS and FOO_INSTALL_TARGET_CMDS). +Those will then replace the commands from the cargo infrastructure.

18.17.2. cargo-package reference

The main macros for the Cargo package infrastructure are +cargo-package for target packages and host-cargo-package for host +packages.

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

All the package metadata information variables that exist in the +generic package infrastructure also +exist in the Cargo infrastructure.

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

  • +FOO_SUBDIR may contain the name of a subdirectory inside the package + that contains the Cargo.toml file. This is useful, if for example, it + is not at the root of the tree extracted by the tarball. If + HOST_FOO_SUBDIR is not specified, it defaults to FOO_SUBDIR. +
  • +FOO_CARGO_ENV can be used to pass additional variables in the + environment of cargo invocations. It used at both build and + installation time +
  • +FOO_CARGO_BUILD_OPTS can be used to pass additional options to + cargo at build time. +
  • +FOO_CARGO_INSTALL_OPTS can be used to pass additional options to + cargo at install time. +

A crate can depend on other libraries from crates.io or git +repositories, listed in its Cargo.toml file. Buildroot automatically +takes care of downloading such dependencies as part of the download +step of packages that use the cargo-package infrastructure. Such +dependencies are then kept together with the package source code in +the tarball cached in Buildroot’s DL_DIR, and therefore the hash of +the package’s tarball doesn’t only cover the source of the package +itself, but also covers the sources of the dependencies. Thus, a change +injected into one of the dependencies will also be discovered by the +hash check. In addition, this mechanism allows the build to be +performed completely offline since cargo will not do any downloads +during the build. This mechanism is called vendoring the dependencies.

18.18. Infrastructure for Go packages

This infrastructure applies to Go packages that use the standard +build system and use bundled dependencies.

18.18.1. golang-package tutorial

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

01: ################################################################################
+02: #
+03: # foo
+04: #
+05: ################################################################################
+06:
+07: FOO_VERSION = 1.0
+08: FOO_SITE = $(call github,bar,foo,$(FOO_VERSION))
+09: FOO_LICENSE = BSD-3-Clause
+10: FOO_LICENSE_FILES = LICENSE
+11:
+12: $(eval $(golang-package))

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

On line 8, we declare the upstream location of the package, here +fetched from Github, since a large number of Go packages are hosted on +Github.

On line 9 and 10, we give licensing details about the package.

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

18.18.2. golang-package reference

In their Config.in file, packages using the golang-package +infrastructure should depend on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS +because Buildroot will automatically add a dependency on host-go +to such packages. +If you need CGO support in your package, you must add a dependency on +BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS.

The main macro of the Go package infrastructure is +golang-package. It is similar to the generic-package macro. The +ability to build host packages is also available, with the +host-golang-package macro. +Host packages built by host-golang-package macro should depend on +BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS.

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

All the package metadata information variables that exist in the +generic package infrastructure also +exist in the Go infrastructure.

Note that it is not necessary to add host-go in the +FOO_DEPENDENCIES variable of a package, since this basic dependency +is automatically added as needed by the Go package infrastructure.

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

  • +The package must specify its Go module name in the FOO_GOMOD + variable. If not specified, it defaults to + URL-domain/1st-part-of-URL/2nd-part-of-URL, e.g FOO_GOMOD will + take the value github.com/bar/foo for a package that specifies + FOO_SITE = $(call github,bar,foo,$(FOO_VERSION)). The Go package + infrastructure will automatically generate a minimal go.mod file + in the package source tree if it doesn’t exist. +
  • +FOO_LDFLAGS and FOO_TAGS can be used to pass respectively the + LDFLAGS or the TAGS to the go build command. +
  • +FOO_BUILD_TARGETS can be used to pass the list of targets that + should be built. If FOO_BUILD_TARGETS is not specified, it + defaults to .. We then have two cases: +

    • +FOO_BUILD_TARGETS is .. In this case, we assume only one binary + will be produced, and that by default we name it after the package + name. If that is not appropriate, the name of the produced binary + can be overridden using FOO_BIN_NAME. +
    • +FOO_BUILD_TARGETS is not .. In this case, we iterate over the + values to build each target, and for each produced a binary that is + the non-directory component of the target. For example if + FOO_BUILD_TARGETS = cmd/docker cmd/dockerd the binaries produced + are docker and dockerd. +
  • +FOO_INSTALL_BINS can be used to pass the list of binaries that + should be installed in /usr/bin on the target. If + FOO_INSTALL_BINS is not specified, it defaults to the lower-case + name of package. +

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

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

A Go package can depend on other Go modules, listed in its go.mod +file. Buildroot automatically takes care of downloading such +dependencies as part of the download step of packages that use the +golang-package infrastructure. Such dependencies are then kept +together with the package source code in the tarball cached in +Buildroot’s DL_DIR, and therefore the hash of the package’s tarball +includes such dependencies.

This mechanism ensures that any change in the dependencies will be +detected, and allows the build to be performed completely offline.

18.19. Infrastructure for QMake-based packages

18.19.1. qmake-package tutorial

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

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

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

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

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

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

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

18.19.2. qmake-package reference

The main macro of the QMake package infrastructure is qmake-package. +It is similar to the generic-package macro.

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

All the package metadata information variables that exist in the +generic package infrastructure also +exist in the QMake infrastructure.

A few additional variables, specific to the QMake infrastructure, can +also be defined.

  • +LIBFOO_CONF_ENV, to specify additional environment variables to + pass to the qmake script for the configuration step. By default, empty. +
  • +LIBFOO_CONF_OPTS, to specify additional options to pass to the + qmake script for the configuration step. By default, empty. +
  • +LIBFOO_MAKE_ENV, to specify additional environment variables to the + make command during the build and install steps. By default, empty. +
  • +LIBFOO_MAKE_OPTS, to specify additional targets to pass to the + make command during the build step. By default, empty. +
  • +LIBFOO_INSTALL_STAGING_OPTS, to specify additional targets to pass + to the make command during the staging installation step. By default, + install. +
  • +LIBFOO_INSTALL_TARGET_OPTS, to specify additional targets to pass + to the make command during the target installation step. By default, + install. +
  • +LIBFOO_SYNC_QT_HEADERS, to run syncqt.pl before qmake. Some packages + need this to have a properly populated include directory before + running the build. +

18.20. Infrastructure for packages building kernel modules

Buildroot offers a helper infrastructure to make it easy to write packages that +build and install Linux kernel modules. Some packages only contain a kernel +module, other packages contain programs and libraries in addition to kernel +modules. Buildroot’s helper infrastructure supports either case.

18.20.1. kernel-module tutorial

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

01: ################################################################################
+02: #
+03: # foo
+04: #
+05: ################################################################################
+06:
+07: FOO_VERSION = 1.2.3
+08: FOO_SOURCE = foo-$(FOO_VERSION).tar.xz
+09: FOO_SITE = http://www.foosoftware.org/download
+10: FOO_LICENSE = GPL-2.0
+11: FOO_LICENSE_FILES = COPYING
+12:
+13: $(eval $(kernel-module))
+14: $(eval $(generic-package))

Lines 7-11 define the usual meta-data to specify the version, archive name, +remote URI where to find the package source, licensing information.

On line 13, we invoke the kernel-module helper infrastructure, that +generates all the appropriate Makefile rules and variables to build +that kernel module.

Finally, on line 14, we invoke the +generic-package infrastructure.

The dependency on linux is automatically added, so it is not needed to +specify it in FOO_DEPENDENCIES.

What you may have noticed is that, unlike other package infrastructures, +we explicitly invoke a second infrastructure. This allows a package to +build a kernel module, but also, if needed, use any one of other package +infrastructures to build normal userland components (libraries, +executables…). Using the kernel-module infrastructure on its own is +not sufficient; another package infrastructure must be used.

Let’s look at a more complex example:

01: ################################################################################
+02: #
+03: # foo
+04: #
+05: ################################################################################
+06:
+07: FOO_VERSION = 1.2.3
+08: FOO_SOURCE = foo-$(FOO_VERSION).tar.xz
+09: FOO_SITE = http://www.foosoftware.org/download
+10: FOO_LICENSE = GPL-2.0
+11: FOO_LICENSE_FILES = COPYING
+12:
+13: FOO_MODULE_SUBDIRS = driver/base
+14: FOO_MODULE_MAKE_OPTS = KVERSION=$(LINUX_VERSION_PROBED)
+15:
+16: ifeq ($(BR2_PACKAGE_LIBBAR),y)
+17: FOO_DEPENDENCIES += libbar
+18: FOO_CONF_OPTS += --enable-bar
+19: FOO_MODULE_SUBDIRS += driver/bar
+20: else
+21: FOO_CONF_OPTS += --disable-bar
+22: endif
+23:
+24: $(eval $(kernel-module))
+26: $(eval $(autotools-package))

Here, we see that we have an autotools-based package, that also builds +the kernel module located in sub-directory driver/base and, if libbar +is enabled, the kernel module located in sub-directory driver/bar, and +defines the variable KVERSION to be passed to the Linux buildsystem +when building the module(s).

18.20.2. kernel-module reference

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

The kernel-module macro defines post-build and post-target-install +hooks to build the kernel modules. If the package’s .mk needs access +to the built kernel modules, it should do so in a post-build hook, +registered after the call to kernel-module. Similarly, if the +package’s .mk needs access to the kernel module after it has been +installed, it should do so in a post-install hook, registered after +the call to kernel-module. Here’s an example:

$(eval $(kernel-module))
+
+define FOO_DO_STUFF_WITH_KERNEL_MODULE
+    # Do something with it...
+endef
+FOO_POST_BUILD_HOOKS += FOO_DO_STUFF_WITH_KERNEL_MODULE
+
+$(eval $(generic-package))

Finally, unlike the other package infrastructures, there is no +host-kernel-module variant to build a host kernel module.

The following additional variables can optionally be defined to further +configure the build of the kernel module:

  • +FOO_MODULE_SUBDIRS may be set to one or more sub-directories (relative + to the package source top-directory) where the kernel module sources are. + If empty or not set, the sources for the kernel module(s) are considered + to be located at the top of the package source tree. +
  • +FOO_MODULE_MAKE_OPTS may be set to contain extra variable definitions + to pass to the Linux buildsystem. +

You may also reference (but you may not set!) those variables:

  • +LINUX_DIR contains the path to where the Linux kernel has been + extracted and built. +
  • +LINUX_VERSION contains the version string as configured by the user. +
  • +LINUX_VERSION_PROBED contains the real version string of the kernel, + retrieved with running make -C $(LINUX_DIR) kernelrelease +
  • +KERNEL_ARCH contains the name of the current architecture, like arm, + mips… +

18.21. Infrastructure for asciidoc documents

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

  • +html +
  • +split-html +
  • +pdf +
  • +epub +
  • +text +

Although Buildroot only contains one document written in AsciiDoc, there +is, as for packages, an infrastructure for rendering documents using the +AsciiDoc syntax.

Also as for packages, the AsciiDoc infrastructure is available from a +br2-external tree. This allows documentation for +a br2-external tree to match the Buildroot documentation, as it will be +rendered to the same formats and use the same layout and theme.

18.21.1. asciidoc-document tutorial

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

Here is an example to render a simple AsciiDoc document.

01: ################################################################################
+02: #
+03: # foo-document
+04: #
+05: ################################################################################
+06:
+07: FOO_SOURCES = $(sort $(wildcard $(FOO_DOCDIR)/*))
+08: $(eval $(call asciidoc-document))

On line 7, the Makefile declares what the sources of the document are. +Currently, it is expected that the document’s sources are only local; +Buildroot will not attempt to download anything to render a document. +Thus, you must indicate where the sources are. Usually, the string +above is sufficient for a document with no sub-directory structure.

On line 8, we call the asciidoc-document function, which generates all +the Makefile code necessary to render the document.

18.21.2. asciidoc-document reference

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

  • +FOO_SOURCES, mandatory, defines the source files for the document. +
  • +FOO_RESOURCES, optional, may contain a space-separated list of paths + to one or more directories containing so-called resources (like CSS or + images). By default, empty. +
  • +FOO_DEPENDENCIES, optional, the list of packages (most probably, + host-packages) that must be built before building this document. +
  • +FOO_TOC_DEPTH, FOO_TOC_DEPTH_<FMT>, optionals, the depth of the + table of content for this document, which can be overridden for the + specified format <FMT> (see the list of rendered formats, above, + but in uppercase, and with dash replaced by underscore; see example, + below). By default: 1. +

There are also additional hooks (see Section 18.23, “Hooks available in the various build steps” for general information +on hooks), that a document may set to define extra actions to be done at +various steps:

  • +FOO_POST_RSYNC_HOOKS to run additional commands after the sources + have been copied by Buildroot. This can for example be used to + generate part of the manual with information extracted from the + tree. As an example, Buildroot uses this hook to generate the tables + in the appendices. +
  • +FOO_CHECK_DEPENDENCIES_HOOKS to run additional tests on required + components to generate the document. In AsciiDoc, it is possible to + call filters, that is, programs that will parse an AsciiDoc block and + render it appropriately (e.g. ditaa or + aafigure). +
  • +FOO_CHECK_DEPENDENCIES_<FMT>_HOOKS, to run additional tests for + the specified format <FMT> (see the list of rendered formats, above). +

Buildroot sets the following variable that can be used in the definitions +above:

  • +$(FOO_DOCDIR), similar to $(FOO_PKGDIR), contains the path to the + directory containing foo.mk. It can be used to refer to the document + sources, and can be used in the hooks, especially the post-rsync hook + if parts of the documentation needs to be generated. +
  • +$(@D), as for traditional packages, contains the path to the directory + where the document will be copied and built. +

Here is a complete example that uses all variables and all hooks:

01: ################################################################################
+02: #
+03: # foo-document
+04: #
+05: ################################################################################
+06:
+07: FOO_SOURCES = $(sort $(wildcard $(FOO_DOCDIR)/*))
+08: FOO_RESOURCES = $(sort $(wildcard $(FOO_DOCDIR)/ressources))
+09:
+10: FOO_TOC_DEPTH = 2
+11: FOO_TOC_DEPTH_HTML = 1
+12: FOO_TOC_DEPTH_SPLIT_HTML = 3
+13:
+14: define FOO_GEN_EXTRA_DOC
+15:     /path/to/generate-script --outdir=$(@D)
+16: endef
+17: FOO_POST_RSYNC_HOOKS += FOO_GEN_EXTRA_DOC
+18:
+19: define FOO_CHECK_MY_PROG
+20:     if ! which my-prog >/dev/null 2>&1; then \
+21:         echo "You need my-prog to generate the foo document"; \
+22:         exit 1; \
+23:     fi
+24: endef
+25: FOO_CHECK_DEPENDENCIES_HOOKS += FOO_CHECK_MY_PROG
+26:
+27: define FOO_CHECK_MY_OTHER_PROG
+28:     if ! which my-other-prog >/dev/null 2>&1; then \
+29:         echo "You need my-other-prog to generate the foo document as PDF"; \
+30:         exit 1; \
+31:     fi
+32: endef
+33: FOO_CHECK_DEPENDENCIES_PDF_HOOKS += FOO_CHECK_MY_OTHER_PROG
+34:
+35: $(eval $(call asciidoc-document))

18.22. Infrastructure specific to the Linux kernel package

The Linux kernel package can use some specific infrastructures based on package +hooks for building Linux kernel tools or/and building Linux kernel extensions.

18.22.1. linux-kernel-tools

Buildroot offers a helper infrastructure to build some userspace tools +for the target available within the Linux kernel sources. Since their +source code is part of the kernel source code, a special package, +linux-tools, exists and re-uses the sources of the Linux kernel that +runs on the target.

Let’s look at an example of a Linux tool. For a new Linux tool named +foo, create a new menu entry in the existing +package/linux-tools/Config.in. This file will contain the option +descriptions related to each kernel tool that will be used and +displayed in the configuration tool. It would basically look like:

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

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

Note. Unlike other packages, the linux-tools package options appear in the +linux kernel menu, under the Linux Kernel Tools sub-menu, not under +the Target packages main menu.

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

01: ################################################################################
+02: #
+03: # foo
+04: #
+05: ################################################################################
+06:
+07: LINUX_TOOLS += foo
+08:
+09: FOO_DEPENDENCIES = libbbb
+10:
+11: define FOO_BUILD_CMDS
+12:     $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools foo
+13: endef
+14:
+15: define FOO_INSTALL_STAGING_CMDS
+16:     $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \
+17:             DESTDIR=$(STAGING_DIR) \
+18:             foo_install
+19: endef
+20:
+21: define FOO_INSTALL_TARGET_CMDS
+22:     $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \
+23:             DESTDIR=$(TARGET_DIR) \
+24:             foo_install
+25: endef

On line 7, we register the Linux tool foo to the list of available +Linux tools.

On line 9, we specify the list of dependencies this tool relies on. These +dependencies are added to the Linux package dependencies list only when the +foo tool is selected.

The rest of the Makefile, lines 11-25 defines what should be done at the +different steps of the Linux tool build process like for a +generic package. They will actually be +used only when the foo tool is selected. The only supported commands are +_BUILD_CMDS, _INSTALL_STAGING_CMDS and _INSTALL_TARGET_CMDS.

Note. One must not call $(eval $(generic-package)) or any other +package infrastructure! Linux tools are not packages by themselves, +they are part of the linux-tools package.

18.22.2. linux-kernel-extensions

Some packages provide new features that require the Linux kernel tree +to be modified. This can be in the form of patches to be applied on +the kernel tree, or in the form of new files to be added to the +tree. The Buildroot’s Linux kernel extensions infrastructure provides +a simple solution to automatically do this, just after the kernel +sources are extracted and before the kernel patches are +applied. Examples of extensions packaged using this mechanism are the +real-time extensions Xenomai and RTAI, as well as the set of +out-of-tree LCD screens drivers fbtft.

Let’s look at an example on how to add a new Linux extension foo.

First, create the package foo that provides the extension: this +package is a standard package; see the previous chapters on how to +create such a package. This package is in charge of downloading the +sources archive, checking the hash, defining the licence informations +and building user space tools if any.

Then create the Linux extension proper: create a new menu entry in +the existing linux/Config.ext.in. This file contains the option +descriptions related to each kernel extension that will be used and +displayed in the configuration tool. It would basically look like:

01: config BR2_LINUX_KERNEL_EXT_FOO
+02:     bool "foo"
+03:     help
+04:       This is a comment that explains what foo kernel extension is.
+05:
+06:       http://foosoftware.org/foo/

Then for each linux extension, add a new .mk file named +linux/linux-ext-foo.mk. It should basically contain:

01: ################################################################################
+02: #
+03: # foo
+04: #
+05: ################################################################################
+06:
+07: LINUX_EXTENSIONS += foo
+08:
+09: define FOO_PREPARE_KERNEL
+10:     $(FOO_DIR)/prepare-kernel-tree.sh --linux-dir=$(@D)
+11: endef

On line 7, we add the Linux extension foo to the list of available +Linux extensions.

On line 9-11, we define what should be done by the extension to modify +the Linux kernel tree; this is specific to the linux extension and can +use the variables defined by the foo package, like: $(FOO_DIR) or +$(FOO_VERSION)… as well as all the Linux variables, like: +$(LINUX_VERSION) or $(LINUX_VERSION_PROBED), $(KERNEL_ARCH)… +See the definition of those kernel variables.

18.23. Hooks available in the various build steps

The generic infrastructure (and as a result also the derived autotools +and cmake infrastructures) allow packages to specify hooks. +These define further actions to perform after existing steps. +Most hooks aren’t really useful for generic packages, since the .mk +file already has full control over the actions performed in each step +of the package construction.

The following hook points are available:

  • +LIBFOO_PRE_DOWNLOAD_HOOKS +
  • +LIBFOO_POST_DOWNLOAD_HOOKS +
  • +LIBFOO_PRE_EXTRACT_HOOKS +
  • +LIBFOO_POST_EXTRACT_HOOKS +
  • +LIBFOO_PRE_RSYNC_HOOKS +
  • +LIBFOO_POST_RSYNC_HOOKS +
  • +LIBFOO_PRE_PATCH_HOOKS +
  • +LIBFOO_POST_PATCH_HOOKS +
  • +LIBFOO_PRE_CONFIGURE_HOOKS +
  • +LIBFOO_POST_CONFIGURE_HOOKS +
  • +LIBFOO_PRE_BUILD_HOOKS +
  • +LIBFOO_POST_BUILD_HOOKS +
  • +LIBFOO_PRE_INSTALL_HOOKS (for host packages only) +
  • +LIBFOO_POST_INSTALL_HOOKS (for host packages only) +
  • +LIBFOO_PRE_INSTALL_STAGING_HOOKS (for target packages only) +
  • +LIBFOO_POST_INSTALL_STAGING_HOOKS (for target packages only) +
  • +LIBFOO_PRE_INSTALL_TARGET_HOOKS (for target packages only) +
  • +LIBFOO_POST_INSTALL_TARGET_HOOKS (for target packages only) +
  • +LIBFOO_PRE_INSTALL_IMAGES_HOOKS +
  • +LIBFOO_POST_INSTALL_IMAGES_HOOKS +
  • +LIBFOO_PRE_LEGAL_INFO_HOOKS +
  • +LIBFOO_POST_LEGAL_INFO_HOOKS +
  • +LIBFOO_TARGET_FINALIZE_HOOKS +

These variables are lists of variable names containing actions to be +performed at this hook point. This allows several hooks to be +registered at a given hook point. Here is an example:

define LIBFOO_POST_PATCH_FIXUP
+        action1
+        action2
+endef
+
+LIBFOO_POST_PATCH_HOOKS += LIBFOO_POST_PATCH_FIXUP

18.23.1. Using the POST_RSYNC hook

The POST_RSYNC hook is run only for packages that use a local source, +either through the local site method or the OVERRIDE_SRCDIR +mechanism. In this case, package sources are copied using rsync from +the local location into the buildroot build directory. The rsync +command does not copy all files from the source directory, though. +Files belonging to a version control system, like the directories +.git, .hg, etc. are not copied. For most packages this is +sufficient, but a given package can perform additional actions using +the POST_RSYNC hook.

In principle, the hook can contain any command you want. One specific +use case, though, is the intentional copying of the version control +directory using rsync. The rsync command you use in the hook can, among +others, use the following variables:

  • +$(SRCDIR): the path to the overridden source directory +
  • +$(@D): the path to the build directory +

18.23.2. Target-finalize hook

Packages may also register hooks in LIBFOO_TARGET_FINALIZE_HOOKS. +These hooks are run after all packages are built, but before the +filesystem images are generated. They are seldom used, and your +package probably do not need them.

18.24. Gettext integration and interaction with packages

Many packages that support internationalization use the gettext +library. Dependencies for this library are fairly complicated and +therefore, deserve some explanation.

The glibc C library integrates a full-blown implementation of +gettext, supporting translation. Native Language Support is +therefore built-in in glibc.

On the other hand, the uClibc and musl C libraries only provide a +stub implementation of the gettext functionality, which allows to +compile libraries and programs using gettext functions, but without +providing the translation capabilities of a full-blown gettext +implementation. With such C libraries, if real Native Language Support +is necessary, it can be provided by the libintl library of the +gettext package.

Due to this, and in order to make sure that Native Language Support is +properly handled, packages in Buildroot that can use NLS support +should:

  1. +Ensure NLS support is enabled when BR2_SYSTEM_ENABLE_NLS=y. This + is done automatically for autotools packages and therefore should + only be done for packages using other package infrastructures. +
  2. +Add $(TARGET_NLS_DEPENDENCIES) to the package + <pkg>_DEPENDENCIES variable. This addition should be done + unconditionally: the value of this variable is automatically + adjusted by the core infrastructure to contain the relevant list of + packages. If NLS support is disabled, this variable is empty. If + NLS support is enabled, this variable contains host-gettext so + that tools needed to compile translation files are available on the + host. In addition, if uClibc or musl are used, this variable + also contains gettext in order to get the full-blown gettext + implementation. +
  3. +If needed, add $(TARGET_NLS_LIBS) to the linker flags, so that + the package gets linked with libintl. This is generally not + needed with autotools packages as they usually detect + automatically that they should link with libintl. However, + packages using other build systems, or problematic autotools-based + packages may need this. $(TARGET_NLS_LIBS) should be added + unconditionally to the linker flags, as the core automatically + makes it empty or defined to -lintl depending on the + configuration. +

No changes should be made to the Config.in file to support NLS.

Finally, certain packages need some gettext utilities on the target, +such as the gettext program itself, which allows to retrieve +translated strings, from the command line. In such a case, the package +should:

  • +use select BR2_PACKAGE_GETTEXT in their Config.in file, + indicating in a comment above that it’s a runtime dependency only. +
  • +not add any gettext dependency in the DEPENDENCIES variable of + their .mk file. +

18.25. Tips and tricks

18.25.1. Package name, config entry name and makefile variable relationship

In Buildroot, there is some relationship between:

  • +the package name, which is the package directory name (and the + name of the *.mk file); +
  • +the config entry name that is declared in the Config.in file; +
  • +the makefile variable prefix. +

It is mandatory to maintain consistency between these elements, +using the following rules:

  • +the package directory and the *.mk name are the package name + itself (e.g.: package/foo-bar_boo/foo-bar_boo.mk); +
  • +the make target name is the package name itself (e.g.: + foo-bar_boo); +
  • +the config entry is the upper case package name with . and - + characters substituted with _, prefixed with BR2_PACKAGE_ (e.g.: + BR2_PACKAGE_FOO_BAR_BOO); +
  • +the *.mk file variable prefix is the upper case package name + with . and - characters substituted with _ (e.g.: + FOO_BAR_BOO_VERSION). +

18.25.2. How to check the coding style

Buildroot provides a script in utils/check-package that checks new or +changed files for coding style. It is not a complete language validator, +but it catches many common mistakes. It is meant to run in the actual +files you created or modified, before creating the patch for submission.

This script can be used for packages, filesystem makefiles, Config.in +files, etc. It does not check the files defining the package +infrastructures and some other files containing similar common code.

To use it, run the check-package script, by telling which files you +created or changed:

$ ./utils/check-package package/new-package/*

If you have the utils directory in your path you can also run:

$ cd package/new-package/
+$ check-package *

The tool can also be used for packages in a br2-external:

$ check-package -b /path/to/br2-ext-tree/package/my-package/*

18.25.3. How to test your package

Once you have added your new package, it is important that you test it +under various conditions: does it build for all architectures? Does it +build with the different C libraries? Does it need threads, NPTL? And +so on…

Buildroot runs autobuilders which +continuously test random configurations. However, these only build the +master branch of the git tree, and your new fancy package is not yet +there.

Buildroot provides a script in utils/test-pkg that uses the same base +configurations as used by the autobuilders so you can test your package +in the same conditions.

First, create a config snippet that contains all the necessary options +needed to enable your package, but without any architecture or toolchain +option. For example, let’s create a config snippet that just enables +libcurl, without any TLS backend:

$ cat libcurl.config
+BR2_PACKAGE_LIBCURL=y

If your package needs more configuration options, you can add them to the +config snippet. For example, here’s how you would test libcurl with +openssl as a TLS backend and the curl program:

$ cat libcurl.config
+BR2_PACKAGE_LIBCURL=y
+BR2_PACKAGE_LIBCURL_CURL=y
+BR2_PACKAGE_OPENSSL=y

Then run the test-pkg script, by telling it what config snippet to use +and what package to test:

$ ./utils/test-pkg -c libcurl.config -p libcurl

By default, test-pkg will build your package against a subset of the +toolchains used by the autobuilders, which has been selected by the +Buildroot developers as being the most useful and representative +subset. If you want to test all toolchains, pass the -a option. Note +that in any case, internal toolchains are excluded as they take too +long to build.

The output lists all toolchains that are tested and the corresponding +result (excerpt, results are fake):

$ ./utils/test-pkg -c libcurl.config -p libcurl
+                armv5-ctng-linux-gnueabi [ 1/11]: OK
+              armv7-ctng-linux-gnueabihf [ 2/11]: OK
+                        br-aarch64-glibc [ 3/11]: SKIPPED
+                           br-arcle-hs38 [ 4/11]: SKIPPED
+                            br-arm-basic [ 5/11]: FAILED
+                  br-arm-cortex-a9-glibc [ 6/11]: OK
+                   br-arm-cortex-a9-musl [ 7/11]: FAILED
+                   br-arm-cortex-m4-full [ 8/11]: OK
+                             br-arm-full [ 9/11]: OK
+                    br-arm-full-nothread [10/11]: FAILED
+                      br-arm-full-static [11/11]: OK
+11 builds, 2 skipped, 2 build failed, 1 legal-info failed

The results mean:

  • +OK: the build was successful. +
  • +SKIPPED: one or more configuration options listed in the config + snippet were not present in the final configuration. This is due to + options having dependencies not satisfied by the toolchain, such as + for example a package that depends on BR2_USE_MMU with a noMMU + toolchain. The missing options are reported in missing.config in + the output build directory (~/br-test-pkg/TOOLCHAIN_NAME/ by + default). +
  • +FAILED: the build failed. Inspect the logfile file in the output + build directory to see what went wrong: +

    • +the actual build failed, +
    • +the legal-info failed, +
    • +one of the preliminary steps (downloading the config file, applying + the configuration, running dirclean for the package) failed. +

When there are failures, you can just re-run the script with the same +options (after you fixed your package); the script will attempt to +re-build the package specified with -p for all toolchains, without +the need to re-build all the dependencies of that package.

The test-pkg script accepts a few options, for which you can get some +help by running:

$ ./utils/test-pkg -h

18.25.4. How to add a package from GitHub

Packages on GitHub often don’t have a download area with release tarballs. +However, it is possible to download tarballs directly from the repository +on GitHub. As GitHub is known to have changed download mechanisms in the +past, the github helper function should be used as shown below.

# Use a tag or a full commit ID
+FOO_VERSION = 1.0
+FOO_SITE = $(call github,<user>,<package>,v$(FOO_VERSION))

Notes

  • +The FOO_VERSION can either be a tag or a commit ID. +
  • +The tarball name generated by github matches the default one from + Buildroot (e.g.: foo-f6fb6654af62045239caed5950bc6c7971965e60.tar.gz), + so it is not necessary to specify it in the .mk file. +
  • +When using a commit ID as version, you should use the full 40 hex characters. +
  • +When the tag contains a prefix such as v in v1.0, then the + VERSION variable should contain just 1.0, and the v should be + added directly in the SITE variable, as illustrated above. This + ensures that the VERSION variable value can be used to match + against release-monitoring.org + results. +

If the package you wish to add does have a release section on GitHub, the +maintainer may have uploaded a release tarball, or the release may just point +to the automatically generated tarball from the git tag. If there is a +release tarball uploaded by the maintainer, we prefer to use that since it +may be slightly different (e.g. it contains a configure script so we don’t +need to do AUTORECONF).

You can see on the release page if it’s an uploaded tarball or a git tag:

github_hash_mongrel2.png
  • +If it looks like the image above then it was uploaded by the + maintainer and you should use that link (in that example: + mongrel2-v1.9.2.tar.bz2) to specify FOO_SITE, and not use the + github helper. +
  • +On the other hand, if there’s is only the "Source code" link, then + it’s an automatically generated tarball and you should use the + github helper function. +

18.25.5. How to add a package from Gitlab

In a similar way to the github macro described in +Section 18.25.4, “How to add a package from GitHub”, Buildroot also provides the gitlab macro +to download from Gitlab repositories. It can be used to download +auto-generated tarballs produced by Gitlab, either for specific tags +or commits:

# Use a tag or a full commit ID
+FOO_VERSION = 1.0
+FOO_SITE = $(call gitlab,<user>,<package>,v$(FOO_VERSION))

By default, it will use a .tar.gz tarball, but Gitlab also provides +.tar.bz2 tarballs, so by adding a <pkg>_SOURCE variable, this +.tar.bz2 tarball can be used:

# Use a tag or a full commit ID
+FOO_VERSION = 1.0
+FOO_SITE = $(call gitlab,<user>,<package>,v$(FOO_VERSION))
+FOO_SOURCE = foo-$(FOO_VERSION).tar.bz2

If there is a specific tarball uploaded by the upstream developers in +https://gitlab.com/<project>/releases/, do not use this macro, but +rather use directly the link to the tarball.

18.26. Conclusion

As you can see, adding a software package to Buildroot is simply a +matter of writing a Makefile using an existing example and modifying it +according to the compilation process required by the package.

If you package software that might be useful for other people, don’t +forget to send a patch to the Buildroot mailing list (see +Section 22.5, “Submitting patches”)!

Chapter 19. Patching a package

While integrating a new package or updating an existing one, it may be +necessary to patch the source of the software to get it cross-built within +Buildroot.

Buildroot offers an infrastructure to automatically handle this during +the builds. It supports three ways of applying patch sets: downloaded patches, +patches supplied within buildroot and patches located in a user-defined +global patch directory.

19.1. Providing patches

19.1.1. Downloaded

If it is necessary to apply a patch that is available for download, then add it +to the <packagename>_PATCH variable. If an entry contains ://, +then Buildroot will assume it is a full URL and download the patch +from this location. Otherwise, Buildroot will assume that the patch should be +downloaded from <packagename>_SITE. It can be a single patch, +or a tarball containing a patch series.

Like for all downloads, a hash should be added to the <packagename>.hash +file.

This method is typically used for packages from Debian.

19.1.2. Within Buildroot

Most patches are provided within Buildroot, in the package +directory; these typically aim to fix cross-compilation, libc support, +or other such issues.

These patch files should be named <number>-<description>.patch.

Notes

  • +The patch files coming with Buildroot should not contain any package version + reference in their filename. +
  • +The field <number> in the patch file name refers to the apply order, + and shall start at 1; It is preferred to pad the number with zeros up to 4 + digits, like git-format-patch does. E.g.: 0001-foobar-the-buz.patch +
  • +The patch email subject prefix shall not be numbered. Patches shall + be generated with the git format-patch -N command, since this + numbering is automatically added for series. For example, the patch + subject line should look like Subject: [PATCH] foobar the buz rather + than Subject: [PATCH n/m] foobar the buz. +
  • +Previously, it was mandatory for patches to be prefixed with the name of + the package, like <package>-<number>-<description>.patch, but that is + no longer the case. Existing packages will be fixed as time passes. Do + not prefix patches with the package name. +
  • +Previously, a series file, as used by quilt, could also be added in + the package directory. In that case, the series file defines the patch + application order. This is deprecated, and will be removed in the future. + Do not use a series file. +

19.1.3. Global patch directory

The BR2_GLOBAL_PATCH_DIR configuration file option can be +used to specify a space separated list of one or more directories +containing global package patches. See Section 9.8.1, “Providing extra patches” for +details.

19.2. How patches are applied

  1. +Run the <packagename>_PRE_PATCH_HOOKS commands if defined; +
  2. +Cleanup the build directory, removing any existing *.rej files; +
  3. +If <packagename>_PATCH is defined, then patches from these + tarballs are applied; +
  4. +If there are some *.patch files in the package’s Buildroot + directory or in a package subdirectory named <packageversion>, + then: +

    • +If a series file exists in the package directory, then patches are + applied according to the series file; +
    • +Otherwise, patch files matching *.patch are applied in alphabetical + order. + So, to ensure they are applied in the right order, it is highly + recommended to name the patch files like this: + <number>-<description>.patch, where <number> refers to the + apply order. +
  5. +If BR2_GLOBAL_PATCH_DIR is defined, the directories will be + enumerated in the order they are specified. The patches are applied + as described in the previous step. +
  6. +Run the <packagename>_POST_PATCH_HOOKS commands if defined. +

If something goes wrong in the steps 3 or 4, then the build fails.

19.3. Format and licensing of the package patches

Patches are released under the same license as the software they apply +to (see Section 13.2, “Complying with the Buildroot license”).

A message explaining what the patch does, and why it is needed, should +be added in the header commentary of the patch.

You should add a Signed-off-by statement in the header of the each +patch to help with keeping track of the changes and to certify that the +patch is released under the same license as the software that is modified.

If the software is under version control, it is recommended to use the +upstream SCM software to generate the patch set.

Otherwise, concatenate the header with the output of the +diff -purN package-version.orig/ package-version/ command.

If you update an existing patch (e.g. when bumping the package version), +make sure the existing From header and Signed-off-by tags are not +removed, but do update the rest of the patch comment when appropriate.

At the end, the patch should look like:

configure.ac: add C++ support test
+
+Signed-off-by: John Doe <john.doe@noname.org>
+
+--- configure.ac.orig
++++ configure.ac
+@@ -40,2 +40,12 @@
+
+AC_PROG_MAKE_SET
++
++AC_CACHE_CHECK([whether the C++ compiler works],
++               [rw_cv_prog_cxx_works],
++               [AC_LANG_PUSH([C++])
++                AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
++                               [rw_cv_prog_cxx_works=yes],
++                               [rw_cv_prog_cxx_works=no])
++                AC_LANG_POP([C++])])
++
++AM_CONDITIONAL([CXX_WORKS], [test "x$rw_cv_prog_cxx_works" = "xyes"])

19.4. Additional patch documentation

Ideally, all patches should document an upstream patch or patch submission, when +applicable, via the Upstream trailer.

When backporting an upstream patch that has been accepted into mainline, it is +preferred that the URL to the commit is referenced:

Upstream: <URL to upstream commit>

If a new issue is identified in Buildroot and upstream is generally affected by +the issue (it’s not a Buildroot specific issue), users should submit the patch +upstream and provide a link to that submission when possible:

Upstream: <URL to upstream mailing list submission or merge request>

Patches that have been submitted but were denied upstream should note that and +include comments about why the patch is being used despite the upstream status.

Note: in any of the above scenarios, it is also sensible to add a few words +about any changes to the patch that may have been necessary.

If a patch does not apply upstream then this should be noted with a comment:

Upstream: N/A <additional information about why patch is Buildroot specific>

Adding this documentation helps streamline the patch review process during +package version updates.

Chapter 20. Download infrastructure

TODO

Chapter 21. Debugging Buildroot

It is possible to instrument the steps Buildroot does when building +packages. Define the variable BR2_INSTRUMENTATION_SCRIPTS to contain +the path of one or more scripts (or other executables), in a +space-separated list, you want called before and after each step. The +scripts are called in sequence, with three parameters:

  • +start or end to denote the start (resp. the end) of a step; +
  • +the name of the step about to be started, or which just ended; +
  • +the name of the package. +

For example :

make BR2_INSTRUMENTATION_SCRIPTS="/path/to/my/script1 /path/to/my/script2"

The list of steps is:

  • +extract +
  • +patch +
  • +configure +
  • +build +
  • +install-host, when a host-package is installed in $(HOST_DIR) +
  • +install-target, when a target-package is installed in $(TARGET_DIR) +
  • +install-staging, when a target-package is installed in $(STAGING_DIR) +
  • +install-image, when a target-package installs files in $(BINARIES_DIR) +

The script has access to the following variables:

  • +BR2_CONFIG: the path to the Buildroot .config file +
  • +HOST_DIR, STAGING_DIR, TARGET_DIR: see + Section 18.6.2, “generic-package reference” +
  • +BUILD_DIR: the directory where packages are extracted and built +
  • +BINARIES_DIR: the place where all binary files (aka images) are + stored +
  • +BASE_DIR: the base output directory +
  • +PARALLEL_JOBS: the number of jobs to use when running parallel processes. +

Chapter 22. Contributing to Buildroot

There are many ways in which you can contribute to Buildroot: analyzing +and fixing bugs, analyzing and fixing package build failures detected by +the autobuilders, testing and reviewing patches sent by other +developers, working on the items in our TODO list and sending your own +improvements to Buildroot or its manual. The following sections give a +little more detail on each of these items.

If you are interested in contributing to Buildroot, the first thing you +should do is to subscribe to the Buildroot mailing list. This list is +the main way of interacting with other Buildroot developers and to send +contributions to. If you aren’t subscribed yet, then refer to +Chapter 5, Community resources for the subscription link.

If you are going to touch the code, it is highly recommended to use a +git repository of Buildroot, rather than starting from an extracted +source code tarball. Git is the easiest way to develop from and directly +send your patches to the mailing list. Refer to Chapter 3, Getting Buildroot +for more information on obtaining a Buildroot git tree.

22.1. Reproducing, analyzing and fixing bugs

A first way of contributing is to have a look at the open bug reports in +the Buildroot bug +tracker. As we strive to keep the bug count as small as possible, all +help in reproducing, analyzing and fixing reported bugs is more than +welcome. Don’t hesitate to add a comment to bug reports reporting your +findings, even if you don’t yet see the full picture.

22.2. Analyzing and fixing autobuild failures

The Buildroot autobuilders are a set of build machines that continuously +run Buildroot builds based on random configurations. This is done for +all architectures supported by Buildroot, with various toolchains, and +with a random selection of packages. With the large commit activity on +Buildroot, these autobuilders are a great help in detecting problems +very early after commit.

All build results are available at http://autobuild.buildroot.org, +statistics are at http://autobuild.buildroot.org/stats.php. Every day, +an overview of all failed packages is sent to the mailing list.

Detecting problems is great, but obviously these problems have to be +fixed as well. Your contribution is very welcome here! There are +basically two things that can be done:

  • +Analyzing the problems. The daily summary mails do not contain details + about the actual failures: in order to see what’s going on you have to + open the build log and check the last output. Having someone doing + this for all packages in the mail is very useful for other developers, + as they can make a quick initial analysis based on this output alone. +
  • +Fixing a problem. When fixing autobuild failures, you should follow + these steps: +

    1. +Check if you can reproduce the problem by building with the same + configuration. You can do this manually, or use the + br-reproduce-build + script that will automatically clone a Buildroot git repository, + checkout the correct revision, download and set the right + configuration, and start the build. +
    2. +Analyze the problem and create a fix. +
    3. +Verify that the problem is really fixed by starting from a clean + Buildroot tree and only applying your fix. +
    4. +Send the fix to the Buildroot mailing list (see + Section 22.5, “Submitting patches”). In case you created a patch against the + package sources, you should also send the patch upstream so that the + problem will be fixed in a later release, and the patch in Buildroot + can be removed. + In the commit message of a patch fixing an autobuild failure, add a + reference to the build result directory, as follows: +
Fixes: http://autobuild.buildroot.org/results/51000a9d4656afe9e0ea6f07b9f8ed374c2e4069

22.3. Reviewing and testing patches

With the amount of patches sent to the mailing list each day, the +maintainer has a very hard job to judge which patches are ready to apply +and which ones aren’t. Contributors can greatly help here by reviewing +and testing these patches.

In the review process, do not hesitate to respond to patch submissions +for remarks, suggestions or anything that will help everyone to +understand the patches and make them better. Please use internet +style replies in plain text emails when responding to patch +submissions.

To indicate approval of a patch, there are three formal tags that keep +track of this approval. To add your tag to a patch, reply to it with the +approval tag below the original author’s Signed-off-by line. These tags +will be picked up automatically by patchwork (see +Section 22.3.1, “Applying Patches from Patchwork”) and will be part of the commit log when +the patch is accepted.

+Tested-by +
+Indicates that the patch has been tested successfully. + You are encouraged to specify what kind of testing you performed + (compile-test on architecture X and Y, runtime test on target A, + …). This additional information helps other testers and the + maintainer. +
+Reviewed-by +
+Indicates that you code-reviewed the patch and did your + best in spotting problems, but you are not sufficiently familiar with + the area touched to provide an Acked-by tag. This means that there + may be remaining problems in the patch that would be spotted by + someone with more experience in that area. Should such problems be + detected, your Reviewed-by tag remains appropriate and you cannot + be blamed. +
+Acked-by +
+Indicates that you code-reviewed the patch and you are + familiar enough with the area touched to feel that the patch can be + committed as-is (no additional changes required). In case it later + turns out that something is wrong with the patch, your Acked-by could + be considered inappropriate. The difference between Acked-by and + Reviewed-by is thus mainly that you are prepared to take the blame on + Acked patches, but not on Reviewed ones. +

If you reviewed a patch and have comments on it, you should simply reply +to the patch stating these comments, without providing a Reviewed-by or +Acked-by tag. These tags should only be provided if you judge the patch +to be good as it is.

It is important to note that neither Reviewed-by nor Acked-by imply +that testing has been performed. To indicate that you both reviewed and +tested the patch, provide two separate tags (Reviewed/Acked-by and +Tested-by).

Note also that any developer can provide Tested/Reviewed/Acked-by +tags, without exception, and we encourage everyone to do this. Buildroot +does not have a defined group of core developers, it just so happens +that some developers are more active than others. The maintainer will +value tags according to the track record of their submitter. Tags +provided by a regular contributor will naturally be trusted more than +tags provided by a newcomer. As you provide tags more regularly, your +trustworthiness (in the eyes of the maintainer) will go up, but any +tag provided is valuable.

Buildroot’s Patchwork website can be used to pull in patches for testing +purposes. Please see Section 22.3.1, “Applying Patches from Patchwork” for more +information on using Buildroot’s Patchwork website to apply patches.

22.3.1. Applying Patches from Patchwork

The main use of Buildroot’s Patchwork website for a developer is for +pulling in patches into their local git repository for testing +purposes.

When browsing patches in the patchwork management interface, an mbox +link is provided at the top of the page. Copy this link address and +run the following commands:

$ git checkout -b <test-branch-name>
+$ wget -O - <mbox-url> | git am

Another option for applying patches is to create a bundle. A bundle is +a set of patches that you can group together using the patchwork +interface. Once the bundle is created and the bundle is made public, +you can copy the mbox link for the bundle and apply the bundle +using the above commands.

22.4. Work on items from the TODO list

If you want to contribute to Buildroot but don’t know where to start, +and you don’t like any of the above topics, you can always work on items +from the Buildroot TODO list. +Don’t hesitate to discuss an item first on the mailing list or on IRC. +Do edit the wiki to indicate when you start working on an item, so we +avoid duplicate efforts.

22.5. Submitting patches

Note

Please, do not attach patches to bugs, send them to the mailing list +instead.

If you made some changes to Buildroot and you would like to contribute +them to the Buildroot project, proceed as follows.

22.5.1. The formatting of a patch

We expect patches to be formatted in a specific way. This is necessary +to make it easy to review patches, to be able to apply them easily to +the git repository, to make it easy to find back in the history how +and why things have changed, and to make it possible to use git +bisect to locate the origin of a problem.

First of all, it is essential that the patch has a good commit +message. The commit message should start with a separate line with a +brief summary of the change, prefixed by the area touched by the +patch. A few examples of good commit titles:

  • +package/linuxptp: bump version to 2.0 +
  • +configs/imx23evk: bump Linux version to 4.19 +
  • +package/pkg-generic: postpone evaluation of dependency conditions +
  • +boot/uboot: needs host-{flex,bison} +
  • +support/testing: add python-ubjson tests +

The description that follows the prefix should start with a lower case +letter (i.e "bump", "needs", "postpone", "add" in the above examples).

Second, the body of the commit message should describe why this +change is needed, and if necessary also give details about how it +was done. When writing the commit message, think of how the reviewers +will read it, but also think about how you will read it when you look +at this change again a few years down the line.

Third, the patch itself should do only one change, but do it +completely. Two unrelated or weakly related changes should usually be +done in two separate patches. This usually means that a patch affects +only a single package. If several changes are related, it is often +still possible to split them up in small patches and apply them in a +specific order. Small patches make it easier to review, and often +make it easier to understand afterwards why a change was done. +However, each patch must be complete. It is not allowed that the +build is broken when only the first but not the second patch is +applied. This is necessary to be able to use git bisect afterwards.

Of course, while you’re doing your development, you’re probably going +back and forth between packages, and certainly not committing things +immediately in a way that is clean enough for submission. So most +developers rewrite the history of commits to produce a clean set of +commits that is appropriate for submission. To do this, you need to +use interactive rebasing. You can learn about it +in the Pro +Git book. Sometimes, it is even easier to discard you history with +git reset --soft origin/master and select individual changes with +git add -i or git add -p.

Finally, the patch should be signed off. This is done by adding +Signed-off-by: Your Real Name <your@email.address> at the end of the +commit message. git commit -s does that for you, if configured +properly. The Signed-off-by tag means that you publish the patch +under the Buildroot license (i.e. GPL-2.0+, except for package patches, +which have the upstream license), and that you are allowed to do so. +See the Developer Certificate of +Origin for details.

To give credits to who sponsored the creation of a patch or the process of +upstreaming it, you may use +email subaddressing for +your git identity (i.e. what is used as commit author and email From: +field, as well as your Signed-off-by tag); add suffix to the local part, +separated from it by a plus + sign. E.g.:

  • +for a company which sponsored the submitted work, use the company name + as the detail (suffix) part: +

    Your-Name Your-Surname <your-name.your-surname+companyname@mail.com>

  • +for an individual who sponsored the submitted work, use + their name and surname: +

    Your-Name Your-Surname <your-name.your-surname+their-name.their-surname@mail.com>

Alternatively, especially if your email server does not support +subaddressing, you can include the sponsor in your author name in +parentheses, e.g. "Your Name (Sponsor Name)".

When adding new packages, you should submit every package in a +separate patch. This patch should have the update to +package/Config.in, the package Config.in file, the .mk file, the +.hash file, any init script, and all package patches. If the package +has many sub-options, these are sometimes better added as separate +follow-up patches. The summary line should be something like +<packagename>: new package. The body of the commit message can be +empty for simple packages, or it can contain the description of the +package (like the Config.in help text). If anything special has to be +done to build the package, this should also be explained explicitly in +the commit message body.

When you bump a package to a new version, you should also submit a +separate patch for each package. Don’t forget to update the .hash +file, or add it if it doesn’t exist yet. Also don’t forget to check if +the _LICENSE and _LICENSE_FILES are still valid. The summary line +should be something like <packagename>: bump to version <new +version>. If the new version only contains security updates compared +to the existing one, the summary should be <packagename>: security +bump to version <new version> and the commit message body should show +the CVE numbers that are fixed. If some package patches can be removed +in the new version, it should be explained explicitly why they can be +removed, preferably with the upstream commit ID. Also any other +required changes should be explained explicitly, like configure +options that no longer exist or are no longer needed.

If you are interested in getting notified of build failures and of +further changes in the packages you added or modified, please add +yourself to the DEVELOPERS file. This should be done in the same patch +creating or modifying the package. See the DEVELOPERS file +for more information.

Buildroot provides a handy tool to check for common coding style +mistakes on files you created or modified, called check-package (see +Section 18.25.2, “How to check the coding style” for more information).

22.5.2. Preparing a patch series

Starting from the changes committed in your local git view, rebase +your development branch on top of the upstream tree before generating +a patch set. To do so, run:

$ git fetch --all --tags
+$ git rebase origin/master

Now check the coding style for the changes you committed:

$ utils/docker-run make check-package

Now, you are ready to generate then submit your patch set.

To generate it, run:

$ git format-patch -M -n -s -o outgoing origin/master

This will generate patch files in the outgoing subdirectory, +automatically adding the Signed-off-by line.

Once patch files are generated, you can review/edit the commit message +before submitting them, using your favorite text editor.

Buildroot provides a handy tool to know to whom your patches should be +sent, called get-developers (see Chapter 23, DEVELOPERS file and get-developers for more +information). This tool reads your patches and outputs the appropriate +git send-email command to use:

$ ./utils/get-developers outgoing/*

Use the output of get-developers to send your patches:

$ git send-email --to buildroot@buildroot.org --cc bob --cc alice outgoing/*

Alternatively, get-developers -e can be used directly with the +--cc-cmd argument to git send-email to automatically CC the +affected developers:

$ git send-email --to buildroot@buildroot.org \
+      --cc-cmd './utils/get-developers -e' origin/master

git can be configured to automatically do this out of the box with:

$ git config sendemail.to buildroot@buildroot.org
+$ git config sendemail.ccCmd "$(pwd)/utils/get-developers -e"

And then just do:

$ git send-email origin/master

Note that git should be configured to use your mail account. +To configure git, see man git-send-email or https://git-send-email.io/.

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.

https://sr.ht also has a light-weight UI for +preparing patchseries +and can also send out the patches for you. There are a few drawbacks to +this, as you cannot edit your patches' status in Patchwork and you +currently can’t edit your display name with which the match emails are +sent out but it is an option if you cannot get git send-email to work +with your mail provider (i.e. O365); it shall not be considered the +official way of sending patches, but just a fallback.

22.5.3. Cover letter

If you want to present the whole patch set in a separate mail, add +--cover-letter to the git format-patch command (see man +git-format-patch for further information). This will generate a +template for an introduction e-mail to your patch series.

A cover letter may be useful to introduce the changes you propose +in the following cases:

  • +large number of commits in the series; +
  • +deep impact of the changes in the rest of the project; +
  • +RFC [4]; +
  • +whenever you feel it will help presenting your work, your choices, + the review process, etc. +

22.5.4. Patches for maintenance branches

When fixing bugs on a maintenance branch, bugs should be fixed on the +master branch first. The commit log for such a patch may then contain a +post-commit note specifying what branches are affected:

package/foo: fix stuff
+
+Signed-off-by: Your Real Name <your@email.address>
+---
+Backport to: 2020.02.x, 2020.05.x
+(2020.08.x not affected as the version was bumped)

Those changes will then be backported by a maintainer to the affected +branches.

However, some bugs may apply only to a specific release, for example +because it is using an older version of a package. In that case, patches +should be based off the maintenance branch, and the patch subject prefix +must include the maintenance branch name (for example "[PATCH 2020.02.x]"). +This can be done with the git format-patch flag --subject-prefix:

$ git format-patch --subject-prefix "PATCH 2020.02.x" \
+    -M -s -o outgoing origin/2020.02.x

Then send the patches with git send-email, as described above.

22.5.5. Patch revision changelog

When improvements are requested, the new revision of each commit +should include a changelog of the modifications between each +submission. Note that when your patch series is introduced by a cover +letter, an overall changelog may be added to the cover letter in +addition to the changelog in the individual commits. +The best thing to rework a patch series is by interactive rebasing: +git rebase -i origin/master. Consult the git manual for more +information.

When added to the individual commits, this changelog is added when +editing the commit message. Below the Signed-off-by section, add +--- and your changelog.

Although the changelog will be visible for the reviewers in the mail +thread, as well as in +patchwork, git +will automatically ignores lines below --- when the patch will be +merged. This is the intended behavior: the changelog is not meant to +be preserved forever in the git history of the project.

Hereafter the recommended layout:

Patch title: short explanation, max 72 chars
+
+A paragraph that explains the problem, and how it manifests itself. If
+the problem is complex, it is OK to add more paragraphs. All paragraphs
+should be wrapped at 72 characters.
+
+A paragraph that explains the root cause of the problem. Again, more
+than one paragraph is OK.
+
+Finally, one or more paragraphs that explain how the problem is solved.
+Don't hesitate to explain complex solutions in detail.
+
+Signed-off-by: John DOE <john.doe@example.net>
+
+---
+Changes v2 -> v3:
+  - foo bar  (suggested by Jane)
+  - bar buz
+
+Changes v1 -> v2:
+  - alpha bravo  (suggested by John)
+  - charly delta

Any patch revision should include the version number. The version number +is simply composed of the letter v followed by an integer greater or +equal to two (i.e. "PATCH v2", "PATCH v3" …).

This can be easily handled with git format-patch by using the option +--subject-prefix:

$ git format-patch --subject-prefix "PATCH v4" \
+    -M -s -o outgoing origin/master

Since git version 1.8.1, you can also use -v <n> (where <n> is the +version number):

$ git format-patch -v4 -M -s -o outgoing origin/master

When you provide a new version of a patch, please mark the old one as +superseded in +patchwork. You +need to create an account on +patchwork to be +able to modify the status of your patches. Note that you can only change +the status of patches you submitted yourself, which means the email +address you register in +patchwork should +match the one you use for sending patches to the mailing list.

You can also add the --in-reply-to=<message-id> option when +submitting a patch to the mailing list. The id of the mail to reply to +can be found under the "Message Id" tag on +patchwork. The +advantage of in-reply-to is that patchwork will automatically mark +the previous version of the patch as superseded.

22.6. Reporting issues/bugs or getting help

Before reporting any issue, please check in +the mailing list archive whether someone has +already reported and/or fixed a similar problem.

However you choose to report bugs or get help, either by +opening a bug in the bug tracker or by +sending a mail to the mailing list, there are +a number of details to provide in order to help people reproduce and +find a solution to the issue.

Try to think as if you were trying to help someone else; in +that case, what would you need?

Here is a short list of details to provide in such case:

  • +host machine (OS/release) +
  • +version of Buildroot +
  • +target for which the build fails +
  • +package(s) for which the build fails +
  • +the command that fails and its output +
  • +any information you think that may be relevant +

Additionally, you should add the .config file (or if you know how, a +defconfig; see Section 9.3, “Storing the Buildroot configuration”).

If some of these details are too large, do not hesitate to use a +pastebin service. Note that not all available pastebin services will +preserve Unix-style line terminators when downloading raw pastes. +Following pastebin services are known to work correctly: +- https://gist.github.com/ +- http://code.bulix.org/

22.7. Using the runtime tests framework

Buildroot includes a run-time testing framework built upon Python +scripting and QEMU runtime execution. The goals of the framework are +the following:

  • +build a well defined Buildroot configuration +
  • +optionally, verify some properties of the build output +
  • +optionally, boot the build results under Qemu, and verify that a + given feature is working as expected +

The entry point to use the runtime tests framework is the +support/testing/run-tests tool, which has a series of options +documented in the tool’s help -h description. Some common options +include setting the download folder, the output folder, keeping build +output, and for multiple test cases, you can set the JLEVEL for each.

Here is an example walk through of running a test case.

  • +For a first step, let us see what all the test case options are. The test +cases can be listed by executing support/testing/run-tests -l. These tests +can all be run individually during test development from the console. Both +one at a time and selectively as a group of a subset of tests. +
$ support/testing/run-tests -l
+List of tests
+test_run (tests.utils.test_check_package.TestCheckPackage)
+test_run (tests.toolchain.test_external.TestExternalToolchainBuildrootMusl) ... ok
+test_run (tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc) ... ok
+test_run (tests.toolchain.test_external.TestExternalToolchainCCache) ... ok
+test_run (tests.toolchain.test_external.TestExternalToolchainCtngMusl) ... ok
+test_run (tests.toolchain.test_external.TestExternalToolchainLinaroArm) ... ok
+test_run (tests.toolchain.test_external.TestExternalToolchainSourceryArmv4) ... ok
+test_run (tests.toolchain.test_external.TestExternalToolchainSourceryArmv5) ... ok
+test_run (tests.toolchain.test_external.TestExternalToolchainSourceryArmv7) ... ok
+[snip]
+test_run (tests.init.test_systemd.TestInitSystemSystemdRoFull) ... ok
+test_run (tests.init.test_systemd.TestInitSystemSystemdRoIfupdown) ... ok
+test_run (tests.init.test_systemd.TestInitSystemSystemdRoNetworkd) ... ok
+test_run (tests.init.test_systemd.TestInitSystemSystemdRwFull) ... ok
+test_run (tests.init.test_systemd.TestInitSystemSystemdRwIfupdown) ... ok
+test_run (tests.init.test_systemd.TestInitSystemSystemdRwNetworkd) ... ok
+test_run (tests.init.test_busybox.TestInitSystemBusyboxRo) ... ok
+test_run (tests.init.test_busybox.TestInitSystemBusyboxRoNet) ... ok
+test_run (tests.init.test_busybox.TestInitSystemBusyboxRw) ... ok
+test_run (tests.init.test_busybox.TestInitSystemBusyboxRwNet) ... ok
+
+Ran 157 tests in 0.021s
+
+OK
  • +Then, to run one test case: +
$ support/testing/run-tests -d dl -o output_folder -k tests.init.test_busybox.TestInitSystemBusyboxRw
+15:03:26 TestInitSystemBusyboxRw                  Starting
+15:03:28 TestInitSystemBusyboxRw                  Building
+15:08:18 TestInitSystemBusyboxRw                  Building done
+15:08:27 TestInitSystemBusyboxRw                  Cleaning up
+.
+Ran 1 test in 301.140s
+
+OK

The standard output indicates if the test is successful or not. By +default, the output folder for the test is deleted automatically +unless the option -k is passed to keep the output directory.

22.7.1. Creating a test case

Within the Buildroot repository, the testing framework is organized at the +top level in support/testing/ by folders of conf, infra and tests. +All the test cases live under the tests folder and are organized in various +folders representing the category of test.

The best way to get familiar with how to create a test case is to look +at a few of the basic file system support/testing/tests/fs/ and init +support/testing/tests/init/ test scripts. Those tests give good +examples of a basic tests that include both checking the build +results, and doing runtime tests. There are other more advanced cases +that use things like nested br2-external folders to provide +skeletons and additional packages.

Creating a basic test case involves:

  • +Defining a test class that inherits from infra.basetest.BRTest +
  • +Defining the config member of the test class, to the Buildroot + configuration to build for this test case. It can optionally rely on + configuration snippets provided by the runtime test infrastructure: + infra.basetest.BASIC_TOOLCHAIN_CONFIG to get a basic + architecture/toolchain configuration, and + infra.basetest.MINIMAL_CONFIG to not build any filesystem. The + advantage of using infra.basetest.BASIC_TOOLCHAIN_CONFIG is that a + matching Linux kernel image is provided, which allows to boot the + resulting image in Qemu without having to build a Linux kernel image + as part of the test case, therefore significant decreasing the build + time required for the test case. +
  • +Implementing a def test_run(self): function to implement the + actual tests to run after the build has completed. They may be tests + that verify the build output, by running command on the host using + the run_cmd_on_host() helper function. Or they may boot the + generated system in Qemu using the Emulator object available as + self.emulator in the test case. For example self.emulator.boot() + allows to boot the system in Qemu, self.emulator.login() allows to + login, self.emulator.run() allows to run shell commands inside + Qemu. +

After creating the test script, add yourself to the DEVELOPERS file to +be the maintainer of that test case.

22.7.2. Debugging a test case

When a test case runs, the output_folder will contain the following:

$ ls output_folder/
+TestInitSystemBusyboxRw/
+TestInitSystemBusyboxRw-build.log
+TestInitSystemBusyboxRw-run.log

TestInitSystemBusyboxRw/ is the Buildroot output directory, and it +is preserved only if the -k option is passed.

TestInitSystemBusyboxRw-build.log is the log of the Buildroot build.

TestInitSystemBusyboxRw-run.log is the log of the Qemu boot and +test. This file will only exist if the build was successful and the +test case involves booting under Qemu.

If you want to manually run Qemu to do manual tests of the build +result, the first few lines of TestInitSystemBusyboxRw-run.log +contain the Qemu command line to use.

You can also make modifications to the current sources inside the +output_folder (e.g. for debug purposes) and rerun the standard +Buildroot make targets (in order to regenerate the complete image with +the new modifications) and then rerun the test.

22.7.3. Runtime tests and Gitlab CI

All runtime tests are regularly executed by Buildroot Gitlab CI +infrastructure, see .gitlab.yml and +https://gitlab.com/buildroot.org/buildroot/-/jobs.

You can also use Gitlab CI to test your new test cases, or verify that +existing tests continue to work after making changes in Buildroot.

In order to achieve this, you need to create a fork of the Buildroot +project on Gitlab, and be able to push branches to your Buildroot fork +on Gitlab.

The name of the branch that you push will determine if a Gitlab CI +pipeline will be triggered or not, and for which test cases.

In the examples below, the <name> component of the branch name is an +arbitrary string you choose.

  • +To trigger all run-test test case jobs, push a branch that ends with + -runtime-tests: +
 $ git push gitlab HEAD:<name>-runtime-tests
  • +To trigger one or several test case jobs, push a branch that ends + with the complete test case name + (tests.init.test_busybox.TestInitSystemBusyboxRo) or with the name + of a category of tests (tests.init.test_busybox): +
 $ git push gitlab HEAD:<name>-<test case name>

Example to run one test:

 $ git push gitlab HEAD:foo-tests.init.test_busybox.TestInitSystemBusyboxRo

Examples to run several tests part of the same group:

 $ git push gitlab HEAD:foo-tests.init.test_busybox
+ $ git push gitlab HEAD:foo-tests.init


[4] RFC: (Request for comments) change proposal

Chapter 23. DEVELOPERS file and get-developers

The main Buildroot directory contains a file named DEVELOPERS that +lists the developers involved with various areas of Buildroot. Thanks +to this file, the get-developers tool allows to:

  • +Calculate the list of developers to whom patches should be sent, by + parsing the patches and matching the modified files with the + relevant developers. See Section 22.5, “Submitting patches” for details. +
  • +Find which developers are taking care of a given architecture or + package, so that they can be notified when a build failure occurs on + this architecture or package. This is done in interaction with + Buildroot’s autobuild infrastructure. +

We ask developers adding new packages, new boards, or generally new +functionality in Buildroot, to register themselves in the DEVELOPERS +file. As an example, we expect a developer contributing a new package +to include in his patch the appropriate modification to the +DEVELOPERS file.

The DEVELOPERS file format is documented in detail inside the file +itself.

The get-developers tool, located in utils/ allows to use +the DEVELOPERS file for various tasks:

  • +When passing one or several patches as command line argument, + get-developers will return the appropriate git send-email + command. If the -e option is passed, only the email addresses are + printed in a format suitable for git send-email --cc-cmd. +
  • +When using the -a <arch> command line option, get-developers will + return the list of developers in charge of the given architecture. +
  • +When using the -p <package> command line option, get-developers + will return the list of developers in charge of the given package. +
  • +When using the -c command line option, get-developers will look + at all files under version control in the Buildroot repository, and + list the ones that are not handled by any developer. The purpose of + this option is to help completing the DEVELOPERS file. +
  • +When using the -v command line option, it validates the integrity + of the DEVELOPERS file and will note WARNINGS for items that don’t + match. +

Chapter 24. Release Engineering

24.1. Releases

The Buildroot project makes quarterly releases with monthly bugfix +releases. The first release of each year is a long term support +release, LTS.

  • +Quarterly releases: 2020.02, 2020.05, 2020.08, and 2020.11 +
  • +Bugfix releases: 2020.02.1, 2020.02.2, … +
  • +LTS releases: 2020.02, 2021.02, … +

Releases are supported until the first bugfix release of the next +release, e.g., 2020.05.x is EOL when 2020.08.1 is released.

LTS releases are supported until the first bugfix release of the next +LTS, e.g., 2020.02.x is supported until 2021.02.1 is released.

24.2. Development

Each release cycle consist of two months of development on the master +branch and one month stabilization before the release is made. During +this phase no new features are added to master, only bugfixes.

The stabilization phase starts with tagging -rc1, and every week until +the release, another release candidate is tagged.

To handle new features and version bumps during the stabilization phase, +a next branch may be created for these features. Once the current +release has been made, the next branch is merged into master and +the development cycle for the next release continues there.

Part IV. Appendix

Chapter 25. Makedev syntax documentation

The makedev syntax is used in several places in Buildroot to +define changes to be made for permissions, or which device files to +create and how to create them, in order to avoid calls to mknod.

This syntax is derived from the makedev utility, and more complete +documentation can be found in the package/makedevs/README file.

It takes the form of a space separated list of fields, one file per +line; the fields are:

name

type

mode

uid

gid

major

minor

start

inc

count

There are a few non-trivial blocks:

  • +name is the path to the file you want to create/modify +
  • +type is the type of the file, being one of: +

    • +f: a regular file, which must already exist +
    • +F: a regular file, which is ignored and not created if missing +
    • +d: a directory, which is created, as well as its parents, if missing +
    • +r: a directory recursively, which must already exist +
    • +c: a character device file, which parent directory must exist +
    • +b: a block device file, which parent directory must exist +
    • +p: a named pipe, which parent directory must exist +
  • +mode are the usual permissions settings (only numerical values + are allowed); + for type d, the mode of existing parents is not changed, but the mode + of created parents is set; + for types f, F, and r, mode can also be set to -1 to not + change the mode (and only change uid and gid) +
  • +uid and gid are the UID and GID to set on this file; can be + either numerical values or actual names +
  • +major and minor are here for device files, set to - for other + files +
  • +start, inc and count are for when you want to create a batch + of files, and can be reduced to a loop, beginning at start, + incrementing its counter by inc until it reaches count +

Let’s say you want to change the ownership and permissions of a given +file; using this syntax, you will need to write:

/usr/bin/foo f 755 0 0 - - - - -
+/usr/bin/bar f 755 root root - - - - -
+/data/buz f 644 buz-user buz-group - - - - -
+/data/baz f -1 baz-user baz-group - - - - -

Alternatively, if you want to change owner of a directory recursively, +you can write (to set UID to foo and GID to bar for the directory +/usr/share/myapp and all files and directories below it):

/usr/share/myapp r -1 foo bar - - - - -

On the other hand, if you want to create the device file /dev/hda +and the corresponding 15 files for the partitions, you will need for +/dev/hda:

/dev/hda b 640 root root 3 0 0 0 -

and then for device files corresponding to the partitions of +/dev/hda, /dev/hdaX, X ranging from 1 to 15:

/dev/hda b 640 root root 3 1 1 1 15

Extended attributes are supported if +BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES is enabled. +This is done by adding a line starting with |xattr after +the line describing the file. Right now, only capability +is supported as extended attribute.

|xattr

capability

  • +|xattr is a "flag" that indicate an extended attribute +
  • +capability is a capability to add to the previous file +

If you want to add the capability cap_sys_admin to the binary foo, +you will write :

/usr/bin/foo f 755 root root - - - - -
+|xattr cap_sys_admin+eip

You can add several capabilities to a file by using several |xattr lines. +If you want to add the capability cap_sys_admin and cap_net_admin to the +binary foo, you will write :

/usr/bin/foo f 755 root root - - - - -
+|xattr cap_sys_admin+eip
+|xattr cap_net_admin+eip

Chapter 26. Makeusers syntax documentation

The syntax to create users is inspired by the makedev syntax, above, but +is specific to Buildroot.

The syntax for adding a user is a space-separated list of fields, one +user per line; the fields are:

username

uid

group

gid

password

home

shell

groups

comment

Where:

  • +username is the desired user name (aka login name) for the user. + It can not be root, and must be unique. If set to -, then just a + group will be created. +
  • +uid is the desired UID for the user. It must be unique, and not + 0. If set to -1 or -2, then a unique UID will be computed by + Buildroot, with -1 denoting a system UID from [100…999] and -2 + denoting a user UID from [1000…1999]. +
  • +group is the desired name for the user’s main group. It can not + be root. If the group does not exist, it will be created. +
  • +gid is the desired GID for the user’s main group. It must be unique, + and not 0. If set to -1 or -2, and the group does not already + exist, then a unique GID will be computed by Buildroot, with -1 + denoting a system GID from [100…999] and -2 denoting a user GID + from [1000…1999]. +
  • +password is the crypt(3)-encoded password. If prefixed with !, + then login is disabled. If prefixed with =, then it is interpreted + as clear-text, and will be crypt-encoded (using MD5). If prefixed with + !=, then the password will be crypt-encoded (using MD5) and login + will be disabled. If set to *, then login is not allowed. If set to + -, then no password value will be set. +
  • +home is the desired home directory for the user. If set to -, no + home directory will be created, and the user’s home will be /. + Explicitly setting home to / is not allowed. +
  • +shell is the desired shell for the user. If set to -, then + /bin/false is set as the user’s shell. +
  • +groups is the comma-separated list of additional groups the user + should be part of. If set to -, then the user will be a member of + no additional group. Missing groups will be created with an arbitrary + gid. +
  • +comment (aka GECOS + field) is an almost-free-form text. +

There are a few restrictions on the content of each field:

  • +except for comment, all fields are mandatory. +
  • +except for comment, fields may not contain spaces. +
  • +no field may contain a colon (:). +

If home is not -, then the home directory, and all files below, +will belong to the user and its main group.

Examples:

foo -1 bar -1 !=blabla /home/foo /bin/sh alpha,bravo Foo user

This will create this user:

  • +username (aka login name) is: foo +
  • +uid is computed by Buildroot +
  • +main group is: bar +
  • +main group gid is computed by Buildroot +
  • +clear-text password is: blabla, will be crypt(3)-encoded, and login is disabled. +
  • +home is: /home/foo +
  • +shell is: /bin/sh +
  • +foo is also a member of groups: alpha and bravo +
  • +comment is: Foo user +
test 8000 wheel -1 = - /bin/sh - Test user

This will create this user:

  • +username (aka login name) is: test +
  • +uid is : 8000 +
  • +main group is: wheel +
  • +main group gid is computed by Buildroot, and will use the value defined in the rootfs skeleton +
  • +password is empty (aka no password). +
  • +home is / but will not belong to test +
  • +shell is: /bin/sh +
  • +test is not a member of any additional groups +
  • +comment is: Test user +

26.1. Caveat with automatic UIDs and GIDs

When updating buildroot or when packages are added or removed to/from +the configuration, it is possible that the automatic UIDs and GIDs are +changed. This can be a problem if persistent files were created with +that user or group: after upgrade, they will suddenly have a different +owner.

Therefore, it is advisable to perpetuate the automatic IDs. This can be +done by adding a users table with the generated IDs. It is only needed +to do this for UIDs that actually create persistent files, e.g. database.

Chapter 27. Migrating from older Buildroot versions

Some versions have introduced backward incompatibilities. This section +explains those incompatibilities, and for each explains what to do to +complete the migration.

27.1. General approach

To migrate from an older Buildroot version, take the following steps.

  1. +For all your configurations, do a build in the old Buildroot + environment. Run make graph-size. Save + graphs/file-size-stats.csv in a different location. Run make + clean to remove the rest. +
  2. +Review the specific migration notes below and make the required + adaptations to external packages and custom build scripts. +
  3. +Update Buildroot. +
  4. +Run make menuconfig starting from the existing .config. +
  5. +If anything is enabled in the Legacy menu, check its help text, + unselect it, and save the configuration. +
  6. +For more details, review the git commit messages for the packages that + you need. Change into the packages directory and run + git log <old version>.. — <your packages>. +
  7. +Build in the new Buildroot environment. +
  8. +Fix build issues in external packages (usually due to updated + dependencies). +
  9. +Run make graph-size. +
  10. +Compare the new file-size-stats.csv with the original one, to + check if no required files have disappeared and if no new big unneeded + files have appeared. +
  11. +For configuration (and other) files in a custom overlay that overwrite + files created by Buildroot, check if there are changes in the + Buildroot-generated file that need to be propagated to your custom + file. +

27.2. Migrating to 2016.11

Before Buildroot 2016.11, it was possible to use only one br2-external +tree at once. With Buildroot 2016.11 came the possibility to use more +than one simultaneously (for details, see Section 9.2, “Keeping customizations outside of Buildroot”).

This however means that older br2-external trees are not usable as-is. +A minor change has to be made: adding a name to your br2-external tree.

This can be done very easily in just a few steps:

  • +First, create a new file named external.desc, at the root of your + br2-external tree, with a single line defining the name of your + br2-external tree: +

    $ echo 'name: NAME_OF_YOUR_TREE' >external.desc

    Note. Be careful when choosing a name: It has to be unique and be made +with only ASCII characters from the set [A-Za-z0-9_].

  • +Then, change every occurence of BR2_EXTERNAL in your br2-external + tree with the new variable: +

    $ find . -type f | xargs sed -i 's/BR2_EXTERNAL/BR2_EXTERNAL_NAME_OF_YOUR_TREE_PATH/g'

Now, your br2-external tree can be used with Buildroot 2016.11 onward.

Note: This change makes your br2-external tree incompatible with Buildroot +before 2016.11.

27.3. Migrating to 2017.08

Before Buildroot 2017.08, host packages were installed in $(HOST_DIR)/usr +(with e.g. the autotools' --prefix=$(HOST_DIR)/usr). With Buildroot +2017.08, they are now installed directly in $(HOST_DIR).

Whenever a package installs an executable that is linked with a library +in $(HOST_DIR)/lib, it must have an RPATH pointing to that directory.

An RPATH pointing to $(HOST_DIR)/usr/lib is no longer accepted.

27.4. Migrating to 2023.11

Before Buildroot 2023.11, the subversion download backend unconditionally +retrieved the external references (objects with an svn:externals +property). Starting with 2023.11, externals are no longer retrieved by +default; if you need them, set LIBFOO_SVN_EXTERNALS to YES. This +change implies that:

  • +the generated archive content may change, and thus the hashes may need + to be updated appropriately; +
  • +the archive version suffix has been updated to -br3, so the hash + files must be updated appropriately. +

Before Buildroot 2023.11, it was possible (but undocumented and unused) +to apply architecture-specific patches, by prefixing the patch filename +with the architecture, e.g. 0001-some-changes.patch.arm and such a +patch would only be applied for that architecture. With Buildroot 2023.11, +this is no longer supported, and such patches are no longer applied at +all.

If you still need per-architecture patches, then you may provide a +pre-patch hook that copies the patches applicable to the +configured architecture, e.g.:

define LIBFOO_ARCH_PATCHES
+    $(foreach p,$(wildcard $(LIBFOO_PKGDIR)/*.patch.$(ARCH)), \
+        cp -f $(p) $(patsubst %.$(ARCH),%,$(p))
+    )
+endef
+LIBFOO_PRE_PATCH_HOOKS += LIBFOO_ARCH_PATCHES

Note that no package in Buildroot has architecture-specific patches, and +that such patches will most probably not be accepted.

27.5. Migrating to 2024.05

The download backends have been extended in various ways.

  • +All locally generated tarballs are even more reproducible. Before + 2024.05, it was possible that the access mode of files in the archives + were not consistent when the download directory has specific ACLs (e.g. + with the default ACL set). This impacts the archives generated for + git and subversion repositories, as well as those for vendored cargo + and go packages. +
  • +The git download backend now properly expands the export-subst + git attribute when generating + archives. +
  • +A newer tar version, 1.35, is required to generate the archives. + For compatibility reasons, tar 1.35 changes the way it stores some + fields (devmajor and devminor), which has an impact in the metadata + stored in the archives (but the content of files is not affected). +

To accomodate those changes, the archive suffix has been updated or +added:

  • +for git: -git4 +
  • +for subversion: -svn5 +
  • +for cargo (rust) packages: -cargo2 +
  • +for go packages: -go2 +

Note that, if two such prefixes would apply to a generated archive, like +for a cargo package downloaded from git, both suffixes need to be added, +first the one for the download mechanism, then the one for the vendoring, +e.g.: libfoo-1.2.3-git4-cargo2.tar.gz.

Because of this, the hash file of any custom packages or custom versions +for kernel and bootloaders must be updated. The following sed scripts can +automate the rename in the hash file (assuming such files are kept under +git):

# For git and svn packages, which originally had -br2 resp. -br3 suffix
+sed -r -i -e 's/-br2/-git4/; s/-br3/-svn5/' $(
+    git grep -l -E -- '-br2|-br3' -- '*.hash'
+)
+
+# For go packages, which originally had no suffix
+sed -r -i -e 's/(\.tar\.gz)$/-go2\1/' $(
+    git grep -l -E '\$\(eval \$\((host-)?golang-package\)\)' -- '*.mk' \
+    |sed -r -e 's/\.mk$/.hash/' \
+    |sort -u
+)
+
+# For cargo packages, which originally had no suffix
+sed -r -i -e 's/(\.tar\.gz)$/-cargo2\1/' $(
+    git grep -l -E '\$\(eval \$\((host-)?cargo-package\)\)' -- '*.mk' \
+    |sed -r -e 's/\.mk$/.hash/' \
+    |sort -u
+)

Note that the hash will have changed, so that needs to be updated +(manually) as well.

\ No newline at end of file diff --git a/docs/manual/manual.mk b/docs/manual/manual.mk new file mode 100644 index 00000000..ca5a14f8 --- /dev/null +++ b/docs/manual/manual.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# The Buildroot manual +# +################################################################################ + +MANUAL_SOURCES = $(sort $(wildcard docs/manual/*.adoc) $(wildcard docs/images/*)) +MANUAL_RESOURCES = $(TOPDIR)/docs/images + +define MANUAL_INIT_SCRIPT_REF + cp package/busybox/S01syslogd $(@D)/S01syslogd +endef +MANUAL_POST_RSYNC_HOOKS += MANUAL_INIT_SCRIPT_REF + +$(eval $(call asciidoc-document)) diff --git a/docs/manual/manual.pdf b/docs/manual/manual.pdf new file mode 100644 index 00000000..be5cde8d Binary files /dev/null and b/docs/manual/manual.pdf differ diff --git a/docs/manual/manual.text b/docs/manual/manual.text new file mode 100644 index 00000000..9410820d --- /dev/null +++ b/docs/manual/manual.text @@ -0,0 +1,8907 @@ + +--------------------------------------------------------------------- + +The Buildroot user manual + +--------------------------------------------------------------------- +--------------------------------------------------------------------- + +Table of Contents + + +I. Getting started + 1. About Buildroot + 2. System requirements + 2.1. Mandatory packages + 2.2. Optional packages + 3. Getting Buildroot + 4. Buildroot quick start + 5. Community resources +II. User guide + 6. Buildroot configuration + 6.1. Cross-compilation toolchain + 6.2. /dev management + 6.3. init system + 7. Configuration of other components + 8. General Buildroot usage + 8.1. make tips + 8.2. Understanding when a full rebuild is necessary + 8.3. Understanding how to rebuild packages + 8.4. Offline builds + 8.5. Building out-of-tree + 8.6. Environment variables + 8.7. Dealing efficiently with filesystem images + 8.8. Details about packages + 8.9. Graphing the dependencies between packages + 8.10. Graphing the build duration + 8.11. Graphing the filesystem size contribution of packages + 8.12. Top-level parallel build + 8.13. Advanced usage + 9. Project-specific customization + 9.1. Recommended directory structure + 9.2. Keeping customizations outside of Buildroot + 9.3. Storing the Buildroot configuration + 9.4. Storing the configuration of other components + 9.5. Customizing the generated target filesystem + 9.6. Adding custom user accounts + 9.7. Customization after the images have been created + 9.8. Adding project-specific patches and hashes + 9.9. Adding project-specific packages + 9.10. Quick guide to storing your project-specific + customizations + 10. Integration topics + 10.1. Configurable packages + 10.2. Systemd + 10.3. Using SELinux in Buildroot + 11. Frequently Asked Questions & Troubleshooting + 11.1. The boot hangs after Starting network… + 11.2. Why is there no compiler on the target? + 11.3. Why are there no development files on the target? + 11.4. Why is there no documentation on the target? + 11.5. Why are some packages not visible in the Buildroot + config menu? + 11.6. Why not use the target directory as a chroot directory? + 11.7. Why doesn’t Buildroot generate binary packages (.deb, + .ipkg…)? + 11.8. How to speed-up the build process? + 11.9. How does Buildroot support Y2038? + 12. Known issues + 13. Legal notice and licensing + 13.1. Complying with open source licenses + 13.2. Complying with the Buildroot license + 14. Beyond Buildroot + 14.1. Boot the generated images + 14.2. Chroot +III. Developer guide + 15. How Buildroot works + 16. Coding style + 16.1. Config.in file + 16.2. The .mk file + 16.3. The genimage.cfg file + 16.4. The documentation + 16.5. Support scripts + 17. Adding support for a particular board + 18. Adding new packages to Buildroot + 18.1. Package directory + 18.2. Config files + 18.3. The .mk file + 18.4. The .hash file + 18.5. The SNNfoo start script + 18.6. Infrastructure for packages with specific build systems + 18.7. Infrastructure for autotools-based packages + 18.8. Infrastructure for CMake-based packages + 18.9. Infrastructure for Python packages + 18.10. Infrastructure for LuaRocks-based packages + 18.11. Infrastructure for Perl/CPAN packages + 18.12. Infrastructure for virtual packages + 18.13. Infrastructure for packages using kconfig for + configuration files + 18.14. Infrastructure for rebar-based packages + 18.15. Infrastructure for Waf-based packages + 18.16. Infrastructure for Meson-based packages + 18.17. Infrastructure for Cargo-based packages + 18.18. Infrastructure for Go packages + 18.19. Infrastructure for QMake-based packages + 18.20. Infrastructure for packages building kernel modules + 18.21. Infrastructure for asciidoc documents + 18.22. Infrastructure specific to the Linux kernel package + 18.23. Hooks available in the various build steps + 18.24. Gettext integration and interaction with packages + 18.25. Tips and tricks + 18.26. Conclusion + 19. Patching a package + 19.1. Providing patches + 19.2. How patches are applied + 19.3. Format and licensing of the package patches + 19.4. Additional patch documentation + 20. Download infrastructure + 21. Debugging Buildroot + 22. Contributing to Buildroot + 22.1. Reproducing, analyzing and fixing bugs + 22.2. Analyzing and fixing autobuild failures + 22.3. Reviewing and testing patches + 22.4. Work on items from the TODO list + 22.5. Submitting patches + 22.6. Reporting issues/bugs or getting help + 22.7. Using the runtime tests framework + 23. DEVELOPERS file and get-developers + 24. Release Engineering + 24.1. Releases + 24.2. Development +IV. Appendix + 25. Makedev syntax documentation + 26. Makeusers syntax documentation + 26.1. Caveat with automatic UIDs and GIDs + 27. Migrating from older Buildroot versions + 27.1. General approach + 27.2. Migrating to 2016.11 + 27.3. Migrating to 2017.08 + 27.4. Migrating to 2023.11 + 27.5. Migrating to 2024.05 + +List of Examples + +18.1. Config script: divine package +18.2. Config script: imagemagick package: + + +--------------------------------------------------------------------- + +--------------------------------------------------------------------- + +Buildroot ${BR2_VERSION%%-git*} manual generated on 2024-09-06 +13:37:31 UTC from git revision 769d71ae84 + +The Buildroot manual is written by the Buildroot developers. It is +licensed under the GNU General Public License, version 2. Refer to +the COPYING [http://git.buildroot.org/buildroot/tree/COPYING?id= +769d71ae84c7a3d43ee92a1d126b2937713cc811] file in the Buildroot +sources for the full text of this license. + +Copyright © The Buildroot developers <> + +Part I. Getting started + +Table of Contents + +1. About Buildroot +2. System requirements + 2.1. Mandatory packages + 2.2. Optional packages +3. Getting Buildroot +4. Buildroot quick start +5. Community resources + +Chapter 1. About Buildroot + +Buildroot is a tool that simplifies and automates the process of +building a complete Linux system for an embedded system, using +cross-compilation. + +In order to achieve this, Buildroot is able to generate a +cross-compilation toolchain, a root filesystem, a Linux kernel image +and a bootloader for your target. Buildroot can be used for any +combination of these options, independently (you can for example use +an existing cross-compilation toolchain, and build only your root +filesystem with Buildroot). + +Buildroot is useful mainly for people working with embedded systems. +Embedded systems often use processors that are not the regular x86 +processors everyone is used to having in his PC. They can be PowerPC +processors, MIPS processors, ARM processors, etc. + +Buildroot supports numerous processors and their variants; it also +comes with default configurations for several boards available +off-the-shelf. Besides this, a number of third-party projects are +based on, or develop their BSP ^[1] or SDK ^[2] on top of Buildroot. + + +--------------------------------------------------------------------- + +^[1] BSP: Board Support Package + +^[2] SDK: Software Development Kit + +Chapter 2. System requirements + +Buildroot is designed to run on Linux systems. + +While Buildroot itself will build most host packages it needs for the +compilation, certain standard Linux utilities are expected to be +already installed on the host system. Below you will find an overview +of the mandatory and optional packages (note that package names may +vary between distributions). + +2.1. Mandatory packages + + * Build tools: + + + which + + sed + + make (version 3.81 or any later) + + binutils + + build-essential (only for Debian based systems) + + diffutils + + gcc (version 4.8 or any later) + + g++ (version 4.8 or any later) + + bash + + patch + + gzip + + bzip2 + + perl (version 5.8.7 or any later) + + tar + + cpio + + unzip + + rsync + + file (must be in /usr/bin/file) + + bc + + findutils + * Source fetching tools: + + + wget + +2.2. Optional packages + + * Recommended dependencies: + + Some features or utilities in Buildroot, like the legal-info, or + the graph generation tools, have additional dependencies. + Although they are not mandatory for a simple build, they are + still highly recommended: + + + python (version 2.7 or any later) + * Configuration interface dependencies: + + For these libraries, you need to install both runtime and + development data, which in many distributions are packaged + separately. The development packages typically have a -dev or + -devel suffix. + + + ncurses5 to use the menuconfig interface + + qt5 to use the xconfig interface + + glib2, gtk2 and glade2 to use the gconfig interface + * Source fetching tools: + + In the official tree, most of the package sources are retrieved + using wget from ftp, http or https locations. A few packages are + only available through a version control system. Moreover, + Buildroot is capable of downloading sources via other tools, like + git or scp (refer to Chapter 20, Download infrastructure for more + details). If you enable packages using any of these methods, you + will need to install the corresponding tool on the host system: + + + bazaar + + curl + + cvs + + git + + mercurial + + scp + + sftp + + subversion + * Java-related packages, if the Java Classpath needs to be built + for the target system: + + + The javac compiler + + The jar tool + * Documentation generation tools: + + + asciidoc, version 8.6.3 or higher + + w3m + + python with the argparse module (automatically present in + 2.7+ and 3.2+) + + dblatex (required for the pdf manual only) + * Graph generation tools: + + + graphviz to use graph-depends and -graph-depends + + python-matplotlib to use graph-build + * Package statistics tools (pkg-stats): + + + python-aiohttp + +Chapter 3. Getting Buildroot + +Buildroot releases are made every 3 months, in February, May, August +and November. Release numbers are in the format YYYY.MM, so for +example 2013.02, 2014.08. + +Release tarballs are available at http://buildroot.org/downloads/. + +For your convenience, a Vagrantfile [https://www.vagrantup.com/] is +available in support/misc/Vagrantfile in the Buildroot source tree to +quickly set up a virtual machine with the needed dependencies to get +started. + +If you want to setup an isolated buildroot environment on Linux or +Mac Os X, paste this line onto your terminal: + +curl -O https://buildroot.org/downloads/Vagrantfile; vagrant up + +If you are on Windows, paste this into your powershell: + +(new-object System.Net.WebClient).DownloadFile( +"https://buildroot.org/downloads/Vagrantfile","Vagrantfile"); +vagrant up + +If you want to follow development, you can use the daily snapshots or +make a clone of the Git repository. Refer to the Download page [http: +//buildroot.org/download] of the Buildroot website for more details. + +Chapter 4. Buildroot quick start + +Important: you can and should build everything as a normal user. +There is no need to be root to configure and use Buildroot. By +running all commands as a regular user, you protect your system +against packages behaving badly during compilation and installation. + +The first step when using Buildroot is to create a configuration. +Buildroot has a nice configuration tool similar to the one you can +find in the Linux kernel [http://www.kernel.org/] or in BusyBox +[http://www.busybox.net/]. + +From the buildroot directory, run + + $ make menuconfig + +for the original curses-based configurator, or + + $ make nconfig + +for the new curses-based configurator, or + + $ make xconfig + +for the Qt-based configurator, or + + $ make gconfig + +for the GTK-based configurator. + +All of these "make" commands will need to build a configuration +utility (including the interface), so you may need to install +"development" packages for relevant libraries used by the +configuration utilities. Refer to Chapter 2, System requirements for +more details, specifically the optional requirements to get the +dependencies of your favorite interface. + +For each menu entry in the configuration tool, you can find +associated help that describes the purpose of the entry. Refer to +Chapter 6, Buildroot configuration for details on some specific +configuration aspects. + +Once everything is configured, the configuration tool generates a +.config file that contains the entire configuration. This file will +be read by the top-level Makefile. + +To start the build process, simply run: + + $ make + +By default, Buildroot does not support top-level parallel build, so +running make -jN is not necessary. There is however experimental +support for top-level parallel build, see Section 8.12, “Top-level +parallel build”. + +The make command will generally perform the following steps: + + * download source files (as required); + * configure, build and install the cross-compilation toolchain, or + simply import an external toolchain; + * configure, build and install selected target packages; + * build a kernel image, if selected; + * build a bootloader image, if selected; + * create a root filesystem in selected formats. + +Buildroot output is stored in a single directory, output/. This +directory contains several subdirectories: + + * images/ where all the images (kernel image, bootloader and root + filesystem images) are stored. These are the files you need to + put on your target system. + * build/ where all the components are built (this includes tools + needed by Buildroot on the host and packages compiled for the + target). This directory contains one subdirectory for each of + these components. + * host/ contains both the tools built for the host, and the sysroot + of the target toolchain. The former is an installation of tools + compiled for the host that are needed for the proper execution of + Buildroot, including the cross-compilation toolchain. The latter + is a hierarchy similar to a root filesystem hierarchy. It + contains the headers and libraries of all user-space packages + that provide and install libraries used by other packages. + However, this directory is not intended to be the root filesystem + for the target: it contains a lot of development files, + unstripped binaries and libraries that make it far too big for an + embedded system. These development files are used to compile + libraries and applications for the target that depend on other + libraries. + * staging/ is a symlink to the target toolchain sysroot inside host + /, which exists for backwards compatibility. + * target/ which contains almost the complete root filesystem for + the target: everything needed is present except the device files + in /dev/ (Buildroot can’t create them because Buildroot doesn’t + run as root and doesn’t want to run as root). Also, it doesn’t + have the correct permissions (e.g. setuid for the busybox + binary). Therefore, this directory should not be used on your + target. Instead, you should use one of the images built in the + images/ directory. If you need an extracted image of the root + filesystem for booting over NFS, then use the tarball image + generated in images/ and extract it as root. Compared to staging + /, target/ contains only the files and libraries needed to run + the selected target applications: the development files (headers, + etc.) are not present, the binaries are stripped. + +These commands, make menuconfig|nconfig|gconfig|xconfig and make, are +the basic ones that allow to easily and quickly generate images +fitting your needs, with all the features and applications you +enabled. + +More details about the "make" command usage are given in Section 8.1, +“make tips”. + +Chapter 5. Community resources + +Like any open source project, Buildroot has different ways to share +information in its community and outside. + +Each of those ways may interest you if you are looking for some help, +want to understand Buildroot or contribute to the project. + +Mailing List + + Buildroot has a mailing list for discussion and development. It + is the main method of interaction for Buildroot users and + developers. + + Only subscribers to the Buildroot mailing list are allowed to + post to this list. You can subscribe via the mailing list info + page [http://lists.buildroot.org/mailman/listinfo/buildroot]. + + Mails that are sent to the mailing list are also available in the + mailing list archives, available through Mailman [http:// + lists.buildroot.org/pipermail/buildroot] or at lore.kernel.org + [https://lore.kernel.org/buildroot/]. + +IRC + + The Buildroot IRC channel #buildroot [irc://irc.oftc.net/# + buildroot] is hosted on OFTC [https://www.oftc.net/WebChat/]. It + is a useful place to ask quick questions or discuss on certain + topics. + + When asking for help on IRC, share relevant logs or pieces of + code using a code sharing website, such as https://paste.ack.tf/. + + Note that for certain questions, posting to the mailing list may + be better as it will reach more people, both developers and + users. + +Bug tracker + Bugs in Buildroot can be reported via the mailing list or + alternatively via the Buildroot bugtracker [https://gitlab.com/ + buildroot.org/buildroot/-/issues]. Please refer to Section 22.6, + “Reporting issues/bugs or getting help” before creating a bug + report. +Wiki + The Buildroot wiki page [http://elinux.org/Buildroot] is hosted + on the eLinux [http://elinux.org] wiki. It contains some useful + links, an overview of past and upcoming events, and a TODO list. +Patchwork + + Patchwork is a web-based patch tracking system designed to + facilitate the contribution and management of contributions to an + open-source project. Patches that have been sent to a mailing + list are 'caught' by the system, and appear on a web page. Any + comments posted that reference the patch are appended to the + patch page too. For more information on Patchwork see http:// + jk.ozlabs.org/projects/patchwork/. + + Buildroot’s Patchwork website is mainly for use by Buildroot’s + maintainer to ensure patches aren’t missed. It is also used by + Buildroot patch reviewers (see also Section 22.3.1, “Applying + Patches from Patchwork”). However, since the website exposes + patches and their corresponding review comments in a clean and + concise web interface, it can be useful for all Buildroot + developers. + + The Buildroot patch management interface is available at https:// + patchwork.ozlabs.org/project/buildroot/list/. + +Part II. User guide + +Table of Contents + +6. Buildroot configuration + 6.1. Cross-compilation toolchain + 6.2. /dev management + 6.3. init system +7. Configuration of other components +8. General Buildroot usage + 8.1. make tips + 8.2. Understanding when a full rebuild is necessary + 8.3. Understanding how to rebuild packages + 8.4. Offline builds + 8.5. Building out-of-tree + 8.6. Environment variables + 8.7. Dealing efficiently with filesystem images + 8.8. Details about packages + 8.9. Graphing the dependencies between packages + 8.10. Graphing the build duration + 8.11. Graphing the filesystem size contribution of packages + 8.12. Top-level parallel build + 8.13. Advanced usage +9. Project-specific customization + 9.1. Recommended directory structure + 9.2. Keeping customizations outside of Buildroot + 9.3. Storing the Buildroot configuration + 9.4. Storing the configuration of other components + 9.5. Customizing the generated target filesystem + 9.6. Adding custom user accounts + 9.7. Customization after the images have been created + 9.8. Adding project-specific patches and hashes + 9.9. Adding project-specific packages + 9.10. Quick guide to storing your project-specific customizations +10. Integration topics + 10.1. Configurable packages + 10.2. Systemd + 10.3. Using SELinux in Buildroot +11. Frequently Asked Questions & Troubleshooting + 11.1. The boot hangs after Starting network… + 11.2. Why is there no compiler on the target? + 11.3. Why are there no development files on the target? + 11.4. Why is there no documentation on the target? + 11.5. Why are some packages not visible in the Buildroot config + menu? + 11.6. Why not use the target directory as a chroot directory? + 11.7. Why doesn’t Buildroot generate binary packages (.deb, + .ipkg…)? + 11.8. How to speed-up the build process? + 11.9. How does Buildroot support Y2038? +12. Known issues +13. Legal notice and licensing + 13.1. Complying with open source licenses + 13.2. Complying with the Buildroot license +14. Beyond Buildroot + 14.1. Boot the generated images + 14.2. Chroot + +Chapter 6. Buildroot configuration + +All the configuration options in make *config have a help text +providing details about the option. + +The make *config commands also offer a search tool. Read the help +message in the different frontend menus to know how to use it: + + * in menuconfig, the search tool is called by pressing /; + * in xconfig, the search tool is called by pressing Ctrl + f. + +The result of the search shows the help message of the matching +items. In menuconfig, numbers in the left column provide a shortcut +to the corresponding entry. Just type this number to directly jump to +the entry, or to the containing menu in case the entry is not +selectable due to a missing dependency. + +Although the menu structure and the help text of the entries should +be sufficiently self-explanatory, a number of topics require +additional explanation that cannot easily be covered in the help text +and are therefore covered in the following sections. + +6.1. Cross-compilation toolchain + +A compilation toolchain is the set of tools that allows you to +compile code for your system. It consists of a compiler (in our case, +gcc), binary utils like assembler and linker (in our case, binutils) +and a C standard library (for example GNU Libc [http://www.gnu.org/ +software/libc/libc.html], uClibc-ng [http://www.uclibc-ng.org/]). + +The system installed on your development station certainly already +has a compilation toolchain that you can use to compile an +application that runs on your system. If you’re using a PC, your +compilation toolchain runs on an x86 processor and generates code for +an x86 processor. Under most Linux systems, the compilation toolchain +uses the GNU libc (glibc) as the C standard library. This compilation +toolchain is called the "host compilation toolchain". The machine on +which it is running, and on which you’re working, is called the "host +system" ^[3]. + +The compilation toolchain is provided by your distribution, and +Buildroot has nothing to do with it (other than using it to build a +cross-compilation toolchain and other tools that are run on the +development host). + +As said above, the compilation toolchain that comes with your system +runs on and generates code for the processor in your host system. As +your embedded system has a different processor, you need a +cross-compilation toolchain - a compilation toolchain that runs on +your host system but generates code for your target system (and +target processor). For example, if your host system uses x86 and your +target system uses ARM, the regular compilation toolchain on your +host runs on x86 and generates code for x86, while the +cross-compilation toolchain runs on x86 and generates code for ARM. + +Buildroot provides two solutions for the cross-compilation toolchain: + + * The internal toolchain backend, called Buildroot toolchain in the + configuration interface. + * The external toolchain backend, called External toolchain in the + configuration interface. + +The choice between these two solutions is done using the Toolchain +Type option in the Toolchain menu. Once one solution has been chosen, +a number of configuration options appear, they are detailed in the +following sections. + +6.1.1. Internal toolchain backend + +The internal toolchain backend is the backend where Buildroot builds +by itself a cross-compilation toolchain, before building the +userspace applications and libraries for your target embedded system. + +This backend supports several C libraries: uClibc-ng [http:// +www.uclibc-ng.org], glibc [http://www.gnu.org/software/libc/ +libc.html] and musl [http://www.musl-libc.org]. + +Once you have selected this backend, a number of options appear. The +most important ones allow to: + + * Change the version of the Linux kernel headers used to build the + toolchain. This item deserves a few explanations. In the process + of building a cross-compilation toolchain, the C library is being + built. This library provides the interface between userspace + applications and the Linux kernel. In order to know how to "talk" + to the Linux kernel, the C library needs to have access to the + Linux kernel headers (i.e. the .h files from the kernel), which + define the interface between userspace and the kernel (system + calls, data structures, etc.). Since this interface is backward + compatible, the version of the Linux kernel headers used to build + your toolchain do not need to match exactly the version of the + Linux kernel you intend to run on your embedded system. They only + need to have a version equal or older to the version of the Linux + kernel you intend to run. If you use kernel headers that are more + recent than the Linux kernel you run on your embedded system, + then the C library might be using interfaces that are not + provided by your Linux kernel. + * Change the version of the GCC compiler, binutils and the C + library. + * Select a number of toolchain options (uClibc only): whether the + toolchain should have RPC support (used mainly for NFS), + wide-char support, locale support (for internationalization), C++ + support or thread support. Depending on which options you choose, + the number of userspace applications and libraries visible in + Buildroot menus will change: many applications and libraries + require certain toolchain options to be enabled. Most packages + show a comment when a certain toolchain option is required to be + able to enable those packages. If needed, you can further refine + the uClibc configuration by running make uclibc-menuconfig. Note + however that all packages in Buildroot are tested against the + default uClibc configuration bundled in Buildroot: if you deviate + from this configuration by removing features from uClibc, some + packages may no longer build. + +It is worth noting that whenever one of those options is modified, +then the entire toolchain and system must be rebuilt. See +Section 8.2, “Understanding when a full rebuild is necessary”. + +Advantages of this backend: + + * Well integrated with Buildroot + * Fast, only builds what’s necessary + +Drawbacks of this backend: + + * Rebuilding the toolchain is needed when doing make clean, which + takes time. If you’re trying to reduce your build time, consider + using the External toolchain backend. + +6.1.2. External toolchain backend + +The external toolchain backend allows to use existing pre-built +cross-compilation toolchains. Buildroot knows about a number of +well-known cross-compilation toolchains (from Linaro [http:// +www.linaro.org] for ARM, Sourcery CodeBench [http://www.mentor.com/ +embedded-software/sourcery-tools/sourcery-codebench/editions/ +lite-edition/] for ARM, x86-64, PowerPC, and MIPS, and is capable of +downloading them automatically, or it can be pointed to a custom +toolchain, either available for download or installed locally. + +Then, you have three solutions to use an external toolchain: + + * Use a predefined external toolchain profile, and let Buildroot + download, extract and install the toolchain. Buildroot already + knows about a few CodeSourcery and Linaro toolchains. Just select + the toolchain profile in Toolchain from the available ones. This + is definitely the easiest solution. + * Use a predefined external toolchain profile, but instead of + having Buildroot download and extract the toolchain, you can tell + Buildroot where your toolchain is already installed on your + system. Just select the toolchain profile in Toolchain through + the available ones, unselect Download toolchain automatically, + and fill the Toolchain path text entry with the path to your + cross-compiling toolchain. + * Use a completely custom external toolchain. This is particularly + useful for toolchains generated using crosstool-NG or with + Buildroot itself. To do this, select the Custom toolchain + solution in the Toolchain list. You need to fill the Toolchain + path, Toolchain prefix and External toolchain C library options. + Then, you have to tell Buildroot what your external toolchain + supports. If your external toolchain uses the glibc library, you + only have to tell whether your toolchain supports C++ or not and + whether it has built-in RPC support. If your external toolchain + uses the uClibc library, then you have to tell Buildroot if it + supports RPC, wide-char, locale, program invocation, threads and + C++. At the beginning of the execution, Buildroot will tell you + if the selected options do not match the toolchain configuration. + +Our external toolchain support has been tested with toolchains from +CodeSourcery and Linaro, toolchains generated by crosstool-NG [http:/ +/crosstool-ng.org], and toolchains generated by Buildroot itself. In +general, all toolchains that support the sysroot feature should work. +If not, do not hesitate to contact the developers. + +We do not support toolchains or SDK generated by OpenEmbedded or +Yocto, because these toolchains are not pure toolchains (i.e. just +the compiler, binutils, the C and C++ libraries). Instead these +toolchains come with a very large set of pre-compiled libraries and +programs. Therefore, Buildroot cannot import the sysroot of the +toolchain, as it would contain hundreds of megabytes of pre-compiled +libraries that are normally built by Buildroot. + +We also do not support using the distribution toolchain (i.e. the gcc +/binutils/C library installed by your distribution) as the toolchain +to build software for the target. This is because your distribution +toolchain is not a "pure" toolchain (i.e. only with the C/C++ +library), so we cannot import it properly into the Buildroot build +environment. So even if you are building a system for a x86 or x86_64 +target, you have to generate a cross-compilation toolchain with +Buildroot or crosstool-NG. + +If you want to generate a custom toolchain for your project, that can +be used as an external toolchain in Buildroot, our recommendation is +to build it either with Buildroot itself (see Section 6.1.3, “Build +an external toolchain with Buildroot”) or with crosstool-NG [http:// +crosstool-ng.org]. + +Advantages of this backend: + + * Allows to use well-known and well-tested cross-compilation + toolchains. + * Avoids the build time of the cross-compilation toolchain, which + is often very significant in the overall build time of an + embedded Linux system. + +Drawbacks of this backend: + + * If your pre-built external toolchain has a bug, may be hard to + get a fix from the toolchain vendor, unless you build your + external toolchain by yourself using Buildroot or Crosstool-NG. + +6.1.3. Build an external toolchain with Buildroot + +The Buildroot internal toolchain option can be used to create an +external toolchain. Here are a series of steps to build an internal +toolchain and package it up for reuse by Buildroot itself (or other +projects). + +Create a new Buildroot configuration, with the following details: + + * Select the appropriate Target options for your target CPU + architecture + * In the Toolchain menu, keep the default of Buildroot toolchain + for Toolchain type, and configure your toolchain as desired + * In the System configuration menu, select None as the Init system + and none as /bin/sh + * In the Target packages menu, disable BusyBox + * In the Filesystem images menu, disable tar the root filesystem + +Then, we can trigger the build, and also ask Buildroot to generate a +SDK. This will conveniently generate for us a tarball which contains +our toolchain: + +make sdk + +This produces the SDK tarball in $(O)/images, with a name similar to +arm-buildroot-linux-uclibcgnueabi_sdk-buildroot.tar.gz. Save this +tarball, as it is now the toolchain that you can re-use as an +external toolchain in other Buildroot projects. + +In those other Buildroot projects, in the Toolchain menu: + + * Set Toolchain type to External toolchain + * Set Toolchain to Custom toolchain + * Set Toolchain origin to Toolchain to be downloaded and installed + * Set Toolchain URL to file:///path/to/your/sdk/tarball.tar.gz + +6.1.3.1. External toolchain wrapper + +When using an external toolchain, Buildroot generates a wrapper +program, that transparently passes the appropriate options (according +to the configuration) to the external toolchain programs. In case you +need to debug this wrapper to check exactly what arguments are +passed, you can set the environment variable BR2_DEBUG_WRAPPER to +either one of: + + * 0, empty or not set: no debug + * 1: trace all arguments on a single line + * 2: trace one argument per line + +6.2. /dev management + +On a Linux system, the /dev directory contains special files, called +device files, that allow userspace applications to access the +hardware devices managed by the Linux kernel. Without these device +files, your userspace applications would not be able to use the +hardware devices, even if they are properly recognized by the Linux +kernel. + +Under System configuration, /dev management, Buildroot offers four +different solutions to handle the /dev directory : + + * The first solution is Static using device table. This is the old + classical way of handling device files in Linux. With this + method, the device files are persistently stored in the root + filesystem (i.e. they persist across reboots), and there is + nothing that will automatically create and remove those device + files when hardware devices are added or removed from the system. + Buildroot therefore creates a standard set of device files using + a device table, the default one being stored in system/ + device_table_dev.txt in the Buildroot source code. This file is + processed when Buildroot generates the final root filesystem + image, and the device files are therefore not visible in the + output/target directory. The BR2_ROOTFS_STATIC_DEVICE_TABLE + option allows to change the default device table used by + Buildroot, or to add an additional device table, so that + additional device files are created by Buildroot during the + build. So, if you use this method, and a device file is missing + in your system, you can for example create a board// + /device_table_dev.txt file that contains the + description of your additional device files, and then you can set + BR2_ROOTFS_STATIC_DEVICE_TABLE to system/device_table_dev.txt + board///device_table_dev.txt. For more + details about the format of the device table file, see + Chapter 25, Makedev syntax documentation. + * The second solution is Dynamic using devtmpfs only. devtmpfs is a + virtual filesystem inside the Linux kernel that has been + introduced in kernel 2.6.32 (if you use an older kernel, it is + not possible to use this option). When mounted in /dev, this + virtual filesystem will automatically make device files appear + and disappear as hardware devices are added and removed from the + system. This filesystem is not persistent across reboots: it is + filled dynamically by the kernel. Using devtmpfs requires the + following kernel configuration options to be enabled: + CONFIG_DEVTMPFS and CONFIG_DEVTMPFS_MOUNT. When Buildroot is in + charge of building the Linux kernel for your embedded device, it + makes sure that those two options are enabled. However, if you + build your Linux kernel outside of Buildroot, then it is your + responsibility to enable those two options (if you fail to do so, + your Buildroot system will not boot). + * The third solution is Dynamic using devtmpfs + mdev. This method + also relies on the devtmpfs virtual filesystem detailed above (so + the requirement to have CONFIG_DEVTMPFS and CONFIG_DEVTMPFS_MOUNT + enabled in the kernel configuration still apply), but adds the + mdev userspace utility on top of it. mdev is a program part of + BusyBox that the kernel will call every time a device is added or + removed. Thanks to the /etc/mdev.conf configuration file, mdev + can be configured to for example, set specific permissions or + ownership on a device file, call a script or application whenever + a device appears or disappear, etc. Basically, it allows + userspace to react on device addition and removal events. mdev + can for example be used to automatically load kernel modules when + devices appear on the system. mdev is also important if you have + devices that require a firmware, as it will be responsible for + pushing the firmware contents to the kernel. mdev is a + lightweight implementation (with fewer features) of udev. For + more details about mdev and the syntax of its configuration file, + see http://git.busybox.net/busybox/tree/docs/mdev.txt. + * The fourth solution is Dynamic using devtmpfs + eudev. This + method also relies on the devtmpfs virtual filesystem detailed + above, but adds the eudev userspace daemon on top of it. eudev is + a daemon that runs in the background, and gets called by the + kernel when a device gets added or removed from the system. It is + a more heavyweight solution than mdev, but provides higher + flexibility. eudev is a standalone version of udev, the original + userspace daemon used in most desktop Linux distributions, which + is now part of Systemd. For more details, see http:// + en.wikipedia.org/wiki/Udev. + +The Buildroot developers recommendation is to start with the Dynamic +using devtmpfs only solution, until you have the need for userspace +to be notified when devices are added/removed, or if firmwares are +needed, in which case Dynamic using devtmpfs + mdev is usually a good +solution. + +Note that if systemd is chosen as init system, /dev management will +be performed by the udev program provided by systemd. + +6.3. init system + +The init program is the first userspace program started by the kernel +(it carries the PID number 1), and is responsible for starting the +userspace services and programs (for example: web server, graphical +applications, other network servers, etc.). + +Buildroot allows to use three different types of init systems, which +can be chosen from System configuration, Init system: + + * The first solution is BusyBox. Amongst many programs, BusyBox has + an implementation of a basic init program, which is sufficient + for most embedded systems. Enabling the BR2_INIT_BUSYBOX will + ensure BusyBox will build and install its init program. This is + the default solution in Buildroot. The BusyBox init program will + read the /etc/inittab file at boot to know what to do. The syntax + of this file can be found in http://git.busybox.net/busybox/tree/ + examples/inittab (note that BusyBox inittab syntax is special: do + not use a random inittab documentation from the Internet to learn + about BusyBox inittab). The default inittab in Buildroot is + stored in system/skeleton/etc/inittab. Apart from mounting a few + important filesystems, the main job the default inittab does is + to start the /etc/init.d/rcS shell script, and start a getty + program (which provides a login prompt). + * The second solution is systemV. This solution uses the old + traditional sysvinit program, packed in Buildroot in package/ + sysvinit. This was the solution used in most desktop Linux + distributions, until they switched to more recent alternatives + such as Upstart or Systemd. sysvinit also works with an inittab + file (which has a slightly different syntax than the one from + BusyBox). The default inittab installed with this init solution + is located in package/sysvinit/inittab. + * The third solution is systemd. systemd is the new generation init + system for Linux. It does far more than traditional init + programs: aggressive parallelization capabilities, uses socket + and D-Bus activation for starting services, offers on-demand + starting of daemons, keeps track of processes using Linux control + groups, supports snapshotting and restoring of the system state, + etc. systemd will be useful on relatively complex embedded + systems, for example the ones requiring D-Bus and services + communicating between each other. It is worth noting that systemd + brings a fairly big number of large dependencies: dbus, udev and + more. For more details about systemd, see http:// + www.freedesktop.org/wiki/Software/systemd. + +The solution recommended by Buildroot developers is to use the +BusyBox init as it is sufficient for most embedded systems. systemd +can be used for more complex situations. + + +--------------------------------------------------------------------- + +^[3] This terminology differs from what is used by GNU configure, +where the host is the machine on which the application will run +(which is usually the same as target) + +Chapter 7. Configuration of other components + +Before attempting to modify any of the components below, make sure +you have already configured Buildroot itself, and have enabled the +corresponding package. + +BusyBox + + If you already have a BusyBox configuration file, you can + directly specify this file in the Buildroot configuration, using + BR2_PACKAGE_BUSYBOX_CONFIG. Otherwise, Buildroot will start from + a default BusyBox configuration file. + + To make subsequent changes to the configuration, use make + busybox-menuconfig to open the BusyBox configuration editor. + + It is also possible to specify a BusyBox configuration file + through an environment variable, although this is not + recommended. Refer to Section 8.6, “Environment variables” for + more details. + +uClibc + Configuration of uClibc is done in the same way as for BusyBox. + The configuration variable to specify an existing configuration + file is BR2_UCLIBC_CONFIG. The command to make subsequent changes + is make uclibc-menuconfig. +Linux kernel + + If you already have a kernel configuration file, you can directly + specify this file in the Buildroot configuration, using + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG. + + If you do not yet have a kernel configuration file, you can + either start by specifying a defconfig in the Buildroot + configuration, using BR2_LINUX_KERNEL_USE_DEFCONFIG, or start by + creating an empty file and specifying it as custom configuration + file, using BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG. + + To make subsequent changes to the configuration, use make + linux-menuconfig to open the Linux configuration editor. + +Barebox + Configuration of Barebox is done in the same way as for the Linux + kernel. The corresponding configuration variables are + BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG and + BR2_TARGET_BAREBOX_USE_DEFCONFIG. To open the configuration + editor, use make barebox-menuconfig. +U-Boot + Configuration of U-Boot (version 2015.04 or newer) is done in the + same way as for the Linux kernel. The corresponding configuration + variables are BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG and + BR2_TARGET_UBOOT_USE_DEFCONFIG. To open the configuration editor, + use make uboot-menuconfig. + +Chapter 8. General Buildroot usage + +8.1. make tips + +This is a collection of tips that help you make the most of +Buildroot. + +Display all commands executed by make:  + + $ make V=1 + +Display the list of boards with a defconfig:  + + $ make list-defconfigs + +Display all available targets:  + + $ make help + +Not all targets are always available, some settings in the .config +file may hide some targets: + + * busybox-menuconfig only works when busybox is enabled; + * linux-menuconfig and linux-savedefconfig only work when linux is + enabled; + * uclibc-menuconfig is only available when the uClibc C library is + selected in the internal toolchain backend; + * barebox-menuconfig and barebox-savedefconfig only work when the + barebox bootloader is enabled. + * uboot-menuconfig and uboot-savedefconfig only work when the + U-Boot bootloader is enabled and the uboot build system is set to + Kconfig. + +Cleaning: Explicit cleaning is required when any of the architecture +or toolchain configuration options are changed. + +To delete all build products (including build directories, host, +staging and target trees, the images and the toolchain): + + $ make clean + +Generating the manual: The present manual sources are located in the +docs/manual directory. To generate the manual: + + $ make manual-clean + $ make manual + +The manual outputs will be generated in output/docs/manual. + +Notes + + * A few tools are required to build the documentation (see: + Section 2.2, “Optional packages”). + +Resetting Buildroot for a new target: To delete all build products as +well as the configuration: + + $ make distclean + +Notes. If ccache is enabled, running make clean or distclean does not +empty the compiler cache used by Buildroot. To delete it, refer to +Section 8.13.3, “Using ccache in Buildroot”. + +Dumping the internal make variables: One can dump the variables known +to make, along with their values: + + $ make -s printvars VARS='VARIABLE1 VARIABLE2' + VARIABLE1=value_of_variable + VARIABLE2=value_of_variable + +It is possible to tweak the output using some variables: + + * VARS will limit the listing to variables which names match the + specified make-patterns - this must be set else nothing is + printed + * QUOTED_VARS, if set to YES, will single-quote the value + * RAW_VARS, if set to YES, will print the unexpanded value + +For example: + + $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES + BUSYBOX_DEPENDENCIES=skeleton toolchain + BUSYBOX_FINAL_ALL_DEPENDENCIES=skeleton toolchain + BUSYBOX_FINAL_DEPENDENCIES=skeleton toolchain + BUSYBOX_FINAL_PATCH_DEPENDENCIES= + BUSYBOX_RDEPENDENCIES=ncurses util-linux + + $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES QUOTED_VARS=YES + BUSYBOX_DEPENDENCIES='skeleton toolchain' + BUSYBOX_FINAL_ALL_DEPENDENCIES='skeleton toolchain' + BUSYBOX_FINAL_DEPENDENCIES='skeleton toolchain' + BUSYBOX_FINAL_PATCH_DEPENDENCIES='' + BUSYBOX_RDEPENDENCIES='ncurses util-linux' + + $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES RAW_VARS=YES + BUSYBOX_DEPENDENCIES=skeleton toolchain + BUSYBOX_FINAL_ALL_DEPENDENCIES=$(sort $(BUSYBOX_FINAL_DEPENDENCIES) $(BUSYBOX_FINAL_PATCH_DEPENDENCIES)) + BUSYBOX_FINAL_DEPENDENCIES=$(sort $(BUSYBOX_DEPENDENCIES)) + BUSYBOX_FINAL_PATCH_DEPENDENCIES=$(sort $(BUSYBOX_PATCH_DEPENDENCIES)) + BUSYBOX_RDEPENDENCIES=ncurses util-linux + +The output of quoted variables can be reused in shell scripts, for +example: + + $ eval $(make -s printvars VARS=BUSYBOX_DEPENDENCIES QUOTED_VARS=YES) + $ echo $BUSYBOX_DEPENDENCIES + skeleton toolchain + +8.2. Understanding when a full rebuild is necessary + +Buildroot does not attempt to detect what parts of the system should +be rebuilt when the system configuration is changed through make +menuconfig, make xconfig or one of the other configuration tools. In +some cases, Buildroot should rebuild the entire system, in some +cases, only a specific subset of packages. But detecting this in a +completely reliable manner is very difficult, and therefore the +Buildroot developers have decided to simply not attempt to do this. + +Instead, it is the responsibility of the user to know when a full +rebuild is necessary. As a hint, here are a few rules of thumb that +can help you understand how to work with Buildroot: + + * When the target architecture configuration is changed, a complete + rebuild is needed. Changing the architecture variant, the binary + format or the floating point strategy for example has an impact + on the entire system. + * When the toolchain configuration is changed, a complete rebuild + generally is needed. Changing the toolchain configuration often + involves changing the compiler version, the type of C library or + its configuration, or some other fundamental configuration item, + and these changes have an impact on the entire system. + * When an additional package is added to the configuration, a full + rebuild is not necessarily needed. Buildroot will detect that + this package has never been built, and will build it. However, if + this package is a library that can optionally be used by packages + that have already been built, Buildroot will not automatically + rebuild those. Either you know which packages should be rebuilt, + and you can rebuild them manually, or you should do a full + rebuild. For example, let’s suppose you have built a system with + the ctorrent package, but without openssl. Your system works, but + you realize you would like to have SSL support in ctorrent, so + you enable the openssl package in Buildroot configuration and + restart the build. Buildroot will detect that openssl should be + built and will be build it, but it will not detect that ctorrent + should be rebuilt to benefit from openssl to add OpenSSL support. + You will either have to do a full rebuild, or rebuild ctorrent + itself. + * When a package is removed from the configuration, Buildroot does + not do anything special. It does not remove the files installed + by this package from the target root filesystem or from the + toolchain sysroot. A full rebuild is needed to get rid of this + package. However, generally you don’t necessarily need this + package to be removed right now: you can wait for the next lunch + break to restart the build from scratch. + * When the sub-options of a package are changed, the package is not + automatically rebuilt. After making such changes, rebuilding only + this package is often sufficient, unless enabling the package + sub-option adds some features to the package that are useful for + another package which has already been built. Again, Buildroot + does not track when a package should be rebuilt: once a package + has been built, it is never rebuilt unless explicitly told to do + so. + * When a change to the root filesystem skeleton is made, a full + rebuild is needed. However, when changes to the root filesystem + overlay, a post-build script or a post-image script are made, + there is no need for a full rebuild: a simple make invocation + will take the changes into account. + * When a package listed in FOO_DEPENDENCIES is rebuilt or removed, + the package foo is not automatically rebuilt. For example, if a + package bar is listed in FOO_DEPENDENCIES with FOO_DEPENDENCIES = + bar and the configuration of the bar package is changed, the + configuration change would not result in a rebuild of package foo + automatically. In this scenario, you may need to either rebuild + any packages in your build which reference bar in their + DEPENDENCIES, or perform a full rebuild to ensure any bar + dependent packages are up to date. + +Generally speaking, when you’re facing a build error and you’re +unsure of the potential consequences of the configuration changes +you’ve made, do a full rebuild. If you get the same build error, then +you are sure that the error is not related to partial rebuilds of +packages, and if this error occurs with packages from the official +Buildroot, do not hesitate to report the problem! As your experience +with Buildroot progresses, you will progressively learn when a full +rebuild is really necessary, and you will save more and more time. + +For reference, a full rebuild is achieved by running: + +$ make clean all + +8.3. Understanding how to rebuild packages + +One of the most common questions asked by Buildroot users is how to +rebuild a given package or how to remove a package without rebuilding +everything from scratch. + +Removing a package is unsupported by Buildroot without rebuilding +from scratch. This is because Buildroot doesn’t keep track of which +package installs what files in the output/staging and output/target +directories, or which package would be compiled differently depending +on the availability of another package. + +The easiest way to rebuild a single package from scratch is to remove +its build directory in output/build. Buildroot will then re-extract, +re-configure, re-compile and re-install this package from scratch. +You can ask buildroot to do this with the make -dirclean +command. + +On the other hand, if you only want to restart the build process of a +package from its compilation step, you can run make +-rebuild. It will restart the compilation and installation of the +package, but not from scratch: it basically re-executes make and make +install inside the package, so it will only rebuild files that +changed. + +If you want to restart the build process of a package from its +configuration step, you can run make -reconfigure. It will +restart the configuration, compilation and installation of the +package. + +While -rebuild implies -reinstall and +-reconfigure implies -rebuild, these targets as well as + only act on the said package, and do not trigger +re-creating the root filesystem image. If re-creating the root +filesystem in necessary, one should in addition run make or make all. + +Internally, Buildroot creates so-called stamp files to keep track of +which build steps have been completed for each package. They are +stored in the package build directory, output/build/- +/ and are named .stamp_. The commands detailed +above simply manipulate these stamp files to force Buildroot to +restart a specific set of steps of a package build process. + +Further details about package special make targets are explained in +Section 8.13.5, “Package-specific make targets”. + +8.4. Offline builds + +If you intend to do an offline build and just want to download all +sources that you previously selected in the configurator (menuconfig, +nconfig, xconfig or gconfig), then issue: + + $ make source + +You can now disconnect or copy the content of your dl directory to +the build-host. + +8.5. Building out-of-tree + +As default, everything built by Buildroot is stored in the directory +output in the Buildroot tree. + +Buildroot also supports building out of tree with a syntax similar to +the Linux kernel. To use it, add O= to the make command +line: + + $ make O=/tmp/build menuconfig + +Or: + + $ cd /tmp/build; make O=$PWD -C path/to/buildroot menuconfig + +All the output files will be located under /tmp/build. If the O path +does not exist, Buildroot will create it. + +Note: the O path can be either an absolute or a relative path, but if +it’s passed as a relative path, it is important to note that it is +interpreted relative to the main Buildroot source directory, not the +current working directory. + +When using out-of-tree builds, the Buildroot .config and temporary +files are also stored in the output directory. This means that you +can safely run multiple builds in parallel using the same source tree +as long as they use unique output directories. + +For ease of use, Buildroot generates a Makefile wrapper in the output +directory - so after the first run, you no longer need to pass O=<…> +and -C <…>, simply run (in the output directory): + + $ make + +8.6. Environment variables + +Buildroot also honors some environment variables, when they are +passed to make or set in the environment: + + * HOSTCXX, the host C++ compiler to use + * HOSTCC, the host C compiler to use + * UCLIBC_CONFIG_FILE=, path to the uClibc + configuration file, used to compile uClibc, if an internal + toolchain is being built. Note that the uClibc configuration file + can also be set from the configuration interface, so through the + Buildroot .config file; this is the recommended way of setting + it. + * BUSYBOX_CONFIG_FILE=, path to the BusyBox + configuration file. Note that the BusyBox configuration file can + also be set from the configuration interface, so through the + Buildroot .config file; this is the recommended way of setting + it. + * BR2_CCACHE_DIR to override the directory where Buildroot stores + the cached files when using ccache. + * BR2_DL_DIR to override the directory in which Buildroot stores/ + retrieves downloaded files. Note that the Buildroot download + directory can also be set from the configuration interface, so + through the Buildroot .config file. See Section 8.13.4, “Location + of downloaded packages” for more details on how you can set the + download directory. + * BR2_GRAPH_ALT, if set and non-empty, to use an alternate + color-scheme in build-time graphs + * BR2_GRAPH_OUT to set the filetype of generated graphs, either pdf + (the default), or png. + * BR2_GRAPH_DEPS_OPTS to pass extra options to the dependency + graph; see Section 8.9, “Graphing the dependencies between + packages” for the accepted options + * BR2_GRAPH_DOT_OPTS is passed verbatim as options to the dot + utility to draw the dependency graph. + * BR2_GRAPH_SIZE_OPTS to pass extra options to the size graph; see + Section 8.11, “Graphing the filesystem size contribution of + packages” for the acepted options + +An example that uses config files located in the toplevel directory +and in your $HOME: + + $ make UCLIBC_CONFIG_FILE=uClibc.config BUSYBOX_CONFIG_FILE=$HOME/bb.config + +If you want to use a compiler other than the default gcc or g++ for +building helper-binaries on your host, then do + + $ make HOSTCXX=g++-4.3-HEAD HOSTCC=gcc-4.3-HEAD + +8.7. Dealing efficiently with filesystem images + +Filesystem images can get pretty big, depending on the filesystem you +choose, the number of packages, whether you provisioned free space… +Yet, some locations in the filesystems images may just be empty (e.g. +a long run of zeroes); such a file is called a sparse file. + +Most tools can handle sparse files efficiently, and will only store +or write those parts of a sparse file that are not empty. + +For example: + + * tar accepts the -S option to tell it to only store non-zero + blocks of sparse files: + + + tar cf archive.tar -S [files…] will efficiently store sparse + files in a tarball + + tar xf archive.tar -S will efficiently store sparse files + extracted from a tarball + * cp accepts the --sparse=WHEN option (WHEN is one of auto, never + or always): + + + cp --sparse=always source.file dest.file will make dest.file + a sparse file if source.file has long runs of zeroes + +Other tools may have similar options. Please consult their respective +man pages. + +You can use sparse files if you need to store the filesystem images +(e.g. to transfer from one machine to another), or if you need to +send them (e.g. to the Q&A team). + +Note however that flashing a filesystem image to a device while using +the sparse mode of dd may result in a broken filesystem (e.g. the +block bitmap of an ext2 filesystem may be corrupted; or, if you have +sparse files in your filesystem, those parts may not be all-zeroes +when read back). You should only use sparse files when handling files +on the build machine, not when transferring them to an actual device +that will be used on the target. + +8.8. Details about packages + +Buildroot can produce a JSON blurb that describes the set of enabled +packages in the current configuration, together with their +dependencies, licenses and other metadata. This JSON blurb is +produced by using the show-info make target: + +make show-info + +Buildroot can also produce details about packages as HTML and JSON +output using the pkg-stats make target. Amongst other things, these +details include whether known CVEs (security vulnerabilities) affect +the packages in your current configuration. It also shows if there is +a newer upstream version for those packages. + +make pkg-stats + +8.9. Graphing the dependencies between packages + +One of Buildroot’s jobs is to know the dependencies between packages, +and make sure they are built in the right order. These dependencies +can sometimes be quite complicated, and for a given system, it is +often not easy to understand why such or such package was brought +into the build by Buildroot. + +In order to help understanding the dependencies, and therefore better +understand what is the role of the different components in your +embedded Linux system, Buildroot is capable of generating dependency +graphs. + +To generate a dependency graph of the full system you have compiled, +simply run: + +make graph-depends + +You will find the generated graph in output/graphs/graph-depends.pdf. + +If your system is quite large, the dependency graph may be too +complex and difficult to read. It is therefore possible to generate +the dependency graph just for a given package: + +make -graph-depends + +You will find the generated graph in output/graph/ +-graph-depends.pdf. + +Note that the dependency graphs are generated using the dot tool from +the Graphviz project, which you must have installed on your system to +use this feature. In most distributions, it is available as the +graphviz package. + +By default, the dependency graphs are generated in the PDF format. +However, by passing the BR2_GRAPH_OUT environment variable, you can +switch to other output formats, such as PNG, PostScript or SVG. All +formats supported by the -T option of the dot tool are supported. + +BR2_GRAPH_OUT=svg make graph-depends + +The graph-depends behaviour can be controlled by setting options in +the BR2_GRAPH_DEPS_OPTS environment variable. The accepted options +are: + + * --depth N, -d N, to limit the dependency depth to N levels. The + default, 0, means no limit. + * --stop-on PKG, -s PKG, to stop the graph on the package PKG. PKG + can be an actual package name, a glob, the keyword virtual (to + stop on virtual packages), or the keyword host (to stop on host + packages). The package is still present on the graph, but its + dependencies are not. + * --exclude PKG, -x PKG, like --stop-on, but also omits PKG from + the graph. + * --transitive, --no-transitive, to draw (or not) the transitive + dependencies. The default is to not draw transitive dependencies. + * --colors R,T,H, the comma-separated list of colors to draw the + root package (R), the target packages (T) and the host packages + (H). Defaults to: lightblue,grey,gainsboro + +BR2_GRAPH_DEPS_OPTS='-d 3 --no-transitive --colors=red,green,blue' make graph-depends + +8.10. Graphing the build duration + +When the build of a system takes a long time, it is sometimes useful +to be able to understand which packages are the longest to build, to +see if anything can be done to speed up the build. In order to help +such build time analysis, Buildroot collects the build time of each +step of each package, and allows to generate graphs from this data. + +To generate the build time graph after a build, run: + +make graph-build + +This will generate a set of files in output/graphs : + + * build.hist-build.pdf, a histogram of the build time for each + package, ordered in the build order. + * build.hist-duration.pdf, a histogram of the build time for each + package, ordered by duration (longest first) + * build.hist-name.pdf, a histogram of the build time for each + package, order by package name. + * build.pie-packages.pdf, a pie chart of the build time per package + * build.pie-steps.pdf, a pie chart of the global time spent in each + step of the packages build process. + +This graph-build target requires the Python Matplotlib and Numpy +libraries to be installed (python-matplotlib and python-numpy on most +distributions), and also the argparse module if you’re using a Python +version older than 2.7 (python-argparse on most distributions). + +By default, the output format for the graph is PDF, but a different +format can be selected using the BR2_GRAPH_OUT environment variable. +The only other format supported is PNG: + +BR2_GRAPH_OUT=png make graph-build + +8.11. Graphing the filesystem size contribution of packages + +When your target system grows, it is sometimes useful to understand +how much each Buildroot package is contributing to the overall root +filesystem size. To help with such an analysis, Buildroot collects +data about files installed by each package and using this data, +generates a graph and CSV files detailing the size contribution of +the different packages. + +To generate these data after a build, run: + +make graph-size + +This will generate: + + * output/graphs/graph-size.pdf, a pie chart of the contribution of + each package to the overall root filesystem size + * output/graphs/package-size-stats.csv, a CSV file giving the size + contribution of each package to the overall root filesystem size + * output/graphs/file-size-stats.csv, a CSV file giving the size + contribution of each installed file to the package it belongs, + and to the overall filesystem size. + +This graph-size target requires the Python Matplotlib library to be +installed (python-matplotlib on most distributions), and also the +argparse module if you’re using a Python version older than 2.7 +(python-argparse on most distributions). + +Just like for the duration graph, a BR2_GRAPH_OUT environment +variable is supported to adjust the output file format. See +Section 8.9, “Graphing the dependencies between packages” for details +about this environment variable. + +Additionally, one may set the environment variable +BR2_GRAPH_SIZE_OPTS to further control the generated graph. Accepted +options are: + + * --size-limit X, -l X, will group all packages which individual + contribution is below X percent, to a single entry labelled + Others in the graph. By default, X=0.01, which means packages + each contributing less than 1% are grouped under Others. Accepted + values are in the range [0.0..1.0]. + * --iec, --binary, --si, --decimal, to use IEC (binary, powers of + 1024) or SI (decimal, powers of 1000; the default) prefixes. + * --biggest-first, to sort packages in decreasing size order, + rather than in increasing size order. + +Note. The collected filesystem size data is only meaningful after a +complete clean rebuild. Be sure to run make clean all before using +make graph-size. + +To compare the root filesystem size of two different Buildroot +compilations, for example after adjusting the configuration or when +switching to another Buildroot release, use the size-stats-compare +script. It takes two file-size-stats.csv files (produced by make +graph-size) as input. Refer to the help text of this script for more +details: + +utils/size-stats-compare -h + +8.12. Top-level parallel build + +Note. This section deals with a very experimental feature, which is +known to break even in some non-unusual situations. Use at your own +risk. + +Buildroot has always been capable of using parallel build on a per +package basis: each package is built by Buildroot using make -jN (or +the equivalent invocation for non-make-based build systems). The +level of parallelism is by default number of CPUs + 1, but it can be +adjusted using the BR2_JLEVEL configuration option. + +Until 2020.02, Buildroot was however building packages in a serial +fashion: each package was built one after the other, without +parallelization of the build between packages. As of 2020.02, +Buildroot has experimental support for top-level parallel build, +which allows some signicant build time savings by building packages +that have no dependency relationship in parallel. This feature is +however marked as experimental and is known not to work in some +cases. + +In order to use top-level parallel build, one must: + + 1. Enable the option BR2_PER_PACKAGE_DIRECTORIES in the Buildroot + configuration + 2. Use make -jN when starting the Buildroot build + +Internally, the BR2_PER_PACKAGE_DIRECTORIES will enable a mechanism +called per-package directories, which will have the following +effects: + + * Instead of a global target directory and a global host directory + common to all packages, per-package target and host directories + will be used, in $(O)/per-package//target/ and $(O)/ + per-package//host/ respectively. Those folders will be + populated from the corresponding folders of the package + dependencies at the beginning of build. The compiler and + all other tools will therefore only be able to see and access + files installed by dependencies explicitly listed by . + * At the end of the build, the global target and host directories + will be populated, located in $(O)/target and $(O)/host + respectively. This means that during the build, those folders + will be empty and it’s only at the very end of the build that + they will be populated. + +8.13. Advanced usage + +8.13.1. Using the generated toolchain outside Buildroot + +You may want to compile, for your target, your own programs or other +software that are not packaged in Buildroot. In order to do this you +can use the toolchain that was generated by Buildroot. + +The toolchain generated by Buildroot is located by default in output/ +host/. The simplest way to use it is to add output/host/bin/ to your +PATH environment variable and then to use ARCH-linux-gcc, +ARCH-linux-objdump, ARCH-linux-ld, etc. + +Alternatively, Buildroot can also export the toolchain and the +development files of all selected packages, as an SDK, by running the +command make sdk. This generates a tarball of the content of the host +directory output/host/, named _sdk-buildroot.tar.gz +(which can be overriden by setting the environment variable +BR2_SDK_PREFIX) and located in the output directory output/images/. + +This tarball can then be distributed to application developers, when +they want to develop their applications that are not (yet) packaged +as a Buildroot package. + +Upon extracting the SDK tarball, the user must run the script +relocate-sdk.sh (located at the top directory of the SDK), to make +sure all paths are updated with the new location. + +Alternatively, if you just want to prepare the SDK without generating +the tarball (e.g. because you will just be moving the host directory, +or will be generating the tarball on your own), Buildroot also allows +you to just prepare the SDK with make prepare-sdk without actually +generating a tarball. + +For your convenience, by selecting the option +BR2_PACKAGE_HOST_ENVIRONMENT_SETUP, you can get a environment-setup +script installed in output/host/ and therefore in your SDK. This +script can be sourced with . your/sdk/path/environment-setup to +export a number of environment variables that will help cross-compile +your projects using the Buildroot SDK: the PATH will contain the SDK +binaries, standard autotools variables will be defined with the +appropriate values, and CONFIGURE_FLAGS will contain basic ./ +configure options to cross-compile autotools projects. It also +provides some useful commands. Note however that once this script is +sourced, the environment is setup only for cross-compilation, and no +longer for native compilation. + +8.13.2. Using gdb in Buildroot + +Buildroot allows to do cross-debugging, where the debugger runs on +the build machine and communicates with gdbserver on the target to +control the execution of the program. + +To achieve this: + + * If you are using an internal toolchain (built by Buildroot), you + must enable BR2_PACKAGE_HOST_GDB, BR2_PACKAGE_GDB and + BR2_PACKAGE_GDB_SERVER. This ensures that both the cross gdb and + gdbserver get built, and that gdbserver gets installed to your + target. + * If you are using an external toolchain, you should enable + BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY, which will copy the + gdbserver included with the external toolchain to the target. If + your external toolchain does not have a cross gdb or gdbserver, + it is also possible to let Buildroot build them, by enabling the + same options as for the internal toolchain backend. + +Now, to start debugging a program called foo, you should run on the +target: + +gdbserver :2345 foo + +This will cause gdbserver to listen on TCP port 2345 for a connection +from the cross gdb. + +Then, on the host, you should start the cross gdb using the following +command line: + +/output/host/bin/-gdb -ix /output/staging/usr/share/buildroot/gdbinit foo + +Of course, foo must be available in the current directory, built with +debugging symbols. Typically you start this command from the +directory where foo is built (and not from output/target/ as the +binaries in that directory are stripped). + +The /output/staging/usr/share/buildroot/gdbinit file will +tell the cross gdb where to find the libraries of the target. + +Finally, to connect to the target from the cross gdb: + +(gdb) target remote :2345 + +8.13.3. Using ccache in Buildroot + +ccache [http://ccache.samba.org] is a compiler cache. It stores the +object files resulting from each compilation process, and is able to +skip future compilation of the same source file (with same compiler +and same arguments) by using the pre-existing object files. When +doing almost identical builds from scratch a number of times, it can +nicely speed up the build process. + +ccache support is integrated in Buildroot. You just have to enable +Enable compiler cache in Build options. This will automatically build +ccache and use it for every host and target compilation. + +The cache is located in the directory defined by the BR2_CCACHE_DIR +configuration option, which defaults to $HOME/.buildroot-ccache. This +default location is outside of Buildroot output directory so that it +can be shared by separate Buildroot builds. If you want to get rid of +the cache, simply remove this directory. + +You can get statistics on the cache (its size, number of hits, +misses, etc.) by running make ccache-stats. + +The make target ccache-options and the CCACHE_OPTIONS variable +provide more generic access to the ccache. For example + +# set cache limit size +make CCACHE_OPTIONS="--max-size=5G" ccache-options + +# zero statistics counters +make CCACHE_OPTIONS="--zero-stats" ccache-options + +ccache makes a hash of the source files and of the compiler options. +If a compiler option is different, the cached object file will not be +used. Many compiler options, however, contain an absolute path to the +staging directory. Because of this, building in a different output +directory would lead to many cache misses. + +To avoid this issue, buildroot has the Use relative paths option +(BR2_CCACHE_USE_BASEDIR). This will rewrite all absolute paths that +point inside the output directory into relative paths. Thus, changing +the output directory no longer leads to cache misses. + +A disadvantage of the relative paths is that they also end up to be +relative paths in the object file. Therefore, for example, the +debugger will no longer find the file, unless you cd to the output +directory first. + +See the ccache manual’s section on "Compiling in different +directories" [https://ccache.samba.org/manual.html# +_compiling_in_different_directories] for more details about this +rewriting of absolute paths. + +When ccache is enabled in Buildroot using the BR2_CCACHE=y option: + + * ccache is used during the Buildroot build itself + * ccache is not used when building outside of Buildroot, for + example when directly calling the cross-compiler or using the SDK + +One can override this behavior using the BR2_USE_CCACHE environment +variable: when set to 1, usage of ccache is enabled (default during +the Buildroot build), when unset or set to a value different from 1, +usage of ccache is disabled. + +8.13.4. Location of downloaded packages + +The various tarballs that are downloaded by Buildroot are all stored +in BR2_DL_DIR, which by default is the dl directory. If you want to +keep a complete version of Buildroot which is known to be working +with the associated tarballs, you can make a copy of this directory. +This will allow you to regenerate the toolchain and the target +filesystem with exactly the same versions. + +If you maintain several Buildroot trees, it might be better to have a +shared download location. This can be achieved by pointing the +BR2_DL_DIR environment variable to a directory. If this is set, then +the value of BR2_DL_DIR in the Buildroot configuration is overridden. +The following line should be added to <~/.bashrc>. + + export BR2_DL_DIR= + +The download location can also be set in the .config file, with the +BR2_DL_DIR option. Unlike most options in the .config file, this +value is overridden by the BR2_DL_DIR environment variable. + +8.13.5. Package-specific make targets + +Running make builds and installs that particular package +and its dependencies. + +For packages relying on the Buildroot infrastructure, there are +numerous special make targets that can be called independently like +this: + +make - + +The package build targets are (in the order they are executed): + ++------------------------------------------------------------+ +|command/target |Description | +|---------------+--------------------------------------------| +| source |Fetch the source (download the tarball, | +| |clone the source repository, etc) | +|---------------+--------------------------------------------| +| depends |Build and install all dependencies required | +| |to build the package | +|---------------+--------------------------------------------| +| extract |Put the source in the package build | +| |directory (extract the tarball, copy the | +| |source, etc) | +|---------------+--------------------------------------------| +| patch |Apply the patches, if any | +|---------------+--------------------------------------------| +| configure |Run the configure commands, if any | +|---------------+--------------------------------------------| +| build |Run the compilation commands | +|---------------+--------------------------------------------| +|install-staging|target package: Run the installation of the | +| |package in the staging directory, if | +| |necessary | +|---------------+--------------------------------------------| +|install-target |target package: Run the installation of the | +| |package in the target directory, if | +| |necessary | +|---------------+--------------------------------------------| +| install |target package: Run the 2 previous | +| |installation commands | +| | | +| |host package: Run the installation of the | +| |package in the host directory | ++------------------------------------------------------------+ + +Additionally, there are some other useful make targets: + ++------------------------------------------------------------+ +| command/target |Description | +|-----------------------+------------------------------------| +| show-depends |Displays the first-order | +| |dependencies required to build the | +| |package | +|-----------------------+------------------------------------| +|show-recursive-depends |Recursively displays the | +| |dependencies required to build the | +| |package | +|-----------------------+------------------------------------| +| show-rdepends |Displays the first-order reverse | +| |dependencies of the package (i.e | +| |packages that directly depend on it)| +|-----------------------+------------------------------------| +|show-recursive-rdepends|Recursively displays the reverse | +| |dependencies of the package (i.e the| +| |packages that depend on it, directly| +| |or indirectly) | +|-----------------------+------------------------------------| +| graph-depends |Generate a dependency graph of the | +| |package, in the context of the | +| |current Buildroot configuration. See| +| |this section for more details about | +| |dependency graphs. | +|-----------------------+------------------------------------| +| graph-rdepends |Generate a graph of this package | +| |reverse dependencies (i.e the | +| |packages that depend on it, directly| +| |or indirectly) | +|-----------------------+------------------------------------| +| graph-both-depends |Generate a graph of this package in | +| |both directions (i.e the packages | +| |that depend on it and on which it | +| |depends, directly or indirectly) | +|-----------------------+------------------------------------| +| dirclean |Remove the whole package build | +| |directory | +|-----------------------+------------------------------------| +| reinstall |Re-run the install commands | +|-----------------------+------------------------------------| +| rebuild |Re-run the compilation commands - | +| |this only makes sense when using the| +| |OVERRIDE_SRCDIR feature or when you | +| |modified a file directly in the | +| |build directory | +|-----------------------+------------------------------------| +| reconfigure |Re-run the configure commands, then | +| |rebuild - this only makes sense when| +| |using the OVERRIDE_SRCDIR feature or| +| |when you modified a file directly in| +| |the build directory | ++------------------------------------------------------------+ + +8.13.6. Using Buildroot during development + +The normal operation of Buildroot is to download a tarball, extract +it, configure, compile and install the software component found +inside this tarball. The source code is extracted in output/build/ +-, which is a temporary directory: whenever make +clean is used, this directory is entirely removed, and re-created at +the next make invocation. Even when a Git or Subversion repository is +used as the input for the package source code, Buildroot creates a +tarball out of it, and then behaves as it normally does with +tarballs. + +This behavior is well-suited when Buildroot is used mainly as an +integration tool, to build and integrate all the components of an +embedded Linux system. However, if one uses Buildroot during the +development of certain components of the system, this behavior is not +very convenient: one would instead like to make a small change to the +source code of one package, and be able to quickly rebuild the system +with Buildroot. + +Making changes directly in output/build/- is not an +appropriate solution, because this directory is removed on make +clean. + +Therefore, Buildroot provides a specific mechanism for this use case: +the _OVERRIDE_SRCDIR mechanism. Buildroot reads an override +file, which allows the user to tell Buildroot the location of the +source for certain packages. + +The default location of the override file is $(CONFIG_DIR)/local.mk, +as defined by the BR2_PACKAGE_OVERRIDE_FILE configuration option. $ +(CONFIG_DIR) is the location of the Buildroot .config file, so +local.mk by default lives side-by-side with the .config file, which +means: + + * In the top-level Buildroot source directory for in-tree builds + (i.e., when O= is not used) + * In the out-of-tree directory for out-of-tree builds (i.e., when O + = is used) + +If a different location than these defaults is required, it can be +specified through the BR2_PACKAGE_OVERRIDE_FILE configuration option. + +In this override file, Buildroot expects to find lines of the form: + +_OVERRIDE_SRCDIR = /path/to/pkg1/sources +_OVERRIDE_SRCDIR = /path/to/pkg2/sources + +For example: + +LINUX_OVERRIDE_SRCDIR = /home/bob/linux/ +BUSYBOX_OVERRIDE_SRCDIR = /home/bob/busybox/ + +When Buildroot finds that for a given package, an +_OVERRIDE_SRCDIR has been defined, it will no longer attempt to +download, extract and patch the package. Instead, it will directly +use the source code available in the specified directory and make +clean will not touch this directory. This allows to point Buildroot +to your own directories, that can be managed by Git, Subversion, or +any other version control system. To achieve this, Buildroot will use +rsync to copy the source code of the component from the specified +_OVERRIDE_SRCDIR to output/build/-custom/. + +This mechanism is best used in conjunction with the make +-rebuild and make -reconfigure targets. A make -rebuild all +sequence will rsync the source code from _OVERRIDE_SRCDIR to +output/build/-custom (thanks to rsync, only the modified +files are copied), and restart the build process of just this +package. + +In the example of the linux package above, the developer can then +make a source code change in /home/bob/linux and then run: + +make linux-rebuild all + +and in a matter of seconds gets the updated Linux kernel image in +output/images. Similarly, a change can be made to the BusyBox source +code in /home/bob/busybox, and after: + +make busybox-rebuild all + +the root filesystem image in output/images contains the updated +BusyBox. + +Source trees for big projects often contain hundreds or thousands of +files which are not needed for building, but will slow down the +process of copying the sources with rsync. Optionally, it is possible +define _OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS to skip syncing certain +files from the source tree. For example, when working on the +webkitgtk package, the following will exclude the tests and in-tree +builds from a local WebKit source tree: + +WEBKITGTK_OVERRIDE_SRCDIR = /home/bob/WebKit +WEBKITGTK_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS = \ + --exclude JSTests --exclude ManualTests --exclude PerformanceTests \ + --exclude WebDriverTests --exclude WebKitBuild --exclude WebKitLibraries \ + --exclude WebKit.xcworkspace --exclude Websites --exclude Examples + +By default, Buildroot skips syncing of VCS artifacts (e.g., the .git +and .svn directories). Some packages prefer to have these VCS +directories available during build, for example for automatically +determining a precise commit reference for version information. To +undo this built-in filtering at a cost of a slower speed, add these +directories back: + +LINUX_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS = --include .git + +Chapter 9. Project-specific customization + +Typical actions you may need to perform for a given project are: + + * configuring Buildroot (including build options and toolchain, + bootloader, kernel, package and filesystem image type selection) + * configuring other components, like the Linux kernel and BusyBox + * customizing the generated target filesystem + + + adding or overwriting files on the target filesystem (using + BR2_ROOTFS_OVERLAY) + + modifying or deleting files on the target filesystem (using + BR2_ROOTFS_POST_BUILD_SCRIPT) + + running arbitrary commands prior to generating the filesystem + image (using BR2_ROOTFS_POST_BUILD_SCRIPT) + + setting file permissions and ownership (using + BR2_ROOTFS_DEVICE_TABLE) + + adding custom devices nodes (using + BR2_ROOTFS_STATIC_DEVICE_TABLE) + * adding custom user accounts (using BR2_ROOTFS_USERS_TABLES) + * running arbitrary commands after generating the filesystem image + (using BR2_ROOTFS_POST_IMAGE_SCRIPT) + * adding project-specific patches to some packages (using + BR2_GLOBAL_PATCH_DIR) + * adding project-specific packages + +An important note regarding such project-specific customizations: +please carefully consider which changes are indeed project-specific +and which changes are also useful to developers outside your project. +The Buildroot community highly recommends and encourages the +upstreaming of improvements, packages and board support to the +official Buildroot project. Of course, it is sometimes not possible +or desirable to upstream because the changes are highly specific or +proprietary. + +This chapter describes how to make such project-specific +customizations in Buildroot and how to store them in a way that you +can build the same image in a reproducible way, even after running +make clean. By following the recommended strategy, you can even use +the same Buildroot tree to build multiple distinct projects! + +9.1. Recommended directory structure + +When customizing Buildroot for your project, you will be creating one +or more project-specific files that need to be stored somewhere. +While most of these files could be placed in any location as their +path is to be specified in the Buildroot configuration, the Buildroot +developers recommend a specific directory structure which is +described in this section. + +Orthogonal to this directory structure, you can choose where you +place this structure itself: either inside the Buildroot tree, or +outside of it using a br2-external tree. Both options are valid, the +choice is up to you. + ++-- board/ +| +-- / +| +-- / +| +-- linux.config +| +-- busybox.config +| +-- +| +-- post_build.sh +| +-- post_image.sh +| +-- rootfs_overlay/ +| | +-- etc/ +| | +-- +| +-- patches/ +| +-- foo/ +| | +-- +| +-- libbar/ +| +-- +| ++-- configs/ +| +-- _defconfig +| ++-- package/ +| +-- / +| +-- Config.in (if not using a br2-external tree) +| +-- .mk (if not using a br2-external tree) +| +-- package1/ +| | +-- Config.in +| | +-- package1.mk +| +-- package2/ +| +-- Config.in +| +-- package2.mk +| ++-- Config.in (if using a br2-external tree) ++-- external.mk (if using a br2-external tree) ++-- external.desc (if using a br2-external tree) + +Details on the files shown above are given further in this chapter. + +Note: if you choose to place this structure outside of the Buildroot +tree but in a br2-external tree, the and possibly + components may be superfluous and can be left out. + +9.1.1. Implementing layered customizations + +It is quite common for a user to have several related projects that +partly need the same customizations. Instead of duplicating these +customizations for each project, it is recommended to use a layered +customization approach, as explained in this section. + +Almost all of the customization methods available in Buildroot, like +post-build scripts and root filesystem overlays, accept a +space-separated list of items. The specified items are always treated +in order, from left to right. By creating more than one such item, +one for the common customizations and another one for the really +project-specific customizations, you can avoid unnecessary +duplication. Each layer is typically embodied by a separate directory +inside board//. Depending on your projects, you could even +introduce more than two layers. + +An example directory structure for where a user has two customization +layers common and fooboard is: + ++-- board/ + +-- / + +-- common/ + | +-- post_build.sh + | +-- rootfs_overlay/ + | | +-- ... + | +-- patches/ + | +-- ... + | + +-- fooboard/ + +-- linux.config + +-- busybox.config + +-- + +-- post_build.sh + +-- rootfs_overlay/ + | +-- ... + +-- patches/ + +-- ... + +For example, if the user has the BR2_GLOBAL_PATCH_DIR configuration +option set as: + +BR2_GLOBAL_PATCH_DIR="board//common/patches board//fooboard/patches" + +then first the patches from the common layer would be applied, +followed by the patches from the fooboard layer. + +9.2. Keeping customizations outside of Buildroot + +As already briefly mentioned in Section 9.1, “Recommended directory +structure”, you can place project-specific customizations in two +locations: + + * directly within the Buildroot tree, typically maintaining them + using branches in a version control system so that upgrading to a + newer Buildroot release is easy. + * outside of the Buildroot tree, using the br2-external mechanism. + This mechanism allows to keep package recipes, board support and + configuration files outside of the Buildroot tree, while still + having them nicely integrated in the build logic. We call this + location a br2-external tree. This section explains how to use + the br2-external mechanism and what to provide in a br2-external + tree. + +One can tell Buildroot to use one or more br2-external trees by +setting the BR2_EXTERNAL make variable set to the path(s) of the +br2-external tree(s) to use. It can be passed to any Buildroot make +invocation. It is automatically saved in the hidden .br2-external.mk +file in the output directory. Thanks to this, there is no need to +pass BR2_EXTERNAL at every make invocation. It can however be changed +at any time by passing a new value, and can be removed by passing an +empty value. + +Note. The path to a br2-external tree can be either absolute or +relative. If it is passed as a relative path, it is important to note +that it is interpreted relative to the main Buildroot source +directory, not to the Buildroot output directory. + +Note: If using an br2-external tree from before Buildroot 2016.11, +you need to convert it before you can use it with Buildroot 2016.11 +onward. See Section 27.2, “Migrating to 2016.11” for help on doing +so. + +Some examples: + +buildroot/ $ make BR2_EXTERNAL=/path/to/foo menuconfig + +From now on, definitions from the /path/to/foo br2-external tree will +be used: + +buildroot/ $ make +buildroot/ $ make legal-info + +We can switch to another br2-external tree at any time: + +buildroot/ $ make BR2_EXTERNAL=/where/we/have/bar xconfig + +We can also use multiple br2-external trees: + +buildroot/ $ make BR2_EXTERNAL=/path/to/foo:/where/we/have/bar menuconfig + +Or disable the usage of any br2-external tree: + +buildroot/ $ make BR2_EXTERNAL= xconfig + +9.2.1. Layout of a br2-external tree + +A br2-external tree must contain at least those three files, +described in the following chapters: + + * external.desc + * external.mk + * Config.in + +Apart from those mandatory files, there may be additional and +optional content that may be present in a br2-external tree, like the +configs/ or provides/ directories. They are described in the +following chapters as well. + +A complete example br2-external tree layout is also described later. + +9.2.1.1. The external.desc file + +That file describes the br2-external tree: the name and description +for that br2-external tree. + +The format for this file is line based, with each line starting by a +keyword, followed by a colon and one or more spaces, followed by the +value assigned to that keyword. There are two keywords currently +recognised: + + * name, mandatory, defines the name for that br2-external tree. + That name must only use ASCII characters in the set [A-Za-z0-9_]; + any other character is forbidden. Buildroot sets the variable + BR2_EXTERNAL_$(NAME)_PATH to the absolute path of the + br2-external tree, so that you can use it to refer to your + br2-external tree. This variable is available both in Kconfig, so + you can use it to source your Kconfig files (see below) and in + the Makefile, so that you can use it to include other Makefiles + (see below) or refer to other files (like data files) from your + br2-external tree. + + Note: Since it is possible to use multiple br2-external trees at + once, this name is used by Buildroot to generate variables for + each of those trees. That name is used to identify your + br2-external tree, so try to come up with a name that really + describes your br2-external tree, in order for it to be + relatively unique, so that it does not clash with another name + from another br2-external tree, especially if you are planning on + somehow sharing your br2-external tree with third parties or + using br2-external trees from third parties. + + * desc, optional, provides a short description for that + br2-external tree. It shall fit on a single line, is mostly + free-form (see below), and is used when displaying information + about a br2-external tree (e.g. above the list of defconfig + files, or as the prompt in the menuconfig); as such, it should + relatively brief (40 chars is probably a good upper limit). The + description is available in the BR2_EXTERNAL_$(NAME)_DESC + variable. + +Examples of names and the corresponding BR2_EXTERNAL_$(NAME)_PATH +variables: + + * FOO → BR2_EXTERNAL_FOO_PATH + * BAR_42 → BR2_EXTERNAL_BAR_42_PATH + +In the following examples, it is assumed the name to be set to +BAR_42. + +Note: Both BR2_EXTERNAL_$(NAME)_PATH and BR2_EXTERNAL_$(NAME)_DESC +are available in the Kconfig files and the Makefiles. They are also +exported in the environment so are available in post-build, +post-image and in-fakeroot scripts. + +9.2.1.2. The Config.in and external.mk files + +Those files (which may each be empty) can be used to define package +recipes (i.e. foo/Config.in and foo/foo.mk like for packages bundled +in Buildroot itself) or other custom configuration options or make +logic. + +Buildroot automatically includes the Config.in from each br2-external +tree to make it appear in the top-level configuration menu, and +includes the external.mk from each br2-external tree with the rest of +the makefile logic. + +The main usage of this is to store package recipes. The recommended +way to do this is to write a Config.in file that looks like: + +source "$BR2_EXTERNAL_BAR_42_PATH/package/package1/Config.in" +source "$BR2_EXTERNAL_BAR_42_PATH/package/package2/Config.in" + +Then, have an external.mk file that looks like: + +include $(sort $(wildcard $(BR2_EXTERNAL_BAR_42_PATH)/package/*/*.mk)) + +And then in $(BR2_EXTERNAL_BAR_42_PATH)/package/package1 and $ +(BR2_EXTERNAL_BAR_42_PATH)/package/package2 create normal Buildroot +package recipes, as explained in Chapter 18, Adding new packages to +Buildroot. If you prefer, you can also group the packages in +subdirectories called and adapt the above paths +accordingly. + +You can also define custom configuration options in Config.in and +custom make logic in external.mk. + +9.2.1.3. The configs/ directory + +One can store Buildroot defconfigs in the configs subdirectory of the +br2-external tree. Buildroot will automatically show them in the +output of make list-defconfigs and allow them to be loaded with the +normal make _defconfig command. They will be visible in the +make list-defconfigs output, below an External configs label that +contains the name of the br2-external tree they are defined in. + +Note: If a defconfig file is present in more than one br2-external +tree, then the one from the last br2-external tree is used. It is +thus possible to override a defconfig bundled in Buildroot or another +br2-external tree. + +9.2.1.4. The provides/ directory + +For some packages, Buildroot provides a choice between two (or more) +implementations of API-compatible such packages. For example, there +is a choice to choose either libjpeg ot jpeg-turbo; there is one +between openssl or libressl; there is one to select one of the known, +pre-configured toolchains… + +It is possible for a br2-external to extend those choices, by +providing a set of files that define those alternatives: + + * provides/toolchains.in defines the pre-configured toolchains, + which will then be listed in the toolchain selection; + * provides/jpeg.in defines the alternative libjpeg implementations; + * provides/openssl.in defines the alternative openssl + implementations; + * provides/skeleton.in defines the alternative skeleton + implementations; + * provides/init.in defines the alternative init system + implementations, this can be used to select a default skeleton + for your init. + +9.2.1.5. Free-form content + +One can store all the board-specific configuration files there, such +as the kernel configuration, the root filesystem overlay, or any +other configuration file for which Buildroot allows to set the +location (by using the BR2_EXTERNAL_$(NAME)_PATH variable). For +example, you could set the paths to a global patch directory, to a +rootfs overlay and to the kernel configuration file as follows (e.g. +by running make menuconfig and filling in these options): + +BR2_GLOBAL_PATCH_DIR=$(BR2_EXTERNAL_BAR_42_PATH)/patches/ +BR2_ROOTFS_OVERLAY=$(BR2_EXTERNAL_BAR_42_PATH)/board//overlay/ +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=$(BR2_EXTERNAL_BAR_42_PATH)/board//kernel.config + +9.2.1.6. Additional Linux kernel extensions + +Additional Linux kernel extensions (see Section 18.22.2, +“linux-kernel-extensions”) can be added by storing them in the linux/ +directory at the root of a br2-external tree. + +9.2.1.7. Example layout + +Here is an example layout using all features of br2-external (the +sample content is shown for the file above it, when it is relevant to +explain the br2-external tree; this is all entirely made up just for +the sake of illustration, of course): + +/path/to/br2-ext-tree/ + |- external.desc + | |name: BAR_42 + | |desc: Example br2-external tree + | `---- + | + |- Config.in + | |source "$BR2_EXTERNAL_BAR_42_PATH/toolchain/toolchain-external-mine/Config.in.options" + | |source "$BR2_EXTERNAL_BAR_42_PATH/package/pkg-1/Config.in" + | |source "$BR2_EXTERNAL_BAR_42_PATH/package/pkg-2/Config.in" + | |source "$BR2_EXTERNAL_BAR_42_PATH/package/my-jpeg/Config.in" + | | + | |config BAR_42_FLASH_ADDR + | | hex "my-board flash address" + | | default 0x10AD + | `---- + | + |- external.mk + | |include $(sort $(wildcard $(BR2_EXTERNAL_BAR_42_PATH)/package/*/*.mk)) + | |include $(sort $(wildcard $(BR2_EXTERNAL_BAR_42_PATH)/toolchain/*/*.mk)) + | | + | |flash-my-board: + | | $(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/flash-image \ + | | --image $(BINARIES_DIR)/image.bin \ + | | --address $(BAR_42_FLASH_ADDR) + | `---- + | + |- package/pkg-1/Config.in + | |config BR2_PACKAGE_PKG_1 + | | bool "pkg-1" + | | help + | | Some help about pkg-1 + | `---- + |- package/pkg-1/pkg-1.hash + |- package/pkg-1/pkg-1.mk + | |PKG_1_VERSION = 1.2.3 + | |PKG_1_SITE = /some/where/to/get/pkg-1 + | |PKG_1_LICENSE = blabla + | | + | |define PKG_1_INSTALL_INIT_SYSV + | | $(INSTALL) -D -m 0755 $(PKG_1_PKGDIR)/S99my-daemon \ + | | $(TARGET_DIR)/etc/init.d/S99my-daemon + | |endef + | | + | |$(eval $(autotools-package)) + | `---- + |- package/pkg-1/S99my-daemon + | + |- package/pkg-2/Config.in + |- package/pkg-2/pkg-2.hash + |- package/pkg-2/pkg-2.mk + | + |- provides/jpeg.in + | |config BR2_PACKAGE_MY_JPEG + | | bool "my-jpeg" + | `---- + |- package/my-jpeg/Config.in + | |config BR2_PACKAGE_PROVIDES_JPEG + | | default "my-jpeg" if BR2_PACKAGE_MY_JPEG + | `---- + |- package/my-jpeg/my-jpeg.mk + | |# This is a normal package .mk file + | |MY_JPEG_VERSION = 1.2.3 + | |MY_JPEG_SITE = https://example.net/some/place + | |MY_JPEG_PROVIDES = jpeg + | |$(eval $(autotools-package)) + | `---- + | + |- provides/init.in + | |config BR2_INIT_MINE + | | bool "my custom init" + | | select BR2_PACKAGE_MY_INIT + | | select BR2_PACKAGE_SKELETON_INIT_MINE if BR2_ROOTFS_SKELETON_DEFAULT + | `---- + | + |- provides/skeleton.in + | |config BR2_ROOTFS_SKELETON_MINE + | | bool "my custom skeleton" + | | select BR2_PACKAGE_SKELETON_MINE + | `---- + |- package/skeleton-mine/Config.in + | |config BR2_PACKAGE_SKELETON_MINE + | | bool + | | select BR2_PACKAGE_HAS_SKELETON + | | + | |config BR2_PACKAGE_PROVIDES_SKELETON + | | default "skeleton-mine" if BR2_PACKAGE_SKELETON_MINE + | `---- + |- package/skeleton-mine/skeleton-mine.mk + | |SKELETON_MINE_ADD_TOOLCHAIN_DEPENDENCY = NO + | |SKELETON_MINE_ADD_SKELETON_DEPENDENCY = NO + | |SKELETON_MINE_PROVIDES = skeleton + | |SKELETON_MINE_INSTALL_STAGING = YES + | |$(eval $(generic-package)) + | `---- + | + |- provides/toolchains.in + | |config BR2_TOOLCHAIN_EXTERNAL_MINE + | | bool "my custom toolchain" + | | depends on BR2_some_arch + | | select BR2_INSTALL_LIBSTDCPP + | `---- + |- toolchain/toolchain-external-mine/Config.in.options + | |if BR2_TOOLCHAIN_EXTERNAL_MINE + | |config BR2_TOOLCHAIN_EXTERNAL_PREFIX + | | default "arch-mine-linux-gnu" + | |config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + | | default "toolchain-external-mine" + | |endif + | `---- + |- toolchain/toolchain-external-mine/toolchain-external-mine.mk + | |TOOLCHAIN_EXTERNAL_MINE_SITE = https://example.net/some/place + | |TOOLCHAIN_EXTERNAL_MINE_SOURCE = my-toolchain.tar.gz + | |$(eval $(toolchain-external-package)) + | `---- + | + |- linux/Config.ext.in + | |config BR2_LINUX_KERNEL_EXT_EXAMPLE_DRIVER + | | bool "example-external-driver" + | | help + | | Example external driver + | |--- + |- linux/linux-ext-example-driver.mk + | + |- configs/my-board_defconfig + | |BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_BAR_42_PATH)/patches/" + | |BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/overlay/" + | |BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/post-image.sh" + | |BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/kernel.config" + | `---- + | + |- patches/linux/0001-some-change.patch + |- patches/linux/0002-some-other-change.patch + |- patches/busybox/0001-fix-something.patch + | + |- board/my-board/kernel.config + |- board/my-board/overlay/var/www/index.html + |- board/my-board/overlay/var/www/my.css + |- board/my-board/flash-image + `- board/my-board/post-image.sh + |#!/bin/sh + |generate-my-binary-image \ + | --root ${BINARIES_DIR}/rootfs.tar \ + | --kernel ${BINARIES_DIR}/zImage \ + | --dtb ${BINARIES_DIR}/my-board.dtb \ + | --output ${BINARIES_DIR}/image.bin + `---- + +The br2-external tree will then be visible in the menuconfig (with +the layout expanded): + +External options ---> + *** Example br2-external tree (in /path/to/br2-ext-tree/) + [ ] pkg-1 + [ ] pkg-2 + (0x10AD) my-board flash address + +If you are using more than one br2-external tree, it would look like +(with the layout expanded and the second one with name FOO_27 but no +desc: field in external.desc): + +External options ---> + Example br2-external tree ---> + *** Example br2-external tree (in /path/to/br2-ext-tree) + [ ] pkg-1 + [ ] pkg-2 + (0x10AD) my-board flash address + FOO_27 ---> + *** FOO_27 (in /path/to/another-br2-ext) + [ ] foo + [ ] bar + +Additionally, the jpeg provider will be visible in the jpeg choice: + +Target packages ---> + Libraries ---> + Graphics ---> + [*] jpeg support + jpeg variant () ---> + ( ) jpeg + ( ) jpeg-turbo + *** jpeg from: Example br2-external tree *** + (X) my-jpeg + *** jpeg from: FOO_27 *** + ( ) another-jpeg + +And similarly for the toolchains: + +Toolchain ---> + Toolchain () ---> + ( ) Custom toolchain + *** Toolchains from: Example br2-external tree *** + (X) my custom toolchain + +Note. The toolchain options in toolchain/toolchain-external-mine/ +Config.in.options will not appear in the Toolchain menu. They must be +explicitly included from within the br2-external’s top-level +Config.in and will thus appear in the External options menu. + +9.3. Storing the Buildroot configuration + +The Buildroot configuration can be stored using the command make +savedefconfig. + +This strips the Buildroot configuration down by removing +configuration options that are at their default value. The result is +stored in a file called defconfig. If you want to save it in another +place, change the BR2_DEFCONFIG option in the Buildroot configuration +itself, or call make with make savedefconfig BR2_DEFCONFIG= +. + +The recommended place to store this defconfig is configs/ +_defconfig. If you follow this recommendation, the configuration will +be listed in make list-defconfigs and can be set again by running +make _defconfig. + +Alternatively, you can copy the file to any other place and rebuild +with make defconfig BR2_DEFCONFIG=. + +9.4. Storing the configuration of other components + +The configuration files for BusyBox, the Linux kernel, Barebox, +U-Boot and uClibc should be stored as well if changed. For each of +these components, a Buildroot configuration option exists to point to +an input configuration file, e.g. +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE. To store their configuration, +set these configuration options to a path where you want to save the +configuration files, and then use the helper targets described below +to actually store the configuration. + +As explained in Section 9.1, “Recommended directory structure”, the +recommended path to store these configuration files is board/ +//foo.config. + +Make sure that you create a configuration file before changing the +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE etc. options. Otherwise, +Buildroot will try to access this config file, which doesn’t exist +yet, and will fail. You can create the configuration file by running +make linux-menuconfig etc. + +Buildroot provides a few helper targets to make the saving of +configuration files easier. + + * make linux-update-defconfig saves the linux configuration to the + path specified by BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE. It + simplifies the config file by removing default values. However, + this only works with kernels starting from 2.6.33. For earlier + kernels, use make linux-update-config. + * make busybox-update-config saves the busybox configuration to the + path specified by BR2_PACKAGE_BUSYBOX_CONFIG. + * make uclibc-update-config saves the uClibc configuration to the + path specified by BR2_UCLIBC_CONFIG. + * make barebox-update-defconfig saves the barebox configuration to + the path specified by BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE. + * make uboot-update-defconfig saves the U-Boot configuration to the + path specified by BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE. + * For at91bootstrap3, no helper exists so you have to copy the + config file manually to + BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE. + +9.5. Customizing the generated target filesystem + +Besides changing the configuration through make *config, there are a +few other ways to customize the resulting target filesystem. + +The two recommended methods, which can co-exist, are root filesystem +overlay(s) and post build script(s). + +Root filesystem overlays (BR2_ROOTFS_OVERLAY) + + A filesystem overlay is a tree of files that is copied directly + over the target filesystem after it has been built. To enable + this feature, set config option BR2_ROOTFS_OVERLAY (in the System + configuration menu) to the root of the overlay. You can even + specify multiple overlays, space-separated. If you specify a + relative path, it will be relative to the root of the Buildroot + tree. Hidden directories of version control systems, like .git, + .svn, .hg, etc., files called .empty and files ending in ~ are + excluded from the copy. + + When BR2_ROOTFS_MERGED_USR is enabled, then the overlay must not + contain the /bin, /lib or /sbin directories, as Buildroot will + create them as symbolic links to the relevant folders in /usr. In + such a situation, should the overlay have any programs or + libraries, they should be placed in /usr/bin, /usr/sbin and /usr/ + lib. + + As shown in Section 9.1, “Recommended directory structure”, the + recommended path for this overlay is board/// + rootfs-overlay. + +Post-build scripts (BR2_ROOTFS_POST_BUILD_SCRIPT) + + Post-build scripts are shell scripts called after Buildroot + builds all the selected software, but before the rootfs images + are assembled. To enable this feature, specify a space-separated + list of post-build scripts in config option + BR2_ROOTFS_POST_BUILD_SCRIPT (in the System configuration menu). + If you specify a relative path, it will be relative to the root + of the Buildroot tree. + + Using post-build scripts, you can remove or modify any file in + your target filesystem. You should, however, use this feature + with care. Whenever you find that a certain package generates + wrong or unneeded files, you should fix that package rather than + work around it with some post-build cleanup scripts. + + As shown in Section 9.1, “Recommended directory structure”, the + recommended path for this script is board/// + post_build.sh. + + The post-build scripts are run with the main Buildroot tree as + current working directory. The path to the target filesystem is + passed as the first argument to each script. If the config option + BR2_ROOTFS_POST_SCRIPT_ARGS is not empty, these arguments will be + passed to the script too. All the scripts will be passed the + exact same set of arguments, it is not possible to pass different + sets of arguments to each script. + + Note that the arguments from +BR2_ROOTFS_POST_SCRIPT_ARGS+ will also be + passed to post-image and post-fakeroot scripts. If you want to use + arguments that are only used for the post-build scripts you can use + +BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS+. + ++ In addition, you may also use these environment variables: + + * BR2_CONFIG: the path to the Buildroot .config file + * CONFIG_DIR: the directory containing the .config file, and + therefore the top-level Buildroot Makefile to use (which is + correct for both in-tree and out-of-tree builds) + * HOST_DIR, STAGING_DIR, TARGET_DIR: see Section 18.6.2, + “generic-package reference” + * BUILD_DIR: the directory where packages are extracted and built + * BINARIES_DIR: the place where all binary files (aka images) are + stored + * BASE_DIR: the base output directory + * PARALLEL_JOBS: the number of jobs to use when running parallel + processes. + +Below three more methods of customizing the target filesystem are +described, but they are not recommended. + +Direct modification of the target filesystem + + For temporary modifications, you can modify the target filesystem + directly and rebuild the image. The target filesystem is + available under output/target/. After making your changes, run + make to rebuild the target filesystem image. + + This method allows you to do anything to the target filesystem, + but if you need to clean your Buildroot tree using make clean, + these changes will be lost. Such cleaning is necessary in several + cases, refer to Section 8.2, “Understanding when a full rebuild + is necessary” for details. This solution is therefore only useful + for quick tests: changes do not survive the make clean command. + Once you have validated your changes, you should make sure that + they will persist after a make clean, using a root filesystem + overlay or a post-build script. + +Custom target skeleton (BR2_ROOTFS_SKELETON_CUSTOM) + + The root filesystem image is created from a target skeleton, on + top of which all packages install their files. The skeleton is + copied to the target directory output/target before any package + is built and installed. The default target skeleton provides the + standard Unix filesystem layout and some basic init scripts and + configuration files. + + If the default skeleton (available under system/skeleton) does + not match your needs, you would typically use a root filesystem + overlay or post-build script to adapt it. However, if the default + skeleton is entirely different than what you need, using a custom + skeleton may be more suitable. + + To enable this feature, enable config option + BR2_ROOTFS_SKELETON_CUSTOM and set + BR2_ROOTFS_SKELETON_CUSTOM_PATH to the path of your custom + skeleton. Both options are available in the System configuration + menu. If you specify a relative path, it will be relative to the + root of the Buildroot tree. + + Custom skeletons don’t need to contain the /bin, /lib or /sbin + directories, since they are created automatically during the + build. When BR2_ROOTFS_MERGED_USR is enabled, then the custom + skeleton must not contain the /bin, /lib or /sbin directories, as + Buildroot will create them as symbolic links to the relevant + folders in /usr. In such a situation, should the skeleton have + any programs or libraries, they should be placed in /usr/bin, / + usr/sbin and /usr/lib. + + This method is not recommended because it duplicates the entire + skeleton, which prevents taking advantage of the fixes or + improvements brought to the default skeleton in later Buildroot + releases. + +Post-fakeroot scripts (BR2_ROOTFS_POST_FAKEROOT_SCRIPT) + + When aggregating the final images, some parts of the process + requires root rights: creating device nodes in /dev, setting + permissions or ownership to files and directories… To avoid + requiring actual root rights, Buildroot uses fakeroot to simulate + root rights. This is not a complete substitute for actually being + root, but is enough for what Buildroot needs. + + Post-fakeroot scripts are shell scripts that are called at the + end of the fakeroot phase, right before the filesystem image + generator is called. As such, they are called in the fakeroot + context. + + Post-fakeroot scripts can be useful in case you need to tweak the + filesystem to do modifications that are usually only available to + the root user. + + Note: It is recommended to use the existing mechanisms to set + file permissions or create entries in /dev (see Section 9.5.1, + “Setting file permissions and ownership and adding custom devices + nodes”) or to create users (see Section 9.6, “Adding custom user + accounts”) + + Note: The difference between post-build scripts (above) and + fakeroot scripts, is that post-build scripts are not called in + the fakeroot context. + + Note: Using fakeroot is not an absolute substitute for actually + being root. fakeroot only ever fakes the file access rights and + types (regular, block-or-char device…) and uid/gid; these are + emulated in-memory. + +9.5.1. Setting file permissions and ownership and adding custom +devices nodes + +Sometimes it is needed to set specific permissions or ownership on +files or device nodes. For example, certain files may need to be +owned by root. Since the post-build scripts are not run as root, you +cannot do such changes from there unless you use an explicit fakeroot +from the post-build script. + +Instead, Buildroot provides support for so-called permission tables. +To use this feature, set config option BR2_ROOTFS_DEVICE_TABLE to a +space-separated list of permission tables, regular text files +following the makedev syntax. + +If you are using a static device table (i.e. not using devtmpfs, +mdev, or (e)udev) then you can add device nodes using the same +syntax, in so-called device tables. To use this feature, set config +option BR2_ROOTFS_STATIC_DEVICE_TABLE to a space-separated list of +device tables. + +As shown in Section 9.1, “Recommended directory structure”, the +recommended location for such files is board///. + +It should be noted that if the specific permissions or device nodes +are related to a specific application, you should set variables +FOO_PERMISSIONS and FOO_DEVICES in the package’s .mk file instead +(see Section 18.6.2, “generic-package reference”). + +9.6. Adding custom user accounts + +Sometimes it is needed to add specific users in the target system. To +cover this requirement, Buildroot provides support for so-called +users tables. To use this feature, set config option +BR2_ROOTFS_USERS_TABLES to a space-separated list of users tables, +regular text files following the makeusers syntax. + +As shown in Section 9.1, “Recommended directory structure”, the +recommended location for such files is board///. + +It should be noted that if the custom users are related to a specific +application, you should set variable FOO_USERS in the package’s .mk +file instead (see Section 18.6.2, “generic-package reference”). + +9.7. Customization after the images have been created + +While post-build scripts (Section 9.5, “Customizing the generated +target filesystem”) are run before building the filesystem image, +kernel and bootloader, post-image scripts can be used to perform some +specific actions after all images have been created. + +Post-image scripts can for example be used to automatically extract +your root filesystem tarball in a location exported by your NFS +server, or to create a special firmware image that bundles your root +filesystem and kernel image, or any other custom action required for +your project. + +To enable this feature, specify a space-separated list of post-image +scripts in config option BR2_ROOTFS_POST_IMAGE_SCRIPT (in the System +configuration menu). If you specify a relative path, it will be +relative to the root of the Buildroot tree. + +Just like post-build scripts, post-image scripts are run with the +main Buildroot tree as current working directory. The path to the +images output directory is passed as the first argument to each +script. If the config option BR2_ROOTFS_POST_SCRIPT_ARGS is not +empty, these arguments will be passed to the script too. All the +scripts will be passed the exact same set of arguments, it is not +possible to pass different sets of arguments to each script. + +Note that the arguments from BR2_ROOTFS_POST_SCRIPT_ARGS will also be +passed to post-build and post-fakeroot scripts. If you want to use +arguments that are only used for the post-image scripts you can use +BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS. + +Again just like for the post-build scripts, the scripts have access +to the environment variables BR2_CONFIG, HOST_DIR, STAGING_DIR, +TARGET_DIR, BUILD_DIR, BINARIES_DIR, CONFIG_DIR, BASE_DIR, and +PARALLEL_JOBS. + +The post-image scripts will be executed as the user that executes +Buildroot, which should normally not be the root user. Therefore, any +action requiring root permissions in one of these scripts will +require special handling (usage of fakeroot or sudo), which is left +to the script developer. + +9.8. Adding project-specific patches and hashes + +9.8.1. Providing extra patches + +It is sometimes useful to apply extra patches to packages - on top of +those provided in Buildroot. This might be used to support custom +features in a project, for example, or when working on a new +architecture. + +The BR2_GLOBAL_PATCH_DIR configuration option can be used to specify +a space separated list of one or more directories containing package +patches. + +For a specific version of a specific package +, patches are applied from BR2_GLOBAL_PATCH_DIR as +follows: + + 1. For every directory - - that exists in + BR2_GLOBAL_PATCH_DIR, a will be determined as + follows: + + + /// if the + directory exists. + + Otherwise, / if the directory + exists. + 2. Patches will then be applied from a as + follows: + + + If a series file exists in the package directory, then + patches are applied according to the series file; + + Otherwise, patch files matching *.patch are applied in + alphabetical order. So, to ensure they are applied in the + right order, it is highly recommended to name the patch files + like this: -.patch, where + refers to the apply order. + +For information about how patches are applied for a package, see +Section 19.2, “How patches are applied” + +The BR2_GLOBAL_PATCH_DIR option is the preferred method for +specifying a custom patch directory for packages. It can be used to +specify a patch directory for any package in buildroot. It should +also be used in place of the custom patch directory options that are +available for packages such as U-Boot and Barebox. By doing this, it +will allow a user to manage their patches from one top-level +directory. + +The exception to BR2_GLOBAL_PATCH_DIR being the preferred method for +specifying custom patches is BR2_LINUX_KERNEL_PATCH. +BR2_LINUX_KERNEL_PATCH should be used to specify kernel patches that +are available at a URL. Note: BR2_LINUX_KERNEL_PATCH specifies kernel +patches that are applied after patches available in +BR2_GLOBAL_PATCH_DIR, as it is done from a post-patch hook of the +Linux package. + +9.8.2. Providing extra hashes + +Buildroot bundles a list of hashes against which it checks the +integrity of the downloaded archives, or of those it generates +locally from VCS checkouts. However, it can only do so for the known +versions; for packages where it is possible to specify a custom +version (e.g. a custom version string, a remote tarball URL, or a VCS +repository location and changeset), Buildroot can’t carry hashes for +those. + +For users concerned with the integrity of such downloads, it is +possible to provide a list of hashes that Buildroot can use to check +arbitrary downloaded files. Those extra hashes are looked up +similarly to the extra patches (above); for each directory in +BR2_GLOBAL_PATCH_DIR, the first file to exist is used to check a +package download: + + * /// + .hash + * //.hash + +The utils/add-custom-hashes script can be used to generate these +files. + +9.9. Adding project-specific packages + +In general, any new package should be added directly in the package +directory and submitted to the Buildroot upstream project. How to add +packages to Buildroot in general is explained in full detail in +Chapter 18, Adding new packages to Buildroot and will not be repeated +here. However, your project may need some proprietary packages that +cannot be upstreamed. This section will explain how you can keep such +project-specific packages in a project-specific directory. + +As shown in Section 9.1, “Recommended directory structure”, the +recommended location for project-specific packages is package/ +/. If you are using the br2-external tree feature (see +Section 9.2, “Keeping customizations outside of Buildroot”) the +recommended location is to put them in a sub-directory named package/ +in your br2-external tree. + +However, Buildroot will not be aware of the packages in this +location, unless we perform some additional steps. As explained in +Chapter 18, Adding new packages to Buildroot, a package in Buildroot +basically consists of two files: a .mk file (describing how to build +the package) and a Config.in file (describing the configuration +options for this package). + +Buildroot will automatically include the .mk files in first-level +subdirectories of the package directory (using the pattern package/*/ +*.mk). If we want Buildroot to include .mk files from deeper +subdirectories (like package//package1/) then we simply have +to add a .mk file in a first-level subdirectory that includes these +additional .mk files. Therefore, create a file package// +.mk with following contents (assuming you have only one +extra directory level below package//): + +include $(sort $(wildcard package//*/*.mk)) + +For the Config.in files, create a file package//Config.in +that includes the Config.in files of all your packages. An exhaustive +list has to be provided since wildcards are not supported in the +source command of kconfig. For example: + +source "package//package1/Config.in" +source "package//package2/Config.in" + +Include this new file package//Config.in from package/ +Config.in, preferably in a company-specific menu to make merges with +future Buildroot versions easier. + +If using a br2-external tree, refer to Section 9.2, “Keeping +customizations outside of Buildroot” for how to fill in those files. + +9.10. Quick guide to storing your project-specific customizations + +Earlier in this chapter, the different methods for making +project-specific customizations have been described. This section +will now summarize all this by providing step-by-step instructions to +storing your project-specific customizations. Clearly, the steps that +are not relevant to your project can be skipped. + + 1. make menuconfig to configure toolchain, packages and kernel. + 2. make linux-menuconfig to update the kernel config, similar for + other configuration like busybox, uclibc, … + 3. mkdir -p board// + 4. Set the following options to board/// + .config (as far as they are relevant): + + + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE + + BR2_PACKAGE_BUSYBOX_CONFIG + + BR2_UCLIBC_CONFIG + + BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE + + BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE + + BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE + 5. Write the configuration files: + + + make linux-update-defconfig + + make busybox-update-config + + make uclibc-update-config + + cp /build/at91bootstrap3-*/.config board/ + //at91bootstrap3.config + + make barebox-update-defconfig + + make uboot-update-defconfig + 6. Create board///rootfs-overlay/ and fill + it with additional files you need on your rootfs, e.g. board/ + //rootfs-overlay/etc/inittab. Set + BR2_ROOTFS_OVERLAY to board/// + rootfs-overlay. + 7. Create a post-build script board/// + post_build.sh. Set BR2_ROOTFS_POST_BUILD_SCRIPT to board/ + //post_build.sh + 8. If additional setuid permissions have to be set or device nodes + have to be created, create board/// + device_table.txt and add that path to BR2_ROOTFS_DEVICE_TABLE. + 9. If additional user accounts have to be created, create board/ + //users_table.txt and add that path to + BR2_ROOTFS_USERS_TABLES. +10. To add custom patches to certain packages, set + BR2_GLOBAL_PATCH_DIR to board///patches/ + and add your patches for each package in a subdirectory named + after the package. Each patch should be called - + -.patch. +11. Specifically for the Linux kernel, there also exists the option + BR2_LINUX_KERNEL_PATCH with as main advantage that it can also + download patches from a URL. If you do not need this, + BR2_GLOBAL_PATCH_DIR is preferred. U-Boot, Barebox, at91bootstrap + and at91bootstrap3 also have separate options, but these do not + provide any advantage over BR2_GLOBAL_PATCH_DIR and will likely + be removed in the future. +12. If you need to add project-specific packages, create package/ + / and place your packages in that directory. Create + an overall .mk file that includes the .mk files of + all your packages. Create an overall Config.in file that sources + the Config.in files of all your packages. Include this Config.in + file from Buildroot’s package/Config.in file. +13. make savedefconfig to save the buildroot configuration. +14. cp defconfig configs/_defconfig + +Chapter 10. Integration topics + +This chapter discusses how various things are integrated at system +level. Buildroot is highly configurable, almost everything discussed +here can be changed or overridden by rootfs overlay or custom +skeleton configuration. + +10.1. Configurable packages + +Some foundational packages like Busybox and uClibc can be configured +with or without certain features. When writing Buildroot code that +uses such packages, contributors may assume that the options enabled +in the Buildroot-provided configurations are enabled. For example, +package/busybox/busybox.config sets +CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y, so init scripts +meant for use with Busybox init may use start-stop-daemon with long +form options. + +People who use custom configurations that disable such default +options are responsible for making sure that any relevant scripts/ +packages still work, and if not, adapting them accordingly. To follow +the Busybox example above, disabling long form options will require +replacing init scripts that use them (in an overlay). + +10.2. Systemd + +This chapter describes the decisions taken in Buildroot’s integration +of systemd, and how various use cases can be implemented. + +10.2.1. DBus daemon + +Systemd requires a DBus daemon. There are two options for it: +traditional dbus (BR2_PACKAGE_DBUS) and bus1 dbus-broker +(BR2_PACKAGE_DBUS_BROKER). At least one of them must be chosen. If +both are included in the configuration, dbus-broker will be used as +system bus, but the traditional dbus-daemon is still installed as +well and can be used as session bus. Also its tools (e.g. dbus-send) +can be used (systemd itself has busctl as an alternative). In +addition, the traditional dbus package is the only one that provides +libdbus, which is used by many packages as dbus integration library. + +Both in the dbus and in the dbus-broker case, the daemon runs as user +dbus. The DBus configuration files are also identical for both. + +To make sure that only one of the two daemons is started as system +bus, the systemd activation files of the dbus package (dbus.socket +and the dbus.service symlink in multi-user.target.wants) are removed +when dbus-broker is selected. + +10.3. Using SELinux in Buildroot + +SELinux [https://selinuxproject.org] is a Linux kernel security +module enforcing access control policies. In addition to the +traditional file permissions and access control lists, SELinux allows +to write rules for users or processes to access specific functions of +resources (files, sockets…). + +SELinux has three modes of operation: + + * Disabled: the policy is not applied + * Permissive: the policy is applied, and non-authorized actions are + simply logged. This mode is often used for troubleshooting + SELinux issues. + * Enforcing: the policy is applied, and non-authorized actions are + denied + +In Buildroot the mode of operation is controlled by the +BR2_PACKAGE_REFPOLICY_POLICY_STATE_* configuration options. The Linux +kernel also has various configuration options that affect how SELinux +is enabled (see security/selinux/Kconfig in the Linux kernel +sources). + +By default in Buildroot the SELinux policy is provided by the +upstream refpolicy [https://github.com/SELinuxProject/refpolicy] +project, enabled with BR2_PACKAGE_REFPOLICY. + +10.3.1. Enabling SELinux support + +To have proper support for SELinux in a Buildroot generated system, +the following configuration options must be enabled: + + * BR2_PACKAGE_LIBSELINUX + * BR2_PACKAGE_REFPOLICY + +In addition, your filesystem image format must support extended +attributes. + +10.3.2. SELinux policy tweaking + +The SELinux refpolicy contains modules that can be enabled or +disabled when being built. Each module provide a number of SELinux +rules. In Buildroot the non-base modules are disabled by default and +several ways to enable such modules are provided: + + * Packages can enable a list of SELinux modules within the + refpolicy using the _SELINUX_MODULES variable. + * Packages can provide additional SELinux modules by putting them + (.fc, .if and .te files) in package//selinux/. + * Extra SELinux modules can be added in directories pointed by the + BR2_REFPOLICY_EXTRA_MODULES_DIRS configuration option. + * Additional modules in the refpolicy can be enabled if listed in + the BR2_REFPOLICY_EXTRA_MODULES_DEPENDENCIES configuration + option. + +Buildroot also allows to completely override the refpolicy. This +allows to provide a full custom policy designed specifically for a +given system. When going this way, all of the above mechanisms are +disabled: no extra SElinux module is added to the policy, and all the +available modules within the custom policy are enabled and built into +the final binary policy. The custom policy must be a fork of the +official refpolicy [https://github.com/SELinuxProject/refpolicy]. + +In order to fully override the refpolicy the following configuration +variables have to be set: + + * BR2_PACKAGE_REFPOLICY_CUSTOM_GIT + * BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_URL + * BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_VERSION + +Chapter 11. Frequently Asked Questions & Troubleshooting + +11.1. The boot hangs after Starting network… + +If the boot process seems to hang after the following messages +(messages not necessarily exactly similar, depending on the list of +packages selected): + +Freeing init memory: 3972K +Initializing random number generator... done. +Starting network... +Starting dropbear sshd: generating rsa key... generating dsa key... OK + +then it means that your system is running, but didn’t start a shell +on the serial console. In order to have the system start a shell on +your serial console, you have to go into the Buildroot configuration, +in System configuration, modify Run a getty (login prompt) after boot +and set the appropriate port and baud rate in the getty options +submenu. This will automatically tune the /etc/inittab file of the +generated system so that a shell starts on the correct serial port. + +11.2. Why is there no compiler on the target? + +It has been decided that support for the native compiler on the +target would be stopped from the Buildroot-2012.11 release because: + + * this feature was neither maintained nor tested, and often broken; + * this feature was only available for Buildroot toolchains; + * Buildroot mostly targets small or very small target hardware with + limited resource onboard (CPU, ram, mass-storage), for which + compiling on the target does not make much sense; + * Buildroot aims at easing the cross-compilation, making native + compilation on the target unnecessary. + +If you need a compiler on your target anyway, then Buildroot is not +suitable for your purpose. In such case, you need a real distribution +and you should opt for something like: + + * openembedded [http://www.openembedded.org] + * yocto [https://www.yoctoproject.org] + * Debian [https://www.debian.org/ports/] + * Fedora [https://fedoraproject.org/wiki/Architectures] + * openSUSE ARM [http://en.opensuse.org/Portal:ARM] + * Arch Linux ARM [http://archlinuxarm.org] + * … + +11.3. Why are there no development files on the target? + +Since there is no compiler available on the target (see Section 11.2, +“Why is there no compiler on the target?”), it does not make sense to +waste space with headers or static libraries. + +Therefore, those files are always removed from the target since the +Buildroot-2012.11 release. + +11.4. Why is there no documentation on the target? + +Because Buildroot mostly targets small or very small target hardware +with limited resource onboard (CPU, ram, mass-storage), it does not +make sense to waste space with the documentation data. + +If you need documentation data on your target anyway, then Buildroot +is not suitable for your purpose, and you should look for a real +distribution (see: Section 11.2, “Why is there no compiler on the +target?”). + +11.5. Why are some packages not visible in the Buildroot config menu? + +If a package exists in the Buildroot tree and does not appear in the +config menu, this most likely means that some of the package’s +dependencies are not met. + +To know more about the dependencies of a package, search for the +package symbol in the config menu (see Section 8.1, “make tips”). + +Then, you may have to recursively enable several options (which +correspond to the unmet dependencies) to finally be able to select +the package. + +If the package is not visible due to some unmet toolchain options, +then you should certainly run a full rebuild (see Section 8.1, “make +tips” for more explanations). + +11.6. Why not use the target directory as a chroot directory? + +There are plenty of reasons to not use the target directory a chroot +one, among these: + + * file ownerships, modes and permissions are not correctly set in + the target directory; + * device nodes are not created in the target directory. + +For these reasons, commands run through chroot, using the target +directory as the new root, will most likely fail. + +If you want to run the target filesystem inside a chroot, or as an +NFS root, then use the tarball image generated in images/ and extract +it as root. + +11.7. Why doesn’t Buildroot generate binary packages (.deb, .ipkg…)? + +One feature that is often discussed on the Buildroot list is the +general topic of "package management". To summarize, the idea would +be to add some tracking of which Buildroot package installs what +files, with the goals of: + + * being able to remove files installed by a package when this + package gets unselected from the menuconfig; + * being able to generate binary packages (ipk or other format) that + can be installed on the target without re-generating a new root + filesystem image. + +In general, most people think it is easy to do: just track which +package installed what and remove it when the package is unselected. +However, it is much more complicated than that: + + * It is not only about the target/ directory, but also the sysroot + in host//sysroot and the host/ directory itself. All files + installed in those directories by various packages must be + tracked. + * When a package is unselected from the configuration, it is not + sufficient to remove just the files it installed. One must also + remove all its reverse dependencies (i.e. packages relying on it) + and rebuild all those packages. For example, package A depends + optionally on the OpenSSL library. Both are selected, and + Buildroot is built. Package A is built with crypto support using + OpenSSL. Later on, OpenSSL gets unselected from the + configuration, but package A remains (since OpenSSL is an + optional dependency, this is possible.) If only OpenSSL files are + removed, then the files installed by package A are broken: they + use a library that is no longer present on the target. Although + this is technically doable, it adds a lot of complexity to + Buildroot, which goes against the simplicity we try to stick to. + * In addition to the previous problem, there is the case where the + optional dependency is not even known to Buildroot. For example, + package A in version 1.0 never used OpenSSL, but in version 2.0 + it automatically uses OpenSSL if available. If the Buildroot .mk + file hasn’t been updated to take this into account, then package + A will not be part of the reverse dependencies of OpenSSL and + will not be removed and rebuilt when OpenSSL is removed. For + sure, the .mk file of package A should be fixed to mention this + optional dependency, but in the mean time, you can have + non-reproducible behaviors. + * The request is to also allow changes in the menuconfig to be + applied on the output directory without having to rebuild + everything from scratch. However, this is very difficult to + achieve in a reliable way: what happens when the suboptions of a + package are changed (we would have to detect this, and rebuild + the package from scratch and potentially all its reverse + dependencies), what happens if toolchain options are changed, + etc. At the moment, what Buildroot does is clear and simple so + its behaviour is very reliable and it is easy to support users. + If configuration changes done in menuconfig are applied after the + next make, then it has to work correctly and properly in all + situations, and not have some bizarre corner cases. The risk is + to get bug reports like "I have enabled package A, B and C, then + ran make, then disabled package C and enabled package D and ran + make, then re-enabled package C and enabled package E and then + there is a build failure". Or worse "I did some configuration, + then built, then did some changes, built, some more changes, + built, some more changes, built, and now it fails, but I don’t + remember all the changes I did and in which order". This will be + impossible to support. + +For all these reasons, the conclusion is that adding tracking of +installed files to remove them when the package is unselected, or to +generate a repository of binary packages, is something that is very +hard to achieve reliably and will add a lot of complexity. + +On this matter, the Buildroot developers make this position +statement: + + * Buildroot strives to make it easy to generate a root filesystem + (hence the name, by the way.) That is what we want to make + Buildroot good at: building root filesystems. + * Buildroot is not meant to be a distribution (or rather, a + distribution generator.) It is the opinion of most Buildroot + developers that this is not a goal we should pursue. We believe + that there are other tools better suited to generate a distro + than Buildroot is. For example, Open Embedded [http:// + openembedded.org/], or openWRT [https://openwrt.org/], are such + tools. + * We prefer to push Buildroot in a direction that makes it easy (or + even easier) to generate complete root filesystems. This is what + makes Buildroot stands out in the crowd (among other things, of + course!) + * We believe that for most embedded Linux systems, binary packages + are not necessary, and potentially harmful. When binary packages + are used, it means that the system can be partially upgraded, + which creates an enormous number of possible combinations of + package versions that should be tested before doing the upgrade + on the embedded device. On the other hand, by doing complete + system upgrades by upgrading the entire root filesystem image at + once, the image deployed to the embedded system is guaranteed to + really be the one that has been tested and validated. + +11.8. How to speed-up the build process? + +Since Buildroot often involves doing full rebuilds of the entire +system that can be quite long, we provide below a number of tips to +help reduce the build time: + + * Use a pre-built external toolchain instead of the default + Buildroot internal toolchain. By using a pre-built Linaro + toolchain (on ARM) or a Sourcery CodeBench toolchain (for ARM, + x86, x86-64, MIPS, etc.), you will save the build time of the + toolchain at each complete rebuild, approximately 15 to 20 + minutes. Note that temporarily using an external toolchain does + not prevent you to switch back to an internal toolchain (that may + provide a higher level of customization) once the rest of your + system is working; + * Use the ccache compiler cache (see: Section 8.13.3, “Using ccache + in Buildroot”); + * Learn about rebuilding only the few packages you actually care + about (see Section 8.3, “Understanding how to rebuild packages”), + but beware that sometimes full rebuilds are anyway necessary (see + Section 8.2, “Understanding when a full rebuild is necessary”); + * Make sure you are not using a virtual machine for the Linux + system used to run Buildroot. Most of the virtual machine + technologies are known to cause a significant performance impact + on I/O, which is really important for building source code; + * Make sure that you’re using only local files: do not attempt to + do a build over NFS, which significantly slows down the build. + Having the Buildroot download folder available locally also helps + a bit. + * Buy new hardware. SSDs and lots of RAM are key to speeding up the + builds. + * Experiment with top-level parallel build, see Section 8.12, + “Top-level parallel build”. + +11.9. How does Buildroot support Y2038? + +There are multiple situations to consider: + + * On 64-bit architectures, there is no problem, as time_t has + always been 64-bit. + * On 32-bit architectures, the situation depends on the C library: + + + With uclibc-ng, there is support for 64-bit time_t on 32-bit + architectures since version 1.0.46, so systems using + uclibc-ng on 32-bit platforms will be Y2038 compatible when + UCLIBC_USE_TIME64 is y. This is the default since 1.0.49. + + With musl, 64-bit time_t has always been used on 32-bit + architectures, so systems using musl on 32-bit platforms are + Y2038 compatible. + + With glibc, 64-bit time_t on 32-bit architectures is enabled + by the Buildroot option BR2_TIME_BITS_64. With this option + enabled, systems using glibc on 32-bit platforms are Y2038 + compatible. + +Note that the above only comments about the capabilities of the C +library. Individual user-space libraries or applications, even when +built in a Y2038-compatible setup, can exhibit incorrect behavior if +they do not make correct use of the time APIs and types. + +Chapter 12. Known issues + + * It is not possible to pass extra linker options via + BR2_TARGET_LDFLAGS if such options contain a $ sign. For example, + the following is known to break: BR2_TARGET_LDFLAGS="-Wl,-rpath= + '$ORIGIN/../lib'" + * The libffi package is not supported on the SuperH 2 and ARMv7-M + architectures. + * The prboom package triggers a compiler failure with the SuperH 4 + compiler from Sourcery CodeBench, version 2012.09. + +Chapter 13. Legal notice and licensing + +13.1. Complying with open source licenses + +All of the end products of Buildroot (toolchain, root filesystem, +kernel, bootloaders) contain open source software, released under +various licenses. + +Using open source software gives you the freedom to build rich +embedded systems, choosing from a wide range of packages, but also +imposes some obligations that you must know and honour. Some licenses +require you to publish the license text in the documentation of your +product. Others require you to redistribute the source code of the +software to those that receive your product. + +The exact requirements of each license are documented in each +package, and it is your responsibility (or that of your legal office) +to comply with those requirements. To make this easier for you, +Buildroot can collect for you some material you will probably need. +To produce this material, after you have configured Buildroot with +make menuconfig, make xconfig or make gconfig, run: + +make legal-info + +Buildroot will collect legally-relevant material in your output +directory, under the legal-info/ subdirectory. There you will find: + + * A README file, that summarizes the produced material and contains + warnings about material that Buildroot could not produce. + * buildroot.config: this is the Buildroot configuration file that + is usually produced with make menuconfig, and which is necessary + to reproduce the build. + * The source code for all packages; this is saved in the sources/ + and host-sources/ subdirectories for target and host packages + respectively. The source code for packages that set + _REDISTRIBUTE = NO will not be saved. Patches that were applied + are also saved, along with a file named series that lists the + patches in the order they were applied. Patches are under the + same license as the files that they modify. Note: Buildroot + applies additional patches to Libtool scripts of autotools-based + packages. These patches can be found under support/libtool in the + Buildroot source and, due to technical limitations, are not saved + with the package sources. You may need to collect them manually. + * A manifest file (one for host and one for target packages) + listing the configured packages, their version, license and + related information. Some of this information might not be + defined in Buildroot; such items are marked as "unknown". + * The license texts of all packages, in the licenses/ and + host-licenses/ subdirectories for target and host packages + respectively. If the license file(s) are not defined in + Buildroot, the file is not produced and a warning in the README + indicates this. + +Please note that the aim of the legal-info feature of Buildroot is to +produce all the material that is somehow relevant for legal +compliance with the package licenses. Buildroot does not try to +produce the exact material that you must somehow make public. +Certainly, more material is produced than is needed for a strict +legal compliance. For example, it produces the source code for +packages released under BSD-like licenses, that you are not required +to redistribute in source form. + +Moreover, due to technical limitations, Buildroot does not produce +some material that you will or may need, such as the toolchain source +code for some of the external toolchains and the Buildroot source +code itself. When you run make legal-info, Buildroot produces +warnings in the README file to inform you of relevant material that +could not be saved. + +Finally, keep in mind that the output of make legal-info is based on +declarative statements in each of the packages recipes. The Buildroot +developers try to do their best to keep those declarative statements +as accurate as possible, to the best of their knowledge. However, it +is very well possible that those declarative statements are not all +fully accurate nor exhaustive. You (or your legal department) have to +check the output of make legal-info before using it as your own +compliance delivery. See the NO WARRANTY clauses (clauses 11 and 12) +in the COPYING file at the root of the Buildroot distribution. + +13.2. Complying with the Buildroot license + +Buildroot itself is an open source software, released under the GNU +General Public License, version 2 [http://www.gnu.org/licenses/ +old-licenses/gpl-2.0.html] or (at your option) any later version, +with the exception of the package patches detailed below. However, +being a build system, it is not normally part of the end product: if +you develop the root filesystem, kernel, bootloader or toolchain for +a device, the code of Buildroot is only present on the development +machine, not in the device storage. + +Nevertheless, the general view of the Buildroot developers is that +you should release the Buildroot source code along with the source +code of other packages when releasing a product that contains +GPL-licensed software. This is because the GNU GPL [http:// +www.gnu.org/licenses/old-licenses/gpl-2.0.html] defines the "complete +source code" for an executable work as "all the source code for all +modules it contains, plus any associated interface definition files, +plus the scripts used to control compilation and installation of the +executable". Buildroot is part of the scripts used to control +compilation and installation of the executable, and as such it is +considered part of the material that must be redistributed. + +Keep in mind that this is only the Buildroot developers' opinion, and +you should consult your legal department or lawyer in case of any +doubt. + +13.2.1. Patches to packages + +Buildroot also bundles patch files, which are applied to the sources +of the various packages. Those patches are not covered by the license +of Buildroot. Instead, they are covered by the license of the +software to which the patches are applied. When said software is +available under multiple licenses, the Buildroot patches are only +provided under the publicly accessible licenses. + +See Chapter 19, Patching a package for the technical details. + +Chapter 14. Beyond Buildroot + +14.1. Boot the generated images + +14.1.1. NFS boot + +To achieve NFS-boot, enable tar root filesystem in the Filesystem +images menu. + +After a complete build, just run the following commands to setup the +NFS-root directory: + +sudo tar -xavf /path/to/output_dir/rootfs.tar -C /path/to/nfs_root_dir + +Remember to add this path to /etc/exports. + +Then, you can execute a NFS-boot from your target. + +14.1.2. Live CD + +To build a live CD image, enable the iso image option in the +Filesystem images menu. Note that this option is only available on +the x86 and x86-64 architectures, and if you are building your kernel +with Buildroot. + +You can build a live CD image with either IsoLinux, Grub or Grub 2 as +a bootloader, but only Isolinux supports making this image usable +both as a live CD and live USB (through the Build hybrid image +option). + +You can test your live CD image using QEMU: + +qemu-system-i386 -cdrom output/images/rootfs.iso9660 + +Or use it as a hard-drive image if it is a hybrid ISO: + +qemu-system-i386 -hda output/images/rootfs.iso9660 + +It can be easily flashed to a USB drive with dd: + +dd if=output/images/rootfs.iso9660 of=/dev/sdb + +14.2. Chroot + +If you want to chroot in a generated image, then there are few thing +you should be aware of: + + * you should setup the new root from the tar root filesystem image; + * either the selected target architecture is compatible with your + host machine, or you should use some qemu-* binary and correctly + set it within the binfmt properties to be able to run the + binaries built for the target on your host machine; + * Buildroot does not currently provide host-qemu and binfmt + correctly built and set for that kind of use. + +Part III. Developer guide + +Table of Contents + +15. How Buildroot works +16. Coding style + 16.1. Config.in file + 16.2. The .mk file + 16.3. The genimage.cfg file + 16.4. The documentation + 16.5. Support scripts +17. Adding support for a particular board +18. Adding new packages to Buildroot + 18.1. Package directory + 18.2. Config files + 18.3. The .mk file + 18.4. The .hash file + 18.5. The SNNfoo start script + 18.6. Infrastructure for packages with specific build systems + 18.7. Infrastructure for autotools-based packages + 18.8. Infrastructure for CMake-based packages + 18.9. Infrastructure for Python packages + 18.10. Infrastructure for LuaRocks-based packages + 18.11. Infrastructure for Perl/CPAN packages + 18.12. Infrastructure for virtual packages + 18.13. Infrastructure for packages using kconfig for + configuration files + 18.14. Infrastructure for rebar-based packages + 18.15. Infrastructure for Waf-based packages + 18.16. Infrastructure for Meson-based packages + 18.17. Infrastructure for Cargo-based packages + 18.18. Infrastructure for Go packages + 18.19. Infrastructure for QMake-based packages + 18.20. Infrastructure for packages building kernel modules + 18.21. Infrastructure for asciidoc documents + 18.22. Infrastructure specific to the Linux kernel package + 18.23. Hooks available in the various build steps + 18.24. Gettext integration and interaction with packages + 18.25. Tips and tricks + 18.26. Conclusion +19. Patching a package + 19.1. Providing patches + 19.2. How patches are applied + 19.3. Format and licensing of the package patches + 19.4. Additional patch documentation +20. Download infrastructure +21. Debugging Buildroot +22. Contributing to Buildroot + 22.1. Reproducing, analyzing and fixing bugs + 22.2. Analyzing and fixing autobuild failures + 22.3. Reviewing and testing patches + 22.4. Work on items from the TODO list + 22.5. Submitting patches + 22.6. Reporting issues/bugs or getting help + 22.7. Using the runtime tests framework +23. DEVELOPERS file and get-developers +24. Release Engineering + 24.1. Releases + 24.2. Development + +Chapter 15. How Buildroot works + +As mentioned above, Buildroot is basically a set of Makefiles that +download, configure, and compile software with the correct options. +It also includes patches for various software packages - mainly the +ones involved in the cross-compilation toolchain (gcc, binutils and +uClibc). + +There is basically one Makefile per software package, and they are +named with the .mk extension. Makefiles are split into many different +parts. + + * The toolchain/ directory contains the Makefiles and associated + files for all software related to the cross-compilation + toolchain: binutils, gcc, gdb, kernel-headers and uClibc. + * The arch/ directory contains the definitions for all the + processor architectures that are supported by Buildroot. + * The package/ directory contains the Makefiles and associated + files for all user-space tools and libraries that Buildroot can + compile and add to the target root filesystem. There is one + sub-directory per package. + * The linux/ directory contains the Makefiles and associated files + for the Linux kernel. + * The boot/ directory contains the Makefiles and associated files + for the bootloaders supported by Buildroot. + * The system/ directory contains support for system integration, + e.g. the target filesystem skeleton and the selection of an init + system. + * The fs/ directory contains the Makefiles and associated files for + software related to the generation of the target root filesystem + image. + +Each directory contains at least 2 files: + + * something.mk is the Makefile that downloads, configures, compiles + and installs the package something. + * Config.in is a part of the configuration tool description file. + It describes the options related to the package. + +The main Makefile performs the following steps (once the +configuration is done): + + * Create all the output directories: staging, target, build, etc. + in the output directory (output/ by default, another value can be + specified using O=) + * Generate the toolchain target. When an internal toolchain is + used, this means generating the cross-compilation toolchain. When + an external toolchain is used, this means checking the features + of the external toolchain and importing it into the Buildroot + environment. + * Generate all the targets listed in the TARGETS variable. This + variable is filled by all the individual components' Makefiles. + Generating these targets will trigger the compilation of the + userspace packages (libraries, programs), the kernel, the + bootloader and the generation of the root filesystem images, + depending on the configuration. + +Chapter 16. Coding style + +Overall, these coding style rules are here to help you to add new +files in Buildroot or refactor existing ones. + +If you slightly modify some existing file, the important thing is to +keep the consistency of the whole file, so you can: + + * either follow the potentially deprecated coding style used in + this file, + * or entirely rework it in order to make it comply with these + rules. + +16.1. Config.in file + +Config.in files contain entries for almost anything configurable in +Buildroot. + +An entry has the following pattern: + +config BR2_PACKAGE_LIBFOO + bool "libfoo" + depends on BR2_PACKAGE_LIBBAZ + select BR2_PACKAGE_LIBBAR + help + This is a comment that explains what libfoo is. The help text + should be wrapped. + + http://foosoftware.org/libfoo/ + + * The bool, depends on, select and help lines are indented with one + tab. + * The help text itself should be indented with one tab and two + spaces. + * The help text should be wrapped to fit 72 columns, where tab + counts for 8, so 62 characters in the text itself. + +The Config.in files are the input for the configuration tool used in +Buildroot, which is the regular Kconfig. For further details about +the Kconfig language, refer to http://kernel.org/doc/Documentation/ +kbuild/kconfig-language.txt. + +16.2. The .mk file + + * Header: The file starts with a header. It contains the module + name, preferably in lowercase, enclosed between separators made + of 80 hashes. A blank line is mandatory after the header: + + ################################################################################ + # + # libfoo + # + ################################################################################ + + * Assignment: use = preceded and followed by one space: + + LIBFOO_VERSION = 1.0 + LIBFOO_CONF_OPTS += --without-python-support + + Do not align the = signs. + + * Indentation: use tab only: + + define LIBFOO_REMOVE_DOC + $(RM) -r $(TARGET_DIR)/usr/share/libfoo/doc \ + $(TARGET_DIR)/usr/share/man/man3/libfoo* + endef + + Note that commands inside a define block should always start with + a tab, so make recognizes them as commands. + + * Optional dependency: + + + Prefer multi-line syntax. + + YES: + + ifeq ($(BR2_PACKAGE_PYTHON3),y) + LIBFOO_CONF_OPTS += --with-python-support + LIBFOO_DEPENDENCIES += python3 + else + LIBFOO_CONF_OPTS += --without-python-support + endif + + NO: + + LIBFOO_CONF_OPTS += --with$(if $(BR2_PACKAGE_PYTHON3),,out)-python-support + LIBFOO_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON3),python3,) + + + Keep configure options and dependencies close together. + * Optional hooks: keep hook definition and assignment together in + one if block. + + YES: + + ifneq ($(BR2_LIBFOO_INSTALL_DATA),y) + define LIBFOO_REMOVE_DATA + $(RM) -r $(TARGET_DIR)/usr/share/libfoo/data + endef + LIBFOO_POST_INSTALL_TARGET_HOOKS += LIBFOO_REMOVE_DATA + endif + + NO: + + define LIBFOO_REMOVE_DATA + $(RM) -r $(TARGET_DIR)/usr/share/libfoo/data + endef + + ifneq ($(BR2_LIBFOO_INSTALL_DATA),y) + LIBFOO_POST_INSTALL_TARGET_HOOKS += LIBFOO_REMOVE_DATA + endif + +16.3. The genimage.cfg file + +genimage.cfg files contain the output image layout that genimage +utility uses to create final .img file. + +An example follows: + +image efi-part.vfat { + vfat { + file EFI { + image = "efi-part/EFI" + } + + file Image { + image = "Image" + } + } + + size = 32M +} + +image sdimage.img { + hdimage { + } + + partition u-boot { + image = "efi-part.vfat" + offset = 8K + } + + partition root { + image = "rootfs.ext2" + size = 512M + } +} + + * Every section(i.e. hdimage, vfat etc.), partition must be + indented with one tab. + * Every file or other subnode must be indented with two tabs. + * Every node(section, partition, file, subnode) must have an open + curly bracket on the same line of the node’s name, while the + closing one must be on a newline and after it a newline must be + added except for the last one node. Same goes for its option, for + example option size =. + * Every option(i.e. image, offset, size) must have the = assignment + one space from it and one space from the value specified. + * Filename must at least begin with genimage prefix and have the + .cfg extension to be easy to recognize. + * Allowed notations for offset and size options are: G, M, K (not + k). If it’s not possible to express a precise byte count with + notations above then use hexadecimal 0x prefix or, as last + chance, the byte count. In comments instead use GB, MB, KB (not + kb) in place of G, M, K. + * For GPT partitions, the partition-type-uuid value must be U for + the EFI System Partition (expanded to + c12a7328-f81f-11d2-ba4b-00a0c93ec93b by genimage), F for a FAT + partition (expanded to ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 by + genimage) or L for the root filesystem or other filesystems + (expanded to 0fc63daf-8483-4772-8e79-3d69d8477de4 by genimage). + Even though L is the default value of genimage, we prefer to have + it explicitly specified in our genimage.cfg files. Finally, these + shortcuts should be used without double quotes, e.g + partition-type-uuid = U. If an explicit GUID is specified, + lower-case letters should be used. + +The genimage.cfg files are the input for the genimage tool used in +Buildroot to generate the final image file(i.e. sdcard.img). For +further details about the genimage language, refer to https:// +github.com/pengutronix/genimage/blob/master/README.rst. + +16.4. The documentation + +The documentation uses the asciidoc [https://asciidoc-py.github.io/] +format. + +For further details about the asciidoc syntax, refer to https:// +asciidoc-py.github.io/userguide.html. + +16.5. Support scripts + +Some scripts in the support/ and utils/ directories are written in +Python and should follow the PEP8 Style Guide for Python Code [https: +//www.python.org/dev/peps/pep-0008/]. + +Chapter 17. Adding support for a particular board + +Buildroot contains basic configurations for several publicly +available hardware boards, so that users of such a board can easily +build a system that is known to work. You are welcome to add support +for other boards to Buildroot too. + +To do so, you need to create a normal Buildroot configuration that +builds a basic system for the hardware: (internal) toolchain, kernel, +bootloader, filesystem and a simple BusyBox-only userspace. No +specific package should be selected: the configuration should be as +minimal as possible, and should only build a working basic BusyBox +system for the target platform. You can of course use more +complicated configurations for your internal projects, but the +Buildroot project will only integrate basic board configurations. +This is because package selections are highly application-specific. + +Once you have a known working configuration, run make savedefconfig. +This will generate a minimal defconfig file at the root of the +Buildroot source tree. Move this file into the configs/ directory, +and rename it _defconfig. If the configuration is a bit +more complicated, it is nice to manually reformat it and separate it +into sections, with a comment before each section. Typical sections +are Architecture, Toolchain options (typically just linux headers +version), Firmware, Bootloader, Kernel, and Filesystem. + +Always use fixed versions or commit hashes for the different +components, not the "latest" version. For example, set +BR2_LINUX_KERNEL_CUSTOM_VERSION=y and +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE to the kernel version you +tested with. If you are using the buildroot toolchain +BR2_TOOLCHAIN_BUILDROOT (which is the default), additionally ensure +that the same kernel headers are used (BR2_KERNEL_HEADERS_AS_KERNEL, +which is also the default) and set the custom kernel headers series +to match your kernel version +(BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_*). + +It is recommended to use as much as possible upstream versions of the +Linux kernel and bootloaders, and to use as much as possible default +kernel and bootloader configurations. If they are incorrect for your +board, or no default exists, we encourage you to send fixes to the +corresponding upstream projects. + +However, in the mean time, you may want to store kernel or bootloader +configuration or patches specific to your target platform. To do so, +create a directory board/ and a subdirectory board/ +/. You can then store your patches and +configurations in these directories, and reference them from the main +Buildroot configuration. Refer to Chapter 9, Project-specific +customization for more details. + +Before submitting patches for new boards it is recommended to test it +by building it using latest gitlab-CI docker container. To do this +use utils/docker-run script and inside it issue these commands: + + $ make _defconfig + $ make + +By default, Buildroot developers use the official image hosted on the +gitlab.com registry [https://gitlab.com/buildroot.org/buildroot/ +container_registry/2395076] and it should be convenient for most +usage. If you still want to build your own docker image, you can base +it off the official image as the FROM directive of your own +Dockerfile: + +FROM registry.gitlab.com/buildroot.org/buildroot/base:YYYYMMDD.HHMM +RUN ... +COPY ... + +The current version YYYYMMDD.HHMM can be found in the .gitlab-ci.yml +file at the top of the Buildroot source tree; all past versions are +listed in the aforementioned registry as well. + +Chapter 18. Adding new packages to Buildroot + +This section covers how new packages (userspace libraries or +applications) can be integrated into Buildroot. It also shows how +existing packages are integrated, which is needed for fixing issues +or tuning their configuration. + +When you add a new package, be sure to test it in various conditions +(see Section 18.25.3, “How to test your package”) and also check it +for coding style (see Section 18.25.2, “How to check the coding +style”). + +18.1. Package directory + +First of all, create a directory under the package directory for your +software, for example libfoo. + +Some packages have been grouped by topic in a sub-directory: x11r7, +qt5 and gstreamer. If your package fits in one of these categories, +then create your package directory in these. New subdirectories are +discouraged, however. + +18.2. Config files + +For the package to be displayed in the configuration tool, you need +to create a Config file in your package directory. There are two +types: Config.in and Config.in.host. + +18.2.1. Config.in file + +For packages used on the target, create a file named Config.in. This +file will contain the option descriptions related to our libfoo +software that will be used and displayed in the configuration tool. +It should basically contain: + +config BR2_PACKAGE_LIBFOO + bool "libfoo" + help + This is a comment that explains what libfoo is. The help text + should be wrapped. + + http://foosoftware.org/libfoo/ + +The bool line, help line and other metadata information about the +configuration option must be indented with one tab. The help text +itself should be indented with one tab and two spaces, lines should +be wrapped to fit 72 columns, where tab counts for 8, so 62 +characters in the text itself. The help text must mention the +upstream URL of the project after an empty line. + +As a convention specific to Buildroot, the ordering of the attributes +is as follows: + + 1. The type of option: bool, string… with the prompt + 2. If needed, the default value(s) + 3. Any dependencies on the target in depends on form + 4. Any dependencies on the toolchain in depends on form + 5. Any dependencies on other packages in depends on form + 6. Any dependency of the select form + 7. The help keyword and help text. + +You can add other sub-options into a if BR2_PACKAGE_LIBFOO…endif +statement to configure particular things in your software. You can +look at examples in other packages. The syntax of the Config.in file +is the same as the one for the kernel Kconfig file. The documentation +for this syntax is available at http://kernel.org/doc/Documentation/ +kbuild/kconfig-language.txt + +Finally you have to add your new libfoo/Config.in to package/ +Config.in (or in a category subdirectory if you decided to put your +package in one of the existing categories). The files included there +are sorted alphabetically per category and are NOT supposed to +contain anything but the bare name of the package. + +source "package/libfoo/Config.in" + +18.2.2. Config.in.host file + +Some packages also need to be built for the host system. There are +two options here: + + * The host package is only required to satisfy build-time + dependencies of one or more target packages. In this case, add + host-foo to the target package’s BAR_DEPENDENCIES variable. No + Config.in.host file should be created. + * The host package should be explicitly selectable by the user from + the configuration menu. In this case, create a Config.in.host + file for that host package: + + config BR2_PACKAGE_HOST_FOO + bool "host foo" + help + This is a comment that explains what foo for the host is. + + http://foosoftware.org/foo/ + + The same coding style and options as for the Config.in file are + valid. + + Finally you have to add your new libfoo/Config.in.host to package + /Config.in.host. The files included there are sorted + alphabetically and are NOT supposed to contain anything but the + bare name of the package. + + source "package/foo/Config.in.host" + + The host package will then be available from the Host utilities + menu. + +18.2.3. Choosing depends on or select + +The Config.in file of your package must also ensure that dependencies +are enabled. Typically, Buildroot uses the following rules: + + * Use a select type of dependency for dependencies on libraries. + These dependencies are generally not obvious and it therefore + make sense to have the kconfig system ensure that the + dependencies are selected. For example, the libgtk2 package uses + select BR2_PACKAGE_LIBGLIB2 to make sure this library is also + enabled. The select keyword expresses the dependency with a + backward semantic. + * Use a depends on type of dependency when the user really needs to + be aware of the dependency. Typically, Buildroot uses this type + of dependency for dependencies on target architecture, MMU + support and toolchain options (see Section 18.2.4, “Dependencies + on target and toolchain options”), or for dependencies on "big" + things, such as the X.org system. The depends on keyword + expresses the dependency with a forward semantic. + +Note. The current problem with the kconfig language is that these two +dependency semantics are not internally linked. Therefore, it may be +possible to select a package, whom one of its dependencies/ +requirement is not met. + +An example illustrates both the usage of select and depends on. + +config BR2_PACKAGE_RRDTOOL + bool "rrdtool" + depends on BR2_USE_WCHAR + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_LIBART + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_ZLIB + help + RRDtool is the OpenSource industry standard, high performance + data logging and graphing system for time series data. + + http://oss.oetiker.ch/rrdtool/ + +comment "rrdtool needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +Note that these two dependency types are only transitive with the +dependencies of the same kind. + +This means, in the following example: + +config BR2_PACKAGE_A + bool "Package A" + +config BR2_PACKAGE_B + bool "Package B" + depends on BR2_PACKAGE_A + +config BR2_PACKAGE_C + bool "Package C" + depends on BR2_PACKAGE_B + +config BR2_PACKAGE_D + bool "Package D" + select BR2_PACKAGE_B + +config BR2_PACKAGE_E + bool "Package E" + select BR2_PACKAGE_D + + * Selecting Package C will be visible if Package B has been + selected, which in turn is only visible if Package A has been + selected. + * Selecting Package E will select Package D, which will select + Package B, it will not check for the dependencies of Package B, + so it will not select Package A. + * Since Package B is selected but Package A is not, this violates + the dependency of Package B on Package A. Therefore, in such a + situation, the transitive dependency has to be added explicitly: + +config BR2_PACKAGE_D + bool "Package D" + depends on BR2_PACKAGE_A + select BR2_PACKAGE_B + +config BR2_PACKAGE_E + bool "Package E" + depends on BR2_PACKAGE_A + select BR2_PACKAGE_D + +Overall, for package library dependencies, select should be +preferred. + +Note that such dependencies will ensure that the dependency option is +also enabled, but not necessarily built before your package. To do +so, the dependency also needs to be expressed in the .mk file of the +package. + +Further formatting details: see the coding style. + +18.2.4. Dependencies on target and toolchain options + +Many packages depend on certain options of the toolchain: the choice +of C library, C++ support, thread support, RPC support, wchar +support, or dynamic library support. Some packages can only be built +on certain target architectures, or if an MMU is available in the +processor. + +These dependencies have to be expressed with the appropriate depends +on statements in the Config.in file. Additionally, for dependencies +on toolchain options, a comment should be displayed when the option +is not enabled, so that the user knows why the package is not +available. Dependencies on target architecture or MMU support should +not be made visible in a comment: since it is unlikely that the user +can freely choose another target, it makes little sense to show these +dependencies explicitly. + +The comment should only be visible if the config option itself would +be visible when the toolchain option dependencies are met. This means +that all other dependencies of the package (including dependencies on +target architecture and MMU support) have to be repeated on the +comment definition. To keep it clear, the depends on statement for +these non-toolchain option should be kept separate from the depends +on statement for the toolchain options. If there is a dependency on a +config option in that same file (typically the main package) it is +preferable to have a global if … endif construct rather than +repeating the depends on statement on the comment and other config +options. + +The general format of a dependency comment for package foo is: + +foo needs a toolchain w/ featA, featB, featC + +for example: + +mpd needs a toolchain w/ C++, threads, wchar + +or + +crda needs a toolchain w/ threads + +Note that this text is kept brief on purpose, so that it will fit on +a 80-character terminal. + +The rest of this section enumerates the different target and +toolchain options, the corresponding config symbols to depend on, and +the text to use in the comment. + + * Target architecture + + + Dependency symbol: BR2_powerpc, BR2_mips, … (see arch/ + Config.in) + + Comment string: no comment to be added + * MMU support + + + Dependency symbol: BR2_USE_MMU + + Comment string: no comment to be added + * Gcc _sync* built-ins used for atomic operations. They are + available in variants operating on 1 byte, 2 bytes, 4 bytes and 8 + bytes. Since different architectures support atomic operations on + different sizes, one dependency symbol is available for each + size: + + + Dependency symbol: BR2_TOOLCHAIN_HAS_SYNC_1 for 1 byte, + BR2_TOOLCHAIN_HAS_SYNC_2 for 2 bytes, + BR2_TOOLCHAIN_HAS_SYNC_4 for 4 bytes, + BR2_TOOLCHAIN_HAS_SYNC_8 for 8 bytes. + + Comment string: no comment to be added + * Gcc _atomic* built-ins used for atomic operations. + + + Dependency symbol: BR2_TOOLCHAIN_HAS_ATOMIC. + + Comment string: no comment to be added + * Kernel headers + + + Dependency symbol: BR2_TOOLCHAIN_HEADERS_AT_LEAST_X_Y, + (replace X_Y with the proper version, see toolchain/ + Config.in) + + Comment string: headers >= X.Y and/or headers <= X.Y (replace + X.Y with the proper version) + * GCC version + + + Dependency symbol: BR2_TOOLCHAIN_GCC_AT_LEAST_X_Y, (replace + X_Y with the proper version, see toolchain/Config.in) + + Comment string: gcc >= X.Y and/or gcc <= X.Y (replace X.Y + with the proper version) + * Host GCC version + + + Dependency symbol: BR2_HOST_GCC_AT_LEAST_X_Y, (replace X_Y + with the proper version, see Config.in) + + Comment string: no comment to be added + + Note that it is usually not the package itself that has a + minimum host GCC version, but rather a host-package on which + it depends. + * C library + + + Dependency symbol: BR2_TOOLCHAIN_USES_GLIBC, + BR2_TOOLCHAIN_USES_MUSL, BR2_TOOLCHAIN_USES_UCLIBC + + Comment string: for the C library, a slightly different + comment text is used: foo needs a glibc toolchain, or foo + needs a glibc toolchain w/ C++ + * C++ support + + + Dependency symbol: BR2_INSTALL_LIBSTDCPP + + Comment string: C++ + * D support + + + Dependency symbol: BR2_TOOLCHAIN_HAS_DLANG + + Comment string: Dlang + * Fortran support + + + Dependency symbol: BR2_TOOLCHAIN_HAS_FORTRAN + + Comment string: fortran + * thread support + + + Dependency symbol: BR2_TOOLCHAIN_HAS_THREADS + + Comment string: threads (unless + BR2_TOOLCHAIN_HAS_THREADS_NPTL is also needed, in which case, + specifying only NPTL is sufficient) + * NPTL thread support + + + Dependency symbol: BR2_TOOLCHAIN_HAS_THREADS_NPTL + + Comment string: NPTL + * RPC support + + + Dependency symbol: BR2_TOOLCHAIN_HAS_NATIVE_RPC + + Comment string: RPC + * wchar support + + + Dependency symbol: BR2_USE_WCHAR + + Comment string: wchar + * dynamic library + + + Dependency symbol: !BR2_STATIC_LIBS + + Comment string: dynamic library + +18.2.5. Dependencies on a Linux kernel built by buildroot + +Some packages need a Linux kernel to be built by buildroot. These are +typically kernel modules or firmware. A comment should be added in +the Config.in file to express this dependency, similar to +dependencies on toolchain options. The general format is: + +foo needs a Linux kernel to be built + +If there is a dependency on both toolchain options and the Linux +kernel, use this format: + +foo needs a toolchain w/ featA, featB, featC and a Linux kernel to be built + +18.2.6. Dependencies on udev /dev management + +If a package needs udev /dev management, it should depend on symbol +BR2_PACKAGE_HAS_UDEV, and the following comment should be added: + +foo needs udev /dev management + +If there is a dependency on both toolchain options and udev /dev +management, use this format: + +foo needs udev /dev management and a toolchain w/ featA, featB, featC + +18.2.7. Dependencies on features provided by virtual packages + +Some features can be provided by more than one package, such as the +openGL libraries. + +See Section 18.12, “Infrastructure for virtual packages” for more on +the virtual packages. + +18.3. The .mk file + +Finally, here’s the hardest part. Create a file named libfoo.mk. It +describes how the package should be downloaded, configured, built, +installed, etc. + +Depending on the package type, the .mk file must be written in a +different way, using different infrastructures: + + * Makefiles for generic packages (not using autotools or CMake): + These are based on an infrastructure similar to the one used for + autotools-based packages, but require a little more work from the + developer. They specify what should be done for the + configuration, compilation and installation of the package. This + infrastructure must be used for all packages that do not use the + autotools as their build system. In the future, other specialized + infrastructures might be written for other build systems. We + cover them through in a tutorial and a reference. + * Makefiles for autotools-based software (autoconf, automake, + etc.): We provide a dedicated infrastructure for such packages, + since autotools is a very common build system. This + infrastructure must be used for new packages that rely on the + autotools as their build system. We cover them through a tutorial + and reference. + * Makefiles for cmake-based software: We provide a dedicated + infrastructure for such packages, as CMake is a more and more + commonly used build system and has a standardized behaviour. This + infrastructure must be used for new packages that rely on CMake. + We cover them through a tutorial and reference. + * Makefiles for Python modules: We have a dedicated infrastructure + for Python modules that use the flit, pep517, setuptools, + setuptools-rust or maturin mechanisms. We cover them through a + tutorial and a reference. + * Makefiles for Lua modules: We have a dedicated infrastructure for + Lua modules available through the LuaRocks web site. We cover + them through a tutorial and a reference. + +Further formatting details: see the writing rules. + +18.4. The .hash file + +When possible, you must add a third file, named libfoo.hash, that +contains the hashes of the downloaded files for the libfoo package. +The only reason for not adding a .hash file is when hash checking is +not possible due to how the package is downloaded. + +When a package has a version selection choice, then the hash file may +be stored in a subdirectory named after the version, e.g. package/ +libfoo/1.2.3/libfoo.hash. This is especially important if the +different versions have different licensing terms, but they are +stored in the same file. Otherwise, the hash file should stay in the +package’s directory. + +The hashes stored in that file are used to validate the integrity of +the downloaded files and of the license files. + +The format of this file is one line for each file for which to check +the hash, each line with the following three fields separated by two +spaces: + + * the type of hash, one of: + + + md5, sha1, sha224, sha256, sha384, sha512 + * the hash of the file: + + + for md5, 32 hexadecimal characters + + for sha1, 40 hexadecimal characters + + for sha224, 56 hexadecimal characters + + for sha256, 64 hexadecimal characters + + for sha384, 96 hexadecimal characters + + for sha512, 128 hexadecimal characters + * the name of the file: + + + for a source archive: the basename of the file, without any + directory component, + + for a license file: the path as it appears in + FOO_LICENSE_FILES. + +Lines starting with a # sign are considered comments, and ignored. +Empty lines are ignored. + +There can be more than one hash for a single file, each on its own +line. In this case, all hashes must match. + +Note. Ideally, the hashes stored in this file should match the hashes +published by upstream, e.g. on their website, in the e-mail +announcement… If upstream provides more than one type of hash (e.g. +sha1 and sha512), then it is best to add all those hashes in the +.hash file. If upstream does not provide any hash, or only provides +an md5 hash, then compute at least one strong hash yourself +(preferably sha256, but not md5), and mention this in a comment line +above the hashes. + +Note. The hashes for license files are used to detect a license +change when a package version is bumped. The hashes are checked +during the make legal-info target run. For a package with multiple +versions (like Qt5), create the hash file in a subdirectory + of that package (see also Section 19.2, “How patches +are applied”). + +The example below defines a sha1 and a sha256 published by upstream +for the main libfoo-1.2.3.tar.bz2 tarball, an md5 from upstream and a +locally-computed sha256 hashes for a binary blob, a sha256 for a +downloaded patch, and an archive with no hash: + +# Hashes from: http://www.foosoftware.org/download/libfoo-1.2.3.tar.bz2.{sha1,sha256}: +sha1 486fb55c3efa71148fe07895fd713ea3a5ae343a libfoo-1.2.3.tar.bz2 +sha256 efc8103cc3bcb06bda6a781532d12701eb081ad83e8f90004b39ab81b65d4369 libfoo-1.2.3.tar.bz2 + +# md5 from: http://www.foosoftware.org/download/libfoo-1.2.3.tar.bz2.md5, sha256 locally computed: +md5 2d608f3c318c6b7557d551a5a09314f03452f1a1 libfoo-data.bin +sha256 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b libfoo-data.bin + +# Locally computed: +sha256 ff52101fb90bbfc3fe9475e425688c660f46216d7e751c4bbdb1dc85cdccacb9 libfoo-fix-blabla.patch + +# Hash for license files: +sha256 a45a845012742796534f7e91fe623262ccfb99460a2bd04015bd28d66fba95b8 COPYING +sha256 01b1f9f2c8ee648a7a596a1abe8aa4ed7899b1c9e5551bda06da6e422b04aa55 doc/COPYING.LGPL + +If the .hash file is present, and it contains one or more hashes for +a downloaded file, the hash(es) computed by Buildroot (after +download) must match the hash(es) stored in the .hash file. If one or +more hashes do not match, Buildroot considers this an error, deletes +the downloaded file, and aborts. + +If the .hash file is present, but it does not contain a hash for a +downloaded file, Buildroot considers this an error and aborts. +However, the downloaded file is left in the download directory since +this typically indicates that the .hash file is wrong but the +downloaded file is probably OK. + +Hashes are currently checked for files fetched from http/ftp servers, +Git or subversion repositories, files copied using scp and local +files. Hashes are not checked for other version control systems (such +as CVS, mercurial) because Buildroot currently does not generate +reproducible tarballs when source code is fetched from such version +control systems. + +Additionally, for packages for which it is possible to specify a +custom version (e.g. a custom version string, a remote tarball URL, +or a VCS repository location and changeset), Buildroot can’t carry +hashes for those. It is however possible to provide a list of extra +hashes that can cover such cases. + +Hashes should only be added in .hash files for files that are +guaranteed to be stable. For example, patches auto-generated by +Github are not guaranteed to be stable, and therefore their hashes +can change over time. Such patches should not be downloaded, and +instead be added locally to the package folder. + +If the .hash file is missing, then no check is done at all. + +18.5. The SNNfoo start script + +Packages that provide a system daemon usually need to be started +somehow at boot. Buildroot comes with support for several init +systems, some are considered tier one (see Section 6.3, “init system” +), while others are also available but do not have the same level of +integration. Ideally, all packages providing a system daemon should +provide a start script for BusyBox/SysV init and a systemd unit file. + +For consistency, the start script must follow the style and +composition as shown in the reference: package/busybox/S01syslogd. An +annotated example of this style is shown below. There is no specific +coding style for systemd unit files, but if a package comes with its +own unit file, that is preferred over a buildroot specific one, if it +is compatible with buildroot. + +The name of the start script is composed of the SNN and the daemon +name. The NN is the start order number which needs to be carefully +chosen. For example, a program that requires networking to be up +should not start before S40network. The scripts are started in +alphabetical order, so S01syslogd starts before S01watchdogd, and +S02sysctl start thereafter. + +#!/bin/sh + +DAEMON="syslogd" +PIDFILE="/var/run/$DAEMON.pid" + +SYSLOGD_ARGS="" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +# BusyBox' syslogd does not create a pidfile, so pass "-n" in the command line +# and use "--make-pidfile" to instruct start-stop-daemon to create one. +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon --start --background --make-pidfile \ + --pidfile "$PIDFILE" --exec "/sbin/$DAEMON" \ + -- -n $SYSLOGD_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon --stop --pidfile "$PIDFILE" --exec "/sbin/$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + return "$status" + fi + while start-stop-daemon --stop --test --quiet --pidfile "$PIDFILE" \ + --exec "/sbin/$DAEMON"; do + sleep 0.1 + done + rm -f "$PIDFILE" + return "$status" +} + +restart() { + stop + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac + +Note: programs that support reloading their configuration in some +fashion (SIGHUP) should provide a reload() function similar to stop +(). The start-stop-daemon command supports --stop --signal HUP for +this. It is recommended to always append --exec "/sbin/$DAEMON" to +all start-stop-daemon commands to ensure signals are set to a PID +that matches $DAEMON. + +Both start scripts and unit files can source command line arguments +from /etc/default/foo, in general, if such a file does not exist it +should not block the start of the daemon, unless there is some site +specirfic command line argument the daemon requires to start. For +start scripts a FOO_ARGS="-s -o -m -e -args" can be defined to a +default value in and the user can override this from /etc/default/ +foo. + +18.6. Infrastructure for packages with specific build systems + +By packages with specific build systems we mean all the packages +whose build system is not one of the standard ones, such as autotools +or CMake. This typically includes packages whose build system is +based on hand-written Makefiles or shell scripts. + +18.6.1. generic-package tutorial + +01: ################################################################################ +02: # +03: # libfoo +04: # +05: ################################################################################ +06: +07: LIBFOO_VERSION = 1.0 +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz +09: LIBFOO_SITE = http://www.foosoftware.org/download +10: LIBFOO_LICENSE = GPL-3.0+ +11: LIBFOO_LICENSE_FILES = COPYING +12: LIBFOO_INSTALL_STAGING = YES +13: LIBFOO_CONFIG_SCRIPTS = libfoo-config +14: LIBFOO_DEPENDENCIES = host-libaaa libbbb +15: +16: define LIBFOO_BUILD_CMDS +17: $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all +18: endef +19: +20: define LIBFOO_INSTALL_STAGING_CMDS +21: $(INSTALL) -D -m 0755 $(@D)/libfoo.a $(STAGING_DIR)/usr/lib/libfoo.a +22: $(INSTALL) -D -m 0644 $(@D)/foo.h $(STAGING_DIR)/usr/include/foo.h +23: $(INSTALL) -D -m 0755 $(@D)/libfoo.so* $(STAGING_DIR)/usr/lib +24: endef +25: +26: define LIBFOO_INSTALL_TARGET_CMDS +27: $(INSTALL) -D -m 0755 $(@D)/libfoo.so* $(TARGET_DIR)/usr/lib +28: $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/foo.d +29: endef +30: +31: define LIBFOO_USERS +32: foo -1 libfoo -1 * - - - LibFoo daemon +33: endef +34: +35: define LIBFOO_DEVICES +36: /dev/foo c 666 0 0 42 0 - - - +37: endef +38: +39: define LIBFOO_PERMISSIONS +40: /bin/foo f 4755 foo libfoo - - - - - +41: endef +42: +43: $(eval $(generic-package)) + +The Makefile begins on line 7 to 11 with metadata information: the +version of the package (LIBFOO_VERSION), the name of the tarball +containing the package (LIBFOO_SOURCE) (xz-ed tarball recommended) +the Internet location at which the tarball can be downloaded from +(LIBFOO_SITE), the license (LIBFOO_LICENSE) and file with the license +text (LIBFOO_LICENSE_FILES). All variables must start with the same +prefix, LIBFOO_ in this case. This prefix is always the uppercased +version of the package name (see below to understand where the +package name is defined). + +On line 12, we specify that this package wants to install something +to the staging space. This is often needed for libraries, since they +must install header files and other development files in the staging +space. This will ensure that the commands listed in the +LIBFOO_INSTALL_STAGING_CMDS variable will be executed. + +On line 13, we specify that there is some fixing to be done to some +of the libfoo-config files that were installed during +LIBFOO_INSTALL_STAGING_CMDS phase. These *-config files are +executable shell script files that are located in $(STAGING_DIR)/usr/ +bin directory and are executed by other 3rd party packages to find +out the location and the linking flags of this particular package. + +The problem is that all these *-config files by default give wrong, +host system linking flags that are unsuitable for cross-compiling. + +For example: -I/usr/include instead of -I$(STAGING_DIR)/usr/include +or: -L/usr/lib instead of -L$(STAGING_DIR)/usr/lib + +So some sed magic is done to these scripts to make them give correct +flags. The argument to be given to LIBFOO_CONFIG_SCRIPTS is the file +name(s) of the shell script(s) needing fixing. All these names are +relative to $(STAGING_DIR)/usr/bin and if needed multiple names can +be given. + +In addition, the scripts listed in LIBFOO_CONFIG_SCRIPTS are removed +from $(TARGET_DIR)/usr/bin, since they are not needed on the target. + +Example 18.1. Config script: divine package + +Package divine installs shell script $(STAGING_DIR)/usr/bin/ +divine-config. + +So its fixup would be: + +DIVINE_CONFIG_SCRIPTS = divine-config + + +Example 18.2. Config script: imagemagick package: + +Package imagemagick installs the following scripts: $(STAGING_DIR)/ +usr/bin/{Magick,Magick++,MagickCore,MagickWand,Wand}-config + +So it’s fixup would be: + +IMAGEMAGICK_CONFIG_SCRIPTS = \ + Magick-config Magick++-config \ + MagickCore-config MagickWand-config Wand-config + + +On line 14, we specify the list of dependencies this package relies +on. These dependencies are listed in terms of lower-case package +names, which can be packages for the target (without the host- +prefix) or packages for the host (with the host-) prefix). Buildroot +will ensure that all these packages are built and installed before +the current package starts its configuration. + +The rest of the Makefile, lines 16..29, defines what should be done +at the different steps of the package configuration, compilation and +installation. LIBFOO_BUILD_CMDS tells what steps should be performed +to build the package. LIBFOO_INSTALL_STAGING_CMDS tells what steps +should be performed to install the package in the staging space. +LIBFOO_INSTALL_TARGET_CMDS tells what steps should be performed to +install the package in the target space. + +All these steps rely on the $(@D) variable, which contains the +directory where the source code of the package has been extracted. + +On lines 31..33, we define a user that is used by this package (e.g. +to run a daemon as non-root) (LIBFOO_USERS). + +On line 35..37, we define a device-node file used by this package +(LIBFOO_DEVICES). + +On line 39..41, we define the permissions to set to specific files +installed by this package (LIBFOO_PERMISSIONS). + +Finally, on line 43, we call the generic-package function, which +generates, according to the variables defined previously, all the +Makefile code necessary to make your package working. + +18.6.2. generic-package reference + +There are two variants of the generic target. The generic-package +macro is used for packages to be cross-compiled for the target. The +host-generic-package macro is used for host packages, natively +compiled for the host. It is possible to call both of them in a +single .mk file: once to create the rules to generate a target +package and once to create the rules to generate a host package: + +$(eval $(generic-package)) +$(eval $(host-generic-package)) + +This might be useful if the compilation of the target package +requires some tools to be installed on the host. If the package name +is libfoo, then the name of the package for the target is also +libfoo, while the name of the package for the host is host-libfoo. +These names should be used in the DEPENDENCIES variables of other +packages, if they depend on libfoo or host-libfoo. + +The call to the generic-package and/or host-generic-package macro +must be at the end of the .mk file, after all variable definitions. +The call to host-generic-package must be after the call to +generic-package, if any. + +For the target package, the generic-package uses the variables +defined by the .mk file and prefixed by the uppercased package name: +LIBFOO_*. host-generic-package uses the HOST_LIBFOO_* variables. For +some variables, if the HOST_LIBFOO_ prefixed variable doesn’t exist, +the package infrastructure uses the corresponding variable prefixed +by LIBFOO_. This is done for variables that are likely to have the +same value for both the target and host packages. See below for +details. + +The list of variables that can be set in a .mk file to give metadata +information is (assuming the package name is libfoo) : + + * LIBFOO_VERSION, mandatory, must contain the version of the + package. Note that if HOST_LIBFOO_VERSION doesn’t exist, it is + assumed to be the same as LIBFOO_VERSION. It can also be a + revision number or a tag for packages that are fetched directly + from their version control system. Examples: + + + a version for a release tarball: LIBFOO_VERSION = 0.1.2 + + a sha1 for a git tree: LIBFOO_VERSION = + cb9d6aa9429e838f0e54faa3d455bcbab5eef057 + + a tag for a git tree LIBFOO_VERSION = v0.1.2 + + Note: Using a branch name as FOO_VERSION is not supported, + because it does not and can not work as people would expect + it should: + + 1. due to local caching, Buildroot will not re-fetch the + repository, so people who expect to be able to follow the + remote repository would be quite surprised and + disappointed; + 2. because two builds can never be perfectly simultaneous, + and because the remote repository may get new commits on + the branch anytime, two users, using the same Buildroot + tree and building the same configuration, may get + different source, thus rendering the build non + reproducible, and people would be quite surprised and + disappointed. + * LIBFOO_SOURCE may contain the name of the tarball of the package, + which Buildroot will use to download the tarball from + LIBFOO_SITE. If HOST_LIBFOO_SOURCE is not specified, it defaults + to LIBFOO_SOURCE. If none are specified, then the value is + assumed to be libfoo-$(LIBFOO_VERSION).tar.gz. Example: + LIBFOO_SOURCE = foobar-$(LIBFOO_VERSION).tar.bz2 + * LIBFOO_PATCH may contain a space-separated list of patch file + names, that Buildroot will download and apply to the package + source code. If an entry contains ://, then Buildroot will assume + it is a full URL and download the patch from this location. + Otherwise, Buildroot will assume that the patch should be + downloaded from LIBFOO_SITE. If HOST_LIBFOO_PATCH is not + specified, it defaults to LIBFOO_PATCH. Note that patches that + are included in Buildroot itself use a different mechanism: all + files of the form *.patch present in the package directory inside + Buildroot will be applied to the package after extraction (see + patching a package). Finally, patches listed in the LIBFOO_PATCH + variable are applied before the patches stored in the Buildroot + package directory. + * LIBFOO_SITE provides the location of the package, which can be a + URL or a local filesystem path. HTTP, FTP and SCP are supported + URL types for retrieving package tarballs. In these cases don’t + include a trailing slash: it will be added by Buildroot between + the directory and the filename as appropriate. Git, Subversion, + Mercurial, and Bazaar are supported URL types for retrieving + packages directly from source code management systems. There is a + helper function to make it easier to download source tarballs + from GitHub (refer to Section 18.25.4, “How to add a package from + GitHub” for details). A filesystem path may be used to specify + either a tarball or a directory containing the package source + code. See LIBFOO_SITE_METHOD below for more details on how + retrieval works. Note that SCP URLs should be of the form scp:// + [user@]host:filepath, and that filepath is relative to the user’s + home directory, so you may want to prepend the path with a slash + for absolute paths: scp://[user@]host:/absolutepath. The same + goes for SFTP URLs. If HOST_LIBFOO_SITE is not specified, it + defaults to LIBFOO_SITE. Examples: LIBFOO_SITE=http:// + www.libfoosoftware.org/libfoo LIBFOO_SITE=http://svn.xiph.org/ + trunk/Tremor LIBFOO_SITE=/opt/software/libfoo.tar.gz LIBFOO_SITE= + $(TOPDIR)/../src/libfoo + * LIBFOO_DL_OPTS is a space-separated list of additional options to + pass to the downloader. Useful for retrieving documents with + server-side checking for user logins and passwords, or to use a + proxy. All download methods valid for LIBFOO_SITE_METHOD are + supported; valid options depend on the download method (consult + the man page for the respective download utilities). + * LIBFOO_EXTRA_DOWNLOADS is a space-separated list of additional + files that Buildroot should download. If an entry contains :// + then Buildroot will assume it is a complete URL and will download + the file using this URL. Otherwise, Buildroot will assume the + file to be downloaded is located at LIBFOO_SITE. Buildroot will + not do anything with those additional files, except download + them: it will be up to the package recipe to use them from $ + (LIBFOO_DL_DIR). + * LIBFOO_SITE_METHOD determines the method used to fetch or copy + the package source code. In many cases, Buildroot guesses the + method from the contents of LIBFOO_SITE and setting + LIBFOO_SITE_METHOD is unnecessary. When HOST_LIBFOO_SITE_METHOD + is not specified, it defaults to the value of LIBFOO_SITE_METHOD. + The possible values of LIBFOO_SITE_METHOD are: + + + wget for normal FTP/HTTP downloads of tarballs. Used by + default when LIBFOO_SITE begins with http://, https:// or + ftp://. + + scp for downloads of tarballs over SSH with scp. Used by + default when LIBFOO_SITE begins with scp://. + + sftp for downloads of tarballs over SSH with sftp. Used by + default when LIBFOO_SITE begins with sftp://. + + svn for retrieving source code from a Subversion repository. + Used by default when LIBFOO_SITE begins with svn://. When a + http:// Subversion repository URL is specified in + LIBFOO_SITE, one must specify LIBFOO_SITE_METHOD=svn. + Buildroot performs a checkout which is preserved as a tarball + in the download cache; subsequent builds use the tarball + instead of performing another checkout. + + cvs for retrieving source code from a CVS repository. Used by + default when LIBFOO_SITE begins with cvs://. The downloaded + source code is cached as with the svn method. Anonymous + pserver mode is assumed otherwise explicitly defined on + LIBFOO_SITE. Both LIBFOO_SITE=cvs://libfoo.net:/cvsroot/ + libfoo and LIBFOO_SITE=cvs://:ext:libfoo.net:/cvsroot/libfoo + are accepted, on the former anonymous pserver access mode is + assumed. LIBFOO_SITE must contain the source URL as well as + the remote repository directory. The module is the package + name. LIBFOO_VERSION is mandatory and must be a tag, a + branch, or a date (e.g. "2014-10-20", "2014-10-20 13:45", + "2014-10-20 13:45+01" see "man cvs" for further details). + + git for retrieving source code from a Git repository. Used by + default when LIBFOO_SITE begins with git://. The downloaded + source code is cached as with the svn method. + + hg for retrieving source code from a Mercurial repository. + One must specify LIBFOO_SITE_METHOD=hg when LIBFOO_SITE + contains a Mercurial repository URL. The downloaded source + code is cached as with the svn method. + + bzr for retrieving source code from a Bazaar repository. Used + by default when LIBFOO_SITE begins with bzr://. The + downloaded source code is cached as with the svn method. + + file for a local tarball. One should use this when + LIBFOO_SITE specifies a package tarball as a local filename. + Useful for software that isn’t available publicly or in + version control. + + local for a local source code directory. One should use this + when LIBFOO_SITE specifies a local directory path containing + the package source code. Buildroot copies the contents of the + source directory into the package’s build directory. Note + that for local packages, no patches are applied. If you need + to still patch the source code, use LIBFOO_POST_RSYNC_HOOKS, + see Section 18.23.1, “Using the POST_RSYNC hook”. + * LIBFOO_GIT_SUBMODULES can be set to YES to create an archive with + the git submodules in the repository. This is only available for + packages downloaded with git (i.e. when LIBFOO_SITE_METHOD=git). + Note that we try not to use such git submodules when they contain + bundled libraries, in which case we prefer to use those libraries + from their own package. + * LIBFOO_GIT_LFS should be set to YES if the Git repository uses + Git LFS to store large files out of band. This is only available + for packages downloaded with git (i.e. when LIBFOO_SITE_METHOD= + git). + * LIBFOO_SVN_EXTERNALS can be set to YES to create an archive with + the svn external references. This is only available for packages + downloaded with subversion. + * LIBFOO_STRIP_COMPONENTS is the number of leading components + (directories) that tar must strip from file names on extraction. + The tarball for most packages has one leading component named " + -", thus Buildroot passes + --strip-components=1 to tar to remove it. For non-standard + packages that don’t have this component, or that have more than + one leading component to strip, set this variable with the value + to be passed to tar. Default: 1. + * LIBFOO_EXCLUDES is a space-separated list of patterns to exclude + when extracting the archive. Each item from that list is passed + as a tar’s --exclude option. By default, empty. + * LIBFOO_DEPENDENCIES lists the dependencies (in terms of package + name) that are required for the current target package to + compile. These dependencies are guaranteed to be compiled and + installed before the configuration of the current package starts. + However, modifications to configuration of these dependencies + will not force a rebuild of the current package. In a similar + way, HOST_LIBFOO_DEPENDENCIES lists the dependencies for the + current host package. + * LIBFOO_EXTRACT_DEPENDENCIES lists the dependencies (in terms of + package name) that are required for the current target package to + be extracted. These dependencies are guaranteed to be compiled + and installed before the extract step of the current package + starts. This is only used internally by the package + infrastructure, and should typically not be used directly by + packages. + * LIBFOO_PATCH_DEPENDENCIES lists the dependencies (in terms of + package name) that are required for the current package to be + patched. These dependencies are guaranteed to be extracted and + patched (but not necessarily built) before the current package is + patched. In a similar way, HOST_LIBFOO_PATCH_DEPENDENCIES lists + the dependencies for the current host package. This is seldom + used; usually, LIBFOO_DEPENDENCIES is what you really want to + use. + * LIBFOO_PROVIDES lists all the virtual packages libfoo is an + implementation of. See Section 18.12, “Infrastructure for virtual + packages”. + * LIBFOO_INSTALL_STAGING can be set to YES or NO (default). If set + to YES, then the commands in the LIBFOO_INSTALL_STAGING_CMDS + variables are executed to install the package into the staging + directory. + * LIBFOO_INSTALL_TARGET can be set to YES (default) or NO. If set + to YES, then the commands in the LIBFOO_INSTALL_TARGET_CMDS + variables are executed to install the package into the target + directory. + * LIBFOO_INSTALL_IMAGES can be set to YES or NO (default). If set + to YES, then the commands in the LIBFOO_INSTALL_IMAGES_CMDS + variable are executed to install the package into the images + directory. + * LIBFOO_CONFIG_SCRIPTS lists the names of the files in $ + (STAGING_DIR)/usr/bin that need some special fixing to make them + cross-compiling friendly. Multiple file names separated by space + can be given and all are relative to $(STAGING_DIR)/usr/bin. The + files listed in LIBFOO_CONFIG_SCRIPTS are also removed from $ + (TARGET_DIR)/usr/bin since they are not needed on the target. + * LIBFOO_DEVICES lists the device files to be created by Buildroot + when using the static device table. The syntax to use is the + makedevs one. You can find some documentation for this syntax in + the Chapter 25, Makedev syntax documentation. This variable is + optional. + * LIBFOO_PERMISSIONS lists the changes of permissions to be done at + the end of the build process. The syntax is once again the + makedevs one. You can find some documentation for this syntax in + the Chapter 25, Makedev syntax documentation. This variable is + optional. + * LIBFOO_USERS lists the users to create for this package, if it + installs a program you want to run as a specific user (e.g. as a + daemon, or as a cron-job). The syntax is similar in spirit to the + makedevs one, and is described in the Chapter 26, Makeusers + syntax documentation. This variable is optional. + * LIBFOO_LICENSE defines the license (or licenses) under which the + package is released. This name will appear in the manifest file + produced by make legal-info. If the license appears in the SPDX + License List [https://spdx.org/licenses/], use the SPDX short + identifier to make the manifest file uniform. Otherwise, describe + the license in a precise and concise way, avoiding ambiguous + names such as BSD which actually name a family of licenses. This + variable is optional. If it is not defined, unknown will appear + in the license field of the manifest file for this package. The + expected format for this variable must comply with the following + rules: + + + If different parts of the package are released under + different licenses, then comma separate licenses (e.g. + LIBFOO_LICENSE = GPL-2.0+, LGPL-2.1+). If there is clear + distinction between which component is licensed under what + license, then annotate the license with that component, + between parenthesis (e.g. LIBFOO_LICENSE = GPL-2.0+ + (programs), LGPL-2.1+ (libraries)). + + If some licenses are conditioned on a sub-option being + enabled, append the conditional licenses with a comma (e.g.: + FOO_LICENSE += , GPL-2.0+ (programs)); the infrastructure + will internally remove the space before the comma. + + If the package is dual licensed, then separate licenses with + the or keyword (e.g. LIBFOO_LICENSE = AFL-2.1 or GPL-2.0+). + * LIBFOO_LICENSE_FILES is a space-separated list of files in the + package tarball that contain the license(s) under which the + package is released. make legal-info copies all of these files in + the legal-info directory. See Chapter 13, Legal notice and + licensing for more information. This variable is optional. If it + is not defined, a warning will be produced to let you know, and + not saved will appear in the license files field of the manifest + file for this package. + * LIBFOO_ACTUAL_SOURCE_TARBALL only applies to packages whose + LIBFOO_SITE / LIBFOO_SOURCE pair points to an archive that does + not actually contain source code, but binary code. This a very + uncommon case, only known to apply to external toolchains which + come already compiled, although theoretically it might apply to + other packages. In such cases a separate tarball is usually + available with the actual source code. Set + LIBFOO_ACTUAL_SOURCE_TARBALL to the name of the actual source + code archive and Buildroot will download it and use it when you + run make legal-info to collect legally-relevant material. Note + this file will not be downloaded during regular builds nor by + make source. + * LIBFOO_ACTUAL_SOURCE_SITE provides the location of the actual + source tarball. The default value is LIBFOO_SITE, so you don’t + need to set this variable if the binary and source archives are + hosted on the same directory. If LIBFOO_ACTUAL_SOURCE_TARBALL is + not set, it doesn’t make sense to define + LIBFOO_ACTUAL_SOURCE_SITE. + * LIBFOO_REDISTRIBUTE can be set to YES (default) or NO to indicate + if the package source code is allowed to be redistributed. Set it + to NO for non-opensource packages: Buildroot will not save the + source code for this package when collecting the legal-info. + * LIBFOO_FLAT_STACKSIZE defines the stack size of an application + built into the FLAT binary format. The application stack size on + the NOMMU architecture processors can’t be enlarged at run time. + The default stack size for the FLAT binary format is only 4k + bytes. If the application consumes more stack, append the + required number here. + * LIBFOO_BIN_ARCH_EXCLUDE is a space-separated list of paths + (relative to the target directory) to ignore when checking that + the package installs correctly cross-compiled binaries. You + seldom need to set this variable, unless the package installs + binary blobs outside the default locations, /lib/firmware, /usr/ + lib/firmware, /lib/modules, /usr/lib/modules, and /usr/share, + which are automatically excluded. + * LIBFOO_IGNORE_CVES is a space-separated list of CVEs that tells + Buildroot CVE tracking tools which CVEs should be ignored for + this package. This is typically used when the CVE is fixed by a + patch in the package, or when the CVE for some reason does not + affect the Buildroot package. A Makefile comment must always + precede the addition of a CVE to this variable. Example: + + # 0001-fix-cve-2020-12345.patch + LIBFOO_IGNORE_CVES += CVE-2020-12345 + # only when built with libbaz, which Buildroot doesn't support + LIBFOO_IGNORE_CVES += CVE-2020-54321 + + * LIBFOO_CPE_ID_* variables is a set of variables that allows the + package to define its CPE identifier [https://nvd.nist.gov/ + products/cpe]. The available variables are: + + + LIBFOO_CPE_ID_VALID, if set to YES, specifies that the + default values for each of the following variables is + appropriate, and generates a valid CPE ID. + + LIBFOO_CPE_ID_PREFIX, specifies the prefix of the CPE + identifier, i.e the first three fields. When not defined, the + default value is cpe:2.3:a. + + LIBFOO_CPE_ID_VENDOR, specifies the vendor part of the CPE + identifier. When not defined, the default value is + _project. + + LIBFOO_CPE_ID_PRODUCT, specifies the product part of the CPE + identifier. When not defined, the default value is . + + LIBFOO_CPE_ID_VERSION, specifies the version part of the CPE + identifier. When not defined the default value is $ + (LIBFOO_VERSION). + + LIBFOO_CPE_ID_UPDATE specifies the update part of the CPE + identifier. When not defined the default value is *. + + If any of those variables is defined, then the generic package + infrastructure assumes the package provides valid CPE + information. In this case, the generic package infrastructure + will define LIBFOO_CPE_ID. + + For a host package, if its LIBFOO_CPE_ID_* variables are not + defined, it inherits the value of those variables from the + corresponding target package. + +The recommended way to define these variables is to use the following +syntax: + +LIBFOO_VERSION = 2.32 + +Now, the variables that define what should be performed at the +different steps of the build process. + + * LIBFOO_EXTRACT_CMDS lists the actions to be performed to extract + the package. This is generally not needed as tarballs are + automatically handled by Buildroot. However, if the package uses + a non-standard archive format, such as a ZIP or RAR file, or has + a tarball with a non-standard organization, this variable allows + to override the package infrastructure default behavior. + * LIBFOO_CONFIGURE_CMDS lists the actions to be performed to + configure the package before its compilation. + * LIBFOO_BUILD_CMDS lists the actions to be performed to compile + the package. + * HOST_LIBFOO_INSTALL_CMDS lists the actions to be performed to + install the package, when the package is a host package. The + package must install its files to the directory given by $ + (HOST_DIR). All files, including development files such as + headers should be installed, since other packages might be + compiled on top of this package. + * LIBFOO_INSTALL_TARGET_CMDS lists the actions to be performed to + install the package to the target directory, when the package is + a target package. The package must install its files to the + directory given by $(TARGET_DIR). Only the files required for + execution of the package have to be installed. Header files, + static libraries and documentation will be removed again when the + target filesystem is finalized. + * LIBFOO_INSTALL_STAGING_CMDS lists the actions to be performed to + install the package to the staging directory, when the package is + a target package. The package must install its files to the + directory given by $(STAGING_DIR). All development files should + be installed, since they might be needed to compile other + packages. + * LIBFOO_INSTALL_IMAGES_CMDS lists the actions to be performed to + install the package to the images directory, when the package is + a target package. The package must install its files to the + directory given by $(BINARIES_DIR). Only files that are binary + images (aka images) that do not belong in the TARGET_DIR but are + necessary for booting the board should be placed here. For + example, a package should utilize this step if it has binaries + which would be similar to the kernel image, bootloader or root + filesystem images. + * LIBFOO_INSTALL_INIT_SYSV, LIBFOO_INSTALL_INIT_OPENRC and + LIBFOO_INSTALL_INIT_SYSTEMD list the actions to install init + scripts either for the systemV-like init systems (busybox, + sysvinit, etc.), openrc or for the systemd units. These commands + will be run only when the relevant init system is installed (i.e. + if systemd is selected as the init system in the configuration, + only LIBFOO_INSTALL_INIT_SYSTEMD will be run). The only exception + is when openrc is chosen as init system and + LIBFOO_INSTALL_INIT_OPENRC has not been set, in such situation + LIBFOO_INSTALL_INIT_SYSV will be called, since openrc supports + sysv init scripts. When systemd is used as the init system, + buildroot will automatically enable all services using the + systemctl preset-all command in the final phase of image + building. You can add preset files to prevent a particular unit + from being automatically enabled by buildroot. + * LIBFOO_HELP_CMDS lists the actions to print the package help, + which is included to the main make help output. These commands + can print anything in any format. This is seldom used, as + packages rarely have custom rules. Do not use this variable, + unless you really know that you need to print help. + * LIBFOO_LINUX_CONFIG_FIXUPS lists the Linux kernel configuration + options that are needed to build and use this package, and + without which the package is fundamentally broken. This shall be + a set of calls to one of the kconfig tweaking option: + KCONFIG_ENABLE_OPT, KCONFIG_DISABLE_OPT, or KCONFIG_SET_OPT. This + is seldom used, as package usually have no strict requirements on + the kernel options. + +The preferred way to define these variables is: + +define LIBFOO_CONFIGURE_CMDS + action 1 + action 2 + action 3 +endef + +In the action definitions, you can use the following variables: + + * $(LIBFOO_PKGDIR) contains the path to the directory containing + the libfoo.mk and Config.in files. This variable is useful when + it is necessary to install a file bundled in Buildroot, like a + runtime configuration file, a splashscreen image… + * $(@D), which contains the directory in which the package source + code has been uncompressed. + * $(LIBFOO_DL_DIR) contains the path to the directory where all the + downloads made by Buildroot for libfoo are stored in. + * $(TARGET_CC), $(TARGET_LD), etc. to get the target + cross-compilation utilities + * $(TARGET_CROSS) to get the cross-compilation toolchain prefix + * Of course the $(HOST_DIR), $(STAGING_DIR) and $(TARGET_DIR) + variables to install the packages properly. Those variables point + to the global host, staging and target directories, unless + per-package directory support is used, in which case they point + to the current package host, staging and target directories. In + both cases, it doesn’t make any difference from the package point + of view: it should simply use HOST_DIR, STAGING_DIR and + TARGET_DIR. See Section 8.12, “Top-level parallel build” for more + details about per-package directory support. + +Finally, you can also use hooks. See Section 18.23, “Hooks available +in the various build steps” for more information. + +18.7. Infrastructure for autotools-based packages + +18.7.1. autotools-package tutorial + +First, let’s see how to write a .mk file for an autotools-based +package, with an example : + +01: ################################################################################ +02: # +03: # libfoo +04: # +05: ################################################################################ +06: +07: LIBFOO_VERSION = 1.0 +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz +09: LIBFOO_SITE = http://www.foosoftware.org/download +10: LIBFOO_INSTALL_STAGING = YES +11: LIBFOO_INSTALL_TARGET = NO +12: LIBFOO_CONF_OPTS = --disable-shared +13: LIBFOO_DEPENDENCIES = libglib2 host-pkgconf +14: +15: $(eval $(autotools-package)) + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10, we tell Buildroot to install the package to the staging +directory. The staging directory, located in output/staging/ is the +directory where all the packages are installed, including their +development files, etc. By default, packages are not installed to the +staging directory, since usually, only libraries need to be installed +in the staging directory: their development files are needed to +compile other libraries or applications depending on them. Also by +default, when staging installation is enabled, packages are installed +in this location using the make install command. + +On line 11, we tell Buildroot to not install the package to the +target directory. This directory contains what will become the root +filesystem running on the target. For purely static libraries, it is +not necessary to install them in the target directory because they +will not be used at runtime. By default, target installation is +enabled; setting this variable to NO is almost never needed. Also by +default, packages are installed in this location using the make +install command. + +On line 12, we tell Buildroot to pass a custom configure option, that +will be passed to the ./configure script before configuring and +building the package. + +On line 13, we declare our dependencies, so that they are built +before the build process of our package starts. + +Finally, on line line 15, we invoke the autotools-package macro that +generates all the Makefile rules that actually allows the package to +be built. + +18.7.2. autotools-package reference + +The main macro of the autotools package infrastructure is +autotools-package. It is similar to the generic-package macro. The +ability to have target and host packages is also available, with the +host-autotools-package macro. + +Just like the generic infrastructure, the autotools infrastructure +works by defining a number of variables before calling the +autotools-package macro. + +All the package metadata information variables that exist in the +generic package infrastructure also exist in the autotools +infrastructure. + +A few additional variables, specific to the autotools infrastructure, +can also be defined. Many of them are only useful in very specific +cases, typical packages will therefore only use a few of them. + + * LIBFOO_SUBDIR may contain the name of a subdirectory inside the + package that contains the configure script. This is useful, if + for example, the main configure script is not at the root of the + tree extracted by the tarball. If HOST_LIBFOO_SUBDIR is not + specified, it defaults to LIBFOO_SUBDIR. + * LIBFOO_CONF_ENV, to specify additional environment variables to + pass to the configure script. By default, empty. + * LIBFOO_CONF_OPTS, to specify additional configure options to pass + to the configure script. By default, empty. + * LIBFOO_MAKE, to specify an alternate make command. This is + typically useful when parallel make is enabled in the + configuration (using BR2_JLEVEL) but that this feature should be + disabled for the given package, for one reason or another. By + default, set to $(MAKE). If parallel building is not supported by + the package, then it should be set to LIBFOO_MAKE=$(MAKE1). + * LIBFOO_MAKE_ENV, to specify additional environment variables to + pass to make in the build step. These are passed before the make + command. By default, empty. + * LIBFOO_MAKE_OPTS, to specify additional variables to pass to make + in the build step. These are passed after the make command. By + default, empty. + * LIBFOO_AUTORECONF, tells whether the package should be + autoreconfigured or not (i.e. if the configure script and + Makefile.in files should be re-generated by re-running autoconf, + automake, libtool, etc.). Valid values are YES and NO. By + default, the value is NO + * LIBFOO_AUTORECONF_ENV, to specify additional environment + variables to pass to the autoreconf program if LIBFOO_AUTORECONF= + YES. These are passed in the environment of the autoreconf + command. By default, empty. + * LIBFOO_AUTORECONF_OPTS to specify additional options passed to + the autoreconf program if LIBFOO_AUTORECONF=YES. By default, + empty. + * LIBFOO_AUTOPOINT, tells whether the package should be autopointed + or not (i.e. if the package needs I18N infrastructure copied in.) + Only valid when LIBFOO_AUTORECONF=YES. Valid values are YES and + NO. The default is NO. + * LIBFOO_LIBTOOL_PATCH tells whether the Buildroot patch to fix + libtool cross-compilation issues should be applied or not. Valid + values are YES and NO. By default, the value is YES + * LIBFOO_INSTALL_STAGING_OPTS contains the make options used to + install the package to the staging directory. By default, the + value is DESTDIR=$(STAGING_DIR) install, which is correct for + most autotools packages. It is still possible to override it. + * LIBFOO_INSTALL_TARGET_OPTS contains the make options used to + install the package to the target directory. By default, the + value is DESTDIR=$(TARGET_DIR) install. The default value is + correct for most autotools packages, but it is still possible to + override it if needed. + +With the autotools infrastructure, all the steps required to build +and install the packages are already defined, and they generally work +well for most autotools-based packages. However, when required, it is +still possible to customize what is done in any particular step: + + * By adding a post-operation hook (after extract, patch, configure, + build or install). See Section 18.23, “Hooks available in the + various build steps” for details. + * By overriding one of the steps. For example, even if the + autotools infrastructure is used, if the package .mk file defines + its own LIBFOO_CONFIGURE_CMDS variable, it will be used instead + of the default autotools one. However, using this method should + be restricted to very specific cases. Do not use it in the + general case. + +18.8. Infrastructure for CMake-based packages + +18.8.1. cmake-package tutorial + +First, let’s see how to write a .mk file for a CMake-based package, +with an example : + +01: ################################################################################ +02: # +03: # libfoo +04: # +05: ################################################################################ +06: +07: LIBFOO_VERSION = 1.0 +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz +09: LIBFOO_SITE = http://www.foosoftware.org/download +10: LIBFOO_INSTALL_STAGING = YES +11: LIBFOO_INSTALL_TARGET = NO +12: LIBFOO_CONF_OPTS = -DBUILD_DEMOS=ON +13: LIBFOO_DEPENDENCIES = libglib2 host-pkgconf +14: +15: $(eval $(cmake-package)) + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10, we tell Buildroot to install the package to the staging +directory. The staging directory, located in output/staging/ is the +directory where all the packages are installed, including their +development files, etc. By default, packages are not installed to the +staging directory, since usually, only libraries need to be installed +in the staging directory: their development files are needed to +compile other libraries or applications depending on them. Also by +default, when staging installation is enabled, packages are installed +in this location using the make install command. + +On line 11, we tell Buildroot to not install the package to the +target directory. This directory contains what will become the root +filesystem running on the target. For purely static libraries, it is +not necessary to install them in the target directory because they +will not be used at runtime. By default, target installation is +enabled; setting this variable to NO is almost never needed. Also by +default, packages are installed in this location using the make +install command. + +On line 12, we tell Buildroot to pass custom options to CMake when it +is configuring the package. + +On line 13, we declare our dependencies, so that they are built +before the build process of our package starts. + +Finally, on line line 15, we invoke the cmake-package macro that +generates all the Makefile rules that actually allows the package to +be built. + +18.8.2. cmake-package reference + +The main macro of the CMake package infrastructure is cmake-package. +It is similar to the generic-package macro. The ability to have +target and host packages is also available, with the +host-cmake-package macro. + +Just like the generic infrastructure, the CMake infrastructure works +by defining a number of variables before calling the cmake-package +macro. + +All the package metadata information variables that exist in the +generic package infrastructure also exist in the CMake +infrastructure. + +A few additional variables, specific to the CMake infrastructure, can +also be defined. Many of them are only useful in very specific cases, +typical packages will therefore only use a few of them. + + * LIBFOO_SUBDIR may contain the name of a subdirectory inside the + package that contains the main CMakeLists.txt file. This is + useful, if for example, the main CMakeLists.txt file is not at + the root of the tree extracted by the tarball. If + HOST_LIBFOO_SUBDIR is not specified, it defaults to + LIBFOO_SUBDIR. + * LIBFOO_CMAKE_BACKEND specifies the cmake backend to use, one of + make (to use the GNU Makefiles generator, the default) or ninja + (to use the Ninja generator). + * LIBFOO_CONF_ENV, to specify additional environment variables to + pass to CMake. By default, empty. + * LIBFOO_CONF_OPTS, to specify additional configure options to pass + to CMake. By default, empty. A number of common CMake options are + set by the cmake-package infrastructure; so it is normally not + necessary to set them in the package’s *.mk file unless you want + to override them: + + + CMAKE_BUILD_TYPE is driven by BR2_ENABLE_RUNTIME_DEBUG; + + CMAKE_INSTALL_PREFIX; + + BUILD_SHARED_LIBS is driven by BR2_STATIC_LIBS; + + BUILD_DOC, BUILD_DOCS are disabled; + + BUILD_EXAMPLE, BUILD_EXAMPLES are disabled; + + BUILD_TEST, BUILD_TESTS, BUILD_TESTING are disabled. + * LIBFOO_BUILD_ENV and LIBFOO_BUILD_OPTS to specify additional + environment variables, or command line options, to pass to the + backend at build time. + * LIBFOO_SUPPORTS_IN_SOURCE_BUILD = NO should be set when the + package cannot be built inside the source tree but needs a + separate build directory. + * LIBFOO_MAKE, to specify an alternate make command. This is + typically useful when parallel make is enabled in the + configuration (using BR2_JLEVEL) but that this feature should be + disabled for the given package, for one reason or another. By + default, set to $(MAKE). If parallel building is not supported by + the package, then it should be set to LIBFOO_MAKE=$(MAKE1). + * LIBFOO_MAKE_ENV, to specify additional environment variables to + pass to make in the build step. These are passed before the make + command. By default, empty. + * LIBFOO_MAKE_OPTS, to specify additional variables to pass to make + in the build step. These are passed after the make command. By + default, empty. + * LIBFOO_INSTALL_OPTS contains the make options used to install the + package to the host directory. By default, the value is install, + which is correct for most CMake packages. It is still possible to + override it. + * LIBFOO_INSTALL_STAGING_OPTS contains the make options used to + install the package to the staging directory. By default, the + value is DESTDIR=$(STAGING_DIR) install/fast, which is correct + for most CMake packages. It is still possible to override it. + * LIBFOO_INSTALL_TARGET_OPTS contains the make options used to + install the package to the target directory. By default, the + value is DESTDIR=$(TARGET_DIR) install/fast. The default value is + correct for most CMake packages, but it is still possible to + override it if needed. + +With the CMake infrastructure, all the steps required to build and +install the packages are already defined, and they generally work +well for most CMake-based packages. However, when required, it is +still possible to customize what is done in any particular step: + + * By adding a post-operation hook (after extract, patch, configure, + build or install). See Section 18.23, “Hooks available in the + various build steps” for details. + * By overriding one of the steps. For example, even if the CMake + infrastructure is used, if the package .mk file defines its own + LIBFOO_CONFIGURE_CMDS variable, it will be used instead of the + default CMake one. However, using this method should be + restricted to very specific cases. Do not use it in the general + case. + +18.9. Infrastructure for Python packages + +This infrastructure applies to Python packages that use the standard +Python setuptools, pep517, flit or maturin mechanisms as their build +system, generally recognizable by the usage of a setup.py script or +pyproject.toml file. + +18.9.1. python-package tutorial + +First, let’s see how to write a .mk file for a Python package, with +an example : + +01: ################################################################################ +02: # +03: # python-foo +04: # +05: ################################################################################ +06: +07: PYTHON_FOO_VERSION = 1.0 +08: PYTHON_FOO_SOURCE = python-foo-$(PYTHON_FOO_VERSION).tar.xz +09: PYTHON_FOO_SITE = http://www.foosoftware.org/download +10: PYTHON_FOO_LICENSE = BSD-3-Clause +11: PYTHON_FOO_LICENSE_FILES = LICENSE +12: PYTHON_FOO_ENV = SOME_VAR=1 +13: PYTHON_FOO_DEPENDENCIES = libmad +14: PYTHON_FOO_SETUP_TYPE = setuptools +15: +16: $(eval $(python-package)) + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10 and 11, we give licensing details about the package (its +license on line 10, and the file containing the license text on line +11). + +On line 12, we tell Buildroot to pass custom options to the Python +setup.py script when it is configuring the package. + +On line 13, we declare our dependencies, so that they are built +before the build process of our package starts. + +On line 14, we declare the specific Python build system being used. +In this case the setuptools Python build system is used. The five +supported ones are flit, pep517, setuptools, setuptools-rust and +maturin. + +Finally, on line 16, we invoke the python-package macro that +generates all the Makefile rules that actually allow the package to +be built. + +18.9.2. python-package reference + +As a policy, packages that merely provide Python modules should all +be named python- in Buildroot. Other packages that use the +Python build system, but are not Python modules, can freely choose +their name (existing examples in Buildroot are scons and supervisor). + +The main macro of the Python package infrastructure is +python-package. It is similar to the generic-package macro. It is +also possible to create Python host packages with the +host-python-package macro. + +Just like the generic infrastructure, the Python infrastructure works +by defining a number of variables before calling the python-package +or host-python-package macros. + +All the package metadata information variables that exist in the +generic package infrastructure also exist in the Python +infrastructure. + +Note that: + + * It is not necessary to add python or host-python in the + PYTHON_FOO_DEPENDENCIES variable of a package, since these basic + dependencies are automatically added as needed by the Python + package infrastructure. + * Similarly, it is not needed to add host-python-setuptools to + PYTHON_FOO_DEPENDENCIES for setuptools-based packages, since it’s + automatically added by the Python infrastructure as needed. + +One variable specific to the Python infrastructure is mandatory: + + * PYTHON_FOO_SETUP_TYPE, to define which Python build system is + used by the package. The five supported values are flit, pep517 + and setuptools, setuptools-rust and maturin. If you don’t know + which one is used in your package, look at the setup.py or + pyproject.toml file in your package source code, and see whether + it imports things from the flit module or the setuptools module. + If the package is using a pyproject.toml file without any + build-system requires and with a local in-tree backend-path one + should use pep517. + +A few additional variables, specific to the Python infrastructure, +can optionally be defined, depending on the package’s needs. Many of +them are only useful in very specific cases, typical packages will +therefore only use a few of them, or none. + + * PYTHON_FOO_SUBDIR may contain the name of a subdirectory inside + the package that contains the main setup.py or pyproject.toml + file. This is useful, if for example, the main setup.py or + pyproject.toml file is not at the root of the tree extracted by + the tarball. If HOST_PYTHON_FOO_SUBDIR is not specified, it + defaults to PYTHON_FOO_SUBDIR. + * PYTHON_FOO_ENV, to specify additional environment variables to + pass to the Python setup.py script (for setuptools packages) or + the support/scripts/pyinstaller.py script (for flit/pep517 + packages) for both the build and install steps. Note that the + infrastructure is automatically passing several standard + variables, defined in PKG_PYTHON_SETUPTOOLS_ENV (for setuptools + target packages), HOST_PKG_PYTHON_SETUPTOOLS_ENV (for setuptools + host packages), PKG_PYTHON_PEP517_ENV (for flit/pep517 target + packages) and HOST_PKG_PYTHON_PEP517_ENV (for flit/pep517 host + packages). + * PYTHON_FOO_BUILD_OPTS, to specify additional options to pass to + the Python setup.py script during the build step, this generally + only makes sense to use for setuptools based packages as flit/ + pep517 based packages do not pass these options to a setup.py + script but instead pass them to support/scripts/pyinstaller.py. + * PYTHON_FOO_INSTALL_TARGET_OPTS, PYTHON_FOO_INSTALL_STAGING_OPTS, + HOST_PYTHON_FOO_INSTALL_OPTS to specify additional options to + pass to the Python setup.py script (for setuptools packages) or + support/scripts/pyinstaller.py (for flit/pep517 packages) during + the target installation step, the staging installation step or + the host installation, respectively. + +With the Python infrastructure, all the steps required to build and +install the packages are already defined, and they generally work +well for most Python-based packages. However, when required, it is +still possible to customize what is done in any particular step: + + * By adding a post-operation hook (after extract, patch, configure, + build or install). See Section 18.23, “Hooks available in the + various build steps” for details. + * By overriding one of the steps. For example, even if the Python + infrastructure is used, if the package .mk file defines its own + PYTHON_FOO_BUILD_CMDS variable, it will be used instead of the + default Python one. However, using this method should be + restricted to very specific cases. Do not use it in the general + case. + +18.9.3. Generating a python-package from a PyPI repository + +If the Python package for which you would like to create a Buildroot +package is available on PyPI, you may want to use the scanpypi tool +located in utils/ to automate the process. + +You can find the list of existing PyPI packages here [https:// +pypi.python.org]. + +scanpypi requires Python’s setuptools package to be installed on your +host. + +When at the root of your buildroot directory just do : + +utils/scanpypi foo bar -o package + +This will generate packages python-foo and python-bar in the package +folder if they exist on https://pypi.python.org. + +Find the external python modules menu and insert your package inside. +Keep in mind that the items inside a menu should be in alphabetical +order. + +Please keep in mind that you’ll most likely have to manually check +the package for any mistakes as there are things that cannot be +guessed by the generator (e.g. dependencies on any of the python core +modules such as BR2_PACKAGE_PYTHON_ZLIB). Also, please take note that +the license and license files are guessed and must be checked. You +also need to manually add the package to the package/Config.in file. + +If your Buildroot package is not in the official Buildroot tree but +in a br2-external tree, use the -o flag as follows: + +utils/scanpypi foo bar -o other_package_dir + +This will generate packages python-foo and python-bar in the +other_package_directory instead of package. + +Option -h will list the available options: + +utils/scanpypi -h + +18.9.4. python-package CFFI backend + +C Foreign Function Interface for Python (CFFI) provides a convenient +and reliable way to call compiled C code from Python using interface +declarations written in C. Python packages relying on this backend +can be identified by the appearance of a cffi dependency in the +install_requires field of their setup.py file. + +Such a package should: + + * add python-cffi as a runtime dependency in order to install the + compiled C library wrapper on the target. This is achieved by + adding select BR2_PACKAGE_PYTHON_CFFI to the package Config.in. + +config BR2_PACKAGE_PYTHON_FOO + bool "python-foo" + select BR2_PACKAGE_PYTHON_CFFI # runtime + + * add host-python-cffi as a build-time dependency in order to + cross-compile the C wrapper. This is achieved by adding + host-python-cffi to the PYTHON_FOO_DEPENDENCIES variable. + +################################################################################ +# +# python-foo +# +################################################################################ + +... + +PYTHON_FOO_DEPENDENCIES = host-python-cffi + +$(eval $(python-package)) + +18.10. Infrastructure for LuaRocks-based packages + +18.10.1. luarocks-package tutorial + +First, let’s see how to write a .mk file for a LuaRocks-based +package, with an example : + +01: ################################################################################ +02: # +03: # lua-foo +04: # +05: ################################################################################ +06: +07: LUA_FOO_VERSION = 1.0.2-1 +08: LUA_FOO_NAME_UPSTREAM = foo +09: LUA_FOO_DEPENDENCIES = bar +10: +11: LUA_FOO_BUILD_OPTS += BAR_INCDIR=$(STAGING_DIR)/usr/include +12: LUA_FOO_BUILD_OPTS += BAR_LIBDIR=$(STAGING_DIR)/usr/lib +13: LUA_FOO_LICENSE = luaFoo license +14: LUA_FOO_LICENSE_FILES = $(LUA_FOO_SUBDIR)/COPYING +15: +16: $(eval $(luarocks-package)) + +On line 7, we declare the version of the package (the same as in the +rockspec, which is the concatenation of the upstream version and the +rockspec revision, separated by a hyphen -). + +On line 8, we declare that the package is called "foo" on LuaRocks. +In Buildroot, we give Lua-related packages a name that starts with +"lua", so the Buildroot name is different from the upstream name. +LUA_FOO_NAME_UPSTREAM makes the link between the two names. + +On line 9, we declare our dependencies against native libraries, so +that they are built before the build process of our package starts. + +On lines 11-12, we tell Buildroot to pass custom options to LuaRocks +when it is building the package. + +On lines 13-14, we specify the licensing terms for the package. + +Finally, on line 16, we invoke the luarocks-package macro that +generates all the Makefile rules that actually allows the package to +be built. + +Most of these details can be retrieved from the rock and rockspec. +So, this file and the Config.in file can be generated by running the +command luarocks buildroot foo lua-foo in the Buildroot directory. +This command runs a specific Buildroot addon of luarocks that will +automatically generate a Buildroot package. The result must still be +manually inspected and possibly modified. + + * The package/Config.in file has to be updated manually to include + the generated Config.in files. + +18.10.2. luarocks-package reference + +LuaRocks is a deployment and management system for Lua modules, and +supports various build.type: builtin, make and cmake. In the context +of Buildroot, the luarocks-package infrastructure only supports the +builtin mode. LuaRocks packages that use the make or cmake build +mechanisms should instead be packaged using the generic-package and +cmake-package infrastructures in Buildroot, respectively. + +The main macro of the LuaRocks package infrastructure is +luarocks-package: like generic-package it works by defining a number +of variables providing metadata information about the package, and +then calling the luarocks-package macro. + +Just like the generic infrastructure, the LuaRocks infrastructure +works by defining a number of variables before calling the +luarocks-package macro. + +All the package metadata information variables that exist in the +generic package infrastructure also exist in the LuaRocks +infrastructure. + +Two of them are populated by the LuaRocks infrastructure (for the +download step). If your package is not hosted on the LuaRocks mirror +$(BR2_LUAROCKS_MIRROR), you can override them: + + * LUA_FOO_SITE, which defaults to $(BR2_LUAROCKS_MIRROR) + * LUA_FOO_SOURCE, which defaults to $(lowercase + LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION).src.rock + +A few additional variables, specific to the LuaRocks infrastructure, +are also defined. They can be overridden in specific cases. + + * LUA_FOO_NAME_UPSTREAM, which defaults to lua-foo, i.e. the + Buildroot package name + * LUA_FOO_ROCKSPEC, which defaults to $(lowercase + LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION).rockspec + * LUA_FOO_SUBDIR, which defaults to $(LUA_FOO_NAME_UPSTREAM)-$ + (LUA_FOO_VERSION_WITHOUT_ROCKSPEC_REVISION) + * LUA_FOO_BUILD_OPTS contains additional build options for the + luarocks build call. + +18.11. Infrastructure for Perl/CPAN packages + +18.11.1. perl-package tutorial + +First, let’s see how to write a .mk file for a Perl/CPAN package, +with an example : + +01: ################################################################################ +02: # +03: # perl-foo-bar +04: # +05: ################################################################################ +06: +07: PERL_FOO_BAR_VERSION = 0.02 +08: PERL_FOO_BAR_SOURCE = Foo-Bar-$(PERL_FOO_BAR_VERSION).tar.gz +09: PERL_FOO_BAR_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MO/MONGER +10: PERL_FOO_BAR_DEPENDENCIES = perl-strictures +11: PERL_FOO_BAR_LICENSE = Artistic or GPL-1.0+ +12: PERL_FOO_BAR_LICENSE_FILES = LICENSE +13: PERL_FOO_BAR_DISTNAME = Foo-Bar +14: +15: $(eval $(perl-package)) + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball and the location +of the tarball on a CPAN server. Buildroot will automatically +download the tarball from this location. + +On line 10, we declare our dependencies, so that they are built +before the build process of our package starts. + +On line 11 and 12, we give licensing details about the package (its +license on line 11, and the file containing the license text on line +12). + +On line 13, the name of the distribution as needed by the script +utils/scancpan (in order to regenerate/upgrade these package files). + +Finally, on line 15, we invoke the perl-package macro that generates +all the Makefile rules that actually allow the package to be built. + +Most of these data can be retrieved from https://metacpan.org/. So, +this file and the Config.in can be generated by running the script +utils/scancpan Foo-Bar in the Buildroot directory (or in a +br2-external tree). This script creates a Config.in file and +foo-bar.mk file for the requested package, and also recursively for +all dependencies specified by CPAN. You should still manually edit +the result. In particular, the following things should be checked. + + * If the perl module links with a shared library that is provided + by another (non-perl) package, this dependency is not added + automatically. It has to be added manually to + PERL_FOO_BAR_DEPENDENCIES. + * The package/Config.in file has to be updated manually to include + the generated Config.in files. As a hint, the scancpan script + prints out the required source "…" statements, sorted + alphabetically. + +18.11.2. perl-package reference + +As a policy, packages that provide Perl/CPAN modules should all be +named perl- in Buildroot. + +This infrastructure handles various Perl build systems : +ExtUtils-MakeMaker (EUMM), Module-Build (MB) and Module-Build-Tiny. +Build.PL is preferred by default when a package provides a +Makefile.PL and a Build.PL. + +The main macro of the Perl/CPAN package infrastructure is +perl-package. It is similar to the generic-package macro. The ability +to have target and host packages is also available, with the +host-perl-package macro. + +Just like the generic infrastructure, the Perl/CPAN infrastructure +works by defining a number of variables before calling the +perl-package macro. + +All the package metadata information variables that exist in the +generic package infrastructure also exist in the Perl/CPAN +infrastructure. + +Note that setting PERL_FOO_INSTALL_STAGING to YES has no effect +unless a PERL_FOO_INSTALL_STAGING_CMDS variable is defined. The perl +infrastructure doesn’t define these commands since Perl modules +generally don’t need to be installed to the staging directory. + +A few additional variables, specific to the Perl/CPAN infrastructure, +can also be defined. Many of them are only useful in very specific +cases, typical packages will therefore only use a few of them. + + * PERL_FOO_PREFER_INSTALLER/HOST_PERL_FOO_PREFER_INSTALLER, + specifies the preferred installation method. Possible values are + EUMM (for Makefile.PL based installation using + ExtUtils-MakeMaker) and MB (for Build.PL based installation using + Module-Build). This variable is only used when the package + provides both installation methods. + * PERL_FOO_CONF_ENV/HOST_PERL_FOO_CONF_ENV, to specify additional + environment variables to pass to the perl Makefile.PL or perl + Build.PL. By default, empty. + * PERL_FOO_CONF_OPTS/HOST_PERL_FOO_CONF_OPTS, to specify additional + configure options to pass to the perl Makefile.PL or perl + Build.PL. By default, empty. + * PERL_FOO_BUILD_OPTS/HOST_PERL_FOO_BUILD_OPTS, to specify + additional options to pass to make pure_all or perl Build build + in the build step. By default, empty. + * PERL_FOO_INSTALL_TARGET_OPTS, to specify additional options to + pass to make pure_install or perl Build install in the install + step. By default, empty. + * HOST_PERL_FOO_INSTALL_OPTS, to specify additional options to pass + to make pure_install or perl Build install in the install step. + By default, empty. + +18.12. Infrastructure for virtual packages + +In Buildroot, a virtual package is a package whose functionalities +are provided by one or more packages, referred to as providers. The +virtual package management is an extensible mechanism allowing the +user to choose the provider used in the rootfs. + +For example, OpenGL ES is an API for 2D and 3D graphics on embedded +systems. The implementation of this API is different for the +Allwinner Tech Sunxi and the Texas Instruments OMAP35xx platforms. So +libgles will be a virtual package and sunxi-mali-utgard and ti-gfx +will be the providers. + +18.12.1. virtual-package tutorial + +In the following example, we will explain how to add a new virtual +package (something-virtual) and a provider for it (some-provider). + +First, let’s create the virtual package. + +18.12.2. Virtual package’s Config.in file + +The Config.in file of virtual package something-virtual should +contain: + +01: config BR2_PACKAGE_HAS_SOMETHING_VIRTUAL +02: bool +03: +04: config BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL +05: depends on BR2_PACKAGE_HAS_SOMETHING_VIRTUAL +06: string + +In this file, we declare two options, +BR2_PACKAGE_HAS_SOMETHING_VIRTUAL and +BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL, whose values will be used by +the providers. + +18.12.3. Virtual package’s .mk file + +The .mk for the virtual package should just evaluate the +virtual-package macro: + +01: ################################################################################ +02: # +03: # something-virtual +04: # +05: ################################################################################ +06: +07: $(eval $(virtual-package)) + +The ability to have target and host packages is also available, with +the host-virtual-package macro. + +18.12.4. Provider’s Config.in file + +When adding a package as a provider, only the Config.in file requires +some modifications. + +The Config.in file of the package some-provider, which provides the +functionalities of something-virtual, should contain: + +01: config BR2_PACKAGE_SOME_PROVIDER +02: bool "some-provider" +03: select BR2_PACKAGE_HAS_SOMETHING_VIRTUAL +04: help +05: This is a comment that explains what some-provider is. +06: +07: http://foosoftware.org/some-provider/ +08: +09: if BR2_PACKAGE_SOME_PROVIDER +10: config BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL +11: default "some-provider" +12: endif + +On line 3, we select BR2_PACKAGE_HAS_SOMETHING_VIRTUAL, and on line +11, we set the value of BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL to the +name of the provider, but only if it is selected. + +18.12.5. Provider’s .mk file + +The .mk file should also declare an additional variable +SOME_PROVIDER_PROVIDES to contain the names of all the virtual +packages it is an implementation of: + +01: SOME_PROVIDER_PROVIDES = something-virtual + +Of course, do not forget to add the proper build and runtime +dependencies for this package! + +18.12.6. Notes on depending on a virtual package + +When adding a package that requires a certain FEATURE provided by a +virtual package, you have to use depends on BR2_PACKAGE_HAS_FEATURE, +like so: + +config BR2_PACKAGE_HAS_FEATURE + bool + +config BR2_PACKAGE_FOO + bool "foo" + depends on BR2_PACKAGE_HAS_FEATURE + +18.12.7. Notes on depending on a specific provider + +If your package really requires a specific provider, then you’ll have +to make your package depends on this provider; you can not select a +provider. + +Let’s take an example with two providers for a FEATURE: + +config BR2_PACKAGE_HAS_FEATURE + bool + +config BR2_PACKAGE_FOO + bool "foo" + select BR2_PACKAGE_HAS_FEATURE + +config BR2_PACKAGE_BAR + bool "bar" + select BR2_PACKAGE_HAS_FEATURE + +And you are adding a package that needs FEATURE as provided by foo, +but not as provided by bar. + +If you were to use select BR2_PACKAGE_FOO, then the user would still +be able to select BR2_PACKAGE_BAR in the menuconfig. This would +create a configuration inconsistency, whereby two providers of the +same FEATURE would be enabled at once, one explicitly set by the +user, the other implicitly by your select. + +Instead, you have to use depends on BR2_PACKAGE_FOO, which avoids any +implicit configuration inconsistency. + +18.13. Infrastructure for packages using kconfig for configuration +files + +A popular way for a software package to handle user-specified +configuration is kconfig. Among others, it is used by the Linux +kernel, Busybox, and Buildroot itself. The presence of a .config file +and a menuconfig target are two well-known symptoms of kconfig being +used. + +Buildroot features an infrastructure for packages that use kconfig +for their configuration. This infrastructure provides the necessary +logic to expose the package’s menuconfig target as foo-menuconfig in +Buildroot, and to handle the copying back and forth of the +configuration file in a correct way. + +The main macro of the kconfig package infrastructure is +kconfig-package. It is similar to the generic-package macro. + +Just like the generic infrastructure, the kconfig infrastructure +works by defining a number of variables before calling the +kconfig-package macro. + +All the package metadata information variables that exist in the +generic package infrastructure also exist in the kconfig +infrastructure. + +In order to use the kconfig-package infrastructure for a Buildroot +package, the minimally required lines in the .mk file, in addition to +the variables required by the generic-package infrastructure, are: + +FOO_KCONFIG_FILE = reference-to-source-configuration-file + +$(eval $(kconfig-package)) + +This snippet creates the following make targets: + + * foo-menuconfig, which calls the package’s menuconfig target + * foo-update-config, which copies the configuration back to the + source configuration file. It is not possible to use this target + when fragment files are set. + * foo-update-defconfig, which copies the configuration back to the + source configuration file. The configuration file will only list + the options that differ from the default values. It is not + possible to use this target when fragment files are set. + * foo-diff-config, which outputs the differences between the + current configuration and the one defined in the Buildroot + configuration for this kconfig package. The output is useful to + identify the configuration changes that may have to be propagated + to configuration fragments for example. + +and ensures that the source configuration file is copied to the build +directory at the right moment. + +There are two options to specify a configuration file to use, either +FOO_KCONFIG_FILE (as in the example, above) or FOO_KCONFIG_DEFCONFIG. +It is mandatory to provide either, but not both: + + * FOO_KCONFIG_FILE specifies the path to a defconfig or full-config + file to be used to configure the package. + * FOO_KCONFIG_DEFCONFIG specifies the defconfig make rule to call + to configure the package. + +In addition to these minimally required lines, several optional +variables can be set to suit the needs of the package under +consideration: + + * FOO_KCONFIG_EDITORS: a space-separated list of kconfig editors to + support, for example menuconfig xconfig. By default, menuconfig. + * FOO_KCONFIG_FRAGMENT_FILES: a space-separated list of + configuration fragment files that are merged to the main + configuration file. Fragment files are typically used when there + is a desire to stay in sync with an upstream (def)config file, + with some minor modifications. + * FOO_KCONFIG_OPTS: extra options to pass when calling the kconfig + editors. This may need to include $(FOO_MAKE_OPTS), for example. + By default, empty. + * FOO_KCONFIG_FIXUP_CMDS: a list of shell commands needed to fixup + the configuration file after copying it or running a kconfig + editor. Such commands may be needed to ensure a configuration + consistent with other configuration of Buildroot, for example. By + default, empty. + * FOO_KCONFIG_DOTCONFIG: path (with filename) of the .config file, + relative to the package source tree. The default, .config, should + be well suited for all packages that use the standard kconfig + infrastructure as inherited from the Linux kernel; some packages + use a derivative of kconfig that use a different location. + * FOO_KCONFIG_DEPENDENCIES: the list of packages (most probably, + host packages) that need to be built before this package’s + kconfig is interpreted. Seldom used. By default, empty. + * FOO_KCONFIG_SUPPORTS_DEFCONFIG: whether the package’s kconfig + system supports using defconfig files; few packages do not. By + default, YES. + +18.14. Infrastructure for rebar-based packages + +18.14.1. rebar-package tutorial + +First, let’s see how to write a .mk file for a rebar-based package, +with an example : + +01: ################################################################################ +02: # +03: # erlang-foobar +04: # +05: ################################################################################ +06: +07: ERLANG_FOOBAR_VERSION = 1.0 +08: ERLANG_FOOBAR_SOURCE = erlang-foobar-$(ERLANG_FOOBAR_VERSION).tar.xz +09: ERLANG_FOOBAR_SITE = http://www.foosoftware.org/download +10: ERLANG_FOOBAR_DEPENDENCIES = host-libaaa libbbb +11: +12: $(eval $(rebar-package)) + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10, we declare our dependencies, so that they are built +before the build process of our package starts. + +Finally, on line 12, we invoke the rebar-package macro that generates +all the Makefile rules that actually allows the package to be built. + +18.14.2. rebar-package reference + +The main macro of the rebar package infrastructure is rebar-package. +It is similar to the generic-package macro. The ability to have host +packages is also available, with the host-rebar-package macro. + +Just like the generic infrastructure, the rebar infrastructure works +by defining a number of variables before calling the rebar-package +macro. + +All the package metadata information variables that exist in the +generic package infrastructure also exist in the rebar +infrastructure. + +A few additional variables, specific to the rebar infrastructure, can +also be defined. Many of them are only useful in very specific cases, +typical packages will therefore only use a few of them. + + * ERLANG_FOOBAR_USE_AUTOCONF, to specify that the package uses + autoconf at the configuration step. When a package sets this + variable to YES, the autotools infrastructure is used. + + Note. You can also use some of the variables from the autotools + infrastructure: ERLANG_FOOBAR_CONF_ENV, ERLANG_FOOBAR_CONF_OPTS, + ERLANG_FOOBAR_AUTORECONF, ERLANG_FOOBAR_AUTORECONF_ENV and + ERLANG_FOOBAR_AUTORECONF_OPTS. + + * ERLANG_FOOBAR_USE_BUNDLED_REBAR, to specify that the package has + a bundled version of rebar and that it shall be used. Valid + values are YES or NO (the default). + + Note. If the package bundles a rebar utility, but can use the + generic one that Buildroot provides, just say NO (i.e., do not + specify this variable). Only set if it is mandatory to use the + rebar utility bundled in this package. + + * ERLANG_FOOBAR_REBAR_ENV, to specify additional environment + variables to pass to the rebar utility. + * ERLANG_FOOBAR_KEEP_DEPENDENCIES, to keep the dependencies + described in the rebar.config file. Valid values are YES or NO + (the default). Unless this variable is set to YES, the rebar + infrastructure removes such dependencies in a post-patch hook to + ensure rebar does not download nor compile them. + +With the rebar infrastructure, all the steps required to build and +install the packages are already defined, and they generally work +well for most rebar-based packages. However, when required, it is +still possible to customize what is done in any particular step: + + * By adding a post-operation hook (after extract, patch, configure, + build or install). See Section 18.23, “Hooks available in the + various build steps” for details. + * By overriding one of the steps. For example, even if the rebar + infrastructure is used, if the package .mk file defines its own + ERLANG_FOOBAR_BUILD_CMDS variable, it will be used instead of the + default rebar one. However, using this method should be + restricted to very specific cases. Do not use it in the general + case. + +18.15. Infrastructure for Waf-based packages + +18.15.1. waf-package tutorial + +First, let’s see how to write a .mk file for a Waf-based package, +with an example : + +01: ################################################################################ +02: # +03: # libfoo +04: # +05: ################################################################################ +06: +07: LIBFOO_VERSION = 1.0 +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz +09: LIBFOO_SITE = http://www.foosoftware.org/download +10: LIBFOO_CONF_OPTS = --enable-bar --disable-baz +11: LIBFOO_DEPENDENCIES = bar +12: +13: $(eval $(waf-package)) + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10, we tell Buildroot what options to enable for libfoo. + +On line 11, we tell Buildroot the dependencies of libfoo. + +Finally, on line line 13, we invoke the waf-package macro that +generates all the Makefile rules that actually allows the package to +be built. + +18.15.2. waf-package reference + +The main macro of the Waf package infrastructure is waf-package. It +is similar to the generic-package macro. + +Just like the generic infrastructure, the Waf infrastructure works by +defining a number of variables before calling the waf-package macro. + +All the package metadata information variables that exist in the +generic package infrastructure also exist in the Waf infrastructure. + +A few additional variables, specific to the Waf infrastructure, can +also be defined. + + * LIBFOO_SUBDIR may contain the name of a subdirectory inside the + package that contains the main wscript file. This is useful, if + for example, the main wscript file is not at the root of the tree + extracted by the tarball. If HOST_LIBFOO_SUBDIR is not specified, + it defaults to LIBFOO_SUBDIR. + * LIBFOO_NEEDS_EXTERNAL_WAF can be set to YES or NO to tell + Buildroot to use the bundled waf executable. If set to NO, the + default, then Buildroot will use the waf executable provided in + the package source tree; if set to YES, then Buildroot will + download, install waf as a host tool and use it to build the + package. + * LIBFOO_WAF_OPTS, to specify additional options to pass to the waf + script at every step of the package build process: configure, + build and installation. By default, empty. + * LIBFOO_CONF_OPTS, to specify additional options to pass to the + waf script for the configuration step. By default, empty. + * LIBFOO_BUILD_OPTS, to specify additional options to pass to the + waf script during the build step. By default, empty. + * LIBFOO_INSTALL_STAGING_OPTS, to specify additional options to + pass to the waf script during the staging installation step. By + default, empty. + * LIBFOO_INSTALL_TARGET_OPTS, to specify additional options to pass + to the waf script during the target installation step. By + default, empty. + +18.16. Infrastructure for Meson-based packages + +18.16.1. meson-package tutorial + +Meson [http://mesonbuild.com] is an open source build system meant to +be both extremely fast, and, even more importantly, as user friendly +as possible. It uses Ninja [https://ninja-build.org] as a companion +tool to perform the actual build operations. + +Let’s see how to write a .mk file for a Meson-based package, with an +example: + +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: FOO_VERSION = 1.0 +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.gz +09: FOO_SITE = http://www.foosoftware.org/download +10: FOO_LICENSE = GPL-3.0+ +11: FOO_LICENSE_FILES = COPYING +12: FOO_INSTALL_STAGING = YES +13: +14: FOO_DEPENDENCIES = host-pkgconf bar +15: +16: ifeq ($(BR2_PACKAGE_BAZ),y) +17: FOO_CONF_OPTS += -Dbaz=true +18: FOO_DEPENDENCIES += baz +19: else +20: FOO_CONF_OPTS += -Dbaz=false +21: endif +22: +23: $(eval $(meson-package)) + +The Makefile starts with the definition of the standard variables for +package declaration (lines 7 to 11). + +On line line 23, we invoke the meson-package macro that generates all +the Makefile rules that actually allows the package to be built. + +In the example, host-pkgconf and bar are declared as dependencies in +FOO_DEPENDENCIES at line 14 because the Meson build file of foo uses +pkg-config to determine the compilation flags and libraries of +package bar. + +Note that it is not necessary to add host-meson in the +FOO_DEPENDENCIES variable of a package, since this basic dependency +is automatically added as needed by the Meson package infrastructure. + +If the "baz" package is selected, then support for the "baz" feature +in "foo" is activated by adding -Dbaz=true to FOO_CONF_OPTS at line +17, as specified in the meson_options.txt file in "foo" source tree. +The "baz" package is also added to FOO_DEPENDENCIES. Note that the +support for baz is explicitly disabled at line 20, if the package is +not selected. + +To sum it up, to add a new meson-based package, the Makefile example +can be copied verbatim then edited to replace all occurences of FOO +with the uppercase name of the new package and update the values of +the standard variables. + +18.16.2. meson-package reference + +The main macro of the Meson package infrastructure is meson-package. +It is similar to the generic-package macro. The ability to have +target and host packages is also available, with the +host-meson-package macro. + +Just like the generic infrastructure, the Meson infrastructure works +by defining a number of variables before calling the meson-package +macro. + +All the package metadata information variables that exist in the +generic package infrastructure also exist in the Meson +infrastructure. + +A few additional variables, specific to the Meson infrastructure, can +also be defined. Many of them are only useful in very specific cases, +typical packages will therefore only use a few of them. + + * FOO_SUBDIR may contain the name of a subdirectory inside the + package that contains the main meson.build file. This is useful, + if for example, the main meson.build file is not at the root of + the tree extracted by the tarball. If HOST_FOO_SUBDIR is not + specified, it defaults to FOO_SUBDIR. + * FOO_CONF_ENV, to specify additional environment variables to pass + to meson for the configuration step. By default, empty. + * FOO_CONF_OPTS, to specify additional options to pass to meson for + the configuration step. By default, empty. + * FOO_CFLAGS, to specify compiler arguments added to the package + specific cross-compile.conf file c_args property. By default, the + value of TARGET_CFLAGS. + * FOO_CXXFLAGS, to specify compiler arguments added to the package + specific cross-compile.conf file cpp_args property. By default, + the value of TARGET_CXXFLAGS. + * FOO_LDFLAGS, to specify compiler arguments added to the package + specific cross-compile.conf file c_link_args and cpp_link_args + properties. By default, the value of TARGET_LDFLAGS. + * FOO_MESON_EXTRA_BINARIES, to specify a space-separated list of + programs to add to the [binaries] section of the meson + cross-compilation.conf configuration file. The format is + program-name='/path/to/program', with no space around the = sign, + and with the path of the program between single quotes. By + default, empty. Note that Buildroot already sets the correct + values for c, cpp, ar, strip, and pkgconfig. + * FOO_MESON_EXTRA_PROPERTIES, to specify a space-separated list of + properties to add to the [properties] section of the meson + cross-compilation.conf configuration file. The format is + property-name= with no space around the = sign, and with + single quotes around string values. By default, empty. Note that + Buildroot already sets values for needs_exe_wrapper, c_args, + c_link_args, cpp_args, cpp_link_args, sys_root, and + pkg_config_libdir. + * FOO_NINJA_ENV, to specify additional environment variables to + pass to ninja, meson companion tool in charge of the build + operations. By default, empty. + * FOO_NINJA_OPTS, to specify a space-separated list of targets to + build. By default, empty, to build the default target(s). + +18.17. Infrastructure for Cargo-based packages + +Cargo is the package manager for the Rust programming language. It +allows the user to build programs or libraries written in Rust, but +it also downloads and manages their dependencies, to ensure +repeatable builds. Cargo packages are called "crates". + +18.17.1. cargo-package tutorial + +The Config.in file of Cargo-based package foo should contain: + +01: config BR2_PACKAGE_FOO +02: bool "foo" +03: depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS +04: select BR2_PACKAGE_HOST_RUSTC +05: help +06: This is a comment that explains what foo is. +07: +08: http://foosoftware.org/foo/ + +And the .mk file for this package should contain: + +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: FOO_VERSION = 1.0 +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.gz +09: FOO_SITE = http://www.foosoftware.org/download +10: FOO_LICENSE = GPL-3.0+ +11: FOO_LICENSE_FILES = COPYING +12: +13: $(eval $(cargo-package)) + +The Makefile starts with the definition of the standard variables for +package declaration (lines 7 to 11). + +As seen in line 13, it is based on the cargo-package infrastructure. +Cargo will be invoked automatically by this infrastructure to build +and install the package. + +It is still possible to define custom build commands or install +commands (i.e. with FOO_BUILD_CMDS and FOO_INSTALL_TARGET_CMDS). +Those will then replace the commands from the cargo infrastructure. + +18.17.2. cargo-package reference + +The main macros for the Cargo package infrastructure are +cargo-package for target packages and host-cargo-package for host +packages. + +Just like the generic infrastructure, the Cargo infrastructure works +by defining a number of variables before calling the cargo-package or +host-cargo-package macros. + +All the package metadata information variables that exist in the +generic package infrastructure also exist in the Cargo +infrastructure. + +A few additional variables, specific to the Cargo infrastructure, can +also be defined. Many of them are only useful in very specific cases, +typical packages will therefore only use a few of them. + + * FOO_SUBDIR may contain the name of a subdirectory inside the + package that contains the Cargo.toml file. This is useful, if for + example, it is not at the root of the tree extracted by the + tarball. If HOST_FOO_SUBDIR is not specified, it defaults to + FOO_SUBDIR. + * FOO_CARGO_ENV can be used to pass additional variables in the + environment of cargo invocations. It used at both build and + installation time + * FOO_CARGO_BUILD_OPTS can be used to pass additional options to + cargo at build time. + * FOO_CARGO_INSTALL_OPTS can be used to pass additional options to + cargo at install time. + +A crate can depend on other libraries from crates.io or git +repositories, listed in its Cargo.toml file. Buildroot automatically +takes care of downloading such dependencies as part of the download +step of packages that use the cargo-package infrastructure. Such +dependencies are then kept together with the package source code in +the tarball cached in Buildroot’s DL_DIR, and therefore the hash of +the package’s tarball doesn’t only cover the source of the package +itself, but also covers the sources of the dependencies. Thus, a +change injected into one of the dependencies will also be discovered +by the hash check. In addition, this mechanism allows the build to be +performed completely offline since cargo will not do any downloads +during the build. This mechanism is called vendoring the +dependencies. + +18.18. Infrastructure for Go packages + +This infrastructure applies to Go packages that use the standard +build system and use bundled dependencies. + +18.18.1. golang-package tutorial + +First, let’s see how to write a .mk file for a go package, with an +example : + +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: FOO_VERSION = 1.0 +08: FOO_SITE = $(call github,bar,foo,$(FOO_VERSION)) +09: FOO_LICENSE = BSD-3-Clause +10: FOO_LICENSE_FILES = LICENSE +11: +12: $(eval $(golang-package)) + +On line 7, we declare the version of the package. + +On line 8, we declare the upstream location of the package, here +fetched from Github, since a large number of Go packages are hosted +on Github. + +On line 9 and 10, we give licensing details about the package. + +Finally, on line 12, we invoke the golang-package macro that +generates all the Makefile rules that actually allow the package to +be built. + +18.18.2. golang-package reference + +In their Config.in file, packages using the golang-package +infrastructure should depend on +BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS because Buildroot will +automatically add a dependency on host-go to such packages. If you +need CGO support in your package, you must add a dependency on +BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS. + +The main macro of the Go package infrastructure is golang-package. It +is similar to the generic-package macro. The ability to build host +packages is also available, with the host-golang-package macro. Host +packages built by host-golang-package macro should depend on +BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS. + +Just like the generic infrastructure, the Go infrastructure works by +defining a number of variables before calling the golang-package +macro. + +All the package metadata information variables that exist in the +generic package infrastructure also exist in the Go infrastructure. + +Note that it is not necessary to add host-go in the FOO_DEPENDENCIES +variable of a package, since this basic dependency is automatically +added as needed by the Go package infrastructure. + +A few additional variables, specific to the Go infrastructure, can +optionally be defined, depending on the package’s needs. Many of them +are only useful in very specific cases, typical packages will +therefore only use a few of them, or none. + + * The package must specify its Go module name in the FOO_GOMOD + variable. If not specified, it defaults to URL-domain/ + 1st-part-of-URL/2nd-part-of-URL, e.g FOO_GOMOD will take the + value github.com/bar/foo for a package that specifies FOO_SITE = + $(call github,bar,foo,$(FOO_VERSION)). The Go package + infrastructure will automatically generate a minimal go.mod file + in the package source tree if it doesn’t exist. + * FOO_LDFLAGS and FOO_TAGS can be used to pass respectively the + LDFLAGS or the TAGS to the go build command. + * FOO_BUILD_TARGETS can be used to pass the list of targets that + should be built. If FOO_BUILD_TARGETS is not specified, it + defaults to .. We then have two cases: + + + FOO_BUILD_TARGETS is .. In this case, we assume only one + binary will be produced, and that by default we name it after + the package name. If that is not appropriate, the name of the + produced binary can be overridden using FOO_BIN_NAME. + + FOO_BUILD_TARGETS is not .. In this case, we iterate over the + values to build each target, and for each produced a binary + that is the non-directory component of the target. For + example if FOO_BUILD_TARGETS = cmd/docker cmd/dockerd the + binaries produced are docker and dockerd. + * FOO_INSTALL_BINS can be used to pass the list of binaries that + should be installed in /usr/bin on the target. If + FOO_INSTALL_BINS is not specified, it defaults to the lower-case + name of package. + +With the Go infrastructure, all the steps required to build and +install the packages are already defined, and they generally work +well for most Go-based packages. However, when required, it is still +possible to customize what is done in any particular step: + + * By adding a post-operation hook (after extract, patch, configure, + build or install). See Section 18.23, “Hooks available in the + various build steps” for details. + * By overriding one of the steps. For example, even if the Go + infrastructure is used, if the package .mk file defines its own + FOO_BUILD_CMDS variable, it will be used instead of the default + Go one. However, using this method should be restricted to very + specific cases. Do not use it in the general case. + +A Go package can depend on other Go modules, listed in its go.mod +file. Buildroot automatically takes care of downloading such +dependencies as part of the download step of packages that use the +golang-package infrastructure. Such dependencies are then kept +together with the package source code in the tarball cached in +Buildroot’s DL_DIR, and therefore the hash of the package’s tarball +includes such dependencies. + +This mechanism ensures that any change in the dependencies will be +detected, and allows the build to be performed completely offline. + +18.19. Infrastructure for QMake-based packages + +18.19.1. qmake-package tutorial + +First, let’s see how to write a .mk file for a QMake-based package, +with an example : + +01: ################################################################################ +02: # +03: # libfoo +04: # +05: ################################################################################ +06: +07: LIBFOO_VERSION = 1.0 +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz +09: LIBFOO_SITE = http://www.foosoftware.org/download +10: LIBFOO_CONF_OPTS = QT_CONFIG+=bar QT_CONFIG-=baz +11: LIBFOO_DEPENDENCIES = bar +12: +13: $(eval $(qmake-package)) + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10, we tell Buildroot what options to enable for libfoo. + +On line 11, we tell Buildroot the dependencies of libfoo. + +Finally, on line line 13, we invoke the qmake-package macro that +generates all the Makefile rules that actually allows the package to +be built. + +18.19.2. qmake-package reference + +The main macro of the QMake package infrastructure is qmake-package. +It is similar to the generic-package macro. + +Just like the generic infrastructure, the QMake infrastructure works +by defining a number of variables before calling the qmake-package +macro. + +All the package metadata information variables that exist in the +generic package infrastructure also exist in the QMake +infrastructure. + +A few additional variables, specific to the QMake infrastructure, can +also be defined. + + * LIBFOO_CONF_ENV, to specify additional environment variables to + pass to the qmake script for the configuration step. By default, + empty. + * LIBFOO_CONF_OPTS, to specify additional options to pass to the + qmake script for the configuration step. By default, empty. + * LIBFOO_MAKE_ENV, to specify additional environment variables to + the make command during the build and install steps. By default, + empty. + * LIBFOO_MAKE_OPTS, to specify additional targets to pass to the + make command during the build step. By default, empty. + * LIBFOO_INSTALL_STAGING_OPTS, to specify additional targets to + pass to the make command during the staging installation step. By + default, install. + * LIBFOO_INSTALL_TARGET_OPTS, to specify additional targets to pass + to the make command during the target installation step. By + default, install. + * LIBFOO_SYNC_QT_HEADERS, to run syncqt.pl before qmake. Some + packages need this to have a properly populated include directory + before running the build. + +18.20. Infrastructure for packages building kernel modules + +Buildroot offers a helper infrastructure to make it easy to write +packages that build and install Linux kernel modules. Some packages +only contain a kernel module, other packages contain programs and +libraries in addition to kernel modules. Buildroot’s helper +infrastructure supports either case. + +18.20.1. kernel-module tutorial + +Let’s start with an example on how to prepare a simple package that +only builds a kernel module, and no other component: + +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: FOO_VERSION = 1.2.3 +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.xz +09: FOO_SITE = http://www.foosoftware.org/download +10: FOO_LICENSE = GPL-2.0 +11: FOO_LICENSE_FILES = COPYING +12: +13: $(eval $(kernel-module)) +14: $(eval $(generic-package)) + +Lines 7-11 define the usual meta-data to specify the version, archive +name, remote URI where to find the package source, licensing +information. + +On line 13, we invoke the kernel-module helper infrastructure, that +generates all the appropriate Makefile rules and variables to build +that kernel module. + +Finally, on line 14, we invoke the generic-package infrastructure. + +The dependency on linux is automatically added, so it is not needed +to specify it in FOO_DEPENDENCIES. + +What you may have noticed is that, unlike other package +infrastructures, we explicitly invoke a second infrastructure. This +allows a package to build a kernel module, but also, if needed, use +any one of other package infrastructures to build normal userland +components (libraries, executables…). Using the kernel-module +infrastructure on its own is not sufficient; another package +infrastructure must be used. + +Let’s look at a more complex example: + +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: FOO_VERSION = 1.2.3 +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.xz +09: FOO_SITE = http://www.foosoftware.org/download +10: FOO_LICENSE = GPL-2.0 +11: FOO_LICENSE_FILES = COPYING +12: +13: FOO_MODULE_SUBDIRS = driver/base +14: FOO_MODULE_MAKE_OPTS = KVERSION=$(LINUX_VERSION_PROBED) +15: +16: ifeq ($(BR2_PACKAGE_LIBBAR),y) +17: FOO_DEPENDENCIES += libbar +18: FOO_CONF_OPTS += --enable-bar +19: FOO_MODULE_SUBDIRS += driver/bar +20: else +21: FOO_CONF_OPTS += --disable-bar +22: endif +23: +24: $(eval $(kernel-module)) +26: $(eval $(autotools-package)) + +Here, we see that we have an autotools-based package, that also +builds the kernel module located in sub-directory driver/base and, if +libbar is enabled, the kernel module located in sub-directory driver/ +bar, and defines the variable KVERSION to be passed to the Linux +buildsystem when building the module(s). + +18.20.2. kernel-module reference + +The main macro for the kernel module infrastructure is kernel-module. +Unlike other package infrastructures, it is not stand-alone, and +requires any of the other *-package macros be called after it. + +The kernel-module macro defines post-build and post-target-install +hooks to build the kernel modules. If the package’s .mk needs access +to the built kernel modules, it should do so in a post-build hook, +registered after the call to kernel-module. Similarly, if the +package’s .mk needs access to the kernel module after it has been +installed, it should do so in a post-install hook, registered after +the call to kernel-module. Here’s an example: + +$(eval $(kernel-module)) + +define FOO_DO_STUFF_WITH_KERNEL_MODULE + # Do something with it... +endef +FOO_POST_BUILD_HOOKS += FOO_DO_STUFF_WITH_KERNEL_MODULE + +$(eval $(generic-package)) + +Finally, unlike the other package infrastructures, there is no +host-kernel-module variant to build a host kernel module. + +The following additional variables can optionally be defined to +further configure the build of the kernel module: + + * FOO_MODULE_SUBDIRS may be set to one or more sub-directories + (relative to the package source top-directory) where the kernel + module sources are. If empty or not set, the sources for the + kernel module(s) are considered to be located at the top of the + package source tree. + * FOO_MODULE_MAKE_OPTS may be set to contain extra variable + definitions to pass to the Linux buildsystem. + +You may also reference (but you may not set!) those variables: + + * LINUX_DIR contains the path to where the Linux kernel has been + extracted and built. + * LINUX_VERSION contains the version string as configured by the + user. + * LINUX_VERSION_PROBED contains the real version string of the + kernel, retrieved with running make -C $(LINUX_DIR) kernelrelease + * KERNEL_ARCH contains the name of the current architecture, like + arm, mips… + +18.21. Infrastructure for asciidoc documents + +The Buildroot manual, which you are currently reading, is entirely +written using the AsciiDoc [http://asciidoc.org/] mark-up syntax. The +manual is then rendered to many formats: + + * html + * split-html + * pdf + * epub + * text + +Although Buildroot only contains one document written in AsciiDoc, +there is, as for packages, an infrastructure for rendering documents +using the AsciiDoc syntax. + +Also as for packages, the AsciiDoc infrastructure is available from a +br2-external tree. This allows documentation for a br2-external tree +to match the Buildroot documentation, as it will be rendered to the +same formats and use the same layout and theme. + +18.21.1. asciidoc-document tutorial + +Whereas package infrastructures are suffixed with -package, the +document infrastructures are suffixed with -document. So, the +AsciiDoc infrastructure is named asciidoc-document. + +Here is an example to render a simple AsciiDoc document. + +01: ################################################################################ +02: # +03: # foo-document +04: # +05: ################################################################################ +06: +07: FOO_SOURCES = $(sort $(wildcard $(FOO_DOCDIR)/*)) +08: $(eval $(call asciidoc-document)) + +On line 7, the Makefile declares what the sources of the document +are. Currently, it is expected that the document’s sources are only +local; Buildroot will not attempt to download anything to render a +document. Thus, you must indicate where the sources are. Usually, the +string above is sufficient for a document with no sub-directory +structure. + +On line 8, we call the asciidoc-document function, which generates +all the Makefile code necessary to render the document. + +18.21.2. asciidoc-document reference + +The list of variables that can be set in a .mk file to give metadata +information is (assuming the document name is foo) : + + * FOO_SOURCES, mandatory, defines the source files for the + document. + * FOO_RESOURCES, optional, may contain a space-separated list of + paths to one or more directories containing so-called resources + (like CSS or images). By default, empty. + * FOO_DEPENDENCIES, optional, the list of packages (most probably, + host-packages) that must be built before building this document. + * FOO_TOC_DEPTH, FOO_TOC_DEPTH_, optionals, the depth of the + table of content for this document, which can be overridden for + the specified format (see the list of rendered formats, + above, but in uppercase, and with dash replaced by underscore; + see example, below). By default: 1. + +There are also additional hooks (see Section 18.23, “Hooks available +in the various build steps” for general information on hooks), that a +document may set to define extra actions to be done at various steps: + + * FOO_POST_RSYNC_HOOKS to run additional commands after the sources + have been copied by Buildroot. This can for example be used to + generate part of the manual with information extracted from the + tree. As an example, Buildroot uses this hook to generate the + tables in the appendices. + * FOO_CHECK_DEPENDENCIES_HOOKS to run additional tests on required + components to generate the document. In AsciiDoc, it is possible + to call filters, that is, programs that will parse an AsciiDoc + block and render it appropriately (e.g. ditaa [http:// + ditaa.sourceforge.net/] or aafigure [https://pythonhosted.org/ + aafigure/]). + * FOO_CHECK_DEPENDENCIES__HOOKS, to run additional tests for + the specified format (see the list of rendered formats, + above). + +Buildroot sets the following variable that can be used in the +definitions above: + + * $(FOO_DOCDIR), similar to $(FOO_PKGDIR), contains the path to the + directory containing foo.mk. It can be used to refer to the + document sources, and can be used in the hooks, especially the + post-rsync hook if parts of the documentation needs to be + generated. + * $(@D), as for traditional packages, contains the path to the + directory where the document will be copied and built. + +Here is a complete example that uses all variables and all hooks: + +01: ################################################################################ +02: # +03: # foo-document +04: # +05: ################################################################################ +06: +07: FOO_SOURCES = $(sort $(wildcard $(FOO_DOCDIR)/*)) +08: FOO_RESOURCES = $(sort $(wildcard $(FOO_DOCDIR)/ressources)) +09: +10: FOO_TOC_DEPTH = 2 +11: FOO_TOC_DEPTH_HTML = 1 +12: FOO_TOC_DEPTH_SPLIT_HTML = 3 +13: +14: define FOO_GEN_EXTRA_DOC +15: /path/to/generate-script --outdir=$(@D) +16: endef +17: FOO_POST_RSYNC_HOOKS += FOO_GEN_EXTRA_DOC +18: +19: define FOO_CHECK_MY_PROG +20: if ! which my-prog >/dev/null 2>&1; then \ +21: echo "You need my-prog to generate the foo document"; \ +22: exit 1; \ +23: fi +24: endef +25: FOO_CHECK_DEPENDENCIES_HOOKS += FOO_CHECK_MY_PROG +26: +27: define FOO_CHECK_MY_OTHER_PROG +28: if ! which my-other-prog >/dev/null 2>&1; then \ +29: echo "You need my-other-prog to generate the foo document as PDF"; \ +30: exit 1; \ +31: fi +32: endef +33: FOO_CHECK_DEPENDENCIES_PDF_HOOKS += FOO_CHECK_MY_OTHER_PROG +34: +35: $(eval $(call asciidoc-document)) + +18.22. Infrastructure specific to the Linux kernel package + +The Linux kernel package can use some specific infrastructures based +on package hooks for building Linux kernel tools or/and building +Linux kernel extensions. + +18.22.1. linux-kernel-tools + +Buildroot offers a helper infrastructure to build some userspace +tools for the target available within the Linux kernel sources. Since +their source code is part of the kernel source code, a special +package, linux-tools, exists and re-uses the sources of the Linux +kernel that runs on the target. + +Let’s look at an example of a Linux tool. For a new Linux tool named +foo, create a new menu entry in the existing package/linux-tools/ +Config.in. This file will contain the option descriptions related to +each kernel tool that will be used and displayed in the configuration +tool. It would basically look like: + +01: config BR2_PACKAGE_LINUX_TOOLS_FOO +02: bool "foo" +03: select BR2_PACKAGE_LINUX_TOOLS +04: help +05: This is a comment that explains what foo kernel tool is. +06: +07: http://foosoftware.org/foo/ + +The name of the option starts with the prefix +BR2_PACKAGE_LINUX_TOOLS_, followed by the uppercase name of the tool +(like is done for packages). + +Note. Unlike other packages, the linux-tools package options appear +in the linux kernel menu, under the Linux Kernel Tools sub-menu, not +under the Target packages main menu. + +Then for each linux tool, add a new .mk.in file named package/ +linux-tools/linux-tool-foo.mk.in. It would basically look like: + +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: LINUX_TOOLS += foo +08: +09: FOO_DEPENDENCIES = libbbb +10: +11: define FOO_BUILD_CMDS +12: $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools foo +13: endef +14: +15: define FOO_INSTALL_STAGING_CMDS +16: $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \ +17: DESTDIR=$(STAGING_DIR) \ +18: foo_install +19: endef +20: +21: define FOO_INSTALL_TARGET_CMDS +22: $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \ +23: DESTDIR=$(TARGET_DIR) \ +24: foo_install +25: endef + +On line 7, we register the Linux tool foo to the list of available +Linux tools. + +On line 9, we specify the list of dependencies this tool relies on. +These dependencies are added to the Linux package dependencies list +only when the foo tool is selected. + +The rest of the Makefile, lines 11-25 defines what should be done at +the different steps of the Linux tool build process like for a +generic package. They will actually be used only when the foo tool is +selected. The only supported commands are _BUILD_CMDS, +_INSTALL_STAGING_CMDS and _INSTALL_TARGET_CMDS. + +Note. One must not call $(eval $(generic-package)) or any other +package infrastructure! Linux tools are not packages by themselves, +they are part of the linux-tools package. + +18.22.2. linux-kernel-extensions + +Some packages provide new features that require the Linux kernel tree +to be modified. This can be in the form of patches to be applied on +the kernel tree, or in the form of new files to be added to the tree. +The Buildroot’s Linux kernel extensions infrastructure provides a +simple solution to automatically do this, just after the kernel +sources are extracted and before the kernel patches are applied. +Examples of extensions packaged using this mechanism are the +real-time extensions Xenomai and RTAI, as well as the set of +out-of-tree LCD screens drivers fbtft. + +Let’s look at an example on how to add a new Linux extension foo. + +First, create the package foo that provides the extension: this +package is a standard package; see the previous chapters on how to +create such a package. This package is in charge of downloading the +sources archive, checking the hash, defining the licence informations +and building user space tools if any. + +Then create the Linux extension proper: create a new menu entry in +the existing linux/Config.ext.in. This file contains the option +descriptions related to each kernel extension that will be used and +displayed in the configuration tool. It would basically look like: + +01: config BR2_LINUX_KERNEL_EXT_FOO +02: bool "foo" +03: help +04: This is a comment that explains what foo kernel extension is. +05: +06: http://foosoftware.org/foo/ + +Then for each linux extension, add a new .mk file named linux/ +linux-ext-foo.mk. It should basically contain: + +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: LINUX_EXTENSIONS += foo +08: +09: define FOO_PREPARE_KERNEL +10: $(FOO_DIR)/prepare-kernel-tree.sh --linux-dir=$(@D) +11: endef + +On line 7, we add the Linux extension foo to the list of available +Linux extensions. + +On line 9-11, we define what should be done by the extension to +modify the Linux kernel tree; this is specific to the linux extension +and can use the variables defined by the foo package, like: $ +(FOO_DIR) or $(FOO_VERSION)… as well as all the Linux variables, +like: $(LINUX_VERSION) or $(LINUX_VERSION_PROBED), $(KERNEL_ARCH)… +See the definition of those kernel variables. + +18.23. Hooks available in the various build steps + +The generic infrastructure (and as a result also the derived +autotools and cmake infrastructures) allow packages to specify hooks. +These define further actions to perform after existing steps. Most +hooks aren’t really useful for generic packages, since the .mk file +already has full control over the actions performed in each step of +the package construction. + +The following hook points are available: + + * LIBFOO_PRE_DOWNLOAD_HOOKS + * LIBFOO_POST_DOWNLOAD_HOOKS + * LIBFOO_PRE_EXTRACT_HOOKS + * LIBFOO_POST_EXTRACT_HOOKS + * LIBFOO_PRE_RSYNC_HOOKS + * LIBFOO_POST_RSYNC_HOOKS + * LIBFOO_PRE_PATCH_HOOKS + * LIBFOO_POST_PATCH_HOOKS + * LIBFOO_PRE_CONFIGURE_HOOKS + * LIBFOO_POST_CONFIGURE_HOOKS + * LIBFOO_PRE_BUILD_HOOKS + * LIBFOO_POST_BUILD_HOOKS + * LIBFOO_PRE_INSTALL_HOOKS (for host packages only) + * LIBFOO_POST_INSTALL_HOOKS (for host packages only) + * LIBFOO_PRE_INSTALL_STAGING_HOOKS (for target packages only) + * LIBFOO_POST_INSTALL_STAGING_HOOKS (for target packages only) + * LIBFOO_PRE_INSTALL_TARGET_HOOKS (for target packages only) + * LIBFOO_POST_INSTALL_TARGET_HOOKS (for target packages only) + * LIBFOO_PRE_INSTALL_IMAGES_HOOKS + * LIBFOO_POST_INSTALL_IMAGES_HOOKS + * LIBFOO_PRE_LEGAL_INFO_HOOKS + * LIBFOO_POST_LEGAL_INFO_HOOKS + * LIBFOO_TARGET_FINALIZE_HOOKS + +These variables are lists of variable names containing actions to be +performed at this hook point. This allows several hooks to be +registered at a given hook point. Here is an example: + +define LIBFOO_POST_PATCH_FIXUP + action1 + action2 +endef + +LIBFOO_POST_PATCH_HOOKS += LIBFOO_POST_PATCH_FIXUP + +18.23.1. Using the POST_RSYNC hook + +The POST_RSYNC hook is run only for packages that use a local source, +either through the local site method or the OVERRIDE_SRCDIR +mechanism. In this case, package sources are copied using rsync from +the local location into the buildroot build directory. The rsync +command does not copy all files from the source directory, though. +Files belonging to a version control system, like the directories +.git, .hg, etc. are not copied. For most packages this is sufficient, +but a given package can perform additional actions using the +POST_RSYNC hook. + +In principle, the hook can contain any command you want. One specific +use case, though, is the intentional copying of the version control +directory using rsync. The rsync command you use in the hook can, +among others, use the following variables: + + * $(SRCDIR): the path to the overridden source directory + * $(@D): the path to the build directory + +18.23.2. Target-finalize hook + +Packages may also register hooks in LIBFOO_TARGET_FINALIZE_HOOKS. +These hooks are run after all packages are built, but before the +filesystem images are generated. They are seldom used, and your +package probably do not need them. + +18.24. Gettext integration and interaction with packages + +Many packages that support internationalization use the gettext +library. Dependencies for this library are fairly complicated and +therefore, deserve some explanation. + +The glibc C library integrates a full-blown implementation of gettext +, supporting translation. Native Language Support is therefore +built-in in glibc. + +On the other hand, the uClibc and musl C libraries only provide a +stub implementation of the gettext functionality, which allows to +compile libraries and programs using gettext functions, but without +providing the translation capabilities of a full-blown gettext +implementation. With such C libraries, if real Native Language +Support is necessary, it can be provided by the libintl library of +the gettext package. + +Due to this, and in order to make sure that Native Language Support +is properly handled, packages in Buildroot that can use NLS support +should: + + 1. Ensure NLS support is enabled when BR2_SYSTEM_ENABLE_NLS=y. This + is done automatically for autotools packages and therefore should + only be done for packages using other package infrastructures. + 2. Add $(TARGET_NLS_DEPENDENCIES) to the package _DEPENDENCIES + variable. This addition should be done unconditionally: the value + of this variable is automatically adjusted by the core + infrastructure to contain the relevant list of packages. If NLS + support is disabled, this variable is empty. If NLS support is + enabled, this variable contains host-gettext so that tools needed + to compile translation files are available on the host. In + addition, if uClibc or musl are used, this variable also contains + gettext in order to get the full-blown gettext implementation. + 3. If needed, add $(TARGET_NLS_LIBS) to the linker flags, so that + the package gets linked with libintl. This is generally not + needed with autotools packages as they usually detect + automatically that they should link with libintl. However, + packages using other build systems, or problematic + autotools-based packages may need this. $(TARGET_NLS_LIBS) should + be added unconditionally to the linker flags, as the core + automatically makes it empty or defined to -lintl depending on + the configuration. + +No changes should be made to the Config.in file to support NLS. + +Finally, certain packages need some gettext utilities on the target, +such as the gettext program itself, which allows to retrieve +translated strings, from the command line. In such a case, the +package should: + + * use select BR2_PACKAGE_GETTEXT in their Config.in file, + indicating in a comment above that it’s a runtime dependency + only. + * not add any gettext dependency in the DEPENDENCIES variable of + their .mk file. + +18.25. Tips and tricks + +18.25.1. Package name, config entry name and makefile variable +relationship + +In Buildroot, there is some relationship between: + + * the package name, which is the package directory name (and the + name of the *.mk file); + * the config entry name that is declared in the Config.in file; + * the makefile variable prefix. + +It is mandatory to maintain consistency between these elements, using +the following rules: + + * the package directory and the *.mk name are the package name + itself (e.g.: package/foo-bar_boo/foo-bar_boo.mk); + * the make target name is the package name itself (e.g.: + foo-bar_boo); + * the config entry is the upper case package name with . and - + characters substituted with _, prefixed with BR2_PACKAGE_ (e.g.: + BR2_PACKAGE_FOO_BAR_BOO); + * the *.mk file variable prefix is the upper case package name with + . and - characters substituted with _ (e.g.: + FOO_BAR_BOO_VERSION). + +18.25.2. How to check the coding style + +Buildroot provides a script in utils/check-package that checks new or +changed files for coding style. It is not a complete language +validator, but it catches many common mistakes. It is meant to run in +the actual files you created or modified, before creating the patch +for submission. + +This script can be used for packages, filesystem makefiles, Config.in +files, etc. It does not check the files defining the package +infrastructures and some other files containing similar common code. + +To use it, run the check-package script, by telling which files you +created or changed: + +$ ./utils/check-package package/new-package/* + +If you have the utils directory in your path you can also run: + +$ cd package/new-package/ +$ check-package * + +The tool can also be used for packages in a br2-external: + +$ check-package -b /path/to/br2-ext-tree/package/my-package/* + +18.25.3. How to test your package + +Once you have added your new package, it is important that you test +it under various conditions: does it build for all architectures? +Does it build with the different C libraries? Does it need threads, +NPTL? And so on… + +Buildroot runs autobuilders [http://autobuild.buildroot.org/] which +continuously test random configurations. However, these only build +the master branch of the git tree, and your new fancy package is not +yet there. + +Buildroot provides a script in utils/test-pkg that uses the same base +configurations as used by the autobuilders so you can test your +package in the same conditions. + +First, create a config snippet that contains all the necessary +options needed to enable your package, but without any architecture +or toolchain option. For example, let’s create a config snippet that +just enables libcurl, without any TLS backend: + +$ cat libcurl.config +BR2_PACKAGE_LIBCURL=y + +If your package needs more configuration options, you can add them to +the config snippet. For example, here’s how you would test libcurl +with openssl as a TLS backend and the curl program: + +$ cat libcurl.config +BR2_PACKAGE_LIBCURL=y +BR2_PACKAGE_LIBCURL_CURL=y +BR2_PACKAGE_OPENSSL=y + +Then run the test-pkg script, by telling it what config snippet to +use and what package to test: + +$ ./utils/test-pkg -c libcurl.config -p libcurl + +By default, test-pkg will build your package against a subset of the +toolchains used by the autobuilders, which has been selected by the +Buildroot developers as being the most useful and representative +subset. If you want to test all toolchains, pass the -a option. Note +that in any case, internal toolchains are excluded as they take too +long to build. + +The output lists all toolchains that are tested and the corresponding +result (excerpt, results are fake): + +$ ./utils/test-pkg -c libcurl.config -p libcurl + armv5-ctng-linux-gnueabi [ 1/11]: OK + armv7-ctng-linux-gnueabihf [ 2/11]: OK + br-aarch64-glibc [ 3/11]: SKIPPED + br-arcle-hs38 [ 4/11]: SKIPPED + br-arm-basic [ 5/11]: FAILED + br-arm-cortex-a9-glibc [ 6/11]: OK + br-arm-cortex-a9-musl [ 7/11]: FAILED + br-arm-cortex-m4-full [ 8/11]: OK + br-arm-full [ 9/11]: OK + br-arm-full-nothread [10/11]: FAILED + br-arm-full-static [11/11]: OK +11 builds, 2 skipped, 2 build failed, 1 legal-info failed + +The results mean: + + * OK: the build was successful. + * SKIPPED: one or more configuration options listed in the config + snippet were not present in the final configuration. This is due + to options having dependencies not satisfied by the toolchain, + such as for example a package that depends on BR2_USE_MMU with a + noMMU toolchain. The missing options are reported in + missing.config in the output build directory (~/br-test-pkg/ + TOOLCHAIN_NAME/ by default). + * FAILED: the build failed. Inspect the logfile file in the output + build directory to see what went wrong: + + + the actual build failed, + + the legal-info failed, + + one of the preliminary steps (downloading the config file, + applying the configuration, running dirclean for the package) + failed. + +When there are failures, you can just re-run the script with the same +options (after you fixed your package); the script will attempt to +re-build the package specified with -p for all toolchains, without +the need to re-build all the dependencies of that package. + +The test-pkg script accepts a few options, for which you can get some +help by running: + +$ ./utils/test-pkg -h + +18.25.4. How to add a package from GitHub + +Packages on GitHub often don’t have a download area with release +tarballs. However, it is possible to download tarballs directly from +the repository on GitHub. As GitHub is known to have changed download +mechanisms in the past, the github helper function should be used as +shown below. + +# Use a tag or a full commit ID +FOO_VERSION = 1.0 +FOO_SITE = $(call github,,,v$(FOO_VERSION)) + +Notes + + * The FOO_VERSION can either be a tag or a commit ID. + * The tarball name generated by github matches the default one from + Buildroot (e.g.: + foo-f6fb6654af62045239caed5950bc6c7971965e60.tar.gz), so it is + not necessary to specify it in the .mk file. + * When using a commit ID as version, you should use the full 40 hex + characters. + * When the tag contains a prefix such as v in v1.0, then the + VERSION variable should contain just 1.0, and the v should be + added directly in the SITE variable, as illustrated above. This + ensures that the VERSION variable value can be used to match + against release-monitoring.org [http://www.release-monitoring.org + /] results. + +If the package you wish to add does have a release section on GitHub, +the maintainer may have uploaded a release tarball, or the release +may just point to the automatically generated tarball from the git +tag. If there is a release tarball uploaded by the maintainer, we +prefer to use that since it may be slightly different (e.g. it +contains a configure script so we don’t need to do AUTORECONF). + +You can see on the release page if it’s an uploaded tarball or a git +tag: + + * If it looks like the image above then it was uploaded by the + maintainer and you should use that link (in that example: + mongrel2-v1.9.2.tar.bz2) to specify FOO_SITE, and not use the + github helper. + * On the other hand, if there’s is only the "Source code" link, + then it’s an automatically generated tarball and you should use + the github helper function. + +18.25.5. How to add a package from Gitlab + +In a similar way to the github macro described in Section 18.25.4, +“How to add a package from GitHub”, Buildroot also provides the +gitlab macro to download from Gitlab repositories. It can be used to +download auto-generated tarballs produced by Gitlab, either for +specific tags or commits: + +# Use a tag or a full commit ID +FOO_VERSION = 1.0 +FOO_SITE = $(call gitlab,,,v$(FOO_VERSION)) + +By default, it will use a .tar.gz tarball, but Gitlab also provides +.tar.bz2 tarballs, so by adding a _SOURCE variable, this +.tar.bz2 tarball can be used: + +# Use a tag or a full commit ID +FOO_VERSION = 1.0 +FOO_SITE = $(call gitlab,,,v$(FOO_VERSION)) +FOO_SOURCE = foo-$(FOO_VERSION).tar.bz2 + +If there is a specific tarball uploaded by the upstream developers in +https://gitlab.com//releases/, do not use this macro, but +rather use directly the link to the tarball. + +18.26. Conclusion + +As you can see, adding a software package to Buildroot is simply a +matter of writing a Makefile using an existing example and modifying +it according to the compilation process required by the package. + +If you package software that might be useful for other people, don’t +forget to send a patch to the Buildroot mailing list (see +Section 22.5, “Submitting patches”)! + +Chapter 19. Patching a package + +While integrating a new package or updating an existing one, it may +be necessary to patch the source of the software to get it +cross-built within Buildroot. + +Buildroot offers an infrastructure to automatically handle this +during the builds. It supports three ways of applying patch sets: +downloaded patches, patches supplied within buildroot and patches +located in a user-defined global patch directory. + +19.1. Providing patches + +19.1.1. Downloaded + +If it is necessary to apply a patch that is available for download, +then add it to the _PATCH variable. If an entry contains +://, then Buildroot will assume it is a full URL and download the +patch from this location. Otherwise, Buildroot will assume that the +patch should be downloaded from _SITE. It can be a +single patch, or a tarball containing a patch series. + +Like for all downloads, a hash should be added to the +.hash file. + +This method is typically used for packages from Debian. + +19.1.2. Within Buildroot + +Most patches are provided within Buildroot, in the package directory; +these typically aim to fix cross-compilation, libc support, or other +such issues. + +These patch files should be named -.patch. + +Notes + + * The patch files coming with Buildroot should not contain any + package version reference in their filename. + * The field in the patch file name refers to the apply + order, and shall start at 1; It is preferred to pad the number + with zeros up to 4 digits, like git-format-patch does. E.g.: + 0001-foobar-the-buz.patch + * The patch email subject prefix shall not be numbered. Patches + shall be generated with the git format-patch -N command, since + this numbering is automatically added for series. For example, + the patch subject line should look like Subject: [PATCH] foobar + the buz rather than Subject: [PATCH n/m] foobar the buz. + * Previously, it was mandatory for patches to be prefixed with the + name of the package, like --.patch, + but that is no longer the case. Existing packages will be fixed + as time passes. Do not prefix patches with the package name. + * Previously, a series file, as used by quilt, could also be added + in the package directory. In that case, the series file defines + the patch application order. This is deprecated, and will be + removed in the future. Do not use a series file. + +19.1.3. Global patch directory + +The BR2_GLOBAL_PATCH_DIR configuration file option can be used to +specify a space separated list of one or more directories containing +global package patches. See Section 9.8.1, “Providing extra patches” +for details. + +19.2. How patches are applied + + 1. Run the _PRE_PATCH_HOOKS commands if defined; + 2. Cleanup the build directory, removing any existing *.rej files; + 3. If _PATCH is defined, then patches from these + tarballs are applied; + 4. If there are some *.patch files in the package’s Buildroot + directory or in a package subdirectory named , + then: + + + If a series file exists in the package directory, then + patches are applied according to the series file; + + Otherwise, patch files matching *.patch are applied in + alphabetical order. So, to ensure they are applied in the + right order, it is highly recommended to name the patch files + like this: -.patch, where + refers to the apply order. + 5. If BR2_GLOBAL_PATCH_DIR is defined, the directories will be + enumerated in the order they are specified. The patches are + applied as described in the previous step. + 6. Run the _POST_PATCH_HOOKS commands if defined. + +If something goes wrong in the steps 3 or 4, then the build fails. + +19.3. Format and licensing of the package patches + +Patches are released under the same license as the software they +apply to (see Section 13.2, “Complying with the Buildroot license”). + +A message explaining what the patch does, and why it is needed, +should be added in the header commentary of the patch. + +You should add a Signed-off-by statement in the header of the each +patch to help with keeping track of the changes and to certify that +the patch is released under the same license as the software that is +modified. + +If the software is under version control, it is recommended to use +the upstream SCM software to generate the patch set. + +Otherwise, concatenate the header with the output of the diff -purN +package-version.orig/ package-version/ command. + +If you update an existing patch (e.g. when bumping the package +version), make sure the existing From header and Signed-off-by tags +are not removed, but do update the rest of the patch comment when +appropriate. + +At the end, the patch should look like: + +configure.ac: add C++ support test + +Signed-off-by: John Doe + +--- configure.ac.orig ++++ configure.ac +@@ -40,2 +40,12 @@ + +AC_PROG_MAKE_SET ++ ++AC_CACHE_CHECK([whether the C++ compiler works], ++ [rw_cv_prog_cxx_works], ++ [AC_LANG_PUSH([C++]) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], ++ [rw_cv_prog_cxx_works=yes], ++ [rw_cv_prog_cxx_works=no]) ++ AC_LANG_POP([C++])]) ++ ++AM_CONDITIONAL([CXX_WORKS], [test "x$rw_cv_prog_cxx_works" = "xyes"]) + +19.4. Additional patch documentation + +Ideally, all patches should document an upstream patch or patch +submission, when applicable, via the Upstream trailer. + +When backporting an upstream patch that has been accepted into +mainline, it is preferred that the URL to the commit is referenced: + +Upstream: + +If a new issue is identified in Buildroot and upstream is generally +affected by the issue (it’s not a Buildroot specific issue), users +should submit the patch upstream and provide a link to that +submission when possible: + +Upstream: + +Patches that have been submitted but were denied upstream should note +that and include comments about why the patch is being used despite +the upstream status. + +Note: in any of the above scenarios, it is also sensible to add a few +words about any changes to the patch that may have been necessary. + +If a patch does not apply upstream then this should be noted with a +comment: + +Upstream: N/A + +Adding this documentation helps streamline the patch review process +during package version updates. + +Chapter 20. Download infrastructure + +TODO + +Chapter 21. Debugging Buildroot + +It is possible to instrument the steps Buildroot does when building +packages. Define the variable BR2_INSTRUMENTATION_SCRIPTS to contain +the path of one or more scripts (or other executables), in a +space-separated list, you want called before and after each step. The +scripts are called in sequence, with three parameters: + + * start or end to denote the start (resp. the end) of a step; + * the name of the step about to be started, or which just ended; + * the name of the package. + +For example : + +make BR2_INSTRUMENTATION_SCRIPTS="/path/to/my/script1 /path/to/my/script2" + +The list of steps is: + + * extract + * patch + * configure + * build + * install-host, when a host-package is installed in $(HOST_DIR) + * install-target, when a target-package is installed in $ + (TARGET_DIR) + * install-staging, when a target-package is installed in $ + (STAGING_DIR) + * install-image, when a target-package installs files in $ + (BINARIES_DIR) + +The script has access to the following variables: + + * BR2_CONFIG: the path to the Buildroot .config file + * HOST_DIR, STAGING_DIR, TARGET_DIR: see Section 18.6.2, + “generic-package reference” + * BUILD_DIR: the directory where packages are extracted and built + * BINARIES_DIR: the place where all binary files (aka images) are + stored + * BASE_DIR: the base output directory + * PARALLEL_JOBS: the number of jobs to use when running parallel + processes. + +Chapter 22. Contributing to Buildroot + +There are many ways in which you can contribute to Buildroot: +analyzing and fixing bugs, analyzing and fixing package build +failures detected by the autobuilders, testing and reviewing patches +sent by other developers, working on the items in our TODO list and +sending your own improvements to Buildroot or its manual. The +following sections give a little more detail on each of these items. + +If you are interested in contributing to Buildroot, the first thing +you should do is to subscribe to the Buildroot mailing list. This +list is the main way of interacting with other Buildroot developers +and to send contributions to. If you aren’t subscribed yet, then +refer to Chapter 5, Community resources for the subscription link. + +If you are going to touch the code, it is highly recommended to use a +git repository of Buildroot, rather than starting from an extracted +source code tarball. Git is the easiest way to develop from and +directly send your patches to the mailing list. Refer to Chapter 3, +Getting Buildroot for more information on obtaining a Buildroot git +tree. + +22.1. Reproducing, analyzing and fixing bugs + +A first way of contributing is to have a look at the open bug reports +in the Buildroot bug tracker [https://gitlab.com/buildroot.org/ +buildroot/-/issues]. As we strive to keep the bug count as small as +possible, all help in reproducing, analyzing and fixing reported bugs +is more than welcome. Don’t hesitate to add a comment to bug reports +reporting your findings, even if you don’t yet see the full picture. + +22.2. Analyzing and fixing autobuild failures + +The Buildroot autobuilders are a set of build machines that +continuously run Buildroot builds based on random configurations. +This is done for all architectures supported by Buildroot, with +various toolchains, and with a random selection of packages. With the +large commit activity on Buildroot, these autobuilders are a great +help in detecting problems very early after commit. + +All build results are available at http://autobuild.buildroot.org, +statistics are at http://autobuild.buildroot.org/stats.php. Every +day, an overview of all failed packages is sent to the mailing list. + +Detecting problems is great, but obviously these problems have to be +fixed as well. Your contribution is very welcome here! There are +basically two things that can be done: + + * Analyzing the problems. The daily summary mails do not contain + details about the actual failures: in order to see what’s going + on you have to open the build log and check the last output. + Having someone doing this for all packages in the mail is very + useful for other developers, as they can make a quick initial + analysis based on this output alone. + * Fixing a problem. When fixing autobuild failures, you should + follow these steps: + + 1. Check if you can reproduce the problem by building with the + same configuration. You can do this manually, or use the + br-reproduce-build [http://git.buildroot.org/buildroot-test/ + tree/utils/br-reproduce-build] script that will automatically + clone a Buildroot git repository, checkout the correct + revision, download and set the right configuration, and start + the build. + 2. Analyze the problem and create a fix. + 3. Verify that the problem is really fixed by starting from a + clean Buildroot tree and only applying your fix. + 4. Send the fix to the Buildroot mailing list (see Section 22.5, + “Submitting patches”). In case you created a patch against + the package sources, you should also send the patch upstream + so that the problem will be fixed in a later release, and the + patch in Buildroot can be removed. In the commit message of a + patch fixing an autobuild failure, add a reference to the + build result directory, as follows: + +Fixes: http://autobuild.buildroot.org/results/51000a9d4656afe9e0ea6f07b9f8ed374c2e4069 + +22.3. Reviewing and testing patches + +With the amount of patches sent to the mailing list each day, the +maintainer has a very hard job to judge which patches are ready to +apply and which ones aren’t. Contributors can greatly help here by +reviewing and testing these patches. + +In the review process, do not hesitate to respond to patch +submissions for remarks, suggestions or anything that will help +everyone to understand the patches and make them better. Please use +internet style replies in plain text emails when responding to patch +submissions. + +To indicate approval of a patch, there are three formal tags that +keep track of this approval. To add your tag to a patch, reply to it +with the approval tag below the original author’s Signed-off-by line. +These tags will be picked up automatically by patchwork (see +Section 22.3.1, “Applying Patches from Patchwork”) and will be part +of the commit log when the patch is accepted. + +Tested-by + Indicates that the patch has been tested successfully. You are + encouraged to specify what kind of testing you performed + (compile-test on architecture X and Y, runtime test on target A, + …). This additional information helps other testers and the + maintainer. +Reviewed-by + Indicates that you code-reviewed the patch and did your best in + spotting problems, but you are not sufficiently familiar with the + area touched to provide an Acked-by tag. This means that there + may be remaining problems in the patch that would be spotted by + someone with more experience in that area. Should such problems + be detected, your Reviewed-by tag remains appropriate and you + cannot be blamed. +Acked-by + Indicates that you code-reviewed the patch and you are familiar + enough with the area touched to feel that the patch can be + committed as-is (no additional changes required). In case it + later turns out that something is wrong with the patch, your + Acked-by could be considered inappropriate. The difference + between Acked-by and Reviewed-by is thus mainly that you are + prepared to take the blame on Acked patches, but not on Reviewed + ones. + +If you reviewed a patch and have comments on it, you should simply +reply to the patch stating these comments, without providing a +Reviewed-by or Acked-by tag. These tags should only be provided if +you judge the patch to be good as it is. + +It is important to note that neither Reviewed-by nor Acked-by imply +that testing has been performed. To indicate that you both reviewed +and tested the patch, provide two separate tags (Reviewed/Acked-by +and Tested-by). + +Note also that any developer can provide Tested/Reviewed/Acked-by +tags, without exception, and we encourage everyone to do this. +Buildroot does not have a defined group of core developers, it just +so happens that some developers are more active than others. The +maintainer will value tags according to the track record of their +submitter. Tags provided by a regular contributor will naturally be +trusted more than tags provided by a newcomer. As you provide tags +more regularly, your trustworthiness (in the eyes of the maintainer) +will go up, but any tag provided is valuable. + +Buildroot’s Patchwork website can be used to pull in patches for +testing purposes. Please see Section 22.3.1, “Applying Patches from +Patchwork” for more information on using Buildroot’s Patchwork +website to apply patches. + +22.3.1. Applying Patches from Patchwork + +The main use of Buildroot’s Patchwork website for a developer is for +pulling in patches into their local git repository for testing +purposes. + +When browsing patches in the patchwork management interface, an mbox +link is provided at the top of the page. Copy this link address and +run the following commands: + +$ git checkout -b +$ wget -O - | git am + +Another option for applying patches is to create a bundle. A bundle +is a set of patches that you can group together using the patchwork +interface. Once the bundle is created and the bundle is made public, +you can copy the mbox link for the bundle and apply the bundle using +the above commands. + +22.4. Work on items from the TODO list + +If you want to contribute to Buildroot but don’t know where to start, +and you don’t like any of the above topics, you can always work on +items from the Buildroot TODO list [http://elinux.org/Buildroot# +Todo_list]. Don’t hesitate to discuss an item first on the mailing +list or on IRC. Do edit the wiki to indicate when you start working +on an item, so we avoid duplicate efforts. + +22.5. Submitting patches + +Note + +Please, do not attach patches to bugs, send them to the mailing list +instead. + +If you made some changes to Buildroot and you would like to +contribute them to the Buildroot project, proceed as follows. + +22.5.1. The formatting of a patch + +We expect patches to be formatted in a specific way. This is +necessary to make it easy to review patches, to be able to apply them +easily to the git repository, to make it easy to find back in the +history how and why things have changed, and to make it possible to +use git bisect to locate the origin of a problem. + +First of all, it is essential that the patch has a good commit +message. The commit message should start with a separate line with a +brief summary of the change, prefixed by the area touched by the +patch. A few examples of good commit titles: + + * package/linuxptp: bump version to 2.0 + * configs/imx23evk: bump Linux version to 4.19 + * package/pkg-generic: postpone evaluation of dependency conditions + * boot/uboot: needs host-{flex,bison} + * support/testing: add python-ubjson tests + +The description that follows the prefix should start with a lower +case letter (i.e "bump", "needs", "postpone", "add" in the above +examples). + +Second, the body of the commit message should describe why this +change is needed, and if necessary also give details about how it was +done. When writing the commit message, think of how the reviewers +will read it, but also think about how you will read it when you look +at this change again a few years down the line. + +Third, the patch itself should do only one change, but do it +completely. Two unrelated or weakly related changes should usually be +done in two separate patches. This usually means that a patch affects +only a single package. If several changes are related, it is often +still possible to split them up in small patches and apply them in a +specific order. Small patches make it easier to review, and often +make it easier to understand afterwards why a change was done. +However, each patch must be complete. It is not allowed that the +build is broken when only the first but not the second patch is +applied. This is necessary to be able to use git bisect afterwards. + +Of course, while you’re doing your development, you’re probably going +back and forth between packages, and certainly not committing things +immediately in a way that is clean enough for submission. So most +developers rewrite the history of commits to produce a clean set of +commits that is appropriate for submission. To do this, you need to +use interactive rebasing. You can learn about it in the Pro Git book +[https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History]. +Sometimes, it is even easier to discard you history with git reset +--soft origin/master and select individual changes with git add -i or +git add -p. + +Finally, the patch should be signed off. This is done by adding +Signed-off-by: Your Real Name <> at the end of the commit message. +git commit -s does that for you, if configured properly. The +Signed-off-by tag means that you publish the patch under the +Buildroot license (i.e. GPL-2.0+, except for package patches, which +have the upstream license), and that you are allowed to do so. See +the Developer Certificate of Origin [http://developercertificate.org +/] for details. + +To give credits to who sponsored the creation of a patch or the +process of upstreaming it, you may use email subaddressing [https:// +datatracker.ietf.org/doc/html/rfc5233] for your git identity (i.e. +what is used as commit author and email From: field, as well as your +Signed-off-by tag); add suffix to the local part, separated from it +by a plus + sign. E.g.: + + * for a company which sponsored the submitted work, use the company + name as the detail (suffix) part: + + Your-Name Your-Surname + + + * for an individual who sponsored the submitted work, use their + name and surname: + + Your-Name Your-Surname + + +Alternatively, especially if your email server does not support +subaddressing, you can include the sponsor in your author name in +parentheses, e.g. "Your Name (Sponsor Name)". + +When adding new packages, you should submit every package in a +separate patch. This patch should have the update to package/ +Config.in, the package Config.in file, the .mk file, the .hash file, +any init script, and all package patches. If the package has many +sub-options, these are sometimes better added as separate follow-up +patches. The summary line should be something like : new +package. The body of the commit message can be empty for simple +packages, or it can contain the description of the package (like the +Config.in help text). If anything special has to be done to build the +package, this should also be explained explicitly in the commit +message body. + +When you bump a package to a new version, you should also submit a +separate patch for each package. Don’t forget to update the .hash +file, or add it if it doesn’t exist yet. Also don’t forget to check +if the _LICENSE and _LICENSE_FILES are still valid. The summary line +should be something like : bump to version . If the new version only contains security updates compared +to the existing one, the summary should be : security +bump to version and the commit message body should show +the CVE numbers that are fixed. If some package patches can be +removed in the new version, it should be explained explicitly why +they can be removed, preferably with the upstream commit ID. Also any +other required changes should be explained explicitly, like configure +options that no longer exist or are no longer needed. + +If you are interested in getting notified of build failures and of +further changes in the packages you added or modified, please add +yourself to the DEVELOPERS file. This should be done in the same +patch creating or modifying the package. See the DEVELOPERS file for +more information. + +Buildroot provides a handy tool to check for common coding style +mistakes on files you created or modified, called check-package (see +Section 18.25.2, “How to check the coding style” for more +information). + +22.5.2. Preparing a patch series + +Starting from the changes committed in your local git view, rebase +your development branch on top of the upstream tree before generating +a patch set. To do so, run: + +$ git fetch --all --tags +$ git rebase origin/master + +Now check the coding style for the changes you committed: + +$ utils/docker-run make check-package + +Now, you are ready to generate then submit your patch set. + +To generate it, run: + +$ git format-patch -M -n -s -o outgoing origin/master + +This will generate patch files in the outgoing subdirectory, +automatically adding the Signed-off-by line. + +Once patch files are generated, you can review/edit the commit +message before submitting them, using your favorite text editor. + +Buildroot provides a handy tool to know to whom your patches should +be sent, called get-developers (see Chapter 23, DEVELOPERS file and +get-developers for more information). This tool reads your patches +and outputs the appropriate git send-email command to use: + +$ ./utils/get-developers outgoing/* + +Use the output of get-developers to send your patches: + +$ git send-email --to buildroot@buildroot.org --cc bob --cc alice outgoing/* + +Alternatively, get-developers -e can be used directly with the +--cc-cmd argument to git send-email to automatically CC the affected +developers: + +$ git send-email --to buildroot@buildroot.org \ + --cc-cmd './utils/get-developers -e' origin/master + +git can be configured to automatically do this out of the box with: + +$ git config sendemail.to buildroot@buildroot.org +$ git config sendemail.ccCmd "$(pwd)/utils/get-developers -e" + +And then just do: + +$ git send-email origin/master + +Note that git should be configured to use your mail account. To +configure git, see man git-send-email or https://git-send-email.io/. + +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. + +https://sr.ht also has a light-weight UI for preparing patchseries +[https://man.sr.ht/git.sr.ht/#sending-patches-upstream] and can also +send out the patches for you. There are a few drawbacks to this, as +you cannot edit your patches' status in Patchwork and you currently +can’t edit your display name with which the match emails are sent out +but it is an option if you cannot get git send-email to work with +your mail provider (i.e. O365); it shall not be considered the +official way of sending patches, but just a fallback. + +22.5.3. Cover letter + +If you want to present the whole patch set in a separate mail, add +--cover-letter to the git format-patch command (see man +git-format-patch for further information). This will generate a +template for an introduction e-mail to your patch series. + +A cover letter may be useful to introduce the changes you propose in +the following cases: + + * large number of commits in the series; + * deep impact of the changes in the rest of the project; + * RFC ^[4]; + * whenever you feel it will help presenting your work, your + choices, the review process, etc. + +22.5.4. Patches for maintenance branches + +When fixing bugs on a maintenance branch, bugs should be fixed on the +master branch first. The commit log for such a patch may then contain +a post-commit note specifying what branches are affected: + +package/foo: fix stuff + +Signed-off-by: Your Real Name +--- +Backport to: 2020.02.x, 2020.05.x +(2020.08.x not affected as the version was bumped) + +Those changes will then be backported by a maintainer to the affected +branches. + +However, some bugs may apply only to a specific release, for example +because it is using an older version of a package. In that case, +patches should be based off the maintenance branch, and the patch +subject prefix must include the maintenance branch name (for example +"[PATCH 2020.02.x]"). This can be done with the git format-patch flag +--subject-prefix: + +$ git format-patch --subject-prefix "PATCH 2020.02.x" \ + -M -s -o outgoing origin/2020.02.x + +Then send the patches with git send-email, as described above. + +22.5.5. Patch revision changelog + +When improvements are requested, the new revision of each commit +should include a changelog of the modifications between each +submission. Note that when your patch series is introduced by a cover +letter, an overall changelog may be added to the cover letter in +addition to the changelog in the individual commits. The best thing +to rework a patch series is by interactive rebasing: git rebase -i +origin/master. Consult the git manual for more information. + +When added to the individual commits, this changelog is added when +editing the commit message. Below the Signed-off-by section, add --- +and your changelog. + +Although the changelog will be visible for the reviewers in the mail +thread, as well as in patchwork [https://patchwork.ozlabs.org/project +/buildroot/list/], git will automatically ignores lines below --- +when the patch will be merged. This is the intended behavior: the +changelog is not meant to be preserved forever in the git history of +the project. + +Hereafter the recommended layout: + +Patch title: short explanation, max 72 chars + +A paragraph that explains the problem, and how it manifests itself. If +the problem is complex, it is OK to add more paragraphs. All paragraphs +should be wrapped at 72 characters. + +A paragraph that explains the root cause of the problem. Again, more +than one paragraph is OK. + +Finally, one or more paragraphs that explain how the problem is solved. +Don't hesitate to explain complex solutions in detail. + +Signed-off-by: John DOE + +--- +Changes v2 -> v3: + - foo bar (suggested by Jane) + - bar buz + +Changes v1 -> v2: + - alpha bravo (suggested by John) + - charly delta + +Any patch revision should include the version number. The version +number is simply composed of the letter v followed by an integer +greater or equal to two (i.e. "PATCH v2", "PATCH v3" …). + +This can be easily handled with git format-patch by using the option +--subject-prefix: + +$ git format-patch --subject-prefix "PATCH v4" \ + -M -s -o outgoing origin/master + +Since git version 1.8.1, you can also use -v (where is the +version number): + +$ git format-patch -v4 -M -s -o outgoing origin/master + +When you provide a new version of a patch, please mark the old one as +superseded in patchwork [https://patchwork.ozlabs.org/project/ +buildroot/list/]. You need to create an account on patchwork [https:/ +/patchwork.ozlabs.org/project/buildroot/list/] to be able to modify +the status of your patches. Note that you can only change the status +of patches you submitted yourself, which means the email address you +register in patchwork [https://patchwork.ozlabs.org/project/buildroot +/list/] should match the one you use for sending patches to the +mailing list. + +You can also add the --in-reply-to= option when +submitting a patch to the mailing list. The id of the mail to reply +to can be found under the "Message Id" tag on patchwork [https:// +patchwork.ozlabs.org/project/buildroot/list/]. The advantage of +in-reply-to is that patchwork will automatically mark the previous +version of the patch as superseded. + +22.6. Reporting issues/bugs or getting help + +Before reporting any issue, please check in the mailing list archive +whether someone has already reported and/or fixed a similar problem. + +However you choose to report bugs or get help, either by opening a +bug in the bug tracker or by sending a mail to the mailing list, +there are a number of details to provide in order to help people +reproduce and find a solution to the issue. + +Try to think as if you were trying to help someone else; in that +case, what would you need? + +Here is a short list of details to provide in such case: + + * host machine (OS/release) + * version of Buildroot + * target for which the build fails + * package(s) for which the build fails + * the command that fails and its output + * any information you think that may be relevant + +Additionally, you should add the .config file (or if you know how, a +defconfig; see Section 9.3, “Storing the Buildroot configuration”). + +If some of these details are too large, do not hesitate to use a +pastebin service. Note that not all available pastebin services will +preserve Unix-style line terminators when downloading raw pastes. +Following pastebin services are known to work correctly: - https:// +gist.github.com/ - http://code.bulix.org/ + +22.7. Using the runtime tests framework + +Buildroot includes a run-time testing framework built upon Python +scripting and QEMU runtime execution. The goals of the framework are +the following: + + * build a well defined Buildroot configuration + * optionally, verify some properties of the build output + * optionally, boot the build results under Qemu, and verify that a + given feature is working as expected + +The entry point to use the runtime tests framework is the support/ +testing/run-tests tool, which has a series of options documented in +the tool’s help -h description. Some common options include setting +the download folder, the output folder, keeping build output, and for +multiple test cases, you can set the JLEVEL for each. + +Here is an example walk through of running a test case. + + * For a first step, let us see what all the test case options are. + The test cases can be listed by executing support/testing/ + run-tests -l. These tests can all be run individually during test + development from the console. Both one at a time and selectively + as a group of a subset of tests. + +$ support/testing/run-tests -l +List of tests +test_run (tests.utils.test_check_package.TestCheckPackage) +test_run (tests.toolchain.test_external.TestExternalToolchainBuildrootMusl) ... ok +test_run (tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc) ... ok +test_run (tests.toolchain.test_external.TestExternalToolchainCCache) ... ok +test_run (tests.toolchain.test_external.TestExternalToolchainCtngMusl) ... ok +test_run (tests.toolchain.test_external.TestExternalToolchainLinaroArm) ... ok +test_run (tests.toolchain.test_external.TestExternalToolchainSourceryArmv4) ... ok +test_run (tests.toolchain.test_external.TestExternalToolchainSourceryArmv5) ... ok +test_run (tests.toolchain.test_external.TestExternalToolchainSourceryArmv7) ... ok +[snip] +test_run (tests.init.test_systemd.TestInitSystemSystemdRoFull) ... ok +test_run (tests.init.test_systemd.TestInitSystemSystemdRoIfupdown) ... ok +test_run (tests.init.test_systemd.TestInitSystemSystemdRoNetworkd) ... ok +test_run (tests.init.test_systemd.TestInitSystemSystemdRwFull) ... ok +test_run (tests.init.test_systemd.TestInitSystemSystemdRwIfupdown) ... ok +test_run (tests.init.test_systemd.TestInitSystemSystemdRwNetworkd) ... ok +test_run (tests.init.test_busybox.TestInitSystemBusyboxRo) ... ok +test_run (tests.init.test_busybox.TestInitSystemBusyboxRoNet) ... ok +test_run (tests.init.test_busybox.TestInitSystemBusyboxRw) ... ok +test_run (tests.init.test_busybox.TestInitSystemBusyboxRwNet) ... ok + +Ran 157 tests in 0.021s + +OK + + * Then, to run one test case: + +$ support/testing/run-tests -d dl -o output_folder -k tests.init.test_busybox.TestInitSystemBusyboxRw +15:03:26 TestInitSystemBusyboxRw Starting +15:03:28 TestInitSystemBusyboxRw Building +15:08:18 TestInitSystemBusyboxRw Building done +15:08:27 TestInitSystemBusyboxRw Cleaning up +. +Ran 1 test in 301.140s + +OK + +The standard output indicates if the test is successful or not. By +default, the output folder for the test is deleted automatically +unless the option -k is passed to keep the output directory. + +22.7.1. Creating a test case + +Within the Buildroot repository, the testing framework is organized +at the top level in support/testing/ by folders of conf, infra and +tests. All the test cases live under the tests folder and are +organized in various folders representing the category of test. + +The best way to get familiar with how to create a test case is to +look at a few of the basic file system support/testing/tests/fs/ and +init support/testing/tests/init/ test scripts. Those tests give good +examples of a basic tests that include both checking the build +results, and doing runtime tests. There are other more advanced cases +that use things like nested br2-external folders to provide skeletons +and additional packages. + +Creating a basic test case involves: + + * Defining a test class that inherits from infra.basetest.BRTest + * Defining the config member of the test class, to the Buildroot + configuration to build for this test case. It can optionally rely + on configuration snippets provided by the runtime test + infrastructure: infra.basetest.BASIC_TOOLCHAIN_CONFIG to get a + basic architecture/toolchain configuration, and + infra.basetest.MINIMAL_CONFIG to not build any filesystem. The + advantage of using infra.basetest.BASIC_TOOLCHAIN_CONFIG is that + a matching Linux kernel image is provided, which allows to boot + the resulting image in Qemu without having to build a Linux + kernel image as part of the test case, therefore significant + decreasing the build time required for the test case. + * Implementing a def test_run(self): function to implement the + actual tests to run after the build has completed. They may be + tests that verify the build output, by running command on the + host using the run_cmd_on_host() helper function. Or they may + boot the generated system in Qemu using the Emulator object + available as self.emulator in the test case. For example + self.emulator.boot() allows to boot the system in Qemu, + self.emulator.login() allows to login, self.emulator.run() allows + to run shell commands inside Qemu. + +After creating the test script, add yourself to the DEVELOPERS file +to be the maintainer of that test case. + +22.7.2. Debugging a test case + +When a test case runs, the output_folder will contain the following: + +$ ls output_folder/ +TestInitSystemBusyboxRw/ +TestInitSystemBusyboxRw-build.log +TestInitSystemBusyboxRw-run.log + +TestInitSystemBusyboxRw/ is the Buildroot output directory, and it is +preserved only if the -k option is passed. + +TestInitSystemBusyboxRw-build.log is the log of the Buildroot build. + +TestInitSystemBusyboxRw-run.log is the log of the Qemu boot and test. +This file will only exist if the build was successful and the test +case involves booting under Qemu. + +If you want to manually run Qemu to do manual tests of the build +result, the first few lines of TestInitSystemBusyboxRw-run.log +contain the Qemu command line to use. + +You can also make modifications to the current sources inside the +output_folder (e.g. for debug purposes) and rerun the standard +Buildroot make targets (in order to regenerate the complete image +with the new modifications) and then rerun the test. + +22.7.3. Runtime tests and Gitlab CI + +All runtime tests are regularly executed by Buildroot Gitlab CI +infrastructure, see .gitlab.yml and https://gitlab.com/buildroot.org/ +buildroot/-/jobs. + +You can also use Gitlab CI to test your new test cases, or verify +that existing tests continue to work after making changes in +Buildroot. + +In order to achieve this, you need to create a fork of the Buildroot +project on Gitlab, and be able to push branches to your Buildroot +fork on Gitlab. + +The name of the branch that you push will determine if a Gitlab CI +pipeline will be triggered or not, and for which test cases. + +In the examples below, the component of the branch name is an +arbitrary string you choose. + + * To trigger all run-test test case jobs, push a branch that ends + with -runtime-tests: + + $ git push gitlab HEAD:-runtime-tests + + * To trigger one or several test case jobs, push a branch that ends + with the complete test case name + (tests.init.test_busybox.TestInitSystemBusyboxRo) or with the + name of a category of tests (tests.init.test_busybox): + + $ git push gitlab HEAD:- + +Example to run one test: + + $ git push gitlab HEAD:foo-tests.init.test_busybox.TestInitSystemBusyboxRo + +Examples to run several tests part of the same group: + + $ git push gitlab HEAD:foo-tests.init.test_busybox + $ git push gitlab HEAD:foo-tests.init + + +--------------------------------------------------------------------- + +^[4] RFC: (Request for comments) change proposal + +Chapter 23. DEVELOPERS file and get-developers + +The main Buildroot directory contains a file named DEVELOPERS that +lists the developers involved with various areas of Buildroot. Thanks +to this file, the get-developers tool allows to: + + * Calculate the list of developers to whom patches should be sent, + by parsing the patches and matching the modified files with the + relevant developers. See Section 22.5, “Submitting patches” for + details. + * Find which developers are taking care of a given architecture or + package, so that they can be notified when a build failure occurs + on this architecture or package. This is done in interaction with + Buildroot’s autobuild infrastructure. + +We ask developers adding new packages, new boards, or generally new +functionality in Buildroot, to register themselves in the DEVELOPERS +file. As an example, we expect a developer contributing a new package +to include in his patch the appropriate modification to the +DEVELOPERS file. + +The DEVELOPERS file format is documented in detail inside the file +itself. + +The get-developers tool, located in utils/ allows to use the +DEVELOPERS file for various tasks: + + * When passing one or several patches as command line argument, + get-developers will return the appropriate git send-email + command. If the -e option is passed, only the email addresses are + printed in a format suitable for git send-email --cc-cmd. + * When using the -a command line option, get-developers will + return the list of developers in charge of the given + architecture. + * When using the -p command line option, get-developers + will return the list of developers in charge of the given + package. + * When using the -c command line option, get-developers will look + at all files under version control in the Buildroot repository, + and list the ones that are not handled by any developer. The + purpose of this option is to help completing the DEVELOPERS file. + * When using the -v command line option, it validates the integrity + of the DEVELOPERS file and will note WARNINGS for items that + don’t match. + +Chapter 24. Release Engineering + +24.1. Releases + +The Buildroot project makes quarterly releases with monthly bugfix +releases. The first release of each year is a long term support +release, LTS. + + * Quarterly releases: 2020.02, 2020.05, 2020.08, and 2020.11 + * Bugfix releases: 2020.02.1, 2020.02.2, … + * LTS releases: 2020.02, 2021.02, … + +Releases are supported until the first bugfix release of the next +release, e.g., 2020.05.x is EOL when 2020.08.1 is released. + +LTS releases are supported until the first bugfix release of the next +LTS, e.g., 2020.02.x is supported until 2021.02.1 is released. + +24.2. Development + +Each release cycle consist of two months of development on the master +branch and one month stabilization before the release is made. During +this phase no new features are added to master, only bugfixes. + +The stabilization phase starts with tagging -rc1, and every week +until the release, another release candidate is tagged. + +To handle new features and version bumps during the stabilization +phase, a next branch may be created for these features. Once the +current release has been made, the next branch is merged into master +and the development cycle for the next release continues there. + +Part IV. Appendix + +Table of Contents + +25. Makedev syntax documentation +26. Makeusers syntax documentation + 26.1. Caveat with automatic UIDs and GIDs +27. Migrating from older Buildroot versions + 27.1. General approach + 27.2. Migrating to 2016.11 + 27.3. Migrating to 2017.08 + 27.4. Migrating to 2023.11 + 27.5. Migrating to 2024.05 + +Chapter 25. Makedev syntax documentation + +The makedev syntax is used in several places in Buildroot to define +changes to be made for permissions, or which device files to create +and how to create them, in order to avoid calls to mknod. + +This syntax is derived from the makedev utility, and more complete +documentation can be found in the package/makedevs/README file. + +It takes the form of a space separated list of fields, one file per +line; the fields are: + ++--------------------------------------------------+ +|name|type|mode|uid|gid|major|minor|start|inc|count| ++--------------------------------------------------+ + +There are a few non-trivial blocks: + + * name is the path to the file you want to create/modify + * type is the type of the file, being one of: + + + f: a regular file, which must already exist + + F: a regular file, which is ignored and not created if + missing + + d: a directory, which is created, as well as its parents, if + missing + + r: a directory recursively, which must already exist + + c: a character device file, which parent directory must exist + + b: a block device file, which parent directory must exist + + p: a named pipe, which parent directory must exist + * mode are the usual permissions settings (only numerical values + are allowed); for type d, the mode of existing parents is not + changed, but the mode of created parents is set; for types f, F, + and r, mode can also be set to -1 to not change the mode (and + only change uid and gid) + * uid and gid are the UID and GID to set on this file; can be + either numerical values or actual names + * major and minor are here for device files, set to - for other + files + * start, inc and count are for when you want to create a batch of + files, and can be reduced to a loop, beginning at start, + incrementing its counter by inc until it reaches count + +Let’s say you want to change the ownership and permissions of a given +file; using this syntax, you will need to write: + +/usr/bin/foo f 755 0 0 - - - - - +/usr/bin/bar f 755 root root - - - - - +/data/buz f 644 buz-user buz-group - - - - - +/data/baz f -1 baz-user baz-group - - - - - + +Alternatively, if you want to change owner of a directory +recursively, you can write (to set UID to foo and GID to bar for the +directory /usr/share/myapp and all files and directories below it): + +/usr/share/myapp r -1 foo bar - - - - - + +On the other hand, if you want to create the device file /dev/hda and +the corresponding 15 files for the partitions, you will need for /dev +/hda: + +/dev/hda b 640 root root 3 0 0 0 - + +and then for device files corresponding to the partitions of /dev/ +hda, /dev/hdaX, X ranging from 1 to 15: + +/dev/hda b 640 root root 3 1 1 1 15 + +Extended attributes are supported if +BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES is enabled. This +is done by adding a line starting with |xattr after the line +describing the file. Right now, only capability is supported as +extended attribute. + ++------------------+ +||xattr|capability | ++------------------+ + + * |xattr is a "flag" that indicate an extended attribute + * capability is a capability to add to the previous file + +If you want to add the capability cap_sys_admin to the binary foo, +you will write : + +/usr/bin/foo f 755 root root - - - - - +|xattr cap_sys_admin+eip + +You can add several capabilities to a file by using several |xattr +lines. If you want to add the capability cap_sys_admin and +cap_net_admin to the binary foo, you will write : + +/usr/bin/foo f 755 root root - - - - - +|xattr cap_sys_admin+eip +|xattr cap_net_admin+eip + +Chapter 26. Makeusers syntax documentation + +The syntax to create users is inspired by the makedev syntax, above, +but is specific to Buildroot. + +The syntax for adding a user is a space-separated list of fields, one +user per line; the fields are: + ++---------------------------------------------------------+ +|username|uid|group|gid|password|home|shell|groups|comment| ++---------------------------------------------------------+ + +Where: + + * username is the desired user name (aka login name) for the user. + It can not be root, and must be unique. If set to -, then just a + group will be created. + * uid is the desired UID for the user. It must be unique, and not + 0. If set to -1 or -2, then a unique UID will be computed by + Buildroot, with -1 denoting a system UID from [100…999] and -2 + denoting a user UID from [1000…1999]. + * group is the desired name for the user’s main group. It can not + be root. If the group does not exist, it will be created. + * gid is the desired GID for the user’s main group. It must be + unique, and not 0. If set to -1 or -2, and the group does not + already exist, then a unique GID will be computed by Buildroot, + with -1 denoting a system GID from [100…999] and -2 denoting a + user GID from [1000…1999]. + * password is the crypt(3)-encoded password. If prefixed with !, + then login is disabled. If prefixed with =, then it is + interpreted as clear-text, and will be crypt-encoded (using MD5). + If prefixed with !=, then the password will be crypt-encoded + (using MD5) and login will be disabled. If set to *, then login + is not allowed. If set to -, then no password value will be set. + * home is the desired home directory for the user. If set to -, no + home directory will be created, and the user’s home will be /. + Explicitly setting home to / is not allowed. + * shell is the desired shell for the user. If set to -, then /bin/ + false is set as the user’s shell. + * groups is the comma-separated list of additional groups the user + should be part of. If set to -, then the user will be a member of + no additional group. Missing groups will be created with an + arbitrary gid. + * comment (aka GECOS [https://en.wikipedia.org/wiki/Gecos_field] + field) is an almost-free-form text. + +There are a few restrictions on the content of each field: + + * except for comment, all fields are mandatory. + * except for comment, fields may not contain spaces. + * no field may contain a colon (:). + +If home is not -, then the home directory, and all files below, will +belong to the user and its main group. + +Examples: + +foo -1 bar -1 !=blabla /home/foo /bin/sh alpha,bravo Foo user + +This will create this user: + + * username (aka login name) is: foo + * uid is computed by Buildroot + * main group is: bar + * main group gid is computed by Buildroot + * clear-text password is: blabla, will be crypt(3)-encoded, and + login is disabled. + * home is: /home/foo + * shell is: /bin/sh + * foo is also a member of groups: alpha and bravo + * comment is: Foo user + +test 8000 wheel -1 = - /bin/sh - Test user + +This will create this user: + + * username (aka login name) is: test + * uid is : 8000 + * main group is: wheel + * main group gid is computed by Buildroot, and will use the value + defined in the rootfs skeleton + * password is empty (aka no password). + * home is / but will not belong to test + * shell is: /bin/sh + * test is not a member of any additional groups + * comment is: Test user + +26.1. Caveat with automatic UIDs and GIDs + +When updating buildroot or when packages are added or removed to/from +the configuration, it is possible that the automatic UIDs and GIDs +are changed. This can be a problem if persistent files were created +with that user or group: after upgrade, they will suddenly have a +different owner. + +Therefore, it is advisable to perpetuate the automatic IDs. This can +be done by adding a users table with the generated IDs. It is only +needed to do this for UIDs that actually create persistent files, +e.g. database. + +Chapter 27. Migrating from older Buildroot versions + +Some versions have introduced backward incompatibilities. This +section explains those incompatibilities, and for each explains what +to do to complete the migration. + +27.1. General approach + +To migrate from an older Buildroot version, take the following steps. + + 1. For all your configurations, do a build in the old Buildroot + environment. Run make graph-size. Save graphs/file-size-stats.csv + in a different location. Run make clean to remove the rest. + 2. Review the specific migration notes below and make the required + adaptations to external packages and custom build scripts. + 3. Update Buildroot. + 4. Run make menuconfig starting from the existing .config. + 5. If anything is enabled in the Legacy menu, check its help text, + unselect it, and save the configuration. + 6. For more details, review the git commit messages for the packages + that you need. Change into the packages directory and run git log + .. — . + 7. Build in the new Buildroot environment. + 8. Fix build issues in external packages (usually due to updated + dependencies). + 9. Run make graph-size. +10. Compare the new file-size-stats.csv with the original one, to + check if no required files have disappeared and if no new big + unneeded files have appeared. +11. For configuration (and other) files in a custom overlay that + overwrite files created by Buildroot, check if there are changes + in the Buildroot-generated file that need to be propagated to + your custom file. + +27.2. Migrating to 2016.11 + +Before Buildroot 2016.11, it was possible to use only one +br2-external tree at once. With Buildroot 2016.11 came the +possibility to use more than one simultaneously (for details, see +Section 9.2, “Keeping customizations outside of Buildroot”). + +This however means that older br2-external trees are not usable +as-is. A minor change has to be made: adding a name to your +br2-external tree. + +This can be done very easily in just a few steps: + + * First, create a new file named external.desc, at the root of your + br2-external tree, with a single line defining the name of your + br2-external tree: + + $ echo 'name: NAME_OF_YOUR_TREE' >external.desc + + Note. Be careful when choosing a name: It has to be unique and be + made with only ASCII characters from the set [A-Za-z0-9_]. + + * Then, change every occurence of BR2_EXTERNAL in your br2-external + tree with the new variable: + + $ find . -type f | xargs sed -i 's/BR2_EXTERNAL/BR2_EXTERNAL_NAME_OF_YOUR_TREE_PATH/g' + +Now, your br2-external tree can be used with Buildroot 2016.11 +onward. + +Note: This change makes your br2-external tree incompatible with +Buildroot before 2016.11. + +27.3. Migrating to 2017.08 + +Before Buildroot 2017.08, host packages were installed in $(HOST_DIR) +/usr (with e.g. the autotools' --prefix=$(HOST_DIR)/usr). With +Buildroot 2017.08, they are now installed directly in $(HOST_DIR). + +Whenever a package installs an executable that is linked with a +library in $(HOST_DIR)/lib, it must have an RPATH pointing to that +directory. + +An RPATH pointing to $(HOST_DIR)/usr/lib is no longer accepted. + +27.4. Migrating to 2023.11 + +Before Buildroot 2023.11, the subversion download backend +unconditionally retrieved the external references (objects with an +svn:externals property). Starting with 2023.11, externals are no +longer retrieved by default; if you need them, set +LIBFOO_SVN_EXTERNALS to YES. This change implies that: + + * the generated archive content may change, and thus the hashes may + need to be updated appropriately; + * the archive version suffix has been updated to -br3, so the hash + files must be updated appropriately. + +Before Buildroot 2023.11, it was possible (but undocumented and +unused) to apply architecture-specific patches, by prefixing the +patch filename with the architecture, e.g. +0001-some-changes.patch.arm and such a patch would only be applied +for that architecture. With Buildroot 2023.11, this is no longer +supported, and such patches are no longer applied at all. + +If you still need per-architecture patches, then you may provide a +pre-patch hook that copies the patches applicable to the configured +architecture, e.g.: + +define LIBFOO_ARCH_PATCHES + $(foreach p,$(wildcard $(LIBFOO_PKGDIR)/*.patch.$(ARCH)), \ + cp -f $(p) $(patsubst %.$(ARCH),%,$(p)) + ) +endef +LIBFOO_PRE_PATCH_HOOKS += LIBFOO_ARCH_PATCHES + +Note that no package in Buildroot has architecture-specific patches, +and that such patches will most probably not be accepted. + +27.5. Migrating to 2024.05 + +The download backends have been extended in various ways. + + * All locally generated tarballs are even more reproducible. Before + 2024.05, it was possible that the access mode of files in the + archives were not consistent when the download directory has + specific ACLs (e.g. with the default ACL set). This impacts the + archives generated for git and subversion repositories, as well + as those for vendored cargo and go packages. + * The git download backend now properly expands the export-subst + git attribute [https://git-scm.com/docs/gitattributes] when + generating archives. + * A newer tar version, 1.35, is required to generate the archives. + For compatibility reasons, tar 1.35 changes the way it stores + some fields (devmajor and devminor), which has an impact in the + metadata stored in the archives (but the content of files is not + affected). + +To accomodate those changes, the archive suffix has been updated or +added: + + * for git: -git4 + * for subversion: -svn5 + * for cargo (rust) packages: -cargo2 + * for go packages: -go2 + +Note that, if two such prefixes would apply to a generated archive, +like for a cargo package downloaded from git, both suffixes need to +be added, first the one for the download mechanism, then the one for +the vendoring, e.g.: libfoo-1.2.3-git4-cargo2.tar.gz. + +Because of this, the hash file of any custom packages or custom +versions for kernel and bootloaders must be updated. The following +sed scripts can automate the rename in the hash file (assuming such +files are kept under git): + +# For git and svn packages, which originally had -br2 resp. -br3 suffix +sed -r -i -e 's/-br2/-git4/; s/-br3/-svn5/' $( + git grep -l -E -- '-br2|-br3' -- '*.hash' +) + +# For go packages, which originally had no suffix +sed -r -i -e 's/(\.tar\.gz)$/-go2\1/' $( + git grep -l -E '\$\(eval \$\((host-)?golang-package\)\)' -- '*.mk' \ + |sed -r -e 's/\.mk$/.hash/' \ + |sort -u +) + +# For cargo packages, which originally had no suffix +sed -r -i -e 's/(\.tar\.gz)$/-cargo2\1/' $( + git grep -l -E '\$\(eval \$\((host-)?cargo-package\)\)' -- '*.mk' \ + |sed -r -e 's/\.mk$/.hash/' \ + |sort -u +) + +Note that the hash will have changed, so that needs to be updated +(manually) as well. + diff --git a/docs/manual/migrating.adoc b/docs/manual/migrating.adoc new file mode 100644 index 00000000..ed2be1c6 --- /dev/null +++ b/docs/manual/migrating.adoc @@ -0,0 +1,186 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[migrating-from-ol-versions]] +== Migrating from older Buildroot versions + +Some versions have introduced backward incompatibilities. This section +explains those incompatibilities, and for each explains what to do to +complete the migration. + +[[migrating-approach]] +=== General approach + +To migrate from an older Buildroot version, take the following steps. + +. For all your configurations, do a build in the old Buildroot + environment. Run +make graph-size+. Save + +graphs/file-size-stats.csv+ in a different location. Run +make + clean+ to remove the rest. +. Review the specific migration notes below and make the required + adaptations to external packages and custom build scripts. +. Update Buildroot. +. Run +make menuconfig+ starting from the existing +.config+. +. If anything is enabled in the Legacy menu, check its help text, + unselect it, and save the configuration. +. For more details, review the git commit messages for the packages that + you need. Change into the +packages+ directory and run + +git log .. -- +. +. Build in the new Buildroot environment. +. Fix build issues in external packages (usually due to updated + dependencies). +. Run +make graph-size+. +. Compare the new +file-size-stats.csv+ with the original one, to + check if no required files have disappeared and if no new big unneeded + files have appeared. +. For configuration (and other) files in a custom overlay that overwrite + files created by Buildroot, check if there are changes in the + Buildroot-generated file that need to be propagated to your custom + file. + +[[br2-external-converting]] +=== Migrating to 2016.11 + +Before Buildroot 2016.11, it was possible to use only one br2-external +tree at once. With Buildroot 2016.11 came the possibility to use more +than one simultaneously (for details, see xref:outside-br-custom[]). + +This however means that older br2-external trees are not usable as-is. +A minor change has to be made: adding a name to your br2-external tree. + +This can be done very easily in just a few steps: + + * First, create a new file named +external.desc+, at the root of your + br2-external tree, with a single line defining the name of your + br2-external tree: ++ +---- +$ echo 'name: NAME_OF_YOUR_TREE' >external.desc +---- ++ +.Note +Be careful when choosing a name: It has to be unique and be made +with only ASCII characters from the set +[A-Za-z0-9_]+. + + * Then, change every occurence of +BR2_EXTERNAL+ in your br2-external + tree with the new variable: ++ +---- +$ find . -type f | xargs sed -i 's/BR2_EXTERNAL/BR2_EXTERNAL_NAME_OF_YOUR_TREE_PATH/g' +---- + +Now, your br2-external tree can be used with Buildroot 2016.11 onward. + +.Note: +This change makes your br2-external tree incompatible with Buildroot +before 2016.11. + +[[migrating-host-usr]] +=== Migrating to 2017.08 + +Before Buildroot 2017.08, host packages were installed in +$(HOST_DIR)/usr+ +(with e.g. the autotools' +--prefix=$(HOST_DIR)/usr+). With Buildroot +2017.08, they are now installed directly in +$(HOST_DIR)+. + +Whenever a package installs an executable that is linked with a library +in +$(HOST_DIR)/lib+, it must have an RPATH pointing to that directory. + +An RPATH pointing to +$(HOST_DIR)/usr/lib+ is no longer accepted. + +[[migrating-svn-externals]] +=== Migrating to 2023.11 + +Before Buildroot 2023.11, the subversion download backend unconditionally +retrieved the external references (objects with an `svn:externals` +property). Starting with 2023.11, externals are no longer retrieved by +default; if you need them, set +LIBFOO_SVN_EXTERNALS+ to +YES+. This +change implies that: + +* the generated archive content may change, and thus the hashes may need + to be updated appropriately; +* the archive version suffix has been updated to +-br3+, so the hash + files must be updated appropriately. + +Before Buildroot 2023.11, it was possible (but undocumented and unused) +to apply architecture-specific patches, by prefixing the patch filename +with the architecture, e.g. `0001-some-changes.patch.arm` and such a +patch would only be applied for that architecture. With Buildroot 2023.11, +this is no longer supported, and such patches are no longer applied at +all. + +If you still need per-architecture patches, then you may provide a +xref:hooks[pre-patch hook] that copies the patches applicable to the +configured architecture, e.g.: + +---- +define LIBFOO_ARCH_PATCHES + $(foreach p,$(wildcard $(LIBFOO_PKGDIR)/*.patch.$(ARCH)), \ + cp -f $(p) $(patsubst %.$(ARCH),%,$(p)) + ) +endef +LIBFOO_PRE_PATCH_HOOKS += LIBFOO_ARCH_PATCHES +---- + +Note that no package in Buildroot has architecture-specific patches, and +that such patches will most probably not be accepted. + +[[migrating-git-attributes]] +=== Migrating to 2024.05 + +The download backends have been extended in various ways. + +* All locally generated tarballs are even more reproducible. Before + 2024.05, it was possible that the access mode of files in the archives + were not consistent when the download directory has specific ACLs (e.g. + with the +default+ ACL set). This impacts the archives generated for + git and subversion repositories, as well as those for vendored cargo + and go packages. +* The git download backend now properly expands the `export-subst` + https://git-scm.com/docs/gitattributes[git attribute] when generating + archives. +* A newer +tar+ version, _1.35_, is required to generate the archives. + For compatibility reasons, +tar+ 1.35 changes the way it stores some + fields (`devmajor` and `devminor`), which has an impact in the metadata + stored in the archives (but the content of files is not affected). + +To accomodate those changes, the archive suffix has been updated or +added: + +* for git: +-git4+ +* for subversion: +-svn5+ +* for cargo (rust) packages: +-cargo2+ +* for go packages: +-go2+ + +Note that, if two such prefixes would apply to a generated archive, like +for a cargo package downloaded from git, both suffixes need to be added, +first the one for the download mechanism, then the one for the vendoring, +e.g.: +libfoo-1.2.3-git4-cargo2.tar.gz+. + +Because of this, the hash file of any custom packages or custom versions +for kernel and bootloaders must be updated. The following sed scripts can +automate the rename in the hash file (assuming such files are kept under +git): + +---- +# For git and svn packages, which originally had -br2 resp. -br3 suffix +sed -r -i -e 's/-br2/-git4/; s/-br3/-svn5/' $( + git grep -l -E -- '-br2|-br3' -- '*.hash' +) + +# For go packages, which originally had no suffix +sed -r -i -e 's/(\.tar\.gz)$/-go2\1/' $( + git grep -l -E '\$\(eval \$\((host-)?golang-package\)\)' -- '*.mk' \ + |sed -r -e 's/\.mk$/.hash/' \ + |sort -u +) + +# For cargo packages, which originally had no suffix +sed -r -i -e 's/(\.tar\.gz)$/-cargo2\1/' $( + git grep -l -E '\$\(eval \$\((host-)?cargo-package\)\)' -- '*.mk' \ + |sed -r -e 's/\.mk$/.hash/' \ + |sort -u +) +---- + +Note that the hash _will_ have changed, so that needs to be updated +(manually) as well. diff --git a/docs/manual/package-make-target.adoc b/docs/manual/package-make-target.adoc new file mode 100644 index 00000000..7a7ba7f7 --- /dev/null +++ b/docs/manual/package-make-target.adoc @@ -0,0 +1,100 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[pkg-build-steps]] + +==== Package-specific _make_ targets + +Running +make + builds and installs that particular package +and its dependencies. + +For packages relying on the Buildroot infrastructure, there are +numerous special make targets that can be called independently like +this: + +---- +make - +---- + +The package build targets are (in the order they are executed): + +[width="90%",cols="^1,4",options="header"] +|=================================================== +| command/target | Description + +| +source+ | Fetch the source (download the tarball, clone +the source repository, etc) + +| +depends+ | Build and install all dependencies required to +build the package + +| +extract+ | Put the source in the package build directory +(extract the tarball, copy the source, etc) + +| +patch+ | Apply the patches, if any + +| +configure+ | Run the configure commands, if any + +| +build+ | Run the compilation commands + +| +install-staging+ | +*target package:* Run the installation of the package in the +staging directory, if necessary + +| +install-target+ | +*target package:* Run the installation of the package in the +target directory, if necessary + +| +install+ | +*target package:* Run the 2 previous installation commands + +*host package:* Run the installation of the package in the host +directory + +|=================================================== + +Additionally, there are some other useful make targets: + +[width="90%",cols="^1,4",options="header"] +|=================================================== +| command/target | Description + +| +show-depends+ | Displays the first-order dependencies required to build the +package + +| +show-recursive-depends+ | Recursively displays the dependencies + required to build the package + +| +show-rdepends+ | Displays the first-order reverse dependencies of + the package (i.e packages that directly depend on it) + +| +show-recursive-rdepends+ | Recursively displays the reverse + dependencies of the package (i.e the packages that depend on it, + directly or indirectly) + +| +graph-depends+ | Generate a dependency graph of the package, in the +context of the current Buildroot configuration. See +xref:graph-depends[this section] for more details about dependency +graphs. + +| +graph-rdepends+ | Generate a graph of this package reverse + dependencies (i.e the packages that depend on it, directly or + indirectly) + +| +graph-both-depends+ | Generate a graph of this package in both + directions (i.e the packages that depend on it and on which it + depends, directly or indirectly) + +| +dirclean+ | Remove the whole package build directory + +| +reinstall+ | Re-run the install commands + +| +rebuild+ | Re-run the compilation commands - this only makes +sense when using the +OVERRIDE_SRCDIR+ feature or when you modified a file +directly in the build directory + +| +reconfigure+ | Re-run the configure commands, then rebuild - this only +makes sense when using the +OVERRIDE_SRCDIR+ feature or when you modified a +file directly in the build directory + +|=================================================== diff --git a/docs/manual/patch-policy.adoc b/docs/manual/patch-policy.adoc new file mode 100644 index 00000000..a4bc5f39 --- /dev/null +++ b/docs/manual/patch-policy.adoc @@ -0,0 +1,180 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[patch-policy]] + +== Patching a package + +While integrating a new package or updating an existing one, it may be +necessary to patch the source of the software to get it cross-built within +Buildroot. + +Buildroot offers an infrastructure to automatically handle this during +the builds. It supports three ways of applying patch sets: downloaded patches, +patches supplied within buildroot and patches located in a user-defined +global patch directory. + +=== Providing patches + +==== Downloaded + +If it is necessary to apply a patch that is available for download, then add it +to the +_PATCH+ variable. If an entry contains +://+, +then Buildroot will assume it is a full URL and download the patch +from this location. Otherwise, Buildroot will assume that the patch should be +downloaded from +_SITE+. It can be a single patch, +or a tarball containing a patch series. + +Like for all downloads, a hash should be added to the +.hash+ +file. + +This method is typically used for packages from Debian. + +==== Within Buildroot + +Most patches are provided within Buildroot, in the package +directory; these typically aim to fix cross-compilation, libc support, +or other such issues. + +These patch files should be named +-.patch+. + +.Notes +- The patch files coming with Buildroot should not contain any package version + reference in their filename. +- The field ++ in the patch file name refers to the 'apply order', + and shall start at 1; It is preferred to pad the number with zeros up to 4 + digits, like 'git-format-patch' does. E.g.: +0001-foobar-the-buz.patch+ +- The patch email subject prefix shall not be numbered. Patches shall + be generated with the +git format-patch -N+ command, since this + numbering is automatically added for series. For example, the patch + subject line should look like +Subject: [PATCH] foobar the buz+ rather + than +Subject: [PATCH n/m] foobar the buz+. +- Previously, it was mandatory for patches to be prefixed with the name of + the package, like +--.patch+, but that is + no longer the case. Existing packages will be fixed as time passes. 'Do + not prefix patches with the package name.' +- Previously, a +series+ file, as used by +quilt+, could also be added in + the package directory. In that case, the +series+ file defines the patch + application order. This is deprecated, and will be removed in the future. + 'Do not use a series file.' + + +==== Global patch directory + +The +BR2_GLOBAL_PATCH_DIR+ configuration file option can be +used to specify a space separated list of one or more directories +containing global package patches. See xref:customize-patches[] for +details. + +[[patch-apply-order]] +=== How patches are applied + +. Run the +_PRE_PATCH_HOOKS+ commands if defined; + +. Cleanup the build directory, removing any existing +*.rej+ files; + +. If +_PATCH+ is defined, then patches from these + tarballs are applied; + +. If there are some +*.patch+ files in the package's Buildroot + directory or in a package subdirectory named ++, + then: ++ +* If a +series+ file exists in the package directory, then patches are + applied according to the +series+ file; ++ +* Otherwise, patch files matching +*.patch+ are applied in alphabetical + order. + So, to ensure they are applied in the right order, it is highly + recommended to name the patch files like this: + +-.patch+, where ++ refers to the + 'apply order'. + +. If +BR2_GLOBAL_PATCH_DIR+ is defined, the directories will be + enumerated in the order they are specified. The patches are applied + as described in the previous step. + +. Run the +_POST_PATCH_HOOKS+ commands if defined. + +If something goes wrong in the steps _3_ or _4_, then the build fails. + +=== Format and licensing of the package patches + +Patches are released under the same license as the software they apply +to (see xref:legal-info-buildroot[]). + +A message explaining what the patch does, and why it is needed, should +be added in the header commentary of the patch. + +You should add a +Signed-off-by+ statement in the header of the each +patch to help with keeping track of the changes and to certify that the +patch is released under the same license as the software that is modified. + +If the software is under version control, it is recommended to use the +upstream SCM software to generate the patch set. + +Otherwise, concatenate the header with the output of the ++diff -purN package-version.orig/ package-version/+ command. + +If you update an existing patch (e.g. when bumping the package version), +make sure the existing From header and Signed-off-by tags are not +removed, but do update the rest of the patch comment when appropriate. + +At the end, the patch should look like: + +---- +configure.ac: add C++ support test + +Signed-off-by: John Doe + +--- configure.ac.orig ++++ configure.ac +@@ -40,2 +40,12 @@ + +AC_PROG_MAKE_SET ++ ++AC_CACHE_CHECK([whether the C++ compiler works], ++ [rw_cv_prog_cxx_works], ++ [AC_LANG_PUSH([C++]) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], ++ [rw_cv_prog_cxx_works=yes], ++ [rw_cv_prog_cxx_works=no]) ++ AC_LANG_POP([C++])]) ++ ++AM_CONDITIONAL([CXX_WORKS], [test "x$rw_cv_prog_cxx_works" = "xyes"]) +---- + +=== Additional patch documentation + +Ideally, all patches should document an upstream patch or patch submission, when +applicable, via the +Upstream+ trailer. + +When backporting an upstream patch that has been accepted into mainline, it is +preferred that the URL to the commit is referenced: + +---- +Upstream: +---- + +If a new issue is identified in Buildroot and upstream is generally affected by +the issue (it's not a Buildroot specific issue), users should submit the patch +upstream and provide a link to that submission when possible: + +---- +Upstream: +---- + +Patches that have been submitted but were denied upstream should note that and +include comments about why the patch is being used despite the upstream status. + +Note: in any of the above scenarios, it is also sensible to add a few words +about any changes to the patch that may have been necessary. + +If a patch does not apply upstream then this should be noted with a comment: + +---- +Upstream: N/A +---- + +Adding this documentation helps streamline the patch review process during +package version updates. \ No newline at end of file diff --git a/docs/manual/prerequisite.adoc b/docs/manual/prerequisite.adoc new file mode 100644 index 00000000..5d3aa297 --- /dev/null +++ b/docs/manual/prerequisite.adoc @@ -0,0 +1,102 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[requirement]] +== System requirements + +Buildroot is designed to run on Linux systems. + +While Buildroot itself will build most host packages it needs for the +compilation, certain standard Linux utilities are expected to be +already installed on the host system. Below you will find an overview of +the mandatory and optional packages (note that package names may vary +between distributions). + +[[requirement-mandatory]] + +=== Mandatory packages + +* Build tools: + +** +which+ +** +sed+ +** +make+ (version 3.81 or any later) +** +binutils+ +** +build-essential+ (only for Debian based systems) +** +diffutils+ +** +gcc+ (version 4.8 or any later) +** `g++` (version 4.8 or any later) +** +bash+ +** +patch+ +** +gzip+ +** +bzip2+ +** +perl+ (version 5.8.7 or any later) +** +tar+ +** +cpio+ +** +unzip+ +** +rsync+ +** +file+ (must be in +/usr/bin/file+) +** +bc+ +** +findutils+ + +* Source fetching tools: +** +wget+ + +[[requirement-optional]] + +=== Optional packages + +* Recommended dependencies: ++ +Some features or utilities in Buildroot, like the legal-info, or the +graph generation tools, have additional dependencies. Although they +are not mandatory for a simple build, they are still highly recommended: ++ +** +python+ (version 2.7 or any later) + +* Configuration interface dependencies: ++ +For these libraries, you need to install both runtime and development +data, which in many distributions are packaged separately. The +development packages typically have a _-dev_ or _-devel_ suffix. ++ +** +ncurses5+ to use the 'menuconfig' interface +** +qt5+ to use the 'xconfig' interface +** +glib2+, +gtk2+ and +glade2+ to use the 'gconfig' interface + +* Source fetching tools: ++ +In the official tree, most of the package sources are retrieved using ++wget+ from _ftp_, _http_ or _https_ locations. A few packages are only +available through a version control system. Moreover, Buildroot is +capable of downloading sources via other tools, like +git+ or +scp+ +(refer to xref:download-infra[] for more details). If you enable +packages using any of these methods, you will need to install the +corresponding tool on the host system: ++ +** +bazaar+ +** +curl+ +** +cvs+ +** +git+ +** +mercurial+ +** +scp+ +** +sftp+ +** +subversion+ + +* Java-related packages, if the Java Classpath needs to be built for + the target system: +** The +javac+ compiler +** The +jar+ tool + +* Documentation generation tools: +** +asciidoc+, version 8.6.3 or higher +** +w3m+ +** +python+ with the +argparse+ module (automatically present in 2.7+ and 3.2+) +** +dblatex+ (required for the pdf manual only) + +* Graph generation tools: +** +graphviz+ to use 'graph-depends' and '-graph-depends' +** +python-matplotlib+ to use 'graph-build' + +* Package statistics tools ('pkg-stats'): +** +python-aiohttp+ diff --git a/docs/manual/quickstart.adoc b/docs/manual/quickstart.adoc new file mode 100644 index 00000000..60503103 --- /dev/null +++ b/docs/manual/quickstart.adoc @@ -0,0 +1,125 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== Buildroot quick start + +*Important*: you can and should *build everything as a normal user*. There +is no need to be root to configure and use Buildroot. By running all +commands as a regular user, you protect your system against packages +behaving badly during compilation and installation. + +The first step when using Buildroot is to create a configuration. +Buildroot has a nice configuration tool similar to the one you can +find in the http://www.kernel.org/[Linux kernel] or in +http://www.busybox.net/[BusyBox]. + +From the buildroot directory, run + +---- + $ make menuconfig +---- + +for the original curses-based configurator, or + +---- + $ make nconfig +---- + +for the new curses-based configurator, or + +---- + $ make xconfig +---- + +for the Qt-based configurator, or + +---- + $ make gconfig +---- + +for the GTK-based configurator. + +All of these "make" commands will need to build a configuration +utility (including the interface), so you may need to install +"development" packages for relevant libraries used by the +configuration utilities. Refer to xref:requirement[] for more details, +specifically the xref:requirement-optional[optional requirements] +to get the dependencies of your favorite interface. + +For each menu entry in the configuration tool, you can find associated +help that describes the purpose of the entry. Refer to xref:configure[] +for details on some specific configuration aspects. + +Once everything is configured, the configuration tool generates a ++.config+ file that contains the entire configuration. This file will be +read by the top-level Makefile. + +To start the build process, simply run: + +---- + $ make +---- + +By default, Buildroot does not support top-level parallel build, so +running +make -jN+ is not necessary. There is however experimental +support for top-level parallel build, see +xref:top-level-parallel-build[]. + +The `make` command will generally perform the following steps: + +* download source files (as required); +* configure, build and install the cross-compilation toolchain, or + simply import an external toolchain; +* configure, build and install selected target packages; +* build a kernel image, if selected; +* build a bootloader image, if selected; +* create a root filesystem in selected formats. + +Buildroot output is stored in a single directory, +output/+. +This directory contains several subdirectories: + +* +images/+ where all the images (kernel image, bootloader and root + filesystem images) are stored. These are the files you need to put + on your target system. + +* +build/+ where all the components are built (this includes tools + needed by Buildroot on the host and packages compiled for the + target). This directory contains one subdirectory for each of these + components. + +* +host/+ contains both the tools built for the host, and the sysroot + of the target toolchain. The former is an installation of tools + compiled for the host that are needed for the proper execution of + Buildroot, including the cross-compilation toolchain. The latter + is a hierarchy similar to a root filesystem hierarchy. It contains + the headers and libraries of all user-space packages that provide + and install libraries used by other packages. However, this + directory is 'not' intended to be the root filesystem for the target: + it contains a lot of development files, unstripped binaries and + libraries that make it far too big for an embedded system. These + development files are used to compile libraries and applications for + the target that depend on other libraries. + +* +staging/+ is a symlink to the target toolchain sysroot inside + +host/+, which exists for backwards compatibility. + +* +target/+ which contains 'almost' the complete root filesystem for + the target: everything needed is present except the device files in + +/dev/+ (Buildroot can't create them because Buildroot doesn't run + as root and doesn't want to run as root). Also, it doesn't have the correct + permissions (e.g. setuid for the busybox binary). Therefore, this directory + *should not be used on your target*. Instead, you should use one of + the images built in the +images/+ directory. If you need an + extracted image of the root filesystem for booting over NFS, then + use the tarball image generated in +images/+ and extract it as + root. Compared to +staging/+, +target/+ contains only the files and + libraries needed to run the selected target applications: the + development files (headers, etc.) are not present, the binaries are + stripped. + +These commands, +make menuconfig|nconfig|gconfig|xconfig+ and +make+, are the +basic ones that allow to easily and quickly generate images fitting +your needs, with all the features and applications you enabled. + +More details about the "make" command usage are given in +xref:make-tips[]. diff --git a/docs/manual/rebuilding-packages.adoc b/docs/manual/rebuilding-packages.adoc new file mode 100644 index 00000000..0658a93b --- /dev/null +++ b/docs/manual/rebuilding-packages.adoc @@ -0,0 +1,136 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[full-rebuild]] +=== Understanding when a full rebuild is necessary + +Buildroot does not attempt to detect what parts of the system should +be rebuilt when the system configuration is changed through +make +menuconfig+, +make xconfig+ or one of the other configuration +tools. In some cases, Buildroot should rebuild the entire system, in +some cases, only a specific subset of packages. But detecting this in +a completely reliable manner is very difficult, and therefore the +Buildroot developers have decided to simply not attempt to do this. + +Instead, it is the responsibility of the user to know when a full +rebuild is necessary. As a hint, here are a few rules of thumb that +can help you understand how to work with Buildroot: + + * When the target architecture configuration is changed, a complete + rebuild is needed. Changing the architecture variant, the binary + format or the floating point strategy for example has an impact on + the entire system. + + * When the toolchain configuration is changed, a complete rebuild + generally is needed. Changing the toolchain configuration often + involves changing the compiler version, the type of C library or + its configuration, or some other fundamental configuration item, + and these changes have an impact on the entire system. + + * When an additional package is added to the configuration, a full + rebuild is not necessarily needed. Buildroot will detect that this + package has never been built, and will build it. However, if this + package is a library that can optionally be used by packages that + have already been built, Buildroot will not automatically rebuild + those. Either you know which packages should be rebuilt, and you + can rebuild them manually, or you should do a full rebuild. For + example, let's suppose you have built a system with the +ctorrent+ + package, but without +openssl+. Your system works, but you realize + you would like to have SSL support in +ctorrent+, so you enable the + +openssl+ package in Buildroot configuration and restart the + build. Buildroot will detect that +openssl+ should be built and + will be build it, but it will not detect that +ctorrent+ should be + rebuilt to benefit from +openssl+ to add OpenSSL support. You will + either have to do a full rebuild, or rebuild +ctorrent+ itself. + + * When a package is removed from the configuration, Buildroot does + not do anything special. It does not remove the files installed by + this package from the target root filesystem or from the toolchain + _sysroot_. A full rebuild is needed to get rid of this + package. However, generally you don't necessarily need this package + to be removed right now: you can wait for the next lunch break to + restart the build from scratch. + + * When the sub-options of a package are changed, the package is not + automatically rebuilt. After making such changes, rebuilding only + this package is often sufficient, unless enabling the package + sub-option adds some features to the package that are useful for + another package which has already been built. Again, Buildroot does + not track when a package should be rebuilt: once a package has been + built, it is never rebuilt unless explicitly told to do so. + + * When a change to the root filesystem skeleton is made, a full + rebuild is needed. However, when changes to the root filesystem + overlay, a post-build script or a post-image script are made, + there is no need for a full rebuild: a simple +make+ invocation + will take the changes into account. + + * When a package listed in +FOO_DEPENDENCIES+ is rebuilt or removed, + the package +foo+ is not automatically rebuilt. For example, if a + package +bar+ is listed in +FOO_DEPENDENCIES+ with +FOO_DEPENDENCIES + = bar+ and the configuration of the +bar+ package is changed, the + configuration change would not result in a rebuild of package +foo+ + automatically. In this scenario, you may need to either rebuild any + packages in your build which reference +bar+ in their +DEPENDENCIES+, + or perform a full rebuild to ensure any +bar+ dependent packages are + up to date. + +Generally speaking, when you're facing a build error and you're unsure +of the potential consequences of the configuration changes you've +made, do a full rebuild. If you get the same build error, then you are +sure that the error is not related to partial rebuilds of packages, +and if this error occurs with packages from the official Buildroot, do +not hesitate to report the problem! As your experience with Buildroot +progresses, you will progressively learn when a full rebuild is really +necessary, and you will save more and more time. + +For reference, a full rebuild is achieved by running: + +---- +$ make clean all +---- + +[[rebuild-pkg]] +=== Understanding how to rebuild packages + +One of the most common questions asked by Buildroot users is how to +rebuild a given package or how to remove a package without rebuilding +everything from scratch. + +Removing a package is unsupported by Buildroot without +rebuilding from scratch. This is because Buildroot doesn't keep track +of which package installs what files in the +output/staging+ and ++output/target+ directories, or which package would be compiled differently +depending on the availability of another package. + +The easiest way to rebuild a single package from scratch is to remove +its build directory in +output/build+. Buildroot will then re-extract, +re-configure, re-compile and re-install this package from scratch. You +can ask buildroot to do this with the +make -dirclean+ command. + +On the other hand, if you only want to restart the build process of a +package from its compilation step, you can run +make -rebuild+. It +will restart the compilation and installation of the package, but not from +scratch: it basically re-executes +make+ and +make install+ inside the package, +so it will only rebuild files that changed. + +If you want to restart the build process of a package from its configuration +step, you can run +make -reconfigure+. It will restart the +configuration, compilation and installation of the package. + +While +-rebuild+ implies +-reinstall+ and ++-reconfigure+ implies +-rebuild+, these targets as well +as ++ only act on the said package, and do not trigger re-creating +the root filesystem image. If re-creating the root filesystem in necessary, +one should in addition run +make+ or +make all+. + +Internally, Buildroot creates so-called _stamp files_ to keep track of +which build steps have been completed for each package. They are +stored in the package build directory, ++output/build/-/+ and are named ++.stamp_+. The commands detailed above simply manipulate +these stamp files to force Buildroot to restart a specific set of +steps of a package build process. + +Further details about package special make targets are explained in +xref:pkg-build-steps[]. diff --git a/docs/manual/release-engineering.adoc b/docs/manual/release-engineering.adoc new file mode 100644 index 00000000..0cf38183 --- /dev/null +++ b/docs/manual/release-engineering.adoc @@ -0,0 +1,34 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[RELENG]] +== Release Engineering +=== Releases + +The Buildroot project makes quarterly releases with monthly bugfix +releases. The first release of each year is a long term support +release, LTS. + + - Quarterly releases: 2020.02, 2020.05, 2020.08, and 2020.11 + - Bugfix releases: 2020.02.1, 2020.02.2, ... + - LTS releases: 2020.02, 2021.02, ... + +Releases are supported until the first bugfix release of the next +release, e.g., 2020.05.x is EOL when 2020.08.1 is released. + +LTS releases are supported until the first bugfix release of the next +LTS, e.g., 2020.02.x is supported until 2021.02.1 is released. + +=== Development + +Each release cycle consist of two months of development on the +master+ +branch and one month stabilization before the release is made. During +this phase no new features are added to +master+, only bugfixes. + +The stabilization phase starts with tagging +-rc1+, and every week until +the release, another release candidate is tagged. + +To handle new features and version bumps during the stabilization phase, +a +next+ branch may be created for these features. Once the current +release has been made, the +next+ branch is merged into +master+ and +the development cycle for the next release continues there. diff --git a/docs/manual/resources.adoc b/docs/manual/resources.adoc new file mode 100644 index 00000000..4ef709c3 --- /dev/null +++ b/docs/manual/resources.adoc @@ -0,0 +1,71 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[community-resources]] +== Community resources + +Like any open source project, Buildroot has different ways to share +information in its community and outside. + +Each of those ways may interest you if you are looking for some help, +want to understand Buildroot or contribute to the project. + +Mailing List:: ++ +Buildroot has a mailing list for discussion and development. It is the +main method of interaction for Buildroot users and developers. ++ +Only subscribers to the Buildroot mailing list are allowed to post to +this list. You can subscribe via the +http://lists.buildroot.org/mailman/listinfo/buildroot[mailing list info +page]. ++ +Mails that are sent to the mailing list are also available in the +mailing list archives, available through +http://lists.buildroot.org/pipermail/buildroot[Mailman] or at +https://lore.kernel.org/buildroot/[lore.kernel.org]. + +IRC:: ++ +The Buildroot IRC channel irc://irc.oftc.net/#buildroot[#buildroot] is +hosted on https://www.oftc.net/WebChat/[OFTC]. It is a useful place to +ask quick questions or discuss on certain topics. ++ +When asking for help on IRC, share relevant logs or pieces of code +using a code sharing website, such as https://paste.ack.tf/. ++ +Note that for certain questions, posting to the mailing list may be +better as it will reach more people, both developers and users. + +Bug tracker:: ++ +Bugs in Buildroot can be reported via the mailing list or alternatively +via the https://gitlab.com/buildroot.org/buildroot/-/issues[Buildroot +bugtracker]. Please refer to xref:reporting-bugs[] before creating a bug +report. + +Wiki:: ++ +http://elinux.org/Buildroot[The Buildroot wiki page] is hosted on +the http://elinux.org[eLinux] wiki. It contains some useful links, an +overview of past and upcoming events, and a TODO list. + +Patchwork:: ++ +Patchwork is a web-based patch tracking system designed to facilitate +the contribution and management of contributions to an open-source +project. Patches that have been sent to a mailing list are \'caught' by +the system, and appear on a web page. Any comments posted that +reference the patch are appended to the patch page too. For more +information on Patchwork see +http://jk.ozlabs.org/projects/patchwork/[]. ++ +Buildroot's Patchwork website is mainly for use by Buildroot's +maintainer to ensure patches aren't missed. It is also used by Buildroot +patch reviewers (see also xref:apply-patches-patchwork[]). +However, since the website exposes patches and their corresponding +review comments in a clean and concise web interface, it can be useful +for all Buildroot developers. ++ +The Buildroot patch management interface is available at +https://patchwork.ozlabs.org/project/buildroot/list/[]. diff --git a/docs/manual/using-buildroot-debugger.adoc b/docs/manual/using-buildroot-debugger.adoc new file mode 100644 index 00000000..c208e86b --- /dev/null +++ b/docs/manual/using-buildroot-debugger.adoc @@ -0,0 +1,53 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +==== Using +gdb+ in Buildroot + +Buildroot allows to do cross-debugging, where the debugger runs on the +build machine and communicates with +gdbserver+ on the target to +control the execution of the program. + +To achieve this: + +* If you are using an _internal toolchain_ (built by Buildroot), you + must enable +BR2_PACKAGE_HOST_GDB+, +BR2_PACKAGE_GDB+ and + +BR2_PACKAGE_GDB_SERVER+. This ensures that both the cross gdb and + gdbserver get built, and that gdbserver gets installed to your target. + +* If you are using an _external toolchain_, you should enable + +BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY+, which will copy the + gdbserver included with the external toolchain to the target. If your + external toolchain does not have a cross gdb or gdbserver, it is also + possible to let Buildroot build them, by enabling the same options as + for the _internal toolchain backend_. + +Now, to start debugging a program called +foo+, you should run on the +target: + +---- +gdbserver :2345 foo +---- + +This will cause +gdbserver+ to listen on TCP port 2345 for a connection +from the cross gdb. + +Then, on the host, you should start the cross gdb using the following +command line: + +---- +/output/host/bin/-gdb -ix /output/staging/usr/share/buildroot/gdbinit foo +---- + +Of course, +foo+ must be available in the current directory, built +with debugging symbols. Typically you start this command from the +directory where +foo+ is built (and not from +output/target/+ as the +binaries in that directory are stripped). + +The +/output/staging/usr/share/buildroot/gdbinit+ file will tell the +cross gdb where to find the libraries of the target. + +Finally, to connect to the target from the cross gdb: + +---- +(gdb) target remote :2345 +---- diff --git a/docs/manual/using-buildroot-development.adoc b/docs/manual/using-buildroot-development.adoc new file mode 100644 index 00000000..72628e0a --- /dev/null +++ b/docs/manual/using-buildroot-development.adoc @@ -0,0 +1,121 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +==== Using Buildroot during development + +The normal operation of Buildroot is to download a tarball, extract +it, configure, compile and install the software component found inside +this tarball. The source code is extracted in ++output/build/-+, which is a temporary directory: +whenever +make clean+ is used, this directory is entirely removed, and +re-created at the next +make+ invocation. Even when a Git or +Subversion repository is used as the input for the package source +code, Buildroot creates a tarball out of it, and then behaves as it +normally does with tarballs. + +This behavior is well-suited when Buildroot is used mainly as an +integration tool, to build and integrate all the components of an +embedded Linux system. However, if one uses Buildroot during the +development of certain components of the system, this behavior is not +very convenient: one would instead like to make a small change to the +source code of one package, and be able to quickly rebuild the system +with Buildroot. + +Making changes directly in +output/build/-+ is not +an appropriate solution, because this directory is removed on +make +clean+. + +Therefore, Buildroot provides a specific mechanism for this use case: +the +_OVERRIDE_SRCDIR+ mechanism. Buildroot reads an _override_ +file, which allows the user to tell Buildroot the location of the +source for certain packages. + +The default location of the override file is +$(CONFIG_DIR)/local.mk+, +as defined by the +BR2_PACKAGE_OVERRIDE_FILE+ configuration option. ++$(CONFIG_DIR)+ is the location of the Buildroot +.config+ file, so ++local.mk+ by default lives side-by-side with the +.config+ file, +which means: + +* In the top-level Buildroot source directory for in-tree builds + (i.e., when +O=+ is not used) +* In the out-of-tree directory for out-of-tree builds (i.e., when + +O=+ is used) + +If a different location than these defaults is required, it can be +specified through the +BR2_PACKAGE_OVERRIDE_FILE+ configuration +option. + +In this _override_ file, Buildroot expects to find lines of the form: + +---- +_OVERRIDE_SRCDIR = /path/to/pkg1/sources +_OVERRIDE_SRCDIR = /path/to/pkg2/sources +---- + +For example: + +---- +LINUX_OVERRIDE_SRCDIR = /home/bob/linux/ +BUSYBOX_OVERRIDE_SRCDIR = /home/bob/busybox/ +---- + +When Buildroot finds that for a given package, an ++_OVERRIDE_SRCDIR+ has been defined, it will no longer attempt to +download, extract and patch the package. Instead, it will directly use +the source code available in the specified directory and +make clean+ +will not touch this directory. This allows to point Buildroot to your +own directories, that can be managed by Git, Subversion, or any other +version control system. To achieve this, Buildroot will use _rsync_ to +copy the source code of the component from the specified ++_OVERRIDE_SRCDIR+ to +output/build/-custom/+. + +This mechanism is best used in conjunction with the +make +-rebuild+ and +make -reconfigure+ targets. A +make +-rebuild all+ sequence will _rsync_ the source code from ++_OVERRIDE_SRCDIR+ to +output/build/-custom+ (thanks to +_rsync_, only the modified files are copied), and restart the build +process of just this package. + +In the example of the +linux+ package above, the developer can then +make a source code change in +/home/bob/linux+ and then run: + +---- +make linux-rebuild all +---- + +and in a matter of seconds gets the updated Linux kernel image in ++output/images+. Similarly, a change can be made to the BusyBox source +code in +/home/bob/busybox+, and after: + +---- +make busybox-rebuild all +---- + +the root filesystem image in +output/images+ contains the updated +BusyBox. + +Source trees for big projects often contain hundreds or thousands of +files which are not needed for building, but will slow down the process +of copying the sources with _rsync_. Optionally, it is possible define ++_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS+ to skip syncing certain files +from the source tree. For example, when working on the +webkitgtk+ +package, the following will exclude the tests and in-tree builds from +a local WebKit source tree: + +---- +WEBKITGTK_OVERRIDE_SRCDIR = /home/bob/WebKit +WEBKITGTK_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS = \ + --exclude JSTests --exclude ManualTests --exclude PerformanceTests \ + --exclude WebDriverTests --exclude WebKitBuild --exclude WebKitLibraries \ + --exclude WebKit.xcworkspace --exclude Websites --exclude Examples +---- + +By default, Buildroot skips syncing of VCS artifacts (e.g., the *.git* and +*.svn* directories). Some packages prefer to have these VCS directories +available during build, for example for automatically determining a precise +commit reference for version information. To undo this built-in filtering at a +cost of a slower speed, add these directories back: + +---- +LINUX_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS = --include .git +---- diff --git a/docs/manual/using-buildroot-toolchain.adoc b/docs/manual/using-buildroot-toolchain.adoc new file mode 100644 index 00000000..09408ef0 --- /dev/null +++ b/docs/manual/using-buildroot-toolchain.adoc @@ -0,0 +1,48 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +==== Using the generated toolchain outside Buildroot + +You may want to compile, for your target, your own programs or other +software that are not packaged in Buildroot. In order to do this you +can use the toolchain that was generated by Buildroot. + +The toolchain generated by Buildroot is located by default in ++output/host/+. The simplest way to use it is to add ++output/host/bin/+ to your PATH environment variable and then to +use +ARCH-linux-gcc+, +ARCH-linux-objdump+, +ARCH-linux-ld+, etc. + +Alternatively, Buildroot can also export the toolchain and the development +files of all selected packages, as an SDK, by running the command ++make sdk+. This generates a tarball of the content of the host directory ++output/host/+, named +_sdk-buildroot.tar.gz+ (which can be +overriden by setting the environment variable +BR2_SDK_PREFIX+) and +located in the output directory +output/images/+. + +This tarball can then be distributed to application developers, when +they want to develop their applications that are not (yet) packaged as +a Buildroot package. + +Upon extracting the SDK tarball, the user must run the script ++relocate-sdk.sh+ (located at the top directory of the SDK), to make +sure all paths are updated with the new location. + +Alternatively, if you just want to prepare the SDK without generating +the tarball (e.g. because you will just be moving the +host+ directory, +or will be generating the tarball on your own), Buildroot also allows +you to just prepare the SDK with +make prepare-sdk+ without actually +generating a tarball. + +For your convenience, by selecting the option ++BR2_PACKAGE_HOST_ENVIRONMENT_SETUP+, you can get a ++environment-setup+ script installed in +output/host/+ and therefore +in your SDK. This script can be sourced with ++. your/sdk/path/environment-setup+ to export a number of environment +variables that will help cross-compile your projects using the +Buildroot SDK: the +PATH+ will contain the SDK binaries, standard +_autotools_ variables will be defined with the appropriate values, and ++CONFIGURE_FLAGS+ will contain basic +./configure+ options to +cross-compile _autotools_ projects. It also provides some useful +commands. Note however that once this script is sourced, the +environment is setup only for cross-compilation, and no longer for +native compilation. diff --git a/docs/manual/writing-rules.adoc b/docs/manual/writing-rules.adoc new file mode 100644 index 00000000..03e4f2c6 --- /dev/null +++ b/docs/manual/writing-rules.adoc @@ -0,0 +1,231 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== Coding style + +Overall, these coding style rules are here to help you to add new files in +Buildroot or refactor existing ones. + +If you slightly modify some existing file, the important thing is +to keep the consistency of the whole file, so you can: + +* either follow the potentially deprecated coding style used in this +file, + +* or entirely rework it in order to make it comply with these rules. + +[[writing-rules-config-in]] + +=== +Config.in+ file + ++Config.in+ files contain entries for almost anything configurable in +Buildroot. + +An entry has the following pattern: + +---- +config BR2_PACKAGE_LIBFOO + bool "libfoo" + depends on BR2_PACKAGE_LIBBAZ + select BR2_PACKAGE_LIBBAR + help + This is a comment that explains what libfoo is. The help text + should be wrapped. + + http://foosoftware.org/libfoo/ +---- + +* The +bool+, +depends on+, +select+ and +help+ lines are indented + with one tab. + +* The help text itself should be indented with one tab and two + spaces. + +* The help text should be wrapped to fit 72 columns, where tab counts + for 8, so 62 characters in the text itself. + +The +Config.in+ files are the input for the configuration tool +used in Buildroot, which is the regular _Kconfig_. For further +details about the _Kconfig_ language, refer to +http://kernel.org/doc/Documentation/kbuild/kconfig-language.txt[]. + +[[writing-rules-mk]] + +=== The +.mk+ file + +* Header: The file starts with a header. It contains the module name, +preferably in lowercase, enclosed between separators made of 80 hashes. A +blank line is mandatory after the header: ++ +---- +################################################################################ +# +# libfoo +# +################################################################################ +---- ++ +* Assignment: use +=+ preceded and followed by one space: ++ +---- +LIBFOO_VERSION = 1.0 +LIBFOO_CONF_OPTS += --without-python-support +---- ++ +Do not align the +=+ signs. + +* Indentation: use tab only: ++ +---- +define LIBFOO_REMOVE_DOC + $(RM) -r $(TARGET_DIR)/usr/share/libfoo/doc \ + $(TARGET_DIR)/usr/share/man/man3/libfoo* +endef +---- ++ +Note that commands inside a +define+ block should always start with a tab, +so _make_ recognizes them as commands. + +* Optional dependency: + +** Prefer multi-line syntax. ++ +YES: ++ +---- +ifeq ($(BR2_PACKAGE_PYTHON3),y) +LIBFOO_CONF_OPTS += --with-python-support +LIBFOO_DEPENDENCIES += python3 +else +LIBFOO_CONF_OPTS += --without-python-support +endif +---- ++ +NO: ++ +---- +LIBFOO_CONF_OPTS += --with$(if $(BR2_PACKAGE_PYTHON3),,out)-python-support +LIBFOO_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON3),python3,) +---- + +** Keep configure options and dependencies close together. + +* Optional hooks: keep hook definition and assignment together in one + if block. ++ +YES: ++ +---- +ifneq ($(BR2_LIBFOO_INSTALL_DATA),y) +define LIBFOO_REMOVE_DATA + $(RM) -r $(TARGET_DIR)/usr/share/libfoo/data +endef +LIBFOO_POST_INSTALL_TARGET_HOOKS += LIBFOO_REMOVE_DATA +endif +---- ++ +NO: ++ +---- +define LIBFOO_REMOVE_DATA + $(RM) -r $(TARGET_DIR)/usr/share/libfoo/data +endef + +ifneq ($(BR2_LIBFOO_INSTALL_DATA),y) +LIBFOO_POST_INSTALL_TARGET_HOOKS += LIBFOO_REMOVE_DATA +endif +---- + +[[writing-genimage-cfg]] + +=== The +genimage.cfg+ file + ++genimage.cfg+ files contain the output image layout that genimage utility +uses to create final .img file. + +An example follows: + +---- +image efi-part.vfat { + vfat { + file EFI { + image = "efi-part/EFI" + } + + file Image { + image = "Image" + } + } + + size = 32M +} + +image sdimage.img { + hdimage { + } + + partition u-boot { + image = "efi-part.vfat" + offset = 8K + } + + partition root { + image = "rootfs.ext2" + size = 512M + } +} +---- + +* Every +section+(i.e. hdimage, vfat etc.), +partition+ must be indented + with one tab. + +* Every +file+ or other +subnode+ must be indented with two tabs. + +* Every node(+section+, +partition+, +file+, +subnode+) must have an open + curly bracket on the same line of the node's name, while the closing one + must be on a newline and after it a newline must be added except for the + last one node. Same goes for its option, for example option +size+ +=+. + +* Every +option+(i.e. +image+, +offset+, +size+) must have the +=+ + assignment one space from it and one space from the value specified. + +* Filename must at least begin with genimage prefix and have the .cfg + extension to be easy to recognize. + +* Allowed notations for +offset+ and +size+ options are: +G+, +M+, +K+ + (not +k+). If it's not possible to express a precise byte count + with notations above then use hexadecimal +0x+ prefix or, as last + chance, the byte count. In comments instead use +GB+, +MB+, +KB+ + (not +kb+) in place of +G+, +M+, +K+. + +* For GPT partitions, the +partition-type-uuid+ value must be +U+ for + the EFI System Partition (expanded to + +c12a7328-f81f-11d2-ba4b-00a0c93ec93b+ by _genimage_), +F+ for a FAT + partition (expanded to +ebd0a0a2-b9e5-4433-87c0-68b6b72699c7+ by + _genimage_) or +L+ for the root filesystem or other filesystems + (expanded to +0fc63daf-8483-4772-8e79-3d69d8477de4+ by + _genimage_). Even though +L+ is the default value of _genimage_, we + prefer to have it explicitly specified in our +genimage.cfg+ + files. Finally, these shortcuts should be used without double + quotes, e.g +partition-type-uuid = U+. If an explicit GUID is + specified, lower-case letters should be used. + +The +genimage.cfg+ files are the input for the genimage tool used in +Buildroot to generate the final image file(i.e. sdcard.img). For further +details about the _genimage_ language, refer to +https://github.com/pengutronix/genimage/blob/master/README.rst[]. + + +=== The documentation + +The documentation uses the +https://asciidoc-py.github.io/[asciidoc] format. + +For further details about the asciidoc syntax, refer to +https://asciidoc-py.github.io/userguide.html[]. + +=== Support scripts + +Some scripts in the +support/+ and +utils/+ directories are written in +Python and should follow the +https://www.python.org/dev/peps/pep-0008/[PEP8 Style Guide for Python Code]. diff --git a/docs/website/.htaccess b/docs/website/.htaccess new file mode 100644 index 00000000..b02beb88 --- /dev/null +++ b/docs/website/.htaccess @@ -0,0 +1,62 @@ +# BEGIN Compress text files + + + SetOutputFilter DEFLATE + + +# END Compress text files + +# BEGIN Expire headers + + ExpiresActive On + ExpiresDefault "access plus 1 seconds" + ExpiresByType image/x-icon "access plus 2592000 seconds" + ExpiresByType image/jpeg "access plus 2592000 seconds" + ExpiresByType image/png "access plus 2592000 seconds" + ExpiresByType image/gif "access plus 2592000 seconds" + ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds" + ExpiresByType text/css "access plus 604800 seconds" + ExpiresByType text/javascript "access plus 216000 seconds" + ExpiresByType application/javascript "access plus 216000 seconds" + ExpiresByType application/x-javascript "access plus 216000 seconds" + ExpiresByType text/html "access plus 600 seconds" + ExpiresByType application/xhtml+xml "access plus 600 seconds" + +# END Expire headers + +# BEGIN Cache-Control Headers + + + Header set Cache-Control "max-age=2592000, public" + + + Header set Cache-Control "max-age=604800, public" + + + Header set Cache-Control "max-age=216000, private" + + + Header set Cache-Control "max-age=600, private, must-revalidate" + + +# END Cache-Control Headers + +# BEGIN Turn ETags Off + + Header unset ETag + +FileETag None +# END Turn ETags Off + +# BEGIN gzip + +mod_gzip_on Yes +mod_gzip_dechunk Yes +mod_gzip_item_include file .(html?|txt|css|js)$ +mod_gzip_item_include handler ^cgi-script$ +mod_gzip_item_include mime ^text/.* +mod_gzip_item_include mime ^application/x-javascript.* +mod_gzip_item_exclude mime ^image/.* +mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* + +# END gzip diff --git a/docs/website/association.html b/docs/website/association.html new file mode 100644 index 00000000..0c2306f3 --- /dev/null +++ b/docs/website/association.html @@ -0,0 +1,122 @@ + + +
+
+
+
+
Association
+
+ +

The Buildroot open-source project is supported by a + non-profit organization called the Buildroot + Association. The goal of this non-profit + organization is to engage actions to promote, help + develop and democratise the Buildroot project.

+ +

This non-profit organization is registered as a legal + entity in France, more precisely as an association loi + 1901.

+ +

This organization can receive funding from members, + donors and sponsors. This funding is then used to pay for:

+ +
    +
  • the meeting rooms used during the Buildroot + Developers Meeting twice per year;
  • +
  • travel expenses for contributors + willing to attend the Buildroot Developers + Meeting, and not covered by their employer to do + so;
  • +
  • renting servers and services used to host the + Buildroot infrastructure.
  • +
+ +

The bylaws of the association are available + in French + (official) and + in English + (unofficial translation). The association was declared on + March 14, 2016 to the Préfecture de Haute-Garonne + (France) and is registered under the n°W313024278. See this + official receipt + from the French authorities.

+ +

Our accounting is fully public, including the bank + account summaries, + see accounting. Numerous + other administrative documents related to the association + are available on + its Gitlab + repository

+
+
+ +
+
Becoming a member
+
+ +

To become a member, an individual or a company simply has + to pay its yearly membership. For an individual, the minimum + membership fee per year is 10 EUR. For a company, the + minimum membership fee per year is 150 EUR. Individuals and + companies are free to give more than the minimum + required.

+ +

The membership is valid for the current civil year, i.e + any membership fee paid in 2019 is valid through December 31, + 2019.

+ +

Once the membership fee is received, it will be listed in + the + association accounting + files, which serve as the official list of + members. Therefore, members accept that their name and the + amount of their membership fee is made public.

+ +

There are two possibilities to pay the membership + fee:

+ +
    + +
  • A direct wire-transfer to the association bank + account. Since the bank account is located in France, this + is completely free of charge for any person or company + located in the European Union. The IBAN number of the + association bank account is FR53 2004 1010 1615 0958 + 0P03 772.
  • + +
  • A Paypal payment to the association Paypal account, + whose address + is buildroot-association@buildroot.org.
  • + +
+ +
+
+ +
+
Sponsoring the project
+
+ +

Companies willing to help the Buildroot project can do so + by making a donation to the Buildroot + Association. In exchange for these donations, companies + will be listed on our Sponsors + page and will be thanked in our release announcements.

+ +

As the Buildroot Association is a legal entity + registered in France, it is able to deliver a bill and/or + receipt.

+ +

Please + contact buildroot-association@buildroot.org + if you are a company interested in making a donation.

+ +
+
+ +
+
+
+ + diff --git a/docs/website/contribute.html b/docs/website/contribute.html new file mode 100644 index 00000000..52c30d60 --- /dev/null +++ b/docs/website/contribute.html @@ -0,0 +1,68 @@ + + +
+
+
+ +
+
Contribute
+
+

Buildroot is an open source project and we warmly welcome your + contributions.
+ There are different ways you can get involved:

+ + + +

For more details on these topics, check out the + + Contributing to buildroot chapter in the Buildroot manual. Thanks for your help!

+ +

If you need any support yourself, have a look at + Support.

+
+
+ +
+
Sponsor
+
+

Besides technical contributions, you can also support the project + financially.
+ There are various ways make a financial contribution:

+ +
    +
  • Sponsor the Buildroot Association. + The association helps Buildroot with infrastructure (servers, domain + name, ...) and organising meetings. It relies on money from sponsors + to organise those.
  • +
  • Practical help: providing a meeting room for developer meetings, + providing autobuilder instances, etc.
  • +
  • Buildroot LTS Sponsoring, + a specific effort to finance the maintenance of the Long Term Support + branch of Buildroot.
  • +
+ +

All of these sponsors are thanked by listing them on the sponsors page.

+
+
+ +
+
+
+ + diff --git a/docs/website/copyright.txt b/docs/website/copyright.txt new file mode 100644 index 00000000..3fe19bab --- /dev/null +++ b/docs/website/copyright.txt @@ -0,0 +1,30 @@ + +The code and graphics on this website (and it's mirror sites, if any) are +Copyright (C) The Buildroot developers . All +rights reserved. + +Documents on this Web site including their graphical elements, design, and +layout are protected by trade dress and other laws and MAY BE COPIED OR +IMITATED IN WHOLE OR IN PART. THIS WEBSITE IS LICENSED FREE OF CHARGE, THERE +IS NO WARRANTY FOR THE WEBSITE TO THE EXTENT PERMITTED BY APPLICABLE LAW. +SHOULD THIS WEBSITE PROVE DEFECTIVE, YOU MAY ASSUME THAT SOMEONE MIGHT GET +AROUND TO SERVICING, REPAIRING OR CORRECTING IT SOMETIME WHEN THEY HAVE NOTHING +BETTER TO DO. REGARDLESS, YOU GET TO KEEP BOTH PIECES. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY +COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THIS +WEBSITE AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR +INABILITY TO USE THIS WEBSITE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR +LOSS OF HAIR, LOSS OF LIFE, LOSS OF MEMORY, LOSS OF YOUR CARKEYS, MISPLACEMENT +OF YOUR PAYCHECK, OR COMMANDER DATA BEING RENDERED UNABLE TO ASSIST THE +STARFLEET OFFICERS ABORD THE STARSHIP ENTERPRISE TO RECALIBRATE THE MAIN +DEFLECTOR ARRAY, LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE +WEBSITE TO OPERATE WITH YOUR WEBBROWSER), EVEN IF SUCH HOLDER OR OTHER PARTY +HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +You have been warned. + +You can contact the webmaster at if you have some sort +of problem with this. + diff --git a/docs/website/css/main.css b/docs/website/css/main.css new file mode 100644 index 00000000..5255531b --- /dev/null +++ b/docs/website/css/main.css @@ -0,0 +1,260 @@ +/* + * Author: Carlos Alvarez + * URL: http://alvarez.is + * + * Project Name: FLATTY - Free Bootstrap 3 Theme + * Version: 1.0 + * URL: http://blacktie.co + */ + +body { + background-color: #f2f2f2; + font-family: 'Roboto', sans-serif; + font-weight: 300; + font-size: 16px; + color: #555; + + -webkit-font-smoothing: antialiased; + -webkit-overflow-scrolling: touch; +} + +/* Titles */ +h1, h2, h3, h4, h5, h6 { + font-family: 'Roboto', sans-serif; + font-weight: 300; + color: #333; +} + +h1 { + font-size: 40px; +} + +h3 { + color: #95a5a6; + font-weight: 400; +} + +h4 { + color: #95a5a6; + font-weight: 400; + font-size: 20px; +} + +.ellipsis p { + margin-bottom:10px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.centered { + text-align: center; +} + +/* Links */ +a { + color: #3498db; + word-wrap: break-word; + + -webkit-transition: color 0.1s ease-in, background 0.1s ease-in; + -moz-transition: color 0.1s ease-in, background 0.1s ease-in; + -ms-transition: color 0.1s ease-in, background 0.1s ease-in; + -o-transition: color 0.1s ease-in, background 0.1s ease-in; + transition: color 0.1s ease-in, background 0.1s ease-in; +} + +a:hover, +a:focus { + color: #7b7b7b; + text-decoration: none; + outline: 0; +} + +a:before, +a:after { + -webkit-transition: color 0.1s ease-in, background 0.1s ease-in; + -moz-transition: color 0.1s ease-in, background 0.1s ease-in; + -ms-transition: color 0.1s ease-in, background 0.1s ease-in; + -o-transition: color 0.1s ease-in, background 0.1s ease-in; + transition: color 0.1s ease-in, background 0.1s ease-in; +} + + hr { + display: block; + height: 1px; + border: 0; + border-top: 1px solid #ccc; + margin: 1em 0; + padding: 0; +} + +.navbar-default { + background-color: #3498db; + border-color: transparent; +} + +.navbar-default .navbar-brand { + color: white; +} + +.navbar-default .navbar-nav > li > a { + color: white; +} + +/* Helpers */ + +.mt { + margin-top: 40px; + margin-bottom: 40px; +} + +.nh { + margin-top: 80px; + margin-bottom: 40px; +} + +.form-control { + height: 42px; + font-size: 18px; + width: 280px; +} + +i { + margin: 8px; + color: #3498db; +} + + +/* HeaderWrap */ +#headerwrap { + /* background: url(../img/bg01.jpg) no-repeat center top; */ + background-color: #3498db; + margin-top: -20px; + padding-top:120px; + background-attachment: relative; + background-position: center center; + min-height: 400px; + max-height: 800px; + width: 100%; + + -webkit-background-size: 100%; + -moz-background-size: 100%; + -o-background-size: 100%; + background-size: 100%; + + -webkit-background-size: cover; + -moz-background-size: cover; + -o-background-size: cover; + background-size: cover; +} + +#headerwrap h1 { + color: white; + font-size: 60px; + font-weight: bold; + letter-spacing: 1px; +} + +#menubutton { + max-height: 50px; + margin-top: 6px; + padding-top: 15px; + margin-left: 10px; +} + +.panel-sponsor { + min-height: 350px; + text-align: justify; + text-justify: inter-word; +} + +@media (min-width: 768px) and (max-width: 991px) { + .navbar-collapse.collapse { + display: none !important; + } + .navbar-collapse.collapse.in { + display: block !important; + } + .navbar-header .collapse, .navbar-toggle { + display:block !important; + } + .navbar-header { + float:none; + } + .navbar-collapse { + overflow:hidden; + } + #menubutton { + margin-right: 40px; + width: 45px; + } + .text-shrink { + visibility: hidden; + } +} + +@media (max-width:767px) { + #menubutton { + max-height: 50px; + margin-top: 6px; + padding-top: 15px; + margin-left: 15px; + margin-right: 15px; + } +} + +/* entire container, keeps perspective */ +.flip-container { + perspective: 1000; +} + /* flip the pane when hovered */ + .flip-container:hover .flipper, .flip-container.hover .flipper { + transform: rotateY(180deg); + } + +.flip-container, .front, .back { + width: 180px; + height: 180px; +} + +/* flip speed goes here */ +.flipper { + transition: 0.6s; + transform-style: preserve-3d; + + position: relative; +} + +/* hide back of pane during swap */ +.front, .back { + backface-visibility: hidden; + + position: absolute; + top: 0; + left: 0; +} + +/* front pane, placed above back */ +.front { + z-index: 2; + /* for firefox 31 */ + transform: rotateY(0deg); +} + +/* back, initially hidden pane */ +.back { + transform: rotateY(180deg); +} + +.back img { + -moz-transform: scaleX(-1); + -o-transform: scaleX(-1); + -webkit-transform: scaleX(-1); + transform: scaleX(-1); + filter: FlipH; + -ms-filter: "FlipH"; +} + +.panel-box p { + height: 1.5em; +} diff --git a/docs/website/css/timeline.css b/docs/website/css/timeline.css new file mode 100644 index 00000000..df58461a --- /dev/null +++ b/docs/website/css/timeline.css @@ -0,0 +1,184 @@ +.timeline { + list-style: none; + padding: 20px 0 20px; + position: relative; +} + +.timeline:before { + top: 0; + bottom: 0; + position: absolute; + content: " "; + width: 3px; + background-color: #E4E4E4; + left: 50%; + margin-left: -1.5px; + } + +.timeline > li { + margin-bottom: 20px; + position: relative; +} + +.timeline > li:before, +.timeline > li:after { + content: " "; + display: table; +} + +.timeline > li:after { + clear: both; +} + +.timeline > li:before, +.timeline > li:after { + content: " "; + display: table; +} + +.timeline > li:after { + clear: both; +} + +.timeline > li > .timeline-panel { + width: 46%; + float: left; + border: 1px solid #d4d4d4; + border-radius: 2px; + padding: 20px; + position: relative; + -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.175); + box-shadow: 0 1px 6px rgba(0, 0, 0, 0.175); + background-color: white; +} + +.timeline > li > .timeline-panel:before { + position: absolute; + top: 26px; + right: -15px; + display: inline-block; + border-top: 15px solid transparent; + border-left: 15px solid #ccc; + border-right: 0 solid #ccc; + border-bottom: 15px solid transparent; + content: " "; +} + +.timeline > li > .timeline-panel:after { + position: absolute; + top: 27px; + right: -14px; + display: inline-block; + border-top: 14px solid transparent; + border-left: 14px solid #fff; + border-right: 0 solid #fff; + border-bottom: 14px solid transparent; + content: " "; +} + +.timeline > li > .timeline-badge { + color: #fff; + width: 50px; + height: 50px; + line-height: 50px; + font-size: 1.4em; + text-align: center; + position: absolute; + top: 16px; + left: 50%; + margin-left: -25px; + background-color: #E6E6E6; + z-index: 100; + border-top-right-radius: 50%; + border-top-left-radius: 50%; + border-bottom-right-radius: 50%; + border-bottom-left-radius: 50%; +} + +.timeline > li.timeline-inverted > .timeline-panel { + float: right; +} + +.timeline > li.timeline-inverted > .timeline-panel:before { + border-left-width: 0; + border-right-width: 15px; + left: -15px; + right: auto; +} + +.timeline > li.timeline-inverted > .timeline-panel:after { + border-left-width: 0; + border-right-width: 14px; + left: -14px; + right: auto; +} + +.timeline-badge.primary { + background-color: #2e6da4 !important; +} + +.timeline-badge.success { + background-color: #3f903f !important; +} + +.timeline-badge.warning { + background-color: #f0ad4e !important; +} + +.timeline-badge.danger { + background-color: #d9534f !important; +} + +.timeline-badge.info { + background-color: #5bc0de !important; +} + +.timeline-title { + margin-top: 0; + color: inherit; +} + +.timeline-body > p, +.timeline-body > ul { + margin-bottom: 0; +} + +.timeline-body > p + p { + margin-top: 5px; +} + +@media (max-width: 767px) { + ul.timeline:before { + left: 40px; + } + + ul.timeline > li > .timeline-panel { + width: calc(100% - 90px); + width: -moz-calc(100% - 90px); + width: -webkit-calc(100% - 90px); + } + + ul.timeline > li > .timeline-badge { + left: 15px; + margin-left: 0; + top: 16px; + } + + ul.timeline > li > .timeline-panel { + float: right; + } + + ul.timeline > li > .timeline-panel:before { + border-left-width: 0; + border-right-width: 15px; + left: -15px; + right: auto; + } + + ul.timeline > li > .timeline-panel:after { + border-left-width: 0; + border-right-width: 14px; + left: -14px; + right: auto; + } +} diff --git a/docs/website/docs.html b/docs/website/docs.html new file mode 100644 index 00000000..85b00500 --- /dev/null +++ b/docs/website/docs.html @@ -0,0 +1,130 @@ + + +
+
+
+ +
+
Documentation
+
+

The Buildroot user manual is where you want to start reading if you + wish to understand how Buildroot works, or wish to change/extend/fix + things. It is available as:

+ +
+
+
+
+
+ +
+
+ +
+
+
+ +

HTML
+ Stable | + Nightly +

+ +
+ +
+
+
+
+ +
+
+ +
+
+
+ +

PDF
+ Stable | + Nightly +

+ +
+ +
+
+
+
+ +
+
+ +
+
+
+ +

ASCII
+ Stable | + Nightly +

+ +
+
+ +

If you find any errors (factual, grammatical, whatever) please + report them to us.

+
+
+ +
+
Training
+
+

Bootlin (formerly Free Electrons) + offers a complete 3-days + training course on Buildroot. They also make the training + materials freely available:

+ +
+
+
+
Slides preview
+
+
+ buildroot slides +
+
+
+
+ +
+
+
Training materials
+ +
+ +
+
Public online training course
+
+ Regular online training courses, available to individual + registration, are proposed by Bootlin, with Thomas + Petazzoni as + trainer. See next + dates and registration details. +
+
+
+
+
+
+ +
+
+
+ + + diff --git a/docs/website/download.html b/docs/website/download.html new file mode 100644 index 00000000..60b84cc9 --- /dev/null +++ b/docs/website/download.html @@ -0,0 +1,161 @@ + + +
+
+
+ +
+
Download
+
+ +

Latest long term support release: 2024.02.5

+ +
+
+
+
+
+ +
+
+ +
+
+
+

buildroot-2024.02.5.tar.gz

+

PGP signature

+
+
+
+
+
+ +
+
+ +
+
+
+ +

buildroot-2024.02.5.tar.xz

+

PGP signature

+
+
+ +

Latest stable release: 2024.08

+ +
+
+
+
+
+ +
+
+ +
+
+
+

buildroot-2024.08.tar.gz

+

PGP signature

+
+
+
+
+
+ +
+
+ +
+
+
+ +

buildroot-2024.08.tar.xz

+

PGP signature

+
+
+ +

Latest release candidate: 2024.08-rc3

+
+
+
+
+
+ +
+
+ +
+
+
+ +

buildroot-2024.08-rc3.tar.gz

+

PGP signature

+
+
+
+
+
+ +
+
+ +
+
+
+ +

buildroot-2024.08-rc3.tar.xz

+

PGP signature

+
+
+ + This and earlier releases (and their PGP signatures) can always be downloaded from + http://buildroot.net/downloads/. +
+
+ +
+
Git repository
+
+ +

The buildroot repository can be browsed online at + https://gitlab.com/buildroot.org/buildroot/.

+ +

To grab a copy of the repository use

+ +
+ + + + +

+ +

If you are not already familiar with using Git, we recommend + you visit the Git + website.

+ +

Once you've checked out a copy of the source tree, you can + update your source tree at any time so it is in sync with the + latest and greatest by entering your buildroot directory and + running the command:

+ +
git pull
+ +

Because you've only been granted anonymous access to the + tree, you won't be able to push your changes to the + repo. Changes can instead be submitted for inclusion by + posting them to the buildroot mailing list.

+ +
+
+ +
+
+
+ + diff --git a/docs/website/favicon.ico b/docs/website/favicon.ico new file mode 100644 index 00000000..fa9d2407 Binary files /dev/null and b/docs/website/favicon.ico differ diff --git a/docs/website/favicon.png b/docs/website/favicon.png new file mode 100644 index 00000000..3bfe1ba7 Binary files /dev/null and b/docs/website/favicon.png differ diff --git a/docs/website/fonts/glyphicons-halflings-regular.woff b/docs/website/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 00000000..d83c539b Binary files /dev/null and b/docs/website/fonts/glyphicons-halflings-regular.woff differ diff --git a/docs/website/footer.html b/docs/website/footer.html new file mode 100644 index 00000000..82901b7e --- /dev/null +++ b/docs/website/footer.html @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/website/header.html b/docs/website/header.html new file mode 100644 index 00000000..548ed7ad --- /dev/null +++ b/docs/website/header.html @@ -0,0 +1,54 @@ + + + + + + + + + + + Buildroot - Making Embedded Linux Easy + + + + + + + + + + diff --git a/docs/website/images/amarula-solutions-logo.png b/docs/website/images/amarula-solutions-logo.png new file mode 100644 index 00000000..3fe4aeef Binary files /dev/null and b/docs/website/images/amarula-solutions-logo.png differ diff --git a/docs/website/images/armadeus-systems-logo.png b/docs/website/images/armadeus-systems-logo.png new file mode 100644 index 00000000..9b6080fb Binary files /dev/null and b/docs/website/images/armadeus-systems-logo.png differ diff --git a/docs/website/images/bootlin-logo.png b/docs/website/images/bootlin-logo.png new file mode 100644 index 00000000..4f918750 Binary files /dev/null and b/docs/website/images/bootlin-logo.png differ diff --git a/docs/website/images/boundary-devices-logo.png b/docs/website/images/boundary-devices-logo.png new file mode 100644 index 00000000..35d7a931 Binary files /dev/null and b/docs/website/images/boundary-devices-logo.png differ diff --git a/docs/website/images/browser.png b/docs/website/images/browser.png new file mode 100644 index 00000000..56039dfa Binary files /dev/null and b/docs/website/images/browser.png differ diff --git a/docs/website/images/bug-buddy.png b/docs/website/images/bug-buddy.png new file mode 100644 index 00000000..5d38fd83 Binary files /dev/null and b/docs/website/images/bug-buddy.png differ diff --git a/docs/website/images/buildroot-slides.png b/docs/website/images/buildroot-slides.png new file mode 100644 index 00000000..6ecba3d4 Binary files /dev/null and b/docs/website/images/buildroot-slides.png differ diff --git a/docs/website/images/calao-logo.png b/docs/website/images/calao-logo.png new file mode 100644 index 00000000..c01ecf67 Binary files /dev/null and b/docs/website/images/calao-logo.png differ diff --git a/docs/website/images/circuitco-logo.png b/docs/website/images/circuitco-logo.png new file mode 100644 index 00000000..8b315da4 Binary files /dev/null and b/docs/website/images/circuitco-logo.png differ diff --git a/docs/website/images/clippy.svg b/docs/website/images/clippy.svg new file mode 100644 index 00000000..d827e82e --- /dev/null +++ b/docs/website/images/clippy.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/docs/website/images/email.png b/docs/website/images/email.png new file mode 100644 index 00000000..367dadc7 Binary files /dev/null and b/docs/website/images/email.png differ diff --git a/docs/website/images/fluendo-logo.png b/docs/website/images/fluendo-logo.png new file mode 100644 index 00000000..b4d02cb6 Binary files /dev/null and b/docs/website/images/fluendo-logo.png differ diff --git a/docs/website/images/free-electrons-logo.png b/docs/website/images/free-electrons-logo.png new file mode 100644 index 00000000..0a774041 Binary files /dev/null and b/docs/website/images/free-electrons-logo.png differ diff --git a/docs/website/images/gift.png b/docs/website/images/gift.png new file mode 100644 index 00000000..f527f828 Binary files /dev/null and b/docs/website/images/gift.png differ diff --git a/docs/website/images/github_hash_mongrel2.png b/docs/website/images/github_hash_mongrel2.png new file mode 100644 index 00000000..c695c318 Binary files /dev/null and b/docs/website/images/github_hash_mongrel2.png differ diff --git a/docs/website/images/google-logo.png b/docs/website/images/google-logo.png new file mode 100644 index 00000000..bceab166 Binary files /dev/null and b/docs/website/images/google-logo.png differ diff --git a/docs/website/images/hammer.png b/docs/website/images/hammer.png new file mode 100644 index 00000000..454a5e58 Binary files /dev/null and b/docs/website/images/hammer.png differ diff --git a/docs/website/images/imgtec-logo.png b/docs/website/images/imgtec-logo.png new file mode 100644 index 00000000..f8a0ffa3 Binary files /dev/null and b/docs/website/images/imgtec-logo.png differ diff --git a/docs/website/images/irc.png b/docs/website/images/irc.png new file mode 100644 index 00000000..442be4d7 Binary files /dev/null and b/docs/website/images/irc.png differ diff --git a/docs/website/images/logilin-logo.png b/docs/website/images/logilin-logo.png new file mode 100644 index 00000000..8e8396cf Binary files /dev/null and b/docs/website/images/logilin-logo.png differ diff --git a/docs/website/images/logo.png b/docs/website/images/logo.png new file mode 100644 index 00000000..2db743b4 Binary files /dev/null and b/docs/website/images/logo.png differ diff --git a/docs/website/images/logo.xcf b/docs/website/images/logo.xcf new file mode 100644 index 00000000..97248904 Binary files /dev/null and b/docs/website/images/logo.xcf differ diff --git a/docs/website/images/logo_small.png b/docs/website/images/logo_small.png new file mode 100644 index 00000000..eab95402 Binary files /dev/null and b/docs/website/images/logo_small.png differ diff --git a/docs/website/images/menuconfig.png b/docs/website/images/menuconfig.png new file mode 100644 index 00000000..423694f3 Binary files /dev/null and b/docs/website/images/menuconfig.png differ diff --git a/docs/website/images/mind-logo.png b/docs/website/images/mind-logo.png new file mode 100644 index 00000000..5570d8f4 Binary files /dev/null and b/docs/website/images/mind-logo.png differ diff --git a/docs/website/images/nconfig.png b/docs/website/images/nconfig.png new file mode 100644 index 00000000..cc05d6e8 Binary files /dev/null and b/docs/website/images/nconfig.png differ diff --git a/docs/website/images/package.png b/docs/website/images/package.png new file mode 100644 index 00000000..9dd8b1e0 Binary files /dev/null and b/docs/website/images/package.png differ diff --git a/docs/website/images/pdf-icon.png b/docs/website/images/pdf-icon.png new file mode 100644 index 00000000..71ae983d Binary files /dev/null and b/docs/website/images/pdf-icon.png differ diff --git a/docs/website/images/rockwell-collins-logo.png b/docs/website/images/rockwell-collins-logo.png new file mode 100644 index 00000000..b5956a82 Binary files /dev/null and b/docs/website/images/rockwell-collins-logo.png differ diff --git a/docs/website/images/scaleway-logo.png b/docs/website/images/scaleway-logo.png new file mode 100644 index 00000000..16859145 Binary files /dev/null and b/docs/website/images/scaleway-logo.png differ diff --git a/docs/website/images/smile-logo.png b/docs/website/images/smile-logo.png new file mode 100644 index 00000000..046c999a Binary files /dev/null and b/docs/website/images/smile-logo.png differ diff --git a/docs/website/images/synopsys-logo.png b/docs/website/images/synopsys-logo.png new file mode 100644 index 00000000..d4fbd89a Binary files /dev/null and b/docs/website/images/synopsys-logo.png differ diff --git a/docs/website/images/tap2open-logo.png b/docs/website/images/tap2open-logo.png new file mode 100644 index 00000000..136019b6 Binary files /dev/null and b/docs/website/images/tap2open-logo.png differ diff --git a/docs/website/images/text.png b/docs/website/images/text.png new file mode 100644 index 00000000..e2eee546 Binary files /dev/null and b/docs/website/images/text.png differ diff --git a/docs/website/images/tkos-logo.png b/docs/website/images/tkos-logo.png new file mode 100644 index 00000000..6fe58826 Binary files /dev/null and b/docs/website/images/tkos-logo.png differ diff --git a/docs/website/images/tux-flat.png b/docs/website/images/tux-flat.png new file mode 100644 index 00000000..782699f5 Binary files /dev/null and b/docs/website/images/tux-flat.png differ diff --git a/docs/website/images/xconfig.png b/docs/website/images/xconfig.png new file mode 100644 index 00000000..cb99a3a3 Binary files /dev/null and b/docs/website/images/xconfig.png differ diff --git a/docs/website/images/zillabit-logo.png b/docs/website/images/zillabit-logo.png new file mode 100644 index 00000000..6a2ac31f Binary files /dev/null and b/docs/website/images/zillabit-logo.png differ diff --git a/docs/website/images/zip.png b/docs/website/images/zip.png new file mode 100644 index 00000000..02a1dc11 Binary files /dev/null and b/docs/website/images/zip.png differ diff --git a/docs/website/index.html b/docs/website/index.html new file mode 100644 index 00000000..d68436c7 --- /dev/null +++ b/docs/website/index.html @@ -0,0 +1,151 @@ + + +
+
+
+
+ +
+
+

Buildroot
+ Making Embedded Linux Easy

+ + +
+
+
+
+ + +
+
+
+

Buildroot is a simple, efficient and easy-to-use tool to + generate embedded Linux systems through cross-compilation.

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+ +

Can handle everything

+

Cross-compilation toolchain, root filesystem generation, + kernel image compilation and bootloader compilation.

+
+ +
+
+
+
+ +
+
+ +
+
+
+ +

Is very easy

+

Thanks to its kernel-like menuconfig, gconfig and + xconfig configuration interfaces, building a basic system with + Buildroot is easy and typically takes 15-30 minutes.

+ +
+ +
+
+
+
+ +
+
+ +
+
+
+ +

Supports several thousand packages

+

X.org stack, Gtk3, Qt 5, GStreamer, Webkit, Kodi, a large number of network-related and system-related utilities are supported.

+ +
+
+
+
+ +
+
+
+

Buildroot is for Everyone.

+

Has a simple structure that makes it easy to understand and extend. It relies only on the well-known Makefile language.

+
+
+ +
+
+ +
+
+
+ +
+
+
+

Our recent activity.

+

Buildroot is an open source project: many developers contribute to it daily.

+
+
+
+ +
+
+
+
+ +
+
+
+
+
+ +
+
+
+ + diff --git a/docs/website/js/buildroot.js b/docs/website/js/buildroot.js new file mode 100644 index 00000000..b2975fb6 --- /dev/null +++ b/docs/website/js/buildroot.js @@ -0,0 +1,105 @@ +function display_activity(result, activity) { + let loaded = 0; + let nb_display = 8; + let container; + if (result==null) return; + for (let i = 0; i < result.feed.entry.length; i++) { + let entry = result.feed.entry[i]; + if (activity==="commit" && entry.title.toString().indexOf("git commit") !== -1) { + container = document.getElementById("commit-activity"); + } else if (activity==="mailing-list" && entry.title.toString().indexOf("git commit") === -1) { + container = document.getElementById("mailing-list-activity"); + } else { + continue; + } + loaded += 1 + if (loaded > nb_display) + break; + let div = document.createElement("p"); + let link = document.createElement("a"); + let d = new Date(entry.updated); + let data = '[' + d.toLocaleDateString() + '] ' + entry.title; + data = data.replace("Re: ",""); + data = data.replace("[Buildroot] ",""); + let text = document.createTextNode(data); + link.appendChild(text); + link.title = entry.title; + link.href = entry.link._href; + div.appendChild(link); + container.appendChild(div); + } + for (let i = 0; i < (nb_display - loaded); i++) { + container.appendChild(document.createElement("p")); + } +} + +function load_activity(feedurl) { + $.ajax({ + url: feedurl + }) + .done(function(data){ + let x2js = new X2JS(); + let result = x2js.xml_str2json(data.documentElement.outerHTML); + display_activity(result, "commit"); + display_activity(result, "mailing-list"); + }); +} + + + +function google_analytics() { + let _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-21761074-1']); + _gaq.push(['_setDomainName', 'none']); + _gaq.push(['_setAllowLinker', true]); + _gaq.push(['_trackPageview']); + + let ga = document.createElement('script'); + ga.type = 'text/javascript'; + ga.async = true; + ga.src = ('https:' === document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + let s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(ga, s); +} + +function showTooltip(elem, msg) { + elem.setAttribute('class', 'btn tooltipped tooltipped-s'); + elem.setAttribute('aria-label', msg); +} + +let clipboard = new Clipboard('.btn'); + +$(function () { + $('[data-toggle="tooltip"]').tooltip() +}); + +clipboard.on('success', function(e) { + e.clearSelection(); + $(e.trigger).tooltip('show'); +}); + +$(function() { + $('a[href*=\\#]:not([href=\\#])').click(function() { + if (location.pathname.replace(/^\//,'') === this.pathname.replace(/^\//,'') && location.hostname === this.hostname) { + let target = $(this.hash); + target = target.length ? target : $('[name=' + this.hash.slice(1) +']'); + if (target.length) { + $('html,body').animate({ + scrollTop: target.offset().top + }, 1000); + return false; + } + } + }); +}); + +jQuery(document).ready(function($) { + let url = window.location.href; + // Get the basename of the URL + url = url.split(/[\\/]/).pop(); + $('.nav a[href="/' + url + '"]').parent().addClass('active'); + + load_activity("/new.atom"); + + $('#slides').html('') +}); diff --git a/docs/website/news.html b/docs/website/news.html new file mode 100644 index 00000000..c09db758 --- /dev/null +++ b/docs/website/news.html @@ -0,0 +1,8712 @@ + + + + +
+
+
+ +

News

+
    + +
  • +
    +
    +
    +

    2024.08 released

    +

    6 September 2024

    +
    +
    +

    The stable 2024.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details + and go to the downloads page to pick up the + 2024.08 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2024.08-rc3 released

    +

    1 September 2024

    +
    +
    +

    2024.08-rc3 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2024.08-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2024.08-rc2 released

    +

    22 August 2024

    +
    +
    +

    Another 2 weeks, another release candidate with more cleanups and build fixes. See the + CHANGES + file for more details.

    + +

    Go to the downloads page to pick up the + 2024.08-rc2 + release, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2024.02.5 released

    +

    14 August 2024

    +
    +
    +

    The 2024.02.5 bugfix release is out, fixing a number of important / + security related issues discovered since the 2024.02.4 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2024.02.5 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2024.05.2 released

    +

    14 August 2024

    +
    +
    +

    The 2024.05.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2024.05.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2024.05.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2024.08-rc1 released

    +

    8 August 2024

    +
    +
    +

    We have a new release candidate! Lots of changes all over the tree, see the + CHANGES + file for more details.

    + +

    Go to the downloads page to pick up the + 2024.08-rc1 + release, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2024.02.4 released

    +

    13 July 2024

    +
    +
    +

    The 2024.02.4 bugfix release is out, fixing a number of important / + security related issues discovered since the 2024.02.3 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2024.02.4 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2024.05.1 released

    +

    13 July 2024

    +
    +
    +

    The 2024.05.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2024.05 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2024.05.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    LTS Sponsoring announced

    +
    +
    +

    We are excited to share that we have launched the Buildroot Long + Term Support (LTS) Sponsoring Project!

    +

    This initiative comes from a place where we understand the critical + need for extended support which is beyond volunteering. That's why + we are calling all Buildroot users and enthusiasts to come together + and join this initiative that's shaping the future of Buildroot.

    +

    +

    Find more information on the + Buildroot LTS Sponsoring + page.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2024.05 released

    +

    12 June 2024

    +
    +
    +

    The stable 2024.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2024.05 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2024.02.3 released

    +

    10 June 2024

    +
    +
    +

    The 2024.02.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2024.02.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2024.02.3 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2024.05-rc2 released

    +

    4 June 2024

    +
    +
    +

    Another week, another release candidate with more cleanups and build fixes. See the + CHANGES + file for more details.

    + +

    Go to the downloads page to pick up the + 2024.05-rc2 + release, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2024.05-rc1 released

    +

    30 May 2024

    +
    +
    +

    We have a new release candidate! Lots of changes all over the tree, see the + CHANGES + file for more details.

    + +

    Go to the downloads page to pick up the + 2024.05-rc1 + release, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2024.02.2 released

    +

    7 May 2024

    +
    +
    +

    The 2024.02.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2024.02.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2024.02.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.02.11 released

    +

    27 March 2024

    +
    +
    +

    The 2023.02.11 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.02.10 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.02.11 release.

    + +

    Notice that the 2023.02.x series is now end of life. Please migrate to + the 2024.02.x series instead.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.11.3 released, 2023.11.x series EOL

    +

    26 March 2024

    +
    +
    +

    The 2023.11.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.11.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.11.3 release.

    + +

    Notice that the 2023.11.x series is now end of life. Please migrate to + the 2024.02.x series instead.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2024.02.1 released

    +

    26 March 2024

    +
    +
    +

    The 2024.02.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2024.02 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2024.02.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2024.02 released

    +

    5 March 2024

    +
    +
    +

    The stable 2024.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2024.02 release.

    + +

    Notice that this is a long term support release which will be + supported with security and other important fixes until March 2025.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2024.02-rc2 released

    +

    1 March 2024

    +
    +
    +

    Another week, another release candidate with more cleanups and build fixes. See the + CHANGES + file for more details.

    + +

    Go to the downloads page to pick up the + 2024.02-rc2 + release, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.02.10 released

    +

    1 March 2024

    +
    +
    +

    The 2023.02.10 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.02.9 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.02.10 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.11.2 released

    +

    1 March 2024

    +
    +
    +

    The 2023.11.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.11.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.11.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2024.02-rc1 released

    +

    25 February 2024

    +
    +
    +

    We have a new release candidate! Lots of changes all over the tree, see the + CHANGES + file for more details.

    + +

    Go to the downloads page to pick up the + 2024.02-rc1 + release, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.02.9 released

    +

    15 January 2024

    +
    +
    +

    The 2023.02.9 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.02.8 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.02.9 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.11.1 released

    +

    15 January 2024

    +
    +
    +

    The 2023.11.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.11 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.11.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Talos security vulnerabilities

    +

    6 December 2023

    +
    +
    +

    Talos has recently published + TALOS-2023-1844 + and + TALOS-2023-1845 + advisories, describing vulnerabilities in the download hash + verification logic of Buildroot. These issues are fixed in the + 2023.02.8, 2023.08.4 and 2023.11 releases. For more details, + see the + announcement.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.02.8 released

    +

    4 December 2023

    +
    +
    +

    The 2023.02.8 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.02.7 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.02.8 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.08.4 released, 2023.08.x series EOL

    +

    4 December 2023

    +
    +
    +

    The 2023.08.4 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.08.3 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.08.4 release.

    + +

    Notice that the 2023.08.x series is now end of life. Please migrate to + the 2023.11 series instead.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.11 released

    +

    4 December 2023

    +
    +
    +

    The stable 2023.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.11-rc2 released

    +

    29 November 2023

    +
    +
    +

    2023.11-rc2 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2023.11-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.02.7 released

    +

    14 November 2023

    +
    +
    +

    The 2023.02.7 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.02.6 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.02.7 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.08.3 released

    +

    14 November 2023

    +
    +
    +

    The 2023.08.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.08.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.08.3 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.11-rc1 released

    +

    14 November 2023

    +
    +
    +

    We have a new release candidate! Lots of changes all over the tree, see the + CHANGES + file for more details.

    + +

    Go to the downloads page to pick up the + 2023.11-rc1 + release, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.02.6 released

    +

    16 October 2023

    +
    +
    +

    The 2023.02.6 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.02.5 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.02.6 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.08.2 released

    +

    15 October 2023

    +
    +
    +

    The 2023.08.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.08.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.08.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.08.1 released

    +

    27 September 2023

    +
    +
    +

    The 2023.08.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.08 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.08.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.02.5 released

    +

    27 September 2023

    +
    +
    +

    The 2023.02.5 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.02.4 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.02.5 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.05.3 released, 2023.05.x series EOL

    +

    26 September 2023

    +
    +
    +

    The 2023.05.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.05.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.05.3 release.

    + +

    Notice that the 2023.05.x series is now end of life. Please migrate to + the 2023.08 series instead.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.08 released

    +

    6 September 2023

    +
    +
    +

    The stable 2023.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.08 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.02.4 released

    +

    31 August 2023

    +
    +
    +

    The 2023.02.4 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.02.3 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.02.4 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.05.2 released

    +

    31 August 2023

    +
    +
    +

    The 2023.05.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.05.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.05.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.08-rc3 released

    +

    29 August 2023

    +
    +
    +

    2023.08-rc3 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2023.08-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.08-rc2 released

    +

    20 August 2023

    +
    +
    +

    2023.08-rc2 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2023.08-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.08-rc1 released

    +

    5 August 2023

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for more details.

    +

    Go to the downloads page to pick up the + 2023.08-rc1 + release, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.02.3 released

    +

    17 July 2023

    +
    +
    +

    The 2023.02.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.02.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.02.3 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.05.1 released

    +

    17 July 2023

    +
    +
    +

    The 2023.05.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.05 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.05.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.02.2 released

    +

    16 June 2023

    +
    +
    +

    The 2023.02.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.02.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.02.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.05 released

    +

    7 June 2023

    +
    +
    +

    The stable 2023.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.05 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.05-rc3 released

    +

    4 June 2023

    +
    +
    +

    2023.05-rc3 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2023.05-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.05-rc2 released

    +

    28 May 2023

    +
    +
    +

    2023.05-rc2 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2023.05-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.05-rc1 released

    +

    15 May 2023

    +
    +
    +

    We have a new release candidate! Lots of changes all over the tree, see the + CHANGES + file for more details.

    + +

    Go to the downloads page to pick up the + 2023.05-rc1 + release, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.02.1 released

    +

    10 May 2023

    +
    +
    +

    The 2023.02.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.02 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.02.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.02.12 released, 2022.02.x series EOL

    +

    4 May 2023

    +
    +
    +

    The 2022.02.12 bugfix release is out, fixing a number of important / + security related issues discovered since the 2022.02.11 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.02.12 release.

    + +

    Notice that the 2022.02.x series is now end of life. Please migrate to + the 2023.02 series instead which will be supported until April 2024.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.02.11 released

    +

    19 March 2023

    +
    +
    +

    The 2022.02.11 bugfix release is out, fixing a number of important / + security related issues discovered since the 2022.02.10 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.02.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.11.3 released, 2022.11.x series EOL

    +

    18 March 2023

    +
    +
    +

    The 2022.11.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2022.11.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.11.3 release.

    + +

    Notice that the 2022.11.x series is now end of life. Please migrate to + the 2023.02 series instead which will be supported until April 2024.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.02 released

    +

    12 March 2023

    +
    +
    +

    The stable 2023.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.02 release.

    + +

    Notice that this is a long term support release which will be + supported with security and other important fixes until March 2024.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.02-rc3 released

    +

    8 March 2023

    +
    +
    +

    2023.02-rc3 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2023.02-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.02.10 released

    +

    18 January 2023

    +
    +
    +

    The 2022.02.10 bugfix release is out, fixing a number of important / + security related issues discovered since the 2022.02.9 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.02.10 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.11.2 released

    +

    1 March 2023

    +
    +
    +

    The 2022.11.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2022.11.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.11.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.02-rc2 released

    +

    27 February 2023

    +
    +
    +

    2023.02-rc2 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2023.02-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2023.02-rc1 released

    +

    20 February 2023

    +
    +
    +

    We have a new release candidate! Lots of changes all over the tree, see the + CHANGES + file for more details.

    + +

    Go to the downloads page to pick up the + 2023.02-rc1 + release, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.02.9 released

    +

    18 January 2023

    +
    +
    +

    The 2022.02.9 bugfix release is out, fixing a number of important / + security related issues discovered since the 2022.02.8 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.02.9 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.11.1 released

    +

    18 January 2023

    +
    +
    +

    The 2022.11.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2022.11 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.11.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.02.8 released

    +

    10 December 2022

    +
    +
    +

    The 2022.02.8 bugfix release is out, fixing a number of important / + security related issues discovered since the 2022.02.7 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.02.8 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.08.3 released

    +

    10 December 2022

    +
    +
    +

    The 2022.08.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2022.08.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.08.3 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.11 released

    +

    5 December 2022

    +
    +
    +

    The stable 2022.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.11-rc3 released

    +

    24 November 2022

    +
    +
    +

    2022.11-rc3 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2022.11-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.02.7 released

    +

    17 November 2022

    +
    +
    +

    The 2022.02.7 bugfix release is out, fixing a number of important / + security related issues discovered since the 2022.02.6 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.02.7 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.08.2 released

    +

    16 November 2022

    +
    +
    +

    The 2022.08.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2022.08.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.08.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.11-rc2 released

    +

    16 November 2022

    +
    +
    +

    2022.11-rc2 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2022.11-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.11-rc1 released

    +

    3 November 2022

    +
    +
    +

    We have a new release candidate! Lots of changes all over the tree, see the + CHANGES + file for more details.

    + +

    Go to the downloads page to pick up the + 2022.11-rc1 + release, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.08.1 released

    +

    3 October 2022

    +
    +
    +

    The 2022.08.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2022.08 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.08.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.02.6 released

    +

    2 October 2022

    +
    +
    +

    The 2022.02.6 bugfix release is out, fixing a number of important / + security related issues discovered since the 2022.02.5 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.02.6 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.05.3 released

    +

    2 October 2022

    +
    +
    +

    The 2022.05.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2022.05.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.05.3 release.

    + +

    Notice that the 2022.05.x series is now end of life. Please migrate to + the 2022.08 series instead which will be supported until December 2022.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.08 released

    +

    10 September 2022

    +
    +
    +

    The stable 2022.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.08 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.08-rc2 released

    +

    1 September 2022

    +
    +
    +

    2022.08-rc2 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2022.08-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.02.5 released

    +

    31 August 2022

    +
    +
    +

    The 2022.02.5 bugfix release is out, fixing a number of important / + security related issues discovered since the 2022.02.4 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.02.5 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.05.2 released

    +

    31 August 2022

    +
    +
    +

    The 2022.05.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2022.05.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.05.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.08-rc1 released

    +

    12 August 2022

    +
    +
    +

    We have a new release candidate! Lots of changes all over the tree, see the + CHANGES + file for more details.

    + +

    Go to the downloads page to pick up the + 2022.08-rc1 + release, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.02.4 released

    +

    28 July 2022

    +
    +
    +

    The 2022.02.4 bugfix release is out, fixing a number of important / + security related issues discovered since the 2022.02.3 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.02.4 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.05.1 released

    +

    24 July 2022

    +
    +
    +

    The 2022.05.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2022.05 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.05.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.02.3 released

    +

    19 June 2022

    +
    +
    +

    The 2022.02.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2022.02.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.02.3 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.05 released

    +

    6 June 2022

    +
    +
    +

    The stable 2022.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.05 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.05-rc2 released

    +

    30 May 2022

    +
    +
    +

    2022.05-rc2 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2022.05-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.02.2 released

    +

    29 May 2022

    +
    +
    +

    The 2022.02.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2022.02.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.02.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.05-rc1 released

    +

    18 May 2022

    +
    +
    +

    We have a new release candidate! Lots of changes all over the tree, see the + CHANGES + file for more details.

    + +

    Go to the downloads page to pick up the + 2022.05-rc1 + release, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.02.1 released

    +

    11 April 2022

    +
    +
    +

    The 2022.02.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2022.02 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.02.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.02.12 released, 2021.02.x series EOL

    +

    6 April 2022

    +
    +
    +

    The 2021.02.12 bugfix release is out, fixing a number of important / + security related issues discovered since the 2021.02.11 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.02.12 release.

    + +

    Notice that the 2021.02.x series is now end of life. Please migrate to + the 2022.02 series instead which will be supported until April 2023.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.02.11 released

    +

    25 March 2022

    +
    +
    +

    The 2021.02.11 bugfix release is out, fixing a number of important / + security related issues discovered since the 2021.02.10 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.02.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.11.3 released, 2021.11.x series EOL

    +

    24 March 2022

    +
    +
    +

    The 2021.11.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2021.11.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.11.3 release.

    + +

    Notice that the 2021.11.x series is now end of life. Please migrate to + the 2022.02 series instead which will be supported until April 2023.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.02 released

    +

    8 March 2022

    +
    +
    +

    The stable 2022.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2022.02 release.

    + +

    Notice that this is a long term support release which will be + supported with security and other important fixes until March 2023.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.02-rc3 released

    +

    28 February 2022

    +
    +
    +

    2022.02-rc3 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2022.02-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.02.10 released

    +

    28 February 2022

    +
    +
    +

    The 2021.02.10 bugfix release is out, fixing a number of important / + security related issues discovered since the 2021.02.9 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.02.10 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.11.2 released

    +

    28 February 2022

    +
    +
    +

    The 2021.11.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2021.11.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.11.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.02-rc2 released

    +

    20 February 2022

    +
    +
    +

    2022.02-rc2 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2022.02-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2022.02-rc1 released

    +

    13 February 2022

    +
    +
    +

    We have a new release candidate! Lots of changes all over the tree, see the + CHANGES + file for more details.

    + +

    Go to the downloads page to pick up the + 2022.02-rc1 + release, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.02.9 released

    +

    29 January 2022

    +
    +
    +

    The 2021.02.9 bugfix release is out, fixing a number of important / + security related issues discovered since the 2021.02.8 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.02.9 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.11.1 released

    +

    29 January 2022

    +
    +
    +

    The 2021.11.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2021.11 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.11.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.02.8 released

    +

    14 December 2021

    +
    +
    +

    The 2021.02.8 bugfix release is out, fixing a number of important / + security related issues discovered since the 2021.02.7 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.02.8 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.08.3 released, 2021.08.x series EOL

    +

    13 December 2021

    +
    +
    +

    The 2021.08.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2021.08.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.08.3 release.

    + +

    Notice that the 2021.08.x series is now end of life. Please migrate to + the 2021.11 series instead which will be supported until April 2022.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.11 released

    +

    5 December 2021

    +
    +
    +

    The stable 2021.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.11-rc3 released

    +

    30 November 2021

    +
    +
    +

    2021.11-rc3 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2021.11-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.11-rc2 released

    +

    19 November 2021

    +
    +
    +

    2021.11-rc2 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2021.11-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.02.7 released

    +

    10 November 2021

    +
    +
    +

    The 2021.02.7 bugfix release is out, fixing a number of important / + security related issues discovered since the 2021.02.6 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.02.7 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.08.2 released

    +

    10 November 2021

    +
    +
    +

    The 2021.08.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2021.08.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.08.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.11-rc1 released

    +

    8 November 2021

    +
    +
    +

    We have a new release candidate! Lots of changes all over the tree, see the + CHANGES + file for more details.

    + +

    Go to the downloads page to pick up the + 2021.11-rc1 + release, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.02.6 released

    +

    12 October 2021

    +
    +
    +

    The 2021.02.6 bugfix release is out, fixing a number of important / + security related issues discovered since the 2021.02.5 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.02.6 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.05.3 released, 2021.05.x series EOL

    +

    12 October 2021

    +
    +
    +

    The 2021.05.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2021.05.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.05.3 release.

    + +

    Notice that the 2021.05.x series is now end of life. Please migrate to + the 2021.08 series instead which will be supported until December 2021.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.08.1 released

    +

    11 October 2021

    +
    +
    +

    The 2021.08.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2021.08 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.08.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.02.5 released

    +

    16 September 2021

    +
    +
    +

    The 2021.02.5 bugfix release is out, fixing a number of important / + security related issues discovered since the 2021.02.4 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.02.5 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.05.2 released

    +

    15 September 2021

    +
    +
    +

    The 2021.05.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2021.05.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.05.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.08 released

    +

    4 September 2021

    +
    +
    +

    The stable 2021.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.08 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.08-rc3 released

    +

    31 August 2021

    +
    +
    +

    2021.08-rc3 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2021.08-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.08-rc2 released

    +

    18 August 2021

    +
    +
    +

    2021.08-rc2 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2021.08-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.02.4 released

    +

    11 August 2021

    +
    +
    +

    The 2021.02.4 bugfix release is out, fixing a number of important / + security related issues discovered since the 2021.02.3 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.02.4 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.05.1 released

    +

    10 August 2021

    +
    +
    +

    The 2021.05.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2021.05 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.05.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.08-rc1 released

    +

    3 August 2021

    +
    +
    +

    We have a new release candidate! Lots of changes all over the tree, see the + CHANGES + file for more details.

    + +

    Go to the downloads page to pick up the + 2021.08-rc1 + release, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.02.3 released

    +

    12 June 2021

    +
    +
    +

    The 2021.02.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2021.02.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.02.3 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.05 released

    +

    6 June 2021

    +
    +
    +

    The stable 2021.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.05 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.05-rc3 released

    +

    31 May 2021

    +
    +
    +

    2021.05-rc3 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2021.05-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.05-rc2 released

    +

    22 May 2021

    +
    +
    +

    2021.05-rc2 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2021.05-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.02.2 released

    +

    12 May 2021

    +
    +
    +

    The 2021.02.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2021.02.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.02.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.05-rc1 released

    +

    12 May 2021

    +
    +
    +

    We have a new release candidate! Lots of changes all over the tree, see the + CHANGES + file for more details.

    + +

    Go to the downloads page to pick up the + 2021.05-rc1 + release, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.02.1 released

    +

    7 April 2021

    +
    +
    +

    The 2021.02.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2021.02 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.02.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.02.12 released, 2020.02.x series EOL

    +

    5 April 2021

    +
    +
    +

    The 2020.02.12 bugfix release is out, fixing a number of important / + security related issues discovered since the 2020.02.11 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.02.12 release.

    + +

    Notice that the 2020.02.x series is now end of life. Please migrate to + the 2021.02 series instead which will be supported until March 2022.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.11.4 released, 2020.11.x series EOL

    +

    5 April 2021

    +
    +
    +

    The 2020.11.4 bugfix release is out, fixing a number of important / + security related issues discovered since the 2020.11.3 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.11.4 release.

    + +

    Notice that the 2020.11.x series is now end of life. Please migrate to + the 2021.02 series instead which will be supported until March 2022.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.02 released

    +

    6 March 2021

    +
    +
    +

    The stable 2021.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2021.02 release.

    + +

    Notice that this is a long term support release which will be + supported with security and other important fixes until March 2022.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.02-rc3 released

    +

    27 February 2021

    +
    +
    +

    2021.02-rc3 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2021.02-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.02.11 released

    +

    17 February 2021

    +
    +
    +

    The 2020.02.11 bugfix release is out, fixing a number of important / + security related issues discovered since the 2020.02.10 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.02.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.11.3 released

    +

    17 February 2021

    +
    +
    +

    The 2020.11.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2020.11.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.11.3 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.02-rc2 released

    +

    17 February 2021

    +
    +
    +

    2021.02-rc2 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2021.02-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2021.02-rc1 released

    +

    9 February 2021

    +
    +
    +

    We have a new release candidate! Lots of changes all over the tree, see the + CHANGES + file for more details.

    + +

    Go to the downloads page to pick up the + 2021.02-rc1 + release, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.02.10 released

    +

    31 January 2021

    +
    +
    +

    The 2020.02.10 bugfix release is out, fixing a number of important / + security related issues discovered since the 2020.02.9 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.02.10 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.11.2 released

    +

    31 January 2021

    +
    +
    +

    The 2020.11.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2020.11.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.11.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.02.9 released

    +

    27 December 2020

    +
    +
    +

    The 2020.02.9 bugfix release is out, fixing a number of important / + security related issues discovered since the 2020.02.8 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.02.9 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.08.3 released, 2020.08.x series EOL

    +

    27 December 2020

    +
    +
    +

    The 2020.08.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2020.08.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.08.3 release.

    + +

    Notice that the 2020.08.x series is now end of life. Please migrate to + the 2020.11 series instead which will be supported until March 2021.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.11.1 released

    +

    27 December 2020

    +
    +
    +

    The 2020.11.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2020.11 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.11.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.11 released

    +

    2 December 2020

    +
    +
    +

    The stable 2020.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.11-rc3 released

    +

    28 November 2020

    +
    +
    +

    Another week, another release candidate with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2020.11-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.02.8 released

    +

    17 November 2020

    +
    +
    +

    The 2020.02.8 bugfix release is out, fixing a number of important / + security related issues discovered since the 2020.02.7 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.02.8 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.08.2 released

    +

    16 November 2020

    +
    +
    +

    The 2020.08.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2020.08.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.08.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.11-rc2 released

    +

    14 November 2020

    +
    +
    +

    2020.11-rc2 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2020.11-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.11-rc1 released

    +

    4 November 2020

    +
    +
    +

    We have a new release candidate! Lots of changes all over the tree, see the + CHANGES + file for more details.

    + +

    Go to the downloads page to pick up the + 2020.11-rc1 + release, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.02.7 released

    +

    12 October 2020

    +
    +
    +

    The 2020.02.7 bugfix release is out, fixing a number of important / + security related issues discovered since the 2020.02.6 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.02.7 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.05.3 released

    +

    12 October 2020

    +
    +
    +

    The 2020.05.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2020.05.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.05.3 release.

    + +

    Notice that the 2020.05.x series is now end of life. Please migrate to + the 2020.08 series instead which will be supported until December 2020.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.08.1 released

    +

    12 October 2020

    +
    +
    +

    The 2020.08.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2020.08 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.08.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.02.6 released

    +

    5 September 2020

    +
    +
    +

    The 2020.02.6 bugfix release is out, fixing a number of important / + security related issues discovered since the 2020.02.5 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.02.6 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.08 released

    +

    1 September 2020

    +
    +
    +

    The stable 2020.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.08 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.02.5 released

    +

    29 august 2020

    +
    +
    +

    The 2020.02.5 bugfix release is out, fixing a number of important / + security related issues discovered since the 2020.02.4 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.02.5 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.05.2 released

    +

    29 August 2020

    +
    +
    +

    The 2020.05.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2020.05.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.05.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.08-rc3 released

    +

    28 August 2020

    +
    +
    +

    Another week, another release candidate with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2020.08-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.08-rc2 released

    +

    24 August 2020

    +
    +
    +

    2020.08-rc2 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2020.08-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.08-rc1 released

    +

    6 August 2020

    +
    +
    +

    The 2020.08-rc1 release candidate is out. It is the first + release candidate for 2020.08, which we aim at releasing end + of August 2020. It contains a number of new packages, new + defconfigs, toolchain improvements, package updates and + more. See + the CHANGES. Go + to the downloads page to pick up the + 2020.08-rc1 + release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.02.4 released

    +

    26 July 2020

    +
    +
    +

    The 2020.02.4 bugfix release is out, fixing a number of important / + security related issues discovered since the 2020.02.3 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.02.4 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.05.1 released

    +

    25 July 2020

    +
    +
    +

    The 2020.05.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2020.05 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.05.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.02.3 released

    +

    3 June 2020

    +
    +
    +

    The 2020.02.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2020.02.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.02.3 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.05 released

    +

    1 June 2020

    +
    +
    +

    The stable 2020.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.05 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.05-rc3 released

    +

    29 May 2020

    +
    +
    +

    Another week, another release candidate with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2020.05-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.05-rc2 released

    +

    22 May 2020

    +
    +
    +

    Another week, another release candidate with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2020.05-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.02.2 released

    +

    12 May 2020

    +
    +
    +

    The 2020.02.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2020.02.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.02.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.05-rc1 released

    +

    10 April 2020

    +
    +
    +

    We have a new release candidate! Lots of changes all over the tree, see the + CHANGES + file for more details.

    + +

    Go to the downloads page to pick up the + 2020.05-rc1 + release, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.02.1 released

    +

    10 April 2020

    +
    +
    +

    The 2020.02.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2020.02 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.02.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.11.3 released, 2019.11.x series EOL

    +

    10 April 2020

    +
    +
    +

    The 2019.11.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.11.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.11.3 release.

    + +

    Notice that the 2019.11.x series is now end of life. Please migrate to + the 2020.02 series instead which will be supported until April 2021.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.02.11 released, 2019.02.x series EOL

    +

    9 April 2020

    +
    +
    +

    The 2019.02.11 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.02.10 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.02.11 release.

    + +

    Notice that the 2019.02.x series is now end of life. Please migrate to + the 2020.02 series instead which will be supported until April 2021.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.02.10 released

    +

    16 march 2020

    +
    +
    +

    The 2019.02.10 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.02.9 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.02.10 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.11.2 released

    +

    16 March 2020

    +
    +
    +

    The 2019.11.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.11.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.11.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.02 released

    +

    8 March 2020

    +
    +
    +

    The stable 2020.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2020.02 release.

    + +

    Notice that this is a long term support release which will be + supported with security and other important fixes until March 2021.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.02-rc3 released

    +

    2 March 2020

    +
    +
    +

    Another week, another release candidate with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2020.02-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.02-rc2 released

    +

    26 February 2020

    +
    +
    +

    Another week, another release candidate with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2020.02-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2020.02-rc1 released

    +

    18 February 2020

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the + CHANGES + file for details. +

    + +

    Head to the downloads page to pick up the + 2020.02-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.02.9 released

    +

    12 January 2020

    +
    +
    +

    The 2019.02.9 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.02.8 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.02.9 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.11.1 released

    +

    12 January 2020

    +
    +
    +

    The 2019.11.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.11 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.11.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.02.8 released

    +

    7 December 2019

    +
    +
    +

    The 2019.02.8 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.02.7 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.02.8 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.08.3 released

    +

    7 December 2019

    +
    +
    +

    The 2019.08.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.08.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.08.3 release.

    + +

    Notice that the 2019.08.x series is now end of life. Please migrate to + the 2019.02 or 2019.11 series instead.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.11 released

    +

    1 December 2019

    +
    +
    +

    The stable 2019.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.11-rc3 released

    +

    24 November 2019

    +
    +
    +

    Another week, another release candidate with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2019.11-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.11-rc2 released

    +

    16 November 2019

    +
    +
    +

    Another week, another release candidate with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2019.11-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.02.7 released

    +

    10 November 2019

    +
    +
    +

    The 2019.02.7 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.02.6 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.02.7 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.08.2 released

    +

    9 November 2019

    +
    +
    +

    The 2019.08.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.08.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.08.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.11-rc1 released

    +

    5 November 2019

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the + CHANGES + file for details. +

    + +

    Head to the downloads page to pick up the + 2019.11-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.02.6 released

    +

    4 October 2019

    +
    +
    +

    The 2019.02.6 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.02.5 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.02.6 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.05.3 released

    +

    4 October 2019

    +
    +
    +

    The 2019.05.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.05.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.05.3 release.

    + +

    Notice that the 2019.05.x series is now end of life. Please migrate to + the 2019.02 or 2019.08 series instead.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.08.1 released

    +

    4 October 2019

    +
    +
    +

    The 2019.08.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.08 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.08.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.05.2 released

    +

    3 September 2019

    +
    +
    +

    The 2019.05.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.05.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.05.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.02.5 released

    +

    2 September 2019

    +
    +
    +

    The 2019.02.5 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.02.4 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.02.5 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.08 released

    +

    1 September 2019

    +
    +
    +

    The stable 2019.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.08 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.08-rc3 released

    +

    28 August 2019

    +
    +
    +

    Another week, another release candidate with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2019.08-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.08-rc2 released

    +

    20 August 2019

    +
    +
    +

    Another week, another release candidate with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2019.08-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.08-rc1 released

    +

    9 August 2019

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the + CHANGES + file for details. +

    + +

    Head to the downloads page to pick up the + 2019.08-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.02.4 released

    +

    7 June 2019

    +
    +
    +

    The 2019.02.4 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.02.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.02.4 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.05.1 released

    +

    7 July 2019

    +
    +
    +

    The 2019.05.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.05 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.05.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.02.3 released

    +

    7 June 2019

    +
    +
    +

    The 2019.02.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.02.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.02.3 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.05 released

    +

    2 June 2019

    +
    +
    +

    The stable 2019.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.05 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.05-rc3 released

    +

    25 May 2019

    +
    +
    +

    Another week, another release candidate with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2019.05-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.05-rc2 released

    +

    15 May 2019

    +
    +
    +

    Another week, another release candidate with more cleanups and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2019.05-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.05-rc1 released

    +

    8 May 2019

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the + CHANGES + file for details, and read the + announcement. +

    + +

    Head to the downloads page to pick up the + 2019.05-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.02.2 released

    +

    29 April 2019

    +
    +
    +

    The 2019.02.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.02.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.02.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.02.1 released

    +

    29 March 2019

    +
    +
    +

    The 2019.02.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.02 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.02.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.02.12 released, 2018.02.x series EOL

    +

    29 March 2019

    +
    +
    +

    The 2018.02.12 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02.11 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.12 release.

    + +

    Notice that the 2018.02.x series is now end of life. Please migrate to + the 2019.02 series instead which will be supported until March 2020.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.11.4 released

    +

    28 March 2019

    +
    +
    +

    The 2018.11.4 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.11.3 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.11.4 release.

    + +

    Notice that the 2018.11.x series is now end of life. Please migrate to + the 2019.02 series instead which will be supported until March 2020.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.02 released

    +

    4 March 2019

    +
    +
    +

    The stable 2019.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.02 release.

    + +

    Notice that this is a long term support release which will be + supported with security and other important fixes until March 2020.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.02-rc3 released

    +

    1 March 2019

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2019.02-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.11.3 released

    +

    23 February 2019

    +
    +
    +

    The 2018.11.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.11.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.11.3 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.02.11 released

    +

    23 February 2019

    +
    +
    +

    The 2018.02.11 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02.10 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.02-rc2 released

    +

    23 February 2019

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2019.02-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2019.02-rc1 released

    +

    13 February 2019

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the + CHANGES + file for details and read the + announcement. +

    + +

    Head to the downloads page to pick up the + 2019.02-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.02.10 released

    +

    31 January 2019

    +
    +
    +

    The 2018.02.10 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02.9 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.10 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.11.2 released

    +

    30 January 2019

    +
    +
    +

    The 2018.11.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.11.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.11.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.02.9 released

    +

    20 December 2018

    +
    +
    +

    The 2018.02.9 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02.8 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.9 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.08.4 released, 2018.08 series EOL

    +

    20 December 2018

    +
    +
    +

    The 2018.08.4 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.08.3 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.08.4 release.

    +

    Notice that the 2018.08 series is now end of life, please + consider migrating to 2018.11 instead.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.11.1 released

    +

    19 December 2018

    +
    +
    +

    The 2018.11.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.11 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.11.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.11 released

    +

    1 December 2018

    +
    +
    +

    The stable 2018.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.11-rc3 released

    +

    30 November 2018

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2018.11-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.02.8 released

    +

    26 November 2018

    +
    +
    +

    The 2018.02.8 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02.7 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.8 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.08.3 released

    +

    26 November 2018

    +
    +
    +

    The 2018.08.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.08.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.08.3 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.11-rc2 released

    +

    21 November 2018

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2018.11-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.11-rc1 released

    +

    9 November 2018

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the + CHANGES + file for details and/or read + the announcement. +

    + +

    Head to the downloads page to pick up the + 2018.11-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.02.7 released

    +

    25 October 2018

    +
    +
    +

    The 2018.02.7 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02.6 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.7 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.08.2 released

    +

    25 October 2018

    +
    +
    +

    The 2018.08.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.08.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.08.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.08.1 released

    +

    7 October 2018

    +
    +
    +

    The 2018.08.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.08 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.08.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.02.6 released

    +

    7 October 2018

    +
    +
    +

    The 2018.02.6 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02.5 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.6 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.05.3 released

    +

    6 October 2018

    +
    +
    +

    The 2018.05.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.05.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.05.3 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.08 released

    +

    6 September 2018

    +
    +
    +

    The stable 2018.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.08 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.08-rc3 released

    +

    31 August 2018

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2018.08-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.02.5 released

    +

    29 August 2018

    +
    +
    +

    The 2018.02.5 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02.4 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.5 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.05.2 released

    +

    28 August 2018

    +
    +
    +

    The 2018.05.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.05.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.05.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.08-rc2 released

    +

    20 August 2018

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2018.08-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.08-rc1 released

    +

    5 August 2018

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the + CHANGES + file for details and/or read + the announcement. +

    + +

    Head to the downloads page to pick up the + 2018.08-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.02.4 released

    +

    21 July 2018

    +
    +
    +

    The 2018.02.4 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02.3 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.4 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.05.1 released

    +

    20 July 2018

    +
    +
    +

    The 2018.05.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.05 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.05.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.02.3 released

    +

    18 June 2018

    +
    +
    +

    The 2018.02.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.3 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.05 released

    +

    1 June 2018

    +
    +
    +

    The stable 2018.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.05 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.05-rc3 released

    +

    28 May 2018

    +
    +
    +

    Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

    +

    Head to the downloads page to + pick up + the 2018.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.05-rc2 released

    +

    22 May 2018

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2018.05-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.05-rc1 released

    +

    9 May 2018

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the + CHANGES + file for details and read the + announcement. +

    + +

    Head to the downloads page to pick up the + 2018.05-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.02.2 released

    +

    4 May 2018

    +
    +
    +

    The 2018.02.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02.11 released

    +

    11 April 2018

    +
    +
    +

    The 2017.02.11 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.10 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.11 release.

    +

    Notice that the 2017.02 series is now end of life, so please consider + updating to 2018.02 instead.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.02.1 released

    +

    10 April 2018

    +
    +
    +

    The 2018.02.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.02 released

    +

    4 March 2018

    +
    +
    +

    The stable 2018.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02 release.

    + +

    Notice that this is a long term support release which will be + supported with security and other important fixes until February 2019.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.02-rc3 released

    +

    27 February 2018

    +
    +
    +

    Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

    +

    Head to the downloads page to + pick up + the 2018.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.02-rc2 released

    +

    15 February 2018

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2018.02-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.02-rc1 released

    +

    5 February 2018

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the + CHANGES + file for details and read the + announcement. +

    + +

    Head to the downloads page to pick up the + 2018.02-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02.10 released

    +

    31 January 2018

    +
    +
    +

    The 2017.02.10 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.9 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.10 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.11.2 released

    +

    21 January 2018

    +
    +
    +

    The 2017.11.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.11.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.11.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02.9 released

    +

    1 January 2018

    +
    +
    +

    The 2017.02.9 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.8 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.9 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.11.1 released

    +

    31 December 2017

    +
    +
    +

    The 2017.11.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.11 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.11.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.11 released

    +

    30 November 2017

    +
    +
    +

    The stable 2017.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.08.2 released

    +

    29 November 2017

    +
    +
    +

    The 2017.08.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.08.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.08.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02.8 released

    +

    27 November 2017

    +
    +
    +

    The 2017.02.8 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.7 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.8 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.11-rc2 released

    +

    13 November 2017

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2017.11-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.11-rc1 released

    +

    6 November 2017

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. +

    + +

    Head to the downloads page to pick up the + 2017.11-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02.7 released

    +

    28 October 2017

    +
    +
    +

    The 2017.02.7 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.6 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.7 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.08.1 released

    +

    23 October 2017

    +
    +
    +

    The 2017.08.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.08 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.08.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02.6 released

    +

    24 September 2017

    +
    +
    +

    The 2017.02.6 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.5 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.6 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.08 released

    +

    1 September 2017

    +
    +
    +

    The stable 2017.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details + and go to the downloads page to pick up the + 2017.08 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.08-rc3 released

    +

    23 August 2017

    +
    +
    +

    Another release candidate, on the road to the final 2017.08 + release. A number of fixes and cleanups in various packages + and defconfigs. See + the CHANGES + file for details. +

    + +

    Head to the downloads page to pick up the + 2017.08-rc3 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.08-rc2 released

    +

    11 August 2017

    +
    +
    +

    Another release candidate, on the road to the final 2017.08 + release. A number of fixes and cleanups in various packages + and defconfigs. See + the CHANGES + file for details. +

    + +

    Head to the downloads page to pick up the + 2017.08-rc2 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.08-rc1 released

    +

    2 August 2017

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. +

    + +

    Head to the downloads page to pick up the + 2017.08-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.05.2 released

    +

    27 July 2017

    +
    +
    +

    The 2017.05.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.05.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.05.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02.5 released

    +

    27 July 2017

    +
    +
    +

    The 2017.02.5 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.4 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.5 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.05.1 released

    +

    4 July 2017

    +
    +
    +

    The 2017.05.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.05 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.05.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02.4 released

    +

    4 July 2017

    +
    +
    +

    The 2017.02.4 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.3 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.4 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02.3 released

    +

    2 June 2017

    +
    +
    +

    The 2017.02.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.3 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.05 released

    +

    31 May 2017

    +
    +
    +

    The stable 2017.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.05 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.05-rc3 released

    +

    30 May 2017

    +
    +
    +

    Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

    +

    Head to the downloads page to + pick up + the 2017.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.05-rc2 released

    +

    17 May 2017

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2017.05-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.05-rc1 released

    +

    8 May 2017

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. +

    + +

    Head to the downloads page to pick up the + 2017.05-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02.2 released

    +

    1 May 2017

    +
    +
    +

    The 2017.02.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02.1 released

    +

    4 April 2017

    +
    +
    +

    The 2017.02.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.11.3 released

    +

    10 March 2017

    +
    +
    +

    The 2016.11.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2016.11.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2016.11.3 release.

    +

    Notice that this is the final 2016.11.x release. Users are + urged to migrate to the 2017.02.x series instead.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02 released

    +

    28 February 2017

    +
    +
    +

    The stable 2017.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02 release.

    + +

    Notice that this is a long term support release which will be + supported with security and other important fixes until February 2018.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02-rc3 released

    +

    26 February 2017

    +
    +
    +

    Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

    +

    Head to the downloads page to + pick up + the 2017.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02-rc2 released

    +

    20 February 2017

    +
    +
    +

    We have a new release candidate! Lots of changes all over the tree, see + the CHANGES + file for details. +

    + +

    Head to the downloads page to pick up the + 2017.02-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02-rc1 released

    +

    11 February 2017

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, read + the announcement. +

    + +

    Head to the downloads page to pick up the + 2017.12-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.11.2 released

    +

    25 January 2017

    +
    +
    +

    The 2016.11.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2016.11.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2016.11.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.11.1 released

    +

    29 December 2016

    +
    +
    +

    The 2016.11.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2016.11 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2016.11.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.11 released

    +

    30 November 2016

    +
    +
    +

    The stable 2016.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2016.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.11-rc3 released

    +

    28 November 2016

    +
    +
    +

    Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

    +

    Head to the downloads page to + pick up + the 2016.11-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.11-rc2 released

    +

    13 November 2016

    +
    +
    +

    We have a new release candidate! Lots of + changes all over the tree, see + the CHANGES + file for details. +

    + +

    Head to the downloads page to pick up the + 2016.11-rc2 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.11-rc1 released

    +

    3 November 2016

    +
    +
    +

    We have a new release candidate! Lots of + changes all over the tree, see + the CHANGES + file for details, read the + announcement. +

    + +

    Head to the downloads page to pick up the + 2016.11-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.08.1 released

    +

    21 September 2016

    +
    +
    +

    The 2016.08.1 bugfix release is out. This release fixes a + potential entire root filesystem removal issue with the + external toolchain handling discovered since the 2016.08 + release. See the + CHANGES + file for more details, read the + announcement and go to the + downloads page to pick up the + 2016.08.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.08 released

    +

    1 September 2016

    +
    +
    +

    The stable 2016.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2016.08 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.08-rc3 released

    +

    30 August 2016

    +
    +
    +

    Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

    +

    Head to the downloads page to + pick up + the 2016.08-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.08-rc2 released

    +

    17 August 2016

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2016.08-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.08-rc1 released

    +

    6 August 2016

    +
    +
    +

    We have a new release candidate! Lots of + changes all over the tree, see + the CHANGES + file for details and read the + announcement +

    + +

    Head to the downloads page to pick up the + 2016.08-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.05 released

    +

    1 March 2016

    +
    +
    +

    The stable 2016.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2016.05 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.05-rc3 released

    +

    26 May 2016

    +
    +
    +

    Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

    +

    Head to the downloads page to + pick up + the 2016.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.05-rc2 released

    +

    17 May 2016

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2016.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.05-rc1 released

    +

    10 May 2016

    +
    +
    +

    We have a new release candidate! Lots of + changes all over the tree, see + the CHANGES + file for details and read the + announcement. +

    + +

    Head to the downloads page to pick up the + 2016.05-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.02 released

    +

    1 March 2016

    +
    +
    +

    The stable 2016.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2016.02 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.02-rc3 released

    +

    27 February 2016

    +
    +
    +

    Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

    +

    Head to the downloads page to + pick up + the 2016.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.02-rc2 released

    +

    18 February 2016

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2016.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.02-rc1 released

    +

    10 February 2016

    +
    +
    +

    We have a new release candidate! Lots of + changes all over the tree, see + the CHANGES + file for details and read the + announcement. +

    + +

    Head to the downloads page to pick up the + 2016.02-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.11.1 released

    +

    5 December 2015

    +
    +
    +

    The 2015.11.1 bugfix release is out - Thanks to everyone + contributing. This release fixes critical issues discovered + since the 2015.11 release. See the + CHANGES + file for more details, and go to the + downloads page to pick up the + 2015.11.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.11 released

    +

    30 November 2015

    +
    +
    +

    The stable 2015.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2015.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.11-rc3 released

    +

    26 November 2015

    +
    +
    +

    Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

    +

    Head to the downloads page to + pick up + the 2015.11-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.11-rc2 released

    +

    19 November 2015

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

    +

    Head to the downloads page to + pick up + the 2015.11-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.11-rc1 released

    +

    7 November 2015

    +
    +
    +

    We have a new release candidate! Lots of + changes all over the tree, see + the CHANGES + file for details. See also + the announcement + e-mail.

    + +

    Head to the downloads page to pick up the + 2015.11-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.08.1 released

    +

    6 September 2015

    +
    +
    +

    The 2015.08.1 bugfix release is out - Thanks to everyone + contributing. This release fixes critical issues discovered since + the 2015.08 release. See the + CHANGES + file for more details, + and go to the downloads page to pick up the + 2015.08.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.08 released

    +

    31 August 2015

    +
    +
    +

    The stable 2015.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2015.08 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.08-rc2 released

    +

    24 August 2015

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see + the CHANGES + file for details, and + the release + announcement.

    + +

    Head to the downloads page to pick up the + 2015.08-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.08-rc1 released

    +

    5 August 2015

    +
    +
    +

    We have a new release candidate! Lots of changes all over the tree, see + the CHANGES + file for details, read + the announcement.

    + +

    Head to the downloads page to pick up the + 2015.08-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.05 released

    +

    31 May 2015

    +
    +
    +

    The stable 2015.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2015.05 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.05-rc3 released

    +

    22 May 2015

    +
    +
    +

    Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

    +

    Head to the downloads page to + pick up + the 2015.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.05-rc2 released

    +

    11 May 2015

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    +

    Head to the downloads page to + pick up the + 2015.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.05-rc1 released

    +

    4 May 2015

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2015.05-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.02 released

    +

    1 March 2015

    +
    +
    +

    The stable 2015.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2015.02 release.

    +
    +
    +
  • + + +
  • +
    +
    +
    +

    2015.02-rc3 released

    +

    24 February 2015

    +
    +
    +

    Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

    +

    Head to the downloads page to + pick up the + 2015.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.02-rc2 released

    +

    15 February 2015

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2015.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.02-rc1 released

    +

    8 February 2015

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2015.02-rc1 + release candidate, and report any problems found to + the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.11 released

    +

    1 December 2014

    +
    +
    +

    The stable 2014.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, + and go to the downloads page to pick up the + 2014.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.11-rc3 released

    +

    28 November 2014

    +
    +
    +

    Release candidate 3 is out with more cleanups and build + fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to + pick up the + 2014.11-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.11-rc2 released

    +

    21 November 2014

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2014.11-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Report from Buildroot Developers Meeting

    +

    13 November 2014

    +
    +
    +

    A report from the recent + + Buildroot Developers Meeting is now + available.

    + +

    Once again, thanks to all the participants and to + Mind for sponsoring the event.

    + +

    The next Developer Days will take place on February 2nd and + 3rd in Brussels, Belgium, right + after FOSDEM. See + the wiki + for more details.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.11-rc1 released

    +

    12 November 2014

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2014.11-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.08 released

    +

    1 September 2014

    +
    +
    +

    The stable 2014.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2014.08 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.08-rc3 released

    +

    26 August 2014

    +
    +
    +

    Release candidate 3 is out with more cleanups and build + fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2014.08-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.08-rc2 released

    +

    18 August 2014

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2014.08-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.08-rc1 released

    +

    8 August 2014

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2014.08-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.05 released

    +

    31 May 2014

    +
    +
    +

    The stable 2014.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2014.05 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.05-rc3 released

    +

    28 May 2014

    +
    +
    +

    Release candidate 3 is out with more cleanups and build + fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2014.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.05-rc2 released

    +

    21 May 2014

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to + pick up the + 2014.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.05-rc1 released

    +

    13 May 2014

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2014.05-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    27 February 2014

    +

    2014.02 released

    +
    +
    +

    The stable 2014.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, + and go to the downloads page to pick up the + 2014.02 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    25 February 2014

    +

    2014.02-rc3 released

    +
    +
    +

    Release candidate 3 is out with more cleanups and build + fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2014.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    20 February 2014

    +

    2014.02-rc2 released

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2014.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.02-rc1 released

    +

    11 February 2014

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2014.02-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    9 February 2014

    +

    Report from Buildroot Developers Meeting

    +
    +
    +

    A report from the recent + + Buildroot Developers Meeting is now + available.

    + +

    Once again, thanks to all the participants and to + Google and + Mind for sponsoring the event.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Upcoming Buildroot Developers meeting

    +

    30 January 2014

    +
    +
    +

    The upcoming Buildroot Developers meeting will take place in + Brussels on February, 3rd and 4th, after the + FOSDEM conference. Additional + details about the meeting can be found on the corresponding + + wiki page.

    + +

    Persons not able to join the meeting in Brussels can participate + remotely using Google Hangouts. Simply give your Google address to + thomas.petazzoni@free-electrons.com.

    + +

    This meeting is sponsored by + Google (for the meeting room) + and Mind (for the dinner). + Thanks to our sponsors!

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.11 released

    +

    30 November 2013

    +
    +
    +

    The stable 2013.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the announcement + and go to the downloads page to pick up the + 2013.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Slides from Embedded Linux Conference Europe

    +

    30 November 2013

    +
    +
    +

    The slides from the Buildroot presentation at the recent + Embedded Linux Conference Europe 2013 + are now + available.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.11-rc3 released

    +

    18 November 2013

    +
    +
    +

    Another week, another release candidate with more + fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2013.11-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.11-rc2 released

    +

    18 November 2013

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2013.11-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Announcement of the next Buildroot Developer Days

    +

    13 November 2013

    +
    +
    +

    The next Buildroot Developer Days meeting will take + place on Monday 3rd and Tuesday 4th February 2014 in Brussels, + Belgium - Just after + FOSDEM (February + 1st/2nd). This two days meeting is mainly open to Buildroot + developers and contributors, or Buildroot users having a prior + experience with the tool. It will allow developers to work on + Buildroot and discuss current issues, the future directions, and + more.

    + +

    In addition to the Buildroot event, we encourage embedded Linux + developers to propose talks for the Embedded and Mobile Developer + Room at FOSDEM. See + the CFP.

    + +

    We would like to thank our + sponsor Google for sponsoring + the event by providing all the needed logistics.

    + +

    For more details, see the + wiki + page dedicated to the meeting.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.11-rc1 released

    +

    12 November 2013

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2013.11-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Report from Buildroot Developers Meeting

    +

    11 November 2013

    +
    +
    +

    A report from the recent + + Buildroot Developers Meeting is now + available.

    + +

    Once again, thanks to all the participants and to + Imagination Technologies + for sponsoring the event.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.08.1 released

    +

    17 September 2013

    +
    +
    +

    The 2013.08.1 bugfix release is out - Thanks to everyone + contributing. This release fixes critical issues discovered since + the 2013.08 release. See the + CHANGES + file for more details, + and go to the downloads page to pick up the + 2013.08.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Buildroot Developer Days

    +

    16 September 2013

    +
    +
    +

    The next Buildroot Developer Days meeting will take + place on Saturday October 26th and Sunday October 27th 2013 in + Edinburgh, UK - Just after the + Embedded Linux Conference Europe (October 23th-24th). This two + days meeting is mainly open to Buildroot developers and + contributors, or Buildroot users having a prior experience with + the tool. It will allow developers to work on Buildroot and + discuss current issues, the future directions, and more.

    + +

    For more details, see the + wiki + page dedicated to the meeting.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.08 released

    +

    31 August 2013

    +
    +
    +

    The stable 2013.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the announcement + and go to the downloads page to pick up the + 2013.08 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.08-rc3 released

    +

    29 August 2013

    +
    +
    +

    Another week, another release candidate with more cleanups and + build fixes. See the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2013.08-rc3 + release candidate, and report any problems found to the mailing list or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.08-rc2 released

    +

    16 August 2013

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2013.08-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.08-rc1 released

    +

    5 August 2013

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2013.08-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.05 released

    +

    31 May 2013

    +
    +
    +

    The stable 2013.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2013.05 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.05-rc3 released

    +

    25 May 2013

    +
    +
    +

    Another week, another release candidate with more cleanups and + build fixes. See the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2013.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.05-rc2 released

    +

    15 May 2013

    +
    +
    +

    Another week, another release candidate with more cleanups and + build fixes. See the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2013.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.05-rc1 released

    +

    8 May 2013

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2013.05-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.02 released

    +

    28 February 2013

    +
    +
    +

    The stable 2013.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details + and go to the downloads page to pick up the + 2013.02 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.02-rc3 released

    +

    26 February 2013

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2013.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.02-rc2 released

    +

    19 February 2013

    +
    +
    +

    Another week, another release candidate with more cleanups and + build fixes. See the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2013.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.02-rc1 released

    +

    10 February 2013

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2013.02-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Report from Buildroot Developers Meeting

    +

    10 February 2013

    +
    +
    +

    A report from the recent Buildroot Developers Meeting is now + available. + Embedded Linux News also has a + + writeup about the event, including photos.

    + +

    Once again, thanks to all the participants and to + Google for sponsoring the event.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Next Buildroot Developers Meeting next to FOSDEM, Brussels

    +

    12 January 2013

    +
    +
    +

    The next Buildroot Developers Meeting will take place on Monday + 4th February 2013 and Tuesday 5th February 2013 in Brussels, + Belgium. Those dates have been chosen to immediately follow the + great FOSDEM conference.

    + +

    Attending this meeting is free, after registration by + contacting Thomas + Petazzoni. For more details about the meeting, please see + the related + Wiki page.

    + +

    We would like to + thank Google for providing the + meeting location and the Internet connection, and offering free + lunch and refreshments to the participants.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.11.1 released

    +

    3 January 2013

    +
    +
    +

    The 2012.11.1 bugfix release is out - Thanks to everyone + contributing. This release fixes critical issues discovered since + the 2012.11 release, most importantly with non-largefile builds on + recent Ubuntu versions. See the + CHANGES + file for more details, + and go to the downloads page to pick up the + 2012.11.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.11 released

    +

    2 December 2012

    +
    +
    +

    The stable 2012.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details + and go to the downloads page to pick up the + 2012.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.11-rc2 released

    +

    30 November 2012

    +
    +
    +

    RC2 is out with more bugfixes - See + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2012.11-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.11-rc1 released

    +

    17 November 2012

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2012.11-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Buildroot Developer Day

    +

    17 November 2012

    +
    +
    +

    A report from the recent Buildroot Developer Days + meeting in Barcelona, Spain is + now available. + Many thanks to all the participants, and a special thanks to + Arnout Vandecappelle from mind + for taking notes and Thomas Petazzoni + from Free Electrons + for handling all the practical arrangements, and naturally + our sponsors, Fluendo + and Synopsis. +

    +

    The next Developer Days will take place on February 4th and + 5th in Brussels, Belgium, right + after FOSDEM.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.08 released

    +

    31 August 2012

    +
    +
    +

    The stable 2012.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details and go to the downloads page to pick up the + 2012.08 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.08-rc3 released

    +

    25 August 2012

    +
    +
    +

    We have a new release candidate! Various fixes, and + addition of licensing informations on many + packages. See CHANGES + file for details

    + +

    Head to the downloads page to pick up the + 2012.08-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.08-rc2 released

    +

    15 August 2012

    +
    +
    +

    We have a new release candidate! Various fixes, and addition + of licensing informations on many + packages. See CHANGES + file for details

    + +

    Head to the downloads page to pick up the + 2012.08-rc2 + release candidate, and report any problems found to the mailing list or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.08-rc1 released

    +

    1 August 2012

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details

    + +

    Head to the downloads page to pick up the + 2012.08-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Buildroot Developer Day

    +

    22 July 2012

    +
    +
    +

    The next Buildroot Developer Day meeting will take place + on Saturday November 3th and Sunday November 4th 2012 in + Barcelona, Spain, just before + the Embedded + Linux Conference Europe (November 5th-7th). This two days + meeting is mainly opened to Buildroot developers and contributors, + or Buildroot users having a prior experience with the tool. This + meeting will allow developers to work and Buildroot, and discuss + current issues, the future directions, and more.

    + +

    For more details, see + the wiki + page dedicated to the meeting.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.05 released

    +

    30 May 2012

    +
    +
    +

    The stable 2012.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2012.05 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.05-rc3 released

    +

    25 May 2012

    +
    +
    +

    RC3 is out with more bugfixes - See + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2012.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.05-rc2 released

    +

    18 May 2012

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2012.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.05-rc1 released

    +

    10 May 2012

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2012.05-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Autobuilder Results Online

    +

    20 April 2012

    +
    +
    +

    The status of the autobuilders, which do repeated + randpackageconfig builds for continuous + integration testing, is now online + at autobuild.buildroot.org. The + code behind it can be found + in git.

    + +

    Thanks to Thomas Petazzoni for running the web interface, and + to The GCC Compile + Farm and Free + Electrons for hosting builders. Thomas also sends out a daily + summary of the build status to the mailing list.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.02 released

    +

    29 February 2012

    +
    +
    +

    The stable 2012.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2012.02 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.02-rc3 released

    +

    27 February 2012

    +
    +
    +

    RC3 is out with more bugfixes - See + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2012.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.02-rc2 released

    +

    19 February 2012

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2012.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.02-rc1 released

    +

    12 February 2012

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2012.02-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Buildroot Developer Day

    +

    31 January 2012

    +
    +
    +

    Another Buildroot Developer Day will take place on + Friday, February 3rd in Brussels, Belgium - The day + before FOSDEM. See the + announcement + or + the Free + Electrons blog for more info.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.11 released

    +

    30 November 2011

    +
    +
    +

    The stable 2011.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2011.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.11-rc3 released

    +

    26 November 2011

    +
    +
    +

    RC3 is out with more bugfixes - See + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2011.11-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.11-rc2 released

    +

    18 November 2011

    +
    +
    +

    Another week, another release candidate with a bunch of + cleanups and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2011.11-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.11-rc1 released

    +

    11 November 2011

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement + +

    Head to the downloads page to pick up the + 2011.11-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.08 released

    +

    31 August 2011

    +
    +
    +

    The stable 2011.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, and go to the downloads page to pick up the + 2011.08 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.08-rc2 released

    +

    29 August 2011

    +
    +
    +

    RC2 is out with more bugfixes. See + the CHANGES + file for details, and read the + announcement. + +

    Head to the downloads page to pick up the + 2011.08-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.08-rc1 released

    +

    4 August 2011

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement. + +

    Head to the downloads page to pick up the + 2011.08-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.05 released

    +

    27 May 2011

    +
    +
    +

    The stable 2011.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, and go to the downloads page to pick up the + 2011.05 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.05-rc2 released

    +

    24 May 2011

    +
    +
    +

    RC2 is out with more bugfixes. See + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2011.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.05-rc1 released

    +

    18 May 2011

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement. + +

    Head to the downloads page to pick up the + 2011.05-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.02 released

    +

    28 February 2011

    +
    +
    +

    The stable 2011.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2011.02 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.02-rc2 released

    +

    24 February 2011

    +
    +
    +

    RC2 is out with more cleanups and bugfixes, see + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2011.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.02-rc1 released

    +

    14 February 2011

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement. + +

    Head to the downloads page to pick up the + 2011.02-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.11 released

    +

    30 November 2010

    +
    +
    +

    The stable 2010.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2010.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.11-rc2 released

    +

    25 November 2010

    +
    +
    +

    RC2 is out with more cleanups and bugfixes, see + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2010.11-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.11-rc1 released

    +

    8 November 2010

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement. + +

    Head to the downloads page to pick up the + 2010.11-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Buildroot Developer Day

    +

    28 September 2010

    +
    +
    +

    A Buildroot Developer Day will take place on + Friday, October 29th in Cambridge, UK - Just the day after the + Embedded + Linux Conference Europe. This Developer Day + aims at allowing Buildroot developers to meet and exchange + ideas on the project and its future. See the + announcement + for more info.

    + +

    Thanks to Thomas Petazzoni for taking care of the practical + arrangements.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.08 released

    +

    31 August 2010

    +
    +
    +

    The stable 2010.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2010.08 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.08-rc2 released

    +

    30 August 2010

    +
    +
    +

    RC2 is out with more cleanups and bugfixes, see + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2010.08-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    + + This is very much expected to be the final release candidate, + so give it a good test and expect a final 2010.08 release + before September unless critical issues are found.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.08-rc1 released

    +

    30 July 2010

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2010.08-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.05 released

    +

    30 May 2010

    +
    +
    +

    The stable 2010.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2010.05 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.05-rc3 released

    +

    27 May 2010

    +
    +
    +

    RC3 is out with more cleanups and bugfixes, see + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2010.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.05-rc2 released

    +

    11 May 2010

    +
    +
    +

    Another week, another release candidate with a bunch of + cleanups and build fixes.

    + +

    Head to the downloads page to pick up the + 2010.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.05-rc1 released

    +

    3 May 2010

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2010.05-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    FOSDEM slides online

    +

    2 May 2010

    +
    +
    +

    The slides from + the Cross + Build Systems: Present & Future session + at FOSDEM are + now online. +

    +
    +
  • + +
  • +
    +
    +
    +

    2010.02 released

    +

    26 February 2010

    +
    +
    +

    The stable 2010.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, and go to + the downloads page to pick up + the 2010.02 + release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.02-rc2 released

    +

    23 February 2010

    +
    +
    +

    RC2 is out with more cleanups and bugfixes, see + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2010.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.02-rc1 released

    +

    9 February 2010

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2010.02-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.11 released

    +

    1 December 2009

    +
    +
    +

    The stable 2009.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + announcement + or CHANGES + for more details, and go to the downloads page + to pick up the 2009.11 + release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.11-rc2 released

    +

    29 November 2009

    +
    +
    +

    RC2 is out with more cleanups and bugfixes, see + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2009.11-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.11-rc1 released

    +

    23 November 2009

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2009.11-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    First Buildroot Developer Day

    +

    7 September 2009

    +
    +
    +

    The first Buildroot Developer Day will take place on + Saturday, October 17th in Grenoble, France, just the day after + Embedded Linux Conference Europe. This Developer Day aims + at allowing Buildroot developers to meet and exchange ideas on the + project and its future.

    + +

    As the number of places is limited, interested candidates are + invited to send an e-mail to Peter Korsgaard (jacmet at + uclibc dot org) and Thomas Petazzoni (thomas dot + petazzoni at free-electrons dot com).

    + +

    This Developer Day will take place thanks to the + sponsoring of Calao + Systems and Free + Electrons.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.08 released

    +

    31 August 2009

    +
    +
    +

    The stable 2009.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + announcement + or CHANGES + for more details, and go to the downloads page + to pick up the 2009.08 + release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.08-rc3 released

    +

    26 August 2009

    +
    +
    +

    A number of bugfixes have been added to the tree since RC2 + (especially thanks to Thomas Petazzoni) - See + the CHANGES + file for details. This is very much expected to be the final + release candidate, so give it a good test and expect a final + 2009.08 release next weekend unless critical issues are + found.

    + +

    Head to the downloads page to + pick up the + 2009.08-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.08-rc2 released

    +

    6 August 2009

    +
    +
    +

    RC2 is out with more cleanups and bugfixes, see + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2009.08-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.08-rc1 released

    +

    2 August 2009

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2009.08-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.05 released

    +

    1 June 2009

    +
    +
    +

    The stable 2009.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + announcement + or CHANGES + for more details, and go to the downloads page + to pick up the 2009.05 + release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.05-rc3 released

    +

    27 May 2009

    +
    +
    +

    We had a number of fixes post-RC2, so RC3 is out + (see CHANGES + for details). Now is the moment to test and verify that + everything is working for your favorite config - Expect a + final 2009.05 very soon.

    + +

    Head to the downloads page to pick up the + 2009.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.05-rc2 released

    +

    19 May 2009

    +
    +
    +

    RC2 is out with more cleanups and bug fixes + (see CHANGES). + Unless big issues are found, expect this to be the last + release candidate before the release - So give it a good + test.

    + +

    Head to the downloads page to pick up the + 2009.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Buildroot.org

    +

    14 May 2009

    +
    +
    +

    Earl Levine has been so kind to donate + the buildroot.org domain to us, so the website can + now also be reached + at www.buildroot.org + (and git at + git.buildroot.org). + + Thanks a lot Earl!

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.05-rc1 released

    +

    5 May 2009

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2009.05-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Moved to git

    +

    3 May 2009

    +
    +
    +

    We've moved the source code + from Subversion + to Git. You can browse the + repo online + here, and clone + the repo using: +

    git clone git://git.buildroot.net/buildroot
    + See the Git Access page for more details. +

    +
    +
    +
  • + +
  • +
    +
    +
    +

    +

    27 March 2009

    +

    +
    +

    We have a logo! We have so + far been using the Busybox + logo on the website, as the website was a copy of + the Busybox one - But not + anymore, we now have a shiny new logo of our own.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.02 released

    +

    12 February 2009

    +
    +
    +

    The stable 2009.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + announcement + for more details, and go to the downloads page + to pick up the 2009.02 + release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.02-rc4 released

    +

    9 February 2009

    +
    +
    +

    We had more than 50 changes since RC3, several of them + toolchain related, so decided to make a RC4 as well. This is + very much expected to be the final release candidate, so + give it a good test and expect a final 2009.02 release this + week unless critical issues are found.

    + +

    Head to the downloads page to + pick up the + 2009.02-rc4 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.02-rc3 released

    +

    31 January 2009

    +
    +
    +

    RC3 is out with more cleanups and bug fixes. Unless big + issues are found, expect this to be the last release + candidate before the release - So give it a good test.

    + +

    Head to the downloads page to + pick up the + 2009.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.02-rc2 released

    +

    23 January 2009

    +
    +
    +

    Another week, another release candidate with a bunch of + cleanups and build fixes.

    +

    Head to the downloads page to + pick up the + 2009.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Release candidate and new maintainer

    +

    16 January 2009

    +
    +
    + +

    It has been a long time coming, but we finally have a new + release candidate! - And a new maintainer to match (Peter + Korsgaard).

    + +

    Head to the downloads page to + pick up the + 2009.02-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker. The + plan is to release 2009.02 in time + for FOSDEM.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Buildroot mailing list

    +

    16 July 2006

    +
    +
    +

    Buildroot now has its own mailing list.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Buildroot webpage added

    +

    21 February 2005

    + +

    Buildroot is a set of Makefiles and patches that makes it easy generate a + cross-compilation toolchain and root filesystem for your target Linux + system using the uClibc C library. + Buildroot is useful mainly for people working with small or embedded + systems. Embedded systems often use processors that are not the regular + x86 processors everyone is used to using on their PC. It can be PowerPC + processors, MIPS processors, ARM processors, etc. And to be extra safe, + you do not need to be root to build or run buildroot.

    + +

    And as of today buildroot even has its own webpage, making it a first class + citizen of uclibc.org and busybox.net, and more importantly, make it easy + to find and point to buildroot.

    + +

    If you find a bug in buildroot, or wish to submit a patch + to fix a problem or add a shiny new feature, please use + the Bug and Patch + Tracking System to post the details, to make certain + your work is not lost

    +
    +
    +
  • +
+ +
+
+
+ + diff --git a/docs/website/robots.txt b/docs/website/robots.txt new file mode 100644 index 00000000..1b425ee0 --- /dev/null +++ b/docs/website/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: /cgi-bin/ diff --git a/docs/website/sponsors.html b/docs/website/sponsors.html new file mode 100644 index 00000000..bfb83663 --- /dev/null +++ b/docs/website/sponsors.html @@ -0,0 +1,383 @@ + + +
+
+
+ +
+
LTS sponsors
+
+

The maintenance of the Long Term Support branch of Buildroot is + possible thanks to the sponsors of the + Buildroot LTS Sponsoring + Program.

+

When the Buildroot LTS Sponsoring program will be operational + later in 2024, those sponsors will be mentioned here.

+
+ +
+
Current sponsors
+
+ +
+
+
+
+
+ + + +
+
+ Tap2Open + financially sponsored the Buildroot Association + in 2020 and 2023.
+
+
+
+ +
+
+
+
+ + + +
+
+ Smile sponsored the + Buildroot project by hosting + the Buildroot + Developers Meeting of February 2023 in Brussels, + after the FOSDEM + conference. +
+
+
+
+ +
+
+
+
+ + + +
+
+ Armadeus + Systems financially sponsored + the Buildroot + Association in 2022.
+
+
+
+
+ +
+
+
+
+
+ + + +
+
+ Logilin + financially sponsored the Buildroot Association + in 2022.
+
+
+
+
+
+
+ +
+
Past sponsors
+
+

Throughout its history, the Buildroot project has been sponsored by + various companies, that we would like to thank below.

+ +
+
+
+
+
+ + + +
+
+ Smile provided the meeting location for the + ELCE 2019 + meeting and sponsored the Buildroot Summer Camp that took place on July 1-5 2016 + in Toulouse, France. Smile sponsored the participation of Romain Naour and paid + the food expenses for the meeting participants. + In 2018, Smile sponsored of LLVM/Clang integration into Buildroot, see the final + report. +
+
+
+
+ +
+
+
+
+ + + +
+
+ Mind sponsored + financially the Buildroot Association for the ELCE + 2018 meeting, sponsored the dinner of the FOSDEM 2014, + 2015, 2016, 2017 and 2018 Developers Meeting + (Brussels) and ELCE 2016 (Berlin) and 2017 (Prague), + and the meeting room and the dinner for the ELCE 2014 + Developers Meeting (Düsseldorf). +
+
+
+
+ +
+
+
+
+

+

+
+
+

Google provided + the logistics for the FOSDEM 2013, FOSDEM 2014, + FOSDEM 2015, FOSDEM 2016, FOSDEM 2017, FOSDEM 2018, + FOSDEM 2019 and FOSDEM 2020 Developer Days in Brussels, + Belgium.

+
+
+
+
+
+ +
+ +
+
+
+
+

+

+
+
+ Amarula + Solutions sponsored the event by contributing + financially to the Buildroot Association. +
+
+
+
+ +
+
+
+
+

+

+
+ +
+

Bootlin + sponsored financially the Buildroot Association for + the ELCE 2018 meeting, sponsored the meeting + location for the ELCE 2016 Developer Days in Berlin, + Germany, and the lunch for the ELCE 2009 Developer + Days in Grenoble, France.

+
+
+
+
+ +
+
+
+
+ + + +
+
+ Logilin sponsored + the ELCE 2018 Buildroot Developers meeting by + contributing financially to the Buildroot + Association. +
+
+
+
+ +
+ +
+ +
+
+
+
+ + + +
+
+ Tk Open Systems + sponsored the ELCE 2018 Buildroot Developers meeting + by contributing financially to the Buildroot + Association. +
+
+
+
+ +
+
+
+
+ + + +
+
+ Rockwell + Collins sponsored the ELCE 2018 Buildroot + Developers meeting by funding the social Saturday + dinner for the participants. +
+
+
+
+ +
+
+
+
+ + + +
+
+ Scaleway + sponsored the complete logistics to organize our Buildroot + Hackathon in Paris in March 2018: meeting room, Internet + connectivity and accommodation. +
+
+
+
+
+ +
+
+
+
+
+

+

+
+
+ Imagination Technologies + sponsored the meeting room and dinner of the ELCE 2013 + Developer Days in Edinburgh, UK. +
+
+
+
+ +
+
+
+
+

+

+
+
+

CircuitCo sponsored + several development boards for the Google Summer of Code + 2013 project on Buildroot.

+
+
+
+
+ +
+
+
+
+

+

+
+
+

BoundaryDevices + sponsored an i.MX6 development board for the Google Summer of + Code 2013 project on Buildroot.

+
+
+
+
+
+ +
+
+
+
+
+

+

+
+
+

Fluendo sponsored the + meeting room for the ELCE 2012 Developer Days in Barcelona + Spain.

+
+
+
+
+ +
+
+
+
+

+

+
+
+

Synopsys sponsored the + dinner for the ELCE 2012 Developer Days in Barcelona, Spain.

+
+
+
+
+ +
+
+
+
+

+

+
+
+

Calao Systems + provided a a meeting room for the ELCE 2009 Developer Days + in Grenoble, France.

+
+
+
+
+
+ +
+
+
+ + diff --git a/docs/website/support.html b/docs/website/support.html new file mode 100644 index 00000000..6bcf4ffc --- /dev/null +++ b/docs/website/support.html @@ -0,0 +1,152 @@ + + +
+
+
+ +
+
Support
+
+

You can get support for Buildroot through three main channels:

+ +
+
+
+
IRC
+
+
+
+ +
+
+

The Buildroot IRC channel is + #buildroot, hosted on OFTC. If you do not have an IRC client, you can + use the OFTC web interface. The + channel is also bridged to matrix as + #_oftc_#buildroot:matrix.org. + When asking for help on IRC, share relevant logs or pieces of code using a code + sharing website.

+ +

Note that due to excessive spamming on IRC, the channel can only be + joined if you are a registered user with + OFTC NickServ + service. Follow the instructions to register as a user with a password, + and then join the #buildroot channel.

+
+
+
+
+
+ +
+
+
Mailing List Information
+
+
+
+ +
+
+

The mailing list is for discussion and + development. You can subscribe by visiting + this + page. Only subscribers to the Buildroot + mailing list are allowed to post to this + list. Archives are available + from Mailman + and lore.kernel.org. + +

Search the List Archives

+

Please search the mailing list archives before asking questions on the mailing + list, since there is a good chance someone else has asked the same question + before.

+ +
+ + +
+
+
+
+
+
+ +
+
+
Bug Tracker
+
+
+
+ +
+
+

If you think you found a bug in Buildroot, you can use the + Bug Tracker to post your bugs and/or + participate to find solutions to existing problems.

+ +

Note: patches are only accepted through the mailing list.

+
+
+
+
+
+
+
+
+ +
+
Buildroot LTS
+
+

Buildroot's Long Term Support (LTS) branch is maintained thanks to the + LTS Sponsoring program. Its + goal is to provide three or more years of stable support for your + Buildroot deployments. The success of this venture depends on the + generosity of sponsors like you, willing to make a change and ensuring + the longevity of Buildroot's reliability.

+

Prior to this initiative, LTS maintenance was handled by volunteers. + As a result, it was limited to just one year. In addition, it diverted + maintainer time away from mainline development, slowing down the overall + progress of the project.

+

Thanks to LTS sponsoring, the entire community gets access to a better + and longer maintained LTS branch. The sponsors get access to some + additional perks, such as selecting which packages to focus on, reports + with information that is relevant for you, and direct contact with the + LTS maintainers.

+

Ready + to sponsor?

+
+
+ +
+
Commercial support
+
+

In addition, the following companies are able to provide commercial + support. Only companies heavily involved in Buildroot maintenance and + community are listed here.

+ +
+ +
+
+
+ +
+
+
+ + diff --git a/fs/Config.in b/fs/Config.in new file mode 100644 index 00000000..eee5e26b --- /dev/null +++ b/fs/Config.in @@ -0,0 +1,22 @@ +menu "Filesystem images" + +source "fs/axfs/Config.in" +source "fs/btrfs/Config.in" +source "fs/cloop/Config.in" +source "fs/cpio/Config.in" +source "fs/cramfs/Config.in" +source "fs/erofs/Config.in" +source "fs/ext2/Config.in" +source "fs/f2fs/Config.in" +source "fs/initramfs/Config.in" +source "fs/iso9660/Config.in" +source "fs/jffs2/Config.in" +source "fs/oci/Config.in" +source "fs/romfs/Config.in" +source "fs/squashfs/Config.in" +source "fs/tar/Config.in" +source "fs/ubi/Config.in" +source "fs/ubifs/Config.in" +source "fs/yaffs2/Config.in" + +endmenu diff --git a/fs/axfs/Config.in b/fs/axfs/Config.in new file mode 100644 index 00000000..8dfaffab --- /dev/null +++ b/fs/axfs/Config.in @@ -0,0 +1,17 @@ +config BR2_TARGET_ROOTFS_AXFS + bool "axfs root filesystem" + help + The Advanced XIP File System is a Linux kernel filesystem + driver that enables files to be executed directly from flash + or ROM memory rather than being copied into RAM. It has the + ability to store individual *pages* in a file + uncompressed/XIP or compressed/Demand Paged. + + So far, the only supported mode is 'XIP all', so all the + files that have the execute attribute set will be XIP'ed. + + At the moment, the FS is not supported in Linux mainline + (v4.3-rc5), so the kernel has to be built with the axfs + patches to be able to read it. Patches can be found at: + + https://github.com/jaredeh/axfs diff --git a/fs/axfs/axfs.mk b/fs/axfs/axfs.mk new file mode 100644 index 00000000..4b93df55 --- /dev/null +++ b/fs/axfs/axfs.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# Build the axfs root filesystem image +# +################################################################################ + +ROOTFS_AXFS_DEPENDENCIES = host-axfsutils + +define ROOTFS_AXFS_CMD + $(HOST_DIR)/bin/mkfs.axfs -s -a $(TARGET_DIR) $@ +endef + +$(eval $(rootfs)) diff --git a/fs/btrfs/Config.in b/fs/btrfs/Config.in new file mode 100644 index 00000000..85be68e7 --- /dev/null +++ b/fs/btrfs/Config.in @@ -0,0 +1,50 @@ +config BR2_TARGET_ROOTFS_BTRFS + bool "btrfs root filesystem" + select BR2_PACKAGE_HOST_BTRFS_PROGS + help + Build a btrfs root filesystem. If you enable this option, you + probably want to enable the btrfs-progs package too. + +if BR2_TARGET_ROOTFS_BTRFS + +config BR2_TARGET_ROOTFS_BTRFS_LABEL + string "filesystem label" + +config BR2_TARGET_ROOTFS_BTRFS_SIZE + string "filesystem size" + default "100m" + help + The size of the filesystem image in bytes. + Suffix with k, m, g or t for power-of-two kilo-, mega-, giga- + or terabytes. + +config BR2_TARGET_ROOTFS_BTRFS_SIZE_SECTOR + string "sector size" + default "4096" + help + This value should be set to the page size in bytes. The + default value of 4096 is the the most common page size for + most systems. If the sectorsize differs from the page size, + the created filesystem may not be mountable by the kernel. + Therefore it is recommended to leave this value at + 4096. Unless you know that your kernel uses a different page + size. Suffix with k for power-of-two kilobytes. + +config BR2_TARGET_ROOTFS_BTRFS_SIZE_NODE + string "btree node size" + default "16384" + help + The tree block size in which btrfs stores metadata in bytes. + This must be a multiple of the sectorsize, but not larger + than 64KiB (65536). + Suffix with k for power-of-two kilobytes. + +config BR2_TARGET_ROOTFS_BTRFS_FEATURES + string "Filesystem Features" + help + A comma separated string of features that can be enabled + during creation time. + For a list of available options, use: + `.../host/bin/mkfs.btrfs -O list-all` + +endif # BR2_TARGET_ROOTFS_BTRFS diff --git a/fs/btrfs/btrfs.mk b/fs/btrfs/btrfs.mk new file mode 100644 index 00000000..70e3ead9 --- /dev/null +++ b/fs/btrfs/btrfs.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# Build the btrfs root filesystem image +# +################################################################################ + +BTRFS_SIZE = $(call qstrip,$(BR2_TARGET_ROOTFS_BTRFS_SIZE)) +ifeq ($(BR2_TARGET_ROOTFS_BTRFS)-$(BTRFS_SIZE),y-) +$(error BR2_TARGET_ROOTFS_BTRFS_SIZE cannot be empty) +endif + +BTRFS_SIZE_NODE = $(call qstrip,$(BR2_TARGET_ROOTFS_BTRFS_SIZE_NODE)) +BTRFS_SIZE_SECTOR = $(call qstrip,$(BR2_TARGET_ROOTFS_BTRFS_SIZE_SECTOR)) +BTRFS_FEATURES = $(call qstrip,$(BR2_TARGET_ROOTFS_BTRFS_FEATURES)) +# qstrip results in stripping consecutive spaces into a single one. So the +# variable is not qstrip-ed to preserve the integrity of the string value. +BTRFS_LABEL = $(subst ",,$(BR2_TARGET_ROOTFS_BTRFS_LABEL)) +# ") + +BTRFS_OPTS = \ + -f \ + -r '$(TARGET_DIR)' \ + -L '$(BTRFS_LABEL)' \ + --byte-count '$(BTRFS_SIZE)' \ + $(if $(BTRFS_SIZE_NODE),--nodesize '$(BTRFS_SIZE_NODE)') \ + $(if $(BTRFS_SIZE_SECTOR),--sectorsize '$(BTRFS_SIZE_SECTOR)') \ + $(if $(BTRFS_FEATURES),--features '$(BTRFS_FEATURES)') + +ROOTFS_BTRFS_DEPENDENCIES = host-btrfs-progs + +define ROOTFS_BTRFS_CMD + $(RM) -f $@ + $(HOST_DIR)/bin/mkfs.btrfs $(BTRFS_OPTS) $@ +endef + +$(eval $(rootfs)) diff --git a/fs/cloop/Config.in b/fs/cloop/Config.in new file mode 100644 index 00000000..3e01067a --- /dev/null +++ b/fs/cloop/Config.in @@ -0,0 +1,10 @@ +config BR2_TARGET_ROOTFS_CLOOP + bool "cloop root filesystem for the target device" + help + Build a cloop root filesystem + + cloop is a Linux kernel module that enables compressed + loopback filesystem support. With it you can mount a + compressed filesystem like a block device and seamlessly + decompress its data while accessing it. The majority of the + software on an LNX-BBC is accessed in this fashion. diff --git a/fs/cloop/cloop.mk b/fs/cloop/cloop.mk new file mode 100644 index 00000000..17749c5a --- /dev/null +++ b/fs/cloop/cloop.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# Build the compressed loop root filesystem image +# +################################################################################ + +ROOTFS_CLOOP_DEPENDENCIES = host-cloop host-cdrkit + +define ROOTFS_CLOOP_CMD + $(HOST_DIR)/bin/genisoimage -r $(TARGET_DIR) | \ + $(HOST_DIR)/bin/create_compressed_fs - 65536 > $@ +endef + +$(eval $(rootfs)) diff --git a/fs/common.mk b/fs/common.mk new file mode 100644 index 00000000..2f3f8bcc --- /dev/null +++ b/fs/common.mk @@ -0,0 +1,229 @@ +# +# Macro that builds the needed Makefile target to create a root +# filesystem image. +# +# The following variable must be defined before calling this macro +# +# ROOTFS_$(FSTYPE)_CMD, the command that generates the root +# filesystem image. A single command is allowed. The filename of the +# filesystem image that it must generate is $$@. +# +# The following variables can optionaly be defined +# +# ROOTFS_$(FSTYPE)_DEPENDENCIES, the list of dependencies needed to +# build the root filesystem (usually host tools) +# +# ROOTFS_$(FSTYPE)_PRE_GEN_HOOKS, a list of hooks to call before +# generating the filesystem image +# +# ROOTFS_$(FSTYPE)_POST_GEN_HOOKS, a list of hooks to call after +# generating the filesystem image +# +# In terms of configuration option, this macro assumes that the +# BR2_TARGET_ROOTFS_$(FSTYPE) config option allows to enable/disable +# the generation of a filesystem image of a particular type. If +# the configuration options BR2_TARGET_ROOTFS_$(FSTYPE)_GZIP, +# BR2_TARGET_ROOTFS_$(FSTYPE)_BZIP2 or +# BR2_TARGET_ROOTFS_$(FSTYPE)_LZMA exist and are enabled, then the +# macro will automatically generate a compressed filesystem image. + +FS_DIR = $(BUILD_DIR)/buildroot-fs +ROOTFS_DEVICE_TABLES = $(call qstrip,$(BR2_ROOTFS_DEVICE_TABLE) \ + $(BR2_ROOTFS_STATIC_DEVICE_TABLE)) + +ROOTFS_USERS_TABLES = $(call qstrip,$(BR2_ROOTFS_USERS_TABLES)) + +ROOTFS_FULL_DEVICES_TABLE = $(FS_DIR)/full_devices_table.txt +ROOTFS_FULL_USERS_TABLE = $(FS_DIR)/full_users_table.txt + +ROOTFS_COMMON_NAME = rootfs-common +ROOTFS_COMMON_TYPE = rootfs +ROOTFS_COMMON_DEPENDENCIES = \ + host-fakeroot host-makedevs \ + $(BR2_TAR_HOST_DEPENDENCY) \ + $(if $(PACKAGES_USERS)$(ROOTFS_USERS_TABLES),host-mkpasswd) + +ifeq ($(BR2_REPRODUCIBLE),y) +define ROOTFS_REPRODUCIBLE + find $(TARGET_DIR) -print0 | xargs -0 -r touch -hd @$(SOURCE_DATE_EPOCH) +endef +endif + +ifeq ($(BR2_PACKAGE_REFPOLICY),y) +define ROOTFS_SELINUX + $(HOST_DIR)/sbin/setfiles -m -r $(TARGET_DIR) \ + -c $(TARGET_DIR)/etc/selinux/targeted/policy/policy.$(BR2_PACKAGE_LIBSEPOL_POLICY_VERSION) \ + $(TARGET_DIR)/etc/selinux/targeted/contexts/files/file_contexts \ + $(TARGET_DIR) +endef +ROOTFS_COMMON_DEPENDENCIES += host-policycoreutils +endif + +ROOTFS_COMMON_FINAL_RECURSIVE_DEPENDENCIES = $(sort \ + $(if $(filter undefined,$(origin ROOTFS_COMMON_FINAL_RECURSIVE_DEPENDENCIES__X)), \ + $(eval ROOTFS_COMMON_FINAL_RECURSIVE_DEPENDENCIES__X := \ + $(foreach p, \ + $(ROOTFS_COMMON_DEPENDENCIES), \ + $(p) \ + $($(call UPPERCASE,$(p))_FINAL_RECURSIVE_DEPENDENCIES) \ + ) \ + ) \ + ) \ + $(ROOTFS_COMMON_FINAL_RECURSIVE_DEPENDENCIES__X)) + +.PHONY: rootfs-common +rootfs-common: $(ROOTFS_COMMON_DEPENDENCIES) target-finalize + @$(call MESSAGE,"Generating root filesystems common tables") + rm -rf $(FS_DIR) + mkdir -p $(FS_DIR) + + $(call PRINTF,$(PACKAGES_USERS)) >> $(ROOTFS_FULL_USERS_TABLE) +ifneq ($(ROOTFS_USERS_TABLES),) + cat $(ROOTFS_USERS_TABLES) >> $(ROOTFS_FULL_USERS_TABLE) +endif + + $(call PRINTF,$(PACKAGES_PERMISSIONS_TABLE)) > $(ROOTFS_FULL_DEVICES_TABLE) +ifneq ($(ROOTFS_DEVICE_TABLES),) + cat $(ROOTFS_DEVICE_TABLES) >> $(ROOTFS_FULL_DEVICES_TABLE) +endif +ifeq ($(BR2_ROOTFS_DEVICE_CREATION_STATIC),y) + $(call PRINTF,$(PACKAGES_DEVICES_TABLE)) >> $(ROOTFS_FULL_DEVICES_TABLE) +endif + +rootfs-common-show-depends: + @echo $(ROOTFS_COMMON_DEPENDENCIES) + +.PHONY: rootfs-common-show-info +rootfs-common-show-info: + @: + $(info $(call clean-json,{ $(call json-info,ROOTFS_COMMON) })) + +# Since this function will be called from within an $(eval ...) +# all variable references except the arguments must be $$-quoted. +define inner-rootfs + +ROOTFS_$(2)_NAME = rootfs-$(1) +ROOTFS_$(2)_TYPE = rootfs +ROOTFS_$(2)_IMAGE_NAME ?= rootfs.$(1) +ROOTFS_$(2)_FINAL_IMAGE_NAME = $$(strip $$(ROOTFS_$(2)_IMAGE_NAME)) +ROOTFS_$(2)_DIR = $$(FS_DIR)/$(1) +ROOTFS_$(2)_TARGET_DIR = $$(ROOTFS_$(2)_DIR)/target + +ROOTFS_$(2)_DEPENDENCIES += rootfs-common + +ROOTFS_$(2)_FINAL_RECURSIVE_DEPENDENCIES = $$(sort \ + $$(if $$(filter undefined,$$(origin ROOTFS_$(2)_FINAL_RECURSIVE_DEPENDENCIES__X)), \ + $$(eval ROOTFS_$(2)_FINAL_RECURSIVE_DEPENDENCIES__X := \ + $$(foreach p, \ + $$(ROOTFS_$(2)_DEPENDENCIES), \ + $$(p) \ + $$($$(call UPPERCASE,$$(p))_FINAL_RECURSIVE_DEPENDENCIES) \ + ) \ + ) \ + ) \ + $$(ROOTFS_$(2)_FINAL_RECURSIVE_DEPENDENCIES__X)) + +ifeq ($$(BR2_TARGET_ROOTFS_$(2)_GZIP),y) +ROOTFS_$(2)_COMPRESS_EXT = .gz +ROOTFS_$(2)_COMPRESS_CMD = gzip -9 -c -n +endif +ifeq ($$(BR2_TARGET_ROOTFS_$(2)_BZIP2),y) +ROOTFS_$(2)_COMPRESS_EXT = .bz2 +ROOTFS_$(2)_COMPRESS_CMD = bzip2 -9 -c +endif +ifeq ($$(BR2_TARGET_ROOTFS_$(2)_LZMA),y) +ROOTFS_$(2)_DEPENDENCIES += host-lzma +ROOTFS_$(2)_COMPRESS_EXT = .lzma +ROOTFS_$(2)_COMPRESS_CMD = $$(LZMA) -9 -c +endif +ifeq ($$(BR2_TARGET_ROOTFS_$(2)_LZ4),y) +ROOTFS_$(2)_DEPENDENCIES += host-lz4 +ROOTFS_$(2)_COMPRESS_EXT = .lz4 +ROOTFS_$(2)_COMPRESS_CMD = lz4 -l -9 -c +endif +ifeq ($$(BR2_TARGET_ROOTFS_$(2)_LZO),y) +ROOTFS_$(2)_DEPENDENCIES += host-lzop +ROOTFS_$(2)_COMPRESS_EXT = .lzo +ROOTFS_$(2)_COMPRESS_CMD = $$(LZOP) -9 -c +endif +ifeq ($$(BR2_TARGET_ROOTFS_$(2)_XZ),y) +ROOTFS_$(2)_DEPENDENCIES += host-xz +ROOTFS_$(2)_COMPRESS_EXT = .xz +ROOTFS_$(2)_COMPRESS_CMD = xz -9 -C crc32 -c +ifeq ($(BR2_REPRODUCIBLE),) +ROOTFS_$(2)_COMPRESS_CMD += -T $(PARALLEL_JOBS) +endif +endif +ifeq ($(BR2_TARGET_ROOTFS_$(2)_ZSTD),y) +ROOTFS_$(2)_DEPENDENCIES += host-zstd +ROOTFS_$(2)_COMPRESS_EXT = .zst +ROOTFS_$(2)_COMPRESS_CMD = zstd -19 -z -f -T$(PARALLEL_JOBS) +endif + +$$(BINARIES_DIR)/$$(ROOTFS_$(2)_FINAL_IMAGE_NAME): ROOTFS=$(2) +$$(BINARIES_DIR)/$$(ROOTFS_$(2)_FINAL_IMAGE_NAME): FAKEROOT_SCRIPT=$$(ROOTFS_$(2)_DIR)/fakeroot +$$(BINARIES_DIR)/$$(ROOTFS_$(2)_FINAL_IMAGE_NAME): $$(ROOTFS_$(2)_DEPENDENCIES) + @$$(call MESSAGE,"Generating filesystem image $$(ROOTFS_$(2)_FINAL_IMAGE_NAME)") + mkdir -p $$(@D) + rm -rf $$(ROOTFS_$(2)_DIR) + mkdir -p $$(ROOTFS_$(2)_DIR) + rsync -auH \ + --exclude=/$$(notdir $$(TARGET_DIR_WARNING_FILE)) \ + $$(BASE_TARGET_DIR)/ \ + $$(TARGET_DIR) + + echo '#!/bin/sh' > $$(FAKEROOT_SCRIPT) + echo "set -e" >> $$(FAKEROOT_SCRIPT) + + echo "chown -h -R 0:0 $$(TARGET_DIR)" >> $$(FAKEROOT_SCRIPT) + PATH=$$(BR_PATH) $$(TOPDIR)/support/scripts/mkusers $$(ROOTFS_FULL_USERS_TABLE) $$(TARGET_DIR) >> $$(FAKEROOT_SCRIPT) + echo "$$(HOST_DIR)/bin/makedevs -d $$(ROOTFS_FULL_DEVICES_TABLE) $$(TARGET_DIR)" >> $$(FAKEROOT_SCRIPT) + $$(foreach hook,$$(ROOTFS_PRE_CMD_HOOKS),\ + $$(call PRINTF,$$($$(hook))) >> $$(FAKEROOT_SCRIPT)$$(sep)) + $$(foreach s,$$(call qstrip,$$(BR2_ROOTFS_POST_FAKEROOT_SCRIPT)),\ + echo "echo '$$(TERM_BOLD)>>> Executing fakeroot script $$(s)$$(TERM_RESET)'" >> $$(FAKEROOT_SCRIPT); \ + echo $$(EXTRA_ENV) $$(s) $$(TARGET_DIR) $$(BR2_ROOTFS_POST_SCRIPT_ARGS) $$(BR2_ROOTFS_POST_FAKEROOT_SCRIPT_ARGS) >> $$(FAKEROOT_SCRIPT)$$(sep)) + + $$(foreach hook,$$(ROOTFS_$(2)_PRE_GEN_HOOKS),\ + $$(call PRINTF,$$($$(hook))) >> $$(FAKEROOT_SCRIPT)$$(sep)) + echo "find $$(TARGET_DIR)/run/ -mindepth 1 -prune -print0 | xargs -0r rm -rf --" >> $$(FAKEROOT_SCRIPT) + echo "find $$(TARGET_DIR)/tmp/ -mindepth 1 -prune -print0 | xargs -0r rm -rf --" >> $$(FAKEROOT_SCRIPT) + $$(call PRINTF,$$(ROOTFS_REPRODUCIBLE)) >> $$(FAKEROOT_SCRIPT) + $$(call PRINTF,$$(ROOTFS_SELINUX)) >> $$(FAKEROOT_SCRIPT) + $$(call PRINTF,$$(ROOTFS_$(2)_CMD)) >> $$(FAKEROOT_SCRIPT) + chmod a+x $$(FAKEROOT_SCRIPT) + PATH=$$(BR_PATH) FAKEROOTDONTTRYCHOWN=1 $$(HOST_DIR)/bin/fakeroot -- $$(FAKEROOT_SCRIPT) + $(Q)rm -rf $$(TARGET_DIR) +ifneq ($$(ROOTFS_$(2)_COMPRESS_CMD),) + PATH=$$(BR_PATH) $$(ROOTFS_$(2)_COMPRESS_CMD) $$@ > $$@$$(ROOTFS_$(2)_COMPRESS_EXT) +endif + $$(foreach hook,$$(ROOTFS_$(2)_POST_GEN_HOOKS),$$(call $$(hook))$$(sep)) + +rootfs-$(1)-show-depends: + @echo $$(ROOTFS_$(2)_DEPENDENCIES) + +rootfs-$(1)-show-info: + @: + $$(info $$(call clean-json,{ $$(call json-info,ROOTFS_$(2)) })) + +rootfs-$(1): $$(BINARIES_DIR)/$$(ROOTFS_$(2)_FINAL_IMAGE_NAME) + +.PHONY: rootfs-$(1) rootfs-$(1)-show-depends rootfs-$(1)-show-info + +ifeq ($$(BR2_TARGET_ROOTFS_$(2)),y) +TARGETS_ROOTFS += rootfs-$(1) +PACKAGES += $$(filter-out rootfs-%,$$(ROOTFS_$(2)_FINAL_RECURSIVE_DEPENDENCIES)) +endif + +# Check for legacy POST_TARGETS rules +ifneq ($$(ROOTFS_$(2)_POST_TARGETS),) +$$(error Filesystem $(1) uses post-target rules, which are no longer supported.\ + Update $(1) to use post-gen hooks instead) +endif + +endef + +# $(pkgname) also works well to return the filesystem name +rootfs = $(call inner-rootfs,$(pkgname),$(call UPPERCASE,$(pkgname))) + +include $(sort $(wildcard fs/*/*.mk)) diff --git a/fs/cpio/Config.in b/fs/cpio/Config.in new file mode 100644 index 00000000..4d38276c --- /dev/null +++ b/fs/cpio/Config.in @@ -0,0 +1,112 @@ +config BR2_TARGET_ROOTFS_CPIO + bool "cpio the root filesystem (for use as an initial RAM filesystem)" + help + Build a cpio archive of the root filesystem. This is typically + used for an initial RAM filesystem that is passed to the + kernel by the bootloader. + +if BR2_TARGET_ROOTFS_CPIO + +choice + prompt "cpio type" + default BR2_TARGET_ROOTFS_CPIO_FULL + +config BR2_TARGET_ROOTFS_CPIO_FULL + bool "cpio the whole root filesystem" + help + Build a cpio archive containing the whole root filesystem. + +config BR2_TARGET_ROOTFS_CPIO_DRACUT + bool "Invoke dracut to make a partial initramfs" + select BR2_PACKAGE_HOST_DRACUT + help + Build an additional initramfs using dracut. This only contains + a subset of the rootfs, as determined by the configuration + file. + This can be useful to create a recovery system, for instance. + +endchoice + +if BR2_TARGET_ROOTFS_CPIO_DRACUT + +config BR2_TARGET_ROOTFS_CPIO_DRACUT_MODULES + string "extra dracut modules" + help + Space-separated list of directories containing dracut modules. + +config BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES + string "dracut configuration files" + default "fs/cpio/dracut.conf" + help + Space-separated list of Dracut configuration files. They + determine which parts of the rootfs get included in the + cpio image. See: + dracut.conf(5) + https://github.com/dracutdevs/dracut/blob/master/man/dracut.conf.5.asc + + The default configuration file is suitable for busybox init. + It doesn't, however, pivot_root into a full rootfs. + +endif + +choice + prompt "Compression method" + default BR2_TARGET_ROOTFS_CPIO_NONE + help + Select compressor for cpio filesystem of the root filesystem. + If you use the cpio archive as an initial RAM filesystem, make + sure the kernel contains the decompression algorithm selected + here. + +config BR2_TARGET_ROOTFS_CPIO_NONE + bool "no compression" + help + Do not compress the cpio filesystem. + +config BR2_TARGET_ROOTFS_CPIO_GZIP + bool "gzip" + help + Do compress the cpio filesystem with gzip. + +config BR2_TARGET_ROOTFS_CPIO_BZIP2 + bool "bzip2" + help + Do compress the cpio filesystem with bzip2. + +config BR2_TARGET_ROOTFS_CPIO_LZ4 + bool "lz4" + help + Do compress the cpio filesystem with lz4. + +config BR2_TARGET_ROOTFS_CPIO_LZMA + bool "lzma" + help + Do compress the cpio filesystem with lzma. + +config BR2_TARGET_ROOTFS_CPIO_LZO + bool "lzo" + help + Do compress the cpio filesystem with lzop. + +config BR2_TARGET_ROOTFS_CPIO_XZ + bool "xz" + help + Do compress the cpio filesystem with xz. + +config BR2_TARGET_ROOTFS_CPIO_ZSTD + bool "zstd" + help + Do compress the cpio filesystem with zstd. + +endchoice + +config BR2_TARGET_ROOTFS_CPIO_UIMAGE + bool "Create U-Boot image of the root filesystem" + select BR2_PACKAGE_HOST_UBOOT_TOOLS + help + Add a U-Boot header to the cpio root filesystem. This allows + the initramfs to be loaded with the bootm command in U-Boot. + + The U-Boot image will be called rootfs.cpio.uboot + +endif # BR2_TARGET_ROOTFS_CPIO diff --git a/fs/cpio/cpio.mk b/fs/cpio/cpio.mk new file mode 100644 index 00000000..00ab6a8f --- /dev/null +++ b/fs/cpio/cpio.mk @@ -0,0 +1,109 @@ +################################################################################ +# +# cpio to archive target filesystem +# +################################################################################ + +ifeq ($(BR2_ROOTFS_DEVICE_CREATION_STATIC),y) + +define ROOTFS_CPIO_ADD_INIT + if [ ! -e $(TARGET_DIR)/init ]; then \ + ln -sf sbin/init $(TARGET_DIR)/init; \ + fi +endef + +else +# devtmpfs does not get automounted when initramfs is used. +# Add a pre-init script to mount it before running init +# We must have /dev/console very early, even before /init runs, +# for stdin/stdout/stderr +define ROOTFS_CPIO_ADD_INIT + if [ ! -e $(TARGET_DIR)/init ]; then \ + $(INSTALL) -m 0755 fs/cpio/init $(TARGET_DIR)/init; \ + fi + mkdir -p $(TARGET_DIR)/dev + mknod -m 0622 $(TARGET_DIR)/dev/console c 5 1 +endef + +endif # BR2_ROOTFS_DEVICE_CREATION_STATIC + +ROOTFS_CPIO_PRE_GEN_HOOKS += ROOTFS_CPIO_ADD_INIT + +# --reproducible option was introduced in cpio v2.12, which may not be +# available in some old distributions, so we build host-cpio +ifeq ($(BR2_REPRODUCIBLE),y) +ROOTFS_CPIO_DEPENDENCIES += host-cpio +ROOTFS_CPIO_OPTS += --reproducible +endif + +ifeq ($(BR2_TARGET_ROOTFS_CPIO_FULL),y) + +define ROOTFS_CPIO_CMD + cd $(TARGET_DIR) && \ + find . \ + | LC_ALL=C sort \ + | cpio $(ROOTFS_CPIO_OPTS) --quiet -o -H newc \ + > $@ +endef + +else ifeq ($(BR2_TARGET_ROOTFS_CPIO_DRACUT),y) + +ROOTFS_CPIO_DEPENDENCIES += host-dracut + +ROOTFS_CPIO_DRACUT_MODULES = $(call qstrip,$(BR2_TARGET_ROOTFS_CPIO_DRACUT_MODULES)) +ifeq ($(BR_BUILDING),y) +ifneq ($(words $(ROOTFS_CPIO_DRACUT_MODULES)),$(words $(sort $(notdir $(ROOTFS_CPIO_DRACUT_MODULES))))) +$(error No two dracut modules can have the same basename, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_MODULES setting) +endif +endif + +ROOTFS_CPIO_DRACUT_CONF_FILES = $(call qstrip,$(BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES)) +ifeq ($(BR_BUILDING),y) +ifeq ($(ROOTFS_CPIO_DRACUT_CONF_FILES),) +$(error No dracut config file name specified, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES setting) +endif +ifneq ($(words $(ROOTFS_CPIO_DRACUT_CONF_FILES)),$(words $(sort $(notdir $(ROOTFS_CPIO_DRACUT_CONF_FILES))))) +$(error No two dracut config files can have the same basename, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES setting) +endif +endif + +ifeq ($(BR2_LINUX_KERNEL),y) +ROOTFS_CPIO_DEPENDENCIES += linux +ROOTFS_CPIO_OPTS += --kver $(LINUX_VERSION_PROBED) +else +ROOTFS_CPIO_OPTS += --no-kernel +endif + +define ROOTFS_CPIO_CMD + mkdir -p $(ROOTFS_CPIO_DIR)/tmp $(ROOTFS_CPIO_DIR)/confdir $(HOST_DIR)/lib/dracut/modules.d + touch $(ROOTFS_CPIO_DIR)/empty-config + $(foreach cfg,$(ROOTFS_CPIO_DRACUT_CONF_FILES), \ + cp $(cfg) $(ROOTFS_CPIO_DIR)/confdir/$(notdir $(cfg)) + ) + $(foreach m,$(ROOTFS_CPIO_DRACUT_MODULES), \ + cp -a $(m)/* $(HOST_DIR)/lib/dracut/modules.d/ + ) + $(HOST_DIR)/bin/dracut \ + $(ROOTFS_CPIO_OPTS) \ + -c $(ROOTFS_CPIO_DIR)/empty-config \ + --confdir $(ROOTFS_CPIO_DIR)/confdir \ + --sysroot $(TARGET_DIR) \ + --tmpdir $(ROOTFS_CPIO_DIR)/tmp \ + -M \ + --force \ + --no-compress \ + $@ +endef + +endif #BR2_TARGET_ROOTFS_CPIO_DRACUT + +ifeq ($(BR2_TARGET_ROOTFS_CPIO_UIMAGE),y) +ROOTFS_CPIO_DEPENDENCIES += host-uboot-tools +define ROOTFS_CPIO_UBOOT_MKIMAGE + $(MKIMAGE) -A $(MKIMAGE_ARCH) -T ramdisk \ + -C none -d $@$(ROOTFS_CPIO_COMPRESS_EXT) $@.uboot +endef +ROOTFS_CPIO_POST_GEN_HOOKS += ROOTFS_CPIO_UBOOT_MKIMAGE +endif + +$(eval $(rootfs)) diff --git a/fs/cpio/dracut.conf b/fs/cpio/dracut.conf new file mode 100644 index 00000000..2337736c --- /dev/null +++ b/fs/cpio/dracut.conf @@ -0,0 +1,92 @@ +#Simple dracut config for a system without systemd + +#Dracut configuration + +show_modules=yes +i18n_install_all=no +lvmconf=no +mdadmconf=no +early_microcode=no +hostonly=no +hostonly_cmdline=no +use_fstab=no +kernel_cmdline="rd.break=initqueue" +do_strip=no + +# Dracut modules needed +add_dracutmodules+=" \ +busybox-init +" + +# Modules to ignore +omit_dracutmodules+=" \ +bash \ +biosdevname \ +btrfs \ +bluetooth \ +busybox \ +caps \ +cifs \ +crypt \ +crypt-gpg \ +dash \ +dbus-broker \ +dbus-daemon \ +dm \ +dmraid \ +dmsquash-live-ntfs \ +dracut-systemd \ +fcoe \ +fcoe-uefi \ +fs-lib \ +iscsi \ +i18n \ +lvmmerge \ +lvm \ +lunmask \ +mdraid \ +memstrack \ +mksh \ +modsign \ +mount-root \ +multipath \ +nbd \ +network-legacy \ +network-wicked \ +nfs \ +nvdimm \ +nvmf \ +parse-lunmask \ +qemu \ +qemu-net \ +resume \ +rootfs-block \ +rngd \ +systemd \ +systemd-udevd \ +systemd-coredump \ +systemd-ask-password \ +systemd-timedated \ +systemd-rfkill \ +systemd-resolved \ +systemd-hostnamed \ +systemd-initrd \ +systemd-journald \ +systemd-ldconfig \ +systemd-networkd \ +systemd-timesyncd \ +systemd-veritysetup \ +systemd-modules-load \ +systemd-sysctl \ +systemd-repart \ +systemd-sysext \ +systemd-sysusers \ +systemd-tmpfiles \ +squash \ +ssh-client \ +stratis \ +tpm2-tss \ +udev-rules \ +url-lib \ +usrmount \ +" diff --git a/fs/cpio/init b/fs/cpio/init new file mode 100755 index 00000000..f74ef7e1 --- /dev/null +++ b/fs/cpio/init @@ -0,0 +1,15 @@ +#!/bin/sh +# devtmpfs does not get automounted for initramfs +/bin/mount -t devtmpfs devtmpfs /dev + +# use the /dev/console device node from devtmpfs if possible to not +# confuse glibc's ttyname_r(). +# This may fail (E.G. booted with console=), and errors from exec will +# terminate the shell, so use a subshell for the test +if (exec 0/dev/null; then + exec 0/dev/console + exec 2>/dev/console +fi + +exec /sbin/init "$@" diff --git a/fs/cramfs/Config.in b/fs/cramfs/Config.in new file mode 100644 index 00000000..89f8ad52 --- /dev/null +++ b/fs/cramfs/Config.in @@ -0,0 +1,26 @@ +config BR2_TARGET_ROOTFS_CRAMFS + bool "cramfs root filesystem" + help + Build a cramfs root filesystem + + https://github.com/npitre/cramfs-tools + +if BR2_TARGET_ROOTFS_CRAMFS + +config BR2_TARGET_ROOTFS_CRAMFS_XIP + bool "Support XIP of all ELF files" + help + For ELF files, uncompressed and properly aligned data blocks + will be automatically be mapped directly into user space + whenever possible providing eXecute-In-Place (XIP) from ROM + of read-only segments. Data segments mapped read-write + (hence they have to be copied to RAM) may still be + compressed in the cramfs image in the same file along with + non compressed read-only segments. Both MMU and no-MMU + systems are supported. This is particularly handy for tiny + embedded systems with very tight memory constraints. + + The CRAMFS_MTD Kconfig option must also be enabled in a + 4.15+ kernel. + +endif # BR2_TARGET_ROOTFS_CRAMFS diff --git a/fs/cramfs/cramfs.mk b/fs/cramfs/cramfs.mk new file mode 100644 index 00000000..92506388 --- /dev/null +++ b/fs/cramfs/cramfs.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# Build the cramfs root filesystem image +# +################################################################################ + +ifeq ($(BR2_ENDIAN),"BIG") +CRAMFS_OPTS = -B +else +CRAMFS_OPTS = -L +endif + +ifeq ($(BR2_TARGET_ROOTFS_CRAMFS_XIP),y) +ifeq ($(BR2_USE_MMU),y) +CRAMFS_OPTS += -X -X +else +CRAMFS_OPTS += -X +endif +endif + +define ROOTFS_CRAMFS_CMD + $(HOST_DIR)/bin/mkcramfs $(CRAMFS_OPTS) $(TARGET_DIR) $@ +endef + +ROOTFS_CRAMFS_DEPENDENCIES = host-cramfs + +$(eval $(rootfs)) diff --git a/fs/erofs/Config.in b/fs/erofs/Config.in new file mode 100644 index 00000000..e1125726 --- /dev/null +++ b/fs/erofs/Config.in @@ -0,0 +1,24 @@ +config BR2_TARGET_ROOTFS_EROFS + bool "erofs root filesystem" + select BR2_PACKAGE_HOST_EROFS_UTILS + help + Build a EROFS root filesystem. + +if BR2_TARGET_ROOTFS_EROFS + +config BR2_TARGET_ROOTFS_EROFS_LZ4HC + bool "lz4hc compression" + help + Use lz4 high-compression to compress data in the filesystem. + +config BR2_TARGET_ROOTFS_EROFS_PCLUSTERSIZE + int "pcluster size" + default 0 + help + Specify the maximum size of physical cluster in bytes, as a + multiple of 4KiB, for the big pcluster feature in order to + get much better compression ratios (thus better sequential + read performance for common storage devices), which has been + introduced since Linux 5.13. + +endif # BR2_TARGET_ROOTFS_EROFS diff --git a/fs/erofs/erofs.mk b/fs/erofs/erofs.mk new file mode 100644 index 00000000..e43d7492 --- /dev/null +++ b/fs/erofs/erofs.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# Build the EROFS root filesystem image +# +################################################################################ + +ROOTFS_EROFS_DEPENDENCIES = host-erofs-utils + +ifeq ($(BR2_TARGET_ROOTFS_EROFS_LZ4HC),y) +ROOTFS_EROFS_ARGS += -zlz4hc +endif + +ifeq ($(BR2_REPRODUCIBLE),y) +ROOTFS_EROFS_ARGS += \ + -T $(SOURCE_DATE_EPOCH) \ + -U 00000000-0000-0000-0000-000000000000 +endif + +ifneq ($(BR2_TARGET_ROOTFS_EROFS_PCLUSTERSIZE),0) +ROOTFS_EROFS_ARGS += -C$(strip $(BR2_TARGET_ROOTFS_EROFS_PCLUSTERSIZE)) +endif + +define ROOTFS_EROFS_CMD + $(HOST_DIR)/bin/mkfs.erofs $(ROOTFS_EROFS_ARGS) $@ $(TARGET_DIR) +endef + +$(eval $(rootfs)) diff --git a/fs/ext2/Config.in b/fs/ext2/Config.in new file mode 100644 index 00000000..4451d079 --- /dev/null +++ b/fs/ext2/Config.in @@ -0,0 +1,154 @@ +config BR2_TARGET_ROOTFS_EXT2 + bool "ext2/3/4 root filesystem" + select BR2_PACKAGE_HOST_E2FSPROGS + help + Build an ext2/3/4 root filesystem + +if BR2_TARGET_ROOTFS_EXT2 + +config BR2_TARGET_ROOTFS_EXT2_2 + bool + +choice + bool "ext2/3/4 variant" + default BR2_TARGET_ROOTFS_EXT2_2r1 + +config BR2_TARGET_ROOTFS_EXT2_2r0 + bool "ext2 (rev0)" + select BR2_TARGET_ROOTFS_EXT2_2 + +config BR2_TARGET_ROOTFS_EXT2_2r1 + bool "ext2 (rev1)" + select BR2_TARGET_ROOTFS_EXT2_2 + +config BR2_TARGET_ROOTFS_EXT2_3 + bool "ext3" + +config BR2_TARGET_ROOTFS_EXT2_4 + bool "ext4" + +endchoice + +config BR2_TARGET_ROOTFS_EXT2_GEN + int + default 2 if BR2_TARGET_ROOTFS_EXT2_2 + default 3 if BR2_TARGET_ROOTFS_EXT2_3 + default 4 if BR2_TARGET_ROOTFS_EXT2_4 + +# All ext generations are revision 1, except ext2r0, which is revision 0 +config BR2_TARGET_ROOTFS_EXT2_REV + int + default 0 if BR2_TARGET_ROOTFS_EXT2_2r0 + default 1 if !BR2_TARGET_ROOTFS_EXT2_2r0 + +config BR2_TARGET_ROOTFS_EXT2_LABEL + string "filesystem label" + default "rootfs" + +config BR2_TARGET_ROOTFS_EXT2_SIZE + string "exact size" + default BR2_TARGET_ROOTFS_EXT2_BLOCKS if BR2_TARGET_ROOTFS_EXT2_BLOCKS_WRAP # legacy 2017.08 + default "60M" + help + The size of the filesystem image. If it does not have a + suffix, it is interpreted as power-of-two kilobytes. If it is + suffixed by 'k', 'm', 'g', 't' (either upper-case or + lower-case), then it is interpreted in power-of-two kilobytes, + megabytes, gigabytes, terabytes, etc. + +config BR2_TARGET_ROOTFS_EXT2_INODES + int "exact number of inodes (leave at 0 for auto calculation)" + default 0 + +config BR2_TARGET_ROOTFS_EXT2_INODE_SIZE + int "inode size" + default 256 + help + Set the size of inodes, in bytes, as a power of 2 larger or + equal to 128. + + Set to 0 to let the filesystem generator decide based on the + file system size. If unsure, keep the default, 256. + + Note: 128-byte inodes suffer of the Y2K38 problem, and can't + store timestamps beyond 2038-01-19 03:14:07Z. + +config BR2_TARGET_ROOTFS_EXT2_RESBLKS + int "reserved blocks percentage" + default 5 + help + The number of blocks on the filesystem (as a percentage of the + total number of blocks), that are reserved for use by root. + Traditionally, this has been 5%, and all ext-related tools + still default to reserving 5% when creating a new ext + filesystem. + +config BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS + string "additional mke2fs options" + default "-O ^64bit" + help + Specify a space-separated list of mke2fs options, including + any ext2/3/4 filesystem features. + + For more information about the mke2fs options, see the manual + page mke2fs(8). + + For more information about the ext2/3/4 features which can be + set, see the manual page ext4(5). + + The default is "-O ^64bit", i.e. disable 64-bit filesystem + support. This default value has been chosen because U-Boot + versions before 2017.02 don't support this filesystem + option: using it may make the filesystem unreadable by + U-Boot. + +choice + prompt "Compression method" + default BR2_TARGET_ROOTFS_EXT2_NONE + help + Select compressor for ext2/3/4 filesystem of the root + filesystem + +config BR2_TARGET_ROOTFS_EXT2_NONE + bool "no compression" + help + Do not compress the ext2/3/4 filesystem. + +config BR2_TARGET_ROOTFS_EXT2_GZIP + bool "gzip" + help + Do compress the ext2/3/4 filesystem with gzip. + +config BR2_TARGET_ROOTFS_EXT2_BZIP2 + bool "bzip2" + help + Do compress the ext2/3/4 filesystem with bzip2. + +config BR2_TARGET_ROOTFS_EXT2_LZ4 + bool "lz4" + help + Do compress the ext2 filesystem with lz4. + +config BR2_TARGET_ROOTFS_EXT2_LZMA + bool "lzma" + help + Do compress the ext2/3/4 filesystem with lzma. + +config BR2_TARGET_ROOTFS_EXT2_LZO + bool "lzo" + help + Do compress the ext2 filesystem with lzop. + +config BR2_TARGET_ROOTFS_EXT2_XZ + bool "xz" + help + Do compress the ext2 filesystem with xz. + +config BR2_TARGET_ROOTFS_EXT2_ZSTD + bool "zstd" + help + Do compress the ext2 filesystem with zstd. + +endchoice + +endif # BR2_TARGET_ROOTFS_EXT2 diff --git a/fs/ext2/ext2.mk b/fs/ext2/ext2.mk new file mode 100644 index 00000000..e69e79cd --- /dev/null +++ b/fs/ext2/ext2.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# Build the ext2 root filesystem image +# +################################################################################ + +ROOTFS_EXT2_SIZE = $(call qstrip,$(BR2_TARGET_ROOTFS_EXT2_SIZE)) +ifeq ($(BR2_TARGET_ROOTFS_EXT2)-$(ROOTFS_EXT2_SIZE),y-) +$(error BR2_TARGET_ROOTFS_EXT2_SIZE cannot be empty) +endif + +ROOTFS_EXT2_MKFS_OPTS = $(call qstrip,$(BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS)) + +# qstrip results in stripping consecutive spaces into a single one. So the +# variable is not qstrip-ed to preserve the integrity of the string value. +ROOTFS_EXT2_LABEL = $(subst ",,$(BR2_TARGET_ROOTFS_EXT2_LABEL)) +#" Syntax highlighting... :-/ ) + +ROOTFS_EXT2_OPTS = \ + -d $(TARGET_DIR) \ + -r $(BR2_TARGET_ROOTFS_EXT2_REV) \ + -N $(BR2_TARGET_ROOTFS_EXT2_INODES) \ + -m $(BR2_TARGET_ROOTFS_EXT2_RESBLKS) \ + -L "$(ROOTFS_EXT2_LABEL)" \ + -I $(BR2_TARGET_ROOTFS_EXT2_INODE_SIZE) \ + $(ROOTFS_EXT2_MKFS_OPTS) + +ROOTFS_EXT2_DEPENDENCIES = host-e2fsprogs + +define ROOTFS_EXT2_CMD + rm -f $@ + $(HOST_DIR)/sbin/mkfs.ext$(BR2_TARGET_ROOTFS_EXT2_GEN) $(ROOTFS_EXT2_OPTS) $@ \ + "$(ROOTFS_EXT2_SIZE)" \ + || { ret=$$?; \ + echo "*** Maybe you need to increase the filesystem size (BR2_TARGET_ROOTFS_EXT2_SIZE)" 1>&2; \ + exit $$ret; \ + } +endef + +ifneq ($(BR2_TARGET_ROOTFS_EXT2_GEN),2) +define ROOTFS_EXT2_SYMLINK + ln -sf rootfs.ext2$(ROOTFS_EXT2_COMPRESS_EXT) $(BINARIES_DIR)/rootfs.ext$(BR2_TARGET_ROOTFS_EXT2_GEN)$(ROOTFS_EXT2_COMPRESS_EXT) +endef +ROOTFS_EXT2_POST_GEN_HOOKS += ROOTFS_EXT2_SYMLINK +endif + +$(eval $(rootfs)) diff --git a/fs/f2fs/Config.in b/fs/f2fs/Config.in new file mode 100644 index 00000000..20d70fbf --- /dev/null +++ b/fs/f2fs/Config.in @@ -0,0 +1,59 @@ +config BR2_TARGET_ROOTFS_F2FS + bool "f2fs root filesystem" + select BR2_PACKAGE_HOST_F2FS_TOOLS + help + Build a f2fs root filesystem. If you enable this option, you + probably want to enable the f2fs-tools package too. + +if BR2_TARGET_ROOTFS_F2FS + +config BR2_TARGET_ROOTFS_F2FS_LABEL + string "filesystem label" + +config BR2_TARGET_ROOTFS_F2FS_SIZE + string "filesystem size" + default "100M" + help + The size of the filesystem image in bytes. + Suffix with K, M, G or T for power-of-two kilo-, mega-, giga- + or terabytes. + +config BR2_TARGET_ROOTFS_F2FS_COLD_FILES + string "extension list for cold files" + help + Specify a comma separated file extension list in order f2fs + to treat them as cold files. The default list includes most + of multimedia file extensions such as jpg, gif, mpeg, mkv, + and so on. + +config BR2_TARGET_ROOTFS_F2FS_HOT_FILES + string "extension list for hot files" + help + Specify a comma separated file extension list in order f2fs + to treat them as hot files. The default list includes only + a db extension. + +config BR2_TARGET_ROOTFS_F2FS_OVERPROVISION + int "overprovision ratio" + default 0 + help + The percentage over the volume size for overprovision + area. This area is hidden to users, and utilized by F2FS + cleaner. + + Leave at 0 for autocalculation according to the partition + size. + +config BR2_TARGET_ROOTFS_F2FS_DISCARD + bool "discard policy" + default y + help + Enable or disable discard policy. + +config BR2_TARGET_ROOTFS_F2FS_FEATURES + string "filesystem features" + help + List of features that the F2FS filesystem should support + (e.g "encrypt") + +endif # BR2_TARGET_ROOTFS_F2FS diff --git a/fs/f2fs/f2fs.mk b/fs/f2fs/f2fs.mk new file mode 100644 index 00000000..21a2879c --- /dev/null +++ b/fs/f2fs/f2fs.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# Build the f2fs root filesystem image +# +################################################################################ + +F2FS_SIZE = $(call qstrip,$(BR2_TARGET_ROOTFS_F2FS_SIZE)) +ifeq ($(BR2_TARGET_ROOTFS_F2FS)-$(F2FS_SIZE),y-) +$(error BR2_TARGET_ROOTFS_F2FS_SIZE cannot be empty) +endif + +# qstrip results in stripping consecutive spaces into a single one. So the +# variable is not qstrip-ed to preserve the integrity of the string value. +F2FS_LABEL = $(subst ",,$(BR2_TARGET_ROOTFS_F2FS_LABEL)) +# ") +F2FS_COLD_FILES = $(call qstrip,$(BR2_TARGET_ROOTFS_F2FS_COLD_FILES)) +F2FS_HOT_FILES = $(call qstrip,$(BR2_TARGET_ROOTFS_F2FS_HOT_FILES)) + +ifeq ($(BR2_TARGET_ROOTFS_F2FS_DISCARD),y) +F2FS_DISCARD = 1 +else +F2FS_DISCARD = 0 +endif + +F2FS_FEATURES = $(call qstrip,$(BR2_TARGET_ROOTFS_F2FS_FEATURES)) + +F2FS_OPTS = \ + -f \ + -l "$(F2FS_LABEL)" \ + -t $(F2FS_DISCARD) \ + -o $(BR2_TARGET_ROOTFS_F2FS_OVERPROVISION) \ + $(if $(F2FS_COLD_FILES),-e "$(F2FS_COLD_FILES)") \ + $(if $(F2FS_HOT_FILES),-E "$(F2FS_HOT_FILES)") \ + $(if $(F2FS_FEATURES),-O "$(F2FS_FEATURES)") + +ROOTFS_F2FS_DEPENDENCIES = host-f2fs-tools + +define ROOTFS_F2FS_CMD + $(RM) -f $@ + truncate -s $(F2FS_SIZE) $@ + $(HOST_DIR)/sbin/mkfs.f2fs $(F2FS_OPTS) $@ + $(HOST_DIR)/sbin/sload.f2fs -f $(TARGET_DIR) $@ +endef + +$(eval $(rootfs)) diff --git a/fs/initramfs/Config.in b/fs/initramfs/Config.in new file mode 100644 index 00000000..9d5a3f92 --- /dev/null +++ b/fs/initramfs/Config.in @@ -0,0 +1,22 @@ +config BR2_TARGET_ROOTFS_INITRAMFS + bool "initial RAM filesystem linked into linux kernel" + depends on BR2_LINUX_KERNEL + select BR2_TARGET_ROOTFS_CPIO + help + Integrate the root filesystem generated by Buildroot as an + initramfs inside the kernel image. This integration will + take place automatically. + + A rootfs.cpio file will be generated in the images/ directory. + This is the archive that will be included in the kernel image. + The default rootfs compression set in the kernel configuration + is used, regardless of how buildroot's cpio archive is + configured. + + Note that enabling initramfs together with another filesystem + formats doesn't make sense: you would end up having two + identical root filesystems, one embedded inside the kernel + image, and one separately. + +comment "initramfs needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL diff --git a/fs/initramfs/initramfs.mk b/fs/initramfs/initramfs.mk new file mode 100644 index 00000000..3b3d4ed8 --- /dev/null +++ b/fs/initramfs/initramfs.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# Build a kernel with an integrated initial ramdisk filesystem based on cpio. +# +################################################################################ + +# The generic fs infrastructure isn't very useful here. +# +# The initramfs image does not actually build an image; its only purpose is: +# 1- to ensure rootfs.cpio is generated, +# 2- to then rebuild the kernel with rootfs.cpio as initramfs +# +# Note: ordering of the dependencies is not guaranteed here, but in +# linux/linux.mk, via the linux-rebuild-with-initramfs rule, which depends +# on the rootfs-cpio filesystem rule. +# +# Note: the trick here is that we directly depend on rebuilding the Linux +# kernel image (which itself depends on the rootfs-cpio rule), while we +# advertise that our dependency is on the rootfs-cpio rule, which is +# cleaner in the dependency graph. + +rootfs-initramfs: linux-rebuild-with-initramfs + +rootfs-initramfs-show-depends: + @echo rootfs-cpio + +.PHONY: rootfs-initramfs rootfs-initramfs-show-depends + +ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y) +TARGETS_ROOTFS += rootfs-initramfs +endif + +# Not using the rootfs infra, so fake the variables +ROOTFS_INITRAMFS_NAME = rootfs-initramfs +ROOTFS_INITRAMFS_TYPE = rootfs +ROOTFS_INITRAMFS_DEPENDENCIES = rootfs-cpio linux diff --git a/fs/iso9660/Config.in b/fs/iso9660/Config.in new file mode 100644 index 00000000..8c4e7bad --- /dev/null +++ b/fs/iso9660/Config.in @@ -0,0 +1,102 @@ +config BR2_TARGET_ROOTFS_ISO9660 + bool "iso image" + depends on (BR2_i386 || BR2_x86_64) + depends on BR2_LINUX_KERNEL + depends on BR2_TARGET_GRUB2 || BR2_TARGET_SYSLINUX_ISOLINUX + select BR2_LINUX_KERNEL_INSTALL_TARGET \ + if (!BR2_TARGET_ROOTFS_ISO9660_INITRD && !BR2_TARGET_ROOTFS_INITRAMFS) + help + Build a bootable ISO9660 image. By default, the root + filesystem is directly packed as the ISO9660 filesystem, + which means the root filesystem will be read-only. It + requires ISO9660 filesystem support and CDROM support in the + kernel. + + However, if BR2_TARGET_ROOTFS_INITRAMFS or + BR2_TARGET_ROOTFS_ISO9660_INITRD have been enabled, the + ISO9660 filesystem will only contain a kernel image and + optionally an external initrd image. In this case, the + filesystem being in RAM, it will be read/write. No ISO9660 + or CDROM support is needed in the kernel. + +if BR2_TARGET_ROOTFS_ISO9660 + +choice + prompt "Bootloader" + +config BR2_TARGET_ROOTFS_ISO9660_GRUB2 + bool "grub2" + depends on BR2_TARGET_GRUB2 + select BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER \ + if BR2_TARGET_GRUB2_I386_PC + select BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER \ + if (BR2_TARGET_GRUB2_I386_EFI || BR2_TARGET_GRUB2_X86_64_EFI) + help + Use Grub 2 as the bootloader for the ISO9660 image. Make + sure to enable the 'iso9660' module in + BR2_TARGET_GRUB2_BUILTIN_MODULES_PC or + BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI. Use 'cd' as the boot + partition in BR2_TARGET_GRUB2_BOOT_PARTITION= for GRUB on BIOS + or 'set root=(cd0)' in the configuration file passed to + BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI for GRUB on EFI. + +config BR2_TARGET_ROOTFS_ISO9660_ISOLINUX + bool "isolinux" + depends on BR2_TARGET_SYSLINUX_ISOLINUX + select BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER + +endchoice + +config BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER + bool + +config BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER + bool + +config BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU + string "Boot menu config file" + default "fs/iso9660/grub.cfg" if BR2_TARGET_ROOTFS_ISO9660_GRUB2 + default "fs/iso9660/isolinux.cfg" if BR2_TARGET_ROOTFS_ISO9660_ISOLINUX + help + Use this option to provide a custom bootloader configuration + file (grub.cfg for Grub 2, isolinux.cfg for isolinux). + + Note that the strings __KERNEL_PATH__ and __INITRD_PATH__ + will automatically be replaced by the path to the kernel and + initrd images respectively. + +config BR2_TARGET_ROOTFS_ISO9660_INITRD + bool "Use initrd" + default y + select BR2_TARGET_ROOTFS_CPIO + help + Enable this option to have the root filesystem bundled as an + initrd/initramfs rather than directly as the ISO9660 + filesystem. With this option enabled, the ISO9660 will only + contain a kernel image, an initrd image (unless an initramfs + linked into the kernel is used) and the bootloader. + +config BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION + bool "transparent compression" + depends on !BR2_TARGET_ROOTFS_ISO9660_INITRD + depends on !BR2_TARGET_ROOTFS_INITRAMFS + help + Say 'y' to enable use of transparent (de)compression. Files + are stored compressed and will be decompressed on-the-fly + upon access at runtime. + +config BR2_TARGET_ROOTFS_ISO9660_HYBRID + bool "Build hybrid image" + depends on BR2_TARGET_ROOTFS_ISO9660_ISOLINUX + help + Enable this option to build an hybrid image, i.e an image + which can either be booted from a CD-ROM or from a device + which BIOS considers a hard disk or ZIP disk, e.g. a USB key + or similar. + +endif + +comment "iso image needs a Linux kernel and either grub2 or isolinux to be built" + depends on BR2_i386 || BR2_x86_64 + depends on !BR2_LINUX_KERNEL || \ + !(BR2_TARGET_GRUB2 || BR2_TARGET_SYSLINUX_ISOLINUX) diff --git a/fs/iso9660/grub.cfg b/fs/iso9660/grub.cfg new file mode 100644 index 00000000..5a74b235 --- /dev/null +++ b/fs/iso9660/grub.cfg @@ -0,0 +1,7 @@ +set default="0" +set timeout="10" + +menuentry "Buildroot" { + linux __KERNEL_PATH__ root=/dev/sr0 + initrd __INITRD_PATH__ +} diff --git a/fs/iso9660/iso9660.mk b/fs/iso9660/iso9660.mk new file mode 100644 index 00000000..0524f94c --- /dev/null +++ b/fs/iso9660/iso9660.mk @@ -0,0 +1,197 @@ +################################################################################ +# +# Build the iso96600 root filesystem image +# +################################################################################ + +# +# We need to handle three cases: +# +# 1. The ISO9660 filesystem will really be the real root filesystem +# itself. This is when BR2_TARGET_ROOTFS_ISO9660_INITRD is +# disabled. +# +# 2. The ISO9660 filesystem will be a filesystem with just a kernel +# image, initrd and grub. This is when +# BR2_TARGET_ROOTFS_ISO9660_INITRD is enabled, but +# BR2_TARGET_ROOTFS_INITRAMFS is disabled. +# +# 3. The ISO9660 filesystem will be a filesystem with just a kernel +# image and grub. This is like (2), except that the initrd is +# built into the kernel image. This is when +# BR2_TARGET_ROOTFS_INITRAMFS is enabled (regardless of the value +# of BR2_TARGET_ROOTFS_ISO9660_INITRD). + +ROOTFS_ISO9660_BOOT_MENU = $(call qstrip,$(BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU)) + +ROOTFS_ISO9660_DEPENDENCIES = host-xorriso linux + +ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y) +ROOTFS_ISO9660_USE_INITRD = YES +endif + +ifeq ($(BR2_TARGET_ROOTFS_ISO9660_INITRD),y) +ROOTFS_ISO9660_USE_INITRD = YES +endif + +ifeq ($(ROOTFS_ISO9660_USE_INITRD),YES) +ROOTFS_ISO9660_TMP_TARGET_DIR = $(FS_DIR)/rootfs.iso9660.tmp +define ROOTFS_ISO9660_CREATE_TEMPDIR + $(RM) -rf $(ROOTFS_ISO9660_TMP_TARGET_DIR) + mkdir -p $(ROOTFS_ISO9660_TMP_TARGET_DIR) +endef +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_CREATE_TEMPDIR +else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION),y) +ROOTFS_ISO9660_DEPENDENCIES += host-zisofs-tools +ROOTFS_ISO9660_TMP_TARGET_DIR = $(FS_DIR)/rootfs.iso9660.tmp +# This must be early, before we copy the bootloader files. +define ROOTFS_ISO9660_MKZFTREE + $(RM) -rf $(ROOTFS_ISO9660_TMP_TARGET_DIR) + $(HOST_DIR)/bin/mkzftree -X -z 9 -p $(PARALLEL_JOBS) \ + $(TARGET_DIR) \ + $(ROOTFS_ISO9660_TMP_TARGET_DIR) +endef +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_MKZFTREE +ROOTFS_ISO9660_OPTS += -z +else +ROOTFS_ISO9660_TMP_TARGET_DIR = $(TARGET_DIR) +endif + +ifeq ($(BR2_REPRODUCIBLE),y) +ROOTFS_ISO9660_VFAT_OPTS = --invariant +ROOTFS_ISO9660_FIX_TIME = touch -d @$(SOURCE_DATE_EPOCH) +else +ROOTFS_ISO9660_FIX_TIME = : +endif + +ifeq ($(BR2_TARGET_ROOTFS_ISO9660_GRUB2)$(BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER),yy) +ROOTFS_ISO9660_DEPENDENCIES += grub2 +ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \ + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/grub.cfg +ROOTFS_ISO9660_BOOT_IMAGE = boot/grub/grub-eltorito.img +define ROOTFS_ISO9660_INSTALL_BOOTLOADER_BIOS + $(INSTALL) -D -m 0644 $(BINARIES_DIR)/grub-eltorito.img \ + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/grub-eltorito.img +endef +endif + +ifeq ($(BR2_TARGET_ROOTFS_ISO9660_GRUB2)$(BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER),yy) +ROOTFS_ISO9660_DEPENDENCIES += grub2 host-dosfstools host-mtools +ROOTFS_ISO9660_EFI_PARTITION = boot/fat.efi +ROOTFS_ISO9660_EFI_PARTITION_PATH = $(ROOTFS_ISO9660_TMP_TARGET_DIR)/$(ROOTFS_ISO9660_EFI_PARTITION) +ROOTFS_ISO9660_EFI_PARTITION_CONTENT = $(BINARIES_DIR)/efi-part +ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \ + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/grub.cfg +define ROOTFS_ISO9660_INSTALL_BOOTLOADER_EFI + rm -rf $(ROOTFS_ISO9660_EFI_PARTITION_PATH) + mkdir -p $(dir $(ROOTFS_ISO9660_EFI_PARTITION_PATH)) + dd if=/dev/zero of=$(ROOTFS_ISO9660_EFI_PARTITION_PATH) bs=1M count=1 + $(HOST_DIR)/sbin/mkfs.vfat $(ROOTFS_ISO9660_VFAT_OPTS) $(ROOTFS_ISO9660_EFI_PARTITION_PATH) + $(ROOTFS_ISO9660_FIX_TIME) $(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/* + $(HOST_DIR)/bin/mcopy -p -m -i $(ROOTFS_ISO9660_EFI_PARTITION_PATH) -s \ + $(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/* ::/ + $(ROOTFS_ISO9660_FIX_TIME) $(ROOTFS_ISO9660_EFI_PARTITION_PATH) +endef +endif + +ifeq ($(BR2_TARGET_ROOTFS_ISO9660_ISOLINUX),y) +ROOTFS_ISO9660_DEPENDENCIES += syslinux +ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \ + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/isolinux.cfg +ROOTFS_ISO9660_BOOT_IMAGE = isolinux/isolinux.bin +define ROOTFS_ISO9660_INSTALL_BOOTLOADER_BIOS + $(INSTALL) -D -m 0644 $(BINARIES_DIR)/syslinux/* \ + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/ + $(INSTALL) -D -m 0644 $(HOST_DIR)/share/syslinux/ldlinux.c32 \ + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/ldlinux.c32 +endef +endif + +define ROOTFS_ISO9660_PREPARATION + $(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_BOOT_MENU) \ + $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH) + $(SED) "s%__KERNEL_PATH__%/boot/$(LINUX_IMAGE_NAME)%" \ + $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH) + $(ROOTFS_ISO9660_INSTALL_BOOTLOADER_BIOS) + $(ROOTFS_ISO9660_INSTALL_BOOTLOADER_EFI) +endef + +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_PREPARATION + +define ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD + $(SED) '/__INITRD_PATH__/d' $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH) +endef + +# Copy the kernel to temporary filesystem +define ROOTFS_ISO9660_COPY_KERNEL + $(INSTALL) -D -m 0644 $(LINUX_IMAGE_PATH) \ + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/$(LINUX_IMAGE_NAME) +endef + +ifeq ($(ROOTFS_ISO9660_USE_INITRD),YES) +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_KERNEL + +# If initramfs is used, disable loading the initrd as the rootfs is +# already inside the kernel image. Otherwise, make sure a cpio is +# generated and use it as the initrd. +ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y) +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD +else +ROOTFS_ISO9660_DEPENDENCIES += rootfs-cpio +define ROOTFS_ISO9660_COPY_INITRD + $(INSTALL) -D -m 0644 $(BINARIES_DIR)/rootfs.cpio$(ROOTFS_CPIO_COMPRESS_EXT) \ + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/initrd + $(SED) "s%__INITRD_PATH__%/boot/initrd%" \ + $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH) +endef +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_INITRD +endif + +else # ROOTFS_ISO9660_USE_INITRD +ifeq ($(BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION),y) +# We must use the uncompressed kernel image +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_KERNEL +endif + +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD + +endif # ROOTFS_ISO9660_USE_INITRD + +ROOTFS_ISO9660_OPTS += -J -R + +ROOTFS_ISO9660_OPTS_BIOS = \ + -b $(ROOTFS_ISO9660_BOOT_IMAGE) \ + -no-emul-boot \ + -boot-load-size 4 \ + -boot-info-table + +ROOTFS_ISO9660_OPTS_EFI = \ + --efi-boot $(ROOTFS_ISO9660_EFI_PARTITION) \ + -no-emul-boot + +ifeq ($(BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER)$(BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER),yy) +ROOTFS_ISO9660_OPTS += \ + $(ROOTFS_ISO9660_OPTS_BIOS) \ + -eltorito-alt-boot \ + $(ROOTFS_ISO9660_OPTS_EFI) +else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER),y) +ROOTFS_ISO9660_OPTS += $(ROOTFS_ISO9660_OPTS_BIOS) +else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER),y) +ROOTFS_ISO9660_OPTS += $(ROOTFS_ISO9660_OPTS_EFI) +endif + +define ROOTFS_ISO9660_CMD + $(HOST_DIR)/bin/xorriso -as mkisofs \ + $(ROOTFS_ISO9660_OPTS) \ + -o $@ $(ROOTFS_ISO9660_TMP_TARGET_DIR) +endef + +ifeq ($(BR2_TARGET_ROOTFS_ISO9660_HYBRID),y) +define ROOTFS_ISO9660_GEN_HYBRID + $(HOST_DIR)/bin/isohybrid -t 0x96 $@ +endef + +ROOTFS_ISO9660_POST_GEN_HOOKS += ROOTFS_ISO9660_GEN_HYBRID +endif + +$(eval $(rootfs)) diff --git a/fs/iso9660/isolinux.cfg b/fs/iso9660/isolinux.cfg new file mode 100644 index 00000000..28be4fa0 --- /dev/null +++ b/fs/iso9660/isolinux.cfg @@ -0,0 +1,5 @@ +default 1 +label 1 + kernel __KERNEL_PATH__ + initrd __INITRD_PATH__ + append root=/dev/sr0 diff --git a/fs/jffs2/Config.in b/fs/jffs2/Config.in new file mode 100644 index 00000000..44c0b104 --- /dev/null +++ b/fs/jffs2/Config.in @@ -0,0 +1,113 @@ +config BR2_TARGET_ROOTFS_JFFS2 + bool "jffs2 root filesystem" + help + Build a jffs2 root filesystem + +if BR2_TARGET_ROOTFS_JFFS2 + +choice + prompt "Flash Type" + default BR2_TARGET_ROOTFS_JFFS2_FLASH_128 + +config BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_1056 + bool "AT45 dataflash with 1056 byte pagesize" + select BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER + +config BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_528 + bool "AT45 dataflash with 528 byte pagesize" + select BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER + +config BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_16K + bool "NAND flash with 16 kB erasesize" + select BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER + +config BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K + bool "NAND flash with 128 kB erasesize" + select BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER + +config BR2_TARGET_ROOTFS_JFFS2_FLASH_128 + bool "Parallel flash with 128 kB erase size" + +config BR2_TARGET_ROOTFS_JFFS2_FLASH_64 + bool "Parallel flash with 64 kB erase size" + +config BR2_TARGET_ROOTFS_JFFS2_CUSTOM + bool "Select custom erase size" + +endchoice + +config BR2_TARGET_ROOTFS_JFFS2_CUSTOM_EBSIZE + hex "Erase block size" + default 0x20000 + depends on BR2_TARGET_ROOTFS_JFFS2_CUSTOM + help + Set to erase size of memory + +config BR2_TARGET_ROOTFS_JFFS2_EBSIZE + hex + default 0x2100 if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_1056 + default 0x1080 if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_528 + default 0x4000 if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_16K + default 0x20000 if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K + default 0x20000 if BR2_TARGET_ROOTFS_JFFS2_FLASH_128 + default 0x10000 if BR2_TARGET_ROOTFS_JFFS2_FLASH_64 + default BR2_TARGET_ROOTFS_JFFS2_CUSTOM_EBSIZE if BR2_TARGET_ROOTFS_JFFS2_CUSTOM + +config BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER + bool "Do not use Cleanmarker" + default y if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_1056 + default y if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_528 + default y if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_16K + default y if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K + help + Do not use cleanmarkers if using NAND flash or Dataflash where + the pagesize is not a power of 2 + +config BR2_TARGET_ROOTFS_JFFS2_PAD + bool "Pad output" + +config BR2_TARGET_ROOTFS_JFFS2_PADSIZE + hex "Pad output size (0x0 = to end of EB)" + default 0x0 + depends on BR2_TARGET_ROOTFS_JFFS2_PAD + help + Set to 0x0 to pad to end of erase block. + +choice + prompt "Endianess" + default BR2_TARGET_ROOTFS_JFFS2_BE if BR2_ENDIAN = "BIG" + +config BR2_TARGET_ROOTFS_JFFS2_LE + bool "little-endian" + +config BR2_TARGET_ROOTFS_JFFS2_BE + bool "big-endian" + +endchoice + +config BR2_TARGET_ROOTFS_JFFS2_SUMMARY + bool "Produce a summarized JFFS2 image" + help + A summarised image can be mounted faster if support is + enabled in the kernel (CONFIG_JFFS2_SUMMARY) + +config BR2_TARGET_ROOTFS_JFFS2_USE_CUSTOM_PAGESIZE + bool "Select custom virtual memory page size" + help + Use a custom virtual memory page size. Note that this is not + related to the flash memory page size. Using this option is + only needed if Linux is configured to use a page size + different than 4kB. + +config BR2_TARGET_ROOTFS_JFFS2_CUSTOM_PAGESIZE + hex "Virtual memory page size" + default 0x1000 + depends on BR2_TARGET_ROOTFS_JFFS2_USE_CUSTOM_PAGESIZE + help + Set to virtual memory page size of target system (in bytes). + This value should match the virtual page size in Linux (i.e. + this should have the same value as the value of the PAGE_SIZE + macro in Linux). It is not related to the flash memory page + size. + +endif diff --git a/fs/jffs2/jffs2.mk b/fs/jffs2/jffs2.mk new file mode 100644 index 00000000..0096af2e --- /dev/null +++ b/fs/jffs2/jffs2.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# Build the jffs2 root filesystem image +# +################################################################################ + +JFFS2_OPTS = -e $(BR2_TARGET_ROOTFS_JFFS2_EBSIZE) --with-xattr +SUMTOOL_OPTS = -e $(BR2_TARGET_ROOTFS_JFFS2_EBSIZE) + +ifeq ($(BR2_TARGET_ROOTFS_JFFS2_PAD),y) +ifneq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_PADSIZE)),0x0) +JFFS2_OPTS += --pad=$(strip $(BR2_TARGET_ROOTFS_JFFS2_PADSIZE)) +else +JFFS2_OPTS += -p +endif +SUMTOOL_OPTS += -p +endif + +ifeq ($(BR2_TARGET_ROOTFS_JFFS2_LE),y) +JFFS2_OPTS += -l +SUMTOOL_OPTS += -l +endif + +ifeq ($(BR2_TARGET_ROOTFS_JFFS2_BE),y) +JFFS2_OPTS += -b +SUMTOOL_OPTS += -b +endif + +ifeq ($(BR2_TARGET_ROOTFS_JFFS2_USE_CUSTOM_PAGESIZE),y) +JFFS2_OPTS += -s $(BR2_TARGET_ROOTFS_JFFS2_CUSTOM_PAGESIZE) +endif + +ifeq ($(BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER),y) +JFFS2_OPTS += -n +SUMTOOL_OPTS += -n +endif + +ROOTFS_JFFS2_DEPENDENCIES = host-mtd + +ifneq ($(BR2_TARGET_ROOTFS_JFFS2_SUMMARY),) +define ROOTFS_JFFS2_CMD + $(MKFS_JFFS2) $(JFFS2_OPTS) -d $(TARGET_DIR) -o $@.nosummary + $(SUMTOOL) $(SUMTOOL_OPTS) -i $@.nosummary -o $@ + rm $@.nosummary +endef +else +define ROOTFS_JFFS2_CMD + $(MKFS_JFFS2) $(JFFS2_OPTS) -d $(TARGET_DIR) -o $@ +endef +endif + +$(eval $(rootfs)) diff --git a/fs/oci/Config.in b/fs/oci/Config.in new file mode 100644 index 00000000..5e7aff28 --- /dev/null +++ b/fs/oci/Config.in @@ -0,0 +1,106 @@ +config BR2_TARGET_ROOTFS_OCI + bool "oci image" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + help + Build an OCI (Open Container Initiative) image. + + By default, the image is generated in a directory called + rootfs-oci: + + $ cd output/images + $ ls rootfs-oci/ + blobs index.json oci-layout + + You can push the image to a registry. Example using skopeo: + + $ skopeo copy --dest-creds : \ + oci:rootfs-oci: docker:///[:tag] + + And pull/run it with docker: + + $ docker run -it /[:tag] + +if BR2_TARGET_ROOTFS_OCI + +config BR2_TARGET_ROOTFS_OCI_AUTHOR + string "author name and/or email address" + default "Buildroot" + help + Name and/or email address of the person which created the + image. + +config BR2_TARGET_ROOTFS_OCI_TAG + string "image tag" + default "latest" + help + Tag to be used in the container image. If empty, 'latest' will + be used by default. + +config BR2_TARGET_ROOTFS_OCI_ENTRYPOINT + string "entrypoint" + default "sh" + help + Command to execute when the container starts. + + Spaces must be quoted or escaped, like for a shell string: + /usr/bin/env sh -c + /bin/my-init --some-option "1 2 3 4" some\ arg -- + + See the Docker documentation on how entrypoint and command + interact together: + https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact + +config BR2_TARGET_ROOTFS_OCI_CMD + string "command (or entrypoint arguments)" + help + Default command, or entrypoint arguments, of the container. + + Spaces must be quoted or escaped, like for a shell string: + "your shell scriptlet" + /usr/bin/env sh + + See the Docker documentation on how entrypoint and command + interact together: + https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact + +config BR2_TARGET_ROOTFS_OCI_WORKDIR + string "working directory" + help + Working directory of the entrypoint process in the + container. + +config BR2_TARGET_ROOTFS_OCI_UID + string "username or UID" + default "0" + help + The username or UID of user the process run as. + +config BR2_TARGET_ROOTFS_OCI_ENV_VARS + string "environment variables" + help + Default environment variables for the container. + Space-separated list of variable=value assignments. + +config BR2_TARGET_ROOTFS_OCI_PORTS + string "ports" + help + Default set of ports to expose from a container running + this image as a space-separted list of ports in the following + format: + + /tcp, /udp, (same as /tcp). + +config BR2_TARGET_ROOTFS_OCI_LABELS + string "labels" + help + Metadata in the format KEY=VALUE for the container compliant + with OCI annotation rules. If KEY starts with a dot, it will + be prefixed with "org.opencontainers.image" + (e.g. .url -> org.opencontainers.image.url). + +config BR2_TARGET_ROOTFS_OCI_ARCHIVE + bool "pack oci image into a tar archive" + help + Select whether the image should be packed into a TAR archive. + +endif diff --git a/fs/oci/oci.mk b/fs/oci/oci.mk new file mode 100644 index 00000000..4458cf8e --- /dev/null +++ b/fs/oci/oci.mk @@ -0,0 +1,86 @@ +################################################################################ +# +# Build the oci image +# +################################################################################ + +ROOTFS_OCI_DEPENDENCIES = host-sloci-image + +# architecture - take it from Go +OCI_SLOCI_IMAGE_OPTS = --arch $(GO_GOARCH) + +# architecture variant (typically used only for arm) +OCI_SLOCI_IMAGE_OPTS += $(and $(GO_GOARM),--arch-variant v$(GO_GOARM)) + +# entrypoint and command +# Special treatment: both the entrypoint and arguments (aka command) are +# a double-quoted, space-separated, escaped-double-quoted string, like: +# "foo \"1 2 3 4\" ' a b c d ' bar\ buz" +# which should be interpreted as a 4-item list (using single quotes to +# delimit them and see leading/trailing spaces): +# 'foo' +# '1 2 3 4' +# ' a b c d ' +# 'bar buz' +# +# We use some trickery to have the shell properly expand this into a list +# where each item is single-quoted and prefixed with the appropriate +# option string: +OCI_SLOCI_IMAGE_OPTS += \ + $(shell eval printf -- "--entrypoint\ \'%s\'\ " $(BR2_TARGET_ROOTFS_OCI_ENTRYPOINT)) \ + $(shell eval printf -- "--cmd\ \'%s\'\ " $(BR2_TARGET_ROOTFS_OCI_CMD)) + +# author +OCI_AUTHOR = $(call qstrip,$(BR2_TARGET_ROOTFS_OCI_AUTHOR)) +ifneq ($(OCI_AUTHOR),) +OCI_SLOCI_IMAGE_OPTS += --author "$(OCI_AUTHOR)" +endif + +# username or UID +OCI_UID = $(call qstrip,$(BR2_TARGET_ROOTFS_OCI_UID)) +ifneq ($(OCI_UID),) +OCI_SLOCI_IMAGE_OPTS += --user "$(OCI_UID)" +endif + +# labels +OCI_LABELS = $(call qstrip,$(BR2_TARGET_ROOTFS_OCI_LABELS)) +ifneq ($(OCI_LABELS),) +OCI_SLOCI_IMAGE_OPTS += \ + $(foreach label,$(OCI_LABELS),--label "$(label)") +endif + +# environment variables +OCI_ENV_VARS = $(call qstrip,$(BR2_TARGET_ROOTFS_OCI_ENV_VARS)) +ifneq ($(OCI_ENV_VARS),) +OCI_SLOCI_IMAGE_OPTS += \ + $(foreach var,$(OCI_ENV_VARS),--env "$(var)") +endif + +# working directory +OCI_WORKDIR = $(call qstrip,$(BR2_TARGET_ROOTFS_OCI_WORKDIR)) +ifneq ($(OCI_WORKDIR),) +OCI_SLOCI_IMAGE_OPTS += --working-dir "$(OCI_WORKDIR)" +endif + +# ports +OCI_PORTS = $(call qstrip,$(BR2_TARGET_ROOTFS_OCI_PORTS)) +ifneq ($(OCI_PORTS),) +OCI_SLOCI_IMAGE_OPTS += \ + $(foreach port,$(OCI_PORTS),--port "$(port)") +endif + +# tag +OCI_TAG = $(or $(call qstrip,$(BR2_TARGET_ROOTFS_OCI_TAG)),latest) + +# enable tar archive +ifeq ($(BR2_TARGET_ROOTFS_OCI_ARCHIVE),y) +OCI_SLOCI_IMAGE_OPTS += --tar +endif + +define ROOTFS_OCI_CMD + rm -rf $(BINARIES_DIR)/rootfs-oci + $(HOST_DIR)/bin/sloci-image $(OCI_SLOCI_IMAGE_OPTS) $(TARGET_DIR) \ + $(BINARIES_DIR)/rootfs-oci:$(OCI_TAG) +endef + +$(eval $(rootfs)) diff --git a/fs/romfs/Config.in b/fs/romfs/Config.in new file mode 100644 index 00000000..84944a0f --- /dev/null +++ b/fs/romfs/Config.in @@ -0,0 +1,4 @@ +config BR2_TARGET_ROOTFS_ROMFS + bool "romfs root filesystem" + help + Build a romfs image of the root filesystem. diff --git a/fs/romfs/romfs.mk b/fs/romfs/romfs.mk new file mode 100644 index 00000000..163751b4 --- /dev/null +++ b/fs/romfs/romfs.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# Build the romfs root filesystem image +# +################################################################################ + +ROOTFS_ROMFS_DEPENDENCIES = host-genromfs + +define ROOTFS_ROMFS_CMD + $(HOST_DIR)/bin/genromfs -d $(TARGET_DIR) -f $@ +endef + +$(eval $(rootfs)) diff --git a/fs/squashfs/Config.in b/fs/squashfs/Config.in new file mode 100644 index 00000000..21322a22 --- /dev/null +++ b/fs/squashfs/Config.in @@ -0,0 +1,118 @@ +config BR2_TARGET_ROOTFS_SQUASHFS + bool "squashfs root filesystem" + help + Build a squashfs root filesystem + +if BR2_TARGET_ROOTFS_SQUASHFS + +choice + prompt "block size" + default BR2_TARGET_ROOTFS_SQUASHFS_BS_128K + help + Data block size. Bigger values can improve + compression ratio. + + If unsure, leave at 128k (default). + +config BR2_TARGET_ROOTFS_SQUASHFS_BS_4K + bool "4k" + +config BR2_TARGET_ROOTFS_SQUASHFS_BS_8K + bool "8k" + +config BR2_TARGET_ROOTFS_SQUASHFS_BS_16K + bool "16k" + +config BR2_TARGET_ROOTFS_SQUASHFS_BS_32K + bool "32k" + +config BR2_TARGET_ROOTFS_SQUASHFS_BS_64K + bool "64k" + +config BR2_TARGET_ROOTFS_SQUASHFS_BS_128K + bool "128k" + +config BR2_TARGET_ROOTFS_SQUASHFS_BS_256K + bool "256k" + +config BR2_TARGET_ROOTFS_SQUASHFS_BS_512K + bool "512k" + +config BR2_TARGET_ROOTFS_SQUASHFS_BS_1024K + bool "1024k" + +endchoice + +config BR2_TARGET_ROOTFS_SQUASHFS_BS + string + default "4K" if BR2_TARGET_ROOTFS_SQUASHFS_BS_4K + default "8K" if BR2_TARGET_ROOTFS_SQUASHFS_BS_8K + default "16K" if BR2_TARGET_ROOTFS_SQUASHFS_BS_16K + default "32K" if BR2_TARGET_ROOTFS_SQUASHFS_BS_32K + default "64K" if BR2_TARGET_ROOTFS_SQUASHFS_BS_64K + default "128K" if BR2_TARGET_ROOTFS_SQUASHFS_BS_128K + default "256K" if BR2_TARGET_ROOTFS_SQUASHFS_BS_256K + default "512K" if BR2_TARGET_ROOTFS_SQUASHFS_BS_512K + default "1024K" if BR2_TARGET_ROOTFS_SQUASHFS_BS_1024K + +config BR2_TARGET_ROOTFS_SQUASHFS_PAD + bool "pad to a 4K boundary" + default y # legacy was always ON + help + Say 'y' here (the default) to pad the the filesystem image + to a 4K boundary. Say 'n' to disable padding. + +choice + prompt "Compression algorithm" + default BR2_TARGET_ROOTFS_SQUASHFS4_GZIP + help + Select the squashfs compression algorithm to use when + generating the filesystem. + +config BR2_TARGET_ROOTFS_SQUASHFS4_GZIP + bool "gzip" + +config BR2_TARGET_ROOTFS_SQUASHFS4_LZ4 + bool "lz4" + +config BR2_TARGET_ROOTFS_SQUASHFS4_LZMA + bool "lzma" + +config BR2_TARGET_ROOTFS_SQUASHFS4_LZO + bool "lzo" + +config BR2_TARGET_ROOTFS_SQUASHFS4_XZ + bool "xz" + +config BR2_TARGET_ROOTFS_SQUASHFS4_ZSTD + bool "zstd" + +endchoice + +config BR2_TARGET_ROOTFS_SQUASHFS_EXTREME_COMP + bool "extreme compression when available" + default y if BR2_TARGET_ROOTFS_SQUASHFS4_LZ4 # legacy + help + Use options to increase compression ration as much as + possible, like using architecture-specific options, at + the cost of time when assembling the filesystem image. + + For example: + - with gzip and lzo, use -Xcompression-level 9 + - with xz use arch-specific bcj (branch-call-jump) filters + - with zstd use -Xcompression-level 22 + - and more + +config BR2_TARGET_ROOTFS_SQUASHFS_COMP_OPTS + string + default "-Xcompression-level 9" if BR2_TARGET_ROOTFS_SQUASHFS4_GZIP + default "-Xcompression-level 9" if BR2_TARGET_ROOTFS_SQUASHFS4_LZO + default "-Xhc" if BR2_TARGET_ROOTFS_SQUASHFS4_LZ4 + default "-Xbcj arm,armthumb" if BR2_TARGET_ROOTFS_SQUASHFS4_XZ && (BR2_arm || BR_aarch64) + default "-Xbcj powerpc" if BR2_TARGET_ROOTFS_SQUASHFS4_XZ && (BR2_powerpc || BR2_powerpc64) + default "-Xbcj sparc" if BR2_TARGET_ROOTFS_SQUASHFS4_XZ && (BR2_sparc || BR2_sparc64) + default "-Xbcj x86" if BR2_TARGET_ROOTFS_SQUASHFS4_XZ && (BR2_i386 || BR2_x86_64) + default "-Xcompression-level 22" if BR2_TARGET_ROOTFS_SQUASHFS4_ZSTD + depends on BR2_TARGET_ROOTFS_SQUASHFS_EXTREME_COMP + +endif diff --git a/fs/squashfs/squashfs.mk b/fs/squashfs/squashfs.mk new file mode 100644 index 00000000..cf083663 --- /dev/null +++ b/fs/squashfs/squashfs.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# Build the squashfs root filesystem image +# +################################################################################ + +ROOTFS_SQUASHFS_DEPENDENCIES = host-squashfs + +ROOTFS_SQUASHFS_ARGS = \ + -noappend \ + -processors $(PARALLEL_JOBS) \ + -b $(call qstrip,$(BR2_TARGET_ROOTFS_SQUASHFS_BS)) \ + $(call qstrip,$(BR2_TARGET_ROOTFS_SQUASHFS_COMP_OPTS)) + +ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS_PAD),) +ROOTFS_SQUASHFS_ARGS += -nopad +endif + +ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS4_LZ4),y) +ROOTFS_SQUASHFS_ARGS += -comp lz4 +else ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS4_LZO),y) +ROOTFS_SQUASHFS_ARGS += -comp lzo +else ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS4_LZMA),y) +ROOTFS_SQUASHFS_ARGS += -comp lzma +else ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS4_XZ),y) +ROOTFS_SQUASHFS_ARGS += -comp xz +else ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS4_ZSTD),y) +ROOTFS_SQUASHFS_ARGS += -comp zstd +else +ROOTFS_SQUASHFS_ARGS += -comp gzip +endif + +define ROOTFS_SQUASHFS_CMD + $(HOST_DIR)/bin/mksquashfs $(TARGET_DIR) $@ $(ROOTFS_SQUASHFS_ARGS) +endef + +$(eval $(rootfs)) diff --git a/fs/tar/Config.in b/fs/tar/Config.in new file mode 100644 index 00000000..e88a5bb9 --- /dev/null +++ b/fs/tar/Config.in @@ -0,0 +1,62 @@ +config BR2_TARGET_ROOTFS_TAR + bool "tar the root filesystem" + default y + help + Build a tar archive of the root filesystem + +choice + prompt "Compression method" + default BR2_TARGET_ROOTFS_TAR_NONE + depends on BR2_TARGET_ROOTFS_TAR + help + Select compressor for tar archive of the root filesystem + +config BR2_TARGET_ROOTFS_TAR_NONE + bool "no compression" + help + Do not compress the tarball. + +config BR2_TARGET_ROOTFS_TAR_GZIP + bool "gzip" + help + Do compress the tarball with gzip. + +config BR2_TARGET_ROOTFS_TAR_BZIP2 + bool "bzip2" + help + Do compress the tarball with bzip2. + +config BR2_TARGET_ROOTFS_TAR_LZ4 + bool "lz4" + help + Do compress the tarball with lz4. + +config BR2_TARGET_ROOTFS_TAR_LZMA + bool "lzma" + help + Do compress the tarball with lzma. + +config BR2_TARGET_ROOTFS_TAR_LZO + bool "lzo" + help + Do compress the tarball with lzop. + +config BR2_TARGET_ROOTFS_TAR_XZ + bool "xz" + help + Do compress the tarball with xz. + +config BR2_TARGET_ROOTFS_TAR_ZSTD + bool "zstd" + help + Do compress the tarball with zstd. + +endchoice + +config BR2_TARGET_ROOTFS_TAR_OPTIONS + string "other random options to pass to tar" + default "" + depends on BR2_TARGET_ROOTFS_TAR + help + Any other flags you want to pass to tar + Refer to tar --help for details diff --git a/fs/tar/tar.mk b/fs/tar/tar.mk new file mode 100644 index 00000000..92b39f99 --- /dev/null +++ b/fs/tar/tar.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# tar to archive target filesystem +# +################################################################################ + +TAR_OPTS = $(call qstrip,$(BR2_TARGET_ROOTFS_TAR_OPTIONS)) + +ROOTFS_TAR_DEPENDENCIES = $(BR2_TAR_HOST_DEPENDENCY) + +# do not store atime/ctime in PaxHeaders to ensure reproducbility +TAR_OPTS += --pax-option=exthdr.name=%d/PaxHeaders/%f,atime:=0,ctime:=0 + +define ROOTFS_TAR_CMD + (cd $(TARGET_DIR); find -print0 | LC_ALL=C sort -z | \ + $(TAR) $(TAR_OPTS) -cf $@ --null --xattrs-include='*' --no-recursion -T - --numeric-owner) +endef + +$(eval $(rootfs)) diff --git a/fs/ubi/Config.in b/fs/ubi/Config.in new file mode 100644 index 00000000..3427ea05 --- /dev/null +++ b/fs/ubi/Config.in @@ -0,0 +1,57 @@ +config BR2_TARGET_ROOTFS_UBI + bool "ubi image containing an ubifs root filesystem" + select BR2_TARGET_ROOTFS_UBIFS + help + Build an ubi image from the ubifs one (with ubinize). + +if BR2_TARGET_ROOTFS_UBI + +config BR2_TARGET_ROOTFS_UBI_PEBSIZE + hex "physical eraseblock size" + default 0x20000 + help + Tells ubinize the physical eraseblock (PEB) size of the + flash chip the ubi image is created for. The value provided + here is passed to the -p/--peb-size option of ubinize. + +config BR2_TARGET_ROOTFS_UBI_SUBSIZE + int "sub-page size" + default 512 + help + Tells ubinize that the flash supports sub-pages and the + sub-page size. Use 0 if sub-pages are not supported on flash + chip. + The value provided here is passed to the -s/--sub-page-size + option of ubinize. + +config BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG + bool "Use custom config file" + help + Select this option to use a custom ubinize configuration file, + rather than the default configuration used by Buildroot (which + defines a single dynamic volume marked as auto-resize). + Passing a custom ubinize configuration file allows you to + create several volumes, specify volume types, etc. + + As a convenience, buildroot replaces the string + "BR2_ROOTFS_UBIFS_PATH" with the path to the built ubifs file. + So the volume defined for the root filesystem can specify the + image path as: image=BR2_ROOTFS_UBIFS_PATH + + Buildroot also replaces the string "BINARIES_DIR" with the + value of $(BINARIES_DIR), so that it is possible to reference + other build artefacts (e.g. to include the kernel in a UBI + volume). + +config BR2_TARGET_ROOTFS_UBI_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG + help + Path to the ubinize configuration file. + +config BR2_TARGET_ROOTFS_UBI_OPTS + string "Additional ubinize options" + help + Any additional ubinize options you may want to include. + +endif # BR2_TARGET_ROOTFS_UBI diff --git a/fs/ubi/ubi.mk b/fs/ubi/ubi.mk new file mode 100644 index 00000000..54bb81ea --- /dev/null +++ b/fs/ubi/ubi.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# Embed the ubifs image into an ubi image +# +################################################################################ + +UBI_UBINIZE_OPTS = -m $(BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE) +UBI_UBINIZE_OPTS += -p $(BR2_TARGET_ROOTFS_UBI_PEBSIZE) +ifneq ($(BR2_TARGET_ROOTFS_UBI_SUBSIZE),0) +UBI_UBINIZE_OPTS += -s $(BR2_TARGET_ROOTFS_UBI_SUBSIZE) +endif + +UBI_UBINIZE_OPTS += $(call qstrip,$(BR2_TARGET_ROOTFS_UBI_OPTS)) + +ROOTFS_UBI_DEPENDENCIES = rootfs-ubifs + +ifeq ($(BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG),y) +UBI_UBINIZE_CONFIG_FILE_PATH = $(call qstrip,$(BR2_TARGET_ROOTFS_UBI_CUSTOM_CONFIG_FILE)) +else +UBI_UBINIZE_CONFIG_FILE_PATH = fs/ubi/ubinize.cfg +endif + +# don't use sed -i as it misbehaves on systems with SELinux enabled when this is +# executed through fakeroot (see #9386) +define ROOTFS_UBI_CMD + sed 's;BR2_ROOTFS_UBIFS_PATH;$@fs;;s;BINARIES_DIR;$(BINARIES_DIR);' \ + $(UBI_UBINIZE_CONFIG_FILE_PATH) > $(BUILD_DIR)/ubinize.cfg + $(HOST_DIR)/sbin/ubinize -o $@ $(UBI_UBINIZE_OPTS) $(BUILD_DIR)/ubinize.cfg + rm $(BUILD_DIR)/ubinize.cfg +endef + +$(eval $(rootfs)) diff --git a/fs/ubi/ubinize.cfg b/fs/ubi/ubinize.cfg new file mode 100644 index 00000000..b0aace7b --- /dev/null +++ b/fs/ubi/ubinize.cfg @@ -0,0 +1,8 @@ +[ubifs] +mode=ubi +vol_id=0 +vol_type=dynamic +vol_name=rootfs +vol_alignment=1 +vol_flags=autoresize +image=BR2_ROOTFS_UBIFS_PATH diff --git a/fs/ubifs/Config.in b/fs/ubifs/Config.in new file mode 100644 index 00000000..e79ab9a1 --- /dev/null +++ b/fs/ubifs/Config.in @@ -0,0 +1,98 @@ +config BR2_TARGET_ROOTFS_UBIFS + bool "ubifs root filesystem" + help + Build a ubifs root filesystem + +if BR2_TARGET_ROOTFS_UBIFS + +config BR2_TARGET_ROOTFS_UBIFS_LEBSIZE + hex "logical eraseblock size" + default 0x1f800 + help + Logical eraseblock (LEB) size. The value provided here is + passed to the -e/--leb-size option of mkfs.ubifs. + +config BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE + hex "minimum I/O unit size" + default 0x800 + help + Minimum I/O unit size. The value provided here is passed + to the -m/--min-io-size option of mkfs.ubifs/ubinize. + +config BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT + int "maximum logical eraseblock count" + default 2048 + help + Maximum logical eraseblock (LEB) count. The value provided + here is passed to the -c/--max-leb-cnt option of mkfs.ubifs. + +choice + prompt "ubifs runtime compression" + default BR2_TARGET_ROOTFS_UBIFS_RT_LZO + help + Select which compression format to use at run-time within + the ubifs file system. The choice made here is passed to + the -x/--compr option of mkfs.ubifs + +config BR2_TARGET_ROOTFS_UBIFS_RT_NONE + bool "no compression" + help + Don't use run-time compression. + +config BR2_TARGET_ROOTFS_UBIFS_RT_ZLIB + bool "gzip" + help + Use zlib compression at run-time. + +config BR2_TARGET_ROOTFS_UBIFS_RT_LZO + bool "lzo" + help + Use lzo compression at run-time. + +endchoice + +choice + prompt "Compression method" + default BR2_TARGET_ROOTFS_UBIFS_NONE + help + Select which compression format to compress the final image + into. + +config BR2_TARGET_ROOTFS_UBIFS_NONE + bool "no compression" + help + Do not compress the ubifs filesystem. + +config BR2_TARGET_ROOTFS_UBIFS_GZIP + bool "gzip" + help + Do compress the ubifs filesystem with gzip. + +config BR2_TARGET_ROOTFS_UBIFS_BZIP2 + bool "bzip2" + help + Do compress the ubifs filesystem with bzip2. + +config BR2_TARGET_ROOTFS_UBIFS_LZMA + bool "lzma" + help + Do compress the ubifs filesystem with lzma. + +config BR2_TARGET_ROOTFS_UBIFS_LZO + bool "lzo" + help + Do compress the ubifs filesystem with lzop. + +config BR2_TARGET_ROOTFS_UBIFS_XZ + bool "xz" + help + Do compress the ubifs filesystem with xz. + +endchoice + +config BR2_TARGET_ROOTFS_UBIFS_OPTS + string "Additional mkfs.ubifs options" + help + Any additional mkfs.ubifs options you may want to include. + +endif # BR2_TARGET_ROOTFS_UBIFS diff --git a/fs/ubifs/ubifs.mk b/fs/ubifs/ubifs.mk new file mode 100644 index 00000000..2cfc397a --- /dev/null +++ b/fs/ubifs/ubifs.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# Build the ubifs root filesystem image +# +################################################################################ + +UBIFS_OPTS = \ + -e $(BR2_TARGET_ROOTFS_UBIFS_LEBSIZE) \ + -c $(BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT) \ + -m $(BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE) + +ifeq ($(BR2_TARGET_ROOTFS_UBIFS_RT_ZLIB),y) +UBIFS_OPTS += -x zlib +endif +ifeq ($(BR2_TARGET_ROOTFS_UBIFS_RT_LZO),y) +UBIFS_OPTS += -x lzo +endif +ifeq ($(BR2_TARGET_ROOTFS_UBIFS_RT_NONE),y) +UBIFS_OPTS += -x none +endif + +UBIFS_OPTS += $(call qstrip,$(BR2_TARGET_ROOTFS_UBIFS_OPTS)) + +ROOTFS_UBIFS_DEPENDENCIES = host-mtd + +define ROOTFS_UBIFS_CMD + $(HOST_DIR)/sbin/mkfs.ubifs -d $(TARGET_DIR) $(UBIFS_OPTS) -o $@ +endef + +$(eval $(rootfs)) diff --git a/fs/yaffs2/Config.in b/fs/yaffs2/Config.in new file mode 100644 index 00000000..27da4ba6 --- /dev/null +++ b/fs/yaffs2/Config.in @@ -0,0 +1,4 @@ +config BR2_TARGET_ROOTFS_YAFFS2 + bool "yaffs2 root filesystem" + help + Build a yaffs2 root filesystem diff --git a/fs/yaffs2/yaffs2.mk b/fs/yaffs2/yaffs2.mk new file mode 100644 index 00000000..9cba27af --- /dev/null +++ b/fs/yaffs2/yaffs2.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# Build the yaffs2 root filesystem image +# +################################################################################ + +ROOTFS_YAFFS2_DEPENDENCIES = host-yaffs2utils + +define ROOTFS_YAFFS2_CMD + $(HOST_DIR)/bin/mkyaffs2 --all-root $(TARGET_DIR) $@ +endef + +$(eval $(rootfs)) diff --git a/linux/0001-timeconst.pl-Eliminate-Perl-warning.patch.conditional b/linux/0001-timeconst.pl-Eliminate-Perl-warning.patch.conditional new file mode 100644 index 00000000..02abadd3 --- /dev/null +++ b/linux/0001-timeconst.pl-Eliminate-Perl-warning.patch.conditional @@ -0,0 +1,45 @@ +From 63a3f603413ffe82ad775f2d62a5afff87fd94a0 Mon Sep 17 00:00:00 2001 +From: "H. Peter Anvin" +Date: Thu, 7 Feb 2013 17:14:08 -0800 +Subject: [PATCH] timeconst.pl: Eliminate Perl warning + +defined(@array) is deprecated in Perl and gives off a warning. +Restructure the code to remove that warning. + +[ hpa: it would be interesting to revert to the timeconst.bc script. + It appears that the failures reported by akpm during testing of + that script was due to a known broken version of make, not a problem + with bc. The Makefile rules could probably be restructured to avoid + the make bug, or it is probably old enough that it doesn't matter. ] + +Reported-by: Andi Kleen +Signed-off-by: H. Peter Anvin +Cc: Andrew Morton +Cc: +Signed-off-by: Gustavo Zacarias +--- +Patch status: upstream + + kernel/timeconst.pl | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/kernel/timeconst.pl b/kernel/timeconst.pl +index eb51d76..3f42652 100644 +--- a/kernel/timeconst.pl ++++ b/kernel/timeconst.pl +@@ -369,10 +369,8 @@ if ($hz eq '--can') { + die "Usage: $0 HZ\n"; + } + +- @val = @{$canned_values{$hz}}; +- if (!defined(@val)) { +- @val = compute_values($hz); +- } ++ $cv = $canned_values{$hz}; ++ @val = defined($cv) ? @$cv : compute_values($hz); + output($hz, @val); + } + exit 0; +-- +2.4.10 + diff --git a/linux/5.10.162-cip24-rt10/0001-arch-microblaze-mm-init.c-fix-build.patch b/linux/5.10.162-cip24-rt10/0001-arch-microblaze-mm-init.c-fix-build.patch new file mode 100644 index 00000000..4760d9e4 --- /dev/null +++ b/linux/5.10.162-cip24-rt10/0001-arch-microblaze-mm-init.c-fix-build.patch @@ -0,0 +1,37 @@ +From 1fc03e1fdc8bb606d1c95e9fa557a9e5f6df17ec Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 25 Feb 2023 17:26:56 +0100 +Subject: [PATCH] arch/microblaze/mm/init.c: fix build + +Fix the following build failure on microblaze raised since +https://git.kernel.org/pub/scm/linux/kernel/git/cip/linux-cip.git/commit/arch/microblaze/mm/init.c?h=v5.10.168-cip27-rt11&id=32ac92b5a39e2ef91308929bf5ed0804094b4183: + +arch/microblaze/mm/init.c:71:2: error: #endif without #if + 71 | #endif /* CONFIG_HIGHMEM */ + | ^~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/27291870cf7539d26e45c45f34322d24a6dbca33 + +Signed-off-by: Fabrice Fontaine +[Upstream status: sent to +Sebastian Andrzej Siewior ] +--- + arch/microblaze/mm/init.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/arch/microblaze/mm/init.c b/arch/microblaze/mm/init.c +index 1f4b5b34e600..a444778e59de 100644 +--- a/arch/microblaze/mm/init.c ++++ b/arch/microblaze/mm/init.c +@@ -49,6 +49,7 @@ unsigned long lowmem_size; + EXPORT_SYMBOL(min_low_pfn); + EXPORT_SYMBOL(max_low_pfn); + ++#ifdef CONFIG_HIGHMEM + static void __init highmem_init(void) + { + pr_debug("%x\n", (u32)PKMAP_BASE); +-- +2.39.1 + diff --git a/linux/Config.ext.in b/linux/Config.ext.in new file mode 100644 index 00000000..3cbf42d3 --- /dev/null +++ b/linux/Config.ext.in @@ -0,0 +1,154 @@ +menu "Linux Kernel Extensions" + +#------------------------------------------------------------------------------- +# Xenomai +config BR2_LINUX_KERNEL_EXT_XENOMAI + bool "Adeos/Xenomai Real-time patch" + depends on BR2_PACKAGE_XENOMAI_COBALT_ARCH_SUPPORTS + depends on BR2_USE_MMU # xenomai + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # xenomai + depends on BR2_TOOLCHAIN_HAS_THREADS # xenomai + depends on !BR2_TOOLCHAIN_USES_MUSL # xenomai + select BR2_PACKAGE_XENOMAI + help + Xenomai is split in two parts: a kernel part and a userspace + part. Enabling this option automatically selects the Xenomai + package and helps in patching the Linux kernel built by + Buildroot with the Xenomai kernel part (ie Adeos/Ipipe). + + You can find the currently supported kernel versions by + looking at the available patches in the Xenomai sources + tree: ksrc/arch/$(ARCH)/patches + + However, it is recommended to use the latest version of the + Adeos/Ipipe patch available at + https://xenomai.org/downloads/ipipe/ + + Xenomai is know to support Blackfin, SH4, x86, ARM, NIOS2 + and PowerPC architectures. + +config BR2_LINUX_KERNEL_EXT_XENOMAI_ADEOS_PATCH + string "Path/URL for Adeos patch file" + depends on BR2_LINUX_KERNEL_EXT_XENOMAI + help + Optionally, explicitly specify where to find the Adeos + patch to use. + Examples: + https://xenomai.org/downloads/ipipe/v4.x/arm/ipipe-core-4.19.33-arm-2.patch + or /home/foo/ipipe-core-4.19.33-arm-2.patch + Please verify that your kernel version in Buildroot matches. + +comment "xenomai needs a uClibc or glibc toolchain w/ threads" + depends on BR2_PACKAGE_XENOMAI_COBALT_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_MUSL + +#------------------------------------------------------------------------------- +# RTAI +config BR2_LINUX_KERNEL_EXT_RTAI + bool "RTAI Real-time patch" + depends on !BR2_LINUX_KERNEL_LATEST_VERSION + depends on !BR2_LINUX_KERNEL_LATEST_CIP_VERSION + depends on !BR2_LINUX_KERNEL_LATEST_CIP_RT_VERSION + select BR2_PACKAGE_RTAI + help + RTAI Kernel part. + +#------------------------------------------------------------------------------- +# ev3dev Linux drivers +config BR2_LINUX_KERNEL_EXT_EV3DEV_LINUX_DRIVERS + bool "ev3dev Linux drivers" + select BR2_PACKAGE_EV3DEV_LINUX_DRIVERS + help + Linux drivers for LEGO MINDSTORMS EV3 from the ev3dev project. + + https://github.com/ev3dev/lego-linux-drivers + +#------------------------------------------------------------------------------- +# fbtft +config BR2_LINUX_KERNEL_EXT_FBTFT + bool "FB TFT drivers" + select BR2_PACKAGE_FBTFT + help + Linux Framebuffer drivers for small TFT LCD display modules, + e.g. Adafruit PiTFT displays for Raspberry Pi (this extra + package is only needed for linux kernels until v3.19, since + v4.0 the drivers are included in the staging area). + + To enable fbtft, e.g. for Adafruit 2.8 PiTFT, enable the + following kernel configurations: + - CONFIG_SPI + - CONFIG_GPIOLIB + - CONFIG_FB + - CONFIG_FB_TFT + - CONFIG_FB_TFT_ILI9341 + + https://github.com/notro/fbtft + +# aufs-standalone +config BR2_LINUX_KERNEL_EXT_AUFS + bool "Aufs Filesystem Module patch" + select BR2_PACKAGE_AUFS + help + Aufs is split in two parts: a kernel part and a userspace + part. Enabling this option automatically selects the aufs + standalone (module) package and patches the Linux kernel + built by Buildroot with the aufs kernel part (ie fs/aufs). + + It is important to use the correct branch of aufs-standalone. + +if BR2_LINUX_KERNEL_EXT_AUFS + +choice + bool "aufs-standalone series" + help + Select the major series of this version. This must match the + major version of your kernel (e.g. for kernels 3.x, select + aufs3.x; for kernels 4.x, select aufs4.x; for kernels 5.x, + select aufs5.x ). + + Note: neither aufs1.x nor aufs2.x (both for kernels older than + 3.x) are supported. + +config BR2_LINUX_KERNEL_EXT_AUFS_SERIES_3 + bool "aufs3.x" + +config BR2_LINUX_KERNEL_EXT_AUFS_SERIES_4 + bool "aufs4.x" + +config BR2_LINUX_KERNEL_EXT_AUFS_SERIES_5 + bool "aufs5.x" + +endchoice + +config BR2_LINUX_KERNEL_EXT_AUFS_SERIES + int + default 3 if BR2_LINUX_KERNEL_EXT_AUFS_SERIES_3 + default 4 if BR2_LINUX_KERNEL_EXT_AUFS_SERIES_4 + default 5 if BR2_LINUX_KERNEL_EXT_AUFS_SERIES_5 + +config BR2_LINUX_KERNEL_EXT_AUFS_VERSION + string "aufs-standalone version" + default "" + help + The version you choose must match that of your kernel. + Usually, the sha1 of the cset you want to use; avoid using a + branch name as this yields non-reproducible builds. + + See the following resources to see what versions are + available: + + For aufs3.x: + https://sourceforge.net/p/aufs/aufs3-standalone/ref/master/branches/ + For aufs4.x: + https://github.com/sfjro/aufs4-standalone/branches/all + For aufs5.x: + https://github.com/sfjro/aufs5-standalone/branches/all + +endif # aufs + +# kernel extensions from br2-external trees, if any +source "$BR2_BASE_DIR/.br2-external.in.linux" + +endmenu diff --git a/linux/Config.in b/linux/Config.in new file mode 100644 index 00000000..e38f8104 --- /dev/null +++ b/linux/Config.in @@ -0,0 +1,503 @@ +menu "Kernel" + +config BR2_LINUX_KERNEL + bool "Linux Kernel" + select BR2_PACKAGE_HOST_KMOD # Unconditional, even if modules not enabled + select BR2_PACKAGE_HOST_IMAGEMAGICK if BR2_LINUX_KERNEL_CUSTOM_LOGO_PATH != "" + help + Enable this option if you want to build a Linux kernel for + your embedded device + +if BR2_LINUX_KERNEL + +# Packages that need to have a kernel with support for loadable modules, +# but do not use the kernel-modules infrastructure, should select that +# option. +config BR2_LINUX_NEEDS_MODULES + bool + +# +# Version selection. We provide the choice between: +# +# 1. A single fairly recent stable kernel version +# 2. A custom stable version +# 3. A custom tarball +# 4. A set of custom repository locations +# +choice + prompt "Kernel version" + +config BR2_LINUX_KERNEL_LATEST_VERSION + bool "Latest version (6.10)" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_10 if BR2_KERNEL_HEADERS_AS_KERNEL + +config BR2_LINUX_KERNEL_LATEST_CIP_VERSION + bool "Latest CIP SLTS version (5.10.162-cip24)" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10 if BR2_KERNEL_HEADERS_AS_KERNEL + help + CIP launched in the spring of 2016 to address the needs of + organizations in industries such as power generation and + distribution, water, oil and gas, transportation, building + automation and more for reliable and secure Linux-based + embedded systems that can be sustained over a period of + 10 to as many as 60 years. + The project's goal is to provide an open source base layer + of industrial-grade software that permits the use and + implementation of software building blocks that meet + these requirements. + + The CIP community plans to maintain 5.10 for security and + bug fixes for more than 10 years. + + https://www.cip-project.org + +config BR2_LINUX_KERNEL_LATEST_CIP_RT_VERSION + bool "Latest CIP RT SLTS version (5.10.162-cip24-rt10)" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10 if BR2_KERNEL_HEADERS_AS_KERNEL + help + Same as the CIP version, but this is the PREEMPT_RT realtime + variant. + + The CIP community plans to maintain 5.10 for security and + bug fixes for more than 10 years. + + https://www.cip-project.org + +config BR2_LINUX_KERNEL_CUSTOM_VERSION + bool "Custom version" + help + This option allows to use a specific official version from + kernel.org, like 2.6.x, 2.6.x.y, 3.x.y, ... + + Note: you cannot use this option to select a _longterm_ 2.6 + kernel, because these kernels are not located at the standard + URL at kernel.org. Instead, select "Custom tarball" and + specify the right URL directly. + +config BR2_LINUX_KERNEL_CUSTOM_TARBALL + bool "Custom tarball" + help + This option allows to specify a URL pointing to a kernel + source tarball. This URL can use any protocol recognized by + Buildroot, like http://, ftp://, file:// or scp://. + + When pointing to a local tarball using file://, you may want + to use a make variable like $(TOPDIR) to reference the root of + the Buildroot tree. + +config BR2_LINUX_KERNEL_CUSTOM_GIT + bool "Custom Git repository" + help + This option allows Buildroot to get the Linux kernel source + code from a Git repository. + +config BR2_LINUX_KERNEL_CUSTOM_HG + bool "Custom Mercurial repository" + help + This option allows Buildroot to get the Linux kernel source + code from a Mercurial repository. + +config BR2_LINUX_KERNEL_CUSTOM_SVN + bool "Custom Subversion repository" + help + This option allows Buildroot to get the Linux kernel source + code from a Subversion repository. + +endchoice + +config BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE + string "Kernel version" + depends on BR2_LINUX_KERNEL_CUSTOM_VERSION + +config BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION + string "URL of custom kernel tarball" + depends on BR2_LINUX_KERNEL_CUSTOM_TARBALL + +if BR2_LINUX_KERNEL_CUSTOM_GIT || BR2_LINUX_KERNEL_CUSTOM_HG || BR2_LINUX_KERNEL_CUSTOM_SVN + +config BR2_LINUX_KERNEL_CUSTOM_REPO_URL + string "URL of custom repository" + +config BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION + string "Custom repository version" + help + Revision to use in the typical format used by + Git/Mercurial/Subversion E.G. a sha id, a tag, branch, .. + +endif + +config BR2_LINUX_KERNEL_CUSTOM_REPO_GIT_SUBMODULES + bool "Download also git submodules" + depends on BR2_LINUX_KERNEL_CUSTOM_GIT + help + Include git submodules in the kernel source tree. + +config BR2_LINUX_KERNEL_VERSION + string + default "6.10.8" if BR2_LINUX_KERNEL_LATEST_VERSION + default "5.10.162-cip24" if BR2_LINUX_KERNEL_LATEST_CIP_VERSION + default "5.10.162-cip24-rt10" if BR2_LINUX_KERNEL_LATEST_CIP_RT_VERSION + default BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE \ + if BR2_LINUX_KERNEL_CUSTOM_VERSION + default "custom" if BR2_LINUX_KERNEL_CUSTOM_TARBALL + default BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION \ + if BR2_LINUX_KERNEL_CUSTOM_GIT || BR2_LINUX_KERNEL_CUSTOM_HG || BR2_LINUX_KERNEL_CUSTOM_SVN + +# +# Patch selection +# + +config BR2_LINUX_KERNEL_PATCH + string "Custom kernel patches" + help + A space-separated list of patches to apply to the + kernel. Each patch can be described as an URL, a local file + path, or a directory. In the case of a directory, all files + matching *.patch in the directory will be applied. + +# +# Configuration selection +# + +choice + prompt "Kernel configuration" + default BR2_LINUX_KERNEL_USE_DEFCONFIG + +config BR2_LINUX_KERNEL_USE_DEFCONFIG + bool "Using an in-tree defconfig file" + +config BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG + bool "Use the architecture default configuration" + help + This option will use the default configuration for the + selected architecture. I.e, it is equivalent to running + "make ARCH= defconfig". This is useful on architectures + that have a single defconfig file, such as ARM64. + +config BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG + bool "Using a custom (def)config file" + +endchoice + +config BR2_LINUX_KERNEL_DEFCONFIG + string "Defconfig name" + depends on BR2_LINUX_KERNEL_USE_DEFCONFIG + help + Name of the kernel defconfig file to use, without the + trailing _defconfig. The defconfig is located in + arch//configs in the kernel tree. + +config BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG + help + Path to the kernel configuration file + + Note: this can be a defconfig file or a complete .config file, + which can later be saved back with make + linux-update-(def)config. + +config BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES + string "Additional configuration fragment files" + help + A space-separated list of kernel configuration fragment files, + that will be merged to the main kernel configuration file. + +config BR2_LINUX_KERNEL_CUSTOM_LOGO_PATH + string "Custom boot logo file path" + help + Use a custom Linux framebuffer boot logo. + Custom logo should be in PNG or JPEG format, it will be + converted to the linux kernel format (224 colors only) + and copied over the original logo file. + +# +# Binary format +# + +choice + prompt "Kernel binary format" + default BR2_LINUX_KERNEL_ZIMAGE if BR2_arm || BR2_armeb + +config BR2_LINUX_KERNEL_UIMAGE + bool "uImage" + depends on BR2_arc || BR2_arm || BR2_armeb || \ + BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le || \ + BR2_sh || BR2_mips || BR2_mipsel || \ + BR2_mips64 || BR2_mips64el || BR2_xtensa + select BR2_PACKAGE_HOST_UBOOT_TOOLS + +config BR2_LINUX_KERNEL_APPENDED_UIMAGE + bool "uImage with appended DT" + depends on BR2_arm || BR2_armeb + select BR2_LINUX_KERNEL_DTS_SUPPORT + select BR2_LINUX_KERNEL_APPENDED_DTB + select BR2_PACKAGE_HOST_UBOOT_TOOLS + +config BR2_LINUX_KERNEL_BZIMAGE + bool "bzImage" + depends on BR2_i386 || BR2_x86_64 || BR2_s390x + +config BR2_LINUX_KERNEL_ZIMAGE + bool "zImage" + depends on BR2_arm || BR2_armeb || BR2_powerpc || \ + BR2_powerpc64 || BR2_powerpc64le || BR2_sparc || \ + BR2_sh || BR2_xtensa + +config BR2_LINUX_KERNEL_ZIMAGE_EPAPR + bool "zImage.epapr" + depends on BR2_powerpc64 || BR2_powerpc64le + +config BR2_LINUX_KERNEL_APPENDED_ZIMAGE + bool "zImage with appended DT" + depends on BR2_arm || BR2_armeb + select BR2_LINUX_KERNEL_DTS_SUPPORT + select BR2_LINUX_KERNEL_APPENDED_DTB + +config BR2_LINUX_KERNEL_CUIMAGE + bool "cuImage" + depends on BR2_powerpc + select BR2_PACKAGE_HOST_UBOOT_TOOLS + select BR2_LINUX_KERNEL_DTS_SUPPORT + select BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT + +config BR2_LINUX_KERNEL_SIMPLEIMAGE + bool "simpleImage" + depends on BR2_microblaze + select BR2_PACKAGE_HOST_UBOOT_TOOLS + select BR2_LINUX_KERNEL_DTS_SUPPORT + select BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT + +config BR2_LINUX_KERNEL_IMAGE + bool "Image" + depends on BR2_aarch64 || BR2_aarch64_be || BR2_riscv + +config BR2_LINUX_KERNEL_IMAGEGZ + bool "Image.gz" + depends on BR2_aarch64 || BR2_aarch64_be || BR2_riscv + +config BR2_LINUX_KERNEL_LINUX_BIN + bool "linux.bin" + depends on BR2_microblaze + select BR2_PACKAGE_HOST_UBOOT_TOOLS + +config BR2_LINUX_KERNEL_VMLINUX_BIN + bool "vmlinux.bin" + depends on BR2_mips || BR2_mipsel || BR2_sh + +config BR2_LINUX_KERNEL_VMLINUX + bool "vmlinux" + +config BR2_LINUX_KERNEL_VMLINUZ + bool "vmlinuz" + depends on BR2_mips || BR2_mipsel + +config BR2_LINUX_KERNEL_VMLINUZ_BIN + bool "vmlinuz.bin" + depends on BR2_mips || BR2_mipsel + +config BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM + bool "custom target" + help + For certain cases a board-specific target image must be + used. For example, on powerPC where the OpenFirmware + description is attached in a board-specific kernel image + target like 'cuImage.mpc8379_rdb'. + + Select this option and specify the make target in "Kernel + image target name". + +endchoice + +# +# Kernel compression format +# + +choice + prompt "Kernel compression format" + help + This selection will just ensure that the correct host tools + are built. The actual compression for the kernel should be + selected in the kernel configuration menu. + +config BR2_LINUX_KERNEL_GZIP + bool "gzip compression" + +config BR2_LINUX_KERNEL_LZ4 + bool "lz4 compression" + +config BR2_LINUX_KERNEL_LZMA + bool "lzma compression" + +config BR2_LINUX_KERNEL_LZO + bool "lzo compression" + +config BR2_LINUX_KERNEL_XZ + bool "xz compression" + +config BR2_LINUX_KERNEL_ZSTD + bool "zstd compression" + +config BR2_LINUX_KERNEL_UNCOMPRESSED + bool "uncompressed" + depends on BR2_s390x + +endchoice + +config BR2_LINUX_KERNEL_IMAGE_TARGET_NAME + string "Kernel image target name" + depends on BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM + help + Specify the kernel make target to build the kernel that you + need. + +config BR2_LINUX_KERNEL_IMAGE_NAME + string "Kernel image name" + depends on BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM + help + The filename of the kernel image, if it is different from + the make target (above). Defaults to + BR2_LINUX_KERNEL_IMAGE_TARGET_NAME. If specified, the + filename is relative to arch/ARCH/boot/. + + If unsure, leave it empty. + +config BR2_LINUX_KERNEL_UIMAGE_LOADADDR + string "load address (for 3.7+ multi-platform image)" + depends on BR2_arm || BR2_armeb + depends on BR2_LINUX_KERNEL_UIMAGE || BR2_LINUX_KERNEL_APPENDED_UIMAGE + help + If your ARM system's Linux kernel is configured with the new + (3.7+) multi-architecture support (CONFIG_ARCH_MULTIPLATFORM=y + in your kernel config), then it is necessary to specify a + kernel load address when building the uImage. This should be a + hexadecimal string beginning with 0x, for example: 0x00008000. + + If unsure, let this option empty. + +config BR2_LINUX_KERNEL_DTS_SUPPORT + bool "Build a Device Tree Blob (DTB)" + help + Compile one or more device tree sources into device tree + blobs. + Select the dts files to compile in the options below. + +if BR2_LINUX_KERNEL_DTS_SUPPORT + +# We have mainly three cases when it comes to device tree support: +# 1) We don't want any support at all. Then the ..DTS_SUPPORT +# variable won't be set +# 2) We want device tree support, so we need the user to enter the +# device tree name or the path to the custom device he uses, but +# the kernel abstracts this from us and only build an image that +# looks like a regular kernel image. In this case, we only need +# to derive the kernel image name from the given device tree +# name, and all the rest is as usual +# 3) We want device tree support, but the kernel requires us to +# build the device tree blob separately. In this case, some +# more logic will be needed. +# The variable below address the second case, were you only want +# limited actions from buildroot. +config BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT + bool "DTB is built by kernel itself" + help + Normally, the device tree(s) to be built have to be passed + explicitly to the kernel build system. For some binary + formats, however, the kernel build system links in the + device tree directly in the kernel binary. Select this option + if you have such a kernel binary format. + +config BR2_LINUX_KERNEL_APPENDED_DTB + bool + +config BR2_LINUX_KERNEL_INTREE_DTS_NAME + string "In-tree Device Tree Source file names" + help + Name of in-tree device tree source file, without + the trailing .dts. You can provide a list of + dts files to build, separated by spaces. + +config BR2_LINUX_KERNEL_CUSTOM_DTS_PATH + string "Out-of-tree Device Tree Source file paths" + help + Paths to out-of-tree Device Tree Source (.dts) and Device Tree + Source Include (.dtsi) files, separated by spaces. These files + will be copied to the kernel sources and the .dts files will + be compiled from there. + +config BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME + bool "Keep the directory name of the Device Tree" + help + If enabled, the device tree blobs keep their + directory prefixes when they get copied to the + output image directory or the target directory. + +config BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT + bool "Build Device Tree with overlay support" + help + If enabled, pass the "-@" option to dtc, such that + symbols are generated in the compiled Device Tree. + Choose this option to support Device Tree overlays + on the target system. + +endif + +config BR2_LINUX_KERNEL_INSTALL_TARGET + bool "Install kernel image to /boot in target" + depends on !BR2_TARGET_ROOTFS_INITRAMFS + help + Select this option to have the kernel image installed to + /boot in the target root filesystem, as is typically done on + x86/x86_64 systems. + + Note that this option also installs the Device Tree Blobs to + /boot if DTBs have been generated by the kernel build + process. + +config BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL + bool "Needs host OpenSSL" + help + Some Linux kernel configuration options (such as + CONFIG_SYSTEM_TRUSTED_KEYRING) require building a host + program called extract-cert, which itself needs + OpenSSL. Enabling this option will ensure host-openssl gets + built before the Linux kernel. + + Enable this option if you get a Linux kernel build failure + such as "scripts/extract-cert.c:21:25: fatal error: + openssl/bio.h: No such file or directory". + +config BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF + bool "Needs host libelf" + help + Some Linux kernel configuration options (such as + CONFIG_UNWINDER_ORC) require building a host program that + needs libelf. Enabling this option will ensure host-elfutils + (which provides libelf) gets built before the Linux kernel. + + Enable this option if you get a Linux kernel build failure + such as "Cannot generate ORC metadata for + CONFIG_UNWINDER_ORC=y, please install libelf-dev, + libelf-devel or elfutils-libelf-devel". + +config BR2_LINUX_KERNEL_NEEDS_HOST_PAHOLE + bool "Needs host pahole" + help + Some Linux kernel configuration options (such as + CONFIG_DEBUG_INFO_BTF) require building a host program + called pahole. Enabling this option will ensure host-pahole + gets built before the Linux kernel. + + Enable this option if you get a Linux kernel build failure + such as "BTF: .tmp_vmlinux.btf: pahole (pahole) is not + available". + +# Linux extensions +source "linux/Config.ext.in" + +# Linux tools +source "package/linux-tools/Config.in" + +endif # BR2_LINUX_KERNEL + +endmenu diff --git a/linux/linux-ext-aufs.mk b/linux/linux-ext-aufs.mk new file mode 100644 index 00000000..d4bbb071 --- /dev/null +++ b/linux/linux-ext-aufs.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# Patch the linux kernel with aufs extension +# +################################################################################ + +LINUX_EXTENSIONS += aufs + +define AUFS_PREPARE_KERNEL + if test -d $(@D)/fs/aufs/; then \ + echo "Your kernel already supports AUFS."; \ + exit 1; \ + fi + $(APPLY_PATCHES) $(@D) $(AUFS_DIR) \ + aufs$(BR2_PACKAGE_AUFS_SERIES)-kbuild.patch \ + aufs$(BR2_PACKAGE_AUFS_SERIES)-base.patch \ + aufs$(BR2_PACKAGE_AUFS_SERIES)-mmap.patch \ + aufs$(BR2_PACKAGE_AUFS_SERIES)-standalone.patch + cp -r $(AUFS_DIR)/fs/aufs/ $(@D)/fs/ + cp $(AUFS_DIR)/include/uapi/linux/aufs_type.h $(@D)/include/uapi/linux/ +endef diff --git a/linux/linux-ext-ev3dev-linux-drivers.mk b/linux/linux-ext-ev3dev-linux-drivers.mk new file mode 100644 index 00000000..3bb12db3 --- /dev/null +++ b/linux/linux-ext-ev3dev-linux-drivers.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# Patch the linux kernel with ev3dev extension +# +################################################################################ + +LINUX_EXTENSIONS += ev3dev-linux-drivers + +define EV3DEV_LINUX_DRIVERS_PREPARE_KERNEL + mkdir -p $(LINUX_DIR)/drivers/lego + cp -dpfr $(EV3DEV_LINUX_DRIVERS_DIR)/* $(LINUX_DIR)/drivers/lego/ +endef diff --git a/linux/linux-ext-fbtft.mk b/linux/linux-ext-fbtft.mk new file mode 100644 index 00000000..cbc9c58e --- /dev/null +++ b/linux/linux-ext-fbtft.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# Patch the linux kernel with fbtft extension +# +################################################################################ + +LINUX_EXTENSIONS += fbtft + +# for linux >= 3.15 install to drivers/video/fbdev/fbtft +# for linux < 3.15 install to drivers/video/fbtft +define FBTFT_PREPARE_KERNEL + if [ -e $(LINUX_DIR)/drivers/video/fbdev ]; then \ + dest=drivers/video/fbdev ; \ + else \ + dest=drivers/video ; \ + fi ; \ + mkdir -p $(LINUX_DIR)/$${dest}/fbtft; \ + cp -dpfr $(FBTFT_DIR)/* $(LINUX_DIR)/$${dest}/fbtft/ ; \ + echo "source \"$${dest}/fbtft/Kconfig\"" \ + >> $(LINUX_DIR)/$${dest}/Kconfig ; \ + echo 'obj-y += fbtft/' >> $(LINUX_DIR)/$${dest}/Makefile +endef diff --git a/linux/linux-ext-rtai.mk b/linux/linux-ext-rtai.mk new file mode 100644 index 00000000..50f79f8d --- /dev/null +++ b/linux/linux-ext-rtai.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# Patch the linux kernel with RTAI extension +# +################################################################################ + +LINUX_EXTENSIONS += rtai + +ifeq ($(KERNEL_ARCH),i386) +RTAI_ARCH = x86 +else ifeq ($(KERNEL_ARCH),x86_64) +RTAI_ARCH = x86 +else ifeq ($(KERNEL_ARCH),powerpc) +RTAI_ARCH = ppc +else +RTAI_ARCH = $(KERNEL_ARCH) +endif + +# Prepare kernel patch +define RTAI_PREPARE_KERNEL + kver=`$(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) --no-print-directory -s kernelversion` ; \ + if test -f $(RTAI_DIR)/base/arch/$(RTAI_ARCH)/patches/hal-linux-$${kver}-*patch ; then \ + $(APPLY_PATCHES) $(LINUX_DIR) \ + $(RTAI_DIR)/base/arch/$(RTAI_ARCH)/patches/ \ + hal-linux-$${kver}-*patch ; \ + else \ + echo "No RTAI patch for your kernel version" ; \ + exit 1 ; \ + fi +endef diff --git a/linux/linux-ext-xenomai.mk b/linux/linux-ext-xenomai.mk new file mode 100644 index 00000000..5ec6891b --- /dev/null +++ b/linux/linux-ext-xenomai.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# Patch the linux kernel with Adeos/Xenomai extension +# +################################################################################ + +LINUX_EXTENSIONS += xenomai + +# Adeos patch version +XENOMAI_ADEOS_PATCH = $(call qstrip,$(BR2_LINUX_KERNEL_EXT_XENOMAI_ADEOS_PATCH)) + +ifneq ($(filter ftp://% http://% https://%,$(XENOMAI_ADEOS_PATCH)),) +XENOMAI_ADEOS_PATCH_NAME = $(notdir $(XENOMAI_ADEOS_PATCH)) +XENOMAI_ADEOS_PATCH_PATH = $(LINUX_DL_DIR)/$(XENOMAI_ADEOS_PATCH_NAME) +# check-package TypoInPackageVariable +LINUX_EXTRA_DOWNLOADS += $(XENOMAI_ADEOS_PATCH) +BR_NO_CHECK_HASH_FOR += $(XENOMAI_ADEOS_PATCH_NAME) +else +XENOMAI_ADEOS_PATCH_PATH = $(XENOMAI_ADEOS_PATCH) +endif + +ifeq ($(XENOMAI_ADEOS_PATCH),) +XENOMAI_ADEOS_OPTS = --default +else +XENOMAI_ADEOS_OPTS = --adeos=$(XENOMAI_ADEOS_PATCH_PATH) +endif + +# Prepare kernel patch +define XENOMAI_PREPARE_KERNEL + $(XENOMAI_DIR)/scripts/prepare-kernel.sh \ + --linux=$(LINUX_DIR) \ + --arch=$(KERNEL_ARCH) \ + $(XENOMAI_ADEOS_OPTS) \ + --verbose +endef diff --git a/linux/linux.hash b/linux/linux.hash new file mode 100644 index 00000000..ffc25f79 --- /dev/null +++ b/linux/linux.hash @@ -0,0 +1,18 @@ +# From https://www.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc +sha256 c0923235779d4606bba87f72b6fe11f796e9e40c1ca9f4d5dbe04cd47ee3c595 linux-6.10.8.tar.xz +sha256 2c56dac2b70859c16b4ef651befb0d28c227498bd3eee08e8a45a357f22dd3b7 linux-6.6.49.tar.xz +sha256 3f4e4e89a00e221a6dd1174779e0028794f44f4624ad6a31c79f3b7796688ca2 linux-6.1.108.tar.xz +# From https://www.kernel.org/pub/linux/kernel/v5.x/sha256sums.asc +sha256 e56caae259b85b7685ee589075d58bb7b227024497a60fa27a7b43e0b48839cf linux-5.15.166.tar.xz +sha256 85d7bf3a807538b9032e3f798ab978da9b77352bcb526534038c351a4f39e01c linux-5.10.225.tar.xz +sha256 250c6a3199b42a1cb1427c9bbeacf5d90fb91bcf9f227195f484a1c877e1f797 linux-5.4.283.tar.xz +# From https://www.kernel.org/pub/linux/kernel/v4.x/sha256sums.asc +sha256 f13aa1465a2578a910f64b65d743d167466edfb1e0671bc70fa2328cb66b06d9 linux-4.19.321.tar.xz +# Locally computed +sha256 fb0edc3c18e47d2b6974cb0880a0afb5c3fa08f50ee87dfdf24349405ea5f8ae linux-cip-5.10.162-cip24.tar.gz +sha256 b5539243f187e3d478d76d44ae13aab83952c94b885ad889df6fa9997e16a441 linux-cip-5.10.162-cip24-rt10.tar.gz + +# Licenses hashes +sha256 fb5a425bd3b3cd6071a3a9aff9909a859e7c1158d54d32e07658398cd67eb6a0 COPYING +sha256 f6b78c087c3ebdf0f3c13415070dd480a3f35d8fc76f3d02180a407c1c812f79 LICENSES/preferred/GPL-2.0 +sha256 8e378ab93586eb55135d3bc119cce787f7324f48394777d00c34fa3d0be3303f LICENSES/exceptions/Linux-syscall-note diff --git a/linux/linux.mk b/linux/linux.mk new file mode 100644 index 00000000..16d9f194 --- /dev/null +++ b/linux/linux.mk @@ -0,0 +1,665 @@ +################################################################################ +# +# Linux kernel target +# +################################################################################ + +LINUX_VERSION = $(call qstrip,$(BR2_LINUX_KERNEL_VERSION)) +LINUX_LICENSE = GPL-2.0 +ifeq ($(BR2_LINUX_KERNEL_LATEST_VERSION),y) +LINUX_LICENSE_FILES = \ + COPYING \ + LICENSES/preferred/GPL-2.0 \ + LICENSES/exceptions/Linux-syscall-note +endif +LINUX_CPE_ID_VENDOR = linux +LINUX_CPE_ID_PRODUCT = linux_kernel +LINUX_CPE_ID_PREFIX = cpe:2.3:o + +# Compute LINUX_SOURCE and LINUX_SITE from the configuration +ifeq ($(BR2_LINUX_KERNEL_CUSTOM_TARBALL),y) +LINUX_TARBALL = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION)) +LINUX_SITE = $(patsubst %/,%,$(dir $(LINUX_TARBALL))) +LINUX_SOURCE = $(notdir $(LINUX_TARBALL)) +else ifeq ($(BR2_LINUX_KERNEL_CUSTOM_GIT),y) +LINUX_SITE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL)) +LINUX_SITE_METHOD = git +ifeq ($(BR2_LINUX_KERNEL_CUSTOM_REPO_GIT_SUBMODULES),y) +LINUX_GIT_SUBMODULES = YES +endif +else ifeq ($(BR2_LINUX_KERNEL_CUSTOM_HG),y) +LINUX_SITE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL)) +LINUX_SITE_METHOD = hg +else ifeq ($(BR2_LINUX_KERNEL_CUSTOM_SVN),y) +LINUX_SITE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL)) +LINUX_SITE_METHOD = svn +else ifeq ($(BR2_LINUX_KERNEL_LATEST_CIP_VERSION)$(BR2_LINUX_KERNEL_LATEST_CIP_RT_VERSION),y) +LINUX_SOURCE = linux-cip-$(LINUX_VERSION).tar.gz +LINUX_SITE = https://git.kernel.org/pub/scm/linux/kernel/git/cip/linux-cip.git/snapshot +else ifneq ($(findstring -rc,$(LINUX_VERSION)),) +# Since 4.12-rc1, -rc kernels are generated from cgit. This also works for +# older -rc kernels. +LINUX_SITE = https://git.kernel.org/torvalds/t +else +LINUX_SOURCE = linux-$(LINUX_VERSION).tar.xz +ifeq ($(findstring x2.6.,x$(LINUX_VERSION)),x2.6.) +LINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v2.6 +else +LINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v$(firstword $(subst ., ,$(LINUX_VERSION))).x +endif +endif + +ifeq ($(BR2_LINUX_KERNEL)$(BR2_LINUX_KERNEL_LATEST_VERSION),y) +BR_NO_CHECK_HASH_FOR += $(LINUX_SOURCE) +endif + +LINUX_PATCHES = $(call qstrip,$(BR2_LINUX_KERNEL_PATCH)) + +# We have no way to know the hashes for user-supplied patches. +BR_NO_CHECK_HASH_FOR += $(notdir $(LINUX_PATCHES)) + +# We rely on the generic package infrastructure to download and apply +# remote patches (downloaded from ftp, http or https). For local +# patches, we can't rely on that infrastructure, because there might +# be directories in the patch list (unlike for other packages). +LINUX_PATCH = $(filter ftp://% http://% https://%,$(LINUX_PATCHES)) + +# while the kernel is built for the target, the build may need various +# host libraries depending on config (and version), so use +# HOST_MAKE_ENV here. In particular, this ensures that our +# host-pkgconf will look for host libraries and not target ones. +LINUX_MAKE_ENV = \ + $(HOST_MAKE_ENV) \ + BR_BINARIES_DIR=$(BINARIES_DIR) + +LINUX_INSTALL_IMAGES = YES +LINUX_DEPENDENCIES = \ + host-kmod \ + $(BR2_MAKE_HOST_DEPENDENCY) +LINUX_MAKE = $(BR2_MAKE) + +# The kernel CONFIG_EXTRA_FIRMWARE feature requires firmware files at build +# time. Make sure they are available before the kernel builds. +LINUX_DEPENDENCIES += \ + $(if $(BR2_PACKAGE_INTEL_MICROCODE),intel-microcode) \ + $(if $(BR2_PACKAGE_LINUX_FIRMWARE),linux-firmware) \ + $(if $(BR2_PACKAGE_FIRMWARE_IMX),firmware-imx) \ + $(if $(BR2_PACKAGE_WIRELESS_REGDB),wireless-regdb) + +# Starting with 4.16, the generated kconfig paser code is no longer +# shipped with the kernel sources, so we need flex and bison, but +# only if the host does not have them. +LINUX_KCONFIG_DEPENDENCIES = \ + $(BR2_BISON_HOST_DEPENDENCY) \ + $(BR2_FLEX_HOST_DEPENDENCY) \ + $(BR2_MAKE_HOST_DEPENDENCY) + +# Starting with 4.18, the kconfig in the kernel calls the +# cross-compiler to check its capabilities. So we need the +# toolchain before we can call the configurators. +LINUX_KCONFIG_DEPENDENCIES += toolchain + +# host tools needed for kernel compression +ifeq ($(BR2_LINUX_KERNEL_LZ4),y) +LINUX_DEPENDENCIES += host-lz4 +else ifeq ($(BR2_LINUX_KERNEL_LZMA),y) +LINUX_DEPENDENCIES += host-lzma +else ifeq ($(BR2_LINUX_KERNEL_LZO),y) +LINUX_DEPENDENCIES += host-lzop +else ifeq ($(BR2_LINUX_KERNEL_XZ),y) +LINUX_DEPENDENCIES += host-xz +else ifeq ($(BR2_LINUX_KERNEL_ZSTD),y) +LINUX_DEPENDENCIES += host-zstd +endif +LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_GZIP) += CONFIG_KERNEL_GZIP +LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZ4) += CONFIG_KERNEL_LZ4 +LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZMA) += CONFIG_KERNEL_LZMA +LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZO) += CONFIG_KERNEL_LZO +LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_XZ) += CONFIG_KERNEL_XZ +LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_ZSTD) += CONFIG_KERNEL_ZSTD +LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_UNCOMPRESSED) += CONFIG_KERNEL_UNCOMPRESSED + +ifeq ($(BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL),y) +LINUX_DEPENDENCIES += host-openssl +endif + +ifeq ($(BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF),y) +LINUX_DEPENDENCIES += host-elfutils host-pkgconf +endif + +ifeq ($(BR2_LINUX_KERNEL_NEEDS_HOST_PAHOLE),y) +LINUX_DEPENDENCIES += host-pahole +else +define LINUX_FIXUP_CONFIG_PAHOLE_CHECK + $(Q)if grep -q "^CONFIG_DEBUG_INFO_BTF=y" $(KCONFIG_DOT_CONFIG); then \ + echo "To use CONFIG_DEBUG_INFO_BTF, enable host-pahole (BR2_LINUX_KERNEL_NEEDS_HOST_PAHOLE)" 1>&2; \ + exit 1; \ + fi +endef +endif + +# If host-uboot-tools is selected by the user, assume it is needed to +# create a custom image +ifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS),y) +LINUX_DEPENDENCIES += host-uboot-tools +endif + +ifneq ($(ARCH_XTENSA_OVERLAY_FILE),) +define LINUX_XTENSA_OVERLAY_EXTRACT + $(call arch-xtensa-overlay-extract,$(@D),linux) +endef +LINUX_POST_EXTRACT_HOOKS += LINUX_XTENSA_OVERLAY_EXTRACT +LINUX_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL) +endif + +# We don't want to run depmod after installing the kernel. It's done in a +# target-finalize hook, to encompass modules installed by packages. +# Disable building host tools with -Werror: newer gcc versions can be +# extra picky about some code (https://bugs.busybox.net/show_bug.cgi?id=14826) +LINUX_MAKE_FLAGS = \ + HOSTCC="$(HOSTCC) $(subst -I/,-isystem /,$(subst -I /,-isystem /,$(HOST_CFLAGS))) $(HOST_LDFLAGS)" \ + ARCH=$(KERNEL_ARCH) \ + INSTALL_MOD_PATH=$(TARGET_DIR) \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + WERROR=0 \ + REGENERATE_PARSERS=1 \ + DEPMOD=$(HOST_DIR)/sbin/depmod + +ifeq ($(BR2_REPRODUCIBLE),y) +LINUX_MAKE_ENV += \ + KBUILD_BUILD_VERSION=1 \ + KBUILD_BUILD_USER=buildroot \ + KBUILD_BUILD_HOST=buildroot \ + KBUILD_BUILD_TIMESTAMP="$(shell LC_ALL=C TZ='UTC' date -d @$(SOURCE_DATE_EPOCH))" +endif + +# gcc-8 started warning about function aliases that have a +# non-matching prototype. This seems rather useful in general, but it +# causes tons of warnings in the Linux kernel, where we rely on +# abusing those aliases for system call entry points, in order to +# sanitize the arguments passed from user space in registers. +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82435 +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_8),y) +LINUX_MAKE_ENV += KCFLAGS=-Wno-attribute-alias +endif + +ifeq ($(BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT),y) +LINUX_MAKE_ENV += DTC_FLAGS=-@ +endif + +# Get the real Linux version, which tells us where kernel modules are +# going to be installed in the target filesystem. +# Filter out 'w' from MAKEFLAGS, to workaround a bug in make 4.1 (#13141) +LINUX_VERSION_PROBED = `MAKEFLAGS='$(filter-out w,$(MAKEFLAGS))' $(BR2_MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) --no-print-directory -s kernelrelease 2>/dev/null` + +LINUX_DTS_NAME += $(call qstrip,$(BR2_LINUX_KERNEL_INTREE_DTS_NAME)) + +# We keep only the .dts files, so that the user can specify both .dts +# and .dtsi files in BR2_LINUX_KERNEL_CUSTOM_DTS_PATH. Both will be +# copied to arch//boot/dts, but only the .dts files will +# actually be generated as .dtb. +LINUX_DTS_NAME += $(basename $(filter %.dts,$(notdir $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_DTS_PATH))))) + +LINUX_DTBS = $(addsuffix .dtb,$(LINUX_DTS_NAME)) + +ifeq ($(BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM),y) +LINUX_IMAGE_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_NAME)) +LINUX_TARGET_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_TARGET_NAME)) +ifeq ($(LINUX_IMAGE_NAME),) +LINUX_IMAGE_NAME = $(LINUX_TARGET_NAME) +endif +else +ifeq ($(BR2_LINUX_KERNEL_UIMAGE),y) +LINUX_IMAGE_NAME = uImage +else ifeq ($(BR2_LINUX_KERNEL_APPENDED_UIMAGE),y) +LINUX_IMAGE_NAME = uImage +else ifeq ($(BR2_LINUX_KERNEL_BZIMAGE),y) +LINUX_IMAGE_NAME = bzImage +else ifeq ($(BR2_LINUX_KERNEL_ZIMAGE),y) +LINUX_IMAGE_NAME = zImage +else ifeq ($(BR2_LINUX_KERNEL_ZIMAGE_EPAPR),y) +LINUX_IMAGE_NAME = zImage.epapr +else ifeq ($(BR2_LINUX_KERNEL_APPENDED_ZIMAGE),y) +LINUX_IMAGE_NAME = zImage +else ifeq ($(BR2_LINUX_KERNEL_CUIMAGE),y) +LINUX_IMAGE_NAME = cuImage.$(firstword $(LINUX_DTS_NAME)) +else ifeq ($(BR2_LINUX_KERNEL_SIMPLEIMAGE),y) +LINUX_IMAGE_NAME = simpleImage.$(firstword $(LINUX_DTS_NAME)) +else ifeq ($(BR2_LINUX_KERNEL_IMAGE),y) +LINUX_IMAGE_NAME = Image +else ifeq ($(BR2_LINUX_KERNEL_IMAGEGZ),y) +LINUX_IMAGE_NAME = Image.gz +else ifeq ($(BR2_LINUX_KERNEL_LINUX_BIN),y) +LINUX_IMAGE_NAME = linux.bin +else ifeq ($(BR2_LINUX_KERNEL_VMLINUX_BIN),y) +LINUX_IMAGE_NAME = vmlinux.bin +else ifeq ($(BR2_LINUX_KERNEL_VMLINUX),y) +LINUX_IMAGE_NAME = vmlinux +else ifeq ($(BR2_LINUX_KERNEL_VMLINUZ),y) +LINUX_IMAGE_NAME = vmlinuz +else ifeq ($(BR2_LINUX_KERNEL_VMLINUZ_BIN),y) +LINUX_IMAGE_NAME = vmlinuz.bin +endif +# The if-else blocks above are all the image types we know of, and all +# come from a Kconfig choice, so we know we have LINUX_IMAGE_NAME set +# to something +LINUX_TARGET_NAME = $(LINUX_IMAGE_NAME) +endif + +LINUX_KERNEL_UIMAGE_LOADADDR = $(call qstrip,$(BR2_LINUX_KERNEL_UIMAGE_LOADADDR)) +ifneq ($(LINUX_KERNEL_UIMAGE_LOADADDR),) +LINUX_MAKE_FLAGS += LOADADDR="$(LINUX_KERNEL_UIMAGE_LOADADDR)" +endif + +# Compute the arch path, since i386 and x86_64 are in arch/x86 and not +# in arch/$(KERNEL_ARCH). Even if the kernel creates symbolic links +# for bzImage, arch/i386 and arch/x86_64 do not exist when copying the +# defconfig file. +ifeq ($(KERNEL_ARCH),i386) +LINUX_ARCH_PATH = $(LINUX_DIR)/arch/x86 +else ifeq ($(KERNEL_ARCH),x86_64) +LINUX_ARCH_PATH = $(LINUX_DIR)/arch/x86 +else ifeq ($(KERNEL_ARCH),sparc64) +LINUX_ARCH_PATH = $(LINUX_DIR)/arch/sparc +else +LINUX_ARCH_PATH = $(LINUX_DIR)/arch/$(KERNEL_ARCH) +endif + +ifeq ($(BR2_LINUX_KERNEL_VMLINUX),y) +LINUX_IMAGE_PATH = $(LINUX_DIR)/$(LINUX_IMAGE_NAME) +else ifeq ($(BR2_LINUX_KERNEL_VMLINUZ),y) +LINUX_IMAGE_PATH = $(LINUX_DIR)/$(LINUX_IMAGE_NAME) +else ifeq ($(BR2_LINUX_KERNEL_VMLINUZ_BIN),y) +LINUX_IMAGE_PATH = $(LINUX_DIR)/$(LINUX_IMAGE_NAME) +else +LINUX_IMAGE_PATH = $(LINUX_ARCH_PATH)/boot/$(LINUX_IMAGE_NAME) +endif # BR2_LINUX_KERNEL_VMLINUX + +define LINUX_APPLY_LOCAL_PATCHES + for p in $(filter-out ftp://% http://% https://%,$(LINUX_PATCHES)) ; do \ + if test -d $$p ; then \ + $(APPLY_PATCHES) $(@D) $$p \*.patch || exit 1 ; \ + else \ + $(APPLY_PATCHES) $(@D) `dirname $$p` `basename $$p` || exit 1; \ + fi \ + done +endef + +LINUX_POST_PATCH_HOOKS += LINUX_APPLY_LOCAL_PATCHES + +# Older versions break on gcc 10+ because of redefined symbols +define LINUX_DROP_YYLLOC + $(Q)grep -Z -l -r -E '^YYLTYPE yylloc;$$' $(@D) \ + |xargs -0 -r $(SED) '/^YYLTYPE yylloc;$$/d' +endef +LINUX_POST_PATCH_HOOKS += LINUX_DROP_YYLLOC + +# Kernel version < 5.6 breaks if host-gcc version is >= 10 and +# 'yylloc' symbol is removed in previous hook, due to missing +# '%locations' bison directive in dtc-parser.y. See: +# https://bugs.busybox.net/show_bug.cgi?id=14971 +define LINUX_ADD_DTC_LOCATIONS + $(Q)DTC_PARSER=$(@D)/scripts/dtc/dtc-parser.y; \ + if test -e "$${DTC_PARSER}" \ + && ! grep -Eq '^%locations$$' "$${DTC_PARSER}" ; then \ + $(SED) '/^%{$$/i %locations' "$${DTC_PARSER}"; \ + fi +endef +LINUX_POST_PATCH_HOOKS += LINUX_ADD_DTC_LOCATIONS + +# Older linux kernels use deprecated perl constructs in timeconst.pl +# that were removed for perl 5.22+ so it breaks on newer distributions +# Try a dry-run patch to see if this applies, if it does go ahead +define LINUX_TRY_PATCH_TIMECONST + @if patch -p1 --dry-run -f -s -d $(@D) <$(LINUX_PKGDIR)/0001-timeconst.pl-Eliminate-Perl-warning.patch.conditional >/dev/null ; then \ + $(APPLY_PATCHES) $(@D) $(LINUX_PKGDIR) 0001-timeconst.pl-Eliminate-Perl-warning.patch.conditional ; \ + fi +endef +LINUX_POST_PATCH_HOOKS += LINUX_TRY_PATCH_TIMECONST + +LINUX_KERNEL_CUSTOM_LOGO_PATH = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_LOGO_PATH)) +ifneq ($(LINUX_KERNEL_CUSTOM_LOGO_PATH),) +LINUX_DEPENDENCIES += host-imagemagick +define LINUX_KERNEL_CUSTOM_LOGO_CONVERT + $(HOST_DIR)/bin/convert $(LINUX_KERNEL_CUSTOM_LOGO_PATH) \ + -dither None -colors 224 -compress none \ + $(LINUX_DIR)/drivers/video/logo/logo_linux_clut224.ppm +endef +LINUX_PRE_BUILD_HOOKS += LINUX_KERNEL_CUSTOM_LOGO_CONVERT +endif + +ifeq ($(BR2_LINUX_KERNEL_USE_DEFCONFIG),y) +LINUX_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_LINUX_KERNEL_DEFCONFIG))_defconfig +else ifeq ($(BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG),y) +ifeq ($(BR2_powerpc64le),y) +LINUX_KCONFIG_DEFCONFIG = ppc64le_defconfig +else +LINUX_KCONFIG_DEFCONFIG = defconfig +endif +else ifeq ($(BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG),y) +LINUX_KCONFIG_FILE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE)) +endif +LINUX_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES)) +LINUX_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig + +# LINUX_MAKE_FLAGS overrides HOSTCC to allow the kernel build to find +# our host-openssl and host-libelf. However, this triggers a bug in +# the kconfig build script that causes it to build with +# /usr/include/ncurses.h (which is typically wchar) but link with +# $(HOST_DIR)/lib/libncurses.so (which is not). We don't actually +# need any host-package for kconfig, so remove the HOSTCC override +# again. In addition, even though linux depends on the toolchain and +# therefore host-ccache would be ready, we use HOSTCC_NOCCACHE for +# consistency with other kconfig packages. +LINUX_KCONFIG_OPTS = $(LINUX_MAKE_FLAGS) HOSTCC="$(HOSTCC_NOCCACHE)" + +# If no package has yet set it, set it from the Kconfig option +LINUX_NEEDS_MODULES ?= $(BR2_LINUX_NEEDS_MODULES) + +# Make sure the Linux kernel is built with the right endianness. Not +# all architectures support +# CONFIG_CPU_BIG_ENDIAN/CONFIG_CPU_LITTLE_ENDIAN in Linux, but the +# option will be thrown away and ignored if it doesn't exist. +ifeq ($(BR2_ENDIAN),"BIG") +define LINUX_FIXUP_CONFIG_ENDIANNESS + $(call KCONFIG_ENABLE_OPT,CONFIG_CPU_BIG_ENDIAN) +endef +else +define LINUX_FIXUP_CONFIG_ENDIANNESS + $(call KCONFIG_ENABLE_OPT,CONFIG_CPU_LITTLE_ENDIAN) +endef +endif + +# As the kernel gets compiled before root filesystems are +# built, we create a fake cpio file. It'll be +# replaced later by the real cpio archive, and the kernel will be +# rebuilt using the linux-rebuild-with-initramfs target. +ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y) +define LINUX_KCONFIG_FIXUP_CMDS_ROOTFS_CPIO + @mkdir -p $(BINARIES_DIR) + $(Q)touch $(BINARIES_DIR)/rootfs.cpio + $(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_SOURCE,"$${BR_BINARIES_DIR}/rootfs.cpio") + $(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_ROOT_UID,0) + $(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_ROOT_GID,0) +endef +endif + +define LINUX_KCONFIG_FIXUP_CMDS + @$(call MESSAGE,"Updating kernel config with fixups") + $(if $(LINUX_NEEDS_MODULES), + $(call KCONFIG_ENABLE_OPT,CONFIG_MODULES)) + $(call KCONFIG_ENABLE_OPT,$(strip $(LINUX_COMPRESSION_OPT_y))) + $(foreach opt, $(LINUX_COMPRESSION_OPT_), + $(call KCONFIG_DISABLE_OPT,$(opt)) + ) + $(LINUX_FIXUP_CONFIG_ENDIANNESS) + $(LINUX_FIXUP_CONFIG_PAHOLE_CHECK) + $(if $(BR2_arm)$(BR2_armeb), + $(call KCONFIG_ENABLE_OPT,CONFIG_AEABI)) + $(if $(BR2_powerpc)$(BR2_powerpc64)$(BR2_powerpc64le), + $(call KCONFIG_ENABLE_OPT,CONFIG_PPC_DISABLE_WERROR)) + $(if $(BR2_ARC_PAGE_SIZE_4K), + $(call KCONFIG_ENABLE_OPT,CONFIG_ARC_PAGE_SIZE_4K) + $(call KCONFIG_DISABLE_OPT,CONFIG_ARC_PAGE_SIZE_8K) + $(call KCONFIG_DISABLE_OPT,CONFIG_ARC_PAGE_SIZE_16K)) + $(if $(BR2_ARC_PAGE_SIZE_8K), + $(call KCONFIG_DISABLE_OPT,CONFIG_ARC_PAGE_SIZE_4K) + $(call KCONFIG_ENABLE_OPT,CONFIG_ARC_PAGE_SIZE_8K) + $(call KCONFIG_DISABLE_OPT,CONFIG_ARC_PAGE_SIZE_16K)) + $(if $(BR2_ARC_PAGE_SIZE_16K), + $(call KCONFIG_DISABLE_OPT,CONFIG_ARC_PAGE_SIZE_4K) + $(call KCONFIG_DISABLE_OPT,CONFIG_ARC_PAGE_SIZE_8K) + $(call KCONFIG_ENABLE_OPT,CONFIG_ARC_PAGE_SIZE_16K)) + $(if $(BR2_ARM64_PAGE_SIZE_4K), + $(call KCONFIG_ENABLE_OPT,CONFIG_ARM64_4K_PAGES) + $(call KCONFIG_DISABLE_OPT,CONFIG_ARM64_16K_PAGES) + $(call KCONFIG_DISABLE_OPT,CONFIG_ARM64_64K_PAGES)) + $(if $(BR2_ARM64_PAGE_SIZE_16K), + $(call KCONFIG_DISABLE_OPT,CONFIG_ARM64_4K_PAGES) + $(call KCONFIG_ENABLE_OPT,CONFIG_ARM64_16K_PAGES) + $(call KCONFIG_DISABLE_OPT,CONFIG_ARM64_64K_PAGES)) + $(if $(BR2_ARM64_PAGE_SIZE_64K), + $(call KCONFIG_DISABLE_OPT,CONFIG_ARM64_4K_PAGES) + $(call KCONFIG_DISABLE_OPT,CONFIG_ARM64_16K_PAGES) + $(call KCONFIG_ENABLE_OPT,CONFIG_ARM64_64K_PAGES)) + $(if $(BR2_TARGET_ROOTFS_CPIO), + $(call KCONFIG_ENABLE_OPT,CONFIG_BLK_DEV_INITRD)) + $(LINUX_KCONFIG_FIXUP_CMDS_ROOTFS_CPIO) + $(if $(BR2_ROOTFS_DEVICE_CREATION_STATIC),, + $(call KCONFIG_ENABLE_OPT,CONFIG_DEVTMPFS) + $(call KCONFIG_ENABLE_OPT,CONFIG_DEVTMPFS_MOUNT)) + $(if $(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV), + $(call KCONFIG_ENABLE_OPT,CONFIG_INOTIFY_USER)) + $(if $(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV), + $(call KCONFIG_ENABLE_OPT,CONFIG_NET)) + $(if $(BR2_LINUX_KERNEL_APPENDED_DTB), + $(call KCONFIG_ENABLE_OPT,CONFIG_ARM_APPENDED_DTB)) + $(if $(LINUX_KERNEL_CUSTOM_LOGO_PATH), + $(call KCONFIG_ENABLE_OPT,CONFIG_FB) + $(call KCONFIG_ENABLE_OPT,CONFIG_LOGO) + $(call KCONFIG_ENABLE_OPT,CONFIG_LOGO_LINUX_CLUT224)) + $(call KCONFIG_DISABLE_OPT,CONFIG_GCC_PLUGINS) + $(call KCONFIG_DISABLE_OPT,CONFIG_WERROR) + $(PACKAGES_LINUX_CONFIG_FIXUPS) +endef + +ifeq ($(BR2_LINUX_KERNEL_DTS_SUPPORT),y) +# Starting with 4.17, the generated dtc parser code is no longer +# shipped with the kernel sources, so we need flex and bison. For +# reproducibility, we use our owns rather than the host ones. +LINUX_DEPENDENCIES += host-bison host-flex + +ifeq ($(BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT),) +define LINUX_BUILD_DTB + $(LINUX_MAKE_ENV) $(BR2_MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_DTBS) +endef +ifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),) +define LINUX_INSTALL_DTB + # dtbs moved from arch//boot to arch//boot/dts since 3.8-rc1 + $(foreach dtb,$(LINUX_DTBS), \ + install -D \ + $(or $(wildcard $(LINUX_ARCH_PATH)/boot/dts/$(dtb)),$(LINUX_ARCH_PATH)/boot/$(dtb)) \ + $(1)/$(if $(BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME),$(dtb),$(notdir $(dtb))) + ) +endef +endif # BR2_LINUX_KERNEL_APPENDED_DTB +endif # BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT +endif # BR2_LINUX_KERNEL_DTS_SUPPORT + +ifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),y) +# dtbs moved from arch/$ARCH/boot to arch/$ARCH/boot/dts since 3.8-rc1 +define LINUX_APPEND_DTB + (cd $(LINUX_ARCH_PATH)/boot; \ + for dtb in $(LINUX_DTS_NAME); do \ + if test -e $${dtb}.dtb ; then \ + dtbpath=$${dtb}.dtb ; \ + else \ + dtbpath=dts/$${dtb}.dtb ; \ + fi ; \ + cat zImage $${dtbpath} > zImage.$$(basename $${dtb}) || exit 1; \ + done) +endef +ifeq ($(BR2_LINUX_KERNEL_APPENDED_UIMAGE),y) +# We need to generate a new u-boot image that takes into +# account the extra-size added by the device tree at the end +# of the image. To do so, we first need to retrieve both load +# address and entry point for the kernel from the already +# generate uboot image before using mkimage -l. +LINUX_APPEND_DTB += ; \ + MKIMAGE_ARGS=`$(MKIMAGE) -l $(LINUX_IMAGE_PATH) |\ + sed -n -e 's/Image Name:[ ]*\(.*\)/-n \1/p' -e 's/Load Address:/-a/p' -e 's/Entry Point:/-e/p'`; \ + for dtb in $(LINUX_DTS_NAME); do \ + $(MKIMAGE) -A $(MKIMAGE_ARCH) -O linux \ + -T kernel -C none $${MKIMAGE_ARGS} \ + -d $(LINUX_ARCH_PATH)/boot/zImage.$${dtb} $(LINUX_IMAGE_PATH).$${dtb}; \ + done +endif +endif + +# Compilation. We make sure the kernel gets rebuilt when the +# configuration has changed. We call the 'all' and +# '$(LINUX_TARGET_NAME)' targets separately because calling them in +# the same $(BR2_MAKE) invocation has shown to cause parallel build +# issues. +# The call to disable gcc-plugins is a stop-gap measure: +# http://lists.busybox.net/pipermail/buildroot/2020-May/282727.html +define LINUX_BUILD_CMDS + $(call KCONFIG_DISABLE_OPT,CONFIG_GCC_PLUGINS) + $(foreach dts,$(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_DTS_PATH)), \ + cp -f $(dts) $(LINUX_ARCH_PATH)/boot/dts/ + ) + $(LINUX_MAKE_ENV) $(BR2_MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) all + $(LINUX_MAKE_ENV) $(BR2_MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_TARGET_NAME) + $(LINUX_BUILD_DTB) + $(LINUX_APPEND_DTB) +endef + +ifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),y) +# When a DTB was appended, install the potential several images with +# appended DTBs. +define LINUX_INSTALL_IMAGE + mkdir -p $(1) + cp $(LINUX_ARCH_PATH)/boot/$(LINUX_IMAGE_NAME).* $(1) +endef +else +# Otherwise, just install the unique image generated by the kernel +# build process. +define LINUX_INSTALL_IMAGE + $(INSTALL) -m 0644 -D $(LINUX_IMAGE_PATH) $(1)/$(notdir $(LINUX_IMAGE_NAME)) +endef +endif + +ifeq ($(BR2_LINUX_KERNEL_INSTALL_TARGET),y) +define LINUX_INSTALL_KERNEL_IMAGE_TO_TARGET + $(call LINUX_INSTALL_IMAGE,$(TARGET_DIR)/boot) + $(call LINUX_INSTALL_DTB,$(TARGET_DIR)/boot) +endef +endif + +define LINUX_INSTALL_HOST_TOOLS + # Installing dtc (device tree compiler) as host tool, if selected + if grep -q "CONFIG_DTC=y" $(@D)/.config; then \ + $(INSTALL) -D -m 0755 $(@D)/scripts/dtc/dtc $(HOST_DIR)/bin/linux-dtc ; \ + $(if $(BR2_PACKAGE_HOST_DTC),,ln -sf linux-dtc $(HOST_DIR)/bin/dtc;) \ + fi +endef + +define LINUX_INSTALL_IMAGES_CMDS + $(call LINUX_INSTALL_IMAGE,$(BINARIES_DIR)) + $(call LINUX_INSTALL_DTB,$(BINARIES_DIR)) +endef + +ifeq ($(BR2_STRIP_strip),y) +LINUX_MAKE_FLAGS += INSTALL_MOD_STRIP=1 +endif + +define LINUX_INSTALL_TARGET_CMDS + $(LINUX_INSTALL_KERNEL_IMAGE_TO_TARGET) + # Install modules and remove symbolic links pointing to build + # directories, not relevant on the target + @if grep -q "CONFIG_MODULES=y" $(@D)/.config; then \ + $(LINUX_MAKE_ENV) $(BR2_MAKE1) $(LINUX_MAKE_FLAGS) -C $(@D) modules_install; \ + rm -f $(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED)/build ; \ + rm -f $(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED)/source ; \ + fi + $(LINUX_INSTALL_HOST_TOOLS) +endef + +# Run depmod in a target-finalize hook, to encompass modules installed by +# packages. +define LINUX_RUN_DEPMOD + if test -d $(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED) \ + && grep -q "CONFIG_MODULES=y" $(LINUX_DIR)/.config; then \ + $(HOST_DIR)/sbin/depmod -a -b $(TARGET_DIR) $(LINUX_VERSION_PROBED); \ + fi +endef +LINUX_TARGET_FINALIZE_HOOKS += LINUX_RUN_DEPMOD + +# Include all our extensions. +# +# Note: our package infrastructure uses the full-path of the last-scanned +# Makefile to determine what package we're currently defining, using the +# last directory component in the path. Additionally, the full path of +# the package directory is also stored in _PKGDIR (e.g. to find patches) +# +# As such, including other Makefiles, like below, before we call one of +# the *-package macros usually doesn't work. +# +# However, by including the in-tree extensions after the ones from the +# br2-external trees, we're back to the situation where the last Makefile +# scanned *is* included from the correct directory. +# +# NOTE: this is very fragile, and extra care must be taken to ensure that +# we always end up with an in-tree included file. That's mostly OK, because +# we do have in-tree linux-extensions. +# +include $(sort $(wildcard $(foreach ext,$(BR2_EXTERNAL_DIRS), \ + $(ext)/linux/linux-ext-*.mk))) +include $(sort $(wildcard linux/linux-ext-*.mk)) + +LINUX_PATCH_DEPENDENCIES += $(foreach ext,$(LINUX_EXTENSIONS),\ + $(if $(BR2_LINUX_KERNEL_EXT_$(call UPPERCASE,$(ext))),$(ext))) + +LINUX_PRE_PATCH_HOOKS += $(foreach ext,$(LINUX_EXTENSIONS),\ + $(if $(BR2_LINUX_KERNEL_EXT_$(call UPPERCASE,$(ext))),\ + $(call UPPERCASE,$(ext))_PREPARE_KERNEL)) + +# Checks to give errors that the user can understand + +# When a custom repository has been set, check for the repository version +ifeq ($(BR2_LINUX_KERNEL_CUSTOM_SVN)$(BR2_LINUX_KERNEL_CUSTOM_GIT)$(BR2_LINUX_KERNEL_CUSTOM_HG),y) +ifeq ($(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION)),) +$(error No custom repository version set. Check your BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION setting) +endif +ifeq ($(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL)),) +$(error No custom repo URL set. Check your BR2_LINUX_KERNEL_CUSTOM_REPO_URL setting) +endif +endif + +ifeq ($(BR_BUILDING),y) + +ifeq ($(BR2_LINUX_KERNEL_CUSTOM_VERSION),y) +ifeq ($(LINUX_VERSION),) +$(error No custom kernel version set. Check your BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE setting) +endif +endif + +ifeq ($(BR2_LINUX_KERNEL_USE_DEFCONFIG),y) +# We must use the user-supplied kconfig value, because +# LINUX_KCONFIG_DEFCONFIG will at least contain the +# trailing _defconfig +ifeq ($(call qstrip,$(BR2_LINUX_KERNEL_DEFCONFIG)),) +$(error No kernel defconfig name specified, check your BR2_LINUX_KERNEL_DEFCONFIG setting) +endif +endif + +ifeq ($(BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG),y) +ifeq ($(LINUX_KCONFIG_FILE),) +$(error No kernel configuration file specified, check your BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE setting) +endif +endif + +ifeq ($(BR2_LINUX_KERNEL_DTS_SUPPORT):$(strip $(LINUX_DTS_NAME)),y:) +$(error No kernel device tree source specified, check your \ + BR2_LINUX_KERNEL_INTREE_DTS_NAME / BR2_LINUX_KERNEL_CUSTOM_DTS_PATH settings) +endif + +endif # BR_BUILDING + +$(eval $(kconfig-package)) + +# Support for rebuilding the kernel after the cpio archive has +# been generated. +.PHONY: linux-rebuild-with-initramfs +linux-rebuild-with-initramfs: $(LINUX_DIR)/.stamp_target_installed +linux-rebuild-with-initramfs: $(LINUX_DIR)/.stamp_images_installed +linux-rebuild-with-initramfs: rootfs-cpio +linux-rebuild-with-initramfs: + @$(call MESSAGE,"Rebuilding kernel with initramfs") + # Build the kernel. + $(LINUX_MAKE_ENV) $(BR2_MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) $(LINUX_TARGET_NAME) + $(LINUX_APPEND_DTB) + # Copy the kernel image(s) to its(their) final destination + $(call LINUX_INSTALL_IMAGE,$(BINARIES_DIR)) + # If there is a .ub file copy it to the final destination + test ! -f $(LINUX_IMAGE_PATH).ub || cp $(LINUX_IMAGE_PATH).ub $(BINARIES_DIR) diff --git a/package/18xx-ti-utils/0001-plt.h-fix-build-with-gcc-10.patch b/package/18xx-ti-utils/0001-plt.h-fix-build-with-gcc-10.patch new file mode 100644 index 00000000..36480dfc --- /dev/null +++ b/package/18xx-ti-utils/0001-plt.h-fix-build-with-gcc-10.patch @@ -0,0 +1,38 @@ +From 12d3b3c01b0ec28d45427754541a8156939346d9 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 13 Aug 2020 23:24:05 +0200 +Subject: [PATCH] plt.h: fix build with gcc 10 + +Drop EFUSE_PARAMETER_TYPE_ENM to fix the following build failure with +gcc 10: + +/home/buildroot/autobuild/run/instance-3/output-1/host/bin/arm-buildroot-linux-gnueabihf-gcc -L/home/buildroot/autobuild/run/instance-3/output-1/host/arm-buildroot-linux-gnueabihf/sysroot/lib nvs.o misc_cmds.o calibrator.o plt.o wl18xx_plt.o ini.o -lm -lnl-3 -lnl-genl-3 -o calibrator +/home/buildroot/autobuild/run/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: misc_cmds.o:(.bss+0x0): multiple definition of `EFUSE_PARAMETER_TYPE_ENM'; nvs.o:(.bss+0x0): first defined here +/home/buildroot/autobuild/run/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: calibrator.o: in function `.LANCHOR0': +calibrator.c:(.bss+0xc): multiple definition of `EFUSE_PARAMETER_TYPE_ENM'; nvs.o:(.bss+0x0): first defined here + +Fixes: + - http://autobuild.buildroot.org/results/df2d04de4b2e5003f3fc56c9e84db5054bd4d499 + +Signed-off-by: Fabrice Fontaine +[Upstream status: sent to sudharshan ] +--- + plt.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/plt.h b/plt.h +index 8b534a9..43d5dbc 100644 +--- a/plt.h ++++ b/plt.h +@@ -399,7 +399,7 @@ enum EFUSE_PARAMETER_TYPE_ENMT { + TX_BIP_PD_BUFFER_VBIAS_ERROR_E, + EFUSE_NUMBER_OF_PARAMETERS_E, + EFUSE_LAST_PARAMETER_E = (EFUSE_NUMBER_OF_PARAMETERS_E - 1) +-} EFUSE_PARAMETER_TYPE_ENM; ++}; + + int get_mac_addr(int ifc_num, unsigned char *mac_addr); + +-- +2.27.0 + diff --git a/package/18xx-ti-utils/18xx-ti-utils.hash b/package/18xx-ti-utils/18xx-ti-utils.hash new file mode 100644 index 00000000..7ecca54b --- /dev/null +++ b/package/18xx-ti-utils/18xx-ti-utils.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 ce0185ba8a9bf456cc94a798bf66903775065e337e53ff812f18a6d88f5bac13 18xx-ti-utils-R8.8.tar.xz +sha256 363cef40b276a7a91ebcff3f78626d9cfe5e5a51927c725236007259403d5fc4 COPYING diff --git a/package/18xx-ti-utils/18xx-ti-utils.mk b/package/18xx-ti-utils/18xx-ti-utils.mk new file mode 100644 index 00000000..5d45191c --- /dev/null +++ b/package/18xx-ti-utils/18xx-ti-utils.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# 18xx-ti-utils +# +################################################################################ + +18XX_TI_UTILS_VERSION = 8.8 +18XX_TI_UTILS_SITE = https://git.ti.com/cgit/wilink8-wlan/18xx-ti-utils/snapshot +18XX_TI_UTILS_SOURCE = 18xx-ti-utils-R$(18XX_TI_UTILS_VERSION).tar.xz +18XX_TI_UTILS_DEPENDENCIES = libnl +18XX_TI_UTILS_LICENSE = BSD-3-Clause +18XX_TI_UTILS_LICENSE_FILES = COPYING + +18XX_TI_UTILS_CFLAGS = -I$(STAGING_DIR)/usr/include/libnl3 -DCONFIG_LIBNL32 + +ifeq ($(BR2_STATIC_LIBS),y) +18XX_TI_UTILS_BUILD_TARGET = static +endif + +define 18XX_TI_UTILS_BUILD_CMDS + $(TARGET_MAKE_ENV) CROSS_COMPILE=$(TARGET_CROSS) \ + NFSROOT="$(STAGING_DIR)" NLVER=3 $(MAKE) -C $(@D) \ + CFLAGS="$(TARGET_CFLAGS) $(18XX_TI_UTILS_CFLAGS)" \ + $(18XX_TI_UTILS_BUILD_TARGET) + + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/wlconf \ + $(HOST_CONFIGURE_OPTS) +endef + +define 18XX_TI_UTILS_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 $(@D)/calibrator $(TARGET_DIR)/usr/bin/calibrator + $(INSTALL) -m 0755 $(@D)/wlconf/wlconf $(HOST_DIR)/bin/wlconf +endef + +$(eval $(generic-package)) diff --git a/package/18xx-ti-utils/Config.in b/package/18xx-ti-utils/Config.in new file mode 100644 index 00000000..571d196e --- /dev/null +++ b/package/18xx-ti-utils/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_18XX_TI_UTILS + bool "18xx-ti-utils" + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_LIBNL + help + TI Wilink calibration utilities. + + CONFIG_NL80211_TESTMODE must be enabled in the kernel + configuration for this package to work. + + http://processors.wiki.ti.com/index.php/WL18xx_TX_Testing + +comment "18xx-ti-utils needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/4th/0001-avoid-regen-during-install.patch b/package/4th/0001-avoid-regen-during-install.patch new file mode 100644 index 00000000..436cff1f --- /dev/null +++ b/package/4th/0001-avoid-regen-during-install.patch @@ -0,0 +1,17 @@ +avoid regen during install + +Signed-off-by: Francois Perrad + +--- a/sources/Makefile ++++ b/sources/Makefile +@@ -120,7 +120,7 @@ + ln -sf $(SHARED_LIB) $(LIBRARIES)/lib4th.so + endif + +-mostlyinstall: libinstall all ++mostlyinstall: libinstall + cp 4th 4tsh pp4th $(BINARIES) + + install: mostlyinstall +-- + diff --git a/package/4th/4th.hash b/package/4th/4th.hash new file mode 100644 index 00000000..8a312634 --- /dev/null +++ b/package/4th/4th.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 f96ea74cdb2aadfdc3bebf8d6d2cf7b8976b5d56c1237387479bffaecede9fe3 4th-3.64.1-unix.tar.gz +sha256 8c6111b645a02219579ea66e84aa8e78a0ed4f4dd80857ffb91bcda5528717d4 COPYING diff --git a/package/4th/4th.mk b/package/4th/4th.mk new file mode 100644 index 00000000..276423b2 --- /dev/null +++ b/package/4th/4th.mk @@ -0,0 +1,70 @@ +################################################################################ +# +# 4th +# +################################################################################ + +4TH_VERSION = 3.64.1 +4TH_SOURCE = 4th-$(4TH_VERSION)-unix.tar.gz +4TH_SITE = http://downloads.sourceforge.net/project/forth-4th/4th-$(4TH_VERSION) +4TH_LICENSE = GPL-3.0+, LGPL-3.0+ +# The COPYING file only contains the text of the LGPL-3.0, but the +# source code really contains parts under GPL-3.0+. +4TH_LICENSE_FILES = COPYING +4TH_DEPENDENCIES = host-4th +4TH_INSTALL_STAGING = YES + +4TH_CFLAGS = $(TARGET_CFLAGS) -DUNIX -fsigned-char + +ifeq ($(BR2_STATIC_LIBS),y) +4TH_MAKE_ENV = $(TARGET_MAKE_ENV) STATIC=1 +else +4TH_MAKE_ENV = $(TARGET_MAKE_ENV) SHARED=1 +4TH_CFLAGS += -fPIC +endif + +define 4TH_BUILD_CMDS + $(4TH_MAKE_ENV) $(MAKE) -C $(@D)/sources all \ + CROSS="$(TARGET_CROSS)" \ + CFLAGS="$(4TH_CFLAGS)" \ + FOURTH=$(HOST_DIR)/bin/4th +endef + +define 4TH_INSTALL_STAGING_CMDS + $(4TH_MAKE_ENV) $(MAKE) -C $(@D)/sources libinstall \ + LIBRARIES=$(STAGING_DIR)/usr/lib + $(INSTALL) -D -m 0644 $(@D)/sources/4th.h \ + $(STAGING_DIR)/usr/include/4th.h +endef + +define 4TH_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/bin + mkdir -p $(TARGET_DIR)/usr/lib + $(4TH_MAKE_ENV) $(MAKE) -C $(@D)/sources mostlyinstall \ + BINARIES=$(TARGET_DIR)/usr/bin \ + LIBRARIES=$(TARGET_DIR)/usr/lib + mkdir -p $(TARGET_DIR)/usr/share/4th/lib + cp -dpf $(@D)/4th/*.4th $(TARGET_DIR)/usr/share/4th + cp -dpf $(@D)/4th/lib/*.4th $(TARGET_DIR)/usr/share/4th/lib + mkdir -p $(TARGET_DIR)/usr/share/4th/demo + cp -dpf $(@D)/4th/demo/*.4th $(TARGET_DIR)/usr/share/4th/demo + mkdir -p $(TARGET_DIR)/usr/share/4th/4pp/lib + cp -dpf $(@D)/4th/4pp/*.4pp $(TARGET_DIR)/usr/share/4th/4pp + cp -dpf $(@D)/4th/4pp/lib/*.4pp $(TARGET_DIR)/usr/share/4th/4pp/lib +endef + +define HOST_4TH_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/sources all \ + CFLAGS="$(HOST_CFLAGS) -DUNIX -fsigned-char" +endef + +define HOST_4TH_INSTALL_CMDS + mkdir -p $(HOST_DIR)/bin + mkdir -p $(HOST_DIR)/lib + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/sources mostlyinstall \ + BINARIES=$(HOST_DIR)/bin \ + LIBRARIES=$(HOST_DIR)/lib +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/4th/Config.in b/package/4th/Config.in new file mode 100644 index 00000000..4554664a --- /dev/null +++ b/package/4th/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_4TH + bool "4th" + help + 4tH is a Forth compiler that can create bytecode, + C-embeddable bytecode, standalone executables, but also + works fine as a scripting language + + http://thebeez.home.xs4all.nl/4tH/ diff --git a/package/Config.in b/package/Config.in new file mode 100644 index 00000000..f33c4780 --- /dev/null +++ b/package/Config.in @@ -0,0 +1,2896 @@ +menu "Target packages" + + source "package/busybox/Config.in" + source "package/skeleton/Config.in" + source "package/skeleton-custom/Config.in" + source "package/skeleton-init-common/Config.in" + source "package/skeleton-init-none/Config.in" + source "package/skeleton-init-openrc/Config.in" + source "package/skeleton-init-systemd/Config.in" + source "package/skeleton-init-sysv/Config.in" + +menu "Audio and video applications" + source "package/alsa-utils/Config.in" + source "package/atest/Config.in" + source "package/aumix/Config.in" + source "package/bluez-alsa/Config.in" + source "package/dvblast/Config.in" + source "package/dvdauthor/Config.in" + source "package/dvdrw-tools/Config.in" + source "package/espeak/Config.in" + source "package/faad2/Config.in" + source "package/ffmpeg/Config.in" + source "package/flac/Config.in" + source "package/flite/Config.in" + source "package/fluid-soundfont/Config.in" + source "package/fluidsynth/Config.in" + source "package/gmrender-resurrect/Config.in" + source "package/gstreamer1/Config.in" + source "package/jack1/Config.in" + source "package/jack2/Config.in" + source "package/kodi/Config.in" + source "package/lame/Config.in" + source "package/madplay/Config.in" + source "package/mimic/Config.in" + source "package/minimodem/Config.in" + source "package/miraclecast/Config.in" + source "package/mjpegtools/Config.in" + source "package/modplugtools/Config.in" + source "package/motion/Config.in" + source "package/mpd/Config.in" + source "package/mpd-mpc/Config.in" + source "package/mpg123/Config.in" + source "package/mpv/Config.in" + source "package/multicat/Config.in" + source "package/musepack/Config.in" + source "package/ncmpc/Config.in" + source "package/opus-tools/Config.in" + source "package/pipewire/Config.in" + source "package/pipewire-media-session/Config.in" + source "package/pulseaudio/Config.in" + source "package/sox/Config.in" + source "package/speechd/Config.in" + source "package/squeezelite/Config.in" + source "package/tinycompress/Config.in" + source "package/tstools/Config.in" + source "package/twolame/Config.in" + source "package/udpxy/Config.in" + source "package/upmpdcli/Config.in" + source "package/v4l2grab/Config.in" + source "package/v4l2loopback/Config.in" + source "package/vlc/Config.in" + source "package/vorbis-tools/Config.in" + source "package/wavpack/Config.in" + source "package/yavta/Config.in" + source "package/ympd/Config.in" + source "package/zynaddsubfx/Config.in" +endmenu + +menu "Compressors and decompressors" + source "package/brotli/Config.in" + source "package/bzip2/Config.in" + source "package/gzip/Config.in" + source "package/lrzip/Config.in" + source "package/lzip/Config.in" + source "package/lzop/Config.in" + source "package/p7zip/Config.in" + source "package/pigz/Config.in" + source "package/pixz/Config.in" + source "package/unrar/Config.in" + source "package/unzip/Config.in" + source "package/xz/Config.in" + source "package/zip/Config.in" + source "package/zstd/Config.in" +endmenu + +menu "Debugging, profiling and benchmark" + source "package/babeltrace2/Config.in" + source "package/bcc/Config.in" + source "package/blktrace/Config.in" + source "package/bonnie/Config.in" + source "package/bpftool/Config.in" + source "package/bpftrace/Config.in" + source "package/cache-calibrator/Config.in" + source "package/clinfo/Config.in" + source "package/clpeak/Config.in" + source "package/coremark/Config.in" + source "package/coremark-pro/Config.in" + source "package/dacapo/Config.in" + source "package/delve/Config.in" + source "package/dhrystone/Config.in" + source "package/dieharder/Config.in" + source "package/dmalloc/Config.in" + source "package/dropwatch/Config.in" + source "package/dstat/Config.in" + source "package/dt/Config.in" + source "package/duma/Config.in" + source "package/fio/Config.in" + source "package/fwts/Config.in" + source "package/gdb/Config.in" + source "package/google-breakpad/Config.in" + source "package/hyperfine/Config.in" + source "package/iozone/Config.in" + source "package/kexec/Config.in" + source "package/kexec-lite/Config.in" + source "package/kmemd/Config.in" + source "package/kvm-unit-tests/Config.in" + source "package/kyua/Config.in" + source "package/latencytop/Config.in" + source "package/libbpf/Config.in" + source "package/libtraceevent/Config.in" + source "package/libtracefs/Config.in" + source "package/lmbench/Config.in" + source "package/lsof/Config.in" + source "package/ltp-testsuite/Config.in" + source "package/ltrace/Config.in" + source "package/lttng-babeltrace/Config.in" + source "package/lttng-modules/Config.in" + source "package/lttng-tools/Config.in" + source "package/mbpoll/Config.in" + source "package/mbw/Config.in" + source "package/mcelog/Config.in" + source "package/memstat/Config.in" + source "package/netperf/Config.in" + source "package/netsniff-ng/Config.in" + source "package/nmon/Config.in" + source "package/oprofile/Config.in" + source "package/pax-utils/Config.in" + source "package/pcm-tools/Config.in" + source "package/perftest/Config.in" + source "package/piglit/Config.in" + source "package/ply/Config.in" + source "package/poke/Config.in" + source "package/ptm2human/Config.in" + source "package/pv/Config.in" + source "package/racehound/Config.in" + source "package/ramsmp/Config.in" + source "package/ramspeed/Config.in" + source "package/rt-tests/Config.in" + source "package/rwmem/Config.in" + source "package/sentry-native/Config.in" + source "package/signal-estimator/Config.in" + source "package/spidev_test/Config.in" + source "package/strace/Config.in" + source "package/stress/Config.in" + source "package/stress-ng/Config.in" + source "package/sysdig/Config.in" + source "package/sysprof/Config.in" + source "package/tbtools/Config.in" + source "package/tcf-agent/Config.in" + source "package/trace-cmd/Config.in" + source "package/trinity/Config.in" + source "package/uclibc-ng-test/Config.in" + source "package/uftrace/Config.in" + source "package/valgrind/Config.in" + source "package/vmtouch/Config.in" + source "package/whetstone/Config.in" +endmenu + +menu "Development tools" + source "package/avocado/Config.in" + source "package/bats-core/Config.in" + source "package/binutils/Config.in" + source "package/bitwise/Config.in" + source "package/bsdiff/Config.in" + source "package/bustle/Config.in" + source "package/check/Config.in" + source "package/cmake/Config.in" + source "package/cppunit/Config.in" + source "package/cukinia/Config.in" + source "package/cunit/Config.in" + source "package/cvs/Config.in" + source "package/cxxtest/Config.in" + source "package/diffutils/Config.in" + source "package/dos2unix/Config.in" + source "package/fd/Config.in" + source "package/findutils/Config.in" + source "package/flex/Config.in" + source "package/gawk/Config.in" + source "package/gettext/Config.in" + source "package/gettext-gnu/Config.in" + source "package/gettext-tiny/Config.in" + source "package/git/Config.in" + source "package/git-crypt/Config.in" + source "package/gperf/Config.in" + source "package/grep/Config.in" + source "package/jo/Config.in" + source "package/jq/Config.in" + source "package/libtool/Config.in" + source "package/make/Config.in" + source "package/mawk/Config.in" + source "package/patch/Config.in" + source "package/pkgconf/Config.in" + source "package/ripgrep/Config.in" + source "package/sed/Config.in" + source "package/subversion/Config.in" + source "package/tig/Config.in" + source "package/tree/Config.in" + source "package/unifdef/Config.in" + source "package/yasm/Config.in" +endmenu + +menu "Filesystem and flash utilities" + source "package/abootimg/Config.in" + source "package/aufs/Config.in" + source "package/aufs-util/Config.in" + source "package/autofs/Config.in" + source "package/bmap-tools/Config.in" + source "package/btrfs-progs/Config.in" + source "package/cifs-utils/Config.in" + source "package/cpio/Config.in" + source "package/cramfs/Config.in" + source "package/curlftpfs/Config.in" + source "package/davfs2/Config.in" + source "package/dosfstools/Config.in" + source "package/dust/Config.in" + source "package/e2fsprogs/Config.in" + source "package/e2tools/Config.in" + source "package/ecryptfs-utils/Config.in" + source "package/erofs-utils/Config.in" + source "package/exfat/Config.in" + source "package/exfat-utils/Config.in" + source "package/exfatprogs/Config.in" + source "package/f2fs-tools/Config.in" + source "package/firmware-utils/Config.in" + source "package/flashbench/Config.in" + source "package/fscryptctl/Config.in" + source "package/fuse-overlayfs/Config.in" + source "package/fwup/Config.in" + source "package/genext2fs/Config.in" + source "package/genpart/Config.in" + source "package/genromfs/Config.in" + source "package/gocryptfs/Config.in" + source "package/imx-usb-loader/Config.in" + source "package/mmc-utils/Config.in" + source "package/mtd/Config.in" + source "package/mtools/Config.in" + source "package/nfs-utils/Config.in" + source "package/nilfs-utils/Config.in" + source "package/ntfs-3g/Config.in" + source "package/sp-oops-extract/Config.in" + source "package/squashfs/Config.in" + source "package/sshfs/Config.in" + source "package/sunxi-tools/Config.in" + source "package/udftools/Config.in" + source "package/unionfs/Config.in" + source "package/xfsprogs/Config.in" + source "package/zerofree/Config.in" + source "package/zfs/Config.in" +endmenu + +menu "Fonts, cursors, icons, sounds and themes" + +comment "Cursors" + source "package/comix-cursors/Config.in" + source "package/obsidian-cursors/Config.in" + +comment "Fonts" + source "package/bitstream-vera/Config.in" + source "package/cantarell/Config.in" + source "package/dejavu/Config.in" + source "package/font-awesome/Config.in" + source "package/ghostscript-fonts/Config.in" + source "package/inconsolata/Config.in" + source "package/liberation/Config.in" + source "package/wqy-zenhei/Config.in" + +comment "Icons" + source "package/adwaita-icon-theme/Config.in" + source "package/hicolor-icon-theme/Config.in" + +comment "Sounds" + source "package/sound-theme-borealis/Config.in" + source "package/sound-theme-freedesktop/Config.in" + +comment "Themes" + source "package/gtk2-engines/Config.in" + +endmenu + +menu "Games" + source "package/ascii-invaders/Config.in" + source "package/chocolate-doom/Config.in" + source "package/doom-wad/Config.in" + source "package/flare-engine/Config.in" + source "package/flare-game/Config.in" + source "package/gnuchess/Config.in" + source "package/lbreakout2/Config.in" + source "package/ltris/Config.in" + source "package/lugaru/Config.in" + source "package/minetest/Config.in" + source "package/minetest-game/Config.in" + source "package/opentyrian/Config.in" + source "package/opentyrian-data/Config.in" + source "package/prboom/Config.in" + source "package/rubix/Config.in" + source "package/sl/Config.in" + source "package/solarus/Config.in" + source "package/stella/Config.in" + source "package/supertux/Config.in" + source "package/supertuxkart/Config.in" + source "package/xorcurses/Config.in" +endmenu + +menu "Graphic libraries and applications (graphic/text)" + +comment "Graphic applications" + source "package/cage/Config.in" + source "package/cog/Config.in" + source "package/dmenu-wayland/Config.in" + source "package/flutter-packages/Config.in" + source "package/flutter-pi/Config.in" + source "package/foot/Config.in" + source "package/fswebcam/Config.in" + source "package/ghostscript/Config.in" + source "package/glmark2/Config.in" + source "package/glslsandbox-player/Config.in" + source "package/gnuplot/Config.in" + source "package/igt-gpu-tools/Config.in" + source "package/ivi-homescreen/Config.in" + source "package/jhead/Config.in" + source "package/kmscube/Config.in" + source "package/libva-utils/Config.in" + source "package/mesa3d-demos/Config.in" + source "package/netsurf/Config.in" + source "package/pngquant/Config.in" + source "package/qt5cinex/Config.in" + source "package/rrdtool/Config.in" + source "package/spirv-tools/Config.in" + source "package/stellarium/Config.in" + source "package/sway/Config.in" + source "package/swaybg/Config.in" + source "package/tesseract-ocr/Config.in" + source "package/tinifier/Config.in" + +comment "Graphic libraries" + source "package/cegui/Config.in" + source "package/directfb/Config.in" + source "package/directfb-examples/Config.in" + source "package/efl/Config.in" + source "package/fb-test-app/Config.in" + source "package/fbdump/Config.in" + source "package/fbgrab/Config.in" + source "package/fbset/Config.in" + source "package/fbterm/Config.in" + source "package/fbv/Config.in" + source "package/freerdp/Config.in" + source "package/graphicsmagick/Config.in" + source "package/imagemagick/Config.in" + source "package/libglvnd/Config.in" + source "package/linux-fusion/Config.in" + source "package/lite/Config.in" + source "package/mesa3d/Config.in" + source "package/mesa3d-headers/Config.in" + source "package/ocrad/Config.in" + source "package/ogre/Config.in" + source "package/psplash/Config.in" + source "package/sdl/Config.in" + source "package/sdl_gfx/Config.in" + source "package/sdl_image/Config.in" + source "package/sdl_mixer/Config.in" + source "package/sdl_net/Config.in" + source "package/sdl_sound/Config.in" + source "package/sdl_ttf/Config.in" + source "package/sdl2/Config.in" + source "package/sdl2_gfx/Config.in" + source "package/sdl2_image/Config.in" + source "package/sdl2_mixer/Config.in" + source "package/sdl2_net/Config.in" + source "package/sdl2_ttf/Config.in" + source "package/spirv-headers/Config.in" + source "package/tk/Config.in" + source "package/vulkan-headers/Config.in" + source "package/vulkan-loader/Config.in" + source "package/vulkan-tools/Config.in" + +comment "Other GUIs" + source "package/qt5/Config.in" + source "package/qt6/Config.in" +if BR2_PACKAGE_QT5 || BR2_PACKAGE_QT6 +comment "QT libraries and helper libraries" + source "package/cutelyst/Config.in" + source "package/grantlee/Config.in" + source "package/kf5/Config.in" + source "package/qextserialport/Config.in" + source "package/qjson/Config.in" + source "package/quazip/Config.in" + source "package/qwt/Config.in" + source "package/simple-mail/Config.in" +endif + source "package/tekui/Config.in" + source "package/weston/Config.in" + source "package/x11r7/Config.in" + +comment "X applications" + depends on BR2_PACKAGE_XORG7 + + source "package/alsamixergui/Config.in" + source "package/apitrace/Config.in" + source "package/dillo/Config.in" + source "package/docker/Config.in" + source "package/feh/Config.in" + source "package/gtkperf/Config.in" + source "package/leafpad/Config.in" + source "package/mupdf/Config.in" + source "package/nodm/Config.in" + source "package/pcmanfm/Config.in" + source "package/qt-webkit-kiosk/Config.in" + source "package/rdesktop/Config.in" + source "package/synergy/Config.in" + source "package/vte/Config.in" + source "package/wmctrl/Config.in" + source "package/x11vnc/Config.in" + source "package/xdotool/Config.in" + source "package/xscreensaver/Config.in" + source "package/xterm/Config.in" + source "package/xvkbd/Config.in" + source "package/yad/Config.in" + +comment "X libraries and helper libraries" + depends on BR2_PACKAGE_XORG7 + + source "package/libsexy/Config.in" + source "package/x11r7/xkeyboard-config/Config.in" + +comment "X window managers" + depends on BR2_PACKAGE_XORG7 + + source "package/enlightenment/Config.in" + source "package/fluxbox/Config.in" + source "package/matchbox/Config.in" + source "package/metacity/Config.in" + source "package/openbox/Config.in" + source "package/ratpoison/Config.in" +endmenu + +menu "Hardware handling" +menu "Firmware" + source "package/am33x-cm3/Config.in" + source "package/armbian-firmware/Config.in" + source "package/b43-firmware/Config.in" + source "package/brcmfmac_sdio-firmware-rpi/Config.in" + source "package/linux-firmware/Config.in" + source "package/murata-cyw-fw/Config.in" + source "package/odroidc2-firmware/Config.in" + source "package/qcom-db410c-firmware/Config.in" + source "package/qoriq-fm-ucode/Config.in" + source "package/rcw-smarc-sal28/Config.in" + source "package/rpi-firmware/Config.in" + source "package/sunxi-boards/Config.in" + source "package/ts4900-fpga/Config.in" + source "package/ux500-firmware/Config.in" + source "package/wilc-firmware/Config.in" + source "package/wilink-bt-firmware/Config.in" + source "package/zd1211-firmware/Config.in" +endmenu + source "package/18xx-ti-utils/Config.in" + source "package/a10disp/Config.in" + source "package/acpica/Config.in" + source "package/acpid/Config.in" + source "package/acpitool/Config.in" + source "package/aer-inject/Config.in" + source "package/altera-stapl/Config.in" + source "package/am335x-pru-package/Config.in" + source "package/apcupsd/Config.in" + source "package/avrdude/Config.in" + source "package/bcache-tools/Config.in" + source "package/biosdevname/Config.in" + source "package/brickd/Config.in" + source "package/brltty/Config.in" + source "package/cbootimage/Config.in" + source "package/cc-tool/Config.in" + source "package/cdrkit/Config.in" + source "package/cpuburn-arm/Config.in" + source "package/crucible/Config.in" + source "package/cryptsetup/Config.in" + source "package/cwiid/Config.in" + source "package/dahdi-linux/Config.in" + source "package/dahdi-tools/Config.in" + source "package/dbus/Config.in" + source "package/dbus-broker/Config.in" + source "package/dbus-cpp/Config.in" + source "package/dbus-cxx/Config.in" + source "package/dbus-glib/Config.in" + source "package/dbus-python/Config.in" + source "package/dbus-triggerd/Config.in" + source "package/dfu-programmer/Config.in" + source "package/dfu-util/Config.in" + source "package/dmidecode/Config.in" + source "package/dmraid/Config.in" + source "package/dt-utils/Config.in" + source "package/dtbocfg/Config.in" + source "package/dtv-scan-tables/Config.in" + source "package/dump1090/Config.in" + source "package/dvbsnoop/Config.in" + source "package/edid-decode/Config.in" + source "package/edk2-non-osi/Config.in" + source "package/edk2-platforms/Config.in" + source "package/esp-hosted/Config.in" + source "package/espflash/Config.in" + source "package/eudev/Config.in" + source "package/ev3dev-linux-drivers/Config.in" + source "package/evemu/Config.in" + source "package/evtest/Config.in" + source "package/fbtft/Config.in" + source "package/fconfig/Config.in" + source "package/flashrom/Config.in" + source "package/fmtools/Config.in" + source "package/freeipmi/Config.in" + source "package/freescale-imx/Config.in" + source "package/fwupd/Config.in" + source "package/fwupd-efi/Config.in" + source "package/fxload/Config.in" + source "package/gcnano-binaries/Config.in" + source "package/gpm/Config.in" + source "package/gpsd/Config.in" + source "package/gptfdisk/Config.in" + source "package/gvfs/Config.in" + source "package/hddtemp/Config.in" + source "package/hdparm/Config.in" + source "package/hwdata/Config.in" + source "package/hwloc/Config.in" + source "package/i2c-tools/Config.in" + source "package/i7z/Config.in" + source "package/input-event-daemon/Config.in" + source "package/intel-microcode/Config.in" + source "package/ipmitool/Config.in" + source "package/ipmiutil/Config.in" + source "package/irda-utils/Config.in" + source "package/iucode-tool/Config.in" + source "package/kbd/Config.in" + source "package/lcdproc/Config.in" + source "package/ledmon/Config.in" + source "package/libiec61850/Config.in" + source "package/libmanette/Config.in" + source "package/libubootenv/Config.in" + source "package/libuio/Config.in" + source "package/linux-backports/Config.in" + source "package/linux-serial-test/Config.in" + source "package/linuxconsoletools/Config.in" + source "package/lirc-tools/Config.in" + source "package/lm-sensors/Config.in" + source "package/lshw/Config.in" + source "package/lsscsi/Config.in" + source "package/lsuio/Config.in" + source "package/luksmeta/Config.in" + source "package/lvm2/Config.in" + source "package/mali-driver/Config.in" + source "package/mali-t76x/Config.in" + source "package/mbpfan/Config.in" + source "package/mdadm/Config.in" + source "package/mdevd/Config.in" + source "package/mdio-tools/Config.in" + source "package/memtest86/Config.in" + source "package/memtester/Config.in" + source "package/memtool/Config.in" + source "package/mhz/Config.in" + source "package/minicom/Config.in" + source "package/msr-tools/Config.in" + source "package/mxt-app/Config.in" + source "package/nanocom/Config.in" + source "package/neard/Config.in" + source "package/nvidia-driver/Config.in" + source "package/nvidia-modprobe/Config.in" + source "package/nvidia-persistenced/Config.in" + source "package/nvme/Config.in" + source "package/ofono/Config.in" + source "package/ola/Config.in" + source "package/open2300/Config.in" + source "package/openfpgaloader/Config.in" + source "package/openipmi/Config.in" + source "package/openocd/Config.in" + source "package/openpowerlink/Config.in" + source "package/owl-linux/Config.in" + source "package/parted/Config.in" + source "package/pciutils/Config.in" + source "package/pdbg/Config.in" + source "package/picocom/Config.in" + source "package/picotool/Config.in" + source "package/pifmrds/Config.in" + source "package/pigpio/Config.in" + source "package/powertop/Config.in" + source "package/pps-tools/Config.in" + source "package/pru-software-support/Config.in" + source "package/pulseview/Config.in" + source "package/qoriq-cadence-dp-firmware/Config.in" + source "package/raspi-gpio/Config.in" + source "package/rdma-core/Config.in" + source "package/read-edid/Config.in" + source "package/rng-tools/Config.in" + source "package/rockchip-mali/Config.in" + source "package/rockchip-rkbin/Config.in" + source "package/rpi-userland/Config.in" + source "package/rs485conf/Config.in" + source "package/rtc-tools/Config.in" + source "package/rtl8188eu/Config.in" + source "package/rtl8189es/Config.in" + source "package/rtl8189fs/Config.in" + source "package/rtl8192eu/Config.in" + source "package/rtl8723bu/Config.in" + source "package/rtl8723ds/Config.in" + source "package/rtl8723ds-bt/Config.in" + source "package/rtl8812au-aircrack-ng/Config.in" + source "package/rtl8821au/Config.in" + source "package/rtl8821cu/Config.in" + source "package/rtl8822cs/Config.in" + source "package/sane-backends/Config.in" + source "package/sdparm/Config.in" + source "package/sedutil/Config.in" + source "package/setserial/Config.in" + source "package/sg3_utils/Config.in" + source "package/sigrok-cli/Config.in" + source "package/sispmctl/Config.in" + source "package/smartmontools/Config.in" + source "package/smstools3/Config.in" + source "package/spi-tools/Config.in" + source "package/sredird/Config.in" + source "package/statserial/Config.in" + source "package/stm32flash/Config.in" + source "package/sunxi-cedarx/Config.in" + source "package/sunxi-mali-utgard/Config.in" + source "package/sunxi-mali-utgard-driver/Config.in" + source "package/sysstat/Config.in" + source "package/targetcli-fb/Config.in" + source "package/ti-gfx/Config.in" + source "package/ti-sgx-demos/Config.in" + source "package/ti-sgx-km/Config.in" + source "package/ti-sgx-um/Config.in" + source "package/ti-uim/Config.in" + source "package/ti-utils/Config.in" + source "package/tio/Config.in" + source "package/triggerhappy/Config.in" + source "package/uboot-bootcount/Config.in" + source "package/uboot-tools/Config.in" + source "package/ubus/Config.in" + source "package/udev/Config.in" + source "package/udev-gentoo-scripts/Config.in" + source "package/udisks/Config.in" + source "package/uhubctl/Config.in" + source "package/umtprd/Config.in" + source "package/upower/Config.in" + source "package/usb_modeswitch/Config.in" + source "package/usb_modeswitch_data/Config.in" + source "package/usbguard/Config.in" + source "package/usbmount/Config.in" + source "package/usbutils/Config.in" + source "package/w_scan/Config.in" + source "package/wf111/Config.in" + source "package/wilc-driver/Config.in" + source "package/wipe/Config.in" + source "package/xorriso/Config.in" + source "package/xr819-xradio/Config.in" +endmenu + +menu "Interpreter languages and scripting" + source "package/4th/Config.in" + source "package/chicken/Config.in" + source "package/enscript/Config.in" + source "package/erlang/Config.in" +if BR2_PACKAGE_ERLANG +menu "Erlang libraries/modules" + source "package/erlang-base64url/Config.in" + source "package/erlang-eimp/Config.in" + source "package/erlang-goldrush/Config.in" + source "package/erlang-idna/Config.in" + source "package/erlang-jiffy/Config.in" + source "package/erlang-jose/Config.in" + source "package/erlang-lager/Config.in" + source "package/erlang-p1-acme/Config.in" + source "package/erlang-p1-cache-tab/Config.in" + source "package/erlang-p1-mqtree/Config.in" + source "package/erlang-p1-oauth2/Config.in" + source "package/erlang-p1-pkix/Config.in" + source "package/erlang-p1-sip/Config.in" + source "package/erlang-p1-stringprep/Config.in" + source "package/erlang-p1-stun/Config.in" + source "package/erlang-p1-tls/Config.in" + source "package/erlang-p1-utils/Config.in" + source "package/erlang-p1-xml/Config.in" + source "package/erlang-p1-xmpp/Config.in" + source "package/erlang-p1-yaml/Config.in" + source "package/erlang-p1-yconf/Config.in" + source "package/erlang-p1-zlib/Config.in" +endmenu +endif + source "package/execline/Config.in" + source "package/ficl/Config.in" + source "package/gauche/Config.in" + source "package/guile/Config.in" + source "package/haserl/Config.in" + source "package/janet/Config.in" + source "package/jimtcl/Config.in" + source "package/lua/Config.in" + source "package/luainterpreter/Config.in" + source "package/luajit/Config.in" +if BR2_PACKAGE_HAS_LUAINTERPRETER && !BR2_STATIC_LIBS +# lua modules are dynamically loaded, so not available on static builds +menu "Lua libraries/modules" +# When adding lua packages, make sure the name start with "lua". If the +# upstream package is "luafoo", call it "luafoo" in Buildroot; if the upstream +# package is "foo", call it "lua-foo". Many packages currently don't follow +# this convention, but that's historical accident. + source "package/argparse/Config.in" + source "package/cgilua/Config.in" + source "package/copas/Config.in" + source "package/coxpcall/Config.in" + source "package/dado/Config.in" + source "package/easydbus/Config.in" + source "package/lbase64/Config.in" + source "package/ljlinenoise/Config.in" + source "package/ljsyscall/Config.in" + source "package/lpeg/Config.in" + source "package/lpty/Config.in" + source "package/lrandom/Config.in" + source "package/lsqlite3/Config.in" + source "package/lua-ansicolors/Config.in" + source "package/lua-argon2/Config.in" + source "package/lua-argparse/Config.in" + source "package/lua-augeas/Config.in" + source "package/lua-basexx/Config.in" + source "package/lua-binaryheap/Config.in" + source "package/lua-bit32/Config.in" + source "package/lua-cffi/Config.in" + source "package/lua-cjson/Config.in" + source "package/lua-coat/Config.in" + source "package/lua-coatpersistent/Config.in" + source "package/lua-codegen/Config.in" + source "package/lua-compat53/Config.in" + source "package/lua-conciseserialization/Config.in" + source "package/lua-cqueues/Config.in" + source "package/lua-csnappy/Config.in" + source "package/lua-curl/Config.in" + source "package/lua-datafile/Config.in" + source "package/lua-dkjson/Config.in" + source "package/lua-ev/Config.in" + source "package/lua-fifo/Config.in" + source "package/lua-flu/Config.in" + source "package/lua-gd/Config.in" + source "package/lua-http/Config.in" + source "package/lua-iconv/Config.in" + source "package/lua-inotify/Config.in" + source "package/lua-lgdbm/Config.in" + source "package/lua-lightningmdb/Config.in" + source "package/lua-livr/Config.in" + source "package/lua-livr-extra/Config.in" + source "package/lua-lpeg-patterns/Config.in" + source "package/lua-lsdbus/Config.in" + source "package/lua-lunitx/Config.in" + source "package/lua-lunix/Config.in" + source "package/lua-lyaml/Config.in" + source "package/lua-markdown/Config.in" + source "package/lua-messagepack/Config.in" + source "package/lua-mqtt/Config.in" + source "package/lua-msgpack-native/Config.in" + source "package/lua-periphery/Config.in" + source "package/lua-resty-http/Config.in" + source "package/lua-rotas/Config.in" + source "package/lua-sailor/Config.in" + source "package/lua-sdl2/Config.in" + source "package/lua-silva/Config.in" + source "package/lua-std-debug/Config.in" + source "package/lua-std-normalize/Config.in" + source "package/lua-stdlib/Config.in" + source "package/lua-testmore/Config.in" + source "package/lua-ubjson/Config.in" + source "package/lua-utf8/Config.in" + source "package/lua-valua/Config.in" + source "package/lua-zlib/Config.in" + source "package/luabitop/Config.in" + source "package/luadbi/Config.in" + source "package/luadbi-sqlite3/Config.in" + source "package/luaexpat/Config.in" + source "package/luaexpatutils/Config.in" + source "package/luafilesystem/Config.in" + source "package/luajson/Config.in" + source "package/lualdap/Config.in" + source "package/lualogging/Config.in" + source "package/luaossl/Config.in" + source "package/luaposix/Config.in" + source "package/luasec/Config.in" + source "package/luasocket/Config.in" + source "package/luasql-sqlite3/Config.in" + source "package/luasyslog/Config.in" + source "package/lutok/Config.in" + source "package/luv/Config.in" + source "package/luvi/Config.in" + source "package/lzlib/Config.in" + source "package/orbit/Config.in" + source "package/rings/Config.in" + source "package/turbolua/Config.in" + source "package/wsapi/Config.in" + source "package/wsapi-fcgi/Config.in" + source "package/wsapi-xavante/Config.in" + source "package/xavante/Config.in" +endmenu +endif + source "package/micropython/Config.in" + source "package/moarvm/Config.in" + source "package/mono/Config.in" +if BR2_PACKAGE_MONO +menu "Mono libraries/modules" + source "package/mono-gtksharp3/Config.in" +endmenu +endif + source "package/nodejs/Config.in" + source "package/octave/Config.in" + source "package/openjdk/Config.in" + source "package/perl/Config.in" +if BR2_PACKAGE_PERL +menu "Perl libraries/modules" + source "package/perl-apache-logformat-compiler/Config.in" + source "package/perl-appconfig/Config.in" + source "package/perl-astro-suntime/Config.in" + source "package/perl-class-inspector/Config.in" + source "package/perl-class-load/Config.in" + source "package/perl-class-method-modifiers/Config.in" + source "package/perl-class-std/Config.in" + source "package/perl-class-std-fast/Config.in" + source "package/perl-clone/Config.in" + source "package/perl-convert-asn1/Config.in" + source "package/perl-cookie-baker/Config.in" + source "package/perl-crypt-blowfish/Config.in" + source "package/perl-crypt-cbc/Config.in" + source "package/perl-crypt-openssl-aes/Config.in" + source "package/perl-crypt-openssl-random/Config.in" + source "package/perl-crypt-openssl-rsa/Config.in" + source "package/perl-data-dump/Config.in" + source "package/perl-data-optlist/Config.in" + source "package/perl-data-uuid/Config.in" + source "package/perl-date-manip/Config.in" + source "package/perl-datetime-tiny/Config.in" + source "package/perl-dbd-mysql/Config.in" + source "package/perl-dbi/Config.in" + source "package/perl-devel-cycle/Config.in" + source "package/perl-devel-globaldestruction/Config.in" + source "package/perl-devel-size/Config.in" + source "package/perl-devel-stacktrace/Config.in" + source "package/perl-devel-stacktrace-ashtml/Config.in" + source "package/perl-device-serialport/Config.in" + source "package/perl-digest-hmac/Config.in" + source "package/perl-digest-sha1/Config.in" + source "package/perl-dist-checkconflicts/Config.in" + source "package/perl-encode-detect/Config.in" + source "package/perl-encode-locale/Config.in" + source "package/perl-exporter-tiny/Config.in" + source "package/perl-file-listing/Config.in" + source "package/perl-file-sharedir/Config.in" + source "package/perl-file-slurp/Config.in" + source "package/perl-file-util/Config.in" + source "package/perl-filesys-notify-simple/Config.in" + source "package/perl-gd/Config.in" + source "package/perl-gdgraph/Config.in" + source "package/perl-gdtextutil/Config.in" + source "package/perl-hash-multivalue/Config.in" + source "package/perl-html-parser/Config.in" + source "package/perl-html-tagset/Config.in" + source "package/perl-http-cookies/Config.in" + source "package/perl-http-daemon/Config.in" + source "package/perl-http-date/Config.in" + source "package/perl-http-entity-parser/Config.in" + source "package/perl-http-headers-fast/Config.in" + source "package/perl-http-message/Config.in" + source "package/perl-http-multipartparser/Config.in" + source "package/perl-http-negotiate/Config.in" + source "package/perl-i18n/Config.in" + source "package/perl-image-exiftool/Config.in" + source "package/perl-io-html/Config.in" + source "package/perl-io-interface/Config.in" + source "package/perl-io-socket-multicast/Config.in" + source "package/perl-io-socket-ssl/Config.in" + source "package/perl-json-maybexs/Config.in" + source "package/perl-json-tiny/Config.in" + source "package/perl-libwww-perl/Config.in" + source "package/perl-locale-maketext-lexicon/Config.in" + source "package/perl-lwp-mediatypes/Config.in" + source "package/perl-lwp-protocol-https/Config.in" + source "package/perl-mail-dkim/Config.in" + source "package/perl-mailtools/Config.in" + source "package/perl-math-int64/Config.in" + source "package/perl-math-prime-util/Config.in" + source "package/perl-mime-base64-urlsafe/Config.in" + source "package/perl-mime-tools/Config.in" + source "package/perl-module-implementation/Config.in" + source "package/perl-module-runtime/Config.in" + source "package/perl-mojolicious/Config.in" + source "package/perl-mojolicious-plugin-authentication/Config.in" + source "package/perl-mojolicious-plugin-authorization/Config.in" + source "package/perl-mojolicious-plugin-cspheader/Config.in" + source "package/perl-mojolicious-plugin-i18n/Config.in" + source "package/perl-mojolicious-plugin-securityheader/Config.in" + source "package/perl-moo/Config.in" + source "package/perl-mozilla-ca/Config.in" + source "package/perl-net-dns/Config.in" + source "package/perl-net-http/Config.in" + source "package/perl-net-snmp/Config.in" + source "package/perl-net-ssh2/Config.in" + source "package/perl-net-ssleay/Config.in" + source "package/perl-net-telnet/Config.in" + source "package/perl-netaddr-ip/Config.in" + source "package/perl-number-bytes-human/Config.in" + source "package/perl-package-stash/Config.in" + source "package/perl-params-util/Config.in" + source "package/perl-parse-yapp/Config.in" + source "package/perl-path-tiny/Config.in" + source "package/perl-plack/Config.in" + source "package/perl-posix-strftime-compiler/Config.in" + source "package/perl-role-tiny/Config.in" + source "package/perl-stream-buffered/Config.in" + source "package/perl-sub-exporter-progressive/Config.in" + source "package/perl-sub-install/Config.in" + source "package/perl-sub-quote/Config.in" + source "package/perl-sys-cpu/Config.in" + source "package/perl-sys-meminfo/Config.in" + source "package/perl-sys-mmap/Config.in" + source "package/perl-time-parsedate/Config.in" + source "package/perl-timedate/Config.in" + source "package/perl-try-tiny/Config.in" + source "package/perl-type-tiny/Config.in" + source "package/perl-uri/Config.in" + source "package/perl-www-form-urlencoded/Config.in" + source "package/perl-www-robotrules/Config.in" + source "package/perl-x10/Config.in" + source "package/perl-xml-libxml/Config.in" + source "package/perl-xml-namespacesupport/Config.in" + source "package/perl-xml-sax/Config.in" + source "package/perl-xml-sax-base/Config.in" +endmenu +endif + source "package/php/Config.in" +if BR2_PACKAGE_PHP +if !BR2_STATIC_LIBS +menu "External php extensions" + source "package/php-amqp/Config.in" + source "package/php-apcu/Config.in" + source "package/php-geoip/Config.in" + source "package/php-gnupg/Config.in" + source "package/php-imagick/Config.in" + source "package/php-lua/Config.in" + source "package/php-memcached/Config.in" + source "package/php-pam/Config.in" + source "package/php-pecl-dbus/Config.in" + source "package/php-ssh2/Config.in" + source "package/php-xdebug/Config.in" + source "package/php-yaml/Config.in" + source "package/php-zmq/Config.in" +endmenu +endif +if BR2_STATIC_LIBS +comment "External PHP extensions need a toolchain w/ dynamic library" +endif +endif + source "package/python3/Config.in" +if BR2_PACKAGE_PYTHON3 +menu "External python modules" + source "package/python-aenum/Config.in" + source "package/python-aerich/Config.in" + source "package/python-aexpect/Config.in" + source "package/python-aioblescan/Config.in" + source "package/python-aiocoap/Config.in" + source "package/python-aioconsole/Config.in" + source "package/python-aiodns/Config.in" + source "package/python-aiofiles/Config.in" + source "package/python-aiohttp/Config.in" + source "package/python-aiohttp-cors/Config.in" + source "package/python-aiohttp-debugtoolbar/Config.in" + source "package/python-aiohttp-jinja2/Config.in" + source "package/python-aiohttp-mako/Config.in" + source "package/python-aiohttp-remotes/Config.in" + source "package/python-aiohttp-security/Config.in" + source "package/python-aiohttp-session/Config.in" + source "package/python-aiohttp-sse/Config.in" + source "package/python-aiojobs/Config.in" + source "package/python-aiologstash/Config.in" + source "package/python-aiomonitor/Config.in" + source "package/python-aioprocessing/Config.in" + source "package/python-aioredis/Config.in" + source "package/python-aiorwlock/Config.in" + source "package/python-aiosignal/Config.in" + source "package/python-aiosqlite/Config.in" + source "package/python-aiozipkin/Config.in" + source "package/python-alembic/Config.in" + source "package/python-alsaaudio/Config.in" + source "package/python-annotated-types/Config.in" + source "package/python-ansicolors/Config.in" + source "package/python-anyio/Config.in" + source "package/python-apispec/Config.in" + source "package/python-appdirs/Config.in" + source "package/python-argh/Config.in" + source "package/python-argon2-cffi/Config.in" + source "package/python-argon2-cffi-bindings/Config.in" + source "package/python-arrow/Config.in" + source "package/python-asgiref/Config.in" + source "package/python-asn1crypto/Config.in" + source "package/python-asttokens/Config.in" + source "package/python-async-generator/Config.in" + source "package/python-async-lru/Config.in" + source "package/python-async-timeout/Config.in" + source "package/python-asyncssh/Config.in" + source "package/python-attrs/Config.in" + source "package/python-augeas/Config.in" + source "package/python-autobahn/Config.in" + source "package/python-autocommand/Config.in" + source "package/python-automat/Config.in" + source "package/python-avro/Config.in" + source "package/python-babel/Config.in" + source "package/python-backcall/Config.in" + source "package/python-bcrypt/Config.in" + source "package/python-beautifulsoup4/Config.in" + source "package/python-betterproto/Config.in" + source "package/python-bidict/Config.in" + source "package/python-bitarray/Config.in" + source "package/python-bitstring/Config.in" + source "package/python-bleak/Config.in" + source "package/python-blinker/Config.in" + source "package/python-bluezero/Config.in" + source "package/python-boto3/Config.in" + source "package/python-botocore/Config.in" + source "package/python-bottle/Config.in" + source "package/python-brotli/Config.in" + source "package/python-bsdiff4/Config.in" + source "package/python-cached-property/Config.in" + source "package/python-cachetools/Config.in" + source "package/python-can/Config.in" + source "package/python-canopen/Config.in" + source "package/python-cbor/Config.in" + source "package/python-cbor2/Config.in" + source "package/python-cchardet/Config.in" + source "package/python-certifi/Config.in" + source "package/python-cffi/Config.in" + source "package/python-channels/Config.in" + source "package/python-channels-redis/Config.in" + source "package/python-characteristic/Config.in" + source "package/python-chardet/Config.in" + source "package/python-charset-normalizer/Config.in" + source "package/python-cheetah/Config.in" + source "package/python-cheroot/Config.in" + source "package/python-cherrypy/Config.in" + source "package/python-click/Config.in" + source "package/python-colorama/Config.in" + source "package/python-colorlog/Config.in" + source "package/python-colorzero/Config.in" + source "package/python-configobj/Config.in" + source "package/python-configshell-fb/Config.in" + source "package/python-constantly/Config.in" + source "package/python-construct/Config.in" + source "package/python-contourpy/Config.in" + source "package/python-couchdb/Config.in" + source "package/python-crayons/Config.in" + source "package/python-crc16/Config.in" + source "package/python-crcmod/Config.in" + source "package/python-crontab/Config.in" + source "package/python-cryptography/Config.in" + source "package/python-cssselect/Config.in" + source "package/python-cssselect2/Config.in" + source "package/python-cssutils/Config.in" + source "package/python-cycler/Config.in" + source "package/python-daemon/Config.in" + source "package/python-daemonize/Config.in" + source "package/python-daphne/Config.in" + source "package/python-dataproperty/Config.in" + source "package/python-dateutil/Config.in" + source "package/python-dbus-fast/Config.in" + source "package/python-dbus-next/Config.in" + source "package/python-decorator/Config.in" + source "package/python-decouple/Config.in" + source "package/python-defusedxml/Config.in" + source "package/python-dialog3/Config.in" + source "package/python-dictdiffer/Config.in" + source "package/python-dicttoxml/Config.in" + source "package/python-dicttoxml2/Config.in" + source "package/python-distro/Config.in" + source "package/python-django/Config.in" + source "package/python-django-enumfields/Config.in" + source "package/python-dnspython/Config.in" + source "package/python-docker/Config.in" + source "package/python-docker-pycreds/Config.in" + source "package/python-dockerpty/Config.in" + source "package/python-docopt/Config.in" + source "package/python-docutils/Config.in" + source "package/python-dominate/Config.in" + source "package/python-dpkt/Config.in" + source "package/python-dtschema/Config.in" + source "package/python-ecdsa/Config.in" + source "package/python-email-validator/Config.in" + source "package/python-engineio/Config.in" + source "package/python-entrypoints/Config.in" + source "package/python-esptool/Config.in" + source "package/python-evdev/Config.in" + source "package/python-executing/Config.in" + source "package/python-falcon/Config.in" + source "package/python-fastapi/Config.in" + source "package/python-fastapi-sessions/Config.in" + source "package/python-fastui/Config.in" + source "package/python-filelock/Config.in" + source "package/python-fire/Config.in" + source "package/python-flask/Config.in" + source "package/python-flask-babel/Config.in" + source "package/python-flask-cors/Config.in" + source "package/python-flask-expects-json/Config.in" + source "package/python-flask-jsonrpc/Config.in" + source "package/python-flask-login/Config.in" + source "package/python-flask-smorest/Config.in" + source "package/python-flask-sqlalchemy/Config.in" + source "package/python-flask-wtf/Config.in" + source "package/python-flatbuffers/Config.in" + source "package/python-flup/Config.in" + source "package/python-fonttools/Config.in" + source "package/python-frozenlist/Config.in" + source "package/python-future/Config.in" + source "package/python-git/Config.in" + source "package/python-gitdb2/Config.in" + source "package/python-gnupg/Config.in" + source "package/python-gobject/Config.in" + source "package/python-google-api-core/Config.in" + source "package/python-google-auth/Config.in" + source "package/python-googleapis-common-protos/Config.in" + source "package/python-gpiozero/Config.in" + source "package/python-greenlet/Config.in" + source "package/python-grpc-requests/Config.in" + source "package/python-grpcio/Config.in" + source "package/python-grpcio-reflection/Config.in" + source "package/python-grpclib/Config.in" + source "package/python-gunicorn/Config.in" + source "package/python-h11/Config.in" + source "package/python-h2/Config.in" + source "package/python-hid/Config.in" + source "package/python-hiredis/Config.in" + source "package/python-hkdf/Config.in" + source "package/python-hpack/Config.in" + source "package/python-html5lib/Config.in" + source "package/python-httpcore/Config.in" + source "package/python-httplib2/Config.in" + source "package/python-httpx/Config.in" + source "package/python-huepy/Config.in" + source "package/python-humanize/Config.in" + source "package/python-hwdata/Config.in" + source "package/python-hyperframe/Config.in" + source "package/python-hyperlink/Config.in" + source "package/python-ibmiotf/Config.in" + source "package/python-idna/Config.in" + source "package/python-ifaddr/Config.in" + source "package/python-incremental/Config.in" + source "package/python-inflect/Config.in" + source "package/python-inflection/Config.in" + source "package/python-influxdb/Config.in" + source "package/python-iniconfig/Config.in" + source "package/python-iniparse/Config.in" + source "package/python-intelhex/Config.in" + source "package/python-iowait/Config.in" + source "package/python-ipdb/Config.in" + source "package/python-iptables/Config.in" + source "package/python-ipy/Config.in" + source "package/python-ipython/Config.in" + source "package/python-ipython-genutils/Config.in" + source "package/python-iso8601/Config.in" + source "package/python-itsdangerous/Config.in" + source "package/python-iwlib/Config.in" + source "package/python-janus/Config.in" + source "package/python-jaraco-classes/Config.in" + source "package/python-jaraco-collections/Config.in" + source "package/python-jaraco-context/Config.in" + source "package/python-jaraco-functools/Config.in" + source "package/python-jaraco-text/Config.in" + source "package/python-jc/Config.in" + source "package/python-jedi/Config.in" + source "package/python-jeepney/Config.in" + source "package/python-jinja2/Config.in" + source "package/python-jmespath/Config.in" + source "package/python-json-schema-validator/Config.in" + source "package/python-jsonmodels/Config.in" + source "package/python-jsonschema/Config.in" + source "package/python-jsonschema-specifications/Config.in" + source "package/python-keyring/Config.in" + source "package/python-kiwisolver/Config.in" + source "package/python-kmod/Config.in" + source "package/python-lark/Config.in" + source "package/python-libconfig/Config.in" + source "package/python-libevdev/Config.in" + source "package/python-libusb1/Config.in" + source "package/python-lmdb/Config.in" + source "package/python-lockfile/Config.in" + source "package/python-logbook/Config.in" + source "package/python-logstash/Config.in" + source "package/python-lxml/Config.in" + source "package/python-m2crypto/Config.in" + source "package/python-magic-wormhole/Config.in" + source "package/python-magic-wormhole-mailbox-server/Config.in" + source "package/python-magic-wormhole-transit-relay/Config.in" + source "package/python-mako/Config.in" + source "package/python-markdown/Config.in" + source "package/python-markdown2/Config.in" + source "package/python-markupsafe/Config.in" + source "package/python-marshmallow/Config.in" + source "package/python-marshmallow-sqlalchemy/Config.in" + source "package/python-matplotlib/Config.in" + source "package/python-matplotlib-inline/Config.in" + source "package/python-mbstrdecoder/Config.in" + source "package/python-memory-profiler/Config.in" + source "package/python-midiutil/Config.in" + source "package/python-mimeparse/Config.in" + source "package/python-minimalmodbus/Config.in" + source "package/python-mistune/Config.in" + source "package/python-ml-dtypes/Config.in" + source "package/python-modbus-tk/Config.in" + source "package/python-more-itertools/Config.in" + source "package/python-mpd2/Config.in" + source "package/python-mpmath/Config.in" + source "package/python-msgfy/Config.in" + source "package/python-msgpack/Config.in" + source "package/python-multidict/Config.in" + source "package/python-multipart/Config.in" + source "package/python-munch/Config.in" + source "package/python-mutagen/Config.in" + source "package/python-mwclient/Config.in" + source "package/python-mwscrape/Config.in" + source "package/python-mwscrape2slob/Config.in" + source "package/python-mypy-extensions/Config.in" + source "package/python-nested-dict/Config.in" + source "package/python-netaddr/Config.in" + source "package/python-netifaces/Config.in" + source "package/python-networkmanager/Config.in" + source "package/python-networkx/Config.in" + source "package/python-numpy/Config.in" + source "package/python-oauthlib/Config.in" + source "package/python-opcua-asyncio/Config.in" + source "package/python-orjson/Config.in" + source "package/python-outcome/Config.in" + source "package/python-packaging/Config.in" + source "package/python-paho-mqtt/Config.in" + source "package/python-paramiko/Config.in" + source "package/python-parso/Config.in" + source "package/python-passlib/Config.in" + source "package/python-pathpy/Config.in" + source "package/python-pathspec/Config.in" + source "package/python-pathtools/Config.in" + source "package/python-pathvalidate/Config.in" + source "package/python-periphery/Config.in" + source "package/python-pexpect/Config.in" + source "package/python-pickleshare/Config.in" + source "package/python-piexif/Config.in" + source "package/python-pigpio/Config.in" + source "package/python-pillow/Config.in" + source "package/python-pip/Config.in" + source "package/python-pluggy/Config.in" + source "package/python-ply/Config.in" + source "package/python-portend/Config.in" + source "package/python-posix-ipc/Config.in" + source "package/python-priority/Config.in" + source "package/python-prompt-toolkit/Config.in" + source "package/python-protobuf/Config.in" + source "package/python-psutil/Config.in" + source "package/python-psycopg2/Config.in" + source "package/python-ptyprocess/Config.in" + source "package/python-pudb/Config.in" + source "package/python-pure-eval/Config.in" + source "package/python-py/Config.in" + source "package/python-pyaes/Config.in" + source "package/python-pyalsa/Config.in" + source "package/python-pyasn1/Config.in" + source "package/python-pyasn1-modules/Config.in" + source "package/python-pyasynchat/Config.in" + source "package/python-pyasyncore/Config.in" + source "package/python-pybind/Config.in" + source "package/python-pycairo/Config.in" + source "package/python-pycares/Config.in" + source "package/python-pycparser/Config.in" + source "package/python-pycrate/Config.in" + source "package/python-pycryptodomex/Config.in" + source "package/python-pycups/Config.in" + source "package/python-pydal/Config.in" + source "package/python-pydantic/Config.in" + source "package/python-pydantic-core/Config.in" + source "package/python-pydevmem/Config.in" + source "package/python-pydyf/Config.in" + source "package/python-pyelftools/Config.in" + source "package/python-pyftpdlib/Config.in" + source "package/python-pygments/Config.in" + source "package/python-pyhamcrest/Config.in" + source "package/python-pyicu/Config.in" + source "package/python-pyinotify/Config.in" + source "package/python-pyjwt/Config.in" + source "package/python-pylibfdt/Config.in" + source "package/python-pylibftdi/Config.in" + source "package/python-pylru/Config.in" + source "package/python-pymodbus/Config.in" + source "package/python-pymupdf/Config.in" + source "package/python-pymysql/Config.in" + source "package/python-pynacl/Config.in" + source "package/python-pyndiff/Config.in" + source "package/python-pyopenssl/Config.in" + source "package/python-pyparsing/Config.in" + source "package/python-pyparted/Config.in" + source "package/python-pyphen/Config.in" + source "package/python-pypika-tortoise/Config.in" + source "package/python-pypng/Config.in" + source "package/python-pyqrcode/Config.in" + source "package/python-pyqt5/Config.in" + source "package/python-pyratemp/Config.in" + source "package/python-pyroute2/Config.in" + source "package/python-pyrsistent/Config.in" + source "package/python-pysendfile/Config.in" + source "package/python-pysensors/Config.in" + source "package/python-pysftp/Config.in" + source "package/python-pysmb/Config.in" + source "package/python-pysmi/Config.in" + source "package/python-pysnmp/Config.in" + source "package/python-pysnmp-mibs/Config.in" + source "package/python-pysocks/Config.in" + source "package/python-pyspnego/Config.in" + source "package/python-pytablereader/Config.in" + source "package/python-pytablewriter/Config.in" + source "package/python-pytest/Config.in" + source "package/python-pytest-asyncio/Config.in" + source "package/python-pytrie/Config.in" + source "package/python-pytz/Config.in" + source "package/python-pyudev/Config.in" + source "package/python-pyusb/Config.in" + source "package/python-pyyaml/Config.in" + source "package/python-pyzmq/Config.in" + source "package/python-qrcode/Config.in" + source "package/python-raven/Config.in" + source "package/python-redis/Config.in" + source "package/python-reedsolo/Config.in" + source "package/python-reentry/Config.in" + source "package/python-referencing/Config.in" + source "package/python-regex/Config.in" + source "package/python-remi/Config.in" + source "package/python-request-id/Config.in" + source "package/python-requests/Config.in" + source "package/python-requests-oauthlib/Config.in" + source "package/python-requests-toolbelt/Config.in" + source "package/python-rfc3987/Config.in" + source "package/python-rpds-py/Config.in" + source "package/python-rpi-gpio/Config.in" + source "package/python-rpi-ws281x/Config.in" + source "package/python-rsa/Config.in" + source "package/python-rtoml/Config.in" + source "package/python-rtslib-fb/Config.in" + source "package/python-ruamel-yaml/Config.in" + source "package/python-ruamel-yaml-clib/Config.in" + source "package/python-s3transfer/Config.in" + source "package/python-scandir/Config.in" + source "package/python-scapy/Config.in" + source "package/python-schedule/Config.in" + source "package/python-scipy/Config.in" + source "package/python-sdnotify/Config.in" + source "package/python-secretstorage/Config.in" + source "package/python-see/Config.in" + source "package/python-segno/Config.in" + source "package/python-selenium/Config.in" + source "package/python-semver/Config.in" + source "package/python-sentry-sdk/Config.in" + source "package/python-serial/Config.in" + source "package/python-serial-asyncio/Config.in" + source "package/python-service-identity/Config.in" + source "package/python-setproctitle/Config.in" + source "package/python-setuptools/Config.in" + source "package/python-sh/Config.in" + source "package/python-shutilwhich/Config.in" + source "package/python-simpleaudio/Config.in" + source "package/python-simplegeneric/Config.in" + source "package/python-simplejson/Config.in" + source "package/python-simplelogging/Config.in" + source "package/python-simplesqlite/Config.in" + source "package/python-sip/Config.in" + source "package/python-six/Config.in" + source "package/python-slob/Config.in" + source "package/python-smbprotocol/Config.in" + source "package/python-smbus-cffi/Config.in" + source "package/python-smmap2/Config.in" + source "package/python-snappy/Config.in" + source "package/python-sniffio/Config.in" + source "package/python-socketio/Config.in" + source "package/python-sockjs/Config.in" + source "package/python-sortedcontainers/Config.in" + source "package/python-soupsieve/Config.in" + source "package/python-spake2/Config.in" + source "package/python-spidev/Config.in" + source "package/python-sqlalchemy/Config.in" + source "package/python-sqliteschema/Config.in" + source "package/python-sqlparse/Config.in" + source "package/python-stack-data/Config.in" + source "package/python-starlette/Config.in" + source "package/python-sympy/Config.in" + source "package/python-systemd/Config.in" + source "package/python-tabledata/Config.in" + source "package/python-tcolorpy/Config.in" + source "package/python-tempora/Config.in" + source "package/python-termcolor/Config.in" + source "package/python-terminaltables/Config.in" + source "package/python-texttable/Config.in" + source "package/python-tftpy/Config.in" + source "package/python-thrift/Config.in" + source "package/python-tinycss2/Config.in" + source "package/python-tinyrpc/Config.in" + source "package/python-tomako/Config.in" + source "package/python-toml/Config.in" + source "package/python-tomli/Config.in" + source "package/python-tomli-w/Config.in" + source "package/python-tomlkit/Config.in" + source "package/python-tornado/Config.in" + source "package/python-tortoise-orm/Config.in" + source "package/python-tpm2-pytss/Config.in" + source "package/python-tqdm/Config.in" + source "package/python-trafaret/Config.in" + source "package/python-traitlets/Config.in" + source "package/python-treq/Config.in" + source "package/python-trio/Config.in" + source "package/python-trio-websocket/Config.in" + source "package/python-twisted/Config.in" + source "package/python-txaio/Config.in" + source "package/python-txdbus/Config.in" + source "package/python-txtorcon/Config.in" + source "package/python-typeguard/Config.in" + source "package/python-typepy/Config.in" + source "package/python-types-python-dateutil/Config.in" + source "package/python-typing-extensions/Config.in" + source "package/python-typing-inspect/Config.in" + source "package/python-u-msgpack/Config.in" + source "package/python-ubjson/Config.in" + source "package/python-uhid/Config.in" + source "package/python-ujson/Config.in" + source "package/python-unittest-xml-reporting/Config.in" + source "package/python-urllib3/Config.in" + source "package/python-urwid/Config.in" + source "package/python-urwid-readline/Config.in" + source "package/python-uvicorn/Config.in" + source "package/python-uvloop/Config.in" + source "package/python-validators/Config.in" + source "package/python-versiontools/Config.in" + source "package/python-visitor/Config.in" + source "package/python-watchdog/Config.in" + source "package/python-wcwidth/Config.in" + source "package/python-weasyprint/Config.in" + source "package/python-web2py/Config.in" + source "package/python-webargs/Config.in" + source "package/python-webencodings/Config.in" + source "package/python-webob/Config.in" + source "package/python-webpy/Config.in" + source "package/python-websocket-client/Config.in" + source "package/python-websockets/Config.in" + source "package/python-werkzeug/Config.in" + source "package/python-whoosh/Config.in" + source "package/python-wrapt/Config.in" + source "package/python-ws4py/Config.in" + source "package/python-wsaccel/Config.in" + source "package/python-wsproto/Config.in" + source "package/python-wtforms/Config.in" + source "package/python-xlib/Config.in" + source "package/python-xlrd/Config.in" + source "package/python-xlsxwriter/Config.in" + source "package/python-xlutils/Config.in" + source "package/python-xlwt/Config.in" + source "package/python-xmljson/Config.in" + source "package/python-xmltodict/Config.in" + source "package/python-xmodem/Config.in" + source "package/python-yamllint/Config.in" + source "package/python-yarl/Config.in" + source "package/python-yatl/Config.in" + source "package/python-zc-lockfile/Config.in" + source "package/python-zeroconf/Config.in" + source "package/python-zlmdb/Config.in" + source "package/python-zope-interface/Config.in" + source "package/python-zopfli/Config.in" +endmenu +endif + source "package/quickjs/Config.in" + source "package/ruby/Config.in" + source "package/swipl/Config.in" + source "package/tcl/Config.in" +if BR2_PACKAGE_TCL +menu "Tcl libraries/modules" + source "package/expect/Config.in" + source "package/tcllib/Config.in" +endmenu +endif +endmenu + +menu "Libraries" + +menu "Audio/Sound" + source "package/alsa-lib/Config.in" + source "package/alsa-plugins/Config.in" + source "package/alure/Config.in" + source "package/aubio/Config.in" + source "package/bcg729/Config.in" + source "package/caps/Config.in" + source "package/fdk-aac/Config.in" + source "package/gtkiostream/Config.in" + source "package/libao/Config.in" + source "package/libbroadvoice/Config.in" + source "package/libcanberra/Config.in" + source "package/libcdaudio/Config.in" + source "package/libcddb/Config.in" + source "package/libcdio/Config.in" + source "package/libcdio-paranoia/Config.in" + source "package/libcodec2/Config.in" + source "package/libcue/Config.in" + source "package/libcuefile/Config.in" + source "package/libebur128/Config.in" + source "package/libg7221/Config.in" + source "package/libgsm/Config.in" + source "package/libid3tag/Config.in" + source "package/libilbc/Config.in" + source "package/liblo/Config.in" + source "package/libmad/Config.in" + source "package/libmodplug/Config.in" + source "package/libmpdclient/Config.in" + source "package/libopenmpt/Config.in" + source "package/libreplaygain/Config.in" + source "package/libsamplerate/Config.in" + source "package/libsidplay2/Config.in" + source "package/libsilk/Config.in" + source "package/libsndfile/Config.in" + source "package/libsoundtouch/Config.in" + source "package/libsoxr/Config.in" + source "package/libvorbis/Config.in" + source "package/lilv/Config.in" + source "package/lv2/Config.in" + source "package/mp4v2/Config.in" + source "package/openal/Config.in" + source "package/opencore-amr/Config.in" + source "package/opus/Config.in" + source "package/opusfile/Config.in" + source "package/portaudio/Config.in" + source "package/sbc/Config.in" + source "package/spandsp/Config.in" + source "package/speex/Config.in" + source "package/speexdsp/Config.in" + source "package/sratom/Config.in" + source "package/taglib/Config.in" + source "package/tinyalsa/Config.in" + source "package/tremor/Config.in" + source "package/vo-aacenc/Config.in" + source "package/webrtc-audio-processing/Config.in" +endmenu + +menu "Compression and decompression" + source "package/libarchive/Config.in" + source "package/libdeflate/Config.in" + source "package/libjcat/Config.in" + source "package/libmspack/Config.in" + source "package/libsquish/Config.in" + source "package/libzip/Config.in" + source "package/lz4/Config.in" + source "package/lzo/Config.in" + source "package/minizip/Config.in" + source "package/minizip-zlib/Config.in" + source "package/snappy/Config.in" + source "package/szip/Config.in" + source "package/zchunk/Config.in" + source "package/zlib/Config.in" + source "package/zziplib/Config.in" +endmenu + +menu "Crypto" + source "package/bearssl/Config.in" + source "package/botan/Config.in" + source "package/ca-certificates/Config.in" + source "package/cryptodev-linux/Config.in" + source "package/cryptopp/Config.in" + source "package/gcr/Config.in" + source "package/gnutls/Config.in" + source "package/libargon2/Config.in" + source "package/libassuan/Config.in" + source "package/libb2/Config.in" + source "package/libgcrypt/Config.in" + source "package/libgpg-error/Config.in" + source "package/libgpgme/Config.in" + source "package/libkcapi/Config.in" + source "package/libksba/Config.in" + source "package/libmd/Config.in" + source "package/libmhash/Config.in" + source "package/libnss/Config.in" + source "package/libolm/Config.in" + source "package/libp11/Config.in" + source "package/libscrypt/Config.in" + source "package/libsecret/Config.in" + source "package/libsha1/Config.in" + source "package/libsodium/Config.in" + source "package/libspdm/Config.in" + source "package/libssh/Config.in" + source "package/libssh2/Config.in" + source "package/libtomcrypt/Config.in" + source "package/libuecc/Config.in" + source "package/libxcrypt/Config.in" + source "package/mbedtls/Config.in" + source "package/nettle/Config.in" + source "package/openssl/Config.in" + source "package/parsec-tool/Config.in" + source "package/pkcs11-helper/Config.in" + source "package/rhash/Config.in" + source "package/tinydtls/Config.in" + source "package/tpm2-openssl/Config.in" + source "package/tpm2-pkcs11/Config.in" + source "package/tpm2-tss/Config.in" + source "package/trousers/Config.in" + source "package/ustream-ssl/Config.in" + source "package/wolfssl/Config.in" + source "package/wolftpm/Config.in" +endmenu + +menu "Database" + source "package/berkeleydb/Config.in" + source "package/cppdb/Config.in" + source "package/gdbm/Config.in" + source "package/hiredis/Config.in" + source "package/kompexsqlite/Config.in" + source "package/leveldb/Config.in" + source "package/libdbi/Config.in" + source "package/libdbi-drivers/Config.in" + source "package/libgit2/Config.in" + source "package/libmdbx/Config.in" + source "package/libodb/Config.in" + source "package/libodb-boost/Config.in" + source "package/libodb-mysql/Config.in" + source "package/libodb-pgsql/Config.in" + source "package/libpqxx/Config.in" + source "package/lmdb/Config.in" + source "package/mariadb/Config.in" + source "package/mongodb/Config.in" + source "package/postgresql/Config.in" +if BR2_PACKAGE_POSTGRESQL + source "package/osm2pgsql/Config.in" + source "package/postgis/Config.in" +endif + source "package/redis/Config.in" + source "package/redis-plus-plus/Config.in" + source "package/rocksdb/Config.in" + source "package/sqlcipher/Config.in" + source "package/sqlite/Config.in" + source "package/sqlitecpp/Config.in" + source "package/timescaledb/Config.in" + source "package/unixodbc/Config.in" +endmenu + +menu "Filesystem" + source "package/libconfig/Config.in" + source "package/libconfuse/Config.in" + source "package/libfuse/Config.in" + source "package/libfuse3/Config.in" + source "package/liblockfile/Config.in" + source "package/libnfs/Config.in" + source "package/libsysfs/Config.in" + source "package/lockdev/Config.in" + source "package/physfs/Config.in" +endmenu + +menu "Graphics" + source "package/assimp/Config.in" + source "package/at-spi2-core/Config.in" + source "package/atkmm/Config.in" + source "package/atkmm2_28/Config.in" + source "package/bayer2rgb-neon/Config.in" + source "package/bullet/Config.in" + source "package/cairo/Config.in" + source "package/cairomm/Config.in" + source "package/cairomm1_14/Config.in" + source "package/chipmunk/Config.in" + source "package/cutekeyboard/Config.in" + source "package/exempi/Config.in" + source "package/exiv2/Config.in" + source "package/fltk/Config.in" + source "package/flutter-engine/Config.in" + source "package/fontconfig/Config.in" + source "package/freetype/Config.in" + source "package/gd/Config.in" + source "package/gdk-pixbuf/Config.in" + source "package/gdk-pixbuf-xlib/Config.in" + source "package/giblib/Config.in" + source "package/giflib/Config.in" + source "package/granite/Config.in" + source "package/graphene/Config.in" + source "package/graphite2/Config.in" + source "package/gtkmm3/Config.in" + source "package/gtksourceview/Config.in" + source "package/harfbuzz/Config.in" + source "package/ijs/Config.in" + source "package/imlib2/Config.in" + source "package/intel-gmmlib/Config.in" + source "package/intel-mediadriver/Config.in" + source "package/intel-mediasdk/Config.in" + source "package/intel-vpl-gpu-rt/Config.in" + source "package/irrlicht/Config.in" + source "package/jasper/Config.in" + source "package/jbig2dec/Config.in" + source "package/jpeg/Config.in" + source "package/kmsxx/Config.in" + source "package/lcms2/Config.in" + source "package/lensfun/Config.in" + source "package/leptonica/Config.in" + source "package/lesstif/Config.in" + source "package/libart/Config.in" + source "package/libavif/Config.in" + source "package/libdecor/Config.in" + source "package/libdmtx/Config.in" + source "package/libdri2/Config.in" + source "package/libdrm/Config.in" + source "package/libepoxy/Config.in" + source "package/libexif/Config.in" + source "package/libfm/Config.in" + source "package/libfm-extra/Config.in" + source "package/libfreeglut/Config.in" + source "package/libfreeimage/Config.in" + source "package/libgdiplus/Config.in" + source "package/libgeotiff/Config.in" + source "package/libglade/Config.in" + source "package/libglew/Config.in" + source "package/libglfw/Config.in" + source "package/libglu/Config.in" + source "package/libgta/Config.in" + source "package/libgtk2/Config.in" + source "package/libgtk3/Config.in" + source "package/libgtk4/Config.in" + source "package/libjxl/Config.in" + source "package/libmediaart/Config.in" + source "package/libmng/Config.in" + source "package/libpng/Config.in" + source "package/libqrencode/Config.in" + source "package/libraw/Config.in" + source "package/librsvg/Config.in" + source "package/libsvg/Config.in" + source "package/libsvg-cairo/Config.in" + source "package/libsvgtiny/Config.in" + source "package/libva/Config.in" + source "package/libva-intel-driver/Config.in" + source "package/libvdpau/Config.in" + source "package/libvips/Config.in" + source "package/libvpl/Config.in" + source "package/libwpe/Config.in" + source "package/menu-cache/Config.in" + source "package/opencl-clhpp/Config.in" + source "package/opencv3/Config.in" + source "package/opencv4/Config.in" + source "package/opencv4-contrib/Config.in" + source "package/opengl/Config.in" + source "package/openjpeg/Config.in" + source "package/pango/Config.in" + source "package/pangomm/Config.in" + source "package/pangomm2_46/Config.in" + source "package/pixman/Config.in" + source "package/poppler/Config.in" + source "package/powervr/Config.in" + source "package/stb/Config.in" + source "package/tiff/Config.in" + source "package/unclutter-xfixes/Config.in" + source "package/waffle/Config.in" + source "package/wayland/Config.in" + source "package/wayland-protocols/Config.in" + source "package/wayland-utils/Config.in" + source "package/waylandpp/Config.in" + source "package/webkitgtk/Config.in" + source "package/webp/Config.in" + source "package/wireplumber/Config.in" + source "package/wlroots/Config.in" + source "package/woff2/Config.in" + source "package/wpebackend-fdo/Config.in" + source "package/wpewebkit/Config.in" + source "package/zbar/Config.in" + source "package/zxing-cpp/Config.in" +endmenu + +menu "Hardware handling" + source "package/acsccid/Config.in" + source "package/bcm2835/Config.in" + source "package/c-periphery/Config.in" + source "package/ccid/Config.in" + source "package/dtc/Config.in" + source "package/gnu-efi/Config.in" + source "package/hackrf/Config.in" + source "package/hidapi/Config.in" + source "package/jitterentropy-library/Config.in" + source "package/lcdapi/Config.in" + source "package/let-me-create/Config.in" + source "package/libaio/Config.in" + source "package/libatasmart/Config.in" + source "package/libblockdev/Config.in" + source "package/libcec/Config.in" + source "package/libdisplay-info/Config.in" + source "package/libfreefare/Config.in" + source "package/libftdi/Config.in" + source "package/libftdi1/Config.in" + source "package/libgphoto2/Config.in" + source "package/libgpiod/Config.in" + source "package/libgpiod2/Config.in" + source "package/libgudev/Config.in" + source "package/libhid/Config.in" + source "package/libiio/Config.in" + source "package/libinput/Config.in" + source "package/libiqrf/Config.in" + source "package/libllcp/Config.in" + source "package/libmbim/Config.in" + source "package/libnfc/Config.in" + source "package/libnvme/Config.in" + source "package/libpciaccess/Config.in" + source "package/libphidget/Config.in" + source "package/libpri/Config.in" + source "package/libqmi/Config.in" + source "package/libqrtr-glib/Config.in" + source "package/libraw1394/Config.in" + source "package/librtas/Config.in" + source "package/librtlsdr/Config.in" + source "package/libserial/Config.in" + source "package/libserialport/Config.in" + source "package/libsigrok/Config.in" + source "package/libsigrokdecode/Config.in" + source "package/libsoc/Config.in" + source "package/libss7/Config.in" + source "package/libusb/Config.in" + source "package/libusb-compat/Config.in" + source "package/libusbgx/Config.in" + source "package/libv4l/Config.in" + source "package/libxkbcommon/Config.in" + source "package/mraa/Config.in" + source "package/mtdev/Config.in" + source "package/ne10/Config.in" + source "package/neardal/Config.in" + source "package/opencsd/Config.in" + source "package/opensc/Config.in" + source "package/owfs/Config.in" + source "package/pcsc-lite/Config.in" + source "package/pico-sdk/Config.in" + source "package/rpi-rgb-led-matrix/Config.in" + source "package/tslib/Config.in" + source "package/uhd/Config.in" + source "package/urg/Config.in" +endmenu + +menu "Javascript" + source "package/angularjs/Config.in" +if BR2_PACKAGE_ANGULARJS +menu "External AngularJS plugins" + source "package/angular-websocket/Config.in" +endmenu +endif + source "package/bootstrap/Config.in" + source "package/chartjs/Config.in" + source "package/datatables/Config.in" + source "package/datatables-buttons/Config.in" + source "package/datatables-fixedcolumns/Config.in" + source "package/datatables-responsive/Config.in" + source "package/duktape/Config.in" + source "package/explorercanvas/Config.in" + source "package/flot/Config.in" + source "package/forge/Config.in" + source "package/jquery/Config.in" +if BR2_PACKAGE_JQUERY +menu "External jQuery plugins" + source "package/jquery-datetimepicker/Config.in" + source "package/jquery-keyboard/Config.in" + source "package/jquery-mobile/Config.in" + source "package/jquery-sidebar/Config.in" + source "package/jquery-sparkline/Config.in" + source "package/jquery-ui/Config.in" + source "package/jquery-ui-themes/Config.in" + source "package/jquery-validation/Config.in" +endmenu +endif + source "package/jsmin/Config.in" + source "package/json-javascript/Config.in" + source "package/jszip/Config.in" + source "package/openlayers/Config.in" + source "package/popperjs/Config.in" + source "package/vis-network/Config.in" + source "package/vuejs/Config.in" +if BR2_PACKAGE_VUEJS +comment "External Vue.js plugins" + source "package/vuejs-router/Config.in" +endif +endmenu + +menu "JSON/XML" + source "package/benejson/Config.in" + source "package/cjson/Config.in" + source "package/expat/Config.in" + source "package/jansson/Config.in" + source "package/jose/Config.in" + source "package/jsmn/Config.in" + source "package/json-c/Config.in" + source "package/json-for-modern-cpp/Config.in" + source "package/json-glib/Config.in" + source "package/jsoncpp/Config.in" + source "package/libbson/Config.in" + source "package/libfastjson/Config.in" + source "package/libjson/Config.in" + source "package/libjwt/Config.in" + source "package/libroxml/Config.in" + source "package/libucl/Config.in" + source "package/libxml2/Config.in" + source "package/libxmlb/Config.in" + source "package/libxmlpp/Config.in" + source "package/libxmlrpc/Config.in" + source "package/libxslt/Config.in" + source "package/libyaml/Config.in" + source "package/mxml/Config.in" + source "package/pugixml/Config.in" + source "package/rapidjson/Config.in" + source "package/rapidxml/Config.in" + source "package/raptor/Config.in" + source "package/serd/Config.in" + source "package/sord/Config.in" + source "package/tinyxml/Config.in" + source "package/tinyxml2/Config.in" + source "package/valijson/Config.in" + source "package/xerces/Config.in" + source "package/xml-security-c/Config.in" + source "package/yajl/Config.in" + source "package/yaml-cpp/Config.in" +endmenu + +menu "Logging" + source "package/glog/Config.in" + source "package/hawktracer/Config.in" + source "package/liblog4c-localtime/Config.in" + source "package/liblogging/Config.in" + source "package/log4cplus/Config.in" + source "package/log4cpp/Config.in" + source "package/log4cxx/Config.in" + source "package/log4qt/Config.in" + source "package/opentracing-cpp/Config.in" + source "package/spdlog/Config.in" + source "package/ulog/Config.in" + source "package/zlog/Config.in" +endmenu + +menu "Multimedia" + source "package/bento4/Config.in" + source "package/bitstream/Config.in" + source "package/dav1d/Config.in" + source "package/kvazaar/Config.in" + source "package/libaacs/Config.in" + source "package/libass/Config.in" + source "package/libbdplus/Config.in" + source "package/libbluray/Config.in" + source "package/libcamera/Config.in" + source "package/libcamera-apps/Config.in" + source "package/libde265/Config.in" + source "package/libdvbcsa/Config.in" + source "package/libdvbpsi/Config.in" + source "package/libdvbsi/Config.in" + source "package/libdvdcss/Config.in" + source "package/libdvdnav/Config.in" + source "package/libdvdread/Config.in" + source "package/libebml/Config.in" + source "package/libhdhomerun/Config.in" + source "package/libheif/Config.in" + source "package/libimxvpuapi/Config.in" + source "package/libmatroska/Config.in" + source "package/libmms/Config.in" + source "package/libmpeg2/Config.in" + source "package/libogg/Config.in" + source "package/libopenaptx/Config.in" + source "package/libopenh264/Config.in" + source "package/libopusenc/Config.in" + source "package/libtheora/Config.in" + source "package/libudfread/Config.in" + source "package/libvpx/Config.in" + source "package/libyuv/Config.in" + source "package/live555/Config.in" + source "package/mediastreamer/Config.in" + source "package/x264/Config.in" + source "package/x265/Config.in" +endmenu + +menu "Networking" + source "package/agentpp/Config.in" + source "package/azmq/Config.in" + source "package/azure-iot-sdk-c/Config.in" + source "package/batman-adv/Config.in" + source "package/belle-sip/Config.in" + source "package/bluez5_utils-headers/Config.in" + source "package/c-ares/Config.in" + source "package/cni-plugins/Config.in" + source "package/cppzmq/Config.in" + source "package/curlpp/Config.in" + source "package/czmq/Config.in" + source "package/daq/Config.in" + source "package/daq3/Config.in" + source "package/davici/Config.in" + source "package/dht/Config.in" + source "package/enet/Config.in" + source "package/filemq/Config.in" + source "package/fmlib/Config.in" + source "package/freeradius-client/Config.in" + source "package/gensio/Config.in" + source "package/geoip/Config.in" + source "package/glib-networking/Config.in" + source "package/grpc/Config.in" + source "package/gssdp/Config.in" + source "package/gupnp/Config.in" + source "package/gupnp-av/Config.in" + source "package/gupnp-dlna/Config.in" + source "package/ibrcommon/Config.in" + source "package/ibrdtn/Config.in" + source "package/libcgi/Config.in" + source "package/libcgicc/Config.in" + source "package/libcoap/Config.in" + source "package/libcpprestsdk/Config.in" + source "package/libcurl/Config.in" + source "package/libdnet/Config.in" + source "package/libeXosip2/Config.in" + source "package/libest/Config.in" + source "package/libfcgi/Config.in" + source "package/libgsasl/Config.in" + source "package/libhtp/Config.in" + source "package/libhttpparser/Config.in" + source "package/libhttpserver/Config.in" + source "package/libidn/Config.in" + source "package/libidn2/Config.in" + source "package/libiscsi/Config.in" + source "package/libkrb5/Config.in" + source "package/libldns/Config.in" + source "package/libmaxminddb/Config.in" + source "package/libmbus/Config.in" + source "package/libmemcached/Config.in" + source "package/libmicrohttpd/Config.in" + source "package/libminiupnpc/Config.in" + source "package/libmnl/Config.in" + source "package/libmodbus/Config.in" + source "package/libmodsecurity/Config.in" + source "package/libnatpmp/Config.in" + source "package/libndp/Config.in" + source "package/libnet/Config.in" + source "package/libnetconf2/Config.in" + source "package/libnetfilter_acct/Config.in" + source "package/libnetfilter_conntrack/Config.in" + source "package/libnetfilter_cthelper/Config.in" + source "package/libnetfilter_cttimeout/Config.in" + source "package/libnetfilter_log/Config.in" + source "package/libnetfilter_queue/Config.in" + source "package/libnfnetlink/Config.in" + source "package/libnftnl/Config.in" + source "package/libnice/Config.in" + source "package/libnids/Config.in" + source "package/libnl/Config.in" + source "package/libnpupnp/Config.in" + source "package/liboauth/Config.in" + source "package/liboping/Config.in" + source "package/libosip2/Config.in" + source "package/libpagekite/Config.in" + source "package/libpcap/Config.in" + source "package/libpjsip/Config.in" + source "package/libpsl/Config.in" + source "package/librelp/Config.in" + source "package/librsync/Config.in" + source "package/libshairplay/Config.in" + source "package/libshout/Config.in" + source "package/libsocketcan/Config.in" + source "package/libsoup/Config.in" + source "package/libsoup3/Config.in" + source "package/libsrtp/Config.in" + source "package/libstrophe/Config.in" + source "package/libteam/Config.in" + source "package/libtelnet/Config.in" + source "package/libtirpc/Config.in" + source "package/libtorrent/Config.in" + source "package/libtorrent-rasterbar/Config.in" + source "package/libuev/Config.in" + source "package/libuhttpd/Config.in" + source "package/libupnp/Config.in" + source "package/libupnpp/Config.in" + source "package/liburiparser/Config.in" + source "package/libutp/Config.in" + source "package/libuwsc/Config.in" + source "package/libvncserver/Config.in" + source "package/libwebsock/Config.in" + source "package/libwebsockets/Config.in" + source "package/libyang/Config.in" + source "package/libzenoh-c/Config.in" + source "package/libzenoh-pico/Config.in" + source "package/lksctp-tools/Config.in" + source "package/mbuffer/Config.in" + source "package/mdnsd/Config.in" + source "package/mongoose/Config.in" + source "package/nanomsg/Config.in" + source "package/neon/Config.in" + source "package/netopeer2/Config.in" + source "package/nghttp2/Config.in" + source "package/norm/Config.in" + source "package/nss-mdns/Config.in" + source "package/nss-myhostname/Config.in" + source "package/nss-pam-ldapd/Config.in" + source "package/oatpp/Config.in" + source "package/omniorb/Config.in" + source "package/open-isns/Config.in" + source "package/open62541/Config.in" + source "package/openldap/Config.in" + source "package/openmpi/Config.in" + source "package/openpgm/Config.in" + source "package/openzwave/Config.in" + source "package/ortp/Config.in" + source "package/paho-mqtt-c/Config.in" + source "package/paho-mqtt-cpp/Config.in" + source "package/pistache/Config.in" + source "package/qdecoder/Config.in" + source "package/qpid-proton/Config.in" + source "package/rabbitmq-c/Config.in" + source "package/resiprocate/Config.in" + source "package/restclient-cpp/Config.in" + source "package/rtmpdump/Config.in" + source "package/siproxd/Config.in" + source "package/slirp/Config.in" + source "package/slirp4netns/Config.in" + source "package/snmppp/Config.in" + source "package/sofia-sip/Config.in" + source "package/sscep/Config.in" + source "package/sysrepo/Config.in" + source "package/thrift/Config.in" + source "package/usbredir/Config.in" + source "package/wampcc/Config.in" + source "package/websocketpp/Config.in" + source "package/zeromq/Config.in" + source "package/zmqpp/Config.in" + source "package/zyre/Config.in" +endmenu + +menu "Other" + source "package/ace/Config.in" + source "package/apr/Config.in" + source "package/apr-util/Config.in" + source "package/argp-standalone/Config.in" + source "package/armadillo/Config.in" + source "package/atf/Config.in" + source "package/avro-c/Config.in" + source "package/basu/Config.in" + source "package/bctoolbox/Config.in" + source "package/bdwgc/Config.in" + source "package/belr/Config.in" + source "package/boost/Config.in" + source "package/c-capnproto/Config.in" + source "package/capnproto/Config.in" + source "package/catch2/Config.in" + source "package/cctz/Config.in" + source "package/cereal/Config.in" + source "package/llvm-project/clang/Config.in" + source "package/cmocka/Config.in" + source "package/llvm-project/compiler-rt/Config.in" + source "package/cppcms/Config.in" + source "package/cracklib/Config.in" + source "package/dawgdic/Config.in" + source "package/ding-libs/Config.in" + source "package/dotconf/Config.in" + source "package/double-conversion/Config.in" + source "package/eigen/Config.in" + source "package/elfutils/Config.in" + source "package/ell/Config.in" + source "package/falcosecurity-libs/Config.in" + source "package/fftw/Config.in" + source "package/flann/Config.in" + source "package/flatbuffers/Config.in" + source "package/flatcc/Config.in" + source "package/fxdiv/Config.in" + source "package/gconf/Config.in" + source "package/gdal/Config.in" + source "package/gflags/Config.in" + source "package/gli/Config.in" + source "package/glibmm/Config.in" + source "package/glibmm2_66/Config.in" + source "package/glm/Config.in" + source "package/gmp/Config.in" + source "package/gobject-introspection/Config.in" + source "package/gsl/Config.in" + source "package/gtest/Config.in" + source "package/gumbo-parser/Config.in" + source "package/highway/Config.in" + source "package/jemalloc/Config.in" + source "package/lapack/Config.in" + source "package/libabseil-cpp/Config.in" + source "package/libargtable2/Config.in" + source "package/libatomic_ops/Config.in" + source "package/libavl/Config.in" + source "package/libb64/Config.in" + source "package/libbacktrace/Config.in" + source "package/libbsd/Config.in" + source "package/libbytesize/Config.in" + source "package/libcap/Config.in" + source "package/libcap-ng/Config.in" + source "package/libcgroup/Config.in" + source "package/llvm-project/libclc/Config.in" + source "package/libcofi/Config.in" + source "package/libcorrect/Config.in" + source "package/libcrossguid/Config.in" + source "package/libcsv/Config.in" + source "package/libdaemon/Config.in" + source "package/libdex/Config.in" + source "package/libdill/Config.in" + source "package/libeastl/Config.in" + source "package/libee/Config.in" + source "package/libev/Config.in" + source "package/libevdev/Config.in" + source "package/libevent/Config.in" + source "package/libexecinfo/Config.in" + source "package/libffi/Config.in" + source "package/libfutils/Config.in" + source "package/libgee/Config.in" + source "package/libgeos/Config.in" + source "package/libglib2/Config.in" + source "package/libglob/Config.in" + source "package/libical/Config.in" + source "package/libite/Config.in" + source "package/libks/Config.in" + source "package/liblinear/Config.in" + source "package/libloki/Config.in" + source "package/libnpth/Config.in" + source "package/libnspr/Config.in" + source "package/libosmium/Config.in" + source "package/libpeas/Config.in" + source "package/libpfm4/Config.in" + source "package/libplatform/Config.in" + source "package/libplist/Config.in" + source "package/libpthread-stubs/Config.in" + source "package/libpthsem/Config.in" + source "package/libpwquality/Config.in" + source "package/libqb/Config.in" + source "package/libseccomp/Config.in" + source "package/libshdata/Config.in" + source "package/libsigc/Config.in" + source "package/libsigc2/Config.in" + source "package/libsigsegv/Config.in" + source "package/libsolv/Config.in" + source "package/libspatialindex/Config.in" + source "package/libtalloc/Config.in" + source "package/libtasn1/Config.in" + source "package/libtommath/Config.in" + source "package/libtpl/Config.in" + source "package/libubox/Config.in" + source "package/libuci/Config.in" + source "package/libucontext/Config.in" + source "package/libunwind/Config.in" + source "package/liburcu/Config.in" + source "package/liburing/Config.in" + source "package/libutempter/Config.in" + source "package/libuv/Config.in" + source "package/lightning/Config.in" + source "package/linux-pam/Config.in" +if BR2_PACKAGE_LINUX_PAM +comment "linux-pam plugins" + source "package/libpam-nfc/Config.in" + source "package/libpam-radius-auth/Config.in" + source "package/libpam-tacplus/Config.in" +endif + source "package/liquid-dsp/Config.in" + source "package/llvm-project/llvm/Config.in" + source "package/lttng-libust/Config.in" + source "package/matio/Config.in" + source "package/mpc/Config.in" + source "package/mpdecimal/Config.in" + source "package/mpfr/Config.in" + source "package/mpir/Config.in" + source "package/msgpack/Config.in" + source "package/musl-compat-headers/Config.in" + source "package/musl-fts/Config.in" + source "package/neon-2-sse/Config.in" + source "package/openblas/Config.in" + source "package/orc/Config.in" + source "package/p11-kit/Config.in" + source "package/poco/Config.in" + source "package/protobuf/Config.in" + source "package/protobuf-c/Config.in" + source "package/protozero/Config.in" + source "package/qhull/Config.in" + source "package/qlibc/Config.in" + source "package/reproc/Config.in" + source "package/riemann-c-client/Config.in" + source "package/shapelib/Config.in" + source "package/skalibs/Config.in" + source "package/sphinxbase/Config.in" + source "package/startup-notification/Config.in" + source "package/tbb/Config.in" + source "package/tinycbor/Config.in" + source "package/tl-expected/Config.in" + source "package/tllist/Config.in" + source "package/tz/Config.in" + source "package/tzdata/Config.in" + source "package/uvw/Config.in" + source "package/volk/Config.in" + source "package/xapian/Config.in" +endmenu + +menu "Security" + source "package/libapparmor/Config.in" + source "package/libselinux/Config.in" + source "package/libsemanage/Config.in" + source "package/libsepol/Config.in" + source "package/safeclib/Config.in" + source "package/softhsm2/Config.in" +endmenu + +menu "Text and terminal handling" + source "package/augeas/Config.in" + source "package/cli11/Config.in" + source "package/docopt-cpp/Config.in" + source "package/enchant/Config.in" + source "package/fcft/Config.in" + source "package/fmt/Config.in" + source "package/fstrcmp/Config.in" + source "package/icu/Config.in" + source "package/inih/Config.in" + source "package/libcli/Config.in" + source "package/libedit/Config.in" + source "package/libenca/Config.in" + source "package/libestr/Config.in" + source "package/libfribidi/Config.in" + source "package/libiconv/Config.in" + source "package/libunibreak/Config.in" + source "package/libunistring/Config.in" + source "package/linenoise/Config.in" + source "package/ncurses/Config.in" + source "package/newt/Config.in" + source "package/oniguruma/Config.in" + source "package/pcre/Config.in" + source "package/pcre2/Config.in" + source "package/popt/Config.in" + source "package/re2/Config.in" + source "package/readline/Config.in" + source "package/slang/Config.in" + source "package/tclap/Config.in" + source "package/termcolor/Config.in" + source "package/utf8proc/Config.in" +endmenu + +endmenu + +menu "Mail" + source "package/dovecot/Config.in" + source "package/exim/Config.in" + source "package/fetchmail/Config.in" + source "package/heirloom-mailx/Config.in" + source "package/libesmtp/Config.in" + source "package/msmtp/Config.in" + source "package/mutt/Config.in" + source "package/sylpheed/Config.in" +endmenu + +menu "Miscellaneous" + source "package/aespipe/Config.in" + source "package/bc/Config.in" + source "package/bitcoin/Config.in" + source "package/clamav/Config.in" + source "package/collectd/Config.in" + source "package/collectl/Config.in" + source "package/domoticz/Config.in" + source "package/empty/Config.in" + source "package/fft-eval/Config.in" + source "package/gitlab-runner/Config.in" + source "package/gnuradio/Config.in" + source "package/googlefontdirectory/Config.in" + source "package/gqrx/Config.in" + source "package/gr-osmosdr/Config.in" + source "package/gsettings-desktop-schemas/Config.in" + source "package/haveged/Config.in" + source "package/linux-syscall-support/Config.in" + source "package/mobile-broadband-provider-info/Config.in" + source "package/netdata/Config.in" + source "package/proj/Config.in" + source "package/qemu/Config.in" + source "package/qpdf/Config.in" + source "package/rtl_433/Config.in" + source "package/shared-mime-info/Config.in" + source "package/sunwait/Config.in" + source "package/taskd/Config.in" + source "package/wine/Config.in" + source "package/xmrig/Config.in" + source "package/xutil_util-macros/Config.in" + source "package/z3/Config.in" +endmenu + +menu "Networking applications" + source "package/aircrack-ng/Config.in" + source "package/alfred/Config.in" + source "package/aoetools/Config.in" + source "package/apache/Config.in" +if BR2_PACKAGE_APACHE +menu "External Apache modules" + source "package/modsecurity2/Config.in" +endmenu +endif + source "package/argus/Config.in" + source "package/arp-scan/Config.in" + source "package/arptables/Config.in" + source "package/asterisk/Config.in" + source "package/atftp/Config.in" + source "package/autossh/Config.in" + source "package/avahi/Config.in" + source "package/axel/Config.in" + source "package/babeld/Config.in" + source "package/bandwidthd/Config.in" + source "package/batctl/Config.in" + source "package/bcusdk/Config.in" + source "package/bind/Config.in" + source "package/bird/Config.in" + source "package/bluez-tools/Config.in" + source "package/bluez5_utils/Config.in" + source "package/bmon/Config.in" + source "package/bmx7/Config.in" + source "package/boinc/Config.in" + source "package/brcm-patchram-plus/Config.in" + source "package/bridge-utils/Config.in" + source "package/bwm-ng/Config.in" + source "package/c-icap/Config.in" + source "package/c-icap-modules/Config.in" + source "package/can-utils/Config.in" + source "package/cannelloni/Config.in" + source "package/casync/Config.in" + source "package/cfm/Config.in" + source "package/chrony/Config.in" + source "package/civetweb/Config.in" + source "package/cloudflared/Config.in" + source "package/connman/Config.in" + source "package/connman-gtk/Config.in" + source "package/conntrack-tools/Config.in" + source "package/corkscrew/Config.in" + source "package/crda/Config.in" + source "package/ctorrent/Config.in" + source "package/cups/Config.in" + source "package/cups-filters/Config.in" + source "package/cups-pk-helper/Config.in" + source "package/dante/Config.in" + source "package/darkhttpd/Config.in" + source "package/dehydrated/Config.in" + source "package/dhcp/Config.in" + source "package/dhcpcd/Config.in" + source "package/dhcpdump/Config.in" + source "package/dnsmasq/Config.in" + source "package/drbd-utils/Config.in" + source "package/dropbear/Config.in" + source "package/easyframes/Config.in" + source "package/ebtables/Config.in" + source "package/ejabberd/Config.in" + source "package/ethtool/Config.in" + source "package/faifa/Config.in" + source "package/fail2ban/Config.in" + source "package/fastd/Config.in" + source "package/fcgiwrap/Config.in" + source "package/firewalld/Config.in" + source "package/flannel/Config.in" + source "package/fmc/Config.in" + source "package/fping/Config.in" + source "package/freeradius-server/Config.in" + source "package/freeswitch/Config.in" + source "package/freeswitch-mod-bcg729/Config.in" + source "package/frr/Config.in" + source "package/gerbera/Config.in" + source "package/gesftpserver/Config.in" + source "package/gloox/Config.in" + source "package/glorytun/Config.in" + source "package/gupnp-tools/Config.in" + source "package/gutenprint/Config.in" + source "package/hans/Config.in" + source "package/haproxy/Config.in" + source "package/hiawatha/Config.in" + source "package/hostapd/Config.in" + source "package/hplip/Config.in" + source "package/htpdate/Config.in" + source "package/httping/Config.in" + source "package/i2pd/Config.in" + source "package/ibrdtn-tools/Config.in" + source "package/ibrdtnd/Config.in" + source "package/ifenslave/Config.in" + source "package/ifmetric/Config.in" + source "package/ifplugd/Config.in" + source "package/iftop/Config.in" + source "package/ifupdown/Config.in" + source "package/ifupdown-scripts/Config.in" + source "package/igd2-for-linux/Config.in" + source "package/igh-ethercat/Config.in" + source "package/igmpproxy/Config.in" + source "package/inadyn/Config.in" + source "package/iodine/Config.in" + source "package/ipcalc/Config.in" + source "package/iperf/Config.in" + source "package/iperf3/Config.in" + source "package/iproute2/Config.in" + source "package/ipset/Config.in" + source "package/iptables/Config.in" + source "package/iptraf-ng/Config.in" + source "package/iputils/Config.in" + source "package/irssi/Config.in" + source "package/iw/Config.in" + source "package/iwd/Config.in" + source "package/janus-gateway/Config.in" + source "package/keepalived/Config.in" + source "package/kismet/Config.in" + source "package/knock/Config.in" + source "package/ksmbd-tools/Config.in" + source "package/leafnode2/Config.in" + source "package/lft/Config.in" + source "package/lftp/Config.in" + source "package/lighttpd/Config.in" + source "package/linknx/Config.in" + source "package/links/Config.in" + source "package/linphone/Config.in" + source "package/linux-zigbee/Config.in" + source "package/linuxptp/Config.in" + source "package/lldpd/Config.in" + source "package/lrzsz/Config.in" + source "package/lynx/Config.in" + source "package/macchanger/Config.in" + source "package/memcached/Config.in" + source "package/mii-diag/Config.in" + source "package/mini-snmpd/Config.in" + source "package/minidlna/Config.in" + source "package/minissdpd/Config.in" + source "package/mjpg-streamer/Config.in" + source "package/modem-manager/Config.in" + source "package/mongrel2/Config.in" + source "package/mosh/Config.in" + source "package/mosquitto/Config.in" + source "package/mrouted/Config.in" + source "package/mrp/Config.in" + source "package/mstpd/Config.in" + source "package/mtr/Config.in" + source "package/nbd/Config.in" + source "package/ncftp/Config.in" + source "package/ndisc6/Config.in" + source "package/net-tools/Config.in" + source "package/netatalk/Config.in" + source "package/netcalc/Config.in" + source "package/netcat/Config.in" + source "package/netcat-openbsd/Config.in" + source "package/nethogs/Config.in" + source "package/netplug/Config.in" + source "package/netsnmp/Config.in" + source "package/netstat-nat/Config.in" + source "package/network-manager/Config.in" + source "package/network-manager-openvpn/Config.in" + source "package/networkd-dispatcher/Config.in" + source "package/nfacct/Config.in" + source "package/nftables/Config.in" + source "package/nginx/Config.in" +if BR2_PACKAGE_NGINX +menu "External nginx modules" + source "package/nginx-dav-ext/Config.in" + source "package/nginx-modsecurity/Config.in" + source "package/nginx-naxsi/Config.in" + source "package/nginx-upload/Config.in" +endmenu +endif + source "package/ngircd/Config.in" + source "package/ngrep/Config.in" + source "package/nload/Config.in" + source "package/nmap/Config.in" + source "package/noip/Config.in" + source "package/ntp/Config.in" + source "package/ntpsec/Config.in" + source "package/nuttcp/Config.in" + source "package/odhcp6c/Config.in" + source "package/odhcploc/Config.in" + source "package/olsr/Config.in" + source "package/open-iscsi/Config.in" + source "package/open-lldp/Config.in" + source "package/open-plc-utils/Config.in" + source "package/openconnect/Config.in" + source "package/openntpd/Config.in" + source "package/openobex/Config.in" + source "package/openresolv/Config.in" + source "package/openssh/Config.in" + source "package/openswan/Config.in" + source "package/openvpn/Config.in" + source "package/p910nd/Config.in" + source "package/parprouted/Config.in" + source "package/phidgetwebservice/Config.in" + source "package/phytool/Config.in" + source "package/pimd/Config.in" + source "package/pixiewps/Config.in" + source "package/pound/Config.in" + source "package/pppd/Config.in" + source "package/pptp-linux/Config.in" + source "package/privoxy/Config.in" + source "package/proftpd/Config.in" + source "package/prosody/Config.in" + source "package/proxychains-ng/Config.in" + source "package/ptpd/Config.in" + source "package/ptpd2/Config.in" + source "package/pure-ftpd/Config.in" + source "package/putty/Config.in" + source "package/quagga/Config.in" + source "package/radvd/Config.in" + source "package/reaver/Config.in" + source "package/redir/Config.in" + source "package/rp-pppoe/Config.in" + source "package/rpcbind/Config.in" + source "package/rsh-redone/Config.in" + source "package/rsync/Config.in" + source "package/rtorrent/Config.in" + source "package/rtptools/Config.in" + source "package/rygel/Config.in" + source "package/s6-dns/Config.in" + source "package/s6-networking/Config.in" + source "package/samba4/Config.in" + source "package/sconeserver/Config.in" + source "package/ser2net/Config.in" + source "package/shadowsocks-libev/Config.in" + source "package/shairport-sync/Config.in" + source "package/shellinabox/Config.in" + source "package/smcroute/Config.in" + source "package/sngrep/Config.in" + source "package/snmpclitools/Config.in" + source "package/snort/Config.in" + source "package/snort3/Config.in" + source "package/socat/Config.in" + source "package/socketcand/Config.in" + source "package/softether/Config.in" + source "package/spawn-fcgi/Config.in" + source "package/spice/Config.in" + source "package/spice-protocol/Config.in" + source "package/squid/Config.in" + source "package/ssdp-responder/Config.in" + source "package/sshguard/Config.in" + source "package/sshpass/Config.in" + source "package/sslh/Config.in" + source "package/strongswan/Config.in" + source "package/stunnel/Config.in" + source "package/suricata/Config.in" + source "package/system-config-printer/Config.in" + source "package/tcpdump/Config.in" + source "package/tcping/Config.in" + source "package/tcpreplay/Config.in" + source "package/tftpd/Config.in" + source "package/thttpd/Config.in" + source "package/tinc/Config.in" + source "package/tinyproxy/Config.in" + source "package/tinyssh/Config.in" + source "package/tipidee/Config.in" + source "package/tor/Config.in" + source "package/traceroute/Config.in" + source "package/transmission/Config.in" + source "package/tunctl/Config.in" + source "package/tvheadend/Config.in" + source "package/uacme/Config.in" + source "package/udpcast/Config.in" + source "package/uftp/Config.in" + source "package/uhttpd/Config.in" + source "package/ulogd/Config.in" + source "package/unbound/Config.in" + source "package/uqmi/Config.in" + source "package/uredir/Config.in" + source "package/ushare/Config.in" + source "package/ussp-push/Config.in" + source "package/ustreamer/Config.in" + source "package/vde2/Config.in" + source "package/vdr/Config.in" + source "package/vdr-plugin-vnsiserver/Config.in" + source "package/vnstat/Config.in" + source "package/vpnc/Config.in" + source "package/vsftpd/Config.in" + source "package/vtun/Config.in" + source "package/wavemon/Config.in" + source "package/wget/Config.in" + source "package/whois/Config.in" + source "package/wireguard-linux-compat/Config.in" + source "package/wireguard-tools/Config.in" + source "package/wireless-regdb/Config.in" + source "package/wireless_tools/Config.in" + source "package/wireshark/Config.in" + source "package/wpa_supplicant/Config.in" + source "package/wpan-tools/Config.in" + source "package/xinetd/Config.in" + source "package/xl2tp/Config.in" + source "package/xtables-addons/Config.in" + source "package/zabbix/Config.in" + source "package/zeek/Config.in" + source "package/znc/Config.in" + +endmenu + +menu "Package managers" +comment "-------------------------------------------------------" +comment "Please note: " +comment "- Buildroot does *not* generate binary packages, " +comment "- Buildroot does *not* install any package database. " +comment "* " +comment "It is up to you to provide those by yourself if you " +comment "want to use any of those package managers. " +comment "* " +comment "See the manual: " +comment "http://buildroot.org/manual.html#faq-no-binary-packages" +comment "-------------------------------------------------------" + source "package/opkg/Config.in" + source "package/opkg-utils/Config.in" + source "package/rpm/Config.in" +endmenu + +menu "Real-Time" + source "package/rtai/Config.in" + source "package/xenomai/Config.in" +endmenu + +menu "Security" + source "package/apparmor/Config.in" + source "package/checkpolicy/Config.in" + source "package/ima-evm-utils/Config.in" + source "package/optee-client/Config.in" + source "package/optee-examples/Config.in" + source "package/optee-test/Config.in" + source "package/paxtest/Config.in" + source "package/policycoreutils/Config.in" + source "package/refpolicy/Config.in" + source "package/restorecond/Config.in" + source "package/selinux-python/Config.in" + source "package/semodule-utils/Config.in" + source "package/setools/Config.in" + source "package/urandom-scripts/Config.in" +endmenu + +menu "Shell and utilities" +comment "Shells" + source "package/bash/Config.in" + source "package/dash/Config.in" + source "package/mksh/Config.in" + source "package/nushell/Config.in" + source "package/zsh/Config.in" +comment "Utilities" + source "package/apg/Config.in" + source "package/at/Config.in" + source "package/bash-completion/Config.in" + source "package/catatonit/Config.in" + source "package/ccrypt/Config.in" + source "package/crudini/Config.in" + source "package/dialog/Config.in" + source "package/dtach/Config.in" + source "package/easy-rsa/Config.in" + source "package/eza/Config.in" + source "package/file/Config.in" + source "package/gnupg/Config.in" + source "package/gnupg2/Config.in" + source "package/inotify-tools/Config.in" + source "package/lockfile-progs/Config.in" + source "package/logrotate/Config.in" + source "package/logsurfer/Config.in" + source "package/minisign/Config.in" + source "package/neofetch/Config.in" + source "package/pdmenu/Config.in" + source "package/pinentry/Config.in" + source "package/qprint/Config.in" + source "package/ranger/Config.in" + source "package/rlwrap/Config.in" + source "package/rtty/Config.in" + source "package/screen/Config.in" + source "package/screenfetch/Config.in" + source "package/sexpect/Config.in" + source "package/sudo/Config.in" + source "package/terminology/Config.in" + source "package/time/Config.in" + source "package/tini/Config.in" + source "package/tmux/Config.in" + source "package/ttyd/Config.in" + source "package/which/Config.in" + source "package/wtfutil/Config.in" + source "package/xmlstarlet/Config.in" + source "package/xxhash/Config.in" + source "package/ytree/Config.in" + source "package/zoxide/Config.in" +endmenu + +menu "System tools" + source "package/acl/Config.in" + source "package/android-tools/Config.in" + source "package/atop/Config.in" + source "package/attr/Config.in" + source "package/audit/Config.in" + source "package/balena-engine/Config.in" + source "package/bubblewrap/Config.in" + source "package/cgroupfs-mount/Config.in" + source "package/circus/Config.in" + source "package/conmon/Config.in" + source "package/containerd/Config.in" + source "package/coreutils/Config.in" + source "package/cpulimit/Config.in" + source "package/cpuload/Config.in" + source "package/criu/Config.in" + source "package/crun/Config.in" + source "package/daemon/Config.in" + source "package/dc3dd/Config.in" + source "package/dcron/Config.in" + source "package/ddrescue/Config.in" + source "package/debianutils/Config.in" + source "package/docker-cli/Config.in" + source "package/docker-cli-buildx/Config.in" + source "package/docker-compose/Config.in" + source "package/docker-engine/Config.in" + source "package/earlyoom/Config.in" + source "package/efibootmgr/Config.in" + source "package/efivar/Config.in" + source "package/embiggen-disk/Config.in" + source "package/emlog/Config.in" + source "package/fluent-bit/Config.in" + source "package/ftop/Config.in" + source "package/getent/Config.in" + source "package/gkrellm/Config.in" + source "package/htop/Config.in" + source "package/ibm-sw-tpm2/Config.in" + source "package/initscripts/Config.in" + source "package/iotop/Config.in" + source "package/iprutils/Config.in" + source "package/irqbalance/Config.in" + source "package/jailhouse/Config.in" + source "package/keyutils/Config.in" + source "package/kmod/Config.in" + source "package/kmon/Config.in" + source "package/kvmtool/Config.in" + source "package/libostree/Config.in" + source "package/libvirt/Config.in" + source "package/lxc/Config.in" + source "package/makedumpfile/Config.in" + source "package/mender/Config.in" + source "package/mender-connect/Config.in" + source "package/mender-grubenv/Config.in" + source "package/mfoc/Config.in" + source "package/moby-buildkit/Config.in" + source "package/mokutil/Config.in" + source "package/monit/Config.in" + source "package/multipath-tools/Config.in" + source "package/ncdu/Config.in" + source "package/nerdctl/Config.in" + source "package/netifrc/Config.in" + source "package/numactl/Config.in" + source "package/nut/Config.in" + source "package/openrc/Config.in" + source "package/openvmtools/Config.in" + source "package/pamtester/Config.in" + source "package/petitboot/Config.in" + source "package/polkit/Config.in" + source "package/powerpc-utils/Config.in" + source "package/procps-ng/Config.in" + source "package/procrank_linux/Config.in" + source "package/procs/Config.in" + source "package/psmisc/Config.in" + source "package/pwgen/Config.in" + source "package/qbee-agent/Config.in" + source "package/quota/Config.in" + source "package/quotatool/Config.in" + source "package/rauc/Config.in" + source "package/rauc-hawkbit-updater/Config.in" + source "package/rsyslog/Config.in" + source "package/runc/Config.in" + source "package/s390-tools/Config.in" + source "package/s6/Config.in" + source "package/s6-linux-init/Config.in" + source "package/s6-linux-utils/Config.in" + source "package/s6-portable-utils/Config.in" + source "package/s6-rc/Config.in" + source "package/scrub/Config.in" + source "package/scrypt/Config.in" + source "package/sdbus-cpp/Config.in" + source "package/sdbusplus/Config.in" + source "package/seatd/Config.in" + source "package/shadow/Config.in" + source "package/smack/Config.in" + source "package/start-stop-daemon/Config.in" + source "package/supervisor/Config.in" + source "package/swupdate/Config.in" + source "package/sysklogd/Config.in" + source "package/syslog-ng/Config.in" + source "package/systemd/Config.in" + source "package/systemd-bootchart/Config.in" + source "package/sysvinit/Config.in" + source "package/tar/Config.in" + source "package/tealdeer/Config.in" + source "package/thermald/Config.in" + source "package/tpm-tools/Config.in" + source "package/tpm2-abrmd/Config.in" + source "package/tpm2-tools/Config.in" + source "package/tpm2-totp/Config.in" + source "package/unscd/Config.in" + source "package/util-linux/Config.in" + source "package/watchdog/Config.in" + source "package/watchdogd/Config.in" + source "package/xdg-dbus-proxy/Config.in" + source "package/xen/Config.in" + source "package/xvisor/Config.in" +endmenu + +menu "Text editors and viewers" + source "package/bat/Config.in" + source "package/ed/Config.in" + source "package/joe/Config.in" + source "package/less/Config.in" + source "package/mc/Config.in" + source "package/mg/Config.in" + source "package/most/Config.in" + source "package/nano/Config.in" + source "package/uemacs/Config.in" + source "package/vim/Config.in" +endmenu + +endmenu diff --git a/package/Config.in.host b/package/Config.in.host new file mode 100644 index 00000000..e4fbee4f --- /dev/null +++ b/package/Config.in.host @@ -0,0 +1,129 @@ +menu "Host utilities" + + source "package/abootimg/Config.in.host" + source "package/aespipe/Config.in.host" + source "package/agent-proxy/Config.in.host" + source "package/amlogic-boot-fip/Config.in.host" + source "package/android-tools/Config.in.host" + source "package/asn1c/Config.in.host" + source "package/babeltrace2/Config.in.host" + source "package/bmap-tools/Config.in.host" + source "package/bootgen/Config.in.host" + source "package/btrfs-progs/Config.in.host" + source "package/cbootimage/Config.in.host" + source "package/checkpolicy/Config.in.host" + source "package/checksec/Config.in.host" + source "package/cmake/Config.in.host" + source "package/composer/Config.in.host" + source "package/cramfs/Config.in.host" + source "package/crudini/Config.in.host" + source "package/cryptsetup/Config.in.host" + source "package/dbus-python/Config.in.host" + source "package/delve/Config.in.host" + source "package/depot-tools/Config.in.host" + source "package/dfu-util/Config.in.host" + source "package/dos2unix/Config.in.host" + source "package/dosfstools/Config.in.host" + source "package/doxygen/Config.in.host" + source "package/dracut/Config.in.host" + source "package/dtc/Config.in.host" + source "package/e2fsprogs/Config.in.host" + source "package/e2tools/Config.in.host" + source "package/environment-setup/Config.in.host" + source "package/erofs-utils/Config.in.host" + source "package/eudev/Config.in.host" + source "package/exfatprogs/Config.in.host" + source "package/f2fs-tools/Config.in.host" + source "package/faketime/Config.in.host" + source "package/fatcat/Config.in.host" + source "package/firmware-utils/Config.in.host" + source "package/flutter-sdk-bin/Config.in.host" + source "package/fwup/Config.in.host" + source "package/genext2fs/Config.in.host" + source "package/genimage/Config.in.host" + source "package/genpart/Config.in.host" + source "package/gnupg/Config.in.host" + source "package/gnupg2/Config.in.host" + source "package/go/Config.in.host" + source "package/google-breakpad/Config.in.host" + source "package/gptfdisk/Config.in.host" + source "package/imagemagick/Config.in.host" + source "package/imx-mkimage/Config.in.host" + source "package/imx-usb-loader/Config.in.host" + source "package/jh71xx-tools/Config.in.host" + source "package/jq/Config.in.host" + source "package/jsmin/Config.in.host" + source "package/kmod/Config.in.host" + source "package/libp11/Config.in.host" + source "package/llvm-project/lld/Config.in.host" + source "package/lpc3250loader/Config.in.host" + source "package/lttng-babeltrace/Config.in.host" + source "package/lzma-alone/Config.in.host" + source "package/mender-artifact/Config.in.host" + source "package/meson-tools/Config.in.host" + source "package/mfgtools/Config.in.host" + source "package/microchip-hss-payload-generator/Config.in.host" + source "package/minisign/Config.in.host" + source "package/mkpasswd/Config.in.host" + source "package/moby-buildkit/Config.in.host" + source "package/mosquitto/Config.in.host" + source "package/mtd/Config.in.host" + source "package/mtools/Config.in.host" + source "package/mxsldr/Config.in.host" + source "package/nodejs/Config.in.host" + source "package/odb/Config.in.host" + source "package/omap-u-boot-utils/Config.in.host" + source "package/openocd/Config.in.host" + source "package/opkg-utils/Config.in.host" + source "package/pahole/Config.in.host" + source "package/parted/Config.in.host" + source "package/patchelf/Config.in.host" + source "package/pigz/Config.in.host" + source "package/pkgconf/Config.in.host" + source "package/pru-software-support/Config.in.host" + source "package/pwgen/Config.in.host" + source "package/python-cython/Config.in.host" + source "package/python-greenlet/Config.in.host" + source "package/python-iniparse/Config.in.host" + source "package/python-kflash/Config.in.host" + source "package/python-lxml/Config.in.host" + source "package/python-pyyaml/Config.in.host" + source "package/python-six/Config.in.host" + source "package/python-uswid/Config.in.host" + source "package/python-xlrd/Config.in.host" + source "package/python3/Config.in.host" + source "package/qemu/Config.in.host" + source "package/qoriq-rcw/Config.in.host" + source "package/qt6/Config.in.host" + source "package/raspberrypi-usbboot/Config.in.host" + source "package/rauc/Config.in.host" + source "package/riscv-isa-sim/Config.in.host" + source "package/runc/Config.in.host" + source "package/rustc/Config.in.host" + source "package/s6-rc/Config.in.host" + source "package/sam-ba/Config.in.host" + source "package/sdbus-cpp/Config.in.host" + source "package/sdbusplus/Config.in.host" + source "package/sentry-cli/Config.in.host" + source "package/skopeo/Config.in.host" + source "package/sloci-image/Config.in.host" + source "package/squashfs/Config.in.host" + source "package/starfive-spltool/Config.in.host" + source "package/sunxi-tools/Config.in.host" + source "package/swig/Config.in.host" + source "package/swtpm/Config.in.host" + source "package/swugenerator/Config.in.host" + source "package/systemd/Config.in.host" + source "package/tegrarcm/Config.in.host" + source "package/ti-cgt-pru/Config.in.host" + source "package/tipidee/Config.in.host" + source "package/uboot-tools/Config.in.host" + source "package/util-linux/Config.in.host" + source "package/utp_com/Config.in.host" + source "package/uuu/Config.in.host" + source "package/vboot-utils/Config.in.host" + source "package/xorriso/Config.in.host" + source "package/zip/Config.in.host" + source "package/zstd/Config.in.host" + +endmenu diff --git a/package/Makefile.in b/package/Makefile.in new file mode 100644 index 00000000..808b71a9 --- /dev/null +++ b/package/Makefile.in @@ -0,0 +1,462 @@ +ifndef MAKE +MAKE := make +endif +ifndef HOSTMAKE +HOSTMAKE = $(MAKE) +endif +HOSTMAKE := $(shell which $(HOSTMAKE) || type -p $(HOSTMAKE) || echo make) + +# If BR2_JLEVEL is 0, scale the maximum concurrency with the number of +# CPUs. An additional job is used in order to keep processors busy +# while waiting on I/O. +# If the number of processors is not available, assume one. +ifeq ($(BR2_JLEVEL),0) +PARALLEL_JOBS := $(shell echo \ + $$((1 + `getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1`))) +else +PARALLEL_JOBS := $(BR2_JLEVEL) +endif + +# Only build one job at a time, *and* to not randomise goals and +# prerequisites ordering in make 4.4+ +MAKE1 := $(HOSTMAKE) -j1 $(if $(findstring --shuffle,$(MAKEFLAGS)),--shuffle=none) +override MAKE = $(HOSTMAKE) \ + $(if $(findstring j,$(filter-out --%,$(MAKEFLAGS))),,-j$(PARALLEL_JOBS)) + +ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y) +TARGET_VENDOR = $(call qstrip,$(BR2_TOOLCHAIN_BUILDROOT_VENDOR)) +else +TARGET_VENDOR = buildroot +endif + +# Sanity checks +ifeq ($(TARGET_VENDOR),) +$(error BR2_TOOLCHAIN_BUILDROOT_VENDOR is not allowed to be empty) +endif +ifeq ($(TARGET_VENDOR),unknown) +$(error BR2_TOOLCHAIN_BUILDROOT_VENDOR cannot be 'unknown'. \ + It might be confused with the native toolchain) +endif + +# Compute GNU_TARGET_NAME +GNU_TARGET_NAME = $(ARCH)-$(TARGET_VENDOR)-$(TARGET_OS)-$(LIBC)$(ABI) + +# FLAT binary format needs uclinux, except RISC-V which needs the +# regular linux name. +ifeq ($(BR2_BINFMT_FLAT):$(BR2_riscv),y:) +TARGET_OS = uclinux +else +TARGET_OS = linux +endif + +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +LIBC = uclibc +else ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +LIBC = musl +else ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y) +LIBC = gnu +else ifeq ($(BR_BUILDING),y) +# This happens if there is a bug in Buildroot that allows an +# architecture configuration that isn't supported by any library. +$(error No C library enabled, this is not possible.) +endif + +# The ABI suffix is a bit special on ARM, as it needs to be +# -uclibcgnueabi for uClibc EABI, and -gnueabi for glibc EABI. +# This means that the LIBC and ABI aren't strictly orthogonal, +# which explains why we need the test on LIBC below. +ifeq ($(BR2_arm)$(BR2_armeb),y) +ifeq ($(LIBC),uclibc) +ABI = gnueabi +else +ABI = eabi +endif + +ifeq ($(BR2_ARM_EABIHF),y) +ABI := $(ABI)hf +endif +endif + +# For FSL PowerPC there's SPE +ifeq ($(BR2_POWERPC_CPU_HAS_SPE),y) +ABI = spe +# MPC8540s are e500v1 with single precision FP +ifeq ($(BR2_powerpc_8540),y) +TARGET_ABI += -mabi=spe -mfloat-gprs=single -Wa,-me500 +endif +ifeq ($(BR2_powerpc_8548),y) +TARGET_ABI += -mabi=spe -mfloat-gprs=double -Wa,-me500x2 +endif +ifeq ($(BR2_powerpc_e500mc),y) +TARGET_ABI += -mabi=spe -mfloat-gprs=double -Wa,-me500mc +endif +endif + +# Use longcalls option for Xtensa globally. +# The 'longcalls' option allows calls across a greater range of addresses, +# and is required for some packages. While this option can degrade both +# code size and performance, the linker can usually optimize away the +# overhead when a call ends up within a certain range. +# +# Use auto-litpools for Xtensa globally. +# Collecting literals into separate section can be advantageous if that +# section is placed into DTCM at link time. This is applicable for code +# running on bare metal, but makes no sense under linux, where userspace +# is isolated from the physical memory details. OTOH placing literals into +# separate section breaks build of huge source files, because l32r +# instruction can only access literals in 256 KBytes range. +# +ifeq ($(BR2_xtensa),y) +TARGET_ABI += -mlongcalls -mauto-litpools +endif + +STAGING_SUBDIR = $(GNU_TARGET_NAME)/sysroot +STAGING_DIR = $(HOST_DIR)/$(STAGING_SUBDIR) + +ifeq ($(BR2_OPTIMIZE_0),y) +TARGET_OPTIMIZATION = -O0 +endif +ifeq ($(BR2_OPTIMIZE_1),y) +TARGET_OPTIMIZATION = -O1 +endif +ifeq ($(BR2_OPTIMIZE_2),y) +TARGET_OPTIMIZATION = -O2 +endif +ifeq ($(BR2_OPTIMIZE_3),y) +TARGET_OPTIMIZATION = -O3 +endif +ifeq ($(BR2_OPTIMIZE_G),y) +TARGET_OPTIMIZATION = -Og +endif +ifeq ($(BR2_OPTIMIZE_S),y) +TARGET_OPTIMIZATION = -Os +endif +ifeq ($(BR2_OPTIMIZE_FAST),y) +TARGET_OPTIMIZATION = -Ofast +endif +ifeq ($(BR2_ENABLE_DEBUG),) +TARGET_DEBUGGING = -g0 +endif +ifeq ($(BR2_DEBUG_1),y) +TARGET_DEBUGGING = -g1 +endif +ifeq ($(BR2_DEBUG_2),y) +TARGET_DEBUGGING = -g2 +endif +ifeq ($(BR2_DEBUG_3),y) +TARGET_DEBUGGING = -g3 +endif + +TARGET_LDFLAGS = $(call qstrip,$(BR2_TARGET_LDFLAGS)) + +# musl's dynamic loader doesn't support DT_TEXTREL, which results in a runtime +# crash if it gets used. The "-z text" linker option issues a build-time error +# when DT_TEXREL is used, so we capture the problem earlier. +# +# See also: https://www.openwall.com/lists/musl/2020/09/25/4 +# +# NOTE: We're using "-ztext" instead of "-Wl,-z,text" here, because some +# packages pass TARGET_LDFLAGS directly to ld rather than gcc, and ld doesn't +# support -Wl,[...]. -z is supported by both gcc and clang, so it probably +# won't cause us problems. +# +# We're using "-ztext" instead of "-z text" here, because some buildsystems +# (like scons, for gpsd) will reorder and/or drop LDFLAGS, causing a lone +# "-z" to be passed and the "text" keyword to be dropped otherwise. Both +# gcc and ld supports that, so it probably won't cause us problems. +ifeq ($(BR2_TOOLCHAIN_USES_MUSL):$(BR2_STATIC_LIBS),y:) +TARGET_LDFLAGS += -ztext +endif + +# By design, _FORTIFY_SOURCE requires gcc optimization to be enabled. +# Therefore, we need to pass _FORTIFY_SOURCE and the optimization level +# through the same mechanism, i.e currently through CFLAGS. Passing +# _FORTIFY_SOURCE through the wrapper and the optimization level +# through CFLAGS would not work, because CFLAGS are sometimes +# ignored/overridden by packages, but the flags passed by the wrapper +# are enforced: this would cause _FORTIFY_SOURCE to be used without any +# optimization level, leading to a build / configure failure. So we keep +# passing _FORTIFY_SOURCE and the optimization level both through CFLAGS. +ifeq ($(BR2_FORTIFY_SOURCE_1),y) +TARGET_HARDENED += -D_FORTIFY_SOURCE=1 +else ifeq ($(BR2_FORTIFY_SOURCE_2),y) +TARGET_HARDENED += -D_FORTIFY_SOURCE=2 +else ifeq ($(BR2_FORTIFY_SOURCE_3),y) +TARGET_HARDENED += -D_FORTIFY_SOURCE=3 +endif + +TARGET_CPPFLAGS += -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 +ifeq ($(BR2_TIME_BITS_64),y) +TARGET_CPPFLAGS += -D_TIME_BITS=64 +endif +TARGET_CFLAGS = $(TARGET_CPPFLAGS) $(TARGET_ABI) $(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) $(TARGET_HARDENED) +TARGET_CXXFLAGS = $(TARGET_CFLAGS) +TARGET_FCFLAGS = $(TARGET_ABI) $(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79509 +ifeq ($(BR2_m68k_cf),y) +TARGET_CFLAGS += -fno-dwarf2-cfi-asm +TARGET_CXXFLAGS += -fno-dwarf2-cfi-asm +endif + +ifeq ($(BR2_BINFMT_FLAT),y) +ifeq ($(BR2_riscv),y) +TARGET_CFLAGS += -fPIC +endif +ELF2FLT_FLAGS = $(if $($(PKG)_FLAT_STACKSIZE),\ + -Wl$(comma)-elf2flt="-r -s$($(PKG)_FLAT_STACKSIZE)",\ + -Wl$(comma)-elf2flt=-r) +TARGET_CFLAGS += $(ELF2FLT_FLAGS) +TARGET_CXXFLAGS += $(ELF2FLT_FLAGS) +TARGET_FCFLAGS += $(ELF2FLT_FLAGS) +TARGET_LDFLAGS += $(ELF2FLT_FLAGS) +endif + +ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y) +TARGET_CROSS = $(HOST_DIR)/bin/$(GNU_TARGET_NAME)- +else +TARGET_CROSS = $(HOST_DIR)/bin/$(TOOLCHAIN_EXTERNAL_PREFIX)- +endif + +# gcc-4.7 and later ships with wrappers that will automatically pass +# arguments to the binutils tools. Those are paths to necessary linker +# plugins. +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_7),y) +TARGET_GCC_WRAPPERS_PREFIX = gcc- +endif + +# Define TARGET_xx variables for all common binutils/gcc +TARGET_AR = $(TARGET_CROSS)$(TARGET_GCC_WRAPPERS_PREFIX)ar +TARGET_AS = $(TARGET_CROSS)as +TARGET_CC = $(TARGET_CROSS)gcc +TARGET_CPP = $(TARGET_CROSS)cpp +TARGET_CXX = $(TARGET_CROSS)g++ +TARGET_FC = $(TARGET_CROSS)gfortran +TARGET_LD = $(TARGET_CROSS)ld +TARGET_NM = $(TARGET_CROSS)$(TARGET_GCC_WRAPPERS_PREFIX)nm +TARGET_RANLIB = $(TARGET_CROSS)$(TARGET_GCC_WRAPPERS_PREFIX)ranlib +TARGET_READELF = $(TARGET_CROSS)readelf +TARGET_OBJCOPY = $(TARGET_CROSS)objcopy +TARGET_OBJDUMP = $(TARGET_CROSS)objdump + +ifeq ($(BR2_STRIP_strip),y) +STRIP_STRIP_DEBUG := --strip-debug +TARGET_STRIP = $(TARGET_CROSS)strip +STRIPCMD = $(TARGET_CROSS)strip --remove-section=.comment --remove-section=.note +else +TARGET_STRIP = /bin/true +STRIPCMD = $(TARGET_STRIP) +endif +INSTALL := $(shell which install || type -p install) +UNZIP := $(shell which unzip || type -p unzip) -q + +APPLY_PATCHES = TAR="$(TAR)" PATH=$(HOST_DIR)/bin:$$PATH support/scripts/apply-patches.sh $(if $(QUIET),-s) + +HOST_CPPFLAGS = -I$(HOST_DIR)/include +HOST_CFLAGS ?= -O2 +HOST_CFLAGS += $(HOST_CPPFLAGS) +HOST_CXXFLAGS += $(HOST_CFLAGS) +HOST_LDFLAGS += -L$(HOST_DIR)/lib -Wl,-rpath,$(HOST_DIR)/lib + +# host-intltool should be executed with the system perl, so we save +# the path to the system perl, before a host-perl built by Buildroot +# might get installed into $(HOST_DIR)/bin and therefore appears +# in our PATH. This system perl will be used as INTLTOOL_PERL. +export PERL=$(shell which perl) + +# host-intltool needs libxml-parser-perl, which Buildroot installs in +# $(HOST_DIR)/lib/perl, so we must make sure that the system perl +# finds this perl module by exporting the proper value for PERL5LIB. +export PERL5LIB=$(HOST_DIR)/lib/perl + +TARGET_MAKE_ENV = \ + GIT_DIR=. \ + PATH=$(BR_PATH) + +TARGET_CONFIGURE_OPTS = \ + $(TARGET_MAKE_ENV) \ + AR="$(TARGET_AR)" \ + AS="$(TARGET_AS)" \ + LD="$(TARGET_LD)" \ + NM="$(TARGET_NM)" \ + CC="$(TARGET_CC)" \ + GCC="$(TARGET_CC)" \ + CPP="$(TARGET_CPP)" \ + CXX="$(TARGET_CXX)" \ + FC="$(TARGET_FC)" \ + F77="$(TARGET_FC)" \ + RANLIB="$(TARGET_RANLIB)" \ + READELF="$(TARGET_READELF)" \ + STRIP="$(TARGET_STRIP)" \ + OBJCOPY="$(TARGET_OBJCOPY)" \ + OBJDUMP="$(TARGET_OBJDUMP)" \ + AR_FOR_BUILD="$(HOSTAR)" \ + AS_FOR_BUILD="$(HOSTAS)" \ + CC_FOR_BUILD="$(HOSTCC)" \ + GCC_FOR_BUILD="$(HOSTCC)" \ + CXX_FOR_BUILD="$(HOSTCXX)" \ + LD_FOR_BUILD="$(HOSTLD)" \ + CPPFLAGS_FOR_BUILD="$(HOST_CPPFLAGS)" \ + CFLAGS_FOR_BUILD="$(HOST_CFLAGS)" \ + CXXFLAGS_FOR_BUILD="$(HOST_CXXFLAGS)" \ + LDFLAGS_FOR_BUILD="$(HOST_LDFLAGS)" \ + FCFLAGS_FOR_BUILD="$(HOST_FCFLAGS)" \ + DEFAULT_ASSEMBLER="$(TARGET_AS)" \ + DEFAULT_LINKER="$(TARGET_LD)" \ + CPPFLAGS="$(TARGET_CPPFLAGS)" \ + CFLAGS="$(TARGET_CFLAGS)" \ + CXXFLAGS="$(TARGET_CXXFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + FCFLAGS="$(TARGET_FCFLAGS)" \ + FFLAGS="$(TARGET_FCFLAGS)" \ + PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ + STAGING_DIR="$(STAGING_DIR)" \ + INTLTOOL_PERL=$(PERL) + + +HOST_MAKE_ENV = \ + GIT_DIR=. \ + PATH=$(BR_PATH) \ + PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ + PKG_CONFIG_SYSROOT_DIR="/" \ + PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \ + PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \ + PKG_CONFIG_LIBDIR="$(HOST_DIR)/lib/pkgconfig:$(HOST_DIR)/share/pkgconfig" + +HOST_CONFIGURE_OPTS = \ + $(HOST_MAKE_ENV) \ + AR="$(HOSTAR)" \ + AS="$(HOSTAS)" \ + LD="$(HOSTLD)" \ + NM="$(HOSTNM)" \ + CC="$(HOSTCC)" \ + GCC="$(HOSTCC)" \ + CXX="$(HOSTCXX)" \ + CPP="$(HOSTCPP)" \ + OBJCOPY="$(HOSTOBJCOPY)" \ + RANLIB="$(HOSTRANLIB)" \ + CPPFLAGS="$(HOST_CPPFLAGS)" \ + CFLAGS="$(HOST_CFLAGS)" \ + CXXFLAGS="$(HOST_CXXFLAGS)" \ + LDFLAGS="$(HOST_LDFLAGS)" \ + INTLTOOL_PERL=$(PERL) + +# This is extra environment we can not export ourselves (eg. because some +# packages use that variable internally, eg. uboot), so we have to +# explicitly pass it to user-supplied external hooks (eg. post-build, +# post-images) +EXTRA_ENV = \ + PATH=$(BR_PATH) \ + BR2_DL_DIR=$(BR2_DL_DIR) \ + BUILD_DIR=$(BUILD_DIR) \ + CONFIG_DIR=$(CONFIG_DIR) \ + O=$(CANONICAL_O) \ + PARALLEL_JOBS=$(PARALLEL_JOBS) + +################################################################################ +# settings we need to pass to configure + +# does unaligned access trap? +BR2_AC_CV_TRAP_CHECK = ac_cv_lbl_unaligned_fail=yes +ifeq ($(BR2_i386),y) +BR2_AC_CV_TRAP_CHECK = ac_cv_lbl_unaligned_fail=no +endif +ifeq ($(BR2_x86_64),y) +BR2_AC_CV_TRAP_CHECK = ac_cv_lbl_unaligned_fail=no +endif +ifeq ($(BR2_m68k),y) +BR2_AC_CV_TRAP_CHECK = ac_cv_lbl_unaligned_fail=no +endif +ifeq ($(BR2_powerpc)$(BR2_powerpc64)$(BR2_powerpc64le),y) +BR2_AC_CV_TRAP_CHECK = ac_cv_lbl_unaligned_fail=no +endif + +ifeq ($(BR2_ENDIAN),"BIG") +BR2_AC_CV_C_BIGENDIAN = ac_cv_c_bigendian=yes +else +BR2_AC_CV_C_BIGENDIAN = ac_cv_c_bigendian=no +endif + +# AM_GNU_GETTEXT misdetects musl gettext support. +# musl currently implements api level 1 and 2 (basic + ngettext) +# http://www.openwall.com/lists/musl/2015/04/16/3 +# +# These autoconf variables should only be pre-seeded when the minimal +# gettext implementation of musl is used. When the full blown +# implementation provided by gettext libintl is used, auto-detection +# works fine, and pre-seeding those values is actually wrong. +ifeq ($(BR2_TOOLCHAIN_USES_MUSL):$(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y:) +BR2_GT_CV_FUNC_GNUGETTEXT_LIBC = \ + gt_cv_func_gnugettext1_libc=yes \ + gt_cv_func_gnugettext2_libc=yes +endif + +TARGET_CONFIGURE_ARGS = \ + $(BR2_AC_CV_TRAP_CHECK) \ + ac_cv_func_mmap_fixed_mapped=yes \ + ac_cv_func_memcmp_working=yes \ + ac_cv_have_decl_malloc=yes \ + gl_cv_func_malloc_0_nonnull=yes \ + ac_cv_func_malloc_0_nonnull=yes \ + ac_cv_func_calloc_0_nonnull=yes \ + ac_cv_func_realloc_0_nonnull=yes \ + lt_cv_sys_lib_search_path_spec="" \ + $(BR2_AC_CV_C_BIGENDIAN) \ + $(BR2_GT_CV_FUNC_GNUGETTEXT_LIBC) + +################################################################################ + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +NLS_OPTS = --enable-nls +TARGET_NLS_DEPENDENCIES = host-gettext +ifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y) +TARGET_NLS_DEPENDENCIES += gettext +TARGET_NLS_LIBS += -lintl +endif +else +NLS_OPTS = --disable-nls +endif + +# We need anything that is invalid. Traditionally, we'd have used 'false' (and +# we did so in the past). However, that breaks libtool for packages that have +# optional C++ support (e.g. gnutls), because libtool will *require* a *valid* +# C++ preprocessor as long as CXX is not 'no'. +# Now, whether we use 'no' or 'false' for CXX as the same side effect: it is an +# invalid C++ compiler, and thus will cause detection of C++ to fail (which is +# expected and what we want), while at the same time taming libtool into +# silence. +ifneq ($(BR2_INSTALL_LIBSTDCPP),y) +TARGET_CONFIGURE_OPTS += CXX=no +endif + +ifeq ($(BR2_STATIC_LIBS),y) +SHARED_STATIC_LIBS_OPTS = --enable-static --disable-shared +TARGET_CFLAGS += -static +TARGET_CXXFLAGS += -static +TARGET_FCFLAGS += -static +TARGET_LDFLAGS += -static +else ifeq ($(BR2_SHARED_LIBS),y) +SHARED_STATIC_LIBS_OPTS = --disable-static --enable-shared +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +SHARED_STATIC_LIBS_OPTS = --enable-static --enable-shared +endif + +# Used by our binutils patches. +export BR_COMPILER_PARANOID_UNSAFE_PATH=enabled + +include package/pkg-download.mk +include package/pkg-autotools.mk +include package/pkg-cmake.mk +include package/pkg-luarocks.mk +include package/pkg-perl.mk +include package/pkg-python.mk +include package/pkg-virtual.mk +include package/pkg-generic.mk +include package/pkg-kconfig.mk +include package/pkg-rebar.mk +include package/pkg-kernel-module.mk +include package/pkg-waf.mk +include package/pkg-golang.mk +include package/pkg-meson.mk +include package/pkg-qmake.mk +include package/pkg-cargo.mk diff --git a/package/a10disp/Config.in b/package/a10disp/Config.in new file mode 100644 index 00000000..99ae0aad --- /dev/null +++ b/package/a10disp/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_A10DISP + bool "a10disp" + depends on BR2_arm + depends on BR2_LINUX_KERNEL + help + Program to change the display mode of Allwinner ARM SOCs + running the linux-sunxi kernel (and not the mainline kernel.) + + http://github.com/hglm/a10disp + +comment "a10disp needs a Linux kernel to be built" + depends on BR2_arm + depends on !BR2_LINUX_KERNEL diff --git a/package/a10disp/a10disp.hash b/package/a10disp/a10disp.hash new file mode 100644 index 00000000..acaafc35 --- /dev/null +++ b/package/a10disp/a10disp.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 5077405030e8f97a1edd4b86d469466abbc4d32b4a4609e58459347fcd1ba35b a10disp-0.6.1.tar.gz +sha256 ddf849966f57fee8f9675f5a3c7791353d1cba71695cd58016212fc236bbdbee a10disp.c diff --git a/package/a10disp/a10disp.mk b/package/a10disp/a10disp.mk new file mode 100644 index 00000000..c9192023 --- /dev/null +++ b/package/a10disp/a10disp.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# a10disp +# +################################################################################ + +A10DISP_VERSION = 0.6.1 +A10DISP_SITE = $(call github,hglm,a10disp,v$(A10DISP_VERSION)) +A10DISP_LICENSE = MIT +A10DISP_LICENSE_FILES = a10disp.c + +A10DISP_DEPENDENCIES = linux + +define A10DISP_BUILD_CMDS + cp -f $(LINUX_DIR)/include/video/sunxi_disp_ioctl.h $(@D)/ + $(TARGET_CC) $(TARGET_CFLAGS) $(@D)/a10disp.c -o $(@D)/a10disp +endef + +define A10DISP_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/a10disp $(TARGET_DIR)/usr/bin/a10disp +endef + +$(eval $(generic-package)) diff --git a/package/abootimg/Config.in b/package/abootimg/Config.in new file mode 100644 index 00000000..bcd2a082 --- /dev/null +++ b/package/abootimg/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_ABOOTIMG + bool "abootimg" + depends on BR2_USE_MMU # libblkid + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + help + Tool to manipulate Android Boot Images, either on files + or directly on /dev block devices. + + https://gitlab.com/ajs124/abootimg diff --git a/package/abootimg/Config.in.host b/package/abootimg/Config.in.host new file mode 100644 index 00000000..65dc4798 --- /dev/null +++ b/package/abootimg/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_ABOOTIMG + bool "host abootimg" + select BR2_PACKAGE_HOST_UTIL_LINUX + help + Tool to manipulate Android Boot Images, either on files + or directly on /dev block devices. + + https://github.com/ggrandou/abootimg diff --git a/package/abootimg/abootimg.hash b/package/abootimg/abootimg.hash new file mode 100644 index 00000000..9a67a575 --- /dev/null +++ b/package/abootimg/abootimg.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a87493a268b5043974a433545b073730ca88cbc58d3c7086da291ec0c082d8bc abootimg-1ebeb393252ab5aeed62e34bc439b6728444f06e-git4.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/abootimg/abootimg.mk b/package/abootimg/abootimg.mk new file mode 100644 index 00000000..ca09e94f --- /dev/null +++ b/package/abootimg/abootimg.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# abootimg +# +################################################################################ + +ABOOTIMG_VERSION = 1ebeb393252ab5aeed62e34bc439b6728444f06e +ABOOTIMG_SITE = https://gitlab.com/ajs124/abootimg.git +ABOOTIMG_SITE_METHOD = git +ABOOTIMG_LICENSE = GPL-2.0+ +ABOOTIMG_LICENSE_FILES = LICENSE + +# depends on libblkid from util-linux +ABOOTIMG_DEPENDENCIES = util-linux +HOST_ABOOTIMG_DEPENDENCIES = host-util-linux + +define ABOOTIMG_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define ABOOTIMG_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 $(@D)/abootimg $(TARGET_DIR)/usr/bin/abootimg +endef + +define HOST_ABOOTIMG_BUILD_CMDS + $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) +endef + +define HOST_ABOOTIMG_INSTALL_CMDS + $(INSTALL) -m 0755 $(@D)/abootimg $(HOST_DIR)/bin/abootimg +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/ace/Config.in b/package/ace/Config.in new file mode 100644 index 00000000..cf381928 --- /dev/null +++ b/package/ace/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_ACE + bool "ace" + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on !BR2_STATIC_LIBS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14 + help + The ADAPTIVE Communication Environment (ACE(TM)) + An OO Network Programming Toolkit in C++. + + http://www.dre.vanderbilt.edu/~schmidt/ACE.html + +comment "ACE needs a glibc toolchain, dynamic library, C++, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_USES_GLIBC || BR2_STATIC_LIBS || \ + !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/ace/ace.hash b/package/ace/ace.hash new file mode 100644 index 00000000..0c5ed12c --- /dev/null +++ b/package/ace/ace.hash @@ -0,0 +1,6 @@ +# From https://download.dre.vanderbilt.edu/previous_versions/ACE-7.1.1.tar.bz2.md5: +md5 6c86ec6c7879703783b9749d5409a67f ACE-7.1.1.tar.bz2 + +# Locally Computed: +sha256 fe5fdeab1dddf4fdd99f73c59420886cf61ca2ce92adf2cc6b612b752986df62 ACE-7.1.1.tar.bz2 +sha256 687bf9d16119e0caf6fb5c18214928fd6ea0da10df91e906255b7613af8061d8 COPYING diff --git a/package/ace/ace.mk b/package/ace/ace.mk new file mode 100644 index 00000000..1f795086 --- /dev/null +++ b/package/ace/ace.mk @@ -0,0 +1,75 @@ +################################################################################ +# +# ace +# +################################################################################ + +ACE_VERSION = 7.1.1 +ACE_SOURCE = ACE-$(ACE_VERSION).tar.bz2 +ACE_SITE = http://download.dre.vanderbilt.edu/previous_versions +ACE_LICENSE = DOC +ACE_LICENSE_FILES = COPYING +ACE_INSTALL_STAGING = YES +ACE_CPE_ID_VENDOR = vanderbilt +ACE_CPE_ID_PRODUCT = adaptive_communication_environment + +# Note: We are excluding examples, apps and tests +# Only compiling ACE libraries (no TAO) +ACE_LIBRARIES = ace ACEXML Kokyu netsvcs protocols/ace + +ACE_CPPFLAGS = $(TARGET_CPPFLAGS) -std=c++14 + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_101915),y) +ACE_CPPFLAGS += -O0 +endif + +# ACE uses DEFFLAGS as C++ pre-processor flags, and CCFLAGS as the C++ flags. +# Ace passes the pre-processor flags after the C++ flags, so we pass our +# C++ flags as pre-processor flags, via DEFFLAGS. +ACE_MAKE_OPTS = \ + ACE_ROOT="$(@D)" \ + DEFFLAGS="$(ACE_CPPFLAGS)" + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +ACE_LIBRARIES += ace/SSL +ACE_DEPENDENCIES += openssl +define ACE_CONFIGURE_SSL + echo "ssl = 1" >> $(@D)/include/makeinclude/platform_macros.GNU +endef +endif + +# configure the target build +# refer: http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/ACE/ACE-INSTALL.html#unix +define ACE_CONFIGURE_CMDS + # create a config file + echo ' #include "ace/config-linux.h" ' >> $(@D)/ace/config.h + + # Create platform/compiler-specific Makefile configurations + $(INSTALL) -m 0644 package/ace/platform_macros.GNU $(@D)/include/makeinclude/ + + $(ACE_CONFIGURE_SSL) +endef + +define ACE_BUILD_CMDS + $(foreach lib,$(ACE_LIBRARIES), \ + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/$(lib) \ + $(ACE_MAKE_OPTS) all + ) +endef + +define ACE_LIBRARIES_INSTALL + mkdir -p $(1)/usr/share/ace + $(foreach lib,$(ACE_LIBRARIES), \ + $(MAKE) -C $(@D)/$(lib) $(ACE_MAKE_OPTS) DESTDIR=$(1) install + ) +endef + +define ACE_INSTALL_TARGET_CMDS + $(call ACE_LIBRARIES_INSTALL,$(TARGET_DIR)) +endef + +define ACE_INSTALL_STAGING_CMDS + $(call ACE_LIBRARIES_INSTALL,$(STAGING_DIR)) +endef + +$(eval $(generic-package)) diff --git a/package/ace/platform_macros.GNU b/package/ace/platform_macros.GNU new file mode 100644 index 00000000..ab5ec25a --- /dev/null +++ b/package/ace/platform_macros.GNU @@ -0,0 +1,14 @@ +# help: http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/ACE/ACE-INSTALL.html#unix + +# create a platform macros file +include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU + +# disable RPATH +install_rpath = 0 + +# set the installation prefix +INSTALL_PREFIX = /usr + +# fix link error with ARM EABI tools +# http://list.isis.vanderbilt.edu/pipermail/ace-users/2008-January/002742.html +no_hidden_visibility = 1 diff --git a/package/acl/0001-Build-with-old-GCC-versions.patch b/package/acl/0001-Build-with-old-GCC-versions.patch new file mode 100644 index 00000000..a05ff5d9 --- /dev/null +++ b/package/acl/0001-Build-with-old-GCC-versions.patch @@ -0,0 +1,32 @@ +From a42519dceef0493ece45538375ae1791313f16d3 Mon Sep 17 00:00:00 2001 +From: Hollis Blanchard +Date: Mon, 30 Jul 2018 14:29:46 -0700 +Subject: [PATCH] Remove pragmas inside functions + +GCC 4.4.7, as found in RHEL6, reports: + libacl/acl_from_text.c:307: error: #pragma GCC diagnostic not allowed inside functions + +Signed-off-by: Hollis Blanchard +--- + libacl/acl_from_text.c | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/libacl/acl_from_text.c b/libacl/acl_from_text.c +index 09790c9..fb6bc07 100644 +--- a/libacl/acl_from_text.c ++++ b/libacl/acl_from_text.c +@@ -304,11 +304,8 @@ parse_acl_entry(const char **text_p, acl_t *acl_p) + create_entry: + if (acl_create_entry(acl_p, &entry_d) != 0) + return -1; +-#pragma GCC diagnostic push +-#pragma GCC diagnostic ignored "-Waddress" + if (acl_copy_entry(entry_d, int2ext(&entry_obj)) != 0) + return -1; +-#pragma GCC diagnostic pop + return 0; + + fail: +-- +2.13.0 + diff --git a/package/acl/Config.in b/package/acl/Config.in new file mode 100644 index 00000000..056a31ba --- /dev/null +++ b/package/acl/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_ACL + bool "acl" + select BR2_PACKAGE_ATTR + help + POSIX Access Control Lists, which are used to define more + fine-grained discretionary access rights for files and + directories. + This package also provides libacl. + + https://savannah.nongnu.org/projects/acl diff --git a/package/acl/acl.hash b/package/acl/acl.hash new file mode 100644 index 00000000..a6094fb9 --- /dev/null +++ b/package/acl/acl.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +sha256 97203a72cae99ab89a067fe2210c1cbf052bc492b479eca7d226d9830883b0bd acl-2.3.2.tar.xz + +# Locally calculated +sha256 a45a845012742796534f7e91fe623262ccfb99460a2bd04015bd28d66fba95b8 doc/COPYING +sha256 01b1f9f2c8ee648a7a596a1abe8aa4ed7899b1c9e5551bda06da6e422b04aa55 doc/COPYING.LGPL diff --git a/package/acl/acl.mk b/package/acl/acl.mk new file mode 100644 index 00000000..6ae0581e --- /dev/null +++ b/package/acl/acl.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# acl +# +################################################################################ + +ACL_VERSION = 2.3.2 +ACL_SOURCE = acl-$(ACL_VERSION).tar.xz +ACL_SITE = https://download.savannah.nongnu.org/releases/acl +ACL_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries) +ACL_LICENSE_FILES = doc/COPYING doc/COPYING.LGPL +ACL_CPE_ID_VALID = YES + +ACL_DEPENDENCIES = attr +HOST_ACL_DEPENDENCIES = host-attr + +ACL_INSTALL_STAGING = YES + +ACL_CONF_OPTS = --disable-nls + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/acpica/Config.in b/package/acpica/Config.in new file mode 100644 index 00000000..ec5865c3 --- /dev/null +++ b/package/acpica/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_ACPICA + bool "acpica" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + help + The ACPI Component Architecture (ACPICA) project provides an + operating system (OS)-independent reference implementation + of the Advanced Configuration and Power Interface + Specification (ACPI). + + https://www.acpica.org + +comment "acpica needs a toolchain w/ threads, wchar" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/acpica/acpica.hash b/package/acpica/acpica.hash new file mode 100644 index 00000000..4170587f --- /dev/null +++ b/package/acpica/acpica.hash @@ -0,0 +1,4 @@ +# From: https://www.intel.com/content/www/us/en/download/776303/acpi-component-architecture-downloads-unix-format-source-code-and-build-environment-with-an-intel-license.html +sha256 54a299487925fd3e0551c95f9d5cee4f4984930273983eff67aa5cd46f8f338b acpica-unix-20240321.tar.gz +# locally computed hash +sha256 b28f54dc421531bbe269afd8c28bf6fdfd6affbe50c2831464f777ec1766d4a5 source/include/acpi.h diff --git a/package/acpica/acpica.mk b/package/acpica/acpica.mk new file mode 100644 index 00000000..a3d68225 --- /dev/null +++ b/package/acpica/acpica.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# acpica +# +################################################################################ + +ACPICA_VERSION = 20240321 +ACPICA_SOURCE = acpica-unix-$(ACPICA_VERSION).tar.gz +ACPICA_SITE = https://downloadmirror.intel.com/819451 +ACPICA_LICENSE = BSD-3-Clause or GPL-2.0 +ACPICA_LICENSE_FILES = source/include/acpi.h +ACPICA_DEPENDENCIES = host-bison host-flex +HOST_ACPICA_DEPENDENCIES = host-bison host-flex + +define ACPICA_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + ACPI_HOST=_LINUX CC="$(TARGET_CC)" \ + NOWERROR=TRUE \ + all +endef + +define HOST_ACPICA_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + NOWERROR=TRUE \ + all +endef + +define ACPICA_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + DESTDIR="$(TARGET_DIR)" \ + INSTALLFLAGS=-m755 install +endef + +define HOST_ACPICA_INSTALL_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + PREFIX="$(HOST_DIR)" \ + INSTALLFLAGS=-m755 install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/acpid/0001-dont-use-isfdtype.patch b/package/acpid/0001-dont-use-isfdtype.patch new file mode 100644 index 00000000..2fe6c218 --- /dev/null +++ b/package/acpid/0001-dont-use-isfdtype.patch @@ -0,0 +1,20 @@ +Partially roll back upstream commit 4711119089e1ad08dad206f4fded68f1972fdeed +since released versions of uClibc don't support isfdtype(). + +Signed-off-by: Gustavo Zaarias + +diff -Nura acpid-2.0.22.orig/sock.c acpid-2.0.22/sock.c +--- acpid-2.0.22.orig/sock.c 2014-04-22 18:04:19.706841764 -0300 ++++ acpid-2.0.22/sock.c 2014-04-22 18:05:08.285479625 -0300 +@@ -53,7 +53,10 @@ + int + is_socket(int fd) + { +- return (isfdtype(fd, S_IFSOCK) == 1); ++ int v; ++ socklen_t l = sizeof(int); ++ ++ return (getsockopt(fd, SOL_SOCKET, SO_TYPE, (char *)&v, &l) == 0); + } + + /* accept a new client connection */ diff --git a/package/acpid/Config.in b/package/acpid/Config.in new file mode 100644 index 00000000..0c8ecf24 --- /dev/null +++ b/package/acpid/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_ACPID + bool "acpid" + depends on BR2_USE_MMU # fork() + help + Advanced Configuration and Power Interface event daemon. + + Acpid is designed to notify user-space programs of ACPI + events, and allows you to configure specific actions for + specific events. + + http://sourceforge.net/projects/acpid2/ diff --git a/package/acpid/S02acpid b/package/acpid/S02acpid new file mode 100644 index 00000000..9017d508 --- /dev/null +++ b/package/acpid/S02acpid @@ -0,0 +1,53 @@ +#!/bin/sh + +DAEMON="acpid" +EXEC="/usr/sbin/$DAEMON" +PIDFILE="/var/run/$DAEMON.pid" + +ACPID_ARGS="" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -p "$PIDFILE" -x "$EXEC" \ + -- -n $ACPID_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" -x "$EXEC" + status=$? + if [ "$status" -eq 0 ]; then + # Give acpid time to send dying gasp to syslog + sleep 1 + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/acpid/acpid.hash b/package/acpid/acpid.hash new file mode 100644 index 00000000..8da01012 --- /dev/null +++ b/package/acpid/acpid.hash @@ -0,0 +1,7 @@ +# From https://sourceforge.net/projects/acpid2/files/ +md5 988c2e3fd5ba0ea4492d3ba7273af295 acpid-2.0.34.tar.xz +sha1 9322112027e4aa5a8d1b97ec64ef1d150ff0f4fc acpid-2.0.34.tar.xz + +# Locally computed +sha256 2d095c8cfcbc847caec746d62cdc8d0bff1ec1bc72ef7c674c721e04da6ab333 acpid-2.0.34.tar.xz +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING diff --git a/package/acpid/acpid.mk b/package/acpid/acpid.mk new file mode 100644 index 00000000..4bd93068 --- /dev/null +++ b/package/acpid/acpid.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# acpid +# +################################################################################ + +ACPID_VERSION = 2.0.34 +ACPID_SOURCE = acpid-$(ACPID_VERSION).tar.xz +ACPID_SITE = http://downloads.sourceforge.net/project/acpid2 +ACPID_LICENSE = GPL-2.0+ +ACPID_LICENSE_FILES = COPYING +ACPID_CPE_ID_VENDOR = tedfelix +ACPID_CPE_ID_PRODUCT = acpid2 +ACPID_SELINUX_MODULES = acpi + +define ACPID_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/acpid/acpid.service \ + $(TARGET_DIR)/usr/lib/systemd/system/acpid.service +endef + +define ACPID_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/acpid/S02acpid \ + $(TARGET_DIR)/etc/init.d/S02acpid +endef + +ifeq ($(BR2_INIT_SYSV)$(BR2_INIT_SYSTEMD),y) +ACPID_POWEROFF_CMD = /sbin/shutdown -hP now +else +ACPID_POWEROFF_CMD = /sbin/poweroff +endif + +define ACPID_SET_EVENTS + mkdir -p $(TARGET_DIR)/etc/acpi/events + printf 'event=button[ /]power\naction=%s\n' '$(ACPID_POWEROFF_CMD)' \ + >$(TARGET_DIR)/etc/acpi/events/powerbtn +endef + +ACPID_POST_INSTALL_TARGET_HOOKS += ACPID_SET_EVENTS + +$(eval $(autotools-package)) diff --git a/package/acpid/acpid.service b/package/acpid/acpid.service new file mode 100644 index 00000000..5252b52f --- /dev/null +++ b/package/acpid/acpid.service @@ -0,0 +1,9 @@ +[Unit] +Description=ACPI event daemon +Documentation=man:acpid(8) + +[Service] +ExecStart=/usr/sbin/acpid --foreground --netlink + +[Install] +WantedBy=multi-user.target diff --git a/package/acpitool/Config.in b/package/acpitool/Config.in new file mode 100644 index 00000000..2600a789 --- /dev/null +++ b/package/acpitool/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_ACPITOOL + bool "acpitool" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + help + A small, convenient command-line ACPI client with a lot of + features for Linux + + http://acpitool.sourceforge.net + +comment "acpitool needs a toolchain w/ threads, C++, dynamic library" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_INSTALL_LIBSTDCPP diff --git a/package/acpitool/acpitool.hash b/package/acpitool/acpitool.hash new file mode 100644 index 00000000..764c1bc6 --- /dev/null +++ b/package/acpitool/acpitool.hash @@ -0,0 +1,3 @@ +# locally computed hash +sha256 004fb6cd43102918b6302cf537a2db7ceadda04aef2e0906ddf230f820dad34f acpitool-0.5.1.tar.bz2 +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/acpitool/acpitool.mk b/package/acpitool/acpitool.mk new file mode 100644 index 00000000..547da375 --- /dev/null +++ b/package/acpitool/acpitool.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# acpitool +# +################################################################################ + +ACPITOOL_VERSION = 0.5.1 +ACPITOOL_SOURCE = acpitool-$(ACPITOOL_VERSION).tar.bz2 +ACPITOOL_SITE = http://downloads.sourceforge.net/sourceforge/acpitool +ACPITOOL_LICENSE = GPL-2.0+ +ACPITOOL_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/acsccid/Config.in b/package/acsccid/Config.in new file mode 100644 index 00000000..2d644ea5 --- /dev/null +++ b/package/acsccid/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_ACSCCID + bool "acsccid" + depends on BR2_TOOLCHAIN_HAS_THREADS # pcsc-lite, libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb, pcsc-lite + depends on BR2_USE_MMU # pcsc-lite + depends on !BR2_STATIC_LIBS # pcsc-lite + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_PCSC_LITE + # Even though there is a --disable-libusb option, it has in + # fact no effect, and acsccid really requires libusb. + select BR2_PACKAGE_LIBUSB + help + acsccid is a PC/SC driver for Linux/Mac OS X and it supports + ACS CCID smart card readers. + + http://acsccid.sourceforge.net/ + +comment "acsccid needs a toolchain w/ threads, dynamic library, gcc >= 4.9" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/acsccid/acsccid.hash b/package/acsccid/acsccid.hash new file mode 100644 index 00000000..5310d781 --- /dev/null +++ b/package/acsccid/acsccid.hash @@ -0,0 +1,6 @@ +# From https://sourceforge.net/projects/acsccid/files/acsccid/1.1.10/ +sha1 6284a693b8edb511f2f80d9069af9b4a41fd55ae acsccid-1.1.10.tar.bz2 +md5 4d2b7f34414aed029084c96dd05a0e7d acsccid-1.1.10.tar.bz2 +# Locally computed +sha256 5ee112febdcac6656629025f3a85923f155f6ca150b2d24fd716f9043265528e acsccid-1.1.10.tar.bz2 +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING diff --git a/package/acsccid/acsccid.mk b/package/acsccid/acsccid.mk new file mode 100644 index 00000000..463f0f24 --- /dev/null +++ b/package/acsccid/acsccid.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# acsccid +# +################################################################################ + +ACSCCID_VERSION = 1.1.10 +ACSCCID_SOURCE = acsccid-$(ACSCCID_VERSION).tar.bz2 +ACSCCID_SITE = http://downloads.sourceforge.net/acsccid +ACSCCID_LICENSE = LGPL-2.1+ +ACSCCID_LICENSE_FILES = COPYING +ACSCCID_INSTALL_STAGING = YES +ACSCCID_DEPENDENCIES = pcsc-lite host-flex host-pkgconf libusb +ACSCCID_CONF_OPTS = --enable-usbdropdir=/usr/lib/pcsc/drivers + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +ACSCCID_DEPENDENCIES += libiconv +endif + +$(eval $(autotools-package)) diff --git a/package/adwaita-icon-theme/Config.in b/package/adwaita-icon-theme/Config.in new file mode 100644 index 00000000..71b839d9 --- /dev/null +++ b/package/adwaita-icon-theme/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_ADWAITA_ICON_THEME + bool "adwaita icon theme" + depends on BR2_PACKAGE_LIBGTK2 || BR2_PACKAGE_LIBGTK3 + # host-libgtk3 -> host-librsvg -> host-pango -> host-harfbuzz + depends on BR2_HOST_GCC_AT_LEAST_4_9 + help + Adwaita icon theme + +comment "adwaita icon theme needs host gcc >= 4.9" + depends on !BR2_HOST_GCC_AT_LEAST_4_9 diff --git a/package/adwaita-icon-theme/adwaita-icon-theme.hash b/package/adwaita-icon-theme/adwaita-icon-theme.hash new file mode 100644 index 00000000..ae28a7a1 --- /dev/null +++ b/package/adwaita-icon-theme/adwaita-icon-theme.hash @@ -0,0 +1,6 @@ +# From https://download.gnome.org/sources/adwaita-icon-theme/3.27/adwaita-icon-theme-3.27.2.sha256sum +sha256 a594e7440971f860cc61b1b8291be15ffc1b8dd06a9f11485a5a7faf189bcf6b adwaita-icon-theme-3.37.2.tar.xz +# locally computed +sha256 51f83b2b4e9ed2beebc9b8eed2ecad29314a58ed8c5184b22ad8f9df703d3ce5 COPYING +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 COPYING_LGPL +sha256 207fe75c396c0ae197c57d42c727163428b6667d98cef3644e41c6f1afe1895f COPYING_CCBYSA3 diff --git a/package/adwaita-icon-theme/adwaita-icon-theme.mk b/package/adwaita-icon-theme/adwaita-icon-theme.mk new file mode 100644 index 00000000..6b71c41d --- /dev/null +++ b/package/adwaita-icon-theme/adwaita-icon-theme.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# adwaita-icon-theme +# +################################################################################ + +ADWAITA_ICON_THEME_VERSION_MAJOR = 3.37 +ADWAITA_ICON_THEME_VERSION = $(ADWAITA_ICON_THEME_VERSION_MAJOR).2 +ADWAITA_ICON_THEME_SITE = https://download.gnome.org/sources/adwaita-icon-theme/$(ADWAITA_ICON_THEME_VERSION_MAJOR) +ADWAITA_ICON_THEME_SOURCE = adwaita-icon-theme-$(ADWAITA_ICON_THEME_VERSION).tar.xz +ADWAITA_ICON_THEME_INSTALL_STAGING = YES +ADWAITA_ICON_THEME_LICENSE = LGPL-3.0 or CC-BY-SA-3.0 +ADWAITA_ICON_THEME_LICENSE_FILES = COPYING COPYING_LGPL COPYING_CCBYSA3 +ADWAITA_ICON_THEME_DEPENDENCIES = host-intltool host-libgtk3 + +$(eval $(autotools-package)) diff --git a/package/aer-inject/0001-libgen-basename.patch b/package/aer-inject/0001-libgen-basename.patch new file mode 100644 index 00000000..0762f5e3 --- /dev/null +++ b/package/aer-inject/0001-libgen-basename.patch @@ -0,0 +1,35 @@ +From 197f51d29a01f46750fa6928409301aa8f1163d7 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Mon, 25 Mar 2024 09:04:40 -0700 +Subject: aer-inject: Include libgen.h for explicit basename prototype + +The prototype for basename has been removed from string.h in the latest +versions of musl [1]. This absence of prototype is flagged as an error +by some compilers, such as clang-18. To resolve this, include libgen.h +explicitly, which provides the prototype for basename. + +[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7 +Signed-off-by: Khem Raj +[sathya: Updated the commit log] +Signed-off-by: Kuppuswamy Sathyanarayanan +Upstream: https://git.kernel.org/pub/scm/linux/kernel/git/knsathya/aer-inject.git/commit/?id=197f51d29a01f46750fa6928409301aa8f1163d7 +Signed-off-by: J. Neuschaefer +--- + aer-inject.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/aer-inject.c b/aer-inject.c +index 74e7f72..eed1211 100644 +--- a/aer-inject.c ++++ b/aer-inject.c +@@ -11,6 +11,7 @@ + */ + + #include ++#include + #include + #include + #include +-- +cgit 1.2.3-korg + diff --git a/package/aer-inject/Config.in b/package/aer-inject/Config.in new file mode 100644 index 00000000..7c737d42 --- /dev/null +++ b/package/aer-inject/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_AER_INJECT + bool "aer-inject" + help + aer-inject allows to inject PCIE AER errors on the software + level into a running Linux kernel. This is intended for + validation of the PCIE driver error recovery handler and + PCIE AER core handler. + + Requires a new Linux kernel with PCIE AER error injection + patches. + + https://git.kernel.org/cgit/linux/kernel/git/gong.chen/aer-inject.git/ diff --git a/package/aer-inject/aer-inject.hash b/package/aer-inject/aer-inject.hash new file mode 100644 index 00000000..3b9d144e --- /dev/null +++ b/package/aer-inject/aer-inject.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 7ed5994b48f1c0504add380ba4d186f48a5a22b9bc2dd90c79d0d2f0c183540c aer-inject-9bd5e2c7886fca72f139cd8402488a2235957d41-git4.tar.gz +sha256 659a191d8775e05c6c6a9a4ba66b3577c577342bb83f20d393135eb6633c8973 README diff --git a/package/aer-inject/aer-inject.mk b/package/aer-inject/aer-inject.mk new file mode 100644 index 00000000..7516ef63 --- /dev/null +++ b/package/aer-inject/aer-inject.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# aer-inject +# +################################################################################ + +AER_INJECT_VERSION = 9bd5e2c7886fca72f139cd8402488a2235957d41 +AER_INJECT_SITE = https://github.com/intel/aer-inject.git +AER_INJECT_SITE_METHOD = git +AER_INJECT_LICENSE = GPL-2.0 +AER_INJECT_LICENSE_FILES = README +AER_INJECT_DEPENDENCIES = host-flex host-bison + +define AER_INJECT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define AER_INJECT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \ + DESTDIR=$(TARGET_DIR) PREFIX=/usr/bin install +endef + +$(eval $(generic-package)) diff --git a/package/aespipe/Config.in b/package/aespipe/Config.in new file mode 100644 index 00000000..e1683a0a --- /dev/null +++ b/package/aespipe/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_AESPIPE + bool "aespipe" + depends on BR2_USE_MMU # fork() + help + aespipe program is AES encrypting or decrypting pipe. It reads + from standard input and writes to standard output. It can be + used to create and restore encrypted tar or cpio archives. + It can be used to encrypt and decrypt loop-AES compatible + encrypted disk images. + + http://loop-aes.sourceforge.net/ diff --git a/package/aespipe/Config.in.host b/package/aespipe/Config.in.host new file mode 100644 index 00000000..1e98c21c --- /dev/null +++ b/package/aespipe/Config.in.host @@ -0,0 +1,10 @@ +config BR2_PACKAGE_HOST_AESPIPE + bool "host aespipe" + help + aespipe program is AES encrypting or decrypting pipe. It + reads from standard input and writes to standard output. It + can be used to create and restore encrypted tar or cpio + archives. It can be used to encrypt and decrypt loop-AES + compatible encrypted disk images. + + http://loop-aes.sourceforge.net/ diff --git a/package/aespipe/aespipe.hash b/package/aespipe/aespipe.hash new file mode 100644 index 00000000..4fe7d075 --- /dev/null +++ b/package/aespipe/aespipe.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/loop-aes/files/aespipe/v2.4g/ +sha1 fb6b0108176d653f0e5b3be2385b132be791d800 aespipe-v2.4g.tar.bz2 +md5 c216c6c9e939fac69f859af0ad2fd8ef aespipe-v2.4g.tar.bz2 +# Locally computed: +sha256 bfb97e7de161e8d7ce113b163bda1d1a8ec77d2c1afab56dcc8153d7a90187fc aespipe-v2.4g.tar.bz2 diff --git a/package/aespipe/aespipe.mk b/package/aespipe/aespipe.mk new file mode 100644 index 00000000..4769536d --- /dev/null +++ b/package/aespipe/aespipe.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# aespipe +# +################################################################################ + +AESPIPE_VERSION = 2.4g +AESPIPE_SOURCE = aespipe-v$(AESPIPE_VERSION).tar.bz2 +AESPIPE_SITE = http://loop-aes.sourceforge.net/aespipe +AESPIPE_LICENSE = GPL + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/agent-proxy/Config.in.host b/package/agent-proxy/Config.in.host new file mode 100644 index 00000000..80328790 --- /dev/null +++ b/package/agent-proxy/Config.in.host @@ -0,0 +1,11 @@ +config BR2_PACKAGE_HOST_AGENT_PROXY + bool "host agent-proxy" + help + This is a simple, small proxy which was intended for use + with kgdb, or gdbserver type connections where you want to + share a text console and a debug session. + + The idea is that you use the agent-proxy to connect to a + serial port directly or to a remote terminal server. + + git://git.kernel.org/pub/scm/utils/kernel/kgdb/agent-proxy.git diff --git a/package/agent-proxy/agent-proxy.hash b/package/agent-proxy/agent-proxy.hash new file mode 100644 index 00000000..685dd4fb --- /dev/null +++ b/package/agent-proxy/agent-proxy.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b1667b36074c10ebd6dd1f89eda75d5877bc8e06ecf2919f18e75a7a5a9de19b agent-proxy-1.97.tar.gz +sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 COPYING diff --git a/package/agent-proxy/agent-proxy.mk b/package/agent-proxy/agent-proxy.mk new file mode 100644 index 00000000..c8844ccb --- /dev/null +++ b/package/agent-proxy/agent-proxy.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# agent-proxy +# +################################################################################ + +AGENT_PROXY_VERSION = 1.97 +AGENT_PROXY_SITE = https://git.kernel.org/pub/scm/utils/kernel/kgdb/agent-proxy.git/snapshot +AGENT_PROXY_LICENSE = GPL-2.0 +AGENT_PROXY_LICENSE_FILES = COPYING + +define HOST_AGENT_PROXY_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define HOST_AGENT_PROXY_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/agent-proxy $(HOST_DIR)/bin/agent-proxy +endef + +$(eval $(host-generic-package)) diff --git a/package/agentpp/Config.in b/package/agentpp/Config.in new file mode 100644 index 00000000..cc753751 --- /dev/null +++ b/package/agentpp/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_AGENTPP + bool "agent++" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # snmp++ + depends on !BR2_STATIC_LIBS # snmp++ + select BR2_PACKAGE_SNMPPP + help + AGENT++ is a set of C++ classes which provides a complete + protocol engine and dispatch table for the development of + SNMP agents. AGENT++ is a multilingual API which supports + SNMPv1, SNMPv2c, and SNMPv3. It provides various C++ classes + implementing prototypes for scalar and table SNMP managed + objects that can be customized by derivation. Additional + classes support the development of proxy agents as well as + sending notifications. + + SNMPv3 support is enabled if SNMP++ enables it. + + https://www.agentpp.com/api/cpp/agent_pp.html + +comment "agent++ needs a toolchain w/ threads, C++, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/package/agentpp/agentpp.hash b/package/agentpp/agentpp.hash new file mode 100644 index 00000000..7c94f4b1 --- /dev/null +++ b/package/agentpp/agentpp.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 3287218cf6eaa3744b3788afd1e7d72e7a9508d45741243178404f6b47edd86f agent++-4.6.1.tar.gz +sha256 1eb85fc97224598dad1852b5d6483bbcf0aa8608790dcc657a5a2a761ae9c8c6 LICENSE-2_0.txt diff --git a/package/agentpp/agentpp.mk b/package/agentpp/agentpp.mk new file mode 100644 index 00000000..3756d0ca --- /dev/null +++ b/package/agentpp/agentpp.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# agentpp +# +################################################################################ + +AGENTPP_VERSION = 4.6.1 +AGENTPP_SOURCE = agent++-$(AGENTPP_VERSION).tar.gz +AGENTPP_SITE = http://www.agentpp.com/download +AGENTPP_LICENSE = Apache-2.0 +AGENTPP_LICENSE_FILES = LICENSE-2_0.txt +AGENTPP_INSTALL_STAGING = YES +AGENTPP_DEPENDENCIES = host-pkgconf snmppp +AGENTPP_CONF_ENV = CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11" +AGENTPP_CONF_OPTS += \ + --disable-proxy \ + --disable-forwarder \ + --disable-rpath + +$(eval $(autotools-package)) diff --git a/package/aircrack-ng/Config.in b/package/aircrack-ng/Config.in new file mode 100644 index 00000000..eb997e8d --- /dev/null +++ b/package/aircrack-ng/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_AIRCRACK_NG + bool "aircrack-ng" + depends on BR2_USE_MMU # uses fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS # dlfcn.h + select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_LIBGCRYPT + select BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 if BR2_PACKAGE_LIBOPENSSL + help + A set of tools for auditing wireless networks + + For complete functionality, also select ethtool, iw, + util-linux (utilities and rfkill), and wireless_tools. + + http://www.aircrack-ng.org/ + +comment "aircrack-ng needs a toolchain w/ dynamic library, threads, C++" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_INSTALL_LIBSTDCPP diff --git a/package/aircrack-ng/aircrack-ng.hash b/package/aircrack-ng/aircrack-ng.hash new file mode 100644 index 00000000..3fb6de98 --- /dev/null +++ b/package/aircrack-ng/aircrack-ng.hash @@ -0,0 +1,6 @@ +# From http://www.aircrack-ng.org/downloads.html +sha1 bd43a35281c9c81d958b95aa76b4404c29f904ff aircrack-ng-1.7.tar.gz +md5 a918ea7146f91d8c799fb770c38f4bec aircrack-ng-1.7.tar.gz + +# Hash for license file: +sha256 fc51fd3a97223f2fd47b057202d4a6b0daaedf23b5a1f5ff8723c192fc1e021d LICENSE diff --git a/package/aircrack-ng/aircrack-ng.mk b/package/aircrack-ng/aircrack-ng.mk new file mode 100644 index 00000000..6ce738bb --- /dev/null +++ b/package/aircrack-ng/aircrack-ng.mk @@ -0,0 +1,77 @@ +################################################################################ +# +# aircrack-ng +# +################################################################################ + +AIRCRACK_NG_VERSION = 1.7 +AIRCRACK_NG_SITE = http://download.aircrack-ng.org +AIRCRACK_NG_LICENSE = GPL-2.0+ +AIRCRACK_NG_LICENSE_FILES = LICENSE +AIRCRACK_NG_CPE_ID_VENDOR = aircrack-ng +AIRCRACK_NG_DEPENDENCIES = \ + $(if $(BR2_PACKAGE_CMOCKA),cmocka) \ + $(if $(BR2_PACKAGE_LIBNL),libnl) \ + $(if $(BR2_PACKAGE_OPENSSL),openssl) \ + $(if $(BR2_PACKAGE_PCRE),pcre) \ + $(if $(BR2_PACKAGE_ZLIB),zlib) \ + host-pkgconf +AIRCRACK_NG_AUTORECONF = YES +# Enable buddy-ng, easside-ng, tkiptun-ng, wesside-ng +AIRCRACK_NG_CONF_OPTS = --with-experimental + +ifeq ($(BR2_TOOLCHAIN_HAS_SSP),y) +AIRCRACK_NG_CONF_OPTS += --with-opt +else +AIRCRACK_NG_CONF_OPTS += --without-opt +endif + +ifeq ($(BR2_PACKAGE_DUMA),y) +AIRCRACK_NG_DEPENDENCIES += duma +AIRCRACK_NG_CONF_OPTS += --with-duma +else +AIRCRACK_NG_CONF_OPTS += --without-duma +endif + +ifeq ($(BR2_PACKAGE_HWLOC),y) +AIRCRACK_NG_DEPENDENCIES += hwloc +AIRCRACK_NG_CONF_OPTS += --enable-hwloc +else +AIRCRACK_NG_CONF_OPTS += --disable-hwloc +endif + +ifeq ($(BR2_PACKAGE_JEMALLOC),y) +AIRCRACK_NG_DEPENDENCIES += jemalloc +AIRCRACK_NG_CONF_OPTS += --with-jemalloc +else +AIRCRACK_NG_CONF_OPTS += --without-jemalloc +endif + +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +AIRCRACK_NG_DEPENDENCIES += libgcrypt +AIRCRACK_NG_CONF_OPTS += \ + --with-gcrypt \ + --with-libgcrypt-prefix=$(STAGING_DIR)/usr +else +AIRCRACK_NG_CONF_OPTS += --without-gcrypt +endif + +ifeq ($(BR2_PACKAGE_LIBPCAP),y) +AIRCRACK_NG_DEPENDENCIES += libpcap +AIRCRACK_NG_CONF_OPTS += \ + --with-libpcap-include=$(STAGING_DIR)/usr/include \ + --with-libpcap-lib=$(STAGING_DIR)/usr/lib +ifeq ($(BR2_STATIC_LIBS),y) +AIRCRACK_NG_CONF_ENV += \ + LIBS="`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`" +endif +endif + +ifeq ($(BR2_PACKAGE_SQLITE),y) +AIRCRACK_NG_DEPENDENCIES += sqlite +AIRCRACK_NG_CONF_OPTS += --with-sqlite3=$(STAGING_DIR)/usr +else +AIRCRACK_NG_CONF_OPTS += --without-sqlite3 +endif + +$(eval $(autotools-package)) diff --git a/package/alchemy/0001-toolchains-remove-hash-style-management.patch b/package/alchemy/0001-toolchains-remove-hash-style-management.patch new file mode 100644 index 00000000..522766b9 --- /dev/null +++ b/package/alchemy/0001-toolchains-remove-hash-style-management.patch @@ -0,0 +1,36 @@ +From 4cb9681ab99db3d8e330ac789e17ec69583aecd4 Mon Sep 17 00:00:00 2001 +From: Herve Codina +Date: Thu, 28 Oct 2021 18:39:18 +0200 +Subject: [PATCH] toolchains: remove --hash-style management + +Using an external toolchain, with an external configuration given +using TARGET_GLOBAL_XXXX variables, having '--hash-style=both' +in Alchemy toolchains can lead to compilation failure. + +This patch simply removes all --hash-style settings. + +Signed-off-by: Herve Codina +--- + toolchains/linux/eglibc/flags.mk | 9 +-------- + 1 file changed, 1 insertion(+), 8 deletions(-) + +diff --git a/toolchains/linux/eglibc/flags.mk b/toolchains/linux/eglibc/flags.mk +index 95c0a46..4474729 100644 +--- a/toolchains/linux/eglibc/flags.mk ++++ b/toolchains/linux/eglibc/flags.mk +@@ -11,11 +11,4 @@ TARGET_GLOBAL_LDLIBS += -pthread -lrt + TARGET_GLOBAL_CFLAGS += -funwind-tables + + # Enable link optimization for binutils's ld. +-# gnu hash not supported by mips ABI +-ifeq ("$(TARGET_ARCH)","mips") +- TARGET_GLOBAL_LDFLAGS += -Wl,-O1 +-else ifeq ("$(TARGET_ARCH)","mips64") +- TARGET_GLOBAL_LDFLAGS += -Wl,-O1 +-else +- TARGET_GLOBAL_LDFLAGS += -Wl,-O1,--hash-style=both +-endif ++TARGET_GLOBAL_LDFLAGS += -Wl,-O1 +-- +2.31.1 + diff --git a/package/alchemy/alchemy.hash b/package/alchemy/alchemy.hash new file mode 100644 index 00000000..33895263 --- /dev/null +++ b/package/alchemy/alchemy.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 346c06b9317691a9371d878b850e61f8bcec4f20132ac95340b9d2571be25ee8 alchemy-d95b3c38cd37814a1b98d0bbf813de7adaaecfbc.tar.gz +sha256 542f44eecd9f8806ec1ae285201e442ab547c82d9f8c70e44c977d6332a2bea0 COPYING +sha256 49872815ee3de163f07a83737c996e77a5bffa186d06b1e3bb969bfb68c251df README diff --git a/package/alchemy/alchemy.mk b/package/alchemy/alchemy.mk new file mode 100644 index 00000000..10d1068a --- /dev/null +++ b/package/alchemy/alchemy.mk @@ -0,0 +1,71 @@ +################################################################################ +# +# alchemy +# +################################################################################ + +ALCHEMY_VERSION = d95b3c38cd37814a1b98d0bbf813de7adaaecfbc +ALCHEMY_SITE = $(call github,Parrot-Developers,alchemy,$(ALCHEMY_VERSION)) +ALCHEMY_LICENSE = BSD-3-Clause (Alchemy), GPL-2.0 (kconfig) +ALCHEMY_LICENSE_FILES = COPYING README +HOST_ALCHEMY_DEPENDENCIES = host-pkgconf host-python3 + +ALCHEMY_HOME = $(HOST_DIR)/opt/alchemy +ALCHEMY_SDK_BASEDIR = $(STAGING_DIR)/usr/lib/alchemy/sdk + +define HOST_ALCHEMY_INSTALL_CMDS + mkdir -p $(ALCHEMY_HOME) + cp -rf $(@D)/* $(ALCHEMY_HOME) + cp $(HOST_ALCHEMY_PKGDIR)/atom.mk.in $(ALCHEMY_HOME)/atom.mk.in +endef + +$(eval $(host-generic-package)) + +# Variables used by other packages + +ALCHEMY_MAKE = $(ALCHEMY_HOME)/scripts/alchemake + +# TARGET_ARCH is set to 'xxx' to avoid Alchemy managing the architecture. +# When Alchemy manages the architecture, it can add some flags to CFGLAGS and +# can lead to incorrect result with the toolchain provided in TARGET_CROSS. +# 'xxx' is an unknown architecture for Alchemy. Using this value is a simple +# way to disable the Alchemy architecture management. +ALCHEMY_TARGET_ENV = \ + $(TARGET_MAKE_ENV) \ + ALCHEMY_HOME=$(ALCHEMY_HOME) \ + ALCHEMY_WORKSPACE_DIR="$(@D)" \ + ALCHEMY_TARGET_OUT=alchemy-out \ + PKGCONFIG_BIN=$(PKG_CONFIG_HOST_BINARY) \ + TARGET_OS=linux \ + TARGET_OS_FLAVOUR=buildroot \ + TARGET_CROSS="$(TARGET_CROSS)" \ + TARGET_ARCH=xxx \ + TARGET_GLOBAL_CXXFLAGS="$(TARGET_CXXFLAGS)" \ + TARGET_GLOBAL_LDFLAGS="$(TARGET_LDFLAGS)" \ + TARGET_GLOBAL_FFLAGS="$(TARGET_FCFLAGS)" \ + TARGET_GLOBAL_FCFLAGS="$(TARGET_FCFLAGS)" + +ifeq ($(BR2_STATIC_LIBS),y) +ALCHEMY_TARGET_ENV += \ + TARGET_FORCE_STATIC=1 \ + TARGET_GLOBAL_CFLAGS="$(TARGET_CFLAGS)" +else +ALCHEMY_TARGET_ENV += \ + TARGET_GLOBAL_CFLAGS="$(TARGET_CFLAGS) -fPIC" +endif + +# Install an Alchemy SDK file. +# This macro can be used by Alchemy packages +# $1: Alchemy module name +# $2: Alchemy module file name +# $3: Alchemy module libraries this module depends on +define ALCHEMY_INSTALL_LIB_SDK_FILE + $(INSTALL) -m 0644 -D \ + $(ALCHEMY_HOME)/atom.mk.in \ + $(ALCHEMY_SDK_BASEDIR)/$($(PKG)_NAME)/atom.mk + $(SED) 's#@STAGING_DIR@#$(STAGING_DIR)#' \ + -e 's#@MODULE@#$(strip $(1))#' \ + -e 's#@MODULE_FILENAME@#$(strip $(2))#' \ + -e 's#@LIBRARIES@#$(strip $(3))#' \ + $(ALCHEMY_SDK_BASEDIR)/$($(PKG)_NAME)/atom.mk +endef diff --git a/package/alchemy/atom.mk.in b/package/alchemy/atom.mk.in new file mode 100644 index 00000000..084ae0e8 --- /dev/null +++ b/package/alchemy/atom.mk.in @@ -0,0 +1,8 @@ +LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) +LOCAL_MODULE := @MODULE@ +LOCAL_SDK := @STAGING_DIR@ +LOCAL_DESTDIR := usr/lib +LOCAL_MODULE_FILENAME := @MODULE_FILENAME@ +LOCAL_LIBRARIES := @LIBRARIES@ +include $(BUILD_LIBRARY) diff --git a/package/alfred/Config.in b/package/alfred/Config.in new file mode 100644 index 00000000..bfcfef0d --- /dev/null +++ b/package/alfred/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_ALFRED + bool "alfred" + depends on !BR2_STATIC_LIBS # dlopen() + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_LIBNL + help + Alfred is a user space daemon for distributing arbitrary + local information over the mesh/network in a decentralized + fashion. + + This data can be anything which appears to be useful - + originally designed to replace the batman-adv visualization + (vis), you may distribute hostnames, phone books, + administration information, DNS information, the local + weather forecast ... + + https://www.open-mesh.org/projects/alfred/wiki + +comment "alfred needs a toolchain w/ dynamic library, threads" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/alfred/alfred.hash b/package/alfred/alfred.hash new file mode 100644 index 00000000..2153d17e --- /dev/null +++ b/package/alfred/alfred.hash @@ -0,0 +1,5 @@ +# From https://downloads.open-mesh.org/batman/stable/sources/alfred/alfred-2022.1.tar.gz.sha1 +sha1 14e916bda706ccff510f2ea00bb3143c582c9ff2 alfred-2022.1.tar.gz +# Locally computed +sha256 3a0ac2bb26e0cb3f2732d4873669a0a22e9825e8f9a8e7abac986363f275097f alfred-2022.1.tar.gz +sha256 cecbf53d1148e13256ac29f8b900655b7fc8dc12d59939a95bc2323ea1747025 LICENSES/preferred/GPL-2.0 diff --git a/package/alfred/alfred.mk b/package/alfred/alfred.mk new file mode 100644 index 00000000..9af11931 --- /dev/null +++ b/package/alfred/alfred.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# alfred +# +################################################################################ + +ALFRED_VERSION = 2022.1 +ALFRED_SITE = https://downloads.open-mesh.org/batman/stable/sources/alfred +ALFRED_LICENSE = GPL-2.0 +ALFRED_LICENSE_FILES = LICENSES/preferred/GPL-2.0 +ALFRED_DEPENDENCIES = libnl + +define ALFRED_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \ + $(MAKE) -C $(@D) \ + CONFIG_ALFRED_CAPABILITIES=n \ + CONFIG_ALFRED_GPSD=n +endef + +define ALFRED_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/alfred $(TARGET_DIR)/usr/bin/alfred + $(INSTALL) -m 0755 -D $(@D)/vis/batadv-vis $(TARGET_DIR)/usr/bin/batadv-vis +endef + +$(eval $(generic-package)) diff --git a/package/alsa-lib/0001-Don-t-use-fork-on-noMMU-platforms.patch b/package/alsa-lib/0001-Don-t-use-fork-on-noMMU-platforms.patch new file mode 100644 index 00000000..87add9ff --- /dev/null +++ b/package/alsa-lib/0001-Don-t-use-fork-on-noMMU-platforms.patch @@ -0,0 +1,65 @@ +From ffc567b790005850c561f9f6590b069b61f5ba20 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 13 Apr 2018 09:02:37 +0200 +Subject: [PATCH] Don't use fork() on noMMU platforms +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Thomas Petazzoni +[Jörg: update patch for 1.1.6] +Signed-off-by: Jörg Krause +Upstream: http://mailman.alsa-project.org/pipermail/alsa-devel/2018-November/141376.html +[Bernd: update patch for 1.2.4 & 1.2.7] +Signed-off-by: Bernd Kuhls +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi + +--- + configure.ac | 2 ++ + src/pcm/pcm_direct.c | 10 +++++++++- + 2 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 7a152a4abd20..3cf88c37db56 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -56,6 +56,8 @@ AC_CHECK_FUNCS([eaccess]) + dnl Enable largefile support + AC_SYS_LARGEFILE + ++AC_CHECK_FUNC([fork]) ++ + SAVE_LIBRARY_VERSION + AC_SUBST(LIBTOOL_VERSION_INFO) + +diff --git a/src/pcm/pcm_direct.c b/src/pcm/pcm_direct.c +index e53e59238119..cf94c7c1dbf0 100644 +--- a/src/pcm/pcm_direct.c ++++ b/src/pcm/pcm_direct.c +@@ -442,13 +442,21 @@ int snd_pcm_direct_server_create(snd_pcm_direct_t *dmix) + close(dmix->server_fd); + return ret; + } +- ++ ++#ifdef HAVE_FORK + ret = fork(); ++#else ++ ret = vfork(); ++#endif + if (ret < 0) { + close(dmix->server_fd); + return ret; + } else if (ret == 0) { ++#ifdef HAVE_FORK + ret = fork(); ++#else ++ ret = vfork(); ++#endif + if (ret == 0) + server_job(dmix); + _exit(EXIT_SUCCESS); +-- +2.43.0 + diff --git a/package/alsa-lib/Config.in b/package/alsa-lib/Config.in new file mode 100644 index 00000000..447916a2 --- /dev/null +++ b/package/alsa-lib/Config.in @@ -0,0 +1,88 @@ +comment "alsa-lib needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +menuconfig BR2_PACKAGE_ALSA_LIB + bool "alsa-lib" + # Even though some parts of alsa-lib use threads only when + # available, some PCM plugins use them unconditionally. Since + # the usage of alsa-lib on no-thread systems is pretty + # unlikely, just require thread support globally for alsa-lib. + depends on BR2_TOOLCHAIN_HAS_THREADS + # Temporary until + # https://bugtrack.alsa-project.org/alsa-bug/view.php?id=4913 + # is fixed + select BR2_PACKAGE_ALSA_LIB_PCM + help + The Advanced Linux Sound Architecture (ALSA) provides audio + and MIDI functionality to the Linux operating system. + + http://www.alsa-project.org/ + +if BR2_PACKAGE_ALSA_LIB + +config BR2_PACKAGE_ALSA_LIB_PYTHON + bool "Python support for alsa-lib" + depends on BR2_PACKAGE_PYTHON3 + help + Add python support for alsa-lib. + Python will be built and libpython will be installed + in the target directory + http://www.alsa-project.org/ + +config BR2_PACKAGE_ALSA_LIB_DEVDIR + string "directory with ALSA device files" + default "/dev/snd" + +config BR2_PACKAGE_ALSA_LIB_PCM_PLUGINS + string "built PCM plugins" + default "all" if BR2_USE_MMU + default "copy linear route mulaw alaw adpcm rate plug multi file null empty share meter hooks lfloat ladspa dmix dshare dsnoop asym iec958 softvol extplug ioplug mmap_emul" if !BR2_USE_MMU + +config BR2_PACKAGE_ALSA_LIB_CTL_PLUGINS + string "built control plugins" + default "all" + +config BR2_PACKAGE_ALSA_LIB_ALOAD + bool "aload" + default y + +config BR2_PACKAGE_ALSA_LIB_MIXER + bool "mixer" + default y + +config BR2_PACKAGE_ALSA_LIB_PCM + bool "pcm" + default y + +config BR2_PACKAGE_ALSA_LIB_RAWMIDI + bool "rawmidi" + default y + +config BR2_PACKAGE_ALSA_LIB_HWDEP + bool "hwdep" + default y + +config BR2_PACKAGE_ALSA_LIB_SEQ + bool "seq" + default y + +config BR2_PACKAGE_ALSA_LIB_UCM + bool "ucm" + default y + select BR2_PACKAGE_ALSA_LIB_MIXER + +config BR2_PACKAGE_ALSA_LIB_ALISP + bool "alisp" + default y + depends on BR2_USE_MMU + +config BR2_PACKAGE_ALSA_LIB_OLD_SYMBOLS + bool "old-symbols" + default y + +config BR2_PACKAGE_ALSA_LIB_TOPOLOGY + bool "topology" + default y + depends on !BR2_STATIC_LIBS + +endif diff --git a/package/alsa-lib/alsa-lib.hash b/package/alsa-lib/alsa-lib.hash new file mode 100644 index 00000000..9c993c05 --- /dev/null +++ b/package/alsa-lib/alsa-lib.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 4868cd908627279da5a634f468701625be8cc251d84262c7e5b6a218391ad0d2 alsa-lib-1.2.12.tar.bz2 +sha256 32434afcc8666ba060e111d715bfdb6c2d5dd8a35fa4d3ab8ad67d8f850d2f2b COPYING +sha256 bfe16cf823bcff261fc6a062c07ee96660e3c39678f42f39a788a68dbc234ced aserver/COPYING diff --git a/package/alsa-lib/alsa-lib.mk b/package/alsa-lib/alsa-lib.mk new file mode 100644 index 00000000..1dc25ea4 --- /dev/null +++ b/package/alsa-lib/alsa-lib.mk @@ -0,0 +1,80 @@ +################################################################################ +# +# alsa-lib +# +################################################################################ + +ALSA_LIB_VERSION = 1.2.12 +ALSA_LIB_SOURCE = alsa-lib-$(ALSA_LIB_VERSION).tar.bz2 +ALSA_LIB_SITE = https://www.alsa-project.org/files/pub/lib +ALSA_LIB_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (aserver) +ALSA_LIB_LICENSE_FILES = COPYING aserver/COPYING +ALSA_LIB_CPE_ID_VENDOR = alsa-project +ALSA_LIB_INSTALL_STAGING = YES +ALSA_LIB_CFLAGS = $(TARGET_CFLAGS) +ALSA_LIB_AUTORECONF = YES +ALSA_LIB_CONF_OPTS = \ + --with-alsa-devdir=$(call qstrip,$(BR2_PACKAGE_ALSA_LIB_DEVDIR)) \ + --with-pcm-plugins="$(call qstrip,$(BR2_PACKAGE_ALSA_LIB_PCM_PLUGINS))" \ + --with-ctl-plugins="$(call qstrip,$(BR2_PACKAGE_ALSA_LIB_CTL_PLUGINS))" + +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),) +ALSA_LIB_CONF_OPTS += --without-versioned +endif + +# Can't build with static & shared at the same time (1.0.25+) +ifeq ($(BR2_STATIC_LIBS),y) +ALSA_LIB_CONF_OPTS += \ + --enable-shared=no \ + --without-libdl +else +ALSA_LIB_CONF_OPTS += --enable-static=no +endif + +ifneq ($(BR2_PACKAGE_ALSA_LIB_ALOAD),y) +ALSA_LIB_CONF_OPTS += --disable-aload +endif +ifneq ($(BR2_PACKAGE_ALSA_LIB_MIXER),y) +ALSA_LIB_CONF_OPTS += --disable-mixer +endif +ifneq ($(BR2_PACKAGE_ALSA_LIB_PCM),y) +ALSA_LIB_CONF_OPTS += --disable-pcm +endif +ifneq ($(BR2_PACKAGE_ALSA_LIB_RAWMIDI),y) +ALSA_LIB_CONF_OPTS += --disable-rawmidi +endif +ifneq ($(BR2_PACKAGE_ALSA_LIB_HWDEP),y) +ALSA_LIB_CONF_OPTS += --disable-hwdep +endif +ifneq ($(BR2_PACKAGE_ALSA_LIB_SEQ),y) +ALSA_LIB_CONF_OPTS += --disable-seq +endif +ifneq ($(BR2_PACKAGE_ALSA_LIB_UCM),y) +ALSA_LIB_CONF_OPTS += --disable-ucm +endif +ifneq ($(BR2_PACKAGE_ALSA_LIB_ALISP),y) +ALSA_LIB_CONF_OPTS += --disable-alisp +endif +ifneq ($(BR2_PACKAGE_ALSA_LIB_OLD_SYMBOLS),y) +ALSA_LIB_CONF_OPTS += --disable-old-symbols +endif +ifneq ($(BR2_PACKAGE_ALSA_LIB_TOPOLOGY),y) +ALSA_LIB_CONF_OPTS += --disable-topology +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB_PYTHON),y) +ALSA_LIB_CONF_OPTS += \ + --enable-mixer-pymods \ + --with-pythonlibs=-lpython$(PYTHON3_VERSION_MAJOR) \ + --with-pythonincludes=$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR) +ALSA_LIB_CFLAGS += -I$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR) +ALSA_LIB_DEPENDENCIES += python3 +else +ALSA_LIB_CONF_OPTS += --disable-python +endif + +ALSA_LIB_CONF_ENV = \ + CFLAGS="$(ALSA_LIB_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS) -lm" + +$(eval $(autotools-package)) diff --git a/package/alsa-plugins/Config.in b/package/alsa-plugins/Config.in new file mode 100644 index 00000000..ee0fb4c1 --- /dev/null +++ b/package/alsa-plugins/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_ALSA_PLUGINS + bool "alsa-plugins" + depends on BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_HWDEP + help + Advanced Linux Sound Architecture Plugins + + http://www.alsa-project.org/ diff --git a/package/alsa-plugins/alsa-plugins.hash b/package/alsa-plugins/alsa-plugins.hash new file mode 100644 index 00000000..6943be62 --- /dev/null +++ b/package/alsa-plugins/alsa-plugins.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 7bd8a83d304e8e2d86a25895d8dcb0ef0245a8df32e271959cdbdc6af39b66f2 alsa-plugins-1.2.12.tar.bz2 +sha256 32434afcc8666ba060e111d715bfdb6c2d5dd8a35fa4d3ab8ad67d8f850d2f2b COPYING +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING.GPL diff --git a/package/alsa-plugins/alsa-plugins.mk b/package/alsa-plugins/alsa-plugins.mk new file mode 100644 index 00000000..25ecc589 --- /dev/null +++ b/package/alsa-plugins/alsa-plugins.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# alsa-plugins +# +################################################################################ + +ALSA_PLUGINS_VERSION = 1.2.12 +ALSA_PLUGINS_SOURCE = alsa-plugins-$(ALSA_PLUGINS_VERSION).tar.bz2 +ALSA_PLUGINS_SITE = https://www.alsa-project.org/files/pub/plugins +ALSA_PLUGINS_LICENSE = LGPL-2.1+ +ALSA_PLUGINS_LICENSE_FILES = COPYING +ALSA_PLUGINS_DEPENDENCIES = host-pkgconf alsa-lib + +ALSA_PLUGINS_CONF_OPTS = \ + --disable-jack \ + --disable-usbstream \ + --disable-pulseaudio \ + --disable-libav \ + --disable-maemo-plugin \ + --disable-maemo-resource-manager \ + --with-speex=no + +ifeq ($(BR2_PACKAGE_ALSA_UTILS),y) +ALSA_PLUGINS_DEPENDENCIES += alsa-utils +endif + +ifeq ($(BR2_PACKAGE_LIBSAMPLERATE),y) +ALSA_PLUGINS_CONF_OPTS += --enable-samplerate +ALSA_PLUGINS_DEPENDENCIES += libsamplerate +ALSA_PLUGINS_LICENSE += , GPL-2.0+ (samplerate plugin) +ALSA_PLUGINS_LICENSE_FILES += COPYING.GPL +else +ALSA_PLUGINS_CONF_OPTS += --disable-samplerate +endif + +$(eval $(autotools-package)) diff --git a/package/alsa-utils/0001-alsactl-info.c-fix-conditionals-on-__ALSA_PCM_H-and-.patch b/package/alsa-utils/0001-alsactl-info.c-fix-conditionals-on-__ALSA_PCM_H-and-.patch new file mode 100644 index 00000000..145c9da0 --- /dev/null +++ b/package/alsa-utils/0001-alsactl-info.c-fix-conditionals-on-__ALSA_PCM_H-and-.patch @@ -0,0 +1,110 @@ +From 4bfd1f15114550e1be7e43ae37a61906e1bff809 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 17 Jul 2022 18:59:48 +0200 +Subject: [PATCH] alsactl/info.c: fix conditionals on __ALSA_PCM_H and + __ALSA_RAWMIDI_H + +Commit bbc74a61ac7c35e506c3d7f76ecf943cb55736a6 ("alsactl: implement +'info' command") implemented an alsactl info command. In this +implementation, there was an attempt to properly address optional +features from alsa-lib by using conditions on __ALSA_PCM_H, +__ALSA_RAWMIDI_H. + +Unfortunately, this attempt does not work entirely: only the code +inside pcm_device_list(), rawmidi_device_list() was conditionally +compiled, but their very prototype also use type definitions provided +in pcm.h and rawmidi.h. So really, it's the entire function that needs +to be conditionally implemented. + +Also, snd_rawmidi_stream_name() was not handled properly, for the same +reason. + +This commit implements pcm_device_list() only if __ALSA_PCM_H is +defined, and implements snd_rawmidi_stream_name() and +rawmidi_device_list() only if __ALSA_RAWMIDI_H is defined. + +general_card_info() is modified to not call the PCM or raw MIDI +functions when support is not available. + +Signed-off-by: Thomas Petazzoni +Upstream: https://mailman.alsa-project.org/pipermail/alsa-devel/2022-July/203846.html +[Bernd: update patch for 1.2.10] +Signed-off-by: Bernd Kuhls +--- + alsactl/info.c | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +diff --git a/alsactl/info.c b/alsactl/info.c +index 253539d..9bd72af 100644 +--- a/alsactl/info.c ++++ b/alsactl/info.c +@@ -22,9 +22,9 @@ + #include "aconfig.h" + #include "alsactl.h" + ++#ifdef __ALSA_PCM_H + static int pcm_device_list(snd_ctl_t *ctl, snd_pcm_stream_t stream, bool *first) + { +-#ifdef __ALSA_PCM_H + int err, dev, idx; + unsigned int count; + snd_pcm_info_t *pcminfo; +@@ -76,10 +76,12 @@ static int pcm_device_list(snd_ctl_t *ctl, snd_pcm_stream_t stream, bool *first) + idx, snd_pcm_info_get_subdevice_name(pcminfo)); + } + } +-#endif ++ + return 0; + } ++#endif + ++#ifdef __ALSA_RAWMIDI_H + static const char *snd_rawmidi_stream_name(snd_rawmidi_stream_t stream) + { + if (stream == SND_RAWMIDI_STREAM_INPUT) +@@ -91,7 +93,6 @@ static const char *snd_rawmidi_stream_name(snd_rawmidi_stream_t stream) + + static int rawmidi_device_list(snd_ctl_t *ctl, snd_rawmidi_stream_t stream, bool *first) + { +-#ifdef __ALSA_RAWMIDI_H + int err, dev, idx; + unsigned int count; + snd_rawmidi_info_t *info; +@@ -143,9 +144,10 @@ static int rawmidi_device_list(snd_ctl_t *ctl, snd_rawmidi_stream_t stream, bool + idx, snd_rawmidi_info_get_subdevice_name(info)); + } + } +-#endif ++ + return 0; + } ++#endif + + static int hwdep_device_list(snd_ctl_t *ctl) + { +@@ -227,17 +229,21 @@ int general_card_info(int cardno) + } + err = card_info(ctl); + ++#ifdef __ALSA_PCM_H + first = true; + if (err >= 0) + err = pcm_device_list(ctl, SND_PCM_STREAM_PLAYBACK, &first); + if (err >= 0) + err = pcm_device_list(ctl, SND_PCM_STREAM_CAPTURE, &first); ++#endif + ++#ifdef __ALSA_RAWMIDI_H + first = true; + if (err >= 0) + err = rawmidi_device_list(ctl, SND_RAWMIDI_STREAM_INPUT, &first); + if (err >= 0) + err = rawmidi_device_list(ctl, SND_RAWMIDI_STREAM_OUTPUT, &first); ++#endif + + if (err >= 0) + err = hwdep_device_list(ctl); +-- +2.36.1 + diff --git a/package/alsa-utils/Config.in b/package/alsa-utils/Config.in new file mode 100644 index 00000000..3429d0b4 --- /dev/null +++ b/package/alsa-utils/Config.in @@ -0,0 +1,100 @@ +comment "alsa-utils needs a toolchain w/ threads" + depends on BR2_USE_MMU # fork + depends on !BR2_TOOLCHAIN_HAS_THREADS + +menuconfig BR2_PACKAGE_ALSA_UTILS + bool "alsa-utils" + depends on BR2_USE_MMU # fork + depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib + select BR2_PACKAGE_ALSA_LIB + help + This package contains the command line utilities for the ALSA + project. + + http://www.alsa-project.org/ + +if BR2_PACKAGE_ALSA_UTILS + +config BR2_PACKAGE_ALSA_UTILS_ALSACONF + bool "alsaconf" + +config BR2_PACKAGE_ALSA_UTILS_ACONNECT + bool "aconnect" + select BR2_PACKAGE_ALSA_LIB_SEQ + +config BR2_PACKAGE_ALSA_UTILS_ALSACTL + bool "alsactl" + default y + +config BR2_PACKAGE_ALSA_UTILS_ALSALOOP + bool "alsaloop" + +config BR2_PACKAGE_ALSA_UTILS_ALSAMIXER + bool "alsamixer" + default y + depends on BR2_USE_WCHAR + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_ALSA_LIB_MIXER + +comment "alsamixer needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +config BR2_PACKAGE_ALSA_UTILS_ALSAUCM + bool "alsaucm" + select BR2_PACKAGE_ALSA_LIB_UCM + +config BR2_PACKAGE_ALSA_UTILS_ALSATPLG + bool "alsatplg" + depends on !BR2_STATIC_LIBS # dlfcn.h + select BR2_PACKAGE_ALSA_LIB_TOPOLOGY + +comment "alsatplg needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_ALSA_UTILS_AMIDI + bool "amidi" + select BR2_PACKAGE_ALSA_LIB_RAWMIDI + +config BR2_PACKAGE_ALSA_UTILS_AMIXER + bool "amixer" + select BR2_PACKAGE_ALSA_LIB_MIXER + +config BR2_PACKAGE_ALSA_UTILS_APLAY + bool "aplay/arecord" + select BR2_PACKAGE_ALSA_LIB_PCM + +config BR2_PACKAGE_ALSA_UTILS_APLAYMIDI + bool "aplaymidi" + select BR2_PACKAGE_ALSA_LIB_SEQ + +config BR2_PACKAGE_ALSA_UTILS_ARECORDMIDI + bool "arecordmidi" + select BR2_PACKAGE_ALSA_LIB_SEQ + +config BR2_PACKAGE_ALSA_UTILS_ASEQDUMP + bool "aseqdump" + select BR2_PACKAGE_ALSA_LIB_SEQ + +config BR2_PACKAGE_ALSA_UTILS_ASEQNET + bool "aseqnet" + select BR2_PACKAGE_ALSA_LIB_SEQ + +config BR2_PACKAGE_ALSA_UTILS_BAT + bool "bat" + help + ALSABAT (ALSA Basic Audio Tester) is a simple command-line + utility intended to help automate audio driver and sound + server testing with little human interaction. + + Note that analysis support in alsabat requires fftw single + precision. + +config BR2_PACKAGE_ALSA_UTILS_IECSET + bool "iecset" + select BR2_PACKAGE_ALSA_LIB_PCM + +config BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST + bool "speaker-test" + select BR2_PACKAGE_ALSA_LIB_PCM + +endif diff --git a/package/alsa-utils/alsa-utils.hash b/package/alsa-utils/alsa-utils.hash new file mode 100644 index 00000000..bff223f9 --- /dev/null +++ b/package/alsa-utils/alsa-utils.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 98bc6677d0c0074006679051822324a0ab0879aea558a8f68b511780d30cd924 alsa-utils-1.2.12.tar.bz2 +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/package/alsa-utils/alsa-utils.mk b/package/alsa-utils/alsa-utils.mk new file mode 100644 index 00000000..e77e36fc --- /dev/null +++ b/package/alsa-utils/alsa-utils.mk @@ -0,0 +1,103 @@ +################################################################################ +# +# alsa-utils +# +################################################################################ + +ALSA_UTILS_VERSION = 1.2.12 +ALSA_UTILS_SOURCE = alsa-utils-$(ALSA_UTILS_VERSION).tar.bz2 +ALSA_UTILS_SITE = https://www.alsa-project.org/files/pub/utils +ALSA_UTILS_LICENSE = GPL-2.0 +ALSA_UTILS_LICENSE_FILES = COPYING +# 0011-configure.ac-fix-UMP-support-detection.patch +ALSA_UTILS_AUTORECONF = YES +ALSA_UTILS_INSTALL_STAGING = YES +ALSA_UTILS_DEPENDENCIES = host-pkgconf alsa-lib \ + $(if $(BR2_PACKAGE_NCURSES),ncurses) \ + $(if $(BR2_PACKAGE_LIBSAMPLERATE),libsamplerate) \ + $(TARGET_NLS_DEPENDENCIES) + +ifeq ($(BR2_PACKAGE_ALSA_UTILS_ALSACTL),y) +ALSA_UTILS_SELINUX_MODULES += alsa +endif + +ALSA_UTILS_CONF_ENV = \ + ac_cv_prog_ncurses5_config=$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS) \ + LIBS=$(TARGET_NLS_LIBS) + +ALSA_UTILS_CONF_OPTS = \ + --disable-xmlto \ + --disable-rst2man \ + --with-curses=$(if $(BR2_PACKAGE_NCURSES_WCHAR),ncursesw,ncurses) + +ifeq ($(BR2_PACKAGE_ALSA_UTILS_ALSALOOP),y) +ALSA_UTILS_CONF_OPTS += --enable-alsaloop +else +ALSA_UTILS_CONF_OPTS += --disable-alsaloop +endif + +ifneq ($(BR2_PACKAGE_ALSA_UTILS_ALSAMIXER),y) +ALSA_UTILS_CONF_OPTS += --disable-alsamixer +endif + +ifeq ($(BR2_PACKAGE_ALSA_UTILS_BAT),y) +ALSA_UTILS_CONF_OPTS += --enable-bat +# Analysis support requires fftw single precision +ALSA_UTILS_DEPENDENCIES += $(if $(BR2_PACKAGE_FFTW_SINGLE),fftw-single) +else +ALSA_UTILS_CONF_OPTS += --disable-bat +endif + +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSACONF) += usr/sbin/alsaconf +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSACTL) += usr/sbin/alsactl +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSALOOP) += usr/bin/alsaloop +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSAMIXER) += usr/bin/alsamixer +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSATPLG) += usr/bin/alsatplg +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_AMIDI) += usr/bin/amidi +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_AMIXER) += usr/bin/amixer +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_APLAY) += usr/bin/aplay usr/bin/arecord +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_BAT) += usr/bin/alsabat +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_IECSET) += usr/bin/iecset +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ACONNECT) += usr/bin/aconnect +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSAUCM) += usr/bin/alsaucm +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_APLAYMIDI) += usr/bin/aplaymidi +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ARECORDMIDI) += usr/bin/arecordmidi +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ASEQDUMP) += usr/bin/aseqdump +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ASEQNET) += usr/bin/aseqnet +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST) += usr/bin/speaker-test + +define ALSA_UTILS_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/var/lib/alsa + for i in $(ALSA_UTILS_TARGETS_y); do \ + $(INSTALL) -D -m 755 $(STAGING_DIR)/$$i $(TARGET_DIR)/$$i || exit 1; \ + done + if [ -x "$(TARGET_DIR)/usr/bin/speaker-test" ]; then \ + mkdir -p $(TARGET_DIR)/usr/share/alsa/speaker-test; \ + mkdir -p $(TARGET_DIR)/usr/share/sounds/alsa; \ + cp -rdpf $(STAGING_DIR)/usr/share/alsa/speaker-test/* $(TARGET_DIR)/usr/share/alsa/speaker-test/; \ + cp -rdpf $(STAGING_DIR)/usr/share/sounds/alsa/* $(TARGET_DIR)/usr/share/sounds/alsa/; \ + fi + if [ -x "$(TARGET_DIR)/usr/sbin/alsactl" ]; then \ + mkdir -p $(TARGET_DIR)/usr/share/; \ + cp -rdpf $(STAGING_DIR)/usr/share/alsa/* $(TARGET_DIR)/usr/share/alsa/; \ + fi +endef + +ifeq ($(BR2_PACKAGE_ALSA_UTILS_ALSACTL)$(BR2_INIT_SYSTEMD),yy) +ALSA_UTILS_DEPENDENCIES += systemd +ALSA_UTILS_CONF_OPTS += --with-systemdsystemunitdir=/usr/lib/systemd/system +define ALSA_UTILS_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(@D)/alsactl/alsa-restore.service \ + $(TARGET_DIR)/usr/lib/systemd/system/alsa-restore.service + $(INSTALL) -D -m 0644 $(@D)/alsactl/alsa-state.service \ + $(TARGET_DIR)/usr/lib/systemd/system/alsa-state.service + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/lib/systemd/system/alsa-restore.service.d + printf '[Install]\nWantedBy=multi-user.target\n' \ + >$(TARGET_DIR)/usr/lib/systemd/system/alsa-restore.service.d/buildroot-enable.conf + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/lib/systemd/system/alsa-state.service.d + printf '[Install]\nWantedBy=multi-user.target\n' \ + >$(TARGET_DIR)/usr/lib/systemd/system/alsa-state.service.d/buildroot-enable.conf; +endef +endif + +$(eval $(autotools-package)) diff --git a/package/alsamixergui/0001-misc-fixes.patch b/package/alsamixergui/0001-misc-fixes.patch new file mode 100644 index 00000000..6b498dad --- /dev/null +++ b/package/alsamixergui/0001-misc-fixes.patch @@ -0,0 +1,40 @@ +--- a/configure.in ++++ b/configure.in +@@ -11,7 +11,10 @@ + AC_PROG_LN_S + + dnl Checks for libraries. +-AC_CHECK_LIB(fltk,numericsort,,AC_MSG_ERROR("missing fltk")) ++AC_CHECK_LIB(fltk,numericsort,, ++AC_CHECK_LIB(fltk,fl_numericsort,, ++AC_MSG_ERROR("missing fltk")) ++) + AM_PATH_ALSA(0.9.0) + + dnl Checks for header files. +--- a/src/alsamixer.cxx 2007-10-21 12:39:11.000000000 -0400 ++++ b/src/alsamixer.cxx 2007-10-21 12:49:10.000000000 -0400 +@@ -2081,8 +2081,8 @@ static void + mixer_signal_handler (int signal) + { + if (signal != SIGSEGV) +- mixer_abort (ERR_SIGNAL, sys_siglist[signal], 0); +- else ++ // mixer_abort (ERR_SIGNAL, sys_siglist[signal], 0); ++ //else + { + fprintf (stderr, "\nSegmentation fault.\n"); + _exit (11); +--- a/src/alsamixer.cxx 2006-01-16 12:41:54.000000000 -0600 ++++ b/src/alsamixer.cxx 2006-01-16 12:45:44.000000000 -0600 +@@ -653,8 +653,8 @@ + if (vleft >= 0 && vright >= 0) { + if (joined) { + #ifdef ALSAMIXER_GUI +- for (chn = snd_mixer_selem_channel_id_t(0); chn < SND_MIXER_SCHN_LAST; +- snd_mixer_selem_channel_id_t(int(chn)++)) ++ for (chn = snd_mixer_selem_channel_id_t(0); chn < SND_MIXER_SCHN_LAST; ++ snd_mixer_selem_channel_id_t(int(chn)+1)) + #else + for (chn = 0; chn < SND_MIXER_SCHN_LAST; chn++) + #endif diff --git a/package/alsamixergui/0002-configure-fix-detection-of-fltk-libs.patch b/package/alsamixergui/0002-configure-fix-detection-of-fltk-libs.patch new file mode 100644 index 00000000..cc72d33b --- /dev/null +++ b/package/alsamixergui/0002-configure-fix-detection-of-fltk-libs.patch @@ -0,0 +1,53 @@ +From c154195fa161575363280aac9e928b7225f0de9e Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 29 Dec 2019 17:42:13 +0100 +Subject: [PATCH] configure: fix detection of fltk libs + +Chaining calls to AC_CHECK_LIB one in the other, breaks the configure +script, because some internal functions (e.g. ac_fn_c_try_link) would +not be defined before they are needed, leading the build to fail as +thus: + + checking for snd_tplg_new in -latopology... ./configure: line 4630: + ac_fn_c_try_link: command not found + no + configure: error: No linkable libatopology was found. + +Using AC_CHECK_LIB() in sequence (i.e. one after the other) and +memorising the result is not trivial: AC_CHECK_LIB() implements a +ddefault action-if-found that append to LIBS, but not if the user +ptrovides their own action-if-found. + +Instead, AC_SEARH_LIBS() always append to LIBS, *and* run the +user-provided action. + +So, we switch to AC_SEARCH_LIBS() and memorise the result for each +test, to eventually test if ether worked. + +Signed-off-by: Yann E. MORIN +--- + configure.in | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/configure.in b/configure.in +index 9307cc2..55f6864 100644 +--- a/configure.in ++++ b/configure.in +@@ -11,10 +11,10 @@ AC_PROG_INSTALL + AC_PROG_LN_S + + dnl Checks for libraries. +-AC_CHECK_LIB(fltk,numericsort,, +-AC_CHECK_LIB(fltk,fl_numericsort,, +-AC_MSG_ERROR("missing fltk")) +-) ++has_fltk=false ++AC_SEARCH_LIBS(numericsort,fltk,has_fltk=true) ++AC_SEARCH_LIBS(fl_numericsort,fltk,has_fltk=true) ++AS_IF(test "${has_fltk}" = "false", AC_MSG_ERROR("missing fltk")) + AM_PATH_ALSA(0.9.0) + + dnl Checks for header files. +-- +2.20.1 + diff --git a/package/alsamixergui/Config.in b/package/alsamixergui/Config.in new file mode 100644 index 00000000..2016a28a --- /dev/null +++ b/package/alsamixergui/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_ALSAMIXERGUI + bool "alsamixergui" + depends on BR2_PACKAGE_XORG7 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fltk fork() + depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib + select BR2_PACKAGE_FLTK + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_PCM + select BR2_PACKAGE_ALSA_LIB_MIXER + help + A nice GUI mixer for Alsa using fltk + + http://www.iua.upf.es/~mdeboer/projects/alsamixergui/ + +comment "alsamixergui needs a toolchain w/ C++, threads" + depends on BR2_PACKAGE_XORG7 && BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/alsamixergui/alsamixergui.hash b/package/alsamixergui/alsamixergui.hash new file mode 100644 index 00000000..32dfea28 --- /dev/null +++ b/package/alsamixergui/alsamixergui.hash @@ -0,0 +1,4 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/a/alsamixergui/alsamixergui_0.9.0rc2-1-9.dsc +md5 af942a41b81ba27e2e4d0a1e1ab0decb alsamixergui_0.9.0rc2-1.orig.tar.gz +# locally computed +sha256 ea617b76dcd0df74576686ca34c281f43bb9d844015cea91e3debc91538d2b1d debian/copyright diff --git a/package/alsamixergui/alsamixergui.mk b/package/alsamixergui/alsamixergui.mk new file mode 100644 index 00000000..8bf3f8e0 --- /dev/null +++ b/package/alsamixergui/alsamixergui.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# alsamixergui +# +################################################################################ + +ALSAMIXERGUI_VERSION = 0.9.0rc2-1 +ALSAMIXERGUI_SOURCE = alsamixergui_$(ALSAMIXERGUI_VERSION).orig.tar.gz +ALSAMIXERGUI_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/a/alsamixergui +ALSAMIXERGUI_LICENSE = GPL-2.0+ +ALSAMIXERGUI_LICENSE_FILES = debian/copyright +ALSAMIXERGUI_AUTORECONF = YES + +ALSAMIXERGUI_DEPENDENCIES = fltk alsa-lib + +$(eval $(autotools-package)) diff --git a/package/altera-stapl/Config.in b/package/altera-stapl/Config.in new file mode 100644 index 00000000..ff7d23f8 --- /dev/null +++ b/package/altera-stapl/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_ALTERA_STAPL + bool "altera-stapl" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8 # libgpiod + select BR2_PACKAGE_LIBGPIOD + help + Altera Jam STAPL Bytecode Player. + + https://github.com/kontron/altera-stapl diff --git a/package/altera-stapl/altera-stapl.hash b/package/altera-stapl/altera-stapl.hash new file mode 100644 index 00000000..c3af649c --- /dev/null +++ b/package/altera-stapl/altera-stapl.hash @@ -0,0 +1,2 @@ +sha256 a4d85a79790eab851399132fce4524979fe764d5297413b2445673e6a190bb42 altera-stapl-0.3.3.tar.gz +sha256 d8c320ffc0030d1b096ae4732b50d2b811cf95e9a9b7377c1127b2563e0a0388 COPYING diff --git a/package/altera-stapl/altera-stapl.mk b/package/altera-stapl/altera-stapl.mk new file mode 100644 index 00000000..afafbe2d --- /dev/null +++ b/package/altera-stapl/altera-stapl.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# altera-stapl +# +################################################################################ + +ALTERA_STAPL_VERSION = 0.3.3 +ALTERA_STAPL_SITE = $(call github,kontron,altera-stapl,$(ALTERA_STAPL_VERSION)) +ALTERA_STAPL_LICENSE = GPLv2+ +ALTERA_STAPL_LICENSE_FILES = COPYING +ALTERA_STAPL_DEPENDENCIES = libgpiod + +define ALTERA_STAPL_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all +endef + +define ALTERA_STAPL_INSTALL_TARGET_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/alure/Config.in b/package/alure/Config.in new file mode 100644 index 00000000..e0064acc --- /dev/null +++ b/package/alure/Config.in @@ -0,0 +1,61 @@ +config BR2_PACKAGE_ALURE + bool "alure" + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # openal + depends on BR2_USE_WCHAR # use wchar_t + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::shared_future + select BR2_PACKAGE_OPENAL + help + Alure is a C++ 3D audio API. It uses OpenAL for audio + rendering, and provides common higher-level features such as + file loading and decoding, buffer caching, background + streaming, and source management for virtually unlimited + sound source handles. + + https://kcat.strangesoft.net/alure.html + +if BR2_PACKAGE_ALURE + +config BR2_PACKAGE_ALURE_FLAC_DECODER + bool "flac decoder" + help + Enables the built-in FLAC decoder. + +config BR2_PACKAGE_ALURE_MINIMP3_DECODER + bool "minimp3 decoder" + help + Enables the built-in minimp3 decoder. + +config BR2_PACKAGE_ALURE_OPUS_DECODER + bool "opus decoder" + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_OPUS + help + Enables the built-in libopusfile decoder. + +config BR2_PACKAGE_ALURE_SNDFILE_DECODER + bool "sndfile decoder" + select BR2_PACKAGE_LIBSNDFILE + help + Enables the built-in libsndfile decoder. + +config BR2_PACKAGE_ALURE_VORBIS_DECODER + bool "vorbis decoder" + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_LIBVORBIS + help + Enables the built-in libvorbis decoder. + +endif + +comment "alure needs a toolchain w/ C++, gcc >= 4.9, NPTL, wchar" + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 \ + || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_USE_WCHAR + +comment "alure needs a toolchain not affected by GCC bug 64735" + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/alure/alure.hash b/package/alure/alure.hash new file mode 100644 index 00000000..0d4c36c4 --- /dev/null +++ b/package/alure/alure.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 9b808e5b5a54d156348221dc86704c7831115047d5238691e6088f8c4814b2ca alure-14beed2a86d5a36030e907b21c46614d505f07cd.tar.gz +sha256 7331ddc67daaf1a283c81e8dc17bac8dc40f54ed3fab3d3964616f4bd502a0a3 LICENSE diff --git a/package/alure/alure.mk b/package/alure/alure.mk new file mode 100644 index 00000000..f0eca8a2 --- /dev/null +++ b/package/alure/alure.mk @@ -0,0 +1,65 @@ +################################################################################ +# +# alure +# +################################################################################ + +ALURE_VERSION = 14beed2a86d5a36030e907b21c46614d505f07cd +ALURE_SITE = $(call github,kcat,alure,$(ALURE_VERSION)) +ALURE_LICENSE = Zlib, Public Domain (src/decoders/dr_flac.h) +ALURE_LICENSE_FILES = LICENSE +ALURE_INSTALL_STAGING = YES + +ALURE_DEPENDENCIES = openal + +# Disabling alure examples remove the dependecies on physfs and dump libraries. +# Enable at least one built-in decoder (wave). +ALURE_CONF_OPTS = -DALURE_INSTALL=ON \ + -DALURE_BUILD_EXAMPLES=OFF \ + -DALURE_ENABLE_WAVE=ON + +ifeq ($(BR2_PACKAGE_ALURE_FLAC_DECODER),y) +ALURE_CONF_OPTS += -DALURE_ENABLE_FLAC=ON +else +ALURE_CONF_OPTS += -DALURE_ENABLE_FLAC=OFF +endif + +ifeq ($(BR2_PACKAGE_ALURE_MINIMP3_DECODER),y) +ALURE_CONF_OPTS += -DALURE_ENABLE_MINIMP3=ON +else +ALURE_CONF_OPTS += -DALURE_ENABLE_MINIMP3=OFF +endif + +ifeq ($(BR2_PACKAGE_ALURE_OPUS_DECODER),y) +ALURE_CONF_OPTS += -DALURE_ENABLE_OPUS=ON +ALURE_DEPENDENCIES += libogg opus +else +ALURE_CONF_OPTS += -DALURE_ENABLE_OPUS=OFF +endif + +ifeq ($(BR2_PACKAGE_ALURE_SNDFILE_DECODER),y) +ALURE_CONF_OPTS += -DALURE_ENABLE_SNDFILE=ON +ALURE_DEPENDENCIES += libsndfile +else +ALURE_CONF_OPTS += -DALURE_ENABLE_SNDFILE=OFF +endif + +ifeq ($(BR2_PACKAGE_ALURE_VORBIS_DECODER),y) +ALURE_CONF_OPTS += -DALURE_ENABLE_VORBIS=ON +ALURE_DEPENDENCIES += libogg libvorbis +else +ALURE_CONF_OPTS += -DALURE_ENABLE_VORBIS=OFF +endif + +ifeq ($(BR2_STATIC_LIBS),y) +ALURE_CONF_OPTS += -DALURE_BUILD_SHARED=OFF \ + -DALURE_BUILD_STATIC=ON +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +ALURE_CONF_OPTS += -DALURE_BUILD_SHARED=ON \ + -DALURE_BUILD_STATIC=ON +else +ALURE_CONF_OPTS += -DALURE_BUILD_SHARED=ON \ + -DALURE_BUILD_STATIC=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/am335x-pru-package/0001-install-does-not-build.patch b/package/am335x-pru-package/0001-install-does-not-build.patch new file mode 100644 index 00000000..e2f29284 --- /dev/null +++ b/package/am335x-pru-package/0001-install-does-not-build.patch @@ -0,0 +1,23 @@ +Makefile: do not force the release build on install + +If we did build any of the other targets, and are just interested +in those and not the release one, we still want to use the 'install' +rule, but not build (and install) the release libraries. + +So, remove the dependency on the 'release' target from the 'install' +rule. + +Signed-off-by: "Yann E. MORIN" + +diff -durN am335x-pru-package-506e074859891a2b350eb4f5fcb451c4961410ea.orig/pru_sw/app_loader/interface/Makefile am335x-pru-package-506e074859891a2b350eb4f5fcb451c4961410ea/pru_sw/app_loader/interface/Makefile +--- am335x-pru-package-506e074859891a2b350eb4f5fcb451c4961410ea.orig/pru_sw/app_loader/interface/Makefile 2014-08-18 00:24:36.000000000 +0200 ++++ am335x-pru-package-506e074859891a2b350eb4f5fcb451c4961410ea/pru_sw/app_loader/interface/Makefile 2014-10-12 11:39:17.144682697 +0200 +@@ -38,7 +38,7 @@ + + all: debug release sodebug sorelease + +-install: release ++install: + install -m 0755 -d $(DESTDIR)$(PREFIX)/lib + install -m 0755 -d $(DESTDIR)$(PREFIX)/include + install -m 0644 $(LIBDIR)/* $(DESTDIR)$(PREFIX)/lib diff --git a/package/am335x-pru-package/Config.in b/package/am335x-pru-package/Config.in new file mode 100644 index 00000000..66d77733 --- /dev/null +++ b/package/am335x-pru-package/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_AM335X_PRU_PACKAGE + bool "am335x-pru-package" + depends on BR2_arm # only relevant for TI am335x + help + TI AM335X PRU program loader + + https://github.com/beagleboard/am335x_pru_package diff --git a/package/am335x-pru-package/am335x-pru-package.hash b/package/am335x-pru-package/am335x-pru-package.hash new file mode 100644 index 00000000..157fa566 --- /dev/null +++ b/package/am335x-pru-package/am335x-pru-package.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 bd90d57d210c2ec1835d701c5d12e228801cb41afebf591e2c146a4dc49c296f am335x-pru-package-5f374ad57cc195f28bf5e585c3d446aba6ee7096-git4.tar.gz +sha256 f0fcdf9b2090896389eb4b784f23be96d5544c5ce5282d84f82ae9a8e8331beb pru_sw/utils/LICENCE.txt diff --git a/package/am335x-pru-package/am335x-pru-package.mk b/package/am335x-pru-package/am335x-pru-package.mk new file mode 100644 index 00000000..9c65ee13 --- /dev/null +++ b/package/am335x-pru-package/am335x-pru-package.mk @@ -0,0 +1,75 @@ +################################################################################ +# +# am335x-pru-package +# +################################################################################ + +AM335X_PRU_PACKAGE_VERSION = 5f374ad57cc195f28bf5e585c3d446aba6ee7096 +AM335X_PRU_PACKAGE_SITE = https://github.com/beagleboard/am335x_pru_package +AM335X_PRU_PACKAGE_SITE_METHOD = git +AM335X_PRU_PACKAGE_LICENSE = BSD-3-Clause +AM335X_PRU_PACKAGE_LICENSE_FILES = pru_sw/utils/LICENCE.txt +AM335X_PRU_PACKAGE_DEPENDENCIES = host-am335x-pru-package +AM335X_PRU_PACKAGE_INSTALL_STAGING = YES + +# The default 'all' rule builds everything, when we just need the library +ifeq ($(BR2_ENABLE_DEBUG),y) +AM335X_PRU_PACKAGE_MAKE_TARGET = debug $(if $(BR2_STATIC_LIBS),,sodebug) +else +AM335X_PRU_PACKAGE_MAKE_TARGET = release $(if $(BR2_STATIC_LIBS),,sorelease) +endif + +define AM335X_PRU_PACKAGE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CROSS_COMPILE="$(TARGET_CROSS)" \ + -C $(@D)/pru_sw/app_loader/interface $(AM335X_PRU_PACKAGE_MAKE_TARGET) +endef + +# 'install' installs whatever was built, and our patch removes the dependency +# on the release build, so we can use it to install whatever we built above. +define AM335X_PRU_PACKAGE_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) DESTDIR="$(STAGING_DIR)" PREFIX="/usr" \ + -C $(@D)/pru_sw/app_loader/interface install +endef + +define AM335X_PRU_PACKAGE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) DESTDIR="$(TARGET_DIR)" PREFIX="/usr" \ + -C $(@D)/pru_sw/app_loader/interface install +endef + +# The debug libraries are named differently than the release ones, +# so we must provide a symlink to still be able to link with them. +ifeq ($(BR2_ENABLE_DEBUG),y) + +define AM335X_PRU_PACKAGE_LN_DEBUG_STAGING_STATIC + ln -sf libprussdrvd.a $(STAGING_DIR)/usr/lib/libprussdrv.a +endef +AM335X_PRU_PACKAGE_POST_INSTALL_STAGING_HOOKS += AM335X_PRU_PACKAGE_LN_DEBUG_STAGING_STATIC + +ifeq ($(BR2_STATIC_LIBS),) + +define AM335X_PRU_PACKAGE_LN_DEBUG_STAGING_SHARED + ln -sf libprussdrvd.so $(STAGING_DIR)/usr/lib/libprussdrv.so +endef +AM335X_PRU_PACKAGE_POST_INSTALL_STAGING_HOOKS += AM335X_PRU_PACKAGE_LN_DEBUG_STAGING_SHARED + +define AM335X_PRU_PACKAGE_LN_DEBUG_TARGET + ln -sf libprussdrvd.so $(TARGET_DIR)/usr/lib/libprussdrv.so +endef +AM335X_PRU_PACKAGE_POST_INSTALL_TARGET_HOOKS += AM335X_PRU_PACKAGE_LN_DEBUG_TARGET + +endif # !STATIC + +endif # DEBUG + +define HOST_AM335X_PRU_PACKAGE_BUILD_CMDS + cd $(@D)/pru_sw/utils/pasm_source; \ + $(HOSTCC) -Wall -D_UNIX_ pasm.c pasmpp.c pasmexp.c pasmop.c \ + pasmdot.c pasmstruct.c pasmmacro.c path_utils.c -o ../pasm +endef + +define HOST_AM335X_PRU_PACKAGE_INSTALL_CMDS + $(INSTALL) -m 0755 -D $(@D)/pru_sw/utils/pasm $(HOST_DIR)/bin/pasm +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/am33x-cm3/0001-fix-makefile.patch b/package/am33x-cm3/0001-fix-makefile.patch new file mode 100644 index 00000000..f3cdb5e2 --- /dev/null +++ b/package/am33x-cm3/0001-fix-makefile.patch @@ -0,0 +1,30 @@ +Enforce correct -march option + +Buildroot uses a normal ARM compiler to build the AM33X CM3 firmware +(which runs on a Cortex-M3 processor), but Buildroot will have a +default -march value that doesn't necessarily match the one needed for +Cortex-M3, leading to build failures (gcc complains that the +-mcpu=cortex-m3 option being passed is not compatible with the +selected -march). + +Fix this by explicitly indicating -march=armv7-m. + +Signed-off-by: Thomas Petazzoni + +Updated the patch to the latest version of the Makefile + +Signed-off-by: Anders Darander + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -13,7 +13,7 @@ SRCDIR = src + BINDIR = bin + + INCLUDES = $(SRCDIR)/include +-CFLAGS =-mcpu=cortex-m3 -mthumb -nostdlib -Wall -Wundef \ ++CFLAGS =-march=armv7-m -mcpu=cortex-m3 -mthumb -nostdlib -Wall -Wundef \ + -Werror-implicit-function-declaration -Wstrict-prototypes \ + -Wdeclaration-after-statement -fno-delete-null-pointer-checks \ + -Wempty-body -fno-strict-overflow -g -I$(INCLUDES) -O2 diff --git a/package/am33x-cm3/0002-Makefile-unconditionally-disable-SSP.patch b/package/am33x-cm3/0002-Makefile-unconditionally-disable-SSP.patch new file mode 100644 index 00000000..ed333bfe --- /dev/null +++ b/package/am33x-cm3/0002-Makefile-unconditionally-disable-SSP.patch @@ -0,0 +1,35 @@ +From 6c3b05b74ccd49d8ba246bfef0c2e549b9f2bf7b Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 29 Oct 2019 16:14:18 +0100 +Subject: [PATCH] Makefile: unconditionally disable SSP + +Though -nostdlib is passed in $(CFLAGS), -fno-stack-protector must also be +passed to avoid linking errors related to undefined references to +'__stack_chk_guard' and '__stack_chk_fail' if toolchain enforces +-fstack-protector. + +Fixes: + - http://autobuild.buildroot.net/results/3a3a21f3c35ea025e9b93e09c2454aed0ad31034 + +Signed-off-by: Fabrice Fontaine +--- + Makefile | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index c3ec071..5226006 100644 +--- a/Makefile ++++ b/Makefile +@@ -16,7 +16,8 @@ INCLUDES = $(SRCDIR)/include + CFLAGS =-march=armv7-m -mcpu=cortex-m3 -mthumb -nostdlib -Wall -Wundef \ + -Werror-implicit-function-declaration -Wstrict-prototypes \ + -Wdeclaration-after-statement -fno-delete-null-pointer-checks \ +- -Wempty-body -fno-strict-overflow -g -I$(INCLUDES) -O2 ++ -Wempty-body -fno-strict-overflow -fno-stack-protector \ ++ -g -I$(INCLUDES) -O2 + LDFLAGS =-nostartfiles -fno-exceptions -Tfirmware.ld + + EXECUTABLE=am335x-pm-firmware.elf +-- +2.23.0 + diff --git a/package/am33x-cm3/0003-Makefile-unconditionally-disable-PIE.patch b/package/am33x-cm3/0003-Makefile-unconditionally-disable-PIE.patch new file mode 100644 index 00000000..6be15793 --- /dev/null +++ b/package/am33x-cm3/0003-Makefile-unconditionally-disable-PIE.patch @@ -0,0 +1,33 @@ +From 0e8c3c4851ce64268a8ae1810ef72594251d917d Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 10 Nov 2019 21:57:12 +0100 +Subject: [PATCH] Makefile: unconditionally disable PIE + +Though -nostdlib is passed in $(CFLAGS), -fno-pie must also be passed to +avoid linking errors related to overlapping sections if toolchain +enforces PIE. + +Fixes: + - http://autobuild.buildroot.org/results/418a40b995e91bc66e692dfbc4b0521db3fa5fbb + +Signed-off-by: Fabrice Fontaine +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 5226006..fe3d844 100644 +--- a/Makefile ++++ b/Makefile +@@ -17,7 +17,7 @@ CFLAGS =-march=armv7-m -mcpu=cortex-m3 -mthumb -nostdlib -Wall -Wundef \ + -Werror-implicit-function-declaration -Wstrict-prototypes \ + -Wdeclaration-after-statement -fno-delete-null-pointer-checks \ + -Wempty-body -fno-strict-overflow -fno-stack-protector \ +- -g -I$(INCLUDES) -O2 ++ -fno-pie -g -I$(INCLUDES) -O2 + LDFLAGS =-nostartfiles -fno-exceptions -Tfirmware.ld + + EXECUTABLE=am335x-pm-firmware.elf +-- +2.23.0 + diff --git a/package/am33x-cm3/0004-Makefile-add-fno-builtin.patch b/package/am33x-cm3/0004-Makefile-add-fno-builtin.patch new file mode 100644 index 00000000..7478bd45 --- /dev/null +++ b/package/am33x-cm3/0004-Makefile-add-fno-builtin.patch @@ -0,0 +1,41 @@ +From 25fc567ba8a0cd199e48bfa82863247d953784ea Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 30 Aug 2020 20:59:29 +0200 +Subject: [PATCH] Makefile: add -fno-builtin + +Build with gcc 10 fails on: + +/srv/storage/autobuild/run/instance-2/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: src/foundation/startup.o: in function `reset_handler': +/srv/storage/autobuild/run/instance-2/output-1/build/am33x-cm3-11107db2f1e9e58ee75d4fe9cc38423c9a6e4365/src/foundation/startup.c:177: undefined reference to `memcpy' + +This is due to the fact that gcc 10 replaces the following statement by +a memcpy call: + +*puldest++ = *pulsrc++; + +To fix this build failure, add -fno-builtin + +Fixes: + - http://autobuild.buildroot.org/results/a991e6efa012df518ff1bb35017ad2c96c8feedc + +Signed-off-by: Fabrice Fontaine +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index fe3d844..fa24d4b 100644 +--- a/Makefile ++++ b/Makefile +@@ -17,7 +17,7 @@ CFLAGS =-march=armv7-m -mcpu=cortex-m3 -mthumb -nostdlib -Wall -Wundef \ + -Werror-implicit-function-declaration -Wstrict-prototypes \ + -Wdeclaration-after-statement -fno-delete-null-pointer-checks \ + -Wempty-body -fno-strict-overflow -fno-stack-protector \ +- -fno-pie -g -I$(INCLUDES) -O2 ++ -fno-pie -fno-builtin -g -I$(INCLUDES) -O2 + LDFLAGS =-nostartfiles -fno-exceptions -Tfirmware.ld + + EXECUTABLE=am335x-pm-firmware.elf +-- +2.28.0 + diff --git a/package/am33x-cm3/Config.in b/package/am33x-cm3/Config.in new file mode 100644 index 00000000..d33dfaa6 --- /dev/null +++ b/package/am33x-cm3/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_AM33X_CM3 + bool "am33x-cm3" + depends on BR2_arm # only relevant for TI am335x + depends on BR2_BINFMT_ELF # assumes the compiler builds ELF file + help + Cortex-M3 binary blob for suspend-resume on am335x + + http://arago-project.org/git/projects/am33x-cm3.git diff --git a/package/am33x-cm3/S93-am335x-pm-firmware-load b/package/am33x-cm3/S93-am335x-pm-firmware-load new file mode 100644 index 00000000..56c17b33 --- /dev/null +++ b/package/am33x-cm3/S93-am335x-pm-firmware-load @@ -0,0 +1,6 @@ +#!/bin/sh + +# Load the PM CM3 firmware +echo 1 > /sys/devices/ocp.2/44d00000.wkup_m3/firmware/am335x-pm-firmware.bin/loading +cat /lib/firmware/am335x-pm-firmware.bin > /sys/devices/ocp.2/44d00000.wkup_m3/firmware/am335x-pm-firmware.bin/data +echo 0 > /sys/devices/ocp.2/44d00000.wkup_m3/firmware/am335x-pm-firmware.bin/loading diff --git a/package/am33x-cm3/am33x-cm3.hash b/package/am33x-cm3/am33x-cm3.hash new file mode 100644 index 00000000..33dc205f --- /dev/null +++ b/package/am33x-cm3/am33x-cm3.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 79b05eda90498390778001caf18435617d5983c075b5b4a6b339bee40551e946 am33x-cm3-11107db2f1e9e58ee75d4fe9cc38423c9a6e4365-git4.tar.gz +sha256 e136e6949a1d3ca144374375af8b9387faa11d2eee7debff8cf22ca8fe7bf7e9 License.txt diff --git a/package/am33x-cm3/am33x-cm3.mk b/package/am33x-cm3/am33x-cm3.mk new file mode 100644 index 00000000..d5ace7bb --- /dev/null +++ b/package/am33x-cm3/am33x-cm3.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# am33x-cm3 +# +################################################################################ + +# This should correpsond to v05.00.00.02 +AM33X_CM3_VERSION = 11107db2f1e9e58ee75d4fe9cc38423c9a6e4365 +AM33X_CM3_SITE = https://github.com/RobertCNelson/am33x-cm3 +AM33X_CM3_SITE_METHOD = git +AM33X_CM3_LICENSE = TI Publicly Available Software License +AM33X_CM3_LICENSE_FILES = License.txt + +# The build command below will use the standard cross-compiler (normally +# build for Cortex-A8, to build the FW for the Cortex-M3. +define AM33X_CM3_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" CROSS_COMPILE="$(TARGET_CROSS)" -C $(@D) all +endef + +# Not all of the firmware files are used +define AM33X_CM3_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/bin/am335x-pm-firmware.bin \ + $(TARGET_DIR)/lib/firmware/am335x-pm-firmware.bin +endef + +define AM33X_CM3_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/am33x-cm3/S93-am335x-pm-firmware-load \ + $(TARGET_DIR)/etc/init.d/S93-am335x-pm-firmware-load +endef + +$(eval $(generic-package)) diff --git a/package/amlogic-boot-fip/Config.in.host b/package/amlogic-boot-fip/Config.in.host new file mode 100644 index 00000000..bccc6296 --- /dev/null +++ b/package/amlogic-boot-fip/Config.in.host @@ -0,0 +1,17 @@ +config BR2_PACKAGE_HOST_AMLOGIC_BOOT_FIP + bool "host amlogic-boot-fip" + depends on BR2_HOSTARCH = "x86_64" + help + Firmware Image Package (FIP) sources used to sign Amlogic + u-boot binaries in LibreELEC images + + https://github.com/LibreELEC/amlogic-boot-fip + +config BR2_PACKAGE_HOST_AMLOGIC_BOOT_FIP_DEVICE + string "fip device" + default "khadas-vim3" + depends on BR2_PACKAGE_HOST_AMLOGIC_BOOT_FIP + help + Device for which you want to use this package. + See the list of supported SoCs: + https://github.com/LibreELEC/amlogic-boot-fip diff --git a/package/amlogic-boot-fip/amlogic-boot-fip.hash b/package/amlogic-boot-fip/amlogic-boot-fip.hash new file mode 100644 index 00000000..1a083415 --- /dev/null +++ b/package/amlogic-boot-fip/amlogic-boot-fip.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2cc06bc7d5647fd8c0025181fa42c4a8ef0ed16b918a1fa2060ea83c22e47b20 amlogic-boot-fip-e96b6a694380ff07d5a9e4be644ffe254bd18512.tar.gz +sha256 4255537f71b1cd0d487de0fa2b8eddf1eb96ed96d119507336dde8b3782b86e6 LICENSE diff --git a/package/amlogic-boot-fip/amlogic-boot-fip.mk b/package/amlogic-boot-fip/amlogic-boot-fip.mk new file mode 100644 index 00000000..f98887cf --- /dev/null +++ b/package/amlogic-boot-fip/amlogic-boot-fip.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# amlogic-boot-fip +# +################################################################################ + +AMLOGIC_BOOT_FIP_VERSION = e96b6a694380ff07d5a9e4be644ffe254bd18512 +AMLOGIC_BOOT_FIP_SITE = $(call github,LibreELEC,amlogic-boot-fip,$(AMLOGIC_BOOT_FIP_VERSION)) +AMLOGIC_BOOT_FIP_LICENSE = PROPRIETARY +AMLOGIC_BOOT_FIP_LICENSE_FILES = LICENSE +AMLOGIC_BOOT_FIP_REDISTRIBUTE = NO + +AMLOGIC_BOOT_FIP_INSTALL_DIR = $(BINARIES_DIR)/amlogic-boot-fip + +AMLOGIC_BOOT_FIP_DEVICE = $(call qstrip,$(BR2_PACKAGE_HOST_AMLOGIC_BOOT_FIP_DEVICE)) + +AMLOGIC_BOOT_FIP_FILES_TO_INSTALL = build-fip.sh axg.inc g12a.inc gxbb.inc gxl.inc + +define HOST_AMLOGIC_BOOT_FIP_INSTALL_CMDS + mkdir -p $(AMLOGIC_BOOT_FIP_INSTALL_DIR)/$(AMLOGIC_BOOT_FIP_DEVICE) + $(foreach f,$(AMLOGIC_BOOT_FIP_FILES_TO_INSTALL),\ + $(INSTALL) -D -m 0755 $(@D)/$(f) $(AMLOGIC_BOOT_FIP_INSTALL_DIR)/$(f) + ) + cp -rf $(@D)/$(AMLOGIC_BOOT_FIP_DEVICE) $(AMLOGIC_BOOT_FIP_INSTALL_DIR) +endef + +# check for empty device string when we're building +ifeq ($(BR2_PACKAGE_HOST_AMLOGIC_BOOT_FIP)$(BR_BUILDING),yy) +ifeq ($(call qstrip,$(BR2_PACKAGE_HOST_AMLOGIC_BOOT_FIP_DEVICE)),) +$(error No device specified for amlogic-boot-fip, please check your BR2_PACKAGE_HOST_AMLOGIC_BOOT_FIP_DEVICE setting) +endif +endif + +$(eval $(host-generic-package)) diff --git a/package/android-tools/0001-Fix-makefiles-for-out-of-tree-build.patch b/package/android-tools/0001-Fix-makefiles-for-out-of-tree-build.patch new file mode 100644 index 00000000..af072362 --- /dev/null +++ b/package/android-tools/0001-Fix-makefiles-for-out-of-tree-build.patch @@ -0,0 +1,162 @@ +[PATCH] Fix makefiles for out-of-tree build + +Signed-off-by: Gary Bisson +--- + debian/makefiles/adb.mk | 10 +++++----- + debian/makefiles/adbd.mk | 33 ++++++++++++++++----------------- + debian/makefiles/fastboot.mk | 17 +++++++++-------- + 3 files changed, 30 insertions(+), 30 deletions(-) + +diff --git a/debian/makefiles/adb.mk b/debian/makefiles/adb.mk +index d9d4feb..654b9f1 100644 +--- a/debian/makefiles/adb.mk ++++ b/debian/makefiles/adb.mk +@@ -1,5 +1,6 @@ + # Makefile for adb; from https://heiher.info/2227.html + ++VPATH+= $(SRCDIR)/core/adb + SRCS+= adb.c + SRCS+= adb_client.c + SRCS+= adb_auth_host.c +@@ -17,7 +18,7 @@ SRCS+= usb_linux.c + SRCS+= usb_vendors.c + SRCS+= utils.c + +-VPATH+= ../libcutils ++VPATH+= $(SRCDIR)/core/libcutils + SRCS+= abort_socket.c + SRCS+= socket_inaddr_any_server.c + SRCS+= socket_local_client.c +@@ -28,7 +29,7 @@ SRCS+= socket_network_client.c + SRCS+= list.c + SRCS+= load_file.c + +-VPATH+= ../libzipfile ++VPATH+= $(SRCDIR)/core/libzipfile + SRCS+= centraldir.c + SRCS+= zipfile.c + +@@ -37,9 +38,8 @@ CPPFLAGS+= -DADB_HOST=1 + CPPFLAGS+= -DHAVE_FORKEXEC=1 + CPPFLAGS+= -DHAVE_SYMLINKS + CPPFLAGS+= -DHAVE_TERMIO_H +-CPPFLAGS+= -I. +-CPPFLAGS+= -I../include +-CPPFLAGS+= -I../../../external/zlib ++CPPFLAGS+= -I$(SRCDIR)/core/adb ++CPPFLAGS+= -I$(SRCDIR)/core/include + + LIBS+= -lc -lpthread -lz -lcrypto + +diff --git a/debian/makefiles/adbd.mk b/debian/makefiles/adbd.mk +index 94d3a90..49dab8c 100644 +--- a/debian/makefiles/adbd.mk ++++ b/debian/makefiles/adbd.mk +@@ -1,18 +1,6 @@ + # Makefile for adbd + +-VPATH+= ../libcutils +-SRCS+= abort_socket.c +-SRCS+= socket_inaddr_any_server.c +-SRCS+= socket_local_client.c +-SRCS+= socket_local_server.c +-SRCS+= socket_loopback_client.c +-SRCS+= socket_loopback_server.c +-SRCS+= socket_network_client.c +-SRCS+= list.c +-SRCS+= load_file.c +-SRCS+= android_reboot.c +- +-#VPATH+= ../adb ++VPATH+= $(SRCDIR)/core/adbd + SRCS+= adb.c + SRCS+= backup_service.c + SRCS+= fdevent.c +@@ -31,7 +19,19 @@ SRCS+= log_service.c + SRCS+= utils.c + SRCS+= base64.c + +-VPATH+= ../libzipfile ++VPATH+= $(SRCDIR)/core/libcutils ++SRCS+= abort_socket.c ++SRCS+= socket_inaddr_any_server.c ++SRCS+= socket_local_client.c ++SRCS+= socket_local_server.c ++SRCS+= socket_loopback_client.c ++SRCS+= socket_loopback_server.c ++SRCS+= socket_network_client.c ++SRCS+= list.c ++SRCS+= load_file.c ++SRCS+= android_reboot.c ++ ++VPATH+= $(SRCDIR)/core/libzipfile + SRCS+= centraldir.c + SRCS+= zipfile.c + +@@ -40,10 +40,9 @@ CPPFLAGS+= -O2 -g -Wall -Wno-unused-parameter + CPPFLAGS+= -DADB_HOST=0 -DHAVE_FORKEXEC=1 -D_XOPEN_SOURCE -D_GNU_SOURCE -DALLOW_ADBD_ROOT=1 + CPPFLAGS+= -DHAVE_SYMLINKS -DBOARD_ALWAYS_INSECURE + CPPFLAGS+= -DHAVE_TERMIO_H +-CPPFLAGS+= -I. +-CPPFLAGS+= -I../include +-CPPFLAGS+= -I../../../external/zlib + CPPFLAGS+= `pkg-config --cflags glib-2.0 gio-2.0` ++CPPFLAGS+= -I$(SRCDIR)/core/adbd ++CPPFLAGS+= -I$(SRCDIR)/core/include + + LIBS+= -lc -lpthread -lz -lcrypto -lcrypt `pkg-config --libs glib-2.0 gio-2.0` + +diff --git a/debian/makefiles/fastboot.mk b/debian/makefiles/fastboot.mk +index 9e8b751..94a069b 100644 +--- a/debian/makefiles/fastboot.mk ++++ b/debian/makefiles/fastboot.mk +@@ -1,5 +1,6 @@ + # Makefile for fastboot; from https://heiher.info/2227.html + ++VPATH+= $(SRCDIR)/core/fastboot + SRCS+= bootimg.c + SRCS+= engine.c + SRCS+= fastboot.c +@@ -7,11 +8,11 @@ SRCS+= protocol.c + SRCS+= usb_linux.c + SRCS+= util_linux.c + +-VPATH+= ../libzipfile ++VPATH+= $(SRCDIR)/core/libzipfile + SRCS+= centraldir.c + SRCS+= zipfile.c + +-VPATH+= ../libsparse ++VPATH+= $(SRCDIR)/core/libsparse + SRCS+= backed_block.c + SRCS+= sparse_crc32.c + SRCS+= sparse.c +@@ -19,7 +20,7 @@ SRCS+= sparse_read.c + SRCS+= sparse_err.c + SRCS+= output_file.c + +-VPATH+= ../../extras/ext4_utils/ ++VPATH+= $(SRCDIR)/extras/ext4_utils/ + SRCS+= make_ext4fs.c + SRCS+= crc16.c + SRCS+= ext4_utils.c +@@ -31,11 +32,11 @@ SRCS+= extent.c + SRCS+= wipe.c + SRCS+= sha1.c + +-CPPFLAGS+= -I. +-CPPFLAGS+= -I../include +-CPPFLAGS+= -I../mkbootimg +-CPPFLAGS+= -I../../extras/ext4_utils/ +-CPPFLAGS+= -I../libsparse/include/ ++CPPFLAGS+= -I$(SRCDIR)/core/fastboot ++CPPFLAGS+= -I$(SRCDIR)/core/include ++CPPFLAGS+= -I$(SRCDIR)/core/mkbootimg ++CPPFLAGS+= -I$(SRCDIR)/extras/ext4_utils/ ++CPPFLAGS+= -I$(SRCDIR)/core/libsparse/include/ + + LIBS+= -lz -lselinux + +-- +2.5.1 + diff --git a/package/android-tools/0002-Fix-adbd-for-non-Ubuntu-systems.patch b/package/android-tools/0002-Fix-adbd-for-non-Ubuntu-systems.patch new file mode 100644 index 00000000..35f6c8a3 --- /dev/null +++ b/package/android-tools/0002-Fix-adbd-for-non-Ubuntu-systems.patch @@ -0,0 +1,264 @@ +[PATCH] Fix adbd for non-Ubuntu systems + +Remove glib/dbus dependencies and partially restore services.c to be +closer to the original source code in order to run on systems without +sudo. + +Signed-off-by: Gary Bisson +--- + core/adbd/adb.c | 1 - + core/adbd/services.c | 160 ++++------------------------------------------- + debian/makefiles/adbd.mk | 4 +- + 3 files changed, 14 insertions(+), 151 deletions(-) + +diff --git a/core/adbd/adb.c b/core/adbd/adb.c +index d90e6b8..7fe6445 100644 +--- a/core/adbd/adb.c ++++ b/core/adbd/adb.c +@@ -1165,7 +1165,6 @@ void build_local_name(char* target_str, size_t target_size, int server_port) + + #if !ADB_HOST + static int should_drop_privileges() { +- return 1; + #ifndef ALLOW_ADBD_ROOT + return 1; + #else /* ALLOW_ADBD_ROOT */ +diff --git a/core/adbd/services.c b/core/adbd/services.c +index 05bd0d0..5adcefe 100644 +--- a/core/adbd/services.c ++++ b/core/adbd/services.c +@@ -20,15 +20,6 @@ + #include + #include + #include +-#include +-#include +- +-#define UNITY_SERVICE "com.canonical.UnityGreeter" +-#define GREETER_OBJ "/" +-#define GREETER_INTERFACE "com.canonical.UnityGreeter" +-#define PROPERTIES_INTERFACE "org.freedesktop.DBus.Properties" +-#define ACTIVE_PROPERTY "IsActive" +-#define UNLOCK_PATH "/userdata/.adb_onlock" + + #include "sysdeps.h" + +@@ -268,11 +259,11 @@ static int create_service_thread(void (*func)(int, void *), void *cookie) + } + + #if !ADB_HOST +-static int create_subprocess(const char *cmd, const char *arg0, const char *arg1, const char *arg2, const char *arg3, const char *arg4, pid_t *pid) ++static int create_subprocess(const char *cmd, const char *arg0, const char *arg1, pid_t *pid) + { + #ifdef HAVE_WIN32_PROC +- D("create_subprocess(cmd=%s, arg0=%s, arg1=%s, arg2=%s, arg3=%, arg4=%ss)\n", cmd, arg0, arg1, arg2, arg3, arg4); +- fprintf(stderr, "error: create_subprocess not implemented on Win32 (%s %s %s %s %s %s)\n", cmd, arg0, arg1, arg2, arg3, arg4); ++ D("create_subprocess(cmd=%s, arg0=%s, arg1=%s)\n", cmd, arg0, arg1); ++ fprintf(stderr, "error: create_subprocess not implemented on Win32 (%s %s %s)\n", cmd, arg0, arg1); + return -1; + #else /* !HAVE_WIN32_PROC */ + char *devname; +@@ -327,7 +318,7 @@ static int create_subprocess(const char *cmd, const char *arg0, const char *arg1 + } else { + D("adb: unable to open %s\n", text); + } +- execl(cmd, cmd, arg0, arg1, arg2, arg3, arg4, NULL); ++ execl(cmd, cmd, arg0, arg1, NULL); + fprintf(stderr, "- exec '%s' failed: %s (%d) -\n", + cmd, strerror(errno), errno); + exit(-1); +@@ -342,7 +333,7 @@ static int create_subprocess(const char *cmd, const char *arg0, const char *arg1 + } + #endif /* !ABD_HOST */ + +-#if ADB_HOST ++#if ADB_HOST || ADBD_NON_ANDROID + #define SHELL_COMMAND "/bin/sh" + #else + #define SHELL_COMMAND "/system/bin/sh" +@@ -380,139 +371,16 @@ static void subproc_waiter_service(int fd, void *cookie) + } + } + +-int is_phone_locked() { +- GError *error = NULL; +- GVariant *variant = NULL; +- GDBusConnection *connection = NULL; +- +- if (g_file_test(UNLOCK_PATH, G_FILE_TEST_EXISTS)) { +- D("unlock path present."); +- return 0; +- } +- +- // check if the environment variable is present, if not we grab it from +- // the phablet user +- if (g_getenv("DBUS_SESSION_BUS_ADDRESS") == NULL) { +- D("DBUS_SESSION_BUS_ADDRESS missing.\n"); +- struct passwd *pw = getpwuid(AID_SHELL); +- char user_id[15]; +- gchar *path = NULL; +- gchar *contents = NULL; +- gchar *session_path = NULL; +- +- snprintf(user_id, sizeof user_id, "%d", pw->pw_uid); +- +- path = g_build_filename("/run", "user", user_id, "dbus-session", NULL); +- +- g_file_get_contents(path, &contents, NULL, &error); +- session_path = g_strstrip(g_strsplit(contents, "DBUS_SESSION_BUS_ADDRESS=", -1)[1]); +- D("Session bus is %s\n", session_path); +- +- // path is not longer used +- g_free(path); +- +- if (error != NULL) { +- g_clear_error(&error); +- D("Couldn't set session bus\n"); +- return 1; +- } +- +- g_setenv("DBUS_SESSION_BUS_ADDRESS", session_path, TRUE); +- g_free(contents); +- } +- +- // set the uid to be able to connect to the phablet user session bus +- setuid(AID_SHELL); +- connection = g_dbus_connection_new_for_address_sync(g_getenv("DBUS_SESSION_BUS_ADDRESS"), +- G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT | G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION, +- NULL, +- NULL, +- &error); +- if (connection == NULL) { +- D("session bus not available: %s", error->message); +- g_error_free (error); +- return 1; +- } +- +- variant = g_dbus_connection_call_sync(connection, +- UNITY_SERVICE, +- GREETER_OBJ, +- PROPERTIES_INTERFACE, +- "Get", +- g_variant_new("(ss)", GREETER_INTERFACE, ACTIVE_PROPERTY), +- g_variant_type_new("(v)"), +- G_DBUS_CALL_FLAGS_NONE, +- -1, +- NULL, +- &error); +- +- if (error != NULL) { +- D("Could not get property: %s", error->message); +- g_object_unref(connection); +- g_error_free(error); +- return 1; +- } +- +- if (variant == NULL) { +- D("Failed to get property '%s': %s", "IsActive", error->message); +- g_object_unref(connection); +- g_error_free(error); +- return 1; +- } +- +- variant = g_variant_get_variant(g_variant_get_child_value(variant, 0)); +- +- int active = 1; +- if (!g_variant_get_boolean(variant)) { +- active = 0; +- } +- +- // get back to be root and return the value +- g_object_unref(connection); +- g_variant_unref(variant); +- setuid(0); +- return active; +-} +- + static int create_subproc_thread(const char *name) + { +- if (is_phone_locked() ) { +- fprintf(stderr, "device is locked\n"); +- return -1; +- } +- + stinfo *sti; + adb_thread_t t; + int ret_fd; + pid_t pid; +- +- struct passwd *user = getpwuid(getuid()); +- char *shell; +- char *shellopts = "-c"; +- char *home; +- char *sudo = "/usr/bin/sudo"; +- char useropt[256] = "-u"; +- +- if (user->pw_name) +- strcat(useropt, user->pw_name); +- +- if (user && user->pw_shell) { +- shell = user->pw_shell; +- shellopts = "-cl"; +- } else { +- shell = SHELL_COMMAND; +- } +- +- if (user->pw_dir) +- home = user->pw_dir; +- if(chdir(home) < 0 ) +- return 1; +- + if(name) { +- ret_fd = create_subprocess(sudo, useropt, "-i", shell, shellopts, name, &pid); ++ ret_fd = create_subprocess(SHELL_COMMAND, "-c", name, &pid); + } else { +- shellopts = "-l"; +- ret_fd = create_subprocess(sudo, useropt, "-i", shell, shellopts, 0, &pid); ++ ret_fd = create_subprocess(SHELL_COMMAND, "-", 0, &pid); + } + D("create_subprocess() ret_fd=%d pid=%d\n", ret_fd, pid); + +@@ -585,17 +453,13 @@ int service_to_fd(const char *name) + } else if (!strncmp(name, "log:", 4)) { + ret = create_service_thread(log_service, get_log_file_path(name + 4)); + } else if(!HOST && !strncmp(name, "shell:", 6)) { +- if (!is_phone_locked() ) { +- if(name[6]) { +- ret = create_subproc_thread(name + 6); +- } else { +- ret = create_subproc_thread(0); +- } ++ if(name[6]) { ++ ret = create_subproc_thread(name + 6); ++ } else { ++ ret = create_subproc_thread(0); + } + } else if(!strncmp(name, "sync:", 5)) { +- if (!is_phone_locked() ) { +- ret = create_service_thread(file_sync_service, NULL); +- } ++ ret = create_service_thread(file_sync_service, NULL); + } else if(!strncmp(name, "remount:", 8)) { + ret = create_service_thread(remount_service, NULL); + } else if(!strncmp(name, "reboot:", 7)) { +diff --git a/debian/makefiles/adbd.mk b/debian/makefiles/adbd.mk +index 49dab8c..22c1816 100644 +--- a/debian/makefiles/adbd.mk ++++ b/debian/makefiles/adbd.mk +@@ -40,11 +40,11 @@ CPPFLAGS+= -O2 -g -Wall -Wno-unused-parameter + CPPFLAGS+= -DADB_HOST=0 -DHAVE_FORKEXEC=1 -D_XOPEN_SOURCE -D_GNU_SOURCE -DALLOW_ADBD_ROOT=1 + CPPFLAGS+= -DHAVE_SYMLINKS -DBOARD_ALWAYS_INSECURE + CPPFLAGS+= -DHAVE_TERMIO_H +-CPPFLAGS+= `pkg-config --cflags glib-2.0 gio-2.0` ++CPPFLAGS+= -DADBD_NON_ANDROID + CPPFLAGS+= -I$(SRCDIR)/core/adbd + CPPFLAGS+= -I$(SRCDIR)/core/include + +-LIBS+= -lc -lpthread -lz -lcrypto -lcrypt `pkg-config --libs glib-2.0 gio-2.0` ++LIBS+= -lc -lpthread -lz -lcrypto -lcrypt + + OBJS= $(patsubst %, %.o, $(basename $(SRCS))) + +-- +2.5.1 + diff --git a/package/android-tools/0003-Fix-build-issue-with-uclibc.patch b/package/android-tools/0003-Fix-build-issue-with-uclibc.patch new file mode 100644 index 00000000..95517c30 --- /dev/null +++ b/package/android-tools/0003-Fix-build-issue-with-uclibc.patch @@ -0,0 +1,36 @@ +[PATCH] Fix build issue with uclibc + +Signed-off-by: Gary Bisson +--- + core/adbd/adb_auth_client.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/core/adb/adb_auth_client.c b/core/adb/adb_auth_client.c +index 0b4913e..068d837 100644 +--- a/core/adb/adb_auth_client.c ++++ b/core/adb/adb_auth_client.c +@@ -72,7 +72,7 @@ static void read_keys(const char *file, struct listnode *list) + if (sep) + *sep = '\0'; + +- ret = __b64_pton(buf, (u_char *)&key->key, sizeof(key->key) + 4); ++ ret = b64_pton(buf, (u_char *)&key->key, sizeof(key->key) + 4); + if (ret != sizeof(key->key)) { + D("%s: Invalid base64 data ret=%d\n", file, ret); + free(key); +diff --git a/core/adbd/adb_auth_client.c b/core/adbd/adb_auth_client.c +index 0b4913e..068d837 100644 +--- a/core/adbd/adb_auth_client.c ++++ b/core/adbd/adb_auth_client.c +@@ -72,7 +72,7 @@ static void read_keys(const char *file, struct listnode *list) + if (sep) + *sep = '\0'; + +- ret = __b64_pton(buf, (u_char *)&key->key, sizeof(key->key) + 4); ++ ret = b64_pton(buf, (u_char *)&key->key, sizeof(key->key) + 4); + if (ret != sizeof(key->key)) { + D("%s: Invalid base64 data ret=%d\n", file, ret); + free(key); +-- +2.6.1 + diff --git a/package/android-tools/0004-Fix-build-issue-with-musl.patch b/package/android-tools/0004-Fix-build-issue-with-musl.patch new file mode 100644 index 00000000..964eb87a --- /dev/null +++ b/package/android-tools/0004-Fix-build-issue-with-musl.patch @@ -0,0 +1,54 @@ +[PATCH] Fix build issue with musl + +arpa/nameser.h doesn't use the same macro name to avoid several +inclusions. + +Finally had an issue with framebuffer_service.c since it was missing the +TEMP_FAILURE_RETRY macro. + +Signed-off-by: Gary Bisson +--- + core/adbd/arpa_nameser.h | 12 +++++++++--- + core/adbd/base64.c | 1 - + core/adbd/framebuffer_service.c | 1 + + core/adbd/qemu_pipe.h | 1 - + core/include/cutils/android_reboot.h | 8 ++++++-- + core/include/cutils/bitops.h | 10 ++++++---- + core/include/cutils/partition_utils.h | 8 ++++++-- + extras/ext4_utils/sha1.c | 3 --- + extras/ext4_utils/sha1.h | 13 ++++++------- + 9 files changed, 34 insertions(+), 23 deletions(-) + +diff --git a/core/adbd/arpa_nameser.h b/core/adbd/arpa_nameser.h +index 438dc04..b2a28d6 100644 +--- a/core/adbd/arpa_nameser.h ++++ b/core/adbd/arpa_nameser.h +@@ -52,6 +52,8 @@ + + #ifndef _ARPA_NAMESER_H_ + #define _ARPA_NAMESER_H_ ++#ifndef _ARPA_NAMESER_H ++#define _ARPA_NAMESER_H + + #define BIND_4_COMPAT + +@@ -574,4 +579,5 @@ __END_DECLS + #define XLOG(...) do {} while (0) + #endif + ++#endif /* !_ARPA_NAMESER_H */ + #endif /* !_ARPA_NAMESER_H_ */ +diff --git a/core/adbd/framebuffer_service.c b/core/adbd/framebuffer_service.c +index 20c08d2..48e0241 100644 +--- a/core/adbd/framebuffer_service.c ++++ b/core/adbd/framebuffer_service.c +@@ -26,6 +26,7 @@ + #include "fdevent.h" + #include "adb.h" + ++#include + #include + #include + #include +-- +2.6.1 diff --git a/package/android-tools/0005-Use-pkgconf-to-get-libs-deps.patch b/package/android-tools/0005-Use-pkgconf-to-get-libs-deps.patch new file mode 100644 index 00000000..63ea1fb6 --- /dev/null +++ b/package/android-tools/0005-Use-pkgconf-to-get-libs-deps.patch @@ -0,0 +1,35 @@ +makefiles: use pkgconf to get libs deps + +LIBS lists library dependencies without taking into account static linking +that need ordered listing and more libraries listed since differently from +shared linking dependency is not transparent(i.e. -lcrypto could need +-latomic etc.). + +Replace -lcrypto with `pkg-config --libs libcrypto` command to be sure all +needed libraries are listed during linking. + +Signed-off-by: Giulio Benetti +--- +diff -urpN android-tools-4.2.2+git20130218.orig/debian/makefiles/adbd.mk android-tools-4.2.2+git20130218/debian/makefiles/adbd.mk +--- android-tools-4.2.2+git20130218.orig/debian/makefiles/adbd.mk 2019-04-08 16:05:02.967710428 +0200 ++++ android-tools-4.2.2+git20130218/debian/makefiles/adbd.mk 2019-04-08 16:30:42.463084426 +0200 +@@ -44,7 +44,7 @@ CPPFLAGS+= -DADBD_NON_ANDROID + CPPFLAGS+= -I$(SRCDIR)/core/adbd + CPPFLAGS+= -I$(SRCDIR)/core/include + +-LIBS+= -lc -lpthread -lz -lcrypto -lcrypt ++LIBS+= -lc -lpthread -lz `pkg-config --libs libcrypto` -lcrypt + + OBJS= $(patsubst %, %.o, $(basename $(SRCS))) + +diff -urpN android-tools-4.2.2+git20130218.orig/debian/makefiles/adb.mk android-tools-4.2.2+git20130218/debian/makefiles/adb.mk +--- android-tools-4.2.2+git20130218.orig/debian/makefiles/adb.mk 2019-04-08 16:05:02.959701400 +0200 ++++ android-tools-4.2.2+git20130218/debian/makefiles/adb.mk 2019-04-08 16:31:06.529426250 +0200 +@@ -41,7 +41,7 @@ CPPFLAGS+= -DHAVE_TERMIO_H + CPPFLAGS+= -I$(SRCDIR)/core/adb + CPPFLAGS+= -I$(SRCDIR)/core/include + +-LIBS+= -lc -lpthread -lz -lcrypto ++LIBS+= -lc -lpthread -lz `pkg-config --libs libcrypto` + + OBJS= $(SRCS:.c=.o) diff --git a/package/android-tools/0006-fix-big-endian-build.patch b/package/android-tools/0006-fix-big-endian-build.patch new file mode 100644 index 00000000..c35fdcb8 --- /dev/null +++ b/package/android-tools/0006-fix-big-endian-build.patch @@ -0,0 +1,61 @@ +Fix build on big endian systems + +The usb_linux_client.c file defines cpu_to_le16/32 by using the C +library htole16/32 function calls. However, cpu_to_le16/32 are used +when initializing structures, i.e in a context where a function call +is not allowed. + +It works fine on little endian systems because htole16/32 are defined +by the C library as no-ops. But on big-endian systems, they are +actually doing something, which might involve calling a function, +causing build failures. + +To solve this, we simply open-code cpu_to_le16/32 in a way that allows +them to be used when initializing structures. + +Signed-off-by: Thomas Petazzoni + +Index: b/core/adb/usb_linux_client.c +=================================================================== +--- a/core/adb/usb_linux_client.c ++++ b/core/adb/usb_linux_client.c +@@ -34,8 +34,15 @@ + #define MAX_PACKET_SIZE_FS 64 + #define MAX_PACKET_SIZE_HS 512 + +-#define cpu_to_le16(x) htole16(x) +-#define cpu_to_le32(x) htole32(x) ++#if __BYTE_ORDER == __LITTLE_ENDIAN ++# define cpu_to_le16(x) (x) ++# define cpu_to_le32(x) (x) ++#else ++# define cpu_to_le16(x) ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8)) ++# define cpu_to_le32(x) \ ++ ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) | \ ++ (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24)) ++#endif + + struct usb_handle + { +Index: b/core/adbd/usb_linux_client.c +=================================================================== +--- a/core/adbd/usb_linux_client.c ++++ b/core/adbd/usb_linux_client.c +@@ -34,8 +34,15 @@ + #define MAX_PACKET_SIZE_FS 64 + #define MAX_PACKET_SIZE_HS 512 + +-#define cpu_to_le16(x) htole16(x) +-#define cpu_to_le32(x) htole32(x) ++#if __BYTE_ORDER == __LITTLE_ENDIAN ++# define cpu_to_le16(x) (x) ++# define cpu_to_le32(x) (x) ++#else ++# define cpu_to_le16(x) ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8)) ++# define cpu_to_le32(x) \ ++ ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) | \ ++ (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24)) ++#endif + + struct usb_handle + { diff --git a/package/android-tools/0007-include-cdefs-h-when-needed.patch b/package/android-tools/0007-include-cdefs-h-when-needed.patch new file mode 100644 index 00000000..da4ee13a --- /dev/null +++ b/package/android-tools/0007-include-cdefs-h-when-needed.patch @@ -0,0 +1,41 @@ +Include cdefs.h wherever it is needed + +cdefs.h is included from within a lot of glibc headers, so it almost +invariably and automagically gets pulled in with glibc. + +However, this might not be the case with other C libraries. musl does +not provide cdefs.h so it does not include it from its own headers +(cdefs.h must be provided separately). + +So we must include it when we are going to use macros it provides. + +Signed-off-by: "Yann E. MORIN" +--- + core/adbd/services.c | 1 + + core/libcutils/android_reboot.c | 1 + + 2 files changed, 2 insertions(+), 0 deletion(-) + +diff --git a/core/adbd/services.c b/core/adbd/services.c +index 20c08d2..48e0241 100644 +--- a/core/adbd/services.c ++++ b/core/adbd/services.c +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + + #include "sysdeps.h" + +diff --git a/core/libcutils/android_reboot.c b/core/libcutils/android_reboot.c +index 20c08d2..48e0241 100644 +--- a/core/libcutils/android_reboot.c ++++ b/core/libcutils/android_reboot.c +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + + #include + diff --git a/package/android-tools/0008-Include-sysmacros.h-to-compile-with-glibc-2.28.patch b/package/android-tools/0008-Include-sysmacros.h-to-compile-with-glibc-2.28.patch new file mode 100644 index 00000000..77b457f6 --- /dev/null +++ b/package/android-tools/0008-Include-sysmacros.h-to-compile-with-glibc-2.28.patch @@ -0,0 +1,42 @@ +usb_linux.c: fix minor()/major() build failure due to glibc 2.28 + +glibc 2.28 no longer includes from , +and therefore must be included explicitly when +major()/minor() are used. + +This commit adds a patch to directly include into +all usb_linux.c files where minor() and major() macros are used. + +diff -urpN host-android-tools-4.2.2+git20130218.orig/core/adb/usb_linux.c host-android-tools-4.2.2+git20130218/core/adb/usb_linux.c +--- host-android-tools-4.2.2+git20130218.orig/core/adb/usb_linux.c 2013-02-18 15:49:03.000000000 +0100 ++++ host-android-tools-4.2.2+git20130218/core/adb/usb_linux.c 2018-09-09 11:47:16.476292546 +0200 +@@ -20,6 +20,7 @@ + #include + + #include ++#include + #include + #include + #include +diff -urpN host-android-tools-4.2.2+git20130218.orig/core/adbd/usb_linux.c host-android-tools-4.2.2+git20130218/core/adbd/usb_linux.c +--- host-android-tools-4.2.2+git20130218.orig/core/adbd/usb_linux.c 2018-09-09 02:32:57.154503866 +0200 ++++ host-android-tools-4.2.2+git20130218/core/adbd/usb_linux.c 2018-09-09 11:47:28.148353880 +0200 +@@ -20,6 +20,7 @@ + #include + + #include ++#include + #include + #include + #include +diff -urpN host-android-tools-4.2.2+git20130218.orig/core/fastboot/usb_linux.c host-android-tools-4.2.2+git20130218/core/fastboot/usb_linux.c +--- host-android-tools-4.2.2+git20130218.orig/core/fastboot/usb_linux.c 2013-02-18 15:49:03.000000000 +0100 ++++ host-android-tools-4.2.2+git20130218/core/fastboot/usb_linux.c 2018-09-09 11:46:53.028169154 +0200 +@@ -33,6 +33,7 @@ + + #include + #include ++#include + #include + #include + #include diff --git a/package/android-tools/0009-Fix-makefiles-for-out-of-tree-ext4_utils-build.patch b/package/android-tools/0009-Fix-makefiles-for-out-of-tree-ext4_utils-build.patch new file mode 100644 index 00000000..80ea1ec1 --- /dev/null +++ b/package/android-tools/0009-Fix-makefiles-for-out-of-tree-ext4_utils-build.patch @@ -0,0 +1,48 @@ +From d24abbec201975a5eb7f8589614cfb424b8c80b6 Mon Sep 17 00:00:00 2001 +From: Alex Kaplan +Date: Sat, 10 Nov 2018 19:50:51 -0800 +Subject: [PATCH] Fix makefiles for out-of-tree ext4_utils build + +Signed-off-by: Alex Kaplan +--- + debian/makefiles/ext4_utils.mk | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/debian/makefiles/ext4_utils.mk b/debian/makefiles/ext4_utils.mk +index cb64916..c5904bf 100644 +--- a/debian/makefiles/ext4_utils.mk ++++ b/debian/makefiles/ext4_utils.mk +@@ -1,6 +1,7 @@ + # Makefile for ext4_utils; based on https://heiher.info/2227.html + # Author: Dmitrijs Ledkovs + ++VPATH+=$(SRCDIR)/extras/ext4_utils + SRCS+=make_ext4fs.c + SRCS+=ext4fixup.c + SRCS+=ext4_utils.c +@@ -13,7 +14,7 @@ SRCS+=sha1.c + SRCS+=wipe.c + SRCS+=crc16.c + +-VPATH+=../../core/libsparse ++VPATH+=$(SRCDIR)/core/libsparse + SRCS+= backed_block.c + SRCS+= sparse_crc32.c + SRCS+= sparse.c +@@ -31,10 +32,9 @@ SRCS+=img2simg.c + SRCS+=simg2img.c + SRCS+=simg2simg.c + +-CPPFLAGS+= -I. +-CPPFLAGS+= -I/usr/include +-CPPFLAGS+= -I../../core/include +-CPPFLAGS+= -I../../core/libsparse/include/ ++CPPFLAGS+= -I$(SRCDIR) ++CPPFLAGS+= -I$(SRCDIR)/core/include ++CPPFLAGS+= -I$(SRCDIR)/core/libsparse/include/ + + LIBS+= -lz -lselinux + +-- +2.7.4 + diff --git a/package/android-tools/0010-adb-added-patch-for-openssl-1.1.0-compatibility.patch b/package/android-tools/0010-adb-added-patch-for-openssl-1.1.0-compatibility.patch new file mode 100644 index 00000000..2de33836 --- /dev/null +++ b/package/android-tools/0010-adb-added-patch-for-openssl-1.1.0-compatibility.patch @@ -0,0 +1,47 @@ +From bb3da0e32be4f2260940edf3ee0f88103dfd0dcc Mon Sep 17 00:00:00 2001 +From: Eneas U de Queiroz +Date: Tue, 5 Feb 2019 01:12:19 +0200 +Subject: [PATCH] adb: added patch for openssl 1.1.0 compatibility + +Signed-off-by: Eneas U de Queiroz + +[Vadim: took only adb related part from +https://github.com/lede-project/source/commit/f63f20fb93c7e67775cb01d97fc88b5b29452b81] +Signed-off-by: Vadim Kochan +--- + core/adb/adb_auth_host.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/core/adb/adb_auth_host.c b/core/adb/adb_auth_host.c +index 9039d42..debd2ef 100644 +--- a/core/adb/adb_auth_host.c ++++ b/core/adb/adb_auth_host.c +@@ -79,7 +79,13 @@ static int RSA_to_RSAPublicKey(RSA *rsa, RSAPublicKey *pkey) + } + + BN_set_bit(r32, 32); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ const BIGNUM *rsa_n, *rsa_e; ++ RSA_get0_key(rsa, &rsa_n, &rsa_e, NULL); ++ BN_copy(n, rsa_n); ++#else + BN_copy(n, rsa->n); ++#endif + BN_set_bit(r, RSANUMWORDS * 32); + BN_mod_sqr(rr, r, n, ctx); + BN_div(NULL, rem, n, r32, ctx); +@@ -93,7 +99,11 @@ static int RSA_to_RSAPublicKey(RSA *rsa, RSAPublicKey *pkey) + BN_div(n, rem, n, r32, ctx); + pkey->n[i] = BN_get_word(rem); + } ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ pkey->exponent = BN_get_word(rsa_e); ++#else + pkey->exponent = BN_get_word(rsa->e); ++#endif + + out: + BN_free(n0inv); +-- +2.14.1 + diff --git a/package/android-tools/0011-core-fastboot-fastboot.c-reorder-functions-to-avoid-.patch b/package/android-tools/0011-core-fastboot-fastboot.c-reorder-functions-to-avoid-.patch new file mode 100644 index 00000000..b5592e69 --- /dev/null +++ b/package/android-tools/0011-core-fastboot-fastboot.c-reorder-functions-to-avoid-.patch @@ -0,0 +1,54 @@ +From 9724d78fda4eb023f83d2fd30e665b436d7a7f97 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 14 Jul 2024 11:41:10 +0200 +Subject: [PATCH] core/fastboot/fastboot.c: reorder functions to avoid implicit + definition +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The match_fastboot() function uses match_fastboot_with_serial() but is +implemented before it, causing an implicit definition. Re-order the +functions to avoid this. + +Fixes: + +core/fastboot/fastboot.c:191:12: error: implicit declaration of function ‘match_fastboot_with_serial’ [-Wimplicit-function-declaration] + +Upstream: N/A, we're too far from upstream +Signed-off-by: Thomas Petazzoni +--- + core/fastboot/fastboot.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/core/fastboot/fastboot.c b/core/fastboot/fastboot.c +index 3de6d7d..9b2c86f 100644 +--- a/core/fastboot/fastboot.c ++++ b/core/fastboot/fastboot.c +@@ -186,11 +186,6 @@ oops: + } + #endif + +-int match_fastboot(usb_ifc_info *info) +-{ +- return match_fastboot_with_serial(info, serial); +-} +- + int match_fastboot_with_serial(usb_ifc_info *info, const char *local_serial) + { + if(!(vendor_id && (info->dev_vendor == vendor_id)) && +@@ -217,6 +212,11 @@ int match_fastboot_with_serial(usb_ifc_info *info, const char *local_serial) + return 0; + } + ++int match_fastboot(usb_ifc_info *info) ++{ ++ return match_fastboot_with_serial(info, serial); ++} ++ + int list_devices_callback(usb_ifc_info *info) + { + if (match_fastboot_with_serial(info, NULL) == 0) { +-- +2.45.2 + diff --git a/package/android-tools/0012-core-libsparse-sparse_read.c-add-missing-output_file.patch b/package/android-tools/0012-core-libsparse-sparse_read.c-add-missing-output_file.patch new file mode 100644 index 00000000..9a6a77ec --- /dev/null +++ b/package/android-tools/0012-core-libsparse-sparse_read.c-add-missing-output_file.patch @@ -0,0 +1,37 @@ +From 2812c2005cfa4bfc5741651c8310e36f28c0327e Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 14 Jul 2024 11:41:56 +0200 +Subject: [PATCH] core/libsparse/sparse_read.c: add missing output_file.h + include +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +sparse_read.c uses read_all() without including the header file +containing its prototype, causing: + +core/libsparse/sparse_read.c:122:31: error: implicit declaration of function ‘read_all’ [-Wimplicit-function-declaration] + +Fix this by including output_file.h. + +Upstream: N/A, we're too far from upstream +Signed-off-by: Thomas Petazzoni +--- + core/libsparse/sparse_read.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/core/libsparse/sparse_read.c b/core/libsparse/sparse_read.c +index 704bcfa..0a8f838 100644 +--- a/core/libsparse/sparse_read.c ++++ b/core/libsparse/sparse_read.c +@@ -32,6 +32,7 @@ + #include "sparse_crc32.h" + #include "sparse_file.h" + #include "sparse_format.h" ++#include "output_file.h" + + #if defined(__APPLE__) && defined(__MACH__) + #define lseek64 lseek +-- +2.45.2 + diff --git a/package/android-tools/0013-extras-ext4_utils-make_ext4fs_main.c-disable-Android.patch b/package/android-tools/0013-extras-ext4_utils-make_ext4fs_main.c-disable-Android.patch new file mode 100644 index 00000000..c11e88bf --- /dev/null +++ b/package/android-tools/0013-extras-ext4_utils-make_ext4fs_main.c-disable-Android.patch @@ -0,0 +1,54 @@ +From 83f9bed233b86dd2bbf603611b13b673caeccb69 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 14 Jul 2024 11:46:51 +0200 +Subject: [PATCH] extras/ext4_utils/make_ext4fs_main.c: disable + Android-specific code +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Since we are not building with the Android code, we do not have the +implementation of the selinux_android_file_context_handle(). However, +its only call site is when 'mountpoint' is set, and 'mountpoint' +cannot be non-NULL in non-Android cases due to how the -a option is +parsed: + + case 'a': + #ifdef ANDROID + fs_config_func = fs_config; + mountpoint = optarg; + #else + fprintf(stderr, "can't set android permissions - built without android support\n"); + usage(argv[0]); + exit(EXIT_FAILURE); + #endif + +So also compile out the code calling +selinux_android_file_context_handle() when ANDROID is not set. + +Fixes: + +make_ext4fs_main.c:155:25: error: implicit declaration of function ‘selinux_android_file_context_handle’ [-Wimplicit-function-declaration] + +Upstream: N/A, we're too far from upstream +Signed-off-by: Thomas Petazzoni +--- + extras/ext4_utils/make_ext4fs_main.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/extras/ext4_utils/make_ext4fs_main.c b/extras/ext4_utils/make_ext4fs_main.c +index 17d3735..cb58011 100644 +--- a/extras/ext4_utils/make_ext4fs_main.c ++++ b/extras/ext4_utils/make_ext4fs_main.c +@@ -149,7 +149,7 @@ int main(int argc, char **argv) + } + } + +-#if !defined(HOST) ++#if !defined(HOST) && defined(ANDROID) + // Use only if -S option not requested + if (!sehnd && mountpoint) { + sehnd = selinux_android_file_context_handle(); +-- +2.45.2 + diff --git a/package/android-tools/0014-core-adbd-adb.c-open-code-capset.patch b/package/android-tools/0014-core-adbd-adb.c-open-code-capset.patch new file mode 100644 index 00000000..1496b8bc --- /dev/null +++ b/package/android-tools/0014-core-adbd-adb.c-open-code-capset.patch @@ -0,0 +1,52 @@ +From 2b5060146b0890f7f1a63ef891af1358b8cdf9bc Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 14 Jul 2024 12:57:22 +0200 +Subject: [PATCH] core/adbd/adb.c: open code capset() + +capset() is apparently implemented by C libraries (at least glibc and +musl), but not exposed through a header as an official public API. + +In addition capset(2) says: + + Note: glibc provides no wrappers for these system calls, + necessitating the use of syscall(2) + +The lack of a header with a prototype for capset() was not causing any +problem so far, but GCC 14.x has become stricter on implicit +declarations, causing the build to fail with: + +core/adbd/adb.c:1296:9: error: implicit declaration of function 'capset' [-Wimplicit-function-declaration] + +So fix that by open-coding it using syscall() as suggested by the man +page. + +Upstream: N/A, we're too far from upstream +Signed-off-by: Thomas Petazzoni +--- + core/adbd/adb.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/core/adbd/adb.c b/core/adbd/adb.c +index 7fe6445..98b1de1 100644 +--- a/core/adbd/adb.c ++++ b/core/adbd/adb.c +@@ -41,6 +41,7 @@ + #if !ADB_HOST + #include "android_filesystem_config.h" + #include ++#include + #include + #include + #else +@@ -1293,7 +1294,7 @@ int adb_main(int is_daemon, int server_port) + header.pid = 0; + cap[CAP_TO_INDEX(CAP_SYS_BOOT)].effective |= CAP_TO_MASK(CAP_SYS_BOOT); + cap[CAP_TO_INDEX(CAP_SYS_BOOT)].permitted |= CAP_TO_MASK(CAP_SYS_BOOT); +- capset(&header, cap); ++ syscall(SYS_capset, &header, cap); + + D("Local port disabled\n"); + } else { +-- +2.45.2 + diff --git a/package/android-tools/0015-core-adbd-adb.c-include-correct-header-for-prctl.patch b/package/android-tools/0015-core-adbd-adb.c-include-correct-header-for-prctl.patch new file mode 100644 index 00000000..cfbefecb --- /dev/null +++ b/package/android-tools/0015-core-adbd-adb.c-include-correct-header-for-prctl.patch @@ -0,0 +1,34 @@ +From c14070011e070d8674cf3578708cbae433090a47 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 14 Jul 2024 13:00:02 +0200 +Subject: [PATCH] core/adbd/adb.c: include correct header for prctl() + +As documented by prctl(2), the correct header to include for prctl() +is , not . + +Fixes: + +core/adbd/adb.c:1256:13: error: implicit declaration of function 'prctl' [-Wimplicit-function-declaration] + +Upstream: N/A, we're too far from upstream +Signed-off-by: Thomas Petazzoni +--- + core/adbd/adb.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/core/adbd/adb.c b/core/adbd/adb.c +index 98b1de1..10f420b 100644 +--- a/core/adbd/adb.c ++++ b/core/adbd/adb.c +@@ -42,7 +42,7 @@ + #include "android_filesystem_config.h" + #include + #include +-#include ++#include + #include + #else + #include "usb_vendors.h" +-- +2.45.2 + diff --git a/package/android-tools/Config.in b/package/android-tools/Config.in new file mode 100644 index 00000000..a688182e --- /dev/null +++ b/package/android-tools/Config.in @@ -0,0 +1,83 @@ +config BR2_PACKAGE_ANDROID_TOOLS + bool "android-tools" + # Technically, fastboot could build on noMMU systems. But + # since we need at least one of the three sub-options enabled, + # and adb/adbd can't be built on noMMU systems, and fastboot + # has some complicated dependencies, we simply make the whole + # package not available on noMMU platforms. + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_ANDROID_TOOLS_ADBD if \ + !BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT && \ + !BR2_PACKAGE_ANDROID_TOOLS_ADB + help + This package contains the fastboot and adb utilities, that + can be used to interact with target devices using of these + protocols. + + https://wiki.debian.org/AndroidTools#Original_android-tools_package + +if BR2_PACKAGE_ANDROID_TOOLS + +# We need kernel headers that support the __SANE_USERSPACE_TYPES__ +# mechanism for 64 bits architectures, so that u64 gets defined as +# "unsigned long long" and not "unsigned long". We know that >= 3.16 +# is needed for MIPS64 (kernel commit +# f4b3aa7cd9d32407670e67238c5ee752bb98f481) and >= 3.10 is needed for +# PowerPC64 (kernel commit +# 2c9c6ce0199a4d252e20c531cfdc9d24e39235c0). Without this, the build +# fails with a bad redefinition of u64 (the android-tools fastboot +# code defines it as "unsigned long long"). +config BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT_GOOD_KERNEL_HEADERS + bool + default y if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 && (BR2_powerpc64 || BR2_powerpc64le) + default y if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 && (BR2_mips64 || BR2_mips64el) + default y if !BR2_powerpc64 && !BR2_powerpc64le && !BR2_mips64 && !BR2_mips64el + +config BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT + bool "fastboot" + depends on BR2_TOOLCHAIN_HAS_THREADS # libselinux + depends on !BR2_STATIC_LIBS # libselinux + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # libselinux -> libsepol + depends on BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT_GOOD_KERNEL_HEADERS + select BR2_PACKAGE_LIBSELINUX + select BR2_PACKAGE_ZLIB + help + This option will build and install the fastboot utility for + the target, which can be used to reflash other target devices + implementing the fastboot protocol. + +comment "fastboot needs a toolchain w/ threads, dynamic library, gcc >= 5" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +comment "fastboot needs headers >= 3.10 (PowerPC64), headers >= 3.16 (MIPS64)" + depends on !BR2_arc + depends on !BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT_GOOD_KERNEL_HEADERS + +config BR2_PACKAGE_ANDROID_TOOLS_ADB + bool "adb" + depends on BR2_USE_MMU # uses fork() + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + This option will build and install the adb utility for the + target, which can be used to interact with other target + devices implementing the ADB protocol. + +config BR2_PACKAGE_ANDROID_TOOLS_ADBD + bool "adbd" + depends on BR2_USE_MMU # uses fork() + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + This option will build and install the adbd utility for the + target, which can be used to interact with a host machine + implementing the ADB protocol. + +endif + +comment "android-tools needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/android-tools/Config.in.host b/package/android-tools/Config.in.host new file mode 100644 index 00000000..898ddb21 --- /dev/null +++ b/package/android-tools/Config.in.host @@ -0,0 +1,41 @@ +config BR2_PACKAGE_HOST_ANDROID_TOOLS + bool "host android-tools" + select BR2_PACKAGE_HOST_ANDROID_TOOLS_ADB if \ + !BR2_PACKAGE_HOST_ANDROID_TOOLS_FASTBOOT + help + This package contains the fastboot and adb utilities, that + can be used to interact with target devices using of these + protocols. + +if BR2_PACKAGE_HOST_ANDROID_TOOLS + +config BR2_PACKAGE_HOST_ANDROID_TOOLS_FASTBOOT + bool "fastboot" + depends on BR2_HOST_GCC_AT_LEAST_5 # host-libselinux -> host-libsepol + help + This option will build and install the fastboot utility for + the host, which can be used to reflash target devices + implementing the fastboot protocol. + +comment "fastboot needs a toolchain w/ host gcc >= 5" + depends on !BR2_HOST_GCC_AT_LEAST_5 + +config BR2_PACKAGE_HOST_ANDROID_TOOLS_ADB + bool "adb" + help + This option will build and install the adb utility for the + host, which can be used to interact with target devices + implementing the ADB protocol. + +config BR2_PACKAGE_HOST_ANDROID_TOOLS_EXT4_UTILS + bool "ext4 utils" + depends on BR2_HOST_GCC_AT_LEAST_5 # host-libselinux -> host-libsepol + help + This option will build and install the ext4 utils for the + host, i.e. make_ext4fs, ext4fixup, ext2simg, img2simg, + simg2img and simg2simg. + +comment "ext4 utils needs a toolchain w/ host gcc >= 5" + depends on !BR2_HOST_GCC_AT_LEAST_5 + +endif diff --git a/package/android-tools/android-tools.hash b/package/android-tools/android-tools.hash new file mode 100644 index 00000000..d9a186b6 --- /dev/null +++ b/package/android-tools/android-tools.hash @@ -0,0 +1,4 @@ +# locally computed +sha256 9bfba987e1351b12aa983787b9ae4424ab752e9e646d8e93771538dc1e5d932f android-tools_4.2.2+git20130218.orig.tar.xz +sha256 73c3078de3e44d8a3cadf7a360863c63155d9d558c2f0933cf38ad901a3f5998 android-tools_4.2.2+git20130218-3ubuntu41.debian.tar.gz +sha256 170c5939bf8c8eed1db8f66f2d6155e8c1a3e799e390b55e7aad253195b1ebf5 debian/copyright diff --git a/package/android-tools/android-tools.mk b/package/android-tools/android-tools.mk new file mode 100644 index 00000000..20e26839 --- /dev/null +++ b/package/android-tools/android-tools.mk @@ -0,0 +1,99 @@ +################################################################################ +# +# android-tools +# +################################################################################ + +ANDROID_TOOLS_SITE = https://launchpad.net/ubuntu/+archive/primary/+files +ANDROID_TOOLS_VERSION = 4.2.2+git20130218 +ANDROID_TOOLS_SOURCE = android-tools_$(ANDROID_TOOLS_VERSION).orig.tar.xz +ANDROID_TOOLS_EXTRA_DOWNLOADS = android-tools_$(ANDROID_TOOLS_VERSION)-3ubuntu41.debian.tar.gz +HOST_ANDROID_TOOLS_EXTRA_DOWNLOADS = $(ANDROID_TOOLS_EXTRA_DOWNLOADS) +ANDROID_TOOLS_LICENSE = Apache-2.0 +ANDROID_TOOLS_LICENSE_FILES = debian/copyright +ANDROID_TOOLS_DEPENDENCIES = host-pkgconf +HOST_ANDROID_TOOLS_DEPENDENCIES = host-pkgconf + +# Extract the Debian tarball inside the sources +define ANDROID_TOOLS_DEBIAN_EXTRACT + $(call suitable-extractor,$(notdir $(ANDROID_TOOLS_EXTRA_DOWNLOADS))) \ + $(ANDROID_TOOLS_DL_DIR)/$(notdir $(ANDROID_TOOLS_EXTRA_DOWNLOADS)) | \ + $(TAR) -C $(@D) $(TAR_OPTIONS) - +endef + +HOST_ANDROID_TOOLS_POST_EXTRACT_HOOKS += ANDROID_TOOLS_DEBIAN_EXTRACT +ANDROID_TOOLS_POST_EXTRACT_HOOKS += ANDROID_TOOLS_DEBIAN_EXTRACT + +# Apply the Debian patches before applying the Buildroot patches +define ANDROID_TOOLS_DEBIAN_PATCH + $(APPLY_PATCHES) $(@D) $(@D)/debian/patches \* +endef + +HOST_ANDROID_TOOLS_PRE_PATCH_HOOKS += ANDROID_TOOLS_DEBIAN_PATCH +ANDROID_TOOLS_PRE_PATCH_HOOKS += ANDROID_TOOLS_DEBIAN_PATCH + +ifeq ($(BR2_PACKAGE_HOST_ANDROID_TOOLS_FASTBOOT),y) +HOST_ANDROID_TOOLS_BUILD_TARGETS += fastboot +HOST_ANDROID_TOOLS_INSTALL_TARGETS += build-fastboot/fastboot +HOST_ANDROID_TOOLS_DEPENDENCIES += host-zlib host-libselinux +endif + +ifeq ($(BR2_PACKAGE_HOST_ANDROID_TOOLS_ADB),y) +HOST_ANDROID_TOOLS_BUILD_TARGETS += adb +HOST_ANDROID_TOOLS_INSTALL_TARGETS += build-adb/adb +HOST_ANDROID_TOOLS_DEPENDENCIES += host-zlib host-openssl +endif + +ifeq ($(BR2_PACKAGE_HOST_ANDROID_TOOLS_EXT4_UTILS),y) +HOST_ANDROID_TOOLS_BUILD_TARGETS += ext4_utils +HOST_ANDROID_TOOLS_INSTALL_TARGETS += \ + $(addprefix build-ext4_utils/,make_ext4fs ext4fixup ext2simg img2simg simg2img simg2simg) +HOST_ANDROID_TOOLS_DEPENDENCIES += host-libselinux +endif + +ifeq ($(BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT),y) +ANDROID_TOOLS_TARGETS += fastboot +ANDROID_TOOLS_DEPENDENCIES += zlib libselinux +endif + +ifeq ($(BR2_PACKAGE_ANDROID_TOOLS_ADB),y) +ANDROID_TOOLS_TARGETS += adb +ANDROID_TOOLS_DEPENDENCIES += zlib openssl +endif + +ifeq ($(BR2_PACKAGE_ANDROID_TOOLS_ADBD),y) +ANDROID_TOOLS_TARGETS += adbd +ANDROID_TOOLS_DEPENDENCIES += \ + openssl \ + zlib \ + $(if $(BR2_PACKAGE_LIBXCRYPT),libxcrypt) +endif + +# Build each tool in its own directory not to share object files + +define HOST_ANDROID_TOOLS_BUILD_CMDS + $(foreach t,$(HOST_ANDROID_TOOLS_BUILD_TARGETS),\ + mkdir -p $(@D)/build-$(t) && \ + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) SRCDIR=$(@D) \ + -C $(@D)/build-$(t) -f $(@D)/debian/makefiles/$(t).mk$(sep)) +endef + +define ANDROID_TOOLS_BUILD_CMDS + $(foreach t,$(ANDROID_TOOLS_TARGETS),\ + mkdir -p $(@D)/build-$(t) && \ + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) SRCDIR=$(@D) \ + -C $(@D)/build-$(t) -f $(@D)/debian/makefiles/$(t).mk$(sep)) +endef + +define HOST_ANDROID_TOOLS_INSTALL_CMDS + $(foreach t,$(HOST_ANDROID_TOOLS_INSTALL_TARGETS),\ + $(INSTALL) -D -m 0755 $(@D)/$(t) $(HOST_DIR)/bin/$(notdir $(t))$(sep)) +endef + +define ANDROID_TOOLS_INSTALL_TARGET_CMDS + $(foreach t,$(ANDROID_TOOLS_TARGETS),\ + $(INSTALL) -D -m 0755 $(@D)/build-$(t)/$(t) $(TARGET_DIR)/usr/bin/$(t)$(sep)) +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/angular-websocket/Config.in b/package/angular-websocket/Config.in new file mode 100644 index 00000000..0981bd0d --- /dev/null +++ b/package/angular-websocket/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_ANGULAR_WEBSOCKET + bool "angular-websocket" + help + An AngularJS WebSocket service for connecting client + applications to servers. + + https://github.com/AngularClass/angular-websocket diff --git a/package/angular-websocket/angular-websocket.hash b/package/angular-websocket/angular-websocket.hash new file mode 100644 index 00000000..3aa5b5e7 --- /dev/null +++ b/package/angular-websocket/angular-websocket.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 69d752896bc17c08750a2fda24b5eb3c6d653afc6f406dd90a6b7c920b22a14a angular-websocket-2.0.0.tar.gz +sha256 3013a57f2c8df37775804b8be5b107665a2ca209607bb92c618bcc084feb00a7 LICENSE diff --git a/package/angular-websocket/angular-websocket.mk b/package/angular-websocket/angular-websocket.mk new file mode 100644 index 00000000..d45bfdf9 --- /dev/null +++ b/package/angular-websocket/angular-websocket.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# angular-websocket +# +################################################################################ + +ANGULAR_WEBSOCKET_VERSION = 2.0.0 +ANGULAR_WEBSOCKET_SITE = $(call github,AngularClass,angular-websocket,v$(ANGULAR_WEBSOCKET_VERSION)) +ANGULAR_WEBSOCKET_LICENSE = MIT +ANGULAR_WEBSOCKET_LICENSE_FILES = LICENSE + +# install .min.js as .js +define ANGULAR_WEBSOCKET_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/dist/angular-websocket.min.js \ + $(TARGET_DIR)/var/www/angular-websocket.js +endef + +$(eval $(generic-package)) diff --git a/package/angularjs/Config.in b/package/angularjs/Config.in new file mode 100644 index 00000000..f0d2015a --- /dev/null +++ b/package/angularjs/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_ANGULARJS + bool "angularjs" + help + AngularJS web application framework. + + http://angularjs.org diff --git a/package/angularjs/angularjs.hash b/package/angularjs/angularjs.hash new file mode 100644 index 00000000..5468174e --- /dev/null +++ b/package/angularjs/angularjs.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 471b57064031da8c5fd3b1ba3f52dd1e0d2740a97ed34da2e8ab2a4cc2718280 angular-1.8.2.zip +sha256 237656fae6e39d02cd71cbcfbf91b7964eba5796aafca1bfcfff3b054ce3fed6 angular.js diff --git a/package/angularjs/angularjs.mk b/package/angularjs/angularjs.mk new file mode 100644 index 00000000..d393c82c --- /dev/null +++ b/package/angularjs/angularjs.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# angularjs +# +################################################################################ + +ANGULARJS_VERSION = 1.8.2 +ANGULARJS_SOURCE = angular-$(ANGULARJS_VERSION).zip +ANGULARJS_SITE = https://code.angularjs.org/$(ANGULARJS_VERSION) +ANGULARJS_LICENSE = MIT +# There's no separate license file in the archive, so use angular.js instead. +ANGULARJS_LICENSE_FILES = angular.js +ANGULARJS_CPE_ID_VENDOR = angularjs +ANGULARJS_CPE_ID_PRODUCT = angular.js + +define ANGULARJS_EXTRACT_CMDS + unzip $(ANGULARJS_DL_DIR)/$(ANGULARJS_SOURCE) -d $(@D) + mv $(@D)/angular-$(ANGULARJS_VERSION)/* $(@D) + rmdir $(@D)/angular-$(ANGULARJS_VERSION) +endef + +# install .min.js as .js +define ANGULARJS_INSTALL_TARGET_CMDS + $(foreach f,$(notdir $(wildcard $(@D)/*.min.js)), + $(INSTALL) -m 0644 -D $(@D)/$(f) \ + $(TARGET_DIR)/var/www/$(f:.min.js=.js)$(sep)) +endef + +$(eval $(generic-package)) diff --git a/package/aoetools/0001-Change-shell-script-interpreter-from-bin-bash-to-bin.patch b/package/aoetools/0001-Change-shell-script-interpreter-from-bin-bash-to-bin.patch new file mode 100644 index 00000000..00b24c89 --- /dev/null +++ b/package/aoetools/0001-Change-shell-script-interpreter-from-bin-bash-to-bin.patch @@ -0,0 +1,26 @@ +From 4ef42740538cefd3c1554aa4df5bcb1388ac927b Mon Sep 17 00:00:00 2001 +From: Sergio Prado +Date: Tue, 16 Jan 2018 22:28:32 -0200 +Subject: [PATCH] Change shell script interpreter from /bin/bash to /bin/sh + +This will make the script more portable, making it possible to run on +systems that do not have bash. + +Signed-off-by: Sergio Prado +--- + aoe-stat.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/aoe-stat.in b/aoe-stat.in +index 50e6ac674169..0c1d6f5ebe1e 100755 +--- a/aoe-stat.in ++++ b/aoe-stat.in +@@ -1,4 +1,4 @@ +-#! /bin/bash ++#! /bin/sh + # aoe-stat - collate and present information about AoE storage + # Copyright 2012, CORAID, Inc., and licensed under GPL v.2. + +-- +1.9.1 + diff --git a/package/aoetools/Config.in b/package/aoetools/Config.in new file mode 100644 index 00000000..70a838f6 --- /dev/null +++ b/package/aoetools/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_AOETOOLS + bool "aoetools" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + The aoetools are programs for users of the ATA over Ethernet + (AoE) network storage protocol, a simple protocol for using + storage over an ethernet LAN. + + http://aoetools.sourceforge.net/ + +comment "aoetools needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/aoetools/aoetools.hash b/package/aoetools/aoetools.hash new file mode 100644 index 00000000..4629019b --- /dev/null +++ b/package/aoetools/aoetools.hash @@ -0,0 +1,5 @@ +# Locally computed: +sha256 477e796f5c18e8c0e61b5d88e1759c68249e8e0210c2f3de2b98680e2cc63e32 aoetools-37.tar.gz + +# Hash for license files: +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/aoetools/aoetools.mk b/package/aoetools/aoetools.mk new file mode 100644 index 00000000..3f6340ff --- /dev/null +++ b/package/aoetools/aoetools.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# aoetools +# +################################################################################ + +AOETOOLS_VERSION = 37 +AOETOOLS_SITE = $(call github,OpenAoE,aoetools,aoetools-$(AOETOOLS_VERSION)) +AOETOOLS_LICENSE = GPL-2.0 +AOETOOLS_LICENSE_FILES = COPYING + +define AOETOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define AOETOOLS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) \ + -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/apache/0001-cross-compile.patch b/package/apache/0001-cross-compile.patch new file mode 100644 index 00000000..790b7a04 --- /dev/null +++ b/package/apache/0001-cross-compile.patch @@ -0,0 +1,63 @@ +Fix cross-compilation + +Fetched httpd-2.4.x-cross_compile.diff from upstream bugtracker: +https://issues.apache.org/bugzilla/show_bug.cgi?id=51257#c6 + +which is a bundle of upstream revisions: + http://svn.apache.org/viewvc?view=revision&revision=1327907 + http://svn.apache.org/viewvc?view=revision&revision=1328390 + http://svn.apache.org/viewvc?view=revision&revision=1328714 + +Signed-off-by: Bernd Kuhls + +Index: server/Makefile.in +=================================================================== +--- a/server/Makefile.in (revision 1328714) ++++ b/server/Makefile.in (working copy) +@@ -22,9 +22,14 @@ + include $(top_builddir)/build/rules.mk + include $(top_srcdir)/build/library.mk + ++ifdef CC_FOR_BUILD ++gen_test_char: gen_test_char.c ++ $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -DCROSS_COMPILE -o $@ $< ++else + gen_test_char_OBJECTS = gen_test_char.lo + gen_test_char: $(gen_test_char_OBJECTS) + $(LINK) $(EXTRA_LDFLAGS) $(gen_test_char_OBJECTS) $(EXTRA_LIBS) ++endif + + test_char.h: gen_test_char + ./gen_test_char > test_char.h +Index: configure.in +=================================================================== +--- a/configure.in (revision 1328714) ++++ b/configure.in (working copy) +@@ -193,6 +193,14 @@ + dnl Try to get c99 support for variadic macros + ifdef([AC_PROG_CC_C99], [AC_PROG_CC_C99]) + ++dnl In case of cross compilation we set CC_FOR_BUILD to cc unless ++dnl we got already CC_FOR_BUILD from environment. ++if test "x${build_alias}" != "x${host_alias}"; then ++ if test "x${CC_FOR_BUILD}" = "x"; then ++ CC_FOR_BUILD=cc ++ fi ++fi ++ + if test "x${cache_file}" = "x/dev/null"; then + # Likewise, ensure that CC and CPP are passed through to the pcre + # configure script iff caching is disabled (the autoconf 2.5x default). +Index: acinclude.m4 +=================================================================== +--- a/acinclude.m4 (revision 1328714) ++++ ab/cinclude.m4 (working copy) +@@ -53,6 +53,8 @@ + APACHE_SUBST(CPPFLAGS) + APACHE_SUBST(CFLAGS) + APACHE_SUBST(CXXFLAGS) ++ APACHE_SUBST(CC_FOR_BUILD) ++ APACHE_SUBST(CFLAGS_FOR_BUILD) + APACHE_SUBST(LTFLAGS) + APACHE_SUBST(LDFLAGS) + APACHE_SUBST(LT_LDFLAGS) diff --git a/package/apache/0002-nios2_is_not_os2.patch b/package/apache/0002-nios2_is_not_os2.patch new file mode 100644 index 00000000..9da8ccac --- /dev/null +++ b/package/apache/0002-nios2_is_not_os2.patch @@ -0,0 +1,18 @@ +Fix nios2 detection. + +Apache treats nios2 as OS/2. + +Signed-off-by: Bernd Kuhls + +diff -uNr httpd-2.4.12.org/configure.in httpd-2.4.12/configure.in +--- httpd-2.4.12.org/configure.in 2015-01-22 18:33:07.000000000 +0100 ++++ httpd-2.4.12/configure.in 2015-04-02 22:01:32.851102219 +0200 +@@ -268,7 +268,7 @@ + AC_MSG_NOTICE([]) + + case $host in +- *os2*) ++ *-os2*) + # Use a custom made libtool replacement + echo "using aplibtool" + LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool" diff --git a/package/apache/0003-server-Makefile.in-handle-separate-APR_INCLUDE_DIR-A.patch b/package/apache/0003-server-Makefile.in-handle-separate-APR_INCLUDE_DIR-A.patch new file mode 100644 index 00000000..b4ad1286 --- /dev/null +++ b/package/apache/0003-server-Makefile.in-handle-separate-APR_INCLUDE_DIR-A.patch @@ -0,0 +1,48 @@ +From 00281390e82db18fe0de4033be4045f9391a8ee5 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 15 Nov 2018 14:04:29 +0100 +Subject: [PATCH] server/Makefile.in: handle separate + APR_INCLUDE_DIR/APU_INCLUDE_DIR + +If APR_INCLUDEDIR and APU_INCLUDEDIR point to different directories, +but for example APU_INCLUDEDIR contains both the apr headers and apu +headers, the "export_files" file will contain duplicate header files, +causing the exports.c file to contain duplicate definitions, making +the build fail. + +This commit fixes that by making sure we only use the apr headers from +APR_INCLUDEDIR and the apu headers from the APU_INCLUDEDIR. + +Signed-off-by: Thomas Petazzoni +Upstream: https://bz.apache.org/bugzilla/show_bug.cgi?id=62930 +--- + server/Makefile.in | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/server/Makefile.in b/server/Makefile.in +index 1fa334467d..2258f0bdf2 100644 +--- a/server/Makefile.in ++++ b/server/Makefile.in +@@ -34,7 +34,6 @@ test_char.h: gen_test_char + util.lo: test_char.h + + EXPORT_DIRS = $(top_srcdir)/include $(top_srcdir)/os/$(OS_DIR) +-EXPORT_DIRS_APR = $(APR_INCLUDEDIR) $(APU_INCLUDEDIR) + + # If export_files is a dependency here, but we remove it during this stage, + # when exports.c is generated, make will not detect that export_files is no +@@ -60,9 +59,8 @@ export_files: + ls $$dir/*.h ; \ + done; \ + echo "$(top_srcdir)/server/mpm_fdqueue.h"; \ +- for dir in $(EXPORT_DIRS_APR); do \ +- ls $$dir/ap[ru].h $$dir/ap[ru]_*.h 2>/dev/null; \ +- done; \ ++ ls $(APR_INCLUDE_DIR)/{apr.h,apr_*.h} 2>/dev/null; \ ++ ls $(APU_INCLUDE_DIR)/{apu.h,apu_*.h} 2>/dev/null; \ + ) | sed -e s,//,/,g | sort -u > $@ + + exports.c: export_files +-- +2.19.1 + diff --git a/package/apache/Config.in b/package/apache/Config.in new file mode 100644 index 00000000..270296bc --- /dev/null +++ b/package/apache/Config.in @@ -0,0 +1,48 @@ +config BR2_PACKAGE_APACHE + bool "apache" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # apr + select BR2_PACKAGE_APR_UTIL + select BR2_PACKAGE_PCRE2 + help + The Apache HTTP Server Project is an effort to develop and + maintain an open-source HTTP server for modern operating + systems including UNIX and Windows NT. The goal of this + project is to provide a secure, efficient and extensible + server that provides HTTP services in sync with the current + HTTP standards. + + https://httpd.apache.org + +if BR2_PACKAGE_APACHE + +choice + prompt "Multi-Processing Module (MPM)" + default BR2_PACKAGE_APACHE_MPM_WORKER + help + Select the Multi-Processing Module (MPM). + +config BR2_PACKAGE_APACHE_MPM_EVENT + bool "event" + help + A variant of the worker MPM with the goal of consuming threads + only for connections with active processing + +config BR2_PACKAGE_APACHE_MPM_PREFORK + bool "prefork" + help + Implements a non-threaded, pre-forking web server + +config BR2_PACKAGE_APACHE_MPM_WORKER + bool "worker" + help + Implements a hybrid multi-threaded multi-process web server + +endchoice + +endif + +comment "apache needs a toolchain w/ dynamic library, threads" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/apache/S50apache b/package/apache/S50apache new file mode 100644 index 00000000..b6874190 --- /dev/null +++ b/package/apache/S50apache @@ -0,0 +1,15 @@ +#!/bin/sh + +case "$1" in + start|restart|graceful|graceful-stop|stop) + apachectl -k $1 + ;; + reload) + apachectl -k restart + ;; + *) + echo "Usage: $0 {start|restart|reload|graceful|graceful-stop|stop}" + exit 1 +esac + +exit $? diff --git a/package/apache/apache.hash b/package/apache/apache.hash new file mode 100644 index 00000000..b281b4be --- /dev/null +++ b/package/apache/apache.hash @@ -0,0 +1,5 @@ +# From https://downloads.apache.org/httpd/httpd-2.4.62.tar.bz2.{sha256,sha512} +sha256 674188e7bf44ced82da8db522da946849e22080d73d16c93f7f4df89e25729ec httpd-2.4.62.tar.bz2 +sha512 7db1876805d5c0f60f49bcb51f75cdf567120f2ff6349e68f084e9a86ae38265d9f1c67e7fca0082c9db136f3c408a88501ee11f26b1b68724ba240867171d77 httpd-2.4.62.tar.bz2 +# Locally computed +sha256 47b8c2b6c3309282a99d4a3001575c790fead690cc14734628c4667d2bbffc43 LICENSE diff --git a/package/apache/apache.mk b/package/apache/apache.mk new file mode 100644 index 00000000..0a0a0b3d --- /dev/null +++ b/package/apache/apache.mk @@ -0,0 +1,125 @@ +################################################################################ +# +# apache +# +################################################################################ + +APACHE_VERSION = 2.4.62 +APACHE_SOURCE = httpd-$(APACHE_VERSION).tar.bz2 +APACHE_SITE = https://dlcdn.apache.org/httpd +APACHE_LICENSE = Apache-2.0 +APACHE_LICENSE_FILES = LICENSE +APACHE_CPE_ID_VENDOR = apache +APACHE_CPE_ID_PRODUCT = http_server +APACHE_SELINUX_MODULES = apache +# Needed for mod_php +APACHE_INSTALL_STAGING = YES +# We have a patch touching configure.in and Makefile.in, +# so we need to autoreconf: +APACHE_AUTORECONF = YES +APACHE_DEPENDENCIES = host-pkgconf apr apr-util pcre2 + +APACHE_CONF_ENV= \ + ap_cv_void_ptr_lt_long=no \ + PCRE_CONFIG=$(STAGING_DIR)/usr/bin/pcre2-config + +ifeq ($(BR2_PACKAGE_APACHE_MPM_EVENT),y) +APACHE_MPM = event +else ifeq ($(BR2_PACKAGE_APACHE_MPM_PREFORK),y) +APACHE_MPM = prefork +else ifeq ($(BR2_PACKAGE_APACHE_MPM_WORKER),y) +APACHE_MPM = worker +endif + +APACHE_CONF_OPTS = \ + --sysconfdir=/etc/apache2 \ + --with-apr=$(STAGING_DIR)/usr \ + --with-apr-util=$(STAGING_DIR)/usr \ + --with-pcre=$(STAGING_DIR)/usr/bin/pcre2-config \ + --enable-http \ + --enable-dbd \ + --enable-proxy \ + --enable-mime-magic \ + --without-suexec-bin \ + --enable-mods-shared=all \ + --with-mpm=$(APACHE_MPM) \ + --disable-luajit + +ifeq ($(BR2_PACKAGE_BROTLI),y) +APACHE_CONF_OPTS += --enable-brotli +APACHE_DEPENDENCIES += brotli +else +APACHE_CONF_OPTS += --disable-brotli +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +APACHE_DEPENDENCIES += libxml2 +# Apache wants the path to the header file, where it can find +# . +APACHE_CONF_OPTS += \ + --enable-xml2enc \ + --enable-proxy-html \ + --with-libxml2=$(STAGING_DIR)/usr/include/libxml2 +else +APACHE_CONF_OPTS += \ + --disable-xml2enc \ + --disable-proxy-html +endif + +ifeq ($(BR2_PACKAGE_LUA),y) +APACHE_CONF_OPTS += --enable-lua +APACHE_DEPENDENCIES += lua +else +APACHE_CONF_OPTS += --disable-lua +endif + +ifeq ($(BR2_PACKAGE_NGHTTP2),y) +APACHE_CONF_OPTS += \ + --enable-http2 \ + --with-nghttp2=$(STAGING_DIR)/usr +APACHE_DEPENDENCIES += nghttp2 +else +APACHE_CONF_OPTS += --disable-http2 +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +APACHE_DEPENDENCIES += openssl +APACHE_CONF_OPTS += \ + --enable-ssl \ + --with-ssl=$(STAGING_DIR)/usr +else +APACHE_CONF_OPTS += --disable-ssl +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +APACHE_DEPENDENCIES += zlib +APACHE_CONF_OPTS += \ + --enable-deflate \ + --with-z=$(STAGING_DIR)/usr +else +APACHE_CONF_OPTS += --disable-deflate +endif + +define APACHE_FIX_STAGING_APACHE_CONFIG + $(SED) 's%"/usr/bin"%"$(STAGING_DIR)/usr/bin"%' $(STAGING_DIR)/usr/bin/apxs + $(SED) 's%/usr/build%$(STAGING_DIR)/usr/build%' $(STAGING_DIR)/usr/bin/apxs + $(SED) 's%^prefix =.*%prefix = $(STAGING_DIR)/usr%' $(STAGING_DIR)/usr/build/config_vars.mk +endef +APACHE_POST_INSTALL_STAGING_HOOKS += APACHE_FIX_STAGING_APACHE_CONFIG + +define APACHE_CLEANUP_TARGET + $(RM) -rf $(TARGET_DIR)/usr/manual $(TARGET_DIR)/usr/build +endef +APACHE_POST_INSTALL_TARGET_HOOKS += APACHE_CLEANUP_TARGET + +define APACHE_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/apache/S50apache \ + $(TARGET_DIR)/etc/init.d/S50apache +endef + +define APACHE_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/apache/apache.service \ + $(TARGET_DIR)/usr/lib/systemd/system/apache.service +endef + +$(eval $(autotools-package)) diff --git a/package/apache/apache.service b/package/apache/apache.service new file mode 100644 index 00000000..b8747e26 --- /dev/null +++ b/package/apache/apache.service @@ -0,0 +1,13 @@ +[Unit] +Description=Apache HTTP Server +After=network.target + +[Service] +Type=forking +ExecStart=/usr/bin/apachectl start +ExecReload=/usr/bin/apachectl graceful +ExecStop=/usr/bin/apachectl stop +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/apcupsd/Config.in b/package/apcupsd/Config.in new file mode 100644 index 00000000..2a00d43d --- /dev/null +++ b/package/apcupsd/Config.in @@ -0,0 +1,74 @@ +config BR2_PACKAGE_APCUPSD + bool "apcupsd" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + help + A daemon for controlling APC UPSes. + + http://www.apcupsd.org/ + +if BR2_PACKAGE_APCUPSD + +config BR2_PACKAGE_APCUPSD_APCSMART + bool "apcsmart" + help + Compile APC SmartUPS serial driver + +config BR2_PACKAGE_APCUPSD_DUMB + bool "dumb" + help + Compile dumb UPS driver + +config BR2_PACKAGE_APCUPSD_MODBUS + bool "modbus" + help + Compile MODBUS driver code + +config BR2_PACKAGE_APCUPSD_MODBUS_USB + bool "modbus usb" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + select BR2_PACKAGE_APCUPSD_MODBUS + help + Compile MODBUS/USB driver code + +comment "modbus usb support needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_APCUPSD_NET + bool "net" + help + Compile networking driver for slaves + +config BR2_PACKAGE_APCUPSD_PCNET + bool "pcnet" + help + Compile PCNET driver code + +config BR2_PACKAGE_APCUPSD_SNMP + bool "snmp" + help + Compile SNMP driver + +config BR2_PACKAGE_APCUPSD_USB + bool "usb" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + help + Compile USB UPS code + +comment "usb support needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +endif + +comment "apcupsd needs a toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/apcupsd/apcupsd.hash b/package/apcupsd/apcupsd.hash new file mode 100644 index 00000000..6795560f --- /dev/null +++ b/package/apcupsd/apcupsd.hash @@ -0,0 +1,6 @@ +# From https://sourceforge.net/projects/apcupsd/files/apcupsd%20-%20Stable/3.14.14/ +md5 cc8f5ced77f38906a274787acb9bc980 apcupsd-3.14.14.tar.gz +sha1 f027fa141c929371fe860443b6d911ef3a3606fb apcupsd-3.14.14.tar.gz +# Locally computed: +sha256 db7748559b6b4c3784f9856561ef6ac6199ef7bd019b3edcd7e0a647bf8f9867 apcupsd-3.14.14.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/apcupsd/apcupsd.mk b/package/apcupsd/apcupsd.mk new file mode 100644 index 00000000..43a01667 --- /dev/null +++ b/package/apcupsd/apcupsd.mk @@ -0,0 +1,84 @@ +################################################################################ +# +# apcupsd +# +################################################################################ + +APCUPSD_VERSION = 3.14.14 +APCUPSD_SITE = http://downloads.sourceforge.net/project/apcupsd/apcupsd%20-%20Stable/$(APCUPSD_VERSION) +APCUPSD_LICENSE = GPL-2.0 +APCUPSD_LICENSE_FILES = COPYING +APCUPSD_CPE_ID_VENDOR = apcupsd +APCUPSD_SELINUX_MODULES = apache apcupsd +APCUPSD_CONF_OPTS = --disable-test +APCUPSD_CONF_ENV = ac_cv_path_SHUTDOWN=/sbin/shutdown + +ifneq ($(BR2_PACKAGE_APCUPSD_MODBUS_USB)$(BR2_PACKAGE_APCUPSD_USB),) +APCUPSD_CONF_ENV += ac_cv_path_usbcfg=$(STAGING_DIR)/usr/bin/libusb-config +ifeq ($(BR2_STATIC_LIBS),y) +APCUPSD_DEPENDENCIES += host-pkgconf +APCUPSD_CONF_ENV += LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs libusb`" +endif +endif + +ifeq ($(BR2_PACKAGE_APCUPSD_APCSMART),y) +APCUPSD_CONF_OPTS += --enable-apcsmart +else +APCUPSD_CONF_OPTS += --disable-apcsmart +endif + +ifeq ($(BR2_PACKAGE_APCUPSD_DUMB),y) +APCUPSD_CONF_OPTS += --enable-dumb +else +APCUPSD_CONF_OPTS += --disable-dumb +endif + +ifeq ($(BR2_PACKAGE_APCUPSD_MODBUS_USB),y) +APCUPSD_CONF_OPTS += --enable-modbus-usb +APCUPSD_DEPENDENCIES += libusb libusb-compat +else +APCUPSD_CONF_OPTS += --disable-modbus-usb +endif + +ifeq ($(BR2_PACKAGE_APCUPSD_MODBUS),y) +APCUPSD_CONF_OPTS += --enable-modbus +else +APCUPSD_CONF_OPTS += --disable-modbus +endif + +ifeq ($(BR2_PACKAGE_APCUPSD_NET),y) +APCUPSD_CONF_OPTS += --enable-net +else +APCUPSD_CONF_OPTS += --disable-net +endif + +ifeq ($(BR2_PACKAGE_APCUPSD_PCNET),y) +APCUPSD_CONF_OPTS += --enable-pcnet +else +APCUPSD_CONF_OPTS += --disable-pcnet +endif + +ifeq ($(BR2_PACKAGE_APCUPSD_SNMP),y) +APCUPSD_CONF_OPTS += --enable-snmp +else +APCUPSD_CONF_OPTS += --disable-snmp +endif + +ifeq ($(BR2_PACKAGE_APCUPSD_USB),y) +APCUPSD_CONF_OPTS += --enable-usb +APCUPSD_DEPENDENCIES += libusb libusb-compat +else +APCUPSD_CONF_OPTS += --disable-usb +endif + +define APCUPSD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) LD="$(TARGET_CXX)" -C $(@D)/src + $(TARGET_MAKE_ENV) $(MAKE) LD="$(TARGET_CXX)" -C $(@D)/platforms +endef + +define APCUPSD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src DESTDIR=$(TARGET_DIR) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/platforms DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(autotools-package)) diff --git a/package/apg/Config.in b/package/apg/Config.in new file mode 100644 index 00000000..f54ffdba --- /dev/null +++ b/package/apg/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_APG + bool "apg" + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + Automated Password Generator (APG). + + https://github.com/wilx/apg diff --git a/package/apg/apg.hash b/package/apg/apg.hash new file mode 100644 index 00000000..5532289a --- /dev/null +++ b/package/apg/apg.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 89539aa734a47d68124fca5ba7acbe559edc5003b6791f5200ef9e706dd00fe9 apg-2.3.0b.tar.gz +sha256 5d0c892ea452c3828f1e311637cde4e3a04eb6431554308b3fcdac8c1b330168 COPYING diff --git a/package/apg/apg.mk b/package/apg/apg.mk new file mode 100644 index 00000000..1929e21f --- /dev/null +++ b/package/apg/apg.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# apg +# +################################################################################ + +APG_VERSION = 2.3.0b +APG_SITE = $(call github,wilx,apg,v$(APG_VERSION)) +APG_LICENSE = BSD-3-Clause +APG_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +APG_DEPENDENCIES += libxcrypt +endif + +define APG_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) FLAGS="$(TARGET_CFLAGS)" -C $(@D) +endef + +define APG_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/apg $(TARGET_DIR)/usr/bin/apg +endef + +$(eval $(generic-package)) diff --git a/package/apitrace/0001-thirdparty-libbacktrace-backtrace-h-include-config.h.patch b/package/apitrace/0001-thirdparty-libbacktrace-backtrace-h-include-config.h.patch new file mode 100644 index 00000000..bc76e5e2 --- /dev/null +++ b/package/apitrace/0001-thirdparty-libbacktrace-backtrace-h-include-config.h.patch @@ -0,0 +1,40 @@ +From 36ff87a927092b4d62c587736d7684dea9c82e63 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 19 Jul 2021 08:27:48 +0200 +Subject: [PATCH] thirdparty/libbacktrace/backtrace/h: include config.h + +Build on musl is broken since version 10.0 because the include on +config.h was removed by +https://github.com/apitrace/apitrace/commit/1544abf59d68d74977b8b692bea4d7468d65547b: + +In file included from /home/buildroot/autobuild/instance-3/output-1/build/apitrace-10.0/thirdparty/libbacktrace/testlib.c:40: +/home/buildroot/autobuild/instance-3/output-1/build/apitrace-10.0/thirdparty/libbacktrace/backtrace.h:53:10: fatal error: gstdint.h: No such file or directory + 53 | #include "gstdint.h" + | ^~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/a10793d01efa3a1533ba37aa845b9ac2bb1dfb6b + +Signed-off-by: Fabrice Fontaine +[Upstream status: not needed +(https://github.com/apitrace/apitrace/issues/755)] +--- + thirdparty/libbacktrace/backtrace.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/thirdparty/libbacktrace/backtrace.h b/thirdparty/libbacktrace/backtrace.h +index 2814763f..ab7679a0 100644 +--- a/thirdparty/libbacktrace/backtrace.h ++++ b/thirdparty/libbacktrace/backtrace.h +@@ -33,6 +33,8 @@ POSSIBILITY OF SUCH DAMAGE. */ + #ifndef BACKTRACE_H + #define BACKTRACE_H + ++#include "config.h" ++ + #include + #include + +-- +2.30.2 + diff --git a/package/apitrace/0002-gltrace-Avoid-__libc_dlsym-and-__libc_dlopen_mode-on-GLIBC-2-34.patch b/package/apitrace/0002-gltrace-Avoid-__libc_dlsym-and-__libc_dlopen_mode-on-GLIBC-2-34.patch new file mode 100644 index 00000000..57e3ee24 --- /dev/null +++ b/package/apitrace/0002-gltrace-Avoid-__libc_dlsym-and-__libc_dlopen_mode-on-GLIBC-2-34.patch @@ -0,0 +1,34 @@ +From d28a980802ad48568c87da02d630c8babfe163bb Mon Sep 17 00:00:00 2001 +From: Jose Fonseca +Date: Wed, 1 Sep 2021 16:34:54 +0100 +Subject: [PATCH] gltrace: Avoid __libc_dlsym and __libc_dlopen_mode on GLIBC + 2.34. + +These GLIBC_PRIVATE symbols are gone from GLIBC 2.34 due to the merge of +libdl.so onto libc.so. + +This means apitrace can't defend against infinite recursion when +used with Steam Overlay, but at least it should work otherwise. + +Fixes https://github.com/apitrace/apitrace/issues/756 + +[Retrieved from: +https://github.com/apitrace/apitrace/commit/d28a980802ad48568c87da02d630c8babfe163bb] +Signed-off-by: Fabrice Fontaine +--- + wrappers/dlsym.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/wrappers/dlsym.cpp b/wrappers/dlsym.cpp +index 5ab8465b0..5369af35a 100644 +--- a/wrappers/dlsym.cpp ++++ b/wrappers/dlsym.cpp +@@ -34,7 +34,7 @@ + #include "os.hpp" + + +-#if defined(__GLIBC__) && !defined(__UCLIBC__) ++#if defined(__GLIBC__) && !defined(__UCLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ < 34 + + + #include diff --git a/package/apitrace/Config.in b/package/apitrace/Config.in new file mode 100644 index 00000000..44bd6964 --- /dev/null +++ b/package/apitrace/Config.in @@ -0,0 +1,22 @@ +comment "apitrace needs a toolchain w/ C++, wchar, dynamic library, threads, gcc >= 7" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 + +config BR2_PACKAGE_APITRACE + bool "apitrace" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17 + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_LIBPNG + help + Trace and replay OpenGL and OpenGL ES APIs calls to/from a + file. You may install apitrace GUI from your distribution to + inspect generated traces. + + http://apitrace.github.io/ diff --git a/package/apitrace/apitrace.hash b/package/apitrace/apitrace.hash new file mode 100644 index 00000000..7ccf6cfb --- /dev/null +++ b/package/apitrace/apitrace.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2e57d37af39369d7ce78666acb8afb1a49ec758f683a21077ec39eb0befae4ad apitrace-10.0.tar.gz +sha256 7066bb1b787519c42f8278b77757c21de522cd97755cb30a22759ac401c62260 LICENSE diff --git a/package/apitrace/apitrace.mk b/package/apitrace/apitrace.mk new file mode 100644 index 00000000..c4756223 --- /dev/null +++ b/package/apitrace/apitrace.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# apitrace +# +################################################################################ + +APITRACE_VERSION = 10.0 +APITRACE_SITE = $(call github,apitrace,apitrace,$(APITRACE_VERSION)) +APITRACE_LICENSE = MIT +APITRACE_LICENSE_FILES = LICENSE + +APITRACE_DEPENDENCIES = host-python3 libpng + +ifeq ($(BR2_PACKAGE_XORG7),y) +APITRACE_DEPENDENCIES += xlib_libX11 +APITRACE_CONF_OPTS += -DENABLE_X11=ON +else +APITRACE_CONF_OPTS += -DENABLE_X11=OFF +endif + +# Gui was never tested, so we prefer to explicitly disable it +APITRACE_CONF_OPTS += -DENABLE_GUI=false + +APITRACE_CFLAGS = $(TARGET_CFLAGS) +APITRACE_CXXFLAGS = $(TARGET_CXXFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y) +# This works around embedded Brotli build failure +APITRACE_CFLAGS += -O0 +# CMakeLists.txt sets CMAKE_CXX_FLAGS_ depending on +# BUILD_TYPE, and this comes after the generic CMAKE_CXX_FLAGS. +# Override CMAKE_BUILD_TYPE so no overrides are applied. +APITRACE_CONF_OPTS += -DCMAKE_BUILD_TYPE=Buildroot +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +# This works around Apitrace itself build failure +APITRACE_CXXFLAGS += -O0 +endif + +# m68k needs 32-bit offsets in switch tables to build +ifeq ($(BR2_m68k),y) +APITRACE_CXXFLAGS += -mlong-jump-table-offsets +endif + +APITRACE_CONF_OPTS += \ + -DCMAKE_C_FLAGS="$(APITRACE_CFLAGS)" \ + -DCMAKE_CXX_FLAGS="$(APITRACE_CXXFLAGS)" + +$(eval $(cmake-package)) diff --git a/package/apparmor/Config.in b/package/apparmor/Config.in new file mode 100644 index 00000000..1cc9daa7 --- /dev/null +++ b/package/apparmor/Config.in @@ -0,0 +1,77 @@ +config BR2_PACKAGE_APPARMOR + bool "apparmor" + depends on BR2_USE_MMU # fork() + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libapparmor + depends on BR2_TOOLCHAIN_HAS_THREADS # libapparmor + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 # libapparmor + select BR2_PACKAGE_LIBAPPARMOR + help + AppArmor is an effective and easy-to-use Linux application + security system. AppArmor proactively protects the operating + system and applications from external or internal threats, + even zero-day attacks, by enforcing good behavior and + preventing even unknown application flaws from being + exploited. + + This package builds the parser (which can load profiles). + + http://wiki.apparmor.net + +if BR2_PACKAGE_APPARMOR + +config BR2_PACKAGE_APPARMOR_BINUTILS + bool "binutils" + help + A set of utilities (written in C): + aa-enabled aa-exec + +comment "utils need python3" + depends on !BR2_PACKAGE_PYTHON3 + +config BR2_PACKAGE_APPARMOR_UTILS + bool "utils" + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # net-tools + select BR2_PACKAGE_NET_TOOLS # runtime (aa-unconfined) + select BR2_PACKAGE_PYTHON3_READLINE + help + A set of utilities (written in python): + aa-audit aa-disable aa-logprof + aa-autodep aa-easyprof aa-mergeprof + aa-cleanprof aa-enforce aa-status + aa-complain aa-genprof aa-unconfined + +if BR2_PACKAGE_APPARMOR_UTILS + +comment "utils (extras) need bash and perl, and busybox or gawk" + depends on !BR2_PACKAGE_BASH || !BR2_PACKAGE_PERL \ + || !(BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_GAWK) + +config BR2_PACKAGE_APPARMOR_UTILS_EXTRA + bool "utils (extras)" + depends on BR2_PACKAGE_BASH + depends on BR2_PACKAGE_PERL + depends on BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_GAWK + help + An extra set of utilities (written in a mixture of sh, + bash, perl, and awk): + aa-decode (bash + perl) + aa-notify (perl) + aa-remove-unknown (sh + awk) + +endif # BR2_PACKAGE_APPARMOR_UTILS + +config BR2_PACKAGE_APPARMOR_PROFILES + bool "profiles" + help + Installs server-class profiles for a wide range of + usual programs and daemons. + +endif # BR2_PACKAGE_APPARMOR + +comment "apparmor needs a toolchain w/ headers >= 3.16, threads, C++" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 diff --git a/package/apparmor/apparmor.hash b/package/apparmor/apparmor.hash new file mode 100644 index 00000000..190045cd --- /dev/null +++ b/package/apparmor/apparmor.hash @@ -0,0 +1,6 @@ +# From https://gitlab.com/apparmor/apparmor/-/wikis/Release_Notes_3.1.7 +sha256 64494bd99fa6547a9cbdb4fc6bc732451a02dd19e6eb70eab977b239632151eb apparmor-v3.1.7.tar.gz + +# locally computed +sha256 a7e0cdcbea5c14927cedfc600d46526bdcbb1eb0a4d951e2ea53c2a6de159cb4 LICENSE +sha256 dd54950fa69a3096fe907a466a454d217ccca9bca77398d5232704766d5a0040 parser/COPYING.GPL diff --git a/package/apparmor/apparmor.mk b/package/apparmor/apparmor.mk new file mode 100644 index 00000000..61e62c75 --- /dev/null +++ b/package/apparmor/apparmor.mk @@ -0,0 +1,88 @@ +################################################################################ +# +# apparmor +# +################################################################################ + +# When updating the version here, please also update the libapparmor package +APPARMOR_VERSION_MAJOR = 3.1 +APPARMOR_VERSION = $(APPARMOR_VERSION_MAJOR).7 +APPARMOR_SOURCE = apparmor-v$(LIBAPPARMOR_VERSION).tar.gz +APPARMOR_SITE = https://gitlab.com/apparmor/apparmor/-/archive/v$(LIBAPPARMOR_VERSION) +APPARMOR_DL_SUBDIR = libapparmor +APPARMOR_LICENSE = GPL-2.0 +APPARMOR_LICENSE_FILES = LICENSE parser/COPYING.GPL +APPARMOR_CPE_ID_VENDOR = canonical + +APPARMOR_DEPENDENCIES = libapparmor + +APPARMOR_TOOLS = parser +APPARMOR_MAKE_OPTS = USE_SYSTEM=1 DISTRO=unknown POD2MAN=true POD2HTML=true + +ifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y) +APPARMOR_DEPENDENCIES += gettext +APPARMOR_MAKE_OPTS += WITH_LIBINTL=1 +endif + +ifeq ($(BR2_PACKAGE_APPARMOR_BINUTILS),y) +APPARMOR_TOOLS += binutils +endif + +ifeq ($(BR2_PACKAGE_APPARMOR_UTILS),y) +APPARMOR_DEPENDENCIES += host-python3 python3 +APPARMOR_TOOLS += utils +APPARMOR_MAKE_OPTS += PYTHON=$(HOST_DIR)/bin/python3 + +ifeq ($(BR2_PACKAGE_APPARMOR_UTILS_EXTRA),) +define APPARMOR_UTILS_NO_EXTRA + $(Q)rm -f $(addprefix $(TARGET_DIR)/usr/sbin/,aa-decode aa-notify aa-remove-unknown) +endef +APPARMOR_POST_INSTALL_TARGET_HOOKS += APPARMOR_UTILS_NO_EXTRA +endif # BR2_PACKAGE_APPARMOR_UTILS_EXTRA + +endif # BR2_PACKAGE_APPARMOR_UTILS + +ifeq ($(BR2_PACKAGE_APPARMOR_PROFILES),y) +APPARMOR_TOOLS += profiles +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +APPARMOR_DEPENDENCIES += linux-pam +APPARMOR_TOOLS += changehat/pam_apparmor +endif + +ifeq ($(BR2_PACKAGE_APACHE),y) +APPARMOR_DEPENDENCIES += apache +APPARMOR_TOOLS += changehat/mod_apparmor +APPARMOR_MAKE_OPTS += APXS=$(STAGING_DIR)/usr/bin/apxs +endif + +define APPARMOR_BUILD_CMDS + $(foreach tool,$(APPARMOR_TOOLS),\ + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \ + $(MAKE) -C $(@D)/$(tool) $(APPARMOR_MAKE_OPTS) + ) +endef + +define APPARMOR_INSTALL_TARGET_CMDS + $(foreach tool,$(APPARMOR_TOOLS),\ + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \ + $(MAKE) -C $(@D)/$(tool) $(APPARMOR_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) install + ) +endef + +# Despite its name, apparmor.systemd is a sysv-init compatible startup script +define APPARMOR_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 $(@D)/parser/apparmor.systemd \ + $(TARGET_DIR)/etc/init.d/S00apparmor +endef + +define APPARMOR_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0755 $(@D)/parser/apparmor.systemd \ + $(TARGET_DIR)/lib/apparmor/apparmor.systemd + $(INSTALL) -D -m 0644 $(@D)/parser/apparmor.service \ + $(TARGET_DIR)/usr/lib/systemd/system/apparmor.service +endef + +$(eval $(generic-package)) diff --git a/package/apr-util/0001-remove-checkapr.patch b/package/apr-util/0001-remove-checkapr.patch new file mode 100644 index 00000000..42ad12fc --- /dev/null +++ b/package/apr-util/0001-remove-checkapr.patch @@ -0,0 +1,21 @@ +remove check apr + +this patch removes the check of apr which fails the build + +Signed-off-by: Rico Bachmann +--- +v1: disable the check for APU_FIND_APR because the check only looks into folders +named apr, and our source-tree is called apr-versionnumber (e.g. apr-1.4.6) + +diff -rupN apr-util-1.4.1/configure.in apr-util-1.4.1-fix/configure.in +--- apr-util-1.4.1/configure.in 2009-12-17 20:15:19.000000000 +0100 ++++ apr-util-1.4.1-fix/configure.in 2012-04-24 10:10:32.000000000 +0200 +@@ -99,7 +99,7 @@ fi + dnl + dnl Find the APR includes directory and (possibly) the source (base) dir. + dnl +-APU_FIND_APR ++dnl APU_FIND_APR + + dnl + dnl even though we use apr_rules.mk for building apr-util, we need diff --git a/package/apr-util/Config.in b/package/apr-util/Config.in new file mode 100644 index 00000000..06b6c268 --- /dev/null +++ b/package/apr-util/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_APR_UTIL + bool "apr-util" + # apr really needs shared library support + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # apr + select BR2_PACKAGE_APR + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENGINES if BR2_PACKAGE_LIBOPENSSL + help + The utility library for the apache runtime project + + https://apr.apache.org + +comment "apr-util needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/package/apr-util/apr-util.hash b/package/apr-util/apr-util.hash new file mode 100644 index 00000000..7e2793cd --- /dev/null +++ b/package/apr-util/apr-util.hash @@ -0,0 +1,4 @@ +# From http://www.apache.org/dist/apr/apr-util-1.6.3.tar.bz2.sha256 +sha256 a41076e3710746326c3945042994ad9a4fcac0ce0277dd8fea076fec3c9772b5 apr-util-1.6.3.tar.bz2 +# Locally calculated +sha256 ef5609d18601645ad6fe22c6c122094be40e976725c1d0490778abacc836e7a2 LICENSE diff --git a/package/apr-util/apr-util.mk b/package/apr-util/apr-util.mk new file mode 100644 index 00000000..477db1c5 --- /dev/null +++ b/package/apr-util/apr-util.mk @@ -0,0 +1,86 @@ +################################################################################ +# +# apr-util +# +################################################################################ + +APR_UTIL_VERSION = 1.6.3 +APR_UTIL_SOURCE = apr-util-$(APR_UTIL_VERSION).tar.bz2 +APR_UTIL_SITE = https://archive.apache.org/dist/apr +APR_UTIL_LICENSE = Apache-2.0 +APR_UTIL_LICENSE_FILES = LICENSE +APR_UTIL_CPE_ID_VENDOR = apache +APR_UTIL_CPE_ID_PRODUCT = portable_runtime_utility +APR_UTIL_INSTALL_STAGING = YES +APR_UTIL_DEPENDENCIES = apr expat +APR_UTIL_CONF_OPTS = \ + --with-apr=$(STAGING_DIR)/usr/bin/apr-1-config +APR_UTIL_CONFIG_SCRIPTS = apu-1-config + +# When iconv is available, then use it to provide charset conversion +# features. +APR_UTIL_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBICONV),libiconv) + +ifeq ($(BR2_PACKAGE_BERKELEYDB),y) +APR_UTIL_CONF_OPTS += --with-dbm=db53 --with-berkeley-db="$(STAGING_DIR)/usr" +APR_UTIL_DEPENDENCIES += berkeleydb +else +APR_UTIL_CONF_OPTS += --without-berkeley-db +endif + +ifeq ($(BR2_PACKAGE_GDBM),y) +APR_UTIL_CONF_OPTS += --with-gdbm="$(STAGING_DIR)/usr" +APR_UTIL_DEPENDENCIES += gdbm +else +APR_UTIL_CONF_OPTS += --without-gdbm +endif + +ifeq ($(BR2_PACKAGE_MARIADB),y) +APR_UTIL_CONF_OPTS += --with-mysql="$(STAGING_DIR)/usr" +APR_UTIL_DEPENDENCIES += mariadb +else +APR_UTIL_CONF_OPTS += --without-mysql +endif + +ifeq ($(BR2_PACKAGE_SQLITE),y) +APR_UTIL_CONF_OPTS += --with-sqlite3="$(STAGING_DIR)/usr" +APR_UTIL_DEPENDENCIES += sqlite +else +APR_UTIL_CONF_OPTS += --without-sqlite3 +endif + +ifeq ($(BR2_PACKAGE_OPENLDAP),y) +APR_UTIL_CONF_ENV += ac_cv_ldap_set_rebind_proc_style=three +APR_UTIL_CONF_OPTS += \ + --with-ldap \ + --with-ldap-include="$(STAGING_DIR)/usr/include/" \ + --with-ldap-lib="$(STAGING_DIR)/usr/lib" +APR_UTIL_DEPENDENCIES += openldap +else +APR_UTIL_CONF_OPTS += --without-ldap +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +APR_UTIL_CONF_OPTS += --with-crypto --with-openssl="$(STAGING_DIR)/usr" +APR_UTIL_DEPENDENCIES += openssl +else +APR_UTIL_CONF_OPTS += --without-crypto +endif + +ifeq ($(BR2_PACKAGE_POSTGRESQL),y) +APR_UTIL_CONF_OPTS += --with-pgsql="$(STAGING_DIR)/usr" +APR_UTIL_DEPENDENCIES += postgresql +else +APR_UTIL_CONF_OPTS += --without-pgsql +endif + +ifeq ($(BR2_PACKAGE_UNIXODBC),y) +APR_UTIL_CONF_OPTS += --with-odbc="$(STAGING_DIR)/usr" +# avoid using target binary $(STAGING_DIR)/usr/bin/odbc_config +APR_UTIL_CONF_ENV += ac_cv_path_ODBC_CONFIG="" +APR_UTIL_DEPENDENCIES += unixodbc +else +APR_UTIL_CONF_OPTS += --without-odbc +endif + +$(eval $(autotools-package)) diff --git a/package/apr/0001-sys-param-h.patch b/package/apr/0001-sys-param-h.patch new file mode 100644 index 00000000..49f963c4 --- /dev/null +++ b/package/apr/0001-sys-param-h.patch @@ -0,0 +1,39 @@ +Fix PATH_MAX detection by including sys/param.h if available + +Patch sent upstream: +https://bz.apache.org/bugzilla/show_bug.cgi?id=63782 + +Signed-off-by: Bernd Kuhls + +diff -uNr apr-1.7.0.orig/configure.in apr-1.7.0/configure.in +--- apr-1.7.0.orig/configure.in 2019-04-01 19:40:46.000000000 +0200 ++++ apr-1.7.0/configure.in 2019-09-29 17:03:41.803326791 +0200 +@@ -1586,6 +1586,7 @@ + AC_SUBST(stringh) + AC_SUBST(stringsh) + AC_SUBST(sys_ioctlh) ++AC_SUBST(sys_paramh) + AC_SUBST(sys_sendfileh) + AC_SUBST(sys_signalh) + AC_SUBST(sys_socketh) +diff -uNr apr-1.7.0.orig/include/apr.h.in apr-1.7.0/include/apr.h.in +--- apr-1.7.0.orig/include/apr.h.in 2019-03-22 14:30:31.000000000 +0100 ++++ apr-1.7.0/include/apr.h.in 2019-09-29 17:04:54.203815469 +0200 +@@ -95,6 +95,7 @@ + #define APR_HAVE_STRINGS_H @stringsh@ + #define APR_HAVE_INTTYPES_H @inttypesh@ + #define APR_HAVE_SYS_IOCTL_H @sys_ioctlh@ ++#define APR_HAVE_SYS_PARAM_H @sys_paramh@ + #define APR_HAVE_SYS_SENDFILE_H @sys_sendfileh@ + #define APR_HAVE_SYS_SIGNAL_H @sys_signalh@ + #define APR_HAVE_SYS_SOCKET_H @sys_socketh@ +@@ -206,6 +207,9 @@ + #include + #endif + #endif ++#if APR_HAVE_SYS_PARAM_H ++#include ++#endif + + /* __APPLE__ is now the official pre-defined macro for macOS */ + #ifdef __APPLE__ diff --git a/package/apr/0002-Revert-Backport-r1872164.-Fix-the-name-of-libtool-wh.patch b/package/apr/0002-Revert-Backport-r1872164.-Fix-the-name-of-libtool-wh.patch new file mode 100644 index 00000000..f80db1cb --- /dev/null +++ b/package/apr/0002-Revert-Backport-r1872164.-Fix-the-name-of-libtool-wh.patch @@ -0,0 +1,30 @@ +From 0aa7e33372b479a26e5f04dfc4801e24573a8737 Mon Sep 17 00:00:00 2001 +From: Graham Leggett +Date: Wed, 1 Jan 2020 10:43:39 +0000 +Subject: [PATCH] Revert: Backport r1872164. Fix the name of libtool when + cross compiling. + +git-svn-id: https://svn.apache.org/repos/asf/apr/apr/branches/1.7.x@1872165 13f79535-47bb-0310-9956-ffa450edef68 + +[Revert upstream commit https://github.com/apache/apr/commit/f82374627b3a6500a7a6cb11e48bcac59bcbb6a1] +Signed-off-by: Peter Seiderer +--- + apr-config.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/apr-config.in b/apr-config.in +index bed47ca..4873fc0 100644 +--- a/apr-config.in ++++ b/apr-config.in +@@ -246,7 +246,7 @@ while test $# -gt 0; do + if test "$location" = "installed"; then + echo "${installbuilddir}/libtool" + elif test "$location" = "crosscompile"; then +- echo "$APR_TARGET_DIR/${installbuilddir}/libtool" ++ echo "$APR_TARGET_DIR/${installbuilddir}/build" + else + echo "$APR_BUILD_DIR/libtool" + fi +-- +2.39.2 + diff --git a/package/apr/0003-Revert-Add-the-ability-to-cross-compile-APR.patch b/package/apr/0003-Revert-Add-the-ability-to-cross-compile-APR.patch new file mode 100644 index 00000000..ad250d44 --- /dev/null +++ b/package/apr/0003-Revert-Add-the-ability-to-cross-compile-APR.patch @@ -0,0 +1,112 @@ +From ed1daed074fba0dabff825e63525d751b6bb7b8d Mon Sep 17 00:00:00 2001 +From: Graham Leggett +Date: Tue, 31 Dec 2019 21:26:02 +0000 +Subject: [PATCH] Revert: Add the ability to cross compile APR. + +git-svn-id: https://svn.apache.org/repos/asf/apr/apr/branches/1.7.x@1872147 13f79535-47bb-0310-9956-ffa450edef68 + +[Revert upstream commit https://github.com/apache/apr/commit/b6dbbc77da35a7b46754c99f465827f2a583e23c] +Signed-off-by: Peter Seiderer +--- + CHANGES | 2 -- + apr-config.in | 22 ---------------------- + 2 files changed, 24 deletions(-) + +diff --git a/CHANGES b/CHANGES +index 71b2f0e..e751c90 100644 +--- a/CHANGES ++++ b/CHANGES +@@ -56,8 +56,6 @@ Changes for APR 1.7.1 + *) Don't try to use PROC_PTHREAD by default when cross compiling. + [Yann Ylavic] + +- *) Add the ability to cross compile APR. [Graham Leggett] +- + *) While cross-compiling, the tools/gen_test_char could not + be executed at build time, use AX_PROG_CC_FOR_BUILD to + build native tools/gen_test_char +diff --git a/apr-config.in b/apr-config.in +index 4873fc0..84b4073 100644 +--- a/apr-config.in ++++ b/apr-config.in +@@ -48,14 +48,6 @@ APR_LIBNAME="@APR_LIBNAME@" + # NOTE: the following line is modified during 'make install': alter with care! + location=@APR_CONFIG_LOCATION@ + +-# absolute path, but not installed path - we're cross compiling +-case "$0" in +- "${bindir}/"*) ;; +- "/"*) location=crosscompile; +- APR_TARGET_DIR=${0%${bindir}/apr-${APR_MAJOR_VERSION}-config} ;; +- *) ;; +-esac +- + show_usage() + { + cat << EOF +@@ -101,8 +93,6 @@ fi + + if test "$location" = "installed"; then + LA_FILE="$libdir/lib${APR_LIBNAME}.la" +-elif test "$location" = "crosscompile"; then +- LA_FILE="$APR_TARGET_DIR/$libdir/lib${APR_LIBNAME}.la" + else + LA_FILE="$APR_BUILD_DIR/lib${APR_LIBNAME}.la" + fi +@@ -132,8 +122,6 @@ while test $# -gt 0; do + --includedir) + if test "$location" = "installed"; then + flags="$includedir" +- elif test "$location" = "crosscompile"; then +- flags="$APR_TARGET_DIR/$includedir" + elif test "$location" = "source"; then + flags="$APR_SOURCE_DIR/include" + else +@@ -166,8 +154,6 @@ while test $# -gt 0; do + --includes) + if test "$location" = "installed"; then + flags="$flags -I$includedir $EXTRA_INCLUDES" +- elif test "$location" = "crosscompile"; then +- flags="$flags -I$APR_TARGET_DIR/$includedir $EXTRA_INCLUDES" + elif test "$location" = "source"; then + flags="$flags -I$APR_SOURCE_DIR/include $EXTRA_INCLUDES" + else +@@ -182,8 +168,6 @@ while test $# -gt 0; do + --installbuilddir) + if test "$location" = "installed"; then + echo "${installbuilddir}" +- elif test "$location" = "crosscompile"; then +- echo "$APR_TARGET_DIR/${installbuilddir}" + elif test "$location" = "source"; then + echo "$APR_SOURCE_DIR/build" + else +@@ -200,8 +184,6 @@ while test $# -gt 0; do + if test "$location" = "installed"; then + ### avoid using -L if libdir is a "standard" location like /usr/lib + flags="$flags -L$libdir -l${APR_LIBNAME}" +- elif test "$location" = "crosscompile"; then +- flags="$flags -L$APR_TARGET_DIR/$libdir -l${APR_LIBNAME}" + else + ### this surely can't work since the library is in .libs? + flags="$flags -L$APR_BUILD_DIR -l${APR_LIBNAME}" +@@ -219,8 +201,6 @@ while test $# -gt 0; do + # Since the user is specifying they are linking with libtool, we + # *know* that -R will be recognized by libtool. + flags="$flags -L$libdir -R$libdir -l${APR_LIBNAME}" +- elif test "$location" = "crosscompile"; then +- flags="$flags -L${APR_TARGET_DIR}/$libdir -l${APR_LIBNAME}" + else + flags="$flags $LA_FILE" + fi +@@ -245,8 +225,6 @@ while test $# -gt 0; do + --apr-libtool) + if test "$location" = "installed"; then + echo "${installbuilddir}/libtool" +- elif test "$location" = "crosscompile"; then +- echo "$APR_TARGET_DIR/${installbuilddir}/build" + else + echo "$APR_BUILD_DIR/libtool" + fi +-- +2.39.2 + diff --git a/package/apr/Config.in b/package/apr/Config.in new file mode 100644 index 00000000..9427b7af --- /dev/null +++ b/package/apr/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_APR + bool "apr" + # apr really needs shared library support + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # fork() in apr_proc_fork() + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + The mission of the Apache Portable Runtime (APR) project is to + create and maintain software libraries that provide a + predictable and consistent interface to underlying + platform-specific implementations + + https://apr.apache.org + +comment "apr needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/package/apr/apr.hash b/package/apr/apr.hash new file mode 100644 index 00000000..96f43d37 --- /dev/null +++ b/package/apr/apr.hash @@ -0,0 +1,4 @@ +# From https://archive.apache.org/dist/apr/apr-1.7.2.tar.bz2.sha256 +sha256 75e77cc86776c030c0a5c408dfbd0bf2a0b75eed5351e52d5439fa1e5509a43e apr-1.7.2.tar.bz2 +# Locally calculated +sha256 f854aeef66ecd55a126226e82b3f26793fc3b1c584647f6a0edc5639974c38ad LICENSE diff --git a/package/apr/apr.mk b/package/apr/apr.mk new file mode 100644 index 00000000..d4526a41 --- /dev/null +++ b/package/apr/apr.mk @@ -0,0 +1,96 @@ +################################################################################ +# +# apr +# +################################################################################ + +APR_VERSION = 1.7.2 +APR_SOURCE = apr-$(APR_VERSION).tar.bz2 +APR_SITE = https://archive.apache.org/dist/apr +APR_LICENSE = Apache-2.0 +APR_LICENSE_FILES = LICENSE +APR_CPE_ID_VENDOR = apache +APR_CPE_ID_PRODUCT = portable_runtime +APR_INSTALL_STAGING = YES +# We have a patch touching configure.in and Makefile.in, +# so we need to autoreconf: +APR_AUTORECONF = YES + +APR_CONF_OPTS = --disable-sctp + +# avoid apr_hints.m4 by setting apr_preload_done=yes and set +# the needed CFLAGS on our own (avoids '-D_REENTRANT' in case +# not supported by toolchain and subsequent configure failure) +APR_CFLAGS = $(TARGET_CFLAGS) -DLINUX -D_GNU_SOURCE +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +APR_CFLAGS += -D_REENTRANT +endif + +APR_CONF_ENV = \ + CC_FOR_BUILD="$(HOSTCC)" \ + CFLAGS_FOR_BUILD="$(HOST_CFLAGS)" \ + CFLAGS="$(APR_CFLAGS)" \ + ac_cv_file__dev_zero=yes \ + ac_cv_mmap__dev_zero=yes \ + ac_cv_func_setpgrp_void=yes \ + apr_cv_process_shared_works=yes \ + apr_cv_mutex_robust_shared=no \ + apr_cv_tcp_nodelay_with_cork=yes \ + ac_cv_sizeof_struct_iovec=8 \ + ac_cv_sizeof_pid_t=4 \ + ac_cv_struct_rlimit=yes \ + ac_cv_strerror_r_rc_int=$(if $(BR2_TOOLCHAIN_USES_MUSL),yes,no) \ + ac_cv_o_nonblock_inherited=no \ + apr_cv_mutex_recursive=yes \ + apr_cv_epoll=yes \ + apr_cv_epoll_create1=yes \ + apr_cv_dup3=yes \ + apr_cv_sock_cloexec=yes \ + apr_cv_accept4=yes \ + apr_preload_done=yes +APR_CONFIG_SCRIPTS = apr-1-config + +# Doesn't even try to guess when cross compiling +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +APR_CONF_ENV += apr_cv_pthreads_lib="-lpthread" +endif + +# Fix lfs detection when cross compiling +APR_CONF_ENV += apr_cv_use_lfs64=yes + +# Use non-portable atomics when available. We have to override +# ap_cv_atomic_builtins because the test used to check for atomic +# builtins uses AC_TRY_RUN, which doesn't work when cross-compiling. +ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_8),y) +APR_CONF_OPTS += --enable-nonportable-atomics +APR_CONF_ENV += ap_cv_atomic_builtins=yes +else +APR_CONF_OPTS += --disable-nonportable-atomics +endif + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +APR_DEPENDENCIES += libxcrypt +endif + +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y) +APR_DEPENDENCIES += util-linux +endif + +define APR_CLEANUP_UNNEEDED_FILES + $(RM) -rf $(TARGET_DIR)/usr/build-1/ +endef + +APR_POST_INSTALL_TARGET_HOOKS += APR_CLEANUP_UNNEEDED_FILES + +define APR_FIXUP_RULES_MK + $(SED) 's%apr_builddir=%apr_builddir=$(STAGING_DIR)%' \ + $(STAGING_DIR)/usr/build-1/apr_rules.mk + $(SED) 's%apr_builders=%apr_builders=$(STAGING_DIR)%' \ + $(STAGING_DIR)/usr/build-1/apr_rules.mk + $(SED) 's%top_builddir=%top_builddir=$(STAGING_DIR)%' \ + $(STAGING_DIR)/usr/build-1/apr_rules.mk +endef + +APR_POST_INSTALL_STAGING_HOOKS += APR_FIXUP_RULES_MK + +$(eval $(autotools-package)) diff --git a/package/argp-standalone/Config.in b/package/argp-standalone/Config.in new file mode 100644 index 00000000..891d4aed --- /dev/null +++ b/package/argp-standalone/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_ARGP_STANDALONE + bool "argp-standalone" + # glibc provides its own argp implementation. + depends on !BR2_TOOLCHAIN_USES_GLIBC + help + Glibc hierarchical argument parsing standalone library. + + https://github.com/ericonr/argp-standalone/ diff --git a/package/argp-standalone/argp-standalone.hash b/package/argp-standalone/argp-standalone.hash new file mode 100644 index 00000000..1e56c663 --- /dev/null +++ b/package/argp-standalone/argp-standalone.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +sha256 879d76374424dce051b812f16f43c6d16de8dbaddd76002f83fd1b6e57d39e0b argp-standalone-1.4.1.tar.gz + +# License file +sha256 b5db0353a5b1902fc8a2e055d8899dd0c189ce73a31e67af9a0ffc24711b63f0 README.md diff --git a/package/argp-standalone/argp-standalone.mk b/package/argp-standalone/argp-standalone.mk new file mode 100644 index 00000000..269239fa --- /dev/null +++ b/package/argp-standalone/argp-standalone.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# argp-standalone +# +################################################################################ + +ARGP_STANDALONE_VERSION = 1.4.1 +ARGP_STANDALONE_SITE = \ + $(call github,ericonr,argp-standalone,$(ARGP_STANDALONE_VERSION)) +ARGP_STANDALONE_INSTALL_STAGING = YES +ARGP_STANDALONE_LICENSE = LGPL-2.1+ +ARGP_STANDALONE_LICENSE_FILES = README.md +# From git +ARGP_STANDALONE_AUTORECONF = YES +ARGP_STANDALONE_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) + +ARGP_STANDALONE_CONF_ENV = \ + CFLAGS="$(TARGET_CFLAGS) -fPIC -fgnu89-inline" \ + LIBS=$(TARGET_NLS_LIBS) + +define ARGP_STANDALONE_INSTALL_STAGING_CMDS + $(INSTALL) -D $(@D)/libargp.a $(STAGING_DIR)/usr/lib/libargp.a + $(INSTALL) -D $(@D)/argp.h $(STAGING_DIR)/usr/include/argp.h +endef + +define ARGP_STANDALONE_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/libargp.a $(TARGET_DIR)/usr/lib/libargp.a + $(INSTALL) -D $(@D)/argp.h $(TARGET_DIR)/usr/include/argp.h +endef + +$(eval $(autotools-package)) diff --git a/package/argparse/Config.in b/package/argparse/Config.in new file mode 100644 index 00000000..d02b1912 --- /dev/null +++ b/package/argparse/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_ARGPARSE + bool "argparse" + help + Argparse is a feature-rich command line parser for Lua + inspired by argparse for Python. Argparse supports + positional arguments, options, flags, optional arguments, + subcommands and more. Argparse automatically generates + usage, help and error messages. + + https://github.com/luarocks/argparse diff --git a/package/argparse/argparse.hash b/package/argparse/argparse.hash new file mode 100644 index 00000000..c573ba57 --- /dev/null +++ b/package/argparse/argparse.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 ea30d0643586a20aeb6349ca8cb7db63aefc21d9aa007c7b7168a7c564817879 argparse-0.7.1-1.src.rock +sha256 9a918f21485b2a4529c901491d9101392f03586d65ad5b024a4445ebc1dc37b4 argparse-0.7.1/LICENSE diff --git a/package/argparse/argparse.mk b/package/argparse/argparse.mk new file mode 100644 index 00000000..d719e67d --- /dev/null +++ b/package/argparse/argparse.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# argparse +# +################################################################################ + +ARGPARSE_VERSION = 0.7.1-1 +ARGPARSE_LICENSE = MIT +ARGPARSE_LICENSE_FILES = $(ARGPARSE_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/package/argus/Config.in b/package/argus/Config.in new file mode 100644 index 00000000..7a7d2b65 --- /dev/null +++ b/package/argus/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_ARGUS + bool "argus" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + help + A Real Time Flow Monitor-based audit engine. + + http://qosient.com/argus/ + +comment "argus needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/package/argus/argus.hash b/package/argus/argus.hash new file mode 100644 index 00000000..26355c59 --- /dev/null +++ b/package/argus/argus.hash @@ -0,0 +1,6 @@ +# From http://qosient.com/argus/src/argus-3.0.8.2.tar.gz.md5 +md5 eaf5f5ec66569e556392802a70ef9ca5 argus-3.0.8.2.tar.gz + +# Locally computed +sha256 ca4e3bd5b9d4a8ff7c01cc96d1bffd46dbd6321237ec94c52f8badd51032eeff argus-3.0.8.2.tar.gz +sha256 c68221f7207486bfce863fada4ba9b2aaf4adc9e1c672f965ae98e88143e5f16 README diff --git a/package/argus/argus.mk b/package/argus/argus.mk new file mode 100644 index 00000000..0441df49 --- /dev/null +++ b/package/argus/argus.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# argus +# +################################################################################ + +ARGUS_VERSION = 3.0.8.2 +ARGUS_SITE = http://qosient.com/argus/src +ARGUS_DEPENDENCIES = libpcap +ARGUS_CONF_ENV = arg_cv_sys_errlist=yes +# Code is really v2+ though COPYING is v3 so ship README to avoid confusion +ARGUS_LICENSE = GPL-2.0+ +ARGUS_LICENSE_FILES = README + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +ARGUS_DEPENDENCIES += libtirpc host-pkgconf +ARGUS_CONF_ENV += \ + CFLAGS="$(TARGET_CFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`" \ + LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`" +endif + +$(eval $(autotools-package)) diff --git a/package/arm-gnu-toolchain/arm-gnu-toolchain.hash b/package/arm-gnu-toolchain/arm-gnu-toolchain.hash new file mode 100644 index 00000000..0800fa21 --- /dev/null +++ b/package/arm-gnu-toolchain/arm-gnu-toolchain.hash @@ -0,0 +1,2 @@ +# taken from https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-eabi.tar.xz.sha256asc +sha256 6cd1bbc1d9ae57312bcd169ae283153a9572bd6a8e4eeae2fedfbc33b115fdbb arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-eabi.tar.xz diff --git a/package/arm-gnu-toolchain/arm-gnu-toolchain.mk b/package/arm-gnu-toolchain/arm-gnu-toolchain.mk new file mode 100644 index 00000000..03bb4dc5 --- /dev/null +++ b/package/arm-gnu-toolchain/arm-gnu-toolchain.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# arm-gnu-toolchain +# +################################################################################ + +ARM_GNU_TOOLCHAIN_VERSION = 13.2.rel1 +ARM_GNU_TOOLCHAIN_SITE = https://developer.arm.com/-/media/Files/downloads/gnu/$(ARM_GNU_TOOLCHAIN_VERSION)/binrel +ARM_GNU_TOOLCHAIN_SOURCE = arm-gnu-toolchain-$(ARM_GNU_TOOLCHAIN_VERSION)-x86_64-arm-none-eabi.tar.xz +ARM_GNU_TOOLCHAIN_LICENSE = GPL-3.0+ + +HOST_ARM_GNU_TOOLCHAIN_INSTALL_DIR = $(HOST_DIR)/opt/gcc-arm-none-eabi + +define HOST_ARM_GNU_TOOLCHAIN_INSTALL_CMDS + rm -rf $(HOST_ARM_GNU_TOOLCHAIN_INSTALL_DIR) + mkdir -p $(HOST_ARM_GNU_TOOLCHAIN_INSTALL_DIR) + cp -rf $(@D)/* $(HOST_ARM_GNU_TOOLCHAIN_INSTALL_DIR)/ + + mkdir -p $(HOST_DIR)/bin + cd $(HOST_DIR)/bin && \ + for i in ../opt/gcc-arm-none-eabi/bin/*; do \ + ln -sf $$i; \ + done +endef + +$(eval $(host-generic-package)) diff --git a/package/armadillo/Config.in b/package/armadillo/Config.in new file mode 100644 index 00000000..7aed4fd0 --- /dev/null +++ b/package/armadillo/Config.in @@ -0,0 +1,38 @@ +comment "armadillo needs a toolchain w/ C++" + depends on BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP + +comment "armadillo needs a toolchain w/ fortran, C++" + depends on !BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS # otherwise, see comment above + depends on BR2_PACKAGE_LAPACK_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_FORTRAN || !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_ARMADILLO + bool "armadillo" + depends on BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS || \ + (BR2_PACKAGE_LAPACK_ARCH_SUPPORTS && BR2_TOOLCHAIN_HAS_FORTRAN) + depends on BR2_INSTALL_LIBSTDCPP + help + Armadillo: An Open Source C++ Linear Algebra Library for + Fast Prototyping and Computationally Intensive Experiments. + + http://arma.sourceforge.net/ + +if BR2_PACKAGE_ARMADILLO + +choice + prompt "BLAS implementation" + +config BR2_PACKAGE_ARMADILLO_OPENBLAS + bool "openblas" + depends on BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS + select BR2_PACKAGE_OPENBLAS + +config BR2_PACKAGE_ARMADILLO_LAPACK + bool "lapack" + depends on BR2_PACKAGE_LAPACK_ARCH_SUPPORTS && BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_PACKAGE_LAPACK + +endchoice + +endif diff --git a/package/armadillo/armadillo.hash b/package/armadillo/armadillo.hash new file mode 100644 index 00000000..9b19b8c8 --- /dev/null +++ b/package/armadillo/armadillo.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 d78658c9442addf7f718eb05881150ee3ec25604d06dd3af4942422b3ce26d05 armadillo-9.900.2.tar.xz.RETIRED +# License files, locally calculated +sha256 3ddf9be5c28fe27dad143a5dc76eea25222ad1dd68934a047064e56ed2fa40c5 LICENSE.txt diff --git a/package/armadillo/armadillo.mk b/package/armadillo/armadillo.mk new file mode 100644 index 00000000..81684a44 --- /dev/null +++ b/package/armadillo/armadillo.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# armadillo +# +################################################################################ + +ARMADILLO_VERSION = 9.900.2 +ARMADILLO_SOURCE = armadillo-$(ARMADILLO_VERSION).tar.xz.RETIRED +ARMADILLO_SITE = https://sourceforge.net/projects/arma/files/retired +ARMADILLO_INSTALL_STAGING = YES +ARMADILLO_LICENSE = Apache-2.0 +ARMADILLO_LICENSE_FILES = LICENSE.txt + +ARMADILLO_CONF_OPTS = -DDETECT_HDF5=false + +# blas support may be provided by lapack (libblas.a) or openblas (libopenblas.a) +ARMADILLO_CONF_OPTS += -DBLAS_FOUND=ON +ifeq ($(BR2_PACKAGE_ARMADILLO_OPENBLAS),y) +ARMADILLO_CONF_OPTS += -DBLAS_LIBRARIES=-lopenblas +ARMADILLO_DEPENDENCIES += openblas +else +# Since BR2_PACKAGE_LAPACK is selected in this case, the dependency on it is +# added below. +ARMADILLO_CONF_OPTS += -DBLAS_LIBRARIES=-lblas +endif + +# lapack support is optional and can only be provided by lapack, not openblas +ifeq ($(BR2_PACKAGE_LAPACK),y) +ARMADILLO_CONF_OPTS += -DLAPACK_FOUND=ON +ARMADILLO_DEPENDENCIES += lapack +endif + +define ARMADILLO_EXTRACT_CMDS + $(TAR) --strip-components=1 -C $(@D) $(TAR_OPTIONS) $($(PKG)_DL_DIR)/$(ARMADILLO_SOURCE) +endef + +$(eval $(cmake-package)) diff --git a/package/armbian-firmware/Config.in b/package/armbian-firmware/Config.in new file mode 100644 index 00000000..7fb654b6 --- /dev/null +++ b/package/armbian-firmware/Config.in @@ -0,0 +1,36 @@ +config BR2_PACKAGE_ARMBIAN_FIRMWARE + bool "armbian-firmware" + help + This package enables access to various firmware + blobs from the Armbian firmware repository. + + https://github.com/armbian/firmware + +if BR2_PACKAGE_ARMBIAN_FIRMWARE + +config BR2_PACKAGE_ARMBIAN_FIRMWARE_AP6212 + bool "AP6212 WiFi/BT" + help + Firmware files for AP6212 WiFi/BT combo chip. + +config BR2_PACKAGE_ARMBIAN_FIRMWARE_AP6256 + bool "AP6256 WiFi/BT" + help + Firmware files for AP6256 WiFi/BT combo chip. + +config BR2_PACKAGE_ARMBIAN_FIRMWARE_AP6255 + bool "AP6255 WiFi/BT" + help + Firmware files for AP6255 WiFi/BT combo chip. + +config BR2_PACKAGE_ARMBIAN_FIRMWARE_RTL8822CS + bool "Realtek 8822CS SDIO WiFi/BT" + help + Firmware files for Realtek 8822CS SDIO combo chip. + +config BR2_PACKAGE_ARMBIAN_FIRMWARE_XR819 + bool "XR819 WiFi" + help + Firmware files for XR819 WiFi SDIO chip. + +endif diff --git a/package/armbian-firmware/armbian-firmware.hash b/package/armbian-firmware/armbian-firmware.hash new file mode 100644 index 00000000..24f35d91 --- /dev/null +++ b/package/armbian-firmware/armbian-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c3a2a6e801844402100e71e61960684e8cb93e085187451953300b9783832f43 armbian-firmware-5d685ad233b4dfd03a4d025fa0061f6b0f850cb3-git4.tar.gz diff --git a/package/armbian-firmware/armbian-firmware.mk b/package/armbian-firmware/armbian-firmware.mk new file mode 100644 index 00000000..5d945548 --- /dev/null +++ b/package/armbian-firmware/armbian-firmware.mk @@ -0,0 +1,84 @@ +################################################################################ +# +# armbian-firmware +# +################################################################################ + +ARMBIAN_FIRMWARE_VERSION = 5d685ad233b4dfd03a4d025fa0061f6b0f850cb3 +ARMBIAN_FIRMWARE_SITE = https://github.com/armbian/firmware +ARMBIAN_FIRMWARE_SITE_METHOD = git + +# AP6212 WiFi/BT combo firmware +ifeq ($(BR2_PACKAGE_ARMBIAN_FIRMWARE_AP6212),y) +ARMBIAN_FIRMWARE_DIRS += ap6212 +endif + +# AP6256 WiFi/BT combo firmware +ifeq ($(BR2_PACKAGE_ARMBIAN_FIRMWARE_AP6256),y) +ARMBIAN_FIRMWARE_FILES += \ + brcm/BCM4345C5.hcd \ + brcm/brcmfmac43456-sdio.bin \ + brcm/brcmfmac43456-sdio.txt +endif + +# AP6255 WiFi/BT combo firmware +ifeq ($(BR2_PACKAGE_ARMBIAN_FIRMWARE_AP6255),y) +ARMBIAN_FIRMWARE_FILES += \ + BCM4345C0.hcd \ + fw_bcm43455c0_ag.bin \ + fw_bcm43455c0_ag_apsta.bin \ + fw_bcm43455c0_ag_p2p.bin \ + nvram_ap6255.txt \ + brcm/brcmfmac43455-sdio.bin \ + brcm/brcmfmac43455-sdio.clm_blob \ + brcm/brcmfmac43455-sdio.txt \ + brcm/config.txt +endif + +# Realtek 8822CS SDIO WiFi/BT combo firmware +ifeq ($(BR2_PACKAGE_ARMBIAN_FIRMWARE_RTL8822CS),y) +ARMBIAN_FIRMWARE_FILES += \ + rtlbt/rtl8822cs_config \ + rtlbt/rtl8822cs_fw \ + rtl_bt/rtl8822cs_config.bin \ + rtl_bt/rtl8822cs_fw.bin +endif + +# XR819 WiFi firmware +ifeq ($(BR2_PACKAGE_ARMBIAN_FIRMWARE_XR819),y) +ARMBIAN_FIRMWARE_FILES += \ + xr819/boot_xr819.bin \ + xr819/fw_xr819.bin \ + xr819/sdd_xr819.bin +endif + +ifneq ($(ARMBIAN_FIRMWARE_FILES),) +define ARMBIAN_FIRMWARE_INSTALL_FILES + cd $(@D) && \ + $(TAR) cf install.tar $(sort $(ARMBIAN_FIRMWARE_FILES)) && \ + $(TAR) xf install.tar -C $(TARGET_DIR)/lib/firmware +endef +endif + +ifneq ($(ARMBIAN_FIRMWARE_DIRS),) +# We need to rm -rf the destination directory to avoid copying +# into it in itself, should we re-install the package. +define ARMBIAN_FIRMWARE_INSTALL_DIRS + $(foreach d,$(ARMBIAN_FIRMWARE_DIRS), \ + rm -rf $(TARGET_DIR)/lib/firmware/$(d); \ + cp -a $(@D)/$(d) $(TARGET_DIR)/lib/firmware/$(d)$(sep)) +endef +endif + +ifneq ($(ARMBIAN_FIRMWARE_FILES)$(ARMBIAN_FIRMWARE_DIRS),) +ARMBIAN_FIRMWARE_LICENSE = PROPRIETARY +ARMBIAN_FIRMWARE_REDISTRIBUTE = NO +endif + +define ARMBIAN_FIRMWARE_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/lib/firmware + $(ARMBIAN_FIRMWARE_INSTALL_FILES) + $(ARMBIAN_FIRMWARE_INSTALL_DIRS) +endef + +$(eval $(generic-package)) diff --git a/package/arp-scan/Config.in b/package/arp-scan/Config.in new file mode 100644 index 00000000..cf7377d2 --- /dev/null +++ b/package/arp-scan/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_ARP_SCAN + bool "arp-scan" + select BR2_PACKAGE_LIBPCAP + help + The ARP scanner + + arp-scan is a command-line tool that uses the ARP protocol to + discover and fingerprint IP hosts on the local network. + + https://github.com/royhills/arp-scan + +if BR2_PACKAGE_ARP_SCAN + +config BR2_PACKAGE_ARP_SCAN_DATA + bool "install data (OUI)" + default y # legacy + help + Say 'y' here (the default) to install the data along the + binaries. + +endif # BR2_PACKAGE_ARP_SCAN diff --git a/package/arp-scan/arp-scan.hash b/package/arp-scan/arp-scan.hash new file mode 100644 index 00000000..3a2977f9 --- /dev/null +++ b/package/arp-scan/arp-scan.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a078fe8711ecbb8b99121c3d8be26ae7e7f339f11010ef61318be4f33394d012 arp-scan-1.10.0.tar.gz +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 COPYING diff --git a/package/arp-scan/arp-scan.mk b/package/arp-scan/arp-scan.mk new file mode 100644 index 00000000..67eb1881 --- /dev/null +++ b/package/arp-scan/arp-scan.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# arp-scan +# +################################################################################ + +ARP_SCAN_VERSION = 1.10.0 +ARP_SCAN_SITE = https://github.com/royhills/arp-scan/releases/download/$(ARP_SCAN_VERSION) +ARP_SCAN_LICENSE = GPL-3.0+ +ARP_SCAN_LICENSE_FILES = COPYING +ARP_SCAN_DEPENDENCIES = libpcap + +ifeq ($(BR2_STATIC_LIBS),y) +ARP_SCAN_CONF_OPTS += LIBS="`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`" +endif + +ARP_SCAN_CONF_ENV = pgac_cv_snprintf_long_long_int_format='%lld' + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +ARP_SCAN_DEPENDENCIES += libcap +ARP_SCAN_CONF_OPTS += --with-libcap +else +ARP_SCAN_CONF_OPTS += --without-libcap +endif + +ifeq ($(BR2_PACKAGE_ARP_SCAN_DATA),) +ARP_SCAN_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-exec +endif + +$(eval $(autotools-package)) diff --git a/package/arptables/0001-Fix-musl-build-issue.patch b/package/arptables/0001-Fix-musl-build-issue.patch new file mode 100644 index 00000000..28bfa21f --- /dev/null +++ b/package/arptables/0001-Fix-musl-build-issue.patch @@ -0,0 +1,71 @@ +From cbf84a0bc377c6a368d30571f37ebfab27784697 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Wed, 2 Dec 2015 04:57:33 +0100 +Subject: [PATCH] Fix musl build issue +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Due to clashes in the namespace between the Linux Kernel headers and the +netinet headers building arptables with the musl C library fails. + +Best advice from the musl developers is to not include both headers in a +userspace tool (see the thread on the musl mailing list [1], especially [2]). + +Since arptables only requires a few definitions from the Linux Kernel headers +we opt-out the clashing header files and define the needed definitions. + +[1] http://www.openwall.com/lists/musl/2012/10/09/1 +[2] http://www.openwall.com/lists/musl/2012/10/11/1 + +Signed-off-by: Jörg Krause +--- + extensions/arpt_CLASSIFY.c | 7 +++++++ + include/linux/netfilter_arp.h | 11 +++++++++++ + 2 files changed, 18 insertions(+) + +diff --git a/extensions/arpt_CLASSIFY.c b/extensions/arpt_CLASSIFY.c +index cb5770b..c58129f 100644 +--- a/extensions/arpt_CLASSIFY.c ++++ b/extensions/arpt_CLASSIFY.c +@@ -21,7 +21,14 @@ + #include + #include + #include ++ ++#ifdef __KERNEL__ + #include ++#else ++struct xt_classify_target_info { ++ uint32_t priority; ++}; ++#endif + + #define TC_H_MAJ_MASK (0xFFFF0000U) + #define TC_H_MIN_MASK (0x0000FFFFU) +diff --git a/include/linux/netfilter_arp.h b/include/linux/netfilter_arp.h +index 92bc6dd..2a63e82 100644 +--- a/include/linux/netfilter_arp.h ++++ b/include/linux/netfilter_arp.h +@@ -5,7 +5,18 @@ + * (C)2002 Rusty Russell IBM -- This code is GPL. + */ + ++#ifdef __KERNEL__ + #include ++#else ++/* Responses from hook functions. */ ++#define NF_DROP 0 ++#define NF_ACCEPT 1 ++#define NF_STOLEN 2 ++#define NF_QUEUE 3 ++#define NF_REPEAT 4 ++#define NF_STOP 5 ++#define NF_MAX_VERDICT NF_STOP ++#endif + + /* There is no PF_ARP. */ + #define NF_ARP 0 +-- +2.6.2 + diff --git a/package/arptables/0002-libarptc-libarptc_incl.c-fix-build-with-O0.patch b/package/arptables/0002-libarptc-libarptc_incl.c-fix-build-with-O0.patch new file mode 100644 index 00000000..29f2d714 --- /dev/null +++ b/package/arptables/0002-libarptc-libarptc_incl.c-fix-build-with-O0.patch @@ -0,0 +1,49 @@ +From 7d8285ae92253017a15282dd25f76d76eed49518 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 21 Apr 2022 13:43:23 +0200 +Subject: [PATCH] libarptc/libarptc_incl.c: fix build with -O0 + +Fix the following build failure with -O0: + +libarptc/libarptc.c:48:21: error: redefinition of 'arpt_get_target' + 48 | #define GET_TARGET arpt_get_target + | ^~~~~~~~~~~~~~~ +libarptc/libarptc_incl.c:16:1: note: in expansion of macro 'GET_TARGET' + 16 | GET_TARGET(STRUCT_ENTRY *e) + | ^~~~~~~~~~ +In file included from .//include/libarptc/libarptc.h:7, + from libarptc/libarptc.c:26: +.//include/linux/netfilter_arp/arp_tables.h:196:43: note: previous definition of 'arpt_get_target' was here + 196 | static __inline__ struct xt_entry_target *arpt_get_target(struct arpt_entry *e) + | ^~~~~~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/730dce4101e7afcee233067e2870603cd64b8a48 + +Signed-off-by: Fabrice Fontaine +--- + libarptc/libarptc_incl.c | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/libarptc/libarptc_incl.c b/libarptc/libarptc_incl.c +index c4d5de3..441f2de 100644 +--- a/libarptc/libarptc_incl.c ++++ b/libarptc/libarptc_incl.c +@@ -11,14 +11,6 @@ + /* (C)1999 Paul ``Rusty'' Russell - Placed under the GNU GPL (See + COPYING for details). */ + +-#ifndef __OPTIMIZE__ +-STRUCT_ENTRY_TARGET * +-GET_TARGET(STRUCT_ENTRY *e) +-{ +- return (void *)e + e->target_offset; +-} +-#endif +- + static int sockfd = -1; + static void *arptc_fn = NULL; + +-- +2.35.1 + diff --git a/package/arptables/Config.in b/package/arptables/Config.in new file mode 100644 index 00000000..aeb7250a --- /dev/null +++ b/package/arptables/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_ARPTABLES + bool "arptables-legacy" + depends on BR2_USE_MMU # needs fork() + help + Legacy tool to set up, maintain, and inspect the tables of ARP + rules. + + A more uptodate client of the arptables tool is provided in + the iptables package. The new tool was formerly known as + arptables-compat. + + http://git.netfilter.org/arptables diff --git a/package/arptables/arptables.hash b/package/arptables/arptables.hash new file mode 100644 index 00000000..8bc0f7fc --- /dev/null +++ b/package/arptables/arptables.hash @@ -0,0 +1,5 @@ +# From http://ftp.netfilter.org/pub/arptables/arptables-0.0.5.tar.gz.sha256sum +sha256 4f9a0656ce5c90868f551cd4deeb2d04f33899667e1fb2818b64e432fe8f629c arptables-0.0.5.tar.gz + +# Hash for license file +sha256 ebdb8ae564c952792017ec680e2edd30443642216eb9f8a3d8fa166c0cb628c1 COPYING diff --git a/package/arptables/arptables.mk b/package/arptables/arptables.mk new file mode 100644 index 00000000..320a33bb --- /dev/null +++ b/package/arptables/arptables.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# arptables +# +################################################################################ + +ARPTABLES_VERSION = 0.0.5 +ARPTABLES_SITE = http://ftp.netfilter.org/pub/arptables +ARPTABLES_LICENSE = GPL-2.0+ +ARPTABLES_LICENSE_FILES = COPYING + +define ARPTABLES_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + CC="$(TARGET_CC)" COPT_FLAGS="$(TARGET_CFLAGS)" +endef + +define ARPTABLES_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -D $(@D)/arptables-legacy \ + $(TARGET_DIR)/usr/sbin/arptables-legacy +endef + +$(eval $(generic-package)) diff --git a/package/ascii-invaders/Config.in b/package/ascii-invaders/Config.in new file mode 100644 index 00000000..f02ab749 --- /dev/null +++ b/package/ascii-invaders/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_ASCII_INVADERS + bool "ascii_invaders" + select BR2_PACKAGE_NCURSES + help + An ASCII-art game like Space Invaders using ncurses. + + https://github.com/macdice/ascii-invaders diff --git a/package/ascii-invaders/ascii-invaders.hash b/package/ascii-invaders/ascii-invaders.hash new file mode 100644 index 00000000..a95544a7 --- /dev/null +++ b/package/ascii-invaders/ascii-invaders.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha512 326708ffc2c277e04575920c58f6a267e0bf46f8d2a3dbca9b5c317fb01006d4f673ab35f92f292549cc52dbee4400a84c85478eb81b9bd7703689a705547bc7 ascii-invaders-1.0.1.tar.gz + +# Hash for license file +sha512 1e455684996d7733b2f1ccd4606d034694d16ceff6ede6125d7f1537d20dabe05976cca4cef5cbf6c31352cbd62a515fd8e34a2ffb54dae1181c1116b24c6cf7 LICENSE diff --git a/package/ascii-invaders/ascii-invaders.mk b/package/ascii-invaders/ascii-invaders.mk new file mode 100644 index 00000000..a5a25d7a --- /dev/null +++ b/package/ascii-invaders/ascii-invaders.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# ASCII-Invaders +# +################################################################################ + +ASCII_INVADERS_VERSION = 1.0.1 +ASCII_INVADERS_SITE = $(call github,macdice,ascii-invaders,v$(ASCII_INVADERS_VERSION)) +ASCII_INVADERS_DEPENDENCIES = ncurses +ASCII_INVADERS_LICENSE = GPL-2.0+ +ASCII_INVADERS_LICENSE_FILES = LICENSE + +# For compiling statically, libraries must be specified after the object file +define ASCII_INVADERS_POST_EXTRACT_FIXUP + sed -i 's/\$$(LIBS) invaders.o/invaders.o \$$(LIBS)/' $(@D)/Makefile +endef +ASCII_INVADERS_POST_EXTRACT_HOOKS += ASCII_INVADERS_POST_EXTRACT_FIXUP + +define ASCII_INVADERS_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define ASCII_INVADERS_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/ascii_invaders $(TARGET_DIR)/usr/bin/ascii_invaders +endef + +$(eval $(generic-package)) diff --git a/package/asn1c/Config.in.host b/package/asn1c/Config.in.host new file mode 100644 index 00000000..951f5f66 --- /dev/null +++ b/package/asn1c/Config.in.host @@ -0,0 +1,11 @@ +config BR2_PACKAGE_HOST_ASN1C + bool "host asn1c" + help + ASN.1 stands for Abstract Syntax Notation One and allows + to describe complex data structures independently of any + particular programming language. + + The asn1c is a free, open source compiler of ASN.1 + specifications into C source code. + + http://lionet.info/asn1c diff --git a/package/asn1c/asn1c.hash b/package/asn1c/asn1c.hash new file mode 100644 index 00000000..abc4d77e --- /dev/null +++ b/package/asn1c/asn1c.hash @@ -0,0 +1,5 @@ +# Locally computed: +sha256 8007440b647ef2dd9fb73d931c33ac11764e6afb2437dbe638bb4e5fc82386b9 asn1c-0.9.28.tar.gz + +# Hash for license files: +sha256 bcc636802a52ace2255212be15fb707084af87061b5cfd37eb84dcf6a02cc48b LICENSE diff --git a/package/asn1c/asn1c.mk b/package/asn1c/asn1c.mk new file mode 100644 index 00000000..e76a9f84 --- /dev/null +++ b/package/asn1c/asn1c.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# asn1c +# +################################################################################ + +ASN1C_VERSION = 0.9.28 +ASN1C_SITE = https://github.com/vlm/asn1c/releases/download/v$(ASN1C_VERSION) +ASN1C_LICENSE = BSD-2-Clause +ASN1C_LICENSE_FILES = LICENSE +ASN1C_CPE_ID_VALID = YES + +$(eval $(host-autotools-package)) diff --git a/package/assimp/Config.in b/package/assimp/Config.in new file mode 100644 index 00000000..4bddb359 --- /dev/null +++ b/package/assimp/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_ASSIMP + bool "assimp" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_ZLIB_FORCE_LIBZLIB + help + Open Asset Import Library (assimp) is a portable Open Source + library to import various well-known 3D model formats in a + uniform manner. The most recent version also knows how to + export 3d files and is therefore suitable as a general-purpose + 3D model converter. + + http://www.assimp.org + +comment "assimp needs a toolchain w/ C++, wchar, gcc >= 7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_7 diff --git a/package/assimp/assimp.hash b/package/assimp/assimp.hash new file mode 100644 index 00000000..79415706 --- /dev/null +++ b/package/assimp/assimp.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a07666be71afe1ad4bc008c2336b7c688aca391271188eb9108d0c6db1be53f1 assimp-5.3.1.tar.gz +sha256 147874443d242b4e2bae97036e26ec9d6b37f706174c1bd5ecfcc8c1294cef51 LICENSE diff --git a/package/assimp/assimp.mk b/package/assimp/assimp.mk new file mode 100644 index 00000000..2765cc71 --- /dev/null +++ b/package/assimp/assimp.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# assimp +# +################################################################################ + +ASSIMP_VERSION = 5.3.1 +ASSIMP_SITE = $(call github,assimp,assimp,v$(ASSIMP_VERSION)) +ASSIMP_LICENSE = BSD-3-Clause +ASSIMP_LICENSE_FILES = LICENSE +ASSIMP_CPE_ID_VENDOR = assimp +ASSIMP_DEPENDENCIES = zlib +ASSIMP_INSTALL_STAGING = YES + +# relocation truncated to fit: R_68K_GOT16O. We also need to disable +# optimizations to not run into "Error: value -43420 out of range" +# assembler issues. +ifeq ($(BR2_m68k),y) +ASSIMP_CXXFLAGS += -mxgot -O0 +endif + +# just like m68k coldfire, mips64 also has some limitations on the GOT +# size for large libraries, which can be overcome by passing +# -mxgot. Solves "relocation truncated to fit: R_MIPS_CALL16" issues. +ifeq ($(BR2_mips64)$(BR2_mips64el),y) +ASSIMP_CXXFLAGS += -mxgot +endif + +# workaround SuperH compiler failure when static linking (i.e -fPIC is +# not passed) in gcc versions 5.x or older. The -Os optimization level +# causes a "unable to find a register to spill in class +# 'GENERAL_REGS'" error. -O2 works fine. +ifeq ($(BR2_sh):$(BR2_STATIC_LIBS):$(BR2_TOOLCHAIN_GCC_AT_LEAST_6),y:y:) +ASSIMP_CXXFLAGS += -O2 +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +ASSIMP_CXXFLAGS += -O0 +endif + +ASSIMP_CONF_OPTS += -DASSIMP_BUILD_TESTS=OFF \ + -DASSIMP_WARNINGS_AS_ERRORS=OFF \ + -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) $(ASSIMP_CXXFLAGS)" + +$(eval $(cmake-package)) diff --git a/package/asterisk/0001-sounds-do-not-download-and-check-sha1s.patch b/package/asterisk/0001-sounds-do-not-download-and-check-sha1s.patch new file mode 100644 index 00000000..ce0bf2d3 --- /dev/null +++ b/package/asterisk/0001-sounds-do-not-download-and-check-sha1s.patch @@ -0,0 +1,54 @@ +From 63f685e468bef94d8938b7a9c1a18c6c00840219 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Tue, 27 Dec 2016 11:21:09 +0100 +Subject: [PATCH] sounds: do not download and check sha1s + +To validate the sound archives, the corresponding sha1s are also +downloaded from the same location, and that download is done at install +time. + +However, that poses at least two problems: + + - in Buildroot, we already have validated the downloads with the sha1s + anyway, and trying to download anything at install time is not + always possible (e.g. for off-line builds); + + - since the download scheme is not secured (plain http), a + man-in-the-middle for the sounds will also be able to MITM the + download of the sha1s, so there is absolutely no additional safety + in doing so. + +So we just do without the sha1 download and checks. + +Signed-off-by: Julien Olivain +[Julien: rebase patch on tag 20.7.0] +Signed-off-by: "Yann E. MORIN" +--- + sounds/Makefile | 10 ---------- + 1 file changed, 10 deletions(-) + +diff --git a/sounds/Makefile b/sounds/Makefile +index 288b8139a9..260434e504 100644 +--- a/sounds/Makefile ++++ b/sounds/Makefile +@@ -101,17 +101,7 @@ ifneq ($(SOUNDS_CACHE_DIR),) + if test ! -f "$$(SOUNDS_CACHE_DIR)/$$@"; then \ + (cd "$$(SOUNDS_CACHE_DIR)"; $$(DOWNLOAD) $$(SOUNDS_URL)/$$@); \ + fi; \ +- if test ! -f "$$(SOUNDS_CACHE_DIR)/$$@.sha1"; then \ +- (cd "$$(SOUNDS_CACHE_DIR)"; $$(DOWNLOAD) $$(SOUNDS_URL)/$$@.sha1); \ +- fi; \ + $$(LN) -sf "$$(SOUNDS_CACHE_DIR)/$$@" .; \ +- $$(LN) -sf "$$(SOUNDS_CACHE_DIR)/$$@.sha1" .; \ +- $$(SHA1SUM) -c --status $$@.sha1 || \ +- ( \ +- rm -f "$$(SOUNDS_CACHE_DIR)/$$@" "$$(SOUNDS_CACHE_DIR)/$$@.sha1" $$@ $$@.sha1; \ +- echo "Bad checksum: $$@" 1>&2; \ +- exit 1; \ +- ) || exit 1; \ + fi + else + $(CMD_PREFIX) \ +-- +2.45.2 + diff --git a/package/asterisk/0002-configure-fix-detection-of-libcrypt.patch b/package/asterisk/0002-configure-fix-detection-of-libcrypt.patch new file mode 100644 index 00000000..7a0de603 --- /dev/null +++ b/package/asterisk/0002-configure-fix-detection-of-libcrypt.patch @@ -0,0 +1,44 @@ +From e959097b00357a2fd5f140daf3114c2245cd6b95 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Tue, 27 Dec 2016 11:21:57 +0100 +Subject: [PATCH] configure: fix detection of libcrypt + +The crypt() function is searched in two locations: -lcrypt and the +standard C library. + +The result of the former is stored in the LIBCRYPT 'scheme' while that +of the latter is stored in the 'SYSCRYPT' scheme. + +However, the check for mandatory modules looks at the CRYPT 'scheme', +and thus concludes that crypt is missing when it was successfully found. + +Fix that by also storing the result of either check in the 'CRYPT' +scheme. + +Signed-off-by: Julien Olivain +[Julien: rebase patch on tag 20.7.0] +Signed-off-by: "Yann E. MORIN" +--- + configure.ac | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 639bcd9df3..16f4297634 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2694,10 +2694,12 @@ AC_CHECK_FUNC([crypt], [SYSCRYPT=true], [SYSCRYPT=""]) + if test "x$LIBCRYPT_LIB" != "x" ; then + CRYPT_LIB="$LIBCRYPT_LIB" + CRYPT_INCLUDE="$LIBCRYPT_INCLUDE" ++ PBX_CRYPT=1 + AC_DEFINE([HAVE_CRYPT], [1], [Define to 1 if you have the 'crypt' function.]) + elif test "x$SYSCRYPT" != "x" ; then + CRYPT_LIB="" + CRYPT_INCLUDE="" ++ PBX_CRYPT=1 + AC_DEFINE([HAVE_CRYPT], [1], [Define to 1 if you have the 'crypt' function.]) + fi + +-- +2.45.2 + diff --git a/package/asterisk/0003-build-ensure-target-directory-for-modules-exists.patch b/package/asterisk/0003-build-ensure-target-directory-for-modules-exists.patch new file mode 100644 index 00000000..3080ef99 --- /dev/null +++ b/package/asterisk/0003-build-ensure-target-directory-for-modules-exists.patch @@ -0,0 +1,34 @@ +From 93edc41d3ae60e6ee9b9bbb7cdcc592133521fa3 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Mon, 27 Nov 2017 12:52:52 +0100 +Subject: [PATCH] build: ensure target directory for modules exists + +Currently, in highly-parallel builds, it is possible that installing +modules fails because the target directory does not exist yet. + +We fix that by instructing $(INSTALL) to create the destination directory +first. + +Signed-off-by: Julien Olivain +[Julien: rebase patch on tag 20.7.0] +Signed-off-by: "Yann E. MORIN" +--- + Makefile.moddir_rules | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.moddir_rules b/Makefile.moddir_rules +index 795b32c716..7d5e5d241a 100644 +--- a/Makefile.moddir_rules ++++ b/Makefile.moddir_rules +@@ -106,7 +106,7 @@ clean:: + + install:: all + @echo "Installing modules from `basename $(CURDIR)`..." +- @for x in $(LOADABLE_MODS:%=%.so); do $(INSTALL) -m 755 $$x "$(DESTDIR)$(ASTMODDIR)" ; done ++ @for x in $(LOADABLE_MODS:%=%.so); do $(INSTALL) -D -m 755 $$x "$(DESTDIR)$(ASTMODDIR)" ; done + ifneq ($(findstring :,$(XMLSTARLET)$(BASH)),:) + @if [ -f .moduleinfo ] ; then \ + declare -A DISABLED_MODS ;\ +-- +2.45.2 + diff --git a/package/asterisk/0004-install-samples-need-the-data-files.patch b/package/asterisk/0004-install-samples-need-the-data-files.patch new file mode 100644 index 00000000..d863f637 --- /dev/null +++ b/package/asterisk/0004-install-samples-need-the-data-files.patch @@ -0,0 +1,37 @@ +From d347deb0376a3254d7cd8bbfe46dd645d1bf1061 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Fri, 1 Dec 2017 11:08:16 +0100 +Subject: [PATCH] install: samples need the data files + +When installing samples, "sample voicemail" is generated from the +already-installed sound files. + +However, when doing the install and the samples at the same time in a +parallel install, it is possible that the sound files are not already +installed at the time we try to generate the voicemail data. + +Ensure the needed dependency. + +Signed-off-by: Julien Olivain +[Julien: rebase patch on tag 20.7.0] +Signed-off-by: "Yann E. MORIN" +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 7ef73342cc..bb60f5e380 100644 +--- a/Makefile ++++ b/Makefile +@@ -819,7 +819,7 @@ adsi: + $(INSTALL) -m 644 "$$x" "$(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x`" ; \ + done + +-samples: adsi ++samples: adsi datafiles + @echo Installing other config files... + $(call INSTALL_CONFIGS,configs/samples,.sample) + $(INSTALL) -d "$(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/INBOX" +-- +2.45.2 + diff --git a/package/asterisk/Config.in b/package/asterisk/Config.in new file mode 100644 index 00000000..71c741ac --- /dev/null +++ b/package/asterisk/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_ASTERISK + bool "asterisk" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on !BR2_TOOLCHAIN_USES_MUSL + depends on BR2_USE_MMU # libedit + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR # libedit + select BR2_PACKAGE_JANSSON + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBEDIT + select BR2_PACKAGE_LIBILBC + select BR2_PACKAGE_LIBJWT + select BR2_PACKAGE_LIBPJSIP + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Asterisk is an open source framework for building + communications applications. Asterisk turns an ordinary + computer into a communications server. Asterisk powers IP PBX + systems, VoIP gateways, conference servers and other custom + solutions. It is used by small businesses, large businesses, + call centers, carriers and government agencies, worldwide. + Asterisk is free and open source. + + http://www.asterisk.org/ + +comment "asterisk needs a glibc or uClibc toolchain w/ C++, dynamic library, threads, wchar" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_USES_MUSL || !BR2_INSTALL_LIBSTDCPP \ + || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_USE_WCHAR diff --git a/package/asterisk/asterisk.hash b/package/asterisk/asterisk.hash new file mode 100644 index 00000000..9889a18c --- /dev/null +++ b/package/asterisk/asterisk.hash @@ -0,0 +1,15 @@ +# Locally computed +sha256 6bc4d982a238397bf6b3bfa523f63a75a2d9b19edd6f33f79264f2385d05bc42 asterisk-20.9.2.tar.gz + +# sha1 from: http://downloads.asterisk.org/pub/telephony/sounds/releases +# sha256 locally computed +sha1 721c512feaea102700d5bdce952fdc0bb29dc640 asterisk-core-sounds-en-gsm-1.6.1.tar.gz +sha256 d79c3d2044d41da8f363c447dfccc140be86b4fcc41b1ca5a60a80da52f24f2d asterisk-core-sounds-en-gsm-1.6.1.tar.gz +sha1 f40fd6ea03dfe8d72ada2540b2288bfdc006381d asterisk-moh-opsound-wav-2.03.tar.gz +sha256 449fb810d16502c3052fedf02f7e77b36206ac5a145f3dacf4177843a2fcb538 asterisk-moh-opsound-wav-2.03.tar.gz + +# License files, locally computed +sha256 82af40ed7f49c08685360811993d9396320842f021df828801d733e8fdc0312f COPYING +sha256 3ce4755b8da872a0de93ecdbbe2f940763cc95c9027bbf3c4a2e914fcd8bf4c6 main/sha1.c +sha256 6215e3ed73c3982a5c6701127d681ec0b9f1121ac78a28805bd93f93c3eb84c0 codecs/speex/speex_resampler.h +sha256 ea69cc96ab8a779c180a362377caeada71926897d1b55b980f04d74ba5aaa388 utils/db1-ast/include/db.h diff --git a/package/asterisk/asterisk.mk b/package/asterisk/asterisk.mk new file mode 100644 index 00000000..9d44782a --- /dev/null +++ b/package/asterisk/asterisk.mk @@ -0,0 +1,345 @@ +################################################################################ +# +# asterisk +# +################################################################################ + +ASTERISK_VERSION = 20.9.2 +# Use the github mirror: it's an official mirror maintained by Digium, and +# provides tarballs, which the main Asterisk git tree (behind Gerrit) does not. +ASTERISK_SITE = $(call github,asterisk,asterisk,$(ASTERISK_VERSION)) + +ASTERISK_SOUNDS_BASE_URL = http://downloads.asterisk.org/pub/telephony/sounds/releases +ASTERISK_EXTRA_DOWNLOADS = \ + $(ASTERISK_SOUNDS_BASE_URL)/asterisk-core-sounds-en-gsm-1.6.1.tar.gz \ + $(ASTERISK_SOUNDS_BASE_URL)/asterisk-moh-opsound-wav-2.03.tar.gz + +ASTERISK_LICENSE = GPL-2.0, BSD-3-Clause (SHA1, resample), BSD-4-Clause (db1-ast) +ASTERISK_LICENSE_FILES = \ + COPYING \ + main/sha1.c \ + codecs/speex/speex_resampler.h \ + utils/db1-ast/include/db.h + +ASTERISK_CPE_ID_VENDOR = asterisk +ASTERISK_CPE_ID_PRODUCT = open_source +ASTERISK_SELINUX_MODULES = asterisk + +# For patches 0002 and 0003 +ASTERISK_AUTORECONF = YES +ASTERISK_AUTORECONF_OPTS = -Iautoconf -Ithird-party -Ithird-party/pjproject -Ithird-party/jansson -Ithird-party/libjwt + +ASTERISK_DEPENDENCIES = \ + host-asterisk \ + host-pkgconf \ + jansson \ + libcurl \ + libedit \ + libjwt \ + libpjsip \ + libxml2 \ + sqlite \ + util-linux + +# Asterisk wants to run its menuselect tool (a highly tweaked derivative of +# kconfig), but builds it using the target tools. So we build it in the host +# variant (see below), and copy the full build tree of menuselect. +define ASTERISK_COPY_MENUSELECT + rm -rf $(@D)/menuselect + cp -a $(HOST_ASTERISK_DIR)/menuselect $(@D)/menuselect +endef +ASTERISK_PRE_CONFIGURE_HOOKS += ASTERISK_COPY_MENUSELECT + +ASTERISK_CONF_OPTS = \ + --disable-xmldoc \ + --disable-internal-poll \ + --disable-asteriskssl \ + --disable-rpath \ + --without-bfd \ + --without-cap \ + --without-cpg \ + --without-gtk2 \ + --without-gmime \ + --without-hoard \ + --without-iconv \ + --without-iksemel \ + --without-imap \ + --without-inotify \ + --without-iodbc \ + --without-jack \ + --without-uriparser \ + --without-kqueue \ + --without-libedit \ + --without-libxslt \ + --without-lua \ + --without-mysqlclient \ + --without-neon29 \ + --without-newt \ + --without-openr2 \ + --without-osptk \ + --without-postgres \ + --without-popt \ + --without-resample \ + --without-sdl \ + --without-SDL_image \ + --without-tds \ + --without-timerfd \ + --without-unbound \ + --without-unixodbc \ + --without-x11 \ + --with-crypt \ + --with-jansson \ + --with-libcurl \ + --with-ilbc \ + --with-libjwt="$(STAGING_DIR)/usr" \ + --with-libxml2 \ + --with-libedit="$(STAGING_DIR)/usr" \ + --without-pjproject-bundled \ + --with-pjproject="$(STAGING_DIR)/usr" \ + --with-sqlite3="$(STAGING_DIR)/usr" \ + --with-sounds-cache=$(ASTERISK_DL_DIR) + +# avcodec are from ffmpeg. There is virtually zero chance this could +# even work; asterisk is looking for ffmpeg/avcodec.h which has not +# been installed in this location since early 2007 (~10 years ago at +# the time of this writing). +ASTERISK_CONF_OPTS += --without-avcodec + +# asterisk is not compatible with freeswitch spandsp +ASTERISK_CONF_OPTS += --without-spandsp + +ASTERISK_CONF_ENV = \ + ac_cv_file_bridges_bridge_softmix_include_hrirs_h=true + +# Uses __atomic_fetch_add_4 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +ASTERISK_LIBS += -latomic +endif + +ifeq ($(BR2_PACKAGE_LIBYUV)$(BR2_PACKAGE_JPEG),yy) +ASTERISK_LIBS += -ljpeg +endif + +ASTERISK_CONF_ENV += LIBS="$(ASTERISK_LIBS)" + +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y) +ASTERISK_CONF_OPTS += --with-execinfo +else +ASTERISK_CONF_OPTS += --without-execinfo +endif + +ifeq ($(BR2_PACKAGE_LIBGSM),y) +ASTERISK_DEPENDENCIES += libgsm +ASTERISK_CONF_OPTS += --with-gsm +else +ASTERISK_CONF_OPTS += --without-gsm +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +ASTERISK_DEPENDENCIES += alsa-lib +ASTERISK_CONF_OPTS += --with-asound +else +ASTERISK_CONF_OPTS += --without-asound +endif + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y) +ASTERISK_DEPENDENCIES += bluez5_utils +ASTERISK_CONF_OPTS += --with-bluetooth +else +ASTERISK_CONF_OPTS += --without-bluetooth +endif + +ifeq ($(BR2_PACKAGE_LIBICAL),y) +ASTERISK_DEPENDENCIES += libical +ASTERISK_CONF_OPTS += --with-ical +else +ASTERISK_CONF_OPTS += --without-ical +endif + +ifeq ($(BR2_PACKAGE_OPENLDAP),y) +ASTERISK_DEPENDENCIES += openldap +ASTERISK_CONF_OPTS += --with-ldap +else +ASTERISK_CONF_OPTS += --without-ldap +endif + +ifeq ($(BR2_PACKAGE_NEON),y) +ASTERISK_DEPENDENCIES += neon +ASTERISK_CONF_OPTS += --with-neon +ASTERISK_CONF_ENV += \ + ac_cv_path_CONFIG_NEON=$(STAGING_DIR)/usr/bin/neon-config +else +ASTERISK_CONF_OPTS += --without-neon +endif + +ifeq ($(BR2_PACKAGE_NETSNMP),y) +ASTERISK_DEPENDENCIES += netsnmp +ASTERISK_CONF_OPTS += --with-netsnmp=$(STAGING_DIR)/usr +else +ASTERISK_CONF_OPTS += --without-netsnmp +endif + +ifeq ($(BR2_PACKAGE_LIBOGG),y) +ASTERISK_DEPENDENCIES += libogg +ASTERISK_CONF_OPTS += --with-ogg +else +ASTERISK_CONF_OPTS += --without-ogg +endif + +ifeq ($(BR2_PACKAGE_OPUS),y) +ASTERISK_DEPENDENCIES += opus +ASTERISK_CONF_OPTS += --with-opus +else +ASTERISK_CONF_OPTS += --without-opus +endif + +ifeq ($(BR2_PACKAGE_PORTAUDIO),y) +ASTERISK_DEPENDENCIES += portaudio +ASTERISK_CONF_OPTS += --with-portaudio +else +ASTERISK_CONF_OPTS += --without-portaudio +endif + +ifeq ($(BR2_PACKAGE_FREERADIUS_CLIENT),y) +ASTERISK_DEPENDENCIES += freeradius-client +ASTERISK_CONF_OPTS += --with-radius +else +ASTERISK_CONF_OPTS += --without-radius +endif + +ifeq ($(BR2_PACKAGE_DAHDI_LINUX)$(BR2_PACKAGE_DAHDI_TOOLS),yy) +ASTERISK_DEPENDENCIES += dahdi-linux dahdi-tools +ASTERISK_CONF_OPTS += --with-dahdi --with-tonezone + +ifeq ($(BR2_PACKAGE_LIBPRI),y) +ASTERISK_DEPENDENCIES += libpri +ASTERISK_CONF_OPTS += --with-pri +else +ASTERISK_CONF_OPTS += --without-pri +endif # PRI + +ifeq ($(BR2_PACKAGE_LIBSS7),y) +ASTERISK_DEPENDENCIES += libss7 +ASTERISK_CONF_OPTS += --with-ss7 +else +ASTERISK_CONF_OPTS += --without-ss7 +endif # SS7 + +else +ASTERISK_CONF_OPTS += \ + --without-dahdi --without-tonezone \ + --without-pri --without-ss7 +endif # DAHDI + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +ASTERISK_DEPENDENCIES += openssl +ASTERISK_CONF_OPTS += --with-ssl +else +ASTERISK_CONF_OPTS += --without-ssl +endif + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +# --with-crypt is unconditional, relies on the C library if present +ASTERISK_DEPENDENCIES += libxcrypt +endif + +ifeq ($(BR2_PACKAGE_SPEEX)$(BR2_PACKAGE_SPEEXDSP),yy) +ASTERISK_DEPENDENCIES += speex +ASTERISK_CONF_OPTS += --with-speex --with-speexdsp +else +ASTERISK_CONF_OPTS += --without-speex --without-speexdsp +endif + +# asterisk needs an openssl-enabled libsrtp +ifeq ($(BR2_PACKAGE_LIBSRTP)$(BR2_PACKAGE_OPENSSL),yy) +ASTERISK_DEPENDENCIES += libsrtp +ASTERISK_CONF_OPTS += --with-srtp +else +ASTERISK_CONF_OPTS += --without-srtp +endif + +ifeq ($(BR2_PACKAGE_LIBVORBIS),y) +ASTERISK_DEPENDENCIES += libvorbis +ASTERISK_CONF_OPTS += --with-vorbis +else +ASTERISK_CONF_OPTS += --without-vorbis +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +ASTERISK_DEPENDENCIES += zlib +ASTERISK_CONF_OPTS += --with-z +else +ASTERISK_CONF_OPTS += --without-z +endif + +ASTERISK_DIRS = \ + ASTVARLIBDIR="/usr/lib/asterisk" \ + ASTDATADIR="/usr/lib/asterisk" \ + ASTKEYDIR="/usr/lib/asterisk" \ + ASTDBDIR="/usr/lib/asterisk" + +ASTERISK_MAKE_OPTS = $(ASTERISK_DIRS) + +# Uses __atomic_fetch_add_4 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +ASTERISK_MAKE_OPTS += ASTLDFLAGS="-latomic" +endif + +# Remove default -O3 optimization flag +ASTERISK_MAKE_OPTS += OPTIMIZE="" + +ASTERISK_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_93847),y) +ASTERISK_CFLAGS += -O0 +endif + +ASTERISK_CONF_OPTS += CFLAGS="$(ASTERISK_CFLAGS)" + +# We want to install sample configuration files, too. +ASTERISK_INSTALL_TARGET_OPTS = \ + $(ASTERISK_DIRS) \ + DESTDIR=$(TARGET_DIR) \ + LDCONFIG=true \ + install samples + +$(eval $(autotools-package)) + +#------------------------------------------------------------------------------- +# This part deals with building the menuselect tool as a host package + +HOST_ASTERISK_DEPENDENCIES = host-pkgconf host-libxml2 host-ncurses +HOST_ASTERISK_SUBDIR = menuselect + +HOST_ASTERISK_LICENSE = GPL-2.0 +HOST_ASTERISK_LICENSE_FILES = COPYING + +# No need to autoreconf for the host variant, +# so do not inherit the target setup. +HOST_ASTERISK_AUTORECONF = NO + +HOST_ASTERISK_CONF_OPTS = \ + --without-newt \ + --without-curses \ + --with-ncurses=$(HOST_DIR) + +# Not an automake package, so does not inherit LDFLAGS et al. from +# the configure run. +HOST_ASTERISK_MAKE_ENV = $(HOST_CONFIGURE_OPTS) + +# Even though menuselect is an autotools package, it is not an automake +# package and does not have an 'install' rule, as asterisk does expect +# it to be in a sub-directory of its source tree. We do so by copying +# the full menuselect build tree as a pre-configure hook in the target +# variant. +# However, the sanity checks on host packages are not run on menuselect. +# But we still want to catch that menuselect has the proper rpath set, +# for example, as it uses host libraries that we do build, like +# host-libxml2. +# So we do manually install the menuselect tool. +define HOST_ASTERISK_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/menuselect/menuselect \ + $(HOST_DIR)/bin/asterisk-menuselect +endef + +$(eval $(host-autotools-package)) diff --git a/package/at-spi2-core/Config.in b/package/at-spi2-core/Config.in new file mode 100644 index 00000000..2a1b21d3 --- /dev/null +++ b/package/at-spi2-core/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_AT_SPI2_CORE + bool "at-spi2-core" + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, glib2 + depends on BR2_USE_MMU # glib2 + depends on BR2_USE_WCHAR # glib2 + depends on !BR2_STATIC_LIBS # dlopen() + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_XLIB_LIBXTST if BR2_PACKAGE_XORG7 # optionally for X11 + help + The At-Spi2 Core package is a part of the GNOME + Accessibility Project. It provides a Service Provider + Interface for the Assistive Technologies available on the + GNOME platform and a library against which applications + can be linked. + + https://wiki.gnome.org/Accessibility + +comment "at-spi2-core needs a toolchain w/ dynamic library, wchar, threads" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/at-spi2-core/at-spi2-core.hash b/package/at-spi2-core/at-spi2-core.hash new file mode 100644 index 00000000..4257ba03 --- /dev/null +++ b/package/at-spi2-core/at-spi2-core.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/at-spi2-core/2.50/at-spi2-core-2.50.0.sha256sum +sha256 e9f5a8c8235c9dd963b2171de9120301129c677dde933955e1df618b949c4adc at-spi2-core-2.50.0.tar.xz + +# locally calculated +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/at-spi2-core/at-spi2-core.mk b/package/at-spi2-core/at-spi2-core.mk new file mode 100644 index 00000000..828280de --- /dev/null +++ b/package/at-spi2-core/at-spi2-core.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# at-spi2-core +# +################################################################################ + +AT_SPI2_CORE_VERSION_MAJOR = 2.50 +AT_SPI2_CORE_VERSION = $(AT_SPI2_CORE_VERSION_MAJOR).0 +AT_SPI2_CORE_SOURCE = at-spi2-core-$(AT_SPI2_CORE_VERSION).tar.xz +AT_SPI2_CORE_SITE = https://download.gnome.org/sources/at-spi2-core/$(AT_SPI2_CORE_VERSION_MAJOR) +AT_SPI2_CORE_LICENSE = LGPL-2.1+ +AT_SPI2_CORE_LICENSE_FILES = COPYING +AT_SPI2_CORE_INSTALL_STAGING = YES +AT_SPI2_CORE_DEPENDENCIES = host-pkgconf dbus libglib2 libxml2 \ + $(TARGET_NLS_DEPENDENCIES) +AT_SPI2_CORE_CONF_OPTS = -Ddbus_daemon=/usr/bin/dbus-daemon + +ifeq ($(BR2_PACKAGE_XORG7),y) +AT_SPI2_CORE_CONF_OPTS += -Dx11=enabled +AT_SPI2_CORE_DEPENDENCIES += xlib_libXtst +else +AT_SPI2_CORE_CONF_OPTS += -Dx11=disabled +endif + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +AT_SPI2_CORE_CONF_OPTS += -Dintrospection=enabled +AT_SPI2_CORE_DEPENDENCIES += gobject-introspection +else +AT_SPI2_CORE_CONF_OPTS += -Dintrospection=disabled +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +AT_SPI2_CORE_CONF_OPTS += -Duse_systemd=true +AT_SPI2_CORE_DEPENDENCIES += systemd +else +AT_SPI2_CORE_CONF_OPTS += -Duse_systemd=false +endif + +AT_SPI2_CORE_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) + +$(eval $(meson-package)) diff --git a/package/at/0001-Makefile.in-fix-make-install-for-non-root-don-t-stri.patch b/package/at/0001-Makefile.in-fix-make-install-for-non-root-don-t-stri.patch new file mode 100644 index 00000000..91e97383 --- /dev/null +++ b/package/at/0001-Makefile.in-fix-make-install-for-non-root-don-t-stri.patch @@ -0,0 +1,92 @@ +From 77b28c32ebfed0eb130a0acdb2acb7206f2b9530 Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Fri, 23 Jul 2021 16:47:56 +0200 +Subject: [PATCH] Makefile.in: fix make install for non-root, don't strip + +Buildroot will ensure all files are owned by root and stripped anyway +(if needed) before the rootfs is created. + +Signed-off-by: Peter Korsgaard +Signed-off-by: Vicente Olivert Riera +[Vincent: tweak the patch for the new version] +Signed-off-by: Giulio Benetti +[Giulio: convert patch to git format and rebase to version 3.2.2 and +3.2.4] +--- + Makefile.in | 47 +++++++++++++++++++++++------------------------ + 1 file changed, 23 insertions(+), 24 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 4ae194f..af82e4c 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -102,43 +102,42 @@ atrun: atrun.in + $(CC) -c $(CFLAGS) $(DEFS) $*.c + + install: all +- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(etcdir) +- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(bindir) +- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(sbindir) +- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(atdatadir) +- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(docdir) +- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(atdocdir) +- $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(etcdir) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(bindir) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(sbindir) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(atdatadir) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(docdir) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(atdocdir) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR) + chmod 1770 $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR) + touch $(DESTDIR)$(LFILE) + chmod 600 $(DESTDIR)$(LFILE) +- chown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(DESTDIR)$(LFILE) +- test -f $(DESTDIR)$(etcdir)/at.allow || test -f $(DESTDIR)$(etcdir)/at.deny || $(INSTALL) -o root -g $(DAEMON_GROUPNAME) -m 640 at.deny $(DESTDIR)$(etcdir)/ +- $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 6755 at $(DESTDIR)$(bindir) ++ test -f $(DESTDIR)$(etcdir)/at.allow || test -f $(DESTDIR)$(etcdir)/at.deny || $(INSTALL) -m 640 at.deny $(DESTDIR)$(etcdir)/ ++ $(INSTALL) -m 6755 at $(DESTDIR)$(bindir) + $(LN_S) -f at $(DESTDIR)$(bindir)/atq + $(LN_S) -f at $(DESTDIR)$(bindir)/atrm +- $(INSTALL) -g root -o root -m 755 batch $(DESTDIR)$(bindir) +- $(INSTALL) -g root -o root -m 755 batch-job $(DESTDIR)$(atdatadir) +- $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man1dir) +- $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man5dir) +- $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man8dir) +- $(INSTALL) -g root -o root -m 755 atd $(DESTDIR)$(sbindir) +- $(INSTALL) -g root -o root -m 755 atrun $(DESTDIR)$(sbindir) +- $(INSTALL) -g root -o root -m 644 at.1 $(DESTDIR)$(man1dir)/ ++ $(INSTALL) -m 755 batch $(DESTDIR)$(bindir) ++ $(INSTALL) -m 755 batch-job $(DESTDIR)$(atdatadir) ++ $(INSTALL) -d -m 755 $(DESTDIR)$(man1dir) ++ $(INSTALL) -d -m 755 $(DESTDIR)$(man5dir) ++ $(INSTALL) -d -m 755 $(DESTDIR)$(man8dir) ++ $(INSTALL) -m 755 atd $(DESTDIR)$(sbindir) ++ $(INSTALL) -m 755 atrun $(DESTDIR)$(sbindir) ++ $(INSTALL) -m 644 at.1 $(DESTDIR)$(man1dir)/ + cd $(DESTDIR)$(man1dir) && $(LN_S) -f at.1 atq.1 && $(LN_S) -f at.1 batch.1 && $(LN_S) -f at.1 atrm.1 +- $(INSTALL) -g root -o root -m 644 atd.8 $(DESTDIR)$(man8dir)/ ++ $(INSTALL) -m 644 atd.8 $(DESTDIR)$(man8dir)/ + sed "s,\$${exec_prefix},$(exec_prefix),g" tmpman +- $(INSTALL) -g root -o root -m 644 tmpman $(DESTDIR)$(man8dir)/atrun.8 ++ $(INSTALL) -m 644 tmpman $(DESTDIR)$(man8dir)/atrun.8 + rm -f tmpman +- $(INSTALL) -g root -o root -m 644 at.allow.5 $(DESTDIR)$(man5dir)/ ++ $(INSTALL) -m 644 at.allow.5 $(DESTDIR)$(man5dir)/ + cd $(DESTDIR)$(man5dir) && $(LN_S) -f at.allow.5 at.deny.5 +- $(INSTALL) -g root -o root -m 644 $(DOCS) $(DESTDIR)$(atdocdir) ++ $(INSTALL) -m 644 $(DOCS) $(DESTDIR)$(atdocdir) + rm -f $(DESTDIR)$(mandir)/cat1/at.1* $(DESTDIR)$(mandir)/cat1/batch.1* \ + $(DESTDIR)$(mandir)/cat1/atq.1* + rm -f $(DESTDIR)$(mandir)/cat1/atd.8* + if test x"$(systemdsystemunitdir)" != xno; then \ +- $(INSTALL) -o root -g root -m 755 -d $(DESTDIR)$(systemdsystemunitdir); \ +- $(INSTALL) -o root -g root -m 644 atd.service $(DESTDIR)$(systemdsystemunitdir); \ ++ $(INSTALL) -m 755 -d $(DESTDIR)$(systemdsystemunitdir); \ ++ $(INSTALL) -m 644 atd.service $(DESTDIR)$(systemdsystemunitdir); \ + fi + + dist: checkin $(DIST) $(LIST) Filelist.asc +-- +2.25.1 + diff --git a/package/at/Config.in b/package/at/Config.in new file mode 100644 index 00000000..cbc5be47 --- /dev/null +++ b/package/at/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_AT + bool "at" + depends on BR2_USE_MMU + help + At and batch read shell commands from standard input and + store them as jobs to be scheduled for execution in the + future. + + at - run the job at a specified time + batch - run the job when system load levels permit + + https://salsa.debian.org/debian/at diff --git a/package/at/S99at b/package/at/S99at new file mode 100644 index 00000000..f132a46c --- /dev/null +++ b/package/at/S99at @@ -0,0 +1,47 @@ +#!/bin/sh +# +# Starts at daemon +# + +umask 077 + +start() { + # Since /var/spool can be linked to /tmp (tmpfs) + # /var/spool/cron/atjobs/.SEQ created could be not available + # Check if not exists otherwise create it + if [ ! -f /var/spool/cron/atjobs/.SEQ ]; then + mkdir -p /var/spool/cron/atjobs/ + touch /var/spool/cron/atjobs/.SEQ + printf "atd: created missing .SEQ file (atjobs will be lost on reboot)\n" + fi + + printf "Starting atd: " + start-stop-daemon --start --quiet --make-pidfile --pidfile /var/run/atd.pid --background --exec /usr/sbin/atd -- -f + echo "OK" +} +stop() { + printf "Stopping atd: " + start-stop-daemon --stop --quiet --pidfile /var/run/atd.pid + echo "OK" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/package/at/at.hash b/package/at/at.hash new file mode 100644 index 00000000..be3e82f9 --- /dev/null +++ b/package/at/at.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 bb066b389d7c9bb9d84a35738032b85c30cba7d949f758192adc72c9477fd3b8 at_3.2.5.orig.tar.gz + +sha256 01dccc0975aa9ba1a9f83e7c5e04f16077353d3c72a0a759b8846ee7a5b2b616 Copyright +sha256 c38aee9e3c8c4d5d594ff548a1be05453023016d6286931f6512db215ec1fd42 COPYING diff --git a/package/at/at.mk b/package/at/at.mk new file mode 100644 index 00000000..ed38def3 --- /dev/null +++ b/package/at/at.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# at +# +################################################################################ + +AT_VERSION = 3.2.5 +AT_SOURCE = at_$(AT_VERSION).orig.tar.gz +AT_SITE = http://software.calhariz.com/at +AT_DEPENDENCIES = $(if $(BR2_PACKAGE_FLEX),flex) host-bison host-flex +AT_LICENSE = GPL-2.0+, GPL-3.0+, ISC +AT_LICENSE_FILES = Copyright COPYING + +AT_CONF_OPTS = \ + --with-jobdir=/var/spool/cron/atjobs \ + --with-atspool=/var/spool/cron/atspool \ + --with-daemon_username=root \ + --with-daemon_groupname=root \ + SENDMAIL=/usr/sbin/sendmail + +define AT_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/at/S99at $(TARGET_DIR)/etc/init.d/S99at +endef + +$(eval $(autotools-package)) diff --git a/package/atest/Config.in b/package/atest/Config.in new file mode 100644 index 00000000..647b2163 --- /dev/null +++ b/package/atest/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_ATEST + bool "atest" + depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_LIBEV + help + atest is a test software for checking ALSA Asoc drivers + concerning the proper frame generation and capture. + + https://github.com/amouiche/atest + +comment "atest needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/atest/atest.hash b/package/atest/atest.hash new file mode 100644 index 00000000..a7ade8ad --- /dev/null +++ b/package/atest/atest.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 53980d44af542cc02cbcecba1f10c8a16523aa80196fbb8fc257ff6e949344de atest-9ff52ee5d7764984e21fe40a381b41ecd2d63548.tar.gz +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING diff --git a/package/atest/atest.mk b/package/atest/atest.mk new file mode 100644 index 00000000..e9f338ac --- /dev/null +++ b/package/atest/atest.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# atest +# +################################################################################ + +ATEST_VERSION = 9ff52ee5d7764984e21fe40a381b41ecd2d63548 +ATEST_SITE = $(call github,amouiche,atest,$(ATEST_VERSION)) +ATEST_LICENSE = GPL-2.0+ +ATEST_LICENSE_FILES = COPYING +ATEST_DEPENDENCIES = host-pkgconf libev alsa-lib +# Fetched from Github, with no configure script +ATEST_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/atf/Config.in b/package/atf/Config.in new file mode 100644 index 00000000..43a5d4f2 --- /dev/null +++ b/package/atf/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_ATF + bool "atf" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fork() + help + ATF, or Automated Testing Framework, is a collection of + libraries to write test programs in C, C++ and POSIX shell. + + https://github.com/jmmv/atf + +comment "atf needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU diff --git a/package/atf/atf.hash b/package/atf/atf.hash new file mode 100644 index 00000000..5b4bbeb8 --- /dev/null +++ b/package/atf/atf.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 92bc64180135eea8fe84c91c9f894e678767764f6dbc8482021d4dde09857505 atf-0.21.tar.gz +sha256 2a15172ddf6386297734c9800c899e6e8dc16c5a03931dcf95a9ab321a24cfe4 COPYING diff --git a/package/atf/atf.mk b/package/atf/atf.mk new file mode 100644 index 00000000..9630cf1a --- /dev/null +++ b/package/atf/atf.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# atf +# +################################################################################ + +ATF_VERSION = 0.21 +ATF_SITE = https://github.com/jmmv/atf/releases/download/atf-$(ATF_VERSION) +ATF_INSTALL_STAGING = YES +ATF_LICENSE = BSD-2-Clause, BSD-3-Clause +ATF_LICENSE_FILES = COPYING +# Ships a beta libtool version hence our patch doesn't apply. +ATF_AUTORECONF = YES +# Do not install precompiled tests. +ATF_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-exec + +# ATF_SHELL defaults to the host's bash +ATF_CONF_ENV = \ + kyua_cv_getopt_plus=yes \ + kyua_cv_attribute_noreturn=yes \ + kyua_cv_getcwd_works=yes \ + ATF_SHELL=/bin/sh + +$(eval $(autotools-package)) diff --git a/package/atftp/0001-tftpd_pcre.c-fix-build-with-pcre2-10.43.patch b/package/atftp/0001-tftpd_pcre.c-fix-build-with-pcre2-10.43.patch new file mode 100644 index 00000000..b5d10973 --- /dev/null +++ b/package/atftp/0001-tftpd_pcre.c-fix-build-with-pcre2-10.43.patch @@ -0,0 +1,45 @@ +From e75d656e1e3465dea1fdf605cb8fe7e25286bdd3 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 12 May 2024 18:29:09 +0200 +Subject: [PATCH] tftpd_pcre.c: fix build with pcre2 >= 10.43 + +Fix the following build failure raised since pcre2 >= 10.43 and +https://github.com/PCRE2Project/pcre2/commit/014c82d7bcc2873cdb1f3abc5e5348587f477ba4: + +tftpd_pcre.c: In function 'tftpd_pcre_open': +tftpd_pcre.c:109:37: error: passing argument 1 of 'pcre2_substring_list_free_8' from incompatible pointer type [-Wincompatible-pointer-types] + 109 | pcre2_substring_list_free((const PCRE2_UCHAR **)substrlist); + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + | | + | const PCRE2_UCHAR8 ** {aka const unsigned char **} +In file included from tftpd_pcre.h:24, + from tftpd_pcre.c:35: +/home/autobuild/autobuild/instance-10/output-1/host/powerpc64le-buildroot-linux-gnu/sysroot/usr/include/pcre2.h:949:1: note: expected 'PCRE2_UCHAR8 **' {aka 'unsigned char **'} but argument is of type 'const PCRE2_UCHAR8 **' {aka 'const unsigned char **'} + 949 | PCRE2_TYPES_STRUCTURES_AND_FUNCTIONS + | ^ + +Fixes: + - http://autobuild.buildroot.org/results/46565c834a8162a651944885104027610a65f9c3 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/madmartin/atftp/pull/1 +--- + tftpd_pcre.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tftpd_pcre.c b/tftpd_pcre.c +index 24b2770..7b3d0e3 100644 +--- a/tftpd_pcre.c ++++ b/tftpd_pcre.c +@@ -106,7 +106,7 @@ tftpd_pcre_self_t *tftpd_pcre_open(char *filename) + logger(LOG_DEBUG,"file: %s line: %d substring: %d value: %s", + filename, linecount, subnum, substrlist[subnum]); + } +- pcre2_substring_list_free((const PCRE2_UCHAR **)substrlist); ++ pcre2_substring_list_free(substrlist); + + if (matches != 3) + { +-- +2.43.0 + diff --git a/package/atftp/Config.in b/package/atftp/Config.in new file mode 100644 index 00000000..70747163 --- /dev/null +++ b/package/atftp/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_ATFTP + bool "atftp" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + atftp is a client/server implementation of the TFTP + protocol that implements RFCs 1350, 2090, 2347, 2348, + and 2349. The server is multi-threaded and the client + presents a friendly interface using libreadline + (if enabled). + + http://sourceforge.net/projects/atftp/ + +comment "atftp needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/atftp/S80atftpd b/package/atftp/S80atftpd new file mode 100644 index 00000000..523251b7 --- /dev/null +++ b/package/atftp/S80atftpd @@ -0,0 +1,50 @@ +#!/bin/sh + +DAEMON="atftpd" +PIDFILE="/var/run/$DAEMON.pid" +ATFTPD_ARGS="--user root.root /tftpboot" + +# shellcheck disable=SC1090 +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -p "$PIDFILE" -x "/usr/sbin/$DAEMON" -- \ + --daemon --pidfile="$PIDFILE" $ATFTPD_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" -x "/usr/sbin/$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +case "$1" in +start) + start + ;; +stop) + stop + ;; +restart|reload) + stop + start + ;; +*) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/package/atftp/atftp.hash b/package/atftp/atftp.hash new file mode 100644 index 00000000..b335456f --- /dev/null +++ b/package/atftp/atftp.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 df2aa089c7670f9eab40e5598e5d2cb6a582dc5182926ea50b4d690e4e37f316 atftp-0.8.0.tar.gz +sha256 86dc744860e6dfacfeba2f33fea908db03fe67c7e37a878285b7aae8e4596735 LICENSE diff --git a/package/atftp/atftp.mk b/package/atftp/atftp.mk new file mode 100644 index 00000000..c71a70cd --- /dev/null +++ b/package/atftp/atftp.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# atftp +# +################################################################################ + +ATFTP_VERSION = 0.8.0 +ATFTP_SITE = http://sourceforge.net/projects/atftp/files +ATFTP_LICENSE = GPL-2.0+ +ATFTP_LICENSE_FILES = LICENSE +ATFTP_CPE_ID_VALID = YES +ATFTP_SELINUX_MODULES = tftp +# No configure in tarball +ATFTP_AUTORECONF = YES +ATFTP_CONF_OPTS = --disable-libwrap --disable-mtftp +# For static we need to explicitly link against libpthread +ATFTP_LIBS = -lpthread +# -fgnu89-inline is needed to avoid multiple definition error with gcc 5. See +# https://gcc.gnu.org/gcc-5/porting_to.html. +ATFTP_CONF_ENV = LIBS="$(ATFTP_LIBS)" \ + CFLAGS="$(TARGET_CFLAGS) -fgnu89-inline" + +ifeq ($(BR2_PACKAGE_READLINE),y) +ATFTP_DEPENDENCIES += readline +ATFTP_CONF_OPTS += --enable-libreadline +# For static, readline links with ncurses +ATFTP_LIBS += -lncurses +else +ATFTP_CONF_OPTS += --disable-libreadline +endif + +ifeq ($(BR2_PACKAGE_PCRE2),y) +ATFTP_DEPENDENCIES += pcre2 +ATFTP_CONF_OPTS += --enable-libpcre +else +ATFTP_CONF_OPTS += --disable-libpcre +endif + +define ATFTP_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/atftp/S80atftpd \ + $(TARGET_DIR)/etc/init.d/S80atftpd +endef + +$(eval $(autotools-package)) diff --git a/package/atkmm/Config.in b/package/atkmm/Config.in new file mode 100644 index 00000000..571d7e69 --- /dev/null +++ b/package/atkmm/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_ATKMM + bool "atkmm (latest)" + depends on BR2_INSTALL_LIBSTDCPP # glibmm + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # libsigc + depends on BR2_TOOLCHAIN_HAS_THREADS # at-spi2-core/glibmm -> libglib2 + depends on BR2_USE_MMU # at-spi2-core/glibmm -> libglib2 + depends on BR2_USE_WCHAR # at-spi2-core/glibmm -> libglib2 + select BR2_PACKAGE_AT_SPI2_CORE + select BR2_PACKAGE_GLIBMM + select BR2_PACKAGE_LIBSIGC + + help + The atkmm package is a set of C++ bindings for Atk. + + http://www.gtkmm.org/ + +comment "atkmm needs a toolchain w/ C++, wchar, threads, gcc >= 7" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || !BR2_USE_WCHAR \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/atkmm/atkmm.hash b/package/atkmm/atkmm.hash new file mode 100644 index 00000000..08cf86b3 --- /dev/null +++ b/package/atkmm/atkmm.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/atkmm/2.36/atkmm-2.36.2.sha256sum +sha256 6f62dd99f746985e573605937577ccfc944368f606a71ca46342d70e1cdae079 atkmm-2.36.2.tar.xz +# locally computed +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING.tools diff --git a/package/atkmm/atkmm.mk b/package/atkmm/atkmm.mk new file mode 100644 index 00000000..ec63d8ec --- /dev/null +++ b/package/atkmm/atkmm.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# atkmm +# +################################################################################ + +ATKMM_VERSION_MAJOR = 2.36 +ATKMM_VERSION = $(ATKMM_VERSION_MAJOR).2 +ATKMM_SOURCE = atkmm-$(ATKMM_VERSION).tar.xz +ATKMM_SITE = https://download.gnome.org/sources/atkmm/$(ATKMM_VERSION_MAJOR) +ATKMM_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (tools) +ATKMM_LICENSE_FILES = COPYING COPYING.tools +ATKMM_INSTALL_STAGING = YES +ATKMM_DEPENDENCIES = at-spi2-core glibmm libsigc host-pkgconf + +$(eval $(meson-package)) diff --git a/package/atkmm2_28/Config.in b/package/atkmm2_28/Config.in new file mode 100644 index 00000000..e88073b8 --- /dev/null +++ b/package/atkmm2_28/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_ATKMM2_28 + bool "atkmm (2.28.x)" + depends on BR2_INSTALL_LIBSTDCPP # glibmm + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS # at-spi2-core/glibmm -> libglib2 + depends on BR2_USE_MMU # at-spi2-core/glibmm -> libglib2 + depends on BR2_USE_WCHAR # at-spi2-core/glibmm -> libglib2 + select BR2_PACKAGE_AT_SPI2_CORE + select BR2_PACKAGE_GLIBMM2_66 + select BR2_PACKAGE_LIBSIGC2 + + help + The atkmm package is a set of C++ bindings for Atk. + + This is the last version before the API and ABI change + introduced in 2.36.0 which requires C++17. + + http://www.gtkmm.org/ + +comment "atkmm (2.28.x) needs a toolchain w/ C++, wchar, threads, gcc >= 4.9" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_USE_WCHAR \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/atkmm2_28/atkmm2_28.hash b/package/atkmm2_28/atkmm2_28.hash new file mode 100644 index 00000000..776c9851 --- /dev/null +++ b/package/atkmm2_28/atkmm2_28.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/atkmm/2.28/atkmm-2.28.3.sha256sum +sha256 7c2088b486a909be8da2b18304e56c5f90884d1343c8da7367ea5cd3258b9969 atkmm-2.28.3.tar.xz +# locally computed +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING.tools diff --git a/package/atkmm2_28/atkmm2_28.mk b/package/atkmm2_28/atkmm2_28.mk new file mode 100644 index 00000000..b56da61e --- /dev/null +++ b/package/atkmm2_28/atkmm2_28.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# atkmm2_28 +# +################################################################################ + +ATKMM2_28_VERSION_MAJOR = 2.28 +ATKMM2_28_VERSION = $(ATKMM2_28_VERSION_MAJOR).3 +ATKMM2_28_SOURCE = atkmm-$(ATKMM2_28_VERSION).tar.xz +ATKMM2_28_SITE = https://download.gnome.org/sources/atkmm/$(ATKMM2_28_VERSION_MAJOR) +ATKMM2_28_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (tools) +ATKMM2_28_LICENSE_FILES = COPYING COPYING.tools +ATKMM2_28_INSTALL_STAGING = YES +ATKMM2_28_DEPENDENCIES = at-spi2-core glibmm2_66 libsigc2 host-pkgconf + +$(eval $(meson-package)) diff --git a/package/atop/0001-Makefile-allow-the-user-to-pass-additional-CFLAGS-an.patch b/package/atop/0001-Makefile-allow-the-user-to-pass-additional-CFLAGS-an.patch new file mode 100644 index 00000000..0fc8f142 --- /dev/null +++ b/package/atop/0001-Makefile-allow-the-user-to-pass-additional-CFLAGS-an.patch @@ -0,0 +1,32 @@ +From c8e9d2b885deca065bd7955019a6aa071974042d Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 5 Aug 2024 23:38:08 +0200 +Subject: [PATCH] Makefile: allow the user to pass additional CFLAGS and + LDFLAGS + +This is needed for some build systems. For example, Buildroot needs to +disable optimizations on some CPU architectures. + +Upstream: https://github.com/Atoptool/atop/pull/314 +[Waldemar: rebase on top of 2.11.0] +Signed-off-by: Waldemar Brodkorb +Signed-off-by: Thomas Petazzoni +--- + Makefile | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index 3a63f69..ab44eaa 100644 +--- a/Makefile ++++ b/Makefile +@@ -21,8 +21,8 @@ PMPATH2 = /usr/lib64/pm-utils/sleep.d + PMPATHD = /usr/lib/systemd/system-sleep + + PKG_CONFIG ?= pkg-config +-CFLAGS += -O2 -I. -Wall $(shell $(PKG_CONFIG) --cflags glib-2.0) -Wno-stringop-truncation -Wmissing-prototypes -Wmissing-declarations -Wformat-security # -DNOPERFEVENT # -DHTTPSTATS +-LDFLAGS += $(shell $(PKG_CONFIG) --libs glib-2.0) ++override CFLAGS += -O2 -I. -Wall $(shell $(PKG_CONFIG) --cflags glib-2.0) -Wno-stringop-truncation -Wmissing-prototypes -Wmissing-declarations -Wformat-security # -DNOPERFEVENT # -DHTTPSTATS ++override LDFLAGS += $(shell $(PKG_CONFIG) --libs glib-2.0) + OBJMOD0 = version.o + OBJMOD1 = various.o deviate.o procdbase.o + OBJMOD2 = acctproc.o photoproc.o photosyst.o cgroups.o rawlog.o ifprop.o parseable.o diff --git a/package/atop/Config.in b/package/atop/Config.in new file mode 100644 index 00000000..6e9e209f --- /dev/null +++ b/package/atop/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_ATOP + bool "atop" + depends on BR2_USE_MMU # fork(), libglib2 + depends on BR2_USE_WCHAR # ncurses wchar, libglib2 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 # PERF_FLAG_FD_CLOEXEC + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_NCURSES_WCHAR + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_LIBGLIB2 + help + Atop is an ASCII full-screen performance monitor for Linux + that is capable of reporting the activity of all processes + (even if processes have finished during the interval), daily + logging of system and process activity for long-term analysis, + highlighting overloaded system resources by using colors, etc. + At regular intervals, it shows system-level activity related + to the CPU, memory, swap, disks (including LVM) and network + layers, and for every process (and thread) it shows e.g. the + CPU utilization, memory growth, disk utilization, priority, + username, state, and exit code. + + http://www.atoptool.nl + +comment "atop needs a toolchain w/ wchar, headers >= 3.14, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 || \ + !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/atop/atop.hash b/package/atop/atop.hash new file mode 100644 index 00000000..8774fb57 --- /dev/null +++ b/package/atop/atop.hash @@ -0,0 +1,5 @@ +# Locally computed: +sha256 9b94c666602efff7bf402ecce706c347f38c39cb63498f9d39626861e5646e20 atop-2.11.0.tar.gz + +# Hash for license file: +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING diff --git a/package/atop/atop.mk b/package/atop/atop.mk new file mode 100644 index 00000000..f7dfed5e --- /dev/null +++ b/package/atop/atop.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# atop +# +################################################################################ + +ATOP_VERSION = 2.11.0 +ATOP_SITE = http://www.atoptool.nl/download +ATOP_LICENSE = GPL-2.0+ +ATOP_LICENSE_FILES = COPYING +ATOP_CPE_ID_VALID = YES +ATOP_DEPENDENCIES = ncurses zlib libglib2 host-pkgconf + +ATOP_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +ATOP_CFLAGS += -O0 +endif + +define ATOP_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) CFLAGS="$(ATOP_CFLAGS)" \ + -C $(@D) +endef + +define ATOP_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/atop $(TARGET_DIR)/usr/bin/atop +endef + +$(eval $(generic-package)) diff --git a/package/attr/0001-build-with-older-GCCs.patch b/package/attr/0001-build-with-older-GCCs.patch new file mode 100644 index 00000000..22cfac2c --- /dev/null +++ b/package/attr/0001-build-with-older-GCCs.patch @@ -0,0 +1,87 @@ +From 3ac428794ea0f95c854166c9c0cffb0267c5e98b Mon Sep 17 00:00:00 2001 +From: Hollis Blanchard +Date: Mon, 30 Jul 2018 14:17:21 -0700 +Subject: [PATCH] Remove messages in "deprecated" gcc attributes + +GCC versions up through 4.4.7 (which is used in RHEL 6) do not accept +any argument for the deprecated attribute. GCC 4.5 and later say the +"msg" argument is optional. We don't need the messages during +Buildroot builds anyways. + +Signed-off-by: Hollis Blanchard +--- + include/attributes.h | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git a/include/attributes.h b/include/attributes.h +index 14beb8f..23c39c8 100644 +--- a/include/attributes.h ++++ b/include/attributes.h +@@ -127,10 +127,10 @@ typedef struct attr_multiop { + */ + EXPORT int attr_get (const char *__path, const char *__attrname, + char *__attrvalue, int *__valuelength, int __flags) +- __attribute__ ((deprecated ("Use getxattr or lgetxattr instead"))); ++ __attribute__ ((deprecated)); + EXPORT int attr_getf (int __fd, const char *__attrname, char *__attrvalue, + int *__valuelength, int __flags) +- __attribute__ ((deprecated ("Use fgetxattr instead"))); ++ __attribute__ ((deprecated)); + + /* + * Set the value of an attribute, creating the attribute if necessary. +@@ -139,11 +139,11 @@ EXPORT int attr_getf (int __fd, const char *__attrname, char *__attrvalue, + EXPORT int attr_set (const char *__path, const char *__attrname, + const char *__attrvalue, const int __valuelength, + int __flags) +- __attribute__ ((deprecated ("Use setxattr or lsetxattr instead"))); ++ __attribute__ ((deprecated)); + EXPORT int attr_setf (int __fd, const char *__attrname, + const char *__attrvalue, const int __valuelength, + int __flags) +- __attribute__ ((deprecated ("Use fsetxattr instead"))); ++ __attribute__ ((deprecated)); + + /* + * Remove an attribute. +@@ -151,9 +151,9 @@ EXPORT int attr_setf (int __fd, const char *__attrname, + */ + EXPORT int attr_remove (const char *__path, const char *__attrname, + int __flags) +- __attribute__ ((deprecated ("Use removexattr or lremovexattr instead"))); ++ __attribute__ ((deprecated)); + EXPORT int attr_removef (int __fd, const char *__attrname, int __flags) +- __attribute__ ((deprecated ("Use fremovexattr instead"))); ++ __attribute__ ((deprecated)); + + /* + * List the names and sizes of the values of all the attributes of an object. +@@ -164,10 +164,10 @@ EXPORT int attr_removef (int __fd, const char *__attrname, int __flags) + */ + EXPORT int attr_list(const char *__path, char *__buffer, const int __buffersize, + int __flags, attrlist_cursor_t *__cursor) +- __attribute__ ((deprecated ("Use listxattr or llistxattr instead"))); ++ __attribute__ ((deprecated)); + EXPORT int attr_listf(int __fd, char *__buffer, const int __buffersize, + int __flags, attrlist_cursor_t *__cursor) +- __attribute__ ((deprecated ("Use flistxattr instead"))); ++ __attribute__ ((deprecated)); + + /* + * Operate on multiple attributes of the same object simultaneously. +@@ -188,10 +188,10 @@ EXPORT int attr_listf(int __fd, char *__buffer, const int __buffersize, + */ + EXPORT int attr_multi (const char *__path, attr_multiop_t *__oplist, + int __count, int __flags) +- __attribute__ ((deprecated ("Use getxattr, setxattr, listxattr, removexattr instead"))); ++ __attribute__ ((deprecated)); + EXPORT int attr_multif (int __fd, attr_multiop_t *__oplist, + int __count, int __flags) +- __attribute__ ((deprecated ("Use getxattr, setxattr, listxattr, removexattr instead"))); ++ __attribute__ ((deprecated)); + + #ifdef __cplusplus + } +-- +2.13.0 + diff --git a/package/attr/0002-configure.ac-add-detection-of-symver-gcc-attribute.patch b/package/attr/0002-configure.ac-add-detection-of-symver-gcc-attribute.patch new file mode 100644 index 00000000..ee029e97 --- /dev/null +++ b/package/attr/0002-configure.ac-add-detection-of-symver-gcc-attribute.patch @@ -0,0 +1,75 @@ +From 365426c28f8bf73d34d77cc06b7d5ffeae17f13a Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 6 Feb 2024 15:33:15 +0100 +Subject: [PATCH] configure.ac: add detection of symver gcc attribute + +On non-ELF platforms, such as microblaze, builds will fail when trying +to add symver information because __attribute__((symver ..)) is not +supported even though __has_attribute(__symver__) returns true. + +Support for symver needs to be detected via a compile test since +__has_attribute can report false positives [0]. + +Add a configure compile check for __attribute__((symver ..)) to ensure +it is supported and define a variable to advertise support. + +[0] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101766#c1 + +Upstream: https://git.savannah.nongnu.org/cgit/attr.git/commit/?id=943c776089dbb24ebbfb7432ba9841f1845bf95a + +Signed-off-by: Thomas Petazzoni +[Giulio: rework local patch for #if nesting] +Signed-off-by: Giulio Benetti +--- + configure.ac | 15 +++++++++++++++ + libattr/syscalls.c | 8 ++++---- + 2 files changed, 19 insertions(+), 4 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 7e362e9..98477b5 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -57,6 +57,21 @@ AS_CASE([$host_os], + [linux*], [os_linux=yes]) + AM_CONDITIONAL([OS_LINUX], [test "x$os_linux" = "xyes"]) + ++AC_CACHE_CHECK(whether __attribute__((__symver__())) is supported, ++ gcc_cv_symver_attribute, ++ [cat > conftest.c </dev/null 2>&1; then \ ++ gcc_cv_symver_attribute=yes ++ fi ++ rm -f conftest.[cs] ++]) ++AS_IF([test $gcc_cv_symver_attribute = yes], ++ [AC_DEFINE(HAVE_SYMVER_ATTRIBUTE, [], [GCC supports symver attribute])]) ++ + AC_CONFIG_COMMANDS([include/attr], + [dnl + rm -rf include/attr +diff --git a/libattr/syscalls.c b/libattr/syscalls.c +index 907560a..7ee6d39 100644 +--- a/libattr/syscalls.c ++++ b/libattr/syscalls.c +@@ -31,10 +31,10 @@ + * prefer symver attribute if available (since gcc 10), + * fall back to traditional .symver asm directive otherwise. + */ +-#ifdef __has_attribute +-# if __has_attribute(__symver__) +-# define SYMVER(cn, vn) __typeof(cn) cn __attribute__((__symver__(vn))) +-# elif __has_attribute(__no_reorder__) ++#if defined(HAVE_SYMVER_ATTRIBUTE) ++# define SYMVER(cn, vn) __typeof(cn) cn __attribute__((__symver__(vn))) ++#elif defined(__has_attribute) ++# if __has_attribute(__no_reorder__) + /* + * Avoid wrong partitioning with older gcc and LTO. May not work reliably + * with all versions; use -flto-partition=none if you encounter problems. +-- +2.34.1 + diff --git a/package/attr/0003-tools-attr.c-Add-missing-libgen.h-include-for-basena.patch b/package/attr/0003-tools-attr.c-Add-missing-libgen.h-include-for-basena.patch new file mode 100644 index 00000000..30417725 --- /dev/null +++ b/package/attr/0003-tools-attr.c-Add-missing-libgen.h-include-for-basena.patch @@ -0,0 +1,32 @@ +From 8a80d895dfd779373363c3a4b62ecce5a549efb2 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" +Date: Sat, 30 Mar 2024 10:17:10 +0100 +Subject: [PATCH] tools/attr.c: Add missing libgen.h include for basename(3) + +Fixes compilation issue with musl and modern C99 compilers. + +See: https://bugs.gentoo.org/926294 + +Upstream: https://git.savannah.nongnu.org/cgit/attr.git/commit/?id=8a80d895dfd779373363c3a4b62ecce5a549efb2 + +Signed-off-by: Yegor Yefremov +Signed-off-by: Romain Naour +--- + tools/attr.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tools/attr.c b/tools/attr.c +index f12e4af..6a3c1e9 100644 +--- a/tools/attr.c ++++ b/tools/attr.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + + #include + +-- +2.45.0 + diff --git a/package/attr/Config.in b/package/attr/Config.in new file mode 100644 index 00000000..554772b7 --- /dev/null +++ b/package/attr/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_ATTR + bool "attr" + help + Commands for Manipulating Filesystem Extended Attributes. + This package also provides libattr. + + http://savannah.nongnu.org/projects/attr diff --git a/package/attr/attr.hash b/package/attr/attr.hash new file mode 100644 index 00000000..f63c0e31 --- /dev/null +++ b/package/attr/attr.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +sha256 f2e97b0ab7ce293681ab701915766190d607a1dba7fae8a718138150b700a70b attr-2.5.2.tar.xz + +# Locally calculated +sha256 98f318493be6b08bff3cd295791cde06c54e17882a3c74a1ed245eaa02533d52 doc/COPYING +sha256 5decad7e58d90d44335bf2f45ce27563bd911065c6a1a02dfa7647c4efee75c8 doc/COPYING.LGPL diff --git a/package/attr/attr.mk b/package/attr/attr.mk new file mode 100644 index 00000000..1d24144f --- /dev/null +++ b/package/attr/attr.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# attr +# +################################################################################ + +ATTR_VERSION = 2.5.2 +ATTR_SOURCE = attr-$(ATTR_VERSION).tar.xz +ATTR_SITE = http://download.savannah.gnu.org/releases/attr +ATTR_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries) +ATTR_LICENSE_FILES = doc/COPYING doc/COPYING.LGPL +ATTR_CPE_ID_VALID = YES + +# Flag added for patch dealing with symver in configure.ac +ATTR_AUTORECONF = YES + +ATTR_INSTALL_STAGING = YES + +ATTR_CONF_OPTS = --disable-nls + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/aubio/Config.in b/package/aubio/Config.in new file mode 100644 index 00000000..18e7c4cc --- /dev/null +++ b/package/aubio/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_AUBIO + bool "aubio" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + help + aubio is a tool designed for the extraction of annotations + from audio signals. Its features include segmenting a sound + file before each of its attacks, performing pitch detection, + tapping the beat and producing midi streams from live audio. + + Because these tasks are difficult, we thought it was important + to gather them in a dedicated library. To increase the fun, we + have made these algorithms work in a causal way, so as to be + used in real time applications with as low delay as possible. + Functions can be used offline in sound editors and software + samplers, or online in audio effects and virtual instruments. + + https://aubio.org + +comment "aubio needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/aubio/aubio.hash b/package/aubio/aubio.hash new file mode 100644 index 00000000..dff02ffa --- /dev/null +++ b/package/aubio/aubio.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 b0e20427750fbfbf017f2b54e41dc0d61ab61335b705bc056ca92a928b2bdd30 aubio-152d6819b360c2e7b379ee3f373d444ab3df0895.tar.gz +# Hash for license file: +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/aubio/aubio.mk b/package/aubio/aubio.mk new file mode 100644 index 00000000..07634e41 --- /dev/null +++ b/package/aubio/aubio.mk @@ -0,0 +1,68 @@ +################################################################################ +# +# aubio +# +################################################################################ + +AUBIO_VERSION = 152d6819b360c2e7b379ee3f373d444ab3df0895 +AUBIO_SITE = $(call github,aubio,aubio,$(AUBIO_VERSION)) +AUBIO_LICENSE = GPL-3.0+ +AUBIO_LICENSE_FILES = COPYING +AUBIO_CPE_ID_VENDOR = aubio +AUBIO_INSTALL_STAGING = YES + +AUBIO_DEPENDENCIES = host-pkgconf +AUBIO_CONF_OPTS = \ + --disable-docs \ + --disable-atlas + +# The waf script bundled in aubio 0.4.9 is too old for python3.11 +# Similar issue with Jack: +# https://github.com/jackaudio/jack2/issues/898 +AUBIO_NEEDS_EXTERNAL_WAF = YES + +# Add --notests for each build step to avoid running unit tests on the +# build machine. +AUBIO_WAF_OPTS = --notests + +ifeq ($(BR2_PACKAGE_LIBSNDFILE),y) +AUBIO_DEPENDENCIES += libsndfile +AUBIO_CONF_OPTS += --enable-sndfile +else +AUBIO_CONF_OPTS += --disable-sndfile +endif + +# Could not compile aubio in double precision mode with libsamplerate +ifeq ($(BR2_PACKAGE_LIBSAMPLERATE):$(BR2_PACKAGE_FFTW_DOUBLE),y:) +AUBIO_DEPENDENCIES += libsamplerate +AUBIO_CONF_OPTS += --enable-samplerate +else +AUBIO_CONF_OPTS += --disable-samplerate +endif + +ifeq ($(BR2_PACKAGE_JACK2),y) +AUBIO_DEPENDENCIES += jack2 +AUBIO_CONF_OPTS += --enable-jack +else +AUBIO_CONF_OPTS += --disable-jack +endif + +# fftw3 require double otherwise it will look for fftw3f +ifeq ($(BR2_PACKAGE_FFTW_DOUBLE),y) +AUBIO_CONF_OPTS += --enable-fftw3 --enable-double +AUBIO_DEPENDENCIES += fftw-double +else ifeq ($(BR2_PACKAGE_FFTW_SINGLE),y) +AUBIO_CONF_OPTS += --enable-fftw3f --disable-double +AUBIO_DEPENDENCIES += fftw-single +else +AUBIO_CONF_OPTS += --disable-fftw3 +endif + +ifeq ($(BR2_PACKAGE_FFMPEG),y) +AUBIO_DEPENDENCIES += ffmpeg +AUBIO_CONF_OPTS += --enable-avcodec +else +AUBIO_CONF_OPTS += --disable-avcodec +endif + +$(eval $(waf-package)) diff --git a/package/audit/Config.in b/package/audit/Config.in new file mode 100644 index 00000000..6e576153 --- /dev/null +++ b/package/audit/Config.in @@ -0,0 +1,24 @@ +# audit has some builtin per-architecture system call tables +config BR2_PACKAGE_AUDIT_ARCH_SUPPORTS + bool + default y if BR2_aarch64 || BR2_arm || BR2_armeb || \ + BR2_i386 || BR2_powerpc || BR2_powerpc64 || \ + BR2_x86_64 + +config BR2_PACKAGE_AUDIT + bool "audit" + depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + The audit package contains the user space utilities for + storing and searching the audit records generated by + the audit subsystem in the Linux 2.6 kernel + + Note: The z/OS remote plugin is disabled in this package + + http://people.redhat.com/sgrubb/audit/ + +comment "audit needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS diff --git a/package/audit/S02auditd b/package/audit/S02auditd new file mode 100644 index 00000000..dd3dc22d --- /dev/null +++ b/package/audit/S02auditd @@ -0,0 +1,80 @@ +#!/bin/sh +# +# auditd This starts and stops auditd +# +# description: This starts the Linux Auditing System Daemon, +# which collects security related events in a dedicated +# audit log. If this daemon is turned off, audit events +# will be sent to syslog. +# + +NAME=auditd +DAEMON=/usr/sbin/${NAME} +CONFIG=/etc/audit/auditd.conf +PIDFILE=/var/run/${NAME}.pid + +start(){ + printf "Starting ${NAME}: " + + # Create dir to store log files in if one doesn't exist. Create + # the directory with SELinux permissions if possible + command -v selabel_lookup >/dev/null 2>&1 + if [ $? = 0 ]; then + mkdir -p /var/log/audit -Z `selabel_lookup -b file -k /var/log/audit | cut -d ' ' -f 3` + else + mkdir -p /var/log/audit + fi + + # Run audit daemon executable + start-stop-daemon -S -q -p ${PIDFILE} --exec ${DAEMON} + + if [ $? = 0 ]; then + # Load the default rules + test -f /etc/audit/rules.d/audit.rules && /usr/sbin/auditctl -R /etc/audit/rules.d/audit.rules >/dev/null + echo "OK" + else + echo "FAIL" + fi +} + +stop(){ + printf "Stopping ${NAME}: " + + start-stop-daemon -K -q -p ${PIDFILE} + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +reload(){ + printf "Reloading ${NAME} configuration: " + start-stop-daemon --stop -s 1 -p ${PIDFILE} 1>/dev/null + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +rotate(){ + printf "Rotating ${NAME} logs: " + start-stop-daemon --stop -s 10 -p ${PIDFILE} 1>/dev/null + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + start + ;; + reload) + reload + ;; + rotate) + rotate + ;; + *) + echo "Usage: $0 {start|stop|restart|reload|rotate}" + exit 1 + ;; +esac diff --git a/package/audit/audit.hash b/package/audit/audit.hash new file mode 100644 index 00000000..5743b3a1 --- /dev/null +++ b/package/audit/audit.hash @@ -0,0 +1,4 @@ +#Locally computed +sha256 c0b1792d1f0a88c6f1828710509cbb987059fc68712c97669ca90eae103d287d audit-3.1.2.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING +sha256 f18a0811fa0e220ccbc42f661545e77f0388631e209585ed582a1c693029c6aa COPYING.LIB diff --git a/package/audit/audit.mk b/package/audit/audit.mk new file mode 100644 index 00000000..76828571 --- /dev/null +++ b/package/audit/audit.mk @@ -0,0 +1,76 @@ +################################################################################ +# +# audit +# +################################################################################ + +AUDIT_VERSION = 3.1.2 +AUDIT_SITE = http://people.redhat.com/sgrubb/audit +AUDIT_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries) +AUDIT_LICENSE_FILES = COPYING COPYING.LIB +AUDIT_CPE_ID_VENDOR = linux_audit_project +AUDIT_CPE_ID_PRODUCT = linux_audit + +AUDIT_INSTALL_STAGING = YES + +AUDIT_CONF_OPTS = --without-python --without-python3 --disable-zos-remote + +# src/libev has some assembly function that is not present in Thumb mode: +# Error: selected processor does not support `mcr p15,0,r3,c7,c10,5' in Thumb mode +# so, we desactivate Thumb mode +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +AUDIT_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -marm" +endif + +ifeq ($(BR2_PACKAGE_LIBCAP_NG),y) +AUDIT_DEPENDENCIES += libcap-ng +AUDIT_CONF_OPTS += --with-libcap-ng=yes +else +AUDIT_CONF_OPTS += --with-libcap-ng=no +endif + +# For i386, x86-64 and PowerPC, the system call tables are +# unconditionally included. However, for ARM(eb) and AArch64, then +# need to be explicitly enabled. + +ifeq ($(BR2_arm)$(BR2_armeb),y) +AUDIT_CONF_OPTS += --with-arm +endif +ifeq ($(BR2_aarch64),y) +AUDIT_CONF_OPTS += --with-aarch64 +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +AUDIT_CONF_OPTS += --enable-systemd +else +AUDIT_CONF_OPTS += --disable-systemd +endif + +define AUDIT_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/audit/S02auditd $(TARGET_DIR)/etc/init.d/S02auditd +endef + +define AUDIT_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/audit/audit_tmpfiles.conf \ + $(TARGET_DIR)/usr/lib/tmpfiles.d/audit.conf +endef + +define AUDIT_INSTALL_CLEANUP + $(RM) $(TARGET_DIR)/etc/rc.d/init.d/auditd + $(RM) $(TARGET_DIR)/etc/sysconfig/auditd +endef +AUDIT_POST_INSTALL_TARGET_HOOKS += AUDIT_INSTALL_CLEANUP + +define AUDIT_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_NET) + $(call KCONFIG_ENABLE_OPT,CONFIG_AUDIT) +endef + +HOST_AUDIT_CONF_OPTS = \ + --without-python \ + --without-python3 \ + --disable-zos-remote \ + --without-libcap-ng + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/audit/audit_tmpfiles.conf b/package/audit/audit_tmpfiles.conf new file mode 100644 index 00000000..6b8325b5 --- /dev/null +++ b/package/audit/audit_tmpfiles.conf @@ -0,0 +1 @@ +d /var/log/audit 0755 - - diff --git a/package/aufs-util/0001-remove-user-settings.patch b/package/aufs-util/0001-remove-user-settings.patch new file mode 100644 index 00000000..7eebc95d --- /dev/null +++ b/package/aufs-util/0001-remove-user-settings.patch @@ -0,0 +1,16 @@ +install: drop setting ownership + +Signed-off-by: "Yann E. MORIN" + +diff --git a/Makefile b/Makefile +--- a/Makefile ++++ b/Makefile +@@ -21,7 +21,7 @@ + override CPPFLAGS += -DAUFHSM_CMD=\"/usr/bin/aufhsm\" + override CFLAGS += -O -Wall + INSTALL ?= install +-Install = ${INSTALL} -o root -g root -p ++Install = ${INSTALL} -p + ManDir = /usr/share/man + + # diff --git a/package/aufs-util/0002-no-check-ver.patch b/package/aufs-util/0002-no-check-ver.patch new file mode 100644 index 00000000..5fe69207 --- /dev/null +++ b/package/aufs-util/0002-no-check-ver.patch @@ -0,0 +1,24 @@ +Makefile: do not check version + +The aufs-util package tries to ensure that its version is compatible +with the one in the running kernel. However, this test is flawed: the +version string in the aufs4x branch for aufs-util is aufs3.x, so it does +not match the version in the kernel when it is aufs4.x. + +Disengage this check, ion the assumption the user knows what he is +doing. + +Signed-off-by: "Yann E. MORIN" + +diff --git a/Makefile b/Makefile +--- a/Makefile ++++ b/Makefile +@@ -62,7 +62,7 @@ + $(foreach v, CPPFLAGS CFLAGS INSTALL Install ManDir LibUtilHdr, \ + $(eval MAKE += ${v}="$${${v}}")) + +-all: ver_test ${Man} ${Bin} ${Etc} ++all: ${Man} ${Bin} ${Etc} + ${MAKE} -C libau $@ + ln -sf ./libau/libau*.so . + $(call MakeFHSM, $@) diff --git a/package/aufs-util/0003-no-strip-lib.patch b/package/aufs-util/0003-no-strip-lib.patch new file mode 100644 index 00000000..15830503 --- /dev/null +++ b/package/aufs-util/0003-no-strip-lib.patch @@ -0,0 +1,18 @@ +install: do not strip libs when installing + +We want unstripped binaries in staging; stripping is done by Buildroot +as a whole in target-finalize if needed, anyway. + +Signed-off-by: "Yann E. MORIN" + +diff --git a/libau/Makefile b/libau/Makefile +--- a/libau/Makefile ++++ b/libau/Makefile +@@ -37,7 +37,6 @@ + ln -sf $< $@ + ${LibSo}.${LibSoMajor}: ${LibSo}.${LibSoMajor}.${LibSoMinor} + ln -sf $< $@ +-${LibSo}.${LibSoMajor}.${LibSoMinor}: override LDFLAGS += -s + ${LibSo}.${LibSoMajor}.${LibSoMinor}: override LDLIBS += -ldl -lpthread + ${LibSo}.${LibSoMajor}.${LibSoMinor}: ${LibSoObj} + ${CC} --shared -Wl,-soname,${LibSo}.${LibSoMajor} ${LDFLAGS} \ diff --git a/package/aufs-util/Config.in b/package/aufs-util/Config.in new file mode 100644 index 00000000..a426343f --- /dev/null +++ b/package/aufs-util/Config.in @@ -0,0 +1,36 @@ +comment "aufs-util needs a linux kernel and a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_LINUX_KERNEL || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_AUFS_UTIL + bool "aufs-util" + depends on BR2_USE_MMU + depends on BR2_LINUX_KERNEL + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Aufs command line utilities. + + Needs a kernel with aufs support. A kernel + extension package is available. + + http://sourceforge.net/p/aufs/aufs-util/ + +if BR2_PACKAGE_AUFS_UTIL + +config BR2_PACKAGE_AUFS_UTIL_VERSION + string "aufs-util version" + default "" + help + The version you choose must match that of the aufs support + in your kernel. Usually, this is aufs3.x for 3.x kernels and + aufs4.x for 4.x kernels. + + Usually, the sha1 of the cset you want to use; avoid using a + branch name as this yields non-reproducible builds. + + See the following resources to see what versions are + available: + + https://sourceforge.net/p/aufs/aufs-util/ci/master/tree/ + +endif diff --git a/package/aufs-util/aufs-util.mk b/package/aufs-util/aufs-util.mk new file mode 100644 index 00000000..32f3bca1 --- /dev/null +++ b/package/aufs-util/aufs-util.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# aufs-util +# +################################################################################ + +# linux-headers +AUFS_UTIL_VERSION = $(call qstrip,$(BR2_PACKAGE_AUFS_UTIL_VERSION)) +AUFS_UTIL_SITE = https://git.code.sf.net/p/aufs/aufs-util +AUFS_UTIL_SITE_METHOD = git +AUFS_UTIL_LICENSE = GPL-2.0 +AUFS_UTIL_LICENSE_FILES = COPYING + +AUFS_UTIL_DEPENDENCIES = linux + +# Building aufs-util requires access to the kernel headers of aufs, +# which are only available in the kernel build directory, which is why +# we add -I$(LINUX_DIR)/include/uapi. These headers have not been +# prepared for usage by userspace, so to workaround this we have to +# defined the "__user" macro as empty. +AUFS_UTIL_HOST_CPPFLAGS = \ + $(HOST_CPPFLAGS) \ + -I$(LINUX_DIR)/include/uapi \ + -D__user= + +AUFS_UTIL_CPPFLAGS = \ + $(TARGET_CPPFLAGS) \ + -I$(LINUX_DIR)/include/uapi \ + -D__user= + +# rdu64 is supposed to provide the LFS variant of readdir(), +# readdir64(). However, because Buildroot is always LFS-enabled, +# readdir() is always the LFS variant. Drop rdu64 from the build, as +# it causes build failures due to multiple implementations of +# readdir64(). +define AUFS_UTIL_REMOVE_RDU64 + $(SED) 's% rdu64.o%%' $(@D)/libau/Makefile +endef + +AUFS_UTIL_POST_PATCH_HOOKS += AUFS_UTIL_REMOVE_RDU64 + +# First, we build the host tools, needed to build the target tools. +define AUFS_UTIL_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) \ + $(HOST_CONFIGURE_OPTS) \ + CPPFLAGS="$(AUFS_UTIL_HOST_CPPFLAGS)" \ + HOSTCC="$(HOSTCC)" HOSTLD="$(HOSTLD)" \ + INSTALL="$(INSTALL)" c2sh c2tmac + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) \ + $(TARGET_CONFIGURE_OPTS) \ + CPPFLAGS="$(AUFS_UTIL_CPPFLAGS)" \ + INSTALL="$(INSTALL)" all +endef + +define AUFS_UTIL_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) INSTALL="$(INSTALL)" DESTDIR="$(TARGET_DIR)" install +endef + +$(eval $(generic-package)) diff --git a/package/aufs/Config.in b/package/aufs/Config.in new file mode 100644 index 00000000..cc5ff365 --- /dev/null +++ b/package/aufs/Config.in @@ -0,0 +1,16 @@ +# Automatically selected by the corresponding linux extension +config BR2_PACKAGE_AUFS + bool + +if BR2_PACKAGE_AUFS + +# Both come from the selection of the linux extension. +config BR2_PACKAGE_AUFS_SERIES + int + default BR2_LINUX_KERNEL_EXT_AUFS_SERIES + +config BR2_PACKAGE_AUFS_VERSION + string + default BR2_LINUX_KERNEL_EXT_AUFS_VERSION + +endif diff --git a/package/aufs/aufs.mk b/package/aufs/aufs.mk new file mode 100644 index 00000000..d00e7a1a --- /dev/null +++ b/package/aufs/aufs.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# aufs +# +################################################################################ + +AUFS_VERSION = $(call qstrip,$(BR2_PACKAGE_AUFS_VERSION)) +AUFS_LICENSE = GPL-2.0 +AUFS_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_AUFS_SERIES),3) +AUFS_SITE = https://git.code.sf.net/p/aufs/aufs3-standalone +AUFS_SITE_METHOD = git +else ifeq ($(BR2_PACKAGE_AUFS_SERIES),4) +AUFS_SITE = $(call github,sfjro,aufs4-standalone,$(AUFS_VERSION)) +else ifeq ($(BR2_PACKAGE_AUFS_SERIES),5) +AUFS_SITE = $(call github,sfjro,aufs5-standalone,$(AUFS_VERSION)) +endif + +ifeq ($(BR_BUILDING):$(BR2_PACKAGE_AUFS):$(AUFS_VERSION),y:y:) +$(error No aufs version specified) +endif + +$(eval $(generic-package)) diff --git a/package/augeas/Config.in b/package/augeas/Config.in new file mode 100644 index 00000000..df8c5174 --- /dev/null +++ b/package/augeas/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_AUGEAS + bool "augeas" + # ARC toolchain issue: + # https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/issues/108 + depends on !BR2_arc + depends on BR2_USE_WCHAR + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_READLINE + help + Augeas is a configuration editing tool. It parses + configuration files in their native formats and transforms + them into a tree. Configuration changes are made by + manipulating this tree and saving it back into native config + files. + + http://augeas.net + +comment "augeas needs a toolchain w/ wchar" + depends on !BR2_arc + depends on !BR2_USE_WCHAR diff --git a/package/augeas/augeas.hash b/package/augeas/augeas.hash new file mode 100644 index 00000000..b3b2a242 --- /dev/null +++ b/package/augeas/augeas.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 368bfdd782e4b9c7163baadd621359c82b162734864b667051ff6bcb57b9edff augeas-1.14.1.tar.gz +sha256 ca0061fc1381a3ab242310e4b3f56389f28e3d460eb2fd822ed7a21c6f030532 COPYING diff --git a/package/augeas/augeas.mk b/package/augeas/augeas.mk new file mode 100644 index 00000000..ac4bc7d0 --- /dev/null +++ b/package/augeas/augeas.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# augeas +# +################################################################################ + +AUGEAS_VERSION = 1.14.1 +AUGEAS_SITE = https://github.com/hercules-team/augeas/releases/download/release-$(AUGEAS_VERSION) +AUGEAS_INSTALL_STAGING = YES +AUGEAS_LICENSE = LGPL-2.1+ +AUGEAS_LICENSE_FILES = COPYING +AUGEAS_CPE_ID_VENDOR = augeas +AUGEAS_DEPENDENCIES = host-pkgconf readline libxml2 + +AUGEAS_CONF_OPTS = --disable-gnulib-tests + +# Remove the test lenses which occupy about 1.4 MB on the target +define AUGEAS_REMOVE_TEST_LENSES + rm -rf $(TARGET_DIR)/usr/share/augeas/lenses/dist/tests +endef +AUGEAS_POST_INSTALL_TARGET_HOOKS += AUGEAS_REMOVE_TEST_LENSES + +$(eval $(autotools-package)) diff --git a/package/aumix/0001-fix-incorrect-makefile-am.patch b/package/aumix/0001-fix-incorrect-makefile-am.patch new file mode 100644 index 00000000..143174de --- /dev/null +++ b/package/aumix/0001-fix-incorrect-makefile-am.patch @@ -0,0 +1,28 @@ +Aumix's src/Makefile.am incorrect adds @includedir@ to the list of +include paths and @libdir@ to the list of libraries paths. This is +incorrect, as @includedir@ and @libdir@ are respectively /usr/include +and /usr/lib, even in cross-compilation mode. + +At the same time, use AM_CFLAGS instead of CFLAGS, as is done on the +similar patch found in OpenEmbedded. + +Signed-off-by: Thomas Petazzoni +--- + src/Makefile.am | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +Index: aumix-2.8/src/Makefile.am +=================================================================== +--- aumix-2.8.orig/src/Makefile.am ++++ aumix-2.8/src/Makefile.am +@@ -9,9 +9,8 @@ + mouse.c common.h curses.h gpm-xterm.h gtk.h interactive.h \ + mouse.h play.xpm record.xpm + localedir = $(datadir)/locale +-INCLUDES = -I../intl -DLOCALEDIR=\"$(localedir)\" -I@includedir@ ++INCLUDES = -I../intl -DLOCALEDIR=\"$(localedir)\" + AM_CFLAGS = @CFLAGS@ @GLIB_CFLAGS@ @GTK_CFLAGS@ +-LDADD = -L@libdir@ + LIBS = @LIBS@ @GTK_LIBS@ @LIBINTL@ + DEFS = @DEFS@ + diff --git a/package/aumix/Config.in b/package/aumix/Config.in new file mode 100644 index 00000000..058e73d7 --- /dev/null +++ b/package/aumix/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_AUMIX + bool "aumix" + select BR2_PACKAGE_NCURSES + help + aumix is a small, easy-to-use program to control the mixer + of your sound card. It runs in text mode using the ncurses + library, or from the command line (non-interactively). + It can read default settings from a file, and it can also + automatically save and restore the mixer settings at shutdown + and boot. + + https://sourceforge.net/projects/aumix/ diff --git a/package/aumix/aumix.hash b/package/aumix/aumix.hash new file mode 100644 index 00000000..43c09dc5 --- /dev/null +++ b/package/aumix/aumix.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 d2ce43d532ef75072c8d4e7922e3bc06be6d97765a508d9ceb0d1766bbe70e29 aumix-2.9.1.tar.bz2 +sha256 1ca3e8f71b7de618968e7ea9fe47822d9e704dc476aef8544033abedec355225 COPYING +sha256 3bfa74db4aeb68bfef7ee213bb1dbf236d784dea3d35a52f6e23a48c847375dd 19_no-common.patch diff --git a/package/aumix/aumix.mk b/package/aumix/aumix.mk new file mode 100644 index 00000000..d5c2831d --- /dev/null +++ b/package/aumix/aumix.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# aumix +# +################################################################################ + +AUMIX_VERSION = 2.9.1 +AUMIX_SOURCE = aumix-$(AUMIX_VERSION).tar.bz2 +AUMIX_SITE = https://sourceforge.net/projects/aumix/files/aumix/$(AUMIX_VERSION) +AUMIX_AUTORECONF = YES +AUMIX_AUTOPOINT = YES +AUMIX_LICENSE = GPL-2.0+ +AUMIX_LICENSE_FILES = COPYING + +AUMIX_PATCH = \ + https://sources.debian.org/data/main/a/aumix/2.9.1-7/debian/patches/19_no-common.patch + +AUMIX_CONF_OPTS = \ + --without-gtk \ + --without-gtk1 \ + --without-alsa \ + --without-gpm \ + --without-sysmouse + +AUMIX_DEPENDENCIES = host-gettext ncurses + +$(eval $(autotools-package)) diff --git a/package/autoconf-archive/autoconf-archive.hash b/package/autoconf-archive/autoconf-archive.hash new file mode 100644 index 00000000..c4658e6f --- /dev/null +++ b/package/autoconf-archive/autoconf-archive.hash @@ -0,0 +1,6 @@ +# From https://lists.gnu.org/archive/html/autoconf-archive-announce/2023-02/msg00000.html +sha1 e26d15db0f1ec60e9ea8ff024cf3ee895fa2eabd autoconf-archive-2023.02.20.tar.xz +# Computed locally +sha256 71d4048479ae28f1f5794619c3d72df9c01df49b1c628ef85fde37596dc31a33 autoconf-archive-2023.02.20.tar.xz +sha256 e6037104443f9a7829b2aa7c5370d0789a7bda3ca65a0b904cdc0c2e285d9195 COPYING +sha256 23ed0b84fa023bfa33433b498192cd08a3bfb1f4864a8ed791a84f3eb48b2dd2 COPYING.EXCEPTION diff --git a/package/autoconf-archive/autoconf-archive.mk b/package/autoconf-archive/autoconf-archive.mk new file mode 100644 index 00000000..07ac7e97 --- /dev/null +++ b/package/autoconf-archive/autoconf-archive.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# autoconf-archive +# +################################################################################ + +AUTOCONF_ARCHIVE_VERSION = 2023.02.20 +AUTOCONF_ARCHIVE_SOURCE = autoconf-archive-$(AUTOCONF_ARCHIVE_VERSION).tar.xz +AUTOCONF_ARCHIVE_SITE = $(BR2_GNU_MIRROR)/autoconf-archive +AUTOCONF_ARCHIVE_LICENSE = GPL-3.0+ with exception +AUTOCONF_ARCHIVE_LICENSE_FILES = COPYING COPYING.EXCEPTION +HOST_AUTOCONF_ARCHIVE_INSTALL_OPTS = aclocaldir=$(HOST_DIR)/share/autoconf-archive install + +$(eval $(host-autotools-package)) diff --git a/package/autoconf/0001-dont-add-dirty-to-version.patch b/package/autoconf/0001-dont-add-dirty-to-version.patch new file mode 100644 index 00000000..8df22768 --- /dev/null +++ b/package/autoconf/0001-dont-add-dirty-to-version.patch @@ -0,0 +1,28 @@ +autoconf: don't append -dirty to version + +Don't append -dirty to autoconf version number if the buildroot git tree +has uncommited changes. + +This script is meant for the autoconf developers, but it also activates +if you build autoconf in a subdirectory of a git tree (E.G. like how it's +commonly done in buildroot). + +The affect is that autoconf gets built as being version 2.65-dirty, which +breaks programs (like Python) which explicitly checks for autoconf-2.65. + +[Gustavo: update for autoconf 2.69] +Signed-off-by: Peter Korsgaard +Signed-off-by: Gustavo Zacarias + +diff -Nura autoconf-2.69.orig/build-aux/git-version-gen autoconf-2.69/build-aux/git-version-gen +--- autoconf-2.69.orig/build-aux/git-version-gen 2013-06-27 11:31:02.340200154 -0300 ++++ autoconf-2.69/build-aux/git-version-gen 2013-06-27 11:31:13.734577033 -0300 +@@ -210,7 +210,7 @@ + *) # Append the suffix only if there isn't one already. + case $v in + *-dirty) ;; +- *) v="$v-dirty" ;; ++ #*) v="$v-dirty" ;; + esac ;; + esac + fi diff --git a/package/autoconf/autoconf.hash b/package/autoconf/autoconf.hash new file mode 100644 index 00000000..f94b2d9d --- /dev/null +++ b/package/autoconf/autoconf.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 ba885c1319578d6c94d46e9b0dceb4014caafe2490e437a0dbca3f270a223f5a autoconf-2.72.tar.xz +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 COPYINGv3 +sha256 1f1cde9fb68b9b3cff18c420894bec5bd4defacd700b7d13df54a887301e5350 COPYING.EXCEPTION diff --git a/package/autoconf/autoconf.mk b/package/autoconf/autoconf.mk new file mode 100644 index 00000000..48bfc80e --- /dev/null +++ b/package/autoconf/autoconf.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# autoconf +# +################################################################################ + +AUTOCONF_VERSION = 2.72 +AUTOCONF_SOURCE = autoconf-$(AUTOCONF_VERSION).tar.xz +AUTOCONF_SITE = $(BR2_GNU_MIRROR)/autoconf + +AUTOCONF_LICENSE = GPL-3.0+ with exceptions +AUTOCONF_LICENSE_FILES = COPYINGv3 COPYING.EXCEPTION + +HOST_AUTOCONF_CONF_ENV = \ + EMACS="no" \ + ac_cv_path_M4=$(HOST_DIR)/bin/m4 \ + ac_cv_prog_gnu_m4_gnu=no + +HOST_AUTOCONF_DEPENDENCIES = host-m4 host-libtool + +$(eval $(host-autotools-package)) + +# variables used by other packages +AUTOCONF = $(HOST_DIR)/bin/autoconf -I "$(ACLOCAL_DIR)" -I "$(ACLOCAL_HOST_DIR)" +AUTOHEADER = $(HOST_DIR)/bin/autoheader -I "$(ACLOCAL_DIR)" -I "$(ACLOCAL_HOST_DIR)" +AUTORECONF = $(HOST_CONFIGURE_OPTS) ACLOCAL="$(ACLOCAL)" \ + AUTOCONF="$(AUTOCONF)" AUTOHEADER="$(AUTOHEADER)" \ + AUTOMAKE="$(AUTOMAKE)" GTKDOCIZE=/bin/true \ + $(HOST_DIR)/bin/autoreconf -f -i diff --git a/package/autofs/Config.in b/package/autofs/Config.in new file mode 100644 index 00000000..8bb5fe27 --- /dev/null +++ b/package/autofs/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_AUTOFS + bool "autofs" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_USE_MMU + depends on !BR2_STATIC_LIBS # dlfcn + depends on !BR2_TOOLCHAIN_USES_MUSL # nsswitch + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + help + Autofs controls the operation of the automount daemons. The + automount daemons automatically mount filesystems when they + are used and unmount them after a period of inactivity based + on a set of pre-configured maps defined by default in + /etc/auto.master. The kernel automounter implements SunOS + style automounter under Linux and requires a kernel version + of at least 2.6.17 and the autofs4 kernel module. + + http://www.linuxfromscratch.org/blfs/view/svn/general/autofs.html + +comment "autofs needs a glibc or uClibc toolchain w/ NPTL and dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS \ + || BR2_TOOLCHAIN_USES_MUSL diff --git a/package/autofs/autofs.hash b/package/autofs/autofs.hash new file mode 100644 index 00000000..67d09e85 --- /dev/null +++ b/package/autofs/autofs.hash @@ -0,0 +1,6 @@ +# From https://www.kernel.org/pub/linux/daemons/autofs/v5/sha256sums.asc +sha256 87e6af6a03794b9462ea519781e50e7d23b5f7c92cd59e1142c85d2493b3c24b autofs-5.1.9.tar.xz + +# Hash for license files +sha256 458028929f712b4795bc5adc31a1d6a2151364ce1b372ac43f613f56c8448fed COPYING +sha256 26c826658dfa9e5ce5f182fbfbadf3fda2d184e78dba3d99da34c60113b2ce54 COPYRIGHT diff --git a/package/autofs/autofs.mk b/package/autofs/autofs.mk new file mode 100644 index 00000000..e9eff98a --- /dev/null +++ b/package/autofs/autofs.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# autofs +# +################################################################################ + +AUTOFS_VERSION = 5.1.9 +AUTOFS_SOURCE = autofs-$(AUTOFS_VERSION).tar.xz +AUTOFS_SITE = $(BR2_KERNEL_MIRROR)/linux/daemons/autofs/v5 +AUTOFS_LICENSE = GPL-2.0+ +AUTOFS_LICENSE_FILES = COPYING COPYRIGHT +AUTOFS_DEPENDENCIES = host-flex host-bison host-pkgconf host-nfs-utils + +# autofs looks on the build machine for the path of modprobe, mount, +# umount and fsck programs so tell it explicitly where they will be +# located on the target. +AUTOFS_CONF_ENV = \ + ac_cv_path_E2FSCK=/sbin/fsck \ + ac_cv_path_E3FSCK=no \ + ac_cv_path_E4FSCK=no \ + ac_cv_path_KRB5_CONFIG=no \ + ac_cv_path_MODPROBE=/sbin/modprobe \ + ac_cv_path_MOUNT=/bin/mount \ + ac_cv_path_MOUNT_NFS=/usr/sbin/mount.nfs \ + ac_cv_path_UMOUNT=/bin/umount \ + ac_cv_linux_procfs=yes + +# instead of looking in the PATH like any reasonable package, autofs +# configure looks only in an hardcoded search path for host tools, +# which we have to override with --with-path. +AUTOFS_CONF_OPTS = \ + --disable-mount-locking \ + --enable-ignore-busy \ + --without-openldap \ + --without-sasl \ + --with-path="$(BR_PATH)" \ + --with-hesiod=no + +AUTOFS_MAKE_ENV = DONTSTRIP=1 + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +AUTOFS_CONF_OPTS += --with-libtirpc +AUTOFS_DEPENDENCIES += libtirpc +else +AUTOFS_CONF_OPTS += --without-libtirpc +endif + +$(eval $(autotools-package)) diff --git a/package/automake/0001-noman.patch b/package/automake/0001-noman.patch new file mode 100644 index 00000000..a4ad16dd --- /dev/null +++ b/package/automake/0001-noman.patch @@ -0,0 +1,27 @@ +Disable manpages build and installation, seems the bundled version of +help2man is somewhat old and breaks on modern distributions such as +Fedora 20, as reported by Kanibal on IRC. + +Signed-off-by: Gustavo Zacarias + +diff -Nura automake-1.14.1.orig/Makefile.in automake-1.14.1/Makefile.in +--- automake-1.14.1.orig/Makefile.in 2014-09-10 18:40:57.554164448 -0300 ++++ automake-1.14.1/Makefile.in 2014-09-10 18:42:01.050348068 -0300 +@@ -3387,7 +3387,7 @@ + check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local + check: check-am +-all-am: Makefile $(INFO_DEPS) $(SCRIPTS) $(MANS) $(DATA) ++all-am: Makefile $(INFO_DEPS) $(SCRIPTS) $(DATA) + installdirs: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(amdir)" "$(DESTDIR)$(automake_acdir)" "$(DESTDIR)$(automake_internal_acdir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(perllibdir)" "$(DESTDIR)$(pkgvdatadir)" "$(DESTDIR)$(scriptdir)" "$(DESTDIR)$(system_acdir)" "$(DESTDIR)$(perllibdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ +@@ -3454,7 +3454,7 @@ + install-dist_automake_internal_acDATA install-dist_docDATA \ + install-dist_perllibDATA install-dist_pkgvdataDATA \ + install-dist_scriptDATA install-dist_system_acDATA \ +- install-info-am install-man install-nodist_perllibDATA ++ install-info-am install-nodist_perllibDATA + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-data-hook + install-dvi: install-dvi-am diff --git a/package/automake/automake.hash b/package/automake/automake.hash new file mode 100644 index 00000000..b2e70641 --- /dev/null +++ b/package/automake/automake.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 f01d58cd6d9d77fbdca9eb4bbd5ead1988228fdb73d6f7a201f5f8d6b118b469 automake-1.16.5.tar.xz +# License files, locally calculated +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/automake/automake.mk b/package/automake/automake.mk new file mode 100644 index 00000000..fd7933dd --- /dev/null +++ b/package/automake/automake.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# automake +# +################################################################################ + +AUTOMAKE_VERSION = 1.16.5 +AUTOMAKE_SOURCE = automake-$(AUTOMAKE_VERSION).tar.xz +AUTOMAKE_SITE = $(BR2_GNU_MIRROR)/automake +AUTOMAKE_LICENSE = GPL-2.0+ +AUTOMAKE_LICENSE_FILES = COPYING +AUTOMAKE_CPE_ID_VENDOR = gnu + +HOST_AUTOMAKE_DEPENDENCIES = host-autoconf + +ACLOCAL_HOST_DIR = $(HOST_DIR)/share/aclocal + +define HOST_AUTOMAKE_GTK_DOC_M4_INSTALL + $(INSTALL) -D -m 0644 package/automake/gtk-doc.m4 \ + $(ACLOCAL_HOST_DIR)/gtk-doc.m4 +endef + +# ensure staging aclocal dir exists +define HOST_AUTOMAKE_MAKE_ACLOCAL + mkdir -p $(ACLOCAL_DIR) +endef + +HOST_AUTOMAKE_POST_INSTALL_HOOKS += HOST_AUTOMAKE_GTK_DOC_M4_INSTALL +HOST_AUTOMAKE_POST_INSTALL_HOOKS += HOST_AUTOMAKE_MAKE_ACLOCAL + +$(eval $(host-autotools-package)) + +# variables used by other packages +AUTOMAKE = $(HOST_DIR)/bin/automake +ACLOCAL_DIR = $(STAGING_DIR)/usr/share/aclocal +ACLOCAL = $(HOST_DIR)/bin/aclocal +ACLOCAL_PATH = $(ACLOCAL_DIR):$(ACLOCAL_HOST_DIR) +export ACLOCAL_PATH diff --git a/package/automake/gtk-doc.m4 b/package/automake/gtk-doc.m4 new file mode 100644 index 00000000..36755432 --- /dev/null +++ b/package/automake/gtk-doc.m4 @@ -0,0 +1,88 @@ +dnl -*- mode: autoconf -*- + +# serial 2 + +dnl Usage: +dnl GTK_DOC_CHECK([minimum-gtk-doc-version]) +AC_DEFUN([GTK_DOC_CHECK], +[ + AC_REQUIRE([PKG_PROG_PKG_CONFIG]) + AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first + AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first + + ifelse([$1],[],[gtk_doc_requires="gtk-doc"],[gtk_doc_requires="gtk-doc >= $1"]) + AC_MSG_CHECKING([for gtk-doc]) + PKG_CHECK_EXISTS([$gtk_doc_requires],[have_gtk_doc=yes],[have_gtk_doc=no]) + AC_MSG_RESULT($have_gtk_doc) + + if test "$have_gtk_doc" = "no"; then + AC_MSG_WARN([ + You will not be able to create source packages with 'make dist' + because $gtk_doc_requires is not found.]) + fi + + dnl check for tools we added during development + dnl Use AC_CHECK_PROG to avoid the check target using an absolute path that + dnl may not be writable by the user. Currently, automake requires that the + dnl test name must end in '.test'. + dnl https://bugzilla.gnome.org/show_bug.cgi?id=701638 + AC_CHECK_PROG([GTKDOC_CHECK],[gtkdoc-check],[gtkdoc-check.test]) + AC_PATH_PROG([GTKDOC_CHECK_PATH],[gtkdoc-check]) + AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true]) + AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf]) + + dnl for overriding the documentation installation directory + AC_ARG_WITH([html-dir], + AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),, + [with_html_dir='${datadir}/gtk-doc/html']) + HTML_DIR="$with_html_dir" + AC_SUBST([HTML_DIR]) + + dnl enable/disable documentation building + AC_ARG_ENABLE([gtk-doc], + AS_HELP_STRING([--enable-gtk-doc], + [use gtk-doc to build documentation [[default=no]]]),, + [enable_gtk_doc=no]) + + AC_MSG_CHECKING([whether to build gtk-doc documentation]) + AC_MSG_RESULT($enable_gtk_doc) + + if test "x$enable_gtk_doc" = "xyes" && test "$have_gtk_doc" = "no"; then + AC_MSG_ERROR([ + You must have $gtk_doc_requires installed to build documentation for + $PACKAGE_NAME. Please install gtk-doc or disable building the + documentation by adding '--disable-gtk-doc' to '[$]0'.]) + fi + + dnl don't check for glib if we build glib + if test "x$PACKAGE_NAME" != "xglib"; then + dnl don't fail if someone does not have glib + PKG_CHECK_MODULES(GTKDOC_DEPS, glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0,,[:]) + fi + + dnl enable/disable output formats + AC_ARG_ENABLE([gtk-doc-html], + AS_HELP_STRING([--enable-gtk-doc-html], + [build documentation in html format [[default=yes]]]),, + [enable_gtk_doc_html=yes]) + AC_ARG_ENABLE([gtk-doc-pdf], + AS_HELP_STRING([--enable-gtk-doc-pdf], + [build documentation in pdf format [[default=no]]]),, + [enable_gtk_doc_pdf=no]) + + if test -z "$GTKDOC_MKPDF"; then + enable_gtk_doc_pdf=no + fi + + if test -z "$AM_DEFAULT_VERBOSITY"; then + AM_DEFAULT_VERBOSITY=1 + fi + AC_SUBST([AM_DEFAULT_VERBOSITY]) + + AM_CONDITIONAL([HAVE_GTK_DOC], [test x$have_gtk_doc = xyes]) + AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes]) + AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes]) + AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes]) + AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"]) + AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"]) +]) diff --git a/package/autossh/0001-configure.ac-fix-__progname-check-with-gcc-14.patch b/package/autossh/0001-configure.ac-fix-__progname-check-with-gcc-14.patch new file mode 100644 index 00000000..a5173281 --- /dev/null +++ b/package/autossh/0001-configure.ac-fix-__progname-check-with-gcc-14.patch @@ -0,0 +1,52 @@ +From 3a74eff481f37975e04f00db4923b1c16f93497d Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 20 Jul 2024 16:06:37 +0200 +Subject: [PATCH] configure.ac: fix __progname check with gcc >= 14 + +Include stdio.h to avoid that __progname check wrongly returns that +the function is unavailable with gcc >= 14 which enables +-Werror=implicit-function-declaration +(https://gcc.gnu.org/gcc-14/porting_to.html): + +configure:5231: checking if libc defines __progname +configure:5249: /home/autobuild/autobuild/instance-7/output-1/host/bin/sh4-buildroot-linux-musl-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -g0 -static -Wall -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -static conftest.c >&5 +conftest.c: In function 'main': +conftest.c:73:27: error: implicit declaration of function 'printf' [-Wimplicit-function-declaration] + 73 | extern char *__progname; printf("%s", __progname); + | ^~~~~~ +conftest.c:1:1: note: include '' or provide a declaration of 'printf' + 1 | /* confdefs.h */ +conftest.c:73:27: warning: incompatible implicit declaration of built-in function 'printf' [-Wbuiltin-declaration-mismatch] + 73 | extern char *__progname; printf("%s", __progname); + | ^~~~~~ +conftest.c:73:27: note: include '' or provide a declaration of 'printf' + +resulting in the following static build failure: + +/home/autobuild/autobuild/instance-7/output-1/host/lib/gcc/sh4-buildroot-linux-musl/14.1.0/../../../../sh4-buildroot-linux-musl/bin/ld: /home/autobuild/autobuild/instance-7/output-1/host/sh4-buildroot-linux-musl/sysroot/lib/libc.a(libc.o):(.bss.__progname+0x0): multiple definition of `__progname'; autossh.o:(.bss+0x120): first defined here + +Fixes: + - http://autobuild.buildroot.org/results/5d80a8096d0f5529cbd86903a74f3bab3d230f4a + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/Autossh/autossh/pull/9 +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 4bb9380..dadb523 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -132,7 +132,7 @@ AC_CHECK_LIB(socket, connect) + # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + AC_CACHE_CHECK([if libc defines __progname], ac_cv_libc_defines___progname, [ +- AC_TRY_LINK([], ++ AC_TRY_LINK([ #include ], + [ extern char *__progname; printf("%s", __progname); ], + [ ac_cv_libc_defines___progname="yes" ], + [ ac_cv_libc_defines___progname="no" ] +-- +2.43.0 + diff --git a/package/autossh/Config.in b/package/autossh/Config.in new file mode 100644 index 00000000..351e23ff --- /dev/null +++ b/package/autossh/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_AUTOSSH + bool "autossh" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_DROPBEAR || BR2_PACKAGE_OPENSSH + help + autossh is a program to start a copy of ssh and monitor it, + restarting it as necessary should it die or stop passing + traffic. + + http://www.harding.motd.ca/autossh/ diff --git a/package/autossh/autossh.hash b/package/autossh/autossh.hash new file mode 100644 index 00000000..aaed9681 --- /dev/null +++ b/package/autossh/autossh.hash @@ -0,0 +1,6 @@ +# From http://www.harding.motd.ca/autossh/autossh-1.4g.cksums +sha256 5fc3cee3361ca1615af862364c480593171d0c54ec156de79fc421e31ae21277 autossh-1.4g.tgz +sha1 bd88da0e296b8d85722ee9e7c314e9319e5b2db8 autossh-1.4g.tgz +md5 2b804bc1bf6d2f2afaa526d02df7c0a2 autossh-1.4g.tgz +# Locally computed +sha256 014ec5a85a8899d4ea0e0a886bb3fc4c72b4bbec6414093ba1fdac5b178c25b4 autossh.c diff --git a/package/autossh/autossh.mk b/package/autossh/autossh.mk new file mode 100644 index 00000000..fbb525bc --- /dev/null +++ b/package/autossh/autossh.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# autossh +# +################################################################################ + +AUTOSSH_VERSION = 1.4g +AUTOSSH_SITE = http://www.harding.motd.ca/autossh +AUTOSSH_SOURCE = autossh-$(AUTOSSH_VERSION).tgz +AUTOSSH_LICENSE = Modified BSD +AUTOSSH_LICENSE_FILES = autossh.c +# Fix AC_ARG_WITH code generation for --with-ssh +# 0001-configure.ac-fix-__progname-check-with-gcc-14.patch +AUTOSSH_AUTORECONF = YES + +AUTOSSH_CONF_OPTS = --with-ssh=/usr/bin/ssh + +$(eval $(autotools-package)) diff --git a/package/avahi/0001-Fix-NULL-pointer-crashes-from-175.patch b/package/avahi/0001-Fix-NULL-pointer-crashes-from-175.patch new file mode 100644 index 00000000..7e191e8d --- /dev/null +++ b/package/avahi/0001-Fix-NULL-pointer-crashes-from-175.patch @@ -0,0 +1,152 @@ +From 9d31939e55280a733d930b15ac9e4dda4497680c Mon Sep 17 00:00:00 2001 +From: Tommi Rantala +Date: Mon, 8 Feb 2021 11:04:43 +0200 +Subject: [PATCH] Fix NULL pointer crashes from #175 + +avahi-daemon is crashing when running "ping .local". +The crash is due to failing assertion from NULL pointer. +Add missing NULL pointer checks to fix it. + +Introduced in #175 - merge commit 8f75a045709a780c8cf92a6a21e9d35b593bdecd + +[Retrieved from: +https://github.com/lathiat/avahi/commit/9d31939e55280a733d930b15ac9e4dda4497680c] +Signed-off-by: Fabrice Fontaine +--- + avahi-core/browse-dns-server.c | 5 ++++- + avahi-core/browse-domain.c | 5 ++++- + avahi-core/browse-service-type.c | 3 +++ + avahi-core/browse-service.c | 3 +++ + avahi-core/browse.c | 3 +++ + avahi-core/resolve-address.c | 5 ++++- + avahi-core/resolve-host-name.c | 5 ++++- + avahi-core/resolve-service.c | 5 ++++- + 8 files changed, 29 insertions(+), 5 deletions(-) + +diff --git a/avahi-core/browse-dns-server.c b/avahi-core/browse-dns-server.c +index 049752e9..c2d914fa 100644 +--- a/avahi-core/browse-dns-server.c ++++ b/avahi-core/browse-dns-server.c +@@ -343,7 +343,10 @@ AvahiSDNSServerBrowser *avahi_s_dns_server_browser_new( + AvahiSDNSServerBrowser* b; + + b = avahi_s_dns_server_browser_prepare(server, interface, protocol, domain, type, aprotocol, flags, callback, userdata); ++ if (!b) ++ return NULL; ++ + avahi_s_dns_server_browser_start(b); + + return b; +-} +\ No newline at end of file ++} +diff --git a/avahi-core/browse-domain.c b/avahi-core/browse-domain.c +index f145d56a..06fa70c0 100644 +--- a/avahi-core/browse-domain.c ++++ b/avahi-core/browse-domain.c +@@ -253,7 +253,10 @@ AvahiSDomainBrowser *avahi_s_domain_browser_new( + AvahiSDomainBrowser *b; + + b = avahi_s_domain_browser_prepare(server, interface, protocol, domain, type, flags, callback, userdata); ++ if (!b) ++ return NULL; ++ + avahi_s_domain_browser_start(b); + + return b; +-} +\ No newline at end of file ++} +diff --git a/avahi-core/browse-service-type.c b/avahi-core/browse-service-type.c +index fdd22dcd..b1fc7af8 100644 +--- a/avahi-core/browse-service-type.c ++++ b/avahi-core/browse-service-type.c +@@ -171,6 +171,9 @@ AvahiSServiceTypeBrowser *avahi_s_service_type_browser_new( + AvahiSServiceTypeBrowser *b; + + b = avahi_s_service_type_browser_prepare(server, interface, protocol, domain, flags, callback, userdata); ++ if (!b) ++ return NULL; ++ + avahi_s_service_type_browser_start(b); + + return b; +diff --git a/avahi-core/browse-service.c b/avahi-core/browse-service.c +index 5531360c..63e0275a 100644 +--- a/avahi-core/browse-service.c ++++ b/avahi-core/browse-service.c +@@ -184,6 +184,9 @@ AvahiSServiceBrowser *avahi_s_service_browser_new( + AvahiSServiceBrowser *b; + + b = avahi_s_service_browser_prepare(server, interface, protocol, service_type, domain, flags, callback, userdata); ++ if (!b) ++ return NULL; ++ + avahi_s_service_browser_start(b); + + return b; +diff --git a/avahi-core/browse.c b/avahi-core/browse.c +index 2941e579..e8a915e9 100644 +--- a/avahi-core/browse.c ++++ b/avahi-core/browse.c +@@ -634,6 +634,9 @@ AvahiSRecordBrowser *avahi_s_record_browser_new( + AvahiSRecordBrowser *b; + + b = avahi_s_record_browser_prepare(server, interface, protocol, key, flags, callback, userdata); ++ if (!b) ++ return NULL; ++ + avahi_s_record_browser_start_query(b); + + return b; +diff --git a/avahi-core/resolve-address.c b/avahi-core/resolve-address.c +index ac0b29b1..e61dd242 100644 +--- a/avahi-core/resolve-address.c ++++ b/avahi-core/resolve-address.c +@@ -286,7 +286,10 @@ AvahiSAddressResolver *avahi_s_address_resolver_new( + AvahiSAddressResolver *b; + + b = avahi_s_address_resolver_prepare(server, interface, protocol, address, flags, callback, userdata); ++ if (!b) ++ return NULL; ++ + avahi_s_address_resolver_start(b); + + return b; +-} +\ No newline at end of file ++} +diff --git a/avahi-core/resolve-host-name.c b/avahi-core/resolve-host-name.c +index 808b0e72..4e8e5973 100644 +--- a/avahi-core/resolve-host-name.c ++++ b/avahi-core/resolve-host-name.c +@@ -318,7 +318,10 @@ AvahiSHostNameResolver *avahi_s_host_name_resolver_new( + AvahiSHostNameResolver *b; + + b = avahi_s_host_name_resolver_prepare(server, interface, protocol, host_name, aprotocol, flags, callback, userdata); ++ if (!b) ++ return NULL; ++ + avahi_s_host_name_resolver_start(b); + + return b; +-} +\ No newline at end of file ++} +diff --git a/avahi-core/resolve-service.c b/avahi-core/resolve-service.c +index 66bf3cae..43771763 100644 +--- a/avahi-core/resolve-service.c ++++ b/avahi-core/resolve-service.c +@@ -519,7 +519,10 @@ AvahiSServiceResolver *avahi_s_service_resolver_new( + AvahiSServiceResolver *b; + + b = avahi_s_service_resolver_prepare(server, interface, protocol, name, type, domain, aprotocol, flags, callback, userdata); ++ if (!b) ++ return NULL; ++ + avahi_s_service_resolver_start(b); + + return b; +-} +\ No newline at end of file ++} diff --git a/package/avahi/0002-remove-imp-from-py-compile.patch b/package/avahi/0002-remove-imp-from-py-compile.patch new file mode 100644 index 00000000..37534a3f --- /dev/null +++ b/package/avahi/0002-remove-imp-from-py-compile.patch @@ -0,0 +1,50 @@ +Remove optional imp python module dependency. + +Upstream already removed py-compile entirely in their git repository, +so the patch is not appropiate for upstream. + +Signed-off-by: Waldemar Brodkorb +Upstream: not appropiate + +diff -Nur avahi-0.8.orig/py-compile avahi-0.8/py-compile +--- avahi-0.8.orig/py-compile 2020-02-18 07:58:21.192417644 +0100 ++++ avahi-0.8/py-compile 2024-08-17 15:03:07.328733849 +0200 +@@ -116,7 +116,7 @@ + fi + + $PYTHON -c " +-import sys, os, py_compile, imp ++import sys, os, py_compile + + files = '''$files''' + +@@ -129,15 +129,12 @@ + continue + sys.stdout.write(file) + sys.stdout.flush() +- if hasattr(imp, 'get_tag'): +- py_compile.compile(filepath, imp.cache_from_source(filepath), path) +- else: +- py_compile.compile(filepath, filepath + 'c', path) ++ py_compile.compile(filepath, filepath + 'c', path) + sys.stdout.write('\n')" || exit $? + + # this will fail for python < 1.5, but that doesn't matter ... + $PYTHON -O -c " +-import sys, os, py_compile, imp ++import sys, os, py_compile + + # pypy does not use .pyo optimization + if hasattr(sys, 'pypy_translation_info'): +@@ -153,10 +150,7 @@ + continue + sys.stdout.write(file) + sys.stdout.flush() +- if hasattr(imp, 'get_tag'): +- py_compile.compile(filepath, imp.cache_from_source(filepath, False), path) +- else: +- py_compile.compile(filepath, filepath + 'o', path) ++ py_compile.compile(filepath, filepath + 'o', path) + sys.stdout.write('\n')" 2>/dev/null || : + + # Local Variables: diff --git a/package/avahi/Config.in b/package/avahi/Config.in new file mode 100644 index 00000000..728bc4fd --- /dev/null +++ b/package/avahi/Config.in @@ -0,0 +1,62 @@ +config BR2_PACKAGE_AVAHI + bool "avahi" + # libdaemon uses fork() + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + Avahi is a system which facilitates service + discovery on a local network. + + http://www.avahi.org/ + +if BR2_PACKAGE_AVAHI + +config BR2_PACKAGE_AVAHI_AUTOIPD + bool "IPv4LL network address configuration daemon" + default y + select BR2_PACKAGE_LIBDAEMON + help + Avahi-autoipd implements IPv4LL, "Dynamic Configuration of + IPv4 Link-Local Addresses" (IETF RFC3927), a protocol for + automatic IP address configuration from the link-local + 169.254.0.0/16 range without the need for a central server. + It is primarily intended to be used in ad-hoc networks which + lack a DHCP server. + +config BR2_PACKAGE_AVAHI_DAEMON + bool "mDNS/DNS-SD daemon" + select BR2_PACKAGE_LIBDAEMON + select BR2_PACKAGE_EXPAT + help + The Avahi mDNS/DNS-SD daemon implementing Apple's ZeroConf + architecture (also known as "Rendezvous" or "Bonjour"). + The daemon registers local IP addresses and services using + mDNS/DNS-SD. + +# This hidden option allows packages that need the libavahi-client to +# more easily determine if it's available or not. +config BR2_PACKAGE_AVAHI_LIBAVAHI_CLIENT + bool + default y if BR2_PACKAGE_DBUS + +config BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY + bool "libdns_sd compatibility (Bonjour)" + depends on BR2_PACKAGE_AVAHI_DAEMON + select BR2_PACKAGE_DBUS + help + Enable the libdns_sd (Bonjour) compatibility library support + for legacy applications. + +config BR2_PACKAGE_AVAHI_DEFAULT_SERVICES + bool "install default service definitions" + depends on BR2_PACKAGE_AVAHI_DAEMON + help + Install the SSH/SFTP service definitions included with the + Avahi daemon by default. + +endif + +comment "avahi needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/avahi/S05avahi-setup.sh b/package/avahi/S05avahi-setup.sh new file mode 100644 index 00000000..2f53a192 --- /dev/null +++ b/package/avahi/S05avahi-setup.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +case "$1" in + start|"") + if [ ! -d /tmp/avahi-autoipd ]; then + rm -rf /tmp/avahi-autoipd + mkdir /tmp/avahi-autoipd + chown avahi:avahi /tmp/avahi-autoipd + fi + ;; + stop) ;; + *) + echo "Usage: S05avahi-setup.sh {start|stop}" >&2 + exit 1 + ;; +esac diff --git a/package/avahi/S50avahi-daemon b/package/avahi/S50avahi-daemon new file mode 100644 index 00000000..81ac5131 --- /dev/null +++ b/package/avahi/S50avahi-daemon @@ -0,0 +1,20 @@ +#!/bin/sh +# +# avahi-daemon init script + +DAEMON=/usr/sbin/avahi-daemon +case "$1" in + start) + $DAEMON -c || $DAEMON -D + ;; + stop) + $DAEMON -c && $DAEMON -k + ;; + reload) + $DAEMON -c && $DAEMON -r + ;; + *) + echo "Usage: S50avahi-daemon {start|stop|reload}" >&2 + exit 1 + ;; +esac diff --git a/package/avahi/avahi.hash b/package/avahi/avahi.hash new file mode 100644 index 00000000..3bf22f83 --- /dev/null +++ b/package/avahi/avahi.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 060309d7a333d38d951bc27598c677af1796934dbd98e1024e7ad8de798fedda avahi-0.8.tar.gz +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 LICENSE diff --git a/package/avahi/avahi.mk b/package/avahi/avahi.mk new file mode 100644 index 00000000..1992669a --- /dev/null +++ b/package/avahi/avahi.mk @@ -0,0 +1,210 @@ +################################################################################ +# +# avahi +# +################################################################################ + +AVAHI_VERSION = 0.8 +AVAHI_SITE = https://github.com/lathiat/avahi/releases/download/v$(AVAHI_VERSION) +AVAHI_LICENSE = LGPL-2.1+ +AVAHI_LICENSE_FILES = LICENSE +AVAHI_CPE_ID_VENDOR = avahi +AVAHI_SELINUX_MODULES = avahi +AVAHI_INSTALL_STAGING = YES + +# CVE-2021-26720 is an issue in avahi-daemon-check-dns.sh, which is +# part of the Debian packaging and not part of upstream avahi +AVAHI_IGNORE_CVES += CVE-2021-26720 + +# 0001-Fix-NULL-pointer-crashes-from-175.patch +AVAHI_IGNORE_CVES += CVE-2021-36217 + +AVAHI_CONF_ENV = \ + avahi_cv_sys_cxx_works=yes \ + DATADIRNAME=share + +# Note: even if we have Gtk2 and Gtk3 support in Buildroot, we +# explicitly disable support for them, in order to avoid the following +# circular dependencies: +# +# avahi -> libglade -> libgtk2 -> cups -> avahi +# avahi -> libgtk3 -> cups -> avahi +# +# Since Gtk2 and Gtk3 in Avahi are only used for some example/demo +# programs, we decided to disable their support to solve the circular +# dependency. +AVAHI_CONF_OPTS = \ + --disable-qt3 \ + --disable-qt4 \ + --disable-qt5 \ + --disable-gtk \ + --disable-gtk3 \ + --disable-gdbm \ + --disable-mono \ + --disable-monodoc \ + --disable-stack-protector \ + --disable-introspection \ + --with-distro=none \ + --disable-manpages \ + $(if $(BR2_PACKAGE_AVAHI_AUTOIPD),--enable,--disable)-autoipd \ + --with-avahi-user=avahi \ + --with-avahi-group=avahi \ + --with-autoipd-user=avahi \ + --with-autoipd-group=avahi + +AVAHI_DEPENDENCIES = host-pkgconf $(TARGET_NLS_DEPENDENCIES) + +AVAHI_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +AVAHI_CONF_OPTS += --with-systemdsystemunitdir=/usr/lib/systemd/system +else +AVAHI_CONF_OPTS += --with-systemdsystemunitdir=no +AVAHI_CFLAGS += -DDISABLE_SYSTEMD +endif + +ifneq ($(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_AVAHI_AUTOIPD),) +AVAHI_DEPENDENCIES += libdaemon +else +AVAHI_CONF_OPTS += --disable-libdaemon +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +AVAHI_DEPENDENCIES += libcap +endif + +ifeq ($(BR2_PACKAGE_AVAHI_DAEMON),y) +AVAHI_DEPENDENCIES += expat +AVAHI_CONF_OPTS += --with-xml=expat +else +AVAHI_CONF_OPTS += --with-xml=none +endif + +ifeq ($(BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY),y) +AVAHI_CONF_OPTS += --enable-compat-libdns_sd +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +AVAHI_DEPENDENCIES += dbus +AVAHI_CONF_OPTS += --with-dbus-sys=/usr/share/dbus-1/system.d +else +AVAHI_CONF_OPTS += --disable-dbus +endif + +ifeq ($(BR2_PACKAGE_LIBEVENT),y) +AVAHI_DEPENDENCIES += libevent +else +AVAHI_CONF_OPTS += --disable-libevent +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +AVAHI_DEPENDENCIES += libglib2 +else +AVAHI_CONF_OPTS += --disable-glib --disable-gobject +endif + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +AVAHI_CONF_ENV += \ + am_cv_pathless_PYTHON=python3 \ + am_cv_python_version=$(PYTHON3_VERSION) \ + am_cv_python_platform=linux5 \ + am_cv_python_pythondir=/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages \ + am_cv_python_pyexecdir=/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages \ + py_cv_mod_socket_=yes + +AVAHI_DEPENDENCIES += python3 +AVAHI_CONF_OPTS += --enable-python +else +AVAHI_CONF_OPTS += --disable-python +endif + +ifeq ($(BR2_PACKAGE_DBUS_PYTHON),y) +AVAHI_CONF_OPTS += --enable-python-dbus +AVAHI_CONF_ENV += py_cv_mod_dbus_=yes +AVAHI_DEPENDENCIES += dbus-python +else +AVAHI_CONF_OPTS += --disable-python-dbus +endif + +ifeq ($(BR2_PACKAGE_PYTHON_GOBJECT),y) +AVAHI_CONF_OPTS += --enable-pygobject +AVAHI_DEPENDENCIES += python-gobject +else +AVAHI_CONF_OPTS += --disable-pygobject +endif + +AVAHI_CONF_ENV += CFLAGS="$(AVAHI_CFLAGS)" + +AVAHI_MAKE_OPTS += LIBS=$(TARGET_NLS_LIBS) + +define AVAHI_USERS + avahi -1 avahi -1 * - - - +endef + +define AVAHI_REMOVE_INITSCRIPT + rm -rf $(TARGET_DIR)/etc/init.d/avahi-* +endef + +AVAHI_POST_INSTALL_TARGET_HOOKS += AVAHI_REMOVE_INITSCRIPT + +ifeq ($(BR2_PACKAGE_AVAHI_AUTOIPD),y) +define AVAHI_INSTALL_AUTOIPD + rm -f $(TARGET_DIR)/var/lib/avahi-autoipd + $(INSTALL) -d -m 0755 $(TARGET_DIR)/var/lib + ln -sf /tmp/avahi-autoipd $(TARGET_DIR)/var/lib/avahi-autoipd +endef + +define AVAHI_INSTALL_AUTOIPD_INIT_SYSV + $(INSTALL) -D -m 0755 package/avahi/S05avahi-setup.sh $(TARGET_DIR)/etc/init.d/S05avahi-setup.sh +endef + +AVAHI_POST_INSTALL_TARGET_HOOKS += AVAHI_INSTALL_AUTOIPD +endif + +ifeq ($(BR2_PACKAGE_AVAHI_DAEMON),y) + +ifeq ($(BR2_PACKAGE_SYSTEMD_SYSUSERS),y) +define AVAHI_INSTALL_SYSTEMD_SYSUSERS + $(INSTALL) -D -m 644 package/avahi/avahi_sysusers.conf \ + $(TARGET_DIR)/usr/lib/sysusers.d/avahi.conf +endef +endif + +define AVAHI_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/avahi/avahi_tmpfiles.conf \ + $(TARGET_DIR)/usr/lib/tmpfiles.d/avahi.conf + + $(AVAHI_INSTALL_SYSTEMD_SYSUSERS) +endef + +define AVAHI_INSTALL_DAEMON_INIT_SYSV + $(INSTALL) -D -m 0755 package/avahi/S50avahi-daemon $(TARGET_DIR)/etc/init.d/S50avahi-daemon +endef + +endif + +define AVAHI_INSTALL_INIT_SYSV + $(AVAHI_INSTALL_AUTOIPD_INIT_SYSV) + $(AVAHI_INSTALL_DAEMON_INIT_SYSV) +endef + +ifeq ($(BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY),y) +# applications expects to be able to #include +define AVAHI_STAGING_INSTALL_LIBDNSSD_LINK + ln -sf avahi-compat-libdns_sd/dns_sd.h \ + $(STAGING_DIR)/usr/include/dns_sd.h +endef + +AVAHI_POST_INSTALL_STAGING_HOOKS += AVAHI_STAGING_INSTALL_LIBDNSSD_LINK +endif + +ifeq ($(BR2_PACKAGE_AVAHI_DEFAULT_SERVICES),) +define AVAHI_REMOVE_DEFAULT_SERVICES + $(foreach service,ssh sftp-ssh, \ + $(RM) -f $(TARGET_DIR)/etc/avahi/services/$(service).service + ) +endef +AVAHI_POST_INSTALL_TARGET_HOOKS += AVAHI_REMOVE_DEFAULT_SERVICES +endif + +$(eval $(autotools-package)) diff --git a/package/avahi/avahi_sysusers.conf b/package/avahi/avahi_sysusers.conf new file mode 100644 index 00000000..463ce97c --- /dev/null +++ b/package/avahi/avahi_sysusers.conf @@ -0,0 +1,5 @@ +# sysusers.d snippet for creating the avahi system user automatically +# at boot on systemd-based systems that ship with an unpopulated +# /etc. See sysusers.d(5) for details. + +u avahi - "Avahi mDNS/DNS-SD Stack" diff --git a/package/avahi/avahi_tmpfiles.conf b/package/avahi/avahi_tmpfiles.conf new file mode 100644 index 00000000..da23c147 --- /dev/null +++ b/package/avahi/avahi_tmpfiles.conf @@ -0,0 +1 @@ +d /tmp/avahi-autoipd 0755 avahi avahi diff --git a/package/avocado/Config.in b/package/avocado/Config.in new file mode 100644 index 00000000..cd438350 --- /dev/null +++ b/package/avocado/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_AVOCADO + bool "avocado" + depends on BR2_USE_WCHAR # python3 + depends on BR2_USE_MMU # python3 + depends on BR2_TOOLCHAIN_HAS_THREADS # python3 + depends on !BR2_STATIC_LIBS # python3 + select BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON3_BZIP2 + select BR2_PACKAGE_PYTHON3_PYEXPAT + select BR2_PACKAGE_PYTHON3_SQLITE + select BR2_PACKAGE_PYTHON3_XZ + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime, pkg_resources + help + Avocado is an automated testing suite containing + tests for various subsystems. + + https://avocado-framework.readthedocs.io/ + +comment "avocado 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/package/avocado/avocado.hash b/package/avocado/avocado.hash new file mode 100644 index 00000000..117d7086 --- /dev/null +++ b/package/avocado/avocado.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 bec1bfab821030f04306a93d2b2061a4a28db538873702f746d5bc050d92685b avocado-98.0.tar.gz +sha256 680ce56e9c4043826f0f1420935d2453ea3ddacd1582cb6f1cef26c1077fcc93 LICENSE diff --git a/package/avocado/avocado.mk b/package/avocado/avocado.mk new file mode 100644 index 00000000..b308a37b --- /dev/null +++ b/package/avocado/avocado.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# avocado +# +################################################################################ + +AVOCADO_VERSION = 98.0 +AVOCADO_SITE = $(call github,avocado-framework,avocado,$(AVOCADO_VERSION)) +AVOCADO_SETUP_TYPE = setuptools +AVOCADO_LICENSE = GPL-2.0 +AVOCADO_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/avrdude/Config.in b/package/avrdude/Config.in new file mode 100644 index 00000000..06fee0ca --- /dev/null +++ b/package/avrdude/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_AVRDUDE + bool "avrdude" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR # elfutils + depends on !BR2_STATIC_LIBS # elfutils + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_ELFUTILS + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + select BR2_PACKAGE_NCURSES + help + avrdude is a programmer for Atmel AVR microcontrollers + this package provides a version with new linuxspi driver + + https://github.com/kcuzner/avrdude + +if BR2_PACKAGE_AVRDUDE + +config BR2_PACKAGE_AVRDUDE_SPI + bool "SPI support" + default y # Backward compatibility + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8 + +comment "SPI support needs a toolchain w/ linux headers >= 4.8" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8 + +endif + +comment "avrdude needs a toolchain w/ threads, wchar, dynamic library, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR \ + || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/avrdude/avrdude.hash b/package/avrdude/avrdude.hash new file mode 100644 index 00000000..cb34e6b6 --- /dev/null +++ b/package/avrdude/avrdude.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 beb4e0b0a07f8d47e550329ab93c345d5252350de6f833afde51b4d8bd934674 avrdude-7.2.tar.gz +sha256 201babc7da198873304a77a30dbfc7ca449c9bba52df2dffa4cca0009dbdfcb2 COPYING diff --git a/package/avrdude/avrdude.mk b/package/avrdude/avrdude.mk new file mode 100644 index 00000000..89637d4c --- /dev/null +++ b/package/avrdude/avrdude.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# avrdude +# +################################################################################ + +AVRDUDE_VERSION = 7.2 +AVRDUDE_SITE = $(call github,avrdudes,avrdude,v$(AVRDUDE_VERSION)) +AVRDUDE_LICENSE = GPL-2.0+ +AVRDUDE_LICENSE_FILES = COPYING + +AVRDUDE_CONF_OPTS = -DHAVE_LINUXGPIO=ON +AVRDUDE_DEPENDENCIES = elfutils libusb libusb-compat ncurses \ + host-flex host-bison + +ifeq ($(BR2_PACKAGE_AVRDUDE_SPI),y) +AVRDUDE_CONF_OPTS += -DHAVE_LINUXSPI=ON +else +AVRDUDE_CONF_OPTS += -DHAVE_LINUXSPI=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBFTDI1),y) +AVRDUDE_DEPENDENCIES += libftdi1 +else ifeq ($(BR2_PACKAGE_LIBFTDI),y) +AVRDUDE_DEPENDENCIES += libftdi +endif + +ifeq ($(BR2_PACKAGE_HIDAPI),y) +AVRDUDE_DEPENDENCIES += hidapi +endif + +# if /etc/avrdude.conf exists, the installation process creates a +# backup file, which we do not want in the context of Buildroot. +define AVRDUDE_REMOVE_BACKUP_FILE + $(RM) -f $(TARGET_DIR)/etc/avrdude.conf.bak +endef + +AVRDUDE_POST_INSTALL_TARGET_HOOKS += AVRDUDE_REMOVE_BACKUP_FILE + +$(eval $(cmake-package)) diff --git a/package/avro-c/0001-AVRO-3957-Fix-typos-in-docs-and-examples-2795.patch b/package/avro-c/0001-AVRO-3957-Fix-typos-in-docs-and-examples-2795.patch new file mode 100644 index 00000000..72faaa0a --- /dev/null +++ b/package/avro-c/0001-AVRO-3957-Fix-typos-in-docs-and-examples-2795.patch @@ -0,0 +1,59 @@ +From 52f051dbeefad0b7e73187becad6c33747b047d3 Mon Sep 17 00:00:00 2001 +From: Sahil Kang +Date: Mon, 11 Mar 2024 03:01:21 -0700 +Subject: [PATCH] AVRO-3957: [C] Fix typos in docs and examples (#2795) + +* AVRO-3957: [C] Fix misformatted type in docs + +Signed-off-by: Sahil Kang +Signed-off-by: Sahil Kang + +* AVRO-3957: [C] Fix type in quickstop example + +This removes the following warning: + + avro/lang/c/examples/quickstop.c:123:40: warning: incompatible pointer types passing 'int32_t **' (aka 'int **') to parameter of type + 'const char **' [-Wincompatible-pointer-types] + avro_value_get_string(&first_value, &p, &size); + +Signed-off-by: Sahil Kang +Signed-off-by: Sahil Kang + +--------- + +Signed-off-by: Sahil Kang +Signed-off-by: Sahil Kang + +Upstream: https://github.com/apache/avro/commit/52f051dbeefad0b7e73187becad6c33747b047d3 +Signed-off-by: Fabrice Fontaine +--- + lang/c/docs/index.txt | 2 +- + lang/c/examples/quickstop.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/docs/index.txt b/docs/index.txt +index a439a052631..df16f9d9678 100644 +--- a/docs/index.txt ++++ b/docs/index.txt +@@ -178,7 +178,7 @@ different versions of the Avro library. That means that it's really + only safe to use these hash values internally within the context of a + single execution of a single application. + +-The +reset+ method “clears out” an +avro_value_t instance, making sure ++The +reset+ method “clears out” an +avro_value_t+ instance, making sure + that it's ready to accept the contents of a new value. For scalars, + this is usually a no-op, since the new value will just overwrite the old + one. For arrays and maps, this removes any existing elements from the +diff --git a/examples/quickstop.c b/examples/quickstop.c +index ff9e9700590..b26dad10c04 100644 +--- a/examples/quickstop.c ++++ b/examples/quickstop.c +@@ -107,7 +107,7 @@ int print_person(avro_file_reader_t db, avro_schema_t reader_schema) + if (rval == 0) { + int64_t id; + int32_t age; +- int32_t *p; ++ const char *p; + size_t size; + avro_value_t id_value; + avro_value_t first_value; diff --git a/package/avro-c/Config.in b/package/avro-c/Config.in new file mode 100644 index 00000000..76d9123a --- /dev/null +++ b/package/avro-c/Config.in @@ -0,0 +1,27 @@ +comment "avro-c needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + +config BR2_PACKAGE_AVRO_C + bool "avro-c" + depends on !BR2_STATIC_LIBS # Avro unconditionally compiles shared libs + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_JANSSON + help + Select this option to install the Avro C language bindings, + and the command line tools avroappend, avrocat, avromod and + avropipe. + + Apache Avro is a data serialization system. + Avro provides: + - Rich data structures. + - A compact, fast, binary data format. + - A container file, to store persistent data. + - Remote procedure call (RPC). + - Simple integration with dynamic languages. + - Code generation is not required to read or write data + files nor to use or implement RPC protocols. + - Code generation as an optional optimization, + only worth implementing for statically typed languages. + + http://avro.apache.org/ diff --git a/package/avro-c/avro-c.hash b/package/avro-c/avro-c.hash new file mode 100644 index 00000000..83b5759a --- /dev/null +++ b/package/avro-c/avro-c.hash @@ -0,0 +1,5 @@ +# From https://downloads.apache.org/avro/avro-1.11.3/c/avro-c-1.11.3.tar.gz.sha512 +sha512 56ce8c6f0b06b779679a6e7a2b738ec94277920e9b3d7c6f1062a0b47db80b90dccf89df9d977ec1f120211f7c2f33845e18df4961818e5c5cc93aaec18e1302 avro-c-1.11.3.tar.gz + +# License files +sha256 d62488d6ba17132e92c23c03c80bfedc848267f96ab36489fec860f76cf6819a LICENSE diff --git a/package/avro-c/avro-c.mk b/package/avro-c/avro-c.mk new file mode 100644 index 00000000..d7efdc20 --- /dev/null +++ b/package/avro-c/avro-c.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# avro-c +# +################################################################################ + +# When updating the version, please also update python-avro +AVRO_C_VERSION = 1.11.3 +AVRO_C_SITE = https://www-eu.apache.org/dist/avro/avro-$(AVRO_C_VERSION)/c +AVRO_C_LICENSE = Apache-2.0 +AVRO_C_LICENSE_FILES = LICENSE +AVRO_C_INSTALL_STAGING = YES +AVRO_C_DEPENDENCIES = host-pkgconf jansson + +ifeq ($(BR2_PACKAGE_SNAPPY),y) +AVRO_C_DEPENDENCIES += snappy +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +AVRO_C_DEPENDENCIES += zlib +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +AVRO_C_DEPENDENCIES += xz +endif + +$(eval $(cmake-package)) diff --git a/package/axel/Config.in b/package/axel/Config.in new file mode 100644 index 00000000..740095a5 --- /dev/null +++ b/package/axel/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_AXEL + bool "axel" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C11/stdatomic.h + help + HTTP/FTP download accelerator. + + https://github.com/axel-download-accelerator/axel/ + +comment "axel needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/axel/axel.hash b/package/axel/axel.hash new file mode 100644 index 00000000..4902dd79 --- /dev/null +++ b/package/axel/axel.hash @@ -0,0 +1,2 @@ +sha256 938ee7c8c478bf6fcc82359bbf9576f298033e8b13908e53e3ea9c45c1443693 axel-2.17.14.tar.xz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/axel/axel.mk b/package/axel/axel.mk new file mode 100644 index 00000000..ff96ea94 --- /dev/null +++ b/package/axel/axel.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# axel +# +################################################################################ + +AXEL_VERSION = 2.17.14 +AXEL_SITE = https://github.com/axel-download-accelerator/axel/releases/download/v$(AXEL_VERSION) +AXEL_SOURCE = axel-$(AXEL_VERSION).tar.xz +AXEL_LICENSE = GPL-2.0+ +AXEL_LICENSE_FILES = COPYING +AXEL_CPE_ID_VALID = YES +AXEL_DEPENDENCIES = host-pkgconf $(TARGET_NLS_DEPENDENCIES) + +AXEL_CONF_OPTS = \ + CFLAGS="$(TARGET_CFLAGS)" + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +AXEL_CONF_OPTS += --with-ssl=openssl +AXEL_DEPENDENCIES += openssl +else ifeq ($(BR2_PACKAGE_WOLFSSL_ALL),y) +AXEL_CONF_OPTS += --with-ssl=wolfssl +AXEL_DEPENDENCIES += wolfssl +else +AXEL_CONF_OPTS += --without-ssl +endif + +$(eval $(autotools-package)) diff --git a/package/axfsutils/axfsutils.hash b/package/axfsutils/axfsutils.hash new file mode 100644 index 00000000..b7a5943d --- /dev/null +++ b/package/axfsutils/axfsutils.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 7d8c0febaf6f104c2b179475ea1ee6d361688ad7fa4c98dfdf7395fcff2be685 axfsutils-384a1ea214c8cf8359faba00a12513ee7ae1a9f5.tar.gz +sha256 1929a1e67d189aa3a24de76255841b33818f7f65944b6e73a1568ba575ab54d5 mkfs.axfs-legacy/COPYING diff --git a/package/axfsutils/axfsutils.mk b/package/axfsutils/axfsutils.mk new file mode 100644 index 00000000..88792216 --- /dev/null +++ b/package/axfsutils/axfsutils.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# axfsutils +# +################################################################################ + +AXFSUTILS_VERSION = 384a1ea214c8cf8359faba00a12513ee7ae1a9f5 +AXFSUTILS_SITE = $(call github,jaredeh,axfs,$(AXFSUTILS_VERSION)) +AXFSUTILS_LICENSE = GPL-2.0 +AXFSUTILS_LICENSE_FILES = mkfs.axfs-legacy/COPYING +HOST_AXFSUTILS_DEPENDENCIES = host-zlib + +# The 'new' mkfs.axfs version requires GNUstep which is not a buildroot +# prerequisite. The 'legacy' one works just as well without that requirement. +define HOST_AXFSUTILS_BUILD_CMDS + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D)/mkfs.axfs-legacy +endef + +define HOST_AXFSUTILS_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/mkfs.axfs-legacy/mkfs.axfs \ + $(HOST_DIR)/bin/mkfs.axfs +endef + +$(eval $(host-generic-package)) diff --git a/package/azmq/Config.in b/package/azmq/Config.in new file mode 100644 index 00000000..7bdd07eb --- /dev/null +++ b/package/azmq/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_AZMQ + bool "azmq" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_TOOLCHAIN_HAS_THREADS # boost, zeromq + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_USE_WCHAR # boost + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr + select BR2_PACKAGE_ZEROMQ + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_CHRONO + select BR2_PACKAGE_BOOST_DATE_TIME + select BR2_PACKAGE_BOOST_RANDOM + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_THREAD + help + This library provides Boost Asio style bindings for ZeroMQ. + + https://github.com/zeromq/azmq + +comment "azmq needs a toolchain w/ C++11, wchar and threads" + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \ + && BR2_USE_WCHAR && BR2_TOOLCHAIN_HAS_THREADS) + +comment "azmq needs exception_ptr" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/azmq/azmq.hash b/package/azmq/azmq.hash new file mode 100644 index 00000000..6caf5358 --- /dev/null +++ b/package/azmq/azmq.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 80cfb951c5614b8c2e55a59ea2e5723a18ebed08da80e5420e525d6bf273771a azmq-1.0.3.tar.gz +sha256 c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566 LICENSE-BOOST_1_0 diff --git a/package/azmq/azmq.mk b/package/azmq/azmq.mk new file mode 100644 index 00000000..a72b1556 --- /dev/null +++ b/package/azmq/azmq.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# azmq +# +################################################################################ + +AZMQ_VERSION = 1.0.3 +AZMQ_SITE = $(call github,zeromq,azmq,v$(AZMQ_VERSION)) +AZMQ_DEPENDENCIES = boost zeromq +AZMQ_LICENSE = BSL-1.0 +AZMQ_LICENSE_FILES = LICENSE-BOOST_1_0 + +# AZMQ is a header only library, so it does not need to be installed on the +# target. +AZMQ_INSTALL_STAGING = YES +AZMQ_INSTALL_TARGET = NO + +AZMQ_CONF_OPTS = -DAZMQ_NO_TESTS=ON + +$(eval $(cmake-package)) diff --git a/package/azure-iot-sdk-c/Config.in b/package/azure-iot-sdk-c/Config.in new file mode 100644 index 00000000..86074652 --- /dev/null +++ b/package/azure-iot-sdk-c/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_AZURE_IOT_SDK_C + bool "azure-iot-sdk-c" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_USE_WCHAR + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Microsoft Azure IoT Hub device SDK for C is used + to connect devices running C code to Azure IoT Hub. + + https://github.com/Azure/azure-iot-sdk-c + +comment "azure-iot-sdk-c needs a toolchain w/ C++, NPTL and wchar" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_USE_WCHAR diff --git a/package/azure-iot-sdk-c/azure-iot-sdk-c.hash b/package/azure-iot-sdk-c/azure-iot-sdk-c.hash new file mode 100644 index 00000000..fdc1acc6 --- /dev/null +++ b/package/azure-iot-sdk-c/azure-iot-sdk-c.hash @@ -0,0 +1,5 @@ +# Locally computed: +sha256 73bf42846089152d298d4a3810df274820aa84013943676eb71a7d4131a4a769 azure-iot-sdk-c-LTS_08_2023-git4.tar.gz + +# Hash for license files: +sha256 be2e9913fad9ff33607287c728f392579e2a6cc83e51b203ef6274c41db02ee7 LICENSE diff --git a/package/azure-iot-sdk-c/azure-iot-sdk-c.mk b/package/azure-iot-sdk-c/azure-iot-sdk-c.mk new file mode 100644 index 00000000..4d0ecb07 --- /dev/null +++ b/package/azure-iot-sdk-c/azure-iot-sdk-c.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# azure-iot-sdk-c +# +################################################################################ + +AZURE_IOT_SDK_C_VERSION = LTS_08_2023 +AZURE_IOT_SDK_C_SITE = https://github.com/Azure/azure-iot-sdk-c +AZURE_IOT_SDK_C_SITE_METHOD = git +AZURE_IOT_SDK_C_GIT_SUBMODULES = YES +AZURE_IOT_SDK_C_LICENSE = MIT +AZURE_IOT_SDK_C_LICENSE_FILES = LICENSE +AZURE_IOT_SDK_C_INSTALL_STAGING = YES +AZURE_IOT_SDK_C_DEPENDENCIES = libxml2 openssl libcurl util-linux +AZURE_IOT_SDK_C_CONF_OPTS = -Dskip_samples=ON + +ifeq ($(BR2_STATIC_LIBS),y) +AZURE_IOT_SDK_C_CONF_OPTS += -Duse_prov_client=OFF +else +AZURE_IOT_SDK_C_CONF_OPTS += -Duse_prov_client=ON +endif + +$(eval $(cmake-package)) diff --git a/package/b43-firmware/Config.in b/package/b43-firmware/Config.in new file mode 100644 index 00000000..7cef0239 --- /dev/null +++ b/package/b43-firmware/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_B43_FIRMWARE + bool "b43-firmware" + help + Firmware for the Broadcom Wifi devices supported by the b43 + kernel driver. + +if BR2_PACKAGE_B43_FIRMWARE + +choice + prompt "Kernel version" + default BR2_PACKAGE_B43_FIRMWARE_KERNEL_AFTER_3_2 + help + Select the kernel version you're using. The b43 driver in + kernel >= 3.2 need a different firmware than the b43 drivers + from kernel < 3.2. + +config BR2_PACKAGE_B43_FIRMWARE_KERNEL_AFTER_3_2 + bool ">= 3.2" + +config BR2_PACKAGE_B43_FIRMWARE_KERNEL_BEFORE_3_2 + bool "< 3.2" + +endchoice + +endif diff --git a/package/b43-firmware/b43-firmware.hash b/package/b43-firmware/b43-firmware.hash new file mode 100644 index 00000000..0e61b6b5 --- /dev/null +++ b/package/b43-firmware/b43-firmware.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 f1e7067aac5b62b67b8b6e4c517990277804339ac16065eb13c731ff909ae46f broadcom-wl-5.100.138.tar.bz2 +sha256 26a8c370f48fc129d0731cfd751c36cae1419b0bc8ca35781126744e60eae009 broadcom-wl-5.10.56.27.3_mipsel.tar.bz2 diff --git a/package/b43-firmware/b43-firmware.mk b/package/b43-firmware/b43-firmware.mk new file mode 100644 index 00000000..8e9e8776 --- /dev/null +++ b/package/b43-firmware/b43-firmware.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# b43-firmware +# +################################################################################ + +ifeq ($(BR2_PACKAGE_B43_FIRMWARE_KERNEL_AFTER_3_2),y) +B43_FIRMWARE_VERSION = 5.100.138 +B43_FIRMWARE_SITE = http://www.lwfinger.com/b43-firmware +B43_FIRMWARE_SOURCE = broadcom-wl-$(B43_FIRMWARE_VERSION).tar.bz2 +B43_FIRMWARE_DRIVER_FILE = linux/wl_apsta.o +else ifeq ($(BR2_PACKAGE_B43_FIRMWARE_KERNEL_BEFORE_3_2),y) +B43_FIRMWARE_VERSION = 5.10.56.27.3 +B43_FIRMWARE_SITE = http://mirror2.openwrt.org/sources +B43_FIRMWARE_SOURCE = broadcom-wl-$(B43_FIRMWARE_VERSION)_mipsel.tar.bz2 +B43_FIRMWARE_DRIVER_FILE = driver/wl_apsta/wl_prebuilt.o +endif + +B43_FIRMWARE_LICENSE = PROPRIETARY +B43_FIRMWARE_REDISTRIBUTE = NO + +B43_FIRMWARE_DEPENDENCIES = host-b43-fwcutter + +define B43_FIRMWARE_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/lib/firmware/ + $(HOST_DIR)/bin/b43-fwcutter -w $(TARGET_DIR)/lib/firmware/ $(@D)/$(B43_FIRMWARE_DRIVER_FILE) +endef + +$(eval $(generic-package)) diff --git a/package/b43-fwcutter/b43-fwcutter.hash b/package/b43-fwcutter/b43-fwcutter.hash new file mode 100644 index 00000000..9d125daa --- /dev/null +++ b/package/b43-fwcutter/b43-fwcutter.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +sha256 d6ea85310df6ae08e7f7e46d8b975e17fc867145ee249307413cfbe15d7121ce b43-fwcutter-019.tar.bz2 + +# Hash for license file +sha256 6af9fc424d57f29b7e59b35e52d4a91aca80304506275f2c0c076317fc6eb583 COPYING diff --git a/package/b43-fwcutter/b43-fwcutter.mk b/package/b43-fwcutter/b43-fwcutter.mk new file mode 100644 index 00000000..9c1e1110 --- /dev/null +++ b/package/b43-fwcutter/b43-fwcutter.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# b43-fwcutter +# +################################################################################ + +B43_FWCUTTER_VERSION = 019 +B43_FWCUTTER_SITE = http://bues.ch/b43/fwcutter +B43_FWCUTTER_SOURCE = b43-fwcutter-$(B43_FWCUTTER_VERSION).tar.bz2 +B43_FWCUTTER_LICENSE = BSD-2-Clause +B43_FWCUTTER_LICENSE_FILES = COPYING + +define HOST_B43_FWCUTTER_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define HOST_B43_FWCUTTER_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/b43-fwcutter $(HOST_DIR)/bin/b43-fwcutter +endef + +$(eval $(host-generic-package)) diff --git a/package/babeld/Config.in b/package/babeld/Config.in new file mode 100644 index 00000000..c7010e1f --- /dev/null +++ b/package/babeld/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_BABELD + bool "babeld" + depends on BR2_USE_MMU # fork() + help + Babel is a loop-avoiding distance-vector routing protocol for + IPv6 and IPv4 with fast convergence properties. + + http://www.pps.univ-paris-diderot.fr/~jch/software/babel/ diff --git a/package/babeld/S50babeld b/package/babeld/S50babeld new file mode 100644 index 00000000..c75b4c37 --- /dev/null +++ b/package/babeld/S50babeld @@ -0,0 +1,40 @@ +#!/bin/sh +# +# Starts babeld. +# + +# Allow a few customizations from a config file +test -r /etc/default/babeld && . /etc/default/babeld + +start() { + printf "Starting babeld: " + start-stop-daemon -S -q -p /run/babeld.pid \ + --exec /usr/sbin/babeld -- $DAEMON_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping babeld: " + start-stop-daemon -K -q -p /run/babeld.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/package/babeld/babeld.hash b/package/babeld/babeld.hash new file mode 100644 index 00000000..1c534d61 --- /dev/null +++ b/package/babeld/babeld.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 22549e27645ecb9ef4c715a3cbeea01fa2dc7ea6951e8f97dc9c4a7b2a1de8f5 babeld-babeld-1.9.2-git4.tar.gz +sha256 b415c41292cedef6c97b243609e50552887c29343566c639f23282d31efd2afd LICENCE diff --git a/package/babeld/babeld.mk b/package/babeld/babeld.mk new file mode 100644 index 00000000..ac32e798 --- /dev/null +++ b/package/babeld/babeld.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# babeld +# +################################################################################ + +BABELD_VERSION = babeld-1.9.2 +BABELD_SITE = https://github.com/jech/babeld +BABELD_SITE_METHOD = git +BABELD_LICENSE = MIT +BABELD_LICENSE_FILES = LICENCE + +define BABELD_BUILD_CMDS + $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define BABELD_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/babeld $(TARGET_DIR)/usr/sbin/babeld +endef + +define BABELD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/babeld/S50babeld \ + $(TARGET_DIR)/etc/init.d/S50babeld +endef + +define BABELD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/babeld/babeld.service \ + $(TARGET_DIR)/usr/lib/systemd/system/babeld.service +endef + +$(eval $(generic-package)) diff --git a/package/babeld/babeld.service b/package/babeld/babeld.service new file mode 100644 index 00000000..abe72a8c --- /dev/null +++ b/package/babeld/babeld.service @@ -0,0 +1,10 @@ +[Unit] +Description=Babel daemon + +[Service] +EnvironmentFile=-/etc/default/babeld +ExecStart=/usr/sbin/babeld $DAEMON_ARGS +ExecReload=/bin/kill -HUP $MAINPID + +[Install] +WantedBy=multi-user.target diff --git a/package/babeltrace2/0001-configure-simplify-warning-flags-detection.patch b/package/babeltrace2/0001-configure-simplify-warning-flags-detection.patch new file mode 100644 index 00000000..ec7ea83f --- /dev/null +++ b/package/babeltrace2/0001-configure-simplify-warning-flags-detection.patch @@ -0,0 +1,669 @@ +From 28ba44ad9ca14153e96c94a9100423ea224c1af3 Mon Sep 17 00:00:00 2001 +From: Simon Marchi +Date: Tue, 18 Feb 2020 13:14:22 -0500 +Subject: [PATCH] configure: simplify warning flags detection + +We currently use the AX_COMPILER_FLAGS macro to detect the warning flags +that the current compiler supports. It works, but is quite invasive. +It unconditionally enables a bunch of warnings we don't want, which +forces us to disable them with many -Wno-foo switches. + +Instead of using AX_COMPILER_FLAGS, we can use the slightly lower lever +macro AX_APPEND_COMPILE_FLAGS to achieve our goal of detecting which +warning flags are supported. This is what we ended up using in +lttng-tools (a completely unrelated project, but that has a suspiciously +high ratio of contributors in common with Babeltrace). + +I looked in our git history to see which warning flags were mentioned in +commit messages. I have added the flags that did find actual problems +and are not enabled by default to the AX_APPEND_COMPILE_FLAGS invocation. +I have also added the flags that AX_COMPILER_FLAGS did provide, which we +didn't need to disable. + +The --{enable,disable}-Werror flag is added using an explicit +AC_ARG_ENABLE. In lttng-tools, it was decided to _not_ have -Werror by +default, so I suggest we do the same in Babeltrace, for consistency +(although it saddens me very much). Developers who want to build with +-Werror will need to pass --enable-Werror. + +Note that with this patch, we lose the following configure switch, that +is provided by AX_COMPILER_FLAGS: + + --enable-compile-warnings=[no/yes/error] + +Change-Id: If968f7385a7f5c48d27f402c76bc26241a8f505a +Signed-off-by: Simon Marchi +Reviewed-on: https://review.lttng.org/c/babeltrace/+/3209 +Tested-by: jenkins +Reviewed-by: Michael Jeanson + +[Retrieved from: +https://github.com/efficios/babeltrace/commit/28ba44ad9ca14153e96c94a9100423ea224c1af3] +Signed-off-by: Fabrice Fontaine +--- + configure.ac | 74 +++++++++------ + m4/ax_compiler_flags.m4 | 158 ------------------------------- + m4/ax_compiler_flags_cflags.m4 | 161 -------------------------------- + m4/ax_compiler_flags_gir.m4 | 60 ------------ + m4/ax_compiler_flags_ldflags.m4 | 111 ---------------------- + 5 files changed, 46 insertions(+), 518 deletions(-) + delete mode 100644 m4/ax_compiler_flags.m4 + delete mode 100644 m4/ax_compiler_flags_cflags.m4 + delete mode 100644 m4/ax_compiler_flags_gir.m4 + delete mode 100644 m4/ax_compiler_flags_ldflags.m4 + +diff --git a/configure.ac b/configure.ac +index 055fba101..7ebcf2ad4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -660,25 +660,35 @@ target. + CFLAGS=${save_CFLAGS} + + # Detect C and LD warning flags supported by the compiler. +-AX_COMPILER_FLAGS( +- [WARN_CFLAGS], dnl CFLAGS variable name +- [WARN_LDFLAGS], dnl LDFLAGS variable name (unused for now) +- [], dnl is-release +- [], dnl Extra base CFLAGS +- [ dnl Extra "yes" CFLAGS +- dnl Disable these flags, either because we don't want them +- dnl or because we want them but are not ready to enable them +- dnl yet. +- -Wno-sign-compare dnl +- -Wno-inline dnl +- -Wno-declaration-after-statement dnl +- -Wno-switch-enum dnl +- -Wno-switch-default dnl +- -Wno-packed dnl +- -Wno-pointer-arith dnl ++ ++# Detect warning flags supported by the compiler, append them to WARN_CFLAGS. ++# ++# Pass -Werror as an extra flag during the test: this is needed to make the ++# -Wunknown-warning-option diagnostic fatal with clang. ++AX_APPEND_COMPILE_FLAGS([ dnl ++ -Wall dnl ++ -Wextra dnl ++ -Wstrict-prototypes dnl ++ -Wmissing-prototypes dnl ++ -Wmissing-declarations dnl ++ -Wnull-dereference dnl ++ -Wundef dnl ++ -Wredundant-decls dnl ++ -Wshadow dnl ++ -Wjump-misses-init dnl ++ -Wtautological-constant-out-of-range-compare dnl ++ -Wnested-externs dnl ++ -Wwrite-strings dnl ++ -Wformat=2 dnl + -Wno-format-nonliteral dnl +- -Wno-double-promotion dnl +- -Wno-cast-align dnl ++ -Wstrict-aliasing dnl ++ -Wmissing-noreturn dnl ++ -Winit-self dnl ++ -Wduplicated-cond dnl ++ -Wduplicated-branches dnl ++ -Wlogical-op dnl ++ -Wno-unused-parameter dnl ++ -Wno-sign-compare dnl + dnl + dnl Some versions of SWIG (like 3.0.12) generate code that produces + dnl -Wcast-function-type warnings. This warning is present in gcc >= 8. This +@@ -692,24 +702,32 @@ AX_COMPILER_FLAGS( + dnl + dnl Ref: https://github.com/swig/swig/issues/1259 + -Wno-cast-function-type dnl +- ]) +- +-# CFLAGS from AX_COMPILER_FLAGS. +-AM_CFLAGS="${AM_CFLAGS} ${WARN_CFLAGS}" ++ -Wno-missing-field-initializers dnl ++ ], ++ [WARN_CFLAGS], ++ [-Werror]) ++ ++# When given, add -Werror to WARN_CFLAGS. ++AC_ARG_ENABLE([Werror], ++ [AS_HELP_STRING([--enable-Werror], [Treat compiler warnings as errors.])] ++) ++AS_IF([test "x$enable_Werror" = "xyes"], ++ [WARN_CFLAGS="${WARN_CFLAGS} -Werror"] ++) + +-# The test used in AX_COMPILER_FLAGS, generated using AC_LANG_PROGRAM, is ++# The test used in AX_APPEND_COMPILE_FLAGS, generated using AC_LANG_PROGRAM, is + # written in such a way that it triggers a -Wold-style-definition warning. So +-# if the user has -Werror in their CFLAGS, that warning flag will end up +-# disabled, because the test program will not build. ++# this warning always ends up disabled if we put it there, because the test ++# program does not build. + # + # Enable it here unconditionally. It is supported by GCC >= 4.8 and by Clang + # (it is accepted for compatibility although it has no effect), and there is + # not reason to not want it. + +-AM_CFLAGS="${AM_CFLAGS} -Wold-style-definition" ++WARN_CFLAGS="${WARN_CFLAGS} -Wold-style-definition" + +-# We want this one to always be an error. +-AM_CFLAGS="${AM_CFLAGS} -Werror=implicit-function-declaration" ++# CFLAGS from AX_APPEND_COMPILE_FLAGS. ++AM_CFLAGS="${AM_CFLAGS} ${WARN_CFLAGS}" + + # Done for AM_CFLAGS. + AC_SUBST(AM_CFLAGS) +diff --git a/m4/ax_compiler_flags.m4 b/m4/ax_compiler_flags.m4 +deleted file mode 100644 +index ddb0456c4..000000000 +--- a/m4/ax_compiler_flags.m4 ++++ /dev/null +@@ -1,158 +0,0 @@ +-# =========================================================================== +-# https://www.gnu.org/software/autoconf-archive/ax_compiler_flags.html +-# =========================================================================== +-# +-# SYNOPSIS +-# +-# AX_COMPILER_FLAGS([CFLAGS-VARIABLE], [LDFLAGS-VARIABLE], [IS-RELEASE], [EXTRA-BASE-CFLAGS], [EXTRA-YES-CFLAGS], [UNUSED], [UNUSED], [UNUSED], [EXTRA-BASE-LDFLAGS], [EXTRA-YES-LDFLAGS], [UNUSED], [UNUSED], [UNUSED]) +-# +-# DESCRIPTION +-# +-# Check for the presence of an --enable-compile-warnings option to +-# configure, defaulting to "error" in normal operation, or "yes" if +-# IS-RELEASE is equal to "yes". Return the value in the variable +-# $ax_enable_compile_warnings. +-# +-# Depending on the value of --enable-compile-warnings, different compiler +-# warnings are checked to see if they work with the current compiler and, +-# if so, are appended to CFLAGS-VARIABLE and LDFLAGS-VARIABLE. This +-# allows a consistent set of baseline compiler warnings to be used across +-# a code base, irrespective of any warnings enabled locally by individual +-# developers. By standardising the warnings used by all developers of a +-# project, the project can commit to a zero-warnings policy, using -Werror +-# to prevent compilation if new warnings are introduced. This makes +-# catching bugs which are flagged by warnings a lot easier. +-# +-# By providing a consistent --enable-compile-warnings argument across all +-# projects using this macro, continuous integration systems can easily be +-# configured the same for all projects. Automated systems or build +-# systems aimed at beginners may want to pass the --disable-Werror +-# argument to unconditionally prevent warnings being fatal. +-# +-# --enable-compile-warnings can take the values: +-# +-# * no: Base compiler warnings only; not even -Wall. +-# * yes: The above, plus a broad range of useful warnings. +-# * error: The above, plus -Werror so that all warnings are fatal. +-# Use --disable-Werror to override this and disable fatal +-# warnings. +-# +-# The set of base and enabled flags can be augmented using the +-# EXTRA-*-CFLAGS and EXTRA-*-LDFLAGS variables, which are tested and +-# appended to the output variable if --enable-compile-warnings is not +-# "no". Flags should not be disabled using these arguments, as the entire +-# point of AX_COMPILER_FLAGS is to enforce a consistent set of useful +-# compiler warnings on code, using warnings which have been chosen for low +-# false positive rates. If a compiler emits false positives for a +-# warning, a #pragma should be used in the code to disable the warning +-# locally. See: +-# +-# https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas +-# +-# The EXTRA-* variables should only be used to supply extra warning flags, +-# and not general purpose compiler flags, as they are controlled by +-# configure options such as --disable-Werror. +-# +-# IS-RELEASE can be used to disable -Werror when making a release, which +-# is useful for those hairy moments when you just want to get the release +-# done as quickly as possible. Set it to "yes" to disable -Werror. By +-# default, it uses the value of $ax_is_release, so if you are using the +-# AX_IS_RELEASE macro, there is no need to pass this parameter. For +-# example: +-# +-# AX_IS_RELEASE([git-directory]) +-# AX_COMPILER_FLAGS() +-# +-# CFLAGS-VARIABLE defaults to WARN_CFLAGS, and LDFLAGS-VARIABLE defaults +-# to WARN_LDFLAGS. Both variables are AC_SUBST-ed by this macro, but must +-# be manually added to the CFLAGS and LDFLAGS variables for each target in +-# the code base. +-# +-# If C++ language support is enabled with AC_PROG_CXX, which must occur +-# before this macro in configure.ac, warning flags for the C++ compiler +-# are AC_SUBST-ed as WARN_CXXFLAGS, and must be manually added to the +-# CXXFLAGS variables for each target in the code base. EXTRA-*-CFLAGS can +-# be used to augment the base and enabled flags. +-# +-# Warning flags for g-ir-scanner (from GObject Introspection) are +-# AC_SUBST-ed as WARN_SCANNERFLAGS. This variable must be manually added +-# to the SCANNERFLAGS variable for each GIR target in the code base. If +-# extra g-ir-scanner flags need to be enabled, the AX_COMPILER_FLAGS_GIR +-# macro must be invoked manually. +-# +-# AX_COMPILER_FLAGS may add support for other tools in future, in addition +-# to the compiler and linker. No extra EXTRA-* variables will be added +-# for those tools, and all extra support will still use the single +-# --enable-compile-warnings configure option. For finer grained control +-# over the flags for individual tools, use AX_COMPILER_FLAGS_CFLAGS, +-# AX_COMPILER_FLAGS_LDFLAGS and AX_COMPILER_FLAGS_* for new tools. +-# +-# The UNUSED variables date from a previous version of this macro, and are +-# automatically appended to the preceding non-UNUSED variable. They should +-# be left empty in new uses of the macro. +-# +-# LICENSE +-# +-# Copyright (c) 2014, 2015 Philip Withnall +-# Copyright (c) 2015 David King +-# +-# Copying and distribution of this file, with or without modification, are +-# permitted in any medium without royalty provided the copyright notice +-# and this notice are preserved. This file is offered as-is, without any +-# warranty. +- +-#serial 14 +- +-# _AX_COMPILER_FLAGS_LANG([LANGNAME]) +-m4_defun([_AX_COMPILER_FLAGS_LANG], +-[m4_ifdef([_AX_COMPILER_FLAGS_LANG_]$1[_enabled], [], +- [m4_define([_AX_COMPILER_FLAGS_LANG_]$1[_enabled], [])dnl +- AX_REQUIRE_DEFINED([AX_COMPILER_FLAGS_]$1[FLAGS])])dnl +-]) +- +-AC_DEFUN([AX_COMPILER_FLAGS],[ +- # C support is enabled by default. +- _AX_COMPILER_FLAGS_LANG([C]) +- # Only enable C++ support if AC_PROG_CXX is called. The redefinition of +- # AC_PROG_CXX is so that a fatal error is emitted if this macro is called +- # before AC_PROG_CXX, which would otherwise cause no C++ warnings to be +- # checked. +- AC_PROVIDE_IFELSE([AC_PROG_CXX], +- [_AX_COMPILER_FLAGS_LANG([CXX])], +- [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AX_COMPILER_FLAGS_LANG([CXX])])]) +- AX_REQUIRE_DEFINED([AX_COMPILER_FLAGS_LDFLAGS]) +- +- # Default value for IS-RELEASE is $ax_is_release +- ax_compiler_flags_is_release=m4_tolower(m4_normalize(ifelse([$3],, +- [$ax_is_release], +- [$3]))) +- +- AC_ARG_ENABLE([compile-warnings], +- AS_HELP_STRING([--enable-compile-warnings=@<:@no/yes/error@:>@], +- [Enable compiler warnings and errors]),, +- [AS_IF([test "$ax_compiler_flags_is_release" = "yes"], +- [enable_compile_warnings="yes"], +- [enable_compile_warnings="error"])]) +- AC_ARG_ENABLE([Werror], +- AS_HELP_STRING([--disable-Werror], +- [Unconditionally make all compiler warnings non-fatal]),, +- [enable_Werror=maybe]) +- +- # Return the user's chosen warning level +- AS_IF([test "$enable_Werror" = "no" -a \ +- "$enable_compile_warnings" = "error"],[ +- enable_compile_warnings="yes" +- ]) +- +- ax_enable_compile_warnings=$enable_compile_warnings +- +- AX_COMPILER_FLAGS_CFLAGS([$1],[$ax_compiler_flags_is_release], +- [$4],[$5 $6 $7 $8]) +- m4_ifdef([_AX_COMPILER_FLAGS_LANG_CXX_enabled], +- [AX_COMPILER_FLAGS_CXXFLAGS([WARN_CXXFLAGS], +- [$ax_compiler_flags_is_release], +- [$4],[$5 $6 $7 $8])]) +- AX_COMPILER_FLAGS_LDFLAGS([$2],[$ax_compiler_flags_is_release], +- [$9],[$10 $11 $12 $13]) +- AX_COMPILER_FLAGS_GIR([WARN_SCANNERFLAGS],[$ax_compiler_flags_is_release]) +-])dnl AX_COMPILER_FLAGS +diff --git a/m4/ax_compiler_flags_cflags.m4 b/m4/ax_compiler_flags_cflags.m4 +deleted file mode 100644 +index 916f91837..000000000 +--- a/m4/ax_compiler_flags_cflags.m4 ++++ /dev/null +@@ -1,161 +0,0 @@ +-# ============================================================================= +-# https://www.gnu.org/software/autoconf-archive/ax_compiler_flags_cflags.html +-# ============================================================================= +-# +-# SYNOPSIS +-# +-# AX_COMPILER_FLAGS_CFLAGS([VARIABLE], [IS-RELEASE], [EXTRA-BASE-FLAGS], [EXTRA-YES-FLAGS]) +-# +-# DESCRIPTION +-# +-# Add warning flags for the C compiler to VARIABLE, which defaults to +-# WARN_CFLAGS. VARIABLE is AC_SUBST-ed by this macro, but must be +-# manually added to the CFLAGS variable for each target in the code base. +-# +-# This macro depends on the environment set up by AX_COMPILER_FLAGS. +-# Specifically, it uses the value of $ax_enable_compile_warnings to decide +-# which flags to enable. +-# +-# LICENSE +-# +-# Copyright (c) 2014, 2015 Philip Withnall +-# Copyright (c) 2017, 2018 Reini Urban +-# +-# Copying and distribution of this file, with or without modification, are +-# permitted in any medium without royalty provided the copyright notice +-# and this notice are preserved. This file is offered as-is, without any +-# warranty. +- +-#serial 17 +- +-AC_DEFUN([AX_COMPILER_FLAGS_CFLAGS],[ +- AC_REQUIRE([AC_PROG_SED]) +- AX_REQUIRE_DEFINED([AX_APPEND_COMPILE_FLAGS]) +- AX_REQUIRE_DEFINED([AX_APPEND_FLAG]) +- AX_REQUIRE_DEFINED([AX_CHECK_COMPILE_FLAG]) +- +- # Variable names +- m4_define([ax_warn_cflags_variable], +- [m4_normalize(ifelse([$1],,[WARN_CFLAGS],[$1]))]) +- +- AC_LANG_PUSH([C]) +- +- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ +- [#ifndef __cplusplus +- #error "no C++" +- #endif]])], +- [ax_compiler_cxx=yes;], +- [ax_compiler_cxx=no;]) +- +- # Always pass -Werror=unknown-warning-option to get Clang to fail on bad +- # flags, otherwise they are always appended to the warn_cflags variable, and +- # Clang warns on them for every compilation unit. +- # If this is passed to GCC, it will explode, so the flag must be enabled +- # conditionally. +- AX_CHECK_COMPILE_FLAG([-Werror=unknown-warning-option],[ +- ax_compiler_flags_test="-Werror=unknown-warning-option" +- ],[ +- ax_compiler_flags_test="" +- ]) +- +- # Check that -Wno-suggest-attribute=format is supported +- AX_CHECK_COMPILE_FLAG([-Wno-suggest-attribute=format],[ +- ax_compiler_no_suggest_attribute_flags="-Wno-suggest-attribute=format" +- ],[ +- ax_compiler_no_suggest_attribute_flags="" +- ]) +- +- # Base flags +- AX_APPEND_COMPILE_FLAGS([ dnl +- -fno-strict-aliasing dnl +- $3 dnl +- ],ax_warn_cflags_variable,[$ax_compiler_flags_test]) +- +- AS_IF([test "$ax_enable_compile_warnings" != "no"],[ +- if test "$ax_compiler_cxx" = "no" ; then +- # C-only flags. Warn in C++ +- AX_APPEND_COMPILE_FLAGS([ dnl +- -Wnested-externs dnl +- -Wmissing-prototypes dnl +- -Wstrict-prototypes dnl +- -Wdeclaration-after-statement dnl +- -Wimplicit-function-declaration dnl +- -Wold-style-definition dnl +- -Wjump-misses-init dnl +- ],ax_warn_cflags_variable,[$ax_compiler_flags_test]) +- fi +- +- # "yes" flags +- AX_APPEND_COMPILE_FLAGS([ dnl +- -Wall dnl +- -Wextra dnl +- -Wundef dnl +- -Wwrite-strings dnl +- -Wpointer-arith dnl +- -Wmissing-declarations dnl +- -Wredundant-decls dnl +- -Wno-unused-parameter dnl +- -Wno-missing-field-initializers dnl +- -Wformat=2 dnl +- -Wcast-align dnl +- -Wformat-nonliteral dnl +- -Wformat-security dnl +- -Wsign-compare dnl +- -Wstrict-aliasing dnl +- -Wshadow dnl +- -Winline dnl +- -Wpacked dnl +- -Wmissing-format-attribute dnl +- -Wmissing-noreturn dnl +- -Winit-self dnl +- -Wredundant-decls dnl +- -Wmissing-include-dirs dnl +- -Wunused-but-set-variable dnl +- -Warray-bounds dnl +- -Wreturn-type dnl +- -Wswitch-enum dnl +- -Wswitch-default dnl +- -Wduplicated-cond dnl +- -Wduplicated-branches dnl +- -Wlogical-op dnl +- -Wrestrict dnl +- -Wnull-dereference dnl +- -Wdouble-promotion dnl +- $4 dnl +- $5 dnl +- $6 dnl +- $7 dnl +- ],ax_warn_cflags_variable,[$ax_compiler_flags_test]) +- ]) +- AS_IF([test "$ax_enable_compile_warnings" = "error"],[ +- # "error" flags; -Werror has to be appended unconditionally because +- # it's not possible to test for +- # +- # suggest-attribute=format is disabled because it gives too many false +- # positives +- AX_APPEND_FLAG([-Werror],ax_warn_cflags_variable) +- +- AX_APPEND_COMPILE_FLAGS([ dnl +- [$ax_compiler_no_suggest_attribute_flags] dnl +- ],ax_warn_cflags_variable,[$ax_compiler_flags_test]) +- ]) +- +- # In the flags below, when disabling specific flags, always add *both* +- # -Wno-foo and -Wno-error=foo. This fixes the situation where (for example) +- # we enable -Werror, disable a flag, and a build bot passes CFLAGS=-Wall, +- # which effectively turns that flag back on again as an error. +- for flag in $ax_warn_cflags_variable; do +- AS_CASE([$flag], +- [-Wno-*=*],[], +- [-Wno-*],[ +- AX_APPEND_COMPILE_FLAGS([-Wno-error=$(AS_ECHO([$flag]) | $SED 's/^-Wno-//')], +- ax_warn_cflags_variable, +- [$ax_compiler_flags_test]) +- ]) +- done +- +- AC_LANG_POP([C]) +- +- # Substitute the variables +- AC_SUBST(ax_warn_cflags_variable) +-])dnl AX_COMPILER_FLAGS +diff --git a/m4/ax_compiler_flags_gir.m4 b/m4/ax_compiler_flags_gir.m4 +deleted file mode 100644 +index 5b4924a20..000000000 +--- a/m4/ax_compiler_flags_gir.m4 ++++ /dev/null +@@ -1,60 +0,0 @@ +-# =========================================================================== +-# https://www.gnu.org/software/autoconf-archive/ax_compiler_flags_gir.html +-# =========================================================================== +-# +-# SYNOPSIS +-# +-# AX_COMPILER_FLAGS_GIR([VARIABLE], [IS-RELEASE], [EXTRA-BASE-FLAGS], [EXTRA-YES-FLAGS]) +-# +-# DESCRIPTION +-# +-# Add warning flags for the g-ir-scanner (from GObject Introspection) to +-# VARIABLE, which defaults to WARN_SCANNERFLAGS. VARIABLE is AC_SUBST-ed +-# by this macro, but must be manually added to the SCANNERFLAGS variable +-# for each GIR target in the code base. +-# +-# This macro depends on the environment set up by AX_COMPILER_FLAGS. +-# Specifically, it uses the value of $ax_enable_compile_warnings to decide +-# which flags to enable. +-# +-# LICENSE +-# +-# Copyright (c) 2015 Philip Withnall +-# +-# Copying and distribution of this file, with or without modification, are +-# permitted in any medium without royalty provided the copyright notice +-# and this notice are preserved. This file is offered as-is, without any +-# warranty. +- +-#serial 6 +- +-AC_DEFUN([AX_COMPILER_FLAGS_GIR],[ +- AX_REQUIRE_DEFINED([AX_APPEND_FLAG]) +- +- # Variable names +- m4_define([ax_warn_scannerflags_variable], +- [m4_normalize(ifelse([$1],,[WARN_SCANNERFLAGS],[$1]))]) +- +- # Base flags +- AX_APPEND_FLAG([$3],ax_warn_scannerflags_variable) +- +- AS_IF([test "$ax_enable_compile_warnings" != "no"],[ +- # "yes" flags +- AX_APPEND_FLAG([ dnl +- --warn-all dnl +- $4 dnl +- $5 dnl +- $6 dnl +- $7 dnl +- ],ax_warn_scannerflags_variable) +- ]) +- AS_IF([test "$ax_enable_compile_warnings" = "error"],[ +- # "error" flags +- AX_APPEND_FLAG([ dnl +- --warn-error dnl +- ],ax_warn_scannerflags_variable) +- ]) +- +- # Substitute the variables +- AC_SUBST(ax_warn_scannerflags_variable) +-])dnl AX_COMPILER_FLAGS +diff --git a/m4/ax_compiler_flags_ldflags.m4 b/m4/ax_compiler_flags_ldflags.m4 +deleted file mode 100644 +index 976d1198d..000000000 +--- a/m4/ax_compiler_flags_ldflags.m4 ++++ /dev/null +@@ -1,111 +0,0 @@ +-# ============================================================================== +-# https://www.gnu.org/software/autoconf-archive/ax_compiler_flags_ldflags.html +-# ============================================================================== +-# +-# SYNOPSIS +-# +-# AX_COMPILER_FLAGS_LDFLAGS([VARIABLE], [IS-RELEASE], [EXTRA-BASE-FLAGS], [EXTRA-YES-FLAGS]) +-# +-# DESCRIPTION +-# +-# Add warning flags for the linker to VARIABLE, which defaults to +-# WARN_LDFLAGS. VARIABLE is AC_SUBST-ed by this macro, but must be +-# manually added to the LDFLAGS variable for each target in the code base. +-# +-# This macro depends on the environment set up by AX_COMPILER_FLAGS. +-# Specifically, it uses the value of $ax_enable_compile_warnings to decide +-# which flags to enable. +-# +-# LICENSE +-# +-# Copyright (c) 2014, 2015 Philip Withnall +-# Copyright (c) 2017, 2018 Reini Urban +-# +-# Copying and distribution of this file, with or without modification, are +-# permitted in any medium without royalty provided the copyright notice +-# and this notice are preserved. This file is offered as-is, without any +-# warranty. +- +-#serial 9 +- +-AC_DEFUN([AX_COMPILER_FLAGS_LDFLAGS],[ +- AX_REQUIRE_DEFINED([AX_APPEND_LINK_FLAGS]) +- AX_REQUIRE_DEFINED([AX_APPEND_FLAG]) +- AX_REQUIRE_DEFINED([AX_CHECK_COMPILE_FLAG]) +- AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG]) +- +- # Variable names +- m4_define([ax_warn_ldflags_variable], +- [m4_normalize(ifelse([$1],,[WARN_LDFLAGS],[$1]))]) +- +- # Always pass -Werror=unknown-warning-option to get Clang to fail on bad +- # flags, otherwise they are always appended to the warn_ldflags variable, +- # and Clang warns on them for every compilation unit. +- # If this is passed to GCC, it will explode, so the flag must be enabled +- # conditionally. +- AX_CHECK_COMPILE_FLAG([-Werror=unknown-warning-option],[ +- ax_compiler_flags_test="-Werror=unknown-warning-option" +- ],[ +- ax_compiler_flags_test="" +- ]) +- +- AX_CHECK_LINK_FLAG([-Wl,--as-needed], [ +- AX_APPEND_LINK_FLAGS([-Wl,--as-needed], +- [AM_LDFLAGS],[$ax_compiler_flags_test]) +- ]) +- AX_CHECK_LINK_FLAG([-Wl,-z,relro], [ +- AX_APPEND_LINK_FLAGS([-Wl,-z,relro], +- [AM_LDFLAGS],[$ax_compiler_flags_test]) +- ]) +- AX_CHECK_LINK_FLAG([-Wl,-z,now], [ +- AX_APPEND_LINK_FLAGS([-Wl,-z,now], +- [AM_LDFLAGS],[$ax_compiler_flags_test]) +- ]) +- AX_CHECK_LINK_FLAG([-Wl,-z,noexecstack], [ +- AX_APPEND_LINK_FLAGS([-Wl,-z,noexecstack], +- [AM_LDFLAGS],[$ax_compiler_flags_test]) +- ]) +- # textonly, retpolineplt not yet +- +- # macOS and cygwin linker do not have --as-needed +- AX_CHECK_LINK_FLAG([-Wl,--no-as-needed], [ +- ax_compiler_flags_as_needed_option="-Wl,--no-as-needed" +- ], [ +- ax_compiler_flags_as_needed_option="" +- ]) +- +- # macOS linker speaks with a different accent +- ax_compiler_flags_fatal_warnings_option="" +- AX_CHECK_LINK_FLAG([-Wl,--fatal-warnings], [ +- ax_compiler_flags_fatal_warnings_option="-Wl,--fatal-warnings" +- ]) +- AX_CHECK_LINK_FLAG([-Wl,-fatal_warnings], [ +- ax_compiler_flags_fatal_warnings_option="-Wl,-fatal_warnings" +- ]) +- +- # Base flags +- AX_APPEND_LINK_FLAGS([ dnl +- $ax_compiler_flags_as_needed_option dnl +- $3 dnl +- ],ax_warn_ldflags_variable,[$ax_compiler_flags_test]) +- +- AS_IF([test "$ax_enable_compile_warnings" != "no"],[ +- # "yes" flags +- AX_APPEND_LINK_FLAGS([$4 $5 $6 $7], +- ax_warn_ldflags_variable, +- [$ax_compiler_flags_test]) +- ]) +- AS_IF([test "$ax_enable_compile_warnings" = "error"],[ +- # "error" flags; -Werror has to be appended unconditionally because +- # it's not possible to test for +- # +- # suggest-attribute=format is disabled because it gives too many false +- # positives +- AX_APPEND_LINK_FLAGS([ dnl +- $ax_compiler_flags_fatal_warnings_option dnl +- ],ax_warn_ldflags_variable,[$ax_compiler_flags_test]) +- ]) +- +- # Substitute the variables +- AC_SUBST(ax_warn_ldflags_variable) +-])dnl AX_COMPILER_FLAGS diff --git a/package/babeltrace2/Config.in b/package/babeltrace2/Config.in new file mode 100644 index 00000000..a020d4a7 --- /dev/null +++ b/package/babeltrace2/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_BABELTRACE2 + bool "babeltrace2" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + help + Babeltrace 2 is an open-source trace manipulation toolkit. + + The Babeltrace 2 project offers a library with a C API, + Python 3 bindings, and a command-line tool which makes it + very easy for mere mortals to view, convert, transform, and + analyze traces. + + Babeltrace 2 is also the reference parser implementation of + the Common Trace Format (CTF), a very versatile trace format + followed by various tracers and tools such as LTTng and + barectf. The Babeltrace 2 library and its Python bindings + can read and write CTF traces. + + To get support for the debugging information filter + component class, enable the elfutils package + (BR2_PACKAGE_ELFUTILS). + + https://babeltrace.org/ + +comment "babeltrace2 needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/babeltrace2/Config.in.host b/package/babeltrace2/Config.in.host new file mode 100644 index 00000000..852ad870 --- /dev/null +++ b/package/babeltrace2/Config.in.host @@ -0,0 +1,17 @@ +config BR2_PACKAGE_HOST_BABELTRACE2 + bool "host babeltrace2" + help + Babeltrace 2 is an open-source trace manipulation toolkit. + + The Babeltrace 2 project offers a library with a C API, + Python 3 bindings, and a command-line tool which makes it + very easy for mere mortals to view, convert, transform, and + analyze traces. + + Babeltrace 2 is also the reference parser implementation of + the Common Trace Format (CTF), a very versatile trace format + followed by various tracers and tools such as LTTng and + barectf. The Babeltrace 2 library and its Python bindings + can read and write CTF traces. + + https://babeltrace.org/ diff --git a/package/babeltrace2/babeltrace2.hash b/package/babeltrace2/babeltrace2.hash new file mode 100644 index 00000000..164e65cd --- /dev/null +++ b/package/babeltrace2/babeltrace2.hash @@ -0,0 +1,8 @@ +# From https://www.efficios.com/files/babeltrace/babeltrace2-2.0.4.tar.bz2.sha256 +sha256 774f116685dab5db9c51577dde43c8c1df482aae6bb78a089b1e9e7c8b489bca babeltrace2-2.0.4.tar.bz2 + +# Hash for license files +sha256 d919c6347409efde6dea63c6f349fb06bc060a2b721fc3df07b5f720b5f1d60e LICENSE +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 gpl-2.0.txt +sha256 c68fd1ffc1623ea0dace21abf57305818e4998a4ae0c79010aaaa943eb660b55 lgpl-2.1.txt +sha256 2f801b7c2494850c3d91da820eb230502dc0192c9d0db024db37ec08d0be1434 mit-license.txt diff --git a/package/babeltrace2/babeltrace2.mk b/package/babeltrace2/babeltrace2.mk new file mode 100644 index 00000000..2b2ab7db --- /dev/null +++ b/package/babeltrace2/babeltrace2.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# babeltrace2 +# +################################################################################ + +BABELTRACE2_SITE = https://www.efficios.com/files/babeltrace +BABELTRACE2_VERSION = 2.0.4 +BABELTRACE2_SOURCE = babeltrace2-$(BABELTRACE2_VERSION).tar.bz2 +BABELTRACE2_LICENSE = MIT, LGPL-2.1 (src/common/list.h), GPL-2.0 (test code) +BABELTRACE2_LICENSE_FILES = mit-license.txt lgpl-2.1.txt gpl-2.0.txt LICENSE +# We're patching configure.ac +BABELTRACE2_AUTORECONF = YES +BABELTRACE2_CONF_OPTS = --disable-man-pages +BABELTRACE2_DEPENDENCIES = 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_BABELTRACE2_DEPENDENCIES = host-libglib2 host-pkgconf host-elfutils +HOST_BABELTRACE2_CONF_OPTS += --disable-man-pages --enable-debug-info + +ifeq ($(BR2_PACKAGE_ELFUTILS),y) +BABELTRACE2_DEPENDENCIES += elfutils +BABELTRACE2_CONF_OPTS += --enable-debug-info +BABELTRACE2_CONF_ENV += bt_cv_lib_elfutils=yes +else +BABELTRACE2_CONF_OPTS += --disable-debug-info +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +BABELTRACE2_CONF_ENV += LIBS=-latomic +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/balena-engine/Config.in b/package/balena-engine/Config.in new file mode 100644 index 00000000..5966b33f --- /dev/null +++ b/package/balena-engine/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_BALENA_ENGINE + bool "balena-engine" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on !BR2_TOOLCHAIN_USES_UCLIBC # no fexecve + depends on BR2_USE_MMU # util-linux + select BR2_PACKAGE_CGROUPFS_MOUNT if !BR2_PACKAGE_SYSTEMD # runtime + select BR2_PACKAGE_HOST_GO + select BR2_PACKAGE_IPTABLES # runtime + select BR2_PACKAGE_UTIL_LINUX # runtime + select BR2_PACKAGE_UTIL_LINUX_BINARIES # runtime + select BR2_PACKAGE_UTIL_LINUX_MOUNT # runtime + select BR2_PACKAGE_UTIL_LINUX_MOUNTPOINT # runtime + select BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT # runtime + help + balenaEngine is a new container engine purpose-built for + embedded and IoT use cases and compatible with Docker + containers. + + https://github.com/balena-os/balena-engine + +comment "balena-engine needs a glibc or musl toolchain w/ threads" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_UCLIBC + depends on BR2_USE_MMU diff --git a/package/balena-engine/balena-engine.hash b/package/balena-engine/balena-engine.hash new file mode 100644 index 00000000..076c72fd --- /dev/null +++ b/package/balena-engine/balena-engine.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 1482b64e35d5406be719e362647ed7d0599cf4eead7770247ebd972c4c85ede5 balena-engine-20.10.26-go2.tar.gz +sha256 7c87873291f289713ac5df48b1f2010eb6963752bbd6b530416ab99fc37914a8 LICENSE diff --git a/package/balena-engine/balena-engine.mk b/package/balena-engine/balena-engine.mk new file mode 100644 index 00000000..49d526a4 --- /dev/null +++ b/package/balena-engine/balena-engine.mk @@ -0,0 +1,94 @@ +################################################################################ +# +# balena-engine +# +################################################################################ + +BALENA_ENGINE_VERSION = 20.10.26 +BALENA_ENGINE_SITE = $(call github,balena-os,balena-engine,v$(BALENA_ENGINE_VERSION)) + +BALENA_ENGINE_LICENSE = Apache-2.0 +BALENA_ENGINE_LICENSE_FILES = LICENSE + +BALENA_ENGINE_GOMOD = github.com/docker/docker + +BALENA_ENGINE_LDFLAGS = \ + -X $(BALENA_ENGINE_GOMOD)/dockerversion.GitCommit= \ + -X $(BALENA_ENGINE_GOMOD)/dockerversion.Version=$(BALENA_ENGINE_VERSION) \ + -X github.com/containerd/containerd/version.Version=N/A \ + -X github.com/docker/cli/cli/version.BuildTime= \ + -X github.com/docker/cli/cli/version.GitCommit= \ + -X github.com/docker/cli/cli/version.Version=N/A \ + -X github.com/opencontainers/runc.version=N/A + +BALENA_ENGINE_TAGS = \ + cgo \ + no_btrfs \ + no_cri \ + no_devmapper \ + no_zfs \ + exclude_disk_quota \ + exclude_graphdriver_btrfs \ + exclude_graphdriver_devicemapper \ + exclude_graphdriver_zfs + +BALENA_ENGINE_BUILD_TARGETS = cmd/balena-engine + +# create the go.mod file with language version go1.19 +# remove the conflicting vendor/modules.txt +# remove the conflicting vendor/archive (not allowed in go1.20) +# https://github.com/moby/moby/issues/44618#issuecomment-1343565705 +define BALENA_ENGINE_FIX_VENDORING + printf "module $(BALENA_ENGINE_GOMOD)\n\ngo 1.19\n" > $(@D)/go.mod + rm -f $(@D)/vendor/modules.txt + rm -rf $(@D)/vendor/archive +endef +BALENA_ENGINE_POST_EXTRACT_HOOKS += BALENA_ENGINE_FIX_VENDORING + +ifeq ($(BR2_INIT_SYSTEMD),y) +BALENA_ENGINE_DEPENDENCIES += systemd +BALENA_ENGINE_TAGS += journald +endif + +define BALENA_ENGINE_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(@D)/contrib/init/systemd/balena-engine.service \ + $(TARGET_DIR)/usr/lib/systemd/system/balena-engine.service + $(INSTALL) -D -m 644 $(@D)/contrib/init/systemd/balena-engine.socket \ + $(TARGET_DIR)/usr/lib/systemd/system/balena-engine.socket +endef + +define BALENA_ENGINE_USERS + - - balena-engine -1 * - - - balenaEngine daemon +endef + +define BALENA_ENGINE_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_POSIX_MQUEUE) + $(call KCONFIG_ENABLE_OPT,CONFIG_CGROUPS) + $(call KCONFIG_ENABLE_OPT,CONFIG_NAMESPACES) + $(call KCONFIG_ENABLE_OPT,CONFIG_UTS_NS) + $(call KCONFIG_ENABLE_OPT,CONFIG_IPC_NS) + $(call KCONFIG_ENABLE_OPT,CONFIG_PID_NS) + $(call KCONFIG_ENABLE_OPT,CONFIG_NET_NS) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XT_MATCH_ADDRTYPE) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XT_MATCH_CONNTRACK) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_IPTABLES) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_FILTER) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_NAT) + $(call KCONFIG_ENABLE_OPT,CONFIG_BRIDGE) + $(call KCONFIG_ENABLE_OPT,CONFIG_VETH) +endef + +define BALENA_ENGINE_INSTALL_SYMLINK + ln -f -s balena-engine $(TARGET_DIR)/usr/bin/balena-engine-daemon + ln -f -s balena-engine $(TARGET_DIR)/usr/bin/balena-engine-containerd + ln -f -s balena-engine $(TARGET_DIR)/usr/bin/balena-engine-containerd-shim + ln -f -s balena-engine $(TARGET_DIR)/usr/bin/balena-engine-containerd-ctr + ln -f -s balena-engine $(TARGET_DIR)/usr/bin/balena-engine-runc + ln -f -s balena-engine $(TARGET_DIR)/usr/bin/balena-engine-proxy + $(if $(BR2_PACKAGE_TINI),ln -f -s tini $(TARGET_DIR)/usr/bin/balena-engine-init) +endef +BALENA_ENGINE_POST_INSTALL_TARGET_HOOKS += BALENA_ENGINE_INSTALL_SYMLINK + +$(eval $(golang-package)) diff --git a/package/bandwidthd/0001-src-bandwidthd.h-fix-build-with-gcc-10.patch b/package/bandwidthd/0001-src-bandwidthd.h-fix-build-with-gcc-10.patch new file mode 100644 index 00000000..727e18ea --- /dev/null +++ b/package/bandwidthd/0001-src-bandwidthd.h-fix-build-with-gcc-10.patch @@ -0,0 +1,60 @@ +From dde68ed77114d7b19bfed3068edefc9dc0644445 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 16 Aug 2020 10:21:46 +0200 +Subject: [PATCH] src/bandwidthd.h: fix build with gcc 10 + +Remove SubnetTable[SUBNET_NUM] and IpTable[IP_NUM] from bandwidthd.h as +they are already in bandwidthd.c otherwise the build with gcc 10 will +fail on: + +/home/buildroot/autobuild/instance-2/output-1/host/bin/arm-buildroot-linux-gnueabihf-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -o bandwidthd bandwidthd.o graph.o extensions.o sqlight.o parser.o lexer.o pgsql.o -lpcap -lgd -lm -lresolv -L/home/buildroot/autobuild/instance-2/output-1/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/lib -lpng16 -lz -L/home/buildroot/autobuild/instance-2/output-1/host/arm-buildroot-linux-gnueabihf/sysroot/usr/bin/../../../../arm-buildroot-linux-gnueabihf/sysroot/usr/lib/.libs -lnl-genl-3 -lnl-3 +/home/buildroot/autobuild/instance-2/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: graph.o:(.bss+0x4b0): multiple definition of `IpTable'; bandwidthd.o:(.bss+0x3e0): first defined here +/home/buildroot/autobuild/instance-2/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: graph.o:(.bss+0x18c): multiple definition of `SubnetTable'; bandwidthd.o:(.bss+0x88): first defined here + +Fixes: + - http://autobuild.buildroot.org/results/6308c8ee38b6017215038d47c009b238113bd36f + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/nroach44/bandwidthd/commit/dde68ed77114d7b19bfed3068edefc9dc0644445 +--- + src/bandwidthd.h | 4 ++-- + src/graph.c | 1 + + 2 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/src/bandwidthd.h b/src/bandwidthd.h +index 870fdf7..eb4c830 100644 +--- a/src/bandwidthd.h ++++ b/src/bandwidthd.h +@@ -134,7 +134,7 @@ struct SubnetData + { + uint32_t ip; + uint32_t mask; +-} SubnetTable[SUBNET_NUM]; ++}; + + struct Statistics + { +@@ -157,7 +157,7 @@ struct IPData + uint32_t ip; // Host byte order + struct Statistics Send; + struct Statistics Receive; +-} IpTable[IP_NUM]; ++}; + + struct SummaryData + { +diff --git a/src/graph.c b/src/graph.c +index b4b68f0..058e8c7 100644 +--- a/src/graph.c ++++ b/src/graph.c +@@ -18,6 +18,7 @@ + #include + #endif + ++extern struct SubnetData SubnetTable[SUBNET_NUM]; + extern unsigned int SubnetCount; + extern struct config config; + +-- +2.27.0 + diff --git a/package/bandwidthd/0002-src-parser.y-fix-build-with-gcc-14.patch b/package/bandwidthd/0002-src-parser.y-fix-build-with-gcc-14.patch new file mode 100644 index 00000000..d3107085 --- /dev/null +++ b/package/bandwidthd/0002-src-parser.y-fix-build-with-gcc-14.patch @@ -0,0 +1,36 @@ +From 96f5ad56b1bb872c2c24f0c83d06d94ae2936838 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 22 Jul 2024 14:08:45 +0200 +Subject: [PATCH] src/parser.y: fix build with gcc >= 14 + +Fix the following build failure with gcc >= 14: + +parser.c: In function 'yyparse': +parser.c:1196:16: error: implicit declaration of function 'yylex' [-Wimplicit-function-declaration] + 1196 | yychar = yylex (); + | ^~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/33364071de4e5e51a2ac2337b82d145f71e0e64a + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/nroach44/bandwidthd/pull/3 +--- + src/parser.y | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/parser.y b/src/parser.y +index d9acc10..15ce61c 100644 +--- a/src/parser.y ++++ b/src/parser.y +@@ -11,6 +11,7 @@ + #include + #include "bandwidthd.h" + ++extern int yylex (void); + extern unsigned int SubnetCount; + extern struct SubnetData SubnetTable[]; + extern struct config config; +-- +2.43.0 + diff --git a/package/bandwidthd/Config.in b/package/bandwidthd/Config.in new file mode 100644 index 00000000..e2a6f1ac --- /dev/null +++ b/package/bandwidthd/Config.in @@ -0,0 +1,60 @@ +config BR2_PACKAGE_BANDWIDTHD + bool "bandwidthd" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_GD + help + BandwidthD - Bandwidth monitoring + + Provides a method to measure the bandwidth that travels + through the machine, grouped by subnet and IP. This + information can be stored locally in /var/lib/bandwidthd and + can be configured to generate static HTML pages which can be + hosted by a web server. + + It is highly recommended that the target has some way of + retaining the time between reboots. (e.g. NTP on boot or an + RTC) + + It is suggested to use sqlite for logfile storage but works + fine without, and can be completely ignored if the + postgresql portion is used. + + As upstream is no longer actively maintained, a fork is + available on github that works on making BandwidthD's build + process more compatible with buildroot's. + + Upstream: + http://bandwidthd.sourceforge.net/ + Github fork: + http://github.com/nroach44/bandwidthd + +if BR2_PACKAGE_BANDWIDTHD + +config BR2_PACKAGE_BANDWIDTHD_POSTGRESQL + bool "enable postgresql log target support" + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR # postgresql + depends on !BR2_OPTIMIZE_FAST # postgresql + select BR2_PACKAGE_POSTGRESQL + help + Enable support for logging the bandwidthd data to a remote + (or local) postgresql server. This data can then be viewed + through a php site. See README in the source code + (github.com/nroach44/bandwidthd) for more information. + +comment "postgresql support needs a toolchain w/ dynamic library, wchar" + depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR + +comment "postgresql support can't be built with Optimize for fast" + depends on BR2_OPTIMIZE_FAST + +config BR2_PACKAGE_BANDWIDTHD_SQLITE3 + bool "enable sqlite3 log storage" + select BR2_PACKAGE_SQLITE + help + Enable support for storing the aggregated data in an sqlite + db instead of a plain text file. + +endif diff --git a/package/bandwidthd/bandwidthd.hash b/package/bandwidthd/bandwidthd.hash new file mode 100644 index 00000000..5b1bbce9 --- /dev/null +++ b/package/bandwidthd/bandwidthd.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 0270d0def6cc53c8d47d59a9dd093d51fbca1620adeef85c15e35a32010e26ab bandwidthd-2.0.1-auto-r11.tar.gz +sha256 58573c40770e0c0b91f3eef8192952832321a344f66a4fb2d966095cbbfc86c2 README diff --git a/package/bandwidthd/bandwidthd.mk b/package/bandwidthd/bandwidthd.mk new file mode 100644 index 00000000..88222a91 --- /dev/null +++ b/package/bandwidthd/bandwidthd.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# bandwidthd +# +################################################################################ + +BANDWIDTHD_VERSION = 2.0.1-auto-r11 +BANDWIDTHD_SITE = $(call github,nroach44,bandwidthd,v$(BANDWIDTHD_VERSION)) + +# Specified as "any version of the GPL that is current as of your +# download" by upstream. +BANDWIDTHD_LICENSE = GPL +BANDWIDTHD_LICENSE_FILES = README + +BANDWIDTHD_DEPENDENCIES = gd libpng libpcap host-pkgconf + +BANDWIDTHD_AUTORECONF = YES + +BANDWIDTHD_CONF_OPTS += --with-pcap-config=$(STAGING_DIR)/usr/bin/pcap-config + +ifeq ($(BR2_PACKAGE_BANDWIDTHD_POSTGRESQL),y) +BANDWIDTHD_DEPENDENCIES += postgresql +BANDWIDTHD_CONF_OPTS += --with-postgresql-logging=true +else +BANDWIDTHD_CONF_OPTS += --with-postgresql-logging=false +endif + +ifeq ($(BR2_PACKAGE_BANDWIDTHD_SQLITE3),y) +BANDWIDTHD_DEPENDENCIES += sqlite +BANDWIDTHD_CONF_OPTS += --with-sqlite-storage=true +else +BANDWIDTHD_CONF_OPTS += --with-sqlite-storage=false +endif + +define BANDWIDTHD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/bandwidthd/bandwidthd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/bandwidthd.service +endef + +$(eval $(autotools-package)) diff --git a/package/bandwidthd/bandwidthd.service b/package/bandwidthd/bandwidthd.service new file mode 100644 index 00000000..ab7f05a2 --- /dev/null +++ b/package/bandwidthd/bandwidthd.service @@ -0,0 +1,11 @@ +[Unit] +Description=Bandwidth usage monitor and reporter +After=network.target + +[Service] +Type=forking +ExecStart=/usr/bin/bandwidthd +PIDFile=/run/bandwidthd.pid + +[Install] +WantedBy=multi-user.target diff --git a/package/bash-completion/Config.in b/package/bash-completion/Config.in new file mode 100644 index 00000000..c907c04a --- /dev/null +++ b/package/bash-completion/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_BASH_COMPLETION + bool "bash completion" + depends on BR2_PACKAGE_BASH + help + Add bash completion infrastructure. + + The bash completion infrastructure is enabled by + /etc/profile.d/bash_completion.sh, which is normally + sourced by /etc/profile. + + If the system does not use the /etc/profile.d directory + mechanism, the /etc/profile.d/bash_completion.sh script can + be sourced from /etc/bashrc or ~/.bashrc. + + https://github.com/scop/bash-completion diff --git a/package/bash-completion/bash-completion.hash b/package/bash-completion/bash-completion.hash new file mode 100644 index 00000000..7e952e5b --- /dev/null +++ b/package/bash-completion/bash-completion.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 73a8894bad94dee83ab468fa09f628daffd567e8bef1a24277f1e9a0daf911ac bash-completion-2.11.tar.xz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/bash-completion/bash-completion.mk b/package/bash-completion/bash-completion.mk new file mode 100644 index 00000000..8b0e9494 --- /dev/null +++ b/package/bash-completion/bash-completion.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# bash-completion +# +################################################################################ + +BASH_COMPLETION_VERSION = 2.11 +BASH_COMPLETION_SITE = https://github.com/scop/bash-completion/releases/download/$(BASH_COMPLETION_VERSION) +BASH_COMPLETION_SOURCE = bash-completion-$(BASH_COMPLETION_VERSION).tar.xz +BASH_COMPLETION_LICENSE = GPL-2.0 +BASH_COMPLETION_LICENSE_FILES = COPYING + +# Install bash-completion.pc file +BASH_COMPLETION_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/bash/0001-input.h-add-missing-include-on-stdio.h.patch b/package/bash/0001-input.h-add-missing-include-on-stdio.h.patch new file mode 100644 index 00000000..fd008e94 --- /dev/null +++ b/package/bash/0001-input.h-add-missing-include-on-stdio.h.patch @@ -0,0 +1,38 @@ +From 4fa85c85b9a76afd3b19ed75bf17ccd2940f1f55 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 16 Feb 2020 16:18:48 +0100 +Subject: [PATCH] input.h: add missing include on stdio.h + +This will fix the following build failure on uclibc: + +test -n "/usr/lfs/hdd_v1/rc-buildroot-test/scripts/instance-2/output/host/bin/arm-linux-ranlib" && /usr/lfs/hdd_v1/rc-buildroot-test/scripts/instance-2/output/host/bin/arm-linux-ranlib libsh.a +In file included from ./exec.def:71: +../input.h:76:3: error: unknown type name 'FILE' + FILE *file; + ^~~~ + +Fixes: + - http://autobuild.buildroot.org/results/bfca306868df54c567215c45c8cdac838d02f567 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://savannah.gnu.org/support/?110196] +--- + input.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/input.h b/input.h +index 6aef1269..08b0fdea 100644 +--- a/input.h ++++ b/input.h +@@ -21,6 +21,8 @@ + #if !defined (_INPUT_H_) + #define _INPUT_H_ + ++#include ++ + #include "stdc.h" + + /* Function pointers can be declared as (Function *)foo. */ +-- +2.24.1 + diff --git a/package/bash/0002-parse.y-fix-compilation-for-non-multibyte-builds.patch b/package/bash/0002-parse.y-fix-compilation-for-non-multibyte-builds.patch new file mode 100644 index 00000000..d330de5c --- /dev/null +++ b/package/bash/0002-parse.y-fix-compilation-for-non-multibyte-builds.patch @@ -0,0 +1,63 @@ +From 0217fc2816e47ee296472df71d1011f0eb2937e6 Mon Sep 17 00:00:00 2001 +From: Vincent Fazio +Date: Fri, 27 Jan 2023 14:37:26 -0600 +Subject: [PATCH] parse.y: fix compilation for non-multibyte builds + +Builds configured with --disable-multibyte or when the toolchain does +not have WCHAR support would encounter a compile error due to an +undeclared reference to shell_input_line_property in shell_getc. + +Add a HANDLE_MULTIBYTE guard to conditionally compile the block that +references shell_input_line_property in shell_getc as it's only declared +when HANDLE_MULTIBYTE is defined. + +Signed-off-by: Vincent Fazio +[Upstream status: https://savannah.gnu.org/patch/index.php?10309] +--- + parse.y | 2 ++ + y.tab.c | 2 ++ + 2 files changed, 4 insertions(+) + +diff --git a/parse.y b/parse.y +index 1d12e639..8f1355c6 100644 +--- a/parse.y ++++ b/parse.y +@@ -2625,6 +2625,7 @@ next_alias_char: + parser_state |= PST_ENDALIAS; + /* We need to do this to make sure last_shell_getc_is_singlebyte returns + true, since we are returning a single-byte space. */ ++#if defined (HANDLE_MULTIBYTE) + if (shell_input_line_index == shell_input_line_len && last_shell_getc_is_singlebyte == 0) + { + #if 0 +@@ -2638,6 +2639,7 @@ next_alias_char: + shell_input_line_property[shell_input_line_index - 1] = 1; + #endif + } ++#endif /* HANDLE_MULTIBYTE */ + return ' '; /* END_ALIAS */ + } + #endif +diff --git a/y.tab.c b/y.tab.c +index 50c5845b..799f730f 100644 +--- a/y.tab.c ++++ b/y.tab.c +@@ -4936,6 +4936,7 @@ next_alias_char: + parser_state |= PST_ENDALIAS; + /* We need to do this to make sure last_shell_getc_is_singlebyte returns + true, since we are returning a single-byte space. */ ++#if defined (HANDLE_MULTIBYTE) + if (shell_input_line_index == shell_input_line_len && last_shell_getc_is_singlebyte == 0) + { + #if 0 +@@ -4949,6 +4950,7 @@ next_alias_char: + shell_input_line_property[shell_input_line_index - 1] = 1; + #endif + } ++#endif /* HANDLE_MULTIBYTE */ + return ' '; /* END_ALIAS */ + } + #endif +-- +2.25.1 + diff --git a/package/bash/0003-configure-invert-condition-for-strtoimax-builtin.patch b/package/bash/0003-configure-invert-condition-for-strtoimax-builtin.patch new file mode 100644 index 00000000..c412dcfc --- /dev/null +++ b/package/bash/0003-configure-invert-condition-for-strtoimax-builtin.patch @@ -0,0 +1,62 @@ +From 754e0d1edc1c01b18f4890de7c58f7610e589d76 Mon Sep 17 00:00:00 2001 +From: Vincent Fazio +Date: Tue, 7 Feb 2023 03:55:28 -0600 +Subject: [PATCH] configure: invert condition for strtoimax builtin + +Previously, bash would attempt to build a replacement for strtoimax if +it found that the C library had the function already declared. + +This caused build errors when linking against static libraries that did +not define the function as a weak alias but, in reality, was a logic +error since bash should only provide it's own implementation if one is +not provided by the C library. + +Now, fix this by inverting the logic. + +Upstream: + https://git.savannah.gnu.org/cgit/bash.git/commit/?h=devel&id=43e861c2cd840946a81dfd0386966eb4f3a17ce9 + +Signed-off-by: Vincent Fazio +[yann.morin.1998@free.fr: patch configure after the m file] +Signed-off-by: Yann E. MORIN +--- + configure | 6 +++++- + m4/strtoimax.m4 | 5 ++++- + 2 files changed, 9 insertions(+), 2 deletions(-) + +diff --git a/m4/strtoimax.m4 b/m4/strtoimax.m4 +index 30985723..fa43ac7b 100644 +--- a/m4/strtoimax.m4 ++++ b/m4/strtoimax.m4 +@@ -29,7 +29,10 @@ AC_CACHE_VAL(bash_cv_func_strtoimax, + fi + ]) + AC_MSG_RESULT($bash_cv_func_strtoimax) +-if test $bash_cv_func_strtoimax = yes; then ++if test "$ac_cv_have_decl_strtoimax" = "yes" ; then ++AC_DEFINE([HAVE_DECL_STRTOIMAX], [1]) ++fi ++if test $bash_cv_func_strtoimax = no; then + AC_LIBOBJ(strtoimax) + fi + ]) +diff --git a/configure b/configure +index 47313753..6039cee7 100755 +--- a/configure ++++ b/configure +@@ -20443,7 +20443,11 @@ fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_strtoimax" >&5 + printf "%s\n" "$bash_cv_func_strtoimax" >&6; } +-if test $bash_cv_func_strtoimax = yes; then ++if test "$ac_cv_have_decl_strtoimax" = "yes" ; then ++printf "%s\n" "#define HAVE_DECL_STRTOIMAX 1" >>confdefs.h ++ ++fi ++if test $bash_cv_func_strtoimax = no; then + case " $LIBOBJS " in + *" strtoimax.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strtoimax.$ac_objext" +-- +2.25.1 + diff --git a/package/bash/Config.in b/package/bash/Config.in new file mode 100644 index 00000000..0212df6b --- /dev/null +++ b/package/bash/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_BASH + bool "bash" + # uses fork() + depends on BR2_USE_MMU + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_READLINE + help + The standard GNU Bourne again shell. + + http://tiswww.case.edu/php/chet/bash/bashtop.html + +if BR2_PACKAGE_BASH + +config BR2_PACKAGE_BASH_LOADABLE_EXAMPLES + bool "loadable examples" + depends on !BR2_STATIC_LIBS + help + This option will enable the installation of the "loadable" + examples, which are dynamically loadable extension providing + additional built-ins commands to bash. There are typically + not needed as they are provided as regular, external + commands. + +endif diff --git a/package/bash/bash.hash b/package/bash/bash.hash new file mode 100644 index 00000000..44c1c5ed --- /dev/null +++ b/package/bash/bash.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature from +# https://ftp.gnu.org/gnu/bash/bash-5.2.21.tar.gz.sig +sha256 c8e31bdc59b69aaffc5b36509905ba3e5cbb12747091d27b4b977f078560d5b8 bash-5.2.21.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/bash/bash.mk b/package/bash/bash.mk new file mode 100644 index 00000000..9d173a5c --- /dev/null +++ b/package/bash/bash.mk @@ -0,0 +1,71 @@ +################################################################################ +# +# bash +# +################################################################################ + +BASH_VERSION = 5.2.21 +BASH_SITE = $(BR2_GNU_MIRROR)/bash +BASH_DEPENDENCIES = ncurses readline host-bison +BASH_LICENSE = GPL-3.0+ +BASH_LICENSE_FILES = COPYING +BASH_CPE_ID_VENDOR = gnu + +# We want the bash binary in /bin +BASH_CONF_OPTS = \ + --bindir=/bin \ + --with-installed-readline \ + --without-bash-malloc + +BASH_CONF_ENV += \ + ac_cv_rl_prefix="$(STAGING_DIR)" \ + ac_cv_rl_version="$(READLINE_VERSION)" \ + bash_cv_getcwd_malloc=yes \ + bash_cv_job_control_missing=present \ + bash_cv_sys_named_pipes=present \ + bash_cv_func_sigsetjmp=present \ + bash_cv_printf_a_format=yes + +# The static build needs some trickery +ifeq ($(BR2_STATIC_LIBS),y) +BASH_CONF_OPTS += --enable-static-link +# bash wants to redefine the getenv() function. To check whether this is +# possible, AC_TRY_RUN is used which is not possible in +# cross-compilation. +# On uClibc, redefining getenv is not possible; on glibc and musl it is. +# Related: +# http://lists.gnu.org/archive/html/bug-bash/2012-03/msg00052.html +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +BASH_CONF_ENV += bash_cv_getenv_redef=no +else +BASH_CONF_ENV += bash_cv_getenv_redef=yes +endif +endif + +define BASH_REMOVE_UNUSED_FILES + rm -f $(TARGET_DIR)/bin/bashbug +endef +BASH_POST_INSTALL_TARGET_HOOKS += BASH_REMOVE_UNUSED_FILES + +ifeq ($(BR2_PACKAGE_BASH_LOADABLE_EXAMPLES),y) +define BASH_REMOVE_LOADABLE_UNUSED_FILES + rm -f $(TARGET_DIR)/usr/lib/bash/Makefile.inc + rm -f $(TARGET_DIR)/usr/lib/bash/loadables.h +endef +BASH_POST_INSTALL_TARGET_HOOKS += BASH_REMOVE_LOADABLE_UNUSED_FILES +else +define BASH_REMOVE_LOADABLE_EXAMPLES + rm -rf $(TARGET_DIR)/usr/lib/bash +endef +BASH_POST_INSTALL_TARGET_HOOKS += BASH_REMOVE_LOADABLE_EXAMPLES +endif + +# Add /bin/bash to /etc/shells otherwise some login tools like dropbear +# can reject the user connection. See man shells. +define BASH_ADD_BASH_TO_SHELLS + grep -qsE '^/bin/bash$$' $(TARGET_DIR)/etc/shells \ + || echo "/bin/bash" >> $(TARGET_DIR)/etc/shells +endef +BASH_TARGET_FINALIZE_HOOKS += BASH_ADD_BASH_TO_SHELLS + +$(eval $(autotools-package)) diff --git a/package/basu/0001-meson.build-Disable-stack-protection-for-Buildroot-p.patch b/package/basu/0001-meson.build-Disable-stack-protection-for-Buildroot-p.patch new file mode 100644 index 00000000..34dd3b16 --- /dev/null +++ b/package/basu/0001-meson.build-Disable-stack-protection-for-Buildroot-p.patch @@ -0,0 +1,39 @@ +From 6133c87299bce32c13dcf1692842ea5f2890c5ad Mon Sep 17 00:00:00 2001 +From: Sergey Bobrenok +Date: Wed, 28 Feb 2024 16:29:17 +0300 +Subject: [PATCH] meson.build: Disable stack protection for Buildroot packaging + +In Buildroot, the SSP flags are passed via the wrapper, and only flags +supported by the toolchain will be used. So the SSP flags can be +safely removed from the build files. + +Fixes: + src/basic/libbasic.a.p/log.c.o: in function `write_to_console.isra.0': + log.c:(.text.write_to_console.isra.0+0x154): undefined reference to `__stack_chk_fail_local' + +Upstream: N/A [Buildroot specific] + +Signed-off-by: Sergey Bobrenok +--- + meson.build | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/meson.build b/meson.build +index 6f79707..51fd400 100644 +--- a/meson.build ++++ b/meson.build +@@ -75,9 +75,6 @@ possible_cc_flags = [ + '-fdiagnostics-show-option', + '-fno-strict-aliasing', + '-fvisibility=hidden', +- '-fstack-protector', +- '-fstack-protector-strong', +- '--param=ssp-buffer-size=4', + ] + + # --as-needed and --no-undefined are provided by meson by default, + +base-commit: 684a41d68cfbb05e38aacb60a8548e21ddfbecdb +-- +2.43.2 + diff --git a/package/basu/0002-memfd-util.c-Use-F_ADD_SEALS-definition-from-missing.patch b/package/basu/0002-memfd-util.c-Use-F_ADD_SEALS-definition-from-missing.patch new file mode 100644 index 00000000..69e89927 --- /dev/null +++ b/package/basu/0002-memfd-util.c-Use-F_ADD_SEALS-definition-from-missing.patch @@ -0,0 +1,34 @@ +From 8e4960e8b9d11d9be96e83b02bd3b08178ddce1b Mon Sep 17 00:00:00 2001 +From: Sergey Bobrenok +Date: Wed, 28 Feb 2024 20:42:19 +0300 +Subject: [PATCH basu] memfd-util.c: Use F_ADD_SEALS definition from missing.h + +uClibc and glibc (until version 2.27, 2018) implementations don't +support F_ADD_SEALS and other F_SEAL_xxx flags. +'missing.h' was removed from 'memfd-util.c' in 37dbb2fcb ("Remove +useless includes"). + +Upstream: https://lists.sr.ht/~emersion/public-inbox/patches/49899 + +Signed-off-by: Sergey Bobrenok +--- + src/basic/memfd-util.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/basic/memfd-util.c b/src/basic/memfd-util.c +index 89893ba..7e535c6 100644 +--- a/src/basic/memfd-util.c ++++ b/src/basic/memfd-util.c +@@ -7,6 +7,7 @@ + + #include "alloc-util.h" + #include "memfd-util.h" ++#include "missing.h" + + int memfd_set_sealed(int fd) { + #if defined(__FreeBSD__) && __FreeBSD__ < 13 + +base-commit: 684a41d68cfbb05e38aacb60a8548e21ddfbecdb +-- +2.44.0 + diff --git a/package/basu/Config.in b/package/basu/Config.in new file mode 100644 index 00000000..5875aa77 --- /dev/null +++ b/package/basu/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_BASU + bool "basu" + depends on BR2_USE_MMU # dbus + depends on BR2_USE_WCHAR # uchar.h + depends on BR2_ENABLE_LOCALE # locale_t + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # __sync_add_and_fetch + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # F_ADD_SEALS + select BR2_PACKAGE_DBUS if !BR2_PACKAGE_DBUS_BROKER # runtime + help + basu is the sd-bus library, extracted from systemd. + + Some projects rely on the sd-bus library for DBus support. + However not all systems have systemd or elogind installed. + This library provides just sd-bus (and the busctl utility). + + https://git.sr.ht/~emersion/basu + +comment "basu needs a toolchain w/ wchar, locale, threads, headers >= 3.17" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_ENABLE_LOCALE || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 diff --git a/package/basu/basu.hash b/package/basu/basu.hash new file mode 100644 index 00000000..f3692863 --- /dev/null +++ b/package/basu/basu.hash @@ -0,0 +1,4 @@ +# From https://git.sr.ht/~emersion/basu/refs/v0.2.1 +sha256 d9b373a9fcb5d5eb5f6c1c56355f76edb7f2f52bc744570e80604e83455a19bd basu-0.2.1.tar.gz +# Locally computed: +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSE.LGPL2.1 diff --git a/package/basu/basu.mk b/package/basu/basu.mk new file mode 100644 index 00000000..7bd19236 --- /dev/null +++ b/package/basu/basu.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# basu +# +################################################################################ + +BASU_VERSION = 0.2.1 +BASU_SITE = https://git.sr.ht/~emersion/basu/refs/download/v$(BASU_VERSION) +BASU_INSTALL_STAGING = YES +BASU_LICENSE = LGPL-2.1+ +BASU_LICENSE_FILES = LICENSE.LGPL2.1 +BASU_DEPENDENCIES = host-gperf + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +BASU_DEPENDENCIES += libcap +BASU_CONF_OPTS += -Dlibcap=enabled +else +BASU_CONF_OPTS += -Dlibcap=disabled +endif + +ifeq ($(BR2_PACKAGE_AUDIT),y) +BASU_DEPENDENCIES += audit +BASU_CONF_OPTS += -Daudit=enabled +else +BASU_CONF_OPTS += -Daudit=disabled +endif + +$(eval $(meson-package)) diff --git a/package/bat/Config.in b/package/bat/Config.in new file mode 100644 index 00000000..515eaf59 --- /dev/null +++ b/package/bat/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_BAT + bool "bat" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_RUSTC + # we need a full version of less + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_LESS + help + A cat(1) clone with syntax highlighting and Git integration. + + https://github.com/sharkdp/bat diff --git a/package/bat/bat.hash b/package/bat/bat.hash new file mode 100644 index 00000000..e80301ff --- /dev/null +++ b/package/bat/bat.hash @@ -0,0 +1,4 @@ +# Locally generated +sha256 45fcdd6076dc1b45698a7b6c0f4d1f5d9ae676f3ca3b155402ad24680d5b4df6 bat-0.24.0-cargo2.tar.gz +sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE-APACHE +sha256 dccda9eb9533f5c65624a1106536c6cfde46008d58e60b3faf154e8b9fd5b46e LICENSE-MIT diff --git a/package/bat/bat.mk b/package/bat/bat.mk new file mode 100644 index 00000000..b95cdb25 --- /dev/null +++ b/package/bat/bat.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# bat +# +################################################################################ + +BAT_VERSION = 0.24.0 +BAT_SITE = $(call github,sharkdp,bat,v$(BAT_VERSION)) +BAT_LICENSE = Apache-2.0 or MIT +BAT_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT + +$(eval $(cargo-package)) diff --git a/package/batctl/Config.in b/package/batctl/Config.in new file mode 100644 index 00000000..25574189 --- /dev/null +++ b/package/batctl/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_BATCTL + bool "batctl" + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_LIBNL + help + Batctl is the configuration and debugging tool for batman-adv. + + http://www.open-mesh.org/projects/batman-adv/wiki/Using-batctl + +comment "batctl needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/batctl/batctl.hash b/package/batctl/batctl.hash new file mode 100644 index 00000000..7bc6fee6 --- /dev/null +++ b/package/batctl/batctl.hash @@ -0,0 +1,6 @@ +# From https://downloads.open-mesh.org/batman/releases/batman-adv-2023.1/batctl-2023.1.tar.gz.sha1 +sha1 8d899c6323e228b9b370caf28e6d67621cb7d35d batctl-2023.1.tar.gz +# Locally calculated +sha256 e5bf47305d955abb199244bd0e5fffab96108b1affabd0d9705533f8059395f1 batctl-2023.1.tar.gz +sha256 cecbf53d1148e13256ac29f8b900655b7fc8dc12d59939a95bc2323ea1747025 LICENSES/preferred/GPL-2.0 +sha256 323c587d0ccf10e376f8bf9a7f31fb4ca6078105194b42e0b1e0ee2bc9bde71f LICENSES/preferred/MIT diff --git a/package/batctl/batctl.mk b/package/batctl/batctl.mk new file mode 100644 index 00000000..197e4beb --- /dev/null +++ b/package/batctl/batctl.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# batctl +# +################################################################################ + +BATCTL_VERSION = 2023.1 +BATCTL_SITE = http://downloads.open-mesh.org/batman/releases/batman-adv-$(BATCTL_VERSION) +BATCTL_LICENSE = GPL-2.0, MIT (batman_adv.h, list.h) +BATCTL_LICENSE_FILES = LICENSES/preferred/GPL-2.0 LICENSES/preferred/MIT +BATCTL_DEPENDENCIES = libnl host-pkgconf + +define BATCTL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) all +endef + +define BATCTL_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + PREFIX=/usr DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/batman-adv/Config.in b/package/batman-adv/Config.in new file mode 100644 index 00000000..b1fe5b3f --- /dev/null +++ b/package/batman-adv/Config.in @@ -0,0 +1,37 @@ +comment "batman-adv needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_BATMAN_ADV + bool "batman-adv" + depends on BR2_LINUX_KERNEL + help + batman-adv mesh networking kernel module + Note: batman-adv is part of the linux mainline + kernel since version 2.6.38 + + https://www.open-mesh.org/projects/batman-adv/ + +if BR2_PACKAGE_BATMAN_ADV + +config BR2_PACKAGE_BATMAN_ADV_DEBUG + bool "enable debugging" + help + Enables B.A.T.M.A.N. debugging. + +config BR2_PACKAGE_BATMAN_ADV_NC + bool "enable network coding" + help + Enables B.A.T.M.A.N. network coding. + Note: this requires promiscuous mode on ALL nodes! + + https://www.open-mesh.org/projects/batman-adv/wiki/NetworkCoding + +config BR2_PACKAGE_BATMAN_ADV_BATMAN_V + bool "enable B.A.T.M.A.N. V protocol" + default y + help + Enables B.A.T.M.A.N. V network protocol. + + https://www.open-mesh.org/projects/batman-adv/wiki/BATMAN_V + +endif diff --git a/package/batman-adv/batman-adv.hash b/package/batman-adv/batman-adv.hash new file mode 100644 index 00000000..b95dfa34 --- /dev/null +++ b/package/batman-adv/batman-adv.hash @@ -0,0 +1,8 @@ +# From https://downloads.open-mesh.org/batman/stable/sources/batman-adv/batman-adv-2023.1.tar.gz.sha1 +sha1 e3d6e8d4db772156d7ad021b9a166832633a2ea5 batman-adv-2023.1.tar.gz +# locally computed +sha256 f46a7286660a5ec3506a1be7ef60b471c51ac70550597d598040479ab7b936b8 batman-adv-2022.3.tar.gz + +# Hash for license files +sha256 cecbf53d1148e13256ac29f8b900655b7fc8dc12d59939a95bc2323ea1747025 LICENSES/preferred/GPL-2.0 +sha256 323c587d0ccf10e376f8bf9a7f31fb4ca6078105194b42e0b1e0ee2bc9bde71f LICENSES/preferred/MIT diff --git a/package/batman-adv/batman-adv.mk b/package/batman-adv/batman-adv.mk new file mode 100644 index 00000000..5b50572d --- /dev/null +++ b/package/batman-adv/batman-adv.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# batman-adv +# +################################################################################ + +BATMAN_ADV_VERSION = 2023.1 +BATMAN_ADV_SITE = https://downloads.open-mesh.org/batman/stable/sources/batman-adv +BATMAN_ADV_LICENSE = GPL-2.0, MIT (batman_adv.h) +BATMAN_ADV_LICENSE_FILES = LICENSES/preferred/GPL-2.0 LICENSES/preferred/MIT + +BATMAN_ADV_CFLAGS = \ + -I$(@D)/compat-include/ \ + -I$(@D)/include/ \ + -include $(@D)/compat.h \ + -DBATADV_SOURCE_VERSION=\"\\\"$(BATMAN_ADV_VERSION)\\\"\" + +# Bridge Loop Avoidance, Distributed Arp Table are always enabled +BATMAN_ADV_MODULE_MAKE_OPTS = \ + KVER=$(LINUX_VERSION_PROBED) \ + INSTALL_MOD_DIR=updates/net/batman-adv \ + NOSTDINC_FLAGS="$(BATMAN_ADV_CFLAGS)" \ + CONFIG_BATMAN_ADV=m \ + CONFIG_BATMAN_ADV_BLA=y \ + CONFIG_BATMAN_ADV_DAT=y \ + CONFIG_BATMAN_ADV_MCAST=y \ + CONFIG_BATMAN_ADV_BATMAN_V=$(if $(BR2_PACKAGE_BATMAN_ADV_BATMAN_V),y,n) \ + CONFIG_BATMAN_ADV_DEBUG=$(if $(BR2_PACKAGE_BATMAN_ADV_DEBUG),y,n) \ + CONFIG_BATMAN_ADV_NC=$(if $(BR2_PACKAGE_BATMAN_ADV_NC),y,n) + +BATMAN_ADV_MODULE_SUBDIRS = net/batman-adv + +define BATMAN_ADV_CONFIGURE_CMDS + $(BATMAN_ADV_MODULE_MAKE_OPTS) $(@D)/gen-compat-autoconf.sh $(@D)/compat-autoconf.h +endef + +define BATMAN_ADV_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_CRC16) + $(call KCONFIG_ENABLE_OPT,CONFIG_LIBCRC32C) +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/bats-assert/Config.in b/package/bats-assert/Config.in new file mode 100644 index 00000000..8768331c --- /dev/null +++ b/package/bats-assert/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_BATS_ASSERT + bool "bats-assert" + select BR2_PACKAGE_BATS_SUPPORT # runtime + help + bats-assert is a helper library providing common assertions + for Bats. + + In the context of this project, an assertion is a function + that perform a test and returns 1 on failure or 0 on success. + To make debugging easier, the assertion also outputs relevant + information on failure. The output is formatted for + readability. To make assertions usable outside of @test + blocks, the output is sent to stderr. + + https://github.com/bats-core/bats-assert diff --git a/package/bats-assert/bats-assert.hash b/package/bats-assert/bats-assert.hash new file mode 100644 index 00000000..94c3908a --- /dev/null +++ b/package/bats-assert/bats-assert.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 98ca3b685f8b8993e48ec057565e6e2abcc541034ed5b0e81f191505682037fd bats-assert-2.1.0.tar.gz + +# License files +sha256 36ffd9dc085d529a7e60e1276d73ae5a030b020313e6c5408593a6ae2af39673 LICENSE diff --git a/package/bats-assert/bats-assert.mk b/package/bats-assert/bats-assert.mk new file mode 100644 index 00000000..c0e37e00 --- /dev/null +++ b/package/bats-assert/bats-assert.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# bats-assert +# +################################################################################ + +BATS_ASSERT_VERSION = 2.1.0 +BATS_ASSERT_SITE = $(call github,bats-core,bats-assert,v$(BATS_ASSERT_VERSION)) +BATS_ASSERT_LICENSE = CC0-1.0 +BATS_ASSERT_LICENSE_FILES = LICENSE + +define BATS_ASSERT_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/lib/bats/bats-assert/src + $(INSTALL) -m 0755 $(@D)/*.bash -t $(TARGET_DIR)/usr/lib/bats/bats-assert + $(INSTALL) -m 0755 $(@D)/src/*.bash -t $(TARGET_DIR)/usr/lib/bats/bats-assert/src +endef + +$(eval $(generic-package)) diff --git a/package/bats-core/Config.in b/package/bats-core/Config.in new file mode 100644 index 00000000..00beb211 --- /dev/null +++ b/package/bats-core/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_BATS_CORE + bool "bats" + depends on BR2_PACKAGE_BASH # runtime + help + Bats: Bash Automated Testing System + + Bats is a TAP-compliant testing framework for Bash. It + provides a simple way to verify that the UNIX programs you + write behave as expected. + + https://github.com/bats-core/bats-core + +if BR2_PACKAGE_BATS_CORE + +source "package/bats-assert/Config.in" +source "package/bats-file/Config.in" +source "package/bats-support/Config.in" + +endif diff --git a/package/bats-core/bats-core.hash b/package/bats-core/bats-core.hash new file mode 100644 index 00000000..25b2b603 --- /dev/null +++ b/package/bats-core/bats-core.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 aeff09fdc8b0c88b3087c99de00cf549356d7a2f6a69e3fcec5e0e861d2f9063 bats-core-1.11.0.tar.gz + +# License files +sha256 55074b2b3b87809105034e1468e59076554d76a80c67bcc592000cc3d929852d LICENSE.md diff --git a/package/bats-core/bats-core.mk b/package/bats-core/bats-core.mk new file mode 100644 index 00000000..716b167c --- /dev/null +++ b/package/bats-core/bats-core.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# bats-core +# +################################################################################ + +BATS_CORE_VERSION = 1.11.0 +BATS_CORE_SITE = $(call github,bats-core,bats-core,v$(BATS_CORE_VERSION)) +BATS_CORE_LICENSE = MIT +BATS_CORE_LICENSE_FILES = LICENSE.md + +define BATS_CORE_INSTALL_TARGET_CMDS + $(@D)/install.sh $(TARGET_DIR)/usr +endef + +$(eval $(generic-package)) diff --git a/package/bats-file/Config.in b/package/bats-file/Config.in new file mode 100644 index 00000000..c53fcf66 --- /dev/null +++ b/package/bats-file/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_BATS_FILE + bool "bats-file" + select BR2_PACKAGE_BATS_SUPPORT # runtime + help + bats-file is a helper library providing common filesystem + related assertions and helpers for Bats. + + Assertions are functions that perform a test and output + relevant information on failure to help debugging. They return + 1 on failure and 0 otherwise. Output, formatted for + readability, is sent to the standard error to make assertions + usable outside of @test blocks too. + + https://github.com/bats-core/bats-file diff --git a/package/bats-file/bats-file.hash b/package/bats-file/bats-file.hash new file mode 100644 index 00000000..9530dc6d --- /dev/null +++ b/package/bats-file/bats-file.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 9b69043241f3af1c2d251f89b4fcafa5df3f05e97b89db18d7c9bdf5731bb27a bats-file-0.4.0.tar.gz + +# License files +sha256 36ffd9dc085d529a7e60e1276d73ae5a030b020313e6c5408593a6ae2af39673 LICENSE diff --git a/package/bats-file/bats-file.mk b/package/bats-file/bats-file.mk new file mode 100644 index 00000000..0499327f --- /dev/null +++ b/package/bats-file/bats-file.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# bats-file +# +################################################################################ + +BATS_FILE_VERSION = 0.4.0 +BATS_FILE_SITE = $(call github,bats-core,bats-file,v$(BATS_FILE_VERSION)) +BATS_FILE_LICENSE = CC0-1.0 +BATS_FILE_LICENSE_FILES = LICENSE + +define BATS_FILE_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/lib/bats/bats-file/src + $(INSTALL) -m 0755 $(@D)/*.bash -t $(TARGET_DIR)/usr/lib/bats/bats-file + $(INSTALL) -m 0755 $(@D)/src/*.bash -t $(TARGET_DIR)/usr/lib/bats/bats-file/src +endef + +$(eval $(generic-package)) diff --git a/package/bats-support/Config.in b/package/bats-support/Config.in new file mode 100644 index 00000000..ce609781 --- /dev/null +++ b/package/bats-support/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_BATS_SUPPORT + bool "bats-support" + help + bats-support is a supporting library providing common + functions to test helper libraries written for Bats. + + https://github.com/bats-core/bats-support diff --git a/package/bats-support/bats-support.hash b/package/bats-support/bats-support.hash new file mode 100644 index 00000000..847f39e7 --- /dev/null +++ b/package/bats-support/bats-support.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 7815237aafeb42ddcc1b8c698fc5808026d33317d8701d5ec2396e9634e2918f bats-support-0.3.0.tar.gz + +# License files +sha256 36ffd9dc085d529a7e60e1276d73ae5a030b020313e6c5408593a6ae2af39673 LICENSE diff --git a/package/bats-support/bats-support.mk b/package/bats-support/bats-support.mk new file mode 100644 index 00000000..765e08ff --- /dev/null +++ b/package/bats-support/bats-support.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# bats-support +# +################################################################################ + +BATS_SUPPORT_VERSION = 0.3.0 +BATS_SUPPORT_SITE = $(call github,bats-core,bats-support,v$(BATS_SUPPORT_VERSION)) +BATS_SUPPORT_LICENSE = CC0-1.0 +BATS_SUPPORT_LICENSE_FILES = LICENSE + +define BATS_SUPPORT_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/lib/bats/bats-support/src + $(INSTALL) -m 0755 $(@D)/*.bash -t $(TARGET_DIR)/usr/lib/bats/bats-support + $(INSTALL) -m 0755 $(@D)/src/*.bash -t $(TARGET_DIR)/usr/lib/bats/bats-support/src +endef + +$(eval $(generic-package)) diff --git a/package/bayer2rgb-neon/Config.in b/package/bayer2rgb-neon/Config.in new file mode 100644 index 00000000..b0e3017b --- /dev/null +++ b/package/bayer2rgb-neon/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_BAYER2RGB_NEON_ARCH_SUPPORTS + bool + default y if BR2_arm && BR2_ARM_CPU_HAS_NEON + default y if BR2_aarch64 + +config BR2_PACKAGE_BAYER2RGB_NEON + bool "bayer2rgb-neon" + depends on BR2_PACKAGE_BAYER2RGB_NEON_ARCH_SUPPORTS + depends on !BR2_STATIC_LIBS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + help + bayer2rgb-neon is a library which allows + to decode raw camera bayer to RGB using + NEON hardware acceleration. + + https://gitlab-ext.sigma-chemnitz.de/ensc/bayer2rgb + +comment "bayer2rgb-neon needs a toolchain w/ C++, dynamic library, gcc >= 4.9" + depends on BR2_PACKAGE_BAYER2RGB_NEON_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/bayer2rgb-neon/bayer2rgb-neon.hash b/package/bayer2rgb-neon/bayer2rgb-neon.hash new file mode 100644 index 00000000..c376bc64 --- /dev/null +++ b/package/bayer2rgb-neon/bayer2rgb-neon.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c7673c16f7f9bf7bd7cb1f258a4ba0cfd705d475f4bd2fb978ffdb60adff57c4 bayer2rgb-neon-bc950b3398ba034fe5cc39f625796a6111cdb87f-git4.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/bayer2rgb-neon/bayer2rgb-neon.mk b/package/bayer2rgb-neon/bayer2rgb-neon.mk new file mode 100644 index 00000000..61d63349 --- /dev/null +++ b/package/bayer2rgb-neon/bayer2rgb-neon.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# bayer2rgb-neon +# +################################################################################ + +BAYER2RGB_NEON_VERSION = bc950b3398ba034fe5cc39f625796a6111cdb87f +BAYER2RGB_NEON_SITE = https://gitlab-ext.sigma-chemnitz.de/ensc/bayer2rgb.git +BAYER2RGB_NEON_SITE_METHOD = git +BAYER2RGB_NEON_LICENSE = GPL-3.0 +BAYER2RGB_NEON_LICENSE_FILES = COPYING +BAYER2RGB_NEON_INSTALL_STAGING = YES +BAYER2RGB_NEON_DEPENDENCIES = host-pkgconf host-gengetopt +BAYER2RGB_NEON_AUTORECONF = YES + +BAYER2RGB_NEON_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_arm),y) +BAYER2RGB_NEON_CFLAGS += -mfpu=neon +endif + +# __builtin_prefetch() third argument must be a constant, but +# bayer2rgb-neon uses a variable, derived from a constant, so some +# optimization is needed to allow the compiler to turn it into a +# constant, otherwise the build fails +ifeq ($(BR2_OPTIMIZE_0),y) +BAYER2RGB_NEON_CFLAGS += -O1 +endif + +BAYER2RGB_NEON_CONF_ENV = CFLAGS="$(BAYER2RGB_NEON_CFLAGS)" + +$(eval $(autotools-package)) diff --git a/package/bc/0001-bc-use-MAKEINFO-variable-for-docs.patch b/package/bc/0001-bc-use-MAKEINFO-variable-for-docs.patch new file mode 100644 index 00000000..03d15f55 --- /dev/null +++ b/package/bc/0001-bc-use-MAKEINFO-variable-for-docs.patch @@ -0,0 +1,35 @@ +From 7dc22308b2974fd093b6a564b7b28ddc20ddf4a6 Mon Sep 17 00:00:00 2001 +From: Matt Weber +Date: Fri, 13 Sep 2019 13:45:02 -0500 +Subject: [PATCH] bc: use MAKEINFO variable for docs + +Use the appropiate MAKEINFO variable rather than the hardcoded makeinfo +command directly, otherwise missing logic never works. + +Fixes: +http://autobuild.buildroot.net/results/b0b/b0b9dced0014a5a8026fa972f95085e8bd16a07b/ + +[Recreated for 1.0.7.1 by Matt W and applied to Makefile.am instead of + Makefile.in] +Signed-off-by: Gustavo Zacarias +Signed-off-by: Matthew Weber +--- + doc/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/doc/Makefile.am b/doc/Makefile.am +index 1bdc478..f873b6a 100644 +--- a/doc/Makefile.am ++++ b/doc/Makefile.am +@@ -1,7 +1,7 @@ + ## Process this file with automake to produce Makefile.in + + info_TEXINFOS = bc.texi dc.texi +-MAKEINFO = makeinfo --no-split ++MAKEINFO = @MAKEINFO@ --no-split + + MAINTAINERCLEANFILES = Makefile.in + +-- +2.17.1 + diff --git a/package/bc/0002-notice-read-and-write-errors-on-input-and-output.patch b/package/bc/0002-notice-read-and-write-errors-on-input-and-output.patch new file mode 100644 index 00000000..87654e3c --- /dev/null +++ b/package/bc/0002-notice-read-and-write-errors-on-input-and-output.patch @@ -0,0 +1,793 @@ +From af96fb92052c307818eefa4b687f964f1e3f542e Mon Sep 17 00:00:00 2001 +From: Matt Weber +Date: Thu, 12 Sep 2019 15:04:35 -0500 +Subject: [PATCH] notice read and write errors on input and output + +Quoting from the bug report: + bc (1.06-19ubuntu1) dapper; urgency=low + * Make dc notice read and write errors on its input and output. + I grepped for mentions of the strings `putc', `print', `getc', + `FILE', `stdin', `stdout' and `stderr' and added calls to new + error-checking functions unless it was clear from the + immediately-surrounding code that the program was exiting + nonzero, or would exit nonzero if the call failed. I ignored + hits in lib/getopt*, which seems to pervasively ignore write + errors when printing usage messages, in the hope that these + were correct. I _think_ I got them all. -iwj. + -- Ian Jackson Tue, 4 Apr 2006 17:21:02 +0100 + +Upsteam: +https://sources.debian.org/patches/bc/1.07.1-2/05_notice_read_write_errors.diff/ + +[Reformatted to GIT for 1.0.7.1 by Matt W] +Updated by Ryan Kavanagh for 1.0.7.1 on 26 July 2017. +Author: Ian Jackson +Origin: other +Bug-Debian: http://bugs.debian.org/488735 + +Signed-off-by: Matthew Weber +Signed-off-by: Bernd Kuhls +[Bernd: + Updated to incorporate changes by Matthias Klose + on 2024-03-13 that fix Debian bug https://bugs.debian.org/1065375] +--- + bc/execute.c | 10 +++++++++- + bc/main.c | 3 +++ + bc/sbc.y | 2 ++ + bc/scan.c | 2 ++ + bc/scan.l | 3 +++ + bc/util.c | 15 ++++++++++++-- + dc/dc.c | 3 +++ + dc/eval.c | 55 +++++++++++++++++++++++++++++++++++++++------------- + dc/misc.c | 1 + + dc/numeric.c | 9 +++++++++ + dc/stack.c | 11 ++++++++++- + dc/string.c | 2 ++ + h/number.h | 11 +++++++---- + lib/number.c | 24 +++++++++++++++++++++++ + 14 files changed, 129 insertions(+), 22 deletions(-) + +diff --git a/bc/execute.c b/bc/execute.c +index 256e4b7..50eac49 100644 +--- a/bc/execute.c ++++ b/bc/execute.c +@@ -104,6 +104,7 @@ execute (void) + } + out_char ('\n'); + } ++ checkferror_output(stdout); + } + #endif + +@@ -224,6 +225,7 @@ execute (void) + } + } + fflush (stdout); ++ checkferror_output(stdout); + break; + + case 'R' : /* Return from function */ +@@ -259,6 +261,7 @@ execute (void) + if (inst == 'W') out_char ('\n'); + store_var (4); /* Special variable "last". */ + fflush (stdout); ++ checkferror_output(stdout); + pop (); + break; + +@@ -342,6 +345,7 @@ execute (void) + case 'w' : /* Write a string to the output. */ + while ((ch = byte(&pc)) != '"') out_schar (ch); + fflush (stdout); ++ checkferror_output(stdout); + break; + + case 'x' : /* Exchange Top of Stack with the one under the tos. */ +@@ -549,7 +553,10 @@ execute (void) + { + signal (SIGINT, use_quit); + if (had_sigint) +- printf ("\ninterrupted execution.\n"); ++ { ++ printf ("\ninterrupted execution.\n"); ++ checkferror_output(stdout); ++ } + } + } + +@@ -584,6 +591,7 @@ input_char (void) + out_col = 0; /* Saw a new line */ + } + } ++ checkferror_input(stdin); + + /* Classify and preprocess the input character. */ + if (isdigit(in_ch)) +diff --git a/bc/main.c b/bc/main.c +index 012075c..c96207b 100644 +--- a/bc/main.c ++++ b/bc/main.c +@@ -353,6 +353,9 @@ use_quit (int sig) + errno = save; + #else + write (1, "\n(interrupt) Exiting bc.\n", 26); ++#ifdef READLINE ++ rl_initialize (); /* Clear readline buffer */ ++#endif + bc_exit(0); + #endif + } +diff --git a/bc/sbc.y b/bc/sbc.y +index 586686b..921ab1e 100644 +--- a/bc/sbc.y ++++ b/bc/sbc.y +@@ -86,7 +86,9 @@ program : /* empty */ + if (interactive && !quiet) + { + show_bc_version (); ++ checkferror_output(stdout); + welcome (); ++ checkferror_output(stdout); + } + } + | program input_item +diff --git a/bc/scan.c b/bc/scan.c +index b237f55..8dee4e9 100644 +--- a/bc/scan.c ++++ b/bc/scan.c +@@ -791,6 +791,7 @@ bcel_input (char *buf, yy_size_t *result, int max) + if (bcel_len != 0) + history (hist, &histev, H_ENTER, bcel_line); + fflush (stdout); ++ checkferror_output(stdout); + } + + if (bcel_len <= max) +@@ -863,6 +864,7 @@ rl_input (char *buf, int *result, int max) + add_history (rl_line); + rl_line[rl_len-1] = '\n'; + fflush (stdout); ++ checkferror_output(stdout); + } + + if (rl_len <= max) +diff --git a/bc/scan.l b/bc/scan.l +index eb2e2dd..79186bb 100644 +--- a/bc/scan.l ++++ b/bc/scan.l +@@ -99,6 +99,7 @@ bcel_input (char *buf, yy_size_t *result, int max) + if (bcel_len != 0) + history (hist, &histev, H_ENTER, bcel_line); + fflush (stdout); ++ checkferror_output(stdout); + } + + if (bcel_len <= max) +@@ -171,6 +172,7 @@ rl_input (char *buf, int *result, int max) + add_history (rl_line); + rl_line[rl_len-1] = '\n'; + fflush (stdout); ++ checkferror_output(stdout); + } + + if (rl_len <= max) +@@ -295,6 +297,7 @@ limits return(Limits); + if (c == EOF) + { + fprintf (stderr,"EOF encountered in a comment.\n"); ++ checkferror_output(stderr); + break; + } + } +diff --git a/bc/util.c b/bc/util.c +index 8eba093..cacd796 100644 +--- a/bc/util.c ++++ b/bc/util.c +@@ -247,9 +247,10 @@ init_gen (void) + continue_label = 0; + next_label = 1; + out_count = 2; +- if (compile_only) ++ if (compile_only) { + printf ("@i"); +- else ++ checkferror_output(stdout); ++ } else + init_load (); + had_error = FALSE; + did_gen = FALSE; +@@ -272,6 +273,7 @@ generate (const char *str) + printf ("\n"); + out_count = 0; + } ++ checkferror_output(stdout); + } + else + load_code (str); +@@ -289,6 +291,7 @@ run_code(void) + if (compile_only) + { + printf ("@r\n"); ++ checkferror_output(stdout); + out_count = 0; + } + else +@@ -326,6 +329,7 @@ out_char (int ch) + } + putchar (ch); + } ++ checkferror_output(stdout); + } + + /* Output routines: Write a character CH to the standard output. +@@ -355,6 +359,7 @@ out_schar (int ch) + } + putchar (ch); + } ++ checkferror_output(stdout); + } + + +@@ -639,6 +644,7 @@ limits(void) + #ifdef OLD_EQ_OP + printf ("Old assignment operatiors are valid. (=-, =+, ...)\n"); + #endif ++ checkferror_output(stdout); + } + + /* bc_malloc will check the return value so all other places do not +@@ -703,6 +709,7 @@ yyerror (str, va_alist) + fprintf (stderr,"%s %d: ",name,line_no); + vfprintf (stderr, str, args); + fprintf (stderr, "\n"); ++ checkferror_output(stderr); + had_error = TRUE; + va_end (args); + } +@@ -743,6 +750,7 @@ ct_warn (mesg, va_alist) + fprintf (stderr,"%s %d: Error: ",name,line_no); + vfprintf (stderr, mesg, args); + fprintf (stderr, "\n"); ++ checkferror_output(stderr); + had_error = TRUE; + } + else +@@ -755,6 +763,7 @@ ct_warn (mesg, va_alist) + fprintf (stderr,"%s %d: (Warning) ",name,line_no); + vfprintf (stderr, mesg, args); + fprintf (stderr, "\n"); ++ checkferror_output(stderr); + } + va_end (args); + } +@@ -789,6 +798,7 @@ rt_error (mesg, va_alist) + va_end (args); + + fprintf (stderr, "\n"); ++ checkferror_output(stderr); + runtime_error = TRUE; + } + +@@ -823,6 +833,7 @@ rt_warn (const char *mesg) + va_end (args); + + fprintf (stderr, "\n"); ++ checkferror_output(stderr); + } + + /* bc_exit: Make sure to reset the edit state. */ +diff --git a/dc/dc.c b/dc/dc.c +index 6a2bb26..ccdb1c2 100644 +--- a/dc/dc.c ++++ b/dc/dc.c +@@ -45,6 +45,7 @@ + #include + #include "dc.h" + #include "dc-proto.h" ++#include "number.h" + + #ifndef EXIT_SUCCESS /* C89 */ + # define EXIT_SUCCESS 0 +@@ -59,6 +59,7 @@ static void + bug_report_info DC_DECLVOID() + { + printf("Email bug reports to: bug-dc@gnu.org .\n"); ++ checkferror_output(stdout); + } + + static void +@@ -69,6 +70,7 @@ show_version DC_DECLVOID() + This is free software; see the source for copying conditions. There is NO\n\ + warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n\ + to the extent permitted by law.\n", DC_COPYRIGHT); ++ checkferror_output(stdout); + } + + /* your generic usage function */ +@@ -85,6 +87,7 @@ Usage: %s [OPTION] [file ...]\n\ + \n\ + ", progname); + bug_report_info(); ++ checkferror_output(f); + } + + /* returns a pointer to one past the last occurance of c in s, +diff --git a/dc/eval.c b/dc/eval.c +index 05a3d9e..6c54e61 100644 +--- a/dc/eval.c ++++ b/dc/eval.c +@@ -41,6 +41,7 @@ + #endif + #include "dc.h" + #include "dc-proto.h" ++#include "number.h" + + typedef enum {DC_FALSE, DC_TRUE} dc_boolean; + +@@ -97,12 +97,15 @@ static int input_pushback; + static int + input_fil DC_DECLVOID() + { ++ int c; + if (input_pushback != EOF){ +- int c = input_pushback; ++ c = input_pushback; + input_pushback = EOF; + return c; + } +- return getc(input_fil_fp); ++ c = getc(input_fil_fp); ++ checkferror_input(input_fil_fp); ++ return c; + } + + /* passed as an argument to dc_getnum */ +@@ -301,11 +304,13 @@ dc_func DC_DECLARG((c, peekc, negcmp)) + tmpint = dc_num2int(datum.v.number, DC_TOSS); + if (2 <= tmpint && tmpint <= DC_IBASE_MAX) + dc_ibase = tmpint; +- else ++ else { + fprintf(stderr, + "%s: input base must be a number \ + between 2 and %d (inclusive)\n", + progname, DC_IBASE_MAX); ++ checkferror_output(stderr); ++ } + } + break; + case 'k': /* set scale to value on top of stack */ +@@ -313,11 +318,12 @@ between 2 and %d (inclusive)\n", + tmpint = -1; + if (datum.dc_type == DC_NUMBER) + tmpint = dc_num2int(datum.v.number, DC_TOSS); +- if ( ! (tmpint >= 0) ) ++ if ( ! (tmpint >= 0) ) { + fprintf(stderr, + "%s: scale must be a nonnegative number\n", + progname); +- else ++ checkferror_output(stderr); ++ } else + dc_scale = tmpint; + } + break; +@@ -341,11 +347,12 @@ between 2 and %d (inclusive)\n", + tmpint = 0; + if (datum.dc_type == DC_NUMBER) + tmpint = dc_num2int(datum.v.number, DC_TOSS); +- if ( ! (tmpint > 1) ) ++ if ( ! (tmpint > 1) ) { + fprintf(stderr, + "%s: output base must be a number greater than 1\n", + progname); +- else ++ checkferror_output(stderr); ++ } else + dc_obase = tmpint; + } + break; +@@ -378,6 +385,7 @@ between 2 and %d (inclusive)\n", + fprintf(stderr, + "%s: square root of nonnumeric attempted\n", + progname); ++ checkferror_output(stderr); + }else if (dc_sqrt(datum.v.number, dc_scale, &tmpnum) == DC_SUCCESS){ + dc_free_num(&datum.v.number); + datum.v.number = tmpnum; +@@ -424,6 +432,7 @@ between 2 and %d (inclusive)\n", + dc_garbage("at top of stack", -1); + } + fflush(stdout); ++ checkferror_output(stdout); + break; + case 'Q': /* quit out of top-of-stack nested evals; + * pops value from stack; +@@ -440,6 +449,7 @@ between 2 and %d (inclusive)\n", + fprintf(stderr, + "%s: Q command requires a number >= 1\n", + progname); ++ checkferror_output(stderr); + } + break; + case 'R': /* pop a value off of the evaluation stack,; +@@ -483,11 +493,12 @@ between 2 and %d (inclusive)\n", + if (datum.dc_type == DC_NUMBER) + tmpint = dc_num2int(datum.v.number, DC_TOSS); + if (dc_pop(&datum) == DC_SUCCESS){ +- if (tmpint < 0) ++ if (tmpint < 0) { + fprintf(stderr, + "%s: array index must be a nonnegative integer\n", + progname); +- else ++ checkferror_output(stderr); ++ } else + dc_array_set(peekc, tmpint, datum); + } + } +@@ -499,18 +510,21 @@ between 2 and %d (inclusive)\n", + tmpint = -1; + if (datum.dc_type == DC_NUMBER) + tmpint = dc_num2int(datum.v.number, DC_TOSS); +- if (tmpint < 0) ++ if (tmpint < 0) { + fprintf(stderr, + "%s: array index must be a nonnegative integer\n", + progname); +- else ++ checkferror_output(stderr); ++ } else + dc_push(dc_array_get(peekc, tmpint)); + } + return DC_EATONE; + + default: /* What did that user mean? */ + fprintf(stderr, "%s: ", progname); ++ checkferror_output(stderr); + dc_show_id(stdout, c, " unimplemented\n"); ++ checkferror_output(stdout); + break; + } + return DC_OKAY; +@@ -538,6 +552,7 @@ evalstr DC_DECLARG((string)) + fprintf(stderr, + "%s: eval called with non-string argument\n", + progname); ++ checkferror_output(stderr); + return DC_OKAY; + } + interrupt_seen = 0; +@@ -635,6 +650,7 @@ evalstr DC_DECLARG((string)) + return DC_FAIL; + } + fprintf(stderr, "%s: unexpected EOS\n", progname); ++ checkferror_output(stderr); + return DC_OKAY; + } + } +@@ -692,6 +708,7 @@ dc_evalfile DC_DECLARG((fp)) + stdin_lookahead = EOF; + for (c=getc(fp); c!=EOF; c=peekc){ + peekc = getc(fp); ++ checkferror_input(stdin); + /* + * The following if() is the only place where ``stdin_lookahead'' + * might be set to other than EOF: +@@ -717,24 +734,30 @@ dc_evalfile DC_DECLARG((fp)) + signal(SIGINT, sigint_handler); + switch (dc_func(c, peekc, negcmp)){ + case DC_OKAY: +- if (stdin_lookahead != peekc && fp == stdin) ++ if (stdin_lookahead != peekc && fp == stdin) { + peekc = getc(fp); ++ checkferror_input(stdin); ++ } + break; + case DC_EATONE: + peekc = getc(fp); ++ checkferror_input(fp); + break; + case DC_EVALREG: + /*commands which send us here shall guarantee that peekc!=EOF*/ + c = peekc; + peekc = getc(fp); ++ checkferror_input(fp); + stdin_lookahead = peekc; + if (dc_register_get(c, &datum) != DC_SUCCESS) + break; + dc_push(datum); + /*@fallthrough@*/ + case DC_EVALTOS: +- if (stdin_lookahead != peekc && fp == stdin) ++ if (stdin_lookahead != peekc && fp == stdin) { + peekc = getc(fp); ++ checkferror_input(stdin); ++ } + if (dc_pop(&datum) == DC_SUCCESS){ + if (datum.dc_type == DC_NUMBER){ + dc_push(datum); +@@ -744,6 +767,7 @@ dc_evalfile DC_DECLARG((fp)) + goto reset_and_exit_quit; + fprintf(stderr, "%s: Q command argument exceeded \ + string execution depth\n", progname); ++ checkferror_output(stderr); + } + }else{ + dc_garbage("at top of stack", -1); +@@ -756,8 +780,11 @@ string execution depth\n", progname); + fprintf(stderr, + "%s: Q command argument exceeded string execution depth\n", + progname); +- if (stdin_lookahead != peekc && fp == stdin) ++ checkferror_output(stderr); ++ if (stdin_lookahead != peekc && fp == stdin) { + peekc = getc(fp); ++ checkferror_input(stdin); ++ } + break; + + case DC_INT: +diff --git a/dc/misc.c b/dc/misc.c +index cd23602..cd910b8 100644 +--- a/dc/misc.c ++++ b/dc/misc.c +@@ -47,6 +47,7 @@ + #include + #include "dc.h" + #include "dc-proto.h" ++#include "number.h" + + #ifndef EXIT_FAILURE /* C89 */ + # define EXIT_FAILURE 1 +@@ -89,6 +89,7 @@ dc_show_id DC_DECLARG((fp, id, suffix)) + fprintf(fp, "'%c' (%#o)%s", (unsigned int) id, id, suffix); + else + fprintf(fp, "%#o%s", (unsigned int) id, suffix); ++ checkferror_output(fp); + } + + +diff --git a/dc/numeric.c b/dc/numeric.c +index 37759de..60cfb85 100644 +--- a/dc/numeric.c ++++ b/dc/numeric.c +@@ -133,6 +133,7 @@ dc_div DC_DECLARG((a, b, kscale, result)) + bc_init_num(CastNumPtr(result)); + if (bc_divide(CastNum(a), CastNum(b), CastNumPtr(result), kscale)){ + fprintf(stderr, "%s: divide by zero\n", progname); ++ checkferror_output(stderr); + return DC_DOMAIN_ERROR; + } + return DC_SUCCESS; +@@ -155,6 +156,7 @@ dc_divrem DC_DECLARG((a, b, kscale, quotient, remainder)) + if (bc_divmod(CastNum(a), CastNum(b), + CastNumPtr(quotient), CastNumPtr(remainder), kscale)){ + fprintf(stderr, "%s: divide by zero\n", progname); ++ checkferror_output(stderr); + return DC_DOMAIN_ERROR; + } + return DC_SUCCESS; +@@ -173,6 +175,7 @@ dc_rem DC_DECLARG((a, b, kscale, result)) + bc_init_num(CastNumPtr(result)); + if (bc_modulo(CastNum(a), CastNum(b), CastNumPtr(result), kscale)){ + fprintf(stderr, "%s: remainder by zero\n", progname); ++ checkferror_output(stderr); + return DC_DOMAIN_ERROR; + } + return DC_SUCCESS; +@@ -225,6 +228,7 @@ dc_sqrt DC_DECLARG((value, kscale, result)) + tmp = bc_copy_num(CastNum(value)); + if (!bc_sqrt(&tmp, kscale)){ + fprintf(stderr, "%s: square root of negative number\n", progname); ++ checkferror_output(stderr); + bc_free_num(&tmp); + return DC_DOMAIN_ERROR; + } +@@ -470,6 +474,7 @@ dc_dump_num DC_DECLARG((dcvalue, discard_p)) + + for (cur=top_of_stack; cur; cur=next) { + putchar(cur->digit); ++ checkferror_output(stdout); + next = cur->link; + free(cur); + } +@@ -587,6 +592,8 @@ out_char (ch) + out_col = 1; + } + putchar(ch); ++ checkferror_output(stdout); ++ checkferror_output(stderr); + } + } + +@@ -626,6 +633,7 @@ rt_error (mesg, va_alist) + vfprintf (stderr, mesg, args); + va_end (args); + fprintf (stderr, "\n"); ++ checkferror_output(stderr); + } + + +@@ -659,6 +667,7 @@ rt_warn (mesg, va_alist) + vfprintf (stderr, mesg, args); + va_end (args); + fprintf (stderr, "\n"); ++ checkferror_output(stderr); + } + + +diff --git a/dc/stack.c b/dc/stack.c +index 49422df..174411d 100644 +--- a/dc/stack.c ++++ b/dc/stack.c +@@ -33,9 +33,13 @@ + #include "dc.h" + #include "dc-proto.h" + #include "dc-regdef.h" ++#include "number.h" + + /* an oft-used error message: */ +-#define Empty_Stack fprintf(stderr, "%s: stack empty\n", progname) ++#define Empty_Stack do{ \ ++ fprintf(stderr, "%s: stack empty\n", progname); \ ++ checkferror_output(stderr); \ ++ }while(0) + + + /* simple linked-list implementation suffices: */ +@@ -91,6 +94,7 @@ dc_binop DC_DECLARG((op, kscale)) + if (dc_stack->value.dc_type!=DC_NUMBER + || dc_stack->link->value.dc_type!=DC_NUMBER){ + fprintf(stderr, "%s: non-numeric value\n", progname); ++ checkferror_output(stderr); + return; + } + (void)dc_pop(&b); +@@ -131,6 +135,7 @@ dc_binop2 DC_DECLARG((op, kscale)) + if (dc_stack->value.dc_type!=DC_NUMBER + || dc_stack->link->value.dc_type!=DC_NUMBER){ + fprintf(stderr, "%s: non-numeric value\n", progname); ++ checkferror_output(stderr); + return; + } + (void)dc_pop(&b); +@@ -169,6 +174,7 @@ dc_cmpop DC_DECLVOID() + if (dc_stack->value.dc_type!=DC_NUMBER + || dc_stack->link->value.dc_type!=DC_NUMBER){ + fprintf(stderr, "%s: non-numeric value\n", progname); ++ checkferror_output(stderr); + return 0; + } + (void)dc_pop(&b); +@@ -206,6 +212,7 @@ dc_triop DC_DECLARG((op, kscale)) + || dc_stack->link->value.dc_type!=DC_NUMBER + || dc_stack->link->link->value.dc_type!=DC_NUMBER){ + fprintf(stderr, "%s: non-numeric value\n", progname); ++ checkferror_output(stderr); + return; + } + (void)dc_pop(&c); +@@ -327,6 +334,7 @@ dc_register_get DC_DECLARG((regid, result)) + *result = dc_int2data(0); + }else if (r->value.dc_type==DC_UNINITIALIZED){ + fprintf(stderr, "%s: BUG: register ", progname); ++ checkferror_output(stderr); + dc_show_id(stderr, regid, " exists but is uninitialized?\n"); + return DC_FAIL; + }else{ +@@ -402,6 +410,7 @@ dc_register_pop DC_DECLARG((stackid, result)) + r = dc_register[stackid]; + if (r==NULL || r->value.dc_type==DC_UNINITIALIZED){ + fprintf(stderr, "%s: stack register ", progname); ++ checkferror_output(stderr); + dc_show_id(stderr, stackid, " is empty\n"); + return DC_FAIL; + } +diff --git a/dc/string.c b/dc/string.c +index dee9169..389d899 100644 +--- a/dc/string.c ++++ b/dc/string.c +@@ -45,6 +45,7 @@ + #endif + #include "dc.h" + #include "dc-proto.h" ++#include "number.h" + + /* here is the completion of the dc_string type: */ + struct dc_string { +@@ -94,6 +94,7 @@ dc_out_str DC_DECLARG((value, discard_flag)) + dc_discard discard_flag DC_DECLEND + { + fwrite(value->s_ptr, value->s_len, sizeof *value->s_ptr, stdout); ++ checkferror_output(stdout); + if (discard_flag == DC_TOSS) + dc_free_str(&value); + } +@@ -169,6 +170,7 @@ dc_readstring DC_DECLARG((fp, ldelim, rdelim)) + } + *p++ = c; + } ++ checkferror_input(fp); + return dc_makestring(line_buf, (size_t)(p-line_buf)); + } + +diff --git a/h/number.h b/h/number.h +index abf6332..1983ab4 100644 +--- a/h/number.h ++++ b/h/number.h +@@ -23,10 +23,10 @@ + You may contact the author by: + e-mail: philnelson@acm.org + us-mail: Philip A. Nelson +- Computer Science Department, 9062 +- Western Washington University +- Bellingham, WA 98226-9062 +- ++ Computer Science Department, 9062 ++ Western Washington University ++ Bellingham, WA 98226-9062 ++ + *************************************************************************/ + + #ifndef _NUMBER_H_ +@@ -140,4 +140,7 @@ void bc_out_num (bc_num num, int o_base, void (* out_char)(int), + int leading_zero); + + void bc_out_long (long val, int size, int space, void (*out_char)(int)); ++ ++void checkferror_input (FILE*); ++void checkferror_output (FILE*); + #endif +diff --git a/lib/number.c b/lib/number.c +index f394e92..80b33e3 100644 +--- a/lib/number.c ++++ b/lib/number.c +@@ -1713,6 +1713,7 @@ static void + out_char (int c) + { + putchar(c); ++ checkferror_output(stdout); + } + + +@@ -1721,6 +1722,7 @@ pn (bc_num num) + { + bc_out_num (num, 10, out_char, 0); + out_char ('\n'); ++ checkferror_output(stdout); + } + + +@@ -1732,6 +1734,28 @@ pv (char *name, unsigned char *num, int len) + printf ("%s=", name); + for (i=0; i +Date: Thu, 27 Jun 2019 13:10:47 +0800 +Subject: [PATCH] dc: fix exit code of q command + +The exit code for "echo q | dc" is 1 for dc-1.4.1; +while the exit code for "echo q | dc" is 0 for dc-1.4. + +Here is the answer from ken@gnu.org: +dc-1.4 was right. There was a rewrite of a chunk of code for 1.4.1 to +fix a corner case in the Q command, and somehow the placement of the +clean-up label for the 'q' command got misplaced on the error-handling +branch instead of the clean-exit branch. The patch below fixes this +(it is committed for whenever the next bc/dc release gets made). + +Thanks for the report, + --Ken Pizzini + +Upstream: +https://git.yoctoproject.org/cgit.cgi/poky/plain/meta/recipes-extended/bc/bc/0001-dc-fix-exit-code-of-q-command.patch + +Signed-off-by: Li Zhou +Signed-off-by: Matthew Weber +--- + dc/eval.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dc/eval.c b/dc/eval.c +index 6c54e61..9c28f18 100644 +--- a/dc/eval.c ++++ b/dc/eval.c +@@ -841,10 +841,10 @@ error_fail: + fprintf(stderr, "%s: ", progname); + perror("error reading input"); + return DC_FAIL; +-reset_and_exit_quit: + reset_and_exit_fail: + signal(SIGINT, sigint_default); + return DC_FAIL; ++reset_and_exit_quit: + reset_and_exit_success: + signal(SIGINT, sigint_default); + return DC_SUCCESS; +-- +2.17.1 + diff --git a/package/bc/0004-no-gen-libmath.patch b/package/bc/0004-no-gen-libmath.patch new file mode 100644 index 00000000..7cd506be --- /dev/null +++ b/package/bc/0004-no-gen-libmath.patch @@ -0,0 +1,97 @@ +From a543af443c5f86b24ca89a994b75b6ef4751ac66 Mon Sep 17 00:00:00 2001 +From: Matt Weber +Date: Thu, 12 Sep 2019 15:12:40 -0500 +Subject: [PATCH] no gen libmath + +These rules are not cross-friendly so delete them. libmath has been +generated offline and included as part of this patch as the fbc tool +used to generate that header is assuming the cross archtecture and +can't execute. + +Upstream: +https://git.yoctoproject.org/cgit.cgi/poky/plain/meta/recipes-extended/bc/bc/no-gen-libmath.patch +https://git.yoctoproject.org/cgit.cgi/poky/plain/meta/recipes-extended/bc/bc/libmath.h + +[Reformatted to GIT for 1.0.7.1 by Matt W] +Signed-off-by: Ross Burton +Signed-off-by: Matthew Weber +--- + bc/Makefile.am | 8 -------- + bc/libmath.h | 46 ++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 46 insertions(+), 8 deletions(-) + create mode 100644 bc/libmath.h + +diff --git a/bc/Makefile.am b/bc/Makefile.am +index d9d412e..f244241 100644 +--- a/bc/Makefile.am ++++ b/bc/Makefile.am +@@ -31,14 +31,6 @@ global.o: libmath.h + + fbcOBJ = main.o bc.o scan.o execute.o load.o storage.o util.o warranty.o + +-libmath.h: libmath.b $(fbcOBJ) $(LIBBC) +- echo '{0}' > libmath.h +- $(MAKE) global.o +- $(LINK) -o fbc $(fbcOBJ) global.o $(LIBBC) $(LIBL) $(READLINELIB) $(LIBS) +- ./fbc -c $(srcdir)/libmath.b libmath.h +- $(srcdir)/fix-libmath_h +- rm -f ./fbc ./global.o +- + sbcOBJ = main.o sbc.o scan.o execute.o global.o load.o storage.o util.o \ + warranty.o + sbc.o: sbc.c +diff --git a/bc/libmath.h b/bc/libmath.h +new file mode 100644 +index 0000000..63e1acb +--- /dev/null ++++ b/bc/libmath.h +@@ -0,0 +1,46 @@ ++{"@iK20:s2:p@r", ++"@iF1,5.6,7,8,9,10,11,12,13,14,15[l0:KA:#Z1:l0:s7:pKA:s0:pl5:C1,0:", ++"s14:pl7:s0:pl14:RN1:l5:0Z4:l10:1+s10:pl5:K2:/s5:pl2:", ++"1+s2:pJ3:N4:l13:s2:p1l5:+s14:pl5:s6:p1s8:pK2:s11:pN6:1B7:J5:N8:", ++"l11:i11:pJ6:N7:l6:l5:*s6:l8:l11:*s8:/s9:pl9:0=Z9:l10:0>Z10:N11:", ++"l10:d10:Z12:l14:l14:*s14:pJ11:N12:N10:l15:s2:pl12:Z13:1l14:/R", ++"N13:l14:1/RN9:l14:l9:+s14:pJ8:N5:0R]@r", ++"@iF2,5.7,9,10,11,12,13,14,15[l0:KA:#Z1:l0:s7:pKA:s0:pl5:C2,0:", ++"s14:pl7:s0:pl14:RN1:l5:0{Z2:1K10:l2:^-1/RN2:l2:s15:pK6:l2:+s2:", ++"pK2:s10:p0s11:pN3:l5:K2:}Z4:l10:K2:*s10:pl5:cRs5:pJ3:N4:N5:l5:", ++"K.5:{Z6:l10:K2:*s10:pl5:cRs5:pJ5:N6:l5:1-l5:1+/s13:s14:pl13:l13:", ++"*s12:pK3:s11:pN8:1B9:J7:N10:l11:K2:+s11:pJ8:N9:l13:l12:*s13:l11:", ++"/s9:pl9:0=Z11:l10:l14:*s14:pl15:s2:pl14:1/RN11:l14:l9:+s14:pJ10:N7:", ++"0R]@r", ++"@iF3,5.7,9,11,12,13,16,14,15[l0:KA:#Z1:l0:s7:pKA:s0:pl5:C3,0:", ++"s14:pl7:s0:pl14:RN1:l2:s15:pK1.1:l15:*K2:+s2:p1C4,0:s14:pl5:0", ++"Z11:l15:K5:+s2:pK.2:C4,0:s6:pN11:", ++"l15:K3:+s2:pN12:l5:K.2:>Z13:l10:1+s10:pl5:K.2:-1l5:K.2:*+/s5:", ++"pJ12:N13:l5:s13:s14:pl5:nl5:*s16:pK3:s11:pN15:1B16:J14:N17:l11:", ++"K2:+s11:pJ15:N16:l13:l16:*s13:l11:/s9:pl9:0=Z18:l15:s2:pl10:l6:", ++"*l14:+l12:/RN18:l14:l9:+s14:pJ17:N14:0R]@r", ++"@iF6,13,5.6,7,8,9,10,11,12,16,14,15[l0:KA:#Z1:l0:s7:pKA:s0:pl13:", ++"l5:C6,00:s14:pl7:s0:pl14:RN1:l2:s15:p0s2:pl13:1/s13:pl13:0 + +From: David Mohr +Date: Tue, 26 May 2015 20:34:31 -0600 +Subject: Don't inline crc64 for gcc-5 compatability + +Forwarded: http://article.gmane.org/gmane.linux.kernel.bcache.devel/2919 + +By James Cowgill, see Debian bug #777798 +--- + bcache.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/bcache.c b/bcache.c +index 8f37445..8b4b986 100644 +--- a/bcache.c ++++ b/bcache.c +@@ -115,7 +115,7 @@ static const uint64_t crc_table[256] = { + 0x9AFCE626CE85B507ULL + }; + +-inline uint64_t crc64(const void *_data, size_t len) ++uint64_t crc64(const void *_data, size_t len) + { + uint64_t crc = 0xFFFFFFFFFFFFFFFFULL; + const unsigned char *data = _data; diff --git a/package/bcache-tools/Config.in b/package/bcache-tools/Config.in new file mode 100644 index 00000000..c8e3f6d1 --- /dev/null +++ b/package/bcache-tools/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_BCACHE_TOOLS + bool "bcache tools" + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_USE_MMU # util-linux (libblkid) + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + help + Bcache is a Linux kernel block layer cache. It allows one or + more fast disk drives such as flash-based solid state drives + (SSDs) to act as a cache for one or more slower hard disk + drives. + + http://bcache.evilpiepirate.org/ + + This is the user space bcache tools, required to setup the + linux bcache feature of the Linux kernel. + +comment "bcache-tools needs udev /dev management" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_HAS_UDEV diff --git a/package/bcache-tools/bcache-tools.hash b/package/bcache-tools/bcache-tools.hash new file mode 100644 index 00000000..7548c4aa --- /dev/null +++ b/package/bcache-tools/bcache-tools.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 d56923936f37287efc57a46315679102ef2c86cd0be5874590320acd48c1201c bcache-tools-1.0.8.tar.gz +sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 COPYING diff --git a/package/bcache-tools/bcache-tools.mk b/package/bcache-tools/bcache-tools.mk new file mode 100644 index 00000000..4ff10cc4 --- /dev/null +++ b/package/bcache-tools/bcache-tools.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# bcache-tools +# +################################################################################ + +BCACHE_TOOLS_VERSION = 1.0.8 +BCACHE_TOOLS_SITE = $(call github,g2p,bcache-tools,v$(BCACHE_TOOLS_VERSION)) +BCACHE_TOOLS_LICENSE = GPL-2.0 +BCACHE_TOOLS_LICENSE_FILES = COPYING +BCACHE_TOOLS_DEPENDENCIES = host-pkgconf util-linux + +# We pass $(TARGET_CONFIGURE_OPTS) as environment variable to allow +# the bcache-tools Makefile to alter CFLAGS +define BCACHE_TOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +# The bcache-tools Makefile expects the man8 directory to exist +# expects the /lib/udev/rules.d directory to exist. +define BCACHE_TOOLS_CREATE_MISSING_DIRS + $(INSTALL) -m 0755 -d $(TARGET_DIR)/usr/share/man/man8 + $(INSTALL) -m 0755 -d $(TARGET_DIR)/lib/udev/rules.d +endef + +BCACHE_TOOLS_PRE_INSTALL_TARGET_HOOKS += BCACHE_TOOLS_CREATE_MISSING_DIRS + +define BCACHE_TOOLS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/bcc/Config.in b/package/bcc/Config.in new file mode 100644 index 00000000..bf46f07d --- /dev/null +++ b/package/bcc/Config.in @@ -0,0 +1,50 @@ +config BR2_PACKAGE_BCC + bool "bcc" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on BR2_USE_MMU # python3 + depends on BR2_TOOLCHAIN_USES_GLIBC # hardcode GNU tuple (x86_64-unknown-linux-gnu) + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # clang + depends on BR2_INSTALL_LIBSTDCPP # clang + depends on BR2_HOST_GCC_AT_LEAST_7 # clang + depends on BR2_USE_WCHAR # clang, python3 + depends on BR2_TOOLCHAIN_HAS_THREADS # clang, python3 + depends on !BR2_STATIC_LIBS # clang, python3 + select BR2_PACKAGE_CLANG + select BR2_PACKAGE_ELFUTILS + select BR2_PACKAGE_FLEX # needs FlexLexer.h + select BR2_PACKAGE_HOST_ZIP + select BR2_PACKAGE_LLVM + select BR2_PACKAGE_LLVM_BPF + select BR2_PACKAGE_PYTHON3 + help + BPF Compiler Collection (BCC) + + BCC is a toolkit for creating efficient kernel tracing and + manipulation programs, and includes several useful tools and + examples. It makes use of extended BPF (Berkeley Packet + Filters), formally known as eBPF, a new feature that was + first added to Linux 3.15. Much of what BCC uses requires + Linux 4.1 and above. + + Note: Before using bcc, you need either need to : + - For kernel_ver = [4.1, 5.2) : Copy kernel source code + to target folder /lib/module//build. + - Or kernel_ver >= 5.2 : Compile kernel with CONFIG_IKHEADERS + and use generated headers under /sys/kernel/kheaders.tar.xz + to populate /lib/module//build. + + That's because the clang frontend build eBPF code at runtime. + + https://github.com/iovisor/bcc + http://www.ebpf.io + +comment "bcc needs a glibc toolchain, C++, wchar, threads, dynamic libs, gcc >= 7, host gcc >= 7" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_USES_GLIBC \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_7 \ + || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_HOST_GCC_AT_LEAST_7 \ + || !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_HAS_THREADS \ + || BR2_STATIC_LIBS diff --git a/package/bcc/bcc.hash b/package/bcc/bcc.hash new file mode 100644 index 00000000..b37e125b --- /dev/null +++ b/package/bcc/bcc.hash @@ -0,0 +1,3 @@ +# locally calculated +sha256 321575fa94f3274040379dd2d4535217f45099f4240b58a4dfc171aa8c78402f bcc-src-with-submodule.tar.gz +sha256 b40930bbcf80744c86c46a12bc9da056641d722716c378f5659b9e555ef833e1 LICENSE.txt diff --git a/package/bcc/bcc.mk b/package/bcc/bcc.mk new file mode 100644 index 00000000..e496c4b3 --- /dev/null +++ b/package/bcc/bcc.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# bcc +# +################################################################################ + +BCC_VERSION = 0.29.1 +BCC_SITE = https://github.com/iovisor/bcc/releases/download/v$(BCC_VERSION) +BCC_SOURCE = bcc-src-with-submodule.tar.gz +BCC_LICENSE = Apache-2.0 +BCC_LICENSE_FILES = LICENSE.txt +BCC_INSTALL_STAGING = YES +BCC_DEPENDENCIES = \ + clang \ + elfutils \ + flex \ + host-bison \ + host-flex \ + host-python-setuptools \ + host-zip \ + llvm \ + python3 + +# ENABLE_LLVM_SHARED=ON to use llvm.so - we only support shared libs +# Force REVISION otherwise bcc will use git describe to generate a version number. +BCC_CONF_OPTS = \ + -DENABLE_LLVM_SHARED:BOOL=ON \ + -DREVISION:STRING=$(BCC_VERSION) \ + -DENABLE_CLANG_JIT:BOOL=ON \ + -DENABLE_MAN:BOOL=OFF \ + -DENABLE_EXAMPLES:BOOL=OFF \ + -DPY_SKIP_DEB_LAYOUT:BOOL=ON + +define BCC_LINUX_CONFIG_FIXUPS + # Enable kernel support for eBPF + $(call KCONFIG_ENABLE_OPT,CONFIG_BPF) + $(call KCONFIG_ENABLE_OPT,CONFIG_BPF_SYSCALL) + $(call KCONFIG_ENABLE_OPT,CONFIG_NET_CLS_BPF) + $(call KCONFIG_ENABLE_OPT,CONFIG_NET_ACT_BPF) + $(call KCONFIG_ENABLE_OPT,CONFIG_BPF_JIT) + # [for Linux kernel versions 4.1 through 4.6] + $(call KCONFIG_ENABLE_OPT,CONFIG_HAVE_BPF_JIT) + # [for Linux kernel versions 4.7 and later] + $(call KCONFIG_ENABLE_OPT,CONFIG_HAVE_EBPF_JIT) + $(call KCONFIG_ENABLE_OPT,CONFIG_BPF_EVENTS) + # [for Linux kernel versions 5.2 and later] + $(call KCONFIG_ENABLE_OPT,CONFIG_IKHEADERS) + # bcc needs debugfs at runtime + $(call KCONFIG_ENABLE_OPT,CONFIG_DEBUG_FS) +endef + +$(eval $(cmake-package)) diff --git a/package/bcg729/Config.in b/package/bcg729/Config.in new file mode 100644 index 00000000..cb936ae1 --- /dev/null +++ b/package/bcg729/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_BCG729 + bool "bcg729" + help + Bcg729 is an opensource implementation of both encoder and + decoder of the ITU G729 Annex A/B speech codec. + + https://www.linphone.org/technical-corner/bcg729 diff --git a/package/bcg729/bcg729.hash b/package/bcg729/bcg729.hash new file mode 100644 index 00000000..2eb80a04 --- /dev/null +++ b/package/bcg729/bcg729.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 68599a850535d1b182932b3f86558ac8a76d4b899a548183b062956c5fdc916d bcg729-1.1.1.tar.gz +sha256 1b3782ccad7b8614100cda30d3faf42fc39f2e97932908c543005053b654ca68 LICENSE.txt diff --git a/package/bcg729/bcg729.mk b/package/bcg729/bcg729.mk new file mode 100644 index 00000000..f89e5355 --- /dev/null +++ b/package/bcg729/bcg729.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# bcg729 +# +################################################################################ + +BCG729_VERSION = 1.1.1 +BCG729_SITE = $(call github,BelledonneCommunications,bcg729,$(BCG729_VERSION)) +BCG729_LICENSE = GPL-3.0+ +BCG729_LICENSE_FILES = LICENSE.txt +BCG729_INSTALL_STAGING = YES + +ifeq ($(BR2_STATIC_LIBS),y) +BCG729_CONF_OPTS += -DENABLE_SHARED=OFF -DENABLE_STATIC=ON +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +BCG729_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=ON +else ifeq ($(BR2_SHARED_LIBS),y) +BCG729_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/bcm2835/Config.in b/package/bcm2835/Config.in new file mode 100644 index 00000000..8c77a62a --- /dev/null +++ b/package/bcm2835/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_BCM2835 + bool "bcm2835" + depends on BR2_arm + help + C library for Broadcom BCM 2835 as used in Raspberry Pi. + It provides access to GPIO and other IO functions on the + Broadcom BCM 2835 chip, allowing access to the GPIO pins + on the 26 pin IDE plug on the RPi board so you can control + and interface with various external devices. + + WARNING: the opinion of the Buildroot developers is that + such library is a complete abomination as it entirely works + around the standard Linux interfaces to access GPIOs, I2C, + SPI busses or other IOs. The library directly remaps the + hardware registers in user-space, completely bypassing what + the kernel drivers are doing, and potentially conflicting + with them. + + https://www.airspayce.com/mikem/bcm2835 diff --git a/package/bcm2835/bcm2835.hash b/package/bcm2835/bcm2835.hash new file mode 100644 index 00000000..802f3433 --- /dev/null +++ b/package/bcm2835/bcm2835.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 e67a986462618988a5a86752e36e3ebdd7c5cae66940ff7330aea243b2762525 bcm2835-1.73.tar.gz +sha256 8b1ba204bb69a0ade2bfcf65ef294a920f6bb361b317dba43c7ef29d96332b9b COPYING diff --git a/package/bcm2835/bcm2835.mk b/package/bcm2835/bcm2835.mk new file mode 100644 index 00000000..dcf21cb5 --- /dev/null +++ b/package/bcm2835/bcm2835.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# bcm2835 +# +################################################################################ + +BCM2835_VERSION = 1.73 +BCM2835_SITE = https://www.airspayce.com/mikem/bcm2835 +BCM2835_LICENSE = GPL-3.0 +BCM2835_LICENSE_FILES = COPYING +BCM2835_INSTALL_STAGING = YES + +# disable doxygen doc generation +BCM2835_CONF_ENV = ac_cv_prog_DOXYGEN=/bin/true + +$(eval $(autotools-package)) diff --git a/package/bctoolbox/0001-Fix-Libs.private-flags-for-mbedtls.patch b/package/bctoolbox/0001-Fix-Libs.private-flags-for-mbedtls.patch new file mode 100644 index 00000000..342042d5 --- /dev/null +++ b/package/bctoolbox/0001-Fix-Libs.private-flags-for-mbedtls.patch @@ -0,0 +1,37 @@ +From b7f14a800bbdad193f45695bc5b8c5173f3882ba Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 10 Feb 2019 17:51:05 +0100 +Subject: [PATCH] CMakeLists.txt: fix mbedtls libraries in bctoolbox.pc +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +bctoolbox.pc should not contain the full libraries path, path should be +given by -L and library names by -l +So sent back the fix already suggested by Jörg Krause in +https://github.com/BelledonneCommunications/bctoolbox/pull/4 + +Signed-off-by: Jörg Krause +Signed-off-by: Fabrice Fontaine +[Upstream status: +https://github.com/BelledonneCommunications/bctoolbox/pull/7] +--- + CMakeLists.txt | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 29f3eb6..b2f26c2 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -101,9 +101,8 @@ else() + endif() + + if(MBEDTLS_FOUND) +- get_filename_component(mbedtls_library_path "${MBEDTLS_LIBRARIES}" PATH) +- string(REPLACE ";" " " MBEDTLS_LIBRARIES_STR "${MBEDTLS_LIBRARIES}") +- set(LIBS_PRIVATE "${LIBS_PRIVATE} ${MBEDTLS_LIBRARIES_STR}") ++ get_filename_component(mbedtls_library_path "${MBEDTLS_LIBRARY}" PATH) ++ set(LIBS_PRIVATE "${LIBS_PRIVATE} -L${mbedtls_library_path} -lmbedtls -lmbedcrypto -lmbedx509") + endif() + if(POLARSSL_FOUND) + get_filename_component(polarssl_library_path "${POLARSSL_LIBRARIES}" PATH) diff --git a/package/bctoolbox/Config.in b/package/bctoolbox/Config.in new file mode 100644 index 00000000..1cf2b7e2 --- /dev/null +++ b/package/bctoolbox/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_BCTOOLBOX + bool "bctoolbox" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Utilities library used by Belledonne Communications + softwares like belle-sip, mediastreamer2 and linphone. + + Select BR2_PACKAGE_MBEDTLS for crypto support. + + https://github.com/BelledonneCommunications/bctoolbox + +comment "bctoolbox needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + +comment "bctoolbox needs a toolchain not affected by GCC bug 64735" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/bctoolbox/bctoolbox.hash b/package/bctoolbox/bctoolbox.hash new file mode 100644 index 00000000..9b1f9e82 --- /dev/null +++ b/package/bctoolbox/bctoolbox.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 446b60e81a79b11e8212c44e312aeb0ce46e9ecf0269a35c492ecdca3e7428c3 bctoolbox-4.4.8.tar.gz +sha256 1b3782ccad7b8614100cda30d3faf42fc39f2e97932908c543005053b654ca68 LICENSE.txt diff --git a/package/bctoolbox/bctoolbox.mk b/package/bctoolbox/bctoolbox.mk new file mode 100644 index 00000000..ac936102 --- /dev/null +++ b/package/bctoolbox/bctoolbox.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# bctoolbox +# +################################################################################ + +BCTOOLBOX_VERSION = 4.4.8 +BCTOOLBOX_SITE = $(call github,BelledonneCommunications,bctoolbox,$(BCTOOLBOX_VERSION)) +BCTOOLBOX_LICENSE = GPL-3.0+ +BCTOOLBOX_LICENSE_FILES = LICENSE.txt +BCTOOLBOX_INSTALL_STAGING = YES + +# Set CMAKE_SKIP_RPATH to prevent bctoolbox from adding the rpath to +# shared library. +BCTOOLBOX_CONF_OPTS = \ + -DENABLE_POLARSSL=OFF \ + -DENABLE_STRICT=OFF \ + -DENABLE_TESTS_COMPONENT=OFF \ + -DENABLE_TESTS=OFF \ + -DCMAKE_SKIP_RPATH=ON + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +BCTOOLBOX_DEPENDENCIES += libiconv +BCTOOLBOX_CONF_OPTS += -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) -liconv" +endif + +ifeq ($(BR2_PACKAGE_MBEDTLS),y) +BCTOOLBOX_DEPENDENCIES += mbedtls +BCTOOLBOX_CONF_OPTS += -DENABLE_MBEDTLS=ON +else +BCTOOLBOX_CONF_OPTS += -DENABLE_MBEDTLS=OFF +endif + +ifeq ($(BR2_STATIC_LIBS),y) +BCTOOLBOX_CONF_OPTS += -DENABLE_SHARED=OFF -DENABLE_STATIC=ON +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +BCTOOLBOX_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=ON +else ifeq ($(BR2_SHARED_LIBS),y) +BCTOOLBOX_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/bcusdk/0001-fd_set-requires-inclusion-of-sys-select.h.patch b/package/bcusdk/0001-fd_set-requires-inclusion-of-sys-select.h.patch new file mode 100644 index 00000000..f8965883 --- /dev/null +++ b/package/bcusdk/0001-fd_set-requires-inclusion-of-sys-select.h.patch @@ -0,0 +1,30 @@ +From 2541ee3d709803096b17e45610ccc1404e2e5eee Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 8 Aug 2015 17:46:34 +0200 +Subject: [PATCH] fd_set requires inclusion of + +According to POSIX.1-2001, the definition fd_set and related macros is +in , so it should be included in files using fd_set to +make the code compatible with all standard C libraries. + +Upstream: https://sourceforge.net/p/bcusdk/patches/3/ +Signed-off-by: Thomas Petazzoni +--- + eibd/examples/common.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/eibd/examples/common.h b/eibd/examples/common.h +index 51fc514..f038da1 100644 +--- a/eibd/examples/common.h ++++ b/eibd/examples/common.h +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + #include "eibclient.h" + + /** unsigned char*/ +-- +2.5.0 + diff --git a/package/bcusdk/0002-eibd-fix-endless-recursion-when-using-USB-backends.patch b/package/bcusdk/0002-eibd-fix-endless-recursion-when-using-USB-backends.patch new file mode 100644 index 00000000..3b90289c --- /dev/null +++ b/package/bcusdk/0002-eibd-fix-endless-recursion-when-using-USB-backends.patch @@ -0,0 +1,35 @@ +From 6bd1b4958e949d83468e053c34bf6c89d14d687a Mon Sep 17 00:00:00 2001 +From: Kurt Van Dijck +Date: Fri, 25 Aug 2017 23:01:14 +0200 +Subject: [PATCH] eibd: drop local clock_gettime in USB backends + +clock_gettime is defined locally, and calls pth_int_time, which +in turn calls clock_gettime. +The USB backend shouldn't overrule clock_gettime in the first place. +This patch fixes this endless recursion by removing the local defition. + +Signed-off-by: Kurt Van Dijck +--- + eibd/usb/linux_usbfs.c | 6 ------ + 1 file changed, 6 deletions(-) + +diff --git a/eibd/usb/linux_usbfs.c b/eibd/usb/linux_usbfs.c +index c3ec410..957b908 100644 +--- a/eibd/usb/linux_usbfs.c ++++ b/eibd/usb/linux_usbfs.c +@@ -52,12 +52,6 @@ int pthread_mutex_trylock(pthread_mutex_t *mutex) + return 0; + } + +-int clock_gettime(clockid_t clk_id, struct timespec *tp) +-{ +- pth_int_time (tp); +- return 0; +-} +- + /* sysfs vs usbfs: + * opening a usbfs node causes the device to be resumed, so we attempt to + * avoid this during enumeration. +-- +1.8.5.rc3 + diff --git a/package/bcusdk/0003-m4-ccforbuild.m4-include-stdlib.h-in-test-program.patch b/package/bcusdk/0003-m4-ccforbuild.m4-include-stdlib.h-in-test-program.patch new file mode 100644 index 00000000..36b8f3d7 --- /dev/null +++ b/package/bcusdk/0003-m4-ccforbuild.m4-include-stdlib.h-in-test-program.patch @@ -0,0 +1,50 @@ +From 1c78aa3541f730e9624504168fb0e1f413e5cbb8 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 2 Aug 2024 19:28:36 +0200 +Subject: [PATCH] m4/ccforbuild.m4: include in test program + +The GMP_PROG_CC_FOR_BUILD_WORKS and GMP_PROG_EXEEXT_FOR_BUILD macros +do various checks to verify if the host compiler works, but their test +programs lack the inclusion of , needed for exit(). This +causes a build failure with gcc 14.x: + +conftest.c: In function 'main': +conftest.c:4:3: error: implicit declaration of function 'exit' [-Wimplicit-function-declaration] + 4 | exit(0); + +which then causes the configure script to think that the host compiler +does not work: + +configure: error: Specified CC_FOR_BUILD doesn't seem to work + +so let's include to fix this issue. + +Upstream: https://sourceforge.net/p/bcusdk/patches/4/ +Signed-off-by: Thomas Petazzoni +--- + m4/ccforbuild.m4 | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/m4/ccforbuild.m4 b/m4/ccforbuild.m4 +index a466cab..389deaa 100644 +--- a/m4/ccforbuild.m4 ++++ b/m4/ccforbuild.m4 +@@ -66,6 +66,7 @@ AC_DEFUN([GMP_PROG_CC_FOR_BUILD_WORKS], + # remove anything that might look like compiler output to our "||" expression + rm -f conftest* a.out b.out a.exe a_out.exe + cat >conftest.c < + int + main () + { +@@ -140,6 +141,7 @@ AC_DEFUN([GMP_PROG_EXEEXT_FOR_BUILD], + AC_CACHE_CHECK([for build system executable suffix], + gmp_cv_prog_exeext_for_build, + [cat >conftest.c < + int + main () + { +-- +2.45.2 + diff --git a/package/bcusdk/0004-configure.in-replace-obsolete-AM_PATH_XML2-by-PKG_CH.patch b/package/bcusdk/0004-configure.in-replace-obsolete-AM_PATH_XML2-by-PKG_CH.patch new file mode 100644 index 00000000..899f8c0f --- /dev/null +++ b/package/bcusdk/0004-configure.in-replace-obsolete-AM_PATH_XML2-by-PKG_CH.patch @@ -0,0 +1,40 @@ +From 8402c1ffccb2eeb47581d2d80b81e94433cdacb7 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 2 Aug 2024 19:35:02 +0200 +Subject: [PATCH] configure.in: replace obsolete AM_PATH_XML2 by + PKG_CHECK_MODULES + +According to the libxml2 code: + + AM_PATH_XML2 is deprecated, use PKG_CHECK_MODULES instead + +See: + + https://gitlab.gnome.org/GNOME/libxml2/-/blob/master/libxml.m4 + +Upstream: https://sourceforge.net/p/bcusdk/patches/5/ +Signed-off-by: Thomas Petazzoni +--- + configure.in | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/configure.in b/configure.in +index 7f3a8bd..82176d9 100644 +--- a/configure.in ++++ b/configure.in +@@ -81,7 +81,11 @@ AM_CONDITIONAL(HAVE_ONLYEIBD, test x$onlyeibd = xtrue) + + if test x$onlyeibd = xfalse ; then + +-AM_PATH_XML2(2.6.16,,[AC_MSG_ERROR([limxml2 not found])]) ++PKG_CHECK_MODULES(XML, [libxml-2.0 >= 2.6.16], [], [AC_MSG_ERROR([limxml2 not found])]) ++XML_CPPFLAGS=$XML_CFLAGS ++AC_SUBST(XML_CPPFLAGS) ++AC_SUBST(XML_LIBS) ++ + AC_PATH_PROG(TAS,[m68hc05-as],,[$PATH:$bindir:$prefix/bin]) + AC_PATH_PROG(TLD,[m68hc05-ld],,[$PATH:$bindir:$prefix/bin]) + AC_PATH_PROG(TAR,[m68hc05-ar],,[$PATH:$bindir:$prefix/bin]) +-- +2.45.2 + diff --git a/package/bcusdk/Config.in b/package/bcusdk/Config.in new file mode 100644 index 00000000..8f9330e0 --- /dev/null +++ b/package/bcusdk/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_BCUSDK + bool "bcusdk" + depends on BR2_USE_MMU # libpthsem + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LIBPTHSEM + select BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL + help + A free development environment for the Bus Coupling Units of + the European Installation Bus. + + The European Installation Bus EIB is a home and building + automation bus system. It is optimized for low-speed control + applications like lighting and blinds control. + + BCUs (Bus Coupling Units) are standardized, generic + platforms for embedded EIB devices. They include the entire + physical layer network interface, power supply and a + microcontroller with an implementation of the EIB protocol + stack stored in the ROM. + + http://www.auto.tuwien.ac.at/~mkoegler/eib/ + +comment "bcusdk needs a toolchain w/ C++" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/bcusdk/bcusdk.hash b/package/bcusdk/bcusdk.hash new file mode 100644 index 00000000..a9706214 --- /dev/null +++ b/package/bcusdk/bcusdk.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 014cdaafc36f223c584b39ae5d698dd037a8e15aba4e78a2e531b51ff1331304 bcusdk_0.0.5.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/bcusdk/bcusdk.mk b/package/bcusdk/bcusdk.mk new file mode 100644 index 00000000..4defd29b --- /dev/null +++ b/package/bcusdk/bcusdk.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# bcusdk +# +################################################################################ + +BCUSDK_VERSION = 0.0.5 +BCUSDK_SOURCE = bcusdk_$(BCUSDK_VERSION).tar.gz +BCUSDK_SITE = http://www.auto.tuwien.ac.at/~mkoegler/eib +BCUSDK_LICENSE = GPL-2.0+ +BCUSDK_LICENSE_FILES = COPYING +BCUSDK_INSTALL_STAGING = YES +# 0003-m4-ccforbuild.m4-include-stdlib.h-in-test-program.patch +# 0004-configure.in-replace-obsolete-AM_PATH_XML2-by-PKG_CH.patch +BCUSDK_AUTORECONF = YES +BCUSDK_CONF_OPTS = \ + --enable-onlyeibd \ + --enable-ft12 \ + --enable-pei16 \ + --enable-tpuarts \ + --enable-eibnetip \ + --enable-eibnetipserver \ + --enable-eibnetiptunnel \ + --without-pth-test \ + --with-pth=$(STAGING_DIR)/usr + +# host-pkgconf is only needed because of autoreconf +BCUSDK_DEPENDENCIES = libpthsem host-pkgconf + +ifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y) +BCUSDK_DEPENDENCIES += argp-standalone $(TARGET_NLS_DEPENDENCIES) +BCUSDK_CONF_ENV += LIBS=$(TARGET_NLS_LIBS) +endif + +define BCUSDK_REMOVE_EXAMPLES + $(RM) -rf $(TARGET_DIR)/usr/share/bcusdk +endef + +BCUSDK_POST_INSTALL_TARGET_HOOKS += BCUSDK_REMOVE_EXAMPLES + +$(eval $(autotools-package)) diff --git a/package/bdwgc/Config.in b/package/bdwgc/Config.in new file mode 100644 index 00000000..1124ab0f --- /dev/null +++ b/package/bdwgc/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_BDWGC + bool "bdwgc" + depends on BR2_USE_MMU # madvise() + depends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS + select BR2_PACKAGE_LIBATOMIC_OPS + help + The Boehm-Demers-Weiser conservative garbage collector can + be used as a garbage collecting replacement for C 'malloc' + or C++ 'new'. + + https://www.hboehm.info/gc/ diff --git a/package/bdwgc/bdwgc.hash b/package/bdwgc/bdwgc.hash new file mode 100644 index 00000000..8fa49b45 --- /dev/null +++ b/package/bdwgc/bdwgc.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 3d0d3cdbe077403d3106bb40f0cbb563413d6efdbb2a7e1cd6886595dec48fc2 gc-8.2.4.tar.gz +sha256 a9b077aeb4e9e1aaf9742119d8023ef26f52f445cdc3f60d390bf59e1647f54a README.QUICK diff --git a/package/bdwgc/bdwgc.mk b/package/bdwgc/bdwgc.mk new file mode 100644 index 00000000..0e9c9d84 --- /dev/null +++ b/package/bdwgc/bdwgc.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# bdwgc +# +################################################################################ + +BDWGC_VERSION = 8.2.4 +BDWGC_SOURCE = gc-$(BDWGC_VERSION).tar.gz +BDWGC_SITE = https://github.com/ivmai/bdwgc/releases/download/v$(BDWGC_VERSION) +BDWGC_INSTALL_STAGING = YES +BDWGC_LICENSE = bdwgc license +BDWGC_LICENSE_FILES = README.QUICK +BDWGC_CPE_ID_VALID = YES +BDWGC_DEPENDENCIES = libatomic_ops host-pkgconf +HOST_BDWGC_DEPENDENCIES = host-libatomic_ops host-pkgconf + +BDWGC_CONF_OPTS = CFLAGS_EXTRA="$(BDWGC_CFLAGS_EXTRA)" +ifeq ($(BR2_sparc),y) +BDWGC_CFLAGS_EXTRA += -DAO_NO_SPARC_V9 +endif +ifeq ($(BR2_STATIC_LIBS),y) +BDWGC_CFLAGS_EXTRA += -DGC_NO_DLOPEN +endif +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS_NPTL),) +BDWGC_CFLAGS_EXTRA += -DNO_PTHREAD_GETATTR_NP +endif + +# Ensure we use the system libatomic_ops, and not the internal one. +BDWGC_CONF_OPTS += --with-libatomic-ops=yes +HOST_BDWGC_CONF_OPTS = --with-libatomic-ops=yes + +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +BDWGC_CONF_OPTS += --enable-cplusplus +else +BDWGC_CONF_OPTS += --disable-cplusplus +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/bearssl/0001-Fix-missing-objdir-dependency.patch b/package/bearssl/0001-Fix-missing-objdir-dependency.patch new file mode 100644 index 00000000..4d4d9ee7 --- /dev/null +++ b/package/bearssl/0001-Fix-missing-objdir-dependency.patch @@ -0,0 +1,1252 @@ +From 6fddb4056e0b8f72c2602ef82dcd973704354962 Mon Sep 17 00:00:00 2001 +From: James Hilliard +Date: Mon, 12 Dec 2022 10:12:58 -0700 +Subject: [PATCH] Fix missing objdir dependency. + +Make targets within $(OBJDIR) must depend on the $(OBJDIR) +target. + +Fixes: +Assembler messages: +Fatal error: can't create build/obj/x509_minimal_full.o: No such file or directory +make[2]: *** [mk/Rules.mk:1190: build/obj/x509_minimal_full.o] Error 1 shuffle=reverse + +Signed-off-by: James Hilliard +Cc: Thomas Pornin +Cc: Thomas Pornin +[Upstream status: emailed patch to maintainer] +--- + mk/Rules.mk | 594 +++++++++++++++++++++++++------------------------- + mk/mkrules.sh | 8 +- + 2 files changed, 301 insertions(+), 301 deletions(-) + +diff --git a/mk/Rules.mk b/mk/Rules.mk +index b480bd6..a868977 100644 +--- a/mk/Rules.mk ++++ b/mk/Rules.mk +@@ -358,893 +358,893 @@ $(TESTSPEED): $(BEARSSLLIB) $(OBJTESTSPEED) + $(TESTX509): $(BEARSSLLIB) $(OBJTESTX509) + $(LD) $(LDFLAGS) $(LDOUT)$(TESTX509) $(OBJTESTX509) $(BEARSSLLIB) + +-$(OBJDIR)$Psettings$O: src$Psettings.c $(HEADERSPRIV) ++$(OBJDIR)$Psettings$O: $(OBJDIR) src$Psettings.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Psettings$O src$Psettings.c + +-$(OBJDIR)$Pccm$O: src$Paead$Pccm.c $(HEADERSPRIV) ++$(OBJDIR)$Pccm$O: $(OBJDIR) src$Paead$Pccm.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pccm$O src$Paead$Pccm.c + +-$(OBJDIR)$Peax$O: src$Paead$Peax.c $(HEADERSPRIV) ++$(OBJDIR)$Peax$O: $(OBJDIR) src$Paead$Peax.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Peax$O src$Paead$Peax.c + +-$(OBJDIR)$Pgcm$O: src$Paead$Pgcm.c $(HEADERSPRIV) ++$(OBJDIR)$Pgcm$O: $(OBJDIR) src$Paead$Pgcm.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pgcm$O src$Paead$Pgcm.c + +-$(OBJDIR)$Pccopy$O: src$Pcodec$Pccopy.c $(HEADERSPRIV) ++$(OBJDIR)$Pccopy$O: $(OBJDIR) src$Pcodec$Pccopy.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pccopy$O src$Pcodec$Pccopy.c + +-$(OBJDIR)$Pdec16be$O: src$Pcodec$Pdec16be.c $(HEADERSPRIV) ++$(OBJDIR)$Pdec16be$O: $(OBJDIR) src$Pcodec$Pdec16be.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pdec16be$O src$Pcodec$Pdec16be.c + +-$(OBJDIR)$Pdec16le$O: src$Pcodec$Pdec16le.c $(HEADERSPRIV) ++$(OBJDIR)$Pdec16le$O: $(OBJDIR) src$Pcodec$Pdec16le.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pdec16le$O src$Pcodec$Pdec16le.c + +-$(OBJDIR)$Pdec32be$O: src$Pcodec$Pdec32be.c $(HEADERSPRIV) ++$(OBJDIR)$Pdec32be$O: $(OBJDIR) src$Pcodec$Pdec32be.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pdec32be$O src$Pcodec$Pdec32be.c + +-$(OBJDIR)$Pdec32le$O: src$Pcodec$Pdec32le.c $(HEADERSPRIV) ++$(OBJDIR)$Pdec32le$O: $(OBJDIR) src$Pcodec$Pdec32le.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pdec32le$O src$Pcodec$Pdec32le.c + +-$(OBJDIR)$Pdec64be$O: src$Pcodec$Pdec64be.c $(HEADERSPRIV) ++$(OBJDIR)$Pdec64be$O: $(OBJDIR) src$Pcodec$Pdec64be.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pdec64be$O src$Pcodec$Pdec64be.c + +-$(OBJDIR)$Pdec64le$O: src$Pcodec$Pdec64le.c $(HEADERSPRIV) ++$(OBJDIR)$Pdec64le$O: $(OBJDIR) src$Pcodec$Pdec64le.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pdec64le$O src$Pcodec$Pdec64le.c + +-$(OBJDIR)$Penc16be$O: src$Pcodec$Penc16be.c $(HEADERSPRIV) ++$(OBJDIR)$Penc16be$O: $(OBJDIR) src$Pcodec$Penc16be.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Penc16be$O src$Pcodec$Penc16be.c + +-$(OBJDIR)$Penc16le$O: src$Pcodec$Penc16le.c $(HEADERSPRIV) ++$(OBJDIR)$Penc16le$O: $(OBJDIR) src$Pcodec$Penc16le.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Penc16le$O src$Pcodec$Penc16le.c + +-$(OBJDIR)$Penc32be$O: src$Pcodec$Penc32be.c $(HEADERSPRIV) ++$(OBJDIR)$Penc32be$O: $(OBJDIR) src$Pcodec$Penc32be.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Penc32be$O src$Pcodec$Penc32be.c + +-$(OBJDIR)$Penc32le$O: src$Pcodec$Penc32le.c $(HEADERSPRIV) ++$(OBJDIR)$Penc32le$O: $(OBJDIR) src$Pcodec$Penc32le.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Penc32le$O src$Pcodec$Penc32le.c + +-$(OBJDIR)$Penc64be$O: src$Pcodec$Penc64be.c $(HEADERSPRIV) ++$(OBJDIR)$Penc64be$O: $(OBJDIR) src$Pcodec$Penc64be.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Penc64be$O src$Pcodec$Penc64be.c + +-$(OBJDIR)$Penc64le$O: src$Pcodec$Penc64le.c $(HEADERSPRIV) ++$(OBJDIR)$Penc64le$O: $(OBJDIR) src$Pcodec$Penc64le.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Penc64le$O src$Pcodec$Penc64le.c + +-$(OBJDIR)$Ppemdec$O: src$Pcodec$Ppemdec.c $(HEADERSPRIV) ++$(OBJDIR)$Ppemdec$O: $(OBJDIR) src$Pcodec$Ppemdec.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Ppemdec$O src$Pcodec$Ppemdec.c + +-$(OBJDIR)$Ppemenc$O: src$Pcodec$Ppemenc.c $(HEADERSPRIV) ++$(OBJDIR)$Ppemenc$O: $(OBJDIR) src$Pcodec$Ppemenc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Ppemenc$O src$Pcodec$Ppemenc.c + +-$(OBJDIR)$Pec_all_m15$O: src$Pec$Pec_all_m15.c $(HEADERSPRIV) ++$(OBJDIR)$Pec_all_m15$O: $(OBJDIR) src$Pec$Pec_all_m15.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pec_all_m15$O src$Pec$Pec_all_m15.c + +-$(OBJDIR)$Pec_all_m31$O: src$Pec$Pec_all_m31.c $(HEADERSPRIV) ++$(OBJDIR)$Pec_all_m31$O: $(OBJDIR) src$Pec$Pec_all_m31.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pec_all_m31$O src$Pec$Pec_all_m31.c + +-$(OBJDIR)$Pec_c25519_i15$O: src$Pec$Pec_c25519_i15.c $(HEADERSPRIV) ++$(OBJDIR)$Pec_c25519_i15$O: $(OBJDIR) src$Pec$Pec_c25519_i15.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pec_c25519_i15$O src$Pec$Pec_c25519_i15.c + +-$(OBJDIR)$Pec_c25519_i31$O: src$Pec$Pec_c25519_i31.c $(HEADERSPRIV) ++$(OBJDIR)$Pec_c25519_i31$O: $(OBJDIR) src$Pec$Pec_c25519_i31.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pec_c25519_i31$O src$Pec$Pec_c25519_i31.c + +-$(OBJDIR)$Pec_c25519_m15$O: src$Pec$Pec_c25519_m15.c $(HEADERSPRIV) ++$(OBJDIR)$Pec_c25519_m15$O: $(OBJDIR) src$Pec$Pec_c25519_m15.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pec_c25519_m15$O src$Pec$Pec_c25519_m15.c + +-$(OBJDIR)$Pec_c25519_m31$O: src$Pec$Pec_c25519_m31.c $(HEADERSPRIV) ++$(OBJDIR)$Pec_c25519_m31$O: $(OBJDIR) src$Pec$Pec_c25519_m31.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pec_c25519_m31$O src$Pec$Pec_c25519_m31.c + +-$(OBJDIR)$Pec_curve25519$O: src$Pec$Pec_curve25519.c $(HEADERSPRIV) ++$(OBJDIR)$Pec_curve25519$O: $(OBJDIR) src$Pec$Pec_curve25519.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pec_curve25519$O src$Pec$Pec_curve25519.c + +-$(OBJDIR)$Pec_default$O: src$Pec$Pec_default.c $(HEADERSPRIV) ++$(OBJDIR)$Pec_default$O: $(OBJDIR) src$Pec$Pec_default.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pec_default$O src$Pec$Pec_default.c + +-$(OBJDIR)$Pec_keygen$O: src$Pec$Pec_keygen.c $(HEADERSPRIV) ++$(OBJDIR)$Pec_keygen$O: $(OBJDIR) src$Pec$Pec_keygen.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pec_keygen$O src$Pec$Pec_keygen.c + +-$(OBJDIR)$Pec_p256_m15$O: src$Pec$Pec_p256_m15.c $(HEADERSPRIV) ++$(OBJDIR)$Pec_p256_m15$O: $(OBJDIR) src$Pec$Pec_p256_m15.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pec_p256_m15$O src$Pec$Pec_p256_m15.c + +-$(OBJDIR)$Pec_p256_m31$O: src$Pec$Pec_p256_m31.c $(HEADERSPRIV) ++$(OBJDIR)$Pec_p256_m31$O: $(OBJDIR) src$Pec$Pec_p256_m31.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pec_p256_m31$O src$Pec$Pec_p256_m31.c + +-$(OBJDIR)$Pec_prime_i15$O: src$Pec$Pec_prime_i15.c $(HEADERSPRIV) ++$(OBJDIR)$Pec_prime_i15$O: $(OBJDIR) src$Pec$Pec_prime_i15.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pec_prime_i15$O src$Pec$Pec_prime_i15.c + +-$(OBJDIR)$Pec_prime_i31$O: src$Pec$Pec_prime_i31.c $(HEADERSPRIV) ++$(OBJDIR)$Pec_prime_i31$O: $(OBJDIR) src$Pec$Pec_prime_i31.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pec_prime_i31$O src$Pec$Pec_prime_i31.c + +-$(OBJDIR)$Pec_pubkey$O: src$Pec$Pec_pubkey.c $(HEADERSPRIV) ++$(OBJDIR)$Pec_pubkey$O: $(OBJDIR) src$Pec$Pec_pubkey.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pec_pubkey$O src$Pec$Pec_pubkey.c + +-$(OBJDIR)$Pec_secp256r1$O: src$Pec$Pec_secp256r1.c $(HEADERSPRIV) ++$(OBJDIR)$Pec_secp256r1$O: $(OBJDIR) src$Pec$Pec_secp256r1.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pec_secp256r1$O src$Pec$Pec_secp256r1.c + +-$(OBJDIR)$Pec_secp384r1$O: src$Pec$Pec_secp384r1.c $(HEADERSPRIV) ++$(OBJDIR)$Pec_secp384r1$O: $(OBJDIR) src$Pec$Pec_secp384r1.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pec_secp384r1$O src$Pec$Pec_secp384r1.c + +-$(OBJDIR)$Pec_secp521r1$O: src$Pec$Pec_secp521r1.c $(HEADERSPRIV) ++$(OBJDIR)$Pec_secp521r1$O: $(OBJDIR) src$Pec$Pec_secp521r1.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pec_secp521r1$O src$Pec$Pec_secp521r1.c + +-$(OBJDIR)$Pecdsa_atr$O: src$Pec$Pecdsa_atr.c $(HEADERSPRIV) ++$(OBJDIR)$Pecdsa_atr$O: $(OBJDIR) src$Pec$Pecdsa_atr.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pecdsa_atr$O src$Pec$Pecdsa_atr.c + +-$(OBJDIR)$Pecdsa_default_sign_asn1$O: src$Pec$Pecdsa_default_sign_asn1.c $(HEADERSPRIV) ++$(OBJDIR)$Pecdsa_default_sign_asn1$O: $(OBJDIR) src$Pec$Pecdsa_default_sign_asn1.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pecdsa_default_sign_asn1$O src$Pec$Pecdsa_default_sign_asn1.c + +-$(OBJDIR)$Pecdsa_default_sign_raw$O: src$Pec$Pecdsa_default_sign_raw.c $(HEADERSPRIV) ++$(OBJDIR)$Pecdsa_default_sign_raw$O: $(OBJDIR) src$Pec$Pecdsa_default_sign_raw.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pecdsa_default_sign_raw$O src$Pec$Pecdsa_default_sign_raw.c + +-$(OBJDIR)$Pecdsa_default_vrfy_asn1$O: src$Pec$Pecdsa_default_vrfy_asn1.c $(HEADERSPRIV) ++$(OBJDIR)$Pecdsa_default_vrfy_asn1$O: $(OBJDIR) src$Pec$Pecdsa_default_vrfy_asn1.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pecdsa_default_vrfy_asn1$O src$Pec$Pecdsa_default_vrfy_asn1.c + +-$(OBJDIR)$Pecdsa_default_vrfy_raw$O: src$Pec$Pecdsa_default_vrfy_raw.c $(HEADERSPRIV) ++$(OBJDIR)$Pecdsa_default_vrfy_raw$O: $(OBJDIR) src$Pec$Pecdsa_default_vrfy_raw.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pecdsa_default_vrfy_raw$O src$Pec$Pecdsa_default_vrfy_raw.c + +-$(OBJDIR)$Pecdsa_i15_bits$O: src$Pec$Pecdsa_i15_bits.c $(HEADERSPRIV) ++$(OBJDIR)$Pecdsa_i15_bits$O: $(OBJDIR) src$Pec$Pecdsa_i15_bits.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pecdsa_i15_bits$O src$Pec$Pecdsa_i15_bits.c + +-$(OBJDIR)$Pecdsa_i15_sign_asn1$O: src$Pec$Pecdsa_i15_sign_asn1.c $(HEADERSPRIV) ++$(OBJDIR)$Pecdsa_i15_sign_asn1$O: $(OBJDIR) src$Pec$Pecdsa_i15_sign_asn1.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pecdsa_i15_sign_asn1$O src$Pec$Pecdsa_i15_sign_asn1.c + +-$(OBJDIR)$Pecdsa_i15_sign_raw$O: src$Pec$Pecdsa_i15_sign_raw.c $(HEADERSPRIV) ++$(OBJDIR)$Pecdsa_i15_sign_raw$O: $(OBJDIR) src$Pec$Pecdsa_i15_sign_raw.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pecdsa_i15_sign_raw$O src$Pec$Pecdsa_i15_sign_raw.c + +-$(OBJDIR)$Pecdsa_i15_vrfy_asn1$O: src$Pec$Pecdsa_i15_vrfy_asn1.c $(HEADERSPRIV) ++$(OBJDIR)$Pecdsa_i15_vrfy_asn1$O: $(OBJDIR) src$Pec$Pecdsa_i15_vrfy_asn1.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pecdsa_i15_vrfy_asn1$O src$Pec$Pecdsa_i15_vrfy_asn1.c + +-$(OBJDIR)$Pecdsa_i15_vrfy_raw$O: src$Pec$Pecdsa_i15_vrfy_raw.c $(HEADERSPRIV) ++$(OBJDIR)$Pecdsa_i15_vrfy_raw$O: $(OBJDIR) src$Pec$Pecdsa_i15_vrfy_raw.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pecdsa_i15_vrfy_raw$O src$Pec$Pecdsa_i15_vrfy_raw.c + +-$(OBJDIR)$Pecdsa_i31_bits$O: src$Pec$Pecdsa_i31_bits.c $(HEADERSPRIV) ++$(OBJDIR)$Pecdsa_i31_bits$O: $(OBJDIR) src$Pec$Pecdsa_i31_bits.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pecdsa_i31_bits$O src$Pec$Pecdsa_i31_bits.c + +-$(OBJDIR)$Pecdsa_i31_sign_asn1$O: src$Pec$Pecdsa_i31_sign_asn1.c $(HEADERSPRIV) ++$(OBJDIR)$Pecdsa_i31_sign_asn1$O: $(OBJDIR) src$Pec$Pecdsa_i31_sign_asn1.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pecdsa_i31_sign_asn1$O src$Pec$Pecdsa_i31_sign_asn1.c + +-$(OBJDIR)$Pecdsa_i31_sign_raw$O: src$Pec$Pecdsa_i31_sign_raw.c $(HEADERSPRIV) ++$(OBJDIR)$Pecdsa_i31_sign_raw$O: $(OBJDIR) src$Pec$Pecdsa_i31_sign_raw.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pecdsa_i31_sign_raw$O src$Pec$Pecdsa_i31_sign_raw.c + +-$(OBJDIR)$Pecdsa_i31_vrfy_asn1$O: src$Pec$Pecdsa_i31_vrfy_asn1.c $(HEADERSPRIV) ++$(OBJDIR)$Pecdsa_i31_vrfy_asn1$O: $(OBJDIR) src$Pec$Pecdsa_i31_vrfy_asn1.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pecdsa_i31_vrfy_asn1$O src$Pec$Pecdsa_i31_vrfy_asn1.c + +-$(OBJDIR)$Pecdsa_i31_vrfy_raw$O: src$Pec$Pecdsa_i31_vrfy_raw.c $(HEADERSPRIV) ++$(OBJDIR)$Pecdsa_i31_vrfy_raw$O: $(OBJDIR) src$Pec$Pecdsa_i31_vrfy_raw.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pecdsa_i31_vrfy_raw$O src$Pec$Pecdsa_i31_vrfy_raw.c + +-$(OBJDIR)$Pecdsa_rta$O: src$Pec$Pecdsa_rta.c $(HEADERSPRIV) ++$(OBJDIR)$Pecdsa_rta$O: $(OBJDIR) src$Pec$Pecdsa_rta.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pecdsa_rta$O src$Pec$Pecdsa_rta.c + +-$(OBJDIR)$Pdig_oid$O: src$Phash$Pdig_oid.c $(HEADERSPRIV) ++$(OBJDIR)$Pdig_oid$O: $(OBJDIR) src$Phash$Pdig_oid.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pdig_oid$O src$Phash$Pdig_oid.c + +-$(OBJDIR)$Pdig_size$O: src$Phash$Pdig_size.c $(HEADERSPRIV) ++$(OBJDIR)$Pdig_size$O: $(OBJDIR) src$Phash$Pdig_size.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pdig_size$O src$Phash$Pdig_size.c + +-$(OBJDIR)$Pghash_ctmul$O: src$Phash$Pghash_ctmul.c $(HEADERSPRIV) ++$(OBJDIR)$Pghash_ctmul$O: $(OBJDIR) src$Phash$Pghash_ctmul.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pghash_ctmul$O src$Phash$Pghash_ctmul.c + +-$(OBJDIR)$Pghash_ctmul32$O: src$Phash$Pghash_ctmul32.c $(HEADERSPRIV) ++$(OBJDIR)$Pghash_ctmul32$O: $(OBJDIR) src$Phash$Pghash_ctmul32.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pghash_ctmul32$O src$Phash$Pghash_ctmul32.c + +-$(OBJDIR)$Pghash_ctmul64$O: src$Phash$Pghash_ctmul64.c $(HEADERSPRIV) ++$(OBJDIR)$Pghash_ctmul64$O: $(OBJDIR) src$Phash$Pghash_ctmul64.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pghash_ctmul64$O src$Phash$Pghash_ctmul64.c + +-$(OBJDIR)$Pghash_pclmul$O: src$Phash$Pghash_pclmul.c $(HEADERSPRIV) ++$(OBJDIR)$Pghash_pclmul$O: $(OBJDIR) src$Phash$Pghash_pclmul.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pghash_pclmul$O src$Phash$Pghash_pclmul.c + +-$(OBJDIR)$Pghash_pwr8$O: src$Phash$Pghash_pwr8.c $(HEADERSPRIV) ++$(OBJDIR)$Pghash_pwr8$O: $(OBJDIR) src$Phash$Pghash_pwr8.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pghash_pwr8$O src$Phash$Pghash_pwr8.c + +-$(OBJDIR)$Pmd5$O: src$Phash$Pmd5.c $(HEADERSPRIV) ++$(OBJDIR)$Pmd5$O: $(OBJDIR) src$Phash$Pmd5.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pmd5$O src$Phash$Pmd5.c + +-$(OBJDIR)$Pmd5sha1$O: src$Phash$Pmd5sha1.c $(HEADERSPRIV) ++$(OBJDIR)$Pmd5sha1$O: $(OBJDIR) src$Phash$Pmd5sha1.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pmd5sha1$O src$Phash$Pmd5sha1.c + +-$(OBJDIR)$Pmgf1$O: src$Phash$Pmgf1.c $(HEADERSPRIV) ++$(OBJDIR)$Pmgf1$O: $(OBJDIR) src$Phash$Pmgf1.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pmgf1$O src$Phash$Pmgf1.c + +-$(OBJDIR)$Pmultihash$O: src$Phash$Pmultihash.c $(HEADERSPRIV) ++$(OBJDIR)$Pmultihash$O: $(OBJDIR) src$Phash$Pmultihash.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pmultihash$O src$Phash$Pmultihash.c + +-$(OBJDIR)$Psha1$O: src$Phash$Psha1.c $(HEADERSPRIV) ++$(OBJDIR)$Psha1$O: $(OBJDIR) src$Phash$Psha1.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Psha1$O src$Phash$Psha1.c + +-$(OBJDIR)$Psha2big$O: src$Phash$Psha2big.c $(HEADERSPRIV) ++$(OBJDIR)$Psha2big$O: $(OBJDIR) src$Phash$Psha2big.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Psha2big$O src$Phash$Psha2big.c + +-$(OBJDIR)$Psha2small$O: src$Phash$Psha2small.c $(HEADERSPRIV) ++$(OBJDIR)$Psha2small$O: $(OBJDIR) src$Phash$Psha2small.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Psha2small$O src$Phash$Psha2small.c + +-$(OBJDIR)$Pi15_add$O: src$Pint$Pi15_add.c $(HEADERSPRIV) ++$(OBJDIR)$Pi15_add$O: $(OBJDIR) src$Pint$Pi15_add.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi15_add$O src$Pint$Pi15_add.c + +-$(OBJDIR)$Pi15_bitlen$O: src$Pint$Pi15_bitlen.c $(HEADERSPRIV) ++$(OBJDIR)$Pi15_bitlen$O: $(OBJDIR) src$Pint$Pi15_bitlen.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi15_bitlen$O src$Pint$Pi15_bitlen.c + +-$(OBJDIR)$Pi15_decmod$O: src$Pint$Pi15_decmod.c $(HEADERSPRIV) ++$(OBJDIR)$Pi15_decmod$O: $(OBJDIR) src$Pint$Pi15_decmod.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi15_decmod$O src$Pint$Pi15_decmod.c + +-$(OBJDIR)$Pi15_decode$O: src$Pint$Pi15_decode.c $(HEADERSPRIV) ++$(OBJDIR)$Pi15_decode$O: $(OBJDIR) src$Pint$Pi15_decode.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi15_decode$O src$Pint$Pi15_decode.c + +-$(OBJDIR)$Pi15_decred$O: src$Pint$Pi15_decred.c $(HEADERSPRIV) ++$(OBJDIR)$Pi15_decred$O: $(OBJDIR) src$Pint$Pi15_decred.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi15_decred$O src$Pint$Pi15_decred.c + +-$(OBJDIR)$Pi15_encode$O: src$Pint$Pi15_encode.c $(HEADERSPRIV) ++$(OBJDIR)$Pi15_encode$O: $(OBJDIR) src$Pint$Pi15_encode.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi15_encode$O src$Pint$Pi15_encode.c + +-$(OBJDIR)$Pi15_fmont$O: src$Pint$Pi15_fmont.c $(HEADERSPRIV) ++$(OBJDIR)$Pi15_fmont$O: $(OBJDIR) src$Pint$Pi15_fmont.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi15_fmont$O src$Pint$Pi15_fmont.c + +-$(OBJDIR)$Pi15_iszero$O: src$Pint$Pi15_iszero.c $(HEADERSPRIV) ++$(OBJDIR)$Pi15_iszero$O: $(OBJDIR) src$Pint$Pi15_iszero.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi15_iszero$O src$Pint$Pi15_iszero.c + +-$(OBJDIR)$Pi15_moddiv$O: src$Pint$Pi15_moddiv.c $(HEADERSPRIV) ++$(OBJDIR)$Pi15_moddiv$O: $(OBJDIR) src$Pint$Pi15_moddiv.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi15_moddiv$O src$Pint$Pi15_moddiv.c + +-$(OBJDIR)$Pi15_modpow$O: src$Pint$Pi15_modpow.c $(HEADERSPRIV) ++$(OBJDIR)$Pi15_modpow$O: $(OBJDIR) src$Pint$Pi15_modpow.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi15_modpow$O src$Pint$Pi15_modpow.c + +-$(OBJDIR)$Pi15_modpow2$O: src$Pint$Pi15_modpow2.c $(HEADERSPRIV) ++$(OBJDIR)$Pi15_modpow2$O: $(OBJDIR) src$Pint$Pi15_modpow2.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi15_modpow2$O src$Pint$Pi15_modpow2.c + +-$(OBJDIR)$Pi15_montmul$O: src$Pint$Pi15_montmul.c $(HEADERSPRIV) ++$(OBJDIR)$Pi15_montmul$O: $(OBJDIR) src$Pint$Pi15_montmul.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi15_montmul$O src$Pint$Pi15_montmul.c + +-$(OBJDIR)$Pi15_mulacc$O: src$Pint$Pi15_mulacc.c $(HEADERSPRIV) ++$(OBJDIR)$Pi15_mulacc$O: $(OBJDIR) src$Pint$Pi15_mulacc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi15_mulacc$O src$Pint$Pi15_mulacc.c + +-$(OBJDIR)$Pi15_muladd$O: src$Pint$Pi15_muladd.c $(HEADERSPRIV) ++$(OBJDIR)$Pi15_muladd$O: $(OBJDIR) src$Pint$Pi15_muladd.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi15_muladd$O src$Pint$Pi15_muladd.c + +-$(OBJDIR)$Pi15_ninv15$O: src$Pint$Pi15_ninv15.c $(HEADERSPRIV) ++$(OBJDIR)$Pi15_ninv15$O: $(OBJDIR) src$Pint$Pi15_ninv15.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi15_ninv15$O src$Pint$Pi15_ninv15.c + +-$(OBJDIR)$Pi15_reduce$O: src$Pint$Pi15_reduce.c $(HEADERSPRIV) ++$(OBJDIR)$Pi15_reduce$O: $(OBJDIR) src$Pint$Pi15_reduce.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi15_reduce$O src$Pint$Pi15_reduce.c + +-$(OBJDIR)$Pi15_rshift$O: src$Pint$Pi15_rshift.c $(HEADERSPRIV) ++$(OBJDIR)$Pi15_rshift$O: $(OBJDIR) src$Pint$Pi15_rshift.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi15_rshift$O src$Pint$Pi15_rshift.c + +-$(OBJDIR)$Pi15_sub$O: src$Pint$Pi15_sub.c $(HEADERSPRIV) ++$(OBJDIR)$Pi15_sub$O: $(OBJDIR) src$Pint$Pi15_sub.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi15_sub$O src$Pint$Pi15_sub.c + +-$(OBJDIR)$Pi15_tmont$O: src$Pint$Pi15_tmont.c $(HEADERSPRIV) ++$(OBJDIR)$Pi15_tmont$O: $(OBJDIR) src$Pint$Pi15_tmont.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi15_tmont$O src$Pint$Pi15_tmont.c + +-$(OBJDIR)$Pi31_add$O: src$Pint$Pi31_add.c $(HEADERSPRIV) ++$(OBJDIR)$Pi31_add$O: $(OBJDIR) src$Pint$Pi31_add.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi31_add$O src$Pint$Pi31_add.c + +-$(OBJDIR)$Pi31_bitlen$O: src$Pint$Pi31_bitlen.c $(HEADERSPRIV) ++$(OBJDIR)$Pi31_bitlen$O: $(OBJDIR) src$Pint$Pi31_bitlen.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi31_bitlen$O src$Pint$Pi31_bitlen.c + +-$(OBJDIR)$Pi31_decmod$O: src$Pint$Pi31_decmod.c $(HEADERSPRIV) ++$(OBJDIR)$Pi31_decmod$O: $(OBJDIR) src$Pint$Pi31_decmod.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi31_decmod$O src$Pint$Pi31_decmod.c + +-$(OBJDIR)$Pi31_decode$O: src$Pint$Pi31_decode.c $(HEADERSPRIV) ++$(OBJDIR)$Pi31_decode$O: $(OBJDIR) src$Pint$Pi31_decode.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi31_decode$O src$Pint$Pi31_decode.c + +-$(OBJDIR)$Pi31_decred$O: src$Pint$Pi31_decred.c $(HEADERSPRIV) ++$(OBJDIR)$Pi31_decred$O: $(OBJDIR) src$Pint$Pi31_decred.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi31_decred$O src$Pint$Pi31_decred.c + +-$(OBJDIR)$Pi31_encode$O: src$Pint$Pi31_encode.c $(HEADERSPRIV) ++$(OBJDIR)$Pi31_encode$O: $(OBJDIR) src$Pint$Pi31_encode.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi31_encode$O src$Pint$Pi31_encode.c + +-$(OBJDIR)$Pi31_fmont$O: src$Pint$Pi31_fmont.c $(HEADERSPRIV) ++$(OBJDIR)$Pi31_fmont$O: $(OBJDIR) src$Pint$Pi31_fmont.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi31_fmont$O src$Pint$Pi31_fmont.c + +-$(OBJDIR)$Pi31_iszero$O: src$Pint$Pi31_iszero.c $(HEADERSPRIV) ++$(OBJDIR)$Pi31_iszero$O: $(OBJDIR) src$Pint$Pi31_iszero.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi31_iszero$O src$Pint$Pi31_iszero.c + +-$(OBJDIR)$Pi31_moddiv$O: src$Pint$Pi31_moddiv.c $(HEADERSPRIV) ++$(OBJDIR)$Pi31_moddiv$O: $(OBJDIR) src$Pint$Pi31_moddiv.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi31_moddiv$O src$Pint$Pi31_moddiv.c + +-$(OBJDIR)$Pi31_modpow$O: src$Pint$Pi31_modpow.c $(HEADERSPRIV) ++$(OBJDIR)$Pi31_modpow$O: $(OBJDIR) src$Pint$Pi31_modpow.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi31_modpow$O src$Pint$Pi31_modpow.c + +-$(OBJDIR)$Pi31_modpow2$O: src$Pint$Pi31_modpow2.c $(HEADERSPRIV) ++$(OBJDIR)$Pi31_modpow2$O: $(OBJDIR) src$Pint$Pi31_modpow2.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi31_modpow2$O src$Pint$Pi31_modpow2.c + +-$(OBJDIR)$Pi31_montmul$O: src$Pint$Pi31_montmul.c $(HEADERSPRIV) ++$(OBJDIR)$Pi31_montmul$O: $(OBJDIR) src$Pint$Pi31_montmul.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi31_montmul$O src$Pint$Pi31_montmul.c + +-$(OBJDIR)$Pi31_mulacc$O: src$Pint$Pi31_mulacc.c $(HEADERSPRIV) ++$(OBJDIR)$Pi31_mulacc$O: $(OBJDIR) src$Pint$Pi31_mulacc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi31_mulacc$O src$Pint$Pi31_mulacc.c + +-$(OBJDIR)$Pi31_muladd$O: src$Pint$Pi31_muladd.c $(HEADERSPRIV) ++$(OBJDIR)$Pi31_muladd$O: $(OBJDIR) src$Pint$Pi31_muladd.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi31_muladd$O src$Pint$Pi31_muladd.c + +-$(OBJDIR)$Pi31_ninv31$O: src$Pint$Pi31_ninv31.c $(HEADERSPRIV) ++$(OBJDIR)$Pi31_ninv31$O: $(OBJDIR) src$Pint$Pi31_ninv31.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi31_ninv31$O src$Pint$Pi31_ninv31.c + +-$(OBJDIR)$Pi31_reduce$O: src$Pint$Pi31_reduce.c $(HEADERSPRIV) ++$(OBJDIR)$Pi31_reduce$O: $(OBJDIR) src$Pint$Pi31_reduce.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi31_reduce$O src$Pint$Pi31_reduce.c + +-$(OBJDIR)$Pi31_rshift$O: src$Pint$Pi31_rshift.c $(HEADERSPRIV) ++$(OBJDIR)$Pi31_rshift$O: $(OBJDIR) src$Pint$Pi31_rshift.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi31_rshift$O src$Pint$Pi31_rshift.c + +-$(OBJDIR)$Pi31_sub$O: src$Pint$Pi31_sub.c $(HEADERSPRIV) ++$(OBJDIR)$Pi31_sub$O: $(OBJDIR) src$Pint$Pi31_sub.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi31_sub$O src$Pint$Pi31_sub.c + +-$(OBJDIR)$Pi31_tmont$O: src$Pint$Pi31_tmont.c $(HEADERSPRIV) ++$(OBJDIR)$Pi31_tmont$O: $(OBJDIR) src$Pint$Pi31_tmont.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi31_tmont$O src$Pint$Pi31_tmont.c + +-$(OBJDIR)$Pi32_add$O: src$Pint$Pi32_add.c $(HEADERSPRIV) ++$(OBJDIR)$Pi32_add$O: $(OBJDIR) src$Pint$Pi32_add.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi32_add$O src$Pint$Pi32_add.c + +-$(OBJDIR)$Pi32_bitlen$O: src$Pint$Pi32_bitlen.c $(HEADERSPRIV) ++$(OBJDIR)$Pi32_bitlen$O: $(OBJDIR) src$Pint$Pi32_bitlen.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi32_bitlen$O src$Pint$Pi32_bitlen.c + +-$(OBJDIR)$Pi32_decmod$O: src$Pint$Pi32_decmod.c $(HEADERSPRIV) ++$(OBJDIR)$Pi32_decmod$O: $(OBJDIR) src$Pint$Pi32_decmod.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi32_decmod$O src$Pint$Pi32_decmod.c + +-$(OBJDIR)$Pi32_decode$O: src$Pint$Pi32_decode.c $(HEADERSPRIV) ++$(OBJDIR)$Pi32_decode$O: $(OBJDIR) src$Pint$Pi32_decode.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi32_decode$O src$Pint$Pi32_decode.c + +-$(OBJDIR)$Pi32_decred$O: src$Pint$Pi32_decred.c $(HEADERSPRIV) ++$(OBJDIR)$Pi32_decred$O: $(OBJDIR) src$Pint$Pi32_decred.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi32_decred$O src$Pint$Pi32_decred.c + +-$(OBJDIR)$Pi32_div32$O: src$Pint$Pi32_div32.c $(HEADERSPRIV) ++$(OBJDIR)$Pi32_div32$O: $(OBJDIR) src$Pint$Pi32_div32.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi32_div32$O src$Pint$Pi32_div32.c + +-$(OBJDIR)$Pi32_encode$O: src$Pint$Pi32_encode.c $(HEADERSPRIV) ++$(OBJDIR)$Pi32_encode$O: $(OBJDIR) src$Pint$Pi32_encode.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi32_encode$O src$Pint$Pi32_encode.c + +-$(OBJDIR)$Pi32_fmont$O: src$Pint$Pi32_fmont.c $(HEADERSPRIV) ++$(OBJDIR)$Pi32_fmont$O: $(OBJDIR) src$Pint$Pi32_fmont.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi32_fmont$O src$Pint$Pi32_fmont.c + +-$(OBJDIR)$Pi32_iszero$O: src$Pint$Pi32_iszero.c $(HEADERSPRIV) ++$(OBJDIR)$Pi32_iszero$O: $(OBJDIR) src$Pint$Pi32_iszero.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi32_iszero$O src$Pint$Pi32_iszero.c + +-$(OBJDIR)$Pi32_modpow$O: src$Pint$Pi32_modpow.c $(HEADERSPRIV) ++$(OBJDIR)$Pi32_modpow$O: $(OBJDIR) src$Pint$Pi32_modpow.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi32_modpow$O src$Pint$Pi32_modpow.c + +-$(OBJDIR)$Pi32_montmul$O: src$Pint$Pi32_montmul.c $(HEADERSPRIV) ++$(OBJDIR)$Pi32_montmul$O: $(OBJDIR) src$Pint$Pi32_montmul.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi32_montmul$O src$Pint$Pi32_montmul.c + +-$(OBJDIR)$Pi32_mulacc$O: src$Pint$Pi32_mulacc.c $(HEADERSPRIV) ++$(OBJDIR)$Pi32_mulacc$O: $(OBJDIR) src$Pint$Pi32_mulacc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi32_mulacc$O src$Pint$Pi32_mulacc.c + +-$(OBJDIR)$Pi32_muladd$O: src$Pint$Pi32_muladd.c $(HEADERSPRIV) ++$(OBJDIR)$Pi32_muladd$O: $(OBJDIR) src$Pint$Pi32_muladd.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi32_muladd$O src$Pint$Pi32_muladd.c + +-$(OBJDIR)$Pi32_ninv32$O: src$Pint$Pi32_ninv32.c $(HEADERSPRIV) ++$(OBJDIR)$Pi32_ninv32$O: $(OBJDIR) src$Pint$Pi32_ninv32.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi32_ninv32$O src$Pint$Pi32_ninv32.c + +-$(OBJDIR)$Pi32_reduce$O: src$Pint$Pi32_reduce.c $(HEADERSPRIV) ++$(OBJDIR)$Pi32_reduce$O: $(OBJDIR) src$Pint$Pi32_reduce.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi32_reduce$O src$Pint$Pi32_reduce.c + +-$(OBJDIR)$Pi32_sub$O: src$Pint$Pi32_sub.c $(HEADERSPRIV) ++$(OBJDIR)$Pi32_sub$O: $(OBJDIR) src$Pint$Pi32_sub.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi32_sub$O src$Pint$Pi32_sub.c + +-$(OBJDIR)$Pi32_tmont$O: src$Pint$Pi32_tmont.c $(HEADERSPRIV) ++$(OBJDIR)$Pi32_tmont$O: $(OBJDIR) src$Pint$Pi32_tmont.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi32_tmont$O src$Pint$Pi32_tmont.c + +-$(OBJDIR)$Pi62_modpow2$O: src$Pint$Pi62_modpow2.c $(HEADERSPRIV) ++$(OBJDIR)$Pi62_modpow2$O: $(OBJDIR) src$Pint$Pi62_modpow2.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pi62_modpow2$O src$Pint$Pi62_modpow2.c + +-$(OBJDIR)$Phkdf$O: src$Pkdf$Phkdf.c $(HEADERSPRIV) ++$(OBJDIR)$Phkdf$O: $(OBJDIR) src$Pkdf$Phkdf.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Phkdf$O src$Pkdf$Phkdf.c + +-$(OBJDIR)$Phmac$O: src$Pmac$Phmac.c $(HEADERSPRIV) ++$(OBJDIR)$Phmac$O: $(OBJDIR) src$Pmac$Phmac.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Phmac$O src$Pmac$Phmac.c + +-$(OBJDIR)$Phmac_ct$O: src$Pmac$Phmac_ct.c $(HEADERSPRIV) ++$(OBJDIR)$Phmac_ct$O: $(OBJDIR) src$Pmac$Phmac_ct.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Phmac_ct$O src$Pmac$Phmac_ct.c + +-$(OBJDIR)$Paesctr_drbg$O: src$Prand$Paesctr_drbg.c $(HEADERSPRIV) ++$(OBJDIR)$Paesctr_drbg$O: $(OBJDIR) src$Prand$Paesctr_drbg.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paesctr_drbg$O src$Prand$Paesctr_drbg.c + +-$(OBJDIR)$Phmac_drbg$O: src$Prand$Phmac_drbg.c $(HEADERSPRIV) ++$(OBJDIR)$Phmac_drbg$O: $(OBJDIR) src$Prand$Phmac_drbg.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Phmac_drbg$O src$Prand$Phmac_drbg.c + +-$(OBJDIR)$Psysrng$O: src$Prand$Psysrng.c $(HEADERSPRIV) ++$(OBJDIR)$Psysrng$O: $(OBJDIR) src$Prand$Psysrng.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Psysrng$O src$Prand$Psysrng.c + +-$(OBJDIR)$Prsa_default_keygen$O: src$Prsa$Prsa_default_keygen.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_default_keygen$O: $(OBJDIR) src$Prsa$Prsa_default_keygen.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_default_keygen$O src$Prsa$Prsa_default_keygen.c + +-$(OBJDIR)$Prsa_default_modulus$O: src$Prsa$Prsa_default_modulus.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_default_modulus$O: $(OBJDIR) src$Prsa$Prsa_default_modulus.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_default_modulus$O src$Prsa$Prsa_default_modulus.c + +-$(OBJDIR)$Prsa_default_oaep_decrypt$O: src$Prsa$Prsa_default_oaep_decrypt.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_default_oaep_decrypt$O: $(OBJDIR) src$Prsa$Prsa_default_oaep_decrypt.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_default_oaep_decrypt$O src$Prsa$Prsa_default_oaep_decrypt.c + +-$(OBJDIR)$Prsa_default_oaep_encrypt$O: src$Prsa$Prsa_default_oaep_encrypt.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_default_oaep_encrypt$O: $(OBJDIR) src$Prsa$Prsa_default_oaep_encrypt.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_default_oaep_encrypt$O src$Prsa$Prsa_default_oaep_encrypt.c + +-$(OBJDIR)$Prsa_default_pkcs1_sign$O: src$Prsa$Prsa_default_pkcs1_sign.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_default_pkcs1_sign$O: $(OBJDIR) src$Prsa$Prsa_default_pkcs1_sign.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_default_pkcs1_sign$O src$Prsa$Prsa_default_pkcs1_sign.c + +-$(OBJDIR)$Prsa_default_pkcs1_vrfy$O: src$Prsa$Prsa_default_pkcs1_vrfy.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_default_pkcs1_vrfy$O: $(OBJDIR) src$Prsa$Prsa_default_pkcs1_vrfy.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_default_pkcs1_vrfy$O src$Prsa$Prsa_default_pkcs1_vrfy.c + +-$(OBJDIR)$Prsa_default_priv$O: src$Prsa$Prsa_default_priv.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_default_priv$O: $(OBJDIR) src$Prsa$Prsa_default_priv.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_default_priv$O src$Prsa$Prsa_default_priv.c + +-$(OBJDIR)$Prsa_default_privexp$O: src$Prsa$Prsa_default_privexp.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_default_privexp$O: $(OBJDIR) src$Prsa$Prsa_default_privexp.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_default_privexp$O src$Prsa$Prsa_default_privexp.c + +-$(OBJDIR)$Prsa_default_pub$O: src$Prsa$Prsa_default_pub.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_default_pub$O: $(OBJDIR) src$Prsa$Prsa_default_pub.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_default_pub$O src$Prsa$Prsa_default_pub.c + +-$(OBJDIR)$Prsa_default_pubexp$O: src$Prsa$Prsa_default_pubexp.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_default_pubexp$O: $(OBJDIR) src$Prsa$Prsa_default_pubexp.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_default_pubexp$O src$Prsa$Prsa_default_pubexp.c + +-$(OBJDIR)$Prsa_i15_keygen$O: src$Prsa$Prsa_i15_keygen.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i15_keygen$O: $(OBJDIR) src$Prsa$Prsa_i15_keygen.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i15_keygen$O src$Prsa$Prsa_i15_keygen.c + +-$(OBJDIR)$Prsa_i15_modulus$O: src$Prsa$Prsa_i15_modulus.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i15_modulus$O: $(OBJDIR) src$Prsa$Prsa_i15_modulus.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i15_modulus$O src$Prsa$Prsa_i15_modulus.c + +-$(OBJDIR)$Prsa_i15_oaep_decrypt$O: src$Prsa$Prsa_i15_oaep_decrypt.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i15_oaep_decrypt$O: $(OBJDIR) src$Prsa$Prsa_i15_oaep_decrypt.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i15_oaep_decrypt$O src$Prsa$Prsa_i15_oaep_decrypt.c + +-$(OBJDIR)$Prsa_i15_oaep_encrypt$O: src$Prsa$Prsa_i15_oaep_encrypt.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i15_oaep_encrypt$O: $(OBJDIR) src$Prsa$Prsa_i15_oaep_encrypt.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i15_oaep_encrypt$O src$Prsa$Prsa_i15_oaep_encrypt.c + +-$(OBJDIR)$Prsa_i15_pkcs1_sign$O: src$Prsa$Prsa_i15_pkcs1_sign.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i15_pkcs1_sign$O: $(OBJDIR) src$Prsa$Prsa_i15_pkcs1_sign.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i15_pkcs1_sign$O src$Prsa$Prsa_i15_pkcs1_sign.c + +-$(OBJDIR)$Prsa_i15_pkcs1_vrfy$O: src$Prsa$Prsa_i15_pkcs1_vrfy.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i15_pkcs1_vrfy$O: $(OBJDIR) src$Prsa$Prsa_i15_pkcs1_vrfy.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i15_pkcs1_vrfy$O src$Prsa$Prsa_i15_pkcs1_vrfy.c + +-$(OBJDIR)$Prsa_i15_priv$O: src$Prsa$Prsa_i15_priv.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i15_priv$O: $(OBJDIR) src$Prsa$Prsa_i15_priv.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i15_priv$O src$Prsa$Prsa_i15_priv.c + +-$(OBJDIR)$Prsa_i15_privexp$O: src$Prsa$Prsa_i15_privexp.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i15_privexp$O: $(OBJDIR) src$Prsa$Prsa_i15_privexp.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i15_privexp$O src$Prsa$Prsa_i15_privexp.c + +-$(OBJDIR)$Prsa_i15_pub$O: src$Prsa$Prsa_i15_pub.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i15_pub$O: $(OBJDIR) src$Prsa$Prsa_i15_pub.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i15_pub$O src$Prsa$Prsa_i15_pub.c + +-$(OBJDIR)$Prsa_i15_pubexp$O: src$Prsa$Prsa_i15_pubexp.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i15_pubexp$O: $(OBJDIR) src$Prsa$Prsa_i15_pubexp.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i15_pubexp$O src$Prsa$Prsa_i15_pubexp.c + +-$(OBJDIR)$Prsa_i31_keygen$O: src$Prsa$Prsa_i31_keygen.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i31_keygen$O: $(OBJDIR) src$Prsa$Prsa_i31_keygen.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i31_keygen$O src$Prsa$Prsa_i31_keygen.c + +-$(OBJDIR)$Prsa_i31_keygen_inner$O: src$Prsa$Prsa_i31_keygen_inner.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i31_keygen_inner$O: $(OBJDIR) src$Prsa$Prsa_i31_keygen_inner.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i31_keygen_inner$O src$Prsa$Prsa_i31_keygen_inner.c + +-$(OBJDIR)$Prsa_i31_modulus$O: src$Prsa$Prsa_i31_modulus.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i31_modulus$O: $(OBJDIR) src$Prsa$Prsa_i31_modulus.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i31_modulus$O src$Prsa$Prsa_i31_modulus.c + +-$(OBJDIR)$Prsa_i31_oaep_decrypt$O: src$Prsa$Prsa_i31_oaep_decrypt.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i31_oaep_decrypt$O: $(OBJDIR) src$Prsa$Prsa_i31_oaep_decrypt.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i31_oaep_decrypt$O src$Prsa$Prsa_i31_oaep_decrypt.c + +-$(OBJDIR)$Prsa_i31_oaep_encrypt$O: src$Prsa$Prsa_i31_oaep_encrypt.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i31_oaep_encrypt$O: $(OBJDIR) src$Prsa$Prsa_i31_oaep_encrypt.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i31_oaep_encrypt$O src$Prsa$Prsa_i31_oaep_encrypt.c + +-$(OBJDIR)$Prsa_i31_pkcs1_sign$O: src$Prsa$Prsa_i31_pkcs1_sign.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i31_pkcs1_sign$O: $(OBJDIR) src$Prsa$Prsa_i31_pkcs1_sign.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i31_pkcs1_sign$O src$Prsa$Prsa_i31_pkcs1_sign.c + +-$(OBJDIR)$Prsa_i31_pkcs1_vrfy$O: src$Prsa$Prsa_i31_pkcs1_vrfy.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i31_pkcs1_vrfy$O: $(OBJDIR) src$Prsa$Prsa_i31_pkcs1_vrfy.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i31_pkcs1_vrfy$O src$Prsa$Prsa_i31_pkcs1_vrfy.c + +-$(OBJDIR)$Prsa_i31_priv$O: src$Prsa$Prsa_i31_priv.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i31_priv$O: $(OBJDIR) src$Prsa$Prsa_i31_priv.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i31_priv$O src$Prsa$Prsa_i31_priv.c + +-$(OBJDIR)$Prsa_i31_privexp$O: src$Prsa$Prsa_i31_privexp.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i31_privexp$O: $(OBJDIR) src$Prsa$Prsa_i31_privexp.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i31_privexp$O src$Prsa$Prsa_i31_privexp.c + +-$(OBJDIR)$Prsa_i31_pub$O: src$Prsa$Prsa_i31_pub.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i31_pub$O: $(OBJDIR) src$Prsa$Prsa_i31_pub.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i31_pub$O src$Prsa$Prsa_i31_pub.c + +-$(OBJDIR)$Prsa_i31_pubexp$O: src$Prsa$Prsa_i31_pubexp.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i31_pubexp$O: $(OBJDIR) src$Prsa$Prsa_i31_pubexp.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i31_pubexp$O src$Prsa$Prsa_i31_pubexp.c + +-$(OBJDIR)$Prsa_i32_oaep_decrypt$O: src$Prsa$Prsa_i32_oaep_decrypt.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i32_oaep_decrypt$O: $(OBJDIR) src$Prsa$Prsa_i32_oaep_decrypt.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i32_oaep_decrypt$O src$Prsa$Prsa_i32_oaep_decrypt.c + +-$(OBJDIR)$Prsa_i32_oaep_encrypt$O: src$Prsa$Prsa_i32_oaep_encrypt.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i32_oaep_encrypt$O: $(OBJDIR) src$Prsa$Prsa_i32_oaep_encrypt.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i32_oaep_encrypt$O src$Prsa$Prsa_i32_oaep_encrypt.c + +-$(OBJDIR)$Prsa_i32_pkcs1_sign$O: src$Prsa$Prsa_i32_pkcs1_sign.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i32_pkcs1_sign$O: $(OBJDIR) src$Prsa$Prsa_i32_pkcs1_sign.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i32_pkcs1_sign$O src$Prsa$Prsa_i32_pkcs1_sign.c + +-$(OBJDIR)$Prsa_i32_pkcs1_vrfy$O: src$Prsa$Prsa_i32_pkcs1_vrfy.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i32_pkcs1_vrfy$O: $(OBJDIR) src$Prsa$Prsa_i32_pkcs1_vrfy.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i32_pkcs1_vrfy$O src$Prsa$Prsa_i32_pkcs1_vrfy.c + +-$(OBJDIR)$Prsa_i32_priv$O: src$Prsa$Prsa_i32_priv.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i32_priv$O: $(OBJDIR) src$Prsa$Prsa_i32_priv.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i32_priv$O src$Prsa$Prsa_i32_priv.c + +-$(OBJDIR)$Prsa_i32_pub$O: src$Prsa$Prsa_i32_pub.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i32_pub$O: $(OBJDIR) src$Prsa$Prsa_i32_pub.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i32_pub$O src$Prsa$Prsa_i32_pub.c + +-$(OBJDIR)$Prsa_i62_keygen$O: src$Prsa$Prsa_i62_keygen.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i62_keygen$O: $(OBJDIR) src$Prsa$Prsa_i62_keygen.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i62_keygen$O src$Prsa$Prsa_i62_keygen.c + +-$(OBJDIR)$Prsa_i62_oaep_decrypt$O: src$Prsa$Prsa_i62_oaep_decrypt.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i62_oaep_decrypt$O: $(OBJDIR) src$Prsa$Prsa_i62_oaep_decrypt.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i62_oaep_decrypt$O src$Prsa$Prsa_i62_oaep_decrypt.c + +-$(OBJDIR)$Prsa_i62_oaep_encrypt$O: src$Prsa$Prsa_i62_oaep_encrypt.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i62_oaep_encrypt$O: $(OBJDIR) src$Prsa$Prsa_i62_oaep_encrypt.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i62_oaep_encrypt$O src$Prsa$Prsa_i62_oaep_encrypt.c + +-$(OBJDIR)$Prsa_i62_pkcs1_sign$O: src$Prsa$Prsa_i62_pkcs1_sign.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i62_pkcs1_sign$O: $(OBJDIR) src$Prsa$Prsa_i62_pkcs1_sign.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i62_pkcs1_sign$O src$Prsa$Prsa_i62_pkcs1_sign.c + +-$(OBJDIR)$Prsa_i62_pkcs1_vrfy$O: src$Prsa$Prsa_i62_pkcs1_vrfy.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i62_pkcs1_vrfy$O: $(OBJDIR) src$Prsa$Prsa_i62_pkcs1_vrfy.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i62_pkcs1_vrfy$O src$Prsa$Prsa_i62_pkcs1_vrfy.c + +-$(OBJDIR)$Prsa_i62_priv$O: src$Prsa$Prsa_i62_priv.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i62_priv$O: $(OBJDIR) src$Prsa$Prsa_i62_priv.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i62_priv$O src$Prsa$Prsa_i62_priv.c + +-$(OBJDIR)$Prsa_i62_pub$O: src$Prsa$Prsa_i62_pub.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_i62_pub$O: $(OBJDIR) src$Prsa$Prsa_i62_pub.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_i62_pub$O src$Prsa$Prsa_i62_pub.c + +-$(OBJDIR)$Prsa_oaep_pad$O: src$Prsa$Prsa_oaep_pad.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_oaep_pad$O: $(OBJDIR) src$Prsa$Prsa_oaep_pad.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_oaep_pad$O src$Prsa$Prsa_oaep_pad.c + +-$(OBJDIR)$Prsa_oaep_unpad$O: src$Prsa$Prsa_oaep_unpad.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_oaep_unpad$O: $(OBJDIR) src$Prsa$Prsa_oaep_unpad.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_oaep_unpad$O src$Prsa$Prsa_oaep_unpad.c + +-$(OBJDIR)$Prsa_pkcs1_sig_pad$O: src$Prsa$Prsa_pkcs1_sig_pad.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_pkcs1_sig_pad$O: $(OBJDIR) src$Prsa$Prsa_pkcs1_sig_pad.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_pkcs1_sig_pad$O src$Prsa$Prsa_pkcs1_sig_pad.c + +-$(OBJDIR)$Prsa_pkcs1_sig_unpad$O: src$Prsa$Prsa_pkcs1_sig_unpad.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_pkcs1_sig_unpad$O: $(OBJDIR) src$Prsa$Prsa_pkcs1_sig_unpad.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_pkcs1_sig_unpad$O src$Prsa$Prsa_pkcs1_sig_unpad.c + +-$(OBJDIR)$Prsa_ssl_decrypt$O: src$Prsa$Prsa_ssl_decrypt.c $(HEADERSPRIV) ++$(OBJDIR)$Prsa_ssl_decrypt$O: $(OBJDIR) src$Prsa$Prsa_ssl_decrypt.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Prsa_ssl_decrypt$O src$Prsa$Prsa_ssl_decrypt.c + +-$(OBJDIR)$Pprf$O: src$Pssl$Pprf.c $(HEADERSPRIV) ++$(OBJDIR)$Pprf$O: $(OBJDIR) src$Pssl$Pprf.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pprf$O src$Pssl$Pprf.c + +-$(OBJDIR)$Pprf_md5sha1$O: src$Pssl$Pprf_md5sha1.c $(HEADERSPRIV) ++$(OBJDIR)$Pprf_md5sha1$O: $(OBJDIR) src$Pssl$Pprf_md5sha1.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pprf_md5sha1$O src$Pssl$Pprf_md5sha1.c + +-$(OBJDIR)$Pprf_sha256$O: src$Pssl$Pprf_sha256.c $(HEADERSPRIV) ++$(OBJDIR)$Pprf_sha256$O: $(OBJDIR) src$Pssl$Pprf_sha256.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pprf_sha256$O src$Pssl$Pprf_sha256.c + +-$(OBJDIR)$Pprf_sha384$O: src$Pssl$Pprf_sha384.c $(HEADERSPRIV) ++$(OBJDIR)$Pprf_sha384$O: $(OBJDIR) src$Pssl$Pprf_sha384.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pprf_sha384$O src$Pssl$Pprf_sha384.c + +-$(OBJDIR)$Pssl_ccert_single_ec$O: src$Pssl$Pssl_ccert_single_ec.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_ccert_single_ec$O: $(OBJDIR) src$Pssl$Pssl_ccert_single_ec.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_ccert_single_ec$O src$Pssl$Pssl_ccert_single_ec.c + +-$(OBJDIR)$Pssl_ccert_single_rsa$O: src$Pssl$Pssl_ccert_single_rsa.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_ccert_single_rsa$O: $(OBJDIR) src$Pssl$Pssl_ccert_single_rsa.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_ccert_single_rsa$O src$Pssl$Pssl_ccert_single_rsa.c + +-$(OBJDIR)$Pssl_client$O: src$Pssl$Pssl_client.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_client$O: $(OBJDIR) src$Pssl$Pssl_client.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_client$O src$Pssl$Pssl_client.c + +-$(OBJDIR)$Pssl_client_default_rsapub$O: src$Pssl$Pssl_client_default_rsapub.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_client_default_rsapub$O: $(OBJDIR) src$Pssl$Pssl_client_default_rsapub.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_client_default_rsapub$O src$Pssl$Pssl_client_default_rsapub.c + +-$(OBJDIR)$Pssl_client_full$O: src$Pssl$Pssl_client_full.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_client_full$O: $(OBJDIR) src$Pssl$Pssl_client_full.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_client_full$O src$Pssl$Pssl_client_full.c + +-$(OBJDIR)$Pssl_engine$O: src$Pssl$Pssl_engine.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_engine$O: $(OBJDIR) src$Pssl$Pssl_engine.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_engine$O src$Pssl$Pssl_engine.c + +-$(OBJDIR)$Pssl_engine_default_aescbc$O: src$Pssl$Pssl_engine_default_aescbc.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_engine_default_aescbc$O: $(OBJDIR) src$Pssl$Pssl_engine_default_aescbc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_engine_default_aescbc$O src$Pssl$Pssl_engine_default_aescbc.c + +-$(OBJDIR)$Pssl_engine_default_aesccm$O: src$Pssl$Pssl_engine_default_aesccm.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_engine_default_aesccm$O: $(OBJDIR) src$Pssl$Pssl_engine_default_aesccm.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_engine_default_aesccm$O src$Pssl$Pssl_engine_default_aesccm.c + +-$(OBJDIR)$Pssl_engine_default_aesgcm$O: src$Pssl$Pssl_engine_default_aesgcm.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_engine_default_aesgcm$O: $(OBJDIR) src$Pssl$Pssl_engine_default_aesgcm.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_engine_default_aesgcm$O src$Pssl$Pssl_engine_default_aesgcm.c + +-$(OBJDIR)$Pssl_engine_default_chapol$O: src$Pssl$Pssl_engine_default_chapol.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_engine_default_chapol$O: $(OBJDIR) src$Pssl$Pssl_engine_default_chapol.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_engine_default_chapol$O src$Pssl$Pssl_engine_default_chapol.c + +-$(OBJDIR)$Pssl_engine_default_descbc$O: src$Pssl$Pssl_engine_default_descbc.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_engine_default_descbc$O: $(OBJDIR) src$Pssl$Pssl_engine_default_descbc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_engine_default_descbc$O src$Pssl$Pssl_engine_default_descbc.c + +-$(OBJDIR)$Pssl_engine_default_ec$O: src$Pssl$Pssl_engine_default_ec.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_engine_default_ec$O: $(OBJDIR) src$Pssl$Pssl_engine_default_ec.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_engine_default_ec$O src$Pssl$Pssl_engine_default_ec.c + +-$(OBJDIR)$Pssl_engine_default_ecdsa$O: src$Pssl$Pssl_engine_default_ecdsa.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_engine_default_ecdsa$O: $(OBJDIR) src$Pssl$Pssl_engine_default_ecdsa.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_engine_default_ecdsa$O src$Pssl$Pssl_engine_default_ecdsa.c + +-$(OBJDIR)$Pssl_engine_default_rsavrfy$O: src$Pssl$Pssl_engine_default_rsavrfy.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_engine_default_rsavrfy$O: $(OBJDIR) src$Pssl$Pssl_engine_default_rsavrfy.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_engine_default_rsavrfy$O src$Pssl$Pssl_engine_default_rsavrfy.c + +-$(OBJDIR)$Pssl_hashes$O: src$Pssl$Pssl_hashes.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_hashes$O: $(OBJDIR) src$Pssl$Pssl_hashes.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_hashes$O src$Pssl$Pssl_hashes.c + +-$(OBJDIR)$Pssl_hs_client$O: src$Pssl$Pssl_hs_client.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_hs_client$O: $(OBJDIR) src$Pssl$Pssl_hs_client.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_hs_client$O src$Pssl$Pssl_hs_client.c + +-$(OBJDIR)$Pssl_hs_server$O: src$Pssl$Pssl_hs_server.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_hs_server$O: $(OBJDIR) src$Pssl$Pssl_hs_server.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_hs_server$O src$Pssl$Pssl_hs_server.c + +-$(OBJDIR)$Pssl_io$O: src$Pssl$Pssl_io.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_io$O: $(OBJDIR) src$Pssl$Pssl_io.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_io$O src$Pssl$Pssl_io.c + +-$(OBJDIR)$Pssl_keyexport$O: src$Pssl$Pssl_keyexport.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_keyexport$O: $(OBJDIR) src$Pssl$Pssl_keyexport.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_keyexport$O src$Pssl$Pssl_keyexport.c + +-$(OBJDIR)$Pssl_lru$O: src$Pssl$Pssl_lru.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_lru$O: $(OBJDIR) src$Pssl$Pssl_lru.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_lru$O src$Pssl$Pssl_lru.c + +-$(OBJDIR)$Pssl_rec_cbc$O: src$Pssl$Pssl_rec_cbc.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_rec_cbc$O: $(OBJDIR) src$Pssl$Pssl_rec_cbc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_rec_cbc$O src$Pssl$Pssl_rec_cbc.c + +-$(OBJDIR)$Pssl_rec_ccm$O: src$Pssl$Pssl_rec_ccm.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_rec_ccm$O: $(OBJDIR) src$Pssl$Pssl_rec_ccm.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_rec_ccm$O src$Pssl$Pssl_rec_ccm.c + +-$(OBJDIR)$Pssl_rec_chapol$O: src$Pssl$Pssl_rec_chapol.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_rec_chapol$O: $(OBJDIR) src$Pssl$Pssl_rec_chapol.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_rec_chapol$O src$Pssl$Pssl_rec_chapol.c + +-$(OBJDIR)$Pssl_rec_gcm$O: src$Pssl$Pssl_rec_gcm.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_rec_gcm$O: $(OBJDIR) src$Pssl$Pssl_rec_gcm.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_rec_gcm$O src$Pssl$Pssl_rec_gcm.c + +-$(OBJDIR)$Pssl_scert_single_ec$O: src$Pssl$Pssl_scert_single_ec.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_scert_single_ec$O: $(OBJDIR) src$Pssl$Pssl_scert_single_ec.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_scert_single_ec$O src$Pssl$Pssl_scert_single_ec.c + +-$(OBJDIR)$Pssl_scert_single_rsa$O: src$Pssl$Pssl_scert_single_rsa.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_scert_single_rsa$O: $(OBJDIR) src$Pssl$Pssl_scert_single_rsa.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_scert_single_rsa$O src$Pssl$Pssl_scert_single_rsa.c + +-$(OBJDIR)$Pssl_server$O: src$Pssl$Pssl_server.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_server$O: $(OBJDIR) src$Pssl$Pssl_server.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_server$O src$Pssl$Pssl_server.c + +-$(OBJDIR)$Pssl_server_full_ec$O: src$Pssl$Pssl_server_full_ec.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_server_full_ec$O: $(OBJDIR) src$Pssl$Pssl_server_full_ec.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_server_full_ec$O src$Pssl$Pssl_server_full_ec.c + +-$(OBJDIR)$Pssl_server_full_rsa$O: src$Pssl$Pssl_server_full_rsa.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_server_full_rsa$O: $(OBJDIR) src$Pssl$Pssl_server_full_rsa.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_server_full_rsa$O src$Pssl$Pssl_server_full_rsa.c + +-$(OBJDIR)$Pssl_server_mine2c$O: src$Pssl$Pssl_server_mine2c.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_server_mine2c$O: $(OBJDIR) src$Pssl$Pssl_server_mine2c.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_server_mine2c$O src$Pssl$Pssl_server_mine2c.c + +-$(OBJDIR)$Pssl_server_mine2g$O: src$Pssl$Pssl_server_mine2g.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_server_mine2g$O: $(OBJDIR) src$Pssl$Pssl_server_mine2g.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_server_mine2g$O src$Pssl$Pssl_server_mine2g.c + +-$(OBJDIR)$Pssl_server_minf2c$O: src$Pssl$Pssl_server_minf2c.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_server_minf2c$O: $(OBJDIR) src$Pssl$Pssl_server_minf2c.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_server_minf2c$O src$Pssl$Pssl_server_minf2c.c + +-$(OBJDIR)$Pssl_server_minf2g$O: src$Pssl$Pssl_server_minf2g.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_server_minf2g$O: $(OBJDIR) src$Pssl$Pssl_server_minf2g.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_server_minf2g$O src$Pssl$Pssl_server_minf2g.c + +-$(OBJDIR)$Pssl_server_minr2g$O: src$Pssl$Pssl_server_minr2g.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_server_minr2g$O: $(OBJDIR) src$Pssl$Pssl_server_minr2g.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_server_minr2g$O src$Pssl$Pssl_server_minr2g.c + +-$(OBJDIR)$Pssl_server_minu2g$O: src$Pssl$Pssl_server_minu2g.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_server_minu2g$O: $(OBJDIR) src$Pssl$Pssl_server_minu2g.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_server_minu2g$O src$Pssl$Pssl_server_minu2g.c + +-$(OBJDIR)$Pssl_server_minv2g$O: src$Pssl$Pssl_server_minv2g.c $(HEADERSPRIV) ++$(OBJDIR)$Pssl_server_minv2g$O: $(OBJDIR) src$Pssl$Pssl_server_minv2g.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pssl_server_minv2g$O src$Pssl$Pssl_server_minv2g.c + +-$(OBJDIR)$Paes_big_cbcdec$O: src$Psymcipher$Paes_big_cbcdec.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_big_cbcdec$O: $(OBJDIR) src$Psymcipher$Paes_big_cbcdec.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_big_cbcdec$O src$Psymcipher$Paes_big_cbcdec.c + +-$(OBJDIR)$Paes_big_cbcenc$O: src$Psymcipher$Paes_big_cbcenc.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_big_cbcenc$O: $(OBJDIR) src$Psymcipher$Paes_big_cbcenc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_big_cbcenc$O src$Psymcipher$Paes_big_cbcenc.c + +-$(OBJDIR)$Paes_big_ctr$O: src$Psymcipher$Paes_big_ctr.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_big_ctr$O: $(OBJDIR) src$Psymcipher$Paes_big_ctr.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_big_ctr$O src$Psymcipher$Paes_big_ctr.c + +-$(OBJDIR)$Paes_big_ctrcbc$O: src$Psymcipher$Paes_big_ctrcbc.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_big_ctrcbc$O: $(OBJDIR) src$Psymcipher$Paes_big_ctrcbc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_big_ctrcbc$O src$Psymcipher$Paes_big_ctrcbc.c + +-$(OBJDIR)$Paes_big_dec$O: src$Psymcipher$Paes_big_dec.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_big_dec$O: $(OBJDIR) src$Psymcipher$Paes_big_dec.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_big_dec$O src$Psymcipher$Paes_big_dec.c + +-$(OBJDIR)$Paes_big_enc$O: src$Psymcipher$Paes_big_enc.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_big_enc$O: $(OBJDIR) src$Psymcipher$Paes_big_enc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_big_enc$O src$Psymcipher$Paes_big_enc.c + +-$(OBJDIR)$Paes_common$O: src$Psymcipher$Paes_common.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_common$O: $(OBJDIR) src$Psymcipher$Paes_common.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_common$O src$Psymcipher$Paes_common.c + +-$(OBJDIR)$Paes_ct$O: src$Psymcipher$Paes_ct.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_ct$O: $(OBJDIR) src$Psymcipher$Paes_ct.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_ct$O src$Psymcipher$Paes_ct.c + +-$(OBJDIR)$Paes_ct64$O: src$Psymcipher$Paes_ct64.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_ct64$O: $(OBJDIR) src$Psymcipher$Paes_ct64.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_ct64$O src$Psymcipher$Paes_ct64.c + +-$(OBJDIR)$Paes_ct64_cbcdec$O: src$Psymcipher$Paes_ct64_cbcdec.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_ct64_cbcdec$O: $(OBJDIR) src$Psymcipher$Paes_ct64_cbcdec.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_ct64_cbcdec$O src$Psymcipher$Paes_ct64_cbcdec.c + +-$(OBJDIR)$Paes_ct64_cbcenc$O: src$Psymcipher$Paes_ct64_cbcenc.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_ct64_cbcenc$O: $(OBJDIR) src$Psymcipher$Paes_ct64_cbcenc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_ct64_cbcenc$O src$Psymcipher$Paes_ct64_cbcenc.c + +-$(OBJDIR)$Paes_ct64_ctr$O: src$Psymcipher$Paes_ct64_ctr.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_ct64_ctr$O: $(OBJDIR) src$Psymcipher$Paes_ct64_ctr.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_ct64_ctr$O src$Psymcipher$Paes_ct64_ctr.c + +-$(OBJDIR)$Paes_ct64_ctrcbc$O: src$Psymcipher$Paes_ct64_ctrcbc.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_ct64_ctrcbc$O: $(OBJDIR) src$Psymcipher$Paes_ct64_ctrcbc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_ct64_ctrcbc$O src$Psymcipher$Paes_ct64_ctrcbc.c + +-$(OBJDIR)$Paes_ct64_dec$O: src$Psymcipher$Paes_ct64_dec.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_ct64_dec$O: $(OBJDIR) src$Psymcipher$Paes_ct64_dec.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_ct64_dec$O src$Psymcipher$Paes_ct64_dec.c + +-$(OBJDIR)$Paes_ct64_enc$O: src$Psymcipher$Paes_ct64_enc.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_ct64_enc$O: $(OBJDIR) src$Psymcipher$Paes_ct64_enc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_ct64_enc$O src$Psymcipher$Paes_ct64_enc.c + +-$(OBJDIR)$Paes_ct_cbcdec$O: src$Psymcipher$Paes_ct_cbcdec.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_ct_cbcdec$O: $(OBJDIR) src$Psymcipher$Paes_ct_cbcdec.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_ct_cbcdec$O src$Psymcipher$Paes_ct_cbcdec.c + +-$(OBJDIR)$Paes_ct_cbcenc$O: src$Psymcipher$Paes_ct_cbcenc.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_ct_cbcenc$O: $(OBJDIR) src$Psymcipher$Paes_ct_cbcenc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_ct_cbcenc$O src$Psymcipher$Paes_ct_cbcenc.c + +-$(OBJDIR)$Paes_ct_ctr$O: src$Psymcipher$Paes_ct_ctr.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_ct_ctr$O: $(OBJDIR) src$Psymcipher$Paes_ct_ctr.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_ct_ctr$O src$Psymcipher$Paes_ct_ctr.c + +-$(OBJDIR)$Paes_ct_ctrcbc$O: src$Psymcipher$Paes_ct_ctrcbc.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_ct_ctrcbc$O: $(OBJDIR) src$Psymcipher$Paes_ct_ctrcbc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_ct_ctrcbc$O src$Psymcipher$Paes_ct_ctrcbc.c + +-$(OBJDIR)$Paes_ct_dec$O: src$Psymcipher$Paes_ct_dec.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_ct_dec$O: $(OBJDIR) src$Psymcipher$Paes_ct_dec.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_ct_dec$O src$Psymcipher$Paes_ct_dec.c + +-$(OBJDIR)$Paes_ct_enc$O: src$Psymcipher$Paes_ct_enc.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_ct_enc$O: $(OBJDIR) src$Psymcipher$Paes_ct_enc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_ct_enc$O src$Psymcipher$Paes_ct_enc.c + +-$(OBJDIR)$Paes_pwr8$O: src$Psymcipher$Paes_pwr8.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_pwr8$O: $(OBJDIR) src$Psymcipher$Paes_pwr8.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_pwr8$O src$Psymcipher$Paes_pwr8.c + +-$(OBJDIR)$Paes_pwr8_cbcdec$O: src$Psymcipher$Paes_pwr8_cbcdec.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_pwr8_cbcdec$O: $(OBJDIR) src$Psymcipher$Paes_pwr8_cbcdec.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_pwr8_cbcdec$O src$Psymcipher$Paes_pwr8_cbcdec.c + +-$(OBJDIR)$Paes_pwr8_cbcenc$O: src$Psymcipher$Paes_pwr8_cbcenc.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_pwr8_cbcenc$O: $(OBJDIR) src$Psymcipher$Paes_pwr8_cbcenc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_pwr8_cbcenc$O src$Psymcipher$Paes_pwr8_cbcenc.c + +-$(OBJDIR)$Paes_pwr8_ctr$O: src$Psymcipher$Paes_pwr8_ctr.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_pwr8_ctr$O: $(OBJDIR) src$Psymcipher$Paes_pwr8_ctr.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_pwr8_ctr$O src$Psymcipher$Paes_pwr8_ctr.c + +-$(OBJDIR)$Paes_pwr8_ctrcbc$O: src$Psymcipher$Paes_pwr8_ctrcbc.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_pwr8_ctrcbc$O: $(OBJDIR) src$Psymcipher$Paes_pwr8_ctrcbc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_pwr8_ctrcbc$O src$Psymcipher$Paes_pwr8_ctrcbc.c + +-$(OBJDIR)$Paes_small_cbcdec$O: src$Psymcipher$Paes_small_cbcdec.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_small_cbcdec$O: $(OBJDIR) src$Psymcipher$Paes_small_cbcdec.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_small_cbcdec$O src$Psymcipher$Paes_small_cbcdec.c + +-$(OBJDIR)$Paes_small_cbcenc$O: src$Psymcipher$Paes_small_cbcenc.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_small_cbcenc$O: $(OBJDIR) src$Psymcipher$Paes_small_cbcenc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_small_cbcenc$O src$Psymcipher$Paes_small_cbcenc.c + +-$(OBJDIR)$Paes_small_ctr$O: src$Psymcipher$Paes_small_ctr.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_small_ctr$O: $(OBJDIR) src$Psymcipher$Paes_small_ctr.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_small_ctr$O src$Psymcipher$Paes_small_ctr.c + +-$(OBJDIR)$Paes_small_ctrcbc$O: src$Psymcipher$Paes_small_ctrcbc.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_small_ctrcbc$O: $(OBJDIR) src$Psymcipher$Paes_small_ctrcbc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_small_ctrcbc$O src$Psymcipher$Paes_small_ctrcbc.c + +-$(OBJDIR)$Paes_small_dec$O: src$Psymcipher$Paes_small_dec.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_small_dec$O: $(OBJDIR) src$Psymcipher$Paes_small_dec.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_small_dec$O src$Psymcipher$Paes_small_dec.c + +-$(OBJDIR)$Paes_small_enc$O: src$Psymcipher$Paes_small_enc.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_small_enc$O: $(OBJDIR) src$Psymcipher$Paes_small_enc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_small_enc$O src$Psymcipher$Paes_small_enc.c + +-$(OBJDIR)$Paes_x86ni$O: src$Psymcipher$Paes_x86ni.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_x86ni$O: $(OBJDIR) src$Psymcipher$Paes_x86ni.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_x86ni$O src$Psymcipher$Paes_x86ni.c + +-$(OBJDIR)$Paes_x86ni_cbcdec$O: src$Psymcipher$Paes_x86ni_cbcdec.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_x86ni_cbcdec$O: $(OBJDIR) src$Psymcipher$Paes_x86ni_cbcdec.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_x86ni_cbcdec$O src$Psymcipher$Paes_x86ni_cbcdec.c + +-$(OBJDIR)$Paes_x86ni_cbcenc$O: src$Psymcipher$Paes_x86ni_cbcenc.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_x86ni_cbcenc$O: $(OBJDIR) src$Psymcipher$Paes_x86ni_cbcenc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_x86ni_cbcenc$O src$Psymcipher$Paes_x86ni_cbcenc.c + +-$(OBJDIR)$Paes_x86ni_ctr$O: src$Psymcipher$Paes_x86ni_ctr.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_x86ni_ctr$O: $(OBJDIR) src$Psymcipher$Paes_x86ni_ctr.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_x86ni_ctr$O src$Psymcipher$Paes_x86ni_ctr.c + +-$(OBJDIR)$Paes_x86ni_ctrcbc$O: src$Psymcipher$Paes_x86ni_ctrcbc.c $(HEADERSPRIV) ++$(OBJDIR)$Paes_x86ni_ctrcbc$O: $(OBJDIR) src$Psymcipher$Paes_x86ni_ctrcbc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Paes_x86ni_ctrcbc$O src$Psymcipher$Paes_x86ni_ctrcbc.c + +-$(OBJDIR)$Pchacha20_ct$O: src$Psymcipher$Pchacha20_ct.c $(HEADERSPRIV) ++$(OBJDIR)$Pchacha20_ct$O: $(OBJDIR) src$Psymcipher$Pchacha20_ct.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pchacha20_ct$O src$Psymcipher$Pchacha20_ct.c + +-$(OBJDIR)$Pchacha20_sse2$O: src$Psymcipher$Pchacha20_sse2.c $(HEADERSPRIV) ++$(OBJDIR)$Pchacha20_sse2$O: $(OBJDIR) src$Psymcipher$Pchacha20_sse2.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pchacha20_sse2$O src$Psymcipher$Pchacha20_sse2.c + +-$(OBJDIR)$Pdes_ct$O: src$Psymcipher$Pdes_ct.c $(HEADERSPRIV) ++$(OBJDIR)$Pdes_ct$O: $(OBJDIR) src$Psymcipher$Pdes_ct.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pdes_ct$O src$Psymcipher$Pdes_ct.c + +-$(OBJDIR)$Pdes_ct_cbcdec$O: src$Psymcipher$Pdes_ct_cbcdec.c $(HEADERSPRIV) ++$(OBJDIR)$Pdes_ct_cbcdec$O: $(OBJDIR) src$Psymcipher$Pdes_ct_cbcdec.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pdes_ct_cbcdec$O src$Psymcipher$Pdes_ct_cbcdec.c + +-$(OBJDIR)$Pdes_ct_cbcenc$O: src$Psymcipher$Pdes_ct_cbcenc.c $(HEADERSPRIV) ++$(OBJDIR)$Pdes_ct_cbcenc$O: $(OBJDIR) src$Psymcipher$Pdes_ct_cbcenc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pdes_ct_cbcenc$O src$Psymcipher$Pdes_ct_cbcenc.c + +-$(OBJDIR)$Pdes_support$O: src$Psymcipher$Pdes_support.c $(HEADERSPRIV) ++$(OBJDIR)$Pdes_support$O: $(OBJDIR) src$Psymcipher$Pdes_support.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pdes_support$O src$Psymcipher$Pdes_support.c + +-$(OBJDIR)$Pdes_tab$O: src$Psymcipher$Pdes_tab.c $(HEADERSPRIV) ++$(OBJDIR)$Pdes_tab$O: $(OBJDIR) src$Psymcipher$Pdes_tab.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pdes_tab$O src$Psymcipher$Pdes_tab.c + +-$(OBJDIR)$Pdes_tab_cbcdec$O: src$Psymcipher$Pdes_tab_cbcdec.c $(HEADERSPRIV) ++$(OBJDIR)$Pdes_tab_cbcdec$O: $(OBJDIR) src$Psymcipher$Pdes_tab_cbcdec.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pdes_tab_cbcdec$O src$Psymcipher$Pdes_tab_cbcdec.c + +-$(OBJDIR)$Pdes_tab_cbcenc$O: src$Psymcipher$Pdes_tab_cbcenc.c $(HEADERSPRIV) ++$(OBJDIR)$Pdes_tab_cbcenc$O: $(OBJDIR) src$Psymcipher$Pdes_tab_cbcenc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pdes_tab_cbcenc$O src$Psymcipher$Pdes_tab_cbcenc.c + +-$(OBJDIR)$Ppoly1305_ctmul$O: src$Psymcipher$Ppoly1305_ctmul.c $(HEADERSPRIV) ++$(OBJDIR)$Ppoly1305_ctmul$O: $(OBJDIR) src$Psymcipher$Ppoly1305_ctmul.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Ppoly1305_ctmul$O src$Psymcipher$Ppoly1305_ctmul.c + +-$(OBJDIR)$Ppoly1305_ctmul32$O: src$Psymcipher$Ppoly1305_ctmul32.c $(HEADERSPRIV) ++$(OBJDIR)$Ppoly1305_ctmul32$O: $(OBJDIR) src$Psymcipher$Ppoly1305_ctmul32.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Ppoly1305_ctmul32$O src$Psymcipher$Ppoly1305_ctmul32.c + +-$(OBJDIR)$Ppoly1305_ctmulq$O: src$Psymcipher$Ppoly1305_ctmulq.c $(HEADERSPRIV) ++$(OBJDIR)$Ppoly1305_ctmulq$O: $(OBJDIR) src$Psymcipher$Ppoly1305_ctmulq.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Ppoly1305_ctmulq$O src$Psymcipher$Ppoly1305_ctmulq.c + +-$(OBJDIR)$Ppoly1305_i15$O: src$Psymcipher$Ppoly1305_i15.c $(HEADERSPRIV) ++$(OBJDIR)$Ppoly1305_i15$O: $(OBJDIR) src$Psymcipher$Ppoly1305_i15.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Ppoly1305_i15$O src$Psymcipher$Ppoly1305_i15.c + +-$(OBJDIR)$Pasn1enc$O: src$Px509$Pasn1enc.c $(HEADERSPRIV) ++$(OBJDIR)$Pasn1enc$O: $(OBJDIR) src$Px509$Pasn1enc.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pasn1enc$O src$Px509$Pasn1enc.c + +-$(OBJDIR)$Pencode_ec_pk8der$O: src$Px509$Pencode_ec_pk8der.c $(HEADERSPRIV) ++$(OBJDIR)$Pencode_ec_pk8der$O: $(OBJDIR) src$Px509$Pencode_ec_pk8der.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pencode_ec_pk8der$O src$Px509$Pencode_ec_pk8der.c + +-$(OBJDIR)$Pencode_ec_rawder$O: src$Px509$Pencode_ec_rawder.c $(HEADERSPRIV) ++$(OBJDIR)$Pencode_ec_rawder$O: $(OBJDIR) src$Px509$Pencode_ec_rawder.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pencode_ec_rawder$O src$Px509$Pencode_ec_rawder.c + +-$(OBJDIR)$Pencode_rsa_pk8der$O: src$Px509$Pencode_rsa_pk8der.c $(HEADERSPRIV) ++$(OBJDIR)$Pencode_rsa_pk8der$O: $(OBJDIR) src$Px509$Pencode_rsa_pk8der.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pencode_rsa_pk8der$O src$Px509$Pencode_rsa_pk8der.c + +-$(OBJDIR)$Pencode_rsa_rawder$O: src$Px509$Pencode_rsa_rawder.c $(HEADERSPRIV) ++$(OBJDIR)$Pencode_rsa_rawder$O: $(OBJDIR) src$Px509$Pencode_rsa_rawder.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pencode_rsa_rawder$O src$Px509$Pencode_rsa_rawder.c + +-$(OBJDIR)$Pskey_decoder$O: src$Px509$Pskey_decoder.c $(HEADERSPRIV) ++$(OBJDIR)$Pskey_decoder$O: $(OBJDIR) src$Px509$Pskey_decoder.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pskey_decoder$O src$Px509$Pskey_decoder.c + +-$(OBJDIR)$Px509_decoder$O: src$Px509$Px509_decoder.c $(HEADERSPRIV) ++$(OBJDIR)$Px509_decoder$O: $(OBJDIR) src$Px509$Px509_decoder.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Px509_decoder$O src$Px509$Px509_decoder.c + +-$(OBJDIR)$Px509_knownkey$O: src$Px509$Px509_knownkey.c $(HEADERSPRIV) ++$(OBJDIR)$Px509_knownkey$O: $(OBJDIR) src$Px509$Px509_knownkey.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Px509_knownkey$O src$Px509$Px509_knownkey.c + +-$(OBJDIR)$Px509_minimal$O: src$Px509$Px509_minimal.c $(HEADERSPRIV) ++$(OBJDIR)$Px509_minimal$O: $(OBJDIR) src$Px509$Px509_minimal.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Px509_minimal$O src$Px509$Px509_minimal.c + +-$(OBJDIR)$Px509_minimal_full$O: src$Px509$Px509_minimal_full.c $(HEADERSPRIV) ++$(OBJDIR)$Px509_minimal_full$O: $(OBJDIR) src$Px509$Px509_minimal_full.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Px509_minimal_full$O src$Px509$Px509_minimal_full.c + +-$(OBJDIR)$Pbrssl$O: tools$Pbrssl.c $(HEADERSTOOLS) ++$(OBJDIR)$Pbrssl$O: $(OBJDIR) tools$Pbrssl.c $(HEADERSTOOLS) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pbrssl$O tools$Pbrssl.c + +-$(OBJDIR)$Pcerts$O: tools$Pcerts.c $(HEADERSTOOLS) ++$(OBJDIR)$Pcerts$O: $(OBJDIR) tools$Pcerts.c $(HEADERSTOOLS) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pcerts$O tools$Pcerts.c + +-$(OBJDIR)$Pchain$O: tools$Pchain.c $(HEADERSTOOLS) ++$(OBJDIR)$Pchain$O: $(OBJDIR) tools$Pchain.c $(HEADERSTOOLS) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pchain$O tools$Pchain.c + +-$(OBJDIR)$Pclient$O: tools$Pclient.c $(HEADERSTOOLS) ++$(OBJDIR)$Pclient$O: $(OBJDIR) tools$Pclient.c $(HEADERSTOOLS) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pclient$O tools$Pclient.c + +-$(OBJDIR)$Perrors$O: tools$Perrors.c $(HEADERSTOOLS) ++$(OBJDIR)$Perrors$O: $(OBJDIR) tools$Perrors.c $(HEADERSTOOLS) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Perrors$O tools$Perrors.c + +-$(OBJDIR)$Pfiles$O: tools$Pfiles.c $(HEADERSTOOLS) ++$(OBJDIR)$Pfiles$O: $(OBJDIR) tools$Pfiles.c $(HEADERSTOOLS) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pfiles$O tools$Pfiles.c + +-$(OBJDIR)$Pimpl$O: tools$Pimpl.c $(HEADERSTOOLS) ++$(OBJDIR)$Pimpl$O: $(OBJDIR) tools$Pimpl.c $(HEADERSTOOLS) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pimpl$O tools$Pimpl.c + +-$(OBJDIR)$Pkeys$O: tools$Pkeys.c $(HEADERSTOOLS) ++$(OBJDIR)$Pkeys$O: $(OBJDIR) tools$Pkeys.c $(HEADERSTOOLS) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pkeys$O tools$Pkeys.c + +-$(OBJDIR)$Pnames$O: tools$Pnames.c $(HEADERSTOOLS) ++$(OBJDIR)$Pnames$O: $(OBJDIR) tools$Pnames.c $(HEADERSTOOLS) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pnames$O tools$Pnames.c + +-$(OBJDIR)$Pserver$O: tools$Pserver.c $(HEADERSTOOLS) ++$(OBJDIR)$Pserver$O: $(OBJDIR) tools$Pserver.c $(HEADERSTOOLS) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pserver$O tools$Pserver.c + +-$(OBJDIR)$Pskey$O: tools$Pskey.c $(HEADERSTOOLS) ++$(OBJDIR)$Pskey$O: $(OBJDIR) tools$Pskey.c $(HEADERSTOOLS) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pskey$O tools$Pskey.c + +-$(OBJDIR)$Psslio$O: tools$Psslio.c $(HEADERSTOOLS) ++$(OBJDIR)$Psslio$O: $(OBJDIR) tools$Psslio.c $(HEADERSTOOLS) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Psslio$O tools$Psslio.c + +-$(OBJDIR)$Pta$O: tools$Pta.c $(HEADERSTOOLS) ++$(OBJDIR)$Pta$O: $(OBJDIR) tools$Pta.c $(HEADERSTOOLS) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pta$O tools$Pta.c + +-$(OBJDIR)$Ptwrch$O: tools$Ptwrch.c $(HEADERSTOOLS) ++$(OBJDIR)$Ptwrch$O: $(OBJDIR) tools$Ptwrch.c $(HEADERSTOOLS) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Ptwrch$O tools$Ptwrch.c + +-$(OBJDIR)$Pvector$O: tools$Pvector.c $(HEADERSTOOLS) ++$(OBJDIR)$Pvector$O: $(OBJDIR) tools$Pvector.c $(HEADERSTOOLS) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pvector$O tools$Pvector.c + +-$(OBJDIR)$Pverify$O: tools$Pverify.c $(HEADERSTOOLS) ++$(OBJDIR)$Pverify$O: $(OBJDIR) tools$Pverify.c $(HEADERSTOOLS) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pverify$O tools$Pverify.c + +-$(OBJDIR)$Pxmem$O: tools$Pxmem.c $(HEADERSTOOLS) ++$(OBJDIR)$Pxmem$O: $(OBJDIR) tools$Pxmem.c $(HEADERSTOOLS) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Pxmem$O tools$Pxmem.c + +-$(OBJDIR)$Ptest_crypto$O: test$Ptest_crypto.c $(HEADERSPRIV) ++$(OBJDIR)$Ptest_crypto$O: $(OBJDIR) test$Ptest_crypto.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Ptest_crypto$O test$Ptest_crypto.c + +-$(OBJDIR)$Ptest_speed$O: test$Ptest_speed.c $(HEADERSPRIV) ++$(OBJDIR)$Ptest_speed$O: $(OBJDIR) test$Ptest_speed.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$Ptest_speed$O test$Ptest_speed.c + +-$(OBJDIR)$Ptest_x509$O: test$Ptest_x509.c $(HEADERSPRIV) ++$(OBJDIR)$Ptest_x509$O: $(OBJDIR) test$Ptest_x509.c $(HEADERSPRIV) + $(CC) $(CFLAGS) $(INCFLAGS) -DSRCDIRNAME=".." $(CCOUT)$(OBJDIR)$Ptest_x509$O test$Ptest_x509.c +diff --git a/mk/mkrules.sh b/mk/mkrules.sh +index eea159b..cce7564 100755 +--- a/mk/mkrules.sh ++++ b/mk/mkrules.sh +@@ -531,23 +531,23 @@ EOF + (for f in $coresrc ; do + b="$(basename "$f" .c)\$O" + g="$(escsep "$f")" +- printf '\n$(OBJDIR)$P%s: %s $(HEADERSPRIV)\n\t$(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$P%s %s\n' "$b" "$g" "$b" "$g" ++ printf '\n$(OBJDIR)$P%s: $(OBJDIR) %s $(HEADERSPRIV)\n\t$(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$P%s %s\n' "$b" "$g" "$b" "$g" + done + + for f in $toolssrc ; do + b="$(basename "$f" .c)\$O" + g="$(escsep "$f")" +- printf '\n$(OBJDIR)$P%s: %s $(HEADERSTOOLS)\n\t$(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$P%s %s\n' "$b" "$g" "$b" "$g" ++ printf '\n$(OBJDIR)$P%s: $(OBJDIR) %s $(HEADERSTOOLS)\n\t$(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$P%s %s\n' "$b" "$g" "$b" "$g" + done + + for f in $testcryptosrc $testspeedsrc ; do + b="$(basename "$f" .c)\$O" + g="$(escsep "$f")" +- printf '\n$(OBJDIR)$P%s: %s $(HEADERSPRIV)\n\t$(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$P%s %s\n' "$b" "$g" "$b" "$g" ++ printf '\n$(OBJDIR)$P%s: $(OBJDIR) %s $(HEADERSPRIV)\n\t$(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$P%s %s\n' "$b" "$g" "$b" "$g" + done + + for f in $testx509src ; do + b="$(basename "$f" .c)\$O" + g="$(escsep "$f")" +- printf '\n$(OBJDIR)$P%s: %s $(HEADERSPRIV)\n\t$(CC) $(CFLAGS) $(INCFLAGS) -DSRCDIRNAME=".." $(CCOUT)$(OBJDIR)$P%s %s\n' "$b" "$g" "$b" "$g" ++ printf '\n$(OBJDIR)$P%s: $(OBJDIR) %s $(HEADERSPRIV)\n\t$(CC) $(CFLAGS) $(INCFLAGS) -DSRCDIRNAME=".." $(CCOUT)$(OBJDIR)$P%s %s\n' "$b" "$g" "$b" "$g" + done) >> Rules.mk +-- +2.34.1 + diff --git a/package/bearssl/Config.in b/package/bearssl/Config.in new file mode 100644 index 00000000..b10ce602 --- /dev/null +++ b/package/bearssl/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_BEARSSL + bool "bearssl" + help + BearSSL is an implementation of the SSL/TLS protocol + (RFC 5246) written in C. + + https://bearssl.org diff --git a/package/bearssl/bearssl.hash b/package/bearssl/bearssl.hash new file mode 100644 index 00000000..e0007626 --- /dev/null +++ b/package/bearssl/bearssl.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 6705bba1714961b41a728dfc5debbe348d2966c117649392f8c8139efc83ff14 bearssl-0.6.tar.gz +sha256 771bf18c8633ea69ec9b07d2e604c4b99b7bef41b0f5ce6385d24df4448f61ca LICENSE.txt diff --git a/package/bearssl/bearssl.mk b/package/bearssl/bearssl.mk new file mode 100644 index 00000000..ff5f4e87 --- /dev/null +++ b/package/bearssl/bearssl.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# bearssl +# +################################################################################ + +BEARSSL_VERSION = 0.6 +BEARSSL_SITE = https://bearssl.org +BEARSSL_LICENSE = MIT +BEARSSL_LICENSE_FILES = LICENSE.txt +BEARSSL_INSTALL_STAGING = YES + +BEARSSL_MAKE_OPTS = \ + $(TARGET_CONFIGURE_OPTS) \ + LDDLL=$(TARGET_CC) + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +BEARSSL_TARGETS += dll +BEARSSL_MAKE_OPTS += CFLAGS="$(TARGET_CFLAGS) -fPIC" +endif + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +BEARSSL_TARGETS += lib +endif + +define BEARSSL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(BEARSSL_MAKE_OPTS) -C $(@D) \ + $(BEARSSL_TARGETS) +endef + +define BEARSSL_INSTALL_STAGING_CMDS + mkdir -p $(STAGING_DIR)/usr/include + cp -dpfr $(@D)/inc/*.h $(STAGING_DIR)/usr/include + mkdir -p $(STAGING_DIR)/usr/lib + cp -dpfr $(@D)/build/lib* $(STAGING_DIR)/usr/lib +endef + +define BEARSSL_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/lib + cp -dpfr $(@D)/build/lib* $(TARGET_DIR)/usr/lib +endef + +$(eval $(generic-package)) diff --git a/package/belle-sip/Config.in b/package/belle-sip/Config.in new file mode 100644 index 00000000..8e4de366 --- /dev/null +++ b/package/belle-sip/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_BELLE_SIP + bool "belle-sip" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # bctoolbox + depends on BR2_USE_WCHAR + select BR2_PACKAGE_BCTOOLBOX + # needs crypto support in bctoolbox + select BR2_PACKAGE_MBEDTLS + help + Belle-sip is a modern library implementing SIP (RFC 3261) + transport, transaction and dialog layers. + + http://www.linphone.org/technical-corner/belle-sip + +comment "belle-sip needs a toolchain w/ threads, C++, dynamic library, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR + +comment "belle-sip needs a toolchain not affected by GCC bug 64735" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/belle-sip/belle-sip.hash b/package/belle-sip/belle-sip.hash new file mode 100644 index 00000000..670ce006 --- /dev/null +++ b/package/belle-sip/belle-sip.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 eabba615c97080572c1b9d3c76f8f9cf6a7432eedf37482672e5fa178a688f72 belle-sip-4.4.8.tar.gz +sha256 1b3782ccad7b8614100cda30d3faf42fc39f2e97932908c543005053b654ca68 LICENSE.txt diff --git a/package/belle-sip/belle-sip.mk b/package/belle-sip/belle-sip.mk new file mode 100644 index 00000000..c9bcc3f5 --- /dev/null +++ b/package/belle-sip/belle-sip.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# belle-sip +# +################################################################################ + +BELLE_SIP_VERSION = 4.4.8 +BELLE_SIP_SITE = \ + https://gitlab.linphone.org/BC/public/belle-sip/-/archive/$(BELLE_SIP_VERSION) +BELLE_SIP_LICENSE = GPL-3.0+ +BELLE_SIP_LICENSE_FILES = LICENSE.txt +BELLE_SIP_CPE_ID_VENDOR = linphone +BELLE_SIP_INSTALL_STAGING = YES +BELLE_SIP_DEPENDENCIES = \ + bctoolbox \ + $(if $(BR2_PACKAGE_ZLIB),zlib) +BELLE_SIP_CONF_OPTS = \ + -DENABLE_STRICT=OFF \ + -DENABLE_TESTS=OFF + +ifeq ($(BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY),y) +BELLE_SIP_CONF_OPTS += -DENABLE_MDNS=ON +BELLE_SIP_DEPENDENCIES += avahi +else +BELLE_SIP_CONF_OPTS += -DENABLE_MDNS=OFF +endif + +ifeq ($(BR2_STATIC_LIBS),y) +BELLE_SIP_CONF_OPTS += -DENABLE_SHARED=OFF -DENABLE_STATIC=ON +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +BELLE_SIP_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=ON +else ifeq ($(BR2_SHARED_LIBS),y) +BELLE_SIP_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=OFF +endif + +BELLE_SIP_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_99410),y) +BELLE_SIP_CFLAGS += -O0 +endif + +BELLE_SIP_CONF_OPTS += -DCMAKE_C_FLAGS="$(BELLE_SIP_CFLAGS)" + +$(eval $(cmake-package)) diff --git a/package/belr/Config.in b/package/belr/Config.in new file mode 100644 index 00000000..f3f742ad --- /dev/null +++ b/package/belr/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_BELR + bool "belr" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # bctoolbox + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # bctoolbox + select BR2_PACKAGE_BCTOOLBOX + help + Belr is Belledonne Communications' language recognition + library, written in C++11. It parses text inputs formatted + according to a language defined by an ABNF grammar, such as + the protocols standardized at IETF. + + https://gitlab.linphone.org/BC/public/belr + +comment "belr needs a toolchain w/ threads, C++" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + +comment "belr needs a toolchain not affected by GCC bug 64735" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/belr/belr.hash b/package/belr/belr.hash new file mode 100644 index 00000000..00c733c7 --- /dev/null +++ b/package/belr/belr.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 6358aa680193d972c831d677da1652c7f57d7e00649b971d4d9fbdebf4331b48 belr-4.4.8.tar.gz +sha256 1b3782ccad7b8614100cda30d3faf42fc39f2e97932908c543005053b654ca68 LICENSE.txt diff --git a/package/belr/belr.mk b/package/belr/belr.mk new file mode 100644 index 00000000..26b94973 --- /dev/null +++ b/package/belr/belr.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# belr +# +################################################################################ + +BELR_VERSION = 4.4.8 +BELR_SITE = https://gitlab.linphone.org/BC/public/belr/-/archive/$(BELR_VERSION) +BELR_LICENSE = GPL-3.0+ +BELR_LICENSE_FILES = LICENSE.txt +BELR_INSTALL_STAGING = YES +BELR_DEPENDENCIES = bctoolbox +BELR_CONF_OPTS = \ + -DENABLE_STRICT=OFF \ + -DENABLE_TESTS=OFF \ + -DENABLE_TOOLS=OFF + +ifeq ($(BR2_STATIC_LIBS),y) +BELR_CONF_OPTS += -DENABLE_SHARED=OFF -DENABLE_STATIC=ON +else +# cannot build static and shared together +BELR_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/benejson/0001-c-std.patch b/package/benejson/0001-c-std.patch new file mode 100644 index 00000000..2330b790 --- /dev/null +++ b/package/benejson/0001-c-std.patch @@ -0,0 +1,22 @@ +Some older toolchains do not recognize c11 as a valid standard. +Since the code actually builds well with c99, use that instead. + +The only two non-standard features used are // comments +and for(int i ...) declarations in C. + +Signed-off-by: Alex Suykov + +--- a/SConstruct ++++ b/SConstruct +@@ -9,9 +9,8 @@ mydir = os.getcwd() + #Set default C++ building flags for both libraries and executables + default_env = Environment(ENV = os.environ) + default_env.Append(CPPPATH = [mydir + '/include']) +-default_env.Append(CCFLAGS = ' -Wall -pedantic') +-default_env.Append(CFLAGS = ' -std=c11') +-default_env.Append(CXXFLAGS = ' -std=c++11') ++default_env.Append(CFLAGS = ' -Wall') ++default_env.Append(CFLAGS = ' -std=c99') + #default_env.Append(CCFLAGS = ' -O2 -fomit-frame-pointer') + default_env.Append(CCFLAGS = ' -O0 -g') + diff --git a/package/benejson/0002-Use-print-as-a-function-for-Py3-compatibility.patch b/package/benejson/0002-Use-print-as-a-function-for-Py3-compatibility.patch new file mode 100644 index 00000000..287d7bf0 --- /dev/null +++ b/package/benejson/0002-Use-print-as-a-function-for-Py3-compatibility.patch @@ -0,0 +1,31 @@ +Use print as a function in SConstruct build file for Py3 compatibility. +This allow to run SCons on Python 3 + +[Upstream status: https://github.com/codehero/benejson/pull/12] + +Signed-off-by: Titouan Christophe +--- + benejson/SConscript | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/benejson/SConscript b/benejson/SConscript +index b7c5d10..80b4875 100644 +--- a/benejson/SConscript ++++ b/benejson/SConscript +@@ -9,11 +9,11 @@ lib_env = lib_env.Clone() + conf = Configure(lib_env) + + if not conf.CheckFunc("stpcpy"): +- print "Did not find stpcpy(), using bnj local version" ++ print("Did not find stpcpy(), using bnj local version") + conf.env.Append(CPPDEFINES = ["-Dstpcpy=bnj_local_stpcpy"]) + + if not conf.CheckFunc("stpncpy"): +- print "Did not find stpncpy(), using bnj local version" ++ print("Did not find stpncpy(), using bnj local version") + conf.env.Append(CPPDEFINES = ["-Dstpncpy=bnj_local_stpncpy"]) + lib_env = conf.Finish() + +-- +2.21.0 + diff --git a/package/benejson/Config.in b/package/benejson/Config.in new file mode 100644 index 00000000..cb86d672 --- /dev/null +++ b/package/benejson/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_BENEJSON + bool "benejson" + depends on BR2_INSTALL_LIBSTDCPP + help + benejson is a buffering SAX-style JSON parser library. + The library package contains 3 major components: + + - benejson.js: SAX-style parser written in Javascript + - PullParser: A C++ class for JSON pull parsing + - Core: The parsing core with minimal dependencies + + https://codehero.github.io/benejson/ + +comment "benejson needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/benejson/benejson.hash b/package/benejson/benejson.hash new file mode 100644 index 00000000..437e1d9d --- /dev/null +++ b/package/benejson/benejson.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 2ce5f3c2323500bdf651e7fcaecbd1011997141e6067567b8d2caa4cf7182f4a benejson-0.9.7.tar.gz +sha256 d0b7dae881fcb18c4dddfd8b0c1643ae671d5f356d14ba5b4e95ca889cc9ec32 LICENSE diff --git a/package/benejson/benejson.mk b/package/benejson/benejson.mk new file mode 100644 index 00000000..680e5b5b --- /dev/null +++ b/package/benejson/benejson.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# benejson +# +################################################################################ + +BENEJSON_VERSION = 0.9.7 +BENEJSON_SITE = $(call github,codehero,benejson,$(BENEJSON_VERSION)) +BENEJSON_LICENSE = MIT +BENEJSON_LICENSE_FILES = LICENSE +BENEJSON_INSTALL_STAGING = YES +BENEJSON_DEPENDENCIES = host-scons + +# wchar support needs to be manually disabled +ifeq ($(BR2_USE_WCHAR),) +define BENEJSON_DISABLE_WCHAR + $(SED) 's,^#define BNJ_WCHAR_SUPPORT,#undef BNJ_WCHAR_SUPPORT,' \ + $(@D)/benejson/benejson.h +endef +BENEJSON_POST_PATCH_HOOKS += BENEJSON_DISABLE_WCHAR +endif + +BENEJSON_SCONS_TARGETS = include + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +BENEJSON_SCONS_TARGETS += lib/libbenejson.a +define BENEJSON_INSTALL_STATIC_LIB + $(INSTALL) -D -m 0644 $(@D)/lib/libbenejson.a \ + $(1)/usr/lib/libbenejson.a +endef +endif # Static enabled + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +BENEJSON_SCONS_TARGETS += lib/libbenejson.so +define BENEJSON_INSTALL_SHARED_LIB + $(INSTALL) -D -m 0644 $(@D)/lib/libbenejson.so \ + $(1)/usr/lib/libbenejson.so +endef +endif # Shared enabled + +define BENEJSON_BUILD_CMDS + (cd $(@D); \ + $(TARGET_CONFIGURE_OPTS) CROSS=$(TARGET_CROSS) \ + $(SCONS) $(BENEJSON_SCONS_TARGETS)) +endef + +define BENEJSON_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0644 $(@D)/include/benejson/benejson.h \ + $(STAGING_DIR)/usr/include/benejson/benejson.h; \ + $(INSTALL) -D -m 0644 $(@D)/include/benejson/pull.hh \ + $(STAGING_DIR)/usr/include/benejson/pull.hh + $(call BENEJSON_INSTALL_STATIC_LIB,$(STAGING_DIR)) + $(call BENEJSON_INSTALL_SHARED_LIB,$(STAGING_DIR)) +endef + +define BENEJSON_INSTALL_TARGET_CMDS + $(call BENEJSON_INSTALL_SHARED_LIB,$(TARGET_DIR)) +endef + +$(eval $(generic-package)) diff --git a/package/bento4/Config.in b/package/bento4/Config.in new file mode 100644 index 00000000..5b9eb127 --- /dev/null +++ b/package/bento4/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_BENTO4 + bool "bento4" + depends on BR2_INSTALL_LIBSTDCPP + help + Bento4 is a C++ class library designed to read and write + ISO-MP4 files. + + https://www.bento4.com/ + +comment "bento4 support needs a toolchain with C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/bento4/bento4.hash b/package/bento4/bento4.hash new file mode 100644 index 00000000..b933c74d --- /dev/null +++ b/package/bento4/bento4.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 f1f8cfa4f7cb651b609e587f825607cb4b06fe5b08af876fd0154a434f9a5315 bento4-1.6.0-641-Omega.tar.gz +sha256 7daae92c8628ada28def8d096fe2fde298b72ec3e2d64a3c408afce38edb361b Documents/LICENSE.txt diff --git a/package/bento4/bento4.mk b/package/bento4/bento4.mk new file mode 100644 index 00000000..569e320a --- /dev/null +++ b/package/bento4/bento4.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# bento4 +# +################################################################################ + +BENTO4_VERSION = 1.6.0-641-Omega +BENTO4_SITE = $(call github,xbmc,Bento4,$(BENTO4_VERSION)) +BENTO4_INSTALL_STAGING = YES +BENTO4_LICENSE = GPL-2.0+ +BENTO4_LICENSE_FILES = Documents/LICENSE.txt +BENTO4_CPE_ID_VENDOR = axiosys + +# Source/C++/Core/Ap4Config.h +ifeq ($(BR2_ENDIAN),"BIG") +BENTO4_BYTE_ORDER = 0 +else +BENTO4_BYTE_ORDER = 1 +endif + +BENTO4_CONF_OPTS += \ + -DBUILD_APPS=OFF \ + -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) -std=c++11 -fPIC -DAP4_PLATFORM_BYTE_ORDER=$(BENTO4_BYTE_ORDER)" + +$(eval $(cmake-package)) diff --git a/package/berkeleydb/0001-cwd-db_config.patch b/package/berkeleydb/0001-cwd-db_config.patch new file mode 100644 index 00000000..08ce5a39 --- /dev/null +++ b/package/berkeleydb/0001-cwd-db_config.patch @@ -0,0 +1,21 @@ +Do not access DB_CONFIG when db_home is not set + +Fixes CVE-2017-10140: +https://bugzilla.redhat.com/show_bug.cgi?id=1464032#c9 + +Downloaded from +http://pkgs.fedoraproject.org/cgit/rpms/libdb.git/commit/?id=8047fa8580659fcae740c25e91b490539b8453eb + +Signed-off-by: Bernd Kuhls + +--- db-5.3.28/src/env/env_open.c.old 2017-06-26 10:32:11.011419981 +0200 ++++ db-5.3.28/src/env/env_open.c 2017-06-26 10:32:46.893721233 +0200 +@@ -473,7 +473,7 @@ + env->db_mode = mode == 0 ? DB_MODE_660 : mode; + + /* Read the DB_CONFIG file. */ +- if ((ret = __env_read_db_config(env)) != 0) ++ if (env->db_home != NULL && (ret = __env_read_db_config(env)) != 0) + return (ret); + + /* diff --git a/package/berkeleydb/0002-atomic_compare_exchange.patch b/package/berkeleydb/0002-atomic_compare_exchange.patch new file mode 100644 index 00000000..81e18ac9 --- /dev/null +++ b/package/berkeleydb/0002-atomic_compare_exchange.patch @@ -0,0 +1,27 @@ +Rename __atomic_compare_exchange to not clash with gcc built-in + +Downloaded from +https://src.fedoraproject.org/cgit/rpms/libdb.git/commit/?id=d6841b3b46a51db98c162347211a5a64d154ea37 + +Signed-off-by: Bernd Kuhls + +--- db-5.3.28/src/dbinc/atomic.h.old 2018-05-23 09:20:04.216914922 +0200 ++++ db-5.3.28/src/dbinc/atomic.h 2018-05-23 09:20:49.510057897 +0200 +@@ -144,7 +144,7 @@ + #define atomic_inc(env, p) __atomic_inc(p) + #define atomic_dec(env, p) __atomic_dec(p) + #define atomic_compare_exchange(env, p, o, n) \ +- __atomic_compare_exchange((p), (o), (n)) ++ __db_atomic_compare_exchange((p), (o), (n)) + static inline int __atomic_inc(db_atomic_t *p) + { + int temp; +@@ -176,7 +176,7 @@ + * http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html + * which configure could be changed to use. + */ +-static inline int __atomic_compare_exchange( ++static inline int __db_atomic_compare_exchange( + db_atomic_t *p, atomic_value_t oldval, atomic_value_t newval) + { + atomic_value_t was; diff --git a/package/berkeleydb/Config.in b/package/berkeleydb/Config.in new file mode 100644 index 00000000..f8fbb5cc --- /dev/null +++ b/package/berkeleydb/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_BERKELEYDB + bool "berkeleydb" + help + The Berkeley database. A very common library for + database applications. + + http://www.sleepycat.com/products/db.shtml + +if BR2_PACKAGE_BERKELEYDB + +config BR2_PACKAGE_BERKELEYDB_COMPAT185 + bool "DB 1.85 compatibility" + help + Build and install DB 1.85 compatibility API. + +config BR2_PACKAGE_BERKELEYDB_DBM + bool "historic dbm interface" + help + Enable the historic dbm interface. + +config BR2_PACKAGE_BERKELEYDB_TOOLS + bool "install tools" + help + Install berkeleydb tools, mostly useful for debugging + purposes. + +endif diff --git a/package/berkeleydb/berkeleydb.hash b/package/berkeleydb/berkeleydb.hash new file mode 100644 index 00000000..7fbf9492 --- /dev/null +++ b/package/berkeleydb/berkeleydb.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 76a25560d9e52a198d37a31440fd07632b5f1f8f9f2b6d5438f4bc3e7c9013ef db-5.3.28.NC.tar.gz +sha256 b78815181a53241f9347c6b47d1031fd669946f863e1edc807a291354cec024b LICENSE diff --git a/package/berkeleydb/berkeleydb.mk b/package/berkeleydb/berkeleydb.mk new file mode 100644 index 00000000..1c121370 --- /dev/null +++ b/package/berkeleydb/berkeleydb.mk @@ -0,0 +1,83 @@ +################################################################################ +# +# berkeleydb +# +################################################################################ + +# Since BerkeleyDB version 6 and above are licensed under the Affero +# GPL (AGPL), we want to keep this 'bdb' package at version 5.x to +# avoid licensing issues. +# BerkeleyDB version 6 or above should be provided by a dedicated +# package instead. +BERKELEYDB_VERSION = 5.3.28 +BERKELEYDB_SITE = http://download.oracle.com/berkeley-db +BERKELEYDB_SOURCE = db-$(BERKELEYDB_VERSION).NC.tar.gz +BERKELEYDB_SUBDIR = build_unix +BERKELEYDB_LICENSE = BerkeleyDB License +BERKELEYDB_LICENSE_FILES = LICENSE +BERKELEYDB_CPE_ID_VENDOR = oracle +BERKELEYDB_CPE_ID_PRODUCT = berkeley_db +BERKELEYDB_INSTALL_STAGING = YES +BERKELEYDB_BINARIES = db_archive db_checkpoint db_deadlock db_dump \ + db_hotbackup db_load db_log_verify db_printlog db_recover db_replicate \ + db_stat db_tuner db_upgrade db_verify + +# build directory can't be the directory where configure are there, so.. +define BERKELEYDB_CONFIGURE_CMDS + (cd $(@D)/build_unix; rm -rf config.cache; \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + ../dist/configure $(QUIET) \ + --target=$(GNU_TARGET_NAME) \ + --host=$(GNU_TARGET_NAME) \ + --build=$(GNU_HOST_NAME) \ + --prefix=/usr \ + --exec-prefix=/usr \ + --sysconfdir=/etc \ + --with-gnu-ld \ + $(if $(BR2_INSTALL_LIBSTDCPP),--enable-cxx,--disable-cxx) \ + --disable-java \ + --disable-tcl \ + $(if $(BR2_PACKAGE_BERKELEYDB_COMPAT185),--enable-compat185,--disable-compat185) \ + $(if $(BR2_PACKAGE_BERKELEYDB_DBM),--enable-dbm,--disable-dbm) \ + $(SHARED_STATIC_LIBS_OPTS) \ + --with-pic \ + --enable-o_direct \ + $(if $(BR2_TOOLCHAIN_HAS_THREADS),--enable-mutexsupport,--disable-mutexsupport) \ + ) +endef + +define HOST_BERKELEYDB_CONFIGURE_CMDS + (cd $(@D)/build_unix; rm -rf config.cache; \ + $(HOST_CONFIGURE_OPTS) \ + ../dist/configure $(QUIET) \ + --prefix=$(HOST_DIR) \ + --with-gnu-ld \ + --disable-cxx \ + --disable-java \ + --disable-tcl \ + --disable-compat185 \ + --with-pic \ + --enable-o_direct \ + --disable-mutexsupport \ + ) +endef + +ifneq ($(BR2_PACKAGE_BERKELEYDB_TOOLS),y) + +define BERKELEYDB_REMOVE_TOOLS + rm -f $(addprefix $(TARGET_DIR)/usr/bin/, $(BERKELEYDB_BINARIES)) +endef + +BERKELEYDB_POST_INSTALL_TARGET_HOOKS += BERKELEYDB_REMOVE_TOOLS + +endif + +define BERKELEYDB_REMOVE_DOCS + rm -rf $(TARGET_DIR)/usr/docs +endef + +BERKELEYDB_POST_INSTALL_TARGET_HOOKS += BERKELEYDB_REMOVE_DOCS + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/bind/0001-cross.patch b/package/bind/0001-cross.patch new file mode 100644 index 00000000..f39be2f8 --- /dev/null +++ b/package/bind/0001-cross.patch @@ -0,0 +1,34 @@ +From 505cc9fcadda5607dc4c5bacb03928c0b35162a8 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Wed, 4 Nov 2020 17:51:38 +0100 +Subject: [PATCH] Use host compiler to build 'gen' since it's run when + building. + +Signed-off-by: Gustavo Zacarias +[Fabrice: updated for 9.11.10] +Signed-off-by: Fabrice Fontaine +Signed-off-by: Petr Vorel +--- + lib/dns/Makefile.in | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/lib/dns/Makefile.in b/lib/dns/Makefile.in +index 8fc4e94f26..4ac92857e0 100644 +--- a/lib/dns/Makefile.in ++++ b/lib/dns/Makefile.in +@@ -184,10 +184,8 @@ code.h: gen + ./gen -s ${srcdir} > code.h || { rm -f $@ ; exit 1; } + + gen: gen.c +- ${BUILD_CC} ${BUILD_CFLAGS} -I${top_srcdir}/lib/isc/include \ +- ${LFS_CFLAGS} ${LFS_LDFLAGS} \ +- ${BUILD_CPPFLAGS} ${BUILD_LDFLAGS} -o $@ ${srcdir}/gen.c \ +- ${BUILD_LIBS} ${LFS_LIBS} ++ ${HOSTCC} ${HOST_CFLAGS} -I${top_srcdir}/lib/isc/include \ ++ ${HOST_LDFLAGS} -o $@ ${srcdir}/gen.c + + timestamp: include libdns.@A@ + touch timestamp +-- +2.29.1 + diff --git a/package/bind/Config.in b/package/bind/Config.in new file mode 100644 index 00000000..512e948c --- /dev/null +++ b/package/bind/Config.in @@ -0,0 +1,51 @@ +config BR2_PACKAGE_BIND + bool "bind" + depends on BR2_USE_MMU # fork(), libuv + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv + depends on !BR2_STATIC_LIBS # libuv + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libuv + select BR2_PACKAGE_LIBUV + select BR2_PACKAGE_OPENSSL + help + BIND (Berkeley Internet Name Domain) is an + implementation of the Domain Name System (DNS) protocols + and provides an openly redistributable reference + implementation of the major components of the Domain + Name System, including: + + * a Domain Name System server (named) + * a Domain Name System resolver library + * tools for verifying the proper operation of the DNS + server + + The BIND DNS Server is used on the vast majority of name + serving machines on the Internet, providing a robust and + stable architecture on top of which an organization's naming + architecture can be built. The resolver library included in + the BIND distribution provides the standard APIs for + translation between domain names and Internet addresses and is + intended to be linked with applications requiring name + service. + + https://www.isc.org/bind/ + +if BR2_PACKAGE_BIND + +config BR2_PACKAGE_BIND_SERVER + bool "Install server components" + help + Install server components (named, lwresd) + +config BR2_PACKAGE_BIND_TOOLS + bool "Install tools" + help + Install tools (dig, host, nslookup, nsupdate) + +endif + +comment "bind needs a toolchain w/ NPTL, dynamic library, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/bind/S81named b/package/bind/S81named new file mode 100644 index 00000000..1da3008a --- /dev/null +++ b/package/bind/S81named @@ -0,0 +1,38 @@ +#!/bin/sh + +CONFIG=/etc/bind/named.conf +DAEMON=/usr/sbin/named + +[ -f $CONFIG ] || exit 0 + +case "$1" in + start) + if [ ! -f /etc/rndc.key ]; then + printf "Initializing bind control key: " + # if rndc.key is a symlink, the target must exist + touch /etc/rndc.key + rndc-confgen -a -r /dev/urandom 2>/dev/null && echo "OK" || echo "FAIL" + fi + printf "Starting domain name daemon: " + start-stop-daemon -S -x $DAEMON -- -c $CONFIG -u named + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping domain name daemon: " + rndc stop || start-stop-daemon -K -x $DAEMON + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart) + $0 stop || true + sleep 1 + $0 start + ;; + reload|force-reload) + rndc reload || $0 restart + ;; + *) + echo "Usage: $0 {start|stop|restart|reload|force-reload}" + exit 1 +esac + +exit 0 diff --git a/package/bind/bind.hash b/package/bind/bind.hash new file mode 100644 index 00000000..482b046c --- /dev/null +++ b/package/bind/bind.hash @@ -0,0 +1,4 @@ +# Verified from https://ftp.isc.org/isc/bind9/9.16.48/bind-9.16.48.tar.xz.asc +# with key AADBBA5074F1402F7B69D56BC5B4EE931A9F9DFD +sha256 8d3814582348f90dead1ad410b1019094cd399d3d83930abebb2b3b1eb0b2bbb bind-9.16.48.tar.xz +sha256 13491a682dc0f5ee2273cebd3949e2be62f9470fe659419a03a308d4f444773b COPYRIGHT diff --git a/package/bind/bind.mk b/package/bind/bind.mk new file mode 100644 index 00000000..0d81ffab --- /dev/null +++ b/package/bind/bind.mk @@ -0,0 +1,149 @@ +################################################################################ +# +# bind +# +################################################################################ + +BIND_VERSION = 9.16.48 +BIND_SOURCE= bind-$(BIND_VERSION).tar.xz +BIND_SITE = https://ftp.isc.org/isc/bind9/$(BIND_VERSION) +# bind does not support parallel builds. +BIND_MAKE = $(MAKE1) +BIND_INSTALL_STAGING = YES +BIND_LICENSE = MPL-2.0 +BIND_LICENSE_FILES = COPYRIGHT +BIND_CPE_ID_VENDOR = isc +BIND_SELINUX_MODULES = bind +# Library CVE and not used by bind but used by ISC DHCP +BIND_IGNORE_CVES += CVE-2019-6470 +BIND_TARGET_SERVER_SBIN = arpaname ddns-confgen dnssec-checkds dnssec-coverage +BIND_TARGET_SERVER_SBIN += dnssec-importkey dnssec-keygen dnssec-revoke +BIND_TARGET_SERVER_SBIN += dnssec-settime dnssec-verify genrandom +BIND_TARGET_SERVER_SBIN += isc-hmac-fixup named-journalprint nsec3hash +BIND_TARGET_SERVER_SBIN += lwresd named named-checkconf named-checkzone +BIND_TARGET_SERVER_SBIN += named-compilezone rndc rndc-confgen dnssec-dsfromkey +BIND_TARGET_SERVER_SBIN += dnssec-keyfromlabel dnssec-signzone tsig-keygen +BIND_TARGET_TOOLS_BIN = dig host nslookup nsupdate +BIND_CONF_ENV = \ + BUILD_CC="$(TARGET_CC)" \ + LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl` +BIND_CONF_OPTS = \ + --without-cmocka \ + --without-lmdb \ + --enable-epoll \ + --disable-backtrace \ + --with-openssl=$(STAGING_DIR)/usr + +BIND_DEPENDENCIES = host-pkgconf libuv openssl + +BIND_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_101737),y) +BIND_CFLAGS += -O0 +endif + +BIND_CONF_OPTS += CFLAGS="$(BIND_CFLAGS)" + +ifeq ($(BR2_PACKAGE_ZLIB),y) +BIND_CONF_OPTS += --with-zlib +BIND_DEPENDENCIES += zlib +else +BIND_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_JSON_C),y) +BIND_CONF_OPTS += --with-json-c +BIND_DEPENDENCIES += json-c +else +BIND_CONF_OPTS += --without-json-c +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +BIND_CONF_OPTS += --enable-linux-caps +BIND_DEPENDENCIES += libcap +else +BIND_CONF_OPTS += --disable-linux-caps +endif + +ifeq ($(BR2_PACKAGE_LIBIDN2),y) +BIND_CONF_OPTS += --with-libidn2 +BIND_DEPENDENCIES += libidn2 +else +BIND_CONF_OPTS += --without-libidn2 +endif + +ifeq ($(BR2_PACKAGE_LIBKRB5),y) +BIND_CONF_OPTS += --with-gssapi=$(STAGING_DIR)/usr/bin/krb5-config +BIND_DEPENDENCIES += libkrb5 +else +BIND_CONF_OPTS += --with-gssapi=no +endif + +ifeq ($(BR2_PACKAGE_LIBMAXMINDDB),y) +BIND_CONF_OPTS += --enable-geoip --with-maxminddb +BIND_DEPENDENCIES += libmaxminddb +else +BIND_CONF_OPTS += --disable-geoip +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +BIND_CONF_OPTS += --with-libxml2 +BIND_DEPENDENCIES += libxml2 +else +BIND_CONF_OPTS += --with-libxml2=no +endif + +# Used by dnssec-keymgr +ifeq ($(BR2_PACKAGE_PYTHON_PLY),y) +BIND_DEPENDENCIES += host-python-ply +BIND_CONF_OPTS += --with-python=$(HOST_DIR)/bin/python +else +BIND_CONF_OPTS += --with-python=no +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +BIND_DEPENDENCIES += readline +else +BIND_CONF_OPTS += --with-readline=no +endif + +ifeq ($(BR2_STATIC_LIBS),y) +BIND_CONF_OPTS += \ + --without-dlopen \ + --without-libtool +else +BIND_CONF_OPTS += \ + --with-dlopen \ + --with-libtool +endif + +define BIND_TARGET_REMOVE_SERVER + rm -rf $(addprefix $(TARGET_DIR)/usr/sbin/, $(BIND_TARGET_SERVER_SBIN)) +endef + +define BIND_TARGET_REMOVE_TOOLS + rm -rf $(addprefix $(TARGET_DIR)/usr/bin/, $(BIND_TARGET_TOOLS_BIN)) +endef + +ifeq ($(BR2_PACKAGE_BIND_SERVER),y) +define BIND_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D $(BIND_PKGDIR)/S81named \ + $(TARGET_DIR)/etc/init.d/S81named +endef +define BIND_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(BIND_PKGDIR)/named.service \ + $(TARGET_DIR)/usr/lib/systemd/system/named.service +endef +else +BIND_POST_INSTALL_TARGET_HOOKS += BIND_TARGET_REMOVE_SERVER +endif + +ifeq ($(BR2_PACKAGE_BIND_TOOLS),) +BIND_POST_INSTALL_TARGET_HOOKS += BIND_TARGET_REMOVE_TOOLS +endif + +define BIND_USERS + named -1 named -1 * /etc/bind - - BIND daemon +endef + +$(eval $(autotools-package)) diff --git a/package/bind/named.service b/package/bind/named.service new file mode 100644 index 00000000..be0158b2 --- /dev/null +++ b/package/bind/named.service @@ -0,0 +1,12 @@ +[Unit] +Description=BIND Domain Name Server +Documentation=man:named(8) +After=network.target + +[Service] +ExecStart=/usr/sbin/named -f -u named +ExecReload=/usr/sbin/rndc reload +ExecStop=/usr/sbin/rndc stop + +[Install] +WantedBy=multi-user.target diff --git a/package/binutils-bare-metal/2.42 b/package/binutils-bare-metal/2.42 new file mode 120000 index 00000000..dfad0ed2 --- /dev/null +++ b/package/binutils-bare-metal/2.42 @@ -0,0 +1 @@ +../binutils/2.42 \ No newline at end of file diff --git a/package/binutils-bare-metal/binutils-bare-metal.hash b/package/binutils-bare-metal/binutils-bare-metal.hash new file mode 120000 index 00000000..e0655d3a --- /dev/null +++ b/package/binutils-bare-metal/binutils-bare-metal.hash @@ -0,0 +1 @@ +../binutils/binutils.hash \ No newline at end of file diff --git a/package/binutils-bare-metal/binutils-bare-metal.mk b/package/binutils-bare-metal/binutils-bare-metal.mk new file mode 100644 index 00000000..778a5235 --- /dev/null +++ b/package/binutils-bare-metal/binutils-bare-metal.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# binutils-bare-metal +# +################################################################################ + +HOST_BINUTILS_BARE_METAL_VERSION = 2.42 +HOST_BINUTILS_BARE_METAL_SITE = $(BR2_GNU_MIRROR)/binutils +HOST_BINUTILS_BARE_METAL_SOURCE = binutils-$(HOST_BINUTILS_BARE_METAL_VERSION).tar.xz + +HOST_BINUTILS_BARE_METAL_LICENSE = GPL-3.0+, libiberty LGPL-2.1+ +HOST_BINUTILS_BARE_METAL_LICENSE_FILES = COPYING3 COPYING.LIB +HOST_BINUTILS_BARE_METAL_CPE_ID_VENDOR = gnu +HOST_BINUTILS_BARE_METAL_CPE_ID_PRODUCT = binutils + +HOST_BINUTILS_BARE_METAL_DEPENDENCIES = host-zlib + +# Don't build documentation. It takes up extra space / build time, +# and sometimes needs specific makeinfo versions to work +HOST_BINUTILS_BARE_METAL_CONF_ENV += MAKEINFO=true +HOST_BINUTILS_BARE_METAL_MAKE_OPTS += MAKEINFO=true +HOST_BINUTILS_BARE_METAL_INSTALL_OPTS += MAKEINFO=true install + +HOST_BINUTILS_BARE_METAL_CONF_OPTS = \ + --target=$(TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH_TUPLE) \ + --disable-gprof \ + --disable-shared \ + --enable-lto \ + --enable-static \ + --disable-initfini-array \ + --disable-multilib \ + --disable-werror + +$(eval $(host-autotools-package)) diff --git a/package/binutils/2.40/0001-sh-conf.patch b/package/binutils/2.40/0001-sh-conf.patch new file mode 100644 index 00000000..ffa23a88 --- /dev/null +++ b/package/binutils/2.40/0001-sh-conf.patch @@ -0,0 +1,50 @@ +From 87551ade276aa0db86c4567b3ac219c4f979b538 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:38:13 +0100 +Subject: [PATCH] sh-conf + +Likewise, binutils has no idea about any of these new targets either, so we +fix that up too.. now we're able to actually build a real toolchain for +sh2a_nofpu- and other more ineptly named toolchains (and yes, there are more +inept targets than that one, really. Go look, I promise). + +Upstream: N/A [Buildroot specific] + +[Romain: rebase on top of 2.32] +Signed-off-by: Romain Naour +[Thomas: rebase on top of 2.29, in which sh64 support was removed.] +Signed-off-by: Thomas Petazzoni +--- + configure | 2 +- + configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure b/configure +index 417fc5a970c..fa8ba331796 100755 +--- a/configure ++++ b/configure +@@ -4067,7 +4067,7 @@ case "${target}" in + nvptx*-*-*) + noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc" + ;; +- sh-*-*) ++ sh*-*-*) + case "${target}" in + sh*-*-elf) + ;; +diff --git a/configure.ac b/configure.ac +index 3a1eb0357e5..d700c14ddf5 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1300,7 +1300,7 @@ case "${target}" in + nvptx*-*-*) + noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc" + ;; +- sh-*-*) ++ sh*-*-*) + case "${target}" in + sh*-*-elf) + ;; +-- +2.40.1 + diff --git a/package/binutils/2.40/0002-poison-system-directories.patch b/package/binutils/2.40/0002-poison-system-directories.patch new file mode 100644 index 00000000..4b927b63 --- /dev/null +++ b/package/binutils/2.40/0002-poison-system-directories.patch @@ -0,0 +1,309 @@ +From a6d90a842e349545ceb27f022317618dd99378ce Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:45:38 +0100 +Subject: [PATCH] poison-system-directories + +Patch adapted to binutils 2.23.2 and extended to use +BR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni. + +[Waldemar: rebase on top of 2.39] +Signed-off-by: Waldemar Brodkorb +[Romain: rebase on top of 2.33.1] +Signed-off-by: Romain Naour +[Gustavo: adapt to binutils 2.25] +Signed-off-by: Thomas Petazzoni +Signed-off-by: Gustavo Zacarias + +Upstream-Status: Inappropriate [distribution: codesourcery] +Upstream: N/A [Buildroot specific] + +Patch originally created by Mark Hatle, forward-ported to +binutils 2.21 by Scott Garman. + +purpose: warn for uses of system directories when cross linking + +Code Merged from Sourcery G++ binutils 2.19 - 4.4-277 + +2008-07-02 Joseph Myers + + ld/ + * ld.h (args_type): Add error_poison_system_directories. + * ld.texinfo (--error-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.error_poison_system_directories. + * ldmain.c (main): Initialize + command_line.error_poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_ERROR_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --error-poison-system-directories. + (parse_args): Handle new option. + +2007-06-13 Joseph Myers + + ld/ + * config.in: Regenerate. + * ld.h (args_type): Add poison_system_directories. + * ld.texinfo (--no-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.poison_system_directories. + * ldmain.c (main): Initialize + command_line.poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_NO_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --no-poison-system-directories. + (parse_args): Handle new option. + +2007-04-20 Joseph Myers + + Merge from Sourcery G++ binutils 2.17: + + 2007-03-20 Joseph Myers + Based on patch by Mark Hatle . + ld/ + * configure.ac (--enable-poison-system-directories): New option. + * configure, config.in: Regenerate. + * ldfile.c (ldfile_add_library_path): If + ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib, + /usr/lib, /usr/local/lib or /usr/X11R6/lib. + +Signed-off-by: Mark Hatle +Signed-off-by: Scott Garman +--- + ld/config.in | 3 +++ + ld/configure | 14 ++++++++++++++ + ld/configure.ac | 10 ++++++++++ + ld/ld.h | 8 ++++++++ + ld/ld.texi | 12 ++++++++++++ + ld/ldfile.c | 17 +++++++++++++++++ + ld/ldlex.h | 2 ++ + ld/ldmain.c | 2 ++ + ld/lexsup.c | 21 +++++++++++++++++++++ + 9 files changed, 89 insertions(+) + +diff --git a/ld/config.in b/ld/config.in +index ad0dc6a106c..d21edaddce7 100644 +--- a/ld/config.in ++++ b/ld/config.in +@@ -58,6 +58,9 @@ + language is requested. */ + #undef ENABLE_NLS + ++/* Define to warn for use of native system library directories */ ++#undef ENABLE_POISON_SYSTEM_DIRECTORIES ++ + /* Additional extension a shared object might have. */ + #undef EXTRA_SHLIB_EXTENSION + +diff --git a/ld/configure b/ld/configure +index 43b44be1dc6..28f054ea3f8 100755 +--- a/ld/configure ++++ b/ld/configure +@@ -839,6 +839,7 @@ with_lib_path + enable_targets + enable_64_bit_bfd + with_sysroot ++enable_poison_system_directories + enable_gold + enable_got + enable_compressed_debug_sections +@@ -1521,6 +1522,8 @@ Optional Features: + --enable-checking enable run-time checks + --enable-targets alternative target configurations + --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes) ++ --enable-poison-system-directories ++ warn for use of native system library directories + --enable-gold[=ARG] build gold [ARG={default,yes,no}] + --enable-got= GOT handling scheme (target, single, negative, + multigot) +@@ -15504,7 +15507,18 @@ else + fi + + ++# Check whether --enable-poison-system-directories was given. ++if test "${enable_poison_system_directories+set}" = set; then : ++ enableval=$enable_poison_system_directories; ++else ++ enable_poison_system_directories=no ++fi ++ ++if test "x${enable_poison_system_directories}" = "xyes"; then + ++$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h ++ ++fi + + # Check whether --enable-got was given. + if test "${enable_got+set}" = set; then : +diff --git a/ld/configure.ac b/ld/configure.ac +index 77edac3258c..a74dac63038 100644 +--- a/ld/configure.ac ++++ b/ld/configure.ac +@@ -103,6 +103,16 @@ AC_SUBST(use_sysroot) + AC_SUBST(TARGET_SYSTEM_ROOT) + AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) + ++AC_ARG_ENABLE([poison-system-directories], ++ AS_HELP_STRING([--enable-poison-system-directories], ++ [warn for use of native system library directories]),, ++ [enable_poison_system_directories=no]) ++if test "x${enable_poison_system_directories}" = "xyes"; then ++ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES], ++ [1], ++ [Define to warn for use of native system library directories]) ++fi ++ + dnl Use --enable-gold to decide if this linker should be the default. + dnl "install_as_default" is set to false if gold is the default linker. + dnl "installed_linker" is the installed BFD linker name. +diff --git a/ld/ld.h b/ld/ld.h +index 05649ff61b8..1818c227473 100644 +--- a/ld/ld.h ++++ b/ld/ld.h +@@ -163,6 +163,14 @@ typedef struct + in the linker script. */ + bool force_group_allocation; + ++ /* If TRUE (the default) warn for uses of system directories when ++ cross linking. */ ++ bool poison_system_directories; ++ ++ /* If TRUE (default FALSE) give an error for uses of system ++ directories when cross linking instead of a warning. */ ++ bool error_poison_system_directories; ++ + /* Big or little endian as set on command line. */ + enum endian_enum endian; + +diff --git a/ld/ld.texi b/ld/ld.texi +index db3a9f09b45..9dacc934f80 100644 +--- a/ld/ld.texi ++++ b/ld/ld.texi +@@ -2949,6 +2949,18 @@ string identifying the original linked file does not change. + Passing @code{none} for @var{style} disables the setting from any + @code{--build-id} options earlier on the command line. + ++@kindex --no-poison-system-directories ++@item --no-poison-system-directories ++Do not warn for @option{-L} options using system directories such as ++@file{/usr/lib} when cross linking. This option is intended for use ++in chroot environments when such directories contain the correct ++libraries for the target system rather than the host. ++ ++@kindex --error-poison-system-directories ++@item --error-poison-system-directories ++Give an error instead of a warning for @option{-L} options using ++system directories when cross linking. ++ + @kindex --package-metadata=@var{JSON} + @item --package-metadata=@var{JSON} + Request the creation of a @code{.note.package} ELF note section. The +diff --git a/ld/ldfile.c b/ld/ldfile.c +index b8fd4e5d8e0..1f1d8e23bc9 100644 +--- a/ld/ldfile.c ++++ b/ld/ldfile.c +@@ -117,6 +117,23 @@ ldfile_add_library_path (const char *name, bool cmdline) + new_dirs->name = concat (ld_sysroot, name + strlen ("$SYSROOT"), (const char *) NULL); + else + new_dirs->name = xstrdup (name); ++ ++#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES ++ if (command_line.poison_system_directories ++ && ((!strncmp (name, "/lib", 4)) ++ || (!strncmp (name, "/usr/lib", 8)) ++ || (!strncmp (name, "/usr/local/lib", 14)) ++ || (!strncmp (name, "/usr/X11R6/lib", 14)))) ++ { ++ if (command_line.error_poison_system_directories) ++ einfo (_("%X%P: error: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ else ++ einfo (_("%P: warning: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ } ++#endif ++ + } + + /* Try to open a BFD for a lang_input_statement. */ +diff --git a/ld/ldlex.h b/ld/ldlex.h +index 0538f0a06a1..d1de3aec23d 100644 +--- a/ld/ldlex.h ++++ b/ld/ldlex.h +@@ -166,6 +166,8 @@ enum option_values + OPTION_CTF_VARIABLES, + OPTION_NO_CTF_VARIABLES, + OPTION_CTF_SHARE_TYPES, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES, + OPTION_WARN_EXECSTACK, + OPTION_NO_WARN_EXECSTACK, + OPTION_WARN_RWX_SEGMENTS, +diff --git a/ld/ldmain.c b/ld/ldmain.c +index 9290a189b0d..e2e3074e872 100644 +--- a/ld/ldmain.c ++++ b/ld/ldmain.c +@@ -321,6 +321,8 @@ main (int argc, char **argv) + command_line.warn_mismatch = true; + command_line.warn_search_mismatch = true; + command_line.check_section_addresses = -1; ++ command_line.poison_system_directories = true; ++ command_line.error_poison_system_directories = false; + + /* We initialize DEMANGLING based on the environment variable + COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the +diff --git a/ld/lexsup.c b/ld/lexsup.c +index c5960385572..da0a7829914 100644 +--- a/ld/lexsup.c ++++ b/ld/lexsup.c +@@ -613,6 +613,14 @@ static const struct ld_option ld_options[] = + " is: share-unconflicted (default),\n" + " share-duplicated"), + TWO_DASHES }, ++ { {"no-poison-system-directories", no_argument, NULL, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Do not warn for -L options using system directories"), ++ TWO_DASHES }, ++ { {"error-poison-system-directories", no_argument, NULL, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Give an error for -L options using system directories"), ++ TWO_DASHES }, + }; + + #define OPTION_COUNT ARRAY_SIZE (ld_options) +@@ -625,6 +633,7 @@ parse_args (unsigned argc, char **argv) + int ingroup = 0; + char *default_dirlist = NULL; + char *shortopts; ++ char *BR_paranoid_env; + struct option *longopts; + struct option *really_longopts; + int last_optind; +@@ -1692,6 +1701,14 @@ parse_args (unsigned argc, char **argv) + } + break; + ++ case OPTION_NO_POISON_SYSTEM_DIRECTORIES: ++ command_line.poison_system_directories = false; ++ break; ++ ++ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES: ++ command_line.error_poison_system_directories = true; ++ break; ++ + case OPTION_PUSH_STATE: + input_flags.pushed = xmemdup (&input_flags, + sizeof (input_flags), +@@ -1837,6 +1854,10 @@ parse_args (unsigned argc, char **argv) + command_line.soname = NULL; + } + ++ BR_paranoid_env = getenv("BR_COMPILER_PARANOID_UNSAFE_PATH"); ++ if (BR_paranoid_env && strlen(BR_paranoid_env) > 0) ++ command_line.error_poison_system_directories = true; ++ + while (ingroup) + { + einfo (_("%P: missing --end-group; added as last command line option\n")); +-- +2.40.1 + diff --git a/package/binutils/2.40/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch b/package/binutils/2.40/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch new file mode 100644 index 00000000..4753ae13 --- /dev/null +++ b/package/binutils/2.40/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch @@ -0,0 +1,125 @@ +From 900c0f0aa3d78cd9e67ccd26fbc86224cef4c5b1 Mon Sep 17 00:00:00 2001 +From: Alan Modra +Date: Fri, 16 Feb 2024 22:33:29 +1030 +Subject: [PATCH] PR27597, nios: assertion fail in nios2_elf32_install_imm16 + +The assertion in nios2_elf32_install_imm16 triggers when the PLT is +twice the maximum allowable size for a branch from PLTn to reach +.PLTresolve, and on no other call to nios2_elf32_install_imm16. That +makes the assertion completely useless. We can handle a PIC PLT +exceeding 0x8000 in size by bouncing branches that won't reach through +previous branches. + + PR 27597 + * elf32-nios2.c (nios2_elf32_install_imm16): Delete BFD_ASSERT. + (nios2_build_one_stub): Don't bother masking value passed to + nios2_elf32_install_imm16. + (nios2_elf32_finish_dynamic_symbol): Likewise. Handle overflow + of PLTn branch to .PLTresolve by bouncing through prior branches. + +Upstream: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=900c0f0aa3d78cd9e67ccd26fbc86224cef4c5b1 + +Signed-off-by: Giulio Benetti +--- + bfd/elf32-nios2.c | 40 ++++++++++++++++++++++++---------------- + 1 file changed, 24 insertions(+), 16 deletions(-) + +diff --git a/bfd/elf32-nios2.c b/bfd/elf32-nios2.c +index bebf4239958..7f61e2f8507 100644 +--- a/bfd/elf32-nios2.c ++++ b/bfd/elf32-nios2.c +@@ -1878,8 +1878,6 @@ nios2_elf32_install_imm16 (asection *sec, bfd_vma offset, bfd_vma value) + { + bfd_vma word = bfd_get_32 (sec->owner, sec->contents + offset); + +- BFD_ASSERT (value <= 0xffff || ((bfd_signed_vma) value) >= -0xffff); +- + bfd_put_32 (sec->owner, word | ((value & 0xffff) << 6), + sec->contents + offset); + } +@@ -2518,7 +2516,7 @@ nios2_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg ATTRIBUTE_U + nios2_elf32_install_imm16 (stub_sec, hsh->stub_offset, + hiadj (sym_value)); + nios2_elf32_install_imm16 (stub_sec, hsh->stub_offset + 4, +- (sym_value & 0xffff)); ++ sym_value); + stub_sec->size += 12; + break; + default: +@@ -4986,16 +4984,28 @@ nios2_elf32_finish_dynamic_symbol (bfd *output_bfd, + /* Emit the PLT entry. */ + if (bfd_link_pic (info)) + { ++ bfd_vma br_offset; ++ + nios2_elf32_install_data (splt, nios2_so_plt_entry, h->plt.offset, + 3); + plt_index = (h->plt.offset - 24) / 12; + got_offset = (plt_index + 3) * 4; + nios2_elf32_install_imm16 (splt, h->plt.offset, +- hiadj(plt_index * 4)); ++ hiadj (plt_index * 4)); + nios2_elf32_install_imm16 (splt, h->plt.offset + 4, +- (plt_index * 4) & 0xffff); +- nios2_elf32_install_imm16 (splt, h->plt.offset + 8, +- 0xfff4 - h->plt.offset); ++ plt_index * 4); ++ br_offset = -(h->plt.offset + 12); ++ /* If this plt entry is too far away from the start of .plt ++ for the "br" to reach .PLTresolve, bounce through one or ++ more of the previous "br" instructions. */ ++ if (br_offset < (bfd_vma) -32768) ++ { ++ br_offset += 32768 / 12 * 12 - 4; ++ while (br_offset < (bfd_vma) -32768) ++ br_offset += 32768 / 12 * 12; ++ } ++ nios2_elf32_install_imm16 (splt, h->plt.offset + 8, br_offset); ++ + got_address = (sgotplt->output_section->vma + sgotplt->output_offset + + got_offset); + +@@ -5014,9 +5024,8 @@ nios2_elf32_finish_dynamic_symbol (bfd *output_bfd, + nios2_elf32_install_data (splt, nios2_plt_entry, h->plt.offset, 3); + got_address = (sgotplt->output_section->vma + sgotplt->output_offset + + got_offset); +- nios2_elf32_install_imm16 (splt, h->plt.offset, hiadj(got_address)); +- nios2_elf32_install_imm16 (splt, h->plt.offset + 4, +- got_address & 0xffff); ++ nios2_elf32_install_imm16 (splt, h->plt.offset, hiadj (got_address)); ++ nios2_elf32_install_imm16 (splt, h->plt.offset + 4, got_address); + + /* Fill in the entry in the global offset table. */ + bfd_put_32 (output_bfd, +@@ -5217,8 +5226,8 @@ nios2_elf32_finish_dynamic_sections (bfd *output_bfd, + BFD_ASSERT ((got_pcrel & 0xf) == 0); + nios2_elf32_install_data (splt, nios2_so_plt0_entry, 0, 6); + nios2_elf32_install_imm16 (splt, 4, hiadj (got_pcrel)); +- nios2_elf32_install_imm16 (splt, 12, got_pcrel & 0xffff); +- nios2_elf32_install_imm16 (splt, 16, (got_pcrel + 4) & 0xffff); ++ nios2_elf32_install_imm16 (splt, 12, got_pcrel); ++ nios2_elf32_install_imm16 (splt, 16, got_pcrel + 4); + } + else + { +@@ -5240,14 +5249,13 @@ nios2_elf32_finish_dynamic_sections (bfd *output_bfd, + + nios2_elf32_install_data (splt, nios2_plt0_entry, res_size, 7); + nios2_elf32_install_imm16 (splt, res_size, hiadj (res_start)); +- nios2_elf32_install_imm16 (splt, res_size + 4, +- res_start & 0xffff); ++ nios2_elf32_install_imm16 (splt, res_size + 4, res_start); + nios2_elf32_install_imm16 (splt, res_size + 12, + hiadj (got_address)); + nios2_elf32_install_imm16 (splt, res_size + 16, +- (got_address + 4) & 0xffff); ++ got_address + 4); + nios2_elf32_install_imm16 (splt, res_size + 20, +- (got_address + 8) & 0xffff); ++ got_address + 8); + } + } + } +-- +2.34.1 + diff --git a/package/binutils/2.41/0001-sh-conf.patch b/package/binutils/2.41/0001-sh-conf.patch new file mode 100644 index 00000000..ffa23a88 --- /dev/null +++ b/package/binutils/2.41/0001-sh-conf.patch @@ -0,0 +1,50 @@ +From 87551ade276aa0db86c4567b3ac219c4f979b538 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:38:13 +0100 +Subject: [PATCH] sh-conf + +Likewise, binutils has no idea about any of these new targets either, so we +fix that up too.. now we're able to actually build a real toolchain for +sh2a_nofpu- and other more ineptly named toolchains (and yes, there are more +inept targets than that one, really. Go look, I promise). + +Upstream: N/A [Buildroot specific] + +[Romain: rebase on top of 2.32] +Signed-off-by: Romain Naour +[Thomas: rebase on top of 2.29, in which sh64 support was removed.] +Signed-off-by: Thomas Petazzoni +--- + configure | 2 +- + configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure b/configure +index 417fc5a970c..fa8ba331796 100755 +--- a/configure ++++ b/configure +@@ -4067,7 +4067,7 @@ case "${target}" in + nvptx*-*-*) + noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc" + ;; +- sh-*-*) ++ sh*-*-*) + case "${target}" in + sh*-*-elf) + ;; +diff --git a/configure.ac b/configure.ac +index 3a1eb0357e5..d700c14ddf5 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1300,7 +1300,7 @@ case "${target}" in + nvptx*-*-*) + noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc" + ;; +- sh-*-*) ++ sh*-*-*) + case "${target}" in + sh*-*-elf) + ;; +-- +2.40.1 + diff --git a/package/binutils/2.41/0002-poison-system-directories.patch b/package/binutils/2.41/0002-poison-system-directories.patch new file mode 100644 index 00000000..4b927b63 --- /dev/null +++ b/package/binutils/2.41/0002-poison-system-directories.patch @@ -0,0 +1,309 @@ +From a6d90a842e349545ceb27f022317618dd99378ce Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:45:38 +0100 +Subject: [PATCH] poison-system-directories + +Patch adapted to binutils 2.23.2 and extended to use +BR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni. + +[Waldemar: rebase on top of 2.39] +Signed-off-by: Waldemar Brodkorb +[Romain: rebase on top of 2.33.1] +Signed-off-by: Romain Naour +[Gustavo: adapt to binutils 2.25] +Signed-off-by: Thomas Petazzoni +Signed-off-by: Gustavo Zacarias + +Upstream-Status: Inappropriate [distribution: codesourcery] +Upstream: N/A [Buildroot specific] + +Patch originally created by Mark Hatle, forward-ported to +binutils 2.21 by Scott Garman. + +purpose: warn for uses of system directories when cross linking + +Code Merged from Sourcery G++ binutils 2.19 - 4.4-277 + +2008-07-02 Joseph Myers + + ld/ + * ld.h (args_type): Add error_poison_system_directories. + * ld.texinfo (--error-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.error_poison_system_directories. + * ldmain.c (main): Initialize + command_line.error_poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_ERROR_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --error-poison-system-directories. + (parse_args): Handle new option. + +2007-06-13 Joseph Myers + + ld/ + * config.in: Regenerate. + * ld.h (args_type): Add poison_system_directories. + * ld.texinfo (--no-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.poison_system_directories. + * ldmain.c (main): Initialize + command_line.poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_NO_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --no-poison-system-directories. + (parse_args): Handle new option. + +2007-04-20 Joseph Myers + + Merge from Sourcery G++ binutils 2.17: + + 2007-03-20 Joseph Myers + Based on patch by Mark Hatle . + ld/ + * configure.ac (--enable-poison-system-directories): New option. + * configure, config.in: Regenerate. + * ldfile.c (ldfile_add_library_path): If + ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib, + /usr/lib, /usr/local/lib or /usr/X11R6/lib. + +Signed-off-by: Mark Hatle +Signed-off-by: Scott Garman +--- + ld/config.in | 3 +++ + ld/configure | 14 ++++++++++++++ + ld/configure.ac | 10 ++++++++++ + ld/ld.h | 8 ++++++++ + ld/ld.texi | 12 ++++++++++++ + ld/ldfile.c | 17 +++++++++++++++++ + ld/ldlex.h | 2 ++ + ld/ldmain.c | 2 ++ + ld/lexsup.c | 21 +++++++++++++++++++++ + 9 files changed, 89 insertions(+) + +diff --git a/ld/config.in b/ld/config.in +index ad0dc6a106c..d21edaddce7 100644 +--- a/ld/config.in ++++ b/ld/config.in +@@ -58,6 +58,9 @@ + language is requested. */ + #undef ENABLE_NLS + ++/* Define to warn for use of native system library directories */ ++#undef ENABLE_POISON_SYSTEM_DIRECTORIES ++ + /* Additional extension a shared object might have. */ + #undef EXTRA_SHLIB_EXTENSION + +diff --git a/ld/configure b/ld/configure +index 43b44be1dc6..28f054ea3f8 100755 +--- a/ld/configure ++++ b/ld/configure +@@ -839,6 +839,7 @@ with_lib_path + enable_targets + enable_64_bit_bfd + with_sysroot ++enable_poison_system_directories + enable_gold + enable_got + enable_compressed_debug_sections +@@ -1521,6 +1522,8 @@ Optional Features: + --enable-checking enable run-time checks + --enable-targets alternative target configurations + --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes) ++ --enable-poison-system-directories ++ warn for use of native system library directories + --enable-gold[=ARG] build gold [ARG={default,yes,no}] + --enable-got= GOT handling scheme (target, single, negative, + multigot) +@@ -15504,7 +15507,18 @@ else + fi + + ++# Check whether --enable-poison-system-directories was given. ++if test "${enable_poison_system_directories+set}" = set; then : ++ enableval=$enable_poison_system_directories; ++else ++ enable_poison_system_directories=no ++fi ++ ++if test "x${enable_poison_system_directories}" = "xyes"; then + ++$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h ++ ++fi + + # Check whether --enable-got was given. + if test "${enable_got+set}" = set; then : +diff --git a/ld/configure.ac b/ld/configure.ac +index 77edac3258c..a74dac63038 100644 +--- a/ld/configure.ac ++++ b/ld/configure.ac +@@ -103,6 +103,16 @@ AC_SUBST(use_sysroot) + AC_SUBST(TARGET_SYSTEM_ROOT) + AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) + ++AC_ARG_ENABLE([poison-system-directories], ++ AS_HELP_STRING([--enable-poison-system-directories], ++ [warn for use of native system library directories]),, ++ [enable_poison_system_directories=no]) ++if test "x${enable_poison_system_directories}" = "xyes"; then ++ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES], ++ [1], ++ [Define to warn for use of native system library directories]) ++fi ++ + dnl Use --enable-gold to decide if this linker should be the default. + dnl "install_as_default" is set to false if gold is the default linker. + dnl "installed_linker" is the installed BFD linker name. +diff --git a/ld/ld.h b/ld/ld.h +index 05649ff61b8..1818c227473 100644 +--- a/ld/ld.h ++++ b/ld/ld.h +@@ -163,6 +163,14 @@ typedef struct + in the linker script. */ + bool force_group_allocation; + ++ /* If TRUE (the default) warn for uses of system directories when ++ cross linking. */ ++ bool poison_system_directories; ++ ++ /* If TRUE (default FALSE) give an error for uses of system ++ directories when cross linking instead of a warning. */ ++ bool error_poison_system_directories; ++ + /* Big or little endian as set on command line. */ + enum endian_enum endian; + +diff --git a/ld/ld.texi b/ld/ld.texi +index db3a9f09b45..9dacc934f80 100644 +--- a/ld/ld.texi ++++ b/ld/ld.texi +@@ -2949,6 +2949,18 @@ string identifying the original linked file does not change. + Passing @code{none} for @var{style} disables the setting from any + @code{--build-id} options earlier on the command line. + ++@kindex --no-poison-system-directories ++@item --no-poison-system-directories ++Do not warn for @option{-L} options using system directories such as ++@file{/usr/lib} when cross linking. This option is intended for use ++in chroot environments when such directories contain the correct ++libraries for the target system rather than the host. ++ ++@kindex --error-poison-system-directories ++@item --error-poison-system-directories ++Give an error instead of a warning for @option{-L} options using ++system directories when cross linking. ++ + @kindex --package-metadata=@var{JSON} + @item --package-metadata=@var{JSON} + Request the creation of a @code{.note.package} ELF note section. The +diff --git a/ld/ldfile.c b/ld/ldfile.c +index b8fd4e5d8e0..1f1d8e23bc9 100644 +--- a/ld/ldfile.c ++++ b/ld/ldfile.c +@@ -117,6 +117,23 @@ ldfile_add_library_path (const char *name, bool cmdline) + new_dirs->name = concat (ld_sysroot, name + strlen ("$SYSROOT"), (const char *) NULL); + else + new_dirs->name = xstrdup (name); ++ ++#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES ++ if (command_line.poison_system_directories ++ && ((!strncmp (name, "/lib", 4)) ++ || (!strncmp (name, "/usr/lib", 8)) ++ || (!strncmp (name, "/usr/local/lib", 14)) ++ || (!strncmp (name, "/usr/X11R6/lib", 14)))) ++ { ++ if (command_line.error_poison_system_directories) ++ einfo (_("%X%P: error: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ else ++ einfo (_("%P: warning: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ } ++#endif ++ + } + + /* Try to open a BFD for a lang_input_statement. */ +diff --git a/ld/ldlex.h b/ld/ldlex.h +index 0538f0a06a1..d1de3aec23d 100644 +--- a/ld/ldlex.h ++++ b/ld/ldlex.h +@@ -166,6 +166,8 @@ enum option_values + OPTION_CTF_VARIABLES, + OPTION_NO_CTF_VARIABLES, + OPTION_CTF_SHARE_TYPES, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES, + OPTION_WARN_EXECSTACK, + OPTION_NO_WARN_EXECSTACK, + OPTION_WARN_RWX_SEGMENTS, +diff --git a/ld/ldmain.c b/ld/ldmain.c +index 9290a189b0d..e2e3074e872 100644 +--- a/ld/ldmain.c ++++ b/ld/ldmain.c +@@ -321,6 +321,8 @@ main (int argc, char **argv) + command_line.warn_mismatch = true; + command_line.warn_search_mismatch = true; + command_line.check_section_addresses = -1; ++ command_line.poison_system_directories = true; ++ command_line.error_poison_system_directories = false; + + /* We initialize DEMANGLING based on the environment variable + COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the +diff --git a/ld/lexsup.c b/ld/lexsup.c +index c5960385572..da0a7829914 100644 +--- a/ld/lexsup.c ++++ b/ld/lexsup.c +@@ -613,6 +613,14 @@ static const struct ld_option ld_options[] = + " is: share-unconflicted (default),\n" + " share-duplicated"), + TWO_DASHES }, ++ { {"no-poison-system-directories", no_argument, NULL, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Do not warn for -L options using system directories"), ++ TWO_DASHES }, ++ { {"error-poison-system-directories", no_argument, NULL, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Give an error for -L options using system directories"), ++ TWO_DASHES }, + }; + + #define OPTION_COUNT ARRAY_SIZE (ld_options) +@@ -625,6 +633,7 @@ parse_args (unsigned argc, char **argv) + int ingroup = 0; + char *default_dirlist = NULL; + char *shortopts; ++ char *BR_paranoid_env; + struct option *longopts; + struct option *really_longopts; + int last_optind; +@@ -1692,6 +1701,14 @@ parse_args (unsigned argc, char **argv) + } + break; + ++ case OPTION_NO_POISON_SYSTEM_DIRECTORIES: ++ command_line.poison_system_directories = false; ++ break; ++ ++ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES: ++ command_line.error_poison_system_directories = true; ++ break; ++ + case OPTION_PUSH_STATE: + input_flags.pushed = xmemdup (&input_flags, + sizeof (input_flags), +@@ -1837,6 +1854,10 @@ parse_args (unsigned argc, char **argv) + command_line.soname = NULL; + } + ++ BR_paranoid_env = getenv("BR_COMPILER_PARANOID_UNSAFE_PATH"); ++ if (BR_paranoid_env && strlen(BR_paranoid_env) > 0) ++ command_line.error_poison_system_directories = true; ++ + while (ingroup) + { + einfo (_("%P: missing --end-group; added as last command line option\n")); +-- +2.40.1 + diff --git a/package/binutils/2.41/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch b/package/binutils/2.41/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch new file mode 100644 index 00000000..4753ae13 --- /dev/null +++ b/package/binutils/2.41/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch @@ -0,0 +1,125 @@ +From 900c0f0aa3d78cd9e67ccd26fbc86224cef4c5b1 Mon Sep 17 00:00:00 2001 +From: Alan Modra +Date: Fri, 16 Feb 2024 22:33:29 +1030 +Subject: [PATCH] PR27597, nios: assertion fail in nios2_elf32_install_imm16 + +The assertion in nios2_elf32_install_imm16 triggers when the PLT is +twice the maximum allowable size for a branch from PLTn to reach +.PLTresolve, and on no other call to nios2_elf32_install_imm16. That +makes the assertion completely useless. We can handle a PIC PLT +exceeding 0x8000 in size by bouncing branches that won't reach through +previous branches. + + PR 27597 + * elf32-nios2.c (nios2_elf32_install_imm16): Delete BFD_ASSERT. + (nios2_build_one_stub): Don't bother masking value passed to + nios2_elf32_install_imm16. + (nios2_elf32_finish_dynamic_symbol): Likewise. Handle overflow + of PLTn branch to .PLTresolve by bouncing through prior branches. + +Upstream: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=900c0f0aa3d78cd9e67ccd26fbc86224cef4c5b1 + +Signed-off-by: Giulio Benetti +--- + bfd/elf32-nios2.c | 40 ++++++++++++++++++++++++---------------- + 1 file changed, 24 insertions(+), 16 deletions(-) + +diff --git a/bfd/elf32-nios2.c b/bfd/elf32-nios2.c +index bebf4239958..7f61e2f8507 100644 +--- a/bfd/elf32-nios2.c ++++ b/bfd/elf32-nios2.c +@@ -1878,8 +1878,6 @@ nios2_elf32_install_imm16 (asection *sec, bfd_vma offset, bfd_vma value) + { + bfd_vma word = bfd_get_32 (sec->owner, sec->contents + offset); + +- BFD_ASSERT (value <= 0xffff || ((bfd_signed_vma) value) >= -0xffff); +- + bfd_put_32 (sec->owner, word | ((value & 0xffff) << 6), + sec->contents + offset); + } +@@ -2518,7 +2516,7 @@ nios2_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg ATTRIBUTE_U + nios2_elf32_install_imm16 (stub_sec, hsh->stub_offset, + hiadj (sym_value)); + nios2_elf32_install_imm16 (stub_sec, hsh->stub_offset + 4, +- (sym_value & 0xffff)); ++ sym_value); + stub_sec->size += 12; + break; + default: +@@ -4986,16 +4984,28 @@ nios2_elf32_finish_dynamic_symbol (bfd *output_bfd, + /* Emit the PLT entry. */ + if (bfd_link_pic (info)) + { ++ bfd_vma br_offset; ++ + nios2_elf32_install_data (splt, nios2_so_plt_entry, h->plt.offset, + 3); + plt_index = (h->plt.offset - 24) / 12; + got_offset = (plt_index + 3) * 4; + nios2_elf32_install_imm16 (splt, h->plt.offset, +- hiadj(plt_index * 4)); ++ hiadj (plt_index * 4)); + nios2_elf32_install_imm16 (splt, h->plt.offset + 4, +- (plt_index * 4) & 0xffff); +- nios2_elf32_install_imm16 (splt, h->plt.offset + 8, +- 0xfff4 - h->plt.offset); ++ plt_index * 4); ++ br_offset = -(h->plt.offset + 12); ++ /* If this plt entry is too far away from the start of .plt ++ for the "br" to reach .PLTresolve, bounce through one or ++ more of the previous "br" instructions. */ ++ if (br_offset < (bfd_vma) -32768) ++ { ++ br_offset += 32768 / 12 * 12 - 4; ++ while (br_offset < (bfd_vma) -32768) ++ br_offset += 32768 / 12 * 12; ++ } ++ nios2_elf32_install_imm16 (splt, h->plt.offset + 8, br_offset); ++ + got_address = (sgotplt->output_section->vma + sgotplt->output_offset + + got_offset); + +@@ -5014,9 +5024,8 @@ nios2_elf32_finish_dynamic_symbol (bfd *output_bfd, + nios2_elf32_install_data (splt, nios2_plt_entry, h->plt.offset, 3); + got_address = (sgotplt->output_section->vma + sgotplt->output_offset + + got_offset); +- nios2_elf32_install_imm16 (splt, h->plt.offset, hiadj(got_address)); +- nios2_elf32_install_imm16 (splt, h->plt.offset + 4, +- got_address & 0xffff); ++ nios2_elf32_install_imm16 (splt, h->plt.offset, hiadj (got_address)); ++ nios2_elf32_install_imm16 (splt, h->plt.offset + 4, got_address); + + /* Fill in the entry in the global offset table. */ + bfd_put_32 (output_bfd, +@@ -5217,8 +5226,8 @@ nios2_elf32_finish_dynamic_sections (bfd *output_bfd, + BFD_ASSERT ((got_pcrel & 0xf) == 0); + nios2_elf32_install_data (splt, nios2_so_plt0_entry, 0, 6); + nios2_elf32_install_imm16 (splt, 4, hiadj (got_pcrel)); +- nios2_elf32_install_imm16 (splt, 12, got_pcrel & 0xffff); +- nios2_elf32_install_imm16 (splt, 16, (got_pcrel + 4) & 0xffff); ++ nios2_elf32_install_imm16 (splt, 12, got_pcrel); ++ nios2_elf32_install_imm16 (splt, 16, got_pcrel + 4); + } + else + { +@@ -5240,14 +5249,13 @@ nios2_elf32_finish_dynamic_sections (bfd *output_bfd, + + nios2_elf32_install_data (splt, nios2_plt0_entry, res_size, 7); + nios2_elf32_install_imm16 (splt, res_size, hiadj (res_start)); +- nios2_elf32_install_imm16 (splt, res_size + 4, +- res_start & 0xffff); ++ nios2_elf32_install_imm16 (splt, res_size + 4, res_start); + nios2_elf32_install_imm16 (splt, res_size + 12, + hiadj (got_address)); + nios2_elf32_install_imm16 (splt, res_size + 16, +- (got_address + 4) & 0xffff); ++ got_address + 4); + nios2_elf32_install_imm16 (splt, res_size + 20, +- (got_address + 8) & 0xffff); ++ got_address + 8); + } + } + } +-- +2.34.1 + diff --git a/package/binutils/2.42/0001-sh-conf.patch b/package/binutils/2.42/0001-sh-conf.patch new file mode 100644 index 00000000..c3810178 --- /dev/null +++ b/package/binutils/2.42/0001-sh-conf.patch @@ -0,0 +1,50 @@ +From d71fb5a9999ee7c8963342caa0d5cbb16872ab07 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:38:13 +0100 +Subject: [PATCH] sh-conf + +Likewise, binutils has no idea about any of these new targets either, so we +fix that up too.. now we're able to actually build a real toolchain for +sh2a_nofpu- and other more ineptly named toolchains (and yes, there are more +inept targets than that one, really. Go look, I promise). + +Upstream: N/A [Buildroot specific] + +[Romain: rebase on top of 2.32] +Signed-off-by: Romain Naour +[Thomas: rebase on top of 2.29, in which sh64 support was removed.] +Signed-off-by: Thomas Petazzoni +--- + configure | 2 +- + configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure b/configure +index 670684d83d1..967c6708a0c 100755 +--- a/configure ++++ b/configure +@@ -4042,7 +4042,7 @@ case "${target}" in + nvptx*-*-*) + noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc" + ;; +- sh-*-*) ++ sh*-*-*) + case "${target}" in + sh*-*-elf) + ;; +diff --git a/configure.ac b/configure.ac +index 88b4800e298..2c8d08ff6ec 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1269,7 +1269,7 @@ case "${target}" in + nvptx*-*-*) + noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc" + ;; +- sh-*-*) ++ sh*-*-*) + case "${target}" in + sh*-*-elf) + ;; +-- +2.43.0 + diff --git a/package/binutils/2.42/0002-poison-system-directories.patch b/package/binutils/2.42/0002-poison-system-directories.patch new file mode 100644 index 00000000..5c790999 --- /dev/null +++ b/package/binutils/2.42/0002-poison-system-directories.patch @@ -0,0 +1,309 @@ +From 00f6b0a7d31085831429834b2bc8f511b8fab6ce Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:45:38 +0100 +Subject: [PATCH] poison-system-directories + +Patch adapted to binutils 2.23.2 and extended to use +BR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni. + +[Waldemar: rebase on top of 2.39] +Signed-off-by: Waldemar Brodkorb +[Romain: rebase on top of 2.33.1] +Signed-off-by: Romain Naour +[Gustavo: adapt to binutils 2.25] +Signed-off-by: Thomas Petazzoni +Signed-off-by: Gustavo Zacarias + +Upstream-Status: Inappropriate [distribution: codesourcery] +Upstream: N/A [Buildroot specific] + +Patch originally created by Mark Hatle, forward-ported to +binutils 2.21 by Scott Garman. + +purpose: warn for uses of system directories when cross linking + +Code Merged from Sourcery G++ binutils 2.19 - 4.4-277 + +2008-07-02 Joseph Myers + + ld/ + * ld.h (args_type): Add error_poison_system_directories. + * ld.texinfo (--error-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.error_poison_system_directories. + * ldmain.c (main): Initialize + command_line.error_poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_ERROR_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --error-poison-system-directories. + (parse_args): Handle new option. + +2007-06-13 Joseph Myers + + ld/ + * config.in: Regenerate. + * ld.h (args_type): Add poison_system_directories. + * ld.texinfo (--no-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.poison_system_directories. + * ldmain.c (main): Initialize + command_line.poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_NO_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --no-poison-system-directories. + (parse_args): Handle new option. + +2007-04-20 Joseph Myers + + Merge from Sourcery G++ binutils 2.17: + + 2007-03-20 Joseph Myers + Based on patch by Mark Hatle . + ld/ + * configure.ac (--enable-poison-system-directories): New option. + * configure, config.in: Regenerate. + * ldfile.c (ldfile_add_library_path): If + ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib, + /usr/lib, /usr/local/lib or /usr/X11R6/lib. + +Signed-off-by: Mark Hatle +Signed-off-by: Scott Garman +--- + ld/config.in | 3 +++ + ld/configure | 14 ++++++++++++++ + ld/configure.ac | 10 ++++++++++ + ld/ld.h | 8 ++++++++ + ld/ld.texi | 12 ++++++++++++ + ld/ldfile.c | 17 +++++++++++++++++ + ld/ldlex.h | 2 ++ + ld/ldmain.c | 2 ++ + ld/lexsup.c | 21 +++++++++++++++++++++ + 9 files changed, 89 insertions(+) + +diff --git a/ld/config.in b/ld/config.in +index 52d62f06ff0..b5944e7ba55 100644 +--- a/ld/config.in ++++ b/ld/config.in +@@ -70,6 +70,9 @@ + language is requested. */ + #undef ENABLE_NLS + ++/* Define to warn for use of native system library directories */ ++#undef ENABLE_POISON_SYSTEM_DIRECTORIES ++ + /* Additional extension a shared object might have. */ + #undef EXTRA_SHLIB_EXTENSION + +diff --git a/ld/configure b/ld/configure +index ba1e5e2a215..2220d7afe2a 100755 +--- a/ld/configure ++++ b/ld/configure +@@ -844,6 +844,7 @@ with_lib_path + enable_targets + enable_64_bit_bfd + with_sysroot ++enable_poison_system_directories + enable_gold + enable_got + enable_compressed_debug_sections +@@ -1534,6 +1535,8 @@ Optional Features: + --enable-checking enable run-time checks + --enable-targets alternative target configurations + --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes) ++ --enable-poison-system-directories ++ warn for use of native system library directories + --enable-gold[=ARG] build gold [ARG={default,yes,no}] + --enable-got= GOT handling scheme (target, single, negative, + multigot) +@@ -15587,7 +15590,18 @@ else + fi + + ++# Check whether --enable-poison-system-directories was given. ++if test "${enable_poison_system_directories+set}" = set; then : ++ enableval=$enable_poison_system_directories; ++else ++ enable_poison_system_directories=no ++fi ++ ++if test "x${enable_poison_system_directories}" = "xyes"; then + ++$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h ++ ++fi + + # Check whether --enable-got was given. + if test "${enable_got+set}" = set; then : +diff --git a/ld/configure.ac b/ld/configure.ac +index 4a11787ae71..104a531fb0f 100644 +--- a/ld/configure.ac ++++ b/ld/configure.ac +@@ -103,6 +103,16 @@ AC_SUBST(use_sysroot) + AC_SUBST(TARGET_SYSTEM_ROOT) + AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) + ++AC_ARG_ENABLE([poison-system-directories], ++ AS_HELP_STRING([--enable-poison-system-directories], ++ [warn for use of native system library directories]),, ++ [enable_poison_system_directories=no]) ++if test "x${enable_poison_system_directories}" = "xyes"; then ++ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES], ++ [1], ++ [Define to warn for use of native system library directories]) ++fi ++ + dnl Use --enable-gold to decide if this linker should be the default. + dnl "install_as_default" is set to false if gold is the default linker. + dnl "installed_linker" is the installed BFD linker name. +diff --git a/ld/ld.h b/ld/ld.h +index 54d9079678c..9f0163b2911 100644 +--- a/ld/ld.h ++++ b/ld/ld.h +@@ -166,6 +166,14 @@ typedef struct + in the linker script. */ + bool force_group_allocation; + ++ /* If TRUE (the default) warn for uses of system directories when ++ cross linking. */ ++ bool poison_system_directories; ++ ++ /* If TRUE (default FALSE) give an error for uses of system ++ directories when cross linking instead of a warning. */ ++ bool error_poison_system_directories; ++ + /* Big or little endian as set on command line. */ + enum endian_enum endian; + +diff --git a/ld/ld.texi b/ld/ld.texi +index 4fda259a552..11fd8f7547b 100644 +--- a/ld/ld.texi ++++ b/ld/ld.texi +@@ -3108,6 +3108,18 @@ string identifying the original linked file does not change. + Passing @code{none} for @var{style} disables the setting from any + @code{--build-id} options earlier on the command line. + ++@kindex --no-poison-system-directories ++@item --no-poison-system-directories ++Do not warn for @option{-L} options using system directories such as ++@file{/usr/lib} when cross linking. This option is intended for use ++in chroot environments when such directories contain the correct ++libraries for the target system rather than the host. ++ ++@kindex --error-poison-system-directories ++@item --error-poison-system-directories ++Give an error instead of a warning for @option{-L} options using ++system directories when cross linking. ++ + @kindex --package-metadata=@var{JSON} + @item --package-metadata=@var{JSON} + Request the creation of a @code{.note.package} ELF note section. The +diff --git a/ld/ldfile.c b/ld/ldfile.c +index dc9875d8813..49d899ee49d 100644 +--- a/ld/ldfile.c ++++ b/ld/ldfile.c +@@ -327,6 +327,23 @@ ldfile_add_library_path (const char *name, bool cmdline) + new_dirs->name = concat (ld_sysroot, name + strlen ("$SYSROOT"), (const char *) NULL); + else + new_dirs->name = xstrdup (name); ++ ++#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES ++ if (command_line.poison_system_directories ++ && ((!strncmp (name, "/lib", 4)) ++ || (!strncmp (name, "/usr/lib", 8)) ++ || (!strncmp (name, "/usr/local/lib", 14)) ++ || (!strncmp (name, "/usr/X11R6/lib", 14)))) ++ { ++ if (command_line.error_poison_system_directories) ++ einfo (_("%X%P: error: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ else ++ einfo (_("%P: warning: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ } ++#endif ++ + } + + /* Try to open a BFD for a lang_input_statement. */ +diff --git a/ld/ldlex.h b/ld/ldlex.h +index 161a9d4d8dc..4ca50b9c299 100644 +--- a/ld/ldlex.h ++++ b/ld/ldlex.h +@@ -168,6 +168,8 @@ enum option_values + OPTION_CTF_VARIABLES, + OPTION_NO_CTF_VARIABLES, + OPTION_CTF_SHARE_TYPES, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES, + OPTION_ERROR_EXECSTACK, + OPTION_NO_ERROR_EXECSTACK, + OPTION_WARN_EXECSTACK_OBJECTS, +diff --git a/ld/ldmain.c b/ld/ldmain.c +index e90c2021b33..43fe888eba8 100644 +--- a/ld/ldmain.c ++++ b/ld/ldmain.c +@@ -325,6 +325,8 @@ main (int argc, char **argv) + command_line.warn_mismatch = true; + command_line.warn_search_mismatch = true; + command_line.check_section_addresses = -1; ++ command_line.poison_system_directories = true; ++ command_line.error_poison_system_directories = false; + + /* We initialize DEMANGLING based on the environment variable + COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the +diff --git a/ld/lexsup.c b/ld/lexsup.c +index 099dff8ecde..01626712c77 100644 +--- a/ld/lexsup.c ++++ b/ld/lexsup.c +@@ -642,6 +642,14 @@ static const struct ld_option ld_options[] = + " is: share-unconflicted (default),\n" + " share-duplicated"), + TWO_DASHES }, ++ { {"no-poison-system-directories", no_argument, NULL, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Do not warn for -L options using system directories"), ++ TWO_DASHES }, ++ { {"error-poison-system-directories", no_argument, NULL, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Give an error for -L options using system directories"), ++ TWO_DASHES }, + }; + + #define OPTION_COUNT ARRAY_SIZE (ld_options) +@@ -654,6 +662,7 @@ parse_args (unsigned argc, char **argv) + int ingroup = 0; + char *default_dirlist = NULL; + char *shortopts; ++ char *BR_paranoid_env; + struct option *longopts; + struct option *really_longopts; + int last_optind; +@@ -1769,6 +1778,14 @@ parse_args (unsigned argc, char **argv) + } + break; + ++ case OPTION_NO_POISON_SYSTEM_DIRECTORIES: ++ command_line.poison_system_directories = false; ++ break; ++ ++ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES: ++ command_line.error_poison_system_directories = true; ++ break; ++ + case OPTION_PUSH_STATE: + input_flags.pushed = xmemdup (&input_flags, + sizeof (input_flags), +@@ -1922,6 +1939,10 @@ parse_args (unsigned argc, char **argv) + command_line.soname = NULL; + } + ++ BR_paranoid_env = getenv("BR_COMPILER_PARANOID_UNSAFE_PATH"); ++ if (BR_paranoid_env && strlen(BR_paranoid_env) > 0) ++ command_line.error_poison_system_directories = true; ++ + while (ingroup) + { + einfo (_("%P: missing --end-group; added as last command line option\n")); +-- +2.43.0 + diff --git a/package/binutils/2.42/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch b/package/binutils/2.42/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch new file mode 100644 index 00000000..4753ae13 --- /dev/null +++ b/package/binutils/2.42/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch @@ -0,0 +1,125 @@ +From 900c0f0aa3d78cd9e67ccd26fbc86224cef4c5b1 Mon Sep 17 00:00:00 2001 +From: Alan Modra +Date: Fri, 16 Feb 2024 22:33:29 +1030 +Subject: [PATCH] PR27597, nios: assertion fail in nios2_elf32_install_imm16 + +The assertion in nios2_elf32_install_imm16 triggers when the PLT is +twice the maximum allowable size for a branch from PLTn to reach +.PLTresolve, and on no other call to nios2_elf32_install_imm16. That +makes the assertion completely useless. We can handle a PIC PLT +exceeding 0x8000 in size by bouncing branches that won't reach through +previous branches. + + PR 27597 + * elf32-nios2.c (nios2_elf32_install_imm16): Delete BFD_ASSERT. + (nios2_build_one_stub): Don't bother masking value passed to + nios2_elf32_install_imm16. + (nios2_elf32_finish_dynamic_symbol): Likewise. Handle overflow + of PLTn branch to .PLTresolve by bouncing through prior branches. + +Upstream: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=900c0f0aa3d78cd9e67ccd26fbc86224cef4c5b1 + +Signed-off-by: Giulio Benetti +--- + bfd/elf32-nios2.c | 40 ++++++++++++++++++++++++---------------- + 1 file changed, 24 insertions(+), 16 deletions(-) + +diff --git a/bfd/elf32-nios2.c b/bfd/elf32-nios2.c +index bebf4239958..7f61e2f8507 100644 +--- a/bfd/elf32-nios2.c ++++ b/bfd/elf32-nios2.c +@@ -1878,8 +1878,6 @@ nios2_elf32_install_imm16 (asection *sec, bfd_vma offset, bfd_vma value) + { + bfd_vma word = bfd_get_32 (sec->owner, sec->contents + offset); + +- BFD_ASSERT (value <= 0xffff || ((bfd_signed_vma) value) >= -0xffff); +- + bfd_put_32 (sec->owner, word | ((value & 0xffff) << 6), + sec->contents + offset); + } +@@ -2518,7 +2516,7 @@ nios2_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg ATTRIBUTE_U + nios2_elf32_install_imm16 (stub_sec, hsh->stub_offset, + hiadj (sym_value)); + nios2_elf32_install_imm16 (stub_sec, hsh->stub_offset + 4, +- (sym_value & 0xffff)); ++ sym_value); + stub_sec->size += 12; + break; + default: +@@ -4986,16 +4984,28 @@ nios2_elf32_finish_dynamic_symbol (bfd *output_bfd, + /* Emit the PLT entry. */ + if (bfd_link_pic (info)) + { ++ bfd_vma br_offset; ++ + nios2_elf32_install_data (splt, nios2_so_plt_entry, h->plt.offset, + 3); + plt_index = (h->plt.offset - 24) / 12; + got_offset = (plt_index + 3) * 4; + nios2_elf32_install_imm16 (splt, h->plt.offset, +- hiadj(plt_index * 4)); ++ hiadj (plt_index * 4)); + nios2_elf32_install_imm16 (splt, h->plt.offset + 4, +- (plt_index * 4) & 0xffff); +- nios2_elf32_install_imm16 (splt, h->plt.offset + 8, +- 0xfff4 - h->plt.offset); ++ plt_index * 4); ++ br_offset = -(h->plt.offset + 12); ++ /* If this plt entry is too far away from the start of .plt ++ for the "br" to reach .PLTresolve, bounce through one or ++ more of the previous "br" instructions. */ ++ if (br_offset < (bfd_vma) -32768) ++ { ++ br_offset += 32768 / 12 * 12 - 4; ++ while (br_offset < (bfd_vma) -32768) ++ br_offset += 32768 / 12 * 12; ++ } ++ nios2_elf32_install_imm16 (splt, h->plt.offset + 8, br_offset); ++ + got_address = (sgotplt->output_section->vma + sgotplt->output_offset + + got_offset); + +@@ -5014,9 +5024,8 @@ nios2_elf32_finish_dynamic_symbol (bfd *output_bfd, + nios2_elf32_install_data (splt, nios2_plt_entry, h->plt.offset, 3); + got_address = (sgotplt->output_section->vma + sgotplt->output_offset + + got_offset); +- nios2_elf32_install_imm16 (splt, h->plt.offset, hiadj(got_address)); +- nios2_elf32_install_imm16 (splt, h->plt.offset + 4, +- got_address & 0xffff); ++ nios2_elf32_install_imm16 (splt, h->plt.offset, hiadj (got_address)); ++ nios2_elf32_install_imm16 (splt, h->plt.offset + 4, got_address); + + /* Fill in the entry in the global offset table. */ + bfd_put_32 (output_bfd, +@@ -5217,8 +5226,8 @@ nios2_elf32_finish_dynamic_sections (bfd *output_bfd, + BFD_ASSERT ((got_pcrel & 0xf) == 0); + nios2_elf32_install_data (splt, nios2_so_plt0_entry, 0, 6); + nios2_elf32_install_imm16 (splt, 4, hiadj (got_pcrel)); +- nios2_elf32_install_imm16 (splt, 12, got_pcrel & 0xffff); +- nios2_elf32_install_imm16 (splt, 16, (got_pcrel + 4) & 0xffff); ++ nios2_elf32_install_imm16 (splt, 12, got_pcrel); ++ nios2_elf32_install_imm16 (splt, 16, got_pcrel + 4); + } + else + { +@@ -5240,14 +5249,13 @@ nios2_elf32_finish_dynamic_sections (bfd *output_bfd, + + nios2_elf32_install_data (splt, nios2_plt0_entry, res_size, 7); + nios2_elf32_install_imm16 (splt, res_size, hiadj (res_start)); +- nios2_elf32_install_imm16 (splt, res_size + 4, +- res_start & 0xffff); ++ nios2_elf32_install_imm16 (splt, res_size + 4, res_start); + nios2_elf32_install_imm16 (splt, res_size + 12, + hiadj (got_address)); + nios2_elf32_install_imm16 (splt, res_size + 16, +- (got_address + 4) & 0xffff); ++ got_address + 4); + nios2_elf32_install_imm16 (splt, res_size + 20, +- (got_address + 8) & 0xffff); ++ got_address + 8); + } + } + } +-- +2.34.1 + diff --git a/package/binutils/Config.in b/package/binutils/Config.in new file mode 100644 index 00000000..5e1a7699 --- /dev/null +++ b/package/binutils/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_BINUTILS + bool "binutils" + depends on !BR2_nios2 + depends on BR2_USE_WCHAR + select BR2_PACKAGE_ZLIB + help + Install binutils on the target + +if BR2_PACKAGE_BINUTILS + +config BR2_PACKAGE_BINUTILS_TARGET + bool "binutils binaries" + help + The GNU Binutils are a collection of binary tools: + + ld - the GNU linker. + as - the GNU assembler. + and others... + + http://www.gnu.org/software/binutils/ + +endif + +comment "binutils needs a toolchain w/ wchar" + depends on !BR2_nios2 + depends on !BR2_USE_WCHAR diff --git a/package/binutils/Config.in.host b/package/binutils/Config.in.host new file mode 100644 index 00000000..cb65f5f5 --- /dev/null +++ b/package/binutils/Config.in.host @@ -0,0 +1,47 @@ +comment "Binutils Options" + +config BR2_PACKAGE_HOST_BINUTILS_SUPPORTS_CFI + bool + default y + depends on !BR2_microblaze + +choice + prompt "Binutils Version" + default BR2_BINUTILS_VERSION_2_41_X if !BR2_arc + default BR2_BINUTILS_VERSION_ARC if BR2_arc + help + Select the version of binutils you wish to use. + +config BR2_BINUTILS_VERSION_2_40_X + bool "binutils 2.40" + +config BR2_BINUTILS_VERSION_2_41_X + bool "binutils 2.41" + +config BR2_BINUTILS_VERSION_ARC + bool "binutils arc (2.41)" + depends on BR2_arc + +config BR2_BINUTILS_VERSION_2_42_X + bool "binutils 2.42" + +endchoice + +config BR2_BINUTILS_VERSION + string + default "arc-2023.09-release" if BR2_BINUTILS_VERSION_ARC + default "2.40" if BR2_BINUTILS_VERSION_2_40_X + default "2.41" if BR2_BINUTILS_VERSION_2_41_X + default "2.42" if BR2_BINUTILS_VERSION_2_42_X + +config BR2_BINUTILS_GPROFNG + bool "gprofng support" + depends on !BR2_BINUTILS_VERSION_ARC + help + This option enables support for gprofng, a new profiler. + +config BR2_BINUTILS_EXTRA_CONFIG_OPTIONS + string "Additional binutils options" + default "" + help + Any additional binutils options you may want to include. diff --git a/package/binutils/arc-2023.09-release/0001-poison-system-directories.patch b/package/binutils/arc-2023.09-release/0001-poison-system-directories.patch new file mode 100644 index 00000000..4b927b63 --- /dev/null +++ b/package/binutils/arc-2023.09-release/0001-poison-system-directories.patch @@ -0,0 +1,309 @@ +From a6d90a842e349545ceb27f022317618dd99378ce Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:45:38 +0100 +Subject: [PATCH] poison-system-directories + +Patch adapted to binutils 2.23.2 and extended to use +BR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni. + +[Waldemar: rebase on top of 2.39] +Signed-off-by: Waldemar Brodkorb +[Romain: rebase on top of 2.33.1] +Signed-off-by: Romain Naour +[Gustavo: adapt to binutils 2.25] +Signed-off-by: Thomas Petazzoni +Signed-off-by: Gustavo Zacarias + +Upstream-Status: Inappropriate [distribution: codesourcery] +Upstream: N/A [Buildroot specific] + +Patch originally created by Mark Hatle, forward-ported to +binutils 2.21 by Scott Garman. + +purpose: warn for uses of system directories when cross linking + +Code Merged from Sourcery G++ binutils 2.19 - 4.4-277 + +2008-07-02 Joseph Myers + + ld/ + * ld.h (args_type): Add error_poison_system_directories. + * ld.texinfo (--error-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.error_poison_system_directories. + * ldmain.c (main): Initialize + command_line.error_poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_ERROR_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --error-poison-system-directories. + (parse_args): Handle new option. + +2007-06-13 Joseph Myers + + ld/ + * config.in: Regenerate. + * ld.h (args_type): Add poison_system_directories. + * ld.texinfo (--no-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.poison_system_directories. + * ldmain.c (main): Initialize + command_line.poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_NO_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --no-poison-system-directories. + (parse_args): Handle new option. + +2007-04-20 Joseph Myers + + Merge from Sourcery G++ binutils 2.17: + + 2007-03-20 Joseph Myers + Based on patch by Mark Hatle . + ld/ + * configure.ac (--enable-poison-system-directories): New option. + * configure, config.in: Regenerate. + * ldfile.c (ldfile_add_library_path): If + ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib, + /usr/lib, /usr/local/lib or /usr/X11R6/lib. + +Signed-off-by: Mark Hatle +Signed-off-by: Scott Garman +--- + ld/config.in | 3 +++ + ld/configure | 14 ++++++++++++++ + ld/configure.ac | 10 ++++++++++ + ld/ld.h | 8 ++++++++ + ld/ld.texi | 12 ++++++++++++ + ld/ldfile.c | 17 +++++++++++++++++ + ld/ldlex.h | 2 ++ + ld/ldmain.c | 2 ++ + ld/lexsup.c | 21 +++++++++++++++++++++ + 9 files changed, 89 insertions(+) + +diff --git a/ld/config.in b/ld/config.in +index ad0dc6a106c..d21edaddce7 100644 +--- a/ld/config.in ++++ b/ld/config.in +@@ -58,6 +58,9 @@ + language is requested. */ + #undef ENABLE_NLS + ++/* Define to warn for use of native system library directories */ ++#undef ENABLE_POISON_SYSTEM_DIRECTORIES ++ + /* Additional extension a shared object might have. */ + #undef EXTRA_SHLIB_EXTENSION + +diff --git a/ld/configure b/ld/configure +index 43b44be1dc6..28f054ea3f8 100755 +--- a/ld/configure ++++ b/ld/configure +@@ -839,6 +839,7 @@ with_lib_path + enable_targets + enable_64_bit_bfd + with_sysroot ++enable_poison_system_directories + enable_gold + enable_got + enable_compressed_debug_sections +@@ -1521,6 +1522,8 @@ Optional Features: + --enable-checking enable run-time checks + --enable-targets alternative target configurations + --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes) ++ --enable-poison-system-directories ++ warn for use of native system library directories + --enable-gold[=ARG] build gold [ARG={default,yes,no}] + --enable-got= GOT handling scheme (target, single, negative, + multigot) +@@ -15504,7 +15507,18 @@ else + fi + + ++# Check whether --enable-poison-system-directories was given. ++if test "${enable_poison_system_directories+set}" = set; then : ++ enableval=$enable_poison_system_directories; ++else ++ enable_poison_system_directories=no ++fi ++ ++if test "x${enable_poison_system_directories}" = "xyes"; then + ++$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h ++ ++fi + + # Check whether --enable-got was given. + if test "${enable_got+set}" = set; then : +diff --git a/ld/configure.ac b/ld/configure.ac +index 77edac3258c..a74dac63038 100644 +--- a/ld/configure.ac ++++ b/ld/configure.ac +@@ -103,6 +103,16 @@ AC_SUBST(use_sysroot) + AC_SUBST(TARGET_SYSTEM_ROOT) + AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) + ++AC_ARG_ENABLE([poison-system-directories], ++ AS_HELP_STRING([--enable-poison-system-directories], ++ [warn for use of native system library directories]),, ++ [enable_poison_system_directories=no]) ++if test "x${enable_poison_system_directories}" = "xyes"; then ++ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES], ++ [1], ++ [Define to warn for use of native system library directories]) ++fi ++ + dnl Use --enable-gold to decide if this linker should be the default. + dnl "install_as_default" is set to false if gold is the default linker. + dnl "installed_linker" is the installed BFD linker name. +diff --git a/ld/ld.h b/ld/ld.h +index 05649ff61b8..1818c227473 100644 +--- a/ld/ld.h ++++ b/ld/ld.h +@@ -163,6 +163,14 @@ typedef struct + in the linker script. */ + bool force_group_allocation; + ++ /* If TRUE (the default) warn for uses of system directories when ++ cross linking. */ ++ bool poison_system_directories; ++ ++ /* If TRUE (default FALSE) give an error for uses of system ++ directories when cross linking instead of a warning. */ ++ bool error_poison_system_directories; ++ + /* Big or little endian as set on command line. */ + enum endian_enum endian; + +diff --git a/ld/ld.texi b/ld/ld.texi +index db3a9f09b45..9dacc934f80 100644 +--- a/ld/ld.texi ++++ b/ld/ld.texi +@@ -2949,6 +2949,18 @@ string identifying the original linked file does not change. + Passing @code{none} for @var{style} disables the setting from any + @code{--build-id} options earlier on the command line. + ++@kindex --no-poison-system-directories ++@item --no-poison-system-directories ++Do not warn for @option{-L} options using system directories such as ++@file{/usr/lib} when cross linking. This option is intended for use ++in chroot environments when such directories contain the correct ++libraries for the target system rather than the host. ++ ++@kindex --error-poison-system-directories ++@item --error-poison-system-directories ++Give an error instead of a warning for @option{-L} options using ++system directories when cross linking. ++ + @kindex --package-metadata=@var{JSON} + @item --package-metadata=@var{JSON} + Request the creation of a @code{.note.package} ELF note section. The +diff --git a/ld/ldfile.c b/ld/ldfile.c +index b8fd4e5d8e0..1f1d8e23bc9 100644 +--- a/ld/ldfile.c ++++ b/ld/ldfile.c +@@ -117,6 +117,23 @@ ldfile_add_library_path (const char *name, bool cmdline) + new_dirs->name = concat (ld_sysroot, name + strlen ("$SYSROOT"), (const char *) NULL); + else + new_dirs->name = xstrdup (name); ++ ++#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES ++ if (command_line.poison_system_directories ++ && ((!strncmp (name, "/lib", 4)) ++ || (!strncmp (name, "/usr/lib", 8)) ++ || (!strncmp (name, "/usr/local/lib", 14)) ++ || (!strncmp (name, "/usr/X11R6/lib", 14)))) ++ { ++ if (command_line.error_poison_system_directories) ++ einfo (_("%X%P: error: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ else ++ einfo (_("%P: warning: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ } ++#endif ++ + } + + /* Try to open a BFD for a lang_input_statement. */ +diff --git a/ld/ldlex.h b/ld/ldlex.h +index 0538f0a06a1..d1de3aec23d 100644 +--- a/ld/ldlex.h ++++ b/ld/ldlex.h +@@ -166,6 +166,8 @@ enum option_values + OPTION_CTF_VARIABLES, + OPTION_NO_CTF_VARIABLES, + OPTION_CTF_SHARE_TYPES, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES, + OPTION_WARN_EXECSTACK, + OPTION_NO_WARN_EXECSTACK, + OPTION_WARN_RWX_SEGMENTS, +diff --git a/ld/ldmain.c b/ld/ldmain.c +index 9290a189b0d..e2e3074e872 100644 +--- a/ld/ldmain.c ++++ b/ld/ldmain.c +@@ -321,6 +321,8 @@ main (int argc, char **argv) + command_line.warn_mismatch = true; + command_line.warn_search_mismatch = true; + command_line.check_section_addresses = -1; ++ command_line.poison_system_directories = true; ++ command_line.error_poison_system_directories = false; + + /* We initialize DEMANGLING based on the environment variable + COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the +diff --git a/ld/lexsup.c b/ld/lexsup.c +index c5960385572..da0a7829914 100644 +--- a/ld/lexsup.c ++++ b/ld/lexsup.c +@@ -613,6 +613,14 @@ static const struct ld_option ld_options[] = + " is: share-unconflicted (default),\n" + " share-duplicated"), + TWO_DASHES }, ++ { {"no-poison-system-directories", no_argument, NULL, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Do not warn for -L options using system directories"), ++ TWO_DASHES }, ++ { {"error-poison-system-directories", no_argument, NULL, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Give an error for -L options using system directories"), ++ TWO_DASHES }, + }; + + #define OPTION_COUNT ARRAY_SIZE (ld_options) +@@ -625,6 +633,7 @@ parse_args (unsigned argc, char **argv) + int ingroup = 0; + char *default_dirlist = NULL; + char *shortopts; ++ char *BR_paranoid_env; + struct option *longopts; + struct option *really_longopts; + int last_optind; +@@ -1692,6 +1701,14 @@ parse_args (unsigned argc, char **argv) + } + break; + ++ case OPTION_NO_POISON_SYSTEM_DIRECTORIES: ++ command_line.poison_system_directories = false; ++ break; ++ ++ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES: ++ command_line.error_poison_system_directories = true; ++ break; ++ + case OPTION_PUSH_STATE: + input_flags.pushed = xmemdup (&input_flags, + sizeof (input_flags), +@@ -1837,6 +1854,10 @@ parse_args (unsigned argc, char **argv) + command_line.soname = NULL; + } + ++ BR_paranoid_env = getenv("BR_COMPILER_PARANOID_UNSAFE_PATH"); ++ if (BR_paranoid_env && strlen(BR_paranoid_env) > 0) ++ command_line.error_poison_system_directories = true; ++ + while (ingroup) + { + einfo (_("%P: missing --end-group; added as last command line option\n")); +-- +2.40.1 + diff --git a/package/binutils/binutils.hash b/package/binutils/binutils.hash new file mode 100644 index 00000000..ac724d5c --- /dev/null +++ b/package/binutils/binutils.hash @@ -0,0 +1,11 @@ +# From https://gcc.gnu.org/pub/binutils/releases/sha512.sum +sha512 a37e042523bc46494d99d5637c3f3d8f9956d9477b748b3b1f6d7dfbb8d968ed52c932e88a4e946c6f77b8f48f1e1b360ca54c3d298f17193f3b4963472f6925 binutils-2.40.tar.xz +sha512 5df45d0bd6ddabdce4f35878c041e46a92deef01e7dea5facc97fd65cc06b59abc6fba0eb454b68e571c7e14038dc823fe7f2263843e6e627b7444eaf0fe9374 binutils-2.41.tar.xz +sha512 155f3ba14cd220102f4f29a4f1e5cfee3c48aa03b74603460d05afb73c70d6657a9d87eee6eb88bf13203fe6f31177a5c9addc04384e956e7da8069c8ecd20a6 binutils-2.42.tar.xz + +# Locally calculated (fetched from Github) +sha512 3518b47d5c11d1fb478ee152bde1719363f9391db73f3b9f5491217c17742bef8ebca6a51a40302dfaa9476c5a32a8b8f70a4bf64289422dea5f750ae53ab88d binutils-gdb-arc-2023.09-release.tar.gz + +# locally computed +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING3 +sha256 56bdea73b6145ef6ac5259b3da390b981d840c24cb03b8e1cbc678de7ecfa18d COPYING.LIB diff --git a/package/binutils/binutils.mk b/package/binutils/binutils.mk new file mode 100644 index 00000000..d98dd7b8 --- /dev/null +++ b/package/binutils/binutils.mk @@ -0,0 +1,150 @@ +################################################################################ +# +# binutils +# +################################################################################ + +# Version is set when using buildroot toolchain. +# If not, we do like other packages +BINUTILS_VERSION = $(call qstrip,$(BR2_BINUTILS_VERSION)) +ifeq ($(BINUTILS_VERSION),) +ifeq ($(BR2_arc),y) +BINUTILS_VERSION = arc-2023.09-release +else +BINUTILS_VERSION = 2.41 +endif +endif # BINUTILS_VERSION + +ifeq ($(BINUTILS_VERSION),arc-2023.09-release) +BINUTILS_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,binutils-gdb,$(BINUTILS_VERSION)) +BINUTILS_SOURCE = binutils-gdb-$(BINUTILS_VERSION).tar.gz +BINUTILS_FROM_GIT = y +endif + +BINUTILS_SITE ?= $(BR2_GNU_MIRROR)/binutils +BINUTILS_SOURCE ?= binutils-$(BINUTILS_VERSION).tar.xz +BINUTILS_EXTRA_CONFIG_OPTIONS = $(call qstrip,$(BR2_BINUTILS_EXTRA_CONFIG_OPTIONS)) +BINUTILS_INSTALL_STAGING = YES +BINUTILS_DEPENDENCIES = zlib $(TARGET_NLS_DEPENDENCIES) +BINUTILS_MAKE_OPTS = LIBS=$(TARGET_NLS_LIBS) +BINUTILS_LICENSE = GPL-3.0+, libiberty LGPL-2.1+ +BINUTILS_LICENSE_FILES = COPYING3 COPYING.LIB +BINUTILS_CPE_ID_VENDOR = gnu + +ifeq ($(BINUTILS_FROM_GIT),y) +BINUTILS_DEPENDENCIES += host-flex host-bison +HOST_BINUTILS_DEPENDENCIES += host-flex host-bison +endif + +# When binutils sources are fetched from the binutils-gdb repository, +# they also contain the gdb sources, but gdb shouldn't be built, so we +# disable it. +BINUTILS_DISABLE_GDB_CONF_OPTS = \ + --disable-sim \ + --disable-gdb + +# We need to specify host & target to avoid breaking ARM EABI +BINUTILS_CONF_OPTS = \ + --disable-multilib \ + --disable-werror \ + --host=$(GNU_TARGET_NAME) \ + --target=$(GNU_TARGET_NAME) \ + --enable-install-libiberty \ + --enable-build-warnings=no \ + --with-system-zlib \ + --disable-gprofng \ + $(BINUTILS_DISABLE_GDB_CONF_OPTS) \ + $(BINUTILS_EXTRA_CONFIG_OPTIONS) \ + --without-zstd + +ifeq ($(BR2_STATIC_LIBS),y) +BINUTILS_CONF_OPTS += --disable-plugins +endif + +# Don't build documentation. It takes up extra space / build time, +# and sometimes needs specific makeinfo versions to work +BINUTILS_CONF_ENV += MAKEINFO=true +BINUTILS_MAKE_OPTS += MAKEINFO=true +BINUTILS_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MAKEINFO=true install +HOST_BINUTILS_CONF_ENV += MAKEINFO=true +HOST_BINUTILS_MAKE_OPTS += MAKEINFO=true +HOST_BINUTILS_INSTALL_OPTS += MAKEINFO=true install + +# Workaround a build issue with -Os for ARM Cortex-M cpus. +# (Binutils 2.25.1 and 2.26.1) +# https://sourceware.org/bugzilla/show_bug.cgi?id=20552 +ifeq ($(BR2_ARM_CPU_ARMV7M)$(BR2_OPTIMIZE_S),yy) +BINUTILS_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -O2" +endif + +# "host" binutils should actually be "cross" +# We just keep the convention of "host utility" for now +HOST_BINUTILS_CONF_OPTS = \ + --disable-multilib \ + --disable-werror \ + --target=$(GNU_TARGET_NAME) \ + --disable-shared \ + --enable-static \ + --with-sysroot=$(STAGING_DIR) \ + --enable-poison-system-directories \ + --without-debuginfod \ + --enable-plugins \ + --enable-lto \ + $(BINUTILS_DISABLE_GDB_CONF_OPTS) \ + $(BINUTILS_EXTRA_CONFIG_OPTIONS) \ + --without-zstd + +ifeq ($(BR2_BINUTILS_GPROFNG),y) +HOST_BINUTILS_DEPENDENCIES += host-bison +HOST_BINUTILS_CONF_OPTS += --enable-gprofng +else +HOST_BINUTILS_CONF_OPTS += --disable-gprofng +endif + +# binutils run configure script of subdirs at make time, so ensure +# our TARGET_CONFIGURE_ARGS are taken into consideration for those +BINUTILS_MAKE_ENV = $(TARGET_CONFIGURE_ARGS) + +# We just want libbfd, libiberty and libopcodes, +# not the full-blown binutils in staging +define BINUTILS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/bfd DESTDIR=$(STAGING_DIR) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/opcodes DESTDIR=$(STAGING_DIR) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libiberty DESTDIR=$(STAGING_DIR) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libsframe DESTDIR=$(STAGING_DIR) install +endef + +# If we don't want full binutils on target +ifneq ($(BR2_PACKAGE_BINUTILS_TARGET),y) +# libiberty is static-only, so it is only installed to staging, above. +define BINUTILS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/bfd DESTDIR=$(TARGET_DIR) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/opcodes DESTDIR=$(TARGET_DIR) install +endef +endif + +ifneq ($(ARCH_XTENSA_OVERLAY_FILE),) +define BINUTILS_XTENSA_OVERLAY_EXTRACT + $(call arch-xtensa-overlay-extract,$(@D),binutils) +endef +BINUTILS_POST_EXTRACT_HOOKS += BINUTILS_XTENSA_OVERLAY_EXTRACT +BINUTILS_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL) +HOST_BINUTILS_POST_EXTRACT_HOOKS += BINUTILS_XTENSA_OVERLAY_EXTRACT +HOST_BINUTILS_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL) +endif + +# Hardlinks between binaries in different directories cause a problem +# with rpath fixup, so we de-hardlink those binaries, and replace them +# with copies instead. +BINUTILS_TOOLS = ar as ld ld.bfd nm objcopy objdump ranlib readelf strip +define HOST_BINUTILS_FIXUP_HARDLINKS + $(foreach tool,$(BINUTILS_TOOLS),\ + rm -f $(HOST_DIR)/$(GNU_TARGET_NAME)/bin/$(tool) && \ + cp -a $(HOST_DIR)/bin/$(GNU_TARGET_NAME)-$(tool) \ + $(HOST_DIR)/$(GNU_TARGET_NAME)/bin/$(tool) + ) +endef +HOST_BINUTILS_POST_INSTALL_HOOKS += HOST_BINUTILS_FIXUP_HARDLINKS + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/biosdevname/Config.in b/package/biosdevname/Config.in new file mode 100644 index 00000000..5cdf5426 --- /dev/null +++ b/package/biosdevname/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_BIOSDEVNAME + bool "biosdevname" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_PCIUTILS + select BR2_PACKAGE_ZLIB + help + Biosdevname is a udev helper that looks at various BIOS tables + to figure out what the actual hardware names are for Ethernet + ports and renames the ports accordingly. This has the + advantage of always referring to the same port regardless of + system or hardware changes that might otherwise alter the + typical ethX naming. + + https://github.com/dell/biosdevname/ diff --git a/package/biosdevname/biosdevname.hash b/package/biosdevname/biosdevname.hash new file mode 100644 index 00000000..8dc16b1e --- /dev/null +++ b/package/biosdevname/biosdevname.hash @@ -0,0 +1,3 @@ +# Locally computed hashes, not provided by upstream +sha256 3a67fee0c315996bbba586c1c077e57625382d38dc48fb3c9e84d56a7a5effad biosdevname-0.7.3.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/biosdevname/biosdevname.mk b/package/biosdevname/biosdevname.mk new file mode 100644 index 00000000..574608c5 --- /dev/null +++ b/package/biosdevname/biosdevname.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# biosdevname +# +################################################################################ + +BIOSDEVNAME_VERSION = 0.7.3 +BIOSDEVNAME_SITE = $(call github,dell,biosdevname,v$(BIOSDEVNAME_VERSION)) +BIOSDEVNAME_LICENSE = GPL +BIOSDEVNAME_LICENSE_FILES = COPYING +BIOSDEVNAME_CONF_OPTS = --exec-prefix=/ +BIOSDEVNAME_DEPENDENCIES = pciutils udev zlib +BIOSDEVNAME_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/bird/0001-configure.ac-fix-build-with-autoconf-2.70.patch b/package/bird/0001-configure.ac-fix-build-with-autoconf-2.70.patch new file mode 100644 index 00000000..c1adf484 --- /dev/null +++ b/package/bird/0001-configure.ac-fix-build-with-autoconf-2.70.patch @@ -0,0 +1,33 @@ +From aa5bc6d2e59c5257d777a45ee4a0e0a784c44244 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 5 Nov 2021 20:58:41 +0100 +Subject: [PATCH] configure.ac: properly evaluate ac_test_CFLAGS + +Since autoconf 2.69 and +https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=76754e04fce5f6a7701bec57b057020585df2ae3 +ac_test_CFLAGS is set to ${CFLAGS+y} instead of ${CFLAGS+set}. + +Just test that ac_test_CFLAGS is not empty, to support both cases. + +Signed-off-by: Fabrice Fontaine +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 64181d29..b4b3fcfb 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -114,7 +114,7 @@ AC_SEARCH_LIBS([clock_gettime], [rt posix4], + AC_CANONICAL_HOST + + # Store this value because ac_test_CFLAGS is overwritten by AC_PROG_CC +-if test "$ac_test_CFLAGS" != set ; then ++if ! test "$ac_test_CFLAGS" ; then + bird_cflags_default=yes + fi + +-- +2.33.0 + diff --git a/package/bird/Config.in b/package/bird/Config.in new file mode 100644 index 00000000..866fc656 --- /dev/null +++ b/package/bird/Config.in @@ -0,0 +1,86 @@ +config BR2_PACKAGE_BIRD + bool "bird" + depends on !BR2_nios2 # relocations don't fit + depends on BR2_USE_MMU # fork() + help + BIRD Internet Routing Daemon + + The BIRD project aims to develop a dynamic IP routing daemon + with full support of all modern routing protocols, easy to + use configuration interface and powerful route filtering + language + + http://bird.network.cz/ + +if BR2_PACKAGE_BIRD + +config BR2_PACKAGE_BIRD_CLIENT + bool "birdc" + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_READLINE + help + Enable the BIRD client + +comment "protocol support" + +config BR2_PACKAGE_BIRD_BABEL + bool "babel" + help + Enable Babel protocol. + +config BR2_PACKAGE_BIRD_BFD + bool "bfd" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + help + Enable BFD protocol. + +comment "BFD protocol needs a toolchain w/ NPTL" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL + +config BR2_PACKAGE_BIRD_BGP + bool "bgp" + default y + help + Enable BGP protocol. + +config BR2_PACKAGE_BIRD_MRT + bool "mrt" + help + Enable MRT protocol. + +config BR2_PACKAGE_BIRD_OSPF + bool "ospf" + help + Enable OSPFv2 and OSPFv3 protocol. + +config BR2_PACKAGE_BIRD_PERF + bool "perf" + help + Enable Perf protocol. + +config BR2_PACKAGE_BIRD_PIPE + bool "pipe" + help + Enable Pipe protocol. + +config BR2_PACKAGE_BIRD_RADV + bool "radv" + help + Enable RAdv protocol. + +config BR2_PACKAGE_BIRD_RIP + bool "rip" + help + Enable RIP protocol. + +config BR2_PACKAGE_BIRD_RPKI + bool "rpki" + help + Enable RPKI protocol. + +config BR2_PACKAGE_BIRD_STATIC + bool "static" + help + Enable Static protocol. + +endif diff --git a/package/bird/bird.hash b/package/bird/bird.hash new file mode 100644 index 00000000..a62fbba6 --- /dev/null +++ b/package/bird/bird.hash @@ -0,0 +1,2 @@ +sha256 3ec462a237d06d1f4455d6ec00a42f0b1686061fc988e5c89a841d01dd753b53 bird-2.0.12.tar.gz +sha256 94c53c84320078920ac1f0d49c81a4e9004512f534521a58bdf145acbcbc2cd2 README diff --git a/package/bird/bird.mk b/package/bird/bird.mk new file mode 100644 index 00000000..f1b2ee6c --- /dev/null +++ b/package/bird/bird.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# bird +# +################################################################################ + +BIRD_VERSION = 2.0.12 +BIRD_SITE = https://bird.network.cz/download +BIRD_LICENSE = GPL-2.0+ +BIRD_LICENSE_FILES = README +BIRD_CPE_ID_VENDOR = nic +BIRD_SELINUX_MODULES = bird +BIRD_DEPENDENCIES = host-flex host-bison + +# 0001-configure.ac-fix-build-with-autoconf-2.70.patch +BIRD_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_BIRD_CLIENT),y) +BIRD_CONF_OPTS += --enable-client +BIRD_DEPENDENCIES += ncurses readline +else +BIRD_CONF_OPTS += --disable-client +endif + +ifeq ($(BR2_PACKAGE_LIBSSH),y) +BIRD_CONF_OPTS += --enable-libssh +BIRD_DEPENDENCIES += libssh +else +BIRD_CONF_OPTS += --disable-libssh +endif + +BIRD_PROTOCOLS = \ + $(if $(BR2_PACKAGE_BIRD_BFD),bfd) \ + $(if $(BR2_PACKAGE_BIRD_BABEL),babel) \ + $(if $(BR2_PACKAGE_BIRD_BGP),bgp) \ + $(if $(BR2_PACKAGE_BIRD_MRT),mrt) \ + $(if $(BR2_PACKAGE_BIRD_OSPF),ospf) \ + $(if $(BR2_PACKAGE_BIRD_PERF),perf) \ + $(if $(BR2_PACKAGE_BIRD_PIPE),pipe) \ + $(if $(BR2_PACKAGE_BIRD_RADV),radv) \ + $(if $(BR2_PACKAGE_BIRD_RIP),rip) \ + $(if $(BR2_PACKAGE_BIRD_RPKI),rpki) \ + $(if $(BR2_PACKAGE_BIRD_STATIC),static) + +BIRD_CONF_OPTS += --with-protocols=$(subst $(space),$(comma),$(strip $(BIRD_PROTOCOLS))) + +$(eval $(autotools-package)) diff --git a/package/bison/bison.hash b/package/bison/bison.hash new file mode 100644 index 00000000..98ce5b97 --- /dev/null +++ b/package/bison/bison.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature from +# http://mirror.keystealth.org/gnu/bison/bison-3.8.2.tar.xz.sig +sha256 9bba0214ccf7f1079c5d59210045227bcf619519840ebfa80cd3849cff5a5bf2 bison-3.8.2.tar.xz +# License files, locally calculated +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 COPYING diff --git a/package/bison/bison.mk b/package/bison/bison.mk new file mode 100644 index 00000000..27038de6 --- /dev/null +++ b/package/bison/bison.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# bison +# +################################################################################ + +BISON_VERSION = 3.8.2 +BISON_SOURCE = bison-$(BISON_VERSION).tar.xz +BISON_SITE = $(BR2_GNU_MIRROR)/bison +BISON_LICENSE = GPL-3.0+ +BISON_LICENSE_FILES = COPYING +BISON_CPE_ID_VENDOR = gnu +# parallel build issue in examples/c/reccalc/ +BISON_MAKE = $(MAKE1) +HOST_BISON_DEPENDENCIES = host-m4 +HOST_BISON_CONF_OPTS = --enable-relocatable +HOST_BISON_CONF_ENV = ac_cv_libtextstyle=no + +$(eval $(host-autotools-package)) diff --git a/package/bitcoin/Config.in b/package/bitcoin/Config.in new file mode 100644 index 00000000..060cae24 --- /dev/null +++ b/package/bitcoin/Config.in @@ -0,0 +1,54 @@ +config BR2_PACKAGE_BITCOIN_ARCH_SUPPORTS + bool + default y if BR2_TOOLCHAIN_HAS_ATOMIC + # bitcoin uses 8-byte __atomic intrinsics, which are not + # available on ARM noMMU platforms that we + # support. BR2_TOOLCHAIN_HAS_ATOMIC does not provide a + # size-level granularity to express this dependency. + depends on !(BR2_arm || BR2_armeb) || BR2_USE_MMU + +config BR2_PACKAGE_BITCOIN + bool "bitcoin" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread, boost-filesystem + depends on BR2_PACKAGE_BITCOIN_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_9 + depends on BR2_TOOLCHAIN_HAS_THREADS # boost + depends on BR2_USE_WCHAR + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_BOOST_THREAD + select BR2_PACKAGE_LIBEVENT + help + Bitcoin Core is an open source project which maintains and + releases Bitcoin client software called “Bitcoin Core”. + + It is a direct descendant of the original Bitcoin software + client released by Satoshi Nakamoto after he published the + famous Bitcoin whitepaper. + + Bitcoin Core consists of both "full-node" software for fully + validating the blockchain as well as a bitcoin wallet. The + project also currently maintains related software such as + the cryptography library libsecp256k1 and others located at + GitHub. + + https://bitcoincore.org + +if BR2_PACKAGE_BITCOIN + +config BR2_PACKAGE_BITCOIN_WALLET + bool "wallet support" + select BR2_PACKAGE_SQLITE + help + Enable bitcoin wallet support. + +endif + +comment "bitcoin needs a toolchain w/ C++, threads, wchar, gcc >= 9" + depends on BR2_PACKAGE_BITCOIN_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_9 diff --git a/package/bitcoin/bitcoin.hash b/package/bitcoin/bitcoin.hash new file mode 100644 index 00000000..9bd08430 --- /dev/null +++ b/package/bitcoin/bitcoin.hash @@ -0,0 +1,7 @@ +# Hash from: https://bitcoincore.org/bin/bitcoin-core-26.2/SHA256SUMS +# After checking pgp signature from: +# https://bitcoincore.org/bin/bitcoin-core-26.2/SHA256SUMS.asc +sha256 78d59418741f45cbdaa9bf20ebc49a5e95ff9f7172f72fc78d14307eaf341b3c bitcoin-26.2.tar.gz + +# Hash for license file +sha256 a6331cd1f889397adfc0c3b0535682a20950c6cf8e5c712e9997a15ce98324e1 COPYING diff --git a/package/bitcoin/bitcoin.mk b/package/bitcoin/bitcoin.mk new file mode 100644 index 00000000..9ca29092 --- /dev/null +++ b/package/bitcoin/bitcoin.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# bitcoin +# +################################################################################ + +BITCOIN_VERSION = 26.2 +BITCOIN_SITE = https://bitcoincore.org/bin/bitcoin-core-$(BITCOIN_VERSION) +BITCOIN_AUTORECONF = YES +BITCOIN_LICENSE = MIT +BITCOIN_LICENSE_FILES = COPYING +BITCOIN_CPE_ID_VENDOR = bitcoin +BITCOIN_CPE_ID_PRODUCT = bitcoin_core +BITCOIN_DEPENDENCIES = host-pkgconf boost libevent +BITCOIN_MAKE_ENV = BITCOIN_GENBUILD_NO_GIT=1 +# Berkeley Database (bdb) support is always disabled. It is only +# needed for legacy wallet format. New wallets are using SQLite. +BITCOIN_CONF_OPTS = \ + --disable-bench \ + --disable-tests \ + --with-boost-libdir=$(STAGING_DIR)/usr/lib/ \ + --disable-hardening \ + --without-bdb \ + --without-gui + +ifeq ($(BR2_PACKAGE_BITCOIN_WALLET),y) +BITCOIN_DEPENDENCIES += sqlite +BITCOIN_CONF_OPTS += \ + --enable-wallet \ + --with-sqlite +else +BITCOIN_CONF_OPTS += \ + --disable-wallet \ + --without-sqlite +endif + +ifeq ($(BR2_PACKAGE_LIBMINIUPNPC),y) +BITCOIN_DEPENDENCIES += libminiupnpc +BITCOIN_CONF_OPTS += --with-miniupnpc +else +BITCOIN_CONF_OPTS += --without-miniupnpc +endif + +ifeq ($(BR2_PACKAGE_ZEROMQ),y) +BITCOIN_DEPENDENCIES += zeromq +BITCOIN_CONF_OPTS += --with-zmq +else +BITCOIN_CONF_OPTS += --without-zmq +endif + +$(eval $(autotools-package)) diff --git a/package/bitstream-vera/Config.in b/package/bitstream-vera/Config.in new file mode 100644 index 00000000..034f115b --- /dev/null +++ b/package/bitstream-vera/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_BITSTREAM_VERA + bool "Bitstream Vera" + help + Bitstream Vera font family. + + https://www.gnome.org/fonts/ diff --git a/package/bitstream-vera/bitstream-vera.hash b/package/bitstream-vera/bitstream-vera.hash new file mode 100644 index 00000000..54deb266 --- /dev/null +++ b/package/bitstream-vera/bitstream-vera.hash @@ -0,0 +1,4 @@ +# From https://download.gnome.org/sources/ttf-bitstream-vera/1.10/ttf-bitstream-vera-1.10.tar.bz2.sha256sum +sha256 db5b27df7bbb318036ebdb75acd3e98f1bd6eb6608fb70a67d478cd243d178dc ttf-bitstream-vera-1.10.tar.bz2 +# locally computed +sha256 3361d054759a2fc686a2c058be82deaf9c2e6fe549be9004d7935a6c1736315d COPYRIGHT.TXT diff --git a/package/bitstream-vera/bitstream-vera.mk b/package/bitstream-vera/bitstream-vera.mk new file mode 100644 index 00000000..2c9dc1a5 --- /dev/null +++ b/package/bitstream-vera/bitstream-vera.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# bitstream-vera +# +################################################################################ + +BITSTREAM_VERA_VERSION = 1.10 +BITSTREAM_VERA_SITE = https://download.gnome.org/sources/ttf-bitstream-vera/$(BITSTREAM_VERA_VERSION) +BITSTREAM_VERA_SOURCE = ttf-bitstream-vera-$(BITSTREAM_VERA_VERSION).tar.bz2 +BITSTREAM_VERA_TARGET_DIR = $(TARGET_DIR)/usr/share/fonts/ttf-bitstream-vera +BITSTREAM_VERA_LICENSE = BitstreamVera +BITSTREAM_VERA_LICENSE_FILES = COPYRIGHT.TXT + +define BITSTREAM_VERA_INSTALL_TARGET_CMDS + mkdir -p $(BITSTREAM_VERA_TARGET_DIR) + $(INSTALL) -m 644 $(@D)/*.ttf $(BITSTREAM_VERA_TARGET_DIR) +endef + +$(eval $(generic-package)) diff --git a/package/bitstream/Config.in b/package/bitstream/Config.in new file mode 100644 index 00000000..9d967a0f --- /dev/null +++ b/package/bitstream/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_BITSTREAM + bool "bitstream" + help + biTStream is a set of C headers allowing a simpler access to + binary structures such as specified by MPEG, DVB, IETF, + SMPTE, IEEE, SCTE, etc. + + http://www.videolan.org/developers/bitstream.html diff --git a/package/bitstream/bitstream.hash b/package/bitstream/bitstream.hash new file mode 100644 index 00000000..bdaf90c0 --- /dev/null +++ b/package/bitstream/bitstream.hash @@ -0,0 +1,6 @@ +# From https://get.videolan.org/bitstream/1.5/bitstream-1.5.tar.bz2.md5 +md5 34630d13332fd1575bcc8531b0a596be bitstream-1.5.tar.bz2 +# From https://get.videolan.org/bitstream/1.5/bitstream-1.5.tar.bz2.sha256 +sha256 45fc5a5a6e4537a69fa8440821e87b76252135180a3070c631b0b36ce0a3b90a bitstream-1.5.tar.bz2 +# Locally computed +sha256 9644a812f9a8377a59acb7092a36ce8882a39743425d9171a8fb84637e2f6e04 COPYING diff --git a/package/bitstream/bitstream.mk b/package/bitstream/bitstream.mk new file mode 100644 index 00000000..12124a63 --- /dev/null +++ b/package/bitstream/bitstream.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# bitstream +# +################################################################################ + +BITSTREAM_VERSION = 1.5 +BITSTREAM_SOURCE = bitstream-$(BITSTREAM_VERSION).tar.bz2 +BITSTREAM_SITE = https://get.videolan.org/bitstream/$(BITSTREAM_VERSION) +BITSTREAM_LICENSE = MIT +BITSTREAM_LICENSE_FILES = COPYING + +# package consists of header files only +BITSTREAM_INSTALL_STAGING = YES +BITSTREAM_INSTALL_TARGET = NO + +define BITSTREAM_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) PREFIX=/usr install +endef + +$(eval $(generic-package)) diff --git a/package/bitwise/Config.in b/package/bitwise/Config.in new file mode 100644 index 00000000..e955da37 --- /dev/null +++ b/package/bitwise/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_BITWISE + bool "bitwise" + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_READLINE + help + Bitwise is multi base interactive calculator + supporting dynamic base conversion and bit manipulation. + It's a handy tool for low level hackers, + kernel developers and device drivers developers. + + https://github.com/mellowcandle/bitwise diff --git a/package/bitwise/bitwise.hash b/package/bitwise/bitwise.hash new file mode 100644 index 00000000..9da1a4c0 --- /dev/null +++ b/package/bitwise/bitwise.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 806271fa5bf31de0600315e8720004a8f529954480e991ca84a9868dc1cae97e bitwise-v0.50.tar.gz +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 COPYING diff --git a/package/bitwise/bitwise.mk b/package/bitwise/bitwise.mk new file mode 100644 index 00000000..5bce92fc --- /dev/null +++ b/package/bitwise/bitwise.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# bitwise +# +################################################################################ + +BITWISE_VERSION = 0.50 +BITWISE_SITE = https://github.com/mellowcandle/bitwise/releases/download/v$(BITWISE_VERSION) +BITWISE_SOURCE = bitwise-v$(BITWISE_VERSION).tar.gz +BITWISE_DEPENDENCIES = ncurses readline +BITWISE_LICENSE = GPL-3.0 +BITWISE_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/blake3/blake3.hash b/package/blake3/blake3.hash new file mode 100644 index 00000000..2a00d19b --- /dev/null +++ b/package/blake3/blake3.hash @@ -0,0 +1,3 @@ +# sha256 computed locally +sha256 822cd37f70152e5985433d2c50c8f6b2ec83aaf11aa31be9fe71486a91744f37 blake3-1.5.1.tar.gz +sha256 6a94bedb8b707ed97f6e310d0d015ab14e0683ffa0a612b02958581b9cc9fc0e LICENSE diff --git a/package/blake3/blake3.mk b/package/blake3/blake3.mk new file mode 100644 index 00000000..3b1ccb44 --- /dev/null +++ b/package/blake3/blake3.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# blake3 +# +################################################################################ + +BLAKE3_VERSION = 1.5.1 +BLAKE3_SITE = $(call github,BLAKE3-team,BLAKE3,$(BLAKE3_VERSION)) +BLAKE3_SUBDIR = c +BLAKE3_LICENSE = Apache-2.0, CC0-1.0 +BLAKE3_LICENSE_FILES = LICENSE + +# The package is a dependency to ccache so ccache cannot be a dependency +HOST_BLAKE3_ADD_CCACHE_DEPENDENCY = NO + +# We may be a ccache dependency, so we can't use ccache; reset the +# options set by the cmake infra. +HOST_BLAKE3_CONF_OPTS += \ + -UCMAKE_C_COMPILER_LAUNCHER \ + -UCMAKE_CXX_COMPILER_LAUNCHER + +$(eval $(host-cmake-package)) diff --git a/package/blktrace/Config.in b/package/blktrace/Config.in new file mode 100644 index 00000000..951caed5 --- /dev/null +++ b/package/blktrace/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_BLKTRACE + bool "blktrace" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # system() + select BR2_PACKAGE_LIBAIO + help + blktrace is a block layer IO tracing mechanism which provides + detailed information about request queue operations + up to user space. + + http://git.kernel.dk/?p=blktrace.git;a=summary + +comment "blktrace needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/blktrace/blktrace.hash b/package/blktrace/blktrace.hash new file mode 100644 index 00000000..d279419c --- /dev/null +++ b/package/blktrace/blktrace.hash @@ -0,0 +1,6 @@ +# From http://brick.kernel.dk/snaps/MD5SUMS +md5 aa9bc7d76870d8dae56aa816527e8e15 blktrace-1.3.0.tar.bz2 + +# Locally computed +sha256 d6deda03862de2bd1b1b9fba729bbb862d9bca795e6aa7f7ca86b656811a70d6 blktrace-1.3.0.tar.bz2 +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING diff --git a/package/blktrace/blktrace.mk b/package/blktrace/blktrace.mk new file mode 100644 index 00000000..90038fc7 --- /dev/null +++ b/package/blktrace/blktrace.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# blktrace +# +################################################################################ + +BLKTRACE_VERSION = 1.3.0 +BLKTRACE_SOURCE = blktrace-$(BLKTRACE_VERSION).tar.bz2 +BLKTRACE_SITE = http://brick.kernel.dk/snaps +BLKTRACE_DEPENDENCIES = libaio +BLKTRACE_LICENSE = GPL-2.0+ +BLKTRACE_LICENSE_FILES = COPYING +BLKTRACE_CPE_ID_VALID = YES + +define BLKTRACE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define BLKTRACE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) $(TARGET_CONFIGURE_OPTS) install \ + DESTDIR=$(TARGET_DIR) prefix=/usr +endef + +$(eval $(generic-package)) diff --git a/package/bluez-alsa/Config.in b/package/bluez-alsa/Config.in new file mode 100644 index 00000000..d7017264 --- /dev/null +++ b/package/bluez-alsa/Config.in @@ -0,0 +1,47 @@ +config BR2_PACKAGE_BLUEZ_ALSA + bool "bluez-alsa" + depends on !BR2_STATIC_LIBS # bluez5 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C11/stdatomic.h + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # bluez5 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # bluez5 + depends on BR2_USE_MMU # bluez5 -> dbus + depends on BR2_USE_WCHAR # libglib2 + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_MIXER + select BR2_PACKAGE_BLUEZ5_UTILS + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_AUDIO + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_SBC + # samplerate ALSA plugin is needed for proper sample rate + # conversion with Bluetooth devices + select BR2_PACKAGE_LIBSAMPLERATE if BR2_PACKAGE_ALSA_PLUGINS + help + Bluetooth Audio ALSA Backend. + + https://github.com/Arkq/bluez-alsa + +if BR2_PACKAGE_BLUEZ_ALSA + +config BR2_PACKAGE_BLUEZ_ALSA_HCITOP + bool "hcitop" + depends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS + select BR2_PACKAGE_LIBBSD + select BR2_PACKAGE_NCURSES + help + Enable top-like monitoring tool for HCI. + +config BR2_PACKAGE_BLUEZ_ALSA_RFCOMM + bool "rfcomm" + select BR2_PACKAGE_READLINE + help + Simple tool for sending RFCOMM commands. + +endif + +comment "bluez-alsa needs a toolchain w/ wchar, NPTL, headers >= 3.4, dynamic library, gcc >= 4.9" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_USE_MMU diff --git a/package/bluez-alsa/bluez-alsa.hash b/package/bluez-alsa/bluez-alsa.hash new file mode 100644 index 00000000..55138656 --- /dev/null +++ b/package/bluez-alsa/bluez-alsa.hash @@ -0,0 +1,3 @@ +# Locally calculated: +sha256 b69a3e6dd69315194403ee930ac1553aed3fb9a3988e502ae5c24a8bfef70f9f bluez-alsa-4.1.1.tar.gz +sha256 956564dcf06ba65cd7a5eb6cdfd695e2ab0f09ea9684e4eaf079f5d533bd206d LICENSE diff --git a/package/bluez-alsa/bluez-alsa.mk b/package/bluez-alsa/bluez-alsa.mk new file mode 100644 index 00000000..38682c27 --- /dev/null +++ b/package/bluez-alsa/bluez-alsa.mk @@ -0,0 +1,83 @@ +################################################################################ +# +# bluez-alsa +# +################################################################################ + +BLUEZ_ALSA_VERSION = 4.1.1 +BLUEZ_ALSA_SITE = $(call github,Arkq,bluez-alsa,v$(BLUEZ_ALSA_VERSION)) +BLUEZ_ALSA_LICENSE = MIT +BLUEZ_ALSA_LICENSE_FILES = LICENSE +BLUEZ_ALSA_DEPENDENCIES = alsa-lib bluez5_utils libglib2 sbc host-pkgconf + +# git repo, no configure +BLUEZ_ALSA_AUTORECONF = YES + +BLUEZ_ALSA_CONF_OPTS = \ + --enable-a2dpconf \ + --enable-aplay \ + --disable-debug-time \ + --with-alsaplugindir=/usr/lib/alsa-lib \ + --with-alsaconfdir=/etc/alsa/conf.d + +ifeq ($(BR2_PACKAGE_ALSA_PLUGINS),y) +BLUEZ_ALSA_DEPENDENCIES += alsa-plugins +endif + +ifeq ($(BR2_PACKAGE_FDK_AAC),y) +BLUEZ_ALSA_DEPENDENCIES += fdk-aac +BLUEZ_ALSA_CONF_OPTS += --enable-aac +else +BLUEZ_ALSA_CONF_OPTS += --disable-aac +endif + +ifeq ($(BR2_PACKAGE_LAME),y) +BLUEZ_ALSA_DEPENDENCIES += lame +BLUEZ_ALSA_CONF_OPTS += --enable-mp3lame +else +BLUEZ_ALSA_CONF_OPTS += --disable-mp3lame +endif + +ifeq ($(BR2_PACKAGE_MPG123),y) +BLUEZ_ALSA_DEPENDENCIES += mpg123 +BLUEZ_ALSA_CONF_OPTS += --enable-mpg123 +else +BLUEZ_ALSA_CONF_OPTS += --disable-mpg123 +endif + +# no build dependency, disables internal HFP in favor of oFonos HFP profile +ifeq ($(BR2_PACKAGE_OFONO),y) +BLUEZ_ALSA_CONF_OPTS += --enable-ofono +else +BLUEZ_ALSA_CONF_OPTS += --disable-ofono +endif + +# no build dependency, enables integration with UPower D-Bus service +ifeq ($(BR2_PACKAGE_UPOWER),y) +BLUEZ_ALSA_CONF_OPTS += --enable-upower +else +BLUEZ_ALSA_CONF_OPTS += --disable-upower +endif + +ifeq ($(BR2_PACKAGE_BLUEZ_ALSA_HCITOP),y) +BLUEZ_ALSA_DEPENDENCIES += libbsd ncurses +BLUEZ_ALSA_CONF_OPTS += --enable-hcitop +else +BLUEZ_ALSA_CONF_OPTS += --disable-hcitop +endif + +ifeq ($(BR2_PACKAGE_BLUEZ_ALSA_RFCOMM),y) +BLUEZ_ALSA_DEPENDENCIES += readline +BLUEZ_ALSA_CONF_OPTS += --enable-rfcomm +else +BLUEZ_ALSA_CONF_OPTS += --disable-rfcomm +endif + +ifeq ($(BR2_PACKAGE_LIBOPENAPTX),y) +BLUEZ_ALSA_DEPENDENCIES += libopenaptx +BLUEZ_ALSA_CONF_OPTS += --with-libopenaptx --enable-aptx --enable-aptx-hd +else +BLUEZ_ALSA_CONF_OPTS += --without-libopenaptx --disable-aptx --disable-aptx-hd +endif + +$(eval $(autotools-package)) diff --git a/package/bluez-tools/Config.in b/package/bluez-tools/Config.in new file mode 100644 index 00000000..6db874b2 --- /dev/null +++ b/package/bluez-tools/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_BLUEZ_TOOLS + bool "bluez-tools" + depends on BR2_PACKAGE_BLUEZ5_UTILS + depends on BR2_USE_MMU # dbus, libglib2 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2 + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_DBUS_GLIB + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_READLINE if BR2_PACKAGE_BLUEZ5_UTILS + help + A set of tools to manage bluetooth devices for linux + + https://github.com/khvzak/bluez-tools + +comment "bluez-tools needs a toolchain w/ wchar, threads" + depends on BR2_PACKAGE_BLUEZ5_UTILS + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/bluez-tools/bluez-tools.hash b/package/bluez-tools/bluez-tools.hash new file mode 100644 index 00000000..f013f195 --- /dev/null +++ b/package/bluez-tools/bluez-tools.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 dd5acf9e501514f4ad1136af966d2723f3270e0e2fffd6d29da93fa76c9fafa3 bluez-tools-f65321736475429316f07ee94ec0deac8e46ec4a.tar.gz +sha256 b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259 COPYING diff --git a/package/bluez-tools/bluez-tools.mk b/package/bluez-tools/bluez-tools.mk new file mode 100644 index 00000000..00723595 --- /dev/null +++ b/package/bluez-tools/bluez-tools.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# bluez-tools +# +################################################################################ + +BLUEZ_TOOLS_VERSION = f65321736475429316f07ee94ec0deac8e46ec4a +BLUEZ_TOOLS_SITE = $(call github,khvzak,bluez-tools,$(BLUEZ_TOOLS_VERSION)) + +# sources fetched from github, no configure script) +BLUEZ_TOOLS_AUTORECONF = YES +BLUEZ_TOOLS_DEPENDENCIES = host-pkgconf dbus dbus-glib bluez5_utils readline +BLUEZ_TOOLS_LICENSE = GPL-2.0+ +BLUEZ_TOOLS_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/bluez5_utils-headers/Config.in b/package/bluez5_utils-headers/Config.in new file mode 100644 index 00000000..e29e3dfe --- /dev/null +++ b/package/bluez5_utils-headers/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_BLUEZ5_UTILS_HEADERS + bool + help + Header files from bluez utils version 5.x + + http://www.bluez.org + http://www.kernel.org/pub/linux/bluetooth diff --git a/package/bluez5_utils-headers/bluez5_utils-headers.hash b/package/bluez5_utils-headers/bluez5_utils-headers.hash new file mode 120000 index 00000000..1f489458 --- /dev/null +++ b/package/bluez5_utils-headers/bluez5_utils-headers.hash @@ -0,0 +1 @@ +../bluez5_utils/bluez5_utils.hash \ No newline at end of file diff --git a/package/bluez5_utils-headers/bluez5_utils-headers.mk b/package/bluez5_utils-headers/bluez5_utils-headers.mk new file mode 100644 index 00000000..2f07a7b4 --- /dev/null +++ b/package/bluez5_utils-headers/bluez5_utils-headers.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# bluez5_utils-headers +# +################################################################################ + +# Keep the version and patches in sync with bluez5_utils +BLUEZ5_UTILS_HEADERS_VERSION = 5.75 +BLUEZ5_UTILS_HEADERS_SOURCE = bluez-$(BLUEZ5_UTILS_VERSION).tar.xz +BLUEZ5_UTILS_HEADERS_SITE = $(BR2_KERNEL_MIRROR)/linux/bluetooth +BLUEZ5_UTILS_HEADERS_DL_SUBDIR = bluez5_utils +BLUEZ5_UTILS_HEADERS_LICENSE = GPL-2.0+, LGPL-2.1+ +BLUEZ5_UTILS_HEADERS_LICENSE_FILES = COPYING COPYING.LIB +BLUEZ5_UTILS_HEADERS_CPE_ID_VENDOR = bluez +BLUEZ5_UTILS_HEADERS_CPE_ID_PRODUCT = bluez + +BLUEZ5_UTILS_HEADERS_INSTALL_STAGING = YES +BLUEZ5_UTILS_HEADERS_INSTALL_TARGET = NO + +define BLUEZ5_UTILS_HEADERS_INSTALL_STAGING_CMDS + $(INSTALL) -d $(STAGING_DIR)/usr/include/bluetooth/ + $(INSTALL) -m 644 $(@D)/lib/*.h $(STAGING_DIR)/usr/include/bluetooth/ +endef + +$(eval $(generic-package)) diff --git a/package/bluez5_utils/0001-configure.ac-Fix-disable-cups.patch b/package/bluez5_utils/0001-configure.ac-Fix-disable-cups.patch new file mode 100644 index 00000000..2c6c46f6 --- /dev/null +++ b/package/bluez5_utils/0001-configure.ac-Fix-disable-cups.patch @@ -0,0 +1,41 @@ +From cb0de49bc6f8a6bf8f01a24599b499aa4bf18032 Mon Sep 17 00:00:00 2001 +From: Lars Wendler +Date: Tue, 16 Apr 2024 07:26:04 +0200 +Subject: [PATCH] configure.ac: Fix --disable-cups +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +or else we get: + configure: error: conditional "CUPS_SERVERBIN" was never defined. + Usually this means the macro was only invoked conditionally. + +Fixes: https://github.com/bluez/bluez/issues/773 + +Upstream: https://patchwork.kernel.org/project/bluetooth/list/?series=844910 +Signed-off-by: Jan Čermák +--- + configure.ac | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 9dea70d..dbba759 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -249,12 +249,12 @@ AM_CONDITIONAL(CUPS, test "${enable_cups}" != "no") + if (test "${enable_cups}" != "no"); then + AC_MSG_CHECKING([cups directory]) + cups_serverbin=`$PKG_CONFIG cups --variable=cups_serverbin` +- AM_CONDITIONAL(CUPS_SERVERBIN, test "${cups_serverbin}" != "") +- if (test "${cups_serverbin}" != ""); then +- AC_SUBST(CUPS_SERVERBIN, ${cups_serverbin}) +- fi + AC_MSG_RESULT([${cups_serverbin}]) + fi ++AM_CONDITIONAL(CUPS_SERVERBIN, test "${cups_serverbin}" != "") ++AS_IF([test "${cups_serverbin}" != ""],[ ++ AC_SUBST(CUPS_SERVERBIN, ${cups_serverbin}) ++]) + + AC_ARG_ENABLE(mesh, AS_HELP_STRING([--enable-mesh], + [enable Mesh profile support]), [enable_mesh=${enableval}]) diff --git a/package/bluez5_utils/0002-configure.ac-fix-sixaxis-build-without-tools.patch b/package/bluez5_utils/0002-configure.ac-fix-sixaxis-build-without-tools.patch new file mode 100644 index 00000000..1e0e34cb --- /dev/null +++ b/package/bluez5_utils/0002-configure.ac-fix-sixaxis-build-without-tools.patch @@ -0,0 +1,35 @@ +From f4795bf64dbf8778fc765b7dad1b1bfb365b48d7 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 8 May 2024 19:54:16 +0200 +Subject: configure.ac: fix sixaxis build without tools + +Fix the following build failure with --enable-sixaxis --enable-udev +--disable-tools raised since version 5.73 and +9f71892b63f6b65dab874a633d88ae2dcad93a16: + +sixaxis.c:(.text.sixaxis_init+0x23): undefined reference to `udev_new' + +Fixes: http://autobuild.buildroot.org/results/c337d0f473c5fbb3e6cda1317ba06f5e2b16a43e + +Upstream: https://git.kernel.org/pub/scm/bluetooth/bluez.git/commit/?id=f4795bf64dbf8778fc765b7dad1b1bfb365b48d7 +Signed-off-by: Fabrice Fontaine +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 9dea70ddc1..8b3cdb4e8f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -226,7 +226,7 @@ AM_CONDITIONAL(MONITOR, test "${enable_monitor}" != "no") + + AC_ARG_ENABLE(udev, AS_HELP_STRING([--disable-udev], + [disable udev device support]), [enable_udev=${enableval}]) +-if (test "${enable_tools}" != "no" && test "${enable_udev}" != "no"); then ++if (test "${enable_udev}" != "no"); then + PKG_CHECK_MODULES(UDEV, libudev >= 196) + AC_DEFINE(HAVE_UDEV, 1, [Define to 1 if udev is required]) + fi +-- +cgit 1.2.3-korg + diff --git a/package/bluez5_utils/Config.in b/package/bluez5_utils/Config.in new file mode 100644 index 00000000..49bb7191 --- /dev/null +++ b/package/bluez5_utils/Config.in @@ -0,0 +1,175 @@ +config BR2_PACKAGE_BLUEZ5_UTILS + bool "bluez-utils" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2 + depends on BR2_USE_MMU # dbus + depends on !BR2_STATIC_LIBS # uses dlfcn + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_LIBGLIB2 + help + BlueZ utils + + Provides Stack, Library and Tooling for Bluetooth Classic + and Bluetooth LE. + + BlueZ utils will use systemd and/or udev if enabled. + + http://www.bluez.org + http://www.kernel.org/pub/linux/bluetooth + +if BR2_PACKAGE_BLUEZ5_UTILS + +config BR2_PACKAGE_BLUEZ5_UTILS_OBEX + bool "build OBEX support" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LIBICAL + help + Enable OBEX support. + +comment "OBEX support needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_BLUEZ5_UTILS_CLIENT + bool "build CLI client" + select BR2_PACKAGE_READLINE + help + Build the command line client "bluetoothctl". + +config BR2_PACKAGE_BLUEZ5_UTILS_MONITOR + bool "build monitor utility" + help + Build monitor utility btmon. + +config BR2_PACKAGE_BLUEZ5_UTILS_TOOLS + bool "build tools" + help + Build tools like bluemoon, btattach, hex2hcd, l2test, + l2ping, mpris-proxy, rctest. + +config BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED + bool "install deprecated tools" + depends on BR2_PACKAGE_BLUEZ5_UTILS_CLIENT || BR2_PACKAGE_BLUEZ5_UTILS_TOOLS + help + Build deprecated tools. + + When "build tools" is selected these tools are installed: + hciattach, hciconfig, hcitool, hcidump, rfcomm, sdptool, + ciptool. + + When CLI client is enabled "gatttool" is installed. + +config BR2_PACKAGE_BLUEZ5_UTILS_EXPERIMENTAL + bool "build experimental tools" + help + Build experimental tools. This is currently only the + "Nokia OBEX PC Suite tool". So, only if OBEX support is + enabled this option has an effect. + +config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_AUDIO + bool "build audio plugins (a2dp and avrcp)" + help + Build plugins for audio profiles (for A2DP and AVRCP). + +config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HEALTH + bool "build health plugin" + help + Build plugin for health profiles. + +config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HID + bool "build hid plugin" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HOG + help + Build plugin for HID (input) profiles. + +comment "hid plugin needs a toolchain w/ headers >= 3.18" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 + +config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HOG + bool "build hog plugin" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 + help + Build plugin for HoG (input) profiles. + +comment "hog plugin needs a toolchain w/ headers >= 3.18" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 + +config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MESH + bool "build mesh plugin" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 # ell + select BR2_PACKAGE_ELL + select BR2_PACKAGE_JSON_C + select BR2_PACKAGE_READLINE + help + Build plugin for Mesh support. + +comment "mesh profile needs a toolchain w/ headers >= 4.12" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 + +config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MIDI + bool "build midi plugin" + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_SEQ + help + Build MIDI support via ALSA sequencer. + +config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NETWORK + bool "build network plugin" + default y + help + Build plugin for PANU, NAP, GN profiles. + +config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NFC + bool "build nfc plugin" + help + Build plugin for NFC pairing. + +config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SAP + bool "build sap plugin" + help + Build plugin for SAP profile. + +config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS + bool "build sixaxis plugin" + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 # hid plugin + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HID # runtime + help + Build sixaxis plugin (support Sony Dualshock + controller) + +comment "sixaxis plugin needs a toolchain w/ headers >= 3.18" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 + +comment "sixaxis plugin needs udev /dev management" + depends on !BR2_PACKAGE_HAS_UDEV + +config BR2_PACKAGE_BLUEZ5_UTILS_TEST + bool "install test scripts" + help + Install the python test scripts from the "test" directory. + +config BR2_PACKAGE_BLUEZ5_UTILS_TOOLS_HID2HCI + bool "build hid2hci tool" + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 # hid plugin + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HID # runtime + select BR2_PACKAGE_BLUEZ5_UTILS_TOOLS + help + Build hid2hci tool + +comment "hid2hci tool needs a toolchain w/ headers >= 3.18" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 + +comment "hid2hci tool needs udev /dev management" + depends on !BR2_PACKAGE_HAS_UDEV + +endif + +comment "bluez5-utils needs a toolchain w/ wchar, threads, headers >= 3.4, dynamic library" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 || BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_USE_MMU diff --git a/package/bluez5_utils/S40bluetoothd b/package/bluez5_utils/S40bluetoothd new file mode 100644 index 00000000..ee4abe8b --- /dev/null +++ b/package/bluez5_utils/S40bluetoothd @@ -0,0 +1,61 @@ +#!/bin/sh + +DAEMON="bluetoothd" +PIDFILE="/var/run/$DAEMON.pid" + +BLUETOOTHD_ARGS="-n" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -m -b -p "$PIDFILE" -x "/usr/libexec/bluetooth/$DAEMON" \ + -- $BLUETOOTHD_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +reload() { + printf 'Reloading %s: ' "$DAEMON" + start-stop-daemon -K -s HUP -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +case "$1" in + start|stop|restart|reload) + "$1";; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/bluez5_utils/bluez5_utils.hash b/package/bluez5_utils/bluez5_utils.hash new file mode 100644 index 00000000..9cc19f87 --- /dev/null +++ b/package/bluez5_utils/bluez5_utils.hash @@ -0,0 +1,5 @@ +# From https://www.kernel.org/pub/linux/bluetooth/sha256sums.asc: +sha256 988cb3c4551f6e3a667708a578f5ca9f93fc896508f98f08709be4f8ab033c2f bluez-5.75.tar.xz +# Locally computed +sha256 b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259 COPYING +sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING.LIB diff --git a/package/bluez5_utils/bluez5_utils.mk b/package/bluez5_utils/bluez5_utils.mk new file mode 100644 index 00000000..da10f95a --- /dev/null +++ b/package/bluez5_utils/bluez5_utils.mk @@ -0,0 +1,205 @@ +################################################################################ +# +# bluez5_utils +# +################################################################################ + +# Keep the version and patches in sync with bluez5_utils-headers +BLUEZ5_UTILS_VERSION = 5.75 +BLUEZ5_UTILS_SOURCE = bluez-$(BLUEZ5_UTILS_VERSION).tar.xz +BLUEZ5_UTILS_SITE = $(BR2_KERNEL_MIRROR)/linux/bluetooth +# 0001-configure.ac-Fix-disable-cups.patch +# 0002-configure.ac-fix-sixaxis-build-without-tools.patch +BLUEZ5_UTILS_AUTORECONF = YES +BLUEZ5_UTILS_INSTALL_STAGING = YES +BLUEZ5_UTILS_LICENSE = GPL-2.0+, LGPL-2.1+ +BLUEZ5_UTILS_LICENSE_FILES = COPYING COPYING.LIB +BLUEZ5_UTILS_CPE_ID_VENDOR = bluez +BLUEZ5_UTILS_CPE_ID_PRODUCT = bluez + +BLUEZ5_UTILS_DEPENDENCIES = \ + $(if $(BR2_PACKAGE_BLUEZ5_UTILS_HEADERS),bluez5_utils-headers) \ + dbus \ + libglib2 + +BLUEZ5_UTILS_CONF_OPTS = \ + --enable-library \ + --disable-cups \ + --disable-datafiles \ + --disable-manpages \ + --disable-asan \ + --disable-lsan \ + --disable-ubsan \ + --disable-pie \ + --with-dbusconfdir=/etc + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_OBEX),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-obex +BLUEZ5_UTILS_DEPENDENCIES += libical +else +BLUEZ5_UTILS_CONF_OPTS += --disable-obex +endif + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_CLIENT),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-client +BLUEZ5_UTILS_DEPENDENCIES += readline +else +BLUEZ5_UTILS_CONF_OPTS += --disable-client +endif + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_MONITOR),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-monitor +else +BLUEZ5_UTILS_CONF_OPTS += --disable-monitor +endif + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_TOOLS),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-tools +else +BLUEZ5_UTILS_CONF_OPTS += --disable-tools +endif + +# experimental plugins +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_EXPERIMENTAL),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-experimental +else +BLUEZ5_UTILS_CONF_OPTS += --disable-experimental +endif + +# enable audio plugins (a2dp and avrcp) +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_AUDIO),y) +BLUEZ5_UTILS_CONF_OPTS += \ + --enable-a2dp \ + --enable-avrcp \ + --enable-bap \ + --enable-mcp \ + --enable-vcp +else +BLUEZ5_UTILS_CONF_OPTS += \ + --disable-a2dp \ + --disable-avrcp \ + --disable-bap \ + --disable-mcp \ + --disable-vcp +endif + +# enable health plugin +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HEALTH),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-health +else +BLUEZ5_UTILS_CONF_OPTS += --disable-health +endif + +# enable hid plugin +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HID),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-hid +else +BLUEZ5_UTILS_CONF_OPTS += --disable-hid +endif + +# enable hog plugin +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HOG),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-hog +else +BLUEZ5_UTILS_CONF_OPTS += --disable-hog +endif + +# enable mesh profile +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MESH),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-external-ell --enable-mesh +BLUEZ5_UTILS_DEPENDENCIES += ell json-c readline +else +BLUEZ5_UTILS_CONF_OPTS += --disable-external-ell --disable-mesh +endif + +# enable midi profile +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MIDI),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-midi +BLUEZ5_UTILS_DEPENDENCIES += alsa-lib +else +BLUEZ5_UTILS_CONF_OPTS += --disable-midi +endif + +# enable network plugin +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NETWORK),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-network +else +BLUEZ5_UTILS_CONF_OPTS += --disable-network +endif + +# enable nfc plugin +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NFC),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-nfc +else +BLUEZ5_UTILS_CONF_OPTS += --disable-nfc +endif + +# enable sap plugin +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SAP),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-sap +else +BLUEZ5_UTILS_CONF_OPTS += --disable-sap +endif + +# enable sixaxis plugin +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-sixaxis +else +BLUEZ5_UTILS_CONF_OPTS += --disable-sixaxis +endif + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED),y) +# install gatttool (For some reason upstream choose not to do it by default) +# gattool depends on the client for readline +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_CLIENT),y) +define BLUEZ5_UTILS_INSTALL_GATTTOOL + $(INSTALL) -D -m 0755 $(@D)/attrib/gatttool $(TARGET_DIR)/usr/bin/gatttool +endef +BLUEZ5_UTILS_POST_INSTALL_TARGET_HOOKS += BLUEZ5_UTILS_INSTALL_GATTTOOL +endif + +# hciattach_bcm43xx defines default firmware path in `/etc/firmware`, but +# Broadcom firmware blobs are usually located in `/lib/firmware`. +BLUEZ5_UTILS_CONF_ENV += \ + CPPFLAGS='$(TARGET_CPPFLAGS) -DFIRMWARE_DIR=\"/lib/firmware\"' +BLUEZ5_UTILS_CONF_OPTS += --enable-deprecated +else +BLUEZ5_UTILS_CONF_OPTS += --disable-deprecated +endif + +# enable test +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_TEST),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-test +else +BLUEZ5_UTILS_CONF_OPTS += --disable-test +endif + +# enable hid2hci tool +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_TOOLS_HID2HCI),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-hid2hci +else +BLUEZ5_UTILS_CONF_OPTS += --disable-hid2hci +endif + +# use udev if available +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-udev +BLUEZ5_UTILS_DEPENDENCIES += udev +else +BLUEZ5_UTILS_CONF_OPTS += --disable-udev +endif + +# integrate with systemd if available +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-systemd +BLUEZ5_UTILS_DEPENDENCIES += systemd +else +BLUEZ5_UTILS_CONF_OPTS += --disable-systemd +endif + +define BLUEZ5_UTILS_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/bluez5_utils/S40bluetoothd \ + $(TARGET_DIR)/etc/init.d/S40bluetoothd +endef + +$(eval $(autotools-package)) diff --git a/package/bmap-tools/Config.in b/package/bmap-tools/Config.in new file mode 100644 index 00000000..b5ccce78 --- /dev/null +++ b/package/bmap-tools/Config.in @@ -0,0 +1,47 @@ +# Historically, the package was named bmap-tools, and that's the name +# under which it was introduced in Buildroot. Since then, it has moved +# to a new home, and got renamed to bmaptool. To avoid useless churn, +# we keep the old symbols, and just refer to bmaptool in the prompt. +config BR2_PACKAGE_BMAP_TOOLS + bool "bmaptool (formerly bmap-tools)" + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON3_PYEXPAT # runtime + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime, pkg_resources + select BR2_PACKAGE_PYTHON_SIX # runtime + help + Tool to flash image files to block devices using the block map + bmaptool is a generic tool for creating the block map (bmap) + for a file, and copying files using the block map. The idea is + that large file containing unused blocks, like raw system + image files, can be copied or flashed a lot faster with + bmaptool than with traditional tools like "dd" or "cp". + + Relevant optional dependencies: + + - Busybox compiled with CONFIG_BZIP2, or BR2_PACKAGE_BZIP2, + to support bz2 compressed images + + - BR2_PACKAGE_PIGZ for optimized gzip decompression + + - Busybox compiled with CONFIG_LZOP, or BR2_PACKAGE_LZOP, to + support lzo compressed images. + + - BR2_PACKAGE_ZIP to support zip compressed images + + - BR2_PACKAGE_LZ4 to support lz4 compressed images + + - BR2_PACKAGE_ZSTD to support zstd compressed images + + - Busybox compiled CONFIG_FEATURE_SEAMLESS_* or + BR2_PACKAGE_TAR to support tar compressed images + + - BR2_PACKAGE_OPENSSH to retrieve images over SSH. + + - BR2_PACKAGE_SSHPASS to retrieve images over SSH if + password authentication is used. + + Image signature verification is not supported as + python-gpgme is not available. Optimized bzip2 decompression + is not supported as pbzip2 is not available. + + https://github.com/yoctoproject/bmaptool diff --git a/package/bmap-tools/Config.in.host b/package/bmap-tools/Config.in.host new file mode 100644 index 00000000..cb4d35a4 --- /dev/null +++ b/package/bmap-tools/Config.in.host @@ -0,0 +1,12 @@ +config BR2_PACKAGE_HOST_BMAP_TOOLS + bool "host bmap-tools" + select BR2_PACKAGE_HOST_PYTHON_SIX # runtime + help + Tool to flash image files to block devices using the block map + bmaptool is a generic tool for creating the block map (bmap) + for a file, and copying files using the block map. The idea is + that large file containing unused blocks, like raw system + image files, can be copied or flashed a lot faster with + bmaptool than with traditional tools like "dd" or "cp". + + https://github.com/yoctoproject/bmaptool diff --git a/package/bmap-tools/bmap-tools.hash b/package/bmap-tools/bmap-tools.hash new file mode 100644 index 00000000..28a68e8b --- /dev/null +++ b/package/bmap-tools/bmap-tools.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3c741ccdd5049b5cb6983bc186f7be8040a132ed7e9c2afda4d9e7390888163c bmap-tools-3.8.0.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/bmap-tools/bmap-tools.mk b/package/bmap-tools/bmap-tools.mk new file mode 100644 index 00000000..3455063e --- /dev/null +++ b/package/bmap-tools/bmap-tools.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# bmap-tools +# +################################################################################ + +BMAP_TOOLS_VERSION = 3.8.0 +BMAP_TOOLS_SITE = $(call github,yoctoproject,bmaptool,v$(BMAP_TOOLS_VERSION)) +BMAP_TOOLS_LICENSE = GPL-2.0 +BMAP_TOOLS_LICENSE_FILES = LICENSE +BMAP_TOOLS_SETUP_TYPE = setuptools +BMAP_TOOLS_DEPENDENCIES = host-python-poetry-core +HOST_BMAP_TOOLS_DEPENDENCIES = host-python-poetry-core + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/bmon/Config.in b/package/bmon/Config.in new file mode 100644 index 00000000..cb83cc28 --- /dev/null +++ b/package/bmon/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_BMON + bool "bmon" + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_LIBCONFUSE + select BR2_PACKAGE_LIBNL + select BR2_PACKAGE_NCURSES + help + bmon is a bandwidth monitor capable of retrieving statistics + from various input modules. It provides various output methods + including a curses based interface. + + https://github.com/tgraf/bmon/ + +comment "bmon needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/bmon/bmon.hash b/package/bmon/bmon.hash new file mode 100644 index 00000000..2cdf315a --- /dev/null +++ b/package/bmon/bmon.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 02fdc312b8ceeb5786b28bf905f54328f414040ff42f45c83007f24b76cc9f7a bmon-4.0.tar.gz +sha256 59ae3d59c672bfb955917a8e32f5cacba7f8ce716c499a4c63dc8cd8cb5c4991 LICENSE.BSD +sha256 a2a6760c2c6fa779a635e4a7ad00f668862ebcadb2a8a57d16662543e103e08c LICENSE.MIT diff --git a/package/bmon/bmon.mk b/package/bmon/bmon.mk new file mode 100644 index 00000000..84dab703 --- /dev/null +++ b/package/bmon/bmon.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# bmon +# +################################################################################ + +BMON_VERSION = 4.0 +BMON_SITE = https://github.com/tgraf/bmon/releases/download/v$(BMON_VERSION) +BMON_DEPENDENCIES = host-pkgconf libconfuse libnl ncurses +BMON_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' +BMON_LICENSE = BSD-2-Clause, MIT +BMON_LICENSE_FILES = LICENSE.BSD LICENSE.MIT + +# link dynamically unless explicitly requested otherwise +ifeq ($(BR2_STATIC_LIBS),) +BMON_CONF_OPTS += --disable-static +else +# forgets to explicitly link with pthread for libnl +BMON_CONF_OPTS += LIBS=-lpthread +endif + +$(eval $(autotools-package)) diff --git a/package/bmx7/0001-Fix-schedule.c-378-36-error-SIOCGSTAMP-undeclared.patch b/package/bmx7/0001-Fix-schedule.c-378-36-error-SIOCGSTAMP-undeclared.patch new file mode 100644 index 00000000..d627cf61 --- /dev/null +++ b/package/bmx7/0001-Fix-schedule.c-378-36-error-SIOCGSTAMP-undeclared.patch @@ -0,0 +1,28 @@ +From f16fa9796e05ca9ea6ee764b3c1f0b8baed535e8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jos=C3=A9=20Pekkarinen?= +Date: Fri, 10 Dec 2021 14:35:45 +0200 +Subject: [PATCH] Fix schedule.c:378:36: error: 'SIOCGSTAMP' undeclared +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: José Pekkarinen +--- + src/schedule.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/schedule.c b/src/schedule.c +index 8868b01..09ab248 100644 +--- a/src/schedule.c ++++ b/src/schedule.c +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + + + #include "list.h" +-- +2.30.2 + diff --git a/package/bmx7/0002-Fix-linking-error.patch b/package/bmx7/0002-Fix-linking-error.patch new file mode 100644 index 00000000..04354c6a --- /dev/null +++ b/package/bmx7/0002-Fix-linking-error.patch @@ -0,0 +1,29 @@ +From 974541b80bf8d7ec78ed9214a1b541957670f9cd Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jos=C3=A9=20Pekkarinen?= +Date: Fri, 10 Dec 2021 14:36:55 +0200 +Subject: [PATCH] Fix linking error +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: José Pekkarinen +--- + src/bmx.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/bmx.h b/src/bmx.h +index 4269903..7789f7f 100644 +--- a/src/bmx.h ++++ b/src/bmx.h +@@ -290,7 +290,7 @@ enum ADGSN { + #define SUCCESS 0 + #define FAILURE -1 + +-const void* FAILURE_PTR; ++extern const void* FAILURE_PTR; + + + #define MAX_SELECT_TIMEOUT_MS 1100 /* MUST be smaller than (1000/2) to fit into max tv_usec */ +-- +2.30.2 + diff --git a/package/bmx7/0003-Reorder-includes-to-avoid-ethhdr-collision.patch b/package/bmx7/0003-Reorder-includes-to-avoid-ethhdr-collision.patch new file mode 100644 index 00000000..75cc3925 --- /dev/null +++ b/package/bmx7/0003-Reorder-includes-to-avoid-ethhdr-collision.patch @@ -0,0 +1,35 @@ +From fc13da06c1de4d085e21dc2bf45e1e95eb6145d9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jos=C3=A9=20Pekkarinen?= +Date: Fri, 10 Dec 2021 14:37:37 +0200 +Subject: [PATCH] Reorder includes to avoid ethhdr collision +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: José Pekkarinen +--- + src/ip.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/ip.c b/src/ip.c +index cd50074..4198e92 100644 +--- a/src/ip.c ++++ b/src/ip.c +@@ -43,13 +43,13 @@ + #include + #include + +-#include /* TUNSETPERSIST, ... */ + #include + + #ifndef BMX7_LIB_IWINFO + #define BMX7_LIB_IW + #include + #endif ++#include /* TUNSETPERSIST, ... */ + //#include + // apt-get install libiw-dev + //#include +-- +2.30.2 + diff --git a/package/bmx7/Config.in b/package/bmx7/Config.in new file mode 100644 index 00000000..6fa6a079 --- /dev/null +++ b/package/bmx7/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_BMX7 + bool "bmx7" + depends on !BR2_STATIC_LIBS # dlopen() + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_MBEDTLS + select BR2_PACKAGE_WIRELESS_TOOLS + select BR2_PACKAGE_WIRELESS_TOOLS_LIB + help + BMX7 is a mesh routing protocol for Linux based + operating systems. + + https://github.com/bmx-routing/bmx7 + +comment "bmx7 needs a toolchain with dynamic library support" + depends on BR2_STATIC_LIBS diff --git a/package/bmx7/bmx7.hash b/package/bmx7/bmx7.hash new file mode 100644 index 00000000..39203c97 --- /dev/null +++ b/package/bmx7/bmx7.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 5f88df1c95e5cb842a6016bb1604e3e7f6097c63c5c9916edc3c84e96d4f5f65 bmx7-7.1.1.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/bmx7/bmx7.mk b/package/bmx7/bmx7.mk new file mode 100644 index 00000000..7eb8a3d6 --- /dev/null +++ b/package/bmx7/bmx7.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# bmx7 +# +################################################################################ + +BMX7_VERSION = 7.1.1 +BMX7_SITE = $(call github,bmx-routing,bmx7,v$(BMX7_VERSION)) +BMX7_LICENSE = GPL-2.0 +BMX7_LICENSE_FILES = LICENSE +BMX7_DEPENDENCIES = zlib mbedtls wireless_tools + +define BMX7_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/src +endef + +define BMX7_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/src/bmx7 $(TARGET_DIR)/usr/bin/bmx7 +endef + +$(eval $(generic-package)) diff --git a/package/boinc/Config.in b/package/boinc/Config.in new file mode 100644 index 00000000..72d54401 --- /dev/null +++ b/package/boinc/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_BOINC + bool "boinc" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_OPENSSL + help + Open-source software for volunteer computing and grid + computing. + + Use the idle time on your computer to cure diseases, study + global warming, discover pulsars, and do many other types of + scientific research. + + https://boinc.berkeley.edu + +comment "boinc needs a toolchain w/ dynamic library, C++, threads, gcc >= 4.8" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \ + || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/boinc/S99boinc-client b/package/boinc/S99boinc-client new file mode 100644 index 00000000..f4b2a2c7 --- /dev/null +++ b/package/boinc/S99boinc-client @@ -0,0 +1,37 @@ +#!/bin/sh + +NAME=boinc_client +PIDFILE=/var/run/$NAME.pid +DAEMON=/usr/bin/$NAME + +start() { + printf "Starting $NAME: " + start-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping $NAME: " + start-stop-daemon -K -q -p $PIDFILE + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac + +exit $? diff --git a/package/boinc/boinc.hash b/package/boinc/boinc.hash new file mode 100644 index 00000000..3955cffb --- /dev/null +++ b/package/boinc/boinc.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 e577072b06f590d3230c25c94b221dba528b0938681e645bbd870778f8958077 boinc-7.20.2.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING +sha256 a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c COPYING.LESSER diff --git a/package/boinc/boinc.mk b/package/boinc/boinc.mk new file mode 100644 index 00000000..6b76e5f5 --- /dev/null +++ b/package/boinc/boinc.mk @@ -0,0 +1,65 @@ +################################################################################ +# +# boinc +# +################################################################################ + +BOINC_VERSION_MAJOR = 7.20 +BOINC_VERSION = $(BOINC_VERSION_MAJOR).2 +BOINC_SITE = \ + $(call github,BOINC,boinc,client_release/$(BOINC_VERSION_MAJOR)/$(BOINC_VERSION)) +BOINC_LICENSE = LGPL-3.0+ +BOINC_LICENSE_FILES = COPYING COPYING.LESSER +BOINC_CPE_ID_VENDOR = rom_walton +BOINC_SELINUX_MODULES = boinc +BOINC_DEPENDENCIES = host-pkgconf libcurl openssl +BOINC_AUTORECONF = YES +# The ac_cv_c_undeclared_builtin_options value is to help +# AC_CHECK_DECLS realize that it doesn't need any particular compiler +# option to get an error when building a program that uses undeclared +# symbols. Otherwise, AC_CHECK_DECLS is confused by the configure +# script unconditionally passing -mavx, which only exists on x86, and +# therefore causes a failure on all other architectures. +BOINC_CONF_ENV = \ + ac_cv_c_undeclared_builtin_options='none needed' \ + ac_cv_path__libcurl_config=$(STAGING_DIR)/usr/bin/curl-config +BOINC_CONF_OPTS = \ + --disable-apps \ + --disable-boinczip \ + --disable-fcgi \ + --disable-manager \ + --disable-server \ + --enable-client \ + --enable-dynamic-client-linkage \ + --enable-libraries \ + --with-pkg-config=$(PKG_CONFIG_HOST_BINARY) \ + --with-libcurl=$(STAGING_DIR)/usr + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +BOINC_DEPENDENCIES += freetype +endif + +ifeq ($(BR2_PACKAGE_LIBEXECINFO),y) +BOINC_DEPENDENCIES += libexecinfo +BOINC_MAKE_OPTS += LIBS="-lexecinfo" +endif + +BOINC_MAKE_OPTS += CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11" + +# Remove boinc-client because it is incompatible with buildroot +define BOINC_REMOVE_UNNEEDED_FILE + $(RM) $(TARGET_DIR)/etc/init.d/boinc-client +endef + +BOINC_POST_INSTALL_TARGET_HOOKS += BOINC_REMOVE_UNNEEDED_FILE + +define BOINC_USERS + boinc -1 boinc -1 * /var/lib/boinc - BOINC user +endef + +define BOINC_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/boinc/S99boinc-client \ + $(TARGET_DIR)/etc/init.d/S99boinc-client +endef + +$(eval $(autotools-package)) diff --git a/package/bonnie/Config.in b/package/bonnie/Config.in new file mode 100644 index 00000000..4b0adda0 --- /dev/null +++ b/package/bonnie/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_BONNIE + bool "bonnie++" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fork() + help + A benchmark suite that is aimed at performing a number of + simple tests of hard drive and file system performance. + + http://www.coker.com.au/bonnie++/ + +comment "bonnie++ needs a toolchain w/ C++" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/bonnie/bonnie.hash b/package/bonnie/bonnie.hash new file mode 100644 index 00000000..969167a5 --- /dev/null +++ b/package/bonnie/bonnie.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 cb3866116634bf65760b6806be4afa7e24a1cad6f145c876df8721f01ba2e2cb bonnie++-1.03e.tgz +sha256 bdfeef85436885bc317fdbae3732b17a39e7910eb855553a83b4d2cf9032e773 copyright.txt diff --git a/package/bonnie/bonnie.mk b/package/bonnie/bonnie.mk new file mode 100644 index 00000000..e5c8640d --- /dev/null +++ b/package/bonnie/bonnie.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# bonnie +# +################################################################################ + +BONNIE_VERSION = 1.03e +BONNIE_SOURCE = bonnie++-$(BONNIE_VERSION).tgz +BONNIE_SITE = http://www.coker.com.au/bonnie++ +BONNIE_LICENSE = GPL-2.0 +BONNIE_LICENSE_FILES = copyright.txt + +define BONNIE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/bonnie++ $(TARGET_DIR)/usr/sbin/bonnie++ + $(INSTALL) -D -m 755 $(@D)/zcav $(TARGET_DIR)/usr/sbin/zcav +endef + +$(eval $(autotools-package)) diff --git a/package/boost/0001-unordered-fix-copy-assign.patch b/package/boost/0001-unordered-fix-copy-assign.patch new file mode 100644 index 00000000..67055253 --- /dev/null +++ b/package/boost/0001-unordered-fix-copy-assign.patch @@ -0,0 +1,22 @@ +Upstream Patch for Unordered + +Prevent erroneous copying of groups data, update max load to properly propagate + +Signed-off-by: Michael Nosthoff +Upstream: https://github.com/boostorg/unordered/commit/067884a4e213352e7c81c441f1453c54735c39f3 +diff --git a/include/boost/unordered/detail/foa/core.hpp b/include/boost/unordered/detail/foa/core.hpp +index 239d05d3..7ae9f2c8 100644 +--- a/boost/unordered/detail/foa/core.hpp ++++ b/boost/unordered/detail/foa/core.hpp +@@ -1870,9 +1870,10 @@ private: + + void fast_copy_elements_from(const table_core& x) + { +- if(arrays.elements){ ++ if(arrays.elements&&x.arrays.elements){ + copy_elements_array_from(x); + copy_groups_array_from(x); ++ size_ctrl.ml=std::size_t(x.size_ctrl.ml); + size_ctrl.size=std::size_t(x.size_ctrl.size); + } + } diff --git a/package/boost/Config.in b/package/boost/Config.in new file mode 100644 index 00000000..908a53fe --- /dev/null +++ b/package/boost/Config.in @@ -0,0 +1,385 @@ +comment "boost needs a toolchain w/ C++, threads, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR + +config BR2_PACKAGE_BOOST + bool "boost" + depends on BR2_INSTALL_LIBSTDCPP + # Boost could theorically be built with threading=single, but + # that unfortunately doesn't work. Until someone fixes that, + # let's depend on threads. + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + help + A general purpose C++ library + + http://www.boost.org/ + +if BR2_PACKAGE_BOOST + +config BR2_PACKAGE_BOOST_ATOMIC + bool "boost-atomic" + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + help + C++11-style atomic<>. + +config BR2_PACKAGE_BOOST_CHRONO + bool "boost-chrono" + select BR2_PACKAGE_BOOST_SYSTEM + help + Useful time utilities. C++11. + +config BR2_PACKAGE_BOOST_CONTAINER + bool "boost-container" + help + Standard library containers and extensions. + +# see +# http://www.boost.org/doc/libs/1_78_0/libs/context/doc/html/context/architectures.html +# for the list of supported architectures. Sparc pretends to be +# supported, but it doesn't build. +config BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS + bool + default y if ((BR2_arm || BR2_armeb) && BR2_ARM_CPU_HAS_ARM) + default y if (BR2_aarch64 || BR2_aarch64_be) + default y if BR2_i386 + default y if BR2_mips + default y if BR2_mipsel + default y if BR2_powerpc + default y if BR2_x86_64 + +config BR2_PACKAGE_BOOST_CONTEXT + bool "boost-context" + depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + help + C++11 context switching library. + +comment "boost-context needs a toolchain w/ C++11, gcc>=4.8" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +config BR2_PACKAGE_BOOST_CONTRACT + bool "boost-contract" + # pthread_condattr_setclock + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_PACKAGE_BOOST_SYSTEM + help + Contract programming for C++. + +comment "boost-contract needs a toolchain w/ NPTL" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL + +config BR2_PACKAGE_BOOST_COROUTINE + bool "boost-coroutine" + depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # boost-context + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-context, boost-thread + select BR2_PACKAGE_BOOST_CHRONO + select BR2_PACKAGE_BOOST_CONTEXT + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_THREAD + help + deprecated coroutine library, the non-deprecated coroutine2 + library is a header-only library and does not need to be + selected. + +comment "boost-coroutine needs a toolchain w/ C++11, gcc>=4.8" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +comment "boost-coroutine needs a toolchain not affected by GCC bug 64735" + depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + +config BR2_PACKAGE_BOOST_DATE_TIME + bool "boost-date_time" + help + A set of date-time libraries based on generic programming + concepts. + +config BR2_PACKAGE_BOOST_EXCEPTION + bool "boost-exception" + help + The Boost Exception library supports transporting of arbitrary + data in exception objects, and transporting of exceptions + between threads. + +config BR2_PACKAGE_BOOST_FIBER + bool "boost-fiber" + depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + # mips support uses the "pause" instruction, only available + # since mips32r2/mips64r2. + depends on !BR2_MIPS_CPU_MIPS32 && !BR2_MIPS_CPU_MIPS64 + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-filesystem + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-context + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + select BR2_PACKAGE_BOOST_CONTEXT + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_BOOST_SYSTEM + help + C++11 userland threads library. + +comment "boost-fiber needs a toolchain w/ NPTL, C++11, gcc>=4.8" + depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +comment "boost-fiber needs a toolchain not affected by GCC bug 64735" + depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + +config BR2_PACKAGE_BOOST_FILESYSTEM + bool "boost-filesystem" + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic + select BR2_PACKAGE_BOOST_ATOMIC + select BR2_PACKAGE_BOOST_SYSTEM + help + The Boost Filesystem Library provides portable facilities to + query and manipulate paths, files, and directories. + +config BR2_PACKAGE_BOOST_GRAPH + bool "boost-graph" + select BR2_PACKAGE_BOOST_REGEX + help + The BGL graph interface and graph components are generic, in + the same sense as the the Standard Template Library (STL). + +config BR2_PACKAGE_BOOST_GRAPH_PARALLEL + bool "boost-graph_parallel" + help + The PBGL graph interface and graph components are generic, in + the same sense as the the Standard Template Library (STL). + +config BR2_PACKAGE_BOOST_IOSTREAMS + bool "boost-iostreams" + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_ZLIB + help + Boost.IOStreams provides a framework for defining streams, + stream buffers and i/o filters. + +config BR2_PACKAGE_BOOST_JSON + bool "boost-json" + select BR2_PACKAGE_BOOST_CONTAINER + help + Boost.JSON is a portable C++ library which provides containers + and algorithms that implement JavaScript Object Notation, or + simply "JSON", a lightweight data-interchange format. + + To use the library "header-only" this option is not needed. + +config BR2_PACKAGE_BOOST_LOCALE + bool "boost-locale" + # When boost-locale is enabled with icu support, Boost no + # longer supports building the libboost_* libraries as static + # libraries, causing build failures when other boost features + # than boost-locale are enabled. To work around this, we + # prevent using boost-locale on static linking configurations + # with icu enabled. See + # https://svn.boost.org/trac/boost/ticket/9685 for more + # details. + depends on !(BR2_STATIC_LIBS && BR2_PACKAGE_ICU) + depends on !(BR2_TOOLCHAIN_HAS_GCC_BUG_64735 && BR2_PACKAGE_ICU) # boost-thread + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS \ + || !BR2_PACKAGE_ICU # boost-thread + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_THREAD if BR2_PACKAGE_ICU + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Provide localization and Unicode handling tools for C++. + +comment "boost-locale needs a toolchain w/ dynamic library" + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + depends on BR2_PACKAGE_ICU + depends on BR2_STATIC_LIBS + +comment "boost-locale needs a toolchain not affected by GCC bug 64735" + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + depends on BR2_PACKAGE_ICU + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + +config BR2_PACKAGE_BOOST_LOG + bool "boost-log" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread + select BR2_PACKAGE_BOOST_ATOMIC + select BR2_PACKAGE_BOOST_DATE_TIME + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_BOOST_REGEX + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_THREAD + help + Logging library. + +comment "boost-log needs a toolchain w/ NPTL" + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL + +comment "boost-log needs a toolchain not affected by GCC bug 64735" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + +config BR2_PACKAGE_BOOST_MATH + bool "boost-math" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14 + help + Boost.Math includes several contributions in the domain of + mathematics: + + The Greatest Common Divisor and Least Common + Multiple library provides run-time and compile-time evaluation + of the greatest common divisor (GCD) or least common multiple + (LCM) of two integers. + + The Special Functions library currently provides eight + templated special functions, in namespace boost. + + The Complex Number Inverse Trigonometric Functions are the + inverses of trigonometric functions currently present in the + C++ standard. + + Quaternions are a relative of complex numbers often used to + parameterise rotations in three dimentional space. + + Octonions, like quaternions, are a relative of complex + numbers. + +comment "boost-math needs a toolchain w/ C++14, gcc>=5.0" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +config BR2_PACKAGE_BOOST_MPI + bool "boost-mpi" + help + Message Passing Interface library, for use in + distributed-memory parallel application programming. + +config BR2_PACKAGE_BOOST_NOWIDE + bool "boost-nowide" + help + Library for cross-platform, unicode aware programming. + +config BR2_PACKAGE_BOOST_PROGRAM_OPTIONS + bool "boost-program_options" + help + The program_options library allows program developers to + obtain program options, that is (name, value) pairs from the + user, via conventional methods such as command line and config + file. + +config BR2_PACKAGE_BOOST_PYTHON + bool "boost-python" + depends on BR2_PACKAGE_PYTHON3 + help + The Boost Python Library is a framework for interfacing Python + and C++. It allows you to quickly and seamlessly expose C++ + classes functions and objects to Python, and vice-versa, + using no special tools -- just your C++ compiler. + +config BR2_PACKAGE_BOOST_RANDOM + bool "boost-random" + select BR2_PACKAGE_BOOST_SYSTEM + help + A complete system for random number generation. + +config BR2_PACKAGE_BOOST_REGEX + bool "boost-regex" + help + A new infrastructure for generic algorithms that builds on top + of the new iterator concepts. + +config BR2_PACKAGE_BOOST_SERIALIZATION + bool "boost-serialization" + help + Serialization for persistence and marshalling. + +config BR2_PACKAGE_BOOST_STACKTRACE + bool "boost-stacktrace" + depends on !BR2_STATIC_LIBS + help + Gather, store, copy and print backtraces. + +comment "boost-stacktrace needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_BOOST_SYSTEM + bool "boost-system" + help + Operating system support, including the diagnostics support + that will be part of the C++0x standard library. + +config BR2_PACKAGE_BOOST_TEST + bool "boost-test" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_TIMER + help + Support for simple program testing, full unit testing, and for + program execution monitoring. + +config BR2_PACKAGE_BOOST_THREAD + bool "boost-thread" + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::current_exception + select BR2_PACKAGE_BOOST_CHRONO + select BR2_PACKAGE_BOOST_SYSTEM + help + Portable C++ multi-threading. C++11, C++14. + +comment "boost-thread needs a toolchain not affected by GCC bug 64735" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + +config BR2_PACKAGE_BOOST_TIMER + bool "boost-timer" + select BR2_PACKAGE_BOOST_CHRONO + select BR2_PACKAGE_BOOST_SYSTEM + help + Event timer, progress timer, and progress display classes. + +config BR2_PACKAGE_BOOST_TYPE_ERASURE + bool "boost-type_erasure" + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_THREAD + help + Runtime polymorphism based on concepts. + +comment "boost-type_erasure needs a toolchain not affected by GCC bug 64735" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + +config BR2_PACKAGE_BOOST_URL + bool "boost-url" + help + Boost.URL is a portable C++ library which provides containers + and algorithms which model a "URL," more formally described + using the Uniform Resource Identifier (URI) specification. + + This library understands the grammars related to URLs and + provides functionality to validate, parse, examine, and + modify urls, and apply normalization or resolution algorithms. + + To use the library "header-only" this option is not needed. + +config BR2_PACKAGE_BOOST_WAVE + bool "boost-wave" + # limitation of assembler for coldfire + # error: Tried to convert PC relative branch to absolute jump + depends on !BR2_m68k_cf + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread + select BR2_PACKAGE_BOOST_DATE_TIME + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_THREAD + help + The Boost.Wave library is a Standards conformant, and highly + configurable implementation of the mandated C99/C++ + preprocessor functionality packed behind an easy to use + iterator interface. + +comment "boost-wave needs a toolchain not affected by GCC bug 64735" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + +endif diff --git a/package/boost/boost.hash b/package/boost/boost.hash new file mode 100644 index 00000000..14403758 --- /dev/null +++ b/package/boost/boost.hash @@ -0,0 +1,5 @@ +# From https://www.boost.org/users/history/version_1_83_0.html +sha256 6478edfe2f3305127cffe8caf73ea0176c53769f4bf1585be237eb30798c3b8e boost_1_83_0.tar.bz2 + +# Locally computed +sha256 c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566 LICENSE_1_0.txt diff --git a/package/boost/boost.mk b/package/boost/boost.mk new file mode 100644 index 00000000..bb73edfd --- /dev/null +++ b/package/boost/boost.mk @@ -0,0 +1,214 @@ +################################################################################ +# +# boost +# +################################################################################ + +BOOST_VERSION = 1.83.0 +BOOST_SOURCE = boost_$(subst .,_,$(BOOST_VERSION)).tar.bz2 +BOOST_SITE = https://boostorg.jfrog.io/artifactory/main/release/$(BOOST_VERSION)/source +BOOST_INSTALL_STAGING = YES +BOOST_LICENSE = BSL-1.0 +BOOST_LICENSE_FILES = LICENSE_1_0.txt +BOOST_CPE_ID_VENDOR = boost + +# keep host variant as minimal as possible +# regex & system are needed by host-riscv-isa-sim +HOST_BOOST_FLAGS = --without-icu --with-toolset=gcc \ + --without-libraries=$(subst $(space),$(comma),\ + atomic \ + chrono container \ + context \ + contract \ + coroutine \ + date_time \ + exception \ + fiber \ + filesystem \ + graph \ + graph_parallel \ + iostreams \ + json \ + locale \ + log \ + math \ + mpi \ + nowide \ + program_options \ + python \ + random \ + serialization \ + stacktrace \ + test \ + thread \ + timer \ + type_erasure \ + url \ + wave\ + ) + +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_ATOMIC),,atomic) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CHRONO),,chrono) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTAINER),,container) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTEXT),,context) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTRACT),,contract) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_COROUTINE),,coroutine) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_DATE_TIME),,date_time) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_EXCEPTION),,exception) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_FIBER),,fiber) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_FILESYSTEM),,filesystem) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_GRAPH),,graph) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_GRAPH_PARALLEL),,graph_parallel) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_IOSTREAMS),,iostreams) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_JSON),,json) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_LOCALE),,locale) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_LOG),,log) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_MATH),,math) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_MPI),,mpi) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_NOWIDE),,nowide) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_PROGRAM_OPTIONS),,program_options) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_PYTHON),,python) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_RANDOM),,random) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_REGEX),,regex) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_SERIALIZATION),,serialization) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_STACKTRACE),,stacktrace) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_SYSTEM),,system) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TEST),,test) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_THREAD),,thread) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TIMER),,timer) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TYPE_ERASURE),,type_erasure) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_URL),,url) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_WAVE),,wave) + +BOOST_TARGET_CXXFLAGS = $(TARGET_CXXFLAGS) + +BOOST_FLAGS = --with-toolset=gcc + +ifeq ($(BR2_PACKAGE_ICU),y) +BOOST_FLAGS += --with-icu=$(STAGING_DIR)/usr +BOOST_DEPENDENCIES += icu +else +BOOST_FLAGS += --without-icu +endif + +ifeq ($(BR2_PACKAGE_BOOST_IOSTREAMS),y) +BOOST_DEPENDENCIES += bzip2 zlib +endif + +ifeq ($(BR2_PACKAGE_BOOST_PYTHON),y) +BOOST_FLAGS += \ + --with-python-root=$(HOST_DIR) \ + --with-python=$(HOST_DIR)/bin/python$(PYTHON3_VERSION_MAJOR) +BOOST_TARGET_CXXFLAGS += -I$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR) +BOOST_DEPENDENCIES += python3 +endif + +HOST_BOOST_OPTS += --no-cmake-config toolset=gcc threading=multi \ + variant=release link=shared runtime-link=shared -j$(PARALLEL_JOBS) -q \ + --ignore-site-config --layout=system --prefix=$(HOST_DIR) \ + --user-config=$(@D)/user-config.jam + +ifeq ($(BR2_MIPS_OABI32),y) +BOOST_ABI = o32 +else ifeq ($(BR2_arm)$(BR2_armeb)$(BR2_aarch64)$(BR2_aarch64_be),y) +BOOST_ABI = aapcs +else +BOOST_ABI = sysv +endif + +BOOST_OPTS += --no-cmake-config \ + toolset=gcc \ + threading=multi \ + abi=$(BOOST_ABI) \ + variant=$(if $(BR2_ENABLE_RUNTIME_DEBUG),debug,release) \ + -j$(PARALLEL_JOBS) \ + -q \ + --ignore-site-config \ + --layout=system \ + --user-config=$(@D)/user-config.jam + +ifeq ($(BR2_sparc64),y) +BOOST_OPTS += architecture=sparc instruction-set=ultrasparc +endif + +ifeq ($(BR2_sparc),y) +BOOST_OPTS += architecture=sparc instruction-set=v8 +endif + +# By default, Boost build and installs both the shared and static +# variants. Override that if we want static only or shared only. +ifeq ($(BR2_STATIC_LIBS),y) +BOOST_OPTS += link=static runtime-link=static +else ifeq ($(BR2_SHARED_LIBS),y) +BOOST_OPTS += link=shared runtime-link=shared +endif + +ifeq ($(BR2_PACKAGE_BOOST_LOCALE),y) +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +# posix backend needs monetary.h which isn't available on uClibc +BOOST_OPTS += boost.locale.posix=off +endif + +BOOST_DEPENDENCIES += $(if $(BR2_ENABLE_LOCALE),,libiconv) +endif + +BOOST_WITHOUT_FLAGS_COMMASEPARATED += $(subst $(space),$(comma),$(strip $(BOOST_WITHOUT_FLAGS))) +BOOST_FLAGS += $(if $(BOOST_WITHOUT_FLAGS_COMMASEPARATED), --without-libraries=$(BOOST_WITHOUT_FLAGS_COMMASEPARATED)) + +# how verbose should the build be? +BOOST_OPTS += $(if $(QUIET),-d0,-d+1) +HOST_BOOST_OPTS += $(if $(QUIET),-d0,-d+1) + +define BOOST_CONFIGURE_CMDS + cd $(@D) && ./bootstrap.sh $(BOOST_FLAGS) + echo "using gcc : `$(TARGET_CC) -dumpversion` : $(TARGET_CXX) : \"$(BOOST_TARGET_CXXFLAGS)\" \"$(TARGET_LDFLAGS)\" ;" > $(@D)/user-config.jam + sed -i "s/: -O.* ;/: $(TARGET_OPTIMIZATION) ;/" $(@D)/tools/build/src/tools/gcc.jam +endef + +define BOOST_BUILD_CMDS + cd $(@D) && $(TARGET_MAKE_ENV) ./b2 $(BOOST_OPTS) +endef + +define BOOST_INSTALL_TARGET_CMDS + cd $(@D) && $(TARGET_MAKE_ENV) ./b2 $(BOOST_OPTS) \ + --prefix=$(TARGET_DIR)/usr install +endef + +define BOOST_INSTALL_STAGING_CMDS + cd $(@D) && $(TARGET_MAKE_ENV) ./b2 $(BOOST_OPTS) \ + --prefix=$(STAGING_DIR)/usr install +endef + +# These hooks will help us to detect missing select in Config.in +# Indeed boost buildsystem can select a library even if the user has +# disable it +define BOOST_REMOVE_TARGET_LIBRARIES + rm -rf $(TARGET_DIR)/usr/lib/libboost_* +endef + +BOOST_PRE_INSTALL_TARGET_HOOKS += BOOST_REMOVE_TARGET_LIBRARIES + +define BOOST_CHECK_TARGET_LIBRARIES + @$(foreach disabled,$(BOOST_WITHOUT_FLAGS),\ + ! ls $(TARGET_DIR)/usr/lib/libboost_$(disabled)* 1>/dev/null 2>&1 || \ + ! echo "libboost_$(disabled) shouldn't have been installed: missing select in boost/Config.in" || \ + exit 1;) +endef + +BOOST_POST_INSTALL_TARGET_HOOKS += BOOST_CHECK_TARGET_LIBRARIES + +define HOST_BOOST_CONFIGURE_CMDS + cd $(@D) && ./bootstrap.sh $(HOST_BOOST_FLAGS) + echo "using gcc : `$(HOST_CC) -dumpversion` : $(HOSTCXX) : \"$(HOST_CXXFLAGS)\" \"$(HOST_LDFLAGS)\" ;" > $(@D)/user-config.jam +endef + +define HOST_BOOST_BUILD_CMDS + cd $(@D) && ./b2 $(HOST_BOOST_OPTS) +endef + +define HOST_BOOST_INSTALL_CMDS + cd $(@D) && ./b2 $(HOST_BOOST_OPTS) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/bootgen/Config.in.host b/package/bootgen/Config.in.host new file mode 100644 index 00000000..0acb58de --- /dev/null +++ b/package/bootgen/Config.in.host @@ -0,0 +1,10 @@ +config BR2_PACKAGE_HOST_BOOTGEN + bool "host bootgen" + help + bootgen is a tool to generate a boot.bin firmware + for Xilinx versal, zynqmp and zynq product families. + + Additional secure boot features are supported beyond + what is included with u-boot mkimage. + + https://github.com/Xilinx/bootgen diff --git a/package/bootgen/bootgen.hash b/package/bootgen/bootgen.hash new file mode 100644 index 00000000..506aae8a --- /dev/null +++ b/package/bootgen/bootgen.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 7879c7d40642bcf7adcec177a51cf73f95bd45d315f75d125d3fc1680c0a9b24 bootgen-xilinx_v2024.1.tar.gz +sha256 4da5f5eff0592e5d275f1871faf9e9a4fc0f6346027bfb777fa59d0aa6a59aa3 LICENSE diff --git a/package/bootgen/bootgen.mk b/package/bootgen/bootgen.mk new file mode 100644 index 00000000..912e2e31 --- /dev/null +++ b/package/bootgen/bootgen.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# bootgen +# +################################################################################ + +BOOTGEN_VERSION = xilinx_v2024.1 +BOOTGEN_SITE = $(call github,Xilinx,bootgen,$(BOOTGEN_VERSION)) +HOST_BOOTGEN_DEPENDENCIES = host-openssl host-pkgconf +BOOTGEN_LICENSE = Apache-2.0 +BOOTGEN_LICENSE_FILES = LICENSE + +define HOST_BOOTGEN_BUILD_CMDS + $(MAKE) $(HOST_CONFIGURE_OPTS) \ + LIBS="`$(HOST_MAKE_ENV) $(PKG_CONFIG_HOST_BINARY) --libs libssl libcrypto`" \ + INCLUDE_USER="`$(HOST_MAKE_ENV) $(PKG_CONFIG_HOST_BINARY) --cflags libssl libcrypto`" \ + CXXFLAGS="$(HOST_CXXFLAGS) -std=c++0x" \ + -C $(@D) +endef + +define HOST_BOOTGEN_INSTALL_CMDS + $(INSTALL) -m 0755 -D $(@D)/bootgen $(HOST_DIR)/bin/bootgen +endef + +$(eval $(host-generic-package)) diff --git a/package/bootstrap/Config.in b/package/bootstrap/Config.in new file mode 100644 index 00000000..743d8a32 --- /dev/null +++ b/package/bootstrap/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_BOOTSTRAP + bool "bootstrap" + help + Bootstrap is the most popular HTML, CSS, and JS framework + for developing responsive, mobile first projects on the web. + + http://getbootstrap.com diff --git a/package/bootstrap/bootstrap.hash b/package/bootstrap/bootstrap.hash new file mode 100644 index 00000000..a9602f7e --- /dev/null +++ b/package/bootstrap/bootstrap.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 888ffd30b7e192381e2f6a948ca04669fdcc2ccc2ba016de00d38c8e30793323 bootstrap-4.3.1-dist.zip +sha256 35fbb6dc3891aacaf1ffa07abec2344fdbc454aab533a2a03bcf93577eb7837b css/bootstrap.css diff --git a/package/bootstrap/bootstrap.mk b/package/bootstrap/bootstrap.mk new file mode 100644 index 00000000..eba1244a --- /dev/null +++ b/package/bootstrap/bootstrap.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# bootstrap +# +################################################################################ + +BOOTSTRAP_VERSION = 4.3.1 +BOOTSTRAP_SITE = https://github.com/twbs/bootstrap/releases/download/v$(BOOTSTRAP_VERSION) +BOOTSTRAP_SOURCE = bootstrap-$(BOOTSTRAP_VERSION)-dist.zip +BOOTSTRAP_LICENSE = MIT +BOOTSTRAP_LICENSE_FILES = css/bootstrap.css +BOOTSTRAP_CPE_ID_VENDOR = getbootstrap + +define BOOTSTRAP_EXTRACT_CMDS + $(UNZIP) $(BOOTSTRAP_DL_DIR)/$(BOOTSTRAP_SOURCE) -d $(@D) + mv $(@D)/bootstrap-$(BOOTSTRAP_VERSION)-dist/* $(@D) +endef + +define BOOTSTRAP_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/css/bootstrap.min.css \ + $(TARGET_DIR)/var/www/bootstrap/css/bootstrap.min.css + $(INSTALL) -m 0644 -D $(@D)/css/bootstrap.min.css.map \ + $(TARGET_DIR)/var/www/bootstrap/css/bootstrap.min.css.map + $(INSTALL) -m 0644 -D $(@D)/js/bootstrap.min.js \ + $(TARGET_DIR)/var/www/bootstrap/js/bootstrap.min.js +endef + +$(eval $(generic-package)) diff --git a/package/botan/Config.in b/package/botan/Config.in new file mode 100644 index 00000000..305cc2fe --- /dev/null +++ b/package/botan/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_BOTAN_ARCH_SUPPORTS + bool + default y if BR2_aarch64 || BR2_aarch64_be + default y if BR2_arm || BR2_armeb + default y if BR2_i386 || BR2_x86_64 + default y if BR2_m68k + default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + default y if BR2_riscv + default y if BR2_sparc || BR2_sparc64 + default y if BR2_s390x + default y if BR2_sh + +config BR2_PACKAGE_BOTAN + bool "botan" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_11 # C++20 + depends on BR2_PACKAGE_BOTAN_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_BOOST_FILESYSTEM if BR2_PACKAGE_BOOST && BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + select BR2_PACKAGE_BOOST_SYSTEM if BR2_PACKAGE_BOOST && BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + help + Botan is a crypto library for C++ + + http://botan.randombit.net + +comment "botan needs a toolchain w/ threads, C++, gcc >= 11" + depends on !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_11 \ + || !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_BOTAN_ARCH_SUPPORTS diff --git a/package/botan/botan.hash b/package/botan/botan.hash new file mode 100644 index 00000000..d9482719 --- /dev/null +++ b/package/botan/botan.hash @@ -0,0 +1,4 @@ +# From https://botan.randombit.net/releases/sha256sums.txt +sha256 67e8dae1ca2468d90de4e601c87d5f31ff492b38e8ab8bcbd02ddf7104ed8a9f Botan-3.5.0.tar.xz +# Locally computed +sha256 db9168bdccaaea26557094436652577cc9bf43164e8be078d88aef1342fe4fb6 license.txt diff --git a/package/botan/botan.mk b/package/botan/botan.mk new file mode 100644 index 00000000..561e7bf7 --- /dev/null +++ b/package/botan/botan.mk @@ -0,0 +1,119 @@ +################################################################################ +# +# botan +# +################################################################################ + +BOTAN_VERSION = 3.5.0 +BOTAN_SOURCE = Botan-$(BOTAN_VERSION).tar.xz +BOTAN_SITE = http://botan.randombit.net/releases +BOTAN_LICENSE = BSD-2-Clause +BOTAN_LICENSE_FILES = license.txt +BOTAN_CPE_ID_VALID = YES + +BOTAN_INSTALL_STAGING = YES + +BOTAN_DEPENDENCIES = host-python3 +BOTAN_CONF_OPTS = \ + --cpu=$(BR2_ARCH) \ + --disable-cc-tests \ + --os=linux \ + --cc=gcc \ + --cc-bin="$(TARGET_CXX)" \ + --prefix=/usr \ + --without-documentation + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +BOTAN_CONF_OPTS += --extra-libs=atomic +endif + +ifeq ($(BR2_SHARED_LIBS),y) +BOTAN_CONF_OPTS += \ + --disable-static-library \ + --enable-shared-library +else ifeq ($(BR2_STATIC_LIBS),y) +BOTAN_CONF_OPTS += \ + --disable-shared-library \ + --enable-static-library \ + --no-autoload +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +BOTAN_CONF_OPTS += \ + --enable-shared-library \ + --enable-static-library +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_SSP),y) +BOTAN_CONF_OPTS += --with-stack-protector +else +BOTAN_CONF_OPTS += --without-stack-protector +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS_NPTL),y) +BOTAN_CONF_OPTS += --with-os-feature=threads +else +BOTAN_CONF_OPTS += --without-os-feature=threads +endif + +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +BOTAN_CONF_OPTS += --without-os-feature=explicit_bzero,getauxval,getentropy +endif + +ifeq ($(BR2_PACKAGE_BOOST_FILESYSTEM)$(BR2_PACKAGE_BOOST_SYSTEM),yy) +BOTAN_DEPENDENCIES += boost +BOTAN_CONF_OPTS += --with-boost +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +BOTAN_DEPENDENCIES += bzip2 +BOTAN_CONF_OPTS += --with-bzip2 +endif + +ifeq ($(BR2_PACKAGE_SQLITE),y) +BOTAN_DEPENDENCIES += sqlite +BOTAN_CONF_OPTS += --with-sqlite +endif + +ifeq ($(BR2_PACKAGE_TROUSERS),y) +BOTAN_DEPENDENCIES += trousers +BOTAN_CONF_OPTS += --with-tpm +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +BOTAN_DEPENDENCIES += xz +BOTAN_CONF_OPTS += --with-lzma +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +BOTAN_DEPENDENCIES += zlib +BOTAN_CONF_OPTS += --with-zlib +endif + +ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),) +BOTAN_CONF_OPTS += --disable-altivec +endif + +ifeq ($(BR2_ARM_CPU_HAS_NEON),) +BOTAN_CONF_OPTS += --disable-neon +endif + +ifeq ($(BR2_SOFT_FLOAT),y) +BOTAN_CONF_OPTS += --disable-neon +endif + +define BOTAN_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) ./configure.py $(BOTAN_CONF_OPTS)) +endef + +define BOTAN_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) AR="$(TARGET_AR)" +endef + +define BOTAN_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(STAGING_DIR)" install +endef + +define BOTAN_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" install +endef + +$(eval $(generic-package)) diff --git a/package/bpftool/Config.in b/package/bpftool/Config.in new file mode 100644 index 00000000..55fd09ef --- /dev/null +++ b/package/bpftool/Config.in @@ -0,0 +1,33 @@ +config BR2_PACKAGE_BPFTOOL_ARCH_SUPPORTS + bool + # see libbpf/src/bpf.c + default y if BR2_arc + default y if BR2_arm || BR2_armeb + default y if BR2_aarch64 || BR2_aarch64_be + default y if BR2_i386 || BR2_x86_64 + default y if BR2_riscv + default y if BR2_sparc || BR2_sparc64 + default y if BR2_s390x + +config BR2_PACKAGE_BPFTOOL + bool "bpftool" + depends on BR2_PACKAGE_BPFTOOL_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_nios2 # binutils + depends on BR2_USE_WCHAR # binutils, elfutils + depends on !BR2_STATIC_LIBS # elfutils + depends on BR2_TOOLCHAIN_HAS_THREADS # elfutils + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 + select BR2_PACKAGE_BINUTILS + select BR2_PACKAGE_ELFUTILS + help + bpftool is a tool for for inspection and simple manipulation + of eBPF programs and maps. + +comment "bpftool needs a toolchain w/ wchar, dynamic library, threads, headers >= 4.12" + depends on BR2_PACKAGE_BPFTOOL_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_nios2 + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 diff --git a/package/bpftool/bpftool.hash b/package/bpftool/bpftool.hash new file mode 100644 index 00000000..4f83e71a --- /dev/null +++ b/package/bpftool/bpftool.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 89d3ce783d5c9e40b9060b380869911ee9d5ab6732a4b1dd19a90103c5e41e6c bpftool-v7.1.0-git4.tar.gz +sha256 7c588754d5e81e92e2a12e47cf78949d485c9c22b4850f12d21b3835c85947d1 LICENSE +sha256 6313108c23efffa36948f8b2cff1560a5935373b527b0e1a837cc77e6ed1bacd LICENSE.BSD-2-Clause +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL-2.0 diff --git a/package/bpftool/bpftool.mk b/package/bpftool/bpftool.mk new file mode 100644 index 00000000..cd68d897 --- /dev/null +++ b/package/bpftool/bpftool.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# bpftool +# +################################################################################ + +BPFTOOL_VERSION = v7.1.0 +BPFTOOL_SITE = https://github.com/libbpf/bpftool +BPFTOOL_SITE_METHOD = git +BPFTOOL_GIT_SUBMODULES = YES +BPFTOOL_LICENSE = GPL-2.0, BSD-2-Clause +BPFTOOL_LICENSE_FILES = LICENSE LICENSE.BSD-2-Clause LICENSE.GPL-2.0 +BPFTOOL_DEPENDENCIES = binutils elfutils +HOST_BPFTOOL_DEPENDENCIES = host-elfutils host-pkgconf host-zlib + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +BPFTOOL_DEPENDENCIES += libcap +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +BPFTOOL_DEPENDENCIES += zlib +endif + +define BPFTOOL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) \ + -C $(@D)/src +endef + +define HOST_BPFTOOL_BUILD_CMDS + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) \ + -C $(@D)/src +endef + +define BPFTOOL_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) \ + -C $(@D)/src install-bin DESTDIR="$(TARGET_DIR)" prefix=/usr +endef + +define HOST_BPFTOOL_INSTALL_CMDS + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) \ + -C $(@D)/src install-bin DESTDIR="$(HOST_DIR)" prefix= +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/bpftrace/Config.in b/package/bpftrace/Config.in new file mode 100644 index 00000000..8af94443 --- /dev/null +++ b/package/bpftrace/Config.in @@ -0,0 +1,56 @@ +config BR2_PACKAGE_BPFTRACE_ARCH_SUPPORTS + bool + default y if BR2_aarch64 || BR2_aarch64_be + default y if BR2_x86_64 + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + +config BR2_PACKAGE_BPFTRACE + bool "bpftrace" + depends on BR2_PACKAGE_BPFTRACE_ARCH_SUPPORTS + depends on BR2_USE_MMU # bcc -> python3 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libbpf + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS # bcc + depends on BR2_TOOLCHAIN_USES_GLIBC # bcc + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # bcc -> clang + depends on BR2_INSTALL_LIBSTDCPP # bcc -> clang + depends on BR2_HOST_GCC_AT_LEAST_7 # bcc -> clang + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13 # libbpf + depends on BR2_USE_WCHAR # bcc -> clang, bcc -> python3, libbpf + depends on BR2_TOOLCHAIN_HAS_THREADS # bcc -> clang, bcc -> python3, libbpf + depends on !BR2_STATIC_LIBS # bcc -> clang, bcc -> python3, libbpf + select BR2_PACKAGE_BCC + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_CEREAL + select BR2_PACKAGE_ELFUTILS + select BR2_PACKAGE_LIBBPF + select BR2_PACKAGE_LLVM + # LLVM RTTI mendatory: https://github.com/iovisor/bpftrace/issues/1156 + select BR2_PACKAGE_LLVM_RTTI + select BR2_PACKAGE_XZ + help + bpftrace is a high-level tracing language for Linux enhanced + Berkeley Packet Filter (eBPF) available in recent Linux + kernels (4.x). + + bpftrace uses LLVM as a backend to compile scripts to + BPF-bytecode and makes use of BCC for interacting with the + Linux BPF system, as well as existing Linux tracing + capabilities: kernel dynamic tracing (kprobes), user-level + dynamic tracing (uprobes), and tracepoints. The bpftrace + language is inspired by awk and C, and predecessor tracers + such as DTrace and SystemTap. + + It's highly recommended to NOT strip bpftrace binary. + To do so, add "bpftrace" to BR2_STRIP_EXCLUDE_FILES. + See: + https://bugzilla.redhat.com/show_bug.cgi?id=1865787 + + https://www.github.com/iovisor/bpftrace + +comment "bpftrace needs a glibc toolchain w/ C++, gcc >= 7, host gcc >= 7, kernel headers >= 4.13" + depends on BR2_PACKAGE_BPFTRACE_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || !BR2_HOST_GCC_AT_LEAST_7 \ + || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13 diff --git a/package/bpftrace/bpftrace.hash b/package/bpftrace/bpftrace.hash new file mode 100644 index 00000000..c2ecc927 --- /dev/null +++ b/package/bpftrace/bpftrace.hash @@ -0,0 +1,3 @@ +# locally calculated +sha256 b520340f28ce4d6f2fb2355f1675b6801ff8498ed9e8bff14abbbf6baff5a08e bpftrace-0.19.1.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/bpftrace/bpftrace.mk b/package/bpftrace/bpftrace.mk new file mode 100644 index 00000000..dc4c9728 --- /dev/null +++ b/package/bpftrace/bpftrace.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# bpftrace +# +################################################################################ + +BPFTRACE_VERSION = 0.19.1 +BPFTRACE_SITE = $(call github,iovisor,bpftrace,v$(BPFTRACE_VERSION)) +BPFTRACE_LICENSE = Apache-2.0 +BPFTRACE_LICENSE_FILES = LICENSE +BPFTRACE_DEPENDENCIES = \ + bcc \ + bzip2 \ + cereal \ + elfutils \ + host-bison \ + host-flex \ + libbpf \ + llvm \ + xz + +# libbfd, libopcodes +ifeq ($(BR2_PACKAGE_BINUTILS),y) +BPFTRACE_DEPENDENCIES += binutils +endif + +BPFTRACE_CONF_OPTS += \ + -DBUILD_SHARED_LIBS:BOOL=OFF \ + -DBUILD_TESTING:BOOL=OFF \ + -DENABLE_MAN:BOOL=OFF \ + -DINSTALL_TOOL_DOCS:BOOL=OFF \ + -DUSE_SYSTEM_BPF_BCC:BOOL=ON + +$(eval $(cmake-package)) diff --git a/package/brcm-patchram-plus/Config.in b/package/brcm-patchram-plus/Config.in new file mode 100644 index 00000000..2742016e --- /dev/null +++ b/package/brcm-patchram-plus/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_BRCM_PATCHRAM_PLUS + bool "brcm-patchram-plus" + help + Broadcom utility to flash Bluetooth firmwares, extended with + per-device Low Power Mode configuration. + + https://github.com/AsteroidOS/brcm-patchram-plus diff --git a/package/brcm-patchram-plus/brcm-patchram-plus.hash b/package/brcm-patchram-plus/brcm-patchram-plus.hash new file mode 100644 index 00000000..20bc5603 --- /dev/null +++ b/package/brcm-patchram-plus/brcm-patchram-plus.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 1287021683e0e71b679b157020f047a44032f3af879b257ff0b94d8d4c3d016d brcm-patchram-plus-15bd6638dd6d3a37d22dbc18059f6d9eb885f057.tar.gz +sha256 26324f5c563b7e338c2876c8abe90c3681c1e9a6163fc59b494c94ad6493eda4 COPYING diff --git a/package/brcm-patchram-plus/brcm-patchram-plus.mk b/package/brcm-patchram-plus/brcm-patchram-plus.mk new file mode 100644 index 00000000..d8733307 --- /dev/null +++ b/package/brcm-patchram-plus/brcm-patchram-plus.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# brcm-patchram-plus +# +################################################################################ + +BRCM_PATCHRAM_PLUS_VERSION = 15bd6638dd6d3a37d22dbc18059f6d9eb885f057 +BRCM_PATCHRAM_PLUS_SITE = $(call github,AsteroidOS,brcm-patchram-plus,$(BRCM_PATCHRAM_PLUS_VERSION)) +BRCM_PATCHRAM_PLUS_LICENSE = Apache-2.0 +BRCM_PATCHRAM_PLUS_LICENSE_FILES = COPYING +BRCM_PATCHRAM_PLUS_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/brcmfmac_sdio-firmware-rpi/Config.in b/package/brcmfmac_sdio-firmware-rpi/Config.in new file mode 100644 index 00000000..cf415649 --- /dev/null +++ b/package/brcmfmac_sdio-firmware-rpi/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI + bool "brcmfmac-sdio-firmware-rpi" + help + Raspberry Broadcom Bluetooth and Wifi firmware. + + https://github.com/LibreELEC/brcmfmac_sdio-firmware-rpi + +if BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI + +config BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_BT + bool "brcmfmac-sdio-firmware-rpi-bt" + help + Raspberry Pi 3 and Zero W Broadcom BCM43438 Bluetooth module + firmware. Raspberry Pi 3 Model B+ Broadcom BCM4345C0 + Bluetooth module firmware. + +config BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_WIFI + bool "brcmfmac-sdio-firmware-rpi-wifi" + depends on !BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX + help + Raspberry Pi 3 and Zero W Broadcom BCM43430 wifi module + NVRAM data. Raspberry Pi 3 Model B+ Broadcom BCM43455 + wifi module NVRAM data. + +comment "brcmfmac-sdio-firmware-rpi-wifi conflicts with linux-firmware Broadcom BRCM bcm43xx" + depends on BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX + +endif diff --git a/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.hash b/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.hash new file mode 100644 index 00000000..c20abfc2 --- /dev/null +++ b/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2f0917b104739455dd488dd8f5af2ee4430801a7ac8fe8d9866e74bfbb185356 brcmfmac_sdio-firmware-rpi-26ff205b45dc109b498a70aaf182804ad9dbfea5.tar.gz +sha256 ea8b7b7b6cfc6fd30587ed977100f6a542734ce53218b5b63de16180acddd599 LICENSE diff --git a/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.mk b/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.mk new file mode 100644 index 00000000..95707487 --- /dev/null +++ b/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# brcmfmac_sdio-firmware-rpi +# +################################################################################ + +BRCMFMAC_SDIO_FIRMWARE_RPI_VERSION = 26ff205b45dc109b498a70aaf182804ad9dbfea5 +BRCMFMAC_SDIO_FIRMWARE_RPI_SITE = $(call github,LibreELEC,brcmfmac_sdio-firmware-rpi,$(BRCMFMAC_SDIO_FIRMWARE_RPI_VERSION)) +BRCMFMAC_SDIO_FIRMWARE_RPI_LICENSE = PROPRIETARY +BRCMFMAC_SDIO_FIRMWARE_RPI_LICENSE_FILES = LICENSE + +ifeq ($(BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_BT),y) +define BRCMFMAC_SDIO_FIRMWARE_RPI_INSTALL_TARGET_BT + $(INSTALL) -d $(TARGET_DIR)/lib/firmware/brcm $(TARGET_DIR)/lib/firmware/synaptics + cp --remove-destination --no-dereference $(@D)/firmware/brcm/*.hcd $(TARGET_DIR)/lib/firmware/brcm + cp --remove-destination --no-dereference $(@D)/firmware/synaptics/*.hcd $(TARGET_DIR)/lib/firmware/synaptics + chmod 644 $(TARGET_DIR)/lib/firmware/brcm/*.hcd $(TARGET_DIR)/lib/firmware/synaptics/*.hcd +endef +endif + +ifeq ($(BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_WIFI),y) +define BRCMFMAC_SDIO_FIRMWARE_RPI_INSTALL_TARGET_WIFI + $(INSTALL) -d $(TARGET_DIR)/lib/firmware/brcm $(TARGET_DIR)/lib/firmware/cypress + cp --remove-destination --no-dereference $(@D)/firmware/brcm/brcmfmac* $(TARGET_DIR)/lib/firmware/brcm + cp --remove-destination --no-dereference $(@D)/firmware/cypress/cyfmac* $(TARGET_DIR)/lib/firmware/cypress + chmod 644 $(TARGET_DIR)/lib/firmware/brcm/brcmfmac* $(TARGET_DIR)/lib/firmware/cypress/cyfmac* +endef +endif + +define BRCMFMAC_SDIO_FIRMWARE_RPI_INSTALL_TARGET_CMDS + $(BRCMFMAC_SDIO_FIRMWARE_RPI_INSTALL_TARGET_BT) + $(BRCMFMAC_SDIO_FIRMWARE_RPI_INSTALL_TARGET_WIFI) +endef + +$(eval $(generic-package)) diff --git a/package/brickd/Config.in b/package/brickd/Config.in new file mode 100644 index 00000000..7c5b8eb4 --- /dev/null +++ b/package/brickd/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_BRICKD + bool "brickd" + depends on BR2_PACKAGE_HAS_UDEV # gudev + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_WCHAR # glib2 + depends on BR2_USE_MMU # glib2, gudev + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBGUDEV + help + Brick daemon for LEGO MINDSTORMS EV3 (and other LEGO- + compatible devices). This performs tasks like battery + management and controls device-specific hardware. + + https://github.com/ev3dev/brickd + +comment "brickd needs udev /dev management, a toolchain w/ threads, wchar" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_HAS_UDEV || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_USE_WCHAR diff --git a/package/brickd/S70brickd b/package/brickd/S70brickd new file mode 100644 index 00000000..063ad875 --- /dev/null +++ b/package/brickd/S70brickd @@ -0,0 +1,37 @@ +#!/bin/sh + +NAME=brickd +PIDFILE=/var/run/$NAME.pid +DAEMON=/usr/sbin/$NAME + +start() { + printf "Starting $NAME: " + start-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping $NAME: " + start-stop-daemon -K -q -p $PIDFILE + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac + +exit $? diff --git a/package/brickd/brickd.hash b/package/brickd/brickd.hash new file mode 100644 index 00000000..2a4139d1 --- /dev/null +++ b/package/brickd/brickd.hash @@ -0,0 +1,5 @@ +# Locally computed hash +sha256 6aef2678596046db8cc0b1797050c6f143a528c075fb26340966250f6c33b7ce brickd-v1.2.2-git4.tar.gz + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.txt diff --git a/package/brickd/brickd.mk b/package/brickd/brickd.mk new file mode 100644 index 00000000..f42b3c99 --- /dev/null +++ b/package/brickd/brickd.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# brickd +# +################################################################################ + +BRICKD_VERSION = v1.2.2 +BRICKD_SITE = https://github.com/ev3dev/brickd +BRICKD_SITE_METHOD = git +BRICKD_GIT_SUBMODULES = YES + +BRICKD_LICENSE = GPL-2.0 +BRICKD_LICENSE_FILES = LICENSE.txt + +BRICKD_INSTALL_STAGING = YES +BRICKD_DEPENDENCIES = host-pkgconf host-vala libglib2 libgudev + +define BRICKD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/brickd/S70brickd $(TARGET_DIR)/etc/init.d/S70brickd +endef + +$(eval $(cmake-package)) diff --git a/package/bridge-utils/0001-fix-build-on-musl.patch b/package/bridge-utils/0001-fix-build-on-musl.patch new file mode 100644 index 00000000..1a5d1eb2 --- /dev/null +++ b/package/bridge-utils/0001-fix-build-on-musl.patch @@ -0,0 +1,51 @@ +From 1d5a2e0f88e0c53fede03632fa92ffade5e79ac5 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 11 Apr 2021 10:04:59 +0200 +Subject: [PATCH] fix build on musl + +Build on musl is broken since version 1.7.1 and commit +a1f20223cfcf7b9eae8c9e7e7a07e7bf1377f65b: + +libbridge_devif.c: In function 'fpopen': +libbridge_devif.c:33:12: error: 'PATH_MAX' undeclared (first use in this function); did you mean 'AF_MAX'? + 33 | char path[PATH_MAX]; + | ^~~~~~~~ + | AF_MAX + +Fixes: + - http://autobuild.buildroot.org/results/0f080ff6913595ee2732b93206e5001c837c1bcc + +Signed-off-by: Fabrice Fontaine +[Upstream status: sent to Stephen Hemminger ] +--- + libbridge/libbridge_devif.c | 1 + + libbridge/libbridge_init.c | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/libbridge/libbridge_devif.c b/libbridge/libbridge_devif.c +index 8b7d954..6c679f6 100644 +--- a/libbridge/libbridge_devif.c ++++ b/libbridge/libbridge_devif.c +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + #include + #include + #include +diff --git a/libbridge/libbridge_init.c b/libbridge/libbridge_init.c +index c914971..83a97cd 100644 +--- a/libbridge/libbridge_init.c ++++ b/libbridge/libbridge_init.c +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + #include + #include + #include +-- +2.30.2 + diff --git a/package/bridge-utils/Config.in b/package/bridge-utils/Config.in new file mode 100644 index 00000000..2d886e2c --- /dev/null +++ b/package/bridge-utils/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_BRIDGE_UTILS + bool "bridge-utils" + help + Manage ethernet bridging; a way to connect networks together + to form a larger network. + + This utility is DEPRECATED. No new features will ever be + added. Instead use the bridge command from the iproute2 + package which supports more features. + + https://wiki.linuxfoundation.org/networking/bridge diff --git a/package/bridge-utils/bridge-utils.hash b/package/bridge-utils/bridge-utils.hash new file mode 100644 index 00000000..60cdd1ce --- /dev/null +++ b/package/bridge-utils/bridge-utils.hash @@ -0,0 +1,5 @@ +# From https://mirrors.edge.kernel.org/pub/linux/utils/net/bridge-utils/sha256sums.asc +sha256 a61d8be4f1a1405c60c8ef38d544f0c18c05b33b9b07e5b4b31033536165e60e bridge-utils-1.7.1.tar.xz + +# locally computed +sha256 995a31f60a9ddb4c609214cc7d17ca94cc3cbc7f37e1e64dba81e7f8ea9d4f91 COPYING diff --git a/package/bridge-utils/bridge-utils.mk b/package/bridge-utils/bridge-utils.mk new file mode 100644 index 00000000..e8e9a3ca --- /dev/null +++ b/package/bridge-utils/bridge-utils.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# bridge-utils +# +################################################################################ + +BRIDGE_UTILS_VERSION = 1.7.1 +BRIDGE_UTILS_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/net/bridge-utils +BRIDGE_UTILS_SOURCE = bridge-utils-$(BRIDGE_UTILS_VERSION).tar.xz +BRIDGE_UTILS_AUTORECONF = YES +BRIDGE_UTILS_LICENSE = GPL-2.0+ +BRIDGE_UTILS_LICENSE_FILES = COPYING +BRIDGE_UTILS_CPE_ID_VENDOR = kernel +BRIDGE_UTILS_SELINUX_MODULES = brctl + +# Avoid using the host's headers. Location is not important as +# required headers will anyway be found from within the sysroot. +BRIDGE_UTILS_CONF_OPTS = --with-linux-headers=$(STAGING_DIR)/usr/include + +$(eval $(autotools-package)) diff --git a/package/brltty/0001-Fix-linking-error-on-mips64el.patch b/package/brltty/0001-Fix-linking-error-on-mips64el.patch new file mode 100644 index 00000000..4882a226 --- /dev/null +++ b/package/brltty/0001-Fix-linking-error-on-mips64el.patch @@ -0,0 +1,42 @@ +From ddb06335935ef1458fe98f99cdc5d5fe6757fd02 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 3 Oct 2018 19:06:40 +0200 +Subject: [PATCH] Fix linking error on mips64el + +Patch that was fixing build on mips64el was reverted: +https://github.com/brltty/brltty/commit/9e7d62c869d3c1cbe12dda8b0291a4692c193416 + +So fix the issue again, this time by checking if $(GCC) is available as +suggested by Arnout during review of buildroot patch: +https://patchwork.ozlabs.org/patch/972614 + +Fixes: + - http://autobuild.buildroot.org/results/31f682838b3d3b2c7103b5c51f2aba0b89d4f630 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/brltty/brltty/pull/149] +--- + configure.ac | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 1e2774abf..a488d3d52 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -481,7 +481,12 @@ AC_CACHE_CHECK([for make relocatable object command], [brltty_cv_prog_make_objec + case "${host_os}" + in + *) +- brltty_cv_prog_make_object_relocatable="\$(LD) -r -o" ++ if test "${GCC}" = "yes" ++ then ++ brltty_cv_prog_make_object_relocatable="\$(CC) -shared -o" ++ else ++ brltty_cv_prog_make_object_relocatable="\$(LD) -r -o" ++ fi + ;; + esac]) + MKREL="${brltty_cv_prog_make_object_relocatable}" +-- +2.17.1 + diff --git a/package/brltty/Config.in b/package/brltty/Config.in new file mode 100644 index 00000000..3527df61 --- /dev/null +++ b/package/brltty/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_BRLTTY + bool "brltty" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HID if BR2_PACKAGE_BLUEZ5_UTILS && BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 # runtime + help + A daemon providing access to the Linux console for a blind + person using a refreshable braille display. + + http://brltty.app/ + +if BR2_PACKAGE_BRLTTY + +config BR2_PACKAGE_BRLTTY_TEXT_TABLE + string "text-table" + +endif + +comment "brltty needs a toolchain w/ dynamic lib, threads, wchar" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/package/brltty/S10brltty b/package/brltty/S10brltty new file mode 100644 index 00000000..18e274dc --- /dev/null +++ b/package/brltty/S10brltty @@ -0,0 +1,40 @@ +#!/bin/sh +# +# brltty Starts brltty. +# + +start() { + printf "Starting brltty: " + start-stop-daemon -S -q -p /var/run/brltty.pid \ + --exec /usr/bin/brltty -- -P /var/run/brltty.pid "$@" + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping brltty: " + start-stop-daemon -K -q -p /var/run/brltty.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start "$@" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + force-reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart|force-reload}" + exit 1 +esac + +exit $? diff --git a/package/brltty/brltty.hash b/package/brltty/brltty.hash new file mode 100644 index 00000000..9b707fc1 --- /dev/null +++ b/package/brltty/brltty.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 ab11cfc5fbd7ef0ec876ffea7e131e424b2fd004b6158064e1a2e46412825529 brltty-6.6.tar.xz +sha256 d80c9d084ebfb50ea1ed91bfbc2410d6ce542097a32c43b00781b83adcb8c77f LICENSE-LGPL +sha256 72740317768530c60046c591160d4552afb3ac49657b04c7b8452c1bbe7b834e README diff --git a/package/brltty/brltty.mk b/package/brltty/brltty.mk new file mode 100644 index 00000000..22d58ebd --- /dev/null +++ b/package/brltty/brltty.mk @@ -0,0 +1,142 @@ +################################################################################ +# +# brltty +# +################################################################################ + +BRLTTY_VERSION = 6.6 +BRLTTY_SOURCE = brltty-$(BRLTTY_VERSION).tar.xz +BRLTTY_SITE = http://brltty.com/archive +BRLTTY_INSTALL_STAGING_OPTS = INSTALL_ROOT=$(STAGING_DIR) install +BRLTTY_INSTALL_TARGET_OPTS = INSTALL_ROOT=$(TARGET_DIR) install +BRLTTY_LICENSE = LGPL-2.1+ +BRLTTY_LICENSE_FILES = LICENSE-LGPL README + +BRLTTY_DEPENDENCIES = \ + $(TARGET_NLS_DEPENDENCIES) \ + host-autoconf \ + host-gawk \ + host-pkgconf \ + $(if $(BR2_PACKAGE_AT_SPI2_CORE),at-spi2-core) + +BRLTTY_CONF_ENV = \ + PKG_CONFIG_FOR_BUILD=$(HOST_DIR)/bin/pkgconf + +BRLTTY_CONF_OPTS = \ + --disable-emacs-bindings \ + --disable-java-bindings \ + --disable-lisp-bindings \ + --disable-lua-bindings \ + --disable-ocaml-bindings \ + --disable-python-bindings \ + --disable-tcl-bindings \ + --disable-x \ + --without-espeak-ng \ + --without-midi-package \ + --without-mikropuhe --without-speechd --without-swift \ + --without-theta + +# Autoreconf is needed because we're patching configure.ac in +# 0001-Fix-linking-error-on-mips64el. However, a plain autoreconf doesn't work, +# because this package is only autoconf-based. +define BRLTTY_AUTOCONF + cd $(BRLTTY_SRCDIR) && $(AUTOCONF) +endef + +BRLTTY_PRE_CONFIGURE_HOOKS += BRLTTY_AUTOCONF + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y) +BRLTTY_DEPENDENCIES += bluez5_utils +BRLTTY_CONF_OPTS += --with-bluetooth-package +else +BRLTTY_CONF_OPTS += --without-bluetooth-package +endif + +ifeq ($(BR2_PACKAGE_ESPEAK),y) +BRLTTY_DEPENDENCIES += espeak +BRLTTY_CONF_OPTS += --with-espeak=$(TARGET_DIR)/usr +else +BRLTTY_CONF_OPTS += --without-espeak +endif + +ifeq ($(BR2_PACKAGE_EXPAT),y) +# host-expat is needed by tbl2hex's host program +BRLTTY_DEPENDENCIES += host-expat expat +BRLTTY_CONF_OPTS += --enable-expat +else +BRLTTY_CONF_OPTS += --disable-expat +endif + +ifeq ($(BR2_PACKAGE_FLITE),y) +BRLTTY_DEPENDENCIES += flite +BRLTTY_CONF_OPTS += --with-flite=$(STAGING_DIR)/usr +else +BRLTTY_CONF_OPTS += --without-flite +endif + +ifeq ($(BR2_PACKAGE_ICU),y) +BRLTTY_DEPENDENCIES += icu +BRLTTY_CONF_OPTS += --enable-icu +else +BRLTTY_CONF_OPTS += --disable-icu +endif + +ifeq ($(BR2_PACKAGE_NCURSES),y) +BRLTTY_DEPENDENCIES += ncurses +BRLTTY_CONF_OPTS += --with-curses +else +BRLTTY_CONF_OPTS += --without-curses +endif + +ifeq ($(BR2_PACKAGE_PCRE2_32),y) +BRLTTY_DEPENDENCIES += pcre2 +BRLTTY_CONF_OPTS += --with-rgx-package +else ifeq ($(BR2_PACKAGE_PCRE_32),y) +BRLTTY_DEPENDENCIES += pcre +BRLTTY_CONF_OPTS += --with-rgx-package +else +BRLTTY_CONF_OPTS += --without-rgx-package +endif + +ifeq ($(BR2_PACKAGE_POLKIT),y) +BRLTTY_DEPENDENCIES += polkit +BRLTTY_CONF_OPTS += --enable-polkit +else +BRLTTY_CONF_OPTS += --disable-polkit +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +BRLTTY_DEPENDENCIES += systemd +BRLTTY_CONF_OPTS += --with-service-package +else +BRLTTY_CONF_OPTS += --without-service-package +endif + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +BRLTTY_CONF_OPTS += --enable-i18n +else +BRLTTY_CONF_OPTS += --disable-i18n +endif + +BRLTTY_TEXT_TABLE = $(call qstrip,$(BR2_PACKAGE_BRLTTY_TEXT_TABLE)) +ifneq ($(BRLTTY_TEXT_TABLE),) +BRLTTY_CONF_OPTS += --with-text-table=$(BRLTTY_TEXT_TABLE) +endif + +define BRLTTY_INSTALL_CONF + $(INSTALL) -D -m 644 $(@D)/Documents/brltty.conf $(TARGET_DIR)/etc/brltty.conf +endef + +BRLTTY_POST_INSTALL_TARGET_HOOKS += BRLTTY_INSTALL_CONF + +define BRLTTY_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/brltty/S10brltty \ + $(TARGET_DIR)/etc/init.d/S10brltty +endef + +define BRLTTY_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/brltty/brltty.service \ + $(TARGET_DIR)/usr/lib/systemd/system/brltty.service +endef + +$(eval $(autotools-package)) diff --git a/package/brltty/brltty.service b/package/brltty/brltty.service new file mode 100644 index 00000000..070ec94b --- /dev/null +++ b/package/brltty/brltty.service @@ -0,0 +1,23 @@ +[Unit] +Description=Braille Device Support +Documentation=man:brltty(1) +Documentation=http://brltty.com/ + +DefaultDependencies=no +Before=sysinit.target +After=systemd-udev-settle.service +Wants=systemd-udev-settle.service + +[Service] +Type=simple +ExecStart=/usr/bin/brltty --no-daemon +TimeoutStartSec=5 +TimeoutStopSec=10 +Restart=always +RestartSec=30 +Nice=-10 +OOMScoreAdjust=-900 + +[Install] +WantedBy=sysinit.target + diff --git a/package/brotli/Config.in b/package/brotli/Config.in new file mode 100644 index 00000000..e40f5b6b --- /dev/null +++ b/package/brotli/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_BROTLI + bool "brotli" + help + Generic-purpose lossless compression library. The algorithm + compresses data using a combination of a modern variant of + the LZ77 algorithm, Huffman coding and 2nd order context + modeling, with a compression ratio comparable to the best + currently available general-purpose compression methods. It + is similar in speed with deflate but offers more dense + compression. + + https://github.com/google/brotli diff --git a/package/brotli/brotli.hash b/package/brotli/brotli.hash new file mode 100644 index 00000000..145467c4 --- /dev/null +++ b/package/brotli/brotli.hash @@ -0,0 +1,5 @@ +# Locally generated: +sha512 6eb280d10d8e1b43d22d00fa535435923c22ce8448709419d676ff47d4a644102ea04f488fc65a179c6c09fee12380992e9335bad8dfebd5d1f20908d10849d9 v1.1.0.tar.gz + +# Hash for license files: +sha512 bae78184c2f50f86d8c727826d3982c469454c42b9af81f4ef007e39036434fa894cf5be3bf5fc65b7de2301f0a72d067a8186e303327db8a96bd14867e0a3a8 LICENSE diff --git a/package/brotli/brotli.mk b/package/brotli/brotli.mk new file mode 100644 index 00000000..80aa2566 --- /dev/null +++ b/package/brotli/brotli.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# brotli +# +################################################################################ + +BROTLI_VERSION = 1.1.0 +BROTLI_SOURCE = v$(BROTLI_VERSION).tar.gz +BROTLI_SITE = https://github.com/google/brotli/archive +BROTLI_LICENSE = MIT +BROTLI_LICENSE_FILES = LICENSE +BROTLI_CPE_ID_VENDOR = google +BROTLI_INSTALL_STAGING = YES +BROTLI_CONF_OPTS = \ + -DBROTLI_DISABLE_TESTS=ON \ + -DBROTLI_BUNDLED_MODE=OFF + +BROTLI_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y) +BROTLI_CFLAGS += -O0 +endif + +# Workaround "Error: value -1234 out of range" assembler issues +# when building with optimizations. +ifeq ($(BR2_m68k),y) +BROTLI_CFLAGS += -Os +endif + +BROTLI_CONF_OPTS += -DCMAKE_C_FLAGS="$(BROTLI_CFLAGS)" + +$(eval $(cmake-package)) diff --git a/package/bsdiff/0001-Add-missing-header-for-u_char.patch b/package/bsdiff/0001-Add-missing-header-for-u_char.patch new file mode 100644 index 00000000..56affb41 --- /dev/null +++ b/package/bsdiff/0001-Add-missing-header-for-u_char.patch @@ -0,0 +1,17 @@ +bspatch: Fix missing header for u_char + +Fixes http://autobuild.buildroot.net/results/31a/31a837cf6e34b02dce498f2b12e40d6d16a5a8e6/ + +Signed-off-by: Jörg Krause + +diff -purN bsdiff-4.3.orig/bspatch.c bsdiff-4.3/bspatch.c +--- bsdiff-4.3.orig/bspatch.c 2015-04-30 13:47:26.485903359 +0200 ++++ bsdiff-4.3/bspatch.c 2015-04-30 13:48:14.808908672 +0200 +@@ -35,6 +35,7 @@ __FBSDID("$FreeBSD: src/usr.bin/bsdiff/b + #include + #include + #include ++#include + + static off_t offtin(u_char *buf) + { diff --git a/package/bsdiff/Config.in b/package/bsdiff/Config.in new file mode 100644 index 00000000..11fd8b9d --- /dev/null +++ b/package/bsdiff/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_BSDIFF + bool "bsdiff" + select BR2_PACKAGE_BZIP2 + help + Binary patch/diff like xdelta but creates smaller diffs. + Needs bzip2 support. + + http://www.daemonology.net/bsdiff/ diff --git a/package/bsdiff/bsdiff.hash b/package/bsdiff/bsdiff.hash new file mode 100644 index 00000000..102086b9 --- /dev/null +++ b/package/bsdiff/bsdiff.hash @@ -0,0 +1,4 @@ +# From http://www.daemonology.net/bsdiff/: +md5 e6d812394f0e0ecc8d5df255aa1db22a bsdiff-4.3.tar.gz +# locally computed +sha256 fc0a6e634ef77dcf14bf36c7b6d1e57ba1ac5c4809073dfaacb3b5f7ab277eb7 bsdiff.c diff --git a/package/bsdiff/bsdiff.mk b/package/bsdiff/bsdiff.mk new file mode 100644 index 00000000..97a1b392 --- /dev/null +++ b/package/bsdiff/bsdiff.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# bsdiff +# +################################################################################ + +BSDIFF_VERSION = 4.3 +BSDIFF_SITE = http://www.daemonology.net/bsdiff +BSDIFF_DEPENDENCIES = bzip2 +BSDIFF_LICENSE = BSD-2-Clause +BSDIFF_LICENSE_FILES = bsdiff.c +BSDIFF_CPE_ID_VENDOR = daemonology + +define BSDIFF_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) \ + $(@D)/bsdiff.c -lbz2 -o $(@D)/bsdiff + $(TARGET_MAKE_ENV) $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) \ + $(@D)/bspatch.c -lbz2 -o $(@D)/bspatch +endef + +define BSDIFF_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/bsdiff $(TARGET_DIR)/usr/bin/bsdiff + $(INSTALL) -D -m 755 $(@D)/bspatch $(TARGET_DIR)/usr/bin/bspatch +endef + +$(eval $(generic-package)) diff --git a/package/btrfs-progs/Config.in b/package/btrfs-progs/Config.in new file mode 100644 index 00000000..bae09606 --- /dev/null +++ b/package/btrfs-progs/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_BTRFS_PROGS + bool "btrfs-progs" + depends on BR2_USE_MMU # util-linux + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LZO + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_ZLIB + help + Btrfs filesystem utilities + + https://btrfs.readthedocs.io + +comment "btrfs-progs needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/btrfs-progs/Config.in.host b/package/btrfs-progs/Config.in.host new file mode 100644 index 00000000..cdcd2e4e --- /dev/null +++ b/package/btrfs-progs/Config.in.host @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HOST_BTRFS_PROGS + bool "host btrfs-progs" + help + Btrfs filesystem utilities + + https://btrfs.wiki.kernel.org/index.php/Main_Page diff --git a/package/btrfs-progs/btrfs-progs.hash b/package/btrfs-progs/btrfs-progs.hash new file mode 100644 index 00000000..f12c76c2 --- /dev/null +++ b/package/btrfs-progs/btrfs-progs.hash @@ -0,0 +1,5 @@ +# From https://www.kernel.org/pub/linux/kernel/people/kdave/btrfs-progs/sha256sums.asc +sha256 3382a84e3fcfe1ffdea07a61ab3f4e86665d38fa35f1f34548d5df867423e0df btrfs-progs-v6.10.tar.xz +# Locally computed +sha256 0d5bf346df9e635a29dcdddf832dc5b002ca6cdc1c5c9c6c567d2a61bb0c5c15 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 libbtrfsutil/COPYING diff --git a/package/btrfs-progs/btrfs-progs.mk b/package/btrfs-progs/btrfs-progs.mk new file mode 100644 index 00000000..273c7e37 --- /dev/null +++ b/package/btrfs-progs/btrfs-progs.mk @@ -0,0 +1,68 @@ +################################################################################ +# +# btrfs-progs +# +################################################################################ + +BTRFS_PROGS_VERSION = 6.10 +BTRFS_PROGS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/people/kdave/btrfs-progs +BTRFS_PROGS_SOURCE = btrfs-progs-v$(BTRFS_PROGS_VERSION).tar.xz +BTRFS_PROGS_DEPENDENCIES = host-pkgconf lzo util-linux zlib +BTRFS_PROGS_CONF_OPTS = --disable-backtrace --disable-python +BTRFS_PROGS_LICENSE = GPL-2.0, LGPL-2.1+ (libbtrfsutil) +BTRFS_PROGS_LICENSE_FILES = COPYING libbtrfsutil/COPYING +BTRFS_PROGS_INSTALL_STAGING = YES + +# 0002-btrfs-progs-add-uClibc-ng-compatibility-for-printf-f.patch +BTRFS_PROGS_AUTORECONF = YES + +# Doesn't autodetect static-only and tries to build both +ifeq ($(BR2_STATIC_LIBS),y) +BTRFS_PROGS_MAKE_OPTS = static +BTRFS_PROGS_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-static +BTRFS_PROGS_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) install-static +endif + +# convert also supports conversion from reiserfs, which needs some +# reiserfs libraries, but we have no package for them in Buildroot, so +# we keep things simple and only handle ext2. +ifeq ($(BR2_PACKAGE_E2FSPROGS),y) +BTRFS_PROGS_CONF_OPTS += --enable-convert --with-convert=ext2 +BTRFS_PROGS_DEPENDENCIES += e2fsprogs +else +BTRFS_PROGS_CONF_OPTS += --disable-convert +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +BTRFS_PROGS_CONF_OPTS += --enable-zstd +BTRFS_PROGS_DEPENDENCIES += zstd +else +BTRFS_PROGS_CONF_OPTS += --disable-zstd +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +BTRFS_PROGS_CONF_OPTS += --enable-libudev +BTRFS_PROGS_DEPENDENCIES += udev +else +BTRFS_PROGS_CONF_OPTS += --disable-libudev +endif + +ifeq ($(BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10),y) +BTRFS_PROGS_CONF_OPTS += --enable-zoned +else +BTRFS_PROGS_CONF_OPTS += --disable-zoned +endif + +HOST_BTRFS_PROGS_DEPENDENCIES = host-util-linux host-lzo host-zlib +HOST_BTRFS_PROGS_CONF_OPTS = \ + --disable-backtrace \ + --disable-libudev \ + --disable-zoned \ + --disable-zstd \ + --disable-python \ + --disable-convert + +HOST_BTRFS_PROGS_INSTALL_OPTS = udevdir= install + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/bubblewrap/Config.in b/package/bubblewrap/Config.in new file mode 100644 index 00000000..2492cee0 --- /dev/null +++ b/package/bubblewrap/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_BUBBLEWRAP + bool "bubblewrap" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBCAP + help + Unprivileged sandbox tool based on Linux namespaces. + + https://github.com/projectatomic/bubblewrap diff --git a/package/bubblewrap/bubblewrap.hash b/package/bubblewrap/bubblewrap.hash new file mode 100644 index 00000000..f61aca34 --- /dev/null +++ b/package/bubblewrap/bubblewrap.hash @@ -0,0 +1,5 @@ +# From https://github.com/containers/bubblewrap/releases/tag/v0.9.0 +sha256 c6347eaced49ac0141996f46bba3b089e5e6ea4408bc1c43bab9f2d05dd094e1 bubblewrap-0.9.0.tar.xz + +# Hash for license files: +sha256 b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c COPYING diff --git a/package/bubblewrap/bubblewrap.mk b/package/bubblewrap/bubblewrap.mk new file mode 100644 index 00000000..9dd711ce --- /dev/null +++ b/package/bubblewrap/bubblewrap.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# bubblewrap +# +################################################################################ + +BUBBLEWRAP_VERSION = 0.9.0 +BUBBLEWRAP_SITE = https://github.com/containers/bubblewrap/releases/download/v$(BUBBLEWRAP_VERSION) +BUBBLEWRAP_SOURCE = bubblewrap-$(BUBBLEWRAP_VERSION).tar.xz +BUBBLEWRAP_DEPENDENCIES = host-pkgconf libcap + +BUBBLEWRAP_LICENSE = LGPL-2.0+ +BUBBLEWRAP_LICENSE_FILES = COPYING +BUBBLEWRAP_CPE_ID_VENDOR = projectatomic + +BUBBLEWRAP_CONF_OPTS = \ + -Dzsh_completion=disabled \ + -Dman=disabled \ + -Dpython=$(HOST_DIR)/bin/python \ + -Drequire_userns=false \ + -Dtests=false + +ifeq ($(BR2_PACKAGE_BASH_COMPLETION),y) +BUBBLEWRAP_CONF_OPTS += \ + -Dbash_completion=enabled \ + -Dbash_completion_dir=/usr/share/bash-completion/completions +else +BUBBLEWRAP_CONF_OPTS += -Dbash_completion=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +BUBBLEWRAP_CONF_OPTS += -Dselinux=enabled +BUBBLEWRAP_DEPENDENCIES += libselinux +else +BUBBLEWRAP_CONF_OPTS += -Dselinux=disabled +endif + +# We need to mark bwrap as setuid, in case the kernel +# has user namespaces disabled for non-root users. +define BUBBLEWRAP_PERMISSIONS + /usr/bin/bwrap f 1755 0 0 - - - - - +endef + +$(eval $(meson-package)) diff --git a/package/bullet/Config.in b/package/bullet/Config.in new file mode 100644 index 00000000..0c420e82 --- /dev/null +++ b/package/bullet/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_BULLET + bool "bullet" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + help + Bullet is a Collision Detection and Rigid Body Dynamics + Library. + + http://bulletphysics.org + +comment "bullet needs a toolchain w/ C++, dynamic library, threads, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/package/bullet/bullet.hash b/package/bullet/bullet.hash new file mode 100644 index 00000000..3160b045 --- /dev/null +++ b/package/bullet/bullet.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c45afb6399e3f68036ddb641c6bf6f552bf332d5ab6be62f7e6c54eda05ceb77 bullet-3.25.tar.gz +sha256 885cd516a8420acb7c3e0b1a7119913b686495001ae564e3229740460e8cff59 LICENSE.txt diff --git a/package/bullet/bullet.mk b/package/bullet/bullet.mk new file mode 100644 index 00000000..e112623b --- /dev/null +++ b/package/bullet/bullet.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# bullet +# +################################################################################ + +BULLET_VERSION = 3.25 +BULLET_SITE = $(call github,bulletphysics,bullet3,$(BULLET_VERSION)) +BULLET_INSTALL_STAGING = YES +BULLET_LICENSE = Zlib +BULLET_LICENSE_FILES = LICENSE.txt + +# Disable unit tests. +# Don't disable demos apps and Bullet3 library to avoid a build failure: +# https://github.com/bulletphysics/bullet3/issues/3143 +BULLET_CONF_OPTS = -DBUILD_UNIT_TESTS=OFF + +# extras needs dlfcn.h and NPTL (pthread_barrier_init) +ifeq ($(BR2_STATIC_LIBS):$(BR2_TOOLCHAIN_HAS_THREADS_NPTL),:y) +BULLET_CONF_OPTS += -DBUILD_EXTRAS=ON +else +BULLET_CONF_OPTS += -DBUILD_EXTRAS=OFF +endif + +BULLET_CXXFLAGS = $(TARGET_CXXFLAGS) + +ifneq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180)$(BR2_TOOLCHAIN_HAS_GCC_BUG_101952),) +BULLET_CXXFLAGS += -O0 +endif + +BULLET_CONF_OPTS += -DCMAKE_CXX_FLAGS="$(BULLET_CXXFLAGS)" + +$(eval $(cmake-package)) diff --git a/package/bustle/0001-Makefile-fix-pcap-config-call.patch b/package/bustle/0001-Makefile-fix-pcap-config-call.patch new file mode 100644 index 00000000..b02bea64 --- /dev/null +++ b/package/bustle/0001-Makefile-fix-pcap-config-call.patch @@ -0,0 +1,45 @@ +From 77e2de892cd359f779c84739682431a66eb8cf31 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 8 Jan 2023 11:03:52 +0100 +Subject: [PATCH] Makefile: fix pcap-config call + +Fix the following build failure raised since libpcap version 1.10.2 and +https://github.com/the-tcpdump-group/libpcap/commit/d0cba780dc2b2bb4f3ca9427d1a0f03479f45707: + +pcap-config: Invalid command-line option pcap-config specified +Usage: pcap-config [ --help ] [ --static | --static-pcap-only ] [ --libs | --additional-libs ] +perl -nle 'm/^Version:\s+(.*)$/ and print $1' \ + bustle.cabal > dist/build/autogen/version.txt +echo '#define BUSTLE_VERSION "'`cat dist/build/autogen/version.txt`'"' > dist/build/autogen/version.h +/home/buildroot/autobuild/run/instance-2/output-1/host/bin/arm-linux-gcc -Idist/build/autogen -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -g0 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 \ + -o dist/build/bustle-pcap c-sources/pcap-reader.c c-sources/pcap-monitor.c c-sources/bustle-pcap.c \ + -I/home/buildroot/autobuild/run/instance-2/output-1/host/bin/../arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/glib-2.0 -I/home/buildroot/autobuild/run/instance-2/output-1/host/bin/../arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/glib-2.0/include -I/home/buildroot/autobuild/run/instance-2/output-1/host/bin/../arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/libmount -I/home/buildroot/autobuild/run/instance-2/output-1/host/bin/../arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/blkid -I/home/buildroot/autobuild/run/instance-2/output-1/host/bin/../arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gio-unix-2.0 -pthread -L/home/buildroot/autobuild/run/instance-2/output-1/host/bin/../arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib -lgio-2.0 -lgobject-2.0 -lglib-2.0 +/home/buildroot/autobuild/run/instance-2/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/10.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: /tmp/cc5SQkTV.o: in function `bustle_pcap_reader_finalize': +pcap-reader.c:(.text+0x254): undefined reference to `pcap_close' + +Fixes: + - http://autobuild.buildroot.org/results/f3dcb617488e4172e639e3bd51a93bc9822ea186 + +Signed-off-by: Fabrice Fontaine +[Upstream status: +https://gitlab.freedesktop.org/bustle/bustle/-/merge_requests/21] +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 8865819..721e714 100644 +--- a/Makefile ++++ b/Makefile +@@ -2,7 +2,7 @@ CFLAGS = -g -O2 -Wall -Wunused -Waddress + DBUS_FLAGS = $(shell pkg-config --cflags --libs dbus-1) + GIO_FLAGS := $(shell pkg-config --cflags --libs 'glib-2.0 >= 2.26' gio-2.0 gio-unix-2.0) + PCAP_CONFIG ?= pcap-config +-PCAP_FLAGS := $(shell $(PCAP_CONFIG) --cflags pcap-config --libs) ++PCAP_FLAGS := $(shell $(PCAP_CONFIG) --cflags --libs) + DESTDIR = + PREFIX = /usr/local + BINDIR = $(DESTDIR)$(PREFIX)/bin +-- +2.39.0 + diff --git a/package/bustle/Config.in b/package/bustle/Config.in new file mode 100644 index 00000000..c9d38d0d --- /dev/null +++ b/package/bustle/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_BUSTLE + bool "bustle" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + depends on BR2_PACKAGE_DBUS # runtime + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_LIBGLIB2 + help + Bustle is a better dbus-monitor! It records and draws + sequence diagrams of D-Bus activity, showing signal + emissions, method calls and their corresponding returns, + with timestamps for each individual event and the duration + of each method call. This can help you check for unwanted + D-Bus traffic, and pinpoint why your D-Bus-based application + isn't performing as well as you like. + + This only installs the command line bustle-pcap tool, not + the graphical viewer. + + https://gitlab.freedesktop.org/bustle/bustle/ + +comment "bustle needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_DBUS + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/bustle/bustle.hash b/package/bustle/bustle.hash new file mode 100644 index 00000000..0bb899f1 --- /dev/null +++ b/package/bustle/bustle.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2fb3e9d9a97db3cd9a3ce763e86947b642bd7733b46206177a1677f08726573c bustle-0.8.0.tar.gz +sha256 ad168b537264fba8f94380cb10f60847da7db551fb4281bb6d4f24c74f652a1d LICENSE diff --git a/package/bustle/bustle.mk b/package/bustle/bustle.mk new file mode 100644 index 00000000..b92d1a3e --- /dev/null +++ b/package/bustle/bustle.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# bustle +# +################################################################################ + +BUSTLE_VERSION = 0.8.0 +BUSTLE_SITE = https://hackage.haskell.org/package/bustle-$(BUSTLE_VERSION) +BUSTLE_LICENSE = LGPL-2.1+ +BUSTLE_LICENSE_FILES = LICENSE +BUSTLE_DEPENDENCIES = libglib2 libpcap host-pkgconf + +ifeq ($(BR2_STATIC_LIBS),y) +BUSTLE_MAKE_OPTS += PCAP_CONFIG="$(STAGING_DIR)/usr/bin/pcap-config --static" +else +BUSTLE_MAKE_OPTS += PCAP_CONFIG="$(STAGING_DIR)/usr/bin/pcap-config" +endif + +define BUSTLE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + $(BUSTLE_MAKE_OPTS) -C $(@D) dist/build/bustle-pcap +endef + +define BUSTLE_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/dist/build/bustle-pcap \ + $(TARGET_DIR)/usr/bin/bustle-pcap +endef + +$(eval $(generic-package)) diff --git a/package/busybox/0001-networking-libiproute-use-linux-if_packet.h-instead-.patch b/package/busybox/0001-networking-libiproute-use-linux-if_packet.h-instead-.patch new file mode 100644 index 00000000..9b5eaf89 --- /dev/null +++ b/package/busybox/0001-networking-libiproute-use-linux-if_packet.h-instead-.patch @@ -0,0 +1,37 @@ +From 60da1d0763224698008d847eb8ad8d4d8c6f54ff Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 5 Oct 2013 15:55:06 +0200 +Subject: [PATCH] networking/libiproute: use instead of + + +The musl C library doesn't provide the since the +corresponding kernel headers already provides the +necessary definitions. Replacing by + also removes the need to include + + +This commit fixes the build of iplink with the musl C library. + +Signed-off-by: Thomas Petazzoni +[Gustavo: update for busybox 1.22.0] +Signed-off-by: Petr Vorel +--- + networking/libiproute/iplink.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/networking/libiproute/iplink.c b/networking/libiproute/iplink.c +index 1a1064bdc..a4c3ad307 100644 +--- a/networking/libiproute/iplink.c ++++ b/networking/libiproute/iplink.c +@@ -7,7 +7,7 @@ + */ + #include + /*#include - not needed? */ +-#include ++#include + #include + + #include +-- +2.33.0 + diff --git a/package/busybox/0002-Makefile.flags-strip-non-l-arguments-returned-by-pkg.patch b/package/busybox/0002-Makefile.flags-strip-non-l-arguments-returned-by-pkg.patch new file mode 100644 index 00000000..3a942410 --- /dev/null +++ b/package/busybox/0002-Makefile.flags-strip-non-l-arguments-returned-by-pkg.patch @@ -0,0 +1,33 @@ +From 59daea82e7b5abcdb42a4f97a0109f14d5a774ea Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 25 Nov 2013 22:51:53 +0100 +Subject: [PATCH] Makefile.flags: strip non -l arguments returned by + pkg-config + +Signed-off-by: Thomas Petazzoni +[yann.morin.1998@free.fr: refresh for 1.29.0] +[petr.vorel@gmail.com: refresh for 1.32.0] +Signed-off-by: "Yann E. MORIN" +Signed-off-by: Petr Vorel +--- + Makefile.flags | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/Makefile.flags b/Makefile.flags +index 667481983..88d76efec 100644 +--- a/Makefile.flags ++++ b/Makefile.flags +@@ -180,7 +180,9 @@ ifeq ($(CONFIG_SELINUX),y) + SELINUX_PC_MODULES = libselinux libsepol + $(eval $(call pkg_check_modules,SELINUX,$(SELINUX_PC_MODULES))) + CPPFLAGS += $(SELINUX_CFLAGS) +-LDLIBS += $(if $(SELINUX_LIBS),$(SELINUX_LIBS:-l%=%),$(SELINUX_PC_MODULES:lib%=%)) ++LDLIBS += $(if $(SELINUX_LIBS),\ ++ $(patsubst -l%,%,$(filter -l%,$(SELINUX_LIBS))),\ ++ $(SELINUX_PC_MODULES:lib%=%)) + endif + + ifeq ($(CONFIG_FEATURE_NSLOOKUP_BIG),y) +-- +2.33.0 + diff --git a/package/busybox/0003-libbb-sockaddr2str-ensure-only-printable-characters-.patch b/package/busybox/0003-libbb-sockaddr2str-ensure-only-printable-characters-.patch new file mode 100644 index 00000000..623b2597 --- /dev/null +++ b/package/busybox/0003-libbb-sockaddr2str-ensure-only-printable-characters-.patch @@ -0,0 +1,42 @@ +From 9d825e854ef53ebbe0aea2f1a69f52b763104daf Mon Sep 17 00:00:00 2001 +From: Ariadne Conill +Date: Mon, 19 Sep 2022 14:15:12 +0200 +Subject: [PATCH] libbb: sockaddr2str: ensure only printable characters are + returned for the hostname part + +CVE: CVE-2022-28391 +Signed-off-by: Ariadne Conill +Tested-by: Radoslav Kolev +Backport from ML: http://lists.busybox.net/pipermail/busybox/2022-July/089796.html +Signed-off-by: Quentin Schulz +--- + libbb/xconnect.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/libbb/xconnect.c b/libbb/xconnect.c +index 0e0b247b8..02c061e67 100644 +--- a/libbb/xconnect.c ++++ b/libbb/xconnect.c +@@ -497,8 +497,9 @@ static char* FAST_FUNC sockaddr2str(const struct sockaddr *sa, int flags) + ); + if (rc) + return NULL; ++ /* ensure host contains only printable characters */ + if (flags & IGNORE_PORT) +- return xstrdup(host); ++ return xstrdup(printable_string(host)); + #if ENABLE_FEATURE_IPV6 + if (sa->sa_family == AF_INET6) { + if (strchr(host, ':')) /* heh, it's not a resolved hostname */ +@@ -509,7 +510,7 @@ static char* FAST_FUNC sockaddr2str(const struct sockaddr *sa, int flags) + #endif + /* For now we don't support anything else, so it has to be INET */ + /*if (sa->sa_family == AF_INET)*/ +- return xasprintf("%s:%s", host, serv); ++ return xasprintf("%s:%s", printable_string(host), serv); + /*return xstrdup(host);*/ + } + +-- +2.37.3 + diff --git a/package/busybox/0004-nslookup-sanitize-all-printed-strings-with-printable.patch b/package/busybox/0004-nslookup-sanitize-all-printed-strings-with-printable.patch new file mode 100644 index 00000000..bfa58465 --- /dev/null +++ b/package/busybox/0004-nslookup-sanitize-all-printed-strings-with-printable.patch @@ -0,0 +1,69 @@ +From bd463a5564a2c0618317448c3f965d389534c3df Mon Sep 17 00:00:00 2001 +From: Ariadne Conill +Date: Mon, 19 Sep 2022 14:15:12 +0200 +Subject: [PATCH] nslookup: sanitize all printed strings with printable_string + +Otherwise, terminal sequences can be injected, which enables various terminal injection +attacks from DNS results. + +CVE: CVE-2022-28391 +Signed-off-by: Ariadne Conill +Tested-by: Radoslav Kolev +Backport from ML: http://lists.busybox.net/pipermail/busybox/2022-July/089795.html +Signed-off-by: Quentin Schulz +--- + networking/nslookup.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/networking/nslookup.c b/networking/nslookup.c +index 6da97baf4..4bdcde1b8 100644 +--- a/networking/nslookup.c ++++ b/networking/nslookup.c +@@ -407,7 +407,7 @@ static NOINLINE int parse_reply(const unsigned char *msg, size_t len) + //printf("Unable to uncompress domain: %s\n", strerror(errno)); + return -1; + } +- printf(format, ns_rr_name(rr), dname); ++ printf(format, ns_rr_name(rr), printable_string(dname)); + break; + + case ns_t_mx: +@@ -422,7 +422,7 @@ static NOINLINE int parse_reply(const unsigned char *msg, size_t len) + //printf("Cannot uncompress MX domain: %s\n", strerror(errno)); + return -1; + } +- printf("%s\tmail exchanger = %d %s\n", ns_rr_name(rr), n, dname); ++ printf("%s\tmail exchanger = %d %s\n", ns_rr_name(rr), n, printable_string(dname)); + break; + + case ns_t_txt: +@@ -434,7 +434,7 @@ static NOINLINE int parse_reply(const unsigned char *msg, size_t len) + if (n > 0) { + memset(dname, 0, sizeof(dname)); + memcpy(dname, ns_rr_rdata(rr) + 1, n); +- printf("%s\ttext = \"%s\"\n", ns_rr_name(rr), dname); ++ printf("%s\ttext = \"%s\"\n", ns_rr_name(rr), printable_string(dname)); + } + break; + +@@ -454,7 +454,7 @@ static NOINLINE int parse_reply(const unsigned char *msg, size_t len) + } + + printf("%s\tservice = %u %u %u %s\n", ns_rr_name(rr), +- ns_get16(cp), ns_get16(cp + 2), ns_get16(cp + 4), dname); ++ ns_get16(cp), ns_get16(cp + 2), ns_get16(cp + 4), printable_string(dname)); + break; + + case ns_t_soa: +@@ -483,7 +483,7 @@ static NOINLINE int parse_reply(const unsigned char *msg, size_t len) + return -1; + } + +- printf("\tmail addr = %s\n", dname); ++ printf("\tmail addr = %s\n", printable_string(dname)); + cp += n; + + printf("\tserial = %lu\n", ns_get32(cp)); +-- +2.37.3 + diff --git a/package/busybox/0005-seedrng-fix-for-glibc-2.24-not-providing-getrandom.patch b/package/busybox/0005-seedrng-fix-for-glibc-2.24-not-providing-getrandom.patch new file mode 100644 index 00000000..4a194612 --- /dev/null +++ b/package/busybox/0005-seedrng-fix-for-glibc-2.24-not-providing-getrandom.patch @@ -0,0 +1,39 @@ +From 200a9669fbf6f06894e4243cccc9fc11a1a6073a Mon Sep 17 00:00:00 2001 +From: Denys Vlasenko +Date: Mon, 10 Apr 2023 17:26:04 +0200 +Subject: [PATCH] seedrng: fix for glibc <= 2.24 not providing getrandom() + +Signed-off-by: Denys Vlasenko +Upstream: https://git.busybox.net/busybox/commit/?id=200a9669fbf6f06894e4243cccc9fc11a1a6073a +--- + miscutils/seedrng.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/miscutils/seedrng.c b/miscutils/seedrng.c +index 967741dc7..7cc855141 100644 +--- a/miscutils/seedrng.c ++++ b/miscutils/seedrng.c +@@ -45,6 +45,20 @@ + #include + #include + ++/* Fix up glibc <= 2.24 not having getrandom() */ ++#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ <= 24 ++#include ++# define getrandom(...) bb_getrandom(__VA_ARGS__) ++static ssize_t getrandom(void *buffer, size_t length, unsigned flags) ++{ ++# if defined(__NR_getrandom) ++ return syscall(__NR_getrandom, buffer, length, flags); ++# else ++ return ENOSYS; ++# endif ++} ++#endif ++ + #ifndef GRND_INSECURE + #define GRND_INSECURE 0x0004 /* Apparently some headers don't ship with this yet. */ + #endif +-- +2.39.1 + diff --git a/package/busybox/0006-seedrng-fix-for-glibc-2.24-not-providing-random-head.patch b/package/busybox/0006-seedrng-fix-for-glibc-2.24-not-providing-random-head.patch new file mode 100644 index 00000000..d7298848 --- /dev/null +++ b/package/busybox/0006-seedrng-fix-for-glibc-2.24-not-providing-random-head.patch @@ -0,0 +1,60 @@ +From cb57abb46f06f4ede8d9ccbdaac67377fdf416cf Mon Sep 17 00:00:00 2001 +From: Thomas Devoogdt +Date: Mon, 10 Apr 2023 19:58:15 +0200 +Subject: [PATCH] seedrng: fix for glibc <= 2.24 not providing random header + + - dropped the wrong define (not sure why it was there) + - not available if glibc <= 2.24 + - GRND_NONBLOCK not defined if not included + - ret < 0 && errno == ENOSYS has to be true to get creditable set + +Signed-off-by: Thomas Devoogdt +Signed-off-by: Denys Vlasenko +Upstream: https://git.busybox.net/busybox/commit/?id=cb57abb46f06f4ede8d9ccbdaac67377fdf416cf +--- + miscutils/seedrng.c | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +diff --git a/miscutils/seedrng.c b/miscutils/seedrng.c +index 7cc855141..3bf6e2ea7 100644 +--- a/miscutils/seedrng.c ++++ b/miscutils/seedrng.c +@@ -42,25 +42,31 @@ + #include "libbb.h" + + #include +-#include + #include + + /* Fix up glibc <= 2.24 not having getrandom() */ + #if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ <= 24 + #include +-# define getrandom(...) bb_getrandom(__VA_ARGS__) + static ssize_t getrandom(void *buffer, size_t length, unsigned flags) + { + # if defined(__NR_getrandom) + return syscall(__NR_getrandom, buffer, length, flags); + # else +- return ENOSYS; ++ errno = ENOSYS; ++ return -1; + # endif + } ++#else ++#include ++#endif ++ ++/* Apparently some headers don't ship with this yet. */ ++#ifndef GRND_NONBLOCK ++#define GRND_NONBLOCK 0x0001 + #endif + + #ifndef GRND_INSECURE +-#define GRND_INSECURE 0x0004 /* Apparently some headers don't ship with this yet. */ ++#define GRND_INSECURE 0x0004 + #endif + + #define DEFAULT_SEED_DIR "/var/lib/seedrng" +-- +2.39.1 + diff --git a/package/busybox/0007-seedrng-fix-getrandom-detection-for-non-glibc-libc.patch b/package/busybox/0007-seedrng-fix-getrandom-detection-for-non-glibc-libc.patch new file mode 100644 index 00000000..140b27ca --- /dev/null +++ b/package/busybox/0007-seedrng-fix-getrandom-detection-for-non-glibc-libc.patch @@ -0,0 +1,124 @@ +From b2d26d449ec855602b9a88f58c2eb675de0224f2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rapha=C3=ABl=20M=C3=A9lotte?= +Date: Tue, 18 Apr 2023 15:54:43 +0200 +Subject: [PATCH v4] seedrng: fix getrandom() detection for non-glibc libc +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +glibc <= 2.24 does not provide getrandom(). A check for it has been +added in 200a9669fbf6f06894e4243cccc9fc11a1a6073a and fixed in +cb57abb46f06f4ede8d9ccbdaac67377fdf416cf. + +However, building with a libc other than glibc can lead to the same +problem as not every other libc has getrandom() either: + +- uClibc provides it from v1.0.2 onwards, but requires to define +_GNU_SOURCE (all versions - we already define it by default), and +stddef to be included first (when using uClibc < 1.0.35 - we already +include it through libbb.h). + +- musl libc has getrandom(), but only from version 1.1.20 onwards. As +musl does not provide __MUSL__ or version information, it's not +possible to check for it like we did for glibc. + +All of this makes it difficult (or impossible in case of musl) to +check what we need to do to have getrandom() based on each libc +versions. + +On top of that, getrandom() is also not available on older kernels. As +an example, when using a 3.10 kernel with uClibc 1.0.26, getrandom() +is declared so compiling works, but it fails at link time because +getrandom() is not defined. + +To make it easier, take a similar approach to what was done for the +crypt library: try to build a sample program to see if we have +getrandom(). To keep it compatible with different versions of +make (for reference see [1]), a variable for '#' is also introduced. + +Based on the new Makefile variable, we now either use the +libc-provided getrandom() when it's available, or use our own +implementation when it's not (like it was the case already for glibc < +2.25). + +This should fix compiling with many libc/kernel combinations. + +[1]: https://git.savannah.gnu.org/cgit/make.git/commit/?id=c6966b323811c37acedff05b576b907b06aea5f4 + +Signed-off-by: Raphaël Mélotte +Upstream: http://lists.busybox.net/pipermail/busybox/2023-May/090317.html +--- +Changes v3 -> v4: + - use a variable for '#' for compatibility with GNU make 4.2.1 and earlier. + +Changes v2 -> v3: + - fix _GNU_SOURCE define location + +Changes v1 -> v2: + - move _GNU_SOURCE to bb_libtest.c + - remove GRND_NONBLOCK + +Note that I was not able to test every single combination, but I could +confirm it builds successfully for: +uClibc 10.0.24, linux headers 3.10 (libc getrandom NOT used) +uClibc 1.0.36, linux headers 4.9 (libc getrandom used) +musl 1.1.16, linux headers 4.12 (libc getrandom NOT used) +musl 1.2.1, linux headers (libc getrandom used) +glibc 2.25, linux headers 4.10 (libc getrandom used) + + Makefile.flags | 12 ++++++++++++ + miscutils/seedrng.c | 8 ++++---- + 2 files changed, 16 insertions(+), 4 deletions(-) + +diff --git a/Makefile.flags b/Makefile.flags +index 1cec5ba20..0d437303a 100644 +--- a/Makefile.flags ++++ b/Makefile.flags +@@ -161,6 +161,18 @@ ifeq ($(RT_AVAILABLE),y) + LDLIBS += rt + endif + ++# GNU Make version 4.2.1 and earlier require number signs ('#') ++# inside function invocations to be escaped, while versions 4.3+ ++# require them to be unescaped. Use a variable for it so that it works ++# for both versions: ++C := \# ++# Not all libc versions have getrandom, so check for it: ++HAVE_GETRANDOM := $(shell printf '$Cdefine _GNU_SOURCE\n$Cinclude \n$Cinclude \nint main(void){char buf[256];\ngetrandom(buf,sizeof(buf),0);}' >bb_libtest.c; $(CC) $(CFLAGS) $(CFLAGS_busybox) -o /dev/null bb_libtest.c >/dev/null 2>&1 && echo "y"; rm bb_libtest.c) ++ ++ifeq ($(HAVE_GETRANDOM),y) ++CFLAGS += -DHAVE_GETRANDOM ++endif ++ + # libpam may use libpthread, libdl and/or libaudit. + # On some platforms that requires an explicit -lpthread, -ldl, -laudit. + # However, on *other platforms* it fails when some of those flags +diff --git a/miscutils/seedrng.c b/miscutils/seedrng.c +index 3bf6e2ea7..2f1e18c32 100644 +--- a/miscutils/seedrng.c ++++ b/miscutils/seedrng.c +@@ -44,8 +44,10 @@ + #include + #include + +-/* Fix up glibc <= 2.24 not having getrandom() */ +-#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ <= 24 ++/* Fix up some libc (e.g. glibc <= 2.24) not having getrandom() */ ++#if defined HAVE_GETRANDOM ++#include ++#else /* No getrandom */ + #include + static ssize_t getrandom(void *buffer, size_t length, unsigned flags) + { +@@ -56,8 +58,6 @@ static ssize_t getrandom(void *buffer, size_t length, unsigned flags) + return -1; + # endif + } +-#else +-#include + #endif + + /* Apparently some headers don't ship with this yet. */ +-- +2.39.1 + diff --git a/package/busybox/0008-shell-fix-SIGWINCH-and-SIGCHLD-in-hush-interrupting-.patch b/package/busybox/0008-shell-fix-SIGWINCH-and-SIGCHLD-in-hush-interrupting-.patch new file mode 100644 index 00000000..8ebb487e --- /dev/null +++ b/package/busybox/0008-shell-fix-SIGWINCH-and-SIGCHLD-in-hush-interrupting-.patch @@ -0,0 +1,103 @@ +From 93e0898c663a533082b5f3c2e7dcce93ec47076d Mon Sep 17 00:00:00 2001 +From: Denys Vlasenko +Date: Thu, 26 Jan 2023 12:56:33 +0100 +Subject: [PATCH] shell: fix SIGWINCH and SIGCHLD (in hush) interrupting line + input, closes 15256 + +function old new delta +record_pending_signo 32 63 +31 +lineedit_read_key 231 224 -7 +------------------------------------------------------------------------------ +(add/remove: 0/0 grow/shrink: 1/1 up/down: 31/-7) Total: 24 bytes + +Signed-off-by: Denys Vlasenko +Upstream: https://git.busybox.net/busybox/commit/?id=93e0898c663a533082b5f3c2e7dcce93ec47076d +Signed-off-by: Romain Naour +--- + libbb/lineedit.c | 17 ++++++++++------- + shell/ash.c | 3 ++- + shell/hush.c | 10 ++++++++-- + 3 files changed, 20 insertions(+), 10 deletions(-) + +diff --git a/libbb/lineedit.c b/libbb/lineedit.c +index d6b2e76ff..b942f540a 100644 +--- a/libbb/lineedit.c ++++ b/libbb/lineedit.c +@@ -2180,7 +2180,8 @@ static int lineedit_read_key(char *read_key_buffer, int timeout) + * "\xff\n",pause,"ls\n" invalid and thus won't lose "ls". + * + * If LI_INTERRUPTIBLE, return -1 if got EINTR in poll() +- * inside read_key, or if bb_got_signal != 0 (IOW: if signal ++ * inside read_key and bb_got_signal became != 0, ++ * or if bb_got_signal != 0 (IOW: if signal + * arrived before poll() is reached). + * + * Note: read_key sets errno to 0 on success. +@@ -2197,14 +2198,16 @@ static int lineedit_read_key(char *read_key_buffer, int timeout) + IF_FEATURE_EDITING_WINCH(S.ok_to_redraw = 0;) + if (errno != EINTR) + break; ++ /* It was EINTR. Repeat read_key() unless... */ + if (state->flags & LI_INTERRUPTIBLE) { +- /* LI_INTERRUPTIBLE bails out on EINTR, +- * but nothing really guarantees that bb_got_signal +- * is nonzero. Follow the least surprise principle: ++ /* LI_INTERRUPTIBLE bails out on EINTR ++ * if bb_got_signal became nonzero. ++ * (It may stay zero: for example, our SIGWINCH ++ * handler does not set it. This is used for signals ++ * which should not interrupt line editing). + */ +- if (bb_got_signal == 0) +- bb_got_signal = 255; +- goto ret; ++ if (bb_got_signal != 0) ++ goto ret; /* will return -1 */ + } + } + +diff --git a/shell/ash.c b/shell/ash.c +index 18ccc1329..5f8c8ea19 100644 +--- a/shell/ash.c ++++ b/shell/ash.c +@@ -10821,7 +10821,8 @@ preadfd(void) + again: + /* For shell, LI_INTERRUPTIBLE is set: + * read_line_input will abort on either +- * getting EINTR in poll(), or if it sees bb_got_signal != 0 ++ * getting EINTR in poll() and bb_got_signal became != 0, ++ * or if it sees bb_got_signal != 0 + * (IOW: if signal arrives before poll() is reached). + * Interactive testcases: + * (while kill -INT $$; do sleep 1; done) & +diff --git a/shell/hush.c b/shell/hush.c +index d111f0cc5..f064b8fd2 100644 +--- a/shell/hush.c ++++ b/shell/hush.c +@@ -1946,7 +1946,12 @@ static void record_pending_signo(int sig) + { + sigaddset(&G.pending_set, sig); + #if ENABLE_FEATURE_EDITING +- bb_got_signal = sig; /* for read_line_input: "we got a signal" */ ++ if (sig != SIGCHLD ++ || (G_traps && G_traps[SIGCHLD] && G_traps[SIGCHLD][0]) ++ /* ^^^ if SIGCHLD, interrupt line reading only if it has a trap */ ++ ) { ++ bb_got_signal = sig; /* for read_line_input: "we got a signal" */ ++ } + #endif + #if ENABLE_HUSH_FAST + if (sig == SIGCHLD) { +@@ -2669,7 +2674,8 @@ static int get_user_input(struct in_str *i) + } else { + /* For shell, LI_INTERRUPTIBLE is set: + * read_line_input will abort on either +- * getting EINTR in poll(), or if it sees bb_got_signal != 0 ++ * getting EINTR in poll() and bb_got_signal became != 0, ++ * or if it sees bb_got_signal != 0 + * (IOW: if signal arrives before poll() is reached). + * Interactive testcases: + * (while kill -INT $$; do sleep 1; done) & +-- +2.30.2 + diff --git a/package/busybox/0009-menuconfig-gcc-failing-saying-ncurses-is-not-found.patch b/package/busybox/0009-menuconfig-gcc-failing-saying-ncurses-is-not-found.patch new file mode 100644 index 00000000..4651d8c2 --- /dev/null +++ b/package/busybox/0009-menuconfig-gcc-failing-saying-ncurses-is-not-found.patch @@ -0,0 +1,38 @@ +From ctxnop@gmail.com Sun Jul 21 12:10:52 2024 +From: ctxnop@gmail.com (Nop) +Date: Sun, 21 Jul 2024 14:10:52 +0200 +Subject: [PATCH] menuconfig: GCC failing saying ncurses is not found + +Newer GCC increased diagnostics levels resulting in considering the +test code to be invalid. The resulting message was misleading, saying +that ncurses was not found, while the check failed for an unrelated +reason which was hidden because GCC stderr was redirected to +/dev/null. + +Signed-off-by: ctxnop +Upstream: http://lists.busybox.net/pipermail/busybox/2024-July/090840.html +[Fiona: rephrased commit message for clarity] +Signed-off-by: Fiona Klute (WIWA) +--- + scripts/kconfig/lxdialog/check-lxdialog.sh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/scripts/kconfig/lxdialog/check-lxdialog.sh +b/scripts/kconfig/lxdialog/check-lxdialog.sh +index 5075ebf2d..c644d1d48 100755 +--- a/scripts/kconfig/lxdialog/check-lxdialog.sh ++++ b/scripts/kconfig/lxdialog/check-lxdialog.sh +@@ -45,9 +45,9 @@ trap "rm -f $tmp" 0 1 2 3 15 + + # Check if we can link to ncurses + check() { +- $cc -x c - -o $tmp 2>/dev/null <<'EOF' ++ $cc -x c - -o $tmp <<'EOF' + #include CURSES_LOC +-main() {} ++int main() { return 0; } + EOF + if [ $? != 0 ]; then + echo " *** Unable to find the ncurses libraries or the" 1>&2 +-- +2.45.2 diff --git a/package/busybox/Config.in b/package/busybox/Config.in new file mode 100644 index 00000000..3c2aa515 --- /dev/null +++ b/package/busybox/Config.in @@ -0,0 +1,104 @@ +config BR2_PACKAGE_BUSYBOX + bool "BusyBox" + default y + help + The Swiss Army Knife of embedded Linux. It slices, it dices, + it makes Julian Fries. + + http://busybox.net/ + + Most people will answer Y. + +if BR2_PACKAGE_BUSYBOX + +config BR2_PACKAGE_BUSYBOX_CONFIG + string "BusyBox configuration file to use?" + default "package/busybox/busybox-minimal.config" if !BR2_USE_MMU + default "package/busybox/busybox.config" + help + Some people may wish to use their own modified BusyBox + configuration file, and will specify their config file + location with this option. + + Most people will just use the default BusyBox configuration + file. + +config BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES + string "Additional BusyBox configuration fragment files" + help + A space-separated list of configuration fragment files, + that will be merged to the main BusyBox configuration file. + +# This option is not an option of Busybox, it can be selected even +# if Busybox is not enabled. +config BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + bool "Show packages that are also provided by busybox" + help + Show packages in menuconfig that are potentially also provided + by busybox. + +config BR2_PACKAGE_BUSYBOX_SELINUX + bool "Enable SELinux support" + default y + depends on BR2_PACKAGE_LIBSELINUX + select BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES + help + Enable SELinux support in BusyBox. Please note that + depending on your BusyBox configuration and the SELinux + policy implementation, you may want to also enable + BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES. + + For instance, if your BusyBox configuration only uses a + couple of minor BusyBox features, such as simple command + line utilities, the symlinked version of BusyBox can be used + to save space. If BusyBox provides more features, such as + crond, then individual binaries have to be enabled for the + SELinux type transitions to occur properly. + +config BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES + bool "Individual binaries" + depends on !BR2_STATIC_LIBS + help + By default (i.e with this option disabled), Busybox is + installed as a single binary in /bin/busybox and all applets + are a symbolic link to /bin/busybox. + + With this option enabled, each applet is a separate binary, + which is needed for proper operation with SELinux. + +comment "Busybox individual binaries need a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_BUSYBOX_WATCHDOG + bool "Install the watchdog daemon startup script" + help + Install the watchdog daemon startup script, + that just start at the boot the busybox watchdog daemon. + +if BR2_PACKAGE_BUSYBOX_WATCHDOG + +config BR2_PACKAGE_BUSYBOX_WATCHDOG_PERIOD + string "Delay between reset" + default "5" + help + Select the number of seconds between each + reset of the watchdog (default 5) + + Use ms suffix to specify milliseconds (e.g. 500ms) + +endif + +endif + +if !BR2_PACKAGE_BUSYBOX # kconfig doesn't support else + +comment "You may need to enable other packages to get a working system" +comment "You better know what you're doing!" + +# This option is not an option of Busybox, it can be selected even if +# Busybox is not enabled. This dummy option ensures that packages that +# depend on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS are visible when Busybox +# is disabled. +config BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + default y +endif diff --git a/package/busybox/S01syslogd b/package/busybox/S01syslogd new file mode 100644 index 00000000..a1f4bbfd --- /dev/null +++ b/package/busybox/S01syslogd @@ -0,0 +1,60 @@ +#!/bin/sh + +DAEMON="syslogd" +PIDFILE="/var/run/$DAEMON.pid" + +SYSLOGD_ARGS="" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +# BusyBox' syslogd does not create a pidfile, so pass "-n" in the command line +# and use "--make-pidfile" to instruct start-stop-daemon to create one. +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon --start --background --make-pidfile \ + --pidfile "$PIDFILE" --exec "/sbin/$DAEMON" \ + -- -n $SYSLOGD_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon --stop --pidfile "$PIDFILE" --exec "/sbin/$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + return "$status" + fi + while start-stop-daemon --stop --test --quiet --pidfile "$PIDFILE" \ + --exec "/sbin/$DAEMON"; do + sleep 0.1 + done + rm -f "$PIDFILE" + return "$status" +} + +restart() { + stop + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/busybox/S02klogd b/package/busybox/S02klogd new file mode 100644 index 00000000..0677e1e5 --- /dev/null +++ b/package/busybox/S02klogd @@ -0,0 +1,55 @@ +#!/bin/sh + +DAEMON="klogd" +PIDFILE="/var/run/$DAEMON.pid" + +KLOGD_ARGS="" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +# BusyBox' klogd does not create a pidfile, so pass "-n" in the command line +# and use "-m" to instruct start-stop-daemon to create one. +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/sbin/$DAEMON" \ + -- -n $KLOGD_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/busybox/S02sysctl b/package/busybox/S02sysctl new file mode 120000 index 00000000..796855c3 --- /dev/null +++ b/package/busybox/S02sysctl @@ -0,0 +1 @@ +../procps-ng/S02sysctl \ No newline at end of file diff --git a/package/busybox/S10mdev b/package/busybox/S10mdev new file mode 100644 index 00000000..3c6f47c1 --- /dev/null +++ b/package/busybox/S10mdev @@ -0,0 +1,42 @@ +#!/bin/sh +# +# Run the mdev daemon +# + +DAEMON="mdev" +PIDFILE="/var/run/$DAEMON.pid" + + +start() { + echo -n "Starting $DAEMON... " + start-stop-daemon -S -b -m -p $PIDFILE -x /sbin/mdev -- -df + [ $? -eq 0 ] && echo "OK" || echo "ERROR" + + # coldplug modules + find /sys/ -name modalias -print0 | \ + xargs -0 sort -u | \ + tr '\n' '\0' | \ + xargs -0 modprobe -abq +} + +stop() { + echo -n "Stopping $DAEMON... " + start-stop-daemon -K -p $PIDFILE + [ $? -eq 0 ] && echo "OK" || echo "ERROR" +} + +restart() { + stop + start +} + +case "$1" in + start|stop|restart) + "$1" + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/package/busybox/S15watchdog b/package/busybox/S15watchdog new file mode 100644 index 00000000..470c6d73 --- /dev/null +++ b/package/busybox/S15watchdog @@ -0,0 +1,20 @@ +#!/bin/sh +# +# Start watchdog +# + +case "$1" in + start) + echo "Starting watchdog..." + watchdog -t PERIOD /dev/watchdog + ;; + stop) + ;; + restart|reload) + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/package/busybox/S41ifplugd b/package/busybox/S41ifplugd new file mode 100644 index 00000000..8c2c1a50 --- /dev/null +++ b/package/busybox/S41ifplugd @@ -0,0 +1,85 @@ +#!/bin/sh + +DAEMON="ifplugd" + +# Each ifplugd instance handles only one interface, so this script is +# designed to be symlinked per interface. For each interface create a +# symlink with .IFACE appended to the name. E.g. to launch ifplugd for +# eth1 create a symlink from /etc/init.d/S41ifplugd.eth1 to this +# script. DEFAULT_IFACE sets the interface the non-symlink script will +# use, set it to empty in /etc/default/ifplugd to disable the default +# instance and use symlinked instances only. +DEFAULT_IFACE="eth0" +# If your action script is not in the default location +# /etc/ifplugd/ifplugd.action, use the "-r" option to set the +# location. +IFPLUGD_ARGS="-M" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +NAME_IFACE="$(basename "$0" | cut -s -d. -f2)" +if [ -n "$NAME_IFACE" ]; then + IFACE="${NAME_IFACE}" +elif [ -n "$DEFAULT_IFACE" ]; then + IFACE="${DEFAULT_IFACE}" +else + # no interface configured + exit 0 +fi + +# check-package disable Variables +PIDFILE="/var/run/${DAEMON}.${IFACE}.pid" +IFPLUGD_ARGS="${IFPLUGD_ARGS} -i ${IFACE}" + +# BusyBox' ifplugd does not create a pidfile, so pass "-n" in the +# command line and use "--make-pidfile" to instruct start-stop-daemon +# to create one. +start() { + printf 'Starting %s for %s: ' "$DAEMON" "$IFACE" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon --start --background --make-pidfile \ + --pidfile "$PIDFILE" --exec "/usr/sbin/$DAEMON" \ + -- -n $IFPLUGD_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s for %s: ' "$DAEMON" "$IFACE" + start-stop-daemon --stop --pidfile "$PIDFILE" --exec "/usr/sbin/$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + return "$status" + fi + while start-stop-daemon --stop --test --quiet --pidfile "$PIDFILE" \ + --exec "/sbin/$DAEMON"; do + sleep 0.1 + done + rm -f "$PIDFILE" + return "$status" +} + +restart() { + stop + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/busybox/S50crond b/package/busybox/S50crond new file mode 100644 index 00000000..74a0c084 --- /dev/null +++ b/package/busybox/S50crond @@ -0,0 +1,60 @@ +#!/bin/sh + +DAEMON="crond" +PIDFILE="/var/run/$DAEMON.pid" + +CROND_ARGS="" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +# BusyBox' crond does not create a pidfile, so pass "-f" on the crond +# command line and use "--make-pidfile" to instruct start-stop-daemon +# to create one. +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon --start --background --make-pidfile \ + --pidfile "$PIDFILE" --exec "/usr/sbin/$DAEMON" \ + -- -f $CROND_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon --stop --pidfile "$PIDFILE" --exec "/usr/sbin/$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + while start-stop-daemon --stop --test --quiet --pidfile "$PIDFILE" \ + --exec "/sbin/$DAEMON"; do + sleep 0.1 + done + rm -f "$PIDFILE" + return "$status" +} + +restart() { + stop + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/busybox/S50telnet b/package/busybox/S50telnet new file mode 100644 index 00000000..82952b8c --- /dev/null +++ b/package/busybox/S50telnet @@ -0,0 +1,39 @@ +#!/bin/sh +# +# Start telnet.... +# + +TELNETD_ARGS=-F +[ -r /etc/default/telnet ] && . /etc/default/telnet + +start() { + printf "Starting telnetd: " + start-stop-daemon -S -q -m -b -p /var/run/telnetd.pid \ + -x /usr/sbin/telnetd -- $TELNETD_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping telnetd: " + start-stop-daemon -K -q -p /var/run/telnetd.pid \ + -x /usr/sbin/telnetd + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/package/busybox/busybox-minimal.config b/package/busybox/busybox-minimal.config new file mode 100644 index 00000000..5d2a3080 --- /dev/null +++ b/package/busybox/busybox-minimal.config @@ -0,0 +1,1211 @@ +# +# Automatically generated make config: don't edit +# Busybox version: 1.35.0 +# Thu Jan 27 10:16:03 2022 +# +CONFIG_HAVE_DOT_CONFIG=y + +# +# Settings +# +# CONFIG_DESKTOP is not set +# CONFIG_EXTRA_COMPAT is not set +# CONFIG_FEDORA_COMPAT is not set +CONFIG_INCLUDE_SUSv2=y +CONFIG_LONG_OPTS=y +# CONFIG_SHOW_USAGE is not set +# CONFIG_FEATURE_VERBOSE_USAGE is not set +# CONFIG_FEATURE_COMPRESS_USAGE is not set +CONFIG_LFS=y +# CONFIG_PAM is not set +CONFIG_FEATURE_DEVPTS=y +CONFIG_FEATURE_UTMP=y +CONFIG_FEATURE_WTMP=y +# CONFIG_FEATURE_PIDFILE is not set +CONFIG_PID_FILE_PATH="" +CONFIG_BUSYBOX=y +CONFIG_FEATURE_SHOW_SCRIPT=y +CONFIG_FEATURE_INSTALLER=y +# CONFIG_INSTALL_NO_USR is not set +CONFIG_FEATURE_SUID=y +# CONFIG_FEATURE_SUID_CONFIG is not set +# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set +# CONFIG_FEATURE_PREFER_APPLETS is not set +CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" +# CONFIG_SELINUX is not set +# CONFIG_FEATURE_CLEAN_UP is not set +CONFIG_FEATURE_SYSLOG_INFO=y +CONFIG_FEATURE_SYSLOG=y + +# +# Build Options +# +CONFIG_STATIC=y +# CONFIG_PIE is not set +# CONFIG_NOMMU is not set +# CONFIG_BUILD_LIBBUSYBOX is not set +# CONFIG_FEATURE_LIBBUSYBOX_STATIC is not set +# CONFIG_FEATURE_INDIVIDUAL is not set +# CONFIG_FEATURE_SHARED_BUSYBOX is not set +CONFIG_CROSS_COMPILER_PREFIX="" +CONFIG_SYSROOT="" +CONFIG_EXTRA_CFLAGS="" +CONFIG_EXTRA_LDFLAGS="" +CONFIG_EXTRA_LDLIBS="" +# CONFIG_USE_PORTABLE_CODE is not set +# CONFIG_STACK_OPTIMIZATION_386 is not set +CONFIG_STATIC_LIBGCC=y + +# +# Installation Options ("make install" behavior) +# +CONFIG_INSTALL_APPLET_SYMLINKS=y +# CONFIG_INSTALL_APPLET_HARDLINKS is not set +# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set +# CONFIG_INSTALL_APPLET_DONT is not set +# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set +# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set +# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set +CONFIG_PREFIX="./_install" + +# +# Debugging Options +# +# CONFIG_DEBUG is not set +# CONFIG_DEBUG_PESSIMIZE is not set +# CONFIG_DEBUG_SANITIZE is not set +# CONFIG_UNIT_TEST is not set +# CONFIG_WERROR is not set +# CONFIG_WARN_SIMPLE_MSG is not set +CONFIG_NO_DEBUG_LIB=y +# CONFIG_DMALLOC is not set +# CONFIG_EFENCE is not set + +# +# Library Tuning +# +# CONFIG_FEATURE_USE_BSS_TAIL is not set +CONFIG_FLOAT_DURATION=y +CONFIG_FEATURE_RTMINMAX=y +CONFIG_FEATURE_RTMINMAX_USE_LIBC_DEFINITIONS=y +CONFIG_FEATURE_BUFFERS_USE_MALLOC=y +# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set +# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set +CONFIG_PASSWORD_MINLEN=6 +CONFIG_MD5_SMALL=1 +CONFIG_SHA3_SMALL=1 +CONFIG_FEATURE_NON_POSIX_CP=y +# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set +CONFIG_FEATURE_USE_SENDFILE=y +CONFIG_FEATURE_COPYBUF_KB=4 +CONFIG_MONOTONIC_SYSCALL=y +CONFIG_IOCTL_HEX2STR_ERROR=y +CONFIG_FEATURE_EDITING=y +CONFIG_FEATURE_EDITING_MAX_LEN=1024 +CONFIG_FEATURE_EDITING_VI=y +CONFIG_FEATURE_EDITING_HISTORY=999 +CONFIG_FEATURE_EDITING_SAVEHISTORY=y +# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set +CONFIG_FEATURE_REVERSE_SEARCH=y +CONFIG_FEATURE_TAB_COMPLETION=y +# CONFIG_FEATURE_USERNAME_COMPLETION is not set +CONFIG_FEATURE_EDITING_FANCY_PROMPT=y +CONFIG_FEATURE_EDITING_WINCH=y +# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set +# CONFIG_LOCALE_SUPPORT is not set +# CONFIG_UNICODE_SUPPORT is not set +# CONFIG_UNICODE_USING_LOCALE is not set +# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set +CONFIG_SUBST_WCHAR=0 +CONFIG_LAST_SUPPORTED_WCHAR=0 +# CONFIG_UNICODE_COMBINING_WCHARS is not set +# CONFIG_UNICODE_WIDE_WCHARS is not set +# CONFIG_UNICODE_BIDI_SUPPORT is not set +# CONFIG_UNICODE_NEUTRAL_TABLE is not set +# CONFIG_UNICODE_PRESERVE_BROKEN is not set + +# +# Applets +# + +# +# Archival Utilities +# +# CONFIG_FEATURE_SEAMLESS_XZ is not set +# CONFIG_FEATURE_SEAMLESS_LZMA is not set +# CONFIG_FEATURE_SEAMLESS_BZ2 is not set +# CONFIG_FEATURE_SEAMLESS_GZ is not set +# CONFIG_FEATURE_SEAMLESS_Z is not set +# CONFIG_AR is not set +# CONFIG_FEATURE_AR_LONG_FILENAMES is not set +# CONFIG_FEATURE_AR_CREATE is not set +# CONFIG_UNCOMPRESS is not set +# CONFIG_GUNZIP is not set +CONFIG_ZCAT=y +# CONFIG_FEATURE_GUNZIP_LONG_OPTIONS is not set +# CONFIG_BUNZIP2 is not set +CONFIG_BZCAT=y +# CONFIG_UNLZMA is not set +CONFIG_LZCAT=y +# CONFIG_LZMA is not set +# CONFIG_UNXZ is not set +CONFIG_XZCAT=y +# CONFIG_XZ is not set +# CONFIG_BZIP2 is not set +CONFIG_BZIP2_SMALL=0 +CONFIG_FEATURE_BZIP2_DECOMPRESS=y +# CONFIG_CPIO is not set +# CONFIG_FEATURE_CPIO_O is not set +# CONFIG_FEATURE_CPIO_P is not set +# CONFIG_FEATURE_CPIO_IGNORE_DEVNO is not set +# CONFIG_FEATURE_CPIO_RENUMBER_INODES is not set +# CONFIG_DPKG is not set +# CONFIG_DPKG_DEB is not set +# CONFIG_GZIP is not set +# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set +CONFIG_GZIP_FAST=0 +# CONFIG_FEATURE_GZIP_LEVELS is not set +CONFIG_FEATURE_GZIP_DECOMPRESS=y +# CONFIG_LZOP is not set +CONFIG_UNLZOP=y +CONFIG_LZOPCAT=y +# CONFIG_LZOP_COMPR_HIGH is not set +# CONFIG_RPM is not set +# CONFIG_RPM2CPIO is not set +# CONFIG_TAR is not set +# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set +# CONFIG_FEATURE_TAR_CREATE is not set +# CONFIG_FEATURE_TAR_AUTODETECT is not set +# CONFIG_FEATURE_TAR_FROM is not set +# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set +# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set +# CONFIG_FEATURE_TAR_GNU_EXTENSIONS is not set +# CONFIG_FEATURE_TAR_TO_COMMAND is not set +# CONFIG_FEATURE_TAR_UNAME_GNAME is not set +# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set +# CONFIG_FEATURE_TAR_SELINUX is not set +# CONFIG_UNZIP is not set +# CONFIG_FEATURE_UNZIP_CDF is not set +# CONFIG_FEATURE_UNZIP_BZIP2 is not set +# CONFIG_FEATURE_UNZIP_LZMA is not set +# CONFIG_FEATURE_UNZIP_XZ is not set +# CONFIG_FEATURE_LZMA_FAST is not set + +# +# Coreutils +# +CONFIG_FEATURE_VERBOSE=y + +# +# Common options for date and touch +# +# CONFIG_FEATURE_TIMEZONE is not set + +# +# Common options for cp and mv +# +CONFIG_FEATURE_PRESERVE_HARDLINKS=y + +# +# Common options for df, du, ls +# +CONFIG_FEATURE_HUMAN_READABLE=y +CONFIG_BASENAME=y +CONFIG_CAT=y +CONFIG_FEATURE_CATN=y +CONFIG_FEATURE_CATV=y +CONFIG_CHGRP=y +CONFIG_CHMOD=y +CONFIG_CHOWN=y +# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set +CONFIG_CHROOT=y +CONFIG_CKSUM=y +CONFIG_CRC32=y +# CONFIG_COMM is not set +CONFIG_CP=y +# CONFIG_FEATURE_CP_LONG_OPTIONS is not set +# CONFIG_FEATURE_CP_REFLINK is not set +CONFIG_CUT=y +CONFIG_FEATURE_CUT_REGEX=y +CONFIG_DATE=y +CONFIG_FEATURE_DATE_ISOFMT=y +# CONFIG_FEATURE_DATE_NANO is not set +CONFIG_FEATURE_DATE_COMPAT=y +CONFIG_DD=y +CONFIG_FEATURE_DD_SIGNAL_HANDLING=y +# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set +CONFIG_FEATURE_DD_IBS_OBS=y +CONFIG_FEATURE_DD_STATUS=y +CONFIG_DF=y +# CONFIG_FEATURE_DF_FANCY is not set +CONFIG_FEATURE_SKIP_ROOTFS=y +CONFIG_DIRNAME=y +CONFIG_DOS2UNIX=y +CONFIG_UNIX2DOS=y +CONFIG_DU=y +CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y +CONFIG_ECHO=y +CONFIG_FEATURE_FANCY_ECHO=y +CONFIG_ENV=y +# CONFIG_EXPAND is not set +# CONFIG_UNEXPAND is not set +CONFIG_EXPR=y +CONFIG_EXPR_MATH_SUPPORT_64=y +CONFIG_FACTOR=y +CONFIG_FALSE=y +CONFIG_FOLD=y +CONFIG_HEAD=y +CONFIG_FEATURE_FANCY_HEAD=y +CONFIG_HOSTID=y +CONFIG_ID=y +# CONFIG_GROUPS is not set +CONFIG_INSTALL=y +CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y +CONFIG_LINK=y +CONFIG_LN=y +CONFIG_LOGNAME=y +CONFIG_LS=y +CONFIG_FEATURE_LS_FILETYPES=y +CONFIG_FEATURE_LS_FOLLOWLINKS=y +CONFIG_FEATURE_LS_RECURSIVE=y +CONFIG_FEATURE_LS_WIDTH=y +CONFIG_FEATURE_LS_SORTFILES=y +CONFIG_FEATURE_LS_TIMESTAMPS=y +CONFIG_FEATURE_LS_USERNAME=y +CONFIG_FEATURE_LS_COLOR=y +CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y +CONFIG_MD5SUM=y +CONFIG_SHA1SUM=y +CONFIG_SHA256SUM=y +CONFIG_SHA512SUM=y +CONFIG_SHA3SUM=y + +# +# Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum +# +CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y +CONFIG_MKDIR=y +CONFIG_MKFIFO=y +CONFIG_MKNOD=y +# CONFIG_MKTEMP is not set +CONFIG_MV=y +CONFIG_NICE=y +CONFIG_NL=y +CONFIG_NOHUP=y +CONFIG_NPROC=y +CONFIG_OD=y +CONFIG_PASTE=y +CONFIG_PRINTENV=y +CONFIG_PRINTF=y +CONFIG_PWD=y +CONFIG_READLINK=y +CONFIG_FEATURE_READLINK_FOLLOW=y +CONFIG_REALPATH=y +CONFIG_RM=y +CONFIG_RMDIR=y +CONFIG_SEQ=y +CONFIG_SHRED=y +# CONFIG_SHUF is not set +CONFIG_SLEEP=y +CONFIG_FEATURE_FANCY_SLEEP=y +CONFIG_SORT=y +CONFIG_FEATURE_SORT_BIG=y +# CONFIG_FEATURE_SORT_OPTIMIZE_MEMORY is not set +# CONFIG_SPLIT is not set +# CONFIG_FEATURE_SPLIT_FANCY is not set +# CONFIG_STAT is not set +# CONFIG_FEATURE_STAT_FORMAT is not set +# CONFIG_FEATURE_STAT_FILESYSTEM is not set +CONFIG_STTY=y +# CONFIG_SUM is not set +CONFIG_SYNC=y +# CONFIG_FEATURE_SYNC_FANCY is not set +# CONFIG_FSYNC is not set +# CONFIG_TAC is not set +CONFIG_TAIL=y +CONFIG_FEATURE_FANCY_TAIL=y +CONFIG_TEE=y +CONFIG_FEATURE_TEE_USE_BLOCK_IO=y +CONFIG_TEST=y +CONFIG_TEST1=y +CONFIG_TEST2=y +CONFIG_FEATURE_TEST_64=y +# CONFIG_TIMEOUT is not set +CONFIG_TOUCH=y +CONFIG_FEATURE_TOUCH_SUSV3=y +CONFIG_TR=y +CONFIG_FEATURE_TR_CLASSES=y +CONFIG_FEATURE_TR_EQUIV=y +CONFIG_TRUE=y +CONFIG_TRUNCATE=y +CONFIG_TTY=y +CONFIG_UNAME=y +CONFIG_UNAME_OSNAME="GNU/Linux" +CONFIG_BB_ARCH=y +CONFIG_UNIQ=y +CONFIG_UNLINK=y +CONFIG_USLEEP=y +CONFIG_UUDECODE=y +CONFIG_BASE32=y +# CONFIG_BASE64 is not set +CONFIG_UUENCODE=y +CONFIG_WC=y +# CONFIG_FEATURE_WC_LARGE is not set +CONFIG_WHO=y +CONFIG_W=y +# CONFIG_USERS is not set +CONFIG_WHOAMI=y +CONFIG_YES=y + +# +# Console Utilities +# +# CONFIG_CHVT is not set +# CONFIG_CLEAR is not set +# CONFIG_DEALLOCVT is not set +# CONFIG_DUMPKMAP is not set +# CONFIG_FGCONSOLE is not set +# CONFIG_KBD_MODE is not set +# CONFIG_LOADFONT is not set +# CONFIG_SETFONT is not set +# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set +CONFIG_DEFAULT_SETFONT_DIR="" +# CONFIG_FEATURE_LOADFONT_PSF2 is not set +# CONFIG_FEATURE_LOADFONT_RAW is not set +# CONFIG_LOADKMAP is not set +# CONFIG_OPENVT is not set +# CONFIG_RESET is not set +# CONFIG_RESIZE is not set +# CONFIG_FEATURE_RESIZE_PRINT is not set +# CONFIG_SETCONSOLE is not set +# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set +# CONFIG_SETKEYCODES is not set +# CONFIG_SETLOGCONS is not set +# CONFIG_SHOWKEY is not set + +# +# Debian Utilities +# +# CONFIG_PIPE_PROGRESS is not set +CONFIG_RUN_PARTS=y +CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y +CONFIG_FEATURE_RUN_PARTS_FANCY=y +CONFIG_START_STOP_DAEMON=y +CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y +CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y +CONFIG_WHICH=y + +# +# klibc-utils +# +# CONFIG_MINIPS is not set +CONFIG_NUKE=y +CONFIG_RESUME=y +CONFIG_RUN_INIT=y + +# +# Editors +# +# CONFIG_AWK is not set +# CONFIG_FEATURE_AWK_LIBM is not set +# CONFIG_FEATURE_AWK_GNU_EXTENSIONS is not set +# CONFIG_CMP is not set +# CONFIG_DIFF is not set +# CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set +# CONFIG_FEATURE_DIFF_DIR is not set +# CONFIG_ED is not set +# CONFIG_PATCH is not set +CONFIG_SED=y +# CONFIG_VI is not set +CONFIG_FEATURE_VI_MAX_LEN=0 +# CONFIG_FEATURE_VI_8BIT is not set +# CONFIG_FEATURE_VI_COLON is not set +# CONFIG_FEATURE_VI_COLON_EXPAND is not set +# CONFIG_FEATURE_VI_YANKMARK is not set +# CONFIG_FEATURE_VI_SEARCH is not set +# CONFIG_FEATURE_VI_REGEX_SEARCH is not set +# CONFIG_FEATURE_VI_USE_SIGNALS is not set +# CONFIG_FEATURE_VI_DOT_CMD is not set +# CONFIG_FEATURE_VI_READONLY is not set +# CONFIG_FEATURE_VI_SETOPTS is not set +# CONFIG_FEATURE_VI_SET is not set +# CONFIG_FEATURE_VI_WIN_RESIZE is not set +# CONFIG_FEATURE_VI_ASK_TERMINAL is not set +# CONFIG_FEATURE_VI_UNDO is not set +# CONFIG_FEATURE_VI_UNDO_QUEUE is not set +CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=0 +# CONFIG_FEATURE_VI_VERBOSE_STATUS is not set +# CONFIG_FEATURE_ALLOW_EXEC is not set + +# +# Finding Utilities +# +# CONFIG_FIND is not set +# CONFIG_FEATURE_FIND_PRINT0 is not set +# CONFIG_FEATURE_FIND_MTIME is not set +# CONFIG_FEATURE_FIND_ATIME is not set +# CONFIG_FEATURE_FIND_CTIME is not set +# CONFIG_FEATURE_FIND_MMIN is not set +# CONFIG_FEATURE_FIND_AMIN is not set +# CONFIG_FEATURE_FIND_CMIN is not set +# CONFIG_FEATURE_FIND_PERM is not set +# CONFIG_FEATURE_FIND_TYPE is not set +# CONFIG_FEATURE_FIND_EXECUTABLE is not set +# CONFIG_FEATURE_FIND_XDEV is not set +# CONFIG_FEATURE_FIND_MAXDEPTH is not set +# CONFIG_FEATURE_FIND_NEWER is not set +# CONFIG_FEATURE_FIND_INUM is not set +# CONFIG_FEATURE_FIND_SAMEFILE is not set +# CONFIG_FEATURE_FIND_EXEC is not set +# CONFIG_FEATURE_FIND_EXEC_PLUS is not set +# CONFIG_FEATURE_FIND_USER is not set +# CONFIG_FEATURE_FIND_GROUP is not set +# CONFIG_FEATURE_FIND_NOT is not set +# CONFIG_FEATURE_FIND_DEPTH is not set +# CONFIG_FEATURE_FIND_PAREN is not set +# CONFIG_FEATURE_FIND_SIZE is not set +# CONFIG_FEATURE_FIND_PRUNE is not set +# CONFIG_FEATURE_FIND_QUIT is not set +# CONFIG_FEATURE_FIND_DELETE is not set +# CONFIG_FEATURE_FIND_EMPTY is not set +# CONFIG_FEATURE_FIND_PATH is not set +# CONFIG_FEATURE_FIND_REGEX is not set +# CONFIG_FEATURE_FIND_CONTEXT is not set +# CONFIG_FEATURE_FIND_LINKS is not set +CONFIG_GREP=y +CONFIG_EGREP=y +CONFIG_FGREP=y +CONFIG_FEATURE_GREP_CONTEXT=y +CONFIG_XARGS=y +# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set +CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y +CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y +CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y +CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y +CONFIG_FEATURE_XARGS_SUPPORT_PARALLEL=y +CONFIG_FEATURE_XARGS_SUPPORT_ARGS_FILE=y + +# +# Init Utilities +# +# CONFIG_BOOTCHARTD is not set +# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set +# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set +CONFIG_HALT=y +CONFIG_POWEROFF=y +CONFIG_REBOOT=y +CONFIG_FEATURE_WAIT_FOR_INIT=y +# CONFIG_FEATURE_CALL_TELINIT is not set +CONFIG_TELINIT_PATH="" +CONFIG_INIT=y +CONFIG_LINUXRC=y +CONFIG_FEATURE_USE_INITTAB=y +CONFIG_FEATURE_KILL_REMOVED=y +CONFIG_FEATURE_KILL_DELAY=0 +CONFIG_FEATURE_INIT_SCTTY=y +CONFIG_FEATURE_INIT_SYSLOG=y +CONFIG_FEATURE_INIT_QUIET=y +# CONFIG_FEATURE_INIT_COREDUMPS is not set +CONFIG_INIT_TERMINAL_TYPE="linux" +CONFIG_FEATURE_INIT_MODIFY_CMDLINE=y + +# +# Login/Password Management Utilities +# +CONFIG_FEATURE_SHADOWPASSWDS=y +# CONFIG_USE_BB_PWD_GRP is not set +# CONFIG_USE_BB_SHADOW is not set +CONFIG_USE_BB_CRYPT=y +# CONFIG_USE_BB_CRYPT_SHA is not set +# CONFIG_ADD_SHELL is not set +# CONFIG_REMOVE_SHELL is not set +# CONFIG_ADDGROUP is not set +# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set +CONFIG_ADDUSER=y +# CONFIG_FEATURE_CHECK_NAMES is not set +CONFIG_LAST_ID=60000 +CONFIG_FIRST_SYSTEM_ID=100 +CONFIG_LAST_SYSTEM_ID=999 +# CONFIG_CHPASSWD is not set +CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="des" +# CONFIG_CRYPTPW is not set +# CONFIG_MKPASSWD is not set +# CONFIG_DELUSER is not set +# CONFIG_DELGROUP is not set +# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set +CONFIG_GETTY=y +CONFIG_LOGIN=y +# CONFIG_LOGIN_SESSION_AS_CHILD is not set +# CONFIG_LOGIN_SCRIPTS is not set +CONFIG_FEATURE_NOLOGIN=y +CONFIG_FEATURE_SECURETTY=y +CONFIG_PASSWD=y +CONFIG_FEATURE_PASSWD_WEAK_CHECK=y +# CONFIG_SU is not set +# CONFIG_FEATURE_SU_SYSLOG is not set +# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set +# CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set +# CONFIG_SULOGIN is not set +# CONFIG_VLOCK is not set + +# +# Linux Ext2 FS Progs +# +# CONFIG_CHATTR is not set +# CONFIG_FSCK is not set +# CONFIG_LSATTR is not set +# CONFIG_TUNE2FS is not set + +# +# Linux Module Utilities +# +# CONFIG_MODPROBE_SMALL is not set +# CONFIG_DEPMOD is not set +# CONFIG_INSMOD is not set +# CONFIG_LSMOD is not set +# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set +# CONFIG_MODINFO is not set +# CONFIG_MODPROBE is not set +# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set +# CONFIG_RMMOD is not set + +# +# Options common to multiple modutils +# +# CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS is not set +# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set +# CONFIG_FEATURE_2_4_MODULES is not set +# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set +# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set +# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set +# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set +# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set +# CONFIG_FEATURE_MODUTILS_ALIAS is not set +# CONFIG_FEATURE_MODUTILS_SYMBOLS is not set +CONFIG_DEFAULT_MODULES_DIR="" +CONFIG_DEFAULT_DEPMOD_FILE="" + +# +# Linux System Utilities +# +# CONFIG_ACPID is not set +# CONFIG_FEATURE_ACPID_COMPAT is not set +# CONFIG_BLKDISCARD is not set +# CONFIG_BLKID is not set +# CONFIG_FEATURE_BLKID_TYPE is not set +# CONFIG_BLOCKDEV is not set +# CONFIG_CAL is not set +# CONFIG_CHRT is not set +CONFIG_DMESG=y +CONFIG_FEATURE_DMESG_PRETTY=y +# CONFIG_EJECT is not set +# CONFIG_FEATURE_EJECT_SCSI is not set +CONFIG_FALLOCATE=y +# CONFIG_FATATTR is not set +# CONFIG_FBSET is not set +# CONFIG_FEATURE_FBSET_FANCY is not set +# CONFIG_FEATURE_FBSET_READMODE is not set +# CONFIG_FDFORMAT is not set +# CONFIG_FDISK is not set +# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set +# CONFIG_FEATURE_FDISK_WRITABLE is not set +# CONFIG_FEATURE_AIX_LABEL is not set +# CONFIG_FEATURE_SGI_LABEL is not set +# CONFIG_FEATURE_SUN_LABEL is not set +# CONFIG_FEATURE_OSF_LABEL is not set +# CONFIG_FEATURE_GPT_LABEL is not set +# CONFIG_FEATURE_FDISK_ADVANCED is not set +# CONFIG_FINDFS is not set +# CONFIG_FLOCK is not set +# CONFIG_FDFLUSH is not set +CONFIG_FREERAMDISK=y +# CONFIG_FSCK_MINIX is not set +CONFIG_FSFREEZE=y +# CONFIG_FSTRIM is not set +CONFIG_GETOPT=y +CONFIG_FEATURE_GETOPT_LONG=y +# CONFIG_HEXDUMP is not set +# CONFIG_HD is not set +CONFIG_XXD=y +# CONFIG_HWCLOCK is not set +# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set +# CONFIG_IONICE is not set +# CONFIG_IPCRM is not set +# CONFIG_IPCS is not set +# CONFIG_LAST is not set +# CONFIG_FEATURE_LAST_FANCY is not set +# CONFIG_LOSETUP is not set +# CONFIG_LSPCI is not set +# CONFIG_LSUSB is not set +# CONFIG_MDEV is not set +# CONFIG_FEATURE_MDEV_CONF is not set +# CONFIG_FEATURE_MDEV_RENAME is not set +# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set +# CONFIG_FEATURE_MDEV_EXEC is not set +# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set +# CONFIG_FEATURE_MDEV_DAEMON is not set +CONFIG_MESG=y +CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y +CONFIG_MKE2FS=y +# CONFIG_MKFS_EXT2 is not set +# CONFIG_MKFS_MINIX is not set +# CONFIG_FEATURE_MINIX2 is not set +# CONFIG_MKFS_REISER is not set +CONFIG_MKDOSFS=y +# CONFIG_MKFS_VFAT is not set +# CONFIG_MKSWAP is not set +# CONFIG_FEATURE_MKSWAP_UUID is not set +CONFIG_MORE=y +CONFIG_MOUNT=y +# CONFIG_FEATURE_MOUNT_FAKE is not set +# CONFIG_FEATURE_MOUNT_VERBOSE is not set +# CONFIG_FEATURE_MOUNT_HELPERS is not set +# CONFIG_FEATURE_MOUNT_LABEL is not set +# CONFIG_FEATURE_MOUNT_NFS is not set +CONFIG_FEATURE_MOUNT_CIFS=y +CONFIG_FEATURE_MOUNT_FLAGS=y +CONFIG_FEATURE_MOUNT_FSTAB=y +CONFIG_FEATURE_MOUNT_OTHERTAB=y +# CONFIG_MOUNTPOINT is not set +CONFIG_NOLOGIN=y +# CONFIG_NOLOGIN_DEPENDENCIES is not set +# CONFIG_NSENTER is not set +# CONFIG_PIVOT_ROOT is not set +# CONFIG_RDATE is not set +# CONFIG_RDEV is not set +# CONFIG_READPROFILE is not set +# CONFIG_RENICE is not set +# CONFIG_REV is not set +# CONFIG_RTCWAKE is not set +# CONFIG_SCRIPT is not set +# CONFIG_SCRIPTREPLAY is not set +# CONFIG_SETARCH is not set +CONFIG_LINUX32=y +CONFIG_LINUX64=y +CONFIG_SETPRIV=y +CONFIG_FEATURE_SETPRIV_DUMP=y +CONFIG_FEATURE_SETPRIV_CAPABILITIES=y +CONFIG_FEATURE_SETPRIV_CAPABILITY_NAMES=y +# CONFIG_SETSID is not set +CONFIG_SWAPON=y +# CONFIG_FEATURE_SWAPON_DISCARD is not set +# CONFIG_FEATURE_SWAPON_PRI is not set +CONFIG_SWAPOFF=y +CONFIG_FEATURE_SWAPONOFF_LABEL=y +# CONFIG_SWITCH_ROOT is not set +# CONFIG_TASKSET is not set +# CONFIG_FEATURE_TASKSET_FANCY is not set +# CONFIG_FEATURE_TASKSET_CPULIST is not set +# CONFIG_UEVENT is not set +CONFIG_UMOUNT=y +CONFIG_FEATURE_UMOUNT_ALL=y +# CONFIG_UNSHARE is not set +# CONFIG_WALL is not set + +# +# Common options for mount/umount +# +CONFIG_FEATURE_MOUNT_LOOP=y +CONFIG_FEATURE_MOUNT_LOOP_CREATE=y +# CONFIG_FEATURE_MTAB_SUPPORT is not set +CONFIG_VOLUMEID=y + +# +# Filesystem/Volume identification +# +# CONFIG_FEATURE_VOLUMEID_BCACHE is not set +# CONFIG_FEATURE_VOLUMEID_BTRFS is not set +# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set +CONFIG_FEATURE_VOLUMEID_EROFS=y +# CONFIG_FEATURE_VOLUMEID_EXFAT is not set +# CONFIG_FEATURE_VOLUMEID_EXT is not set +# CONFIG_FEATURE_VOLUMEID_F2FS is not set +# CONFIG_FEATURE_VOLUMEID_FAT is not set +# CONFIG_FEATURE_VOLUMEID_HFS is not set +# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set +# CONFIG_FEATURE_VOLUMEID_JFS is not set +# CONFIG_FEATURE_VOLUMEID_LFS is not set +# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set +# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set +# CONFIG_FEATURE_VOLUMEID_LUKS is not set +CONFIG_FEATURE_VOLUMEID_MINIX=y +# CONFIG_FEATURE_VOLUMEID_NILFS is not set +# CONFIG_FEATURE_VOLUMEID_NTFS is not set +# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set +# CONFIG_FEATURE_VOLUMEID_REISERFS is not set +# CONFIG_FEATURE_VOLUMEID_ROMFS is not set +# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set +# CONFIG_FEATURE_VOLUMEID_SYSV is not set +# CONFIG_FEATURE_VOLUMEID_UBIFS is not set +# CONFIG_FEATURE_VOLUMEID_UDF is not set +# CONFIG_FEATURE_VOLUMEID_XFS is not set + +# +# Miscellaneous Utilities +# +# CONFIG_ADJTIMEX is not set +CONFIG_ASCII=y +# CONFIG_BBCONFIG is not set +# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set +CONFIG_BC=y +# CONFIG_DC is not set +CONFIG_FEATURE_DC_BIG=y +# CONFIG_FEATURE_DC_LIBM is not set +CONFIG_FEATURE_BC_INTERACTIVE=y +CONFIG_FEATURE_BC_LONG_OPTIONS=y +# CONFIG_BEEP is not set +CONFIG_FEATURE_BEEP_FREQ=0 +CONFIG_FEATURE_BEEP_LENGTH_MS=0 +# CONFIG_CHAT is not set +# CONFIG_FEATURE_CHAT_NOFAIL is not set +# CONFIG_FEATURE_CHAT_TTY_HIFI is not set +# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set +# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set +# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set +# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set +# CONFIG_FEATURE_CHAT_CLR_ABORT is not set +# CONFIG_CONSPY is not set +# CONFIG_CROND is not set +# CONFIG_FEATURE_CROND_D is not set +# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set +# CONFIG_FEATURE_CROND_SPECIAL_TIMES is not set +CONFIG_FEATURE_CROND_DIR="" +# CONFIG_CRONTAB is not set +# CONFIG_DEVFSD is not set +# CONFIG_DEVFSD_MODLOAD is not set +# CONFIG_DEVFSD_FG_NP is not set +# CONFIG_DEVFSD_VERBOSE is not set +# CONFIG_FEATURE_DEVFS is not set +# CONFIG_DEVMEM is not set +# CONFIG_FBSPLASH is not set +# CONFIG_FLASH_ERASEALL is not set +# CONFIG_FLASH_LOCK is not set +# CONFIG_FLASH_UNLOCK is not set +# CONFIG_FLASHCP is not set +# CONFIG_HDPARM is not set +# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set +# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set +# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set +# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set +# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set +# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set +CONFIG_HEXEDIT=y +# CONFIG_I2CGET is not set +# CONFIG_I2CSET is not set +# CONFIG_I2CDUMP is not set +# CONFIG_I2CDETECT is not set +CONFIG_I2CTRANSFER=y +# CONFIG_INOTIFYD is not set +# CONFIG_LESS is not set +CONFIG_FEATURE_LESS_MAXLINES=0 +# CONFIG_FEATURE_LESS_BRACKETS is not set +# CONFIG_FEATURE_LESS_FLAGS is not set +# CONFIG_FEATURE_LESS_TRUNCATE is not set +# CONFIG_FEATURE_LESS_MARKS is not set +# CONFIG_FEATURE_LESS_REGEXP is not set +# CONFIG_FEATURE_LESS_WINCH is not set +# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set +# CONFIG_FEATURE_LESS_DASHCMD is not set +# CONFIG_FEATURE_LESS_LINENUMS is not set +# CONFIG_FEATURE_LESS_RAW is not set +# CONFIG_FEATURE_LESS_ENV is not set +CONFIG_LSSCSI=y +# CONFIG_MAKEDEVS is not set +# CONFIG_FEATURE_MAKEDEVS_LEAF is not set +# CONFIG_FEATURE_MAKEDEVS_TABLE is not set +# CONFIG_MAN is not set +# CONFIG_MICROCOM is not set +CONFIG_MIM=y +# CONFIG_MT is not set +# CONFIG_NANDWRITE is not set +# CONFIG_NANDDUMP is not set +CONFIG_PARTPROBE=y +# CONFIG_RAIDAUTORUN is not set +# CONFIG_READAHEAD is not set +# CONFIG_RFKILL is not set +# CONFIG_RUNLEVEL is not set +# CONFIG_RX is not set +CONFIG_SETFATTR=y +CONFIG_SETSERIAL=y +# CONFIG_STRINGS is not set +# CONFIG_TIME is not set +CONFIG_TS=y +# CONFIG_TTYSIZE is not set +# CONFIG_UBIATTACH is not set +# CONFIG_UBIDETACH is not set +# CONFIG_UBIMKVOL is not set +# CONFIG_UBIRMVOL is not set +# CONFIG_UBIRSVOL is not set +# CONFIG_UBIUPDATEVOL is not set +# CONFIG_UBIRENAME is not set +# CONFIG_VOLNAME is not set +# CONFIG_WATCHDOG is not set +# CONFIG_FEATURE_WATCHDOG_OPEN_TWICE is not set + +# +# Networking Utilities +# +# CONFIG_FEATURE_IPV6 is not set +# CONFIG_FEATURE_UNIX_LOCAL is not set +# CONFIG_FEATURE_PREFER_IPV4_ADDRESS is not set +# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set +# CONFIG_FEATURE_ETC_NETWORKS is not set +# CONFIG_FEATURE_ETC_SERVICES is not set +CONFIG_FEATURE_HWIB=y +# CONFIG_FEATURE_TLS_SHA1 is not set +# CONFIG_ARP is not set +# CONFIG_ARPING is not set +# CONFIG_BRCTL is not set +# CONFIG_FEATURE_BRCTL_FANCY is not set +# CONFIG_FEATURE_BRCTL_SHOW is not set +# CONFIG_DNSD is not set +# CONFIG_ETHER_WAKE is not set +# CONFIG_FTPD is not set +# CONFIG_FEATURE_FTPD_WRITE is not set +# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set +# CONFIG_FEATURE_FTPD_AUTHENTICATION is not set +# CONFIG_FTPGET is not set +# CONFIG_FTPPUT is not set +# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set +CONFIG_HOSTNAME=y +CONFIG_DNSDOMAINNAME=y +# CONFIG_HTTPD is not set +CONFIG_FEATURE_HTTPD_PORT_DEFAULT=0 +# CONFIG_FEATURE_HTTPD_RANGES is not set +# CONFIG_FEATURE_HTTPD_SETUID is not set +# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set +# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set +# CONFIG_FEATURE_HTTPD_CGI is not set +# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set +# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set +# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set +# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set +# CONFIG_FEATURE_HTTPD_PROXY is not set +# CONFIG_FEATURE_HTTPD_GZIP is not set +# CONFIG_FEATURE_HTTPD_ETAG is not set +# CONFIG_FEATURE_HTTPD_LAST_MODIFIED is not set +# CONFIG_FEATURE_HTTPD_DATE is not set +# CONFIG_FEATURE_HTTPD_ACL_IP is not set +CONFIG_IFCONFIG=y +CONFIG_FEATURE_IFCONFIG_STATUS=y +# CONFIG_FEATURE_IFCONFIG_SLIP is not set +# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set +CONFIG_FEATURE_IFCONFIG_HW=y +CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y +# CONFIG_IFENSLAVE is not set +# CONFIG_IFPLUGD is not set +CONFIG_IFUP=y +CONFIG_IFDOWN=y +CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate" +CONFIG_FEATURE_IFUPDOWN_IP=y +CONFIG_FEATURE_IFUPDOWN_IPV4=y +# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set +# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set +CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP=y +# CONFIG_INETD is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set +# CONFIG_FEATURE_INETD_RPC is not set +CONFIG_IP=y +CONFIG_IPADDR=y +CONFIG_IPLINK=y +CONFIG_IPROUTE=y +# CONFIG_IPTUNNEL is not set +# CONFIG_IPRULE is not set +# CONFIG_IPNEIGH is not set +CONFIG_FEATURE_IP_ADDRESS=y +CONFIG_FEATURE_IP_LINK=y +CONFIG_FEATURE_IP_ROUTE=y +CONFIG_FEATURE_IP_ROUTE_DIR="/etc/iproute2" +# CONFIG_FEATURE_IP_TUNNEL is not set +# CONFIG_FEATURE_IP_RULE is not set +# CONFIG_FEATURE_IP_NEIGH is not set +# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set +# CONFIG_IPCALC is not set +# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set +# CONFIG_FEATURE_IPCALC_FANCY is not set +# CONFIG_FAKEIDENTD is not set +# CONFIG_NAMEIF is not set +# CONFIG_FEATURE_NAMEIF_EXTENDED is not set +# CONFIG_NBDCLIENT is not set +CONFIG_NC=y +# CONFIG_NETCAT is not set +CONFIG_NC_SERVER=y +# CONFIG_NC_EXTRA is not set +# CONFIG_NC_110_COMPAT is not set +CONFIG_NETSTAT=y +# CONFIG_FEATURE_NETSTAT_WIDE is not set +CONFIG_FEATURE_NETSTAT_PRG=y +# CONFIG_NSLOOKUP is not set +# CONFIG_FEATURE_NSLOOKUP_BIG is not set +# CONFIG_FEATURE_NSLOOKUP_LONG_OPTIONS is not set +# CONFIG_NTPD is not set +# CONFIG_FEATURE_NTPD_SERVER is not set +# CONFIG_FEATURE_NTPD_CONF is not set +# CONFIG_FEATURE_NTP_AUTH is not set +CONFIG_PING=y +# CONFIG_PING6 is not set +# CONFIG_FEATURE_FANCY_PING is not set +# CONFIG_PSCAN is not set +CONFIG_ROUTE=y +# CONFIG_SLATTACH is not set +# CONFIG_SSL_CLIENT is not set +# CONFIG_TC is not set +# CONFIG_TCPSVD is not set +# CONFIG_UDPSVD is not set +CONFIG_TELNET=y +CONFIG_FEATURE_TELNET_TTYPE=y +CONFIG_FEATURE_TELNET_AUTOLOGIN=y +CONFIG_FEATURE_TELNET_WIDTH=y +# CONFIG_TELNETD is not set +# CONFIG_FEATURE_TELNETD_STANDALONE is not set +CONFIG_FEATURE_TELNETD_PORT_DEFAULT=0 +# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set +# CONFIG_TFTP is not set +# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set +# CONFIG_FEATURE_TFTP_HPA_COMPAT is not set +# CONFIG_TFTPD is not set +# CONFIG_FEATURE_TFTP_GET is not set +# CONFIG_FEATURE_TFTP_PUT is not set +# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set +# CONFIG_TFTP_DEBUG is not set +# CONFIG_TLS is not set +# CONFIG_TRACEROUTE is not set +# CONFIG_TRACEROUTE6 is not set +# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set +# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set +# CONFIG_TUNCTL is not set +# CONFIG_FEATURE_TUNCTL_UG is not set +# CONFIG_VCONFIG is not set +CONFIG_WGET=y +# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set +# CONFIG_FEATURE_WGET_STATUSBAR is not set +CONFIG_FEATURE_WGET_FTP=y +# CONFIG_FEATURE_WGET_AUTHENTICATION is not set +# CONFIG_FEATURE_WGET_TIMEOUT is not set +# CONFIG_FEATURE_WGET_HTTPS is not set +# CONFIG_FEATURE_WGET_OPENSSL is not set +# CONFIG_WHOIS is not set +# CONFIG_ZCIP is not set +# CONFIG_UDHCPD is not set +# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set +# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set +CONFIG_DHCPD_LEASES_FILE="" +# CONFIG_DUMPLEASES is not set +# CONFIG_DHCPRELAY is not set +CONFIG_UDHCPC=y +# CONFIG_FEATURE_UDHCPC_ARPING is not set +CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y +CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" +# CONFIG_UDHCPC6 is not set +# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set +# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set +# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set +# CONFIG_FEATURE_UDHCPC6_RFC5970 is not set + +# +# Common options for DHCP applets +# +CONFIG_UDHCPC_DEFAULT_INTERFACE="eth0" +# CONFIG_FEATURE_UDHCP_PORT is not set +CONFIG_UDHCP_DEBUG=9 +CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 +# CONFIG_FEATURE_UDHCP_RFC3397 is not set +# CONFIG_FEATURE_UDHCP_8021Q is not set +CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R" + +# +# Print Utilities +# +# CONFIG_LPD is not set +# CONFIG_LPR is not set +# CONFIG_LPQ is not set + +# +# Mail Utilities +# +CONFIG_FEATURE_MIME_CHARSET="" +# CONFIG_MAKEMIME is not set +# CONFIG_POPMAILDIR is not set +# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set +# CONFIG_REFORMIME is not set +# CONFIG_FEATURE_REFORMIME_COMPAT is not set +# CONFIG_SENDMAIL is not set + +# +# Process Utilities +# +# CONFIG_FEATURE_FAST_TOP is not set +# CONFIG_FEATURE_SHOW_THREADS is not set +# CONFIG_FREE is not set +# CONFIG_FUSER is not set +# CONFIG_IOSTAT is not set +CONFIG_KILL=y +CONFIG_KILLALL=y +CONFIG_KILLALL5=y +# CONFIG_LSOF is not set +# CONFIG_MPSTAT is not set +# CONFIG_NMETER is not set +# CONFIG_PGREP is not set +# CONFIG_PKILL is not set +# CONFIG_PIDOF is not set +# CONFIG_FEATURE_PIDOF_SINGLE is not set +# CONFIG_FEATURE_PIDOF_OMIT is not set +# CONFIG_PMAP is not set +# CONFIG_POWERTOP is not set +# CONFIG_FEATURE_POWERTOP_INTERACTIVE is not set +CONFIG_PS=y +CONFIG_FEATURE_PS_WIDE=y +CONFIG_FEATURE_PS_LONG=y +# CONFIG_FEATURE_PS_TIME is not set +# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set +# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set +# CONFIG_PSTREE is not set +# CONFIG_PWDX is not set +# CONFIG_SMEMCAP is not set +# CONFIG_BB_SYSCTL is not set +# CONFIG_TOP is not set +# CONFIG_FEATURE_TOP_INTERACTIVE is not set +# CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE is not set +# CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS is not set +# CONFIG_FEATURE_TOP_SMP_CPU is not set +# CONFIG_FEATURE_TOP_DECIMALS is not set +# CONFIG_FEATURE_TOP_SMP_PROCESS is not set +# CONFIG_FEATURE_TOPMEM is not set +# CONFIG_UPTIME is not set +# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set +# CONFIG_WATCH is not set + +# +# Runit Utilities +# +# CONFIG_CHPST is not set +# CONFIG_SETUIDGID is not set +# CONFIG_ENVUIDGID is not set +# CONFIG_ENVDIR is not set +# CONFIG_SOFTLIMIT is not set +# CONFIG_RUNSV is not set +# CONFIG_RUNSVDIR is not set +# CONFIG_FEATURE_RUNSVDIR_LOG is not set +# CONFIG_SV is not set +CONFIG_SV_DEFAULT_SERVICE_DIR="" +CONFIG_SVC=y +CONFIG_SVOK=y +# CONFIG_SVLOGD is not set +# CONFIG_CHCON is not set +# CONFIG_GETENFORCE is not set +# CONFIG_GETSEBOOL is not set +# CONFIG_LOAD_POLICY is not set +# CONFIG_MATCHPATHCON is not set +# CONFIG_RUNCON is not set +# CONFIG_SELINUXENABLED is not set +# CONFIG_SESTATUS is not set +# CONFIG_SETENFORCE is not set +# CONFIG_SETFILES is not set +# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set +# CONFIG_RESTORECON is not set +# CONFIG_SETSEBOOL is not set + +# +# Shells +# +# CONFIG_SH_IS_ASH is not set +CONFIG_SH_IS_HUSH=y +# CONFIG_SH_IS_NONE is not set +# CONFIG_BASH_IS_ASH is not set +# CONFIG_BASH_IS_HUSH is not set +CONFIG_BASH_IS_NONE=y +# CONFIG_SHELL_ASH is not set +# CONFIG_ASH is not set +# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set +# CONFIG_ASH_INTERNAL_GLOB is not set +# CONFIG_ASH_BASH_COMPAT is not set +# CONFIG_ASH_BASH_SOURCE_CURDIR is not set +# CONFIG_ASH_BASH_NOT_FOUND_HOOK is not set +# CONFIG_ASH_JOB_CONTROL is not set +# CONFIG_ASH_ALIAS is not set +# CONFIG_ASH_RANDOM_SUPPORT is not set +# CONFIG_ASH_EXPAND_PRMT is not set +# CONFIG_ASH_IDLE_TIMEOUT is not set +# CONFIG_ASH_MAIL is not set +# CONFIG_ASH_ECHO is not set +# CONFIG_ASH_PRINTF is not set +# CONFIG_ASH_TEST is not set +# CONFIG_ASH_HELP is not set +# CONFIG_ASH_GETOPTS is not set +# CONFIG_ASH_CMDCMD is not set +# CONFIG_CTTYHACK is not set +CONFIG_HUSH=y +CONFIG_SHELL_HUSH=y +CONFIG_HUSH_BASH_COMPAT=y +CONFIG_HUSH_BRACE_EXPANSION=y +# CONFIG_HUSH_BASH_SOURCE_CURDIR is not set +CONFIG_HUSH_LINENO_VAR=y +CONFIG_HUSH_INTERACTIVE=y +CONFIG_HUSH_SAVEHISTORY=y +CONFIG_HUSH_JOB=y +CONFIG_HUSH_TICK=y +CONFIG_HUSH_IF=y +CONFIG_HUSH_LOOPS=y +CONFIG_HUSH_CASE=y +CONFIG_HUSH_FUNCTIONS=y +CONFIG_HUSH_LOCAL=y +CONFIG_HUSH_RANDOM_SUPPORT=y +CONFIG_HUSH_MODE_X=y +CONFIG_HUSH_ECHO=y +CONFIG_HUSH_PRINTF=y +CONFIG_HUSH_TEST=y +CONFIG_HUSH_HELP=y +CONFIG_HUSH_EXPORT=y +CONFIG_HUSH_EXPORT_N=y +CONFIG_HUSH_READONLY=y +CONFIG_HUSH_KILL=y +CONFIG_HUSH_WAIT=y +CONFIG_HUSH_COMMAND=y +CONFIG_HUSH_TRAP=y +CONFIG_HUSH_TYPE=y +CONFIG_HUSH_TIMES=y +CONFIG_HUSH_READ=y +CONFIG_HUSH_SET=y +CONFIG_HUSH_UNSET=y +CONFIG_HUSH_ULIMIT=y +CONFIG_HUSH_UMASK=y +CONFIG_HUSH_GETOPTS=y +# CONFIG_HUSH_MEMLEAK is not set + +# +# Options common to all shells +# +CONFIG_FEATURE_SH_MATH=y +CONFIG_FEATURE_SH_MATH_64=y +CONFIG_FEATURE_SH_MATH_BASE=y +CONFIG_FEATURE_SH_EXTRA_QUIET=y +# CONFIG_FEATURE_SH_STANDALONE is not set +# CONFIG_FEATURE_SH_NOFORK is not set +CONFIG_FEATURE_SH_READ_FRAC=y +# CONFIG_FEATURE_SH_HISTFILESIZE is not set +CONFIG_FEATURE_SH_EMBEDDED_SCRIPTS=y + +# +# System Logging Utilities +# +# CONFIG_KLOGD is not set +# CONFIG_FEATURE_KLOGD_KLOGCTL is not set +# CONFIG_LOGGER is not set +# CONFIG_LOGREAD is not set +# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set +# CONFIG_SYSLOGD is not set +# CONFIG_FEATURE_ROTATE_LOGFILE is not set +# CONFIG_FEATURE_REMOTE_LOG is not set +# CONFIG_FEATURE_SYSLOGD_DUP is not set +# CONFIG_FEATURE_SYSLOGD_CFG is not set +# CONFIG_FEATURE_SYSLOGD_PRECISE_TIMESTAMPS is not set +CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0 +# CONFIG_FEATURE_IPC_SYSLOG is not set +CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0 +# CONFIG_FEATURE_KMSG_SYSLOG is not set diff --git a/package/busybox/busybox.config b/package/busybox/busybox.config new file mode 100644 index 00000000..69d896be --- /dev/null +++ b/package/busybox/busybox.config @@ -0,0 +1,1227 @@ +# +# Automatically generated make config: don't edit +# Busybox version: 1.36.1 +# Wed May 8 17:25:31 2024 +# +CONFIG_HAVE_DOT_CONFIG=y + +# +# Settings +# +CONFIG_DESKTOP=y +# CONFIG_EXTRA_COMPAT is not set +# CONFIG_FEDORA_COMPAT is not set +CONFIG_INCLUDE_SUSv2=y +CONFIG_LONG_OPTS=y +CONFIG_SHOW_USAGE=y +CONFIG_FEATURE_VERBOSE_USAGE=y +# CONFIG_FEATURE_COMPRESS_USAGE is not set +CONFIG_LFS=y +# CONFIG_PAM is not set +CONFIG_FEATURE_DEVPTS=y +CONFIG_FEATURE_UTMP=y +CONFIG_FEATURE_WTMP=y +# CONFIG_FEATURE_PIDFILE is not set +CONFIG_PID_FILE_PATH="" +CONFIG_BUSYBOX=y +CONFIG_FEATURE_SHOW_SCRIPT=y +CONFIG_FEATURE_INSTALLER=y +# CONFIG_INSTALL_NO_USR is not set +CONFIG_FEATURE_SUID=y +# CONFIG_FEATURE_SUID_CONFIG is not set +# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set +# CONFIG_FEATURE_PREFER_APPLETS is not set +CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" +# CONFIG_SELINUX is not set +# CONFIG_FEATURE_CLEAN_UP is not set +CONFIG_FEATURE_SYSLOG_INFO=y +CONFIG_FEATURE_SYSLOG=y + +# +# Build Options +# +# CONFIG_STATIC is not set +# CONFIG_PIE is not set +# CONFIG_NOMMU is not set +# CONFIG_BUILD_LIBBUSYBOX is not set +# CONFIG_FEATURE_LIBBUSYBOX_STATIC is not set +# CONFIG_FEATURE_INDIVIDUAL is not set +# CONFIG_FEATURE_SHARED_BUSYBOX is not set +CONFIG_CROSS_COMPILER_PREFIX="" +CONFIG_SYSROOT="" +CONFIG_EXTRA_CFLAGS="" +CONFIG_EXTRA_LDFLAGS="" +CONFIG_EXTRA_LDLIBS="" +# CONFIG_USE_PORTABLE_CODE is not set +# CONFIG_STACK_OPTIMIZATION_386 is not set +CONFIG_STATIC_LIBGCC=y + +# +# Installation Options ("make install" behavior) +# +CONFIG_INSTALL_APPLET_SYMLINKS=y +# CONFIG_INSTALL_APPLET_HARDLINKS is not set +# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set +# CONFIG_INSTALL_APPLET_DONT is not set +# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set +# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set +# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set +CONFIG_PREFIX="./_install" + +# +# Debugging Options +# +# CONFIG_DEBUG is not set +# CONFIG_DEBUG_PESSIMIZE is not set +# CONFIG_DEBUG_SANITIZE is not set +# CONFIG_UNIT_TEST is not set +# CONFIG_WERROR is not set +# CONFIG_WARN_SIMPLE_MSG is not set +CONFIG_NO_DEBUG_LIB=y +# CONFIG_DMALLOC is not set +# CONFIG_EFENCE is not set + +# +# Library Tuning +# +# CONFIG_FEATURE_USE_BSS_TAIL is not set +CONFIG_FLOAT_DURATION=y +CONFIG_FEATURE_RTMINMAX=y +CONFIG_FEATURE_RTMINMAX_USE_LIBC_DEFINITIONS=y +CONFIG_FEATURE_BUFFERS_USE_MALLOC=y +# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set +# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set +CONFIG_PASSWORD_MINLEN=6 +CONFIG_MD5_SMALL=1 +CONFIG_SHA1_SMALL=3 +CONFIG_SHA1_HWACCEL=y +CONFIG_SHA256_HWACCEL=y +CONFIG_SHA3_SMALL=1 +CONFIG_FEATURE_NON_POSIX_CP=y +# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set +CONFIG_FEATURE_USE_SENDFILE=y +CONFIG_FEATURE_COPYBUF_KB=4 +CONFIG_MONOTONIC_SYSCALL=y +CONFIG_IOCTL_HEX2STR_ERROR=y +CONFIG_FEATURE_EDITING=y +CONFIG_FEATURE_EDITING_MAX_LEN=1024 +CONFIG_FEATURE_EDITING_VI=y +CONFIG_FEATURE_EDITING_HISTORY=999 +CONFIG_FEATURE_EDITING_SAVEHISTORY=y +# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set +CONFIG_FEATURE_REVERSE_SEARCH=y +CONFIG_FEATURE_TAB_COMPLETION=y +# CONFIG_FEATURE_USERNAME_COMPLETION is not set +CONFIG_FEATURE_EDITING_FANCY_PROMPT=y +CONFIG_FEATURE_EDITING_WINCH=y +# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set +# CONFIG_LOCALE_SUPPORT is not set +# CONFIG_UNICODE_SUPPORT is not set +# CONFIG_UNICODE_USING_LOCALE is not set +# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set +CONFIG_SUBST_WCHAR=0 +CONFIG_LAST_SUPPORTED_WCHAR=0 +# CONFIG_UNICODE_COMBINING_WCHARS is not set +# CONFIG_UNICODE_WIDE_WCHARS is not set +# CONFIG_UNICODE_BIDI_SUPPORT is not set +# CONFIG_UNICODE_NEUTRAL_TABLE is not set +# CONFIG_UNICODE_PRESERVE_BROKEN is not set +# CONFIG_LOOP_CONFIGURE is not set +# CONFIG_NO_LOOP_CONFIGURE is not set +CONFIG_TRY_LOOP_CONFIGURE=y + +# +# Applets +# + +# +# Archival Utilities +# +# CONFIG_FEATURE_SEAMLESS_XZ is not set +# CONFIG_FEATURE_SEAMLESS_LZMA is not set +# CONFIG_FEATURE_SEAMLESS_BZ2 is not set +# CONFIG_FEATURE_SEAMLESS_GZ is not set +# CONFIG_FEATURE_SEAMLESS_Z is not set +CONFIG_AR=y +# CONFIG_FEATURE_AR_LONG_FILENAMES is not set +CONFIG_FEATURE_AR_CREATE=y +# CONFIG_UNCOMPRESS is not set +CONFIG_GUNZIP=y +CONFIG_ZCAT=y +CONFIG_FEATURE_GUNZIP_LONG_OPTIONS=y +CONFIG_BUNZIP2=y +CONFIG_BZCAT=y +CONFIG_UNLZMA=y +CONFIG_LZCAT=y +CONFIG_LZMA=y +CONFIG_UNXZ=y +CONFIG_XZCAT=y +CONFIG_XZ=y +# CONFIG_BZIP2 is not set +CONFIG_BZIP2_SMALL=0 +CONFIG_FEATURE_BZIP2_DECOMPRESS=y +CONFIG_CPIO=y +# CONFIG_FEATURE_CPIO_O is not set +# CONFIG_FEATURE_CPIO_P is not set +# CONFIG_FEATURE_CPIO_IGNORE_DEVNO is not set +# CONFIG_FEATURE_CPIO_RENUMBER_INODES is not set +# CONFIG_DPKG is not set +# CONFIG_DPKG_DEB is not set +CONFIG_GZIP=y +# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set +CONFIG_GZIP_FAST=0 +# CONFIG_FEATURE_GZIP_LEVELS is not set +CONFIG_FEATURE_GZIP_DECOMPRESS=y +# CONFIG_LZOP is not set +CONFIG_UNLZOP=y +CONFIG_LZOPCAT=y +# CONFIG_LZOP_COMPR_HIGH is not set +# CONFIG_RPM is not set +# CONFIG_RPM2CPIO is not set +CONFIG_TAR=y +CONFIG_FEATURE_TAR_LONG_OPTIONS=y +CONFIG_FEATURE_TAR_CREATE=y +# CONFIG_FEATURE_TAR_AUTODETECT is not set +CONFIG_FEATURE_TAR_FROM=y +# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set +# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set +CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y +CONFIG_FEATURE_TAR_TO_COMMAND=y +# CONFIG_FEATURE_TAR_UNAME_GNAME is not set +# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set +# CONFIG_FEATURE_TAR_SELINUX is not set +CONFIG_UNZIP=y +CONFIG_FEATURE_UNZIP_CDF=y +CONFIG_FEATURE_UNZIP_BZIP2=y +CONFIG_FEATURE_UNZIP_LZMA=y +CONFIG_FEATURE_UNZIP_XZ=y +# CONFIG_FEATURE_LZMA_FAST is not set + +# +# Coreutils +# +CONFIG_FEATURE_VERBOSE=y + +# +# Common options for date and touch +# +CONFIG_FEATURE_TIMEZONE=y + +# +# Common options for cp and mv +# +CONFIG_FEATURE_PRESERVE_HARDLINKS=y + +# +# Common options for df, du, ls +# +CONFIG_FEATURE_HUMAN_READABLE=y +CONFIG_BASENAME=y +CONFIG_CAT=y +CONFIG_FEATURE_CATN=y +CONFIG_FEATURE_CATV=y +CONFIG_CHGRP=y +CONFIG_CHMOD=y +CONFIG_CHOWN=y +# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set +CONFIG_CHROOT=y +CONFIG_CKSUM=y +CONFIG_CRC32=y +# CONFIG_COMM is not set +CONFIG_CP=y +# CONFIG_FEATURE_CP_LONG_OPTIONS is not set +# CONFIG_FEATURE_CP_REFLINK is not set +CONFIG_CUT=y +CONFIG_FEATURE_CUT_REGEX=y +CONFIG_DATE=y +CONFIG_FEATURE_DATE_ISOFMT=y +# CONFIG_FEATURE_DATE_NANO is not set +CONFIG_FEATURE_DATE_COMPAT=y +CONFIG_DD=y +CONFIG_FEATURE_DD_SIGNAL_HANDLING=y +# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set +CONFIG_FEATURE_DD_IBS_OBS=y +CONFIG_FEATURE_DD_STATUS=y +CONFIG_DF=y +# CONFIG_FEATURE_DF_FANCY is not set +CONFIG_FEATURE_SKIP_ROOTFS=y +CONFIG_DIRNAME=y +CONFIG_DOS2UNIX=y +CONFIG_UNIX2DOS=y +CONFIG_DU=y +CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y +CONFIG_ECHO=y +CONFIG_FEATURE_FANCY_ECHO=y +CONFIG_ENV=y +# CONFIG_EXPAND is not set +# CONFIG_UNEXPAND is not set +CONFIG_EXPR=y +CONFIG_EXPR_MATH_SUPPORT_64=y +CONFIG_FACTOR=y +CONFIG_FALSE=y +CONFIG_FOLD=y +CONFIG_HEAD=y +CONFIG_FEATURE_FANCY_HEAD=y +CONFIG_HOSTID=y +CONFIG_ID=y +# CONFIG_GROUPS is not set +CONFIG_INSTALL=y +CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y +CONFIG_LINK=y +CONFIG_LN=y +CONFIG_LOGNAME=y +CONFIG_LS=y +CONFIG_FEATURE_LS_FILETYPES=y +CONFIG_FEATURE_LS_FOLLOWLINKS=y +CONFIG_FEATURE_LS_RECURSIVE=y +CONFIG_FEATURE_LS_WIDTH=y +CONFIG_FEATURE_LS_SORTFILES=y +CONFIG_FEATURE_LS_TIMESTAMPS=y +CONFIG_FEATURE_LS_USERNAME=y +CONFIG_FEATURE_LS_COLOR=y +CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y +CONFIG_MD5SUM=y +CONFIG_SHA1SUM=y +CONFIG_SHA256SUM=y +CONFIG_SHA512SUM=y +CONFIG_SHA3SUM=y + +# +# Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum +# +CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y +CONFIG_MKDIR=y +CONFIG_MKFIFO=y +CONFIG_MKNOD=y +CONFIG_MKTEMP=y +CONFIG_MV=y +CONFIG_NICE=y +CONFIG_NL=y +CONFIG_NOHUP=y +CONFIG_NPROC=y +CONFIG_OD=y +CONFIG_PASTE=y +CONFIG_PRINTENV=y +CONFIG_PRINTF=y +CONFIG_PWD=y +CONFIG_READLINK=y +CONFIG_FEATURE_READLINK_FOLLOW=y +CONFIG_REALPATH=y +CONFIG_RM=y +CONFIG_RMDIR=y +CONFIG_SEQ=y +CONFIG_SHRED=y +# CONFIG_SHUF is not set +CONFIG_SLEEP=y +CONFIG_FEATURE_FANCY_SLEEP=y +CONFIG_SORT=y +CONFIG_FEATURE_SORT_BIG=y +# CONFIG_FEATURE_SORT_OPTIMIZE_MEMORY is not set +# CONFIG_SPLIT is not set +# CONFIG_FEATURE_SPLIT_FANCY is not set +# CONFIG_STAT is not set +# CONFIG_FEATURE_STAT_FORMAT is not set +# CONFIG_FEATURE_STAT_FILESYSTEM is not set +CONFIG_STTY=y +# CONFIG_SUM is not set +CONFIG_SYNC=y +# CONFIG_FEATURE_SYNC_FANCY is not set +# CONFIG_FSYNC is not set +# CONFIG_TAC is not set +CONFIG_TAIL=y +CONFIG_FEATURE_FANCY_TAIL=y +CONFIG_TEE=y +CONFIG_FEATURE_TEE_USE_BLOCK_IO=y +CONFIG_TEST=y +CONFIG_TEST1=y +CONFIG_TEST2=y +CONFIG_FEATURE_TEST_64=y +# CONFIG_TIMEOUT is not set +CONFIG_TOUCH=y +CONFIG_FEATURE_TOUCH_SUSV3=y +CONFIG_TR=y +CONFIG_FEATURE_TR_CLASSES=y +CONFIG_FEATURE_TR_EQUIV=y +CONFIG_TRUE=y +CONFIG_TRUNCATE=y +CONFIG_TSORT=y +CONFIG_TTY=y +CONFIG_UNAME=y +CONFIG_UNAME_OSNAME="GNU/Linux" +CONFIG_BB_ARCH=y +CONFIG_UNIQ=y +CONFIG_UNLINK=y +CONFIG_USLEEP=y +CONFIG_UUDECODE=y +CONFIG_BASE32=y +CONFIG_BASE64=y +CONFIG_UUENCODE=y +CONFIG_WC=y +# CONFIG_FEATURE_WC_LARGE is not set +CONFIG_WHO=y +CONFIG_W=y +# CONFIG_USERS is not set +CONFIG_WHOAMI=y +CONFIG_YES=y + +# +# Console Utilities +# +CONFIG_CHVT=y +CONFIG_CLEAR=y +CONFIG_DEALLOCVT=y +CONFIG_DUMPKMAP=y +# CONFIG_FGCONSOLE is not set +# CONFIG_KBD_MODE is not set +CONFIG_LOADFONT=y +# CONFIG_SETFONT is not set +# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set +CONFIG_DEFAULT_SETFONT_DIR="" + +# +# Common options for loadfont and setfont +# +CONFIG_FEATURE_LOADFONT_PSF2=y +CONFIG_FEATURE_LOADFONT_RAW=y +CONFIG_LOADKMAP=y +CONFIG_OPENVT=y +CONFIG_RESET=y +CONFIG_RESIZE=y +CONFIG_FEATURE_RESIZE_PRINT=y +CONFIG_SETCONSOLE=y +# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set +CONFIG_SETKEYCODES=y +CONFIG_SETLOGCONS=y +# CONFIG_SHOWKEY is not set + +# +# Debian Utilities +# +CONFIG_PIPE_PROGRESS=y +CONFIG_RUN_PARTS=y +CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y +# CONFIG_FEATURE_RUN_PARTS_FANCY is not set +CONFIG_START_STOP_DAEMON=y +CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y +CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y +CONFIG_WHICH=y + +# +# klibc-utils +# +# CONFIG_MINIPS is not set +CONFIG_NUKE=y +CONFIG_RESUME=y +CONFIG_RUN_INIT=y + +# +# Editors +# +CONFIG_AWK=y +# CONFIG_FEATURE_AWK_LIBM is not set +CONFIG_FEATURE_AWK_GNU_EXTENSIONS=y +CONFIG_CMP=y +CONFIG_DIFF=y +# CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set +CONFIG_FEATURE_DIFF_DIR=y +# CONFIG_ED is not set +CONFIG_PATCH=y +CONFIG_SED=y +CONFIG_VI=y +CONFIG_FEATURE_VI_MAX_LEN=4096 +CONFIG_FEATURE_VI_8BIT=y +CONFIG_FEATURE_VI_COLON=y +CONFIG_FEATURE_VI_COLON_EXPAND=y +CONFIG_FEATURE_VI_YANKMARK=y +CONFIG_FEATURE_VI_SEARCH=y +# CONFIG_FEATURE_VI_REGEX_SEARCH is not set +CONFIG_FEATURE_VI_USE_SIGNALS=y +CONFIG_FEATURE_VI_DOT_CMD=y +CONFIG_FEATURE_VI_READONLY=y +CONFIG_FEATURE_VI_SETOPTS=y +CONFIG_FEATURE_VI_SET=y +CONFIG_FEATURE_VI_WIN_RESIZE=y +CONFIG_FEATURE_VI_ASK_TERMINAL=y +CONFIG_FEATURE_VI_UNDO=y +CONFIG_FEATURE_VI_UNDO_QUEUE=y +CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=256 +CONFIG_FEATURE_VI_VERBOSE_STATUS=y +CONFIG_FEATURE_ALLOW_EXEC=y + +# +# Finding Utilities +# +CONFIG_FIND=y +CONFIG_FEATURE_FIND_PRINT0=y +CONFIG_FEATURE_FIND_MTIME=y +CONFIG_FEATURE_FIND_ATIME=y +CONFIG_FEATURE_FIND_CTIME=y +CONFIG_FEATURE_FIND_MMIN=y +CONFIG_FEATURE_FIND_AMIN=y +CONFIG_FEATURE_FIND_CMIN=y +CONFIG_FEATURE_FIND_PERM=y +CONFIG_FEATURE_FIND_TYPE=y +CONFIG_FEATURE_FIND_EXECUTABLE=y +CONFIG_FEATURE_FIND_XDEV=y +CONFIG_FEATURE_FIND_MAXDEPTH=y +CONFIG_FEATURE_FIND_NEWER=y +# CONFIG_FEATURE_FIND_INUM is not set +CONFIG_FEATURE_FIND_SAMEFILE=y +CONFIG_FEATURE_FIND_EXEC=y +CONFIG_FEATURE_FIND_EXEC_PLUS=y +CONFIG_FEATURE_FIND_USER=y +CONFIG_FEATURE_FIND_GROUP=y +CONFIG_FEATURE_FIND_NOT=y +CONFIG_FEATURE_FIND_DEPTH=y +CONFIG_FEATURE_FIND_PAREN=y +CONFIG_FEATURE_FIND_SIZE=y +CONFIG_FEATURE_FIND_PRUNE=y +CONFIG_FEATURE_FIND_QUIT=y +# CONFIG_FEATURE_FIND_DELETE is not set +CONFIG_FEATURE_FIND_EMPTY=y +CONFIG_FEATURE_FIND_PATH=y +CONFIG_FEATURE_FIND_REGEX=y +# CONFIG_FEATURE_FIND_CONTEXT is not set +# CONFIG_FEATURE_FIND_LINKS is not set +CONFIG_GREP=y +CONFIG_EGREP=y +CONFIG_FGREP=y +CONFIG_FEATURE_GREP_CONTEXT=y +CONFIG_XARGS=y +# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set +CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y +CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y +CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y +CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y +CONFIG_FEATURE_XARGS_SUPPORT_PARALLEL=y +CONFIG_FEATURE_XARGS_SUPPORT_ARGS_FILE=y + +# +# Init Utilities +# +# CONFIG_BOOTCHARTD is not set +# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set +# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set +CONFIG_HALT=y +CONFIG_POWEROFF=y +CONFIG_REBOOT=y +CONFIG_FEATURE_WAIT_FOR_INIT=y +# CONFIG_FEATURE_CALL_TELINIT is not set +CONFIG_TELINIT_PATH="" +CONFIG_INIT=y +CONFIG_LINUXRC=y +CONFIG_FEATURE_USE_INITTAB=y +CONFIG_FEATURE_KILL_REMOVED=y +CONFIG_FEATURE_KILL_DELAY=0 +CONFIG_FEATURE_INIT_SCTTY=y +CONFIG_FEATURE_INIT_SYSLOG=y +CONFIG_FEATURE_INIT_QUIET=y +# CONFIG_FEATURE_INIT_COREDUMPS is not set +CONFIG_INIT_TERMINAL_TYPE="linux" +CONFIG_FEATURE_INIT_MODIFY_CMDLINE=y + +# +# Login/Password Management Utilities +# +CONFIG_FEATURE_SHADOWPASSWDS=y +# CONFIG_USE_BB_PWD_GRP is not set +# CONFIG_USE_BB_SHADOW is not set +CONFIG_USE_BB_CRYPT=y +CONFIG_USE_BB_CRYPT_SHA=y +# CONFIG_ADD_SHELL is not set +# CONFIG_REMOVE_SHELL is not set +CONFIG_ADDGROUP=y +# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set +CONFIG_ADDUSER=y +# CONFIG_FEATURE_CHECK_NAMES is not set +CONFIG_LAST_ID=60000 +CONFIG_FIRST_SYSTEM_ID=100 +CONFIG_LAST_SYSTEM_ID=999 +# CONFIG_CHPASSWD is not set +CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="md5" +# CONFIG_CRYPTPW is not set +CONFIG_MKPASSWD=y +CONFIG_DELUSER=y +CONFIG_DELGROUP=y +# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set +CONFIG_GETTY=y +CONFIG_LOGIN=y +# CONFIG_LOGIN_SESSION_AS_CHILD is not set +# CONFIG_LOGIN_SCRIPTS is not set +CONFIG_FEATURE_NOLOGIN=y +CONFIG_FEATURE_SECURETTY=y +CONFIG_PASSWD=y +CONFIG_FEATURE_PASSWD_WEAK_CHECK=y +CONFIG_SU=y +CONFIG_FEATURE_SU_SYSLOG=y +CONFIG_FEATURE_SU_CHECKS_SHELLS=y +# CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set +CONFIG_SULOGIN=y +CONFIG_VLOCK=y + +# +# Linux Ext2 FS Progs +# +CONFIG_CHATTR=y +CONFIG_FSCK=y +CONFIG_LSATTR=y +# CONFIG_TUNE2FS is not set + +# +# Linux Module Utilities +# +# CONFIG_MODPROBE_SMALL is not set +# CONFIG_DEPMOD is not set +CONFIG_INSMOD=y +CONFIG_LSMOD=y +CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y +# CONFIG_MODINFO is not set +CONFIG_MODPROBE=y +# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set +CONFIG_RMMOD=y + +# +# Options common to multiple modutils +# +CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS=y +# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set +# CONFIG_FEATURE_2_4_MODULES is not set +# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set +# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set +# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set +CONFIG_FEATURE_CHECK_TAINTED_MODULE=y +# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set +CONFIG_FEATURE_MODUTILS_ALIAS=y +CONFIG_FEATURE_MODUTILS_SYMBOLS=y +CONFIG_DEFAULT_MODULES_DIR="/lib/modules" +CONFIG_DEFAULT_DEPMOD_FILE="modules.dep" + +# +# Linux System Utilities +# +# CONFIG_ACPID is not set +# CONFIG_FEATURE_ACPID_COMPAT is not set +# CONFIG_BLKDISCARD is not set +CONFIG_BLKID=y +# CONFIG_FEATURE_BLKID_TYPE is not set +# CONFIG_BLOCKDEV is not set +# CONFIG_CAL is not set +CONFIG_CHRT=y +CONFIG_DMESG=y +CONFIG_FEATURE_DMESG_PRETTY=y +CONFIG_EJECT=y +# CONFIG_FEATURE_EJECT_SCSI is not set +CONFIG_FALLOCATE=y +# CONFIG_FATATTR is not set +CONFIG_FBSET=y +CONFIG_FEATURE_FBSET_FANCY=y +CONFIG_FEATURE_FBSET_READMODE=y +CONFIG_FDFORMAT=y +CONFIG_FDISK=y +# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set +CONFIG_FEATURE_FDISK_WRITABLE=y +# CONFIG_FEATURE_AIX_LABEL is not set +# CONFIG_FEATURE_SGI_LABEL is not set +# CONFIG_FEATURE_SUN_LABEL is not set +# CONFIG_FEATURE_OSF_LABEL is not set +CONFIG_FEATURE_GPT_LABEL=y +CONFIG_FEATURE_FDISK_ADVANCED=y +# CONFIG_FINDFS is not set +CONFIG_FLOCK=y +CONFIG_FDFLUSH=y +CONFIG_FREERAMDISK=y +# CONFIG_FSCK_MINIX is not set +CONFIG_FSFREEZE=y +CONFIG_FSTRIM=y +CONFIG_GETOPT=y +CONFIG_FEATURE_GETOPT_LONG=y +CONFIG_HEXDUMP=y +# CONFIG_HD is not set +CONFIG_XXD=y +CONFIG_HWCLOCK=y +CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y +# CONFIG_IONICE is not set +CONFIG_IPCRM=y +CONFIG_IPCS=y +CONFIG_LAST=y +# CONFIG_FEATURE_LAST_FANCY is not set +CONFIG_LOSETUP=y +CONFIG_LSPCI=y +CONFIG_LSUSB=y +CONFIG_MDEV=y +CONFIG_FEATURE_MDEV_CONF=y +CONFIG_FEATURE_MDEV_RENAME=y +# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set +CONFIG_FEATURE_MDEV_EXEC=y +# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set +CONFIG_FEATURE_MDEV_DAEMON=y +CONFIG_MESG=y +CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y +CONFIG_MKE2FS=y +# CONFIG_MKFS_EXT2 is not set +# CONFIG_MKFS_MINIX is not set +# CONFIG_FEATURE_MINIX2 is not set +# CONFIG_MKFS_REISER is not set +CONFIG_MKDOSFS=y +# CONFIG_MKFS_VFAT is not set +CONFIG_MKSWAP=y +# CONFIG_FEATURE_MKSWAP_UUID is not set +CONFIG_MORE=y +CONFIG_MOUNT=y +# CONFIG_FEATURE_MOUNT_FAKE is not set +# CONFIG_FEATURE_MOUNT_VERBOSE is not set +# CONFIG_FEATURE_MOUNT_HELPERS is not set +# CONFIG_FEATURE_MOUNT_LABEL is not set +# CONFIG_FEATURE_MOUNT_NFS is not set +CONFIG_FEATURE_MOUNT_CIFS=y +CONFIG_FEATURE_MOUNT_FLAGS=y +CONFIG_FEATURE_MOUNT_FSTAB=y +CONFIG_FEATURE_MOUNT_OTHERTAB=y +CONFIG_MOUNTPOINT=y +CONFIG_NOLOGIN=y +# CONFIG_NOLOGIN_DEPENDENCIES is not set +# CONFIG_NSENTER is not set +CONFIG_PIVOT_ROOT=y +CONFIG_RDATE=y +# CONFIG_RDEV is not set +CONFIG_READPROFILE=y +CONFIG_RENICE=y +# CONFIG_REV is not set +# CONFIG_RTCWAKE is not set +# CONFIG_SCRIPT is not set +# CONFIG_SCRIPTREPLAY is not set +CONFIG_SETARCH=y +CONFIG_LINUX32=y +CONFIG_LINUX64=y +CONFIG_SETPRIV=y +CONFIG_FEATURE_SETPRIV_DUMP=y +CONFIG_FEATURE_SETPRIV_CAPABILITIES=y +CONFIG_FEATURE_SETPRIV_CAPABILITY_NAMES=y +CONFIG_SETSID=y +CONFIG_SWAPON=y +# CONFIG_FEATURE_SWAPON_DISCARD is not set +# CONFIG_FEATURE_SWAPON_PRI is not set +CONFIG_SWAPOFF=y +CONFIG_FEATURE_SWAPONOFF_LABEL=y +CONFIG_SWITCH_ROOT=y +# CONFIG_TASKSET is not set +# CONFIG_FEATURE_TASKSET_FANCY is not set +# CONFIG_FEATURE_TASKSET_CPULIST is not set +CONFIG_UEVENT=y +CONFIG_UMOUNT=y +CONFIG_FEATURE_UMOUNT_ALL=y +# CONFIG_UNSHARE is not set +# CONFIG_WALL is not set + +# +# Common options for mount/umount +# +CONFIG_FEATURE_MOUNT_LOOP=y +CONFIG_FEATURE_MOUNT_LOOP_CREATE=y +# CONFIG_FEATURE_MTAB_SUPPORT is not set +CONFIG_VOLUMEID=y + +# +# Filesystem/Volume identification +# +# CONFIG_FEATURE_VOLUMEID_BCACHE is not set +# CONFIG_FEATURE_VOLUMEID_BTRFS is not set +# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set +CONFIG_FEATURE_VOLUMEID_EROFS=y +CONFIG_FEATURE_VOLUMEID_EXFAT=y +CONFIG_FEATURE_VOLUMEID_EXT=y +CONFIG_FEATURE_VOLUMEID_F2FS=y +CONFIG_FEATURE_VOLUMEID_FAT=y +# CONFIG_FEATURE_VOLUMEID_HFS is not set +# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set +# CONFIG_FEATURE_VOLUMEID_JFS is not set +# CONFIG_FEATURE_VOLUMEID_LFS is not set +# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set +# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set +# CONFIG_FEATURE_VOLUMEID_LUKS is not set +CONFIG_FEATURE_VOLUMEID_MINIX=y +# CONFIG_FEATURE_VOLUMEID_NILFS is not set +# CONFIG_FEATURE_VOLUMEID_NTFS is not set +# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set +# CONFIG_FEATURE_VOLUMEID_REISERFS is not set +# CONFIG_FEATURE_VOLUMEID_ROMFS is not set +# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set +# CONFIG_FEATURE_VOLUMEID_SYSV is not set +CONFIG_FEATURE_VOLUMEID_UBIFS=y +# CONFIG_FEATURE_VOLUMEID_UDF is not set +# CONFIG_FEATURE_VOLUMEID_XFS is not set + +# +# Miscellaneous Utilities +# +# CONFIG_ADJTIMEX is not set +CONFIG_ASCII=y +# CONFIG_BBCONFIG is not set +# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set +CONFIG_BC=y +CONFIG_DC=y +CONFIG_FEATURE_DC_BIG=y +# CONFIG_FEATURE_DC_LIBM is not set +CONFIG_FEATURE_BC_INTERACTIVE=y +CONFIG_FEATURE_BC_LONG_OPTIONS=y +# CONFIG_BEEP is not set +CONFIG_FEATURE_BEEP_FREQ=0 +CONFIG_FEATURE_BEEP_LENGTH_MS=0 +# CONFIG_CHAT is not set +# CONFIG_FEATURE_CHAT_NOFAIL is not set +# CONFIG_FEATURE_CHAT_TTY_HIFI is not set +# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set +# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set +# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set +# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set +# CONFIG_FEATURE_CHAT_CLR_ABORT is not set +# CONFIG_CONSPY is not set +CONFIG_CROND=y +# CONFIG_FEATURE_CROND_D is not set +# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set +CONFIG_FEATURE_CROND_SPECIAL_TIMES=y +CONFIG_FEATURE_CROND_DIR="/etc/cron" +CONFIG_CRONTAB=y +# CONFIG_DEVFSD is not set +# CONFIG_DEVFSD_MODLOAD is not set +# CONFIG_DEVFSD_FG_NP is not set +# CONFIG_DEVFSD_VERBOSE is not set +# CONFIG_FEATURE_DEVFS is not set +CONFIG_DEVMEM=y +# CONFIG_FBSPLASH is not set +# CONFIG_FLASH_ERASEALL is not set +# CONFIG_FLASH_LOCK is not set +# CONFIG_FLASH_UNLOCK is not set +# CONFIG_FLASHCP is not set +CONFIG_HDPARM=y +CONFIG_FEATURE_HDPARM_GET_IDENTITY=y +# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set +# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set +# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set +# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set +# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set +CONFIG_HEXEDIT=y +CONFIG_I2CGET=y +CONFIG_I2CSET=y +CONFIG_I2CDUMP=y +CONFIG_I2CDETECT=y +CONFIG_I2CTRANSFER=y +# CONFIG_INOTIFYD is not set +CONFIG_LESS=y +CONFIG_FEATURE_LESS_MAXLINES=9999999 +CONFIG_FEATURE_LESS_BRACKETS=y +CONFIG_FEATURE_LESS_FLAGS=y +CONFIG_FEATURE_LESS_TRUNCATE=y +# CONFIG_FEATURE_LESS_MARKS is not set +CONFIG_FEATURE_LESS_REGEXP=y +# CONFIG_FEATURE_LESS_WINCH is not set +# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set +CONFIG_FEATURE_LESS_DASHCMD=y +# CONFIG_FEATURE_LESS_LINENUMS is not set +CONFIG_FEATURE_LESS_RAW=y +CONFIG_FEATURE_LESS_ENV=y +CONFIG_LSSCSI=y +CONFIG_MAKEDEVS=y +# CONFIG_FEATURE_MAKEDEVS_LEAF is not set +CONFIG_FEATURE_MAKEDEVS_TABLE=y +# CONFIG_MAN is not set +CONFIG_MICROCOM=y +CONFIG_MIM=y +CONFIG_MT=y +# CONFIG_NANDWRITE is not set +# CONFIG_NANDDUMP is not set +CONFIG_PARTPROBE=y +# CONFIG_RAIDAUTORUN is not set +# CONFIG_READAHEAD is not set +# CONFIG_RFKILL is not set +CONFIG_RUNLEVEL=y +# CONFIG_RX is not set +CONFIG_SEEDRNG=y +CONFIG_SETFATTR=y +CONFIG_SETSERIAL=y +CONFIG_STRINGS=y +CONFIG_TIME=y +CONFIG_TREE=y +CONFIG_TS=y +# CONFIG_TTYSIZE is not set +# CONFIG_UBIATTACH is not set +# CONFIG_UBIDETACH is not set +# CONFIG_UBIMKVOL is not set +# CONFIG_UBIRMVOL is not set +# CONFIG_UBIRSVOL is not set +# CONFIG_UBIUPDATEVOL is not set +CONFIG_UBIRENAME=y +# CONFIG_VOLNAME is not set +CONFIG_WATCHDOG=y +# CONFIG_FEATURE_WATCHDOG_OPEN_TWICE is not set + +# +# Networking Utilities +# +CONFIG_FEATURE_IPV6=y +# CONFIG_FEATURE_UNIX_LOCAL is not set +CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y +# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set +# CONFIG_FEATURE_ETC_NETWORKS is not set +# CONFIG_FEATURE_ETC_SERVICES is not set +CONFIG_FEATURE_HWIB=y +# CONFIG_FEATURE_TLS_SHA1 is not set +CONFIG_ARP=y +CONFIG_ARPING=y +# CONFIG_BRCTL is not set +# CONFIG_FEATURE_BRCTL_FANCY is not set +# CONFIG_FEATURE_BRCTL_SHOW is not set +CONFIG_DNSD=y +CONFIG_ETHER_WAKE=y +# CONFIG_FTPD is not set +# CONFIG_FEATURE_FTPD_WRITE is not set +# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set +# CONFIG_FEATURE_FTPD_AUTHENTICATION is not set +# CONFIG_FTPGET is not set +# CONFIG_FTPPUT is not set +# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set +CONFIG_HOSTNAME=y +CONFIG_DNSDOMAINNAME=y +# CONFIG_HTTPD is not set +CONFIG_FEATURE_HTTPD_PORT_DEFAULT=0 +# CONFIG_FEATURE_HTTPD_RANGES is not set +# CONFIG_FEATURE_HTTPD_SETUID is not set +# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set +# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set +# CONFIG_FEATURE_HTTPD_CGI is not set +# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set +# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set +# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set +# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set +# CONFIG_FEATURE_HTTPD_PROXY is not set +# CONFIG_FEATURE_HTTPD_GZIP is not set +# CONFIG_FEATURE_HTTPD_ETAG is not set +# CONFIG_FEATURE_HTTPD_LAST_MODIFIED is not set +# CONFIG_FEATURE_HTTPD_DATE is not set +# CONFIG_FEATURE_HTTPD_ACL_IP is not set +CONFIG_IFCONFIG=y +CONFIG_FEATURE_IFCONFIG_STATUS=y +CONFIG_FEATURE_IFCONFIG_SLIP=y +CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y +CONFIG_FEATURE_IFCONFIG_HW=y +# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set +# CONFIG_IFENSLAVE is not set +# CONFIG_IFPLUGD is not set +CONFIG_IFUP=y +CONFIG_IFDOWN=y +CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate" +CONFIG_FEATURE_IFUPDOWN_IP=y +CONFIG_FEATURE_IFUPDOWN_IPV4=y +CONFIG_FEATURE_IFUPDOWN_IPV6=y +CONFIG_FEATURE_IFUPDOWN_MAPPING=y +# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set +CONFIG_INETD=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN=y +# CONFIG_FEATURE_INETD_RPC is not set +CONFIG_IP=y +CONFIG_IPADDR=y +CONFIG_IPLINK=y +CONFIG_IPROUTE=y +CONFIG_IPTUNNEL=y +CONFIG_IPRULE=y +CONFIG_IPNEIGH=y +CONFIG_FEATURE_IP_ADDRESS=y +CONFIG_FEATURE_IP_LINK=y +CONFIG_FEATURE_IP_ROUTE=y +CONFIG_FEATURE_IP_ROUTE_DIR="/etc/iproute2" +CONFIG_FEATURE_IP_TUNNEL=y +CONFIG_FEATURE_IP_RULE=y +CONFIG_FEATURE_IP_NEIGH=y +# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set +# CONFIG_IPCALC is not set +# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set +# CONFIG_FEATURE_IPCALC_FANCY is not set +# CONFIG_FAKEIDENTD is not set +CONFIG_NAMEIF=y +# CONFIG_FEATURE_NAMEIF_EXTENDED is not set +# CONFIG_NBDCLIENT is not set +# CONFIG_NC is not set +# CONFIG_NETCAT is not set +# CONFIG_NC_SERVER is not set +# CONFIG_NC_EXTRA is not set +# CONFIG_NC_110_COMPAT is not set +CONFIG_NETSTAT=y +# CONFIG_FEATURE_NETSTAT_WIDE is not set +# CONFIG_FEATURE_NETSTAT_PRG is not set +CONFIG_NSLOOKUP=y +CONFIG_FEATURE_NSLOOKUP_BIG=y +CONFIG_FEATURE_NSLOOKUP_LONG_OPTIONS=y +# CONFIG_NTPD is not set +# CONFIG_FEATURE_NTPD_SERVER is not set +# CONFIG_FEATURE_NTPD_CONF is not set +# CONFIG_FEATURE_NTP_AUTH is not set +CONFIG_PING=y +# CONFIG_PING6 is not set +CONFIG_FEATURE_FANCY_PING=y +# CONFIG_PSCAN is not set +CONFIG_ROUTE=y +# CONFIG_SLATTACH is not set +# CONFIG_SSL_CLIENT is not set +# CONFIG_TC is not set +# CONFIG_FEATURE_TC_INGRESS is not set +# CONFIG_TCPSVD is not set +# CONFIG_UDPSVD is not set +CONFIG_TELNET=y +CONFIG_FEATURE_TELNET_TTYPE=y +CONFIG_FEATURE_TELNET_AUTOLOGIN=y +CONFIG_FEATURE_TELNET_WIDTH=y +# CONFIG_TELNETD is not set +# CONFIG_FEATURE_TELNETD_STANDALONE is not set +CONFIG_FEATURE_TELNETD_PORT_DEFAULT=0 +# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set +CONFIG_TFTP=y +# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set +CONFIG_FEATURE_TFTP_HPA_COMPAT=y +# CONFIG_TFTPD is not set +CONFIG_FEATURE_TFTP_GET=y +CONFIG_FEATURE_TFTP_PUT=y +CONFIG_FEATURE_TFTP_BLOCKSIZE=y +# CONFIG_TFTP_DEBUG is not set +# CONFIG_TLS is not set +CONFIG_TRACEROUTE=y +# CONFIG_TRACEROUTE6 is not set +# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set +# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set +# CONFIG_TUNCTL is not set +# CONFIG_FEATURE_TUNCTL_UG is not set +CONFIG_VCONFIG=y +CONFIG_WGET=y +CONFIG_FEATURE_WGET_LONG_OPTIONS=y +CONFIG_FEATURE_WGET_STATUSBAR=y +CONFIG_FEATURE_WGET_FTP=y +CONFIG_FEATURE_WGET_AUTHENTICATION=y +CONFIG_FEATURE_WGET_TIMEOUT=y +# CONFIG_FEATURE_WGET_HTTPS is not set +# CONFIG_FEATURE_WGET_OPENSSL is not set +# CONFIG_WHOIS is not set +# CONFIG_ZCIP is not set +# CONFIG_UDHCPD is not set +# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set +# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set +CONFIG_DHCPD_LEASES_FILE="" +# CONFIG_DUMPLEASES is not set +# CONFIG_DHCPRELAY is not set +CONFIG_UDHCPC=y +CONFIG_FEATURE_UDHCPC_ARPING=y +CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y +CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" +CONFIG_UDHCPC6_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" +# CONFIG_UDHCPC6 is not set +# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set +# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set +# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set +# CONFIG_FEATURE_UDHCPC6_RFC5970 is not set + +# +# Common options for DHCP applets +# +CONFIG_UDHCPC_DEFAULT_INTERFACE="eth0" +# CONFIG_FEATURE_UDHCP_PORT is not set +CONFIG_UDHCP_DEBUG=0 +CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 +CONFIG_FEATURE_UDHCP_RFC3397=y +CONFIG_FEATURE_UDHCP_8021Q=y +CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-t1 -A3 -b -R -O search -O staticroutes" + +# +# Print Utilities +# +# CONFIG_LPD is not set +# CONFIG_LPR is not set +# CONFIG_LPQ is not set + +# +# Mail Utilities +# +CONFIG_FEATURE_MIME_CHARSET="" +# CONFIG_MAKEMIME is not set +# CONFIG_POPMAILDIR is not set +# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set +# CONFIG_REFORMIME is not set +# CONFIG_FEATURE_REFORMIME_COMPAT is not set +# CONFIG_SENDMAIL is not set + +# +# Process Utilities +# +# CONFIG_FEATURE_FAST_TOP is not set +# CONFIG_FEATURE_SHOW_THREADS is not set +CONFIG_FREE=y +CONFIG_FUSER=y +# CONFIG_IOSTAT is not set +CONFIG_KILL=y +CONFIG_KILLALL=y +CONFIG_KILLALL5=y +CONFIG_LSOF=y +# CONFIG_MPSTAT is not set +# CONFIG_NMETER is not set +# CONFIG_PGREP is not set +# CONFIG_PKILL is not set +CONFIG_PIDOF=y +CONFIG_FEATURE_PIDOF_SINGLE=y +CONFIG_FEATURE_PIDOF_OMIT=y +# CONFIG_PMAP is not set +# CONFIG_POWERTOP is not set +# CONFIG_FEATURE_POWERTOP_INTERACTIVE is not set +CONFIG_PS=y +# CONFIG_FEATURE_PS_WIDE is not set +# CONFIG_FEATURE_PS_LONG is not set +# CONFIG_FEATURE_PS_TIME is not set +# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set +# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set +# CONFIG_PSTREE is not set +# CONFIG_PWDX is not set +# CONFIG_SMEMCAP is not set +CONFIG_BB_SYSCTL=y +CONFIG_TOP=y +CONFIG_FEATURE_TOP_INTERACTIVE=y +CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y +CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y +# CONFIG_FEATURE_TOP_SMP_CPU is not set +# CONFIG_FEATURE_TOP_DECIMALS is not set +# CONFIG_FEATURE_TOP_SMP_PROCESS is not set +# CONFIG_FEATURE_TOPMEM is not set +CONFIG_UPTIME=y +# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set +CONFIG_WATCH=y + +# +# Runit Utilities +# +# CONFIG_CHPST is not set +# CONFIG_SETUIDGID is not set +# CONFIG_ENVUIDGID is not set +# CONFIG_ENVDIR is not set +# CONFIG_SOFTLIMIT is not set +# CONFIG_RUNSV is not set +# CONFIG_RUNSVDIR is not set +# CONFIG_FEATURE_RUNSVDIR_LOG is not set +# CONFIG_SV is not set +CONFIG_SV_DEFAULT_SERVICE_DIR="" +CONFIG_SVC=y +CONFIG_SVOK=y +# CONFIG_SVLOGD is not set +# CONFIG_CHCON is not set +# CONFIG_GETENFORCE is not set +# CONFIG_GETSEBOOL is not set +# CONFIG_LOAD_POLICY is not set +# CONFIG_MATCHPATHCON is not set +# CONFIG_RUNCON is not set +# CONFIG_SELINUXENABLED is not set +# CONFIG_SESTATUS is not set +# CONFIG_SETENFORCE is not set +# CONFIG_SETFILES is not set +# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set +# CONFIG_RESTORECON is not set +# CONFIG_SETSEBOOL is not set + +# +# Shells +# +CONFIG_SH_IS_ASH=y +# CONFIG_SH_IS_HUSH is not set +# CONFIG_SH_IS_NONE is not set +# CONFIG_BASH_IS_ASH is not set +# CONFIG_BASH_IS_HUSH is not set +CONFIG_BASH_IS_NONE=y +CONFIG_SHELL_ASH=y +CONFIG_ASH=y +CONFIG_ASH_OPTIMIZE_FOR_SIZE=y +CONFIG_ASH_INTERNAL_GLOB=y +CONFIG_ASH_BASH_COMPAT=y +# CONFIG_ASH_BASH_SOURCE_CURDIR is not set +CONFIG_ASH_BASH_NOT_FOUND_HOOK=y +CONFIG_ASH_JOB_CONTROL=y +CONFIG_ASH_ALIAS=y +CONFIG_ASH_RANDOM_SUPPORT=y +CONFIG_ASH_EXPAND_PRMT=y +CONFIG_ASH_IDLE_TIMEOUT=y +# CONFIG_ASH_MAIL is not set +CONFIG_ASH_ECHO=y +CONFIG_ASH_PRINTF=y +CONFIG_ASH_TEST=y +CONFIG_ASH_SLEEP=y +CONFIG_ASH_HELP=y +CONFIG_ASH_GETOPTS=y +CONFIG_ASH_CMDCMD=y +# CONFIG_CTTYHACK is not set +# CONFIG_HUSH is not set +# CONFIG_SHELL_HUSH is not set +# CONFIG_HUSH_BASH_COMPAT is not set +# CONFIG_HUSH_BRACE_EXPANSION is not set +# CONFIG_HUSH_BASH_SOURCE_CURDIR is not set +# CONFIG_HUSH_LINENO_VAR is not set +# CONFIG_HUSH_INTERACTIVE is not set +# CONFIG_HUSH_SAVEHISTORY is not set +# CONFIG_HUSH_JOB is not set +# CONFIG_HUSH_TICK is not set +# CONFIG_HUSH_IF is not set +# CONFIG_HUSH_LOOPS is not set +# CONFIG_HUSH_CASE is not set +# CONFIG_HUSH_FUNCTIONS is not set +# CONFIG_HUSH_LOCAL is not set +# CONFIG_HUSH_RANDOM_SUPPORT is not set +# CONFIG_HUSH_MODE_X is not set +# CONFIG_HUSH_ECHO is not set +# CONFIG_HUSH_PRINTF is not set +# CONFIG_HUSH_TEST is not set +# CONFIG_HUSH_HELP is not set +# CONFIG_HUSH_EXPORT is not set +# CONFIG_HUSH_EXPORT_N is not set +# CONFIG_HUSH_READONLY is not set +# CONFIG_HUSH_KILL is not set +# CONFIG_HUSH_WAIT is not set +# CONFIG_HUSH_COMMAND is not set +# CONFIG_HUSH_TRAP is not set +# CONFIG_HUSH_TYPE is not set +# CONFIG_HUSH_TIMES is not set +# CONFIG_HUSH_READ is not set +# CONFIG_HUSH_SET is not set +# CONFIG_HUSH_UNSET is not set +# CONFIG_HUSH_ULIMIT is not set +# CONFIG_HUSH_UMASK is not set +# CONFIG_HUSH_GETOPTS is not set +# CONFIG_HUSH_MEMLEAK is not set + +# +# Options common to all shells +# +CONFIG_FEATURE_SH_MATH=y +CONFIG_FEATURE_SH_MATH_64=y +CONFIG_FEATURE_SH_MATH_BASE=y +CONFIG_FEATURE_SH_EXTRA_QUIET=y +# CONFIG_FEATURE_SH_STANDALONE is not set +# CONFIG_FEATURE_SH_NOFORK is not set +CONFIG_FEATURE_SH_READ_FRAC=y +# CONFIG_FEATURE_SH_HISTFILESIZE is not set +CONFIG_FEATURE_SH_EMBEDDED_SCRIPTS=y + +# +# System Logging Utilities +# +CONFIG_KLOGD=y +CONFIG_FEATURE_KLOGD_KLOGCTL=y +CONFIG_LOGGER=y +# CONFIG_LOGREAD is not set +# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set +CONFIG_SYSLOGD=y +CONFIG_FEATURE_ROTATE_LOGFILE=y +CONFIG_FEATURE_REMOTE_LOG=y +# CONFIG_FEATURE_SYSLOGD_DUP is not set +# CONFIG_FEATURE_SYSLOGD_CFG is not set +# CONFIG_FEATURE_SYSLOGD_PRECISE_TIMESTAMPS is not set +CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256 +# CONFIG_FEATURE_IPC_SYSLOG is not set +CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0 +# CONFIG_FEATURE_KMSG_SYSLOG is not set diff --git a/package/busybox/busybox.hash b/package/busybox/busybox.hash new file mode 100644 index 00000000..6eba365e --- /dev/null +++ b/package/busybox/busybox.hash @@ -0,0 +1,5 @@ +# From https://busybox.net/downloads/busybox-1.36.1.tar.bz2.sha256 +sha256 b8cc24c9574d809e7279c3be349795c5d5ceb6fdf19ca709f80cde50e47de314 busybox-1.36.1.tar.bz2 +# Locally computed +sha256 bbfc9843646d483c334664f651c208b9839626891d8f17604db2146962f43548 LICENSE +sha256 b5a136ed67798e51fe2e0ca0b2a21cb01b904ff0c9f7d563a6292e276607e58f archival/libarchive/bz/LICENSE diff --git a/package/busybox/busybox.mk b/package/busybox/busybox.mk new file mode 100644 index 00000000..204ebe01 --- /dev/null +++ b/package/busybox/busybox.mk @@ -0,0 +1,464 @@ +################################################################################ +# +# busybox +# +################################################################################ + +BUSYBOX_VERSION = 1.36.1 +BUSYBOX_SITE = https://www.busybox.net/downloads +BUSYBOX_SOURCE = busybox-$(BUSYBOX_VERSION).tar.bz2 +BUSYBOX_LICENSE = GPL-2.0, bzip2-1.0.4 +BUSYBOX_LICENSE_FILES = LICENSE archival/libarchive/bz/LICENSE +BUSYBOX_CPE_ID_VENDOR = busybox + +# 0003-libbb-sockaddr2str-ensure-only-printable-characters-.patch +# 0004-nslookup-sanitize-all-printed-strings-with-printable.patch +BUSYBOX_IGNORE_CVES += CVE-2022-28391 + +BUSYBOX_CFLAGS = \ + $(TARGET_CFLAGS) + +BUSYBOX_LDFLAGS = \ + $(TARGET_LDFLAGS) + +# Packages that provide commands that may also be busybox applets: +BUSYBOX_DEPENDENCIES = \ + $(if $(BR2_PACKAGE_ATTR),attr) \ + $(if $(BR2_PACKAGE_BASH),bash) \ + $(if $(BR2_PACKAGE_BC),bc) \ + $(if $(BR2_PACKAGE_BINUTILS),binutils) \ + $(if $(BR2_PACKAGE_COREUTILS),coreutils) \ + $(if $(BR2_PACKAGE_CPIO),cpio) \ + $(if $(BR2_PACKAGE_DCRON),dcron) \ + $(if $(BR2_PACKAGE_DEBIANUTILS),debianutils) \ + $(if $(BR2_PACKAGE_DIFFUTILS),diffutils) \ + $(if $(BR2_PACKAGE_DOS2UNIX),dos2unix) \ + $(if $(BR2_PACKAGE_DOSFSTOOLS),dosfstools) \ + $(if $(BR2_PACKAGE_E2FSPROGS),e2fsprogs) \ + $(if $(BR2_PACKAGE_FBSET),fbset) \ + $(if $(BR2_PACKAGE_GAWK),gawk) \ + $(if $(BR2_PACKAGE_GREP),grep) \ + $(if $(BR2_PACKAGE_GZIP),gzip) \ + $(if $(BR2_PACKAGE_I2C_TOOLS),i2c-tools) \ + $(if $(BR2_PACKAGE_IFENSLAVE),ifenslave) \ + $(if $(BR2_PACKAGE_IFPLUGD),ifplugd) \ + $(if $(BR2_PACKAGE_IFUPDOWN),ifupdown) \ + $(if $(BR2_PACKAGE_IPCALC),ipcalc) \ + $(if $(BR2_PACKAGE_IPROUTE2),iproute2) \ + $(if $(BR2_PACKAGE_IPUTILS),iputils) \ + $(if $(BR2_PACKAGE_KMOD),kmod) \ + $(if $(BR2_PACKAGE_LESS),less) \ + $(if $(BR2_PACKAGE_LSOF),lsof) \ + $(if $(BR2_PACKAGE_MTD),mtd) \ + $(if $(BR2_PACKAGE_NET_TOOLS),net-tools) \ + $(if $(BR2_PACKAGE_NETCAT),netcat) \ + $(if $(BR2_PACKAGE_NETCAT_OPENBSD),netcat-openbsd) \ + $(if $(BR2_PACKAGE_NMAP),nmap) \ + $(if $(BR2_PACKAGE_NTP),ntp) \ + $(if $(BR2_PACKAGE_PCIUTILS),pciutils) \ + $(if $(BR2_PACKAGE_PROCPS_NG),procps-ng) \ + $(if $(BR2_PACKAGE_PSMISC),psmisc) \ + $(if $(BR2_PACKAGE_START_STOP_DAEMON),start-stop-daemon) \ + $(if $(BR2_PACKAGE_SYSKLOGD),sysklogd) \ + $(if $(BR2_PACKAGE_SYSTEMD),systemd) \ + $(if $(BR2_PACKAGE_SYSVINIT),sysvinit) \ + $(if $(BR2_PACKAGE_TAR),tar) \ + $(if $(BR2_PACKAGE_TFTPD),tftpd) \ + $(if $(BR2_PACKAGE_TRACEROUTE),traceroute) \ + $(if $(BR2_PACKAGE_UNZIP),unzip) \ + $(if $(BR2_PACKAGE_USBUTILS),usbutils) \ + $(if $(BR2_PACKAGE_UTIL_LINUX),util-linux) \ + $(if $(BR2_PACKAGE_VIM),vim) \ + $(if $(BR2_PACKAGE_WATCHDOG),watchdog) \ + $(if $(BR2_PACKAGE_WGET),wget) \ + $(if $(BR2_PACKAGE_WHOIS),whois) + +# Link against libtirpc if available so that we can leverage its RPC +# support for NFS mounting with BusyBox +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +BUSYBOX_DEPENDENCIES += libtirpc host-pkgconf +BUSYBOX_CFLAGS += "`$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`" +# Don't use LDFLAGS for -ltirpc, because LDFLAGS is used for +# the non-final link of modules as well. +BUSYBOX_CFLAGS_busybox += "`$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`" +endif + +# Allows the build system to tweak CFLAGS +BUSYBOX_MAKE_ENV = \ + $(TARGET_MAKE_ENV) \ + CFLAGS="$(BUSYBOX_CFLAGS)" \ + CFLAGS_busybox="$(BUSYBOX_CFLAGS_busybox)" + +ifeq ($(BR2_REPRODUCIBLE),y) +BUSYBOX_MAKE_ENV += \ + KCONFIG_NOTIMESTAMP=1 +endif + +BUSYBOX_MAKE_OPTS = \ + AR="$(TARGET_AR)" \ + NM="$(TARGET_NM)" \ + RANLIB="$(TARGET_RANLIB)" \ + CC="$(TARGET_CC)" \ + ARCH=$(NORMALIZED_ARCH) \ + PREFIX="$(TARGET_DIR)" \ + EXTRA_LDFLAGS="$(BUSYBOX_LDFLAGS)" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + CONFIG_PREFIX="$(TARGET_DIR)" \ + SKIP_STRIP=y + +# specifying BUSYBOX_CONFIG_FILE on the command-line overrides the .config +# setting. +# check-package disable Ifdef +ifndef BUSYBOX_CONFIG_FILE +BUSYBOX_CONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG)) +endif + +BUSYBOX_KCONFIG_SUPPORTS_DEFCONFIG = NO +BUSYBOX_KCONFIG_FILE = $(BUSYBOX_CONFIG_FILE) +BUSYBOX_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES)) +BUSYBOX_KCONFIG_EDITORS = menuconfig xconfig gconfig +BUSYBOX_KCONFIG_OPTS = $(BUSYBOX_MAKE_OPTS) + +ifeq ($(BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES),y) +define BUSYBOX_PERMISSIONS +# Set permissions on all applets with BB_SUID_REQUIRE and BB_SUID_MAYBE. +# 12 Applets are pulled from applets.h using grep command : +# grep -r -e "APPLET.*BB_SUID_REQUIRE\|APPLET.*BB_SUID_MAYBE" \ +# $(@D)/include/applets.h +# These applets are added to the device table and the makedev file +# ignores the files with type 'F' ( optional files). + /usr/bin/wall F 4755 0 0 - - - - - + /bin/ping F 4755 0 0 - - - - - + /bin/ping6 F 4755 0 0 - - - - - + /usr/bin/crontab F 4755 0 0 - - - - - + /sbin/findfs F 4755 0 0 - - - - - + /bin/login F 4755 0 0 - - - - - + /bin/mount F 4755 0 0 - - - - - + /usr/bin/passwd F 4755 0 0 - - - - - + /bin/su F 4755 0 0 - - - - - + /usr/bin/traceroute F 4755 0 0 - - - - - + /usr/bin/traceroute6 F 4755 0 0 - - - - - + /usr/bin/vlock F 4755 0 0 - - - - - +endef +else +define BUSYBOX_PERMISSIONS + /bin/busybox f 4755 0 0 - - - - - +endef +endif + +# If mdev will be used for device creation enable it and copy S10mdev to /etc/init.d +ifeq ($(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV),y) +define BUSYBOX_INSTALL_MDEV_SCRIPT + $(INSTALL) -D -m 0755 package/busybox/S10mdev \ + $(TARGET_DIR)/etc/init.d/S10mdev +endef +define BUSYBOX_INSTALL_MDEV_CONF + $(INSTALL) -D -m 0644 package/busybox/mdev.conf \ + $(TARGET_DIR)/etc/mdev.conf +endef +define BUSYBOX_SET_MDEV + $(call KCONFIG_ENABLE_OPT,CONFIG_MDEV) + $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_MDEV_CONF) + $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_MDEV_EXEC) + $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_MDEV_LOAD_FIRMWARE) +endef +endif + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +BUSYBOX_DEPENDENCIES += libxcrypt +endif + +# sha passwords need USE_BB_CRYPT_SHA +ifeq ($(BR2_TARGET_GENERIC_PASSWD_SHA256)$(BR2_TARGET_GENERIC_PASSWD_SHA512),y) +define BUSYBOX_SET_CRYPT_SHA + $(call KCONFIG_ENABLE_OPT,CONFIG_USE_BB_CRYPT_SHA) +endef +endif + +ifeq ($(BR2_USE_MMU),y) +define BUSYBOX_SET_MMU + $(call KCONFIG_DISABLE_OPT,CONFIG_NOMMU) +endef +else +define BUSYBOX_SET_MMU + $(call KCONFIG_ENABLE_OPT,CONFIG_NOMMU) + $(call KCONFIG_DISABLE_OPT,CONFIG_SWAPON) + $(call KCONFIG_DISABLE_OPT,CONFIG_SWAPOFF) + $(call KCONFIG_DISABLE_OPT,CONFIG_ASH) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_BASH_COMPAT) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_BRACE_EXPANSION) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_HELP) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_INTERACTIVE) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_SAVEHISTORY) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_JOB) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_TICK) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_IF) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_LOOPS) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_CASE) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_FUNCTIONS) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_LOCAL) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_RANDOM_SUPPORT) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_EXPORT_N) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_MODE_X) +endef +endif + +# If we're using static libs do the same for busybox +ifeq ($(BR2_STATIC_LIBS),y) +define BUSYBOX_PREFER_STATIC + $(call KCONFIG_ENABLE_OPT,CONFIG_STATIC) +endef +endif + +define BUSYBOX_INSTALL_UDHCPC_SCRIPT + if grep -q CONFIG_UDHCPC=y $(@D)/.config; then \ + $(INSTALL) -m 0755 -D package/busybox/udhcpc.script \ + $(TARGET_DIR)/usr/share/udhcpc/default.script; \ + $(INSTALL) -m 0755 -d \ + $(TARGET_DIR)/usr/share/udhcpc/default.script.d; \ + fi +endef + +define BUSYBOX_INSTALL_ZCIP_SCRIPT + if grep -q CONFIG_ZCIP=y $(@D)/.config; then \ + $(INSTALL) -m 0755 -D $(@D)/examples/zcip.script \ + $(TARGET_DIR)/usr/share/zcip/default.script; \ + fi +endef + +ifeq ($(BR2_INIT_BUSYBOX),y) + +define BUSYBOX_SET_INIT + $(call KCONFIG_ENABLE_OPT,CONFIG_INIT) +endef + +ifeq ($(BR2_TARGET_GENERIC_GETTY),y) +define BUSYBOX_SET_GETTY + $(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(SYSTEM_GETTY_PORT)::respawn:/sbin/getty -L $(SYSTEM_GETTY_OPTIONS) $(SYSTEM_GETTY_PORT) $(SYSTEM_GETTY_BAUDRATE) $(SYSTEM_GETTY_TERM) #~' \ + $(TARGET_DIR)/etc/inittab +endef +else +define BUSYBOX_SET_GETTY + $(SED) '/# GENERIC_SERIAL$$/s~^.*#~#ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 #~' $(TARGET_DIR)/etc/inittab +endef +endif # BR2_TARGET_GENERIC_GETTY +BUSYBOX_TARGET_FINALIZE_HOOKS += BUSYBOX_SET_GETTY + +BUSYBOX_TARGET_FINALIZE_HOOKS += SYSTEM_REMOUNT_ROOT_INITTAB + +endif # BR2_INIT_BUSYBOX + +ifeq ($(BR2_PACKAGE_BUSYBOX_SELINUX),y) +BUSYBOX_DEPENDENCIES += host-pkgconf libselinux libsepol +define BUSYBOX_SET_SELINUX + $(call KCONFIG_ENABLE_OPT,CONFIG_SELINUX) + $(call KCONFIG_ENABLE_OPT,CONFIG_SELINUXENABLED) +endef +endif + +# enable relevant options to allow the Busybox less applet to be used +# as a systemd pager +ifeq ($(BR2_PACKAGE_SYSTEMD):$(BR2_PACKAGE_LESS),y:) +define BUSYBOX_SET_LESS_FLAGS + $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_LESS_DASHCMD) + $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_LESS_RAW) + $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_LESS_TRUNCATE) + $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_LESS_FLAGS) + $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_LESS_ENV) +endef +endif + +ifeq ($(BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES),y) +define BUSYBOX_SET_INDIVIDUAL_BINARIES + $(call KCONFIG_ENABLE_OPT,CONFIG_BUILD_LIBBUSYBOX) + $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_INDIVIDUAL) +endef + +define BUSYBOX_INSTALL_INDIVIDUAL_BINARIES + rm -f $(TARGET_DIR)/bin/busybox +endef +endif + +# Disable SHA1 and SHA256 HWACCEL to avoid segfault in init +# with some x86 toolchains (mostly musl?). +ifeq ($(BR2_i386),y) +define BUSYBOX_MUSL_DISABLE_SHA_HWACCEL + $(call KCONFIG_DISABLE_OPT,CONFIG_SHA1_HWACCEL) + $(call KCONFIG_DISABLE_OPT,CONFIG_SHA256_HWACCEL) +endef +endif + +# Only install our logging scripts if no other package does it. +ifeq ($(BR2_PACKAGE_SYSKLOGD)$(BR2_PACKAGE_RSYSLOG)$(BR2_PACKAGE_SYSLOG_NG),) +define BUSYBOX_INSTALL_LOGGING_SCRIPT + if grep -q CONFIG_SYSLOGD=y $(@D)/.config; \ + then \ + $(INSTALL) -m 0755 -D package/busybox/S01syslogd \ + $(TARGET_DIR)/etc/init.d/S01syslogd; \ + fi; \ + if grep -q CONFIG_KLOGD=y $(@D)/.config; \ + then \ + $(INSTALL) -m 0755 -D package/busybox/S02klogd \ + $(TARGET_DIR)/etc/init.d/S02klogd; \ + fi +endef +endif + +# Only install our sysctl scripts if no other package does it. +ifeq ($(BR2_PACKAGE_PROCPS_NG),) +define BUSYBOX_INSTALL_SYSCTL_SCRIPT + if grep -q CONFIG_BB_SYSCTL=y $(@D)/.config; \ + then \ + $(INSTALL) -m 0755 -D package/busybox/S02sysctl \ + $(TARGET_DIR)/etc/init.d/S02sysctl ; \ + fi +endef +endif + +# Only install our crond script if no other package does it. +ifeq ($(BR2_PACKAGE_DCRON),) +define BUSYBOX_INSTALL_CROND_SCRIPT + if grep -q CONFIG_CROND=y $(@D)/.config; \ + then \ + mkdir -p $(TARGET_DIR)/etc/cron/crontabs ; \ + $(INSTALL) -m 0755 -D package/busybox/S50crond \ + $(TARGET_DIR)/etc/init.d/S50crond; \ + fi; +endef +endif + +# Only install our ifplugd script if no other package does it. +ifeq ($(BR2_PACKAGE_IFPLUGD),) +define BUSYBOX_INSTALL_IFPLUGD_SCRIPT + if grep -q CONFIG_IFPLUGD=y $(@D)/.config; \ + then \ + $(INSTALL) -m 0755 -D package/busybox/S41ifplugd \ + $(TARGET_DIR)/etc/init.d/S41ifplugd; \ + fi; +endef +endif + +ifeq ($(BR2_INIT_BUSYBOX),y) +define BUSYBOX_INSTALL_INITTAB + if test ! -e $(TARGET_DIR)/etc/inittab; then \ + $(INSTALL) -D -m 0644 package/busybox/inittab $(TARGET_DIR)/etc/inittab; \ + fi +endef +endif + +ifeq ($(BR2_PACKAGE_BUSYBOX_WATCHDOG),y) +define BUSYBOX_SET_WATCHDOG + $(call KCONFIG_ENABLE_OPT,CONFIG_WATCHDOG) +endef +define BUSYBOX_INSTALL_WATCHDOG_SCRIPT + $(INSTALL) -D -m 0755 package/busybox/S15watchdog \ + $(TARGET_DIR)/etc/init.d/S15watchdog + $(SED) s/PERIOD/$(call qstrip,$(BR2_PACKAGE_BUSYBOX_WATCHDOG_PERIOD))/ \ + $(TARGET_DIR)/etc/init.d/S15watchdog +endef +endif + +# PAM support requires thread support in the toolchain +ifeq ($(BR2_PACKAGE_LINUX_PAM)$(BR2_TOOLCHAIN_HAS_THREADS),yy) +define BUSYBOX_LINUX_PAM + $(call KCONFIG_ENABLE_OPT,CONFIG_PAM) +endef +BUSYBOX_DEPENDENCIES += linux-pam +else +define BUSYBOX_LINUX_PAM + $(call KCONFIG_DISABLE_OPT,CONFIG_PAM) +endef +endif + +# Telnet support +define BUSYBOX_INSTALL_TELNET_SCRIPT + if grep -q CONFIG_FEATURE_TELNETD_STANDALONE=y $(@D)/.config; then \ + $(INSTALL) -m 0755 -D package/busybox/S50telnet \ + $(TARGET_DIR)/etc/init.d/S50telnet ; \ + fi +endef +define BUSYBOX_INSTALL_TELNET_SERVICE + if grep -q CONFIG_FEATURE_TELNETD_STANDALONE=y $(@D)/.config; then \ + $(INSTALL) -D -m 0644 package/busybox/telnetd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/telnetd.service ; \ + fi +endef + +# Add /bin/{a,hu}sh to /etc/shells otherwise some login tools like dropbear +# can reject the user connection. See man shells. +define BUSYBOX_INSTALL_ADD_TO_SHELLS + if grep -q CONFIG_ASH=y $(BUSYBOX_DIR)/.config; then \ + grep -qsE '^/bin/ash$$' $(TARGET_DIR)/etc/shells \ + || echo "/bin/ash" >> $(TARGET_DIR)/etc/shells; \ + fi + if grep -q CONFIG_HUSH=y $(BUSYBOX_DIR)/.config; then \ + grep -qsE '^/bin/hush$$' $(TARGET_DIR)/etc/shells \ + || echo "/bin/hush" >> $(TARGET_DIR)/etc/shells; \ + fi +endef +BUSYBOX_TARGET_FINALIZE_HOOKS += BUSYBOX_INSTALL_ADD_TO_SHELLS + +define BUSYBOX_KCONFIG_FIXUP_CMDS + $(BUSYBOX_MUSL_DISABLE_SHA_HWACCEL) + $(BUSYBOX_SET_MMU) + $(BUSYBOX_PREFER_STATIC) + $(BUSYBOX_SET_MDEV) + $(BUSYBOX_SET_CRYPT_SHA) + $(BUSYBOX_LINUX_PAM) + $(BUSYBOX_SET_INIT) + $(BUSYBOX_SET_WATCHDOG) + $(BUSYBOX_SET_SELINUX) + $(BUSYBOX_SET_LESS_FLAGS) + $(BUSYBOX_SET_INDIVIDUAL_BINARIES) +endef + +define BUSYBOX_BUILD_CMDS + $(BUSYBOX_MAKE_ENV) $(MAKE) $(BUSYBOX_MAKE_OPTS) -C $(@D) +endef + +define BUSYBOX_INSTALL_TARGET_CMDS + # Use the 'noclobber' install rule, to prevent BusyBox from overwriting + # any full-blown versions of apps installed by other packages. + $(BUSYBOX_MAKE_ENV) $(MAKE) $(BUSYBOX_MAKE_OPTS) -C $(@D) install-noclobber + $(BUSYBOX_INSTALL_INDIVIDUAL_BINARIES) + $(BUSYBOX_INSTALL_INITTAB) + $(BUSYBOX_INSTALL_UDHCPC_SCRIPT) + $(BUSYBOX_INSTALL_ZCIP_SCRIPT) + $(BUSYBOX_INSTALL_MDEV_CONF) +endef + +# Install the sysvinit scripts, for the moment, but not those that already +# have a corresponding one in openrc. +define BUSYBOX_INSTALL_INIT_OPENRC + $(BUSYBOX_INSTALL_MDEV_SCRIPT) + $(BUSYBOX_INSTALL_LOGGING_SCRIPT) + $(BUSYBOX_INSTALL_WATCHDOG_SCRIPT) + $(BUSYBOX_INSTALL_IFPLUGD_SCRIPT) + $(BUSYBOX_INSTALL_CROND_SCRIPT) + $(BUSYBOX_INSTALL_TELNET_SCRIPT) +endef + +define BUSYBOX_INSTALL_INIT_SYSTEMD + $(BUSYBOX_INSTALL_TELNET_SERVICE) +endef + +define BUSYBOX_INSTALL_INIT_SYSV + $(BUSYBOX_INSTALL_MDEV_SCRIPT) + $(BUSYBOX_INSTALL_LOGGING_SCRIPT) + $(BUSYBOX_INSTALL_WATCHDOG_SCRIPT) + $(BUSYBOX_INSTALL_SYSCTL_SCRIPT) + $(BUSYBOX_INSTALL_IFPLUGD_SCRIPT) + $(BUSYBOX_INSTALL_CROND_SCRIPT) + $(BUSYBOX_INSTALL_TELNET_SCRIPT) +endef + +# Checks to give errors that the user can understand +# Must be before we call to kconfig-package +ifeq ($(BR2_PACKAGE_BUSYBOX)$(BR_BUILDING),yy) +ifeq ($(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG)),) +$(error No BusyBox configuration file specified, check your BR2_PACKAGE_BUSYBOX_CONFIG setting) +endif +endif + +$(eval $(kconfig-package)) diff --git a/package/busybox/inittab b/package/busybox/inittab new file mode 100644 index 00000000..f2b4df80 --- /dev/null +++ b/package/busybox/inittab @@ -0,0 +1,40 @@ +# /etc/inittab +# +# Copyright (C) 2001 Erik Andersen +# +# Note: BusyBox init doesn't support runlevels. The runlevels field is +# completely ignored by BusyBox init. If you want runlevels, use +# sysvinit. +# +# Format for each entry: ::: +# +# id == tty to run on, or empty for /dev/console +# runlevels == ignored +# action == one of sysinit, respawn, askfirst, wait, and once +# process == program to run + +# Startup the system +::sysinit:/bin/mount -t proc proc /proc +::sysinit:/bin/mount -o remount,rw / +::sysinit:/bin/mkdir -p /dev/pts /dev/shm +::sysinit:/bin/mount -a +::sysinit:/bin/mkdir -p /run/lock/subsys +::sysinit:/sbin/swapon -a +null::sysinit:/bin/ln -sf /proc/self/fd /dev/fd +null::sysinit:/bin/ln -sf /proc/self/fd/0 /dev/stdin +null::sysinit:/bin/ln -sf /proc/self/fd/1 /dev/stdout +null::sysinit:/bin/ln -sf /proc/self/fd/2 /dev/stderr +::sysinit:/bin/hostname -F /etc/hostname +# now run any rc scripts +::sysinit:/etc/init.d/rcS + +# Put a getty on the serial port +#ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 # GENERIC_SERIAL + +# Stuff to do for the 3-finger salute +#::ctrlaltdel:/sbin/reboot + +# Stuff to do before rebooting +::shutdown:/etc/init.d/rcK +::shutdown:/sbin/swapoff -a +::shutdown:/bin/umount -a -r diff --git a/package/busybox/mdev.conf b/package/busybox/mdev.conf new file mode 100644 index 00000000..eaece1b7 --- /dev/null +++ b/package/busybox/mdev.conf @@ -0,0 +1,39 @@ +# null may already exist; therefore ownership has to be changed with command +null root:root 666 @chmod 666 $MDEV +zero root:root 666 +full root:root 666 +random root:root 444 +urandom root:root 444 +hwrandom root:root 444 +grsec root:root 660 + +kmem root:root 640 +mem root:root 640 +port root:root 640 +# console may already exist; therefore ownership has to be changed with command +console root:tty 600 @chmod 600 $MDEV +ptmx root:tty 666 +pty.* root:tty 660 + +# Typical devices +tty root:tty 666 +tty[0-9]* root:tty 660 +vcsa*[0-9]* root:tty 660 +ttyS[0-9]* root:root 660 +ttyUSB[0-9]* root:root 660 + +# alsa sound devices +snd/pcm.* root:audio 660 +snd/control.* root:audio 660 +snd/midi.* root:audio 660 +snd/seq root:audio 660 +snd/timer root:audio 660 + +# input stuff +input/event[0-9]+ root:root 640 +input/mice root:root 640 +input/mouse[0-9] root:root 640 +input/ts[0-9] root:root 600 + +# load modules +$MODALIAS=.* root:root 660 @modprobe "$MODALIAS" diff --git a/package/busybox/telnetd.service b/package/busybox/telnetd.service new file mode 100644 index 00000000..8a640b76 --- /dev/null +++ b/package/busybox/telnetd.service @@ -0,0 +1,10 @@ +[Unit] +Description=Telnetd Service +After=network.target + +[Service] +Type=simple +ExecStart=/usr/sbin/telnetd -F + +[Install] +WantedBy=multi-user.target diff --git a/package/busybox/udhcpc.script b/package/busybox/udhcpc.script new file mode 100755 index 00000000..74dc5532 --- /dev/null +++ b/package/busybox/udhcpc.script @@ -0,0 +1,122 @@ +#!/bin/sh + +# udhcpc script edited by Tim Riker + +[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1 + +ACTION="$1" +RESOLV_CONF="/etc/resolv.conf" +[ -e $RESOLV_CONF ] || touch $RESOLV_CONF +[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast" +[ -n "$subnet" ] && NETMASK="netmask $subnet" +# Handle stateful DHCPv6 like DHCPv4 +[ -n "$ipv6" ] && ip="$ipv6/128" + +if [ -z "${IF_WAIT_DELAY}" ]; then + IF_WAIT_DELAY=10 +fi + +wait_for_ipv6_default_route() { + printf "Waiting for IPv6 default route to appear" + while [ $IF_WAIT_DELAY -gt 0 ]; do + if ip -6 route list | grep -q default; then + printf "\n" + return + fi + sleep 1 + printf "." + : $((IF_WAIT_DELAY -= 1)) + done + printf " timeout!\n" +} + +case "$ACTION" in + deconfig) + /sbin/ifconfig $interface up + /sbin/ifconfig $interface 0.0.0.0 + + # drop info from this interface + # resolv.conf may be a symlink to /tmp/, so take care + TMPFILE=$(mktemp) + grep -vE "# $interface\$" $RESOLV_CONF > $TMPFILE + cat $TMPFILE > $RESOLV_CONF + rm -f $TMPFILE + + if [ -x /usr/sbin/avahi-autoipd ]; then + /usr/sbin/avahi-autoipd -c $interface && /usr/sbin/avahi-autoipd -k $interface + fi + ;; + + leasefail|nak) + if [ -x /usr/sbin/avahi-autoipd ]; then + /usr/sbin/avahi-autoipd -c $interface || /usr/sbin/avahi-autoipd -wD $interface --no-chroot + fi + ;; + + renew|bound) + if [ -x /usr/sbin/avahi-autoipd ]; then + /usr/sbin/avahi-autoipd -c $interface && /usr/sbin/avahi-autoipd -k $interface + fi + /sbin/ifconfig $interface $ip $BROADCAST $NETMASK + if [ -n "$ipv6" ] ; then + wait_for_ipv6_default_route + fi + + # RFC3442: If the DHCP server returns both a Classless + # Static Routes option and a Router option, the DHCP + # client MUST ignore the Router option. + if [ -n "$staticroutes" ]; then + echo "deleting routers" + route -n | while read dest gw mask flags metric ref use iface; do + [ "$iface" != "$interface" -o "$gw" = "0.0.0.0" ] || \ + route del -net "$dest" netmask "$mask" gw "$gw" dev "$interface" + done + + # format: dest1/mask gw1 ... destn/mask gwn + set -- $staticroutes + while [ -n "$1" -a -n "$2" ]; do + route add -net "$1" gw "$2" dev "$interface" + shift 2 + done + elif [ -n "$router" ] ; then + echo "deleting routers" + while route del default gw 0.0.0.0 dev $interface 2> /dev/null; do + : + done + + for i in $router ; do + route add default gw $i dev $interface + done + fi + + # drop info from this interface + # resolv.conf may be a symlink to /tmp/, so take care + TMPFILE=$(mktemp) + grep -vE "# $interface\$" $RESOLV_CONF > $TMPFILE + cat $TMPFILE > $RESOLV_CONF + rm -f $TMPFILE + + # prefer rfc3397 domain search list (option 119) if available + if [ -n "$search" ]; then + search_list=$search + elif [ -n "$domain" ]; then + search_list=$domain + fi + + [ -n "$search_list" ] && + echo "search $search_list # $interface" >> $RESOLV_CONF + + for i in $dns ; do + echo adding dns $i + echo "nameserver $i # $interface" >> $RESOLV_CONF + done + ;; +esac + +HOOK_DIR="$0.d" +for hook in "${HOOK_DIR}/"*; do + [ -f "${hook}" -a -x "${hook}" ] || continue + "${hook}" "$ACTION" +done + +exit 0 diff --git a/package/bwm-ng/Config.in b/package/bwm-ng/Config.in new file mode 100644 index 00000000..f93dd935 --- /dev/null +++ b/package/bwm-ng/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_BWM_NG + bool "bwm-ng" + help + Bandwidth Monitor NG is a small and console-based live + network and disk-io bandwidth monitor for Linux, BSD, + Solaris, Mac OS X and others. + + http://www.gropp.org/?id=projects&sub=bwm-ng diff --git a/package/bwm-ng/bwm-ng.hash b/package/bwm-ng/bwm-ng.hash new file mode 100644 index 00000000..d447673f --- /dev/null +++ b/package/bwm-ng/bwm-ng.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c1a552b6ff48ea3e4e10110a7c188861abc4750befc67c6caaba8eb3ecf67f46 bwm-ng-0.6.3.tar.gz +sha256 8556cc15ba3c0a411bf7d94bac5870829fb725f294b450c724c1e0856a601556 COPYING diff --git a/package/bwm-ng/bwm-ng.mk b/package/bwm-ng/bwm-ng.mk new file mode 100644 index 00000000..31edda0c --- /dev/null +++ b/package/bwm-ng/bwm-ng.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# bwm-ng +# +################################################################################ + +BWM_NG_VERSION = 0.6.3 +BWM_NG_SITE = $(call github,vgropp,bwm-ng,v$(BWM_NG_VERSION)) +BWM_NG_CONF_OPTS = --with-procnetdev --with-diskstats +BWM_NG_LICENSE = GPL-2.0+ +BWM_NG_LICENSE_FILES = COPYING +BWM_NG_CPE_ID_VALID = YES +BWM_NG_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_NCURSES),y) +BWM_NG_CONF_OPTS += --with-ncurses +BWM_NG_DEPENDENCIES += ncurses +endif + +$(eval $(autotools-package)) diff --git a/package/bzip2/0001-build-objects-twice.patch b/package/bzip2/0001-build-objects-twice.patch new file mode 100644 index 00000000..52b234f6 --- /dev/null +++ b/package/bzip2/0001-build-objects-twice.patch @@ -0,0 +1,58 @@ +Build objects twice for shared and static libraries + +The existing Makefile causes problems on MIPS because the same object +files (not compiled with -fPIC) are used in static and shared libraries. +MIPS will refuce to link non-pic objects in shared libraries. +We fix this problems by creating a new rule for the shared library +and build the shared objects as *.sho instead of *.o. +Then, we use these objects to create the shared library. + +Signed-off-by: Markos Chandras +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi + +Index: bzip2-1.0.6/Makefile-libbz2_so +=================================================================== +--- bzip2-1.0.6.orig/Makefile-libbz2_so ++++ bzip2-1.0.6/Makefile-libbz2_so +@@ -26,13 +26,13 @@ CC=gcc + BIGFILES=-D_FILE_OFFSET_BITS=64 + CFLAGS=-fpic -fPIC -Wall -Winline -O2 -g $(BIGFILES) + +-OBJS= blocksort.o \ +- huffman.o \ +- crctable.o \ +- randtable.o \ +- compress.o \ +- decompress.o \ +- bzlib.o ++OBJS= blocksort.sho \ ++ huffman.sho \ ++ crctable.sho \ ++ randtable.sho \ ++ compress.sho \ ++ decompress.sho \ ++ bzlib.sho + + all: $(OBJS) + $(CC) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.8 $(OBJS) +@@ -43,17 +43,5 @@ all: $(OBJS) + clean: + rm -f $(OBJS) bzip2.o libbz2.so.1.0.8 libbz2.so.1.0 bzip2-shared + +-blocksort.o: blocksort.c +- $(CC) $(CFLAGS) -c blocksort.c +-huffman.o: huffman.c +- $(CC) $(CFLAGS) -c huffman.c +-crctable.o: crctable.c +- $(CC) $(CFLAGS) -c crctable.c +-randtable.o: randtable.c +- $(CC) $(CFLAGS) -c randtable.c +-compress.o: compress.c +- $(CC) $(CFLAGS) -c compress.c +-decompress.o: decompress.c +- $(CC) $(CFLAGS) -c decompress.c +-bzlib.o: bzlib.c +- $(CC) $(CFLAGS) -c bzlib.c ++%.sho: %.c ++ $(CC) $(CFLAGS) -o $@ -c $< diff --git a/package/bzip2/0002-improve-build-system.patch b/package/bzip2/0002-improve-build-system.patch new file mode 100644 index 00000000..11a856e4 --- /dev/null +++ b/package/bzip2/0002-improve-build-system.patch @@ -0,0 +1,86 @@ +Improve bzip2 build system + +This patch makes a number of improvements to the bzip2 build system: + + * Remove the BIGFILE variable that was used to force largefile + support. Now, the user of the Makefile is supposed to pass + -D_FILE_OFFSET_BITS=64 when largefile support is desired. + + * Use override CFLAGS += so that additional CFLAGS can be passed on + the command line. + + * Removed "forced" CFLAGS -O2, -g and -Winline. We don't want them by + default, and want the build system to use its own ones. + + * When creating the symbolic links bzegrep, bzfgrep, bzless and + bzcmp, don't link them to an absolute path, or they'll point to + some path on the build machine. + + * Provide an install target for the shared library, which creates the + appropriate symbolic links. + +Signed-off-by: Thomas Petazzoni +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -20,8 +20,7 @@ AR=ar + RANLIB=ranlib + LDFLAGS= + +-BIGFILES=-D_FILE_OFFSET_BITS=64 +-CFLAGS=-Wall -Winline -O2 -g $(BIGFILES) ++override CFLAGS += -Wall + + # Where you want it installed when you do 'make install' + PREFIX=/usr/local +@@ -90,14 +89,14 @@ install: bzip2 bzip2recover + cp -f libbz2.a $(PREFIX)/lib + chmod a+r $(PREFIX)/lib/libbz2.a + cp -f bzgrep $(PREFIX)/bin/bzgrep +- ln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzegrep +- ln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzfgrep ++ ln -s -f bzgrep $(PREFIX)/bin/bzegrep ++ ln -s -f bzgrep $(PREFIX)/bin/bzfgrep + chmod a+x $(PREFIX)/bin/bzgrep + cp -f bzmore $(PREFIX)/bin/bzmore +- ln -s -f $(PREFIX)/bin/bzmore $(PREFIX)/bin/bzless ++ ln -s -f bzmore $(PREFIX)/bin/bzless + chmod a+x $(PREFIX)/bin/bzmore + cp -f bzdiff $(PREFIX)/bin/bzdiff +- ln -s -f $(PREFIX)/bin/bzdiff $(PREFIX)/bin/bzcmp ++ ln -s -f bzdiff $(PREFIX)/bin/bzcmp + chmod a+x $(PREFIX)/bin/bzdiff + cp -f bzgrep.1 bzmore.1 bzdiff.1 $(PREFIX)/man/man1 + chmod a+r $(PREFIX)/man/man1/bzgrep.1 +Index: b/Makefile-libbz2_so +=================================================================== +--- a/Makefile-libbz2_so ++++ b/Makefile-libbz2_so +@@ -23,8 +23,7 @@ + + SHELL=/bin/sh + CC=gcc +-BIGFILES=-D_FILE_OFFSET_BITS=64 +-CFLAGS=-fpic -fPIC -Wall -Winline -O2 -g $(BIGFILES) ++override CFLAGS += -fpic -fPIC -Wall + + OBJS= blocksort.sho \ + huffman.sho \ +@@ -37,8 +36,11 @@ OBJS= blocksort.sho \ + all: $(OBJS) + $(CC) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.8 $(OBJS) + $(CC) $(CFLAGS) -o bzip2-shared bzip2.c libbz2.so.1.0.8 +- rm -f libbz2.so.1.0 +- ln -s libbz2.so.1.0.8 libbz2.so.1.0 ++ ++install: ++ install -m 0755 -D libbz2.so.1.0.8 $(PREFIX)/lib/libbz2.so.1.0.8 ++ ln -sf libbz2.so.1.0.8 $(PREFIX)/lib/libbz2.so ++ ln -sf libbz2.so.1.0.8 $(PREFIX)/lib/libbz2.so.1.0 + + clean: + rm -f $(OBJS) bzip2.o libbz2.so.1.0.8 libbz2.so.1.0 bzip2-shared diff --git a/package/bzip2/Config.in b/package/bzip2/Config.in new file mode 100644 index 00000000..7db1902b --- /dev/null +++ b/package/bzip2/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_BZIP2 + bool "bzip2" + help + Freely available, patent free, high-quality data compressor. + It typically compresses files to within 10% to 15% of the best + available techniques, while being around twice as fast at + compression and six times faster at decompression. + + https://sourceware.org/bzip2/ diff --git a/package/bzip2/bzip2.hash b/package/bzip2/bzip2.hash new file mode 100644 index 00000000..a451166d --- /dev/null +++ b/package/bzip2/bzip2.hash @@ -0,0 +1,4 @@ +# From https://sourceware.org/pub/bzip2/sha512.sum +sha512 083f5e675d73f3233c7930ebe20425a533feedeaaa9d8cc86831312a6581cefbe6ed0d08d2fa89be81082f2a5abdabca8b3c080bf97218a1bd59dc118a30b9f3 bzip2-1.0.8.tar.gz +# Locally calculated +sha256 c6dbbf828498be844a89eaa3b84adbab3199e342eb5cb2ed2f0d4ba7ec0f38a3 LICENSE diff --git a/package/bzip2/bzip2.mk b/package/bzip2/bzip2.mk new file mode 100644 index 00000000..c2e5f761 --- /dev/null +++ b/package/bzip2/bzip2.mk @@ -0,0 +1,70 @@ +################################################################################ +# +# bzip2 +# +################################################################################ + +BZIP2_VERSION = 1.0.8 +BZIP2_SITE = https://sourceware.org/pub/bzip2 +BZIP2_INSTALL_STAGING = YES +BZIP2_LICENSE = bzip2 license +BZIP2_LICENSE_FILES = LICENSE +BZIP2_CPE_ID_VENDOR = bzip + +ifeq ($(BR2_STATIC_LIBS),) +define BZIP2_BUILD_SHARED_CMDS + $(TARGET_MAKE_ENV) \ + $(MAKE) -C $(@D) -f Makefile-libbz2_so $(TARGET_CONFIGURE_OPTS) +endef +endif + +define BZIP2_BUILD_CMDS + $(TARGET_MAKE_ENV) \ + $(MAKE) -C $(@D) libbz2.a bzip2 bzip2recover $(TARGET_CONFIGURE_OPTS) + $(BZIP2_BUILD_SHARED_CMDS) +endef + +ifeq ($(BR2_STATIC_LIBS),) +define BZIP2_INSTALL_STAGING_SHARED_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + -f Makefile-libbz2_so PREFIX=$(STAGING_DIR)/usr -C $(@D) install +endef +endif + +define BZIP2_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + PREFIX=$(STAGING_DIR)/usr -C $(@D) install + $(BZIP2_INSTALL_STAGING_SHARED_CMDS) +endef + +ifeq ($(BR2_STATIC_LIBS),) +define BZIP2_INSTALL_TARGET_SHARED_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + -f Makefile-libbz2_so PREFIX=$(TARGET_DIR)/usr -C $(@D) install +endef +endif + +# make sure busybox doesn't get overwritten by make install +define BZIP2_INSTALL_TARGET_CMDS + rm -f $(addprefix $(TARGET_DIR)/usr/bin/,bzip2 bunzip2 bzcat) + $(TARGET_MAKE_ENV) $(MAKE) \ + PREFIX=$(TARGET_DIR)/usr -C $(@D) install + $(BZIP2_INSTALL_TARGET_SHARED_CMDS) +endef + +define HOST_BZIP2_BUILD_CMDS + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) \ + $(MAKE) -C $(@D) -f Makefile-libbz2_so + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) \ + $(MAKE) -C $(@D) libbz2.a bzip2 bzip2recover +endef + +define HOST_BZIP2_INSTALL_CMDS + $(HOST_MAKE_ENV) \ + $(MAKE) PREFIX=$(HOST_DIR) -C $(@D) install + $(HOST_MAKE_ENV) \ + $(MAKE) -f Makefile-libbz2_so PREFIX=$(HOST_DIR) -C $(@D) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/c-ares/Config.in b/package/c-ares/Config.in new file mode 100644 index 00000000..be17b166 --- /dev/null +++ b/package/c-ares/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_C_ARES + bool "c-ares" + help + C library for asynchronous DNS requests. + + http://c-ares.haxx.se/ diff --git a/package/c-ares/c-ares.hash b/package/c-ares/c-ares.hash new file mode 100644 index 00000000..e1cf9f65 --- /dev/null +++ b/package/c-ares/c-ares.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +sha256 072ff6b30b9682d965b87eb9b77851dc1cd8e6d8090f6821a56bd8fa89595061 c-ares-1.32.2.tar.gz + +# Hash for license file +sha256 8a9994f85a8e531e1a3217ab7ba509787c6b93056aabe702137ce662db8321c2 LICENSE.md diff --git a/package/c-ares/c-ares.mk b/package/c-ares/c-ares.mk new file mode 100644 index 00000000..4b7342ca --- /dev/null +++ b/package/c-ares/c-ares.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# c-ares +# +################################################################################ + +C_ARES_VERSION = 1.32.2 +C_ARES_SITE = https://github.com/c-ares/c-ares/releases/download/v1.32.2 +C_ARES_INSTALL_STAGING = YES +C_ARES_CONF_OPTS = --with-random=/dev/urandom +C_ARES_LICENSE = MIT +C_ARES_LICENSE_FILES = LICENSE.md +C_ARES_CPE_ID_VENDOR = c-ares + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/c-capnproto/Config.in b/package/c-capnproto/Config.in new file mode 100644 index 00000000..c472128c --- /dev/null +++ b/package/c-capnproto/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_C_CAPNPROTO + bool "c-capnproto" + depends on BR2_USE_MMU # capnproto + depends on BR2_HOST_GCC_AT_LEAST_5 # capnproto + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # capnproto + depends on BR2_INSTALL_LIBSTDCPP # capnproto + depends on BR2_TOOLCHAIN_HAS_THREADS # capnproto + depends on BR2_TOOLCHAIN_HAS_ATOMIC # capnproto + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # capnproto + depends on BR2_TOOLCHAIN_HAS_UCONTEXT # capnproto + select BR2_PACKAGE_CAPNPROTO + help + A C plugin for Cap'n Proto. Generates the code generator + plugin for C. Requires regular Cap'n Proto and only + provides serialization (no RPC). + + https://github.com/opensourcerouting/c-capnproto + +comment "c-capnproto needs host and target gcc >= 5 w/ C++14, threads, atomic, ucontext and not gcc bug 64735" + depends on BR2_USE_MMU + depends on !BR2_HOST_GCC_AT_LEAST_5 || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 || \ + !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HAS_ATOMIC || \ + BR2_TOOLCHAIN_HAS_GCC_BUG_64735 || \ + !BR2_TOOLCHAIN_HAS_UCONTEXT diff --git a/package/c-capnproto/c-capnproto.hash b/package/c-capnproto/c-capnproto.hash new file mode 100644 index 00000000..715f15c9 --- /dev/null +++ b/package/c-capnproto/c-capnproto.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 f5d52ff9c4ec522667090abc56ae99e7dd07532c2b9835d1b1b9fd23315c93cb c-capnproto-9053ebe6eeb2ae762655b982e27c341cb568366d-git4.tar.gz +sha256 27797e6c7dce96675d79ed250584d157b7a86405db6eb6fba9644e6d96d42c57 COPYING diff --git a/package/c-capnproto/c-capnproto.mk b/package/c-capnproto/c-capnproto.mk new file mode 100644 index 00000000..c144a4be --- /dev/null +++ b/package/c-capnproto/c-capnproto.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# c-capnproto +# +################################################################################ + +C_CAPNPROTO_VERSION = 9053ebe6eeb2ae762655b982e27c341cb568366d +C_CAPNPROTO_SITE = https://github.com/opensourcerouting/c-capnproto.git +C_CAPNPROTO_SITE_METHOD = git +C_CAPNPROTO_GIT_SUBMODULES = YES +C_CAPNPROTO_LICENSE = MIT +C_CAPNPROTO_LICENSE_FILES = COPYING +C_CAPNPROTO_INSTALL_STAGING = YES + +# Fetched from git with no configure script +C_CAPNPROTO_AUTORECONF = YES + +# As a plugin for capnproto's capnpc, requires capnproto. Needs to be on the +# host to generate C code from message definitions. +C_CAPNPROTO_DEPENDENCIES = host-c-capnproto capnproto +HOST_C_CAPNPROTO_DEPENDENCIES = host-capnproto + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/c-icap-modules/Config.in b/package/c-icap-modules/Config.in new file mode 100644 index 00000000..616456b4 --- /dev/null +++ b/package/c-icap-modules/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_C_ICAP_MODULES + bool "c-icap-modules" + depends on BR2_PACKAGE_C_ICAP + help + Additionals modules for c-icap server. + + http://c-icap.sourceforge.net/ diff --git a/package/c-icap-modules/c-icap-modules.hash b/package/c-icap-modules/c-icap-modules.hash new file mode 100644 index 00000000..110ffd4d --- /dev/null +++ b/package/c-icap-modules/c-icap-modules.hash @@ -0,0 +1,7 @@ +# From http://sourceforge.net/projects/c-icap/files/c-icap-modules/0.5.x/ +md5 ca6d5d124a4668d63affcaa5ab083e57 c_icap_modules-0.5.5.tar.gz +sha1 67be484a93fe662a7735ee06e1d34d82b54469a8 c_icap_modules-0.5.5.tar.gz + +# Locally calculated +sha256 6a42f1fdd8c35ad38d29f7d3c10f925471977f217086352e146cf95e45f2b5b5 c_icap_modules-0.5.5.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/c-icap-modules/c-icap-modules.mk b/package/c-icap-modules/c-icap-modules.mk new file mode 100644 index 00000000..e9bbbdb2 --- /dev/null +++ b/package/c-icap-modules/c-icap-modules.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# c-icap-modules +# +################################################################################ + +C_ICAP_MODULES_VERSION = 0.5.5 +C_ICAP_MODULES_SOURCE = c_icap_modules-$(C_ICAP_MODULES_VERSION).tar.gz +C_ICAP_MODULES_SITE = http://downloads.sourceforge.net/c-icap +C_ICAP_MODULES_LICENSE = GPL-2.0+ +C_ICAP_MODULES_LICENSE_FILES = COPYING +C_ICAP_MODULES_DEPENDENCIES = c-icap + +C_ICAP_MODULES_CONF_OPTS = \ + --with-c-icap=$(STAGING_DIR)/usr/ \ + --without-clamav + +ifeq ($(BR2_PACKAGE_BERKELEYDB),y) +C_ICAP_MODULES_CONF_OPTS += --with-bdb +C_ICAP_MODULES_DEPENDENCIES += berkeleydb +else +C_ICAP_MODULES_CONF_OPTS += --without-bdb +endif + +$(eval $(autotools-package)) diff --git a/package/c-icap/0001-Required-fixes-to-compile-and-run-under-cygwin.patch b/package/c-icap/0001-Required-fixes-to-compile-and-run-under-cygwin.patch new file mode 100644 index 00000000..6f886c9b --- /dev/null +++ b/package/c-icap/0001-Required-fixes-to-compile-and-run-under-cygwin.patch @@ -0,0 +1,391 @@ +From 1631a6c1f50e152b8a45d8279c96086e5636795b Mon Sep 17 00:00:00 2001 +From: Christos Tsantilas +Date: Fri, 25 Jan 2019 06:42:22 -0800 +Subject: [PATCH] Required fixes to compile and run under cygwin + +[Retrieved (and backported) from: +https://github.com/c-icap/c-icap-server/commit/1631a6c1f50e152b8a45d8279c96086e5636795b, +which has the side effect of fixing the build with the musl C library] +Signed-off-by: Fabrice Fontaine +--- + Makefile.am | 2 +- + configure.ac | 10 +++++++--- + header.c | 34 ---------------------------------- + include/header.h | 8 -------- + modules/Makefile.am | 34 ++++++++++++++++++++-------------- + modules/bdb_tables.c | 17 +++++++++++++++-- + modules/shared_cache.c | 12 ++++++++++++ + modules/sys_logger.c | 13 +++++++++++++ + services/echo/Makefile.am | 10 ++++++++-- + services/ex-206/Makefile.am | 10 ++++++++-- + utils/c-icap-mkbdb.c | 8 ++++---- + 11 files changed, 88 insertions(+), 70 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 4c34033..ab80f4f 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -53,7 +53,7 @@ c_icap_SOURCES = aserver.c request.c cfg_param.c \ + libicapapi_la_CFLAGS= $(INVISIBILITY_CFLAG) -I$(srcdir)/include/ -Iinclude/ @ZLIB_ADD_FLAG@ @OPENSSL_ADD_FLAG@ @BZLIB_ADD_FLAG@ @BROTLI_ADD_FLAG@ @PCRE_ADD_FLAG@ -DCI_BUILD_LIB + + libicapapi_la_LIBADD = @ZLIB_ADD_LDADD@ @BZLIB_ADD_LDADD@ @BROTLI_ADD_LDADD@ @PCRE_ADD_LDADD@ @DL_ADD_FLAG@ @THREADS_LDADD@ @OPENSSL_ADD_LDADD@ +-libicapapi_la_LDFLAGS= -shared -version-info @CICAPLIB_VERSION@ @THREADS_LDFLAGS@ ++libicapapi_la_LDFLAGS= -shared -version-info @CICAPLIB_VERSION@ @LIBS_LDFLAGS@ @THREADS_LDFLAGS@ + + export EXT_PROGRAMS_MKLIB = @ZLIB_LNDIR_LDADD@ @BZLIB_LNDIR_LDADD@ @BROTLI_LNDIR_LDADD@ @PCRE_LNDIR_LDADD@ @OPENSSL_LNDIR_LDADD@ + +diff --git a/configure.ac b/configure.ac +index 405571b..8059cb7 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -45,12 +45,14 @@ case "$host_os" in + CFLAGS="-D_REENTRANT $CFLAGS" + THREADS_LDADD="-lpthread" + THREADS_LDFLAGS="" ++ LIBS_LDFLAGS="" + ;; + solaris2.*) + CFLAGS="-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS $CFLAGS" + LIBS="-lsocket -lnsl -lrt $LIBS" + THREADS_LDADD="-lpthread" + THREADS_LDFLAGS="" ++ LIBS_LDFLAGS="" + ;; + freebsd5*) + ## If I understand how all those threading models works correctly +@@ -69,6 +71,7 @@ case "$host_os" in + CFLAGS="-pthread -D_THREAD_SAFE $CFLAGS" + THREADS_LDADD="-XCClinker -lc_r" + THREADS_LDFLAGS="" ++ LIBS_LDFLAGS="" + ## FreeBSD has pthreads rwlocks from version 3 (I think) + # AC_DEFINE(HAVE_PTHREADS_RWLOCK,1,[Define HAVE_PTHREADS_RWLOCK if pthreads library supports rwlocks]) + ## 1:1 threads +@@ -82,24 +85,28 @@ case "$host_os" in + CFLAGS="-D_THREAD_SAFE $CFLAGS" + THREADS_LDADD="-XCClinker -lthr" + THREADS_LDFLAGS="" ++ LIBS_LDFLAGS="" + ;; + + cygwin*) + CFLAGS="-D_REENTRANT $CFLAGS" + THREADS_LDADD="-lpthread" + THREADS_LDFLAGS=""; ++ LIBS_LDFLAGS="-no-undefined" + iscygwin="yes" + ;; + *) + CFLAGS="-D_REENTRANT $CFLAGS" + THREADS_LDADD="-lpthread" + THREADS_LDFLAGS="" ++ LIBS_LDFLAGS="" + ;; + esac + + TEST_LIBS="$TEST_LIBS $THREADS_LDADD" + AC_SUBST(THREADS_LDADD) + AC_SUBST(THREADS_LDFLAGS) ++AC_SUBST(LIBS_LDFLAGS) + + AC_DEFINE_UNQUOTED(C_ICAP_CONFIGURE_OPTIONS, "$ac_configure_args", + [configure command line used to configure c-icap]) +@@ -984,9 +991,6 @@ LIBS="$LIBS $EXTRALIBS" + + #Configure common flags + MODULES_LIBADD="" +-if test a"$iscygwin" != a; then +- MODULES_LIBADD="-L../../ -licapapi" +-fi + MODULES_CFLAGS="$INVISIBILITY_CFLAG -DCI_BUILD_MODULE" + AC_SUBST(MODULES_LIBADD) + AC_SUBST(MODULES_CFLAGS) +diff --git a/header.c b/header.c +index 807a2e0..266b958 100644 +--- a/header.c ++++ b/header.c +@@ -110,21 +110,6 @@ const struct ci_error_code ci_error_codes[] = { + {505, "Unsupported version"} /*ICAP version not supported by server. */ + }; + +-/* +-#ifdef __CYGWIN__ +-int ci_error_code(int ec){ +- return (ec >= EC_100 && ec < EC_MAX ? ci_error_codes[ec].code:1000); +-} +- +-const char *unknownerrorcode = "UNKNOWN ERROR CODE"; +- +-const char *ci_error_code_string(int ec){ +- return (ec >= EC_100 && ec < EC_MAX?ci_error_codes[ec].str:unknownerrorcode); +-} +-#endif +-*/ +- +- + const char *ci_encaps_entities[] = { + "req-hdr", + "res-hdr", +@@ -134,25 +119,6 @@ const char *ci_encaps_entities[] = { + "opt-body" + }; + +-#ifdef __CYGWIN__ +- +-const char *unknownentity = "UNKNOWN"; +-const char *unknownmethod = "UNKNOWN"; +- +-const char *ci_method_string(int method) +-{ +- return (method <= ICAP_RESPMOD +- && method >= ICAP_OPTIONS ? CI_Methods[method] : unknownmethod); +-} +- +- +-const char *ci_encaps_entity_string(int e) +-{ +- return (e <= ICAP_OPT_BODY +- && e >= ICAP_REQ_HDR ? CI_EncapsEntities[e] : unknownentity); +-} +-#endif +- + ci_headers_list_t *ci_headers_create() + { + ci_headers_list_t *h; +diff --git a/include/header.h b/include/header.h +index 4cab365..ed2de88 100644 +--- a/include/header.h ++++ b/include/header.h +@@ -52,16 +52,8 @@ enum ci_encapsulated_entities {ICAP_REQ_HDR, ICAP_RES_HDR, + }; + CI_DECLARE_DATA extern const char *ci_encaps_entities[]; + +-#ifdef __CYGWIN__ +- +-const char *ci_encaps_entity_string(int e); +- +-#else +- + #define ci_encaps_entity_string(e) (e <= ICAP_OPT_BODY && e >= ICAP_REQ_HDR?ci_encaps_entities[e]:"UNKNOWN") + +-#endif +- + /** + \typedef ci_headers_list_t + \ingroup HEADERS +diff --git a/modules/Makefile.am b/modules/Makefile.am +index e6e9270..2d43a60 100644 +--- a/modules/Makefile.am ++++ b/modules/Makefile.am +@@ -21,38 +21,44 @@ endif + + AM_CPPFLAGS=-I$(top_srcdir)/ -I$(top_srcdir)/include/ -I$(top_builddir)/include/ + +-sys_logger_la_LIBADD = @MODULES_LIBADD@ ++if ISCYGWIN ++MODS_LIB_ADD=$(top_builddir)/libicapapi.la ++else ++MODS_LIB_ADD= ++endif ++ ++sys_logger_la_LIBADD = $(MODS_LIB_ADD) + sys_logger_la_CFLAGS= @MODULES_CFLAGS@ @OPENSSL_ADD_FLAG@ +-sys_logger_la_LDFLAGS= -module -avoid-version ++sys_logger_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@ + sys_logger_la_SOURCES = sys_logger.c + +-dnsbl_tables_la_LIBADD = @MODULES_LIBADD@ ++dnsbl_tables_la_LIBADD = $(MODS_LIB_ADD) + dnsbl_tables_la_CFLAGS= @MODULES_CFLAGS@ @OPENSSL_ADD_FLAG@ +-dnsbl_tables_la_LDFLAGS= -module -avoid-version ++dnsbl_tables_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@ + dnsbl_tables_la_SOURCES = dnsbl_tables.c + +-perl_handler_la_LIBADD = @MODULES_LIBADD@ @perllib@ -L@perlcore@ -lperl ++perl_handler_la_LIBADD = $(MODS_LIB_ADD) @perllib@ -L@perlcore@ -lperl + perl_handler_la_CFLAGS= @MODULES_CFLAGS@ @perlccflags@ -I@perlcore@ +-perl_handler_la_LDFLAGS= -module -avoid-version @perlldflags@ ++perl_handler_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@ @perlldflags@ + perl_handler_la_SOURCES = perl_handler.c + + +-bdb_tables_la_LIBADD = @MODULES_LIBADD@ @BDB_ADD_LDADD@ ++bdb_tables_la_LIBADD = $(MODS_LIB_ADD) @BDB_ADD_LDADD@ + bdb_tables_la_CFLAGS= @MODULES_CFLAGS@ @BDB_ADD_FLAG@ +-bdb_tables_la_LDFLAGS= -module -avoid-version ++bdb_tables_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@ + bdb_tables_la_SOURCES = bdb_tables.c + +-ldap_module_la_LIBADD = @MODULES_LIBADD@ @LDAP_ADD_LDADD@ $(top_builddir)/libicapapi.la ++ldap_module_la_LIBADD = $(MODS_LIB_ADD) @LDAP_ADD_LDADD@ + ldap_module_la_CFLAGS= @MODULES_CFLAGS@ @LDAP_ADD_FLAG@ +-ldap_module_la_LDFLAGS= -module -avoid-version ++ldap_module_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@ + ldap_module_la_SOURCES = ldap_module.c + +-memcached_cache_la_LIBADD= @MODULES_LIBADD@ @MEMCACHED_ADD_LDADD@ ++memcached_cache_la_LIBADD= $(MODS_LIB_ADD) @MEMCACHED_ADD_LDADD@ + memcached_cache_la_CFLAGS= @MODULES_CFLAGS@ @MEMCACHED_ADD_FLAG@ +-memcached_cache_la_LDFLAGS= -module -avoid-version ++memcached_cache_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@ + memcached_cache_la_SOURCES= memcached.c + +-shared_cache_la_LIBADD= @MODULES_LIBADD@ ++shared_cache_la_LIBADD= $(MODS_LIB_ADD) + shared_cache_la_CFLAGS= @OPENSSL_ADD_FLAG@ +-shared_cache_la_LDFLAGS= -module -avoid-version ++shared_cache_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@ + shared_cache_la_SOURCES= shared_cache.c +diff --git a/modules/bdb_tables.c b/modules/bdb_tables.c +index b8459be..1e908a9 100644 +--- a/modules/bdb_tables.c ++++ b/modules/bdb_tables.c +@@ -176,8 +176,8 @@ void *bdb_table_open(struct ci_lookup_table *table) + + /*We can not fork a Berkeley DB table, so we have to + open bdb tables for every child, on childs start-up procedure*/ +- register_command_extend("openBDBtable", CHILD_START_CMD, table, +- command_real_open_table); ++ ci_command_register_action("openBDBtable", CHILD_START_CMD, table, ++ command_real_open_table); + + return table->data; + } +@@ -257,3 +257,16 @@ void bdb_table_release_result(struct ci_lookup_table *table,void **val) + { + ci_buffer_free(val); + } ++ ++ #ifdef __CYGWIN__ ++#include ++void ci_command_register_action(const char *name, int type, void *data, ++ void (*command_action) (const char *name, int type, void *data)) ++ { ++ typedef void (*RA)(const char *, int, void *, void(*)(const char *, int, void *)); ++ RA fn; ++ fn = (RA)GetProcAddress(GetModuleHandle(NULL), "ci_command_register_action"); ++ if (fn) ++ (*fn)(name, type, data, command_action); ++ } ++#endif +diff --git a/modules/shared_cache.c b/modules/shared_cache.c +index 103b760..a79d51a 100644 +--- a/modules/shared_cache.c ++++ b/modules/shared_cache.c +@@ -345,3 +345,15 @@ void ci_shared_cache_destroy(struct ci_cache *cache) + ci_shared_mem_detach(&data->id); + } + ++#ifdef __CYGWIN__ ++#include ++void ci_command_register_action(const char *name, int type, void *data, ++ void (*command_action) (const char *name, int type, void *data)) ++ { ++ typedef void (*RA)(const char *, int, void *, void(*)(const char *, int, void *)); ++ RA fn; ++ fn = (RA)GetProcAddress(GetModuleHandle(NULL), "ci_command_register_action"); ++ if (fn) ++ (*fn)(name, type, data, command_action); ++ } ++#endif +diff --git a/modules/sys_logger.c b/modules/sys_logger.c +index 1c47753..1764b0d 100644 +--- a/modules/sys_logger.c ++++ b/modules/sys_logger.c +@@ -60,7 +60,20 @@ int cfg_syslog_access(const char *directive, const char **argv, void *setdata); + functions declared in log.c. This file is not included in c-icap library + but defined in primary c-icap binary. + */ ++#ifdef __CYGWIN__ ++#include ++char *logformat_fmt(const char *name) ++{ ++ typedef char* (*LF_FMT)(const char *); ++ LF_FMT fn; ++ fn = (LF_FMT)GetProcAddress(GetModuleHandle(NULL), "logformat_fmt"); ++ if (fn) ++ return (*fn)(name); ++ return NULL; ++} ++#else + extern char *logformat_fmt(const char *name); ++#endif + + /*Configuration Table .....*/ + static struct ci_conf_entry conf_variables[] = { +diff --git a/services/echo/Makefile.am b/services/echo/Makefile.am +index 402c8f9..7d701b1 100644 +--- a/services/echo/Makefile.am ++++ b/services/echo/Makefile.am +@@ -3,9 +3,15 @@ pkglib_LTLIBRARIES=srv_echo.la + + AM_CPPFLAGS=-I$(top_srcdir)/ -I$(top_srcdir)/include/ -I$(top_builddir)/include/ + +-srv_echo_la_LIBADD = @MODULES_LIBADD@ ++if ISCYGWIN ++MODS_LIB_ADD=$(top_builddir)/libicapapi.la ++else ++MODS_LIB_ADD= ++endif ++ ++srv_echo_la_LIBADD = $(MODS_LIB_ADD) + srv_echo_la_CFLAGS= @MODULES_CFLAGS@ @OPENSSL_ADD_FLAG@ +-srv_echo_la_LDFLAGS= -module -avoid-version ++srv_echo_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@ + srv_echo_la_SOURCES = srv_echo.c + + +diff --git a/services/ex-206/Makefile.am b/services/ex-206/Makefile.am +index 44bbf21..ff73399 100644 +--- a/services/ex-206/Makefile.am ++++ b/services/ex-206/Makefile.am +@@ -3,8 +3,14 @@ pkglib_LTLIBRARIES=srv_ex206.la + + AM_CPPFLAGS=-I$(top_srcdir)/ -I$(top_srcdir)/include/ -I$(top_builddir)/include/ + +-srv_ex206_la_LIBADD = @MODULES_LIBADD@ ++if ISCYGWIN ++MODS_LIB_ADD=$(top_builddir)/libicapapi.la ++else ++MODS_LIB_ADD= ++endif ++ ++srv_ex206_la_LIBADD = $(MODS_LIB_ADD) + srv_ex206_la_CFLAGS= @MODULES_CFLAGS@ @OPENSSL_ADD_FLAG@ +-srv_ex206_la_LDFLAGS= -module -avoid-version ++srv_ex206_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@ + srv_ex206_la_SOURCES = srv_ex206.c + +diff --git a/utils/c-icap-mkbdb.c b/utils/c-icap-mkbdb.c +index c29a46f..326ee1c 100644 +--- a/utils/c-icap-mkbdb.c ++++ b/utils/c-icap-mkbdb.c +@@ -23,7 +23,7 @@ char *dbfile = NULL; + int DUMP_MODE = 0; + int VERSION_MODE = 0; + int USE_DBTREE = 0; +-long int PAGE_SIZE; ++long int DB_PAGE_SIZE; + + ci_mem_allocator_t *allocator = NULL; + int cfg_set_type(const char *directive, const char **argv, void *setdata); +@@ -52,7 +52,7 @@ static struct ci_options_entry options[] = { + "The type of values" + }, + { +- "-p", "page_size", &PAGE_SIZE, ci_cfg_size_long, ++ "-p", "page_size", &DB_PAGE_SIZE, ci_cfg_size_long, + "The page size to use for the database" + }, + { +@@ -107,8 +107,8 @@ int open_db(char *path) + return 0; + } + +- if (PAGE_SIZE > 512 && PAGE_SIZE <= 64*1024) +- db->set_pagesize(db, (uint32_t)PAGE_SIZE); ++ if (DB_PAGE_SIZE > 512 && DB_PAGE_SIZE <= 64*1024) ++ db->set_pagesize(db, (uint32_t)DB_PAGE_SIZE); + + if ((ret = db->open(db, NULL, path, NULL, + (USE_DBTREE ? DB_BTREE : DB_HASH), diff --git a/package/c-icap/Config.in b/package/c-icap/Config.in new file mode 100644 index 00000000..8f7963c2 --- /dev/null +++ b/package/c-icap/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_C_ICAP + bool "c-icap" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + help + c-icap is an implementation of an ICAP server. It can be + used with HTTP proxies that support the ICAP protocol to + implement content adaptation and filtering services. Most + of the commercial HTTP proxies must support the ICAP + protocol. The open source Squid 3.x proxy server supports + it. + + http://c-icap.sourceforge.net/ + +comment "c-icap needs a toolchain w/ threads and dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/c-icap/S96cicap b/package/c-icap/S96cicap new file mode 100644 index 00000000..7b95f860 --- /dev/null +++ b/package/c-icap/S96cicap @@ -0,0 +1,27 @@ +#!/bin/sh + +# (Re)create directories +mkdir -p /var/run/c-icap +mkdir -p /var/log/c-icap + +case "$1" in + start) + printf "Starting c-icap server: " + start-stop-daemon -S -q -b -m -p /var/run/c-icap.pid \ + -x /usr/bin/c-icap -- -N + [ $? == 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping c-icap server: " + start-stop-daemon -K -q -p /var/run/c-icap.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart|reload) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "Usage: /etc/init.d/S96cicap {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/c-icap/c-icap.hash b/package/c-icap/c-icap.hash new file mode 100644 index 00000000..9a596cf3 --- /dev/null +++ b/package/c-icap/c-icap.hash @@ -0,0 +1,6 @@ +# Retrieved from https://sourceforge.net/projects/c-icap/files/c-icap/0.5.x/ +md5 c8329684588a906d10a687e84ba4a478 c_icap-0.5.10.tar.gz +sha1 2901aa19c8c4b09b700164290942290c34132076 c_icap-0.5.10.tar.gz +# Locally calculated +sha256 541d503354907f06d1d72fa90fffd031002f0f4346150fb7b2203ad5825ae49d c_icap-0.5.10.tar.gz +sha256 36b6d3fa47916943fd5fec313c584784946047ec1337a78b440e5992cb595f89 COPYING diff --git a/package/c-icap/c-icap.mk b/package/c-icap/c-icap.mk new file mode 100644 index 00000000..36ef1c8b --- /dev/null +++ b/package/c-icap/c-icap.mk @@ -0,0 +1,102 @@ +################################################################################ +# +# c-icap +# +################################################################################ + +C_ICAP_VERSION = 0.5.10 +C_ICAP_SOURCE = c_icap-$(C_ICAP_VERSION).tar.gz +C_ICAP_SITE = http://downloads.sourceforge.net/c-icap +C_ICAP_LICENSE = LGPL-2.1+ +C_ICAP_LICENSE_FILES = COPYING +C_ICAP_CPE_ID_VALID = YES +C_ICAP_INSTALL_STAGING = YES +C_ICAP_CONFIG_SCRIPTS = c-icap-config c-icap-libicapapi-config +C_ICAP_CONF_OPTS = \ + --without-perl \ + --enable-large-files \ + --enable-ipv6 +# Pre-seed cache variables for tests done with AC_TRY_RUN that are not +# cross-compile friendly +C_ICAP_CONF_ENV = ac_cv_10031b_ipc_sem=yes ac_cv_fcntl=yes +# c-icap adds '-Wl,-rpath -Wl,/usr/lib' to the link command line. This +# causes the linker to search for libraries that are listed as NEEDED +# in the libicapapi.so ELF header in host libraries, which breaks the +# build. The affected library is libz. Forcing AUTORECONF adds -lz to +# the link command line, and that makes the linker look first in +# sysroot, thus avoiding the build breakage. +C_ICAP_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_BERKELEYDB),y) +C_ICAP_CONF_OPTS += --with-bdb +C_ICAP_DEPENDENCIES += berkeleydb +else +C_ICAP_CONF_OPTS += --without-bdb +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +C_ICAP_CONF_OPTS += --with-bzlib +C_ICAP_DEPENDENCIES += bzip2 +else +C_ICAP_CONF_OPTS += --without-bzlib +endif + +ifeq ($(BR2_PACKAGE_LIBMEMCACHED),y) +C_ICAP_CONF_OPTS += --with-memcached +C_ICAP_DEPENDENCIES += libmemcached +else +C_ICAP_CONF_OPTS += --without-memcached +endif + +ifeq ($(BR2_PACKAGE_OPENLDAP),y) +C_ICAP_CONF_OPTS += --with-ldap +C_ICAP_DEPENDENCIES += openldap +else +C_ICAP_CONF_OPTS += --without-ldap +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +C_ICAP_CONF_OPTS += --with-openssl +C_ICAP_DEPENDENCIES += openssl +else +C_ICAP_CONF_OPTS += --without-openssl +endif + +ifeq ($(BR2_PACKAGE_PCRE),y) +C_ICAP_CONF_OPTS += --with-pcre +C_ICAP_DEPENDENCIES += pcre +else +C_ICAP_CONF_OPTS += --without-pcre +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +C_ICAP_CONF_OPTS += --with-zlib +C_ICAP_DEPENDENCIES += zlib +else +C_ICAP_CONF_OPTS += --without-zlib +endif + +define C_ICAP_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/c-icap/S96cicap $(TARGET_DIR)/etc/init.d/S96cicap +endef + +# Tweak the installation: +# - Removed unneeded sample configuration files (c-icap.*.default), +# since some real ones are also installed +# - Tweak some paths in the c-icap.conf configuration file +# - Tweak the -config scripts, because the generic +# _CONFIG_SCRIPTS logic doesn't tweak them enough +define C_ICAP_TUNE_INSTALLATION + $(RM) -f $(TARGET_DIR)/etc/c-icap.*.default + $(SED) 's%/usr/etc/%/etc/%' $(TARGET_DIR)/etc/c-icap.conf + $(SED) 's%/usr/var/%/var/%' $(TARGET_DIR)/etc/c-icap.conf + $(SED) 's%INCDIR=.*%INCDIR=$(STAGING_DIR)/usr/include%' \ + $(STAGING_DIR)/usr/bin/{c-icap,c-icap-libicapapi}-config + $(SED) 's%INCDIR2=.*%INCDIR2=$(STAGING_DIR)/usr/include/c_icap%' \ + $(STAGING_DIR)/usr/bin/{c-icap,c-icap-libicapapi}-config + $(SED) 's%-L$$LIBDIR %%' $(STAGING_DIR)/usr/bin/c-icap-libicapapi-config +endef + +C_ICAP_POST_INSTALL_TARGET_HOOKS += C_ICAP_TUNE_INSTALLATION + +$(eval $(autotools-package)) diff --git a/package/c-periphery/Config.in b/package/c-periphery/Config.in new file mode 100644 index 00000000..0bfb4b1f --- /dev/null +++ b/package/c-periphery/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_C_PERIPHERY + bool "c-periphery" + help + c-periphery is a set of C wrapper functions for GPIO, SPI, + I2C, MMIO, and Serial peripheral I/O interface access in + userspace Linux. The c-periphery wrappers simplify and + consolidate the native Linux APIs to these + interfaces. c-periphery is useful in embedded Linux + environments (including BeagleBone, Raspberry Pi, + etc. platforms) for interfacing with external + peripherals. c-periphery is re-entrant, uses static + allocations, has no dependencies outside the standard C + library and Linux, compiles into a static library for easy + integration with other projects, and is MIT licensed. + + https://github.com/vsergeev/c-periphery diff --git a/package/c-periphery/c-periphery.hash b/package/c-periphery/c-periphery.hash new file mode 100644 index 00000000..f8f0654b --- /dev/null +++ b/package/c-periphery/c-periphery.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 24327bc2a22588444b2576fa1c9560619f6faad986c236c54f4b3f36b20dad56 c-periphery-2.4.2.tar.gz +sha256 2c29e38ac4d393558522c5fa671bd03f9d6f7d751c899a3482b20ab2a0ba5122 LICENSE diff --git a/package/c-periphery/c-periphery.mk b/package/c-periphery/c-periphery.mk new file mode 100644 index 00000000..e3745c4a --- /dev/null +++ b/package/c-periphery/c-periphery.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# c-periphery +# +################################################################################ + +C_PERIPHERY_VERSION = 2.4.2 +C_PERIPHERY_SITE = $(call github,vsergeev,c-periphery,v$(C_PERIPHERY_VERSION)) +C_PERIPHERY_INSTALL_STAGING = YES +C_PERIPHERY_LICENSE = MIT +C_PERIPHERY_LICENSE_FILES = LICENSE +C_PERIPHERY_CPE_ID_VALID = YES + +$(eval $(cmake-package)) diff --git a/package/ca-certificates/0001-mozilla-certdata2pem.py-make-cryptography-module-opt.patch b/package/ca-certificates/0001-mozilla-certdata2pem.py-make-cryptography-module-opt.patch new file mode 100644 index 00000000..ed90c217 --- /dev/null +++ b/package/ca-certificates/0001-mozilla-certdata2pem.py-make-cryptography-module-opt.patch @@ -0,0 +1,60 @@ +From a4e468a2a0afa80df174831c2f422184820bb0fa Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 6 Jan 2022 23:15:00 +0100 +Subject: [PATCH] mozilla/certdata2pem.py: make cryptography module optional + +The Python cryptography module is only used to verify if trusted +certificates have expired, but this is only a warning. For some build +systems and distributions, providing Python cryptography is costly, +especially since it's now partly written in Rust. + +As the check is only a warning, it's anyway going to be overlooked by +most people. This commit changes the check to be optional: if the +cryptography Python module is there, we perform the check, otherwise +the check is skipped. + +Signed-off-by: Thomas Petazzoni +[Steve: refreshed to apply on ca-certificates version 20230311] +Signed-off-by: Steve Hay +--- + mozilla/certdata2pem.py | 17 ++++++++++------- + 1 file changed, 10 insertions(+), 7 deletions(-) + +diff --git a/mozilla/certdata2pem.py b/mozilla/certdata2pem.py +index 4df86a2..3a6d7dc 100644 +--- a/mozilla/certdata2pem.py ++++ b/mozilla/certdata2pem.py +@@ -28,8 +28,6 @@ import sys + import textwrap + import io + +-from cryptography import x509 +- + + objects = [] + +@@ -122,11 +120,16 @@ for obj in objects: + if not obj['CKA_LABEL'] in trust or not trust[obj['CKA_LABEL']]: + continue + +- cert = x509.load_der_x509_certificate(bytes(obj['CKA_VALUE'])) +- if cert.not_valid_after < datetime.datetime.utcnow(): +- print('!'*74) +- print('Trusted but expired certificate found: %s' % obj['CKA_LABEL']) +- print('!'*74) ++ try: ++ from cryptography import x509 ++ ++ cert = x509.load_der_x509_certificate(bytes(obj['CKA_VALUE'])) ++ if cert.not_valid_after < datetime.datetime.utcnow(): ++ print('!'*74) ++ print('Trusted but expired certificate found: %s' % obj['CKA_LABEL']) ++ print('!'*74) ++ except ImportError: ++ pass + + bname = obj['CKA_LABEL'][1:-1].replace('/', '_')\ + .replace(' ', '_')\ +-- +2.30.2 + diff --git a/package/ca-certificates/Config.in b/package/ca-certificates/Config.in new file mode 100644 index 00000000..cd9825a8 --- /dev/null +++ b/package/ca-certificates/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_CA_CERTIFICATES + bool "CA Certificates" + help + This package includes PEM files of CA certificates to allow + SSL-based applications to check for the authenticity of SSL + connections. + + It includes, among others, certificate authorities used by the + Debian infrastructure and those shipped with Mozilla's + browsers. + + https://salsa.debian.org/debian/ca-certificates diff --git a/package/ca-certificates/ca-certificates.hash b/package/ca-certificates/ca-certificates.hash new file mode 100644 index 00000000..8a5b48dd --- /dev/null +++ b/package/ca-certificates/ca-certificates.hash @@ -0,0 +1,4 @@ +# hashes from: $(CA_CERTIFICATES_SITE)/ca-certificates_$(CA_CERTIFICATES_VERSION).dsc : +sha256 83de934afa186e279d1ed08ea0d73f5cf43a6fbfb5f00874b6db3711c64576f3 ca-certificates_20230311.tar.xz +# Locally computed +sha256 e85e1bcad3a915dc7e6f41412bc5bdeba275cadd817896ea0451f2140a93967c debian/copyright diff --git a/package/ca-certificates/ca-certificates.mk b/package/ca-certificates/ca-certificates.mk new file mode 100644 index 00000000..fe115209 --- /dev/null +++ b/package/ca-certificates/ca-certificates.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# ca-certificates +# +################################################################################ + +CA_CERTIFICATES_VERSION = 20230311 +CA_CERTIFICATES_SOURCE = ca-certificates_$(CA_CERTIFICATES_VERSION).tar.xz +CA_CERTIFICATES_SITE = https://snapshot.debian.org/archive/debian/20230317T205011Z/pool/main/c/ca-certificates +CA_CERTIFICATES_DEPENDENCIES = host-openssl host-python3 +CA_CERTIFICATES_LICENSE = GPL-2.0+ (script), MPL-2.0 (data) +CA_CERTIFICATES_LICENSE_FILES = debian/copyright + +define CA_CERTIFICATES_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) clean all +endef + +define CA_CERTIFICATES_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/share/ca-certificates + $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/ssl/certs + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install DESTDIR=$(TARGET_DIR) + rm -f $(TARGET_DIR)/usr/sbin/update-ca-certificates +endef + +define CA_CERTIFICATES_GEN_BUNDLE + # Remove any existing certificates under /etc/ssl/certs + rm -f $(TARGET_DIR)/etc/ssl/certs/* + + # Create symlinks to certificates under /etc/ssl/certs + # and generate the bundle + cd $(TARGET_DIR) ;\ + for i in `find usr/share/ca-certificates -name "*.crt" | LC_COLLATE=C sort` ; do \ + ln -sf ../../../$$i etc/ssl/certs/`basename $${i} .crt`.pem ;\ + cat $$i ;\ + done >$(BUILD_DIR)/ca-certificates.crt + + # Create symlinks to the certificates by their hash values + $(HOST_DIR)/bin/c_rehash $(TARGET_DIR)/etc/ssl/certs + + # Install the certificates bundle + $(INSTALL) -D -m 644 $(BUILD_DIR)/ca-certificates.crt \ + $(TARGET_DIR)/etc/ssl/certs/ca-certificates.crt +endef +CA_CERTIFICATES_TARGET_FINALIZE_HOOKS += CA_CERTIFICATES_GEN_BUNDLE + +$(eval $(generic-package)) diff --git a/package/cache-calibrator/0001-Fix-conflicting-round-function.patch b/package/cache-calibrator/0001-Fix-conflicting-round-function.patch new file mode 100644 index 00000000..71181a63 --- /dev/null +++ b/package/cache-calibrator/0001-Fix-conflicting-round-function.patch @@ -0,0 +1,108 @@ +From 39ac7268c4350040976005da98daf10edf676d3e Mon Sep 17 00:00:00 2001 +From: Stephan Hoffmann +Date: Mon, 28 Jan 2013 17:32:10 +0100 +Subject: [PATCH] Fix conflicting round() function + +calibrator.c defines a local round() function that conflicts +with the one from the standard library. + +This is fixed by renaming the local function. + +Signed-off-by: Stephan Hoffmann +--- + calibrator.c | 30 +++++++++++++++--------------- + 1 files changed, 15 insertions(+), 15 deletions(-) + +diff --git a/calibrator.c b/calibrator.c +index e045dfd..8471c04 100644 +--- a/calibrator.c ++++ b/calibrator.c +@@ -128,7 +128,7 @@ void ErrXit(char *format, ...) { + exit(1); + } + +-lng round(dbl x) ++lng lng_round(dbl x) + { + return (lng)(x + 0.5); + } +@@ -890,16 +890,16 @@ void plotCache(cacheInfo *cache, lng **result, lng MHz, char *fn, FILE *fp, lng + fprintf(fp, ")\n"); + fprintf(fp, "set y2tics"); + for (l = 0, s = " ("; l <= cache->levels; l++, s = ", ") { +- if (!delay) fprintf(fp, "%s'(%ld)' %f", s, round(CYperIt(cache->latency1[l] - delay)), NSperIt(cache->latency1[l] - delay)); +- else fprintf(fp, "%s'(%ld)' %f", s, round(CYperIt(cache->latency2[l] - delay)), NSperIt(cache->latency2[l] - delay)); ++ if (!delay) fprintf(fp, "%s'(%ld)' %f", s, lng_round(CYperIt(cache->latency1[l] - delay)), NSperIt(cache->latency1[l] - delay)); ++ else fprintf(fp, "%s'(%ld)' %f", s, lng_round(CYperIt(cache->latency2[l] - delay)), NSperIt(cache->latency2[l] - delay)); + } + for (y = 1; y <= yh; y *= 10) { + fprintf(fp, "%s'%1.3g' %ld", s, (dbl)(y * MHz) / 1000.0, y); + } + fprintf(fp, ")\n"); + for (l = 0; l <= cache->levels; l++) { +- if (!delay) z = (dbl)round(CYperIt(cache->latency1[l] - delay)) * 1000.0 / (dbl)MHz; +- else z = (dbl)round(CYperIt(cache->latency2[l] - delay)) * 1000.0 / (dbl)MHz; ++ if (!delay) z = (dbl)lng_round(CYperIt(cache->latency1[l] - delay)) * 1000.0 / (dbl)MHz; ++ else z = (dbl)lng_round(CYperIt(cache->latency2[l] - delay)) * 1000.0 / (dbl)MHz; + fprintf(fp, "set label %ld '(%1.3g) ' at %f,%f right\n", l + 1, z, xl, z); + fprintf(fp, "set arrow %ld from %f,%f to %f,%f nohead lt 0\n", l + 1, xl, z, xh, z); + } +@@ -986,16 +986,16 @@ void plotTLB(TLBinfo *TLB, lng **result, lng MHz, char *fn, FILE *fp, lng delay) + fprintf(fp, "%s'' %ld)\n", s, TLB->mincachelines); + fprintf(fp, "set y2tics"); + for (l = 0, s = " ("; l <= TLB->levels; l++, s = ", ") { +- if (!delay) fprintf(fp, "%s'(%ld)' %f", s, round(CYperIt(TLB->latency1[l] - delay)), NSperIt(TLB->latency1[l] - delay)); +- else fprintf(fp, "%s'(%ld)' %f", s, round(CYperIt(TLB->latency2[l] - delay)), NSperIt(TLB->latency2[l] - delay)); ++ if (!delay) fprintf(fp, "%s'(%ld)' %f", s, lng_round(CYperIt(TLB->latency1[l] - delay)), NSperIt(TLB->latency1[l] - delay)); ++ else fprintf(fp, "%s'(%ld)' %f", s, lng_round(CYperIt(TLB->latency2[l] - delay)), NSperIt(TLB->latency2[l] - delay)); + } + for (y = 1; y <= yh; y *= 10) { + fprintf(fp, "%s'%1.3g' %ld", s, (dbl)(y * MHz) / 1000.0, y); + } + fprintf(fp, ")\n"); + for (l = 0; l <= TLB->levels; l++) { +- if (!delay) z = (dbl)round(CYperIt(TLB->latency1[l] - delay)) * 1000.0 / (dbl)MHz; +- else z = (dbl)round(CYperIt(TLB->latency2[l] - delay)) * 1000.0 / (dbl)MHz; ++ if (!delay) z = (dbl)lng_round(CYperIt(TLB->latency1[l] - delay)) * 1000.0 / (dbl)MHz; ++ else z = (dbl)lng_round(CYperIt(TLB->latency2[l] - delay)) * 1000.0 / (dbl)MHz; + fprintf(fp, "set label %ld '(%1.3g) ' at %f,%f right\n", l + 1, z, xl, z); + fprintf(fp, "set arrow %ld from %f,%f to %f,%f nohead lt 0\n", l + 1, xl, z, xh, z); + } +@@ -1023,9 +1023,9 @@ void printCPU(cacheInfo *cache, lng MHz, lng delay) + FILE *fp = stdout; + + fprintf(fp, "CPU loop + L1 access: "); +- fprintf(fp, " %6.2f ns = %3ld cy\n", NSperIt(cache->latency1[0]), round(CYperIt(cache->latency1[0]))); ++ fprintf(fp, " %6.2f ns = %3ld cy\n", NSperIt(cache->latency1[0]), lng_round(CYperIt(cache->latency1[0]))); + fprintf(fp, " ( delay: "); +- fprintf(fp, " %6.2f ns = %3ld cy )\n", NSperIt(delay), round(CYperIt(delay))); ++ fprintf(fp, " %6.2f ns = %3ld cy )\n", NSperIt(delay), lng_round(CYperIt(delay))); + fprintf(fp, "\n"); + fflush(fp); + } +@@ -1047,8 +1047,8 @@ void printCache(cacheInfo *cache, lng MHz) + fprintf(fp, " %3ld KB ", cache->size[l] / 1024); + } + fprintf(fp, " %3ld bytes ", cache->linesize[l + 1]); +- fprintf(fp, " %6.2f ns = %3ld cy " , NSperIt(cache->latency2[l + 1] - cache->latency2[l]), round(CYperIt(cache->latency2[l + 1] - cache->latency2[l]))); +- fprintf(fp, " %6.2f ns = %3ld cy\n", NSperIt(cache->latency1[l + 1] - cache->latency1[l]), round(CYperIt(cache->latency1[l + 1] - cache->latency1[l]))); ++ fprintf(fp, " %6.2f ns = %3ld cy " , NSperIt(cache->latency2[l + 1] - cache->latency2[l]), lng_round(CYperIt(cache->latency2[l + 1] - cache->latency2[l]))); ++ fprintf(fp, " %6.2f ns = %3ld cy\n", NSperIt(cache->latency1[l + 1] - cache->latency1[l]), lng_round(CYperIt(cache->latency1[l + 1] - cache->latency1[l]))); + } + fprintf(fp, "\n"); + fflush(fp); +@@ -1075,9 +1075,9 @@ void printTLB(TLBinfo *TLB, lng MHz) + } else { + fprintf(fp, " %3ld KB ", TLB->pagesize[l + 1] / 1024); + } +- fprintf(fp, " %6.2f ns = %3ld cy ", NSperIt(TLB->latency2[l + 1] - TLB->latency2[l]), round(CYperIt(TLB->latency2[l + 1] - TLB->latency2[l]))); ++ fprintf(fp, " %6.2f ns = %3ld cy ", NSperIt(TLB->latency2[l + 1] - TLB->latency2[l]), lng_round(CYperIt(TLB->latency2[l + 1] - TLB->latency2[l]))); + /* +- fprintf(fp, " %6.2f ns = %3ld cy" , NSperIt(TLB->latency1[l + 1] - TLB->latency1[l]), round(CYperIt(TLB->latency1[l + 1] - TLB->latency1[l]))); ++ fprintf(fp, " %6.2f ns = %3ld cy" , NSperIt(TLB->latency1[l + 1] - TLB->latency1[l]), lng_round(CYperIt(TLB->latency1[l + 1] - TLB->latency1[l]))); + */ + fprintf(fp, "\n"); + } +-- +1.7.0.4 + diff --git a/package/cache-calibrator/0002-Fix-build-failure-due-to-getpagesize-implicit-declar.patch b/package/cache-calibrator/0002-Fix-build-failure-due-to-getpagesize-implicit-declar.patch new file mode 100644 index 00000000..fcad6694 --- /dev/null +++ b/package/cache-calibrator/0002-Fix-build-failure-due-to-getpagesize-implicit-declar.patch @@ -0,0 +1,33 @@ +From 29c4e0038b212e953cc59ac8b31d4541db758a3d Mon Sep 17 00:00:00 2001 +From: Dario Binacchi +Date: Tue, 3 Sep 2024 17:43:44 +0200 +Subject: [PATCH] Fix build failure due to getpagesize implicit declaration + +The patch fixes the following build error: + +calibrator.c: In function 'runCache': +calibrator.c:267:24: error: implicit declaration of function 'getpagesize' [-Wimplicit-function-declaration] + +Signed-off-by: Dario Binacchi +Upstream: sent to Stefan Manegold Stefan.Manegold@cwi.nl +--- + calibrator.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/calibrator.c b/calibrator.c +index e045dfdcb96b..fd2fadb26020 100644 +--- a/calibrator.c ++++ b/calibrator.c +@@ -37,9 +37,7 @@ + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +-/* + #include +-*/ + #include + #include + #include +-- +2.43.0 + diff --git a/package/cache-calibrator/Config.in b/package/cache-calibrator/Config.in new file mode 100644 index 00000000..db780e9f --- /dev/null +++ b/package/cache-calibrator/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_CACHE_CALIBRATOR + bool "cache-calibrator" + help + Cache calibrator is a small C program that is supposed to + analyze a computers (cache-) memory system and extract + useful information + + http://homepages.cwi.nl/~manegold/Calibrator/ + + It is also recommended as a load generator for realtime + testing in: + + https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO diff --git a/package/cache-calibrator/cache-calibrator.hash b/package/cache-calibrator/cache-calibrator.hash new file mode 100644 index 00000000..cd6c63d0 --- /dev/null +++ b/package/cache-calibrator/cache-calibrator.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2018ed8fa733155d44ceb1c0066c5cf8df7771cdf7cfca0a07b8dd9bebd9c221 calibrator.c +sha256 a853663f5b4fb3ad77bf2790ab53146f456b8d9b9ddf83b99fe28c0bdec42514 calibrator.c.license diff --git a/package/cache-calibrator/cache-calibrator.mk b/package/cache-calibrator/cache-calibrator.mk new file mode 100644 index 00000000..203732e4 --- /dev/null +++ b/package/cache-calibrator/cache-calibrator.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# cache-calibrator +# +################################################################################ + +CACHE_CALIBRATOR_SOURCE = calibrator.c +CACHE_CALIBRATOR_SITE = http://homepages.cwi.nl/~manegold/Calibrator/src +CACHE_CALIBRATOR_LICENSE = Cache calibrator license +CACHE_CALIBRATOR_LICENSE_FILES = calibrator.c.license + +define CACHE_CALIBRATOR_EXTRACT_CMDS + cp $(CACHE_CALIBRATOR_DL_DIR)/$(CACHE_CALIBRATOR_SOURCE) $(@D) +endef + +define CACHE_CALIBRATOR_EXTRACT_LICENSE + head -n 38 $(@D)/calibrator.c >$(@D)/calibrator.c.license +endef +CACHE_CALIBRATOR_PRE_PATCH_HOOKS += CACHE_CALIBRATOR_EXTRACT_LICENSE + +define CACHE_CALIBRATOR_BUILD_CMDS + $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) $(@D)/calibrator.c -o $(@D)/cache_calibrator -lm +endef + +define CACHE_CALIBRATOR_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/cache_calibrator $(TARGET_DIR)/usr/bin/cache_calibrator +endef + +$(eval $(generic-package)) diff --git a/package/cage/Config.in b/package/cage/Config.in new file mode 100644 index 00000000..4f823c76 --- /dev/null +++ b/package/cage/Config.in @@ -0,0 +1,22 @@ +comment "cage needs udev, EGL and OpenGL ES support" + depends on !BR2_PACKAGE_HAS_LIBEGL || \ + !BR2_PACKAGE_HAS_LIBGLES || \ + !BR2_PACKAGE_HAS_UDEV + +comment "cage needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS + +config BR2_PACKAGE_CAGE + bool "cage" + depends on !BR2_STATIC_LIBS # wlroots + depends on BR2_TOOLCHAIN_HAS_THREADS # wlroots + depends on BR2_PACKAGE_HAS_LIBEGL # wlroots + depends on BR2_PACKAGE_HAS_LIBGLES # wlroots + depends on BR2_PACKAGE_HAS_UDEV # wlroots + select BR2_PACKAGE_WLROOTS + help + Kiosk compositor for Wayland, which displays a single + maximized application at a time. + + https://www.hjdskes.nl/projects/cage/ diff --git a/package/cage/cage.hash b/package/cage/cage.hash new file mode 100644 index 00000000..d5517bd9 --- /dev/null +++ b/package/cage/cage.hash @@ -0,0 +1,5 @@ +# Generated locally after checking GPG signature from https://github.com/cage-kiosk/cage/releases/download/v0.1.5/cage-0.1.5.tar.gz.sig +sha256 ece0312e559289df0238289ea6c60e9fed32d27fe3ae8a8f83eeff26ddc239e1 cage-0.1.5.tar.gz + +# Hashes for license files: +sha256 e117104073335dbaf78596fb1bedf89dda63c71f60f0b665947b2d369c77ecee LICENSE diff --git a/package/cage/cage.mk b/package/cage/cage.mk new file mode 100644 index 00000000..119950bc --- /dev/null +++ b/package/cage/cage.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# cage +# +################################################################################ + +CAGE_VERSION = 0.1.5 +CAGE_SITE = https://github.com/Hjdskes/cage/releases/download/v$(CAGE_VERSION) +CAGE_LICENSE = MIT +CAGE_LICENSE_FILES = LICENSE +CAGE_DEPENDENCIES = host-pkgconf wlroots +CAGE_CONF_OPTS = -Dman-pages=disabled + +ifeq ($(BR2_PACKAGE_WLROOTS_X11),y) +CAGE_CONF_OPTS += -Dxwayland=true +else +CAGE_CONF_OPTS += -Dxwayland=false +endif + +$(eval $(meson-package)) diff --git a/package/cairo/0001-cairo-ft-private.h-fix-missing-FT_Color-error.patch b/package/cairo/0001-cairo-ft-private.h-fix-missing-FT_Color-error.patch new file mode 100644 index 00000000..3b18d807 --- /dev/null +++ b/package/cairo/0001-cairo-ft-private.h-fix-missing-FT_Color-error.patch @@ -0,0 +1,32 @@ +From da698db0c20507f0e07492cbe40dbaf1c9053f71 Mon Sep 17 00:00:00 2001 +From: Thomas Devoogdt +Date: Sun, 12 Nov 2023 09:58:05 +0100 +Subject: [PATCH] cairo-ft-private.h: fix missing FT_Color error + +In file included from ../src/cairo-colr-glyph-render.c:37: +../src/cairo-ft-private.h:87:30: error: unknown type name 'FT_Color' + 87 | FT_Color *palette, + | ^~~~~~~~ + +Upstream: https://gitlab.freedesktop.org/cairo/cairo/-/issues/792 +Signed-off-by: Thomas Devoogdt +--- + src/cairo-ft-private.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/cairo-ft-private.h b/src/cairo-ft-private.h +index 836f7e523..6b0e30223 100644 +--- a/src/cairo-ft-private.h ++++ b/src/cairo-ft-private.h +@@ -43,6 +43,8 @@ + + #if CAIRO_HAS_FT_FONT + ++#include FT_COLOR_H ++ + CAIRO_BEGIN_DECLS + + typedef struct _cairo_ft_unscaled_font cairo_ft_unscaled_font_t; +-- +2.34.1 + diff --git a/package/cairo/0002-meson-always-skip-IPC_RMID_DEFERRED_RELEASE-check-wh.patch b/package/cairo/0002-meson-always-skip-IPC_RMID_DEFERRED_RELEASE-check-wh.patch new file mode 100644 index 00000000..5a5c438a --- /dev/null +++ b/package/cairo/0002-meson-always-skip-IPC_RMID_DEFERRED_RELEASE-check-wh.patch @@ -0,0 +1,41 @@ +From 8d5037ed642b02cdb018e49866aa286f30a7b59a Mon Sep 17 00:00:00 2001 +From: Thomas Devoogdt +Date: Mon, 5 Feb 2024 17:47:07 +0100 +Subject: [PATCH] meson: always skip IPC_RMID_DEFERRED_RELEASE check when + cross-compiling + +../../br-test-pkg/bootlin-armv5-uclibc/build/cairo-1.17.4/meson.build:279:13: +ERROR: Can not run test applications in this cross environment. + +Commit 1bec56ea8a931e1ae1c74cc740134497ec365267 added support to define +ipc_rmid_deferred_release in a cross-compile config, but still kept +the default to auto, which anyhow results in an error when cross-compiling. + +There is only one usage of the ipc_rmid_deferred_release compile declarative +which was originally added in this commit: 5041b462d084de8552336275914d30c23bf5dd35. + +If ipc_rmid_deferred_release is set to FALSE, an additional XSync is performed. +This doesn't sound very harmful, so that is why this commit defaults to FALSE +and thus avoids any cross-compile errors. + +Upstream: https://gitlab.freedesktop.org/cairo/cairo/-/merge_requests/534 +Signed-off-by: Thomas Devoogdt +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 9efe91978..6a670bf94 100644 +--- a/meson.build ++++ b/meson.build +@@ -369,7 +369,7 @@ if x11_dep.found() and xext_dep.found() + + # Can skip the run check by providing the result in a cross file or + # native file as bool property value. +- prop = meson.get_external_property('ipc_rmid_deferred_release', 'auto') ++ prop = meson.get_external_property('ipc_rmid_deferred_release', meson.is_cross_build() ? 'false' : 'auto') + # We don't know the type of prop (bool, string) but need to differentiate + # between a set value (bool) or the fallback value (string), so convert to + # a string and check the string value. +-- +2.34.1 diff --git a/package/cairo/0003-meson-only-require-cpp-for-windows.patch b/package/cairo/0003-meson-only-require-cpp-for-windows.patch new file mode 100644 index 00000000..3ce396f6 --- /dev/null +++ b/package/cairo/0003-meson-only-require-cpp-for-windows.patch @@ -0,0 +1,38 @@ +From e93ef3feb69994e3aa4e0ab66ccd66139b097e49 Mon Sep 17 00:00:00 2001 +From: Thomas Devoogdt +Date: Thu, 18 Jul 2024 12:16:51 +0200 +Subject: [PATCH] meson: only require cpp for windows + +Allow to compile cairo without c++ toolchain. + +Fixes: + - http://autobuild.buildroot.net/results/98b62ab7ed3092f9f9085f723baf7d6267451e5c/ + +Upstream: https://gitlab.freedesktop.org/cairo/cairo/-/merge_requests/573 +Signed-off-by: Thomas Devoogdt +--- + meson.build | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 9100152ee..297482b03 100644 +--- a/meson.build ++++ b/meson.build +@@ -1,4 +1,4 @@ +-project('cairo', 'c', 'cpp', ++project('cairo', 'c', + meson_version: '>= 0.59.0', + version: run_command(find_program('version.py'), check: true).stdout().strip(), + default_options: ['warning_level=2'], +@@ -489,6 +489,8 @@ if host_machine.system() == 'darwin' and not get_option('quartz').disabled() + endif + + if host_machine.system() == 'windows' ++ add_languages('cpp') ++ + add_project_arguments('-DWIN32_LEAN_AND_MEAN', '-DNOMINMAX', language: ['c', 'cpp']) + + win32_extra_deps = [ +-- +2.45.2 + diff --git a/package/cairo/Config.in b/package/cairo/Config.in new file mode 100644 index 00000000..c41a12fe --- /dev/null +++ b/package/cairo/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_CAIRO + bool "cairo" + select BR2_PACKAGE_PIXMAN + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXRENDER if BR2_PACKAGE_XORG7 + help + Cairo is a 2D graphics library with support for multiple + output devices. Currently supported output targets include + the X Window System, Win32, image buffers, and PostScript, + PDF, and SVG file output. Experimental backends include + OpenGL (through glitz), Quartz, and XCB. + + http://cairographics.org/ + +if BR2_PACKAGE_CAIRO + +config BR2_PACKAGE_CAIRO_PNG + bool "png support (png and svg surfaces)" + select BR2_PACKAGE_LIBPNG + +config BR2_PACKAGE_CAIRO_TEE + bool "tee support" + +config BR2_PACKAGE_CAIRO_ZLIB + bool "zlib support (script, ps, pdf, and xml surfaces)" + select BR2_PACKAGE_ZLIB + +endif diff --git a/package/cairo/cairo.hash b/package/cairo/cairo.hash new file mode 100644 index 00000000..df9c693b --- /dev/null +++ b/package/cairo/cairo.hash @@ -0,0 +1,7 @@ +# From https://www.cairographics.org/releases/cairo-1.18.0.tar.xz.sha256sum +sha256 243a0736b978a33dee29f9cca7521733b78a65b5418206fef7bd1c3d4cf10b64 cairo-1.18.0.tar.xz + +# Hash for license files: +sha256 67228a9f7c5f9b67c58f556f1be178f62da4d9e2e6285318d8c74d567255abdf COPYING +sha256 9e9e8608c4cdda51a78cc3a385f4ec9a2e4c96d5ecad74ac8bca5fca3e563b7d COPYING-LGPL-2.1 +sha256 53692a2ed6c6a2c6ec9b32dd0b820dfae91e0a1fcdf625ca9ed0bdf8705fcc4f COPYING-MPL-1.1 diff --git a/package/cairo/cairo.mk b/package/cairo/cairo.mk new file mode 100644 index 00000000..ba25620f --- /dev/null +++ b/package/cairo/cairo.mk @@ -0,0 +1,119 @@ +################################################################################ +# +# cairo +# +################################################################################ + +CAIRO_VERSION = 1.18.0 +CAIRO_SOURCE = cairo-$(CAIRO_VERSION).tar.xz +CAIRO_LICENSE = LGPL-2.1 or MPL-1.1 (library) +CAIRO_LICENSE_FILES = COPYING COPYING-LGPL-2.1 COPYING-MPL-1.1 +CAIRO_CPE_ID_VENDOR = cairographics +CAIRO_SITE = http://cairographics.org/releases +CAIRO_INSTALL_STAGING = YES + +CAIRO_CFLAGS = $(TARGET_CFLAGS) +CAIRO_LDFLAGS = $(TARGET_LDFLAGS) + +# relocation truncated to fit: R_68K_GOT16O +ifeq ($(BR2_m68k_cf),y) +CAIRO_CFLAGS += -mxgot +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),) +CAIRO_CFLAGS += -DCAIRO_NO_MUTEX=1 +endif + +# cairo can use C++11 atomics when available, so we need to link with +# libatomic for the architectures who need libatomic. +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +CAIRO_LDFLAGS += -latomic +endif + +CAIRO_CONF_OPTS = \ + -Ddwrite=disabled \ + -Dfontconfig=enabled \ + -Dquartz=disabled \ + -Dtests=disabled \ + -Dspectre=disabled \ + -Dsymbol-lookup=disabled \ + -Dgtk_doc=false \ + -Dc_std=gnu11 +CAIRO_DEPENDENCIES = \ + host-pkgconf \ + fontconfig \ + pixman + +# Just the bare minimum to make other host-* packages happy +HOST_CAIRO_CONF_OPTS = \ + -Ddwrite=disabled \ + -Dfontconfig=enabled \ + -Dfreetype=enabled \ + -Dpng=enabled \ + -Dquartz=disabled \ + -Dtee=disabled \ + -Dxcb=disabled \ + -Dxlib=disabled \ + -Dzlib=enabled \ + -Dtests=disabled \ + -Dglib=enabled \ + -Dspectre=disabled \ + -Dsymbol-lookup=disabled \ + -Dgtk_doc=false \ + -Dc_std=gnu11 +HOST_CAIRO_DEPENDENCIES = \ + host-freetype \ + host-fontconfig \ + host-libglib2 \ + host-libpng \ + host-pixman \ + host-pkgconf \ + host-zlib + +ifeq ($(BR2_PACKAGE_LZO),y) +CAIRO_DEPENDENCIES += lzo +endif + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +CAIRO_CONF_OPTS += -Dfreetype=enabled +CAIRO_DEPENDENCIES += freetype +else +CAIRO_CONF_OPTS += -Dfreetype=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +CAIRO_CONF_OPTS += -Dglib=enabled +CAIRO_DEPENDENCIES += libglib2 +else +CAIRO_CONF_OPTS += -Dglib=disabled +endif + +ifeq ($(BR2_PACKAGE_XORG7),y) +CAIRO_CONF_OPTS += -Dxcb=enabled -Dxlib=enabled -Dxlib-xcb=enabled +CAIRO_DEPENDENCIES += xlib_libX11 xlib_libXext xlib_libXrender +else +CAIRO_CONF_OPTS += -Dxcb=disabled -Dxlib=disabled -Dxlib-xcb=disabled +endif + +ifeq ($(BR2_PACKAGE_CAIRO_PNG),y) +CAIRO_CONF_OPTS += -Dpng=enabled +CAIRO_DEPENDENCIES += libpng +else +CAIRO_CONF_OPTS += -Dpng=disabled +endif + +ifeq ($(BR2_PACKAGE_CAIRO_TEE),y) +CAIRO_CONF_OPTS += -Dtee=enabled +else +CAIRO_CONF_OPTS += -Dtee=disabled +endif + +ifeq ($(BR2_PACKAGE_CAIRO_ZLIB),y) +CAIRO_CONF_OPTS += -Dzlib=enabled +CAIRO_DEPENDENCIES += zlib +else +CAIRO_CONF_OPTS += -Dzlib=disabled +endif + +$(eval $(meson-package)) +$(eval $(host-meson-package)) diff --git a/package/cairomm/Config.in b/package/cairomm/Config.in new file mode 100644 index 00000000..174f3967 --- /dev/null +++ b/package/cairomm/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_CAIROMM + bool "cairomm (latest)" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # libsigc + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_USE_MMU # libglib2 + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBSIGC + help + The cairomm package is a set of C++ bindings for Cairo. + + https://www.cairographics.org/cairomm/ + +comment "cairomm needs a toolchain w/ C++, wchar, threads, gcc >= 7" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP diff --git a/package/cairomm/cairomm.hash b/package/cairomm/cairomm.hash new file mode 100644 index 00000000..254413af --- /dev/null +++ b/package/cairomm/cairomm.hash @@ -0,0 +1,6 @@ +# From https://www.cairographics.org/releases/cairomm-1.16.2.tar.xz.sha1 +sha1 c24339d5962e2bcbbea85b2fc66347e71fd3db8c cairomm-1.16.2.tar.xz + +# Locally computed +sha256 6a63bf98a97dda2b0f55e34d1b5f3fb909ef8b70f9b8d382cb1ff3978e7dc13f cairomm-1.16.2.tar.xz +sha256 bfe4a52dc4645385f356a8e83cc54216a293e3b6f1cb4f79f5fc0277abf937fd COPYING diff --git a/package/cairomm/cairomm.mk b/package/cairomm/cairomm.mk new file mode 100644 index 00000000..57151287 --- /dev/null +++ b/package/cairomm/cairomm.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# cairomm +# +################################################################################ + +CAIROMM_VERSION = 1.16.2 +CAIROMM_LICENSE = LGPL-2.0+ +CAIROMM_LICENSE_FILES = COPYING +CAIROMM_SOURCE = cairomm-$(CAIROMM_VERSION).tar.xz +CAIROMM_SITE = https://cairographics.org/releases +CAIROMM_INSTALL_STAGING = YES +CAIROMM_DEPENDENCIES = cairo libglib2 libsigc host-pkgconf +CAIROMM_CONF_OPTS = -Dbuild-examples=false -Dbuild-tests=false + +$(eval $(meson-package)) diff --git a/package/cairomm1_14/Config.in b/package/cairomm1_14/Config.in new file mode 100644 index 00000000..e369aa6f --- /dev/null +++ b/package/cairomm1_14/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_CAIROMM1_14 + bool "cairomm (1.14.x)" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_USE_MMU # libglib2 + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBSIGC2 + help + The cairomm package is a set of C++ bindings for Cairo. + + This is the last version before the API and ABI change + introduced in 1.16.0 which requires C++17. + + https://www.cairographics.org/cairomm/ + +comment "cairomm (1.14.x) needs a toolchain w/ C++, wchar, threads, gcc >= 4.9" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP diff --git a/package/cairomm1_14/cairomm1_14.hash b/package/cairomm1_14/cairomm1_14.hash new file mode 100644 index 00000000..6d58de36 --- /dev/null +++ b/package/cairomm1_14/cairomm1_14.hash @@ -0,0 +1,6 @@ +# From https://www.cairographics.org/releases/cairomm-1.14.4.tar.xz.sha1 +sha1 a58419bb9792a2c998631704ce5671c38e0c82a1 cairomm-1.14.4.tar.xz + +# Locally computed +sha256 4749d25a2b2ef67cc0c014caaf5c87fa46792fc4b3ede186fb0fc932d2055158 cairomm-1.14.4.tar.xz +sha256 bfe4a52dc4645385f356a8e83cc54216a293e3b6f1cb4f79f5fc0277abf937fd COPYING diff --git a/package/cairomm1_14/cairomm1_14.mk b/package/cairomm1_14/cairomm1_14.mk new file mode 100644 index 00000000..6502d34c --- /dev/null +++ b/package/cairomm1_14/cairomm1_14.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# cairomm1_14 +# +################################################################################ + +CAIROMM1_14_VERSION = 1.14.4 +CAIROMM1_14_LICENSE = LGPL-2.0+ +CAIROMM1_14_LICENSE_FILES = COPYING +CAIROMM1_14_SOURCE = cairomm-$(CAIROMM1_14_VERSION).tar.xz +CAIROMM1_14_SITE = https://cairographics.org/releases +CAIROMM1_14_INSTALL_STAGING = YES +CAIROMM1_14_DEPENDENCIES = cairo libglib2 libsigc2 host-pkgconf +CAIROMM1_14_CONF_OPTS = -Dbuild-examples=false -Dbuild-tests=false + +$(eval $(meson-package)) diff --git a/package/can-utils/0001-Don-t-compile-programs-using-fork-on-MMU-less-system.patch b/package/can-utils/0001-Don-t-compile-programs-using-fork-on-MMU-less-system.patch new file mode 100644 index 00000000..57f93b18 --- /dev/null +++ b/package/can-utils/0001-Don-t-compile-programs-using-fork-on-MMU-less-system.patch @@ -0,0 +1,257 @@ +From 5ed3b4ded6cf3e4de6fc8c8739b84231b0285b0e Mon Sep 17 00:00:00 2001 +From: Dario Binacchi +Date: Fri, 5 May 2023 08:57:45 +0200 +Subject: [PATCH] Don't compile programs using fork() on MMU-less systems + +Systems that lack a MMU cannot use fork() to create the child process. +The patch does not compile the affected programs on MMU-less systems. + +Co-developed-by: Marc Kleine-Budde +Signed-off-by: Marc Kleine-Budde +Signed-off-by: Dario Binacchi +Upstream: https://github.com/linux-can/can-utils/commit/5ed3b4ded6cf3e4de6fc8c8739b84231b0285b0e +--- + CMakeLists.txt | 15 ++++++++++++--- + GNUmakefile.am | 10 +++++++--- + Makefile | 16 +++++++++++++--- + check_cc.sh | 16 ++++++++++++++++ + configure.ac | 2 ++ + fork_test.c | 27 +++++++++++++++++++++++++++ + 6 files changed, 77 insertions(+), 9 deletions(-) + create mode 100755 check_cc.sh + create mode 100644 fork_test.c + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 09ccd805de66..aee8ff7fca02 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.3) + + project(can-utils LANGUAGES C) + ++include (CheckFunctionExists) + include (CheckSymbolExists) + include (GNUInstallDirs) + +@@ -25,12 +26,13 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DSCM_TXTIME=SO_TXTIME") + include_directories (.) + include_directories (./include) + ++check_function_exists(fork HAVE_FORK) ++ + set(PROGRAMS_CANLIB + asc2log + canbusload + candump + cangen +- canlogserver + canplayer + cansend + cansequence +@@ -39,6 +41,10 @@ set(PROGRAMS_CANLIB + slcanpty + ) + ++if(HAVE_FORK) ++ list(APPEND PROGRAMS_CANLIB canlogserver) ++endif() ++ + set(PROGRAMS_J1939 + j1939acd + j1939cat +@@ -49,7 +55,6 @@ set(PROGRAMS_J1939 + + set(PROGRAMS + ${PROGRAMS_CANLIB} +- bcmserver + canfdtest + cangw + cansniffer +@@ -57,13 +62,17 @@ set(PROGRAMS + isotpperf + isotprecv + isotpsend +- isotpserver + isotpsniffer + isotptun + slcan_attach + slcand + ) + ++if(HAVE_FORK) ++ list(APPEND PROGRAMS bcmserver) ++ list(APPEND PROGRAMS isotpserver) ++endif() ++ + add_executable(can-calc-bit-timing + calc-bit-timing/can-calc-bit-timing.c + ) +diff --git a/GNUmakefile.am b/GNUmakefile.am +index 5a7ad75f682e..e818754db3a4 100644 +--- a/GNUmakefile.am ++++ b/GNUmakefile.am +@@ -75,14 +75,12 @@ EXTRA_DIST += \ + + bin_PROGRAMS = \ + asc2log \ +- bcmserver \ + can-calc-bit-timing \ + canbusload \ + candump \ + canfdtest \ + cangen \ + cangw \ +- canlogserver \ + canplayer \ + cansend \ + cansequence \ +@@ -91,7 +89,6 @@ bin_PROGRAMS = \ + isotpperf \ + isotprecv \ + isotpsend \ +- isotpserver \ + isotpsniffer \ + isotptun \ + j1939acd \ +@@ -106,6 +103,13 @@ bin_PROGRAMS = \ + slcanpty \ + testj1939 + ++if HAVE_FORK ++bin_PROGRAMS += \ ++ bcmserver \ ++ canlogserver \ ++ isotpserver ++endif ++ + j1939acd_LDADD = libj1939.la + j1939cat_LDADD = libj1939.la + j1939spy_LDADD = libj1939.la +diff --git a/Makefile b/Makefile +index 29eef997b290..a26ff3d75e67 100644 +--- a/Makefile ++++ b/Makefile +@@ -45,6 +45,8 @@ MAKEFLAGS := -k + + CFLAGS := -O2 -Wall -Wno-parentheses + ++HAVE_FORK := $(shell ./check_cc.sh "$(CC)" fork_test.c) ++ + CPPFLAGS += \ + -I. \ + -Iinclude \ +@@ -66,10 +68,14 @@ PROGRAMS_ISOTP := \ + isotpperf \ + isotprecv \ + isotpsend \ +- isotpserver \ + isotpsniffer \ + isotptun + ++ifeq ($(HAVE_FORK),1) ++PROGRAMS_ISOTP += \ ++ isotpserver ++endif ++ + PROGRAMS_J1939 := \ + j1939acd \ + j1939cat \ +@@ -87,14 +93,12 @@ PROGRAMS := \ + $(PROGRAMS_J1939) \ + $(PROGRAMS_SLCAN) \ + asc2log \ +- bcmserver \ + can-calc-bit-timing \ + canbusload \ + candump \ + canfdtest \ + cangen \ + cansequence \ +- canlogserver \ + canplayer \ + cansend \ + cansniffer \ +@@ -103,6 +107,12 @@ PROGRAMS := \ + mcp251xfd-dump \ + slcanpty + ++ifeq ($(HAVE_FORK),1) ++PROGRAMS += \ ++ canlogserver \ ++ bcmserver ++endif ++ + all: $(PROGRAMS) + + clean: +diff --git a/check_cc.sh b/check_cc.sh +new file mode 100755 +index 000000000000..d85ad129da9d +--- /dev/null ++++ b/check_cc.sh +@@ -0,0 +1,16 @@ ++#!/bin/sh ++# SPDX-License-Identifier: GPL-2.0-only ++# check_cc.sh - Helper to test userspace compilation support ++# Copyright (c) 2015 Andrew Lutomirski ++ ++CC="$1" ++TESTPROG="$2" ++shift 2 ++ ++if [ -n "$CC" ] && $CC -o /dev/null "$TESTPROG" -O0 "$@"; then ++ echo 1 ++else ++ echo 0 ++fi ++ ++exit 0 +diff --git a/configure.ac b/configure.ac +index 5493c9c7ccdf..9bf62a5c6409 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -76,6 +76,8 @@ AC_CHECK_FUNCS([ \ + strtoul \ + ]) + ++AM_CONDITIONAL(HAVE_FORK, test "$ac_cv_func_fork_works" = "yes") ++ + # glibc versions before 2.17 needs to link with -lrt for clock_nanosleep + AC_SEARCH_LIBS([clock_nanosleep], [rt]) + +diff --git a/fork_test.c b/fork_test.c +new file mode 100644 +index 000000000000..036692392483 +--- /dev/null ++++ b/fork_test.c +@@ -0,0 +1,27 @@ ++/* SPDX-License-Identifier: GPL-2.0-only */ ++/* ++ * Copyright (C) 2023 Dario Binacchi ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the version 2 of the GNU General Public License ++ * as published by the Free Software Foundation ++ * ++ * 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, see . ++ */ ++ ++#include ++#include ++#include ++ ++int main(int argc, char **argv) ++{ ++ fork(); ++ ++ return 0; ++} +-- +2.32.0 + diff --git a/package/can-utils/0002-j1939acd-remove-legacy-poption-prefix-to-use-when-logging.patch b/package/can-utils/0002-j1939acd-remove-legacy-poption-prefix-to-use-when-logging.patch new file mode 100644 index 00000000..36c96d59 --- /dev/null +++ b/package/can-utils/0002-j1939acd-remove-legacy-poption-prefix-to-use-when-logging.patch @@ -0,0 +1,79 @@ +From d337863d9189501dbbb15467cc3dcba85946a2a3 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Mon, 22 Jul 2024 16:12:04 +0200 +Subject: [PATCH] j1939acd: remove legacy '-p' option (prefix to use when + logging) + +- remove legacy '-p' option (prefix to use when logging), fixes uclibc + compile + +Fixes: + + j1939acd.c: In function 'main': + j1939acd.c:489:38: error: passing argument 1 of 'asprintf' from incompatible pointer type [-Wincompatible-pointer-types] + 489 | if (asprintf(&program_invocation_name, "%s.%s", + | ^~~~~~~~~~~~~~~~~~~~~~~~ + | | + | const char ** + +Signed-off-by: Peter Seiderer +Upstream: https://github.com/linux-can/can-utils/commit/d337863d9189501dbbb15467cc3dcba85946a2a3 +Signed-off-by: Fabrice Fontaine +--- + j1939acd.c | 16 +--------------- + 1 file changed, 1 insertion(+), 15 deletions(-) + +diff --git a/j1939acd.c b/j1939acd.c +index 44bb826c..ae4e58ac 100644 +--- a/j1939acd.c ++++ b/j1939acd.c +@@ -38,7 +38,6 @@ static const char help_msg[] = + " e.g. 80,50-100,200-210 (defaults to 0-253)" "\n" + " -c, --cache=FILE Cache file to save/restore the source address" "\n" + " -a, --address=ADDRESS Start with Source Address ADDRESS" "\n" +- " -p, --prefix=STR Prefix to use when logging" "\n" + "\n" + "NAME is the 64bit nodename" "\n" + "\n" +@@ -54,14 +53,13 @@ static struct option long_opts[] = { + { "range", required_argument, NULL, 'r', }, + { "cache", required_argument, NULL, 'c', }, + { "address", required_argument, NULL, 'a', }, +- { "prefix", required_argument, NULL, 'p', }, + { }, + }; + #else + #define getopt_long(argc, argv, optstring, longopts, longindex) \ + getopt((argc), (argv), (optstring)) + #endif +-static const char optstring[] = "vr:c:a:p:?"; ++static const char optstring[] = "vr:c:a:?"; + + /* byte swap functions */ + static inline int host_is_little_endian(void) +@@ -466,9 +464,6 @@ int main(int argc, char *argv[]) + struct sockaddr_can saddr; + uint64_t cmd_name; + +-#ifdef _GNU_SOURCE +- program_invocation_name = program_invocation_short_name; +-#endif + /* argument parsing */ + while ((opt = getopt_long(argc, argv, optstring, long_opts, NULL)) != -1) + switch (opt) { +@@ -484,15 +479,6 @@ int main(int argc, char *argv[]) + case 'a': + s.current_sa = strtoul(optarg, 0, 0); + break; +- case 'p': +-#ifdef _GNU_SOURCE +- if (asprintf(&program_invocation_name, "%s.%s", +- program_invocation_short_name, optarg) < 0) +- err(1, "asprintf(program invocation name)"); +-#else +- err(0, "compile with -D_GNU_SOURCE to use -p"); +-#endif +- break; + default: + fputs(help_msg, stderr); + exit(1); diff --git a/package/can-utils/Config.in b/package/can-utils/Config.in new file mode 100644 index 00000000..a33919a2 --- /dev/null +++ b/package/can-utils/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_CAN_UTILS + bool "can-utils" + help + SocketCAN is a set of open source CAN drivers and a + networking stack. + This package provides various tools for this stack. + + https://github.com/linux-can/can-utils diff --git a/package/can-utils/can-utils.hash b/package/can-utils/can-utils.hash new file mode 100644 index 00000000..e539e05b --- /dev/null +++ b/package/can-utils/can-utils.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 2790dfb57fe3ec22b6fd512838c6480c39f7c9ae193e59f1ae01221216505a7e can-utils-2023.03.tar.gz +sha256 c3dc748f5e725cf5ed89784fe78e4ff1b05d309bf1e7ade4c572e8fde1b8406c LICENSES/BSD-3-Clause +sha256 995a31f60a9ddb4c609214cc7d17ca94cc3cbc7f37e1e64dba81e7f8ea9d4f91 LICENSES/GPL-2.0-only.txt diff --git a/package/can-utils/can-utils.mk b/package/can-utils/can-utils.mk new file mode 100644 index 00000000..462e123c --- /dev/null +++ b/package/can-utils/can-utils.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# can-utils +# +################################################################################ + +CAN_UTILS_VERSION = 2023.03 +CAN_UTILS_SITE = $(call github,linux-can,can-utils,v$(CAN_UTILS_VERSION)) +CAN_UTILS_LICENSE = BSD-3-Clause or GPL-2.0 +CAN_UTILS_LICENSE_FILES = LICENSES/BSD-3-Clause LICENSES/GPL-2.0-only.txt +CAN_UTILS_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/cannelloni/Config.in b/package/cannelloni/Config.in new file mode 100644 index 00000000..e137e60c --- /dev/null +++ b/package/cannelloni/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_CANNELLONI + bool "cannelloni" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # lksctp-tools + depends on BR2_TOOLCHAIN_HAS_THREADS # lksctp-tools + depends on !BR2_STATIC_LIBS # lksctp-tools + help + A SocketCAN over Ethernet tunnel. The tunnel supports both + UDP and SCTP protocols. + + https://github.com/mguentner/cannelloni + +comment "cannelloni needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.8" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/package/cannelloni/cannelloni.hash b/package/cannelloni/cannelloni.hash new file mode 100644 index 00000000..107415b0 --- /dev/null +++ b/package/cannelloni/cannelloni.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 de44b7e327fbf38883f46e51a5afd07de5144f2e44c5f42b7f2f0741165f0b13 cannelloni-1.0.0.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 gpl-2.0.txt diff --git a/package/cannelloni/cannelloni.mk b/package/cannelloni/cannelloni.mk new file mode 100644 index 00000000..f97a0917 --- /dev/null +++ b/package/cannelloni/cannelloni.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# cannelloni +# +################################################################################ + +CANNELLONI_VERSION = 1.0.0 +CANNELLONI_SITE = $(call github,mguentner,cannelloni,v$(CANNELLONI_VERSION)) +CANNELLONI_LICENSE = GPL-2.0 +CANNELLONI_LICENSE_FILES = gpl-2.0.txt +CANNELLONI_CONF_OPTS = -DCMAKE_CXX_FLAGS="-std=c++11" + +ifeq ($(BR2_PACKAGE_LKSCTP_TOOLS),y) +CANNELLONI_CONF_OPTS += -DSCTP_SUPPORT=ON +CANNELLONI_DEPENDENCIES += lksctp-tools +else +CANNELLONI_CONF_OPTS += -DSCTP_SUPPORT=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/cantarell/Config.in b/package/cantarell/Config.in new file mode 100644 index 00000000..78af96d5 --- /dev/null +++ b/package/cantarell/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_CANTARELL + bool "cantarell" + help + The Cantarell font family is a contemporary Humanist + sans serif designed for on-screen reading. + + https://wiki.gnome.org/Projects/CantarellFonts diff --git a/package/cantarell/cantarell.hash b/package/cantarell/cantarell.hash new file mode 100644 index 00000000..18e0fc2c --- /dev/null +++ b/package/cantarell/cantarell.hash @@ -0,0 +1,4 @@ +# From https://download.gnome.org/sources/cantarell-fonts/0.0/cantarell-fonts-0.0.25.sha256sum +sha256 14a228aa0b516dfc367b434a850f955a00c57fc549cbb05348e2b150196a737f cantarell-fonts-0.0.25.tar.xz +# locally computed +sha256 79a9d6198c0d9192c1b0bf55bcbc404a39390bd0d8c650cf20d652c2eaa284d8 COPYING diff --git a/package/cantarell/cantarell.mk b/package/cantarell/cantarell.mk new file mode 100644 index 00000000..59e65b25 --- /dev/null +++ b/package/cantarell/cantarell.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# cantarell +# +################################################################################ + +CANTARELL_VERSION_MAJOR = 0.0 +CANTARELL_VERSION = $(CANTARELL_VERSION_MAJOR).25 +CANTARELL_SITE = https://download.gnome.org/sources/cantarell-fonts/$(CANTARELL_VERSION_MAJOR) +CANTARELL_SOURCE = cantarell-fonts-$(CANTARELL_VERSION).tar.xz +CANTARELL_DEPENDENCIES = host-pkgconf +CANTARELL_LICENSE = OFL-1.1 +CANTARELL_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/capnproto/Config.in b/package/capnproto/Config.in new file mode 100644 index 00000000..943ba9de --- /dev/null +++ b/package/capnproto/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_CAPNPROTO + bool "capnproto" + depends on BR2_USE_MMU + depends on BR2_HOST_GCC_AT_LEAST_5 # C++14 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + depends on BR2_TOOLCHAIN_HAS_UCONTEXT + help + Cap'n Proto is an insanely fast data interchange format + and capability-based RPC system. Think JSON, except + binary. Or think Protocol Buffers, except faster. In + fact, in benchmarks, Cap'n Proto is INFINITY TIMES + faster than Protocol Buffers. + + https://capnproto.org/index.html + +comment "capnproto needs host and target gcc >= 5 w/ C++14, threads, atomic, ucontext and not gcc bug 64735" + depends on BR2_USE_MMU + depends on !BR2_HOST_GCC_AT_LEAST_5 || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 || \ + !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HAS_ATOMIC || \ + BR2_TOOLCHAIN_HAS_GCC_BUG_64735 || \ + !BR2_TOOLCHAIN_HAS_UCONTEXT diff --git a/package/capnproto/capnproto.hash b/package/capnproto/capnproto.hash new file mode 100644 index 00000000..aa722a42 --- /dev/null +++ b/package/capnproto/capnproto.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c6f25940688c87ddb24e0c4e475c3213d9b044aad2ba305439cc8c224f559da6 capnproto-0.10.4.tar.gz +sha256 9564998c8d7f270a61a8b89869a8d17a9d5e3783b64027788b5e339ec8479e10 LICENSE diff --git a/package/capnproto/capnproto.mk b/package/capnproto/capnproto.mk new file mode 100644 index 00000000..7424a142 --- /dev/null +++ b/package/capnproto/capnproto.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# capnproto +# +################################################################################ + +CAPNPROTO_VERSION = 0.10.4 +CAPNPROTO_SITE = $(call github,capnproto,capnproto,v$(CAPNPROTO_VERSION)) +CAPNPROTO_LICENSE = MIT +CAPNPROTO_LICENSE_FILES = LICENSE +CAPNPROTO_CPE_ID_VENDOR = capnproto +CAPNPROTO_INSTALL_STAGING = YES +# Fetched from Github with no configure script +CAPNPROTO_AUTORECONF = YES +CAPNPROTO_CONF_OPTS = --with-external-capnp +# Needs the capnproto compiler on the host to generate C++ code from message +# definitions +CAPNPROTO_DEPENDENCIES = host-autoconf host-capnproto +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +CAPNPROTO_CONF_ENV += LIBS=-latomic +endif +# The actual source to be compiled is within a 'c++' subdirectory +CAPNPROTO_SUBDIR = c++ + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +CAPNPROTO_CONF_OPTS += --with-openssl +CAPNPROTO_DEPENDENCIES += openssl +else +CAPNPROTO_CONF_OPTS += --without-openssl +endif + +# musl doesn't support getcontext/setcontext +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +CAPNPROTO_CONF_ENV += CXXFLAGS="$(TARGET_CXXFLAGS) -DKJ_USE_FIBERS=0" +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/caps/0001-Fix-stdint-types-with-musl.patch b/package/caps/0001-Fix-stdint-types-with-musl.patch new file mode 100644 index 00000000..23002c07 --- /dev/null +++ b/package/caps/0001-Fix-stdint-types-with-musl.patch @@ -0,0 +1,54 @@ +From 626e60a82120961ccee117dfcb5c28f72f8a26e5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Wed, 28 Aug 2019 11:25:49 +0200 +Subject: [PATCH] Fix stdint types with musl +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fetched from: +https://github.com/dsacre/meta-lad/blob/master/recipes-multimedia/lv2/caps-lv2/fix-stdint-types-with-musl.patch + +Signed-off-by: Jörg Krause +--- + basics.h | 17 +++++++++-------- + 1 file changed, 9 insertions(+), 8 deletions(-) + +diff --git a/basics.h b/basics.h +index 643d96e..34e5f63 100644 +--- a/basics.h ++++ b/basics.h +@@ -39,6 +39,7 @@ + #define _ISOC9X_SOURCE 1 + + #include ++#include + #include + + #include +@@ -49,14 +50,14 @@ + + #include "ladspa.h" + +-typedef __int8_t int8; +-typedef __uint8_t uint8; +-typedef __int16_t int16; +-typedef __uint16_t uint16; +-typedef __int32_t int32; +-typedef __uint32_t uint32; +-typedef __int64_t int64; +-typedef __uint64_t uint64; ++typedef int8_t int8; ++typedef uint8_t uint8; ++typedef int16_t int16; ++typedef uint16_t uint16; ++typedef int32_t int32; ++typedef uint32_t uint32; ++typedef int64_t int64; ++typedef uint64_t uint64; + + #define MIN_GAIN 1e-6 /* -120 dB */ + /* smallest non-denormal 32 bit IEEE float is 1.18e-38 */ +-- +2.22.0 + diff --git a/package/caps/Config.in b/package/caps/Config.in new file mode 100644 index 00000000..f48e176d --- /dev/null +++ b/package/caps/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_CAPS + bool "caps" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + help + CAPS is a collection of audio plugins comprising virtual + guitar amplification and a small range of basic classic + effects, signal processors and generators of often + elementary and occasionally exotic nature. + + The plugins aim to satisfy the highest demands in sound + quality with maximal computational efficiency and zero + latency. + + http://quitte.de/dsp/caps.html + +comment "caps needs a toolchain w/ C++, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS diff --git a/package/caps/caps.hash b/package/caps/caps.hash new file mode 100644 index 00000000..ed18095e --- /dev/null +++ b/package/caps/caps.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 e7496c5bce05abebe3dcb635926153bbb58a9337a6e423f048d3b61d8a4f98c9 caps_0.9.26.tar.bz2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/caps/caps.mk b/package/caps/caps.mk new file mode 100644 index 00000000..e307a689 --- /dev/null +++ b/package/caps/caps.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# caps +# +################################################################################ + +CAPS_VERSION = 0.9.26 +CAPS_SOURCE = caps_$(CAPS_VERSION).tar.bz2 +CAPS_SITE = http://quitte.de/dsp +CAPS_LICENSE = GPL-3.0+ +CAPS_LICENSE_FILES = COPYING + +# Need to pass TARGET_CONFIGURE_OPTS in the environment to not +# override the LDFLAGS definition of the Makefile. +CAPS_MAKE_ENV = \ + $(TARGET_MAKE_ENV) \ + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CXXFLAGS)" + +# caps Makefile uses CC and CFLAGS, but for C++ +CAPS_MAKE_OPTS = \ + CC="$(TARGET_CXX)" \ + STRIP=/bin/true + +define CAPS_BUILD_CMDS + $(CAPS_MAKE_ENV) $(MAKE) $(CAPS_MAKE_OPTS) all -C $(@D) +endef + +define CAPS_INSTALL_TARGET_CMDS + $(CAPS_MAKE_ENV) $(MAKE) $(CAPS_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) install -C $(@D) +endef + +$(eval $(generic-package)) diff --git a/package/casync/0001-src-compressor.h-fix-build-with-gcc-13.patch b/package/casync/0001-src-compressor.h-fix-build-with-gcc-13.patch new file mode 100644 index 00000000..32af9142 --- /dev/null +++ b/package/casync/0001-src-compressor.h-fix-build-with-gcc-13.patch @@ -0,0 +1,40 @@ +From 8db993c32f97188bdd6de4b2aa177fc513ee7e9f Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 15 Oct 2023 21:22:58 +0200 +Subject: [PATCH] src/compressor.h: fix build with gcc >= 13 + +Fix the following build failure with gcc >= 13: + +In file included from ../src/compressor.c:3: +../src/compressor.h:59:59: error: unknown type name 'size_t' + 59 | int compressor_input(CompressorContext *c, const void *p, size_t sz); + | ^~~~~~ +../src/compressor.h:19:1: note: 'size_t' is defined in header ''; did you forget to '#include '? + 18 | #include "cacompression.h" + +++ |+#include + 19 | + +Fixes: + - http://autobuild.buildroot.org/results/ab08f3b90d253db45643dd058b80ae1dd5f49d0f + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/systemd/casync/pull/270 +--- + src/compressor.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/compressor.h b/src/compressor.h +index 2c9f93b..ae2eb30 100644 +--- a/src/compressor.h ++++ b/src/compressor.h +@@ -4,6 +4,7 @@ + #define foocompresshorhfoo + + #include ++#include + + #if HAVE_LIBLZMA + # include +-- +2.42.0 + diff --git a/package/casync/Config.in b/package/casync/Config.in new file mode 100644 index 00000000..89a9520e --- /dev/null +++ b/package/casync/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_CASYNC + bool "casync" + depends on BR2_TOOLCHAIN_USES_GLIBC # scandirat() is not implemented by musl and uclibc-ng + select BR2_PACKAGE_ACL + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_OPENSSL + help + Content-Addressable Data Synchronization Tool + + https://github.com/systemd/casync + +comment "casync needs a glibc toolchain" + depends on !BR2_TOOLCHAIN_USES_GLIBC diff --git a/package/casync/casync.hash b/package/casync/casync.hash new file mode 100644 index 00000000..469beb5b --- /dev/null +++ b/package/casync/casync.hash @@ -0,0 +1,3 @@ +# sha256 locally computed +sha256 5d58def4c5ca902b35a97178d4619b9298a35b27d5748a2cc346bd36c2e38e9c casync-0efa7abffe5fffbde8c457d3c8fafbdde0bb6e4f.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSE.LGPL2.1 diff --git a/package/casync/casync.mk b/package/casync/casync.mk new file mode 100644 index 00000000..af010a7e --- /dev/null +++ b/package/casync/casync.mk @@ -0,0 +1,64 @@ +################################################################################ +# +# casync +# +################################################################################ + +CASYNC_VERSION = 0efa7abffe5fffbde8c457d3c8fafbdde0bb6e4f +CASYNC_SITE = $(call github,systemd,casync,$(CASYNC_VERSION)) +CASYNC_LICENSE = LGPL-2.1+ +CASYNC_LICENSE_FILES = LICENSE.LGPL2.1 +CASYNC_DEPENDENCIES = acl libcurl openssl + +CASYNC_CONF_OPTS = -Dman=false -Doss-fuzz=false -Dllvm-fuzz=false + +ifeq ($(BR2_PACKAGE_BASH_COMPLETION),y) +CASYNC_DEPENDENCIES += bash-completion +# The default path is correct, leave it as-is +else +CASYNC_CONF_OPTS += -Dbashcompletiondir=no +endif + +ifeq ($(BR2_PACKAGE_LIBFUSE),y) +CASYNC_DEPENDENCIES += libfuse +CASYNC_CONF_OPTS += -Dfuse=true +else +CASYNC_CONF_OPTS += -Dfuse=false +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +CASYNC_DEPENDENCIES += libselinux +CASYNC_CONF_OPTS += -Dselinux=true +else +CASYNC_CONF_OPTS += -Dselinux=false +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +CASYNC_DEPENDENCIES += udev +CASYNC_CONF_OPTS += -Dudev=true +else +CASYNC_CONF_OPTS += -Dudev=false +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +CASYNC_DEPENDENCIES += zstd +CASYNC_CONF_OPTS += -Dlibzstd=enabled +else +CASYNC_CONF_OPTS += -Dlibzstd=disabled +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +CASYNC_DEPENDENCIES += xz +CASYNC_CONF_OPTS += -Dliblzma=enabled +else +CASYNC_CONF_OPTS += -Dliblzma=disabled +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +CASYNC_DEPENDENCIES += zlib +CASYNC_CONF_OPTS += -Dlibz=enabled +else +CASYNC_CONF_OPTS += -Dlibz=disabled +endif + +$(eval $(meson-package)) diff --git a/package/catatonit/0001-fix-build-with-kernel-5.9.patch b/package/catatonit/0001-fix-build-with-kernel-5.9.patch new file mode 100644 index 00000000..37def8e5 --- /dev/null +++ b/package/catatonit/0001-fix-build-with-kernel-5.9.patch @@ -0,0 +1,49 @@ +From 65e1b96bd40cb14b3729ac56bb9f1fcb77254403 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 1 Nov 2022 14:16:01 +0100 +Subject: [PATCH] fix build with kernel < 5.9 + +linux/close_range.h is only available since kernel 5.9 and +https://github.com/torvalds/linux/commit/60997c3d45d9a67daf01c56d805ae4fec37e0bd8 +resulting in the following build failure: + +catatonit.c:39:11: fatal error: linux/close_range.h: No such file or directory + 39 | # include + | ^~~~~~~~~~~~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/ed9a847905083175c7fcb2f2df28f9ac5b9c3313 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/openSUSE/catatonit/commit/663ad1670689143f65af3a288f90cecb7feed54f +--- + catatonit.c | 2 +- + configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/catatonit.c b/catatonit.c +index a33f4cd..b10d9b0 100644 +--- a/catatonit.c ++++ b/catatonit.c +@@ -36,7 +36,7 @@ + #include + #include + +-#ifdef HAVE_CLOSE_RANGE ++#ifdef HAVE_LINUX_CLOSE_RANGE_H + # include + #else + # include +diff --git a/configure.ac b/configure.ac +index 69e89f0..b37f146 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -24,7 +24,7 @@ LT_PREREQ([2.4.2]) + LT_INIT([disable-shared]) + + AC_CHECK_HEADERS([errno.h fcntl.h signal.h stdarg.h stdio.h stdlib.h unistd.h]) +-AC_CHECK_HEADERS([sys/prctl.h sys/signalfd.h sys/stat.h sys/types.h sys/wait.h]) ++AC_CHECK_HEADERS([linux/close_range.h sys/prctl.h sys/signalfd.h sys/stat.h sys/types.h sys/wait.h]) + + AC_CHECK_FUNCS([close_range]) + diff --git a/package/catatonit/Config.in b/package/catatonit/Config.in new file mode 100644 index 00000000..2bd3ab67 --- /dev/null +++ b/package/catatonit/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_CATATONIT + bool "catatonit" + depends on BR2_USE_MMU + help + catatonit is a simple but valid init binary to act as + PID 1 for containers. + + https://github.com/openSUSE/catatonit diff --git a/package/catatonit/catatonit.hash b/package/catatonit/catatonit.hash new file mode 100644 index 00000000..9940309c --- /dev/null +++ b/package/catatonit/catatonit.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 d0cf1feffdc89c9fb52af20fc10127887a408bbd99e0424558d182b310a3dc92 catatonit-0.2.0.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/catatonit/catatonit.mk b/package/catatonit/catatonit.mk new file mode 100644 index 00000000..a308ea64 --- /dev/null +++ b/package/catatonit/catatonit.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# catatonit +# +################################################################################ + +CATATONIT_VERSION = 0.2.0 +CATATONIT_SITE = $(call github,openSUSE,catatonit,v$(CATATONIT_VERSION)) +CATATONIT_LICENSE = GPL-2.0+ +CATATONIT_LICENSE_FILES = COPYING + +CATATONIT_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/catch2/Config.in b/package/catch2/Config.in new file mode 100644 index 00000000..40d2d124 --- /dev/null +++ b/package/catch2/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_CATCH2 + bool "catch2" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14 + depends on BR2_USE_MMU # fork() + help + Catch2 is mainly a unit testing framework for C++, but it + also provides basic micro-benchmarking features, and simple + BDD macros. + + Catch2's main advantage is that using it is both simple and + natural. Tests autoregister themselves and do not have to + be named with valid identifiers, assertions look like + normal C++ code, and sections provide a nice way to share + set-up and tear-down code in tests. + + This package allows running testsuites on the target which + might be advantageous in certain cases. + + https://github.com/catchorg/Catch2 + +comment "catch2 needs a toolchain w/ C++, wchar, threads, gcc >= 5" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 diff --git a/package/catch2/catch2.hash b/package/catch2/catch2.hash new file mode 100644 index 00000000..c7e264af --- /dev/null +++ b/package/catch2/catch2.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 485932259a75c7c6b72d4b874242c489ea5155d17efa345eb8cc72159f49f356 catch2-3.6.0.tar.gz +sha256 c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566 LICENSE.txt diff --git a/package/catch2/catch2.mk b/package/catch2/catch2.mk new file mode 100644 index 00000000..60812b2c --- /dev/null +++ b/package/catch2/catch2.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# catch2 +# +################################################################################ + +CATCH2_VERSION = 3.6.0 +CATCH2_SITE = $(call github,catchorg,Catch2,v$(CATCH2_VERSION)) +CATCH2_INSTALL_STAGING = YES +CATCH2_INSTALL_TARGET = NO +CATCH2_LICENSE = BSL-1.0 +CATCH2_LICENSE_FILES = LICENSE.txt +CATCH2_SUPPORTS_IN_SOURCE_BUILD = NO + +# We force building a static library only as building a dynamic +# library is not really supported officially: +# https://github.com/catchorg/Catch2/blob/devel/docs/faq.md#can-i-compile-catch2-into-a-dynamic-library +CATCH2_CONF_OPTS = \ + -DCATCH_INSTALL_DOCS=OFF \ + -DBUILD_SHARED_LIBS=OFF + +$(eval $(cmake-package)) diff --git a/package/cbootimage/Config.in b/package/cbootimage/Config.in new file mode 100644 index 00000000..1a7fef0b --- /dev/null +++ b/package/cbootimage/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_CBOOTIMAGE + bool "cbootimage" + depends on BR2_arm || BR2_armeb + help + This project provides a tool which compiles BCT (Boot + Configuration Table) images to place into the boot flash of + a Tegra-based device. + + https://github.com/NVIDIA/cbootimage diff --git a/package/cbootimage/Config.in.host b/package/cbootimage/Config.in.host new file mode 100644 index 00000000..1913afa2 --- /dev/null +++ b/package/cbootimage/Config.in.host @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HOST_CBOOTIMAGE + bool "host cbootimage" + depends on BR2_arm || BR2_armeb + help + This project provides a tool which compiles BCT (Boot + Configuration Table) images to place into the boot flash of + a Tegra-based device. + + https://github.com/NVIDIA/cbootimage diff --git a/package/cbootimage/cbootimage.hash b/package/cbootimage/cbootimage.hash new file mode 100644 index 00000000..03d2f0a3 --- /dev/null +++ b/package/cbootimage/cbootimage.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 46cce01f07df977668de9e1d49884d8ed539169994215606a9719d17b9db8804 cbootimage-1.8.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/cbootimage/cbootimage.mk b/package/cbootimage/cbootimage.mk new file mode 100644 index 00000000..19819e4b --- /dev/null +++ b/package/cbootimage/cbootimage.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# cbootimage +# +################################################################################ + +CBOOTIMAGE_VERSION = 1.8 +CBOOTIMAGE_SITE = $(call github,NVIDIA,cbootimage,v$(CBOOTIMAGE_VERSION)) +CBOOTIMAGE_LICENSE = GPL-2.0 +CBOOTIMAGE_LICENSE_FILES = COPYING +CBOOTIMAGE_AUTORECONF = YES + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/cc-tool/Config.in b/package/cc-tool/Config.in new file mode 100644 index 00000000..fa5674b3 --- /dev/null +++ b/package/cc-tool/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_CC_TOOL + bool "cc-tool" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-filesystem + depends on BR2_USE_WCHAR # boost-filesystem + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_PROGRAM_OPTIONS + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_REGEX + select BR2_PACKAGE_BOOST_FILESYSTEM + help + cc-tool provides support for Texas Instruments CC Debugger + for Linux OS in order to program 8051-based System-On-Chip + devices: CC254x CC253x CC243x CC251x CC111x + + https://github.com/dashesy/cc-tool/ + +comment "cc-tool needs a toolchain w/ C++, threads, wchar, gcc >= 4.9 " + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/cc-tool/cc-tool.hash b/package/cc-tool/cc-tool.hash new file mode 100644 index 00000000..53c74730 --- /dev/null +++ b/package/cc-tool/cc-tool.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 1d26be4446c68413a02bf3156e6434d7fe9ce76aa0a169464ca5d7b2a731610d cc-tool-0.27.tar.gz + +# Hash for license file +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/package/cc-tool/cc-tool.mk b/package/cc-tool/cc-tool.mk new file mode 100644 index 00000000..6864589a --- /dev/null +++ b/package/cc-tool/cc-tool.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# cc-tool +# +################################################################################ + +CC_TOOL_VERSION = 0.27 +CC_TOOL_SITE = $(call github,dashesy,cc-tool,v$(CC_TOOL_VERSION)) +CC_TOOL_LICENSE = GPL-2.0 +CC_TOOL_LICENSE_FILES = COPYING +CC_TOOL_DEPENDENCIES = boost libusb + +# From git +CC_TOOL_AUTORECONF = YES + +# Configure script "discovers" boost in /usr/local if not given explicitly +CC_TOOL_CONF_OPTS = --with-boost=$(STAGING_DIR)/usr +CC_TOOL_CONF_ENV = LIBS="$(CC_TOOL_LIBS)" + +# Help boost.m4 find the Boost Regex library, which needs the pthread +# library, but isn't detected using a modern (pkg-config) mechanism. +ifeq ($(BR2_STATIC_LIBS),y) +CC_TOOL_LIBS += -lpthread +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +CC_TOOL_LIBS += -latomic +endif + +$(eval $(autotools-package)) diff --git a/package/ccache/ccache.hash b/package/ccache/ccache.hash new file mode 100644 index 00000000..744e1674 --- /dev/null +++ b/package/ccache/ccache.hash @@ -0,0 +1,4 @@ +# sha256 computed locally +sha256 3a43442ce3916ea48bb6ccf6f850891cbff01d1feddff7cd4bbd49c5cf1188f6 ccache-4.10.1.tar.xz +sha256 80b5112739a423dfac7bed1ca8a1df3cccda3d794425441997d4462b83db4dd5 GPL-3.0.txt +sha256 de4684f5251a0a2c58f3a7ab94d6a8d3443822cbd01abcdadd9250d3d1e0bfe1 LICENSE.adoc diff --git a/package/ccache/ccache.mk b/package/ccache/ccache.mk new file mode 100644 index 00000000..f727ca04 --- /dev/null +++ b/package/ccache/ccache.mk @@ -0,0 +1,88 @@ +################################################################################ +# +# ccache +# +################################################################################ + +CCACHE_VERSION = 4.10.1 +CCACHE_SITE = https://github.com/ccache/ccache/releases/download/v$(CCACHE_VERSION) +CCACHE_SOURCE = ccache-$(CCACHE_VERSION).tar.xz +CCACHE_LICENSE = GPL-3.0+, others +CCACHE_LICENSE_FILES = LICENSE.adoc GPL-3.0.txt + +# Do not add a recursive dependency to its own +HOST_CCACHE_ADD_CCACHE_DEPENDENCY = NO + +HOST_CCACHE_DEPENDENCIES = host-hiredis host-zstd host-xxhash host-blake3 + +# We are ccache, so we can't use ccache +HOST_CCACHE_CONF_OPTS += \ + -UCMAKE_C_COMPILER_LAUNCHER \ + -UCMAKE_CXX_COMPILER_LAUNCHER \ + -DCCACHE_DEV_MODE=OFF \ + -DDEP_BLAKE3=SYSTEM \ + -DDEP_FMT=BUNDLED \ + -DDEP_CPPHTTPLIB=BUNDLED \ + -DDEP_HIREDIS=SYSTEM \ + -DDEP_NONSTDSPAN=BUNDLED \ + -DDEP_TLEXPECTED=BUNDLED \ + -DDEP_XXHASH=SYSTEM \ + -DDEP_ZSTD=SYSTEM \ + -DENABLE_DOCUMENTATION=OFF \ + -DENABLE_TESTING=OFF + +# Patch host-ccache as follows: +# - Use BR_CACHE_DIR instead of CCACHE_DIR, because CCACHE_DIR +# is already used by autotargets for the ccache package. +# BR_CACHE_DIR is exported by Makefile based on config option +# BR2_CCACHE_DIR. +# - Change hard-coded last-ditch default to match path in .config, to avoid +# the need to specify BR_CACHE_DIR when invoking ccache directly. +# CCache replaces "home_dir" with the home directory of the current user, +# so rewrite BR_CACHE_DIR to take that into consideration for SDK purpose +HOST_CCACHE_DEFAULT_CCACHE_DIR = $(patsubst $(HOME)/%,%,$(BR_CACHE_DIR)) + +define HOST_CCACHE_PATCH_CONFIGURATION + sed -i 's,getenv("CCACHE_DIR"),getenv("BR_CACHE_DIR"),' $(@D)/src/ccache/Config.cpp + sed -i 's,".ccache","$(HOST_CCACHE_DEFAULT_CCACHE_DIR)",' $(@D)/src/ccache/Config.cpp + sed -i 's,"/.cache/ccache","/$(HOST_CCACHE_DEFAULT_CCACHE_DIR)",' $(@D)/src/ccache/Config.cpp + sed -i 's,"/.config/ccache","/$(HOST_CCACHE_DEFAULT_CCACHE_DIR)",' $(@D)/src/ccache/Config.cpp + sed -i 's,getenv("XDG_CACHE_HOME"),nullptr,' $(@D)/src/ccache/Config.cpp + sed -i 's,getenv("XDG_CONFIG_HOME"),nullptr,' $(@D)/src/ccache/Config.cpp +endef + +HOST_CCACHE_POST_PATCH_HOOKS += HOST_CCACHE_PATCH_CONFIGURATION + +define HOST_CCACHE_MAKE_CACHE_DIR + mkdir -p $(BR_CACHE_DIR) +endef + +HOST_CCACHE_POST_INSTALL_HOOKS += HOST_CCACHE_MAKE_CACHE_DIR + +# Provide capability to do initial ccache setup (e.g. increase default size) +BR_CCACHE_INITIAL_SETUP = $(call qstrip,$(BR2_CCACHE_INITIAL_SETUP)) +ifneq ($(BR_CCACHE_INITIAL_SETUP),) +define HOST_CCACHE_DO_INITIAL_SETUP + @$(call MESSAGE,"Applying initial settings") + $(CCACHE) $(BR_CCACHE_INITIAL_SETUP) + $(CCACHE) -s +endef + +HOST_CCACHE_POST_INSTALL_HOOKS += HOST_CCACHE_DO_INITIAL_SETUP +endif + +$(eval $(host-cmake-package)) + +ifeq ($(BR2_CCACHE),y) +ccache-stats: host-ccache + $(Q)$(CCACHE) -s + +ccache-options: host-ccache +ifeq ($(CCACHE_OPTIONS),) + $(Q)echo "Usage: make ccache-options CCACHE_OPTIONS=\"opts\"" + $(Q)echo "where 'opts' corresponds to one or more valid ccache options" \ + "(see ccache help text below)" + $(Q)echo +endif + $(Q)$(CCACHE) $(CCACHE_OPTIONS) +endif diff --git a/package/ccid/Config.in b/package/ccid/Config.in new file mode 100644 index 00000000..c1273337 --- /dev/null +++ b/package/ccid/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_CCID + bool "ccid" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb, pcsc-lite + depends on BR2_USE_MMU # pcsc-lite + depends on !BR2_STATIC_LIBS # pcsc-lite + select BR2_PACKAGE_PCSC_LITE + select BR2_PACKAGE_LIBUSB + help + PC/SC driver for USB CCID smart card readers + + https://ccid.apdu.fr/ + +comment "ccid needs a toolchain w/ threads, dynamic library, gcc >= 4.9" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/ccid/ccid.hash b/package/ccid/ccid.hash new file mode 100644 index 00000000..fcd8d10e --- /dev/null +++ b/package/ccid/ccid.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 13934487e6f8b48f699a16d367cc7a1af7a3ca874de721ac6e9633beb86e7219 ccid-1.5.2.tar.bz2 +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING diff --git a/package/ccid/ccid.mk b/package/ccid/ccid.mk new file mode 100644 index 00000000..0510b4c9 --- /dev/null +++ b/package/ccid/ccid.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# ccid +# +################################################################################ + +CCID_VERSION = 1.5.2 +CCID_SOURCE = ccid-$(CCID_VERSION).tar.bz2 +CCID_SITE = https://ccid.apdu.fr/files +CCID_LICENSE = LGPL-2.1+ +CCID_LICENSE_FILES = COPYING +CCID_INSTALL_STAGING = YES +CCID_DEPENDENCIES = pcsc-lite host-pkgconf libusb +CCID_CONF_OPTS = --enable-usbdropdir=/usr/lib/pcsc/drivers + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +define CCID_INSTALL_UDEV_RULES + if test -d $(TARGET_DIR)/etc/udev/rules.d ; then \ + cp $(@D)/src/92_pcscd_ccid.rules $(TARGET_DIR)/etc/udev/rules.d/ ; \ + fi; +endef + +CCID_POST_INSTALL_TARGET_HOOKS += CCID_INSTALL_UDEV_RULES +endif + +$(eval $(autotools-package)) diff --git a/package/ccrypt/Config.in b/package/ccrypt/Config.in new file mode 100644 index 00000000..109271ae --- /dev/null +++ b/package/ccrypt/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_CCRYPT + bool "ccrypt" + help + ccrypt is a utility for encrypting and decrypting files and + streams. + + http://ccrypt.sourceforge.net/ diff --git a/package/ccrypt/ccrypt.hash b/package/ccrypt/ccrypt.hash new file mode 100644 index 00000000..4f81c491 --- /dev/null +++ b/package/ccrypt/ccrypt.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 b19c47500a96ee5fbd820f704c912f6efcc42b638c0a6aa7a4e3dc0a6b51a44f ccrypt-1.11.tar.gz +sha256 d48d3af3cf27b32106ee3418c7c892cae745ece26cd909e72aa59b08e3f9c93d COPYING diff --git a/package/ccrypt/ccrypt.mk b/package/ccrypt/ccrypt.mk new file mode 100644 index 00000000..f8d63282 --- /dev/null +++ b/package/ccrypt/ccrypt.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# ccrypt +# +################################################################################ + +CCRYPT_VERSION = 1.11 +CCRYPT_SITE = http://ccrypt.sourceforge.net/download/$(CCRYPT_VERSION) + +CCRYPT_LICENSE = GPL-2.0+ +CCRYPT_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/cctz/Config.in b/package/cctz/Config.in new file mode 100644 index 00000000..73a0f9f7 --- /dev/null +++ b/package/cctz/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_CCTZ + bool "cctz" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + select BR2_TARGET_TZ_INFO # runtime dependency + help + CCTZ is a C++ library for translating between absolute + and civil times using the rules of a time zone. + + https://github.com/google/cctz + +if BR2_PACKAGE_CCTZ + +config BR2_PACKAGE_CCTZ_INSTALL_TOOLS + bool "Install tools" + help + This option allows installing CCTZ tools. + +config BR2_PACKAGE_CCTZ_INSTALL_EXAMPLES + bool "Install example programs" + help + This option allows installing CCTZ example programs. + +endif + +comment "cctz needs a toolchain w/ C++, threads, gcc >= 4.8" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 diff --git a/package/cctz/cctz.hash b/package/cctz/cctz.hash new file mode 100644 index 00000000..ac78cd61 --- /dev/null +++ b/package/cctz/cctz.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 e1a00957d472044808a24a26f1ba020f36dc26949a69c214562d96b74093adb3 cctz-2.4.tar.gz +sha256 c79a7fea0e3cac04cd43f20e7b648e5a0ff8fa5344e644b0ee09ca1162b62747 LICENSE.txt diff --git a/package/cctz/cctz.mk b/package/cctz/cctz.mk new file mode 100644 index 00000000..7f5d960a --- /dev/null +++ b/package/cctz/cctz.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# cctz +# +################################################################################ + +CCTZ_VERSION = 2.4 +CCTZ_SITE = $(call github,google,cctz,v$(CCTZ_VERSION)) +CCTZ_LICENSE = Apache-2.0 +CCTZ_LICENSE_FILES = LICENSE.txt +CCTZ_INSTALL_STAGING = YES + +CCTZ_CONF_OPTS = -DBUILD_TESTING=OFF + +ifeq ($(BR2_PACKAGE_CCTZ_INSTALL_TOOLS),y) +CCTZ_CONF_OPTS += -DBUILD_TOOLS=ON +else +CCTZ_CONF_OPTS += -DBUILD_TOOLS=OFF +endif + +ifeq ($(BR2_PACKAGE_CCTZ_INSTALL_EXAMPLES),y) +CCTZ_CONF_OPTS += -DBUILD_EXAMPLES=ON +else +CCTZ_CONF_OPTS += -DBUILD_EXAMPLES=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/cdrkit/0001-fix-build-with-uClibc.patch b/package/cdrkit/0001-fix-build-with-uClibc.patch new file mode 100644 index 00000000..27203eee --- /dev/null +++ b/package/cdrkit/0001-fix-build-with-uClibc.patch @@ -0,0 +1,28 @@ +From 13823cfe42f33e947f8375f5a3f9ee177c699960 Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Sat, 13 Jul 2024 10:57:57 +0200 +Subject: [PATCH] fix build with uClibc + +cdrkit unconditionally enables code using rcmd(3), which isn't available +on uClibc. + +Signed-off-by: Peter Korsgaard +--- + include/xconfig.h.in | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/include/xconfig.h.in b/include/xconfig.h.in +index c130600..00f2044 100644 +--- a/include/xconfig.h.in ++++ b/include/xconfig.h.in +@@ -187,7 +187,6 @@ + * they are placed before the large file tests. + */ + +-#define HAVE_RCMD 1 /* rcmd() is present in libc/libsocket */ + #define HAVE_SOCKET 1 /* socket() is present in libc/libsocket */ + #define HAVE_SOCKETPAIR 1 /* socketpair() is present in libc/libsocket */ + #define HAVE_GETSERVBYNAME 1 /* getservbyname() is present in libc/libsocket */ +-- +2.45.2 + diff --git a/package/cdrkit/0002-define-__THROW-to-avoid-build-issue-with-musl.patch b/package/cdrkit/0002-define-__THROW-to-avoid-build-issue-with-musl.patch new file mode 100644 index 00000000..2e0f6d52 --- /dev/null +++ b/package/cdrkit/0002-define-__THROW-to-avoid-build-issue-with-musl.patch @@ -0,0 +1,47 @@ +From 9454ef47db30caa4359766c8730d9d92f65c64f7 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 8 Aug 2015 22:58:57 +0200 +Subject: [PATCH] define __THROW to avoid build issue with musl + +Fixes: +http://autobuild.buildroot.net/results/d27/d2781e70b04a207e2e9397d888032294c7285034/build-end.log + +Signed-off-by: Romain Naour +--- + genisoimage/sha256.h | 4 ++++ + genisoimage/sha512.h | 4 ++++ + 2 files changed, 8 insertions(+) + +diff --git a/genisoimage/sha256.h b/genisoimage/sha256.h +index e7f4cb9..bcae7ef 100644 +--- a/genisoimage/sha256.h ++++ b/genisoimage/sha256.h +@@ -29,6 +29,10 @@ + #include + #include + ++/* define __THROW to avoid build issue when it's not available from the libc */ ++#ifndef __THROW ++# define __THROW ++#endif + + /* Structure to save state of computation between the single steps. */ + struct sha256_ctx +diff --git a/genisoimage/sha512.h b/genisoimage/sha512.h +index 7298355..8cee8b0 100644 +--- a/genisoimage/sha512.h ++++ b/genisoimage/sha512.h +@@ -29,6 +29,10 @@ + #include + #include + ++/* define __THROW to avoid build issue when it's not available from the libc */ ++#ifndef __THROW ++# define __THROW ++#endif + + /* Structure to save state of computation between the single steps. */ + struct sha512_ctx +-- +2.4.3 + diff --git a/package/cdrkit/0003-Add-extern-to-char-outfile-declaration-to-fix-build-.patch b/package/cdrkit/0003-Add-extern-to-char-outfile-declaration-to-fix-build-.patch new file mode 100644 index 00000000..30f4c8d0 --- /dev/null +++ b/package/cdrkit/0003-Add-extern-to-char-outfile-declaration-to-fix-build-.patch @@ -0,0 +1,30 @@ +From eabcc8a6e39dc3c28faee3e04aa56cc65a38d65a Mon Sep 17 00:00:00 2001 +From: Urja Rannikko +Date: Sun, 19 Jul 2020 20:28:27 +0300 +Subject: [PATCH] Add extern to char* outfile declaration to fix build with gcc + 10 + +Without this linking fails with a rather long spew of +"multiple definition of `outfile'". + +Signed-off-by: Urja Rannikko +--- + genisoimage/genisoimage.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/genisoimage/genisoimage.h b/genisoimage/genisoimage.h +index bbedfb0..82c859b 100644 +--- a/genisoimage/genisoimage.h ++++ b/genisoimage/genisoimage.h +@@ -376,7 +376,7 @@ extern int use_fileversion; + extern int split_SL_component; + extern int split_SL_field; + extern char *trans_tbl; +-char *outfile; ++extern char *outfile; + + #define JMAX 64 /* maximum Joliet file name length (spec) */ + #define JLONGMAX 103 /* out of spec Joliet file name length */ +-- +2.27.0 + diff --git a/package/cdrkit/0004-Add-missing-header-includes.patch b/package/cdrkit/0004-Add-missing-header-includes.patch new file mode 100644 index 00000000..d2a93fe5 --- /dev/null +++ b/package/cdrkit/0004-Add-missing-header-includes.patch @@ -0,0 +1,48 @@ +From 8b7852149c45c8a837a9f5124e91812dd475a270 Mon Sep 17 00:00:00 2001 +From: Andrey Rakhmatullin +Date: Sat, 13 Jul 2024 11:37:07 +0200 +Subject: [PATCH] Add missing header includes +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Bug-Debian: https://bugs.debian.org/1066264 + +Fixes: + +genisoimage/genisoimage.c:1509:17: error: implicit declaration of function ‘parse_checksum_algo’ [-Wimplicit-function-declaration] + +Upstream: https://sources.debian.org/patches/cdrkit/9:1.1.11-3.5/fix-implicit-function-declaration.patch/ +Signed-off-by: Thomas Petazzoni +--- + genisoimage/genisoimage.c | 1 + + genisoimage/jte.c | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/genisoimage/genisoimage.c b/genisoimage/genisoimage.c +index 46f0cb7..fa2f8bd 100644 +--- a/genisoimage/genisoimage.c ++++ b/genisoimage/genisoimage.c +@@ -53,6 +53,7 @@ + #include + #include "match.h" + #include "exclude.h" ++#include "checksum.h" + #include /* For UNICODE translation */ + #include + #ifdef UDF +diff --git a/genisoimage/jte.c b/genisoimage/jte.c +index 0dff289..4c4d986 100644 +--- a/genisoimage/jte.c ++++ b/genisoimage/jte.c +@@ -27,6 +27,7 @@ + #include "ifo_read.h" + #include "endianconv.h" + #include "checksum.h" ++#include "md5.h" + #endif + #ifdef APPLE_HYB + #include +-- +2.45.2 + diff --git a/package/cdrkit/Config.in b/package/cdrkit/Config.in new file mode 100644 index 00000000..b3ddcbd1 --- /dev/null +++ b/package/cdrkit/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_CDRKIT + bool "cdrkit" + depends on BR2_USE_MMU # fork + # Needed for libbz + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_LIBCAP + select BR2_PACKAGE_ZLIB + help + cdrkit is a suite of programs for recording CDs and DVDs, + blanking CD-RW media, creating ISO-9660 filesystem images, + extracting audio CD data, and more. + + https://en.wikipedia.org/wiki/Cdrkit diff --git a/package/cdrkit/cdrkit.hash b/package/cdrkit/cdrkit.hash new file mode 100644 index 00000000..8b574c70 --- /dev/null +++ b/package/cdrkit/cdrkit.hash @@ -0,0 +1,4 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/c/cdrkit/cdrkit_1.1.11-3.dsc +sha256 d1c030756ecc182defee9fe885638c1785d35a2c2a297b4604c0e0dcc78e47da cdrkit_1.1.11.orig.tar.gz +# locally computed +sha256 90daae00475a992a367da5b0658469a5d1c4449dbbe964c5b7246e1aec92f491 COPYING diff --git a/package/cdrkit/cdrkit.mk b/package/cdrkit/cdrkit.mk new file mode 100644 index 00000000..67814f14 --- /dev/null +++ b/package/cdrkit/cdrkit.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# cdrkit +# +################################################################################ + +CDRKIT_VERSION = 1.1.11 +CDRKIT_SOURCE = cdrkit_$(CDRKIT_VERSION).orig.tar.gz +CDRKIT_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/c/cdrkit +CDRKIT_DEPENDENCIES = libcap bzip2 zlib +HOST_CDRKIT_DEPENDENCIES = host-libcap host-bzip2 host-zlib +CDRKIT_LICENSE = GPL-2.0 +CDRKIT_LICENSE_FILES = COPYING + +ifeq ($(BR2_ENDIAN),"BIG") +CDRKIT_CONF_OPTS += -DBITFIELDS_HTOL=1 +else +CDRKIT_CONF_OPTS += -DBITFIELDS_HTOL=0 +endif + +ifeq ($(BR2_PACKAGE_FILE),y) +CDRKIT_DEPENDENCIES += host-pkgconf file +CDRKIT_CONF_OPTS += \ + -DUSE_MAGIC=ON \ + -DEXTRA_LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs libmagic`" +else +CDRKIT_CONF_OPTS += -DUSE_MAGIC=OFF +endif + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/cegui/0001-XMLParser.cpp-include-string.h.patch b/package/cegui/0001-XMLParser.cpp-include-string.h.patch new file mode 100644 index 00000000..e117d622 --- /dev/null +++ b/package/cegui/0001-XMLParser.cpp-include-string.h.patch @@ -0,0 +1,37 @@ +From b98ed87225fa3c0f156b0798ca5c285d8fa8fac1 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 15 Jun 2021 07:27:41 +0200 +Subject: [PATCH] XMLParser.cpp: include string.h + +Include string.h to avoid the following build failure: + +/home/buildroot/autobuild/run/instance-3/output-1/build/cegui-00b4e1fe174da53b7ed726ab5970ba51bd5b5ee0/cegui/src/XMLParserModules/RapidXML/XMLParser.cpp:73:5: error: 'memcpy' was not declared in this scope + 73 | memcpy(buf, source.getDataPtr(), size); + | ^~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/1cb09e5f52435efc505c61707b2d5d2ee871524b + +Signed-off-by: Fabrice Fontaine +Upstream: 628f7edf4b420f752f1965ea11e5e747e3ff93b0 +Signed-off-by: Thomas Petazzoni +--- + cegui/src/XMLParserModules/RapidXML/XMLParser.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/cegui/src/XMLParserModules/RapidXML/XMLParser.cpp b/cegui/src/XMLParserModules/RapidXML/XMLParser.cpp +index 810ea6bbf..59822fc80 100644 +--- a/cegui/src/XMLParserModules/RapidXML/XMLParser.cpp ++++ b/cegui/src/XMLParserModules/RapidXML/XMLParser.cpp +@@ -38,6 +38,8 @@ + #include "CEGUI/Logger.h" + #include "CEGUI/Exceptions.h" + ++#include ++ + // Start of CEGUI namespace section + namespace CEGUI + { +-- +2.31.1 + diff --git a/package/cegui/0002-Fix-return-type-of-xmlGetLastError-for-libxml2-2-12.patch b/package/cegui/0002-Fix-return-type-of-xmlGetLastError-for-libxml2-2-12.patch new file mode 100644 index 00000000..9091062e --- /dev/null +++ b/package/cegui/0002-Fix-return-type-of-xmlGetLastError-for-libxml2-2-12.patch @@ -0,0 +1,29 @@ +From 285ba5a2c0c435ed865c6e86afe314a822fd1e3f Mon Sep 17 00:00:00 2001 +From: oreo639 +Date: Sun, 18 Feb 2024 14:16:21 -0800 +Subject: [PATCH] Fix return type of xmlGetLastError for libxml2 2.12 + +https://gitlab.gnome.org/GNOME/libxml2/-/commit/45470611b047db78106dcb2fdbd4164163c15ab7 + +Upstream: https://github.com/cegui/cegui/commit/285ba5a2c0c435ed865c6e86afe314a822fd1e3f +Signed-off-by: Fabrice Fontaine +--- + cegui/src/XMLParserModules/Libxml2/XMLParser.cpp | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/cegui/src/XMLParserModules/Libxml2/XMLParser.cpp b/cegui/src/XMLParserModules/Libxml2/XMLParser.cpp +index 74a3dbddd..a408f9305 100644 +--- a/cegui/src/XMLParserModules/Libxml2/XMLParser.cpp ++++ b/cegui/src/XMLParserModules/Libxml2/XMLParser.cpp +@@ -109,7 +109,11 @@ void LibxmlParser::parseXML(XMLHandler& handler, + + if (!doc) + { ++#if LIBXML_VERSION >= 21200 ++ const xmlError* err = xmlGetLastError(); ++#else + xmlError* err = xmlGetLastError(); ++#endif + + throw GenericException( + String("xmlParseMemory failed in file: '") + diff --git a/package/cegui/Config.in b/package/cegui/Config.in new file mode 100644 index 00000000..20b86583 --- /dev/null +++ b/package/cegui/Config.in @@ -0,0 +1,24 @@ +comment "cegui needs a toolchain w/ C++, threads, dynamic library, wchar, gcc >= 5" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP \ + || BR2_STATIC_LIBS || !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +config BR2_PACKAGE_CEGUI + bool "cegui" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++11 PR59987 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + select BR2_PACKAGE_GLM + select BR2_PACKAGE_LIBGLFW if BR2_PACKAGE_HAS_LIBGL # SampleBrowser dependency + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Crazy Eddie's GUI System is a free library providing windowing + and widgets for graphics APIs / engines where such + functionality is not natively available, or severely lacking. + The library is object orientated, written in C++, and targeted + at games developers who should be spending their time creating + great games, not building GUI sub-systems! + + http://www.cegui.org.uk/ diff --git a/package/cegui/cegui.hash b/package/cegui/cegui.hash new file mode 100644 index 00000000..131b2486 --- /dev/null +++ b/package/cegui/cegui.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 5b6f9e209e8a29b2f30d6aef92efd125c8bedaab5be04b562208be51e5e7f04e cegui-00b4e1fe174da53b7ed726ab5970ba51bd5b5ee0.tar.gz +sha256 cc869e2ece8ad039f6d7fd17259db4ea0ae0a502d02a1bb506c0168deb12e40d COPYING diff --git a/package/cegui/cegui.mk b/package/cegui/cegui.mk new file mode 100644 index 00000000..2e563223 --- /dev/null +++ b/package/cegui/cegui.mk @@ -0,0 +1,102 @@ +################################################################################ +# +# cegui +# +################################################################################ + +CEGUI_VERSION = 00b4e1fe174da53b7ed726ab5970ba51bd5b5ee0 +CEGUI_SITE = $(call github,cegui,cegui,$(CEGUI_VERSION)) +CEGUI_LICENSE = MIT +CEGUI_LICENSE_FILES = COPYING +CEGUI_INSTALL_STAGING = YES +CEGUI_CONF_OPTS = \ + -DCEGUI_HAS_MINIZIP_RESOURCE_PROVIDER=OFF \ + -DCEGUI_BUILD_RENDERER_IRRLICHT=OFF \ + -DCEGUI_BUILD_RENDERER_OGRE=OFF \ + -DCEGUI_BUILD_RENDERER_OPENGLES=OFF \ + -DCEGUI_BUILD_XMLPARSER_XERCES=OFF \ + -DCEGUI_USE_FRIBIDI=OFF \ + -DCEGUI_SAMPLES_ENABLED=OFF \ + -DCEGUI_BUILD_APPLICATION_TEMPLATES=OFF \ + -DCEGUI_BUILD_PYTHON_MODULES_SWIG=OFF +CEGUI_DEPENDENCIES = glm \ + $(if $(BR2_PACKAGE_LIBGLFW),libglfw) \ + $(if $(BR2_PACKAGE_HAS_LIBGL),libgl) \ + $(if $(BR2_PACKAGE_HAS_LIBGLES),libgles) \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) + +# libepoxy support cannot be enabled together with libglew +ifeq ($(BR2_PACKAGE_LIBGLEW)$(BR2_PACKAGE_LIBGLU),yy) +CEGUI_DEPENDENCIES += libglew libglu +CEGUI_CONF_OPTS += -DCEGUI_USE_GLEW=ON -DCEGUI_USE_EPOXY=OFF \ + -DCEGUI_BUILD_RENDERER_OPENGL=ON \ + -DCEGUI_BUILD_RENDERER_OPENGL3=ON +else ifeq ($(BR2_PACKAGE_LIBEPOXY),y) +CEGUI_DEPENDENCIES += libepoxy +# old OpenGL renderer module is only supported using GLEW +CEGUI_CONF_OPTS += -DCEGUI_USE_EPOXY=ON -DCEGUI_USE_GLEW=OFF \ + -DCEGUI_BUILD_RENDERER_OPENGL=OFF \ + -DCEGUI_BUILD_RENDERER_OPENGL3=ON +else +CEGUI_CONF_OPTS += -DCEGUI_USE_EPOXY=OFF -DCEGUI_USE_GLEW=OFF \ + -DCEGUI_BUILD_RENDERER_OPENGL=OFF \ + -DCEGUI_BUILD_RENDERER_OPENGL3=OFF +endif + +ifeq ($(BR2_PACKAGE_EXPAT),y) +CEGUI_DEPENDENCIES += expat +CEGUI_CONF_OPTS += -DCEGUI_BUILD_XMLPARSER_EXPAT=ON +else +CEGUI_CONF_OPTS += -DCEGUI_BUILD_XMLPARSER_EXPAT=OFF +endif + +ifeq ($(BR2_PACKAGE_SDL2)$(BR2_PACKAGE_SDL2_IMAGE),yy) +CEGUI_DEPENDENCIES += sdl2 sdl2_image +CEGUI_CONF_OPTS += -DCEGUI_BUILD_IMAGECODEC_SDL2=ON +else +CEGUI_CONF_OPTS += -DCEGUI_BUILD_IMAGECODEC_SDL2=OFF +endif + +ifeq ($(BR2_PACKAGE_PCRE),y) +CEGUI_DEPENDENCIES += pcre +CEGUI_CONF_OPTS += -DCEGUI_HAS_PCRE_REGEX=ON +else +CEGUI_CONF_OPTS += -DCEGUI_HAS_PCRE_REGEX=OFF +endif + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +CEGUI_DEPENDENCIES += freetype +CEGUI_CONF_OPTS += -DCEGUI_HAS_FREETYPE=ON +else +CEGUI_CONF_OPTS += -DCEGUI_HAS_FREETYPE=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +CEGUI_DEPENDENCIES += libxml2 +CEGUI_CONF_OPTS += -DCEGUI_BUILD_XMLPARSER_LIBXML2=ON +else +CEGUI_CONF_OPTS += -DCEGUI_BUILD_XMLPARSER_LIBXML2=OFF +endif + +ifeq ($(BR2_PACKAGE_RAPIDXML),y) +CEGUI_DEPENDENCIES += rapidxml +CEGUI_CONF_OPTS += -DCEGUI_BUILD_XMLPARSER_RAPIDXML=ON +else +CEGUI_CONF_OPTS += -DCEGUI_BUILD_XMLPARSER_RAPIDXML=OFF +endif + +ifeq ($(BR2_PACKAGE_TINYXML),y) +CEGUI_DEPENDENCIES += tinyxml +CEGUI_CONF_OPTS += -DCEGUI_BUILD_XMLPARSER_TINYXML=ON +else +CEGUI_CONF_OPTS += -DCEGUI_BUILD_XMLPARSER_TINYXML=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBFREEIMAGE),y) +CEGUI_DEPENDENCIES += libfreeimage +CEGUI_CONF_OPTS += -DCEGUI_BUILD_IMAGECODEC_FREEIMAGE=ON +else +CEGUI_CONF_OPTS += -DCEGUI_BUILD_IMAGECODEC_FREEIMAGE=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/cereal/Config.in b/package/cereal/Config.in new file mode 100644 index 00000000..3ac463c4 --- /dev/null +++ b/package/cereal/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_CEREAL + bool "cereal" + depends on BR2_USE_WCHAR + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11 + help + cereal is a header-only C++11 serialization library. + cereal takes arbitrary data types and reversibly turns them + into different representations, such as compact binary + encodings, XML or JSON. cereal was designed to be fast, + light-weight, and easy to extend - it has no external + dependencies and can be easily bundled with other code or used + standalone. + + https://github.com/USCiLab/cereal + +comment "cereal needs a toolchain w/ C++, gcc >= 4.7, threads, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_USE_WCHAR || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 diff --git a/package/cereal/cereal.hash b/package/cereal/cereal.hash new file mode 100644 index 00000000..1ddb504a --- /dev/null +++ b/package/cereal/cereal.hash @@ -0,0 +1,6 @@ +# Locally computed +sha256 16a7ad9b31ba5880dac55d62b5d6f243c3ebc8d46a3514149e56b5e7ea81f85f cereal-1.3.2.tar.gz +sha256 58604a126af6a671ea390ee3d5b3e42228aa59b2858fb7af1d5b20b31739ccbb LICENSE +sha256 d9e523e8736ac0c68064c7ad312a222f285e82bf6c96a1b1c2cadaffff9fc64f include/cereal/external/base64.hpp +sha256 7fb69c707f0ed3a8b59b8f949f0928a9cc06d67bc15d599094693703ff70ea26 include/cereal/external/rapidjson/rapidjson.h +sha256 794bf3b2ecf5cf0c740ac6c524d66ce6284c4b1de1f983d21a242b8abbeb9720 include/cereal/external/rapidxml/license.txt diff --git a/package/cereal/cereal.mk b/package/cereal/cereal.mk new file mode 100644 index 00000000..6da7df93 --- /dev/null +++ b/package/cereal/cereal.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# cereal +# +################################################################################ + +CEREAL_VERSION = 1.3.2 +CEREAL_SITE = $(call github,USCiLab,cereal,v$(CEREAL_VERSION)) +# For licensing, see also: https://github.com/USCiLab/cereal/issues/609 +CEREAL_LICENSE = BSD-3-Clause (cereal), Zlib (base64.hpp), MIT (rapidjson), BSL-1.0 or MIT (rapidxml) +CEREAL_LICENSE_FILES = LICENSE include/cereal/external/base64.hpp include/cereal/external/rapidjson/rapidjson.h include/cereal/external/rapidxml/license.txt +CEREAL_CPE_ID_VENDOR = usc +CEREAL_INSTALL_STAGING = YES +CEREAL_INSTALL_TARGET = NO +CEREAL_CONF_OPTS = \ + -DBUILD_SANDBOX=OFF \ + -DTHREAD_SAFE=ON \ + -DJUST_INSTALL_CEREAL=ON + +$(eval $(cmake-package)) diff --git a/package/cfm/Config.in b/package/cfm/Config.in new file mode 100644 index 00000000..1c2e92be --- /dev/null +++ b/package/cfm/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_CFM + bool "cfm" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 + select BR2_PACKAGE_LIBEV + select BR2_PACKAGE_LIBMNL + select BR2_PACKAGE_LIBNL + help + This is the userspace application that configures the kernel + to run CFM protocol. The userspace application is made of 2 + applications, one daemon and a client. + + https://github.com/microchip-ung/cfm + +comment "cfm needs a toolchain w/ threads, kernel headers >= 5.0" + depends on !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 diff --git a/package/cfm/S65cfm b/package/cfm/S65cfm new file mode 100644 index 00000000..10192686 --- /dev/null +++ b/package/cfm/S65cfm @@ -0,0 +1,55 @@ +#!/bin/sh +# +# Start cfm +# + +DAEMON="cfm_server" + +PIDFILE="/var/run/$DAEMON.pid" + +# shellcheck source=/dev/null +[ -r "/etc/default/cfm_server" ] && . "/etc/default/cfm_server" + +start() { + printf "Starting cfm daemon: " + start-stop-daemon -S -b -q -m -p $PIDFILE \ + -x /usr/bin/$DAEMON + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return $status +} + +stop() { + printf "Stopping cfm daemon: " + start-stop-daemon -K -q -p $PIDFILE + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return $status +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/package/cfm/cfm.hash b/package/cfm/cfm.hash new file mode 100644 index 00000000..a1805d81 --- /dev/null +++ b/package/cfm/cfm.hash @@ -0,0 +1,3 @@ +# locally calculated +sha256 b5ce096e8c496c397d108201f1a46855f735da6c4163b7a9af345916e75a7126 cfm-0.3.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/cfm/cfm.mk b/package/cfm/cfm.mk new file mode 100644 index 00000000..850b8d60 --- /dev/null +++ b/package/cfm/cfm.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# cfm +# +################################################################################ + +CFM_VERSION = 0.3 +CFM_SITE = $(call github,microchip-ung,cfm,v$(CFM_VERSION)) +CFM_DEPENDENCIES = libev libmnl libnl +CFM_LICENSE = GPL-2.0 +CFM_LICENSE_FILES = LICENSE +CFM_INSTALL_STAGING = YES + +define CFM_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D $(CFM_PKGDIR)/S65cfm \ + $(TARGET_DIR)/etc/init.d/S65cfm +endef + +define CFM_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(CFM_PKGDIR)/cfm.service \ + $(TARGET_DIR)/usr/lib/systemd/system/cfm.service +endef + +$(eval $(cmake-package)) diff --git a/package/cfm/cfm.service b/package/cfm/cfm.service new file mode 100644 index 00000000..1a00c5ba --- /dev/null +++ b/package/cfm/cfm.service @@ -0,0 +1,10 @@ +[Unit] +Description=Connectivity Fault Management +After=network.target + +[Service] +ExecStart=/usr/bin/cfm_server +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/cgilua/Config.in b/package/cgilua/Config.in new file mode 100644 index 00000000..a6761313 --- /dev/null +++ b/package/cgilua/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_CGILUA + bool "cgilua" + select BR2_PACKAGE_LUAFILESYSTEM # runtime + help + CGILua is a tool for creating dynamic HTML pages + and manipulating input data from Web forms. + + http://keplerproject.github.com/cgilua diff --git a/package/cgilua/cgilua.hash b/package/cgilua/cgilua.hash new file mode 100644 index 00000000..9675a098 --- /dev/null +++ b/package/cgilua/cgilua.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 7bfb88c483136bca9b814316d7f9ff581a805d68d144c1eebdfda3e8dfb5eb3a cgilua-6.0.2-0.src.rock +sha256 b82f9b13f9b1a1387f53203a625612914630b520377731b0aab7ce93ad2b18c4 cgilua/doc/us/license.html diff --git a/package/cgilua/cgilua.mk b/package/cgilua/cgilua.mk new file mode 100644 index 00000000..8061eaf3 --- /dev/null +++ b/package/cgilua/cgilua.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# cgilua +# +################################################################################ + +CGILUA_VERSION = 6.0.2-0 +CGILUA_SUBDIR = cgilua +CGILUA_LICENSE = MIT +CGILUA_LICENSE_FILES = $(CGILUA_SUBDIR)/doc/us/license.html +CGILUA_CPE_ID_VENDOR = keplerproject + +$(eval $(luarocks-package)) diff --git a/package/cgroupfs-mount/Config.in b/package/cgroupfs-mount/Config.in new file mode 100644 index 00000000..0b2e4ba1 --- /dev/null +++ b/package/cgroupfs-mount/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_CGROUPFS_MOUNT + bool "cgroupfs-mount" + depends on !BR2_INIT_SYSTEMD + help + cgroupfs mount and umount scripts. + + requires a Linux kernel >= 3.0 with the following options + enabled: + + - CONFIG_BLK_CGROUP + - CONFIG_CGROUPS + - CONFIG_CGROUP_CPUACCT + - CONFIG_CGROUP_DEVICE + - CONFIG_CGROUP_FREEZER + - CONFIG_CGROUP_WRITEBACK + - CONFIG_CGROUP_SCHED + - CONFIG_CGROUP_PIDS + + https://github.com/tianon/cgroupfs-mount diff --git a/package/cgroupfs-mount/S30cgroupfs b/package/cgroupfs-mount/S30cgroupfs new file mode 100644 index 00000000..aa0a29b1 --- /dev/null +++ b/package/cgroupfs-mount/S30cgroupfs @@ -0,0 +1,34 @@ +#!/bin/sh +# +# Set up cgroupfs mounts. +# + +start() { + printf "Mounting cgroupfs hierarchy: " + /usr/bin/cgroupfs-mount + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Unmounting cgroupfs hierarchy: " + /usr/bin/cgroupfs-umount + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/package/cgroupfs-mount/cgroupfs-mount.hash b/package/cgroupfs-mount/cgroupfs-mount.hash new file mode 100644 index 00000000..dc103646 --- /dev/null +++ b/package/cgroupfs-mount/cgroupfs-mount.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 d6c8aff7af59c7d0082ee3018c97f73b0421e81a49bb28ad9f66a36da5cd6ec7 cgroupfs-mount-1.4.tar.gz +sha256 e52f47a650734f70c40c8fd9318f85e42777bf3fba7ff1dfb72f845bb417f7e6 debian/copyright diff --git a/package/cgroupfs-mount/cgroupfs-mount.mk b/package/cgroupfs-mount/cgroupfs-mount.mk new file mode 100644 index 00000000..5af87629 --- /dev/null +++ b/package/cgroupfs-mount/cgroupfs-mount.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# cgroupfs-mount +# +################################################################################ + +CGROUPFS_MOUNT_VERSION = 1.4 +CGROUPFS_MOUNT_SITE = $(call github,tianon,cgroupfs-mount,$(CGROUPFS_MOUNT_VERSION)) +CGROUPFS_MOUNT_LICENSE = GPL-3.0+ +CGROUPFS_MOUNT_LICENSE_FILES = debian/copyright +CGROUPFS_MOUNT_CPE_ID_VALID = YES + +define CGROUPFS_MOUNT_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/cgroupfs-mount $(TARGET_DIR)/usr/bin/cgroupfs-mount + $(INSTALL) -D -m 0755 $(@D)/cgroupfs-umount $(TARGET_DIR)/usr/bin/cgroupfs-umount +endef + +define CGROUPFS_MOUNT_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D $(CGROUPFS_MOUNT_PKGDIR)/S30cgroupfs \ + $(TARGET_DIR)/etc/init.d/S30cgroupfs +endef + +$(eval $(generic-package)) diff --git a/package/chartjs/Config.in b/package/chartjs/Config.in new file mode 100644 index 00000000..73cc9b77 --- /dev/null +++ b/package/chartjs/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_CHARTJS + bool "chartjs" + help + Chart.js, a simple yet flexible JavaScript charting library + for designers & developers + + https://www.chartjs.org/ diff --git a/package/chartjs/chartjs.hash b/package/chartjs/chartjs.hash new file mode 100644 index 00000000..3f8da927 --- /dev/null +++ b/package/chartjs/chartjs.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 111e0751796f087a51e94dfed910ccfb1278fd30e584a6e48514dba9ae7e72c6 chart.js-3.9.1.tgz +sha256 5a0877ad6d818529be4f33009d0942cdf7e2ed7656156f4aba7308459a546030 package/LICENSE.md diff --git a/package/chartjs/chartjs.mk b/package/chartjs/chartjs.mk new file mode 100644 index 00000000..5ed4b3d9 --- /dev/null +++ b/package/chartjs/chartjs.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# chartjs +# +################################################################################ + +CHARTJS_VERSION = 3.9.1 +CHARTJS_SITE = https://registry.npmjs.org/chart.js/- +CHARTJS_SOURCE = chart.js-$(CHARTJS_VERSION).tgz +CHARTJS_LICENSE = MIT +CHARTJS_LICENSE_FILES = LICENSE.md +CHARTJS_CPE_ID_VENDOR = chartjs +CHARTJS_CPE_ID_PRODUCT = chart.js + +define CHARTJS_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/dist/chart.min.js \ + $(TARGET_DIR)/var/www/chartjs/js/Chart.js +endef + +$(eval $(generic-package)) diff --git a/package/check/0001-src-CMakeLists.txt-don-t-build-shared-libraries-when.patch b/package/check/0001-src-CMakeLists.txt-don-t-build-shared-libraries-when.patch new file mode 100644 index 00000000..6ed01f54 --- /dev/null +++ b/package/check/0001-src-CMakeLists.txt-don-t-build-shared-libraries-when.patch @@ -0,0 +1,255 @@ +From 2ae2137d724d5f3a70d5d2856cb979d389c4cbd8 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 12 Jul 2024 21:30:43 +0200 +Subject: [PATCH] src/CMakeLists.txt: don't build shared libraries when not + enabled + +BUILD_SHARED_LIBS is a standard CMake option [1] that specifies +whether shared libraries should be built or not. This commit adjusts +src/CMakeLists.txt to observe this variable to decide whether the +shared library variant should be built or not. This allows check to +only build a static library in environments where only a static +library can be compiled. + +This needs a bit of refactoring to avoid duplication: + +- Additional source files from libcompat are directly added to the + ${SOURCES} variable as needed + +- Additional libraries are collected into ${ADDITIONAL_LIBS} before + being associated to the static library and shared library (if enabled) + +[1] https://cmake.org/cmake/help/latest/variable/BUILD_SHARED_LIBS.html + +Fixes: + +__uClibc_main.c:(.text+0x12c): undefined reference to `__fini_array_end' +/home/autobuild/autobuild/instance-20/output-1/host/lib/gcc/sparc-buildroot-linux-uclibc/13.3.0/../../../../sparc-buildroot-linux-uclibc/bin/ld: __uClibc_main.c:(.text+0x130): undefined reference to `__fini_array_start' +/home/autobuild/autobuild/instance-20/output-1/host/lib/gcc/sparc-buildroot-linux-uclibc/13.3.0/../../../../sparc-buildroot-linux-uclibc/bin/ld: __uClibc_main.c:(.text+0x134): undefined reference to `__fini_array_end' + +Upstream: https://github.com/libcheck/check/pull/355 +Signed-off-by: Thomas Petazzoni +--- + src/CMakeLists.txt | 137 ++++++++++++++++++++++----------------------- + 1 file changed, 67 insertions(+), 70 deletions(-) + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 4a02dbe..e0cf32b 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -31,117 +31,106 @@ set(SOURCES + check_run.c + check_str.c) + +-set(HEADERS +- ${CONFIG_HEADER} +- ${CMAKE_CURRENT_BINARY_DIR}/check.h +- check.h.in +- check_error.h +- check_impl.h +- check_list.h +- check_log.h +- check_msg.h +- check_pack.h +- check_print.h +- check_str.h) +- +-configure_file(check.h.in check.h @ONLY) +- +-# To maintain compatibility with the Autotools installation +-# we specifically create both shared and static libraries +-# as that is what Autotools script has been doing. +-# Normally CMake would create the system's native default library type. +- +-add_library(check STATIC ${SOURCES} ${HEADERS}) +-add_library(Check::check ALIAS check) +- +- +-# We would like to create an OBJECT library but currently they are +-# too unreliable and cumbersome, +-# especially with target_link_libraries and install(EXPORT... +-# https://stackoverflow.com/questions/38832528/transitive-target-include-directories-on-object-libraries +-# So we instead do the work twice. +-add_library(checkShared SHARED ${SOURCES} ${HEADERS}) +-add_library(Check::checkShared ALIAS checkShared) +- + # Add parts of libcompat as required +-target_sources(check PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/fpclassify.c) +-target_sources(checkShared PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/fpclassify.c) ++list(APPEND SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../lib/fpclassify.c) + + if (NOT HAVE_LIBRT) +- target_sources(check PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/clock_gettime.c) +- target_sources(check PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/timer_create.c) +- target_sources(check PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/timer_delete.c) +- target_sources(check PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/timer_settime.c) +- target_sources(checkShared PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/clock_gettime.c) +- target_sources(checkShared PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/timer_create.c) +- target_sources(checkShared PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/timer_delete.c) +- target_sources(checkShared PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/timer_settime.c) ++ list(APPEND SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../lib/clock_gettime.c) ++ list(APPEND SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../lib/timer_create.c) ++ list(APPEND SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../lib/timer_delete.c) ++ list(APPEND SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../lib/timer_settime.c) + endif(NOT HAVE_LIBRT) + + if(NOT HAVE_GETLINE) +- target_sources(check PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/getline.c) +- target_sources(checkShared PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/getline.c) ++ list(APPEND SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../lib/getline.c) + endif(NOT HAVE_GETLINE) + + if(NOT HAVE_GETTIMEOFDAY) +- target_sources(check PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/gettimeofday.c) +- target_sources(checkShared PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/gettimeofday.c) ++ list(APPEND SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../lib/gettimeofday.c) + endif(NOT HAVE_GETTIMEOFDAY) + + if(NOT HAVE_DECL_LOCALTIME_R) +- target_sources(check PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/localtime_r.c) +- target_sources(checkShared PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/localtime_r.c) ++ list(APPEND SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../lib/localtime_r.c) + endif(NOT HAVE_DECL_LOCALTIME_R) + + if(NOT HAVE_MALLOC) +- target_sources(check PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/malloc.c) +- target_sources(checkShared PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/malloc.c) ++ list(APPEND SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../lib/malloc.c) + endif(NOT HAVE_MALLOC) + + if(NOT HAVE_REALLOC) +- target_sources(check PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/realloc.c) +- target_sources(checkShared PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/realloc.c) ++ list(APPEND SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../lib/realloc.c) + endif(NOT HAVE_REALLOC) + + if(NOT HAVE_SNPRINTF) +- target_sources(check PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/snprintf.c) +- target_sources(checkShared PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/snprintf.c) ++ list(APPEND SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../lib/snprintf.c) + endif(NOT HAVE_SNPRINTF) + + if(NOT HAVE_DECL_STRDUP AND NOT HAVE__STRDUP) +- target_sources(check PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/strdup.c) +- target_sources(checkShared PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/snprintf.c) ++ list(APPEND SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../lib/strdup.c) + endif(NOT HAVE_DECL_STRDUP AND NOT HAVE__STRDUP) + + if(NOT HAVE_DECL_STRSIGNAL) +- target_sources(check PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/strsignal.c) +- target_sources(checkShared PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/strsignal.c) ++ list(APPEND SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../lib/strsignal.c) + endif(NOT HAVE_DECL_STRSIGNAL) + + if(NOT HAVE_DECL_ALARM) +- target_sources(check PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/alarm.c) +- target_sources(checkShared PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/alarm.c) ++ list(APPEND SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../lib/alarm.c) + endif(NOT HAVE_DECL_ALARM) + + if(NOT HAVE_PTHREAD) +- target_sources(check PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/pthread_mutex.c) +- target_sources(checkShared PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/pthread_mutex.c) ++ list(APPEND SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../lib/pthread_mutex.c) + endif() + ++set(HEADERS ++ ${CONFIG_HEADER} ++ ${CMAKE_CURRENT_BINARY_DIR}/check.h ++ check.h.in ++ check_error.h ++ check_impl.h ++ check_list.h ++ check_log.h ++ check_msg.h ++ check_pack.h ++ check_print.h ++ check_str.h) ++ ++configure_file(check.h.in check.h @ONLY) ++ ++# To maintain compatibility with the Autotools installation ++# we specifically create both shared and static libraries ++# as that is what Autotools script has been doing. ++# Normally CMake would create the system's native default library type. ++ ++add_library(check STATIC ${SOURCES} ${HEADERS}) ++add_library(Check::check ALIAS check) ++ ++# We would like to create an OBJECT library but currently they are ++# too unreliable and cumbersome, ++# especially with target_link_libraries and install(EXPORT... ++# https://stackoverflow.com/questions/38832528/transitive-target-include-directories-on-object-libraries ++# So we instead do the work twice. ++if (BUILD_SHARED_LIBS) ++ add_library(checkShared SHARED ${SOURCES} ${HEADERS}) ++ add_library(Check::checkShared ALIAS checkShared) ++endif (BUILD_SHARED_LIBS) ++ + # Include libraries if available + if (HAVE_LIBM) +- target_link_libraries(check PUBLIC m) +- target_link_libraries(checkShared PUBLIC m) ++ list(APPEND ADDITIONAL_LIBS m) + endif (HAVE_LIBM) + if (HAVE_LIBRT) +- target_link_libraries(check PUBLIC rt) +- target_link_libraries(checkShared PUBLIC rt) ++ list(APPEND ADDITIONAL_LIBS rt) + endif (HAVE_LIBRT) + if (HAVE_SUBUNIT) +- target_link_libraries(check PUBLIC subunit) +- target_link_libraries(checkShared PUBLIC subunit) ++ list(APPEND ADDITIONAL_LIBS subunit) + endif (HAVE_SUBUNIT) + ++target_link_libraries(check PUBLIC ${ADDITIONAL_LIBS}) ++if (BUILD_SHARED_LIBS) ++ target_link_libraries(checkShared PUBLIC m) ++endif (BUILD_SHARED_LIBS) ++ ++ + if(MSVC) + target_compile_definitions(checkShared + PRIVATE "CK_DLL_EXP=_declspec(dllexport)" +@@ -168,27 +157,35 @@ if (MSVC) + # So we call it this: + set(LIBRARY_OUTPUT_NAME "checkDynamic") + endif (MSVC) ++if (BUILD_SHARED_LIBS) + set_target_properties(checkShared PROPERTIES + OUTPUT_NAME ${LIBRARY_OUTPUT_NAME} + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_VERSION_MAJOR} + PUBLIC_HEADER "${public_headers}" + ) ++endif (BUILD_SHARED_LIBS) + target_include_directories(check + PUBLIC + $ + $ + $ + ) ++if (BUILD_SHARED_LIBS) + target_include_directories(checkShared + PUBLIC + $ + $ + $ +-) ++ ) ++endif (BUILD_SHARED_LIBS) + + if(NOT THIS_IS_SUBPROJECT) +- install(TARGETS check checkShared ++ if (BUILD_SHARED_LIBS) ++ set(SHARED_LIBNAME checkShared) ++ endif () ++ ++ install(TARGETS check ${SHARED_LIBNAME} + EXPORT check-targets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} +-- +2.45.2 + diff --git a/package/check/0002-src-check_run.c-fix-build-on-noMMU-platforms.patch b/package/check/0002-src-check_run.c-fix-build-on-noMMU-platforms.patch new file mode 100644 index 00000000..173fa4ae --- /dev/null +++ b/package/check/0002-src-check_run.c-fix-build-on-noMMU-platforms.patch @@ -0,0 +1,82 @@ +From c9bebf051aa7e3037ca8e0fe554e073204ffedde Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 12 Jul 2024 21:27:47 +0200 +Subject: [PATCH] src/check_run.c: fix build on noMMU platforms + +src/check_run.c defines sig_handler() under the following conditions: + + #if defined(HAVE_FORK) && HAVE_FORK==1 + +however, it does use sig_handler under the following conditions: + + #if defined(HAVE_SIGACTION) && defined(HAVE_FORK) + +which breaks when HAVE_FORK is defined, but has the value HAVE_FORK=0, +as is the case on noMMU platforms. + +This commit fixes this by ensuring that the build conditions are +aligned throughout check_run.c. + +Fixes: + +src/check_run.c: In function 'srunner_run_tagged': +src/check_run.c:802:38: error: 'sig_handler' undeclared (first use in this function); did you mean 'sa_handler'? +[...] + +Upstream: https://github.com/libcheck/check/pull/354 +Signed-off-by: Thomas Petazzoni +--- + src/check_run.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/src/check_run.c b/src/check_run.c +index 5f160e5..4c370b3 100644 +--- a/src/check_run.c ++++ b/src/check_run.c +@@ -772,12 +772,12 @@ void srunner_run_tagged(SRunner * sr, const char *sname, const char *tcname, + const char *include_tags, const char *exclude_tags, + enum print_output print_mode) + { +-#if defined(HAVE_SIGACTION) && defined(HAVE_FORK) ++#if defined(HAVE_SIGACTION) && defined(HAVE_FORK) && HAVE_FORK==1 + static struct sigaction sigalarm_old_action; + static struct sigaction sigalarm_new_action; + static struct sigaction sigint_new_action; + static struct sigaction sigterm_new_action; +-#endif /* HAVE_SIGACTION && HAVE_FORK */ ++#endif /* HAVE_SIGACTION && HAVE_FORK && HAVE_FORK==1 */ + + /* Get the selected test suite and test case from the + environment. */ +@@ -797,7 +797,7 @@ void srunner_run_tagged(SRunner * sr, const char *sname, const char *tcname, + eprintf("Bad print_mode argument to srunner_run_all: %d", + __FILE__, __LINE__, print_mode); + } +-#if defined(HAVE_SIGACTION) && defined(HAVE_FORK) ++#if defined(HAVE_SIGACTION) && defined(HAVE_FORK) && HAVE_FORK==1 + memset(&sigalarm_new_action, 0, sizeof(sigalarm_new_action)); + sigalarm_new_action.sa_handler = sig_handler; + sigaction(SIGALRM, &sigalarm_new_action, &sigalarm_old_action); +@@ -809,16 +809,16 @@ void srunner_run_tagged(SRunner * sr, const char *sname, const char *tcname, + memset(&sigterm_new_action, 0, sizeof(sigterm_new_action)); + sigterm_new_action.sa_handler = sig_handler; + sigaction(SIGTERM, &sigterm_new_action, &sigterm_old_action); +-#endif /* HAVE_SIGACTION && HAVE_FORK */ ++#endif /* HAVE_SIGACTION && HAVE_FORK && HAVE_FORK==1 */ + srunner_run_init(sr, print_mode); + srunner_iterate_suites(sr, sname, tcname, include_tags, exclude_tags, + print_mode); + srunner_run_end(sr, print_mode); +-#if defined(HAVE_SIGACTION) && defined(HAVE_FORK) ++#if defined(HAVE_SIGACTION) && defined(HAVE_FORK) && HAVE_FORK==1 + sigaction(SIGALRM, &sigalarm_old_action, NULL); + sigaction(SIGINT, &sigint_old_action, NULL); + sigaction(SIGTERM, &sigterm_old_action, NULL); +-#endif /* HAVE_SIGACTION && HAVE_FORK */ ++#endif /* HAVE_SIGACTION && HAVE_FORK && HAVE_FORK==1 */ + } + + void srunner_run(SRunner * sr, const char *sname, const char *tcname, +-- +2.45.2 + diff --git a/package/check/Config.in b/package/check/Config.in new file mode 100644 index 00000000..2312fbf8 --- /dev/null +++ b/package/check/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_CHECK + bool "check" + help + Check is a unit testing framework for C. + + https://libcheck.github.io/check/ diff --git a/package/check/check.hash b/package/check/check.hash new file mode 100644 index 00000000..a8cec60d --- /dev/null +++ b/package/check/check.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 20e7360f5774844c09fde696e5bf71d061e9f53b3d763d886d3318d8893fdda4 check-11970a7e112dfe243a2e68773f014687df2900e8.tar.gz +# License files, locally calculated +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING.LESSER diff --git a/package/check/check.mk b/package/check/check.mk new file mode 100644 index 00000000..95fe5c9d --- /dev/null +++ b/package/check/check.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# check +# +################################################################################ + +# This is the same as tag 0.15.2, but we can't use it, as to avoid conflict +# with the released tarball that was incomplete +CHECK_VERSION = 11970a7e112dfe243a2e68773f014687df2900e8 +CHECK_SITE = $(call github,libcheck,check,$(CHECK_VERSION)) +CHECK_INSTALL_STAGING = YES +CHECK_DEPENDENCIES = host-pkgconf +CHECK_LICENSE = LGPL-2.1+ +CHECK_LICENSE_FILES = COPYING.LESSER +CHECK_CONF_OPTS = -DBUILD_TESTING=OFF -DINSTALL_CHECKMK=OFF + +$(eval $(cmake-package)) diff --git a/package/checkpolicy/Config.in b/package/checkpolicy/Config.in new file mode 100644 index 00000000..6a1f2299 --- /dev/null +++ b/package/checkpolicy/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_CHECKPOLICY + bool "checkpolicy" + depends on BR2_TOOLCHAIN_HAS_THREADS # libselinux + depends on !BR2_STATIC_LIBS # libselinux + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # libselinux -> libsepol + select BR2_PACKAGE_LIBSELINUX + select BR2_PACKAGE_FLEX + help + checkpolicy is the SELinux policy compiler. It uses libsepol + to generate the binary policy. checkpolicy uses the static + libsepol since it deals with low level details of the policy + that have not been encapsulated/abstracted by a proper + shared library interface. + + http://selinuxproject.org/page/Main_Page + +comment "checkpolicy needs a toolchain w/ threads, dynamic library, gcc >= 5" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 diff --git a/package/checkpolicy/Config.in.host b/package/checkpolicy/Config.in.host new file mode 100644 index 00000000..38e35e2f --- /dev/null +++ b/package/checkpolicy/Config.in.host @@ -0,0 +1,14 @@ +config BR2_PACKAGE_HOST_CHECKPOLICY + bool "host checkpolicy" + depends on BR2_HOST_GCC_AT_LEAST_5 # host-libselinux -> host-libsepol + help + checkpolicy is the SELinux policy compiler. It uses libsepol + to generate the binary policy. checkpolicy uses the static + libsepol since it deals with low level details of the policy + that have not been encapsulated/abstracted by a proper + shared library interface. + + http://selinuxproject.org/page/Main_Page + +comment "host checkpolicy needs a toolchain w/ host gcc >= 5" + depends on !BR2_HOST_GCC_AT_LEAST_5 diff --git a/package/checkpolicy/checkpolicy.hash b/package/checkpolicy/checkpolicy.hash new file mode 100644 index 00000000..d2ecc726 --- /dev/null +++ b/package/checkpolicy/checkpolicy.hash @@ -0,0 +1,5 @@ +# https://github.com/SELinuxProject/selinux/wiki/Releases +sha256 1b346b3cdd4f8a78a157627bad64a3b3479c67b6a19d15e6d5c8694620eadbc1 checkpolicy-3.6.tar.gz + +# Hash for license file +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 LICENSE diff --git a/package/checkpolicy/checkpolicy.mk b/package/checkpolicy/checkpolicy.mk new file mode 100644 index 00000000..109aaf60 --- /dev/null +++ b/package/checkpolicy/checkpolicy.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# checkpolicy +# +################################################################################ + +CHECKPOLICY_VERSION = 3.6 +CHECKPOLICY_SITE = https://github.com/SELinuxProject/selinux/releases/download/$(CHECKPOLICY_VERSION) +CHECKPOLICY_LICENSE = GPL-2.0 +CHECKPOLICY_LICENSE_FILES = LICENSE + +CHECKPOLICY_DEPENDENCIES = libselinux flex host-flex host-bison + +CHECKPOLICY_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) \ + LEX="$(HOST_DIR)/bin/flex" \ + YACC="$(HOST_DIR)/bin/bison -y" + +# DESTDIR is used at build time to find libselinux +define CHECKPOLICY_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(CHECKPOLICY_MAKE_OPTS) DESTDIR=$(STAGING_DIR) +endef + +define CHECKPOLICY_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(CHECKPOLICY_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install +endef + +HOST_CHECKPOLICY_DEPENDENCIES = host-libselinux host-flex host-bison + +# PREFIX is used at build time to find host-libselinux +HOST_CHECKPOLICY_MAKE_OPTS = \ + $(HOST_CONFIGURE_OPTS) \ + PREFIX=$(HOST_DIR) \ + LEX="$(HOST_DIR)/bin/flex" \ + YACC="$(HOST_DIR)/bin/bison -y" + +define HOST_CHECKPOLICY_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_CHECKPOLICY_MAKE_OPTS) +endef + +define HOST_CHECKPOLICY_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_CHECKPOLICY_MAKE_OPTS) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/checksec/Config.in.host b/package/checksec/Config.in.host new file mode 100644 index 00000000..e4e8903b --- /dev/null +++ b/package/checksec/Config.in.host @@ -0,0 +1,17 @@ +config BR2_PACKAGE_HOST_CHECKSEC + bool "host checksec" + help + This tool provides a shell script to check the + properties of executables + (PIE,RELRO,Stack Canaries,Fortify Source). + It also has a kernel test mode that can run on target + for testing of PaX, ASLR, heap and config hardening. + + NOTE: when using this tool as a host tool, the tool + can offline check a target folder of elf files for + hardening features enabled in those elf files. There + are other features of this tool, like the kernel test + feature that are not functional offline, but require the + user to execute in a chroot or on target. + + https://github.com/slimm609/checksec.sh.git diff --git a/package/checksec/checksec.hash b/package/checksec/checksec.hash new file mode 100644 index 00000000..856662b1 --- /dev/null +++ b/package/checksec/checksec.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 eba0616f4033385d6093608a2a2aad3c2debb847d6778c87346f89c80946684f checksec-2.7.1.tar.gz +sha256 55154b4be6dfcb3ff29d1e3648d0d07b3943a5fcc3af7c2e0e799b074734f722 LICENSE.txt diff --git a/package/checksec/checksec.mk b/package/checksec/checksec.mk new file mode 100644 index 00000000..c1170e82 --- /dev/null +++ b/package/checksec/checksec.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# checksec +# +################################################################################ + +CHECKSEC_VERSION = 2.7.1 +CHECKSEC_SITE = $(call github,slimm609,checksec.sh,$(CHECKSEC_VERSION)) +CHECKSEC_LICENSE = BSD-3-Clause +CHECKSEC_LICENSE_FILES = LICENSE.txt + +define HOST_CHECKSEC_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/checksec $(HOST_DIR)/bin/checksec +endef + +$(eval $(host-generic-package)) diff --git a/package/chicken/Config.in b/package/chicken/Config.in new file mode 100644 index 00000000..84e4ca1f --- /dev/null +++ b/package/chicken/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_CHICKEN + bool "chicken" + depends on BR2_USE_MMU + help + CHICKEN is a compiler for the Scheme programming language. + This package contains the runtime, the interpreter, and + the (native for target) compiler. + + https://call-cc.org diff --git a/package/chicken/chicken.hash b/package/chicken/chicken.hash new file mode 100644 index 00000000..18f6693a --- /dev/null +++ b/package/chicken/chicken.hash @@ -0,0 +1,4 @@ +# From https://code.call-cc.org/releases/5.4.0/chicken-5.4.0.tar.gz.sha256 +sha256 3c5d4aa61c1167bf6d9bf9eaf891da7630ba9f5f3c15bf09515a7039bfcdec5f chicken-5.4.0.tar.gz +# Locally computed +sha256 c0ed699d5c4a8687f90a6488244f7f57d48a7f2d42bb7461b08a0d69a07d4f58 LICENSE diff --git a/package/chicken/chicken.mk b/package/chicken/chicken.mk new file mode 100644 index 00000000..ca5f7569 --- /dev/null +++ b/package/chicken/chicken.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# chicken +# +################################################################################ + +CHICKEN_VERSION = 5.4.0 +CHICKEN_SITE = https://code.call-cc.org/releases/$(CHICKEN_VERSION) +CHICKEN_LICENSE = BSD-3-Clause +CHICKEN_LICENSE_FILES = LICENSE +CHICKEN_CPE_ID_VENDOR = call-cc +CHICKEN_INSTALL_STAGING = YES + +# If ARCH is not set, it attempts to autodiscover. But it is anyway not used. +CHICKEN_MAKE_OPTS = \ + ARCH=unused \ + C_COMPILER="$(TARGET_CC)" \ + CXX_COMPILER="$(TARGET_CXX)" \ + C_COMPILER_OPTIMIZATION_OPTIONS="$(TARGET_CFLAGS)" \ + PREFIX=/usr \ + PLATFORM=linux \ + LIBRARIAN="$(TARGET_AR)" + +ifeq ($(BR2_STATIC_LIBS),y) +CHICKEN_MAKE_OPTS += STATICBUILD=1 +endif + +define CHICKEN_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + $(CHICKEN_MAKE_OPTS) all +endef + +# README states that parallel builds are not supported.. +define CHICKEN_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) \ + $(CHICKEN_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install +endef + +define CHICKEN_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) \ + $(CHICKEN_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/chipmunk/0001-Fix-build-failure-on-musl.patch b/package/chipmunk/0001-Fix-build-failure-on-musl.patch new file mode 100644 index 00000000..4485e937 --- /dev/null +++ b/package/chipmunk/0001-Fix-build-failure-on-musl.patch @@ -0,0 +1,37 @@ +From 231c1fb97785290aaac89ed74d7cb24eaa74b363 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 2 Sep 2018 12:05:22 +0200 +Subject: [PATCH] Fix build failure on musl + +Build fails on: +/home/test/autobuild/run/instance-0/output/build/chipmunk-7.0.2/src/cpHastySpace.c:11:24: fatal error: sys/sysctl.h: No such file or directory + +Indeed, sys/sysctl.h is not available on musl so include this header +only if __APPLE__ is defined as sysctlbyname is only used in this case. + +Fixes: + - http://autobuild.buildroot.org/results/e5be2f8eb9315a9054e1c8d854dec37cbb28eed7 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/slembcke/Chipmunk2D/pull/171] +--- + src/cpHastySpace.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/cpHastySpace.c b/src/cpHastySpace.c +index 8dca425..e087df8 100644 +--- a/src/cpHastySpace.c ++++ b/src/cpHastySpace.c +@@ -8,7 +8,9 @@ + + //#include + #ifndef _WIN32 ++#ifdef __APPLE__ + #include ++#endif + #include + #else + #ifndef WIN32_LEAN_AND_MEAN +-- +2.17.1 + diff --git a/package/chipmunk/Config.in b/package/chipmunk/Config.in new file mode 100644 index 00000000..7275d684 --- /dev/null +++ b/package/chipmunk/Config.in @@ -0,0 +1,12 @@ + +comment "chipmunk needs an OpenGL backend" + depends on !BR2_PACKAGE_HAS_LIBGL + +config BR2_PACKAGE_CHIPMUNK + bool "chipmunk" + depends on BR2_PACKAGE_HAS_LIBGL + help + Chipmunk2D is a simple, lightweight, fast and portable 2D + rigid body physics library written in C. + + http://chipmunk-physics.net/ diff --git a/package/chipmunk/chipmunk.hash b/package/chipmunk/chipmunk.hash new file mode 100644 index 00000000..0fb8e15b --- /dev/null +++ b/package/chipmunk/chipmunk.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 1e6f093812d6130e45bdf4cb80280cb3c93d1e1833d8cf989d554d7963b7899a Chipmunk-7.0.3.tar.gz + +# Hash for license file: +sha256 109cedb0301cba4e05fa99241f162bdad015c9541ae84b420b0148ac1ea588e2 LICENSE.txt diff --git a/package/chipmunk/chipmunk.mk b/package/chipmunk/chipmunk.mk new file mode 100644 index 00000000..e85af5d1 --- /dev/null +++ b/package/chipmunk/chipmunk.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# chipmunk +# +################################################################################ + +CHIPMUNK_VERSION = 7.0.3 +CHIPMUNK_SITE = https://github.com/slembcke/Chipmunk2D/archive +CHIPMUNK_SOURCE = Chipmunk-$(CHIPMUNK_VERSION).tar.gz +CHIPMUNK_INSTALL_STAGING = YES +CHIPMUNK_LICENSE = MIT +CHIPMUNK_LICENSE_FILES = LICENSE.txt +CHIPMUNK_DEPENDENCIES = libgl +CHIPMUNK_CONF_OPTS = -DBUILD_DEMOS=OFF + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +CHIPMUNK_CONF_OPTS += -DBUILD_STATIC=ON -DINSTALL_STATIC=ON +else +CHIPMUNK_CONF_OPTS += -DBUILD_STATIC=OFF -DINSTALL_STATIC=OFF +endif + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +CHIPMUNK_CONF_OPTS += -DBUILD_SHARED=ON +else +CHIPMUNK_CONF_OPTS += -DBUILD_SHARED=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/chocolate-doom/0001-Remove-redundant-demoextend-definition.patch b/package/chocolate-doom/0001-Remove-redundant-demoextend-definition.patch new file mode 100644 index 00000000..bbfbdbb2 --- /dev/null +++ b/package/chocolate-doom/0001-Remove-redundant-demoextend-definition.patch @@ -0,0 +1,29 @@ +From a8fd4b1f563d24d4296c3e8225c8404e2724d4c2 Mon Sep 17 00:00:00 2001 +From: Jordan Christiansen +Date: Sun, 15 Mar 2020 16:55:33 -0500 +Subject: [PATCH] Remove redundant demoextend definition + +GCC 10 enables -fno-common by default, which causes the linker to fail when +there are multple definitions of a global variable. + +See https://gcc.gnu.org/gcc-10/porting_to.html + +[Retrieved from: +https://github.com/chocolate-doom/chocolate-doom/commit/a8fd4b1f563d24d4296c3e8225c8404e2724d4c2] +Signed-off-by: Fabrice Fontaine +--- + src/hexen/mn_menu.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/hexen/mn_menu.c b/src/hexen/mn_menu.c +index 059f45b3e..a97b7fcd1 100644 +--- a/src/hexen/mn_menu.c ++++ b/src/hexen/mn_menu.c +@@ -131,7 +131,6 @@ boolean MenuActive; + int InfoType; + int messageson = true; + boolean mn_SuicideConsole; +-boolean demoextend; // from h2def.h + + // PRIVATE DATA DEFINITIONS ------------------------------------------------ + diff --git a/package/chocolate-doom/Config.in b/package/chocolate-doom/Config.in new file mode 100644 index 00000000..406b04ec --- /dev/null +++ b/package/chocolate-doom/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_CHOCOLATE_DOOM + bool "chocolate-doom" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # sdl2 + select BR2_PACKAGE_SDL2 + select BR2_PACKAGE_SDL2_MIXER + select BR2_PACKAGE_SDL2_NET + help + Chocolate Doom is a set of conservative source ports for Doom, + Heretic, Hexen and Strife, with a philosophy of preserving the + look, feel, and bugs of the vanilla versions of each. + + http://www.chocolate-doom.org + +comment "chocolate-doom needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/package/chocolate-doom/chocolate-doom.hash b/package/chocolate-doom/chocolate-doom.hash new file mode 100644 index 00000000..79eb1c6a --- /dev/null +++ b/package/chocolate-doom/chocolate-doom.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 d435d6177423491d60be706da9f07d3ab4fabf3e077ec2a3fc216e394fcfc8c7 chocolate-doom-3.0.1.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/chocolate-doom/chocolate-doom.mk b/package/chocolate-doom/chocolate-doom.mk new file mode 100644 index 00000000..581b2c51 --- /dev/null +++ b/package/chocolate-doom/chocolate-doom.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# chocolate-doom +# +################################################################################ + +CHOCOLATE_DOOM_VERSION = 3.0.1 +CHOCOLATE_DOOM_SITE = http://www.chocolate-doom.org/downloads/$(CHOCOLATE_DOOM_VERSION) +CHOCOLATE_DOOM_LICENSE = GPL-2.0+ +CHOCOLATE_DOOM_LICENSE_FILES = COPYING +CHOCOLATE_DOOM_CPE_ID_VENDOR = chocolate-doom +CHOCOLATE_DOOM_CPE_ID_PRODUCT = chocolate_doom +CHOCOLATE_DOOM_DEPENDENCIES = host-pkgconf sdl2 sdl2_mixer sdl2_net + +# Avoid installing desktop entries, icons, etc. +CHOCOLATE_DOOM_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-exec + +CHOCOLATE_DOOM_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +CHOCOLATE_DOOM_CFLAGS += -O0 +endif + +CHOCOLATE_DOOM_CONF_ENV += CFLAGS="$(CHOCOLATE_DOOM_CFLAGS)" + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +CHOCOLATE_DOOM_DEPENDENCIES += libpng +CHOCOLATE_DOOM_CONF_OPTS += --with-libpng +else +CHOCOLATE_DOOM_CONF_OPTS += --without-libpng +endif + +ifeq ($(BR2_PACKAGE_LIBSAMPLERATE),y) +CHOCOLATE_DOOM_DEPENDENCIES += libsamplerate +CHOCOLATE_DOOM_CONF_OPTS += --with-libsamplerate +else +CHOCOLATE_DOOM_CONF_OPTS += --without-libsamplerate +endif + +$(eval $(autotools-package)) diff --git a/package/chrony/Config.in b/package/chrony/Config.in new file mode 100644 index 00000000..c22b756c --- /dev/null +++ b/package/chrony/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_CHRONY + bool "chrony" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBCAP + help + Chrony is a pair of programs which are used to maintain the + accuracy of the system clock. + + http://chrony.tuxfamily.org/ + +if BR2_PACKAGE_CHRONY + +config BR2_PACKAGE_CHRONY_DEBUG_LOGGING + bool "enable debug logging support" + help + Enable support for debug logging output from Chrony when + enabled at runtime. If disabled, code for debug logging will + not be compiled in. + +endif diff --git a/package/chrony/S49chrony b/package/chrony/S49chrony new file mode 100644 index 00000000..f75233fe --- /dev/null +++ b/package/chrony/S49chrony @@ -0,0 +1,26 @@ +#!/bin/sh +# +# Start chrony + +[ -r /etc/default/chrony ] && . /etc/default/chrony + +case "$1" in + start) + printf "Starting chrony: " + chronyd $CHRONY_ARGS && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping chrony: " + killall chronyd && echo "OK" || echo "FAIL" + ;; + restart|reload) + "$0" stop + sleep 1 + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/package/chrony/chrony.hash b/package/chrony/chrony.hash new file mode 100644 index 00000000..2cf6cca0 --- /dev/null +++ b/package/chrony/chrony.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +# https://download.tuxfamily.org/chrony/chrony-4.4-tar-gz-asc.txt +sha256 eafb07e6daf92b142200f478856dfed6efc9ea2d146eeded5edcb09b93127088 chrony-4.4.tar.gz +# Locally calculated +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/chrony/chrony.mk b/package/chrony/chrony.mk new file mode 100644 index 00000000..e7e6931a --- /dev/null +++ b/package/chrony/chrony.mk @@ -0,0 +1,85 @@ +################################################################################ +# +# chrony +# +################################################################################ + +CHRONY_VERSION = 4.4 +CHRONY_SITE = http://download.tuxfamily.org/chrony +CHRONY_LICENSE = GPL-2.0 +CHRONY_LICENSE_FILES = COPYING +CHRONY_CPE_ID_VENDOR = tuxfamily +CHRONY_SELINUX_MODULES = chronyd +CHRONY_DEPENDENCIES = host-pkgconf libcap + +CHRONY_CONF_OPTS = \ + --host-system=Linux \ + --host-machine=$(BR2_ARCH) \ + --prefix=/usr \ + --without-tomcrypt \ + --with-user=chrony \ + $(if $(BR2_PACKAGE_CHRONY_DEBUG_LOGGING),--enable-debug,--disable-debug) + +define CHRONY_USERS + chrony -1 chrony -1 * /run/chrony - - Time daemon +endef + +ifeq ($(BR2_PACKAGE_LIBNSS),y) +CHRONY_DEPENDENCIES += libnss +else +CHRONY_CONF_OPTS += --without-nss +endif + +ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) +CHRONY_CONF_OPTS += --enable-scfilter +CHRONY_DEPENDENCIES += libseccomp +else +CHRONY_CONF_OPTS += --without-seccomp +endif + +ifeq ($(BR2_PACKAGE_LIBEDIT),y) +CHRONY_DEPENDENCIES += libedit +else +CHRONY_CONF_OPTS += --without-editline --disable-readline +endif + +# If pps-tools is available, build it before so the package can use it +# (HAVE_SYS_TIMEPPS_H). +ifeq ($(BR2_PACKAGE_PPS_TOOLS),y) +CHRONY_DEPENDENCIES += pps-tools +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +CHRONY_DEPENDENCIES += gnutls +else +CHRONY_CONF_OPTS += --without-gnutls +endif + +ifeq ($(BR2_PACKAGE_NETTLE),y) +CHRONY_DEPENDENCIES += nettle +else +CHRONY_CONF_OPTS += --without-nettle +endif + +define CHRONY_CONFIGURE_CMDS + cd $(@D) && $(TARGET_CONFIGURE_OPTS) ./configure $(CHRONY_CONF_OPTS) +endef + +define CHRONY_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define CHRONY_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" install +endef + +define CHRONY_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/chrony/S49chrony $(TARGET_DIR)/etc/init.d/S49chrony +endef + +define CHRONY_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/chrony/chrony.service \ + $(TARGET_DIR)/usr/lib/systemd/system/chrony.service +endef + +$(eval $(generic-package)) diff --git a/package/chrony/chrony.service b/package/chrony/chrony.service new file mode 100644 index 00000000..210122cf --- /dev/null +++ b/package/chrony/chrony.service @@ -0,0 +1,15 @@ +[Unit] +Description=Chrony Network Time Daemon +After=syslog.target network.target +Conflicts=systemd-timesyncd.service + +[Service] +# Turn off DNSSEC validation for hostname look-ups, since those need the +# correct time to work, but we likely won't acquire that without NTP. Let's +# break this chicken-and-egg cycle here. +Environment=SYSTEMD_NSS_RESOLVE_VALIDATE=0 +ExecStart=/usr/sbin/chronyd -n +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/cifs-utils/Config.in b/package/cifs-utils/Config.in new file mode 100644 index 00000000..d1b1406a --- /dev/null +++ b/package/cifs-utils/Config.in @@ -0,0 +1,33 @@ +config BR2_PACKAGE_CIFS_UTILS + bool "cifs-utils" + # uses fork() + depends on BR2_USE_MMU + help + The in-kernel CIFS filesystem is generally the preferred + method for mounting SMB/CIFS shares on Linux. The in-kernel + CIFS filesystem relies on a set of user-space tools. That + package of tools is called cifs-utils. Although not really + part of Samba proper, these tools were originally part of + the Samba package. For several reasons, shipping these tools + as part of Samba was problematic and it was deemed better to + split them off into their own package. + + http://wiki.samba.org/index.php/LinuxCIFS_utils + +if BR2_PACKAGE_CIFS_UTILS + +config BR2_PACKAGE_CIFS_UTILS_SMBTOOLS + bool "smbtools" + depends on BR2_USE_WCHAR # python3 + depends on BR2_TOOLCHAIN_HAS_THREADS # python3 + depends on !BR2_STATIC_LIBS # python3 + select BR2_PACKAGE_PYTHON3 # runtime + help + Install the smb tools smbinfo and smb2-quota (python + implementations). + +comment "smbtools needs a toolchain w/ wchar, threads, dynamic library" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS + +endif diff --git a/package/cifs-utils/cifs-utils.hash b/package/cifs-utils/cifs-utils.hash new file mode 100644 index 00000000..ec6ea559 --- /dev/null +++ b/package/cifs-utils/cifs-utils.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +sha256 a7b6940e93250c1676a6fa66b6ead91b78cd43a5fee99cc462459c8b9cf1e6f4 cifs-utils-6.15.tar.bz2 + +# Hash for license file: +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/cifs-utils/cifs-utils.mk b/package/cifs-utils/cifs-utils.mk new file mode 100644 index 00000000..edf08d4b --- /dev/null +++ b/package/cifs-utils/cifs-utils.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# cifs-utils +# +################################################################################ + +CIFS_UTILS_VERSION = 6.15 +CIFS_UTILS_SOURCE = cifs-utils-$(CIFS_UTILS_VERSION).tar.bz2 +CIFS_UTILS_SITE = http://ftp.samba.org/pub/linux-cifs/cifs-utils +CIFS_UTILS_LICENSE = GPL-3.0+ +CIFS_UTILS_LICENSE_FILES = COPYING +CIFS_UTILS_CPE_ID_VENDOR = samba +# Missing install-sh in release tarball +CIFS_UTILS_AUTORECONF = YES +CIFS_UTILS_DEPENDENCIES = host-pkgconf + +# Let's disable PIE unconditionally. We want PIE to be enabled only by +# the global BR2_RELRO_FULL option. +CIFS_UTILS_CONF_OPTS = --disable-pie --disable-man + +# uses C11 code in smbinfo.c and mtab.c +CIFS_UTILS_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -std=gnu11" + +ifeq ($(BR2_PACKAGE_KEYUTILS),y) +CIFS_UTILS_DEPENDENCIES += keyutils +endif + +define CIFS_UTILS_NO_WERROR + $(SED) 's/-Werror//' $(@D)/Makefile.in +endef + +CIFS_UTILS_POST_PATCH_HOOKS += CIFS_UTILS_NO_WERROR + +ifeq ($(BR2_PACKAGE_CIFS_UTILS_SMBTOOLS),) +define CIFS_UTILS_REMOVE_SMBTOOLS + rm -f $(TARGET_DIR)/usr/bin/smbinfo + rm -f $(TARGET_DIR)/usr/bin/smb2-quota +endef +CIFS_UTILS_POST_INSTALL_TARGET_HOOKS += CIFS_UTILS_REMOVE_SMBTOOLS +endif + +$(eval $(autotools-package)) diff --git a/package/circus/Config.in b/package/circus/Config.in new file mode 100644 index 00000000..832b04df --- /dev/null +++ b/package/circus/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_CIRCUS + bool "circus" + depends on BR2_PACKAGE_PYTHON3 # python-tornado + depends on BR2_INSTALL_LIBSTDCPP # pyzmq -> zeromq + depends on BR2_TOOLCHAIN_HAS_THREADS # pyzmq -> zeromq + select BR2_PACKAGE_PYTHON_IOWAIT # runtime + select BR2_PACKAGE_PYTHON_PSUTIL # runtime + select BR2_PACKAGE_PYTHON_PYZMQ # runtime + select BR2_PACKAGE_PYTHON_TORNADO # runtime + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + help + Circus is a program that will let you run and watch multiple + processes and sockets. + + https://circus.readthedocs.org/en/latest/ + +comment "circus needs Python 3 and a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_PACKAGE_PYTHON3 diff --git a/package/circus/circus.hash b/package/circus/circus.hash new file mode 100644 index 00000000..b9e1ef2e --- /dev/null +++ b/package/circus/circus.hash @@ -0,0 +1,4 @@ +# md5, sha256 from https://pypi.org/pypi/circus/json +md5 9887ddafebef7475c08ff2c8e5cc2fad circus-0.16.1.tar.gz +sha256 dd7c011eb67785a1c96a4db94a56a22810c6ed608cebf301152dabc771654c5d circus-0.16.1.tar.gz +sha256 3df739c05a4eed7efdf4987142658d2a4f1243e5f08e72a5ecedac5749c92a49 LICENSE diff --git a/package/circus/circus.mk b/package/circus/circus.mk new file mode 100644 index 00000000..8f650de1 --- /dev/null +++ b/package/circus/circus.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# circus +# +################################################################################ + +CIRCUS_VERSION = 0.16.1 +CIRCUS_SITE = https://files.pythonhosted.org/packages/09/8a/44a0b6b35ecf5dcf22bf51e4bcf188ec9e7ab9dd4c14330ba1b8bea51102 +CIRCUS_SETUP_TYPE = setuptools +CIRCUS_LICENSE = Apache-2.0 +CIRCUS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/civetweb/0001-resources-Makefile.in-lua-fix-build-with-Lua-5.1.patch b/package/civetweb/0001-resources-Makefile.in-lua-fix-build-with-Lua-5.1.patch new file mode 100644 index 00000000..ac9655ca --- /dev/null +++ b/package/civetweb/0001-resources-Makefile.in-lua-fix-build-with-Lua-5.1.patch @@ -0,0 +1,44 @@ +From 3afcd237e509a6700c449056dcc5b9092af31e6a Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 6 Nov 2023 21:38:02 +0100 +Subject: [PATCH] resources/Makefile.in-lua: fix build with Lua 5.1 + +Fix the following build failure with Lua 5.1 raised since version 1.16 +and +https://github.com/civetweb/civetweb/commit/82ba5a04c9a1ca980d8dfe00c18e086017e8ab25: + +/home/buildroot/autobuild/instance-1/output-1/host/opt/ext-toolchain/bin/../lib/gcc/sh4-buildroot-linux-gnu/13.2.0/../../../../sh4-buildroot-linux-gnu/bin/ld: out/src/third_party/lua_struct.o: in function `luaopen_struct': +lua_struct.c:(.text+0xce4): undefined reference to `luaL_newlib' + +Fixes: + - http://autobuild.buildroot.org/results/7459b504e52f473c5830c0f3c7bffd037f6e1770 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/civetweb/civetweb/pull/1211 +--- + resources/Makefile.in-lua | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/resources/Makefile.in-lua b/resources/Makefile.in-lua +index d3038f66..45f80181 100644 +--- a/resources/Makefile.in-lua ++++ b/resources/Makefile.in-lua +@@ -150,6 +150,7 @@ CFLAGS += -DUSE_LUA_FILE_SYSTEM + #SOURCE_DIRS = $(LFS_DIR) + + ++ifneq ($(WITH_LUA_VERSION), 501) + LXX_DIR = src/third_party + LXX_SOURCE_FILES = lua_struct.c + LXX_SOURCES = $(addprefix $(LXX_DIR)/, $(LXX_SOURCE_FILES)) +@@ -159,6 +160,7 @@ OBJECTS += $(LXX_OBJECTS) + CFLAGS += $(LXX_CFLAGS) + CFLAGS += -DUSE_LUA_STRUCT + #SOURCE_DIRS = $(LXX_DIR) ++endif + + + ifneq ($(WITH_LUA_VERSION), 501) +-- +2.42.0 + diff --git a/package/civetweb/Config.in b/package/civetweb/Config.in new file mode 100644 index 00000000..6bca5ed8 --- /dev/null +++ b/package/civetweb/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_CIVETWEB + bool "civetweb" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_CIVETWEB_SERVER if !BR2_PACKAGE_CIVETWEB_LIB + help + Full featured embedded web server with Lua support. + + https://sourceforge.net/projects/civetweb + +if BR2_PACKAGE_CIVETWEB + +config BR2_PACKAGE_CIVETWEB_SERVER + bool "enable the web server application" + help + Include the web server and its config files. + +config BR2_PACKAGE_CIVETWEB_LIB + bool "enable library for embedding" + help + Enable the civetweb library for embedding in another + application. + +endif + +comment "civetweb needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/civetweb/civetweb.hash b/package/civetweb/civetweb.hash new file mode 100644 index 00000000..0daa6efe --- /dev/null +++ b/package/civetweb/civetweb.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 f0e471c1bf4e7804a6cfb41ea9d13e7d623b2bcc7bc1e2a4dd54951a24d60285 civetweb-1.16.tar.gz +sha256 bc24af9ffb777f4842f8556ac752efd5ea212c55d2eccfae58cc2c2a24ea1f03 LICENSE.md diff --git a/package/civetweb/civetweb.mk b/package/civetweb/civetweb.mk new file mode 100644 index 00000000..629c1b59 --- /dev/null +++ b/package/civetweb/civetweb.mk @@ -0,0 +1,105 @@ +################################################################################ +# +# civetweb +# +################################################################################ + +CIVETWEB_VERSION = 1.16 +CIVETWEB_SITE = $(call github,civetweb,civetweb,v$(CIVETWEB_VERSION)) +CIVETWEB_LICENSE = MIT +CIVETWEB_LICENSE_FILES = LICENSE.md +CIVETWEB_CPE_ID_VALID = YES + +CIVETWEB_CONF_OPTS = TARGET_OS=LINUX WITH_IPV6=1 \ + $(if $(BR2_INSTALL_LIBSTDCPP),WITH_CPP=1) +CIVETWEB_COPT = -DHAVE_POSIX_FALLOCATE=0 +CIVETWEB_LIBS = -lpthread -lm +CIVETWEB_SYSCONFDIR = /etc +CIVETWEB_HTMLDIR = /var/www +CIVETWEB_INSTALL_OPTS = \ + DOCUMENT_ROOT="$(CIVETWEB_HTMLDIR)" \ + CONFIG_FILE2="$(CIVETWEB_SYSCONFDIR)/civetweb.conf" \ + HTMLDIR="$(TARGET_DIR)$(CIVETWEB_HTMLDIR)" \ + SYSCONFDIR="$(TARGET_DIR)$(CIVETWEB_SYSCONFDIR)" + +ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_4),) +CIVETWEB_COPT += -DNO_ATOMICS=1 +endif + +ifeq ($(BR2_PACKAGE_LUAJIT),y) +CIVETWEB_CONF_OPTS += WITH_LUAJIT_SHARED=1 +CIVETWEB_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs luajit` -ldl +CIVETWEB_DEPENDENCIES += host-pkgconf luajit +else ifeq ($(BR2_PACKAGE_LUA):$(BR2_STATIC_LIBS),y:) +CIVETWEB_CONF_OPTS += WITH_LUA=1 WITH_LUA_SHARED=1 LUA_SHARED_LIB_FLAG='' +CIVETWEB_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs lua` +CIVETWEB_DEPENDENCIES += host-pkgconf lua +ifeq ($(BR2_PACKAGE_LUA_5_1),y) +CIVETWEB_CONF_OPTS += WITH_LUA_VERSION=501 +else ifeq ($(BR2_PACKAGE_LUA_5_3),y) +CIVETWEB_CONF_OPTS += WITH_LUA_VERSION=503 +else ifeq ($(BR2_PACKAGE_LUA_5_4),y) +CIVETWEB_CONF_OPTS += WITH_LUA_VERSION=504 +endif +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +CIVETWEB_COPT += -DNO_SSL_DL +CIVETWEB_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs openssl` +CIVETWEB_DEPENDENCIES += openssl host-pkgconf +else +CIVETWEB_COPT += -DNO_SSL +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +CIVETWEB_CONF_OPTS += WITH_ZLIB=1 +CIVETWEB_LIBS += -lz +CIVETWEB_DEPENDENCIES += zlib +endif + +ifeq ($(BR2_PACKAGE_CIVETWEB_SERVER),y) +CIVETWEB_BUILD_TARGETS += build +CIVETWEB_INSTALL_TARGETS += install +endif + +ifeq ($(BR2_PACKAGE_CIVETWEB_LIB),y) +CIVETWEB_INSTALL_STAGING = YES +CIVETWEB_INSTALL_TARGETS += install-headers + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +CIVETWEB_BUILD_TARGETS += lib +CIVETWEB_INSTALL_TARGETS += install-lib +endif + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +CIVETWEB_BUILD_TARGETS += slib +CIVETWEB_INSTALL_TARGETS += install-slib +endif + +endif # BR2_PACKAGE_CIVETWEB_LIB + +define CIVETWEB_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(CIVETWEB_BUILD_TARGETS) \ + $(CIVETWEB_CONF_OPTS) \ + COPT="$(CIVETWEB_COPT)" LIBS="$(CIVETWEB_LIBS)" +endef + +define CIVETWEB_INSTALL_STAGING_CMDS + mkdir -p $(STAGING_DIR)/usr/include + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(CIVETWEB_INSTALL_TARGETS) \ + PREFIX="$(STAGING_DIR)/usr" \ + $(CIVETWEB_INSTALL_OPTS) \ + $(CIVETWEB_CONF_OPTS) \ + COPT='$(CIVETWEB_COPT)' +endef + +define CIVETWEB_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/include + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(CIVETWEB_INSTALL_TARGETS) \ + PREFIX="$(TARGET_DIR)/usr" \ + $(CIVETWEB_INSTALL_OPTS) \ + $(CIVETWEB_CONF_OPTS) \ + COPT='$(CIVETWEB_COPT)' +endef + +$(eval $(generic-package)) diff --git a/package/cjson/Config.in b/package/cjson/Config.in new file mode 100644 index 00000000..55262a09 --- /dev/null +++ b/package/cjson/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_CJSON + bool "cJSON" + help + An ultra-lightweight, portable, single-file, simple-as-can-be + ANSI-C compliant JSON parser, under MIT license. + + https://github.com/DaveGamble/cJSON + +if BR2_PACKAGE_CJSON + +config BR2_PACKAGE_CJSON_UTILS + bool "cJSON utils" + help + Supplementary library with support for JSON Pointer + (RFC-6901), JSON Patch (RFC-6902), JSON Merge Patch + (RFC-7386), and more. + +endif diff --git a/package/cjson/cjson.hash b/package/cjson/cjson.hash new file mode 100644 index 00000000..e07ae0f7 --- /dev/null +++ b/package/cjson/cjson.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 3aa806844a03442c00769b83e99970be70fbef03735ff898f4811dd03b9f5ee5 cjson-1.7.18.tar.gz +sha256 a36dda207c36db5818729c54e7ad4e8b0c6fba847491ba64f372c1a2037b6d5c LICENSE diff --git a/package/cjson/cjson.mk b/package/cjson/cjson.mk new file mode 100644 index 00000000..35304ec6 --- /dev/null +++ b/package/cjson/cjson.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# cjson +# +################################################################################ + +CJSON_VERSION = 1.7.18 +CJSON_SITE = $(call github,DaveGamble,cjson,v$(CJSON_VERSION)) +CJSON_INSTALL_STAGING = YES +CJSON_LICENSE = MIT +CJSON_LICENSE_FILES = LICENSE +CJSON_CPE_ID_VALID = YES +# Set ENABLE_CUSTOM_COMPILER_FLAGS to OFF in particular to disable +# -fstack-protector-strong which depends on BR2_TOOLCHAIN_HAS_SSP +CJSON_CONF_OPTS += \ + -DENABLE_CJSON_TEST=OFF \ + -DENABLE_CUSTOM_COMPILER_FLAGS=OFF + +# If BUILD_SHARED_AND_STATIC_LIBS is set to OFF, cjson uses the +# standard BUILD_SHARED_LIBS option which is passed by the +# cmake-package infrastructure. +ifeq ($(BR2_SHARED_STATIC_LIBS),y) +CJSON_CONF_OPTS += -DBUILD_SHARED_AND_STATIC_LIBS=ON +else +CJSON_CONF_OPTS += -DBUILD_SHARED_AND_STATIC_LIBS=OFF +endif + +ifeq ($(BR2_PACKAGE_CJSON_UTILS),y) +CJSON_CONF_OPTS += -DENABLE_CJSON_UTILS=ON +else +CJSON_CONF_OPTS += -DENABLE_CJSON_UTILS=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/clamav/Config.in b/package/clamav/Config.in new file mode 100644 index 00000000..ae5cad03 --- /dev/null +++ b/package/clamav/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_CLAMAV + bool "clamav" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # dlopen + depends on BR2_USE_WCHAR + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_HOST_RUSTC + select BR2_PACKAGE_JSON_C + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBMSPACK + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_MUSL_FTS if !BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_PCRE2 + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_ZLIB_FORCE_LIBZLIB + help + ClamAV is an open source antivirus engine for detecting + trojans, viruses, malware & other malicious threats. + + http://www.clamav.net + +comment "clamav needs a toolchain w/ C++, dynamic library, threads, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + depends on BR2_USE_MMU diff --git a/package/clamav/clamav.hash b/package/clamav/clamav.hash new file mode 100644 index 00000000..8e8351cf --- /dev/null +++ b/package/clamav/clamav.hash @@ -0,0 +1,14 @@ +# Locally calculated +sha256 f4d67240a8b2e882e18f864529040084617de066cdab9b7684951ace6ea6f3cf clamav-1.0.7.tar.gz +sha256 0c4fd2fa9733fc9122503797648710851e4ee6d9e4969dd33fcbd8c63cd2f584 COPYING.txt +sha256 d72a145c90918184a05ef65a04c9e6f7466faa59bc1b82c8f6a8ddc7ddcb9bed COPYING/COPYING.bzip2 +sha256 dfb818a0d41411c6fb1c193c68b73018ceadd1994bda41ad541cbff292894bc6 COPYING/COPYING.file +sha256 6dce638b76399e7521ad8e182d3e33e4496c85b3b69b6ff434b53017101e82ad COPYING/COPYING.getopt +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING/COPYING.LGPL +sha256 e3a9b913515a42f8ff3ef1551c3a2cdba383c39ed959729e0e2911219496ad74 COPYING/COPYING.llvm +sha256 c7cbcf00b59dc61165b655b45bf6c21bb685d593861e7abbc78460c499167b42 COPYING/COPYING.lzma +sha256 accdcf2455c07b99abea59016b3663eaef926a92092d103bfaa25fed27cf6b24 COPYING/COPYING.pcre +sha256 e2c1395a3d9fea6d5d25847c9d783db6e2cc8b085b4025861f459139c5dfd90b COPYING/COPYING.regex +sha256 1faccc6b5c7b958fb807a3f573d5be9bf7889fe898f7e0617c544b05a81bfd00 COPYING/COPYING.unrar +sha256 a20d6317c5384e8d4c05f9c31097878675d9429ec46090656166039cc10bc957 COPYING/COPYING.YARA +sha256 c2f77553f8d870c5635b0dace0519253233f172b33ce1fdf6578610706294eee COPYING/COPYING.zlib diff --git a/package/clamav/clamav.mk b/package/clamav/clamav.mk new file mode 100644 index 00000000..d748a33d --- /dev/null +++ b/package/clamav/clamav.mk @@ -0,0 +1,73 @@ +################################################################################ +# +# clamav +# +################################################################################ + +CLAMAV_VERSION = 1.0.7 +CLAMAV_SITE = https://www.clamav.net/downloads/production +CLAMAV_LICENSE = GPL-2.0 +CLAMAV_LICENSE_FILES = \ + COPYING.txt \ + COPYING/COPYING.bzip2 \ + COPYING/COPYING.file \ + COPYING/COPYING.getopt \ + COPYING/COPYING.LGPL \ + COPYING/COPYING.llvm \ + COPYING/COPYING.lzma \ + COPYING/COPYING.pcre \ + COPYING/COPYING.regex \ + COPYING/COPYING.unrar \ + COPYING/COPYING.zlib +CLAMAV_CPE_ID_VENDOR = clamav +CLAMAV_SELINUX_MODULES = clamav +# affects only Cisco devices +CLAMAV_IGNORE_CVES += CVE-2016-1405 +CLAMAV_DEPENDENCIES = \ + bzip2 \ + host-pkgconf \ + host-rustc \ + json-c \ + libcurl \ + libmspack \ + libxml2 \ + openssl \ + pcre2 \ + zlib \ + $(TARGET_NLS_DEPENDENCIES) + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +CLAMAV_LIBS += -latomic +endif + +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),) +CLAMAV_DEPENDENCIES += musl-fts +CLAMAV_LIBS += -lfts +endif + +CLAMAV_CONF_OPTS = \ + -DCMAKE_EXE_LINKER_FLAGS="$(CLAMAV_LIBS)" \ + -DCMAKE_SKIP_INSTALL_RPATH=ON \ + -DENABLE_JSON_SHARED=ON \ + -DENABLE_MAN_PAGES=OFF \ + -DENABLE_MILTER=OFF \ + -DENABLE_TESTS=OFF \ + -DHAVE_SYSTEM_LFS_FTS=ON \ + -DRUST_COMPILER_TARGET=$(RUSTC_TARGET_NAME) \ + -Dtest_run_result=ON \ + -Dtest_run_result__TRYRUN_OUTPUT=ON + +ifeq ($(BR2_PACKAGE_NCURSES),y) +CLAMAV_CONF_OPTS += -DENABLE_APP=ON +CLAMAV_DEPENDENCIES += ncurses +ifeq ($(BR2_INIT_SYSTEMD),y) +CLAMAV_CONF_OPTS += -DENABLE_SYSTEMD=ON +CLAMAV_DEPENDENCIES += systemd +else +CLAMAV_CONF_OPTS += -DENABLE_SYSTEMD=OFF +endif +else +CLAMAV_CONF_OPTS += -DENABLE_APP=OFF -DENABLE_SYSTEMD=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/cli11/Config.in b/package/cli11/Config.in new file mode 100644 index 00000000..87db9ac8 --- /dev/null +++ b/package/cli11/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_CLI11 + bool "cli11" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + help + CLI11 is a command line parser for C++11 and beyond that + provides a rich feature set with a simple and intuitive + interface. + + https://github.com/CLIUtils/CLI11 + +comment "cli11 needs a toolchain w/ C++, gcc >= 4.8" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 diff --git a/package/cli11/cli11.hash b/package/cli11/cli11.hash new file mode 100644 index 00000000..42ab5d13 --- /dev/null +++ b/package/cli11/cli11.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 aac0ab42108131ac5d3344a9db0fdf25c4db652296641955720a4fbe52334e22 cli11-2.3.2.tar.gz +sha256 4110754959bd99e0ebc34001ed0402ff5f371364e83f9db6d1e230d02368984f LICENSE diff --git a/package/cli11/cli11.mk b/package/cli11/cli11.mk new file mode 100644 index 00000000..349c14fe --- /dev/null +++ b/package/cli11/cli11.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# cli11 +# +################################################################################ + +CLI11_VERSION = 2.3.2 +CLI11_SITE = $(call github,CLIUtils,CLI11,v$(CLI11_VERSION)) +CLI11_LICENSE = BSD-3-Clause +CLI11_LICENSE_FILES = LICENSE +CLI11_INSTALL_STAGING = YES +CLI11_INSTALL_TARGET = NO +CLI11_CONF_OPTS = -DCLI11_BUILD_DOCS=OFF -DCLI11_BUILD_EXAMPLES=OFF + +$(eval $(cmake-package)) diff --git a/package/clinfo/Config.in b/package/clinfo/Config.in new file mode 100644 index 00000000..3df4feec --- /dev/null +++ b/package/clinfo/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_CLINFO + bool "clinfo" + depends on BR2_PACKAGE_HAS_LIBOPENCL + help + clinfo is a simple command-line application that enumerates + all possible (known) properties of the OpenCL platform and + devices available on the system. + + https://github.com/Oblomov/clinfo + +comment "clinfo needs an OpenCL provider" + depends on !BR2_PACKAGE_HAS_LIBOPENCL diff --git a/package/clinfo/clinfo.hash b/package/clinfo/clinfo.hash new file mode 100644 index 00000000..e433b674 --- /dev/null +++ b/package/clinfo/clinfo.hash @@ -0,0 +1,4 @@ +# locally calculated +sha256 e52f5c374a10364999d57a1be30219b47fb0b4f090e418f2ca19a0c037c1e694 clinfo-3.0.21.02.21.tar.gz +sha256 a2010f343487d3f7618affe54f789f5487602331c0a8d03f49e9a7c547cf0499 legalcode.txt +sha256 2a7a9321be169ea6edbc6b1010e8f7bb0f4c1482a2f65c34a49e9719f129b79a LICENSE diff --git a/package/clinfo/clinfo.mk b/package/clinfo/clinfo.mk new file mode 100644 index 00000000..d4c1df90 --- /dev/null +++ b/package/clinfo/clinfo.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# clinfo +# +################################################################################ + +CLINFO_VERSION = 3.0.21.02.21 +CLINFO_SITE = $(call github,Oblomov,clinfo,$(CLINFO_VERSION)) +CLINFO_LICENSE = CC0-1.0 +CLINFO_LICENSE_FILES = legalcode.txt LICENSE +CLINFO_DEPENDENCIES = libopencl + +define CLINFO_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define CLINFO_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/clinfo $(TARGET_DIR)/usr/bin/clinfo +endef + +$(eval $(generic-package)) diff --git a/package/cloop/cloop.hash b/package/cloop/cloop.hash new file mode 100644 index 00000000..eb922764 --- /dev/null +++ b/package/cloop/cloop.hash @@ -0,0 +1,6 @@ +# From http://snapshot.debian.org/archive/debian/20200419T152225Z/pool/main/c/cloop/cloop_3.14.1.3.dsc +sha256 e3079e70f9edae8ed1ac64694af08f6c7dc710ca65a56e4770dcb1325a293193 cloop_3.14.1.3.tar.xz + +# Hash for license files +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad advancecomp-1.15/COPYING +sha256 1b1f89e94e131e259b9e334565c5c3500d4b8aa755b75c3f145ddcdff3b89124 README diff --git a/package/cloop/cloop.mk b/package/cloop/cloop.mk new file mode 100644 index 00000000..6f6d5fe6 --- /dev/null +++ b/package/cloop/cloop.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# cloop +# +################################################################################ + +CLOOP_VERSION = 3.14.1.3 +CLOOP_SOURCE = cloop_$(CLOOP_VERSION).tar.xz +CLOOP_SITE = http://snapshot.debian.org/archive/debian/20200419T152225Z/pool/main/c/cloop +CLOOP_LICENSE = GPL-2.0 (module), GPL-2.0+ (advancecomp) +CLOOP_LICENSE_FILES = README advancecomp-1.15/COPYING + +HOST_CLOOP_DEPENDENCIES = host-zlib + +define HOST_CLOOP_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE1) -C $(@D) APPSONLY=yes \ + CFLAGS="$(HOST_CFLAGS) -D_GNU_SOURCE" CPPFLAGS="-std=c++14" +endef + +define HOST_CLOOP_INSTALL_CMDS + $(INSTALL) -m 0755 -d $(HOST_DIR)/bin + $(INSTALL) -m 755 $(@D)/create_compressed_fs $(HOST_DIR)/bin + $(INSTALL) -m 755 $(@D)/extract_compressed_fs $(HOST_DIR)/bin +endef + +$(eval $(host-generic-package)) diff --git a/package/cloudflared/Config.in b/package/cloudflared/Config.in new file mode 100644 index 00000000..31319c01 --- /dev/null +++ b/package/cloudflared/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_CLOUDFLARED + bool "cloudflared" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_GO + help + Cloudflare Tunnel client (formerly Argo Tunnel). + + https://github.com/cloudflare/cloudflared diff --git a/package/cloudflared/cloudflared.hash b/package/cloudflared/cloudflared.hash new file mode 100644 index 00000000..1aa959f8 --- /dev/null +++ b/package/cloudflared/cloudflared.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 c61ef286962c3bb9c5edb580b89dbf8293083fa09a8f0f59379fe8ec2d04cada cloudflared-2024.6.1-go2.tar.gz +sha256 58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd LICENSE diff --git a/package/cloudflared/cloudflared.mk b/package/cloudflared/cloudflared.mk new file mode 100644 index 00000000..a2436864 --- /dev/null +++ b/package/cloudflared/cloudflared.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# cloudflared +# +################################################################################ + +CLOUDFLARED_VERSION = 2024.6.1 +CLOUDFLARED_SITE = $(call github,cloudflare,cloudflared,$(CLOUDFLARED_VERSION)) +CLOUDFLARED_LICENSE = Apache-2.0 +CLOUDFLARED_LICENSE_FILES = LICENSE +CLOUDFLARED_CPE_ID_VENDOR = cloudflare +CLOUDFLARED_BUILD_TARGETS = cmd/cloudflared +CLOUDFLARED_LDFLAGS = -X main.Version=$(CLOUDFLARED_VERSION) + +$(eval $(golang-package)) diff --git a/package/clpeak/Config.in b/package/clpeak/Config.in new file mode 100644 index 00000000..c8329754 --- /dev/null +++ b/package/clpeak/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_CLPEAK + bool "clpeak" + depends on BR2_PACKAGE_HAS_LIBOPENCL + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + select BR2_PACKAGE_OPENCL_CLHPP + help + clpeak is a tool that profiles OpenCL devices + to find their peak capacities + + https://github.com/krrishnarraj/clpeak + +comment "clpeak needs an OpenCL provider, a toolchain w/ C++, gcc >= 4.8" + depends on !BR2_PACKAGE_HAS_LIBOPENCL \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 diff --git a/package/clpeak/clpeak.hash b/package/clpeak/clpeak.hash new file mode 100644 index 00000000..3db2a2ca --- /dev/null +++ b/package/clpeak/clpeak.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 7bc7beba6b3307290650abc4f13fe9389b271c1a64601fa333461516950d745b clpeak-1.1.2.tar.gz +sha256 88d9b4eb60579c191ec391ca04c16130572d7eedc4a86daa58bf28c6e14c9bcd LICENSE diff --git a/package/clpeak/clpeak.mk b/package/clpeak/clpeak.mk new file mode 100644 index 00000000..616a02c0 --- /dev/null +++ b/package/clpeak/clpeak.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# clpeak +# +################################################################################ + +CLPEAK_VERSION = 1.1.2 +CLPEAK_SITE = $(call github,krrishnarraj,clpeak,$(CLPEAK_VERSION)) +CLPEAK_LICENSE = Unlicense +CLPEAK_LICENSE_FILES = LICENSE +CLPEAK_DEPENDENCIES = libopencl opencl-clhpp + +$(eval $(cmake-package)) diff --git a/package/cmake/0001-rename-cmake-rootfile.patch b/package/cmake/0001-rename-cmake-rootfile.patch new file mode 100644 index 00000000..7e6e0a8c --- /dev/null +++ b/package/cmake/0001-rename-cmake-rootfile.patch @@ -0,0 +1,45 @@ +From 68d3b1dfbbd2f54bf81986d1d733deaf66658b15 Mon Sep 17 00:00:00 2001 +From: Davide Viti +Date: Thu, 14 Jul 2016 10:14:59 +0100 +Subject: [PATCH] rename cmake rootfile + +ctest fails on the target, because it cannot find CMake.cmake inside +CMAKE_DATA_DIR (typically set to "/usr/share/cmake-3.0"): all *.cmake +files are removed at build time via the target-finalize rule. + +This buildroot-specific patch makes sure ctest looks also for +"Modules/CMake.cmake.ctest" before complaining + +[Vincent: tweak patch for 3.6.3] +[James: tweak patch for 3.15.4] +[Bernd: tweak patch for 3.27.0] + +Signed-off-by: Davide Viti +Signed-off-by: Vicente Olivert Riera +Signed-off-by: James Hilliard +Signed-off-by: Bernd Kuhls +--- + Source/cmake.cxx | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/Source/cmake.cxx b/Source/cmake.cxx +index 3772f09985..c317e4af38 100644 +--- a/Source/cmake.cxx ++++ b/Source/cmake.cxx +@@ -1891,7 +1891,12 @@ int cmake::AddCMakePaths() + cmStateEnums::INTERNAL); + #endif + if (!cmSystemTools::FileExists( +- (cmSystemTools::GetCMakeRoot() + "/Modules/CMake.cmake"))) { ++ (cmSystemTools::GetCMakeRoot() + "/Modules/CMake.cmake")) && ++ !cmSystemTools::FileExists( ++ (cmSystemTools::GetCMakeRoot()+"/Modules/CMake.cmake.ctest") ++ ) ++ ) ++ { + // couldn't find modules + cmSystemTools::Error( + "Could not find CMAKE_ROOT !!!\n" +-- +2.20.1 + diff --git a/package/cmake/Config.in b/package/cmake/Config.in new file mode 100644 index 00000000..00692fe7 --- /dev/null +++ b/package/cmake/Config.in @@ -0,0 +1,49 @@ +config BR2_PACKAGE_CMAKE_ARCH_SUPPORTS + bool + default y + depends on BR2_arm || BR2_armeb || BR2_aarch64 || \ + BR2_m68k || BR2_mips || BR2_mips64 || \ + BR2_mipsel || BR2_mips64el || BR2_powerpc || \ + BR2_powerpc64 || BR2_powerpc64le || BR2_sparc || \ + BR2_i386 || BR2_x86_64 || BR2_xtensa || \ + BR2_s390x || BR2_riscv + +config BR2_PACKAGE_CMAKE + bool + +config BR2_PACKAGE_CMAKE_CTEST + bool "ctest" + depends on BR2_PACKAGE_CMAKE_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # jsoncpp, libuv + depends on BR2_USE_WCHAR # libarchive + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv + depends on BR2_USE_MMU # libuv + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv + select BR2_PACKAGE_CMAKE + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_JSONCPP + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBARCHIVE + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_XZ + select BR2_PACKAGE_LIBUV + select BR2_PACKAGE_RHASH + help + CTest is a testing tool distributed as a part of CMake. It + can be used to automate updating (using CVS for example), + configuring, building, testing, performing memory checking, + performing coverage, and submitting results to a CDash or + Dart dashboard system. + + http://www.cmake.org/ + +comment "ctest needs a toolchain w/ C++, wchar, dynamic library, gcc >= 4.9, NPTL" + depends on BR2_PACKAGE_CMAKE_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/package/cmake/Config.in.host b/package/cmake/Config.in.host new file mode 100644 index 00000000..389300f3 --- /dev/null +++ b/package/cmake/Config.in.host @@ -0,0 +1,78 @@ +config BR2_PACKAGE_HOST_CMAKE + bool "host cmake" + help + CMake is an open-source, cross-platform family of tools + designed to build, test and package software. CMake is used + to control the software compilation process using simple + platform and compiler independent configuration files, and + generate native makefiles and workspaces that can be used in + the compiler environment of your choice. + + http://www.cmake.org/ + +# The minimum system cmake version we expect if 3.18 as provided by +# Debian bullseye, that we use in our reference build docker image. +config BR2_HOST_CMAKE_AT_LEAST_3_19 + bool + +config BR2_HOST_CMAKE_AT_LEAST_3_20 + bool + select BR2_HOST_CMAKE_AT_LEAST_3_19 + +config BR2_HOST_CMAKE_AT_LEAST_3_21 + bool + select BR2_HOST_CMAKE_AT_LEAST_3_20 + +config BR2_HOST_CMAKE_AT_LEAST_3_22 + bool + select BR2_HOST_CMAKE_AT_LEAST_3_21 + +config BR2_HOST_CMAKE_AT_LEAST_3_23 + bool + select BR2_HOST_CMAKE_AT_LEAST_3_22 + +config BR2_HOST_CMAKE_AT_LEAST_3_24 + bool + select BR2_HOST_CMAKE_AT_LEAST_3_23 + +config BR2_HOST_CMAKE_AT_LEAST_3_25 + bool + select BR2_HOST_CMAKE_AT_LEAST_3_24 + +config BR2_HOST_CMAKE_AT_LEAST_3_26 + bool + select BR2_HOST_CMAKE_AT_LEAST_3_25 + +config BR2_HOST_CMAKE_AT_LEAST_3_27 + bool + select BR2_HOST_CMAKE_AT_LEAST_3_26 + +config BR2_HOST_CMAKE_AT_LEAST_3_28 + bool + select BR2_HOST_CMAKE_AT_LEAST_3_27 + +config BR2_HOST_CMAKE_AT_LEAST_3_29 + bool + select BR2_HOST_CMAKE_AT_LEAST_3_28 + +config BR2_HOST_CMAKE_AT_LEAST_3_30 + bool + select BR2_HOST_CMAKE_AT_LEAST_3_29 + +# This order guarantees that the highest version is set, as kconfig +# stops affecting a value on the first matching default. +config BR2_HOST_CMAKE_AT_LEAST + string + default "3.30" if BR2_HOST_CMAKE_AT_LEAST_3_30 + default "3.29" if BR2_HOST_CMAKE_AT_LEAST_3_29 + default "3.28" if BR2_HOST_CMAKE_AT_LEAST_3_28 + default "3.27" if BR2_HOST_CMAKE_AT_LEAST_3_27 + default "3.26" if BR2_HOST_CMAKE_AT_LEAST_3_26 + default "3.25" if BR2_HOST_CMAKE_AT_LEAST_3_25 + default "3.24" if BR2_HOST_CMAKE_AT_LEAST_3_24 + default "3.23" if BR2_HOST_CMAKE_AT_LEAST_3_23 + default "3.22" if BR2_HOST_CMAKE_AT_LEAST_3_22 + default "3.21" if BR2_HOST_CMAKE_AT_LEAST_3_21 + default "3.20" if BR2_HOST_CMAKE_AT_LEAST_3_20 + default "3.19" if BR2_HOST_CMAKE_AT_LEAST_3_19 + default "3.18" diff --git a/package/cmake/cmake.hash b/package/cmake/cmake.hash new file mode 100644 index 00000000..ee6dab55 --- /dev/null +++ b/package/cmake/cmake.hash @@ -0,0 +1,5 @@ +# From https://cmake.org/files/v3.30/cmake-3.30.0-SHA-256.txt +sha256 157e5be6055c154c34f580795fe5832f260246506d32954a971300ed7899f579 cmake-3.30.0.tar.gz + +# Locally calculated +sha256 0676e30827684487aa0ea8f72f01e9460a6320fa34a2888df0ad1dd3e8a06eb8 Copyright.txt diff --git a/package/cmake/cmake.mk b/package/cmake/cmake.mk new file mode 100644 index 00000000..842457eb --- /dev/null +++ b/package/cmake/cmake.mk @@ -0,0 +1,99 @@ +################################################################################ +# +# cmake +# +################################################################################ + +# When updating the version, please also update BR2_HOST_CMAKE_AT_LEAST_X_Y +CMAKE_VERSION_MAJOR = 3.30 +CMAKE_VERSION = $(CMAKE_VERSION_MAJOR).0 +CMAKE_SITE = https://cmake.org/files/v$(CMAKE_VERSION_MAJOR) +CMAKE_LICENSE = BSD-3-Clause +CMAKE_LICENSE_FILES = Copyright.txt +CMAKE_CPE_ID_VALID = YES +# Tool download MITM attack warning if using npm package to install cmake +CMAKE_IGNORE_CVES = CVE-2016-10642 + +# The package is a dependency to ccache so ccache cannot be a dependency +HOST_CMAKE_ADD_CCACHE_DEPENDENCY = NO + +# CMake is a particular package: +# * CMake can be built using the generic infrastructure or the cmake one. +# Since Buildroot has no requirement regarding the host system cmake +# program presence, it uses the generic infrastructure to build the +# host-cmake package, then the (target-)cmake package can be built +# using the cmake infrastructure; +# * CMake bundles its dependencies within its sources. This is the +# reason why the host-cmake package has no dependencies:, whereas +# the (target-)cmake package has a lot of dependencies, using only +# the system-wide libraries instead of rebuilding and statically +# linking with the ones bundled into the CMake sources. + +CMAKE_DEPENDENCIES = zlib jsoncpp libcurl libarchive expat bzip2 xz libuv rhash + +CMAKE_CONF_OPTS = \ + -DKWSYS_LFS_WORKS=TRUE \ + -DKWSYS_CHAR_IS_SIGNED=TRUE \ + -DCMAKE_USE_SYSTEM_LIBRARIES=1 \ + -DCTEST_USE_XMLRPC=OFF \ + -DCMake_ENABLE_DEBUGGER=0 \ + -DBUILD_CursesDialog=OFF + +# Get rid of -I* options from $(HOST_CPPFLAGS) to prevent that a +# header available in $(HOST_DIR)/include is used instead of a +# CMake internal header, e.g. lzma* headers of the xz package +HOST_CMAKE_CFLAGS = $(shell echo $(HOST_CFLAGS) | sed -r "s%$(HOST_CPPFLAGS)%%") +HOST_CMAKE_CXXFLAGS = $(shell echo $(HOST_CXXFLAGS) | sed -r "s%$(HOST_CPPFLAGS)%%") + +# We may be a ccache dependency, so we can't use ccache +HOST_CMAKE_CONFIGURE_OPTS = \ + $(HOST_CONFIGURE_OPTS) \ + CC="$(HOSTCC_NOCCACHE)" \ + GCC="$(HOSTCC_NOCCACHE)" \ + CXX="$(HOSTCXX_NOCCACHE)" + +define HOST_CMAKE_CONFIGURE_CMDS + (cd $(@D); \ + $(HOST_CMAKE_CONFIGURE_OPTS) \ + CFLAGS="$(HOST_CMAKE_CFLAGS)" \ + ./bootstrap --prefix=$(HOST_DIR) \ + --parallel=$(PARALLEL_JOBS) -- \ + -DCMAKE_C_FLAGS="$(HOST_CMAKE_CFLAGS)" \ + -DCMAKE_CXX_FLAGS="$(HOST_CMAKE_CXXFLAGS)" \ + -DCMAKE_EXE_LINKER_FLAGS="$(HOST_LDFLAGS)" \ + -DCMAKE_USE_OPENSSL:BOOL=OFF \ + -DBUILD_CursesDialog=OFF \ + ) +endef + +define HOST_CMAKE_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_CMAKE_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install/fast +endef + +define CMAKE_REMOVE_EXTRA_DATA + rm $(TARGET_DIR)/usr/bin/{cmake,cpack} + rm -fr $(TARGET_DIR)/usr/share/cmake-$(CMAKE_VERSION_MAJOR)/{completions,editors} + rm -fr $(TARGET_DIR)/usr/share/cmake-$(CMAKE_VERSION_MAJOR)/{Help,include} +endef + +define CMAKE_INSTALL_CTEST_CFG_FILE + $(INSTALL) -m 0644 -D $(@D)/Modules/CMake.cmake \ + $(TARGET_DIR)/usr/share/cmake-$(CMAKE_VERSION_MAJOR)/Modules/CMake.cmake.ctest +endef + +CMAKE_POST_INSTALL_TARGET_HOOKS += CMAKE_REMOVE_EXTRA_DATA +CMAKE_POST_INSTALL_TARGET_HOOKS += CMAKE_INSTALL_CTEST_CFG_FILE + +define CMAKE_INSTALL_TARGET_CMDS + (cd $(@D); \ + $(HOST_MAKE_ENV) DESTDIR=$(TARGET_DIR) \ + cmake -P cmake_install.cmake \ + ) +endef + +$(eval $(cmake-package)) +$(eval $(host-generic-package)) diff --git a/package/cmocka/0001-Don-t-redefine-uintptr_t.patch b/package/cmocka/0001-Don-t-redefine-uintptr_t.patch new file mode 100644 index 00000000..4123d8db --- /dev/null +++ b/package/cmocka/0001-Don-t-redefine-uintptr_t.patch @@ -0,0 +1,77 @@ +From 28ce16b29911e5adc60140b572dee177adc7a178 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 18 Nov 2019 18:56:46 +0100 +Subject: [PATCH] Don't redefine uintptr_t + +Add a call to check_type_size in ConfigureChecks.cmake and use it in +include/cmocka.h to avoid the following redefinition error on riscv64: + +In file included from /data/buildroot/buildroot-test/instance-0/output/build/cmocka-1.1.5/src/cmocka.c:62: +/data/buildroot/buildroot-test/instance-0/output/build/cmocka-1.1.5/include/cmocka.h:132:28: error: conflicting types for 'uintptr_t' + typedef unsigned int uintptr_t; + ^~~~~~~~~ +In file included from /data/buildroot/buildroot-test/instance-0/output/host/riscv64-buildroot-linux-musl/sysroot/usr/include/stdint.h:20, + from /data/buildroot/buildroot-test/instance-0/output/host/riscv64-buildroot-linux-musl/sysroot/usr/include/inttypes.h:9, + from /data/buildroot/buildroot-test/instance-0/output/build/cmocka-1.1.5/src/cmocka.c:27: +/data/buildroot/buildroot-test/instance-0/output/host/riscv64-buildroot-linux-musl/sysroot/usr/include/bits/alltypes.h:104:24: note: previous declaration of 'uintptr_t' was here + typedef unsigned _Addr uintptr_t; + ^~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/30922c18150ea62aefe123d1b7cd1444efab963f + +Signed-off-by: Fabrice Fontaine +Reviewed-by: Andreas Schneider +[Retrieved from: +https://gitlab.com/cmocka/cmocka/commit/28ce16b29911e5adc60140b572dee177adc7a178] +--- + ConfigureChecks.cmake | 3 +++ + config.h.cmake | 4 ++++ + include/cmocka.h | 2 +- + 3 files changed, 8 insertions(+), 1 deletion(-) + +diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake +index fe8da35..028774f 100644 +--- a/ConfigureChecks.cmake ++++ b/ConfigureChecks.cmake +@@ -70,6 +70,9 @@ if (HAVE_TIME_H) + check_struct_has_member("struct timespec" tv_sec "time.h" HAVE_STRUCT_TIMESPEC) + endif (HAVE_TIME_H) + ++# TYPES ++check_type_size(uintptr_t UINTPTR_T) ++ + # FUNCTIONS + check_function_exists(calloc HAVE_CALLOC) + check_function_exists(exit HAVE_EXIT) +diff --git a/config.h.cmake b/config.h.cmake +index f8d79da..55fc69f 100644 +--- a/config.h.cmake ++++ b/config.h.cmake +@@ -75,6 +75,10 @@ + + #cmakedefine HAVE_STRUCT_TIMESPEC 1 + ++/***************************** TYPES *****************************/ ++ ++#cmakedefine HAVE_UINTPTR_T 1 ++ + /*************************** FUNCTIONS ***************************/ + + /* Define to 1 if you have the `calloc' function. */ +diff --git a/include/cmocka.h b/include/cmocka.h +index 3e923dd..0aa557e 100644 +--- a/include/cmocka.h ++++ b/include/cmocka.h +@@ -120,7 +120,7 @@ typedef uintmax_t LargestIntegralType; + ((LargestIntegralType)(value)) + + /* Smallest integral type capable of holding a pointer. */ +-#if !defined(_UINTPTR_T) && !defined(_UINTPTR_T_DEFINED) ++#if !defined(_UINTPTR_T) && !defined(_UINTPTR_T_DEFINED) && !defined(HAVE_UINTPTR_T) + # if defined(_WIN32) + /* WIN32 is an ILP32 platform */ + typedef unsigned int uintptr_t; +-- +2.22.0 + diff --git a/package/cmocka/Config.in b/package/cmocka/Config.in new file mode 100644 index 00000000..80e29778 --- /dev/null +++ b/package/cmocka/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_CMOCKA + bool "cmocka" + depends on !BR2_STATIC_LIBS + help + cmocka is an elegant unit testing framework for C with support + for mock objects. It only requires the standard C library, + works on a range of computing platforms (including embedded) + and with different compilers. It is a fork of Google's very + popular cmockery unit testing framework to fix bugs and + support it in the future. + + https://cmocka.org + +comment "cmocka needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/cmocka/cmocka.hash b/package/cmocka/cmocka.hash new file mode 100644 index 00000000..74d67d6e --- /dev/null +++ b/package/cmocka/cmocka.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 f0ccd8242d55e2fd74b16ba518359151f6f8383ff8aef4976e48393f77bba8b6 cmocka-1.1.5.tar.xz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 COPYING diff --git a/package/cmocka/cmocka.mk b/package/cmocka/cmocka.mk new file mode 100644 index 00000000..297f95f4 --- /dev/null +++ b/package/cmocka/cmocka.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# cmocka +# +################################################################################ + +CMOCKA_VERSION = 1.1.5 +CMOCKA_SOURCE = cmocka-$(CMOCKA_VERSION).tar.xz +CMOCKA_SITE = https://cmocka.org/files/1.1 +CMOCKA_LICENSE = Apache-2.0 +CMOCKA_LICENSE_FILES = COPYING +CMOCKA_INSTALL_STAGING = YES +CMOCKA_CONF_OPTS = -DWITH_EXAMPLES=OFF + +# cmocka only supports out of source builds +CMOCKA_SUPPORTS_IN_SOURCE_BUILD = NO + +# cmocka always builds a shared library, but you can optionally build a static +# library as well +ifeq ($(BR2_SHARED_STATIC_LIBS),y) +CMOCKA_CONF_OPTS += -DWITH_STATIC_LIB=ON +endif + +# gcc for ARM Thumb1 doesn't implement -fstack-clash-protection +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +CMOCKA_CONF_OPTS += -DWITH_STACK_CLASH_PROTECTION=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/cni-plugins/Config.in b/package/cni-plugins/Config.in new file mode 100644 index 00000000..6d4ca0a5 --- /dev/null +++ b/package/cni-plugins/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_CNI_PLUGINS + bool "cni-plugins" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_TOOLCHAIN_USES_UCLIBC # no fexecve + depends on BR2_USE_MMU + select BR2_PACKAGE_HOST_GO + help + Container Networking Interface plugins. + + https://github.com/containernetworking/plugins + +comment "cni-plugins needs a glibc or musl toolchain w/ threads" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS && \ + BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_UCLIBC diff --git a/package/cni-plugins/cni-plugins.hash b/package/cni-plugins/cni-plugins.hash new file mode 100644 index 00000000..5de05b8b --- /dev/null +++ b/package/cni-plugins/cni-plugins.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 f9871b9f6ccb51d2b264532e96521e44f926928f91434b56ce135c95becf2901 cni-plugins-1.3.0-go2.tar.gz +sha256 b40930bbcf80744c86c46a12bc9da056641d722716c378f5659b9e555ef833e1 LICENSE diff --git a/package/cni-plugins/cni-plugins.mk b/package/cni-plugins/cni-plugins.mk new file mode 100644 index 00000000..bccc1674 --- /dev/null +++ b/package/cni-plugins/cni-plugins.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# cni-plugins +# +################################################################################ + +CNI_PLUGINS_VERSION = 1.3.0 +CNI_PLUGINS_SITE = $(call github,containernetworking,plugins,v$(CNI_PLUGINS_VERSION)) +CNI_PLUGINS_LICENSE = Apache-2.0 +CNI_PLUGINS_LICENSE_FILES = LICENSE + +CNI_PLUGINS_BUILD_TARGETS = \ + plugins/ipam/dhcp \ + plugins/ipam/host-local \ + plugins/ipam/static \ + plugins/main/bridge \ + plugins/main/dummy \ + plugins/main/host-device \ + plugins/main/ipvlan \ + plugins/main/loopback \ + plugins/main/macvlan \ + plugins/main/ptp \ + plugins/main/tap \ + plugins/main/vlan \ + plugins/meta/bandwidth \ + plugins/meta/firewall \ + plugins/meta/portmap \ + plugins/meta/tuning \ + plugins/meta/vrf +CNI_PLUGINS_INSTALL_BINS = $(CNI_PLUGINS_BUILD_TARGETS) + +ifeq ($(BR2_PACKAGE_LIBAPPARMOR),y) +CNI_PLUGINS_DEPENDENCIES += libapparmor +CNI_PLUGINS_TAGS += apparmor +endif + +ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) +CNI_PLUGINS_TAGS += seccomp +CNI_PLUGINS_DEPENDENCIES += libseccomp host-pkgconf +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +CNI_PLUGINS_TAGS += selinux +CNI_PLUGINS_DEPENDENCIES += libselinux +endif + +define CNI_PLUGINS_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/opt/cni/bin + $(foreach d,$(CNI_PLUGINS_INSTALL_BINS),\ + $(INSTALL) -D -m 0755 $(@D)/bin/$$(basename $(d)) \ + $(TARGET_DIR)/opt/cni/bin + ) +endef + +$(eval $(golang-package)) diff --git a/package/cog/Config.in b/package/cog/Config.in new file mode 100644 index 00000000..d2a910f9 --- /dev/null +++ b/package/cog/Config.in @@ -0,0 +1,65 @@ +comment "cog needs wpewebkit and a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_WPEWEBKIT || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_COG + bool "cog" + depends on BR2_PACKAGE_WPEWEBKIT + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus + depends on BR2_USE_MMU # dbus + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_WAYLAND + help + Single "window" launcher for the WebKit WPE port, and + helper library for implementing WPE launcher. It does + not provide any chrome, and is suitable to be used + as a Web application container. + + https://github.com/Igalia/cog + +if BR2_PACKAGE_COG + +config BR2_PACKAGE_COG_PROGRAMS_HOME_URI + string "home uri" + default "https://wpewebkit.org" + help + Default URI to open when "cog" is launched. If an empty + string is used, there is no default and the URI to open + must be always specified in the command line. + +config BR2_PACKAGE_COG_PLATFORM_FDO + bool "Wayland backend" + default y + select BR2_PACKAGE_LIBXKBCOMMON + select BR2_PACKAGE_WAYLAND_PROTOCOLS + help + Enable the Wayland backend. Cog will interface with + a compositor over the Wayland protocol. + +config BR2_PACKAGE_COG_PLATFORM_DRM + bool "DRM backend" + depends on BR2_PACKAGE_HAS_UDEV # libinput + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_HAS_LIBGBM + depends on BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF + depends on BR2_PACKAGE_LIBGBM_HAS_FEATURE_FORMAT_MODIFIER_PLANE_COUNT + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_LIBINPUT + help + Enable the DRM platform backend. Cog will interface directly + with video drivers that support kernel mode-setting (KMS) + via the DRM user-space API. + +config BR2_PACKAGE_COG_USE_SYSTEM_DBUS + bool "expose system D-Bus control interface" + help + Expose remote control interface on system bus + +comment "DRM platform needs EGL and GBM" + depends on \ + !BR2_PACKAGE_HAS_LIBEGL || \ + !BR2_PACKAGE_HAS_LIBGBM || \ + !BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF || \ + !BR2_PACKAGE_LIBGBM_HAS_FEATURE_FORMAT_MODIFIER_PLANE_COUNT + +endif diff --git a/package/cog/cog.hash b/package/cog/cog.hash new file mode 100644 index 00000000..b59b5f47 --- /dev/null +++ b/package/cog/cog.hash @@ -0,0 +1,7 @@ +# From https://wpewebkit.org/releases/cog-0.18.4.tar.xz.sums +md5 0566ab6676b499ebcff372fbe39e24fc cog-0.18.4.tar.xz +sha1 2d6f88cfb07eaac1be2bf9954832f19f8a856631 cog-0.18.4.tar.xz +sha256 31d7079db2eeed790899d2f1f824dd6a54bf30d072d196d737be572f105d99b1 cog-0.18.4.tar.xz + +# Hashes for license files: +sha256 e6c42d93c68b292bcccf6d2ec3e13da85df90b718ba27c2c2a01053a9d009252 COPYING diff --git a/package/cog/cog.mk b/package/cog/cog.mk new file mode 100644 index 00000000..7f680bb7 --- /dev/null +++ b/package/cog/cog.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# cog +# +################################################################################ + +COG_VERSION = 0.18.4 +COG_SITE = https://wpewebkit.org/releases +COG_SOURCE = cog-$(COG_VERSION).tar.xz +COG_INSTALL_STAGING = YES +COG_DEPENDENCIES = dbus wpewebkit wpebackend-fdo wayland +COG_LICENSE = MIT +COG_LICENSE_FILES = COPYING +COG_CONF_OPTS = \ + -Ddocumentation=false \ + -Dmanpages=false \ + -Dprograms=true \ + -Dwpe_api=2.0 \ + -Dcog_home_uri='$(call qstrip,$(BR2_PACKAGE_COG_PROGRAMS_HOME_URI))' \ + -Dplatforms='$(subst $(space),$(comma),$(strip $(COG_PLATFORMS_LIST)))' + +COG_PLATFORMS_LIST = headless + +ifeq ($(BR2_PACKAGE_WESTON),y) +COG_CONF_OPTS += -Dwayland_weston_direct_display=true +COG_DEPENDENCIES += weston +else +COG_CONF_OPTS += -Dwayland_weston_direct_display=false +endif + +ifeq ($(BR2_PACKAGE_COG_PLATFORM_FDO),y) +COG_PLATFORMS_LIST += wayland +COG_DEPENDENCIES += libxkbcommon wayland-protocols +endif + +ifeq ($(BR2_PACKAGE_COG_PLATFORM_DRM),y) +COG_PLATFORMS_LIST += drm +COG_DEPENDENCIES += libdrm libinput libgbm libegl udev +endif + +ifeq ($(BR2_PACKAGE_COG_USE_SYSTEM_DBUS),y) +COG_CONF_OPTS += -Dcog_dbus_control=system +else +COG_CONF_OPTS += -Dcog_dbus_control=user +endif + +ifeq ($(BR2_PACKAGE_LIBMANETTE),y) +COG_DEPENDENCIES += libmanette +endif + +$(eval $(meson-package)) diff --git a/package/collectd/0001-src-netlink.c-remove-REG_NOERROR.patch b/package/collectd/0001-src-netlink.c-remove-REG_NOERROR.patch new file mode 100644 index 00000000..14af0d76 --- /dev/null +++ b/package/collectd/0001-src-netlink.c-remove-REG_NOERROR.patch @@ -0,0 +1,43 @@ +From 5e600ae2ad370ddbb759e84ce55a7dfaa9a0bdd7 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 6 Sep 2020 14:17:23 +0200 +Subject: [PATCH] src/netlink.c: remove REG_NOERROR + +REG_NOERROR is used since version 5.12.0 and +https://github.com/collectd/collectd/commit/f7fd32e5209e188db7985a42054252fc4cbfe7c1 + +However, REG_NOERROR is not defined by musl, even GNU regex do not +mention REG_NOERROR, so just remove it to avoid the following build +failure: + +src/netlink.c: In function 'check_ignorelist': +src/netlink.c:243:51: error: 'REG_NOERROR' undeclared (first use in this function); did you mean 'REG_NOTBOL'? + if (regexec(i->rdevice, dev, 0, NULL, 0) != REG_NOERROR) + ^~~~~~~~~~~ + REG_NOTBOL + +Fixes: + - http://autobuild.buildroot.org/results/cd4d75888b5259b028132dd224be34f69bcbb702 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/collectd/collectd/pull/3569] +--- + src/netlink.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/netlink.c b/src/netlink.c +index 7a5da762..fac2fb1e 100644 +--- a/src/netlink.c ++++ b/src/netlink.c +@@ -240,7 +240,7 @@ static int check_ignorelist(const char *dev, const char *type, + for (ir_ignorelist_t *i = ir_ignorelist_head; i != NULL; i = i->next) { + #if HAVE_REGEX_H + if (i->rdevice != NULL) { +- if (regexec(i->rdevice, dev, 0, NULL, 0) != REG_NOERROR) ++ if (regexec(i->rdevice, dev, 0, NULL, 0)) + continue; + } else + #endif +-- +2.28.0 + diff --git a/package/collectd/0002-configure.ac-fix-grpc-build.patch b/package/collectd/0002-configure.ac-fix-grpc-build.patch new file mode 100644 index 00000000..00de673e --- /dev/null +++ b/package/collectd/0002-configure.ac-fix-grpc-build.patch @@ -0,0 +1,96 @@ +From d355618813bb8180e460ba45a0ebd3ce5183e267 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 22 Jan 2024 22:15:21 +0100 +Subject: [PATCH] configure.ac: fix grpc build + +abseil and other google tools are now subject to +"Google's Foundational C++ Support Policy" [0][1]. This currently +mandates gcc 7.3.1 and C++14 as minimum versions. So replace -std=c++11 +by -std=c++14 to fix following build failure: + +checking whether /home/buildroot/autobuild/instance-0/output-1/host/bin/sparc64-linux-g++ accepts -std=c++11 +configure:25105: result: yes +configure:25127: checking grpc++/grpc++.h usability +configure:25127: /home/buildroot/autobuild/instance-0/output-1/host/bin/sparc64-linux-g++ -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O1 -g0 -D_FORTIFY_SOURCE=2 -std=c++11 -DNOMINMAX -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.cpp >&5 +In file included from /home/buildroot/autobuild/instance-0/output-1/host/sparc64-buildroot-linux-gnu/sysroot/usr/include/absl/base/config.h:86, + from /home/buildroot/autobuild/instance-0/output-1/host/sparc64-buildroot-linux-gnu/sysroot/usr/include/absl/base/const_init.h:25, + from /home/buildroot/autobuild/instance-0/output-1/host/sparc64-buildroot-linux-gnu/sysroot/usr/include/absl/synchronization/mutex.h:67, + from /home/buildroot/autobuild/instance-0/output-1/host/sparc64-buildroot-linux-gnu/sysroot/usr/include/grpcpp/impl/codegen/sync.h:32, + from /home/buildroot/autobuild/instance-0/output-1/host/sparc64-buildroot-linux-gnu/sysroot/usr/include/grpcpp/completion_queue.h:41, + from /home/buildroot/autobuild/instance-0/output-1/host/sparc64-buildroot-linux-gnu/sysroot/usr/include/grpcpp/channel.h:25, + from /home/buildroot/autobuild/instance-0/output-1/host/sparc64-buildroot-linux-gnu/sysroot/usr/include/grpcpp/grpcpp.h:52, + from /home/buildroot/autobuild/instance-0/output-1/host/sparc64-buildroot-linux-gnu/sysroot/usr/include/grpc++/grpc++.h:26, + from conftest.cpp:167: +/home/buildroot/autobuild/instance-0/output-1/host/sparc64-buildroot-linux-gnu/sysroot/usr/include/absl/base/policy_checks.h:79:2: error: #error "C++ versions less than C++14 are not supported." + 79 | #error "C++ versions less than C++14 are not supported." + | ^~~~~ + +[0] https://github.com/abseil/abseil-cpp/releases/tag/20230125.0 +[1] https://github.com/google/oss-policies-info/blob/b842c39db88e6569dfe2cf98be434b03507cb503/foundational-cxx-support-matrix.md + +Fixes: + - http://autobuild.buildroot.org/results/e2cf909ab3c356f1881fd18cfa039e87faa10d7d + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/collectd/collectd/commit/d355618813bb8180e460ba45a0ebd3ce5183e267 +--- + configure.ac | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/configure.ac b/configure.ac +index c816d3dbbc..dad27f53b0 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2853,20 +2853,20 @@ PKG_CHECK_MODULES([GRPCPP], [grpc++], + fi + + if test "x$withval" != "xno"; then +- AC_MSG_CHECKING([whether $CXX accepts -std=c++11]) +- if test_cxx_flags -std=c++11; then ++ AC_MSG_CHECKING([whether $CXX accepts -std=c++14]) ++ if test_cxx_flags -std=c++14; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) +- with_libgrpcpp="no (requires C++11 support)" +- with_libprotobuf="no ( requires C++11 support)" ++ with_libgrpcpp="no (requires C++14 support)" ++ with_libprotobuf="no ( requires C++14 support)" + fi + fi + + if test "x$with_libgrpcpp" = "xyes"; then + AC_LANG_PUSH(C++) + SAVE_CPPFLAGS="$CPPFLAGS" +- CPPFLAGS="-std=c++11 $with_libgrpcpp_cppflags $GRPCPP_CFLAGS $CPPFLAGS" ++ CPPFLAGS="-std=c++14 $with_libgrpcpp_cppflags $GRPCPP_CFLAGS $CPPFLAGS" + AC_CHECK_HEADERS([grpc++/grpc++.h], + [with_libgrpcpp="yes"], + [with_libgrpcpp="no ( not found)"] +@@ -2880,7 +2880,7 @@ if test "x$with_libgrpcpp" = "xyes"; then + SAVE_CPPFLAGS="$CPPFLAGS" + SAVE_LDFLAGS="$LDFLAGS" + SAVE_LIBS="$LIBS" +- CPPFLAGS="-std=c++11 $with_libgrpcpp_cppflags $GRPCPP_CFLAGS $CPPFLAGS" ++ CPPFLAGS="-std=c++14 $with_libgrpcpp_cppflags $GRPCPP_CFLAGS $CPPFLAGS" + LDFLAGS="$with_libgrpcpp_ldflags" + if test "x$GRPCPP_LIBS" = "x"; then + LIBS="-lgrpc++" +@@ -2908,7 +2908,7 @@ if test "x$with_libgrpcpp" = "xyes"; then + AC_LANG_POP(C++) + fi + +-BUILD_WITH_LIBGRPCPP_CPPFLAGS="-std=c++11 $with_libgrpcpp_cppflags $GRPCPP_CFLAGS" ++BUILD_WITH_LIBGRPCPP_CPPFLAGS="-std=c++14 $with_libgrpcpp_cppflags $GRPCPP_CFLAGS" + BUILD_WITH_LIBGRPCPP_LDFLAGS="$with_libgrpcpp_ldflags" + BUILD_WITH_LIBGRPCPP_LIBS="$GRPCPP_LIBS" + AC_SUBST([BUILD_WITH_LIBGRPCPP_CPPFLAGS]) +@@ -4852,7 +4852,7 @@ if test "x$withval" != "xno"; then + AC_CHECK_LIB([protobuf], [main], + [ + SAVE_CPPFLAGS="$CPPFLAGS" +- CPPFLAGS="-std=c++11 $with_libprotobuf_cppflags $PROTOBUF_CFLAGS" ++ CPPFLAGS="-std=c++14 $with_libprotobuf_cppflags $PROTOBUF_CFLAGS" + if test "x$PROTOBUF_LIBS" = "x" + then + PROTOBUF_LIBS="-lprotobuf" diff --git a/package/collectd/0003-configure.ac-src-nut-c-detect-int-types-required-by.patch b/package/collectd/0003-configure.ac-src-nut-c-detect-int-types-required-by.patch new file mode 100644 index 00000000..f08dc1b7 --- /dev/null +++ b/package/collectd/0003-configure.ac-src-nut-c-detect-int-types-required-by.patch @@ -0,0 +1,153 @@ +From d409ffa2a64cac3fc2abe2bb86ec3a80cb34d0a6 Mon Sep 17 00:00:00 2001 +From: Jim Klimov +Date: Wed, 31 Aug 2022 11:40:01 +0200 +Subject: [PATCH] configure.ac, src/nut.c: detect int types required by NUT API + we build against + +Either use the stricter int types required by NUT headers since v2.8.0 release, +or the relaxed (arch-dependent) types required by older NUT releases - depending +on which NUT API version the collectd is building against at the moment. + +Inspired by discussion at https://github.com/networkupstools/nut/issues/1638 + +Upstream: https://github.com/collectd/collectd/commit/d409ffa2a64cac3fc2abe2bb86ec3a80cb34d0a6 + +Signed-off-by: Bernd Kuhls +--- + configure.ac | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/nut.c | 4 +-- + 2 files changed, 102 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 1737aff316..f88ed26505 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -5881,6 +5881,106 @@ if test "x$with_libupsclient" = "xyes"; then + CPPFLAGS="$SAVE_CPPFLAGS" + fi + ++if test "x$with_libupsclient" = "xyes"; then ++ dnl The m4 script logic below is modelled after NUT_FUNC_GETNAMEINFO_ARGTYPES ++ dnl further originating in curl autoconf scripts or beyond. See there for an ++ dnl example of general-case logic to handle matching of numerous possible ++ dnl data types for each argument in supported API variants. ++ dnl Note: techically compiler complains here not about int types themselves, ++ dnl but about pointers to such data. We know "out of band" that e.g. NUT ++ dnl change to "size_t" happened at once for all arguments in the API, so ++ dnl simplify the handling here and now with that assumption. ++ AC_LANG_PUSH([C]) ++ SAVE_CPPFLAGS="$CPPFLAGS" ++ SAVE_LDFLAGS="$LDFLAGS" ++ SAVE_CFLAGS="$CFLAGS" ++ CPPFLAGS="$CPPFLAGS $with_libupsclient_cflags" ++ LDFLAGS="$LDFLAGS $with_libupsclient_libs" ++ CFLAGS="$CFLAGS $with_libupsclient_cflags" ++ if test "x$GCC" = "xyes"; then ++ CFLAGS="$CFLAGS -Wall -Werror" ++ fi ++ ++ dnl upscli_splitname() *is* there forever (2007 or older) ++ dnl but int types e.g. "port" changed in NUT 2.8.0 ++ dnl Also this is the UPSCONN_t::port field type: ++ AC_CACHE_CHECK([int type of port argument for NUT upscli_splitname], ++ [collectd_cv_func_upscli_splitname_args], [ ++ collectd_cv_func_upscli_splitname_args="unknown" ++ for port_arg in 'uint16_t' 'int' ; do ++ AC_COMPILE_IFELSE([ ++ AC_LANG_PROGRAM([ ++#include ++/* int upscli_splitname(const char *buf, char **upsname, char **hostname, *port); */ ++ ],[ ++const char *origname = "ups@localhost:3493"; ++$port_arg port=0; ++char *hostname; ++char *upsname; ++int res = upscli_splitname(origname, &upsname, &hostname, &port); ++return(res); ++ ]) ++ ],[ ++ collectd_cv_func_upscli_splitname_args="$port_arg" ++ break ++ ]) ++ done ++ ]) ++ ++ AS_IF([test x"$collectd_cv_func_upscli_splitname_args" = xunknown], ++ [AC_MSG_WARN([Can not find proper port type for upscli_splitname()]) ++ with_libupsclient="no (required data types for NUT API were not detected)"], ++ [AC_DEFINE_UNQUOTED(NUT_PORT_TYPE, $collectd_cv_func_upscli_splitname_args, ++ [Define to the integer type for TCP/IP ports used by NUT API we build against]) ++ ]) ++ ++ ++ AC_CACHE_CHECK([int type of length/numbering arguments for NUT upscli_list_next], ++ [collectd_cv_func_upscli_list_next_args], [ ++ collectd_cv_func_upscli_list_next_args="unknown" ++ for size_arg in 'size_t' 'unsigned int' 'int' ; do ++ AC_COMPILE_IFELSE([ ++ AC_LANG_PROGRAM([ ++#include ++/* int upscli_list_next(UPSCONN_t *ups, numq, const char **query, *numa, char ***answer); */ ++ ++#if HAVE_UPSCONN_T ++typedef UPSCONN_t collectd_upsconn_t; ++#elif HAVE_UPSCONN ++typedef UPSCONN collectd_upsconn_t; ++#else ++#error "Unable to determine the UPS connection type." ++#endif ++ ],[ ++$size_arg query_num=0; ++$size_arg answer_num=0; ++const char * query; ++char** answer; ++collectd_upsconn_t ups; ++int res = upscli_list_next(&ups, query_num, &query, &answer_num, &answer); ++return(res); ++ ]) ++ ],[ ++ collectd_cv_func_upscli_list_next_args="$size_arg" ++ break ++ ]) ++ done ++ ]) ++ ++ AS_IF([test x"$collectd_cv_func_upscli_list_next_args" = xunknown], ++ [AC_MSG_WARN([Can not find proper type for array sizes and string lengths used by upscli_list_next()]) ++ with_libupsclient="no (required data types for NUT API were not detected)"], ++ [AC_DEFINE_UNQUOTED(NUT_SIZE_TYPE, $collectd_cv_func_upscli_list_next_args, ++ [Define to the integer type for array sizes and string lengths used by NUT API we build against]) ++ ]) ++ ++ ++ CPPFLAGS="$SAVE_CPPFLAGS" ++ LDFLAGS="$SAVE_LDFLAGS" ++ CFLAGS="$SAVE_CFLAGS" ++ AC_LANG_POP([C]) ++fi ++ + if test "x$with_libupsclient" = "xyes"; then + BUILD_WITH_LIBUPSCLIENT_CFLAGS="$with_libupsclient_cflags" + BUILD_WITH_LIBUPSCLIENT_LIBS="$with_libupsclient_libs" +diff --git a/src/nut.c b/src/nut.c +index a9a6c98380..1a29438b07 100644 +--- a/src/nut.c ++++ b/src/nut.c +@@ -46,7 +46,7 @@ struct nut_ups_s { + collectd_upsconn_t *conn; + char *upsname; + char *hostname; +- int port; ++ NUT_PORT_TYPE port; + nut_ups_t *next; + }; + +@@ -250,7 +250,7 @@ static int nut_read(user_data_t *user_data) { + const char *query[3] = {"VAR", ups->upsname, NULL}; + unsigned int query_num = 2; + char **answer; +- unsigned int answer_num; ++ NUT_SIZE_TYPE answer_num; + int status; + + /* (Re-)Connect if we have no connection */ diff --git a/package/collectd/Config.in b/package/collectd/Config.in new file mode 100644 index 00000000..5f39507c --- /dev/null +++ b/package/collectd/Config.in @@ -0,0 +1,816 @@ +menuconfig BR2_PACKAGE_COLLECTD + bool "collectd" + # Uses fork() + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + collectd is a daemon which collects system performance + statistics periodically and provides mechanisms to store + the values in a variety of ways, for example in RRD files. + + http://collectd.org/ + +if BR2_PACKAGE_COLLECTD + +menu "match plugins" + +config BR2_PACKAGE_COLLECTD_EMPTY_COUNTER + bool "empty counter" + help + Match counter values which are currently zero. + +config BR2_PACKAGE_COLLECTD_HASHED + bool "hashed" + help + Match values using a hash function of the hostname. + +config BR2_PACKAGE_COLLECTD_REGEX + bool "regex" + help + Match values by their identifier based on regular expressions. + +config BR2_PACKAGE_COLLECTD_TIMEDIFF + bool "timediff" + help + Match values with an invalid timestamp. + +config BR2_PACKAGE_COLLECTD_VALUE + bool "value" + help + Select values by their data sources' values. + +endmenu + +menu "misc plugins" + +config BR2_PACKAGE_COLLECTD_AGGREGATION + bool "aggregation" + help + The Aggregate plugin allows to aggregate multiple values into + a single value using one or several consolidation functions, + e.g. summation and average. + +config BR2_PACKAGE_COLLECTD_LOGFILE + bool "logfile" + default y + help + Writes log messages to a file or STDOUT/STDERR. + +config BR2_PACKAGE_COLLECTD_LOGSTASH + bool "logstash" + select BR2_PACKAGE_YAJL + help + Writes log messages formatted as logstash JSON events. + +config BR2_PACKAGE_COLLECTD_LUA + bool "lua" + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + help + Embeds a Lua interpreter into collectd and provides an + interface to collectd's plugin system. + +comment "lua support needs a Lua interpreter" + depends on !BR2_PACKAGE_HAS_LUAINTERPRETER + +config BR2_PACKAGE_COLLECTD_NOTIFY_EMAIL + bool "notify_email" + depends on !BR2_STATIC_LIBS # libesmtp + select BR2_PACKAGE_LIBESMTP + select BR2_PACKAGE_OPENSSL + help + Send an E-mail with the notification message to the + configured recipients. + +comment "notify_email needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_COLLECTD_NOTIFY_NAGIOS + bool "notify_nagios" + help + Sends notifications to Nagios as a passive check result. + +config BR2_PACKAGE_COLLECTD_SYSLOG + bool "syslog" + default y + help + Logs to the standard UNIX logging mechanism. + +config BR2_PACKAGE_COLLECTD_THRESHOLD + bool "threshold" + help + Checks values against configured thresholds and creates + notifications if values are out of bounds. + +endmenu + +menu "read plugins" + +comment "Select at least one for collectd to be useful" + +config BR2_PACKAGE_COLLECTD_APACHE + bool "apache" + select BR2_PACKAGE_LIBCURL + help + Collects Apache's mod_status information. + +config BR2_PACKAGE_COLLECTD_APCUPS + bool "apcups" + help + Collects UPS statistics from apcupsd. + +config BR2_PACKAGE_COLLECTD_BATTERY + bool "battery" + help + Collects the battery's charge, the drawn current and voltage. + +config BR2_PACKAGE_COLLECTD_BIND + bool "bind" + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBXML2 + help + Collects BIND DNS statistics. + +config BR2_PACKAGE_COLLECTD_BUDDYINFO + bool "buddyinfo" + help + Statistics from buddyinfo file about memory fragmentation. + +config BR2_PACKAGE_COLLECTD_CAPABILITIES + bool "capabilities" + depends on BR2_aarch64 || BR2_i386 || BR2_x86_64 # dmidecode + select BR2_PACKAGE_DMIDECODE # runtime + select BR2_PACKAGE_JANSSON + select BR2_PACKAGE_LIBMICROHTTPD + help + Collects selected static platform data using dmidecode and + expose it through micro embedded webserver. + +config BR2_PACKAGE_COLLECTD_CEPH + bool "ceph" + select BR2_PACKAGE_YAJL + help + Statistics from the Ceph distributed storage system. + +config BR2_PACKAGE_COLLECTD_CHRONY + bool "chrony" + help + Collects NTP data from the chrony NTP server. + +config BR2_PACKAGE_COLLECTD_CGROUPS + bool "cgroups" + help + Collects CGroups CPU usage accounting. + +config BR2_PACKAGE_COLLECTD_CONNTRACK + bool "conntrack" + help + Collects the number of entries in Linux's connection tracking + table. + +config BR2_PACKAGE_COLLECTD_CONTEXTSWITCH + bool "contextswitch" + help + Collects the number of context switches done by the operating + system. + +config BR2_PACKAGE_COLLECTD_CPU + bool "cpu" + help + Collects the amount of time spent by the CPU in various + states. + +config BR2_PACKAGE_COLLECTD_CPUFREQ + bool "cpufreq" + help + Collects the current CPU's frequency. + +config BR2_PACKAGE_COLLECTD_CPUSLEEP + bool "cpusleep" + help + Measures time spent by CPU in deep sleep mode. + +config BR2_PACKAGE_COLLECTD_CURL + bool "curl" + select BR2_PACKAGE_LIBCURL + help + Uses libcurl to read files and then parses them according + to the configuration. + +config BR2_PACKAGE_COLLECTD_CURL_JSON + bool "curl-json" + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_YAJL + help + Queries JSON data using the cURL library and parses it + according to the user's configuration using YAJL. + +config BR2_PACKAGE_COLLECTD_CURL_XML + bool "curl-xml" + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBXML2 + help + Reads files using libcurl and parses it as XML. + +config BR2_PACKAGE_COLLECTD_DBI + bool "dbi" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBDBI + help + Executes SQL statements on various databases and + interprets the returned data. + +comment "dbi support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_COLLECTD_DF + bool "df" + help + Collects file system usage information. + +config BR2_PACKAGE_COLLECTD_DISK + bool "disk" + help + Collects performance statistics of hard-disks and partitions. + +config BR2_PACKAGE_COLLECTD_DNS + bool "dns" + select BR2_PACKAGE_LIBPCAP + help + Collects statistics of DNS traffic using libpcap. + +config BR2_PACKAGE_COLLECTD_DPDK_TELEMETRY + bool "dpdk_telemetry" + select BR2_PACKAGE_JANSSON + help + Collects DPDK ethernet device metrics via dpdk_telemetry + library. + +config BR2_PACKAGE_COLLECTD_DRBD + bool "drbd" + help + Collect individual drbd resource statistics. + +config BR2_PACKAGE_COLLECTD_ENTROPY + bool "entropy" + help + Collects the available entropy on a system. + +config BR2_PACKAGE_COLLECTD_ETHSTAT + bool "ethstat" + help + Collects network interface card statistics. + +config BR2_PACKAGE_COLLECTD_EXEC + bool "exec" + help + Executes scripts and reads values back that are printed + to STDOUT by that program. + +config BR2_PACKAGE_COLLECTD_FHCOUNT + bool "fhcount" + help + File handles statistics. + +config BR2_PACKAGE_COLLECTD_FILECOUNT + bool "filecount" + help + Counts the number of files in a directory and all its + subdirectories. + +config BR2_PACKAGE_COLLECTD_FSCACHE + bool "fscache" + help + Collects information about the file-system based caching + infrastructure for network file-systems and other slow media. + +config BR2_PACKAGE_COLLECTD_GPS + bool "gps" + select BR2_PACKAGE_GPSD + help + Reports the number of sattelites seen by and precision + of a GPS receiver. + +config BR2_PACKAGE_COLLECTD_HUGEPAGES + bool "hugepages" + help + Reports the number of used and free hugepages on Linux. + +config BR2_PACKAGE_COLLECTD_INFINIBAND + bool "infiniband" + help + Attributes and counters for each port on each IB device. + +config BR2_PACKAGE_COLLECTD_INTERFACE + bool "interface" + help + Collects information about the traffic of network interfaces. + +config BR2_PACKAGE_COLLECTD_IPC + bool "ipc" + help + IPC counters: semaphores used, number of allocated segments + in shared memory and more. + +config BR2_PACKAGE_COLLECTD_IPMI + bool "ipmi" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_PACKAGE_OPENIPMI + help + Read hardware sensors from servers using the Intelligent + Platform Management Interface (IPMI). + +comment "ipmi needs a toolchain w/ NPTL" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL + +config BR2_PACKAGE_COLLECTD_IPTABLES + bool "iptables" + select BR2_PACKAGE_IPTABLES + help + Gather statistics from iptables packet filter. + +config BR2_PACKAGE_COLLECTD_IPVS + bool "ipvs" + help + Extracts statistics from IP Virtual Server (IPVS), the + transport-layer load-balancer of the LVS project. + It stores traffic and connections history for each of the + Real Servers (RS) behind a local Virtual Server (VS). + Collectd must be run on Directors (in LVS jargon). + +config BR2_PACKAGE_COLLECTD_IRQ + bool "irq" + help + Collects the number of interrupts. + +config BR2_PACKAGE_COLLECTD_LOAD + bool "load" + help + Collects the system load. + +config BR2_PACKAGE_COLLECTD_LOGPARSER + bool "logparser" + help + Plugin for filtering and parsing log messages. + +config BR2_PACKAGE_COLLECTD_MD + bool "md" + help + Collects software-RAID device information. + +config BR2_PACKAGE_COLLECTD_MDEVENTS + bool "mdevents" + help + Events from md (Linux Software RAID) devices. + +config BR2_PACKAGE_COLLECTD_MEMCACHEC + bool "memcachec" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LIBMEMCACHED + help + Query and parse data from a memcache daemon. + +comment "memcachec needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_COLLECTD_MEMCACHED + bool "memcached" + help + Collects statistics from a memcached daemon. + +config BR2_PACKAGE_COLLECTD_MEMORY + bool "memory" + help + Collects physical memory utilization. + +config BR2_PACKAGE_COLLECTD_MODBUS + bool "modbus" + select BR2_PACKAGE_LIBMODBUS + help + Reads register values from a modbus "slave" via Modbus/TCP. + +config BR2_PACKAGE_COLLECTD_MYSQL + bool "mysql" + depends on BR2_INSTALL_LIBSTDCPP # mysql + depends on BR2_USE_MMU # mysql + depends on BR2_TOOLCHAIN_HAS_THREADS # mysql + select BR2_PACKAGE_MARIADB + help + Connects to a MySQL database and issues a "show status" + command. + +comment "mysql needs a toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_COLLECTD_NETLINK + bool "netlink" + select BR2_PACKAGE_LIBMNL + help + Get statistics for interfaces, qdiscs, classes, and filters. + +config BR2_PACKAGE_COLLECTD_NFS + bool "nfs" + help + Collects information about the usage of the Network File + System. + +config BR2_PACKAGE_COLLECTD_NGINX + bool "nginx" + select BR2_PACKAGE_LIBCURL + help + Collects the number of requests handled by the nginx daemon + since startup and the number of current connections by state. + +config BR2_PACKAGE_COLLECTD_NTPD + bool "ntpd" + help + Queries an NTP server and extracts parameters. + +config BR2_PACKAGE_COLLECTD_NUT + bool "nut" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_NUT + help + The NUT plugin collects uninterruptible power supply (UPS) + statistics using the Network UPS Tools (NUT). + +comment "nut needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_COLLECTD_OLSRD + bool "olsrd" + help + Reads information about meshed networks from olsrd. + +config BR2_PACKAGE_COLLECTD_ONEWIRE + bool "onewire" + select BR2_PACKAGE_OWFS + help + Collects temperature information from sensors connected over + the OneWire bus. + +config BR2_PACKAGE_COLLECTD_OPENLDAP + bool "openldap" + depends on BR2_USE_WCHAR + select BR2_PACKAGE_OPENLDAP + help + Read monitoring information from OpenLDAP's cn=Monitor + subtree. + +comment "openldap support needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +config BR2_PACKAGE_COLLECTD_OPENVPN + bool "openvpn" + help + Reads the status file of OpenVPN to collect statistics. + +config BR2_PACKAGE_COLLECTD_PING + bool "ping" + select BR2_PACKAGE_LIBOPING + help + Mesures network latency using ICMP "echo requests". + +config BR2_PACKAGE_COLLECTD_POSTGRESQL + bool "postgresql" + depends on BR2_USE_WCHAR # postgresql + depends on !BR2_OPTIMIZE_FAST # postgresql + select BR2_PACKAGE_POSTGRESQL + help + Connects to and executes SQL statements on a PostgreSQL + database. It then reads back the results and, depending on the + configuration, the returned values are then converted into + collectd 'value lists'. + +comment "postgresql support needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +comment "postgresql support can't be built with Optimize for fast" + depends on BR2_OPTIMIZE_FAST + +config BR2_PACKAGE_COLLECTD_PROCESSES + bool "processes" + help + Collects the number of processes gruped by state. + +config BR2_PACKAGE_COLLECTD_PROTOCOLS + bool "protocols" + help + Collects information about the network protocols. + +config BR2_PACKAGE_COLLECTD_REDIS + bool "redis" + select BR2_PACKAGE_HIREDIS + help + Connects to one or more instances of Redis. + +config BR2_PACKAGE_COLLECTD_SENSORS + bool "sensors" + select BR2_PACKAGE_LM_SENSORS + help + Collects data from lm-sensors. + +config BR2_PACKAGE_COLLECTD_SERIAL + bool "serial" + help + Collects the traffic on serial interfaces. + +config BR2_PACKAGE_COLLECTD_SMART + bool "SMART" + depends on BR2_PACKAGE_HAS_UDEV # libatasmart + select BR2_PACKAGE_LIBATASMART + help + Collect SMART statistics, notably load cycle count, + temperature and bad sectors. + +comment "SMART requires udev to be enabled" + depends on !BR2_PACKAGE_HAS_UDEV + +config BR2_PACKAGE_COLLECTD_STATSD + bool "StatsD" + help + StatsD network protocol to allow clients to report "events". + +config BR2_PACKAGE_COLLECTD_SNMP + bool "snmp" + select BR2_PACKAGE_NETSNMP + help + Reads values from SNMP devices. + +config BR2_PACKAGE_COLLECTD_SWAP + bool "swap" + help + Collects the amount of memory currently written to disk. + +config BR2_PACKAGE_COLLECTD_SYNPROXY + bool "synproxy" + help + Synproxy stats plugin. + +config BR2_PACKAGE_COLLECTD_TABLE + bool "table" + help + Parses table-like structured plain-text files. + +config BR2_PACKAGE_COLLECTD_TAIL + bool "tail" + help + Tails log files and each line is given to one or more matches + which test if the line is relevant for any statistics. + +config BR2_PACKAGE_COLLECTD_TAIL_CSV + bool "tail csv" + help + Follows (tails) files in CSV format, parses each line and + submits extracted values. + +config BR2_PACKAGE_COLLECTD_TCPCONNS + bool "tcpconns" + help + Counts the number of TCP connections to/from a specified port. + +config BR2_PACKAGE_COLLECTD_THERMAL + bool "thermal" + help + Reads ACPI thermal zone information. + +config BR2_PACKAGE_COLLECTD_UBI + bool "ubi" + help + UBI (Unsorted Block Images) is an erase block management layer + for flash memory devices. UBI serves two purposes, tracking + NAND flash bad blocks and providing wear leveling. + This plugin collects some stats about UBI devices: + * bad physical underlying blocks (bad_peb_count) + * max erase counter value (max_ec) + +config BR2_PACKAGE_COLLECTD_UPTIME + bool "uptime" + help + Keeps track of the system uptime. + +config BR2_PACKAGE_COLLECTD_USERS + bool "users" + help + Counts the number of users currently logged in. + +config BR2_PACKAGE_COLLECTD_VIRT + bool "virt" + depends on BR2_PACKAGE_LIBVIRT_ARCH_SUPPORTS # libvirt + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 # libvirt + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 || !BR2_aarch64 # libvirt + depends on BR2_PACKAGE_HAS_UDEV # libvirt + depends on BR2_USE_WCHAR # libvirt + select BR2_PACKAGE_LIBVIRT + select BR2_PACKAGE_LIBXML2 + help + Gather statistics about virtualized guests on a system. + +comment "virt needs udev /dev management, a toolchain w/ wchar, kernel headers >= 3.12 (4.11 for AArch64)" + depends on BR2_PACKAGE_LIBVIRT_ARCH_SUPPORTS + depends on !BR2_PACKAGE_HAS_UDEV || !BR2_USE_WCHAR || \ + !(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 && \ + (BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 || !BR2_aarch64)) + +config BR2_PACKAGE_COLLECTD_VMEM + bool "vmem" + help + Collects information about the virtual memory subsystem. + +config BR2_PACKAGE_COLLECTD_WIRELESS + bool "wireless" + help + Collects signal quality, power and noise ratio for WLAN cards. + +config BR2_PACKAGE_COLLECTD_ZOOKEEPER + bool "zookeeper" + help + Read data from Zookeeper's MNTR command. + +endmenu + +menu "target plugins" + +config BR2_PACKAGE_COLLECTD_NOTIFICATION + bool "notification" + help + Create and dispatch a notification. + +config BR2_PACKAGE_COLLECTD_REPLACE + bool "replace" + help + Replace parts of an identifier using regular expressions. + +config BR2_PACKAGE_COLLECTD_SCALE + bool "scale" + help + Scale (multiply) values by an arbitrary number. + +config BR2_PACKAGE_COLLECTD_SET + bool "set" + help + Set (overwrite) entire parts of an identifier. + +endmenu + +menu "write plugins" + +comment "Select at least one for collectd to be useful" + +config BR2_PACKAGE_COLLECTD_AMQP + bool "amqp" + select BR2_PACKAGE_OPENSSL # needs rabbitmq-c with ssl support + select BR2_PACKAGE_RABBITMQ_C + help + Send/receive values via the Advanced Message Queuing Protocol + (AMQP). + +config BR2_PACKAGE_COLLECTD_CSV + bool "csv" + help + Writes values to a plain-text file in Comma Separated Values + format. + +config BR2_PACKAGE_COLLECTD_GRAPHITE + bool "graphite" + help + Writes data collected to Carbon (Graphite's) storage API. + http://graphite.wikidot.com/start + +config BR2_PACKAGE_COLLECTD_GRPC + bool "grpc" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_ATOMIC # grpc + depends on BR2_INSTALL_LIBSTDCPP # grpc -> protobuf + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # grpc -> protobuf + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # grpc -> libabseil-cpp + depends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS # grpc + select BR2_PACKAGE_GRPC + help + Send/receive values using the gRPC protocol. + +comment "grpc needs a toolchain w/ C++, gcc >= 8" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_8 + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + depends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS # grpc + +config BR2_PACKAGE_COLLECTD_MQTT + bool "mqtt" + select BR2_PACKAGE_MOSQUITTO + help + Sends metrics to and/or receives metrics from an MQTT broker. + +config BR2_PACKAGE_COLLECTD_NETWORK + bool "network" + help + Send/receive values from other instances of collectd. + +config BR2_PACKAGE_COLLECTD_NETWORK_GCRYPT + bool "crypto support" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt + depends on BR2_PACKAGE_COLLECTD_NETWORK + select BR2_PACKAGE_LIBGCRYPT + help + Enable crypto support + +config BR2_PACKAGE_COLLECTD_RRDTOOL + bool "rrdtool" + depends on BR2_USE_WCHAR # rrdtool + select BR2_PACKAGE_RRDTOOL + help + Writes values to RRD-files. + +comment "rrdtool support needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +if BR2_PACKAGE_COLLECTD_RRDTOOL + +config BR2_PACKAGE_COLLECTD_RRDCACHED + bool "rrdcached" + help + Use the RRDtool caching daemon. + +endif + +config BR2_PACKAGE_COLLECTD_RIEMANN + bool "riemann" + # riemann-c-client -> protobuf-c + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS + depends on BR2_HOST_GCC_AT_LEAST_7 # protobuf-c + select BR2_PACKAGE_RIEMANN_C_CLIENT + select BR2_PACKAGE_LIBTOOL + help + Sends data to Riemann, a stream processing and monitoring + system. + +comment "riemann needs a toolchain w/ C++, host gcc >= 7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_HOST_GCC_AT_LEAST_7 + depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS + +config BR2_PACKAGE_COLLECTD_UNIXSOCK + bool "unixsock" + help + Opens a UNIX domain socket and accepts connections. + One can send commands to the daemon and receive information. + +config BR2_PACKAGE_COLLECTD_WRITEHTTP + bool "write_http" + select BR2_PACKAGE_LIBCURL + help + Sends values collected to a web-server using HTTP POST and + PUTVAL. + +config BR2_PACKAGE_COLLECTD_WRITEINFLUXDBUDP + bool "write_influxdb_udp" + help + Sends data to an instance of InfluxDB using the "Line + Protocol". + +config BR2_PACKAGE_COLLECTD_WRITELOG + bool "write_log" + help + Writes data to the log. + +config BR2_PACKAGE_COLLECTD_WRITEPROMETHEUS + bool "write_prometheus" + depends on BR2_INSTALL_LIBSTDCPP # protobuf-c + depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS # protobuf-c + depends on BR2_HOST_GCC_AT_LEAST_7 # protobuf-c + select BR2_PACKAGE_LIBMICROHTTPD + select BR2_PACKAGE_PROTOBUF_C + help + Publishes values using an embedded HTTP server, in a format + compatible with Prometheus' collectd_exporter. + +comment "write_prometheus needs a toolchain w/ C++, host gcc >= 7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_HOST_GCC_AT_LEAST_7 + depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS + +config BR2_PACKAGE_COLLECTD_WRITEREDIS + bool "write_redis" + select BR2_PACKAGE_HIREDIS + help + Sends data to Redis. + +config BR2_PACKAGE_COLLECTD_WRITESENSU + bool "write_sensu" + help + Sends data to Sensu, a stream processing and monitoring + system, via the Sensu client local TCP socket. + +config BR2_PACKAGE_COLLECTD_WRITETSDB + bool "write_tsdb" + help + Sends data OpenTSDB, a scalable no master, no shared state + time series database. + +endmenu + +endif + +comment "collectd needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + depends on BR2_USE_MMU diff --git a/package/collectd/S90collectd b/package/collectd/S90collectd new file mode 100644 index 00000000..cf11c7b3 --- /dev/null +++ b/package/collectd/S90collectd @@ -0,0 +1,51 @@ +#!/bin/sh + +DAEMON="collectd" +EXEC="/usr/sbin/$DAEMON" +PIDFILE="/var/run/$DAEMON.pid" +COLLECTD_ARGS="" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -p "$PIDFILE" -x "$EXEC" \ + -- $COLLECTD_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/collectd/collectd.hash b/package/collectd/collectd.hash new file mode 100644 index 00000000..674f09f5 --- /dev/null +++ b/package/collectd/collectd.hash @@ -0,0 +1,5 @@ +# Locally computed checksums +sha512 7a15e4c0ae587db4987d673a790a4f3bea1cab29ce24a506fb21fa7bd2f60bfec70867eaa1c1395cb5b0e0ae81a024fb6109b064da0ef50e7c146d2198871c70 collectd-5.12.0.tar.bz2 +sha256 5bae043042c19c31f77eb8464e56a01a5454e0b39fa07cf7ad0f1bfc9c3a09d6 collectd-5.12.0.tar.bz2 +sha1 af36fe83e2995270b5632fc21e5a001e6702cdce collectd-5.12.0.tar.bz2 +sha256 ed0409b2b1c30566dab5fcdaf46ee70e140c99788e22f0267645a9357b476ae4 COPYING diff --git a/package/collectd/collectd.mk b/package/collectd/collectd.mk new file mode 100644 index 00000000..b47b2efa --- /dev/null +++ b/package/collectd/collectd.mk @@ -0,0 +1,271 @@ +################################################################################ +# +# collectd +# +################################################################################ + +COLLECTD_VERSION = 5.12.0 +COLLECTD_SITE = \ + https://github.com/collectd/collectd/releases/download/collectd-$(COLLECTD_VERSION) +COLLECTD_SOURCE = collectd-$(COLLECTD_VERSION).tar.bz2 +COLLECTD_CONF_ENV = ac_cv_lib_yajl_yajl_alloc=yes +COLLECTD_INSTALL_STAGING = YES +COLLECTD_LICENSE = MIT (daemon, plugins), GPL-2.0 (plugins), LGPL-2.1 (plugins) +COLLECTD_LICENSE_FILES = COPYING +COLLECTD_CPE_ID_VENDOR = collectd +COLLECTD_SELINUX_MODULES = apache collectd +# We're patching configure.ac +COLLECTD_AUTORECONF = YES + +# These require unmet dependencies, are fringe, pointless or deprecated +COLLECTD_PLUGINS_DISABLE = \ + apple_sensors aquaero ascent barometer dpdkstat email \ + gmond hddtemp intel_rdt java lpar \ + madwifi mbmon mic multimeter netapp notify_desktop numa \ + oracle perl pf pinba powerdns python routeros \ + sigrok tape target_v5upgrade teamspeak2 ted \ + tokyotyrant turbostat uuid varnish vserver write_kafka \ + write_mongodb xencpu xmms zfs_arc zone + +COLLECTD_CONF_ENV += LIBS="-lm" + +COLLECTD_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y) +COLLECTD_CFLAGS += -O0 +endif + +COLLECTD_CONF_ENV += CFLAGS="$(COLLECTD_CFLAGS)" + +# +# NOTE: There's also a third availible setting "intswap", which might +# be needed on some old ARM hardware (see [2]), but is not being +# accounted for as per discussion [1] +# +# [1] http://lists.busybox.net/pipermail/buildroot/2017-November/206100.html +# [2] http://lists.busybox.net/pipermail/buildroot/2017-November/206251.html +# +ifeq ($(BR2_ENDIAN),"BIG") +COLLECTD_FP_LAYOUT=endianflip +else +COLLECTD_FP_LAYOUT=nothing +endif + +COLLECTD_CONF_OPTS += \ + --with-nan-emulation \ + --with-fp-layout=$(COLLECTD_FP_LAYOUT) \ + --with-perl-bindings=no \ + --disable-werror \ + $(foreach p, $(COLLECTD_PLUGINS_DISABLE), --disable-$(p)) \ + $(if $(BR2_PACKAGE_COLLECTD_AGGREGATION),--enable-aggregation,--disable-aggregation) \ + $(if $(BR2_PACKAGE_COLLECTD_AMQP),--enable-amqp,--disable-amqp) \ + $(if $(BR2_PACKAGE_COLLECTD_APACHE),--enable-apache,--disable-apache) \ + $(if $(BR2_PACKAGE_COLLECTD_APCUPS),--enable-apcups,--disable-apcups) \ + $(if $(BR2_PACKAGE_COLLECTD_BATTERY),--enable-battery,--disable-battery) \ + $(if $(BR2_PACKAGE_COLLECTD_BIND),--enable-bind,--disable-bind) \ + $(if $(BR2_PACKAGE_COLLECTD_BUDDYINFO),--enable-buddyinfo,--disable-buddyinfo) \ + $(if $(BR2_PACKAGE_COLLECTD_CAPABILITIES),--enable-capabilities,--disable-capabilities) \ + $(if $(BR2_PACKAGE_COLLECTD_CEPH),--enable-ceph,--disable-ceph) \ + $(if $(BR2_PACKAGE_COLLECTD_CHRONY),--enable-chrony,--disable-chrony) \ + $(if $(BR2_PACKAGE_COLLECTD_CGROUPS),--enable-cgroups,--disable-cgroups) \ + $(if $(BR2_PACKAGE_COLLECTD_CONNTRACK),--enable-conntrack,--disable-conntrack) \ + $(if $(BR2_PACKAGE_COLLECTD_CONTEXTSWITCH),--enable-contextswitch,--disable-contextswitch) \ + $(if $(BR2_PACKAGE_COLLECTD_CPU),--enable-cpu,--disable-cpu) \ + $(if $(BR2_PACKAGE_COLLECTD_CPUFREQ),--enable-cpufreq,--disable-cpufreq) \ + $(if $(BR2_PACKAGE_COLLECTD_CPUSLEEP),--enable-cpusleep,--disable-cpusleep) \ + $(if $(BR2_PACKAGE_COLLECTD_CSV),--enable-csv,--disable-csv) \ + $(if $(BR2_PACKAGE_COLLECTD_CURL),--enable-curl,--disable-curl) \ + $(if $(BR2_PACKAGE_COLLECTD_CURL_JSON),--enable-curl_json,--disable-curl_json) \ + $(if $(BR2_PACKAGE_COLLECTD_CURL_XML),--enable-curl_xml,--disable-curl_xml) \ + $(if $(BR2_PACKAGE_COLLECTD_DBI),--enable-dbi,--disable-dbi) \ + $(if $(BR2_PACKAGE_COLLECTD_DF),--enable-df,--disable-df) \ + $(if $(BR2_PACKAGE_COLLECTD_DISK),--enable-disk,--disable-disk) \ + $(if $(BR2_PACKAGE_COLLECTD_DNS),--enable-dns,--disable-dns) \ + $(if $(BR2_PACKAGE_COLLECTD_DPDK_TELEMETRY),--enable-dpdk_telemetry,--disable-dpdk_telemetry) \ + $(if $(BR2_PACKAGE_COLLECTD_DRBD),--enable-drbd,--disable-drbd) \ + $(if $(BR2_PACKAGE_COLLECTD_EMPTY_COUNTER),--enable-match_empty_counter,--disable-match_empty_counter) \ + $(if $(BR2_PACKAGE_COLLECTD_ENTROPY),--enable-entropy,--disable-entropy) \ + $(if $(BR2_PACKAGE_COLLECTD_ETHSTAT),--enable-ethstat,--disable-ethstat) \ + $(if $(BR2_PACKAGE_COLLECTD_EXEC),--enable-exec,--disable-exec) \ + $(if $(BR2_PACKAGE_COLLECTD_FHCOUNT),--enable-fhcount,--disable-fhcount) \ + $(if $(BR2_PACKAGE_COLLECTD_FILECOUNT),--enable-filecount,--disable-filecount) \ + $(if $(BR2_PACKAGE_COLLECTD_FSCACHE),--enable-fscache,--disable-fscache) \ + $(if $(BR2_PACKAGE_COLLECTD_GPS),--enable-gps,--disable-gps) \ + $(if $(BR2_PACKAGE_COLLECTD_GRAPHITE),--enable-write_graphite,--disable-write_graphite) \ + $(if $(BR2_PACKAGE_COLLECTD_GRPC),--enable-grpc,--disable-grpc) \ + $(if $(BR2_PACKAGE_COLLECTD_HASHED),--enable-match_hashed,--disable-match_hashed) \ + $(if $(BR2_PACKAGE_COLLECTD_HUGEPAGES),--enable-hugepages,--disable-hugepages) \ + $(if $(BR2_PACKAGE_COLLECTD_INFINIBAND),--enable-infiniband,--disable-infiniband) \ + $(if $(BR2_PACKAGE_COLLECTD_INTERFACE),--enable-interface,--disable-interface) \ + $(if $(BR2_PACKAGE_COLLECTD_IPC),--enable-ipc,--disable-ipc) \ + $(if $(BR2_PACKAGE_COLLECTD_IPMI),--enable-ipmi,--disable-ipmi) \ + $(if $(BR2_PACKAGE_COLLECTD_IPTABLES),--enable-iptables,--disable-iptables) \ + $(if $(BR2_PACKAGE_COLLECTD_IPVS),--enable-ipvs,--disable-ipvs) \ + $(if $(BR2_PACKAGE_COLLECTD_IRQ),--enable-irq,--disable-irq) \ + $(if $(BR2_PACKAGE_COLLECTD_LOAD),--enable-load,--disable-load) \ + $(if $(BR2_PACKAGE_COLLECTD_LOGFILE),--enable-logfile,--disable-logfile) \ + $(if $(BR2_PACKAGE_COLLECTD_LOGPARSER),--enable-logparser,--disable-logparser) \ + $(if $(BR2_PACKAGE_COLLECTD_LOGSTASH),--enable-log_logstash,--disable-log_logstash) \ + $(if $(BR2_PACKAGE_COLLECTD_LUA),--enable-lua,--disable-lua) \ + $(if $(BR2_PACKAGE_COLLECTD_MD),--enable-md,--disable-md) \ + $(if $(BR2_PACKAGE_COLLECTD_MDEVENTS),--enable-mdevents,--disable-mdevents) \ + $(if $(BR2_PACKAGE_COLLECTD_MEMCACHEC),--enable-memcachec,--disable-memcachec) \ + $(if $(BR2_PACKAGE_COLLECTD_MEMCACHED),--enable-memcached,--disable-memcached) \ + $(if $(BR2_PACKAGE_COLLECTD_MEMORY),--enable-memory,--disable-memory) \ + $(if $(BR2_PACKAGE_COLLECTD_MODBUS),--enable-modbus,--disable-modbus) \ + $(if $(BR2_PACKAGE_COLLECTD_MQTT),--enable-mqtt,--disable-mqtt) \ + $(if $(BR2_PACKAGE_COLLECTD_MYSQL),--enable-mysql,--disable-mysql) \ + $(if $(BR2_PACKAGE_COLLECTD_NETLINK),--enable-netlink,--disable-netlink) \ + $(if $(BR2_PACKAGE_COLLECTD_NETWORK),--enable-network,--disable-network) \ + $(if $(BR2_PACKAGE_COLLECTD_NFS),--enable-nfs,--disable-nfs) \ + $(if $(BR2_PACKAGE_COLLECTD_NGINX),--enable-nginx,--disable-nginx) \ + $(if $(BR2_PACKAGE_COLLECTD_NOTIFICATION),--enable-target_notification,--disable-target_notification) \ + $(if $(BR2_PACKAGE_COLLECTD_NOTIFY_EMAIL),--enable-notify_email,--disable-notify_email) \ + $(if $(BR2_PACKAGE_COLLECTD_NOTIFY_NAGIOS),--enable-notify_nagios,--disable-notify_nagios) \ + $(if $(BR2_PACKAGE_COLLECTD_NTPD),--enable-ntpd,--disable-ntpd) \ + $(if $(BR2_PACKAGE_COLLECTD_NUT),--enable-nut,--disable-nut) \ + $(if $(BR2_PACKAGE_COLLECTD_OLSRD),--enable-olsrd,--disable-olsrd) \ + $(if $(BR2_PACKAGE_COLLECTD_ONEWIRE),--enable-onewire,--disable-onewire) \ + $(if $(BR2_PACKAGE_COLLECTD_OPENLDAP),--enable-openldap,--disable-openldap) \ + $(if $(BR2_PACKAGE_COLLECTD_OPENVPN),--enable-openvpn,--disable-openvpn) \ + $(if $(BR2_PACKAGE_COLLECTD_PING),--enable-ping,--disable-ping) \ + $(if $(BR2_PACKAGE_COLLECTD_POSTGRESQL),--enable-postgresql,--disable-postgresql) \ + $(if $(BR2_PACKAGE_COLLECTD_PROCESSES),--enable-processes,--disable-processes) \ + $(if $(BR2_PACKAGE_COLLECTD_PROTOCOLS),--enable-protocols,--disable-protocols) \ + $(if $(BR2_PACKAGE_COLLECTD_REDIS),--enable-redis,--disable-redis) \ + $(if $(BR2_PACKAGE_COLLECTD_REGEX),--enable-match_regex,--disable-match-regex) \ + $(if $(BR2_PACKAGE_COLLECTD_REPLACE),--enable-target_replace,--disable-target_replace) \ + $(if $(BR2_PACKAGE_COLLECTD_RIEMANN),--enable-write_riemann,--disable-write_riemann) \ + $(if $(BR2_PACKAGE_COLLECTD_RRDCACHED),--enable-rrdcached,--disable-rrdcached) \ + $(if $(BR2_PACKAGE_COLLECTD_RRDTOOL),--enable-rrdtool,--disable-rrdtool) \ + $(if $(BR2_PACKAGE_COLLECTD_SCALE),--enable-target_scale,--disable-target_scale) \ + $(if $(BR2_PACKAGE_COLLECTD_SENSORS),--enable-sensors,--disable-sensors) \ + $(if $(BR2_PACKAGE_COLLECTD_SERIAL),--enable-serial,--disable-serial) \ + $(if $(BR2_PACKAGE_COLLECTD_STATSD),--enable-statsd,--disable-statsd) \ + $(if $(BR2_PACKAGE_COLLECTD_SET),--enable-target_set,--disable-target_set) \ + $(if $(BR2_PACKAGE_COLLECTD_SMART),--enable-smart,--disable-smart) \ + $(if $(BR2_PACKAGE_COLLECTD_SNMP),--enable-snmp,--disable-snmp) \ + $(if $(BR2_PACKAGE_COLLECTD_SWAP),--enable-swap,--disable-swap) \ + $(if $(BR2_PACKAGE_COLLECTD_SYNPROXY),--enable-synproxy,--disable-synproxy) \ + $(if $(BR2_PACKAGE_COLLECTD_SYSLOG),--enable-syslog,--disable-syslog) \ + $(if $(BR2_PACKAGE_COLLECTD_TABLE),--enable-table,--disable-table) \ + $(if $(BR2_PACKAGE_COLLECTD_TAIL),--enable-tail,--disable-tail) \ + $(if $(BR2_PACKAGE_COLLECTD_TAIL_CSV),--enable-tail_csv,--disable-tail_csv) \ + $(if $(BR2_PACKAGE_COLLECTD_TCPCONNS),--enable-tcpconns,--disable-tcpconns) \ + $(if $(BR2_PACKAGE_COLLECTD_THERMAL),--enable-thermal,--disable-thermal) \ + $(if $(BR2_PACKAGE_COLLECTD_THRESHOLD),--enable-threshold,--disable-threshold) \ + $(if $(BR2_PACKAGE_COLLECTD_TIMEDIFF),--enable-match_timediff,--disable-match_timediff) \ + $(if $(BR2_PACKAGE_COLLECTD_UBI),--enable-ubi,--disable-ubi) \ + $(if $(BR2_PACKAGE_COLLECTD_UNIXSOCK),--enable-unixsock,--disable-unixsock) \ + $(if $(BR2_PACKAGE_COLLECTD_UPTIME),--enable-uptime,--disable-uptime) \ + $(if $(BR2_PACKAGE_COLLECTD_USERS),--enable-users,--disable-users) \ + $(if $(BR2_PACKAGE_COLLECTD_VALUE),--enable-match_value,--disable-match_value) \ + $(if $(BR2_PACKAGE_COLLECTD_VIRT),--enable-virt,--disable-virt) \ + $(if $(BR2_PACKAGE_COLLECTD_VMEM),--enable-vmem,--disable-vmem) \ + $(if $(BR2_PACKAGE_COLLECTD_WIRELESS),--enable-wireless,--disable-wireless) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITEHTTP),--enable-write_http,--disable-write_http) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITEINFLUXDBUDP),--enable-write_influxdb_udp,--disable-write_influxdb_udp) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITELOG),--enable-write_log,--disable-write_log) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITEPROMETHEUS),--enable-write_prometheus,--disable-write_prometheus) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITEREDIS),--enable-write_redis,--disable-write_redis) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITESENSU),--enable-write_sensu,--disable-write_sensu) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITETSDB),--enable-write_tsdb,--disable-write_tsdb) \ + $(if $(BR2_PACKAGE_COLLECTD_ZOOKEEPER),--enable-zookeeper,--disable-zookeeper) + +COLLECTD_DEPENDENCIES = \ + host-pkgconf \ + $(if $(BR2_PACKAGE_COLLECTD_AMQP),rabbitmq-c) \ + $(if $(BR2_PACKAGE_COLLECTD_APACHE),libcurl) \ + $(if $(BR2_PACKAGE_COLLECTD_BIND),libcurl libxml2) \ + $(if $(BR2_PACKAGE_COLLECTD_CAPABILITIES),jansson libmicrohttpd) \ + $(if $(BR2_PACKAGE_COLLECTD_CEPH),yajl) \ + $(if $(BR2_PACKAGE_COLLECTD_CURL),libcurl) \ + $(if $(BR2_PACKAGE_COLLECTD_CURL_JSON),libcurl yajl) \ + $(if $(BR2_PACKAGE_COLLECTD_CURL_XML),libcurl libxml2) \ + $(if $(BR2_PACKAGE_COLLECTD_DBI),libdbi) \ + $(if $(BR2_PACKAGE_COLLECTD_DNS),libpcap) \ + $(if $(BR2_PACKAGE_COLLECTD_DPDK_TELEMETRY),jansson) \ + $(if $(BR2_PACKAGE_COLLECTD_GPS),gpsd) \ + $(if $(BR2_PACKAGE_COLLECTD_GRPC),grpc) \ + $(if $(BR2_PACKAGE_COLLECTD_IPMI),openipmi) \ + $(if $(BR2_PACKAGE_COLLECTD_IPTABLES),iptables) \ + $(if $(BR2_PACKAGE_COLLECTD_LOGSTASH),yajl) \ + $(if $(BR2_PACKAGE_COLLECTD_LUA),luainterpreter) \ + $(if $(BR2_PACKAGE_COLLECTD_MEMCACHEC),libmemcached) \ + $(if $(BR2_PACKAGE_COLLECTD_MODBUS),libmodbus) \ + $(if $(BR2_PACKAGE_COLLECTD_MQTT),mosquitto) \ + $(if $(BR2_PACKAGE_COLLECTD_MYSQL),mariadb) \ + $(if $(BR2_PACKAGE_COLLECTD_NETLINK),libmnl) \ + $(if $(BR2_PACKAGE_COLLECTD_NGINX),libcurl) \ + $(if $(BR2_PACKAGE_COLLECTD_NOTIFY_EMAIL),libesmtp) \ + $(if $(BR2_PACKAGE_COLLECTD_NUT),nut) \ + $(if $(BR2_PACKAGE_COLLECTD_ONEWIRE),owfs) \ + $(if $(BR2_PACKAGE_COLLECTD_OPENLDAP),openldap) \ + $(if $(BR2_PACKAGE_COLLECTD_PING),liboping) \ + $(if $(BR2_PACKAGE_COLLECTD_POSTGRESQL),postgresql) \ + $(if $(BR2_PACKAGE_COLLECTD_REDIS),hiredis) \ + $(if $(BR2_PACKAGE_COLLECTD_RIEMANN),libtool riemann-c-client) \ + $(if $(BR2_PACKAGE_COLLECTD_RRDTOOL),rrdtool) \ + $(if $(BR2_PACKAGE_COLLECTD_SENSORS),lm-sensors) \ + $(if $(BR2_PACKAGE_COLLECTD_SMART),libatasmart) \ + $(if $(BR2_PACKAGE_COLLECTD_SNMP),netsnmp) \ + $(if $(BR2_PACKAGE_COLLECTD_VIRT),libvirt libxml2) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITEHTTP),libcurl) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITEPROMETHEUS),libmicrohttpd protobuf-c) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITEREDIS),hiredis) + +# include/library fixups +ifeq ($(BR2_PACKAGE_JANSSON),y) +COLLECTD_CONF_OPTS += --with-libjansson=$(STAGING_DIR)/usr +endif +ifeq ($(BR2_PACKAGE_LIBCURL),y) +COLLECTD_CONF_OPTS += --with-libcurl=$(STAGING_DIR)/usr +endif +ifeq ($(BR2_PACKAGE_LUAJIT),y) +COLLECTD_CONF_ENV += LIBLUA_PKG_CONFIG_NAME=luajit +endif +ifeq ($(BR2_PACKAGE_MARIADB),y) +COLLECTD_CONF_OPTS += --with-libmysql=$(STAGING_DIR)/usr +endif +ifeq ($(BR2_PACKAGE_NETSNMP),y) +COLLECTD_CONF_OPTS += --with-libnetsnmp=$(STAGING_DIR)/usr +endif +ifeq ($(BR2_PACKAGE_POSTGRESQL),y) +COLLECTD_CONF_OPTS += --with-libpq=$(STAGING_DIR)/usr/bin/pg_config +COLLECTD_CONF_ENV += LIBS="-lpthread -lm" +endif +ifeq ($(BR2_PACKAGE_YAJL),y) +COLLECTD_CONF_OPTS += --with-libyajl=$(STAGING_DIR)/usr +endif + +# network can use libgcrypt +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +COLLECTD_DEPENDENCIES += libgcrypt +COLLECTD_CONF_OPTS += --with-libgcrypt=$(STAGING_DIR)/usr/bin/libgcrypt-config +else +COLLECTD_CONF_OPTS += --with-libgcrypt=no +endif + +define COLLECTD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install + rm -f $(TARGET_DIR)/usr/bin/collectd-nagios +endef + +ifeq ($(BR2_PACKAGE_COLLECTD_POSTGRESQL),) +define COLLECTD_REMOVE_UNNEEDED_POSTGRESQL_DEFAULT_CONF + rm -f $(TARGET_DIR)/usr/share/collectd/postgresql_default.conf +endef +COLLECTD_POST_INSTALL_TARGET_HOOKS += COLLECTD_REMOVE_UNNEEDED_POSTGRESQL_DEFAULT_CONF +endif + +define COLLECTD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/collectd/collectd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/collectd.service +endef + +define COLLECTD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/collectd/S90collectd \ + $(TARGET_DIR)/etc/init.d/S90collectd +endef + +$(eval $(autotools-package)) diff --git a/package/collectd/collectd.service b/package/collectd/collectd.service new file mode 100644 index 00000000..e203806f --- /dev/null +++ b/package/collectd/collectd.service @@ -0,0 +1,17 @@ +[Unit] +Description=Statistics collection and monitoring daemon +After=local-fs.target network.target +Requires=local-fs.target network.target +ConditionPathExists=/etc/collectd.conf + +[Service] +Type=notify +NotifyAccess=main +EnvironmentFile=-/etc/default/collectd +ExecStartPre=/usr/sbin/collectd -t +ExecStart=/usr/sbin/collectd +Restart=always +RestartSec=10 + +[Install] +WantedBy=multi-user.target diff --git a/package/collectl/Config.in b/package/collectl/Config.in new file mode 100644 index 00000000..28379abe --- /dev/null +++ b/package/collectl/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_COLLECTL + bool "collectl" + depends on BR2_USE_MMU # perl + select BR2_PACKAGE_PERL # runtime + help + Collectl is a performance monitoring and benchmark tool that + tries to do it all. You can choose to monitor any of a broad + set of subsystems which currently include buddyinfo, cpu, + disk, inodes, infiniband, lustre, memory, network, nfs, + processes, quadrics, slabs, sockets and tcp. + + http://collectl.sourceforge.net/ diff --git a/package/collectl/collectl.hash b/package/collectl/collectl.hash new file mode 100644 index 00000000..1785d25d --- /dev/null +++ b/package/collectl/collectl.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 9fab4769441c07201748e52c7f8c7b21526ab45a05142dd2b2b1fa5c16c38750 collectl-4.3.2.src.tar.gz +sha256 b92800d37afa2aa03c02817ff3b68efc7236436fe76af06ad9b1fc4682f59bcb ARTISTIC +sha256 264fe27852db5624e6a9a9845b4e14e91ee5007305b33e5556dfade394d578a8 COPYING +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 GPL diff --git a/package/collectl/collectl.mk b/package/collectl/collectl.mk new file mode 100644 index 00000000..c6cb2e14 --- /dev/null +++ b/package/collectl/collectl.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# collectl +# +################################################################################ + +COLLECTL_VERSION = 4.3.2 +COLLECTL_SOURCE = collectl-$(COLLECTL_VERSION).src.tar.gz +COLLECTL_SITE = http://downloads.sourceforge.net/collectl/collectl +COLLECTL_LICENSE = Artistic or GPL-2.0 +COLLECTL_LICENSE_FILES = COPYING ARTISTIC GPL + +define COLLECTL_INSTALL_TARGET_CMDS + (cd $(@D); \ + DESTDIR=$(TARGET_DIR) ./INSTALL) +endef + +$(eval $(generic-package)) diff --git a/package/comix-cursors/Config.in b/package/comix-cursors/Config.in new file mode 100644 index 00000000..ac7a089c --- /dev/null +++ b/package/comix-cursors/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_COMIX_CURSORS + bool "comix-cursors" + help + X11 mouse theme with a comics feeling. + + http://kde-look.org/content/show.php/ComixCursors?content=32627 diff --git a/package/comix-cursors/comix-cursors.hash b/package/comix-cursors/comix-cursors.hash new file mode 100644 index 00000000..b3975e1e --- /dev/null +++ b/package/comix-cursors/comix-cursors.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 7248f2da98fea475e590aa657d8581593516530d014a9ddbac8667d1b5f3a02b comixcursors-0.9.1.tar.bz2 diff --git a/package/comix-cursors/comix-cursors.mk b/package/comix-cursors/comix-cursors.mk new file mode 100644 index 00000000..3e063711 --- /dev/null +++ b/package/comix-cursors/comix-cursors.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# comix-cursors +# +################################################################################ + +COMIX_CURSORS_VERSION = 0.9.1 +COMIX_CURSORS_SITE = $(call gitlab,limitland,comixcursors,$(COMIX_CURSORS_VERSION)) +COMIX_CURSORS_SOURCE = comixcursors-$(COMIX_CURSORS_VERSION).tar.bz2 +COMIX_CURSORS_LICENSE = GPL-3.0 +COMIX_CURSORS_STRIP_COMPONENTS = 0 + +define COMIX_CURSORS_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/share/cursors/xorg-x11 + cp -a $(@D)/* \ + $(TARGET_DIR)/usr/share/cursors/xorg-x11 +endef + +$(eval $(generic-package)) diff --git a/package/composer/Config.in.host b/package/composer/Config.in.host new file mode 100644 index 00000000..ced73cea --- /dev/null +++ b/package/composer/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_COMPOSER + bool "host composer" + help + Composer is a tool for dependency management in PHP. It + allows you to declare the libraries your project depends on + and it will manage (install/update) them for you. + + https://getcomposer.org/ diff --git a/package/composer/composer.hash b/package/composer/composer.hash new file mode 100644 index 00000000..123d6de1 --- /dev/null +++ b/package/composer/composer.hash @@ -0,0 +1,4 @@ +# Hash from https://getcomposer.org/download/ +sha256 f07934fad44f9048c0dc875a506cca31cc2794d6aebfc1867f3b1fbf48dce2c5 composer-2.5.8.phar +# Locally calculated +sha256 c8cce4b6b9729f264ffdf9296d505d63432497feeed1f586d1902b942197e024 LICENSE diff --git a/package/composer/composer.mk b/package/composer/composer.mk new file mode 100644 index 00000000..5ade9ccc --- /dev/null +++ b/package/composer/composer.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# composer +# +################################################################################ + +COMPOSER_VERSION = 2.5.8 +COMPOSER_SOURCE = composer-$(COMPOSER_VERSION).phar +# Here, we pass a dummy URL parameter in order to control the name the file +# will have once downloaded. +# Otherwise, the names will clash ifever we update the version. +COMPOSER_BASE_SITE = https://getcomposer.org/download/$(COMPOSER_VERSION)/composer.phar +COMPOSER_SITE = $(COMPOSER_BASE_SITE)?n=f/$(COMPOSER_SOURCE) +COMPOSER_LICENSE = MIT +COMPOSER_LICENSE_FILES = LICENSE +COMPOSER_CPE_ID_VENDOR = getcomposer + +HOST_COMPOSER_DEPENDENCIES = host-php +HOST_COMPOSER_EXTRACT_DEPENDENCIES = host-php + +define HOST_COMPOSER_EXTRACT_CMDS + cp $(HOST_COMPOSER_DL_DIR)/$(COMPOSER_SOURCE) $(@D) + cd $(@D); $(HOST_DIR)/bin/php <<< 'extractTo(".", "LICENSE");' +endef + +define HOST_COMPOSER_INSTALL_CMDS + mv $(@D)/$(COMPOSER_SOURCE) $(HOST_DIR)/bin/composer + chmod +x $(HOST_DIR)/bin/composer +endef + +$(eval $(host-generic-package)) diff --git a/package/conmon/0001-src-seccomp_notify.c-fix-static-build.patch b/package/conmon/0001-src-seccomp_notify.c-fix-static-build.patch new file mode 100644 index 00000000..afffa909 --- /dev/null +++ b/package/conmon/0001-src-seccomp_notify.c-fix-static-build.patch @@ -0,0 +1,44 @@ +From 6cfcea9a16017f2a49cd792d39ebd9c86395946a Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 1 Nov 2023 16:45:21 +0100 +Subject: [PATCH] src/seccomp_notify.c: fix static build + +Fix the following static build failure raised even when seccomp is +disabled: + +src/seccomp_notify.c:10:10: fatal error: dlfcn.h: No such file or directory + 10 | #include + | ^~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/71b4f35b3150183c7b44bc3897f01b0019e10ebe + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/containers/conmon/issues/462 +--- + src/seccomp_notify.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/seccomp_notify.c b/src/seccomp_notify.c +index 8d34d9d..bf738ea 100644 +--- a/src/seccomp_notify.c ++++ b/src/seccomp_notify.c +@@ -7,7 +7,6 @@ + + #include + #include +-#include + #include + #include + #include +@@ -19,6 +18,7 @@ + + #ifdef USE_SECCOMP + ++#include + #include + #include + #include +-- +2.42.0 + diff --git a/package/conmon/Config.in b/package/conmon/Config.in new file mode 100644 index 00000000..9ba9c215 --- /dev/null +++ b/package/conmon/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_CONMON + bool "conmon" + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + depends on BR2_USE_WCHAR # libglib2 + select BR2_PACKAGE_LIBGLIB2 + help + Conmon is an OCI container runtime monitor. + + https://github.com/containers/conmon + +comment "conmon needs a toolchain w/ threads, wchar" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/package/conmon/conmon.hash b/package/conmon/conmon.hash new file mode 100644 index 00000000..f2e89b8a --- /dev/null +++ b/package/conmon/conmon.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 e72c090210a03ca3b43a0fad53f15bca90bbee65105c412468009cf3a5988325 conmon-2.1.8.tar.gz +sha256 9c9d771d4004725237a31ada889fe06c85a24fd0a29e41825181ab4cde54f016 LICENSE diff --git a/package/conmon/conmon.mk b/package/conmon/conmon.mk new file mode 100644 index 00000000..1e577866 --- /dev/null +++ b/package/conmon/conmon.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# conmon +# +################################################################################ + +CONMON_VERSION = 2.1.8 +CONMON_SITE = $(call github,containers,conmon,v$(CONMON_VERSION)) +CONMON_LICENSE = Apache-2.0 +CONMON_LICENSE_FILES = LICENSE + +CONMON_DEPENDENCIES = host-pkgconf libglib2 + +ifeq ($(BR2_PACKAGE_LIBSECCOMP)$(BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0):$(BR2_STATIC_LIBS),yy:) +CONMON_DISABLE_SECCOMP = 0 +CONMON_DEPENDENCIES += libseccomp +else +CONMON_DISABLE_SECCOMP = 1 +endif + +define CONMON_CONFIGURE_CMDS + printf '#!/bin/bash\necho "$(CONMON_DISABLE_SECCOMP)"\n' > \ + $(@D)/hack/seccomp-notify.sh + chmod +x $(@D)/hack/seccomp-notify.sh +endef + +define CONMON_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" \ + CFLAGS="$(TARGET_CFLAGS) -std=c99" \ + LDFLAGS="$(TARGET_LDFLAGS)" -C $(@D) bin/conmon +endef + +define CONMON_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/bin/conmon $(TARGET_DIR)/usr/bin/conmon +endef + +$(eval $(generic-package)) diff --git a/package/connman-gtk/Config.in b/package/connman-gtk/Config.in new file mode 100644 index 00000000..467bf7ec --- /dev/null +++ b/package/connman-gtk/Config.in @@ -0,0 +1,22 @@ +comment "connman-gtk needs libgtk3 and a glibc or uClibc toolchain w/ wchar, threads, resolver, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS || !BR2_PACKAGE_LIBGTK3 || \ + BR2_TOOLCHAIN_USES_MUSL + +config BR2_PACKAGE_CONNMAN_GTK + bool "connman-gtk" + depends on BR2_USE_WCHAR # libglib2, connman + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2, connman + depends on BR2_USE_MMU # libglib2 + depends on !BR2_STATIC_LIBS # connman + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # connman + depends on !BR2_TOOLCHAIN_USES_MUSL # connman + depends on BR2_PACKAGE_LIBGTK3 + select BR2_PACKAGE_CONNMAN + select BR2_PACKAGE_LIBGLIB2 + help + GTK GUI for ConnMan. + + https://github.com/jgke/connman-gtk diff --git a/package/connman-gtk/connman-gtk.hash b/package/connman-gtk/connman-gtk.hash new file mode 100644 index 00000000..72e2fcaa --- /dev/null +++ b/package/connman-gtk/connman-gtk.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 49bdc4769a7c508b0130e4705eef21aec9df1ea4f5c29fee48a0cae8db828fca connman-gtk-1.1.1.tar.bz2 +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/connman-gtk/connman-gtk.mk b/package/connman-gtk/connman-gtk.mk new file mode 100644 index 00000000..0ea49198 --- /dev/null +++ b/package/connman-gtk/connman-gtk.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# connman-gtk +# +################################################################################ + +CONNMAN_GTK_VERSION = 1.1.1 +CONNMAN_GTK_SITE = https://github.com/jgke/connman-gtk/releases/download/v$(CONNMAN_GTK_VERSION) +CONNMAN_GTK_SOURCE = connman-gtk-$(CONNMAN_GTK_VERSION).tar.bz2 +CONNMAN_GTK_INSTALL_STAGING = YES +CONNMAN_GTK_DEPENDENCIES = host-intltool connman libglib2 libgtk3 \ + $(TARGET_NLS_DEPENDENCIES) +CONNMAN_GTK_LICENSE = GPL-2.0+ +CONNMAN_GTK_LICENSE_FILES = COPYING +CONNMAN_GTK_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) + +$(eval $(autotools-package)) diff --git a/package/connman/Config.in b/package/connman/Config.in new file mode 100644 index 00000000..af3e1f69 --- /dev/null +++ b/package/connman/Config.in @@ -0,0 +1,115 @@ +config BR2_PACKAGE_CONNMAN + bool "connman" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2 + depends on BR2_USE_MMU # dbus, libglib2 + depends on !BR2_STATIC_LIBS # needs dlopen() + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_USES_MUSL # missing res_ninit() + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_LIBGLIB2 + help + The Connection Manager (ConnMan) project provides a daemon + for managing internet connections within embedded devices + running the Linux operating system. + + https://01.org/connman + +if BR2_PACKAGE_CONNMAN + +choice + prompt "Firewall type" + default BR2_PACKAGE_CONNMAN_IPTABLES + help + Select which firewall type is used. + +config BR2_PACKAGE_CONNMAN_IPTABLES + bool "iptables" + select BR2_PACKAGE_IPTABLES + help + Use iptables as firewall. + +config BR2_PACKAGE_CONNMAN_NFTABLES + bool "nftables" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + select BR2_PACKAGE_LIBMNL + select BR2_PACKAGE_NFTABLES + help + Use nftables as firewall. +endchoice + +config BR2_PACKAGE_CONNMAN_ETHERNET + bool "enable Ethernet support" + default y + +config BR2_PACKAGE_CONNMAN_WIFI + bool "enable WiFi support" + select BR2_PACKAGE_WPA_SUPPLICANT # runtime + select BR2_PACKAGE_WPA_SUPPLICANT_DBUS # runtime + help + Enable WiFi support (scan and static/dhcp interface + setup). ConnMan detects the start of wpa_supplicant + automatically. + +config BR2_PACKAGE_CONNMAN_WIREGUARD + bool "enable wireguard support" + select BR2_PACKAGE_LIBMNL + +config BR2_PACKAGE_CONNMAN_WISPR + bool "enable WISPr support" + depends on !BR2_STATIC_LIBS # gnutls + select BR2_PACKAGE_GNUTLS + help + Enable support for Wireless Internet Service Provider + roaming (WISPr). A RADIUS server is used to authenticate the + subscriber's credentials. + +comment "connman WISPr needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_CONNMAN_BLUETOOTH + bool "enable Bluetooth support" + help + Enable Bluetooth support. The start of bluetoothd is + automatically detected and only a runtime dependency. + +config BR2_PACKAGE_CONNMAN_LOOPBACK + bool "enable loopback support" + +config BR2_PACKAGE_CONNMAN_NEARD + bool "enable neard support" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # neard + select BR2_PACKAGE_NEARD + +config BR2_PACKAGE_CONNMAN_OFONO + bool "enable ofono support" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # ofono + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 # ofono + select BR2_PACKAGE_OFONO + +comment "ofono support needs a toolchain w/ headers >= 4.12" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 + +config BR2_PACKAGE_CONNMAN_DEBUG + bool "enable compiling with debugging information" + +config BR2_PACKAGE_CONNMAN_STATS + bool "enable statistics round robin file generation" + help + Enable generation of statistics in a round robin file. + + This is enabled by default upstream but is marked as + experimental. + +config BR2_PACKAGE_CONNMAN_CLIENT + bool "enable command line client" + select BR2_PACKAGE_READLINE + +endif # BR2_PACKAGE_CONNMAN + +comment "connman needs a glibc or uClibc toolchain w/ wchar, threads, resolver, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \ + || BR2_TOOLCHAIN_USES_MUSL diff --git a/package/connman/S45connman b/package/connman/S45connman new file mode 100644 index 00000000..c8e913d3 --- /dev/null +++ b/package/connman/S45connman @@ -0,0 +1,52 @@ +#!/bin/sh + +DAEMON="connmand" +PIDFILE="/var/run/$DAEMON.pid" + +CONNMAND_ARGS="-n" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -m -b -p "$PIDFILE" -x "/usr/sbin/$DAEMON" \ + -- $CONNMAND_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/connman/connman.hash b/package/connman/connman.hash new file mode 100644 index 00000000..ea87f1ea --- /dev/null +++ b/package/connman/connman.hash @@ -0,0 +1,4 @@ +# From https://www.kernel.org/pub/linux/network/connman/sha256sums.asc +sha256 a3e6bae46fc081ef2e9dae3caa4f7649de892c3de622c20283ac0ca81423c2aa connman-1.42.tar.xz +# Locally computed +sha256 b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259 COPYING diff --git a/package/connman/connman.mk b/package/connman/connman.mk new file mode 100644 index 00000000..142a6583 --- /dev/null +++ b/package/connman/connman.mk @@ -0,0 +1,123 @@ +################################################################################ +# +# connman +# +################################################################################ + +CONNMAN_VERSION = 1.42 +CONNMAN_SOURCE = connman-$(CONNMAN_VERSION).tar.xz +CONNMAN_SITE = $(BR2_KERNEL_MIRROR)/linux/network/connman +CONNMAN_DEPENDENCIES = libglib2 dbus +CONNMAN_INSTALL_STAGING = YES +CONNMAN_LICENSE = GPL-2.0 +CONNMAN_LICENSE_FILES = COPYING +CONNMAN_CPE_ID_VENDOR = intel + +CONNMAN_CONF_OPTS = --with-dbusconfdir=/etc + +ifeq ($(BR2_INIT_SYSTEMD),y) +CONNMAN_CONF_OPTS += --with-systemdunitdir=/usr/lib/systemd/system +endif + +ifeq ($(BR2_PACKAGE_CONNMAN_BLUETOOTH),y) +CONNMAN_CONF_OPTS += --enable-bluetooth +else +CONNMAN_CONF_OPTS += --disable-bluetooth +endif + +ifeq ($(BR2_PACKAGE_CONNMAN_DEBUG),y) +CONNMAN_CONF_OPTS += --enable-debug +else +CONNMAN_CONF_OPTS += --disable-debug +endif + +ifeq ($(BR2_PACKAGE_CONNMAN_ETHERNET),y) +CONNMAN_CONF_OPTS += --enable-ethernet +else +CONNMAN_CONF_OPTS += --disable-ethernet +endif + +ifeq ($(BR2_PACKAGE_CONNMAN_IPTABLES),y) +CONNMAN_CONF_OPTS += --with-firewall=iptables +CONNMAN_DEPENDENCIES += iptables +else ifeq ($(BR2_PACKAGE_CONNMAN_NFTABLES),y) +CONNMAN_CONF_OPTS += --with-firewall=nftables +CONNMAN_DEPENDENCIES += libmnl nftables +endif + +ifeq ($(BR2_PACKAGE_CONNMAN_LOOPBACK),y) +CONNMAN_CONF_OPTS += --enable-loopback +else +CONNMAN_CONF_OPTS += --disable-loopback +endif + +ifeq ($(BR2_PACKAGE_CONNMAN_NEARD),y) +CONNMAN_CONF_OPTS += --enable-neard +CONNMAN_DEPENDENCIES += neard +else +CONNMAN_CONF_OPTS += --disable-neard +endif + +ifeq ($(BR2_PACKAGE_CONNMAN_OFONO),y) +CONNMAN_CONF_OPTS += --enable-ofono +CONNMAN_DEPENDENCIES += ofono +else +CONNMAN_CONF_OPTS += --disable-ofono +endif + +ifeq ($(BR2_PACKAGE_CONNMAN_STATS),y) +CONNMAN_CONF_OPTS += --enable-stats +else +CONNMAN_CONF_OPTS += --disable-stats +endif + +ifeq ($(BR2_PACKAGE_CONNMAN_WIFI),y) +CONNMAN_CONF_OPTS += --enable-wifi +else +CONNMAN_CONF_OPTS += --disable-wifi +endif + +ifeq ($(BR2_PACKAGE_CONNMAN_WIREGUARD),y) +CONNMAN_CONF_OPTS += --enable-wireguard +CONNMAN_DEPENDENCIES += libmnl +else +CONNMAN_CONF_OPTS += --disable-wireguard +endif + +ifeq ($(BR2_PACKAGE_CONNMAN_WISPR),y) +CONNMAN_CONF_OPTS += --enable-wispr +CONNMAN_DEPENDENCIES += gnutls +else +CONNMAN_CONF_OPTS += --disable-wispr +endif + +ifeq ($(BR2_PACKAGE_IWD),y) +CONNMAN_CONF_OPTS += --enable-iwd +else +CONNMAN_CONF_OPTS += --disable-iwd +endif + +define CONNMAN_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/connman/S45connman $(TARGET_DIR)/etc/init.d/S45connman +endef + +ifeq ($(BR2_PACKAGE_CONNMAN_CLIENT),y) +CONNMAN_LICENSE += , GPL-2.0+ (client) +CONNMAN_CONF_OPTS += --enable-client +CONNMAN_DEPENDENCIES += readline + +define CONNMAN_INSTALL_CM + $(INSTALL) -m 0755 -D $(@D)/client/connmanctl $(TARGET_DIR)/usr/bin/connmanctl +endef + +CONNMAN_POST_INSTALL_TARGET_HOOKS += CONNMAN_INSTALL_CM +else +CONNMAN_CONF_OPTS += --disable-client +endif + +ifeq ($(BR2_PACKAGE_LIBEXECINFO),y) +CONNMAN_DEPENDENCIES += libexecinfo +CONNMAN_CONF_ENV += LDFLAGS="$(TARGET_LDFLAGS) -lexecinfo" +endif + +$(eval $(autotools-package)) diff --git a/package/conntrack-tools/Config.in b/package/conntrack-tools/Config.in new file mode 100644 index 00000000..87bf2d0c --- /dev/null +++ b/package/conntrack-tools/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_CONNTRACK_TOOLS + bool "conntrack-tools" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC || BR2_TOOLCHAIN_HAS_THREADS # libtirpc + depends on !BR2_STATIC_LIBS # dlopen() + select BR2_PACKAGE_LIBNETFILTER_CONNTRACK + select BR2_PACKAGE_LIBNETFILTER_CTHELPER + select BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT + select BR2_PACKAGE_LIBNETFILTER_QUEUE + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + help + The conntrack-tools are a set of tools targeted at + system administrators. + They are conntrack, the userspace command line interface, + and conntrackd, the userspace daemon. + + http://www.netfilter.org/projects/conntrack-tools/ + +comment "conntrack-tools needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !(BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_HAS_NATIVE_RPC) || \ + BR2_STATIC_LIBS diff --git a/package/conntrack-tools/conntrack-tools.hash b/package/conntrack-tools/conntrack-tools.hash new file mode 100644 index 00000000..371ede34 --- /dev/null +++ b/package/conntrack-tools/conntrack-tools.hash @@ -0,0 +1,4 @@ +# From https://netfilter.org/projects/conntrack-tools/downloads.html +sha256 099debcf57e81690ced57f516b493588a73518f48c14d656f823b29b4fc24b5d conntrack-tools-1.4.7.tar.bz2 +# Locally calculated +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING diff --git a/package/conntrack-tools/conntrack-tools.mk b/package/conntrack-tools/conntrack-tools.mk new file mode 100644 index 00000000..ec633f0d --- /dev/null +++ b/package/conntrack-tools/conntrack-tools.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# conntrack-tools +# +################################################################################ + +CONNTRACK_TOOLS_VERSION = 1.4.7 +CONNTRACK_TOOLS_SOURCE = conntrack-tools-$(CONNTRACK_TOOLS_VERSION).tar.bz2 +CONNTRACK_TOOLS_SITE = http://www.netfilter.org/projects/conntrack-tools/files +CONNTRACK_TOOLS_DEPENDENCIES = host-pkgconf \ + libnetfilter_conntrack libnetfilter_cthelper libnetfilter_cttimeout \ + libnetfilter_queue host-bison host-flex +CONNTRACK_TOOLS_LICENSE = GPL-2.0+ +CONNTRACK_TOOLS_LICENSE_FILES = COPYING +CONNTRACK_TOOLS_CPE_ID_VENDOR = netfilter + +CONNTRACK_TOOLS_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +CONNTRACK_TOOLS_CFLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc` +CONNTRACK_TOOLS_DEPENDENCIES += libtirpc host-pkgconf +endif + +CONNTRACK_TOOLS_CONF_ENV = CFLAGS="$(CONNTRACK_TOOLS_CFLAGS)" + +$(eval $(autotools-package)) diff --git a/package/containerd/Config.in b/package/containerd/Config.in new file mode 100644 index 00000000..f014c56e --- /dev/null +++ b/package/containerd/Config.in @@ -0,0 +1,70 @@ +config BR2_PACKAGE_CONTAINERD + bool "containerd" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_TOOLCHAIN_USES_UCLIBC # runc + depends on BR2_USE_MMU # util-linux + select BR2_PACKAGE_HOST_GO + select BR2_PACKAGE_RUNC if !BR2_PACKAGE_CRUN # runtime dependency + select BR2_PACKAGE_UTIL_LINUX # runtime dependency + select BR2_PACKAGE_UTIL_LINUX_BINARIES + select BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT + select BR2_PACKAGE_UTIL_LINUX_MOUNTPOINT + select BR2_PACKAGE_UTIL_LINUX_MOUNT + help + containerd is a daemon to control runC. + + https://containerd.io/ + +if BR2_PACKAGE_CONTAINERD + +config BR2_PACKAGE_CONTAINERD_DRIVER_BTRFS + bool "btrfs snapshot driver" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 + help + Build the btrfs snapshot driver for containerd. + +comment "brtfs snapshot driver needs headers >= 4.12" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 + +config BR2_PACKAGE_CONTAINERD_DRIVER_DEVMAPPER + bool "devmapper snapshot driver" + depends on BR2_TOOLCHAIN_HAS_THREADS # lvm2 + depends on BR2_USE_MMU # lvm2 + depends on !BR2_STATIC_LIBS # lvm2 + select BR2_PACKAGE_LVM2 + help + Build the devmapper snapshot driver for containerd. + +comment "devmapper snapshot driver needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_CONTAINERD_DRIVER_ZFS + bool "zfs snapshot driver" + depends on BR2_LINUX_KERNEL # zfs + depends on BR2_PACKAGE_HAS_UDEV # zfs + depends on BR2_USE_MMU # zfs + depends on BR2_TOOLCHAIN_HAS_THREADS # zfs + select BR2_PACKAGE_ZFS + help + Build the zfs snapshot driver for containerd. + +comment "zfs snapshot driver needs a Linux kernel, udev, toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_LINUX_KERNEL || !BR2_PACKAGE_HAS_UDEV || \ + !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_CONTAINERD_CRI + bool "Kubernetes CRI support" + help + Build containerd with Kubernetes CRI support. + +endif + +comment "containerd needs a glibc or musl toolchain w/ threads" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_UCLIBC diff --git a/package/containerd/containerd.hash b/package/containerd/containerd.hash new file mode 100644 index 00000000..02c19945 --- /dev/null +++ b/package/containerd/containerd.hash @@ -0,0 +1,3 @@ +# Computed locally +sha256 c4268561e514a2e8322bc8cdd39113d5e164fb31c2cef76f479d683395ea9bd6 containerd-1.7.20-go2.tar.gz +sha256 4bbe3b885e8cd1907ab4cf9a41e862e74e24b5422297a4f2fe524e6a30ada2b4 LICENSE diff --git a/package/containerd/containerd.mk b/package/containerd/containerd.mk new file mode 100644 index 00000000..afd03d7d --- /dev/null +++ b/package/containerd/containerd.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# containerd +# +################################################################################ + +CONTAINERD_VERSION = 1.7.20 +CONTAINERD_SITE = $(call github,containerd,containerd,v$(CONTAINERD_VERSION)) +CONTAINERD_LICENSE = Apache-2.0 +CONTAINERD_LICENSE_FILES = LICENSE +CONTAINERD_CPE_ID_VENDOR = linuxfoundation + +CONTAINERD_GOMOD = github.com/containerd/containerd + +CONTAINERD_LDFLAGS = \ + -X $(CONTAINERD_GOMOD)/version.Version=$(CONTAINERD_VERSION) + +CONTAINERD_BUILD_TARGETS = \ + cmd/containerd \ + cmd/containerd-shim \ + cmd/containerd-shim-runc-v1 \ + cmd/containerd-shim-runc-v2 \ + cmd/ctr + +CONTAINERD_INSTALL_BINS = $(notdir $(CONTAINERD_BUILD_TARGETS)) +CONTAINERD_TAGS = no_aufs + +ifeq ($(BR2_PACKAGE_LIBAPPARMOR),y) +CONTAINERD_DEPENDENCIES += libapparmor +CONTAINERD_TAGS += apparmor +endif + +ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) +CONTAINERD_DEPENDENCIES += libseccomp host-pkgconf +CONTAINERD_TAGS += seccomp +endif + +ifneq ($(BR2_PACKAGE_CONTAINERD_DRIVER_BTRFS),y) +CONTAINERD_TAGS += no_btrfs +endif + +ifneq ($(BR2_PACKAGE_CONTAINERD_DRIVER_DEVMAPPER),y) +CONTAINERD_TAGS += no_devmapper +endif + +ifneq ($(BR2_PACKAGE_CONTAINERD_DRIVER_ZFS),y) +CONTAINERD_TAGS += no_zfs +endif + +ifneq ($(BR2_PACKAGE_CONTAINERD_CRI),y) +CONTAINERD_TAGS += no_cri +endif + +define CONTAINERD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(@D)/containerd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/containerd.service + $(SED) 's,/usr/local/bin,/usr/bin,g' $(TARGET_DIR)/usr/lib/systemd/system/containerd.service +endef + +$(eval $(golang-package)) diff --git a/package/copas/0001-Do-not-load-coxpcall-for-LuaJIT.patch b/package/copas/0001-Do-not-load-coxpcall-for-LuaJIT.patch new file mode 100644 index 00000000..9a7f38c6 --- /dev/null +++ b/package/copas/0001-Do-not-load-coxpcall-for-LuaJIT.patch @@ -0,0 +1,49 @@ +From 8d1b5a9b973a9891d676dabf31807eb825d7f262 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fran=C3=A7ois=20Perrad?= +Date: Wed, 6 Sep 2017 00:00:56 +0200 +Subject: [PATCH] Do not load coxpcall for LuaJIT + +* coxpcall is only required with PUC Lua 5.1, but not with LuaJIT + +use the same logic as in copas.lua. +this fixes issue #63. + +Fetch from: https://github.com/keplerproject/copas/commit/8d1b5a9b973a9891d676dabf31807eb825d7f262 +Signed-off-by: Francois Perrad +--- + doc/us/index.html | 5 +++++ + src/copas/limit.lua | 2 +- + 2 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/copas-2_0_2/doc/us/index.html b/doc/us/index.html +index 1d008c2..c4d85ef 100644 +--- a/copas-2_0_2/doc/us/index.html ++++ b/copas-2_0_2/doc/us/index.html +@@ -114,6 +114,11 @@ LuaSocket, Coxpcall (only +

History

+ +
++
Copas [unreleased]
++
    ++
  • Fixed: coxpcall dependency in limit.lua #63 (Francois Perrad)
  • ++
++ +
Copas 2.0.2 [2017]
+
    +
  • Added: copas.running flag
  • +diff --git a/copas-2_0_2/src/copas/limit.lua b/src/copas/limit.lua +index ea178be..f0dfe17 100644 +--- a/copas-2_0_2/src/copas/limit.lua ++++ b/copas-2_0_2/src/copas/limit.lua +@@ -10,7 +10,7 @@ local pack = table.pack or function(...) return {n=select('#',...),...} end + local unpack = function(t) return (table.unpack or unpack)(t, 1, t.n or #t) end + + local pcall = pcall +-if _VERSION=="Lua 5.1" then -- obsolete: only for Lua 5.1 compatibility ++if _VERSION=="Lua 5.1" and not jit then -- obsolete: only for Lua 5.1 compatibility + pcall = require("coxpcall").pcall + end + +-- +2.17.1 + diff --git a/package/copas/Config.in b/package/copas/Config.in new file mode 100644 index 00000000..347d86dd --- /dev/null +++ b/package/copas/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_COPAS + bool "copas" + select BR2_PACKAGE_COXPCALL if BR2_PACKAGE_LUA_5_1 # runtime + select BR2_PACKAGE_LUASOCKET # runtime + help + Copas is a dispatcher based on coroutines that can be used + for asynchronous networking. For example TCP or UDP based + servers. But it also features timers and client support for + http(s), ftp and smtp requests. + + http://keplerproject.github.io/copas/ diff --git a/package/copas/copas.hash b/package/copas/copas.hash new file mode 100644 index 00000000..d53990d0 --- /dev/null +++ b/package/copas/copas.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 efeded4f4633bc71551175b239199304640ef918ae8ea9dc9c5047359ae07107 copas-2.0.2-1.src.rock +sha256 3f59cccf38e9397f6fb34dcff983a24d336df982edb5b0cde549d0c32c28c9c0 copas-2_0_2/LICENSE diff --git a/package/copas/copas.mk b/package/copas/copas.mk new file mode 100644 index 00000000..5b7ba999 --- /dev/null +++ b/package/copas/copas.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# copas +# +################################################################################ + +COPAS_VERSION = 2.0.2-1 +COPAS_SUBDIR = copas-2_0_2 +COPAS_LICENSE = MIT +COPAS_LICENSE_FILES = $(COPAS_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/package/coremark-pro/Config.in b/package/coremark-pro/Config.in new file mode 100644 index 00000000..dd682105 --- /dev/null +++ b/package/coremark-pro/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_COREMARK_PRO + bool "coremark-pro" + depends on BR2_USE_MMU # perl uses fork() + select BR2_PACKAGE_PERL + help + CoreMark-PRO is a comprehensive, advanced processor benchmark. + + https://www.eembc.org/coremark-pro/ diff --git a/package/coremark-pro/coremark-pro.hash b/package/coremark-pro/coremark-pro.hash new file mode 100644 index 00000000..c43fc555 --- /dev/null +++ b/package/coremark-pro/coremark-pro.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 440223554134832efec4ad220795611769ded3869fbc3ce3c59b05b7ddeb9f6d coremark-pro-1.1.2743.tar.gz +sha256 0d7775bd793ea71fef3594c18164a08ed2f5f66c898958d0644f7a236a536f2b LICENSE.md diff --git a/package/coremark-pro/coremark-pro.mk b/package/coremark-pro/coremark-pro.mk new file mode 100644 index 00000000..6a850885 --- /dev/null +++ b/package/coremark-pro/coremark-pro.mk @@ -0,0 +1,62 @@ +################################################################################ +# +# CoreMark-PRO +# +################################################################################ + +COREMARK_PRO_VERSION = 1.1.2743 +COREMARK_PRO_SITE = $(call github,eembc,coremark-pro,v$(COREMARK_PRO_VERSION)) +COREMARK_PRO_LICENSE = Apache-2.0 +COREMARK_PRO_LICENSE_FILES = LICENSE.md +COREMARK_PRO_DEPENDENCIES = perl + +COREMARK_PRO_LDFLAGS = $(TARGET_LDFLAGS) -lm + +ifeq ($(BR2_ENDIAN),"BIG") +COREMARK_PRO_DEFINES += \ + EE_BIG_ENDIAN=1 \ + EE_LITTLE_ENDIAN=0 +else +COREMARK_PRO_DEFINES += \ + EE_BIG_ENDIAN=0 \ + EE_LITTLE_ENDIAN=1 +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +COREMARK_PRO_DEFINES += \ + USE_NATIVE_PTHREAD=1 \ + USE_SINGLE_CONTEXT=0 +COREMARK_PRO_LDFLAGS += -lpthread +else +COREMARK_PRO_DEFINES += \ + USE_NATIVE_PTHREAD=0 \ + USE_SINGLE_CONTEXT=1 +endif + +COREMARK_PRO_MAKE_OPTS += \ + LINKER_LAST="$(COREMARK_PRO_LDFLAGS)" \ + PLATFORM_DEFINES="$(COREMARK_PRO_DEFINES)" \ + TARGET=linux$(if $(BR2_ARCH_IS_64),64) \ + EXE= + +define COREMARK_PRO_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) CC="$(TARGET_CC)" LD="$(TARGET_CC)" -C $(@D) \ + $(COREMARK_PRO_MAKE_OPTS) build +endef + +COREMARK_PRO_MARKS = cjpeg-rose7-preset core linear_alg-mid-100x100-sp loops-all-mid-10k-sp nnet_test parser-125k radix2-big-64k sha-test zip-test +COREMARK_PRO_SCRIPTS = results_parser.pl cert_median.pl cert_mark.pl headings.txt + +define COREMARK_PRO_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/share/coremark-pro/logs + $(foreach m,$(COREMARK_PRO_MARKS),\ + $(INSTALL) -D $(@D)/builds/linux$(if $(BR2_ARCH_IS_64),64)/gcc$(if $(BR2_ARCH_IS_64),64)/bin/$(m) $(TARGET_DIR)/usr/bin/$(m)$(sep) \ + size $(TARGET_DIR)/usr/bin/$(m) > $(TARGET_DIR)/usr/share/coremark-pro/logs/$(m).size.log$(sep)) + $(INSTALL) -D $(@D)/builds/linux$(if $(BR2_ARCH_IS_64),64)/gcc$(if $(BR2_ARCH_IS_64),64)/data/libbmp/Rose256.bmp $(TARGET_DIR)/usr/share/coremark-pro/Rose256.bmp + $(foreach s,$(COREMARK_PRO_SCRIPTS),\ + $(INSTALL) -D $(@D)/util/perl/$(s) $(TARGET_DIR)/usr/share/coremark-pro/util/perl/$(s)$(sep)) + $(Q)sed "s/@COREMARK_PRO_MARKS@/$(COREMARK_PRO_MARKS)/" \ + package/coremark-pro/coremark-pro.sh.in >$(TARGET_DIR)/usr/bin/coremark-pro.sh +endef + +$(eval $(generic-package)) diff --git a/package/coremark-pro/coremark-pro.sh.in b/package/coremark-pro/coremark-pro.sh.in new file mode 100755 index 00000000..8b370b7c --- /dev/null +++ b/package/coremark-pro/coremark-pro.sh.in @@ -0,0 +1,35 @@ +#!/bin/sh +# SPDX-License-Identifier: Apache-2.0 + +workloads="@COREMARK_PRO_MARKS@" + +rm -rf /tmp/coremark-pro +mkdir -p /tmp/coremark-pro +cp /usr/share/coremark-pro/Rose256.bmp /tmp/coremark-pro +cp /usr/share/coremark-pro/logs/*.size.log /tmp/coremark-pro + +cd /tmp/coremark-pro + +for contype in single best; do + cat /usr/share/coremark-pro/util/perl/headings.txt >>result.log + for wld in $workloads; do + [ "$contype" = "single" ] && XCMD="-c1 -w1" + [ "$contype" = "best" ] && XCMD="-c$(nproc) -w$(nproc)" + echo "#Results for verification run started at $(date +%x:%X) XCMD=$XCMD" >$wld-$contype-result.log + echo "Verification run for $wld" + $wld $XCMD -v1 > $wld.run.log + LC_ALL=C perl /usr/share/coremark-pro/util/perl/results_parser.pl $wld-$contype-result.log $wld.run.log + echo "#Results for performance runs started at $(date +%x:%X) XCMD=$XCMD" >>$wld-$contype-result.log + echo "Performance run for $wld" + for i in 1 2 3; do + $wld $XCMD -v0 > $wld.run.log + LC_ALL=C perl /usr/share/coremark-pro/util/perl/results_parser.pl $wld-$contype-result.log $wld.run.log + done + echo "#Median for final result $wld" >>$wld-$contype-result.log + LC_ALL=C perl /usr/share/coremark-pro/util/perl/cert_median.pl $wld-$contype-result.log $contype >>$wld-$contype-result.log + cat $wld-$contype-result.log >>result.log + done +done +LC_ALL=C perl /usr/share/coremark-pro/util/perl/cert_mark.pl -i result.log -s coremarkpro > result.mark +cat result.mark +cd - >/dev/null diff --git a/package/coremark/Config.in b/package/coremark/Config.in new file mode 100644 index 00000000..f0e13eda --- /dev/null +++ b/package/coremark/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_COREMARK + bool "coremark" + help + CoreMark is a benchmark that measures the performance of + microcontrollers (MCUs) and central processing units (CPUs) + used in embedded systems + + https://www.eembc.org/coremark/ diff --git a/package/coremark/coremark.hash b/package/coremark/coremark.hash new file mode 100644 index 00000000..950e736b --- /dev/null +++ b/package/coremark/coremark.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 99c5a6d63af85a281b4e4d6ccb522c446653c435dfec9455ad73ef9e71f28bde coremark-1.01.tar.gz +sha256 d72094a3cb629dc7712ae09b7b777416903c6670930928b5530f2ddfb2296888 LICENSE.md diff --git a/package/coremark/coremark.mk b/package/coremark/coremark.mk new file mode 100644 index 00000000..9ea8693e --- /dev/null +++ b/package/coremark/coremark.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# CoreMark +# +################################################################################ + +COREMARK_VERSION = 1.01 +COREMARK_SITE = $(call github,eembc,coremark,v$(COREMARK_VERSION)) +COREMARK_LICENSE = Apache-2.0 +COREMARK_LICENSE_FILES = LICENSE.md + +define COREMARK_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" -C $(@D) \ + PORT_CFLAGS="$(TARGET_CFLAGS)" \ + PORT_DIR=linux$(if $(BR2_ARCH_IS_64),64) EXE= link +endef + +define COREMARK_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/coremark $(TARGET_DIR)/usr/bin/coremark +endef + +$(eval $(generic-package)) diff --git a/package/coreutils/Config.in b/package/coreutils/Config.in new file mode 100644 index 00000000..705013ba --- /dev/null +++ b/package/coreutils/Config.in @@ -0,0 +1,39 @@ +config BR2_PACKAGE_COREUTILS + bool "coreutils" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + All of the basic file/text/shell utilities. These are the + core utilities which are expected to exist on every system. + BusyBox implements many of the most common. + + Things like: + - chmod, cp, dd, dir, ls, etc... + - sort, tr, head, tail, wc, etc... + - whoami, who, etc... + + http://www.gnu.org/software/coreutils/ + +if BR2_PACKAGE_COREUTILS + +config BR2_PACKAGE_COREUTILS_INDIVIDUAL_BINARIES + bool "Individual binaries" + depends on !BR2_STATIC_LIBS + help + By default (i.e. with this option disabled), coreutils is + installed as a single binary (Busybox style) called + /usr/bin/coreutils, and all core utilities are symbolic + links to this binary. + + With this option enabled, each utility is a separate binary. + +comment "coreutils individual binaries need a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +endif + +comment "coreutils needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/package/coreutils/coreutils.hash b/package/coreutils/coreutils.hash new file mode 100644 index 00000000..7df1048a --- /dev/null +++ b/package/coreutils/coreutils.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 adbcfcfe899235b71e8768dcf07cd532520b7f54f9a8064843f8d199a904bbaa coreutils-9.3.tar.xz +# Locally computed +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 COPYING diff --git a/package/coreutils/coreutils.mk b/package/coreutils/coreutils.mk new file mode 100644 index 00000000..89f49431 --- /dev/null +++ b/package/coreutils/coreutils.mk @@ -0,0 +1,157 @@ +################################################################################ +# +# coreutils +# +################################################################################ + +COREUTILS_VERSION = 9.3 +COREUTILS_SITE = $(BR2_GNU_MIRROR)/coreutils +COREUTILS_SOURCE = coreutils-$(COREUTILS_VERSION).tar.xz +COREUTILS_LICENSE = GPL-3.0+ +COREUTILS_LICENSE_FILES = COPYING +COREUTILS_CPE_ID_VENDOR = gnu + +COREUTILS_CONF_OPTS = --disable-rpath \ + $(if $(BR2_TOOLCHAIN_USES_MUSL),--with-included-regex) + +ifeq ($(BR2_PACKAGE_COREUTILS_INDIVIDUAL_BINARIES),y) +COREUTILS_CONF_OPTS += --disable-single-binary +else +COREUTILS_CONF_OPTS += --enable-single-binary=symlinks +endif + +COREUTILS_CONF_ENV = ac_cv_c_restrict=no \ + ac_cv_func_chown_works=yes \ + ac_cv_func_fstatat=yes \ + ac_cv_func_getdelim=yes \ + ac_cv_func_getgroups=yes \ + ac_cv_func_getgroups_works=yes \ + ac_cv_func_getloadavg=no \ + ac_cv_func_strnlen_working=yes \ + ac_cv_have_decl_strerror_r=yes \ + ac_cv_have_decl_strnlen=yes \ + ac_cv_lib_getloadavg_getloadavg=no \ + ac_cv_lib_util_getloadavg=no \ + ac_fsusage_space=yes \ + ac_use_included_regex=no \ + am_cv_func_working_getline=yes \ + fu_cv_sys_stat_statfs2_bsize=yes \ + gl_cv_func_getcwd_null=yes \ + gl_cv_func_getcwd_path_max=yes \ + gl_cv_func_link_follows_symlink=no \ + gl_cv_func_lstat_dereferences_slashed_symlink=yes \ + gl_cv_func_re_compile_pattern_working=yes \ + gl_cv_func_svid_putenv=yes \ + gl_cv_func_working_mkstemp=yes \ + gl_cv_func_working_utimes=yes \ + gl_cv_macro_MB_CUR_MAX_good=yes \ + gl_cv_have_proc_uptime=yes \ + utils_cv_localtime_cache=no \ + PERL=missing \ + MAKEINFO=true \ + INSTALL_PROGRAM=$(INSTALL) + +COREUTILS_BIN_PROGS = base64 cat chgrp chmod chown cp date dd df dir echo false \ + kill link ln ls mkdir mknod mktemp mv nice printenv pwd rm rmdir \ + vdir sleep stty sync touch true uname join + +ifeq ($(BR2_PACKAGE_ACL),y) +COREUTILS_DEPENDENCIES += acl +else +COREUTILS_CONF_OPTS += --disable-acl +endif + +ifeq ($(BR2_PACKAGE_ATTR),y) +COREUTILS_DEPENDENCIES += attr +else +COREUTILS_CONF_OPTS += --disable-xattr +endif + +COREUTILS_DEPENDENCIES += $(TARGET_NLS_DEPENDENCIES) + +# It otherwise fails to link properly, not mandatory though +ifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y) +COREUTILS_CONF_OPTS += --with-libintl-prefix=$(STAGING_DIR)/usr +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +COREUTILS_DEPENDENCIES += libcap +else +COREUTILS_CONF_OPTS += --disable-libcap +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +COREUTILS_DEPENDENCIES += libselinux +COREUTILS_CONF_OPTS += --with-selinux +else +COREUTILS_CONF_OPTS += --without-selinux +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +COREUTILS_CONF_OPTS += --with-openssl=yes +COREUTILS_DEPENDENCIES += openssl +endif + +ifeq ($(BR2_ROOTFS_MERGED_USR),) +# We want to move a few binaries from /usr/bin to /bin. In the case of +# coreutils being built as multi-call binary, we do so by re-creating +# the corresponding symlinks. If coreutils is built with individual +# binaries, we actually move the binaries. +ifeq ($(BR2_PACKAGE_COREUTILS_INDIVIDUAL_BINARIES),y) +define COREUTILS_FIX_BIN_LOCATION + $(foreach f,$(COREUTILS_BIN_PROGS), \ + mv $(TARGET_DIR)/usr/bin/$(f) $(TARGET_DIR)/bin + ) +endef +else +define COREUTILS_FIX_BIN_LOCATION + # some things go in /bin rather than /usr/bin + $(foreach f,$(COREUTILS_BIN_PROGS), \ + rm -f $(TARGET_DIR)/usr/bin/$(f) && \ + ln -sf ../usr/bin/coreutils $(TARGET_DIR)/bin/$(f) + ) +endef +endif +COREUTILS_POST_INSTALL_TARGET_HOOKS += COREUTILS_FIX_BIN_LOCATION +endif + +ifeq ($(BR2_STATIC_LIBS),y) +COREUTILS_CONF_OPTS += --enable-no-install-program=stdbuf +endif + +# link for archaic shells +define COREUTILS_CREATE_TEST_SYMLINK + ln -fs test $(TARGET_DIR)/usr/bin/[ +endef +COREUTILS_POST_INSTALL_TARGET_HOOKS += COREUTILS_CREATE_TEST_SYMLINK + +# gnu thinks chroot is in bin, debian thinks it's in sbin +ifeq ($(BR2_PACKAGE_COREUTILS_INDIVIDUAL_BINARIES),y) +define COREUTILS_FIX_CHROOT_LOCATION + mv $(TARGET_DIR)/usr/bin/chroot $(TARGET_DIR)/usr/sbin +endef +else +define COREUTILS_FIX_CHROOT_LOCATION + rm -f $(TARGET_DIR)/usr/bin/chroot + ln -sf ../bin/coreutils $(TARGET_DIR)/usr/sbin/chroot +endef +endif +COREUTILS_POST_INSTALL_TARGET_HOOKS += COREUTILS_FIX_CHROOT_LOCATION + +# Explicitly install ln and realpath, which we *are* insterested in. +# A lot of other programs still get installed, however, but disabling +# them does not gain much at build time, and is a loooong list that is +# difficult to maintain... Just avoid overwriting fakedate when creating +# a reproducible build +HOST_COREUTILS_CONF_OPTS = \ + --disable-acl \ + --disable-libcap \ + --disable-rpath \ + --disable-single-binary \ + --disable-xattr \ + --without-gmp \ + --enable-install-program=ln,realpath \ + --enable-no-install-program=date + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/corkscrew/Config.in b/package/corkscrew/Config.in new file mode 100644 index 00000000..1266f86e --- /dev/null +++ b/package/corkscrew/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_CORKSCREW + bool "corkscrew" + help + Corkscrew is a tool for tunneling SSH through HTTP proxies, + but... you might find another use for it. + + https://github.com/bryanpkc/corkscrew diff --git a/package/corkscrew/corkscrew.hash b/package/corkscrew/corkscrew.hash new file mode 100644 index 00000000..4006c6ab --- /dev/null +++ b/package/corkscrew/corkscrew.hash @@ -0,0 +1,3 @@ +# sha256 locally computed +sha256 09d70daaa3145070a1e463dbab6ae1cbc62449b1e09c94e158f6017e7c79c9f6 corkscrew-2.0.tar.gz +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING diff --git a/package/corkscrew/corkscrew.mk b/package/corkscrew/corkscrew.mk new file mode 100644 index 00000000..de696bad --- /dev/null +++ b/package/corkscrew/corkscrew.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# corkscrew +# +################################################################################ + +CORKSCREW_VERSION = 2.0 +CORKSCREW_SITE = $(call github,bryanpkc,corkscrew,v$(CORKSCREW_VERSION)) +CORKSCREW_LICENSE = GPL-2.0 +CORKSCREW_LICENSE_FILES = COPYING +CORKSCREW_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/coxpcall/Config.in b/package/coxpcall/Config.in new file mode 100644 index 00000000..37350179 --- /dev/null +++ b/package/coxpcall/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_COXPCALL + bool "coxpcall" + help + Coxpcall encapsulates the protected calls with a coroutine + based loop, so errors can be handled without the usual + pcall/xpcall issues with coroutines for Lua 5.1. + + http://keplerproject.github.io/coxpcall/ diff --git a/package/coxpcall/coxpcall.hash b/package/coxpcall/coxpcall.hash new file mode 100644 index 00000000..807596a4 --- /dev/null +++ b/package/coxpcall/coxpcall.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 11feb07f08927c39b0b93e8c0bbaf15433f86155cba4820a31a09f4754ab3258 coxpcall-1.17.0-1.src.rock +sha256 11f0f03dda1a28eca658d5e3361c15fd4d048371364aacc5f6870d77a66866c8 coxpcall/doc/license.html diff --git a/package/coxpcall/coxpcall.mk b/package/coxpcall/coxpcall.mk new file mode 100644 index 00000000..6633b925 --- /dev/null +++ b/package/coxpcall/coxpcall.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# coxpcall +# +################################################################################ + +COXPCALL_VERSION = 1.17.0-1 +COXPCALL_SUBDIR = coxpcall +COXPCALL_LICENSE = MIT +COXPCALL_LICENSE_FILES = $(COXPCALL_SUBDIR)/doc/license.html + +$(eval $(luarocks-package)) diff --git a/package/cpio/Config.in b/package/cpio/Config.in new file mode 100644 index 00000000..3ef0402c --- /dev/null +++ b/package/cpio/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_CPIO + bool "cpio" + depends on BR2_USE_WCHAR + # Need argp.h support + select BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL + help + cpio archive utility for creation and extraction. + + https://www.gnu.org/software/cpio/ + +comment "cpio needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/package/cpio/cpio.hash b/package/cpio/cpio.hash new file mode 100644 index 00000000..e300a5f0 --- /dev/null +++ b/package/cpio/cpio.hash @@ -0,0 +1,6 @@ +# From https://lists.gnu.org/archive/html/info-gnu/2024-01/msg00006.html +sha1 db5e3845eb5475ddcb7e8915c3a1458a0c13d787 cpio-2.15.tar.bz2 +# Locally calculated after checking pgp signature +sha256 937610b97c329a1ec9268553fb780037bcfff0dcffe9725ebc4fd9c1aa9075db cpio-2.15.tar.bz2 +# Locally calculated +sha256 fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7 COPYING diff --git a/package/cpio/cpio.mk b/package/cpio/cpio.mk new file mode 100644 index 00000000..452271c8 --- /dev/null +++ b/package/cpio/cpio.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# cpio +# +################################################################################ + +CPIO_VERSION = 2.15 +CPIO_SOURCE = cpio-$(CPIO_VERSION).tar.bz2 +CPIO_SITE = $(BR2_GNU_MIRROR)/cpio +CPIO_CONF_OPTS = --bindir=/bin +CPIO_LICENSE = GPL-3.0+ +CPIO_LICENSE_FILES = COPYING +CPIO_CPE_ID_VENDOR = gnu + +# cpio uses argp.h which is not provided by uclibc or musl by default. +# Use the argp-standalone package to provide this. +ifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y) +CPIO_DEPENDENCIES += argp-standalone +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/cppcms/Config.in b/package/cppcms/Config.in new file mode 100644 index 00000000..6c0bff93 --- /dev/null +++ b/package/cppcms/Config.in @@ -0,0 +1,43 @@ +config BR2_PACKAGE_CPPCMS + bool "cppcms" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on !BR2_STATIC_LIBS # dlopen() + depends on BR2_USE_WCHAR + select BR2_PACKAGE_PCRE + help + CppCMS is a Free High Performance Web Development Framework + (not a CMS) aimed for Rapid Web Application Development. It + differs from most of other web development frameworks like: + Python Django or Java Servlets on the following aspects: + + - It is designed and tuned to handle extremely high loads. + - It uses modern C++ as primary development language in + order to achieve the above goal. + - It is aimed on development of both Web Sites and Web + Services. + + http://cppcms.com + +if BR2_PACKAGE_CPPCMS + +config BR2_PACKAGE_CPPCMS_ICU + bool "enable icu support" + depends on !BR2_BINFMT_FLAT # icu + depends on BR2_HOST_GCC_AT_LEAST_4_9 # icu + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # icu + select BR2_PACKAGE_ICU + help + Using ICU allows advanced localization features into CppCMS, + in another hand ICU is heavier than iconv. + +comment "icu support needs a toolchain w/ gcc >= 4.9, host gcc >= 4.9" + depends on !BR2_BINFMT_FLAT + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_HOST_GCC_AT_LEAST_4_9 + +endif + +comment "cppcms needs a toolchain w/ C++, NPTL, wchar, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + !BR2_USE_WCHAR || BR2_STATIC_LIBS diff --git a/package/cppcms/cppcms.hash b/package/cppcms/cppcms.hash new file mode 100644 index 00000000..a8d04ff3 --- /dev/null +++ b/package/cppcms/cppcms.hash @@ -0,0 +1,8 @@ +# From http://sourceforge.net/projects/cppcms/files/cppcms/2.0.0-beta2/ +sha1 746cc5e3f58565d91d9ded6e2616399d60e9d01d cppcms-2.0.0.beta2.tar.bz2 +md5 ef561d13ee92d2053151cab073feba10 cppcms-2.0.0.beta2.tar.bz2 +# Locally computed: +sha256 697031c7d141fdd215c6be5090b66e2106a63bb3e52f09ee8120e8efc6c08a21 cppcms-2.0.0.beta2.tar.bz2 +sha256 fb7c15ddf590037d4cd18ebd61148a2304b9243369d238a64f599182377e32db COPYING.TXT +sha256 3e4012cc5950e05bedfdd2f00ceffe1ef71c46ac8c79f07e237ecb23c773f65f MIT.TXT +sha256 d6ce062e5cf4f7e3c536d7d2fee84c882c45245f1848ed3162401f2b29fa2b4b THIRD_PARTY_SOFTWARE.TXT diff --git a/package/cppcms/cppcms.mk b/package/cppcms/cppcms.mk new file mode 100644 index 00000000..8a59990a --- /dev/null +++ b/package/cppcms/cppcms.mk @@ -0,0 +1,65 @@ +################################################################################ +# +# cppcms +# +################################################################################ + +CPPCMS_VERSION = 2.0.0-beta2 +CPPCMS_SOURCE = cppcms-$(subst -,.,$(CPPCMS_VERSION)).tar.bz2 +CPPCMS_LICENSE = MIT, BSL-1.0 (boost), Public Domain (json2.js), Zlib (md5) +CPPCMS_LICENSE_FILES = COPYING.TXT MIT.TXT THIRD_PARTY_SOFTWARE.TXT +CPPCMS_SITE = http://downloads.sourceforge.net/project/cppcms/cppcms/$(CPPCMS_VERSION) +CPPCMS_INSTALL_STAGING = YES +CPPCMS_CXXFLAGS = $(TARGET_CXXFLAGS) + +# disable rpath to avoid getting /usr/lib added to the link search +# path +CPPCMS_CONF_OPTS = \ + -DCMAKE_SKIP_RPATH=ON \ + -DCMAKE_CXX_FLAGS="$(CPPCMS_CXXFLAGS)" + +CPPCMS_DEPENDENCIES = host-python3 pcre + +ifeq ($(BR2_PACKAGE_CPPCMS_ICU),y) +CPPCMS_CONF_OPTS += -DDISABLE_ICU_LOCALE=OFF +CPPCMS_DEPENDENCIES += icu +CPPCMS_CXXFLAGS += "`$(STAGING_DIR)/usr/bin/icu-config --cxxflags`" +else +CPPCMS_CONF_OPTS += -DDISABLE_ICU_LOCALE=ON +endif + +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +CPPCMS_CONF_OPTS += -DDISABLE_GCRYPT=OFF +CPPCMS_DEPENDENCIES += libgcrypt +else +CPPCMS_CONF_OPTS += -DDISABLE_GCRYPT=ON +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +CPPCMS_CONF_OPTS += -DDISABLE_OPENSSL=OFF +CPPCMS_DEPENDENCIES += openssl +else +CPPCMS_CONF_OPTS += -DDISABLE_OPENSSL=ON +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +CPPCMS_CONF_OPTS += -DDISABLE_GZIP=OFF +CPPCMS_DEPENDENCIES += zlib +else +CPPCMS_CONF_OPTS += -DDISABLE_GZIP=ON +endif + +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +# posix backend needs monetary.h which isn't available on uClibc +CPPCMS_CONF_OPTS += -DDISABLE_POSIX_LOCALE=on +endif + +# We copy cppcms_tmpl_cc from staging to host because this file can be +# needed for compiling packages using cppcms. And it is not worth +# creating a host package just for a python script. +define CPPCMS_INSTALL_HOST_TOOLS + cp $(STAGING_DIR)/usr/bin/cppcms_tmpl_cc $(HOST_DIR)/bin/cppcms_tmpl_cc +endef +CPPCMS_POST_INSTALL_STAGING_HOOKS += CPPCMS_INSTALL_HOST_TOOLS + +$(eval $(cmake-package)) diff --git a/package/cppdb/0001-mysql-library-suffix.patch b/package/cppdb/0001-mysql-library-suffix.patch new file mode 100644 index 00000000..e65e3e26 --- /dev/null +++ b/package/cppdb/0001-mysql-library-suffix.patch @@ -0,0 +1,23 @@ +Add mysql/ to PATH_SUFFIXES for the library search for mysql. + +On common distros libmysqlclient* is installed and/or symlinked +into /usr/lib. +Since we install the libraries into /usr/lib/mysql alone cppdb +fails to properly link to it giving runtime errors. + +Status: https://sourceforge.net/p/cppcms/bugs/135/ + +Signed-off-by: Gustavo Zacarias + +diff -Nura cppdb-0.3.1.orig/CMakeLists.txt cppdb-0.3.1/CMakeLists.txt +--- cppdb-0.3.1.orig/CMakeLists.txt 2014-10-17 11:05:57.875429748 -0300 ++++ cppdb-0.3.1/CMakeLists.txt 2014-10-17 11:12:57.486775484 -0300 +@@ -196,7 +196,7 @@ + endif() + + if(NOT DISABLE_MYSQL) +- find_library(MYSQL_LIB mysqlclient) ++ find_library(MYSQL_LIB mysqlclient PATH_SUFFIXES mysql) + find_path(MYSQL_PATH mysql.h PATH_SUFFIXES mysql) + if(MYSQL_LIB AND MYSQL_PATH) + include_directories(${MYSQL_PATH}) diff --git a/package/cppdb/Config.in b/package/cppdb/Config.in new file mode 100644 index 00000000..1394c1ef --- /dev/null +++ b/package/cppdb/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_CPPDB + bool "cppdb" + # dlfcn.h + depends on !BR2_STATIC_LIBS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + # Can be built without them but it's useless + depends on BR2_PACKAGE_MARIADB || BR2_PACKAGE_POSTGRESQL || BR2_PACKAGE_SQLITE + help + CppDB is an SQL connectivity library that is designed to + provide platform and Database independent connectivity API + similarly to what JDBC, ODBC and other connectivity libraries + do. + + http://cppcms.com/sql/cppdb/ + +comment "cppdb needs a toolchain w/ C++, threads, dynamic library" + depends on BR2_PACKAGE_MARIADB || BR2_PACKAGE_POSTGRESQL || BR2_PACKAGE_SQLITE + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/package/cppdb/cppdb.hash b/package/cppdb/cppdb.hash new file mode 100644 index 00000000..bca9f559 --- /dev/null +++ b/package/cppdb/cppdb.hash @@ -0,0 +1,6 @@ +# From http://sourceforge.net/projects/cppcms/files/cppdb/0.3.1/ +md5 129f1d75f46114b79160b93807d5223f cppdb-0.3.1.tar.bz2 +sha1 c0410dcc482d71696ac9206044b3a3ac03d31f96 cppdb-0.3.1.tar.bz2 +# locally computed +sha256 c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566 LICENSE_1_0.txt +sha256 503ed52ef942d44bb26bd47dd5c6765927b198624e4f375e32cc660dfc2a0981 MIT.txt diff --git a/package/cppdb/cppdb.mk b/package/cppdb/cppdb.mk new file mode 100644 index 00000000..d2a901d2 --- /dev/null +++ b/package/cppdb/cppdb.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# cppdb +# +################################################################################ + +CPPDB_VERSION = 0.3.1 +CPPDB_SOURCE = cppdb-$(CPPDB_VERSION).tar.bz2 +CPPDB_SITE = http://downloads.sourceforge.net/project/cppcms/cppdb/$(CPPDB_VERSION) +CPPDB_INSTALL_STAGING = YES +CPPDB_DEPENDENCIES = $(if $(BR2_PACKAGE_SQLITE),sqlite) +CPPDB_LICENSE = BSL-1.0 or MIT +CPPDB_LICENSE_FILES = LICENSE_1_0.txt MIT.txt + +ifeq ($(BR2_PACKAGE_MARIADB),y) +CPPDB_DEPENDENCIES += mariadb +else +CPPDB_CONF_OPTS += -DDISABLE_MYSQL=ON +endif + +ifeq ($(BR2_PACKAGE_POSTGRESQL),y) +CPPDB_DEPENDENCIES += postgresql +else +CPPDB_CONF_OPTS += -DDISABLE_PQ=ON +endif + +ifeq ($(BR2_PACKAGE_SQLITE),) +CPPDB_CONF_OPTS += -DDISABLE_SQLITE=ON +endif + +$(eval $(cmake-package)) diff --git a/package/cppunit/Config.in b/package/cppunit/Config.in new file mode 100644 index 00000000..efcdcf01 --- /dev/null +++ b/package/cppunit/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_CPPUNIT + bool "cppunit" + depends on BR2_INSTALL_LIBSTDCPP + # currently the static situation is not correctly detected. + depends on !BR2_STATIC_LIBS + help + CppUnit is the C++ port of the famous JUnit framework for + unit testing. Test output is in XML or text format for + automatic testing and GUI based for supervised tests. + + http://www.freedesktop.org/wiki/Software/cppunit/ + +comment "cppunit needs a toolchain w/ C++, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS diff --git a/package/cppunit/cppunit.hash b/package/cppunit/cppunit.hash new file mode 100644 index 00000000..50e33135 --- /dev/null +++ b/package/cppunit/cppunit.hash @@ -0,0 +1,6 @@ +# hash from: http://www.freedesktop.org/wiki/Software/cppunit/: +md5 9dc669e6145cadd9674873e24943e6dd cppunit-1.15.1.tar.gz +sha256 89c5c6665337f56fd2db36bc3805a5619709d51fb136e51937072f63fcc717a7 cppunit-1.15.1.tar.gz + +# Locally calculated: +sha256 badf14d0aa3eaf1a7ae5f19a47a8ef2fc71a96802c4bc3d354535693c389f4e5 COPYING diff --git a/package/cppunit/cppunit.mk b/package/cppunit/cppunit.mk new file mode 100644 index 00000000..3fe12b33 --- /dev/null +++ b/package/cppunit/cppunit.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# cppunit +# +################################################################################ + +CPPUNIT_VERSION = 1.15.1 +CPPUNIT_SITE = http://dev-www.libreoffice.org/src +CPPUNIT_INSTALL_STAGING = YES +CPPUNIT_LICENSE = LGPL-2.1 +CPPUNIT_LICENSE_FILES = COPYING +CPPUNIT_CONF_OPTS = --disable-doxygen + +$(eval $(autotools-package)) diff --git a/package/cppzmq/Config.in b/package/cppzmq/Config.in new file mode 100644 index 00000000..c984c15c --- /dev/null +++ b/package/cppzmq/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_CPPZMQ + bool "cppzmq" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq + select BR2_PACKAGE_ZEROMQ + help + C++ binding for zeromq (ZeroMQ, 0MQ, zmq). + + http://github.com/zeromq/cppzmq + +comment "cppzmq needs a toolchain w/ C++, threads" + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) diff --git a/package/cppzmq/cppzmq.hash b/package/cppzmq/cppzmq.hash new file mode 100644 index 00000000..dd6e0649 --- /dev/null +++ b/package/cppzmq/cppzmq.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c81c81bba8a7644c84932225f018b5088743a22999c6d82a2b5f5cd1e6942b74 cppzmq-4.10.0.tar.gz +sha256 7e6db90e2e805c72b3daa77849d1cb5f1f92da0e69750c8a4aa1d86d70704748 LICENSE diff --git a/package/cppzmq/cppzmq.mk b/package/cppzmq/cppzmq.mk new file mode 100644 index 00000000..90213ec0 --- /dev/null +++ b/package/cppzmq/cppzmq.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# cppzmq +# +################################################################################ + +CPPZMQ_VERSION = 4.10.0 +CPPZMQ_SITE = $(call github,zeromq,cppzmq,v$(CPPZMQ_VERSION)) +CPPZMQ_INSTALL_STAGING = YES +CPPZMQ_DEPENDENCIES = host-pkgconf zeromq +CPPZMQ_LICENSE = MIT +CPPZMQ_LICENSE_FILES = LICENSE +CPPZMQ_CONF_OPTS = -DCPPZMQ_BUILD_TESTS=OFF + +$(eval $(cmake-package)) diff --git a/package/cpuburn-arm/Config.in b/package/cpuburn-arm/Config.in new file mode 100644 index 00000000..14190479 --- /dev/null +++ b/package/cpuburn-arm/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_CPUBURN_ARM_ARCH_SUPPORTS + bool + default y if BR2_cortex_a7 + default y if BR2_cortex_a8 + default y if BR2_cortex_a9 + default y if BR2_cortex_a53 + +config BR2_PACKAGE_CPUBURN_ARM + bool "cpuburn-arm" + depends on BR2_PACKAGE_CPUBURN_ARM_ARCH_SUPPORTS + help + Make ARM cores generate as much heat as possible. Supports + Cortex A7/A8/A9/A53. + + https://github.com/ssvb/cpuburn-arm diff --git a/package/cpuburn-arm/cpuburn-arm.hash b/package/cpuburn-arm/cpuburn-arm.hash new file mode 100644 index 00000000..78f9ab93 --- /dev/null +++ b/package/cpuburn-arm/cpuburn-arm.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 354381ec8c352e6c84875ac034004df44b0ed0ac097c400b8d2e47652815c3a2 cpuburn-arm-ad7e646700d14b81413297bda02fb7fe96613c3f.tar.gz +sha256 47f10095a04d16c8d8d52598371fa01b6a6e87134083b9ec3c43d83ff8576f55 cpuburn-a7.S diff --git a/package/cpuburn-arm/cpuburn-arm.mk b/package/cpuburn-arm/cpuburn-arm.mk new file mode 100644 index 00000000..649ffd22 --- /dev/null +++ b/package/cpuburn-arm/cpuburn-arm.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# cpuburn-arm +# +################################################################################ + +CPUBURN_ARM_VERSION = ad7e646700d14b81413297bda02fb7fe96613c3f +CPUBURN_ARM_SITE = $(call github,ssvb,cpuburn-arm,$(CPUBURN_ARM_VERSION)) +CPUBURN_ARM_LICENSE = MIT +CPUBURN_ARM_LICENSE_FILES = cpuburn-a7.S + +ifeq ($(BR2_cortex_a7),y) +CPUBURN_ARM_SRC = cpuburn-a7.S +else ifeq ($(BR2_cortex_a8),y) +CPUBURN_ARM_SRC = cpuburn-a8.S +else ifeq ($(BR2_cortex_a9),y) +CPUBURN_ARM_SRC = cpuburn-a9.S +else ifeq ($(BR2_cortex_a53),y) +CPUBURN_ARM_SRC = cpuburn-a53.S +endif + +define CPUBURN_ARM_BUILD_CMDS + $(TARGET_CC) $(TARGET_CFLAGS) -o $(@D)/cpuburn \ + $(@D)/$(CPUBURN_ARM_SRC) +endef + +define CPUBURN_ARM_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 $(@D)/cpuburn $(TARGET_DIR)/usr/bin/cpuburn +endef + +$(eval $(generic-package)) diff --git a/package/cpulimit/0001-Fix-crash-and-compiler-warnings.patch b/package/cpulimit/0001-Fix-crash-and-compiler-warnings.patch new file mode 100644 index 00000000..cb170b44 --- /dev/null +++ b/package/cpulimit/0001-Fix-crash-and-compiler-warnings.patch @@ -0,0 +1,57 @@ +From d1f42082590bed42cbf6ef1bf37e936df1afbf6b Mon Sep 17 00:00:00 2001 +From: Tobias Tangemann +Date: Thu, 9 Jul 2015 23:51:07 +0200 +Subject: [PATCH] Fix crash (and compiler warnings) + +[Upstream: https://github.com/opsengine/cpulimit/pull/48] +Signed-off-by: Florian Fainelli +--- + src/cpulimit.c | 2 +- + src/process_group.c | 4 ++++ + tests/process_iterator_test.c | 2 +- + 3 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/src/cpulimit.c b/src/cpulimit.c +index 50eabeacf214..42d7ca280738 100644 +--- a/src/cpulimit.c ++++ b/src/cpulimit.c +@@ -43,7 +43,7 @@ + #include + #include + +-#ifdef __APPLE__ || __FREEBSD__ ++#if defined(__APPLE__) || defined(__FREEBSD__) + #include + #endif + +diff --git a/src/process_group.c b/src/process_group.c +index 06d73a6f3541..c9e148cd1b60 100644 +--- a/src/process_group.c ++++ b/src/process_group.c +@@ -25,6 +25,10 @@ + #include + #include + ++#if defined(__APPLE__) || defined(__FREEBSD__) ++#include ++#endif ++ + #include + + #include "process_iterator.h" +diff --git a/tests/process_iterator_test.c b/tests/process_iterator_test.c +index 16151967eb24..1bfc167ba895 100644 +--- a/tests/process_iterator_test.c ++++ b/tests/process_iterator_test.c +@@ -28,7 +28,7 @@ + #include + #include + +-#ifdef __APPLE__ || __FREEBSD__ ++#if defined(__APPLE__) || defined(__FREEBSD__) + #include + #endif + +-- +2.25.1 + diff --git a/package/cpulimit/0002-Remove-sys-sysctl.h-and-add-missing-libgen.h-include.patch b/package/cpulimit/0002-Remove-sys-sysctl.h-and-add-missing-libgen.h-include.patch new file mode 100644 index 00000000..c0a457cd --- /dev/null +++ b/package/cpulimit/0002-Remove-sys-sysctl.h-and-add-missing-libgen.h-include.patch @@ -0,0 +1,42 @@ +From 4c1e021037550c437c7da3a276b95b5bf79e967e Mon Sep 17 00:00:00 2001 +From: Portia +Date: Sun, 1 May 2022 12:43:35 +1000 +Subject: [PATCH] Remove sys/sysctl.h and add missing libgen.h include + +- sys/sysctl.h has been deprecated and should be removed +- Adds missing libgen.h include when calling basename() + +Signed-off-by: Florian Fainelli +[Upstream: https://github.com/opsengine/cpulimit/pull/109] +--- + src/cpulimit.c | 1 - + src/process_group.c | 1 + + 2 files changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/cpulimit.c b/src/cpulimit.c +index 50eabeacf214..5b0ec4978f02 100644 +--- a/src/cpulimit.c ++++ b/src/cpulimit.c +@@ -38,7 +38,6 @@ + #include + #include + #include +-#include + #include + #include + #include +diff --git a/src/process_group.c b/src/process_group.c +index 06d73a6f3541..d4f6fab3385c 100644 +--- a/src/process_group.c ++++ b/src/process_group.c +@@ -24,6 +24,7 @@ + #include + #include + #include ++#include + + #if defined(__APPLE__) || defined(__FREEBSD__) + #include +-- +2.25.1 + diff --git a/package/cpulimit/0003-Fix-an-infrequent-crash.patch b/package/cpulimit/0003-Fix-an-infrequent-crash.patch new file mode 100644 index 00000000..a19fb6e3 --- /dev/null +++ b/package/cpulimit/0003-Fix-an-infrequent-crash.patch @@ -0,0 +1,26 @@ +From 512998f967a9dab5e98010e1043985fc855d9f4e Mon Sep 17 00:00:00 2001 +From: Pavel Timofeev +Date: Thu, 14 Jul 2016 13:50:35 +0300 +Subject: [PATCH] Fix an infrequent crash + +Signed-off-by: Florian Fainelli +[Upstream: https://github.com/opsengine/cpulimit/pull/61] +--- + src/process_iterator_linux.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/process_iterator_linux.c b/src/process_iterator_linux.c +index c8cdd07adcbe..93b44bab1755 100644 +--- a/src/process_iterator_linux.c ++++ b/src/process_iterator_linux.c +@@ -98,6 +98,7 @@ static int read_process_info(pid_t pid, struct process *p) + //read command line + sprintf(exefile,"/proc/%d/cmdline", p->pid); + fd = fopen(exefile, "r"); ++ if (fd==NULL) return -1; + if (fgets(buffer, sizeof(buffer), fd)==NULL) { + fclose(fd); + return -1; +-- +2.25.1 + diff --git a/package/cpulimit/0004-Remove-procfs.h-inclusion.patch b/package/cpulimit/0004-Remove-procfs.h-inclusion.patch new file mode 100644 index 00000000..771c2fe1 --- /dev/null +++ b/package/cpulimit/0004-Remove-procfs.h-inclusion.patch @@ -0,0 +1,30 @@ +From 48a88c033c5704d37645051ca51799a8b5a7e059 Mon Sep 17 00:00:00 2001 +From: Florian Fainelli +Date: Thu, 19 May 2022 14:22:40 -0700 +Subject: [PATCH] Remove procfs.h inclusion + +We do not use anything from this header + +Signed-off-by: Florian Fainelli +[Upstream: https://github.com/opsengine/cpulimit/pull/110] +--- + src/process_iterator.c | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/src/process_iterator.c b/src/process_iterator.c +index 8b4019d237f2..5b6c651bc5d0 100644 +--- a/src/process_iterator.c ++++ b/src/process_iterator.c +@@ -22,9 +22,6 @@ + #include + #include + #include +-#ifndef __APPLE__ +-#include +-#endif + #include + #include "process_iterator.h" + +-- +2.25.1 + diff --git a/package/cpulimit/Config.in b/package/cpulimit/Config.in new file mode 100644 index 00000000..11a4f1da --- /dev/null +++ b/package/cpulimit/Config.in @@ -0,0 +1,13 @@ +comment "cpulimit needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_CPULIMIT + bool "cpulimit" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Cpulimit is a tool which limits the CPU usage of a process + (expressed in percentage, not in CPU time) + + https://github.com/opsengine/cpulimit diff --git a/package/cpulimit/cpulimit.hash b/package/cpulimit/cpulimit.hash new file mode 100644 index 00000000..c6ef4b2e --- /dev/null +++ b/package/cpulimit/cpulimit.hash @@ -0,0 +1,3 @@ +# sha256sum locally computed: +sha256 64312f9ac569ddcadb615593cd002c94b76e93a0d4625d3ce1abb49e08e2c2da cpulimit-0.2.tar.gz +sha256 920489ca9da706d842870701155e70a101315ba0783cff39765d7e15e0916a4a LICENSE diff --git a/package/cpulimit/cpulimit.mk b/package/cpulimit/cpulimit.mk new file mode 100644 index 00000000..a864685a --- /dev/null +++ b/package/cpulimit/cpulimit.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# cpulimit +# +################################################################################ + +CPULIMIT_VERSION = 0.2 +CPULIMIT_SITE = $(call github,opsengine,cpulimit,v$(CPULIMIT_VERSION)) +CPULIMIT_LICENSE = GPL-2.0+ +CPULIMIT_LICENSE_FILES = LICENSE + +define CPULIMIT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE" \ + LDLIBS="$(TARGET_LDFLAGS)" +endef + +define CPULIMIT_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/src/cpulimit \ + $(TARGET_DIR)/usr/bin/cpulimit +endef + +$(eval $(generic-package)) diff --git a/package/cpuload/0001-Changed-error-calls-to-perror.patch b/package/cpuload/0001-Changed-error-calls-to-perror.patch new file mode 100644 index 00000000..6672bec6 --- /dev/null +++ b/package/cpuload/0001-Changed-error-calls-to-perror.patch @@ -0,0 +1,115 @@ +From ffd61eaa72acf123dea0c80ed3774656289ab49f Mon Sep 17 00:00:00 2001 +From: roiec +Date: Wed, 5 Jan 2022 17:12:05 +0200 +Subject: [PATCH] Changed 'error' calls to 'perror' + +Upstream: https://github.com/kelvincheung/cpuload/pull/1 +Signed-off-by: Fabrice Fontaine +--- + .gitignore | 60 ++++++++++++++++++++++++++++++++++++++++++++ + src/graph_cpu_load.c | 4 +-- + src/read_cpu_stat.c | 2 +- + 3 files changed, 63 insertions(+), 3 deletions(-) + create mode 100644 .gitignore + +diff --git a/.gitignore b/.gitignore +new file mode 100644 +index 0000000..c2ae907 +--- /dev/null ++++ b/.gitignore +@@ -0,0 +1,60 @@ ++# Prerequisites ++*.d ++ ++# Object files ++*.o ++*.ko ++*.obj ++*.elf ++ ++# Linker output ++*.ilk ++*.map ++*.exp ++ ++# Precompiled Headers ++*.gch ++*.pch ++ ++# Libraries ++*.lib ++*.a ++*.la ++*.lo ++ ++# Shared objects (inc. Windows DLLs) ++*.dll ++*.so ++*.so.* ++*.dylib ++ ++# Executables ++*.exe ++*.out ++*.app ++*.i*86 ++*.x86_64 ++*.hex ++ ++# Debug files ++*.dSYM/ ++*.su ++*.idb ++*.pdb ++ ++# Kernel Module Compile Results ++*.mod* ++*.cmd ++.tmp_versions/ ++modules.order ++Module.symvers ++Mkfile.old ++dkms.conf ++ ++#images ++*.tgz ++*.img ++ ++ ++#build ++configure +diff --git a/src/graph_cpu_load.c b/src/graph_cpu_load.c +index e4b7785..525d9ed 100644 +--- a/src/graph_cpu_load.c ++++ b/src/graph_cpu_load.c +@@ -132,7 +132,7 @@ void graph_new_line(char *str, unsigned long color) + graph_last_x = graph_last_y = -1; + + if (graph_data_index >= MAX_GRAPH_DATA - 2) +- error("Too many graph data."); ++ perror("Too many graph data."); + + graph_data[graph_data_index++] = DATUM_COLOR; + graph_data[graph_data_index++] = color; +@@ -145,7 +145,7 @@ void graph_new_line(char *str, unsigned long color) + void graph_add_point(int size, int amount) + { + if (graph_data_index >= MAX_GRAPH_DATA - 4) +- error("Too many graph data."); ++ perror("Too many graph data."); + + graph_data[graph_data_index++] = DATUM_SIZE; + graph_data[graph_data_index++] = size; +diff --git a/src/read_cpu_stat.c b/src/read_cpu_stat.c +index 3d014be..ff51d7f 100644 +--- a/src/read_cpu_stat.c ++++ b/src/read_cpu_stat.c +@@ -46,7 +46,7 @@ ProcessList *cpudata_new(void) + fclose(file); + + if (cpu > cpus -1) { +- error("too many cpus"); ++ perror("too many cpus"); + exit(1); + } + diff --git a/package/cpuload/Config.in b/package/cpuload/Config.in new file mode 100644 index 00000000..9a7b4e9f --- /dev/null +++ b/package/cpuload/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_CPULOAD + bool "cpuload" + help + cpuload is a simple tool to obtain intuitive vision of CPU + load (including total, user, system, irq and softirq) within a + certain time, which is especially useful for embedded system + without GUI. + + https://github.com/kelvincheung/cpuload diff --git a/package/cpuload/cpuload.hash b/package/cpuload/cpuload.hash new file mode 100644 index 00000000..c3150d75 --- /dev/null +++ b/package/cpuload/cpuload.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1d61f4776dc3e2746343d68b2ea2faf138e54666b630a6060df4f3945badbcae cpuload-0.3.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/cpuload/cpuload.mk b/package/cpuload/cpuload.mk new file mode 100644 index 00000000..648b17e5 --- /dev/null +++ b/package/cpuload/cpuload.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# cpuload +# +################################################################################ + +CPULOAD_VERSION = 0.3 +CPULOAD_SITE = $(call github,kelvincheung,cpuload,v$(CPULOAD_VERSION)) +CPULOAD_LICENSE = GPL-2.0 +CPULOAD_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/cracklib/Config.in b/package/cracklib/Config.in new file mode 100644 index 00000000..4a0f43f4 --- /dev/null +++ b/package/cracklib/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_CRACKLIB + bool "cracklib" + help + CrackLib tests passwords to determine whether they match + certain security-oriented characteristics, with the purpose + of stopping users from choosing passwords that are easy to + guess. CrackLib performs several tests on passwords: it + tries to generate words from a username and gecos entry and + checks those words against the password; it checks for + simplistic patterns in passwords; and it checks for the + password in a dictionary. + + https://github.com/cracklib/cracklib + +if BR2_PACKAGE_CRACKLIB + +config BR2_PACKAGE_CRACKLIB_TOOLS + bool "install tools" + help + Install cracklib command line tools for creating dicts. + +config BR2_PACKAGE_CRACKLIB_FULL_DICT + bool "full dict" + help + Install the full cracklib dict (requires about 8Mb extra + target space). + +endif diff --git a/package/cracklib/cracklib.hash b/package/cracklib/cracklib.hash new file mode 100644 index 00000000..a97818cb --- /dev/null +++ b/package/cracklib/cracklib.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 2c83a91dd21d035eab98bded764eb4579b73fd837b683e1a447b11ef604ee130 cracklib-2.9.11.tar.xz +sha256 b3d1e0e0ae9bc7ffed65c0042d7c68bdb903368aa6b918f94572453c6ea874dc cracklib-words-2.9.11.xz +sha256 f18a0811fa0e220ccbc42f661545e77f0388631e209585ed582a1c693029c6aa COPYING.LIB diff --git a/package/cracklib/cracklib.mk b/package/cracklib/cracklib.mk new file mode 100644 index 00000000..9f5f32c8 --- /dev/null +++ b/package/cracklib/cracklib.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# cracklib +# +################################################################################ + +CRACKLIB_VERSION = 2.9.11 +CRACKLIB_SOURCE = cracklib-$(CRACKLIB_VERSION).tar.xz +CRACKLIB_SITE = https://github.com/cracklib/cracklib/releases/download/v$(CRACKLIB_VERSION) +CRACKLIB_LICENSE = LGPL-2.1 +CRACKLIB_LICENSE_FILES = COPYING.LIB +CRACKLIB_CPE_ID_VALID = YES +CRACKLIB_INSTALL_STAGING = YES +CRACKLIB_DEPENDENCIES = host-cracklib $(TARGET_NLS_DEPENDENCIES) +CRACKLIB_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) + +ifeq ($(BR2_PACKAGE_ZLIB),y) +CRACKLIB_CONF_OPTS += --with-zlib +CRACKLIB_DEPENDENCIES += zlib +else +CRACKLIB_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +# py-compile must be rebuilt because python 3.12 removed imp module +CRACKLIB_AUTORECONF = YES +CRACKLIB_CONF_OPTS += --with-python +CRACKLIB_CONF_ENV += \ + ac_cv_path_PYTHON=$(HOST_DIR)/bin/python3 \ + am_cv_python_version=$(PYTHON3_VERSION_MAJOR) +CRACKLIB_DEPENDENCIES += python3 +else +CRACKLIB_CONF_OPTS += --without-python +endif + +HOST_CRACKLIB_CONF_OPTS += --without-python --without-zlib + +ifeq ($(BR2_PACKAGE_CRACKLIB_FULL_DICT),y) +CRACKLIB_EXTRA_DOWNLOADS = cracklib-words-$(CRACKLIB_VERSION).xz +CRACKLIB_DICT_SOURCE = $(CRACKLIB_DL_DIR)/cracklib-words-$(CRACKLIB_VERSION).xz +else +CRACKLIB_DICT_SOURCE = $(@D)/dicts/cracklib-small +endif + +ifeq ($(BR2_PACKAGE_CRACKLIB_TOOLS),) +define CRACKLIB_REMOVE_TOOLS + rm -f $(TARGET_DIR)/usr/sbin/*cracklib* +endef +CRACKLIB_POST_INSTALL_TARGET_HOOKS += CRACKLIB_REMOVE_TOOLS +endif + +define CRACKLIB_BUILD_DICT + $(HOST_MAKE_ENV) cracklib-format $(CRACKLIB_DICT_SOURCE) | \ + $(HOST_MAKE_ENV) cracklib-packer $(TARGET_DIR)/usr/share/cracklib/pw_dict + rm $(TARGET_DIR)/usr/share/cracklib/cracklib-small +endef +CRACKLIB_POST_INSTALL_TARGET_HOOKS += CRACKLIB_BUILD_DICT + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/cramfs/Config.in b/package/cramfs/Config.in new file mode 100644 index 00000000..a177004c --- /dev/null +++ b/package/cramfs/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_CRAMFS + bool "cramfs" + select BR2_PACKAGE_ZLIB + help + cramfs is a compressed read-only filesystem. This package + contains the tools to generate and check a cramfs filesystem. + + https://github.com/npitre/cramfs-tools diff --git a/package/cramfs/Config.in.host b/package/cramfs/Config.in.host new file mode 100644 index 00000000..e594d5c8 --- /dev/null +++ b/package/cramfs/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_CRAMFS + bool "host cramfs" + help + cramfs is a compressed read-only filesystem. This package + contains the tools to generate and check a cramfs filesystem. + + https://github.com/npitre/cramfs-tools diff --git a/package/cramfs/cramfs.hash b/package/cramfs/cramfs.hash new file mode 100644 index 00000000..672266b4 --- /dev/null +++ b/package/cramfs/cramfs.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 cdb7a4ecad034f063b6456b37cdf653ae31758a224c32161e54712a9d7f01cc3 cramfs-2.1.tar.gz +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING diff --git a/package/cramfs/cramfs.mk b/package/cramfs/cramfs.mk new file mode 100644 index 00000000..85706d1a --- /dev/null +++ b/package/cramfs/cramfs.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# cramfs +# +################################################################################ + +CRAMFS_VERSION = 2.1 +CRAMFS_SITE = $(call github,npitre,cramfs-tools,v$(CRAMFS_VERSION)) +CRAMFS_LICENSE = GPL-2.0+ +CRAMFS_LICENSE_FILES = COPYING + +CRAMFS_DEPENDENCIES = zlib +HOST_CRAMFS_DEPENDENCIES = host-zlib + +define CRAMFS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" LDFLAGS="$(TARGET_LDFLAGS)" -C $(@D) +endef + +define CRAMFS_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/mkcramfs $(TARGET_DIR)/usr/bin/mkcramfs + $(INSTALL) -D -m 755 $(@D)/cramfsck $(TARGET_DIR)/usr/bin/cramfsck +endef + +define HOST_CRAMFS_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) CFLAGS="$(HOST_CFLAGS) -Wall -O2 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" LDFLAGS="$(HOST_LDFLAGS)" -C $(@D) +endef + +define HOST_CRAMFS_INSTALL_CMDS + $(INSTALL) -D -m 755 $(@D)/mkcramfs $(HOST_DIR)/bin/mkcramfs + $(INSTALL) -D -m 755 $(@D)/cramfsck $(HOST_DIR)/bin/cramfsck +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/crda/0001-crda-support-python-3-in-utils-key2pub.py.patch b/package/crda/0001-crda-support-python-3-in-utils-key2pub.py.patch new file mode 100644 index 00000000..00b5a52e --- /dev/null +++ b/package/crda/0001-crda-support-python-3-in-utils-key2pub.py.patch @@ -0,0 +1,285 @@ +From 8228c484a1533ff904b276c342adcb6310abe272 Mon Sep 17 00:00:00 2001 +From: Taahir Ahmed +Date: Wed, 30 Mar 2016 11:23:54 -0300 +Subject: [PATCH] crda: support python 3 in utils/key2pub.py + +utils/key2pub.py can now be run under either python 2.7 or python 3.x. +This required some minor syntactical changes as well as switching from +M2Crypto to pycryptodomex, since M2Crypto doesn't support python 3.x. + +In addition, some errors in the generated source file keys-ssl.h are +fixed: + + * The correct OpenSSL header for BN_ULONG is included. + + * The generated constants are given the 'ull' suffix to prevent + warnings about constants that are too large. + +[Gustavo: don't call /utils/key2pub.py since that doesn't compute] + +Use pycryptodomex insdead of pycrypto + +From [1]: +"PyCryptodome is a fork of PyCrypto, which is not maintained any more +(the last release dates back to 2013 [2]). It exposes almost the same +API, but there are a few incompatibilities [3]." + +[1] https://github.com/OP-TEE/optee_os/commit/90ad2450436fdd9fc0d28a3f92f3fbcfd89a38f0 +[2] https://pypi.org/project/pycrypto/#history +[3] https://pycryptodome.readthedocs.io/en/latest/src/vs_pycrypto.html + +Signed-off-by: Gustavo Zacarias +[Rebased against crda-4.14] +Signed-off-by: Peter Seiderer +[Romain: Use pycryptodomex] +Signed-off-by: Romain Naour +[Bernd: rebased for version 4.15] +Signed-off-by: Bernd Kuhls +--- + Makefile | 2 +- + utils/key2pub.py | 146 ++++++++++++++++++++++++----------------------- + 2 files changed, 75 insertions(+), 73 deletions(-) + +diff --git a/Makefile b/Makefile +index a3ead30..8da38d0 100644 +--- a/Makefile ++++ b/Makefile +@@ -112,7 +112,7 @@ $(REG_BIN): + keys-%.c: utils/key2pub.py $(wildcard $(PUBKEY_DIR)/*.pem) + $(NQ) ' GEN ' $@ + $(NQ) ' Trusted pubkeys:' $(wildcard $(PUBKEY_DIR)/*.pem) +- $(Q)./utils/key2pub.py --$* $(wildcard $(PUBKEY_DIR)/*.pem) $@ ++ $(Q) python utils/key2pub.py --$* $(wildcard $(PUBKEY_DIR)/*.pem) $@ + + $(LIBREG): reglib.c regdb.h reglib.h + $(NQ) ' CC ' $@ +diff --git a/utils/key2pub.py b/utils/key2pub.py +index 9bb04cd..8a0ba2a 100755 +--- a/utils/key2pub.py ++++ b/utils/key2pub.py +@@ -1,126 +1,128 @@ + #!/usr/bin/env python + ++import io + import sys + try: +- from M2Crypto import RSA +-except ImportError, e: +- sys.stderr.write('ERROR: Failed to import the "M2Crypto" module: %s\n' % e.message) +- sys.stderr.write('Please install the "M2Crypto" Python module.\n') +- sys.stderr.write('On Debian GNU/Linux the package is called "python-m2crypto".\n') +- sys.exit(1) ++ from Cryptodome.PublicKey import RSA ++except ImportError as e: ++ sys.stderr.write('ERROR: Failed to import the "Cryptodome.PublicKey" module: %s\n' % e.message) ++ sys.stderr.write('Please install the "Cryptodome.PublicKey" Python module.\n') ++ sys.stderr.write('On Debian GNU/Linux the package is called "python-cryptodomex".\n') ++ sys.exit(1) ++ ++def bitwise_collect(value, radix_bits): ++ words = [] ++ radix_mask = (1 << radix_bits) - 1 ++ while value != 0: ++ words.append(value & radix_mask) ++ value >>= radix_bits ++ return words + + def print_ssl_64(output, name, val): +- while val[0] == '\0': +- val = val[1:] +- while len(val) % 8: +- val = '\0' + val +- vnew = [] +- while len(val): +- vnew.append((val[0], val[1], val[2], val[3], val[4], val[5], val[6], val[7])) +- val = val[8:] +- vnew.reverse() +- output.write('static BN_ULONG %s[%d] = {\n' % (name, len(vnew))) ++ # OpenSSL expects 64-bit words given least-significant-word first. ++ vwords = bitwise_collect(val, 64) ++ ++ output.write(u'static BN_ULONG {}[] = {{\n'.format(name)) + idx = 0 +- for v1, v2, v3, v4, v5, v6, v7, v8 in vnew: ++ for vword in vwords: + if not idx: +- output.write('\t') +- output.write('0x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x, ' % (ord(v1), ord(v2), ord(v3), ord(v4), ord(v5), ord(v6), ord(v7), ord(v8))) ++ output.write(u'\t') ++ output.write(u'0x{:016x}ULL, '.format(vword)) + idx += 1 + if idx == 2: + idx = 0 +- output.write('\n') ++ output.write(u'\n') + if idx: +- output.write('\n') +- output.write('};\n\n') ++ output.write(u'\n') ++ output.write(u'};\n\n') + + def print_ssl_32(output, name, val): +- while val[0] == '\0': +- val = val[1:] +- while len(val) % 4: +- val = '\0' + val +- vnew = [] +- while len(val): +- vnew.append((val[0], val[1], val[2], val[3], )) +- val = val[4:] +- vnew.reverse() +- output.write('static BN_ULONG %s[%d] = {\n' % (name, len(vnew))) ++ # OpenSSL expects 32-bit words given least-significant-word first. ++ vwords = bitwise_collect(val, 32) ++ ++ output.write(u'static BN_ULONG {}[] = {{\n'.format(name)) + idx = 0 +- for v1, v2, v3, v4 in vnew: ++ for vword in vwords: + if not idx: +- output.write('\t') +- output.write('0x%.2x%.2x%.2x%.2x, ' % (ord(v1), ord(v2), ord(v3), ord(v4))) ++ output.write(u'\t') ++ output.write(u'0x{:08x}, '.format(vword)) + idx += 1 + if idx == 4: + idx = 0 +- output.write('\n') ++ output.write(u'\n') + if idx: +- output.write('\n') +- output.write('};\n\n') ++ output.write(u'\n') ++ output.write(u'};\n\n') + + def print_ssl(output, name, val): ++ ++ output.write(u'#include \n') ++ output.write(u'#include \n') ++ + import struct +- output.write('#include \n') + if len(struct.pack('@L', 0)) == 8: + return print_ssl_64(output, name, val) + else: + return print_ssl_32(output, name, val) + + def print_ssl_keys(output, n): +- output.write(r''' ++ output.write(u''' + struct pubkey { + struct bignum_st e, n; + }; + +-#define KEY(data) { \ +- .d = data, \ +- .top = sizeof(data)/sizeof(data[0]), \ ++#define KEY(data) { \\ ++ .d = data, \\ ++ .top = sizeof(data)/sizeof(data[0]), \\ + } + +-#define KEYS(e,n) { KEY(e), KEY(n), } ++#define KEYS(e,n) { KEY(e), KEY(n), } + + static struct pubkey keys[] = { + ''') + for n in xrange(n + 1): +- output.write(' KEYS(e_%d, n_%d),\n' % (n, n)) +- output.write('};\n') ++ output.write(u' KEYS(e_{0}, n_{0}),\n'.format(n)) ++ output.write(u'};\n') + pass + + def print_gcrypt(output, name, val): +- output.write('#include \n') +- while val[0] == '\0': +- val = val[1:] +- output.write('static const uint8_t %s[%d] = {\n' % (name, len(val))) ++ # gcrypt expects 8-bit words most-significant-word first ++ vwords = bitwise_collect(val, 8) ++ vwords.reverse() ++ ++ output.write(u'#include \n') ++ output.write(u'static const uint8_t %s[%d] = {\n' % (name, len(vwords))) + idx = 0 +- for v in val: ++ for vword in vwords: + if not idx: +- output.write('\t') +- output.write('0x%.2x, ' % ord(v)) ++ output.write(u'\t') ++ output.write(u'0x{:02x}, '.format(vword)) + idx += 1 + if idx == 8: + idx = 0 +- output.write('\n') ++ output.write(u'\n') + if idx: +- output.write('\n') +- output.write('};\n\n') ++ output.write(u'\n') ++ output.write(u'};\n\n') + + def print_gcrypt_keys(output, n): +- output.write(r''' ++ output.write(u''' + struct key_params { + const uint8_t *e, *n; + uint32_t len_e, len_n; + }; + +-#define KEYS(_e, _n) { \ +- .e = _e, .len_e = sizeof(_e), \ +- .n = _n, .len_n = sizeof(_n), \ ++#define KEYS(_e, _n) { \\ ++ .e = _e, .len_e = sizeof(_e), \\ ++ .n = _n, .len_n = sizeof(_n), \\ + } + + static const struct key_params __attribute__ ((unused)) keys[] = { + ''') +- for n in xrange(n + 1): +- output.write(' KEYS(e_%d, n_%d),\n' % (n, n)) +- output.write('};\n') +- ++ for n in range(n + 1): ++ output.write(u' KEYS(e_{0}, n_{0}),\n'.format(n)) ++ output.write(u'};\n') ++ + + modes = { + '--ssl': (print_ssl, print_ssl_keys), +@@ -135,21 +137,21 @@ except IndexError: + mode = None + + if not mode in modes: +- print 'Usage: %s [%s] input-file... output-file' % (sys.argv[0], '|'.join(modes.keys())) ++ print('Usage: {} [{}] input-file... output-file'.format(sys.argv[0], '|'.join(modes.keys()))) + sys.exit(2) + +-output = open(outfile, 'w') ++output = io.open(outfile, 'w') + + # load key + idx = 0 + for f in files: +- try: +- key = RSA.load_pub_key(f) +- except RSA.RSAError: +- key = RSA.load_key(f) + +- modes[mode][0](output, 'e_%d' % idx, key.e[4:]) +- modes[mode][0](output, 'n_%d' % idx, key.n[4:]) ++ key_contents = io.open(f, 'rb').read() ++ key = RSA.importKey(key_contents) ++ ++ modes[mode][0](output, 'e_{}'.format(idx), key.e) ++ modes[mode][0](output, 'n_{}'.format(idx), key.n) ++ + idx += 1 + + modes[mode][1](output, idx - 1) +-- +2.25.3 + diff --git a/package/crda/0002-drop-ldconfig-call.patch b/package/crda/0002-drop-ldconfig-call.patch new file mode 100644 index 00000000..567840c0 --- /dev/null +++ b/package/crda/0002-drop-ldconfig-call.patch @@ -0,0 +1,17 @@ +Drop ldconfig call, it's useless for cross-compiling. + +Signed-off-by: Gustavo Zacarias +[Fabrice: update for 4.15] +Signed-off-by: Fabrice Fontaine + +diff -Nura crda-3.18.orig/Makefile crda-3.18/Makefile +--- crda-3.18.orig/Makefile 2015-02-18 10:34:23.841259401 -0300 ++++ crda-3.18/Makefile 2015-02-18 10:35:10.524201452 -0300 +@@ -127,7 +127,6 @@ + $(NQ) ' INSTALL libreg' + $(Q)mkdir -p $(DESTDIR)/$(LIBDIR) + $(Q)$(INSTALL) -m 644 $(LIBREG) $(DESTDIR)/$(LIBDIR)/ +- $(Q)ldconfig + + %.o: %.c regdb.h $(LIBREG) + $(NQ) ' CC ' $@ diff --git a/package/crda/0003-drop-werror.patch b/package/crda/0003-drop-werror.patch new file mode 100644 index 00000000..072e3fc4 --- /dev/null +++ b/package/crda/0003-drop-werror.patch @@ -0,0 +1,37 @@ +From f38253e066dee96b148be1b79a6b4a696ee0ae0b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Sun, 1 May 2016 10:05:48 +0200 +Subject: [PATCH] drop werror +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Building crda with GCC 6 fails because of all compiler warnings are treated as +errors. Disable the compiler option '-Werror': + +keys-gcrypt.c:94:32: error: ‘keys’ defined but not used [-Werror=unused-const-variable=] + static const struct key_params keys[] = { + ^~~~ +cc1: all warnings being treated as errors + +Signed-off-by: Jörg Krause +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 74f1172..e9b417f 100644 +--- a/Makefile ++++ b/Makefile +@@ -26,7 +26,7 @@ PUBKEY_DIR?=pubkeys + RUNTIME_PUBKEY_DIR?=/etc/wireless-regdb/pubkeys + + CFLAGS += -O2 -fpic +-CFLAGS += -std=gnu99 -Wall -Werror -pedantic ++CFLAGS += -std=gnu99 -Wall -pedantic + CFLAGS += -Wall -g + LDLIBREG += -lreg + LDLIBS += $(LDLIBREG) +-- +2.8.2 + diff --git a/package/crda/Config.in b/package/crda/Config.in new file mode 100644 index 00000000..469fa77f --- /dev/null +++ b/package/crda/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_CRDA + bool "crda" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBGCRYPT + select BR2_PACKAGE_LIBNL + # regdb is a runtime dependency + select BR2_PACKAGE_WIRELESS_REGDB + help + Central Regulatory Domain Agent. + + This package provides a Central Regulatory Domain Agent (CRDA) + to be used by the Linux kernel cf80211 wireless subsystem to + query and apply the regulatory domain settings wireless + devices may operate within for a given location. + + https://wireless.wiki.kernel.org/en/developers/regulatory/crda + +comment "crda needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/crda/crda.hash b/package/crda/crda.hash new file mode 100644 index 00000000..3b061099 --- /dev/null +++ b/package/crda/crda.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 99eb58f774f6016c380def0d80fffd573d2be0ad5f117b678c1968ed5657af82 crda-4.15.tar.gz +sha256 c16224b376128b589eea69a8fdd1f09818b8cb995e10d1e37f72dff22233d7b0 LICENSE diff --git a/package/crda/crda.mk b/package/crda/crda.mk new file mode 100644 index 00000000..8043260c --- /dev/null +++ b/package/crda/crda.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# crda +# +################################################################################ + +CRDA_VERSION = 4.15 +CRDA_SITE = https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/crda.git/snapshot +CRDA_DEPENDENCIES = host-pkgconf host-python-pycryptodomex libnl libgcrypt +CRDA_LICENSE = ISC +CRDA_LICENSE_FILES = LICENSE + +define CRDA_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) \ + $(MAKE) all_noverify -C $(@D) +endef + +define CRDA_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) install -C $(@D) DESTDIR=$(TARGET_DIR) +endef + +$(eval $(generic-package)) diff --git a/package/criu/Config.in b/package/criu/Config.in new file mode 100644 index 00000000..30b131cd --- /dev/null +++ b/package/criu/Config.in @@ -0,0 +1,53 @@ +# criu only builds on certain architectures +config BR2_PACKAGE_CRIU_ARCH_SUPPORTS + bool + default y if BR2_ARM_CPU_ARMV6 + default y if BR2_ARM_CPU_ARMV7A + default y if BR2_ARM_CPU_ARMV7M + default y if BR2_ARM_CPU_ARMV8A && !BR2_aarch64_be + default y if BR2_aarch64 + default y if BR2_x86_64 + default y if BR2_powerpc64le # Only support powerpc64 with LE + # CRIU has "some" support for s390 but it is not included due to + # BE/LE endian issues. + depends on BR2_USE_MMU # libcap + depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS # protobuf-c + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + depends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS + +config BR2_PACKAGE_CRIU + bool "criu" + depends on BR2_PACKAGE_CRIU_ARCH_SUPPORTS + depends on BR2_HOST_GCC_AT_LEAST_7 # protobuf-c + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # -march=armv7-a+fp + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18 # rseq.h + depends on !BR2_TOOLCHAIN_USES_UCLIBC # no aio.h + depends on !BR2_STATIC_LIBS # protobuf, libbsd + depends on BR2_INSTALL_LIBSTDCPP # protobuf + depends on BR2_TOOLCHAIN_HAS_THREADS # protobuf, libnl + depends on BR2_USE_WCHAR # libbsd + select BR2_PACKAGE_HOST_PYTHON3 + select BR2_PACKAGE_HOST_PYTHON3_SSL + select BR2_PACKAGE_PROTOBUF + select BR2_PACKAGE_PROTOBUF_C + select BR2_PACKAGE_LIBAIO + select BR2_PACKAGE_LIBBSD + select BR2_PACKAGE_LIBCAP + select BR2_PACKAGE_LIBNET + select BR2_PACKAGE_LIBNL + select BR2_PACKAGE_PYTHON3 + help + Checkpoint/Restore In Userspace (CRIU), is a software + tool for the Linux operating system to make it possible + to freeze a running application and checkpoint it to + persistent storage as a collection of files. + + https://criu.org/Main_Page + +comment "criu needs a glibc or musl toolchain w/ threads, host gcc >= 7, gcc >= 8, headers >= 4.18, C++, dynamic library, wchar" + depends on BR2_PACKAGE_CRIU_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_8 || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18 \ + || BR2_TOOLCHAIN_USES_UCLIBC || !BR2_INSTALL_LIBSTDCPP \ + || BR2_STATIC_LIBS || !BR2_USE_WCHAR \ + || BR2_HOST_GCC_AT_LEAST_7 diff --git a/package/criu/criu.hash b/package/criu/criu.hash new file mode 100644 index 00000000..c3fcdbc0 --- /dev/null +++ b/package/criu/criu.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 990cdd147cb670a5d5d14216c2b5c2fc2b9a53ef19396569a6413807ba2a6aa2 criu-3.19.tar.gz +sha256 568a1fa9d90e18a1a1a61ea58ec2eece16b56a5042cc72c1b4f8d4455ae6fcb7 COPYING diff --git a/package/criu/criu.mk b/package/criu/criu.mk new file mode 100644 index 00000000..3b72a113 --- /dev/null +++ b/package/criu/criu.mk @@ -0,0 +1,77 @@ +################################################################################ +# +# CRIU +# +################################################################################ + +CRIU_VERSION = 3.19 +CRIU_SITE = $(call github,checkpoint-restore,criu,v$(CRIU_VERSION)) + +CRIU_LICENSE = GPL-2.0, LGPL-2.1 (for lib/), MIT (for images/) +CRIU_LICENSE_FILES = COPYING images/LICENSE + +CRIU_DEPENDENCIES =\ + host-pkgconf \ + host-protobuf-c \ + host-python3 \ + host-python-pip \ + libaio \ + libbsd \ + libcap \ + libnet \ + libnl \ + protobuf \ + protobuf-c \ + python3 + +CRIU_MAKE_ENV =\ + $(TARGET_MAKE_ENV) \ + $(TARGET_CONFIGURE_OPTS) \ + CROSS_COMPILE=$(TARGET_CROSS) \ + WERROR=0 + +# Remap to match the used in criu. +ifeq ($(BR2_NORMALIZED_ARCH),"x86_64") +CRIU_MAKE_ENV += ARCH=x86 +else ifeq ($(BR2_NORMALIZED_ARCH),"powerpc") +CRIU_MAKE_ENV += ARCH=ppc64 +else ifeq ($(BR2_NORMALIZED_ARCH),"arm64") +CRIU_MAKE_ENV += ARCH=aarch64 +else +CRIU_MAKE_ENV += ARCH=$(BR2_NORMALIZED_ARCH) +endif + +ifeq ($(BR2_ARM_CPU_ARMV6),y) +CRIU_MAKE_ENV += SUBARCH=armv6 +else ifeq ($(BR2_ARM_CPU_ARMV7A),y) +CRIU_MAKE_ENV += SUBARCH=armv7 +else ifeq ($(BR2_ARM_CPU_ARMV7M),y) +CRIU_MAKE_ENV += SUBARCH=armv7 +else ifeq ($(BR2_ARM_CPU_ARMV8A),y) +CRIU_MAKE_ENV += SUBARCH=armv8 +endif + +# Criu needs Kernel Checkpoint/restore support which is not enabled +# by default. +define CRIU_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_CHECKPOINT_RESTORE) +endef + +define CRIU_BUILD_CMDS + rm -rf $(@D)/images/google/protobuf/descriptor.proto + cp -a $(STAGING_DIR)/usr/include/google/protobuf/descriptor.proto \ + $(@D)/images/google/protobuf/descriptor.proto + $(CRIU_MAKE_ENV) $(MAKE) -C $(@D) \ + PREFIX=/usr +endef + +define CRIU_INSTALL_TARGET_CMDS + $(CRIU_MAKE_ENV) $(MAKE) -C $(@D) \ + PREFIX=/usr \ + DESTDIR=$(TARGET_DIR) \ + install-criu \ + install-lib \ + install-compel +endef + +$(eval $(generic-package)) diff --git a/package/crucible/Config.in b/package/crucible/Config.in new file mode 100644 index 00000000..1e1b29c3 --- /dev/null +++ b/package/crucible/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_CRUCIBLE + bool "crucible" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_GO + help + Crucible is a One-Time-Programmable (OTP) fusing tool for the + i.MX family. + + https://github.com/usbarmory/crucible diff --git a/package/crucible/crucible.hash b/package/crucible/crucible.hash new file mode 100644 index 00000000..959dc892 --- /dev/null +++ b/package/crucible/crucible.hash @@ -0,0 +1,2 @@ +sha256 466b7b0be8b5085d669d63cca2a80f04c6dcbdd887a51333532ecb804a6b74ca crucible-2023.11.02-go2.tar.gz +sha256 a89c50d83be30fe7ec75be69a07f6c1b5dfaae0a6b94a678d2394fff34acb69c LICENSE diff --git a/package/crucible/crucible.mk b/package/crucible/crucible.mk new file mode 100644 index 00000000..5eedbca8 --- /dev/null +++ b/package/crucible/crucible.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# crucible +# +################################################################################ + +CRUCIBLE_VERSION = 2023.11.02 +CRUCIBLE_SITE = $(call github,usbarmory,crucible,v$(CRUCIBLE_VERSION)) +CRUCIBLE_LICENSE = BSD-3-Clause +CRUCIBLE_LICENSE_FILES = LICENSE +CRUCIBLE_GOMOD = ./cmd/crucible + +$(eval $(golang-package)) diff --git a/package/crudini/Config.in b/package/crudini/Config.in new file mode 100644 index 00000000..ff4c98d5 --- /dev/null +++ b/package/crudini/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_CRUDINI + bool "crudini" + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_INIPARSE # runtime + help + A utility for handling ini files from the command line and + shell scripts + + https://pypi.python.org/pypi/crudini diff --git a/package/crudini/Config.in.host b/package/crudini/Config.in.host new file mode 100644 index 00000000..4e770956 --- /dev/null +++ b/package/crudini/Config.in.host @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HOST_CRUDINI + bool "host crudini" + select BR2_PACKAGE_HOST_PYTHON3 + select BR2_PACKAGE_HOST_PYTHON_INIPARSE # runtime + help + A utility for handling ini files from the command line and + shell scripts + + https://pypi.python.org/pypi/crudini diff --git a/package/crudini/crudini.hash b/package/crudini/crudini.hash new file mode 100644 index 00000000..5b92c0e4 --- /dev/null +++ b/package/crudini/crudini.hash @@ -0,0 +1,4 @@ +# from https://pypi.org/project/crudini/#files +sha256 59ae650f45af82a64afc33eb876909ee0c4888dc4e8711ef59731c1edfda5e24 crudini-0.9.5.tar.gz +# locally computed +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/crudini/crudini.mk b/package/crudini/crudini.mk new file mode 100644 index 00000000..0f5cfced --- /dev/null +++ b/package/crudini/crudini.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# crudini +# +################################################################################ + +CRUDINI_VERSION = 0.9.5 +CRUDINI_SITE = https://files.pythonhosted.org/packages/32/67/c4e838930e2f434db08d6a6aadffca3d14e7455d1c2c2332e22003ad453d +CRUDINI_SETUP_TYPE = setuptools +CRUDINI_DEPENDENCIES = host-python-setuptools-scm +CRUDINI_LICENSE = GPL-2.0 +CRUDINI_LICENSE_FILES = COPYING +# This is a runtime dependency, but we don't have the concept of +# runtime dependencies for host packages. +HOST_CRUDINI_DEPENDENCIES = host-python-iniparse host-python-setuptools-scm + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/crun/Config.in b/package/crun/Config.in new file mode 100644 index 00000000..f6a1ec7c --- /dev/null +++ b/package/crun/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_CRUN + bool "crun" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C11/stdatomic.h + select BR2_PACKAGE_ARGP_STANDALONE if !BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_YAJL # libocispec + help + crun is a fast and low-memory OCI Container Runtime in C. + + https://github.com/containers/crun + +comment "crun needs a glibc or musl toolchain, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_USES_UCLIBC || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/crun/crun.hash b/package/crun/crun.hash new file mode 100644 index 00000000..b111e941 --- /dev/null +++ b/package/crun/crun.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 a03ba1e58b8823ae77d010024b43bd94c5a99f7d652257b1b23abd2d2cdb087f crun-1.15.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.libcrun diff --git a/package/crun/crun.mk b/package/crun/crun.mk new file mode 100644 index 00000000..be5897db --- /dev/null +++ b/package/crun/crun.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# crun +# +################################################################################ + +CRUN_VERSION = 1.15 +CRUN_SITE = https://github.com/containers/crun/releases/download/$(CRUN_VERSION) +CRUN_DEPENDENCIES = host-pkgconf yajl + +CRUN_LICENSE = GPL-2.0+ (crun binary), LGPL-2.1+ (libcrun) +CRUN_LICENSE_FILES = COPYING COPYING.libcrun +CRUN_CPE_ID_VALID = YES + +CRUN_AUTORECONF = YES +CRUN_CONF_OPTS = --disable-embedded-yajl + +ifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y) +CRUN_DEPENDENCIES += argp-standalone +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +CRUN_DEPENDENCIES += libcap +CRUN_CONF_OPTS += --enable-caps +else +CRUN_CONF_OPTS += --disable-caps +endif + +ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) +CRUN_DEPENDENCIES += libseccomp +CRUN_CONF_OPTS += --enable-seccomp +else +CRUN_CONF_OPTS += --disable-seccomp +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +CRUN_CONF_OPTS += --enable-systemd +CRUN_DEPENDENCIES += systemd host-pkgconf +else +CRUN_CONF_OPTS += --disable-systemd +endif + +ifeq ($(BR2_PACKAGE_RUNC),) +define CRUN_CREATE_SYMLINK + ln -sf crun $(TARGET_DIR)/usr/bin/runc +endef +CRUN_POST_INSTALL_TARGET_HOOKS += CRUN_CREATE_SYMLINK +endif + +$(eval $(autotools-package)) diff --git a/package/cryptodev-linux/0001-zero-copy-Fix-build-for-Linux-6-4.patch b/package/cryptodev-linux/0001-zero-copy-Fix-build-for-Linux-6-4.patch new file mode 100644 index 00000000..4bea5531 --- /dev/null +++ b/package/cryptodev-linux/0001-zero-copy-Fix-build-for-Linux-6-4.patch @@ -0,0 +1,37 @@ +From 592017c3a910a3905b1925aee88c4674e9a596b7 Mon Sep 17 00:00:00 2001 +From: Gaurav Jain +Date: Tue, 30 May 2023 17:09:42 +0530 +Subject: [PATCH] zero copy: Fix build for Linux 6.4 + +get_user_pages_remote api prototype is changed in kernel. +struct vm_area_struct **vmas argument is removed. +Migrate to the new API. + +Signed-off-by: Gaurav Jain + +Upstream: https://github.com/cryptodev-linux/cryptodev-linux/commit/592017c3a910a3905b1925aee88c4674e9a596b7 +Signed-off-by: Fabrice Fontaine +--- + zc.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/zc.c b/zc.c +index fdf7da17..6637945a 100644 +--- a/zc.c ++++ b/zc.c +@@ -80,10 +80,14 @@ int __get_userbuf(uint8_t __user *addr, uint32_t len, int write, + ret = get_user_pages_remote(task, mm, + (unsigned long)addr, pgcount, write ? FOLL_WRITE : 0, + pg, NULL, NULL); +-#else ++#elif (LINUX_VERSION_CODE < KERNEL_VERSION(6, 4, 0)) + ret = get_user_pages_remote(mm, + (unsigned long)addr, pgcount, write ? FOLL_WRITE : 0, + pg, NULL, NULL); ++#else ++ ret = get_user_pages_remote(mm, ++ (unsigned long)addr, pgcount, write ? FOLL_WRITE : 0, ++ pg, NULL); + #endif + #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)) + up_read(&mm->mmap_sem); diff --git a/package/cryptodev-linux/0002-cryptodev_verbosity-Fix-build-for-Linux-6-4.patch b/package/cryptodev-linux/0002-cryptodev_verbosity-Fix-build-for-Linux-6-4.patch new file mode 100644 index 00000000..e6022c68 --- /dev/null +++ b/package/cryptodev-linux/0002-cryptodev_verbosity-Fix-build-for-Linux-6-4.patch @@ -0,0 +1,44 @@ +From 99ae2a39ddc3f89c66d9f09783b591c0f2dbf2e9 Mon Sep 17 00:00:00 2001 +From: Gaurav Jain +Date: Wed, 28 Jun 2023 12:44:32 +0530 +Subject: [PATCH] cryptodev_verbosity: Fix build for Linux 6.4 + +register_sysctl_table api is removed in kernel. +migrate to the new api register_sysctl. + +child is also removed in linux 6.4 ctl_table struct. + +Signed-off-by: Gaurav Jain + +Upstream: https://github.com/cryptodev-linux/cryptodev-linux/commit/99ae2a39ddc3f89c66d9f09783b591c0f2dbf2e9 +Signed-off-by: Fabrice Fontaine +--- + ioctl.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/ioctl.c b/ioctl.c +index 8f241b86..4262bbd5 100644 +--- a/ioctl.c ++++ b/ioctl.c +@@ -1246,7 +1246,9 @@ static struct ctl_table verbosity_ctl_root[] = { + { + .procname = "ioctl", + .mode = 0555, ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 4, 0)) + .child = verbosity_ctl_dir, ++#endif + }, + {}, + }; +@@ -1267,7 +1269,11 @@ static int __init init_cryptodev(void) + return rc; + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 4, 0)) + verbosity_sysctl_header = register_sysctl_table(verbosity_ctl_root); ++#else ++ verbosity_sysctl_header = register_sysctl(verbosity_ctl_root->procname, verbosity_ctl_dir); ++#endif + + pr_info(PFX "driver %s loaded.\n", VERSION); + diff --git a/package/cryptodev-linux/0003-Fix-build-for-Linux-6-7-rc1.patch b/package/cryptodev-linux/0003-Fix-build-for-Linux-6-7-rc1.patch new file mode 100644 index 00000000..4fdccaf6 --- /dev/null +++ b/package/cryptodev-linux/0003-Fix-build-for-Linux-6-7-rc1.patch @@ -0,0 +1,38 @@ +From 5e7121e45ff283d30097da381fd7e97c4bb61364 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Joan=20Bruguera=20Mic=C3=B3?= +Date: Sun, 10 Dec 2023 13:57:55 +0000 +Subject: [PATCH] Fix build for Linux 6.7-rc1 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Since Linux 6.7-rc1, no ahash algorithms set a nonzero alignmask, +and therefore `crypto_ahash_alignmask` has been removed. + +See also: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0f8660c82b79af595b056f6b9f4f227edeb88574 + https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c626910f3f1bbce6ad18bc613d895d2a089ed95e + +Signed-off-by: Joan Bruguera Micó + +Upstream: https://github.com/cryptodev-linux/cryptodev-linux/commit/5e7121e45ff283d30097da381fd7e97c4bb61364 +Signed-off-by: Fabrice Fontaine +--- + cryptlib.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/cryptlib.c b/cryptlib.c +index 4d739e5..0e59d4c 100644 +--- a/cryptlib.c ++++ b/cryptlib.c +@@ -381,7 +381,11 @@ int cryptodev_hash_init(struct hash_data *hdata, const char *alg_name, + } + + hdata->digestsize = crypto_ahash_digestsize(hdata->async.s); ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 7, 0)) + hdata->alignmask = crypto_ahash_alignmask(hdata->async.s); ++#else ++ hdata->alignmask = 0; ++#endif + + init_completion(&hdata->async.result.completion); + diff --git a/package/cryptodev-linux/Config.in b/package/cryptodev-linux/Config.in new file mode 100644 index 00000000..89964ab0 --- /dev/null +++ b/package/cryptodev-linux/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_CRYPTODEV_LINUX + bool "cryptodev-linux" + depends on !BR2_microblaze + depends on BR2_LINUX_KERNEL + help + Cryptodev-linux is a device that allows access to Linux kernel + cryptographic drivers; thus allowing userspace applications + to take advantage of hardware accelerators. + + http://cryptodev-linux.org/index.html + +comment "cryptodev-linux needs a Linux kernel to be built" + depends on !BR2_microblaze + depends on !BR2_LINUX_KERNEL diff --git a/package/cryptodev-linux/cryptodev-linux.hash b/package/cryptodev-linux/cryptodev-linux.hash new file mode 100644 index 00000000..300aa3bc --- /dev/null +++ b/package/cryptodev-linux/cryptodev-linux.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 33b7915c46eb39a37110e88c681423c0dd0df25d784b6e1475ac3196367f0db5 cryptodev-linux-1.13.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/cryptodev-linux/cryptodev-linux.mk b/package/cryptodev-linux/cryptodev-linux.mk new file mode 100644 index 00000000..580ea895 --- /dev/null +++ b/package/cryptodev-linux/cryptodev-linux.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# cryptodev-linux +# +################################################################################ + +CRYPTODEV_LINUX_VERSION = 1.13 +CRYPTODEV_LINUX_SITE = $(call github,cryptodev-linux,cryptodev-linux,cryptodev-linux-$(CRYPTODEV_LINUX_VERSION)) +CRYPTODEV_LINUX_INSTALL_STAGING = YES +CRYPTODEV_LINUX_LICENSE = GPL-2.0+ +CRYPTODEV_LINUX_LICENSE_FILES = COPYING +CRYPTODEV_LINUX_CPE_ID_VENDOR = cryptodev-linux + +define CRYPTODEV_LINUX_MODULE_GEN_VERSION_H + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) version.h +endef +CRYPTODEV_LINUX_PRE_BUILD_HOOKS += CRYPTODEV_LINUX_MODULE_GEN_VERSION_H + +define CRYPTODEV_LINUX_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 644 $(@D)/crypto/cryptodev.h \ + $(STAGING_DIR)/usr/include/crypto/cryptodev.h +endef + +define CRYPTODEV_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO) + $(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_USER_API_AEAD) +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/cryptopp/Config.in b/package/cryptopp/Config.in new file mode 100644 index 00000000..1648a73f --- /dev/null +++ b/package/cryptopp/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_CRYPTOPP + bool "cryptopp" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR + help + A free C++ class library of cryptographic schemes + +comment "cryptopp needs a toolchain w/ C++, dynamic library, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_USE_WCHAR diff --git a/package/cryptopp/cryptopp.hash b/package/cryptopp/cryptopp.hash new file mode 100644 index 00000000..a7bc578d --- /dev/null +++ b/package/cryptopp/cryptopp.hash @@ -0,0 +1,5 @@ +# Hash from: https://www.cryptopp.com/release890.html: +sha512 903970c4c0312272e93bae0cc3477be66b273dd38c9329fda9f7157ec44e247a3bc16b9d2b4ad625f258af0eaf2dc2c4210d4d14829b455f180983859a5c4b41 cryptopp890.zip + +# Hash for license file: +sha256 78e4010b682cb94187fe0b57e50116d0ba271ef81104d1ddb35c80c3d81e3169 License.txt diff --git a/package/cryptopp/cryptopp.mk b/package/cryptopp/cryptopp.mk new file mode 100644 index 00000000..a538f8c1 --- /dev/null +++ b/package/cryptopp/cryptopp.mk @@ -0,0 +1,78 @@ +################################################################################ +# +# cryptopp +# +################################################################################ + +CRYPTOPP_VERSION = 8.9.0 +CRYPTOPP_SOURCE = cryptopp$(subst .,,$(CRYPTOPP_VERSION)).zip +CRYPTOPP_SITE = https://cryptopp.com +CRYPTOPP_LICENSE = BSL-1.0, BSD-3-Clause (CRYPTOGAMS), Public domain (ChaCha SSE2 and AVX) +CRYPTOPP_LICENSE_FILES = License.txt +CRYPTOPP_CPE_ID_VENDOR = cryptopp +CRYPTOPP_CPE_ID_PRODUCT = crypto\+\+ +CRYPTOPP_INSTALL_STAGING = YES + +define HOST_CRYPTOPP_EXTRACT_CMDS + $(UNZIP) $(HOST_CRYPTOPP_DL_DIR)/$(CRYPTOPP_SOURCE) -d $(@D) +endef + +HOST_CRYPTOPP_CXXFLAGS = $(HOST_CFLAGS) -fPIC + +# _mm256_broadcastsi128_si256 has been added only in gcc 4.9 +ifneq ($(BR2_HOST_GCC_AT_LEAST_4_9),y) +HOST_CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_AVX2 +endif + +HOST_CRYPTOPP_MAKE_OPTS = \ + $(HOST_CONFIGURE_OPTS) \ + CXXFLAGS="$(HOST_CRYPTOPP_CXXFLAGS)" + +define HOST_CRYPTOPP_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_CRYPTOPP_MAKE_OPTS) shared +endef + +define HOST_CRYPTOPP_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) PREFIX=$(HOST_DIR) install-lib +endef + +define CRYPTOPP_EXTRACT_CMDS + $(UNZIP) $(CRYPTOPP_DL_DIR)/$(CRYPTOPP_SOURCE) -d $(@D) +endef + +CRYPTOPP_CXXFLAGS = $(TARGET_CXXFLAGS) -fPIC + +# _mm256_broadcastsi128_si256 has been added only in gcc 4.9 +ifneq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_9),y) +CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_AVX2 +endif + +ifneq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y) +CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_ALTIVEC +endif + +ifneq ($(BR2_ARM_CPU_HAS_NEON),y) +CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_ARM_NEON +endif + +CRYPTOPP_MAKE_OPTS = \ + $(TARGET_CONFIGURE_OPTS) \ + CXXFLAGS="$(CRYPTOPP_CXXFLAGS)" + +define CRYPTOPP_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(CRYPTOPP_MAKE_OPTS) \ + PREFIX=/usr shared libcryptopp.pc +endef + +define CRYPTOPP_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX=/usr DESTDIR=$(TARGET_DIR) \ + LDCONFIG=/bin/true install-lib +endef + +define CRYPTOPP_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX=/usr DESTDIR=$(STAGING_DIR) \ + LDCONFIG=/bin/true install-lib +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/cryptsetup/Config.in b/package/cryptsetup/Config.in new file mode 100644 index 00000000..f36883ea --- /dev/null +++ b/package/cryptsetup/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_CRYPTSETUP + bool "cryptsetup" + depends on BR2_TOOLCHAIN_HAS_THREADS # lvm2 + depends on BR2_USE_MMU # lvm2, libargon2 + depends on !BR2_STATIC_LIBS # lvm2, libargon2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c + select BR2_PACKAGE_ARGP_STANDALONE if BR2_PACKAGE_LIBSSH && \ + (BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL) + select BR2_PACKAGE_POPT + select BR2_PACKAGE_LVM2 + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_JSON_C + select BR2_PACKAGE_LIBARGON2 + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + This tool helps manipulate dm-crypt and luks partitions for + on-disk encryption. + + https://gitlab.com/cryptsetup/cryptsetup + +comment "cryptsetup needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/cryptsetup/Config.in.host b/package/cryptsetup/Config.in.host new file mode 100644 index 00000000..9e31df55 --- /dev/null +++ b/package/cryptsetup/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_CRYPTSETUP + bool "host cryptsetup" + select BR2_PACKAGE_HOST_UTIL_LINUX + help + This tool helps manipulate dm-crypt and luks partitions for + on-disk encryption. + + https://gitlab.com/cryptsetup/cryptsetup diff --git a/package/cryptsetup/cryptsetup.hash b/package/cryptsetup/cryptsetup.hash new file mode 100644 index 00000000..e0cb6564 --- /dev/null +++ b/package/cryptsetup/cryptsetup.hash @@ -0,0 +1,4 @@ +# From https://www.kernel.org/pub/linux/utils/cryptsetup/v2.7/sha256sums.asc +sha256 dce29903a58f7b774fe61191e7e6de955de0f40d9e27b0028ffcf3438c0e9480 cryptsetup-2.7.4.tar.xz +sha256 45670cce8b6a0ddd66c8016cd8ccef6cd71f35717cbacc7f1e895b3855207b33 COPYING +sha256 8c33cc37871654ec7ed87e6fbb896c8cf33ef5ef05b1611a5aed857596ffafa5 COPYING.LGPL diff --git a/package/cryptsetup/cryptsetup.mk b/package/cryptsetup/cryptsetup.mk new file mode 100644 index 00000000..15cadb28 --- /dev/null +++ b/package/cryptsetup/cryptsetup.mk @@ -0,0 +1,72 @@ +################################################################################ +# +# cryptsetup +# +################################################################################ + +CRYPTSETUP_VERSION_MAJOR = 2.7 +CRYPTSETUP_VERSION = $(CRYPTSETUP_VERSION_MAJOR).4 +CRYPTSETUP_SOURCE = cryptsetup-$(CRYPTSETUP_VERSION).tar.xz +CRYPTSETUP_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/cryptsetup/v$(CRYPTSETUP_VERSION_MAJOR) +CRYPTSETUP_DEPENDENCIES = \ + lvm2 popt host-pkgconf json-c libargon2 \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_LIBS),util-linux-libs,util-linux) \ + $(TARGET_NLS_DEPENDENCIES) +CRYPTSETUP_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (library) +CRYPTSETUP_LICENSE_FILES = COPYING COPYING.LGPL +CRYPTSETUP_CPE_ID_VALID = YES +CRYPTSETUP_INSTALL_STAGING = YES + +CRYPTSETUP_CONF_ENV += LDFLAGS="$(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)" +CRYPTSETUP_CONF_OPTS += --enable-blkid --enable-libargon2 --disable-asciidoc + +# cryptsetup uses OpenSSL by default, but can be configured to use libgcrypt, +# nettle, libnss or kernel crypto modules instead +ifeq ($(BR2_PACKAGE_OPENSSL),y) +CRYPTSETUP_DEPENDENCIES += openssl +CRYPTSETUP_CONF_OPTS += --with-crypto_backend=openssl +else ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +CRYPTSETUP_DEPENDENCIES += libgcrypt +CRYPTSETUP_CONF_ENV += LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config +CRYPTSETUP_CONF_OPTS += --with-crypto_backend=gcrypt +else ifeq ($(BR2_PACKAGE_NETTLE),y) +CRYPTSETUP_DEPENDENCIES += nettle +CRYPTSETUP_CONF_OPTS += --with-crypto_backend=nettle +else ifeq ($(BR2_PACKAGE_LIBNSS),y) +CRYPTSETUP_DEPENDENCIES += libnss +CRYPTSETUP_CONF_OPTS += --with-crypto_backend=nss +else +CRYPTSETUP_CONF_OPTS += --with-crypto_backend=kernel +endif + +ifeq ($(BR2_PACKAGE_LIBSSH),y) +CRYPTSETUP_DEPENDENCIES += \ + $(if $(BR2_PACKAGE_ARGP_STANDALONE),argp-standalone) \ + libssh +CRYPTSETUP_CONF_OPTS += --enable-ssh-token +else +CRYPTSETUP_CONF_OPTS += --disable-ssh-token +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +CRYPTSETUP_CONF_OPTS += --with-tmpfilesdir=/usr/lib/tmpfiles.d +endif + +HOST_CRYPTSETUP_DEPENDENCIES = \ + host-pkgconf \ + host-lvm2 \ + host-popt \ + host-util-linux \ + host-json-c \ + host-openssl + +HOST_CRYPTSETUP_CONF_OPTS = --with-crypto_backend=openssl \ + --disable-kernel_crypto \ + --disable-ssh-token \ + --enable-blkid \ + --with-tmpfilesdir=no \ + --disable-asciidoc + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/ctorrent/0001-fix-musl-build.patch b/package/ctorrent/0001-fix-musl-build.patch new file mode 100644 index 00000000..3ba80be3 --- /dev/null +++ b/package/ctorrent/0001-fix-musl-build.patch @@ -0,0 +1,20 @@ +[PATCH] Fix compilation on musl + +Using the ssize_t typedef requires including . + +See : https://sourceforge.net/p/dtorrent/patches/3/ + +Signed-off-by: Brendan Heading +Upstream-status: submitted +--- +diff -Nur a/compat.c b/compat.c +--- a/compat.c 2015-07-29 18:22:24.658415171 +0100 ++++ b/compat.c 2015-07-29 18:36:21.752576311 +0100 +@@ -63,6 +63,7 @@ + + #ifndef HAVE_STRNSTR + #include ++#include + /* FUNCTION PROGRAMER: Siberiaic Sang */ + char *strnstr(const char *haystack, const char *needle, size_t haystacklen) + { diff --git a/package/ctorrent/Config.in b/package/ctorrent/Config.in new file mode 100644 index 00000000..97552e78 --- /dev/null +++ b/package/ctorrent/Config.in @@ -0,0 +1,13 @@ +comment "ctorrent needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_CTORRENT + bool "ctorrent" + depends on BR2_INSTALL_LIBSTDCPP + help + CTorrent is a BitTorrent client implemented in C++ + to be lightweight and quick. + http://ctorrent.sourceforge.net/ + + This is the enhanced version from + http://www.rahul.net/dholmes/ctorrent/ diff --git a/package/ctorrent/ctorrent.hash b/package/ctorrent/ctorrent.hash new file mode 100644 index 00000000..1b1d2fce --- /dev/null +++ b/package/ctorrent/ctorrent.hash @@ -0,0 +1,5 @@ +# From http://sourceforge.net/projects/dtorrent/files/dtorrent/3.3.2/ +sha1 d4e221f0292268f80e2430ce9d451dd64cf1ffaa ctorrent-dnh3.3.2.tar.gz + +# locally calculated +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/ctorrent/ctorrent.mk b/package/ctorrent/ctorrent.mk new file mode 100644 index 00000000..959e543f --- /dev/null +++ b/package/ctorrent/ctorrent.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# ctorrent +# +################################################################################ + +CTORRENT_VERSION = dnh3.3.2 +CTORRENT_SITE = http://www.rahul.net/dholmes/ctorrent +CTORRENT_LICENSE = GPL-2.0 +CTORRENT_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +CTORRENT_CONF_OPTS += --with-ssl=yes +CTORRENT_DEPENDENCIES += openssl +else +CTORRENT_CONF_OPTS += --with-ssl=no +endif + +$(eval $(autotools-package)) diff --git a/package/cukinia/Config.in b/package/cukinia/Config.in new file mode 100644 index 00000000..20d0820a --- /dev/null +++ b/package/cukinia/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_CUKINIA + bool "cukinia" + depends on BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_GAWK + help + Cukinia is designed to help Linux-based embedded firmware + developers run system-level validation tests on their product. + It provides a simple POSIX shell overlay, and primitives to + make sure system integrations and features keep behaving the + way they should. + + By default, cukinia reports colorized test results on stdout, + but can also report them as CSV and JUnit-XML for easy + integration with CI systems such as Jenkins. + + https://github.com/savoirfairelinux/cukinia + +comment "cukinia needs busybox or gawk" + depends on !(BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_GAWK) diff --git a/package/cukinia/cukinia.conf b/package/cukinia/cukinia.conf new file mode 100644 index 00000000..e5f304d3 --- /dev/null +++ b/package/cukinia/cukinia.conf @@ -0,0 +1,4 @@ +# Note: Cukinia will produce colorized output if the TERM environment +# variable matches vt220, xterm or linux. +cukinia_log $(_colorize blue "############# Cukinia tests ##############") +cukinia_user root diff --git a/package/cukinia/cukinia.hash b/package/cukinia/cukinia.hash new file mode 100644 index 00000000..6e76a6ab --- /dev/null +++ b/package/cukinia/cukinia.hash @@ -0,0 +1,4 @@ +# locally computed +sha256 79dc77c7b9f2784e7d22d961dd2c4ad9c78deebbc6e8f39df4fa214118682b40 cukinia-0.6.0.tar.gz +sha256 b40930bbcf80744c86c46a12bc9da056641d722716c378f5659b9e555ef833e1 LICENSE +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPLv3 diff --git a/package/cukinia/cukinia.mk b/package/cukinia/cukinia.mk new file mode 100644 index 00000000..798c199b --- /dev/null +++ b/package/cukinia/cukinia.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# cukinia +# +################################################################################ + +CUKINIA_VERSION = 0.6.0 +CUKINIA_SITE = $(call github,savoirfairelinux,cukinia,v$(CUKINIA_VERSION)) +CUKINIA_LICENSE = Apache-2.0 or GPL-3.0 +CUKINIA_LICENSE_FILES = LICENSE LICENSE.GPLv3 + +define CUKINIA_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/cukinia $(TARGET_DIR)/usr/bin/cukinia + $(INSTALL) -D -m 0644 $(CUKINIA_PKGDIR)/cukinia.conf \ + $(TARGET_DIR)/etc/cukinia/cukinia.conf +endef + +$(eval $(generic-package)) diff --git a/package/cunit/Config.in b/package/cunit/Config.in new file mode 100644 index 00000000..8bcfa2a4 --- /dev/null +++ b/package/cunit/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_CUNIT + bool "cunit" + help + An automated testing framework in 'C'. + + http://cunit.sourceforge.net/ diff --git a/package/cunit/cunit.hash b/package/cunit/cunit.hash new file mode 100644 index 00000000..93a8c420 --- /dev/null +++ b/package/cunit/cunit.hash @@ -0,0 +1,3 @@ +# Locally calculated: +sha256 f5b29137f845bb08b77ec60584fdb728b4e58f1023e6f249a464efa49a40f214 CUnit-2.1-3.tar.bz2 +sha256 5d9d73d41a57dd2f34487ef3978a2c13cdb97294baeeb81fcd274796399eb15f COPYING diff --git a/package/cunit/cunit.mk b/package/cunit/cunit.mk new file mode 100644 index 00000000..9fc3b961 --- /dev/null +++ b/package/cunit/cunit.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# cunit +# +################################################################################ + +CUNIT_VERSION = 2.1-3 +CUNIT_SITE = http://downloads.sourceforge.net/project/cunit/CUnit/$(CUNIT_VERSION) +CUNIT_SOURCE = CUnit-$(CUNIT_VERSION).tar.bz2 +CUNIT_INSTALL_STAGING = YES +CUNIT_LICENSE = LGPL-2.0+ +CUNIT_LICENSE_FILES = COPYING + +# The source archive does not have the autoconf/automake material generated. +CUNIT_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/cups-filters/0001-beh-backend-Use-execv-instead-of-system-CVE-2023-24805.patch b/package/cups-filters/0001-beh-backend-Use-execv-instead-of-system-CVE-2023-24805.patch new file mode 100644 index 00000000..e527b20f --- /dev/null +++ b/package/cups-filters/0001-beh-backend-Use-execv-instead-of-system-CVE-2023-24805.patch @@ -0,0 +1,208 @@ +From 93e60d3df358c0ae6f3dba79e1c9684657683d89 Mon Sep 17 00:00:00 2001 +From: Till Kamppeter +Date: Wed, 17 May 2023 11:11:29 +0200 +Subject: [PATCH] beh backend: Use execv() instead of system() - CVE-2023-24805 + +With execv() command line arguments are passed as separate strings and +not the full command line in a single string. This prevents arbitrary +command execution by escaping the quoting of the arguments in a job +with a forged job title. + +In addition, done the following fixes and improvements: + +- Do not allow '/' in the scheme of the URI (= backend executable + name), to assure that only backends inside /usr/lib/cups/backend/ + are used. + +- URI must have ':', to split off scheme, otherwise error out. + +- Check return value of snprintf() to create call path for backend, to + error out on truncation of a too long scheme or on complete failure + due to a completely odd scheme. + +- Use strncat() instead of strncpy() for getting scheme from URI, the latter + does not require setting terminating zero byte in case of truncation. + +- Also exclude "." or ".." as scheme, as directories are not valid CUPS + backends. + +- Do not use fprintf() in sigterm_handler(), to not interfere with a + fprintf() which could be running in the main process when + sigterm_handler() is triggered. + +- Use "static volatile int" for global variable job_canceled. + +Upstream: https://github.com/OpenPrinting/cups-filters/commit/93e60d3df358c0ae6f3dba79e1c9684657683d89 +Signed-off-by: Fabrice Fontaine +--- + backend/beh.c | 107 +++++++++++++++++++++++++++++++++++++++----------- + 1 file changed, 84 insertions(+), 23 deletions(-) + +diff --git a/backend/beh.c b/backend/beh.c +index 225fd27d5..8d51235b1 100644 +--- a/backend/beh.c ++++ b/backend/beh.c +@@ -22,12 +22,13 @@ + #include "backend-private.h" + #include + #include ++#include + + /* + * Local globals... + */ + +-static int job_canceled = 0; /* Set to 1 on SIGTERM */ ++static volatile int job_canceled = 0; /* Set to 1 on SIGTERM */ + + /* + * Local functions... +@@ -213,21 +214,40 @@ call_backend(char *uri, /* I - URI of final destination */ + char **argv, /* I - Command-line arguments */ + char *filename) { /* I - File name of input data */ + const char *cups_serverbin; /* Location of programs */ ++ char *backend_argv[8]; /* Arguments for backend */ + char scheme[1024], /* Scheme from URI */ + *ptr, /* Pointer into scheme */ +- cmdline[65536]; /* Backend command line */ +- int retval; ++ backend_path[2048]; /* Backend path */ ++ int pid = 0, /* Process ID of backend */ ++ wait_pid, /* Process ID from wait() */ ++ wait_status, /* Status from child */ ++ retval = 0; ++ int bytes; + + /* + * Build the backend command line... + */ + +- strncpy(scheme, uri, sizeof(scheme) - 1); +- if (strlen(uri) > 1023) +- scheme[1023] = '\0'; ++ scheme[0] = '\0'; ++ strncat(scheme, uri, sizeof(scheme) - 1); + if ((ptr = strchr(scheme, ':')) != NULL) + *ptr = '\0'; +- ++ else { ++ fprintf(stderr, ++ "ERROR: beh: Invalid URI, no colon (':') to mark end of scheme part.\n"); ++ exit (CUPS_BACKEND_FAILED); ++ } ++ if (strchr(scheme, '/')) { ++ fprintf(stderr, ++ "ERROR: beh: Invalid URI, scheme contains a slash ('/').\n"); ++ exit (CUPS_BACKEND_FAILED); ++ } ++ if (!strcmp(scheme, ".") || !strcmp(scheme, "..")) { ++ fprintf(stderr, ++ "ERROR: beh: Invalid URI, scheme (\"%s\") is a directory.\n", ++ scheme); ++ exit (CUPS_BACKEND_FAILED); ++ } + if ((cups_serverbin = getenv("CUPS_SERVERBIN")) == NULL) + cups_serverbin = CUPS_SERVERBIN; + +@@ -235,16 +255,29 @@ call_backend(char *uri, /* I - URI of final destination */ + fprintf(stderr, + "ERROR: beh: Direct output into a file not supported.\n"); + exit (CUPS_BACKEND_FAILED); +- } else +- snprintf(cmdline, sizeof(cmdline), +- "%s/backend/%s '%s' '%s' '%s' '%s' '%s' %s", +- cups_serverbin, scheme, argv[1], argv[2], argv[3], +- /* Apply number of copies only if beh was called with a +- file name and not with the print data in stdin, as +- backends should handle copies only if they are called +- with a file name */ +- (argc == 6 ? "1" : argv[4]), +- argv[5], filename); ++ } ++ ++ backend_argv[0] = uri; ++ backend_argv[1] = argv[1]; ++ backend_argv[2] = argv[2]; ++ backend_argv[3] = argv[3]; ++ /* Apply number of copies only if beh was called with a file name ++ and not with the print data in stdin, as backends should handle ++ copies only if they are called with a file name */ ++ backend_argv[4] = (argc == 6 ? "1" : argv[4]); ++ backend_argv[5] = argv[5]; ++ backend_argv[6] = filename; ++ backend_argv[7] = NULL; ++ ++ bytes = snprintf(backend_path, sizeof(backend_path), ++ "%s/backend/%s", cups_serverbin, scheme); ++ if (bytes < 0 || bytes >= sizeof(backend_path)) ++ { ++ fprintf(stderr, ++ "ERROR: beh: Invalid scheme (\"%s\"), could not determing backend path.\n", ++ scheme); ++ return (CUPS_BACKEND_FAILED); ++ } + + /* + * Overwrite the device URI and run the actual backend... +@@ -253,18 +286,44 @@ call_backend(char *uri, /* I - URI of final destination */ + setenv("DEVICE_URI", uri, 1); + + fprintf(stderr, +- "DEBUG: beh: Executing backend command line \"%s\"...\n", +- cmdline); ++ "DEBUG: beh: Executing backend command line \"%s '%s' '%s' '%s' '%s' '%s' %s\"...\n", ++ backend_path, backend_argv[1], backend_argv[2], backend_argv[3], ++ backend_argv[4], backend_argv[5], backend_argv[6]); + fprintf(stderr, + "DEBUG: beh: Using device URI: %s\n", + uri); + +- retval = system(cmdline) >> 8; ++ if ((pid = fork()) == 0) { ++ /* ++ * Child comes here... ++ */ ++ ++ /* Run the backend */ ++ execv(backend_path, backend_argv); + +- if (retval == -1) + fprintf(stderr, "ERROR: Unable to execute backend command line: %s\n", + strerror(errno)); + ++ exit(1); ++ } else if (pid < 0) { ++ /* ++ * Unable to fork! ++ */ ++ ++ return (CUPS_BACKEND_FAILED); ++ } ++ ++ while ((wait_pid = wait(&wait_status)) < 0 && errno == EINTR); ++ ++ if (wait_pid >= 0 && wait_status) { ++ if (WIFEXITED(wait_status)) ++ retval = WEXITSTATUS(wait_status); ++ else if (WTERMSIG(wait_status) != SIGTERM) ++ retval = WTERMSIG(wait_status); ++ else ++ retval = 0; ++ } ++ + return (retval); + } + +@@ -277,8 +336,10 @@ static void + sigterm_handler(int sig) { /* I - Signal number (unused) */ + (void)sig; + +- fprintf(stderr, +- "DEBUG: beh: Job canceled.\n"); ++ const char * const msg = "DEBUG: beh: Job canceled.\n"; ++ /* The if() is to eliminate the return value and silence the warning ++ about an unused return value. */ ++ if (write(2, msg, strlen(msg))); + + if (job_canceled) + _exit(CUPS_BACKEND_OK); diff --git a/package/cups-filters/Config.in b/package/cups-filters/Config.in new file mode 100644 index 00000000..ded99a47 --- /dev/null +++ b/package/cups-filters/Config.in @@ -0,0 +1,40 @@ +config BR2_PACKAGE_CUPS_FILTERS + bool "cups-filters" + # needs fork() + depends on BR2_USE_MMU + depends on BR2_INSTALL_LIBSTDCPP # qpdf + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_PACKAGE_CUPS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # qpdf + depends on BR2_TOOLCHAIN_HAS_ATOMIC # qpdf + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_LCMS2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_QPDF + help + This project provides backends, filters, and other software + that was once part of the core CUPS distribution but is no + longer maintained by Apple Inc. In addition it contains + additional filters and software developed independently of + Apple, especially filters for the PDF-centric printing + workflow introduced by OpenPrinting and a daemon to browse + Bonjour broadcasts of remote CUPS printers to make these + printers available locally and to provide backward + compatibility to the old CUPS broadcasting and browsing of + CUPS 1.5.x and older. From CUPS 1.6.0 on, this package is + required for using printer drivers with CUPS under Linux. + With CUPS 1.5.x and earlier this package can be used + optionally to switch over to PDF-based printing. + + http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters + +comment "cups-filters needs a toolchain w/ wchar, C++, threads and dynamic library, gcc >= 5" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_USE_WCHAR || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 diff --git a/package/cups-filters/S82cups-browsed b/package/cups-filters/S82cups-browsed new file mode 100644 index 00000000..f17bbe74 --- /dev/null +++ b/package/cups-filters/S82cups-browsed @@ -0,0 +1,48 @@ +#!/bin/sh + +DAEMON="cups-browsed" +PIDFILE="/var/run/$DAEMON.pid" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/usr/sbin/$DAEMON" \ + -- -c /etc/cups/cups-browsed.conf + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/cups-filters/cups-filters.hash b/package/cups-filters/cups-filters.hash new file mode 100644 index 00000000..7fb3badf --- /dev/null +++ b/package/cups-filters/cups-filters.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 01a2acbd6bb78f09638047e4e9ce305d7e5ef4cb9ed6949672b5d901b7321dd4 cups-filters-1.28.17.tar.gz +sha256 38192ffdaca98b718f78b2d4abc38bb087f0bbcc9a16d212c98b903b985f900f COPYING diff --git a/package/cups-filters/cups-filters.mk b/package/cups-filters/cups-filters.mk new file mode 100644 index 00000000..dcfb2e95 --- /dev/null +++ b/package/cups-filters/cups-filters.mk @@ -0,0 +1,96 @@ +################################################################################ +# +# cups-filters +# +################################################################################ + +CUPS_FILTERS_VERSION = 1.28.17 +CUPS_FILTERS_SITE = https://github.com/OpenPrinting/cups-filters/releases/download/$(CUPS_FILTERS_VERSION) +CUPS_FILTERS_LICENSE = GPL-2.0, GPL-2.0+, GPL-3.0, GPL-3.0+, LGPL-2, LGPL-2.1+, MIT, BSD-4-Clause +CUPS_FILTERS_LICENSE_FILES = COPYING +CUPS_FILTERS_CPE_ID_VENDOR = linuxfoundation + +# 0001-beh-backend-Use-execv-instead-of-system-CVE-2023-24805.patch +CUPS_FILTERS_IGNORE_CVES += CVE-2023-24805 + +CUPS_FILTERS_DEPENDENCIES = cups libglib2 lcms2 qpdf fontconfig freetype jpeg + +CUPS_FILTERS_CONF_OPTS = \ + --disable-mutool \ + --disable-foomatic \ + --disable-braille \ + --enable-imagefilters \ + --with-cups-config=$(STAGING_DIR)/usr/bin/cups-config \ + --with-sysroot=$(STAGING_DIR) \ + --with-pdftops=pdftops \ + --with-jpeg \ + --with-test-font-path=/dev/null \ + --without-rcdir + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +CUPS_FILTERS_CONF_OPTS += --with-png +CUPS_FILTERS_DEPENDENCIES += libpng +else +CUPS_FILTERS_CONF_OPTS += --without-png +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +CUPS_FILTERS_CONF_OPTS += --with-tiff +CUPS_FILTERS_DEPENDENCIES += tiff +else +CUPS_FILTERS_CONF_OPTS += --without-tiff +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +CUPS_FILTERS_CONF_OPTS += --enable-dbus +CUPS_FILTERS_DEPENDENCIES += dbus +else +CUPS_FILTERS_CONF_OPTS += --disable-dbus +endif + +ifeq ($(BR2_PACKAGE_AVAHI_LIBAVAHI_CLIENT),y) +CUPS_FILTERS_DEPENDENCIES += avahi +CUPS_FILTERS_CONF_OPTS += --enable-avahi +else +CUPS_FILTERS_CONF_OPTS += --disable-avahi +endif + +ifeq ($(BR2_PACKAGE_GHOSTSCRIPT),y) +CUPS_FILTERS_DEPENDENCIES += ghostscript +CUPS_FILTERS_CONF_OPTS += --enable-ghostscript +else +CUPS_FILTERS_CONF_OPTS += --disable-ghostscript +endif + +ifeq ($(BR2_PACKAGE_IJS),y) +CUPS_FILTERS_DEPENDENCIES += ijs +CUPS_FILTERS_CONF_OPTS += --enable-ijs +else +CUPS_FILTERS_CONF_OPTS += --disable-ijs +endif + +ifeq ($(BR2_PACKAGE_POPPLER),y) +CUPS_FILTERS_DEPENDENCIES += poppler +CUPS_FILTERS_CONF_OPTS += --enable-poppler +else +CUPS_FILTERS_CONF_OPTS += --disable-poppler +endif + +ifeq ($(BR2_PACKAGE_LIBEXIF),y) +CUPS_FILTERS_CONF_OPTS += --enable-exif +CUPS_FILTERS_DEPENDENCIES += libexif +else +CUPS_FILTERS_CONF_OPTS += --disable-exif +endif + +define CUPS_FILTERS_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/cups-filters/S82cups-browsed \ + $(TARGET_DIR)/etc/init.d/S82cups-browsed +endef + +define CUPS_FILTERS_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0755 $(@D)/utils/cups-browsed.service \ + $(TARGET_DIR)/usr/lib/systemd/system/cups-browsed.service +endef + +$(eval $(autotools-package)) diff --git a/package/cups-pk-helper/Config.in b/package/cups-pk-helper/Config.in new file mode 100644 index 00000000..756ac49c --- /dev/null +++ b/package/cups-pk-helper/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_CUPS_PK_HELPER + bool "cups-pk-helper" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # polkit -> c++17 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2, polkit + depends on BR2_USE_WCHAR # libglib2 + depends on !BR2_STATIC_LIBS # polkit -> duktape + depends on !BR2_OPTIMIZE_FAST # polkit -> duktape + depends on BR2_PACKAGE_CUPS + select BR2_PACKAGE_POLKIT + help + cups-pk-helper is a PolicyKit helper to configure cups with + fine-grained privileges. + + https://wiki.freedesktop.org/www/Software/cups-pk-helper/ + +comment "cups-pk-helper support needs a toolchain with threads, wchar, dynamic library, gcc >= 7" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \ + !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +comment "cups-pk-helper can't be built with Optimize for fast" + depends on BR2_OPTIMIZE_FAST diff --git a/package/cups-pk-helper/cups-pk-helper.hash b/package/cups-pk-helper/cups-pk-helper.hash new file mode 100644 index 00000000..75c5a5ff --- /dev/null +++ b/package/cups-pk-helper/cups-pk-helper.hash @@ -0,0 +1,4 @@ +# From https://www.freedesktop.org/software/cups-pk-helper/releases/cups-pk-helper-0.2.7.tar.xz.sha256sum +sha256 66070ddb448fe9fcee76aa26be2ede5a80f85563e3a4afd59d2bfd79fbe2e831 cups-pk-helper-0.2.7.tar.xz +# Locally computed: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/cups-pk-helper/cups-pk-helper.mk b/package/cups-pk-helper/cups-pk-helper.mk new file mode 100644 index 00000000..2e057c2d --- /dev/null +++ b/package/cups-pk-helper/cups-pk-helper.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# cups-pk-helper +# +################################################################################ + +CUPS_PK_HELPER_VERSION = 0.2.7 +CUPS_PK_HELPER_SITE = https://www.freedesktop.org/software/cups-pk-helper/releases +CUPS_PK_HELPER_SOURCE = cups-pk-helper-$(CUPS_PK_HELPER_VERSION).tar.xz +CUPS_PK_HELPER_LICENSE = GPL-2.0+ +CUPS_PK_HELPER_LICENSE_FILES = COPYING +CUPS_PK_HELPER_CPE_ID_VALID = YES +CUPS_PK_HELPER_DEPENDENCIES = cups libglib2 polkit + +$(eval $(meson-package)) diff --git a/package/cups/0001-Remove-man-from-BUILDDIRS-in-configure.patch b/package/cups/0001-Remove-man-from-BUILDDIRS-in-configure.patch new file mode 100644 index 00000000..6b81a93d --- /dev/null +++ b/package/cups/0001-Remove-man-from-BUILDDIRS-in-configure.patch @@ -0,0 +1,33 @@ +From 6bc1d15250841cf17d307cfb4f35c960c23d8797 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sun, 29 May 2016 19:31:50 +0200 +Subject: [PATCH] Remove man from BUILDDIRS in configure + +Signed-off-by: Bernd Kuhls +[Fabrice: updated for 2.3.0] +Signed-off-by: Fabrice Fontaine +[Michael: updated for 2.3.3] +Signed-off-by: Michael Trimarchi +[Angelo: updated for 2.4.0] +Signed-off-by: Angelo Compagnucci +--- + config-scripts/cups-common.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/config-scripts/cups-common.m4 b/config-scripts/cups-common.m4 +index 3a162b6d5..fb629fdfd 100644 +--- a/config-scripts/cups-common.m4 ++++ b/config-scripts/cups-common.m4 +@@ -462,7 +462,7 @@ LIBHEADERS="\$(COREHEADERS) \$(DRIVERHEADERS)" + LIBHEADERSPRIV="\$(COREHEADERSPRIV) \$(DRIVERHEADERSPRIV)" + + AS_CASE(["$COMPONENTS"], [all], [ +- BUILDDIRS="tools filter backend berkeley cgi-bin monitor notifier ppdc scheduler systemv conf data desktop locale man doc examples templates" ++ BUILDDIRS="tools filter backend berkeley cgi-bin monitor notifier ppdc scheduler systemv conf data desktop locale doc examples templates" + ], [core], [ + BUILDDIRS="tools examples locale" + ], [corelite], [ + +-- +2.17.1 + diff --git a/package/cups/0002-Do-not-use-genstrings.patch b/package/cups/0002-Do-not-use-genstrings.patch new file mode 100644 index 00000000..c7d6735b --- /dev/null +++ b/package/cups/0002-Do-not-use-genstrings.patch @@ -0,0 +1,40 @@ +From 193c8d8c55a3478ca5c9e161ce581e5794098c6d Mon Sep 17 00:00:00 2001 +From: Olivier Schonken +Date: Thu, 21 Jan 2016 23:04:49 +0100 +Subject: [PATCH] Do not use genstrings + +Using cross compiled genstrings while cross-compiling will break +compilation. Genstrings is still compiled because some power users +might want to do ppd compilation on their target machine, and for that +they would need to use the native compiled genstrings binary, to +generate a sample.c file for their target + +Signed-off-by: Olivier Schonken +[Thomas: completely remove call to genstrings rather than commenting +it, remove useless and potentially confusing 'echo' before the +genstrings call.] +Signed-off-by: Thomas Petazzoni +[Fabrice: updated for 2.3.0] +Signed-off-by: Fabrice Fontaine +[Michael: updated for 2.3.3] +Signed-off-by: Michael Trimarchi +--- + ppdc/Makefile | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/ppdc/Makefile b/ppdc/Makefile +index 32e2e0b..7b18879 100644 +--- a/ppdc/Makefile ++++ b/ppdc/Makefile +@@ -186,8 +186,6 @@ genstrings: genstrings.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC) \ + $(LD_CXX) $(ARCHFLAGS) $(ALL_LDFLAGS) -o genstrings genstrings.o \ + libcupsppdc.a $(LINKCUPSSTATIC) + $(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@ +- echo Generating localization strings... +- ./genstrings >sample.c + + + # +-- +2.17.1 + diff --git a/package/cups/0003-Sanitize-the-installation-process.patch b/package/cups/0003-Sanitize-the-installation-process.patch new file mode 100644 index 00000000..75a68487 --- /dev/null +++ b/package/cups/0003-Sanitize-the-installation-process.patch @@ -0,0 +1,131 @@ +From e35f809c435c224954a5c7bff3f5729c5b3bc0ba Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 21 Jan 2016 23:21:06 +0100 +Subject: [PATCH] Sanitize the installation process + +The installation process does two things that are not convenient when +cross-compiling: + + - It uses install's -s option to strip binaries, but this option uses + the host strip and not the cross strip, which fails at stripping + binaries. In addition, we do not necessarily want cups to strip its + binaries, we may want to keep the debugging symbols. + + - It enforces ownership (user, group) which isn't possible since + "make install" isn't executed as root when cross-compiling. + + - It installs many files and directories with permissions that + prevent overwriting those files/directories, which meant calling + "make install" twice was failing. + +[Olivier: tweak the patch for 2.2.4 release] + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Olivier Schonken +--- + Makedefs.in | 12 ++++++------ + conf/Makefile | 6 +++--- + notifier/Makefile | 2 +- + scheduler/Makefile | 15 +++++++-------- + 4 files changed, 17 insertions(+), 18 deletions(-) + +diff --git a/Makedefs.in b/Makedefs.in +index 3afef0a..3e4f1bd 100644 +--- a/Makedefs.in ++++ b/Makedefs.in +@@ -40,14 +40,14 @@ SHELL = /bin/sh + # Installation programs... + # + +-INSTALL_BIN = @LIBTOOL_INSTALL@ $(INSTALL) -c -m @CUPS_EXE_FILE_PERM@ @INSTALL_STRIP@ +-INSTALL_COMPDATA = $(INSTALL) -c -m 444 @INSTALL_GZIP@ ++INSTALL_BIN = @LIBTOOL_INSTALL@ $(INSTALL) -c -m 755 ++INSTALL_COMPDATA = $(INSTALL) -c -m 644 @INSTALL_GZIP@ + INSTALL_CONFIG = $(INSTALL) -c -m @CUPS_CONFIG_FILE_PERM@ +-INSTALL_DATA = $(INSTALL) -c -m 444 ++INSTALL_DATA = $(INSTALL) -c -m 644 + INSTALL_DIR = $(INSTALL) -d +-INSTALL_LIB = @LIBTOOL_INSTALL@ $(INSTALL) -c -m @CUPS_EXE_FILE_PERM@ @INSTALL_STRIP@ +-INSTALL_MAN = $(INSTALL) -c -m 444 +-INSTALL_SCRIPT = $(INSTALL) -c -m @CUPS_EXE_FILE_PERM@ ++INSTALL_LIB = @LIBTOOL_INSTALL@ $(INSTALL) -c -m 755 ++INSTALL_MAN = $(INSTALL) -c -m 644 ++INSTALL_SCRIPT = $(INSTALL) -c -m 755 + + # + # Default user, group, and system groups for the scheduler... +diff --git a/conf/Makefile b/conf/Makefile +index 933d7d9..6ac5e19 100644 +--- a/conf/Makefile ++++ b/conf/Makefile +@@ -72,11 +72,11 @@ install: all install-data install-headers install-libs install-exec + install-data: + for file in $(KEEP); do \ + if test -r $(SERVERROOT)/$$file ; then \ +- $(INSTALL_CONFIG) -g $(CUPS_GROUP) $$file $(SERVERROOT)/$$file.N ; \ ++ $(INSTALL_CONFIG) $$file $(SERVERROOT)/$$file.N ; \ + else \ +- $(INSTALL_CONFIG) -g $(CUPS_GROUP) $$file $(SERVERROOT) ; \ ++ $(INSTALL_CONFIG) $$file $(SERVERROOT) ; \ + fi ; \ +- $(INSTALL_CONFIG) -g $(CUPS_GROUP) $$file $(SERVERROOT)/$$file.default; \ ++ $(INSTALL_CONFIG) $$file $(SERVERROOT)/$$file.default; \ + done + $(INSTALL_DIR) -m 755 $(DATADIR)/mime + for file in $(REPLACE); do \ +diff --git a/notifier/Makefile b/notifier/Makefile +index 3206dd0..c34a4d7 100644 +--- a/notifier/Makefile ++++ b/notifier/Makefile +@@ -62,7 +62,7 @@ install: all install-data install-headers install-libs install-exec + # + + install-data: +- $(INSTALL_DIR) -m 775 -g $(CUPS_GROUP) $(CACHEDIR)/rss ++ $(INSTALL_DIR) -m 775 $(CACHEDIR)/rss + + + # +diff --git a/scheduler/Makefile b/scheduler/Makefile +index 251f017..25f2f5f 100644 +--- a/scheduler/Makefile ++++ b/scheduler/Makefile +@@ -146,28 +146,27 @@ install-data: + echo Creating $(SERVERBIN)/driver... + $(INSTALL_DIR) -m 755 $(SERVERBIN)/driver + echo Creating $(SERVERROOT)... +- $(INSTALL_DIR) -m 755 -g $(CUPS_GROUP) $(SERVERROOT) ++ $(INSTALL_DIR) -m 755 $(SERVERROOT) + echo Creating $(SERVERROOT)/ppd... +- $(INSTALL_DIR) -m 755 -g $(CUPS_GROUP) $(SERVERROOT)/ppd ++ $(INSTALL_DIR) -m 755 $(SERVERROOT)/ppd + if test "x`uname`" != xDarwin; then \ + echo Creating $(SERVERROOT)/ssl...; \ +- $(INSTALL_DIR) -m 700 -g $(CUPS_GROUP) $(SERVERROOT)/ssl; \ ++ $(INSTALL_DIR) -m 700 $(SERVERROOT)/ssl; \ + fi + if test "$(STATEDIR)" != "$(SERVERROOT)"; then \ + echo Creating $(STATEDIR)...; \ + $(INSTALL_DIR) -m 755 $(STATEDIR); \ + fi + echo Creating $(STATEDIR)/certs... +- $(INSTALL_DIR) -m 511 -o $(CUPS_USER) -g $(CUPS_PRIMARY_SYSTEM_GROUP) \ +- $(STATEDIR)/certs ++ $(INSTALL_DIR) -m 711 $(STATEDIR)/certs + echo Creating $(LOGDIR)... + $(INSTALL_DIR) -m 755 $(LOGDIR) + echo Creating $(REQUESTS)... +- $(INSTALL_DIR) -m 710 -g $(CUPS_GROUP) $(REQUESTS) ++ $(INSTALL_DIR) -m 710 $(REQUESTS) + echo Creating $(REQUESTS)/tmp... +- $(INSTALL_DIR) -m 1770 -g $(CUPS_GROUP) $(REQUESTS)/tmp ++ $(INSTALL_DIR) -m 1770 $(REQUESTS)/tmp + echo Creating $(CACHEDIR)... +- $(INSTALL_DIR) -m 770 -g $(CUPS_GROUP) $(CACHEDIR) ++ $(INSTALL_DIR) -m 770 $(CACHEDIR) + if test "x$(INITDIR)" != x; then \ + echo Installing init scripts...; \ + $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/init.d; \ +-- +2.6.4 + diff --git a/package/cups/0004-Remove-PIE-flags-from-the-build.patch b/package/cups/0004-Remove-PIE-flags-from-the-build.patch new file mode 100644 index 00000000..c2765dff --- /dev/null +++ b/package/cups/0004-Remove-PIE-flags-from-the-build.patch @@ -0,0 +1,37 @@ +From b341a1e1fce48012fc5bcf39337488fd33210616 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 3 Jul 2016 12:20:21 +0200 +Subject: [PATCH] Remove PIE flags from the build + +Generating a statically linked binary built with PIE requires the +Scrt1.o file, which isn't part of Buildroot uClibc toolchains. To +solve this, we simply disable the PIE flags. + +[olivier tweak patch for 2.2.4] + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Olivier Schonken +[Fabrice: updated for 2.3.0] +Signed-off-by: Fabrice Fontaine +[Michael: updated for 2.3.3] +Signed-off-by: Michael Trimarchi +--- + Makedefs.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makedefs.in b/Makedefs.in +index 5f1d32f..d669ea8 100644 +--- a/Makedefs.in ++++ b/Makedefs.in +@@ -155,7 +155,7 @@ ALL_CXXFLAGS = -I.. -D_CUPS_SOURCE $(CXXFLAGS) \ + $(ONDEMANDFLAGS) $(OPTIONS) + ALL_DSOFLAGS = -L../cups @ARCHFLAGS@ @RELROFLAGS@ $(DSOFLAGS) $(OPTIM) + ALL_LDFLAGS = -L../cups @LDARCHFLAGS@ @RELROFLAGS@ $(LDFLAGS) \ +- @PIEFLAGS@ $(OPTIM) ++ $(OPTIM) + ARCHFLAGS = @ARCHFLAGS@ + ARFLAGS = @ARFLAGS@ + BACKLIBS = @BACKLIBS@ +-- +2.17.1 + diff --git a/package/cups/0005-cups-hash-c-Put-support-for-MacOS-Win-SSL-libs-back.patch b/package/cups/0005-cups-hash-c-Put-support-for-MacOS-Win-SSL-libs-back.patch new file mode 100644 index 00000000..57c6b614 --- /dev/null +++ b/package/cups/0005-cups-hash-c-Put-support-for-MacOS-Win-SSL-libs-back.patch @@ -0,0 +1,349 @@ +From c6cd5e9c10edc68caf6936a3d3274f758e9cd03d Mon Sep 17 00:00:00 2001 +From: Zdenek Dohnal +Date: Tue, 3 Oct 2023 13:59:40 +0200 +Subject: [PATCH] cups/hash.c: Put support for MacOS/Win SSL libs back + +- I mustn't remove their support in patch release - this should happen in +2.5 only. +- I have put back support for several hashes as well - they +should be removed in 2.5. +- restrict usage of second block hashing only if OpenSSL/LibreSSL/GnuTLS + is available + +Upstream: https://github.com/OpenPrinting/cups/commit/c6cd5e9c10edc68caf6936a3d3274f758e9cd03d +Signed-off-by: Fabrice Fontaine +--- + cups/hash.c | 271 +++++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 260 insertions(+), 11 deletions(-) + +diff --git a/cups/hash.c b/cups/hash.c +index 93ca552c8..c447bab4e 100644 +--- a/cups/hash.c ++++ b/cups/hash.c +@@ -12,8 +12,13 @@ + #include "md5-internal.h" + #ifdef HAVE_OPENSSL + # include +-#else // HAVE_GNUTLS ++#elif defined(HAVE_GNUTLS) + # include ++#elif __APPLE__ ++# include ++#elif _WIN32 ++# include ++# include + #endif // HAVE_OPENSSL + + +@@ -193,17 +198,18 @@ hash_data(const char *algorithm, // I - Algorithm + const void *b, // I - Second block or `NULL` for none + size_t blen) // I - Length of second block or `0` for none + { ++#if defined(HAVE_OPENSSL) || defined(HAVE_GNUTLS) + unsigned hashlen; // Length of hash + unsigned char hashtemp[64]; // Temporary hash buffer +-#ifdef HAVE_OPENSSL +- const EVP_MD *md = NULL; // Message digest implementation +- EVP_MD_CTX *ctx; // Context +-#else // HAVE_GNUTLS +- gnutls_digest_algorithm_t alg = GNUTLS_DIG_UNKNOWN; +- // Algorithm +- gnutls_hash_hd_t ctx; // Context +-#endif // HAVE_OPENSSL ++#else ++ if (strcmp(algorithm, "md5") && (b || blen != 0)) ++ { ++ // Second block hashing is not supported without OpenSSL or GnuTLS ++ _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unsupported without GnuTLS or OpenSSL/LibreSSL."), 1); + ++ return (-1); ++ } ++#endif + + if (!strcmp(algorithm, "md5")) + { +@@ -223,6 +229,10 @@ hash_data(const char *algorithm, // I - Algorithm + } + + #ifdef HAVE_OPENSSL ++ const EVP_MD *md = NULL; // Message digest implementation ++ EVP_MD_CTX *ctx; // Context ++ ++ + if (!strcmp(algorithm, "sha")) + { + // SHA-1 +@@ -244,6 +254,14 @@ hash_data(const char *algorithm, // I - Algorithm + { + md = EVP_sha512(); + } ++ else if (!strcmp(algorithm, "sha2-512_224")) ++ { ++ md = EVP_sha512_224(); ++ } ++ else if (!strcmp(algorithm, "sha2-512_256")) ++ { ++ md = EVP_sha512_256(); ++ } + + if (md) + { +@@ -262,7 +280,13 @@ hash_data(const char *algorithm, // I - Algorithm + return ((ssize_t)hashlen); + } + +-#else // HAVE_GNUTLS ++#elif defined(HAVE_GNUTLS) ++ gnutls_digest_algorithm_t alg = GNUTLS_DIG_UNKNOWN; // Algorithm ++ gnutls_hash_hd_t ctx; // Context ++ unsigned char temp[64]; // Temporary hash buffer ++ size_t tempsize = 0; // Truncate to this size? ++ ++ + if (!strcmp(algorithm, "sha")) + { + // SHA-1 +@@ -284,9 +308,32 @@ hash_data(const char *algorithm, // I - Algorithm + { + alg = GNUTLS_DIG_SHA512; + } ++ else if (!strcmp(algorithm, "sha2-512_224")) ++ { ++ alg = GNUTLS_DIG_SHA512; ++ tempsize = 28; ++ } ++ else if (!strcmp(algorithm, "sha2-512_256")) ++ { ++ alg = GNUTLS_DIG_SHA512; ++ tempsize = 32; ++ } + + if (alg != GNUTLS_DIG_UNKNOWN) + { ++ if (tempsize > 0) ++ { ++ // Truncate result to tempsize bytes... ++ ++ if (hashsize < tempsize) ++ goto too_small; ++ ++ gnutls_hash_fast(alg, a, alen, temp); ++ memcpy(hash, temp, tempsize); ++ ++ return ((ssize_t)tempsize); ++ } ++ + hashlen = gnutls_hash_get_len(alg); + + if (hashlen > hashsize) +@@ -302,7 +349,209 @@ hash_data(const char *algorithm, // I - Algorithm + + return ((ssize_t)hashlen); + } +-#endif // HAVE_OPENSSL ++ ++#elif __APPLE__ ++ if (!strcmp(algorithm, "sha")) ++ { ++ // SHA-1... ++ ++ CC_SHA1_CTX ctx; // SHA-1 context ++ ++ if (hashsize < CC_SHA1_DIGEST_LENGTH) ++ goto too_small; ++ ++ CC_SHA1_Init(&ctx); ++ CC_SHA1_Update(&ctx, a, (CC_LONG)alen); ++ CC_SHA1_Final(hash, &ctx); ++ ++ return (CC_SHA1_DIGEST_LENGTH); ++ } ++# ifdef CC_SHA224_DIGEST_LENGTH ++ else if (!strcmp(algorithm, "sha2-224")) ++ { ++ CC_SHA256_CTX ctx; // SHA-224 context ++ ++ if (hashsize < CC_SHA224_DIGEST_LENGTH) ++ goto too_small; ++ ++ CC_SHA224_Init(&ctx); ++ CC_SHA224_Update(&ctx, a, (CC_LONG)alen); ++ CC_SHA224_Final(hash, &ctx); ++ ++ return (CC_SHA224_DIGEST_LENGTH); ++ } ++# endif /* CC_SHA224_DIGEST_LENGTH */ ++ else if (!strcmp(algorithm, "sha2-256")) ++ { ++ CC_SHA256_CTX ctx; // SHA-256 context ++ ++ if (hashsize < CC_SHA256_DIGEST_LENGTH) ++ goto too_small; ++ ++ CC_SHA256_Init(&ctx); ++ CC_SHA256_Update(&ctx, a, (CC_LONG)alen); ++ CC_SHA256_Final(hash, &ctx); ++ ++ return (CC_SHA256_DIGEST_LENGTH); ++ } ++ else if (!strcmp(algorithm, "sha2-384")) ++ { ++ CC_SHA512_CTX ctx; // SHA-384 context ++ ++ if (hashsize < CC_SHA384_DIGEST_LENGTH) ++ goto too_small; ++ ++ CC_SHA384_Init(&ctx); ++ CC_SHA384_Update(&ctx, a, (CC_LONG)alen); ++ CC_SHA384_Final(hash, &ctx); ++ ++ return (CC_SHA384_DIGEST_LENGTH); ++ } ++ else if (!strcmp(algorithm, "sha2-512")) ++ { ++ CC_SHA512_CTX ctx; // SHA-512 context ++ ++ if (hashsize < CC_SHA512_DIGEST_LENGTH) ++ goto too_small; ++ ++ CC_SHA512_Init(&ctx); ++ CC_SHA512_Update(&ctx, a, (CC_LONG)alen); ++ CC_SHA512_Final(hash, &ctx); ++ ++ return (CC_SHA512_DIGEST_LENGTH); ++ } ++# ifdef CC_SHA224_DIGEST_LENGTH ++ else if (!strcmp(algorithm, "sha2-512_224")) ++ { ++ CC_SHA512_CTX ctx; // SHA-512 context ++ unsigned char temp[CC_SHA512_DIGEST_LENGTH]; ++ // SHA-512 hash ++ ++ // SHA2-512 truncated to 224 bits (28 bytes)... ++ ++ if (hashsize < CC_SHA224_DIGEST_LENGTH) ++ goto too_small; ++ ++ CC_SHA512_Init(&ctx); ++ CC_SHA512_Update(&ctx, a, (CC_LONG)alen); ++ CC_SHA512_Final(temp, &ctx); ++ ++ memcpy(hash, temp, CC_SHA224_DIGEST_LENGTH); ++ ++ return (CC_SHA224_DIGEST_LENGTH); ++ } ++# endif // CC_SHA224_DIGEST_LENGTH ++ else if (!strcmp(algorithm, "sha2-512_256")) ++ { ++ CC_SHA512_CTX ctx; // SHA-512 context ++ unsigned char temp[CC_SHA512_DIGEST_LENGTH]; ++ // SHA-512 hash ++ ++ // SHA2-512 truncated to 256 bits (32 bytes)... ++ ++ if (hashsize < CC_SHA256_DIGEST_LENGTH) ++ goto too_small; ++ ++ CC_SHA512_Init(&ctx); ++ CC_SHA512_Update(&ctx, a, (CC_LONG)alen); ++ CC_SHA512_Final(temp, &ctx); ++ ++ memcpy(hash, temp, CC_SHA256_DIGEST_LENGTH); ++ ++ return (CC_SHA256_DIGEST_LENGTH); ++ } ++ ++#elif _WIN32 ++ // Use Windows CNG APIs to perform hashing... ++ BCRYPT_ALG_HANDLE alg; // Algorithm handle ++ LPCWSTR algid = NULL; // Algorithm ID ++ ssize_t hashlen; // Hash length ++ NTSTATUS status; // Status of hash ++ unsigned char temp[64]; // Temporary hash buffer ++ size_t tempsize = 0; // Truncate to this size? ++ ++ ++ if (!strcmp(algorithm, "sha")) ++ { ++ algid = BCRYPT_SHA1_ALGORITHM; ++ hashlen = 20; ++ } ++ else if (!strcmp(algorithm, "sha2-256")) ++ { ++ algid = BCRYPT_SHA256_ALGORITHM; ++ hashlen = 32; ++ } ++ else if (!strcmp(algorithm, "sha2-384")) ++ { ++ algid = BCRYPT_SHA384_ALGORITHM; ++ hashlen = 48; ++ } ++ else if (!strcmp(algorithm, "sha2-512")) ++ { ++ algid = BCRYPT_SHA512_ALGORITHM; ++ hashlen = 64; ++ } ++ else if (!strcmp(algorithm, "sha2-512_224")) ++ { ++ algid = BCRYPT_SHA512_ALGORITHM; ++ hashlen = tempsize = 28; ++ } ++ else if (!strcmp(algorithm, "sha2-512_256")) ++ { ++ algid = BCRYPT_SHA512_ALGORITHM; ++ hashlen = tempsize = 32; ++ } ++ ++ if (algid) ++ { ++ if (hashsize < (size_t)hashlen) ++ goto too_small; ++ ++ if ((status = BCryptOpenAlgorithmProvider(&alg, algid, NULL, 0)) < 0) ++ { ++ DEBUG_printf(("2cupsHashData: BCryptOpenAlgorithmProvider returned %d.", status)); ++ ++ if (status == STATUS_INVALID_PARAMETER) ++ _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad algorithm parameter."), 1); ++ else ++ _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unable to access cryptographic provider."), 1); ++ ++ return (-1); ++ } ++ ++ if (tempsize > 0) ++ { ++ // Do a truncated SHA2-512 hash... ++ status = BCryptHash(alg, NULL, 0, (PUCHAR)a, (ULONG)alen, temp, sizeof(temp)); ++ memcpy(hash, temp, hashlen); ++ } ++ else ++ { ++ // Hash directly to buffer... ++ status = BCryptHash(alg, NULL, 0, (PUCHAR)a, (ULONG)alen, hash, (ULONG)hashlen); ++ } ++ ++ BCryptCloseAlgorithmProvider(alg, 0); ++ ++ if (status < 0) ++ { ++ DEBUG_printf(("2cupsHashData: BCryptHash returned %d.", status)); ++ ++ if (status == STATUS_INVALID_PARAMETER) ++ _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad hashing parameter."), 1); ++ else ++ _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Hashing failed."), 1); ++ ++ return (-1); ++ } ++ ++ return (hashlen); ++ } ++ ++#else ++ if (hashsize < 64) ++ goto too_small; ++#endif // __APPLE__ + + // Unknown hash algorithm... + _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unknown hash algorithm."), 1); diff --git a/package/cups/0006-cups-hash-c-LibreSSL-version-does-not-support-several-hashes.patch b/package/cups/0006-cups-hash-c-LibreSSL-version-does-not-support-several-hashes.patch new file mode 100644 index 00000000..be4c6b46 --- /dev/null +++ b/package/cups/0006-cups-hash-c-LibreSSL-version-does-not-support-several-hashes.patch @@ -0,0 +1,30 @@ +From 0dd97fcaeeb16ed836e8542d75e2396fb1d129d9 Mon Sep 17 00:00:00 2001 +From: Zdenek Dohnal +Date: Tue, 3 Oct 2023 14:39:33 +0200 +Subject: [PATCH] cups/hash.c: LibreSSL version does not support several hashes + +Upstream: https://github.com/OpenPrinting/cups/commit/0dd97fcaeeb16ed836e8542d75e2396fb1d129d9 +Signed-off-by: Fabrice Fontaine +--- + cups/hash.c | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/cups/hash.c b/cups/hash.c +index c447bab4e..5eefa1010 100644 +--- a/cups/hash.c ++++ b/cups/hash.c +@@ -254,14 +254,6 @@ hash_data(const char *algorithm, // I - Algorithm + { + md = EVP_sha512(); + } +- else if (!strcmp(algorithm, "sha2-512_224")) +- { +- md = EVP_sha512_224(); +- } +- else if (!strcmp(algorithm, "sha2-512_256")) +- { +- md = EVP_sha512_256(); +- } + + if (md) + { diff --git a/package/cups/70-usb-printers.rules b/package/cups/70-usb-printers.rules new file mode 100644 index 00000000..67e7f5e9 --- /dev/null +++ b/package/cups/70-usb-printers.rules @@ -0,0 +1,3 @@ +# Allow USB printers in the lp group +# Match rules converted from usblp.c driver's usblp_ids +ACTION=="add", SUBSYSTEM=="usb", ATTR{bInterfaceClass}=="07", ATTR{bInterfaceSubClass}=="01", GROUP="lp" diff --git a/package/cups/Config.in b/package/cups/Config.in new file mode 100644 index 00000000..ad852c09 --- /dev/null +++ b/package/cups/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_CUPS + bool "cups" + # needs libstdcpp for ppdc + depends on BR2_INSTALL_LIBSTDCPP + # needs threads for ippserver + depends on BR2_TOOLCHAIN_HAS_THREADS + # needs fork() + depends on BR2_USE_MMU + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + The Common Unix Printing System + + https://openprinting.github.io/cups + +comment "cups needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/cups/S81cupsd b/package/cups/S81cupsd new file mode 100644 index 00000000..45d0cbcc --- /dev/null +++ b/package/cups/S81cupsd @@ -0,0 +1,48 @@ +#!/bin/sh + +DAEMON="cupsd" +PIDFILE="/var/run/$DAEMON.pid" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/usr/sbin/$DAEMON" \ + -- -C /etc/cups/cupsd.conf -s /etc/cups/cups-files + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/cups/cups.hash b/package/cups/cups.hash new file mode 100644 index 00000000..2d7bbf1a --- /dev/null +++ b/package/cups/cups.hash @@ -0,0 +1,4 @@ +# Locally calculated: +sha256 dd54228dd903526428ce7e37961afaed230ad310788141da75cebaa08362cf6c cups-2.4.7-source.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE +sha256 5320b6e3c252423e4153eb2dd63e57e3b630afb21139f44e43b02d85fe33e279 NOTICE diff --git a/package/cups/cups.mk b/package/cups/cups.mk new file mode 100644 index 00000000..5d474d0f --- /dev/null +++ b/package/cups/cups.mk @@ -0,0 +1,97 @@ +################################################################################ +# +# cups +# +################################################################################ + +CUPS_VERSION = 2.4.7 +CUPS_SOURCE = cups-$(CUPS_VERSION)-source.tar.gz +CUPS_SITE = https://github.com/OpenPrinting/cups/releases/download/v$(CUPS_VERSION) +CUPS_LICENSE = Apache-2.0 with GPL-2.0/LGPL-2.0 exception +CUPS_LICENSE_FILES = LICENSE NOTICE +CUPS_CPE_ID_VENDOR = openprinting +CUPS_SELINUX_MODULES = cups +CUPS_INSTALL_STAGING = YES + +# Using autoconf, not autoheader, so we cannot use AUTORECONF = YES. +define CUPS_RUN_AUTOCONF + cd $(@D); $(AUTOCONF) -f +endef +CUPS_PRE_CONFIGURE_HOOKS += CUPS_RUN_AUTOCONF + +CUPS_CONF_OPTS = \ + --with-docdir=/usr/share/cups/doc-root \ + --disable-gssapi \ + --disable-pam \ + --libdir=/usr/lib \ + --with-cups-user=lp \ + --with-cups-group=lp \ + --with-system-groups="lpadmin sys root" \ + --disable-libpaper \ + --without-rcdir +CUPS_CONFIG_SCRIPTS = cups-config +CUPS_DEPENDENCIES = \ + host-autoconf \ + host-pkgconf \ + $(if $(BR2_PACKAGE_LIBXCRYPT),libxcrypt) \ + $(if $(BR2_PACKAGE_ZLIB),zlib) + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +CUPS_CONF_OPTS += --with-systemd=/usr/lib/systemd/system \ + --with-ondemand=systemd +CUPS_DEPENDENCIES += systemd +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +CUPS_CONF_OPTS += --enable-dbus +CUPS_DEPENDENCIES += dbus +else +CUPS_CONF_OPTS += --disable-dbus +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +CUPS_CONF_OPTS += --with-tls=gnutls +CUPS_DEPENDENCIES += gnutls +else ifeq ($(BR2_PACKAGE_OPENSSL),y) +CUPS_CONF_OPTS += --with-tls=openssl +CUPS_DEPENDENCIES += openssl +else +CUPS_CONF_OPTS += --with-tls=no +endif + +ifeq ($(BR2_PACKAGE_LIBUSB),y) +CUPS_CONF_OPTS += --enable-libusb +CUPS_DEPENDENCIES += libusb +else +CUPS_CONF_OPTS += --disable-libusb +endif + +ifeq ($(BR2_PACKAGE_AVAHI_LIBAVAHI_CLIENT),y) +CUPS_DEPENDENCIES += avahi +CUPS_CONF_OPTS += --with-dnssd=avahi +else +CUPS_CONF_OPTS += --with-dnssd=no +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +define CUPS_INSTALL_UDEV_RULES + $(INSTALL) -D -m 0644 package/cups/70-usb-printers.rules \ + $(TARGET_DIR)/lib/udev/rules.d/70-usb-printers.rules +endef + +CUPS_POST_INSTALL_TARGET_HOOKS += CUPS_INSTALL_UDEV_RULES +endif + +define CUPS_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/cups/S81cupsd \ + $(TARGET_DIR)/etc/init.d/S81cupsd +endef + +# lp user is needed to run cups spooler +# lpadmin group membership grants administrative privileges +define CUPS_USERS + lp -1 lp -1 * /var/spool/lpd /bin/false - lp + - - lpadmin -1 * - - - Printers admin group. +endef + +$(eval $(autotools-package)) diff --git a/package/curlftpfs/0001-fix-CURLOPT_INFILESIZE.patch b/package/curlftpfs/0001-fix-CURLOPT_INFILESIZE.patch new file mode 100644 index 00000000..dc83af01 --- /dev/null +++ b/package/curlftpfs/0001-fix-CURLOPT_INFILESIZE.patch @@ -0,0 +1,13 @@ +Borrowed from the curlftpfs_0.9.2-5 Debian package. + +CURLOPT_INFILESIZE does not support -1 arg. This fix bug #556012. +--- curlftpfs-0.9.2/ftpfs.c.old 2009-12-13 14:12:25.000000000 +0100 ++++ curlftpfs-0.9.2/ftpfs.c 2009-12-13 14:12:32.000000000 +0100 +@@ -503,7 +503,6 @@ + + curl_easy_setopt_or_die(fh->write_conn, CURLOPT_URL, fh->full_path); + curl_easy_setopt_or_die(fh->write_conn, CURLOPT_UPLOAD, 1); +- curl_easy_setopt_or_die(fh->write_conn, CURLOPT_INFILESIZE, -1); + curl_easy_setopt_or_die(fh->write_conn, CURLOPT_READFUNCTION, write_data_bg); + curl_easy_setopt_or_die(fh->write_conn, CURLOPT_READDATA, fh); + curl_easy_setopt_or_die(fh->write_conn, CURLOPT_LOW_SPEED_LIMIT, 1); diff --git a/package/curlftpfs/0002-free_ftpfs_file-memleak-fix.patch b/package/curlftpfs/0002-free_ftpfs_file-memleak-fix.patch new file mode 100644 index 00000000..4966c9dc --- /dev/null +++ b/package/curlftpfs/0002-free_ftpfs_file-memleak-fix.patch @@ -0,0 +1,14 @@ +Borrowed from the curlftpfs_0.9.2-5 Debian package. + +Fix a memory leak. See Bug #587250. +--- a/ftpfs.c 2008-04-30 01:05:47.000000000 +0200 ++++ a/ftpfs.c.slesimple 2010-01-01 22:12:10.000000000 +0100 +@@ -615,6 +615,8 @@ static void free_ftpfs_file(struct ftpfs + sem_destroy(&fh->data_need); + sem_destroy(&fh->data_written); + sem_destroy(&fh->ready); ++ if (fh->buf.size) { buf_free(&fh->buf); } ++ if (fh->stream_buf.size) { buf_free(&fh->stream_buf); } + free(fh); + } + diff --git a/package/curlftpfs/0003-nocache-memleak-fix.patch b/package/curlftpfs/0003-nocache-memleak-fix.patch new file mode 100644 index 00000000..00a4dd64 --- /dev/null +++ b/package/curlftpfs/0003-nocache-memleak-fix.patch @@ -0,0 +1,59 @@ +Borrowed from the curlftpfs_0.9.2-5 Debian package. + +Fix a memory leak when cache is disabled. Closes: #614347. +diff -ur curlftpfs-0.9.2/cache.c curlftpfs-0.9.2-olexat/cache.c +--- curlftpfs-0.9.2/cache.c 2008-04-30 01:03:09.000000000 +0200 ++++ curlftpfs-0.9.2-olexat/cache.c 2011-02-04 16:43:05.000000000 +0100 +@@ -25,7 +25,7 @@ + time_t last_cleaned; + }; + +-static struct cache cache; ++struct cache cache; + + struct node { + struct stat stat; +diff -ur curlftpfs-0.9.2/ftpfs-ls.c curlftpfs-0.9.2-olexat/ftpfs-ls.c +--- curlftpfs-0.9.2/ftpfs-ls.c 2008-04-23 12:55:41.000000000 +0200 ++++ curlftpfs-0.9.2-olexat/ftpfs-ls.c 2011-02-07 17:23:37.000000000 +0100 +@@ -25,6 +25,13 @@ + #include "charset_utils.h" + #include "ftpfs-ls.h" + ++struct cache { ++ int on; ++ char incomplete[]; ++}; ++ ++extern struct cache cache; ++ + static int parse_dir_unix(const char *line, + struct stat *sbuf, + char *file, +@@ -243,8 +256,10 @@ + reallink = g_strdup(link); + } + int linksize = strlen(reallink); +- cache_add_link(full_path, reallink, linksize+1); +- DEBUG(1, "cache_add_link: %s %s\n", full_path, reallink); ++ if (cache.on) { ++ cache_add_link(full_path, reallink, linksize+1); ++ DEBUG(1, "cache_add_link: %s %s\n", full_path, reallink); ++ } + if (linkbuf && linklen) { + if (linksize > linklen) linksize = linklen - 1; + strncpy(linkbuf, reallink, linksize); +@@ -257,8 +272,10 @@ + DEBUG(1, "filler: %s\n", file); + filler(h, file, &stat_buf); + } else { +- DEBUG(1, "cache_add_attr: %s\n", full_path); +- cache_add_attr(full_path, &stat_buf); ++ if (cache.on) { ++ DEBUG(1, "cache_add_attr: %s\n", full_path); ++ cache_add_attr(full_path, &stat_buf); ++ } + } + + DEBUG(2, "comparing %s %s\n", name, file); + diff --git a/package/curlftpfs/0004-fix-musl-build-off-t.patch b/package/curlftpfs/0004-fix-musl-build-off-t.patch new file mode 100644 index 00000000..93352305 --- /dev/null +++ b/package/curlftpfs/0004-fix-musl-build-off-t.patch @@ -0,0 +1,39 @@ +Use off_t instead of __off_t + +__off_t is an internal C library type, which shouldn't be used by +applications. It is not defined by the musl C library, so use the +public off_t type instead. + +Signed-off-by: Thomas Petazzoni + +Index: b/ftpfs.c +=================================================================== +--- a/ftpfs.c ++++ b/ftpfs.c +@@ -687,7 +687,7 @@ + return ftpfs_getattr(path, &sbuf); + } + +-static __off_t test_size(const char* path) ++static off_t test_size(const char* path) + { + struct stat sbuf; + int err = ftpfs_getattr(path, &sbuf); +@@ -950,7 +950,7 @@ + + /* fix openoffice problem, truncating exactly to file length */ + +- __off_t size = (long long int)test_size(path); ++ off_t size = (long long int)test_size(path); + DEBUG(1, "ftpfs_truncate: %s check filesize=%lld\n", path, (long long int)size); + + if (offset == size) +@@ -978,7 +978,7 @@ + } + /* fix openoffice problem, truncating exactly to file length */ + +- __off_t size = test_size(path); ++ off_t size = test_size(path); + DEBUG(1, "ftpfs_ftruncate: %s check filesize=%lld\n", path, (long long int)size); + + if (offset == size) diff --git a/package/curlftpfs/Config.in b/package/curlftpfs/Config.in new file mode 100644 index 00000000..c8c432f2 --- /dev/null +++ b/package/curlftpfs/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_CURLFTPFS + bool "curlftpfs (FUSE)" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libfuse, glib2 + depends on BR2_USE_MMU # libfuse, glib2 + depends on !BR2_STATIC_LIBS # libfuse + select BR2_PACKAGE_LIBFUSE + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBCURL + help + CurlFtpFS is a filesystem for accessing FTP hosts based on + FUSE and libcurl. + + http://curlftpfs.sourceforge.net/ + +comment "curlftpfs 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/package/curlftpfs/curlftpfs.hash b/package/curlftpfs/curlftpfs.hash new file mode 100644 index 00000000..8413c1e1 --- /dev/null +++ b/package/curlftpfs/curlftpfs.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 4eb44739c7078ba0edde177bdd266c4cfb7c621075f47f64c85a06b12b3c6958 curlftpfs-0.9.2.tar.gz +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/package/curlftpfs/curlftpfs.mk b/package/curlftpfs/curlftpfs.mk new file mode 100644 index 00000000..584d01a6 --- /dev/null +++ b/package/curlftpfs/curlftpfs.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# curlftpfs +# +################################################################################ + +CURLFTPFS_VERSION = 0.9.2 +CURLFTPFS_SITE = http://downloads.sourceforge.net/project/curlftpfs/curlftpfs/$(CURLFTPFS_VERSION) +CURLFTPFS_CONF_ENV = ac_cv_path__libcurl_config=$(STAGING_DIR)/usr/bin/curl-config +CURLFTPFS_LICENSE = GPL-2.0 +CURLFTPFS_LICENSE_FILES = COPYING +CURLFTPFS_DEPENDENCIES = \ + libglib2 libfuse openssl libcurl \ + $(TARGET_NLS_DEPENDENCIES) \ + $(if $(BR2_ENABLE_LOCALE),,libiconv) + +$(eval $(autotools-package)) diff --git a/package/curlpp/Config.in b/package/curlpp/Config.in new file mode 100644 index 00000000..a23e5d93 --- /dev/null +++ b/package/curlpp/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_CURLPP + bool "curlpp" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBCURL + help + cURLpp is a C++ wrapper for libcURL. + + http://www.curlpp.org/ + +comment "curlpp needs a toolchain w/ C++, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS diff --git a/package/curlpp/curlpp.hash b/package/curlpp/curlpp.hash new file mode 100644 index 00000000..e4139956 --- /dev/null +++ b/package/curlpp/curlpp.hash @@ -0,0 +1,5 @@ +# Locally computed: +sha256 97e3819bdcffc3e4047b6ac57ca14e04af85380bd93afe314bee9dd5c7f46a0a v0.8.1.tar.gz + +# Hash for license files: +sha256 8b9e3afd4d06ad3c169e788e5187a3e9f4f35671e9a7322f7e74bea9643b5b5a doc/LICENSE diff --git a/package/curlpp/curlpp.mk b/package/curlpp/curlpp.mk new file mode 100644 index 00000000..7528855a --- /dev/null +++ b/package/curlpp/curlpp.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# curlpp +# +################################################################################ + +CURLPP_VERSION = 0.8.1 +CURLPP_SITE = https://github.com/jpbarrette/curlpp/archive +CURLPP_SOURCE = v$(CURLPP_VERSION).tar.gz +CURLPP_LICENSE = MIT +CURLPP_LICENSE_FILES = doc/LICENSE +CURLPP_INSTALL_STAGING = YES +CURLPP_DEPENDENCIES = libcurl + +$(eval $(cmake-package)) diff --git a/package/cutekeyboard/Config.in b/package/cutekeyboard/Config.in new file mode 100644 index 00000000..bd661b0c --- /dev/null +++ b/package/cutekeyboard/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_CUTEKEYBOARD + bool "cutekeyboard" + depends on BR2_PACKAGE_QT5 + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative + select BR2_PACKAGE_QT5DECLARATIVE + select BR2_PACKAGE_QT5DECLARATIVE_QUICK + select BR2_PACKAGE_QT5QUICKCONTROLS2 + help + CuteKeyboard is a Qt virtual keyboard plugin for + embedded applications. + + https://amarula.github.io/cutekeyboard/ + +if BR2_PACKAGE_CUTEKEYBOARD + +config BR2_PACKAGE_CUTEKEYBOARD_EXAMPLES + bool "cutekeyboard examples" + help + Compile also application example + +endif diff --git a/package/cutekeyboard/cutekeyboard.hash b/package/cutekeyboard/cutekeyboard.hash new file mode 100644 index 00000000..3d3ec2f8 --- /dev/null +++ b/package/cutekeyboard/cutekeyboard.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 8cbaddc5fbf479d5e20fc88228e9af5928fa5e588052ee496c2f2efbe2afc510 cutekeyboard-afacc3210b75d7e0de27dcc4c0f2bed0212cc4c7.tar.gz +sha256 bdde6ec2ae2686623c0bb414bfb8bd731b314beff2264c602116ea60dd65964d LICENSE diff --git a/package/cutekeyboard/cutekeyboard.mk b/package/cutekeyboard/cutekeyboard.mk new file mode 100644 index 00000000..a7b3ba7a --- /dev/null +++ b/package/cutekeyboard/cutekeyboard.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# cutekeyboard +# +################################################################################ + +CUTEKEYBOARD_VERSION = afacc3210b75d7e0de27dcc4c0f2bed0212cc4c7 +CUTEKEYBOARD_SITE = $(call github,amarula,cutekeyboard,$(CUTEKEYBOARD_VERSION)) +CUTEKEYBOARD_DEPENDENCIES = qt5declarative qt5quickcontrols2 +CUTEKEYBOARD_INSTALL_STAGING = YES +CUTEKEYBOARD_LICENSE = MIT +CUTEKEYBOARD_LICENSE_FILES = LICENSE + +ifeq ($(BR2_PACKAGE_CUTEKEYBOARD_EXAMPLES),y) +CUTEKEYBOARD_CONF_OPTS += CONFIG+=BUILD_EXAMPLES +endif + +$(eval $(qmake-package)) diff --git a/package/cutelyst/0001-server-CMakeLists.txt-don-t-override-CMAKE_EXE_LINKE.patch b/package/cutelyst/0001-server-CMakeLists.txt-don-t-override-CMAKE_EXE_LINKE.patch new file mode 100644 index 00000000..45b1fcd1 --- /dev/null +++ b/package/cutelyst/0001-server-CMakeLists.txt-don-t-override-CMAKE_EXE_LINKE.patch @@ -0,0 +1,31 @@ +From c347aeb43775109cbc2824b99cb10b1b3440c191 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 17 May 2021 21:27:11 +0200 +Subject: [PATCH] server/CMakeLists.txt: don't override CMAKE_EXE_LINKER_FLAGS + +Don't override CMAKE_EXE_LINKER_FLAGS as this could break the build if +CMAKE_EXE_LINKER_FLAGS is already set by the user (for example to pass +-latomic) + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/cutelyst/cutelyst/pull/312] +--- + wsgi/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/server/CMakeLists.txt b/server/CMakeLists.txt +index ec5689f7..1ed56859 100644 +--- a/wsgi/CMakeLists.txt ++++ b/wsgi/CMakeLists.txt +@@ -95,7 +95,7 @@ install(TARGETS Cutelyst${PROJECT_VERSION_MAJOR}Qt${QT_VERSION_MAJOR}Server + cxx_generalized_initializers + ) + if (JEMALLOC_FOUND) +- set(CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS} " -Wl,--no-as-needed") ++ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--no-as-needed") + target_link_libraries(cutelyst-wsgi2 PRIVATE ${JEMALLOC_LIBRARIES}) + endif() + +-- +2.30.2 + diff --git a/package/cutelyst/Config.in b/package/cutelyst/Config.in new file mode 100644 index 00000000..8eff938d --- /dev/null +++ b/package/cutelyst/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_CUTELYST + bool "cutelyst" + depends on BR2_PACKAGE_QT5 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3 + select BR2_PACKAGE_QT5BASE_GUI + help + A C++ Web Framework built on top of Qt, using + the simple approach of Catalyst (Perl) framework. + + https://cutelyst.org + +comment "cutelyst needs a toolchain w/ C++, gcc >= 4.8, headers >= 3.3" + depends on BR2_PACKAGE_QT5 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3 diff --git a/package/cutelyst/cutelyst.hash b/package/cutelyst/cutelyst.hash new file mode 100644 index 00000000..d35fdcc8 --- /dev/null +++ b/package/cutelyst/cutelyst.hash @@ -0,0 +1,3 @@ +# Locally calculated after checking pgp signature +sha256 b0e3d658a60d68906f7255b78bad64af1aa07cb3b785fbf61629b7355f089baa cutelyst-2.11.0.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/cutelyst/cutelyst.mk b/package/cutelyst/cutelyst.mk new file mode 100644 index 00000000..5313b003 --- /dev/null +++ b/package/cutelyst/cutelyst.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# cutelyst +# +################################################################################ + +CUTELYST_VERSION = 2.11.0 +CUTELYST_SITE = https://github.com/cutelyst/cutelyst/archive/v$(CUTELYST_VERSION) +CUTELYST_INSTALL_STAGING = YES +CUTELYST_SUPPORTS_IN_SOURCE_BUILD = NO +CUTELYST_LICENSE = LGPL-2.1+ +CUTELYST_LICENSE_FILES = COPYING +CUTELYST_DEPENDENCIES = qt5base + +CUTELYST_CONF_OPTS += \ + -DPLUGIN_CSRFPROTECTION=ON \ + -DPLUGIN_VIEW_GRANTLEE=OFF + +# Qt 5.8 needs atomics, which on various architectures are in -latomic +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +CUTELYST_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic +endif + +ifeq ($(BR2_PACKAGE_LIBPWQUALITY),y) +CUTELYST_CONF_OPTS += -DPLUGIN_VALIDATOR_PWQUALITY=ON +CUTELYST_DEPENDENCIES += libpwquality +else +CUTELYST_CONF_OPTS += -DPLUGIN_VALIDATOR_PWQUALITY=OFF +endif + +ifeq ($(BR2_PACKAGE_JEMALLOC),y) +CUTELYST_CONF_OPTS += -DUSE_JEMALLOC=ON +CUTELYST_DEPENDENCIES += jemalloc +else +CUTELYST_CONF_OPTS += -DUSE_JEMALLOC=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/cvs/Config.in b/package/cvs/Config.in new file mode 100644 index 00000000..e8f0606e --- /dev/null +++ b/package/cvs/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_CVS + bool "cvs" + depends on BR2_USE_WCHAR + # needs fork() + depends on BR2_USE_MMU + select BR2_PACKAGE_NCURSES + help + Concurrent Versions System - source code revision control + tools. + + http://www.nongnu.org/cvs/ + +if BR2_PACKAGE_CVS + +config BR2_PACKAGE_CVS_SERVER + bool "server support" + help + Enable cvs server code + +endif + +comment "cvs needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR diff --git a/package/cvs/cvs.hash b/package/cvs/cvs.hash new file mode 100644 index 00000000..7b03a552 --- /dev/null +++ b/package/cvs/cvs.hash @@ -0,0 +1,8 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/c/cvs/cvs_1.12.13-12%2Bsqueeze1.dsc +sha256 b5961c2476b996e5758fa5e22b60af085adca41164cac0d8f68a1d3b49d4e4f1 cvs_1.12.13.orig.tar.gz +sha256 d52a9232d9cf36302a150d782fc7e5b6f92f8115505ae8a7dc6acfc83e809d2f cvs_1.12.13-12+squeeze1.diff.gz + +# Hash for license files, locally computed +sha256 569c5b876327d899cf444b2277fe910128a38ca71d90755fe4125dd44f8ece02 COPYING +sha256 da0e282103fb508894e78db519aab255e36971ce0bc87de585e3b05014b83b1e COPYING.LIB +sha256 ee9a2fbdb626c0ac57fd8e569f357eb2e6d6c80cc6f41efa8bd126d5ea589d72 lib/glob-libc.h diff --git a/package/cvs/cvs.mk b/package/cvs/cvs.mk new file mode 100644 index 00000000..cf9127fc --- /dev/null +++ b/package/cvs/cvs.mk @@ -0,0 +1,58 @@ +################################################################################ +# +# cvs +# +################################################################################ + +CVS_VERSION = 1.12.13 +CVS_SOURCE = cvs_$(CVS_VERSION).orig.tar.gz +CVS_PATCH = cvs_$(CVS_VERSION)-12+squeeze1.diff.gz +CVS_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/c/cvs +CVS_LICENSE = GPL-1.0+, LGPL-2.0+, LGPL-2.1+ (glob) +CVS_LICENSE_FILES = COPYING COPYING.LIB lib/glob-libc.h +CVS_CPE_ID_VENDOR = gnu +CVS_SELINUX_MODULES = apache cvs +CVS_DEPENDENCIES = ncurses + +CVS_CONF_ENV = \ + ac_cv_func_working_mktime=yes \ + cvs_cv_func_printf_ptr=yes + +CVS_CONF_OPTS = \ + --disable-old-info-format-support \ + --with-editor=/bin/vi +ifeq ($(BR2_PACKAGE_CVS_SERVER),y) +CVS_CONF_OPTS += --enable-server +else +CVS_CONF_OPTS += --disable-server +endif +ifeq ($(BR2_PACKAGE_ZLIB),y) +CVS_CONF_OPTS += --with-external-zlib +endif + +define CVS_BZIP_UNPACK + $(BZCAT) $(@D)/cvs-$(CVS_VERSION).tar.bz2 | $(TAR) -C $(BUILD_DIR) $(TAR_OPTIONS) - + rm -f $(@D)/cvs-$(CVS_VERSION).tar.bz2 +endef + +CVS_POST_PATCH_HOOKS += CVS_BZIP_UNPACK + +ifneq ($(CVS_PATCH),) +define CVS_DEBIAN_PATCHES + if [ -d $(@D)/debian/patches ]; then \ + (cd $(@D)/debian/patches && for i in *; \ + do $(SED) 's,^\+\+\+ .*cvs-$(CVS_VERSION)/,+++ cvs-$(CVS_VERSION)/,' $$i; \ + done; \ + ); \ + $(APPLY_PATCHES) $(@D) $(@D)/debian/patches \*; \ + fi +endef +endif + +CVS_POST_PATCH_HOOKS += CVS_DEBIAN_PATCHES + +define CVS_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/src/cvs $(TARGET_DIR)/usr/bin/cvs +endef + +$(eval $(autotools-package)) diff --git a/package/cwiid/0001-wmdemo-fix-linking-by-adding-the-missing-lbluetooth-.patch b/package/cwiid/0001-wmdemo-fix-linking-by-adding-the-missing-lbluetooth-.patch new file mode 100644 index 00000000..857e7452 --- /dev/null +++ b/package/cwiid/0001-wmdemo-fix-linking-by-adding-the-missing-lbluetooth-.patch @@ -0,0 +1,27 @@ +From af6bffb5b8b71e99e0f9bbbd2cf1fbd695a643c2 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sat, 8 Dec 2012 13:32:40 +0100 +Subject: [PATCH] wmdemo: fix linking by adding the missing -lbluetooth to + LDLIBS + +Signed-off-by: Samuel Martin +--- + wmdemo/Makefile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/wmdemo/Makefile.in b/wmdemo/Makefile.in +index 56aed58..1eccc02 100644 +--- a/wmdemo/Makefile.in ++++ b/wmdemo/Makefile.in +@@ -8,7 +8,7 @@ SOURCES = wmdemo.c + + CFLAGS += -I@top_builddir@/libcwiid + LDFLAGS += -L@top_builddir@/libcwiid +-LDLIBS += -lcwiid ++LDLIBS += -lcwiid -lbluetooth + INST_DIR = @bindir@ + + include $(COMMON)/include/app.mak +-- +1.8.5.2 + diff --git a/package/cwiid/0002-configure-make-wmgui-build-optional.patch b/package/cwiid/0002-configure-make-wmgui-build-optional.patch new file mode 100644 index 00000000..49fd5faa --- /dev/null +++ b/package/cwiid/0002-configure-make-wmgui-build-optional.patch @@ -0,0 +1,64 @@ +From dbb578450974db5decc24560da4aeaed838849a1 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Thu, 2 Jan 2014 14:03:07 +0100 +Subject: [PATCH] configure: make wmgui build optional + +So, make gtk-2 and glib2 dependencies optional (only needed by wmgui) + +Signed-off-by: Samuel Martin +--- + Makefile.in | 2 +- + configure.ac | 17 +++++++++++++---- + 2 files changed, 14 insertions(+), 5 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 6d3ac98..3d2fb45 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -3,7 +3,7 @@ + include @top_builddir@/defs.mak + + LIB_DIRS = libcwiid +-BIN_DIRS = wmgui wminput lswm ++BIN_DIRS = @WMGUI@ wminput lswm + DOC_DIRS = man doc + ifdef PYTHON + BIND_DIRS = python +diff --git a/configure.ac b/configure.ac +index 82ca3e1..d146cb6 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -15,6 +15,11 @@ if test "$YACC" != "bison -y"; then + AC_MSG_ERROR([bison not found]) + fi + ++AC_ARG_ENABLE( ++ [wmgui], ++ [AS_HELP_STRING([--disable-wmgui],[Do not build wmgui binary (also drop the gtk-2/glib2 dependency)])], ++ [ENABLE_WMGUI="$enableval"],[ENABLE_WMGUI=yes]) ++ + AC_ARG_WITH( + [python], + [AS_HELP_STRING([--without-python],[compile without python support])], +@@ -98,10 +103,14 @@ else + fi + AC_SUBST(LDCONFIG) + +-pkg_modules="gtk+-2.0 >= 2.0.0 gthread-2.0" +-PKG_CHECK_MODULES([GTK], [$pkg_modules]) +-AC_SUBST(GTK_CFLAGS) +-AC_SUBST(GTK_LIBS) ++AS_IF( ++ [test "x$ENABLE_WMGUI" = xyes], ++ [pkg_modules="gtk+-2.0 >= 2.0.0 gthread-2.0" ; ++ PKG_CHECK_MODULES([GTK], [$pkg_modules]) ++ AC_SUBST(GTK_CFLAGS) ++ AC_SUBST(GTK_LIBS) ++ AC_SUBST(WMGUI, wmgui)] ++) + + AC_OUTPUT( + [Makefile] +-- +1.8.5.2 + diff --git a/package/cwiid/0003-wminput-plugins-led-led.c-fix-build-with-gcc-14.patch b/package/cwiid/0003-wminput-plugins-led-led.c-fix-build-with-gcc-14.patch new file mode 100644 index 00000000..ba812180 --- /dev/null +++ b/package/cwiid/0003-wminput-plugins-led-led.c-fix-build-with-gcc-14.patch @@ -0,0 +1,37 @@ +From 10106fdb4cc833faa3c2fcb980d0a4eb121fe19d Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 23 Jul 2024 10:31:32 +0200 +Subject: [PATCH] wminput/plugins/led/led.c: fix build with gcc >= 14 + +Fix the following build failure with gcc >= 14: + +led.c: In function 'wmplugin_exec': +led.c:86:42: error: assignment to 'struct cwiid_btn_message *' from incompatible pointer type 'struct cwiid_btn_mesg *' [-Wincompatible-pointer-types] + 86 | btn_mesg = &mesg[i].btn_mesg; + | ^ + +Fixes: + - http://autobuild.buildroot.org/results/a3bde74ff2137d088f4261e62930859bfe460cb9 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/abstrakraft/cwiid/pull/47 +--- + wminput/plugins/led/led.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/wminput/plugins/led/led.c b/wminput/plugins/led/led.c +index 93b96d9..591f365 100644 +--- a/wminput/plugins/led/led.c ++++ b/wminput/plugins/led/led.c +@@ -72,7 +72,7 @@ struct wmplugin_data *wmplugin_exec(int mesg_count, union cwiid_mesg mesg[]) + { + int i; + uint8_t button; +- struct cwiid_btn_message *btn_mesg; ++ struct cwiid_btn_mesg *btn_mesg; + + uint8_t led_state = (Led1 ? CWIID_LED1_ON : 0) + | (Led2 ? CWIID_LED2_ON : 0) +-- +2.43.0 + diff --git a/package/cwiid/Config.in b/package/cwiid/Config.in new file mode 100644 index 00000000..44148eb1 --- /dev/null +++ b/package/cwiid/Config.in @@ -0,0 +1,36 @@ +config BR2_PACKAGE_CWIID + bool "cwiid" + depends on !BR2_STATIC_LIBS # bluez5_utils + depends on BR2_USE_WCHAR # bluez5_utils -> libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # bluez5_utils -> dbus, alsa-lib, libglib2 + depends on BR2_USE_MMU # bluez5_utils -> dbus, libglib2 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 # bluez5_utils hid plugin + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # bluez5_utils + select BR2_PACKAGE_BLUEZ5_UTILS + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HID # runtime + help + A collection of Linux tools written in C for interfacing to + the Nintendo Wiimote. + + https://github.com/abstrakraft/cwiid + +if BR2_PACKAGE_CWIID +config BR2_PACKAGE_CWIID_WMGUI + bool "wmgui" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libgtk2 -> pango -> harfbuzz + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libgtk2 -> pango -> harfbuzz + depends on BR2_PACKAGE_XORG7 # libgtk2 + depends on BR2_USE_WCHAR # libgtk2 -> libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libgtk2 -> libglib2 + depends on BR2_USE_MMU # libgtk2 -> libglib2 + depends on BR2_INSTALL_LIBSTDCPP # libgtk2 -> pango + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBGTK2 +endif + +comment "cwiid needs a toolchain w/ dynamic lib, threads, wchar, headers >= 3.18" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 + depends on BR2_USE_MMU diff --git a/package/cwiid/cwiid.hash b/package/cwiid/cwiid.hash new file mode 100644 index 00000000..92b4b215 --- /dev/null +++ b/package/cwiid/cwiid.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 3adf3bf018721dee3c47e12ba4dd71810a239918dce925aa4079cb2a98bca5fe cwiid-fadf11e89b579bcc0336a0692ac15c93785f3f82.tar.gz +# License files, locally calculated +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/package/cwiid/cwiid.mk b/package/cwiid/cwiid.mk new file mode 100644 index 00000000..a11c56c0 --- /dev/null +++ b/package/cwiid/cwiid.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# cwiid +# +################################################################################ + +CWIID_VERSION = fadf11e89b579bcc0336a0692ac15c93785f3f82 +CWIID_SITE = $(call github,abstrakraft,cwiid,$(CWIID_VERSION)) +CWIID_LICENSE = GPL-2.0+ +CWIID_LICENSE_FILES = COPYING + +CWIID_AUTORECONF = YES +CWIID_INSTALL_STAGING = YES + +CWIID_DEPENDENCIES = host-pkgconf host-bison host-flex bluez5_utils + +# Disable python support. This disables the 2 following things: +# - wminput Python plugin support +# - cwiid Python module +CWIID_CONF_OPTS = --without-python --disable-ldconfig + +ifeq ($(BR2_PACKAGE_CWIID_WMGUI),y) +CWIID_DEPENDENCIES += libgtk2 libglib2 +CWIID_CONF_OPTS += --enable-wmgui +else +CWIID_CONF_OPTS += --disable-wmgui +endif + +$(eval $(autotools-package)) diff --git a/package/cxxtest/Config.in b/package/cxxtest/Config.in new file mode 100644 index 00000000..207adab1 --- /dev/null +++ b/package/cxxtest/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_CXXTEST + bool "cxxtest" + depends on BR2_INSTALL_LIBSTDCPP + help + CxxTest is a unit testing framework for C++ + + http://cxxtest.com/ + +comment "cxxtest needs a toolchain w/ C++ support" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/cxxtest/cxxtest.hash b/package/cxxtest/cxxtest.hash new file mode 100644 index 00000000..c24e258f --- /dev/null +++ b/package/cxxtest/cxxtest.hash @@ -0,0 +1,5 @@ +# Locally computed: +sha256 1c154fef91c65dbf1cd4519af7ade70a61d85a923b6e0c0b007dc7f4895cf7d8 cxxtest-4.4.tar.gz + +# Hash for license file: +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 COPYING diff --git a/package/cxxtest/cxxtest.mk b/package/cxxtest/cxxtest.mk new file mode 100644 index 00000000..7d494c8f --- /dev/null +++ b/package/cxxtest/cxxtest.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# cxxtest +# +################################################################################ + +CXXTEST_VERSION = 4.4 +CXXTEST_SITE = https://github.com/CxxTest/cxxtest/releases/download/$(CXXTEST_VERSION) +CXXTEST_LICENSE = LGPL-3.0 +CXXTEST_LICENSE_FILES = COPYING +CXXTEST_INSTALL_STAGING = YES +CXXTEST_INSTALL_TARGET = NO +CXXTEST_DEPENDENCIES = host-cxxtest +HOST_CXXTEST_SETUP_TYPE = setuptools +HOST_CXXTEST_SUBDIR = python + +# Copy CxxTest header files to staging directory +define CXXTEST_INSTALL_STAGING_CMDS + $(INSTALL) -m 755 -d $(STAGING_DIR)/usr/include/cxxtest + $(INSTALL) -m 644 -t $(STAGING_DIR)/usr/include/cxxtest $(@D)/cxxtest/* +endef + +# CxxTest uses python infrastructure as the build system. It consists of two parts: +# 1. cxxtestgen tool to process tests defined in header files to generate C++ source +# files. cxxtestgen is built as a host package, so that it can be used natively. +# 2. A set of header files which are installed in staging directory. This will be +# used in cross-compiling test harness to generate executable which will run on target. + +$(eval $(generic-package)) +$(eval $(host-python-package)) diff --git a/package/czmq/Config.in b/package/czmq/Config.in new file mode 100644 index 00000000..71389fce --- /dev/null +++ b/package/czmq/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_CZMQ + bool "czmq" + depends on BR2_USE_MMU # fork() + depends on BR2_INSTALL_LIBSTDCPP # zeromq + depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq + select BR2_PACKAGE_ZEROMQ + help + High-level C Binding for 0MQ + + http://czmq.zeromq.org/ + +comment "czmq needs a toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) diff --git a/package/czmq/czmq.hash b/package/czmq/czmq.hash new file mode 100644 index 00000000..c2577c67 --- /dev/null +++ b/package/czmq/czmq.hash @@ -0,0 +1,6 @@ +# From https://github.com/zeromq/czmq/releases +md5 471e9ec120fc66a2fe2aae14359e3cfa czmq-4.2.1.tar.gz +sha1 75ced09c143f93fae65238375e3a799c40eaed4c czmq-4.2.1.tar.gz +# Locally calculated +sha256 5d720a204c2a58645d6f7643af15d563a712dad98c9d32c1ed913377daa6ac39 czmq-4.2.1.tar.gz +sha256 1f256ecad192880510e84ad60474eab7589218784b9a50bc7ceee34c2b91f1d5 LICENSE diff --git a/package/czmq/czmq.mk b/package/czmq/czmq.mk new file mode 100644 index 00000000..8ddd9e8f --- /dev/null +++ b/package/czmq/czmq.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# czmq +# +################################################################################ + +CZMQ_VERSION = 4.2.1 +CZMQ_SITE = https://github.com/zeromq/czmq/releases/download/v$(CZMQ_VERSION) + +CZMQ_INSTALL_STAGING = YES +CZMQ_DEPENDENCIES = zeromq host-pkgconf +CZMQ_LICENSE = MPL-2.0 +CZMQ_LICENSE_FILES = LICENSE + +CZMQ_CONF_OPTS = --disable-Werror --without-docs + +$(eval $(autotools-package)) diff --git a/package/dacapo/Config.in b/package/dacapo/Config.in new file mode 100644 index 00000000..02dcab9e --- /dev/null +++ b/package/dacapo/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_DACAPO + bool "dacapo" + depends on BR2_PACKAGE_OPENJDK + help + The DaCapo benchmark suite is intended as a tool for Java + benchmarking by the programming language, memory + management and computer architecture communities. + + http://dacapobench.org/ + +comment "dacapo needs OpenJDK" + depends on !BR2_PACKAGE_OPENJDK diff --git a/package/dacapo/dacapo.hash b/package/dacapo/dacapo.hash new file mode 100644 index 00000000..ba099b72 --- /dev/null +++ b/package/dacapo/dacapo.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 be3db084adcb2867760e1197b3ccf541c3213d918daa19386d8e236648d24be8 dacapo-9.12-MR1-bach.jar +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/dacapo/dacapo.mk b/package/dacapo/dacapo.mk new file mode 100644 index 00000000..3c5df6d2 --- /dev/null +++ b/package/dacapo/dacapo.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# dacapo +# +################################################################################ + +DACAPO_VERSION = 9.12-MR1-bach +DACAPO_SOURCE = dacapo-$(DACAPO_VERSION).jar +DACAPO_SITE = http://sourceforge.net/projects/dacapobench/files/9.12-bach-MR1 +DACAPO_LICENSE = Apache-2.0 +DACAPO_LICENSE_FILES = LICENSE + +define DACAPO_EXTRACT_CMDS + unzip $(DACAPO_DL_DIR)/$(DACAPO_SOURCE) LICENSE -d $(@D) +endef + +define DACAPO_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(DACAPO_DL_DIR)/$(DACAPO_SOURCE) $(TARGET_DIR)/usr/bin/$(DACAPO_SOURCE) +endef + +$(eval $(generic-package)) diff --git a/package/dado/Config.in b/package/dado/Config.in new file mode 100644 index 00000000..fb469f40 --- /dev/null +++ b/package/dado/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_DADO + bool "dado" + help + Database Facilities for LuaSQL. + + http://www.ccpa.puc-rio.br/software/dado/ diff --git a/package/dado/dado.hash b/package/dado/dado.hash new file mode 100644 index 00000000..6bd62c59 --- /dev/null +++ b/package/dado/dado.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 5a10ed7ff7be34ac004d10d6ea62ee8efc2b594c50ffc93e840e7fb7a2e6b4d0 dado-1.8.3-1.src.rock +sha256 141953aa7714e3145a6adfd71d6acbbe377e07ab920bc8ec4039394774da8a6e dado-1.8.3/doc/license.html diff --git a/package/dado/dado.mk b/package/dado/dado.mk new file mode 100644 index 00000000..e4375a3a --- /dev/null +++ b/package/dado/dado.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# dado +# +################################################################################ + +DADO_VERSION = 1.8.3-1 +DADO_LICENSE = MIT +DADO_LICENSE_FILES = $(DADO_SUBDIR)/doc/license.html + +$(eval $(luarocks-package)) diff --git a/package/daemon/Config.in b/package/daemon/Config.in new file mode 100644 index 00000000..b97f8cff --- /dev/null +++ b/package/daemon/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_DAEMON + bool "daemon" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Daemon turns other process into daemons. + + http://www.libslack.org/daemon/ + +comment "daemon needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/daemon/daemon.hash b/package/daemon/daemon.hash new file mode 100644 index 00000000..f1346d26 --- /dev/null +++ b/package/daemon/daemon.hash @@ -0,0 +1,9 @@ +# From http://www.libslack.org/daemon/ +sha256 fa28859ad341cb0a0b012c11c271814f870482013b49f710600321d379887cd1 daemon-0.8.4.tar.gz +# Locally calculated +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE +sha256 34c8c7085e4d3920bfb8143b910d4f99194b9fc3e1cc3442c9b1b46db4382891 COPYING +sha256 8587dc1ea896f33b657d9e57bd3bf03f0c11ce07d041f09e687f87e7a0087b38 LICENSES/LicenseRef-BSD-3-Clause-Almost.txt +sha256 aaf135472f81c5b4a0dca9367e5bb5e9750032b5bebe5442b36e4c0a47430df3 LICENSES/GPL-2.0-or-later.txt +sha256 61778e80a2fd85955b626b29aa2bcf06144c714277bded65633e4a81479d9fb3 LICENSES/LGPL-2.0-or-later.txt +sha256 1aa57d2704f6783460f2750a9f3217d083ed5161eb95438ca43a5674213a7128 LICENSES/LicenseRef-Tatu-Ylonen-Permissive.txt diff --git a/package/daemon/daemon.mk b/package/daemon/daemon.mk new file mode 100644 index 00000000..d7709e03 --- /dev/null +++ b/package/daemon/daemon.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# daemon +# +################################################################################ + +DAEMON_VERSION = 0.8.4 +DAEMON_SITE = http://libslack.org/daemon/download +DAEMON_LICENSE = GPL-2.0+, LGPL-2.0+, BSD-3-Clause, Tatu Ylonen permissive license +DAEMON_LICENSE_FILES = LICENSE COPYING \ + LICENSES/LicenseRef-BSD-3-Clause-Almost.txt \ + LICENSES/GPL-2.0-or-later.txt \ + LICENSES/LGPL-2.0-or-later.txt \ + LICENSES/LicenseRef-Tatu-Ylonen-Permissive.txt + +define DAEMON_CONFIGURE_CMDS + (cd $(@D); ./configure) +endef + +define DAEMON_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define DAEMON_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) DEB_BUILD_OPTIONS=nostrip \ + $(MAKE) PREFIX=$(TARGET_DIR)/usr -C $(@D) \ + install-daemon-bin +endef + +$(eval $(generic-package)) diff --git a/package/dahdi-linux/0001-fix-build-with-32-bits-kernel.patch b/package/dahdi-linux/0001-fix-build-with-32-bits-kernel.patch new file mode 100644 index 00000000..df091496 --- /dev/null +++ b/package/dahdi-linux/0001-fix-build-with-32-bits-kernel.patch @@ -0,0 +1,145 @@ +From aa74fa2fb5acf54bd46ad4c1b10e0a23a2cb3d25 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 4 Nov 2021 18:45:11 +0100 +Subject: [PATCH] fix build with 32-bits kernel + +Use div_s64 or div_s64_rem to fix the following build failure on 32-bits +kernels: + +ERROR: modpost: "__divdi3" [/home/fabrice/buildroot/output/build/dahdi-linux-5c840cf43838e0690873e73409491c392333b3b8/drivers/dahdi/xpp/xpp_usb.ko] undefined! +ERROR: modpost: "__udivdi3" [/home/fabrice/buildroot/output/build/dahdi-linux-5c840cf43838e0690873e73409491c392333b3b8/drivers/dahdi/xpp/xpp_usb.ko] undefined! +ERROR: modpost: "__moddi3" [/home/fabrice/buildroot/output/build/dahdi-linux-5c840cf43838e0690873e73409491c392333b3b8/drivers/dahdi/xpp/xpp.ko] undefined! +ERROR: modpost: "__divdi3" [/home/fabrice/buildroot/output/build/dahdi-linux-5c840cf43838e0690873e73409491c392333b3b8/drivers/dahdi/xpp/xpp.ko] undefined! + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/asterisk/dahdi-linux/pull/32 +--- + drivers/dahdi/xpp/xbus-core.c | 9 ++++++--- + drivers/dahdi/xpp/xbus-pcm.c | 4 ++-- + drivers/dahdi/xpp/xbus-sysfs.c | 2 +- + drivers/dahdi/xpp/xframe_queue.c | 15 ++++++++++----- + drivers/dahdi/xpp/xpp_usb.c | 2 +- + 5 files changed, 20 insertions(+), 12 deletions(-) + +diff --git a/drivers/dahdi/xpp/xbus-core.c b/drivers/dahdi/xpp/xbus-core.c +index fc4ce7b..b1d1fd7 100644 +--- a/drivers/dahdi/xpp/xbus-core.c ++++ b/drivers/dahdi/xpp/xbus-core.c +@@ -1754,11 +1754,14 @@ out: + + static void xbus_fill_proc_queue(struct seq_file *sfile, struct xframe_queue *q) + { ++ s64 msec = 0; ++ s32 rem = 0; ++ ++ msec = div_s64_rem(q->worst_lag_usec, 1000, &rem); + seq_printf(sfile, +- "%-15s: counts %3d, %3d, %3d worst %3d, overflows %3d worst_lag %02lld.%lld ms\n", ++ "%-15s: counts %3d, %3d, %3d worst %3d, overflows %3d worst_lag %02lld.%d ms\n", + q->name, q->steady_state_count, q->count, q->max_count, +- q->worst_count, q->overflows, q->worst_lag_usec / 1000, +- q->worst_lag_usec % 1000); ++ q->worst_count, q->overflows, msec, rem); + xframe_queue_clearstats(q); + } + +diff --git a/drivers/dahdi/xpp/xbus-pcm.c b/drivers/dahdi/xpp/xbus-pcm.c +index 8bb2fe7..e690ce7 100644 +--- a/drivers/dahdi/xpp/xbus-pcm.c ++++ b/drivers/dahdi/xpp/xbus-pcm.c +@@ -129,7 +129,7 @@ static int xpp_ticker_step(struct xpp_ticker *ticker, const ktime_t t) + usec = ktime_us_delta(ticker->last_sample, + ticker->first_sample); + ticker->first_sample = ticker->last_sample; +- ticker->tick_period = usec / ticker->cycle; ++ ticker->tick_period = div_s64(usec, ticker->cycle); + cycled = 1; + } + ticker->count++; +@@ -497,7 +497,7 @@ static void send_drift(xbus_t *xbus, int drift) + XBUS_DBG(SYNC, xbus, + "%sDRIFT adjust %s (%d) (last update %lld seconds ago)\n", + (disable_pll_sync) ? "Fake " : "", msg, drift, +- msec_delta / MSEC_PER_SEC); ++ div_s64(msec_delta, MSEC_PER_SEC)); + if (!disable_pll_sync) + CALL_PROTO(GLOBAL, SYNC_SOURCE, xbus, NULL, SYNC_MODE_PLL, + drift); +diff --git a/drivers/dahdi/xpp/xbus-sysfs.c b/drivers/dahdi/xpp/xbus-sysfs.c +index d8c11dc..35180d9 100644 +--- a/drivers/dahdi/xpp/xbus-sysfs.c ++++ b/drivers/dahdi/xpp/xbus-sysfs.c +@@ -249,7 +249,7 @@ static DEVICE_ATTR_READER(driftinfo_show, dev, buf) + /* + * Calculate lost ticks time + */ +- seconds = ktime_ms_delta(now, di->last_lost_tick) / 1000; ++ seconds = div_s64(ktime_ms_delta(now, di->last_lost_tick), 1000); + minutes = seconds / 60; + seconds = seconds % 60; + hours = minutes / 60; +diff --git a/drivers/dahdi/xpp/xframe_queue.c b/drivers/dahdi/xpp/xframe_queue.c +index e986083..8e5e508 100644 +--- a/drivers/dahdi/xpp/xframe_queue.c ++++ b/drivers/dahdi/xpp/xframe_queue.c +@@ -35,15 +35,18 @@ static void __xframe_dump_queue(struct xframe_queue *q) + int i = 0; + char prefix[30]; + ktime_t now = ktime_get(); ++ s64 msec = 0; ++ s32 rem = 0; + + printk(KERN_DEBUG "%s: dump queue '%s' (first packet in each frame)\n", + THIS_MODULE->name, q->name); + list_for_each_entry_reverse(xframe, &q->head, frame_list) { + xpacket_t *pack = (xpacket_t *)&xframe->packets[0]; + s64 usec = ktime_us_delta(now, xframe->kt_queued); ++ msec = div_s64_rem(usec, 1000, &rem); + +- snprintf(prefix, ARRAY_SIZE(prefix), " %3d> %5lld.%03lld msec", +- i++, usec / 1000, usec % 1000); ++ snprintf(prefix, ARRAY_SIZE(prefix), " %3d> %5lld.%03d msec", ++ i++, msec, rem); + dump_packet(prefix, pack, 1); + } + } +@@ -52,6 +55,8 @@ static bool __xframe_enqueue(struct xframe_queue *q, xframe_t *xframe) + { + int ret = 1; + static int overflow_cnt; ++ s64 msec = 0; ++ s32 rem = 0; + + if (unlikely(q->disabled)) { + ret = 0; +@@ -60,11 +65,11 @@ static bool __xframe_enqueue(struct xframe_queue *q, xframe_t *xframe) + if (q->count >= q->max_count) { + q->overflows++; + if ((overflow_cnt++ % 1000) < 5) { +- NOTICE("Overflow of %-15s: counts %3d, %3d, %3d worst %3d, overflows %3d worst_lag %02lld.%lld ms\n", ++ msec = div_s64_rem(q->worst_lag_usec, 1000, &rem); ++ NOTICE("Overflow of %-15s: counts %3d, %3d, %3d worst %3d, overflows %3d worst_lag %02lld.%d ms\n", + q->name, q->steady_state_count, q->count, + q->max_count, q->worst_count, q->overflows, +- q->worst_lag_usec / 1000, +- q->worst_lag_usec % 1000); ++ msec, rem); + __xframe_dump_queue(q); + } + ret = 0; +diff --git a/drivers/dahdi/xpp/xpp_usb.c b/drivers/dahdi/xpp/xpp_usb.c +index 1a591b1..3741457 100644 +--- a/drivers/dahdi/xpp/xpp_usb.c ++++ b/drivers/dahdi/xpp/xpp_usb.c +@@ -882,7 +882,7 @@ static void xpp_send_callback(struct urb *urb) + usec = 0; /* System clock jumped */ + if (usec > xusb->max_tx_delay) + xusb->max_tx_delay = usec; +- i = usec / USEC_BUCKET; ++ i = div_s64(usec, USEC_BUCKET); + if (i >= NUM_BUCKETS) + i = NUM_BUCKETS - 1; + xusb->usb_tx_delay[i]++; +-- +2.33.0 + diff --git a/package/dahdi-linux/0002-Fix-compilation-issue-for-6-8-y-6-9-y-kernel.patch b/package/dahdi-linux/0002-Fix-compilation-issue-for-6-8-y-6-9-y-kernel.patch new file mode 100644 index 00000000..776d7421 --- /dev/null +++ b/package/dahdi-linux/0002-Fix-compilation-issue-for-6-8-y-6-9-y-kernel.patch @@ -0,0 +1,230 @@ +From 497f11466688d9e76a7b68ffdd2c3859279f5fce Mon Sep 17 00:00:00 2001 +From: Pushkar Singh +Date: Thu, 4 Apr 2024 01:15:01 +0530 +Subject: [PATCH] Fix compilation issue for 6.8.y/6.9.y kernel + +Upstream: https://github.com/asterisk/dahdi-linux/commit/497f11466688d9e76a7b68ffdd2c3859279f5fce +Signed-off-by: Fabrice Fontaine +--- + drivers/dahdi/dahdi-base.c | 40 ++++++++++++++--------------- + drivers/dahdi/dahdi_dynamic.c | 4 +-- + drivers/dahdi/dahdi_dynamic_eth.c | 4 +-- + drivers/dahdi/dahdi_dynamic_ethmf.c | 2 +- + drivers/dahdi/dahdi_transcode.c | 2 +- + drivers/dahdi/xpp/card_global.c | 2 +- + 6 files changed, 27 insertions(+), 27 deletions(-) + +diff --git a/drivers/dahdi/dahdi-base.c b/drivers/dahdi/dahdi-base.c +index b96f72b1..87177a69 100644 +--- a/drivers/dahdi/dahdi-base.c ++++ b/drivers/dahdi/dahdi-base.c +@@ -4359,7 +4359,7 @@ static int dahdi_ioctl_getparams(struct file *file, unsigned long data) + param.pulsebreaktime = chan->pulsebreaktime; + param.pulseaftertime = chan->pulseaftertime; + param.spanno = (chan->span) ? chan->span->spanno : 0; +- strlcpy(param.name, chan->name, sizeof(param.name)); ++ strscpy(param.name, chan->name, sizeof(param.name)); + param.chanpos = chan->chanpos; + param.sigcap = chan->sigcap; + /* Return current law */ +@@ -4447,8 +4447,8 @@ static int dahdi_ioctl_spanstat(struct file *file, unsigned long data) + + spaninfo.spanno = s->spanno; /* put the span # in here */ + spaninfo.totalspans = span_count(); +- strlcpy(spaninfo.desc, s->desc, sizeof(spaninfo.desc)); +- strlcpy(spaninfo.name, s->name, sizeof(spaninfo.name)); ++ strscpy(spaninfo.desc, s->desc, sizeof(spaninfo.desc)); ++ strscpy(spaninfo.name, s->name, sizeof(spaninfo.name)); + spaninfo.alarms = s->alarms; /* get alarm status */ + spaninfo.rxlevel = s->rxlevel; /* get rx level */ + spaninfo.txlevel = s->txlevel; /* get tx level */ +@@ -4475,18 +4475,18 @@ static int dahdi_ioctl_spanstat(struct file *file, unsigned long data) + spaninfo.lineconfig = s->lineconfig; + spaninfo.irq = 0; + spaninfo.linecompat = s->linecompat; +- strlcpy(spaninfo.lboname, dahdi_lboname(s->lbo), ++ strscpy(spaninfo.lboname, dahdi_lboname(s->lbo), + sizeof(spaninfo.lboname)); + if (s->parent->manufacturer) { +- strlcpy(spaninfo.manufacturer, s->parent->manufacturer, ++ strscpy(spaninfo.manufacturer, s->parent->manufacturer, + sizeof(spaninfo.manufacturer)); + } + if (s->parent->devicetype) { +- strlcpy(spaninfo.devicetype, s->parent->devicetype, ++ strscpy(spaninfo.devicetype, s->parent->devicetype, + sizeof(spaninfo.devicetype)); + } + if (s->parent->location) { +- strlcpy(spaninfo.location, s->parent->location, ++ strscpy(spaninfo.location, s->parent->location, + sizeof(spaninfo.location)); + } + if (s->spantype) { +@@ -4505,11 +4505,11 @@ static int dahdi_ioctl_spanstat(struct file *file, unsigned long data) + const char *st = dahdi_spantype2str(s->spantype); + switch (s->spantype) { + case SPANTYPE_DIGITAL_BRI_NT: +- strlcpy(spaninfo.spantype, "NT", ++ strscpy(spaninfo.spantype, "NT", + sizeof(spaninfo.spantype)); + break; + case SPANTYPE_DIGITAL_BRI_TE: +- strlcpy(spaninfo.spantype, "TE", ++ strscpy(spaninfo.spantype, "TE", + sizeof(spaninfo.spantype)); + break; + default: +@@ -4519,7 +4519,7 @@ static int dahdi_ioctl_spanstat(struct file *file, unsigned long data) + * so no backward compatibility for this + * broken interface. + */ +- strlcpy(spaninfo.spantype, st, ++ strscpy(spaninfo.spantype, st, + sizeof(spaninfo.spantype)); + break; + } +@@ -4568,10 +4568,10 @@ static int dahdi_ioctl_spanstat_v1(struct file *file, unsigned long data) + spaninfo_v1.spanno = s->spanno; /* put the span # in here */ + spaninfo_v1.totalspans = 0; + spaninfo_v1.totalspans = span_count(); +- strlcpy(spaninfo_v1.desc, ++ strscpy(spaninfo_v1.desc, + s->desc, + sizeof(spaninfo_v1.desc)); +- strlcpy(spaninfo_v1.name, ++ strscpy(spaninfo_v1.name, + s->name, + sizeof(spaninfo_v1.name)); + spaninfo_v1.alarms = s->alarms; +@@ -4593,25 +4593,25 @@ static int dahdi_ioctl_spanstat_v1(struct file *file, unsigned long data) + spaninfo_v1.lineconfig = s->lineconfig; + spaninfo_v1.irq = 0; + spaninfo_v1.linecompat = s->linecompat; +- strlcpy(spaninfo_v1.lboname, ++ strscpy(spaninfo_v1.lboname, + dahdi_lboname(s->lbo), + sizeof(spaninfo_v1.lboname)); + + if (s->parent->manufacturer) { +- strlcpy(spaninfo_v1.manufacturer, s->parent->manufacturer, ++ strscpy(spaninfo_v1.manufacturer, s->parent->manufacturer, + sizeof(spaninfo_v1.manufacturer)); + } + + if (s->parent->devicetype) { +- strlcpy(spaninfo_v1.devicetype, s->parent->devicetype, ++ strscpy(spaninfo_v1.devicetype, s->parent->devicetype, + sizeof(spaninfo_v1.devicetype)); + } + +- strlcpy(spaninfo_v1.location, s->parent->location, ++ strscpy(spaninfo_v1.location, s->parent->location, + sizeof(spaninfo_v1.location)); + + if (s->spantype) { +- strlcpy(spaninfo_v1.spantype, ++ strscpy(spaninfo_v1.spantype, + dahdi_spantype2str(s->spantype), + sizeof(spaninfo_v1.spantype)); + } +@@ -5285,7 +5285,7 @@ static int dahdi_ioctl_attach_echocan(unsigned long data) + * always use it instead of any configured software + * echocan. This matches the behavior in dahdi 2.4.1.2 + * and earlier releases. */ +- strlcpy(ae.echocan, hwec_def_name, sizeof(ae.echocan)); ++ strscpy(ae.echocan, hwec_def_name, sizeof(ae.echocan)); + + } else if (strcasecmp(ae.echocan, hwec_def_name) != 0) { + chan_dbg(GENERAL, chan, +@@ -5384,7 +5384,7 @@ static int dahdi_ioctl_get_version(unsigned long data) + bool have_hwec = dahdi_any_hwec_available(); + + memset(&vi, 0, sizeof(vi)); +- strlcpy(vi.version, dahdi_version, sizeof(vi.version)); ++ strscpy(vi.version, dahdi_version, sizeof(vi.version)); + spin_lock(&ecfactory_list_lock); + list_for_each_entry(cur, &ecfactory_list, list) { + const char * const ec_name = cur->ec->get_name(NULL); +@@ -5640,7 +5640,7 @@ static int ioctl_dahdi_dial(struct dahdi_chan *chan, unsigned long data) + rv = -EBUSY; + break; + } +- strlcpy(chan->txdialbuf + strlen(chan->txdialbuf), tdo->dialstr, ++ strscpy(chan->txdialbuf + strlen(chan->txdialbuf), tdo->dialstr, + DAHDI_MAX_DTMF_BUF - strlen(chan->txdialbuf)); + if (!chan->dialing) { + chan->dialing = 1; +diff --git a/drivers/dahdi/dahdi_dynamic.c b/drivers/dahdi/dahdi_dynamic.c +index b1df408d..be58aff8 100644 +--- a/drivers/dahdi/dahdi_dynamic.c ++++ b/drivers/dahdi/dahdi_dynamic.c +@@ -622,8 +622,8 @@ static int _create_dynamic(struct dahdi_dynamic_span *dds) + } + + /* Setup parameters properly assuming we're going to be okay. */ +- strlcpy(d->dname, dds->driver, sizeof(d->dname)); +- strlcpy(d->addr, dds->addr, sizeof(d->addr)); ++ strscpy(d->dname, dds->driver, sizeof(d->dname)); ++ strscpy(d->addr, dds->addr, sizeof(d->addr)); + d->timing = dds->timing; + snprintf(d->span.name, sizeof(d->span.name), "DYN/%s/%s", + dds->driver, dds->addr); +diff --git a/drivers/dahdi/dahdi_dynamic_eth.c b/drivers/dahdi/dahdi_dynamic_eth.c +index 0209489b..c7a293dd 100644 +--- a/drivers/dahdi/dahdi_dynamic_eth.c ++++ b/drivers/dahdi/dahdi_dynamic_eth.c +@@ -292,12 +292,12 @@ static int ztdeth_create(struct dahdi_dynamic *dyn, const char *addr) + memset(z, 0, sizeof(struct ztdeth)); + + /* Address should be /[/subaddr] */ +- strlcpy(tmp, addr, sizeof(tmp)); ++ strscpy(tmp, addr, sizeof(tmp)); + tmp2 = strchr(tmp, '/'); + if (tmp2) { + *tmp2 = '\0'; + tmp2++; +- strlcpy(z->ethdev, tmp, sizeof(z->ethdev)); ++ strscpy(z->ethdev, tmp, sizeof(z->ethdev)); + } else { + printk(KERN_NOTICE "Invalid TDMoE address (no device) '%s'\n", addr); + kfree(z); +diff --git a/drivers/dahdi/dahdi_dynamic_ethmf.c b/drivers/dahdi/dahdi_dynamic_ethmf.c +index 73290d8d..f7c067fb 100644 +--- a/drivers/dahdi/dahdi_dynamic_ethmf.c ++++ b/drivers/dahdi/dahdi_dynamic_ethmf.c +@@ -573,7 +573,7 @@ static int ztdethmf_create(struct dahdi_dynamic *dyn, const char *addr) + z->rcvbuf = kmalloc(bufsize, GFP_KERNEL); + + /* Address should be //subaddr */ +- strlcpy(src, addr, sizeof(src)); ++ strscpy(src, addr, sizeof(src)); + /* replace all / with space; otherwise kernel sscanf does not work */ + src_ptr = src; + while (*src_ptr) { +diff --git a/drivers/dahdi/dahdi_transcode.c b/drivers/dahdi/dahdi_transcode.c +index 6021aac2..7645e2f1 100644 +--- a/drivers/dahdi/dahdi_transcode.c ++++ b/drivers/dahdi/dahdi_transcode.c +@@ -329,7 +329,7 @@ static long dahdi_tc_getinfo(unsigned long data) + return -ENOSYS; + } + +- strlcpy(info.name, tc->name, sizeof(info.name)); ++ strscpy(info.name, tc->name, sizeof(info.name)); + info.numchannels = tc->numchannels; + info.srcfmts = tc->srcfmts; + info.dstfmts = tc->dstfmts; +diff --git a/drivers/dahdi/xpp/card_global.c b/drivers/dahdi/xpp/card_global.c +index 9e679bbc..064edbb3 100644 +--- a/drivers/dahdi/xpp/card_global.c ++++ b/drivers/dahdi/xpp/card_global.c +@@ -342,7 +342,7 @@ int parse_chip_command(xpd_t *xpd, char *cmdline) + XBUS_DBG(GENERAL, xbus, "Dropped packet. Disconnected.\n"); + return -EBUSY; + } +- strlcpy(buf, cmdline, MAX_PROC_WRITE); /* Save a copy */ ++ strscpy(buf, cmdline, MAX_PROC_WRITE); /* Save a copy */ + if (buf[0] == '#' || buf[0] == ';') + XPD_DBG(REGS, xpd, "Note: '%s'\n", buf); + if ((p = strchr(buf, '#')) != NULL) /* Truncate comments */ diff --git a/package/dahdi-linux/Config.in b/package/dahdi-linux/Config.in new file mode 100644 index 00000000..b6086fdc --- /dev/null +++ b/package/dahdi-linux/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_DAHDI_LINUX + bool "dahdi-linux" + depends on BR2_LINUX_KERNEL + help + DAHDI (Digium/Asterisk Hardware Device Interface) is the open + source device interface technology used to control Digium and + other legacy telephony interface cards. + + DAHDI Linux is the open source device driver framework used to + interface Asterisk with telephony hardware. + + https://github.com/asterisk/dahdi-linux + +comment "dahdi-linux needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL diff --git a/package/dahdi-linux/dahdi-linux.hash b/package/dahdi-linux/dahdi-linux.hash new file mode 100644 index 00000000..e2508506 --- /dev/null +++ b/package/dahdi-linux/dahdi-linux.hash @@ -0,0 +1,25 @@ +# From http://downloads.asterisk.org/pub/telephony/dahdi-linux/releases/dahdi-linux-3.3.0.sha256 +sha256 f9528a82b5e88c1d92d737efd65bd571bef2cd1b1b44d43b857a76e38e01a7c0 dahdi-linux-3.3.0.tar.gz + +# Firmware files have no upstream hash, so sha56 locally computed +sha256 3ff26cf80555fd7470b43a87c51d03c1db2a75abcd4561d79f69b6c48298e4a1 dahdi-fwload-vpmadt032-1.25.0.tar.gz +sha256 d5b6ab6851e431afcfec2ecc39d95fa88fe3939ffdb2e3d4f28a43cabf30e95b dahdi-fw-a4a-a0017.tar.gz +sha256 e039af8bec36407b74e1dd9ebdd49ba077469eda79d4e6093721ed2836d4536f dahdi-fw-a4b-d001e.tar.gz +sha256 5064f9877b8aec99b19fd57988216fe1a9c0b7c07853dd3b32b5a55ab7b418e6 dahdi-fw-a8a-1d0017.tar.gz +sha256 09a8992786309e025aa60b400a2c7d21226ac9bb6f1b66f562a5e7e9dc892b03 dahdi-fw-a8b-1f001e.tar.gz +sha256 449ab3fd03d55d808e999efb7677cd04de202b92c9fcb039539a7e48a39a80f5 dahdi-fw-hx8-2.06.tar.gz +sha256 7a006073202d67e45f1d5ff1e9c6e8663e6056cef9dc4c5abae86a1018db349c dahdi-fw-oct6114-032-1.05.01.tar.gz +sha256 56bac1f2024c76ecf9b6f40992eeea29a1fbee676bb2a37a058179bacfbb1c91 dahdi-fw-oct6114-064-1.05.01.tar.gz +sha256 e1146749d205c41603b9b76852c3f8104dac233d0025d700db24504d10c99775 dahdi-fw-oct6114-128-1.05.01.tar.gz +sha256 5fe5036a2766cf0e8a968b0c58b700507d86e1cde9296ca437170cc626a9c79c dahdi-fw-oct6114-256-1.05.01.tar.gz +sha256 11dd8d009809e41fc9a3a36766f59ff73d29075eede5b8724331d9a6e5259774 dahdi-fw-tc400m-MR6.12.tar.gz +sha256 511c1966295a20df673bb87af30245f0ad165efd6ccb92b4d8ed535ca7f5ac65 dahdi-fw-te133-7a001e.tar.gz +sha256 99f7c410bf47d2a5ae687d717e51448ce5b52aca902830bf39bffe683150fa2d dahdi-fw-te134-780017.tar.gz +sha256 c8f55d57cc0bf332e8d96cdf9ff6dd0e322f33581e1efc24c2b9a0e0c5eb7ee4 dahdi-fw-te435-13001e.tar.gz +sha256 0980f4a8d191c6872aa27d971758046f0e7827ac161549f2cc1b0eeab0ae9333 dahdi-fw-te436-10017.tar.gz +sha256 5b823e25828e2c1c6548886ad408b2e31dbc8cd17170c52592792d9c754a199c dahdi-fw-te820-1.76.tar.gz +sha256 6b199cf836f150f9cb35f763f0f502fb52cfa2724a449b500429c746973904ad dahdi-fw-vpmoct032-1.12.0.tar.gz + +# License files, locally computed +sha256 fa5fc1d1eec39532ea517518eeefd7b6e3c14341a55e5880a0e2a49eee47a5b7 LICENSE +sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 LICENSE.LGPL diff --git a/package/dahdi-linux/dahdi-linux.mk b/package/dahdi-linux/dahdi-linux.mk new file mode 100644 index 00000000..c688d387 --- /dev/null +++ b/package/dahdi-linux/dahdi-linux.mk @@ -0,0 +1,93 @@ +################################################################################ +# +# dahdi-linux +# +################################################################################ + +DAHDI_LINUX_VERSION = 3.3.0 +DAHDI_LINUX_SITE = \ + http://downloads.asterisk.org/pub/telephony/dahdi-linux/releases + +# We need to download all those firmware blobs ourselves, otherwise +# dahdi-linux will try to download them at install time. +DAHDI_LINUX_FW_SITE = http://downloads.digium.com/pub/telephony/firmware/releases +DAHDI_LINUX_FW_FILES = \ + dahdi-fwload-vpmadt032-1.25.0.tar.gz \ + dahdi-fw-oct6114-032-1.05.01.tar.gz \ + dahdi-fw-oct6114-064-1.05.01.tar.gz \ + dahdi-fw-oct6114-128-1.05.01.tar.gz \ + dahdi-fw-oct6114-256-1.05.01.tar.gz \ + dahdi-fw-tc400m-MR6.12.tar.gz \ + dahdi-fw-hx8-2.06.tar.gz \ + dahdi-fw-vpmoct032-1.12.0.tar.gz \ + dahdi-fw-te820-1.76.tar.gz \ + dahdi-fw-te133-7a001e.tar.gz \ + dahdi-fw-te134-780017.tar.gz \ + dahdi-fw-a8b-1f001e.tar.gz \ + dahdi-fw-a8a-1d0017.tar.gz \ + dahdi-fw-a4b-d001e.tar.gz \ + dahdi-fw-a4a-a0017.tar.gz \ + dahdi-fw-te435-13001e.tar.gz \ + dahdi-fw-te436-10017.tar.gz + +DAHDI_LINUX_EXTRA_DOWNLOADS = \ + $(patsubst %,$(DAHDI_LINUX_FW_SITE)/%,$(DAHDI_LINUX_FW_FILES)) + +# dahdi-linux claims to be GPLv2 with parts LGPLv2.1 (not 'or later'), +# but there are the so-called firmware files (downloaded above) for +# which the license is unclear: the header claims to be GPLv2, the +# 'loader-wrapper' claims to be GPLv2, but there are two so-called +# 'firmware' binary-only .o blobs for which the license is not +# explicited, which look like they end up as part of a kernel module, +# and for which the source is nowhere to be found on the upstream site +# (they are only for x86/x86_64, but we still list them unconditionally). +DAHDI_LINUX_LICENSE = GPL-2.0, LGPL-2.1, unknown (firmware files) +DAHDI_LINUX_LICENSE_FILES = LICENSE LICENSE.LGPL + +DAHDI_LINUX_INSTALL_STAGING = YES + +DAHDI_LINUX_MODULE_SUBDIRS = drivers/dahdi + +DAHDI_LINUX_MODULE_MAKE_OPTS = \ + KSRC=$(LINUX_DIR) \ + KVERS=$(LINUX_VERSION_PROBED) \ + DAHDI_BUILD_ALL=m \ + DAHDI_INCLUDE=$(@D)/include \ + INSTALL_MOD_DIR=dahdi + +define DAHDI_LINUX_EXTRACT_FW + $(foreach f,$(DAHDI_LINUX_FW_FILES),\ + cp $(DAHDI_LINUX_DL_DIR)/$(f) $(@D)/drivers/dahdi/firmware/$(f)$(sep)) +endef +DAHDI_LINUX_POST_EXTRACT_HOOKS += DAHDI_LINUX_EXTRACT_FW + +define DAHDI_LINUX_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_CRC_CCITT) +endef + +# Need to pass the same options as for building the modules, because +# it wants to scan Linux' .config file to check whether some options +# are set or not (like CONFIG_FW_LOADER). +define DAHDI_LINUX_CONFIGURE_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + $(DAHDI_LINUX_MODULE_MAKE_OPTS) \ + prereq +endef + +define DAHDI_LINUX_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + $(DAHDI_LINUX_MODULE_MAKE_OPTS) \ + DESTDIR=$(STAGING_DIR) \ + install-include +endef + +define DAHDI_LINUX_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + $(DAHDI_LINUX_MODULE_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) \ + install-firmware \ + install-xpp-firm +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/dahdi-tools/0001-no-build-docs.patch b/package/dahdi-tools/0001-no-build-docs.patch new file mode 100644 index 00000000..311a129e --- /dev/null +++ b/package/dahdi-tools/0001-no-build-docs.patch @@ -0,0 +1,16 @@ +Do not build the documentation. + +Signed-off-by: "Yann E. MORIN" + +diff -durN dahdi-tools-2.11.0.orig/Makefile.am dahdi-tools-2.11.0/Makefile.am +--- dahdi-tools-2.11.0.orig/Makefile.am 2015-12-22 21:19:12.000000000 +0100 ++++ dahdi-tools-2.11.0/Makefile.am 2016-01-04 23:23:34.201304133 +0100 +@@ -17,7 +17,7 @@ + #-Wformat=2 + endif + +-SUBDIRS = xpp doc hotplug ++SUBDIRS = xpp hotplug + + if PPPD + SUBDIRS += ppp diff --git a/package/dahdi-tools/0002-no-perl-manpages.patch b/package/dahdi-tools/0002-no-perl-manpages.patch new file mode 100644 index 00000000..5f24c819 --- /dev/null +++ b/package/dahdi-tools/0002-no-perl-manpages.patch @@ -0,0 +1,39 @@ +xpp: do not try to install the manpages for the perl tools + +The man pages are generated neither at build time nor at install time, +so the install step fails. + +Just disable them. + +Signed-off-by: "Yann E. MORIN" +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi + +diff -durN dahdi-tools-2.11.0.orig/xpp/Makefile.am dahdi-tools-2.11.0/xpp/Makefile.am +--- dahdi-tools-2.11.0.orig/xpp/Makefile.am 2015-12-22 21:19:12.000000000 +0100 ++++ dahdi-tools-2.11.0/xpp/Makefile.am 2016-01-04 23:56:31.851820973 +0100 +@@ -3,7 +3,6 @@ + + SUBDIRS = + +-man_MANS = + + + # FIXME: try to improve code, so we can use $(PEDANTIC) +@@ -59,7 +58,6 @@ + udevrules_DATA = xpp.rules + + dist_sbin_SCRIPTS = $(perl_scripts) +-man_MANS += $(perl_mans) + CLEANFILES = $(perl_checks) $(perl_mans) + + dracutconfdir = @prefix@/lib/dracut/dracut.conf.d +@@ -150,8 +148,6 @@ + astribank_allow.8 \ + astribank_is_starting.8 + +-man_MANS += $(man_pages) +- + endif + + EXTRA_DIST = \ diff --git a/package/dahdi-tools/Config.in b/package/dahdi-tools/Config.in new file mode 100644 index 00000000..a5f145df --- /dev/null +++ b/package/dahdi-tools/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_DAHDI_TOOLS + bool "dahdi-tools" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_LINUX_KERNEL # dahdi-linux + depends on BR2_USE_MMU # perl + select BR2_PACKAGE_DAHDI_LINUX + select BR2_PACKAGE_PERL + help + DAHDI (Digium/Asterisk Hardware Device Interface) is the open + source device interface technology used to control Digium and + other legacy telephony interface cards. + + DAHDI Tools is a package of utilities for managing and + monitoring DAHDI devices. + + http://www.asterisk.org/downloads/dahdi + +comment "dahdi-tools needs a toolchain w/ threads and a Linux kernel to be built" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_LINUX_KERNEL diff --git a/package/dahdi-tools/dahdi-tools.hash b/package/dahdi-tools/dahdi-tools.hash new file mode 100644 index 00000000..12516172 --- /dev/null +++ b/package/dahdi-tools/dahdi-tools.hash @@ -0,0 +1,6 @@ +# From http://downloads.asterisk.org/pub/telephony/dahdi-tools/releases/dahdi-tools-3.3.0.sha256 +sha256 5706b37df5840ecdc524d4c86df2ad34a31f83db552a8519b4ccf61bac75d2e4 dahdi-tools-3.3.0.tar.gz + +# License files, locally computed +sha256 fa5fc1d1eec39532ea517518eeefd7b6e3c14341a55e5880a0e2a49eee47a5b7 LICENSE +sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 LICENSE.LGPL diff --git a/package/dahdi-tools/dahdi-tools.mk b/package/dahdi-tools/dahdi-tools.mk new file mode 100644 index 00000000..056b2915 --- /dev/null +++ b/package/dahdi-tools/dahdi-tools.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# dahdi-tools +# +################################################################################ + +DAHDI_TOOLS_VERSION = 3.3.0 +DAHDI_TOOLS_SITE = http://downloads.asterisk.org/pub/telephony/dahdi-tools/releases + +DAHDI_TOOLS_LICENSE = GPLv2, LGPLv2.1 +DAHDI_TOOLS_LICENSE_FILES = LICENSE LICENSE.LGPL + +DAHDI_TOOLS_DEPENDENCIES = dahdi-linux perl + +DAHDI_TOOLS_INSTALL_STAGING = YES +DAHDI_TOOLS_AUTORECONF = YES + +# Buildroot globally exports PERL with the value it has on the host, so we need +# to override it with the location where it will be on the target. +DAHDI_TOOLS_CONF_ENV = PERL=/usr/bin/perl + +DAHDI_TOOLS_CONF_OPTS = \ + --without-newt \ + --without-usb \ + --without-pcap \ + --without-libusbx \ + --without-libusb \ + --without-selinux \ + --without-ppp \ + --with-perllib=/usr/lib/perl5/$(PERL_VERSION) + +$(eval $(autotools-package)) diff --git a/package/dante/0001-fix-sparc-compile.patch b/package/dante/0001-fix-sparc-compile.patch new file mode 100644 index 00000000..a23e2e22 --- /dev/null +++ b/package/dante/0001-fix-sparc-compile.patch @@ -0,0 +1,24 @@ +Signal handling for sparc is broken, fix it. + +Signed-off-by: Waldemar Brodkorb + +--- dante-1.4.1.orig/lib/tostring.c 2014-08-21 18:21:50.000000000 +0200 ++++ dante-1.4.1/lib/tostring.c 2016-07-10 10:08:39.785662622 +0200 +@@ -1526,7 +1526,7 @@ signal2string(sig) + return "SIGKILL"; + #endif /* SIGKILL */ + +-#if (defined SIGLOST) && (!defined SIGABRT || SIGLOST != SIGABRT) ++#if (defined SIGLOST) && (!defined SIGABRT || SIGLOST != SIGABRT || SIGLOST != SIGPWR) + case SIGLOST: + return "SIGLOST"; + #endif /* SIGLOST */ +@@ -1551,7 +1551,7 @@ signal2string(sig) + return "SIGPROF"; + #endif /* SIGPROF */ + +-#ifdef SIGPWR ++#if (defined SIGPWR) && SIGPWR != SIGLOST + case SIGPWR: + return "SIGPWR"; + #endif /* SIGPWR */ diff --git a/package/dante/0002-osdep-m4-Remove-getaddrinfo-too-low-checks.patch b/package/dante/0002-osdep-m4-Remove-getaddrinfo-too-low-checks.patch new file mode 100644 index 00000000..af23d46d --- /dev/null +++ b/package/dante/0002-osdep-m4-Remove-getaddrinfo-too-low-checks.patch @@ -0,0 +1,35 @@ +osdep.m4: Remove getaddrinfo() too low checks + +dante runs AC_PREPROC_IFELSE then it fills $ERRVALFILE by running the +following command: + +cat conftest.i | grep gaierrval: >>$2 + +As a result, $ERRVALFILE does not contain the expected values because +the expected value is not on the same line than gaierrval: + + gaierrval: + # 130 "conftest.c" 3 4 + -3 + +So drop these checks + +Signed-off-by: Fabrice Fontaine + +diff -Nuar dante-1.4.2-orig/osdep.m4 dante-1.4.2/osdep.m4 +--- dante-1.4.2-orig/osdep.m4 2019-12-09 21:28:38.936003218 +0100 ++++ dante-1.4.2/osdep.m4 2019-12-09 21:49:48.764019371 +0100 +@@ -956,13 +956,7 @@ + unset UNIQUEVALS UNIQUESYMBOLS + if test -s $ERRVALFILE; then + UNIQUEVALS=`sort $ERRVALFILE | uniq | wc -l | awk '{ print $1 }'` +- if test $UNIQUEVALS -le 1; then +- AC_MSG_FAILURE([error: getaddrinfo() error value count too low]) +- fi + UNIQUESYMBOLS=`cat $ERRVALFILE | wc -l | awk '{ print $1 }'` +- if test $UNIQUESYMBOLS -le 1; then +- AC_MSG_FAILURE([error: getaddrinfo() error symbol count too low]) +- fi + + if test $ERRNOCNT -ne $UNIQUESYMBOLS; then + AC_MSG_FAILURE([internal error: errno symbol count mismatch]) diff --git a/package/dante/Config.in b/package/dante/Config.in new file mode 100644 index 00000000..bd0ddb23 --- /dev/null +++ b/package/dante/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_DANTE + bool "dante" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + Dante is a product developed by Inferno Nettverk A/S. It + consists of a SOCKS server and a SOCKS client, implementing + RFC 1928 and related standards. It is a flexible product + that can be used to provide convenient and secure network + connectivity. + + http://www.inet.no/dante/ diff --git a/package/dante/S50dante b/package/dante/S50dante new file mode 100644 index 00000000..ed51a841 --- /dev/null +++ b/package/dante/S50dante @@ -0,0 +1,40 @@ +#!/bin/sh +# +# Starts dante +# + +# Allow a few customizations from a config file +test -r /etc/default/dante && . /etc/default/dante + +start() { + printf "Starting dante: " + start-stop-daemon -S -q -p /var/run/dante.pid \ + --exec /usr/sbin/sockd -- $DAEMON_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping dante: " + start-stop-daemon -K -q -p /var/run/dante.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/package/dante/dante.hash b/package/dante/dante.hash new file mode 100644 index 00000000..a76018fd --- /dev/null +++ b/package/dante/dante.hash @@ -0,0 +1,5 @@ +# From https://www.inet.no/dante/download.html +sha256 418a065fe1a4b8ace8fbf77c2da269a98f376e7115902e76cda7e741e4846a5d dante-1.4.3.tar.gz + +# Hash for license file +sha256 05e2db26147a8575005f090aada119ea6cb40a4382164929d647f00abef3bdfd LICENSE diff --git a/package/dante/dante.mk b/package/dante/dante.mk new file mode 100644 index 00000000..bae46c5a --- /dev/null +++ b/package/dante/dante.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# dante +# +################################################################################ + +DANTE_VERSION = 1.4.3 +DANTE_SITE = http://www.inet.no/dante/files +DANTE_LICENSE = BSD-3-Clause +DANTE_LICENSE_FILES = LICENSE +DANTE_SELINUX_MODULES = dante + +# Needed so that our libtool patch applies properly +DANTE_AUTORECONF = YES + +DANTE_CONF_OPTS += --disable-client --disable-preload + +ifeq ($(BR2_PACKAGE_LIBMINIUPNPC),y) +DANTE_DEPENDENCIES += libminiupnpc +DANTE_CONF_OPTS += --with-upnp +else +DANTE_CONF_OPTS += --without-upnp +endif + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +DANTE_DEPENDENCIES += libxcrypt +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +DANTE_DEPENDENCIES += linux-pam +DANTE_CONF_OPTS += --with-pam +else +DANTE_CONF_OPTS += --without-pam +endif + +define DANTE_INSTALL_CONFIG_FILE + $(INSTALL) -D -m 644 $(@D)/example/sockd.conf \ + $(TARGET_DIR)/etc/sockd.conf +endef + +DANTE_POST_INSTALL_TARGET_HOOKS += DANTE_INSTALL_CONFIG_FILE + +define DANTE_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/dante/dante.service \ + $(TARGET_DIR)/usr/lib/systemd/system/dante.service +endef + +define DANTE_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/dante/S50dante \ + $(TARGET_DIR)/etc/init.d/S50dante +endef + +$(eval $(autotools-package)) diff --git a/package/dante/dante.service b/package/dante/dante.service new file mode 100644 index 00000000..b783cee3 --- /dev/null +++ b/package/dante/dante.service @@ -0,0 +1,15 @@ +[Unit] +Description=SOCKS v4 and v5 compatible proxy server and client +Requires=network.target +After=network.target + +[Service] +Type=forking +EnvironmentFile=-/etc/default/dante +PIDFile=/run/dante.pid +ExecStart=/usr/sbin/sockd -D -p /run/dante.pid $DAEMON_ARGS +ExecReload=/bin/kill -HUP $MAINPID +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/daq/0001-Fix-build-against-the-musl-C-library.patch b/package/daq/0001-Fix-build-against-the-musl-C-library.patch new file mode 100644 index 00000000..25f2f9c4 --- /dev/null +++ b/package/daq/0001-Fix-build-against-the-musl-C-library.patch @@ -0,0 +1,54 @@ +From 42efa6d76a3b52f35e576a6b941a9afb5b3879e9 Mon Sep 17 00:00:00 2001 +From: Sergio Prado +Date: Tue, 9 Jan 2018 21:39:27 -0200 +Subject: [PATCH] Fix build against the musl C library + +Signed-off-by: Sergio Prado +--- + os-daq-modules/daq_ipfw.c | 2 +- + os-daq-modules/daq_ipq.c | 2 +- + os-daq-modules/daq_nfq.c | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/os-daq-modules/daq_ipfw.c b/os-daq-modules/daq_ipfw.c +index 016beb06ad61..98f67717f646 100644 +--- a/os-daq-modules/daq_ipfw.c ++++ b/os-daq-modules/daq_ipfw.c +@@ -26,7 +26,7 @@ + + #include + #include +-#include ++#include + + #include + #include +diff --git a/os-daq-modules/daq_ipq.c b/os-daq-modules/daq_ipq.c +index 77ec6e9505e5..b15e5cf82af0 100644 +--- a/os-daq-modules/daq_ipq.c ++++ b/os-daq-modules/daq_ipq.c +@@ -27,7 +27,7 @@ + + #include + #include +-#include ++#include + + #include + +diff --git a/os-daq-modules/daq_nfq.c b/os-daq-modules/daq_nfq.c +index 33021c0ec991..0df1e61c74c4 100644 +--- a/os-daq-modules/daq_nfq.c ++++ b/os-daq-modules/daq_nfq.c +@@ -27,7 +27,7 @@ + + #include + #include +-#include ++#include + + #include + +-- +1.9.1 + diff --git a/package/daq/0002-parallel-grammar.patch b/package/daq/0002-parallel-grammar.patch new file mode 100644 index 00000000..ba0e256f --- /dev/null +++ b/package/daq/0002-parallel-grammar.patch @@ -0,0 +1,29 @@ +Fix parallel build + +https://bugs.gentoo.org/673390 + +Downloaded from +https://gitweb.gentoo.org/repo/gentoo.git/tree/net-libs/daq/files/daq-2.0.6-parallel-grammar.patch + +Patch was sent upstream: https://seclists.org/snort/2014/q3/1016 + +Signed-off-by: Bernd Kuhls + +--- a/sfbpf/Makefile.am ++++ b/sfbpf/Makefile.am +@@ -43,13 +43,14 @@ + libsfbpf_la_LDFLAGS = -version-info 0:1:0 @XCCFLAGS@ + + # use of $@ and $< here is a GNU idiom that borks BSD +-sf_scanner.c: $(srcdir)/scanner.l ++sf_scanner.c: $(srcdir)/scanner.l tokdefs.h + @rm -f $(srcdir)/sf_scanner.c + $(srcdir)/runlex.sh $(V_LEX) -osf_scanner.c $(srcdir)/scanner.l + + sf_scanner.o: sf_scanner.c tokdefs.h + + tokdefs.h: sf_grammar.c ++ + sf_grammar.c: $(srcdir)/grammar.y + @rm -f sf_grammar.c tokdefs.h + $(V_YACC) -d $(srcdir)/grammar.y diff --git a/package/daq/Config.in b/package/daq/Config.in new file mode 100644 index 00000000..ad294abd --- /dev/null +++ b/package/daq/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_DAQ + bool "daq" + depends on !BR2_STATIC_LIBS # dlfcn.h + help + DAQ is a Data Acquisition library for packet I/O from the + Snort project. + + https://www.snort.org + +comment "daq needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/daq/daq.hash b/package/daq/daq.hash new file mode 100644 index 00000000..82323ed4 --- /dev/null +++ b/package/daq/daq.hash @@ -0,0 +1,7 @@ +# From https://www.snort.org/downloads/snort/md5s +md5 60e5ddcafb985fac7374884d28f299d1 daq-2.0.7-modified.tar.gz +# Locally computed: +sha256 d1f6709bc5dbddee3fdf170cdc1e49fb926e2031d4869ecf367a8c47efc87279 daq-2.0.7-modified.tar.gz + +# Hash for license files: +sha256 07f28289c09fd9eb5a6ff7bc710ff40363601b1bbc6f3637d8ed412150e90819 COPYING diff --git a/package/daq/daq.mk b/package/daq/daq.mk new file mode 100644 index 00000000..27abd4d2 --- /dev/null +++ b/package/daq/daq.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# daq +# +################################################################################ + +DAQ_VERSION = 2.0.7 +# Upstream re-published a modified archive for the same 2.0.7 version, so change +# its name locally, to avoid conflict with older BR versions which had a hash +# for the previous archive. +DAQ_SOURCE = daq-2.0.7-modified.tar.gz +DAQ_SITE = https://www.snort.org/downloads/snort/daq-$(DAQ_VERSION).tar.gz?buildroot-path=filename +DAQ_LICENSE = GPL-2.0 +DAQ_LICENSE_FILES = COPYING +DAQ_INSTALL_STAGING = YES +DAQ_DEPENDENCIES = host-bison host-flex +# 0002-parallel-grammar.patch +# 2.0.7 needs autoreconf due to configure being older than configure.ac +DAQ_AUTORECONF = YES + +# disable ipq module as libipq is deprecated +DAQ_CONF_OPTS += --disable-ipq-module + +# Set --with-dnet-{includes,libraries} even if ipq and nfq modules are disabled +# otherwise daq will call 'dnet-config --cflags' and 'dnet-config --libs' which +# will result in a build failure if libdnet is installed on host +DAQ_CONF_OPTS += \ + --with-dnet-includes=$(STAGING_DIR)/usr/include \ + --with-dnet-libraries=$(STAGING_DIR)/usr/lib + +ifeq ($(BR2_PACKAGE_LIBDNET)$(BR2_PACKAGE_LIBNETFILTER_QUEUE),yy) +DAQ_DEPENDENCIES += libdnet libnetfilter_queue +DAQ_CONF_OPTS += --enable-nfq-module +else +DAQ_CONF_OPTS += --disable-nfq-module +endif + +ifeq ($(BR2_PACKAGE_LIBPCAP),y) +DAQ_DEPENDENCIES += libpcap +# assume these flags are available to prevent configure from running +# test programs while cross compiling +DAQ_CONF_ENV += \ + ac_cv_lib_pcap_pcap_lib_version=yes \ + daq_cv_libpcap_version_1x=yes +DAQ_CONF_OPTS += --enable-pcap-module +else +DAQ_CONF_OPTS += --disable-pcap-module +endif + +$(eval $(autotools-package)) diff --git a/package/daq3/Config.in b/package/daq3/Config.in new file mode 100644 index 00000000..b53e5508 --- /dev/null +++ b/package/daq3/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_DAQ3 + bool "daq3" + depends on !BR2_PACKAGE_DAQ + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_TOOLCHAIN_HAS_THREADS + help + DAQ is a Data Acquisition library for packet I/O from the + Snort project. + + https://www.snort.org + +comment "daq3 needs a toolchain w/ dynamic library, gcc >= 4.9, threads" + depends on !BR2_PACKAGE_DAQ + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 \ + || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/daq3/daq3.hash b/package/daq3/daq3.hash new file mode 100644 index 00000000..4a24f981 --- /dev/null +++ b/package/daq3/daq3.hash @@ -0,0 +1,6 @@ +# Locally computed: +sha256 c0e8535533720a6df05ab884b7c8f5fb4222f3aac12bdc11829e08c79716d338 daq3-3.0.9.tar.gz + +# Hash for license files: +sha256 64601289158eddad72cb4de72652f9e64dc886942c910b38ddee93ba13b0db26 COPYING +sha256 64601289158eddad72cb4de72652f9e64dc886942c910b38ddee93ba13b0db26 LICENSE diff --git a/package/daq3/daq3.mk b/package/daq3/daq3.mk new file mode 100644 index 00000000..bab957e0 --- /dev/null +++ b/package/daq3/daq3.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# daq3 +# +################################################################################ + +DAQ3_VERSION = 3.0.9 +DAQ3_SITE = $(call github,snort3,libdaq,v$(DAQ3_VERSION)) +DAQ3_LICENSE = GPL-2.0 +DAQ3_LICENSE_FILES = COPYING LICENSE +DAQ3_INSTALL_STAGING = YES +DAQ3_DEPENDENCIES = host-pkgconf +# From git +DAQ3_AUTORECONF = YES + +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +DAQ3_CONF_OPTS += --enable-gwlb-module +else +DAQ3_CONF_OPTS += --disable-gwlb-module +endif + +ifeq ($(BR2_PACKAGE_LIBNETFILTER_QUEUE),y) +DAQ3_DEPENDENCIES += libnetfilter_queue +DAQ3_CONF_OPTS += --enable-nfq-module +else +DAQ3_CONF_OPTS += --disable-nfq-module +endif + +ifeq ($(BR2_PACKAGE_LIBPCAP),y) +DAQ3_DEPENDENCIES += libpcap +DAQ3_CONF_OPTS += --enable-pcap-module +else +DAQ3_CONF_OPTS += --disable-pcap-module +endif + +$(eval $(autotools-package)) diff --git a/package/darkhttpd/Config.in b/package/darkhttpd/Config.in new file mode 100644 index 00000000..a5ab41ae --- /dev/null +++ b/package/darkhttpd/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_DARKHTTPD + bool "darkhttpd" + depends on BR2_USE_MMU # fork() + help + Darkhttpd is a simple, fast HTTP 1.1 web server which only + serves static content. It does not support PHP or CGI. + + The behavior of darkhttpd can be altered by setting some + variables in /etc/default/darkhttpd: + + - DARKHTTPD_ROOT: path to the server document root. + - DARKHTTPD_FLAGS: options to pass to darkhttpd. + + https://unix4lyfe.org/darkhttpd/ diff --git a/package/darkhttpd/S50darkhttpd b/package/darkhttpd/S50darkhttpd new file mode 100644 index 00000000..913439f5 --- /dev/null +++ b/package/darkhttpd/S50darkhttpd @@ -0,0 +1,45 @@ +#!/bin/sh +# +# Starts darkhttpd. +# + +# Allow a few customizations from a config file +test -r /etc/default/darkhttpd && . /etc/default/darkhttpd + +DARKHTTPD_PROG=/usr/sbin/darkhttpd +DARKHTTPD_PIDFILE=/var/run/darkhttpd.pid +DARKHTTPD_ARGS="${DARKHTTPD_ROOT:-/var/www} --log /var/log/darkhttpd.log $DARKHTTPD_FLAGS --chroot --uid nobody --gid www-data" + +start() { + printf "Starting darkhttpd: " + start-stop-daemon -S -q -b -p $DARKHTTPD_PIDFILE -m --exec $DARKHTTPD_PROG -- $DARKHTTPD_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping darkhttpd: " + start-stop-daemon -K -q -p $DARKHTTPD_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}" + exit 1 +esac + +exit $? diff --git a/package/darkhttpd/darkhttpd.hash b/package/darkhttpd/darkhttpd.hash new file mode 100644 index 00000000..84a787ee --- /dev/null +++ b/package/darkhttpd/darkhttpd.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 ea48cedafbf43186f4a8d1afc99b33b671adee99519658446022e6f63bd9eda9 darkhttpd-1.15.tar.gz +sha256 1ecf63e8f84fd60ac7215e04195b9a61dcb47176ea65df26547582027f6c1dee COPYING diff --git a/package/darkhttpd/darkhttpd.mk b/package/darkhttpd/darkhttpd.mk new file mode 100644 index 00000000..956ef404 --- /dev/null +++ b/package/darkhttpd/darkhttpd.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# darkhttpd +# +################################################################################ + +DARKHTTPD_VERSION = 1.15 +DARKHTTPD_SITE = $(call github,emikulic,darkhttpd,v$(DARKHTTPD_VERSION)) +DARKHTTPD_LICENSE = ISC +DARKHTTPD_LICENSE_FILES = COPYING +DARKHTTPD_CPE_ID_VALID = YES + +define DARKHTTPD_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define DARKHTTPD_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/darkhttpd \ + $(TARGET_DIR)/usr/sbin/darkhttpd +endef + +define DARKHTTPD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/darkhttpd/darkhttpd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/darkhttpd.service +endef + +define DARKHTTPD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/darkhttpd/S50darkhttpd \ + $(TARGET_DIR)/etc/init.d/S50darkhttpd +endef + +$(eval $(generic-package)) diff --git a/package/darkhttpd/darkhttpd.service b/package/darkhttpd/darkhttpd.service new file mode 100644 index 00000000..17abd98c --- /dev/null +++ b/package/darkhttpd/darkhttpd.service @@ -0,0 +1,11 @@ +[Unit] +Description=Darkhttpd Web Server +After=syslog.target network.target auditd.service + +[Service] +Environment="DARKHTTPD_ROOT=/var/www" +EnvironmentFile=-/etc/default/darkhttpd +ExecStart=/usr/sbin/darkhttpd $DARKHTTPD_ROOT $DARKHTTPD_FLAGS --chroot --uid nobody --gid www-data + +[Install] +WantedBy=multi-user.target diff --git a/package/dash/0001-configure.ac-drop-Wl-fatal-warnings.patch b/package/dash/0001-configure.ac-drop-Wl-fatal-warnings.patch new file mode 100644 index 00000000..eaa5d6cc --- /dev/null +++ b/package/dash/0001-configure.ac-drop-Wl-fatal-warnings.patch @@ -0,0 +1,45 @@ +From 7d07f683b83ef9fbdf258ce61b022b32f06f253a Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 16 Feb 2024 17:26:28 +0100 +Subject: [PATCH] configure.ac: drop -Wl,--fatal-warnings + +Drop -Wl,--fatal-warnings with --enable-static to avoid the following +static build failure: + +configure:4778: checking for strtod +configure:4778: /home/autobuild/autobuild/instance-8/output-1/host/bin/powerpc-buildroot-linux-uclibcspe-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -mabi=spe -mfloat-gprs=single -Wa,-me500 -Os -g0 -static -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -static -Wl,--fatal-warnings conftest.c >&5 +/home/autobuild/autobuild/instance-8/output-1/host/lib/gcc/powerpc-buildroot-linux-uclibcspe/8.4.0/../../../../powerpc-buildroot-linux-uclibcspe/bin/ld: warning: conftest has a LOAD segment with RWX permissions +collect2: error: ld returned 1 exit status + +[...] + +In file included from arith_yylex.c:44: +system.h:74:22: error: static declaration of 'strtod' follows non-static declaration + static inline double strtod(const char *nptr, char **endptr) + ^~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/a54fdc7d1b94beb47203373ae35b08d9cea8d42c + +Signed-off-by: Fabrice Fontaine +Upstream: https://lore.kernel.org/dash/20240216163319.860768-1-fontaine.fabrice@gmail.com +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 5524650..6993364 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -34,7 +34,7 @@ fi + AC_ARG_ENABLE(static, AS_HELP_STRING(--enable-static, \ + [Build statical linked program])) + if test "$enable_static" = "yes"; then +- export LDFLAGS="-static -Wl,--fatal-warnings" ++ export LDFLAGS="-static" + fi + + AC_ARG_ENABLE(fnmatch, AS_HELP_STRING(--disable-fnmatch, \ +-- +2.43.0 + diff --git a/package/dash/Config.in b/package/dash/Config.in new file mode 100644 index 00000000..b816ac78 --- /dev/null +++ b/package/dash/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_DASH + bool "dash" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + DASH is a POSIX-compliant implementation of /bin/sh that + aims to be as small as possible. It does this without + sacrificing speed where possible. In fact, it is + significantly faster than bash (the GNU Bourne-Again SHell) + for most tasks. + + http://gondor.apana.org.au/~herbert/dash diff --git a/package/dash/dash.hash b/package/dash/dash.hash new file mode 100644 index 00000000..8ae8a771 --- /dev/null +++ b/package/dash/dash.hash @@ -0,0 +1,4 @@ +# From http://gondor.apana.org.au/~herbert/dash/files/dash-0.5.12.tar.gz.sha512sum +sha512 13bd262be0089260cbd13530a9cf34690c0abeb2f1920eb5e61be7951b716f9f335b86279d425dbfae56cbd49231a8fdffdff70601a5177da3d543be6fc5eb17 dash-0.5.12.tar.gz +# Locally calculated +sha256 254a7894923ff62e69184a991dcbccae97edee58a1105e8efbe78caf10595d72 COPYING diff --git a/package/dash/dash.mk b/package/dash/dash.mk new file mode 100644 index 00000000..f030e4ec --- /dev/null +++ b/package/dash/dash.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# dash +# +################################################################################ + +DASH_VERSION = 0.5.12 +DASH_SITE = http://gondor.apana.org.au/~herbert/dash/files +DASH_LICENSE = BSD-3-Clause, GPL-2.0+ (mksignames.c) +DASH_LICENSE_FILES = COPYING +# We're patching configure.ac +DASH_AUTORECONF = YES + +# dash does not build in parallel +DASH_MAKE = $(MAKE1) + +ifeq ($(BR2_PACKAGE_LIBEDIT),y) +DASH_DEPENDENCIES += libedit host-pkgconf +DASH_CONF_OPTS += --with-libedit +DASH_CONF_ENV += LIBS=`pkg-config --libs libedit` + +# Enable line editing, Emacs style +define DASH_INSTALL_PROFILE + mkdir -p $(TARGET_DIR)/etc/profile.d + echo 'set -E' > $(TARGET_DIR)/etc/profile.d/dash.sh +endef +DASH_POST_INSTALL_TARGET_HOOKS += DASH_INSTALL_PROFILE +else +DASH_CONF_OPTS += --without-libedit +endif + +ifeq ($(BR2_STATIC_LIBS),) +DASH_CONF_OPTS += --disable-static +endif + +define DASH_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/src/dash $(TARGET_DIR)/bin/dash +endef + +# Add /bin/dash to /etc/shells otherwise some login tools like dropbear +# can reject the user connection. See man shells. +define DASH_ADD_DASH_TO_SHELLS + grep -qsE '^/bin/dash$$' $(TARGET_DIR)/etc/shells \ + || echo "/bin/dash" >> $(TARGET_DIR)/etc/shells +endef +DASH_TARGET_FINALIZE_HOOKS += DASH_ADD_DASH_TO_SHELLS + +$(eval $(autotools-package)) diff --git a/package/datatables-buttons/Config.in b/package/datatables-buttons/Config.in new file mode 100644 index 00000000..515038eb --- /dev/null +++ b/package/datatables-buttons/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_DATATABLES_BUTTONS + bool "datatables-buttons" + depends on BR2_PACKAGE_DATATABLES + select BR2_PACKAGE_JSZIP + help + The Buttons library for DataTables provides a framework with + common options and API that can be used with DataTables, but + is also very extensible, recognising that you will likely want + to use buttons which perform an action unique to your + applications. + + https://datatables.net/extensions/buttons diff --git a/package/datatables-buttons/datatables-buttons.hash b/package/datatables-buttons/datatables-buttons.hash new file mode 100644 index 00000000..fdbbe5fa --- /dev/null +++ b/package/datatables-buttons/datatables-buttons.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 427632c0245f488328edab83b53294545744c8de621a5eaa9dd3d257d7ed7775 Buttons-1.6.1.zip +sha256 21fa7cbc3c00bcad1e0f3417d465e702bd470d7dc446a6deff80c8fc5eda9148 License.txt diff --git a/package/datatables-buttons/datatables-buttons.mk b/package/datatables-buttons/datatables-buttons.mk new file mode 100644 index 00000000..a08be058 --- /dev/null +++ b/package/datatables-buttons/datatables-buttons.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# datatables-buttons +# +################################################################################ + +DATATABLES_BUTTONS_VERSION = 1.6.1 +DATATABLES_BUTTONS_SITE = https://datatables.net/releases +DATATABLES_BUTTONS_SOURCE = Buttons-$(DATATABLES_BUTTONS_VERSION).zip +DATATABLES_BUTTONS_LICENSE = MIT +DATATABLES_BUTTONS_LICENSE_FILES = License.txt + +define DATATABLES_BUTTONS_EXTRACT_CMDS + $(UNZIP) $(DATATABLES_BUTTONS_DL_DIR)/$(DATATABLES_BUTTONS_SOURCE) -d $(@D) + mv $(@D)/Buttons-$(DATATABLES_BUTTONS_VERSION)/* $(@D) + rmdir $(@D)/Buttons-$(DATATABLES_BUTTONS_VERSION) +endef + +define DATATABLES_BUTTONS_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -d $(TARGET_DIR)/var/www/datatables-buttons/css $(TARGET_DIR)/var/www/datatables-buttons/js + $(INSTALL) -m 0644 -t $(TARGET_DIR)/var/www/datatables-buttons/css $(@D)/css/*.min.css + $(INSTALL) -m 0644 -t $(TARGET_DIR)/var/www/datatables-buttons/js $(@D)/js/*.min.js +endef + +$(eval $(generic-package)) diff --git a/package/datatables-fixedcolumns/Config.in b/package/datatables-fixedcolumns/Config.in new file mode 100644 index 00000000..4d2e5ea0 --- /dev/null +++ b/package/datatables-fixedcolumns/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_DATATABLES_FIXEDCOLUMNS + bool "datatables-fixedcolumns" + depends on BR2_PACKAGE_DATATABLES + help + When making use of DataTables' x-axis scrolling feature + (scrollX), you may wish to fix the left or right most columns + in place. This extension for DataTables provides exactly this + option. + + https://datatables.net/extensions/fixedcolumns diff --git a/package/datatables-fixedcolumns/datatables-fixedcolumns.hash b/package/datatables-fixedcolumns/datatables-fixedcolumns.hash new file mode 100644 index 00000000..7bd5697d --- /dev/null +++ b/package/datatables-fixedcolumns/datatables-fixedcolumns.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 53a7b20ea9dbb6498137cb7260bde8605989ec578e4b71787f5ebc4ef9910bd9 FixedColumns-3.3.0.zip +sha256 e8e92f97216f9ea00cb2735b933a91ec8e3869bed37b6d63a90f76f41508f2de License.txt diff --git a/package/datatables-fixedcolumns/datatables-fixedcolumns.mk b/package/datatables-fixedcolumns/datatables-fixedcolumns.mk new file mode 100644 index 00000000..33174e10 --- /dev/null +++ b/package/datatables-fixedcolumns/datatables-fixedcolumns.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# datatables-fixedcolumns +# +################################################################################ + +DATATABLES_FIXEDCOLUMNS_VERSION = 3.3.0 +DATATABLES_FIXEDCOLUMNS_SITE = https://datatables.net/releases +DATATABLES_FIXEDCOLUMNS_SOURCE = FixedColumns-$(DATATABLES_FIXEDCOLUMNS_VERSION).zip +DATATABLES_FIXEDCOLUMNS_LICENSE = MIT +DATATABLES_FIXEDCOLUMNS_LICENSE_FILES = License.txt + +define DATATABLES_FIXEDCOLUMNS_EXTRACT_CMDS + $(UNZIP) $(DATATABLES_FIXEDCOLUMNS_DL_DIR)/$(DATATABLES_FIXEDCOLUMNS_SOURCE) -d $(@D) + mv $(@D)/FixedColumns-$(DATATABLES_FIXEDCOLUMNS_VERSION)/* $(@D) + rmdir $(@D)/FixedColumns-$(DATATABLES_FIXEDCOLUMNS_VERSION) +endef + +define DATATABLES_FIXEDCOLUMNS_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -d $(TARGET_DIR)/var/www/datatables-fixedcolumns/css $(TARGET_DIR)/var/www/datatables-fixedcolumns/js + $(INSTALL) -m 0644 -t $(TARGET_DIR)/var/www/datatables-fixedcolumns/css $(@D)/css/*.min.css + $(INSTALL) -m 0644 -t $(TARGET_DIR)/var/www/datatables-fixedcolumns/js $(@D)/js/*.min.js +endef + +$(eval $(generic-package)) diff --git a/package/datatables-responsive/Config.in b/package/datatables-responsive/Config.in new file mode 100644 index 00000000..085824af --- /dev/null +++ b/package/datatables-responsive/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_DATATABLES_RESPONSIVE + bool "datatables-responsive" + depends on BR2_PACKAGE_DATATABLES + help + In the modern world of responsive web design tables can often + cause a particular problem for designers due to their row + based layout. Responsive is an extension for DataTables that + resolves that problem by optimising the table's layout for + different screen sizes through the dynamic insertion and + removal of columns from the table. + + https://datatables.net/extensions/responsive diff --git a/package/datatables-responsive/datatables-responsive.hash b/package/datatables-responsive/datatables-responsive.hash new file mode 100644 index 00000000..df133f04 --- /dev/null +++ b/package/datatables-responsive/datatables-responsive.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 47caf3b753dd2c537b8834816eaf38c4df214cb4e6a97144e0de4cf82ad24d02 Responsive-2.2.3.zip +sha256 da4e1020ae97c095a14d7830c1a8a793e080c062e22d749ecd3fc3c075673dbf License.txt diff --git a/package/datatables-responsive/datatables-responsive.mk b/package/datatables-responsive/datatables-responsive.mk new file mode 100644 index 00000000..2809a522 --- /dev/null +++ b/package/datatables-responsive/datatables-responsive.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# datatables-responsive +# +################################################################################ + +DATATABLES_RESPONSIVE_VERSION = 2.2.3 +DATATABLES_RESPONSIVE_SITE = https://datatables.net/releases +DATATABLES_RESPONSIVE_SOURCE = Responsive-$(DATATABLES_RESPONSIVE_VERSION).zip +DATATABLES_RESPONSIVE_LICENSE = MIT +DATATABLES_RESPONSIVE_LICENSE_FILES = License.txt + +define DATATABLES_RESPONSIVE_EXTRACT_CMDS + $(UNZIP) $(DATATABLES_RESPONSIVE_DL_DIR)/$(DATATABLES_RESPONSIVE_SOURCE) -d $(@D) + mv $(@D)/Responsive-$(DATATABLES_RESPONSIVE_VERSION)/* $(@D) + rmdir $(@D)/Responsive-$(DATATABLES_RESPONSIVE_VERSION) +endef + +define DATATABLES_RESPONSIVE_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -d $(TARGET_DIR)/var/www/datatables-responsive/css $(TARGET_DIR)/var/www/datatables-responsive/js + $(INSTALL) -m 0644 -t $(TARGET_DIR)/var/www/datatables-responsive/css $(@D)/css/*.min.css + $(INSTALL) -m 0644 -t $(TARGET_DIR)/var/www/datatables-responsive/js $(@D)/js/*.min.js +endef + +$(eval $(generic-package)) diff --git a/package/datatables/Config.in b/package/datatables/Config.in new file mode 100644 index 00000000..89009712 --- /dev/null +++ b/package/datatables/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_DATATABLES + bool "datatables" + help + Javascript library providing advanced interaction controls + for your HTML tables. + + https://datatables.net diff --git a/package/datatables/datatables.hash b/package/datatables/datatables.hash new file mode 100644 index 00000000..bb31fcac --- /dev/null +++ b/package/datatables/datatables.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 e2c79dd9d02caa04130ce888061bc922e18561e72e842ba0cb657d1812d9f1bf DataTables-1.10.20.zip +sha256 c6a873f21550ed804f76013c36e14225704c1aa551fdb870e0c626eb91c19247 license.txt diff --git a/package/datatables/datatables.mk b/package/datatables/datatables.mk new file mode 100644 index 00000000..c20cdf12 --- /dev/null +++ b/package/datatables/datatables.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# datatables +# +################################################################################ + +DATATABLES_VERSION = 1.10.20 +DATATABLES_SITE = https://datatables.net/releases +DATATABLES_SOURCE = DataTables-$(DATATABLES_VERSION).zip +DATATABLES_LICENSE = MIT +DATATABLES_LICENSE_FILES = license.txt + +define DATATABLES_EXTRACT_CMDS + $(UNZIP) $(DATATABLES_DL_DIR)/$(DATATABLES_SOURCE) -d $(@D) + mv $(@D)/DataTables-$(DATATABLES_VERSION)/* $(@D) + rmdir $(@D)/DataTables-$(DATATABLES_VERSION) +endef + +define DATATABLES_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -d $(TARGET_DIR)/var/www/datatables/css $(TARGET_DIR)/var/www/datatables/js + $(INSTALL) -m 0644 -t $(TARGET_DIR)/var/www/datatables/css $(@D)/media/css/*.min.css + $(INSTALL) -m 0644 -t $(TARGET_DIR)/var/www/datatables/js $(@D)/media/js/*.min.js +endef + +$(eval $(generic-package)) diff --git a/package/dav1d/Config.in b/package/dav1d/Config.in new file mode 100644 index 00000000..fb290255 --- /dev/null +++ b/package/dav1d/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_DAV1D + bool "dav1d" + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_TOOLCHAIN_HAS_THREADS # pthread + help + dav1d is a new AV1 cross-platform decoder, open-source, and + focused on speed and correctness. + + https://code.videolan.org/videolan/dav1d + +comment "dav1d needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/dav1d/dav1d.hash b/package/dav1d/dav1d.hash new file mode 100644 index 00000000..e0ca8f1e --- /dev/null +++ b/package/dav1d/dav1d.hash @@ -0,0 +1,4 @@ +# From https://download.videolan.org/pub/videolan/dav1d/1.4.3/dav1d-1.4.3.tar.xz.sha256 +sha256 42fe524bcc82ea3a830057178faace22923a79bad3d819a4962d8cfc54c36f19 dav1d-1.4.3.tar.xz +# Locally computed +sha256 b327887de263238deaa80c34cdd2ff3e0ba1d35db585ce14a37ce3e74ee389e9 COPYING diff --git a/package/dav1d/dav1d.mk b/package/dav1d/dav1d.mk new file mode 100644 index 00000000..4e3e8fe1 --- /dev/null +++ b/package/dav1d/dav1d.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# dav1d +# +################################################################################ + +DAV1D_VERSION = 1.4.3 +DAV1D_SOURCE = dav1d-$(DAV1D_VERSION).tar.xz +DAV1D_SITE = https://download.videolan.org/pub/videolan/dav1d/$(DAV1D_VERSION) +DAV1D_LICENSE = BSD-2-Clause +DAV1D_LICENSE_FILES = COPYING +DAV1D_CPE_ID_VENDOR = videolan +DAV1D_INSTALL_STAGING = YES +DAV1D_CONF_OPTS = \ + -Denable_tests=false \ + -Denable_tools=false + +ifeq ($(BR2_i386)$(BR2_x86_64),y) +DAV1D_DEPENDENCIES += host-nasm +endif + +# ARM assembly requires v6+ ISA +ifeq ($(BR2_ARM_CPU_ARMV4)$(BR2_ARM_CPU_ARMV5)$(BR2_ARM_CPU_ARMV7M),y) +DAV1D_CONF_OPTS += -Denable_asm=false +endif + +# riscv assembly requires riscv64 +ifeq ($(BR2_riscv):$(BR2_RISCV_64),y:) +DAV1D_CONF_OPTS += -Denable_asm=false +endif + +# Uses __atomic_fetch_add_4 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +DAV1D_LDFLAGS += $(TARGET_LDFLAGS) -latomic +endif + +$(eval $(meson-package)) diff --git a/package/davfs2/0001-src-Makefile.am-do-not-hardcode-fstack-protector-str.patch b/package/davfs2/0001-src-Makefile.am-do-not-hardcode-fstack-protector-str.patch new file mode 100644 index 00000000..54ae62fc --- /dev/null +++ b/package/davfs2/0001-src-Makefile.am-do-not-hardcode-fstack-protector-str.patch @@ -0,0 +1,45 @@ +From d209ef650cf2f760ef8217748ab10716bd22d60d Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Sun, 24 Jun 2018 10:35:37 +0200 +Subject: [PATCH] src/Makefile.am: do not hardcode -fstack-protector-strong + +davfs2 does not truly require -fstack-protector-strong, so do not hardcode +it. + +Signed-off-by: Peter Korsgaard +--- + src/Makefile.am | 3 +-- + src/Makefile.in | 3 +-- + 2 files changed, 2 insertions(+), 4 deletions(-) + +diff --git a/src/Makefile.am b/src/Makefile.am +index f083462..ed6b682 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -32,8 +32,7 @@ mount_davfs_SOURCES = cache.c dav_coda.c \ + kernel_interface.h mount_davfs.h webdav.h + umount_davfs_SOURCES = umount_davfs.c defaults.h + +-AM_CFLAGS = -Wall -Werror=format-security \ +- -fstack-protector-strong --param=ssp-buffer-size=4 ++AM_CFLAGS = -Wall -Werror=format-security + DEFS = -DPROGRAM_NAME=\"mount.davfs\" \ + -DDAV_SYS_CONF_DIR=\"$(pkgsysconfdir)\" \ + -DDAV_LOCALSTATE_DIR=\"$(dav_localstatedir)\" \ +diff --git a/src/Makefile.in b/src/Makefile.in +index 9fee542..e98758d 100644 +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -315,8 +315,7 @@ mount_davfs_SOURCES = cache.c dav_coda.c \ + kernel_interface.h mount_davfs.h webdav.h + + umount_davfs_SOURCES = umount_davfs.c defaults.h +-AM_CFLAGS = -Wall -Werror=format-security \ +- -fstack-protector-strong --param=ssp-buffer-size=4 ++AM_CFLAGS = -Wall -Werror=format-security + + all: all-am + +-- +2.11.0 + diff --git a/package/davfs2/0002-configure.ac-add-neon-version-0.33.patch b/package/davfs2/0002-configure.ac-add-neon-version-0.33.patch new file mode 100644 index 00000000..93eff48c --- /dev/null +++ b/package/davfs2/0002-configure.ac-add-neon-version-0.33.patch @@ -0,0 +1,27 @@ +From 1c539d158ae73e867d0d30b8c3d27f48d742ed06 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 30 Mar 2024 09:18:15 +0100 +Subject: [PATCH] configure.ac: add neon version 0.33 + +Signed-off-by: Fabrice Fontaine +Upstream: https://savannah.nongnu.org/bugs/?65247 +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 4f86cde..ede9b1e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -36,7 +36,7 @@ AC_PROG_LN_S + # Checks for libraries. + AM_GNU_GETTEXT_VERSION(0.19.8) + AM_GNU_GETTEXT([external]) +-NE_REQUIRE_VERSIONS([0], [27 28 29 30 31 32]) ++NE_REQUIRE_VERSIONS([0], [27 28 29 30 31 32 33]) + DAV_CHECK_NEON + + # Checks for header files. +-- +2.43.0 + diff --git a/package/davfs2/Config.in b/package/davfs2/Config.in new file mode 100644 index 00000000..31a68056 --- /dev/null +++ b/package/davfs2/Config.in @@ -0,0 +1,18 @@ +comment "davfs2 needs a glibc toolchain" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_USES_GLIBC + +config BR2_PACKAGE_DAVFS2 + bool "davfs2" + depends on BR2_TOOLCHAIN_USES_GLIBC # fstab.h + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_NEON + select BR2_PACKAGE_NEON_XML + help + davfs2 is a Linux file system driver that allows to + mount a WebDAV resource. WebDAV is an extension to HTTP/1.1 + that allows remote collaborative authoring of Web resources. + To use davfs2 via /etc/fstab, FEATURE_MOUNT_HELPERS + must be selected in busybox configuration. + + http://savannah.nongnu.org/projects/davfs2 diff --git a/package/davfs2/davfs2.hash b/package/davfs2/davfs2.hash new file mode 100644 index 00000000..1cbacc38 --- /dev/null +++ b/package/davfs2/davfs2.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 251db75a27380cca1330b1b971700c5e5dcc0c90e5a47622285f0140edfe3a2f davfs2-1.7.0.tar.gz +# License file, locally calculated +sha256 0ae0485a5bd37a63e63603596417e4eb0e653334fa6c7f932ca3a0e85d4af227 COPYING diff --git a/package/davfs2/davfs2.mk b/package/davfs2/davfs2.mk new file mode 100644 index 00000000..9f9e4a70 --- /dev/null +++ b/package/davfs2/davfs2.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# davfs2 +# +################################################################################ + +DAVFS2_VERSION = 1.7.0 +DAVFS2_SITE = http://download.savannah.nongnu.org/releases/davfs2 +DAVFS2_LICENSE = GPL-3.0+ +DAVFS2_LICENSE_FILES = COPYING +DAVFS2_CPE_ID_VENDOR = werner_baumann +# 0002-configure.ac-add-neon-version-0.33.patch +DAVFS2_AUTORECONF = YES + +DAVFS2_DEPENDENCIES = \ + neon \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) \ + $(TARGET_NLS_DEPENDENCIES) + +DAVFS2_CONF_ENV += \ + ac_cv_path_NEON_CONFIG=$(STAGING_DIR)/usr/bin/neon-config \ + LIBS=$(TARGET_NLS_LIBS) + +define DAVFS2_USERS + davfs2 -1 davfs2 -1 * - - - davfs user +endef + +$(eval $(autotools-package)) diff --git a/package/davici/Config.in b/package/davici/Config.in new file mode 100644 index 00000000..9dfa0ec1 --- /dev/null +++ b/package/davici/Config.in @@ -0,0 +1,18 @@ +comment "davici needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +config BR2_PACKAGE_DAVICI + bool "davici" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_STRONGSWAN + help + davici is an alternative implementation of the VICI + client protocol, targeting better integration in other + software stacks. + + https://github.com/strongswan/davici diff --git a/package/davici/davici.hash b/package/davici/davici.hash new file mode 100644 index 00000000..27ec2a6d --- /dev/null +++ b/package/davici/davici.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b03c5a1aad905e962271d70246d6af6c337ffd00449d990082ea02161327bde8 davici-1.4.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/davici/davici.mk b/package/davici/davici.mk new file mode 100644 index 00000000..d54e02e2 --- /dev/null +++ b/package/davici/davici.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# davici +# +################################################################################ + +DAVICI_VERSION = 1.4 +DAVICI_SITE = $(call github,strongswan,davici,v$(DAVICI_VERSION)) +DAVICI_LICENSE = LGPL-2.1+ +DAVICI_LICENSE_FILES = COPYING +DAVICI_CPE_ID_VENDOR = strongswan +DAVICI_DEPENDENCIES = strongswan +DAVICI_INSTALL_STAGING = YES +DAVICI_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/dawgdic/Config.in b/package/dawgdic/Config.in new file mode 100644 index 00000000..b67342b1 --- /dev/null +++ b/package/dawgdic/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_DAWGDIC + bool "dawgdic" + depends on BR2_INSTALL_LIBSTDCPP + # needs std::strtoll + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 + help + dawgdic provides a library for building and accessing + dictionaries implemented with directed acyclic word graphs + (DAWG). A dawg is constructed by minimizing a trie as a + deterministic finite automaton (DFA), and thus the dawg has + an advantage in memory usage. In addition, dawgdic uses a + double-array as a base data structure, so its retrieval + speed is as fast as that of Darts, a library for building + and accessing double-array tries. + + https://github.com/stil/dawgdic + +comment "dawgdic needs a toolchain w/ C++, gcc >= 4.6" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 diff --git a/package/dawgdic/dawgdic.hash b/package/dawgdic/dawgdic.hash new file mode 100644 index 00000000..ecf3cf95 --- /dev/null +++ b/package/dawgdic/dawgdic.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 54622a3e79ff3ad2c01a830ec52b997b42ead468b18af5acebab3a4ff32a5ad6 dawgdic-16ac537ba9883ff01b63b6d1fdc3072150c68fee.tar.gz +sha256 3059f68686f1c5bc6ed0e9db415fc257c4e7618b6ac58ecce83986eb8a7cf501 COPYING diff --git a/package/dawgdic/dawgdic.mk b/package/dawgdic/dawgdic.mk new file mode 100644 index 00000000..443782c9 --- /dev/null +++ b/package/dawgdic/dawgdic.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# dawgdic +# +################################################################################ + +DAWGDIC_VERSION = 16ac537ba9883ff01b63b6d1fdc3072150c68fee +DAWGDIC_SITE = $(call github,stil,dawgdic,$(DAWGDIC_VERSION)) +DAWGDIC_LICENSE = BSD-3-Clause +DAWGDIC_LICENSE_FILES = COPYING +DAWGDIC_AUTORECONF = YES +DAWGDIC_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/dbus-broker/Config.in b/package/dbus-broker/Config.in new file mode 100644 index 00000000..aa6584c3 --- /dev/null +++ b/package/dbus-broker/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_DBUS_BROKER + bool "dbus-broker" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17 + depends on BR2_PACKAGE_SYSTEMD + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_LIBCAP_NG if BR2_PACKAGE_AUDIT + help + Linux D-Bus Message Broker. + + The dbus-broker project is an implementation of a message bus + as defined by the D-Bus specification. Its aim is to provide + high performance and reliability, while keeping compatibility + to the D-Bus reference implementation. + + It is exclusively written for Linux systems, and makes use of + many modern features provided by recent linux kernel releases. + + https://github.com/bus1/dbus-broker/wiki + +comment "dbusbroker needs systemd and a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_PACKAGE_SYSTEMD diff --git a/package/dbus-broker/dbus-broker.hash b/package/dbus-broker/dbus-broker.hash new file mode 100644 index 00000000..06c8f229 --- /dev/null +++ b/package/dbus-broker/dbus-broker.hash @@ -0,0 +1,17 @@ +# Locally calculated +sha256 23713f25624749fdb274907e429080fa2d8f4dbe76acd87bb6d21a3c818c7841 dbus-broker-33.tar.xz +sha256 3cda3630283eda0eab825abe5ac84d191248c6b3fe1c232a118124959b96c6a4 LICENSE +sha256 20ea1f96abc15553695c6725bb3dcabff4b43b85b7ca7d675a2b8860e3b01f87 subprojects/libcdvar-1/AUTHORS +sha256 8153c478102dc209b30dd4627cf5bb3596263f99692bf3eec174b1e17bbf8a3b subprojects/libcdvar-1/README.md +sha256 6d63b1fb794d4c02622595ad30357c90398aa883864e5a275479139c8f03208f subprojects/libcini-1/AUTHORS +sha256 fc92d49d69aa9aa91919bac79242abee3eda27a567b4573ed3690b5cef0cf2fd subprojects/libcini-1/README.md +sha256 a30deb6dde90366bfaf054bc689a209b974f80c1cceac950c4378c14abaa243a subprojects/libclist-3/AUTHORS +sha256 75f4c76441ac69ba9474bb7ad0958389ca0f1f2fc90c5f7b033be3461652f5a6 subprojects/libclist-3/README.md +sha256 23f24eeaaded5fedd6e7840b6f7b73838f9a4e2112ad6a12fe1ef958f73d0214 subprojects/libcrbtree-3/AUTHORS +sha256 05113a24aca4c537819dd0d91b95b13edb85bea4b6a77a6d9269becb397ed374 subprojects/libcrbtree-3/README.md +sha256 6d63b1fb794d4c02622595ad30357c90398aa883864e5a275479139c8f03208f subprojects/libcshquote-1/AUTHORS +sha256 cad109dd33062518a437ebee145ba863fe0e047d4e3db9c28b0bf3c6148f10c2 subprojects/libcshquote-1/README.md +sha256 e796182869fe0892347d069f3f423774124987d6c45d016854fc51530633c177 subprojects/libcstdaux-1/AUTHORS +sha256 92006886d7f28894fef08bf97e35ef52147067bd3c4d4d6381da7c59f9901dae subprojects/libcstdaux-1/README.md +sha256 7e660796fea0400a1a9a539226c345b3c656a745a334e323e33258de7864e985 subprojects/libcutf8-1/AUTHORS +sha256 106099cc1c488cbf8911f56da7977a955f6b27a7bb5b815985e59d9fae0e6fe7 subprojects/libcutf8-1/README.md diff --git a/package/dbus-broker/dbus-broker.mk b/package/dbus-broker/dbus-broker.mk new file mode 100644 index 00000000..4266441a --- /dev/null +++ b/package/dbus-broker/dbus-broker.mk @@ -0,0 +1,69 @@ +################################################################################ +# +# dbus-broker +# +################################################################################ + +DBUS_BROKER_VERSION = 33 +DBUS_BROKER_SOURCE = dbus-broker-$(DBUS_BROKER_VERSION).tar.xz +DBUS_BROKER_SITE = https://github.com/bus1/dbus-broker/releases/download/v$(DBUS_BROKER_VERSION) + +DBUS_BROKER_LICENSE = \ + Apache-2.0, \ + Apache-2.0 and/or LGPL-2.1+ (c-dvar, c-ini, c-list, c-rbtree, c-shquote, c-stdaux, c-utf8) +# For the third-party code, the licensing legal-info is inconsistent between +# the AUTHORS and README, so keep both +DBUS_BROKER_LICENSE_FILES = \ + LICENSE \ + subprojects/libcdvar-1/AUTHORS subprojects/libcdvar-1/README.md \ + subprojects/libcini-1/AUTHORS subprojects/libcini-1/README.md \ + subprojects/libclist-3/AUTHORS subprojects/libclist-3/README.md \ + subprojects/libcrbtree-3/AUTHORS subprojects/libcrbtree-3/README.md \ + subprojects/libcshquote-1/AUTHORS subprojects/libcshquote-1/README.md \ + subprojects/libcstdaux-1/AUTHORS subprojects/libcstdaux-1/README.md \ + subprojects/libcutf8-1/AUTHORS subprojects/libcutf8-1/README.md + +DBUS_BROKER_CPE_ID_VALID = YES +DBUS_BROKER_DEPENDENCIES = expat systemd +DBUS_BROKER_CONF_OPTS = -Dlauncher=true + +ifeq ($(BR2_PACKAGE_AUDIT),y) +# libcap-ng selected from Config.in +DBUS_BROKER_DEPENDENCIES += audit libcap-ng +DBUS_BROKER_CONF_OPTS += -Daudit=true +else +DBUS_BROKER_CONF_OPTS += -Daudit=false +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +DBUS_BROKER_DEPENDENCIES += libselinux +DBUS_BROKER_CONF_OPTS += -Dselinux=true +else +DBUS_BROKER_CONF_OPTS += -Dselinux=false +endif + +# We must be using the same user as the original dbus, so we can share +# the home directory and create a socket there. As a consequence, the +# username and groupname must be dbus:dbus, and they both need to have +# the same home. +define DBUS_BROKER_USERS + dbus -1 dbus -1 * /run/dbus - dbus DBus messagebus user +endef + +# We overwrite some files from dbus, so add a dependency. +ifeq ($(BR2_PACKAGE_DBUS),y) +DBUS_BROKER_DEPENDENCIES += dbus +endif + +define DBUS_BROKER_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(DBUS_BROKER_PKGDIR)/session.conf \ + $(TARGET_DIR)/usr/share/dbus-1/session.conf + $(INSTALL) -D -m 0644 $(DBUS_BROKER_PKGDIR)/system.conf \ + $(TARGET_DIR)/usr/share/dbus-1/system.conf + $(INSTALL) -D -m 0644 $(DBUS_BROKER_PKGDIR)/dbus.socket \ + $(TARGET_DIR)/usr/lib/systemd/system/dbus.socket + $(HOST_MAKE_ENV) ln -sf ../dbus.socket \ + $(TARGET_DIR)/usr/lib/systemd/system/sockets.target.wants/dbus.socket +endef + +$(eval $(meson-package)) diff --git a/package/dbus-broker/dbus.socket b/package/dbus-broker/dbus.socket new file mode 100644 index 00000000..5c373cf4 --- /dev/null +++ b/package/dbus-broker/dbus.socket @@ -0,0 +1,5 @@ +[Unit] +Description=D-Bus System Message Bus Socket + +[Socket] +ListenStream=/run/dbus/system_bus_socket diff --git a/package/dbus-broker/session.conf b/package/dbus-broker/session.conf new file mode 100644 index 00000000..8e9488b1 --- /dev/null +++ b/package/dbus-broker/session.conf @@ -0,0 +1,80 @@ + + + + + + session + + + + + unix:tmpdir=/tmp + + + EXTERNAL + + + + + + + + + + + + + + /etc/dbus-1/session.conf + + + session.d + + /etc/dbus-1/session.d + + + /etc/dbus-1/session-local.conf + + contexts/dbus_contexts + + + + + 1000000000 + 250000000 + 1000000000 + 250000000 + 1000000000 + + 120000 + 240000 + 150000 + 100000 + 10000 + 100000 + 10000 + 50000 + 50000 + 50000 + + diff --git a/package/dbus-broker/system.conf b/package/dbus-broker/system.conf new file mode 100644 index 00000000..272f9236 --- /dev/null +++ b/package/dbus-broker/system.conf @@ -0,0 +1,142 @@ + + + + + + + + + system + + + dbus + + + + + + + + + /usr/libexec/dbus-daemon-launch-helper + + + /run/messagebus.pid + + + + + + EXTERNAL + + + unix:path=/run/dbus/system_bus_socket + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /etc/dbus-1/system.conf + + + + + + + + + + + + + + + + + + + + + system.d + + /etc/dbus-1/system.d + + + /etc/dbus-1/system-local.conf + + contexts/dbus_contexts + + diff --git a/package/dbus-cpp/0001-gcc4.7.patch b/package/dbus-cpp/0001-gcc4.7.patch new file mode 100644 index 00000000..ad3046c8 --- /dev/null +++ b/package/dbus-cpp/0001-gcc4.7.patch @@ -0,0 +1,17 @@ +Fix build failure with gcc 4.7+ +From bugtracker: http://sourceforge.net/p/dbus-cplusplus/patches/13/ + +Signed-off-by: Gustavo Zacarias + +diff --git a/include/dbus-c++/eventloop-integration.h b/include/dbus-c++/eventloop-integration.h +index 1b0302e..3e44304 100644 +--- a/include/dbus-c++/eventloop-integration.h ++++ b/include/dbus-c++/eventloop-integration.h +@@ -26,6 +26,7 @@ + #define __DBUSXX_EVENTLOOP_INTEGRATION_H + + #include ++#include + #include "api.h" + #include "dispatcher.h" + #include "util.h" diff --git a/package/dbus-cpp/0002-cross-compile-tools.patch b/package/dbus-cpp/0002-cross-compile-tools.patch new file mode 100644 index 00000000..39eff314 --- /dev/null +++ b/package/dbus-cpp/0002-cross-compile-tools.patch @@ -0,0 +1,34 @@ +tools: just do proper cross-compile + +Those tools are not used during the build; besides, they are installed. + +So they don't need to not be cross-compiled. + +Signed-off-by: "Yann E. MORIN" + +--- +Upstream status: not submitted, upstream is dead. + +diff -durN dbus-cpp-0.9.0.orig/tools/Makefile.am dbus-cpp-0.9.0/tools/Makefile.am +--- dbus-cpp-0.9.0.orig/tools/Makefile.am 2017-03-21 21:48:57.013409423 +0100 ++++ dbus-cpp-0.9.0/tools/Makefile.am 2017-03-21 21:49:35.329979798 +0100 +@@ -1,7 +1,3 @@ +-# hacky, but ... +- +-CXX = $(CXX_FOR_BUILD) +- + AM_CPPFLAGS = \ + $(dbus_CFLAGS) \ + $(xml_CFLAGS) \ +@@ -9,11 +3,7 @@ + -I$(top_builddir)/include \ + -Wall + +-if CROSS_COMPILING +-libdbus_cxx_la = $(BUILD_LIBDBUS_CXX_DIR)/src/libdbus-c++-1.la +-else + libdbus_cxx_la = $(top_builddir)/src/libdbus-c++-1.la +-endif + + bin_PROGRAMS = dbusxx-xml2cpp dbusxx-introspect + diff --git a/package/dbus-cpp/0003-src-pipe.c-fix-build-error-with-gcc-7.x.patch b/package/dbus-cpp/0003-src-pipe.c-fix-build-error-with-gcc-7.x.patch new file mode 100644 index 00000000..6f3e6242 --- /dev/null +++ b/package/dbus-cpp/0003-src-pipe.c-fix-build-error-with-gcc-7.x.patch @@ -0,0 +1,36 @@ +From 167042116f523f90911f3a28c4ec065918d56cc9 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 22 Aug 2017 00:02:52 +0200 +Subject: [PATCH] src/pipe.c: fix build error with gcc 7.x +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The write function takes a char* as argument, not a char. + +Fixes: + +pipe.cpp: In member function ‘void DBus::Pipe::signal()’: +pipe.cpp:86:29: error: invalid conversion from ‘char’ to ‘const void*’ [-fpermissive] + ::write(_fd_write, '\0', 1); + ^ + +Signed-off-by: Thomas Petazzoni +--- + src/pipe.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/pipe.cpp b/src/pipe.cpp +index 01211b3..d0572c7 100644 +--- a/src/pipe.cpp ++++ b/src/pipe.cpp +@@ -83,5 +83,5 @@ ssize_t Pipe::read(void *buffer, unsigned int &nbytes) + void Pipe::signal() + { + // TODO: ignoring return of read/write generates warning; maybe relevant for eventloop work... +- ::write(_fd_write, '\0', 1); ++ ::write(_fd_write, "\0", 1); + } +-- +2.9.4 + diff --git a/package/dbus-cpp/Config.in b/package/dbus-cpp/Config.in new file mode 100644 index 00000000..e90b2114 --- /dev/null +++ b/package/dbus-cpp/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_DBUS_CPP + bool "dbus-c++" + depends on BR2_PACKAGE_DBUS + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus + depends on BR2_USE_MMU # dbus + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_TOOLCHAIN_USES_MUSL # no PTHREAD_RECURSIVE_MUTEX_* + select BR2_PACKAGE_EXPAT + help + dbus-c++ attempts to provide a C++ API for D-BUS. + The library has a glib/gtk and an Ecore mainloop integration. + It also offers an optional own main loop. + + http://sourceforge.net/projects/dbus-cplusplus/ + +comment "dbus-c++ needs a uClibc or glibc toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_DBUS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \ + || BR2_TOOLCHAIN_USES_MUSL diff --git a/package/dbus-cpp/dbus-cpp.hash b/package/dbus-cpp/dbus-cpp.hash new file mode 100644 index 00000000..957698b4 --- /dev/null +++ b/package/dbus-cpp/dbus-cpp.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 bc11ac297b3cb010be904c72789695543ee3fdf3d75cdc8225fd371385af4e61 libdbus-c++-0.9.0.tar.gz +sha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a COPYING diff --git a/package/dbus-cpp/dbus-cpp.mk b/package/dbus-cpp/dbus-cpp.mk new file mode 100644 index 00000000..d8468ab8 --- /dev/null +++ b/package/dbus-cpp/dbus-cpp.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# dbus-cpp +# +################################################################################ + +DBUS_CPP_VERSION = 0.9.0 +DBUS_CPP_SITE = http://downloads.sourceforge.net/project/dbus-cplusplus/dbus-c++/$(DBUS_CPP_VERSION) +DBUS_CPP_SOURCE = libdbus-c++-$(DBUS_CPP_VERSION).tar.gz +DBUS_CPP_INSTALL_STAGING = YES +# expat is required for the tools irrespective of dbus xml backend +DBUS_CPP_DEPENDENCIES = host-dbus-cpp host-pkgconf dbus expat +HOST_DBUS_CPP_DEPENDENCIES = host-pkgconf host-dbus host-expat +DBUS_CPP_CONF_OPTS = \ + --disable-examples \ + --disable-tests \ + --disable-doxygen-docs \ + --with-build-libdbus-cxx=$(HOST_DBUS_CPP_BUILDDIR) +HOST_DBUS_CPP_CONF_OPTS = \ + --disable-examples \ + --disable-tests \ + --disable-doxygen-docs \ + --disable-ecore \ + --disable-glib +DBUS_CPP_AUTORECONF = YES +DBUS_CPP_LICENSE = LGPL-2.1+ +DBUS_CPP_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_EFL),y) +DBUS_CPP_CONF_OPTS += --enable-ecore +DBUS_CPP_DEPENDENCIES += efl +else +DBUS_CPP_CONF_OPTS += --disable-ecore +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +DBUS_CPP_CONF_OPTS += --enable-glib +DBUS_CPP_DEPENDENCIES += libglib2 +else +DBUS_CPP_CONF_OPTS += --disable-glib +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/dbus-cxx/Config.in b/package/dbus-cxx/Config.in new file mode 100644 index 00000000..1892f73a --- /dev/null +++ b/package/dbus-cxx/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_DBUS_CXX + bool "dbus-cxx" + depends on BR2_USE_MMU # dbus + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # libsigc + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_DBUS # runtime + select BR2_PACKAGE_LIBSIGC + help + DBus-cxx is a C++ implementation for DBus. DBus is a + Linux-specific RPC (remote procedure call) and + IPC (inter-process communications) mechanism. + DBus-cxx provides an object-oriented view of all programs + on the DBus, and allows an object-oriented way of + exporting methods onto the DBus. + + https://dbus-cxx.github.io/ + +comment "dbus-cxx needs a toolchain w/ C++, threads, gcc >= 7 and dynamic library support" + depends on BR2_USE_MMU # dbus + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 diff --git a/package/dbus-cxx/dbus-cxx.hash b/package/dbus-cxx/dbus-cxx.hash new file mode 100644 index 00000000..4ed9d73b --- /dev/null +++ b/package/dbus-cxx/dbus-cxx.hash @@ -0,0 +1,5 @@ +# Locally computed: +sha256 c38456ed70023d93e6e689087e4bbe030f1650bbda9de7c035d6f4ebac788379 dbus-cxx-2.4.0.tar.gz +sha256 99e5d0ad951d96567a6f9a17f3f17ac000c0582f53357c7f3601851c2dcbb786 COPYING +sha256 c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566 cmake-modules/LICENSE_1_0.txt +sha256 c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08 tools/libcppgenerate/LICENSE diff --git a/package/dbus-cxx/dbus-cxx.mk b/package/dbus-cxx/dbus-cxx.mk new file mode 100644 index 00000000..8e2b4f70 --- /dev/null +++ b/package/dbus-cxx/dbus-cxx.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# dbus-cxx +# +################################################################################ + +DBUS_CXX_VERSION = 2.4.0 +DBUS_CXX_SITE = $(call github,dbus-cxx,dbus-cxx,$(DBUS_CXX_VERSION)) +DBUS_CXX_LICENSE = LGPL-3.0+ or BSD-3-Clause, Boost license (cmake-modules), Apache 2.0 (libcppgenerate) +DBUS_CXX_LICENSE_FILES = COPYING cmake-modules/LICENSE_1_0.txt tools/libcppgenerate/LICENSE +DBUS_CXX_INSTALL_STAGING = YES +DBUS_CXX_DEPENDENCIES = libsigc + +ifeq ($(BR2_PACKAGE_QT5BASE),y) +DBUS_CXX_CONF_OPTS += -DENABLE_QT_SUPPORT=ON +DBUS_CXX_DEPENDENCIES += qt5base +else +DBUS_CXX_CONF_OPTS += -DENABLE_QT_SUPPORT=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +DBUS_CXX_CONF_OPTS += -DENABLE_GLIB_SUPPORT=ON +DBUS_CXX_DEPENDENCIES += libglib2 +else +DBUS_CXX_CONF_OPTS += -DENABLE_GLIB_SUPPORT=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/dbus-glib/Config.in b/package/dbus-glib/Config.in new file mode 100644 index 00000000..7fe0ac66 --- /dev/null +++ b/package/dbus-glib/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_DBUS_GLIB + bool "dbus-glib" + depends on BR2_PACKAGE_DBUS + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + help + GLib bindings for D-Bus. + + http://www.freedesktop.org/software/dbus + +comment "dbus-glib needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_DBUS + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/dbus-glib/dbus-glib.hash b/package/dbus-glib/dbus-glib.hash new file mode 100644 index 00000000..072dde3d --- /dev/null +++ b/package/dbus-glib/dbus-glib.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +sha256 7d550dccdfcd286e33895501829ed971eeb65c614e73aadb4a08aeef719b143a dbus-glib-0.112.tar.gz + +# Locally calculated +sha256 589bc300214a8b9ecd121f51570fe6342617487fd8fc0fb1f4ec26a13d5b96f8 COPYING diff --git a/package/dbus-glib/dbus-glib.mk b/package/dbus-glib/dbus-glib.mk new file mode 100644 index 00000000..0d247e1d --- /dev/null +++ b/package/dbus-glib/dbus-glib.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# dbus-glib +# +################################################################################ + +DBUS_GLIB_VERSION = 0.112 +DBUS_GLIB_SITE = http://dbus.freedesktop.org/releases/dbus-glib +DBUS_GLIB_INSTALL_STAGING = YES +DBUS_GLIB_LICENSE = AFL-2.1 or GPL-2.0+ +DBUS_GLIB_LICENSE_FILES = COPYING +DBUS_GLIB_CPE_ID_VENDOR = freedesktop + +DBUS_GLIB_CONF_ENV = \ + ac_cv_have_abstract_sockets=yes \ + ac_cv_func_posix_getpwnam_r=yes \ + have_abstract_sockets=yes + +DBUS_GLIB_CONF_OPTS = \ + --disable-tests \ + --disable-xml-docs \ + --with-introspect-xml=$(DBUS_HOST_INTROSPECT) \ + --with-dbus-binding-tool=$(DBUS_GLIB_HOST_BINARY) \ + --disable-bash-completion \ + --disable-doxygen-docs \ + --enable-asserts=yes + +DBUS_GLIB_DEPENDENCIES = host-pkgconf dbus host-dbus host-dbus-glib libglib2 expat + +HOST_DBUS_GLIB_DEPENDENCIES = host-dbus host-expat host-libglib2 + +HOST_DBUS_GLIB_CONF_OPTS = \ + --disable-tests \ + --disable-xml-docs \ + --disable-bash-completion \ + --disable-doxygen-docs \ + --enable-asserts=yes + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) + +# dbus-glib for the host +DBUS_GLIB_HOST_BINARY = $(HOST_DIR)/bin/dbus-binding-tool diff --git a/package/dbus-python/Config.in b/package/dbus-python/Config.in new file mode 100644 index 00000000..76453e16 --- /dev/null +++ b/package/dbus-python/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_DBUS_PYTHON + bool "dbus-python" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_PACKAGE_DBUS + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_PYTHON3_PYEXPAT # runtime + help + Python bindings for D-Bus + + http://dbus.freedesktop.org/doc/dbus-python/ + +comment "dbus-python needs a toolchain w/ wchar, threads" + depends on BR2_PACKAGE_DBUS && BR2_PACKAGE_PYTHON3 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/dbus-python/Config.in.host b/package/dbus-python/Config.in.host new file mode 100644 index 00000000..1e30e0a7 --- /dev/null +++ b/package/dbus-python/Config.in.host @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HOST_DBUS_PYTHON + bool "host dbus-python" + help + Python bindings for D-Bus + + http://dbus.freedesktop.org/doc/dbus-python/ diff --git a/package/dbus-python/dbus-python.hash b/package/dbus-python/dbus-python.hash new file mode 100644 index 00000000..8d1609de --- /dev/null +++ b/package/dbus-python/dbus-python.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +sha256 92bdd1e68b45596c833307a5ff4b217ee6929a1502f5341bae28fd120acf7260 dbus-python-1.2.18.tar.gz + +# Locally calculated +sha256 1e4562245383fdb5203b1769789e5b28bba21af4923aea7e8b2614f7f93623c0 COPYING +sha256 064523e3ab64d6f03904132b2cc4a1bd8500586edb4cd050c2ff2b96aed4c33b dbus-gmain/COPYING diff --git a/package/dbus-python/dbus-python.mk b/package/dbus-python/dbus-python.mk new file mode 100644 index 00000000..16b22d48 --- /dev/null +++ b/package/dbus-python/dbus-python.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# dbus-python +# +################################################################################ + +DBUS_PYTHON_VERSION = 1.2.18 +DBUS_PYTHON_SITE = http://dbus.freedesktop.org/releases/dbus-python +DBUS_PYTHON_INSTALL_STAGING = YES +DBUS_PYTHON_LICENSE = MIT (dbus-python), AFL-2.1 or GPL-2.0+ (dbus-gmain) +DBUS_PYTHON_LICENSE_FILES = COPYING dbus-gmain/COPYING +DBUS_PYTHON_DEPENDENCIES = dbus libglib2 python3 host-python3 +HOST_DBUS_PYTHON_DEPENDENCIES = host-dbus host-libglib2 host-python3 + +DBUS_PYTHON_CONF_ENV = \ + PYTHON=$(HOST_DIR)/bin/python3 \ + PYTHON_INCLUDES="`$(STAGING_DIR)/usr/bin/python3-config --includes`" \ + PYTHON_LIBS="`$(STAGING_DIR)/usr/bin/python3-config --ldflags`" \ + PYTHON_EXTRA_LIBS="`$(STAGING_DIR)/usr/bin/python3-config --libs --embed`" + +HOST_DBUS_PYTHON_CONF_ENV = \ + PYTHON=$(HOST_DIR)/bin/python3 \ + PYTHON_INCLUDES="`$(HOST_DIR)/bin/python3-config --includes`" \ + PYTHON_LIBS="`$(HOST_DIR)/bin/python3-config --ldflags`" \ + PYTHON_EXTRA_LIBS="`$(HOST_DIR)/bin/python3-config --libs --embed`" + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/dbus-triggerd/Config.in b/package/dbus-triggerd/Config.in new file mode 100644 index 00000000..331c4147 --- /dev/null +++ b/package/dbus-triggerd/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_DBUS_TRIGGERD + bool "dbus-triggerd" + depends on BR2_USE_MMU # fork(), dbus + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus + depends on BR2_PACKAGE_DBUS + help + dbus-triggerd is a tool to trigger shell-commands upon + receiving a given dbus-signal. + + http://gareus.org/oss/dbustriggerd/start + +comment "dbus-triggerd needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_DBUS + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/dbus-triggerd/dbus-triggerd.hash b/package/dbus-triggerd/dbus-triggerd.hash new file mode 100644 index 00000000..c5127133 --- /dev/null +++ b/package/dbus-triggerd/dbus-triggerd.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 73dbd92e89eee223928b5cbf414affb5913f70c1ca7e3f8ab733a4696436dae3 dbus-triggerd-ba3dbec805cb707c94c54de21666bf18b79bcc09-git4.tar.gz +sha256 30d135650639af9019633690fc1aecbfc150aeeef9446347d4286a58338d10b0 dbus-triggerd.c diff --git a/package/dbus-triggerd/dbus-triggerd.mk b/package/dbus-triggerd/dbus-triggerd.mk new file mode 100644 index 00000000..7d73a6c9 --- /dev/null +++ b/package/dbus-triggerd/dbus-triggerd.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# dbus-triggerd +# +################################################################################ + +DBUS_TRIGGERD_VERSION = ba3dbec805cb707c94c54de21666bf18b79bcc09 +DBUS_TRIGGERD_SITE = git://rg42.org/dbustriggerd.git +DBUS_TRIGGERD_LICENSE = GPL-2.0+ +DBUS_TRIGGERD_LICENSE_FILES = dbus-triggerd.c +DBUS_TRIGGERD_DEPENDENCIES = host-pkgconf dbus + +define DBUS_TRIGGERD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) all +endef + +define DBUS_TRIGGERD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR="$(TARGET_DIR)" -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/dbus/Config.in b/package/dbus/Config.in new file mode 100644 index 00000000..5650b577 --- /dev/null +++ b/package/dbus/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_DBUS + bool "dbus" + depends on BR2_TOOLCHAIN_HAS_THREADS + # uses fork() + depends on BR2_USE_MMU + select BR2_PACKAGE_EXPAT + help + The D-Bus message bus system. + + https://www.freedesktop.org/wiki/Software/dbus + +comment "dbus needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/dbus/S30dbus b/package/dbus/S30dbus new file mode 100644 index 00000000..26772755 --- /dev/null +++ b/package/dbus/S30dbus @@ -0,0 +1,71 @@ +#!/bin/sh +# +# messagebus: The D-BUS systemwide message bus +# +# chkconfig: 345 97 03 +# description: This is a daemon which broadcasts notifications of system events \ +# and other messages. See http://www.freedesktop.org/software/dbus/ +# +# processname: dbus-daemon +# pidfile: /run/messagebus.pid +# + +# Create needed directories. +[ -d /run/dbus ] || mkdir -p /run/dbus +[ -d /var/lock/subsys ] || mkdir -p /var/lock/subsys +[ -d /tmp/dbus ] || mkdir -p /tmp/dbus + +RETVAL=0 + +start() { + printf "Starting system message bus: " + + dbus-uuidgen --ensure + dbus-daemon --system + RETVAL=$? + echo "done" + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/dbus-daemon +} + +stop() { + printf "Stopping system message bus: " + + ## we don't want to kill all the per-user $processname, we want + ## to use the pid file *only*; because we use the fake nonexistent + ## program name "$servicename" that should be safe-ish + killall dbus-daemon + RETVAL=$? + echo "done" + if [ $RETVAL -eq 0 ]; then + rm -f /var/lock/subsys/dbus-daemon + rm -f /run/messagebus.pid + fi +} + +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + start + ;; + condrestart) + if [ -f /var/lock/subsys/$servicename ]; then + stop + start + fi + ;; + reload) + echo "Message bus can't reload its configuration, you have to restart it" + RETVAL=$? + ;; + *) + echo "Usage: $0 {start|stop|restart|condrestart|reload}" + ;; +esac +exit $RETVAL diff --git a/package/dbus/dbus.hash b/package/dbus/dbus.hash new file mode 100644 index 00000000..a06ba50c --- /dev/null +++ b/package/dbus/dbus.hash @@ -0,0 +1,7 @@ +# Locally calculated after checking pgp signature +# https://dbus.freedesktop.org/releases/dbus/dbus-1.14.10.tar.xz.asc +# using key 36EC5A6448A4F5EF79BEFE98E05AE1478F814C4F +sha256 ba1f21d2bd9d339da2d4aa8780c09df32fea87998b73da24f49ab9df1e36a50f dbus-1.14.10.tar.xz + +# Locally calculated +sha256 e61807cd1c32ff4e7bd5b4b61dd21997c6dc5642cf19316124fe38d50e1f9fa3 COPYING diff --git a/package/dbus/dbus.mk b/package/dbus/dbus.mk new file mode 100644 index 00000000..c60bf473 --- /dev/null +++ b/package/dbus/dbus.mk @@ -0,0 +1,142 @@ +################################################################################ +# +# dbus +# +################################################################################ + +# When updating dbus, check if there are changes in session.conf and +# system.conf, and update the versions in the dbus-broker package accordingly. +DBUS_VERSION = 1.14.10 +DBUS_SOURCE = dbus-$(DBUS_VERSION).tar.xz +DBUS_SITE = https://dbus.freedesktop.org/releases/dbus +DBUS_LICENSE = AFL-2.1 or GPL-2.0+ (library, tools), GPL-2.0+ (tools) +DBUS_LICENSE_FILES = COPYING +DBUS_CPE_ID_VENDOR = freedesktop +DBUS_INSTALL_STAGING = YES + +define DBUS_PERMISSIONS + /usr/libexec/dbus-daemon-launch-helper f 4750 0 dbus - - - - - +endef + +define DBUS_USERS + dbus -1 dbus -1 * /run/dbus - dbus DBus messagebus user +endef + +DBUS_DEPENDENCIES = host-pkgconf expat + +DBUS_SELINUX_MODULES = dbus + +DBUS_CONF_OPTS = \ + --with-dbus-user=dbus \ + --disable-tests \ + --disable-asserts \ + --disable-xml-docs \ + --disable-doxygen-docs \ + --with-system-socket=/run/dbus/system_bus_socket \ + --with-system-pid-file=/run/messagebus.pid \ + --runstatedir=/run + +ifeq ($(BR2_STATIC_LIBS),y) +DBUS_CONF_OPTS += LIBS='-pthread' +endif + +ifeq ($(BR2_microblaze),y) +# microblaze toolchain doesn't provide inotify_rm_* but does have sys/inotify.h +DBUS_CONF_OPTS += --disable-inotify +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +DBUS_CONF_OPTS += --enable-selinux +DBUS_DEPENDENCIES += libselinux +else +DBUS_CONF_OPTS += --disable-selinux +endif + +ifeq ($(BR2_PACKAGE_AUDIT)$(BR2_PACKAGE_LIBCAP_NG),yy) +DBUS_CONF_OPTS += --enable-libaudit +DBUS_DEPENDENCIES += audit libcap-ng +else +DBUS_CONF_OPTS += --disable-libaudit +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) +DBUS_CONF_OPTS += --with-x +DBUS_DEPENDENCIES += xlib_libX11 +ifeq ($(BR2_PACKAGE_XLIB_LIBSM),y) +DBUS_DEPENDENCIES += xlib_libSM +endif +else +DBUS_CONF_OPTS += --without-x +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +DBUS_CONF_OPTS += \ + --enable-systemd \ + --with-systemdsystemunitdir=/usr/lib/systemd/system +DBUS_DEPENDENCIES += systemd +else +DBUS_CONF_OPTS += --disable-systemd +endif + +# fix rebuild (dbus makefile errors out if /var/lib/dbus is a symlink) +define DBUS_REMOVE_VAR_LIB_DBUS + rm -rf $(TARGET_DIR)/var/lib/dbus +endef + +DBUS_PRE_INSTALL_TARGET_HOOKS += DBUS_REMOVE_VAR_LIB_DBUS + +define DBUS_REMOVE_DEVFILES + rm -rf $(TARGET_DIR)/usr/lib/dbus-1.0 +endef + +DBUS_POST_INSTALL_TARGET_HOOKS += DBUS_REMOVE_DEVFILES + +define DBUS_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/dbus/S30dbus \ + $(TARGET_DIR)/etc/init.d/S30dbus + + mkdir -p $(TARGET_DIR)/var/lib + rm -rf $(TARGET_DIR)/var/lib/dbus + ln -sf /tmp/dbus $(TARGET_DIR)/var/lib/dbus +endef + +# If dbus-broker is installed, don't install the activation links for +# dbus itself, not the configuration files. They will be overwritten +# by dbus-broker +ifeq ($(BR2_PACKAGE_DBUS_BROKER),y) +define DBUS_REMOVE_SYSTEMD_ACTIVATION_LINKS + rm -f $(TARGET_DIR)/usr/lib/systemd/system/multi-user.target.wants/dbus.service + rm -f $(TARGET_DIR)/usr/lib/systemd/system/sockets.target.wants/dbus.socket + rm -f $(TARGET_DIR)/usr/lib/systemd/system/dbus.socket + rm -f $(TARGET_DIR)/usr/share/dbus-1/session.conf + rm -f $(TARGET_DIR)/usr/share/dbus-1/system.conf +endef +DBUS_POST_INSTALL_TARGET_HOOKS += DBUS_REMOVE_SYSTEMD_ACTIVATION_LINKS +endif + +define DBUS_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/var/lib/dbus + ln -sf /etc/machine-id $(TARGET_DIR)/var/lib/dbus/machine-id +endef + +HOST_DBUS_DEPENDENCIES = host-pkgconf host-expat +HOST_DBUS_CONF_OPTS = \ + --with-dbus-user=dbus \ + --disable-tests \ + --disable-asserts \ + --disable-selinux \ + --disable-xml-docs \ + --disable-doxygen-docs \ + --disable-systemd \ + --without-x + +# dbus for the host +DBUS_HOST_INTROSPECT = $(HOST_DBUS_DIR)/introspect.xml + +HOST_DBUS_GEN_INTROSPECT = \ + $(HOST_DIR)/bin/dbus-daemon --introspect > $(DBUS_HOST_INTROSPECT) + +HOST_DBUS_POST_INSTALL_HOOKS += HOST_DBUS_GEN_INTROSPECT + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/dc3dd/0001-no_man.patch b/package/dc3dd/0001-no_man.patch new file mode 100644 index 00000000..9fefc8ca --- /dev/null +++ b/package/dc3dd/0001-no_man.patch @@ -0,0 +1,15 @@ +Remove the man directory to the subdirs to prevent building the man pages + +Signed-off-by: Benoît Allard + +--- a/Makefile.am 2017-03-27 09:53:19.988820588 +0200 ++++ b/Makefile.am 2017-03-27 09:54:14.325817466 +0200 +@@ -15,7 +15,7 @@ + # You should have received a copy of the GNU General Public License + # along with this program. If not, see . + +-SUBDIRS = lib src man po ++SUBDIRS = lib src po + EXTRA_DIST = cfg.mk maint.mk \ + .prev-version THANKS-to-translators THANKStt.in \ + .version \ diff --git a/package/dc3dd/0002-fix-autoreconf.patch b/package/dc3dd/0002-fix-autoreconf.patch new file mode 100644 index 00000000..85e0a365 --- /dev/null +++ b/package/dc3dd/0002-fix-autoreconf.patch @@ -0,0 +1,32 @@ +Remove use of AM_C_PROTOTYPES to fix autoreconf + +The AM_C_PROTOTYPES macro no longer exists since automake 1.12. It +existed to support de-ANSI-fication of code using ansi2knr. It was +simply removed from coreutils m4/jm-macros.m4 in commit +88873501cff9ed937edf969cedd693517ab0a293, but this change was not +propagated to dc3dd, causing an autoreconf failure: + +configure.ac:45: error: automatic de-ANSI-fication support has been removed +/home/peko/autobuild/instance-0/output/host/usr/share/aclocal-1.15/obsolete.m4:26: AM_C_PROTOTYPES is expanded from... +m4/jm-macros.m4:124: gl_CHECK_ALL_TYPES is expanded from... +m4/jm-macros.m4:22: coreutils_MACROS is expanded from... +configure.ac:45: the top level + +Signed-off-by: Thomas Petazzoni + +Index: b/m4/jm-macros.m4 +=================================================================== +--- a/m4/jm-macros.m4 ++++ b/m4/jm-macros.m4 +@@ -128,11 +128,6 @@ + dnl whether functions and headers are available, whether they work, etc. + AC_REQUIRE([AC_SYS_LARGEFILE]) + +- dnl This test must precede tests of compiler characteristics like +- dnl that for the inline keyword, since it may change the degree to +- dnl which the compiler supports such features. +- AC_REQUIRE([AM_C_PROTOTYPES]) +- + dnl Checks for typedefs, structures, and compiler characteristics. + AC_REQUIRE([AC_C_BIGENDIAN]) + AC_REQUIRE([AC_C_VOLATILE]) diff --git a/package/dc3dd/0003-fix-for-glibc-2.28.patch b/package/dc3dd/0003-fix-for-glibc-2.28.patch new file mode 100644 index 00000000..79e52b1e --- /dev/null +++ b/package/dc3dd/0003-fix-for-glibc-2.28.patch @@ -0,0 +1,87 @@ +Fix build with glibc 2.28 + +glibc 2.28 hides a number of internal macros that used to be visible. gnulib +relied on these macros. Add a patch based on upstream gnulib commit +4af4a4a71827c0 (fflush: adjust to glibc 2.28 libio.h removal) to fix the +build. + +Signed-off-by: Baruch Siach +--- +Upstream status: gnulib commit 4af4a4a7182 + +diff -Nuar dc3dd-7.2.641.orig/lib/freadahead.c dc3dd-7.2.641/lib/freadahead.c +--- dc3dd-7.2.641.orig/lib/freadahead.c 2012-11-06 23:42:58.000000000 +0200 ++++ dc3dd-7.2.641/lib/freadahead.c 2018-10-26 08:46:36.612492230 +0300 +@@ -24,7 +24,7 @@ + size_t + freadahead (FILE *fp) + { +-#if defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */ ++#if defined _IO_EOF_SEEN || defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */ + if (fp->_IO_write_ptr > fp->_IO_write_base) + return 0; + return (fp->_IO_read_end - fp->_IO_read_ptr) +diff -Nuar dc3dd-7.2.641.orig/lib/freadptr.c dc3dd-7.2.641/lib/freadptr.c +--- dc3dd-7.2.641.orig/lib/freadptr.c 2012-11-06 23:42:58.000000000 +0200 ++++ dc3dd-7.2.641/lib/freadptr.c 2018-10-26 08:36:53.965310494 +0300 +@@ -29,7 +29,7 @@ + size_t size; + + /* Keep this code in sync with freadahead! */ +-#if defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */ ++#if defined _IO_EOF_SEEN || defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */ + if (fp->_IO_write_ptr > fp->_IO_write_base) + return NULL; + size = fp->_IO_read_end - fp->_IO_read_ptr; +diff -Nuar dc3dd-7.2.641.orig/lib/freadseek.c dc3dd-7.2.641/lib/freadseek.c +--- dc3dd-7.2.641.orig/lib/freadseek.c 2012-11-06 23:42:58.000000000 +0200 ++++ dc3dd-7.2.641/lib/freadseek.c 2018-10-26 08:49:35.387912087 +0300 +@@ -34,7 +34,7 @@ + freadptrinc (FILE *fp, size_t increment) + { + /* Keep this code in sync with freadptr! */ +-#if defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */ ++#if defined _IO_EOF_SEEN || defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */ + fp->_IO_read_ptr += increment; + #elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ + fp_->_p += increment; +diff -Nuar dc3dd-7.2.641.orig/lib/fseeko.c dc3dd-7.2.641/lib/fseeko.c +--- dc3dd-7.2.641.orig/lib/fseeko.c 2012-11-06 23:42:58.000000000 +0200 ++++ dc3dd-7.2.641/lib/fseeko.c 2018-10-26 08:51:02.841583936 +0300 +@@ -44,7 +44,7 @@ + #endif + + /* These tests are based on fpurge.c. */ +-#if defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */ ++#if defined _IO_EOF_SEEN || defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */ + if (fp->_IO_read_end == fp->_IO_read_ptr + && fp->_IO_write_ptr == fp->_IO_write_base + && fp->_IO_save_base == NULL) +diff -Nuar dc3dd-7.2.641.orig/lib/fseterr.c dc3dd-7.2.641/lib/fseterr.c +--- dc3dd-7.2.641.orig/lib/fseterr.c 2012-11-06 23:42:58.000000000 +0200 ++++ dc3dd-7.2.641/lib/fseterr.c 2018-10-26 08:47:51.209919605 +0300 +@@ -29,7 +29,7 @@ + /* Most systems provide FILE as a struct and the necessary bitmask in + , because they need it for implementing getc() and putc() as + fast macros. */ +-#if defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */ ++#if defined _IO_EOF_SEEN || defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */ + fp->_flags |= _IO_ERR_SEEN; + #elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ + fp_->_flags |= __SERR; +diff -Nuar dc3dd-7.2.641.orig/lib/stdio-impl.h dc3dd-7.2.641/lib/stdio-impl.h +--- dc3dd-7.2.641.orig/lib/stdio-impl.h 2012-11-06 23:42:58.000000000 +0200 ++++ dc3dd-7.2.641/lib/stdio-impl.h 2018-10-26 08:46:26.136291709 +0300 +@@ -18,6 +18,12 @@ + the same implementation of stdio extension API, except that some fields + have different naming conventions, or their access requires some casts. */ + ++/* Glibc 2.28 made _IO_IN_BACKUP private. For now, work around this ++ problem by defining it ourselves. FIXME: Do not rely on glibc ++ internals. */ ++#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN ++# define _IO_IN_BACKUP 0x100 ++#endif + + /* BSD stdio derived implementations. */ + diff --git a/package/dc3dd/0004-Make-getdate.y-compile-on-QNX-and-NetBSD-5-i386.patch b/package/dc3dd/0004-Make-getdate.y-compile-on-QNX-and-NetBSD-5-i386.patch new file mode 100644 index 00000000..6b7344e6 --- /dev/null +++ b/package/dc3dd/0004-Make-getdate.y-compile-on-QNX-and-NetBSD-5-i386.patch @@ -0,0 +1,104 @@ +From: Bruno Haible +Date: Thu, 17 Sep 2009 22:42:33 +0200 +Subject: Make getdate.y compile on QNX and NetBSD 5 / i386. + +Forwarded: https://sourceforge.net/p/dc3dd/bugs/23/ +Origin: https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=a68c9ab3cfc8ac7cf2a709b0c1aa93229f8635e6 +Signed-off-by: Waldemar Brodkorb +Upstream: https://sources.debian.org/patches/dc3dd/7.3.1-3/Make-getdate.y-compile-on-QNX-and-NetBSD-5-i386.patch/ +--- + lib/getdate.y | 33 ++++++++++++++++++++++----------- + m4/getdate.m4 | 14 ++++++++++++++ + 2 files changed, 36 insertions(+), 11 deletions(-) + +diff --git a/lib/getdate.y b/lib/getdate.y +index 1deec51..d2c23f2 100644 +--- a/lib/getdate.y ++++ b/lib/getdate.y +@@ -108,12 +108,21 @@ + + #define HOUR(x) ((x) * 60) + +-/* Lots of this code assumes time_t and time_t-like values fit into +- long int. It also assumes that signed integer overflow silently +- wraps around, but there's no portable way to check for that at +- compile-time. */ ++/* long_time_t is a signed integer type that contains all time_t values. */ + verify (TYPE_IS_INTEGER (time_t)); +-verify (LONG_MIN <= TYPE_MINIMUM (time_t) && TYPE_MAXIMUM (time_t) <= LONG_MAX); ++#if TIME_T_FITS_IN_LONG_INT ++typedef long int long_time_t; ++#else ++typedef time_t long_time_t; ++#endif ++ ++/* Lots of this code assumes time_t and time_t-like values fit into ++ long_time_t. */ ++verify (TYPE_MINIMUM (long_time_t) <= TYPE_MINIMUM (time_t) ++ && TYPE_MAXIMUM (time_t) <= TYPE_MAXIMUM (long_time_t)); ++ ++/* FIXME: It also assumes that signed integer overflow silently wraps around, ++ but this is not true any more with recent versions of GCC 4. */ + + /* An integer value, and the number of digits in its textual + representation. */ +@@ -146,7 +155,7 @@ typedef struct + long int day; + long int hour; + long int minutes; +- long int seconds; ++ long_time_t seconds; + long int ns; + } relative_time; + +@@ -1492,20 +1501,22 @@ get_date (struct timespec *result, char const *p, struct timespec const *now) + time_t t1 = t0 + d1; + long int d2 = 60 * pc.rel.minutes; + time_t t2 = t1 + d2; +- long int d3 = pc.rel.seconds; +- time_t t3 = t2 + d3; ++ long_time_t d3 = pc.rel.seconds; ++ long_time_t t3 = t2 + d3; + long int d4 = (sum_ns - normalized_ns) / BILLION; +- time_t t4 = t3 + d4; ++ long_time_t t4 = t3 + d4; ++ time_t t5 = t4; + + if ((d1 / (60 * 60) ^ pc.rel.hour) + | (d2 / 60 ^ pc.rel.minutes) + | ((t1 < t0) ^ (d1 < 0)) + | ((t2 < t1) ^ (d2 < 0)) + | ((t3 < t2) ^ (d3 < 0)) +- | ((t4 < t3) ^ (d4 < 0))) ++ | ((t4 < t3) ^ (d4 < 0)) ++ | (t5 != t4)) + goto fail; + +- result->tv_sec = t4; ++ result->tv_sec = t5; + result->tv_nsec = normalized_ns; + } + } +diff --git a/m4/getdate.m4 b/m4/getdate.m4 +index d160329..cfbb86f 100644 +--- a/m4/getdate.m4 ++++ b/m4/getdate.m4 +@@ -30,4 +30,18 @@ AC_DEFUN([gl_GETDATE], + AC_STRUCT_TIMEZONE + AC_REQUIRE([gl_CLOCK_TIME]) + AC_REQUIRE([gl_TM_GMTOFF]) ++ AC_COMPILE_IFELSE( ++ [AC_LANG_SOURCE([[ ++#include /* for time_t */ ++#include /* for CHAR_BIT, LONG_MIN, LONG_MAX */ ++#define TYPE_MINIMUM(t) \ ++ ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))) ++#define TYPE_MAXIMUM(t) \ ++ ((t) ((t) 0 < (t) -1 ? (t) -1 : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))) ++typedef int verify_min[2 * (LONG_MIN <= TYPE_MINIMUM (time_t)) - 1]; ++typedef int verify_max[2 * (TYPE_MAXIMUM (time_t) <= LONG_MAX) - 1]; ++ ]])], ++ [AC_DEFINE([TIME_T_FITS_IN_LONG_INT], [1], ++ [Define to 1 if all 'time_t' values fit in a 'long int'.]) ++ ]) + ]) diff --git a/package/dc3dd/Config.in b/package/dc3dd/Config.in new file mode 100644 index 00000000..bd181b70 --- /dev/null +++ b/package/dc3dd/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_DC3DD + bool "dc3dd" + depends on !BR2_RISCV_32 + depends on !BR2_arc + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_TOOLCHAIN_USES_MUSL + help + dc3dd is a patch to the GNU dd program, this version has + several features intended for forensic acquisition of data. + Highlights include hashing on-the-fly, split output files, + pattern writing, a progress meter, and file verification. + + https://sourceforge.net/projects/dc3dd/ + +comment "dc3dd needs a glibc or uClibc toolchain w/ threads" + depends on !BR2_RISCV_32 + depends on !BR2_arc + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_TOOLCHAIN_USES_MUSL diff --git a/package/dc3dd/dc3dd.hash b/package/dc3dd/dc3dd.hash new file mode 100644 index 00000000..5f01e6f9 --- /dev/null +++ b/package/dc3dd/dc3dd.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/dc3dd/files/dc3dd/7.2/ +sha1 1bfe81a921a8473a6ecb46f328ecaab761afb55d dc3dd-7.2.641.tar.xz +# Locally computed +sha256 7f50aadc38649845ab11014d11013928411c9d2128c941e9630939d4c28cae6d dc3dd-7.2.641.tar.xz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/dc3dd/dc3dd.mk b/package/dc3dd/dc3dd.mk new file mode 100644 index 00000000..c31ab9e1 --- /dev/null +++ b/package/dc3dd/dc3dd.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# dc3dd +# +################################################################################ + +DC3DD_VERSION_MAJOR = 7.2 +DC3DD_VERSION = $(DC3DD_VERSION_MAJOR).641 +DC3DD_SOURCE = dc3dd-$(DC3DD_VERSION).tar.xz +DC3DD_SITE = https://downloads.sourceforge.net/project/dc3dd/dc3dd/$(DC3DD_VERSION_MAJOR) +DC3DD_LICENSE = GPL-3.0+ +DC3DD_LICENSE_FILES = COPYING +# We are patching Makefile.am, so we need to autoreconf. We also need to +# enable autopoint as dc3dd comes with an old gettext infra. +DC3DD_AUTORECONF = YES +DC3DD_AUTOPOINT = YES + +DC3DD_CONF_ENV = ac_cv_func_working_mktime=yes + +$(eval $(autotools-package)) diff --git a/package/dcron/0001-main.c-add-newline-to-logfile-openning-error-message.patch b/package/dcron/0001-main.c-add-newline-to-logfile-openning-error-message.patch new file mode 100644 index 00000000..6abc3105 --- /dev/null +++ b/package/dcron/0001-main.c-add-newline-to-logfile-openning-error-message.patch @@ -0,0 +1,27 @@ +From 2710bc67cd920323da9b23a3d60193577bd43d71 Mon Sep 17 00:00:00 2001 +From: Carlos Santos +Date: Sat, 20 Jul 2019 00:27:31 -0300 +Subject: [PATCH] main.c: add newline to logfile openning error message + +Signed-off-by: Carlos Santos +[Upstream status: https://github.com/dubiousjim/dcron/pull/22] +--- + main.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/main.c b/main.c +index 0eba280..2606db8 100644 +--- a/main.c ++++ b/main.c +@@ -261,7 +261,7 @@ main(int ac, char **av) + dup2(fd, 2); + } else { + int n = errno; +- fdprintf(2, "failed to open logfile '%s', reason: %s", LogFile, strerror(n)); ++ fdprintf(2, "failed to open logfile '%s', reason: %s\n", LogFile, strerror(n)); + exit(n); + } + } +-- +2.18.1 + diff --git a/package/dcron/0002-system-crontab.patch b/package/dcron/0002-system-crontab.patch new file mode 100644 index 00000000..ac293687 --- /dev/null +++ b/package/dcron/0002-system-crontab.patch @@ -0,0 +1,28 @@ +From 1fd99b71b063b1573beaf9f6b801ec5be2fbe24f Mon Sep 17 00:00:00 2001 +From: Mario Haustein +Date: Fri, 2 Sep 2022 23:20:14 +0200 +Subject: [PATCH] Make @hourly, @daily, ... work again + +closes #15 + +Signed-off-by: Mario Haustein +Upstream: https://github.com/dubiousjim/dcron/pull/35 +--- + database.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/database.c b/database.c +index 37cf17a..6ec720e 100644 +--- a/database.c ++++ b/database.c +@@ -455,6 +455,8 @@ SynchronizeFile(const char *dpath, const char *fileName, const char *userName) + line.cl_Days[j] = 1; + for (j=0; j<12; ++j) + line.cl_Mons[j] = 1; ++ for (j=0; j<7; ++j) ++ line.cl_Dow[j] = ALL_DOW; + } + + while (*ptr == ' ' || *ptr == '\t') +-- +2.35.1 diff --git a/package/dcron/Config.in b/package/dcron/Config.in new file mode 100644 index 00000000..d7f66bdb --- /dev/null +++ b/package/dcron/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_DCRON + bool "dcron" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + dcron is a time-based job scheduler with anacron-like + features. It works as a background daemon that parses + individual crontab files and executes commands on behalf of + the users in question. + + Upon installation, this package will enable a system level + cron daemon with hourly, daily, weekly and monthly crontabs. + + However, it doesn't allow non root users to create their own + crontab file. This is because /var/spool/cron/crontabs is + non user writable. + + Typically, a crontab group is created on the system and + users allowed to create crontab entries are added into this + group, while crontab executable is owned by root:crontab + with sgid bit enabled. + + http://www.jimpryor.net/linux/dcron.html diff --git a/package/dcron/S90dcron b/package/dcron/S90dcron new file mode 100644 index 00000000..de21d2ca --- /dev/null +++ b/package/dcron/S90dcron @@ -0,0 +1,22 @@ +#!/bin/sh + +case "$1" in + start) + printf "Starting cron ... " + start-stop-daemon -S -q -m -b -p /var/run/dcron.pid --exec /usr/sbin/crond -- -f + echo "done." + ;; + stop) + printf "Stopping cron ..." + start-stop-daemon -K -q -p /var/run/dcron.pid + echo "done." + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" + ;; +esac diff --git a/package/dcron/dcron.hash b/package/dcron/dcron.hash new file mode 100644 index 00000000..35b02eb7 --- /dev/null +++ b/package/dcron/dcron.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 5a53930ba27b57c06c3b03635788cf569990283bde8ea9c1ee820e13f988288d dcron-1ba33c3325df48de46263276a43ed76cf9d81518.tar.gz +sha256 640d90f6ee401241ff62834d0d1b33f83049e99b8bfdfa04ed1b0a1635dde3e7 COPYING diff --git a/package/dcron/dcron.mk b/package/dcron/dcron.mk new file mode 100644 index 00000000..f0c3efbf --- /dev/null +++ b/package/dcron/dcron.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# dcron +# +################################################################################ + +DCRON_VERSION = 1ba33c3325df48de46263276a43ed76cf9d81518 +DCRON_SITE = $(call github,dubiousjim,dcron,$(DCRON_VERSION)) +DCRON_LICENSE = GPL-2.0+ +DCRON_LICENSE_FILES = COPYING + +define DCRON_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define DCRON_INSTALL_TARGET_CMDS + $(INSTALL) -D -m0700 $(@D)/crond $(TARGET_DIR)/usr/sbin/crond + $(INSTALL) -D -m4755 $(@D)/crontab $(TARGET_DIR)/usr/bin/crontab + $(INSTALL) -D -m0644 $(@D)/extra/root.crontab $(TARGET_DIR)/etc/cron.d/system + # Busybox provides run-parts, so there is no need to use nor install provided run-cron + $(SED) 's#/usr/sbin/run-cron#/bin/run-parts#g' $(TARGET_DIR)/etc/cron.d/system + $(INSTALL) -d -m0755 $(TARGET_DIR)/var/spool/cron/crontabs \ + $(TARGET_DIR)/etc/cron.daily $(TARGET_DIR)/etc/cron.hourly \ + $(TARGET_DIR)/etc/cron.monthly $(TARGET_DIR)/etc/cron.weekly +endef + +define DCRON_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/dcron/S90dcron $(TARGET_DIR)/etc/init.d/S90dcron +endef + +define DCRON_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/dcron/dcron.service \ + $(TARGET_DIR)/usr/lib/systemd/system/dcron.service +endef + +$(eval $(generic-package)) diff --git a/package/dcron/dcron.service b/package/dcron/dcron.service new file mode 100644 index 00000000..924ed722 --- /dev/null +++ b/package/dcron/dcron.service @@ -0,0 +1,10 @@ +[Unit] +Description=Task scheduler daemon +After=syslog.target + +[Service] +ExecStart=/usr/sbin/crond -S +Type=forking + +[Install] +WantedBy=multi-user.target diff --git a/package/ddrescue/Config.in b/package/ddrescue/Config.in new file mode 100644 index 00000000..a58561cb --- /dev/null +++ b/package/ddrescue/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_DDRESCUE + bool "ddrescue" + depends on BR2_INSTALL_LIBSTDCPP + help + GNU ddrescue is a data recovery tool. It copies data from one + file or block device (hard disc, cdrom, etc) to another, + trying to rescue the good parts first in case of read errors. + + http://www.gnu.org/software/ddrescue/ddrescue.html + +comment "ddrescue needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/ddrescue/ddrescue.hash b/package/ddrescue/ddrescue.hash new file mode 100644 index 00000000..4103d4fd --- /dev/null +++ b/package/ddrescue/ddrescue.hash @@ -0,0 +1,4 @@ +# From https://lists.gnu.org/archive/html/info-gnu/2024-01/msg00014.html +sha256 6626c07a7ca1cc1d03cad0958522c5279b156222d32c342e81117cfefaeb10c1 ddrescue-1.28.tar.lz +# Locally computed +sha256 3d77c1a58fbde5ddba612d1fe09965e20a3804953eca12e8c1892298bb8a5eef COPYING diff --git a/package/ddrescue/ddrescue.mk b/package/ddrescue/ddrescue.mk new file mode 100644 index 00000000..13798bb4 --- /dev/null +++ b/package/ddrescue/ddrescue.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# ddrescue +# +################################################################################ + +DDRESCUE_VERSION = 1.28 +DDRESCUE_SOURCE = ddrescue-$(DDRESCUE_VERSION).tar.lz +DDRESCUE_SITE = http://download.savannah.gnu.org/releases/ddrescue +DDRESCUE_LICENSE = GPL-2.0+ +DDRESCUE_LICENSE_FILES = COPYING + +define DDRESCUE_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_MAKE_ENV) ./configure \ + --prefix=/usr \ + $(TARGET_CONFIGURE_OPTS) \ + ) +endef + +DDRESCUE_CXXFLAGS = $(TARGET_CXXFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +DDRESCUE_CXXFLAGS += -O0 +endif + +define DDRESCUE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CXXFLAGS="$(DDRESCUE_CXXFLAGS)" -C $(@D) +endef + +define DDRESCUE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" install +endef + +$(eval $(generic-package)) diff --git a/package/debianutils/Config.in b/package/debianutils/Config.in new file mode 100644 index 00000000..c43f3300 --- /dev/null +++ b/package/debianutils/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_DEBIANUTILS + bool "debianutils" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + Miscellaneous utilities specific to Debian. + + The specific utilities included are: add-shell installkernel + ischroot remove-shell run-parts savelog tempfile which. + + https://tracker.debian.org/pkg/debianutils diff --git a/package/debianutils/debianutils.hash b/package/debianutils/debianutils.hash new file mode 100644 index 00000000..449e93ee --- /dev/null +++ b/package/debianutils/debianutils.hash @@ -0,0 +1,4 @@ +# From http://snapshot.debian.org/archive/debian/20200525T145753Z/pool/main/d/debianutils/debianutils_4.11.dsc +sha256 bb5ce6290696b0d623377521ed217f484aa98f7346c5f7c48f9ae3e1acfb7151 debianutils_4.11.tar.xz +# Locally calculated +sha256 3c8b5112cb8f74ba959233291908d73f527afa6f1d96f93649aeb912b5884567 debian/copyright diff --git a/package/debianutils/debianutils.mk b/package/debianutils/debianutils.mk new file mode 100644 index 00000000..d2c41130 --- /dev/null +++ b/package/debianutils/debianutils.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# debianutils +# +################################################################################ + +DEBIANUTILS_VERSION = 4.11 +DEBIANUTILS_SOURCE = debianutils_$(DEBIANUTILS_VERSION).tar.xz +DEBIANUTILS_SITE = http://snapshot.debian.org/archive/debian/20200525T145753Z/pool/main/d/debianutils +DEBIANUTILS_CONF_OPTS = --exec-prefix=/ +DEBIANUTILS_LICENSE = GPL-2.0+, SMAIL (savelog) +DEBIANUTILS_LICENSE_FILES = debian/copyright + +$(eval $(autotools-package)) diff --git a/package/dehydrated/Config.in b/package/dehydrated/Config.in new file mode 100644 index 00000000..13b3632f --- /dev/null +++ b/package/dehydrated/Config.in @@ -0,0 +1,33 @@ +config BR2_PACKAGE_DEHYDRATED + bool "dehydrated" + depends on BR2_USE_MMU # bash + select BR2_PACKAGE_BASH + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBCURL_CURL + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBOPENSSL_BIN if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBRESSL_BIN if BR2_PACKAGE_LIBRESSL + help + Dehydrated is a client for signing certificates with an + ACME-server (e.g. Let's Encrypt) implemented as a relatively + simple (zsh-compatible) bash-script. This client supports + both ACME v1 and the new ACME v2 including support for + wildcard certificates! + + To use this script in Buildroot: + - Create /etc/dehydrated/domains.txt + - Make sure that "dehydrated -c" is called regularly, e.g. + from cron. + - Make sure /etc/dehydrated is writable. + - Configure the webserver to export the WELLKNOWN directory + (/var/www/dehydrated) as /.well-known/acme-challenge + - Configure the webserver to use the certificates under + /etc/dehydrated/certs/ + - Register a HOOK to reload the webserver after the + certificates have been renewed. + + You probably need to install a custom /etc/dehydrated/config + with the rootfs overlay. + + https://github.com/dehydrated-io/dehydrated diff --git a/package/dehydrated/dehydrated.hash b/package/dehydrated/dehydrated.hash new file mode 100644 index 00000000..711e5a6c --- /dev/null +++ b/package/dehydrated/dehydrated.hash @@ -0,0 +1,6 @@ +# Locally computed after verifying +# https://github.com/dehydrated-io/dehydrated/releases/download/v0.7.1/dehydrated-0.7.1.tar.gz.asc +# with key 3C2F2605E078A1E18F4793909C4DBE6CF438F333 from https://keybase.io/lukas2511 +sha256 4d28a0598230b276b316070ce16be7d9ab984f3bdef482acf0bc24fcdcc0d0b0 dehydrated-0.7.1.tar.gz +# License, locally computed +sha256 f25ab9c5f13abf15ab097180423ef6b82a89c552e92d49ae627762ee9c04a3a8 LICENSE diff --git a/package/dehydrated/dehydrated.mk b/package/dehydrated/dehydrated.mk new file mode 100644 index 00000000..f8909d8a --- /dev/null +++ b/package/dehydrated/dehydrated.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# dehydrated +# +################################################################################ + +DEHYDRATED_VERSION = 0.7.1 +DEHYDRATED_SITE = https://github.com/dehydrated-io/dehydrated/releases/download/v$(DEHYDRATED_VERSION) + +DEHYDRATED_LICENSE = MIT +DEHYDRATED_LICENSE_FILES = LICENSE + +define DEHYDRATED_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/dehydrated $(TARGET_DIR)/usr/bin/dehydrated + $(INSTALL) -D -m 0644 $(@D)/docs/examples/config $(TARGET_DIR)/etc/dehydrated/config +endef + +$(eval $(generic-package)) diff --git a/package/dejavu/Config.in b/package/dejavu/Config.in new file mode 100644 index 00000000..5d21e560 --- /dev/null +++ b/package/dejavu/Config.in @@ -0,0 +1,33 @@ +config BR2_PACKAGE_DEJAVU + bool "DejaVu fonts" + help + The DejaVu fonts are a font family based on the Vera Fonts. + Its purpose is to provide a wider range of characters while + maintaining the original look and feel through the process + of collaborative development, under a Free license. + + http://dejavu-fonts.org + +if BR2_PACKAGE_DEJAVU + +config BR2_PACKAGE_DEJAVU_MONO + bool "mono fonts" + default y + +config BR2_PACKAGE_DEJAVU_SANS + bool "sans fonts" + default y + +config BR2_PACKAGE_DEJAVU_SERIF + bool "serif fonts" + default y + +config BR2_PACKAGE_DEJAVU_SANS_CONDENSED + bool "sans condensed fonts" + default y + +config BR2_PACKAGE_DEJAVU_SERIF_CONDENSED + bool "serif condensed fonts" + default y + +endif diff --git a/package/dejavu/dejavu.hash b/package/dejavu/dejavu.hash new file mode 100644 index 00000000..def64cbe --- /dev/null +++ b/package/dejavu/dejavu.hash @@ -0,0 +1,5 @@ +# From https://dejavu-fonts.github.io/Download.html +sha256 fa9ca4d13871dd122f61258a80d01751d603b4d3ee14095d65453b4e846e17d7 dejavu-fonts-ttf-2.37.tar.bz2 + +# locally computed +sha256 7a083b136e64d064794c3419751e5c7dd10d2f64c108fe5ba161eae5e5958a93 LICENSE diff --git a/package/dejavu/dejavu.mk b/package/dejavu/dejavu.mk new file mode 100644 index 00000000..9b57f099 --- /dev/null +++ b/package/dejavu/dejavu.mk @@ -0,0 +1,62 @@ +################################################################################ +# +# dejavu +# +################################################################################ + +DEJAVU_VERSION = 2.37 +DEJAVU_SITE = https://sourceforge.net/projects/dejavu/files/dejavu/$(DEJAVU_VERSION) +DEJAVU_SOURCE = dejavu-fonts-ttf-$(DEJAVU_VERSION).tar.bz2 +DEJAVU_LICENSE_FILES = LICENSE + +DEJAVU_FONTS_INSTALL = +DEJAVU_FONTCONFIG_CONF_INSTALL = + +ifeq ($(BR2_PACKAGE_DEJAVU_MONO),y) +DEJAVU_FONTS_INSTALL += DejaVuSansMono*.ttf +DEJAVU_FONTCONFIG_CONF_INSTALL += \ + 20-unhint-small-dejavu-sans-mono.conf \ + 57-dejavu-sans-mono.conf +endif + +ifeq ($(BR2_PACKAGE_DEJAVU_SANS),y) +DEJAVU_FONTS_INSTALL += DejaVuSans.ttf DejaVuSans-*.ttf +DEJAVU_FONTCONFIG_CONF_INSTALL += \ + 20-unhint-small-dejavu-sans.conf \ + 57-dejavu-sans.conf +endif + +ifeq ($(BR2_PACKAGE_DEJAVU_SERIF),y) +DEJAVU_FONTS_INSTALL += DejaVuSerif.ttf DejaVuSerif-*.ttf +DEJAVU_FONTCONFIG_CONF_INSTALL += \ + 20-unhint-small-dejavu-serif.conf \ + 57-dejavu-serif.conf +endif + +ifeq ($(BR2_PACKAGE_DEJAVU_SANS_CONDENSED),y) +DEJAVU_FONTS_INSTALL += DejaVuSansCondensed*.ttf +endif + +ifeq ($(BR2_PACKAGE_DEJAVU_SERIF_CONDENSED),y) +DEJAVU_FONTS_INSTALL += DejaVuSerifCondensed*.ttf +endif + +ifeq ($(BR2_PACKAGE_FONTCONFIG),y) +define DEJAVU_FONTCONFIG_CONF_INSTALL_CMDS + for i in $(DEJAVU_FONTCONFIG_CONF_INSTALL) ; do \ + $(INSTALL) -D -m 0644 $(@D)/fontconfig/$$i \ + $(TARGET_DIR)/usr/share/fontconfig/conf.avail/$$i || exit 1 ; \ + done +endef +endif + +define DEJAVU_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/share/fonts/dejavu/ + for i in $(DEJAVU_FONTS_INSTALL) ; do \ + $(INSTALL) -m 0644 $(@D)/ttf/$$i \ + $(TARGET_DIR)/usr/share/fonts/dejavu/ || exit 1 ; \ + done + $(DEJAVU_FONTCONFIG_CONF_INSTALL_CMDS) +endef + +$(eval $(generic-package)) diff --git a/package/delve/Config.in b/package/delve/Config.in new file mode 100644 index 00000000..2ba70e8c --- /dev/null +++ b/package/delve/Config.in @@ -0,0 +1,23 @@ +# Supported architectures are listed in +# pkg/proc/native/support_sentinel.go +config BR2_PACKAGE_DELVE_ARCH_SUPPORTS + bool + default y if BR2_aarch64 + default y if BR2_i386 + default y if BR2_x86_64 + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + +config BR2_PACKAGE_DELVE + bool "delve" + depends on BR2_PACKAGE_DELVE_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_HOST_GO + help + Delve is a debugger for the Go programming language. + + https://github.com/go-delve/delve + +comment "delve needs a toolchain w/ threads" + depends on BR2_PACKAGE_DELVE_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/delve/Config.in.host b/package/delve/Config.in.host new file mode 100644 index 00000000..0938ab06 --- /dev/null +++ b/package/delve/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_DELVE + bool "host delve" + depends on BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_GO + help + Delve is a debugger for the Go programming language. + + https://github.com/go-delve/delve diff --git a/package/delve/delve.hash b/package/delve/delve.hash new file mode 100644 index 00000000..d99133ab --- /dev/null +++ b/package/delve/delve.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 fe6f0d97c233d4f0f1ed422c11508cc57c14e9e0915f9a258f1912c46824cbfb delve-1.22.1-go2.tar.gz +sha256 778864b990007e8cef6633f8c372dd05bac1fada6cf67b008afb1483f83b38f5 LICENSE diff --git a/package/delve/delve.mk b/package/delve/delve.mk new file mode 100644 index 00000000..408286e3 --- /dev/null +++ b/package/delve/delve.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# delve +# +################################################################################ + +DELVE_VERSION = 1.22.1 +DELVE_SITE = $(call github,go-delve,delve,v$(DELVE_VERSION)) +DELVE_LICENSE = MIT +DELVE_LICENSE_FILES = LICENSE +DELVE_DEPENDENCIES = host-pkgconf + +DELVE_TAGS = cgo +DELVE_BUILD_TARGETS = cmd/dlv +DELVE_INSTALL_BINS = $(notdir $(DELVE_BUILD_TARGETS)) + +HOST_DELVE_TAGS = cgo +HOST_DELVE_BUILD_TARGETS = cmd/dlv +HOST_DELVE_INSTALL_BINS = $(notdir $(HOST_DELVE_BUILD_TARGETS)) + +$(eval $(golang-package)) +$(eval $(host-golang-package)) diff --git a/package/depot-tools/Config.in.host b/package/depot-tools/Config.in.host new file mode 100644 index 00000000..935331de --- /dev/null +++ b/package/depot-tools/Config.in.host @@ -0,0 +1,10 @@ +config BR2_PACKAGE_HOST_DEPOT_TOOLS + bool "host depot-tools" + select BR2_PACKAGE_HOST_PYTHON3 + select BR2_PACKAGE_HOST_PYTHON3_SSL + select BR2_PACKAGE_HOST_PYTHON_SIX + help + Chromium and Chromium OS use a package of scripts called + depot_tools to manage checkouts and code reviews. + + https://www.chromium.org/developers/how-tos/install-depot-tools/ diff --git a/package/depot-tools/depot-tools.hash b/package/depot-tools/depot-tools.hash new file mode 100644 index 00000000..5e172a9a --- /dev/null +++ b/package/depot-tools/depot-tools.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c085a4bc561c90555555461d5810dd406e723618313f24eb2161421f9306b498 depot-tools-75932421da2cd8b5807a4ac52ed2a6f46d7c2120-git4.tar.gz +sha256 984523ee987f4e8b72d61df37d8f1189a7077cd4b77e41a397e35593b297a29d LICENSE diff --git a/package/depot-tools/depot-tools.mk b/package/depot-tools/depot-tools.mk new file mode 100644 index 00000000..0d7048b8 --- /dev/null +++ b/package/depot-tools/depot-tools.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# depot-tools +# +################################################################################ + +DEPOT_TOOLS_VERSION = 75932421da2cd8b5807a4ac52ed2a6f46d7c2120 +DEPOT_TOOLS_SITE = https://chromium.googlesource.com/chromium/tools/depot_tools +DEPOT_TOOLS_SITE_METHOD = git +DEPOT_TOOLS_LICENSE = BSD-3-Clause +DEPOT_TOOLS_LICENSE_FILES = LICENSE + +HOST_DEPOT_TOOLS_DEPENDENCIES = \ + host-python3 \ + host-python-httplib2 \ + host-python-pyparsing \ + host-python-six + +define HOST_DEPOT_TOOLS_INSTALL_CMDS + mkdir -p $(HOST_DIR)/share/depot_tools + cp -dprf $(@D)/* $(HOST_DIR)/share/depot_tools/ +endef + +$(eval $(host-generic-package)) diff --git a/package/desktop-file-utils/desktop-file-utils.hash b/package/desktop-file-utils/desktop-file-utils.hash new file mode 100644 index 00000000..48623831 --- /dev/null +++ b/package/desktop-file-utils/desktop-file-utils.hash @@ -0,0 +1,3 @@ +# Locally calculated: +sha256 b26dbde79ea72c8c84fb7f9d870ffd857381d049a86d25e0038c4cef4c747309 desktop-file-utils-0.26.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/desktop-file-utils/desktop-file-utils.mk b/package/desktop-file-utils/desktop-file-utils.mk new file mode 100644 index 00000000..12f000ed --- /dev/null +++ b/package/desktop-file-utils/desktop-file-utils.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# desktop-file-utils +# +################################################################################ + +DESKTOP_FILE_UTILS_VERSION = 0.26 +DESKTOP_FILE_UTILS_SOURCE = desktop-file-utils-$(DESKTOP_FILE_UTILS_VERSION).tar.xz +DESKTOP_FILE_UTILS_SITE = https://www.freedesktop.org/software/desktop-file-utils/releases +DESKTOP_FILE_UTILS_LICENSE = GPL-2.0+ +DESKTOP_FILE_UTILS_LICENSE_FILES = COPYING +HOST_DESKTOP_FILE_UTILS_DEPENDENCIES = host-libglib2 + +$(eval $(host-meson-package)) diff --git a/package/dfu-programmer/Config.in b/package/dfu-programmer/Config.in new file mode 100644 index 00000000..6e0743e9 --- /dev/null +++ b/package/dfu-programmer/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_DFU_PROGRAMMER + bool "dfu-programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + Dfu-programmer is a multi-platform command-line programmer + for Atmel (8051, AVR, XMEGA & AVR32) chips with a USB + bootloader supporting ISP. Most Atmel devices having a USB + port come pre-programmed with the bootloader, and this is a + lightweight alternative to Atmel's own FLIP/BatchISP program. + + http://dfu-programmer.github.io/ + +comment "dfu-programmer needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/dfu-programmer/dfu-programmer.hash b/package/dfu-programmer/dfu-programmer.hash new file mode 100644 index 00000000..7260dfce --- /dev/null +++ b/package/dfu-programmer/dfu-programmer.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 844e469be559657bc52c9d9d03c30846acd11ffbb1ddd42438fa8af1d2b8587d dfu-programmer-1.1.0.tar.gz +sha256 d8fb44c26fecbb2b8a368a6c0ed4f5478a401fab03744325407736a80383af76 COPYING diff --git a/package/dfu-programmer/dfu-programmer.mk b/package/dfu-programmer/dfu-programmer.mk new file mode 100644 index 00000000..4e5f2299 --- /dev/null +++ b/package/dfu-programmer/dfu-programmer.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# dfu-programmer +# +################################################################################ + +DFU_PROGRAMMER_VERSION = 1.1.0 +DFU_PROGRAMMER_SITE = https://github.com/dfu-programmer/dfu-programmer/releases/download/v$(DFU_PROGRAMMER_VERSION) +DFU_PROGRAMMER_LICENSE = GPL-2.0+ +DFU_PROGRAMMER_LICENSE_FILES = COPYING +DFU_PROGRAMMER_DEPENDENCIES = libusb + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +DFU_PROGRAMMER_CONF_OPTS += LIBS=-latomic +endif + +$(eval $(autotools-package)) diff --git a/package/dfu-util/Config.in b/package/dfu-util/Config.in new file mode 100644 index 00000000..2eddbf05 --- /dev/null +++ b/package/dfu-util/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_DFU_UTIL + bool "dfu-util" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + Dfu-util is the host side implementation of the DFU 1.0 and + DFU 1.1 specification of the USB forum. + DFU is intended to download and upload firmware to devices + connected over USB. + + http://dfu-util.sourceforge.net/ + +comment "dfu-util needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/dfu-util/Config.in.host b/package/dfu-util/Config.in.host new file mode 100644 index 00000000..5ce0da03 --- /dev/null +++ b/package/dfu-util/Config.in.host @@ -0,0 +1,13 @@ +config BR2_PACKAGE_HOST_DFU_UTIL + bool "host dfu-util" + depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb + help + Dfu-util is the host side implementation of the DFU 1.0 and + DFU 1.1 specification of the USB forum. + DFU is intended to download and upload firmware to devices + connected over USB. + + http://dfu-util.sourceforge.net/ + +comment "host dfu-util needs a toolchain w/ host gcc >= 4.9" + depends on !BR2_HOST_GCC_AT_LEAST_4_9 diff --git a/package/dfu-util/dfu-util.hash b/package/dfu-util/dfu-util.hash new file mode 100644 index 00000000..4ca28a26 --- /dev/null +++ b/package/dfu-util/dfu-util.hash @@ -0,0 +1,6 @@ +# From http://dfu-util.sourceforge.net/releases/dfu-util-0.11.tar.gz.md5 +md5 31c983543a1fe8f03260ca4d56ad4f43 dfu-util-0.11.tar.gz + +# Locally computed +sha256 b4b53ba21a82ef7e3d4c47df2952adf5fa494f499b6b0b57c58c5d04ae8ff19e dfu-util-0.11.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/dfu-util/dfu-util.mk b/package/dfu-util/dfu-util.mk new file mode 100644 index 00000000..638cb32f --- /dev/null +++ b/package/dfu-util/dfu-util.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# dfu-util +# +################################################################################ + +DFU_UTIL_VERSION = 0.11 +DFU_UTIL_SITE = http://dfu-util.sourceforge.net/releases +DFU_UTIL_LICENSE = GPL-2.0+, LGPL-3.0 +DFU_UTIL_LICENSE_FILES = COPYING + +DFU_UTIL_DEPENDENCIES = libusb +HOST_DFU_UTIL_DEPENDENCIES = host-libusb + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/dhcp/Config.in b/package/dhcp/Config.in new file mode 100644 index 00000000..adc19dec --- /dev/null +++ b/package/dhcp/Config.in @@ -0,0 +1,46 @@ +config BR2_PACKAGE_DHCP + bool "dhcp (ISC)" + # fork() + depends on BR2_USE_MMU + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + DHCP relay agent from the ISC DHCP distribution. + + https://www.isc.org/downloads/dhcp/ + +if BR2_PACKAGE_DHCP + +config BR2_PACKAGE_DHCP_SERVER + bool "dhcp server" + help + DHCP server from the ISC DHCP distribution. + + This also installs omshell, an interactive tool to connect to, + query, and possibly change, the server's state via the Object + Management API (OMAPI). + +config BR2_PACKAGE_DHCP_SERVER_DELAYED_ACK + bool "Enable delayed ACK feature" + depends on BR2_PACKAGE_DHCP_SERVER + help + Enable delayed ACK feature in the ISC DHCP server. + +config BR2_PACKAGE_DHCP_SERVER_ENABLE_PARANOIA + bool "Enable paranoia options" + depends on BR2_PACKAGE_DHCP_SERVER + help + Add option --enable-paranoia to configure script. This + activates additional server options (-user, -group and + -chroot) to make dhcp server more secure. + +config BR2_PACKAGE_DHCP_RELAY + bool "dhcp relay" + help + DHCP relay agent from the ISC DHCP distribution. + +config BR2_PACKAGE_DHCP_CLIENT + bool "dhcp client" + help + DHCP client from the ISC DHCP distribution. + +endif diff --git a/package/dhcp/S80dhcp-relay b/package/dhcp/S80dhcp-relay new file mode 100644 index 00000000..211431bf --- /dev/null +++ b/package/dhcp/S80dhcp-relay @@ -0,0 +1,53 @@ +#!/bin/sh +# +# $Id: dhcp3-relay,v 1.1 2004/04/16 15:41:08 ml Exp $ +# + +# What servers should the DHCP relay forward requests to? +# e.g: SERVERS="192.168.0.1" +SERVERS="" + +# On what interfaces should the DHCP relay (dhrelay) serve DHCP requests? +INTERFACES="" + +# Additional options that are passed to the DHCP relay daemon? +OPTIONS="" + +# Read configuration variable file if it is present +CFG_FILE="/etc/default/dhcrelay" +[ -r "${CFG_FILE}" ] && . "${CFG_FILE}" + +# Sanity checks +test -f /usr/sbin/dhcrelay || exit 0 +test -n "$INTERFACES" || exit 0 +test -n "$SERVERS" || exit 0 + +# Build command line for interfaces (will be passed to dhrelay below.) +IFCMD="" +for I in $INTERFACES; do + IFCMD=${IFCMD}"-i "${I}" " +done + +DHCRELAYPID=/var/run/dhcrelay.pid + +case "$1" in + start) + printf "Starting DHCP relay: " + start-stop-daemon -S -q -x /usr/sbin/dhcrelay -- -q $OPTIONS $IFCMD $SERVERS + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping DHCP relay: " + start-stop-daemon -K -q -x /usr/sbin/dhcrelay + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart | force-reload) + $0 stop + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart|force-reload}" + exit 1 +esac + +exit 0 diff --git a/package/dhcp/S80dhcp-server b/package/dhcp/S80dhcp-server new file mode 100644 index 00000000..21092bab --- /dev/null +++ b/package/dhcp/S80dhcp-server @@ -0,0 +1,49 @@ +#!/bin/sh +# +# $Id: dhcp3-server.init.d,v 1.4 2003/07/13 19:12:41 mdz Exp $ +# + +# On what interfaces should the DHCP server (dhcpd) serve DHCP requests? +# Separate multiple interfaces with spaces, e.g. "eth0 eth1". +INTERFACES="" + +# Additional options that are passed to the DHCP server daemon? +OPTIONS="" + +NAME="dhcpd" +DAEMON="/usr/sbin/${NAME}" +CFG_FILE="/etc/default/${NAME}" + +# Read configuration variable file if it is present +[ -r "${CFG_FILE}" ] && . "${CFG_FILE}" + +# Sanity checks +test -f /usr/sbin/dhcpd || exit 0 +test -f /etc/dhcp/dhcpd.conf || exit 0 + +case "$1" in + start) + printf "Starting DHCP server: " + test -d /var/lib/dhcp/ || mkdir -p /var/lib/dhcp/ + test -f /var/lib/dhcp/dhcpd.leases || touch /var/lib/dhcp/dhcpd.leases + start-stop-daemon -S -q -x ${DAEMON} -- -q $OPTIONS $INTERFACES + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping DHCP server: " + start-stop-daemon -K -q -x ${DAEMON} + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart | force-reload) + $0 stop + $0 start + if [ "$?" != "0" ]; then + exit 1 + fi + ;; + *) + echo "Usage: $0 {start|stop|restart|force-reload}" + exit 1 +esac + +exit 0 diff --git a/package/dhcp/dhclient-script b/package/dhcp/dhclient-script new file mode 100755 index 00000000..cb292b6f --- /dev/null +++ b/package/dhcp/dhclient-script @@ -0,0 +1,284 @@ +#!/bin/sh + +# dhclient-script from OpenWRT project +# http://git.openwrt.org/?p=packages.git;a=blob;f=net/isc-dhcp/files/dhclient-script;h=4afebc0ad20ebac51c5baae5ed01c6713e3a0fd0;hb=HEAD + +make_resolv_conf() { + if [ x"$new_domain_name_servers" != x ]; then + cat /dev/null > /etc/resolv.conf.dhclient + chmod 644 /etc/resolv.conf.dhclient + if [ x"$new_domain_search" != x ]; then + echo search $new_domain_search >> /etc/resolv.conf.dhclient + elif [ x"$new_domain_name" != x ]; then + # Note that the DHCP 'Domain Name Option' is really just a domain + # name, and that this practice of using the domain name option as + # a search path is both nonstandard and deprecated. + echo search $new_domain_name >> /etc/resolv.conf.dhclient + fi + for nameserver in $new_domain_name_servers; do + echo nameserver $nameserver >>/etc/resolv.conf.dhclient + done + + elif [ "x${new_dhcp6_name_servers}" != x ] ; then + cat /dev/null > /etc/resolv.conf.dhclient6 + chmod 644 /etc/resolv.conf.dhclient6 + + if [ "x${new_dhcp6_domain_search}" != x ] ; then + echo search ${new_dhcp6_domain_search} >> /etc/resolv.conf.dhclient6 + fi + for nameserver in ${new_dhcp6_name_servers} ; do + echo nameserver ${nameserver} >> /etc/resolv.conf.dhclient6 + done + fi + + # if both v4 and v6 clients are running, concatenate results + cat /etc/resolv.conf.* > /etc/resolv.conf +} + +# Must be used on exit. Invokes the local dhcp client exit hooks, if any. +exit_with_hooks() { + exit_status=$1 + if [ -f /etc/dhclient-exit-hooks ]; then + . /etc/dhclient-exit-hooks + fi +# probably should do something with exit status of the local script + exit $exit_status +} + +# Invoke the local dhcp client enter hooks, if they exist. +if [ -f /etc/dhclient-enter-hooks ]; then + exit_status=0 + . /etc/dhclient-enter-hooks + # allow the local script to abort processing of this state + # local script must set exit_status variable to nonzero. + if [ $exit_status -ne 0 ]; then + exit $exit_status + fi +fi + +### +### DHCPv4 Handlers +### + +if [ x$new_broadcast_address != x ]; then + new_broadcast_arg="broadcast $new_broadcast_address" +fi +if [ x$new_subnet_mask != x ]; then + new_subnet_arg="netmask $new_subnet_mask" +fi +if [ x$alias_subnet_mask != x ]; then + alias_subnet_arg="netmask $alias_subnet_mask" +fi + +if [ x$reason = xMEDIUM ]; then + # Linux doesn't do mediums (ok, ok, media). + exit_with_hooks 0 +fi + +if [ x$reason = xPREINIT ]; then + if [ x$alias_ip_address != x ]; then + # Bring down alias interface. Its routes will disappear too. + ifconfig $interface:0- 0.0.0.0 + fi + ifconfig $interface 0.0.0.0 up + + # We need to give the kernel some time to get the interface up. + sleep 1 + + exit_with_hooks 0 +fi + +if [ x$reason = xARPCHECK ] || [ x$reason = xARPSEND ]; then + exit_with_hooks 0 +fi + +if [ x$reason = xBOUND ] || [ x$reason = xRENEW ] || \ + [ x$reason = xREBIND ] || [ x$reason = xREBOOT ]; then + current_hostname=`hostname` + if [ x$current_hostname = x ] || \ + [ x$current_hostname = x$old_host_name ]; then + if [ x$current_hostname = x ] || \ + [ x$new_host_name != x$old_host_name ]; then + hostname $new_host_name + fi + fi + + if [ x$old_ip_address != x ] && [ x$alias_ip_address != x ] && \ + [ x$alias_ip_address != x$old_ip_address ]; then + # Possible new alias. Remove old alias. + ifconfig $interface:0- 0.0.0.0 + fi + if [ x$old_ip_address != x ] && [ x$old_ip_address != x$new_ip_address ]; then + # IP address changed. Bringing down the interface will delete all routes, + # and clear the ARP cache. + ifconfig $interface 0.0.0.0 down + + fi + if [ x$old_ip_address = x ] || [ x$old_ip_address != x$new_ip_address ] || \ + [ x$reason = xBOUND ] || [ x$reason = xREBOOT ]; then + + ifconfig $interface $new_ip_address $new_subnet_arg \ + $new_broadcast_arg + for router in $new_routers; do + if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then + route add -host $router dev $interface + fi + route add default gw $router + done + fi + if [ x$new_ip_address != x$alias_ip_address ] && [ x$alias_ip_address != x ]; + then + ifconfig $interface:0- 0.0.0.0 + ifconfig $interface:0 $alias_ip_address $alias_subnet_arg + route add -host $alias_ip_address $interface:0 + fi + make_resolv_conf + exit_with_hooks 0 +fi + +if [ x$reason = xEXPIRE ] || [ x$reason = xFAIL ] || [ x$reason = xRELEASE ] \ + || [ x$reason = xSTOP ]; then + if [ x$alias_ip_address != x ]; then + # Turn off alias interface. + ifconfig $interface:0- 0.0.0.0 + fi + if [ x$old_ip_address != x ]; then + # Shut down interface, which will delete routes and clear arp cache. + ifconfig $interface 0.0.0.0 down + fi + if [ x$alias_ip_address != x ]; then + ifconfig $interface:0 $alias_ip_address $alias_subnet_arg + route add -host $alias_ip_address $interface:0 + fi + + # remove v4 dns configuration for this interface + rm /etc/resolv.conf.dhclient + cat /etc/resolv.conf.* > /etc/resolv.conf + + exit_with_hooks 0 +fi + +if [ x$reason = xTIMEOUT ]; then + if [ x$alias_ip_address != x ]; then + ifconfig $interface:0- 0.0.0.0 + fi + ifconfig $interface $new_ip_address $new_subnet_arg \ + $new_broadcast_arg + set $new_routers + if ping -q -c 1 $1; then + if [ x$new_ip_address != x$alias_ip_address ] && \ + [ x$alias_ip_address != x ]; then + ifconfig $interface:0 $alias_ip_address $alias_subnet_arg + route add -host $alias_ip_address dev $interface:0 + fi + for router in $new_routers; do + if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then + route add -host $router dev $interface + fi + route add default gw $router + done + make_resolv_conf + exit_with_hooks 0 + fi + ifconfig $interface 0.0.0.0 down + exit_with_hooks 1 +fi + +### +### DHCPv6 Handlers +### + +if [ x$reason = xPREINIT6 ]; then + # Ensure interface is up. + ifconfig ${interface} up + + # Remove any stale addresses from aborted clients. + ip -f inet6 addr flush dev ${interface} scope global + + exit_with_hooks 0 +fi + +if [ x${old_ip6_prefix} != x ] || [ x${new_ip6_prefix} != x ] ; then + echo Prefix ${reason} old=${old_ip6_prefix} new=${new_ip6_prefix} + + exit_with_hooks 0 +fi + +if [ x$reason = xBOUND6 ]; then + if [ x${new_ip6_address} = x ] || [ x${new_ip6_prefixlen} = x ] ; then + exit_with_hooks 2; + fi + + ifconfig ${interface} add ${new_ip6_address}/${new_ip6_prefixlen} + + # Check for nameserver options. + make_resolv_conf + +### << + # Set up softwire tunnel + if [ x${new_dhcp6_softwire} != x ] ; then + /etc/init.d/dhclient stop + ifconfig ${interface} 0.0.0.0 + ip -6 tunnel add tun0 mode ipip6 \ + remote ${new_dhcp6_softwire} \ + local ${new_ip6_address} \ + dev ${interface} encaplimit none + ip link set tun0 up + ip route add default dev tun0 + fi +### >> + + exit_with_hooks 0 +fi + +if [ x$reason = xRENEW6 ] || [ x$reason = xREBIND6 ]; then + if [ x${new_ip6_address} = x ] || [ x${new_ip6_prefixlen} = x ] ; then + exit_with_hooks 2; + fi + + ifconfig ${interface} add ${new_ip6_address}/${new_ip6_prefixlen} + + # Make sure nothing has moved around on us. + + # Nameservers/domains/etc. + if [ "x${new_dhcp6_name_servers}" != "x${old_dhcp6_name_servers}" ] || + [ "x${new_dhcp6_domain_search}" != "x${old_dhcp6_domain_search}" ] ; then + make_resolv_conf + fi + + exit_with_hooks 0 +fi + +if [ x$reason = xDEPREF6 ]; then + if [ x${new_ip6_address} = x ] ; then + exit_with_hooks 2; + fi + + # Busybox ifconfig has no way to communicate this to the kernel, so ignore it + + exit_with_hooks 0 +fi + +if [ x$reason = xEXPIRE6 -o x$reason = xRELEASE6 -o x$reason = xSTOP6 ]; then + if [ x${old_ip6_address} = x ] || [ x${old_ip6_prefixlen} = x ] ; then + exit_with_hooks 2; + fi + + ifconfig ${interface} del ${old_ip6_address}/${old_ip6_prefixlen} + + # remove v6 dns configuration for this interface + rm /etc/resolv.conf.dhclient6 + cat /etc/resolv.conf.* > /etc/resolv.conf + +### << + # Tear down softwire tunnel + if [ x${old_dhcp6_softwire} != x ] ; then + ip link set tun0 down + ip tunnel del tun0 + fi +### >> + + exit_with_hooks 0 +fi + +exit_with_hooks 0 diff --git a/package/dhcp/dhclient.conf b/package/dhcp/dhclient.conf new file mode 100644 index 00000000..0e6dcf96 --- /dev/null +++ b/package/dhcp/dhclient.conf @@ -0,0 +1,50 @@ +# Configuration file for /sbin/dhclient, which is included in Debian's +# dhcp3-client package. +# +# This is a sample configuration file for dhclient. See dhclient.conf's +# man page for more information about the syntax of this file +# and a more comprehensive list of the parameters understood by +# dhclient. +# +# Normally, if the DHCP server provides reasonable information and does +# not leave anything out (like the domain name, for example), then +# few changes must be made to this file, if any. +# + +#send host-name "andare.fugue.com"; +#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c; +#send dhcp-lease-time 3600; +#supersede domain-name "fugue.com home.vix.com"; +#prepend domain-name-servers 127.0.0.1; +request subnet-mask, broadcast-address, time-offset, routers, + domain-name, domain-name-servers, host-name, + netbios-name-servers, netbios-scope; +#require subnet-mask, domain-name-servers; +#timeout 60; +#retry 60; +#reboot 10; +#select-timeout 5; +#initial-interval 2; +#script "/etc/dhcp3/dhclient-script"; +#media "-link0 -link1 -link2", "link0 link1"; +#reject 192.33.137.209; + +#alias { +# interface "eth0"; +# fixed-address 192.5.5.213; +# option subnet-mask 255.255.255.255; +#} + +#lease { +# interface "eth0"; +# fixed-address 192.33.137.200; +# medium "link0 link1"; +# option host-name "andare.swiftmedia.com"; +# option subnet-mask 255.255.255.0; +# option broadcast-address 192.33.137.255; +# option routers 192.33.137.250; +# option domain-name-servers 127.0.0.1; +# renew 2 2000/1/12 00:00:01; +# rebind 2 2000/1/12 00:00:01; +# expire 2 2000/1/12 00:00:01; +#} diff --git a/package/dhcp/dhcp.hash b/package/dhcp/dhcp.hash new file mode 100644 index 00000000..7dd80a7a --- /dev/null +++ b/package/dhcp/dhcp.hash @@ -0,0 +1,4 @@ +# Verified from https://ftp.isc.org/isc/dhcp/4.4.3-P1/dhcp-4.4.3-P1.tar.gz.sha256.asc +sha256 0ac416bb55997ca8632174fd10737fd61cdb8dba2752160a335775bc21dc73c7 dhcp-4.4.3-P1.tar.gz +# Locally calculated +sha256 45a39c430be0920cb9570f34b32d2378fe6048c034f2f3265b9326d64ada73df LICENSE diff --git a/package/dhcp/dhcp.mk b/package/dhcp/dhcp.mk new file mode 100644 index 00000000..b3b7fe32 --- /dev/null +++ b/package/dhcp/dhcp.mk @@ -0,0 +1,167 @@ +################################################################################ +# +# dhcp +# +################################################################################ + +DHCP_VERSION = 4.4.3-P1 +DHCP_SITE = https://ftp.isc.org/isc/dhcp/$(DHCP_VERSION) +DHCP_INSTALL_STAGING = YES +DHCP_SELINUX_MODULES = dhcp +DHCP_LICENSE = MPL-2.0 +DHCP_LICENSE_FILES = LICENSE +DHCP_DEPENDENCIES = host-gawk +DHCP_CPE_ID_VENDOR = isc +# internal bind does not support parallel builds. +DHCP_MAKE = $(MAKE1) + +# untar internal bind so libtool patches will be applied on bind's libtool +define DHCP_UNTAR_INTERNAL_BIND + $(TAR) xf $(@D)/bind/bind.tar.gz -C $(@D)/bind/ +endef + +DHCP_POST_EXTRACT_HOOKS = DHCP_UNTAR_INTERNAL_BIND + +# use libtool-enabled configure.ac +define DHCP_LIBTOOL_AUTORECONF + cp $(@D)/configure.ac+lt $(@D)/configure.ac +endef + +DHCP_CONF_ENV = \ + CPPFLAGS='-D_PATH_DHCPD_CONF=\"/etc/dhcp/dhcpd.conf\" \ + -D_PATH_DHCLIENT_CONF=\"/etc/dhcp/dhclient.conf\"' \ + CFLAGS='$(TARGET_CFLAGS) -DISC_CHECK_NONE=1' + +DHCP_BIND_EXTRA_CONFIG = \ + --build=$(GNU_HOST_NAME) \ + --host=$(GNU_TARGET_NAME) \ + --target=$(GNU_TARGET_NAME) \ + BUILD_CC='$(HOSTCC)' \ + BUILD_CFLAGS='$(HOST_CFLAGS)' \ + BUILD_CPPFLAGS='$(HOST_CPPFLAGS)' \ + BUILD_LDFLAGS='$(HOST_LDFLAGS)' \ + RANLIB='$(TARGET_RANLIB)' \ + --disable-backtrace + +DHCP_CONF_ENV += ac_cv_prog_AWK=$(HOST_DIR)/bin/gawk + +DHCP_CONF_OPTS = \ + --with-bind-extra-config="$(DHCP_BIND_EXTRA_CONFIG)" \ + --with-randomdev=/dev/random \ + --with-srv-lease-file=/var/lib/dhcp/dhcpd.leases \ + --with-srv6-lease-file=/var/lib/dhcp/dhcpd6.leases \ + --with-cli-lease-file=/var/lib/dhcp/dhclient.leases \ + --with-cli6-lease-file=/var/lib/dhcp/dhclient6.leases \ + --with-srv-pid-file=/var/run/dhcpd.pid \ + --with-srv6-pid-file=/var/run/dhcpd6.pid \ + --with-cli-pid-file=/var/run/dhclient.pid \ + --with-cli6-pid-file=/var/run/dhclient6.pid \ + --with-relay-pid-file=/var/run/dhcrelay.pid \ + --with-relay6-pid-file=/var/run/dhcrelay6.pid + +ifeq ($(BR2_PACKAGE_ZLIB),y) +DHCP_BIND_EXTRA_CONFIG += --with-zlib=$(STAGING_DIR)/usr +DHCP_DEPENDENCIES += zlib +else +DHCP_BIND_EXTRA_CONFIG += --without-zlib +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_ATOMIC),y) +DHCP_BIND_EXTRA_CONFIG += --enable-atomic +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +DHCP_CONF_ENV += LIBS=-latomic +endif +else +DHCP_BIND_EXTRA_CONFIG += --disable-atomic +endif + +ifeq ($(BR2_STATIC_LIBS),y) +DHCP_CONF_OPTS += --disable-libtool +else +DHCP_POST_EXTRACT_HOOKS += DHCP_LIBTOOL_AUTORECONF +DHCP_AUTORECONF = YES +DHCP_CONF_OPTS += --enable-libtool +endif + +ifeq ($(BR2_PACKAGE_DHCP_SERVER_DELAYED_ACK),y) +DHCP_CONF_OPTS += --enable-delayed-ack +else +DHCP_CONF_OPTS += --disable-delayed-ack +endif + +ifeq ($(BR2_PACKAGE_DHCP_SERVER_ENABLE_PARANOIA),y) +DHCP_CONF_OPTS += --enable-paranoia +else +DHCP_CONF_OPTS += --disable-paranoia +endif + +define DHCP_INSTALL_LIBS + $(MAKE) -C $(@D)/bind install-bind DESTDIR=$(TARGET_DIR) + $(MAKE) -C $(@D)/common install-exec DESTDIR=$(TARGET_DIR) + $(MAKE) -C $(@D)/omapip install-exec DESTDIR=$(TARGET_DIR) +endef + +ifeq ($(BR2_PACKAGE_DHCP_SERVER),y) +define DHCP_INSTALL_CTL_LIBS + $(MAKE) -C $(@D)/dhcpctl install-exec DESTDIR=$(TARGET_DIR) +endef +define DHCP_INSTALL_SERVER + mkdir -p $(TARGET_DIR)/var/lib + (cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp) + $(MAKE) -C $(@D)/server DESTDIR=$(TARGET_DIR) install-sbinPROGRAMS + $(INSTALL) -m 0644 -D package/dhcp/dhcpd.conf \ + $(TARGET_DIR)/etc/dhcp/dhcpd.conf +endef +endif + +ifeq ($(BR2_PACKAGE_DHCP_RELAY),y) +define DHCP_INSTALL_RELAY + mkdir -p $(TARGET_DIR)/var/lib + (cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp) + $(MAKE) -C $(@D)/relay DESTDIR=$(TARGET_DIR) install-sbinPROGRAMS +endef +endif + +ifeq ($(BR2_PACKAGE_DHCP_CLIENT),y) +define DHCP_INSTALL_CLIENT + mkdir -p $(TARGET_DIR)/var/lib + (cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp) + $(MAKE) -C $(@D)/client DESTDIR=$(TARGET_DIR) sbindir=/sbin \ + install-sbinPROGRAMS + $(INSTALL) -m 0644 -D package/dhcp/dhclient.conf \ + $(TARGET_DIR)/etc/dhcp/dhclient.conf + $(INSTALL) -m 0755 -D package/dhcp/dhclient-script \ + $(TARGET_DIR)/sbin/dhclient-script +endef +endif + +# Options don't matter, scripts won't start if binaries aren't there +define DHCP_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/dhcp/S80dhcp-server \ + $(TARGET_DIR)/etc/init.d/S80dhcp-server + $(INSTALL) -m 0755 -D package/dhcp/S80dhcp-relay \ + $(TARGET_DIR)/etc/init.d/S80dhcp-relay +endef + +ifeq ($(BR2_PACKAGE_DHCP_SERVER),y) +define DHCP_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/dhcp/dhcpd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/dhcpd.service + + mkdir -p $(TARGET_DIR)/usr/lib/tmpfiles.d + echo "d /var/lib/dhcp 0755 - - - -" > \ + $(TARGET_DIR)/usr/lib/tmpfiles.d/dhcpd.conf + echo "f /var/lib/dhcp/dhcpd.leases - - - - -" >> \ + $(TARGET_DIR)/usr/lib/tmpfiles.d/dhcpd.conf +endef +endif + +define DHCP_INSTALL_TARGET_CMDS + $(DHCP_INSTALL_LIBS) + $(DHCP_INSTALL_CTL_LIBS) + $(DHCP_INSTALL_RELAY) + $(DHCP_INSTALL_SERVER) + $(DHCP_INSTALL_CLIENT) +endef + +$(eval $(autotools-package)) diff --git a/package/dhcp/dhcpd.conf b/package/dhcp/dhcpd.conf new file mode 100644 index 00000000..0001c0f0 --- /dev/null +++ b/package/dhcp/dhcpd.conf @@ -0,0 +1,108 @@ +# +# Sample configuration file for ISC dhcpd for Debian +# +# $Id: dhcpd.conf,v 1.1.1.1 2002/05/21 00:07:44 peloy Exp $ +# + +# The ddns-updates-style parameter controls whether or not the server will +# attempt to do a DNS update when a lease is confirmed. We default to the +# behavior of the version 2 packages ('none', since DHCP v2 didn't +# have support for DDNS.) +ddns-update-style none; + +# option definitions common to all supported networks... +option domain-name "example.org"; +option domain-name-servers ns1.example.org, ns2.example.org; + +default-lease-time 600; +max-lease-time 7200; + +# If this DHCP server is the official DHCP server for the local +# network, the authoritative directive should be uncommented. +#authoritative; + +# Use this to send dhcp log messages to a different log file (you also +# have to hack syslog.conf to complete the redirection). +log-facility local7; + +# No service will be given on this subnet, but declaring it helps the +# DHCP server to understand the network topology. + +#subnet 10.152.187.0 netmask 255.255.255.0 { +#} + +# This is a very basic subnet declaration. + +#subnet 10.254.239.0 netmask 255.255.255.224 { +# range 10.254.239.10 10.254.239.20; +# option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org; +#} + +# This declaration allows BOOTP clients to get dynamic addresses, +# which we don't really recommend. + +#subnet 10.254.239.32 netmask 255.255.255.224 { +# range dynamic-bootp 10.254.239.40 10.254.239.60; +# option broadcast-address 10.254.239.31; +# option routers rtr-239-32-1.example.org; +#} + +# A slightly different configuration for an internal subnet. +#subnet 10.5.5.0 netmask 255.255.255.224 { +# range 10.5.5.26 10.5.5.30; +# option domain-name-servers ns1.internal.example.org; +# option domain-name "internal.example.org"; +# option routers 10.5.5.1; +# option broadcast-address 10.5.5.31; +# default-lease-time 600; +# max-lease-time 7200; +#} + +# Hosts which require special configuration options can be listed in +# host statements. If no address is specified, the address will be +# allocated dynamically (if possible), but the host-specific information +# will still come from the host declaration. + +#host passacaglia { +# hardware ethernet 0:0:c0:5d:bd:95; +# filename "vmunix.passacaglia"; +# server-name "toccata.fugue.com"; +#} + +# Fixed IP addresses can also be specified for hosts. These addresses +# should not also be listed as being available for dynamic assignment. +# Hosts for which fixed IP addresses have been specified can boot using +# BOOTP or DHCP. Hosts for which no fixed address is specified can only +# be booted with DHCP, unless there is an address range on the subnet +# to which a BOOTP client is connected which has the dynamic-bootp flag +# set. +#host fantasia { +# hardware ethernet 08:00:07:26:c0:a5; +# fixed-address fantasia.fugue.com; +#} + +# You can declare a class of clients and then do address allocation +# based on that. The example below shows a case where all clients +# in a certain class get addresses on the 10.17.224/24 subnet, and all +# other clients get addresses on the 10.0.29/24 subnet. + +#class "foo" { +# match if substring (option vendor-class-identifier, 0, 4) = "SUNW"; +#} + +#shared-network 224-29 { +# subnet 10.17.224.0 netmask 255.255.255.0 { +# option routers rtr-224.example.org; +# } +# subnet 10.0.29.0 netmask 255.255.255.0 { +# option routers rtr-29.example.org; +# } +# pool { +# allow members of "foo"; +# range 10.17.224.10 10.17.224.250; +# } +# pool { +# deny members of "foo"; +# range 10.0.29.10 10.0.29.230; +# } +#} diff --git a/package/dhcp/dhcpd.service b/package/dhcp/dhcpd.service new file mode 100644 index 00000000..98cc54b0 --- /dev/null +++ b/package/dhcp/dhcpd.service @@ -0,0 +1,13 @@ +[Unit] +Description=DHCP server +After=network.target + +[Service] +Type=forking +PIDFile=/run/dhcpd.pid +ExecStart=/usr/sbin/dhcpd -q -pf /run/dhcpd.pid $OPTIONS $INTERFACES +KillSignal=SIGINT +EnvironmentFile=-/etc/default/dhcpd + +[Install] +WantedBy=multi-user.target diff --git a/package/dhcpcd/Config.in b/package/dhcpcd/Config.in new file mode 100644 index 00000000..8612d4ba --- /dev/null +++ b/package/dhcpcd/Config.in @@ -0,0 +1,28 @@ +comment "dhcpcd needs a toolchain w/ headers >= 3.1" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 + +config BR2_PACKAGE_DHCPCD + bool "dhcpcd" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 # sa_family_t in linux/socket.h + help + An RFC2131 compliant DHCP client + + http://roy.marples.name/projects/dhcpcd/ + +if BR2_PACKAGE_DHCPCD + +config BR2_PACKAGE_DHCPCD_ENABLE_PRIVSEP + bool + default y + depends on BR2_USE_MMU + # Audit headers were only added in recent kernels for some arches + depends on !(BR2_arceb || BR2_arcle) || \ + BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2 + depends on !(BR2_microblazeel || BR2_microblazebe) || \ + BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 + depends on !BR2_nios2 || BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2 + depends on !BR2_or1k || BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 + depends on !BR2_sh || BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 + depends on !BR2_xtensa || BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 + +endif diff --git a/package/dhcpcd/S41dhcpcd b/package/dhcpcd/S41dhcpcd new file mode 100644 index 00000000..55794f40 --- /dev/null +++ b/package/dhcpcd/S41dhcpcd @@ -0,0 +1,33 @@ +#!/bin/sh +# +# Start/stop dhcpcd +# + +DAEMON=/sbin/dhcpcd +CONFIG=/etc/dhcpcd.conf +PIDFILE=/var/run/dhcpcd/pid + +[ -f $CONFIG ] || exit 0 + +case "$1" in + start) + echo "Starting dhcpcd..." + start-stop-daemon -S -x "$DAEMON" -p "$PIDFILE" -- -f "$CONFIG" + ;; + stop) + echo "Stopping dhcpcd..." + start-stop-daemon -K -x "$DAEMON" -p "$PIDFILE" -o + ;; + reload|force-reload) + echo "Reloading dhcpcd configuration..." + "$DAEMON" -s reload + ;; + restart) + "$0" stop + sleep 1 # Prevent race condition: ensure dhcpcd stops before start. + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart|reload|force-reload}" + exit 1 +esac diff --git a/package/dhcpcd/dhcpcd.hash b/package/dhcpcd/dhcpcd.hash new file mode 100644 index 00000000..d29f49fd --- /dev/null +++ b/package/dhcpcd/dhcpcd.hash @@ -0,0 +1,4 @@ +# sha256 from https://github.com/NetworkConfiguration/dhcpcd/releases/tag/v10.0.8 +sha256 d8dddf9f971a8d9ff828f33d8fa9f6d9a892a4a1429d230e9efb2be97dd0e313 dhcpcd-10.0.8.tar.xz +# Locally calculated +sha256 a7d6da3a202cdd38eaab0bcea4d25f60d002980f3785b3e896d9bf387f093ac8 LICENSE diff --git a/package/dhcpcd/dhcpcd.mk b/package/dhcpcd/dhcpcd.mk new file mode 100644 index 00000000..48a418d4 --- /dev/null +++ b/package/dhcpcd/dhcpcd.mk @@ -0,0 +1,78 @@ +################################################################################ +# +# dhcpcd +# +################################################################################ + +DHCPCD_VERSION = 10.0.8 +DHCPCD_SOURCE = dhcpcd-$(DHCPCD_VERSION).tar.xz +DHCPCD_SITE = https://github.com/NetworkConfiguration/dhcpcd/releases/download/v$(DHCPCD_VERSION) +DHCPCD_DEPENDENCIES = host-pkgconf +DHCPCD_LICENSE = BSD-2-Clause +DHCPCD_LICENSE_FILES = LICENSE +DHCPCD_CPE_ID_VALID = YES + +DHCPCD_CONFIG_OPTS = \ + --libexecdir=/lib/dhcpcd \ + --os=linux \ + --privsepuser=dhcpcd + +DHCPCD_MAKE_OPTS = \ + BINMODE=755 + +ifeq ($(BR2_PACKAGE_DHCPCD_ENABLE_PRIVSEP),y) +DHCPCD_CONFIG_OPTS += --enable-privsep +else +DHCPCD_CONFIG_OPTS += --disable-privsep +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +DHCPCD_CONFIG_OPTS += --with-udev +DHCPCD_DEPENDENCIES += udev +else +DHCPCD_CONFIG_OPTS += --without-udev +endif + +ifeq ($(BR2_STATIC_LIBS),y) +DHCPCD_CONFIG_OPTS += --enable-static +endif + +ifeq ($(BR2_USE_MMU),) +DHCPCD_CONFIG_OPTS += --disable-fork +endif + +define DHCPCD_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(DHCPCD_CONFIG_OPTS)) +endef + +define DHCPCD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(DHCPCD_MAKE_OPTS) all +endef + +define DHCPCD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(DHCPCD_MAKE_OPTS) install DESTDIR=$(TARGET_DIR) +endef + +# When network-manager is enabled together with dhcpcd, it will use +# dhcpcd as a DHCP client, and will be in charge of running, so we +# don't want the init script or service file to be installed. +ifeq ($(BR2_PACKAGE_NETWORK_MANAGER),) +define DHCPCD_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/dhcpcd/S41dhcpcd \ + $(TARGET_DIR)/etc/init.d/S41dhcpcd +endef + +define DHCPCD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/dhcpcd/dhcpcd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/dhcpcd.service +endef +endif + +define DHCPCD_USERS + dhcpcd -1 dhcpcd -1 * - - - dhcpcd user +endef + +# NOTE: Even though this package has a configure script, it is not generated +# using the autotools, so we have to use the generic package infrastructure. + +$(eval $(generic-package)) diff --git a/package/dhcpcd/dhcpcd.service b/package/dhcpcd/dhcpcd.service new file mode 100644 index 00000000..4da49818 --- /dev/null +++ b/package/dhcpcd/dhcpcd.service @@ -0,0 +1,13 @@ +[Unit] +Description=DHCP client +After=network.target + +[Service] +Type=forking +EnvironmentFile=-/etc/default/dhcpcd +PIDFile=/run/dhcpcd/pid +ExecStart=/sbin/dhcpcd $DAEMON_ARGS +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/dhcpdump/Config.in b/package/dhcpdump/Config.in new file mode 100644 index 00000000..30e42928 --- /dev/null +++ b/package/dhcpdump/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_DHCPDUMP + bool "dhcpdump" + select BR2_PACKAGE_LIBPCAP + help + A tool for monitoring dhcp requests using tcpdump. + + https://github.com/bbonev/dhcpdump diff --git a/package/dhcpdump/dhcpdump.hash b/package/dhcpdump/dhcpdump.hash new file mode 100644 index 00000000..fdf3243a --- /dev/null +++ b/package/dhcpdump/dhcpdump.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3658ac21cc33e79e72bed070454e49c543017991cb6c37f4253c85e9176869d1 dhcpdump-1.9.tar.xz +sha256 bab6ca76b7e93885396513689b1248dfb0e8fd662695b8bd1b26784ef71a0192 LICENSE diff --git a/package/dhcpdump/dhcpdump.mk b/package/dhcpdump/dhcpdump.mk new file mode 100644 index 00000000..21cbd56b --- /dev/null +++ b/package/dhcpdump/dhcpdump.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# dhcpdump +# +################################################################################ + +DHCPDUMP_VERSION = 1.9 +DHCPDUMP_SOURCE = dhcpdump-$(DHCPDUMP_VERSION).tar.xz +DHCPDUMP_SITE = https://github.com/bbonev/dhcpdump/releases/download/v$(DHCPDUMP_VERSION) +DHCPDUMP_DEPENDENCIES = libpcap +DHCPDUMP_LICENSE = BSD-2-Clause +DHCPDUMP_LICENSE_FILES = LICENSE + +DHCPDUMP_LIBS = -lpcap +ifeq ($(BR2_STATIC_LIBS),y) +DHCPDUMP_LIBS += `$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs` +endif + +define DHCPDUMP_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CC="$(TARGET_CC)" \ + CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE" \ + LDFLAGS="$(TARGET_LDFLAGS)" LIBS="$(DHCPDUMP_LIBS)" dhcpdump +endef + +define DHCPDUMP_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/dhcpdump $(TARGET_DIR)/usr/bin/dhcpdump +endef + +$(eval $(generic-package)) diff --git a/package/dhrystone/0001-let-people-specify-the-number-of-runs-on-the-command.patch b/package/dhrystone/0001-let-people-specify-the-number-of-runs-on-the-command.patch new file mode 100644 index 00000000..b1858268 --- /dev/null +++ b/package/dhrystone/0001-let-people-specify-the-number-of-runs-on-the-command.patch @@ -0,0 +1,65 @@ +From 16d84fa7ecea8102680c9610d4186c4f54936b07 Mon Sep 17 00:00:00 2001 +From: Vivi Li +Date: Mon, 15 Jul 2024 11:07:11 +0200 +Subject: [PATCH] let people specify the number of runs on the command line + +Upstream: dead +Signed-off-by: Thomas Petazzoni +--- + dhry_1.c | 25 ++++++++++++++++++------- + 1 file changed, 18 insertions(+), 7 deletions(-) + +diff --git a/dhry_1.c b/dhry_1.c +index 7ab02a8..97bd30f 100644 +--- a/dhry_1.c ++++ b/dhry_1.c +@@ -66,7 +66,7 @@ float Microseconds, + /* end of variables for time measurement */ + + +-main () ++main(int argc, char *argv[]) + /*****/ + + /* main program, corresponds to procedures */ +@@ -101,6 +101,13 @@ main () + /* Warning: With 16-Bit processors and Number_Of_Runs > 32000, */ + /* overflow may occur for this array element. */ + ++ Number_Of_Runs = 0; ++ if ( argc == 2 ) { ++ if (atoi(argv[1]) > 0) { ++ Number_Of_Runs = atoi(argv[1]); ++ } ++ } ++ + printf ("\n"); + printf ("Dhrystone Benchmark, Version 2.1 (Language: C)\n"); + printf ("\n"); +@@ -114,13 +121,17 @@ main () + printf ("Program compiled without 'register' attribute\n"); + printf ("\n"); + } +- printf ("Please give the number of runs through the benchmark: "); +- { +- int n; +- scanf ("%d", &n); +- Number_Of_Runs = n; ++ ++ if (!Number_Of_Runs) { ++ printf ("Please give the number of runs through the benchmark: "); ++ fflush (stdout); ++ { ++ int n; ++ scanf ("%d", &n); ++ Number_Of_Runs = n; ++ } ++ printf ("\n"); + } +- printf ("\n"); + + printf ("Execution starts, %d runs through Dhrystone\n", Number_Of_Runs); + +-- +2.45.2 + diff --git a/package/dhrystone/0002-Get-HZ-value-from-system-rather-than-requiring-via-C.patch b/package/dhrystone/0002-Get-HZ-value-from-system-rather-than-requiring-via-C.patch new file mode 100644 index 00000000..064a1a95 --- /dev/null +++ b/package/dhrystone/0002-Get-HZ-value-from-system-rather-than-requiring-via-C.patch @@ -0,0 +1,29 @@ +From 7d890402dc5a32a72d5bc0532c87576937c18eb7 Mon Sep 17 00:00:00 2001 +From: Robin Getz +Date: Mon, 15 Jul 2024 11:07:54 +0200 +Subject: [PATCH] Get HZ value from system rather than requiring via CPPFLAGS + +Upstream: dead +Signed-off-by: Thomas Petazzoni +--- + dhry.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/dhry.h b/dhry.h +index 1714562..482d343 100644 +--- a/dhry.h ++++ b/dhry.h +@@ -359,6 +359,10 @@ + /* for "times" */ + #endif + ++#ifndef HZ ++#include ++#endif ++ + #define Mic_secs_Per_Second 1000000.0 + /* Berkeley UNIX C returns process times in seconds/HZ */ + +-- +2.45.2 + diff --git a/package/dhrystone/0003-trust-the-exit-status-of-the-program.patch b/package/dhrystone/0003-trust-the-exit-status-of-the-program.patch new file mode 100644 index 00000000..b7bc2b30 --- /dev/null +++ b/package/dhrystone/0003-trust-the-exit-status-of-the-program.patch @@ -0,0 +1,26 @@ +From acd266448386c805c0afded780a5d7e6903bb485 Mon Sep 17 00:00:00 2001 +From: Robin Getz +Date: Mon, 15 Jul 2024 11:08:43 +0200 +Subject: [PATCH] trust the exit status of the program + +Upstream: dead +Signed-off-by: Thomas Petazzoni +--- + dhry_1.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/dhry_1.c b/dhry_1.c +index 97bd30f..358bdc3 100644 +--- a/dhry_1.c ++++ b/dhry_1.c +@@ -285,6 +285,7 @@ main(int argc, char *argv[]) + printf ("\n"); + } + ++ exit(0); + } + + +-- +2.45.2 + diff --git a/package/dhrystone/0004-get-prototypes-for-malloc-exit-strcpy.patch b/package/dhrystone/0004-get-prototypes-for-malloc-exit-strcpy.patch new file mode 100644 index 00000000..e925f1e7 --- /dev/null +++ b/package/dhrystone/0004-get-prototypes-for-malloc-exit-strcpy.patch @@ -0,0 +1,27 @@ +From 85dcf4ca20a60689479bcb143ecf8c0402822abe Mon Sep 17 00:00:00 2001 +From: Mike Frysinger +Date: Mon, 15 Jul 2024 11:09:18 +0200 +Subject: [PATCH] get prototypes for malloc/exit/strcpy + +Upstream: dead +Signed-off-by: Thomas Petazzoni +--- + dhry.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/dhry.h b/dhry.h +index 482d343..825ef35 100644 +--- a/dhry.h ++++ b/dhry.h +@@ -388,6 +388,8 @@ + /* General definitions: */ + + #include ++#include ++#include + /* for strcpy, strcmp */ + + #define Null 0 +-- +2.45.2 + diff --git a/package/dhrystone/0005-Avoid-collision-with-C-library-using-NO_PROTOTYPES.patch b/package/dhrystone/0005-Avoid-collision-with-C-library-using-NO_PROTOTYPES.patch new file mode 100644 index 00000000..4cffc25a --- /dev/null +++ b/package/dhrystone/0005-Avoid-collision-with-C-library-using-NO_PROTOTYPES.patch @@ -0,0 +1,47 @@ +From 9a701143fc38fd9f5373af70dfd5f0da0bc8e04a Mon Sep 17 00:00:00 2001 +From: Robin Getz +Date: Mon, 15 Jul 2024 11:09:55 +0200 +Subject: [PATCH] Avoid collision with C library using NO_PROTOTYPES + +Upstream: dead +Signed-off-by: Thomas Petazzoni +--- + dhry_1.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/dhry_1.c b/dhry_1.c +index 358bdc3..3ed1716 100644 +--- a/dhry_1.c ++++ b/dhry_1.c +@@ -28,7 +28,9 @@ char Ch_1_Glob, + int Arr_1_Glob [50]; + int Arr_2_Glob [50] [50]; + ++#ifndef NO_PROTOTYPES + extern char *malloc (); ++#endif + Enumeration Func_1 (); + /* forward declaration necessary since Enumeration may not simply be int */ + +@@ -45,14 +47,18 @@ Enumeration Func_1 (); + + #ifdef TIMES + struct tms time_info; ++#ifndef NO_PROTOTYPES + extern int times (); + /* see library function "times" */ ++#endif + #define Too_Small_Time 120 + /* Measurements should last at least about 2 seconds */ + #endif + #ifdef TIME ++#ifndef NO_PROTOTYPES + extern long time(); + /* see library function "time" */ ++#endif + #define Too_Small_Time 2 + /* Measurements should last at least 2 seconds */ + #endif +-- +2.45.2 + diff --git a/package/dhrystone/0006-Add-missing-function-declarations.patch b/package/dhrystone/0006-Add-missing-function-declarations.patch new file mode 100644 index 00000000..0518340e --- /dev/null +++ b/package/dhrystone/0006-Add-missing-function-declarations.patch @@ -0,0 +1,152 @@ +From fd7ce4b6a9e268e60071c94852f7f00f6e60ef11 Mon Sep 17 00:00:00 2001 +From: Steffen Persvold +Date: Mon, 15 Jul 2024 11:16:36 +0200 +Subject: [PATCH] Add missing function declarations +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes: + +GCC14 will give errors for missing function declarations and +missing return types : + +dhry_1.c:75:1: error: return type defaults to ‘int’ [-Wimplicit-int] + 75 | main(int argc, char *argv[]) + | ^~~~ +dhry_1.c: In function ‘main’: +dhry_1.c:159:5: error: implicit declaration of function ‘Proc_5’ [-Wimplicit-function-declaration] + 159 | Proc_5(); + | ^~~~~~ + +Upstream: dead +Signed-off-by: Steffen Persvold +--- + dhry_1.c | 26 +++++++++++++++++--------- + dhry_2.c | 8 ++++---- + 2 files changed, 21 insertions(+), 13 deletions(-) + +diff --git a/dhry_1.c b/dhry_1.c +index 3ed1716..cad5840 100644 +--- a/dhry_1.c ++++ b/dhry_1.c +@@ -32,6 +32,7 @@ int Arr_2_Glob [50] [50]; + extern char *malloc (); + #endif + Enumeration Func_1 (); ++Boolean Func_2 (); + /* forward declaration necessary since Enumeration may not simply be int */ + + #ifndef REG +@@ -71,8 +72,17 @@ float Microseconds, + + /* end of variables for time measurement */ + +- +-main(int argc, char *argv[]) ++/* forward declarations */ ++void Proc_1 (); ++void Proc_2 (); ++void Proc_3 (); ++void Proc_4 (); ++void Proc_5 (); ++void Proc_6 (); ++void Proc_7 (); ++void Proc_8 (); ++ ++int main(int argc, char *argv[]) + /*****/ + + /* main program, corresponds to procedures */ +@@ -295,7 +305,7 @@ main(int argc, char *argv[]) + } + + +-Proc_1 (Ptr_Val_Par) ++void Proc_1 (Ptr_Val_Par) + /******************/ + + REG Rec_Pointer Ptr_Val_Par; +@@ -329,7 +339,7 @@ REG Rec_Pointer Ptr_Val_Par; + } /* Proc_1 */ + + +-Proc_2 (Int_Par_Ref) ++void Proc_2 (Int_Par_Ref) + /******************/ + /* executed once */ + /* *Int_Par_Ref == 1, becomes 4 */ +@@ -352,7 +362,7 @@ One_Fifty *Int_Par_Ref; + } /* Proc_2 */ + + +-Proc_3 (Ptr_Ref_Par) ++void Proc_3 (Ptr_Ref_Par) + /******************/ + /* executed once */ + /* Ptr_Ref_Par becomes Ptr_Glob */ +@@ -367,7 +377,7 @@ Rec_Pointer *Ptr_Ref_Par; + } /* Proc_3 */ + + +-Proc_4 () /* without parameters */ ++void Proc_4 () /* without parameters */ + /*******/ + /* executed once */ + { +@@ -379,7 +389,7 @@ Proc_4 () /* without parameters */ + } /* Proc_4 */ + + +-Proc_5 () /* without parameters */ ++void Proc_5 () /* without parameters */ + /*******/ + /* executed once */ + { +@@ -399,5 +409,3 @@ register int l; + while (l--) *d++ = *s++; + } + #endif +- +- +diff --git a/dhry_2.c b/dhry_2.c +index 63a3d3e..25051e7 100644 +--- a/dhry_2.c ++++ b/dhry_2.c +@@ -26,8 +26,9 @@ + extern int Int_Glob; + extern char Ch_1_Glob; + ++Boolean Func_3 (); + +-Proc_6 (Enum_Val_Par, Enum_Ref_Par) ++void Proc_6 (Enum_Val_Par, Enum_Ref_Par) + /*********************************/ + /* executed once */ + /* Enum_Val_Par == Ident_3, Enum_Ref_Par becomes Ident_2 */ +@@ -61,7 +62,7 @@ Enumeration *Enum_Ref_Par; + } /* Proc_6 */ + + +-Proc_7 (Int_1_Par_Val, Int_2_Par_Val, Int_Par_Ref) ++void Proc_7 (Int_1_Par_Val, Int_2_Par_Val, Int_Par_Ref) + /**********************************************/ + /* executed three times */ + /* first call: Int_1_Par_Val == 2, Int_2_Par_Val == 3, */ +@@ -81,7 +82,7 @@ One_Fifty *Int_Par_Ref; + } /* Proc_7 */ + + +-Proc_8 (Arr_1_Par_Ref, Arr_2_Par_Ref, Int_1_Par_Val, Int_2_Par_Val) ++void Proc_8 (Arr_1_Par_Ref, Arr_2_Par_Ref, Int_1_Par_Val, Int_2_Par_Val) + /*********************************************************************/ + /* executed once */ + /* Int_Par_Val_1 == 3 */ +@@ -189,4 +190,3 @@ Enumeration Enum_Par_Val; + else /* not executed */ + return (false); + } /* Func_3 */ +- +-- +2.45.2 + diff --git a/package/dhrystone/Config.in b/package/dhrystone/Config.in new file mode 100644 index 00000000..d6fb7a75 --- /dev/null +++ b/package/dhrystone/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_DHRYSTONE + bool "dhrystone" + help + easy-to-use integer benchmark + + http://www.netlib.org/benchmark/dhry-c diff --git a/package/dhrystone/Makefile b/package/dhrystone/Makefile new file mode 100644 index 00000000..f7a212b2 --- /dev/null +++ b/package/dhrystone/Makefile @@ -0,0 +1,12 @@ +CPPFLAGS += -DNO_PROTOTYPES=1 -DHZ=100 +LDLIBS += -lm + +all: dhrystone + +dhrystone: dhry_1.o dhry_2.o + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS) + +clean: + rm -f *.o dhrystone + +.PHONY: all clean diff --git a/package/dhrystone/dhrystone.hash b/package/dhrystone/dhrystone.hash new file mode 100644 index 00000000..e6f4773d --- /dev/null +++ b/package/dhrystone/dhrystone.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 038a7e9169787125c3451a6c941f3aca5db2d2f3863871afcdce154ef17f4e3e dhry-c diff --git a/package/dhrystone/dhrystone.mk b/package/dhrystone/dhrystone.mk new file mode 100644 index 00000000..d54c8d94 --- /dev/null +++ b/package/dhrystone/dhrystone.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# dhrystone +# +################################################################################ + +DHRYSTONE_VERSION = 2 +DHRYSTONE_SOURCE = dhry-c +DHRYSTONE_SITE = http://www.netlib.org/benchmark + +define DHRYSTONE_EXTRACT_CMDS + (cd $(@D) && $(SHELL) $(DHRYSTONE_DL_DIR)/$($(PKG)_SOURCE)) + $(Q)cp package/dhrystone/Makefile $(@D)/ +endef + +define DHRYSTONE_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define DHRYSTONE_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/dhrystone $(TARGET_DIR)/usr/bin/dhrystone +endef + +$(eval $(generic-package)) diff --git a/package/dht/0001-cmake.patch b/package/dht/0001-cmake.patch new file mode 100644 index 00000000..bbac6390 --- /dev/null +++ b/package/dht/0001-cmake.patch @@ -0,0 +1,67 @@ +From 25e12bb39eea3d433602de6390796fec8a8f3620 Mon Sep 17 00:00:00 2001 +From: Mike Gelfand +Date: Sun, 1 Jan 2017 16:23:21 +0300 +Subject: [PATCH] Remove Makefile, add Makefile.am and CMakeLists.txt + +Downloaded from transmission repo: +https://github.com/transmission/dht/commit/25e12bb39eea3d433602de6390796fec8a8f3620 + +Upstream status: rejected (https://github.com/jech/dht/pull/19) + +Signed-off-by: Bernd Kuhls +--- + CMakeLists.txt | 9 +++++++++ + Makefile | 9 --------- + Makefile.am | 11 +++++++++++ + 3 files changed, 20 insertions(+), 9 deletions(-) + create mode 100644 CMakeLists.txt + delete mode 100644 Makefile + create mode 100644 Makefile.am + +diff --git a/CMakeLists.txt b/CMakeLists.txt +new file mode 100644 +index 0000000..6d4aa99 +--- /dev/null ++++ b/CMakeLists.txt +@@ -0,0 +1,9 @@ ++cmake_minimum_required(VERSION 2.8) ++project(dht C) ++ ++add_library(${PROJECT_NAME} STATIC ++ dht.c ++) ++ ++install(TARGETS ${PROJECT_NAME} DESTINATION lib) ++install(FILES dht.h DESTINATION include/dht) +diff --git a/Makefile b/Makefile +deleted file mode 100644 +index e012945..0000000 +--- a/Makefile ++++ /dev/null +@@ -1,9 +0,0 @@ +-CFLAGS = -g -Wall +-LDLIBS = -lcrypt +- +-dht-example: dht-example.o dht.o +- +-all: dht-example +- +-clean: +- -rm -f dht-example dht-example.o dht-example.id dht.o *~ core +diff --git a/Makefile.am b/Makefile.am +new file mode 100644 +index 0000000..2dba648 +--- /dev/null ++++ b/Makefile.am +@@ -0,0 +1,11 @@ ++AM_CFLAGS = @PTHREAD_CFLAGS@ ++ ++noinst_LIBRARIES = libdht.a ++libdht_a_SOURCES = dht.c ++libdht_a_DEPENDENCIES = $(builddir)/include/dht ++noinst_HEADERS = dht.h ++EXTRA_DIST = CHANGES CMakeLists.txt dht-example.c LICENCE README ++ ++$(builddir)/include/dht: ++ $(MKDIR_P) $(builddir)/include ++ (cd $(builddir)/include && $(LN_S) $(abs_srcdir) dht) diff --git a/package/dht/Config.in b/package/dht/Config.in new file mode 100644 index 00000000..7660295c --- /dev/null +++ b/package/dht/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_DHT + bool "dht" + help + BitTorrent DHT library + + https://www.irif.fr/~jch/software/bittorrent diff --git a/package/dht/dht.hash b/package/dht/dht.hash new file mode 100644 index 00000000..2b641b9d --- /dev/null +++ b/package/dht/dht.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 caba469a784a5c359c084099fdc025cfe09b1faec2ba9ba257b7384351c43c0a dht-0.27.tar.gz +sha256 06ce07293caf8c8ddfaf47797ad1fb18d1c040a8375231d8f8a6105cef51a8e6 LICENCE diff --git a/package/dht/dht.mk b/package/dht/dht.mk new file mode 100644 index 00000000..4f78f027 --- /dev/null +++ b/package/dht/dht.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# dht +# +################################################################################ + +DHT_VERSION = 0.27 +DHT_SITE = $(call github,jech,dht,dht-$(DHT_VERSION)) +DHT_LICENSE = MIT +DHT_LICENSE_FILES = LICENCE +DHT_INSTALL_STAGING = YES + +$(eval $(cmake-package)) diff --git a/package/dialog/Config.in b/package/dialog/Config.in new file mode 100644 index 00000000..830427e5 --- /dev/null +++ b/package/dialog/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_DIALOG + bool "dialog" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + dialog - display dialog boxes from shell scripts + + This application provides a method of displaying several + different types of dialog boxes from shell scripts. This + allows a developer of a script to interact with the user in a + much friendlier manner. + + http://invisible-island.net/dialog/dialog.html diff --git a/package/dialog/dialog.hash b/package/dialog/dialog.hash new file mode 100644 index 00000000..3136d18b --- /dev/null +++ b/package/dialog/dialog.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 754cb6bf7dc6a9ac5c1f80c13caa4d976e30a5a6e8b46f17b3bb9b080c31041f dialog-1.3-20220117.tgz +# Locally computed +sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 COPYING diff --git a/package/dialog/dialog.mk b/package/dialog/dialog.mk new file mode 100644 index 00000000..681f8ec9 --- /dev/null +++ b/package/dialog/dialog.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# dialog +# +################################################################################ + +DIALOG_VERSION = 1.3-20220117 +DIALOG_SOURCE = dialog-$(DIALOG_VERSION).tgz +DIALOG_SITE = https://invisible-mirror.net/archives/dialog +DIALOG_CONF_OPTS = --with-ncurses --with-curses-dir=$(STAGING_DIR)/usr \ + --disable-rpath-hack +DIALOG_DEPENDENCIES = host-pkgconf ncurses $(TARGET_NLS_DEPENDENCIES) +DIALOG_LICENSE = LGPL-2.1 +DIALOG_LICENSE_FILES = COPYING + +ifneq ($(BR2_ENABLE_LOCALE),y) +DIALOG_DEPENDENCIES += libiconv +endif + +DIALOG_CONF_OPTS += NCURSES_CONFIG=$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS) + +$(eval $(autotools-package)) diff --git a/package/dieharder/Config.in b/package/dieharder/Config.in new file mode 100644 index 00000000..e7a9f546 --- /dev/null +++ b/package/dieharder/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_DIEHARDER + bool "dieharder" + select BR2_PACKAGE_GSL + help + dieharder is a fairly involved random number/uniform deviate + generator tester. It is thus suitable for use in testing + both software RNG's and hardware RNG's. + + http://www.phy.duke.edu/~rgb/General/dieharder.php diff --git a/package/dieharder/dieharder.hash b/package/dieharder/dieharder.hash new file mode 100644 index 00000000..3d285d03 --- /dev/null +++ b/package/dieharder/dieharder.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 0fdd8a66a077e86652a47641589aa4667ae13d322a7214bb555ab37f082002dd dieharder-3.31.1.4.tar.gz +sha256 c475bcd1afa6fc15a65174e31c599c0d23706a34e4b9f2fcb03a4dad5438d53f COPYING diff --git a/package/dieharder/dieharder.mk b/package/dieharder/dieharder.mk new file mode 100644 index 00000000..6fe5b1f7 --- /dev/null +++ b/package/dieharder/dieharder.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# dieharder +# +################################################################################ + +DIEHARDER_VERSION = 3.31.1.4 +DIEHARDER_SITE = $(call github,eddelbuettel,dieharder,$(DIEHARDER_VERSION)) +DIEHARDER_LICENSE = GPL-2.0 with beverage clause +DIEHARDER_LICENSE_FILES = COPYING +DIEHARDER_DEPENDENCIES = gsl +# configure retrieved from git is outdated +DIEHARDER_AUTORECONF = YES + +# fix endianness detection +ifeq ($(BR2_ENDIAN),"BIG") +DIEHARDER_CONF_ENV = ac_cv_c_endian=big +else +DIEHARDER_CONF_ENV = ac_cv_c_endian=little +endif + +# parallel build fail, disable it +DIEHARDER_MAKE = $(MAKE1) + +$(eval $(autotools-package)) diff --git a/package/diffutils/Config.in b/package/diffutils/Config.in new file mode 100644 index 00000000..3c38f25f --- /dev/null +++ b/package/diffutils/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_DIFFUTILS + bool "diffutils" + depends on BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + GNU diff. Compare files per line. + + http://www.gnu.org/software/diffutils/diffutils.html + +comment "diffutils needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/package/diffutils/diffutils.hash b/package/diffutils/diffutils.hash new file mode 100644 index 00000000..df160a12 --- /dev/null +++ b/package/diffutils/diffutils.hash @@ -0,0 +1,6 @@ +# From https://lists.gnu.org/archive/html/info-gnu/2023-05/msg00009.html +sha1 c16a9cf107ad1f0f791b6d00852dc5e961c1c451 diffutils-3.10.tar.xz +# Locally calculated after checking pgp signature +sha256 90e5e93cc724e4ebe12ede80df1634063c7a855692685919bfe60b556c9bd09e diffutils-3.10.tar.xz +# Locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/diffutils/diffutils.mk b/package/diffutils/diffutils.mk new file mode 100644 index 00000000..11192668 --- /dev/null +++ b/package/diffutils/diffutils.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# diffutils +# +################################################################################ + +DIFFUTILS_VERSION = 3.10 +DIFFUTILS_SOURCE = diffutils-$(DIFFUTILS_VERSION).tar.xz +DIFFUTILS_SITE = $(BR2_GNU_MIRROR)/diffutils +DIFFUTILS_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) +DIFFUTILS_LICENSE = GPL-3.0+ +DIFFUTILS_LICENSE_FILES = COPYING +DIFFUTILS_CPE_ID_VENDOR = gnu + +# Since glibc >= 2.26, don't try to use getopt_long replacement bundled +# with diffutils. It will conflict with the one from glibc. +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y) +DIFFUTILS_CONF_ENV += gl_cv_func_getopt_gnu=yes +endif + +$(eval $(autotools-package)) diff --git a/package/dillo/0001-usr-local-include.patch b/package/dillo/0001-usr-local-include.patch new file mode 100644 index 00000000..0c3fed2b --- /dev/null +++ b/package/dillo/0001-usr-local-include.patch @@ -0,0 +1,27 @@ +Do not add (possibly poisoned) /usr/local/include and /usr/local/lib +to gcc and ld search paths in configure. + +With BR2_COMPILER_PARANOID_UNSAFE_PATH enabled, poisoned paths result +in hard errors, failing affected configure tests. + +Signed-off-by: Alex Suykov + +--- a/configure.ac ++++ b/configure.ac +@@ -57,16 +57,6 @@ + AC_TYPE_INT32_T + AC_TYPE_UINT32_T + +-dnl -------------------------------------- +-dnl Check whether to add /usr/local or not +-dnl (this is somewhat a religious problem) +-dnl -------------------------------------- +-dnl +-if test "`$CPP -v < /dev/null 2>&1 | grep '/usr/local/include' 2>&1`" = ""; then +- CPPFLAGS="$CPPFLAGS -I/usr/local/include" +- LDFLAGS="$LDFLAGS -L/usr/local/lib" +-fi +- + dnl ------------------------------------ + dnl Check for socket libs (AIX, Solaris) + dnl ------------------------------------ diff --git a/package/dillo/0002-Fix-openssl-detection.patch b/package/dillo/0002-Fix-openssl-detection.patch new file mode 100644 index 00000000..6e5f1d02 --- /dev/null +++ b/package/dillo/0002-Fix-openssl-detection.patch @@ -0,0 +1,29 @@ +From 96dde9dedf806256cdc6cbf5cacbd5c8d74e6288 Mon Sep 17 00:00:00 2001 +From: Jonathan Kimmitt +Date: Thu, 9 Jan 2020 22:01:42 +0100 +Subject: [PATCH] Fix openssl detection + +SSL_library_init is now a define, use OPENSSL_init_ssl instead. + +Signed-off-by: Jonathan Kimmitt +Signed-off-by: Peter Seiderer +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 66b5e9f..206fd53 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -276,7 +276,7 @@ if test "x$enable_ssl" = "xyes"; then + + if test "x$ssl_ok" = "xyes"; then + old_libs="$LIBS" +- AC_CHECK_LIB(ssl, SSL_library_init, ssl_ok=yes, ssl_ok=no, -lcrypto) ++ AC_CHECK_LIB(ssl, OPENSSL_init_ssl, ssl_ok=yes, ssl_ok=no, -lcrypto) + LIBS="$old_libs" + fi + +-- +2.24.1 + diff --git a/package/dillo/0003-Support-OpenSSL-1.1.0.patch b/package/dillo/0003-Support-OpenSSL-1.1.0.patch new file mode 100644 index 00000000..87b9d0dc --- /dev/null +++ b/package/dillo/0003-Support-OpenSSL-1.1.0.patch @@ -0,0 +1,33 @@ +From ff44d8b2d5211a502afdb3e612dae0e8133b5124 Mon Sep 17 00:00:00 2001 +From: Johannes Hofmann +Date: Thu, 9 Jan 2020 22:07:15 +0100 +Subject: [PATCH] Support OpenSSL 1.1.0 + +taken-from: pkgsrc (Ryo ONODERA) +submitted-by: Jun Ebihara + +Upstream: https://hg.dillo.org/dillo/rev/b171b8610400 +Signed-off-by: Peter Seiderer +--- + dpi/https.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/dpi/https.c b/dpi/https.c +index 766b3af..025cfc4 100644 +--- a/dpi/https.c ++++ b/dpi/https.c +@@ -476,7 +476,11 @@ static int handle_certificate_problem(SSL * ssl_connection) + case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT: + /*Either self signed and untrusted*/ + /*Extract CN from certificate name information*/ ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + if ((cn = strstr(remote_cert->name, "/CN=")) == NULL) { ++#else ++ if ((cn = strstr(X509_get_subject_name(remote_cert), "/CN=")) == NULL) { ++#endif + strcpy(buf, "(no CN given)"); + } else { + char *cn_end; +-- +2.24.1 + diff --git a/package/dillo/0004-fix-build-with-gcc-10.patch b/package/dillo/0004-fix-build-with-gcc-10.patch new file mode 100644 index 00000000..413bccb0 --- /dev/null +++ b/package/dillo/0004-fix-build-with-gcc-10.patch @@ -0,0 +1,124 @@ +fix build with gcc 10 + +gcc 10 is now defaulting to -fno-common resulting in the following build +failures: + +/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/bin/arm-buildroot-linux-gnueabihf-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -g2 -D_FORTIFY_SOURCE=1 -DENABLE_IPV6 -DD_DNS_THREADED -D_REENTRANT -D_THREAD_SAFE -Wall -W -Wno-unused-parameter -Waggregate-return -o dpid dpi.o dpi_socket_dir.o dpid.o dpid_common.o main.o misc_new.o ../dpip/libDpip.a ../dlib/libDlib.a +/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: dpi_socket_dir.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: multiple definition of `dpi_errno'; dpi.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: first defined here +/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: multiple definition of `dpi_errno'; dpi.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: first defined here +/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: dpid_common.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: multiple definition of `dpi_errno'; dpi.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: first defined here +/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:64: multiple definition of `sock_set'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:64: first defined here +/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:61: multiple definition of `services_list'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:61: first defined here +/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:58: multiple definition of `dpi_attr_list'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:58: first defined here +/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:55: multiple definition of `numsocks'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:55: first defined here +/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:52: multiple definition of `numdpis'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:52: first defined here +/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:31: multiple definition of `srs_fd'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:31: first defined here +/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:28: multiple definition of `srs_name'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:28: first defined here +/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: multiple definition of `dpi_errno'; dpi.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: first defined here +/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: misc_new.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: multiple definition of `dpi_errno'; dpi.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: first defined here + +So add missing extern for srs_fd, numdpis, numsocks, dpi_attr_list, +services_list and sock_set + +Also remove srs_name which is never used and give a name to dpi_errno +enum + +Fixes: + - http://autobuild.buildroot.org/results/9c777af97fe50143c6a68f0170fc86c87d8ead3f + +Signed-off-by: Fabrice Fontaine +[Upstream status: sent to jcid@dillo.org] + +diff -r f60d55c02567 dpid/dpid.c +--- a/dpid/dpid.c Fri Oct 05 22:05:08 2018 +0200 ++++ b/dpid/dpid.c Thu Aug 27 18:16:50 2020 +0200 +@@ -38,6 +38,12 @@ + + #define QUEUE 5 + ++int srs_fd; ++int numdpis; ++int numsocks; ++struct dp *dpi_attr_list; ++Dlist *services_list; ++fd_set sock_set; + volatile sig_atomic_t caught_sigchld = 0; + char *SharedKey = NULL; + +diff -r f60d55c02567 dpid/dpid.h +--- a/dpid/dpid.h Fri Oct 05 22:05:08 2018 +0200 ++++ b/dpid/dpid.h Thu Aug 27 18:16:50 2020 +0200 +@@ -25,10 +25,9 @@ + + /*! \TODO: Should read this from dillorc */ + #define SRS_NAME "dpid.srs" +-char *srs_name; + + /*! dpid's service request socket file descriptor */ +-int srs_fd; ++extern int srs_fd; + + /*! plugin state information + */ +@@ -49,19 +48,19 @@ + }; + + /*! Number of available plugins */ +-int numdpis; ++extern int numdpis; + + /*! Number of sockets being watched */ +-int numsocks; ++extern int numsocks; + + /*! State information for each plugin. */ +-struct dp *dpi_attr_list; ++extern struct dp *dpi_attr_list; + + /*! service served for each plugin */ +-Dlist *services_list; ++extern Dlist *services_list; + + /*! Set of sockets watched for connections */ +-fd_set sock_set; ++extern fd_set sock_set; + + /*! Set to 1 by the SIGCHLD handler dpi_sigchld */ + extern volatile sig_atomic_t caught_sigchld; +diff -r f60d55c02567 dpid/dpid_common.h +--- a/dpid/dpid_common.h Fri Oct 05 22:05:08 2018 +0200 ++++ b/dpid/dpid_common.h Thu Aug 27 18:16:50 2020 +0200 +@@ -37,10 +37,10 @@ + + + /*! Error codes for dpid */ +-enum { ++enum dpi_errno { + no_errors, + dpid_srs_addrinuse /* dpid service request socket address already in use */ +-} dpi_errno; ++}; + + /*! Intended for identifying dillo plugins + * and related files +diff -r f60d55c02567 dpid/main.c +--- a/dpid/main.c Fri Oct 05 22:05:08 2018 +0200 ++++ b/dpid/main.c Thu Aug 27 18:16:50 2020 +0200 +@@ -231,7 +231,7 @@ + /* this sleep used to unmask a race condition */ + // sleep(2); + +- dpi_errno = no_errors; ++ enum dpi_errno error_code = no_errors; + + /* Get list of available dpis */ + numdpis = register_all(&dpi_attr_list); +@@ -254,7 +254,7 @@ + + /* Initialise sockets */ + if ((numsocks = init_ids_srs_socket()) == -1) { +- switch (dpi_errno) { ++ switch (error_code) { + case dpid_srs_addrinuse: + MSG_ERR("dpid refuses to start, possibly because:\n"); + MSG_ERR("\t1) An instance of dpid is already running.\n"); diff --git a/package/dillo/Config.in b/package/dillo/Config.in new file mode 100644 index 00000000..d06f2d1f --- /dev/null +++ b/package/dillo/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_DILLO + bool "dillo" + depends on BR2_PACKAGE_XORG7 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fltk fork() + select BR2_PACKAGE_FLTK + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_ZLIB + help + Dillo is a multi-platform graphical web browser known + for its speed and small footprint. + + Enable openssl package to gain https support. + + http://www.dillo.org + +comment "dillo needs a toolchain w/ C++" + depends on BR2_PACKAGE_XORG7 && BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/dillo/dillo.hash b/package/dillo/dillo.hash new file mode 100644 index 00000000..fa46702a --- /dev/null +++ b/package/dillo/dillo.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 db1be16c1c5842ebe07b419aa7c6ef11a45603a75df2877f99635f4f8345148b dillo-3.0.5.tar.bz2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/dillo/dillo.mk b/package/dillo/dillo.mk new file mode 100644 index 00000000..a6885f5c --- /dev/null +++ b/package/dillo/dillo.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# dillo +# +################################################################################ + +DILLO_VERSION = 3.0.5 +DILLO_SOURCE = dillo-$(DILLO_VERSION).tar.bz2 +DILLO_SITE = http://www.dillo.org/download +DILLO_LICENSE = GPL-3.0+ +DILLO_LICENSE_FILES = COPYING +# configure.ac gets patched, so autoreconf is necessary +DILLO_AUTORECONF = YES +DILLO_DEPENDENCIES = fltk zlib \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) +DILLO_CONF_ENV = ac_cv_path_FLTK_CONFIG=$(STAGING_DIR)/usr/bin/fltk-config + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +DILLO_CONF_OPTS += --enable-ssl +DILLO_DEPENDENCIES += openssl +else +DILLO_CONF_OPTS += --disable-ssl +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +DILLO_CONF_OPTS += --enable-png +DILLO_DEPENDENCIES += libpng +DILLO_CONF_ENV += PNG_CONFIG=$(STAGING_DIR)/usr/bin/libpng-config +else +DILLO_CONF_OPTS += --disable-png +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +DILLO_CONF_OPTS += --enable-jpeg +DILLO_DEPENDENCIES += jpeg +else +DILLO_CONF_OPTS += --disable-jpeg +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +DILLO_CONF_OPTS += --enable-threaded-dns +else +DILLO_CONF_OPTS += --disable-threaded-dns +endif + +$(eval $(autotools-package)) diff --git a/package/ding-libs/Config.in b/package/ding-libs/Config.in new file mode 100644 index 00000000..dc87a01b --- /dev/null +++ b/package/ding-libs/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_DING_LIBS + bool "ding-libs" + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + The ding-libs packages contain a set of libraries used by + the System Security Services Daemon (SSSD) and other + projects and provide functions to manipulate filesystem + pathnames (libpath_utils), a hash table to manage storage + and access time properties (libdhash), a data type to + collect data in a hierarchical structure (libcollection), a + dynamically growing, reference-counted array (libref_array), + and a library to process configuration files in + initialization format (INI) into a library collection data + structure (libini_config). + + https://github.com/SSSD/ding-libs diff --git a/package/ding-libs/ding-libs.hash b/package/ding-libs/ding-libs.hash new file mode 100644 index 00000000..d5d87fac --- /dev/null +++ b/package/ding-libs/ding-libs.hash @@ -0,0 +1,6 @@ +# From https://github.com/SSSD/ding-libs/releases/download/0.6.2/ding-libs-0.6.2.tar.gz.sha256sum +sha256 e5f07f34f5921bcb5ccccfe3751c28497879a6451cd7b395e99e24d9b5728e8d ding-libs-0.6.2.tar.gz + +# Locally computed +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING +sha256 6c57f43c939054fd4b831f271a14c97a488c38f98cdda5e887c5d396e3b3bc58 COPYING.LESSER diff --git a/package/ding-libs/ding-libs.mk b/package/ding-libs/ding-libs.mk new file mode 100644 index 00000000..a4ee7351 --- /dev/null +++ b/package/ding-libs/ding-libs.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# ding-libs +# +################################################################################ + +DING_LIBS_VERSION = 0.6.2 +DING_LIBS_SITE = \ + https://github.com/SSSD/ding-libs/releases/download/$(DING_LIBS_VERSION) +DING_LIBS_DEPENDENCIES = host-pkgconf \ + $(TARGET_NLS_DEPENDENCIES) \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) +DING_LIBS_INSTALL_STAGING = YES +DING_LIBS_LICENSE = LGPL-3.0+ (library),GPL-3.0+ (test programs) +DING_LIBS_LICENSE_FILES = COPYING COPYING.LESSER + +# autoconf/automake generated files not present in tarball +DING_LIBS_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/directfb-examples/0001-remove-bzero.patch b/package/directfb-examples/0001-remove-bzero.patch new file mode 100644 index 00000000..41616b5c --- /dev/null +++ b/package/directfb-examples/0001-remove-bzero.patch @@ -0,0 +1,17 @@ +--- + src/df_knuckles/matrix.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: directfb-examples-1.2.0/src/df_knuckles/matrix.c +=================================================================== +--- directfb-examples-1.2.0.orig/src/df_knuckles/matrix.c ++++ directfb-examples-1.2.0/src/df_knuckles/matrix.c +@@ -19,7 +19,7 @@ + static float Cosine[3600]; + static float Sine[3600]; + +-#define M_CLEAR(m) bzero(m, MATRIX_SIZE) ++#define M_CLEAR(m) memset(m, 0, MATRIX_SIZE) + #define M_IDENTITY(m) memcpy(m, IdentityMatrix, MATRIX_SIZE) + + static void MultiplyMatrix(float *A, float *B) diff --git a/package/directfb-examples/Config.in b/package/directfb-examples/Config.in new file mode 100644 index 00000000..4d5de030 --- /dev/null +++ b/package/directfb-examples/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_DIRECTFB_EXAMPLES + bool "directfb examples" + depends on BR2_PACKAGE_DIRECTFB + help + The DirectFB-examples package contains a set of simple + DirectFB applications that can be used to test and demonstrate + various DirectFB features. As of 4 October 2015, DirectFB's + website http://www.directfb.org/ is down. See alternative site + listed below. + + http://elinux.org/DirectFB diff --git a/package/directfb-examples/directfb-examples.hash b/package/directfb-examples/directfb-examples.hash new file mode 100644 index 00000000..9c7f7c25 --- /dev/null +++ b/package/directfb-examples/directfb-examples.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 9a2104cc4da8123c8371813551b66b943198979f745cbebc034bb5e10844122a DirectFB-examples-1.7.0.tar.gz +sha256 f91483684678e8aa8ccc4ee0ede3140b0494f8305e162695c7e6e3f83e54f236 COPYING diff --git a/package/directfb-examples/directfb-examples.mk b/package/directfb-examples/directfb-examples.mk new file mode 100644 index 00000000..c8d09b3e --- /dev/null +++ b/package/directfb-examples/directfb-examples.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# directfb-examples +# +################################################################################ + +DIRECTFB_EXAMPLES_VERSION = 1.7.0 +DIRECTFB_EXAMPLES_SITE = http://sources.buildroot.net/directfb-examples +DIRECTFB_EXAMPLES_SOURCE = DirectFB-examples-$(DIRECTFB_EXAMPLES_VERSION).tar.gz +DIRECTFB_EXAMPLES_LICENSE = MIT +DIRECTFB_EXAMPLES_LICENSE_FILES = COPYING +DIRECTFB_EXAMPLES_DEPENDENCIES = directfb + +ifeq ($(BR2_STATIC_LIBS),y) +DIRECTFB_EXAMPLES_CONF_OPTS += LIBS=-lstdc++ +endif + +$(eval $(autotools-package)) diff --git a/package/directfb/0001-fix-missing-davinci-voodoo-header.patch b/package/directfb/0001-fix-missing-davinci-voodoo-header.patch new file mode 100644 index 00000000..6ad4958f --- /dev/null +++ b/package/directfb/0001-fix-missing-davinci-voodoo-header.patch @@ -0,0 +1,1726 @@ +The archive of directfb-1.6.3 is still missing some header files against +the tagged git tree of directfb. The following files are missing. + +gfxdrivers/davinci/davinci_c64x.h +gfxdrivers/davinci/davincifb.h +gfxdrivers/davinci/davinci_gfxdriver.h +tests/voodoo/voodoo_test.h + +The headers of course are needed to be able to build every module of +directfb. The headers are taken from the git tree of directfb +http://git.directfb.org/?p=core/DirectFB.git;a=commit;h=38b784549bc59bb07c58bb29667cb658695d39a7, +tag DIRECTFB_1_6_3, SHA1ID 38b784549bc59bb07c58bb29667cb658695d39a7. + +Signed-off-by: Carsten Schoenert + +diff -puNr -Naur directfb-1.6.3-orig/gfxdrivers/davinci/davinci_c64x.h directfb-1.6.3/gfxdrivers/davinci/davinci_c64x.h +--- directfb-1.6.3-orig/gfxdrivers/davinci/davinci_c64x.h 1970-01-01 01:00:00.000000000 +0100 ++++ directfb-1.6.3/gfxdrivers/davinci/davinci_c64x.h 2013-04-07 21:33:25.928530187 +0200 +@@ -0,0 +1,935 @@ ++/* ++ TI Davinci driver - C64X+ DSP Library ++ ++ (c) Copyright 2008 directfb.org ++ (c) Copyright 2007 Telio AG ++ ++ Written by Denis Oliver Kropp and ++ Olaf Dreesen . ++ ++ All rights reserved. ++ ++ This library 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 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. ++ ++ You should have received a copy of the GNU General Public ++ License along with this library; if not, write to the ++ Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. ++*/ ++ ++#ifndef __DAVINCI_C64X_H__ ++#define __DAVINCI_C64X_H__ ++ ++#include ++ ++#include ++ ++#include ++#include ++ ++#include ++ ++#define mb() __asm__ __volatile__ ("" : : : "memory") ++ ++/**********************************************************************************************************************/ ++ ++typedef struct { ++ int magic; ++ ++ int fd; ++ c64xTaskControl *ctl; ++ void *mem; ++ ++ c64xTask *QueueL; ++} DavinciC64x; ++ ++typedef struct { ++ int magic; ++ unsigned int max_tasks; ++ unsigned int num_tasks; ++ c64xTask *tasks; ++} DavinciC64xTasks; ++ ++typedef enum { ++ C64X_TEF_NONE = 0x0000, ++ C64X_TEF_RESET = 0x0001 ++} DavinciC64xEmitFlags; ++ ++/**********************************************************************************************************************/ ++ ++DFBResult davinci_c64x_open ( DavinciC64x *c64x ); ++ ++DFBResult davinci_c64x_close ( DavinciC64x *c64x ); ++ ++DFBResult davinci_c64x_wait_low( DavinciC64x *c64x ); ++ ++/**********************************************************************************************************************/ ++ ++DFBResult davinci_c64x_tasks_init ( DavinciC64xTasks *tasks, ++ unsigned int size ); ++ ++DFBResult davinci_c64x_tasks_destroy( DavinciC64xTasks *tasks ); ++ ++/**********************************************************************************************************************/ ++ ++DFBResult davinci_c64x_emit_tasks( DavinciC64x *c64x, ++ DavinciC64xTasks *tasks, ++ DavinciC64xEmitFlags flags ); ++ ++/**********************************************************************************************************************/ ++ ++static const char *state_names[] = { "DONE", "ERROR", "TODO", "RUNNING" }; ++ ++static inline c64xTask * ++c64x_get_task( DavinciC64x *c64x ) ++{ ++ c64xTaskControl *ctl = c64x->ctl; ++ uint32_t idx = ctl->QL_arm; ++ uint32_t next = (idx + 1) & C64X_QUEUE_MASK; ++ c64xTask *task = &c64x->QueueL[idx]; ++ int loops = 0; ++ uint32_t idle = 0; ++ ++ /* Wait for the entry (and next) to be processed by the DSP (rare case). */ ++ while (task->c64x_flags & C64X_FLAG_TODO || ctl->QL_dsp == next) { ++ if (loops > 666 || (idle && ctl->idlecounter - idle > 666)) { ++ c64xTask *dsp_task = &c64x->QueueL[ctl->QL_dsp]; ++ ++ D_PERROR( "Davinci/C64X+: Blocked! [DSP %d / %d (%s), ARM %d / %d (%s)]\n", ++ ctl->QL_dsp, ++ (dsp_task->c64x_function >> 2) & 0x3fff, ++ state_names[dsp_task->c64x_function & 3], ++ ctl->QL_arm, ++ (task->c64x_function >> 2) & 0x3fff, ++ state_names[task->c64x_function & 3] ); ++ ++ break; ++ } ++ ++ idle = ctl->idlecounter; ++ ++ /* Queue is full, waiting 10-20ms should not be too bad. */ ++ if (loops++ > 10) ++ usleep( 5000 ); ++ } ++ ++ return task; ++} ++ ++static inline void ++c64x_submit_task( DavinciC64x *c64x, c64xTask *task ) ++{ ++ c64xTaskControl *ctl = c64x->ctl; ++ uint32_t idx = ctl->QL_arm; ++ uint32_t next = (idx + 1) & C64X_QUEUE_MASK; ++ ++ mb(); ++ ++ ctl->QL_arm = next; ++ ++ mb(); ++} ++ ++/**********************************************************************************************************************/ ++ ++static inline void ++davinci_c64x_wb_inv_range( DavinciC64x *c64x, ++ unsigned long start, ++ u32 length, ++ u32 func ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = start; ++ task->c64x_arg[1] = length; ++ task->c64x_arg[2] = func; ++ ++ task->c64x_function = C64X_WB_INV_RANGE | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_write_back_all( DavinciC64x *c64x ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_function = C64X_WRITE_BACK_ALL | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++/**********************************************************************************************************************/ ++ ++static inline void ++davinci_c64x_load_block__L( DavinciC64xTasks *tasks, ++ unsigned long words, ++ u32 num, ++ u32 flags ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = words; ++ task->c64x_arg[1] = num; ++ task->c64x_arg[2] = flags; ++ ++ task->c64x_function = C64X_LOAD_BLOCK | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_load_block( DavinciC64x *c64x, ++ unsigned long words, ++ u32 num, ++ u32 flags ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = words; ++ task->c64x_arg[1] = num; ++ task->c64x_arg[2] = flags; ++ ++ task->c64x_function = C64X_LOAD_BLOCK | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_fetch_uyvy( DavinciC64x *c64x, ++ unsigned long dest, ++ unsigned long source, ++ u32 pitch, ++ u32 height, ++ u32 flags ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = source; ++ task->c64x_arg[2] = pitch; ++ task->c64x_arg[3] = height; ++ task->c64x_arg[4] = flags; ++ ++ task->c64x_function = C64X_FETCH_UYVY | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_mc( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long source0, ++ unsigned long source1, ++ u32 spitch, ++ u32 height, ++ int func ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = dpitch; ++ task->c64x_arg[2] = source0; ++ task->c64x_arg[3] = source1; ++ task->c64x_arg[4] = spitch; ++ task->c64x_arg[5] = height; ++ ++ task->c64x_function = func | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_put_idct_uyvy_16x16__L( DavinciC64xTasks *tasks, ++ unsigned long dest, ++ u32 pitch, ++ u32 flags ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = flags; ++ ++ task->c64x_function = C64X_PUT_IDCT_UYVY_16x16 | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_put_idct_uyvy_16x16( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 pitch, ++ u32 flags ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = flags; ++ ++ task->c64x_function = C64X_PUT_IDCT_UYVY_16x16 | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_put_mc_uyvy_16x16__L( DavinciC64xTasks *tasks, ++ unsigned long dest, ++ u32 pitch, ++ u32 flags ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = flags; ++ ++ task->c64x_function = C64X_PUT_MC_UYVY_16x16 | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_put_mc_uyvy_16x16( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 pitch, ++ u32 flags ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = flags; ++ ++ task->c64x_function = C64X_PUT_MC_UYVY_16x16 | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_put_sum_uyvy_16x16__L( DavinciC64xTasks *tasks, ++ unsigned long dest, ++ u32 pitch, ++ u32 flags ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = flags; ++ ++ task->c64x_function = C64X_PUT_SUM_UYVY_16x16 | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_put_sum_uyvy_16x16( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 pitch, ++ u32 flags ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = flags; ++ ++ task->c64x_function = C64X_PUT_SUM_UYVY_16x16 | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_dva_begin_frame__L( DavinciC64xTasks *tasks, ++ u32 pitch, ++ unsigned long current, ++ unsigned long past, ++ unsigned long future, ++ u32 flags ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = pitch; ++ task->c64x_arg[1] = current; ++ task->c64x_arg[2] = past; ++ task->c64x_arg[3] = future; ++ task->c64x_arg[4] = flags; ++ ++ task->c64x_function = C64X_DVA_BEGIN_FRAME | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_dva_begin_frame( DavinciC64x *c64x, ++ u32 pitch, ++ unsigned long current, ++ unsigned long past, ++ unsigned long future, ++ u32 flags ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = pitch; ++ task->c64x_arg[1] = current; ++ task->c64x_arg[2] = past; ++ task->c64x_arg[3] = future; ++ task->c64x_arg[4] = flags; ++ ++ task->c64x_function = C64X_DVA_BEGIN_FRAME | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_dva_motion_block__L( DavinciC64xTasks *tasks, ++ unsigned long macroblock ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = macroblock; ++ ++ task->c64x_function = C64X_DVA_MOTION_BLOCK | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_dva_motion_block( DavinciC64x *c64x, ++ unsigned long macroblock ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = macroblock; ++ ++ task->c64x_function = C64X_DVA_MOTION_BLOCK | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++/**********************************************************************************************************************/ ++ ++static inline void ++davinci_c64x_dva_idct( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 pitch, ++ unsigned long source ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = source; ++ ++ task->c64x_function = C64X_DVA_IDCT | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++/**********************************************************************************************************************/ ++ ++static inline void ++davinci_c64x_put_uyvy_16x16( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 pitch, ++ unsigned long source, ++ u32 flags ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = source; ++ task->c64x_arg[3] = flags; ++ ++ task->c64x_function = C64X_PUT_UYVY_16x16 | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_dither_argb__L( DavinciC64xTasks *tasks, ++ unsigned long dst_rgb, ++ unsigned long dst_alpha, ++ u32 dst_pitch, ++ unsigned long source, ++ u32 src_pitch, ++ u32 width, ++ u32 height ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dst_rgb; ++ task->c64x_arg[1] = dst_alpha; ++ task->c64x_arg[2] = dst_pitch; ++ task->c64x_arg[3] = source; ++ task->c64x_arg[4] = src_pitch; ++ task->c64x_arg[5] = width; ++ task->c64x_arg[6] = height; ++ ++ task->c64x_function = C64X_DITHER_ARGB | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_dither_argb( DavinciC64x *c64x, ++ unsigned long dst_rgb, ++ unsigned long dst_alpha, ++ u32 dst_pitch, ++ unsigned long source, ++ u32 src_pitch, ++ u32 width, ++ u32 height ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dst_rgb; ++ task->c64x_arg[1] = dst_alpha; ++ task->c64x_arg[2] = dst_pitch; ++ task->c64x_arg[3] = source; ++ task->c64x_arg[4] = src_pitch; ++ task->c64x_arg[5] = width; ++ task->c64x_arg[6] = height; ++ ++ task->c64x_function = C64X_DITHER_ARGB | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_fill_16__L( DavinciC64xTasks *tasks, ++ unsigned long dest, ++ u32 pitch, ++ u32 width, ++ u32 height, ++ u32 value ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = width; ++ task->c64x_arg[3] = height; ++ task->c64x_arg[4] = value; ++ ++ task->c64x_function = C64X_FILL_16 | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_fill_16( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 pitch, ++ u32 width, ++ u32 height, ++ u32 value ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = width; ++ task->c64x_arg[3] = height; ++ task->c64x_arg[4] = value; ++ ++ task->c64x_function = C64X_FILL_16 | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_fill_32__L( DavinciC64xTasks *tasks, ++ unsigned long dest, ++ u32 pitch, ++ u32 width, ++ u32 height, ++ u32 value ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = width; ++ task->c64x_arg[3] = height; ++ task->c64x_arg[4] = value; ++ ++ task->c64x_function = C64X_FILL_32 | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_fill_32( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 pitch, ++ u32 width, ++ u32 height, ++ u32 value ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = width; ++ task->c64x_arg[3] = height; ++ task->c64x_arg[4] = value; ++ ++ task->c64x_function = C64X_FILL_32 | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_blit_16__L( DavinciC64xTasks *tasks, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 width, ++ u32 height ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = dpitch; ++ task->c64x_arg[2] = src; ++ task->c64x_arg[3] = spitch; ++ task->c64x_arg[4] = width; ++ task->c64x_arg[5] = height; ++ ++ task->c64x_function = C64X_COPY_16 | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_blit_16( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 width, ++ u32 height ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = dpitch; ++ task->c64x_arg[2] = src; ++ task->c64x_arg[3] = spitch; ++ task->c64x_arg[4] = width; ++ task->c64x_arg[5] = height; ++ ++ task->c64x_function = C64X_COPY_16 | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_blit_32__L( DavinciC64xTasks *tasks, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 width, ++ u32 height ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = dpitch; ++ task->c64x_arg[2] = src; ++ task->c64x_arg[3] = spitch; ++ task->c64x_arg[4] = width; ++ task->c64x_arg[5] = height; ++ ++ task->c64x_function = C64X_COPY_32 | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_blit_32( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 width, ++ u32 height ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = dpitch; ++ task->c64x_arg[2] = src; ++ task->c64x_arg[3] = spitch; ++ task->c64x_arg[4] = width; ++ task->c64x_arg[5] = height; ++ ++ task->c64x_function = C64X_COPY_32 | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_stretch_32__L( DavinciC64xTasks *tasks, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 dw, ++ u32 dh, ++ u32 sw, ++ u32 sh, ++ const DFBRegion *clip ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = src; ++ task->c64x_arg[2] = dpitch | (spitch << 16); ++ task->c64x_arg[3] = dh | (dw << 16); ++ task->c64x_arg[4] = sh | (sw << 16); ++ task->c64x_arg[5] = clip->x2 | (clip->y2 << 16); ++ task->c64x_arg[6] = clip->x1 | (clip->y1 << 16); ++ ++ if (sw > dw && sh > dh) ++ task->c64x_function = C64X_STRETCH_32_down | C64X_FLAG_TODO; ++ else ++ task->c64x_function = C64X_STRETCH_32_up | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_stretch_32( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 dw, ++ u32 dh, ++ u32 sw, ++ u32 sh, ++ const DFBRegion *clip ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = src; ++ task->c64x_arg[2] = dpitch | (spitch << 16); ++ task->c64x_arg[3] = dh | (dw << 16); ++ task->c64x_arg[4] = sh | (sw << 16); ++ task->c64x_arg[5] = clip->x2 | (clip->y2 << 16); ++ task->c64x_arg[6] = clip->x1 | (clip->y1 << 16); ++ ++ if (sw > dw && sh > dh) ++ task->c64x_function = C64X_STRETCH_32_down | C64X_FLAG_TODO; ++ else ++ task->c64x_function = C64X_STRETCH_32_up | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_blit_blend_32__L( DavinciC64xTasks *tasks, ++ u32 sub_func, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 width, ++ u32 height, ++ u32 argb, ++ u8 alpha ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = dpitch; ++ task->c64x_arg[2] = src; ++ task->c64x_arg[3] = spitch; ++ task->c64x_arg[4] = width | (height << 16); ++ task->c64x_arg[5] = argb; ++ task->c64x_arg[6] = alpha; ++ ++ task->c64x_function = (sub_func << 16) | C64X_BLEND_32 | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_blit_blend_32( DavinciC64x *c64x, ++ u32 sub_func, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 width, ++ u32 height, ++ u32 argb, ++ u8 alpha ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = dpitch; ++ task->c64x_arg[2] = src; ++ task->c64x_arg[3] = spitch; ++ task->c64x_arg[4] = width | (height << 16); ++ task->c64x_arg[5] = argb; ++ task->c64x_arg[6] = alpha; ++ ++ task->c64x_function = (sub_func << 16) | C64X_BLEND_32 | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_blit_keyed_16__L( DavinciC64xTasks *tasks, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 width, ++ u32 height, ++ u32 key, ++ u32 mask ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = (dpitch << 16) | (spitch & 0xffff); ++ task->c64x_arg[2] = src; ++ task->c64x_arg[3] = width; ++ task->c64x_arg[4] = height; ++ task->c64x_arg[5] = key; ++ task->c64x_arg[6] = mask; ++ ++ task->c64x_function = C64X_COPY_KEYED_16 | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_blit_keyed_16( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 width, ++ u32 height, ++ u32 key, ++ u32 mask ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = (dpitch << 16) | (spitch & 0xffff); ++ task->c64x_arg[2] = src; ++ task->c64x_arg[3] = width; ++ task->c64x_arg[4] = height; ++ task->c64x_arg[5] = key; ++ task->c64x_arg[6] = mask; ++ ++ task->c64x_function = C64X_COPY_KEYED_16 | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_blit_keyed_32__L( DavinciC64xTasks *tasks, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 width, ++ u32 height, ++ u32 key, ++ u32 mask ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = (dpitch << 16) | (spitch & 0xffff); ++ task->c64x_arg[2] = src; ++ task->c64x_arg[3] = width; ++ task->c64x_arg[4] = height; ++ task->c64x_arg[5] = key; ++ task->c64x_arg[6] = mask; ++ ++ task->c64x_function = C64X_COPY_KEYED_32 | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_blit_keyed_32( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 width, ++ u32 height, ++ u32 key, ++ u32 mask ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = (dpitch << 16) | (spitch & 0xffff); ++ task->c64x_arg[2] = src; ++ task->c64x_arg[3] = width; ++ task->c64x_arg[4] = height; ++ task->c64x_arg[5] = key; ++ task->c64x_arg[6] = mask; ++ ++ task->c64x_function = C64X_COPY_KEYED_32 | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++#endif ++ +diff -puNr -Naur directfb-1.6.3-orig/gfxdrivers/davinci/davincifb.h directfb-1.6.3/gfxdrivers/davinci/davincifb.h +--- directfb-1.6.3-orig/gfxdrivers/davinci/davincifb.h 1970-01-01 01:00:00.000000000 +0100 ++++ directfb-1.6.3/gfxdrivers/davinci/davincifb.h 2013-04-07 21:33:21.488622184 +0200 +@@ -0,0 +1,581 @@ ++/* ++ * Copyright (C) 2006 Texas Instruments Inc ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option)any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ * ++ * File: davincifb.h ++ */ ++ ++#ifndef DAVINVI_VPBE_H ++#define DAVINVI_VPBE_H ++ ++/* include Linux files */ ++#include ++ ++/* define the custom FBIO_WAITFORVSYNC ioctl */ ++#define FBIO_WAITFORVSYNC _IOW('F', 0x20, u_int32_t) ++#define FBIO_SETATTRIBUTE _IOW('F', 0x21, struct fb_fillrect) ++ ++/* Backported IOCTLS. */ ++#define FBIO_SETPOSX _IOW('F', 0x22, u_int32_t) ++#define FBIO_SETPOSY _IOW('F', 0x23, u_int32_t) ++#define FBIO_SETZOOM _IOW('F', 0x24, struct zoom_params) ++#define FBIO_GETSTD _IOR('F', 0x25, u_int32_t) ++#define FBIO_RESIZER _IOW('F', 0x26, struct vpfe_resizer_params) ++#define FBIO_SYNC _IOW('F', 0x27, u_int32_t) ++ ++typedef struct zoom_params { ++ u_int32_t window_id; ++ u_int32_t zoom_h; ++ u_int32_t zoom_v; ++} zoom_params_t; ++ ++typedef struct vpfe_resizer_params ++{ ++ u_int32_t rsz_cnt; //busy-lock ++ u_int32_t out_size; //busy-lock ++ u_int32_t in_start; //busy-lock ++ u_int32_t in_size; //busy-lock ++ u_int32_t sdr_inadd; //shadowed ++ u_int32_t sdr_inoff; //shadowed ++ u_int32_t sdr_outadd; //shadowed ++ u_int32_t sdr_outoff; //shadowed ++ u_int32_t hfilt[16]; //busy-lock ++ u_int32_t vfilt[16]; //busy-lock ++ u_int32_t yenh; //busy-lock ++} vpfe_resizer_params_t; ++ ++typedef struct fb_set_start { ++ int offset; /* offset from smem_start */ ++ unsigned long physical; /* absolute physical address when offset < 0 */ ++ ++ u_int64_t sync; /* input: target sync counter for change or 0 for no sync at all, ++ output: sync counter of actual change or 0 if still pending */ ++} fb_set_start_t; ++ ++ ++#ifdef _IOC_TYPECHECK ++#undef _IOC_TYPECHECK ++#define _IOC_TYPECHECK(x) (sizeof(x)) ++#endif ++ ++#define RAM_CLUT_SIZE 256*3 ++#define FBIO_ENABLE_DISABLE_WIN \ ++ _IOW('F', 0x30, unsigned char) ++#define FBIO_SET_BITMAP_BLEND_FACTOR \ ++ _IOW('F', 0x31, vpbe_bitmap_blend_params_t) ++#define FBIO_SET_BITMAP_WIN_RAM_CLUT \ ++ _IOW('F', 0x32, unsigned char)*RAM_CLUT_SIZE) ++#define FBIO_ENABLE_DISABLE_ATTRIBUTE_WIN \ ++ _IOW('F', 0x33, unsigned int) ++#define FBIO_GET_BLINK_INTERVAL \ ++ _IOR('F', 0x34, vpbe_blink_option_t) ++#define FBIO_SET_BLINK_INTERVAL \ ++ _IOW('F', 0x35, vpbe_blink_option_t) ++#define FBIO_GET_VIDEO_CONFIG_PARAMS \ ++ _IOR('F', 0x36, vpbe_video_config_params_t) ++#define FBIO_SET_VIDEO_CONFIG_PARAMS \ ++ _IOW('F', 0x37, vpbe_video_config_params_t) ++#define FBIO_GET_BITMAP_CONFIG_PARAMS \ ++ _IOR('F', 0x38, vpbe_bitmap_config_params_t) ++#define FBIO_SET_BITMAP_CONFIG_PARAMS \ ++ _IOW('F', 0x39, vpbe_bitmap_config_params_t) ++#define FBIO_SET_DCLK \ ++ _IOW('F', 0x40, vpbe_dclk_t) ++#define FBIO_SET_INTERFACE \ ++ _IOW('F', 0x41, unsigned char) ++#define FBIO_GET_INTERFACE \ ++ _IOR('F', 0x42, unsigned char) ++#define FBIO_QUERY_TIMING \ ++ _IOWR('F', 0x43, struct vpbe_mode_info) ++#define FBIO_SET_TIMING \ ++ _IOW('F', 0x44, struct vpbe_fb_videomode) ++#define FBIO_GET_TIMING \ ++ _IOR('F', 0x45, struct vpbe_fb_videomode) ++#define FBIO_SET_VENC_CLK_SOURCE \ ++ _IOW('F', 0x46, unsigned char) ++#define FBIO_SET_BACKG_COLOR \ ++ _IOW('F', 0x47, vpbe_backg_color_t) ++#define FBIO_ENABLE_DISPLAY \ ++ _IOW('F', 0x48, unsigned char) ++#define FBIO_SETPOS \ ++ _IOW('F', 0x49, u_int32_t) ++#define FBIO_SET_CURSOR \ ++ _IOW('F', 0x50, struct fb_cursor) ++#define FBIO_SET_START \ ++ _IOW('F', 0x66, struct fb_set_start) ++ ++/* ++ * Defines and Constants ++ */ ++#ifdef __KERNEL__ ++#define DAVINCIFB_DEVICE "davincifb" ++#define DAVINCIFB_DRIVER "davincifb" ++ ++#define MULTIPLE_BUFFERING 1 ++ ++#ifdef MULTIPLE_BUFFERING ++#define DOUBLE_BUF 2 ++#define TRIPLE_BUF 3 ++#else ++#define DOUBLE_BUF 1 ++#define TRIPLE_BUF 1 ++#endif ++ ++/* usage: if (is_win(info->fix.id, OSD0)) ... */ ++#define is_win(name, x) ((strcmp(name, x ## _FBNAME) == 0) ? 1 : 0) ++ ++/* ++ * display controller register I/O routines ++ */ ++u32 dispc_reg_in(u32 offset); ++u32 dispc_reg_out(u32 offset, u32 val); ++u32 dispc_reg_merge(u32 offset, u32 val, u32 mask); ++ ++#endif /*__KERNEL__*/ ++ ++/* Error return codes */ ++#define VPBE_INVALID_PARA_VALUE 700 ++#define VPBE_WRONG_WINDOW_ID 701 ++#define VPBE_CURRENTLY_IN_REQUIRED_MODE 702 ++#define VPBE_INSUFFICIENT_CLUT_VALUES 703 ++#define VPBE_CLUT_WRITE_TIMEOUT 704 ++#define VPBE_VID0_BUF_ADR_NULL 705 ++#define VPBE_WINDOW_NOT_DISABLED 706 ++#define VPBE_WINDOW_NOT_ENABLED 707 ++ ++#ifndef __KERNEL__ ++/* Window ID definations */ ++#define OSD0 0 ++#define VID0 1 ++#define OSD1 2 ++#define VID1 3 ++#endif ++ ++/* There are 4 framebuffers, each represented by an fb_info and ++ * a dm_win_info structure */ ++#define OSD0_FBNAME "dm_osd0_fb" ++#define OSD1_FBNAME "dm_osd1_fb" ++#define VID0_FBNAME "dm_vid0_fb" ++#define VID1_FBNAME "dm_vid1_fb" ++ ++/* FIXME: Digital LCD RGB matrix coefficients */ ++#define DLCD_DGY_VAL 0 ++#define DLCD_DRV_VAL 0 ++#define DLCD_DGU_VAL 0 ++#define DLCD_DBU_VAL 0 ++ ++/* Defines for bitmap format */ ++#define VPBE_BITMAP_BIT_1 1 ++#define VPBE_BITMAP_BIT_2 2 ++#define VPBE_BITMAP_BIT_4 4 ++#define VPBE_BITMAP_BIT_8 8 ++#define VPBE_BITMAP_RGB565 16 ++#define VPBE_VIDEO_YUV422 16 ++#define VPBE_VIDEO_RGB888 24 ++ ++/* Defines foe cursor parameter validation*/ ++#define MAX_CURSOR_WIDTH 0x3FF ++#define MAX_CURSOR_HEIGHT 0x1FF ++#define MAX_CURSOR_LINEWIDTH 7 ++ ++#define BASEX 0x80 ++#define BASEY 0x12 ++#define BASEX_DLCD 0x59 ++#define BASEY_DLCD 0x22 ++ ++/* ++ * Enumerations ++ */ ++/* Enum for blending factor */ ++typedef enum vpbe_blend_factor { ++ OSD_CONTRIBUTION_ZERO = 0, ++ OSD_CONTRIBUTION_1_BY_8 = 1, ++ OSD_CONTRIBUTION_2_BY_8 = 2, ++ OSD_CONTRIBUTION_3_BY_8 = 3, ++ OSD_CONTRIBUTION_4_BY_8 = 4, ++ OSD_CONTRIBUTION_5_BY_8 = 5, ++ OSD_CONTRIBUTION_6_BY_8 = 6, ++ OSD_CONTRIBUTION_ONE = 7 ++} vpbe_blend_factor_t; ++ ++/* Enum for Boolean variables */ ++typedef enum { ++ SET_0 = 0, ++ SET_1 = 1 ++} CB_CR_ORDER, ATTRIBUTE, ROM_RAM_CLUT; ++ ++/* Defines for Display Interface */ ++#define PRGB 0 ++#define COMPOSITE 1 ++#define SVIDEO 2 ++#define COMPONENT 3 ++#define RGB 4 ++#define YCC16 5 ++#define YCC8 6 ++#define SRGB 7 ++#define EPSON 8 ++#define CASIO1G 9 ++#define UDISP 10 ++#define STN 11 ++#define VPBE_MAX_INTERFACES 12 ++ ++/* Defines for Display Mode */ ++#define LCD 0 ++#define NTSC 1 ++#define PAL 2 ++#define P525 3 ++#define P625 4 ++ ++#define DEFAULT_MODE 0 ++#define P480 0 ++#define P400 1 ++#define P350 2 ++#define NON_EXISTING_MODE 255 ++/* Enable/Disable enum */ ++typedef enum { ++ VPBE_DISABLE = 0, ++ VPBE_ENABLE = 1 ++} ATTENUATION, TRANSPARENCY, EXPANSION, BLINKING; ++ ++typedef enum clk_source { ++ CLK_SOURCE_CLK27 = 0, ++ CLK_SOURCE_CLK54 = 1, ++ CLK_SOURCE_VPBECLK = 2 ++} CLK_SOURCE; ++ ++/* ++ * Structures and Union Definitions ++ */ ++ ++/* Structure for transparency and the blending factor for the bitmap window */ ++typedef struct vpbe_bitmap_blend_params { ++ unsigned int colorkey; /* color key to be blend */ ++ unsigned int enable_colorkeying; /* enable color keying */ ++ unsigned int bf; /* valid range from 0 to 7 only. */ ++} vpbe_bitmap_blend_params_t; ++ ++/* Structure for window expansion */ ++typedef struct vpbe_win_expansion { ++ EXPANSION horizontal; ++ EXPANSION vertical; /* 1: Enable 0:disable */ ++} vpbe_win_expansion_t; ++ ++/* Structure for OSD window blinking options */ ++typedef struct vpbe_blink_option { ++ BLINKING blinking; /* 1: Enable blinking 0: Disable */ ++ unsigned int interval; /* Valid only if blinking is 1 */ ++} vpbe_blink_option_t; ++ ++/* Structure for DCLK parameters */ ++typedef struct vpbe_dclk { ++ unsigned char dclk_pattern_width; ++ unsigned int dclk_pattern0; ++ unsigned int dclk_pattern1; ++ unsigned int dclk_pattern2; ++ unsigned int dclk_pattern3; ++} vpbe_dclk_t; ++ ++/* Structure for display format */ ++typedef struct vpbe_display_format { ++ unsigned char interface; /* Output interface type */ ++ unsigned char mode; /* output mode */ ++} vpbe_display_format_t; ++ ++/* Structure for background color */ ++typedef struct vpbe_backg_color { ++ unsigned char clut_select; /* 2: RAM CLUT 1:ROM1 CLUT 0:ROM0 CLUT */ ++ unsigned char color_offset; /* index of color */ ++} vpbe_backg_color_t; ++ ++/* Structure for Video window configurable parameters */ ++typedef struct vpbe_video_config_params { ++ CB_CR_ORDER cb_cr_order; /*Cb/Cr order in input data for a pixel. */ ++ /* 0: cb cr 1: cr cb */ ++ vpbe_win_expansion_t exp_info; /* HZ/VT Expansion enable disable */ ++} vpbe_video_config_params_t; ++ ++/*Union of structures giving the CLUT index for the 1, 2, 4 bit bitmap values.*/ ++typedef union vpbe_clut_idx { ++ struct _for_4bit_bimap { ++ unsigned char bitmap_val_0; ++ unsigned char bitmap_val_1; ++ unsigned char bitmap_val_2; ++ unsigned char bitmap_val_3; ++ unsigned char bitmap_val_4; ++ unsigned char bitmap_val_5; ++ unsigned char bitmap_val_6; ++ unsigned char bitmap_val_7; ++ unsigned char bitmap_val_8; ++ unsigned char bitmap_val_9; ++ unsigned char bitmap_val_10; ++ unsigned char bitmap_val_11; ++ unsigned char bitmap_val_12; ++ unsigned char bitmap_val_13; ++ unsigned char bitmap_val_14; ++ unsigned char bitmap_val_15; ++ } for_4bit_bimap; ++ struct _for_2bit_bimap { ++ unsigned char bitmap_val_0; ++ unsigned char dummy0[4]; ++ unsigned char bitmap_val_1; ++ unsigned char dummy1[4]; ++ unsigned char bitmap_val_2; ++ unsigned char dummy2[4]; ++ unsigned char bitmap_val_3; ++ } for_2bit_bimap; ++ struct _for_1bit_bimap { ++ unsigned char bitmap_val_0; ++ unsigned char dummy0[14]; ++ unsigned char bitmap_val_1; ++ } for_1bit_bimap; ++} vpbe_clut_idx_t; ++ ++/* Structure for bitmap window configurable parameters */ ++typedef struct vpbe_bitmap_config_params { ++ /* Only for bitmap width = 1,2,4 bits */ ++ vpbe_clut_idx_t clut_idx; ++ /* Attenuation value for YUV o/p for bitmap window */ ++ unsigned char attenuation_enable; ++ /* 0: ROM DM270, 1:ROM DM320, 2:RAM CLUT */ ++ unsigned char clut_select; ++} vpbe_bitmap_config_params_t; ++ ++/* Unioun for video/OSD configuration parameters */ ++typedef union vpbe_conf_params { ++ ++ struct vpbe_video_params { ++ CB_CR_ORDER cb_cr_order; ++ /* HZ/VT Expansion enable disable */ ++ vpbe_win_expansion_t exp_info; ++ } video_params; ++ ++ struct vpbe_bitmap_params { ++ /* Attenuation value for YUV o/p */ ++ ATTENUATION attenuation_enable; ++ /* 0: ROM DM270, 1: ROM DM320, 2:RAM CLUT */ ++ unsigned char clut_select; ++ /* Only for bitmap width = 1,2,4 bits */ ++ vpbe_clut_idx_t clut_idx; ++ /* 0: OSD window is bitmap window */ ++ /* 1: OSD window is attribute window */ ++ ATTRIBUTE enable_attribute; ++ /* To hold bps value. ++ Used to switch back from attribute to bitmap. */ ++ unsigned int stored_bits_per_pixel; ++ /* Blending information */ ++ vpbe_bitmap_blend_params_t blend_info; ++ /* OSD Blinking information */ ++ vpbe_blink_option_t blink_info; ++ } bitmap_params; ++ ++} vpbe_conf_params_t; ++ ++typedef struct vpbe_video_params vpbe_video_params_t; ++typedef struct vpbe_bitmap_params vpbe_bitmap_params_t; ++ ++/* Structure to hold window position */ ++typedef struct vpbe_window_position { ++ unsigned int xpos; /* X position of the window */ ++ unsigned int ypos; /* Y position of the window */ ++} vpbe_window_position_t; ++ ++#ifdef __KERNEL__ ++/* Structure for each window */ ++typedef struct vpbe_dm_win_info { ++ struct fb_info info; ++ vpbe_window_position_t win_pos; /* X,Y position of window */ ++ /* Size of window is already there in var_info structure. */ ++ ++ dma_addr_t fb_base_phys; /*framebuffer area */ ++ unsigned int fb_base; /*window memory pointer */ ++ unsigned int fb_size; /*memory size */ ++ unsigned int pseudo_palette[17]; ++ int alloc_fb_mem; ++ /*flag to identify if framebuffer area is fixed or not */ ++ unsigned long sdram_address; ++ struct vpbe_dm_info *dm; ++ unsigned char window_enable; /*Additions for all windows */ ++ zoom_params_t zoom; /*Zooming parameters */ ++ unsigned char field_frame_select; /*To select Field or frame */ ++ unsigned char numbufs; /*Number of buffers valid 2 or 3 */ ++ vpbe_conf_params_t conf_params; ++ /*window configuration parameter union pointer */ ++} vpbe_dm_win_info_t; ++#endif /*__KERNEL__*/ ++ ++/* ++ * Videmode structure for display interface and mode settings ++ */ ++typedef struct vpbe_fb_videomode { ++ unsigned char name[10]; /* Mode name ( NTSC , PAL) */ ++ unsigned int vmode; /* FB_MODE_INTERLACED or FB_MODE_NON_INTERLACED */ ++ unsigned int xres; /* X Resolution of the display */ ++ unsigned int yres; /* Y Resolution of the display */ ++ unsigned int fps; /* frames per second */ ++ /* Timing Parameters applicable for std = 0 only */ ++ unsigned int left_margin; ++ unsigned int right_margin; ++ unsigned int upper_margin; ++ unsigned int lower_margin; ++ unsigned int hsync_len; ++ unsigned int vsync_len; ++ unsigned int sync; /* 0: hsync -ve/vsync -ve */ ++ /*1: hsync -ve/vsync +ve */ ++ /*2: hsync +ve/vsync -ve */ ++ /*3: hsync +ve/vsync +ve */ ++ unsigned int basepx; /* Display x,y start position */ ++ unsigned int basepy; ++/* 1= Mode s available in modelist 0=Mode is not available in modelist */ ++ unsigned int std; ++} vpbe_fb_videomode_t; ++ ++/* Structure to interface videomode to application*/ ++typedef struct vpbe_mode_info { ++ vpbe_fb_videomode_t vid_mode; ++ unsigned char interface; ++ unsigned char mode_idx; ++} vpbe_mode_info_t; ++ ++#ifdef __KERNEL__ ++/* ++ * Structure for the driver holding information of windows, ++ * memory base addresses etc. ++ */ ++typedef struct vpbe_dm_info { ++ vpbe_dm_win_info_t *osd0; ++ vpbe_dm_win_info_t *osd1; ++ vpbe_dm_win_info_t *vid0; ++ vpbe_dm_win_info_t *vid1; ++ ++/* to map the registers */ ++ dma_addr_t mmio_base_phys; ++ unsigned int mmio_base; ++ unsigned int mmio_size; ++ ++ wait_queue_head_t vsync_wait; ++ unsigned int vsync_cnt; ++ int timeout; ++ ++ /* this is the function that configures the output device (NTSC/PAL/LCD) ++ * for the required output format (composite/s-video/component/rgb) ++ */ ++ void (*output_device_config) (void); ++ ++ struct device *dev; ++ ++ vpbe_backg_color_t backg; /* background color */ ++ vpbe_dclk_t dclk; /*DCLK parameters */ ++ vpbe_display_format_t display; /*Display interface and mode */ ++ vpbe_fb_videomode_t videomode; /*Cuurent videomode */ ++ char ram_clut[256][3]; /*RAM CLUT array */ ++ struct fb_cursor cursor; /* cursor config params from fb.h */ ++/*Flag that indicates whether any of the display is enabled or not*/ ++ int display_enable; ++} vpbe_dm_info_t; ++ ++/* ++ * Functions Definitions for 'davincifb' module ++ */ ++int vpbe_mem_alloc_window_buf(vpbe_dm_win_info_t *); ++int vpbe_mem_release_window_buf(vpbe_dm_win_info_t *); ++void init_display_function(vpbe_display_format_t *); ++int vpbe_mem_alloc_struct(vpbe_dm_win_info_t **); ++void set_vid0_default_conf(void); ++void set_vid1_default_conf(void); ++void set_osd0_default_conf(void); ++void set_osd1_default_conf(void); ++void set_cursor_default_conf(void); ++void set_dm_default_conf(void); ++void set_win_enable(char *, unsigned int); ++int within_vid0_limits(u32, u32, u32, u32); ++void vpbe_set_display_default(void); ++#ifdef __KERNEL__ ++void set_win_position(char *, u32, u32, u32, u32); ++void change_win_param(int); ++void set_interlaced(char *, unsigned int); ++#endif /* __KERNEL__ */ ++ ++/* ++ * Function definations for 'osd' module ++ */ ++ ++int vpbe_enable_window(vpbe_dm_win_info_t *); ++int vpbe_disable_window(vpbe_dm_win_info_t *); ++int vpbe_vid_osd_select_field_frame(u8 *, u8); ++int vpbe_bitmap_set_blend_factor(u8 *, vpbe_bitmap_blend_params_t *); ++int vpbe_bitmap_set_ram_clut(void); ++int vpbe_enable_disable_attribute_window(u32); ++int vpbe_get_blinking(u8 *, vpbe_blink_option_t *); ++int vpbe_set_blinking(u8 *, vpbe_blink_option_t *); ++int vpbe_set_vid_params(u8 *, vpbe_video_config_params_t *); ++int vpbe_get_vid_params(u8 *, vpbe_video_config_params_t *); ++int vpbe_bitmap_get_params(u8 *, vpbe_bitmap_config_params_t *); ++int vpbe_bitmap_set_params(u8 *, vpbe_bitmap_config_params_t *); ++int vpbe_set_cursor_params(struct fb_cursor *); ++int vpbe_set_vid_expansion(vpbe_win_expansion_t *); ++int vpbe_set_dclk(vpbe_dclk_t *); ++int vpbe_set_display_format(vpbe_display_format_t *); ++int vpbe_set_backg_color(vpbe_backg_color_t *); ++int vpbe_set_interface(u8); ++int vpbe_query_mode(vpbe_mode_info_t *); ++int vpbe_set_mode(struct vpbe_fb_videomode *); ++int vpbe_set_venc_clk_source(u8); ++void set_vid0_default_conf(void); ++void set_osd0_default_conf(void); ++void set_vid1_default_conf(void); ++void set_osd1_default_conf(void); ++void set_cursor_default_conf(void); ++void set_dm_default_conf(void); ++/* ++ * Function definations for 'venc' module ++ */ ++ ++void davincifb_ntsc_composite_config(void); ++void davincifb_ntsc_svideo_config(void); ++void davincifb_ntsc_component_config(void); ++void davincifb_pal_composite_config(void); ++void davincifb_pal_svideo_config(void); ++void davincifb_pal_component_config(void); ++ ++void vpbe_davincifb_ntsc_rgb_config(void); ++void vpbe_davincifb_pal_rgb_config(void); ++void vpbe_davincifb_525p_component_config(void); ++void vpbe_davincifb_625p_component_config(void); ++ ++void vpbe_enable_venc(int); ++void vpbe_enable_dacs(int); ++/* ++ * Function definations for 'dlcd' module ++ */ ++void vpbe_davincifb_480p_prgb_config(void); ++void vpbe_davincifb_400p_prgb_config(void); ++void vpbe_davincifb_350p_prgb_config(void); ++void vpbe_set_display_timing(struct vpbe_fb_videomode *); ++ ++void vpbe_enable_lcd(int); ++/* ++ * Following functions are not implemented ++ */ ++void vpbe_davincifb_default_ycc16_config(void); ++void vpbe_davincifb_default_ycc8_config(void); ++void vpbe_davincifb_default_srgb_config(void); ++void vpbe_davincifb_default_epson_config(void); ++void vpbe_davincifb_default_casio_config(void); ++void vpbe_davincifb_default_UDISP_config(void); ++void vpbe_davincifb_default_STN_config(void); ++#endif /*__KERNEL__*/ ++ ++#endif /* End of #ifndef DAVINCI_VPBE_H */ +diff -puNr -Naur directfb-1.6.3-orig/gfxdrivers/davinci/davinci_gfxdriver.h directfb-1.6.3/gfxdrivers/davinci/davinci_gfxdriver.h +--- directfb-1.6.3-orig/gfxdrivers/davinci/davinci_gfxdriver.h 1970-01-01 01:00:00.000000000 +0100 ++++ directfb-1.6.3/gfxdrivers/davinci/davinci_gfxdriver.h 2013-04-07 21:33:19.560662133 +0200 +@@ -0,0 +1,169 @@ ++/* ++ TI Davinci driver - Graphics Driver ++ ++ (c) Copyright 2007 Telio AG ++ ++ Written by Denis Oliver Kropp ++ ++ Code is derived from VMWare driver. ++ ++ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org) ++ (c) Copyright 2000-2004 Convergence (integrated media) GmbH ++ ++ All rights reserved. ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser 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 ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the ++ Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. ++*/ ++ ++#ifndef __DAVINCI_GFXDRIVER_H__ ++#define __DAVINCI_GFXDRIVER_H__ ++ ++#include ++#include ++ ++#include ++ ++#include "davincifb.h" ++ ++#include "davinci_c64x.h" ++ ++ ++typedef struct { ++ /* validation flags */ ++ int v_flags; ++ ++ /* cached/computed values */ ++ void *dst_addr; ++ unsigned long dst_phys; ++ unsigned int dst_size; ++ unsigned long dst_pitch; ++ DFBSurfacePixelFormat dst_format; ++ unsigned long dst_bpp; ++ ++ void *src_addr; ++ unsigned long src_phys; ++ unsigned long src_pitch; ++ DFBSurfacePixelFormat src_format; ++ unsigned long src_bpp; ++ ++ unsigned long source_mult; ++ ++ unsigned long fillcolor; ++ ++ int blit_blend_sub_function; ++ int draw_blend_sub_function; ++ ++ DFBColor color; ++ unsigned long color_argb; ++ unsigned long colorkey; ++ ++ DFBSurfaceBlittingFlags blitting_flags; ++ ++ DFBRegion clip; ++ ++ /** Add shared data here... **/ ++ struct fb_fix_screeninfo fix[4]; ++ ++ CoreSurfacePool *osd_pool; ++ CoreSurfacePool *video_pool; ++ ++ bool synced; ++} DavinciDeviceData; ++ ++ ++typedef struct { ++ int num; ++ int fd; ++ void *mem; ++ int size; ++} DavinciFB; ++ ++typedef struct { ++ DavinciDeviceData *ddev; ++ ++ CoreDFB *core; ++ ++ CoreScreen *screen; ++ CoreLayer *osd; ++ CoreLayer *video; ++ ++ DavinciFB fb[4]; ++ ++ DavinciC64x c64x; ++ bool c64x_present; ++ ++ DavinciC64xTasks tasks; ++} DavinciDriverData; ++ ++ ++static inline DFBResult ++davincifb_pan_display( const DavinciFB *fb, ++ struct fb_var_screeninfo *var, ++ const CoreSurfaceBufferLock *lock, ++ DFBSurfaceFlipFlags flags, ++ int x, ++ int y ) ++{ ++ int ret; ++ ++ if (lock) { ++#ifdef FBIO_SET_START ++ CoreSurfaceBuffer *buffer = lock->buffer; ++ struct fb_set_start set_start; ++ ++ /* physical mode */ ++ set_start.offset = -1; ++ set_start.sync = (flags & DSFLIP_ONSYNC) ? 1 : 0; ++ ++ /* life's so easy */ ++ set_start.physical = lock->phys + DFB_BYTES_PER_LINE( buffer->format, x ) + y * lock->pitch; ++ ++ ret = ioctl( fb->fd, FBIO_SET_START, &set_start ); ++ if (ret < 0) ++ D_DEBUG( "FBIO_SET_START (0x%08lx, sync %llu) failed!\n", ++ set_start.physical, set_start.sync ); ++ ++ if (ret == 0) { ++ if (flags & DSFLIP_WAIT) ++ ioctl( fb->fd, FBIO_WAITFORVSYNC ); ++ ++ return DFB_OK; ++ } ++ ++ /* fallback */ ++#endif ++ var->xoffset = x; /* poor version */ ++ var->yoffset = y + lock->offset / lock->pitch; ++ } ++ else { ++ var->xoffset = x; ++ var->yoffset = y; ++ } ++ ++ var->activate = /*(flags & DSFLIP_ONSYNC) ? FB_ACTIVATE_VBL :*/ FB_ACTIVATE_NOW; ++ ++ ret = ioctl( fb->fd, FBIOPAN_DISPLAY, var ); ++ if (ret) ++ D_PERROR( "Davinci/FB: FBIOPAN_DISPLAY (fb%d - %d,%d) failed!\n", ++ fb->num, var->xoffset, var->yoffset ); ++ ++ if (flags & DSFLIP_WAIT) ++ ioctl( fb->fd, FBIO_WAITFORVSYNC ); ++ ++ return DFB_OK; ++} ++ ++#endif +diff -puNr -Naur directfb-1.6.3-orig/tests/voodoo/voodoo_test.h directfb-1.6.3/tests/voodoo/voodoo_test.h +--- directfb-1.6.3-orig/tests/voodoo/voodoo_test.h 1970-01-01 01:00:00.000000000 +0100 ++++ directfb-1.6.3/tests/voodoo/voodoo_test.h 2013-04-07 21:33:31.824408024 +0200 +@@ -0,0 +1,10 @@ ++#ifndef __VOODOO_TEST_H__ ++#define __VOODOO_TEST_H__ ++ ++typedef enum { ++ VOODOO_TEST_INCREASE, ++ VOODOO_TEST_QUERY ++} VoodooTestCall; ++ ++#endif ++ diff --git a/package/directfb/0002-imlib2-config.patch b/package/directfb/0002-imlib2-config.patch new file mode 100644 index 00000000..ea2bf820 --- /dev/null +++ b/package/directfb/0002-imlib2-config.patch @@ -0,0 +1,36 @@ +From 8352c434e515f19dd1ba36256bfcc3ec9480838d Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Thu, 5 Mar 2015 22:38:52 +0100 +Subject: [PATCH] imlib2 config + +Call the imlib2-conf variable that are set by ac_cv_path_IMLIB2_CONFIG +with the absolute path because the imlib2-config file is not covered +by the PATH variable. +This is important for cross compiler that need to get the staging settings +instead of the host settings. + +Signed-off-by: Carsten Schoenert +[ patch configure.in instead of configure to survive autoreconf ] +Signed-off-by: Peter Seiderer +--- + configure.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.in b/configure.in +index 38d7e78..fa5e87f 100644 +--- a/configure.in ++++ b/configure.in +@@ -1094,8 +1094,8 @@ if test "x$enable_imlib2" = "xyes"; then + AC_MSG_WARN([*** Imlib2 library not found, building without Imlib2 support ***]) + imlib2="no" + else +- IMLIB2_CFLAGS=`imlib2-config --cflags` +- IMLIB2_LIBS=`imlib2-config --libs` ++ IMLIB2_CFLAGS=`$IMLIB2_CONFIG --cflags` ++ IMLIB2_LIBS=`$IMLIB2_CONFIG --libs` + imlib2="yes" + fi + fi +-- +2.1.4 + diff --git a/package/directfb/0003-setregion-lock.patch b/package/directfb/0003-setregion-lock.patch new file mode 100644 index 00000000..bec42346 --- /dev/null +++ b/package/directfb/0003-setregion-lock.patch @@ -0,0 +1,99 @@ +This patch fixes builderrors while using '--with-gfxdrivers' and +'--with-inputdrivers' with the current DirectFB version 1.6.3. + +Patch is taken from +http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-libs/DirectFB/files/DirectFB-1.6.3-setregion.patch + +Signed-off-by: Carsten Schoenert + +Index: b/gfxdrivers/cyber5k/cyber5k.c +=================================================================== +--- a/gfxdrivers/cyber5k/cyber5k.c ++++ b/gfxdrivers/cyber5k/cyber5k.c +@@ -640,7 +640,8 @@ + CoreLayerRegionConfigFlags updated, + CoreSurface *surface, + CorePalette *palette, +- CoreSurfaceBufferLock *lock ) ++ CoreSurfaceBufferLock *left_lock, ++ CoreSurfaceBufferLock *right_lock ) + { + DFBResult ret; + +@@ -648,7 +649,7 @@ + ret = oldPrimaryFuncs.SetRegion( layer, oldPrimaryDriverData, + layer_data, region_data, + config, updated, surface, +- palette, lock ); ++ palette, left_lock, right_lock ); + if (ret) + return ret; + +Index: b/gfxdrivers/radeon/radeon_crtc1.c +=================================================================== +--- a/gfxdrivers/radeon/radeon_crtc1.c ++++ b/gfxdrivers/radeon/radeon_crtc1.c +@@ -147,14 +147,15 @@ + CoreLayerRegionConfigFlags updated, + CoreSurface *surface, + CorePalette *palette, +- CoreSurfaceBufferLock *lock ) ++ CoreSurfaceBufferLock *left_lock, ++ CoreSurfaceBufferLock *right_lock ) + { + + if (updated & ~CLRCF_OPTIONS) { + return OldPrimaryLayerFuncs.SetRegion( layer, + OldPrimaryLayerDriverData, + layer_data, region_data, +- config, updated, surface, palette, lock ); ++ config, updated, surface, palette, left_lock, right_lock ); + } + + return DFB_OK; +Index: b/gfxdrivers/cle266/uc_primary.c +=================================================================== +--- a/gfxdrivers/cle266/uc_primary.c ++++ b/gfxdrivers/cle266/uc_primary.c +@@ -142,7 +142,8 @@ + CoreLayerRegionConfigFlags updated, + CoreSurface *surface, + CorePalette *palette, +- CoreSurfaceBufferLock *lock ) ++ CoreSurfaceBufferLock *left_lock, ++ CoreSurfaceBufferLock *right_lock ) + { + DFBResult ret; + UcDriverData *ucdrv = (UcDriverData*) driver_data; +@@ -151,7 +152,7 @@ + ret = ucOldPrimaryFuncs.SetRegion( layer, ucOldPrimaryDriverData, + layer_data, region_data, + config, updated, surface, +- palette, lock ); ++ palette, left_lock, right_lock ); + if (ret) + return ret; + +Index: b/gfxdrivers/unichrome/uc_primary.c +=================================================================== +--- a/gfxdrivers/unichrome/uc_primary.c ++++ b/gfxdrivers/unichrome/uc_primary.c +@@ -139,7 +139,8 @@ + CoreLayerRegionConfigFlags updated, + CoreSurface *surface, + CorePalette *palette, +- CoreSurfaceBufferLock *lock ) ++ CoreSurfaceBufferLock *left_lock, ++ CoreSurfaceBufferLock *right_lock ) + { + DFBResult ret; + UcDriverData *ucdrv = (UcDriverData*) driver_data; +@@ -148,7 +149,7 @@ + ret = ucOldPrimaryFuncs.SetRegion( layer, ucOldPrimaryDriverData, + layer_data, region_data, + config, updated, surface, +- palette, lock ); ++ palette, left_lock, right_lock ); + if (ret) + return ret; + diff --git a/package/directfb/0004-use-gcc-link.patch b/package/directfb/0004-use-gcc-link.patch new file mode 100644 index 00000000..ec6c0ea5 --- /dev/null +++ b/package/directfb/0004-use-gcc-link.patch @@ -0,0 +1,35 @@ +Add patch to use 'gcc' instead of 'ld' for linking + +The patch has been sent upstream but it has not been merged yet + +Signed-off-by: Markos Chandras + +From 176ce06b40897a357fe76a558af517197325f188 Mon Sep 17 00:00:00 2001 +From: Markos Chandras +Date: Wed, 28 Aug 2013 10:56:32 +0100 +Subject: [PATCH] rules/libobject.make: Use gcc for linking + +Invoking 'ld' directly may miss some necessary linker flags which +are usually passed by gcc. Therefore, use gcc for linking. + +Signed-off-by: Markos Chandras +--- + rules/libobject.make | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/rules/libobject.make b/rules/libobject.make +index bc670da..2cba658 100644 +--- a/rules/libobject.make ++++ b/rules/libobject.make +@@ -3,7 +3,7 @@ + if test -d $<.tmp; then rmdir $<.tmp; fi + mkdir $<.tmp + (cd $<.tmp && $(AR) x ../../$<) +- $(LD) -o $@ -r $<.tmp/*.o ++ $(CC) -nostdlib -o $@ -r $<.tmp/*.o + rm -f $<.tmp/*.o && rmdir $<.tmp + + .PHONY: $(LTLIBRARIES:%.la=.libs/%.a) +-- +1.8.3.2 + diff --git a/package/directfb/0005-add-missing-idivine-header.patch b/package/directfb/0005-add-missing-idivine-header.patch new file mode 100644 index 00000000..7823eb76 --- /dev/null +++ b/package/directfb/0005-add-missing-idivine-header.patch @@ -0,0 +1,65 @@ +Add idivine.h, which is missing from DirectFB tarballs + +The idivine.h file was taken from the DirectFB Git repository. + +Signed-off-by: Thomas Petazzoni + +Index: b/lib/divine/idivine.h +=================================================================== +--- /dev/null ++++ b/lib/divine/idivine.h +@@ -0,0 +1,54 @@ ++/* ++ (c) Copyright 2012-2013 DirectFB integrated media GmbH ++ (c) Copyright 2001-2013 The world wide DirectFB Open Source Community (directfb.org) ++ (c) Copyright 2000-2004 Convergence (integrated media) GmbH ++ ++ All rights reserved. ++ ++ Written by Denis Oliver Kropp , ++ Andreas Shimokawa , ++ Marek Pikarski , ++ Sven Neumann , ++ Ville Syrjälä and ++ Claudio Ciccani . ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser 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 ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the ++ Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. ++*/ ++ ++ ++ ++#ifndef __IDIVINE_H__ ++#define __IDIVINE_H__ ++ ++#include ++ ++/* ++ * private data struct of IDiVine ++ */ ++typedef struct { ++ int ref; /* reference counter */ ++ ++ DiVine *divine; ++} IDiVine_data; ++ ++/* ++ * IDiVine constructor/destructor ++ */ ++DFBResult IDiVine_Construct( IDiVine *thiz ); ++ ++void IDiVine_Destruct ( IDiVine *thiz ); ++ ++#endif diff --git a/package/directfb/0006-fix-client-gfx_state-initialisation.patch b/package/directfb/0006-fix-client-gfx_state-initialisation.patch new file mode 100644 index 00000000..5b7a202c --- /dev/null +++ b/package/directfb/0006-fix-client-gfx_state-initialisation.patch @@ -0,0 +1,39 @@ +From 8e53c0b9cedb62b82e2b7680d793d433b647ae20 Mon Sep 17 00:00:00 2001 +From: Andre McCurdy +Date: Mon, 13 Jun 2016 13:32:44 -0700 +Subject: [PATCH] fix client->gfx_state initialisation + +Shortly before the DirectFB 1.7.7 release, an optimisation was added +to CoreGraphicsStateClient_Init() to avoid creating an extended +Graphics State object if it will not later be required: + + 4d422fb Client: Create extended Graphics State object when needed for later usage + +Unfortunately the client->gfx_state variable used to track the +extended Graphics State object is not initialised, which can lead to +crashes etc due to creation of the Graphics State object erroneously +being skipped. + +Upstream-Status: Pending + +Signed-off-by: Andre McCurdy +Signed-off-by: Philippe Reynes +--- + src/core/CoreGraphicsStateClient.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/core/CoreGraphicsStateClient.cpp b/src/core/CoreGraphicsStateClient.cpp +index 5d46f0e..5007755 100644 +--- a/src/core/CoreGraphicsStateClient.cpp ++++ b/src/core/CoreGraphicsStateClient.cpp +@@ -364,6 +364,7 @@ CoreGraphicsStateClient_Init( CoreGraphicsStateClient *client, + client->renderer = NULL; + client->requestor = NULL; + client->throttle = NULL; ++ client->gfx_state = NULL; + + if (dfb_config->task_manager) { + if (dfb_config->call_nodirect) { +-- +1.9.1 + diff --git a/package/directfb/0007-libdirect-define-__NR_futex-on-32bit-architectures-u.patch b/package/directfb/0007-libdirect-define-__NR_futex-on-32bit-architectures-u.patch new file mode 100644 index 00000000..4cbbc5dc --- /dev/null +++ b/package/directfb/0007-libdirect-define-__NR_futex-on-32bit-architectures-u.patch @@ -0,0 +1,43 @@ +From 8ffd68a8dfa1e8671dd8c01b96faffd681deca4e Mon Sep 17 00:00:00 2001 +From: Steffen Persvold +Date: Tue, 25 Jun 2024 14:14:49 +0200 +Subject: [PATCH] libdirect: define __NR_futex on 32bit architectures using + 64-bit time_t + +Newer 32bit architectures like RISCV32 and ARC are using 64bit time_t +from the get go unlike other 32bit architectures, therefore aliasing +__NR_futex to __NR_futex_time64 helps avoid the below errors : + +system.c:242:21: error: '__NR_futex' undeclared (first use in this function) + 242 | ret = syscall( __NR_futex, uaddr, op, val, timeout, uaddr2, val3 ); + | ^~~~~~~~~~ + +Upstream: dead +Signed-off-by: Steffen Persvold +--- + lib/direct/os/linux/glibc/system.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/lib/direct/os/linux/glibc/system.c b/lib/direct/os/linux/glibc/system.c +index 32086a25..7143442b 100644 +--- a/lib/direct/os/linux/glibc/system.c ++++ b/lib/direct/os/linux/glibc/system.c +@@ -213,6 +213,10 @@ direct_getenv( const char *name ) + + /**********************************************************************************************************************/ + ++#if defined(__NR_futex_time64) && !defined(__NR_futex) ++#define __NR_futex __NR_futex_time64 ++#endif ++ + DirectResult + direct_futex( int *uaddr, int op, int val, const struct timespec *timeout, int *uaddr2, int val3 ) + { +@@ -245,4 +249,3 @@ direct_futex( int *uaddr, int op, int val, const struct timespec *timeout, int * + + return DR_OK; + } +- +-- +2.40.1 + diff --git a/package/directfb/Config.in b/package/directfb/Config.in new file mode 100644 index 00000000..20481f56 --- /dev/null +++ b/package/directfb/Config.in @@ -0,0 +1,167 @@ +config BR2_PACKAGE_DIRECTFB + bool "directfb" + depends on !BR2_STATIC_LIBS # static link issues + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 + depends on !BR2_TOOLCHAIN_USES_MUSL # sigval_t issue + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_ZLIB + help + DirectFB (Direct Frame Buffer) is a set of graphics APIs + implemented on top of the Linux Frame Buffer (fbdev) + abstraction layer. It is an alternative to X11 with a smaller + memory footprint that still has an integrated windowing + system. As of 4 October 2015, DirectFB's website + http://www.directfb.org/ is down. See alternative site listed + below. + + http://elinux.org/DirectFB + +if BR2_PACKAGE_DIRECTFB + +config BR2_PACKAGE_DIRECTFB_MULTI + bool "directfb multi application" + depends on BR2_USE_MMU # madvise() + depends on BR2_LINUX_KERNEL + select BR2_PACKAGE_LINUX_FUSION + help + Enable use of multiple concurrent DirectFB applications + +comment "directfb multi application needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_DIRECTFB_DEBUG_SUPPORT + bool "directfb debugging support" + default y + help + Compile DirectFB with debugging support. It provides + functions to print debug information, for DirectFB as well as + external DirectFB drivers. + + When disabled, DirectFB does not print any debug information. + The drivers will be installed to and loaded from + /usr/lib/directfb--pure instead of + /usr/lib/directfb-. + +config BR2_PACKAGE_DIRECTFB_DEBUG + bool "directfb debugging" + depends on BR2_PACKAGE_DIRECTFB_DEBUG_SUPPORT + help + Compile DirectFB with lots of debug output + +config BR2_PACKAGE_DIRECTFB_TRACE + bool "directfb call trace support" + help + Enable call tracing for DirectFB applications + +config BR2_PACKAGE_DIRECTFB_DIVINE + bool "divine" + help + Enable the DiVine feature (virtual input) + +config BR2_PACKAGE_DIRECTFB_SAWMAN + bool "sawman" + help + Enable the SawMan feature (window manager) + +config BR2_PACKAGE_DIRECTFB_ATI128 + bool "compile ati128 graphics driver" + depends on BR2_i386 || BR2_x86_64 + +config BR2_PACKAGE_DIRECTFB_MATROX + bool "compile matrox graphics driver" + depends on BR2_i386 || BR2_x86_64 + +config BR2_PACKAGE_DIRECTFB_PXA3XX + bool "compile pxa3xx graphics driver" + depends on BR2_arm + help + The Marvell PXA3xx Processor Family is a system-on-chip based + on XScale® microarchitecture. This option enables the graphic + driver support for the PXA3xx processor family. + + http://www.marvell.com/application-processors/pxa-family/ + +config BR2_PACKAGE_DIRECTFB_EP9X + bool "compile ep9x graphics driver" + depends on BR2_arm + help + Enable the graphic driver support for the EP93xx ARMv9 based + processors from Cirrus Logic. + + http://cirrus.com/en/products/arm9.html + +config BR2_PACKAGE_DIRECTFB_I830 + bool "compile i830 graphics driver" + depends on BR2_i386 || BR2_x86_64 + +config BR2_PACKAGE_DIRECTFB_LINUXINPUT + bool "compile /dev/input/eventX input driver" + default y + +config BR2_PACKAGE_DIRECTFB_KEYBOARD + bool "compile keyboard input driver" + default y + +config BR2_PACKAGE_DIRECTFB_PS2MOUSE + bool "compile PS2 mouse input driver" + default y + +config BR2_PACKAGE_DIRECTFB_SERIALMOUSE + bool "compile serial mouse input driver" + default y + +config BR2_PACKAGE_DIRECTFB_TSLIB + bool "enable touchscreen support" + default y + select BR2_PACKAGE_TSLIB + +config BR2_PACKAGE_DIRECTFB_GIF + bool "enable GIF support" + default y + +config BR2_PACKAGE_DIRECTFB_TIFF + bool "enable TIFF support" + select BR2_PACKAGE_TIFF + +config BR2_PACKAGE_DIRECTFB_IMLIB2 + bool "enable IMLIB2 support" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_IMLIB2 + +comment "imlib2 support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_DIRECTFB_JPEG + bool "enable JPEG support" + default y + select BR2_PACKAGE_JPEG + +config BR2_PACKAGE_DIRECTFB_PNG + bool "enable PNG support" + default y + select BR2_PACKAGE_LIBPNG + +config BR2_PACKAGE_DIRECTFB_SVG + bool "enable SVG support" + default y + select BR2_PACKAGE_LIBSVG_CAIRO + +config BR2_PACKAGE_DIRECTFB_DITHER_RGB16 + bool "enable advanced dithering of RGB16 surfaces" + help + Enable dithering when loading images to RGB16 surfaces. + This increases the data section by 64 KBytes. + +config BR2_PACKAGE_DIRECTFB_TESTS + bool "build directfb tests" + +endif # BR2_PACKAGE_DIRECTFB + +comment "directfb needs a glibc or uClibc toolchain w/ C++, NPTL, gcc >= 4.5, dynamic library" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 || BR2_TOOLCHAIN_USES_MUSL || \ + BR2_STATIC_LIBS diff --git a/package/directfb/directfb.hash b/package/directfb/directfb.hash new file mode 100644 index 00000000..f8c4a830 --- /dev/null +++ b/package/directfb/directfb.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 b785c638dc31b8fe3a7c81be1475c89b2255ab3d67b777c747d3fbc52f8027a3 DirectFB-1.7.7.tar.gz +sha256 512d2d21b6b3384ba64781abb0208a1b87740bc31e2df48e2b206ddb7e4d5779 COPYING diff --git a/package/directfb/directfb.mk b/package/directfb/directfb.mk new file mode 100644 index 00000000..094e87e7 --- /dev/null +++ b/package/directfb/directfb.mk @@ -0,0 +1,172 @@ +################################################################################ +# +# directfb +# +################################################################################ + +DIRECTFB_VERSION_MAJOR = 1.7 +DIRECTFB_VERSION = $(DIRECTFB_VERSION_MAJOR).7 +DIRECTFB_SITE = http://sources.buildroot.net/directfb +DIRECTFB_SOURCE = DirectFB-$(DIRECTFB_VERSION).tar.gz +DIRECTFB_LICENSE = LGPL-2.1+ +DIRECTFB_LICENSE_FILES = COPYING +DIRECTFB_INSTALL_STAGING = YES +DIRECTFB_AUTORECONF = YES + +DIRECTFB_CONF_OPTS = \ + --enable-zlib \ + --enable-freetype \ + --enable-fbdev \ + --disable-sdl \ + --disable-vnc \ + --disable-osx \ + --disable-video4linux \ + --disable-video4linux2 \ + --without-tools \ + --disable-x11 + +ifeq ($(BR2_STATIC_LIBS),y) +DIRECTFB_CONF_OPTS += --disable-dynload +endif + +DIRECTFB_CONFIG_SCRIPTS = directfb-config + +DIRECTFB_DEPENDENCIES = freetype zlib + +ifeq ($(BR2_PACKAGE_DIRECTFB_MULTI),y) +DIRECTFB_CONF_OPTS += --enable-multi --enable-multi-kernel +DIRECTFB_DEPENDENCIES += linux-fusion +else +DIRECTFB_CONF_OPTS += --disable-multi --disable-multi-kernel +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_DEBUG_SUPPORT),y) +DIRECTFB_CONF_OPTS += --enable-debug-support +ifeq ($(BR2_PACKAGE_DIRECTFB_DEBUG),y) +DIRECTFB_CONF_OPTS += --enable-debug +endif +else +DIRECTFB_CONF_OPTS += --disable-debug-support +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_TRACE),y) +DIRECTFB_CONF_OPTS += --enable-trace +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_DIVINE),y) +DIRECTFB_CONF_OPTS += --enable-divine +else +DIRECTFB_CONF_OPTS += --disable-divine +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_SAWMAN),y) +DIRECTFB_CONF_OPTS += --enable-sawman +else +DIRECTFB_CONF_OPTS += --disable-sawman +endif + +DIRECTFB_GFX = \ + $(if $(BR2_PACKAGE_DIRECTFB_ATI128),ati128) \ + $(if $(BR2_PACKAGE_DIRECTFB_MATROX),matrox) \ + $(if $(BR2_PACKAGE_DIRECTFB_PXA3XX),pxa3xx) \ + $(if $(BR2_PACKAGE_DIRECTFB_I830),i830) \ + $(if $(BR2_PACKAGE_DIRECTFB_EP9X),ep9x) + +ifeq ($(strip $(DIRECTFB_GFX)),) +DIRECTFB_CONF_OPTS += --with-gfxdrivers=none +else +DIRECTFB_CONF_OPTS += \ + --with-gfxdrivers=$(subst $(space),$(comma),$(strip $(DIRECTFB_GFX))) +endif + +DIRECTFB_INPUT = \ + $(if $(BR2_PACKAGE_DIRECTFB_LINUXINPUT),linuxinput) \ + $(if $(BR2_PACKAGE_DIRECTFB_KEYBOARD),keyboard) \ + $(if $(BR2_PACKAGE_DIRECTFB_PS2MOUSE),ps2mouse) \ + $(if $(BR2_PACKAGE_DIRECTFB_SERIALMOUSE),serialmouse) \ + $(if $(BR2_PACKAGE_DIRECTFB_TSLIB),tslib) + +ifeq ($(BR2_PACKAGE_DIRECTFB_TSLIB),y) +DIRECTFB_DEPENDENCIES += tslib +endif + +ifeq ($(strip $(DIRECTFB_INPUT)),) +DIRECTFB_CONF_OPTS += --with-inputdrivers=none +else +DIRECTFB_CONF_OPTS += \ + --with-inputdrivers=$(subst $(space),$(comma),$(strip $(DIRECTFB_INPUT))) +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_GIF),y) +DIRECTFB_CONF_OPTS += --enable-gif +else +DIRECTFB_CONF_OPTS += --disable-gif +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_TIFF),y) +DIRECTFB_CONF_OPTS += --enable-tiff +DIRECTFB_DEPENDENCIES += tiff +else +DIRECTFB_CONF_OPTS += --disable-tiff +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_PNG),y) +DIRECTFB_CONF_OPTS += --enable-png +DIRECTFB_DEPENDENCIES += libpng +DIRECTFB_CONF_ENV += ac_cv_path_LIBPNG_CONFIG=$(STAGING_DIR)/usr/bin/libpng-config +else +DIRECTFB_CONF_OPTS += --disable-png +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_JPEG),y) +DIRECTFB_CONF_OPTS += --enable-jpeg +DIRECTFB_DEPENDENCIES += jpeg +else +DIRECTFB_CONF_OPTS += --disable-jpeg +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_SVG),y) +DIRECTFB_CONF_OPTS += --enable-svg +# needs some help to find cairo includes +DIRECTFB_CONF_ENV += CPPFLAGS="$(TARGET_CPPFLAGS) -I$(STAGING_DIR)/usr/include/cairo" +DIRECTFB_DEPENDENCIES += libsvg-cairo +else +DIRECTFB_CONF_OPTS += --disable-svg +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_IMLIB2),y) +DIRECTFB_CONF_OPTS += --enable-imlib2 +DIRECTFB_DEPENDENCIES += imlib2 +DIRECTFB_CONF_ENV += ac_cv_path_IMLIB2_CONFIG=$(STAGING_DIR)/usr/bin/imlib2-config +else +DIRECTFB_CONF_OPTS += --disable-imlib2 +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_DITHER_RGB16),y) +DIRECTFB_CONF_OPTS += --with-dither-rgb16=advanced +else +DIRECTFB_CONF_OPTS += --with-dither-rgb16=none +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_TESTS),y) +DIRECTFB_CONF_OPTS += --with-tests +endif + +HOST_DIRECTFB_DEPENDENCIES = host-pkgconf host-libpng +HOST_DIRECTFB_CONF_OPTS = \ + --disable-multi \ + --enable-png \ + --with-gfxdrivers=none \ + --with-inputdrivers=none + +HOST_DIRECTFB_BUILD_CMDS = \ + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/tools directfb-csource + +HOST_DIRECTFB_INSTALL_CMDS = \ + $(INSTALL) -m 0755 $(@D)/tools/directfb-csource $(HOST_DIR)/bin + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) + +# directfb-csource for the host +DIRECTFB_HOST_BINARY = $(HOST_DIR)/bin/directfb-csource diff --git a/package/dmalloc/0001-configure-fix-build-on-mips.patch b/package/dmalloc/0001-configure-fix-build-on-mips.patch new file mode 100644 index 00000000..9b1525d0 --- /dev/null +++ b/package/dmalloc/0001-configure-fix-build-on-mips.patch @@ -0,0 +1,90 @@ +From af6adb3f5f05be4faa88a5aa83296c388c8085e7 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Wed, 8 Feb 2023 12:30:10 +0100 +Subject: [PATCH] configure: fix build on mips + +This patch is a historical baggage that Buildroot has carried for ages +(since 2006), and the reason for it are notentirely clear. + +Since dmalloc is pretty tricky, and as this patch has not been +identified as causing issues, we keep it; we just add the configure.ac +patchlet to match the one in configure. + +As for the title, the original patch was named dmalloc-mips.patch, so +presumably it fixes some mips issue; let's title the commit that way. + +[Fabrice: Updated for 5.6.5] +Signed-off-by: Fabrice Fontaine +[yann.morin.1998@free.fr: make it a git-formatted patch] +Signed-off-by: Yann E. MORIN +--- + configure | 4 ++-- + configure.ac | 2 +- + return.h | 16 +++------------- + 3 files changed, 6 insertions(+), 16 deletions(-) + +diff --git a/configure b/configure +index d52a1e8..c18dfb2 100755 +--- a/configure ++++ b/configure +@@ -5413,8 +5413,8 @@ fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking return.h macros work" >&5 + $as_echo_n "checking return.h macros work... " >&6; } + if test "$cross_compiling" = yes; then : +- $as_echo "#define RETURN_MACROS_WORK 0" >>confdefs.h +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++ $as_echo "#define RETURN_MACROS_WORK 1" >>confdefs.h ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: assume yes (cross-compiling)" >&5 + $as_echo "no" >&6; } + + else +diff --git a/configure.ac b/configure.ac +index a5295f1..9740fdc 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -705,7 +705,7 @@ int main() + ])], + [ AC_DEFINE(RETURN_MACROS_WORK, 1) AC_MSG_RESULT([yes]) ], + [ AC_DEFINE(RETURN_MACROS_WORK, 0) AC_MSG_RESULT([no]) ], +-[ AC_DEFINE(RETURN_MACROS_WORK, 0) AC_MSG_RESULT([no]) ] ++[ AC_DEFINE(RETURN_MACROS_WORK, 1) AC_MSG_RESULT([assume yes (cross-compiling)]) ] + ) + + ############################################################################## +diff --git a/return.h b/return.h +index 9d3f5f1..d916c7a 100644 +--- a/return.h ++++ b/return.h +@@ -117,26 +117,16 @@ + /*************************************/ + + /* +- * For DEC Mips machines running Ultrix ++ * For Mips machines running Linux + */ + #if __mips + +-/* +- * I have no idea how to get inline assembly with the default cc. +- * Anyone know how? +- */ +- +-#if 0 +- + /* + * NOTE: we assume here that file is global. + * +- * $31 is the frame pointer. $2 looks to be the return address but maybe +- * not consistently. ++ * $31 is the return address. + */ +-#define GET_RET_ADDR(file) asm("sw $2, file") +- +-#endif ++#define GET_RET_ADDR(file) asm("sw $31, %0" : "=m" (file)) + + #endif /* __mips */ + +-- +2.25.1 + diff --git a/package/dmalloc/0002-return-Fix-PowerPC-assembly.patch b/package/dmalloc/0002-return-Fix-PowerPC-assembly.patch new file mode 100644 index 00000000..e6aa8116 --- /dev/null +++ b/package/dmalloc/0002-return-Fix-PowerPC-assembly.patch @@ -0,0 +1,54 @@ +From 6d87fc890c3de81ee33baf25d7c3c86532f26060 Mon Sep 17 00:00:00 2001 +From: Joel Stanley +Date: Mon, 9 May 2022 20:27:58 +0930 +Subject: [PATCH] return: Fix PowerPC assembly + +The original assembly used suspicious syntax. However, due to the +!defined(__OPTIMIZE__) guard this code was rarely built. + +There nothing to stop the compiler using r0 between the two asm blocks, +which may have been the cause of the note mentioning it failed when +build with optimisation enabled. + +Write a single asm statement that places the result in the given +location. + +This builds for powerpc64le and passes tests. + +Signed-off-by: Joel Stanley +Upstream: https://github.com/j256/dmalloc/pull/113 +--- + return.h | 13 +++---------- + 1 file changed, 3 insertions(+), 10 deletions(-) + +diff --git a/return.h b/return.h +index 55b9369fe12d..fafbe3754f0f 100644 +--- a/return.h ++++ b/return.h +@@ -260,20 +260,13 @@ asm void ASM_GET_RET_ADDR(file) + /*************************************/ + + /* +- * For Powerpc 603 based system running LynxOS 2.3.1 using gcc/gas. +- */ +-#if defined(__powerpc__) && defined(__GNUC__) && !defined(__OPTIMIZE__) +- +-/* +- * This won't compile if "-O2" is used, but it seems to work fine with +- * "-O0". I'm no assembler expert; I was happy enough to come up with +- * something that works at all... :-) ++ * For PowerPC using gcc/gas. + */ ++#if defined(__powerpc__) && defined(__GNUC__) + + #define GET_RET_ADDR(file) \ + do { \ +- asm("mflr 0"); \ +- asm("stw 0,%0" : "=g" (file)); \ ++ asm("mflr %0" : "=r" (file)); \ + } while(0) + + #endif /* __powerpc__ && __GNUC__ && !__OPTIMIZE__ */ +-- +2.35.1 + diff --git a/package/dmalloc/0003-configure-allow-overriding-some-tests.patch b/package/dmalloc/0003-configure-allow-overriding-some-tests.patch new file mode 100644 index 00000000..3003e8cb --- /dev/null +++ b/package/dmalloc/0003-configure-allow-overriding-some-tests.patch @@ -0,0 +1,80 @@ +From 9d57d4353c82110c609f36f91986277343d4ee45 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Wed, 8 Feb 2023 13:26:56 +0100 +Subject: [PATCH] configure: allow overriding some tests + +Some tests use AC_RUN_IFELSE, so they do not work for cross-compilation. + +Allow the user to provide these results from the environment. + +Signed-off-by: Yann E. MORIN +--- + configure | 6 +++--- + configure.ac | 6 +++--- + 2 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/configure b/configure +index c18dfb2..d165962 100755 +--- a/configure ++++ b/configure +@@ -4540,7 +4540,7 @@ fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking strdup macro" >&5 + $as_echo_n "checking strdup macro... " >&6; } + if test "$cross_compiling" = yes; then : +- ac_cv_strdup_macro=no ++ ac_cv_strdup_macro="${ac_cv_strdup_macro-no}" + + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +@@ -4578,7 +4578,7 @@ $as_echo "$ac_cv_strdup_macro" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking strndup macro" >&5 + $as_echo_n "checking strndup macro... " >&6; } + if test "$cross_compiling" = yes; then : +- ac_cv_strndup_macro=no ++ ac_cv_strndup_macro="${ac_cv_strndup_macro-no}" + + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +@@ -4753,7 +4753,7 @@ done + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking basic-block size" >&5 + $as_echo_n "checking basic-block size... " >&6; } +-ac_cv_page_size=0 ++ac_cv_page_size="${ac_cv_page_size-0}" + if test $ac_cv_page_size = 0; then + if test "$cross_compiling" = yes; then : + ac_cv_page_size=0 +diff --git a/configure.ac b/configure.ac +index 9740fdc..51bdf4d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -292,7 +292,7 @@ int main() { return 1; } + ]])], + [ac_cv_strdup_macro=yes], + [ac_cv_strdup_macro=no], +-[ac_cv_strdup_macro=no] ++[ac_cv_strdup_macro="${ac_cv_strdup_macro-no}"] + ) + AC_MSG_RESULT([$ac_cv_strdup_macro]) + +@@ -316,7 +316,7 @@ int main() { return 1; } + ]])], + [ac_cv_strndup_macro=yes], + [ac_cv_strndup_macro=no], +-[ac_cv_strndup_macro=no] ++[ac_cv_strndup_macro="${ac_cv_strndup_macro-no}"] + ) + AC_MSG_RESULT([$ac_cv_strndup_macro]) + +@@ -390,7 +390,7 @@ AC_MSG_RESULT([$ac_cv_use_mmap]) + # + AC_CHECK_FUNCS(getpagesize) + AC_MSG_CHECKING([basic-block size]) +-ac_cv_page_size=0 ++ac_cv_page_size="${ac_cv_page_size-0}" + if test $ac_cv_page_size = 0; then + AC_RUN_IFELSE([AC_LANG_SOURCE([ + #if HAVE_UNISTD_H +-- +2.25.1 + diff --git a/package/dmalloc/0004-Makefile-use-the-configure-detected-or-user-supplied.patch b/package/dmalloc/0004-Makefile-use-the-configure-detected-or-user-supplied.patch new file mode 100644 index 00000000..394e7ca3 --- /dev/null +++ b/package/dmalloc/0004-Makefile-use-the-configure-detected-or-user-supplied.patch @@ -0,0 +1,50 @@ +From c958fd5cd7d5ff03c0a023608b53b74997c514b3 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Wed, 8 Feb 2023 13:43:55 +0100 +Subject: [PATCH] Makefile: use the configure-detected or user-supplied ar + program + +Signed-off-by: Yann E. MORIN +--- + Makefile.in | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 86d3cca..089ac99 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -303,11 +303,11 @@ $(LIB_SL) : $(LIBRARY) + mv $@.t $@ + + $(LIBRARY) : $(OBJS) $(NORMAL_OBJS) +- ar cr $@ $? ++ $(AR) cr $@ $? + @RANLIB@ $@ + + $(LIB_TH) : $(OBJS) $(THREAD_OBJS) +- ar cr $@ $? ++ $(AR) cr $@ $? + @RANLIB@ $@ + + $(LIB_TH_SL) : $(LIB_TH) +@@ -316,7 +316,7 @@ $(LIB_TH_SL) : $(LIB_TH) + mv $@.t $@ + + $(LIB_CXX) : $(OBJS) $(NORMAL_OBJS) $(CXX_OBJS) +- ar cr $@ $? ++ $(AR) cr $@ $? + @RANLIB@ $@ + + $(LIB_CXX_SL) : $(LIB_CXX) +@@ -325,7 +325,7 @@ $(LIB_CXX_SL) : $(LIB_CXX) + mv $@.t $@ + + $(LIB_TH_CXX) : $(OBJS) $(THREAD_OBJS) $(CXX_OBJS) +- ar cr $@ $? ++ $(AR) cr $@ $? + @RANLIB@ $@ + + $(LIB_TH_CXX_SL) : $(LIB_TH_CXX) +-- +2.25.1 + diff --git a/package/dmalloc/0005-configure-use-LD-instead-of-hard-coding-ld.patch b/package/dmalloc/0005-configure-use-LD-instead-of-hard-coding-ld.patch new file mode 100644 index 00000000..3ba6ee3d --- /dev/null +++ b/package/dmalloc/0005-configure-use-LD-instead-of-hard-coding-ld.patch @@ -0,0 +1,67 @@ +From d77e5f3d45b0cbae850e3a6e23d52edc137be803 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Wed, 8 Feb 2023 13:52:05 +0100 +Subject: [PATCH] configure: use ${LD} instead of hard-coding 'ld' + +When doing cross-compilation, we do not want to use the native tools to +test, but the target tools. + +Note that the weird quoting is inherited from a legacy patch in +Buildroot, which dates back ages (at least 2006), and as it has not been +identified as breaking things, we keep it as-is... Meh... + +Signed-off-by: Yann E. MORIN +--- + configure | 12 ++++++------ + configure.ac | 12 ++++++------ + 2 files changed, 12 insertions(+), 12 deletions(-) + +diff --git a/configure b/configure +index 810636e..30a7ea3 100755 +--- a/configure ++++ b/configure +@@ -4377,12 +4377,12 @@ if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_shared_link_args='# Could not configure shlib linking' + enable_shlib=no + fi +- elif (ld -shared --whole-archive -soname conftest.so -o conftest.so.t conftest.a) 2>&5; then +- ac_cv_shared_link_args='ld -shared --whole-archive -soname $@ -o $@.t' +- elif (ld -shared -o conftest.so.t -all -soname conftest.so.t -none -lc -all conftest.a) 2>&5; then +- ac_cv_shared_link_args='ld -shared -o $@.t -all -soname $@ -none -lc -all' +- elif (ld -G -o conftest.so.t conftest.a) 2>&5; then +- ac_cv_shared_link_args='ld -G -o $@.t' ++ elif (${LD-ld} -shared --whole-archive -soname conftest.so -o conftest.so.t conftest.a) 2>&5; then ++ ac_cv_shared_link_args="${LD-ld}"' -shared --whole-archive -soname $@ -o $@.t' ++ elif (${LD-ld} -shared -o conftest.so.t -all -soname conftest.so.t -none -lc -all conftest.a) 2>&5; then ++ ac_cv_shared_link_args="${LD-ld}"' -shared -o $@.t -all -soname $@ -none -lc -all' ++ elif (${LD-ld} -G -o conftest.so.t conftest.a) 2>&5; then ++ ac_cv_shared_link_args="${LD-ld}"' -G -o $@.t' + else + # oh well, toss an error + ac_cv_shared_link_args='# Could not configure shlib linking' +diff --git a/configure.ac b/configure.ac +index 51bdf4d..0d80a78 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -169,12 +169,12 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([ int foo(int val) { return val + 1; } ])],[ + ac_cv_shared_link_args='# Could not configure shlib linking' + enable_shlib=no + fi +- elif (ld -shared --whole-archive -soname conftest.so -o conftest.so.t conftest.a) 2>&5; then +- ac_cv_shared_link_args='ld -shared --whole-archive -soname $@ -o $@.t' +- elif (ld -shared -o conftest.so.t -all -soname conftest.so.t -none -lc -all conftest.a) 2>&5; then +- ac_cv_shared_link_args='ld -shared -o $@.t -all -soname $@ -none -lc -all' +- elif (ld -G -o conftest.so.t conftest.a) 2>&5; then +- ac_cv_shared_link_args='ld -G -o $@.t' ++ elif (${LD-ld} -shared --whole-archive -soname conftest.so -o conftest.so.t conftest.a) 2>&5; then ++ ac_cv_shared_link_args="${LD-ld}"' -shared --whole-archive -soname $@ -o $@.t' ++ elif (${LD-ld} -shared -o conftest.so.t -all -soname conftest.so.t -none -lc -all conftest.a) 2>&5; then ++ ac_cv_shared_link_args="${LD-ld}"' -shared -o $@.t -all -soname $@ -none -lc -all' ++ elif (${LD-ld} -G -o conftest.so.t conftest.a) 2>&5; then ++ ac_cv_shared_link_args="${LD-ld}"' -G -o $@.t' + else + # oh well, toss an error + ac_cv_shared_link_args='# Could not configure shlib linking' +-- +2.25.1 + diff --git a/package/dmalloc/Config.in b/package/dmalloc/Config.in new file mode 100644 index 00000000..0c01970b --- /dev/null +++ b/package/dmalloc/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_DMALLOC + bool "dmalloc" + help + A debug memory allocation library which is a drop in + replacement for the system's malloc, realloc, calloc, free and + other memory management routines while providing powerful + debugging facilities configurable at runtime. + + http://dmalloc.com/ diff --git a/package/dmalloc/dmalloc.hash b/package/dmalloc/dmalloc.hash new file mode 100644 index 00000000..f4cc98e8 --- /dev/null +++ b/package/dmalloc/dmalloc.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 480e3414ab6cedca837721c756b7d64b01a84d2d0e837378d98444e2f63a7c01 dmalloc-5.6.5.tgz +sha256 8657f6bc5ebb765dd792b2c3c54d5dc37b8b4e6bbe8aa48d464fd92081b1e720 LICENSE.txt diff --git a/package/dmalloc/dmalloc.mk b/package/dmalloc/dmalloc.mk new file mode 100644 index 00000000..5bd66917 --- /dev/null +++ b/package/dmalloc/dmalloc.mk @@ -0,0 +1,81 @@ +################################################################################ +# +# dmalloc +# +################################################################################ + +DMALLOC_VERSION = 5.6.5 +DMALLOC_SOURCE = dmalloc-$(DMALLOC_VERSION).tgz +DMALLOC_SITE = http://dmalloc.com/releases + +DMALLOC_LICENSE = ISC +DMALLOC_LICENSE_FILES = LICENSE.txt + +DMALLOC_INSTALL_STAGING = YES +DMALLOC_CFLAGS = $(TARGET_CFLAGS) + +# dmalloc uses $(LD) to link, and thus misses the object files or libs that +# are needed to provide the __stack_chk_fail_local and co. symbols. Changing +# to use $(CC) is really more complex that we'd like. Since dmalloc is +# involved in debugging memory allocation, it is not expected to be a +# production library, so we do not care that much that it has SSP. +DMALLOC_CFLAGS += -fno-stack-protector + +ifeq ($(BR2_STATIC_LIBS),y) +DMALLOC_CONF_OPTS += --disable-shlib +else +DMALLOC_CONF_OPTS += --enable-shlib +DMALLOC_CFLAGS += -fPIC +endif + +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +DMALLOC_CONF_OPTS += --enable-cxx +else +DMALLOC_CONF_OPTS += --disable-cxx +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +DMALLOC_CONF_OPTS += --enable-threads +else +DMALLOC_CONF_OPTS += --disable-threads +endif + +# dmalloc has some assembly function that are not present in thumb1 mode: +# Error: lo register required -- `str lr,[sp,#4]' +# so, we desactivate thumb mode +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +DMALLOC_CFLAGS += -marm +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_63261),y) +DMALLOC_CFLAGS += -O0 +endif + +DMALLOC_CONF_ENV = \ + CFLAGS="$(DMALLOC_CFLAGS)" \ + ac_cv_page_size=12 \ + ac_cv_strdup_macro=yes \ + ac_cv_strndup_macro=yes + +# both DESTDIR and PREFIX are ignored.. +define DMALLOC_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) includedir="$(STAGING_DIR)/usr/include" \ + bindir="$(STAGING_DIR)/usr/bin" \ + libdir="$(STAGING_DIR)/usr/lib" \ + shlibdir="$(STAGING_DIR)/usr/lib" \ + infodir="$(STAGING_DIR)/usr/share/info/" \ + -C $(@D) install +endef + +ifeq ($(BR2_STATIC_LIBS),) +define DMALLOC_INSTALL_SHARED_LIB + cp -dpf $(STAGING_DIR)/usr/lib/libdmalloc*.so $(TARGET_DIR)/usr/lib +endef +endif + +define DMALLOC_INSTALL_TARGET_CMDS + $(DMALLOC_INSTALL_SHARED_LIB) + cp -dpf $(STAGING_DIR)/usr/bin/dmalloc $(TARGET_DIR)/usr/bin/dmalloc +endef + +$(eval $(autotools-package)) diff --git a/package/dmenu-wayland/0001-support-cross-compilation.patch b/package/dmenu-wayland/0001-support-cross-compilation.patch new file mode 100644 index 00000000..3d99330c --- /dev/null +++ b/package/dmenu-wayland/0001-support-cross-compilation.patch @@ -0,0 +1,32 @@ +From cd72cade6250a3ec46dd402b25a0bd55bbb97a88 Mon Sep 17 00:00:00 2001 +From: Rick van Schijndel +Date: Wed, 20 Dec 2023 16:44:12 -0700 +Subject: [PATCH] support cross-compilation + +Marking wayland-scanner as native dependency fixes the path check for +wayland-scanner. + +Upstream: https://github.com/nyyManni/dmenu-wayland/pull/23 + +Signed-off-by: Rick van Schijndel +Signed-off-by: Adam Duskett +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 3ae6f69..8d401ff 100644 +--- a/meson.build ++++ b/meson.build +@@ -26,7 +26,7 @@ pangocairo = dependency('pangocairo') + rt = cc.find_library('rt') + wayland_client = dependency('wayland-client') + wayland_protos = dependency('wayland-protocols') +-wayland_scanner_dep = dependency('wayland-scanner') ++wayland_scanner_dep = dependency('wayland-scanner', native: true) + wayland_scanner = find_program( + wayland_scanner_dep.get_pkgconfig_variable('wayland_scanner') + ) +-- +2.43.0 + diff --git a/package/dmenu-wayland/Config.in b/package/dmenu-wayland/Config.in new file mode 100644 index 00000000..8a4d0918 --- /dev/null +++ b/package/dmenu-wayland/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_DMENU_WAYLAND + bool "dmenu-wayland" + depends on BR2_USE_MMU # pango + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2, pango, wayland + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # pango + depends on !BR2_STATIC_LIBS # wayland + depends on BR2_INSTALL_LIBSTDCPP # pango + depends on BR2_USE_WCHAR # libglib2, pango + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_CAIRO_PNG + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBXKBCOMMON + select BR2_PACKAGE_PANGO + select BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_WAYLAND_PROTOCOLS + help + dmenu-wl is an efficient dynamic menu for wayland (wlroots). + + https://github.com/nyyManni/dmenu-wayland + +comment "dmenu-wayland needs a toolchain w/ wchar, threads, C++, dynamic library, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || BR2_STATIC_LIBS || \ + !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR diff --git a/package/dmenu-wayland/dmenu-wayland.hash b/package/dmenu-wayland/dmenu-wayland.hash new file mode 100644 index 00000000..1248c4ad --- /dev/null +++ b/package/dmenu-wayland/dmenu-wayland.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 56340e198a2c58468c6109f3bb07ab8a074487e67b0758b29c9d4fdce7c4d594 dmenu-wayland-a380201dff5bfac2dace553d7eaedb6cea6855f9.tar.gz +sha256 8d26bccf8a21c5e29dc756beef534403c935766c815bbb6e7eab0598632b9827 LICENSE diff --git a/package/dmenu-wayland/dmenu-wayland.mk b/package/dmenu-wayland/dmenu-wayland.mk new file mode 100644 index 00000000..fec98419 --- /dev/null +++ b/package/dmenu-wayland/dmenu-wayland.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# dmenu-wayland +# +################################################################################ + +DMENU_WAYLAND_VERSION = a380201dff5bfac2dace553d7eaedb6cea6855f9 +DMENU_WAYLAND_SITE = $(call github,nyyManni,dmenu-wayland,$(DMENU_WAYLAND_VERSION)) +DMENU_WAYLAND_LICENSE = MIT +DMENU_WAYLAND_LICENSE_FILES = LICENSE +DMENU_WAYLAND_CFLAGS = $(TARGET_CFLAGS) -std=gnu99 + +# host-wayland is for wayland-scanner +DMENU_WAYLAND_DEPENDENCIES = \ + host-wayland \ + cairo \ + libglib2 \ + libxkbcommon \ + pango \ + wayland \ + wayland-protocols + +# By default, sway calls dmenu not dmenu-wl +define DMENU_WAYLAND_SYMLINK_DMENU_WL + ln -sf dmenu-wl $(TARGET_DIR)/usr/bin/dmenu +endef +DMENU_WAYLAND_POST_INSTALL_TARGET_HOOKS += DMENU_WAYLAND_SYMLINK_DMENU_WL + +$(eval $(meson-package)) diff --git a/package/dmidecode/Config.in b/package/dmidecode/Config.in new file mode 100644 index 00000000..58e7a785 --- /dev/null +++ b/package/dmidecode/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_DMIDECODE + bool "dmidecode" + depends on BR2_aarch64 || BR2_i386 || BR2_x86_64 + help + Dmidecode reports information about your system's hardware + as described in your system BIOS according to the SMBIOS/DMI + standard. + + http://www.nongnu.org/dmidecode/ diff --git a/package/dmidecode/dmidecode.hash b/package/dmidecode/dmidecode.hash new file mode 100644 index 00000000..ab1f62be --- /dev/null +++ b/package/dmidecode/dmidecode.hash @@ -0,0 +1,4 @@ +# Locally computed after checking pgp signature from: +# https://download.savannah.gnu.org/releases/dmidecode/dmidecode-3.6.tar.xz.sig +sha256 e40c65f3ec3dafe31ad8349a4ef1a97122d38f65004ed66575e1a8d575dd8bae dmidecode-3.6.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/dmidecode/dmidecode.mk b/package/dmidecode/dmidecode.mk new file mode 100644 index 00000000..550e29d6 --- /dev/null +++ b/package/dmidecode/dmidecode.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# dmidecode +# +################################################################################ + +DMIDECODE_VERSION = 3.6 +DMIDECODE_SOURCE = dmidecode-$(DMIDECODE_VERSION).tar.xz +DMIDECODE_SITE = http://download.savannah.gnu.org/releases/dmidecode +DMIDECODE_LICENSE = GPL-2.0+ +DMIDECODE_LICENSE_FILES = LICENSE +DMIDECODE_SELINUX_MODULES = dmidecode + +define DMIDECODE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define DMIDECODE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) prefix=/usr DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/dmraid/0001-fix-compilation-under-musl.patch b/package/dmraid/0001-fix-compilation-under-musl.patch new file mode 100644 index 00000000..a6f5c410 --- /dev/null +++ b/package/dmraid/0001-fix-compilation-under-musl.patch @@ -0,0 +1,47 @@ +From 89c7fc15e064dd407e6d5ccefe78985b86b8a036 Mon Sep 17 00:00:00 2001 +From: Brendan Heading +Date: Tue, 1 Sep 2015 12:26:36 +0100 +Subject: [PATCH] fix compilation under musl + +Patch borrowed from Void Linux : + +https://github.com/voidlinux/void-packages/blob/master/srcpkgs/dmraid/patches/25_musl-libc.patch + +Upstream package appears dormant, no mailing list and no +maintainence releases since Nov 2010. + +Upstream-Status: dormant +Signed-off-by: Brendan Heading + +--- + 1.0.0.rc16-3/dmraid/include/dmraid/misc.h | 1 + + 1.0.0.rc16-3/dmraid/lib/device/scan.c | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/1.0.0.rc16-3/dmraid/include/dmraid/misc.h b/1.0.0.rc16-3/dmraid/include/dmraid/misc.h +index 247a68e..1b1dfdf 100644 +--- a/1.0.0.rc16-3/dmraid/include/dmraid/misc.h ++++ b/1.0.0.rc16-3/dmraid/include/dmraid/misc.h +@@ -10,6 +10,7 @@ + + #ifndef _MISC_H_ + #define _MISC_H_ ++#include + + #define DM_ASSERT(__cond) do { if (!(__cond)) { printf("ASSERT file:%s line:%d fuction:%s cond: %s\n", __FILE__, __LINE__, __FUNCTION__, #__cond); } } while(0); + +diff --git a/1.0.0.rc16-3/dmraid/lib/device/scan.c b/1.0.0.rc16-3/dmraid/lib/device/scan.c +index a040d53..6897146 100644 +--- a/1.0.0.rc16-3/dmraid/lib/device/scan.c ++++ b/1.0.0.rc16-3/dmraid/lib/device/scan.c +@@ -10,6 +10,7 @@ + # include + # include + #else ++# include + # include + # include + #endif +-- +2.4.3 + diff --git a/package/dmraid/Config.in b/package/dmraid/Config.in new file mode 100644 index 00000000..3c375f4c --- /dev/null +++ b/package/dmraid/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_DMRAID + bool "dmraid" + depends on BR2_TOOLCHAIN_HAS_THREADS # lvm2 + depends on BR2_USE_MMU # lvm2 + depends on !BR2_STATIC_LIBS # lvm2 + select BR2_PACKAGE_LVM2 + help + dmraid discovers, activates, deactivates and displays + properties of software RAID sets (eg, ATARAID) and contained + DOS partitions. + + dmraid uses the Linux device-mapper to create devices with + respective mappings for the ATARAID sets discovered. + + http://people.redhat.com/~heinzm/sw/dmraid/ + +comment "dmraid needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/dmraid/S20dmraid b/package/dmraid/S20dmraid new file mode 100644 index 00000000..b3bfdcc8 --- /dev/null +++ b/package/dmraid/S20dmraid @@ -0,0 +1,29 @@ +#!/bin/sh + +set -e + +# try to load module in case that hasn't been done yet +modprobe dm-mod >/dev/null 2>&1 + +case "$1" in + start|"") + echo "Setting up DMRAID devices..." + /usr/sbin/dmraid --activate yes --ignorelocking --verbose + ;; + + stop) + echo "Shutting down DMRAID devices... " + /usr/sbin/dmraid --activate no --ignorelocking --verbose + ;; + + restart|force-reload) + $0 stop + sleep 1 + $0 start + ;; + + *) + echo "Usage: dmraid {start|stop|restart|force-reload}" + exit 1 + ;; +esac diff --git a/package/dmraid/dmraid.hash b/package/dmraid/dmraid.hash new file mode 100644 index 00000000..7c1bb9a5 --- /dev/null +++ b/package/dmraid/dmraid.hash @@ -0,0 +1,5 @@ +# From http://people.redhat.com/~heinzm/sw/dmraid/src/dmraid-1.0.0.rc16-3.tar.bz2.md5.sum +md5 819338fcef98e8e25819f0516722beeb dmraid-1.0.0.rc16-3.tar.bz2 +# locally computed +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 1.0.0.rc16-3/dmraid/LICENSE_GPL +sha256 4bc391fcf852e03c3a7564cb146af6e47717562eed296b28bce123ee1b0396b8 1.0.0.rc16-3/dmraid/LICENSE diff --git a/package/dmraid/dmraid.mk b/package/dmraid/dmraid.mk new file mode 100644 index 00000000..97c729aa --- /dev/null +++ b/package/dmraid/dmraid.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# dmraid +# +################################################################################ + +DMRAID_VERSION = 1.0.0.rc16-3 +DMRAID_SOURCE = dmraid-$(DMRAID_VERSION).tar.bz2 +DMRAID_SITE = http://people.redhat.com/~heinzm/sw/dmraid/src +DMRAID_SUBDIR = $(DMRAID_VERSION)/dmraid +# lib and tools race with parallel make +DMRAID_MAKE = $(MAKE1) +DMRAID_INSTALL_STAGING = YES +DMRAID_LICENSE = GPL-2.0 +DMRAID_LICENSE_FILES = $(DMRAID_SUBDIR)/LICENSE_GPL $(DMRAID_SUBDIR)/LICENSE +DMRAID_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) CFLAGS="$(TARGET_CFLAGS) -fPIC" + +DMRAID_DEPENDENCIES = lvm2 + +define DMRAID_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/dmraid/S20dmraid \ + $(TARGET_DIR)/etc/init.d/S20dmraid +endef + +$(eval $(autotools-package)) diff --git a/package/dnsmasq/Config.in b/package/dnsmasq/Config.in new file mode 100644 index 00000000..ef3a9b83 --- /dev/null +++ b/package/dnsmasq/Config.in @@ -0,0 +1,51 @@ +config BR2_PACKAGE_DNSMASQ + bool "dnsmasq" + depends on BR2_USE_MMU # fork() + help + A lightweight DNS and DHCP server. It is intended to provide + coupled DNS and DHCP service to a LAN. + + http://www.thekelleys.org.uk/dnsmasq/doc.html + +if BR2_PACKAGE_DNSMASQ + +config BR2_PACKAGE_DNSMASQ_TFTP + bool "tftp support" + default y + help + Enable TFTP support in dnsmasq. + +config BR2_PACKAGE_DNSMASQ_DHCP + bool "dhcp support" + default y + help + Enable DHCP server support in dnsmasq. + +config BR2_PACKAGE_DNSMASQ_DNSSEC + bool "DNSSEC support" + select BR2_PACKAGE_GMP + select BR2_PACKAGE_NETTLE + help + Enable DNSSEC validation and caching support. + +config BR2_PACKAGE_DNSMASQ_IDN + bool "IDN support" + select BR2_PACKAGE_LIBIDN2 if !BR2_PACKAGE_LIBIDN + help + Enable IDN support in dnsmasq. + This option is a big space taker since it pulls in many + libraries. + +config BR2_PACKAGE_DNSMASQ_LUA + bool "Lua scripting support" + depends on BR2_PACKAGE_LUA + help + Enable Lua scripting for dnsmasq + +config BR2_PACKAGE_DNSMASQ_CONNTRACK + bool "conntrack marking support" + select BR2_PACKAGE_LIBNETFILTER_CONNTRACK + help + Enable DNS query connection marking in netfilter. + +endif diff --git a/package/dnsmasq/S80dnsmasq b/package/dnsmasq/S80dnsmasq new file mode 100644 index 00000000..d483c0fb --- /dev/null +++ b/package/dnsmasq/S80dnsmasq @@ -0,0 +1,55 @@ +#!/bin/sh + +DAEMON="dnsmasq" +PIDFILE="/var/run/$DAEMON.pid" + +[ -f /etc/dnsmasq.conf ] || exit 0 + +start() { + printf "Starting dnsmasq: " + start-stop-daemon --start --pidfile "$PIDFILE" \ + --exec "/usr/sbin/$DAEMON" \ + -- --pid-file="$PIDFILE" + status=$? + [ "$status" -eq 0 ] && echo "OK" || echo "FAIL" + return "$status" +} + +stop() { + printf "Stopping dnsmasq: " + start-stop-daemon --stop --pidfile "$PIDFILE" \ + --exec "/usr/sbin/$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + return "$status" + fi + while start-stop-daemon --stop --test --quiet --pidfile "$PIDFILE" \ + --exec "/usr/sbin/$DAEMON"; do + sleep 0.1 + done + rm -f "$PIDFILE" + return "$status" +} + +restart() { + stop + start +} + +case "$1" in + start|stop|restart) + "$1" + ;; + reload) + # Restart, since there is no true "reload" feature. + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit 0 diff --git a/package/dnsmasq/dnsmasq.hash b/package/dnsmasq/dnsmasq.hash new file mode 100644 index 00000000..d11e8af5 --- /dev/null +++ b/package/dnsmasq/dnsmasq.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +# https://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.90.tar.xz.asc +sha256 8e50309bd837bfec9649a812e066c09b6988b73d749b7d293c06c57d46a109e4 dnsmasq-2.90.tar.xz +# Locally calculated +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING-v3 diff --git a/package/dnsmasq/dnsmasq.mk b/package/dnsmasq/dnsmasq.mk new file mode 100644 index 00000000..9f342cb0 --- /dev/null +++ b/package/dnsmasq/dnsmasq.mk @@ -0,0 +1,98 @@ +################################################################################ +# +# dnsmasq +# +################################################################################ + +DNSMASQ_VERSION = 2.90 +DNSMASQ_SOURCE = dnsmasq-$(DNSMASQ_VERSION).tar.xz +DNSMASQ_SITE = https://thekelleys.org.uk/dnsmasq +DNSMASQ_MAKE_ENV = $(TARGET_MAKE_ENV) CC="$(TARGET_CC)" +DNSMASQ_MAKE_OPTS = COPTS="$(DNSMASQ_COPTS)" PREFIX=/usr CFLAGS="$(TARGET_CFLAGS)" +DNSMASQ_MAKE_OPTS += DESTDIR=$(TARGET_DIR) LDFLAGS="$(TARGET_LDFLAGS)" \ + LIBS+=$(TARGET_NLS_LIBS) +DNSMASQ_DEPENDENCIES = host-pkgconf $(TARGET_NLS_DEPENDENCIES) +DNSMASQ_LICENSE = GPL-2.0 or GPL-3.0 +DNSMASQ_LICENSE_FILES = COPYING COPYING-v3 +DNSMASQ_CPE_ID_VENDOR = thekelleys +DNSMASQ_SELINUX_MODULES = dnsmasq + +# 0001-set-default-maximum-dns-udp-package-size.patch +DNSMASQ_IGNORE_CVES += CVE-2023-28450 + +DNSMASQ_I18N = $(if $(BR2_SYSTEM_ENABLE_NLS),-i18n) + +ifneq ($(BR2_PACKAGE_DNSMASQ_DHCP),y) +DNSMASQ_COPTS += -DNO_DHCP +endif + +ifeq ($(BR2_PACKAGE_DNSMASQ_DNSSEC),y) +DNSMASQ_DEPENDENCIES += gmp nettle +DNSMASQ_COPTS += -DHAVE_DNSSEC +endif + +ifneq ($(BR2_PACKAGE_DNSMASQ_TFTP),y) +DNSMASQ_COPTS += -DNO_TFTP +endif + +ifeq ($(BR2_PACKAGE_DNSMASQ_IDN),y) +ifeq ($(BR2_PACKAGE_LIBIDN2),y) +DNSMASQ_DEPENDENCIES += libidn2 +DNSMASQ_COPTS += -DHAVE_LIBIDN2 +else +DNSMASQ_DEPENDENCIES += libidn +DNSMASQ_COPTS += -DHAVE_IDN +endif +endif + +ifeq ($(BR2_PACKAGE_DNSMASQ_CONNTRACK),y) +DNSMASQ_DEPENDENCIES += libnetfilter_conntrack +DNSMASQ_COPTS += -DHAVE_CONNTRACK +endif + +ifeq ($(BR2_PACKAGE_DNSMASQ_LUA),y) +DNSMASQ_DEPENDENCIES += lua +DNSMASQ_COPTS += -DHAVE_LUASCRIPT + +# liblua uses dlopen when dynamically linked +ifneq ($(BR2_STATIC_LIBS),y) +DNSMASQ_MAKE_OPTS += LIBS+="-ldl" +endif + +define DNSMASQ_TWEAK_LIBLUA + $(SED) 's/lua5.2/lua/g' $(DNSMASQ_DIR)/Makefile +endef +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +DNSMASQ_DEPENDENCIES += dbus +DNSMASQ_COPTS += -DHAVE_DBUS + +define DNSMASQ_INSTALL_DBUS + $(INSTALL) -m 0644 -D $(@D)/dbus/dnsmasq.conf \ + $(TARGET_DIR)/etc/dbus-1/system.d/dnsmasq.conf +endef +endif + +ifeq ($(BR2_PACKAGE_UBUS),y) +DNSMASQ_DEPENDENCIES += ubus +DNSMASQ_COPTS += -DHAVE_UBUS +endif + +define DNSMASQ_BUILD_CMDS + $(DNSMASQ_TWEAK_LIBLUA) + $(DNSMASQ_MAKE_ENV) $(MAKE) -C $(@D) $(DNSMASQ_MAKE_OPTS) all$(DNSMASQ_I18N) +endef + +define DNSMASQ_INSTALL_TARGET_CMDS + $(DNSMASQ_MAKE_ENV) $(MAKE) -C $(@D) $(DNSMASQ_MAKE_OPTS) install$(DNSMASQ_I18N) + mkdir -p $(TARGET_DIR)/var/lib/misc/ + $(DNSMASQ_INSTALL_DBUS) +endef + +define DNSMASQ_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/dnsmasq/S80dnsmasq \ + $(TARGET_DIR)/etc/init.d/S80dnsmasq +endef + +$(eval $(generic-package)) diff --git a/package/doc-asciidoc.mk b/package/doc-asciidoc.mk new file mode 100644 index 00000000..d6ecd1e3 --- /dev/null +++ b/package/doc-asciidoc.mk @@ -0,0 +1,191 @@ +# we can't use suitable-host-package here because that's not available in +# the context of 'make release' +.PHONY: asciidoc-check-dependencies +asciidoc-check-dependencies: + $(Q)if [ -z "$(shell support/dependencies/check-host-asciidoc.sh)" ]; then \ + echo "You need a sufficiently recent asciidoc on your host" \ + "to generate documents"; \ + exit 1; \ + fi + $(Q)if [ -z "`which w3m 2>/dev/null`" ]; then \ + echo "You need w3m on your host to generate documents"; \ + exit 1; \ + fi + +asciidoc-check-dependencies-pdf: + $(Q)if [ -z "`which dblatex 2>/dev/null`" ]; then \ + echo "You need dblatex on your host to generate PDF documents"; \ + exit 1; \ + fi + +# PDF generation is broken because of a bug in xsltproc program provided +# by libxslt <=1.1.28, which does not honor an option we need to set. +# Fortunately, this bug is already fixed upstream: +# https://gitorious.org/libxslt/libxslt/commit/5af7ad745323004984287e48b42712e7305de35c +# +# So, bail out when trying to build a PDF using a buggy version of the +# xsltproc program. +# +# So, to overcome this issue and being able to build a PDF, you can +# build xsltproc from its source repository, then run: +# $ PATH=/path/to/custom-xsltproc/bin:${PATH} make manual +GENDOC_XSLTPROC_IS_BROKEN = \ + $(shell xsltproc --maxvars 0 >/dev/null 2>/dev/null || echo y) + +# Apply this configuration to all documents +BR_ASCIIDOC_CONF = docs/conf/asciidoc.conf + +################################################################################ +# ASCIIDOC_INNER -- generates the make targets needed to build a specific type of +# asciidoc documentation. +# +# argument 1 is the name of the document and the top-level asciidoc file must +# have the same name +# argument 2 is the uppercase name of the document +# argument 3 is the type of document to generate (-f argument of a2x) +# argument 4 is the document type as used in the make target +# argument 5 is the output file extension for the document type +# argument 6 is the human text for the document type +# argument 7 (optional) are extra arguments for a2x +# +# The variable _SOURCES defines the dependencies. +# +# Since this function will be called from within an $(eval ...) +# all variable references except the arguments must be $$-quoted. +################################################################################ +define ASCIIDOC_INNER +$(1): $(1)-$(4) +.PHONY: $(1)-$(4) +$(1)-$(4): $$(O)/docs/$(1)/$(1).$(5) + +asciidoc-check-dependencies-$(4): +.PHONY: $(1)-check-dependencies-$(4) +# Single line, because splitting a foreach is not easy... +$(1)-check-dependencies-$(4): asciidoc-check-dependencies-$(4) + $$(Q)$$(foreach hook,$$($(2)_CHECK_DEPENDENCIES_$$(call UPPERCASE,$(4))_HOOKS),$$(call $$(hook))$$(sep)) + +# Include Buildroot's AsciiDoc configuration first: +# - generic configuration, +# - then output-specific configuration +ifneq ($$(wildcard $$(BR_ASCIIDOC_CONF)),) +$(2)_$(3)_ASCIIDOC_OPTS += -f $$(BR_ASCIIDOC_CONF) +endif +BR_$(3)_ASCIIDOC_CONF = docs/conf/asciidoc-$(3).conf +ifneq ($$(wildcard $$(BR_$(3)_ASCIIDOC_CONF)),) +$(2)_$(3)_ASCIIDOC_OPTS += -f $$(BR_$(3)_ASCIIDOC_CONF) +endif + +# Then include the document's AsciiDoc configuration: +# - generic configuration, +# - then output-specific configuration +ifneq ($$(wildcard $$($(2)_ASCIIDOC_CONF)),) +$(2)_$(3)_ASCIIDOC_OPTS += -f $$($(2)_ASCIIDOC_CONF) +endif +$(2)_$(3)_ASCIIDOC_CONF = $$($(2)_DOCDIR)/asciidoc-$(3).conf +ifneq ($$(wildcard $$($(2)_$(3)_ASCIIDOC_CONF)),) +$(2)_$(3)_ASCIIDOC_OPTS += -f $$($(2)_$(3)_ASCIIDOC_CONF) +endif + +$(2)_$(3)_A2X_OPTS = \ + --xsltproc-opts "--stringparam toc.section.depth $$(or $$($(2)_TOC_DEPTH_$$(call UPPERCASE,$(4))),$$($(2)_TOC_DEPTH))" + +# Handle a2x warning about --destination-dir option only applicable to HTML +# based outputs. So: +# - use the --destination-dir option if possible (html and split-html), +# - otherwise copy the generated document to the output directory +ifneq ($$(filter $(4),html split-html),) +$(2)_$(3)_A2X_OPTS += --destination-dir="$$(@D)" +else +define $(2)_$(3)_INSTALL_CMDS + $$(Q)cp -f $$(BUILD_DIR)/docs/$(1)/$(1).$(5) $$(@D) +endef +endif + +$$(O)/docs/$(1)/$(1).$(5): export TZ=UTC + +ifeq ($(5)-$$(GENDOC_XSLTPROC_IS_BROKEN),pdf-y) +$$(O)/docs/$(1)/$(1).$(5): + $$(warning PDF generation is disabled because of a bug in \ + xsltproc. To be able to generate a PDF, you should \ + build xsltproc from the libxslt sources >=1.1.29 and pass it \ + to make through the command line: \ + 'PATH=/path/to/custom-xsltproc/bin:$$$${PATH} make $(1)-pdf') +else +# -r $(@D) is there for documents that use external filters; those filters +# generate code at the same location it finds the document's source files. +$$(O)/docs/$(1)/$(1).$(5): $$($(2)_SOURCES) \ + $(1)-check-dependencies \ + $(1)-check-dependencies-$(4) \ + $(1)-prepare-sources + $$(Q)$$(call MESSAGE,"Generating $(6) $(1)...") + $$(Q)mkdir -p $$(@D) + $$(Q)a2x $(7) -f $(3) -d book -L \ + $$(foreach r,$$($(2)_RESOURCES) $$(@D), \ + --resource="$$(abspath $$(r))") \ + $$($(2)_$(3)_A2X_OPTS) \ + --asciidoc-opts="$$($(2)_$(3)_ASCIIDOC_OPTS)" \ + $$(BUILD_DIR)/docs/$(1)/$(1).adoc +# install the generated document + $$($(2)_$(3)_INSTALL_CMDS) +endif +endef + +################################################################################ +# ASCIIDOC -- generates the make targets needed to build asciidoc documentation. +# +# argument 1 is the lowercase name of the document; the document's main file +# must have the same name, with the .txt extension +# argument 2 is the uppercase name of the document +# +# The variable _SOURCES defines the dependencies. +# The variable _RESOURCES defines where the document's +# resources, such as images, are located; must be an absolute path. +################################################################################ +define ASCIIDOC +$(2)_DOCDIR = $(pkgdir) + +# Single line, because splitting a foreach is not easy... +.PHONY: $(1)-check-dependencies +$(1)-check-dependencies: asciidoc-check-dependencies $$($(2)_DEPENDENCIES) + $$(Q)$$(foreach hook,$$($(2)_CHECK_DEPENDENCIES_HOOKS),$$(call $$(hook))$$(sep)) + +# Single line, because splitting a foreach is not easy... +# Do not touch the stamp file, so we get to rsync again every time we build +# the document. +$$(BUILD_DIR)/docs/$(1)/.stamp_doc_rsynced: + $$(Q)$$(call MESSAGE,"Preparing the $(1) sources...") + $$(Q)mkdir -p $$(@D) + $$(Q)rsync -a $$($(2)_DOCDIR)/ $$(@D)/ + $$(Q)$$(foreach hook,$$($(2)_POST_RSYNC_HOOKS),$$(call $$(hook))$$(sep)) + +.PHONY: $(1)-prepare-sources +$(1)-prepare-sources: $$(BUILD_DIR)/docs/$(1)/.stamp_doc_rsynced + +$(2)_TOC_DEPTH ?= 1 +$(2)_ASCIIDOC_CONF = $$($(2)_DOCDIR)/asciidoc.conf + +$(call ASCIIDOC_INNER,$(1),$(2),xhtml,html,html,HTML) + +$(call ASCIIDOC_INNER,$(1),$(2),chunked,split-html,chunked,split HTML) + +# dblatex needs to pass the '--maxvars ...' option to xsltproc to prevent it +# from reaching the template recursion limit when processing the (long) target +# package table and bailing out. +$(call ASCIIDOC_INNER,$(1),$(2),pdf,pdf,pdf,PDF,\ + --dblatex-opts "-P latex.output.revhistory=0 -x '--maxvars 100000'") + +$(call ASCIIDOC_INNER,$(1),$(2),text,text,text,text) + +$(call ASCIIDOC_INNER,$(1),$(2),epub,epub,epub,ePUB) + +clean: $(1)-clean +$(1)-clean: + $$(Q)$$(RM) -rf $$(BUILD_DIR)/docs/$(1) +.PHONY: $(1) $(1)-clean +endef + +################################################################################ +# asciidoc-document -- the target generator macro for asciidoc documents +################################################################################ + +asciidoc-document = $(call ASCIIDOC,$(pkgname),$(call UPPERCASE,$(pkgname))) diff --git a/package/docker-cli-buildx/Config.in b/package/docker-cli-buildx/Config.in new file mode 100644 index 00000000..486f1196 --- /dev/null +++ b/package/docker-cli-buildx/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_DOCKER_CLI_BUILDX + bool "docker-cli-buildx" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_DOCKER_CLI + help + buildx is a Docker CLI plugin for extended build + capabilities with BuildKit. + + https://github.com/docker/buildx + +comment "docker-cli-buildx needs a toolchain w/ threads" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/docker-cli-buildx/docker-cli-buildx.hash b/package/docker-cli-buildx/docker-cli-buildx.hash new file mode 100644 index 00000000..26b187d1 --- /dev/null +++ b/package/docker-cli-buildx/docker-cli-buildx.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 8c9dd3fb18ccba399223ba0f623c9fe09fa38fb2a05283131be8e4e139b2d8fa docker-cli-buildx-0.16.1-go2.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/docker-cli-buildx/docker-cli-buildx.mk b/package/docker-cli-buildx/docker-cli-buildx.mk new file mode 100644 index 00000000..ea77a860 --- /dev/null +++ b/package/docker-cli-buildx/docker-cli-buildx.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# docker-cli-buildx +# +################################################################################ + +DOCKER_CLI_BUILDX_VERSION = 0.16.1 +DOCKER_CLI_BUILDX_SITE = $(call github,docker,buildx,v$(DOCKER_CLI_BUILDX_VERSION)) + +DOCKER_CLI_BUILDX_LICENSE = Apache-2.0 +DOCKER_CLI_BUILDX_LICENSE_FILES = LICENSE + +DOCKER_CLI_BUILDX_DEPENDENCIES = host-pkgconf + +DOCKER_CLI_BUILDX_BUILD_TARGETS = cmd/buildx +DOCKER_CLI_BUILDX_GOMOD = github.com/docker/buildx + +DOCKER_CLI_BUILDX_LDFLAGS = \ + -X $(DOCKER_CLI_BUILDX_GOMOD)/version.Revision=$(DOCKER_CLI_BUILDX_VERSION) \ + -X $(DOCKER_CLI_BUILDX_GOMOD)/version.Version=$(DOCKER_CLI_BUILDX_VERSION) + +define DOCKER_CLI_BUILDX_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/bin/buildx \ + $(TARGET_DIR)/usr/lib/docker/cli-plugins/docker-buildx +endef + +$(eval $(golang-package)) diff --git a/package/docker-cli/Config.in b/package/docker-cli/Config.in new file mode 100644 index 00000000..52e7f7c8 --- /dev/null +++ b/package/docker-cli/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_DOCKER_CLI + bool "docker-cli" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_HOST_GO + help + Docker is a platform to build, ship, + and run applications as lightweight containers. + + https://github.com/docker/cli + +if BR2_PACKAGE_DOCKER_CLI + +config BR2_PACKAGE_DOCKER_CLI_STATIC + bool "build static client" + depends on !BR2_STATIC_LIBS + help + Build a static docker client. + +endif + +comment "docker-cli needs a toolchain w/ threads" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/docker-cli/docker-cli.hash b/package/docker-cli/docker-cli.hash new file mode 100644 index 00000000..78e73112 --- /dev/null +++ b/package/docker-cli/docker-cli.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 f992e895c949852686abef9a6fa9efd622826c4f4d70b83876569a4641c4c8fc docker-cli-27.0.3-go2.tar.gz +sha256 2d81ea060825006fc8f3fe28aa5dc0ffeb80faf325b612c955229157b8c10dc0 LICENSE diff --git a/package/docker-cli/docker-cli.mk b/package/docker-cli/docker-cli.mk new file mode 100644 index 00000000..1478bdca --- /dev/null +++ b/package/docker-cli/docker-cli.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# docker-cli +# +################################################################################ + +DOCKER_CLI_VERSION = 27.0.3 +DOCKER_CLI_SITE = $(call github,docker,cli,v$(DOCKER_CLI_VERSION)) + +DOCKER_CLI_LICENSE = Apache-2.0 +DOCKER_CLI_LICENSE_FILES = LICENSE + +DOCKER_CLI_DEPENDENCIES = host-pkgconf + +DOCKER_CLI_CPE_ID_VENDOR = docker +DOCKER_CLI_CPE_ID_PRODUCT = docker + +DOCKER_CLI_TAGS = autogen +DOCKER_CLI_BUILD_TARGETS = cmd/docker +DOCKER_CLI_GOMOD = github.com/docker/cli + +DOCKER_CLI_LDFLAGS = \ + -X $(DOCKER_CLI_GOMOD)/cli/version.GitCommit=$(DOCKER_CLI_VERSION) \ + -X $(DOCKER_CLI_GOMOD)/cli/version.Version=$(DOCKER_CLI_VERSION) + +ifeq ($(BR2_PACKAGE_DOCKER_CLI_STATIC),y) +DOCKER_CLI_LDFLAGS += -extldflags '-static' +DOCKER_CLI_TAGS += osusergo netgo +DOCKER_CLI_GO_ENV = CGO_ENABLED=no +endif + +# create the go.mod file with language version go1.19 +# remove the conflicting vendor/modules.txt +# https://github.com/moby/moby/issues/44618#issuecomment-1343565705 +define DOCKER_CLI_FIX_VENDORING + printf "module $(DOCKER_CLI_GOMOD)\n\ngo 1.19\n" > $(@D)/go.mod + rm -f $(@D)/vendor/modules.txt +endef +DOCKER_CLI_POST_EXTRACT_HOOKS += DOCKER_CLI_FIX_VENDORING + +DOCKER_CLI_INSTALL_BINS = $(notdir $(DOCKER_CLI_BUILD_TARGETS)) + +$(eval $(golang-package)) diff --git a/package/docker-compose/Config.in b/package/docker-compose/Config.in new file mode 100644 index 00000000..f3560e40 --- /dev/null +++ b/package/docker-compose/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_DOCKER_COMPOSE + bool "docker-compose" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_DOCKER_CLI + select BR2_PACKAGE_HOST_GO + help + Multi-container applications with the Docker CLI. + + https://github.com/docker/compose + +comment "docker-compose needs docker-cli and a toolchain w/ threads" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_PACKAGE_DOCKER_CLI diff --git a/package/docker-compose/docker-compose.hash b/package/docker-compose/docker-compose.hash new file mode 100644 index 00000000..2896eee4 --- /dev/null +++ b/package/docker-compose/docker-compose.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 7ca8746c86ba25491f5bbdc44c41d5cf7f64defa69f4015c601e1a562f7f64fb docker-compose-2.27.1-go2.tar.gz +sha256 58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd LICENSE diff --git a/package/docker-compose/docker-compose.mk b/package/docker-compose/docker-compose.mk new file mode 100644 index 00000000..44e27787 --- /dev/null +++ b/package/docker-compose/docker-compose.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# docker-compose +# +################################################################################ + +DOCKER_COMPOSE_VERSION = 2.27.1 +DOCKER_COMPOSE_SITE = $(call github,docker,compose,v$(DOCKER_COMPOSE_VERSION)) +DOCKER_COMPOSE_LICENSE = Apache-2.0 +DOCKER_COMPOSE_LICENSE_FILES = LICENSE + +DOCKER_COMPOSE_BUILD_TARGETS = cmd +DOCKER_COMPOSE_GOMOD = github.com/docker/compose/v2 +DOCKER_COMPOSE_LDFLAGS = \ + -X github.com/docker/compose/v2/internal.Version=$(DOCKER_COMPOSE_VERSION) + +define DOCKER_COMPOSE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/bin/cmd \ + $(TARGET_DIR)/usr/lib/docker/cli-plugins/docker-compose +endef + +$(eval $(golang-package)) diff --git a/package/docker-engine/Config.in b/package/docker-engine/Config.in new file mode 100644 index 00000000..49a002a6 --- /dev/null +++ b/package/docker-engine/Config.in @@ -0,0 +1,60 @@ +config BR2_PACKAGE_DOCKER_ENGINE + bool "docker-engine" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_TOOLCHAIN_USES_UCLIBC # containerd -> runc + depends on BR2_USE_MMU # containerd + depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS # libseccomp + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # libseccomp + select BR2_PACKAGE_CGROUPFS_MOUNT if !BR2_PACKAGE_SYSTEMD # runtime dependency + select BR2_PACKAGE_CONTAINERD # runtime dependency + select BR2_PACKAGE_HOST_GO + select BR2_PACKAGE_IPTABLES # runtime dependency + select BR2_PACKAGE_LIBSECCOMP + help + Docker is a platform to build, ship, + and run applications as lightweight containers. + + https://github.com/docker/docker + +if BR2_PACKAGE_DOCKER_ENGINE + +config BR2_PACKAGE_DOCKER_ENGINE_DRIVER_BTRFS + bool "btrfs filesystem driver" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 + help + Build the btrfs filesystem driver for Docker. + +comment "brtfs filesystem driver needs headers >= 4.12" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 + +config BR2_PACKAGE_DOCKER_ENGINE_DRIVER_DEVICEMAPPER + bool "devicemapper filesystem driver" + depends on BR2_TOOLCHAIN_HAS_THREADS # lvm2 + depends on BR2_USE_MMU # lvm2 + depends on !BR2_STATIC_LIBS # lvm2 + select BR2_PACKAGE_LVM2 + help + Build the devicemapper filesystem driver for Docker. + +config BR2_PACKAGE_DOCKER_ENGINE_DRIVER_VFS + bool "vfs filesystem driver" + depends on BR2_USE_WCHAR # gvfs + depends on BR2_USE_MMU # gvfs + depends on BR2_TOOLCHAIN_HAS_THREADS # gvfs + depends on !BR2_STATIC_LIBS # gvfs + select BR2_PACKAGE_GVFS + help + Build the vfs filesystem driver for Docker. + +endif + +comment "docker-engine needs a glibc or musl toolchain w/ threads, headers >= 3.17" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_TOOLCHAIN_USES_UCLIBC || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 + depends on BR2_USE_MMU diff --git a/package/docker-engine/S60dockerd b/package/docker-engine/S60dockerd new file mode 100644 index 00000000..def8bea1 --- /dev/null +++ b/package/docker-engine/S60dockerd @@ -0,0 +1,38 @@ +#!/bin/sh + +NAME=dockerd +DAEMON=/usr/bin/$NAME +PIDFILE=/var/run/$NAME.pid +DAEMON_ARGS="" + +[ -r /etc/default/$NAME ] && . /etc/default/$NAME $1 + +do_start() { + echo -n "Starting $NAME: " + start-stop-daemon --start --quiet --background --make-pidfile \ + --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS \ + && echo "OK" || echo "FAIL" +} + +do_stop() { + echo -n "Stopping $NAME: " + start-stop-daemon --stop --quiet --pidfile $PIDFILE \ + && echo "OK" || echo "FAIL" +} + +case "$1" in + start) + do_start + ;; + stop) + do_stop + ;; + restart) + do_stop + sleep 1 + do_start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/package/docker-engine/docker-engine.hash b/package/docker-engine/docker-engine.hash new file mode 100644 index 00000000..b72b3722 --- /dev/null +++ b/package/docker-engine/docker-engine.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 db02d9b5d98e85284538d6ead43b549c025acf937e98c09d18395bb331c1e607 docker-engine-27.0.3-go2.tar.gz +sha256 7c87873291f289713ac5df48b1f2010eb6963752bbd6b530416ab99fc37914a8 LICENSE diff --git a/package/docker-engine/docker-engine.mk b/package/docker-engine/docker-engine.mk new file mode 100644 index 00000000..c7c51c5e --- /dev/null +++ b/package/docker-engine/docker-engine.mk @@ -0,0 +1,132 @@ +################################################################################ +# +# docker-engine +# +################################################################################ + +DOCKER_ENGINE_VERSION = 27.0.3 +DOCKER_ENGINE_SITE = $(call github,moby,moby,v$(DOCKER_ENGINE_VERSION)) + +DOCKER_ENGINE_LICENSE = Apache-2.0 +DOCKER_ENGINE_LICENSE_FILES = LICENSE + +DOCKER_ENGINE_DEPENDENCIES = host-pkgconf libseccomp +DOCKER_ENGINE_GOMOD = github.com/docker/docker + +DOCKER_ENGINE_CPE_ID_VENDOR = docker +DOCKER_ENGINE_CPE_ID_PRODUCT = docker + +DOCKER_ENGINE_LDFLAGS = \ + -X $(DOCKER_ENGINE_GOMOD)/dockerversion.BuildTime="" \ + -X $(DOCKER_ENGINE_GOMOD)/dockerversion.GitCommit="buildroot" \ + -X $(DOCKER_ENGINE_GOMOD)/dockerversion.IAmStatic="false" \ + -X $(DOCKER_ENGINE_GOMOD)/dockerversion.InitCommitID="" \ + -X $(DOCKER_ENGINE_GOMOD)/dockerversion.Version="$(DOCKER_ENGINE_VERSION)" + +DOCKER_ENGINE_TAGS = cgo exclude_graphdriver_zfs +DOCKER_ENGINE_BUILD_TARGETS = cmd/dockerd cmd/docker-proxy + +ifeq ($(BR2_PACKAGE_LIBAPPARMOR),y) +DOCKER_ENGINE_DEPENDENCIES += libapparmor +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +DOCKER_ENGINE_DEPENDENCIES += systemd +DOCKER_ENGINE_TAGS += systemd journald +endif + +ifneq ($(BR2_PACKAGE_DOCKER_ENGINE_DRIVER_BTRFS),y) +DOCKER_ENGINE_TAGS += exclude_graphdriver_btrfs +endif + +ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DRIVER_DEVICEMAPPER),y) +DOCKER_ENGINE_DEPENDENCIES += lvm2 +else +DOCKER_ENGINE_TAGS += exclude_graphdriver_devicemapper +endif + +ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DRIVER_VFS),y) +DOCKER_ENGINE_DEPENDENCIES += gvfs +else +DOCKER_ENGINE_TAGS += exclude_graphdriver_vfs +endif + +# create the go.mod file with language version go1.19 +# remove the conflicting vendor/modules.txt +# https://github.com/moby/moby/issues/44618#issuecomment-1343565705 +define DOCKER_ENGINE_FIX_VENDORING + printf "module $(DOCKER_ENGINE_GOMOD)\n\ngo 1.19\n" > $(@D)/go.mod + rm -f $(@D)/vendor/modules.txt +endef +DOCKER_ENGINE_POST_EXTRACT_HOOKS += DOCKER_ENGINE_FIX_VENDORING + +DOCKER_ENGINE_INSTALL_BINS = $(notdir $(DOCKER_ENGINE_BUILD_TARGETS)) + +define DOCKER_ENGINE_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(@D)/contrib/init/systemd/docker.service \ + $(TARGET_DIR)/usr/lib/systemd/system/docker.service + $(INSTALL) -D -m 0644 $(@D)/contrib/init/systemd/docker.socket \ + $(TARGET_DIR)/usr/lib/systemd/system/docker.socket +endef + +define DOCKER_ENGINE_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/docker-engine/S60dockerd \ + $(TARGET_DIR)/etc/init.d/S60dockerd +endef + +define DOCKER_ENGINE_USERS + - - docker -1 * - - - Docker Application Container Framework +endef + +ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DRIVER_BTRFS),y) +define DOCKER_ENGINE_DRIVER_BTRFS_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_BTRFS_FS) + $(call KCONFIG_ENABLE_OPT,CONFIG_BTRFS_FS_POSIX_ACL) +endef +endif + +ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DRIVER_DEVICEMAPPER),y) +define DOCKER_ENGINE_DRIVER_DM_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_MD) + $(call KCONFIG_ENABLE_OPT,CONFIG_BLK_DEV_DM) + $(call KCONFIG_ENABLE_OPT,CONFIG_MD_THIN_PROVISIONING) +endef +endif + +# based on contrib/check-config.sh +define DOCKER_ENGINE_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_POSIX_MQUEUE) + $(call KCONFIG_ENABLE_OPT,CONFIG_CGROUPS) + $(call KCONFIG_ENABLE_OPT,CONFIG_MEMCG) + $(call KCONFIG_ENABLE_OPT,CONFIG_CGROUP_SCHED) + $(call KCONFIG_ENABLE_OPT,CONFIG_CGROUP_FREEZER) + $(call KCONFIG_ENABLE_OPT,CONFIG_CPUSETS) + $(call KCONFIG_ENABLE_OPT,CONFIG_CGROUP_DEVICE) + $(call KCONFIG_ENABLE_OPT,CONFIG_CGROUP_CPUACCT) + $(call KCONFIG_ENABLE_OPT,CONFIG_NAMESPACES) + $(call KCONFIG_ENABLE_OPT,CONFIG_UTS_NS) + $(call KCONFIG_ENABLE_OPT,CONFIG_IPC_NS) + $(call KCONFIG_ENABLE_OPT,CONFIG_PID_NS) + $(call KCONFIG_ENABLE_OPT,CONFIG_NET_NS) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_ADVANCED) + $(call KCONFIG_ENABLE_OPT,CONFIG_BRIDGE_NETFILTER) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XTABLES) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XT_MATCH_ADDRTYPE) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XT_MATCH_CONNTRACK) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XT_MATCH_IPVS) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_IPTABLES) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_FILTER) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_NAT) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_TARGET_MASQUERADE) + $(call KCONFIG_ENABLE_OPT,CONFIG_BRIDGE) + $(call KCONFIG_ENABLE_OPT,CONFIG_NET_CORE) + $(call KCONFIG_ENABLE_OPT,CONFIG_VETH) + $(call KCONFIG_ENABLE_OPT,CONFIG_OVERLAY_FS) + $(call KCONFIG_ENABLE_OPT,CONFIG_KEYS) + $(DOCKER_ENGINE_DRIVER_BTRFS_LINUX_CONFIG_FIXUPS) + $(DOCKER_ENGINE_DRIVER_DM_LINUX_CONFIG_FIXUPS) +endef + +$(eval $(golang-package)) diff --git a/package/docker/Config.in b/package/docker/Config.in new file mode 100644 index 00000000..12f8432b --- /dev/null +++ b/package/docker/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_DOCKER + bool "docker" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_XLIB_LIBX11 + help + a system tray dock for X + + http://icculus.org/openbox/2/docker + +comment "docker needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_XORG7 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/docker/docker.hash b/package/docker/docker.hash new file mode 100644 index 00000000..cf0f00e8 --- /dev/null +++ b/package/docker/docker.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 47629578e89d96d1541c91d040aec4316f03ad6d01dc3eecb8f82a33445c1e4e docker-1.5.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING +sha256 fd82a1ac93bfe0a5afcf28cfb5342dd02015555fc23529a87bd77a7b271d3262 README diff --git a/package/docker/docker.mk b/package/docker/docker.mk new file mode 100644 index 00000000..4a8c6fcd --- /dev/null +++ b/package/docker/docker.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# docker +# +################################################################################ + +DOCKER_VERSION = 1.5 +DOCKER_SITE = http://icculus.org/openbox/2/docker +DOCKER_DEPENDENCIES = host-pkgconf libglib2 xlib_libX11 + +DOCKER_LICENSE = GPL-2.0+ +# The 'or later' is specified at the end of the README, so include that one too. +DOCKER_LICENSE_FILES = COPYING README + +define DOCKER_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + XLIBPATH=$(STAGING_DIR)/usr/lib +endef + +define DOCKER_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + XLIBPATH=$(STAGING_DIR)/usr/lib PREFIX=$(TARGET_DIR)/usr install +endef + +$(eval $(generic-package)) diff --git a/package/docopt-cpp/0001-only-build-one-target-use-BUILD_SHARED_LIBS-where-appropriate.patch b/package/docopt-cpp/0001-only-build-one-target-use-BUILD_SHARED_LIBS-where-appropriate.patch new file mode 100644 index 00000000..77206d52 --- /dev/null +++ b/package/docopt-cpp/0001-only-build-one-target-use-BUILD_SHARED_LIBS-where-appropriate.patch @@ -0,0 +1,87 @@ +From 6d3b803d2b0e4bf8703bbfa51a67f378d6bd59f6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= +Date: Tue, 19 Nov 2019 14:58:59 +0100 +Subject: [PATCH] only build one target, use BUILD_SHARED_LIBS where + appropriate + +[Retrieved from: +https://github.com/docopt/docopt.cpp/commit/6d3b803d2b0e4bf8703bbfa51a67f378d6bd59f6] +Signed-off-by: Fabrice Fontaine +--- + CMakeLists.txt | 39 ++++++--------------------------------- + 1 file changed, 6 insertions(+), 33 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index feff32e..14c3420 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -34,33 +34,15 @@ set(docopt_HEADERS + #============================================================================ + # Compile targets + #============================================================================ +-if(MSVC OR XCODE) +- # MSVC requires __declspec() attributes, which are achieved via the +- # DOCOPT_DLL and DOCOPT_EXPORTS macros below. Since those macros are only +- # defined when building a shared library, we must build the shared and +- # static libraries completely separately. +- # Xcode does not support libraries with only object files as sources. +- # See https://cmake.org/cmake/help/v3.0/command/add_library.html?highlight=add_library +- add_library(docopt SHARED ${docopt_SOURCES} ${docopt_HEADERS}) +- add_library(docopt_s STATIC ${docopt_SOURCES} ${docopt_HEADERS}) +-else() +- # If not using MSVC or Xcode, we will create an intermediate object target +- # to avoid compiling the source code twice. +- add_library(docopt_o OBJECT ${docopt_SOURCES} ${docopt_HEADERS}) +- set_target_properties(docopt_o PROPERTIES POSITION_INDEPENDENT_CODE TRUE) +- +- add_library(docopt SHARED $) +- set_target_properties(docopt PROPERTIES +- VERSION ${PROJECT_VERSION} +- SOVERSION ${PROJECT_VERSION_MAJOR} +- ) +- add_library(docopt_s STATIC $) +-endif() ++add_library(docopt ${docopt_SOURCES} ${docopt_HEADERS}) ++set_target_properties(docopt PROPERTIES ++ VERSION ${PROJECT_VERSION} ++ SOVERSION ${PROJECT_VERSION_MAJOR} ++) + + target_include_directories(docopt PUBLIC $ $) +-target_include_directories(docopt_s PUBLIC $ $) + +-if(MSVC) ++if(MSVC AND BUILD_SHARED_LIBS) + # DOCOPT_DLL: Must be specified when building *and* when using the DLL. + # That's what the "PUBLIC" means. + # DOCOPT_EXPORTS: Must use __declspec(dllexport) when building the DLL. +@@ -69,11 +51,6 @@ if(MSVC) + PRIVATE DOCOPT_EXPORTS) + endif() + +-if(NOT MSVC) +- set_target_properties(docopt PROPERTIES OUTPUT_NAME docopt) +- set_target_properties(docopt_s PROPERTIES OUTPUT_NAME docopt) +-endif() +- + if(USE_BOOST_REGEX) + add_definitions("-DDOCTOPT_USE_BOOST_REGEX") + # This is needed on Linux, where linking a static library into docopt.so +@@ -82,9 +59,6 @@ if(USE_BOOST_REGEX) + find_package(Boost 1.53 REQUIRED COMPONENTS regex) + include_directories(${Boost_INCLUDE_DIRS}) + target_link_libraries(docopt ${Boost_LIBRARIES}) +- if(WITH_STATIC) +- target_link_libraries(docopt_s ${Boost_LIBRARIES}) +- endif() + endif() + + #============================================================================ +@@ -120,7 +94,6 @@ set(export_name "docopt-targets") + install(TARGETS docopt EXPORT ${export_name} DESTINATION ${CMAKE_INSTALL_LIBDIR}) + + # Development package +-install(TARGETS docopt_s EXPORT ${export_name} DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(FILES ${docopt_HEADERS} DESTINATION include/docopt) + + # CMake Package diff --git a/package/docopt-cpp/Config.in b/package/docopt-cpp/Config.in new file mode 100644 index 00000000..ac854427 --- /dev/null +++ b/package/docopt-cpp/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_DOCOPT_CPP + bool "docopt-cpp" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11 + help + docopt is a library that lets you define a command line + interface with the utility argument syntax that has been + used by command line utilities for decades (POSIX.1-2017). + From the description, docopt automatically generates a parser + for the command line arguments. + + docopt Command-line interface description language + http://docopt.org/ + + docopt.cpp is a C++ port of docopt. + + https://github.com/docopt/docopt.cpp + +comment "docopt-cpp needs a toolchain w/ C++, gcc >= 4.7" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 diff --git a/package/docopt-cpp/docopt-cpp.hash b/package/docopt-cpp/docopt-cpp.hash new file mode 100644 index 00000000..c5359147 --- /dev/null +++ b/package/docopt-cpp/docopt-cpp.hash @@ -0,0 +1,6 @@ +# Locally computed: +sha256 28af5a0c482c6d508d22b14d588a3b0bd9ff97135f99c2814a5aa3cbff1d6632 docopt-cpp-0.6.3.tar.gz + +# Hash for license files: +sha256 c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566 LICENSE-Boost-1.0 +sha256 b2959a980bc25f5d5e020d7a31777b7184aace6eb160acc80619f85edf646f19 LICENSE-MIT diff --git a/package/docopt-cpp/docopt-cpp.mk b/package/docopt-cpp/docopt-cpp.mk new file mode 100644 index 00000000..897b9078 --- /dev/null +++ b/package/docopt-cpp/docopt-cpp.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# docopt-cpp +# +################################################################################ + +DOCOPT_CPP_VERSION = 0.6.3 +DOCOPT_CPP_SITE = $(call github,docopt,docopt.cpp,v$(DOCOPT_CPP_VERSION)) +DOCOPT_CPP_INSTALL_STAGING = YES +DOCOPT_CPP_LICENSE = BSL-1.0 or MIT +DOCOPT_CPP_LICENSE_FILES = LICENSE-Boost-1.0 LICENSE-MIT + +$(eval $(cmake-package)) diff --git a/package/domoticz/Config.in b/package/domoticz/Config.in new file mode 100644 index 00000000..a0e69a76 --- /dev/null +++ b/package/domoticz/Config.in @@ -0,0 +1,45 @@ +config BR2_PACKAGE_DOMOTICZ + bool "domoticz" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_6 # C++14 + # pthread_condattr_setclock + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # mosquitto + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_PACKAGE_LUA_5_3 + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_ATOMIC + select BR2_PACKAGE_BOOST_DATE_TIME + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_THREAD + select BR2_PACKAGE_CEREAL + select BR2_PACKAGE_JSONCPP + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_MINIZIP_ZLIB + select BR2_PACKAGE_MOSQUITTO + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_ZLIB + help + Domoticz is a Home Automation System that lets you monitor + and configure various devices like: Lights, Switches, + various sensors/meters like Temperature, Rain, Wind, UV, + Electra, Gas, Water and much more. Notifications/Alerts can + be sent to any mobile device. + + http://domoticz.com + +comment "domoticz needs lua 5.3 and a toolchain w/ C++, gcc >= 6, NPTL, wchar, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_6 || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + !BR2_USE_WCHAR || BR2_STATIC_LIBS || \ + !BR2_PACKAGE_LUA_5_3 + +comment "domoticz needs exception_ptr" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/domoticz/S99domoticz b/package/domoticz/S99domoticz new file mode 100644 index 00000000..e773acee --- /dev/null +++ b/package/domoticz/S99domoticz @@ -0,0 +1,51 @@ +#!/bin/sh + +DAEMON="domoticz" +PIDFILE="/var/run/$DAEMON.pid" + +DOMOTICZ_ARGS="-daemon -www 8080 -sslwww 443" + +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/opt/domoticz/$DAEMON" \ + -- $DOMOTICZ_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/domoticz/domoticz.hash b/package/domoticz/domoticz.hash new file mode 100644 index 00000000..ae86a67b --- /dev/null +++ b/package/domoticz/domoticz.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 d87113d7cacd0b52b9126fcc1ef24e140a4f7042d5bc6262e86e4b4752f5cf38 domoticz-2024.4.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 License.txt diff --git a/package/domoticz/domoticz.mk b/package/domoticz/domoticz.mk new file mode 100644 index 00000000..95d3335a --- /dev/null +++ b/package/domoticz/domoticz.mk @@ -0,0 +1,99 @@ +################################################################################ +# +# domoticz +# +################################################################################ + +DOMOTICZ_VERSION = 2024.4 +DOMOTICZ_SITE = $(call github,domoticz,domoticz,$(DOMOTICZ_VERSION)) +DOMOTICZ_LICENSE = GPL-3.0 +DOMOTICZ_LICENSE_FILES = License.txt +DOMOTICZ_CPE_ID_VENDOR = domoticz +DOMOTICZ_DEPENDENCIES = \ + boost \ + cereal \ + host-pkgconf \ + jsoncpp \ + libcurl \ + lua \ + minizip-zlib \ + mosquitto \ + openssl \ + sqlite \ + zlib + +# Disable precompiled header as it needs cmake >= 3.16 +DOMOTICZ_CONF_OPTS = -DUSE_PRECOMPILED_HEADER=OFF + +# Due to the dependency on mosquitto, domoticz depends on +# !BR2_STATIC_LIBS so set USE_STATIC_BOOST and USE_OPENSSL_STATIC to OFF +DOMOTICZ_CONF_OPTS += \ + -DUSE_STATIC_BOOST=OFF \ + -DUSE_OPENSSL_STATIC=OFF + +# Do not use any built-in libraries which are enabled by default for +# jsoncpp, fmt, minizip, sqlite and mqtt +DOMOTICZ_CONF_OPTS += \ + -DUSE_BUILTIN_JSONCPP=OFF \ + -DUSE_BUILTIN_MINIZIP=OFF \ + -DUSE_BUILTIN_SQLITE=OFF \ + -DUSE_BUILTIN_MQTT=OFF + +ifeq ($(BR2_PACKAGE_LIBEXECINFO),y) +DOMOTICZ_DEPENDENCIES += libexecinfo +DOMOTICZ_CONF_OPTS += -DEXECINFO_LIBRARIES=-lexecinfo +endif + +ifeq ($(BR2_PACKAGE_LIBUSB),y) +DOMOTICZ_DEPENDENCIES += libusb +DOMOTICZ_CONF_OPTS += -DWITH_LIBUSB=ON +else +DOMOTICZ_CONF_OPTS += -DWITH_LIBUSB=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENZWAVE),y) +DOMOTICZ_DEPENDENCIES += openzwave + +# Due to the dependency on mosquitto, domoticz depends on +# !BR2_STATIC_LIBS so set USE_STATIC_OPENZWAVE to OFF otherwise +# domoticz will not find the openzwave library as it searches by +# default a static library. +DOMOTICZ_CONF_OPTS += -DUSE_STATIC_OPENZWAVE=OFF +endif + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +DOMOTICZ_DEPENDENCIES += python3 +DOMOTICZ_CONF_OPTS += -DUSE_PYTHON=ON +else +DOMOTICZ_CONF_OPTS += -DUSE_PYTHON=OFF +endif + +# Install domoticz in a dedicated directory (/opt/domoticz) as +# domoticz expects by default that all its subdirectories (www, +# Config, scripts, ...) are in the binary directory. +DOMOTICZ_TARGET_DIR = /opt/domoticz +DOMOTICZ_CONF_OPTS += -DCMAKE_INSTALL_PREFIX=$(DOMOTICZ_TARGET_DIR) + +# Delete License.txt and updatedomo files installed by domoticz in target +# directory +# Do not delete History.txt as it is used in source code +define DOMOTICZ_REMOVE_UNNEEDED_FILES + $(RM) $(TARGET_DIR)/$(DOMOTICZ_TARGET_DIR)/License.txt + $(RM) $(TARGET_DIR)/$(DOMOTICZ_TARGET_DIR)/updatedomo +endef + +DOMOTICZ_POST_INSTALL_TARGET_HOOKS += DOMOTICZ_REMOVE_UNNEEDED_FILES + +# Use dedicated init scripts for systemV and systemd instead of using +# domoticz.sh as it is not compatible with buildroot init system +define DOMOTICZ_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/domoticz/S99domoticz \ + $(TARGET_DIR)/etc/init.d/S99domoticz +endef + +define DOMOTICZ_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/domoticz/domoticz.service \ + $(TARGET_DIR)/usr/lib/systemd/system/domoticz.service +endef + +$(eval $(cmake-package)) diff --git a/package/domoticz/domoticz.service b/package/domoticz/domoticz.service new file mode 100644 index 00000000..446b41a5 --- /dev/null +++ b/package/domoticz/domoticz.service @@ -0,0 +1,10 @@ +[Unit] +Description=Domoticz Home Automation System +After=network.target + +[Service] +ExecStart=/opt/domoticz/domoticz -daemon -www 8080 -sslwww 443 +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/doom-wad/Config.in b/package/doom-wad/Config.in new file mode 100644 index 00000000..9ef4e3e5 --- /dev/null +++ b/package/doom-wad/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_DOOM_WAD + bool "shareware Doom WAD file" + depends on BR2_PACKAGE_CHOCOLATE_DOOM || BR2_PACKAGE_PRBOOM + help + This will install the shareware wad data file for the doom + game. + + The wad file will be placed in the /usr/share/games/doom + directory. + + https://doomwiki.org/wiki/DOOM1.WAD diff --git a/package/doom-wad/doom-wad.hash b/package/doom-wad/doom-wad.hash new file mode 100644 index 00000000..80136fa0 --- /dev/null +++ b/package/doom-wad/doom-wad.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 cacf0142b31ca1af00796b4a0339e07992ac5f21bc3f81e7532fe1b5e1b486e6 doom19s.zip diff --git a/package/doom-wad/doom-wad.mk b/package/doom-wad/doom-wad.mk new file mode 100644 index 00000000..5d37a6a6 --- /dev/null +++ b/package/doom-wad/doom-wad.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# doom-wad +# +################################################################################ + +DOOM_WAD_VERSION = 1.9 +DOOM_WAD_SOURCE = doom$(subst .,,$(DOOM_WAD_VERSION))s.zip +# Official server currently unavailable +DOOM_WAD_SITE = http://www.jbserver.com/downloads/games/doom/misc/shareware + +define DOOM_WAD_EXTRACT_CMDS + $(UNZIP) -p $(DOOM_WAD_DL_DIR)/$($(PKG)_SOURCE) 'DOOMS_19.[12]' > \ + $(@D)/doom-$(DOOM_WAD_VERSION).zip + $(UNZIP) -d $(@D) $(@D)/doom-$(DOOM_WAD_VERSION).zip DOOM1.WAD +endef + +define DOOM_WAD_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/DOOM1.WAD \ + $(TARGET_DIR)/usr/share/games/doom/doom1.wad +endef + +$(eval $(generic-package)) diff --git a/package/dos2unix/Config.in b/package/dos2unix/Config.in new file mode 100644 index 00000000..cfb5ba4b --- /dev/null +++ b/package/dos2unix/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_DOS2UNIX + bool "dos2unix" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + dos2unix converts text file line endings between CRLF and LF + + http://waterlan.home.xs4all.nl/dos2unix.html diff --git a/package/dos2unix/Config.in.host b/package/dos2unix/Config.in.host new file mode 100644 index 00000000..5ec6033a --- /dev/null +++ b/package/dos2unix/Config.in.host @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HOST_DOS2UNIX + bool "host dos2unix" + help + dos2unix converts text file line endings between CRLF and LF + + http://waterlan.home.xs4all.nl/dos2unix.html diff --git a/package/dos2unix/dos2unix.hash b/package/dos2unix/dos2unix.hash new file mode 100644 index 00000000..d4d682cd --- /dev/null +++ b/package/dos2unix/dos2unix.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +# https://waterlan.home.xs4all.nl/dos2unix/dos2unix-7.5.2.tar.gz.asc +sha256 264742446608442eb48f96c20af6da303cb3a92b364e72cb7e24f88239c4bf3a dos2unix-7.5.2.tar.gz +sha256 03b60fa2cf28b2c6dd585a13b32377c1f87b8f016db44ce2ab6bc7eb306220e2 COPYING.txt diff --git a/package/dos2unix/dos2unix.mk b/package/dos2unix/dos2unix.mk new file mode 100644 index 00000000..e30fc999 --- /dev/null +++ b/package/dos2unix/dos2unix.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# dos2unix +# +################################################################################ + +DOS2UNIX_VERSION = 7.5.2 +DOS2UNIX_SITE = http://waterlan.home.xs4all.nl/dos2unix +DOS2UNIX_LICENSE = BSD-2-Clause +DOS2UNIX_LICENSE_FILES = COPYING.txt +DOS2UNIX_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +DOS2UNIX_MAKE_OPTS += ENABLE_NLS=1 +DOS2UNIX_MAKE_OPTS += LIBS_EXTRA=$(TARGET_NLS_LIBS) +else +# Should be defined to empty to disable NLS support +DOS2UNIX_MAKE_OPTS += ENABLE_NLS= +endif + +ifeq ($(BR2_USE_WCHAR),) +DOS2UNIX_MAKE_OPTS += UCS= +endif + +ifeq ($(BR2_STATIC_LIBS),y) +DOS2UNIX_MAKE_OPTS += LDFLAGS_USER=-static +endif + +define DOS2UNIX_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(DOS2UNIX_MAKE_OPTS) +endef + +define DOS2UNIX_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) \ + $(DOS2UNIX_MAKE_OPTS) install +endef + +define HOST_DOS2UNIX_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) ENABLE_NLS= +endef + +define HOST_DOS2UNIX_INSTALL_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) prefix=$(HOST_DIR) ENABLE_NLS= \ + install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/dosfstools/Config.in b/package/dosfstools/Config.in new file mode 100644 index 00000000..33c64b34 --- /dev/null +++ b/package/dosfstools/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_DOSFSTOOLS + bool "dosfstools" + depends on BR2_USE_WCHAR + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Tools for creating and checking DOS FAT filesystems. + + https://github.com/dosfstools/dosfstools + +if BR2_PACKAGE_DOSFSTOOLS + +config BR2_PACKAGE_DOSFSTOOLS_FATLABEL + bool "fatlabel" + help + Get or set the DOS FAT filesystem label. + +config BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT + bool "fsck.fat" + help + Check a DOS FAT filesystem. + +config BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT + bool "mkfs.fat" + help + Creates a DOS FAT filesystem on a device. + +endif + +comment "dosfstools needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/package/dosfstools/Config.in.host b/package/dosfstools/Config.in.host new file mode 100644 index 00000000..fc488c0c --- /dev/null +++ b/package/dosfstools/Config.in.host @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HOST_DOSFSTOOLS + bool "host dosfstools" + help + Tools for creating and checking DOS FAT filesystems. + + https://github.com/dosfstools/dosfstools diff --git a/package/dosfstools/dosfstools.hash b/package/dosfstools/dosfstools.hash new file mode 100644 index 00000000..840bb4d5 --- /dev/null +++ b/package/dosfstools/dosfstools.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature from +# https://github.com/dosfstools/dosfstools/releases/download/v4.2/dosfstools-4.2.tar.gz.sig +sha256 64926eebf90092dca21b14259a5301b7b98e7b1943e8a201c7d726084809b527 dosfstools-4.2.tar.gz + +# Locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/dosfstools/dosfstools.mk b/package/dosfstools/dosfstools.mk new file mode 100644 index 00000000..5019bd12 --- /dev/null +++ b/package/dosfstools/dosfstools.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# dosfstools +# +################################################################################ + +DOSFSTOOLS_VERSION = 4.2 +DOSFSTOOLS_SITE = https://github.com/dosfstools/dosfstools/releases/download/v$(DOSFSTOOLS_VERSION) +DOSFSTOOLS_LICENSE = GPL-3.0+ +DOSFSTOOLS_LICENSE_FILES = COPYING +DOSFSTOOLS_CPE_ID_VALID = YES +DOSFSTOOLS_SELINUX_MODULES = fstools +DOSFSTOOLS_CONF_OPTS = --enable-compat-symlinks --exec-prefix=/ +HOST_DOSFSTOOLS_CONF_OPTS = --enable-compat-symlinks + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +DOSFSTOOLS_CONF_OPTS += --with-udev +DOSFSTOOLS_DEPENDENCIES += udev +else +DOSFSTOOLS_CONF_OPTS += --without-udev +endif + +ifneq ($(BR2_ENABLE_LOCALE),y) +DOSFSTOOLS_CONF_OPTS += LIBS="-liconv" +DOSFSTOOLS_DEPENDENCIES += libiconv +endif + +ifeq ($(BR2_PACKAGE_DOSFSTOOLS_FATLABEL),y) +define DOSFSTOOLS_INSTALL_FATLABEL + $(INSTALL) -D -m 0755 $(@D)/src/fatlabel $(TARGET_DIR)/sbin/fatlabel + ln -sf fatlabel $(TARGET_DIR)/sbin/dosfslabel +endef +endif + +ifeq ($(BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT),y) +define DOSFSTOOLS_INSTALL_FSCK_FAT + $(INSTALL) -D -m 0755 $(@D)/src/fsck.fat $(TARGET_DIR)/sbin/fsck.fat + ln -sf fsck.fat $(TARGET_DIR)/sbin/fsck.vfat + ln -sf fsck.fat $(TARGET_DIR)/sbin/fsck.msdos + ln -sf fsck.fat $(TARGET_DIR)/sbin/dosfsck +endef +endif + +ifeq ($(BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT),y) +define DOSFSTOOLS_INSTALL_MKFS_FAT + $(INSTALL) -D -m 0755 $(@D)/src/mkfs.fat $(TARGET_DIR)/sbin/mkfs.fat + ln -sf mkfs.fat $(TARGET_DIR)/sbin/mkdosfs + ln -sf mkfs.fat $(TARGET_DIR)/sbin/mkfs.msdos + ln -sf mkfs.fat $(TARGET_DIR)/sbin/mkfs.vfat +endef +endif + +define DOSFSTOOLS_INSTALL_TARGET_CMDS + $(call DOSFSTOOLS_INSTALL_FATLABEL) + $(call DOSFSTOOLS_INSTALL_FSCK_FAT) + $(call DOSFSTOOLS_INSTALL_MKFS_FAT) +endef + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/dotconf/Config.in b/package/dotconf/Config.in new file mode 100644 index 00000000..21a74fa0 --- /dev/null +++ b/package/dotconf/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_DOTCONF + bool "dotconf" + help + Configuration file parser. + + https://github.com/williamh/dotconf diff --git a/package/dotconf/dotconf.hash b/package/dotconf/dotconf.hash new file mode 100644 index 00000000..aa2ddc25 --- /dev/null +++ b/package/dotconf/dotconf.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 5922c46cacf99b2ecc4853d28a2bda4a489292e73276e604bd9cba29dfca892d dotconf-1.4.1.tar.gz +sha256 a50cc98d5044a7bbddabe61fc0ec42aa671c73bf414d0c6b50da83ea8ae041c6 COPYING diff --git a/package/dotconf/dotconf.mk b/package/dotconf/dotconf.mk new file mode 100644 index 00000000..7ad5c6aa --- /dev/null +++ b/package/dotconf/dotconf.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# dotconf +# +################################################################################ + +DOTCONF_VERSION = 1.4.1 +DOTCONF_SITE = $(call github,williamh,dotconf,v$(DOTCONF_VERSION)) +DOTCONF_LICENSE = LGPL-2.1 +DOTCONF_LICENSE_FILES = COPYING +DOTCONF_INSTALL_STAGING = YES +# dotconf source code is released without configure script +DOTCONF_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/double-conversion/Config.in b/package/double-conversion/Config.in new file mode 100644 index 00000000..b858b56c --- /dev/null +++ b/package/double-conversion/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_DOUBLE_CONVERSION + bool "double-conversion" + depends on BR2_INSTALL_LIBSTDCPP + help + Provides binary-decimal and decimal-binary routines for + IEEE doubles. + + https://github.com/google/double-conversion + +comment "double-conversion needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/double-conversion/double-conversion.hash b/package/double-conversion/double-conversion.hash new file mode 100644 index 00000000..a2ecd442 --- /dev/null +++ b/package/double-conversion/double-conversion.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 e40d236343cad807e83d192265f139481c51fc83a1c49e406ac6ce0a0ba7cd35 double-conversion-3.2.1.tar.gz +sha256 4af93c12062c58058378de2397dc1c92bbff9ddfb1d583a01c84127557ce97ca COPYING diff --git a/package/double-conversion/double-conversion.mk b/package/double-conversion/double-conversion.mk new file mode 100644 index 00000000..af1fbab0 --- /dev/null +++ b/package/double-conversion/double-conversion.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# double-conversion +# +################################################################################ + +DOUBLE_CONVERSION_VERSION = 3.2.1 +DOUBLE_CONVERSION_SITE = $(call github,google,double-conversion,v$(DOUBLE_CONVERSION_VERSION)) +DOUBLE_CONVERSION_LICENSE = BSD-3-Clause +DOUBLE_CONVERSION_LICENSE_FILES = COPYING +DOUBLE_CONVERSION_INSTALL_STAGING = YES + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/dovecot-pigeonhole/Config.in b/package/dovecot-pigeonhole/Config.in new file mode 100644 index 00000000..bd6826b4 --- /dev/null +++ b/package/dovecot-pigeonhole/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_DOVECOT_PIGEONHOLE + bool "dovecot-pigeonhole" + help + Pigeonhole is the name of the project that adds support for + the Sieve language (RFC 5228) and the ManageSieve protocol + (RFC 5804) to the Dovecot Secure IMAP Server. + + http://pigeonhole.dovecot.org diff --git a/package/dovecot-pigeonhole/dovecot-pigeonhole.hash b/package/dovecot-pigeonhole/dovecot-pigeonhole.hash new file mode 100644 index 00000000..247f74fd --- /dev/null +++ b/package/dovecot-pigeonhole/dovecot-pigeonhole.hash @@ -0,0 +1,3 @@ +# Locally computed after checking signature +sha256 0377db284b620723de060431115fb2e7791e1df4321411af718201d6925c4692 dovecot-2.3-pigeonhole-0.5.21.1.tar.gz +sha256 fc9e9522216f2a9a28b31300e3c73c1df56acc27dfae951bf516e7995366b51a COPYING diff --git a/package/dovecot-pigeonhole/dovecot-pigeonhole.mk b/package/dovecot-pigeonhole/dovecot-pigeonhole.mk new file mode 100644 index 00000000..4d21ebd3 --- /dev/null +++ b/package/dovecot-pigeonhole/dovecot-pigeonhole.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# dovecot-pigeonhole +# +################################################################################ + +DOVECOT_PIGEONHOLE_VERSION = 0.5.21.1 +DOVECOT_PIGEONHOLE_SOURCE = dovecot-2.3-pigeonhole-$(DOVECOT_PIGEONHOLE_VERSION).tar.gz +DOVECOT_PIGEONHOLE_SITE = https://pigeonhole.dovecot.org/releases/2.3 +DOVECOT_PIGEONHOLE_LICENSE = LGPL-2.1 +DOVECOT_PIGEONHOLE_LICENSE_FILES = COPYING +DOVECOT_PIGEONHOLE_CPE_ID_VENDOR = dovecot +DOVECOT_PIGEONHOLE_CPE_ID_PRODUCT = pigeonhole +DOVECOT_PIGEONHOLE_DEPENDENCIES = dovecot + +DOVECOT_PIGEONHOLE_CONF_OPTS = --with-dovecot=$(STAGING_DIR)/usr/lib + +$(eval $(autotools-package)) diff --git a/package/dovecot/0001-auth-Fix-handling-passdbs-with-identical-driver-args.patch b/package/dovecot/0001-auth-Fix-handling-passdbs-with-identical-driver-args.patch new file mode 100644 index 00000000..04b8f539 --- /dev/null +++ b/package/dovecot/0001-auth-Fix-handling-passdbs-with-identical-driver-args.patch @@ -0,0 +1,136 @@ +From 7bad6a24160e34bce8f10e73dbbf9e5fbbcd1904 Mon Sep 17 00:00:00 2001 +From: Timo Sirainen +Date: Mon, 9 May 2022 15:23:33 +0300 +Subject: [PATCH] auth: Fix handling passdbs with identical driver/args but + different mechanisms/username_filter + +The passdb was wrongly deduplicated in this situation, causing wrong +mechanisms or username_filter setting to be used. This would be a rather +unlikely configuration though. + +Fixed by moving mechanisms and username_filter from struct passdb_module +to struct auth_passdb, which is where they should have been in the first +place. + +Signed-off-by: Peter Korsgaard +--- + src/auth/auth-request.c | 6 +++--- + src/auth/auth.c | 18 ++++++++++++++++++ + src/auth/auth.h | 5 +++++ + src/auth/passdb.c | 15 ++------------- + src/auth/passdb.h | 4 ---- + 5 files changed, 28 insertions(+), 20 deletions(-) + +diff --git a/src/auth/auth-request.c b/src/auth/auth-request.c +index cd08b1fa02..0ca29f3674 100644 +--- a/src/auth/auth-request.c ++++ b/src/auth/auth-request.c +@@ -534,8 +534,8 @@ auth_request_want_skip_passdb(struct auth_request *request, + struct auth_passdb *passdb) + { + /* if mechanism is not supported, skip */ +- const char *const *mechs = passdb->passdb->mechanisms; +- const char *const *username_filter = passdb->passdb->username_filter; ++ const char *const *mechs = passdb->mechanisms; ++ const char *const *username_filter = passdb->username_filter; + const char *username; + + username = request->fields.user; +@@ -548,7 +548,7 @@ auth_request_want_skip_passdb(struct auth_request *request, + return TRUE; + } + +- if (passdb->passdb->username_filter != NULL && ++ if (passdb->username_filter != NULL && + !auth_request_username_accepted(username_filter, username)) { + auth_request_log_debug(request, + request->mech != NULL ? AUTH_SUBSYS_MECH +diff --git a/src/auth/auth.c b/src/auth/auth.c +index f2f3fda20c..9f6c4ba60c 100644 +--- a/src/auth/auth.c ++++ b/src/auth/auth.c +@@ -99,6 +99,24 @@ auth_passdb_preinit(struct auth *auth, const struct auth_passdb_settings *set, + auth_passdb->override_fields_tmpl = + passdb_template_build(auth->pool, set->override_fields); + ++ if (*set->mechanisms == '\0') { ++ auth_passdb->mechanisms = NULL; ++ } else if (strcasecmp(set->mechanisms, "none") == 0) { ++ auth_passdb->mechanisms = (const char *const[]){ NULL }; ++ } else { ++ auth_passdb->mechanisms = ++ (const char *const *)p_strsplit_spaces(auth->pool, ++ set->mechanisms, " ,"); ++ } ++ ++ if (*set->username_filter == '\0') { ++ auth_passdb->username_filter = NULL; ++ } else { ++ auth_passdb->username_filter = ++ (const char *const *)p_strsplit_spaces(auth->pool, ++ set->username_filter, " ,"); ++ } ++ + /* for backwards compatibility: */ + if (set->pass) + auth_passdb->result_success = AUTH_DB_RULE_CONTINUE; +diff --git a/src/auth/auth.h b/src/auth/auth.h +index f700e29d5c..460a179765 100644 +--- a/src/auth/auth.h ++++ b/src/auth/auth.h +@@ -41,6 +41,11 @@ struct auth_passdb { + struct passdb_template *default_fields_tmpl; + struct passdb_template *override_fields_tmpl; + ++ /* Supported authentication mechanisms, NULL is all, {NULL} is none */ ++ const char *const *mechanisms; ++ /* Username filter, NULL is no filter */ ++ const char *const *username_filter; ++ + enum auth_passdb_skip skip; + enum auth_db_rule result_success; + enum auth_db_rule result_failure; +diff --git a/src/auth/passdb.c b/src/auth/passdb.c +index eb4ac8ae82..f5eed1af4f 100644 +--- a/src/auth/passdb.c ++++ b/src/auth/passdb.c +@@ -224,19 +224,8 @@ passdb_preinit(pool_t pool, const struct auth_passdb_settings *set) + passdb->id = ++auth_passdb_id; + passdb->iface = *iface; + passdb->args = p_strdup(pool, set->args); +- if (*set->mechanisms == '\0') { +- passdb->mechanisms = NULL; +- } else if (strcasecmp(set->mechanisms, "none") == 0) { +- passdb->mechanisms = (const char *const[]){NULL}; +- } else { +- passdb->mechanisms = (const char* const*)p_strsplit_spaces(pool, set->mechanisms, " ,"); +- } +- +- if (*set->username_filter == '\0') { +- passdb->username_filter = NULL; +- } else { +- passdb->username_filter = (const char* const*)p_strsplit_spaces(pool, set->username_filter, " ,"); +- } ++ /* NOTE: if anything else than driver & args are added here, ++ passdb_find() also needs to be updated. */ + array_push_back(&passdb_modules, &passdb); + return passdb; + } +diff --git a/src/auth/passdb.h b/src/auth/passdb.h +index 2e95328e5c..e466a9fdb6 100644 +--- a/src/auth/passdb.h ++++ b/src/auth/passdb.h +@@ -63,10 +63,6 @@ struct passdb_module { + /* Default password scheme for this module. + If default_cache_key is set, must not be NULL. */ + const char *default_pass_scheme; +- /* Supported authentication mechanisms, NULL is all, [NULL] is none*/ +- const char *const *mechanisms; +- /* Username filter, NULL is no filter */ +- const char *const *username_filter; + + /* If blocking is set to TRUE, use child processes to access + this passdb. */ +-- +2.30.2 + diff --git a/package/dovecot/Config.in b/package/dovecot/Config.in new file mode 100644 index 00000000..517040fa --- /dev/null +++ b/package/dovecot/Config.in @@ -0,0 +1,43 @@ +config BR2_PACKAGE_DOVECOT + bool "dovecot" + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBOPENSSL_ENGINES if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + Dovecot is an open source IMAP and POP3 email server for + Linux/UNIX- like systems, written with security primarily in + mind. Dovecot is an excellent choice for both small and large + installations. It's fast, simple to set up, requires no + special administration and it uses very little memory. + + http://www.dovecot.org + +if BR2_PACKAGE_DOVECOT + +config BR2_PACKAGE_DOVECOT_MYSQL + bool "mysql support" + depends on BR2_INSTALL_LIBSTDCPP # mariadb + depends on BR2_TOOLCHAIN_HAS_THREADS # mariadb + select BR2_PACKAGE_MARIADB + help + Enable MySQL support. + +comment "mysql support needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_DOVECOT_SQLITE + bool "sqlite support" + select BR2_PACKAGE_SQLITE + help + Enable SQLite support. + +source "package/dovecot-pigeonhole/Config.in" + +endif # BR2_PACKAGE_DOVECOT + +comment "dovecot needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/package/dovecot/dovecot.hash b/package/dovecot/dovecot.hash new file mode 100644 index 00000000..fde96f32 --- /dev/null +++ b/package/dovecot/dovecot.hash @@ -0,0 +1,5 @@ +# Locally computed after checking signature +sha256 2d90a178c4297611088bf7daae5492a3bc3d5ab6328c3a032eb425d2c249097e dovecot-2.3.21.1.tar.gz +sha256 319a9830aab406109cd67cb45496587566a8123203d66d037b209ca3e13de02a COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPL +sha256 52b8c95fabb19575281874b661ef7968ea47e8f5d74ba0dd40ce512e52b3fc97 COPYING.MIT diff --git a/package/dovecot/dovecot.mk b/package/dovecot/dovecot.mk new file mode 100644 index 00000000..e116bd3b --- /dev/null +++ b/package/dovecot/dovecot.mk @@ -0,0 +1,142 @@ +################################################################################ +# +# dovecot +# +################################################################################ + +DOVECOT_VERSION_MAJOR = 2.3 +DOVECOT_VERSION = $(DOVECOT_VERSION_MAJOR).21.1 +DOVECOT_SITE = https://dovecot.org/releases/$(DOVECOT_VERSION_MAJOR) +DOVECOT_INSTALL_STAGING = YES +DOVECOT_LICENSE = LGPL-2.1, MIT, Public Domain, BSD-3-Clause, Unicode-DFS-2015 +DOVECOT_LICENSE_FILES = COPYING COPYING.LGPL COPYING.MIT +DOVECOT_CPE_ID_VENDOR = dovecot +DOVECOT_SELINUX_MODULES = dovecot +DOVECOT_DEPENDENCIES = \ + host-pkgconf \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) \ + openssl + +# CVE-2016-4983 is an issue in a postinstall script in the dovecot rpm, which +# is part of the Red Hat packaging and not part of upstream dovecot +DOVECOT_IGNORE_CVES += CVE-2016-4983 + +# 0001-auth-Fix-handling-passdbs-with-identical-driver-args.patch +DOVECOT_IGNORE_CVES += CVE-2022-30550 + +DOVECOT_CONF_ENV = \ + RPCGEN=__disable_RPCGEN_rquota \ + i_cv_epoll_works=yes \ + i_cv_inotify_works=yes \ + i_cv_posix_fallocate_works=no \ + i_cv_signed_size_t=no \ + i_cv_gmtime_max_time_t=32 \ + i_cv_signed_time_t=yes \ + i_cv_mmap_plays_with_write=yes \ + i_cv_fd_passing=yes \ + i_cv_c99_vsnprintf=yes \ + lib_cv_va_copy=yes \ + lib_cv___va_copy=yes \ + lib_cv_va_val_copy=yes + +DOVECOT_CONF_OPTS = --without-docs --with-ssl=openssl + +ifeq ($(BR2_PACKAGE_DOVECOT_MYSQL)$(BR2_PACKAGE_DOVECOT_SQLITE),) +DOVECOT_CONF_OPTS += --without-sql +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +DOVECOT_CONF_OPTS += --with-bzlib +DOVECOT_DEPENDENCIES += bzip2 +else +DOVECOT_CONF_OPTS += --without-bzlib +endif + +ifeq ($(BR2_PACKAGE_ICU),y) +DOVECOT_CONF_OPTS += --with-icu +DOVECOT_DEPENDENCIES += icu +else +DOVECOT_CONF_OPTS += --without-icu +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +DOVECOT_CONF_OPTS += --with-libcap +DOVECOT_DEPENDENCIES += libcap +else +DOVECOT_CONF_OPTS += --without-libcap +endif + +ifeq ($(BR2_PACKAGE_LIBSODIUM),y) +DOVECOT_CONF_OPTS += --with-sodium +DOVECOT_DEPENDENCIES += libsodium +else +DOVECOT_CONF_OPTS += --without-sodium +endif + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +DOVECOT_DEPENDENCIES += libxcrypt +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +DOVECOT_CONF_OPTS += --with-pam +DOVECOT_DEPENDENCIES += linux-pam +else +DOVECOT_CONF_OPTS += --without-pam +endif + +ifeq ($(BR2_PACKAGE_DOVECOT_MYSQL),y) +DOVECOT_CONF_ENV += MYSQL_CONFIG="$(STAGING_DIR)/usr/bin/mysql_config" +DOVECOT_CONF_OPTS += --with-mysql +DOVECOT_DEPENDENCIES += mariadb +else +DOVECOT_CONF_OPTS += --without-mysql +endif + +ifeq ($(BR2_PACKAGE_DOVECOT_SQLITE),y) +DOVECOT_CONF_OPTS += --with-sqlite +DOVECOT_DEPENDENCIES += sqlite +else +DOVECOT_CONF_OPTS += --without-sqlite +endif + +ifeq ($(BR2_PACKAGE_LZ4),y) +DOVECOT_CONF_OPTS += --with-lz4 +DOVECOT_DEPENDENCIES += lz4 +else +DOVECOT_CONF_OPTS += --without-lz4 +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +DOVECOT_CONF_OPTS += --with-lzma +DOVECOT_DEPENDENCIES += xz +else +DOVECOT_CONF_OPTS += --without-lzma +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +DOVECOT_CONF_OPTS += --with-zlib +DOVECOT_DEPENDENCIES += zlib +else +DOVECOT_CONF_OPTS += --without-zlib +endif + +# fix paths to avoid using /usr/lib/dovecot +define DOVECOT_POST_CONFIGURE + for i in $$(find $(@D) -name "Makefile"); do \ + $(SED) 's%^pkglibdir =.*%pkglibdir = \$$(libdir)%' $$i; \ + $(SED) 's%^pkglibexecdir =.*%pkglibexecdir = \$$(libexecdir)%' $$i; \ + done +endef + +DOVECOT_POST_CONFIGURE_HOOKS += DOVECOT_POST_CONFIGURE + +# dovecot installs dovecot-config in usr/lib/, therefore +# DOVECOT_CONFIG_SCRIPTS can not be used to rewrite paths +define DOVECOT_FIX_STAGING_DOVECOT_CONFIG + $(SED) 's,^LIBDOVECOT_INCLUDE=.*$$,LIBDOVECOT_INCLUDE=\"-I$(STAGING_DIR)/usr/include/dovecot\",' $(STAGING_DIR)/usr/lib/dovecot-config + $(SED) 's,^LIBDOVECOT=.*$$,LIBDOVECOT=\"-L$(STAGING_DIR)/usr/lib -ldovecot\",' $(STAGING_DIR)/usr/lib/dovecot-config +endef + +DOVECOT_POST_INSTALL_STAGING_HOOKS += DOVECOT_FIX_STAGING_DOVECOT_CONFIG + +$(eval $(autotools-package)) diff --git a/package/doxygen/Config.in.host b/package/doxygen/Config.in.host new file mode 100644 index 00000000..3a06199c --- /dev/null +++ b/package/doxygen/Config.in.host @@ -0,0 +1,12 @@ +config BR2_PACKAGE_HOST_DOXYGEN + bool "host doxygen" + depends on BR2_HOST_GCC_AT_LEAST_4_9 # C++14 + help + Doxygen is the de facto standard tool for generating + documentation from annotated C++ sources, but it also + supports other popular programming languages such as C, + Objective-C, C#, PHP, Java, Python, IDL (Corba, Microsoft, + and UNO/OpenOffice flavors), Fortran, VHDL, Tcl, and to some + extent D. + + http://www.doxygen.nl/ diff --git a/package/doxygen/doxygen.hash b/package/doxygen/doxygen.hash new file mode 100644 index 00000000..ff2fac7b --- /dev/null +++ b/package/doxygen/doxygen.hash @@ -0,0 +1,3 @@ +# Computed locally +sha256 18173d9edc46d2d116c1f92a95d683ec76b6b4b45b817ac4f245bb1073d00656 doxygen-1.8.18.src.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/doxygen/doxygen.mk b/package/doxygen/doxygen.mk new file mode 100644 index 00000000..b24c527a --- /dev/null +++ b/package/doxygen/doxygen.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# doxygen +# +################################################################################ + +DOXYGEN_VERSION = 1.8.18 +DOXYGEN_SOURCE = doxygen-$(DOXYGEN_VERSION).src.tar.gz +DOXYGEN_SITE = http://doxygen.nl/files +DOXYGEN_LICENSE = GPL-2.0 +DOXYGEN_LICENSE_FILES = LICENSE +DOXYGEN_CPE_ID_VENDOR = doxygen +HOST_DOXYGEN_DEPENDENCIES = host-flex host-bison + +HOST_DOXYGEN_CONF_OPTS += -DBUILD_SHARED_LIBS=OFF + +$(eval $(host-cmake-package)) diff --git a/package/dracut/0001-dracut.sh-don-t-unset-LD_PRELOAD.patch b/package/dracut/0001-dracut.sh-don-t-unset-LD_PRELOAD.patch new file mode 100644 index 00000000..394917ee --- /dev/null +++ b/package/dracut/0001-dracut.sh-don-t-unset-LD_PRELOAD.patch @@ -0,0 +1,31 @@ +From bb12f15856911d8532b569116da7dab4cbf107be Mon Sep 17 00:00:00 2001 +From: Thierry Bultel +Date: Mon, 10 Jan 2022 09:09:43 +0100 +Subject: [PATCH] dracut.sh: don't unset LD_PRELOAD + +LD_PRELOAD and LD_LIBRARY_PATH are needed to run under fakeroot. + +Signed-off-by: Thierry Bultel +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +[yann.morin.1998@free.fr: commit log also mentions LD_LIBRARY_PATH] +Signed-off-by: Yann E. MORIN +--- + dracut.sh | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/dracut.sh b/dracut.sh +index 60ac46f4..37f25b38 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -868,8 +868,6 @@ export LC_ALL=C + export LANG=C + unset LC_MESSAGES + unset LC_CTYPE +-unset LD_LIBRARY_PATH +-unset LD_PRELOAD + unset GREP_OPTIONS + + export DRACUT_LOG_LEVEL=warning +-- +2.37.1 + diff --git a/package/dracut/Config.in.host b/package/dracut/Config.in.host new file mode 100644 index 00000000..18f562b3 --- /dev/null +++ b/package/dracut/Config.in.host @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HOST_DRACUT + bool + select BR2_PACKAGE_HOST_KMOD + help + dracut is used to create an initramfs image by + copying tools and files from an installed system + and combining it with the dracut framework. + + https://dracut.wiki.kernel.org diff --git a/package/dracut/busybox-init-module-setup.sh b/package/dracut/busybox-init-module-setup.sh new file mode 100644 index 00000000..d6ea9435 --- /dev/null +++ b/package/dracut/busybox-init-module-setup.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +check() { + require_binaries busybox || return 1 + return 0 +} + +depends() { + return 0 +} + +install_busybox_links() { + dir="${1}" + linkname="${2}" + + (cd "${dracutsysrootdir?}${dir}" && + for x in *; do + if [ "$(readlink "${x}")" = "${linkname}" ]; then + ln -sf "${linkname}" "${initdir?}/${dir}/${x}" + fi + done + ) +} + +install() { + inst_multiple /bin/busybox + + # wrapper script for early console; will launch /sbin/init + # after having mounted devtmpfs + inst_multiple /init + + if [ -e "${dracutsysrootdir?}/lib64" ]; then + ln -sf lib "${initdir?}/lib64" + ln -sf lib "${initdir?}/usr/lib64" + fi + + if [ -e "${dracutsysrootdir?}/lib32" ]; then + ln -sf lib "${initdir?}/lib32" + ln -sf lib "${initdir?}/usr/lib32" + fi + + install_busybox_links "/bin" "busybox" + install_busybox_links "/sbin" "../bin/busybox" + if [ ! -L "${dracutsysrootdir?}/bin" ]; then + install_busybox_links "/usr/bin" "../../bin/busybox" + install_busybox_links "/usr/sbin" "../../bin/busybox" + fi + + inst_multiple \ + /etc/inittab \ + /etc/init.d/rcS \ + /etc/init.d/rcK \ + /etc/issue \ + /etc/fstab \ + /etc/group \ + /etc/passwd \ + /etc/shadow \ + /etc/hostname +} diff --git a/package/dracut/dracut.hash b/package/dracut/dracut.hash new file mode 100644 index 00000000..6ca352c5 --- /dev/null +++ b/package/dracut/dracut.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 eabf0bb685420c1e1d5475b6855ef787104508f0135ff570312845256e0fcecf dracut-059.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/dracut/dracut.mk b/package/dracut/dracut.mk new file mode 100644 index 00000000..8573e640 --- /dev/null +++ b/package/dracut/dracut.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# dracut +# +################################################################################ + +DRACUT_VERSION = 059 +DRACUT_SITE = $(call github,dracutdevs,dracut,$(DRACUT_VERSION)) +DRACUT_LICENSE = GPL-2.0 +DRACUT_LICENSE_FILES = COPYING +DRACUT_CPE_ID_VALID = YES + +HOST_DRACUT_DEPENDENCIES = host-pkgconf host-kmod host-prelink-cross + +define HOST_DRACUT_POST_INSTALL_WRAPPER_SCRIPT + mv $(HOST_DIR)/bin/dracut $(HOST_DIR)/bin/dracut.real + install -D -m 0755 $(HOST_DRACUT_PKGDIR)/dracut_wrapper \ + $(HOST_DIR)/bin/dracut +endef +HOST_DRACUT_POST_INSTALL_HOOKS += HOST_DRACUT_POST_INSTALL_WRAPPER_SCRIPT + +# When using uClibc or musl, there must be "ld-uClibc.so.1" or +# "ld-musl-x.so" symlinks, respectively - else the init process cannot +# start +define HOST_DRACUT_POST_INSTALL_LIBC_LINKS_MODULE + $(INSTALL) -D -m 0755 package/dracut/merged-usr-module-setup.sh \ + $(HOST_DIR)/lib/dracut/modules.d/0000-merged-usr/module-setup.sh + $(INSTALL) -D -m 0755 package/dracut/libc-links-module-setup.sh \ + $(HOST_DIR)/lib/dracut/modules.d/05libc-links/module-setup.sh +endef +HOST_DRACUT_POST_INSTALL_HOOKS += HOST_DRACUT_POST_INSTALL_LIBC_LINKS_MODULE + +ifeq ($(BR2_INIT_BUSYBOX),y) +# Dracut does not support busybox init (systemd init is assumed to work +# out of the box, though). It provides a busybox module, that does not +# use the same paths as buildroot, and is not meant to be used as an init +# system. +# So it is simpler for users to disable the standard 'busybox' module in +# the configuration file, and enable the "busybox-init' module instead. +# Note that setting the script as executable (0755) is not mandatory, +# but this is what dracut does on all its modules, so lets just conform +# to it. +define HOST_DRACUT_POST_INSTALL_BUSYBOX_INIT_MODULE + $(INSTALL) -D -m 0755 package/dracut/busybox-init-module-setup.sh \ + $(HOST_DIR)/lib/dracut/modules.d/05busybox-init/module-setup.sh +endef +HOST_DRACUT_POST_INSTALL_HOOKS += HOST_DRACUT_POST_INSTALL_BUSYBOX_INIT_MODULE +endif + +$(eval $(host-autotools-package)) diff --git a/package/dracut/dracut_wrapper b/package/dracut/dracut_wrapper new file mode 100644 index 00000000..968d65cb --- /dev/null +++ b/package/dracut/dracut_wrapper @@ -0,0 +1,48 @@ +#!/bin/bash +set -e + +# Find the --sysroot argument +sysroot= +next_arg=false +for arg; do + if ${next_arg}; then + next_arg=false + sysroot="${arg}" + continue # not break, in case there are more than one + fi + case "${arg}" in + (--sysroot|-r) + next_arg=true + continue + ;; + (--sysroot=*) + sysroot="${arg#*=}" + continue # not break, in case there are more than one + ;; + (-r?*) + sysroot="${arg#-r}" + continue # not break, in case there are more than one + ;; + esac +done +if [ -z "${sysroot}" ]; then + echo "${0}: --sysroot argument must be given." 1>&2 + exit 1 +fi + +topdir="$(dirname "$(realpath "$(dirname "${0}")")")" +DRACUT_LDD="$(mktemp /tmp/dracut-ldd.XXXXXX)" +cat >"${DRACUT_LDD}" </dev/null 2>&1; then + mkdir -p /etc/dropbear + else + echo "No persistent location to store SSH host keys. New keys will be" + echo "generated at each boot. Are you sure this is what you want to do?" + mkdir -p "$(readlink /etc/dropbear)" + fi + fi + + printf "Starting dropbear sshd: " + umask 077 + + start-stop-daemon -S -q -p /var/run/dropbear.pid \ + --exec /usr/sbin/dropbear -- $DROPBEAR_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping dropbear sshd: " + start-stop-daemon -K -q -p /var/run/dropbear.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/package/dropbear/dropbear.hash b/package/dropbear/dropbear.hash new file mode 100644 index 00000000..a901656e --- /dev/null +++ b/package/dropbear/dropbear.hash @@ -0,0 +1,7 @@ +# From https://matt.ucc.asn.au/dropbear/releases/SHA256SUM.asc +sha256 86b036c433a69d89ce51ebae335d65c47738ccf90d13e5eb0fea832e556da502 dropbear-2024.85.tar.bz2 + +# License file, locally computed +sha256 a99ce657d790b761c132ee7e0de18edb437ae6361e536d991c6a12f36e770445 LICENSE +sha256 8f196cb13afd271f5e267fd29543fc454596382ad580e7592709492843996ac8 libtomcrypt/LICENSE +sha256 2fa64b163659f41965c9815882a8296d3d03ff546b76153e11445f9bdecf955a libtommath/LICENSE diff --git a/package/dropbear/dropbear.mk b/package/dropbear/dropbear.mk new file mode 100644 index 00000000..d9504c55 --- /dev/null +++ b/package/dropbear/dropbear.mk @@ -0,0 +1,142 @@ +################################################################################ +# +# dropbear +# +################################################################################ + +DROPBEAR_VERSION = 2024.85 +DROPBEAR_SITE = https://matt.ucc.asn.au/dropbear/releases +DROPBEAR_SOURCE = dropbear-$(DROPBEAR_VERSION).tar.bz2 +DROPBEAR_LICENSE = MIT, BSD-2-Clause, Public domain +DROPBEAR_LICENSE_FILES = LICENSE +DROPBEAR_TARGET_BINS = dropbearkey dropbearconvert scp +DROPBEAR_PROGRAMS = dropbear $(DROPBEAR_TARGET_BINS) +DROPBEAR_CPE_ID_VENDOR = dropbear_ssh_project +DROPBEAR_CPE_ID_PRODUCT = dropbear_ssh + +# Disable hardening flags added by dropbear configure.ac, and let +# Buildroot add them when the relevant options are enabled. This +# prevents dropbear from using SSP support when not available. +DROPBEAR_CONF_OPTS = --disable-harden + +ifeq ($(BR2_PACKAGE_DROPBEAR_CLIENT),y) +# Build dbclient, and create a convenience symlink named ssh +DROPBEAR_PROGRAMS += dbclient +DROPBEAR_TARGET_BINS += dbclient ssh +endif + +DROPBEAR_MAKE = \ + $(MAKE) MULTI=1 SCPPROGRESS=1 \ + PROGRAMS="$(DROPBEAR_PROGRAMS)" + +# With BR2_SHARED_STATIC_LIBS=y the generic infrastructure adds a +# --enable-static flags causing dropbear to be built as a static +# binary. Adding a --disable-static reverts this +ifeq ($(BR2_SHARED_STATIC_LIBS),y) +DROPBEAR_CONF_OPTS += --disable-static +endif + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +DROPBEAR_DEPENDENCIES += libxcrypt +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +define DROPBEAR_SVR_PAM_AUTH + echo '#define DROPBEAR_SVR_PASSWORD_AUTH 0' >> $(@D)/localoptions.h + echo '#define DROPBEAR_SVR_PAM_AUTH 1' >> $(@D)/localoptions.h +endef +define DROPBEAR_INSTALL_PAM_CONF + $(INSTALL) -D -m 644 package/dropbear/etc-pam.d-sshd $(TARGET_DIR)/etc/pam.d/sshd +endef +DROPBEAR_DEPENDENCIES += linux-pam +DROPBEAR_CONF_OPTS += --enable-pam +DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_SVR_PAM_AUTH +DROPBEAR_POST_INSTALL_TARGET_HOOKS += DROPBEAR_INSTALL_PAM_CONF +else +# Ensure that dropbear doesn't use crypt() when it's not available +define DROPBEAR_SVR_PASSWORD_AUTH + echo '#if !HAVE_CRYPT' >> $(@D)/localoptions.h + echo '#define DROPBEAR_SVR_PASSWORD_AUTH 0' >> $(@D)/localoptions.h + echo '#endif' >> $(@D)/localoptions.h +endef +DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_SVR_PASSWORD_AUTH +endif + +ifeq ($(BR2_PACKAGE_DROPBEAR_LEGACY_CRYPTO),y) +define DROPBEAR_ENABLE_LEGACY_CRYPTO + echo '#define DROPBEAR_3DES 1' >> $(@D)/localoptions.h + echo '#define DROPBEAR_ENABLE_CBC_MODE 1' >> $(@D)/localoptions.h + echo '#define DROPBEAR_SHA1_96_HMAC 1' >> $(@D)/localoptions.h + echo '#define DROPBEAR_DH_GROUP1 1' >> $(@D)/localoptions.h + echo '#define DROPBEAR_DSS 1' >> $(@D)/localoptions.h +endef +DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_ENABLE_LEGACY_CRYPTO +endif + +ifeq ($(BR2_PACKAGE_DROPBEAR_DISABLE_REVERSEDNS),) +define DROPBEAR_ENABLE_REVERSE_DNS + echo '#define DO_HOST_LOOKUP 1' >> $(@D)/localoptions.h +endef +DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_ENABLE_REVERSE_DNS +endif + +ifeq ($(BR2_PACKAGE_DROPBEAR_SMALL),y) +DROPBEAR_LICENSE += , Unlicense, WTFPL +DROPBEAR_LICENSE_FILES += libtommath/LICENSE libtomcrypt/LICENSE +DROPBEAR_CONF_OPTS += --disable-zlib --enable-bundled-libtom +else +define DROPBEAR_BUILD_FEATURED + echo '#define DROPBEAR_SMALL_CODE 0' >> $(@D)/localoptions.h +endef +DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_BUILD_FEATURED +DROPBEAR_DEPENDENCIES += zlib libtomcrypt +DROPBEAR_CONF_OPTS += --disable-bundled-libtom +endif + +define DROPBEAR_CUSTOM_PATH + echo '#define DEFAULT_PATH $(BR2_SYSTEM_DEFAULT_PATH)' >>$(@D)/localoptions.h +endef +DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_CUSTOM_PATH + +define DROPBEAR_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/dropbear/dropbear.service \ + $(TARGET_DIR)/usr/lib/systemd/system/dropbear.service +endef + +ifeq ($(BR2_USE_MMU),y) +define DROPBEAR_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/dropbear/S50dropbear \ + $(TARGET_DIR)/etc/init.d/S50dropbear +endef +else +define DROPBEAR_DISABLE_STANDALONE + echo '#define NON_INETD_MODE 0' >> $(@D)/localoptions.h +endef +DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_DISABLE_STANDALONE +endif + +ifneq ($(BR2_PACKAGE_DROPBEAR_WTMP),y) +DROPBEAR_CONF_OPTS += --disable-wtmp +endif + +ifneq ($(BR2_PACKAGE_DROPBEAR_LASTLOG),y) +DROPBEAR_CONF_OPTS += --disable-lastlog +endif + +DROPBEAR_LOCALOPTIONS_FILE = $(call qstrip,$(BR2_PACKAGE_DROPBEAR_LOCALOPTIONS_FILE)) +ifneq ($(DROPBEAR_LOCALOPTIONS_FILE),) +define DROPBEAR_APPEND_LOCALOPTIONS_FILE + cat $(DROPBEAR_LOCALOPTIONS_FILE) >> $(@D)/localoptions.h +endef +DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_APPEND_LOCALOPTIONS_FILE +endif + +define DROPBEAR_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 $(@D)/dropbearmulti $(TARGET_DIR)/usr/sbin/dropbear + for f in $(DROPBEAR_TARGET_BINS); do \ + ln -snf ../sbin/dropbear $(TARGET_DIR)/usr/bin/$$f ; \ + done + ln -snf /var/run/dropbear $(TARGET_DIR)/etc/dropbear +endef + +$(eval $(autotools-package)) diff --git a/package/dropbear/dropbear.service b/package/dropbear/dropbear.service new file mode 100644 index 00000000..620cdd7a --- /dev/null +++ b/package/dropbear/dropbear.service @@ -0,0 +1,27 @@ +[Unit] +Description=Dropbear SSH daemon +After=syslog.target network.target auditd.service + +[Service] +# If /etc/dropbear is a symlink to /var/run/dropbear, and +# - the filesystem is RO (i.e. we can not rm the symlink), +# create the directory pointed to by the symlink. +# - the filesystem is RW (i.e. we can rm the symlink), +# replace the symlink with an actual directory +ExecStartPre=/bin/sh -c '\ +if [ -L /etc/dropbear \ + -a "$(readlink /etc/dropbear)" = "/var/run/dropbear" ]; then \ + if rm -f /etc/dropbear >/dev/null 2>&1; then \ + mkdir -p /etc/dropbear; \ + else \ + echo "No persistent location to store SSH host keys. New keys will be"; \ + echo "generated at each boot. Are you sure this is what you want to do?"; \ + mkdir -p "$(readlink /etc/dropbear)"; \ + fi; \ +fi' +EnvironmentFile=-/etc/default/dropbear +ExecStart=/usr/sbin/dropbear -F -R $DROPBEAR_ARGS +ExecReload=/bin/kill -HUP $MAINPID + +[Install] +WantedBy=multi-user.target diff --git a/package/dropbear/etc-pam.d-sshd b/package/dropbear/etc-pam.d-sshd new file mode 100644 index 00000000..5e13fc0d --- /dev/null +++ b/package/dropbear/etc-pam.d-sshd @@ -0,0 +1,7 @@ +#%PAM-1.0 +auth required pam_unix.so shadow nodelay +account required pam_nologin.so +account required pam_unix.so +password required pam_unix.so shadow nullok use_authtok +session required pam_unix.so +session required pam_limits.so diff --git a/package/dropwatch/Config.in b/package/dropwatch/Config.in new file mode 100644 index 00000000..8dfb4ace --- /dev/null +++ b/package/dropwatch/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_DROPWATCH + bool "dropwatch" + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_READLINE + select BR2_PACKAGE_LIBNL + select BR2_PACKAGE_LIBPCAP + help + Dropwatch is an interactive utility for monitoring and + recording packets that are dropped by the kernel + + https://github.com/nhorman/dropwatch + +comment "dropwatch needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/dropwatch/dropwatch.hash b/package/dropwatch/dropwatch.hash new file mode 100644 index 00000000..24fc0309 --- /dev/null +++ b/package/dropwatch/dropwatch.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 8c43d0c15d0cb9ce179fa1fb0610611723689a6f551b23c70a7ddc1cf068e8d2 dropwatch-1.5.4.tar.gz +sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 COPYING diff --git a/package/dropwatch/dropwatch.mk b/package/dropwatch/dropwatch.mk new file mode 100644 index 00000000..33775f6c --- /dev/null +++ b/package/dropwatch/dropwatch.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# dropwatch +# +################################################################################ + +DROPWATCH_VERSION = 1.5.4 +DROPWATCH_SITE = $(call github,nhorman,dropwatch,v$(DROPWATCH_VERSION)) +DROPWATCH_DEPENDENCIES = libnl readline libpcap host-pkgconf $(TARGET_NLS_DEPENDENCIES) +DROPWATCH_LICENSE = GPL-2.0+ +DROPWATCH_LICENSE_FILES = COPYING +# From git +DROPWATCH_AUTORECONF = YES + +DROPWATCH_CONF_OPTS = --without-bfd +DROPWATCH_MAKE_OPTS = LIBS=$(TARGET_NLS_LIBS) + +$(eval $(autotools-package)) diff --git a/package/dstat/Config.in b/package/dstat/Config.in new file mode 100644 index 00000000..09d1970f --- /dev/null +++ b/package/dstat/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_DSTAT + bool "dstat" + depends on BR2_USE_WCHAR # python3 + depends on BR2_USE_MMU # python3 + depends on BR2_TOOLCHAIN_HAS_THREADS # python3 + depends on !BR2_STATIC_LIBS # python3 + select BR2_PACKAGE_PYTHON3 # runtime + help + Dstat, written in Python, is a versatile replacement for + vmstat, iostat, netstat and ifstat. Dstat overcomes some of + their limitations and adds some extra features, more counters + and flexibility. Dstat is handy for monitoring systems during + performance tuning tests, benchmarks or troubleshooting. + Dstat allows you to view all of your system resources in + real-time, you can e.g. compare disk utilization in + combination with interrupts from your IDE controller, or + compare the network bandwidth numbers directly with the disk + throughput (in the same interval). + + Note that to get proper output, your terminal size should be + known by the termios subsystem. This can be done by running + the 'resize' utility of busybox. + + http://dag.wieers.com/home-made/dstat/ + +comment "dstat 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/package/dstat/dstat.hash b/package/dstat/dstat.hash new file mode 100644 index 00000000..603bd506 --- /dev/null +++ b/package/dstat/dstat.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 4fbd58f3461c86d09a3ab97472aa204de37aa33d31a0493a3e5ed86a2045abea dstat-0.7.4.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/dstat/dstat.mk b/package/dstat/dstat.mk new file mode 100644 index 00000000..6f01a371 --- /dev/null +++ b/package/dstat/dstat.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# dstat +# +################################################################################ + +DSTAT_VERSION = 0.7.4 +DSTAT_SITE = $(call github,dagwieers,dstat,v$(DSTAT_VERSION)) +DSTAT_LICENSE = GPL-2.0 +DSTAT_LICENSE_FILES = COPYING + +define DSTAT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/dt-utils/Config.in b/package/dt-utils/Config.in new file mode 100644 index 00000000..7c9a1dee --- /dev/null +++ b/package/dt-utils/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_DT_UTILS + bool "dt-utils" + depends on BR2_PACKAGE_HAS_UDEV + help + Tools for flattened device-tree dumping and barebox state + manipulation. + + https://git.pengutronix.de/cgit/tools/dt-utils/ + +comment "dt-utils needs udev /dev management" + depends on !BR2_PACKAGE_HAS_UDEV diff --git a/package/dt-utils/dt-utils.hash b/package/dt-utils/dt-utils.hash new file mode 100644 index 00000000..c57145b8 --- /dev/null +++ b/package/dt-utils/dt-utils.hash @@ -0,0 +1,6 @@ +# Locally computed +sha256 a6988b889418737324ed3db3785d3a9692e802c1dff4a2323c962008b7b646b1 dt-utils-2023.08.0.tar.xz +sha256 a2010f343487d3f7618affe54f789f5487602331c0a8d03f49e9a7c547cf0499 LICENSES/CC0-1.0.txt +sha256 2c9d733cadb50e33cc83f05f1fe7cc4b6c5ff7260fd9eea1b839151c7fa64742 LICENSES/GPL-2.0-only.txt +sha256 d6e37cb7eff6ef15ae3c4082cf40eae80a94cd59b636991d1149d4a5c9dc3537 LICENSES/GPL-2.0-or-later.txt +sha256 aa8c4e84680f7653d9a6f9f92b692239e5aa839a48dcdbce6108a3bbde451e30 LICENSES/Zlib.txt diff --git a/package/dt-utils/dt-utils.mk b/package/dt-utils/dt-utils.mk new file mode 100644 index 00000000..198b36d5 --- /dev/null +++ b/package/dt-utils/dt-utils.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# dt-utils +# +################################################################################ + +DT_UTILS_VERSION = 2023.08.0 +DT_UTILS_SOURCE = dt-utils-$(DT_UTILS_VERSION).tar.xz +DT_UTILS_SITE = https://git.pengutronix.de/cgit/tools/dt-utils/snapshot +DT_UTILS_LICENSE = CC0-1.0, GPL-2.0, GPL-2.0+, Zlib +DT_UTILS_LICENSE_FILES = \ + LICENSES/CC0-1.0.txt \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-2.0-or-later.txt \ + LICENSES/Zlib.txt + +DT_UTILS_DEPENDENCIES = udev +DT_UTILS_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/dt/0001-adjust-os-symlink.patch b/package/dt/0001-adjust-os-symlink.patch new file mode 100644 index 00000000..1af9d64d --- /dev/null +++ b/package/dt/0001-adjust-os-symlink.patch @@ -0,0 +1,19 @@ +Don't force build-dir-in-build-dir logic, symlink the os-specific SCSI +support file in place. + +Status: not suitable for upstream. + +Signed-off-by: Gustavo Zacarias + +diff -Nura Makefile.linux Makefile.linux +--- a/Makefile.linux 2016-01-26 09:10:03.939963780 -0300 ++++ b/Makefile.linux 2016-01-26 09:10:27.140763863 -0300 +@@ -129,7 +129,7 @@ + echo "Please specify OS={aix,linux,hpux,solaris,windows}"; \ + exit 1; \ + fi; \ +- ln -sf ../scsilib-$(OS).c scsilib.c ++ ln -sf scsilib-$(OS).c scsilib.c + + print:; + @$(PRINTER) $(PRINTFLAGS) $(ALL_CFILES) diff --git a/package/dt/0002-dt-default-source-define.patch b/package/dt/0002-dt-default-source-define.patch new file mode 100644 index 00000000..8c9daaea --- /dev/null +++ b/package/dt/0002-dt-default-source-define.patch @@ -0,0 +1,20 @@ +Patch taken from Fedora: +http://pkgs.fedoraproject.org/cgit/rpms/dt.git/commit/dt-default-source-define.patch?id=a3107b34a3efc6af66a5f892514f233bb66eb6b5 + +_BSD_SOURCE was deprecated, hence switch to use _DEFAULT_SOURCE as well +to avoid the build from breaking on newer toolchains. + +Signed-off-by: Gustavo Zacarias + +diff -rupN dt.v18.32.old/common.h dt.v18.32/common.h +--- dt.v18.32.old/common.h 2013-03-01 23:52:30.000000000 +0100 ++++ dt.v18.32/common.h 2014-09-24 17:41:40.777604710 +0200 +@@ -127,7 +127,7 @@ typedef volatile slarge_t v_slarge; + + #endif /* defined(_WIN64) */ + +-#elif defined(__GNUC__) && defined(_BSD_SOURCE) || defined(SCO) || defined(__QNXNTO__) || defined(SOLARIS) || defined(HP_UX) || defined(AIX) || defined(_NT_SOURCE) ++#elif defined(__GNUC__) && defined(_BSD_SOURCE) || defined (_DEFAULT_SOURCE) || defined(SCO) || defined(__QNXNTO__) || defined(SOLARIS) || defined(HP_UX) || defined(AIX) || defined(_NT_SOURCE) + + #define QuadIsLongLong + typedef unsigned long long int large_t; diff --git a/package/dt/Config.in b/package/dt/Config.in new file mode 100644 index 00000000..af20cc9b --- /dev/null +++ b/package/dt/Config.in @@ -0,0 +1,21 @@ +comment "dt needs a glibc or uClibc toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_MUSL + +config BR2_PACKAGE_DT + bool "dt" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + # Build fails because of several BSDisms + depends on !BR2_TOOLCHAIN_USES_MUSL + help + dt is a generic data test program used to verify proper + operation of peripherals, file systems, device drivers, + or any data stream supported by the operating system. + In its' simplest mode of operation, dt writes and then + verifys its' default data pattern, then displays + performance statisics and other test parameters + before exiting. Since verification of data is performed, + dt can be thought of as a generic diagnostic tool. + + https://github.com/RobinTMiller/dt diff --git a/package/dt/dt.hash b/package/dt/dt.hash new file mode 100644 index 00000000..e0cc0cae --- /dev/null +++ b/package/dt/dt.hash @@ -0,0 +1,7 @@ +# From http://pkgs.fedoraproject.org/repo/pkgs/dt/dt-source-v18.32.tar.gz +# (directory name is md5 hash) +md5 3054aeaaba047a1dbe90c2132a382ee2 dt-source-v18.32.tar.gz + +# Locally calculated +sha256 10d164676e918a4d07f233bcd11e4cb6bfd1052c996182cd1827ccd0c063fcc6 dt-source-v18.32.tar.gz +sha256 49f47f20de4b44dc3505ed0cc55bfbfe0fc3e41956ab546f1eeedcf554def54c LICENSE diff --git a/package/dt/dt.mk b/package/dt/dt.mk new file mode 100644 index 00000000..1963a7ec --- /dev/null +++ b/package/dt/dt.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# dt +# +################################################################################ + +DT_VERSION = 18.32 +DT_SITE = http://pkgs.fedoraproject.org/repo/pkgs/dt/$(DT_SOURCE)/3054aeaaba047a1dbe90c2132a382ee2 +DT_SOURCE = dt-source-v$(DT_VERSION).tar.gz +DT_STRIP_COMPONENTS = 2 +DT_LICENSE = ISC-like +DT_LICENSE_FILES = LICENSE + +DT_CFLAGS = \ + -std=c99 \ + -DMMAP \ + -D__linux__ \ + -D_GNU_SOURCE \ + -D_FILE_OFFSET_BITS=64 \ + -DTHREADS \ + -DSCSI + +# uClibc doesn't provide POSIX AIO +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),) +DT_CFLAGS += -DAIO +endif + +define DT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) -f Makefile.linux \ + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) $(DT_CFLAGS)" \ + OS=linux +endef + +define DT_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/dt $(TARGET_DIR)/usr/bin/dt +endef + +$(eval $(generic-package)) diff --git a/package/dtach/Config.in b/package/dtach/Config.in new file mode 100644 index 00000000..3e6e4934 --- /dev/null +++ b/package/dtach/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_DTACH + bool "dtach" + depends on BR2_USE_MMU # fork() + help + dtach is a tiny program that emulates the detach feature of + screen, allowing you to run a program in an environment that + is protected from the controlling terminal and attach to it + later. + + http://dtach.sourceforge.net/ diff --git a/package/dtach/dtach.hash b/package/dtach/dtach.hash new file mode 100644 index 00000000..1a97aa35 --- /dev/null +++ b/package/dtach/dtach.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 5f7e8c835ee49a9e6dcf89f4e8ccbe724b061c0fc8565b504dd8b3e67ab79f82 dtach-0.9.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/dtach/dtach.mk b/package/dtach/dtach.mk new file mode 100644 index 00000000..3cbf37e2 --- /dev/null +++ b/package/dtach/dtach.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# dtach +# +################################################################################ + +DTACH_VERSION = 0.9 +DTACH_SITE = $(call github,crigler,dtach,v$(DTACH_VERSION)) +DTACH_LICENSE = GPL-2.0+ +DTACH_LICENSE_FILES = COPYING + +# The Makefile does not have an install target. +define DTACH_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/dtach $(TARGET_DIR)/usr/bin/dtach +endef + +$(eval $(autotools-package)) diff --git a/package/dtbocfg/Config.in b/package/dtbocfg/Config.in new file mode 100644 index 00000000..35e31806 --- /dev/null +++ b/package/dtbocfg/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_DTBOCFG + bool "dtbocfg" + depends on BR2_LINUX_KERNEL + help + dtbocfg, which stands for Device Tree Blob Overlay + Configuration File System, was developed to serve + as a userspace API of Device Tree Overlay. + + https://github.com/ikwzm/dtbocfg + +comment "dtbocfg needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL diff --git a/package/dtbocfg/dtbocfg.hash b/package/dtbocfg/dtbocfg.hash new file mode 100644 index 00000000..df1817f7 --- /dev/null +++ b/package/dtbocfg/dtbocfg.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 f1667de4250b744bb4a11dfc5f85d8b1f960da7d396c9f230f5b4d12224f524f dtbocfg-0.1.0.tar.gz +sha256 e57cb9f2ed607cd95bf1b64371325c505c1ac8fe640a8c9933e7fe7637a38567 LICENSE diff --git a/package/dtbocfg/dtbocfg.mk b/package/dtbocfg/dtbocfg.mk new file mode 100644 index 00000000..df5f692b --- /dev/null +++ b/package/dtbocfg/dtbocfg.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# dtbocfg +# +################################################################################ + +DTBOCFG_VERSION = 0.1.0 +DTBOCFG_SITE = $(call github,ikwzm,dtbocfg,v$(DTBOCFG_VERSION)) +DTBOCFG_LICENSE = BSD-2-Clause +DTBOCFG_LICENSE_FILES = LICENSE + +define DTBOCFG_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_OF_OVERLAY) + $(call KCONFIG_ENABLE_OPT,CONFIG_CONFIGFS_FS) +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/dtc/0001-Fix-include-guards-for-older-kernel-u-boot-sources.patch b/package/dtc/0001-Fix-include-guards-for-older-kernel-u-boot-sources.patch new file mode 100644 index 00000000..127114e8 --- /dev/null +++ b/package/dtc/0001-Fix-include-guards-for-older-kernel-u-boot-sources.patch @@ -0,0 +1,67 @@ +From 086283ed7f1886de05407bc75dd4c070c78a6f50 Mon Sep 17 00:00:00 2001 +From: Lothar Felten +Date: Mon, 8 Oct 2018 13:29:44 +0200 +Subject: [PATCH] Fix include guards for older kernel/u-boot sources + +Linux kernels before 4.17 and U-Boot versions before 2018.07 use libfdt +include guards with leading underscores. + +Those have been removed in dtc-1.4.7. + +This patch handles both include guard types and allows the compilation +of older Linux kernel and u-boot sources. + +Signed-off-by: Lothar Felten +[ThomasDS: also update fdt.h which has the same issue, seen on U-Boot +2011.03] +Signed-off-by: Thomas De Schampheleire +[SB: Updated to match context change in v1.5.1] +Signed-off-by: Sam Bobroff +--- + libfdt/fdt.h | 4 ++++ + libfdt/libfdt.h | 4 ++++ + libfdt/libfdt_env.h | 4 ++++ + 3 files changed, 12 insertions(+) + +diff --git a/libfdt/fdt.h b/libfdt/fdt.h +index f2e6880..0f1dc4d 100644 +--- a/libfdt/fdt.h ++++ b/libfdt/fdt.h +@@ -1,4 +1,8 @@ + /* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */ ++#ifdef _FDT_H ++#warning "Please consider updating your kernel and/or u-boot version" ++#define FDT_H ++#endif + #ifndef FDT_H + #define FDT_H + /* +diff --git a/libfdt/libfdt.h b/libfdt/libfdt.h +index 8037f39..7668432 100644 +--- a/libfdt/libfdt.h ++++ b/libfdt/libfdt.h +@@ -1,4 +1,8 @@ + /* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */ ++#ifdef _LIBFDT_H ++#warning "Please consider updating your kernel and/or u-boot version" ++#define LIBFDT_H ++#endif + #ifndef LIBFDT_H + #define LIBFDT_H + /* +diff --git a/libfdt/libfdt_env.h b/libfdt/libfdt_env.h +index 73b6d40..b95a287 100644 +--- a/libfdt/libfdt_env.h ++++ b/libfdt/libfdt_env.h +@@ -1,4 +1,8 @@ + /* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */ ++#ifdef _LIBFDT_ENV_H ++#warning "Please consider updating your kernel and/or u-boot version" ++#define LIBFDT_ENV_H ++#endif + #ifndef LIBFDT_ENV_H + #define LIBFDT_ENV_H + /* +-- +2.22.0.216.g00a2a96fc9 + diff --git a/package/dtc/Config.in b/package/dtc/Config.in new file mode 100644 index 00000000..73bd3688 --- /dev/null +++ b/package/dtc/Config.in @@ -0,0 +1,39 @@ +config BR2_PACKAGE_DTC + bool "dtc (libfdt)" + depends on !BR2_STATIC_LIBS + help + The Device Tree Compiler, dtc, takes as input a device-tree in + a given format and outputs a device-tree in another format. + + Note that only the library is installed. + If you want the programs, say 'y' here, and to "dtc programs", + below. + + https://git.kernel.org/cgit/utils/dtc/dtc.git + +if BR2_PACKAGE_DTC + +config BR2_PACKAGE_DTC_PROGRAMS + bool "dtc programs" + help + Say 'y' here if you also want the programs on the target: + - convert-dtsv0 convert from version 0 to version 1 + - dtc the device tree compiler + - dtdiff compare two device trees (needs bash) + - fdtdump print a readable version of a + flat device tree + - fdtget read values from device tree + - fdtput write a property value to a device tree + + Note: dtdiff requires bash, so if bash is not selected, dtdiff + will be removed from the target file system. Enable bash if + you need dtdiff on the target. + +comment "dtdiff will not be installed: it requires bash" + depends on BR2_PACKAGE_DTC_PROGRAMS + depends on !BR2_PACKAGE_BASH + +endif + +comment "dtc needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/dtc/Config.in.host b/package/dtc/Config.in.host new file mode 100644 index 00000000..f80a49bb --- /dev/null +++ b/package/dtc/Config.in.host @@ -0,0 +1,10 @@ +config BR2_PACKAGE_HOST_DTC + bool "host dtc" + help + The Device Tree Compiler, dtc, takes as input a device-tree in + a given format and outputs a device-tree in another format. + + Install host tools: dtc, convert-dtsv0, fdtdump, fdtget and + fdtput. + + https://git.kernel.org/cgit/utils/dtc/dtc.git diff --git a/package/dtc/dtc.hash b/package/dtc/dtc.hash new file mode 100644 index 00000000..5856156f --- /dev/null +++ b/package/dtc/dtc.hash @@ -0,0 +1,7 @@ +# from https://www.kernel.org/pub/software/utils/dtc/sha256sums.asc +sha256 29edce3d302a15563d8663198bbc398c5a0554765c83830d0d4c0409d21a16c4 dtc-1.7.0.tar.xz + +# Hash for license files +sha256 78e1e1ce5728a990d59c7de61d4741c49185d5129daf783b386380a214328d68 README.license +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 GPL +sha256 6313108c23efffa36948f8b2cff1560a5935373b527b0e1a837cc77e6ed1bacd BSD-2-Clause diff --git a/package/dtc/dtc.mk b/package/dtc/dtc.mk new file mode 100644 index 00000000..5868ae0e --- /dev/null +++ b/package/dtc/dtc.mk @@ -0,0 +1,79 @@ +################################################################################ +# +# dtc +# +################################################################################ + +DTC_VERSION = 1.7.0 +DTC_SOURCE = dtc-$(DTC_VERSION).tar.xz +DTC_SITE = https://www.kernel.org/pub/software/utils/dtc +DTC_LICENSE = GPL-2.0+ or BSD-2-Clause (library) +DTC_LICENSE_FILES = README.license GPL BSD-2-Clause +DTC_CPE_ID_VALID = YES +DTC_INSTALL_STAGING = YES +DTC_DEPENDENCIES = host-bison host-flex host-pkgconf +HOST_DTC_DEPENDENCIES = host-bison host-flex host-pkgconf + +DTC_MAKE_OPTS = \ + PREFIX=/usr \ + NO_PYTHON=1 \ + NO_VALGRIND=1 + +# For the host, we install headers in a special subdirectory to avoid +# conflicts with the in-kernel libfdt copy. +HOST_DTC_MAKE_OPTS = \ + PREFIX=$(HOST_DIR) \ + INCLUDEDIR=$(HOST_DIR)/include/libfdt \ + NO_PYTHON=1 \ + NO_VALGRIND=1 \ + NO_YAML=1 + +ifeq ($(BR2_PACKAGE_LIBYAML),y) +DTC_DEPENDENCIES += libyaml +else +DTC_MAKE_OPTS += NO_YAML=1 +endif + +define DTC_POST_INSTALL_TARGET_RM_DTDIFF + rm -f $(TARGET_DIR)/usr/bin/dtdiff +endef + +ifeq ($(BR2_PACKAGE_DTC_PROGRAMS),y) + +DTC_LICENSE += , GPL-2.0+ (programs) +DTC_INSTALL_GOAL = install +ifeq ($(BR2_PACKAGE_BASH),) +DTC_POST_INSTALL_TARGET_HOOKS += DTC_POST_INSTALL_TARGET_RM_DTDIFF +endif + +else # $(BR2_PACKAGE_DTC_PROGRAMS) != y + +DTC_INSTALL_GOAL = install-lib + +endif # $(BR2_PACKAGE_DTC_PROGRAMS) != y + +define DTC_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) EXTRA_CFLAGS="$(TARGET_CFLAGS) -fPIC" -C $(@D) $(DTC_MAKE_OPTS) +endef + +# For staging, only the library is needed +define DTC_INSTALL_STAGING_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) $(DTC_MAKE_OPTS) install-lib \ + install-includes +endef + +define DTC_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) $(DTC_MAKE_OPTS) $(DTC_INSTALL_GOAL) +endef + +# host build +define HOST_DTC_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) EXTRA_CFLAGS="$(HOST_CFLAGS) -fPIC" -C $(@D) $(HOST_DTC_MAKE_OPTS) +endef + +define HOST_DTC_INSTALL_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(HOST_DTC_MAKE_OPTS) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/dtv-scan-tables/Config.in b/package/dtv-scan-tables/Config.in new file mode 100644 index 00000000..e102ca73 --- /dev/null +++ b/package/dtv-scan-tables/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_DTV_SCAN_TABLES + bool "dtv-scan-tables" + help + The Digital TV scan tables. + + http://git.linuxtv.org/dtv-scan-tables.git diff --git a/package/dtv-scan-tables/dtv-scan-tables.hash b/package/dtv-scan-tables/dtv-scan-tables.hash new file mode 100644 index 00000000..f110bb6d --- /dev/null +++ b/package/dtv-scan-tables/dtv-scan-tables.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 a6ffaeec227c35d8afe79b9d7b7a2dd9d3367c33dc1c3d5d5729cebd4973ef48 dtv-scan-tables-7098bdd27548eaf3e5d9485fc68575f88e362daf-git4.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING +sha256 4fd46f32582c29007657e2daad8d0a6d954cf4e9d2e47bae8f8d8c32765fc987 COPYING.LGPL diff --git a/package/dtv-scan-tables/dtv-scan-tables.mk b/package/dtv-scan-tables/dtv-scan-tables.mk new file mode 100644 index 00000000..d9e6910a --- /dev/null +++ b/package/dtv-scan-tables/dtv-scan-tables.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# dtv-scan-tables +# +################################################################################ + +DTV_SCAN_TABLES_VERSION = 7098bdd27548eaf3e5d9485fc68575f88e362daf +DTV_SCAN_TABLES_SITE = https://git.linuxtv.org/dtv-scan-tables.git +DTV_SCAN_TABLES_SITE_METHOD = git + +# This package only contains the transponders data. This is not a 'work' +# as per traditional copyright, but just a collection of 'facts', so there's +# probably no license to apply to these data files. +# However, the package prominently contains the COPYING and COPYING.LIB +# license files (respectively for the GPL-2.0 and the LGPL-2.1), so we use +# that as the licensing information. +DTV_SCAN_TABLES_LICENSE = GPL-2.0, LGPL-2.1 +DTV_SCAN_TABLES_LICENSE_FILES = COPYING COPYING.LGPL + +define DTV_SCAN_TABLES_INSTALL_TARGET_CMDS + for f in atsc dvb-c dvb-s dvb-t; do \ + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/share/dvb/$$f; \ + $(INSTALL) $(@D)/$$f/* $(TARGET_DIR)/usr/share/dvb/$$f; \ + done +endef + +$(eval $(generic-package)) diff --git a/package/duktape/Config.in b/package/duktape/Config.in new file mode 100644 index 00000000..38f2c48c --- /dev/null +++ b/package/duktape/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_DUKTAPE + bool "duktape" + depends on !BR2_STATIC_LIBS + depends on !BR2_OPTIMIZE_FAST + help + Duktape is an embeddable Javascript engine, with a focus on + portability and compact footprint. + + Duktape is easy to integrate into a C/C++ project: add + duktape.c, duktape.h, and duk_config.h to your build, and use + the Duktape API to call Ecmascript functions from C code and + vice versa. + + http://www.duktape.org + +comment "duktape needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +comment "duktape can't be built with Optimize for fast" + depends on BR2_OPTIMIZE_FAST diff --git a/package/duktape/duktape.hash b/package/duktape/duktape.hash new file mode 100644 index 00000000..ef6f55aa --- /dev/null +++ b/package/duktape/duktape.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 90f8d2fa8b5567c6899830ddef2c03f3c27960b11aca222fa17aa7ac613c2890 duktape-2.7.0.tar.xz +sha256 c6b6659630ca6cb837afe982ecc79511bfca878b56296d628b02eb6f18789c29 LICENSE.txt diff --git a/package/duktape/duktape.mk b/package/duktape/duktape.mk new file mode 100644 index 00000000..59fc17f7 --- /dev/null +++ b/package/duktape/duktape.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# duktape +# +################################################################################ + +DUKTAPE_VERSION = 2.7.0 +DUKTAPE_SOURCE = duktape-$(DUKTAPE_VERSION).tar.xz +DUKTAPE_SITE = \ + https://github.com/svaarala/duktape/releases/download/v$(DUKTAPE_VERSION) +DUKTAPE_LICENSE = MIT +DUKTAPE_LICENSE_FILES = LICENSE.txt +DUKTAPE_INSTALL_STAGING = YES +DUKTAPE_CPE_ID_VALID = YES + +define DUKTAPE_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) -f Makefile.sharedlibrary +endef + +define DUKTAPE_INSTALL_STAGING_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) -f Makefile.sharedlibrary \ + INSTALL_PREFIX=$(STAGING_DIR)/usr install + $(INSTALL) -D -m 0644 $(DUKTAPE_PKGDIR)/duktape.pc.in \ + $(STAGING_DIR)/usr/lib/pkgconfig/duktape.pc + $(SED) 's/@VERSION@/$(DUKTAPE_VERSION)/g;' \ + $(STAGING_DIR)/usr/lib/pkgconfig/duktape.pc +endef + +define DUKTAPE_INSTALL_TARGET_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) -f Makefile.sharedlibrary \ + INSTALL_PREFIX=$(TARGET_DIR)/usr install +endef + +$(eval $(generic-package)) diff --git a/package/duktape/duktape.pc.in b/package/duktape/duktape.pc.in new file mode 100644 index 00000000..eaef5f69 --- /dev/null +++ b/package/duktape/duktape.pc.in @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: duktape +Description: Embeddable Javascript engine +Version: @VERSION@ +Libs: -L${libdir} -lduktape +Cflags: -I${includedir}/ diff --git a/package/duma/Config.in b/package/duma/Config.in new file mode 100644 index 00000000..a891996a --- /dev/null +++ b/package/duma/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_DUMA + bool "duma" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + # By design, duma uses page mapping to isolate + # allocations. Non-MMU platforms cannot perform such + # things. + depends on BR2_USE_MMU + # duma works using LD_PRELOAD, so it always needs to build a + # shared library + depends on !BR2_STATIC_LIBS + help + D.U.M.A. - Detect Unintended Memory Access. A fork of the + Electric Fence library. Detects buffer overflow and + underflow, and also memory leaks. + + https://github.com/johnsonjh/duma + +if BR2_PACKAGE_DUMA + +config BR2_PACKAGE_DUMA_NO_LEAKDETECTION + bool "disable memory leak detection" + +endif # BR2_PACKAGE_DUMA + +comment "duma needs a toolchain w/ C++, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/package/duma/duma.hash b/package/duma/duma.hash new file mode 100644 index 00000000..d6c1685b --- /dev/null +++ b/package/duma/duma.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 470aa72e7018f0beadb5fbe3c932a62ba1b0594c29158a744c614bfa42133e59 duma-2.5.21.tar.gz +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING-GPL +sha256 76568dd3f7e12b18900ce0e767b99e59f4956a2e709a33de899508693a6425d4 COPYING-LGPL diff --git a/package/duma/duma.mk b/package/duma/duma.mk new file mode 100644 index 00000000..80fe8a5d --- /dev/null +++ b/package/duma/duma.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# duma +# +################################################################################ + +DUMA_VERSION = 2.5.21 +DUMA_SITE = $(call github,johnsonjh,duma,VERSION_$(subst .,_,$(DUMA_VERSION))) +DUMA_LICENSE = GPL-2.0+, LGPL-2.1+ +DUMA_LICENSE_FILES = COPYING-GPL COPYING-LGPL + +DUMA_INSTALL_STAGING = YES + +DUMA_OPTIONS = \ + $(if $(BR2_PACKAGE_DUMA_NO_LEAKDETECTION),-DDUMA_LIB_NO_LEAKDETECTION) + +# The dependency of some source files in duma_config.h, which is generated at +# build time, is not specified in the Makefile. Force non-parallel build. +define DUMA_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) $(TARGET_CONFIGURE_OPTS) \ + OS=linux \ + DUMA_OPTIONS="$(DUMA_OPTIONS)" \ + HOST_CFLAGS="$(HOST_CFLAGS)" \ + CPPFLAGS="$(TARGET_CXXFLAGS) -std=c++11" -C $(@D) +endef + +define DUMA_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + OS=linux prefix=$(STAGING_DIR)/usr install -C $(@D) +endef + +define DUMA_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + OS=linux prefix=$(TARGET_DIR)/usr install -C $(@D) +endef + +$(eval $(generic-package)) diff --git a/package/dump1090/0001-swap-size-arguments-to-calloc.patch b/package/dump1090/0001-swap-size-arguments-to-calloc.patch new file mode 100644 index 00000000..1c2d5027 --- /dev/null +++ b/package/dump1090/0001-swap-size-arguments-to-calloc.patch @@ -0,0 +1,43 @@ +From be8f5b7ab1223076ba0086f14aeeb53ace2d4b5c Mon Sep 17 00:00:00 2001 +From: Jeff Lawson +Date: Tue, 18 Jun 2024 15:58:24 +0000 +Subject: [PATCH] swap size arguments to calloc + +fixes #241 + +Signed-off-by: Peter Korsgaard +Upstream: https://github.com/flightaware/dump1090/pull/243 +--- + adaptive.c | 2 +- + net_io.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/adaptive.c b/adaptive.c +index f16e16c..d656433 100644 +--- a/adaptive.c ++++ b/adaptive.c +@@ -195,7 +195,7 @@ void adaptive_init() + adaptive_burst_window_remaining = adaptive_samples_per_window; + adaptive_burst_window_counter = 0; + +- adaptive_range_radix = calloc(sizeof(unsigned), 65536); ++ adaptive_range_radix = calloc(65536, sizeof(unsigned)); + adaptive_range_state = RANGE_RESCAN_UP; + + // select and enforce gain limits +diff --git a/net_io.c b/net_io.c +index bf98028..8abd510 100644 +--- a/net_io.c ++++ b/net_io.c +@@ -104,7 +104,7 @@ struct net_service *serviceInit(const char *descr, struct net_writer *writer, he + { + struct net_service *service; + +- if (!(service = calloc(sizeof(*service), 1))) { ++ if (!(service = calloc(1, sizeof(*service)))) { + fprintf(stderr, "Out of memory allocating service %s\n", descr); + exit(1); + } +-- +2.39.2 + diff --git a/package/dump1090/Config.in b/package/dump1090/Config.in new file mode 100644 index 00000000..ca3165dc --- /dev/null +++ b/package/dump1090/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_DUMP1090 + bool "dump1090" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C11/stdatomic.h + select BR2_PACKAGE_NCURSES + help + Dump1090 is a simple Mode S decoder for RTLSDR devices + + https://github.com/flightaware/dump1090 + +comment "dump1090 needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/dump1090/dump1090.hash b/package/dump1090/dump1090.hash new file mode 100644 index 00000000..a493e765 --- /dev/null +++ b/package/dump1090/dump1090.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 6190622c3625713ec9cff882a9d6f6a51b6d2f83ef20e6e1905a3902c7b08483 dump1090-9.0.tar.gz +sha256 804f68c803eb5c127c53ad17c4f4e5033ef158e514bb76950dc7b1773f9ce4b0 LICENSE diff --git a/package/dump1090/dump1090.mk b/package/dump1090/dump1090.mk new file mode 100644 index 00000000..e06babb0 --- /dev/null +++ b/package/dump1090/dump1090.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# dump1090 +# +################################################################################ + +DUMP1090_VERSION = 9.0 +DUMP1090_SITE = $(call github,flightaware,dump1090,v$(DUMP1090_VERSION)) +DUMP1090_LICENSE = GPL-2.0+ +DUMP1090_LICENSE_FILES = LICENSE +DUMP1090_DEPENDENCIES = host-pkgconf ncurses +DUMP1090_MAKE_OPTS = BLADERF=no CPUFEATURES=no LIMESDR=no + +ifeq ($(BR2_PACKAGE_HACKRF),y) +DUMP1090_DEPENDENCIES += hackrf +DUMP1090_MAKE_OPTS += HACKRF=yes +else +DUMP1090_MAKE_OPTS += HACKRF=no +endif + +ifeq ($(BR2_PACKAGE_LIBRTLSDR),y) +DUMP1090_DEPENDENCIES += librtlsdr +DUMP1090_MAKE_OPTS += RTLSDR=yes +else +DUMP1090_MAKE_OPTS += RTLSDR=no +endif + +define DUMP1090_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) PREFIX=/usr \ + -C $(@D) $(DUMP1090_MAKE_OPTS) +endef + +define DUMP1090_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/dump1090 $(TARGET_DIR)/usr/bin/dump1090 + $(INSTALL) -m 0755 -D $(@D)/view1090 $(TARGET_DIR)/usr/bin/view1090 + $(INSTALL) -d $(TARGET_DIR)/usr/share/dump1090 + cp -r $(@D)/public_html/* $(TARGET_DIR)/usr/share/dump1090 +endef + +$(eval $(generic-package)) diff --git a/package/dust/Config.in b/package/dust/Config.in new file mode 100644 index 00000000..7b6e9304 --- /dev/null +++ b/package/dust/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_DUST + bool "dust" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_RUSTC + help + dust is an alternative written in Rust of the command "du" + from the Linux kernel. It aims to be more intuitive and visual + in order to give the user a better view of his system's + current storage capacity. + + https://github.com/bootandy/dust.git diff --git a/package/dust/dust.hash b/package/dust/dust.hash new file mode 100644 index 00000000..975ec966 --- /dev/null +++ b/package/dust/dust.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 ace29e85647e7079f9eaa066da9b1368c7200233eb0814442499948b5adeb028 dust-0.9.0-cargo2.tar.gz +sha256 aee6e2d13d3a55c7881630c09b41ca7b3b44bb1437b5d36695d22decc3655160 LICENSE diff --git a/package/dust/dust.mk b/package/dust/dust.mk new file mode 100644 index 00000000..c566723c --- /dev/null +++ b/package/dust/dust.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# dust +# +################################################################################ + +DUST_VERSION = 0.9.0 +DUST_SITE = $(call github,bootandy,dust,v$(DUST_VERSION)) +DUST_LICENSE = APACHE-2.0 +DUST_LICENSE_FILES = LICENSE + +$(eval $(cargo-package)) diff --git a/package/dvblast/0001-missing-lm.patch b/package/dvblast/0001-missing-lm.patch new file mode 100644 index 00000000..2efbec46 --- /dev/null +++ b/package/dvblast/0001-missing-lm.patch @@ -0,0 +1,29 @@ +dvblast: fix static linking + +dvblast links to -lev, wihch uses functions from the maths library, +like floor(). + +When linking to a shared libev.so, that dependency is automatically +pulled in because libev as a DT_NEEDED ELF tag on libm.so. + +But when lnking to the static libev.a, since there is no way to express +such dependencies in static libraries, libm is not pulled in, which +leads to build failures such as; + http://autobuild.buildroot.org/results/1f0/1f02f84fb926839a1adbe3af457bb909fdc44433/build-end.log + +Fix that by always linking to -lm (which must come *after* -lev). + +Signed-off-by: "Yann E. MORIN" + +diff -durN dvblast-3.0.orig/Makefile dvblast-3.0/Makefile +--- dvblast-3.0.orig/Makefile 2015-10-05 17:51:14.000000000 +0200 ++++ dvblast-3.0/Makefile 2015-10-30 15:57:19.547123894 +0100 +@@ -28,7 +28,7 @@ + LDLIBS += -lstreammaster + endif + +-LDLIBS_DVBLAST += -lpthread -lev ++LDLIBS_DVBLAST += -lpthread -lev -lm + + OBJ_DVBLAST = dvblast.o util.o dvb.o udp.o asi.o demux.o output.o en50221.o comm.o mrtg-cnt.o asi-deltacast.o + OBJ_DVBLASTCTL = util.o dvblastctl.o diff --git a/package/dvblast/0002-fix-int-types.patch b/package/dvblast/0002-fix-int-types.patch new file mode 100644 index 00000000..d741cc6c --- /dev/null +++ b/package/dvblast/0002-fix-int-types.patch @@ -0,0 +1,24 @@ +Standard integer types are uintXX_t not u_intXX_t + +This fixes the build with the musl C library. + +Signed-off-by: "Yann E. MORIN" + +diff -durN dvblast-3.0.orig/dvblast.h dvblast-3.0/dvblast.h +--- dvblast-3.0.orig/dvblast.h 2015-10-05 17:51:14.000000000 +0200 ++++ dvblast-3.0/dvblast.h 2015-10-30 16:29:25.586125193 +0100 +@@ -49,10 +49,10 @@ + * Raw udp packet structure with flexible-array payload + *****************************************************************************/ + struct udpheader { // FAVOR_BSD hell ... +- u_int16_t source; +- u_int16_t dest; +- u_int16_t len; +- u_int16_t check; ++ uint16_t source; ++ uint16_t dest; ++ uint16_t len; ++ uint16_t check; + }; + + #if defined(__FreeBSD__) || defined(__APPLE__) diff --git a/package/dvblast/Config.in b/package/dvblast/Config.in new file mode 100644 index 00000000..973eee88 --- /dev/null +++ b/package/dvblast/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_DVBLAST + bool "dvblast" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_BITSTREAM + select BR2_PACKAGE_LIBEV + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + DVBlast is a simple and powerful MPEG-2/TS demux and + streaming application. + + http://www.videolan.org/projects/dvblast.html + +comment "dvblast needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/dvblast/dvblast.hash b/package/dvblast/dvblast.hash new file mode 100644 index 00000000..1b75d779 --- /dev/null +++ b/package/dvblast/dvblast.hash @@ -0,0 +1,7 @@ +# From https://get.videolan.org/dvblast/3.4/dvblast-3.4.tar.bz2.md5 +md5 148a26e1207e111f905461cfb1cd106a dvblast-3.4.tar.bz2 +# From https://get.videolan.org/dvblast/3.4/dvblast-3.4.tar.bz2.sha256 +sha256 7abd45aff738544017350af87ec7ebad00fcfb4e4effd04f35023d504d9b6f44 dvblast-3.4.tar.bz2 +# Locally computed +sha256 94f68aec169fb6c9937eade757251714d38a56812be5dbfc3973914a71ad8d2d COPYING +sha256 2c1bea2f338d46ee6f2712f2c2bf05b874327ca0bec5eb0b7b4fbe208a23677f COPYING.WTFPL diff --git a/package/dvblast/dvblast.mk b/package/dvblast/dvblast.mk new file mode 100644 index 00000000..3571ff3c --- /dev/null +++ b/package/dvblast/dvblast.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# dvblast +# +################################################################################ + +DVBLAST_VERSION = 3.4 +DVBLAST_SOURCE = dvblast-$(DVBLAST_VERSION).tar.bz2 +DVBLAST_SITE = https://get.videolan.org/dvblast/$(DVBLAST_VERSION) +DVBLAST_LICENSE = GPL-2.0+, WTFPL +DVBLAST_LICENSE_FILES = COPYING COPYING.WTFPL +DVBLAST_DEPENDENCIES = bitstream libev + +DVBLAST_MAKE_ENV = $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +DVBLAST_DEPENDENCIES += libiconv +DVBLAST_MAKE_ENV += LDLIBS=-liconv +endif + +define DVBLAST_BUILD_CMDS + $(DVBLAST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define DVBLAST_INSTALL_TARGET_CMDS + $(DVBLAST_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) PREFIX=/usr install +endef + +$(eval $(generic-package)) diff --git a/package/dvbsnoop/0001-musl-types-h.patch b/package/dvbsnoop/0001-musl-types-h.patch new file mode 100644 index 00000000..1149df0d --- /dev/null +++ b/package/dvbsnoop/0001-musl-types-h.patch @@ -0,0 +1,15 @@ +Fix musl build + +Signed-off-by: Bernd Kuhls + +diff -uNr dvbsnoop-1.4.50.org/src/misc/helper.h dvbsnoop-1.4.50/src/misc/helper.h +--- dvbsnoop-1.4.50.org/src/misc/helper.h 2006-01-02 20:04:56.000000000 +0100 ++++ dvbsnoop-1.4.50/src/misc/helper.h 2016-01-24 14:35:02.000000000 +0100 +@@ -16,6 +16,7 @@ + #ifndef __HELPER_H + #define __HELPER_H + ++#include + + u_long outBit_Sx (int verbosity, const char *text, u_char *buf, int startbit, int bitlen); + u_long outBit_Sx_NL (int verbosity, const char *text, u_char *buf, int startbit, int bitlen); diff --git a/package/dvbsnoop/Config.in b/package/dvbsnoop/Config.in new file mode 100644 index 00000000..fb63fa4e --- /dev/null +++ b/package/dvbsnoop/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_DVBSNOOP + bool "dvbsnoop" + help + Dvbsnoop is just a simple tool to analyze, view or debug a + transport stream (TS), program elementary stream (PES) or even + a program stream (PS). Dvbsnoop is trying to get input mostly + direct from a frontend (satellite or cable tuner inside a + set-top box for example) via DVB APIv3 to view into a TS, or a + demux to view PES or PS (also mostly inside the set-top box or + even PCI Card or USB Plug) but also from a file (recorded TS). + Dvbsnoop is working well on SD transport streams but may have + some limited functionality on HD transport streams + (DVB-{C,S,T}2 because of missing knowledge how to handle it. + + Dvbsnoop itself doesn't do the tuning on the frontend, this + has to be done by external helpers or manually driver call. + The dvbsnoop tool was written while developing the software + Neutrino on the set-top box DBox2. + + http://dvbsnoop.sourceforge.net + http://en.wikipedia.org/wiki/DBox2 diff --git a/package/dvbsnoop/dvbsnoop.hash b/package/dvbsnoop/dvbsnoop.hash new file mode 100644 index 00000000..0d88afe1 --- /dev/null +++ b/package/dvbsnoop/dvbsnoop.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 7658498b26a5d2a0242e81f0cfafa0e43a2bec56f8674e7ac197dfc310866ec6 dvbsnoop-1.4.50.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/dvbsnoop/dvbsnoop.mk b/package/dvbsnoop/dvbsnoop.mk new file mode 100644 index 00000000..fdc483d2 --- /dev/null +++ b/package/dvbsnoop/dvbsnoop.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# dvbsnoop +# +################################################################################ + +DVBSNOOP_VERSION = 1.4.50 +DVBSNOOP_SITE = http://downloads.sourceforge.net/project/dvbsnoop/dvbsnoop/dvbsnoop-$(DVBSNOOP_VERSION) +DVBSNOOP_LICENSE = GPL-2.0 +DVBSNOOP_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/dvdauthor/Config.in b/package/dvdauthor/Config.in new file mode 100644 index 00000000..9ba5411d --- /dev/null +++ b/package/dvdauthor/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_DVDAUTHOR + bool "dvdauthor" + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_LIBPNG + help + DVDAuthor is a set of tools to help you author the file and + directory structure of a DVD-Video disc, including + programmatic commands for implementing interactive behaviour. + It is driven by command lines and XML control files, though + there are other programs that provide GUI-based front ends + if you prefer + + http://dvdauthor.sourceforge.net + +if BR2_PACKAGE_DVDAUTHOR + +config BR2_PACKAGE_DVDAUTHOR_DVDUNAUTHOR + bool "dvdunauthor" + select BR2_PACKAGE_LIBDVDREAD + help + This option enables the dvdunauthor program, which requires + libdvdread. + +endif diff --git a/package/dvdauthor/dvdauthor.hash b/package/dvdauthor/dvdauthor.hash new file mode 100644 index 00000000..c0ff3e0f --- /dev/null +++ b/package/dvdauthor/dvdauthor.hash @@ -0,0 +1,6 @@ +# From https://sourceforge.net/projects/dvdauthor/files +md5 1173dcb8d40e74fc90c0f3a25dbd642d dvdauthor-0.7.2.tar.gz +sha1 0e605642140576bfb3e963414d77630d1c073a51 dvdauthor-0.7.2.tar.gz +# Locally computed +sha256 3020a92de9f78eb36f48b6f22d5a001c47107826634a785a62dfcd080f612eb7 dvdauthor-0.7.2.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/dvdauthor/dvdauthor.mk b/package/dvdauthor/dvdauthor.mk new file mode 100644 index 00000000..3f9c2186 --- /dev/null +++ b/package/dvdauthor/dvdauthor.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# dvdauthor +# +################################################################################ + +DVDAUTHOR_VERSION = 0.7.2 +DVDAUTHOR_SITE = https://sourceforge.net/projects/dvdauthor/files +DVDAUTHOR_DEPENDENCIES = host-pkgconf libxml2 freetype libpng +DVDAUTHOR_LICENSE = GPL-2.0+ +DVDAUTHOR_LICENSE_FILES = COPYING +DVDAUTHOR_CONF_ENV = \ + ac_cv_prog_FREETYPECONFIG=$(STAGING_DIR)/usr/bin/freetype-config \ + ac_cv_path_XML2_CONFIG=$(STAGING_DIR)/usr/bin/xml2-config \ + ac_cv_prog_GMAGICKCONFIG= + +ifeq ($(BR2_PACKAGE_IMAGEMAGICK),y) +DVDAUTHOR_DEPENDENCIES += imagemagick +DVDAUTHOR_CONF_ENV += \ + ac_cv_prog_MAGICKCONFIG=$(STAGING_DIR)/usr/bin/Magick-config +else +DVDAUTHOR_CONF_ENV += \ + ac_cv_prog_MAGICKCONFIG= +endif + +# Automatically detected by dvdauthor configure script, no way to +# disable. +ifeq ($(BR2_PACKAGE_FONTCONFIG),y) +DVDAUTHOR_DEPENDENCIES += fontconfig +endif + +ifeq ($(BR2_PACKAGE_LIBFRIBIDI),y) +DVDAUTHOR_DEPENDENCIES += libfribidi +endif + +ifeq ($(BR2_PACKAGE_DVDAUTHOR_DVDUNAUTHOR),y) +DVDAUTHOR_DEPENDENCIES += libdvdread +# dvdauthor configure does not use pkg-config to detect libdvdread +ifeq ($(BR2_PACKAGE_LIBDVDCSS)$(BR2_STATIC_LIBS),yy) +DVDAUTHOR_CONF_ENV += LIBS="-ldvdcss" +endif +DVDAUTHOR_CONF_OPTS += --enable-dvdunauthor +else +DVDAUTHOR_CONF_OPTS += --disable-dvdunauthor +endif + +$(eval $(autotools-package)) diff --git a/package/dvdrw-tools/0001-limits.h.patch b/package/dvdrw-tools/0001-limits.h.patch new file mode 100644 index 00000000..ccda8eeb --- /dev/null +++ b/package/dvdrw-tools/0001-limits.h.patch @@ -0,0 +1,23 @@ +transport.hxx: add limits.h include now needed because of kernel changes + +Signed-off-by: Steve Kenton + +diff -pruN dvd+rw-tools-7.1.ori/transport.hxx dvd+rw-tools-7.1/transport.hxx +--- dvd+rw-tools-7.1.ori/transport.hxx 2008-03-01 04:34:43.000000000 -0600 ++++ dvd+rw-tools-7.1/transport.hxx 2015-01-18 15:47:24.245863631 -0600 +@@ -9,6 +9,7 @@ + #if defined(__unix) || defined(__unix__) + #include + #include ++#include + #include + #include + #include +@@ -40,6 +41,7 @@ inline long getmsecs() + #include + #include + #include ++#include + #define ssize_t LONG_PTR + #define off64_t __int64 + diff --git a/package/dvdrw-tools/0002-Include-sysmacros.h-to-compile-with-newer-gcc.patch b/package/dvdrw-tools/0002-Include-sysmacros.h-to-compile-with-newer-gcc.patch new file mode 100644 index 00000000..29c3a73a --- /dev/null +++ b/package/dvdrw-tools/0002-Include-sysmacros.h-to-compile-with-newer-gcc.patch @@ -0,0 +1,14 @@ +growisofs.c: include sysmacros.h to compile with glibc-2.28 + +Signed-off-by: Giulio Benetti + +diff -urpN dvd+rw-tools-7.1.orig/growisofs.c dvd+rw-tools-7.1/growisofs.c +--- dvd+rw-tools-7.1.orig/growisofs.c 2018-09-08 01:56:11.686656819 +0200 ++++ dvd+rw-tools-7.1/growisofs.c 2018-09-08 02:11:45.868778471 +0200 +@@ -441,6 +441,7 @@ + #include + #include + #include ++#include + #include + #include "mp.h" diff --git a/package/dvdrw-tools/Config.in b/package/dvdrw-tools/Config.in new file mode 100644 index 00000000..d4d6bd2c --- /dev/null +++ b/package/dvdrw-tools/Config.in @@ -0,0 +1,53 @@ +comment "dvdrw-tools needs a toolchain w/ threads, C++, wchar" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_USE_WCHAR + +config BR2_PACKAGE_DVDRW_TOOLS + bool "dvdrw-tools" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + help + The dvd+rw-tools are used to master Blu-ray Disc + and DVD Disc media, both +RW/+R and -RW/-R. Note: + The +RW in the name is a historical artifact. This + package contains the widely used growisofs program. + + Buildroot does not support packages with a '+' sign + in their name, which explains why it is named + dvdrw-tools and not dvd+rw-tools. + + Because dvd+rw-tools does not directly interact with + disc media it uses a separate media backend program. + The usual backend is mkisofs from the cdrtools package. + However, cdrtools is not currently part of buildroot. + + The Linux From Scratch project uses uses xorriso for the + media backend and Ubuntu uses cdrkit for the backend. + Choose the one which seems most appropriate for your use. + NOTE: xorriso does not currently support UDF. + + http://fy.chalmers.se/~appro/linux/DVD+RW/tools + +if BR2_PACKAGE_DVDRW_TOOLS +choice + prompt "Media Backend" + help + Choose which media backend program to use. + +config BR2_PACKAGE_DVDRW_TOOLS_CDRKIT_BACKEND + bool "cdrkit" + select BR2_PACKAGE_CDRKIT + help + Symlink mkisofs to genisoimage from the cdrkit package. + +config BR2_PACKAGE_DVDRW_TOOLS_XORRISO_BACKEND + bool "xorriso" + select BR2_PACKAGE_XORRISO + help + Symlink mkisofs to xorrisofs from the xorriso package. + +endchoice +endif diff --git a/package/dvdrw-tools/dvdrw-tools.hash b/package/dvdrw-tools/dvdrw-tools.hash new file mode 100644 index 00000000..a5ed6ad5 --- /dev/null +++ b/package/dvdrw-tools/dvdrw-tools.hash @@ -0,0 +1,3 @@ +# Locally computed using sha256sum +sha256 f8d60f822e914128bcbc5f64fbe3ed131cbff9045dca7e12c5b77b26edde72ca dvd+rw-tools-7.1.tar.gz +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad LICENSE diff --git a/package/dvdrw-tools/dvdrw-tools.mk b/package/dvdrw-tools/dvdrw-tools.mk new file mode 100644 index 00000000..5dab5466 --- /dev/null +++ b/package/dvdrw-tools/dvdrw-tools.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# dvdrw-tools +# +################################################################################ + +DVDRW_TOOLS_VERSION = 7.1 +DVDRW_TOOLS_SOURCE = dvd+rw-tools-$(DVDRW_TOOLS_VERSION).tar.gz +DVDRW_TOOLS_SITE = http://fy.chalmers.se/~appro/linux/DVD+RW/tools +DVDRW_TOOLS_LICENSE = GPL-2.0 +DVDRW_TOOLS_LICENSE_FILES = LICENSE +DVDRW_TOOLS_DEPENDENCIES = host-m4 + +define DVDRW_TOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +ifeq ($(BR2_PACKAGE_DVDRW_TOOLS_CDRKIT_BACKEND),y) +DVDRW_TOOLS_BACKEND = genisoimage +DVDRW_TOOLS_DEPENDENCIES += cdrkit +else ifeq ($(BR2_PACKAGE_DVDRW_TOOLS_XORRISO_BACKEND),y) +DVDRW_TOOLS_BACKEND = xorrisofs +DVDRW_TOOLS_DEPENDENCIES += xorriso +endif + +define DVDRW_TOOLS_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/dvd-ram-control $(TARGET_DIR)/usr/bin/dvd-ram-control + $(INSTALL) -m 0755 -D $(@D)/dvd+rw-booktype $(TARGET_DIR)/usr/bin/dvd+rw-booktype + $(INSTALL) -m 0755 -D $(@D)/dvd+rw-format $(TARGET_DIR)/usr/bin/dvd+rw-format + $(INSTALL) -m 0755 -D $(@D)/dvd+rw-mediainfo $(TARGET_DIR)/usr/bin/dvd+rw-mediainfo + $(INSTALL) -m 0755 -D $(@D)/growisofs $(TARGET_DIR)/usr/bin/growisofs + ln -s -f $(DVDRW_TOOLS_BACKEND) $(TARGET_DIR)/usr/bin/mkisofs +endef + +$(eval $(generic-package)) diff --git a/package/e2fsprogs/Config.in b/package/e2fsprogs/Config.in new file mode 100644 index 00000000..23c4ef30 --- /dev/null +++ b/package/e2fsprogs/Config.in @@ -0,0 +1,82 @@ +menuconfig BR2_PACKAGE_E2FSPROGS + bool "e2fsprogs" + depends on BR2_USE_MMU # util-linux/libblkid + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + The EXT2 file system utilities. + + The following programs are always built and installed: + badblocks chattr debugfs dumpe2fs e2freefrag e2fsck e2image + e2undo e4crypt e4defrag filefrag fsck fuse2fs logsave lsattr + mke2fs mklost+found resize2fs tune2fs + + The uuid utilities (uuidd, uuidgen) are not built. Use the + ones from util-linux, instead. + + Other programs can be selected individually. + + http://e2fsprogs.sourceforge.net + +if BR2_PACKAGE_E2FSPROGS + +config BR2_PACKAGE_E2FSPROGS_DEBUGFS + bool "debugfs" + help + ext2/ext3/ext4 file system debugger + +config BR2_PACKAGE_E2FSPROGS_E2IMAGE + bool "e2image" + help + Save critical ext2/ext3/ext4 filesystem metadata to a file + +config BR2_PACKAGE_E2FSPROGS_E2SCRUB + bool "e2scrub" + depends on BR2_PACKAGE_BASH # runtime + depends on BR2_PACKAGE_COREUTILS # runtime + depends on BR2_PACKAGE_LVM2 # runtime + depends on BR2_PACKAGE_UTIL_LINUX # runtime + help + Check the contents of a mounted ext[234] filesystem + +comment "e2scrub needs bash, coreutils, lvm2, and util-linux" + depends on !BR2_PACKAGE_BASH || !BR2_PACKAGE_COREUTILS \ + || !BR2_PACKAGE_LVM2 || !BR2_PACKAGE_UTIL_LINUX + +config BR2_PACKAGE_E2FSPROGS_E4DEFRAG + bool "e4defrag" + depends on !BR2_nios2 # fallocate not implemented + depends on !BR2_TOOLCHAIN_USES_UCLIBC # sync_file_range not impl + help + Online defragmenter for ext4 filesystem + +comment "e4defrag needs a glibc or musl toolchain" + depends on !BR2_nios2 + depends on BR2_TOOLCHAIN_USES_UCLIBC + +config BR2_PACKAGE_E2FSPROGS_FSCK + bool "fsck" + default y + depends on !BR2_PACKAGE_UTIL_LINUX_FSCK + help + Check and repair a Linux file system. This is a wrapper around + the filesystem-specific fsck tools. + +config BR2_PACKAGE_E2FSPROGS_FUSE2FS + bool "fuse2fs" + depends on !BR2_STATIC_LIBS # libfuse + depends on BR2_TOOLCHAIN_HAS_THREADS # libfuse + select BR2_PACKAGE_LIBFUSE + help + FUSE file system client for ext2/ext3/ext4 file systems + +comment "fuse2fs needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +config BR2_PACKAGE_E2FSPROGS_RESIZE2FS + bool "resize2fs" + help + ext2/ext3/ext4 file system resizer + +endif diff --git a/package/e2fsprogs/Config.in.host b/package/e2fsprogs/Config.in.host new file mode 100644 index 00000000..7591bbcb --- /dev/null +++ b/package/e2fsprogs/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_E2FSPROGS + bool "host e2fsprogs" + select BR2_PACKAGE_HOST_UTIL_LINUX + help + The EXT2/3/4 file system utilities. + + http://e2fsprogs.sourceforge.net diff --git a/package/e2fsprogs/e2fsprogs.hash b/package/e2fsprogs/e2fsprogs.hash new file mode 100644 index 00000000..28a47c15 --- /dev/null +++ b/package/e2fsprogs/e2fsprogs.hash @@ -0,0 +1,6 @@ +# From https://mirrors.edge.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v1.47.0/sha256sums.asc +sha256 144af53f2bbd921cef6f8bea88bb9faddca865da3fbc657cc9b4d2001097d5db e2fsprogs-1.47.0.tar.xz +# Locally calculated +sha256 5da5ef153e559c1d990d4c3eedbedd4442db892d37eae1f35fff069de8ec9020 NOTICE +sha256 032989b508f1a72ebee5b3417e55d06d473f9ee203e45ab11864a7e49cdec63d lib/ss/mit-sipb-copyright.h +sha256 47182fe6631a32f271a15bbe210751b3825b7199f588879aac7d4804fc8b4b8f lib/et/internal.h diff --git a/package/e2fsprogs/e2fsprogs.mk b/package/e2fsprogs/e2fsprogs.mk new file mode 100644 index 00000000..cbaac4f4 --- /dev/null +++ b/package/e2fsprogs/e2fsprogs.mk @@ -0,0 +1,105 @@ +################################################################################ +# +# e2fsprogs +# +################################################################################ + +E2FSPROGS_VERSION = 1.47.0 +E2FSPROGS_SOURCE = e2fsprogs-$(E2FSPROGS_VERSION).tar.xz +E2FSPROGS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/people/tytso/e2fsprogs/v$(E2FSPROGS_VERSION) +E2FSPROGS_LICENSE = GPL-2.0, MIT-like with advertising clause (libss and libet) +E2FSPROGS_LICENSE_FILES = NOTICE lib/ss/mit-sipb-copyright.h lib/et/internal.h +E2FSPROGS_CPE_ID_VALID = YES +E2FSPROGS_INSTALL_STAGING = YES + +# Use libblkid and libuuid from util-linux for host and target packages. +# This prevents overriding them with e2fsprogs' ones, which may cause +# problems for other packages. +E2FSPROGS_DEPENDENCIES = host-pkgconf util-linux +HOST_E2FSPROGS_DEPENDENCIES = host-pkgconf host-util-linux + +E2FSPROGS_SELINUX_MODULES = fstools + +# e4defrag doesn't build on older systems like RHEL5.x, and we don't +# need it on the host anyway. +# Disable fuse2fs as well to avoid carrying over deps, and it's unused +HOST_E2FSPROGS_CONF_OPTS = \ + --disable-defrag \ + --disable-e2initrd-helper \ + --disable-fuse2fs \ + --disable-fsck \ + --disable-libblkid \ + --disable-libuuid \ + --disable-testio-debug \ + --enable-symlink-install \ + --enable-elf-shlibs \ + --with-crond-dir=no \ + --with-udev-rules-dir=no \ + --with-systemd-unit-dir=no + +# Set the binary directories to "/bin" and "/sbin", as busybox does, +# so that we do not end up with two versions of e2fs tools. +E2FSPROGS_CONF_OPTS = \ + --bindir=/bin \ + --sbindir=/sbin \ + $(if $(BR2_STATIC_LIBS),--disable-elf-shlibs,--enable-elf-shlibs) \ + $(if $(BR2_PACKAGE_E2FSPROGS_DEBUGFS),--enable-debugfs,--disable-debugfs) \ + $(if $(BR2_PACKAGE_E2FSPROGS_E2IMAGE),--enable-imager,--disable-imager) \ + $(if $(BR2_PACKAGE_E2FSPROGS_E4DEFRAG),--enable-defrag,--disable-defrag) \ + $(if $(BR2_PACKAGE_E2FSPROGS_FSCK),--enable-fsck,--disable-fsck) \ + $(if $(BR2_PACKAGE_E2FSPROGS_RESIZE2FS),--enable-resizer,--disable-resizer) \ + --disable-uuidd \ + --disable-libblkid \ + --disable-libuuid \ + --disable-e2initrd-helper \ + --disable-testio-debug \ + --disable-rpath \ + --enable-symlink-install + +ifeq ($(BR2_PACKAGE_E2FSPROGS_FUSE2FS),y) +E2FSPROGS_CONF_OPTS += --enable-fuse2fs +E2FSPROGS_DEPENDENCIES += libfuse +else +E2FSPROGS_CONF_OPTS += --disable-fuse2fs +endif + +ifeq ($(BR2_nios2),y) +E2FSPROGS_CONF_ENV += ac_cv_func_fallocate=no +endif + +# workaround gcc bug 111001 +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_111001),y) +E2FSPROGS_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -Os" +endif + +E2FSPROGS_CONF_ENV += ac_cv_path_LDCONFIG=true + +HOST_E2FSPROGS_CONF_ENV += ac_cv_path_LDCONFIG=true + +E2FSPROGS_INSTALL_STAGING_OPTS = \ + DESTDIR=$(STAGING_DIR) \ + install-libs + +# e2scrub has no associated --enable/disable option +ifneq ($(BR2_PACKAGE_E2FSPROGS_E2SCRUB),y) +E2FSPROGS_MAKE_OPTS += E2SCRUB_DIR= +endif + +E2FSPROGS_INSTALL_TARGET_OPTS = \ + $(E2FSPROGS_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) \ + install + +# Package does not build in parallel due to improper make rules +define HOST_E2FSPROGS_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE1) -C $(@D) install install-libs +endef + +# Remove compile_et which raises a build failure with samba4 +define HOST_E2FSPROGS_REMOVE_COMPILE_ET + $(RM) $(HOST_DIR)/bin/compile_et +endef +HOST_E2FSPROGS_POST_INSTALL_HOOKS += HOST_E2FSPROGS_REMOVE_COMPILE_ET + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/e2tools/Config.in b/package/e2tools/Config.in new file mode 100644 index 00000000..e4a35e27 --- /dev/null +++ b/package/e2tools/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_E2TOOLS + bool "e2tools" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR # uses wchar_t + depends on BR2_USE_MMU # e2fsprogs + select BR2_PACKAGE_E2FSPROGS + help + E2tools is a simple set of GPL'ed utilities to read, write, + and manipulate files in an ext2/ext3 filesystem. These + utilities access a filesystem directly using the ext2fs + library. + + https://github.com/ndim/e2tools + +comment "e2tools needs a toolchain w/ threads, wchar" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR + depends on BR2_USE_MMU diff --git a/package/e2tools/Config.in.host b/package/e2tools/Config.in.host new file mode 100644 index 00000000..859c47bd --- /dev/null +++ b/package/e2tools/Config.in.host @@ -0,0 +1,10 @@ +config BR2_PACKAGE_HOST_E2TOOLS + bool "host e2tools" + select BR2_PACKAGE_HOST_E2FSPROGS + help + E2tools is a simple set of GPL'ed utilities to read, write, + and manipulate files in an ext2/ext3 filesystem. These + utilities access a filesystem directly using the ext2fs + library. + + https://github.com/ndim/e2tools diff --git a/package/e2tools/e2tools.hash b/package/e2tools/e2tools.hash new file mode 100644 index 00000000..14be7dbd --- /dev/null +++ b/package/e2tools/e2tools.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1d06ca71f01483ad6d9a514e31466e7d2357b3465de2813d667a8b2f9638544e e2tools-0.0.16.4.tar.gz +sha256 0e79fd282723e1eb3f7381d41233a83ed20cf3e8c83aa53e6847bf7ffe781583 COPYING diff --git a/package/e2tools/e2tools.mk b/package/e2tools/e2tools.mk new file mode 100644 index 00000000..7c9ef0ff --- /dev/null +++ b/package/e2tools/e2tools.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# e2tools +# +################################################################################ + +E2TOOLS_VERSION = 0.0.16.4 +E2TOOLS_SITE = $(call github,ndim,e2tools,v$(E2TOOLS_VERSION)) + +# Source coming from GitHub, no configure included. +E2TOOLS_AUTORECONF = YES +E2TOOLS_LICENSE = GPL-2.0 +E2TOOLS_LICENSE_FILES = COPYING +E2TOOLS_DEPENDENCIES = e2fsprogs +E2TOOLS_CONF_ENV = LIBS="-lpthread" +HOST_E2TOOLS_DEPENDENCIES = host-e2fsprogs +HOST_E2TOOLS_CONF_ENV = LIBS="-lpthread" + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/earlyoom/0001-main.c-fix-build-with-kernel-4.3.patch b/package/earlyoom/0001-main.c-fix-build-with-kernel-4.3.patch new file mode 100644 index 00000000..8233800c --- /dev/null +++ b/package/earlyoom/0001-main.c-fix-build-with-kernel-4.3.patch @@ -0,0 +1,45 @@ +From 499e81bfcdd9379bf4619a7c3ad85ed7f2b1dca5 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 28 Jul 2022 10:05:18 +0200 +Subject: [PATCH] main.c: fix build with kernel < 4.3 + +PR_CAP_AMBIENT is only available since kernel 4.3 and +https://github.com/torvalds/linux/commit/58319057b7847667f0c9585b9de0e8932b0fdb08 +resulting in the following build failure since version 1.7 and +https://github.com/rfjakob/earlyoom/commit/9edc5cfc9ad794ed59baec5e6ee8d1060456a315: + +main.c: In function 'main': +main.c:119:11: error: 'PR_CAP_AMBIENT' undeclared (first use in this function) + prctl(PR_CAP_AMBIENT, PR_CAP_AMBIENT_CLEAR_ALL, 0, 0, 0); + ^ + +Fixes: + - http://autobuild.buildroot.org/results/5a0ad7e1f6de3c37e40c37d8f583fc699a457753 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/rfjakob/earlyoom/pull/276] +--- + main.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/main.c b/main.c +index c068c7c..99ca9e2 100644 +--- a/main.c ++++ b/main.c +@@ -115,11 +115,13 @@ int main(int argc, char* argv[]) + fatal(4, "Could not cd to /proc: %s", strerror(errno)); + } + ++#ifdef PR_CAP_AMBIENT + // When systemd starts a daemon with capabilities, it uses ambient + // capabilities to do so. If not dropped, the capabilities can spread + // to any child process. This is usually not necessary and its a good + // idea to drop them if not needed. + prctl(PR_CAP_AMBIENT, PR_CAP_AMBIENT_CLEAR_ALL, 0, 0, 0); ++#endif + + meminfo_t m = parse_meminfo(); + +-- +2.35.1 + diff --git a/package/earlyoom/Config.in b/package/earlyoom/Config.in new file mode 100644 index 00000000..a3cac273 --- /dev/null +++ b/package/earlyoom/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_EARLYOOM + bool "earlyoom" + depends on BR2_USE_MMU + help + Early OOM daemon for Linux. + + User space daemon for triggering Linux OOM killer + before running out of memory, avoiding situations + where the machine becomes unresponsive from out of + control swapping. + + https://github.com/rfjakob/earlyoom diff --git a/package/earlyoom/S02earlyoom b/package/earlyoom/S02earlyoom new file mode 100644 index 00000000..ac173410 --- /dev/null +++ b/package/earlyoom/S02earlyoom @@ -0,0 +1,49 @@ +#!/bin/sh + +DAEMON="earlyoom" +PIDFILE="/var/run/$DAEMON.pid" + +EARLYOOM_ARGS="" + +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/usr/bin/$DAEMON" \ + -- $EARLYOOM_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/earlyoom/earlyoom.hash b/package/earlyoom/earlyoom.hash new file mode 100644 index 00000000..207f0e15 --- /dev/null +++ b/package/earlyoom/earlyoom.hash @@ -0,0 +1,4 @@ +# locally calculated +sha256 ebda1279a813d9b0f7860ce5029ccf5ea9f8868be070f2eaf40f90f2e64b6414 earlyoom-1.7.tar.gz +# License files, locally calculated +sha256 e730b3ec729de46d987ae73f30ed337e4cbe832f09205330acfa71848c6e0087 LICENSE diff --git a/package/earlyoom/earlyoom.mk b/package/earlyoom/earlyoom.mk new file mode 100644 index 00000000..808b9c49 --- /dev/null +++ b/package/earlyoom/earlyoom.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# earlyoom +# +################################################################################ + +EARLYOOM_VERSION = 1.7 +EARLYOOM_SITE = $(call github,rfjakob,earlyoom,v$(EARLYOOM_VERSION)) +EARLYOOM_LICENSE = MIT +EARLYOOM_LICENSE_FILES = LICENSE + +EARLYOOM_BUILD_TARGETS = earlyoom.service earlyoom +EARLYOOM_INSTALL_TARGETS = install-default install-bin +EARLYOOM_CFLAGS = '$(TARGET_CFLAGS) -std=gnu99 -DVERSION=\"$(EARLYOOM_VERSION)\"' + +EARLYOOM_MAKE_OPTS = \ + $(TARGET_CONFIGURE_OPTS) \ + PREFIX=/usr + +define EARLYOOM_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(EARLYOOM_MAKE_OPTS) -C $(@D) \ + $(EARLYOOM_BUILD_TARGETS) CFLAGS=$(EARLYOOM_CFLAGS) +endef + +define EARLYOOM_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(EARLYOOM_MAKE_OPTS) -C $(@D) \ + $(EARLYOOM_INSTALL_TARGETS) DESTDIR=$(TARGET_DIR) +endef + +define EARLYOOM_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 $(EARLYOOM_PKGDIR)/S02earlyoom \ + $(TARGET_DIR)/etc/init.d/S02earlyoom +endef + +define EARLYOOM_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(@D)/earlyoom.service \ + $(TARGET_DIR)/usr/lib/systemd/system/earlyoom.service +endef + +$(eval $(generic-package)) diff --git a/package/easy-rsa/Config.in b/package/easy-rsa/Config.in new file mode 100644 index 00000000..56db64a5 --- /dev/null +++ b/package/easy-rsa/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_EASY_RSA + bool "easy-rsa" + select BR2_PACKAGE_OPENSSL # runtime + select BR2_PACKAGE_LIBOPENSSL_BIN if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBRESSL_BIN if BR2_PACKAGE_LIBRESSL + help + Simple shell based CA utility + + This package eases the creation of certificates, for example + for openvpn clients. + + This was formerly part of the openvpn package. + + easy-rsa is a wrapper script around OpenSSL binaries. + + https://github.com/OpenVPN/easy-rsa diff --git a/package/easy-rsa/easy-rsa.hash b/package/easy-rsa/easy-rsa.hash new file mode 100644 index 00000000..de19d8b6 --- /dev/null +++ b/package/easy-rsa/easy-rsa.hash @@ -0,0 +1,6 @@ +# Locally computed: (after verifying gpg sig) +sha512 eb3978b07c313af148c6ae94b60e213c8b810c5974242855560b22ad949cfc094d311e4cc04a95ddd0f817bfec54971caa5289e5fc532895e1e58499d265c705 EasyRSA-3.1.7.tgz + +# Hash for license files +sha256 7c4a4fc71745d93a87278801f1bca555562ca23f21e18293add64b9e6f6b7bf1 COPYING.md +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 gpl-2.0.txt diff --git a/package/easy-rsa/easy-rsa.mk b/package/easy-rsa/easy-rsa.mk new file mode 100644 index 00000000..7266943f --- /dev/null +++ b/package/easy-rsa/easy-rsa.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# easy-rsa +# +################################################################################ + +EASY_RSA_VERSION = 3.1.7 +EASY_RSA_SOURCE = EasyRSA-$(EASY_RSA_VERSION).tgz +EASY_RSA_SITE = https://github.com/OpenVPN/easy-rsa/releases/download/v$(EASY_RSA_VERSION) +EASY_RSA_LICENSE = GPL-2.0 +EASY_RSA_LICENSE_FILES = COPYING.md gpl-2.0.txt + +# shell script, so no build step + +define EASY_RSA_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/easyrsa $(TARGET_DIR)/usr/bin/easyrsa + $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/easy-rsa/x509-types + $(INSTALL) -m 0644 -t $(TARGET_DIR)/etc/easy-rsa/x509-types $(@D)/x509-types/* + $(INSTALL) -D -m 0644 $(@D)/openssl-easyrsa.cnf $(TARGET_DIR)/etc/easy-rsa/openssl-easyrsa.cnf + $(INSTALL) -D -m 0644 $(@D)/vars.example $(TARGET_DIR)/etc/easy-rsa/vars +endef + +$(eval $(generic-package)) diff --git a/package/easydbus/Config.in b/package/easydbus/Config.in new file mode 100644 index 00000000..5f2f3a22 --- /dev/null +++ b/package/easydbus/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_EASYDBUS + bool "easydbus" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + depends on !BR2_PACKAGE_LUA_5_4 + select BR2_PACKAGE_LIBGLIB2 + help + Easy to use DBus library for Lua. + + https://github.com/mniestroj/easydbus + +comment "easydbus needs a toolchain w/ wchar, threads, Lua <= 5.3" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_PACKAGE_LUA_5_4 diff --git a/package/easydbus/easydbus.hash b/package/easydbus/easydbus.hash new file mode 100644 index 00000000..08a4f038 --- /dev/null +++ b/package/easydbus/easydbus.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 8cec24bff40f056d4874ed9d6fb73c9f1efbc5eff14528e1b49f1a162b197f26 easydbus-0.1.0.tar.gz +sha256 dec3b3103cd6889045da86fc7da22bd25545966e5bd7c214791b922dec19588b LICENSE diff --git a/package/easydbus/easydbus.mk b/package/easydbus/easydbus.mk new file mode 100644 index 00000000..57d0c223 --- /dev/null +++ b/package/easydbus/easydbus.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# easydbus +# +################################################################################ + +EASYDBUS_VERSION = 0.1.0 +EASYDBUS_SITE = $(call github,mniestroj,easydbus,v$(EASYDBUS_VERSION)) +EASYDBUS_DEPENDENCIES = luainterpreter libglib2 +EASYDBUS_LICENSE = MIT +EASYDBUS_LICENSE_FILES = LICENSE + +$(eval $(cmake-package)) diff --git a/package/easyframes/Config.in b/package/easyframes/Config.in new file mode 100644 index 00000000..b73afe05 --- /dev/null +++ b/package/easyframes/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_EASYFRAMES + bool "easyframes" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBPCAP + help + This is a small and simple command-line tool for network + testing. The tool makes it simple to compose a frame, + inject and express what and where frames are expected to be + received. + + https://github.com/microchip-ung/easyframes diff --git a/package/easyframes/easyframes.hash b/package/easyframes/easyframes.hash new file mode 100644 index 00000000..d9a804aa --- /dev/null +++ b/package/easyframes/easyframes.hash @@ -0,0 +1,3 @@ +# locally calculated +sha256 0b8f4af8c41b0b1de2529d500aef6b9be7609f25b28e6a863129578a66806e5d easyframes-0.4.tar.gz +sha256 24f37598e822a1411fb7164ce7eb3ef120aea8279016399abc282c2381ce3f57 COPYING diff --git a/package/easyframes/easyframes.mk b/package/easyframes/easyframes.mk new file mode 100644 index 00000000..10e15612 --- /dev/null +++ b/package/easyframes/easyframes.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# easyframes +# +################################################################################ + +EASYFRAMES_VERSION = 0.4 +EASYFRAMES_SITE = $(call github,microchip-ung,easyframes,v$(EASYFRAMES_VERSION)) +EASYFRAMES_DEPENDENCIES = host-pkgconf libpcap +EASYFRAMES_LICENSE = MIT +EASYFRAMES_LICENSE_FILES = COPYING + +$(eval $(cmake-package)) diff --git a/package/ebtables/0001-replace-ebtables-save-perl-script-with-bash.patch b/package/ebtables/0001-replace-ebtables-save-perl-script-with-bash.patch new file mode 100644 index 00000000..525e8a28 --- /dev/null +++ b/package/ebtables/0001-replace-ebtables-save-perl-script-with-bash.patch @@ -0,0 +1,79 @@ +From 73536d15c80be96049289d96fc32122467c56b1d Mon Sep 17 00:00:00 2001 +From: Matt Weber +Date: Mon, 16 Dec 2019 13:27:30 -0600 +Subject: [PATCH] ebtables: replace ebtables-save perl script with bash rewrite + +Fedora provides a bash replacement for the default ebtables-save perl +script. Using it allows the ebtables run-time dependency on perl to +be replaced with a runtime dependency on bash - which is lower +overhead and more likely to be present on typical embedded systems +already. + + https://bugzilla.redhat.com/show_bug.cgi?id=746040 + http://pkgs.fedoraproject.org/cgit/rpms/ebtables.git/tree/ebtables-save + +Upstream: +https://github.com/openembedded/meta-openembedded/commit/7f723007364ba79de05447671e83d4eefb3097dc + +Signed-off-by: Matthew Weber +[ryanbarnett3@gmail.com: + - changed EBTABLES executable to /usr/sbin/ebtables-legacy +] +Signed-off-by: Ryan Barnett +--- + ebtables-save.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 43 insertions(+) + create mode 100644 ebtables-save.sh + +diff --git a/ebtables-save.sh b/ebtables-save.sh +new file mode 100644 +index 0000000..2d7fc4e +--- /dev/null ++++ b/ebtables-save.sh +@@ -0,0 +1,43 @@ ++#!/bin/bash ++ ++EBTABLES="/usr/sbin/ebtables-legacy" ++ ++[ -x "$EBTABLES" ] || exit 1 ++ ++echo "# Generated by ebtables-save v1.0 on $(date)" ++ ++cnt="" ++[ "x$EBTABLES_SAVE_COUNTER" = "xyes" ] && cnt="--Lc" ++ ++for table_name in $(grep -E '^ebtable_' /proc/modules | cut -f1 -d' ' | sed s/ebtable_//); do ++ table=$($EBTABLES -t $table_name -L $cnt) ++ [ $? -eq 0 ] || { echo "$table"; exit -1; } ++ ++ chain="" ++ rules="" ++ while read line; do ++ [ -z "$line" ] && continue ++ ++ case "$line" in ++ Bridge\ table:\ *) ++ echo "*${line:14}" ++ ;; ++ Bridge\ chain:\ *) ++ chain="${line:14}" ++ chain="${chain%%,*}" ++ policy="${line##*policy: }" ++ echo ":$chain $policy" ++ ;; ++ *) ++ if [ "$cnt" = "--Lc" ]; then ++ line=${line/, pcnt \=/ -c} ++ line=${line/-- bcnt \=/} ++ fi ++ rules="$rules-A $chain $line\n" ++ ;; ++ esac ++ done < +Date: Wed, 24 Mar 2021 11:27:14 +0100 +Subject: [PATCH] ebtables.h: restore KERNEL_64_USERSPACE_32 checks + +Commit e6359eedfbf497e52d52451072aea4713ed80a88 replaced the file ebtables.h +but removed the usage of KERNEL_64_USERSPACE_32. This breaks boards where +such flag is relevant, with following messages: + +[ 6364.971346] kernel msg: ebtables bug: please report to author: Standard target size too big + +Unable to update the kernel. Two possible causes: +1. Multiple ebtables programs were executing simultaneously. The ebtables + userspace tool doesn't by default support multiple ebtables programs running + concurrently. The ebtables option --concurrent or a tool like flock can be + used to support concurrent scripts that update the ebtables kernel tables. +2. The kernel doesn't support a certain ebtables extension, consider + recompiling your kernel or insmod the extension. + +Analysis shows that the structure 'ebt_replace' passed from userspace +ebtables to the kernel, is too small, i.e 80 bytes instead of 120 in case of +64-bit kernel. + +Note that the ebtables build system seems to assume that 'sparc64' is the +only case where KERNEL_64_USERSPACE_32 is relevant, but this is not true. +This situation can happen on many architectures, especially in embedded +systems. For example, an Aarch64 processor with kernel in 64-bit but +userland build for 32-bit Arm. Or a 64-bit MIPS Octeon III processor, with +userland running in the 'n32' ABI. + +Signed-off-by: Thomas De Schampheleire +Upstream-Status: http://patchwork.ozlabs.org/project/netfilter-devel/patch/20210518181730.13436-1-patrickdepinguin@gmail.com/ +--- + include/linux/netfilter_bridge/ebtables.h | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/include/linux/netfilter_bridge/ebtables.h b/include/linux/netfilter_bridge/ebtables.h +index 5be75f2..3c2b61e 100644 +--- a/include/linux/netfilter_bridge/ebtables.h ++++ b/include/linux/netfilter_bridge/ebtables.h +@@ -49,12 +49,21 @@ struct ebt_replace { + /* total size of the entries */ + unsigned int entries_size; + /* start of the chains */ ++#ifdef KERNEL_64_USERSPACE_32 ++ uint64_t hook_entry[NF_BR_NUMHOOKS]; ++#else + struct ebt_entries *hook_entry[NF_BR_NUMHOOKS]; ++#endif + /* nr of counters userspace expects back */ + unsigned int num_counters; + /* where the kernel will put the old counters */ ++#ifdef KERNEL_64_USERSPACE_32 ++ uint64_t counters; ++ uint64_t entries; ++#else + struct ebt_counter *counters; + char *entries; ++#endif + }; + + struct ebt_replace_kernel { +@@ -129,6 +138,9 @@ struct ebt_entry_match { + } u; + /* size of data */ + unsigned int match_size; ++#ifdef KERNEL_64_USERSPACE_32 ++ unsigned int pad; ++#endif + unsigned char data[0] __attribute__ ((aligned (__alignof__(struct ebt_replace)))); + }; + +@@ -142,6 +154,9 @@ struct ebt_entry_watcher { + } u; + /* size of data */ + unsigned int watcher_size; ++#ifdef KERNEL_64_USERSPACE_32 ++ unsigned int pad; ++#endif + unsigned char data[0] __attribute__ ((aligned (__alignof__(struct ebt_replace)))); + }; + +@@ -155,6 +170,9 @@ struct ebt_entry_target { + } u; + /* size of data */ + unsigned int target_size; ++#ifdef KERNEL_64_USERSPACE_32 ++ unsigned int pad; ++#endif + unsigned char data[0] __attribute__ ((aligned (__alignof__(struct ebt_replace)))); + }; + +@@ -162,6 +180,9 @@ struct ebt_entry_target { + struct ebt_standard_target { + struct ebt_entry_target target; + int verdict; ++#ifdef KERNEL_64_USERSPACE_32 ++ unsigned int pad; ++#endif + }; + + /* one entry */ +-- +2.26.2 + diff --git a/package/ebtables/0003-configure.ac-add-option-enable-kernel-64-userland-32.patch b/package/ebtables/0003-configure.ac-add-option-enable-kernel-64-userland-32.patch new file mode 100644 index 00000000..cb57b395 --- /dev/null +++ b/package/ebtables/0003-configure.ac-add-option-enable-kernel-64-userland-32.patch @@ -0,0 +1,51 @@ +From ebf0236270b977a62c522bc32810bc9f8edc72d1 Mon Sep 17 00:00:00 2001 +From: Thomas De Schampheleire +Date: Wed, 24 Mar 2021 13:40:14 +0100 +Subject: [PATCH] configure.ac: add option --enable-kernel-64-userland-32 + +The ebtables build system seems to assume that 'sparc64' is the +only case where KERNEL_64_USERSPACE_32 is relevant, but this is not true. +This situation can happen on many architectures, especially in embedded +systems. For example, an Aarch64 processor with kernel in 64-bit but +userland build for 32-bit Arm. Or a 64-bit MIPS Octeon III processor, with +userland running in the 'n32' ABI. + +While it is possible to set CFLAGS in the environment when calling the +configure script, the caller would need to know to not only specify +KERNEL_64_USERSPACE_32 but also the EBT_MIN_ALIGN value. + +Instead, add a configure option. All internal details can then be handled by +the configure script. + +Signed-off-by: Thomas De Schampheleire +Upstream-Status: http://patchwork.ozlabs.org/project/netfilter-devel/patch/20210518181730.13436-2-patrickdepinguin@gmail.com/ +--- + configure.ac | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index c24ede3..3e89c0c 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -15,10 +15,17 @@ AS_IF([test "x$LOCKFILE" = x], [LOCKFILE="/var/lib/ebtables/lock"]) + + regular_CFLAGS="-Wall -Wunused" + regular_CPPFLAGS="" ++ + case "$host" in + sparc64-*) +- regular_CPPFLAGS="$regular_CPPFLAGS -DEBT_MIN_ALIGN=8 -DKERNEL_64_USERSPACE_32";; ++ enable_kernel_64_userland_32=yes ;; + esac ++AC_ARG_ENABLE([kernel-64-userland-32], ++ AC_HELP_STRING([--enable-kernel-64-userland-32], [indicate that ebtables will be built as a 32-bit application but run under a 64-bit kernel]) ++) ++AS_IF([test "x$enable_kernel_64_userland_32" = xyes], ++ [regular_CPPFLAGS="$regular_CPPFLAGS -DEBT_MIN_ALIGN=8 -DKERNEL_64_USERSPACE_32"] ++) + + AC_SUBST([regular_CFLAGS]) + AC_SUBST([regular_CPPFLAGS]) +-- +2.26.2 + diff --git a/package/ebtables/Config.in b/package/ebtables/Config.in new file mode 100644 index 00000000..703e55a3 --- /dev/null +++ b/package/ebtables/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_EBTABLES + bool "ebtables" + depends on BR2_USE_MMU # fork() + help + Ethernet bridge frame table administration + + http://ebtables.netfilter.org/ + +if BR2_PACKAGE_EBTABLES + +config BR2_PACKAGE_EBTABLES_UTILS_SAVE + bool "ebtables save" + select BR2_PACKAGE_BASH # runtime + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash + help + Install the ebtables-legacy-save tool + +config BR2_PACKAGE_EBTABLES_UTILS_RESTORE + bool "ebtables restore" + help + Install the ebtables-legacy-restore tool + +endif diff --git a/package/ebtables/ebtables.hash b/package/ebtables/ebtables.hash new file mode 100644 index 00000000..c09403b6 --- /dev/null +++ b/package/ebtables/ebtables.hash @@ -0,0 +1,4 @@ +# https://netfilter.org/pub/ebtables/ebtables-2.0.11.tar.gz.sha256sum +sha256 b71f654784a726329f88b412ef7b96b4e5d786ed2bd28193ed7b4c0d677dfd2a ebtables-2.0.11.tar.gz +# Locally computed +sha256 ebdb8ae564c952792017ec680e2edd30443642216eb9f8a3d8fa166c0cb628c1 COPYING diff --git a/package/ebtables/ebtables.mk b/package/ebtables/ebtables.mk new file mode 100644 index 00000000..46c22dde --- /dev/null +++ b/package/ebtables/ebtables.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# ebtables +# +################################################################################ + +EBTABLES_VERSION = 2.0.11 +EBTABLES_SITE = https://netfilter.org/pub/ebtables +EBTABLES_LICENSE = GPL-2.0+ +EBTABLES_LICENSE_FILES = COPYING +EBTABLES_CPE_ID_VENDOR = netfilter +EBTABLES_SELINUX_MODULES = iptables + +# for 0003-configure.ac-add-option-enable-kernel-64-userland-32.patch +EBTABLES_AUTORECONF = YES +ifeq ($(BR2_KERNEL_64_USERLAND_32),y) +EBTABLES_CONF_OPTS += --enable-kernel-64-userland-32 +endif + +ifeq ($(BR2_PACKAGE_EBTABLES_UTILS_SAVE),y) +define EBTABLES_INSTALL_TARGET_UTILS_SAVE + $(INSTALL) -m 0755 -D $(@D)/ebtables-save.sh $(TARGET_DIR)/usr/sbin/ebtables-legacy-save +endef +EBTABLES_POST_INSTALL_TARGET_HOOKS += EBTABLES_INSTALL_TARGET_UTILS_SAVE +else +# ebtables-legacy-save is installed by default, thus remove it from target +define EBTABLES_REMOVE_UTILS_SAVE + $(RM) -f $(TARGET_DIR)/usr/sbin/ebtables-legacy-save +endef +EBTABLES_POST_INSTALL_TARGET_HOOKS += EBTABLES_REMOVE_UTILS_SAVE +endif + +# ebtables-legacy-restore is installed by default, thus remove it if not +# selected +ifeq ($(BR2_PACKAGE_EBTABLES_UTILS_RESTORE),) +define EBTABLES_REMOVE_UTILS_RESTORE + $(RM) -f $(TARGET_DIR)/usr/sbin/ebtables-legacy-restore +endef +EBTABLES_POST_INSTALL_TARGET_HOOKS += EBTABLES_REMOVE_UTILS_RESTORE +endif + +ifeq ($(BR2_PACKAGE_IPTABLES_NFTABLES),) +define EBTABLES_INSTALL_LEGACY_SYMLINK + ln -sf /usr/sbin/ebtables-legacy $(TARGET_DIR)/sbin/ebtables +endef +EBTABLES_POST_INSTALL_TARGET_HOOKS += EBTABLES_INSTALL_LEGACY_SYMLINK +endif + +$(eval $(autotools-package)) diff --git a/package/ecryptfs-utils/0001-musl.patch b/package/ecryptfs-utils/0001-musl.patch new file mode 100644 index 00000000..4a3b8a70 --- /dev/null +++ b/package/ecryptfs-utils/0001-musl.patch @@ -0,0 +1,35 @@ +fix musl build + +Patch inspired by +https://github.com/kraj/meta-musl/blob/master/recipes-core/util-linux/util-linux-2.25/0001-switch_root-use-typeof-instead-of-__SWORD_TYPE-for-s.patch + +Signed-off-by: Bernd Kuhls + +diff -uNr ecryptfs-utils-109.org/src/utils/mount.ecryptfs_private.c ecryptfs-utils-109/src/utils/mount.ecryptfs_private.c +--- ecryptfs-utils-109.org/src/utils/mount.ecryptfs_private.c 2016-01-22 17:04:52.000000000 +0100 ++++ ecryptfs-utils-109/src/utils/mount.ecryptfs_private.c 2016-01-24 16:52:37.000000000 +0100 +@@ -224,6 +224,7 @@ + + static int check_cwd_f_type() + { ++ struct statfs buf; + /** + * This is *not* a list of compatible lower filesystems list for + * eCryptfs. This is a list of filesystems that we reasonably expect to +@@ -235,7 +236,7 @@ + * deceive other programs with a crafted /proc/self/*. See + * https://launchpad.net/bugs/1530566 for more details. + */ +- __SWORD_TYPE f_type_whitelist[] = { ++ typeof(buf.f_type) f_type_whitelist[] = { + 0x61756673 /* AUFS_SUPER_MAGIC */, + 0x9123683E /* BTRFS_SUPER_MAGIC */, + 0x00C36400 /* CEPH_SUPER_MAGIC */, +@@ -259,7 +260,6 @@ + 0x58465342 /* XFS_SB_MAGIC */, + 0x2FC12FC1 /* ZFS_SUPER_MAGIC */, + }; +- struct statfs buf; + size_t i, whitelist_len; + + if (statfs(".", &buf) != 0) { diff --git a/package/ecryptfs-utils/0002-openssl110.patch b/package/ecryptfs-utils/0002-openssl110.patch new file mode 100644 index 00000000..3ae29a60 --- /dev/null +++ b/package/ecryptfs-utils/0002-openssl110.patch @@ -0,0 +1,173 @@ +Fix build with OpenSSL 1.1.x + +Downloaded from upstream commit +https://code.launchpad.net/~jelle-vdwaa/ecryptfs/ecryptfs/+merge/319746 + +Signed-off-by: Bernd Kuhls + +=== modified file 'src/key_mod/ecryptfs_key_mod_openssl.c' +--- a/src/key_mod/ecryptfs_key_mod_openssl.c 2013-10-25 19:45:09 +0000 ++++ b/src/key_mod/ecryptfs_key_mod_openssl.c 2017-06-02 18:27:28 +0000 +@@ -41,6 +41,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -55,6 +56,19 @@ + char *passphrase; + }; + ++#if OPENSSL_VERSION_NUMBER < 0x10100000L ++static void RSA_get0_key(const RSA *r, ++ const BIGNUM **n, const BIGNUM **e, const BIGNUM **d) ++{ ++ if (n != NULL) ++ *n = r->n; ++ if (e != NULL) ++ *e = r->e; ++ if (d != NULL) ++ *d = r->d; ++} ++#endif ++ + static void + ecryptfs_openssl_destroy_openssl_data(struct openssl_data *openssl_data) + { +@@ -142,6 +156,7 @@ + { + int len, nbits, ebits, i; + int nbytes, ebytes; ++ const BIGNUM *key_n, *key_e; + unsigned char *hash; + unsigned char *data = NULL; + int rc = 0; +@@ -152,11 +167,13 @@ + rc = -ENOMEM; + goto out; + } +- nbits = BN_num_bits(key->n); ++ RSA_get0_key(key, &key_n, NULL, NULL); ++ nbits = BN_num_bits(key_n); + nbytes = nbits / 8; + if (nbits % 8) + nbytes++; +- ebits = BN_num_bits(key->e); ++ RSA_get0_key(key, NULL, &key_e, NULL); ++ ebits = BN_num_bits(key_e); + ebytes = ebits / 8; + if (ebits % 8) + ebytes++; +@@ -179,11 +196,13 @@ + data[i++] = '\02'; + data[i++] = (nbits >> 8); + data[i++] = nbits; +- BN_bn2bin(key->n, &(data[i])); ++ RSA_get0_key(key, &key_n, NULL, NULL); ++ BN_bn2bin(key_n, &(data[i])); + i += nbytes; + data[i++] = (ebits >> 8); + data[i++] = ebits; +- BN_bn2bin(key->e, &(data[i])); ++ RSA_get0_key(key, NULL, &key_e, NULL); ++ BN_bn2bin(key_e, &(data[i])); + i += ebytes; + SHA1(data, len + 3, hash); + to_hex(sig, (char *)hash, ECRYPTFS_SIG_SIZE); +@@ -278,7 +297,9 @@ + BIO *in = NULL; + int rc; + ++ #if OPENSSL_VERSION_NUMBER < 0x10100000L + CRYPTO_malloc_init(); ++ #endif + ERR_load_crypto_strings(); + OpenSSL_add_all_algorithms(); + ENGINE_load_builtin_engines(); + +=== modified file 'src/key_mod/ecryptfs_key_mod_pkcs11_helper.c' +--- a/src/key_mod/ecryptfs_key_mod_pkcs11_helper.c 2013-10-25 19:45:09 +0000 ++++ b/src/key_mod/ecryptfs_key_mod_pkcs11_helper.c 2017-06-02 18:27:28 +0000 +@@ -41,6 +41,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -77,6 +78,19 @@ + typedef const unsigned char *__pkcs11_openssl_d2i_t; + #endif + ++#if OPENSSL_VERSION_NUMBER < 0x10100000L ++static void RSA_get0_key(const RSA *r, ++ const BIGNUM **n, const BIGNUM **e, const BIGNUM **d) ++{ ++ if (n != NULL) ++ *n = r->n; ++ if (e != NULL) ++ *e = r->e; ++ if (d != NULL) ++ *d = r->d; ++} ++#endif ++ + /** + * ecryptfs_pkcs11h_deserialize + * @pkcs11h_data: The deserialized version of the key module data; +@@ -282,7 +296,11 @@ + goto out; + } + ++ #if OPENSSL_VERSION_NUMBER < 0x10100000L + if (pubkey->type != EVP_PKEY_RSA) { ++ #else ++ if (EVP_PKEY_base_id(pubkey) != EVP_PKEY_RSA) { ++ #endif + syslog(LOG_ERR, "PKCS#11: Invalid public key algorithm"); + rc = -EIO; + goto out; +@@ -318,6 +336,7 @@ + int nbytes, ebytes; + char *hash = NULL; + char *data = NULL; ++ const BIGNUM *rsa_n, *rsa_e; + int rc; + + if ((rc = ecryptfs_pkcs11h_get_public_key(&rsa, blob))) { +@@ -331,11 +350,13 @@ + rc = -ENOMEM; + goto out; + } +- nbits = BN_num_bits(rsa->n); ++ RSA_get0_key(rsa, &rsa_n, NULL, NULL); ++ nbits = BN_num_bits(rsa_n); + nbytes = nbits / 8; + if (nbits % 8) + nbytes++; +- ebits = BN_num_bits(rsa->e); ++ RSA_get0_key(rsa, NULL, &rsa_e, NULL); ++ ebits = BN_num_bits(rsa_e); + ebytes = ebits / 8; + if (ebits % 8) + ebytes++; +@@ -358,11 +379,13 @@ + data[i++] = '\02'; + data[i++] = (char)(nbits >> 8); + data[i++] = (char)nbits; +- BN_bn2bin(rsa->n, &(data[i])); ++ RSA_get0_key(rsa, &rsa_n, NULL, NULL); ++ BN_bn2bin(rsa_n, &(data[i])); + i += nbytes; + data[i++] = (char)(ebits >> 8); + data[i++] = (char)ebits; +- BN_bn2bin(rsa->e, &(data[i])); ++ RSA_get0_key(rsa, NULL, &rsa_e, NULL); ++ BN_bn2bin(rsa_e, &(data[i])); + i += ebytes; + SHA1(data, len + 3, hash); + to_hex(sig, hash, ECRYPTFS_SIG_SIZE); + diff --git a/package/ecryptfs-utils/0003-fix-parallel-build-issue.patch b/package/ecryptfs-utils/0003-fix-parallel-build-issue.patch new file mode 100644 index 00000000..e2aa740d --- /dev/null +++ b/package/ecryptfs-utils/0003-fix-parallel-build-issue.patch @@ -0,0 +1,61 @@ +fix parallel build issue + +Build randomly fails since December 2017 on buildroot +(http://autobuild.buildroot.org/?reason=ecryptfs-utils-111): + +make[5]: Entering directory '/home/buildroot/autobuild/instance-2/output-1/build/ecryptfs-utils-111/src/utils' + /bin/mkdir -p '/home/buildroot/autobuild/instance-2/output-1/target/sbin' + /bin/bash ../../libtool --mode=install /usr/bin/install -c mount.ecryptfs umount.ecryptfs mount.ecryptfs_private '/home/buildroot/autobuild/instance-2/output-1/target/sbin' +libtool: install: /usr/bin/install -c mount.ecryptfs /home/buildroot/autobuild/instance-2/output-1/target/sbin/mount.ecryptfs +/usr/bin/install: cannot create regular file '/home/buildroot/autobuild/instance-2/output-1/target/sbin/mount.ecryptfs': File exists +Makefile:832: recipe for target 'install-rootsbinPROGRAMS' failed +make[5]: *** [install-rootsbinPROGRAMS] Error 1 + +As spotted by Thomas Petazzoni, build failure happens because of the +following line in src/utils/Makefile.am: + +install-exec-hook: install-rootsbinPROGRAMS + -rm -f "$(DESTDIR)/$(rootsbindir)/umount.ecryptfs_private" + $(LN_S) "mount.ecryptfs_private" "$(DESTDIR)/$(rootsbindir)/umount.ecryptfs_private" + +The install-exec-hook target should not have a dependency on +install-rootsbinPROGRAMS. + +From https://www.gnu.org/software/automake/manual/html_node/Extending.html#Extending: + +""" +In contrast, some rules also have a way to run another rule, called a +hook; hooks are always executed after the main rule’s work is done. The +hook is named after the principal target, with ‘-hook’ appended. The +targets allowing hooks are install-data, install-exec, uninstall, dist, +and distcheck. + +For instance, here is how to create a hard link to an installed program: + +install-exec-hook: + ln $(DESTDIR)$(bindir)/program$(EXEEXT) \ + $(DESTDIR)$(bindir)/proglink$(EXEEXT) + +""" + +So, they explicitly say that these hooks are run after the main rule +work is done, which means the dependency on install-rootsbinPROGRAMS is +not needed. And the example they use to illustrate is *exactly* the +situation of ecryptfs-utils: creating a link to a program that was +installed. + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://bugs.launchpad.net/ecryptfs/+bug/1857622] + +diff -Nuar ecryptfs-utils-111-orig/src/utils/Makefile.in ecryptfs-utils-111/src/utils/Makefile.in +--- ecryptfs-utils-111-orig/src/utils/Makefile.in 2019-12-26 15:14:16.656146065 +0100 ++++ ecryptfs-utils-111/src/utils/Makefile.in 2019-12-26 17:36:07.108496164 +0100 +@@ -1522,7 +1522,7 @@ + .PRECIOUS: Makefile + + +-install-exec-hook: install-rootsbinPROGRAMS ++install-exec-hook: + -rm -f "$(DESTDIR)/$(rootsbindir)/umount.ecryptfs_private" + $(LN_S) "mount.ecryptfs_private" "$(DESTDIR)/$(rootsbindir)/umount.ecryptfs_private" + diff --git a/package/ecryptfs-utils/Config.in b/package/ecryptfs-utils/Config.in new file mode 100644 index 00000000..0c39f48d --- /dev/null +++ b/package/ecryptfs-utils/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_ECRYPTFS_UTILS + bool "ecryptfs-utils" + depends on BR2_USE_WCHAR # gettext + depends on BR2_USE_MMU # keyutils + depends on BR2_TOOLCHAIN_HAS_THREADS # libnss -> libnspr + depends on BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT # libnss -> libnspr + depends on !BR2_MIPS_NABI32 # libnss + depends on !BR2_STATIC_LIBS # libnss, keyutils + select BR2_PACKAGE_KEYUTILS + select BR2_PACKAGE_LIBNSS + # runtime dependency only, some scripts are using the + # 'gettext' program to get translations + select BR2_PACKAGE_GETTEXT + # runtime dependency only + select BR2_PACKAGE_GETENT + help + eCryptfs is a POSIX-compliant enterprise cryptographic + filesystem for Linux. It is stacked on top of any other + Linux filesystem, it stores cryptographic metadata in the + header of each file written. + + The eCryptfs kernel module is available in all Linux kernels + since version 2.6.19. This package provides userspace + utilities needed to mount eCryptfs. + + Files are encrypted using a passphrase. Consider building + openssl for another method. + + http://ecryptfs.org + +comment "ecryptfs-utils needs a toolchain w/ threads, wchar, dynamic library" + depends on BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \ + BR2_STATIC_LIBS diff --git a/package/ecryptfs-utils/ecryptfs-utils.hash b/package/ecryptfs-utils/ecryptfs-utils.hash new file mode 100644 index 00000000..7d83e744 --- /dev/null +++ b/package/ecryptfs-utils/ecryptfs-utils.hash @@ -0,0 +1,5 @@ +# From https://launchpad.net/ecryptfs/trunk/111/+download/ecryptfs-utils_111.orig.tar.gz/+md5 +md5 83513228984f671930752c3518cac6fd ecryptfs-utils_111.orig.tar.gz +# Locally computed +sha256 112cb3e37e81a1ecd8e39516725dec0ce55c5f3df6284e0f4cc0f118750a987f ecryptfs-utils_111.orig.tar.gz +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING diff --git a/package/ecryptfs-utils/ecryptfs-utils.mk b/package/ecryptfs-utils/ecryptfs-utils.mk new file mode 100644 index 00000000..6eb3add9 --- /dev/null +++ b/package/ecryptfs-utils/ecryptfs-utils.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# ecryptfs-utils +# +################################################################################ + +ECRYPTFS_UTILS_VERSION = 111 +ECRYPTFS_UTILS_SOURCE = ecryptfs-utils_$(ECRYPTFS_UTILS_VERSION).orig.tar.gz +ECRYPTFS_UTILS_SITE = https://launchpad.net/ecryptfs/trunk/$(ECRYPTFS_UTILS_VERSION)/+download +ECRYPTFS_UTILS_LICENSE = GPL-2.0+ +ECRYPTFS_UTILS_LICENSE_FILES = COPYING +ECRYPTFS_UTILS_CPE_ID_VENDOR = ecryptfs + +ECRYPTFS_UTILS_DEPENDENCIES = host-pkgconf keyutils libnss host-intltool +ECRYPTFS_UTILS_CONF_OPTS = --disable-pywrap + +ECRYPTFS_UTILS_CONF_ENV = ac_cv_path_POD2MAN=true + +ifeq ($(BR2_PACKAGE_LIBGPGME),y) +ECRYPTFS_UTILS_CONF_OPTS += \ + --enable-gpg \ + --with-gpgme-prefix=$(STAGING_DIR)/usr +ECRYPTFS_UTILS_DEPENDENCIES += libgpgme +else +ECRYPTFS_UTILS_CONF_OPTS += --disable-gpg +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +ECRYPTFS_UTILS_CONF_OPTS += --enable-pam +ECRYPTFS_UTILS_DEPENDENCIES += linux-pam +else +ECRYPTFS_UTILS_CONF_OPTS += --disable-pam +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +ECRYPTFS_UTILS_CONF_OPTS += --enable-openssl +ECRYPTFS_UTILS_DEPENDENCIES += openssl + +ifeq ($(BR2_PACKAGE_PKCS11_HELPER),y) +ECRYPTFS_UTILS_CONF_OPTS += --enable-pkcs11-helper +ECRYPTFS_UTILS_DEPENDENCIES += pkcs11-helper +else +ECRYPTFS_UTILS_CONF_OPTS += --disable-pkcs11-helper +endif + +else +ECRYPTFS_UTILS_CONF_OPTS += --disable-openssl +endif + +$(eval $(autotools-package)) diff --git a/package/ed/Config.in b/package/ed/Config.in new file mode 100644 index 00000000..21ba79e1 --- /dev/null +++ b/package/ed/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_ED + bool "ed" + help + A line-oriented text editor. Used to create, display, modify, + and otherwise manipulate text files. Often used in scripts + rather than invoked directly. + + http://www.gnu.org/software/ed/ diff --git a/package/ed/ed.hash b/package/ed/ed.hash new file mode 100644 index 00000000..d1d99309 --- /dev/null +++ b/package/ed/ed.hash @@ -0,0 +1,4 @@ +# From https://lists.gnu.org/archive/html/bug-ed/2024-04/msg00003.html +sha256 65fec7318f48c2ca17f334ac0f4703defe62037bb13cc23920de077b5fa24523 ed-1.20.2.tar.lz +# Locally calculated +sha256 3d77c1a58fbde5ddba612d1fe09965e20a3804953eca12e8c1892298bb8a5eef COPYING diff --git a/package/ed/ed.mk b/package/ed/ed.mk new file mode 100644 index 00000000..70474435 --- /dev/null +++ b/package/ed/ed.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# ed +# +################################################################################ + +ED_VERSION = 1.20.2 +ED_SITE = $(BR2_GNU_MIRROR)/ed +ED_SOURCE = ed-$(ED_VERSION).tar.lz +ED_LICENSE = GPL-2.0+ +ED_LICENSE_FILES = COPYING +ED_CPE_ID_VENDOR = gnu + +define ED_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_MAKE_ENV) ./configure \ + --prefix=/usr \ + $(TARGET_CONFIGURE_OPTS) \ + ) +endef + +define ED_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define ED_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" install +endef + +$(eval $(generic-package)) diff --git a/package/edid-decode/Config.in b/package/edid-decode/Config.in new file mode 100644 index 00000000..5ebecd73 --- /dev/null +++ b/package/edid-decode/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_EDID_DECODE + bool "edid-decode" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11 + help + Decode EDID data in human-readable format. + + https://git.linuxtv.org/edid-decode.git/ + +comment "edid-decode needs a toolchain w/ C++, gcc >= 4.7" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 diff --git a/package/edid-decode/edid-decode.hash b/package/edid-decode/edid-decode.hash new file mode 100644 index 00000000..62e6b43a --- /dev/null +++ b/package/edid-decode/edid-decode.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 bc166bef5d0d56035b47a1513ed320c262901f97e488c83420760d7f56174dac edid-decode-6f117a8f8c0e76e85f599a8b05c21c5f51c5c3c1-git4.tar.gz +sha256 9bc7ab961e9a07dc84eaa0210af388def56d024357e79671fb89fe27d073eed7 LICENSE diff --git a/package/edid-decode/edid-decode.mk b/package/edid-decode/edid-decode.mk new file mode 100644 index 00000000..3e1d861f --- /dev/null +++ b/package/edid-decode/edid-decode.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# edid-decode +# +################################################################################ + +EDID_DECODE_VERSION = 6f117a8f8c0e76e85f599a8b05c21c5f51c5c3c1 +EDID_DECODE_SITE = https://git.linuxtv.org/edid-decode.git +EDID_DECODE_SITE_METHOD = git +EDID_DECODE_LICENSE = MIT +EDID_DECODE_LICENSE_FILES = LICENSE + +$(eval $(meson-package)) diff --git a/package/edk2-non-osi/Config.in b/package/edk2-non-osi/Config.in new file mode 100644 index 00000000..6c540c8a --- /dev/null +++ b/package/edk2-non-osi/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_EDK2_NON_OSI + bool + help + EDK2 description files for additional platforms, not + compatible with the normal licensing requirements. + The main EDK2 bootloader package will depend on these + description files while building firmware for some platforms. + + Only the Marvell Armada files are copied at this point. + + https://github.com/tianocore/edk2-non-osi diff --git a/package/edk2-non-osi/edk2-non-osi.hash b/package/edk2-non-osi/edk2-non-osi.hash new file mode 100644 index 00000000..e4e84f1c --- /dev/null +++ b/package/edk2-non-osi/edk2-non-osi.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 6fe059c4ee5d4fad6245a6eb53ed6b62b8890e9481cfb52c9fbdb83a5b2e0edb edk2-non-osi-8c09bd0955338db38813e0d8ae1faa634f545f73.tar.gz +sha256 38d73db2f9dfb32e1666d898cb9d7c1ccd78302dd9922d5fac4a9cf61fa872d9 Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0McBin.inf diff --git a/package/edk2-non-osi/edk2-non-osi.mk b/package/edk2-non-osi/edk2-non-osi.mk new file mode 100644 index 00000000..d787c882 --- /dev/null +++ b/package/edk2-non-osi/edk2-non-osi.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# edk2-non-osi +# +################################################################################ + +# Keep in sync with latest commit as of the release date for boot/edk2 +EDK2_NON_OSI_VERSION = 8c09bd0955338db38813e0d8ae1faa634f545f73 +EDK2_NON_OSI_SITE = $(call github,tianocore,edk2-non-osi,$(EDK2_NON_OSI_VERSION)) +EDK2_NON_OSI_INSTALL_TARGET = NO +EDK2_NON_OSI_INSTALL_STAGING = YES + +# Copy Marvell Armada files +EDK2_NON_OSI_LICENSE += BSD-2-Clause-Patent (Marvell Armada) +EDK2_NON_OSI_LICENSE_FILES += Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0McBin.inf +EDK2_NON_OSI_DIRS += Silicon/Marvell/Armada7k8k/DeviceTree + +# There is nothing to build for edk2-non-osi. All we need to do is to copy +# the selected description files to staging, for other packages to build with. +define EDK2_NON_OSI_INSTALL_STAGING_CMDS + $(foreach d,$(EDK2_NON_OSI_DIRS),\ + mkdir -p $(STAGING_DIR)/usr/share/edk2-non-osi/$(d) && \ + cp -rf $(@D)/$(d)/* $(STAGING_DIR)/usr/share/edk2-non-osi/$(d)/ + ) +endef + +$(eval $(generic-package)) diff --git a/package/edk2-platforms/Config.in b/package/edk2-platforms/Config.in new file mode 100644 index 00000000..17633c0f --- /dev/null +++ b/package/edk2-platforms/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_EDK2_PLATFORMS + bool + help + EDK2 description files for all supported platforms. + The main EDK2 bootloader package will depend on these + description files while building firmware for some platforms. + + https://github.com/tianocore/edk2-platforms diff --git a/package/edk2-platforms/edk2-platforms.hash b/package/edk2-platforms/edk2-platforms.hash new file mode 100644 index 00000000..4c74c7df --- /dev/null +++ b/package/edk2-platforms/edk2-platforms.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c240a8ec7816bc5963d881c84eb18d880e9269c117cfc46a3106b0c5e6e80c66 edk2-platforms-e509ac5a729ebe2a3bc905aed1df23226aca4dc9.tar.gz +sha256 50ce20c9cfdb0e19ee34fe0a51fc0afe961f743697b068359ab2f862b494df80 License.txt diff --git a/package/edk2-platforms/edk2-platforms.mk b/package/edk2-platforms/edk2-platforms.mk new file mode 100644 index 00000000..7bd86ff1 --- /dev/null +++ b/package/edk2-platforms/edk2-platforms.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# edk2-platforms +# +################################################################################ + +# Keep in sync with latest commit as of the release date for boot/edk2 +EDK2_PLATFORMS_VERSION = e509ac5a729ebe2a3bc905aed1df23226aca4dc9 +EDK2_PLATFORMS_SITE = $(call github,tianocore,edk2-platforms,$(EDK2_PLATFORMS_VERSION)) +EDK2_PLATFORMS_LICENSE = BSD-2-Clause-Patent +EDK2_PLATFORMS_LICENSE_FILES = License.txt +EDK2_PLATFORMS_INSTALL_TARGET = NO +EDK2_PLATFORMS_INSTALL_STAGING = YES + +# There is nothing to build for edk2-platforms. All we need to do is to copy +# all description files to staging, for other packages to build with. +define EDK2_PLATFORMS_INSTALL_STAGING_CMDS + mkdir -p $(STAGING_DIR)/usr/share/edk2-platforms + cp -rf $(@D)/*/ $(STAGING_DIR)/usr/share/edk2-platforms/ +endef + +$(eval $(generic-package)) diff --git a/package/efibootmgr/Config.in b/package/efibootmgr/Config.in new file mode 100644 index 00000000..5800e6c1 --- /dev/null +++ b/package/efibootmgr/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_EFIBOOTMGR + bool "efibootmgr" + depends on BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS # efivar + depends on !BR2_STATIC_LIBS # efivar + depends on BR2_TOOLCHAIN_HAS_THREADS # efivar + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 # efivar + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # efivar + depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS + select BR2_PACKAGE_EFIVAR + select BR2_PACKAGE_POPT + help + A Linux user-space application to modify the Intel Extensible + Firmware Interface (EFI) Boot Manager. This application can + create and destroy boot entries, change the boot order, change + the next running boot option, and more. + + https://github.com/rhboot/efibootmgr + +comment "efibootmgr needs a toolchain w/ dynamic library, threads, headers >= 3.12, gcc >= 4.9" + depends on BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS diff --git a/package/efibootmgr/efibootmgr.hash b/package/efibootmgr/efibootmgr.hash new file mode 100644 index 00000000..71a98263 --- /dev/null +++ b/package/efibootmgr/efibootmgr.hash @@ -0,0 +1,3 @@ +# locally computed hash +sha256 442867d12f8525034a404fc8af3036dba8e1fc970998af2486c3b940dfad0874 efibootmgr-18.tar.gz +sha256 dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa COPYING diff --git a/package/efibootmgr/efibootmgr.mk b/package/efibootmgr/efibootmgr.mk new file mode 100644 index 00000000..672a93c2 --- /dev/null +++ b/package/efibootmgr/efibootmgr.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# efibootmgr +# +################################################################################ + +EFIBOOTMGR_VERSION = 18 +EFIBOOTMGR_SITE = $(call github,rhboot,efibootmgr,$(EFIBOOTMGR_VERSION)) +EFIBOOTMGR_LICENSE = GPL-2.0+ +EFIBOOTMGR_LICENSE_FILES = COPYING +EFIBOOTMGR_DEPENDENCIES = host-pkgconf efivar popt $(TARGET_NLS_DEPENDENCIES) +EFIBOOTMGR_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) +EFIBOOTMGR_MAKE_ARGS = EFIDIR=buildroot + +define EFIBOOTMGR_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \ + LDFLAGS="$(EFIBOOTMGR_LDFLAGS)" $(MAKE1) -C $(@D) \ + $(EFIBOOTMGR_MAKE_ARGS) +endef + +define EFIBOOTMGR_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(EFIBOOTMGR_MAKE_ARGS) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/efivar/0001-efivar-isolate-makeguids-host-tool-build.patch b/package/efivar/0001-efivar-isolate-makeguids-host-tool-build.patch new file mode 100644 index 00000000..aad207d8 --- /dev/null +++ b/package/efivar/0001-efivar-isolate-makeguids-host-tool-build.patch @@ -0,0 +1,51 @@ +From e1c3734bab27fd850b4ac6681d219ceaf0637616 Mon Sep 17 00:00:00 2001 +From: Erico Nunes +Date: Mon, 3 Oct 2022 18:16:55 +0200 +Subject: [PATCH] efivar: isolate makeguids host tool build + +efivar build includes a 'makeguids' host tool which is normally built by +distributions during the package build step. This is unfortunately not +written with cross-compilation in mind, since it needs to build for the +host architecture, including the build of object files which it then +assumes can be linked into the target library. +To make the packaging process simpler for a cross-compilation system +like Buildroot, separate the 'makeguids' tool build to an explicit make +target and remove target build dependencies from it. +This way, Buildroot can build the tool separately in a host build step +and the target build step can then be straightforward. + +Upstream: Not applicable (does not support cross compilation) +Signed-off-by: Julien Olivain +[Julien: rebased patch to version 39] +Signed-off-by: Erico Nunes +--- + src/Makefile | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/src/Makefile b/src/Makefile +index 6fc2a62..7fa63c6 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -70,7 +70,6 @@ makeguids : LDFLAGS=$(HOST_LDFLAGS) + makeguids : CCLDFLAGS=$(HOST_CCLDFLAGS) + makeguids : $(MAKEGUIDS_OBJECTS) + +-$(MAKEGUIDS_OUTPUT) : makeguids + $(MAKEGUIDS_OUTPUT) : guids.txt + @set -e ; \ + missing=no ; \ +@@ -83,9 +82,9 @@ $(MAKEGUIDS_OUTPUT) : guids.txt + if [ "$${missing}" != "no" ]; then \ + exit 1 ; \ + fi +- ./makeguids guids.txt guid-symbols.c include/efivar/efivar-guids.h ++ makeguids guids.txt guid-symbols.c include/efivar/efivar-guids.h + +-prep : makeguids $(GENERATED_SOURCES) ++prep : $(GENERATED_SOURCES) + + $(LIBEFIVAR_OBJECTS) $(LIBEFIBOOT_OBJECTS) : include/efivar/efivar-guids.h + +-- +2.44.0 + diff --git a/package/efivar/Config.in b/package/efivar/Config.in new file mode 100644 index 00000000..0a36335c --- /dev/null +++ b/package/efivar/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS + bool + default y + depends on BR2_arm || BR2_aarch64 || BR2_i386 || BR2_x86_64 \ + || BR2_powerpc64le || BR2_mipsel || BR2_mips64el \ + || BR2_RISCV_64 + +config BR2_PACKAGE_EFIVAR + bool "efivar" + depends on BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 # linux/nvme.h + depends on BR2_TOOLCHAIN_HAS_THREADS + # linux/nvme.h has been renamed to linux/nvme_ioctl.h since 4.4, + # and the efivar source handles that situation. However, some + # Sourcery CodeBench toolchains use 4.4 kernel headers but they + # don't have that header file renamed, and that is causing build + # failures. So, prevent this package to be built using those + # toolchains. + depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + help + Tools and libraries to manipulate EFI variables + + https://github.com/rhboot/efivar + +comment "efivar needs a toolchain w/ dynamic library, threads, headers >= 3.12, gcc >= 4.9" + depends on BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS diff --git a/package/efivar/efivar.hash b/package/efivar/efivar.hash new file mode 100644 index 00000000..bef096bd --- /dev/null +++ b/package/efivar/efivar.hash @@ -0,0 +1,3 @@ +# locally computed hash +sha256 c9edd15f2eeeea63232f3e669a48e992c7be9aff57ee22672ac31f5eca1609a6 efivar-39.tar.gz +sha256 91df770634adc2755e78cae33a0d01e702ce2f69046408ae93d0d934ff29691b COPYING diff --git a/package/efivar/efivar.mk b/package/efivar/efivar.mk new file mode 100644 index 00000000..6c3b5783 --- /dev/null +++ b/package/efivar/efivar.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# efivar +# +################################################################################ + +EFIVAR_VERSION = 39 +EFIVAR_SITE = $(call github,rhboot,efivar,$(EFIVAR_VERSION)) +EFIVAR_LICENSE = LGPL-2.1 +EFIVAR_LICENSE_FILES = COPYING +EFIVAR_INSTALL_STAGING = YES +EFIVAR_DEPENDENCIES = host-efivar + +# -fPIC is needed at least on MIPS, otherwise fails to build shared +# -library. +# SUBDIRS is redefined so it skips building docs. +# LD_DASH_T is redefined as the linker detection does not seem to +# work properly for cross-compilation. +EFIVAR_MAKE_OPTS = \ + libdir=/usr/lib \ + LDFLAGS="$(TARGET_LDFLAGS) -fPIC" \ + TOPDIR=$(@D) \ + SUBDIRS=src \ + LD_DASH_T=-T + +define HOST_EFIVAR_BUILD_CMDS + # makeguids is an internal host tool and must be built separately with + # $(HOST_CC), otherwise it gets cross-built. + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) \ + CFLAGS="$(HOST_CFLAGS) -std=gnu99" \ + TOPDIR=$(@D) CFLAGS_GCC= \ + $(MAKE) -C $(@D)/src makeguids +endef + +define EFIVAR_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D) \ + $(EFIVAR_MAKE_OPTS) \ + all +endef + +define HOST_EFIVAR_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/src/makeguids $(HOST_DIR)/bin/makeguids +endef + +define EFIVAR_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D) \ + $(EFIVAR_MAKE_OPTS) \ + DESTDIR="$(STAGING_DIR)" \ + install +endef + +define EFIVAR_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D) \ + $(EFIVAR_MAKE_OPTS) \ + DESTDIR="$(TARGET_DIR)" \ + install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/efl/0001-ecore_evas-engines-drm-meson.build-use-gl_deps-as-en.patch b/package/efl/0001-ecore_evas-engines-drm-meson.build-use-gl_deps-as-en.patch new file mode 100644 index 00000000..8fa4658f --- /dev/null +++ b/package/efl/0001-ecore_evas-engines-drm-meson.build-use-gl_deps-as-en.patch @@ -0,0 +1,36 @@ +From 00833baac6935bd1e3e9856211bc165c5b02a7bd Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 1 Aug 2020 02:25:47 +0200 +Subject: [PATCH] ecore_evas/engines/drm/meson.build: use "gl_deps" as engine + dependencies + +Meson trigger an error since "engine_gl_drm" variable doesn't exist. + +src/modules/ecore_evas/engines/drm/meson.build:10:2: ERROR: Unknown variable "engine_gl_drm". + +Instead use "gl_deps" as engine dependencies. + +Upstream status: +https://sourceforge.net/p/enlightenment/mailman/message/37075016/ + +Signed-off-by: Romain Naour +--- + src/modules/ecore_evas/engines/drm/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/modules/ecore_evas/engines/drm/meson.build b/src/modules/ecore_evas/engines/drm/meson.build +index 58071010d0..0741d7fccd 100644 +--- a/src/modules/ecore_evas/engines/drm/meson.build ++++ b/src/modules/ecore_evas/engines/drm/meson.build +@@ -3,7 +3,7 @@ engine_deps = [ecore_drm2, ecore_input, eeze, elput, libdrm, engine_drm] + + if get_option('opengl') != 'none' + config_h.set('BUILD_ECORE_EVAS_GL_DRM', '1') +- engine_deps += [engine_gl_drm] ++ engine_deps += [gl_deps] + endif + + engine_include_dir += include_directories(join_paths('..', '..', '..', 'evas', 'engines', 'drm')) +-- +2.31.1 + diff --git a/package/efl/0002-ecore_evas-engines-drm-meson.build-fix-gl_drm-includ.patch b/package/efl/0002-ecore_evas-engines-drm-meson.build-fix-gl_drm-includ.patch new file mode 100644 index 00000000..3465fc50 --- /dev/null +++ b/package/efl/0002-ecore_evas-engines-drm-meson.build-fix-gl_drm-includ.patch @@ -0,0 +1,37 @@ +From a21e71cc2284a19a34c913aff757e656e3a8c14a Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 1 Aug 2020 01:01:00 +0200 +Subject: [PATCH] ecore_evas/engines/drm/meson.build: fix "gl_drm" include + directory + +The Evas_Engine_GL_Drm.h file is in "gl_drm" directory, not "drm". + +../src/modules/ecore_evas/engines/drm/ecore_evas_drm.c:23:11: fatal error: Evas_Engine_GL_Drm.h: No such file or directory + 23 | # include + | ^~~~~~~~~~~~~~~~~~~~~~ +compilation terminated. + +Upstream status: +https://sourceforge.net/p/enlightenment/mailman/message/37075004/ + +Signed-off-by: Romain Naour +--- + src/modules/ecore_evas/engines/drm/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/modules/ecore_evas/engines/drm/meson.build b/src/modules/ecore_evas/engines/drm/meson.build +index 0741d7fccd..edda1abd71 100644 +--- a/src/modules/ecore_evas/engines/drm/meson.build ++++ b/src/modules/ecore_evas/engines/drm/meson.build +@@ -6,7 +6,7 @@ if get_option('opengl') != 'none' + engine_deps += [gl_deps] + endif + +-engine_include_dir += include_directories(join_paths('..', '..', '..', 'evas', 'engines', 'drm')) ++engine_include_dir += include_directories(join_paths('..', '..', '..', 'evas', 'engines', 'gl_drm')) + + shared_module(mod_full_name, engine_src, + include_directories : config_dir + [engine_include_dir], +-- +2.31.1 + diff --git a/package/efl/0003-ecore_fb-fix-build-with-tslib.patch b/package/efl/0003-ecore_fb-fix-build-with-tslib.patch new file mode 100644 index 00000000..2756e093 --- /dev/null +++ b/package/efl/0003-ecore_fb-fix-build-with-tslib.patch @@ -0,0 +1,35 @@ +From 836b13de08980d89fc13690284efd355c1b43218 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 10 Jul 2021 22:38:03 +0200 +Subject: [PATCH] ecore_fb: fix build with tslib + +Build with tslib is broken since version 1.25.0 and +https://git.enlightenment.org/core/efl.git/commit/?id=8e3606698eb439eecd7302a885504365aca7e564: + +/data/buildroot-autobuilder/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/powerpc-buildroot-linux-uclibc/9.3.0/../../../../powerpc-buildroot-linux-uclibc/bin/ld: src/lib/ecore_fb/libecore_fb.so.1.25.1.p/ecore_fb_ts.c.o: in function `_ecore_fb_ts_fd_handler': +ecore_fb_ts.c:(.text+0x4c): undefined reference to `ts_read_raw' + +Fixes: + - http://autobuild.buildroot.org/results/fa111306b95316eed54771550474dae804fa261e + +Signed-off-by: Fabrice Fontaine +--- + src/lib/ecore_fb/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/lib/ecore_fb/meson.build b/src/lib/ecore_fb/meson.build +index 6d50e0f146..7c7f6786c3 100644 +--- a/src/lib/ecore_fb/meson.build ++++ b/src/lib/ecore_fb/meson.build +@@ -22,7 +22,7 @@ ecore_fb_src = files([ + ecore_fb_lib = library('ecore_fb', + ecore_fb_src, pub_eo_file_target, + c_args : package_c_args, +- dependencies: ecore_fb_pub_deps + ecore_fb_deps, ++ dependencies: ecore_fb_pub_deps + ecore_fb_deps + ecore_fb_ext_deps, + include_directories : config_dir, + install: true, + version : meson.project_version() +-- +2.31.1 + diff --git a/package/efl/Config.in b/package/efl/Config.in new file mode 100644 index 00000000..c4f82b92 --- /dev/null +++ b/package/efl/Config.in @@ -0,0 +1,295 @@ +config BR2_PACKAGE_EFL + bool "efl" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-efl + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # untested without threads + depends on BR2_USE_MMU + depends on BR2_USE_WCHAR # use wchar_t + depends on !BR2_STATIC_LIBS # dlfcn.h + # https://phab.enlightenment.org/T2728 + depends on BR2_PACKAGE_LUAJIT + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_GIFLIB + select BR2_PACKAGE_JPEG # Emile needs libjpeg + select BR2_PACKAGE_LIBCURL # Ecore_con_url, runtime dependency + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_OPENSSL if !(BR2_PACKAGE_GNUTLS && BR2_PACKAGE_LIBGCRYPT) + select BR2_PACKAGE_LZ4 + select BR2_PACKAGE_ZLIB + help + Enlightenment Foundation Libraries + + https://www.enlightenment.org/ + +if BR2_PACKAGE_EFL + +config BR2_PACKAGE_EFL_BULLET + bool "Enable bullet support" + select BR2_PACKAGE_BULLET + help + If you have chosen to disable physics support, this disables + lots of core functionality and is effectively never + tested. You are going to find features that suddenly don't + work and as a result cause a series of breakages. This is + simply not tested so you are on your own in terms of + ensuring everything works if you do this. + +config BR2_PACKAGE_EFL_EEZE + bool "Enable eeze (udev) support (recommended)" + default y + depends on BR2_PACKAGE_HAS_UDEV # libudev + help + Eeze is EFL's hardware abstraction layer on top of udev. + Having it off will disable some hardware detection, such as + 'drm' graphics engine or 'elput', as well as mounting + removable media. + +comment "eeze needs udev /dev management" + depends on !BR2_PACKAGE_HAS_UDEV + +config BR2_PACKAGE_EFL_FONTCONFIG + bool "Enable fontconfig support (recommended)" + default y + select BR2_PACKAGE_FONTCONFIG + help + If fontconfig is disabled, this is going to make general + font searching not work, and only some very direct 'load + /path/file.ttf' will work alongside some old-school ttf file + path searching. This is very likely not what you want, so + highly reconsider turning fontconfig off. Having it off will + lead to visual problems like missing text in many UI areas + etc... + +config BR2_PACKAGE_EFL_GSTREAMER1 + bool "Enable gstreamer1 support (recommended)" + default y + select BR2_PACKAGE_GSTREAMER1 + select BR2_PACKAGE_GST1_PLUGINS_BASE + help + If Gstreamer 1.x support is disabled, it will heavily limit + your media support options and render some functionality as + useless, leading to visible application bugs. + +config BR2_PACKAGE_EFL_LIBFRIBIDI + bool "Enable libfribidi support (recommended)" + default y + select BR2_PACKAGE_LIBFRIBIDI + help + Fribidi is used for handling right-to-left text (like + Arabic, Hebrew, Farsi, Persian etc.) and is very likely not + a feature you want to disable unless you know for absolute + certain you will never encounter and have to display such + scripts. Also note that we don't test with fribidi disabled + so you may also trigger code paths with bugs that are never + normally used. + +config BR2_PACKAGE_EFL_ELPUT + bool "Enable elput support (recommended)" + default y + depends on BR2_PACKAGE_HAS_UDEV # libinput, efl-eeze + select BR2_PACKAGE_EFL_EEZE + select BR2_PACKAGE_LIBINPUT + select BR2_PACKAGE_LIBXKBCOMMON + help + Eplut is used to support gesture recognition. + +comment "elput needs udev /dev management" + depends on !BR2_PACKAGE_HAS_UDEV + +config BR2_PACKAGE_EFL_LIBSNDFILE + bool "Enable libsndfile support (recommended)" + default y + select BR2_PACKAGE_LIBSNDFILE + help + If you disabled audio support in Ecore, this is not tested + and may create bugs for you due to it creating untested code + paths. Reconsider disabling audio. + +config BR2_PACKAGE_EFL_PULSEAUDIO + bool "Enable pulseaudio support (recommended)" + default y + depends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU + select BR2_PACKAGE_PULSEAUDIO + help + The only audio output method supported by Ecore right now is + via Pulseaudio. You have disabled that and likely have + broken a whole bunch of things in the process. Reconsider + your configure options. + + NOTE: multisense support is automatically enabled with + pulseaudio. + +config BR2_PACKAGE_EFL_UTIL_LINUX_LIBMOUNT + bool "Enable libmount support (recommended)" + default y + depends on BR2_PACKAGE_HAS_UDEV # efl-eeze + select BR2_PACKAGE_EFL_EEZE + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + # libblkid is part of required tools, see EFL's README. + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + help + Libmount is used heavily inside Eeze for support of removable + devices etc... and disabling this will hurt support for + Enlightenment and its filemanager. + +comment "efl's libmount support needs udev /dev management " + depends on !BR2_PACKAGE_HAS_UDEV + +config BR2_PACKAGE_EFL_HAS_RECOMMENDED_CONFIG + bool + default y if BR2_PACKAGE_EFL_EEZE && \ + BR2_PACKAGE_EFL_FONTCONFIG && \ + BR2_PACKAGE_EFL_GSTREAMER1 && \ + BR2_PACKAGE_EFL_LIBFRIBIDI && \ + BR2_PACKAGE_EFL_LIBSNDFILE && \ + BR2_PACKAGE_EFL_PULSEAUDIO && \ + BR2_PACKAGE_EFL_UTIL_LINUX_LIBMOUNT + +comment "Warning: one of the recommended option for EFL is not enabled" + depends on !BR2_PACKAGE_EFL_HAS_RECOMMENDED_CONFIG + +config BR2_PACKAGE_EFL_EOLIAN_CPP + bool "Enable Eolian C++ bindings" + help + Eolian is an EO object parser and code generator. + With this option enabled Eolian will handle automatic + generation of EFL bindings for the C++11 language. + +comment "libecore video support" + +config BR2_PACKAGE_EFL_FB + bool "FB support" + +config BR2_PACKAGE_EFL_X_XLIB + bool "X11 support (xlib)" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE + select BR2_PACKAGE_XLIB_LIBXCURSOR + select BR2_PACKAGE_XLIB_LIBXDAMAGE + select BR2_PACKAGE_XLIB_LIBXINERAMA + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XLIB_LIBXSCRNSAVER + select BR2_PACKAGE_XLIB_LIBXTST + select BR2_PACKAGE_XORGPROTO + +config BR2_PACKAGE_EFL_WAYLAND + bool "Wayland support" + depends on BR2_PACKAGE_WAYLAND + depends on BR2_TOOLCHAIN_HAS_THREADS # Evas DRM Engine -> libdrm + depends on BR2_PACKAGE_MESA3D_OPENGL_EGL # Evas DRM Engine + depends on BR2_PACKAGE_HAS_UDEV # efl drm, efl-eeze + depends on BR2_PACKAGE_EFL_OPENGLES # OpenGL ES with EGL support only + depends on BR2_ENABLE_LOCALE # efl-drm <- efl-elput <- linput + select BR2_PACKAGE_EFL_DRM + select BR2_PACKAGE_WAYLAND_PROTOCOLS + +comment "Wayland support needs udev /dev management, OpenGL ES w/ EGL, threads, locales" + depends on BR2_PACKAGE_WAYLAND + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_PACKAGE_MESA3D_OPENGL_EGL \ + || !BR2_PACKAGE_EFL_OPENGLES || !BR2_PACKAGE_HAS_UDEV \ + || !BR2_ENABLE_LOCALE + +choice + bool "OpenGL support" + help + libevas can be configured to use HW acceleration with OpenGL + or OpenGL ES. + +config BR2_PACKAGE_EFL_OPENGL + bool "OpenGL" + depends on BR2_PACKAGE_HAS_LIBGL + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_EFL_X_XLIB + +comment "OpenGL support needs X11 and an OpenGL provider" + depends on !BR2_PACKAGE_HAS_LIBGL || !BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_EFL_OPENGLES + bool "OpenGL ES (w/ EGL)" + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_HAS_LIBGLES + +comment "OpenGL ES support needs an OpenGL ES w/ EGL provider" + depends on !BR2_PACKAGE_HAS_LIBGLES || !BR2_PACKAGE_HAS_LIBEGL + +config BR2_PACKAGE_EFL_OPENGL_NONE + bool "none" + +endchoice # OpenGL support + +config BR2_PACKAGE_EFL_DRM + bool "Evas DRM Engine" + depends on BR2_PACKAGE_HAS_UDEV # efl-elput, efl-eeze + depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm + depends on BR2_PACKAGE_MESA3D_OPENGL_EGL # require libgbm from mesa3d + select BR2_PACKAGE_EFL_ELPUT + select BR2_PACKAGE_LIBDRM + help + This option enable building support for the Evas DRM Engine. + + Since efl 1.23.x, the drm option enable the elput library + which is an efl abstraction for the libinput library which + can be used by various other subsystems (ecore_fb, ecore_drm, + etc) to handle interfacing with libinput without having to + duplicate the code in each subsystem. + +comment "Evas DRM Engine needs udev /dev management, mesa3d w/ EGL support, threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_PACKAGE_MESA3D_OPENGL_EGL \ + || !BR2_PACKAGE_HAS_UDEV + +comment "libevas loaders" + +config BR2_PACKAGE_EFL_JPEG + bool "libevas jpeg loader" + select BR2_PACKAGE_OPENJPEG + help + This enables the loader code that loads jpeg files using + libjpeg. + +config BR2_PACKAGE_EFL_TIFF + bool "libevas tiff loader" + select BR2_PACKAGE_TIFF + help + This enables the loader code that loads tiff files. + +config BR2_PACKAGE_EFL_WEBP + bool "libevas webp image loader" + select BR2_PACKAGE_WEBP + select BR2_PACKAGE_WEBP_DEMUX + help + This enables the loader code that loads images using WebP. + +config BR2_PACKAGE_EFL_LIBRAW + bool "libraw loader" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libraw + select BR2_PACKAGE_LIBRAW + help + This option enables the Evas generic Libraw loader + +config BR2_PACKAGE_EFL_SVG + bool "SVG loader" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # librsvg + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # librsvg -> pango -> harfbuzz + select BR2_PACKAGE_LIBRSVG + select BR2_PACKAGE_CAIRO + help + This option enables the Evas generic SVG loader + +endif # BR2_PACKAGE_EFL + +comment "efl needs a toolchain w/ C++, dynamic library, gcc >= 4.9, host gcc >= 4.9, threads, wchar" + depends on !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 \ + || !BR2_HOST_GCC_AT_LEAST_4_9 || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR + depends on BR2_USE_MMU diff --git a/package/efl/efl.hash b/package/efl/efl.hash new file mode 100644 index 00000000..72ff3199 --- /dev/null +++ b/package/efl/efl.hash @@ -0,0 +1,13 @@ +# From https://www.enlightenment.org/news/2022-09-16-efl-1.26.3 +sha256 d9f83aa0fd9334f44deeb4e4952dc0e5144683afac786feebce6030951617d15 efl-1.26.3.tar.xz + +sha256 d666b6b2df9f5b791f85c299c65516cb55528b02a807603de246f65f4918ae22 COMPLIANCE +sha256 5bceb52d65debe420bc520f2992807740dc928b7fdc3c2e9a74b5889177ddf4c COPYING +sha256 e5133b4034a4749a781e2220ffb230b60a282b88861f1124d69a58abd5143994 COPYING.images +sha256 c95bae1d1ce0235ecccd3560b772ec1efb97f348a79f0fbe0a634f0c2ccefe2c licenses/COPYING.ASL +sha256 af4ffe7ed1795a6e9cd3b3ce8747fdc45da449ff58cf35b8027c0699a66fd5cf licenses/COPYING.BSD +sha256 e60d07dfb2c5264f9f405fa52bf0d4f85429dd9ae1bc2ffcff8af1924ef720d1 licenses/COPYING.FTL +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 licenses/COPYING.GPL +sha256 ae2d99bf2a8e8310281bdbe5e8b78cbe5e89bfead8c01e67a8c68b530efcf25a licenses/COPYING.LGPL +sha256 2996a1c43ee757f9c997a829d82bdd584052323e73cf02ff8126c6fbd95c2d87 licenses/COPYING.NGINX-MIT +sha256 d847c749aa38b8d864665fc4e5c80e2f2a505e414fafe9712e85b5154e908218 licenses/COPYING.SMALL diff --git a/package/efl/efl.mk b/package/efl/efl.mk new file mode 100644 index 00000000..29b3b195 --- /dev/null +++ b/package/efl/efl.mk @@ -0,0 +1,374 @@ +################################################################################ +# +# efl +# +################################################################################ + +EFL_VERSION = 1.26.3 +EFL_SOURCE = efl-$(EFL_VERSION).tar.xz +EFL_SITE = https://download.enlightenment.org/rel/libs/efl +EFL_LICENSE = BSD-2-Clause, LGPL-2.1+, GPL-2.0+, FTL, MIT +EFL_LICENSE_FILES = \ + COMPLIANCE \ + COPYING \ + COPYING.images \ + licenses/COPYING.ASL \ + licenses/COPYING.BSD \ + licenses/COPYING.FTL \ + licenses/COPYING.GPL \ + licenses/COPYING.LGPL \ + licenses/COPYING.NGINX-MIT \ + licenses/COPYING.SMALL + +EFL_INSTALL_STAGING = YES + +EFL_DEPENDENCIES = host-pkgconf host-efl host-luajit dbus freetype \ + giflib jpeg libpng luajit lz4 zlib $(TARGET_NLS_DEPENDENCIES) + +# Configure options: +# elua=true: build elua for the target. +# sdl=false: disable sdl2 support. +# embedded-lz4=false: use liblz4 from lz4 package. +# native-arch-optimization=false: avoid optimization flags added by meson. +# network-backend=none: disable connman networkmanager. +EFL_CONF_OPTS = \ + -Davahi=false \ + -Dbuild-examples=false \ + -Dbuild-tests=false \ + -Ddotnet=false \ + -Decore-imf-loaders-disabler=ibus,scim,xim \ + -Delua=true \ + -Dembedded-lz4=false \ + -Dlua-interpreter=luajit \ + -Dnative-arch-optimization=false \ + -Dnetwork-backend=none \ + -Dpixman=false \ + -Dsdl=false \ + -Dvnc-server=false + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +EFL_CONF_OPTS += -Dnls=true +else +EFL_CONF_OPTS += -Dnls=false +endif + +EFL_BINDINGS = lua + +ifeq ($(BR2_PACKAGE_EFL_EOLIAN_CPP),y) +EFL_BINDINGS += cxx +endif + +EFL_CONF_OPTS += -Dbindings=$(subst $(space),$(comma),$(EFL_BINDINGS)) + +ifeq ($(BR2_PACKAGE_EFL_EEZE),y) +EFL_DEPENDENCIES += udev +EFL_CONF_OPTS += -Deeze=true +else +EFL_CONF_OPTS += -Deeze=false +endif + +ifeq ($(BR2_PACKAGE_EFL_ELPUT),y) +EFL_DEPENDENCIES += libinput libxkbcommon +EFL_CONF_OPTS += -Dinput=true +else +EFL_CONF_OPTS += -Dinput=false +endif + +ifeq ($(BR2_PACKAGE_EFL_UTIL_LINUX_LIBMOUNT),y) +EFL_DEPENDENCIES += util-linux +EFL_CONF_OPTS += -Dlibmount=true +else +EFL_CONF_OPTS += -Dlibmount=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +EFL_CONF_OPTS += -Dsystemd=true +EFL_DEPENDENCIES += systemd +else +EFL_CONF_OPTS += -Dsystemd=false +endif + +ifeq ($(BR2_PACKAGE_FONTCONFIG),y) +EFL_CONF_OPTS += -Dfontconfig=true +EFL_DEPENDENCIES += fontconfig +else +EFL_CONF_OPTS += -Dfontconfig=false +endif + +ifeq ($(BR2_PACKAGE_LIBFRIBIDI),y) +EFL_CONF_OPTS += -Dfribidi=true +EFL_DEPENDENCIES += libfribidi +else +EFL_CONF_OPTS += -Dfribidi=false +endif + +ifeq ($(BR2_PACKAGE_GSTREAMER1)$(BR2_PACKAGE_GST1_PLUGINS_BASE),yy) +EFL_CONF_OPTS += -Dgstreamer=true +EFL_DEPENDENCIES += gstreamer1 gst1-plugins-base +else +EFL_CONF_OPTS += -Dgstreamer=false +endif + +ifeq ($(BR2_PACKAGE_BULLET),y) +EFL_CONF_OPTS += -Dphysics=true +EFL_DEPENDENCIES += bullet +else +EFL_CONF_OPTS += -Dphysics=false +endif + +ifeq ($(BR2_PACKAGE_LIBSNDFILE),y) +EFL_CONF_OPTS += -Daudio=true +EFL_DEPENDENCIES += libsndfile +else +EFL_CONF_OPTS += -Daudio=false +endif + +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +EFL_CONF_OPTS += -Dpulseaudio=true +EFL_DEPENDENCIES += pulseaudio +else +EFL_CONF_OPTS += -Dpulseaudio=false +endif + +ifeq ($(BR2_PACKAGE_HARFBUZZ),y) +EFL_DEPENDENCIES += harfbuzz +EFL_CONF_OPTS += -Dharfbuzz=true +else +EFL_CONF_OPTS += -Dharfbuzz=false +endif + +ifeq ($(BR2_PACKAGE_TSLIB),y) +EFL_DEPENDENCIES += tslib +EFL_CONF_OPTS += -Dtslib=true +else +EFL_CONF_OPTS += -Dtslib=false +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +EFL_DEPENDENCIES += libglib2 +EFL_CONF_OPTS += -Dglib=true +else +EFL_CONF_OPTS += -Dglib=false +endif + +# Prefer openssl (the default) over gnutls. +ifeq ($(BR2_PACKAGE_OPENSSL),y) +EFL_DEPENDENCIES += openssl +EFL_CONF_OPTS += -Dcrypto=openssl +else +EFL_DEPENDENCIES += gnutls libgcrypt +EFL_CONF_OPTS += -Dcrypto=gnutls +endif + +ifeq ($(BR2_PACKAGE_EFL_FB),y) +EFL_CONF_OPTS += -Dfb=true +else +EFL_CONF_OPTS += -Dfb=false +endif + +ifeq ($(BR2_PACKAGE_EFL_X_XLIB),y) +EFL_CONF_OPTS += -Dx11=true \ + -Dxinput2=true \ + -Dxinput22=true + +EFL_DEPENDENCIES += \ + xlib_libX11 \ + xlib_libXcomposite \ + xlib_libXcursor \ + xlib_libXdamage \ + xlib_libXext \ + xlib_libXinerama \ + xlib_libXrandr \ + xlib_libXrender \ + xlib_libXScrnSaver \ + xlib_libXtst +else +EFL_CONF_OPTS += -Dx11=false +endif + +ifeq ($(BR2_PACKAGE_EFL_OPENGL),y) +EFL_CONF_OPTS += -Dopengl=full +EFL_DEPENDENCIES += libgl +# OpenGL ES requires EGL +else ifeq ($(BR2_PACKAGE_EFL_OPENGLES),y) +EFL_CONF_OPTS += -Dopengl=es-egl +EFL_DEPENDENCIES += libegl libgles +else ifeq ($(BR2_PACKAGE_EFL_OPENGL_NONE),y) +EFL_CONF_OPTS += -Dopengl=none +endif + +ifeq ($(BR2_PACKAGE_EFL_DRM),y) +EFL_CONF_OPTS += -Ddrm=true +EFL_DEPENDENCIES += libdrm libegl mesa3d +else +EFL_CONF_OPTS += -Ddrm=false +endif + +ifeq ($(BR2_PACKAGE_EFL_WAYLAND),y) +EFL_DEPENDENCIES += wayland wayland-protocols +EFL_CONF_OPTS += -Dwl=true +else +EFL_CONF_OPTS += -Dwl=false +endif + +# json evas loader is disabled by default by upstream. +# Disable libspectre (ps). +# Keep all other evas loader enabled or handled below. +EFL_EVAS_LOADERS_DISABLER = avif gst heif json ps + +# efl already depends on jpeg. +ifeq ($(BR2_PACKAGE_EFL_JPEG),y) +EFL_DEPENDENCIES += openjpeg +else +EFL_EVAS_LOADERS_DISABLER += jp2k +endif + +ifeq ($(BR2_PACKAGE_EFL_TIFF),y) +EFL_DEPENDENCIES += tiff +else +EFL_EVAS_LOADERS_DISABLER += tiff +endif + +ifeq ($(BR2_PACKAGE_EFL_WEBP),y) +EFL_DEPENDENCIES += webp +else +EFL_EVAS_LOADERS_DISABLER += webp +endif + +ifeq ($(BR2_PACKAGE_POPPLER),y) +# poppler needs c++11 +EFL_CONF_ENV += CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11" +EFL_DEPENDENCIES += poppler +else +EFL_EVAS_LOADERS_DISABLER += pdf +endif + +ifeq ($(BR2_PACKAGE_EFL_LIBRAW),y) +EFL_DEPENDENCIES += libraw +else +EFL_EVAS_LOADERS_DISABLER += raw +endif + +ifeq ($(BR2_PACKAGE_EFL_SVG),y) +EFL_DEPENDENCIES += librsvg cairo +else +EFL_EVAS_LOADERS_DISABLER += rsvg +endif + +EFL_CONF_OPTS += -Devas-loaders-disabler=$(subst $(space),$(comma),$(EFL_EVAS_LOADERS_DISABLER)) + +ifeq ($(BR2_PACKAGE_UPOWER),) +# upower ecore system module is only useful if upower +# dbus service is available. +# It's not essential, only used to notify applications +# of power state, such as low battery or AC power, so +# they can adapt their power consumption. +define EFL_HOOK_REMOVE_UPOWER + rm -fr $(TARGET_DIR)/usr/lib/ecore/system/upower +endef +EFL_POST_INSTALL_TARGET_HOOKS = EFL_HOOK_REMOVE_UPOWER +endif + +ifeq ($(BR2_PACKAGE_LIBUNWIND),y) +EFL_DEPENDENCIES += libunwind +endif + +$(eval $(meson-package)) + +################################################################################ +# +# host-efl +# +################################################################################ + +# We want to build only some host tools used later in the build. +# Actually we want: edje_cc, eet and embryo_cc. eolian_cxx is built only +# if selected for the target. + +# Host dependencies: +# * host-dbus: for Eldbus +# * host-freetype: for libevas +# * host-libglib2: for libecore +# * host-giflib, host-libjpeg, host-libpng: for libevas image loader +# * host-luajit for Elua tool for the host +# * host-openssl: cryptography backends. +HOST_EFL_DEPENDENCIES = \ + host-pkgconf \ + host-dbus \ + host-freetype \ + host-giflib \ + host-libglib2 \ + host-libjpeg \ + host-libpng \ + host-luajit \ + host-openssl \ + host-zlib + +# Configure options: +# audio=false: remove libsndfile dependency. +# eeze=false: remove libudev dependency. +# input=false: remove libinput dependency. +# libmount=false: remove dependency on host-util-linux libmount. +# elua=true: build elua for the host. +# physics=false: remove Bullet dependency. +# network-backend=none: remove network-backend (connman). +# embedded-lz4=true: use lz4 bundled in efl. +HOST_EFL_CONF_OPTS += \ + -Daudio=false \ + -Davahi=false \ + -Dbuild-examples=false \ + -Dbuild-tests=false \ + -Dcrypto=openssl \ + -Ddotnet=false \ + -Decore-imf-loaders-disabler=ibus,scim,xim \ + -Dedje-sound-and-video=false \ + -Deeze=false \ + -Delua=true \ + -Dembedded-lz4=true \ + -Dfontconfig=false \ + -Dfribidi=false \ + -Dglib=true \ + -Dgstreamer=false \ + -Dharfbuzz=false \ + -Dinput=false \ + -Dlibmount=false \ + -Dlua-interpreter=luajit \ + -Dnetwork-backend=none \ + -Dnls=false \ + -Dopengl=none \ + -Dphysics=false \ + -Dpixman=false \ + -Dpulseaudio=false \ + -Dsdl=false \ + -Dsystemd=false \ + -Dv4l2=false \ + -Dvnc-server=false \ + -Dx11=false \ + -Dxinput22=false + +# List of modular image/vector loaders to disable in efl +HOST_EFL_EVAS_LOADERS_DISABLER = avif bmp dds eet generic gst heif ico json \ + jp2k pdf pmaps ps psd raw rsvg tga tgv tiff wbmp webp xcf xpm + +HOST_EFL_CONF_OPTS += -Devas-loaders-disabler=$(subst $(space),$(comma),$(HOST_EFL_EVAS_LOADERS_DISABLER)) + +HOST_EFL_BINDINGS = lua + +# Enable Eolian language bindings to provide eolian_cxx tool for the +# host which is required to build Eolian language bindings for the +# target. +ifeq ($(BR2_PACKAGE_EFL_EOLIAN_CPP),y) +HOST_EFL_BINDINGS += cxx +endif +HOST_EFL_CONF_OPTS += -Dbindings=$(subst $(space),$(comma),$(HOST_EFL_BINDINGS)) + +# Always disable upower system module from host as it's +# not useful and would try to use the output/host/var +# system bus which is non-existent and does not contain +# any upower service in it. +define HOST_EFL_HOOK_REMOVE_UPOWER + rm -fr $(HOST_DIR)/lib/ecore/system/upower +endef +HOST_EFL_POST_INSTALL_HOOKS = HOST_EFL_HOOK_REMOVE_UPOWER + +$(eval $(host-meson-package)) diff --git a/package/eigen/0001-Adds-new-CMake-Options-for-controlling-build-compone.patch b/package/eigen/0001-Adds-new-CMake-Options-for-controlling-build-compone.patch new file mode 100644 index 00000000..737e7d39 --- /dev/null +++ b/package/eigen/0001-Adds-new-CMake-Options-for-controlling-build-compone.patch @@ -0,0 +1,88 @@ +From f49d5c1a6b7c22be359189cd0b1e2e766bd05365 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Antonio=20S=C3=A1nchez?= +Date: Sat, 5 Mar 2022 05:49:45 +0000 +Subject: [PATCH] Adds new CMake Options for controlling build components. + +[Retrieved from: +https://gitlab.com/libeigen/eigen/-/commit/cf82186416d04ea5df2a397d8fe09dc78d40ca65] +Signed-off-by: Fabrice Fontaine +[Julien: rebased patch on 3.4.0] +Signed-off-by: Julien Olivain +--- + CMakeLists.txt | 6 ++++++ + blas/CMakeLists.txt | 3 ++- + lapack/CMakeLists.txt | 5 +++++ + 3 files changed, 13 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index f3e69b845..74ff755f5 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -495,6 +495,9 @@ if(BUILD_TESTING) + add_subdirectory(failtest) + endif() + ++include(CMakeDetermineFortranCompiler) ++option(EIGEN_BUILD_BLAS "Toggles the building of the Eigen Blas library" ${CMAKE_Fortran_COMPILER}) ++option(EIGEN_BUILD_LAPACK "Toggles the building of the included Eigen LAPACK library" ${CMAKE_Fortran_COMPILER}) + if(EIGEN_LEAVE_TEST_IN_ALL_TARGET) + add_subdirectory(blas) + add_subdirectory(lapack) +@@ -612,6 +615,8 @@ set_target_properties (eigen PROPERTIES EXPORT_NAME Eigen) + + install (TARGETS eigen EXPORT Eigen3Targets) + ++option(EIGEN_BUILD_CMAKE_PACKAGE "Enables the creation of EigenConfig.cmake and related files" ON) ++if(EIGEN_BUILD_CMAKE_PACKAGE) + configure_package_config_file ( + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Eigen3Config.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/Eigen3Config.cmake +@@ -647,6 +652,7 @@ install ( FILES ${CMAKE_CURRENT_SOURCE_DIR}/cmake/UseEigen3.cmake + # Add uninstall target + add_custom_target ( uninstall + COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/EigenUninstall.cmake) ++endif() + + if (EIGEN_SPLIT_TESTSUITE) + ei_split_testsuite("${EIGEN_SPLIT_TESTSUITE}") +diff --git a/blas/CMakeLists.txt b/blas/CMakeLists.txt +index f3a94ec4a..d07090f69 100644 +--- a/blas/CMakeLists.txt ++++ b/blas/CMakeLists.txt +@@ -1,6 +1,7 @@ + + project(EigenBlas CXX) + ++if(EIGEN_BUILD_BLAS) + include(CheckLanguage) + check_language(Fortran) + if(CMAKE_Fortran_COMPILER) +@@ -59,4 +60,4 @@ if(BUILD_TESTING) + endif() + + endif() +- ++endif() +diff --git a/lapack/CMakeLists.txt b/lapack/CMakeLists.txt +index e48497fda..71255d96d 100644 +--- a/lapack/CMakeLists.txt ++++ b/lapack/CMakeLists.txt +@@ -1,6 +1,8 @@ + + project(EigenLapack CXX) + ++if(EIGEN_BUILD_LAPACK AND EIGEN_BUILD_BLAS) ++ + include(CheckLanguage) + check_language(Fortran) + if(CMAKE_Fortran_COMPILER) +@@ -450,3 +452,6 @@ if(EXISTS ${eigen_full_path_to_testing_lapack}) + + endif() + ++elseif(EIGEN_BUILD_LAPACK AND NOT EIGEN_BUILD_BLAS) ++ message(FATAL_ERROR "EIGEN_BUILD_LAPACK requires EIGEN_BUILD_BLAS") ++endif() #EIGEN_BUILD_LAPACK +-- +2.45.2 + diff --git a/package/eigen/Config.in b/package/eigen/Config.in new file mode 100644 index 00000000..ef0a16f2 --- /dev/null +++ b/package/eigen/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_EIGEN + bool "eigen" + depends on BR2_INSTALL_LIBSTDCPP + help + Eigen is a C++ template library for linear algebra: vectors, + matrices, and related algorithms. It is versatile, fast, + elegant and works on many platforms (OS/Compilers). + + This package only installs header files to the include path. + If you just want to use Eigen, you can use the header files + right away. There is no binary to link to. Eigen is a pure + template library defined in the headers. + + http://eigen.tuxfamily.org/ + +comment "eigen needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/eigen/eigen.hash b/package/eigen/eigen.hash new file mode 100644 index 00000000..ad7d6da9 --- /dev/null +++ b/package/eigen/eigen.hash @@ -0,0 +1,8 @@ +# Locally computed +sha256 b4c198460eba6f28d34894e3a5710998818515104d6e74e5cc331ce31e46e626 eigen-3.4.0.tar.bz2 +sha256 51928dce36213c5333ba3172e847d735d4c6e9b7ff2722a326c49067155b82eb COPYING.BSD +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING.GPL +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPL +sha256 f5b330efdad110cdd84d585ec61220b0650461fa599e36b13e1726c9346dcfb9 COPYING.MINPACK +sha256 fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85 COPYING.MPL2 +sha256 c83230b770f17ef1386ea1fd3681271dd98aa93646bdbfb5bff3a1b7050fff9d COPYING.README diff --git a/package/eigen/eigen.mk b/package/eigen/eigen.mk new file mode 100644 index 00000000..7fe3fbda --- /dev/null +++ b/package/eigen/eigen.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# eigen +# +################################################################################ + +EIGEN_VERSION = 3.4.0 +EIGEN_SOURCE = eigen-$(EIGEN_VERSION).tar.bz2 +EIGEN_SITE = $(call gitlab,libeigen,eigen,$(EIGEN_VERSION)) +EIGEN_LICENSE = MPL2, BSD-3-Clause, LGPL-2.1 +EIGEN_LICENSE_FILES = COPYING.MPL2 COPYING.BSD COPYING.LGPL COPYING.README +EIGEN_INSTALL_STAGING = YES +EIGEN_INSTALL_TARGET = NO +EIGEN_SUPPORTS_IN_SOURCE_BUILD = NO + +# Default Eigen CMake installs .pc file in /usr/share/pkgconfig +# change it to /usr/lib/pkgconfig, to be consistent with other packages. +EIGEN_CONF_OPTS = -DPKGCONFIG_INSTALL_DIR=/usr/lib/pkgconfig + +ifeq ($(BR2_TOOLCHAIN_HAS_FORTRAN),y) +EIGEN_CONF_OPTS += \ + -DCMAKE_Fortran_COMPILER=$(TARGET_FC) \ + -DEIGEN_BUILD_BLAS=ON \ + -DEIGEN_BUILD_LAPACK=ON +else +EIGEN_CONF_OPTS += \ + -DEIGEN_BUILD_BLAS=OFF \ + -DEIGEN_BUILD_LAPACK=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/ejabberd/0001-Makefile.in-do-not-download-or-compile-dependencies.patch b/package/ejabberd/0001-Makefile.in-do-not-download-or-compile-dependencies.patch new file mode 100644 index 00000000..abcc8975 --- /dev/null +++ b/package/ejabberd/0001-Makefile.in-do-not-download-or-compile-dependencies.patch @@ -0,0 +1,37 @@ +From bf3571da4a68a6a857ab7ad8256f8276b3687a38 Mon Sep 17 00:00:00 2001 +From: Johan Oudinet +Date: Fri, 13 May 2022 14:22:37 +0200 +Subject: [PATCH] Makefile.in: do not download or compile dependencies + +Signed-off-by: Johan Oudinet +[Bernd: updated for version 23.04] +Signed-off-by: Bernd Kuhls +--- + Makefile.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index ab0e9d967..6e54168a7 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -155,7 +155,7 @@ else + endif + endif + +-all: scripts deps src ++all: scripts src + + deps: $(DEPSDIR)/.got + +@@ -169,7 +169,7 @@ $(DEPSDIR)/.built: $(DEPSDIR)/.got + $(DEPSDIR)/.built: $(DEPSDIR)/.got + $(REBAR) compile && :> $(DEPSDIR)/.built + +-src: $(DEPSDIR)/.built ++src: + $(REBAR) $(SKIPDEPS) compile + + update: +-- +2.34.1 + diff --git a/package/ejabberd/0002-fix-ejabberdctl.patch b/package/ejabberd/0002-fix-ejabberdctl.patch new file mode 100644 index 00000000..ae28f3a6 --- /dev/null +++ b/package/ejabberd/0002-fix-ejabberdctl.patch @@ -0,0 +1,30 @@ +From 4283f675f21d3923e200092cec6418014a03ad52 Mon Sep 17 00:00:00 2001 +From: Johan Oudinet +Date: Thu, 26 Dec 2019 17:06:34 +0100 +Subject: [PATCH] fix ejabberdctl + +Change default values so ejabberdctl run commands as ejabberd user. + +Signed-off-by: Johan Oudinet +[Bernd: updated for version 23.04] +Signed-off-by: Bernd Kuhls +--- + ejabberdctl.template | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ejabberdctl.template b/ejabberdctl.template +index a940c3df7..5166e5a27 100755 +--- a/ejabberdctl.template ++++ b/ejabberdctl.template +@@ -17,7 +17,7 @@ SCRIPT_DIR=$(cd "${0%/*}" && pwd) + ERL="{{erl}}" + IEX="{{bindir}}/iex" + EPMD="{{epmd}}" +-INSTALLUSER="{{installuser}}" ++INSTALLUSER=ejabberd + + # check the proper system user is used + case $(id -un) in +-- +2.20.1 + diff --git a/package/ejabberd/0003-correct-includes.patch b/package/ejabberd/0003-correct-includes.patch new file mode 100644 index 00000000..338aa28f --- /dev/null +++ b/package/ejabberd/0003-correct-includes.patch @@ -0,0 +1,1807 @@ +From 710b6f7c0cfc9ab300d03f12538da3e26c35207b Mon Sep 17 00:00:00 2001 +From: Philipp Huebner +Date: Tue, 31 May 2022 10:30:52 +0200 +Subject: [PATCH] correct includes + +Many parts of ejabberd code were moved into their own projects and are +packaged separately by me. To make the build process work, several +includes must be adjusted for the corresponding libraries to be found. + +Author: Philipp Huebner +Original: https://salsa.debian.org/ejabberd-packaging-team/ejabberd/-/blob/master/debian/patches/src.includes.patch +Signed-off-by: Johan Oudinet +[Bernd: updated for version 23.04] +Signed-off-by: Bernd Kuhls +--- + src/ejabberd_auth.erl | 2 +- + src/ejabberd_auth_anonymous.erl | 2 +- + src/ejabberd_auth_jwt.erl | 2 +- + src/ejabberd_auth_mnesia.erl | 2 +- + src/ejabberd_auth_sql.erl | 2 +- + src/ejabberd_bosh.erl | 2 +- + src/ejabberd_c2s.erl | 2 +- + src/ejabberd_captcha.erl | 2 +- + src/ejabberd_http.erl | 2 +- + src/ejabberd_http_ws.erl | 2 +- + src/ejabberd_iq.erl | 2 +- + src/ejabberd_local.erl | 2 +- + src/ejabberd_oauth.erl | 2 +- + src/ejabberd_oauth_rest.erl | 2 +- + src/ejabberd_oauth_sql.erl | 2 +- + src/ejabberd_piefxis.erl | 4 ++-- + src/ejabberd_router.erl | 2 +- + src/ejabberd_router_multicast.erl | 2 +- + src/ejabberd_s2s.erl | 2 +- + src/ejabberd_s2s_in.erl | 2 +- + src/ejabberd_s2s_out.erl | 2 +- + src/ejabberd_service.erl | 2 +- + src/ejabberd_sm.erl | 2 +- + src/ejabberd_web.erl | 2 +- + src/ejabberd_web_admin.erl | 2 +- + src/ejabberd_websocket.erl | 2 +- + src/ejabberd_xmlrpc.erl | 2 +- + src/ext_mod.erl | 2 +- + src/gen_iq_handler.erl | 2 +- + src/gen_pubsub_node.erl | 2 +- + src/gen_pubsub_nodetree.erl | 2 +- + src/jd2ejd.erl | 2 +- + src/misc.erl | 2 +- + src/mod_adhoc.erl | 2 +- + src/mod_admin_extra.erl | 2 +- + src/mod_admin_update_sql.erl | 2 +- + src/mod_announce.erl | 2 +- + src/mod_announce_mnesia.erl | 2 +- + src/mod_announce_sql.erl | 2 +- + src/mod_avatar.erl | 2 +- + src/mod_block_strangers.erl | 2 +- + src/mod_blocking.erl | 2 +- + src/mod_bosh.erl | 2 +- + src/mod_caps.erl | 2 +- + src/mod_carboncopy.erl | 2 +- + src/mod_client_state.erl | 2 +- + src/mod_configure.erl | 2 +- + src/mod_conversejs.erl | 2 +- + src/mod_delegation.erl | 2 +- + src/mod_disco.erl | 2 +- + src/mod_fail2ban.erl | 2 +- + src/mod_host_meta.erl | 2 +- + src/mod_http_api.erl | 2 +- + src/mod_http_upload.erl | 2 +- + src/mod_http_upload_quota.erl | 2 +- + src/mod_jidprep.erl | 2 +- + src/mod_last.erl | 2 +- + src/mod_legacy_auth.erl | 2 +- + src/mod_mam.erl | 2 +- + src/mod_mam_mnesia.erl | 2 +- + src/mod_mam_sql.erl | 2 +- + src/mod_metrics.erl | 2 +- + src/mod_mix.erl | 2 +- + src/mod_mix_pam.erl | 2 +- + src/mod_mqtt_bridge_session.erl | 2 +- + src/mod_mqtt_session.erl | 2 +- + src/mod_mqtt_ws.erl | 2 +- + src/mod_muc.erl | 2 +- + src/mod_muc_admin.erl | 2 +- + src/mod_muc_log.erl | 2 +- + src/mod_muc_mnesia.erl | 2 +- + src/mod_muc_room.erl | 2 +- + src/mod_muc_rtbl.erl | 2 +- + src/mod_muc_sql.erl | 2 +- + src/mod_multicast.erl | 2 +- + src/mod_offline.erl | 2 +- + src/mod_offline_mnesia.erl | 2 +- + src/mod_offline_sql.erl | 2 +- + src/mod_ping.erl | 2 +- + src/mod_pres_counter.erl | 2 +- + src/mod_privacy.erl | 2 +- + src/mod_privacy_mnesia.erl | 2 +- + src/mod_privacy_sql.erl | 2 +- + src/mod_private.erl | 2 +- + src/mod_private_mnesia.erl | 2 +- + src/mod_private_sql.erl | 2 +- + src/mod_privilege.erl | 2 +- + src/mod_proxy65_service.erl | 2 +- + src/mod_pubsub.erl | 2 +- + src/mod_push.erl | 2 +- + src/mod_push_keepalive.erl | 2 +- + src/mod_push_mnesia.erl | 2 +- + src/mod_push_sql.erl | 2 +- + src/mod_register.erl | 2 +- + src/mod_register_web.erl | 2 +- + src/mod_roster.erl | 2 +- + src/mod_roster_mnesia.erl | 2 +- + src/mod_roster_sql.erl | 2 +- + src/mod_s2s_dialback.erl | 2 +- + src/mod_service_log.erl | 2 +- + src/mod_shared_roster.erl | 2 +- + src/mod_shared_roster_ldap.erl | 2 +- + src/mod_shared_roster_mnesia.erl | 2 +- + src/mod_shared_roster_sql.erl | 2 +- + src/mod_sic.erl | 2 +- + src/mod_sip.erl | 2 +- + src/mod_sip_proxy.erl | 2 +- + src/mod_sip_registrar.erl | 2 +- + src/mod_stats.erl | 2 +- + src/mod_stream_mgmt.erl | 2 +- + src/mod_stun_disco.erl | 2 +- + src/mod_time.erl | 2 +- + src/mod_vcard.erl | 2 +- + src/mod_vcard_ldap.erl | 2 +- + src/mod_vcard_mnesia.erl | 2 +- + src/mod_vcard_sql.erl | 2 +- + src/mod_vcard_xupdate.erl | 2 +- + src/mod_version.erl | 2 +- + src/node_flat.erl | 2 +- + src/node_flat_sql.erl | 2 +- + src/nodetree_tree.erl | 2 +- + src/nodetree_tree_sql.erl | 2 +- + src/prosody2ejabberd.erl | 4 ++-- + src/pubsub_subscription.erl | 2 +- + src/pubsub_subscription_sql.erl | 2 +- + test/suite.hrl | 8 ++++---- + tools/xml_compress_gen.erl | 2 +- + 127 files changed, 132 insertions(+), 132 deletions(-) + +diff --git a/src/ejabberd_auth.erl b/src/ejabberd_auth.erl +index 027983e61..06150f34a 100644 +--- a/src/ejabberd_auth.erl ++++ b/src/ejabberd_auth.erl +@@ -50,7 +50,7 @@ + + -export([auth_modules/1, convert_to_scram/1]). + +--include_lib("xmpp/include/scram.hrl"). ++-include_lib("p1_xmpp/include/scram.hrl"). + -include("logger.hrl"). + + -define(SALT_LENGTH, 16). +diff --git a/src/ejabberd_auth_anonymous.erl b/src/ejabberd_auth_anonymous.erl +index 056d475f8..9284c10f6 100644 +--- a/src/ejabberd_auth_anonymous.erl ++++ b/src/ejabberd_auth_anonymous.erl +@@ -45,7 +45,7 @@ + plain_password_required/1]). + + -include("logger.hrl"). +--include_lib("xmpp/include/jid.hrl"). ++-include_lib("p1_xmpp/include/jid.hrl"). + + start(Host) -> + ejabberd_hooks:add(sm_register_connection_hook, Host, +diff --git a/src/ejabberd_auth_jwt.erl b/src/ejabberd_auth_jwt.erl +index e4b251a03..8074d8612 100644 +--- a/src/ejabberd_auth_jwt.erl ++++ b/src/ejabberd_auth_jwt.erl +@@ -36,7 +36,7 @@ + %% 'ejabberd_hooks' callback: + -export([check_decoded_jwt/5]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + + %%%---------------------------------------------------------------------- +diff --git a/src/ejabberd_auth_mnesia.erl b/src/ejabberd_auth_mnesia.erl +index d52dde868..468ae4b19 100644 +--- a/src/ejabberd_auth_mnesia.erl ++++ b/src/ejabberd_auth_mnesia.erl +@@ -37,7 +37,7 @@ + -export([need_transform/1, transform/1]). + + -include("logger.hrl"). +--include_lib("xmpp/include/scram.hrl"). ++-include_lib("p1_xmpp/include/scram.hrl"). + -include("ejabberd_auth.hrl"). + + -record(reg_users_counter, {vhost = <<"">> :: binary(), +diff --git a/src/ejabberd_auth_sql.erl b/src/ejabberd_auth_sql.erl +index 566152695..a730d61bc 100644 +--- a/src/ejabberd_auth_sql.erl ++++ b/src/ejabberd_auth_sql.erl +@@ -35,7 +35,7 @@ + remove_user/2, store_type/1, plain_password_required/1, + export/1, which_users_exists/2]). + +--include_lib("xmpp/include/scram.hrl"). ++-include_lib("p1_xmpp/include/scram.hrl"). + -include("logger.hrl"). + -include("ejabberd_sql_pt.hrl"). + -include("ejabberd_auth.hrl"). +diff --git a/src/ejabberd_bosh.erl b/src/ejabberd_bosh.erl +index 06aaacda9..e0c72f74b 100644 +--- a/src/ejabberd_bosh.erl ++++ b/src/ejabberd_bosh.erl +@@ -43,7 +43,7 @@ + code_change/4]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("ejabberd_http.hrl"). + -include("bosh.hrl"). + +diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl +index d7b3a3340..670e57516 100644 +--- a/src/ejabberd_c2s.erl ++++ b/src/ejabberd_c2s.erl +@@ -51,7 +51,7 @@ + reply/2, copy_state/2, set_timeout/2, route/2, format_reason/2, + host_up/1, host_down/1, send_ws_ping/1, bounce_message_queue/2]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("mod_roster.hrl"). + -include("translate.hrl"). +diff --git a/src/ejabberd_captcha.erl b/src/ejabberd_captcha.erl +index 12ab5abb8..e2d400a48 100644 +--- a/src/ejabberd_captcha.erl ++++ b/src/ejabberd_captcha.erl +@@ -42,7 +42,7 @@ + host_up/1, host_down/1, + config_reloaded/0, process_iq/1]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("ejabberd_http.hrl"). + -include("translate.hrl"). +diff --git a/src/ejabberd_http.erl b/src/ejabberd_http.erl +index f29f36063..34ac89190 100644 +--- a/src/ejabberd_http.erl ++++ b/src/ejabberd_http.erl +@@ -37,7 +37,7 @@ + -export([init/3]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("ejabberd_http.hrl"). + -include("ejabberd_stacktrace.hrl"). + -include_lib("kernel/include/file.hrl"). +diff --git a/src/ejabberd_http_ws.erl b/src/ejabberd_http_ws.erl +index e14ca69e6..83986a69b 100644 +--- a/src/ejabberd_http_ws.erl ++++ b/src/ejabberd_http_ws.erl +@@ -36,7 +36,7 @@ + + -include("logger.hrl"). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("ejabberd_http.hrl"). + +diff --git a/src/ejabberd_iq.erl b/src/ejabberd_iq.erl +index b4957dd55..53f476962 100644 +--- a/src/ejabberd_iq.erl ++++ b/src/ejabberd_iq.erl +@@ -34,7 +34,7 @@ + -export([init/1, handle_call/3, handle_cast/2, handle_info/2, + terminate/2, code_change/3]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("ejabberd_stacktrace.hrl"). + +diff --git a/src/ejabberd_local.erl b/src/ejabberd_local.erl +index 5147a7481..7376acbd7 100644 +--- a/src/ejabberd_local.erl ++++ b/src/ejabberd_local.erl +@@ -47,7 +47,7 @@ + + -include("logger.hrl"). + -include_lib("stdlib/include/ms_transform.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("ejabberd_stacktrace.hrl"). + -include("translate.hrl"). + +diff --git a/src/ejabberd_oauth.erl b/src/ejabberd_oauth.erl +index ba369c1f2..6f4f6d9c8 100644 +--- a/src/ejabberd_oauth.erl ++++ b/src/ejabberd_oauth.erl +@@ -54,7 +54,7 @@ + oauth_add_client_implicit/3, + oauth_remove_client/1]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("ejabberd_http.hrl"). + -include("ejabberd_web_admin.hrl"). +diff --git a/src/ejabberd_oauth_rest.erl b/src/ejabberd_oauth_rest.erl +index 1a18e2655..36301cfaf 100644 +--- a/src/ejabberd_oauth_rest.erl ++++ b/src/ejabberd_oauth_rest.erl +@@ -36,7 +36,7 @@ + + -include("ejabberd_oauth.hrl"). + -include("logger.hrl"). +--include_lib("xmpp/include/jid.hrl"). ++-include_lib("p1_xmpp/include/jid.hrl"). + + init() -> + rest:start(ejabberd_config:get_myname()), +diff --git a/src/ejabberd_oauth_sql.erl b/src/ejabberd_oauth_sql.erl +index ecb1625c7..8513a430b 100644 +--- a/src/ejabberd_oauth_sql.erl ++++ b/src/ejabberd_oauth_sql.erl +@@ -37,7 +37,7 @@ + + -include("ejabberd_oauth.hrl"). + -include("ejabberd_sql_pt.hrl"). +--include_lib("xmpp/include/jid.hrl"). ++-include_lib("p1_xmpp/include/jid.hrl"). + -include("logger.hrl"). + + init() -> +diff --git a/src/ejabberd_piefxis.erl b/src/ejabberd_piefxis.erl +index 01fa24852..5ce3077d5 100644 +--- a/src/ejabberd_piefxis.erl ++++ b/src/ejabberd_piefxis.erl +@@ -38,9 +38,9 @@ + + -define(CHUNK_SIZE, 1024*20). %20k + +--include_lib("xmpp/include/scram.hrl"). ++-include_lib("p1_xmpp/include/scram.hrl"). + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_privacy.hrl"). + -include("mod_roster.hrl"). + +diff --git a/src/ejabberd_router.erl b/src/ejabberd_router.erl +index 3a2c6f318..b80e893cc 100644 +--- a/src/ejabberd_router.erl ++++ b/src/ejabberd_router.erl +@@ -69,7 +69,7 @@ + + -include("logger.hrl"). + -include("ejabberd_router.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("ejabberd_stacktrace.hrl"). + + -callback init() -> any(). +diff --git a/src/ejabberd_router_multicast.erl b/src/ejabberd_router_multicast.erl +index 773a3788e..ab341df09 100644 +--- a/src/ejabberd_router_multicast.erl ++++ b/src/ejabberd_router_multicast.erl +@@ -42,7 +42,7 @@ + terminate/2, code_change/3, update_to_in_wrapped/2]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -record(route_multicast, {domain = <<"">> :: binary() | '_', + pid = self() :: pid()}). +diff --git a/src/ejabberd_s2s.erl b/src/ejabberd_s2s.erl +index 378a55a43..a31e2d14d 100644 +--- a/src/ejabberd_s2s.erl ++++ b/src/ejabberd_s2s.erl +@@ -52,7 +52,7 @@ + -export([get_info_s2s_connections/1]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("ejabberd_commands.hrl"). + -include_lib("stdlib/include/ms_transform.hrl"). + -include("ejabberd_stacktrace.hrl"). +diff --git a/src/ejabberd_s2s_in.erl b/src/ejabberd_s2s_in.erl +index ab8bb4503..7e8aa79b0 100644 +--- a/src/ejabberd_s2s_in.erl ++++ b/src/ejabberd_s2s_in.erl +@@ -41,7 +41,7 @@ + -export([stop_async/1, close/1, close/2, send/2, update_state/2, establish/1, + host_up/1, host_down/1]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + + -type state() :: xmpp_stream_in:state(). +diff --git a/src/ejabberd_s2s_out.erl b/src/ejabberd_s2s_out.erl +index b9ae1abb3..dadd50a6f 100644 +--- a/src/ejabberd_s2s_out.erl ++++ b/src/ejabberd_s2s_out.erl +@@ -39,7 +39,7 @@ + -export([start/3, start_link/3, connect/1, close/1, close/2, stop_async/1, send/2, + route/2, establish/1, update_state/2, host_up/1, host_down/1]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("translate.hrl"). + +diff --git a/src/ejabberd_service.erl b/src/ejabberd_service.erl +index 3afa64f37..14c0259df 100644 +--- a/src/ejabberd_service.erl ++++ b/src/ejabberd_service.erl +@@ -35,7 +35,7 @@ + %% API + -export([send/2, close/1, close/2, stop_async/1]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("translate.hrl"). + +diff --git a/src/ejabberd_sm.erl b/src/ejabberd_sm.erl +index c9317b81c..6464801fe 100644 +--- a/src/ejabberd_sm.erl ++++ b/src/ejabberd_sm.erl +@@ -85,7 +85,7 @@ + handle_info/2, terminate/2, code_change/3]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("ejabberd_commands.hrl"). + -include("ejabberd_sm.hrl"). + -include("ejabberd_stacktrace.hrl"). +diff --git a/src/ejabberd_web.erl b/src/ejabberd_web.erl +index 5152e2b38..a2cf3c682 100644 +--- a/src/ejabberd_web.erl ++++ b/src/ejabberd_web.erl +@@ -33,7 +33,7 @@ + + -include("logger.hrl"). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("ejabberd_http.hrl"). + +diff --git a/src/ejabberd_web_admin.erl b/src/ejabberd_web_admin.erl +index ac3d4ec9b..e63231a46 100644 +--- a/src/ejabberd_web_admin.erl ++++ b/src/ejabberd_web_admin.erl +@@ -35,7 +35,7 @@ + + -include("logger.hrl"). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("ejabberd_http.hrl"). + +diff --git a/src/ejabberd_websocket.erl b/src/ejabberd_websocket.erl +index 21123eb23..b9df5304b 100644 +--- a/src/ejabberd_websocket.erl ++++ b/src/ejabberd_websocket.erl +@@ -46,7 +46,7 @@ + + -include("logger.hrl"). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("ejabberd_http.hrl"). + +diff --git a/src/ejabberd_xmlrpc.erl b/src/ejabberd_xmlrpc.erl +index 741bf8422..78f001d24 100644 +--- a/src/ejabberd_xmlrpc.erl ++++ b/src/ejabberd_xmlrpc.erl +@@ -39,7 +39,7 @@ + -include("ejabberd_http.hrl"). + -include("mod_roster.hrl"). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -record(state, + {auth = noauth :: noauth | map(), +diff --git a/src/ext_mod.erl b/src/ext_mod.erl +index 32f1f6fc8..066b40935 100644 +--- a/src/ext_mod.erl ++++ b/src/ext_mod.erl +@@ -46,7 +46,7 @@ + -include("ejabberd_web_admin.hrl"). + -include("logger.hrl"). + -include("translate.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -define(REPOS, "https://github.com/processone/ejabberd-contrib"). + +diff --git a/src/gen_iq_handler.erl b/src/gen_iq_handler.erl +index 72fc0ae30..27c517493 100644 +--- a/src/gen_iq_handler.erl ++++ b/src/gen_iq_handler.erl +@@ -35,7 +35,7 @@ + -deprecated([{add_iq_handler, 6}, {handle, 5}, {iqdisc, 1}]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + -include("ejabberd_stacktrace.hrl"). + +diff --git a/src/gen_pubsub_node.erl b/src/gen_pubsub_node.erl +index baf0ae444..5b3fd426a 100644 +--- a/src/gen_pubsub_node.erl ++++ b/src/gen_pubsub_node.erl +@@ -25,7 +25,7 @@ + + -module(gen_pubsub_node). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -type(host() :: mod_pubsub:host()). + -type(nodeId() :: mod_pubsub:nodeId()). +diff --git a/src/gen_pubsub_nodetree.erl b/src/gen_pubsub_nodetree.erl +index 1fd198208..821cdac45 100644 +--- a/src/gen_pubsub_nodetree.erl ++++ b/src/gen_pubsub_nodetree.erl +@@ -36,7 +36,7 @@ + ServerHost :: binary(), + Opts :: [any()]) -> atom(). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -callback terminate(Host :: host(), ServerHost :: binary()) -> atom(). + +diff --git a/src/jd2ejd.erl b/src/jd2ejd.erl +index 1a8dbb87a..390abcc8a 100644 +--- a/src/jd2ejd.erl ++++ b/src/jd2ejd.erl +@@ -31,7 +31,7 @@ + -export([import_file/1, import_dir/1]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + %%%---------------------------------------------------------------------- + %%% API +diff --git a/src/misc.erl b/src/misc.erl +index c08610524..d812865ba 100644 +--- a/src/misc.erl ++++ b/src/misc.erl +@@ -51,7 +51,7 @@ + {encode_base64, 1}]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include_lib("kernel/include/file.hrl"). + + -type distance_cache() :: #{{string(), string()} => non_neg_integer()}. +diff --git a/src/mod_adhoc.erl b/src/mod_adhoc.erl +index 3075366c4..2ad402cd7 100644 +--- a/src/mod_adhoc.erl ++++ b/src/mod_adhoc.erl +@@ -39,7 +39,7 @@ + mod_options/1, mod_doc/0]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + + start(Host, _Opts) -> +diff --git a/src/mod_admin_extra.erl b/src/mod_admin_extra.erl +index 9b88176fb..c49d5400b 100644 +--- a/src/mod_admin_extra.erl ++++ b/src/mod_admin_extra.erl +@@ -85,7 +85,7 @@ + -include("mod_roster.hrl"). + -include("mod_privacy.hrl"). + -include("ejabberd_sm.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + %%% + %%% gen_mod +diff --git a/src/mod_admin_update_sql.erl b/src/mod_admin_update_sql.erl +index 74d30b3e3..5d7528fc5 100644 +--- a/src/mod_admin_update_sql.erl ++++ b/src/mod_admin_update_sql.erl +@@ -39,7 +39,7 @@ + + -include("logger.hrl"). + -include("ejabberd_commands.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("ejabberd_sql_pt.hrl"). + -include("translate.hrl"). + +diff --git a/src/mod_announce.erl b/src/mod_announce.erl +index 7f6df0df5..56db12f0b 100644 +--- a/src/mod_announce.erl ++++ b/src/mod_announce.erl +@@ -51,7 +51,7 @@ + announce_all_hosts_motd_delete/1]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_announce.hrl"). + -include("translate.hrl"). + +diff --git a/src/mod_announce_mnesia.erl b/src/mod_announce_mnesia.erl +index e0ef13907..c5ec48921 100644 +--- a/src/mod_announce_mnesia.erl ++++ b/src/mod_announce_mnesia.erl +@@ -31,7 +31,7 @@ + get_motd/1, is_motd_user/2, set_motd_user/2, import/3]). + -export([need_transform/1, transform/1]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_announce.hrl"). + -include("logger.hrl"). + +diff --git a/src/mod_announce_sql.erl b/src/mod_announce_sql.erl +index 20ec78295..2aa8b112c 100644 +--- a/src/mod_announce_sql.erl ++++ b/src/mod_announce_sql.erl +@@ -32,7 +32,7 @@ + get_motd/1, is_motd_user/2, set_motd_user/2, import/3, + export/1]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_announce.hrl"). + -include("ejabberd_sql_pt.hrl"). + -include("logger.hrl"). +diff --git a/src/mod_avatar.erl b/src/mod_avatar.erl +index 58b4a8af6..1d01e867a 100644 +--- a/src/mod_avatar.erl ++++ b/src/mod_avatar.erl +@@ -31,7 +31,7 @@ + -export([pubsub_publish_item/6, vcard_iq_convert/1, vcard_iq_publish/1, + get_sm_features/5]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("pubsub.hrl"). + -include("translate.hrl"). +diff --git a/src/mod_block_strangers.erl b/src/mod_block_strangers.erl +index 8595b4aa0..ba01af0f9 100644 +--- a/src/mod_block_strangers.erl ++++ b/src/mod_block_strangers.erl +@@ -34,7 +34,7 @@ + + -export([filter_packet/1, filter_offline_msg/1, filter_subscription/2]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("translate.hrl"). + +diff --git a/src/mod_blocking.erl b/src/mod_blocking.erl +index 75f9aa0b9..42e7281a4 100644 +--- a/src/mod_blocking.erl ++++ b/src/mod_blocking.erl +@@ -33,7 +33,7 @@ + disco_features/5, mod_options/1, mod_doc/0]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_privacy.hrl"). + -include("translate.hrl"). + +diff --git a/src/mod_bosh.erl b/src/mod_bosh.erl +index dfe7482e3..6f5db9417 100644 +--- a/src/mod_bosh.erl ++++ b/src/mod_bosh.erl +@@ -40,7 +40,7 @@ + + -include("logger.hrl"). + -include_lib("stdlib/include/ms_transform.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("ejabberd_http.hrl"). + -include("bosh.hrl"). + -include("translate.hrl"). +diff --git a/src/mod_caps.erl b/src/mod_caps.erl +index 65287826c..58c573502 100644 +--- a/src/mod_caps.erl ++++ b/src/mod_caps.erl +@@ -54,7 +54,7 @@ + + -include("logger.hrl"). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_caps.hrl"). + -include("translate.hrl"). + +diff --git a/src/mod_carboncopy.erl b/src/mod_carboncopy.erl +index c9fe73b0a..ad9524428 100644 +--- a/src/mod_carboncopy.erl ++++ b/src/mod_carboncopy.erl +@@ -42,7 +42,7 @@ + -export([list/2]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + + -type direction() :: sent | received. +diff --git a/src/mod_client_state.erl b/src/mod_client_state.erl +index 5b38560e3..5fa594eff 100644 +--- a/src/mod_client_state.erl ++++ b/src/mod_client_state.erl +@@ -42,7 +42,7 @@ + c2s_copy_session/2, c2s_session_resumed/1]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + + -define(CSI_QUEUE_MAX, 100). +diff --git a/src/mod_configure.erl b/src/mod_configure.erl +index 3aec8e106..624e6ee8e 100644 +--- a/src/mod_configure.erl ++++ b/src/mod_configure.erl +@@ -39,7 +39,7 @@ + depends/2, mod_doc/0]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("ejabberd_sm.hrl"). + -include("translate.hrl"). + -include_lib("stdlib/include/ms_transform.hrl"). +diff --git a/src/mod_conversejs.erl b/src/mod_conversejs.erl +index 64e2a48d0..6b40d1ee4 100644 +--- a/src/mod_conversejs.erl ++++ b/src/mod_conversejs.erl +@@ -32,7 +32,7 @@ + -export([start/2, stop/1, reload/3, process/2, depends/2, + mod_opt_type/1, mod_options/1, mod_doc/0]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("ejabberd_http.hrl"). + -include("translate.hrl"). +diff --git a/src/mod_delegation.erl b/src/mod_delegation.erl +index 919c53a7b..c84d4a062 100644 +--- a/src/mod_delegation.erl ++++ b/src/mod_delegation.erl +@@ -42,7 +42,7 @@ + disco_local_identity/5, disco_sm_identity/5]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + + -type route_type() :: ejabberd_sm | ejabberd_local. +diff --git a/src/mod_disco.erl b/src/mod_disco.erl +index 2b77cf762..0d8cd4749 100644 +--- a/src/mod_disco.erl ++++ b/src/mod_disco.erl +@@ -42,7 +42,7 @@ + + -include("logger.hrl"). + -include("translate.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include_lib("stdlib/include/ms_transform.hrl"). + -include("mod_roster.hrl"). + +diff --git a/src/mod_fail2ban.erl b/src/mod_fail2ban.erl +index cd5fb07fc..8d09b2f15 100644 +--- a/src/mod_fail2ban.erl ++++ b/src/mod_fail2ban.erl +@@ -42,7 +42,7 @@ + -include_lib("stdlib/include/ms_transform.hrl"). + -include("ejabberd_commands.hrl"). + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + + -define(CLEAN_INTERVAL, timer:minutes(10)). +diff --git a/src/mod_host_meta.erl b/src/mod_host_meta.erl +index e1f7f141b..357dc7661 100644 +--- a/src/mod_host_meta.erl ++++ b/src/mod_host_meta.erl +@@ -38,7 +38,7 @@ + + -include("logger.hrl"). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("ejabberd_http.hrl"). + +diff --git a/src/mod_http_api.erl b/src/mod_http_api.erl +index 514a8632c..62030a16f 100644 +--- a/src/mod_http_api.erl ++++ b/src/mod_http_api.erl +@@ -33,7 +33,7 @@ + format_arg/2, + mod_options/1, mod_doc/0]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("ejabberd_http.hrl"). + -include("ejabberd_stacktrace.hrl"). +diff --git a/src/mod_http_upload.erl b/src/mod_http_upload.erl +index 4efce9c5c..53072cd1e 100644 +--- a/src/mod_http_upload.erl ++++ b/src/mod_http_upload.erl +@@ -87,7 +87,7 @@ + expand_host/2]). + + -include("ejabberd_http.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("translate.hrl"). + +diff --git a/src/mod_http_upload_quota.erl b/src/mod_http_upload_quota.erl +index 7c2742280..b803e34e0 100644 +--- a/src/mod_http_upload_quota.erl ++++ b/src/mod_http_upload_quota.erl +@@ -51,7 +51,7 @@ + %% ejabberd_hooks callback. + -export([handle_slot_request/6]). + +--include_lib("xmpp/include/jid.hrl"). ++-include_lib("p1_xmpp/include/jid.hrl"). + -include("logger.hrl"). + -include("translate.hrl"). + -include_lib("kernel/include/file.hrl"). +diff --git a/src/mod_jidprep.erl b/src/mod_jidprep.erl +index c1b2ad1ec..029be581d 100644 +--- a/src/mod_jidprep.erl ++++ b/src/mod_jidprep.erl +@@ -41,7 +41,7 @@ + + -include("logger.hrl"). + -include("translate.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + %%-------------------------------------------------------------------- + %% gen_mod callbacks. +diff --git a/src/mod_last.erl b/src/mod_last.erl +index be7abd561..a23346f1a 100644 +--- a/src/mod_last.erl ++++ b/src/mod_last.erl +@@ -38,7 +38,7 @@ + register_user/2, depends/2, privacy_check_packet/4]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_privacy.hrl"). + -include("mod_last.hrl"). + -include("translate.hrl"). +diff --git a/src/mod_legacy_auth.erl b/src/mod_legacy_auth.erl +index 98daa18ad..d2239ce2b 100644 +--- a/src/mod_legacy_auth.erl ++++ b/src/mod_legacy_auth.erl +@@ -29,7 +29,7 @@ + %% hooks + -export([c2s_unauthenticated_packet/2, c2s_stream_features/2]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + + -type c2s_state() :: ejabberd_c2s:state(). +diff --git a/src/mod_mam.erl b/src/mod_mam.erl +index 7c40b17fc..3ba1448e8 100644 +--- a/src/mod_mam.erl ++++ b/src/mod_mam.erl +@@ -48,7 +48,7 @@ + delete_old_messages_batch/5, delete_old_messages_status/1, delete_old_messages_abort/1, + remove_message_from_archive/3]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("mod_muc_room.hrl"). + -include("ejabberd_commands.hrl"). +diff --git a/src/mod_mam_mnesia.erl b/src/mod_mam_mnesia.erl +index f9e366860..c7340d0a9 100644 +--- a/src/mod_mam_mnesia.erl ++++ b/src/mod_mam_mnesia.erl +@@ -32,7 +32,7 @@ + is_empty_for_user/2, is_empty_for_room/3, delete_old_messages_batch/5]). + + -include_lib("stdlib/include/ms_transform.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("mod_mam.hrl"). + +diff --git a/src/mod_mam_sql.erl b/src/mod_mam_sql.erl +index b21e84a7b..626b87d65 100644 +--- a/src/mod_mam_sql.erl ++++ b/src/mod_mam_sql.erl +@@ -34,7 +34,7 @@ + delete_old_messages_batch/4, count_messages_to_delete/3]). + + -include_lib("stdlib/include/ms_transform.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_mam.hrl"). + -include("logger.hrl"). + -include("ejabberd_sql_pt.hrl"). +diff --git a/src/mod_metrics.erl b/src/mod_metrics.erl +index e3dd397f7..df333038a 100644 +--- a/src/mod_metrics.erl ++++ b/src/mod_metrics.erl +@@ -29,7 +29,7 @@ + -behaviour(gen_mod). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + + -export([start/2, stop/1, mod_opt_type/1, mod_options/1, depends/2, reload/3]). +diff --git a/src/mod_mix.erl b/src/mod_mix.erl +index 7066911b9..51ed5e1fb 100644 +--- a/src/mod_mix.erl ++++ b/src/mod_mix.erl +@@ -41,7 +41,7 @@ + process_mam_query/1, + process_pubsub_query/1]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("translate.hrl"). + -include("ejabberd_stacktrace.hrl"). +diff --git a/src/mod_mix_pam.erl b/src/mod_mix_pam.erl +index 7bd6f2a71..a5bc5860f 100644 +--- a/src/mod_mix_pam.erl ++++ b/src/mod_mix_pam.erl +@@ -36,7 +36,7 @@ + webadmin_user/4, + webadmin_page/3]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("mod_roster.hrl"). + -include("translate.hrl"). +diff --git a/src/mod_mqtt_bridge_session.erl b/src/mod_mqtt_bridge_session.erl +index 7d38632d4..0627fb55f 100644 +--- a/src/mod_mqtt_bridge_session.erl ++++ b/src/mod_mqtt_bridge_session.erl +@@ -28,7 +28,7 @@ + + -include("logger.hrl"). + -include("mqtt.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include_lib("public_key/include/public_key.hrl"). + + -type error_reason() :: +diff --git a/src/mod_mqtt_session.erl b/src/mod_mqtt_session.erl +index 37ea8ce02..e88ea64fa 100644 +--- a/src/mod_mqtt_session.erl ++++ b/src/mod_mqtt_session.erl +@@ -28,7 +28,7 @@ + + -include("logger.hrl"). + -include("mqtt.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include_lib("public_key/include/public_key.hrl"). + + -record(state, {vsn = ?VSN :: integer(), +diff --git a/src/mod_mqtt_ws.erl b/src/mod_mqtt_ws.erl +index 236f0b2d7..7c1f91561 100644 +--- a/src/mod_mqtt_ws.erl ++++ b/src/mod_mqtt_ws.erl +@@ -29,7 +29,7 @@ + -export([init/1, handle_call/3, handle_cast/2, handle_info/2, + terminate/2, code_change/3, format_status/2]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("ejabberd_http.hrl"). + -include("logger.hrl"). + +diff --git a/src/mod_muc.erl b/src/mod_muc.erl +index e1da09a7e..3a8c45108 100644 +--- a/src/mod_muc.erl ++++ b/src/mod_muc.erl +@@ -79,7 +79,7 @@ + mod_opt_type/1, mod_options/1, depends/2]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_muc.hrl"). + -include("mod_muc_room.hrl"). + -include("translate.hrl"). +diff --git a/src/mod_muc_admin.erl b/src/mod_muc_admin.erl +index 234f065d3..3c10fecaf 100644 +--- a/src/mod_muc_admin.erl ++++ b/src/mod_muc_admin.erl +@@ -49,7 +49,7 @@ + get_room_pid/2, get_room_history/2]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_muc.hrl"). + -include("mod_muc_room.hrl"). + -include("ejabberd_http.hrl"). +diff --git a/src/mod_muc_log.erl b/src/mod_muc_log.erl +index 9e724de32..24d57a343 100644 +--- a/src/mod_muc_log.erl ++++ b/src/mod_muc_log.erl +@@ -42,7 +42,7 @@ + mod_opt_type/1, mod_options/1, depends/2, mod_doc/0]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_muc_room.hrl"). + -include("translate.hrl"). + +diff --git a/src/mod_muc_mnesia.erl b/src/mod_muc_mnesia.erl +index 4a5192d2f..ba45a2775 100644 +--- a/src/mod_muc_mnesia.erl ++++ b/src/mod_muc_mnesia.erl +@@ -44,7 +44,7 @@ + + -include("mod_muc.hrl"). + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include_lib("stdlib/include/ms_transform.hrl"). + + -record(state, {}). +diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl +index f66e32036..6a5189efa 100644 +--- a/src/mod_muc_room.erl ++++ b/src/mod_muc_room.erl +@@ -71,7 +71,7 @@ + code_change/4]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + -include("mod_muc_room.hrl"). + -include("ejabberd_stacktrace.hrl"). +diff --git a/src/mod_muc_rtbl.erl b/src/mod_muc_rtbl.erl +index d5fe3bbfd..e2c501e7c 100644 +--- a/src/mod_muc_rtbl.erl ++++ b/src/mod_muc_rtbl.erl +@@ -27,7 +27,7 @@ + + -behaviour(gen_mod). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("translate.hrl"). + -include("mod_muc_room.hrl"). +diff --git a/src/mod_muc_sql.erl b/src/mod_muc_sql.erl +index 1c72a5bd2..6f8425241 100644 +--- a/src/mod_muc_sql.erl ++++ b/src/mod_muc_sql.erl +@@ -43,7 +43,7 @@ + -export([set_affiliation/6, set_affiliations/4, get_affiliation/5, + get_affiliations/3, search_affiliation/4]). + +--include_lib("xmpp/include/jid.hrl"). ++-include_lib("p1_xmpp/include/jid.hrl"). + -include("mod_muc.hrl"). + -include("logger.hrl"). + -include("ejabberd_sql_pt.hrl"). +diff --git a/src/mod_multicast.erl b/src/mod_multicast.erl +index 9b418049a..5f84feb33 100644 +--- a/src/mod_multicast.erl ++++ b/src/mod_multicast.erl +@@ -45,7 +45,7 @@ + + -include("logger.hrl"). + -include("translate.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -record(multicastc, {rserver :: binary(), + response, +diff --git a/src/mod_offline.erl b/src/mod_offline.erl +index 4840ced5f..629b4d15a 100644 +--- a/src/mod_offline.erl ++++ b/src/mod_offline.erl +@@ -69,7 +69,7 @@ + + -include("logger.hrl"). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("ejabberd_http.hrl"). + +diff --git a/src/mod_offline_mnesia.erl b/src/mod_offline_mnesia.erl +index 2cd511dfa..a7bb30812 100644 +--- a/src/mod_offline_mnesia.erl ++++ b/src/mod_offline_mnesia.erl +@@ -33,7 +33,7 @@ + remove_old_messages_batch/4]). + -export([need_transform/1, transform/1]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_offline.hrl"). + -include("logger.hrl"). + +diff --git a/src/mod_offline_sql.erl b/src/mod_offline_sql.erl +index a3b9d0545..bad4e45f2 100644 +--- a/src/mod_offline_sql.erl ++++ b/src/mod_offline_sql.erl +@@ -32,7 +32,7 @@ + read_message/3, remove_message/3, read_all_messages/2, + remove_all_messages/2, count_messages/2, import/1, export/1, remove_old_messages_batch/3]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_offline.hrl"). + -include("logger.hrl"). + -include("ejabberd_sql_pt.hrl"). +diff --git a/src/mod_ping.erl b/src/mod_ping.erl +index 9ac6e9bad..7b50b68c8 100644 +--- a/src/mod_ping.erl ++++ b/src/mod_ping.erl +@@ -35,7 +35,7 @@ + + -include("logger.hrl"). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("translate.hrl"). + +diff --git a/src/mod_pres_counter.erl b/src/mod_pres_counter.erl +index 7359260bc..3772f2a9c 100644 +--- a/src/mod_pres_counter.erl ++++ b/src/mod_pres_counter.erl +@@ -32,7 +32,7 @@ + + -include("logger.hrl"). + -include("translate.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -record(pres_counter, + {dir, start, count, logged = false}). +diff --git a/src/mod_privacy.erl b/src/mod_privacy.erl +index 37f1eb8bc..e2d0ee04d 100644 +--- a/src/mod_privacy.erl ++++ b/src/mod_privacy.erl +@@ -41,7 +41,7 @@ + mod_opt_type/1, mod_options/1, depends/2]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_privacy.hrl"). + -include("translate.hrl"). + +diff --git a/src/mod_privacy_mnesia.erl b/src/mod_privacy_mnesia.erl +index 78eeb9b82..cf0cbc754 100644 +--- a/src/mod_privacy_mnesia.erl ++++ b/src/mod_privacy_mnesia.erl +@@ -32,7 +32,7 @@ + remove_list/3, use_cache/1, import/1]). + -export([need_transform/1, transform/1]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_privacy.hrl"). + -include("logger.hrl"). + +diff --git a/src/mod_privacy_sql.erl b/src/mod_privacy_sql.erl +index 10ec92e0b..241fa6792 100644 +--- a/src/mod_privacy_sql.erl ++++ b/src/mod_privacy_sql.erl +@@ -34,7 +34,7 @@ + + -export([item_to_raw/1, raw_to_item/1]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_privacy.hrl"). + -include("logger.hrl"). + -include("ejabberd_sql_pt.hrl"). +diff --git a/src/mod_private.erl b/src/mod_private.erl +index 52768291d..304dc5c25 100644 +--- a/src/mod_private.erl ++++ b/src/mod_private.erl +@@ -40,7 +40,7 @@ + -export([get_commands_spec/0, bookmarks_to_pep/2]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_private.hrl"). + -include("ejabberd_commands.hrl"). + -include("translate.hrl"). +diff --git a/src/mod_private_mnesia.erl b/src/mod_private_mnesia.erl +index e3619dc2a..3828989d7 100644 +--- a/src/mod_private_mnesia.erl ++++ b/src/mod_private_mnesia.erl +@@ -31,7 +31,7 @@ + use_cache/1, import/3]). + -export([need_transform/1, transform/1]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_private.hrl"). + -include("logger.hrl"). + +diff --git a/src/mod_private_sql.erl b/src/mod_private_sql.erl +index a1bb38c82..07772c036 100644 +--- a/src/mod_private_sql.erl ++++ b/src/mod_private_sql.erl +@@ -29,7 +29,7 @@ + -export([init/2, set_data/3, get_data/3, get_all_data/2, del_data/2, + import/3, export/1]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_private.hrl"). + -include("ejabberd_sql_pt.hrl"). + -include("logger.hrl"). +diff --git a/src/mod_privilege.erl b/src/mod_privilege.erl +index 3862b33c7..9d6b290c9 100644 +--- a/src/mod_privilege.erl ++++ b/src/mod_privilege.erl +@@ -41,7 +41,7 @@ + process_presence_out/1, process_presence_in/1]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + + -type roster_permission() :: both | get | set. +diff --git a/src/mod_proxy65_service.erl b/src/mod_proxy65_service.erl +index 297c59bb6..124c47490 100644 +--- a/src/mod_proxy65_service.erl ++++ b/src/mod_proxy65_service.erl +@@ -38,7 +38,7 @@ + delete_listener/1, route/1]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + -include("ejabberd_stacktrace.hrl"). + +diff --git a/src/mod_pubsub.erl b/src/mod_pubsub.erl +index b8f4c4905..071bb3327 100644 +--- a/src/mod_pubsub.erl ++++ b/src/mod_pubsub.erl +@@ -40,7 +40,7 @@ + -protocol({xep, 248, '0.2'}). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("pubsub.hrl"). + -include("mod_roster.hrl"). + -include("translate.hrl"). +diff --git a/src/mod_push.erl b/src/mod_push.erl +index c911bb6ac..117c6bd49 100644 +--- a/src/mod_push.erl ++++ b/src/mod_push.erl +@@ -51,7 +51,7 @@ + + -include("ejabberd_commands.hrl"). + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + + -define(PUSH_CACHE, push_cache). +diff --git a/src/mod_push_keepalive.erl b/src/mod_push_keepalive.erl +index 9463ec7d9..bcdfb516f 100644 +--- a/src/mod_push_keepalive.erl ++++ b/src/mod_push_keepalive.erl +@@ -36,7 +36,7 @@ + c2s_handle_cast/2, c2s_handle_info/2, c2s_stanza/3]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + + -define(PUSH_BEFORE_TIMEOUT_PERIOD, 120000). % 2 minutes. +diff --git a/src/mod_push_mnesia.erl b/src/mod_push_mnesia.erl +index 4e3baa342..f982991f2 100644 +--- a/src/mod_push_mnesia.erl ++++ b/src/mod_push_mnesia.erl +@@ -35,7 +35,7 @@ + + -include_lib("stdlib/include/ms_transform.hrl"). + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_push.hrl"). + + %%%------------------------------------------------------------------- +diff --git a/src/mod_push_sql.erl b/src/mod_push_sql.erl +index 7a433a57d..43e8dbb19 100644 +--- a/src/mod_push_sql.erl ++++ b/src/mod_push_sql.erl +@@ -31,7 +31,7 @@ + lookup_sessions/3, lookup_sessions/2, lookup_sessions/1, + delete_session/3, delete_old_sessions/2, export/1]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("ejabberd_sql_pt.hrl"). + -include("mod_push.hrl"). +diff --git a/src/mod_register.erl b/src/mod_register.erl +index 7b05d4fff..45dac2ca0 100644 +--- a/src/mod_register.erl ++++ b/src/mod_register.erl +@@ -40,7 +40,7 @@ + -deprecated({try_register, 4}). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + + start(Host, _Opts) -> +diff --git a/src/mod_register_web.erl b/src/mod_register_web.erl +index 03e35cbf4..cea523fae 100644 +--- a/src/mod_register_web.erl ++++ b/src/mod_register_web.erl +@@ -34,7 +34,7 @@ + + -include("logger.hrl"). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("ejabberd_http.hrl"). + +diff --git a/src/mod_roster.erl b/src/mod_roster.erl +index 7ea3dac81..1a9933a8f 100644 +--- a/src/mod_roster.erl ++++ b/src/mod_roster.erl +@@ -54,7 +54,7 @@ + depends/2, set_item_and_notify_clients/3]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_roster.hrl"). + -include("ejabberd_http.hrl"). + -include("ejabberd_web_admin.hrl"). +diff --git a/src/mod_roster_mnesia.erl b/src/mod_roster_mnesia.erl +index 3ef93a4dc..d74cb7640 100644 +--- a/src/mod_roster_mnesia.erl ++++ b/src/mod_roster_mnesia.erl +@@ -37,7 +37,7 @@ + + -include("mod_roster.hrl"). + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + %%%=================================================================== + %%% API +diff --git a/src/mod_roster_sql.erl b/src/mod_roster_sql.erl +index 67d9697f7..a8462f5ff 100644 +--- a/src/mod_roster_sql.erl ++++ b/src/mod_roster_sql.erl +@@ -38,7 +38,7 @@ + -include("mod_roster.hrl"). + -include("ejabberd_sql_pt.hrl"). + -include("logger.hrl"). +--include_lib("xmpp/include/jid.hrl"). ++-include_lib("p1_xmpp/include/jid.hrl"). + + %%%=================================================================== + %%% API +diff --git a/src/mod_s2s_dialback.erl b/src/mod_s2s_dialback.erl +index cd0a9b8f6..2ddd8a9f5 100644 +--- a/src/mod_s2s_dialback.erl ++++ b/src/mod_s2s_dialback.erl +@@ -33,7 +33,7 @@ + s2s_in_features/2, s2s_out_init/2, s2s_out_closed/2, + s2s_out_tls_verify/2]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("translate.hrl"). + +diff --git a/src/mod_service_log.erl b/src/mod_service_log.erl +index c387ce04c..4cc818434 100644 +--- a/src/mod_service_log.erl ++++ b/src/mod_service_log.erl +@@ -34,7 +34,7 @@ + + -include("logger.hrl"). + -include("translate.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + start(Host, _Opts) -> + ejabberd_hooks:add(user_send_packet, Host, ?MODULE, +diff --git a/src/mod_shared_roster.erl b/src/mod_shared_roster.erl +index 579992739..700b0c89c 100644 +--- a/src/mod_shared_roster.erl ++++ b/src/mod_shared_roster.erl +@@ -43,7 +43,7 @@ + + -include("logger.hrl"). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("mod_roster.hrl"). + +diff --git a/src/mod_shared_roster_ldap.erl b/src/mod_shared_roster_ldap.erl +index 7c97ce011..5aaf6ff53 100644 +--- a/src/mod_shared_roster_ldap.erl ++++ b/src/mod_shared_roster_ldap.erl +@@ -43,7 +43,7 @@ + depends/2, mod_doc/0]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_roster.hrl"). + -include("eldap.hrl"). + -include("translate.hrl"). +diff --git a/src/mod_shared_roster_mnesia.erl b/src/mod_shared_roster_mnesia.erl +index 447fa174d..8d700bbe7 100644 +--- a/src/mod_shared_roster_mnesia.erl ++++ b/src/mod_shared_roster_mnesia.erl +@@ -37,7 +37,7 @@ + -include("mod_roster.hrl"). + -include("mod_shared_roster.hrl"). + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + %%%=================================================================== + %%% API +diff --git a/src/mod_shared_roster_sql.erl b/src/mod_shared_roster_sql.erl +index d921e5474..a4f3cfb03 100644 +--- a/src/mod_shared_roster_sql.erl ++++ b/src/mod_shared_roster_sql.erl +@@ -35,7 +35,7 @@ + add_user_to_group/3, remove_user_from_group/3, import/3, + export/1]). + +--include_lib("xmpp/include/jid.hrl"). ++-include_lib("p1_xmpp/include/jid.hrl"). + -include("mod_roster.hrl"). + -include("mod_shared_roster.hrl"). + -include("ejabberd_sql_pt.hrl"). +diff --git a/src/mod_sic.erl b/src/mod_sic.erl +index 94f82e10b..5a2389e7c 100644 +--- a/src/mod_sic.erl ++++ b/src/mod_sic.erl +@@ -35,7 +35,7 @@ + process_sm_iq/1, mod_options/1, depends/2, mod_doc/0]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + + start(Host, _Opts) -> +diff --git a/src/mod_sip.erl b/src/mod_sip.erl +index 13fcfa6c4..7abdf1023 100644 +--- a/src/mod_sip.erl ++++ b/src/mod_sip.erl +@@ -55,7 +55,7 @@ mod_doc() -> + locate/1, mod_opt_type/1, mod_options/1, depends/2, + mod_doc/0]). + +--include_lib("esip/include/esip.hrl"). ++-include_lib("p1_sip/include/esip.hrl"). + + %%%=================================================================== + %%% API +diff --git a/src/mod_sip_proxy.erl b/src/mod_sip_proxy.erl +index dbd17a9d6..70d861e12 100644 +--- a/src/mod_sip_proxy.erl ++++ b/src/mod_sip_proxy.erl +@@ -39,7 +39,7 @@ + code_change/4]). + + -include("logger.hrl"). +--include_lib("esip/include/esip.hrl"). ++-include_lib("p1_sip/include/esip.hrl"). + + -define(SIGN_LIFETIME, 300). %% in seconds. + +diff --git a/src/mod_sip_registrar.erl b/src/mod_sip_registrar.erl +index 970a45256..825478840 100644 +--- a/src/mod_sip_registrar.erl ++++ b/src/mod_sip_registrar.erl +@@ -41,7 +41,7 @@ + terminate/2, code_change/3]). + + -include("logger.hrl"). +--include_lib("esip/include/esip.hrl"). ++-include_lib("p1_sip/include/esip.hrl"). + + -define(CALL_TIMEOUT, timer:seconds(30)). + -define(DEFAULT_EXPIRES, 3600). +diff --git a/src/mod_stats.erl b/src/mod_stats.erl +index 492a486b9..79163f03a 100644 +--- a/src/mod_stats.erl ++++ b/src/mod_stats.erl +@@ -35,7 +35,7 @@ + mod_options/1, depends/2, mod_doc/0]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + + start(Host, _Opts) -> +diff --git a/src/mod_stream_mgmt.erl b/src/mod_stream_mgmt.erl +index 7b02b2e48..737f81219 100644 +--- a/src/mod_stream_mgmt.erl ++++ b/src/mod_stream_mgmt.erl +@@ -37,7 +37,7 @@ + %% adjust pending session timeout / access queue + -export([get_resume_timeout/1, set_resume_timeout/2, queue_find/2]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include_lib("p1_utils/include/p1_queue.hrl"). + -include("translate.hrl"). +diff --git a/src/mod_stun_disco.erl b/src/mod_stun_disco.erl +index 9f77cc1a8..085048017 100644 +--- a/src/mod_stun_disco.erl ++++ b/src/mod_stun_disco.erl +@@ -55,7 +55,7 @@ + + -include("logger.hrl"). + -include("translate.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -define(STUN_MODULE, ejabberd_stun). + +diff --git a/src/mod_time.erl b/src/mod_time.erl +index c954761c2..659c767fa 100644 +--- a/src/mod_time.erl ++++ b/src/mod_time.erl +@@ -36,7 +36,7 @@ + mod_options/1, depends/2, mod_doc/0]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + + start(Host, _Opts) -> +diff --git a/src/mod_vcard.erl b/src/mod_vcard.erl +index 87bb22080..a6bc0fa0f 100644 +--- a/src/mod_vcard.erl ++++ b/src/mod_vcard.erl +@@ -45,7 +45,7 @@ + -export([route/1]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_vcard.hrl"). + -include("translate.hrl"). + -include("ejabberd_stacktrace.hrl"). +diff --git a/src/mod_vcard_ldap.erl b/src/mod_vcard_ldap.erl +index b07a83cfc..29dcb5226 100644 +--- a/src/mod_vcard_ldap.erl ++++ b/src/mod_vcard_ldap.erl +@@ -40,7 +40,7 @@ + + -include("logger.hrl"). + -include("eldap.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + + -define(PROCNAME, ejabberd_mod_vcard_ldap). +diff --git a/src/mod_vcard_mnesia.erl b/src/mod_vcard_mnesia.erl +index f877f91bd..0bbe993c0 100644 +--- a/src/mod_vcard_mnesia.erl ++++ b/src/mod_vcard_mnesia.erl +@@ -33,7 +33,7 @@ + -export([need_transform/1, transform/1]). + -export([mod_opt_type/1, mod_options/1, mod_doc/0]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_vcard.hrl"). + -include("logger.hrl"). + -include("translate.hrl"). +diff --git a/src/mod_vcard_sql.erl b/src/mod_vcard_sql.erl +index 7d1c00e11..d770baa6a 100644 +--- a/src/mod_vcard_sql.erl ++++ b/src/mod_vcard_sql.erl +@@ -32,7 +32,7 @@ + search_fields/1, search_reported/1, import/3, export/1]). + -export([is_search_supported/1]). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_vcard.hrl"). + -include("logger.hrl"). + -include("ejabberd_sql_pt.hrl"). +diff --git a/src/mod_vcard_xupdate.erl b/src/mod_vcard_xupdate.erl +index d169b78f4..4f244c587 100644 +--- a/src/mod_vcard_xupdate.erl ++++ b/src/mod_vcard_xupdate.erl +@@ -37,7 +37,7 @@ + -export([compute_hash/1]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + + -define(VCARD_XUPDATE_CACHE, vcard_xupdate_cache). +diff --git a/src/mod_version.erl b/src/mod_version.erl +index 64b7ba278..5caa4231d 100644 +--- a/src/mod_version.erl ++++ b/src/mod_version.erl +@@ -35,7 +35,7 @@ + mod_opt_type/1, mod_options/1, depends/2, mod_doc/0]). + + -include("logger.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + + start(Host, _Opts) -> +diff --git a/src/node_flat.erl b/src/node_flat.erl +index c64adb3ef..d94a84734 100644 +--- a/src/node_flat.erl ++++ b/src/node_flat.erl +@@ -34,7 +34,7 @@ + -author('christophe.romain@process-one.net'). + + -include("pubsub.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -export([init/3, terminate/2, options/0, features/0, + create_node_permission/6, create_node/2, delete_node/1, +diff --git a/src/node_flat_sql.erl b/src/node_flat_sql.erl +index 9a98fed65..66c690bf7 100644 +--- a/src/node_flat_sql.erl ++++ b/src/node_flat_sql.erl +@@ -35,7 +35,7 @@ + + + -include("pubsub.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("ejabberd_sql_pt.hrl"). + -include("translate.hrl"). + +diff --git a/src/nodetree_tree.erl b/src/nodetree_tree.erl +index ea8d35c50..361a3734b 100644 +--- a/src/nodetree_tree.erl ++++ b/src/nodetree_tree.erl +@@ -41,7 +41,7 @@ + -include_lib("stdlib/include/ms_transform.hrl"). + + -include("pubsub.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + + -export([init/3, terminate/2, options/0, set_node/1, +diff --git a/src/nodetree_tree_sql.erl b/src/nodetree_tree_sql.erl +index ccb2b0e2a..6722cf44f 100644 +--- a/src/nodetree_tree_sql.erl ++++ b/src/nodetree_tree_sql.erl +@@ -39,7 +39,7 @@ + + + -include("pubsub.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("ejabberd_sql_pt.hrl"). + -include("translate.hrl"). + +diff --git a/src/prosody2ejabberd.erl b/src/prosody2ejabberd.erl +index 951993cc0..8582d4537 100644 +--- a/src/prosody2ejabberd.erl ++++ b/src/prosody2ejabberd.erl +@@ -27,8 +27,8 @@ + %% API + -export([from_dir/1]). + +--include_lib("xmpp/include/scram.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/scram.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("mod_roster.hrl"). + -include("mod_offline.hrl"). +diff --git a/src/pubsub_subscription.erl b/src/pubsub_subscription.erl +index db947bb64..23e87e054 100644 +--- a/src/pubsub_subscription.erl ++++ b/src/pubsub_subscription.erl +@@ -38,7 +38,7 @@ + read_subscription/3, write_subscription/4]). + + -include("pubsub.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + + -define(PUBSUB_DELIVER, <<"pubsub#deliver">>). +diff --git a/src/pubsub_subscription_sql.erl b/src/pubsub_subscription_sql.erl +index 839d1589c..dc336a340 100644 +--- a/src/pubsub_subscription_sql.erl ++++ b/src/pubsub_subscription_sql.erl +@@ -34,7 +34,7 @@ + get_options_xform/2, parse_options_xform/1]). + + -include("pubsub.hrl"). +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + + -define(PUBSUB_DELIVER, <<"pubsub#deliver">>). +diff --git a/test/suite.hrl b/test/suite.hrl +index d8ea3e23b..9c6bc3f42 100644 +--- a/test/suite.hrl ++++ b/test/suite.hrl +@@ -1,8 +1,8 @@ + -include_lib("common_test/include/ct.hrl"). +--include_lib("fast_xml/include/fxml.hrl"). +--include_lib("xmpp/include/jid.hrl"). +--include_lib("xmpp/include/ns.hrl"). +--include_lib("xmpp/include/xmpp_codec.hrl"). ++-include_lib("p1_xml/include/fxml.hrl"). ++-include_lib("p1_xmpp/include/jid.hrl"). ++-include_lib("p1_xmpp/include/ns.hrl"). ++-include_lib("p1_xmpp/include/xmpp_codec.hrl"). + -include("mod_proxy65.hrl"). + + -define(STREAM_TRAILER, <<"">>). +diff --git a/tools/xml_compress_gen.erl b/tools/xml_compress_gen.erl +index c3c494c8c..80ff83f79 100644 +--- a/tools/xml_compress_gen.erl ++++ b/tools/xml_compress_gen.erl +@@ -24,7 +24,7 @@ + -module(xml_compress_gen). + -author("pawel@process-one.net"). + +--include_lib("xmpp/include/xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + %% API + -export([archive_analyze/3, process_stats/1, gen_code/3]). +-- +2.39.2 + diff --git a/package/ejabberd/Config.in b/package/ejabberd/Config.in new file mode 100644 index 00000000..e24c7fee --- /dev/null +++ b/package/ejabberd/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_EJABBERD + bool "ejabberd" + depends on BR2_PACKAGE_ERLANG + depends on BR2_INSTALL_LIBSTDCPP # jiffy, stringprep + select BR2_PACKAGE_ERLANG_EIMP + select BR2_PACKAGE_ERLANG_IDNA # runtime + select BR2_PACKAGE_ERLANG_JIFFY # runtime + select BR2_PACKAGE_ERLANG_JOSE # runtime + select BR2_PACKAGE_ERLANG_LAGER + select BR2_PACKAGE_ERLANG_P1_ACME # runtime + select BR2_PACKAGE_ERLANG_P1_CACHE_TAB + select BR2_PACKAGE_ERLANG_P1_MQTREE # runtime + select BR2_PACKAGE_ERLANG_P1_OAUTH2 # runtime + select BR2_PACKAGE_ERLANG_P1_PKIX # runtime + select BR2_PACKAGE_ERLANG_P1_SIP + select BR2_PACKAGE_ERLANG_P1_STRINGPREP + select BR2_PACKAGE_ERLANG_P1_STUN + select BR2_PACKAGE_ERLANG_P1_TLS + select BR2_PACKAGE_ERLANG_P1_UTILS + select BR2_PACKAGE_ERLANG_P1_XML + select BR2_PACKAGE_ERLANG_P1_XMPP + select BR2_PACKAGE_ERLANG_P1_YAML + select BR2_PACKAGE_ERLANG_P1_YCONF # runtime + select BR2_PACKAGE_ERLANG_P1_ZLIB + select BR2_PACKAGE_GETENT + select BR2_PACKAGE_OPENSSL + help + Ejabberd is a Jabber/XMPP instant messaging server, written + in Erlang/OTP. Among other features, ejabberd is + cross-platform, fault-tolerant, clusterable and modular. + + http://www.ejabberd.im + +comment "ejabberd needs erlang, toolchain w/ C++" + depends on !BR2_PACKAGE_ERLANG || !BR2_INSTALL_LIBSTDCPP diff --git a/package/ejabberd/S50ejabberd b/package/ejabberd/S50ejabberd new file mode 100644 index 00000000..83513bdc --- /dev/null +++ b/package/ejabberd/S50ejabberd @@ -0,0 +1,54 @@ +#!/bin/sh +# +# Start/stop ejabberd +# + +CTL=/usr/sbin/ejabberdctl +DEFAULT=/etc/ejabberd/ejabberdctl.cfg +INSTALLUSER=ejabberd +RUNDIR=/var/run/ejabberd + +# Read default configuration file if present. +[ -r "$DEFAULT" ] && . "$DEFAULT" + +# Create RUNDIR. +mkrundir() { + install -d -o "$INSTALLUSER" -g "$INSTALLUSER" "$RUNDIR" +} + +case "$1" in + start) + mkrundir || exit 1 + printf "Starting ejabberd... " + "$CTL" start + # Wait until ejabberd is up and running. + if "$CTL" started; then + echo "done" + else + echo "failed" + fi + ;; + stop) + printf "Stopping ejabberd... " + "$CTL" stop > /dev/null + if [ $? -eq 3 ] || "$CTL" stopped; then + echo "OK" + else + echo "failed" + fi + ;; + status) + "$CTL" status + ;; + restart|force-reload) + "$0" stop || true + "$0" start + ;; + live) + mkrundir || exit 1 + "$CTL" live + ;; + *) + echo "Usage: $0 {start|stop|status|restart|force-reload|live}" + exit 1 +esac diff --git a/package/ejabberd/check-erlang-lib b/package/ejabberd/check-erlang-lib new file mode 100755 index 00000000..63f8bf19 --- /dev/null +++ b/package/ejabberd/check-erlang-lib @@ -0,0 +1,55 @@ +#!/bin/sh -e +# Helper to bypass AC_ERLANG_CHECK_LIB +# +# Ejabberd releases do not download specific versions of its erlang +# dependencies. Instead, it clones the master branch of a git +# repository and asks erl to provide the library version. However, +# the target erl program cannot be called from the host. So, this +# script aims at finding the library version installed on the target, +# without calling erlang. + +usage() { + cat <&2 + exit 1 +} + +if [ $# -ne 1 ]; then + usage + exit 0 +else + library="$1" +fi + +target_dir="${TARGET_DIR:-output/target}" + +[ -d "$target_dir" ] || die "TARGET_DIR is not a directory. Please \ +specify the TARGET_DIR environment variable." + +case "$(ls -1d -- "$target_dir/usr/lib/erlang/lib/$library-"* | wc -l)" in + 0) + echo "not found" + ;; + 1) + echo "$target_dir/usr/lib/erlang/lib/$library-"* \ + | sed -e "s,^$target_dir,," + ;; + *) + die "Several versions of $library have been found. Please \ + remove the unused ones." + ;; +esac diff --git a/package/ejabberd/ejabberd.hash b/package/ejabberd/ejabberd.hash new file mode 100644 index 00000000..15e879be --- /dev/null +++ b/package/ejabberd/ejabberd.hash @@ -0,0 +1,4 @@ +# From https://static.process-one.net/ejabberd/downloads/23.04/ejabberd-23.04.tar.gz.sum +sha256 6ff1d41a1ff6261a0c846193647d8ec143e82142859bf1cfdc62299022ceb2ad ejabberd-23.04.tar.gz +# Locally computed +sha256 469bb8cfa3ef22c102875ff31932450c075e6908ff3f7d36893485c0c30898eb COPYING diff --git a/package/ejabberd/ejabberd.mk b/package/ejabberd/ejabberd.mk new file mode 100644 index 00000000..574f9492 --- /dev/null +++ b/package/ejabberd/ejabberd.mk @@ -0,0 +1,67 @@ +################################################################################ +# +# ejabberd +# +################################################################################ + +EJABBERD_VERSION = 23.04 +EJABBERD_SITE = https://static.process-one.net/ejabberd/downloads/$(EJABBERD_VERSION) +EJABBERD_LICENSE = GPL-2.0+ with OpenSSL exception +EJABBERD_LICENSE_FILES = COPYING +EJABBERD_CPE_ID_VENDOR = process-one +EJABBERD_DEPENDENCIES = getent openssl erlang-eimp host-erlang-lager \ + erlang-lager erlang-p1-cache-tab erlang-p1-sip \ + erlang-p1-stringprep erlang-p1-stun erlang-p1-tls \ + erlang-p1-utils erlang-p1-xml erlang-p1-xmpp erlang-p1-yaml \ + erlang-p1-zlib host-erlang-p1-utils host-erlang-p1-xmpp + +# 0001-Makefile.in-do-not-download-or-compile-dependencies.patch +# updates Makefile.in +EJABBERD_USE_AUTOCONF = YES +EJABBERD_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +EJABBERD_DEPENDENCIES += linux-pam +endif + +EJABBERD_ERLANG_LIBS = sasl public_key mnesia inets compiler + +# Guess answers for these tests, configure will bail out otherwise +# saying error: cannot run test program while cross compiling. +EJABBERD_CHECK_LIB = $(TOPDIR)/$(EJABBERD_PKGDIR)/check-erlang-lib +EJABBERD_CONF_ENV = \ + ac_cv_erlang_root_dir="$(HOST_DIR)/lib/erlang" \ + $(foreach lib,$(EJABBERD_ERLANG_LIBS), \ + ac_cv_erlang_lib_dir_$(lib)="`$(EJABBERD_CHECK_LIB) $(lib)`") + +EJABBERD_CONF_OPTS = \ + --enable-system-deps \ + --disable-erlang-version-check + +define EJABBERD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) all install -C $(@D) +endef + +# Replace HOST_DIR prefix to /usr in environment variables of +# ejabberctl script. +define EJABBERD_FIX_EJABBERDCTL + $(SED) 's,="$(HOST_DIR),="/usr,' '$(TARGET_DIR)/usr/sbin/ejabberdctl' +endef + +EJABBERD_POST_INSTALL_TARGET_HOOKS += EJABBERD_FIX_EJABBERDCTL + +define EJABBERD_USERS + ejabberd -1 ejabberd -1 * /var/lib/ejabberd /bin/sh - ejabberd daemon +endef + +define EJABBERD_PERMISSIONS + /etc/ejabberd r 750 root ejabberd - - - - - + /usr/sbin/ejabberdctl f 750 root ejabberd - - - - - +endef + +define EJABBERD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/ejabberd/S50ejabberd \ + $(TARGET_DIR)/etc/init.d/S50ejabberd +endef + +$(eval $(rebar-package)) diff --git a/package/elf2flt/0001-riscv64-handle-R_RISCV_SET_ULEB128-R_RISCV_SUB_ULEB1.patch b/package/elf2flt/0001-riscv64-handle-R_RISCV_SET_ULEB128-R_RISCV_SUB_ULEB1.patch new file mode 100644 index 00000000..3aba6eca --- /dev/null +++ b/package/elf2flt/0001-riscv64-handle-R_RISCV_SET_ULEB128-R_RISCV_SUB_ULEB1.patch @@ -0,0 +1,30 @@ +From 5b8288257c66c76cc578935276dc5b512010b6a3 Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Wed, 21 Aug 2024 07:23:19 +0200 +Subject: [PATCH] riscv64: handle R_RISCV_SET_ULEB128/R_RISCV_SUB_ULEB128 + +For C++ applications or libraries like gdbserver or gmp +we need to handle these relocations. + +Signed-off-by: Waldemar Brodkorb +Upstream: https://github.com/uclinux-dev/elf2flt/pull/35 +--- + elf2flt.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/elf2flt.c b/elf2flt.c +index 04b6b43..d5e32ab 100644 +--- a/elf2flt.c ++++ b/elf2flt.c +@@ -840,6 +840,8 @@ output_relocs ( + case R_RISCV_SET8: + case R_RISCV_SET16: + case R_RISCV_SET32: ++ case R_RISCV_SET_ULEB128: ++ case R_RISCV_SUB_ULEB128: + continue; + case R_RISCV_32: + case R_RISCV_64: +-- +2.30.2 + diff --git a/package/elf2flt/elf2flt.hash b/package/elf2flt/elf2flt.hash new file mode 100644 index 00000000..1e9c7cbe --- /dev/null +++ b/package/elf2flt/elf2flt.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 9fd899d0c66552ecb175ff6764e5af810aa1bb78db38a64768a1b97c3c62199d elf2flt-2024.05.tar.gz +sha256 f20bc5007904094e3a4e9fbcc3526cdd40893f91d458c3139b308e5c4c0899c6 LICENSE.TXT diff --git a/package/elf2flt/elf2flt.mk b/package/elf2flt/elf2flt.mk new file mode 100644 index 00000000..a15c64d0 --- /dev/null +++ b/package/elf2flt/elf2flt.mk @@ -0,0 +1,62 @@ +################################################################################ +# +# elf2flt +# +################################################################################ + +ELF2FLT_VERSION = 2024.05 +ELF2FLT_SITE = $(call github,uclinux-dev,elf2flt,v$(ELF2FLT_VERSION)) +ELF2FLT_LICENSE = GPL-2.0+ +ELF2FLT_LICENSE_FILES = LICENSE.TXT + +HOST_ELF2FLT_DEPENDENCIES = host-binutils host-zlib + +# 0001-elf2flt-handle-binutils-2.34.patch +HOST_ELF2FLT_AUTORECONF = YES + +# elf2flt needs to link against libbfd.a and libiberty.a which are +# provided by host-binutils, but not installed, so we poke directly +# into the host-binutils build directory. Turns out that the location +# of libbfd.a has changed in binutils >= 2.41, so we special case +# binutils 2.39 and 2.40, which are the two remaining versions still +# using the "old" path". Note: the ARC-special binutils version is not +# considered because Buildroot only supports ARC CPUs with a MMU and +# therefore host-elf2flt is never used on ARC. libiberty.a has +# remained at the same location. +ifeq ($(BR2_BINUTILS_VERSION_2_40_X),y) +HOST_ELF2FLT_LIBBFD_PATH = $(HOST_BINUTILS_DIR)/bfd/libbfd.a +else +HOST_ELF2FLT_LIBBFD_PATH = $(HOST_BINUTILS_DIR)/bfd/.libs/libbfd.a +endif + +# It is not exactly a host variant, but more a cross variant, which is +# why we pass a special --target option. +HOST_ELF2FLT_CONF_OPTS = \ + --with-bfd-include-dir=$(HOST_BINUTILS_DIR)/bfd/ \ + --with-binutils-include-dir=$(HOST_BINUTILS_DIR)/include/ \ + --with-libbfd=$(HOST_ELF2FLT_LIBBFD_PATH) \ + --with-libiberty=$(HOST_BINUTILS_DIR)/libiberty/libiberty.a \ + --target=$(GNU_TARGET_NAME) \ + --disable-werror + +HOST_ELF2FLT_LIBS = -lz -ldl + +HOST_ELF2FLT_CONF_ENV = LIBS="$(HOST_ELF2FLT_LIBS)" + +# Hardlinks between binaries in different directories cause a problem +# with rpath fixup, so we de-hardlink those binaries, and replace them +# with copies instead. Note that elf2flt will rename ld to ld.real +# before installing its own ld, but we already took care of the +# original ld from binutils so that it is already de-hardlinked. So +# ld is now the one from elf2flt, and we want to de-hardlinke it. +ELF2FLT_TOOLS = elf2flt flthdr ld +define HOST_ELF2FLT_FIXUP_HARDLINKS + $(foreach tool,$(ELF2FLT_TOOLS),\ + rm -f $(HOST_DIR)/$(GNU_TARGET_NAME)/bin/$(tool) && \ + cp -a $(HOST_DIR)/bin/$(GNU_TARGET_NAME)-$(tool) \ + $(HOST_DIR)/$(GNU_TARGET_NAME)/bin/$(tool) + ) +endef +HOST_ELF2FLT_POST_INSTALL_HOOKS += HOST_ELF2FLT_FIXUP_HARDLINKS + +$(eval $(host-autotools-package)) diff --git a/package/elftosb/0001-fixes-includes.patch b/package/elftosb/0001-fixes-includes.patch new file mode 100644 index 00000000..eaf8ebad --- /dev/null +++ b/package/elftosb/0001-fixes-includes.patch @@ -0,0 +1,19 @@ +This patch uses system include files instead of a hard coded system path to fixe +potential compilation failure on systems that do not populate system header +files in /usr/include/.. + +Signed-off-by: Eric Jarrige +--- +Index: host-elftosb-10.12.01/common/stdafx.h +=================================================================== +--- host-elftosb-10.12.01.orig/common/stdafx.h 2012-01-30 12:43:35.000000000 +0100 ++++ host-elftosb-10.12.01/common/stdafx.h 2012-01-30 12:43:54.000000000 +0100 +@@ -27,7 +27,7 @@ + // For Linux systems only, types.h only defines the signed + // integer types. This is not professional code. + // Update: They are defined in the header files in the more recent version of redhat enterprise gcc. +-#include "/usr/include/sys/types.h" ++#include + #include + //typedef unsigned long uint32_t; + //typedef unsigned short uint16_t; diff --git a/package/elftosb/0002-force-cxx-compiler.patch b/package/elftosb/0002-force-cxx-compiler.patch new file mode 100644 index 00000000..efa92d11 --- /dev/null +++ b/package/elftosb/0002-force-cxx-compiler.patch @@ -0,0 +1,98 @@ +Subject: [PATCH] elftosb: force host C++ compiler + +Because Freescale provides *.cpp sources and elftosb links again libstdc++, +force to use the host c++ compiler. + +This patch avoids the following error occurs: + +gcc AESKey.o Blob.o crc.o DataSource.o DataTarget.o ELFSourceFile.o EncoreBootImage.o EvalContext.o GHSSecInfo.o GlobMatcher.o HexValues.o Logging.o Operation.o OptionDictionary.o options.o OutputSection.o Random.o RijndaelCBCMAC.o rijndael.o SHA1.o SourceFile.o SRecordSourceFile.o stdafx.o StELFFile.o StExecutableImage.o StSRecordFile.o Value.o Version.o format_string.o ExcludesListMatcher.o SearchPath.o DataSourceImager.o IVTDataSource.o BootImageGenerator.o ConversionController.o ElftosbAST.o elftosb.o elftosb_lexer.o ElftosbLexer.o elftosb_parser.tab.o EncoreBootImageGenerator.o -lstdc++ -o elftosb +/usr/bin/ld: ElftosbAST.o: undefined reference to symbol 'powf@@GLIBC_2.2.5' +/usr/bin/ld: note: 'powf@@GLIBC_2.2.5' is defined in DSO /lib64/libm.so.6 so try adding it to the linker command line +/lib64/libm.so.6: could not read symbols: Invalid operation +collect2: error: ld returned 1 exit status + +When compiling with gcc and linking against libstdc++, ld uses libc instead of +libstdc++. +However, libc does not provide all functions libstdc++ does. +Indeed, maths functions are provided by libm, not libc. +Thus, elftosb should either: +- use gcc and link against libc and libm; +- or use g++ and link against libstdc++. + +Because elftosb is written in C++, this patch implement the sencond option, using +g++ and linking against libstdc++. + +Signed-off-by: Samuel Martin + +--- +Index: host-elftosb-10.12.01/makefile.rules +=================================================================== +--- host-elftosb-10.12.01.orig/makefile.rules 2012-06-09 21:12:23.557526100 +0200 ++++ host-elftosb-10.12.01/makefile.rules 2012-06-09 21:15:21.659894571 +0200 +@@ -15,6 +15,8 @@ + # UNAMES is going to be set to either "Linux" or "CYGWIN_NT-5.1" + UNAMES = $(shell uname -s) + ++CXX ?= g++ ++ + #******************************************************************************* + # Directories + +@@ -37,9 +39,9 @@ + #******************************************************************************* + # Build flags +-# gcc Compiler flags ++# Compiler flags + # -g : Produce debugging information. + +-CFLAGS = -g $(INC_PATH) -D${UNAMES} ++CXXFLAGS = -g $(INC_PATH) -D${UNAMES} + + #******************************************************************************* + # File lists +@@ -137,13 +139,13 @@ clean: + ${EXEC_FILE_ELFTOSB2} ${EXEC_FILE_SBTOOL} ${EXEC_FILE_KEYGEN} + + elftosb: ${OBJ_FILES_ELFTOSB2} +- gcc ${OBJ_FILES_ELFTOSB2} ${LIBS} -o ${EXEC_FILE_ELFTOSB2} ++ $(CXX) ${OBJ_FILES_ELFTOSB2} ${LIBS} -o ${EXEC_FILE_ELFTOSB2} + + sbtool: ${OBJ_FILES_SBTOOL} +- gcc ${OBJ_FILES_SBTOOL} ${LIBS} -o ${EXEC_FILE_SBTOOL} ++ $(CXX) ${OBJ_FILES_SBTOOL} ${LIBS} -o ${EXEC_FILE_SBTOOL} + + keygen: ${OBJ_FILES_KEYGEN} +- gcc ${OBJ_FILES_KEYGEN} ${LIBS} -o ${EXEC_FILE_KEYGEN} ++ $(CXX) ${OBJ_FILES_KEYGEN} ${LIBS} -o ${EXEC_FILE_KEYGEN} + + + #ifeq ("${UNAMES}", "Linux") +@@ -153,10 +155,10 @@ keygen: ${OBJ_FILES_KEYGEN} + .SUFFIXES : .c .cpp + + .c.o : +- gcc ${CFLAGS} -c $< ++ $(CC) ${CXXFLAGS} -c $< + + .cpp.o : +- gcc ${CFLAGS} -c $< ++ $(CXX) ${CXXFLAGS} -c $< + + #endif + +@@ -165,13 +167,13 @@ keygen: ${OBJ_FILES_KEYGEN} + + %.d: %.c + @set -e; \ +- $(CC) -MM $(CFLAGS) $< | \ ++ $(CC) -MM $(CXXFLAGS) $< | \ + sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + + %.d: %.cpp + @set -e; \ +- $(CC) -MM $(CFLAGS) $< | \ ++ $(CXX) -MM $(CXXFLAGS) $< | \ + sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + diff --git a/package/elftosb/elftosb.hash b/package/elftosb/elftosb.hash new file mode 100644 index 00000000..fbdd6c4c --- /dev/null +++ b/package/elftosb/elftosb.hash @@ -0,0 +1,4 @@ +# From http://repository.timesys.com/buildsources/e/elftosb/elftosb-10.12.01/elftosb-10.12.01.tar.gz.md5sum +md5 e8005d606c1e0bb3507c82f6eceb3056 elftosb-10.12.01.tar.gz +# locally computed +sha256 c861c25936b7bc0cf180023d540f2b0d0f5892edd27fd00efef4b6234c1df27a COPYING diff --git a/package/elftosb/elftosb.mk b/package/elftosb/elftosb.mk new file mode 100644 index 00000000..44eb98c8 --- /dev/null +++ b/package/elftosb/elftosb.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# elftosb +# +################################################################################ + +ELFTOSB_VERSION = 10.12.01 +ELFTOSB_SITE = http://repository.timesys.com/buildsources/e/elftosb/elftosb-$(ELFTOSB_VERSION) +ELFTOSB_LICENSE = BSD-3-Clause +ELFTOSB_LICENSE_FILES = COPYING + +define HOST_ELFTOSB_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) all +endef + +define HOST_ELFTOSB_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/bld/linux/elftosb $(HOST_DIR)/bin/elftosb + $(INSTALL) -D -m 0755 $(@D)/bld/linux/keygen $(HOST_DIR)/bin/keygen + $(INSTALL) -D -m 0755 $(@D)/bld/linux/sbtool $(HOST_DIR)/bin/sbtool +endef + +$(eval $(host-generic-package)) diff --git a/package/elfutils/0001-Add-a-enable-disable-progs-configure-option.patch b/package/elfutils/0001-Add-a-enable-disable-progs-configure-option.patch new file mode 100644 index 00000000..bac9bc12 --- /dev/null +++ b/package/elfutils/0001-Add-a-enable-disable-progs-configure-option.patch @@ -0,0 +1,76 @@ +From 73e4da5ca780196d23db8029dcd28f87a0402711 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 29 May 2017 23:03:48 +0300 +Subject: [PATCH] Add a --{enable,disable}-progs configure option + +Add a --{enable,disable}-progs configuration option to elfutils. This +allows to selectively disable the compilation of the elfutils programs +(in which case only the libraries are built and installed). This is +useful because the programs are often not needed, and also because +building the programs against uClibc causes several issues (lack of +obstack_printf() in uClibc for example). + +Based on the former patch by Thomas Petazzoni. + +[Vincent: tweak patch for 0.166] +[Bernd: rebased patch for 0.177] + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Vicente Olivert Riera +Signed-off-by: Bernd Kuhls +[Rebased on 0.183] +Signed-off-by: Peter Seiderer +[Fabrice: don't error out if obstack is not found] +Signed-off-by: Fabrice Fontaine +--- + Makefile.am | 6 +++++- + configure.ac | 6 ++++++ + 2 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 9c47afa..edf8dfc 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -26,8 +26,12 @@ AM_MAKEFLAGS = --no-print-directory + + pkginclude_HEADERS = version.h + ++if ENABLE_PROGS ++PROGS_SUBDIR = src ++endif ++ + SUBDIRS = config lib libelf libcpu backends libebl libdwelf libdwfl libdw \ +- libasm debuginfod src po doc tests ++ libasm debuginfod $(PROGS_SUBDIR) po doc tests + + EXTRA_DIST = elfutils.spec GPG-KEY NOTES CONTRIBUTING \ + COPYING COPYING-GPLV2 COPYING-LGPLV3 +diff --git a/configure.ac b/configure.ac +index d345495..0dd4b1e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -393,6 +393,12 @@ AS_HELP_STRING([--enable-tests-rpath],[build $ORIGIN-using rpath into tests]), + [tests_use_rpath=$enableval], [tests_use_rpath=no]) + AM_CONDITIONAL(TESTS_RPATH, test "$tests_use_rpath" = yes) + ++AC_ARG_ENABLE([progs], ++ AS_HELP_STRING([--enable-progs], [enable progs]), ++ enable_progs=$enableval, ++ enable_progs=yes) ++AM_CONDITIONAL(ENABLE_PROGS, test "$enable_progs" = yes) ++ + dnl zlib is mandatory. + save_LIBS="$LIBS" + LIBS= +@@ -579,7 +585,7 @@ saved_LIBS="$LIBS" + AC_SEARCH_LIBS([_obstack_free], [obstack]) + LIBS="$saved_LIBS" + case "$ac_cv_search__obstack_free" in +- no) AC_MSG_FAILURE([failed to find _obstack_free]) ;; ++ no) obstack_LIBS= ;; + -l*) obstack_LIBS="$ac_cv_search__obstack_free" ;; + *) obstack_LIBS= ;; + esac +-- +2.30.1 + diff --git a/package/elfutils/0002-Really-make-Werror-conditional-to-BUILD_WERROR.patch b/package/elfutils/0002-Really-make-Werror-conditional-to-BUILD_WERROR.patch new file mode 100644 index 00000000..f35c2d48 --- /dev/null +++ b/package/elfutils/0002-Really-make-Werror-conditional-to-BUILD_WERROR.patch @@ -0,0 +1,40 @@ +From 064b74d5e19847794072781405eafe8dfbfca331 Mon Sep 17 00:00:00 2001 +From: Vicente Olivert Riera +Date: Mon, 29 May 2017 23:24:42 +0300 +Subject: [PATCH] Really make -Werror conditional to BUILD_WERROR + +Otherwise it will fail with an error message like this one: + +elf_getarsym.c:290:9: error: 'n' may be used uninitialized in this +function [-Werror=maybe-uninitialized] + arsym[n].as_name = NULL; + ^ +cc1: all warnings being treated as errors + +[Vincent: tweak patch for 0.166] +[Bernd: rebased patch for 0.177 & 0.189] +[Dario: make the patch to be applied with fuzz factor 0] + +Signed-off-by: "Yann E. MORIN" +Signed-off-by: Vicente Olivert Riera +Signed-off-by: Bernd Kuhls +Signed-off-by: Dario Binacchi +--- + config/eu.am | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/config/eu.am b/config/eu.am +index e6c241f9d88a..cad1baa27a5f 100644 +--- a/config/eu.am ++++ b/config/eu.am +@@ -99,7 +99,6 @@ AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \ + $(LOGICAL_OP_WARNING) $(DUPLICATED_COND_WARNING) \ + $(NULL_DEREFERENCE_WARNING) $(IMPLICIT_FALLTHROUGH_WARNING) \ + $(USE_AFTER_FREE3_WARNING) \ +- $(if $($(*F)_no_Werror),,-Werror) \ + $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \ + $(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \ + $(if $($(*F)_no_Wpacked_not_aligned),$(NO_PACKED_NOT_ALIGNED_WARNING),) \ +-- +2.43.0 + diff --git a/package/elfutils/Config.in b/package/elfutils/Config.in new file mode 100644 index 00000000..c355048c --- /dev/null +++ b/package/elfutils/Config.in @@ -0,0 +1,31 @@ +comment "elfutils needs a toolchain w/ wchar, dynamic library, threads" + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_ELFUTILS + bool "elfutils" + depends on BR2_USE_WCHAR + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_ARGP_STANDALONE if !BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_MUSL_FTS if !BR2_TOOLCHAIN_USES_GLIBC + help + Libraries/utilities to handle ELF objects (drop in + replacement for libelf). + + Note that this option only installs the libraries, and not + the programs. + + https://sourceware.org/elfutils/ + +if BR2_PACKAGE_ELFUTILS + +config BR2_PACKAGE_ELFUTILS_PROGS + bool "Install programs" + depends on BR2_TOOLCHAIN_USES_GLIBC + help + This option tells elfutils to not only install the libelf + libraries, but also the elfutils programs. + +endif diff --git a/package/elfutils/elfutils.hash b/package/elfutils/elfutils.hash new file mode 100644 index 00000000..e3cc67dc --- /dev/null +++ b/package/elfutils/elfutils.hash @@ -0,0 +1,6 @@ +# From https://sourceware.org/elfutils/ftp/0.189/sha512.sum +sha512 93a877e34db93e5498581d0ab2d702b08c0d87e4cafd9cec9d6636dfa85a168095c305c11583a5b0fb79374dd93bc8d0e9ce6016e6c172764bcea12861605b71 elfutils-0.189.tar.bz2 +# Locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING-GPLV2 +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 COPYING-LGPLV3 diff --git a/package/elfutils/elfutils.mk b/package/elfutils/elfutils.mk new file mode 100644 index 00000000..8738af77 --- /dev/null +++ b/package/elfutils/elfutils.mk @@ -0,0 +1,95 @@ +################################################################################ +# +# elfutils +# +################################################################################ + +ELFUTILS_VERSION = 0.189 +ELFUTILS_SOURCE = elfutils-$(ELFUTILS_VERSION).tar.bz2 +ELFUTILS_SITE = https://sourceware.org/elfutils/ftp/$(ELFUTILS_VERSION) +ELFUTILS_INSTALL_STAGING = YES +ELFUTILS_LICENSE = GPL-2.0+ or LGPL-3.0+ (library) +ELFUTILS_LICENSE_FILES = COPYING COPYING-GPLV2 COPYING-LGPLV3 +ELFUTILS_CPE_ID_VALID = YES +ELFUTILS_DEPENDENCIES = host-pkgconf zlib $(TARGET_NLS_DEPENDENCIES) +HOST_ELFUTILS_DEPENDENCIES = host-pkgconf host-zlib host-bzip2 host-xz + +# We patch configure.ac +ELFUTILS_AUTORECONF = YES +HOST_ELFUTILS_AUTORECONF = YES + +# Pass a custom program prefix to avoid a naming conflict between +# elfutils binaries and binutils binaries. +ELFUTILS_CONF_OPTS += \ + --program-prefix="eu-" + +HOST_ELFUTILS_CONF_OPTS = \ + --with-bzlib \ + --with-lzma \ + --without-zstd \ + --disable-demangler \ + --disable-progs + +ELFUTILS_LDFLAGS = $(TARGET_LDFLAGS) \ + $(TARGET_NLS_LIBS) + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +ELFUTILS_LDFLAGS += -latomic +endif + +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),) +ELFUTILS_DEPENDENCIES += musl-fts argp-standalone +endif + +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +ELFUTILS_CONF_OPTS += --disable-symbol-versioning +endif + +ifeq ($(BR2_microblaze),y) +ELFUTILS_CONF_OPTS += --disable-symbol-versioning +endif + +# disable for now, needs "distro" support +ELFUTILS_CONF_OPTS += --disable-libdebuginfod --disable-debuginfod +HOST_ELFUTILS_CONF_OPTS += --disable-libdebuginfod --disable-debuginfod + +ELFUTILS_CONF_ENV += \ + LDFLAGS="$(ELFUTILS_LDFLAGS)" + +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +ELFUTILS_CONF_OPTS += --enable-demangler +else +ELFUTILS_CONF_OPTS += --disable-demangler +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +ELFUTILS_DEPENDENCIES += bzip2 +ELFUTILS_CONF_OPTS += --with-bzlib +else +ELFUTILS_CONF_OPTS += --without-bzlib +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +ELFUTILS_DEPENDENCIES += xz +ELFUTILS_CONF_OPTS += --with-lzma +else +ELFUTILS_CONF_OPTS += --without-lzma +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +ELFUTILS_DEPENDENCIES += zstd +ELFUTILS_CONF_OPTS += --with-zstd +else +ELFUTILS_CONF_OPTS += --without-zstd +endif + +ifeq ($(BR2_PACKAGE_ELFUTILS_PROGS),y) +ELFUTILS_CONF_OPTS += --enable-progs +ELFUTILS_LICENSE += , GPL-3.0+ (programs) +ELFUTILS_LICENSE_FILES += COPYING +else +ELFUTILS_CONF_OPTS += --disable-progs +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/ell/Config.in b/package/ell/Config.in new file mode 100644 index 00000000..c7c91648 --- /dev/null +++ b/package/ell/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_ELL + bool "ell" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 + depends on BR2_USE_WCHAR + help + Embedded Linux library (ell) + + https://01.org/ell + +comment "ell needs a toolchain w/ wchar, headers >= 4.12" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 diff --git a/package/ell/ell.hash b/package/ell/ell.hash new file mode 100644 index 00000000..3adca751 --- /dev/null +++ b/package/ell/ell.hash @@ -0,0 +1,5 @@ +# From https://mirrors.edge.kernel.org/pub/linux/libs/ell/sha256sums.asc +sha256 9ee7ac57b188d391cead705d3596a6d3240341786475149db297782a52269aa5 ell-0.65.tar.xz + +# License files +sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING diff --git a/package/ell/ell.mk b/package/ell/ell.mk new file mode 100644 index 00000000..a6826355 --- /dev/null +++ b/package/ell/ell.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# ell +# +################################################################################ + +ELL_VERSION = 0.65 +ELL_SOURCE = ell-$(ELL_VERSION).tar.xz +ELL_SITE = $(BR2_KERNEL_MIRROR)/linux/libs/ell +ELL_LICENSE = LGPL-2.1+ +ELL_LICENSE_FILES = COPYING +ELL_INSTALL_STAGING = YES + +ELL_DEPENDENCIES = host-pkgconf + +# disable ell/glib main loop example +ELL_CONF_OPTS = --disable-glib + +$(eval $(autotools-package)) diff --git a/package/embiggen-disk/Config.in b/package/embiggen-disk/Config.in new file mode 100644 index 00000000..c323fb1b --- /dev/null +++ b/package/embiggen-disk/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_EMBIGGEN_DISK + bool "embiggen-disk" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_TOOLCHAIN_USES_UCLIBC # no fexecve + depends on BR2_USE_MMU # util-linux + select BR2_PACKAGE_HOST_GO + select BR2_PACKAGE_UTIL_LINUX # sfdisk + select BR2_PACKAGE_UTIL_LINUX_BINARIES # sfdisk + help + embiggen-disk is a tool to resize disk partitions at runtime. + + https://github.com/bradfitz/embiggen-disk + +comment "embiggen-disk needs a glibc or musl toolchain w/ threads" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS && \ + BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_UCLIBC diff --git a/package/embiggen-disk/embiggen-disk.hash b/package/embiggen-disk/embiggen-disk.hash new file mode 100644 index 00000000..02c99add --- /dev/null +++ b/package/embiggen-disk/embiggen-disk.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 25e536bd58969077554927a456cd3cb79e21f126e47545ba511abe64a0f3ba5e embiggen-disk-v20240521-go2.tar.gz +sha256 063aedec1652c5a05c2d04c40e032b932453142ee8ef7fd53c04a9acc127fc95 LICENSE diff --git a/package/embiggen-disk/embiggen-disk.mk b/package/embiggen-disk/embiggen-disk.mk new file mode 100644 index 00000000..47b86c07 --- /dev/null +++ b/package/embiggen-disk/embiggen-disk.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# embiggen-disk +# +################################################################################ + +EMBIGGEN_DISK_VERSION = v20240521 +EMBIGGEN_DISK_SITE = $(call github,skiffos,embiggen-disk,$(EMBIGGEN_DISK_VERSION)) +EMBIGGEN_DISK_LICENSE = Apache-2.0 +EMBIGGEN_DISK_LICENSE_FILES = LICENSE + +$(eval $(golang-package)) diff --git a/package/emlog/0001-Fix-build-on-Linux-6.4.patch b/package/emlog/0001-Fix-build-on-Linux-6.4.patch new file mode 100644 index 00000000..65440c19 --- /dev/null +++ b/package/emlog/0001-Fix-build-on-Linux-6.4.patch @@ -0,0 +1,34 @@ +From 32ec7f7b4eb1466100d59aaea8855d770af54327 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sat, 8 Jul 2023 13:10:24 +0200 +Subject: [PATCH] Fix build on Linux 6.4 + +Needed after upstream changes in kernel 6.4: +https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/diff/include/linux/device/class.h?id=1aaba11da9aa + +Upstream: https://github.com/nicupavel/emlog/pull/15 + +Signed-off-by: Bernd Kuhls +--- + emlog.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/emlog.c b/emlog.c +index 4462466..2ead738 100644 +--- a/emlog.c ++++ b/emlog.c +@@ -500,7 +500,11 @@ static int __init emlog_init(void) + + pr_info("version %s running, major is %u, MINOR is %u, max size %d K.\n", EMLOG_VERSION, (unsigned)MAJOR(emlog_dev_type), (unsigned)MINOR(emlog_dev_type), emlog_max_size); + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 4, 0) + emlog_class = class_create(THIS_MODULE, DEVICE_NAME); ++#else ++ emlog_class = class_create(DEVICE_NAME); ++#endif + if (emlog_class == NULL) { + pr_err("Can not class_create.\n"); + ret_val = -4; goto emlog_init_error; +-- +2.39.2 + diff --git a/package/emlog/Config.in b/package/emlog/Config.in new file mode 100644 index 00000000..77d0ca35 --- /dev/null +++ b/package/emlog/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_EMLOG + bool "emlog" + depends on BR2_LINUX_KERNEL + help + emlog is a Linux kernel module that makes it easy to access + the most recent (and only the most recent) output from a + process. It works just like "tail -f" on a log file, except + that the storage required never grows. This can be useful in + embedded systems where there isn't enough memory or disk + space for keeping complete log files, but the most recent + debugging messages are sometimes needed (e.g., after an + error is observed). + + https://github.com/nicupavel/emlog + +comment "emlog needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL diff --git a/package/emlog/emlog.hash b/package/emlog/emlog.hash new file mode 100644 index 00000000..6acd70b3 --- /dev/null +++ b/package/emlog/emlog.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 76082cf981b0865c8a1b300d4641c790a6556461901bbb63700df38300277271 emlog-0.70.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/emlog/emlog.mk b/package/emlog/emlog.mk new file mode 100644 index 00000000..7d63916a --- /dev/null +++ b/package/emlog/emlog.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# emlog +# +################################################################################ + +EMLOG_VERSION = 0.70 +EMLOG_SITE = $(call github,nicupavel,emlog,emlog-$(EMLOG_VERSION)) +EMLOG_LICENSE = GPL-2.0 +EMLOG_LICENSE_FILES = COPYING + +# CVE-2019-16868 and CVE-2019-17073 are misclassified (by our CVE tracker) as +# affecting emlog, while in fact it affects http://www.emlog.net. +EMLOG_IGNORE_CVES += CVE-2019-16868 CVE-2019-17073 + +define EMLOG_BUILD_CMDS + $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) nbcat +endef + +# make install tries to strip, so install manually. +define EMLOG_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/nbcat $(TARGET_DIR)/usr/bin/nbcat +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/empty/0001-respect-LDFLAGS.patch b/package/empty/0001-respect-LDFLAGS.patch new file mode 100644 index 00000000..64e8b5ca --- /dev/null +++ b/package/empty/0001-respect-LDFLAGS.patch @@ -0,0 +1,21 @@ +downloaded from +http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/app-misc/empty/files/empty-respect-LDFLAGS.patch?view=markup + +Reported on the Gentoo bug tracker +https://bugs.gentoo.org/show_bug.cgi?id=429664 + +Upstream: https://sourceforge.net/tracker/?func=detail&aid=3554236&group_id=136798&atid=736886 + +Signed-off-by: Bernd Kuhls + +--- empty-0.6.18b/Makefile ++++ empty-0.6.18b/Makefile +@@ -22,7 +22,7 @@ + UnixWare-gcc OpenUNIX-gcc HP-UX-gcc SunOS-gcc + + all: +- ${CC} ${CFLAGS} -Wall ${LIBS} -o empty empty.c ++ ${CC} ${CFLAGS} ${LDFLAGS} empty.c ${LIBS} -o empty + + FreeBSD: all + NetBSD: all diff --git a/package/empty/Config.in b/package/empty/Config.in new file mode 100644 index 00000000..f73bce89 --- /dev/null +++ b/package/empty/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_EMPTY + bool "empty" + depends on BR2_USE_MMU # uses fork() + help + Run processes and applications under pseudo-terminal (PTY) + sessions. + + http://empty.sourceforge.net/ diff --git a/package/empty/empty.hash b/package/empty/empty.hash new file mode 100644 index 00000000..5c7daa00 --- /dev/null +++ b/package/empty/empty.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 8a7ca8c7099dc6d6743ac7eafc0be3b1f8991d2c8f20cf66ce900c7f08e010bd empty-0.6.23c.tgz +sha256 6433f4490a82b80ddac37f24cebfe8f3cd7de5686ebb9737281d47997a9941d6 COPYRIGHT diff --git a/package/empty/empty.mk b/package/empty/empty.mk new file mode 100644 index 00000000..24135b2f --- /dev/null +++ b/package/empty/empty.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# empty +# +################################################################################ + +EMPTY_VERSION = 0.6.23c +EMPTY_SOURCE = empty-$(EMPTY_VERSION).tgz +EMPTY_SITE = http://downloads.sourceforge.net/project/empty/empty/empty-$(EMPTY_VERSION) +EMPTY_LICENSE = BSD-3-Clause +EMPTY_LICENSE_FILES = COPYRIGHT + +define EMPTY_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all +endef + +define EMPTY_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/empty $(TARGET_DIR)/usr/bin/empty +endef + +$(eval $(generic-package)) diff --git a/package/enchant/Config.in b/package/enchant/Config.in new file mode 100644 index 00000000..4a39d03f --- /dev/null +++ b/package/enchant/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_ENCHANT + bool "enchant" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + help + Enchant is a spell-checking library that provides a consistent + API across a number of spell-checking system backends. + + https://abiword.github.io/enchant/ + +comment "enchant needs a toolchain w/ C++, threads, wchar" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/enchant/enchant.hash b/package/enchant/enchant.hash new file mode 100644 index 00000000..36ac4e07 --- /dev/null +++ b/package/enchant/enchant.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 3da12103f11cf49c3cf2fd2ce3017575c5321a489e5b9bfa81dd91ec413f3891 enchant-2.3.3.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB diff --git a/package/enchant/enchant.mk b/package/enchant/enchant.mk new file mode 100644 index 00000000..ee6f0619 --- /dev/null +++ b/package/enchant/enchant.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# enchant +# +################################################################################ + +ENCHANT_VERSION = 2.3.3 +ENCHANT_SITE = \ + https://github.com/AbiWord/enchant/releases/download/v$(ENCHANT_VERSION) +ENCHANT_INSTALL_STAGING = YES +ENCHANT_DEPENDENCIES = libglib2 host-pkgconf +ENCHANT_LICENSE = LGPL-2.1+ +ENCHANT_LICENSE_FILES = COPYING.LIB + +$(eval $(autotools-package)) diff --git a/package/enet/Config.in b/package/enet/Config.in new file mode 100644 index 00000000..ef3f1523 --- /dev/null +++ b/package/enet/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_ENET + bool "enet" + help + ENet's purpose is to provide a relatively thin, simple + and robust network communication layer on top of UDP + (User Datagram Protocol).The primary feature it + provides is optional reliable, in-order delivery of + packets. + + ENet omits certain higher level networking features + such as authentication, lobbying, server discovery, + encryption, or other similar tasks that are + particularly application specific so that the library + remains flexible, portable, and easily embeddable. + + http://enet.bespin.org diff --git a/package/enet/enet.hash b/package/enet/enet.hash new file mode 100644 index 00000000..2643878c --- /dev/null +++ b/package/enet/enet.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 a38f0f194555d558533b8b15c0c478e946310022d0ec7b34334e19e4574dcedc enet-1.3.17.tar.gz +sha256 77f94e3be39938801163844b8bf9a4f12badcc0da136e9886e7da14a816d74d3 LICENSE diff --git a/package/enet/enet.mk b/package/enet/enet.mk new file mode 100644 index 00000000..e2feb26b --- /dev/null +++ b/package/enet/enet.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# enet +# +################################################################################ + +ENET_VERSION = 1.3.17 +ENET_SITE = http://enet.bespin.org/download +ENET_LICENSE = MIT +ENET_LICENSE_FILES = LICENSE + +ENET_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/enlightenment/Config.in b/package/enlightenment/Config.in new file mode 100644 index 00000000..cdf4d921 --- /dev/null +++ b/package/enlightenment/Config.in @@ -0,0 +1,38 @@ +config BR2_PACKAGE_ENLIGHTENMENT + bool "enlightenment" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # efl svg -> librsvg + # libevas-generic-loaders-svg -> librsvg -> glib2 / pango + depends on BR2_USE_WCHAR + depends on BR2_INSTALL_LIBSTDCPP + # libedbus -> dbus + # libedbus -> glib2, libevas + depends on BR2_TOOLCHAIN_HAS_THREADS + # libedbus -> dbus, efl libraries + depends on BR2_USE_MMU + depends on BR2_PACKAGE_EFL + depends on BR2_PACKAGE_HAS_UDEV # efl (eeze) -> libudev + depends on BR2_PACKAGE_XORG7 + # libevas-generic-loaders-svg -> librsvg -> pango -> harfbuzz + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + select BR2_PACKAGE_EFL_X_XLIB + select BR2_PACKAGE_EFL_EEZE + select BR2_PACKAGE_EFL_JPEG # needed at runtime by enlightenment_start + select BR2_PACKAGE_EFL_SVG + select BR2_PACKAGE_XCB_UTIL_KEYSYMS + help + Enlightenment, also known simply as E, is a stacking window + manager for the X Window System which can be used alone or + in conjunction with a desktop environment such as GNOME or + KDE. Enlightenment can be used as a substitute for a full + desktop environment. + + https://www.enlightenment.org/ + +comment "enlightenment needs udev /dev management and a toolchain w/ wchar, C++, threads, gcc >= 4.9" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_EFL && BR2_PACKAGE_XORG7 && BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_PACKAGE_HAS_UDEV + depends on BR2_TOOLCHAIN_HAS_SYNC_4 diff --git a/package/enlightenment/enlightenment.hash b/package/enlightenment/enlightenment.hash new file mode 100644 index 00000000..ed5d6b24 --- /dev/null +++ b/package/enlightenment/enlightenment.hash @@ -0,0 +1,5 @@ +# From https://www.enlightenment.org/news/2022-09-15-enlightenment-0.25.4 +sha256 56db5d206b821b9a8831d26e713e410ac70b2255a6f43fcdf7c01eefde23b7a2 enlightenment-0.25.4.tar.xz +# Locally computed +sha256 8d2fbc393e967cd6f5b8559d1744881a6a1ceb3ec6e1c2368c3916809ffccb8d COPYING +sha256 cdc77ee1732455b203610f923fe4196046b3f7509038c48dc0b0c7e3492c23f3 src/modules/wl_weekeyboard/themes/default/fonts/LICENSE.txt diff --git a/package/enlightenment/enlightenment.mk b/package/enlightenment/enlightenment.mk new file mode 100644 index 00000000..836c6e58 --- /dev/null +++ b/package/enlightenment/enlightenment.mk @@ -0,0 +1,58 @@ +################################################################################ +# +# enlightenment +# +################################################################################ + +ENLIGHTENMENT_VERSION = 0.25.4 +ENLIGHTENMENT_SOURCE = enlightenment-$(ENLIGHTENMENT_VERSION).tar.xz +ENLIGHTENMENT_SITE = https://download.enlightenment.org/rel/apps/enlightenment +ENLIGHTENMENT_LICENSE = BSD-2-Clause, OFL-1.1 (font) +ENLIGHTENMENT_LICENSE_FILES = COPYING \ + src/modules/wl_weekeyboard/themes/default/fonts/LICENSE.txt +ENLIGHTENMENT_CPE_ID_VENDOR = enlightenment + +ENLIGHTENMENT_DEPENDENCIES = \ + host-pkgconf \ + host-efl \ + efl \ + xcb-util-keysyms + +ENLIGHTENMENT_CONF_OPTS = \ + -Dedje-cc=$(HOST_DIR)/bin/edje_cc \ + -Deet=$(HOST_DIR)/bin/eet \ + -Deldbus-codegen=$(HOST_DIR)/bin/eldbus-codegen \ + -Dlibexif=false \ + -Dpam=false \ + -Dpolkit=false + +# enlightenment.pc and /usr/lib/enlightenment/modules/*.so +ENLIGHTENMENT_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +ENLIGHTENMENT_CONF_OPTS += -Dsystemd=true +ENLIGHTENMENT_DEPENDENCIES += systemd +else +ENLIGHTENMENT_CONF_OPTS += -Dsystemd=false +endif + +# alsa backend needs mixer support +ifeq ($(BR2_PACKAGE_ALSA_LIB)$(BR2_PACKAGE_ALSA_LIB_MIXER),yy) +ENLIGHTENMENT_CONF_OPTS += -Dmixer=true +ENLIGHTENMENT_DEPENDENCIES += alsa-lib +else +ENLIGHTENMENT_CONF_OPTS += -Dmixer=false +endif + +ifeq ($(BR2_PACKAGE_XKEYBOARD_CONFIG),y) +ENLIGHTENMENT_DEPENDENCIES += xkeyboard-config +endif + +define ENLIGHTENMENT_REMOVE_DOCUMENTATION + rm -rf $(TARGET_DIR)/usr/share/enlightenment/doc/ + rm -f $(TARGET_DIR)/usr/share/enlightenment/COPYING + rm -f $(TARGET_DIR)/usr/share/enlightenment/AUTHORS +endef +ENLIGHTENMENT_POST_INSTALL_TARGET_HOOKS += ENLIGHTENMENT_REMOVE_DOCUMENTATION + +$(eval $(meson-package)) diff --git a/package/enscript/0001-Solving-incompatible-implicit-declaration-of-built-i.patch b/package/enscript/0001-Solving-incompatible-implicit-declaration-of-built-i.patch new file mode 100644 index 00000000..ae950c33 --- /dev/null +++ b/package/enscript/0001-Solving-incompatible-implicit-declaration-of-built-i.patch @@ -0,0 +1,29 @@ +From 300ecf85a8fe166a39f9dd818945c7b8a970db39 Mon Sep 17 00:00:00 2001 +From: Wim Stockman +Date: Mon, 12 Feb 2024 22:52:50 +0100 +Subject: [PATCH] Solving incompatible implicit declaration of built-in + function 'strlen' + +Signed-off-by: Wim Stockman +Signed-off-by: Waldemar Brodkorb +Upstream: https://git.savannah.gnu.org/cgit/enscript.git/commit/?id=300ecf85a8fe166a39f9dd818945c7b8a970db39 +--- + compat/getopt.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/compat/getopt.c b/compat/getopt.c +index 752f28a..19f50e1 100644 +--- a/compat/getopt.c ++++ b/compat/getopt.c +@@ -34,6 +34,8 @@ + #include + #endif + ++#include ++ + #if !defined (__STDC__) || !__STDC__ + /* This is a separate conditional since some stdc systems + reject `defined (const)'. */ +-- +2.39.2 + diff --git a/package/enscript/Config.in b/package/enscript/Config.in new file mode 100644 index 00000000..b95bd92a --- /dev/null +++ b/package/enscript/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_ENSCRIPT + bool "enscript" + help + GNU Enscript is a free replacement for Adobe's enscript + program. + + GNU Enscript converts ASCII files to PostScript, HTML, or RTF + and stores generated output to a file or sends it directly to + the printer. It includes features for `pretty-printing' + (language-sensitive code highlighting) in several programming + languages. + + http://www.gnu.org/software/enscript diff --git a/package/enscript/enscript.hash b/package/enscript/enscript.hash new file mode 100644 index 00000000..c4706c62 --- /dev/null +++ b/package/enscript/enscript.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 6d56bada6934d055b34b6c90399aa85975e66457ac5bf513427ae7fc77f5c0bb enscript-1.6.6.tar.gz +# Locally computed +sha256 fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7 COPYING diff --git a/package/enscript/enscript.mk b/package/enscript/enscript.mk new file mode 100644 index 00000000..441ae3da --- /dev/null +++ b/package/enscript/enscript.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# enscript +# +################################################################################ + +ENSCRIPT_VERSION = 1.6.6 +ENSCRIPT_SITE = $(BR2_GNU_MIRROR)/enscript +ENSCRIPT_LICENSE = GPL-3.0+ +ENSCRIPT_LICENSE_FILES = COPYING +ENSCRIPT_CPE_ID_VENDOR = gnu + +# Enable pthread threads if toolchain supports threads +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +ENSCRIPT_CONF_OPTS += --enable-threads=pth +else +ENSCRIPT_CONF_OPTS += --disable-threads +endif + +$(eval $(autotools-package)) diff --git a/package/environment-setup/Config.in.host b/package/environment-setup/Config.in.host new file mode 100644 index 00000000..c67e3757 --- /dev/null +++ b/package/environment-setup/Config.in.host @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HOST_ENVIRONMENT_SETUP + bool "host environment-setup" + help + Install an helper script to setup a build environment + based on Buildroot. It's useful when you export an sdk + and want to use Buildroot to build an external project. diff --git a/package/environment-setup/environment-setup b/package/environment-setup/environment-setup new file mode 100644 index 00000000..84a9843c --- /dev/null +++ b/package/environment-setup/environment-setup @@ -0,0 +1,25 @@ +cat <<'EOF' + _ _ _ _ _ +| |__ _ _(_) | __| |_ __ ___ ___ | |_ +| '_ \| | | | | |/ _` | '__/ _ \ / _ \| __| +| |_) | |_| | | | (_| | | | (_) | (_) | |_ +|_.__/ \__,_|_|_|\__,_|_| \___/ \___/ \__| + + Making embedded Linux easy! + +Some tips: +* PATH now contains the SDK utilities +* Standard autotools variables (CC, LD, CFLAGS) are exported +* Kernel compilation variables (ARCH, CROSS_COMPILE, KERNELDIR) are exported +* To configure do "./configure $CONFIGURE_FLAGS" or use + the "configure" alias +* To build CMake-based projects, use the "cmake" alias + +EOF +if [ x"$BASH_VERSION" != x"" ] ; then + SDK_PATH=$(dirname $(realpath "${BASH_SOURCE[0]}")) +elif [ x"$ZSH_VERSION" != x"" ] ; then + SDK_PATH=$(dirname $(realpath $0)) +else + echo "unsupported shell" +fi diff --git a/package/environment-setup/environment-setup.mk b/package/environment-setup/environment-setup.mk new file mode 100644 index 00000000..069ee25f --- /dev/null +++ b/package/environment-setup/environment-setup.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# environment-setup +# +################################################################################ + +ENVIRONMENT_SETUP_FILE = $(HOST_DIR)/environment-setup + +define HOST_ENVIRONMENT_SETUP_INSTALL_CMDS + cp package/environment-setup/environment-setup $(ENVIRONMENT_SETUP_FILE) + for var in $(filter-out GIT_DIR=%,$(TARGET_CONFIGURE_OPTS)); do \ + printf "export \"$$var\"\n" >> $(ENVIRONMENT_SETUP_FILE); \ + done + printf "export \"ARCH=$(NORMALIZED_ARCH)\"\n" >> $(ENVIRONMENT_SETUP_FILE) + printf "export \"CROSS_COMPILE=$(TARGET_CROSS)\"\n" >> $(ENVIRONMENT_SETUP_FILE) + printf "export \"CONFIGURE_FLAGS=--target=$(GNU_TARGET_NAME) \ + --host=$(GNU_TARGET_NAME) \ + --build=$(GNU_HOST_NAME) \ + --prefix=/usr \ + --exec-prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --program-prefix=\"\n" >> $(ENVIRONMENT_SETUP_FILE) + printf "alias configure=\"./configure \$${CONFIGURE_FLAGS}\"\n" \ + >> $(ENVIRONMENT_SETUP_FILE) + printf "alias cmake=\"cmake \ + -DCMAKE_TOOLCHAIN_FILE=$(HOST_DIR)/share/buildroot/toolchainfile.cmake \ + -DCMAKE_INSTALL_PREFIX=/usr\"\n" >> $(ENVIRONMENT_SETUP_FILE) + $(SED) 's%$(HOST_DIR)/bin/%%g' \ + -e 's%$(HOST_DIR)%\$$SDK_PATH%g' \ + -e '/^export "PATH=/c\' \ + $(ENVIRONMENT_SETUP_FILE) + printf "export \"PATH=\$$SDK_PATH/bin:\$$SDK_PATH/sbin:\$$PATH\"\n" \ + >> $(ENVIRONMENT_SETUP_FILE) + + $(if $(BR2_LINUX_KERNEL),\ + printf "export \"KERNELDIR=$(LINUX_BUILDDIR)\"\n" \ + >> $(ENVIRONMENT_SETUP_FILE),) +endef + +$(eval $(host-generic-package)) diff --git a/package/erlang-base64url/Config.in b/package/erlang-base64url/Config.in new file mode 100644 index 00000000..7883fa38 --- /dev/null +++ b/package/erlang-base64url/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_ERLANG_BASE64URL + bool "erlang-base64url" + help + URL safe base64-compatible codec. + + https://github.com/dvv/base64url diff --git a/package/erlang-base64url/erlang-base64url.hash b/package/erlang-base64url/erlang-base64url.hash new file mode 100644 index 00000000..f3272966 --- /dev/null +++ b/package/erlang-base64url/erlang-base64url.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 7ef7210effd25ac1f82f190fcfaef53e49d7bc40bb94112c4aa07266c32a851b erlang-base64url-1.0.1.tar.gz +sha256 d59dff2fa4c39f05188ee533fbf06479eef1b47f8cad6353f8ab3726cc6923bc LICENSE.txt diff --git a/package/erlang-base64url/erlang-base64url.mk b/package/erlang-base64url/erlang-base64url.mk new file mode 100644 index 00000000..2d496319 --- /dev/null +++ b/package/erlang-base64url/erlang-base64url.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# erlang-base64url +# +################################################################################ + +ERLANG_BASE64URL_VERSION = 1.0.1 +ERLANG_BASE64URL_SITE = $(call github,dvv,base64url,$(ERLANG_BASE64URL_VERSION)) +ERLANG_BASE64URL_LICENSE = MIT +ERLANG_BASE64URL_LICENSE_FILES = LICENSE.txt + +$(eval $(rebar-package)) diff --git a/package/erlang-eimp/Config.in b/package/erlang-eimp/Config.in new file mode 100644 index 00000000..5c207e9c --- /dev/null +++ b/package/erlang-eimp/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_ERLANG_EIMP + bool "erlang-eimp" + select BR2_PACKAGE_ERLANG_P1_UTILS + select BR2_PACKAGE_GD + select BR2_PACKAGE_GD_WEBPNG + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_WEBP + help + Erlang Image Manipulation Process + + https://github.com/processone/eimp diff --git a/package/erlang-eimp/erlang-eimp.hash b/package/erlang-eimp/erlang-eimp.hash new file mode 100644 index 00000000..26e8addd --- /dev/null +++ b/package/erlang-eimp/erlang-eimp.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 7023b86bc7cf3551fd876a1361ceb2443bdf1c1be9f98a4d9a9a90eda3353b51 erlang-eimp-1.0.22.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/erlang-eimp/erlang-eimp.mk b/package/erlang-eimp/erlang-eimp.mk new file mode 100644 index 00000000..68d0d9e9 --- /dev/null +++ b/package/erlang-eimp/erlang-eimp.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# erlang-eimp +# +################################################################################ + +ERLANG_EIMP_VERSION = 1.0.22 +ERLANG_EIMP_SITE = $(call github,processone,eimp,$(ERLANG_EIMP_VERSION)) +ERLANG_EIMP_LICENSE = Apache-2.0 +ERLANG_EIMP_LICENSE_FILES = LICENSE.txt +ERLANG_EIMP_DEPENDENCIES = erlang-p1-utils gd jpeg libpng webp + +$(eval $(rebar-package)) diff --git a/package/erlang-goldrush/Config.in b/package/erlang-goldrush/Config.in new file mode 100644 index 00000000..2ee579a7 --- /dev/null +++ b/package/erlang-goldrush/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_ERLANG_GOLDRUSH + bool "erlang-goldrush" + help + Goldrush is a small Erlang app that provides fast event + stream processing. + + https://github.com/DeadZen/goldrush diff --git a/package/erlang-goldrush/erlang-goldrush.hash b/package/erlang-goldrush/erlang-goldrush.hash new file mode 100644 index 00000000..ff4c8d64 --- /dev/null +++ b/package/erlang-goldrush/erlang-goldrush.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 45eb313413226933fcb8d723d087e82563dbd80897b236c45ac3a7016a7d192f erlang-goldrush-0.2.0.tar.gz +sha256 335dd315c1bf12bd9bde777666c45e92652c9fe633101b12fc6f927b88433b6f LICENSE diff --git a/package/erlang-goldrush/erlang-goldrush.mk b/package/erlang-goldrush/erlang-goldrush.mk new file mode 100644 index 00000000..562317b7 --- /dev/null +++ b/package/erlang-goldrush/erlang-goldrush.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# erlang-goldrush +# +################################################################################ + +ERLANG_GOLDRUSH_VERSION = 0.2.0 +ERLANG_GOLDRUSH_SITE = $(call github,DeadZen,goldrush,$(ERLANG_GOLDRUSH_VERSION)) +ERLANG_GOLDRUSH_LICENSE = ISC +ERLANG_GOLDRUSH_LICENSE_FILES = LICENSE +ERLANG_GOLDRUSH_INSTALL_STAGING = YES + +$(eval $(rebar-package)) +$(eval $(host-rebar-package)) diff --git a/package/erlang-idna/Config.in b/package/erlang-idna/Config.in new file mode 100644 index 00000000..de711668 --- /dev/null +++ b/package/erlang-idna/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_ERLANG_IDNA + bool "erlang-idna" + help + A pure Erlang IDNA implementation that follows RFC5891. + + https://github.com/benoitc/erlang-idna diff --git a/package/erlang-idna/erlang-idna.hash b/package/erlang-idna/erlang-idna.hash new file mode 100644 index 00000000..7ee48071 --- /dev/null +++ b/package/erlang-idna/erlang-idna.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 916b092cb8d35ca6e63ec183a674a28ff2f745ce05fd0c9c06da34875f6fe8d8 erlang-idna-230a917.tar.gz +sha256 95f5c9410a95332b0833c4606028ee00008cd8c497336e230df3144d1a720bda LICENSE diff --git a/package/erlang-idna/erlang-idna.mk b/package/erlang-idna/erlang-idna.mk new file mode 100644 index 00000000..4ef34e82 --- /dev/null +++ b/package/erlang-idna/erlang-idna.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# erlang-idna +# +################################################################################ + +ERLANG_IDNA_VERSION = 230a917 +ERLANG_IDNA_SITE = $(call github,benoitc,erlang-idna,$(ERLANG_IDNA_VERSION)) +ERLANG_IDNA_LICENSE = MIT +ERLANG_IDNA_LICENSE_FILES = LICENSE + +$(eval $(rebar-package)) diff --git a/package/erlang-jiffy/Config.in b/package/erlang-jiffy/Config.in new file mode 100644 index 00000000..d65f42c9 --- /dev/null +++ b/package/erlang-jiffy/Config.in @@ -0,0 +1,10 @@ +comment "erlang-jiffy needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_ERLANG_JIFFY + bool "erlang-jiffy" + depends on BR2_INSTALL_LIBSTDCPP + help + JSON NIFs for Erlang. + + https://github.com/davisp/jiffy diff --git a/package/erlang-jiffy/erlang-jiffy.hash b/package/erlang-jiffy/erlang-jiffy.hash new file mode 100644 index 00000000..7c314694 --- /dev/null +++ b/package/erlang-jiffy/erlang-jiffy.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 f43bafc1ae5c9c1a7843a4c6b2d0b7ef57188e567381bf734035ef9701a7458f erlang-jiffy-1.1.2.tar.gz +sha256 0fa8afad2f02c08850a16e36fe55376ee19732b3a116a0207f2a73c857777a49 LICENSE diff --git a/package/erlang-jiffy/erlang-jiffy.mk b/package/erlang-jiffy/erlang-jiffy.mk new file mode 100644 index 00000000..b3f7cf82 --- /dev/null +++ b/package/erlang-jiffy/erlang-jiffy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# erlang-jiffy +# +################################################################################ + +ERLANG_JIFFY_VERSION = 1.1.2 +ERLANG_JIFFY_SITE = $(call github,davisp,jiffy,$(ERLANG_JIFFY_VERSION)) +ERLANG_JIFFY_LICENSE = MIT (core), \ + BSD-3-Clause (Google double conversion library), \ + BSD-3-Clause (tests) +ERLANG_JIFFY_LICENSE_FILES = LICENSE + +$(eval $(rebar-package)) diff --git a/package/erlang-jose/Config.in b/package/erlang-jose/Config.in new file mode 100644 index 00000000..8101ff41 --- /dev/null +++ b/package/erlang-jose/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_ERLANG_JOSE + bool "erlang-jose" + select BR2_PACKAGE_ERLANG_BASE64URL + help + JSON Object Signing and Encryption (JOSE) for Erlang and + Elixir. + + https://github.com/potatosalad/erlang-jose diff --git a/package/erlang-jose/erlang-jose.hash b/package/erlang-jose/erlang-jose.hash new file mode 100644 index 00000000..1e763fd5 --- /dev/null +++ b/package/erlang-jose/erlang-jose.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2186b93ad20d386e6db9f673c135c48568a55de42b5a1d839518c65509af4ea5 erlang-jose-1.11.5.tar.gz +sha256 6397e2bd9a35a64c1bb798b937071fbe49d90667f717e65c74a0d0fe93d5c1be LICENSE.md diff --git a/package/erlang-jose/erlang-jose.mk b/package/erlang-jose/erlang-jose.mk new file mode 100644 index 00000000..4df5173b --- /dev/null +++ b/package/erlang-jose/erlang-jose.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# erlang-jose +# +################################################################################ + +ERLANG_JOSE_VERSION = 1.11.5 +ERLANG_JOSE_SITE = $(call github,potatosalad,erlang-jose,$(ERLANG_JOSE_VERSION)) +ERLANG_JOSE_LICENSE = MIT +ERLANG_JOSE_LICENSE_FILES = LICENSE.md +ERLANG_JOSE_DEPENDENCIES = erlang-base64url + +$(eval $(rebar-package)) diff --git a/package/erlang-lager/Config.in b/package/erlang-lager/Config.in new file mode 100644 index 00000000..d088821a --- /dev/null +++ b/package/erlang-lager/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_ERLANG_LAGER + bool "erlang-lager" + select BR2_PACKAGE_ERLANG_GOLDRUSH + help + Lager (as in the beer) is a logging framework for + Erlang. Its purpose is to provide a more traditional way to + perform logging in an erlang application that plays nicely + with traditional UNIX logging tools like logrotate and + syslog. + + https://github.com/basho/lager diff --git a/package/erlang-lager/erlang-lager.hash b/package/erlang-lager/erlang-lager.hash new file mode 100644 index 00000000..036f36f9 --- /dev/null +++ b/package/erlang-lager/erlang-lager.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 197c4e6751ad7cde934633b6b53929964c0bfae756e86864f9c198346cb25fcf erlang-lager-3.9.2.tar.gz +sha256 809fa1ed21450f59827d1e9aec720bbc4b687434fa22283c6cb5dd82a47ab9c0 LICENSE diff --git a/package/erlang-lager/erlang-lager.mk b/package/erlang-lager/erlang-lager.mk new file mode 100644 index 00000000..d540d038 --- /dev/null +++ b/package/erlang-lager/erlang-lager.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# erlang-lager +# +################################################################################ + +ERLANG_LAGER_VERSION = 3.9.2 +ERLANG_LAGER_SITE = $(call github,erlang-lager,lager,$(ERLANG_LAGER_VERSION)) +ERLANG_LAGER_LICENSE = Apache-2.0 +ERLANG_LAGER_LICENSE_FILES = LICENSE +ERLANG_LAGER_DEPENDENCIES = erlang-goldrush +HOST_ERLANG_LAGER_DEPENDENCIES = host-erlang-goldrush + +$(eval $(rebar-package)) +$(eval $(host-rebar-package)) diff --git a/package/erlang-p1-acme/Config.in b/package/erlang-p1-acme/Config.in new file mode 100644 index 00000000..2c0d1d03 --- /dev/null +++ b/package/erlang-p1-acme/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_ERLANG_P1_ACME + bool "erlang-p1-acme" + depends on BR2_INSTALL_LIBSTDCPP # erlang-jiffy + select BR2_PACKAGE_ERLANG_IDNA + select BR2_PACKAGE_ERLANG_JIFFY + select BR2_PACKAGE_ERLANG_JOSE + select BR2_PACKAGE_ERLANG_P1_YCONF + help + ACME client library for Erlang. + + https://github.com/processone/p1_acme + +comment "erlang-p1-acme needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/erlang-p1-acme/erlang-p1-acme.hash b/package/erlang-p1-acme/erlang-p1-acme.hash new file mode 100644 index 00000000..e417d4b1 --- /dev/null +++ b/package/erlang-p1-acme/erlang-p1-acme.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a445b66e76acdf1342eda166344004473bf4f45ad7e7f5ae38fb0333d896eb2d erlang-p1-acme-1.0.22.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/erlang-p1-acme/erlang-p1-acme.mk b/package/erlang-p1-acme/erlang-p1-acme.mk new file mode 100644 index 00000000..cb8c7a8a --- /dev/null +++ b/package/erlang-p1-acme/erlang-p1-acme.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# erlang-p1-acme +# +################################################################################ + +ERLANG_P1_ACME_VERSION = 1.0.22 +ERLANG_P1_ACME_SITE = $(call github,processone,p1_acme,$(ERLANG_P1_ACME_VERSION)) +ERLANG_P1_ACME_LICENSE = Apache-2.0 +ERLANG_P1_ACME_LICENSE_FILES = LICENSE.txt +ERLANG_P1_ACME_DEPENDENCIES = erlang-idna erlang-jiffy erlang-jose erlang-p1-yconf + +$(eval $(rebar-package)) diff --git a/package/erlang-p1-cache-tab/Config.in b/package/erlang-p1-cache-tab/Config.in new file mode 100644 index 00000000..eed26766 --- /dev/null +++ b/package/erlang-p1-cache-tab/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_ERLANG_P1_CACHE_TAB + bool "erlang-p1-cache-tab" + select BR2_PACKAGE_ERLANG_P1_UTILS + help + Erlang library implementing cache tables + + https://github.com/processone/cache_tab diff --git a/package/erlang-p1-cache-tab/erlang-p1-cache-tab.hash b/package/erlang-p1-cache-tab/erlang-p1-cache-tab.hash new file mode 100644 index 00000000..83c40f37 --- /dev/null +++ b/package/erlang-p1-cache-tab/erlang-p1-cache-tab.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c506d2aa2e59f1e0086ce32234618189d557a767312179cc1c8df19754131ca2 erlang-p1-cache-tab-1.0.30.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk b/package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk new file mode 100644 index 00000000..e2479b82 --- /dev/null +++ b/package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# erlang-p1-cache-tab +# +################################################################################ + +ERLANG_P1_CACHE_TAB_VERSION = 1.0.30 +ERLANG_P1_CACHE_TAB_SITE = $(call github,processone,cache_tab,$(ERLANG_P1_CACHE_TAB_VERSION)) +ERLANG_P1_CACHE_TAB_LICENSE = Apache-2.0 +ERLANG_P1_CACHE_TAB_LICENSE_FILES = LICENSE.txt +ERLANG_P1_CACHE_TAB_DEPENDENCIES = erlang-p1-utils + +$(eval $(rebar-package)) diff --git a/package/erlang-p1-mqtree/Config.in b/package/erlang-p1-mqtree/Config.in new file mode 100644 index 00000000..4e2d58c2 --- /dev/null +++ b/package/erlang-p1-mqtree/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_ERLANG_P1_MQTREE + bool "erlang-p1-mqtree" + select BR2_PACKAGE_ERLANG_P1_UTILS + help + Index tree for MQTT topic filters. + + https://github.com/processone/mqtree diff --git a/package/erlang-p1-mqtree/erlang-p1-mqtree.hash b/package/erlang-p1-mqtree/erlang-p1-mqtree.hash new file mode 100644 index 00000000..4ce3295e --- /dev/null +++ b/package/erlang-p1-mqtree/erlang-p1-mqtree.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 8d6b2d780d3d6e23a2d205406b30bf96c722f6c8b336a83182d5455e665ae866 erlang-p1-mqtree-1.0.15.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/erlang-p1-mqtree/erlang-p1-mqtree.mk b/package/erlang-p1-mqtree/erlang-p1-mqtree.mk new file mode 100644 index 00000000..d606f737 --- /dev/null +++ b/package/erlang-p1-mqtree/erlang-p1-mqtree.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# erlang-p1-mqtree +# +################################################################################ + +ERLANG_P1_MQTREE_VERSION = 1.0.15 +ERLANG_P1_MQTREE_SITE = $(call github,processone,mqtree,$(ERLANG_P1_MQTREE_VERSION)) +ERLANG_P1_MQTREE_LICENSE = Apache-2.0 +ERLANG_P1_MQTREE_LICENSE_FILES = LICENSE +ERLANG_P1_MQTREE_DEPENDENCIES = erlang-p1-utils + +$(eval $(rebar-package)) diff --git a/package/erlang-p1-oauth2/Config.in b/package/erlang-p1-oauth2/Config.in new file mode 100644 index 00000000..32e79ec9 --- /dev/null +++ b/package/erlang-p1-oauth2/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_ERLANG_P1_OAUTH2 + bool "erlang-p1-oauth2" + help + OAuth2 library for Erlang + + https://github.com/processone/p1_oauth2 diff --git a/package/erlang-p1-oauth2/erlang-p1-oauth2.hash b/package/erlang-p1-oauth2/erlang-p1-oauth2.hash new file mode 100644 index 00000000..ac87485d --- /dev/null +++ b/package/erlang-p1-oauth2/erlang-p1-oauth2.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2a33d96ab007b77759f48613a65794351569e7d2d800700b71e50448eed0e3b8 erlang-p1-oauth2-0.6.11.tar.gz +sha256 0ecddd0a5e35b7fcdab451f54c5bb688fac8365cdf6b0da0ac64b7895a0770f3 LICENSE diff --git a/package/erlang-p1-oauth2/erlang-p1-oauth2.mk b/package/erlang-p1-oauth2/erlang-p1-oauth2.mk new file mode 100644 index 00000000..b01a3919 --- /dev/null +++ b/package/erlang-p1-oauth2/erlang-p1-oauth2.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# erlang-p1-oauth2 +# +################################################################################ + +ERLANG_P1_OAUTH2_VERSION = 0.6.11 +ERLANG_P1_OAUTH2_SITE = $(call github,processone,p1_oauth2,$(ERLANG_P1_OAUTH2_VERSION)) +ERLANG_P1_OAUTH2_LICENSE = MIT +ERLANG_P1_OAUTH2_LICENSE_FILES = LICENSE +ERLANG_P1_OAUTH2_INSTALL_STAGING = YES + +$(eval $(rebar-package)) diff --git a/package/erlang-p1-pkix/Config.in b/package/erlang-p1-pkix/Config.in new file mode 100644 index 00000000..dfd43f9d --- /dev/null +++ b/package/erlang-p1-pkix/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_ERLANG_P1_PKIX + bool "erlang-p1-pkix" + help + PKIX certificates management library for Erlang. + + https://github.com/processone/pkix diff --git a/package/erlang-p1-pkix/erlang-p1-pkix.hash b/package/erlang-p1-pkix/erlang-p1-pkix.hash new file mode 100644 index 00000000..2b9c4cc9 --- /dev/null +++ b/package/erlang-p1-pkix/erlang-p1-pkix.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a9adf7d16494c1a1b572b46fc9ee1d28996b3d4bcb7a433395dfe120cee0c0ae erlang-p1-pkix-1.0.9.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/erlang-p1-pkix/erlang-p1-pkix.mk b/package/erlang-p1-pkix/erlang-p1-pkix.mk new file mode 100644 index 00000000..90c41221 --- /dev/null +++ b/package/erlang-p1-pkix/erlang-p1-pkix.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# erlang-p1-pkix +# +################################################################################ + +ERLANG_P1_PKIX_VERSION = 1.0.9 +ERLANG_P1_PKIX_SITE = $(call github,processone,pkix,$(ERLANG_P1_PKIX_VERSION)) +ERLANG_P1_PKIX_LICENSE = Apache-2.0 +ERLANG_P1_PKIX_LICENSE_FILES = LICENSE + +$(eval $(rebar-package)) diff --git a/package/erlang-p1-sip/0001-correct-include.patch b/package/erlang-p1-sip/0001-correct-include.patch new file mode 100644 index 00000000..90d68b51 --- /dev/null +++ b/package/erlang-p1-sip/0001-correct-include.patch @@ -0,0 +1,31 @@ +From 5ad4f871df7cbbc973708cb7380c3410b20bde1c Mon Sep 17 00:00:00 2001 +From: Philipp Huebner +Date: Tue, 1 Dec 2020 23:07:51 +0100 +Subject: [PATCH] correct include + +This part of the code was moved into it's own project and was packaged +separately by me. To make the build process work, this small fix is +necessary. + +Author: Philipp Huebner +Signed-off-by: Johan Oudinet +--- + src/esip_socket.erl | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/esip_socket.erl b/src/esip_socket.erl +index 4154faa..db5fa92 100644 +--- a/src/esip_socket.erl ++++ b/src/esip_socket.erl +@@ -37,7 +37,7 @@ + + -include("esip.hrl"). + -include("esip_lib.hrl"). +--include_lib("stun/include/stun.hrl"). ++-include_lib("p1_stun/include/stun.hrl"). + + -define(TCP_SEND_TIMEOUT, 15000). + -define(CONNECT_TIMEOUT, 20000). +-- +2.28.0 + diff --git a/package/erlang-p1-sip/Config.in b/package/erlang-p1-sip/Config.in new file mode 100644 index 00000000..70cf819a --- /dev/null +++ b/package/erlang-p1-sip/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_ERLANG_P1_SIP + bool "erlang-p1-sip" + select BR2_PACKAGE_ERLANG_P1_STUN + select BR2_PACKAGE_ERLANG_P1_TLS + select BR2_PACKAGE_ERLANG_P1_UTILS + help + SIP library for Erlang + + https://github.com/processone/p1_sip diff --git a/package/erlang-p1-sip/erlang-p1-sip.hash b/package/erlang-p1-sip/erlang-p1-sip.hash new file mode 100644 index 00000000..87c0742b --- /dev/null +++ b/package/erlang-p1-sip/erlang-p1-sip.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 895a143fc90f0222649d103dd524def7fed6665c52600c2bba61e9f69d132372 erlang-p1-sip-1.0.49.tar.gz +sha256 c835791cd41a32f8ef40e2255d141ab7faec2f28fab68bbd685c6110fb83be4e LICENSE.txt diff --git a/package/erlang-p1-sip/erlang-p1-sip.mk b/package/erlang-p1-sip/erlang-p1-sip.mk new file mode 100644 index 00000000..61f728cb --- /dev/null +++ b/package/erlang-p1-sip/erlang-p1-sip.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# erlang-p1-sip +# +################################################################################ + +ERLANG_P1_SIP_VERSION = 1.0.49 +ERLANG_P1_SIP_SITE = $(call github,processone,esip,$(ERLANG_P1_SIP_VERSION)) +ERLANG_P1_SIP_LICENSE = Apache-2.0 +ERLANG_P1_SIP_LICENSE_FILES = LICENSE.txt +ERLANG_P1_SIP_DEPENDENCIES = erlang-p1-stun erlang-p1-tls erlang-p1-utils +ERLANG_P1_SIP_INSTALL_STAGING = YES + +$(eval $(rebar-package)) diff --git a/package/erlang-p1-stringprep/Config.in b/package/erlang-p1-stringprep/Config.in new file mode 100644 index 00000000..4beac048 --- /dev/null +++ b/package/erlang-p1-stringprep/Config.in @@ -0,0 +1,11 @@ +comment "erlang-p1-stringprep needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_ERLANG_P1_STRINGPREP + bool "erlang-p1-stringprep" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_ERLANG_P1_UTILS + help + Erlang interface to stringprep + + https://github.com/processone/stringprep diff --git a/package/erlang-p1-stringprep/erlang-p1-stringprep.hash b/package/erlang-p1-stringprep/erlang-p1-stringprep.hash new file mode 100644 index 00000000..50a48af0 --- /dev/null +++ b/package/erlang-p1-stringprep/erlang-p1-stringprep.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 b07daf2148829d513caf2931d463550e70252a78ef99696dcf444d61d93bf940 erlang-p1-stringprep-1.0.29.tar.gz +sha256 f44415631770cb818de6d92f3961fdfe6e407a5154f84b87cc06ac27323e919c LICENSE.ALL +sha256 42aef2a1337ef1f45ae2832aa5aa268c79b2560fb1f3ebab519629372cb24ffe LICENSE.TCL +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/erlang-p1-stringprep/erlang-p1-stringprep.mk b/package/erlang-p1-stringprep/erlang-p1-stringprep.mk new file mode 100644 index 00000000..09e339f5 --- /dev/null +++ b/package/erlang-p1-stringprep/erlang-p1-stringprep.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# erlang-p1-stringprep +# +################################################################################ + +ERLANG_P1_STRINGPREP_VERSION = 1.0.29 +ERLANG_P1_STRINGPREP_SITE = $(call github,processone,stringprep,$(ERLANG_P1_STRINGPREP_VERSION)) +ERLANG_P1_STRINGPREP_LICENSE = TCL (tools/*.tcl), Apache-2.0 (rest) +ERLANG_P1_STRINGPREP_LICENSE_FILES = LICENSE.ALL LICENSE.TCL LICENSE.txt +ERLANG_P1_STRINGPREP_DEPENDENCIES = erlang-p1-utils + +$(eval $(rebar-package)) diff --git a/package/erlang-p1-stun/Config.in b/package/erlang-p1-stun/Config.in new file mode 100644 index 00000000..70cdd915 --- /dev/null +++ b/package/erlang-p1-stun/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_ERLANG_P1_STUN + bool "erlang-p1-stun" + select BR2_PACKAGE_ERLANG_P1_TLS + select BR2_PACKAGE_ERLANG_P1_UTILS + help + STUN library for Erlang + + https://github.com/processone/stun diff --git a/package/erlang-p1-stun/erlang-p1-stun.hash b/package/erlang-p1-stun/erlang-p1-stun.hash new file mode 100644 index 00000000..49e1963f --- /dev/null +++ b/package/erlang-p1-stun/erlang-p1-stun.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 d7e9d3d591a88a91abf053c068f7152495e37d17f4c9ac58992c544d6f8f5e86 erlang-p1-stun-1.2.7.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/erlang-p1-stun/erlang-p1-stun.mk b/package/erlang-p1-stun/erlang-p1-stun.mk new file mode 100644 index 00000000..7438bd21 --- /dev/null +++ b/package/erlang-p1-stun/erlang-p1-stun.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# erlang-p1-stun +# +################################################################################ + +ERLANG_P1_STUN_VERSION = 1.2.7 +ERLANG_P1_STUN_SITE = $(call github,processone,stun,$(ERLANG_P1_STUN_VERSION)) +ERLANG_P1_STUN_LICENSE = Apache-2.0 +ERLANG_P1_STUN_LICENSE_FILES = LICENSE.txt +ERLANG_P1_STUN_DEPENDENCIES = erlang-p1-tls erlang-p1-utils +ERLANG_P1_STUN_INSTALL_STAGING = YES + +$(eval $(rebar-package)) diff --git a/package/erlang-p1-tls/Config.in b/package/erlang-p1-tls/Config.in new file mode 100644 index 00000000..a684fbb6 --- /dev/null +++ b/package/erlang-p1-tls/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_ERLANG_P1_TLS + bool "erlang-p1-tls" + select BR2_PACKAGE_ERLANG_P1_UTILS + select BR2_PACKAGE_OPENSSL + help + Erlang interface to OpenSSL + + https://github.com/processone/tls diff --git a/package/erlang-p1-tls/erlang-p1-tls.hash b/package/erlang-p1-tls/erlang-p1-tls.hash new file mode 100644 index 00000000..9a14a442 --- /dev/null +++ b/package/erlang-p1-tls/erlang-p1-tls.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 8c38768998e8ee0aa2bf5831bc25deeb4ea2e08bd52e26b2abfd654504fbe4f9 erlang-p1-tls-1.1.16.tar.gz +sha256 c835791cd41a32f8ef40e2255d141ab7faec2f28fab68bbd685c6110fb83be4e LICENSE.txt diff --git a/package/erlang-p1-tls/erlang-p1-tls.mk b/package/erlang-p1-tls/erlang-p1-tls.mk new file mode 100644 index 00000000..c16a1240 --- /dev/null +++ b/package/erlang-p1-tls/erlang-p1-tls.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# erlang-p1-tls +# +################################################################################ + +ERLANG_P1_TLS_VERSION = 1.1.16 +ERLANG_P1_TLS_SITE = $(call github,processone,fast_tls,$(ERLANG_P1_TLS_VERSION)) +ERLANG_P1_TLS_LICENSE = Apache-2.0 +ERLANG_P1_TLS_LICENSE_FILES = LICENSE.txt +ERLANG_P1_TLS_INSTALL_STAGING = YES +ERLANG_P1_TLS_DEPENDENCIES = openssl erlang-p1-utils + +$(eval $(rebar-package)) diff --git a/package/erlang-p1-utils/Config.in b/package/erlang-p1-utils/Config.in new file mode 100644 index 00000000..a82e5f71 --- /dev/null +++ b/package/erlang-p1-utils/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_ERLANG_P1_UTILS + bool "erlang-p1-utils" + help + Set of small Erlang libraries + + https://github.com/processone/p1_utils diff --git a/package/erlang-p1-utils/erlang-p1-utils.hash b/package/erlang-p1-utils/erlang-p1-utils.hash new file mode 100644 index 00000000..aa8d25bf --- /dev/null +++ b/package/erlang-p1-utils/erlang-p1-utils.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c62f93ab5ea8d9251d9acda2abf576352d50f4a3299972549180a5387656746a erlang-p1-utils-1.0.25.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/erlang-p1-utils/erlang-p1-utils.mk b/package/erlang-p1-utils/erlang-p1-utils.mk new file mode 100644 index 00000000..8b00ee14 --- /dev/null +++ b/package/erlang-p1-utils/erlang-p1-utils.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# erlang-p1-utils +# +################################################################################ + +ERLANG_P1_UTILS_VERSION = 1.0.25 +ERLANG_P1_UTILS_SITE = $(call github,processone,p1_utils,$(ERLANG_P1_UTILS_VERSION)) +ERLANG_P1_UTILS_LICENSE = Apache-2.0 +ERLANG_P1_UTILS_LICENSE_FILES = LICENSE.txt +ERLANG_P1_UTILS_INSTALL_STAGING = YES + +$(eval $(rebar-package)) +$(eval $(host-rebar-package)) diff --git a/package/erlang-p1-xml/Config.in b/package/erlang-p1-xml/Config.in new file mode 100644 index 00000000..504501d9 --- /dev/null +++ b/package/erlang-p1-xml/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_ERLANG_P1_XML + bool "erlang-p1-xml" + select BR2_PACKAGE_ERLANG_P1_UTILS + select BR2_PACKAGE_EXPAT + help + XML utilities for Erlang + + https://github.com/processone/xml diff --git a/package/erlang-p1-xml/erlang-p1-xml.hash b/package/erlang-p1-xml/erlang-p1-xml.hash new file mode 100644 index 00000000..379ca7ef --- /dev/null +++ b/package/erlang-p1-xml/erlang-p1-xml.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 02bcdb0a4350080a10b52de85c11de982e5f7cf2150f5b1b888f7a95ccb31265 erlang-p1-xml-1.1.49.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/erlang-p1-xml/erlang-p1-xml.mk b/package/erlang-p1-xml/erlang-p1-xml.mk new file mode 100644 index 00000000..eee2c74c --- /dev/null +++ b/package/erlang-p1-xml/erlang-p1-xml.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# erlang-p1-xml +# +################################################################################ + +ERLANG_P1_XML_VERSION = 1.1.49 +ERLANG_P1_XML_SITE = $(call github,processone,fast_xml,$(ERLANG_P1_XML_VERSION)) +ERLANG_P1_XML_LICENSE = Apache-2.0 +ERLANG_P1_XML_LICENSE_FILES = LICENSE.txt +ERLANG_P1_XML_DEPENDENCIES = expat erlang-p1-utils +HOST_ERLANG_P1_XML_DEPENDENCIES = host-expat host-erlang-p1-utils +ERLANG_P1_XML_INSTALL_STAGING = YES + +ERLANG_P1_XML_USE_AUTOCONF = YES + +$(eval $(rebar-package)) +$(eval $(host-rebar-package)) diff --git a/package/erlang-p1-xmpp/0001-fix-includes.patch b/package/erlang-p1-xmpp/0001-fix-includes.patch new file mode 100644 index 00000000..f02037fd --- /dev/null +++ b/package/erlang-p1-xmpp/0001-fix-includes.patch @@ -0,0 +1,16 @@ +Without this patch, rebar fails to find include file fxml.hrl. + +Signed-off-by: Christophe Romain + +diff --git a/include/xmpp.hrl b/include/xmpp.hrl +index afa5f61..678858e 100644 +--- a/include/xmpp.hrl ++++ b/include/xmpp.hrl +@@ -25,7 +25,7 @@ + -include("ns.hrl"). + -include("jid.hrl"). + -include("xmpp_codec.hrl"). +--include_lib("fast_xml/include/fxml.hrl"). ++-include_lib("p1_xml/include/fxml.hrl"). + + -type stanza() :: iq() | presence() | message(). diff --git a/package/erlang-p1-xmpp/Config.in b/package/erlang-p1-xmpp/Config.in new file mode 100644 index 00000000..c67dc832 --- /dev/null +++ b/package/erlang-p1-xmpp/Config.in @@ -0,0 +1,16 @@ +comment "erlang-p1-xmpp needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_ERLANG_P1_XMPP + bool "erlang-p1-xmpp" + depends on BR2_INSTALL_LIBSTDCPP # erlang-p1-stringprep + select BR2_PACKAGE_ERLANG_IDNA + select BR2_PACKAGE_ERLANG_P1_XML + select BR2_PACKAGE_ERLANG_P1_STRINGPREP + select BR2_PACKAGE_ERLANG_P1_TLS + select BR2_PACKAGE_ERLANG_P1_UTILS + select BR2_PACKAGE_ERLANG_P1_ZLIB + help + XMPP library for Erlang. + + https://github.com/processone/xmpp diff --git a/package/erlang-p1-xmpp/erlang-p1-xmpp.hash b/package/erlang-p1-xmpp/erlang-p1-xmpp.hash new file mode 100644 index 00000000..62325786 --- /dev/null +++ b/package/erlang-p1-xmpp/erlang-p1-xmpp.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c227e3a32af4973308120aa726b945c2d3ab7187d47343fe65eb30e95bade0b0 erlang-p1-xmpp-1.6.2.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/erlang-p1-xmpp/erlang-p1-xmpp.mk b/package/erlang-p1-xmpp/erlang-p1-xmpp.mk new file mode 100644 index 00000000..2deb25b3 --- /dev/null +++ b/package/erlang-p1-xmpp/erlang-p1-xmpp.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# erlang-p1-xmpp +# +################################################################################ + +ERLANG_P1_XMPP_VERSION = 1.6.2 +ERLANG_P1_XMPP_SITE = $(call github,processone,xmpp,$(ERLANG_P1_XMPP_VERSION)) +ERLANG_P1_XMPP_LICENSE = Apache-2.0 +ERLANG_P1_XMPP_LICENSE_FILES = LICENSE.txt +ERLANG_P1_XMPP_INSTALL_STAGING = YES +ERLANG_P1_XMPP_DEPENDENCIES = erlang-p1-xml erlang-p1-stringprep \ + erlang-p1-tls erlang-p1-utils erlang-p1-zlib host-erlang-p1-xml +HOST_ERLANG_P1_XMPP_DEPENDENCIES = host-erlang-p1-xml + +$(eval $(rebar-package)) +$(eval $(host-rebar-package)) diff --git a/package/erlang-p1-yaml/Config.in b/package/erlang-p1-yaml/Config.in new file mode 100644 index 00000000..2ab78d12 --- /dev/null +++ b/package/erlang-p1-yaml/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_ERLANG_P1_YAML + bool "erlang-p1-yaml" + select BR2_PACKAGE_ERLANG_P1_UTILS + select BR2_PACKAGE_LIBYAML + help + Erlang wrapper for libyaml C library + + https://github.com/processone/p1_yaml diff --git a/package/erlang-p1-yaml/erlang-p1-yaml.hash b/package/erlang-p1-yaml/erlang-p1-yaml.hash new file mode 100644 index 00000000..0138f820 --- /dev/null +++ b/package/erlang-p1-yaml/erlang-p1-yaml.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 6794470ef35fb3985c4e9aa0ed8d3a0b44e7a5c7bf4c5a1efbeca42060db6806 erlang-p1-yaml-1.0.36.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/erlang-p1-yaml/erlang-p1-yaml.mk b/package/erlang-p1-yaml/erlang-p1-yaml.mk new file mode 100644 index 00000000..17f4910e --- /dev/null +++ b/package/erlang-p1-yaml/erlang-p1-yaml.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# erlang-p1-yaml +# +################################################################################ + +ERLANG_P1_YAML_VERSION = 1.0.36 +ERLANG_P1_YAML_SITE = $(call github,processone,fast_yaml,$(ERLANG_P1_YAML_VERSION)) +ERLANG_P1_YAML_LICENSE = Apache-2.0 +ERLANG_P1_YAML_LICENSE_FILES = LICENSE.txt +ERLANG_P1_YAML_DEPENDENCIES = libyaml erlang-p1-utils + +define ERLANG_P1_YAML_REMOVE_PATHS + $(SED) "s/ -I\/usr\/local\/include//" $(@D)/rebar.config + $(SED) "s/ -L\/usr\/local\/lib//" $(@D)/rebar.config +endef + +ERLANG_P1_YAML_POST_PATCH_HOOKS = ERLANG_P1_YAML_REMOVE_PATHS + +$(eval $(rebar-package)) diff --git a/package/erlang-p1-yconf/Config.in b/package/erlang-p1-yconf/Config.in new file mode 100644 index 00000000..3777ebbe --- /dev/null +++ b/package/erlang-p1-yconf/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_ERLANG_P1_YCONF + bool "erlang-p1-yconf" + select BR2_PACKAGE_ERLANG_P1_YAML + help + YAML configuration processor. diff --git a/package/erlang-p1-yconf/erlang-p1-yconf.hash b/package/erlang-p1-yconf/erlang-p1-yconf.hash new file mode 100644 index 00000000..25d873b5 --- /dev/null +++ b/package/erlang-p1-yconf/erlang-p1-yconf.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 0280358c868977105104cfffa7b1fa2c5bf7856243cee9b7df974dc54904e4da erlang-p1-yconf-1.0.15.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/erlang-p1-yconf/erlang-p1-yconf.mk b/package/erlang-p1-yconf/erlang-p1-yconf.mk new file mode 100644 index 00000000..81f74628 --- /dev/null +++ b/package/erlang-p1-yconf/erlang-p1-yconf.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# erlang-p1-yconf +# +################################################################################ + +ERLANG_P1_YCONF_VERSION = 1.0.15 +ERLANG_P1_YCONF_SITE = $(call github,processone,yconf,$(ERLANG_P1_YCONF_VERSION)) +ERLANG_P1_YCONF_LICENSE = Apache-2.0 +ERLANG_P1_YCONF_LICENSE_FILES = LICENSE +ERLANG_P1_YCONF_DEPENDENCIES = erlang-p1-yaml + +$(eval $(rebar-package)) diff --git a/package/erlang-p1-zlib/Config.in b/package/erlang-p1-zlib/Config.in new file mode 100644 index 00000000..b7e48a14 --- /dev/null +++ b/package/erlang-p1-zlib/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_ERLANG_P1_ZLIB + bool "erlang-p1-zlib" + select BR2_PACKAGE_ZLIB + help + Erlang interface to zlib + + https://github.com/processone/zlib diff --git a/package/erlang-p1-zlib/erlang-p1-zlib.hash b/package/erlang-p1-zlib/erlang-p1-zlib.hash new file mode 100644 index 00000000..fa8cdacd --- /dev/null +++ b/package/erlang-p1-zlib/erlang-p1-zlib.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 f2e7a3d17bbd752ad3ffd8a24c7948bf7c211c67c953a98c03110ddc497798d1 erlang-p1-zlib-1.0.12.tar.gz +sha256 c835791cd41a32f8ef40e2255d141ab7faec2f28fab68bbd685c6110fb83be4e LICENSE.txt diff --git a/package/erlang-p1-zlib/erlang-p1-zlib.mk b/package/erlang-p1-zlib/erlang-p1-zlib.mk new file mode 100644 index 00000000..da55d310 --- /dev/null +++ b/package/erlang-p1-zlib/erlang-p1-zlib.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# erlang-p1-zlib +# +################################################################################ + +ERLANG_P1_ZLIB_VERSION = 1.0.12 +ERLANG_P1_ZLIB_SITE = $(call github,processone,ezlib,$(ERLANG_P1_ZLIB_VERSION)) +ERLANG_P1_ZLIB_LICENSE = Apache-2.0 +ERLANG_P1_ZLIB_LICENSE_FILES = LICENSE.txt +ERLANG_P1_ZLIB_DEPENDENCIES = zlib + +$(eval $(rebar-package)) diff --git a/package/erlang-rebar/0001-src-rebar_port_compiler-add-fPIC-to-LDFLAGS-by-defau.patch b/package/erlang-rebar/0001-src-rebar_port_compiler-add-fPIC-to-LDFLAGS-by-defau.patch new file mode 100644 index 00000000..a9c1670a --- /dev/null +++ b/package/erlang-rebar/0001-src-rebar_port_compiler-add-fPIC-to-LDFLAGS-by-defau.patch @@ -0,0 +1,35 @@ +From 7f54d48ee5db037778ead310e0b8278f3fe70b41 Mon Sep 17 00:00:00 2001 +From: Giulio Benetti +Date: Sun, 19 Dec 2021 07:52:55 +0100 +Subject: [PATCH] src/rebar_port_compiler: add -fPIC to LDFLAGS by default + +Since both DRV_CFLAGS and EXE_CFLAGS list -fPIC we need also the LDFLAGS +to follow them. Unfortunately adding -fPIC only to DRV_LDFLAGS and +EXE_LDFLAGS is not sufficient, since when linking as a library(.so) it +doesn't take into account those variables. Since -fPIC is needed by default +by any kind of linking, let's add it to the general -fPIC. Rebar seems to +link libraries without taking into account any variable listed in: +src/rebar_port_compiler.erl +this after testing and tracing for every variable. + +Signed-off-by: Giulio Benetti +--- + src/rebar_port_compiler.erl | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/rebar_port_compiler.erl b/src/rebar_port_compiler.erl +index 9679c80..bd08b21 100644 +--- a/src/rebar_port_compiler.erl ++++ b/src/rebar_port_compiler.erl +@@ -645,6 +645,8 @@ default_env() -> + {"OBJCOPY", get_tool(Arch, "objcopy", "objcopy")}, + {"OBJDUMP", get_tool(Arch, "objdump", "objdump")}, + ++ {"LDFLAGS", "-fPIC $LDFLAGS"}, ++ + {"DRV_CXX_TEMPLATE", + "$CXX -c $CXXFLAGS $DRV_CFLAGS $PORT_IN_FILES -o $PORT_OUT_FILE"}, + {"DRV_CC_TEMPLATE", +-- +2.25.1 + diff --git a/package/erlang-rebar/erlang-rebar.hash b/package/erlang-rebar/erlang-rebar.hash new file mode 100644 index 00000000..bc463a96 --- /dev/null +++ b/package/erlang-rebar/erlang-rebar.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 577246bafa2eb2b2c3f1d0c157408650446884555bf87901508ce71d5cc0bd07 erlang-rebar-2.6.4.tar.gz +sha256 809fa1ed21450f59827d1e9aec720bbc4b687434fa22283c6cb5dd82a47ab9c0 LICENSE diff --git a/package/erlang-rebar/erlang-rebar.mk b/package/erlang-rebar/erlang-rebar.mk new file mode 100644 index 00000000..ce082dc6 --- /dev/null +++ b/package/erlang-rebar/erlang-rebar.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# erlang-rebar +# +################################################################################ + +ERLANG_REBAR_VERSION = 2.6.4 + +# Upstream publishes a release, but we can not use it as it is a release of +# a generated rebar script, when we want the sources. So we have to use the +# gihub helper in this case. +ERLANG_REBAR_SITE = $(call github,rebar,rebar,$(ERLANG_REBAR_VERSION)) + +# Although the file LICENSE state Apache-2.0, a lot (if not all) the files +# in src/ bear the MIT licence. +ERLANG_REBAR_LICENSE = Apache-2.0, MIT +ERLANG_REBAR_LICENSE_FILES = LICENSE + +# We do not have a target variant, so just define the dependencies, +# configure and build commands for the host variant. +HOST_ERLANG_REBAR_DEPENDENCIES = host-erlang + +define HOST_ERLANG_REBAR_BUILD_CMDS + cd $(@D) && $(HOST_MAKE_ENV) $(MAKE) +endef + +define HOST_ERLANG_REBAR_INSTALL_CMDS + $(INSTALL) -m 0755 -D $(@D)/rebar $(HOST_DIR)/bin/rebar +endef + +$(eval $(host-generic-package)) diff --git a/package/erlang/0001-lib-crypto-c_src-openssl_config.h-fix-build-without-.patch b/package/erlang/0001-lib-crypto-c_src-openssl_config.h-fix-build-without-.patch new file mode 100644 index 00000000..a17a43a9 --- /dev/null +++ b/package/erlang/0001-lib-crypto-c_src-openssl_config.h-fix-build-without-.patch @@ -0,0 +1,46 @@ +From 8c7d62662cf51902d759be0e8d3bfd96a3524b3c Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 8 Dec 2023 09:00:17 +0100 +Subject: [PATCH] lib/crypto/c_src/openssl_config.h: fix build without DES + +Fix the following build failure without DES raised since version 24.2 +and +https://github.com/erlang/otp/commit/abf7f84c2f77bb07dbdbb8a29b9d41f1f24c5f14: + +cipher.c:51:42: error: 'EVP_des_ede3_cbc' undeclared here (not in a function); did you mean 'SN_des_ede3_cbc'? + 51 | {{"des_ede3_cbc"}, "des-ede3-cbc", {&EVP_des_ede3_cbc}, 0, 0}, + | ^~~~~~~~~~~~~~~~ + | SN_des_ede3_cbc + +Fixes: + - http://autobuild.buildroot.org/results/1aace0ee738f8ec4aa2c9a739fc7535c3b6bf884 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/erlang/otp/pull/7937 +--- + lib/crypto/c_src/openssl_config.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/crypto/c_src/openssl_config.h b/lib/crypto/c_src/openssl_config.h +index cb63f28369..f3904986c9 100644 +--- a/lib/crypto/c_src/openssl_config.h ++++ b/lib/crypto/c_src/openssl_config.h +@@ -218,7 +218,6 @@ + + #ifndef OPENSSL_NO_DES + # define HAVE_DES +-#endif + + #if OPENSSL_VERSION_NUMBER >= PACKED_OPENSSL_VERSION(0,9,7,'e') + # define HAVE_DES_ede3_cfb +@@ -227,6 +226,7 @@ + #if OPENSSL_VERSION_NUMBER >= PACKED_OPENSSL_VERSION(0,9,7,'e') + # define HAVE_DES_ede3_cbc + #endif ++#endif + + #ifndef OPENSSL_NO_DH + # define HAVE_DH +-- +2.42.0 + diff --git a/package/erlang/Config.in b/package/erlang/Config.in new file mode 100644 index 00000000..724f9112 --- /dev/null +++ b/package/erlang/Config.in @@ -0,0 +1,53 @@ +config BR2_PACKAGE_HOST_ERLANG_ARCH_SUPPORTS + bool + default y if BR2_HOSTARCH = "aarch64" + default y if BR2_HOSTARCH = "x86_64" + default y if BR2_HOSTARCH = "x86" + +config BR2_PACKAGE_ERLANG_ARCH_SUPPORTS + bool + # see HOWTO/INSTALL.md for Erlang's supported platforms + # when using its native atomic ops implementation or gcc's + # __atomic_* builtins + default y if BR2_i386 || BR2_x86_64 || BR2_powerpc || \ + BR2_sparc_v9 || BR2_arm || BR2_aarch64 || BR2_mipsel || \ + BR2_RISCV_64 + # erlang needs host-erlang + depends on BR2_PACKAGE_HOST_ERLANG_ARCH_SUPPORTS + +comment "erlang needs a glibc or musl toolchain w/ dynamic library, threads, wchar" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_ERLANG_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_USE_WCHAR || BR2_TOOLCHAIN_USES_UCLIBC + +config BR2_PACKAGE_ERLANG + bool "erlang" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_TOOLCHAIN_USES_UCLIBC + depends on BR2_PACKAGE_ERLANG_ARCH_SUPPORTS + select BR2_PACKAGE_ZLIB + help + Erlang is a programming language used to build massively + scalable soft real-time systems with requirements on high + availability. Some of its uses are in telecoms, banking, + e-commerce, computer telephony and instant messaging. + Erlang's runtime system has built-in support for + concurrency, distribution and fault tolerance. + + http://www.erlang.org + +if BR2_PACKAGE_ERLANG + +config BR2_PACKAGE_ERLANG_MEGACO + bool "install megaco application" + help + The Megaco application is a framework for building + applications on top of the Megaco/H.248 protocol. It is + approximately 14MB in size so if you do not need it then + it is recommended not to enable it. + +endif # BR2_PACKAGE_ERLANG diff --git a/package/erlang/erlang.hash b/package/erlang/erlang.hash new file mode 100644 index 00000000..9fc5a6ea --- /dev/null +++ b/package/erlang/erlang.hash @@ -0,0 +1,5 @@ +# From https://github.com/erlang/otp/releases/download/OTP-26.0.2/SHA256.txt +sha256 47853ea9230643a0a31004433f07a71c1b92d6e0094534f629e3b75dbc62f193 otp_src_26.0.2.tar.gz + +# Hash for license file +sha256 809fa1ed21450f59827d1e9aec720bbc4b687434fa22283c6cb5dd82a47ab9c0 LICENSE.txt diff --git a/package/erlang/erlang.mk b/package/erlang/erlang.mk new file mode 100644 index 00000000..84d2f4e8 --- /dev/null +++ b/package/erlang/erlang.mk @@ -0,0 +1,113 @@ +################################################################################ +# +# erlang +# +################################################################################ + +ERLANG_VERSION = 26.0.2 +ERLANG_RELEASE = $(firstword $(subst ., ,$(ERLANG_VERSION))) +ERLANG_SITE = \ + https://github.com/erlang/otp/releases/download/OTP-$(ERLANG_VERSION) +ERLANG_SOURCE = otp_src_$(ERLANG_VERSION).tar.gz +ERLANG_DEPENDENCIES = host-erlang + +ERLANG_LICENSE = Apache-2.0 +ERLANG_LICENSE_FILES = LICENSE.txt +ERLANG_CPE_ID_VENDOR = erlang +ERLANG_CPE_ID_PRODUCT = erlang\/otp +ERLANG_INSTALL_STAGING = YES + +define ERLANG_FIX_AUTOCONF_VERSION + $(SED) "s/USE_AUTOCONF_VERSION=.*/USE_AUTOCONF_VERSION=$(AUTOCONF_VERSION)/" $(@D)/otp_build +endef + +# Patched erts/aclocal.m4 +define ERLANG_RUN_AUTOCONF + cd $(@D) && PATH=$(BR_PATH) ./otp_build update_configure --no-commit +endef +ERLANG_DEPENDENCIES += host-autoconf +ERLANG_PRE_CONFIGURE_HOOKS += \ + ERLANG_FIX_AUTOCONF_VERSION \ + ERLANG_RUN_AUTOCONF +HOST_ERLANG_DEPENDENCIES += host-autoconf +HOST_ERLANG_PRE_CONFIGURE_HOOKS += \ + ERLANG_FIX_AUTOCONF_VERSION \ + ERLANG_RUN_AUTOCONF + +# Return the EIV (Erlang Interface Version, EI_VSN) +# $(1): base directory, i.e. either $(HOST_DIR) or $(STAGING_DIR)/usr +erlang_ei_vsn = `sed -r -e '/^erl_interface-(.+)/!d; s//\1/' $(1)/lib/erlang/releases/$(ERLANG_RELEASE)/installed_application_versions` + +# The configure checks for these functions fail incorrectly +ERLANG_CONF_ENV = ac_cv_func_isnan=yes ac_cv_func_isinf=yes + +# Set erl_xcomp variables. See xcomp/erl-xcomp.conf.template +# for documentation. +ERLANG_CONF_ENV += erl_xcomp_sysroot=$(STAGING_DIR) + +ERLANG_CONF_OPTS = --without-javac + +# Force ERL_TOP to the downloaded source directory. This prevents +# Erlang's configure script from inadvertantly using files from +# a version of Erlang installed on the host. +ERLANG_CONF_ENV += ERL_TOP=$(@D) +HOST_ERLANG_CONF_ENV += ERL_TOP=$(@D) + +# erlang uses openssl for all things crypto. Since the host tools (such as +# rebar) uses crypto, we need to build host-erlang with support for openssl. +HOST_ERLANG_DEPENDENCIES += host-openssl +HOST_ERLANG_CONF_OPTS = --without-javac --with-ssl=$(HOST_DIR) + +HOST_ERLANG_CONF_OPTS += --without-termcap + +ifeq ($(BR2_PACKAGE_NCURSES),y) +ERLANG_CONF_OPTS += --with-termcap +ERLANG_DEPENDENCIES += ncurses +else +ERLANG_CONF_OPTS += --without-termcap +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +ERLANG_CONF_OPTS += --with-ssl +ERLANG_DEPENDENCIES += openssl +else +ERLANG_CONF_OPTS += --without-ssl +endif + +ifeq ($(BR2_PACKAGE_UNIXODBC),y) +ERLANG_DEPENDENCIES += unixodbc +ERLANG_CONF_OPTS += --with-odbc +else +ERLANG_CONF_OPTS += --without-odbc +endif + +# Always use Buildroot's zlib +ERLANG_CONF_OPTS += --disable-builtin-zlib +ERLANG_DEPENDENCIES += zlib + +# Remove source, example, gs and wx files from staging and target. +ERLANG_REMOVE_PACKAGES = gs wx + +ifneq ($(BR2_PACKAGE_ERLANG_MEGACO),y) +ERLANG_REMOVE_PACKAGES += megaco +endif + +define ERLANG_REMOVE_STAGING_UNUSED + for package in $(ERLANG_REMOVE_PACKAGES); do \ + rm -rf $(STAGING_DIR)/usr/lib/erlang/lib/$${package}-*; \ + done +endef + +define ERLANG_REMOVE_TARGET_UNUSED + find $(TARGET_DIR)/usr/lib/erlang -type d -name src -prune -exec rm -rf {} \; + find $(TARGET_DIR)/usr/lib/erlang -type d -name examples -prune -exec rm -rf {} \; + for package in $(ERLANG_REMOVE_PACKAGES); do \ + rm -rf $(TARGET_DIR)/usr/lib/erlang/lib/$${package}-*; \ + done +endef + +ERLANG_POST_INSTALL_STAGING_HOOKS += ERLANG_REMOVE_STAGING_UNUSED +ERLANG_POST_INSTALL_TARGET_HOOKS += ERLANG_REMOVE_TARGET_UNUSED + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/erofs-utils/Config.in b/package/erofs-utils/Config.in new file mode 100644 index 00000000..284b2cd0 --- /dev/null +++ b/package/erofs-utils/Config.in @@ -0,0 +1,37 @@ +config BR2_PACKAGE_EROFS_UTILS + bool "erofs-utils" + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Userspace utilities for EROFS filesystem + + https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git + +if BR2_PACKAGE_EROFS_UTILS + +config BR2_PACKAGE_EROFS_UTILS_LZ4 + bool "lz4 support" + select BR2_PACKAGE_LZ4 + help + Support LZ4 compression algorithm + +config BR2_PACKAGE_EROFS_UTILS_LZMA + bool "lzma support" + select BR2_PACKAGE_XZ + help + Support LZMA compression algorithm + +config BR2_PACKAGE_EROFS_UTILS_EROFSFUSE + bool "erofsfuse support" + depends on BR2_USE_MMU # libfuse + depends on !BR2_STATIC_LIBS # libfuse + depends on BR2_TOOLCHAIN_HAS_THREADS # libfuse + select BR2_PACKAGE_LIBFUSE + help + FUSE file system client for EROFS + +comment "erofsfuse needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +endif diff --git a/package/erofs-utils/Config.in.host b/package/erofs-utils/Config.in.host new file mode 100644 index 00000000..c6fbc388 --- /dev/null +++ b/package/erofs-utils/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_EROFS_UTILS + bool "host erofs-utils" + select BR2_PACKAGE_HOST_UTIL_LINUX + help + Userspace utilities for EROFS filesystem + + https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git diff --git a/package/erofs-utils/erofs-utils.hash b/package/erofs-utils/erofs-utils.hash new file mode 100644 index 00000000..063d3845 --- /dev/null +++ b/package/erofs-utils/erofs-utils.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 196083d63e5e231fb5799e7ce86a944bbca564daabce3de9225a8aca9dcaff15 erofs-utils-1.7.1.tar.gz +sha256 0df042de29b44887355db86c79708a4489ce6e6666f6e33ad02040293f09e6a2 COPYING +sha256 a400f85dd06d230f1b308cde4290a53f345b6e320a376b7904b31c51c2fd4b1a LICENSES/Apache-2.0 +sha256 feee3b3157dcdf78d4f50edefbd5dd7adf8b6d52c11bfaaa746a85a373256713 LICENSES/GPL-2.0 diff --git a/package/erofs-utils/erofs-utils.mk b/package/erofs-utils/erofs-utils.mk new file mode 100644 index 00000000..f994ea9d --- /dev/null +++ b/package/erofs-utils/erofs-utils.mk @@ -0,0 +1,69 @@ +################################################################################ +# +# erofs-utils +# +################################################################################ + +EROFS_UTILS_VERSION = 1.7.1 +EROFS_UTILS_SITE = https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git/snapshot +EROFS_UTILS_LICENSE = GPL-2.0+, GPL-2.0+ or Apache-2.0 (liberofs) +EROFS_UTILS_LICENSE_FILES = COPYING LICENSES/Apache-2.0 LICENSES/GPL-2.0 + +# From a git tree: no generated autotools files +EROFS_UTILS_AUTORECONF = YES + +EROFS_UTILS_DEPENDENCIES = host-pkgconf util-linux + +ifeq ($(BR2_PACKAGE_EROFS_UTILS_LZ4),y) +EROFS_UTILS_DEPENDENCIES += lz4 +EROFS_UTILS_CONF_OPTS += --enable-lz4 +else +EROFS_UTILS_CONF_OPTS += --disable-lz4 +endif + +ifeq ($(BR2_PACKAGE_EROFS_UTILS_LZMA),y) +EROFS_UTILS_DEPENDENCIES += xz +EROFS_UTILS_CONF_OPTS += --enable-lzma +else +EROFS_UTILS_CONF_OPTS += --disable-lzma +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +EROFS_UTILS_CONF_OPTS += --with-selinux +EROFS_UTILS_DEPENDENCIES += libselinux +else +EROFS_UTILS_CONF_OPTS += --without-selinux +endif + +ifeq ($(BR2_PACKAGE_EROFS_UTILS_EROFSFUSE),y) +EROFS_UTILS_CONF_OPTS += --enable-fuse +EROFS_UTILS_DEPENDENCIES += libfuse +else +EROFS_UTILS_CONF_OPTS += --disable-fuse +endif + +ifeq ($(BR2_PACKAGE_LIBDEFLATE),y) +EROFS_UTILS_DEPENDENCIES += libdeflate +EROFS_UTILS_CONF_OPTS += --with-libdeflate +else +EROFS_UTILS_CONF_OPTS += --without-libdeflate +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +EROFS_UTILS_DEPENDENCIES += zlib +EROFS_UTILS_CONF_OPTS += --with-zlib +else +EROFS_UTILS_CONF_OPTS += --without-zlib +endif + +HOST_EROFS_UTILS_DEPENDENCIES = host-pkgconf host-util-linux host-lz4 host-xz +HOST_EROFS_UTILS_CONF_OPTS += \ + --enable-lz4 \ + --enable-lzma \ + --disable-fuse \ + --without-libdeflate \ + --without-selinux \ + --without-zlib + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/esp-hosted/Config.in b/package/esp-hosted/Config.in new file mode 100644 index 00000000..5abab73b --- /dev/null +++ b/package/esp-hosted/Config.in @@ -0,0 +1,45 @@ +comment "esp-hosted needs a Linux kernel to be built" + depends on !BR2_s390x + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_ESP_HOSTED + bool "esp-hosted" + depends on !BR2_s390x + depends on BR2_LINUX_KERNEL + help + This package builds and installs the Linux kernel driver for + the Esp32-* Linux Wi-Fi driver. It supports both SDIO and SPI + busses that is selectable. It is compatible with recent Linux + kernels (>= 5.4). + +if BR2_PACKAGE_ESP_HOSTED + +choice + prompt "HW interface" + default BR2_PACKAGE_ESP_HOSTED_SDIO + help + Select which bus type esp is attached to + +config BR2_PACKAGE_ESP_HOSTED_SDIO + bool "SDIO" + +config BR2_PACKAGE_ESP_HOSTED_SPI + bool "SPI" + +endchoice + +choice + prompt "Target" + default BR2_PACKAGE_ESP_HOSTED_TARGET_ESP32 + help + Select which SoC Target driver is used for + +config BR2_PACKAGE_ESP_HOSTED_TARGET_ESP32 + bool "ESP32" + +config BR2_PACKAGE_ESP_HOSTED_TARGET_ESP32C6 + bool "ESP32C6" + +endchoice + +endif diff --git a/package/esp-hosted/esp-hosted.hash b/package/esp-hosted/esp-hosted.hash new file mode 100644 index 00000000..ea18c243 --- /dev/null +++ b/package/esp-hosted/esp-hosted.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 78ab4f10ddce76749d36511591a0a7bb2a982db96ac1ea1b02b5c35dab725d8c esp-hosted-91b093365cc58214532b976dd8749f65523d1e6d.tar.gz +sha256 ed57d96d27be775b22f9571d3724ef84e0d0b8f24b805ec7f87a32189de19a9c LICENSE diff --git a/package/esp-hosted/esp-hosted.mk b/package/esp-hosted/esp-hosted.mk new file mode 100644 index 00000000..4efefc30 --- /dev/null +++ b/package/esp-hosted/esp-hosted.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# esp-hosted +# +################################################################################ + +ESP_HOSTED_VERSION = 91b093365cc58214532b976dd8749f65523d1e6d +ESP_HOSTED_SITE = $(call github,espressif,esp-hosted,$(ESP_HOSTED_VERSION)) +ESP_HOSTED_DEPENDENCIES = linux +ESP_HOSTED_LICENSE = GPL-2.0 +ESP_HOSTED_LICENSE_FILE = LICENSE +ESP_HOSTED_MODULE_SUBDIRS = esp_hosted_ng/host + +define ESP_HOSTED_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_NET) + $(call KCONFIG_ENABLE_OPT,CONFIG_WIRELESS) + $(call KCONFIG_ENABLE_OPT,CONFIG_CFG80211) + $(call KCONFIG_ENABLE_OPT,CONFIG_MAC80211) + $(call KCONFIG_ENABLE_OPT,CONFIG_BT) + $(if $(BR2_PACKAGE_ESP_HOSTED_SPI), + $(call KCONFIG_ENABLE_OPT,CONFIG_SPI), + $(call KCONFIG_ENABLE_OPT,CONFIG_MMC)) +endef + +ifeq ($(BR2_PACKAGE_ESP_HOSTED_SPI),y) +ESP_HOSTED_MODULE_MAKE_OPTS = target=spi +else +ESP_HOSTED_MODULE_MAKE_OPTS = target=sdio +endif + +ifeq ($(BR2_PACKAGE_ESP_HOSTED_TARGET_ESP32),y) +ESP_HOSTED_MODULE_MAKE_OPTS += ESP_SLAVE=CONFIG_TARGET_ESP32=y +else +ESP_HOSTED_MODULE_MAKE_OPTS += ESP_SLAVE=CONFIG_TARGET_ESP32C6=y +endif + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/espeak/0001-Fix-build-of-shared-library-on-architectures-needing.patch b/package/espeak/0001-Fix-build-of-shared-library-on-architectures-needing.patch new file mode 100644 index 00000000..2590e158 --- /dev/null +++ b/package/espeak/0001-Fix-build-of-shared-library-on-architectures-needing.patch @@ -0,0 +1,31 @@ +From 08a464e2b6bd31bb2bf4e258ebfa9b9d65805abf Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 27 Nov 2015 15:17:02 +0100 +Subject: [PATCH] Fix build of shared library on architectures needing -fPIC + +Certain architectures, like Sparc and Sparc64 require objects to be +built with -fPIC (and not just -fpic) to be usable in shared +libraries. On other architectures, -fPIC is the same as -fpic so this +patch doesn't affect such architectures. + +Signed-off-by: Thomas Petazzoni +--- + src/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/Makefile b/src/Makefile +index 95fe549..c293611 100755 +--- a/src/Makefile ++++ b/src/Makefile +@@ -110,7 +110,7 @@ $(BIN2_NAME): $(OBJS3) $(LIB_NAME) + + + x_%.o: %.cpp +- $(CXX) $(CXXFLAGS) $(USE_AUDIO) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -fpic -fvisibility=hidden -pedantic \ ++ $(CXX) $(CXXFLAGS) $(USE_AUDIO) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -fPIC -fvisibility=hidden -pedantic \ + -I. -D LIBRARY -c -fno-exceptions $< -o x_$*.o + + $(LIB_NAME): $(OBJS2) +-- +2.6.3 + diff --git a/package/espeak/0002-tr_languages-cast-string_ordinal-init-values.patch b/package/espeak/0002-tr_languages-cast-string_ordinal-init-values.patch new file mode 100644 index 00000000..2391fc8c --- /dev/null +++ b/package/espeak/0002-tr_languages-cast-string_ordinal-init-values.patch @@ -0,0 +1,33 @@ +From 451330d09a6a3500b40bc4f5896ba790ab46cd6c Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 15 Jan 2017 19:37:31 +0100 +Subject: [PATCH] tr_languages: cast string_ordinal init values + +On some architecture, "char" is signed (x86_64, nios2...) so the +compiler try to convert int 0xc2 and 0xba to a signed char. +This is an error since gcc6 (Wnarrowing). + +Fixes: +http://autobuild.buildroot.net/results/bae/baef9888b1979d18171668a675985e3f3b45fda6 + +Signed-off-by: Romain Naour +--- + src/tr_languages.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp +index 5c80286..dbc6e36 100644 +--- a/src/tr_languages.cpp ++++ b/src/tr_languages.cpp +@@ -200,7 +200,7 @@ static const unsigned short chars_ignore_zwnj_hyphen[] = { + 0x200d, 1, // zero width joiner + 0, 0 }; + +-const char string_ordinal[] = {0xc2,0xba,0}; // masculine ordinal character, UTF-8 ++const char string_ordinal[] = {(char)0xc2,(char)0xba,0}; // masculine ordinal character, UTF-8 + + + static Translator* NewTranslator(void) +-- +2.9.3 + diff --git a/package/espeak/Config.in b/package/espeak/Config.in new file mode 100644 index 00000000..5f9007a1 --- /dev/null +++ b/package/espeak/Config.in @@ -0,0 +1,43 @@ +comment "espeak needs a toolchain w/ C++, wchar, threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || BR2_STATIC_LIBS + depends on BR2_USE_MMU + +config BR2_PACKAGE_ESPEAK + bool "espeak" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + # does not properly support building only a static version + depends on !BR2_STATIC_LIBS + help + espeak is a speech synthesizer software for English and + other languages. + + http://espeak.sourceforge.net/ + +if BR2_PACKAGE_ESPEAK + +choice + prompt "choose audio backend" + default BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_NONE + +config BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_NONE + bool "No sound backend, only produce wav files" + +config BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_ALSA + bool "alsa via portaudio" + # Selecting portaudio generates spurious "unmet dependencies" + # warnings. Unless you are changing the dependencies of espeak + # or portaudio, just ignore those spurious warnings. + select BR2_PACKAGE_PORTAUDIO + select BR2_PACKAGE_PORTAUDIO_CXX + +config BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_PULSEAUDIO + bool "pulseaudio" + depends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC + select BR2_PACKAGE_PULSEAUDIO + +endchoice + +endif # BR2_PACKAGE_ESPEAK diff --git a/package/espeak/espeak.hash b/package/espeak/espeak.hash new file mode 100644 index 00000000..91feda3c --- /dev/null +++ b/package/espeak/espeak.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 bf9a17673adffcc28ff7ea18764f06136547e97bbd9edf2ec612f09b207f0659 espeak-1.48.04-source.zip +sha256 0bbca7a0ad5da4a6b0677f90d17817984edce7e42d300cae94ae93e4ccba9df7 License.txt diff --git a/package/espeak/espeak.mk b/package/espeak/espeak.mk new file mode 100644 index 00000000..44893ac9 --- /dev/null +++ b/package/espeak/espeak.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# espeak +# +################################################################################ + +ESPEAK_VERSION_MAJOR = 1.48 +ESPEAK_VERSION = $(ESPEAK_VERSION_MAJOR).04 +ESPEAK_SOURCE = espeak-$(ESPEAK_VERSION)-source.zip +ESPEAK_SITE = http://downloads.sourceforge.net/project/espeak/espeak/espeak-$(ESPEAK_VERSION_MAJOR) +ESPEAK_LICENSE = GPL-3.0+ +ESPEAK_LICENSE_FILES = License.txt + +ifeq ($(BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_ALSA),y) +ESPEAK_AUDIO_BACKEND = portaudio +ESPEAK_DEPENDENCIES += portaudio +endif +ifeq ($(BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_PULSEAUDIO),y) +ESPEAK_AUDIO_BACKEND = pulseaudio +ESPEAK_DEPENDENCIES += pulseaudio +endif + +define ESPEAK_EXTRACT_CMDS + $(UNZIP) -d $(@D) $(ESPEAK_DL_DIR)/$(ESPEAK_SOURCE) + mv $(@D)/espeak-$(ESPEAK_VERSION)-source/* $(@D) + $(RM) -r $(@D)/espeak-$(ESPEAK_VERSION)-source +endef + +define ESPEAK_CONFIGURE_CMDS + # Buildroot provides portaudio V19, see ReadMe file for more details. + cp $(@D)/src/portaudio19.h $(@D)/src/portaudio.h +endef + +define ESPEAK_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src $(TARGET_CONFIGURE_OPTS) \ + AUDIO="$(ESPEAK_AUDIO_BACKEND)" all +endef + +define ESPEAK_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src $(TARGET_CONFIGURE_OPTS) \ + AUDIO="$(ESPEAK_AUDIO_BACKEND)" DESTDIR="$(TARGET_DIR)" install +endef + +$(eval $(generic-package)) diff --git a/package/espflash/Config.in b/package/espflash/Config.in new file mode 100644 index 00000000..a4451012 --- /dev/null +++ b/package/espflash/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_ESPFLASH + bool "espflash" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_HOST_RUSTC + help + Serial flasher utilities for Espressif devices, based + loosely on esptool.py. Supports the ESP32, + ESP32-C2/C3/C6, ESP32-H2, ESP32-P4, and ESP32-S2/S3. + + https://github.com/esp-rs/espflash + +comment "espflash needs udev /dev management" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + depends on !BR2_PACKAGE_HAS_UDEV diff --git a/package/espflash/espflash.hash b/package/espflash/espflash.hash new file mode 100644 index 00000000..ebe24ef5 --- /dev/null +++ b/package/espflash/espflash.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 8e5da5e90d03135a1b2af6c0b551e4f2504ad64e659b0e88e8a4ecd98cc6a6b6 espflash-3.1.0-cargo2.tar.gz +sha256 0886cf791a43c02d71c105b4835b53293704ec407a72f84a87f73e20cb2d3251 LICENSE-APACHE +sha256 a75018ab59a13738ed2024a0090ae8f91b7693ae84568aa0e52c3dff99e6748d LICENSE-MIT diff --git a/package/espflash/espflash.mk b/package/espflash/espflash.mk new file mode 100644 index 00000000..ad2294e1 --- /dev/null +++ b/package/espflash/espflash.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# espflash +# +################################################################################ + +ESPFLASH_VERSION = 3.1.0 +ESPFLASH_SITE = $(call github,esp-rs,espflash,v$(ESPFLASH_VERSION)) +ESPFLASH_SUBDIR = espflash +ESPFLASH_LICENSE = Apache-2.0 or MIT +ESPFLASH_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT +ESPFLASH_DEPENDENCIES = udev + +$(eval $(cargo-package)) diff --git a/package/ethtool/Config.in b/package/ethtool/Config.in new file mode 100644 index 00000000..48173bfe --- /dev/null +++ b/package/ethtool/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_ETHTOOL + bool "ethtool" + help + ethtool is a small utility for examining and tuning your + ethernet-based network interface. + + https://www.kernel.org/pub/software/network/ethtool/ + +config BR2_PACKAGE_ETHTOOL_PRETTY_PRINT + bool "enable pretty printing" + default y + depends on BR2_PACKAGE_ETHTOOL + help + Enables ethtool's pretty printing for drivers + and SFP modules. diff --git a/package/ethtool/ethtool.hash b/package/ethtool/ethtool.hash new file mode 100644 index 00000000..6c442c37 --- /dev/null +++ b/package/ethtool/ethtool.hash @@ -0,0 +1,5 @@ +# From https://www.kernel.org/pub/software/network/ethtool/sha256sums.asc +sha256 a71b0354010661c5cf178bc606ed50fcb91805cf1897ad0eb2818387a5fd0cd9 ethtool-6.9.tar.xz +# Locally calculated +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 5d632934396f90c82dfebe3c9512648bbb6333b406113d0cd331b0e0aa2d34a1 LICENSE diff --git a/package/ethtool/ethtool.mk b/package/ethtool/ethtool.mk new file mode 100644 index 00000000..bd04fca8 --- /dev/null +++ b/package/ethtool/ethtool.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# ethtool +# +################################################################################ + +ETHTOOL_VERSION = 6.9 +ETHTOOL_SOURCE = ethtool-$(ETHTOOL_VERSION).tar.xz +ETHTOOL_SITE = $(BR2_KERNEL_MIRROR)/software/network/ethtool +ETHTOOL_LICENSE = GPL-2.0 +ETHTOOL_LICENSE_FILES = LICENSE COPYING +ETHTOOL_CPE_ID_VENDOR = kernel +ETHTOOL_CONF_OPTS = \ + $(if $(BR2_PACKAGE_ETHTOOL_PRETTY_PRINT),--enable-pretty-dump,--disable-pretty-dump) + +ifeq ($(BR2_PACKAGE_LIBMNL),y) +ETHTOOL_DEPENDENCIES += host-pkgconf libmnl +ETHTOOL_CONF_OPTS += --enable-netlink +else +ETHTOOL_CONF_OPTS += --disable-netlink +endif + +$(eval $(autotools-package)) diff --git a/package/eudev/Config.in b/package/eudev/Config.in new file mode 100644 index 00000000..6e7bbe46 --- /dev/null +++ b/package/eudev/Config.in @@ -0,0 +1,46 @@ +config BR2_PACKAGE_EUDEV + bool "eudev" + depends on BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV + depends on BR2_USE_MMU # uses fork() + depends on BR2_USE_WCHAR # needs C99 compiler + depends on !BR2_STATIC_LIBS # kmod + select BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_UDEV_GENTOO_SCRIPTS if BR2_INIT_OPENRC + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBS + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_KMOD + help + eudev is a fork of systemd-udev with the goal of obtaining + better compatibility with existing software such as OpenRC and + Upstart, older kernels, various toolchains and anything else + required by users and various distributions. + + https://github.com/eudev-project/eudev + +if BR2_PACKAGE_EUDEV + +config BR2_PACKAGE_PROVIDES_UDEV + default "eudev" + +config BR2_PACKAGE_EUDEV_RULES_GEN + bool "enable rules generator" + help + Enable persistent rules generator + +config BR2_PACKAGE_EUDEV_ENABLE_HWDB + bool "enable hwdb installation" + default y + select BR2_PACKAGE_HOST_EUDEV # for udevadm, during target-finalize + help + Enables hardware database installation to /etc/udev/hwdb.bin + +endif + +comment "eudev needs eudev /dev management" + depends on BR2_USE_MMU + depends on !BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV + +comment "eudev needs a toolchain w/ wchar, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS diff --git a/package/eudev/Config.in.host b/package/eudev/Config.in.host new file mode 100644 index 00000000..87dfc439 --- /dev/null +++ b/package/eudev/Config.in.host @@ -0,0 +1,3 @@ +# Select this if you need host eudev tools (e.g. udevadm) +config BR2_PACKAGE_HOST_EUDEV + bool diff --git a/package/eudev/S10udev b/package/eudev/S10udev new file mode 100644 index 00000000..4e799d65 --- /dev/null +++ b/package/eudev/S10udev @@ -0,0 +1,46 @@ +#!/bin/sh +# +# udev This is a minimal non-LSB version of a UDEV startup script. It +# was derived by stripping down the udev-058 LSB version for use +# with buildroot on embedded hardware using Linux 2.6.34+ kernels. +# +# You may need to customize this for your system's resource limits +# (including startup time!) and administration. For example, if +# your early userspace has a custom initramfs or initrd you might +# need /dev much earlier; or without hotpluggable busses (like USB, +# PCMCIA, MMC/SD, and so on) your /dev might be static after boot. +# +# This script assumes your system boots right into the eventual root +# filesystem, and that init runs this udev script before any programs +# needing more device nodes than the bare-bones set -- /dev/console, +# /dev/zero, /dev/null -- that's needed to boot and run this script. +# + +# Check for config file and read it +UDEV_CONFIG=/etc/udev/udev.conf +test -r $UDEV_CONFIG || exit 6 +. $UDEV_CONFIG + +case "$1" in + start) + printf "Populating %s using udev: " "${udev_root:-/dev}" + [ -e /proc/sys/kernel/hotplug ] && printf '\000\000\000\000' > /proc/sys/kernel/hotplug + /sbin/udevd -d || { echo "FAIL"; exit 1; } + udevadm trigger --type=subsystems --action=add + udevadm trigger --type=devices --action=add + udevadm settle --timeout=30 || echo "udevadm settle failed" + echo "done" + ;; + stop) + # Stop execution of events + udevadm control --stop-exec-queue + killall udevd + ;; + *) + echo "Usage: $0 {start|stop}" + exit 1 + ;; +esac + + +exit 0 diff --git a/package/eudev/eudev.hash b/package/eudev/eudev.hash new file mode 100644 index 00000000..c41bf599 --- /dev/null +++ b/package/eudev/eudev.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 8da4319102f24abbf7fff5ce9c416af848df163b29590e666d334cc1927f006f eudev-3.2.14.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/eudev/eudev.mk b/package/eudev/eudev.mk new file mode 100644 index 00000000..33cc6382 --- /dev/null +++ b/package/eudev/eudev.mk @@ -0,0 +1,85 @@ +################################################################################ +# +# eudev +# +################################################################################ + +EUDEV_VERSION = 3.2.14 +EUDEV_SITE = https://github.com/eudev-project/eudev/releases/download/v$(EUDEV_VERSION) +EUDEV_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries) +EUDEV_LICENSE_FILES = COPYING +EUDEV_INSTALL_STAGING = YES + +EUDEV_CONF_OPTS = \ + --disable-manpages \ + --sbindir=/sbin \ + --libexecdir=/lib \ + --disable-introspection \ + --enable-kmod \ + --enable-blkid + +# eudev requires only the util-linux libraries at build time +EUDEV_DEPENDENCIES = host-gperf host-pkgconf util-linux-libs kmod +EUDEV_PROVIDES = udev + +ifeq ($(BR2_ROOTFS_MERGED_USR),) +EUDEV_CONF_OPTS += --with-rootlibdir=/lib --enable-split-usr +endif + +ifeq ($(BR2_PACKAGE_EUDEV_RULES_GEN),y) +EUDEV_CONF_OPTS += --enable-rule-generator +else +EUDEV_CONF_OPTS += --disable-rule-generator +endif + +ifeq ($(BR2_PACKAGE_EUDEV_ENABLE_HWDB),y) +EUDEV_CONF_OPTS += --enable-hwdb +else +EUDEV_CONF_OPTS += --disable-hwdb +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +EUDEV_CONF_OPTS += --enable-selinux +EUDEV_DEPENDENCIES += libselinux +else +EUDEV_CONF_OPTS += --disable-selinux +endif + +define EUDEV_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/eudev/S10udev $(TARGET_DIR)/etc/init.d/S10udev +endef + +# Avoid installing S10udev with openrc, as the service is started by a unit +# from the udev-gentoo-scripts package. +define EUDEV_INSTALL_INIT_OPENRC + @: +endef + +HOST_EUDEV_DEPENDENCIES = host-gperf host-pkgconf + +HOST_EUDEV_CONF_OPTS = \ + --prefix=/usr \ + --sbindir=/sbin \ + --libexecdir=/lib \ + --with-rootlibdir=/lib \ + --sysconfdir=/etc \ + --disable-blkid \ + --disable-introspection \ + --disable-kmod \ + --disable-manpages \ + --disable-rule-generator \ + --disable-selinux \ + --enable-hwdb + +define HOST_EUDEV_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/src/udev/udevadm \ + $(HOST_DIR)/bin/udevadm +endef + +define HOST_EUDEV_BUILD_HWDB + $(HOST_DIR)/bin/udevadm hwdb --update --root $(TARGET_DIR) +endef +HOST_EUDEV_TARGET_FINALIZE_HOOKS += HOST_EUDEV_BUILD_HWDB + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/ev3dev-linux-drivers/Config.in b/package/ev3dev-linux-drivers/Config.in new file mode 100644 index 00000000..9be2f282 --- /dev/null +++ b/package/ev3dev-linux-drivers/Config.in @@ -0,0 +1,12 @@ +# Prompt-less option, because this package is not doing anything except +# downloading the ev3dev driver sources. The real work is done by a Linux +# extension. +config BR2_PACKAGE_EV3DEV_LINUX_DRIVERS + bool + depends on BR2_LINUX_KERNEL + help + Linux drivers for LEGO MINDSTORMS EV3 + + This is only the download helper for the kernel patch. + + https://github.com/ev3dev/lego-linux-drivers diff --git a/package/ev3dev-linux-drivers/ev3dev-linux-drivers.mk b/package/ev3dev-linux-drivers/ev3dev-linux-drivers.mk new file mode 100644 index 00000000..92e89278 --- /dev/null +++ b/package/ev3dev-linux-drivers/ev3dev-linux-drivers.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# ev3dev Linux drivers +# +################################################################################ + +EV3DEV_LINUX_DRIVERS_VERSION = 0e551eb25ae8600c1f178814781bfb42dc835496 +EV3DEV_LINUX_DRIVERS_SITE = $(call github,ev3dev,lego-linux-drivers,$(EV3DEV_LINUX_DRIVERS_VERSION)) +EV3DEV_LINUX_DRIVERS_LICENSE = GPL-2.0 + +$(eval $(generic-package)) diff --git a/package/ev3dev-linux-drivers/lego-linux-drivers.hash b/package/ev3dev-linux-drivers/lego-linux-drivers.hash new file mode 100644 index 00000000..cc48f653 --- /dev/null +++ b/package/ev3dev-linux-drivers/lego-linux-drivers.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 9d2740b348c8d43e7e15fedc4cec99bf351a3a2ba8691f2a07c439a9c034bc04 lego-linux-drivers-0e551eb25ae8600c1f178814781bfb42dc835496.tar.gz diff --git a/package/evemu/0001-Include-limits.h-for-PATH_MAX.patch b/package/evemu/0001-Include-limits.h-for-PATH_MAX.patch new file mode 100644 index 00000000..04a0cc6b --- /dev/null +++ b/package/evemu/0001-Include-limits.h-for-PATH_MAX.patch @@ -0,0 +1,35 @@ +From e80a13776e6d6df29fd704cd63e0744200c3df1b Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Sun, 1 Oct 2017 19:54:53 +0200 +Subject: [PATCH] Include limits.h for PATH_MAX. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes the following compile failure when building with musl: + + find_event_devices.c: In function ‘find_event_devices’: + find_event_devices.c:60:14: error: ‘PATH_MAX’ undeclared (first use in this function) + char fname[PATH_MAX]; + ^~~~~~~~ + +Signed-off-by: Peter Seiderer +--- + tools/find_event_devices.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tools/find_event_devices.c b/tools/find_event_devices.c +index 2a43d54..3a74096 100644 +--- a/tools/find_event_devices.c ++++ b/tools/find_event_devices.c +@@ -24,6 +24,7 @@ + + #define _GNU_SOURCE + #include ++#include + #include + #include + #include +-- +2.14.2 + diff --git a/package/evemu/0002-evemu-Update-struct-input_event.patch b/package/evemu/0002-evemu-Update-struct-input_event.patch new file mode 100644 index 00000000..50fabaf4 --- /dev/null +++ b/package/evemu/0002-evemu-Update-struct-input_event.patch @@ -0,0 +1,110 @@ +From 30973c0bc053b2198cafb1899a0843688d5bb541 Mon Sep 17 00:00:00 2001 +From: Deepa Dinamani +Date: Mon, 15 Jan 2018 17:18:49 -0800 +Subject: [PATCH] evemu: Update struct input_event + +The struct input_event is not y2038 safe. +Update the struct according to the kernel patch: +https://lkml.org/lkml/2018/1/6/324 + +Signed-off-by: Deepa Dinamani +Signed-off-by: Peter Hutterer +[Retrieved from: +https://gitlab.freedesktop.org/libevdev/evemu/-/commit/30973c0bc053b2198cafb1899a0843688d5bb541] +Signed-off-by: Fabrice Fontaine +--- + src/evemu.c | 35 +++++++++++++++++++++++------------ + 1 file changed, 23 insertions(+), 12 deletions(-) + +diff --git a/src/evemu.c b/src/evemu.c +index a8a949b..c7ff561 100644 +--- a/src/evemu.c ++++ b/src/evemu.c +@@ -771,7 +771,7 @@ int evemu_write_event(FILE *fp, const struct input_event *ev) + { + int rc; + rc = fprintf(fp, "E: %lu.%06u %04x %04x %04d ", +- ev->time.tv_sec, (unsigned)ev->time.tv_usec, ++ ev->input_event_sec, (unsigned)ev->input_event_usec, + ev->type, ev->code, ev->value); + rc += write_event_desc(fp, ev); + return rc; +@@ -800,13 +800,19 @@ int evemu_record(FILE *fp, int fd, int ms) + if (ret < 0) + return ret; + if (ret == sizeof(ev)) { ++ struct timeval tv; + long time; + ++ tv.tv_sec = ev.input_event_sec; ++ tv.tv_usec = ev.input_event_usec; ++ + if (offset == 0) +- offset = time_to_long(&ev.time) - 1; ++ offset = time_to_long(&tv) - 1; + +- time = time_to_long(&ev.time); +- ev.time = long_to_time(time - offset); ++ time = time_to_long(&tv); ++ tv = long_to_time(time - offset); ++ ev.input_event_sec = tv.tv_sec; ++ ev.input_event_usec = tv.tv_usec; + evemu_write_event(fp, &ev); + fflush(fp); + } +@@ -839,8 +845,8 @@ int evemu_read_event(FILE *fp, struct input_event *ev) + return -1; + } + +- ev->time.tv_sec = sec; +- ev->time.tv_usec = usec; ++ ev->input_event_sec = sec; ++ ev->input_event_usec = usec; + ev->type = type; + ev->code = code; + ev->value = value; +@@ -852,8 +858,8 @@ out: + + int evemu_create_event(struct input_event *ev, int type, int code, int value) + { +- ev->time.tv_sec = 0; +- ev->time.tv_usec = 0; ++ ev->input_event_sec = 0; ++ ev->input_event_usec = 0; + ev->type = type; + ev->code = code; + ev->value = value; +@@ -873,6 +879,7 @@ static inline unsigned long us2s(unsigned long us) + int evemu_read_event_realtime(FILE *fp, struct input_event *ev, + struct timeval *evtime) + { ++ struct timeval tv; + unsigned long usec; + const unsigned long ERROR_MARGIN = 150; /* µs */ + int ret; +@@ -882,14 +889,18 @@ int evemu_read_event_realtime(FILE *fp, struct input_event *ev, + return ret; + + if (evtime) { +- if (evtime->tv_sec == 0 && evtime->tv_usec == 0) +- *evtime = ev->time; +- usec = time_to_long(&ev->time) - time_to_long(evtime); ++ if (evtime->tv_sec == 0 && evtime->tv_usec == 0) { ++ evtime->tv_sec = ev->input_event_sec; ++ evtime->tv_usec = ev->input_event_usec; ++ } ++ tv.tv_sec = ev->input_event_sec; ++ tv.tv_usec = ev->input_event_usec; ++ usec = time_to_long(&tv) - time_to_long(evtime); + if (usec > ERROR_MARGIN * 2) { + if (usec > s2us(10)) + error(INFO, "Sleeping for %lds.\n", us2s(usec)); + usleep(usec - ERROR_MARGIN); +- *evtime = ev->time; ++ *evtime = tv; + } + } + +-- +2.24.1 + diff --git a/package/evemu/0003-src-evemu.c-fix-build-with-kernels-4.16.patch b/package/evemu/0003-src-evemu.c-fix-build-with-kernels-4.16.patch new file mode 100644 index 00000000..55221aca --- /dev/null +++ b/package/evemu/0003-src-evemu.c-fix-build-with-kernels-4.16.patch @@ -0,0 +1,52 @@ +From fd204f628021c9bb13870a8c983d9c63e1a53ebb Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 23 Mar 2020 11:04:11 +0100 +Subject: [PATCH] src/evemu.c: fix build with kernels >= 4.16 + +Commit 30973c0b forgot to update all occurences of input_event, this +will result in the following build failure with kernel >= 4.16: + +evemu.c: In function 'write_event_desc': +evemu.c:753:23: error: 'const struct input_event' has no member named 'time'; did you mean 'type'? + time = millis(&ev->time); + ^~~~ + type + +Fixes: + - http://autobuild.buildroot.org/results/487dd5056ec0a977d55b23417d5db2664dcc91fa + +Signed-off-by: Fabrice Fontaine +[Retrieved from: +https://gitlab.freedesktop.org/libevdev/evemu/-/commit/fd204f628021c9bb13870a8c983d9c63e1a53ebb] +--- + src/evemu.c | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) + +diff --git a/src/evemu.c b/src/evemu.c +index c7ff561..42dbe1d 100644 +--- a/src/evemu.c ++++ b/src/evemu.c +@@ -733,11 +733,6 @@ out: + return rc; + } + +-static inline unsigned long millis(const struct timeval *tv) +-{ +- return tv->tv_sec * 1000 + tv->tv_usec/1000; +-} +- + static int write_event_desc(FILE *fp, const struct input_event *ev) + { + int rc; +@@ -750,7 +745,7 @@ static int write_event_desc(FILE *fp, const struct input_event *ev) + libevdev_event_code_get_name(ev->type, ev->code), + ev->value); + } else { +- time = millis(&ev->time); ++ time = ev->input_event_sec * 1000 + ev->input_event_usec/1000; + dt = time - last_ms; + last_ms = time; + rc = fprintf(fp, "# ------------ %s (%d) ---------- %+ldms\n", +-- +2.24.1 + diff --git a/package/evemu/0004-src-evemu.c-fix-build-with-kernels-4.16.patch b/package/evemu/0004-src-evemu.c-fix-build-with-kernels-4.16.patch new file mode 100644 index 00000000..0ff3ee85 --- /dev/null +++ b/package/evemu/0004-src-evemu.c-fix-build-with-kernels-4.16.patch @@ -0,0 +1,47 @@ +From 1babf63444b7b7f3c84e2561fbdecd5fd5a0e36f Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 24 Mar 2020 09:06:29 +0100 +Subject: [PATCH] src/evemu.c: fix build with kernels < 4.16 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Commit 30973c0b fixed the build with kernels >= 4.16 but as a side +effect, build with kernels < 4.16 is now failing on: + +evemu.c:892:18: error: ‘struct input_event’ has no member named ‘input_event_usec’ + tv.tv_usec = ev->input_event_usec; + ^~ + +Fix this error by defining input_event_sec and input_event_usec if +needed + +Signed-off-by: Fabrice Fontaine +[Retrieved from: +https://gitlab.freedesktop.org/libevdev/evemu/-/commit/1babf63444b7b7f3c84e2561fbdecd5fd5a0e36f] +--- + src/evemu.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/src/evemu.c b/src/evemu.c +index 42dbe1d..2f457c1 100644 +--- a/src/evemu.c ++++ b/src/evemu.c +@@ -63,6 +63,14 @@ + + #define SYSCALL(call) while (((call) == -1) && (errno == EINTR)) + ++#ifndef input_event_sec ++#define input_event_sec time.tv_sec ++#endif ++ ++#ifndef input_event_usec ++#define input_event_usec time.tv_usec ++#endif ++ + enum error_level { + INFO, + WARNING, +-- +2.24.1 + diff --git a/package/evemu/Config.in b/package/evemu/Config.in new file mode 100644 index 00000000..07b7174e --- /dev/null +++ b/package/evemu/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_EVEMU + bool "evemu" + select BR2_PACKAGE_LIBEVDEV + help + evemu records and replays device descriptions and events + + http://www.freedesktop.org/wiki/Evemu/ diff --git a/package/evemu/evemu.hash b/package/evemu/evemu.hash new file mode 100644 index 00000000..13dd4029 --- /dev/null +++ b/package/evemu/evemu.hash @@ -0,0 +1,4 @@ +# From https://lists.freedesktop.org/archives/input-tools/2017-September/001416.html +sha256 78c9400d55eeeb5ab75161360543f9376438c4da4934cb34cdda5b46021ae379 evemu-2.7.0.tar.xz +# locally computed +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 COPYING diff --git a/package/evemu/evemu.mk b/package/evemu/evemu.mk new file mode 100644 index 00000000..6bba59cf --- /dev/null +++ b/package/evemu/evemu.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# evemu +# +################################################################################ + +EVEMU_VERSION = 2.7.0 +EVEMU_SITE = http://www.freedesktop.org/software/evemu +EVEMU_SOURCE = evemu-$(EVEMU_VERSION).tar.xz +EVEMU_LICENSE = LGPL-3.0 (library), GPL-3.0 (tools) +EVEMU_LICENSE_FILES = COPYING +EVEMU_AUTORECONF = YES +EVEMU_INSTALL_STAGING = YES + +# asciidoc used to generate manpages, which we don't need, and if it's +# present on the build host, it ends getting called with our host-python +# which doesn't have all the needed modules enabled, breaking the build +EVEMU_CONF_ENV = ac_cv_path_ASCIIDOC="" + +# disable tests generation because of C++ dependency +EVEMU_CONF_OPTS += --disable-tests + +# Uses PKG_CHECK_MODULES() in configure.ac +EVEMU_DEPENDENCIES = host-pkgconf libevdev + +# Check for target python +ifeq ($(BR2_PACKAGE_PYTHON3),y) +EVEMU_CONF_OPTS += --enable-python-bindings +EVEMU_DEPENDENCIES += python3 +else +EVEMU_CONF_OPTS += --disable-python-bindings +endif + +$(eval $(autotools-package)) diff --git a/package/evtest/Config.in b/package/evtest/Config.in new file mode 100644 index 00000000..e74bac02 --- /dev/null +++ b/package/evtest/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_EVTEST + bool "evtest" + help + evtest displays information on the input device specified on + the command line, including all the events supported by the + device. It then monitors the device and displays all the + events layer events generated. + + https://gitlab.freedesktop.org/libevdev/evtest diff --git a/package/evtest/evtest.hash b/package/evtest/evtest.hash new file mode 100644 index 00000000..0ed51df4 --- /dev/null +++ b/package/evtest/evtest.hash @@ -0,0 +1,5 @@ +# locally computed +sha256 06dfe6b9760b78f3f73aca2120cbcb79339b33e59d5c79a49b4bd5d34844b054 evtest-evtest-1.35.tar.gz + +# License files +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/evtest/evtest.mk b/package/evtest/evtest.mk new file mode 100644 index 00000000..65897a41 --- /dev/null +++ b/package/evtest/evtest.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# evtest +# +################################################################################ + +EVTEST_VERSION = 1.35 +EVTEST_SOURCE = evtest-evtest-$(EVTEST_VERSION).tar.gz +EVTEST_SITE = https://gitlab.freedesktop.org/libevdev/evtest/-/archive/evtest-$(EVTEST_VERSION) +EVTEST_LICENSE = GPL-2.0+ +EVTEST_LICENSE_FILES = COPYING +# needed because source package contains no generated files +EVTEST_AUTORECONF = YES + +# asciidoc used to generate manpages, which we don't need, and if it's +# present on the build host, it ends getting called with our host-python +# which doesn't have all the needed modules enabled, breaking the build +EVTEST_CONF_ENV = ac_cv_path_ASCIIDOC="" + +$(eval $(autotools-package)) diff --git a/package/execline/Config.in b/package/execline/Config.in new file mode 100644 index 00000000..7a2278fa --- /dev/null +++ b/package/execline/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_EXECLINE + bool "execline" + depends on BR2_USE_MMU # skalibs + select BR2_PACKAGE_SKALIBS + help + execline is a (non-interactive) scripting language, like sh; + but its syntax is quite different from a traditional shell + syntax. The execlineb program is meant to be used as an + interpreter for a text file; the other commands are + essentially useful inside an execlineb script. + + http://skarnet.org/software/execline/ diff --git a/package/execline/execline.hash b/package/execline/execline.hash new file mode 100644 index 00000000..76412978 --- /dev/null +++ b/package/execline/execline.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 ba2a27e97c5eb6bd7ca6a0987a8925e44465a5be996daa0d18f8feca37d7571a execline-2.9.6.0.tar.gz +sha256 fdc931295525dd0009cdf339189cbecd228d65cefe33402f037f9b046f07989e COPYING diff --git a/package/execline/execline.mk b/package/execline/execline.mk new file mode 100644 index 00000000..ee38d3ed --- /dev/null +++ b/package/execline/execline.mk @@ -0,0 +1,73 @@ +################################################################################ +# +# execline +# +################################################################################ + +EXECLINE_VERSION = 2.9.6.0 +EXECLINE_SITE = https://skarnet.org/software/execline +EXECLINE_LICENSE = ISC +EXECLINE_LICENSE_FILES = COPYING +EXECLINE_INSTALL_STAGING = YES +EXECLINE_DEPENDENCIES = skalibs + +EXECLINE_CONF_OPTS = \ + CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE" \ + --prefix=/ \ + --with-sysdeps=$(STAGING_DIR)/lib/skalibs/sysdeps \ + --with-include=$(STAGING_DIR)/include \ + --with-dynlib=$(STAGING_DIR)/lib \ + --with-lib=$(STAGING_DIR)/lib/skalibs \ + $(if $(BR2_STATIC_LIBS),,--disable-allstatic) \ + $(SHARED_STATIC_LIBS_OPTS) + +define EXECLINE_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(EXECLINE_CONF_OPTS)) +endef + +define EXECLINE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define EXECLINE_REMOVE_STATIC_LIB_DIR + rm -rf $(TARGET_DIR)/usr/lib/execline +endef + +EXECLINE_POST_INSTALL_TARGET_HOOKS += EXECLINE_REMOVE_STATIC_LIB_DIR + +define EXECLINE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +define EXECLINE_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +HOST_EXECLINE_DEPENDENCIES = host-skalibs + +# Set --shebangdir to /usr/bin, as this value is used by the host variant of +# s6-rc when generating execline scripts for the target. +HOST_EXECLINE_CONF_OPTS = \ + --prefix=$(HOST_DIR) \ + --shebangdir=/usr/bin \ + --with-sysdeps=$(HOST_DIR)/lib/skalibs/sysdeps \ + --with-include=$(HOST_DIR)/include \ + --with-dynlib=$(HOST_DIR)/lib \ + --disable-static \ + --enable-shared \ + --disable-allstatic + +define HOST_EXECLINE_CONFIGURE_CMDS + (cd $(@D); $(HOST_CONFIGURE_OPTS) ./configure $(HOST_EXECLINE_CONF_OPTS)) +endef + +define HOST_EXECLINE_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_EXECLINE_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/exempi/Config.in b/package/exempi/Config.in new file mode 100644 index 00000000..eba12a2a --- /dev/null +++ b/package/exempi/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_EXEMPI + bool "exempi" + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_ZLIB + help + Exempi is an implementation of XMP (Extensible Metadata + Platform). Version 2.x is based on Adobe XMP SDK. + + http://libopenraw.freedesktop.org/wiki/Exempi + +comment "exempi needs a toolchain w/ C++, dynamic library, threads, wchar" + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/package/exempi/exempi.hash b/package/exempi/exempi.hash new file mode 100644 index 00000000..772d9130 --- /dev/null +++ b/package/exempi/exempi.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 80b3aa0b7f54978c6a49cc5f5f1d3b6e9524b59de74ef92b3bf0abeba4c28fb1 exempi-2.6.3.tar.xz +sha256 3d3c3593c15e0d35bdae0df7c642106250f6be3adc61477419413900f23ae607 COPYING diff --git a/package/exempi/exempi.mk b/package/exempi/exempi.mk new file mode 100644 index 00000000..b5156c1e --- /dev/null +++ b/package/exempi/exempi.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# exempi +# +################################################################################ + +EXEMPI_VERSION = 2.6.3 +EXEMPI_SOURCE = exempi-$(EXEMPI_VERSION).tar.xz +EXEMPI_SITE = https://libopenraw.freedesktop.org/download +EXEMPI_INSTALL_STAGING = YES +EXEMPI_CONF_OPTS = --disable-samples --disable-unittest +EXEMPI_DEPENDENCIES = host-pkgconf expat zlib \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) +EXEMPI_LICENSE = BSD-3-Clause +EXEMPI_LICENSE_FILES = COPYING +EXEMPI_CPE_ID_VALID = YES + +$(eval $(autotools-package)) diff --git a/package/exfat-utils/Config.in b/package/exfat-utils/Config.in new file mode 100644 index 00000000..4e8f167d --- /dev/null +++ b/package/exfat-utils/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_EXFAT_UTILS + bool "exfat-utils" + depends on BR2_USE_WCHAR + help + exFAT filesystem utilities. + + This is the set of user-space utilities that go together + with the FUSE-based exfat driver from package/exfat. + + If you're using the exfat driver from the official Linux + kernel (merged as of Linux 5.7), you must use the user-space + utilities from package/exfatprogs. + + https://github.com/relan/exfat + +comment "exfat-utils needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/package/exfat-utils/exfat-utils.hash b/package/exfat-utils/exfat-utils.hash new file mode 100644 index 00000000..b4ed8bc5 --- /dev/null +++ b/package/exfat-utils/exfat-utils.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 241575fa93104406a47e79e53e4d907bae69886f11621f70a45276c62b75bf69 exfat-utils-1.4.0.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/exfat-utils/exfat-utils.mk b/package/exfat-utils/exfat-utils.mk new file mode 100644 index 00000000..c02cefb0 --- /dev/null +++ b/package/exfat-utils/exfat-utils.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# exfat-utils +# +################################################################################ + +EXFAT_UTILS_VERSION = 1.4.0 +EXFAT_UTILS_SITE = https://github.com/relan/exfat/releases/download/v$(EXFAT_UTILS_VERSION) +EXFAT_UTILS_LICENSE = GPL-2.0+ +EXFAT_UTILS_LICENSE_FILES = COPYING +EXFAT_UTILS_CPE_ID_VENDOR = exfat_project +EXFAT_UTILS_CPE_ID_PRODUCT = exfat + +EXFAT_UTILS_CONF_OPTS += --exec-prefix=/ + +$(eval $(autotools-package)) diff --git a/package/exfat/Config.in b/package/exfat/Config.in new file mode 100644 index 00000000..c0ed2570 --- /dev/null +++ b/package/exfat/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_EXFAT + bool "exFAT (FUSE)" + depends on BR2_TOOLCHAIN_HAS_THREADS # libfuse + depends on BR2_USE_MMU # libfuse + depends on BR2_USE_WCHAR + depends on !BR2_STATIC_LIBS # libfuse + select BR2_PACKAGE_LIBFUSE3 if !BR2_PACKAGE_LIBFUSE + help + A full-featured exFAT file system implementation for GNU/Linux + and other Unix-like systems as a FUSE module. + + https://github.com/relan/exfat + +comment "exfat needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || BR2_STATIC_LIBS diff --git a/package/exfat/exfat.hash b/package/exfat/exfat.hash new file mode 100644 index 00000000..c6082a40 --- /dev/null +++ b/package/exfat/exfat.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a1cfedc55e0e7a12c184605aa0f0bf44b24a3fb272449b20b2c8bbe6edb3001e fuse-exfat-1.4.0.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/exfat/exfat.mk b/package/exfat/exfat.mk new file mode 100644 index 00000000..d8c28464 --- /dev/null +++ b/package/exfat/exfat.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# exfat +# +################################################################################ + +EXFAT_VERSION = 1.4.0 +EXFAT_SITE = https://github.com/relan/exfat/releases/download/v$(EXFAT_VERSION) +EXFAT_SOURCE = fuse-exfat-$(EXFAT_VERSION).tar.gz +EXFAT_DEPENDENCIES = \ + $(if $(BR2_PACKAGE_LIBFUSE3),libfuse3,libfuse) \ + host-pkgconf +EXFAT_LICENSE = GPL-2.0+ +EXFAT_LICENSE_FILES = COPYING +EXFAT_CPE_ID_VALID = YES + +EXFAT_CONF_OPTS += --exec-prefix=/ + +$(eval $(autotools-package)) diff --git a/package/exfatprogs/Config.in b/package/exfatprogs/Config.in new file mode 100644 index 00000000..4f50427a --- /dev/null +++ b/package/exfatprogs/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_EXFATPROGS + bool "exfatprogs" + depends on BR2_USE_WCHAR + help + exFAT filesystem userspace utilities. + + This is the set of tools that works together with the exfat + driver in the official Linux kernel (merged in Linux 5.7). + + If you're using the FUSE-based exfat support (from + package/exfat), you must use the corresponding user-space + programs in package/exfat-utils. + + https://github.com/exfatprogs/exfatprogs + +comment "exfatprogs needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/package/exfatprogs/Config.in.host b/package/exfatprogs/Config.in.host new file mode 100644 index 00000000..d4a0b0c2 --- /dev/null +++ b/package/exfatprogs/Config.in.host @@ -0,0 +1,13 @@ +config BR2_PACKAGE_HOST_EXFATPROGS + bool "host exfatprogs" + help + exFAT filesystem userspace utilities + + This is the set of tools that works together with the exfat + driver in the official Linux kernel (merged in Linux 5.7). + + If you're using the FUSE-based exfat support (from + package/exfat), you must use the corresponding user-space + programs in package/exfat-utils. + + https://github.com/exfatprogs/exfatprogs diff --git a/package/exfatprogs/exfatprogs.hash b/package/exfatprogs/exfatprogs.hash new file mode 100644 index 00000000..9f3100db --- /dev/null +++ b/package/exfatprogs/exfatprogs.hash @@ -0,0 +1,5 @@ +# From https://github.com/exfatprogs/exfatprogs/releases/download/1.2.2/exfatprogs-1.2.2.tar.xz.sha256 +sha256 61d517231f8ec177eeb5955fd6edb89748d3f88ba412c48bcb32741b430e359a exfatprogs-1.2.2.tar.xz + +# Hash for license file +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/exfatprogs/exfatprogs.mk b/package/exfatprogs/exfatprogs.mk new file mode 100644 index 00000000..40d90725 --- /dev/null +++ b/package/exfatprogs/exfatprogs.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# exfatprogs +# +################################################################################ + +EXFATPROGS_VERSION = 1.2.2 +EXFATPROGS_SOURCE = exfatprogs-$(EXFATPROGS_VERSION).tar.xz +EXFATPROGS_SITE = https://github.com/exfatprogs/exfatprogs/releases/download/$(EXFATPROGS_VERSION) +EXFATPROGS_LICENSE = GPL-2.0+ +EXFATPROGS_LICENSE_FILES = COPYING +EXFATPROGS_CPE_ID_VENDOR = namjaejeon + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/exim/0001-Build-buildconfig-for-the-host.patch b/package/exim/0001-Build-buildconfig-for-the-host.patch new file mode 100644 index 00000000..e9da8076 --- /dev/null +++ b/package/exim/0001-Build-buildconfig-for-the-host.patch @@ -0,0 +1,25 @@ +buildconfig is meant to be executed on the host, so it has to be compiled +using $(HOSTCC), not $(CC). + +Signed-off-by: Luca Ceresoli +[Bernd: rebased for version 4.97.1] +Signed-off-by: Bernd Kuhls +--- + OS/Makefile-Base | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/OS/Makefile-Base b/OS/Makefile-Base +index 29a6ad3..420ba60 100644 +--- a/OS/Makefile-Base ++++ b/OS/Makefile-Base +@@ -258,8 +258,8 @@ allexim: config.h $(EXIM_MONITOR) exicyclog exinext exiwhat \ + + # Targets for special-purpose configuration header builders + buildconfig: buildconfig.c +- @echo "$(CC) buildconfig.c" +- $(FE)$(CC) $(CFLAGS) $(INCLUDE) -o buildconfig buildconfig.c $(LIBS) ++ @echo "$(HOSTCC) buildconfig.c" ++ $(FE)$(HOSTCC) $(HOSTCFLAGS) $(INCLUDE) -o buildconfig buildconfig.c + + + # Target for the exicyclog utility script diff --git a/package/exim/0002-Don-t-make-backup-copies-of-installed-files.patch b/package/exim/0002-Don-t-make-backup-copies-of-installed-files.patch new file mode 100644 index 00000000..3c115f8d --- /dev/null +++ b/package/exim/0002-Don-t-make-backup-copies-of-installed-files.patch @@ -0,0 +1,42 @@ +If exim had already been installed, the install script makes backup +copies of the pre-existing executables with a ".0" suffix. + +This leads to useless duplicated files on the target, so disable this +piece of code. + +Signed-off-by: Luca Ceresoli +[Bernd: rebased for version 4.97.1] +Signed-off-by: Bernd Kuhls +--- + scripts/exim_install | 18 +++++++++--------- + 1 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/scripts/exim_install b/scripts/exim_install +index 616ab3c..e68e7d5 100755 +--- a/scripts/exim_install ++++ b/scripts/exim_install +@@ -348,15 +348,15 @@ while [ $# -gt 0 ]; do + + else + if ../scripts/newer ${name} ${BIN_DIRECTORY}/${name}; then +- if [ -f ${BIN_DIRECTORY}/${name} ]; then +- echo ${CP} ${BIN_DIRECTORY}/${name} ${BIN_DIRECTORY}/${name}.O +- ${real} ${CP} ${BIN_DIRECTORY}/${name} ${BIN_DIRECTORY}/${name}.O +- if [ $? -ne 0 ]; then +- echo $com "" +- echo $com "*** Exim installation ${ver}failed ***" +- exit 1 +- fi +- fi ++# if [ -f ${BIN_DIRECTORY}/${name} ]; then ++# echo ${CP} ${BIN_DIRECTORY}/${name} ${BIN_DIRECTORY}/${name}.O ++# ${real} ${CP} ${BIN_DIRECTORY}/${name} ${BIN_DIRECTORY}/${name}.O ++# if [ $? -ne 0 ]; then ++# echo $com "" ++# echo $com "*** Exim installation ${ver}failed ***" ++# exit 1 ++# fi ++# fi + echo ${CP} ${name} ${BIN_DIRECTORY} + ${real} ${CP} ${name} ${BIN_DIRECTORY} + if [ $? -ne 0 ]; then diff --git a/package/exim/0003-Skip-version-check-and-symlink-installation.patch b/package/exim/0003-Skip-version-check-and-symlink-installation.patch new file mode 100644 index 00000000..55166f10 --- /dev/null +++ b/package/exim/0003-Skip-version-check-and-symlink-installation.patch @@ -0,0 +1,41 @@ +The exim install script installs a binary named exim-, plus a symlink +to it named exim. +In order to achieve this "feature" (of dubious usefulness) it runs the +executable (on the host) and then filters its output to grab the version number. +This clearly cannot work if the executable is cross-compiled, so get rid of all +of it and just install an executable file called exim. + +Inspired by: +http://patch-tracker.debian.org/patch/series/view/exim4/4.76-2/35_install.dpatch + +Signed-off-by: Luca Ceresoli +[Bernd: rebased for version 4.89 & 4.97.1] +Signed-off-by: Bernd Kuhls +--- + scripts/exim_install | 7 +++++-- + 1 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/scripts/exim_install b/scripts/exim_install +index e68e7d5..487a4e1 100755 +--- a/scripts/exim_install ++++ b/scripts/exim_install +@@ -61,6 +61,8 @@ + shift + done + ++do_symlink=no ++ + # Get the values of BIN_DIRECTORY, CONFIGURE_FILE, INFO_DIRECTORY, NO_SYMLINK, + # SYSTEM_ALIASES_FILE, and EXE from the global Makefile (in the build + # directory). EXE is empty except in the Cygwin environment. In each case, keep +@@ -220,9 +223,7 @@ + # The exim binary is handled specially + + if [ $name = exim${EXE} ]; then +- exim="./exim -bV -C /dev/null" +- version=exim-`$exim 2>/dev/null | \ +- awk '/Exim version/ { OFS=""; print $3,"-",substr($4,2,length($4)-1) }'`${EXE} ++ version=exim + + if [ "${version}" = "exim-${EXE}" ]; then + echo $com "" diff --git a/package/exim/0004-sieve-fix-build-errors.patch b/package/exim/0004-sieve-fix-build-errors.patch new file mode 100644 index 00000000..c1a2c45b --- /dev/null +++ b/package/exim/0004-sieve-fix-build-errors.patch @@ -0,0 +1,44 @@ +From e9d0b5b022df172d3615e9e2875506c74e6d7cd1 Mon Sep 17 00:00:00 2001 +From: Luca Ceresoli +Date: Wed, 5 Feb 2020 17:13:57 +0100 +Subject: [PATCH] sieve: fix build errors + +sieve fails to cross-compile with the Sourcery CodeBench ARM 2014.05 +toolchain with a huge number of errors, including: + + .../sysroot/usr/include/arpa/nameser.h:115:2: error: unknown type name 'u_char' + const u_char *_msg, *_eom; + ^ + .../sysroot/usr/include/arpa/nameser.h:474:1: error: unknown type name 'u_long' + u_long ns_get32 (const u_char *) __THROW; + ^ + .../sysroot/usr/include/arpa/nameser.h:475:31: error: expected ')' before '*' token + void ns_put16 (u_int, u_char *) __THROW; + ^ + +Discovered when cross-compiling with the Buildroot embedded Linux +buildsystem. + +Signed-off-by: Luca Ceresoli +Upstream: https://bugs.exim.org/show_bug.cgi?id=2523 +[Bernd: rebased for version 4.97.1] +Signed-off-by: Bernd Kuhls +--- + src/sieve.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/sieve.c b/src/sieve.c +index 5e8d1e6f4776..9632f2d43810 100644 +--- a/src/sieve.c ++++ b/src/sieve.c +@@ -14,6 +14,8 @@ + + /* Sieve mail filter. */ + ++#define _BSD_SOURCE ++ + #include + #include + #include +-- +2.25.0 diff --git a/package/exim/Config.in b/package/exim/Config.in new file mode 100644 index 00000000..0d2f5f49 --- /dev/null +++ b/package/exim/Config.in @@ -0,0 +1,37 @@ +comment "exim needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_EXIM + bool "exim" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_PCRE2 + select BR2_PACKAGE_BERKELEYDB + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + Exim is a message transfer agent (MTA) developed at the + University of Cambridge for use on Unix systems connected to + the Internet. + + http://www.exim.org/ + +if BR2_PACKAGE_EXIM + +config BR2_PACKAGE_EXIM_CUSTOM_CONFIG_FILE + string "Custom configuration file" + help + By default, when this option is left empty, Buildroot + generates a configuration file for exim with reasonable + settings. + + If you want to override the configuration file generated by + Buildroot with a customized file, set here the path to your + configuration file with this option. + + This file shall comply with the syntax defined in the exim + documentation (http://www.exim.org/docs.html). + Buildroot will generate a configuration file composed of the + content of the file you provide plus the toolchain-related + settings needed for cross-compilation. + +endif diff --git a/package/exim/S86exim b/package/exim/S86exim new file mode 100644 index 00000000..0d09361f --- /dev/null +++ b/package/exim/S86exim @@ -0,0 +1,34 @@ +#!/bin/sh +# +# Start/stop exim +# + +PIDFILE=/var/run/exim/exim.pid + +case "$1" in + start) + echo "Starting exim..." + if [ ! -d /var/log/exim ]; then + mkdir -p /var/log/exim + chown exim:mail /var/log/exim + fi + if [ ! -d /var/run/exim ]; then + mkdir -p /var/run/exim + chown root:mail /var/run/exim + fi + start-stop-daemon -S -x exim -- -bd + ;; + stop) + printf "Stopping exim..." + start-stop-daemon -K -o -p $PIDFILE + ;; + restart|reload) + "$0" stop + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/package/exim/exim.hash b/package/exim/exim.hash new file mode 100644 index 00000000..de803bb2 --- /dev/null +++ b/package/exim/exim.hash @@ -0,0 +1,6 @@ +# From https://ftp.exim.org/pub/exim/exim4/00-sha256sums.txt +sha256 0ebc108a779f9293ba4b423c20818f9a3db79b60286d96abc6ba6b85a15852f7 exim-4.98.tar.xz +# From https://ftp.exim.org/pub/exim/exim4/00-sha512sums.txt +sha512 13dd963dd0899bb4d64bee44c20883e720e469a4d77456b877d6693cfc4419805a045cb561508cdf763dbb37cc84fbdc6177d68acc2183934c3224fbd03caf15 exim-4.98.tar.xz +# Locally calculated +sha256 49240db527b7e55b312a46fc59794fde5dd006422e422257f4f057bfd27b3c8f LICENCE diff --git a/package/exim/exim.mk b/package/exim/exim.mk new file mode 100644 index 00000000..45708d39 --- /dev/null +++ b/package/exim/exim.mk @@ -0,0 +1,177 @@ +################################################################################ +# +# exim +# +################################################################################ + +EXIM_VERSION = 4.98 +EXIM_SOURCE = exim-$(EXIM_VERSION).tar.xz +EXIM_SITE = https://ftp.exim.org/pub/exim/exim4 +EXIM_LICENSE = GPL-2.0+ +EXIM_LICENSE_FILES = LICENCE +EXIM_CPE_ID_VENDOR = exim +EXIM_SELINUX_MODULES = exim mta +EXIM_DEPENDENCIES = host-berkeleydb host-pcre2 pcre2 berkeleydb host-pkgconf + +# 0006-Fix-regex-n-use-after-free.-Bug-2915.patch +EXIM_IGNORE_CVES += CVE-2022-3559 + +# built without dmarc support +EXIM_IGNORE_CVES += CVE-2022-3620 + +# Modify a variable value. It must already exist in the file, either +# commented or not. +define exim-config-change # variable-name, variable-value + $(SED) 's,^[#[:space:]]*$1[[:space:]]*=.*$$,$1=$2,' \ + $(@D)/Local/Makefile +endef + +# Comment-out a variable. Has no effect if it does not exist. +define exim-config-unset # variable-name + $(SED) 's,^\([[:space:]]*$1[[:space:]]*=.*$$\),# \1,' \ + $(@D)/Local/Makefile +endef + +# Add a variable definition. It must not already exist in the file, +# otherwise it would be defined twice with potentially different values. +define exim-config-add # variable-name, variable-value + echo "$1=$2" >>$(@D)/Local/Makefile +endef + +define EXIM_USE_CUSTOM_CONFIG_FILE + $(INSTALL) -m 0644 $(BR2_PACKAGE_EXIM_CUSTOM_CONFIG_FILE) \ + $(@D)/Local/Makefile +endef + +define EXIM_USE_DEFAULT_CONFIG_FILE + $(INSTALL) -m 0644 $(@D)/src/EDITME $(@D)/Local/Makefile + $(call exim-config-change,BIN_DIRECTORY,/usr/sbin) + $(call exim-config-change,CONFIGURE_FILE,/etc/exim/configure) + $(call exim-config-change,LOG_FILE_PATH,/var/log/exim/exim_%slog) + $(call exim-config-change,PID_FILE_PATH,/var/run/exim/exim.pid) + $(call exim-config-change,EXIM_USER,ref:exim) + $(call exim-config-change,EXIM_GROUP,mail) + $(call exim-config-change,TRANSPORT_LMTP,yes) + $(call exim-config-change,PCRE_LIBS,-lpcre2-8) + $(call exim-config-change,PCRE2_CONFIG,no) + $(call exim-config-change,HAVE_ICONV,no) + $(call exim-config-unset,EXIM_MONITOR) + $(call exim-config-change,AUTH_PLAINTEXT,yes) + $(call exim-config-change,AUTH_CRAM_MD5,yes) + $(call exim-config-unset,SUPPORT_DANE) +endef + +ifeq ($(BR2_PACKAGE_DOVECOT),y) +EXIM_DEPENDENCIES += dovecot +define EXIM_USE_DEFAULT_CONFIG_FILE_DOVECOT + $(call exim-config-change,AUTH_DOVECOT,yes) +endef +endif + +ifeq ($(BR2_PACKAGE_CLAMAV),y) +EXIM_DEPENDENCIES += clamav +define EXIM_USE_DEFAULT_CONFIG_FILE_CLAMAV + $(call exim-config-change,WITH_CONTENT_SCAN,yes) +endef +endif + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +EXIM_DEPENDENCIES += libxcrypt +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +EXIM_DEPENDENCIES += host-openssl openssl +define EXIM_USE_DEFAULT_CONFIG_FILE_OPENSSL + $(call exim-config-change,USE_OPENSSL,yes) + $(call exim-config-change,USE_OPENSSL_PC,openssl) +endef +else +define EXIM_USE_DEFAULT_CONFIG_FILE_OPENSSL + $(call exim-config-change,DISABLE_TLS,yes) +endef +endif + +# musl does not provide struct ip_options nor struct ip_opts (but it is +# available with both glibc and uClibc) +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +define EXIM_FIX_IP_OPTIONS_FOR_MUSL + $(SED) 's/#define GLIBC_IP_OPTIONS/#define DARWIN_IP_OPTIONS/' \ + $(@D)/OS/os.h-Linux +endef +endif + +define EXIM_CONFIGURE_TOOLCHAIN + $(call exim-config-add,CC,$(TARGET_CC)) + $(call exim-config-add,CFLAGS,$(TARGET_CFLAGS)) + $(call exim-config-add,AR,$(TARGET_AR) cq) + $(call exim-config-add,RANLIB,$(TARGET_RANLIB)) + $(call exim-config-add,HOSTCC,$(HOSTCC)) + $(call exim-config-add,HOSTCFLAGS,$(HOSTCFLAGS)) + $(call exim-config-add,EXTRALIBS,$(EXIM_EXTRALIBS)) + $(EXIM_FIX_IP_OPTIONS_FOR_MUSL) +endef + +ifneq ($(call qstrip,$(BR2_PACKAGE_EXIM_CUSTOM_CONFIG_FILE)),) +define EXIM_CONFIGURE_CMDS + $(EXIM_USE_CUSTOM_CONFIG_FILE) + $(EXIM_CONFIGURE_TOOLCHAIN) +endef +else # CUSTOM_CONFIG +define EXIM_CONFIGURE_CMDS + $(EXIM_USE_DEFAULT_CONFIG_FILE) + $(EXIM_USE_DEFAULT_CONFIG_FILE_DOVECOT) + $(EXIM_USE_DEFAULT_CONFIG_FILE_CLAMAV) + $(EXIM_USE_DEFAULT_CONFIG_FILE_OPENSSL) + $(EXIM_CONFIGURE_TOOLCHAIN) +endef +endif # CUSTOM_CONFIG + +# exim needs a bit of love to build statically +ifeq ($(BR2_STATIC_LIBS),y) +EXIM_STATIC_FLAGS = LFLAGS="-pthread --static" +endif + +ifeq ($(BR2_PACKAGE_LIBEXECINFO),y) +EXIM_DEPENDENCIES += libexecinfo +EXIM_EXTRALIBS += -lexecinfo +else ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),) +EXIM_CFLAGS = -DNO_EXECINFO +endif + +# We need the host version of macro_predef during the build, before +# building it we need to prepare the makefile. +define EXIM_BUILD_CMDS + $(TARGET_MAKE_ENV) build=br $(MAKE) -C $(@D) makefile + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/build-br macro_predef \ + CC="$(HOSTCC)" \ + LNCC="$(HOSTCC)" \ + CFLAGS="-std=c99 $(HOST_CFLAGS)" \ + LFLAGS="-fPIC $(HOST_LDFLAGS)" + $(TARGET_MAKE_ENV) build=br $(MAKE) -C $(@D) $(EXIM_STATIC_FLAGS) \ + CFLAGS="-std=c99 $(TARGET_CFLAGS) $(EXIM_CFLAGS)" exim +endef + +# Need to replicate the LFLAGS in install, as exim still wants to build +# something when installing... +define EXIM_INSTALL_TARGET_CMDS + cd $(@D)/build-br; \ + DESTDIR=$(TARGET_DIR) build=br \ + ../scripts/exim_install -no_chown -no_symlink exim + chmod u+s $(TARGET_DIR)/usr/sbin/exim +endef + +define EXIM_USERS + exim 88 mail 8 * - - - exim +endef + +define EXIM_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/exim/S86exim \ + $(TARGET_DIR)/etc/init.d/S86exim +endef + +define EXIM_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/exim/exim.service \ + $(TARGET_DIR)/usr/lib/systemd/system/exim.service +endef + +$(eval $(generic-package)) diff --git a/package/exim/exim.service b/package/exim/exim.service new file mode 100644 index 00000000..ac3f067d --- /dev/null +++ b/package/exim/exim.service @@ -0,0 +1,14 @@ +[Unit] +Description=Exim MTA +After=syslog.target network.target + +[Service] +User=exim +Group=mail +LogsDirectory=exim +RuntimeDirectory=exim +ExecStart=/usr/sbin/exim -bdf +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/exiv2/0001-add-BUILD_WITH_STACK_PROTECTOR-option.patch b/package/exiv2/0001-add-BUILD_WITH_STACK_PROTECTOR-option.patch new file mode 100644 index 00000000..18684ebb --- /dev/null +++ b/package/exiv2/0001-add-BUILD_WITH_STACK_PROTECTOR-option.patch @@ -0,0 +1,54 @@ +From 4bb57da5fb0bb0d7e747b9e325e9ec0876ffc1f9 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 31 Jul 2021 16:36:50 +0200 +Subject: [PATCH] add BUILD_WITH_STACK_PROTECTOR option + +Add BUILD_WITH_STACK_PROTECTOR to avoid the following build failure with +toolchains that don't support stack-protector: + +/home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mipsel-buildroot-linux-uclibc/9.3.0/../../../../mipsel-buildroot-linux-uclibc/bin/ld: utils.cpp:(.text._ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag[_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag]+0xd0): undefined reference to `__stack_chk_fail' + +Indeed, support for -fstack-protector-strong can't be detected through +check_cxx_compiler_flag as some toolchains need to link with -lssp to +enable SSP support + +Fixes: + - http://autobuild.buildroot.org/results/ae4635899124c602c70d2b342a76f95c34aa4a3d + +Upstream: https://github.com/Exiv2/exiv2/commit/f31c0eba098889899d29b7b0da830aee2b62a7b8 +Signed-off-by: Fabrice Fontaine +--- + CMakeLists.txt | 1 + + cmake/compilerFlags.cmake | 4 ++-- + 2 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 6f0da06a..0746ee14 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -47,6 +47,7 @@ mark_as_advanced( + EXIV2_TEAM_USE_SANITIZERS + ) + ++option( BUILD_WITH_STACK_PROTECTOR "Build with stack protector" ON ) + option( BUILD_WITH_CCACHE "Use ccache to speed up compilations" OFF ) + option( BUILD_WITH_COVERAGE "Add compiler flags to generate coverage stats" OFF ) + +diff --git a/cmake/compilerFlags.cmake b/cmake/compilerFlags.cmake +index 35faf501..0a646e50 100644 +--- a/cmake/compilerFlags.cmake ++++ b/cmake/compilerFlags.cmake +@@ -33,8 +33,8 @@ if ( MINGW OR UNIX OR MSYS ) # MINGW, Linux, APPLE, CYGWIN + endif() + if(HAS_FCF_PROTECTION) + add_compile_options(-fcf-protection) +- endif() +- if(HAS_FSTACK_PROTECTOR_STRONG) ++ endif() ++ if(BUILD_WITH_STACK_PROTECTOR AND HAS_FSTACK_PROTECTOR_STRONG) + add_compile_options(-fstack-protector-strong) + endif() + endif() +-- +2.31.1 + diff --git a/package/exiv2/Config.in b/package/exiv2/Config.in new file mode 100644 index 00000000..3e3e5027 --- /dev/null +++ b/package/exiv2/Config.in @@ -0,0 +1,44 @@ +comment "exiv2 needs a uClibc or glibc toolchain w/ C++, wchar, dynamic library, threads" + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS \ + || BR2_TOOLCHAIN_USES_MUSL + +config BR2_PACKAGE_EXIV2 + bool "exiv2" + depends on !BR2_STATIC_LIBS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_TOOLCHAIN_USES_MUSL # PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP + depends on BR2_USE_WCHAR + help + Exiv2 is a C++ library and a command line utility to manage + image metadata. It provides fast and easy read and write + access to the Exif, IPTC and XMP metadata of images in + various formats. + + http://www.exiv2.org/ + +if BR2_PACKAGE_EXIV2 + +config BR2_PACKAGE_EXIV2_PNG + bool "PNG image support" + select BR2_PACKAGE_ZLIB + help + Build with PNG image support + +config BR2_PACKAGE_EXIV2_XMP + bool "XMP support" + select BR2_PACKAGE_EXPAT + help + Build with XMP support + +config BR2_PACKAGE_EXIV2_LENSDATA + bool "Nikon lens name database" + help + Integrate Nikon lens name database. + + This database comes from a thirdparty and is free to use in + non-commercial, GPL or open source software only. + For more informations src/nikonmn_int.cpp. + +endif diff --git a/package/exiv2/exiv2.hash b/package/exiv2/exiv2.hash new file mode 100644 index 00000000..c8712778 --- /dev/null +++ b/package/exiv2/exiv2.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 4c192483a1125dc59a3d70b30d30d32edace9e14adf52802d2f853abf72db8a6 exiv2-0.27.6-Source.tar.gz +sha256 a7ba75cb966aca374711e2af49e5f3aea6a4443a803440f5d93e73a5a1222f66 COPYING diff --git a/package/exiv2/exiv2.mk b/package/exiv2/exiv2.mk new file mode 100644 index 00000000..869f8e48 --- /dev/null +++ b/package/exiv2/exiv2.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# exiv2 +# +################################################################################ + +EXIV2_VERSION = 0.27.6 +EXIV2_SOURCE = exiv2-$(EXIV2_VERSION)-Source.tar.gz +EXIV2_SITE = https://github.com/Exiv2/exiv2/releases/download/v$(EXIV2_VERSION) +EXIV2_INSTALL_STAGING = YES +EXIV2_LICENSE = GPL-2.0+ +EXIV2_LICENSE_FILES = COPYING +EXIV2_CPE_ID_VENDOR = exiv2 + +EXIV2_CONF_OPTS += \ + -DBUILD_WITH_STACK_PROTECTOR=OFF \ + -DEXIV2_BUILD_SAMPLES=OFF + +ifeq ($(BR2_PACKAGE_EXIV2_LENSDATA),y) +EXIV2_CONF_OPTS += -DEXIV2_ENABLE_LENSDATA=ON +else +EXIV2_CONF_OPTS += -DEXIV2_ENABLE_LENSDATA=OFF +endif + +ifeq ($(BR2_PACKAGE_EXIV2_PNG),y) +EXIV2_CONF_OPTS += -DEXIV2_ENABLE_PNG=ON +EXIV2_DEPENDENCIES += zlib +else +EXIV2_CONF_OPTS += -DEXIV2_ENABLE_PNG=OFF +endif + +ifeq ($(BR2_PACKAGE_EXIV2_XMP),y) +EXIV2_CONF_OPTS += -DEXIV2_ENABLE_XMP=ON +EXIV2_DEPENDENCIES += expat +else +EXIV2_CONF_OPTS += -DEXIV2_ENABLE_XMP=OFF +endif + +EXIV2_DEPENDENCIES += $(TARGET_NLS_DEPENDENCIES) + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +EXIV2_CONF_OPTS += -DEXIV2_ENABLE_NLS=ON +else +EXIV2_CONF_OPTS += -DEXIV2_ENABLE_NLS=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/expat/Config.in b/package/expat/Config.in new file mode 100644 index 00000000..758fb7d5 --- /dev/null +++ b/package/expat/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_EXPAT + bool "expat" + help + The Expat XML Parser. + + http://expat.sourceforge.net diff --git a/package/expat/expat.hash b/package/expat/expat.hash new file mode 100644 index 00000000..63890b54 --- /dev/null +++ b/package/expat/expat.hash @@ -0,0 +1,7 @@ +# From https://sourceforge.net/projects/expat/files/expat/2.6.2/ +md5 0cb75c8feb842c0794ba89666b762a2d expat-2.6.1.tar.xz +sha1 d9e5f953dcacda3c9e69b4886382c3d8847b81bd expat-2.6.1.tar.xz + +# Locally calculated +sha256 ee14b4c5d8908b1bec37ad937607eab183d4d9806a08adee472c3c3121d27364 expat-2.6.2.tar.xz +sha256 122f2c27000472a201d337b9b31f7eb2b52d091b02857061a8880371612d9534 COPYING diff --git a/package/expat/expat.mk b/package/expat/expat.mk new file mode 100644 index 00000000..c6b7fc8b --- /dev/null +++ b/package/expat/expat.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# expat +# +################################################################################ + +EXPAT_VERSION = 2.6.2 +EXPAT_SITE = http://downloads.sourceforge.net/project/expat/expat/$(EXPAT_VERSION) +EXPAT_SOURCE = expat-$(EXPAT_VERSION).tar.xz +EXPAT_INSTALL_STAGING = YES +EXPAT_LICENSE = MIT +EXPAT_LICENSE_FILES = COPYING +EXPAT_CPE_ID_VENDOR = libexpat_project +EXPAT_CPE_ID_PRODUCT = libexpat + +EXPAT_CONF_OPTS = \ + --without-docbook --without-examples --without-tests --without-xmlwf +HOST_EXPAT_CONF_OPTS = --without-docbook --without-examples --without-tests + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/expect/0001-enable-cross-compilation.patch b/package/expect/0001-enable-cross-compilation.patch new file mode 100644 index 00000000..fd31a01f --- /dev/null +++ b/package/expect/0001-enable-cross-compilation.patch @@ -0,0 +1,120 @@ +From: Andrew Ruder +Subject: [PATCH] enable cross compilation for expect + +This patch was created by running ./configure on a modern Linux machine +and inserting the results into the cross compilation section of +each AC_MSG_CHECKING that bombed out with an error. + +Signed-off-by: Andrew Ruder +--- + +Index: expect-5.45/configure.in +=================================================================== +--- expect-5.45.orig/configure.in 2013-11-14 07:59:58.732100595 -0600 ++++ expect-5.45/configure.in 2013-11-14 07:59:58.732100595 -0600 +@@ -481,7 +481,7 @@ + , + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_MSG_RESULT(no) + ) + + AC_MSG_CHECKING([if any value exists for WNOHANG]) +@@ -506,7 +506,8 @@ + AC_MSG_RESULT(no) + AC_DEFINE(WNOHANG_BACKUP_VALUE, 1) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_MSG_RESULT(yes) ++ AC_DEFINE(WNOHANG_BACKUP_VALUE, 1) + ) + + # +@@ -574,7 +575,7 @@ + AC_DEFINE(REARM_SIG) + , + AC_MSG_RESULT(no) +-, AC_MSG_WARN([Expect can't be cross compiled]) ++, AC_MSG_RESULT(no) + ) + + # HPUX7 has trouble with the big cat so split it +@@ -725,7 +726,7 @@ + , + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_MSG_RESULT(no) + ) + + # mach systems have include files for unimplemented features +@@ -749,7 +750,9 @@ + , + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_DEFINE(HAVE_TERMIO) ++ PTY_TYPE=termios ++ AC_MSG_RESULT(yes) + ) + + # now check for the new style ttys (not yet posix) +@@ -771,7 +774,9 @@ + , + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_DEFINE(HAVE_TERMIOS) ++ PTY_TYPE=termios ++ AC_MSG_RESULT(yes) + ) + fi + +@@ -794,7 +799,7 @@ + , + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_MSG_RESULT(no) + ) + + AC_MSG_CHECKING([if TIOCGWINSZ in termios.h]) +@@ -816,7 +821,7 @@ + , + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_MSG_RESULT(no) + ) + + # finally check for Cray style ttys +@@ -837,7 +842,7 @@ + , + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_MSG_RESULT(no) + ) + + # +@@ -869,7 +874,9 @@ + AC_HAVE_FUNCS(getpty) + + # following test sets SETPGRP_VOID if setpgrp takes 0 args, else takes 2 +-AC_FUNC_SETPGRP ++cat >>expect_cf.h <<\_ACEOF ++#define SETPGRP_VOID 1 ++_ACEOF + + # + # check for timezones +@@ -889,7 +896,7 @@ + AC_MSG_RESULT(yes), + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_MSG_RESULT(yes) + ) + + diff --git a/package/expect/0002-allow-tcl-build-directory.patch b/package/expect/0002-allow-tcl-build-directory.patch new file mode 100644 index 00000000..83ede7ac --- /dev/null +++ b/package/expect/0002-allow-tcl-build-directory.patch @@ -0,0 +1,34 @@ +From: Andrew Ruder +Subject: [PATCH] Allow tcl build directory for linking + +Some small changes to use TCL_BUILD_LIB_SPEC instead of TCL_LIB_SPEC for +linking against tcl directly out of its build directory. + +Signed-off-by: Andrew Ruder +--- + +Index: expect-5.45/Makefile.in +=================================================================== +--- expect-5.45.orig/Makefile.in 2013-11-14 07:59:58.732100595 -0600 ++++ expect-5.45/Makefile.in 2013-11-14 07:59:58.732100595 -0600 +@@ -393,7 +393,7 @@ + @LDFLAGS_DEFAULT@ \ + -o expect exp_main_exp.o \ + @EXP_BUILD_LIB_SPEC@ \ +- @TCL_LIB_SPEC@ \ ++ @TCL_BUILD_LIB_SPEC@ \ + @TCL_DL_LIBS@ @PKG_LIBS@ @MATH_LIBS@ \ + @TCL_CC_SEARCH_FLAGS@ \ + @EXP_CC_SEARCH_FLAGS@ +Index: expect-5.45/tclconfig/tcl.m4 +=================================================================== +--- expect-5.45.orig/tclconfig/tcl.m4 2010-11-09 13:42:10.000000000 -0600 ++++ expect-5.45/tclconfig/tcl.m4 2013-11-14 08:02:08.424100580 -0600 +@@ -412,6 +412,7 @@ + AC_SUBST(TCL_LIB_FILE) + AC_SUBST(TCL_LIB_FLAG) + AC_SUBST(TCL_LIB_SPEC) ++ AC_SUBST(TCL_BUILD_LIB_SPEC) + + AC_SUBST(TCL_STUB_LIB_FILE) + AC_SUBST(TCL_STUB_LIB_FLAG) diff --git a/package/expect/Config.in b/package/expect/Config.in new file mode 100644 index 00000000..67dfe643 --- /dev/null +++ b/package/expect/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_EXPECT + bool "expect" + help + Expect is a tool for automating interactive applications + such as telnet, ftp, passwd, fsck, rlogin, ssh, tip, etc. + + https://core.tcl.tk/expect/ diff --git a/package/expect/expect.hash b/package/expect/expect.hash new file mode 100644 index 00000000..c4815abb --- /dev/null +++ b/package/expect/expect.hash @@ -0,0 +1,4 @@ +# From https://sourceforge.net/projects/expect/files/Expect/5.45.4/expect5.45.4.tar.gz.SHA256 +sha256 49a7da83b0bdd9f46d04a04deec19c7767bb9a323e40c4781f89caf760b92c34 expect5.45.4.tar.gz +# Locally calculated +sha256 b2415b17dc8d9a287f4509047ef5ac3436baef7ba7c50faef5222dcdf61a2bab README diff --git a/package/expect/expect.mk b/package/expect/expect.mk new file mode 100644 index 00000000..44bf74af --- /dev/null +++ b/package/expect/expect.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# expect +# +################################################################################ + +EXPECT_VERSION = 5.45.4 +EXPECT_SITE = https://sourceforge.net/projects/expect/files/Expect/$(EXPECT_VERSION) +EXPECT_SOURCE = expect$(EXPECT_VERSION).tar.gz +EXPECT_LICENSE = Public domain +EXPECT_LICENSE_FILES = README + +# 0001-enable-cross-compilation.patch +EXPECT_AUTORECONF = YES +EXPECT_DEPENDENCIES = tcl +EXPECT_CONF_OPTS = --with-tcl=$(BUILD_DIR)/tcl-$(TCL_VERSION)/unix + +# Since we don't want examples installed +EXPECT_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-binaries + +$(eval $(autotools-package)) diff --git a/package/explorercanvas/Config.in b/package/explorercanvas/Config.in new file mode 100644 index 00000000..9714a580 --- /dev/null +++ b/package/explorercanvas/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_EXPLORERCANVAS + bool "explorercanvas" + help + Modern browsers like Firefox, Safari, Chrome and Opera + support the HTML5 canvas tag to allow 2D command-based + drawing. ExplorerCanvas brings the same functionality to + Internet Explorer ( +Date: Wed, 23 Aug 2023 15:41:28 +0200 +Subject: [PATCH] f2fs-tools: convert to lseek() and kill lseek64 + +This patch replaces lseek64 with lseek() having #define _FILE_OFFSET_BITS 64. + +Signed-off-by: Waldemar Brodkorb +Signed-off-by: Jaegeuk Kim +Upstream: https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git/commit/?id=b15b6cc56ac7764be17acbdbf96448f388992adc +--- + configure.ac | 2 -- + fsck/Makefile.am | 2 +- + include/android_config.h | 4 ---- + lib/Makefile.am | 2 +- + lib/libf2fs.c | 3 --- + lib/libf2fs_io.c | 47 +++++++++++++++------------------------ + lib/libf2fs_zoned.c | 1 - + mkfs/Makefile.am | 4 ++-- + mkfs/f2fs_format.c | 2 -- + mkfs/f2fs_format_main.c | 2 -- + mkfs/f2fs_format_utils.c | 10 --------- + mkfs/f2fs_format_utils.h | 2 -- + tools/Makefile.am | 2 +- + tools/f2fs_io/Makefile.am | 2 +- + tools/f2fs_io/f2fs_io.c | 6 ----- + tools/f2fs_io_parse.c | 1 - + tools/f2fscrypt.c | 9 -------- + tools/fibmap.c | 7 ------ + 18 files changed, 24 insertions(+), 84 deletions(-) + +diff --git a/configure.ac b/configure.ac +index efab8d8..123ddbb 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -187,8 +187,6 @@ AC_CHECK_FUNCS_ONCE([ + getmntent + getuid + keyctl +- llseek +- lseek64 + memset + setmntent + clock_gettime +diff --git a/fsck/Makefile.am b/fsck/Makefile.am +index 579dd26..40d31b8 100644 +--- a/fsck/Makefile.am ++++ b/fsck/Makefile.am +@@ -1,7 +1,7 @@ + ## Makefile.am + + AM_CPPFLAGS = ${libuuid_CFLAGS} -I$(top_srcdir)/include +-AM_CFLAGS = -Wall ++AM_CFLAGS = -Wall -D_FILE_OFFSET_BITS=64 + sbin_PROGRAMS = fsck.f2fs + noinst_HEADERS = common.h dict.h dqblk_v2.h f2fs.h fsck.h node.h quotaio.h \ + quotaio_tree.h quotaio_v2.h xattr.h compress.h +diff --git a/include/android_config.h b/include/android_config.h +index 141fe06..da8abcb 100644 +--- a/include/android_config.h ++++ b/include/android_config.h +@@ -30,8 +30,6 @@ + #define HAVE_FSTAT 1 + #define HAVE_FSTAT64 1 + #define HAVE_GETMNTENT 1 +-#define HAVE_LLSEEK 1 +-#define HAVE_LSEEK64 1 + #define HAVE_MEMSET 1 + #define HAVE_SELINUX_ANDROID_H 1 + #define HAVE_SETMNTENT 1 +@@ -67,7 +65,6 @@ + #define HAVE_FSTAT 1 + #define HAVE_FSTAT64 1 + #define HAVE_GETMNTENT 1 +-#define HAVE_LLSEEK 1 + #define HAVE_MEMSET 1 + #define HAVE_SPARSE_SPARSE_H 1 + #define HAVE_LIBLZ4 1 +@@ -78,6 +75,5 @@ + #endif + + #if defined(_WIN32) +-#define HAVE_LSEEK64 + #define HAVE_SPARSE_SPARSE_H 1 + #endif +diff --git a/lib/Makefile.am b/lib/Makefile.am +index 871d773..69d46f8 100644 +--- a/lib/Makefile.am ++++ b/lib/Makefile.am +@@ -3,7 +3,7 @@ + lib_LTLIBRARIES = libf2fs.la + + libf2fs_la_SOURCES = libf2fs.c libf2fs_io.c libf2fs_zoned.c nls_utf8.c +-libf2fs_la_CFLAGS = -Wall ++libf2fs_la_CFLAGS = -Wall -D_FILE_OFFSET_BITS=64 + libf2fs_la_CPPFLAGS = -I$(top_srcdir)/include + libf2fs_la_LDFLAGS = -version-info $(LIBF2FS_CURRENT):$(LIBF2FS_REVISION):$(LIBF2FS_AGE) + +diff --git a/lib/libf2fs.c b/lib/libf2fs.c +index 577a7e8..c3d5744 100644 +--- a/lib/libf2fs.c ++++ b/lib/libf2fs.c +@@ -6,9 +6,6 @@ + * + * Dual licensed under the GPL or LGPL version 2 licenses. + */ +-#define _LARGEFILE64_SOURCE +-#define _FILE_OFFSET_BITS 64 +- + #include + #include + #include +diff --git a/lib/libf2fs_io.c b/lib/libf2fs_io.c +index 1a8167d..74e5f3a 100644 +--- a/lib/libf2fs_io.c ++++ b/lib/libf2fs_io.c +@@ -11,8 +11,6 @@ + * + * Dual licensed under the GPL or LGPL version 2 licenses. + */ +-#define _LARGEFILE64_SOURCE +- + #include + #include + #include +@@ -67,22 +65,13 @@ static int __get_device_fd(__u64 *offset) + return -1; + } + +-#ifndef HAVE_LSEEK64 +-typedef off_t off64_t; +- +-static inline off64_t lseek64(int fd, __u64 offset, int set) +-{ +- return lseek(fd, offset, set); +-} +-#endif +- + /* ---------- dev_cache, Least Used First (LUF) policy ------------------- */ + /* + * Least used block will be the first victim to be replaced when max hash + * collision exceeds + */ + static bool *dcache_valid; /* is the cached block valid? */ +-static off64_t *dcache_blk; /* which block it cached */ ++static off_t *dcache_blk; /* which block it cached */ + static uint64_t *dcache_lastused; /* last used ticks for cache entries */ + static char *dcache_buf; /* cached block data */ + static uint64_t dcache_usetick; /* current use tick */ +@@ -172,7 +161,7 @@ static int dcache_alloc_all(long n) + { + if (n <= 0) + return -1; +- if ((dcache_blk = (off64_t *) malloc(sizeof(off64_t) * n)) == NULL ++ if ((dcache_blk = (off_t *) malloc(sizeof(off_t) * n)) == NULL + || (dcache_lastused = (uint64_t *) + malloc(sizeof(uint64_t) * n)) == NULL + || (dcache_buf = (char *) malloc (F2FS_BLKSIZE * n)) == NULL +@@ -257,7 +246,7 @@ static inline long dcache_relocate(long entry, int n) + dcache_config.num_cache_entry; + } + +-static long dcache_find(off64_t blk) ++static long dcache_find(off_t blk) + { + register long n = dcache_config.num_cache_entry; + register unsigned m = dcache_config.max_hash_collision; +@@ -278,10 +267,10 @@ static long dcache_find(off64_t blk) + } + + /* Physical read into cache */ +-static int dcache_io_read(int fd, long entry, off64_t offset, off64_t blk) ++static int dcache_io_read(int fd, long entry, off_t offset, off_t blk) + { +- if (lseek64(fd, offset, SEEK_SET) < 0) { +- MSG(0, "\n lseek64 fail.\n"); ++ if (lseek(fd, offset, SEEK_SET) < 0) { ++ MSG(0, "\n lseek fail.\n"); + return -1; + } + if (read(fd, dcache_buf + entry * F2FS_BLKSIZE, F2FS_BLKSIZE) < 0) { +@@ -308,12 +297,12 @@ static int dcache_io_read(int fd, long entry, off64_t offset, off64_t blk) + * 1: cache not available (uninitialized) + * -1: error + */ +-static int dcache_update_rw(int fd, void *buf, off64_t offset, ++static int dcache_update_rw(int fd, void *buf, off_t offset, + size_t byte_count, bool is_write) + { +- off64_t blk; ++ off_t blk; + int addr_in_blk; +- off64_t start; ++ off_t start; + + if (!dcache_initialized) + dcache_init(); /* auto initialize */ +@@ -377,13 +366,13 @@ static int dcache_update_rw(int fd, void *buf, off64_t offset, + * return value: 1: cache not available + * 0: success, -1: I/O error + */ +-int dcache_update_cache(int fd, void *buf, off64_t offset, size_t count) ++int dcache_update_cache(int fd, void *buf, off_t offset, size_t count) + { + return dcache_update_rw(fd, buf, offset, count, true); + } + + /* handles read into cache + read into buffer */ +-int dcache_read(int fd, void *buf, off64_t offset, size_t count) ++int dcache_read(int fd, void *buf, off_t offset, size_t count) + { + return dcache_update_rw(fd, buf, offset, count, false); + } +@@ -395,7 +384,7 @@ int dev_read_version(void *buf, __u64 offset, size_t len) + { + if (c.sparse_mode) + return 0; +- if (lseek64(c.kd, (off64_t)offset, SEEK_SET) < 0) ++ if (lseek(c.kd, (off_t)offset, SEEK_SET) < 0) + return -1; + if (read(c.kd, buf, len) < 0) + return -1; +@@ -534,10 +523,10 @@ int dev_read(void *buf, __u64 offset, size_t len) + + /* err = 1: cache not available, fall back to non-cache R/W */ + /* err = 0: success, err=-1: I/O error */ +- err = dcache_read(fd, buf, (off64_t)offset, len); ++ err = dcache_read(fd, buf, (off_t)offset, len); + if (err <= 0) + return err; +- if (lseek64(fd, (off64_t)offset, SEEK_SET) < 0) ++ if (lseek(fd, (off_t)offset, SEEK_SET) < 0) + return -1; + if (read(fd, buf, len) < 0) + return -1; +@@ -580,9 +569,9 @@ int dev_write(void *buf, __u64 offset, size_t len) + * dcache_update_cache() just update cache, won't do I/O. + * Thus even no error, we need normal non-cache I/O for actual write + */ +- if (dcache_update_cache(fd, buf, (off64_t)offset, len) < 0) ++ if (dcache_update_cache(fd, buf, (off_t)offset, len) < 0) + return -1; +- if (lseek64(fd, (off64_t)offset, SEEK_SET) < 0) ++ if (lseek(fd, (off_t)offset, SEEK_SET) < 0) + return -1; + if (write(fd, buf, len) < 0) + return -1; +@@ -596,7 +585,7 @@ int dev_write_block(void *buf, __u64 blk_addr) + + int dev_write_dump(void *buf, __u64 offset, size_t len) + { +- if (lseek64(c.dump_fd, (off64_t)offset, SEEK_SET) < 0) ++ if (lseek(c.dump_fd, (off_t)offset, SEEK_SET) < 0) + return -1; + if (write(c.dump_fd, buf, len) < 0) + return -1; +@@ -618,7 +607,7 @@ int dev_fill(void *buf, __u64 offset, size_t len) + /* Only allow fill to zero */ + if (*((__u8*)buf)) + return -1; +- if (lseek64(fd, (off64_t)offset, SEEK_SET) < 0) ++ if (lseek(fd, (off_t)offset, SEEK_SET) < 0) + return -1; + if (write(fd, buf, len) < 0) + return -1; +diff --git a/lib/libf2fs_zoned.c b/lib/libf2fs_zoned.c +index a0dd8bd..2ab2497 100644 +--- a/lib/libf2fs_zoned.c ++++ b/lib/libf2fs_zoned.c +@@ -6,7 +6,6 @@ + * + * Dual licensed under the GPL or LGPL version 2 licenses. + */ +-#define _LARGEFILE64_SOURCE + + #include + #include +diff --git a/mkfs/Makefile.am b/mkfs/Makefile.am +index af5b1c7..bfffd88 100644 +--- a/mkfs/Makefile.am ++++ b/mkfs/Makefile.am +@@ -1,7 +1,7 @@ + ## Makefile.am + + AM_CPPFLAGS = ${libuuid_CFLAGS} ${libblkid_CFLAGS} -I$(top_srcdir)/include +-AM_CFLAGS = -Wall -DWITH_BLKDISCARD ++AM_CFLAGS = -Wall -DWITH_BLKDISCARD -D_FILE_OFFSET_BITS=64 + sbin_PROGRAMS = mkfs.f2fs + noinst_HEADERS = f2fs_format_utils.h + include_HEADERS = $(top_srcdir)/include/f2fs_fs.h +@@ -10,7 +10,7 @@ mkfs_f2fs_LDADD = ${libuuid_LIBS} ${libblkid_LIBS} $(top_builddir)/lib/libf2fs.l + + lib_LTLIBRARIES = libf2fs_format.la + libf2fs_format_la_SOURCES = f2fs_format_main.c f2fs_format.c f2fs_format_utils.c +-libf2fs_format_la_CFLAGS = -DWITH_BLKDISCARD ++libf2fs_format_la_CFLAGS = -DWITH_BLKDISCARD -D_FILE_OFFSET_BITS=64 + libf2fs_format_la_LDFLAGS = ${libblkid_LIBS} ${libuuid_LIBS} -L$(top_builddir)/lib -lf2fs \ + -version-info $(FMT_CURRENT):$(FMT_REVISION):$(FMT_AGE) + +diff --git a/mkfs/f2fs_format.c b/mkfs/f2fs_format.c +index 019fb3a..d937eda 100644 +--- a/mkfs/f2fs_format.c ++++ b/mkfs/f2fs_format.c +@@ -6,8 +6,6 @@ + * + * Dual licensed under the GPL or LGPL version 2 licenses. + */ +-#define _LARGEFILE64_SOURCE +- + #include + #include + #include +diff --git a/mkfs/f2fs_format_main.c b/mkfs/f2fs_format_main.c +index d8c9cea..08c1b25 100644 +--- a/mkfs/f2fs_format_main.c ++++ b/mkfs/f2fs_format_main.c +@@ -6,8 +6,6 @@ + * + * Dual licensed under the GPL or LGPL version 2 licenses. + */ +-#define _LARGEFILE64_SOURCE +- + #include + #include + #include +diff --git a/mkfs/f2fs_format_utils.c b/mkfs/f2fs_format_utils.c +index 448fbaa..437f113 100644 +--- a/mkfs/f2fs_format_utils.c ++++ b/mkfs/f2fs_format_utils.c +@@ -6,20 +6,10 @@ + * + * Dual licensed under the GPL or LGPL version 2 licenses. + */ +-#ifndef _LARGEFILE_SOURCE +-#define _LARGEFILE_SOURCE +-#endif +-#ifndef _LARGEFILE64_SOURCE +-#define _LARGEFILE64_SOURCE +-#endif + #ifndef _GNU_SOURCE + #define _GNU_SOURCE + #endif + +-#ifndef _FILE_OFFSET_BITS +-#define _FILE_OFFSET_BITS 64 +-#endif +- + #include + + #include +diff --git a/mkfs/f2fs_format_utils.h b/mkfs/f2fs_format_utils.h +index 807e7c3..6a7f687 100644 +--- a/mkfs/f2fs_format_utils.h ++++ b/mkfs/f2fs_format_utils.h +@@ -6,8 +6,6 @@ + * + * Dual licensed under the GPL or LGPL version 2 licenses. + */ +-#define _LARGEFILE64_SOURCE +- + #include "f2fs_fs.h" + + extern struct f2fs_configuration c; +diff --git a/tools/Makefile.am b/tools/Makefile.am +index 6b03814..7dfffb1 100644 +--- a/tools/Makefile.am ++++ b/tools/Makefile.am +@@ -1,7 +1,7 @@ + ## Makefile.am + + AM_CPPFLAGS = ${libuuid_CFLAGS} -I$(top_srcdir)/include +-AM_CFLAGS = -Wall ++AM_CFLAGS = -Wall -D_FILE_OFFSET_BITS=64 + sbin_PROGRAMS = + if !WINDOWS + sbin_PROGRAMS += fibmap.f2fs parse.f2fs +diff --git a/tools/f2fs_io/Makefile.am b/tools/f2fs_io/Makefile.am +index bc4f9d0..f5227ce 100644 +--- a/tools/f2fs_io/Makefile.am ++++ b/tools/f2fs_io/Makefile.am +@@ -2,7 +2,7 @@ + + if LINUX + AM_CPPFLAGS = -I$(top_srcdir)/include +-AM_CFLAGS = -Wall ++AM_CFLAGS = -Wall -D_FILE_OFFSET_BITS=64 + sbin_PROGRAMS = f2fs_io + f2fs_io_SOURCES = f2fs_io.c + endif +diff --git a/tools/f2fs_io/f2fs_io.c b/tools/f2fs_io/f2fs_io.c +index 771fd16..1f6549b 100644 +--- a/tools/f2fs_io/f2fs_io.c ++++ b/tools/f2fs_io/f2fs_io.c +@@ -9,12 +9,6 @@ + #ifndef _GNU_SOURCE + #define _GNU_SOURCE + #endif +-#ifndef _LARGEFILE_SOURCE +-#define _LARGEFILE_SOURCE +-#endif +-#ifndef _LARGEFILE64_SOURCE +-#define _LARGEFILE64_SOURCE +-#endif + #ifndef O_LARGEFILE + #define O_LARGEFILE 0 + #endif +diff --git a/tools/f2fs_io_parse.c b/tools/f2fs_io_parse.c +index 47f1194..c3c1005 100644 +--- a/tools/f2fs_io_parse.c ++++ b/tools/f2fs_io_parse.c +@@ -8,7 +8,6 @@ + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ +-#define _LARGEFILE64_SOURCE + #include + #include + #include +diff --git a/tools/f2fscrypt.c b/tools/f2fscrypt.c +index 8640ffa..d5222fb 100644 +--- a/tools/f2fscrypt.c ++++ b/tools/f2fscrypt.c +@@ -7,15 +7,6 @@ + * Authors: Michael Halcrow , + * Ildar Muslukhov + */ +- +-#ifndef _LARGEFILE_SOURCE +-#define _LARGEFILE_SOURCE +-#endif +- +-#ifndef _LARGEFILE64_SOURCE +-#define _LARGEFILE64_SOURCE +-#endif +- + #ifndef _GNU_SOURCE + #define _GNU_SOURCE + #endif +diff --git a/tools/fibmap.c b/tools/fibmap.c +index bda8238..3acc77b 100644 +--- a/tools/fibmap.c ++++ b/tools/fibmap.c +@@ -1,13 +1,6 @@ + #if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) + #define _XOPEN_SOURCE 600 + #define _DARWIN_C_SOURCE +-#define _FILE_OFFSET_BITS 64 +-#ifndef _LARGEFILE_SOURCE +-#define _LARGEFILE_SOURCE +-#endif +-#ifndef _LARGEFILE64_SOURCE +-#define _LARGEFILE64_SOURCE +-#endif + #ifndef _GNU_SOURCE + #define _GNU_SOURCE + #endif +-- +2.39.2 + diff --git a/package/f2fs-tools/Config.in b/package/f2fs-tools/Config.in new file mode 100644 index 00000000..e3730963 --- /dev/null +++ b/package/f2fs-tools/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_F2FS_TOOLS + bool "f2fs-tools" + depends on BR2_USE_WCHAR # uses wchar_t + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Tools for Flash-Friendly File System (F2FS) + + https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git + +comment "f2fs-tools needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/package/f2fs-tools/Config.in.host b/package/f2fs-tools/Config.in.host new file mode 100644 index 00000000..19c77b9c --- /dev/null +++ b/package/f2fs-tools/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_F2FS_TOOLS + bool "host f2fs-tools" + select BR2_PACKAGE_HOST_UTIL_LINUX + help + Tools for Flash-Friendly File System (F2FS) + + https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git diff --git a/package/f2fs-tools/f2fs-tools.hash b/package/f2fs-tools/f2fs-tools.hash new file mode 100644 index 00000000..d1f183af --- /dev/null +++ b/package/f2fs-tools/f2fs-tools.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 208c7a07e95383fbd7b466b5681590789dcb41f41bf197369c41a95383b57c5e f2fs-tools-1.16.0.tar.gz +sha256 662abb3a8a80b36ae7036c289dd1e03b361ee5dd2e6fd5211d0d8d029146449f COPYING diff --git a/package/f2fs-tools/f2fs-tools.mk b/package/f2fs-tools/f2fs-tools.mk new file mode 100644 index 00000000..87f44877 --- /dev/null +++ b/package/f2fs-tools/f2fs-tools.mk @@ -0,0 +1,57 @@ +################################################################################ +# +# f2fs-tools +# +################################################################################ + +F2FS_TOOLS_VERSION = 1.16.0 +F2FS_TOOLS_SITE = https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git/snapshot +F2FS_TOOLS_CONF_ENV = ac_cv_file__git=no +F2FS_TOOLS_DEPENDENCIES = host-pkgconf util-linux +HOST_F2FS_TOOLS_DEPENDENCIES = host-pkgconf host-util-linux +# GIT version, shipped without configure +F2FS_TOOLS_AUTORECONF = YES +F2FS_TOOLS_INSTALL_STAGING = YES +F2FS_TOOLS_LICENSE = GPL-2.0 +F2FS_TOOLS_LICENSE_FILES = COPYING +F2FS_TOOLS_CPE_ID_VALID = YES + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +F2FS_TOOLS_CONF_OPTS += --with-selinux +F2FS_TOOLS_DEPENDENCIES += libselinux +else +F2FS_TOOLS_CONF_OPTS += --without-selinux +endif + +ifeq ($(BR2_PACKAGE_LZ4),y) +F2FS_TOOLS_CONF_OPTS += --with-lz4 +F2FS_TOOLS_DEPENDENCIES += lz4 +else +F2FS_TOOLS_CONF_OPTS += --without-lz4 +endif + +ifeq ($(BR2_PACKAGE_LZO),y) +F2FS_TOOLS_CONF_OPTS += --with-lzo2 +F2FS_TOOLS_DEPENDENCIES += lzo +else +F2FS_TOOLS_CONF_OPTS += --without-lzo2 +endif + +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBBLKID),y) +# util-linux is a dependency already, no need to list it again +F2FS_TOOLS_CONF_OPTS += --with-blkid +else +F2FS_TOOLS_CONF_OPTS += --without-blkid +endif + +# blkid is only used to detect if we're overwriting a filesystem +# during mkfs, which only makes sense on the target, so we disable +# blkid support even if we have host-util-linux +HOST_F2FS_TOOLS_CONF_OPTS = \ + --without-selinux \ + --without-blkid \ + --without-lz4 \ + --without-lzo2 + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/faad2/Config.in b/package/faad2/Config.in new file mode 100644 index 00000000..5b7fc1ca --- /dev/null +++ b/package/faad2/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_FAAD2 + bool "faad2" + help + FAAD2 is an open source MPEG-4 and MPEG-2 AAC decoder, + + http://www.audiocoding.com/faad2.html diff --git a/package/faad2/faad2.hash b/package/faad2/faad2.hash new file mode 100644 index 00000000..b7813130 --- /dev/null +++ b/package/faad2/faad2.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 72dbc0494de9ee38d240f670eccf2b10ef715fd0508c305532ca3def3225bb06 faad2-2.11.1.tar.gz +sha256 d3baf3a54943cf12a994c85867a18dec84f810901b2f2878ddfd77efcc3c150f COPYING diff --git a/package/faad2/faad2.mk b/package/faad2/faad2.mk new file mode 100644 index 00000000..0b249b34 --- /dev/null +++ b/package/faad2/faad2.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# faad2 +# +################################################################################ + +FAAD2_VERSION = 2.11.1 +FAAD2_SITE = $(call github,knik0,faad2,$(FAAD2_VERSION)) +FAAD2_LICENSE = GPL-2.0 +FAAD2_LICENSE_FILES = COPYING +FAAD2_CPE_ID_VENDOR = audiocoding +FAAD2_CPE_ID_PRODUCT = freeware_advanced_audio_decoder_2 +FAAD2_INSTALL_STAGING = YES + +# faad2 contains assembly routines using ARM instructions not present in thumb1 mode: +# Error: selected processor does not support `smull r2,r3,r1,r0' in Thumb mode +# so force ARM mode +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +FAAD2_CONF_OPTS += -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) -marm" +endif + +$(eval $(cmake-package)) diff --git a/package/faifa/Config.in b/package/faifa/Config.in new file mode 100644 index 00000000..202b69bc --- /dev/null +++ b/package/faifa/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_FAIFA + bool "faifa" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBEVENT + select BR2_PACKAGE_LIBPCAP + help + Faifa can configure any Intellon-based Power Line + Communication device using Intellon INT5000 and INT6000 + series chips (6000 and 6300 chips). It supports all + Intellon-specific management and control frames as well as + standard management frames. + + https://github.com/ffainelli/faifa + +comment "faifa needs a toolchain w/ dynamic library, threads" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/faifa/faifa.hash b/package/faifa/faifa.hash new file mode 100644 index 00000000..1b0608b8 --- /dev/null +++ b/package/faifa/faifa.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 bae36f77d02ea25a0f8e2fa3db0b0efe7e5cb7331cf0ea97470036b7f299a5c1 faifa-fb91bf684fd19f03115b8dc76b57bb5a5a4ec05b.tar.gz +sha256 9b62e4601b2b9cd5719a393e88ed71a8304048862502db765ed9d6ff8cf38c5e COPYING diff --git a/package/faifa/faifa.mk b/package/faifa/faifa.mk new file mode 100644 index 00000000..1cc7795e --- /dev/null +++ b/package/faifa/faifa.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# faifa +# +################################################################################ + +FAIFA_VERSION = fb91bf684fd19f03115b8dc76b57bb5a5a4ec05b +FAIFA_SITE = $(call github,ffainelli,faifa,$(FAIFA_VERSION)) +FAIFA_INSTALL_STAGING = YES +FAIFA_DEPENDENCIES = libevent libpcap host-autoconf +FAIFA_LICENSE = BSD-3-Clause +FAIFA_LICENSE_FILES = COPYING + +FAIFA_MAKE_OPTS += GIT_REV=$(FAIFA_VERSION) + +# This package uses autoconf, but not automake, so we need to call +# their special autogen.sh script, and have custom target and staging +# installation commands. + +define FAIFA_RUN_AUTOGEN + cd $(@D) && PATH=$(BR_PATH) ./autogen.sh +endef +FAIFA_PRE_CONFIGURE_HOOKS += FAIFA_RUN_AUTOGEN + +define FAIFA_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + PREFIX=/usr \ + STRIP=/bin/true \ + DESTDIR=$(TARGET_DIR) \ + install +endef + +define FAIFA_INSTALL_STAGING_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + PREFIX=/usr \ + STRIP=/bin/true \ + DESTDIR=$(STAGING_DIR) \ + install +endef + +$(eval $(autotools-package)) diff --git a/package/fail2ban/0001-setup.py-fix-data-relative-paths.patch b/package/fail2ban/0001-setup.py-fix-data-relative-paths.patch new file mode 100644 index 00000000..75bd9aaf --- /dev/null +++ b/package/fail2ban/0001-setup.py-fix-data-relative-paths.patch @@ -0,0 +1,74 @@ +From 7b7fa3c02d4575c09362336bc310835c37859f1a Mon Sep 17 00:00:00 2001 +From: Angelo Compagnucci +Date: Fri, 19 Apr 2024 22:47:20 +0200 +Subject: [PATCH] setup.py: fix data relative paths +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +As per distutils documentation: + +The directory should be a relative path. It is interpreted relative to the +installation prefix (Python’s sys.prefix for system installations; +site.USER_BASE for user installations). Distutils allows directory to be an +absolute installation path, but this is discouraged since it is incompatible +with the wheel packaging format [1]. + +When packaging to a bdist_wheel indeed, the files in the "data_files" dictionary +are not picked at all as data files if they have an absolute path, +but they are instead added to the wheel as python files. +This has the effect of installing them as part of python files in the +site-packages folder when the wheel is installed. + +This patch cannot be sent upstream because it breaks the legacy way of +installing the package with *python setup.py install* and it is needed only to +comply with the pep517 buildroot compatibility layer. + +[1] https://docs.python.org/3.10/distutils/setupscript.html#installing-additional-files +Signed-off-by: Angelo Compagnucci +Upstream: N/A [breaks traditional setuptools installation] +--- + setup.py | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/setup.py b/setup.py +index 91f71cf2..99ba2e32 100755 +--- a/setup.py ++++ b/setup.py +@@ -238,26 +238,26 @@ setup( + for f in w[2]] + } if with_tests else {}, + data_files = [ +- ('/etc/fail2ban', ++ ('etc/fail2ban', + glob("config/*.conf") + ), +- ('/etc/fail2ban/filter.d', ++ ('etc/fail2ban/filter.d', + glob("config/filter.d/*.conf") + ), +- ('/etc/fail2ban/filter.d/ignorecommands', ++ ('etc/fail2ban/filter.d/ignorecommands', + [p for p in glob("config/filter.d/ignorecommands/*") if isfile(p)] + ), +- ('/etc/fail2ban/action.d', ++ ('etc/fail2ban/action.d', + glob("config/action.d/*.conf") + + glob("config/action.d/*.py") + ), +- ('/etc/fail2ban/fail2ban.d', ++ ('etc/fail2ban/fail2ban.d', + '' + ), +- ('/etc/fail2ban/jail.d', ++ ('etc/fail2ban/jail.d', + '' + ), +- ('/var/lib/fail2ban', ++ ('var/lib/fail2ban', + '' + ), + ] + data_files_extra, +-- +2.34.1 + diff --git a/package/fail2ban/0002-adjust-sshd-filter-for-openssh-9.8-new-daemon-name.patch b/package/fail2ban/0002-adjust-sshd-filter-for-openssh-9.8-new-daemon-name.patch new file mode 100644 index 00000000..9841d092 --- /dev/null +++ b/package/fail2ban/0002-adjust-sshd-filter-for-openssh-9.8-new-daemon-name.patch @@ -0,0 +1,24 @@ +From 2fed408c05ac5206b490368d94599869bd6a056d Mon Sep 17 00:00:00 2001 +From: Fabian Dellwing +Date: Tue, 2 Jul 2024 07:54:15 +0200 +Subject: [PATCH] Adjust sshd filter for OpenSSH 9.8 new daemon name + +Upstream: https://github.com/fail2ban/fail2ban/commit/2fed408c05ac5206b490368d94599869bd6a056d +Signed-off-by: Fiona Klute (WIWA) +--- + config/filter.d/sshd.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/config/filter.d/sshd.conf b/config/filter.d/sshd.conf +index 1c8a02deb5..a1fd749aed 100644 +--- a/config/filter.d/sshd.conf ++++ b/config/filter.d/sshd.conf +@@ -16,7 +16,7 @@ before = common.conf + + [DEFAULT] + +-_daemon = sshd ++_daemon = (?:sshd(?:-session)?) + + # optional prefix (logged from several ssh versions) like "error: ", "error: PAM: " or "fatal: " + __pref = (?:(?:error|fatal): (?:PAM: )?)? diff --git a/package/fail2ban/0003-filter.d-sshd.conf-ungroup-unneeded-for-daemon.patch b/package/fail2ban/0003-filter.d-sshd.conf-ungroup-unneeded-for-daemon.patch new file mode 100644 index 00000000..521d8996 --- /dev/null +++ b/package/fail2ban/0003-filter.d-sshd.conf-ungroup-unneeded-for-daemon.patch @@ -0,0 +1,24 @@ +From 50ff131a0fd8f54fdeb14b48353f842ee8ae8c1a Mon Sep 17 00:00:00 2001 +From: "Sergey G. Brester" +Date: Wed, 3 Jul 2024 19:35:28 +0200 +Subject: [PATCH] filter.d/sshd.conf: ungroup (unneeded for _daemon) + +Upstream: https://github.com/fail2ban/fail2ban/commit/50ff131a0fd8f54fdeb14b48353f842ee8ae8c1a +Signed-off-by: Fiona Klute (WIWA) +--- + config/filter.d/sshd.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/config/filter.d/sshd.conf b/config/filter.d/sshd.conf +index a1fd749aed..3a84b1ba52 100644 +--- a/config/filter.d/sshd.conf ++++ b/config/filter.d/sshd.conf +@@ -16,7 +16,7 @@ before = common.conf + + [DEFAULT] + +-_daemon = (?:sshd(?:-session)?) ++_daemon = sshd(?:-session)? + + # optional prefix (logged from several ssh versions) like "error: ", "error: PAM: " or "fatal: " + __pref = (?:(?:error|fatal): (?:PAM: )?)? diff --git a/package/fail2ban/Config.in b/package/fail2ban/Config.in new file mode 100644 index 00000000..4c2c5644 --- /dev/null +++ b/package/fail2ban/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_FAIL2BAN + bool "fail2ban" + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_PYASYNCHAT # runtime + select BR2_PACKAGE_PYTHON_SYSTEMD if BR2_PACKAGE_SYSTEMD + help + Fail2ban scans log files (e.g. /var/log/apache/error_log) and + bans IPs that show the malicious signs -- too many password + failures, seeking for exploits, etc. Out of the box Fail2Ban + comes with filters for various services (apache, courier, + ssh, etc). + + Fail2Ban is able to reduce the rate of incorrect + authentications attempts however it cannot eliminate the risk + that weak authentication presents. + + https://www.fail2ban.org diff --git a/package/fail2ban/S60fail2ban b/package/fail2ban/S60fail2ban new file mode 100644 index 00000000..b181ecde --- /dev/null +++ b/package/fail2ban/S60fail2ban @@ -0,0 +1,23 @@ +#!/bin/sh + +case "$1" in + start) + printf "Starting fail2ban: " + start-stop-daemon -S -q -m -p /var/run/fail2ban.pid \ + -b -x fail2ban-server -- -xf start + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping fail2ban: " + start-stop-daemon -K -q -p /var/run/fail2ban.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart) + "$0" stop + sleep 1 + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + ;; +esac diff --git a/package/fail2ban/fail2ban.hash b/package/fail2ban/fail2ban.hash new file mode 100644 index 00000000..8627e01f --- /dev/null +++ b/package/fail2ban/fail2ban.hash @@ -0,0 +1,3 @@ +# sha256 locally computed +sha256 474fcc25afdaf929c74329d1e4d24420caabeea1ef2e041a267ce19269570bae fail2ban-1.1.0.tar.gz +sha256 a75fec0260742fe6275d63ff6a5d97b924b28766558306b3fa4069763096929b COPYING diff --git a/package/fail2ban/fail2ban.mk b/package/fail2ban/fail2ban.mk new file mode 100644 index 00000000..a77e5fad --- /dev/null +++ b/package/fail2ban/fail2ban.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# fail2ban +# +################################################################################ + +FAIL2BAN_VERSION = 1.1.0 +FAIL2BAN_SITE = $(call github,fail2ban,fail2ban,$(FAIL2BAN_VERSION)) +FAIL2BAN_LICENSE = GPL-2.0+ +FAIL2BAN_LICENSE_FILES = COPYING +FAIL2BAN_CPE_ID_VENDOR = fail2ban +FAIL2BAN_SELINUX_MODULES = fail2ban +FAIL2BAN_SETUP_TYPE = setuptools + +# fail2ban contains bundled copies of pyasyncore and pyasynchat, +# remove them so only the packaged versions are installed. +define FAIL2BAN_REMOVE_BUNDLED_COMPAT + $(SED) '/fail2ban\.compat/d' $(@D)/setup.py + rm -rf $(@D)/fail2ban/compat +endef +FAIL2BAN_POST_PATCH_HOOKS += FAIL2BAN_REMOVE_BUNDLED_COMPAT + +define FAIL2BAN_FIX_DEFAULT_CONFIG + $(SED) '/^socket/c\socket = /run/fail2ban.sock' $(TARGET_DIR)/etc/fail2ban/fail2ban.conf + $(SED) '/^pidfile/c\pidfile = /run/fail2ban.pid' $(TARGET_DIR)/etc/fail2ban/fail2ban.conf + $(SED) '/^dbfile/c\dbfile = None' $(TARGET_DIR)/etc/fail2ban/fail2ban.conf +endef +FAIL2BAN_POST_INSTALL_TARGET_HOOKS += FAIL2BAN_FIX_DEFAULT_CONFIG + +# fail2ban-python points to host python +define FAIL2BAN_FIX_FAIL2BAN_PYTHON_SYMLINK + ln -snf python3 $(TARGET_DIR)/usr/bin/fail2ban-python +endef +FAIL2BAN_POST_INSTALL_TARGET_HOOKS += FAIL2BAN_FIX_FAIL2BAN_PYTHON_SYMLINK + +define FAIL2BAN_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/fail2ban/S60fail2ban \ + $(TARGET_DIR)/etc/init.d/S60fail2ban +endef + +define FAIL2BAN_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(@D)/files/fail2ban.service.in \ + $(TARGET_DIR)/usr/lib/systemd/system/fail2ban.service + $(SED) 's,@BINDIR@,/usr/bin,g' $(TARGET_DIR)/usr/lib/systemd/system/fail2ban.service + $(SED) '/^PIDFile/c\PIDFile=/run/fail2ban.pid' $(TARGET_DIR)/usr/lib/systemd/system/fail2ban.service +endef + +$(eval $(python-package)) diff --git a/package/fakedate/fakedate b/package/fakedate/fakedate new file mode 100755 index 00000000..7ebbf1f0 --- /dev/null +++ b/package/fakedate/fakedate @@ -0,0 +1,56 @@ +#!/bin/bash +# vim: set sw=4 expandtab: +# +# 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 +# +# Copyright (C) 2016 Jérôme Pouiller +# + +# Do not call any 'date' before us in the PATH, or that would create +# an infinite recursion. +found=false +for date in $(which -a date); do + if [ "${date}" -ef "$0" ]; then + found=true + elif ${found}; then + DATE_BIN="${date}" + break + fi +done + +if [ -z "${DATE_BIN}" ]; then + printf 'fakedate: no real date found in PATH after "%s"\n' "${0}" >&2 + exit 1 +fi + +if [ -n "$SOURCE_DATE_EPOCH" ]; then + FORCE_EPOCH=1 + for i in "$@"; do + # Use of --date, --file and --reference (and their short option counter + # parts) is incompatible with SOURCE_DATE_EPOCH. + # -u and -R are the only short options without argument. So they could + # appear between '-' and option we want to match. + if echo "$i" | grep -qE '^-([uR]*d|-date|[uR]*f|-file|[uR]*r|--reference)'; then + FORCE_EPOCH=0 + break; + fi + done + if [ $FORCE_EPOCH -eq 1 ]; then + echo "date: Warning: using \$SOURCE_DATE_EPOCH instead of true time" >&2 + ARGS="-d @$SOURCE_DATE_EPOCH" + fi +fi + +exec $DATE_BIN $ARGS "$@" diff --git a/package/fakedate/fakedate.mk b/package/fakedate/fakedate.mk new file mode 100644 index 00000000..3db9145e --- /dev/null +++ b/package/fakedate/fakedate.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# fakedate +# +################################################################################ + +# source included in buildroot +HOST_FAKEDATE_LICENSE = GPL-2.0+ + +# The package is a dependency to ccache so ccache cannot be a dependency +HOST_FAKEDATE_ADD_CCACHE_DEPENDENCY = NO + +define HOST_FAKEDATE_INSTALL_CMDS + $(INSTALL) -D -m 755 package/fakedate/fakedate $(HOST_DIR)/bin/date +endef + +$(eval $(host-generic-package)) diff --git a/package/fakeroot/fakeroot.hash b/package/fakeroot/fakeroot.hash new file mode 100644 index 00000000..a148de67 --- /dev/null +++ b/package/fakeroot/fakeroot.hash @@ -0,0 +1,5 @@ +# From https://deb.debian.org/debian/pool/main/f/fakeroot/fakeroot_1.34-1.dsc +sha1 aaa6bf0158d886e0093effc0e9422717d5c60eee fakeroot_1.34.orig.tar.gz +sha256 5727f16d8903792588efa7a9f8ef8ce71f8756e746b62e45162e7735662e56bb fakeroot_1.34.orig.tar.gz +# License files, locally calculated +sha256 fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7 COPYING diff --git a/package/fakeroot/fakeroot.mk b/package/fakeroot/fakeroot.mk new file mode 100644 index 00000000..1a0996ca --- /dev/null +++ b/package/fakeroot/fakeroot.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# fakeroot +# +################################################################################ + +FAKEROOT_VERSION = 1.34 +FAKEROOT_SOURCE = fakeroot_$(FAKEROOT_VERSION).orig.tar.gz +FAKEROOT_SITE = https://snapshot.debian.org/archive/debian/20240401T084438Z/pool/main/f/fakeroot + +HOST_FAKEROOT_DEPENDENCIES = host-acl +# Force capabilities detection off +# For now these are process capabilities (faked) rather than file +# so they're of no real use +HOST_FAKEROOT_CONF_ENV = \ + ac_cv_header_sys_capability_h=no \ + ac_cv_func_capset=no +FAKEROOT_LICENSE = GPL-3.0+ +FAKEROOT_LICENSE_FILES = COPYING + +$(eval $(host-autotools-package)) diff --git a/package/faketime/Config.in.host b/package/faketime/Config.in.host new file mode 100644 index 00000000..0ebb9638 --- /dev/null +++ b/package/faketime/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_FAKETIME + bool "host faketime" + help + Faketime reports faked system time to programs without + having to change the system-wide time. + + https://github.com/wolfcw/libfaketime diff --git a/package/faketime/faketime.hash b/package/faketime/faketime.hash new file mode 100644 index 00000000..a7d8d62d --- /dev/null +++ b/package/faketime/faketime.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 729ad33b9c750a50d9c68e97b90499680a74afd1568d859c574c0fe56fe7947f faketime-0.9.10.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/faketime/faketime.mk b/package/faketime/faketime.mk new file mode 100644 index 00000000..6fc684f8 --- /dev/null +++ b/package/faketime/faketime.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# libfaketime +# +################################################################################ + +FAKETIME_VERSION = 0.9.10 +FAKETIME_SITE = $(call github,wolfcw,libfaketime,v$(FAKETIME_VERSION)) +FAKETIME_LICENSE = GPL-2.0 +FAKETIME_LICENSE_FILES = COPYING + +define HOST_FAKETIME_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) PREFIX=$(HOST_DIR) +endef + +define HOST_FAKETIME_INSTALL_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) PREFIX=$(HOST_DIR) install +endef + +$(eval $(host-generic-package)) diff --git a/package/falcosecurity-libs/0001-cmake-Permit-setting-GRPC_CPP_PLUGIN.patch b/package/falcosecurity-libs/0001-cmake-Permit-setting-GRPC_CPP_PLUGIN.patch new file mode 100644 index 00000000..6141d8ef --- /dev/null +++ b/package/falcosecurity-libs/0001-cmake-Permit-setting-GRPC_CPP_PLUGIN.patch @@ -0,0 +1,34 @@ +From 2e8a50cd4975df3ab60ee07c9675831cd5ad397f Mon Sep 17 00:00:00 2001 +From: Francis Laniel +Date: Tue, 12 Apr 2022 19:54:11 +0100 +Subject: [PATCH] cmake: Permit setting GRPC_CPP_PLUGIN. + +This patch enables users to set GRPC_CPP_PLUGIN while calling cmake with: +cmake -DGRPC_CPP_PLUGIN=/path + +Signed-off-by: Francis Laniel +--- + cmake/modules/grpc.cmake | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/cmake/modules/grpc.cmake b/cmake/modules/grpc.cmake +index e5fd16b8..9d8f5934 100644 +--- a/cmake/modules/grpc.cmake ++++ b/cmake/modules/grpc.cmake +@@ -12,9 +12,11 @@ elseif(NOT USE_BUNDLED_GRPC) + set(GRPCPP_LIB gRPC::grpc++) + + # gRPC C++ plugin +- get_target_property(GRPC_CPP_PLUGIN gRPC::grpc_cpp_plugin LOCATION) + if(NOT GRPC_CPP_PLUGIN) +- message(FATAL_ERROR "System grpc_cpp_plugin not found") ++ get_target_property(GRPC_CPP_PLUGIN gRPC::grpc_cpp_plugin LOCATION) ++ if(NOT GRPC_CPP_PLUGIN) ++ message(FATAL_ERROR "System grpc_cpp_plugin not found") ++ endif() + endif() + + # gRPC include dir + properly handle grpc{++,pp} +-- +2.25.1 + diff --git a/package/falcosecurity-libs/Config.in b/package/falcosecurity-libs/Config.in new file mode 100644 index 00000000..028a0ed2 --- /dev/null +++ b/package/falcosecurity-libs/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_FALCOSECURITY_LIBS + bool + depends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS # grpc + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # protobuf + depends on BR2_LINUX_KERNEL + depends on BR2_INSTALL_LIBSTDCPP # jsoncpp, protobuf, tbb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # grpc -> libabseil-cpp + depends on BR2_TOOLCHAIN_HAS_THREADS # jq, protobuf, tbb + depends on !BR2_STATIC_LIBS # protobuf, tbb + depends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_ATOMIC # grpc + depends on BR2_TOOLCHAIN_USES_GLIBC # tbb + depends on BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1 + select BR2_PACKAGE_C_ARES + select BR2_PACKAGE_ELFUTILS + select BR2_PACKAGE_GRPC + select BR2_PACKAGE_GTEST + select BR2_PACKAGE_HOST_GRPC + select BR2_PACKAGE_HOST_PROTOBUF + select BR2_PACKAGE_JQ + select BR2_PACKAGE_JSONCPP + select BR2_PACKAGE_LIBB64 + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_PROTOBUF + select BR2_PACKAGE_TBB + select BR2_PACKAGE_VALIJSON + select BR2_PACKAGE_ZLIB + help + falcosecurity/libs provides libsinsp, libscap, the kernel + module driver and the eBPF driver sources. + + https://github.com/falcosecurity/libs diff --git a/package/falcosecurity-libs/falcosecurity-libs.hash b/package/falcosecurity-libs/falcosecurity-libs.hash new file mode 100644 index 00000000..2e239ca2 --- /dev/null +++ b/package/falcosecurity-libs/falcosecurity-libs.hash @@ -0,0 +1,5 @@ +# sha256 locally computed +sha256 80903bc57b7f9c5f24298ecf1531cf66ef571681b4bd1e05f6e4db704ffb380b falcosecurity-libs-e5c53d648f3c4694385bbe488e7d47eaa36c229a.tar.gz +sha256 21ec9433a87459b3477faf542bacec419dc03af841309eac35edeffe481cf10b COPYING +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 driver/GPL2.txt +sha256 f17d3f2c2d565a74a7d5bf96f880c43701e141897e8dff0c8aa13e5d07aaf226 driver/MIT.txt diff --git a/package/falcosecurity-libs/falcosecurity-libs.mk b/package/falcosecurity-libs/falcosecurity-libs.mk new file mode 100644 index 00000000..4245f958 --- /dev/null +++ b/package/falcosecurity-libs/falcosecurity-libs.mk @@ -0,0 +1,82 @@ +################################################################################ +# +# falcosecurity-libs +# +################################################################################ + +FALCOSECURITY_LIBS_VERSION = e5c53d648f3c4694385bbe488e7d47eaa36c229a +FALCOSECURITY_LIBS_SITE = $(call github,falcosecurity,libs,$(FALCOSECURITY_LIBS_VERSION)) +FALCOSECURITY_LIBS_LICENSE = Apache-2.0 (userspace), MIT or GPL-2.0 (driver) +FALCOSECURITY_LIBS_LICENSE_FILES = COPYING driver/MIT.txt driver/GPL2.txt + +FALCOSECURITY_LIBS_DEPENDENCIES = \ + c-ares \ + elfutils \ + grpc \ + gtest \ + host-grpc \ + host-protobuf \ + jq \ + jsoncpp \ + libb64 \ + libcurl \ + luainterpreter \ + openssl \ + protobuf \ + tbb \ + valijson \ + zlib + +FALCOSECURITY_LIBS_DRIVER_NAME = scap +FALCOSECURITY_LIBS_MODULE_SUBDIRS = driver +FALCOSECURITY_LIBS_MODULE_MAKE_OPTS = KERNELDIR=$(LINUX_DIR) + +# falcosecurity-libs module needs these two kernel options to be set: +# CONFIG_TRACEPOINTS +# CONFIG_HAVE_SYSCALL_TRACEPOINTS +# https://github.com/draios/sysdig/wiki/How-to-Install-Sysdig-from-the-Source-Code#linux-and-osx +# CONFIG_FTRACE and CONFIG_SCHED_TRACER selects CONFIG_GENERIC_TRACER which in +# turns select CONFIG_TRACING which in turns select CONFIG_TRACEPOINTS +define FALCOSECURITY_LIBS_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_FTRACE) + $(call KCONFIG_ENABLE_OPT,CONFIG_SCHED_TRACER) + $(call KCONFIG_ENABLE_OPT,CONFIG_HAVE_SYSCALL_TRACEPOINTS) +endef + +# falcosecurity-libs creates the module Makefile from a template, which contains +# a single place-holder, KBUILD_FLAGS, wich is only replaced with debug flags, +# which we don't care about here. +# So, just replace the place-holder with the only meaningful value: nothing. +# For the DRIVER_NAME, we set it to FALCOSECURITY_LIBS_DRIVER_NAME. +# So, when sysdig will be run, it will automatically load +# FALCOSECURITY_LIBS_DRIVER_NAME.ko. +# We also need to do the same process for driver_config.h.in. +# PPM_API_CURRENT_VERSION_* were take from driver/API_VERSION and +# PPM_SCHEMA_CURRENT_VERSION_* from driver/SCHEMA_VERSION. +# For the others, it was taken by inspecting +# falcosecurity-libs/*/CMakeLists.txt, which normally creates these +# files, but doesn't work well with the kernel-module infrastructure. +define FALCOSECURITY_LIBS_MODULE_GEN_MAKEFILE + $(INSTALL) -m 0644 $(@D)/driver/Makefile.in $(@D)/driver/Makefile + $(SED) 's/@KBUILD_FLAGS@//;' $(@D)/driver/Makefile + $(SED) 's/@DRIVER_NAME@/$(FALCOSECURITY_LIBS_DRIVER_NAME)/;' $(@D)/driver/Makefile + + $(INSTALL) -m 0644 $(@D)/driver/driver_config.h.in $(@D)/driver/driver_config.h + $(SED) 's/\$${PPM_API_CURRENT_VERSION_MAJOR}/1/;' $(@D)/driver/driver_config.h + $(SED) 's/\$${PPM_API_CURRENT_VERSION_MINOR}/0/;' $(@D)/driver/driver_config.h + $(SED) 's/\$${PPM_API_CURRENT_VERSION_PATCH}/0/;' $(@D)/driver/driver_config.h + $(SED) 's/\$${PPM_SCHEMA_CURRENT_VERSION_MAJOR}/1/;' $(@D)/driver/driver_config.h + $(SED) 's/\$${PPM_SCHEMA_CURRENT_VERSION_MINOR}/0/;' $(@D)/driver/driver_config.h + $(SED) 's/\$${PPM_SCHEMA_CURRENT_VERSION_PATCH}/0/;' $(@D)/driver/driver_config.h + $(SED) 's/\$${DRIVER_VERSION}//;' $(@D)/driver/driver_config.h + $(SED) 's/\$${DRIVER_NAME}/$(FALCOSECURITY_LIBS_DRIVER_NAME)/;' $(@D)/driver/driver_config.h + $(SED) 's/\$${DRIVER_DEVICE_NAME}/$(FALCOSECURITY_LIBS_DRIVER_NAME)/;' $(@D)/driver/driver_config.h + $(SED) 's/\$${GIT_COMMIT}/0.1.1dev/;' $(@D)/driver/driver_config.h +endef +FALCOSECURITY_LIBS_POST_PATCH_HOOKS += FALCOSECURITY_LIBS_MODULE_GEN_MAKEFILE + +# Userspace components are not built and installed, because it this +# package is intended to be included as source in another build. + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/fastd/Config.in b/package/fastd/Config.in new file mode 100644 index 00000000..97fac936 --- /dev/null +++ b/package/fastd/Config.in @@ -0,0 +1,36 @@ +config BR2_PACKAGE_FASTD + bool "fastd" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS # libuecc + select BR2_PACKAGE_LIBUECC + select BR2_PACKAGE_LIBSODIUM + select BR2_PACKAGE_LIBSODIUM_FULL + help + Fast and Secure Tunneling Daemon + + https://github.com/NeoRaider/fastd/wiki + +if BR2_PACKAGE_FASTD + +config BR2_PACKAGE_FASTD_STATUS_SOCKET + bool "status socket support" + default y + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c + select BR2_PACKAGE_JSON_C + help + Enable support for a socket to get fastd's status. + +config BR2_PACKAGE_FASTD_OFFLOAD_L2TP + bool "l2tp offload support" + select BR2_PACKAGE_LIBMNL + help + L2TP can be offloaded to the Linux kernel, significantly + increasing throughput. + +endif + +comment "fastd needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS \ + || BR2_STATIC_LIBS diff --git a/package/fastd/fastd.hash b/package/fastd/fastd.hash new file mode 100644 index 00000000..5f7f9665 --- /dev/null +++ b/package/fastd/fastd.hash @@ -0,0 +1,3 @@ +# computed locally +sha256 19750b88705d66811b7c21b672537909c19ae6b21350688cbd1a3a54d08a8951 fastd-22.tar.xz +sha256 adf08b42f1b890b89e998360a864cb4f8441a0a57c9e95e2ce1bfdfc24c49976 COPYRIGHT diff --git a/package/fastd/fastd.mk b/package/fastd/fastd.mk new file mode 100644 index 00000000..6c496cf9 --- /dev/null +++ b/package/fastd/fastd.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# fastd +# +################################################################################ + +FASTD_VERSION = 22 +FASTD_SITE = https://github.com/NeoRaider/fastd/releases/download/v$(FASTD_VERSION) +FASTD_SOURCE = fastd-$(FASTD_VERSION).tar.xz +FASTD_LICENSE = BSD-2-Clause +FASTD_LICENSE_FILES = COPYRIGHT +FASTD_CPE_ID_VERSION = $(FASTD_VERSION).0 +FASTD_DEPENDENCIES = host-bison host-pkgconf libuecc libsodium + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +FASTD_CONF_OPTS += -Dcapabilities=enabled +FASTD_DEPENDENCIES += libcap +else +FASTD_CONF_OPTS += -Dcapabilities=disabled +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +FASTD_CONF_OPTS += -Dcipher_aes128-ctr=enabled +FASTD_DEPENDENCIES += openssl +else +FASTD_CONF_OPTS += -Dcipher_aes128-ctr=disabled +endif + +ifeq ($(BR2_PACKAGE_FASTD_STATUS_SOCKET),y) +FASTD_CONF_OPTS += -Dstatus_socket=enabled +FASTD_DEPENDENCIES += json-c +else +FASTD_CONF_OPTS += -Dstatus_socket=disabled +endif + +ifeq ($(BR2_PACKAGE_FASTD_OFFLOAD_L2TP),y) +FASTD_CONF_OPTS += -Doffload_l2tp=enabled -Dlibmnl_builtin=false +FASTD_DEPENDENCIES += libmnl +else +FASTD_CONF_OPTS += -Doffload_l2tp=disabled +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +FASTD_CONF_OPTS += -Dsystemd=enabled +else +FASTD_CONF_OPTS += -Dsystemd=disabled +endif + +ifeq ($(BR2_ENABLE_LTO),y) +FASTD_CONF_OPTS += -Db_lto=true +else +FASTD_CONF_OPTS += -Db_lto=false +endif + +$(eval $(meson-package)) diff --git a/package/fatcat/Config.in.host b/package/fatcat/Config.in.host new file mode 100644 index 00000000..2c5f6698 --- /dev/null +++ b/package/fatcat/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_FATCAT + bool "host fatcat" + help + Fatcat is designed to manipulate FAT filesystems, in order + to explore, extract, repair, recover and forensic them. It + currently supports FAT12, FAT16 and FAT32. + + https://github.com/Gregwar/fatcat diff --git a/package/fatcat/fatcat.hash b/package/fatcat/fatcat.hash new file mode 100644 index 00000000..56f89edd --- /dev/null +++ b/package/fatcat/fatcat.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 5574f715f62a9feda7fffc8099f8bca7134ff4f1274bb1bc0db96a2969eea206 fatcat-1.1.1.tar.gz +sha256 3ea03755e32cf7f5b12981de92a0fdad396448195fe0024990c9cbc388e9866c LICENSE diff --git a/package/fatcat/fatcat.mk b/package/fatcat/fatcat.mk new file mode 100644 index 00000000..0dff53fa --- /dev/null +++ b/package/fatcat/fatcat.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# fatcat +# +################################################################################ + +FATCAT_VERSION = 1.1.1 +FATCAT_SITE = $(call github,Gregwar,fatcat,v$(FATCAT_VERSION)) +FATCAT_LICENSE = MIT +FATCAT_LICENSE_FILES = LICENSE + +$(eval $(host-cmake-package)) diff --git a/package/fb-test-app/Config.in b/package/fb-test-app/Config.in new file mode 100644 index 00000000..23b5568d --- /dev/null +++ b/package/fb-test-app/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_FB_TEST_APP + bool "fb-test-app" + help + Test suite for Linux framebuffer. + + https://github.com/prpplague/fb-test-app diff --git a/package/fb-test-app/fb-test-app.hash b/package/fb-test-app/fb-test-app.hash new file mode 100644 index 00000000..ff7730ef --- /dev/null +++ b/package/fb-test-app/fb-test-app.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 45d490ed78a6e4425d9a760e81e99dc503af01704e17ab5bf186b87a31c5e3db fb-test-app-1.1.1.tar.gz +sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 COPYING diff --git a/package/fb-test-app/fb-test-app.mk b/package/fb-test-app/fb-test-app.mk new file mode 100644 index 00000000..89d533ab --- /dev/null +++ b/package/fb-test-app/fb-test-app.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# fb-test-app +# +################################################################################ + +FB_TEST_APP_VERSION = 1.1.1 +FB_TEST_APP_SITE = $(call github,andy-shev,fb-test-app,rosetta-$(FB_TEST_APP_VERSION)) +FB_TEST_APP_LICENSE = GPL-2.0 +FB_TEST_APP_LICENSE_FILES = COPYING + +define FB_TEST_APP_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all +endef + +define FB_TEST_APP_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/perf $(TARGET_DIR)/usr/bin/fb-test-perf + $(INSTALL) -D -m 0755 $(@D)/rect $(TARGET_DIR)/usr/bin/fb-test-rect + $(INSTALL) -D -m 0755 $(@D)/fb-test $(TARGET_DIR)/usr/bin/fb-test + $(INSTALL) -D -m 0755 $(@D)/offset $(TARGET_DIR)/usr/bin/fb-test-offset + $(INSTALL) -D -m 0755 $(@D)/fb-string $(TARGET_DIR)/usr/bin/fb-test-string +endef + +$(eval $(generic-package)) diff --git a/package/fbdump/0001-fix-gcc14-compile-issue.patch b/package/fbdump/0001-fix-gcc14-compile-issue.patch new file mode 100644 index 00000000..a554b4fa --- /dev/null +++ b/package/fbdump/0001-fix-gcc14-compile-issue.patch @@ -0,0 +1,15 @@ +Signed-off-by: Waldemar Brodkorb +Upstream: N/A no SCM, not active anymore + +diff -Nur fbdump-0.4.2.orig/src/main.c fbdump-0.4.2/src/main.c +--- fbdump-0.4.2.orig/src/main.c 2007-03-03 04:14:37.000000000 +0100 ++++ fbdump-0.4.2/src/main.c 2024-08-16 09:25:42.828125778 +0200 +@@ -58,7 +58,7 @@ + } + + +-int main( int argc, char *argv[] ) ++int main( int argc, const char *argv[] ) + { + Options opts = { + .fbdev = DEFAULT_DEVICE, diff --git a/package/fbdump/Config.in b/package/fbdump/Config.in new file mode 100644 index 00000000..c102fe27 --- /dev/null +++ b/package/fbdump/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_FBDUMP + bool "fbdump (Framebuffer Capture Tool)" + help + fbdump is a simple tool to capture snapshots from the Linux + kernel framebuffer device and write them out as a PPM file. + Currently, most packed-pixel framebuffer formats and the vga16 + framebuffer are supported. + + http://www.rcdrummond.net/fbdump diff --git a/package/fbdump/fbdump.hash b/package/fbdump/fbdump.hash new file mode 100644 index 00000000..51506b83 --- /dev/null +++ b/package/fbdump/fbdump.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c4d521a86229b3106cf69786008ad94f899da5288a19a067deae84951880722d fbdump-0.4.2.tar.gz +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/package/fbdump/fbdump.mk b/package/fbdump/fbdump.mk new file mode 100644 index 00000000..301dd4fa --- /dev/null +++ b/package/fbdump/fbdump.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# fbdump +# +################################################################################ + +FBDUMP_VERSION = 0.4.2 +FBDUMP_SITE = http://www.rcdrummond.net/fbdump +FBDUMP_LICENSE = GPL-2.0 +FBDUMP_LICENSE_FILES = COPYING + +# The VGA16 specific feature of fbdump doesn't make much sense outside +# of the x86/x86-64 architectures, and causes build problems on some +# architectures as outw() is not always available. +ifeq ($(BR2_i386)$(BR2_x86_64),y) +FBDUMP_CONF_OPTS += --enable-vga16fb +else +FBDUMP_CONF_OPTS += --disable-vga16fb +endif + +$(eval $(autotools-package)) diff --git a/package/fbgrab/0001-fix-static-build.patch b/package/fbgrab/0001-fix-static-build.patch new file mode 100644 index 00000000..fe5ae2ca --- /dev/null +++ b/package/fbgrab/0001-fix-static-build.patch @@ -0,0 +1,21 @@ +Fix static build + +fbgrab links against libpng, which depends on libm. For shared library +builds, there is nothing special to do about this, but for static +library builds, it is necessary to pass -lm when linking fbgrab. + +Signed-off-by: Thomas Petazzoni + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -12,7 +12,7 @@ + all: fbgrab fbgrab.1.gz + + fbgrab: fbgrab.c +- $(CC) -g -Wall $(CFLAGS) $(LDFLAGS) $< -lpng -lz -o $@ ++ $(CC) -g -Wall $(CFLAGS) $(LDFLAGS) $< -lpng -lz -lm -o $@ + + fbgrab.1.gz: fbgrab.1.man + $(GZIP) $(GZIPFLAGS) $< > $@ diff --git a/package/fbgrab/Config.in b/package/fbgrab/Config.in new file mode 100644 index 00000000..b1d8755f --- /dev/null +++ b/package/fbgrab/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_FBGRAB + bool "fbgrab" + select BR2_PACKAGE_LIBPNG + help + FBGrab is a framebuffer screenshot program, capturing the + linux frambuffer and converting it to a png-picture. + + https://github.com/GunnarMonell/fbgrab diff --git a/package/fbgrab/fbgrab.hash b/package/fbgrab/fbgrab.hash new file mode 100644 index 00000000..8cd1ff15 --- /dev/null +++ b/package/fbgrab/fbgrab.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 0202a9c4fb430eee4d8f566d09ab5f6e35c50804a192ba106046e54eb886f8f1 fbgrab-1.5.tar.gz +sha256 fa5fc1d1eec39532ea517518eeefd7b6e3c14341a55e5880a0e2a49eee47a5b7 COPYING diff --git a/package/fbgrab/fbgrab.mk b/package/fbgrab/fbgrab.mk new file mode 100644 index 00000000..693c4c28 --- /dev/null +++ b/package/fbgrab/fbgrab.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# fbgrab +# +################################################################################ + +FBGRAB_VERSION = 1.5 +FBGRAB_SITE = $(call github,GunnarMonell,fbgrab,$(FBGRAB_VERSION)) +FBGRAB_DEPENDENCIES = libpng +FBGRAB_LICENSE = GPL-2.0 +FBGRAB_LICENSE_FILES = COPYING + +define FBGRAB_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) fbgrab +endef + +define FBGRAB_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/fbgrab $(TARGET_DIR)/usr/bin/fbgrab +endef + +$(eval $(generic-package)) diff --git a/package/fbset/0001-Fix-musl-compile.patch b/package/fbset/0001-Fix-musl-compile.patch new file mode 100644 index 00000000..65d84c57 --- /dev/null +++ b/package/fbset/0001-Fix-musl-compile.patch @@ -0,0 +1,33 @@ +From 6d42be24b62b94df8e2f01956842b7ee4b640e97 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Mon, 11 Jul 2016 22:07:42 +0200 +Subject: [PATCH] Fix musl compile. + +Unconditional include for __u32 type. + +Fixes: + + error: unknown type name '__u32' + +Signed-off-by: Peter Seiderer +--- + fbset.h | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/fbset.h b/fbset.h +index 9b1d2ac..3c511e1 100644 +--- a/fbset.h ++++ b/fbset.h +@@ -15,9 +15,7 @@ + #include + #include + +-#ifdef __GLIBC__ + #include +-#endif + + #define VERSION "Linux Frame Buffer Device Configuration " \ + "Version 2.1 (23/06/1999)\n" \ +-- +2.8.1 + diff --git a/package/fbset/Config.in b/package/fbset/Config.in new file mode 100644 index 00000000..9422d5bc --- /dev/null +++ b/package/fbset/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_FBSET + bool "fbset" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + Fbset is a system utility to show or change the settings of + the frame buffer device. The frame buffer device provides a + simple and unique interface to access different kinds of + graphic displays. + + http://g33rt.be/migrated/Linux/fbdev/ diff --git a/package/fbset/fbset.hash b/package/fbset/fbset.hash new file mode 100644 index 00000000..5d9785d9 --- /dev/null +++ b/package/fbset/fbset.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 40ff4ab0247b75138a0887ed40f81c1a6184f340b77126c16d074b1075b41c20 fbset-2.1.tar.gz +sha256 c3285709a0840899a789faefae1704e87f96f757e905a38a1931a9d4fde95ddd fbset.c diff --git a/package/fbset/fbset.mk b/package/fbset/fbset.mk new file mode 100644 index 00000000..526cba40 --- /dev/null +++ b/package/fbset/fbset.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# fbset +# +################################################################################ + +FBSET_VERSION = 2.1 +FBSET_SITE = http://g33rt.be/migrated/Linux/fbdev +FBSET_DEPENDENCIES = host-bison host-flex +FBSET_LICENSE = GPL-2.0 +FBSET_LICENSE_FILES = fbset.c + +define FBSET_BUILD_CMDS + $(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define FBSET_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/fbset $(TARGET_DIR)/usr/sbin/fbset +endef + +$(eval $(generic-package)) diff --git a/package/fbterm/0001-fbio.cpp-improxy.cpp-fbterm.cpp-fix-musl-compile.patch b/package/fbterm/0001-fbio.cpp-improxy.cpp-fbterm.cpp-fix-musl-compile.patch new file mode 100644 index 00000000..27e1e910 --- /dev/null +++ b/package/fbterm/0001-fbio.cpp-improxy.cpp-fbterm.cpp-fix-musl-compile.patch @@ -0,0 +1,70 @@ +From 1072d60c6c8f1f51feb740527a8a056bfead9318 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Thu, 8 Oct 2015 19:53:47 +0200 +Subject: [PATCH] fbio.cpp, improxy.cpp, fbterm.cpp: fix musl compile +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- add missing include, fixes: + + fbio.cpp:33:8: error: ‘fd_set’ does not name a type + static fd_set fds; + + improxy.cpp:439:3: error: ‘fd_set’ was not declared in this scope + +- add missing WAIT_ANY define, fixes: + + fbterm.cpp: In member function ‘void FbTerm::processSignal(u32)’: + fbterm.cpp:212:22: error: ‘WAIT_ANY’ was not declared in this scope + s32 pid = waitpid(WAIT_ANY, 0, WNOHANG); + +Signed-off-by: Peter Seiderer +--- + src/fbio.cpp | 1 + + src/fbterm.cpp | 4 ++++ + src/improxy.cpp | 1 + + 3 files changed, 6 insertions(+) + +diff --git a/src/fbio.cpp b/src/fbio.cpp +index e5afc44..88c632c 100644 +--- a/src/fbio.cpp ++++ b/src/fbio.cpp +@@ -30,6 +30,7 @@ + #define NR_EPOLL_FDS 10 + s32 epollFd; + #else ++#include + static fd_set fds; + static u32 maxfd = 0; + #endif +diff --git a/src/fbterm.cpp b/src/fbterm.cpp +index 38d4014..60288e4 100644 +--- a/src/fbterm.cpp ++++ b/src/fbterm.cpp +@@ -37,6 +37,10 @@ + #include "input_key.h" + #include "mouse.h" + ++#ifndef WAIT_ANY ++#define WAIT_ANY (-1) ++#endif ++ + #ifdef HAVE_SIGNALFD + // offered by some systems has bug with g++ + #include "signalfd.h" +diff --git a/src/improxy.cpp b/src/improxy.cpp +index 3d03e66..4e046d2 100644 +--- a/src/improxy.cpp ++++ b/src/improxy.cpp +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + #include + #include "improxy.h" + #include "immessage.h" +-- +2.1.4 + diff --git a/package/fbterm/0002-mouse.cpp-fix-musl-compile.patch b/package/fbterm/0002-mouse.cpp-fix-musl-compile.patch new file mode 100644 index 00000000..5182d8ba --- /dev/null +++ b/package/fbterm/0002-mouse.cpp-fix-musl-compile.patch @@ -0,0 +1,30 @@ +From a34dba99aff2994269ee347da67feb7ede9b1a67 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Thu, 18 Feb 2016 22:32:38 +0100 +Subject: [PATCH] mouse.cpp: fix musl compile + +Add missing include, fixes: + + mouse.cpp:58:37: error: 'memset' was not declared in this scope + mouse.cpp:60:64: error: 'strncpy' was not declared in this scope + +Signed-off-by: Peter Seiderer +--- + src/mouse.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/mouse.cpp b/src/mouse.cpp +index 0435dd9..f173137 100644 +--- a/src/mouse.cpp ++++ b/src/mouse.cpp +@@ -27,6 +27,7 @@ DEFINE_INSTANCE(Mouse) + #include + #include + #include ++#include + #include + #include + #include +-- +2.1.4 + diff --git a/package/fbterm/0003-C++11-compliance.patch b/package/fbterm/0003-C++11-compliance.patch new file mode 100644 index 00000000..1a06da3d --- /dev/null +++ b/package/fbterm/0003-C++11-compliance.patch @@ -0,0 +1,93 @@ +lib/vterm_states: fix C++11 compliance + +In C++11, narrowing a type is no longer allowed in structure +initializers: + + struct foo { u16 u; }; + foo f[] = { {0}, {-1} }; + +results in the gcc-6 to whine out loudly, and fail: + + error: narrowing conversion of ‘-1’ from ‘int’ to ‘u16 {aka short unsigned int}’ inside { } [-Wnarrowing] + }; + ^ + +Signed-off-by: "Yann E. MORIN" + +diff -durN fbterm-1.7.0.orig/src/lib/vterm_states.cpp fbterm-1.7.0/src/lib/vterm_states.cpp +--- fbterm-1.7.0.orig/src/lib/vterm_states.cpp 2010-10-06 06:23:08.000000000 +0200 ++++ fbterm-1.7.0/src/lib/vterm_states.cpp 2016-08-13 16:54:29.495451127 +0200 +@@ -22,6 +22,7 @@ + #include "vterm.h" + + #define ADDSAME(len) ((len) << 8) ++#define ENDSEQ { ((u16)-1) } + + const VTerm::Sequence VTerm::control_sequences[] = { + { 0, 0, ESkeep }, +@@ -39,14 +40,14 @@ + { 0x1B, 0, ESesc }, + { 0x7F, 0, ESkeep }, + { 0x9B, 0, ESsquare }, +- { -1} ++ ENDSEQ + }; + + const VTerm::Sequence VTerm::escape_sequences[] = { + { 0, 0, ESnormal }, + + // ESnormal +- { -1 }, ++ ENDSEQ, + + // ESesc + { '[', &VTerm::clear_param, ESsquare }, +@@ -65,7 +66,7 @@ + { '8', &VTerm::restore_cursor, ESnormal }, + { '>', &VTerm::keypad_numeric, ESnormal }, + { '=', &VTerm::keypad_application, ESnormal }, +- { -1 }, ++ ENDSEQ, + + // ESsquare + { '[', 0, ESfunckey }, +@@ -104,7 +105,7 @@ + { '`', &VTerm::cursor_position_col, ESnormal }, + { ']', &VTerm::linux_specific, ESnormal }, + { '}', &VTerm::fbterm_specific, ESnormal }, +- { -1 }, ++ ENDSEQ, + + // ESnonstd + { '0' | ADDSAME(9), &VTerm::set_palette, ESkeep }, +@@ -112,25 +113,25 @@ + { 'a' | ADDSAME(5), &VTerm::set_palette, ESkeep }, + { 'P', &VTerm::begin_set_palette, ESkeep }, + { 'R', &VTerm::reset_palette, ESnormal }, +- { -1 }, ++ ENDSEQ, + + // ESpercent + { '@', &VTerm::clear_utf8, ESnormal }, + { 'G', &VTerm::set_utf8, ESnormal }, + { '8', &VTerm::set_utf8, ESnormal }, +- { -1 }, ++ ENDSEQ, + + // EScharset + { '0', &VTerm::set_charset, ESnormal }, + { 'B', &VTerm::set_charset, ESnormal }, + { 'U', &VTerm::set_charset, ESnormal }, + { 'K', &VTerm::set_charset, ESnormal }, +- { -1 }, ++ ENDSEQ, + + // EShash + { '8', &VTerm::screen_align, ESnormal }, +- { -1 }, ++ ENDSEQ, + + // ESfunckey +- { -1 }, ++ ENDSEQ, + }; diff --git a/package/fbterm/0004-iconv.patch b/package/fbterm/0004-iconv.patch new file mode 100644 index 00000000..39c9182e --- /dev/null +++ b/package/fbterm/0004-iconv.patch @@ -0,0 +1,41 @@ +Fix building against libiconv + +Downloaded from +https://github.com/kyak/openwrt-packages/blob/master/fbterm/patches/001-iconv.patch + +Signed-off-by: Bernd Kuhls + +--- a/src/lib/io.cpp ++++ b/src/lib/io.cpp +@@ -119,10 +119,10 @@ void IoPipe::setCodec(const s8 *up, cons + if (!strcasecmp(up, down)) return; + + mCodecRead = iconv_open(up, down); +- if (mCodecRead == (void*)-1) mCodecRead = 0; ++ if (mCodecRead == (iconv_t)(-1)) mCodecRead = 0; + + mCodecWrite = iconv_open(down, up); +- if (mCodecWrite == (void*)-1) mCodecWrite = 0; ++ if (mCodecWrite == (iconv_t)(-1)) mCodecWrite = 0; + } + + #define BUF_SIZE 10240 +--- a/src/lib/io.h ++++ b/src/lib/io.h +@@ -23,6 +23,7 @@ + + #include "type.h" + #include "instance.h" ++#include + + class IoPipe { + public: +@@ -47,7 +48,7 @@ private: + void writeIo(s8 *buf, u32 len); + + s32 mFd; +- void *mCodecRead, *mCodecWrite; ++ iconv_t mCodecRead, mCodecWrite; + s8 mBufRead[16], mBufWrite[16]; + u32 mBufLenRead, mBufLenWrite; + }; diff --git a/package/fbterm/Config.in b/package/fbterm/Config.in new file mode 100644 index 00000000..08316708 --- /dev/null +++ b/package/fbterm/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_FBTERM + bool "fbterm" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_ENABLE_LOCALE + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_LIBERATION + help + fbterm is a fast terminal emulator for Linux with frame buffer + device or VESA video card. + + https://code.google.com/archive/p/fbterm/ + +comment "fbterm needs a toolchain w/ C++, wchar, locale" + depends on BR2_USE_MMU + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_ENABLE_LOCALE && BR2_USE_WCHAR) diff --git a/package/fbterm/fbterm.hash b/package/fbterm/fbterm.hash new file mode 100644 index 00000000..ee703614 --- /dev/null +++ b/package/fbterm/fbterm.hash @@ -0,0 +1,4 @@ +# From http://code.google.com/p/fbterm/downloads/detail?name=fbterm-1.7.0.tar.gz&can=2&q= +sha1 dc7b7ff29212c1551f35bf7a50967454d3b8c67c fbterm-1.7.0.tar.gz +# locally computed +sha256 b2b961f07e97c4fb78074276da304ea36b85dc299aae5efb79080cedaea3d5ac COPYING diff --git a/package/fbterm/fbterm.mk b/package/fbterm/fbterm.mk new file mode 100644 index 00000000..99648278 --- /dev/null +++ b/package/fbterm/fbterm.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# fbterm +# +################################################################################ + +FBTERM_VERSION = 1.7.0 +FBTERM_SITE = https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/fbterm +FBTERM_LICENSE = GPL-2.0+ +FBTERM_LICENSE_FILES = COPYING +FBTERM_DEPENDENCIES = fontconfig liberation + +ifeq ($(BR2_PACKAGE_GPM),y) +FBTERM_DEPENDENCIES += gpm +FBTERM_CONF_OPTS += --enable-gpm +else +FBTERM_CONF_OPTS += --disable-gpm +endif + +$(eval $(autotools-package)) diff --git a/package/fbtft/Config.in b/package/fbtft/Config.in new file mode 100644 index 00000000..0a4de190 --- /dev/null +++ b/package/fbtft/Config.in @@ -0,0 +1,13 @@ +# Prompt-less option, because this package is not doing anything +# except downloading the FB TFT sources. The real work is done by a +# Linux extension. +config BR2_PACKAGE_FBTFT + bool + depends on BR2_LINUX_KERNEL + help + Linux Framebuffer drivers for small TFT LCD display modules, + e.g. Adafruit PiTFT displays for Raspberry Pi. + + This is only the download helper for the kernel patch. + + https://github.com/notro/fbtft diff --git a/package/fbtft/fbtft.hash b/package/fbtft/fbtft.hash new file mode 100644 index 00000000..5d08d0ef --- /dev/null +++ b/package/fbtft/fbtft.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 0e81de89fdd7ab810716fc0549e767527f342e829309dee5c2cca1e9d1728770 fbtft-274035404701245e7491c0c6471c5b72ade4d491.tar.gz +sha256 a9ca80d65a5ef10fe614a6c1e8c8d4d3b96637e8855a96c7cf0fa438526097a7 fbtft-core.c diff --git a/package/fbtft/fbtft.mk b/package/fbtft/fbtft.mk new file mode 100644 index 00000000..cc11d867 --- /dev/null +++ b/package/fbtft/fbtft.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# fbtft +# +################################################################################ + +FBTFT_VERSION = 274035404701245e7491c0c6471c5b72ade4d491 +FBTFT_SITE = $(call github,notro,fbtft,$(FBTFT_VERSION)) +FBTFT_LICENSE = GPL-2.0 +FBTFT_LICENSE_FILES = fbtft-core.c + +$(eval $(generic-package)) diff --git a/package/fbv/0001-cross.patch b/package/fbv/0001-cross.patch new file mode 100644 index 00000000..ab5f0fb4 --- /dev/null +++ b/package/fbv/0001-cross.patch @@ -0,0 +1,44 @@ +diff -urpN fbv-1.0b.orig/configure fbv-1.0b/configure +--- fbv-1.0b.orig/configure 2004-09-07 13:29:27.000000000 +0200 ++++ fbv-1.0b/configure 2008-04-24 10:52:37.000000000 +0200 +@@ -80,6 +80,7 @@ while true ; do + esac + done + ++[ -z "$CC" ] && CC=cc + [ -z "$prefix" ] && prefix="/usr/local" + [ -z "$bindir" ] && bindir="${prefix}/bin" + [ -z "$mandir" ] && mandir="${prefix}/man" +@@ -106,12 +107,12 @@ xdir="/usr/X11R6" + ungif="no" + echo "libungif check" >>./config.log + echo " 1st:" >>./config.log +-cc 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -lungif $libs ++$CC 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -lungif $libs + if [ -e \$\$~test ]; then + libs="-lungif $libs" ; ungif="yes" + else + echo " 2nd: -lX11 -L$xdir/lib" >>./config.log +- cc 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -lungif -lX11 -L$xdir/lib $libs ++ $CC 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -lungif -lX11 -L$xdir/lib $libs + if [ -e \$\$~test ]; then + libs="-lungif -lX11 -L$xdir/lib $libs" ; ungif="yes" + fi +@@ -124,7 +125,7 @@ echo "libungif: $ungif" >> ./config.log + echo -n "checking for libjpeg presence... " + if [ "$jpeg" != "disabled" ]; then + jpeg="no" +-cc 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -ljpeg $libs ++$CC 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -ljpeg $libs + if [ -e \$\$~test ]; then + libs="-ljpeg $libs" ; jpeg="yes" + fi +@@ -135,7 +136,7 @@ echo "libjpeg: $jpeg" >> ./config.log + echo -n "checking for libpng presence... " + if [ "$png" != "disabled" ]; then + png="no" +-cc 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -lpng $libs ++$CC 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -lpng $libs + if [ -e \$\$~test ]; then + libs="-lpng $libs" ; png="yes" + fi diff --git a/package/fbv/0002-fix-24bpp-support-on-big-endian.patch b/package/fbv/0002-fix-24bpp-support-on-big-endian.patch new file mode 100644 index 00000000..23185ac4 --- /dev/null +++ b/package/fbv/0002-fix-24bpp-support-on-big-endian.patch @@ -0,0 +1,32 @@ +diff -upr a/fb_display.c b/fb_display.c +--- a/fb_display.c 2007-06-01 16:52:45.000000000 +0200 ++++ b/fb_display.c 2007-06-01 16:51:43.000000000 +0200 +@@ -307,7 +307,7 @@ void* convertRGB2FB(int fh, unsigned cha + { + unsigned long i; + void *fbbuff = NULL; +- u_int8_t *c_fbbuff; ++ u_int8_t *c_fbbuff; + u_int16_t *s_fbbuff; + u_int32_t *i_fbbuff; + +@@ -335,6 +335,16 @@ void* convertRGB2FB(int fh, unsigned cha + fbbuff = (void *) s_fbbuff; + break; + case 24: ++ *cpp = 3; ++ c_fbbuff = (unsigned char *) malloc(count * 3 * sizeof(unsigned char)); ++ for(i = 0; i < (3 * count); i += 3) { ++ /* Big endian framebuffer. */ ++ c_fbbuff[i] = rgbbuff[i+2]; ++ c_fbbuff[i+1] = rgbbuff[i+1]; ++ c_fbbuff[i+2] = rgbbuff[i]; ++ } ++ fbbuff = (void *) c_fbbuff; ++ break; + case 32: + *cpp = 4; + i_fbbuff = (unsigned int *) malloc(count * sizeof(unsigned int)); +Only in build_avr32/fbv-1.0b-modified: .fb_display.c.swp +Binary files build_avr32/fbv-1.0b/fb_display.o and build_avr32/fbv-1.0b-modified/fb_display.o differ +Binary files build_avr32/fbv-1.0b/fbv and build_avr32/fbv-1.0b-modified/fbv differ diff --git a/package/fbv/0003-fix-bgr555.patch b/package/fbv/0003-fix-bgr555.patch new file mode 100644 index 00000000..8f185f0a --- /dev/null +++ b/package/fbv/0003-fix-bgr555.patch @@ -0,0 +1,64 @@ +[PATCH] fbv: support bgr555 format + +Signed-off-by: Josh.Wu +diff -Naur fbv-1.0b-ori/fb_display.c fbv-1.0b/fb_display.c +--- fbv-1.0b-ori/fb_display.c 2010-04-02 09:38:15.000000000 +0800 ++++ fbv-1.0b/fb_display.c 2010-04-01 18:54:15.000000000 +0800 +@@ -297,6 +297,14 @@ + ((b >> 3) & 31) ); + } + ++inline static unsigned short make15color_bgr(unsigned char r, unsigned char g, unsigned char b) ++{ ++ return ( ++ (((b >> 3) & 31) << 10) | ++ (((g >> 3) & 31) << 5) | ++ ((r >> 3) & 31) ); ++} ++ + inline static unsigned short make16color(unsigned char r, unsigned char g, unsigned char b) + { + return ( +@@ -313,6 +321,14 @@ + u_int16_t *s_fbbuff; + u_int32_t *i_fbbuff; + ++ int is_bgr555 = 0; ++ struct fb_var_screeninfo var; ++ getVarScreenInfo(fh, &var); ++ if(var.red.offset == 0 && ++ var.green.offset == 5 && ++ var.blue.offset == 10) ++ is_bgr555 = 1; ++ + switch(bpp) + { + case 8: +@@ -325,15 +341,23 @@ + case 15: + *cpp = 2; + s_fbbuff = (unsigned short *) malloc(count * sizeof(unsigned short)); +- for(i = 0; i < count ; i++) +- s_fbbuff[i] = make15color(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]); ++ if(is_bgr555) ++ for(i = 0; i < count ; i++) ++ s_fbbuff[i] = make15color_bgr(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]); ++ else ++ for(i = 0; i < count ; i++) ++ s_fbbuff[i] = make15color(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]); + fbbuff = (void *) s_fbbuff; + break; + case 16: + *cpp = 2; + s_fbbuff = (unsigned short *) malloc(count * sizeof(unsigned short)); +- for(i = 0; i < count ; i++) +- s_fbbuff[i] = make16color(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]); ++ if(is_bgr555) ++ for(i = 0; i < count ; i++) ++ s_fbbuff[i] = make15color_bgr(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]); ++ else ++ for(i = 0; i < count ; i++) ++ s_fbbuff[i] = make16color(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]); + fbbuff = (void *) s_fbbuff; + break; + case 24: diff --git a/package/fbv/0004-giflib.patch b/package/fbv/0004-giflib.patch new file mode 100644 index 00000000..70433535 --- /dev/null +++ b/package/fbv/0004-giflib.patch @@ -0,0 +1,84 @@ +Adjust source code to work with giflib 5.1x + +Downloaded patch for gif.c from +https://projects.archlinux.org/svntogit/community.git/plain/trunk/giflib-5.1.patch?h=packages/fbv + +Signed-off-by: Bernd Kuhls + +diff -wbBur fbv-1.0b/gif.c fbv-1.0b.my/gif.c +--- fbv-1.0b/gif.c 2003-08-25 00:23:02.000000000 +0400 ++++ fbv-1.0b.my/gif.c 2014-05-29 18:39:41.337332872 +0400 +@@ -31,10 +31,10 @@ + #include + #define min(a,b) ((a) < (b) ? (a) : (b)) + #define gflush return(FH_ERROR_FILE); +-#define grflush { DGifCloseFile(gft); return(FH_ERROR_FORMAT); } +-#define mgrflush { free(lb); free(slb); DGifCloseFile(gft); return(FH_ERROR_FORMAT); } ++#define grflush { DGifCloseFile(gft, NULL); return(FH_ERROR_FORMAT); } ++#define mgrflush { free(lb); free(slb); DGifCloseFile(gft, NULL); return(FH_ERROR_FORMAT); } + #define agflush return(FH_ERROR_FORMAT); +-#define agrflush { DGifCloseFile(gft); return(FH_ERROR_FORMAT); } ++#define agrflush { DGifCloseFile(gft, NULL); return(FH_ERROR_FORMAT); } + + + int fh_gif_id(char *name) +@@ -81,7 +81,7 @@ + ColorMapObject *cmap; + int cmaps; + +- gft=DGifOpenFileName(name); ++ gft=DGifOpenFileName(name, NULL); + if(gft==NULL){printf("err5\n"); gflush;} ////////// + do + { +@@ -170,7 +170,7 @@ + } + } + while( rt!= TERMINATE_RECORD_TYPE ); +- DGifCloseFile(gft); ++ DGifCloseFile(gft, NULL); + return(FH_ERROR_OK); + } + +@@ -184,7 +184,7 @@ + int extcode; + GifRecordType rt; + +- gft=DGifOpenFileName(name); ++ gft=DGifOpenFileName(name, NULL); + if(gft==NULL) gflush; + do + { +@@ -197,7 +197,7 @@ + px=gft->Image.Width; + py=gft->Image.Height; + *x=px; *y=py; +- DGifCloseFile(gft); ++ DGifCloseFile(gft, NULL); + return(FH_ERROR_OK); + break; + case EXTENSION_RECORD_TYPE: +@@ -210,7 +210,7 @@ + } + } + while( rt!= TERMINATE_RECORD_TYPE ); +- DGifCloseFile(gft); ++ DGifCloseFile(gft, NULL); + return(FH_ERROR_FORMAT); + } + #endif +diff -uNr fbv-1.0b.org/configure fbv-1.0b/configure +--- fbv-1.0b.org/configure 2004-09-07 13:29:27.000000000 +0200 ++++ fbv-1.0b/configure 2015-01-29 19:58:30.374599874 +0100 +@@ -106,9 +106,9 @@ + ungif="no" + echo "libungif check" >>./config.log + echo " 1st:" >>./config.log +-$CC 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -lungif $libs ++$CC 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -lgif $libs + if [ -e \$\$~test ]; then +- libs="-lungif $libs" ; ungif="yes" ++ libs="-lgif $libs" ; ungif="yes" + else + echo " 2nd: -lX11 -L$xdir/lib" >>./config.log + $CC 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -lungif -lX11 -L$xdir/lib $libs diff --git a/package/fbv/0005-include.patch b/package/fbv/0005-include.patch new file mode 100644 index 00000000..3d1cc17f --- /dev/null +++ b/package/fbv/0005-include.patch @@ -0,0 +1,20 @@ +diff -urpN fbv-1.0b.orig/fb_display.c fbv-1.0b/fb_display.c +--- fbv-1.0b.orig/fb_display.c 2004-09-07 14:09:43.000000000 +0200 ++++ fbv-1.0b/fb_display.c 2008-04-24 10:48:29.000000000 +0200 +@@ -18,8 +18,6 @@ + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +-#include +- + #include + #include + #include +@@ -31,6 +29,7 @@ + #include + #include + #include ++#include + #include "config.h" + /* Public Use Functions: + * diff --git a/package/fbv/0006-libpng15.patch b/package/fbv/0006-libpng15.patch new file mode 100644 index 00000000..7872a73c --- /dev/null +++ b/package/fbv/0006-libpng15.patch @@ -0,0 +1,24 @@ +Support for libpng 1.5+ shamelessly taken from Gentoo. + +Signed-off-by: Gustavo Zacarias + +--- a/png.c ++++ b/png.c +@@ -69,7 +69,7 @@ + fclose(fh); return(FH_ERROR_FORMAT); + } + rp=0; +- if (setjmp(png_ptr->jmpbuf)) ++ if (setjmp(png_jmpbuf(png_ptr))) + { + png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); + if(rp) free(rp); +@@ -161,7 +161,7 @@ + fclose(fh); return(FH_ERROR_FORMAT); + } + rp=0; +- if (setjmp(png_ptr->jmpbuf)) ++ if (setjmp(png_jmpbuf(png_ptr))) + { + png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); + if(rp) free(rp); diff --git a/package/fbv/0007-gif.c-fic-build-with-gcc-10.patch b/package/fbv/0007-gif.c-fic-build-with-gcc-10.patch new file mode 100644 index 00000000..57d5777b --- /dev/null +++ b/package/fbv/0007-gif.c-fic-build-with-gcc-10.patch @@ -0,0 +1,36 @@ +From 8877207b290da1c3bc100f2705c30e6bdafcd985 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 26 May 2022 23:59:46 +0200 +Subject: [PATCH] gif.c: fic build with gcc >= 10 + +Fix the following build failure with gcc >= 10:: + +/nvmedata/autobuild/instance-30/output-1/per-package/fbv/host/bin/../lib/gcc/powerpc-buildroot-linux-uclibc/11.3.0/../../../../powerpc-buildroot-linux-uclibc/bin/ld: gif.o: in function `fh_gif_load': +gif.c:(.text+0x338): undefined reference to `m_rend_gif_decodecolormap' + +Fixes: + - http://autobuild.buildroot.org/results/dca603a61b1fd0558992b4a40152d23b5b9c0049 + +Signed-off-by: Fabrice Fontaine +[Upstream status: not upstreamable (most active fork dropped gif +support: https://github.com/godspeed1989/fbv/pull/17)] +--- + gif.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gif.c b/gif.c +index 689e549..5560f25 100644 +--- a/gif.c ++++ b/gif.c +@@ -48,7 +48,7 @@ int fh_gif_id(char *name) + return(0); + } + +-inline void m_rend_gif_decodecolormap(unsigned char *cmb,unsigned char *rgbb,ColorMapObject *cm,int s,int l, int transparency) ++static inline void m_rend_gif_decodecolormap(unsigned char *cmb,unsigned char *rgbb,ColorMapObject *cm,int s,int l, int transparency) + { + GifColorType *cmentry; + int i; +-- +2.35.1 + diff --git a/package/fbv/Config.in b/package/fbv/Config.in new file mode 100644 index 00000000..22062763 --- /dev/null +++ b/package/fbv/Config.in @@ -0,0 +1,33 @@ +config BR2_PACKAGE_FBV + bool "fbv" + help + fbv is a very simple graphic file viewer for the framebuffer + console, capable of displaying GIF, JPEG, PNG and BMP files + using libungif, libjpeg and libpng. + + http://freshmeat.net/projects/fbv/ + +if BR2_PACKAGE_FBV + +config BR2_PACKAGE_FBV_PNG + bool "PNG support" + default y + select BR2_PACKAGE_LIBPNG + help + Enable support for PNG using libpng. + +config BR2_PACKAGE_FBV_JPEG + bool "JPEG support" + default y + select BR2_PACKAGE_JPEG + help + Enable support for JPEG using IJG's libjpeg. + +config BR2_PACKAGE_FBV_GIF + bool "GIF support" + default y + select BR2_PACKAGE_GIFLIB + help + Enable support for GIF using giflib. + +endif # BR2_PACKAGE_FBV diff --git a/package/fbv/fbv.hash b/package/fbv/fbv.hash new file mode 100644 index 00000000..3f25465b --- /dev/null +++ b/package/fbv/fbv.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 9b55b9dafd5eb01562060d860e267e309a1876e8ba5ce4d3303484b94129ab3c fbv-1.0b.tar.gz +sha256 bf21d97bafcaacb5d6bc3d5502030c340f0e0593614078ab017af91e950083af COPYING diff --git a/package/fbv/fbv.mk b/package/fbv/fbv.mk new file mode 100644 index 00000000..a69e4ad5 --- /dev/null +++ b/package/fbv/fbv.mk @@ -0,0 +1,57 @@ +################################################################################ +# +# fbv +# +################################################################################ + +FBV_VERSION = 1.0b +FBV_SITE = http://s-tech.elsat.net.pl/fbv + +FBV_LICENSE = GPL-2.0 +FBV_LICENSE_FILES = COPYING + +### image format dependencies and configure options +FBV_DEPENDENCIES = # empty +FBV_CONFIGURE_OPTS = # empty +ifeq ($(BR2_PACKAGE_FBV_PNG),y) +FBV_DEPENDENCIES += libpng + +# libpng in turn depends on other libraries +ifeq ($(BR2_STATIC_LIBS),y) +FBV_CONFIGURE_OPTS += "--libs=`$(PKG_CONFIG_HOST_BINARY) --libs libpng`" +endif + +else +FBV_CONFIGURE_OPTS += --without-libpng +endif +ifeq ($(BR2_PACKAGE_FBV_JPEG),y) +FBV_DEPENDENCIES += jpeg +else +FBV_CONFIGURE_OPTS += --without-libjpeg +endif +ifeq ($(BR2_PACKAGE_FBV_GIF),y) +FBV_DEPENDENCIES += giflib +else +FBV_CONFIGURE_OPTS += --without-libungif +endif + +#fbv doesn't support cross-compilation +define FBV_CONFIGURE_CMDS + (cd $(FBV_DIR); rm -f config.cache; \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + ./configure \ + --prefix=/usr \ + $(FBV_CONFIGURE_OPTS) \ + ) +endef + +define FBV_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define FBV_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/fbv $(TARGET_DIR)/usr/bin/fbv +endef + +$(eval $(autotools-package)) diff --git a/package/fcft/Config.in b/package/fcft/Config.in new file mode 100644 index 00000000..5393b95d --- /dev/null +++ b/package/fcft/Config.in @@ -0,0 +1,52 @@ +config BR2_PACKAGE_FCFT + bool "fcft" + depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # C11 threads + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_PIXMAN + select BR2_PACKAGE_TLLIST + help + A simple library for font loading and glyph rasterization + using FontConfig, FreeType and pixman. + + https://codeberg.org/dnkl/fcft + +if BR2_PACKAGE_FCFT + +config BR2_PACKAGE_FCFT_GRAPHEME_SHAPING + bool "grapheme-shaping" + depends on BR2_INSTALL_LIBSTDCPP # harfbuzz + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # harfbuzz + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # harfbuzz + select BR2_PACKAGE_HARFBUZZ + help + Enables shaping of individual grapheme clusters + +comment "grapheme-shaping needs a toolchain w/ C++, gcc >= 4.9" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_FCFT_RUN_SHAPING + bool "run-shaping" + depends on BR2_INSTALL_LIBSTDCPP # harfbuzz + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # harfbuzz + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # harfbuzz + select BR2_PACKAGE_HARFBUZZ + select BR2_PACKAGE_UTF8PROC + help + Enables shaping of whole text runs. + +comment "run-shaping needs a toolchain w/ C++, gcc >= 4.9" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_FCFT_SVG_SUPPORT + bool "svg support" + help + Enables svg support. This option increases the size of the + library by approximately 55KB. + +endif # BR2_PACKAGE_FCFT + +comment "fcft needs a glibc or musl toolchain" + depends on !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) diff --git a/package/fcft/fcft.hash b/package/fcft/fcft.hash new file mode 100644 index 00000000..96d885db --- /dev/null +++ b/package/fcft/fcft.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 904f40d749d198d97c46c5a459cd3c53fe92f008cf1e3e61949f6cf3036a78b7 3.1.6.tar.gz +sha256 d534a23a31500a0ac958d9634b84f532bd73ff1aca1bb8f7debbcbebc16ff39a LICENSE diff --git a/package/fcft/fcft.mk b/package/fcft/fcft.mk new file mode 100644 index 00000000..538d8a07 --- /dev/null +++ b/package/fcft/fcft.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# fcft +# +################################################################################ + +FCFT_VERSION = 3.1.6 +FCFT_SOURCE = $(FCFT_VERSION).tar.gz +FCFT_SITE = https://codeberg.org/dnkl/fcft/archive +FCFT_LICENSE = MIT +FCFT_LICENSE_FILES = LICENSE +FCFT_INSTALL_STAGING = YES + +FCFT_DEPENDENCIES = \ + fontconfig \ + freetype \ + pixman \ + tllist + +FCFT_CONF_OPTS = \ + -Ddocs=disabled \ + -Dexamples=false + +ifeq ($(BR2_PACKAGE_FCFT_GRAPHEME_SHAPING),y) +FCFT_DEPENDENCIES += harfbuzz +FCFT_CONF_OPTS += -Dgrapheme-shaping=enabled +else +FCFT_CONF_OPTS += -Dgrapheme-shaping=disabled +endif + +ifeq ($(BR2_PACKAGE_FCFT_RUN_SHAPING),y) +FCFT_DEPENDENCIES += harfbuzz utf8proc +FCFT_CONF_OPTS += -Drun-shaping=enabled +else +FCFT_CONF_OPTS += -Drun-shaping=disabled +endif + +ifeq ($(BR2_PACKAGE_FCFT_SVG_SUPPORT),y) +FCFT_CONF_OPTS += -Dsvg-backend='nanosvg' +else +FCFT_CONF_OPTS += -Dsvg-backend='none' +endif + +$(eval $(meson-package)) diff --git a/package/fcgiwrap/0001-use-LIBS-from-configure.patch b/package/fcgiwrap/0001-use-LIBS-from-configure.patch new file mode 100644 index 00000000..12563c42 --- /dev/null +++ b/package/fcgiwrap/0001-use-LIBS-from-configure.patch @@ -0,0 +1,22 @@ +Makefile.in: Use LIBS from configure rather than specifying -lfcgi manually. + +libfcgi needs libm and fcgiwrap does not use libtool or pkgconf to +detect libfcgi, so we need to add -lm explicitely when using static +libs. Buildroot does this by providing LIBS=-lm to configure when +needed. However fcgiwrap does not use Automake and its Makefile.in +ignores LIBS from configure. Fix it with this patch. + +Signed-off-by: Thomas Claveirole + +diff -ur a/Makefile.in b/Makefile.in +--- a/Makefile.in 2013-02-03 14:25:17.000000000 +0100 ++++ b/Makefile.in 2015-05-29 16:33:23.895280138 +0200 +@@ -16,7 +16,7 @@ + install -m 644 systemd/fcgiwrap.service $(DESTDIR)@systemdsystemunitdir@ + endif + +-LDLIBS = -lfcgi @systemd_LIBS@ ++LDLIBS = @LIBS@ @systemd_LIBS@ + CFLAGS = @AM_CFLAGS@ + + fcgiwrap: fcgiwrap.c diff --git a/package/fcgiwrap/0002-link-with-libsystemd-instead-of-libsystemd-daemon.patch b/package/fcgiwrap/0002-link-with-libsystemd-instead-of-libsystemd-daemon.patch new file mode 100644 index 00000000..e88706f8 --- /dev/null +++ b/package/fcgiwrap/0002-link-with-libsystemd-instead-of-libsystemd-daemon.patch @@ -0,0 +1,20 @@ +configure.ac: Check for libsystemd, not libsystemd-daemon. + +Newer versions of systemd do not provide libsystemd-daemon anymore. +Therefore, use libsystemd instead. + +Signed-off-by: Thomas Claveirole + +diff --git a/configure.ac b/configure.ac +index bb3674e..2b02ef4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -28,7 +28,7 @@ AC_ARG_WITH([systemd], + [], [with_systemd=check]) + have_systemd=no + if test "x$with_systemd" != "xno"; then +- PKG_CHECK_MODULES(systemd, [libsystemd-daemon], ++ PKG_CHECK_MODULES(systemd, [libsystemd], + [AC_DEFINE(HAVE_SYSTEMD, 1, [Define if systemd is available]) + have_systemd=yes], + have_systemd=no) diff --git a/package/fcgiwrap/Config.in b/package/fcgiwrap/Config.in new file mode 100644 index 00000000..b1dbd72d --- /dev/null +++ b/package/fcgiwrap/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_FCGIWRAP + bool "fcgiwrap" + depends on BR2_USE_MMU # libfcgi + select BR2_PACKAGE_LIBFCGI + help + fcgiwrap is a simple server for running CGI applications + over FastCGI. It hopes to provide clean CGI support to Nginx + (and other web servers that may need it). + + https://github.com/gnosek/fcgiwrap diff --git a/package/fcgiwrap/fcgiwrap.hash b/package/fcgiwrap/fcgiwrap.hash new file mode 100644 index 00000000..cf2c785c --- /dev/null +++ b/package/fcgiwrap/fcgiwrap.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c72f2933669ebd21605975c5a11f26b9739e32e4f9d324fb9e1a1925e9c2ae88 fcgiwrap-99c942c90063c73734e56bacaa65f947772d9186.tar.gz +sha256 1504c301f6d417f2626085337e5c3bb3dc0282265089396ab36bfe1942feef1c COPYING diff --git a/package/fcgiwrap/fcgiwrap.mk b/package/fcgiwrap/fcgiwrap.mk new file mode 100644 index 00000000..62c4c136 --- /dev/null +++ b/package/fcgiwrap/fcgiwrap.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# fcgiwrap +# +################################################################################ + +FCGIWRAP_VERSION = 99c942c90063c73734e56bacaa65f947772d9186 +FCGIWRAP_SITE = $(call github,gnosek,fcgiwrap,$(FCGIWRAP_VERSION)) +FCGIWRAP_DEPENDENCIES = host-pkgconf libfcgi +FCGIWRAP_LICENSE = MIT +FCGIWRAP_LICENSE_FILES = COPYING +FCGIWRAP_AUTORECONF = YES +FCGIWRAP_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -Wno-error" + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +FCGIWRAP_DEPENDENCIES += systemd +FCGIWRAP_CONF_OPTS += --with-systemd +else +FCGIWRAP_CONF_OPTS += --without-systemd +endif + +# libfcgi needs libm and fcgiwrap does not use libtool or pkgconf to +# detect libfcgi, so we need to add -lm explicitely when using static +# libs. +ifeq ($(BR2_STATIC_LIBS),y) +FCGIWRAP_CONF_OPTS += LIBS=-lm +endif + +# fcgiwrap uses Autoconf, but not Automake, so we need to provide +# these to make. +FCGIWRAP_MAKE_ENV = $(TARGET_CONFIGURE_OPTS) + +$(eval $(autotools-package)) diff --git a/package/fconfig/Config.in b/package/fconfig/Config.in new file mode 100644 index 00000000..e7dd58a8 --- /dev/null +++ b/package/fconfig/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_FCONFIG + bool "fconfig" + help + fconfig - get/set RedBoot configuration parameters from Linux. + + http://andrzejekiert.ovh.org/software.html.en diff --git a/package/fconfig/fconfig.hash b/package/fconfig/fconfig.hash new file mode 100644 index 00000000..98e7fbf1 --- /dev/null +++ b/package/fconfig/fconfig.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 4ff0e8f07e35e46b705c0dbe9d9544ede01ea092a69e3f7db03e55a3f2bb8eb7 fconfig-20080329.tar.gz +sha256 e698a9ea4d6dab0a15d3d6fd354b97b820629244f946529cc7f42b2b8e8f16d0 fconfig.c diff --git a/package/fconfig/fconfig.mk b/package/fconfig/fconfig.mk new file mode 100644 index 00000000..1e6fbb40 --- /dev/null +++ b/package/fconfig/fconfig.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# fconfig +# +################################################################################ + +FCONFIG_VERSION = 20080329 +# Real upstream location has been disabled +# FCONFIG_SITE = http://andrzejekiert.ovh.org/software/fconfig +FCONFIG_SITE = http://sources.buildroot.net +FCONFIG_LICENSE = GPL-2.0+ +FCONFIG_LICENSE_FILES = fconfig.c + +define FCONFIG_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define FCONFIG_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/fconfig $(TARGET_DIR)/sbin/fconfig +endef + +$(eval $(generic-package)) diff --git a/package/fd/Config.in b/package/fd/Config.in new file mode 100644 index 00000000..10f295cb --- /dev/null +++ b/package/fd/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_FD + bool "fd" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_RUSTC + help + fd is a program to find entries in your filesystem. It is a + simple, fast and user-friendly alternative to find. While it + does not aim to support all of find's powerful functionality, + it provides sensible (opinionated) defaults for a majority of + use cases. + + https://github.com/sharkdp/fd.git diff --git a/package/fd/fd.hash b/package/fd/fd.hash new file mode 100644 index 00000000..90d2c386 --- /dev/null +++ b/package/fd/fd.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 91da5cc2b99d4754fa5096cda1eeac98f312f712bfca6a41f9972b2287a4c4f9 fd-9.0.0-cargo2.tar.gz +sha256 73c83c60d817e7df1943cb3f0af81e4939a8352c9a96c2fd00451b1116fa635c LICENSE-APACHE +sha256 322cfc7aa0c774d0eca3b2610f1d414de3ddbd7d8dd4b9dea941a13a6eb07455 LICENSE-MIT diff --git a/package/fd/fd.mk b/package/fd/fd.mk new file mode 100644 index 00000000..316da418 --- /dev/null +++ b/package/fd/fd.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# fd +# +################################################################################ + +FD_VERSION = 9.0.0 +FD_SITE = $(call github,sharkdp,fd,v$(FD_VERSION)) +FD_LICENSE = Apache-2.0 or MIT +FD_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT + +$(eval $(cargo-package)) diff --git a/package/fdk-aac/Config.in b/package/fdk-aac/Config.in new file mode 100644 index 00000000..831db13b --- /dev/null +++ b/package/fdk-aac/Config.in @@ -0,0 +1,25 @@ +# These are the architectures supported by FDK AAC +config BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS + bool + default y if BR2_aarch64 + default y if BR2_arm || BR2_armeb + default y if BR2_i386 || BR2_x86_64 + default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + default y if BR2_powerpc + default y if BR2_sh + default y if BR2_s390x + +config BR2_PACKAGE_FDK_AAC + bool "fdk-aac" + depends on BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP + help + The Fraunhofer FDK AAC Codec Library for Android ("FDK AAC + Codec") is software that implements the MPEG Advanced Audio + Coding ("AAC") encoding and decoding scheme for digital audio + + http://sourceforge.net/projects/opencore-amr/files/fdk-aac/ + +comment "fdk-aac needs a toolchain w/ C++" + depends on BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/fdk-aac/fdk-aac.hash b/package/fdk-aac/fdk-aac.hash new file mode 100644 index 00000000..ae5c81b3 --- /dev/null +++ b/package/fdk-aac/fdk-aac.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/opencore-amr/files/fdk-aac/ +sha1 29f5485a6ec718335243440600ff78418cd4765b fdk-aac-2.0.3.tar.gz +# Locally computed: +sha256 829b6b89eef382409cda6857fd82af84fabb63417b08ede9ea7a553f811cb79e fdk-aac-2.0.3.tar.gz +sha256 95ec80da40b4af12ad4c4f3158c9cfb80f2479f3246e4260cb600827cc8c7836 NOTICE diff --git a/package/fdk-aac/fdk-aac.mk b/package/fdk-aac/fdk-aac.mk new file mode 100644 index 00000000..01a100fa --- /dev/null +++ b/package/fdk-aac/fdk-aac.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# fdk-aac +# +################################################################################ + +FDK_AAC_VERSION = 2.0.3 +FDK_AAC_SITE = http://downloads.sourceforge.net/project/opencore-amr/fdk-aac +FDK_AAC_LICENSE = fdk-aac license +FDK_AAC_LICENSE_FILES = NOTICE + +FDK_AAC_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/feh/Config.in b/package/feh/Config.in new file mode 100644 index 00000000..7a348a15 --- /dev/null +++ b/package/feh/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_FEH + bool "feh" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_IMLIB2 + select BR2_PACKAGE_IMLIB2_PNG + select BR2_PACKAGE_IMLIB2_JPEG + select BR2_PACKAGE_IMLIB2_X + help + feh is an X11 image viewer aimed mostly at console users. + + http://feh.finalrewind.org/ diff --git a/package/feh/feh.hash b/package/feh/feh.hash new file mode 100644 index 00000000..f74b8fa3 --- /dev/null +++ b/package/feh/feh.hash @@ -0,0 +1,3 @@ +# Locally calculated after checking pgp signature +sha256 57ab1ca61f57c96595878069f550d36f518530f88fa31b74cc39cd739f9258b6 feh-3.7.1.tar.bz2 +sha256 2c3a31327dc3cc3331aa6e759d378e4f66d0ece7174a0d5aa137f3cba4bf0509 COPYING diff --git a/package/feh/feh.mk b/package/feh/feh.mk new file mode 100644 index 00000000..df03deed --- /dev/null +++ b/package/feh/feh.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# feh +# +################################################################################ + +FEH_VERSION = 3.7.1 +FEH_SOURCE = feh-$(FEH_VERSION).tar.bz2 +FEH_SITE = http://feh.finalrewind.org +FEH_DEPENDENCIES = imlib2 libpng xlib_libXt +FEH_LICENSE = MIT +FEH_LICENSE_FILES = COPYING +FEH_CPE_ID_VALID = YES + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +FEH_DEPENDENCIES += libcurl +FEH_MAKE_OPTS += curl=1 +else +FEH_MAKE_OPTS += curl=0 +endif + +ifeq ($(BR2_PACKAGE_LIBEXIF),y) +FEH_DEPENDENCIES += libexif +FEH_MAKE_OPTS += exif=1 +else +FEH_MAKE_OPTS += exif=0 +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +FEH_DEPENDENCIES += xlib_libXinerama +FEH_MAKE_OPTS += xinerama=1 +else +FEH_MAKE_OPTS += xinerama=0 +endif + +define FEH_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) CFLAGS="$(TARGET_CFLAGS) -std=gnu99" \ + $(MAKE) $(FEH_MAKE_OPTS) -C $(@D) all +endef + +define FEH_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(FEH_MAKE_OPTS) PREFIX=/usr \ + DESTDIR=$(TARGET_DIR) -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/fetchmail/Config.in b/package/fetchmail/Config.in new file mode 100644 index 00000000..1017df34 --- /dev/null +++ b/package/fetchmail/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_FETCHMAIL + bool "fetchmail" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_CA_CERTIFICATES + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + help + Fetchmail - the mail-retrieval daemon + Client daemon to move mail from POP and IMAP to your local + computer + + http://www.fetchmail.info/ diff --git a/package/fetchmail/fetchmail.hash b/package/fetchmail/fetchmail.hash new file mode 100644 index 00000000..12612ecc --- /dev/null +++ b/package/fetchmail/fetchmail.hash @@ -0,0 +1,4 @@ +# From https://sourceforge.net/p/fetchmail/mailman/message/58797299/ +sha256 75109a1f307b538155fa05f5ef298e8298cb4deae95aed24c16b38d36ff0a186 fetchmail-6.4.39.tar.xz +# Locally computed: +sha256 6d87443b61041067a5eddb2cabf8aebff15b8b40771ad6b5e4754e607ec21b39 COPYING diff --git a/package/fetchmail/fetchmail.mk b/package/fetchmail/fetchmail.mk new file mode 100644 index 00000000..a9239d08 --- /dev/null +++ b/package/fetchmail/fetchmail.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# fetchmail +# +################################################################################ + +FETCHMAIL_VERSION_MAJOR = 6.4 +FETCHMAIL_VERSION = $(FETCHMAIL_VERSION_MAJOR).39 +FETCHMAIL_SOURCE = fetchmail-$(FETCHMAIL_VERSION).tar.xz +FETCHMAIL_SITE = https://downloads.sourceforge.net/project/fetchmail/branch_$(FETCHMAIL_VERSION_MAJOR) +FETCHMAIL_LICENSE = GPL-2.0; some exceptions are mentioned in COPYING +FETCHMAIL_LICENSE_FILES = COPYING +FETCHMAIL_CPE_ID_VENDOR = fetchmail +FETCHMAIL_SELINUX_MODULES = fetchmail mta + +FETCHMAIL_CONF_OPTS = \ + --with-ssl=$(STAGING_DIR)/usr + +FETCHMAIL_DEPENDENCIES = \ + ca-certificates \ + host-pkgconf \ + openssl \ + $(TARGET_NLS_DEPENDENCIES) + +$(eval $(autotools-package)) diff --git a/package/ffmpeg/0001-swscale-x86-yuv2rgb-Fix-build-without-SSSE3.patch b/package/ffmpeg/0001-swscale-x86-yuv2rgb-Fix-build-without-SSSE3.patch new file mode 100644 index 00000000..aa56e5a9 --- /dev/null +++ b/package/ffmpeg/0001-swscale-x86-yuv2rgb-Fix-build-without-SSSE3.patch @@ -0,0 +1,43 @@ +From bf8eae2d30a205bb76ac625e04c0351106981b9e Mon Sep 17 00:00:00 2001 +From: Parker Ernest <@> +Date: Sun, 23 Feb 2020 13:22:42 +0100 +Subject: [PATCH] swscale/x86/yuv2rgb: Fix build without SSSE3 + +commit fc6a5883d6af8cae0e96af84dda0ad74b360a084 breaks build on +x86_64 CPUs which do not have SSSE3, e.g. AMD Phenom-II + +Signed-off-by: Michael Niedermayer +[bernd.kuhls@t-online.de: + - retrieved from upstream patchwork: + https://patchwork.ffmpeg.org/project/ffmpeg/patch/20200223122256.23402-1-michael@niedermayer.cc/ +] +Signed-off-by: Bernd Kuhls +[yann.morin.1998@free.fr: fix reference top patchwork and SoB order] +Signed-off-by: Yann E. MORIN +--- + libswscale/x86/yuv2rgb.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/libswscale/x86/yuv2rgb.c b/libswscale/x86/yuv2rgb.c +index c12e88cbb5..4791e5b93a 100644 +--- a/libswscale/x86/yuv2rgb.c ++++ b/libswscale/x86/yuv2rgb.c +@@ -70,6 +70,7 @@ av_cold SwsFunc ff_yuv2rgb_init_x86(SwsContext *c) + #if HAVE_X86ASM + int cpu_flags = av_get_cpu_flags(); + ++#if HAVE_SSSE3 + if (EXTERNAL_SSSE3(cpu_flags)) { + switch (c->dstFormat) { + case AV_PIX_FMT_RGB32: +@@ -98,6 +99,7 @@ av_cold SwsFunc ff_yuv2rgb_init_x86(SwsContext *c) + return yuv420_rgb15_ssse3; + } + } ++#endif + + if (EXTERNAL_MMXEXT(cpu_flags)) { + switch (c->dstFormat) { +-- +2.26.2 + diff --git a/package/ffmpeg/0002-avcodec-vaapi_h264-skip-decode-if-pic-has-no-slices.patch b/package/ffmpeg/0002-avcodec-vaapi_h264-skip-decode-if-pic-has-no-slices.patch new file mode 100644 index 00000000..2892df9d --- /dev/null +++ b/package/ffmpeg/0002-avcodec-vaapi_h264-skip-decode-if-pic-has-no-slices.patch @@ -0,0 +1,36 @@ +From 2c6b3f357331e203ad87214984661c40704aceb7 Mon Sep 17 00:00:00 2001 +From: Rainer Hochecker +Date: Sat, 26 Jan 2019 19:48:35 +0100 +Subject: [PATCH] avcodec/vaapi_h264: skip decode if pic has no slices + +This fixes / workarounds https://bugs.freedesktop.org/show_bug.cgi?id=105368. +It was hit frequently when watching h264 channels received via DVB-X. +Corresponding kodi bug: https://github.com/xbmc/xbmc/issues/15704 + +Downloaded from Kodi ffmpeg repo: +https://github.com/xbmc/FFmpeg/commit/2c6b3f357331e203ad87214984661c40704aceb7 + +Patch was sent upstream: +http://ffmpeg.org/pipermail/ffmpeg-devel/2019-March/240863.html + +Signed-off-by: Bernd Kuhls +--- + libavcodec/vaapi_h264.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/libavcodec/vaapi_h264.c b/libavcodec/vaapi_h264.c +index dd2a6571604..e521a05c4ff 100644 +--- a/libavcodec/vaapi_h264.c ++++ b/libavcodec/vaapi_h264.c +@@ -314,6 +314,11 @@ static int vaapi_h264_end_frame(AVCodecContext *avctx) + H264SliceContext *sl = &h->slice_ctx[0]; + int ret; + ++ if (pic->nb_slices == 0) { ++ ret = AVERROR_INVALIDDATA; ++ goto finish; ++ } ++ + ret = ff_vaapi_decode_issue(avctx, pic); + if (ret < 0) + goto finish; diff --git a/package/ffmpeg/0003-libavutil-Fix-mips-build.patch b/package/ffmpeg/0003-libavutil-Fix-mips-build.patch new file mode 100644 index 00000000..aeb272c4 --- /dev/null +++ b/package/ffmpeg/0003-libavutil-Fix-mips-build.patch @@ -0,0 +1,75 @@ +From e9d97f9d29ce57d7a5a62607c2a08e091a06de6e Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sun, 6 Jun 2021 08:54:53 +0200 +Subject: [PATCH] libavutil: Fix mips build + +Check for sys/auxv.h because not all toolchains contain this header. + +Fixes https://trac.ffmpeg.org/ticket/9138 + +Patch sent upstream: +http://ffmpeg.org/pipermail/ffmpeg-devel/2021-June/281272.html + +[Bernd: rebased for version 6.1.2] +Signed-off-by: Bernd Kuhls +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + configure | 2 ++ + libavutil/mips/cpu.c | 6 +++--- + 2 files changed, 5 insertions(+), 3 deletions(-) + +diff --git a/configure b/configure +index a89cfa6d959d..6ec00df75312 100755 +--- a/configure ++++ b/configure +@@ -2227,6 +2227,7 @@ HEADERS_LIST=" + OpenGL_gl3_h + poll_h + pthread_np_h ++ sys_auxv_h + sys_param_h + sys_resource_h + sys_select_h +@@ -6472,6 +6473,7 @@ check_func_headers VideoToolbox/VTCompressionSession.h VTCompressionSessionPrepa + check_func_headers VideoToolbox/VideoToolbox.h VTPixelRotationSessionCreate -framework VideoToolbox + check_headers windows.h + check_headers asm/types.h ++check_headers sys/auxv.h + + # it seems there are versions of clang in some distros that try to use the + # gcc headers, which explodes for stdatomic +diff --git a/libavutil/mips/cpu.c b/libavutil/mips/cpu.c +index 59619d54dee3..19196de50b59 100644 +--- a/libavutil/mips/cpu.c ++++ b/libavutil/mips/cpu.c +@@ -19,7 +19,7 @@ + #include "libavutil/cpu.h" + #include "libavutil/cpu_internal.h" + #include "config.h" +-#if defined __linux__ || defined __ANDROID__ ++#if (defined __linux__ || defined __ANDROID__) && HAVE_SYS_AUXV_H + #include + #include + #include +@@ -28,7 +28,7 @@ + #include "libavutil/avstring.h" + #endif + +-#if defined __linux__ || defined __ANDROID__ ++#if (defined __linux__ || defined __ANDROID__) && HAVE_SYS_AUXV_H + + #define HWCAP_LOONGSON_CPUCFG (1 << 14) + +@@ -105,7 +105,7 @@ static int cpu_flags_cpuinfo(void) + + int ff_get_cpu_flags_mips(void) + { +-#if defined __linux__ || defined __ANDROID__ ++#if (defined __linux__ || defined __ANDROID__) && HAVE_SYS_AUXV_H + if (cpucfg_available()) + return cpu_flags_cpucfg(); + else +-- +2.34.1 + diff --git a/package/ffmpeg/0004-configure-add-extralibs-to-extralibs_xxx.patch b/package/ffmpeg/0004-configure-add-extralibs-to-extralibs_xxx.patch new file mode 100644 index 00000000..050b34fd --- /dev/null +++ b/package/ffmpeg/0004-configure-add-extralibs-to-extralibs_xxx.patch @@ -0,0 +1,47 @@ +From 0c288853630b7b4e004774c39945d4a804afcfa8 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 6 Aug 2021 09:17:20 +0200 +Subject: [PATCH] configure: add extralibs to extralibs_xxx + +Add extralibs to extralibs_xxx (e.g. extralibs_avformat) to allow +applications such as motion to retrieve ffmpeg dependencies such as +-latomic through pkg-config + +Signed-off-by: Fabrice Fontaine +[Upstream status: not upstreamable] +Signed-off-by: Bernd Kuhls +[rebased for 6.0] +--- + configure | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/configure b/configure +index 0bb3a7cf2b..3bda99e415 100755 +--- a/configure ++++ b/configure +@@ -7986,14 +7986,14 @@ + source_path=${source_path} + LIBPREF=${LIBPREF} + LIBSUF=${LIBSUF} +-extralibs_avutil="$avutil_extralibs" +-extralibs_avcodec="$avcodec_extralibs" +-extralibs_avformat="$avformat_extralibs" +-extralibs_avdevice="$avdevice_extralibs" +-extralibs_avfilter="$avfilter_extralibs" +-extralibs_postproc="$postproc_extralibs" +-extralibs_swscale="$swscale_extralibs" +-extralibs_swresample="$swresample_extralibs" ++extralibs_avutil="$avutil_extralibs $extralibs" ++extralibs_avcodec="$avcodec_extralibs $extralibs" ++extralibs_avformat="$avformat_extralibs $extralibs" ++extralibs_avdevice="$avdevice_extralibs $extralibs" ++extralibs_avfilter="$avfilter_extralibs $extralibs" ++extralibs_postproc="$postproc_extralibs $extralibs" ++extralibs_swscale="$swscale_extralibs $extralibs" ++extralibs_swresample="$swresample_extralibs $extralibs" + EOF + + for lib in $LIBRARY_LIST; do +-- +2.30.2 + diff --git a/package/ffmpeg/0005-avcodec-mmaldec-Fix-build-error.patch b/package/ffmpeg/0005-avcodec-mmaldec-Fix-build-error.patch new file mode 100644 index 00000000..b3b90126 --- /dev/null +++ b/package/ffmpeg/0005-avcodec-mmaldec-Fix-build-error.patch @@ -0,0 +1,32 @@ +From e8a49b1424d405441fb23c2850274a84e95bd892 Mon Sep 17 00:00:00 2001 +From: Zhao Zhili +Date: Tue, 21 Nov 2023 04:05:08 +0800 +Subject: [PATCH] avcodec/mmaldec: Fix build error + +Fix #10670. + +Signed-off-by: Zhao Zhili + +Upstream: http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=e8a49b1424d405441fb23c2850274a84e95bd892 + +Signed-off-by: Bernd Kuhls +--- + libavcodec/mmaldec.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libavcodec/mmaldec.c b/libavcodec/mmaldec.c +index 4bb3eb22ef..2dc7bbee04 100644 +--- a/libavcodec/mmaldec.c ++++ b/libavcodec/mmaldec.c +@@ -843,7 +843,7 @@ static const AVClass ffmmal_dec_class = { + .flush = ffmmal_flush, \ + .p.priv_class = &ffmmal_dec_class, \ + .p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE, \ +- .caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE \ ++ .caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE, \ + .p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_MMAL, \ + AV_PIX_FMT_YUV420P, \ + AV_PIX_FMT_NONE}, \ +-- +2.30.2 + diff --git a/package/ffmpeg/0006-avcodec-pcm-bluray-dvd-Use-correct-pointer-types-on-.patch b/package/ffmpeg/0006-avcodec-pcm-bluray-dvd-Use-correct-pointer-types-on-.patch new file mode 100644 index 00000000..a77a0cf5 --- /dev/null +++ b/package/ffmpeg/0006-avcodec-pcm-bluray-dvd-Use-correct-pointer-types-on-.patch @@ -0,0 +1,52 @@ +From 347a70f101be28f8d78e8fd62ffc3a78324f49e9 Mon Sep 17 00:00:00 2001 +From: Andreas Rheinhardt +Date: Thu, 28 Mar 2024 05:35:36 +0100 +Subject: [PATCH] avcodec/pcm-bluray/dvd: Use correct pointer types on BE + +Signed-off-by: Andreas Rheinhardt +Signed-off-by: Waldemar Brodkorb +Upstream: https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/347a70f101be28f8d78e8fd62ffc3a78324f49e9 +--- + libavcodec/pcm-bluray.c | 5 +++-- + libavcodec/pcm-dvd.c | 2 +- + 2 files changed, 4 insertions(+), 3 deletions(-) + +diff --git a/libavcodec/pcm-bluray.c b/libavcodec/pcm-bluray.c +index f65609514a..235020d78f 100644 +--- a/libavcodec/pcm-bluray.c ++++ b/libavcodec/pcm-bluray.c +@@ -167,7 +167,7 @@ static int pcm_bluray_decode_frame(AVCodecContext *avctx, AVFrame *frame, + samples *= num_source_channels; + if (AV_SAMPLE_FMT_S16 == avctx->sample_fmt) { + #if HAVE_BIGENDIAN +- bytestream2_get_buffer(&gb, dst16, buf_size); ++ bytestream2_get_buffer(&gb, (uint8_t*)dst16, buf_size); + #else + do { + *dst16++ = bytestream2_get_be16u(&gb); +@@ -187,7 +187,8 @@ static int pcm_bluray_decode_frame(AVCodecContext *avctx, AVFrame *frame, + if (AV_SAMPLE_FMT_S16 == avctx->sample_fmt) { + do { + #if HAVE_BIGENDIAN +- bytestream2_get_buffer(&gb, dst16, avctx->ch_layout.nb_channels * 2); ++ bytestream2_get_buffer(&gb, (uint8_t*)dst16, ++ avctx->ch_layout.nb_channels * 2); + dst16 += avctx->ch_layout.nb_channels; + #else + channel = avctx->ch_layout.nb_channels; +diff --git a/libavcodec/pcm-dvd.c b/libavcodec/pcm-dvd.c +index 419b2a138f..319746c62e 100644 +--- a/libavcodec/pcm-dvd.c ++++ b/libavcodec/pcm-dvd.c +@@ -157,7 +157,7 @@ static void *pcm_dvd_decode_samples(AVCodecContext *avctx, const uint8_t *src, + switch (avctx->bits_per_coded_sample) { + case 16: { + #if HAVE_BIGENDIAN +- bytestream2_get_buffer(&gb, dst16, blocks * s->block_size); ++ bytestream2_get_buffer(&gb, (uint8_t*)dst16, blocks * s->block_size); + dst16 += blocks * s->block_size / 2; + #else + int samples = blocks * avctx->ch_layout.nb_channels; +-- +2.39.2 + diff --git a/package/ffmpeg/Config.in b/package/ffmpeg/Config.in new file mode 100644 index 00000000..599e1ddf --- /dev/null +++ b/package/ffmpeg/Config.in @@ -0,0 +1,187 @@ +config BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + bool + default y + # fenv.h lacks FE_INVALID, FE_OVERFLOW & FE_UNDERFLOW on nios2 + depends on !BR2_nios2 + # No support for ARMv7-M in the ARM assembly logic + depends on !BR2_ARM_CPU_ARMV7M + # m68k coldfire causes a build failure, because the check for + # atomics (atomic_store) succeeds, which causes ffmpeg to + # think atomic intrinsics are available, while they are + # not. See https://patchwork.ozlabs.org/patch/756664/ and + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68467 for more + # details. + depends on !BR2_m68k_cf + # assertion fail in binutils + depends on !(BR2_or1k && !BR2_TOOLCHAIN_GCC_AT_LEAST_9) + +menuconfig BR2_PACKAGE_FFMPEG + bool "ffmpeg" + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + help + FFmpeg is a complete, cross-platform solution to record, + convert and stream audio and video. + + https://www.ffmpeg.org + +if BR2_PACKAGE_FFMPEG + +config BR2_PACKAGE_FFMPEG_GPL + bool "Enable GPL code" + help + allow use of GPL code, the resulting libs and binaries will + be under GPL + +config BR2_PACKAGE_FFMPEG_NONFREE + bool "Enable nonfree code" + help + allow use of nonfree code, the resulting libs and binaries + will be unredistributable + +config BR2_PACKAGE_FFMPEG_FFMPEG + bool "Build ffmpeg (the command line application)" + default y + help + FFmpeg is a very fast video and audio converter. + It can also grab from a live audio/video source. + + It is not needed if you want to link the FFmpeg libraries + to your application. + +config BR2_PACKAGE_FFMPEG_FFPLAY + bool "Build ffplay" + depends on !BR2_STATIC_LIBS # sdl2 + select BR2_PACKAGE_FFMPEG_SWSCALE + select BR2_PACKAGE_SDL2 + help + FFplay is a very simple and portable media player using the + FFmpeg libraries and the SDL library. + It is mostly used as a testbed for the various FFmpeg APIs. + +comment "ffplay needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_FFMPEG_FFPROBE + bool "Build ffprobe" + help + FFprobe is a utility to determine the audio and video + characteristics of a container file. + +config BR2_PACKAGE_FFMPEG_XCBGRAB + bool "Build X11 screen grabbing" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_LIBXCB + help + X11 screen grabbing using libxcb. + +config BR2_PACKAGE_FFMPEG_POSTPROC + bool "Build libpostproc" + depends on BR2_PACKAGE_FFMPEG_GPL + help + Postproc is a library of video postprocessing routines. + +config BR2_PACKAGE_FFMPEG_SWSCALE + bool "Build libswscale" + help + Swscale is a library of video scaling routines. + +config BR2_PACKAGE_FFMPEG_ENCODERS + string "Enabled encoders" + default "all" + help + Space-separated list of encoders to build in FFmpeg, + or "all" to build all of them. + + Run ./configure --list-encoders in the ffmpeg sources + directory to know the available options. + +config BR2_PACKAGE_FFMPEG_DECODERS + string "Enabled decoders" + default "all" + help + Space-separated list of decoders to build in FFmpeg, + or "all" to build all of them. + + Run ./configure --list-decoders in the ffmpeg sources + directory to know the available options. + +config BR2_PACKAGE_FFMPEG_MUXERS + string "Enabled muxers" + default "all" + help + Space-separated list of muxers to build in FFmpeg, + or "all" to build all of them. + + Run ./configure --list-muxers in the ffmpeg sources + directory to know the available options. + +config BR2_PACKAGE_FFMPEG_DEMUXERS + string "Enabled demuxers" + default "all" + help + Space-separated list of demuxers to build in FFmpeg, + or "all" to build all of them. + + Run ./configure --list-demuxers in the ffmpeg sources + directory to know the available options. + +config BR2_PACKAGE_FFMPEG_PARSERS + string "Enabled parsers" + default "all" + help + Space-separated list of parsers to build in FFmpeg, + or "all" to build all of them. + + Run ./configure --list-parsers in the ffmpeg sources + directory to know the available options. + +config BR2_PACKAGE_FFMPEG_BSFS + string "Enabled bitstreams" + default "all" + help + Space-separated list of bitstream filters to build in FFmpeg, + or "all" to build all of them. + + Run ./configure --list-bsfs in the ffmpeg sources + directory to know the available options. + +config BR2_PACKAGE_FFMPEG_PROTOCOLS + string "Enabled protocols" + default "all" + help + Space-separated list of protocols to build in FFmpeg, + or "all" to build all of them. + + Run ./configure --list-protocols in the ffmpeg sources + directory to know the available options. + +config BR2_PACKAGE_FFMPEG_FILTERS + string "Enabled filters" + default "all" + help + Space-separated list of filters to build in FFmpeg, + or "all" to build all of them. + + Run ./configure --list-filters in the ffmpeg sources + directory to know the available options. + +config BR2_PACKAGE_FFMPEG_INDEVS + bool "Enable input devices" + default y + +config BR2_PACKAGE_FFMPEG_OUTDEVS + bool "Enable output devices" + default y + +config BR2_PACKAGE_FFMPEG_EXTRACONF + string "Additional parameters for ./configure" + default "" + help + Extra parameters that will be appended to FFmpeg's + ./configure commandline. + +endif + +comment "ffmpeg needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/ffmpeg/ffmpeg.hash b/package/ffmpeg/ffmpeg.hash new file mode 100644 index 00000000..630bd70c --- /dev/null +++ b/package/ffmpeg/ffmpeg.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 3b624649725ecdc565c903ca6643d41f33bd49239922e45c9b1442c63dca4e38 ffmpeg-6.1.2.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING.GPLv2 +sha256 b634ab5640e258563c536e658cad87080553df6f34f62269a21d554844e58bfe COPYING.LGPLv2.1 +sha256 cb48bf09a11f5fb576cddb0431c8f5ed0a60157a9ec942adffc13907cbe083f2 LICENSE.md diff --git a/package/ffmpeg/ffmpeg.mk b/package/ffmpeg/ffmpeg.mk new file mode 100644 index 00000000..a010c016 --- /dev/null +++ b/package/ffmpeg/ffmpeg.mk @@ -0,0 +1,597 @@ +################################################################################ +# +# ffmpeg +# +################################################################################ + +FFMPEG_VERSION = 6.1.2 +FFMPEG_SOURCE = ffmpeg-$(FFMPEG_VERSION).tar.xz +FFMPEG_SITE = https://ffmpeg.org/releases +FFMPEG_INSTALL_STAGING = YES + +FFMPEG_LICENSE = LGPL-2.1+, libjpeg license +FFMPEG_LICENSE_FILES = LICENSE.md COPYING.LGPLv2.1 +ifeq ($(BR2_PACKAGE_FFMPEG_GPL),y) +FFMPEG_LICENSE += and GPL-2.0+ +FFMPEG_LICENSE_FILES += COPYING.GPLv2 +endif + +FFMPEG_CPE_ID_VENDOR = ffmpeg + +FFMPEG_CONF_OPTS = \ + --prefix=/usr \ + --enable-avfilter \ + --disable-version3 \ + --enable-logging \ + --enable-optimizations \ + --disable-extra-warnings \ + --enable-avdevice \ + --enable-avcodec \ + --enable-avformat \ + --enable-network \ + --disable-gray \ + --enable-swscale-alpha \ + --disable-small \ + --disable-crystalhd \ + --disable-dxva2 \ + --enable-runtime-cpudetect \ + --disable-hardcoded-tables \ + --disable-mipsdsp \ + --disable-mipsdspr2 \ + --disable-msa \ + --enable-hwaccels \ + --disable-cuda \ + --disable-cuvid \ + --disable-nvenc \ + --disable-avisynth \ + --disable-frei0r \ + --disable-libopencore-amrnb \ + --disable-libopencore-amrwb \ + --disable-libdc1394 \ + --disable-libgsm \ + --disable-libilbc \ + --disable-libvo-amrwbenc \ + --disable-symver \ + --disable-doc + +FFMPEG_DEPENDENCIES += host-pkgconf + +ifeq ($(BR2_PACKAGE_FFMPEG_GPL),y) +FFMPEG_CONF_OPTS += --enable-gpl +else +FFMPEG_CONF_OPTS += --disable-gpl +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_NONFREE),y) +FFMPEG_CONF_OPTS += --enable-nonfree +else +FFMPEG_CONF_OPTS += --disable-nonfree +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_FFMPEG),y) +FFMPEG_CONF_OPTS += --enable-ffmpeg +else +FFMPEG_CONF_OPTS += --disable-ffmpeg +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_FFPLAY),y) +FFMPEG_DEPENDENCIES += sdl2 +FFMPEG_CONF_OPTS += --enable-ffplay +FFMPEG_CONF_ENV += SDL_CONFIG=$(STAGING_DIR)/usr/bin/sdl2-config +else +FFMPEG_CONF_OPTS += --disable-ffplay +endif + +ifeq ($(BR2_PACKAGE_JACK1),y) +FFMPEG_CONF_OPTS += --enable-libjack +FFMPEG_DEPENDENCIES += jack1 +else ifeq ($(BR2_PACKAGE_JACK2),y) +FFMPEG_CONF_OPTS += --enable-libjack +FFMPEG_DEPENDENCIES += jack2 +else +FFMPEG_CONF_OPTS += --disable-libjack +endif + +ifeq ($(BR2_PACKAGE_LIBV4L),y) +FFMPEG_DEPENDENCIES += libv4l +FFMPEG_CONF_OPTS += --enable-libv4l2 +else +FFMPEG_CONF_OPTS += --disable-libv4l2 +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_FFPROBE),y) +FFMPEG_CONF_OPTS += --enable-ffprobe +else +FFMPEG_CONF_OPTS += --disable-ffprobe +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_XCBGRAB),y) +FFMPEG_CONF_OPTS += \ + --enable-libxcb \ + --enable-libxcb-shape \ + --enable-libxcb-shm \ + --enable-libxcb-xfixes +FFMPEG_DEPENDENCIES += libxcb +else +FFMPEG_CONF_OPTS += --disable-libxcb +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_POSTPROC),y) +FFMPEG_CONF_OPTS += --enable-postproc +else +FFMPEG_CONF_OPTS += --disable-postproc +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_SWSCALE),y) +FFMPEG_CONF_OPTS += --enable-swscale +else +FFMPEG_CONF_OPTS += --disable-swscale +endif + +ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_ENCODERS)),all) +FFMPEG_CONF_OPTS += --disable-encoders \ + $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_ENCODERS)),--enable-encoder=$(x)) +endif + +ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_DECODERS)),all) +FFMPEG_CONF_OPTS += --disable-decoders \ + $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_DECODERS)),--enable-decoder=$(x)) +endif + +ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_MUXERS)),all) +FFMPEG_CONF_OPTS += --disable-muxers \ + $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_MUXERS)),--enable-muxer=$(x)) +endif + +ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_DEMUXERS)),all) +FFMPEG_CONF_OPTS += --disable-demuxers \ + $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_DEMUXERS)),--enable-demuxer=$(x)) +endif + +ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_PARSERS)),all) +FFMPEG_CONF_OPTS += --disable-parsers \ + $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_PARSERS)),--enable-parser=$(x)) +endif + +ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_BSFS)),all) +FFMPEG_CONF_OPTS += --disable-bsfs \ + $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_BSFS)),--enable-bsf=$(x)) +endif + +ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_PROTOCOLS)),all) +FFMPEG_CONF_OPTS += --disable-protocols \ + $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_PROTOCOLS)),--enable-protocol=$(x)) +endif + +ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_FILTERS)),all) +FFMPEG_CONF_OPTS += --disable-filters \ + $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_FILTERS)),--enable-filter=$(x)) +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_INDEVS),y) +FFMPEG_CONF_OPTS += --enable-indevs +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +FFMPEG_CONF_OPTS += --enable-alsa +FFMPEG_DEPENDENCIES += alsa-lib +else +FFMPEG_CONF_OPTS += --disable-alsa +endif +else +FFMPEG_CONF_OPTS += --disable-indevs +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_OUTDEVS),y) +FFMPEG_CONF_OPTS += --enable-outdevs +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +FFMPEG_DEPENDENCIES += alsa-lib +endif +else +FFMPEG_CONF_OPTS += --disable-outdevs +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +FFMPEG_CONF_OPTS += --enable-pthreads +else +FFMPEG_CONF_OPTS += --disable-pthreads +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +FFMPEG_CONF_OPTS += --enable-zlib +FFMPEG_DEPENDENCIES += zlib +else +FFMPEG_CONF_OPTS += --disable-zlib +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +FFMPEG_CONF_OPTS += --enable-bzlib +FFMPEG_DEPENDENCIES += bzip2 +else +FFMPEG_CONF_OPTS += --disable-bzlib +endif + +ifeq ($(BR2_PACKAGE_FDK_AAC)$(BR2_PACKAGE_FFMPEG_NONFREE),yy) +FFMPEG_CONF_OPTS += --enable-libfdk-aac +FFMPEG_DEPENDENCIES += fdk-aac +else +FFMPEG_CONF_OPTS += --disable-libfdk-aac +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_GPL)$(BR2_PACKAGE_LIBCDIO_PARANOIA),yy) +FFMPEG_CONF_OPTS += --enable-libcdio +FFMPEG_DEPENDENCIES += libcdio-paranoia +else +FFMPEG_CONF_OPTS += --disable-libcdio +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +FFMPEG_CONF_OPTS += --enable-gnutls --disable-openssl +FFMPEG_DEPENDENCIES += gnutls +else +FFMPEG_CONF_OPTS += --disable-gnutls +ifeq ($(BR2_PACKAGE_OPENSSL),y) +# openssl isn't license compatible with GPL +ifeq ($(BR2_PACKAGE_FFMPEG_GPL)x$(BR2_PACKAGE_FFMPEG_NONFREE),yx) +FFMPEG_CONF_OPTS += --disable-openssl +else +FFMPEG_CONF_OPTS += --enable-openssl +FFMPEG_DEPENDENCIES += openssl +endif +else +FFMPEG_CONF_OPTS += --disable-openssl +endif +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_GPL)$(BR2_PACKAGE_LIBEBUR128),yy) +FFMPEG_DEPENDENCIES += libebur128 +endif + +ifeq ($(BR2_PACKAGE_LIBDRM),y) +FFMPEG_CONF_OPTS += --enable-libdrm +FFMPEG_DEPENDENCIES += libdrm +else +FFMPEG_CONF_OPTS += --disable-libdrm +endif + +ifeq ($(BR2_PACKAGE_LIBOPENH264),y) +FFMPEG_CONF_OPTS += --enable-libopenh264 +FFMPEG_DEPENDENCIES += libopenh264 +else +FFMPEG_CONF_OPTS += --disable-libopenh264 +endif + +ifeq ($(BR2_PACKAGE_LIBVORBIS),y) +FFMPEG_DEPENDENCIES += libvorbis +FFMPEG_CONF_OPTS += \ + --enable-libvorbis \ + --enable-muxer=ogg \ + --enable-encoder=libvorbis +endif + +ifeq ($(BR2_PACKAGE_LIBVA),y) +FFMPEG_CONF_OPTS += --enable-vaapi +FFMPEG_DEPENDENCIES += libva +else +FFMPEG_CONF_OPTS += --disable-vaapi +endif + +ifeq ($(BR2_PACKAGE_LIBVDPAU),y) +FFMPEG_CONF_OPTS += --enable-vdpau +FFMPEG_DEPENDENCIES += libvdpau +else +FFMPEG_CONF_OPTS += --disable-vdpau +endif + +ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) +FFMPEG_CONF_OPTS += --enable-omx --enable-omx-rpi \ + --extra-cflags=-I$(STAGING_DIR)/usr/include/IL +FFMPEG_DEPENDENCIES += rpi-userland +ifeq ($(BR2_arm),y) +FFMPEG_CONF_OPTS += --enable-mmal +else +FFMPEG_CONF_OPTS += --disable-mmal +endif +else +FFMPEG_CONF_OPTS += --disable-mmal --disable-omx --disable-omx-rpi +endif + +# To avoid a circular dependency only use opencv if opencv itself does +# not depend on ffmpeg. +ifeq ($(BR2_PACKAGE_OPENCV3_LIB_IMGPROC)x$(BR2_PACKAGE_OPENCV3_WITH_FFMPEG),yx) +FFMPEG_CONF_OPTS += --enable-libopencv +FFMPEG_DEPENDENCIES += opencv3 +else +FFMPEG_CONF_OPTS += --disable-libopencv +endif + +ifeq ($(BR2_PACKAGE_OPUS),y) +FFMPEG_CONF_OPTS += --enable-libopus +FFMPEG_DEPENDENCIES += opus +else +FFMPEG_CONF_OPTS += --disable-libopus +endif + +ifeq ($(BR2_PACKAGE_LIBVPX),y) +FFMPEG_CONF_OPTS += --enable-libvpx +FFMPEG_DEPENDENCIES += libvpx +else +FFMPEG_CONF_OPTS += --disable-libvpx +endif + +ifeq ($(BR2_PACKAGE_LIBASS),y) +FFMPEG_CONF_OPTS += --enable-libass +FFMPEG_DEPENDENCIES += libass +else +FFMPEG_CONF_OPTS += --disable-libass +endif + +ifeq ($(BR2_PACKAGE_LIBBLURAY),y) +FFMPEG_CONF_OPTS += --enable-libbluray +FFMPEG_DEPENDENCIES += libbluray +else +FFMPEG_CONF_OPTS += --disable-libbluray +endif + +ifeq ($(BR2_PACKAGE_LIBVPL),y) +FFMPEG_CONF_OPTS += --enable-libvpl --disable-libmfx +FFMPEG_DEPENDENCIES += libvpl +else ifeq ($(BR2_PACKAGE_INTEL_MEDIASDK),y) +FFMPEG_CONF_OPTS += --disable-libvpl --enable-libmfx +FFMPEG_DEPENDENCIES += intel-mediasdk +else +FFMPEG_CONF_OPTS += --disable-libvpl --disable-libmfx +endif + +ifeq ($(BR2_PACKAGE_RTMPDUMP),y) +FFMPEG_CONF_OPTS += --enable-librtmp +FFMPEG_DEPENDENCIES += rtmpdump +else +FFMPEG_CONF_OPTS += --disable-librtmp +endif + +ifeq ($(BR2_PACKAGE_LAME),y) +FFMPEG_CONF_OPTS += --enable-libmp3lame +FFMPEG_DEPENDENCIES += lame +else +FFMPEG_CONF_OPTS += --disable-libmp3lame +endif + +ifeq ($(BR2_PACKAGE_LIBMODPLUG),y) +FFMPEG_CONF_OPTS += --enable-libmodplug +FFMPEG_DEPENDENCIES += libmodplug +else +FFMPEG_CONF_OPTS += --disable-libmodplug +endif + +ifeq ($(BR2_PACKAGE_SPEEX),y) +FFMPEG_CONF_OPTS += --enable-libspeex +FFMPEG_DEPENDENCIES += speex +else +FFMPEG_CONF_OPTS += --disable-libspeex +endif + +ifeq ($(BR2_PACKAGE_LIBTHEORA),y) +FFMPEG_CONF_OPTS += --enable-libtheora +FFMPEG_DEPENDENCIES += libtheora +else +FFMPEG_CONF_OPTS += --disable-libtheora +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +FFMPEG_CONF_OPTS += --enable-iconv +FFMPEG_DEPENDENCIES += libiconv +else +FFMPEG_CONF_OPTS += --disable-iconv +endif + +# ffmpeg freetype support require fenv.h which is only +# available/working on glibc. +# The microblaze variant doesn't provide the needed exceptions +ifeq ($(BR2_PACKAGE_FREETYPE)$(BR2_TOOLCHAIN_USES_GLIBC)x$(BR2_microblaze),yyx) +FFMPEG_CONF_OPTS += --enable-libfreetype +FFMPEG_DEPENDENCIES += freetype +else +FFMPEG_CONF_OPTS += --disable-libfreetype +endif + +ifeq ($(BR2_PACKAGE_FONTCONFIG),y) +FFMPEG_CONF_OPTS += --enable-fontconfig +FFMPEG_DEPENDENCIES += fontconfig +else +FFMPEG_CONF_OPTS += --disable-fontconfig +endif + +ifeq ($(BR2_PACKAGE_OPENJPEG),y) +FFMPEG_CONF_OPTS += --enable-libopenjpeg +FFMPEG_DEPENDENCIES += openjpeg +else +FFMPEG_CONF_OPTS += --disable-libopenjpeg +endif + +ifeq ($(BR2_PACKAGE_X264)$(BR2_PACKAGE_FFMPEG_GPL),yy) +FFMPEG_CONF_OPTS += --enable-libx264 +FFMPEG_DEPENDENCIES += x264 +else +FFMPEG_CONF_OPTS += --disable-libx264 +endif + +ifeq ($(BR2_PACKAGE_X265)$(BR2_PACKAGE_FFMPEG_GPL),yy) +FFMPEG_CONF_OPTS += --enable-libx265 +FFMPEG_DEPENDENCIES += x265 +else +FFMPEG_CONF_OPTS += --disable-libx265 +endif + +ifeq ($(BR2_PACKAGE_DAV1D),y) +FFMPEG_CONF_OPTS += --enable-libdav1d +FFMPEG_DEPENDENCIES += dav1d +else +FFMPEG_CONF_OPTS += --disable-libdav1d +endif + +ifeq ($(BR2_X86_CPU_HAS_MMX),y) +FFMPEG_CONF_OPTS += --enable-x86asm +FFMPEG_DEPENDENCIES += host-nasm +else +FFMPEG_CONF_OPTS += --disable-x86asm +FFMPEG_CONF_OPTS += --disable-mmx +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE),y) +FFMPEG_CONF_OPTS += --enable-sse +else +FFMPEG_CONF_OPTS += --disable-sse +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE2),y) +FFMPEG_CONF_OPTS += --enable-sse2 +else +FFMPEG_CONF_OPTS += --disable-sse2 +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE3),y) +FFMPEG_CONF_OPTS += --enable-sse3 +else +FFMPEG_CONF_OPTS += --disable-sse3 +endif + +ifeq ($(BR2_X86_CPU_HAS_SSSE3),y) +FFMPEG_CONF_OPTS += --enable-ssse3 +else +FFMPEG_CONF_OPTS += --disable-ssse3 +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE4),y) +FFMPEG_CONF_OPTS += --enable-sse4 +else +FFMPEG_CONF_OPTS += --disable-sse4 +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE42),y) +FFMPEG_CONF_OPTS += --enable-sse42 +else +FFMPEG_CONF_OPTS += --disable-sse42 +endif + +ifeq ($(BR2_X86_CPU_HAS_AVX),y) +FFMPEG_CONF_OPTS += --enable-avx +else +FFMPEG_CONF_OPTS += --disable-avx +endif + +ifeq ($(BR2_X86_CPU_HAS_AVX2),y) +FFMPEG_CONF_OPTS += --enable-avx2 +else +FFMPEG_CONF_OPTS += --disable-avx2 +endif + +# Explicitly disable everything that doesn't match for ARM +# FFMPEG "autodetects" by compiling an extended instruction via AS +# This works on compilers that aren't built for generic by default +ifeq ($(BR2_ARM_CPU_ARMV4),y) +FFMPEG_CONF_OPTS += --disable-armv5te +endif +ifeq ($(BR2_ARM_CPU_ARMV6)$(BR2_ARM_CPU_ARMV7A),y) +FFMPEG_CONF_OPTS += --enable-armv6 +else +FFMPEG_CONF_OPTS += --disable-armv6 --disable-armv6t2 +endif +ifeq ($(BR2_ARM_CPU_HAS_VFPV2),y) +FFMPEG_CONF_OPTS += --enable-vfp +else +FFMPEG_CONF_OPTS += --disable-vfp +endif +ifeq ($(BR2_ARM_CPU_HAS_NEON),y) +FFMPEG_CONF_OPTS += --enable-neon +else ifeq ($(BR2_aarch64),y) +FFMPEG_CONF_OPTS += --enable-neon +else +FFMPEG_CONF_OPTS += --disable-neon +endif + +ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el),y) +ifeq ($(BR2_MIPS_SOFT_FLOAT),y) +FFMPEG_CONF_OPTS += --disable-mipsfpu +else +FFMPEG_CONF_OPTS += --enable-mipsfpu +endif + +# Fix build failure on several missing assembly instructions +FFMPEG_CONF_OPTS += --disable-asm +endif # MIPS + +ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC):$(BR2_powerpc64le),y:) +FFMPEG_CONF_OPTS += --enable-altivec +else ifeq ($(BR2_POWERPC_CPU_HAS_VSX):$(BR2_powerpc64le),y:y) +# On LE, ffmpeg AltiVec support needs VSX intrinsics, and VSX +# is an extension to AltiVec. +FFMPEG_CONF_OPTS += --enable-altivec +else +FFMPEG_CONF_OPTS += --disable-altivec +endif + +# Uses __atomic_fetch_add_4 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +FFMPEG_CONF_OPTS += --extra-libs=-latomic +endif + +ifeq ($(BR2_STATIC_LIBS),) +FFMPEG_CONF_OPTS += --enable-pic +else +FFMPEG_CONF_OPTS += --disable-pic +endif + +# Default to --cpu=generic for MIPS architecture, in order to avoid a +# warning from ffmpeg's configure script. +ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el),y) +FFMPEG_CONF_OPTS += --cpu=generic +else ifneq ($(GCC_TARGET_CPU),) +FFMPEG_CONF_OPTS += --cpu="$(GCC_TARGET_CPU)" +else ifneq ($(GCC_TARGET_ARCH),) +FFMPEG_CONF_OPTS += --cpu="$(GCC_TARGET_ARCH)" +endif + +FFMPEG_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +FFMPEG_CONF_OPTS += --disable-optimizations +FFMPEG_CFLAGS += -O0 +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y) +FFMPEG_CONF_OPTS += --disable-optimizations +FFMPEG_CFLAGS += -O0 +endif + +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +FFMPEG_CFLAGS += -marm +endif + +FFMPEG_CONF_ENV += CFLAGS="$(FFMPEG_CFLAGS)" +FFMPEG_CONF_OPTS += $(call qstrip,$(BR2_PACKAGE_FFMPEG_EXTRACONF)) + +# Override FFMPEG_CONFIGURE_CMDS: FFmpeg does not support --target and others +define FFMPEG_CONFIGURE_CMDS + (cd $(FFMPEG_SRCDIR) && rm -rf config.cache && \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + $(FFMPEG_CONF_ENV) \ + ./configure \ + --enable-cross-compile \ + --cross-prefix=$(TARGET_CROSS) \ + --sysroot=$(STAGING_DIR) \ + --host-cc="$(HOSTCC)" \ + --arch=$(BR2_ARCH) \ + --target-os="linux" \ + --disable-stripping \ + --pkg-config="$(PKG_CONFIG_HOST_BINARY)" \ + $(SHARED_STATIC_LIBS_OPTS) \ + $(FFMPEG_CONF_OPTS) \ + ) +endef + +define FFMPEG_REMOVE_EXAMPLE_SRC_FILES + rm -rf $(TARGET_DIR)/usr/share/ffmpeg/examples +endef +FFMPEG_POST_INSTALL_TARGET_HOOKS += FFMPEG_REMOVE_EXAMPLE_SRC_FILES + +$(eval $(autotools-package)) diff --git a/package/fft-eval/Config.in b/package/fft-eval/Config.in new file mode 100644 index 00000000..e979e7ae --- /dev/null +++ b/package/fft-eval/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_FFT_EVAL + bool "fft-eval" + help + Program to aid open source spectrum analyzer development for + Qualcomm/Atheros AR92xx and AR93xx based chipsets. + + It visualizes the FFT data reported by the chips to help + interpreting and understanding the data. + + Enable sdl2 and sdl2_ttf for the graphic output tool + fft_eval_sdl. + + https://github.com/simonwunderlich/FFT_eval diff --git a/package/fft-eval/fft-eval.hash b/package/fft-eval/fft-eval.hash new file mode 100644 index 00000000..a88bd0d7 --- /dev/null +++ b/package/fft-eval/fft-eval.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 2ab485df3489f82aee810794f154565a09fbb8c8ef22ee1c7b08ad8bce89bd51 fft-eval-777749c5c7cc0af1fe5a74e3c589581eabcf0f1e.tar.gz +sha256 6a573fb2f9082662978cf21fb153096df0a1981deaea7dbc10a11046fe005d9f LICENSES/CC0-1.0.txt +sha256 d1cf0896da7045d841fe45b0991cf35540bac1a17b5d11f4afcf8fcb950246b5 LICENSES/GPL-2.0-only.txt +sha256 797832eda5ff4360a10fee3be94a3250995e76423b79675c9c44204c37ca492d LICENSES/OFL-1.1.txt diff --git a/package/fft-eval/fft-eval.mk b/package/fft-eval/fft-eval.mk new file mode 100644 index 00000000..a79cbe3e --- /dev/null +++ b/package/fft-eval/fft-eval.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# fft-eval +# +################################################################################ + +FFT_EVAL_VERSION = 777749c5c7cc0af1fe5a74e3c589581eabcf0f1e +FFT_EVAL_SITE = $(call github,simonwunderlich,FFT_eval,$(FFT_EVAL_VERSION)) +FFT_EVAL_LICENSE = CC0-1.0 (doc), GPL-2.0, OFL-1.1 (LiberationSans-Regular.ttf) +FFT_EVAL_LICENSE_FILES = \ + LICENSES/CC0-1.0.txt \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/OFL-1.1.txt + +FFT_EVAL_CONV_OPTS = CONFIG_fft_eval_json=y + +ifeq ($(BR2_PACKAGE_SDL2)$(BR2_PACKAGE_SDL2_TTF),yy) +FFT_EVAL_CONV_OPTS += CONFIG_fft_eval_sdl=y +FFT_EVAL_DEPENDENCIES += sdl2 sdl2_ttf +else +FFT_EVAL_CONV_OPTS += CONFIG_fft_eval_sdl=n +endif + +define FFT_EVAL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + CROSS=$(STAGING_DIR)/usr/bin/ $(FFT_EVAL_CONV_OPTS) -C $(@D) all +endef + +define FFT_EVAL_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + CROSS=$(STAGING_DIR)/usr/bin/ $(FFT_EVAL_CONV_OPTS) \ + -C $(@D) DESTDIR=$(TARGET_DIR) BINDIR=/usr/bin install +endef + +$(eval $(generic-package)) diff --git a/package/fftw/Config.in b/package/fftw/Config.in new file mode 100644 index 00000000..69dc6559 --- /dev/null +++ b/package/fftw/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_FFTW + bool "fftw" + select BR2_PACKAGE_FFTW_DOUBLE if !BR2_PACKAGE_FFTW_SINGLE \ + && !BR2_PACKAGE_FFTW_LONG_DOUBLE && !BR2_PACKAGE_FFTW_QUAD + help + Library for computing Fast Fourier Transforms. + + This library computes Fast Fourier Transforms (FFT) in one + or more dimensions. It is extremely fast. This package + contains the shared library version of the fftw libraries in + double precision. + + http://www.fftw.org + +if BR2_PACKAGE_FFTW + +source "package/fftw/fftw-single/Config.in" +source "package/fftw/fftw-double/Config.in" +source "package/fftw/fftw-long-double/Config.in" +source "package/fftw/fftw-quad/Config.in" + +config BR2_PACKAGE_FFTW_FAST + bool "optimise for speed over accuracy" + help + Optimise for fast math functions, at the expense of accuracy. + + Say 'y' if you need speed and can live with inaccuracies in + the results. Say 'n' (the default) if accuracy is of utmost + importance. + + This basically uses gcc's -Ofast optimisation level, which in + turn is basically using gcc's -ffast-math. See the gcc manual + for what this means. + +endif diff --git a/package/fftw/fftw-double/Config.in b/package/fftw/fftw-double/Config.in new file mode 100644 index 00000000..cfcd1ef9 --- /dev/null +++ b/package/fftw/fftw-double/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_FFTW_DOUBLE + bool "fftw-double" + help + Compile fftw in double precision (the default), i.e. use + 'double' for floating point type. diff --git a/package/fftw/fftw-double/fftw-double.hash b/package/fftw/fftw-double/fftw-double.hash new file mode 120000 index 00000000..3ee7ecb3 --- /dev/null +++ b/package/fftw/fftw-double/fftw-double.hash @@ -0,0 +1 @@ +../fftw.hash \ No newline at end of file diff --git a/package/fftw/fftw-double/fftw-double.mk b/package/fftw/fftw-double/fftw-double.mk new file mode 100644 index 00000000..4bacb26e --- /dev/null +++ b/package/fftw/fftw-double/fftw-double.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# fftw-double +# +################################################################################ + +FFTW_DOUBLE_VERSION = $(FFTW_VERSION) +FFTW_DOUBLE_SOURCE = fftw-$(FFTW_VERSION).tar.gz +FFTW_DOUBLE_SITE = $(FFTW_SITE) +FFTW_DOUBLE_DL_SUBDIR = fftw +FFTW_DOUBLE_INSTALL_STAGING = $(FFTW_INSTALL_STAGING) +FFTW_DOUBLE_LICENSE = $(FFTW_LICENSE) +FFTW_DOUBLE_LICENSE_FILES = $(FFTW_LICENSE_FILES) + +FFTW_DOUBLE_CONF_ENV = $(FFTW_COMMON_CONF_ENV) + +FFTW_DOUBLE_CONF_OPTS = \ + $(FFTW_COMMON_CONF_OPTS) \ + CFLAGS="$(FFTW_COMMON_CFLAGS)" \ + $(if $(BR2_X86_CPU_HAS_SSE2),--enable,--disable)-sse2 + +$(eval $(autotools-package)) diff --git a/package/fftw/fftw-long-double/Config.in b/package/fftw/fftw-long-double/Config.in new file mode 100644 index 00000000..3ee17628 --- /dev/null +++ b/package/fftw/fftw-long-double/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_FFTW_LONG_DOUBLE + bool "fftw-long-double" + # long-double precision require long-double trigonometric routines + depends on !(BR2_TOOLCHAIN_USES_UCLIBC && \ + (BR2_arm || BR2_mips || BR2_mipsel)) + help + Compile fftw in long double precision, i.e. use 'long double' + for floating point type. diff --git a/package/fftw/fftw-long-double/fftw-long-double.hash b/package/fftw/fftw-long-double/fftw-long-double.hash new file mode 120000 index 00000000..3ee7ecb3 --- /dev/null +++ b/package/fftw/fftw-long-double/fftw-long-double.hash @@ -0,0 +1 @@ +../fftw.hash \ No newline at end of file diff --git a/package/fftw/fftw-long-double/fftw-long-double.mk b/package/fftw/fftw-long-double/fftw-long-double.mk new file mode 100644 index 00000000..17305044 --- /dev/null +++ b/package/fftw/fftw-long-double/fftw-long-double.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# fftw-long-double +# +################################################################################ + +FFTW_LONG_DOUBLE_VERSION = $(FFTW_VERSION) +FFTW_LONG_DOUBLE_SOURCE = fftw-$(FFTW_VERSION).tar.gz +FFTW_LONG_DOUBLE_SITE = $(FFTW_SITE) +FFTW_LONG_DOUBLE_DL_SUBDIR = fftw +FFTW_LONG_DOUBLE_INSTALL_STAGING = $(FFTW_INSTALL_STAGING) +FFTW_LONG_DOUBLE_LICENSE = $(FFTW_LICENSE) +FFTW_LONG_DOUBLE_LICENSE_FILES = $(FFTW_LICENSE_FILES) + +FFTW_LONG_DOUBLE_CONF_ENV = $(FFTW_COMMON_CONF_ENV) + +FFTW_LONG_DOUBLE_CONF_OPTS = \ + $(FFTW_COMMON_CONF_OPTS) \ + CFLAGS="$(FFTW_COMMON_CFLAGS)" \ + --enable-long-double + +$(eval $(autotools-package)) diff --git a/package/fftw/fftw-quad/Config.in b/package/fftw/fftw-quad/Config.in new file mode 100644 index 00000000..10d296df --- /dev/null +++ b/package/fftw/fftw-quad/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_FFTW_QUAD + bool "fftw-quad" + # quad-precision needs to have a gcc with libquadmath + depends on BR2_TOOLCHAIN_HAS_LIBQUADMATH && BR2_USE_WCHAR + help + Compile fftw in quadruple precision, i.e. use '__float128' for + floating point type. diff --git a/package/fftw/fftw-quad/fftw-quad.hash b/package/fftw/fftw-quad/fftw-quad.hash new file mode 120000 index 00000000..3ee7ecb3 --- /dev/null +++ b/package/fftw/fftw-quad/fftw-quad.hash @@ -0,0 +1 @@ +../fftw.hash \ No newline at end of file diff --git a/package/fftw/fftw-quad/fftw-quad.mk b/package/fftw/fftw-quad/fftw-quad.mk new file mode 100644 index 00000000..5ff79b1d --- /dev/null +++ b/package/fftw/fftw-quad/fftw-quad.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# fftw-quad +# +################################################################################ + +FFTW_QUAD_VERSION = $(FFTW_VERSION) +FFTW_QUAD_SOURCE = fftw-$(FFTW_VERSION).tar.gz +FFTW_QUAD_SITE = $(FFTW_SITE) +FFTW_QUAD_DL_SUBDIR = fftw +FFTW_QUAD_INSTALL_STAGING = $(FFTW_INSTALL_STAGING) +FFTW_QUAD_LICENSE = $(FFTW_LICENSE) +FFTW_QUAD_LICENSE_FILES = $(FFTW_LICENSE_FILES) + +FFTW_QUAD_CONF_ENV = $(FFTW_COMMON_CONF_ENV) + +FFTW_QUAD_CONF_OPTS = \ + $(FFTW_COMMON_CONF_OPTS) \ + CFLAGS="$(FFTW_COMMON_CFLAGS)" \ + --enable-quad-precision + +$(eval $(autotools-package)) diff --git a/package/fftw/fftw-single/Config.in b/package/fftw/fftw-single/Config.in new file mode 100644 index 00000000..ff148687 --- /dev/null +++ b/package/fftw/fftw-single/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_FFTW_SINGLE + bool "fftw-single" + help + Compile fftw in single precision, i.e. use 'float' + for floating point type. diff --git a/package/fftw/fftw-single/fftw-single.hash b/package/fftw/fftw-single/fftw-single.hash new file mode 120000 index 00000000..3ee7ecb3 --- /dev/null +++ b/package/fftw/fftw-single/fftw-single.hash @@ -0,0 +1 @@ +../fftw.hash \ No newline at end of file diff --git a/package/fftw/fftw-single/fftw-single.mk b/package/fftw/fftw-single/fftw-single.mk new file mode 100644 index 00000000..1e26ff7a --- /dev/null +++ b/package/fftw/fftw-single/fftw-single.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# fftw-single +# +################################################################################ + +FFTW_SINGLE_VERSION = $(FFTW_VERSION) +FFTW_SINGLE_SOURCE = fftw-$(FFTW_VERSION).tar.gz +FFTW_SINGLE_SITE = $(FFTW_SITE) +FFTW_SINGLE_DL_SUBDIR = fftw +FFTW_SINGLE_INSTALL_STAGING = $(FFTW_INSTALL_STAGING) +FFTW_SINGLE_LICENSE = $(FFTW_LICENSE) +FFTW_SINGLE_LICENSE_FILES = $(FFTW_LICENSE_FILES) + +FFTW_SINGLE_CONF_ENV = $(FFTW_COMMON_CONF_ENV) + +FFTW_SINGLE_CONF_OPTS = \ + $(FFTW_COMMON_CONF_OPTS) \ + CFLAGS="$(FFTW_SINGLE_CFLAGS)" \ + --enable-single + +FFTW_SINGLE_CFLAGS = $(FFTW_COMMON_CFLAGS) + +# x86 optimisations +FFTW_SINGLE_CONF_OPTS += \ + $(if $(BR2_X86_CPU_HAS_SSE),--enable,--disable)-sse \ + $(if $(BR2_X86_CPU_HAS_SSE2),--enable,--disable)-sse2 + +# ARM optimisations +ifeq ($(BR2_ARM_CPU_HAS_NEON):$(BR2_ARM_SOFT_FLOAT),y:) +FFTW_SINGLE_CONF_OPTS += --enable-neon +FFTW_SINGLE_CFLAGS += -mfpu=neon +else +FFTW_SINGLE_CONF_OPTS += --disable-neon +endif + +$(eval $(autotools-package)) diff --git a/package/fftw/fftw.hash b/package/fftw/fftw.hash new file mode 100644 index 00000000..9e7364d7 --- /dev/null +++ b/package/fftw/fftw.hash @@ -0,0 +1,5 @@ +# From http://fftw.org/fftw-3.3.10.tar.gz.md5sum +md5 8ccbf6a5ea78a16dbc3e1306e234cc5c fftw-3.3.10.tar.gz +# Locally computed +sha256 56c932549852cddcfafdab3820b0200c7742675be92179e59e6215b340e26467 fftw-3.3.10.tar.gz +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/package/fftw/fftw.mk b/package/fftw/fftw.mk new file mode 100644 index 00000000..1bb537ae --- /dev/null +++ b/package/fftw/fftw.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# fftw +# +################################################################################ + +FFTW_VERSION = 3.3.10 +FFTW_SITE = http://www.fftw.org +FFTW_INSTALL_STAGING = YES +FFTW_LICENSE = GPL-2.0+ +FFTW_LICENSE_FILES = COPYING + +# fortran support only enables generation and installation of fortran sources +ifeq ($(BR2_TOOLCHAIN_HAS_FORTRAN),y) +FFTW_COMMON_CONF_OPTS += --enable-fortran +FFTW_COMMON_CONF_ENV += FLIBS="-lgfortran -lm" +else +FFTW_COMMON_CONF_OPTS += --disable-fortran +endif + +FFTW_COMMON_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_PACKAGE_FFTW_FAST),y) +FFTW_COMMON_CFLAGS += -O3 -ffast-math +endif + +# Generic optimisations +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +FFTW_COMMON_CONF_OPTS += --enable-threads +FFTW_COMMON_CONF_OPTS += $(if $(BR2_TOOLCHAIN_HAS_OPENMP),--without,--with)-combined-threads +else +FFTW_COMMON_CONF_OPTS += --disable-threads +endif +FFTW_COMMON_CONF_OPTS += $(if $(BR2_TOOLCHAIN_HAS_OPENMP),--enable,--disable)-openmp + +include $(sort $(wildcard package/fftw/*/*.mk)) diff --git a/package/ficl/0001-fix-Makefile.patch b/package/ficl/0001-fix-Makefile.patch new file mode 100644 index 00000000..d5a25c43 --- /dev/null +++ b/package/ficl/0001-fix-Makefile.patch @@ -0,0 +1,47 @@ +fix dependency in Makefiles + +there is no longer a sysdep.h file. + +Signed-off-by: Francois Perrad + +diff --git a/Makefile b/Makefile +index 976d00a..7f73c44 100644 +--- a/Makefile ++++ b/Makefile +@@ -29,7 +29,7 @@ libficl.so.$(MAJOR).$(MINOR): $(OBJECTS) + -o libficl.so.$(MAJOR).$(MINOR) $(OBJECTS) + ln -sf libficl.so.$(MAJOR).$(MINOR) libficl.so + +-main: main.o ficl.h sysdep.h libficl.so.$(MAJOR).$(MINOR) ++main: main.o ficl.h libficl.so.$(MAJOR).$(MINOR) + $(CC) $(CFLAGS) $(LDFLAGS) main.o -o main -L. -lficl -lm + ln -sf libficl.so.$(MAJOR).$(MINOR) libficl.so.$(MAJOR) + +diff --git a/Makefile.ansi b/Makefile.ansi +index e510fcd..170e6eb 100644 +--- a/Makefile.ansi ++++ b/Makefile.ansi +@@ -29,7 +29,7 @@ libficl.so.$(MAJOR).$(MINOR): $(OBJECTS) + -o libficl.so.$(MAJOR).$(MINOR) $(OBJECTS) + ln -sf libficl.so.$(MAJOR).$(MINOR) libficl.so + +-main: main.o ficl.h sysdep.h libficl.so.$(MAJOR).$(MINOR) ++main: main.o ficl.h libficl.so.$(MAJOR).$(MINOR) + $(CC) main.o -o main -L. -lficl -lm + ln -sf libficl.so.$(MAJOR).$(MINOR) libficl.so.$(MAJOR) + +diff --git a/Makefile.linux b/Makefile.linux +index d447e7e..7f2cdfe 100644 +--- a/Makefile.linux ++++ b/Makefile.linux +@@ -29,7 +29,7 @@ libficl.so.$(MAJOR).$(MINOR): $(OBJECTS) + -o libficl.so.$(MAJOR).$(MINOR) $(OBJECTS) + ln -sf libficl.so.$(MAJOR).$(MINOR) libficl.so + +-main: main.o ficl.h sysdep.h libficl.so.$(MAJOR).$(MINOR) ++main: main.o ficl.h libficl.so.$(MAJOR).$(MINOR) + $(CC) main.o -o main -L. -lficl -lm + ln -sf libficl.so.$(MAJOR).$(MINOR) libficl.so.$(MAJOR) + +-- + diff --git a/package/ficl/0002-Makefile.linux-pass-LDFLAGS.patch b/package/ficl/0002-Makefile.linux-pass-LDFLAGS.patch new file mode 100644 index 00000000..dd9e1641 --- /dev/null +++ b/package/ficl/0002-Makefile.linux-pass-LDFLAGS.patch @@ -0,0 +1,36 @@ +From 33b16f2c4f996a98c3bbbec9af542d020ac276fa Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 9 Aug 2022 23:53:06 +0200 +Subject: [PATCH] Makefile.linux: pass LDFLAGS + +Pass LDFLAGS to avoid the following musl static build failure: + +/home/autobuild/autobuild/instance-5/output-1/host/lib/gcc/sh4eb-buildroot-linux-musl/11.3.0/../../../../sh4eb-buildroot-linux-musl/bin/ld: /home/autobuild/autobuild/instance-5/output-1/host/lib/gcc/sh4eb-buildroot-linux-musl/11.3.0/libgcc.a(unwind-dw2.o): in function `size_of_encoded_value': +/home/autobuild/autobuild/instance-5/output-1/build/host-gcc-final-11.3.0/build/sh4eb-buildroot-linux-musl/libgcc/../../../libgcc/unwind-pe.h:89: undefined reference to `abort' + +Fixes: + - http://autobuild.buildroot.org/results/bf041723ed813746c61892262630a3ac2bc43b14 + +Signed-off-by: Fabrice Fontaine +Upstream: upstream is dead +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + Makefile.linux | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.linux b/Makefile.linux +index 5f1a41f..df887e6 100644 +--- a/Makefile.linux ++++ b/Makefile.linux +@@ -14,6 +14,6 @@ MINOR = 1.0 + + ficl: main.o $(HEADERS) libficl.a +- $(CC) main.o -o ficl -L. -lficl -lm ++ $(CC) $(LDFLAGS) main.o -o ficl -L. -lficl -lm + + lib: libficl.so.$(MAJOR).$(MINOR) + +-- +2.35.1 + diff --git a/package/ficl/Config.in b/package/ficl/Config.in new file mode 100644 index 00000000..4d9ab4a5 --- /dev/null +++ b/package/ficl/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_FICL + bool "ficl" + help + Ficl is a programming language interpreter designed to be + embedded into other systems as a command, macro, and + development prototyping language. + Ficl is an acronym for "Forth Inspired Command Language". + + http://ficl.sourceforge.net diff --git a/package/ficl/ficl.hash b/package/ficl/ficl.hash new file mode 100644 index 00000000..df53c843 --- /dev/null +++ b/package/ficl/ficl.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 4daf74f3d3d6f8b86ea7cb47bc24931d50b4809b50ba34ca32e0ca1e972bd3a3 ficl-4.1.0.tar.gz +sha256 1d1dd1f1cde52e8b607c5ccb6a2e5de878fd1719b8c5a4d31b9cdb343c203d0d ReadMe.txt diff --git a/package/ficl/ficl.mk b/package/ficl/ficl.mk new file mode 100644 index 00000000..af900fa2 --- /dev/null +++ b/package/ficl/ficl.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# ficl +# +################################################################################ + +FICL_VERSION_MAJOR = 4.1 +FICL_VERSION = $(FICL_VERSION_MAJOR).0 +FICL_SITE = http://downloads.sourceforge.net/project/ficl/ficl-all/ficl$(FICL_VERSION_MAJOR) +FICL_LICENSE = BSD-2-Clause +FICL_LICENSE_FILES = ReadMe.txt +FICL_INSTALL_STAGING = YES + +ifeq ($(BR2_STATIC_LIBS),y) +FICL_BUILD_TARGETS += ficl +define FICL_INSTALL_STATIC_BIN + $(INSTALL) -D -m 0755 $(@D)/ficl $(TARGET_DIR)/usr/bin/ficl +endef +endif + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +FICL_BUILD_TARGETS += libficl.a +define FICL_INSTALL_STATIC_LIB + $(INSTALL) -D -m 0644 $(@D)/libficl.a $(STAGING_DIR)/usr/lib/libficl.a +endef +endif + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +FICL_BUILD_TARGETS += main libficl.so.$(FICL_VERSION) +define FICL_INSTALL_SHARED_BIN + $(INSTALL) -D -m 0755 $(@D)/main $(TARGET_DIR)/usr/bin/ficl +endef +define FICL_INSTALL_SHARED_LIB + $(INSTALL) -D -m 0755 $(@D)/libficl.so.$(FICL_VERSION) $(1)/usr/lib/libficl.so.$(FICL_VERSION) + ln -sf libficl.so.$(FICL_VERSION) $(1)/usr/lib/libficl.so.4 + ln -sf libficl.so.$(FICL_VERSION) $(1)/usr/lib/libficl.so +endef +endif + +define FICL_BUILD_CMDS + $(MAKE) -C $(@D) -f Makefile.linux $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) -fgnu89-inline -fPIC -I. -Dlinux" CPPFLAGS="" $(FICL_BUILD_TARGETS) +endef + +define FICL_INSTALL_STAGING_CMDS + $(FICL_INSTALL_STATIC_LIB) + $(call FICL_INSTALL_SHARED_LIB,$(STAGING_DIR)) + $(INSTALL) -D -m 0644 $(@D)/ficl.h $(STAGING_DIR)/usr/include/ficl.h + $(INSTALL) -D -m 0644 $(@D)/ficllocal.h $(STAGING_DIR)/usr/include/ficllocal.h + $(INSTALL) -D -m 0644 $(@D)/ficlplatform/unix.h $(STAGING_DIR)/usr/include/ficlplatform/unix.h +endef + +define FICL_INSTALL_TARGET_CMDS + $(FICL_INSTALL_STATIC_BIN) + $(FICL_INSTALL_SHARED_BIN) + $(call FICL_INSTALL_SHARED_LIB,$(TARGET_DIR)) +endef + +$(eval $(generic-package)) diff --git a/package/file/Config.in b/package/file/Config.in new file mode 100644 index 00000000..edc4d874 --- /dev/null +++ b/package/file/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_FILE + bool "file" + help + Program to identify a file's format by scanning binary data + for known patterns. + + http://www.darwinsys.com/file/ diff --git a/package/file/file.hash b/package/file/file.hash new file mode 100644 index 00000000..7c15569c --- /dev/null +++ b/package/file/file.hash @@ -0,0 +1,7 @@ +# Locally calculated after verifying signature +# https://astron.com/pub/file/file-5.45.tar.gz.asc +# using key BE04995BA8F90ED0C0C176C471112AB16CB33B3A +sha256 fc97f51029bb0e2c9f4e3bffefdaf678f0e039ee872b9de5c002a6d09c784d82 file-5.45.tar.gz +sha256 0bfa856a9930bddadbef95d1be1cf4e163c0be618e76ea3275caaf255283e274 COPYING +sha256 4ccb60d623884ef637af4a5bc16b2cb350163e2135e967655837336019a64462 src/mygetopt.h +sha256 2e14b6fa9a74f952ebfde3c96527158df281c953cfaf35609eb854d4da30131c src/vasprintf.c diff --git a/package/file/file.mk b/package/file/file.mk new file mode 100644 index 00000000..27d9181d --- /dev/null +++ b/package/file/file.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# file +# +################################################################################ + +FILE_VERSION = 5.45 +FILE_SITE = https://astron.com/pub/file +FILE_LICENSE = BSD-2-Clause, BSD-4-Clause (one file), BSD-3-Clause (one file) +FILE_LICENSE_FILES = COPYING src/mygetopt.h src/vasprintf.c +FILE_CPE_ID_VALID = YES + +FILE_AUTORECONF = YES + +FILE_DEPENDENCIES = host-file +FILE_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' +FILE_INSTALL_STAGING = YES + +HOST_FILE_DEPENDENCIES = host-zlib +HOST_FILE_CONF_OPTS = --disable-libseccomp +HOST_FILE_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' + +ifeq ($(BR2_PACKAGE_BZIP2),y) +FILE_CONF_OPTS += --enable-bzlib +FILE_DEPENDENCIES += bzip2 +else +FILE_CONF_OPTS += --disable-bzlib +endif + +ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) +FILE_CONF_OPTS += --enable-libseccomp +FILE_DEPENDENCIES += libseccomp +else +FILE_CONF_OPTS += --disable-libseccomp +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +FILE_CONF_OPTS += --enable-xzlib +FILE_DEPENDENCIES += xz +else +FILE_CONF_OPTS += --disable-xzlib +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +FILE_CONF_OPTS += --enable-zlib +FILE_DEPENDENCIES += zlib +else +FILE_CONF_OPTS += --disable-zlib +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/filemq/Config.in b/package/filemq/Config.in new file mode 100644 index 00000000..b4720c1d --- /dev/null +++ b/package/filemq/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_FILEMQ + bool "filemq" + depends on BR2_INSTALL_LIBSTDCPP # zeromq + depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq + depends on BR2_USE_MMU # czmq + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_CZMQ + select BR2_PACKAGE_ZEROMQ + help + FileMQ is a publish-subscribe file service based on 0MQ. + + http://github.com/zeromq/filemq + +comment "filemq needs a toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) diff --git a/package/filemq/filemq.hash b/package/filemq/filemq.hash new file mode 100644 index 00000000..cf81eb4f --- /dev/null +++ b/package/filemq/filemq.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 bdec8584a181e1c9a1d9be567768bcf8c3f7132ea701dd1829f74370c6536991 filemq-af4768dcaf2fcb8083a32bad107a22ecb7a5d954.tar.gz +sha256 60222c28c1a7f6a92c7df98e5c5f4459e624e6e285e0b9b94467af5f6ab3343d LICENSE diff --git a/package/filemq/filemq.mk b/package/filemq/filemq.mk new file mode 100644 index 00000000..665d6da2 --- /dev/null +++ b/package/filemq/filemq.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# filemq +# +################################################################################ + +FILEMQ_VERSION = af4768dcaf2fcb8083a32bad107a22ecb7a5d954 +FILEMQ_SITE = $(call github,zeromq,filemq,$(FILEMQ_VERSION)) + +FILEMQ_AUTORECONF = YES +FILEMQ_CONF_ENV = filemq_have_asciidoc=no +FILEMQ_INSTALL_STAGING = YES +FILEMQ_DEPENDENCIES = czmq openssl zeromq +FILEMQ_LICENSE = MPL-2.0 +FILEMQ_LICENSE_FILES = LICENSE + +define FILEMQ_CREATE_CONFIG_DIR + mkdir -p $(@D)/config +endef + +FILEMQ_POST_PATCH_HOOKS += FILEMQ_CREATE_CONFIG_DIR + +$(eval $(autotools-package)) diff --git a/package/findutils/Config.in b/package/findutils/Config.in new file mode 100644 index 00000000..b0eee5a6 --- /dev/null +++ b/package/findutils/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_FINDUTILS + bool "findutils" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + Basic directory searching utilities. Provides the + common 'find', 'xargs', 'locate', and 'updatedb' binaries. + + http://www.gnu.org/software/findutils/findutils.html + +comment "findutils needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/package/findutils/findutils.hash b/package/findutils/findutils.hash new file mode 100644 index 00000000..0284c0e7 --- /dev/null +++ b/package/findutils/findutils.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +sha256 a2bfb8c09d436770edc59f50fa483e785b161a3b7b9d547573cb08065fd462fe findutils-4.9.0.tar.xz + +# Hash for license file +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 COPYING diff --git a/package/findutils/findutils.mk b/package/findutils/findutils.mk new file mode 100644 index 00000000..9731a350 --- /dev/null +++ b/package/findutils/findutils.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# findutils +# +################################################################################ + +FINDUTILS_VERSION = 4.9.0 +FINDUTILS_SOURCE = findutils-$(FINDUTILS_VERSION).tar.xz +FINDUTILS_SITE = $(BR2_GNU_MIRROR)/findutils +FINDUTILS_LICENSE = GPL-3.0+ +FINDUTILS_LICENSE_FILES = COPYING +FINDUTILS_CPE_ID_VENDOR = gnu +FINDUTILS_CONF_ENV = \ + gl_cv_func_stdin=yes \ + ac_cv_func_working_mktime=yes \ + gl_cv_func_wcwidth_works=yes + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +FINDUTILS_DEPENDENCIES += libselinux +FINDUTILS_CONF_OPTS += --with-selinux +else +FINDUTILS_CONF_OPTS += --without-selinux +endif + +$(eval $(autotools-package)) diff --git a/package/fio/Config.in b/package/fio/Config.in new file mode 100644 index 00000000..7825209b --- /dev/null +++ b/package/fio/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_FIO + bool "fio" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C11/stdatomic.h + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_TOOLCHAIN_HAS_THREADS + # fio uses fallocate() which becomes fallocate64() while compiling with + # largefile support, but fallocate64() is not available on nios2 + depends on !BR2_nios2 + help + fio is an I/O tool meant to be used both for benchmark + and stress/hardware verification. + + http://git.kernel.dk/?p=fio.git;a=summary + +comment "fio needs a toolchain w/ dynamic library, threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_nios2 + depends on BR2_USE_MMU diff --git a/package/fio/fio.hash b/package/fio/fio.hash new file mode 100644 index 00000000..7f7e12f9 --- /dev/null +++ b/package/fio/fio.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 49f340ef51dbb7942d598abd2b8ad93ce7934ca709f73ba13519568556f9089f fio-3.34.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 8a240c1ad13d1fe3e58588643d81d0695899be4a669fe6d8fafa76ca6a89db2c MORAL-LICENSE diff --git a/package/fio/fio.mk b/package/fio/fio.mk new file mode 100644 index 00000000..f6e7b036 --- /dev/null +++ b/package/fio/fio.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# fio +# +################################################################################ + +FIO_VERSION = 3.34 +FIO_SITE = http://brick.kernel.dk/snaps +FIO_LICENSE = GPL-2.0 +FIO_LICENSE_FILES = COPYING MORAL-LICENSE + +FIO_OPTS = --disable-native --cc="$(TARGET_CC)" --extra-cflags="$(TARGET_CFLAGS)" + +ifeq ($(BR2_PACKAGE_LIBAIO),y) +FIO_DEPENDENCIES += libaio +endif + +ifeq ($(BR2_PACKAGE_LIBNFS),y) +FIO_DEPENDENCIES += libnfs +endif + +ifeq ($(BR2_PACKAGE_LIBISCSI),y) +FIO_OPTS += --enable-libiscsi +FIO_DEPENDENCIES += host-pkgconf libiscsi +endif + +ifeq ($(BR2_PACKAGE_NUMACTL),y) +FIO_DEPENDENCIES += numactl +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +FIO_DEPENDENCIES += zlib +endif + +define FIO_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) ./configure $(FIO_OPTS)) +endef + +define FIO_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define FIO_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/fio $(TARGET_DIR)/usr/bin/fio +endef + +$(eval $(generic-package)) diff --git a/package/firewalld/Config.in b/package/firewalld/Config.in new file mode 100644 index 00000000..cc8411b3 --- /dev/null +++ b/package/firewalld/Config.in @@ -0,0 +1,40 @@ +config BR2_PACKAGE_FIREWALLD + bool "firewalld" + depends on BR2_USE_MMU # gobject-introspection, python3, python-gobject + depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS + depends on BR2_USE_WCHAR # glib2, dbus-python, nftables, python3 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # gobject-introspection + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus-python, python3 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + depends on BR2_TOOLCHAIN_USES_GLIBC # gobject-introspection + depends on BR2_HOST_GCC_AT_LEAST_8 # gobject-introspection + depends on !BR2_STATIC_LIBS # python3 + select BR2_PACKAGE_DBUS # dbus-python + select BR2_PACKAGE_DBUS_PYTHON + select BR2_PACKAGE_GOBJECT_INTROSPECTION + select BR2_PACKAGE_JANSSON # Uses the nftables json interface + select BR2_PACKAGE_NFTABLES + select BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_GOBJECT + help + Firewalld provides a dynamically managed firewall with + support for network or firewall zones to define the trust + level of network connections or interfaces. It has support + for IPv4, IPv6 firewall settings and for ethernet bridges and + a separation of runtime and permanent configuration options. + It also provides an interface for services or applications to + add ip*tables and ebtables rules directly. + + Note: Firewalld uses nftables as the backend and requires + kernel version >= 5.3. + + https://github.com/firewalld/firewalld + +comment "firewalld needs a glibc toolchain w/ wchar, dynamic library, headers >= 3.12, gcc >= 4.9, host gcc >= 8" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 || \ + !BR2_USE_WCHAR || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_HOST_GCC_AT_LEAST_8 || BR2_STATIC_LIBS diff --git a/package/firewalld/S46firewalld b/package/firewalld/S46firewalld new file mode 100644 index 00000000..40f43e1f --- /dev/null +++ b/package/firewalld/S46firewalld @@ -0,0 +1,66 @@ +#!/bin/sh + +DAEMON=firewalld +PIDFILE=/var/run/$DAEMON.pid + +start() { + printf "Starting firewalld: " + start-stop-daemon -S -q --exec $DAEMON + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi +} +stop() { + printf "Stopping firewalld: " + start-stop-daemon --stop --quiet --pidfile $PIDFILE + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi +} + +reload(){ + printf "Reloading firewalld: " + firewall-cmd --reload + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi +} + +restart() { + stop + start +} + +status(){ + firewall-cmd --state +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + restart + ;; + reload) + reload + ;; + status) + status + ;; + *) + echo "Usage: $0 {start|stop|restart|reload|status}" + exit 1 +esac diff --git a/package/firewalld/firewalld.hash b/package/firewalld/firewalld.hash new file mode 100644 index 00000000..cbd4c768 --- /dev/null +++ b/package/firewalld/firewalld.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 1433247299367f707279d50e0759ed27fbcc9bb973b7b2131e8cee96e006d96e firewalld-2.0.2.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/firewalld/firewalld.mk b/package/firewalld/firewalld.mk new file mode 100644 index 00000000..eae8afc2 --- /dev/null +++ b/package/firewalld/firewalld.mk @@ -0,0 +1,263 @@ +################################################################################ +# +# firewalld +# +################################################################################ + +FIREWALLD_VERSION = 2.0.2 +FIREWALLD_SITE = $(call github,firewalld,firewalld,v$(FIREWALLD_VERSION)) +FIREWALLD_LICENSE = GPL-2.0 +FIREWALLD_LICENSE_FILES = COPYING +FIREWALLD_CPE_ID_VENDOR = firewalld +FIREWALLD_AUTORECONF = YES + +FIREWALLD_DEPENDENCIES = \ + host-intltool \ + host-libglib2 \ + host-libxml2 \ + host-libxslt \ + dbus-python \ + gobject-introspection \ + jansson \ + nftables \ + python3 \ + python-gobject + +FIREWALLD_SELINUX_MODULES = firewalld + +# Firewalld hard codes the python shebangs to the full path of the +# python-interpreter. IE: #!/home/buildroot/output/host/bin/python. +# Force the proper python path. +FIREWALLD_CONF_ENV += PYTHON="/usr/bin/env python3" + +# /etc/sysconfig/firewalld is a Red Hat-ism, only referenced by +# the Red Hat-specific init script which isn't used, so we set +# --disable-sysconfig. +FIREWALLD_CONF_OPTS += \ + --disable-rpmmacros \ + --disable-sysconfig \ + --with-nft=/usr/sbin/nft \ + --without-ebtables \ + --without-ebtables-restore \ + --without-ipset \ + --without-xml-catalog + +ifeq ($(BR2_PACKAGE_IPTABLES),y) +FIREWALLD_DEPENDENCIES += iptables +FIREWALLD_CONF_OPTS += \ + --with-ip6tables-restore=/usr/sbin/ip6tables-restore \ + --with-ip6tables=/usr/sbin/ip6tables \ + --with-iptables-restore=/usr/sbin/iptables-restore \ + --with-iptables=/usr/sbin/iptables +else +FIREWALLD_CONF_OPTS += -without-iptables +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +FIREWALLD_DEPENDENCIES += systemd +FIREWALLD_CONF_OPTS += --with-systemd-unitdir=/usr/lib/systemd/system +else +FIREWALLD_CONF_OPTS += --disable-systemd +endif + +define FIREWALLD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(@D)/config/firewalld.service \ + $(TARGET_DIR)/usr/lib/systemd/system/firewalld.service +endef + +# The bundled sysvinit file requires /etc/init.d/functions which is not +# provided by buildroot. As such, we provide our own firewalld init file. +define FIREWALLD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 $(FIREWALLD_PKGDIR)/S46firewalld \ + $(TARGET_DIR)/etc/init.d/S46firewalld +endef + +# Firewalld needs ipv6 +# Firewalld requires almost every single nftable option selected. +define FIREWALLD_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_BRIDGE) + $(call KCONFIG_ENABLE_OPT,CONFIG_INET) + $(call KCONFIG_ENABLE_OPT,CONFIG_INET_DIAG) + $(call KCONFIG_ENABLE_OPT,CONFIG_NET) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_ADVANCED) + $(call KCONFIG_ENABLE_OPT,CONFIG_IPV6) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_FILTER) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_IPTABLES) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_MANGLE) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_MATCH_AH) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_MATCH_EUI64) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_MATCH_FRAG) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_MATCH_HL) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_MATCH_IPV6HEADER) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_MATCH_MH) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_MATCH_OPTS) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_MATCH_RPFILTER) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_MATCH_RT) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_MATCH_SRH) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_NAT) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_RAW) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_TARGET_HL) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_TARGET_MASQUERADE) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_TARGET_NPT) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_TARGET_REJECT) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_TARGET_SYNPROXY) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_ARP_MANGLE) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_ARPFILTER) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_ARPTABLES) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_FILTER) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_IPTABLES) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_MANGLE) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_MATCH_AH) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_MATCH_ECN) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_MATCH_RPFILTER) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_MATCH_TTL) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_NAT) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_RAW) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_TARGET_CLUSTERIP) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_TARGET_ECN) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_TARGET_MASQUERADE) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_TARGET_NETMAP) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_TARGET_REDIRECT) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_TARGET_REJECT) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_TARGET_SYNPROXY) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_TARGET_TTL) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_BITMAP_IP) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_BITMAP_IPMAC) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_BITMAP_PORT) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_IP) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_IPMAC) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_IPMARK) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_IPPORT) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_IPPORTIP) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_IPPORTNET) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_MAC) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_NET) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_NETIFACE) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_NETNET) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_NETPORT) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_NETPORTNET) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_LIST_SET) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_CONNCOUNT) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_NETLINK_GLUE_CT) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_SYNPROXY) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XTABLES) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_AMANDA) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_BROADCAST) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_EVENTS) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_FTP) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_H323) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_IRC) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_LABELS) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_MARK) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_NETBIOS_NS) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_PPTP) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_PROCFS) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_SANE) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_SIP) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_SNMP) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_TFTP) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_TIMEOUT) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_TIMESTAMP) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_ZONES) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CT_NETLINK) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CT_NETLINK_HELPER) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CT_NETLINK_TIMEOUT) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CT_PROTO_DCCP) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CT_PROTO_GRE) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CT_PROTO_SCTP) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CT_PROTO_UDPLITE) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_DEFRAG_IPV4) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_DEFRAG_IPV6) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_DUP_IPV4) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_DUP_IPV6) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_DUP_NETDEV) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_FLOW_TABLE) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_FLOW_TABLE_INET) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_FLOW_TABLE_IPV4) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_FLOW_TABLE_IPV6) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_LOG_ARP) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_LOG_BRIDGE) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_LOG_COMMON) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_LOG_IPV4) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_LOG_IPV6) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_LOG_NETDEV) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_AMANDA) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_FTP) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_H323) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_IPV4) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_IPV6) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_IRC) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_MASQUERADE_IPV4) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_MASQUERADE_IPV6) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_NEEDED) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_PPTP) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_PROTO_DCCP) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_PROTO_GRE) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_PROTO_SCTP) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_PROTO_UDPLITE) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_REDIRECT) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_SIP) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_SNMP_BASIC) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_TFTP) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_REJECT_IPV4) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_REJECT_IPV6) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_SOCKET_IPV4) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_SOCKET_IPV6) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_TABLES_ARP) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_TABLES_BRIDGE) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_TABLES_IPV4) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_TABLES_IPV6) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_TABLES_NETDEV) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_TABLES_SET) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_TPROXY_IPV4) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_TPROXY_IPV6) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_BRIDGE_REJECT) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_CHAIN_NAT_IPV4) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_CHAIN_NAT_IPV6) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_CHAIN_ROUTE_IPV4) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_CHAIN_ROUTE_IPV6) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_COMPAT) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_CONNLIMIT) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_COUNTER) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_CT) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_DUP_IPV4) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_DUP_IPV6) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_DUP_NETDEV) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_FIB) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_FIB_INET) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_FIB_IPV4) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_FIB_IPV6) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_FIB_NETDEV) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_FLOW_OFFLOAD) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_FWD_NETDEV) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_HASH) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_LIMIT) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_LOG) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_MASQ) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_MASQ_IPV4) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_MASQ_IPV6) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_NAT) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_NUMGEN) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_OBJREF) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_OSF) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_QUEUE) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_QUOTA) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_REDIR) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_REDIR_IPV4) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_REDIR_IPV6) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_REJECT) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_REJECT_INET) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_REJECT_IPV4) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_REJECT_IPV6) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_REJECT_NETDEV) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_SOCKET) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_SYNPROXY) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_TPROXY) + $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_TUNNEL) +endef + +$(eval $(autotools-package)) diff --git a/package/firmware-utils/Config.in b/package/firmware-utils/Config.in new file mode 100644 index 00000000..77533607 --- /dev/null +++ b/package/firmware-utils/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_FIRMWARE_UTILS + bool "firmware-utils" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_ZLIB + help + Firmware utils are tools that can be used for managing + platform / device / vendor specific firmware images. Depending + on a specific tool it may be possible to read information, + extract data, modify or build an image from a scratch. + + A common target usage of firmware utils is to upgrade kernel + and / or rootfs. Depending on device it may be required to + extract a part of firmware image and flash it. + + https://git.openwrt.org/?p=project/firmware-utils.git;a=summary + +comment "firmware-utils needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/firmware-utils/Config.in.host b/package/firmware-utils/Config.in.host new file mode 100644 index 00000000..4aaec050 --- /dev/null +++ b/package/firmware-utils/Config.in.host @@ -0,0 +1,12 @@ +config BR2_PACKAGE_HOST_FIRMWARE_UTILS + bool "host firmware-utils" + help + Firmware utils are tools that can be used for managing + platform / device / vendor specific firmware images. Depending + on a specific tool it may be possible to read information, + extract data, modify or build an image from a scratch. + + A common host usage of firmware utils is to build a bootloader + supported image. + + https://git.openwrt.org/?p=project/firmware-utils.git;a=summary diff --git a/package/firmware-utils/firmware-utils.hash b/package/firmware-utils/firmware-utils.hash new file mode 100644 index 00000000..8e09c067 --- /dev/null +++ b/package/firmware-utils/firmware-utils.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 5d6fdc6ba3cb3976df68625cbc59a1e0acbd5ecaf9daa41c3a2aaad1ff368f51 firmware-utils-86739f2b3ae9502368b89ef37fa6f31c42aad6f4-git4.tar.gz diff --git a/package/firmware-utils/firmware-utils.mk b/package/firmware-utils/firmware-utils.mk new file mode 100644 index 00000000..d5b079e4 --- /dev/null +++ b/package/firmware-utils/firmware-utils.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# firmware-utils +# +################################################################################ + +FIRMWARE_UTILS_VERSION = 86739f2b3ae9502368b89ef37fa6f31c42aad6f4 +FIRMWARE_UTILS_SITE = https://git.openwrt.org/project/firmware-utils.git +FIRMWARE_UTILS_SITE_METHOD = git +FIRMWARE_UTILS_LICENSE = \ + BSD-2-Clause (tplink-safeloader), \ + BSD-3-Clause (seama), \ + GPL-2.0 (add_header, bcmalgo, buffalo-enc, buffalo-lib, buffalo-tag, \ + buffalo-tftp, dgfirmware, dns313-header, edimax_fw_header, \ + fix-u-media-header, hcsmakeimage, mkbrncmdline, mkbrnimg, \ + mkbuffaloimg, mkcameofw, mkcasfw, mkdapimg, mkdapimg2, \ + mkdhpimg, mkdniimg, mkhilinkfw, mkmerakifw-old, mkmerakifw, \ + mkplanexfw, mkporayfw, mkrasimage, mkrtn56uimg, mksenaofw, \ + mksercommfw, mktitanimg, mktplinkfw-lib, mktplinkfw, \ + mktplinkfw2, mkwrggimg, mkwrgimg, mkzcfw, mkzynfw, \ + mkzyxelzldfw osbridge-crc, pc1crypt, srec2bin, trx2edips, \ + uimage_padhdr, wrt400n, zyimage, zytrx), \ + GPL-2.0+ (addpattern, asustrx, bcm4908asus, bcm4908kernel, dgn3500sum, \ + encode_crc, jcgimage, lzma2eva, makeamitbin, mkchkimg, \ + mkcsysimg, mkdlinkfw-lib, mkdlinkfw, mkedimaximg, mkfwimage, \ + mkfwimage2, mkheader_gemtek, mkmylofw, motorola-bin, \ + nec-enc, oseama, otrx, ptgen, sign_dlink_ru, spw303v, trx, \ + uimage_sgehdr, xiaomifw, xorimage, zyxbcm), \ + GPL-2.0 OR GPL-3.0 (nand_ecc), \ + GPL-2.0+ OR MIT (lxlfw), \ + UNKNOWN (imagetag, trx2usr) +# No explicit license file. We could use the source files, but that would mean +# we need to use all of them. If we need to do that, we can just as well leave +# it to the integrator to get them from the sources + +FIRMWARE_UTILS_DEPENDENCIES = openssl zlib +HOST_FIRMWARE_UTILS_DEPENDENCIES = host-openssl host-zlib + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/flac/Config.in b/package/flac/Config.in new file mode 100644 index 00000000..62aca290 --- /dev/null +++ b/package/flac/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_FLAC + bool "flac" + depends on BR2_USE_WCHAR + help + FLAC is an Open Source lossless audio codec. + + https://xiph.org/flac/ + +comment "flac needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/package/flac/flac.hash b/package/flac/flac.hash new file mode 100644 index 00000000..0013a748 --- /dev/null +++ b/package/flac/flac.hash @@ -0,0 +1,6 @@ +# From https://ftp.osuosl.org/pub/xiph/releases/flac/SHA256SUMS.txt +sha256 6c58e69cd22348f441b861092b825e591d0b822e106de6eb0ee4d05d27205b70 flac-1.4.3.tar.xz +# Locally computed +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING.GPL +sha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a COPYING.LGPL +sha256 12600ea1a7affcbf469bd0d8b2cd725e4167114a2ee834b88f5d2857bfd7ddbf COPYING.Xiph diff --git a/package/flac/flac.mk b/package/flac/flac.mk new file mode 100644 index 00000000..6bac9ef8 --- /dev/null +++ b/package/flac/flac.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# flac +# +################################################################################ + +FLAC_VERSION = 1.4.3 +FLAC_SITE = https://ftp.osuosl.org/pub/xiph/releases/flac +FLAC_SOURCE = flac-$(FLAC_VERSION).tar.xz +FLAC_INSTALL_STAGING = YES +FLAC_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv) +FLAC_LICENSE = Xiph BSD-like (libFLAC), GPL-2.0+ (tools), LGPL-2.1+ (other libraries) +FLAC_LICENSE_FILES = COPYING.Xiph COPYING.GPL COPYING.LGPL +FLAC_CPE_ID_VALID = YES + +FLAC_CONF_OPTS = \ + $(if $(BR2_INSTALL_LIBSTDCPP),--enable-cpplibs,--disable-cpplibs) \ + --disable-stack-smash-protection + +ifeq ($(BR2_PACKAGE_LIBOGG),y) +FLAC_CONF_OPTS += --with-ogg=$(STAGING_DIR)/usr +FLAC_DEPENDENCIES += libogg +else +FLAC_CONF_OPTS += --disable-ogg +endif + +$(eval $(autotools-package)) diff --git a/package/flann/Config.in b/package/flann/Config.in new file mode 100644 index 00000000..8b32e907 --- /dev/null +++ b/package/flann/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_FLANN + bool "flann" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11 + select BR2_PACKAGE_LZ4 + help + FLANN is a library for performing fast approximate nearest + neighbor searches in high dimensional spaces. It contains a + collection of algorithms we found to work best for nearest + neighbor search and a system for automatically choosing the + best algorithm and optimum parameters depending on the + dataset. + + http://www.cs.ubc.ca/research/flann/ + +if BR2_PACKAGE_FLANN + +config BR2_PACKAGE_FLANN_EXAMPLES + bool "flann examples" + help + Build and install flann example applications. + +endif + +comment "flann needs a toolchain w/ C++, dynamic library, gcc >= 4.7" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 diff --git a/package/flann/flann.hash b/package/flann/flann.hash new file mode 100644 index 00000000..6eaa48c4 --- /dev/null +++ b/package/flann/flann.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 e26829bb0017f317d9cc45ab83ddcb8b16d75ada1ae07157006c1e7d601c8824 flann-1.9.2.tar.gz +sha256 3993f339cc56506c62aa1eb2fb76f240ee93b738d857832899c1e207b1dc069a COPYING diff --git a/package/flann/flann.mk b/package/flann/flann.mk new file mode 100644 index 00000000..dc75b977 --- /dev/null +++ b/package/flann/flann.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# flann +# +################################################################################ + +FLANN_VERSION = 1.9.2 +FLANN_SITE = $(call github,mariusmuja,flann,$(FLANN_VERSION)) +FLANN_INSTALL_STAGING = YES +FLANN_LICENSE = BSD-3-Clause +FLANN_LICENSE_FILES = COPYING +FLANN_DEPENDENCIES = host-pkgconf lz4 +FLANN_CONF_OPTS = \ + -DBUILD_C_BINDINGS=ON \ + -DBUILD_PYTHON_BINDINGS=OFF \ + -DBUILD_MATLAB_BINDINGS=OFF \ + -DBUILD_EXAMPLES=$(if $(BR2_PACKAGE_FLANN_EXAMPLES),ON,OFF) \ + -DUSE_OPENMP=$(if $(BR2_TOOLCHAIN_HAS_OPENMP),ON,OFF) \ + -DCMAKE_DISABLE_FIND_PACKAGE_HDF5=TRUE + +FLANN_CXXFLAGS = $(TARGET_CXXFLAGS) -std=c++11 + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y) +FLANN_CXXFLAGS += -O0 +endif + +FLANN_CONF_OPTS += -DCMAKE_CXX_FLAGS="$(FLANN_CXXFLAGS)" + +$(eval $(cmake-package)) diff --git a/package/flannel/Config.in b/package/flannel/Config.in new file mode 100644 index 00000000..f37cfaa9 --- /dev/null +++ b/package/flannel/Config.in @@ -0,0 +1,16 @@ +comment "flannel needs a toolchain w/ threads" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_FLANNEL + bool "flannel" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_HOST_GO + help + Flannel is a virtual network that gives a subnet to each + host for use with container runtimes. + + https://github.com/flannel-io/flannel diff --git a/package/flannel/flannel.hash b/package/flannel/flannel.hash new file mode 100644 index 00000000..d1f03a9d --- /dev/null +++ b/package/flannel/flannel.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 e6f312d8a7e635ef707f3811313f045f0f80312d96dfcc722de973ffa2910204 flannel-0.25.5-go2.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/flannel/flannel.mk b/package/flannel/flannel.mk new file mode 100644 index 00000000..7705bdbe --- /dev/null +++ b/package/flannel/flannel.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# flannel +# +################################################################################ + +FLANNEL_VERSION = 0.25.5 +FLANNEL_SITE = $(call github,flannel-io,flannel,v$(FLANNEL_VERSION)) + +FLANNEL_LICENSE = Apache-2.0 +FLANNEL_LICENSE_FILES = LICENSE + +FLANNEL_LDFLAGS = -X github.com/flannel-io/flannel/version.Version=$(FLANNEL_VERSION) + +# Install flannel to its well known location. +define FLANNEL_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/bin/flannel $(TARGET_DIR)/opt/bin/flanneld + $(INSTALL) -D -m 0755 $(@D)/dist/mk-docker-opts.sh $(TARGET_DIR)/opt/bin/mk-docker-opts.sh +endef + +$(eval $(golang-package)) diff --git a/package/flare-engine/Config.in b/package/flare-engine/Config.in new file mode 100644 index 00000000..136cae70 --- /dev/null +++ b/package/flare-engine/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_FLARE_ENGINE + bool "flare-engine" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS # SDL2 + select BR2_PACKAGE_LIBPNG # SDL2_IMAGE needs libpng support + select BR2_PACKAGE_SDL2 + select BR2_PACKAGE_SDL2_IMAGE + select BR2_PACKAGE_SDL2_MIXER + select BR2_PACKAGE_SDL2_TTF + select BR2_PACKAGE_TREMOR # for SDL2_mixer ogg support + help + Flare (Free Libre Action Roleplaying Engine) is a simple game + engine built to handle a very specific kind of game: + single-player 2D action RPGs. + Flare is not a reimplementation of an existing game or engine. + It is a tribute to and exploration of the action RPG genre. + + https://flarerpg.org + +comment "flare-engine needs a toolchain w/ C++, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS diff --git a/package/flare-engine/flare-engine.hash b/package/flare-engine/flare-engine.hash new file mode 100644 index 00000000..2e1f87b2 --- /dev/null +++ b/package/flare-engine/flare-engine.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2c1bafeaa5ac26c10449bfcb7151b06e8a22547aa7364d2a39bbcb135aa50a09 flare-engine-1.14.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/flare-engine/flare-engine.mk b/package/flare-engine/flare-engine.mk new file mode 100644 index 00000000..e5fa9472 --- /dev/null +++ b/package/flare-engine/flare-engine.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# flare-engine +# +################################################################################ + +FLARE_ENGINE_VERSION = 1.14 +FLARE_ENGINE_SITE = $(call github,flareteam,flare-engine,v$(FLARE_ENGINE_VERSION)) +FLARE_ENGINE_LICENSE = GPL-3.0+ +FLARE_ENGINE_LICENSE_FILES = COPYING + +FLARE_ENGINE_DEPENDENCIES += sdl2 sdl2_image sdl2_mixer sdl2_ttf tremor + +# Don't use /usr/games and /usr/share/games +FLARE_ENGINE_CONF_OPTS += -DBINDIR=bin -DDATADIR=share/flare + +# CMAKE_BUILD_TYPE is only used to set optimization and debug flags, all of +# which we want Buildroot to steer explicitly. Explicitly set a fake build type +# to get this control. +FLARE_ENGINE_CONF_OPTS += -DCMAKE_BUILD_TYPE=Buildroot + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +FLARE_ENGINE_CONF_OPTS += -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) -O0" +endif + +$(eval $(cmake-package)) diff --git a/package/flare-game/Config.in b/package/flare-game/Config.in new file mode 100644 index 00000000..535a9b18 --- /dev/null +++ b/package/flare-game/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_FLARE_GAME + bool "flare-game" + depends on BR2_PACKAGE_FLARE_ENGINE + help + Flare is an open source, 2D action RPG licensed under the + GPL3 license. Its game play can be likened to the games in + the Diablo series. + + This package, flare-game, only contains the game data. The + game engine itself is part of a separate package, + flame-engine. + + https://flarerpg.org diff --git a/package/flare-game/flare-game.hash b/package/flare-game/flare-game.hash new file mode 100644 index 00000000..9ae88c6d --- /dev/null +++ b/package/flare-game/flare-game.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 65758462070aa88842084f8ee69083d8226e93cfbf83481663276d8307494b8e flare-game-1.14.tar.gz +sha256 3f941b3b89cf7b8370ceb83cc76d2120d471b58735d8ca60238a751a48d7f72f LICENSE.txt diff --git a/package/flare-game/flare-game.mk b/package/flare-game/flare-game.mk new file mode 100644 index 00000000..a1a0a594 --- /dev/null +++ b/package/flare-game/flare-game.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# flare-game +# +################################################################################ + +FLARE_GAME_VERSION = 1.14 +FLARE_GAME_SITE = $(call github,flareteam,flare-game,v$(FLARE_GAME_VERSION)) +FLARE_GAME_LICENSE = CC-BY-SA-3.0 (data files), GPL-2.0 (GNU Unifont), \ + OFL-1.1 (Liberation Sans) +FLARE_GAME_LICENSE_FILES = LICENSE.txt + +FLARE_GAME_DEPENDENCIES = flare-engine + +# Don't use /usr/share/games +FLARE_GAME_CONF_OPTS += -DDATADIR=share/flare + +$(eval $(cmake-package)) diff --git a/package/flashbench/Config.in b/package/flashbench/Config.in new file mode 100644 index 00000000..a50f482a --- /dev/null +++ b/package/flashbench/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_FLASHBENCH + bool "flashbench" + help + Flashbench - Identify characteristics of flash media. + + This is the tool used to identify the properties of + SD cards and other media for the Linaro flash memory + survey. + + https://git.linaro.org/people/arnd.bergmann/flashbench.git diff --git a/package/flashbench/flashbench.hash b/package/flashbench/flashbench.hash new file mode 100644 index 00000000..274d890f --- /dev/null +++ b/package/flashbench/flashbench.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 b5f95d2d057270adbce0f1a784b6a88db339b67326b6ca92474edd99f9fd4774 flashbench-2e30b1968a66147412f21002ea844122a0d5e2f0-git4.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/flashbench/flashbench.mk b/package/flashbench/flashbench.mk new file mode 100644 index 00000000..f5791c3e --- /dev/null +++ b/package/flashbench/flashbench.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# flashbench +# +################################################################################ + +FLASHBENCH_VERSION = 2e30b1968a66147412f21002ea844122a0d5e2f0 +FLASHBENCH_SITE = https://git.linaro.org/people/arnd/flashbench.git +FLASHBENCH_SITE_METHOD = git +FLASHBENCH_LICENSE = GPL-2.0 +FLASHBENCH_LICENSE_FILES = COPYING + +define FLASHBENCH_BUILD_CMDS + $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS) -lrt" +endef + +define FLASHBENCH_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -D $(@D)/flashbench $(TARGET_DIR)/usr/bin/flashbench + $(INSTALL) -m 755 -D $(@D)/erase $(TARGET_DIR)/usr/bin/erase +endef + +$(eval $(generic-package)) diff --git a/package/flashrom/Config.in b/package/flashrom/Config.in new file mode 100644 index 00000000..182a3f45 --- /dev/null +++ b/package/flashrom/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_FLASHROM_ARCH_SUPPORTS + bool + default y if BR2_aarch64 || BR2_aarch64_be + default y if BR2_arc + default y if BR2_arm || BR2_armeb + default y if BR2_i386 || BR2_x86_64 + default y if BR2_m68k + default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + default y if BR2_riscv + default y if BR2_sh + default y if BR2_sparc || BR2_sparc64 + +config BR2_PACKAGE_FLASHROM + bool "flashrom" + depends on BR2_PACKAGE_FLASHROM_ARCH_SUPPORTS + help + flashrom is a utility for identifying, reading, writing, + verifying and erasing flash chips. It is designed to flash + BIOS/EFI/coreboot/firmware/optionROM images on mainboards, + network/graphics/storage controller cards, and various other + programmer devices. + + http://flashrom.org/ diff --git a/package/flashrom/flashrom.hash b/package/flashrom/flashrom.hash new file mode 100644 index 00000000..17ebdee3 --- /dev/null +++ b/package/flashrom/flashrom.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 b77ce458b3b874387270a71805e899ac63f057d7553dc320da7e4c58e750577c flashrom-1.4.0.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/flashrom/flashrom.mk b/package/flashrom/flashrom.mk new file mode 100644 index 00000000..4eede48e --- /dev/null +++ b/package/flashrom/flashrom.mk @@ -0,0 +1,88 @@ +################################################################################ +# +# flashrom +# +################################################################################ + +FLASHROM_VERSION = 1.4.0 +FLASHROM_SITE = $(call github,flashrom,flashrom,v$(FLASHROM_VERSION)) +FLASHROM_LICENSE = GPL-2.0+ +FLASHROM_LICENSE_FILES = COPYING +FLASHROM_INSTALL_STAGING = YES +FLASHROM_CONF_OPTS = \ + -Dclassic_cli=enabled \ + -Dclassic_cli_print_wiki=disabled \ + -Dich_descriptors_tool=enabled \ + -Dtests=disabled \ + -Duse_internal_dmi=true \ + -Dwerror=false \ + -Dman-pages=disabled \ + -Ddocumentation=disabled + +FLASHROM_PROGRAMMERS = \ + buspirate_spi \ + linux_mtd \ + linux_spi \ + parade_lspcon \ + mediatek_i2c_spi \ + mstarddc_spi \ + pony_spi \ + realtek_mst_i2c_spi \ + serprog + +ifeq ($(BR2_i386)$(BR2_x86_64),y) +FLASHROM_PROGRAMMERS += rayer_spi +endif + +ifeq ($(BR2_PACKAGE_LIBFTDI1),y) +FLASHROM_DEPENDENCIES += host-pkgconf libftdi1 +FLASHROM_PROGRAMMERS += \ + ft2232_spi \ + usbblaster_spi +endif + +ifeq ($(BR2_PACKAGE_LIBUSB),y) +FLASHROM_DEPENDENCIES += host-pkgconf libusb +FLASHROM_PROGRAMMERS += \ + ch341a_spi \ + dediprog \ + developerbox_spi \ + digilent_spi \ + dirtyjtag_spi \ + pickit2_spi \ + raiden_debug_spi \ + stlinkv3_spi +endif + +ifeq ($(BR2_PACKAGE_PCIUTILS),y) +FLASHROM_DEPENDENCIES += pciutils +FLASHROM_PROGRAMMERS += \ + atavia \ + drkaiser \ + gfxnvidia \ + internal \ + it8212 \ + nicintel \ + nicintel_eeprom \ + nicintel_spi \ + ogp_spi \ + satasii + +ifeq ($(BR2_i386)$(BR2_x86_64),y) +FLASHROM_PROGRAMMERS += \ + atahpt \ + atapromise \ + nic3com \ + nicnatsemi \ + nicrealtek \ + satamv +endif +endif + +FLASHROM_CONF_OPTS += -Dprogrammer=$(subst $(space),$(comma),$(strip $(FLASHROM_PROGRAMMERS))) + +ifeq ($(BR2_SHARED_LIBS),y) +FLASHROM_CONF_OPTS += --default-library=both +endif + +$(eval $(meson-package)) diff --git a/package/flatbuffers/0001-include-flatbuffers-base.h-fix-build-on-musl.patch b/package/flatbuffers/0001-include-flatbuffers-base.h-fix-build-on-musl.patch new file mode 100644 index 00000000..872db030 --- /dev/null +++ b/package/flatbuffers/0001-include-flatbuffers-base.h-fix-build-on-musl.patch @@ -0,0 +1,55 @@ +From 0315cef04a5a8a953072691faa48af9acb6009bd Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 10 Aug 2021 13:39:58 +0200 +Subject: [PATCH] include/flatbuffers/base.h: fix build on musl + +Build of applications using flatbuffers such as snort3 are broken on +musl since version 1.11.0 and +https://github.com/google/flatbuffers/commit/5f32f948102e65eaeea461b44f3b43f96c7a7a5a +because strtoll_l (and strtoull_l) are not available on musl. +flatbuffers checks for the availability of strtoull_l in CMakeLists.txt +so flatbuffers builds successfully but for applications using +flatbuffers, the result of this check is not available and +FLATBUFFERS_LOCALE_INDEPENDENT is set to 1 resulting in the following +build failure: + +In file included from /tmp/instance-0/output-1/host/x86_64-buildroot-linux-musl/sysroot/usr/include/flatbuffers/flexbuffers.h:24, + from /tmp/instance-0/output-1/host/x86_64-buildroot-linux-musl/sysroot/usr/include/flatbuffers/idl.h:26, + from /tmp/instance-0/output-1/build/snort3-3.1.6.0/src/network_inspectors/perf_monitor/fbs_formatter.cc:29: +/tmp/instance-0/output-1/host/x86_64-buildroot-linux-musl/sysroot/usr/include/flatbuffers/util.h: In function 'void flatbuffers::strtoval_impl(int64_t*, const char*, char**, int)': +/tmp/instance-0/output-1/host/x86_64-buildroot-linux-musl/sysroot/usr/include/flatbuffers/util.h:258:12: error: 'strtoll_l' was not declared in this scope; did you mean 'strcoll_l'? + 258 | *val = __strtoll_impl(str, endptr, base); + | ^~~~~~~~~~~~~~ + +Fix this failure by checking if __GNUC__ is defined before setting +FLATBUFFERS_LOCALE_INDEPENDENT to 1. + +Fixes: + - http://autobuild.buildroot.org/results/68045b83e94f8caa337b1af7ed5f493ac1a55c47 + +Signed-off-by: Fabrice Fontaine +[Upstream status: Rejected: + https://github.com/google/flatbuffers/pull/6773] +Signed-off-by: Bernd Kuhls +(rebased and added fix for uClibc-build, rebased again for 24.3.25) +--- + include/flatbuffers/base.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/flatbuffers/base.h b/include/flatbuffers/base.h +index de7898dc..101c7598 100644 +--- a/include/flatbuffers/base.h ++++ b/include/flatbuffers/base.h +@@ -270,7 +270,8 @@ namespace flatbuffers { + // strtoull_l}. + #if (defined(_MSC_VER) && _MSC_VER >= 1800) || \ + (defined(__ANDROID_API__) && __ANDROID_API__>= 21) || \ +- (defined(_XOPEN_VERSION) && (_XOPEN_VERSION >= 700)) && \ ++ (defined(_XOPEN_VERSION) && (_XOPEN_VERSION >= 700) && \ ++ defined(__GLIBC__) && !defined(__UCLIBC__)) && \ + (!defined(__Fuchsia__) && !defined(__ANDROID_API__)) + #define FLATBUFFERS_LOCALE_INDEPENDENT 1 + #else +-- +2.30.2 + diff --git a/package/flatbuffers/Config.in b/package/flatbuffers/Config.in new file mode 100644 index 00000000..878bbd0d --- /dev/null +++ b/package/flatbuffers/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_FLATBUFFERS + bool "flatbuffers" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11 + depends on BR2_INSTALL_LIBSTDCPP + help + FlatBuffers is an efficient cross platform serialization + library for C++, C#, C, Go, Java, JavaScript, PHP, and + Python. It was originally created at Google for game + development and other performance-critical applications. + + https://flatbuffers.dev + +comment "flatbuffers needs a toolchain w/ C++, gcc >= 4.7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 diff --git a/package/flatbuffers/flatbuffers.hash b/package/flatbuffers/flatbuffers.hash new file mode 100644 index 00000000..ac2c9fc6 --- /dev/null +++ b/package/flatbuffers/flatbuffers.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 4157c5cacdb59737c5d627e47ac26b140e9ee28b1102f812b36068aab728c1ed flatbuffers-24.3.25.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/flatbuffers/flatbuffers.mk b/package/flatbuffers/flatbuffers.mk new file mode 100644 index 00000000..33481eab --- /dev/null +++ b/package/flatbuffers/flatbuffers.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# flatbuffers +# +################################################################################ + +FLATBUFFERS_VERSION = 24.3.25 +FLATBUFFERS_SITE = $(call github,google,flatbuffers,v$(FLATBUFFERS_VERSION)) +FLATBUFFERS_LICENSE = Apache-2.0 +FLATBUFFERS_LICENSE_FILES = LICENSE +FLATBUFFERS_CPE_ID_VENDOR = google +FLATBUFFERS_INSTALL_STAGING = YES +FLATBUFFERS_DEPENDENCIES = host-flatbuffers + +FLATBUFFERS_CONF_OPTS += \ + -DCMAKE_CXX_FLAGS="-std=c++11" \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DFLATBUFFERS_BUILD_TESTS=OFF \ + -DFLATBUFFERS_FLATC_EXECUTABLE=$(HOST_DIR)/bin/flatc + +ifeq ($(BR2_STATIC_LIBS),y) +FLATBUFFERS_CONF_OPTS += -DFLATBUFFERS_BUILD_SHAREDLIB=OFF +else +FLATBUFFERS_CONF_OPTS += -DFLATBUFFERS_BUILD_SHAREDLIB=ON +endif + +HOST_FLATBUFFERS_CONF_OPTS += \ + -DCMAKE_CXX_FLAGS="-std=c++11" \ + -DFLATBUFFERS_BUILD_FLATLIB=OFF \ + -DFLATBUFFERS_BUILD_FLATC=ON \ + -DFLATBUFFERS_BUILD_FLATHASH=OFF \ + -DFLATBUFFERS_BUILD_GRPCTEST=OFF \ + -DFLATBUFFERS_BUILD_SHAREDLIB=OFF \ + -DFLATBUFFERS_BUILD_TESTS=OFF + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/flatcc/Config.in b/package/flatcc/Config.in new file mode 100644 index 00000000..6273f2b5 --- /dev/null +++ b/package/flatcc/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_FLATCC + bool "flatcc" + help + flatcc is C language implementation of Google Flatbuffers. It + consists of both a library for the target as well as a + flatbuffer compiler tool for the host. + + https://github.com/dvidelabs/flatcc diff --git a/package/flatcc/flatcc.hash b/package/flatcc/flatcc.hash new file mode 100644 index 00000000..4c6b2fc8 --- /dev/null +++ b/package/flatcc/flatcc.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2533c2f1061498499f15acc7e0937dcf35bc68e685d237325124ae0d6c600c2b flatcc-0.6.1.tar.gz +sha256 c8f0d9c1f92c658d87ebd854ee7447a3d3912d2c3a5c78c117787be5d5da8af3 LICENSE diff --git a/package/flatcc/flatcc.mk b/package/flatcc/flatcc.mk new file mode 100644 index 00000000..06be1a13 --- /dev/null +++ b/package/flatcc/flatcc.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# FLATCC +# +################################################################################ + +FLATCC_VERSION = 0.6.1 +FLATCC_SITE = $(call github,dvidelabs,flatcc,v$(FLATCC_VERSION)) +FLATCC_LICENSE = Apache-2.0 +FLATCC_LICENSE_FILES = LICENSE +FLATCC_INSTALL_STAGING = YES +FLATCC_DEPENDENCIES = host-flatcc +FLATCC_CONF_OPTS = -DFLATCC_ALLOW_WERROR=OFF +HOST_FLATCC_CONF_OPTS = -DFLATCC_ALLOW_WERROR=OFF + +# Disable build of tests and samples +FLATCC_CONF_OPTS += -DFLATCC_TEST=OFF +HOST_FLATCC_CONF_OPTS += -DFLATCC_TEST=OFF + +# Enable install targets +FLATCC_CONF_OPTS += -DFLATCC_INSTALL=ON +HOST_FLATCC_CONF_OPTS += -DFLATCC_INSTALL=ON + +# compiler is named flatcc or flatcc_d depending on BR2_ENABLE_DEBUG value +define FLATCC_TARGET_REMOVE_FLATCC_COMPILER + rm $(TARGET_DIR)/usr/bin/flatcc* +endef + +FLATCC_POST_INSTALL_TARGET_HOOKS += FLATCC_TARGET_REMOVE_FLATCC_COMPILER + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/flex/0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch b/package/flex/0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch new file mode 100644 index 00000000..06747a36 --- /dev/null +++ b/package/flex/0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch @@ -0,0 +1,35 @@ +From ffa886a580929f26fd5e5a40c9c5334955c48553 Mon Sep 17 00:00:00 2001 +From: Explorer09 +Date: Mon, 4 Sep 2017 10:47:33 +0800 +Subject: [PATCH] build: AC_USE_SYSTEM_EXTENSIONS in configure.ac. + +This would, e.g. define _GNU_SOURCE in config.h, enabling the +reallocarray() prototype in glibc 2.26+ on Linux systems with that +version of glibc. + +Fixes #241. + +Backported from: 24fd0551333e7eded87b64dd36062da3df2f6380 +Signed-off-by: Adrian Perez de Castro +--- + configure.ac | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 55e774b..c879fe1 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -25,8 +25,10 @@ + # autoconf requirements and initialization + + AC_INIT([the fast lexical analyser generator],[2.6.4],[flex-help@lists.sourceforge.net],[flex]) ++AC_PREREQ([2.60]) + AC_CONFIG_SRCDIR([src/scan.l]) + AC_CONFIG_AUX_DIR([build-aux]) ++AC_USE_SYSTEM_EXTENSIONS + LT_INIT + AM_INIT_AUTOMAKE([1.11.3 -Wno-portability foreign check-news std-options dist-lzip parallel-tests subdir-objects]) + AC_CONFIG_HEADER([src/config.h]) +-- +2.14.1 + diff --git a/package/flex/0002-build-make-it-possible-to-disable-the-build-of-the-f.patch b/package/flex/0002-build-make-it-possible-to-disable-the-build-of-the-f.patch new file mode 100644 index 00000000..19f5a772 --- /dev/null +++ b/package/flex/0002-build-make-it-possible-to-disable-the-build-of-the-f.patch @@ -0,0 +1,76 @@ +From da21733178b34eea303964db5a05e8a3ee4095b4 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 26 Aug 2017 15:17:06 +0200 +Subject: [PATCH] build: make it possible to disable the build of the flex + program + +The flex program uses fork(), which isn't available on noMMU +systems. However, the libfl library does not use fork(), and be used +by other programs/libraries. + +Therefore, it makes sense to provide an option to disable the build of +the flex program. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: "Yann E. MORIN" + +--- +Submitted-upstream: https://github.com/westes/flex/pull/256 +Refused. We'll have to adapt when they do a new release... +--- + Makefile.am | 2 ++ + configure.ac | 6 ++++++ + doc/Makefile.am | 4 ++++ + src/Makefile.am | 3 +++ + 4 files changed, 15 insertions(+) + +diff --git a/Makefile.am b/Makefile.am +index e790e9d..8b57bc9 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -62,8 +62,10 @@ ChangeLog: $(srcdir)/tools/git2cl + indent: + cd src && $(MAKE) $(AM_MAKEFLAGS) indent + ++if ENABLE_PROGRAM + install-exec-hook: + cd $(DESTDIR)$(bindir) && \ + $(LN_S) -f flex$(EXEEXT) flex++$(EXEEXT) ++endif + + .PHONY: ChangeLog indent +diff --git a/configure.ac b/configure.ac +index 8882016..f49872b 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -75,6 +75,12 @@ AC_ARG_ENABLE([libfl], + [], [enable_libfl=yes]) + AM_CONDITIONAL([ENABLE_LIBFL], [test "x$enable_libfl" = xyes]) + ++AC_ARG_ENABLE([program], ++ [AS_HELP_STRING([--disable-program], ++ [do not build the flex program, only the libfl library])], ++ [], [enable_program=yes]) ++AM_CONDITIONAL([ENABLE_PROGRAM], [test "x$enable_program" = xyes]) ++ + # --disable-bootstrap is intended only to workaround problems with bootstrap + # (e.g. when cross-compiling flex or when bootstrapping has bugs). + # Ideally we should be able to bootstrap even when cross-compiling. +diff --git a/src/Makefile.am b/src/Makefile.am +index 0d13a5a..c73bc17 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -4,7 +4,10 @@ LIBS = @LIBS@ + + m4 = @M4@ + ++if ENABLE_PROGRAM + bin_PROGRAMS = flex ++endif ++ + if ENABLE_BOOTSTRAP + noinst_PROGRAMS = stage1flex + endif +-- +2.9.4 + diff --git a/package/flex/0003-build-make-it-possible-to-disable-the-build-of-the-d.patch b/package/flex/0003-build-make-it-possible-to-disable-the-build-of-the-d.patch new file mode 100644 index 00000000..ffe30d36 --- /dev/null +++ b/package/flex/0003-build-make-it-possible-to-disable-the-build-of-the-d.patch @@ -0,0 +1,58 @@ +From b89b8475a5b2f9444c32f7d254b35968da3c8a23 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Fri, 29 Sep 2017 18:03:51 +0200 +Subject: [PATCH] build: make it possible to disable the build of the + documentation + +When targetting embedded evices, the documentation is not needed. + +Building the documentation default to whether the program is built. + +Signed-off-by: "Yann E. MORIN" +Cc: Thomas Petazzoni +--- + Makefile.am | 8 +++++++- + configure.ac | 6 ++++++ + 2 files changed, 13 insertions(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index fce30b2..ee75b64 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -41,9 +41,15 @@ EXTRA_DIST = \ + .indent.pro \ + autogen.sh + ++MAYBE_SUBDIRS = ++ ++if ENABLE_DOC ++MAYBE_SUBDIRS += doc ++endif ++ + SUBDIRS = \ + src \ +- doc \ ++ $(MAYBE_SUBDIRS) \ + examples \ + po \ + tests \ +diff --git a/configure.ac b/configure.ac +index c54e98f..b3ae450 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -80,6 +80,12 @@ AC_ARG_ENABLE([program], + [], [enable_program=yes]) + AM_CONDITIONAL([ENABLE_PROGRAM], [test "x$enable_program" = xyes]) + ++AC_ARG_ENABLE([doc], ++ [AS_HELP_STRING([--disable-doc], ++ [do not build the documentation])], ++ [], [enable_doc=${enable_program}]) ++AM_CONDITIONAL([ENABLE_DOC], [test "x$enable_doc" = xyes -a "x$enable_program" = xyes]) ++ + # --disable-bootstrap is intended only to workaround problems with bootstrap + # (e.g. when cross-compiling flex or when bootstrapping has bugs). + # Ideally we should be able to bootstrap even when cross-compiling. +-- +2.11.0 + diff --git a/package/flex/Config.in b/package/flex/Config.in new file mode 100644 index 00000000..0690777a --- /dev/null +++ b/package/flex/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_FLEX + bool "flex" + help + A fast lexical analyser generator. A tool for generating + programs that perform pattern-matching on text. + + Only the library is available. + + https://github.com/westes/flex/ diff --git a/package/flex/flex.hash b/package/flex/flex.hash new file mode 100644 index 00000000..3bfb04d6 --- /dev/null +++ b/package/flex/flex.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 e87aae032bf07c26f85ac0ed3250998c37621d95f8bd748b31f15b33c45ee995 flex-2.6.4.tar.gz +# License files, locally calculated +sha256 97fd685958d93be7f8dab939bb8161dbd6afb0718c63bfc337c24321aea44273 COPYING diff --git a/package/flex/flex.mk b/package/flex/flex.mk new file mode 100644 index 00000000..c6417fea --- /dev/null +++ b/package/flex/flex.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# flex +# +################################################################################ + +FLEX_VERSION = 2.6.4 +FLEX_SITE = https://github.com/westes/flex/files/981163 +FLEX_INSTALL_STAGING = YES +FLEX_LICENSE = FLEX +FLEX_LICENSE_FILES = COPYING +FLEX_CPE_ID_VENDOR = westes +# bug does not cause stack overflows in the generated code and has been +# noted upstream as a bug in the code generator +FLEX_IGNORE_CVES = CVE-2019-6293 +FLEX_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) host-m4 +HOST_FLEX_DEPENDENCIES = host-m4 + +# 0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch +# 0002-build-make-it-possible-to-disable-the-build-of-the-f.patch +# 0003-build-make-it-possible-to-disable-the-build-of-the-d.patch +FLEX_AUTORECONF = YES +FLEX_AUTOPOINT = YES +FLEX_CONF_ENV = ac_cv_path_M4=/usr/bin/m4 \ + ac_cv_func_reallocarray=no + +# Don't enable programs, they are not needed on the target, and +# require MMU support. +# Don't enable the doc, it's not needed on the target and requires +# special tools (help2man) to build. +FLEX_CONF_OPTS += --disable-program --disable-doc +HOST_FLEX_CONF_OPTS = --disable-doc + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/flite/0001-fix-alsa-static.patch b/package/flite/0001-fix-alsa-static.patch new file mode 100644 index 00000000..83f0a86e --- /dev/null +++ b/package/flite/0001-fix-alsa-static.patch @@ -0,0 +1,21 @@ +Use pkg-config to determine alsa link flags. This fixes static linking. + +Signed-off-by: Baruch Siach +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi + +diff -Nuar flite-1.4-release.orig/configure.in flite-1.4-release/configure.in +--- flite-1.4-release.orig/configure.in 2009-08-14 23:46:38.000000000 +0300 ++++ flite-1.4-release/configure.in 2014-04-30 18:52:33.253297236 +0300 +@@ -383,7 +383,10 @@ AC_CHECK_HEADER(sys/audioio.h, + AC_CHECK_HEADER(alsa/asoundlib.h, + [AUDIODRIVER="alsa" + AUDIODEFS=-DCST_AUDIO_ALSA +- AUDIOLIBS=-lasound]) ++ AUDIOLIBS=`pkg-config --libs alsa` ++ if test "$shared" = false; then ++ AUDIOLIBS=`pkg-config --libs --static alsa` ++ fi]) + AC_CHECK_HEADER(mmsystem.h, + [AUDIODRIVER="wince" + AUDIODEFS=-DCST_AUDIO_WINCE diff --git a/package/flite/Config.in b/package/flite/Config.in new file mode 100644 index 00000000..0bb15511 --- /dev/null +++ b/package/flite/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_FLITE + bool "flite" + depends on BR2_USE_WCHAR + help + Flite: a small, fast run time synthesis engine. + + Flite (festival-lite) is a small, fast run-time synthesis + engine developed at CMU and primarily designed for small + embedded machines and/or large servers. Flite is designed as + an alternative synthesis engine to Festival for voices built + using the FestVox suite of voice building tools. + + http://www.festvox.org/flite + +comment "flite needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/package/flite/flite.hash b/package/flite/flite.hash new file mode 100644 index 00000000..35ec6196 --- /dev/null +++ b/package/flite/flite.hash @@ -0,0 +1,4 @@ +# locally computed hash +sha256 ab1555fe5adc3f99f1d4a1a0eb1596d329fd6d74f1464a0097c81f53c0cf9e5c flite-2.2.tar.gz +# License files, locally calculated +sha256 d31bceaf2823d56a8c9400f7bde3b17140e739e991eb4f203bdcf9827754ab59 COPYING diff --git a/package/flite/flite.mk b/package/flite/flite.mk new file mode 100644 index 00000000..bee4c739 --- /dev/null +++ b/package/flite/flite.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# flite +# +################################################################################ + +FLITE_VERSION = 2.2 +FLITE_SITE = $(call github,festvox,flite,v$(FLITE_VERSION)) +FLITE_LICENSE = BSD-4-Clause +FLITE_LICENSE_FILES = COPYING +FLITE_CPE_ID_VENDOR = cmu + +FLITE_INSTALL_STAGING = YES +# Patching configure.in +FLITE_AUTORECONF = YES +FLITE_DEPENDENCIES = host-pkgconf + +# Sadly, Flite does not support parallel build, especially when building its +# shared libraries. +FLITE_MAKE = $(MAKE1) + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +FLITE_DEPENDENCIES += alsa-lib +FLITE_CONF_OPTS += --with-audio=alsa +else +FLITE_CONF_OPTS += --with-audio=oss +endif + +$(eval $(autotools-package)) diff --git a/package/flot/Config.in b/package/flot/Config.in new file mode 100644 index 00000000..40448720 --- /dev/null +++ b/package/flot/Config.in @@ -0,0 +1,97 @@ +config BR2_PACKAGE_FLOT + bool "flot" + select BR2_PACKAGE_JQUERY + help + Flot is a pure Javascript plotting library for jQuery. It + produces graphical plots of arbitrary datasets on-the-fly + client-side. + + The focus is on simple usage (all settings are optional), + attractive looks and interactive features like zooming and + mouse tracking. + + The plugin works with Internet Explorer 6+, Firefox 2.x+, + Safari 3.0+, Opera 9.5+ and Konqueror 4.x+ with the HTML + canvas tag. + + http://www.flotcharts.org/ + +if BR2_PACKAGE_FLOT + +comment "flot plugins" + +config BR2_PACKAGE_FLOT_CANVAS + bool "canvas" + help + Flot plugin to render axis tick labels directly to the canvas + +config BR2_PACKAGE_FLOT_CATEGORIES + bool "categories" + help + Flot plugin for plotting textual data or categories + +config BR2_PACKAGE_FLOT_CROSSHAIR + bool "crosshair" + help + Flot plugin for showing crosshairs when the mouse hovers + over the plot + +config BR2_PACKAGE_FLOT_ERRORBARS + bool "errorbars" + help + Flot plugin for plotting error bars + +config BR2_PACKAGE_FLOT_FILLBETWEEN + bool "fillbetween" + help + Flot plugin for computing bottoms for filled line and bar + charts + +config BR2_PACKAGE_FLOT_IMAGE + bool "image" + help + Flot plugin for plotting images + +config BR2_PACKAGE_FLOT_NAVIGATE + bool "navigate" + help + Flot plugin for adding panning and zooming capabilities to a + plot + +config BR2_PACKAGE_FLOT_PIE + bool "pie" + help + Flot plugin for rendering pie charts + +config BR2_PACKAGE_FLOT_RESIZE + bool "resize" + help + Flot plugin for automatically redrawing plots when the + placeholder size changes. + +config BR2_PACKAGE_FLOT_SELECTION + bool "selection" + help + Flot plugin for selecting regions + +config BR2_PACKAGE_FLOT_STACK + bool "stack" + help + Flot plugin for stacking data sets + +config BR2_PACKAGE_FLOT_SYMBOL + bool "symbol" + help + Flot plugin that adds some extra symbols for plotting points + +config BR2_PACKAGE_FLOT_THRESHOLD + bool "threshold" + help + Flot plugin for thresholding data + +config BR2_PACKAGE_FLOT_TIME + bool "time" + help + Flot plugin for handling time axes + +endif diff --git a/package/flot/flot.hash b/package/flot/flot.hash new file mode 100644 index 00000000..fb7a3319 --- /dev/null +++ b/package/flot/flot.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 ef9a873befe3ff5ea42ebf1c3657887265a1717744ca8ed0c2bd3dd736d16b21 flot-0.8.3.tar.gz +sha256 52cb566b16d84314b92b91361ed072eaaf166e8d3dfa3d0fd3577613925f205c LICENSE.txt diff --git a/package/flot/flot.mk b/package/flot/flot.mk new file mode 100644 index 00000000..58e3ff12 --- /dev/null +++ b/package/flot/flot.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# flot +# +################################################################################ + +FLOT_VERSION = 0.8.3 +FLOT_SITE = http://www.flotcharts.org/downloads +FLOT_LICENSE = MIT +FLOT_LICENSE_FILES = LICENSE.txt +FLOT_FILES = jquery.flot $(addprefix jquery.flot.,\ + $(if $(BR2_PACKAGE_FLOT_CANVAS),canvas) \ + $(if $(BR2_PACKAGE_FLOT_CATEGORIES),categories) \ + $(if $(BR2_PACKAGE_FLOT_CROSSHAIR),crosshair) \ + $(if $(BR2_PACKAGE_FLOT_ERRORBARS),errorbars) \ + $(if $(BR2_PACKAGE_FLOT_FILLBETWEEN),fillbetween) \ + $(if $(BR2_PACKAGE_FLOT_IMAGE),image) \ + $(if $(BR2_PACKAGE_FLOT_NAVIGATE),navigate) \ + $(if $(BR2_PACKAGE_FLOT_PIE),pie) \ + $(if $(BR2_PACKAGE_FLOT_RESIZE),resize) \ + $(if $(BR2_PACKAGE_FLOT_SELECTION),selection) \ + $(if $(BR2_PACKAGE_FLOT_STACK),stack) \ + $(if $(BR2_PACKAGE_FLOT_SYMBOL),symbol) \ + $(if $(BR2_PACKAGE_FLOT_THRESHOLD),threshold) \ + $(if $(BR2_PACKAGE_FLOT_TIME),time) \ + ) + +define FLOT_INSTALL_TARGET_CMDS + for i in $(FLOT_FILES); do \ + $(INSTALL) -m 0644 -D $(@D)/$$i.min.js $(TARGET_DIR)/var/www/$$i.js || exit 1; \ + done +endef + +$(eval $(generic-package)) diff --git a/package/fltk/0001-disable-tests.patch b/package/fltk/0001-disable-tests.patch new file mode 100644 index 00000000..95714531 --- /dev/null +++ b/package/fltk/0001-disable-tests.patch @@ -0,0 +1,16 @@ +Disable tests, slower to build and would need host-fltk. + +Signed-off-by: Gustavo Zacarias + +diff -Nura fltk-1.3.2.orig/Makefile fltk-1.3.2/Makefile +--- fltk-1.3.2.orig/Makefile 2013-10-27 18:19:39.693208127 -0300 ++++ fltk-1.3.2/Makefile 2013-10-27 18:20:08.032136885 -0300 +@@ -18,7 +18,7 @@ + + include makeinclude + +-DIRS = $(IMAGEDIRS) src $(CAIRODIR) fluid test documentation ++DIRS = $(IMAGEDIRS) src $(CAIRODIR) fluid documentation + + all: makeinclude fltk-config + for dir in $(DIRS); do\ diff --git a/package/fltk/Config.in b/package/fltk/Config.in new file mode 100644 index 00000000..8e9977a1 --- /dev/null +++ b/package/fltk/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_FLTK + bool "fltk" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + help + A cross-platform C++ GUI toolkit for UNIX/Linux (X11), + Microsoft Windows, and MacOS X. + + http://www.fltk.org/ + +comment "fltk needs a toolchain w/ C++" + depends on BR2_USE_MMU && BR2_PACKAGE_XORG7 + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/fltk/fltk.hash b/package/fltk/fltk.hash new file mode 100644 index 00000000..f8afe0c4 --- /dev/null +++ b/package/fltk/fltk.hash @@ -0,0 +1,5 @@ +# From http://www.fltk.org/software.php?VERSION=1.3.7 +md5 b28470d0509d00633d21bee9b65167f8 fltk-1.3.7-source.tar.bz2 +# Locally generated +sha256 5ff1e90766ff4216e78e9a19a9bf527e6258f04accccd4429e9bb829b01d690d fltk-1.3.7-source.tar.bz2 +sha256 57dd381e713fb309fb7dd85c3c38b274557ecb333475d0f1d65a5f06ad85c9a6 COPYING diff --git a/package/fltk/fltk.mk b/package/fltk/fltk.mk new file mode 100644 index 00000000..7c268393 --- /dev/null +++ b/package/fltk/fltk.mk @@ -0,0 +1,64 @@ +################################################################################ +# +# fltk +# +################################################################################ + +FLTK_VERSION = 1.3.7 +FLTK_SOURCE = fltk-$(FLTK_VERSION)-source.tar.bz2 +FLTK_SITE = http://fltk.org/pub/fltk/$(FLTK_VERSION) +FLTK_INSTALL_STAGING = YES +# We force --libdir=/usr/lib, because by default, it is set to +# ${exec_prefix}/lib, which doesn't match the condition used by the +# fltk build system to decide whether it should pass a -rpath,/usr/lib +# or not. Since this rpath breaks the build, we want the fltk build +# system to not pass it, which requires having --libdir set to +# /usr/lib. +FLTK_CONF_OPTS = --enable-threads --with-x --disable-gl \ + --disable-localjpeg --disable-localpng --disable-localzlib \ + --libdir=/usr/lib +FLTK_DEPENDENCIES = jpeg libpng xlib_libX11 xlib_libXext xlib_libXt +FLTK_CONFIG_SCRIPTS = fltk-config +FLTK_LICENSE = LGPL-2.0 with exceptions +FLTK_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_CAIRO),y) +FLTK_CONF_OPTS += --enable-cairo +FLTK_DEPENDENCIES += cairo +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y) +FLTK_DEPENDENCIES += xlib_libXcursor +FLTK_CONF_OPTS += --enable-xcursor +else +FLTK_CONF_OPTS += --disable-xcursor +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y) +FLTK_DEPENDENCIES += xlib_libXfixes +FLTK_CONF_OPTS += --enable-xfixes +else +FLTK_CONF_OPTS += --disable-xfixes +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFT),y) +FLTK_CONF_ENV += ac_cv_path_FTCONFIG=$(STAGING_DIR)/usr/bin/freetype-config +FLTK_DEPENDENCIES += xlib_libXft +else +FLTK_CONF_OPTS += --disable-xft +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +FLTK_DEPENDENCIES += xlib_libXinerama +else +FLTK_CONF_OPTS += --disable-xinerama +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRENDER),y) +FLTK_DEPENDENCIES += xlib_libXrender +FLTK_CONF_OPTS += --enable-xrender +else +FLTK_CONF_OPTS += --disable-xrender +endif + +$(eval $(autotools-package)) diff --git a/package/fluent-bit/0001-build-use-the-system-provided-LuaJIT-if-found.patch b/package/fluent-bit/0001-build-use-the-system-provided-LuaJIT-if-found.patch new file mode 100644 index 00000000..aca6401a --- /dev/null +++ b/package/fluent-bit/0001-build-use-the-system-provided-LuaJIT-if-found.patch @@ -0,0 +1,62 @@ +From 8d6f6cfb07a8fe32dc0b9577e1b2f1ee1b67b736 Mon Sep 17 00:00:00 2001 +From: Thomas Devoogdt +Date: Fri, 28 Apr 2023 10:25:16 +0200 +Subject: [PATCH] build: use the system provided LuaJIT if found + +e.g. buildroot has logic to build luajit, +so if pkg_check_modules can find a suitable version, +then use that one if -DFLB_PREFER_SYSTEM_LIBS=Yes. + +Upstream: https://github.com/fluent/fluent-bit/pull/7286 +Signed-off-by: Thomas Devoogdt +--- + CMakeLists.txt | 12 +++++++++++- + src/CMakeLists.txt | 2 +- + 2 files changed, 12 insertions(+), 2 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 2da792d53..3229420c6 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -128,6 +128,7 @@ option(FLB_TESTS_INTERNAL_FUZZ "Enable internal fuzz tests" No) + option(FLB_TESTS_OSSFUZZ "Enable OSS-Fuzz build" No) + option(FLB_MTRACE "Enable mtrace support" No) + option(FLB_POSIX_TLS "Force POSIX thread storage" No) ++option(FLB_PREFER_SYSTEM_LIBS "Prefer system installed libraries" No) + option(FLB_INOTIFY "Enable inotify support" Yes) + option(FLB_SQLDB "Enable SQL embedded DB" Yes) + option(FLB_HTTP_SERVER "Enable HTTP Server" Yes) +@@ -1023,7 +1024,16 @@ endif() + # LuaJIT (Scripting Support) + # ========================== + if(FLB_LUAJIT) +- include(cmake/luajit.cmake) ++ if(FLB_PREFER_SYSTEM_LIBS) ++ find_package(PkgConfig) ++ pkg_check_modules(LUAJIT luajit>=2.1.0) ++ endif() ++ if(LUAJIT_FOUND) ++ include_directories(${LUAJIT_INCLUDE_DIRS}) ++ else() ++ include(cmake/luajit.cmake) ++ set(LUAJIT_LIBRARIES "libluajit") ++ endif() + FLB_DEFINITION(FLB_HAVE_LUAJIT) + endif() + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index b6233d9f7..67baec456 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -221,7 +221,7 @@ endif() + if(FLB_LUAJIT) + set(extra_libs + ${extra_libs} +- "libluajit") ++ ${LUAJIT_LIBRARIES}) + endif() + + if(FLB_SQLDB) +-- +2.34.1 + diff --git a/package/fluent-bit/0002-lib-librdkafka-CMakeLists.txt-allow-compilation-with.patch b/package/fluent-bit/0002-lib-librdkafka-CMakeLists.txt-allow-compilation-with.patch new file mode 100644 index 00000000..fd3d9ce7 --- /dev/null +++ b/package/fluent-bit/0002-lib-librdkafka-CMakeLists.txt-allow-compilation-with.patch @@ -0,0 +1,120 @@ +From 29be5275f6f7e15aca768e9b235998abc5a604e2 Mon Sep 17 00:00:00 2001 +From: Thomas Devoogdt +Date: Tue, 25 Jul 2023 09:10:41 +0200 +Subject: [PATCH] lib: librdkafka: CMakeLists.txt: allow compilation without + CXX support #7741 + +e.g. fluent-bit is a c-only library, so allow compilation without cxx + +Upstream: https://github.com/confluentinc/librdkafka/pull/4366 +Upstream: https://github.com/fluent/fluent-bit/pull/7765 +Signed-off-by: Thomas Devoogdt +[Fabrice: update for 3.1.3] +Signed-off-by: Fabrice Fontaine +--- + lib/librdkafka-2.3.0/CMakeLists.txt | 18 ++++++++++-- + lib/librdkafka-2.3.0/examples/CMakeLists.txt | 31 +++++++++++++------- + 2 files changed, 35 insertions(+), 14 deletions(-) + +diff --git a/lib/librdkafka-2.4.0/CMakeLists.txt b/lib/librdkafka-2.4.0/CMakeLists.txt +index 7f3dd0fc6..c1ee93062 100644 +--- a/lib/librdkafka-2.4.0/CMakeLists.txt ++++ b/lib/librdkafka-2.4.0/CMakeLists.txt +@@ -3,7 +3,12 @@ cmake_minimum_required(VERSION 3.2) + include("packaging/cmake/parseversion.cmake") + parseversion("src/rdkafka.h") + +-project(RdKafka VERSION ${RDKAFKA_VERSION}) ++project(RdKafka VERSION ${RDKAFKA_VERSION} LANGUAGES C) ++ ++option(RDKAFKA_BUILD_CXX "Enable CXX support" ON) ++if(RDKAFKA_BUILD_CXX) ++ enable_language(CXX) ++endif() + + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/packaging/cmake/Modules/") + +@@ -181,7 +186,11 @@ endif() + + option(RDKAFKA_BUILD_STATIC "Build static rdkafka library" OFF) + option(RDKAFKA_BUILD_EXAMPLES "Build examples" ON) +-option(RDKAFKA_BUILD_TESTS "Build tests" ON) ++ ++if(RDKAFKA_BUILD_CXX) ++ option(RDKAFKA_BUILD_TESTS "Build tests" ON) ++endif() ++ + if(WIN32) + option(WITHOUT_WIN32_CONFIG "Avoid including win32_config.h on cmake builds" ON) + endif(WIN32) +@@ -279,7 +288,10 @@ install( + ) + + add_subdirectory(src) +-add_subdirectory(src-cpp) ++ ++if(RDKAFKA_BUILD_CXX) ++ add_subdirectory(src-cpp) ++endif() + + if(RDKAFKA_BUILD_EXAMPLES) + add_subdirectory(examples) +diff --git a/lib/librdkafka-2.4.0/examples/CMakeLists.txt b/lib/librdkafka-2.4.0/examples/CMakeLists.txt +index 8c0079abe..c9336b729 100644 +--- a/lib/librdkafka-2.4.0/examples/CMakeLists.txt ++++ b/lib/librdkafka-2.4.0/examples/CMakeLists.txt +@@ -5,8 +5,10 @@ endif(WIN32) + add_executable(producer producer.c ${win32_sources}) + target_link_libraries(producer PUBLIC rdkafka) + +-add_executable(producer_cpp producer.cpp ${win32_sources}) +-target_link_libraries(producer_cpp PUBLIC rdkafka++) ++if(RDKAFKA_BUILD_CXX) ++ add_executable(producer_cpp producer.cpp ${win32_sources}) ++ target_link_libraries(producer_cpp PUBLIC rdkafka++) ++endif() + + add_executable(consumer consumer.c ${win32_sources}) + target_link_libraries(consumer PUBLIC rdkafka) +@@ -14,14 +16,20 @@ target_link_libraries(consumer PUBLIC rdkafka) + add_executable(rdkafka_performance rdkafka_performance.c ${win32_sources}) + target_link_libraries(rdkafka_performance PUBLIC rdkafka) + +-add_executable(rdkafka_example_cpp rdkafka_example.cpp ${win32_sources}) +-target_link_libraries(rdkafka_example_cpp PUBLIC rdkafka++) ++if(RDKAFKA_BUILD_CXX) ++ add_executable(rdkafka_example_cpp rdkafka_example.cpp ${win32_sources}) ++ target_link_libraries(rdkafka_example_cpp PUBLIC rdkafka++) ++endif() + +-add_executable(rdkafka_complex_consumer_example_cpp rdkafka_complex_consumer_example.cpp ${win32_sources}) +-target_link_libraries(rdkafka_complex_consumer_example_cpp PUBLIC rdkafka++) ++if(RDKAFKA_BUILD_CXX) ++ add_executable(rdkafka_complex_consumer_example_cpp rdkafka_complex_consumer_example.cpp ${win32_sources}) ++ target_link_libraries(rdkafka_complex_consumer_example_cpp PUBLIC rdkafka++) ++endif() + +-add_executable(openssl_engine_example_cpp openssl_engine_example.cpp ${win32_sources}) +-target_link_libraries(openssl_engine_example_cpp PUBLIC rdkafka++) ++if(RDKAFKA_BUILD_CXX) ++ add_executable(openssl_engine_example_cpp openssl_engine_example.cpp ${win32_sources}) ++ target_link_libraries(openssl_engine_example_cpp PUBLIC rdkafka++) ++endif() + + add_executable(misc misc.c ${win32_sources}) + target_link_libraries(misc PUBLIC rdkafka) +@@ -70,7 +78,8 @@ if(NOT WIN32) + add_executable(rdkafka_complex_consumer_example rdkafka_complex_consumer_example.c) + target_link_libraries(rdkafka_complex_consumer_example PUBLIC rdkafka) + +- add_executable(kafkatest_verifiable_client kafkatest_verifiable_client.cpp) +- target_link_libraries(kafkatest_verifiable_client PUBLIC rdkafka++) +- ++ if(RDKAFKA_BUILD_CXX) ++ add_executable(kafkatest_verifiable_client kafkatest_verifiable_client.cpp) ++ target_link_libraries(kafkatest_verifiable_client PUBLIC rdkafka++) ++ endif() + endif(NOT WIN32) +-- +2.34.1 + diff --git a/package/fluent-bit/0003-CMakeLists.txt-disable-cxx-support-for-librdkafka-77.patch b/package/fluent-bit/0003-CMakeLists.txt-disable-cxx-support-for-librdkafka-77.patch new file mode 100644 index 00000000..c96a7bda --- /dev/null +++ b/package/fluent-bit/0003-CMakeLists.txt-disable-cxx-support-for-librdkafka-77.patch @@ -0,0 +1,29 @@ +From 7f3fc55b734db2d28af63c393b52bc238af9f20a Mon Sep 17 00:00:00 2001 +From: Thomas Devoogdt +Date: Tue, 25 Jul 2023 10:00:36 +0200 +Subject: [PATCH] CMakeLists.txt: disable cxx support for librdkafka #7741 + +Fluent-bit is c only, so no need to compile cxx. +This fixes also a compile error in buildroot. + +Upstream: https://github.com/fluent/fluent-bit/pull/7765 +Signed-off-by: Thomas Devoogdt +--- + CMakeLists.txt | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 3229420c6..2694f189f 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -979,6 +979,7 @@ if(FLB_BACKTRACE) + endif() + + if(FLB_IN_KAFKA OR FLB_OUT_KAFKA) ++ FLB_OPTION(RDKAFKA_BUILD_CXX Off) + FLB_OPTION(RDKAFKA_BUILD_STATIC On) + FLB_OPTION(RDKAFKA_BUILD_EXAMPLES Off) + FLB_OPTION(RDKAFKA_BUILD_TESTS Off) +-- +2.34.1 + diff --git a/package/fluent-bit/0004-Enhance-setting-write-gs-base-with-cmake-variable-30.patch b/package/fluent-bit/0004-Enhance-setting-write-gs-base-with-cmake-variable-30.patch new file mode 100644 index 00000000..9cdab4c4 --- /dev/null +++ b/package/fluent-bit/0004-Enhance-setting-write-gs-base-with-cmake-variable-30.patch @@ -0,0 +1,99 @@ +From 7eacb2ab839e74cb07038398def5e3cc198448d4 Mon Sep 17 00:00:00 2001 +From: Wenyong Huang +Date: Tue, 23 Jan 2024 12:21:20 +0800 +Subject: [PATCH] Enhance setting write gs base with cmake variable (#3066) + +In linux x86-64, developer can use cmake variable to configure whether +to enable writing linear memory base address to x86 GS register or not: +- `cmake -DWAMR_DISABLE_WRITE_GS_BASE=1`: disabled it +- `cmake -DWAMR_DISABLE_WRITE_GS_BASE=0`: enabled it +- `cmake` without `-DWAMR_DISABLE_WRITE_GS_BASE=1/0`: + auto-detected by the compiler + +Upstream: https://github.com/bytecodealliance/wasm-micro-runtime/pull/3066 +Signed-off-by: Thomas Devoogdt +--- + .../build-scripts/config_common.cmake | 65 ++++++++++++------- + 1 file changed, 41 insertions(+), 24 deletions(-) + +diff --git a/lib/wasm-micro-runtime-WAMR-1.3.0/build-scripts/config_common.cmake b/lib/wasm-micro-runtime-WAMR-1.3.0/build-scripts/config_common.cmake +index e73ebc85f..a61a522f3 100644 +--- a/lib/wasm-micro-runtime-WAMR-1.3.0/build-scripts/config_common.cmake ++++ b/lib/wasm-micro-runtime-WAMR-1.3.0/build-scripts/config_common.cmake +@@ -408,32 +408,49 @@ if (WAMR_BUILD_STATIC_PGO EQUAL 1) + add_definitions (-DWASM_ENABLE_STATIC_PGO=1) + message (" AOT static PGO enabled") + endif () +-if (WAMR_DISABLE_WRITE_GS_BASE EQUAL 1) +- add_definitions (-DWASM_DISABLE_WRITE_GS_BASE=1) +- message (" Write linear memory base addr to x86 GS register disabled") +-elseif (WAMR_BUILD_TARGET STREQUAL "X86_64" +- AND WAMR_BUILD_PLATFORM STREQUAL "linux") +- set (TEST_WRGSBASE_SOURCE "${CMAKE_BINARY_DIR}/test_wrgsbase.c") +- file (WRITE "${TEST_WRGSBASE_SOURCE}" " +- #include +- #include +- int main() { +- uint64_t value; +- asm volatile (\"wrgsbase %0\" : : \"r\"(value)); +- printf(\"WRGSBASE instruction is available.\\n\"); +- return 0; +- }") +- # Try to compile and run the test program +- try_run (TEST_WRGSBASE_RESULT +- TEST_WRGSBASE_COMPILED +- ${CMAKE_BINARY_DIR}/test_wrgsbase +- SOURCES ${TEST_WRGSBASE_SOURCE} +- CMAKE_FLAGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} +- ) +- #message("${TEST_WRGSBASE_COMPILED}, ${TEST_WRGSBASE_RESULT}") +- if (NOT TEST_WRGSBASE_RESULT EQUAL 0) ++if (WAMR_BUILD_TARGET STREQUAL "X86_64" ++ AND WAMR_BUILD_PLATFORM STREQUAL "linux") ++ if (WAMR_DISABLE_WRITE_GS_BASE EQUAL 1) ++ # disabled by user ++ set (DISABLE_WRITE_GS_BASE 1) ++ elseif (WAMR_DISABLE_WRITE_GS_BASE EQUAL 0) ++ # enabled by user ++ set (DISABLE_WRITE_GS_BASE 0) ++ elseif (CMAKE_CROSSCOMPILING) ++ # disabled in cross compilation environment ++ set (DISABLE_WRITE_GS_BASE 1) ++ else () ++ # auto-detected by the compiler ++ set (TEST_WRGSBASE_SOURCE "${CMAKE_BINARY_DIR}/test_wrgsbase.c") ++ file (WRITE "${TEST_WRGSBASE_SOURCE}" " ++ #include ++ #include ++ int main() { ++ uint64_t value; ++ asm volatile (\"wrgsbase %0\" : : \"r\"(value)); ++ printf(\"WRGSBASE instruction is available.\\n\"); ++ return 0; ++ }") ++ # Try to compile and run the test program ++ try_run (TEST_WRGSBASE_RESULT ++ TEST_WRGSBASE_COMPILED ++ ${CMAKE_BINARY_DIR}/test_wrgsbase ++ SOURCES ${TEST_WRGSBASE_SOURCE} ++ CMAKE_FLAGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} ++ ) ++ #message("${TEST_WRGSBASE_COMPILED}, ${TEST_WRGSBASE_RESULT}") ++ if (TEST_WRGSBASE_RESULT EQUAL 0) ++ set (DISABLE_WRITE_GS_BASE 0) ++ else () ++ set (DISABLE_WRITE_GS_BASE 1) ++ endif () ++ endif () ++ if (DISABLE_WRITE_GS_BASE EQUAL 1) + add_definitions (-DWASM_DISABLE_WRITE_GS_BASE=1) + message (" Write linear memory base addr to x86 GS register disabled") ++ else () ++ add_definitions (-DWASM_DISABLE_WRITE_GS_BASE=0) ++ message (" Write linear memory base addr to x86 GS register enabled") + endif () + endif () + if (WAMR_CONFIGUABLE_BOUNDS_CHECKS EQUAL 1) +-- +2.34.1 + diff --git a/package/fluent-bit/Config.in b/package/fluent-bit/Config.in new file mode 100644 index 00000000..697cb1bf --- /dev/null +++ b/package/fluent-bit/Config.in @@ -0,0 +1,49 @@ +config BR2_PACKAGE_FLUENT_BIT + bool "fluent-bit" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_STATIC_LIBS # dlfcn.h + select BR2_PACKAGE_MUSL_FTS if !BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENGINES # needed by bundled librdkafka + select BR2_PACKAGE_LIBYAML + help + Fast and Lightweight Logs and Metrics processor. + + https://github.com/fluent/fluent-bit + +if BR2_PACKAGE_FLUENT_BIT + +config BR2_PACKAGE_FLUENT_BIT_WASM_ARCH + string + default "AARCH64" if BR2_aarch64 || BR2_aarch64_be + default "ARC" if BR2_arcle || BR2_arceb + default "ARM" if BR2_arm || BR2_armeb + default "MIPS" if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + default "RISCV32" if BR2_riscv && BR2_RISCV_32 + default "RISCV64" if BR2_riscv && BR2_RISCV_64 + default "X86_32" if BR2_i386 + default "X86_64" if BR2_x86_64 + default "XTENSA" if BR2_xtensa + +config BR2_PACKAGE_FLUENT_BIT_WASM_ARCH_SUPPORTS + bool + default y if BR2_PACKAGE_FLUENT_BIT_WASM_ARCH != "" + +config BR2_PACKAGE_FLUENT_BIT_WASM + bool "wasm runtime support" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_FLUENT_BIT_WASM_ARCH_SUPPORTS + help + Support for WASM-based plugins. + +comment "wasm runtime support needs a toolchain w/ C++" + depends on BR2_PACKAGE_FLUENT_BIT_WASM_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP + +endif + +comment "fluent-bit needs a toolchain w/ threads, dynamic library" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/fluent-bit/S99fluent-bit b/package/fluent-bit/S99fluent-bit new file mode 100644 index 00000000..f4ba0e44 --- /dev/null +++ b/package/fluent-bit/S99fluent-bit @@ -0,0 +1,72 @@ +#!/bin/sh + +DAEMON="fluent-bit" +PID_FILE="/var/run/$DAEMON.pid" +CONF_FILE="/etc/$DAEMON/$DAEMON.conf" + +FLUENT_BIT_ARGS="" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -b -m -p "$PID_FILE" --exec "/usr/bin/$DAEMON" \ + -- -c "$CONF_FILE" $FLUENT_BIT_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PID_FILE" + status=$? + + if [ -f "$PID_FILE" ]; then + pid=$(cat "$PID_FILE") + rm -f "$PID_FILE" + + # https://docs.fluentbit.io/manual/administration/configuring-fluent-bit/yaml/configuration-file#config_section + # The default grace time is set to 5 seconds, so use 6 seconds to have some margin. + timeout=6 + while kill -0 "$pid" 2>/dev/null; do + [ $timeout -eq 0 ] && status=1 && break + timeout=$((timeout - 1)) + sleep 1 + done + fi + + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + start +} + +case "$1" in +start) + start + ;; +stop) + stop + ;; +restart | reload) + restart + ;; +*) + echo "Usage: $0 {start|stop|restart}" + exit 1 + ;; +esac diff --git a/package/fluent-bit/fluent-bit.hash b/package/fluent-bit/fluent-bit.hash new file mode 100644 index 00000000..a3dbf5f5 --- /dev/null +++ b/package/fluent-bit/fluent-bit.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 4c745066223811047e3911c19db118eadec579ca62ef833a1b1fb573acd8cb85 fluent-bit-3.1.3.tar.gz +sha256 0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594 LICENSE diff --git a/package/fluent-bit/fluent-bit.mk b/package/fluent-bit/fluent-bit.mk new file mode 100644 index 00000000..10e639a3 --- /dev/null +++ b/package/fluent-bit/fluent-bit.mk @@ -0,0 +1,80 @@ +################################################################################ +# +# fluent-bit +# +################################################################################ + +FLUENT_BIT_VERSION = 3.1.3 +FLUENT_BIT_SITE = $(call github,fluent,fluent-bit,v$(FLUENT_BIT_VERSION)) +FLUENT_BIT_LICENSE = Apache-2.0 +FLUENT_BIT_LICENSE_FILES = LICENSE +FLUENT_BIT_CPE_ID_VENDOR = treasuredata +FLUENT_BIT_CPE_ID_PRODUCT = fluent_bit +FLUENT_BIT_DEPENDENCIES = host-bison host-flex libyaml openssl + +FLUENT_BIT_CONF_OPTS += \ + -DFLB_DEBUG=No \ + -DFLB_RELEASE=Yes \ + -DFLB_SECURITY=No \ + -DFLB_EXAMPLES=No \ + -DFLB_CHUNK_TRACE=No \ + -DFLB_PREFER_SYSTEM_LIBS=Yes \ + -DFLB_BACKTRACE=No + +ifeq ($(BR2_PACKAGE_FLUENT_BIT_WASM),y) +FLUENT_BIT_WAMR_ARCH = $(call qstrip,$(BR2_PACKAGE_FLUENT_BIT_WASM_ARCH)) + +# https://github.com/bytecodealliance/wasm-micro-runtime/issues/625 +# Fix unknown opcode 'ldc1', seen on mips32r2 and mips64r2. +ifeq ($(FLUENT_BIT_WAMR_ARCH),MIPS) +FLUENT_BIT_CONF_OPTS += \ + -DWAMR_BUILD_INVOKE_NATIVE_GENERAL=1 +endif + +FLUENT_BIT_CONF_OPTS += -DFLB_WASM=Yes \ + -DWAMR_BUILD_TARGET=$(FLUENT_BIT_WAMR_ARCH) +else +FLUENT_BIT_CONF_OPTS += -DFLB_WASM=No +endif + +ifeq ($(BR2_PACKAGE_LUAJIT),y) +FLUENT_BIT_CONF_OPTS += -DFLB_LUAJIT=Yes +FLUENT_BIT_DEPENDENCIES += luajit +else +FLUENT_BIT_CONF_OPTS += -DFLB_LUAJIT=No +endif + +# Force bundled miniz to be linked statically. +# https://github.com/fluent/fluent-bit/issues/6711 +FLUENT_BIT_CONF_OPTS += \ + -DBUILD_SHARED_LIBS=OFF + +# Move the config files from /usr/etc/ to /etc/. +# https://github.com/fluent/fluent-bit/issues/6619 +FLUENT_BIT_CONF_OPTS += \ + -DCMAKE_INSTALL_SYSCONFDIR="/etc/" + +ifeq ($(BR2_PACKAGE_LIBEXECINFO),y) +FLUENT_BIT_DEPENDENCIES += libexecinfo +FLUENT_BIT_LDFLAGS += -lexecinfo +endif + +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),) +FLUENT_BIT_DEPENDENCIES += musl-fts +FLUENT_BIT_LDFLAGS += -lfts +endif + +# Uses __atomic_compare_exchange_8 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +FLUENT_BIT_LDFLAGS += -latomic +endif + +FLUENT_BIT_CONF_OPTS += \ + -DCMAKE_EXE_LINKER_FLAGS="$(FLUENT_BIT_LDFLAGS)" + +define FLUENT_BIT_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/fluent-bit/S99fluent-bit \ + $(TARGET_DIR)/etc/init.d/S99fluent-bit +endef + +$(eval $(cmake-package)) diff --git a/package/fluid-soundfont/Config.in b/package/fluid-soundfont/Config.in new file mode 100644 index 00000000..67f5ea11 --- /dev/null +++ b/package/fluid-soundfont/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_FLUID_SOUNDFONT + bool "fluid-soundfont" + help + FluidR3 is the third release of Frank Wen's pro-quality + GM/GS soundfont. The soundfont has lots of excellent + samples, including all the GM instruments along side with + the GS instruments that are recycled and reprogrammed + versions of the GM presets. + + This package contains Fluid General Midi (GM) soundfont in + soundfont 2.0 (.sf2) format. + + This soundfont can be used with the FluidSynth real-time + software synthesizer. + + http://www.hammersound.net diff --git a/package/fluid-soundfont/fluid-soundfont.hash b/package/fluid-soundfont/fluid-soundfont.hash new file mode 100644 index 00000000..ecc57a1e --- /dev/null +++ b/package/fluid-soundfont/fluid-soundfont.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2621acaa1c78e4abdb24bdd163230cc577e61276936d6aa6e3180582142f0343 fluid-soundfont_3.1.orig.tar.gz +sha256 8ef830b65c97a976b86e34bb5fde08d99dfb1db13c4149b5b20bc837ac6c4568 COPYING diff --git a/package/fluid-soundfont/fluid-soundfont.mk b/package/fluid-soundfont/fluid-soundfont.mk new file mode 100644 index 00000000..f8fd986c --- /dev/null +++ b/package/fluid-soundfont/fluid-soundfont.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# fluid-soundfont +# +################################################################################ + +FLUID_SOUNDFONT_VERSION = 3.1 +FLUID_SOUNDFONT_SOURCE = fluid-soundfont_$(FLUID_SOUNDFONT_VERSION).orig.tar.gz +# The http://www.hammersound.net archive site seems unreliable (show HTTP 500 +# error), and also publish the file in the sfArk format, which is inconvenient +# to be used in automated build. We use here the Debian mirror publishing the +# file in a more convenient format (inative sf2 in a tar.gz archive). +FLUID_SOUNDFONT_SITE = http://http.debian.net/debian/pool/main/f/fluid-soundfont +FLUID_SOUNDFONT_LICENSE = MIT +FLUID_SOUNDFONT_LICENSE_FILES = COPYING + +define FLUID_SOUNDFONT_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0644 $(@D)/FluidR3_GM.sf2 $(TARGET_DIR)/usr/share/soundfonts/FluidR3_GM.sf2 +endef + +$(eval $(generic-package)) diff --git a/package/fluidsynth/Config.in b/package/fluidsynth/Config.in new file mode 100644 index 00000000..376419ce --- /dev/null +++ b/package/fluidsynth/Config.in @@ -0,0 +1,135 @@ +config BR2_PACKAGE_FLUIDSYNTH + bool "fluidsynth" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + # the .pc file installed by fluidsynth does not mention its + # indirect dependencies in Libs.private. + depends on !BR2_STATIC_LIBS + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LIBGLIB2 + help + FluidSynth is a real-time software synthesizer based on the + SoundFont 2 specifications and has reached widespread + distribution. FluidSynth itself does not have a graphical + user interface, but due to its powerful API several + applications utilize it and it has even found its way onto + embedded systems and is used in some mobile apps. + + http://www.fluidsynth.org/ + +if BR2_PACKAGE_FLUIDSYNTH + +comment "Output support" + +config BR2_PACKAGE_FLUIDSYNTH_ALSA_LIB + bool "alsa" + default y + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_RAWMIDI + select BR2_PACKAGE_ALSA_LIB_SEQ + help + Enable alsa support. + +comment "alsa support needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_FLUIDSYNTH_JACK2 + bool "jack2" + # See: https://sourceware.org/bugzilla/show_bug.cgi?id=19908 + depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS + depends on BR2_TOOLCHAIN_HAS_THREADS # jack2 + depends on BR2_USE_MMU # jack2 + depends on BR2_INSTALL_LIBSTDCPP # jack2 + depends on !BR2_STATIC_LIBS # jack2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # jack2 + select BR2_PACKAGE_JACK2 + help + Enable jack support. + +comment "jack support needs a toolchain w/ dynamic library, threads, C++" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_FLUIDSYNTH_LIBSNDFILE + bool "libsndfile" + select BR2_PACKAGE_LIBSNDFILE + help + Enable libsndfile support, for writing output to WAV files. + +config BR2_PACKAGE_FLUIDSYNTH_PORTAUDIO + bool "portaudio" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_PORTAUDIO + help + Enable portaudio support. + +comment "portaudio support needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_FLUIDSYNTH_PULSEAUDIO + bool "pulseaudio" + # See: https://sourceware.org/bugzilla/show_bug.cgi?id=19908 + depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS + depends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC # pulseaudio + depends on BR2_USE_WCHAR # pulseaudio + depends on BR2_TOOLCHAIN_HAS_THREADS # pulseaudio + depends on !BR2_STATIC_LIBS # pulseaudio + depends on BR2_USE_MMU # pulseaudio + select BR2_PACKAGE_PULSEAUDIO + help + Enable PulseAudio support. + +comment "pulseaudio support needs a toolchain w/ dynamic library, wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS + depends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC + depends on BR2_STATIC_LIBS || !BR2_USE_MMU || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_FLUIDSYNTH_SDL2 + bool "sdl2" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_SDL2 + help + Enable SDL2 audio support. + +comment "SDL2 audio support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +comment "Misc options" + +config BR2_PACKAGE_FLUIDSYNTH_DBUS + bool "dbus" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU + select BR2_PACKAGE_DBUS + help + Enable dbus support. + +comment "dbus support needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_FLUIDSYNTH_FLOATS + bool "32-bit single precision float" + help + Enable 32-bit single precision float support, instead of + 64-bit double precision floats for DSP samples. + +config BR2_PACKAGE_FLUIDSYNTH_READLINE + bool "readline" + select BR2_PACKAGE_READLINE + help + Enable readline support, for better line editing in FluidSynth + shell. + +endif # BR2_PACKAGE_FLUIDSYNTH + +comment "fluidsynth needs a toolchain w/ threads, wchar, dynamic library, C++" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP diff --git a/package/fluidsynth/fluidsynth.hash b/package/fluidsynth/fluidsynth.hash new file mode 100644 index 00000000..0f54ad25 --- /dev/null +++ b/package/fluidsynth/fluidsynth.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 3340d73286b28fe6e5150fbe12648d4640e86c64c228878b572773bd08cac531 fluidsynth-2.3.6.tar.gz +sha256 9b872a8a070b8ad329c4bd380fb1bf0000f564c75023ec8e1e6803f15364b9e9 LICENSE diff --git a/package/fluidsynth/fluidsynth.mk b/package/fluidsynth/fluidsynth.mk new file mode 100644 index 00000000..3105162b --- /dev/null +++ b/package/fluidsynth/fluidsynth.mk @@ -0,0 +1,84 @@ +################################################################################ +# +# fluidsynth +# +################################################################################ + +FLUIDSYNTH_VERSION = 2.3.6 +FLUIDSYNTH_SITE = $(call github,FluidSynth,fluidsynth,v$(FLUIDSYNTH_VERSION)) +FLUIDSYNTH_LICENSE = LGPL-2.1+ +FLUIDSYNTH_LICENSE_FILES = LICENSE +FLUIDSYNTH_CPE_ID_VENDOR = fluidsynth +FLUIDSYNTH_INSTALL_STAGING = YES +FLUIDSYNTH_DEPENDENCIES = libglib2 + +ifeq ($(BR2_PACKAGE_FLUIDSYNTH_ALSA_LIB),y) +FLUIDSYNTH_CONF_OPTS += -Denable-alsa=1 +FLUIDSYNTH_DEPENDENCIES += alsa-lib +else +FLUIDSYNTH_CONF_OPTS += -Denable-alsa=0 +endif + +ifeq ($(BR2_PACKAGE_FLUIDSYNTH_DBUS),y) +FLUIDSYNTH_CONF_OPTS += -Denable-dbus=1 +FLUIDSYNTH_DEPENDENCIES += dbus +else +FLUIDSYNTH_CONF_OPTS += -Denable-dbus=0 +endif + +ifeq ($(BR2_PACKAGE_FLUIDSYNTH_FLOATS),y) +FLUIDSYNTH_CONF_OPTS += -Denable-floats=1 +else +FLUIDSYNTH_CONF_OPTS += -Denable-floats=0 +endif + +ifeq ($(BR2_PACKAGE_FLUIDSYNTH_JACK2),y) +FLUIDSYNTH_CONF_OPTS += -Denable-jack=1 +FLUIDSYNTH_DEPENDENCIES += jack2 +else +FLUIDSYNTH_CONF_OPTS += -Denable-jack=0 +endif + +ifeq ($(BR2_PACKAGE_FLUIDSYNTH_LIBSNDFILE),y) +FLUIDSYNTH_CONF_OPTS += -Denable-libsndfile=1 +FLUIDSYNTH_DEPENDENCIES += libsndfile +else +FLUIDSYNTH_CONF_OPTS += -Denable-libsndfile=0 +endif + +ifeq ($(BR2_PACKAGE_FLUIDSYNTH_PORTAUDIO),y) +FLUIDSYNTH_CONF_OPTS += -Denable-portaudio=1 +FLUIDSYNTH_DEPENDENCIES += portaudio +else +FLUIDSYNTH_CONF_OPTS += -Denable-portaudio=0 +endif + +ifeq ($(BR2_PACKAGE_FLUIDSYNTH_PULSEAUDIO),y) +FLUIDSYNTH_CONF_OPTS += -Denable-pulseaudio=1 +FLUIDSYNTH_DEPENDENCIES += pulseaudio +else +FLUIDSYNTH_CONF_OPTS += -Denable-pulseaudio=0 +endif + +ifeq ($(BR2_PACKAGE_FLUIDSYNTH_READLINE),y) +FLUIDSYNTH_CONF_OPTS += -Denable-readline=1 +FLUIDSYNTH_DEPENDENCIES += readline +else +FLUIDSYNTH_CONF_OPTS += -Denable-readline=0 +endif + +ifeq ($(BR2_PACKAGE_FLUIDSYNTH_SDL2),y) +FLUIDSYNTH_CONF_OPTS += -Denable-sdl2=1 +FLUIDSYNTH_DEPENDENCIES += sdl2 +else +FLUIDSYNTH_CONF_OPTS += -Denable-sdl2=0 +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +FLUIDSYNTH_CONF_OPTS += -Denable-systemd=1 +FLUIDSYNTH_DEPENDENCIES += systemd +else +FLUIDSYNTH_CONF_OPTS += -Denable-systemd=0 +endif + +$(eval $(cmake-package)) diff --git a/package/flutter-engine/0001-disable-pre-canned-sysroot.patch b/package/flutter-engine/0001-disable-pre-canned-sysroot.patch new file mode 100644 index 00000000..953705e3 --- /dev/null +++ b/package/flutter-engine/0001-disable-pre-canned-sysroot.patch @@ -0,0 +1,32 @@ +From 49a14e693124dc34f2cccbfb755d01a1198aa6bf Mon Sep 17 00:00:00 2001 +From: Joel Winarske +Date: Wed, 19 Jul 2023 15:24:22 -0700 +Subject: [PATCH] disable pre-canned sysroot + +Override should be enabled if a custom sysroot using --target-sysroot is +specified. If --target-sysroot is not set, then it should default to the +pre-canned sysroot. + +Upstream: https://github.com/flutter/flutter/issues/123073 +Signed-off-by: Joel Winarske +Signed-off-by: Adam Duskett +--- + build/config/sysroot.gni | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/build/config/sysroot.gni b/build/config/sysroot.gni +index 7987e519d..1de694263 100644 +--- a/build/config/sysroot.gni ++++ b/build/config/sysroot.gni +@@ -14,7 +14,7 @@ declare_args() { + + # Whether to use the default sysroot when building for Linux, if an explicit + # sysroot isn't set. +- use_default_linux_sysroot = true ++ use_default_linux_sysroot = false + } + + if (current_toolchain == default_toolchain && target_sysroot != "") { +-- +2.41.0 + diff --git a/package/flutter-engine/0002-remove-explicit-x11-dependency.patch b/package/flutter-engine/0002-remove-explicit-x11-dependency.patch new file mode 100644 index 00000000..23d7ec9b --- /dev/null +++ b/package/flutter-engine/0002-remove-explicit-x11-dependency.patch @@ -0,0 +1,33 @@ +From b1a5db9318ca33a03f2700758d5debad907d21b6 Mon Sep 17 00:00:00 2001 +From: Joel Winarske +Date: Wed, 19 Jul 2023 15:26:40 -0700 +Subject: [PATCH] remove explicit x11 dependency + +This is superfluous and may conflict with the actual rendering system used in +gtk3 (e.g. wayland.) + +Upstream: https://github.com/flutter/flutter/issues/123073 +Signed-off-by: Joel Winarske +Signed-off-by: Adam Duskett +--- + flutter/shell/platform/linux/config/BUILD.gn | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/flutter/shell/platform/linux/config/BUILD.gn b/flutter/shell/platform/linux/config/BUILD.gn +index da0ac056b..70c7a0ea1 100644 +--- a/flutter/shell/platform/linux/config/BUILD.gn ++++ b/flutter/shell/platform/linux/config/BUILD.gn +@@ -5,10 +5,6 @@ + import("//build/config/linux/pkg_config.gni") + import("//flutter/shell/platform/glfw/config.gni") + +-pkg_config("x11") { +- packages = [ "x11" ] +-} +- + pkg_config("gtk") { + packages = [ "gtk+-3.0" ] + } +-- +2.41.0 + diff --git a/package/flutter-engine/0003-fix-toolchain-paths.patch b/package/flutter-engine/0003-fix-toolchain-paths.patch new file mode 100644 index 00000000..ba5d5f80 --- /dev/null +++ b/package/flutter-engine/0003-fix-toolchain-paths.patch @@ -0,0 +1,40 @@ +From ca175ef5bf7f96db57fb5aa562602dc424fab81c Mon Sep 17 00:00:00 2001 +From: Joel Winarske +Date: Sun, 5 Mar 2023 10:43:02 -0800 +Subject: [PATCH] fix toolchain paths + +Flutter includes a copy of clang which is required to build. However, by +default, build/toolchain/custom/BUILD.gn attempts to use several gcc utilities +such as ar, readelf, nm, and strip. Change these to the proper llvm provided +utility. + +Upstream: https://github.com/flutter/flutter/issues/123073 + +Signed-off-by: Joel Winarske +Signed-off-by: Adam Duskett +--- + build/toolchain/custom/BUILD.gn | 4 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +diff --git a/build/toolchain/custom/BUILD.gn b/build/toolchain/custom/BUILD.gn +index 65b1623..8b3f6f8 100644 +--- a/build/toolchain/custom/BUILD.gn ++++ b/build/toolchain/custom/BUILD.gn +@@ -12,11 +12,11 @@ toolchain("custom") { + # these values in our scope. + cc = "${toolchain_bin}/clang" + cxx = "${toolchain_bin}/clang++" +- ar = "${toolchain_bin}/${custom_target_triple}-ar" ++ ar = "${toolchain_bin}/llvm-ar" + ld = "${toolchain_bin}/clang++" +- readelf = "${toolchain_bin}/${custom_target_triple}-readelf" +- nm = "${toolchain_bin}/${custom_target_triple}-nm" +- strip = "${toolchain_bin}/${custom_target_triple}-strip" ++ readelf = "${toolchain_bin}/llvm-readelf" ++ nm = "${toolchain_bin}/llvm-nm" ++ strip = "${toolchain_bin}/llvm-strip" + + target_triple_flags = "--target=${custom_target_triple}" + sysroot_flags = "--sysroot ${custom_sysroot}" +-- +2.39.2 diff --git a/package/flutter-engine/0004-pkg-config.py-do-not-prepend-sysroot-path.patch b/package/flutter-engine/0004-pkg-config.py-do-not-prepend-sysroot-path.patch new file mode 100644 index 00000000..a31be7d7 --- /dev/null +++ b/package/flutter-engine/0004-pkg-config.py-do-not-prepend-sysroot-path.patch @@ -0,0 +1,37 @@ +From 51e8fed854fd9d373bb9b20d7ed8e7cf6ef12312 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Wed, 19 Jul 2023 11:48:59 -0700 +Subject: [PATCH] pkg-config.py: do not prepend sysroot path + +Buildroot uses the standard PKG_CONFIG_SYSROOT_DIR variable, so what the +pkg-config.py script is doing doesn't make sense. There is no need to prepend +the sysroot, and flutter should let pkg-config use the PKG_CONFIG_SYSROOT_DIR +variable. + +Without this patch, the pkg-config.py script double prepends the sysroot path. +IE: output/host/.../sysroot/output/host/.../sysroot + +Upstream: https://github.com/flutter/flutter/issues/132152 +Signed-off-by: Adam Duskett +--- + build/config/linux/pkg-config.py | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/build/config/linux/pkg-config.py b/build/config/linux/pkg-config.py +index b4a6aff17..44ffdcaea 100644 +--- a/build/config/linux/pkg-config.py ++++ b/build/config/linux/pkg-config.py +@@ -207,9 +207,7 @@ def main(): + all_flags = flag_string.strip().split(' ') + + +- sysroot = options.sysroot +- if not sysroot: +- sysroot = '' ++ sysroot = '' + + includes = [] + cflags = [] +-- +2.41.0 + diff --git a/package/flutter-engine/Config.in b/package/flutter-engine/Config.in new file mode 100644 index 00000000..00bcd05c --- /dev/null +++ b/package/flutter-engine/Config.in @@ -0,0 +1,78 @@ +# Flutter includes a vender copy of clang which is mandatory to use for +# compiling. These are the supported architectures. +config BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS + bool + default y if BR2_aarch64 + default y if BR2_arm && !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV5 + default y if BR2_x86_64 + +config BR2_PACKAGE_FLUTTER_ENGINE + bool "flutter-engine" + depends on BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::shared_future + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR # std::wstring + depends on BR2_HOST_GCC_AT_LEAST_5 + depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_HOST_DEPOT_TOOLS + select BR2_PACKAGE_ZLIB + help + Flutter is Google's SDK for crafting beautiful, fast user + experience for mobile, web, and desktop from a single + codebase. Flutter works with existing code, is used by + developers and organizations around the world, and is + free and open source. + + The Flutter Engine is a portable runtime for hosting + Flutter applications. It implements Flutter's core + libraries, including animation and graphics, file and + network I/O, accessibility support, plugin architecture, + and a Dart runtime and compile toolchain. Most developers + will interact with Flutter via the Flutter Framework, + which provides a modern, reactive framework, and a rich + set of platform, layout and foundation widgets. + + https://github.com/flutter/engine + +if BR2_PACKAGE_FLUTTER_ENGINE + +config FLUTTER_ENGINE_RUNTIME_MODE_PROFILE + bool "enable profiling" + help + Some debugging ability is maintained—enough to profile your + apps performance. Profile mode is disabled on the emulator + and simulator, because their behavior is not representative + of real performance. Profile mode is similar to release mode, + with the following differences: + + - Some service extensions, such as the one that enables the + performance overlay, are enabled. + + - Tracing is enabled, and tools supporting source-level + debugging (such as DevTools) can connect to the process. + + If this option is left unselected, the global option + BR2_ENABLE_RUNTIME_DEBUG determines whether to build Flutter + in release or debug mode. + + https://docs.flutter.dev/testing/build-modes#profile + +endif + +comment "flutter-engine needs an OpenGL or OpenGLES backend" + depends on BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS + depends on !BR2_PACKAGE_HAS_LIBGL && !BR2_PACKAGE_HAS_LIBGLES + +comment "flutter-engine needs a glibc toolchain w/ wchar, C++, gcc >= 5, dynamic library, host gcc >= 5" + depends on BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_5 || BR2_STATIC_LIBS \ + || !BR2_USE_WCHAR || !BR2_HOST_GCC_AT_LEAST_5 + +comment "flutter-engine needs a toolchain not affected by GCC bug 64735" + depends on BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/flutter-engine/dot-gclient b/package/flutter-engine/dot-gclient new file mode 100644 index 00000000..6ead80c8 --- /dev/null +++ b/package/flutter-engine/dot-gclient @@ -0,0 +1,14 @@ +# Definition file to download flutter-engine +# Inspired by the output of meta-flutter/lib/gn.py + +solutions = [{ + "managed": False, + "name": "src/flutter", + "url": "https://github.com/flutter/engine.git@!FLUTTER_VERSION!", + "custom_vars": { + "download_android_deps": False, + "download_windows_deps": False, + "download_linux_deps": False, + "download_fuchsia_deps": False + }, +}] diff --git a/package/flutter-engine/flutter-engine.mk b/package/flutter-engine/flutter-engine.mk new file mode 100644 index 00000000..020fa2ee --- /dev/null +++ b/package/flutter-engine/flutter-engine.mk @@ -0,0 +1,253 @@ +################################################################################ +# +# flutter-engine +# +################################################################################ + +# Flutter-engine has a release on the GitHub page. However, that release is +# only for Google. Its intended purpose is for the gclient tool provided by +# Google in their depot-tools package. To use the source code, we must use +# gclient to download the flutter-engine source code along with several other +# projects. Unfortunately, the Buildroot download system does not have the +# capability of using gclient, and considering this package is the only +# package that uses gclient, we side-step the entire download process and +# perform the following steps if a tarball does not exist already: +# +# - Copy the pre-made gclient config file to a temporary scratch directory. +# - Run gclient sync to generate a source directory with the proper +# flutter-engine source code in the correct places. +# - Create a source tarball. +# - Copy the source tarball to the $(FLUTTER_ENGINE_DL_DIR) directory. +# +# There is no hash provided, as the gn binary (used for configuration) relies +# on the .git directories. As such, a reproducible tarball is not possible. +FLUTTER_ENGINE_VERSION = 3.24.0 + +# There is nothing for Buildroot to download. This is handled by gclient. +FLUTTER_ENGINE_SITE = +FLUTTER_ENGINE_SOURCE = +FLUTTER_ENGINE_LICENSE = BSD-3-Clause +FLUTTER_ENGINE_LICENSE_FILES = LICENSE +FLUTTER_ENGINE_TARBALL_PATH = $(FLUTTER_ENGINE_DL_DIR)/flutter-$(FLUTTER_ENGINE_VERSION).tar.gz +FLUTTER_ENGINE_INSTALL_STAGING = YES +FLUTTER_ENGINE_DOWNLOAD_DEPENDENCIES = host-depot-tools +FLUTTER_ENGINE_DEPENDENCIES = \ + host-flutter-sdk-bin \ + host-ninja \ + host-pkgconf \ + freetype \ + zlib + +# Dispatch all architectures of flutter +# FLUTTER_ENGINE_TARGET_TRIPPLE must match the directory name found in +# buildtools/linux-x64/clang/lib/clang/*/lib +ifeq ($(BR2_aarch64),y) +FLUTTER_ENGINE_TARGET_ARCH = arm64 +FLUTTER_ENGINE_TARGET_TRIPPLE = aarch64-unknown-linux-gnu +else ifeq ($(BR2_arm)$(BR2_armeb),y) +FLUTTER_ENGINE_TARGET_ARCH = arm +FLUTTER_ENGINE_TARGET_TRIPPLE = armv7-unknown-linux-gnueabihf +else ifeq ($(BR2_x86_64),y) +FLUTTER_ENGINE_TARGET_ARCH = x64 +FLUTTER_ENGINE_TARGET_TRIPPLE = x86_64-unknown-linux-gnu +endif + +ifeq ($(FLUTTER_ENGINE_RUNTIME_MODE_PROFILE),y) +FLUTTER_ENGINE_RUNTIME_MODE=profile +else ifeq ($(BR2_ENABLE_RUNTIME_DEBUG),y) +FLUTTER_ENGINE_RUNTIME_MODE=debug +else +FLUTTER_ENGINE_RUNTIME_MODE=release +endif + +FLUTTER_ENGINE_BUILD_DIR = \ + $(@D)/out/linux_$(FLUTTER_ENGINE_RUNTIME_MODE)_$(FLUTTER_ENGINE_TARGET_ARCH) + +FLUTTER_ENGINE_INSTALL_FILES = libflutter_engine.so + +# Flutter engine includes a bundled patched clang that must be used for +# compiling or else there are linking errors. +FLUTTER_ENGINE_CLANG_PATH = $(@D)/flutter/buildtools/linux-x64/clang + +FLUTTER_ENGINE_CONF_OPTS = \ + --clang \ + --embedder-for-target \ + --linux-cpu $(FLUTTER_ENGINE_TARGET_ARCH) \ + --no-build-embedder-examples \ + --no-clang-static-analyzer \ + --no-enable-unittests \ + --no-goma \ + --no-prebuilt-dart-sdk \ + --no-stripped \ + --runtime-mode $(FLUTTER_ENGINE_RUNTIME_MODE) \ + --target-os linux \ + --target-sysroot $(STAGING_DIR) \ + --target-toolchain $(FLUTTER_ENGINE_CLANG_PATH) \ + --target-triple $(FLUTTER_ENGINE_TARGET_TRIPPLE) + +ifeq ($(BR2_arm)$(BR2_armeb),y) +FLUTTER_ENGINE_CONF_OPTS += \ + --arm-float-abi $(call qstrip,$(BR2_GCC_TARGET_FLOAT_ABI)) +endif + +# We must specify a full path to ccache and a full path to the flutter-engine +# provided clang in order to use ccache, or else flutter-engine will error out +# attempting to find ccache in the target-toolchain provided path. +ifeq ($(BR2_CCACHE),y) +define FLUTTER_ENGINE_COMPILER_PATH_FIXUP + $(SED) "s%cc =.*%cc = \"$(HOST_DIR)/bin/ccache $(FLUTTER_ENGINE_CLANG_PATH)/bin/clang\""%g \ + $(@D)/build/toolchain/custom/BUILD.gn + + $(SED) "s%cxx =.*%cxx = \"$(HOST_DIR)/bin/ccache $(FLUTTER_ENGINE_CLANG_PATH)/bin/clang++\""%g \ + $(@D)/build/toolchain/custom/BUILD.gn +endef +FLUTTER_ENGINE_PRE_CONFIGURE_HOOKS += FLUTTER_ENGINE_COMPILER_PATH_FIXUP +endif + +ifeq ($(BR2_ENABLE_LTO),y) +FLUTTER_ENGINE_CONF_OPTS += --lto +else +FLUTTER_ENGINE_CONF_OPTS += --no-lto +endif + +ifeq ($(BR2_OPTIMIZE_0),y) +FLUTTER_ENGINE_CONF_OPTS += --unoptimized +endif + +# There is no --disable-fontconfig option. +ifeq ($(BR2_PACKAGE_FONTCONFIG),y) +FLUTTER_ENGINE_DEPENDENCIES += fontconfig +FLUTTER_ENGINE_CONF_OPTS += --enable-fontconfig +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +FLUTTER_ENGINE_DEPENDENCIES += libgl +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y) +FLUTTER_ENGINE_DEPENDENCIES += libgles +FLUTTER_ENGINE_CONF_OPTS += --enable-impeller-3d +endif + +ifeq ($(BR2_PACKAGE_LIBGLFW),y) +FLUTTER_ENGINE_DEPENDENCIES += libglfw +FLUTTER_ENGINE_CONF_OPTS += --build-glfw-shell +else +FLUTTER_ENGINE_CONF_OPTS += --no-build-glfw-shell +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3),y) +FLUTTER_ENGINE_DEPENDENCIES += libgtk3 +FLUTTER_ENGINE_INSTALL_FILES += libflutter_linux_gtk.so +else +FLUTTER_ENGINE_CONF_OPTS += --disable-desktop-embeddings +endif + +# There is no --disable-vulkan option +ifeq ($(BR2_PACKAGE_MESA3D_VULKAN_DRIVER),y) +FLUTTER_ENGINE_CONF_OPTS += --enable-vulkan --enable-impeller-vulkan +endif + +ifeq ($(BR2_PACKAGE_XORG7)$(BR2_PACKAGE_LIBXCB),yy) +FLUTTER_ENGINE_DEPENDENCIES += libxcb +else +define FLUTTER_ENGINE_VULKAN_X11_SUPPORT_FIXUP + $(SED) "s%vulkan_use_x11.*%vulkan_use_x11 = false%g" -i \ + $(@D)/flutter/build_overrides/vulkan_headers.gni + + $(SED) "s%ozone_platform_x11.*%ozone_platform_x11 = false%g" \ + $(@D)/build/config/BUILDCONFIG.gn +endef +FLUTTER_ENGINE_PRE_CONFIGURE_HOOKS += FLUTTER_ENGINE_VULKAN_X11_SUPPORT_FIXUP +endif + +ifeq ($(BR2_PACKAGE_WAYLAND),y) +FLUTTER_ENGINE_DEPENDENCIES += wayland +else +define FLUTTER_ENGINE_VULKAN_WAYLAND_SUPPORT_FIXUP + $(SED) "s%vulkan_use_wayland.*%vulkan_use_wayland = false%g" \ + $(@D)/flutter/build_overrides/vulkan_headers.gni + + $(SED) "s%ozone_platform_wayland.*%ozone_platform_wayland = false%g" \ + $(@D)/build/config/BUILDCONFIG.gn +endef +FLUTTER_ENGINE_PRE_CONFIGURE_HOOKS += FLUTTER_ENGINE_VULKAN_WAYLAND_SUPPORT_FIXUP +endif + +# Generate a tarball if one does not already exist. +define FLUTTER_ENGINE_GENERATE_TARBALL + TAR="$(TAR)" \ + PATH=$(HOST_DIR)/share/depot_tools:$(BR_PATH) \ + PYTHONPATH=$(HOST_DIR)/lib/python$(PYTHON3_VERSION_MAJOR) \ + PUB_CACHE=$(FLUTTER_SDK_BIN_PUB_CACHE) \ + $(FLUTTER_ENGINE_PKGDIR)/gen-tarball \ + --dot-gclient $(TOPDIR)/$(FLUTTER_ENGINE_PKGDIR)/dot-gclient \ + --jobs $(PARALLEL_JOBS) \ + --scratch-dir $(@D)/dl-tmp \ + --tarball-dl-path $(FLUTTER_ENGINE_TARBALL_PATH) \ + --version $(FLUTTER_ENGINE_VERSION) +endef +FLUTTER_ENGINE_POST_DOWNLOAD_HOOKS += FLUTTER_ENGINE_GENERATE_TARBALL + +define FLUTTER_ENGINE_EXTRACT_CMDS + $(call suitable-extractor,$(FLUTTER_ENGINE_TARBALL_PATH)) $(FLUTTER_ENGINE_TARBALL_PATH) \ + | $(TAR) --strip-components=1 -C $(@D) $(TAR_OPTIONS) - +endef + +# We must set the home directory to the sdk directory or else flutter will +# place .dart, and .flutter in ~/. +define FLUTTER_ENGINE_CONFIGURE_CMDS + cd $(@D) && \ + rm -rf $(FLUTTER_ENGINE_BUILD_DIR) && \ + PATH=$(HOST_DIR)/share/depot_tools:$(BR_PATH) \ + PUB_CACHE=$(FLUTTER_SDK_BIN_PUB_CACHE) \ + HOME=$(HOST_FLUTTER_SDK_BIN_SDK) \ + ./flutter/tools/gn \ + $(FLUTTER_ENGINE_CONF_OPTS) +endef + +define FLUTTER_ENGINE_BUILD_CMDS + cd $(@D) && \ + PATH=$(HOST_DIR)/share/depot_tools:$(BR_PATH) \ + PUB_CACHE=$(FLUTTER_SDK_BIN_PUB_CACHE) \ + HOME=$(HOST_FLUTTER_SDK_BIN_SDK) \ + $(HOST_DIR)/bin/ninja \ + -j $(PARALLEL_JOBS) \ + -C $(FLUTTER_ENGINE_BUILD_DIR) +endef + +# Flutter-engine builds several host applications use for flutter development. +# One of those applications is gen_snapshot, which turns applications into +# usable .so files for the target architecture. Compiling a host version of +# flutter-engine would result in binaries producing host-architecture +# flutter applications .so files. As such, copy gen_snapshot to the host +# directory here and name it flutter_gen_snapshot for clarity. +FLUTTER_ENGINE_GEN_SNAPSHOT = $(HOST_DIR)/bin/flutter_gen_snapshot +define FLUTTER_ENGINE_INSTALL_GEN_SNAPSHOT + $(INSTALL) -D -m 0755 $(FLUTTER_ENGINE_BUILD_DIR)/clang_x64/gen_snapshot \ + $(HOST_DIR)/bin/flutter_gen_snapshot +endef +FLUTTER_ENGINE_POST_INSTALL_STAGING_HOOKS += FLUTTER_ENGINE_INSTALL_GEN_SNAPSHOT + +define FLUTTER_ENGINE_INSTALL_STAGING_CMDS + $(foreach i,$(FLUTTER_ENGINE_INSTALL_FILES), + $(INSTALL) -D -m 0755 $(FLUTTER_ENGINE_BUILD_DIR)/so.unstripped/$(i) \ + $(STAGING_DIR)/usr/lib/$(i); \ + ) + $(INSTALL) -D -m 0755 $(FLUTTER_ENGINE_BUILD_DIR)/flutter_embedder.h \ + $(STAGING_DIR)/usr/include/flutter_embedder.h + + $(INSTALL) -D -m 0755 $(FLUTTER_ENGINE_BUILD_DIR)/icudtl.dat \ + $(STAGING_DIR)/usr/share/flutter/$(FLUTTER_ENGINE_RUNTIME_MODE)/data/icudtl.dat +endef + +define FLUTTER_ENGINE_INSTALL_TARGET_CMDS + $(foreach i,$(FLUTTER_ENGINE_INSTALL_FILES), + $(INSTALL) -D -m 0755 $(FLUTTER_ENGINE_BUILD_DIR)/so.unstripped/$(i) \ + $(TARGET_DIR)/usr/lib/$(i); \ + ) + $(INSTALL) -D -m 0755 $(FLUTTER_ENGINE_BUILD_DIR)/icudtl.dat \ + $(TARGET_DIR)/usr/share/flutter/$(FLUTTER_ENGINE_RUNTIME_MODE)/data/icudtl.dat +endef + +$(eval $(generic-package)) diff --git a/package/flutter-engine/gen-tarball b/package/flutter-engine/gen-tarball new file mode 100755 index 00000000..23b121d1 --- /dev/null +++ b/package/flutter-engine/gen-tarball @@ -0,0 +1,93 @@ +#!/usr/bin/env bash +# Call gclient and generate a flutter-engine source tarball if one does not +# already exist. +set -eu + +DL_DIR= +DOT_GCLIENT= +JOBS= +SCRATCH_DIR= +TARBALL_DL_PATH= +VERSION= +TARBALL_NAME= + +term_bold="$(tput smso 2>/dev/null || true)" +term_reset="$(tput rmso 2>/dev/null || true)" + +# Print status messages in the same style Buildroot prints. +message() { + printf "%s>>> flutter-engine %s %s%s\n" "${term_bold}" "${VERSION}" "${1}" "${term_reset}" +} + +parse_opts() { + local o O opts + + o='d:j:s:t:v:' + O='dot-gclient:,jobs:,scratch-dir:,tarball-dl-path:,version:' + opts="$(getopt -o "${o}" -l "${O}" -- "${@}")" + eval set -- "${opts}" + + while [ ${#} -gt 0 ]; do + case "${1}" in + (-d|--dot-gclient) DOT_GCLIENT="${2}"; shift 2;; + (-j|--jobs) JOBS="${2}"; shift 2;; + (-s|--scratch-dir) SCRATCH_DIR="${2}"; shift 2;; + (-t|--tarball-dl-path) DL_DIR=$(dirname "${2}"); TARBALL_DL_PATH="${2}"; shift 2;; + (-v|--version) VERSION="${2}"; TARBALL_NAME=flutter-"${VERSION}".tar.gz; shift 2;; + (--) shift; break;; + esac + done +} + +prepare() { + rm -rf "${SCRATCH_DIR}" + mkdir -p "${SCRATCH_DIR}" + pushd "${SCRATCH_DIR}" >/dev/null +} + +copy_dot_gclient() { + sed "s%!FLUTTER_VERSION!%${VERSION}%g" "${DOT_GCLIENT}" >.gclient +} + +run_gclient() { + message "Downloading" + gclient.py \ + sync \ + --delete_unversioned_trees \ + --no-history \ + --reset \ + --shallow \ + -j"${JOBS}" +} + +gen_tarball() { + message "Generating tarball" + mkdir -p "${DL_DIR}" + # There are two issues with the flutter-engine buildsystem: + # - it expects empty directories created by gclient.py to be present; that + # means we can't use the mk_tar_gz helper method from support/download/helpers, + # becasue it does not include emnpty directories; + # - it insists on having a full git repositoy, with .git et al., which means + # we can't generate a reproducible archive anyway. + # So we jsut create a plain tarball. + ${TAR} -C "${SCRATCH_DIR}"/src -czf "${TARBALL_NAME}" . + mv "${TARBALL_NAME}" "${TARBALL_DL_PATH}" +} + +cleanup() { + popd >/dev/null + rm -rf "${SCRATCH_DIR}" +} + +main() { + parse_opts "${@}" + if [[ ! -e "${TARBALL_DL_PATH}" ]]; then + prepare + copy_dot_gclient + run_gclient + gen_tarball + cleanup + fi +} + +main "${@}" diff --git a/package/flutter-packages/Config.in b/package/flutter-packages/Config.in new file mode 100644 index 00000000..88d91936 --- /dev/null +++ b/package/flutter-packages/Config.in @@ -0,0 +1,20 @@ +menuconfig BR2_PACKAGE_FLUTTER_PACKAGES + bool "flutter packages" + depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS + depends on BR2_PACKAGE_FLUTTER_ENGINE + select BR2_PACKAGE_HOST_FLUTTER_SDK_BIN + help + First-party Flutter package examples. + +if BR2_PACKAGE_FLUTTER_PACKAGES +source "package/flutter-packages/flutter-adaptive-scaffold-example/Config.in" +source "package/flutter-packages/flutter-animations-example/Config.in" +source "package/flutter-packages/flutter-go-router-example/Config.in" +source "package/flutter-packages/flutter-image-example/Config.in" +source "package/flutter-packages/flutter-markdown-example/Config.in" +source "package/flutter-packages/flutter-rfw-local-example/Config.in" +endif + +comment "flutter packages need flutter-engine" + depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS + depends on !BR2_PACKAGE_FLUTTER_ENGINE diff --git a/package/flutter-packages/flutter-adaptive-scaffold-example/Config.in b/package/flutter-packages/flutter-adaptive-scaffold-example/Config.in new file mode 100644 index 00000000..f7c448e0 --- /dev/null +++ b/package/flutter-packages/flutter-adaptive-scaffold-example/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE + bool "flutter adaptive scaffold example" + help + Adaptive Scaffold reacts to input from users, devices and + screen elements and renders your Flutter application + according to the Material 3 guidelines. + + https://github.com/flutter/packages/tree/main/packages/flutter_adaptive_scaffold/example diff --git a/package/flutter-packages/flutter-adaptive-scaffold-example/flutter-adaptive-scaffold-example.hash b/package/flutter-packages/flutter-adaptive-scaffold-example/flutter-adaptive-scaffold-example.hash new file mode 120000 index 00000000..879f2adb --- /dev/null +++ b/package/flutter-packages/flutter-adaptive-scaffold-example/flutter-adaptive-scaffold-example.hash @@ -0,0 +1 @@ +../flutter-packages.hash \ No newline at end of file diff --git a/package/flutter-packages/flutter-adaptive-scaffold-example/flutter-adaptive-scaffold-example.mk b/package/flutter-packages/flutter-adaptive-scaffold-example/flutter-adaptive-scaffold-example.mk new file mode 100644 index 00000000..f6ac0861 --- /dev/null +++ b/package/flutter-packages/flutter-adaptive-scaffold-example/flutter-adaptive-scaffold-example.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# flutter-adaptive-scaffold-example +# +################################################################################ + +FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_VERSION = $(FLUTTER_PACKAGES_VERSION) +FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_SITE = $(FLUTTER_PACKAGES_SITE) +FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_SITE_METHOD = $(FLUTTER_PACKAGES_SITE_METHOD) +FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_SOURCE = $(FLUTTER_PACKAGES_SOURCE) +FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_LICENSE = $(FLUTTER_PACKAGES_LICENSE) +FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_LICENSE_FILES = $(FLUTTER_PACKAGES_LICENSE_FILES) +FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_DL_SUBDIR = $(FLUTTER_PACKAGES_DL_SUBDIR) +FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_DEPENDENCIES = $(FLUTTER_PACKAGES_DEPENDENCIES) +FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_PKG_NAME = flutter_adaptive_scaffold_example +FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_INSTALL_DIR = $(TARGET_DIR)/usr/share/flutter/$(FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_PKG_NAME)/$(FLUTTER_ENGINE_RUNTIME_MODE) +FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_SUBDIR = packages/flutter_adaptive_scaffold/example + +define FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_CONFIGURE_CMDS + cd $(FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_BUILDDIR) && \ + $(HOST_FLUTTER_SDK_BIN_FLUTTER) clean && \ + $(HOST_FLUTTER_SDK_BIN_FLUTTER) pub get && \ + $(HOST_FLUTTER_SDK_BIN_FLUTTER) build bundle +endef + +define FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_BUILD_CMDS + cd $(FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_BUILDDIR) && \ + $(HOST_FLUTTER_SDK_BIN_DART_BIN) \ + --native-assets $(FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_BUILDDIR)/.dart_tool/flutter_build/*/native_assets.yaml \ + package:$(FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_PKG_NAME)/main.dart && \ + $(HOST_FLUTTER_SDK_BIN_ENV) $(FLUTTER_ENGINE_GEN_SNAPSHOT) \ + --deterministic \ + --obfuscate \ + --snapshot_kind=app-aot-elf \ + --elf=libapp.so \ + .dart_tool/flutter_build/*/app.dill +endef + +define FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_INSTALL_TARGET_CMDS + mkdir -p $(FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_INSTALL_DIR)/{data,lib} + cp -dprf $(FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_BUILDDIR)/build/flutter_assets $(FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_INSTALL_DIR)/data/ + + $(INSTALL) -D -m 0755 $(FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_BUILDDIR)/libapp.so \ + $(FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_INSTALL_DIR)/lib/libapp.so + + ln -sf /usr/share/flutter/$(FLUTTER_ENGINE_RUNTIME_MODE)/data/icudtl.dat \ + $(FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_INSTALL_DIR)/data/ + + ln -sf /usr/lib/libflutter_engine.so $(FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_INSTALL_DIR)/lib/ + $(RM) $(FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_INSTALL_DIR)/data/flutter_assets/kernel_blob.bin + touch $(FLUTTER_ADAPTIVE_SCAFFOLD_EXAMPLE_INSTALL_DIR)/data/flutter_assets/kernel_blob.bin +endef + +$(eval $(generic-package)) diff --git a/package/flutter-packages/flutter-animations-example/Config.in b/package/flutter-packages/flutter-animations-example/Config.in new file mode 100644 index 00000000..c7801dcc --- /dev/null +++ b/package/flutter-packages/flutter-animations-example/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_FLUTTER_ANIMATIONS_EXAMPLE + bool "flutter animations example" + help + High quality pre-built Animations for Flutter + + https://github.com/flutter/packages/tree/main/packages/animations/example diff --git a/package/flutter-packages/flutter-animations-example/flutter-animations-example.hash b/package/flutter-packages/flutter-animations-example/flutter-animations-example.hash new file mode 120000 index 00000000..879f2adb --- /dev/null +++ b/package/flutter-packages/flutter-animations-example/flutter-animations-example.hash @@ -0,0 +1 @@ +../flutter-packages.hash \ No newline at end of file diff --git a/package/flutter-packages/flutter-animations-example/flutter-animations-example.mk b/package/flutter-packages/flutter-animations-example/flutter-animations-example.mk new file mode 100644 index 00000000..2b5c8967 --- /dev/null +++ b/package/flutter-packages/flutter-animations-example/flutter-animations-example.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# flutter-animations-example +# +################################################################################ + +FLUTTER_ANIMATIONS_EXAMPLE_VERSION = $(FLUTTER_PACKAGES_VERSION) +FLUTTER_ANIMATIONS_EXAMPLE_SITE = $(FLUTTER_PACKAGES_SITE) +FLUTTER_ANIMATIONS_EXAMPLE_SITE_METHOD = $(FLUTTER_PACKAGES_SITE_METHOD) +FLUTTER_ANIMATIONS_EXAMPLE_SOURCE = $(FLUTTER_PACKAGES_SOURCE) +FLUTTER_ANIMATIONS_EXAMPLE_LICENSE = $(FLUTTER_PACKAGES_LICENSE) +FLUTTER_ANIMATIONS_EXAMPLE_LICENSE_FILES = $(FLUTTER_PACKAGES_LICENSE_FILES) +FLUTTER_ANIMATIONS_EXAMPLE_DL_SUBDIR = $(FLUTTER_PACKAGES_DL_SUBDIR) +FLUTTER_ANIMATIONS_EXAMPLE_DEPENDENCIES = $(FLUTTER_PACKAGES_DEPENDENCIES) +FLUTTER_ANIMATIONS_EXAMPLE_PKG_NAME = animations_example +FLUTTER_ANIMATIONS_EXAMPLE_INSTALL_DIR = $(TARGET_DIR)/usr/share/flutter/$(FLUTTER_ANIMATIONS_EXAMPLE_PKG_NAME)/$(FLUTTER_ENGINE_RUNTIME_MODE) +FLUTTER_ANIMATIONS_EXAMPLE_SUBDIR = packages/animations/example + +define FLUTTER_ANIMATIONS_EXAMPLE_CONFIGURE_CMDS + cd $(FLUTTER_ANIMATIONS_EXAMPLE_BUILDDIR) && \ + $(HOST_FLUTTER_SDK_BIN_FLUTTER) clean && \ + $(HOST_FLUTTER_SDK_BIN_FLUTTER) pub get && \ + $(HOST_FLUTTER_SDK_BIN_FLUTTER) build bundle +endef + +define FLUTTER_ANIMATIONS_EXAMPLE_BUILD_CMDS + cd $(FLUTTER_ANIMATIONS_EXAMPLE_BUILDDIR) && \ + $(HOST_FLUTTER_SDK_BIN_DART_BIN) \ + --native-assets $(FLUTTER_ANIMATIONS_EXAMPLE_BUILDDIR)/.dart_tool/flutter_build/*/native_assets.yaml \ + package:$(FLUTTER_ANIMATIONS_EXAMPLE_PKG_NAME)/main.dart && \ + $(HOST_FLUTTER_SDK_BIN_ENV) $(FLUTTER_ENGINE_GEN_SNAPSHOT) \ + --deterministic \ + --obfuscate \ + --snapshot_kind=app-aot-elf \ + --elf=libapp.so \ + .dart_tool/flutter_build/*/app.dill +endef + +define FLUTTER_ANIMATIONS_EXAMPLE_INSTALL_TARGET_CMDS + mkdir -p $(FLUTTER_ANIMATIONS_EXAMPLE_INSTALL_DIR)/{data,lib} + cp -dprf $(FLUTTER_ANIMATIONS_EXAMPLE_BUILDDIR)/build/flutter_assets $(FLUTTER_ANIMATIONS_EXAMPLE_INSTALL_DIR)/data/ + + $(INSTALL) -D -m 0755 $(FLUTTER_ANIMATIONS_EXAMPLE_BUILDDIR)/libapp.so \ + $(FLUTTER_ANIMATIONS_EXAMPLE_INSTALL_DIR)/lib/libapp.so + + ln -sf /usr/share/flutter/$(FLUTTER_ENGINE_RUNTIME_MODE)/data/icudtl.dat \ + $(FLUTTER_ANIMATIONS_EXAMPLE_INSTALL_DIR)/data/ + + ln -sf /usr/lib/libflutter_engine.so $(FLUTTER_ANIMATIONS_EXAMPLE_INSTALL_DIR)/lib/ + $(RM) $(FLUTTER_ANIMATIONS_EXAMPLE_INSTALL_DIR)/data/flutter_assets/kernel_blob.bin + touch $(FLUTTER_ANIMATIONS_EXAMPLE_INSTALL_DIR)/data/flutter_assets/kernel_blob.bin +endef + +$(eval $(generic-package)) diff --git a/package/flutter-packages/flutter-go-router-example/Config.in b/package/flutter-packages/flutter-go-router-example/Config.in new file mode 100644 index 00000000..8cdb61e3 --- /dev/null +++ b/package/flutter-packages/flutter-go-router-example/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_FLUTTER_GO_ROUTER_EXAMPLE + bool "flutter go router example" + help + A Flutter plugin that manages files and interactions + with file dialogs. + + https://github.com/flutter/packages/tree/main/packages/go_router/example diff --git a/package/flutter-packages/flutter-go-router-example/flutter-go-router-example.hash b/package/flutter-packages/flutter-go-router-example/flutter-go-router-example.hash new file mode 120000 index 00000000..879f2adb --- /dev/null +++ b/package/flutter-packages/flutter-go-router-example/flutter-go-router-example.hash @@ -0,0 +1 @@ +../flutter-packages.hash \ No newline at end of file diff --git a/package/flutter-packages/flutter-go-router-example/flutter-go-router-example.mk b/package/flutter-packages/flutter-go-router-example/flutter-go-router-example.mk new file mode 100644 index 00000000..a7fa36ca --- /dev/null +++ b/package/flutter-packages/flutter-go-router-example/flutter-go-router-example.mk @@ -0,0 +1,57 @@ +################################################################################ +# +# flutter-go-router-example +# +################################################################################ + +FLUTTER_GO_ROUTER_EXAMPLE_VERSION = $(FLUTTER_PACKAGES_VERSION) +FLUTTER_GO_ROUTER_EXAMPLE_SITE = $(FLUTTER_PACKAGES_SITE) +FLUTTER_GO_ROUTER_EXAMPLE_SITE_METHOD = $(FLUTTER_PACKAGES_SITE_METHOD) +FLUTTER_GO_ROUTER_EXAMPLE_SOURCE = $(FLUTTER_PACKAGES_SOURCE) +FLUTTER_GO_ROUTER_EXAMPLE_LICENSE = $(FLUTTER_PACKAGES_LICENSE) +FLUTTER_GO_ROUTER_EXAMPLE_LICENSE_FILES = $(FLUTTER_PACKAGES_LICENSE_FILES) +FLUTTER_GO_ROUTER_EXAMPLE_DL_SUBDIR = $(FLUTTER_PACKAGES_DL_SUBDIR) +FLUTTER_GO_ROUTER_EXAMPLE_DEPENDENCIES = $(FLUTTER_PACKAGES_DEPENDENCIES) +FLUTTER_GO_ROUTER_EXAMPLE_PKG_NAME = go_router_examples +FLUTTER_GO_ROUTER_EXAMPLE_INSTALL_DIR = $(TARGET_DIR)/usr/share/flutter/$(FLUTTER_GO_ROUTER_EXAMPLE_PKG_NAME)/$(FLUTTER_ENGINE_RUNTIME_MODE) +FLUTTER_GO_ROUTER_EXAMPLE_SUBDIR = packages/go_router/example + +define FLUTTER_GO_ROUTER_EXAMPLE_CONFIGURE_CMDS + cd $(FLUTTER_GO_ROUTER_EXAMPLE_BUILDDIR) && \ + $(HOST_FLUTTER_SDK_BIN_FLUTTER) clean && \ + $(HOST_FLUTTER_SDK_BIN_FLUTTER) pub get && \ + $(HOST_FLUTTER_SDK_BIN_FLUTTER) build bundle +endef + +define FLUTTER_GO_ROUTER_EXAMPLE_BUILD_CMDS + cd $(FLUTTER_GO_ROUTER_EXAMPLE_BUILDDIR) && \ + $(HOST_FLUTTER_SDK_BIN_DART_BIN) \ + -Dflutter.dart_plugin_registrant=file://$(FLUTTER_GO_ROUTER_EXAMPLE_BUILDDIR)/.dart_tool/flutter_build/dart_plugin_registrant.dart \ + --source file://$(FLUTTER_GO_ROUTER_EXAMPLE_BUILDDIR)/.dart_tool/flutter_build/dart_plugin_registrant.dart \ + --source package:flutter/src/dart_plugin_registrant.dart \ + --native-assets $(FLUTTER_GO_ROUTER_EXAMPLE_BUILDDIR)/.dart_tool/flutter_build/*/native_assets.yaml \ + package:$(FLUTTER_GO_ROUTER_EXAMPLE_PKG_NAME)/main.dart && \ + $(HOST_FLUTTER_SDK_BIN_ENV) $(FLUTTER_ENGINE_GEN_SNAPSHOT) \ + --deterministic \ + --obfuscate \ + --snapshot_kind=app-aot-elf \ + --elf=libapp.so \ + .dart_tool/flutter_build/*/app.dill +endef + +define FLUTTER_GO_ROUTER_EXAMPLE_INSTALL_TARGET_CMDS + mkdir -p $(FLUTTER_GO_ROUTER_EXAMPLE_INSTALL_DIR)/{data,lib} + cp -dprf $(FLUTTER_GO_ROUTER_EXAMPLE_BUILDDIR)/build/flutter_assets $(FLUTTER_GO_ROUTER_EXAMPLE_INSTALL_DIR)/data/ + + $(INSTALL) -D -m 0755 $(FLUTTER_GO_ROUTER_EXAMPLE_BUILDDIR)/libapp.so \ + $(FLUTTER_GO_ROUTER_EXAMPLE_INSTALL_DIR)/lib/libapp.so + + ln -sf /usr/share/flutter/$(FLUTTER_ENGINE_RUNTIME_MODE)/data/icudtl.dat \ + $(FLUTTER_GO_ROUTER_EXAMPLE_INSTALL_DIR)/data/ + + ln -sf /usr/lib/libflutter_engine.so $(FLUTTER_GO_ROUTER_EXAMPLE_INSTALL_DIR)/lib/ + $(RM) $(FLUTTER_GO_ROUTER_EXAMPLE_INSTALL_DIR)/data/flutter_assets/kernel_blob.bin + touch $(FLUTTER_GO_ROUTER_EXAMPLE_INSTALL_DIR)/data/flutter_assets/kernel_blob.bin +endef + +$(eval $(generic-package)) diff --git a/package/flutter-packages/flutter-image-example/Config.in b/package/flutter-packages/flutter-image-example/Config.in new file mode 100644 index 00000000..15ae2087 --- /dev/null +++ b/package/flutter-packages/flutter-image-example/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_FLUTTER_IMAGE_EXAMPLE + bool "flutter image example" + select BR2_PACKAGE_CA_CERTIFICATES # runtime + help + Use NetworkImageWithRetry instead of Image.network to + load images from the network with a retry mechanism. + + https://github.com/flutter/packages/tree/main/packages/flutter_image/example diff --git a/package/flutter-packages/flutter-image-example/flutter-image-example.hash b/package/flutter-packages/flutter-image-example/flutter-image-example.hash new file mode 120000 index 00000000..879f2adb --- /dev/null +++ b/package/flutter-packages/flutter-image-example/flutter-image-example.hash @@ -0,0 +1 @@ +../flutter-packages.hash \ No newline at end of file diff --git a/package/flutter-packages/flutter-image-example/flutter-image-example.mk b/package/flutter-packages/flutter-image-example/flutter-image-example.mk new file mode 100644 index 00000000..20f18589 --- /dev/null +++ b/package/flutter-packages/flutter-image-example/flutter-image-example.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# flutter-image-example +# +################################################################################ + +FLUTTER_IMAGE_EXAMPLE_VERSION = $(FLUTTER_PACKAGES_VERSION) +FLUTTER_IMAGE_EXAMPLE_SITE = $(FLUTTER_PACKAGES_SITE) +FLUTTER_IMAGE_EXAMPLE_SITE_METHOD = $(FLUTTER_PACKAGES_SITE_METHOD) +FLUTTER_IMAGE_EXAMPLE_SOURCE = $(FLUTTER_PACKAGES_SOURCE) +FLUTTER_IMAGE_EXAMPLE_LICENSE = $(FLUTTER_PACKAGES_LICENSE) +FLUTTER_IMAGE_EXAMPLE_LICENSE_FILES = $(FLUTTER_PACKAGES_LICENSE_FILES) +FLUTTER_IMAGE_EXAMPLE_DL_SUBDIR = $(FLUTTER_PACKAGES_DL_SUBDIR) +FLUTTER_IMAGE_EXAMPLE_DEPENDENCIES = $(FLUTTER_PACKAGES_DEPENDENCIES) +FLUTTER_IMAGE_EXAMPLE_PKG_NAME = flutter_image_example +FLUTTER_IMAGE_EXAMPLE_INSTALL_DIR = $(TARGET_DIR)/usr/share/flutter/$(FLUTTER_IMAGE_EXAMPLE_PKG_NAME)/$(FLUTTER_ENGINE_RUNTIME_MODE) +FLUTTER_IMAGE_EXAMPLE_SUBDIR = packages/flutter_image/example + +define FLUTTER_IMAGE_EXAMPLE_CONFIGURE_CMDS + cd $(FLUTTER_IMAGE_EXAMPLE_BUILDDIR) && \ + $(HOST_FLUTTER_SDK_BIN_FLUTTER) clean && \ + $(HOST_FLUTTER_SDK_BIN_FLUTTER) pub get && \ + $(HOST_FLUTTER_SDK_BIN_FLUTTER) build bundle +endef + +define FLUTTER_IMAGE_EXAMPLE_BUILD_CMDS + cd $(FLUTTER_IMAGE_EXAMPLE_BUILDDIR) && \ + $(HOST_FLUTTER_SDK_BIN_DART_BIN) \ + --native-assets $(FLUTTER_IMAGE_EXAMPLE_BUILDDIR)/.dart_tool/flutter_build/*/native_assets.yaml \ + package:$(FLUTTER_IMAGE_EXAMPLE_PKG_NAME)/main.dart && \ + $(HOST_FLUTTER_SDK_BIN_ENV) $(FLUTTER_ENGINE_GEN_SNAPSHOT) \ + --deterministic \ + --obfuscate \ + --snapshot_kind=app-aot-elf \ + --elf=libapp.so \ + .dart_tool/flutter_build/*/app.dill +endef + +define FLUTTER_IMAGE_EXAMPLE_INSTALL_TARGET_CMDS + mkdir -p $(FLUTTER_IMAGE_EXAMPLE_INSTALL_DIR)/{data,lib} + cp -dprf $(FLUTTER_IMAGE_EXAMPLE_BUILDDIR)/build/flutter_assets $(FLUTTER_IMAGE_EXAMPLE_INSTALL_DIR)/data/ + + $(INSTALL) -D -m 0755 $(FLUTTER_IMAGE_EXAMPLE_BUILDDIR)/libapp.so \ + $(FLUTTER_IMAGE_EXAMPLE_INSTALL_DIR)/lib/libapp.so + + ln -sf /usr/share/flutter/$(FLUTTER_ENGINE_RUNTIME_MODE)/data/icudtl.dat \ + $(FLUTTER_IMAGE_EXAMPLE_INSTALL_DIR)/data/ + + ln -sf /usr/lib/libflutter_engine.so $(FLUTTER_IMAGE_EXAMPLE_INSTALL_DIR)/lib/ + $(RM) $(FLUTTER_IMAGE_EXAMPLE_INSTALL_DIR)/data/flutter_assets/kernel_blob.bin + touch $(FLUTTER_IMAGE_EXAMPLE_INSTALL_DIR)/data/flutter_assets/kernel_blob.bin +endef + +$(eval $(generic-package)) diff --git a/package/flutter-packages/flutter-markdown-example/Config.in b/package/flutter-packages/flutter-markdown-example/Config.in new file mode 100644 index 00000000..939b2105 --- /dev/null +++ b/package/flutter-packages/flutter-markdown-example/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_FLUTTER_MARKDOWN_EXAMPLE + bool "flutter markdown example" + help + A markdown renderer for Flutter. It supports the original + format, but no inline HTML. + + https://github.com/flutter/packages/tree/main/packages/flutter_markdown diff --git a/package/flutter-packages/flutter-markdown-example/flutter-markdown-example.hash b/package/flutter-packages/flutter-markdown-example/flutter-markdown-example.hash new file mode 120000 index 00000000..879f2adb --- /dev/null +++ b/package/flutter-packages/flutter-markdown-example/flutter-markdown-example.hash @@ -0,0 +1 @@ +../flutter-packages.hash \ No newline at end of file diff --git a/package/flutter-packages/flutter-markdown-example/flutter-markdown-example.mk b/package/flutter-packages/flutter-markdown-example/flutter-markdown-example.mk new file mode 100644 index 00000000..eb6792fb --- /dev/null +++ b/package/flutter-packages/flutter-markdown-example/flutter-markdown-example.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# flutter-markdown-example +# +################################################################################ + +FLUTTER_MARKDOWN_EXAMPLE_VERSION = $(FLUTTER_PACKAGES_VERSION) +FLUTTER_MARKDOWN_EXAMPLE_SITE = $(FLUTTER_PACKAGES_SITE) +FLUTTER_MARKDOWN_EXAMPLE_SITE_METHOD = $(FLUTTER_PACKAGES_SITE_METHOD) +FLUTTER_MARKDOWN_EXAMPLE_SOURCE = $(FLUTTER_PACKAGES_SOURCE) +FLUTTER_MARKDOWN_EXAMPLE_LICENSE = $(FLUTTER_PACKAGES_LICENSE) +FLUTTER_MARKDOWN_EXAMPLE_LICENSE_FILES = $(FLUTTER_PACKAGES_LICENSE_FILES) +FLUTTER_MARKDOWN_EXAMPLE_DL_SUBDIR = $(FLUTTER_PACKAGES_DL_SUBDIR) +FLUTTER_MARKDOWN_EXAMPLE_DEPENDENCIES = $(FLUTTER_PACKAGES_DEPENDENCIES) +FLUTTER_MARKDOWN_EXAMPLE_PKG_NAME = flutter_markdown_example +FLUTTER_MARKDOWN_EXAMPLE_INSTALL_DIR = $(TARGET_DIR)/usr/share/flutter/$(FLUTTER_MARKDOWN_EXAMPLE_PKG_NAME)/$(FLUTTER_ENGINE_RUNTIME_MODE) +FLUTTER_MARKDOWN_EXAMPLE_SUBDIR = packages/flutter_markdown/example + +define FLUTTER_MARKDOWN_EXAMPLE_CONFIGURE_CMDS + cd $(FLUTTER_MARKDOWN_EXAMPLE_BUILDDIR) && \ + $(HOST_FLUTTER_SDK_BIN_FLUTTER) clean && \ + $(HOST_FLUTTER_SDK_BIN_FLUTTER) pub get && \ + $(HOST_FLUTTER_SDK_BIN_FLUTTER) build bundle +endef + +define FLUTTER_MARKDOWN_EXAMPLE_BUILD_CMDS + cd $(FLUTTER_MARKDOWN_EXAMPLE_BUILDDIR) && \ + $(HOST_FLUTTER_SDK_BIN_DART_BIN) \ + --native-assets $(FLUTTER_MARKDOWN_EXAMPLE_BUILDDIR)/.dart_tool/flutter_build/*/native_assets.yaml \ + package:$(FLUTTER_MARKDOWN_EXAMPLE_PKG_NAME)/main.dart && \ + $(HOST_FLUTTER_SDK_BIN_ENV) $(FLUTTER_ENGINE_GEN_SNAPSHOT) \ + --deterministic \ + --obfuscate \ + --snapshot_kind=app-aot-elf \ + --elf=libapp.so \ + .dart_tool/flutter_build/*/app.dill +endef + +define FLUTTER_MARKDOWN_EXAMPLE_INSTALL_TARGET_CMDS + mkdir -p $(FLUTTER_MARKDOWN_EXAMPLE_INSTALL_DIR)/{data,lib} + cp -dprf $(FLUTTER_MARKDOWN_EXAMPLE_BUILDDIR)/build/flutter_assets $(FLUTTER_MARKDOWN_EXAMPLE_INSTALL_DIR)/data/ + + $(INSTALL) -D -m 0755 $(FLUTTER_MARKDOWN_EXAMPLE_BUILDDIR)/libapp.so \ + $(FLUTTER_MARKDOWN_EXAMPLE_INSTALL_DIR)/lib/libapp.so + + ln -sf /usr/share/flutter/$(FLUTTER_ENGINE_RUNTIME_MODE)/data/icudtl.dat \ + $(FLUTTER_MARKDOWN_EXAMPLE_INSTALL_DIR)/data/ + + ln -sf /usr/lib/libflutter_engine.so $(FLUTTER_MARKDOWN_EXAMPLE_INSTALL_DIR)/lib/ + $(RM) $(FLUTTER_MARKDOWN_EXAMPLE_INSTALL_DIR)/data/flutter_assets/kernel_blob.bin + touch $(FLUTTER_MARKDOWN_EXAMPLE_INSTALL_DIR)/data/flutter_assets/kernel_blob.bin +endef + +$(eval $(generic-package)) diff --git a/package/flutter-packages/flutter-packages.hash b/package/flutter-packages/flutter-packages.hash new file mode 100644 index 00000000..1fbe6013 --- /dev/null +++ b/package/flutter-packages/flutter-packages.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 388ec45142ddfab711aa82958c82657b8c2238deb6c131cec94a5a993ba4c760 flutter-packages-8af79fbca12699248e96b50b4705da74396cd6a3.tar.gz +sha256 89519eca6f7b9529b35bdddd623a58c3af06a88c458dbd6531ddb4675acf75a9 LICENSE diff --git a/package/flutter-packages/flutter-packages.mk b/package/flutter-packages/flutter-packages.mk new file mode 100644 index 00000000..1a191304 --- /dev/null +++ b/package/flutter-packages/flutter-packages.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# flutter-packages +# +################################################################################ + +FLUTTER_PACKAGES_VERSION = 8af79fbca12699248e96b50b4705da74396cd6a3 +FLUTTER_PACKAGES_SITE = $(call github,flutter,packages,$(FLUTTER_PACKAGES_VERSION)) +FLUTTER_PACKAGES_LICENSE = BSD-3-Clause +FLUTTER_PACKAGES_LICENSE_FILES = LICENSE +FLUTTER_PACKAGES_DL_SUBDIR = flutter-packages + +# This default value *is* required, because this file is not a package (it +# does not call any of the *-package macros), so the _SOURCE variable is not +# defined. However, we need a variable for the sub-packages to share the +# same tarball name. +# check-package disable lib_mk.RemoveDefaultPackageSourceVariable +FLUTTER_PACKAGES_SOURCE = flutter-packages-$(FLUTTER_PACKAGES_VERSION).tar.gz + +FLUTTER_PACKAGES_DEPENDENCIES = \ + host-flutter-sdk-bin \ + flutter-engine + +include $(sort $(wildcard package/flutter-packages/*/*.mk)) diff --git a/package/flutter-packages/flutter-rfw-local-example/Config.in b/package/flutter-packages/flutter-rfw-local-example/Config.in new file mode 100644 index 00000000..42324a1e --- /dev/null +++ b/package/flutter-packages/flutter-rfw-local-example/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_FLUTTER_RFW_LOCAL_EXAMPLE + bool "remote flutter widgets example" + help + This example shows how one can create custom widgets in an RFW + client, for use by remote widgets. + + https://github.com/flutter/packages/tree/main/packages/rfw/example/local diff --git a/package/flutter-packages/flutter-rfw-local-example/flutter-rfw-local-example.hash b/package/flutter-packages/flutter-rfw-local-example/flutter-rfw-local-example.hash new file mode 120000 index 00000000..879f2adb --- /dev/null +++ b/package/flutter-packages/flutter-rfw-local-example/flutter-rfw-local-example.hash @@ -0,0 +1 @@ +../flutter-packages.hash \ No newline at end of file diff --git a/package/flutter-packages/flutter-rfw-local-example/flutter-rfw-local-example.mk b/package/flutter-packages/flutter-rfw-local-example/flutter-rfw-local-example.mk new file mode 100644 index 00000000..b57c021f --- /dev/null +++ b/package/flutter-packages/flutter-rfw-local-example/flutter-rfw-local-example.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# flutter-rfw-local-example +# +################################################################################ + +FLUTTER_RFW_LOCAL_EXAMPLE_VERSION = $(FLUTTER_PACKAGES_VERSION) +FLUTTER_RFW_LOCAL_EXAMPLE_SITE = $(FLUTTER_PACKAGES_SITE) +FLUTTER_RFW_LOCAL_EXAMPLE_SITE_METHOD = $(FLUTTER_PACKAGES_SITE_METHOD) +FLUTTER_RFW_LOCAL_EXAMPLE_SOURCE = $(FLUTTER_PACKAGES_SOURCE) +FLUTTER_RFW_LOCAL_EXAMPLE_LICENSE = $(FLUTTER_PACKAGES_LICENSE) +FLUTTER_RFW_LOCAL_EXAMPLE_LICENSE_FILES = $(FLUTTER_PACKAGES_LICENSE_FILES) +FLUTTER_RFW_LOCAL_EXAMPLE_DL_SUBDIR = $(FLUTTER_PACKAGES_DL_SUBDIR) +FLUTTER_RFW_LOCAL_EXAMPLE_DEPENDENCIES = $(FLUTTER_PACKAGES_DEPENDENCIES) +FLUTTER_RFW_LOCAL_EXAMPLE_PKG_NAME = local +FLUTTER_RFW_LOCAL_EXAMPLE_INSTALL_DIR = $(TARGET_DIR)/usr/share/flutter/rfw-$(FLUTTER_RFW_LOCAL_EXAMPLE_PKG_NAME)-example/$(FLUTTER_ENGINE_RUNTIME_MODE) +FLUTTER_RFW_LOCAL_EXAMPLE_SUBDIR = packages/rfw/example/local + +define FLUTTER_RFW_LOCAL_EXAMPLE_CONFIGURE_CMDS + cd $(FLUTTER_RFW_LOCAL_EXAMPLE_BUILDDIR) && \ + $(HOST_FLUTTER_SDK_BIN_FLUTTER) clean && \ + $(HOST_FLUTTER_SDK_BIN_FLUTTER) pub get && \ + $(HOST_FLUTTER_SDK_BIN_FLUTTER) build bundle +endef + +define FLUTTER_RFW_LOCAL_EXAMPLE_BUILD_CMDS + cd $(FLUTTER_RFW_LOCAL_EXAMPLE_BUILDDIR) && \ + $(HOST_FLUTTER_SDK_BIN_DART_BIN) \ + --native-assets $(FLUTTER_RFW_LOCAL_EXAMPLE_BUILDDIR)/.dart_tool/flutter_build/*/native_assets.yaml \ + package:$(FLUTTER_RFW_LOCAL_EXAMPLE_PKG_NAME)/main.dart && \ + $(HOST_FLUTTER_SDK_BIN_ENV) $(FLUTTER_ENGINE_GEN_SNAPSHOT) \ + --deterministic \ + --obfuscate \ + --snapshot_kind=app-aot-elf \ + --elf=libapp.so \ + .dart_tool/flutter_build/*/app.dill +endef + +define FLUTTER_RFW_LOCAL_EXAMPLE_INSTALL_TARGET_CMDS + mkdir -p $(FLUTTER_RFW_LOCAL_EXAMPLE_INSTALL_DIR)/{data,lib} + cp -dprf $(FLUTTER_RFW_LOCAL_EXAMPLE_BUILDDIR)/build/flutter_assets $(FLUTTER_RFW_LOCAL_EXAMPLE_INSTALL_DIR)/data/ + + $(INSTALL) -D -m 0755 $(FLUTTER_RFW_LOCAL_EXAMPLE_BUILDDIR)/libapp.so \ + $(FLUTTER_RFW_LOCAL_EXAMPLE_INSTALL_DIR)/lib/libapp.so + + ln -sf /usr/share/flutter/$(FLUTTER_ENGINE_RUNTIME_MODE)/data/icudtl.dat \ + $(FLUTTER_RFW_LOCAL_EXAMPLE_INSTALL_DIR)/data/ + + ln -sf /usr/lib/libflutter_engine.so $(FLUTTER_RFW_LOCAL_EXAMPLE_INSTALL_DIR)/lib/ + $(RM) $(FLUTTER_RFW_LOCAL_EXAMPLE_INSTALL_DIR)/data/flutter_assets/kernel_blob.bin + touch $(FLUTTER_RFW_LOCAL_EXAMPLE_INSTALL_DIR)/data/flutter_assets/kernel_blob.bin +endef + +$(eval $(generic-package)) diff --git a/package/flutter-pi/Config.in b/package/flutter-pi/Config.in new file mode 100644 index 00000000..223e2974 --- /dev/null +++ b/package/flutter-pi/Config.in @@ -0,0 +1,112 @@ +menuconfig BR2_PACKAGE_FLUTTER_PI + bool "flutter-pi" + depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS + depends on BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS + depends on BR2_HOST_GCC_AT_LEAST_5 # flutter-engine + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # flutter-engine + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # flutter-engine + depends on BR2_TOOLCHAIN_USES_GLIBC # flutter-engine + depends on BR2_INSTALL_LIBSTDCPP # flutter-engine + depends on !BR2_STATIC_LIBS # flutter-engine, wayland + depends on BR2_USE_WCHAR # flutter-engine + depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES # flutter-engine + depends on BR2_PACKAGE_HAS_LIBGBM + depends on BR2_PACKAGE_SYSTEMD # Event loop and dbus support + depends on BR2_PACKAGE_HAS_UDEV # libinput + select BR2_PACKAGE_HOST_FLUTTER_SDK_BIN + select BR2_PACKAGE_FLUTTER_ENGINE + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_LIBINPUT + select BR2_PACKAGE_LIBXKBCOMMON + help + A light-weight Flutter Engine Embedder. Flutter-pi also + runs without X11, so you don't need to boot into a + Desktop & have X11 or Wayland load up; just boot into the + command-line. + + Although flutter-pi is only tested on a Rasberry Pi 4 + 2GB, it should work fine on other linux platforms supported + by Flutter so long as there is support for KMS and DRI. + + https://github.com/ardera/flutter-pi + +if BR2_PACKAGE_FLUTTER_PI + +comment "plugins" + +config BR2_PACKAGE_FLUTTER_PI_CHARSET_CONVERTER_PLUGIN + bool "charset converter" + help + Adds platform-side implementation of charset_converter plugin. + + Encode and decode charsets using platform built-in converter. + This plugin saves app package size as you don't need external + charset maps or whole libraries like iconv. + + https://pub.dev/packages/charset_converter + +config BR2_PACKAGE_FLUTTER_PI_GSTREAMER_AUDIO_PLAYER_PLUGIN + bool "gstreamer audio player" + 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_AUDIOCONVERT + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORESAMPLE + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VOLUME + help + Include the gstreamer based audio plugins in the finished + binary. + +config BR2_PACKAGE_FLUTTER_PI_GSTREAMER_VIDEO_PLAYER_PLUGIN + bool "gstreamer video player" + depends on BR2_PACKAGE_HAS_LIBGLES + select BR2_PACKAGE_GSTREAMER1 + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_GLES2 + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERTSCALE + help + Include the gstreamer based video plugins in the finished + binary. Allows for more stable, hardware accelerated + video playback in flutter using gstreamer. + +comment "gstreamer video player plugin needs an OpenGL ES backend" + depends on !BR2_PACKAGE_HAS_LIBGLES + +config BR2_PACKAGE_FLUTTER_PI_RAW_KEYBOARD_PLUGIN + bool "raw keyboard" + help + Include the raw keyboard plugin in the finished binary. + Enables raw keycode listening in flutter via the flutter + RawKeyboard interface. + +config BR2_PACKAGE_FLUTTER_PI_TEXT_INPUT_PLUGIN + bool "text input" + help + Include the text input plugin in the finished binary. + Enables text input (to flutter text fields, for example) + via attached keyboards. + +endif + +comment "flutter-pi needs a glibc toolchain w/ wchar, C++, gcc >= 5, dynamic library, host gcc >= 5" + depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS + depends on BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_5 || BR2_STATIC_LIBS \ + || !BR2_USE_WCHAR || !BR2_HOST_GCC_AT_LEAST_5 + +comment "flutter-pi needs a toolchain not affected by GCC bug 64735" + depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS + depends on BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + +comment "flutter-pi needs an OpenGL or OpenGLES backend" + depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS + depends on BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS + depends on !BR2_PACKAGE_HAS_LIBGL && !BR2_PACKAGE_HAS_LIBGLES + +comment "flutter-pi needs GBM, systemd, and udev" + depends on !BR2_PACKAGE_HAS_LIBGBM || \ + !BR2_PACKAGE_SYSTEMD || \ + !BR2_PACKAGE_HAS_UDEV diff --git a/package/flutter-pi/flutter-pi.hash b/package/flutter-pi/flutter-pi.hash new file mode 100644 index 00000000..6a735247 --- /dev/null +++ b/package/flutter-pi/flutter-pi.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c3c7df5712cd7c45539b325b0d8d58d0942b08a6f66c55e3f53aa5225cbe86af flutter-pi-37bd9773c1938e5f76208bc4e8632fdbbb4190ff-git4.tar.gz +sha256 b34df9d3e1b4e5d1ba70b1740ec74b69f1189b44efd0c96b898b074ef8db1c70 LICENSE diff --git a/package/flutter-pi/flutter-pi.mk b/package/flutter-pi/flutter-pi.mk new file mode 100644 index 00000000..fad1da32 --- /dev/null +++ b/package/flutter-pi/flutter-pi.mk @@ -0,0 +1,98 @@ +################################################################################ +# +# flutter-pi +# +################################################################################ + +FLUTTER_PI_VERSION = 37bd9773c1938e5f76208bc4e8632fdbbb4190ff +FLUTTER_PI_SITE = https://github.com/ardera/flutter-pi.git +FLUTTER_PI_SITE_METHOD = git +FLUTTER_PI_LICENSE = MIT +FLUTTER_PI_LICENSE_FILES = LICENSE +FLUTTER_PI_DEPENDENCIES = \ + flutter-engine \ + libinput \ + libxkbcommon \ + systemd + +FLUTTER_PI_CONF_OPTS = \ + -DDEBUG_DRM_PLANE_ALLOCATIONS=OFF \ + -DDUMP_ENGINE_LAYERS=OFF \ + -DENABLE_ASAN=OFF \ + -DENABLE_MTRACE=OFF \ + -DENABLE_SOFTWARE=OFF \ + -DENABLE_TESTS=OFF \ + -DENABLE_TSAN=OFF \ + -DENABLE_UBSAN=OFF \ + -DFILESYSTEM_LAYOUT=meta-flutter \ + -DLINT_EGL_HEADERS=OFF \ + -DTRY_BUILD_GSTREAMER_AUDIO_PLAYER_PLUGIN=OFF \ + -DTRY_BUILD_GSTREAMER_VIDEO_PLAYER_PLUGIN=OFF \ + -DTRY_ENABLE_OPENGL=OFF \ + -DTRY_ENABLE_SESSION_SWITCHING=OFF \ + -DTRY_ENABLE_VULKAN=OFF \ + -DVULKAN_DEBUG="OFF" \ + -DUSE_LEGACY_KMS=OFF \ + -DWARN_MISSING_FIELD_INITIALIZERS=OFF \ + -DBUILD_SENTRY_PLUGIN=OFF + +ifeq ($(BR2_ENABLE_LTO),y) +FLUTTER_PI_CONF_OPTS += -DLTO=ON +else +FLUTTER_PI_CONF_OPTS += -DLTO=OFF +endif + +ifeq ($(BR2_PACKAGE_FLUTTER_PI_CHARSET_CONVERTER_PLUGIN),y) +FLUTTER_PI_CONF_OPTS += -DBUILD_CHARSET_CONVERTER_PLUGIN=ON +else +FLUTTER_PI_CONF_OPTS += -DBUILD_CHARSET_CONVERTER_PLUGIN=OFF +endif + +ifeq ($(BR2_PACKAGE_FLUTTER_PI_GSTREAMER_AUDIO_PLAYER_PLUGIN),y) +FLUTTER_PI_DEPENDENCIES += gstreamer1 gst1-plugins-base +FLUTTER_PI_CONF_OPTS += -DBUILD_GSTREAMER_AUDIO_PLAYER_PLUGIN=ON +else +FLUTTER_PI_CONF_OPTS += -DBUILD_GSTREAMER_AUDIO_PLAYER_PLUGIN=OFF +endif + +ifeq ($(BR2_PACKAGE_FLUTTER_PI_GSTREAMER_VIDEO_PLAYER_PLUGIN),y) +FLUTTER_PI_DEPENDENCIES += gstreamer1 gst1-plugins-base +FLUTTER_PI_CONF_OPTS += -DBUILD_GSTREAMER_VIDEO_PLAYER_PLUGIN=ON +else +FLUTTER_PI_CONF_OPTS += -DBUILD_GSTREAMER_VIDEO_PLAYER_PLUGIN=OFF +endif + +ifeq ($(BR2_PACKAGE_FLUTTER_PI_RAW_KEYBOARD_PLUGIN),y) +FLUTTER_PI_CONF_OPTS += -DBUILD_RAW_KEYBOARD_PLUGIN=ON +else +FLUTTER_PI_CONF_OPTS += -DBUILD_RAW_KEYBOARD_PLUGIN=OFF +endif + +ifeq ($(BR2_PACKAGE_FLUTTER_PI_TEXT_INPUT_PLUGIN),y) +FLUTTER_PI_DEPENDENCIES += libinput libxkbcommon +FLUTTER_PI_CONF_OPTS += -DBUILD_TEXT_INPUT_PLUGIN=ON +else +FLUTTER_PI_CONF_OPTS += -DBUILD_TEXT_INPUT_PLUGIN=OFF +endif + +ifeq ($(BR2_PACKAGE_MESA3D_VULKAN_DRIVER)$(BR2_PACKAGE_VULKAN_LOADER),yy) +FLUTTER_PI_DEPENDENCIES += mesa3d vulkan-loader +FLUTTER_PI_CONF_OPTS += -DENABLE_VULKAN=ON +else +FLUTTER_PI_CONF_OPTS += -DENABLE_VULKAN=OFF +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y) +FLUTTER_PI_CONF_OPTS += -DENABLE_OPENGL=ON +else +FLUTTER_PI_CONF_OPTS += -DENABLE_OPENGL=OFF +endif + +ifeq ($(BR2_PACKAGE_SEATD),y) +FLUTTER_PI_DEPENDENCIES += seatd +FLUTTER_PI_CONF_OPTS += -DENABLE_SESSION_SWITCHING=ON +else +FLUTTER_PI_CONF_OPTS += -DENABLE_SESSION_SWITCHING=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/flutter-sdk-bin/Config.in.host b/package/flutter-sdk-bin/Config.in.host new file mode 100644 index 00000000..181a2ee6 --- /dev/null +++ b/package/flutter-sdk-bin/Config.in.host @@ -0,0 +1,15 @@ +config BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS + bool + default y if BR2_HOSTARCH = "x86_64" + +config BR2_PACKAGE_HOST_FLUTTER_SDK_BIN + bool "host flutter-sdk-bin" + depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS + help + Flutter is Google's SDK for crafting beautiful, fast user + experiences for mobile, web, and desktop from a single + codebase. Flutter works with existing code, is used by + developers and organizations around the world, and is + free and open source. + + https://flutter.dev/ diff --git a/package/flutter-sdk-bin/flutter-sdk-bin.hash b/package/flutter-sdk-bin/flutter-sdk-bin.hash new file mode 100644 index 00000000..4f3622e7 --- /dev/null +++ b/package/flutter-sdk-bin/flutter-sdk-bin.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 d52a5d12f17d8bcf868d1ccc01fe0f7ffb05b53d9628aa21b07a18f9d33621f2 flutter_linux_3.24.0-stable.tar.xz +sha256 a598db94b6290ffbe10b5ecf911057b6a943351c727fdda9e5f2891d68700a20 LICENSE diff --git a/package/flutter-sdk-bin/flutter-sdk-bin.mk b/package/flutter-sdk-bin/flutter-sdk-bin.mk new file mode 100644 index 00000000..26415551 --- /dev/null +++ b/package/flutter-sdk-bin/flutter-sdk-bin.mk @@ -0,0 +1,104 @@ +################################################################################ +# +# host-flutter-sdk-bin +# +################################################################################ + +FLUTTER_SDK_BIN_VERSION = 3.24.0 +FLUTTER_SDK_BIN_SITE = https://storage.googleapis.com/flutter_infra_release/releases/stable/linux +FLUTTER_SDK_BIN_SOURCE = flutter_linux_$(FLUTTER_SDK_BIN_VERSION)-stable.tar.xz +FLUTTER_SDK_BIN_LICENSE = BSD-3-Clause +FLUTTER_SDK_BIN_LICENSE_FILES = LICENSE + +HOST_FLUTTER_SDK_BIN_SDK = $(HOST_DIR)/share/flutter/sdk +HOST_FLUTTER_SDK_BIN_DART_SDK = $(HOST_FLUTTER_SDK_BIN_SDK)/bin/cache/dart-sdk +HOST_FLUTTER_SDK_BIN_SDK_ENGINE = $(HOST_FLUTTER_SDK_BIN_SDK)/bin/cache/artifacts/engine + +# We must set the home directory to the sdk directory or else flutter will +# place .dart, .dart-sdk, and .flutter in ~/. +HOST_FLUTTER_SDK_BIN_ENV = \ + HOME=$(HOST_FLUTTER_SDK_BIN_SDK) \ + PATH=$(BR_PATH):$(HOST_FLUTTER_SDK_BIN_SDK):$(HOST_FLUTTER_SDK_BIN_SDK)/bin \ + PUB_CACHE=$(FLUTTER_SDK_BIN_PUB_CACHE) + +# The following config options must be ran one at a time. +HOST_FLUTTER_SDK_BIN_CONF_OPTS = \ + --clear-features \ + --no-analytics \ + --disable-analytics \ + --enable-custom-devices \ + --enable-linux-desktop \ + --no-enable-android \ + --no-enable-fuchsia \ + --no-enable-ios \ + --no-enable-macos-desktop \ + --no-enable-windows-desktop + +define HOST_FLUTTER_SDK_BIN_CONFIGURE_CMDS + $(foreach i,$(HOST_FLUTTER_SDK_BIN_CONF_OPTS), + $(HOST_FLUTTER_SDK_BIN_ENV) $(@D)/bin/flutter config $(i); \ + ) + $(HOST_FLUTTER_SDK_BIN_ENV) $(@D)/bin/dart --disable-analytics +endef + +define HOST_FLUTTER_SDK_BIN_BUILD_CMDS + mkdir -p $(HOST_FLUTTER_SDK_BIN_SDK) + cd $(@D) && \ + $(HOST_FLUTTER_SDK_BIN_ENV) $(@D)/bin/flutter precache; +endef + +define HOST_FLUTTER_SDK_BIN_INSTALL_CMDS + cp -rpdT $(@D)/. $(HOST_FLUTTER_SDK_BIN_SDK)/ +endef + +ifeq ($(FLUTTER_ENGINE_RUNTIME_MODE_PROFILE),y) +HOST_FLUTTER_SDK_BIN_PROFILE_FLAGS = --track-widget-creation +HOST_FLUTTER_SDK_BIN_SDK_PRODUCT = false +HOST_FLUTTER_SDK_BIN_SDK_ROOT = $(HOST_FLUTTER_SDK_BIN_SDK_ENGINE)/common/flutter_patched_sdk +HOST_FLUTTER_SDK_BIN_SDK_VM_PROFILE = true +else ifeq ($(BR2_ENABLE_RUNTIME_DEBUG),y) +HOST_FLUTTER_SDK_BIN_DEBUG_FLAGS = --enable-asserts +HOST_FLUTTER_SDK_BIN_SDK_PRODUCT = false +HOST_FLUTTER_SDK_BIN_SDK_ROOT = $(HOST_FLUTTER_SDK_BIN_SDK_ENGINE)/common/flutter_patched_sdk +HOST_FLUTTER_SDK_BIN_SDK_VM_PROFILE = false +else +HOST_FLUTTER_SDK_BIN_SDK_PRODUCT = true +HOST_FLUTTER_SDK_BIN_SDK_ROOT = $(HOST_FLUTTER_SDK_BIN_SDK_ENGINE)/common/flutter_patched_sdk_product +HOST_FLUTTER_SDK_BIN_SDK_VM_PROFILE = false +endif + +# The Order matters.Taken from: +# https://github.com/meta-flutter/meta-flutter/blob/scarthgap/conf/include/common.inc +HOST_FLUTTER_SDK_BIN_DART_ARGS = \ + --verbose \ + --disable-analytics \ + --disable-dart-dev $(HOST_FLUTTER_SDK_BIN_SDK_ENGINE)/linux-x64/frontend_server_aot.dart.snapshot \ + --sdk-root $(HOST_FLUTTER_SDK_BIN_SDK_ROOT) \ + --target=flutter \ + --no-print-incremental-dependencies \ + -Ddart.vm.profile=$(HOST_FLUTTER_SDK_BIN_SDK_VM_PROFILE) \ + -Ddart.vm.product=$(HOST_FLUTTER_SDK_BIN_SDK_PRODUCT) \ + $(HOST_FLUTTER_SDK_BIN_DEBUG_FLAGS) \ + $(HOST_FLUTTER_SDK_BIN_PROFILE_FLAGS) \ + --aot \ + --tfa \ + --target-os linux \ + --packages .dart_tool/package_config.json \ + --output-dill .dart_tool/flutter_build/*/app.dill \ + --depfile .dart_tool/flutter_build/*/kernel_snapshot_program.d + +# Helper wrapper to run flutter when building flutter applications. +HOST_FLUTTER_SDK_BIN_FLUTTER = \ + $(HOST_FLUTTER_SDK_BIN_ENV) \ + $(HOST_FLUTTER_SDK_BIN_SDK)/bin/flutter + +# Helper wrapper to run dart when building flutter applications. +HOST_FLUTTER_SDK_BIN_DART_BIN = \ + $(HOST_FLUTTER_SDK_BIN_ENV) \ + $(HOST_FLUTTER_SDK_BIN_DART_SDK)/bin/dartaotruntime \ + $(HOST_FLUTTER_SDK_BIN_DART_ARGS) + +$(eval $(host-generic-package)) + +# For target packages to locate said pub-cache +FLUTTER_SDK_BIN_PUB_CACHE = $(DL_DIR)/br-flutter-pub-cache diff --git a/package/fluxbox/0001-fixes-bug-1138.patch b/package/fluxbox/0001-fixes-bug-1138.patch new file mode 100644 index 00000000..9c02e933 --- /dev/null +++ b/package/fluxbox/0001-fixes-bug-1138.patch @@ -0,0 +1,25 @@ +From 22866c4d30f5b289c429c5ca88d800200db4fc4f Mon Sep 17 00:00:00 2001 +From: John Sennesael +Date: Mon, 2 Nov 2015 15:14:32 -0600 +Subject: [PATCH] fixes bug #1138 + +[Retrieved from: +https://github.com/fluxbox/fluxbox/commit/22866c4d30f5b289c429c5ca88d800200db4fc4f] +Signed-off-by: Fabrice Fontaine +--- + util/fluxbox-remote.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/util/fluxbox-remote.cc b/util/fluxbox-remote.cc +index 59852e6a..504015b5 100644 +--- a/util/fluxbox-remote.cc ++++ b/util/fluxbox-remote.cc +@@ -73,7 +73,7 @@ int main(int argc, char **argv) { + if (strcmp(cmd, "result") == 0) { + XTextProperty text_prop; + if (XGetTextProperty(disp, root, &text_prop, atom_result) != 0 +- && text_prop.value > 0 ++ && text_prop.value != 0 + && text_prop.nitems > 0) { + + printf("%s", text_prop.value); diff --git a/package/fluxbox/Config.in b/package/fluxbox/Config.in new file mode 100644 index 00000000..ab479a9f --- /dev/null +++ b/package/fluxbox/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_FLUXBOX + bool "fluxbox" + depends on BR2_PACKAGE_XORG7 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBX11 + # Runtime dependency, needed by startup script + select BR2_PACKAGE_XAPP_XMODMAP + help + The Fluxbox lightweight window manager for X + + http://fluxbox.org + +comment "fluxbox needs a toolchain w/ C++" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_XORG7 && !BR2_INSTALL_LIBSTDCPP diff --git a/package/fluxbox/fluxbox.hash b/package/fluxbox/fluxbox.hash new file mode 100644 index 00000000..f59423c3 --- /dev/null +++ b/package/fluxbox/fluxbox.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 fc8c75fe94c54ed5a5dd3fd4a752109f8949d6df67a48e5b11a261403c382ec0 fluxbox-1.3.7.tar.xz +sha256 d445b8c8b3cedd8b9ebb7f450524cf658d4a199b3a89a9f2af4255cc589c6253 COPYING diff --git a/package/fluxbox/fluxbox.mk b/package/fluxbox/fluxbox.mk new file mode 100644 index 00000000..305dd9ab --- /dev/null +++ b/package/fluxbox/fluxbox.mk @@ -0,0 +1,88 @@ +################################################################################ +# +# fluxbox +# +################################################################################ + +FLUXBOX_VERSION = 1.3.7 +FLUXBOX_SOURCE = fluxbox-$(FLUXBOX_VERSION).tar.xz +FLUXBOX_SITE = http://downloads.sourceforge.net/project/fluxbox/fluxbox/$(FLUXBOX_VERSION) +FLUXBOX_LICENSE = MIT +FLUXBOX_LICENSE_FILES = COPYING + +FLUXBOX_CONF_OPTS = \ + --x-includes=$(STAGING_DIR)/usr/include/X11 \ + --x-libraries=$(STAGING_DIR)/usr/lib +FLUXBOX_DEPENDENCIES = xlib_libX11 $(if $(BR2_PACKAGE_LIBICONV),libiconv) + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +FLUXBOX_CONF_OPTS += --enable-freetype2 +FLUXBOX_DEPENDENCIES += freetype +else +FLUXBOX_CONF_OPTS += --disable-freetype2 +endif + +ifeq ($(BR2_PACKAGE_IMLIB2_X),y) +FLUXBOX_CONF_OPTS += --enable-imlib2 +FLUXBOX_DEPENDENCIES += imlib2 +else +FLUXBOX_CONF_OPTS += --disable-imlib2 +endif + +ifeq ($(BR2_PACKAGE_LIBFRIBIDI),y) +FLUXBOX_CONF_OPTS += --enable-fribidi +FLUXBOX_DEPENDENCIES += libfribidi +else +FLUXBOX_CONF_OPTS += --disable-fribidi +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFT),y) +FLUXBOX_CONF_OPTS += --enable-xft +FLUXBOX_DEPENDENCIES += xlib_libXft +else +FLUXBOX_CONF_OPTS += --disable-xft +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRENDER),y) +FLUXBOX_CONF_OPTS += --enable-xrender +FLUXBOX_DEPENDENCIES += xlib_libXrender +else +FLUXBOX_CONF_OPTS += --disable-xrender +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXPM),y) +FLUXBOX_CONF_OPTS += --enable-xpm +FLUXBOX_DEPENDENCIES += xlib_libXpm +else +FLUXBOX_CONF_OPTS += --disable-xpm +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +FLUXBOX_CONF_OPTS += --enable-xinerama +FLUXBOX_DEPENDENCIES += xlib_libXinerama +else +FLUXBOX_CONF_OPTS += --disable-xinerama +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXEXT),y) +FLUXBOX_CONF_OPTS += --enable-xext +FLUXBOX_DEPENDENCIES += xlib_libXext +else +FLUXBOX_CONF_OPTS += --disable-xext +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) +FLUXBOX_CONF_OPTS += --enable-xrandr +FLUXBOX_DEPENDENCIES += xlib_libXrandr +else +FLUXBOX_CONF_OPTS += --disable-xrandr +endif + +define FLUXBOX_INSTALL_XSESSION_FILE + $(INSTALL) -m 0755 -D package/fluxbox/xsession \ + $(TARGET_DIR)/root/.xsession +endef + +FLUXBOX_POST_INSTALL_TARGET_HOOKS += FLUXBOX_INSTALL_XSESSION_FILE + +$(eval $(autotools-package)) diff --git a/package/fluxbox/xsession b/package/fluxbox/xsession new file mode 100644 index 00000000..b51acff4 --- /dev/null +++ b/package/fluxbox/xsession @@ -0,0 +1,2 @@ +#!/bin/sh +exec startfluxbox diff --git a/package/fmc/Config.in b/package/fmc/Config.in new file mode 100644 index 00000000..1c6ae5e8 --- /dev/null +++ b/package/fmc/Config.in @@ -0,0 +1,27 @@ +comment "fmc needs a toolchain w/ C++" + depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 || BR2_aarch64 + depends on !BR2_INSTALL_LIBSTDCPP + +comment "fmc needs a Linux kernel to be built" + depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 || BR2_aarch64 + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_FMC + bool "fmc" + depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 || BR2_aarch64 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_LINUX_KERNEL # fmlib + select BR2_PACKAGE_TCLAP + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_FMLIB + help + The Frame Manager Configuration tool is Freescale PowerPC + platform software package whose primary purpose is converting + Parse-Classify-Police-Distribute (PCD) descriptions of network + packets flow into hardware configuration. The tool provides an + abstraction layer between the end customer's vision of the PCD + task definition and real hardware implementation. + See application note: + https://www.nxp.com/docs/en/application-note/AN4760.pdf + + https://github.com/nxp-qoriq/fmc diff --git a/package/fmc/fmc.hash b/package/fmc/fmc.hash new file mode 100644 index 00000000..961ce18a --- /dev/null +++ b/package/fmc/fmc.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a58514816108a16d07307f924ebceb67c7d61709e4449978763fc44ed6e1fc44 fmc-LSDK-21.08.tar.gz +sha256 f92862ceb95db5492f50a59d7c799c9395b714db88db92d11891dc0233e2ac42 COPYING diff --git a/package/fmc/fmc.mk b/package/fmc/fmc.mk new file mode 100644 index 00000000..4f25545f --- /dev/null +++ b/package/fmc/fmc.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# fmc +# +################################################################################ + +FMC_VERSION = LSDK-21.08 +FMC_SITE = $(call github,nxp-qoriq,fmc,$(FMC_VERSION)) +FMC_LICENSE = MIT +FMC_LICENSE_FILES = COPYING +FMC_DEPENDENCIES = libxml2 tclap fmlib + +FMC_MAKE_OPTS = \ + CC="$(TARGET_CC)" \ + CXX="$(TARGET_CXX)" \ + FMD_USPACE_HEADER_PATH="$(STAGING_DIR)/usr/include/fmd" \ + FMD_USPACE_LIB_PATH="$(STAGING_DIR)/usr/lib" \ + LIBXML2_HEADER_PATH="$(STAGING_DIR)/usr/include/libxml2" \ + TCLAP_HEADER_PATH="$(STAGING_DIR)/usr/include" + +ifeq ($(BR2_powerpc64),y) +FMC_MAKE_OPTS += M64BIT=1 +endif + +# fmc's platform is the same as fmlib's. +FMC_PLATFORM = $(call qstrip,$(BR2_PACKAGE_FMLIB_PLATFORM)) + +define FMC_BUILD_CMDS + $(SED) "s:LS1043:$(FMC_PLATFORM):g" $(@D)/source/Makefile + # The linking step has dependency issues so using MAKE1 + $(TARGET_MAKE_ENV) $(MAKE1) $(FMC_MAKE_OPTS) -C $(@D)/source +endef + +define FMC_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/source/fmc $(TARGET_DIR)/usr/sbin/fmc + cp -dpfr $(@D)/etc/fmc $(TARGET_DIR)/etc/ +endef + +$(eval $(generic-package)) diff --git a/package/fmlib/Config.in b/package/fmlib/Config.in new file mode 100644 index 00000000..459d5bf1 --- /dev/null +++ b/package/fmlib/Config.in @@ -0,0 +1,56 @@ +comment "fmlib needs a Linux kernel to be built" + depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 || BR2_aarch64 + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_FMLIB + bool "fmlib" + depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 || BR2_aarch64 + depends on BR2_LINUX_KERNEL + help + The Frame Manager library provides Freescale PowerPC platforms + an API on top of the Frame Manager driver ioctl calls, that + provides a user space application with a simple way to + configure driver parameters and PCD (parse - classify - + distribute) rules. + + https://github.com/nxp-qoriq/fmlib + +if BR2_PACKAGE_FMLIB +choice + prompt "QorIQ Target Family" + help + Select the family of QorIQ processor. + +config BR2_FMLIB_QORIQ_FAMILY_P4080 + bool "p40xx" + depends on BR2_powerpc_e500mc + +config BR2_FMLIB_QORIQ_FAMILY_T4240 + bool "t42xx" + depends on BR2_powerpc_e500mc + +config BR2_FMLIB_QORIQ_FAMILY_T2080 + bool "t208x" + depends on BR2_powerpc_e6500 + +config BR2_FMLIB_QORIQ_FAMILY_ARM + bool "arm" + depends on BR2_aarch64 + +endchoice + +config BR2_PACKAGE_FMLIB_ARCHTYPE + string + default "ppce500mc" if BR2_powerpc_e500mc + default "ppc64e6500" if BR2_powerpc_e6500 && BR2_powerpc64 + default "ppc32e6500" if BR2_powerpc_e6500 && BR2_powerpc + default "arm" if BR2_aarch64 + +config BR2_PACKAGE_FMLIB_PLATFORM + string + default "P4080" if BR2_FMLIB_QORIQ_FAMILY_P4080 + default "T4240" if BR2_FMLIB_QORIQ_FAMILY_T4240 + default "FMAN_V3H" if BR2_FMLIB_QORIQ_FAMILY_T2080 + default "arm" if BR2_aarch64 + +endif diff --git a/package/fmlib/fmlib.hash b/package/fmlib/fmlib.hash new file mode 100644 index 00000000..f81b0178 --- /dev/null +++ b/package/fmlib/fmlib.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 64dc76c0adc3aa58bce6aba470dee7dee001d4964ccb1958e899a59d9917b21d fmlib-LSDK-21.08.tar.gz +sha256 5d7770fa9f70f0c6f0b4784bbca8401811259a4b1e03455dbd863ffd0d34d2ca COPYING diff --git a/package/fmlib/fmlib.mk b/package/fmlib/fmlib.mk new file mode 100644 index 00000000..3d185979 --- /dev/null +++ b/package/fmlib/fmlib.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# fmlib +# +################################################################################ + +FMLIB_VERSION = LSDK-21.08 +FMLIB_SITE = $(call github,nxp-qoriq,fmlib,$(FMLIB_VERSION)) +FMLIB_LICENSE = BSD-3-Clause +FMLIB_LICENSE_FILES = COPYING +FMLIB_DEPENDENCIES = linux +FMLIB_INSTALL_STAGING = YES + +# This package installs a static library only, so there's +# nothing to install to the target +FMLIB_INSTALL_TARGET = NO + +FMLIB_MAKE_OPTS = \ + CC="$(TARGET_CC)" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + KERNEL_SRC="$(LINUX_DIR)" \ + PREFIX="$(STAGING_DIR)/usr" + +FMLIB_ARCHTYPE = $(call qstrip,$(BR2_PACKAGE_FMLIB_ARCHTYPE)) +FMLIB_PLATFORM = $(call qstrip,$(BR2_PACKAGE_FMLIB_PLATFORM)) + +define FMLIB_BUILD_CMDS + $(SED) "s:P4080:$(FMLIB_PLATFORM):g" $(@D)/Makefile + $(TARGET_MAKE_ENV) $(MAKE) $(FMLIB_MAKE_OPTS) -C $(@D) libfm-$(FMLIB_ARCHTYPE).a +endef + +define FMLIB_INSTALL_STAGING_CMDS + $(RM) $(STAGING_DIR)/usr/lib/libfm.a + $(TARGET_MAKE_ENV) $(MAKE) $(FMLIB_MAKE_OPTS) -C $(@D) install-libfm-$(FMLIB_ARCHTYPE) +endef + +$(eval $(generic-package)) diff --git a/package/fmt/Config.in b/package/fmt/Config.in new file mode 100644 index 00000000..8643c9b5 --- /dev/null +++ b/package/fmt/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_FMT + bool "fmt" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + help + fmt is an open-source formatting library for C++. It can be + used as a safe alternative to printf or as a fast alternative + to IOStreams. + + https://fmt.dev + +comment "fmt needs a toolchain w/ C++, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR diff --git a/package/fmt/fmt.hash b/package/fmt/fmt.hash new file mode 100644 index 00000000..aff52ccb --- /dev/null +++ b/package/fmt/fmt.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 40fc58bebcf38c759e11a7bd8fdc163507d2423ef5058bba7f26280c5b9c5465 fmt-11.0.2.zip +sha256 07580f2a3b35709ce703d523f447b242f6dfec7582a8c0df102c7fa2849375f8 LICENSE diff --git a/package/fmt/fmt.mk b/package/fmt/fmt.mk new file mode 100644 index 00000000..113652e9 --- /dev/null +++ b/package/fmt/fmt.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# fmt +# +################################################################################ + +FMT_VERSION = 11.0.2 +FMT_SITE = https://github.com/fmtlib/fmt/releases/download/$(FMT_VERSION) +FMT_SOURCE = fmt-$(FMT_VERSION).zip +FMT_LICENSE = MIT with exception +FMT_LICENSE_FILES = LICENSE +FMT_CPE_ID_VENDOR = fmt +FMT_INSTALL_STAGING = YES + +FMT_CONF_OPTS = \ + -DFMT_INSTALL=ON \ + -DFMT_TEST=OFF + +define FMT_EXTRACT_CMDS + $(UNZIP) -d $(BUILD_DIR) $(FMT_DL_DIR)/$(FMT_SOURCE) +endef + +$(eval $(cmake-package)) diff --git a/package/fmtools/Config.in b/package/fmtools/Config.in new file mode 100644 index 00000000..182b5179 --- /dev/null +++ b/package/fmtools/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_FMTOOLS + bool "fmtools" + help + fmtools is a pair of simple command-line utilities for + "video4linux2" radio tuner cards under Linux. It includes + fm for power control, tuning, and volume and fmscan for + scanning for stations. + + http://benpfaff.org/fmtools/ diff --git a/package/fmtools/fmtools.hash b/package/fmtools/fmtools.hash new file mode 100644 index 00000000..48f88be5 --- /dev/null +++ b/package/fmtools/fmtools.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 75174e07d8cde6d4a8a5d7bbaa3a3b0760a850e7f6840cb7c6246227b18f5a39 fmtools-2.0.7.tar.gz +# locally computed +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING diff --git a/package/fmtools/fmtools.mk b/package/fmtools/fmtools.mk new file mode 100644 index 00000000..890fae1d --- /dev/null +++ b/package/fmtools/fmtools.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# fmtools +# +################################################################################ + +FMTOOLS_VERSION = 2.0.7 +FMTOOLS_SITE = http://benpfaff.org/fmtools +FMTOOLS_LICENSE = GPL-2.0+ +FMTOOLS_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/font-awesome/Config.in b/package/font-awesome/Config.in new file mode 100644 index 00000000..694d74e5 --- /dev/null +++ b/package/font-awesome/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_FONT_AWESOME + bool "font-awesome" + help + Font Awesome is a full suite of 605 pictographic icons for + easy scalable vector graphics on websites. + + https://github.com/FortAwesome/Font-Awesome diff --git a/package/font-awesome/font-awesome.hash b/package/font-awesome/font-awesome.hash new file mode 100644 index 00000000..89bc411f --- /dev/null +++ b/package/font-awesome/font-awesome.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 de512ba0e1dead382bbfce372cde74b3f18971d876fffb635ee9333f0db05d43 font-awesome-4.7.0.tar.gz diff --git a/package/font-awesome/font-awesome.mk b/package/font-awesome/font-awesome.mk new file mode 100644 index 00000000..5211ac22 --- /dev/null +++ b/package/font-awesome/font-awesome.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# font-awesome +# +################################################################################ + +FONT_AWESOME_VERSION = 4.7.0 +FONT_AWESOME_SITE = $(call github,FortAwesome,Font-Awesome,v$(FONT_AWESOME_VERSION)) +FONT_AWESOME_LICENSE = OFL-1.1 (font), MIT (CSS, LESS and Sass files) +FONT_AWESOME_DIRECTORIES_LIST = css fonts less scss + +define FONT_AWESOME_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/share/font-awesome/ + $(foreach d,$(FONT_AWESOME_DIRECTORIES_LIST),\ + cp -dpfr $(@D)/$(d) $(TARGET_DIR)/usr/share/font-awesome$(sep)) + mkdir -p $(TARGET_DIR)/usr/share/fonts/ + ln -sf ../font-awesome $(TARGET_DIR)/usr/share/fonts/font-awesome +endef + +$(eval $(generic-package)) diff --git a/package/fontconfig/0001-add-pthread-as-a-dependency-of-a-static-lib.patch b/package/fontconfig/0001-add-pthread-as-a-dependency-of-a-static-lib.patch new file mode 100644 index 00000000..c6aa5145 --- /dev/null +++ b/package/fontconfig/0001-add-pthread-as-a-dependency-of-a-static-lib.patch @@ -0,0 +1,43 @@ +From 40ec04a8bf36dd8d0aa3da98b167792ce2dcd114 Mon Sep 17 00:00:00 2001 +From: Silvan Scherrer +Date: Sun, 20 Sep 2020 12:52:08 +0200 +Subject: [PATCH] add pthread as a dependency of a static lib + +Downloaded from https://trac.netlabs.org/ports/changeset/2220 + +Upstream: https://gitlab.freedesktop.org/fontconfig/fontconfig/-/merge_requests/121 + +Signed-off-by: Bernd Kuhls +--- + configure.ac | 2 ++ + fontconfig.pc.in | 4 ++-- + 2 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index f3189a7..594d6fd 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -690,6 +690,8 @@ fi + have_pthread=false + if test "$os_win32" = no; then + AX_PTHREAD([have_pthread=true]) ++ AC_SUBST(PTHREAD_CFLAGS) ++ AC_SUBST(PTHREAD_LIBS) + fi + if $have_pthread; then + LIBS="$PTHREAD_LIBS $LIBS" +diff --git a/fontconfig.pc.in b/fontconfig.pc.in +index 61b35fb..f823bac 100644 +--- a/fontconfig.pc.in ++++ b/fontconfig.pc.in +@@ -14,5 +14,5 @@ Version: @VERSION@ + Requires: @PKGCONFIG_REQUIRES@ + Requires.private: @PKGCONFIG_REQUIRES_PRIVATELY@ + Libs: -L${libdir} -lfontconfig +-Libs.private: @ICONV_LIBS@ @PKG_EXPAT_LIBS@ +-Cflags: -I${includedir} @ICONV_CFLAGS@ @PKG_EXPAT_CFLAGS@ ++Libs.private: @ICONV_LIBS@ @PKG_EXPAT_LIBS@ @PTHREAD_LIBS@ ++Cflags: -I${includedir} @ICONV_CFLAGS@ @PKG_EXPAT_CFLAGS@ @PTHREAD_CFLAGS@ +-- +2.27.0 + diff --git a/package/fontconfig/Config.in b/package/fontconfig/Config.in new file mode 100644 index 00000000..d274b063 --- /dev/null +++ b/package/fontconfig/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_FONTCONFIG + bool "fontconfig" + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Fontconfig is a library for configuring and customizing font + access. + + http://www.fontconfig.org/ diff --git a/package/fontconfig/fontconfig.hash b/package/fontconfig/fontconfig.hash new file mode 100644 index 00000000..a4f87caf --- /dev/null +++ b/package/fontconfig/fontconfig.hash @@ -0,0 +1,5 @@ +# From https://lists.freedesktop.org/archives/fontconfig/2023-January/006950.html +sha256 dba695b57bce15023d2ceedef82062c2b925e51f5d4cc4aef736cf13f60a468b fontconfig-2.14.2.tar.xz + +# Locally calculated +sha256 51a51aa9823704fd90bccc616cdd17ebabb5b2b3e9cbde886ca02c7002288067 COPYING diff --git a/package/fontconfig/fontconfig.mk b/package/fontconfig/fontconfig.mk new file mode 100644 index 00000000..11758a4c --- /dev/null +++ b/package/fontconfig/fontconfig.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# fontconfig +# +################################################################################ + +FONTCONFIG_VERSION = 2.14.2 +FONTCONFIG_SITE = https://www.freedesktop.org/software/fontconfig/release +FONTCONFIG_SOURCE = fontconfig-$(FONTCONFIG_VERSION).tar.xz +# 0001-add-pthread-as-a-dependency-of-a-static-lib.patch +FONTCONFIG_AUTORECONF = YES +FONTCONFIG_INSTALL_STAGING = YES +FONTCONFIG_DEPENDENCIES = freetype expat host-pkgconf host-gperf \ + $(if $(BR2_PACKAGE_UTIL_LINUX_LIBS),util-linux-libs,util-linux) \ + $(TARGET_NLS_DEPENDENCIES) +HOST_FONTCONFIG_DEPENDENCIES = \ + host-freetype host-expat host-pkgconf host-gperf host-util-linux \ + host-gettext +FONTCONFIG_LICENSE = fontconfig license +FONTCONFIG_LICENSE_FILES = COPYING +FONTCONFIG_CPE_ID_VALID = YES + +FONTCONFIG_CONF_OPTS = \ + --with-arch=$(GNU_TARGET_NAME) \ + --with-cache-dir=/var/cache/fontconfig \ + --disable-docs + +HOST_FONTCONFIG_CONF_OPTS = \ + --disable-static + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/foot/Config.in b/package/foot/Config.in new file mode 100644 index 00000000..b0ec2e39 --- /dev/null +++ b/package/foot/Config.in @@ -0,0 +1,37 @@ +config BR2_PACKAGE_FOOT + bool "foot" + depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # fcft + depends on !BR2_STATIC_LIBS # wayland + select BR2_PACKAGE_FCFT + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_LIBXKBCOMMON + select BR2_PACKAGE_PIXMAN + select BR2_PACKAGE_TLLIST + select BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_WAYLAND_PROTOCOLS + help + A fast, lightweight and minimalistic Wayland terminal + emulator. + NOTE: foot needs a working UTF-8 locale (BR2_GENERATE_LOCALE) + + https://codeberg.org/dnkl/foot + +if BR2_PACKAGE_FOOT + +config BR2_PACKAGE_FOOT_GRAPHEME_CLUSTERING + bool "grapheme-clustering" + select BR2_PACKAGE_UTF8PROC + help + Enables grapheme clustering. + +config BR2_PACKAGE_FOOT_THEMES + bool "themes" + help + Install themes (predefined color schemes) + +endif # BR2_PACKAGE_FOOT + +comment "foot needs a glibc or musl toolchain w/ dynamic library" + depends on !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) || \ + BR2_STATIC_LIBS diff --git a/package/foot/foot.hash b/package/foot/foot.hash new file mode 100644 index 00000000..f3bf0f60 --- /dev/null +++ b/package/foot/foot.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 8060ec28cbf6e2e3d408665330da4bc48fd094d4f1265d7c58dc75c767463c29 1.16.2.tar.gz +sha256 d534a23a31500a0ac958d9634b84f532bd73ff1aca1bb8f7debbcbebc16ff39a LICENSE diff --git a/package/foot/foot.mk b/package/foot/foot.mk new file mode 100644 index 00000000..1595e2a7 --- /dev/null +++ b/package/foot/foot.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# foot +# +################################################################################ + +FOOT_VERSION = 1.16.2 +FOOT_SOURCE = $(FOOT_VERSION).tar.gz +FOOT_SITE = https://codeberg.org/dnkl/foot/archive +FOOT_LICENSE = MIT +FOOT_LICENSE_FILES = LICENSE +FOOT_DEPENDENCIES = \ + fcft \ + fontconfig \ + freetype \ + libxkbcommon \ + pixman \ + tllist \ + wayland \ + wayland-protocols + +FOOT_CONF_OPTS = \ + -Ddocs=disabled \ + -Dtests=false + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +FOOT_DEPENDENCIES += systemd +endif + +ifeq ($(BR2_PACKAGE_LIBUTEMPTER),y) +FOOT_DEPENDENCIES += libutempter +FOOT_CONF_OPTS += -Dutmp-backend='libutempter' +else +FOOT_CONF_OPTS += -Dutmp-backend='none' +endif + +ifeq ($(BR2_PACKAGE_FOOT_GRAPHEME_CLUSTERING),y) +FOOT_DEPENDENCIES += utf8proc +FOOT_CONF_OPTS += -Dgrapheme-clustering=enabled +else +FOOT_CONF_OPTS += -Dgrapheme-clustering=disabled +endif + +ifeq ($(BR2_PACKAGE_FOOT_THEMES),y) +FOOT_CONF_OPTS += -Dthemes=true +else +FOOT_CONF_OPTS += -Dthemes=false +endif + +$(eval $(meson-package)) diff --git a/package/forge/Config.in b/package/forge/Config.in new file mode 100644 index 00000000..86d48321 --- /dev/null +++ b/package/forge/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_FORGE + bool "forge" + help + A native implementation of TLS (and various other + cryptographic tools) in JavaScript. + + https://github.com/digitalbazaar/forge diff --git a/package/forge/forge.hash b/package/forge/forge.hash new file mode 100644 index 00000000..36e92be7 --- /dev/null +++ b/package/forge/forge.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 77de03720cd00fafdbcda47e3e995a1f548f2e9028d11a98b0d9bef37ec2ad85 node-forge-1.3.1.tgz +sha256 f63ff0e4e239244aa79280da2dd4811a0469e5e201caf5cbc0d97c3a1dff8e82 LICENSE diff --git a/package/forge/forge.mk b/package/forge/forge.mk new file mode 100644 index 00000000..0b81295a --- /dev/null +++ b/package/forge/forge.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# forge +# +################################################################################ + +FORGE_VERSION = 1.3.1 +FORGE_SITE = https://registry.npmjs.org/node-forge/- +FORGE_SOURCE = node-forge-$(FORGE_VERSION).tgz +FORGE_LICENSE = BSD-3-Clause, GPL-2.0, vendored dependencies licenses probably not listed +FORGE_LICENSE_FILES = LICENSE +FORGE_CPE_ID_VENDOR = digitalbazaar + +# Install .min.js as .js +define FORGE_INSTALL_TARGET_CMDS + $(INSTALL) -m 644 -D $(@D)/dist/forge.all.min.js \ + $(TARGET_DIR)/var/www/forge.all.js + $(INSTALL) -m 644 -D $(@D)/dist/forge.min.js \ + $(TARGET_DIR)/var/www/forge.js + $(INSTALL) -m 644 -D $(@D)/dist/prime.worker.min.js \ + $(TARGET_DIR)/var/www/prime.worker.js +endef + +$(eval $(generic-package)) diff --git a/package/fping/Config.in b/package/fping/Config.in new file mode 100644 index 00000000..686102a4 --- /dev/null +++ b/package/fping/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_FPING + bool "fping" + help + fping is a program to send ICMP echo probes to network hosts, + similar to ping, but much better performing when pinging + multiple hosts. + + http://fping.org/ diff --git a/package/fping/fping.hash b/package/fping/fping.hash new file mode 100644 index 00000000..4671cd77 --- /dev/null +++ b/package/fping/fping.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 1ee5268c063d76646af2b4426052e7d81a42b657e6a77d8e7d3d2e60fd7409fe fping-5.1.tar.gz + +# Hash for license file +sha256 6051b27e4b4a648f7bc8b329024da53a6e95ce88fcf0ccc259c371a74b741757 COPYING diff --git a/package/fping/fping.mk b/package/fping/fping.mk new file mode 100644 index 00000000..5986d05b --- /dev/null +++ b/package/fping/fping.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# fping +# +################################################################################ + +FPING_VERSION = 5.1 +FPING_SITE = http://fping.org/dist +FPING_LICENSE = BSD-like +FPING_LICENSE_FILES = COPYING +FPING_SELINUX_MODULES = netutils + +$(eval $(autotools-package)) diff --git a/package/freeipmi/0001-libfreeipmi-sel-ipmi-sel-string-supermicro-common.h-.patch b/package/freeipmi/0001-libfreeipmi-sel-ipmi-sel-string-supermicro-common.h-.patch new file mode 100644 index 00000000..848539e7 --- /dev/null +++ b/package/freeipmi/0001-libfreeipmi-sel-ipmi-sel-string-supermicro-common.h-.patch @@ -0,0 +1,36 @@ +From 9239a686e4bfd862145f4654017112a0f8cbbb0d Mon Sep 17 00:00:00 2001 +From: Albert Chu +Date: Fri, 22 Mar 2024 21:07:28 -0700 +Subject: [PATCH] libfreeipmi/sel/ipmi-sel-string-supermicro-common.h: Add + missing function prototype. + +Signed-off-by: Albert Chu +[Waldemar: removed Changelog patching] +Signed-off-by: Waldemar Brodkorb +Upstream: http://git.savannah.gnu.org/cgit/freeipmi.git/commit/?h=freeipmi-1-6-0-stable&id=9239a686e4bfd862145f4654017112a0f8cbbb0d +--- + libfreeipmi/sel/ipmi-sel-string-supermicro-common.h | 10 ++++++++++ + 1 files changed, 15 insertions(+) + +diff --git a/libfreeipmi/sel/ipmi-sel-string-supermicro-common.h b/libfreeipmi/sel/ipmi-sel-string-supermicro-common.h +index 5785f2b64..be5e41d7d 100644 +--- a/libfreeipmi/sel/ipmi-sel-string-supermicro-common.h ++++ b/libfreeipmi/sel/ipmi-sel-string-supermicro-common.h +@@ -39,4 +39,14 @@ int sel_string_output_supermicro_overheat_event_data1_class_oem (ipmi_sel_ctx_t + unsigned int *wlen, + struct ipmi_sel_system_event_record_data *system_event_record_data); + ++int sel_string_output_supermicro_dimm_event_data2_event_data3 (ipmi_sel_ctx_t ctx, ++ struct ipmi_sel_entry *sel_entry, ++ uint8_t sel_record_type, ++ char *buf, ++ unsigned int buflen, ++ unsigned int flags, ++ unsigned int *wlen, ++ struct ipmi_sel_system_event_record_data *system_event_record_data, ++ int *oem_rv); ++ + #endif /* IPMI_SEL_STRING_SUPERMICRO_COMMON_H */ +-- +2.30.2 + diff --git a/package/freeipmi/0002-ipmi-sensors-fix-header-guard-definitions.patch b/package/freeipmi/0002-ipmi-sensors-fix-header-guard-definitions.patch new file mode 100644 index 00000000..b04b3058 --- /dev/null +++ b/package/freeipmi/0002-ipmi-sensors-fix-header-guard-definitions.patch @@ -0,0 +1,57 @@ +From c3d1a3f5c550940577076ce2c4595b470ae963c3 Mon Sep 17 00:00:00 2001 +From: Albert Chu +Date: Sun, 24 Mar 2024 13:11:55 -0700 +Subject: [PATCH] ipmi-sensors: fix header guard definitions + +Signed-off-by: Albert Chu +[Waldemar: removed Changelog patching] +Signed-off-by: Waldemar Brodkorb +Upstream: https://git.savannah.gnu.org/cgit/freeipmi.git/commit/?h=freeipmi-1-6-0-stable&id=c3d1a3f5c550940577076ce2c4595b470ae963c3 +--- + ipmi-sensors/ipmi-sensors-oem-intel-s2600jf.h | 2 +- + ipmi-sensors/ipmi-sensors-oem-intel-s2600wp.h | 2 +- + ipmi-sensors/ipmi-sensors-oem-intel-s5500wb.h | 2 +- + 3 files changed, 10 insertions(+), 3 deletions(-) + +diff --git a/ipmi-sensors/ipmi-sensors-oem-intel-s2600jf.h b/ipmi-sensors/ipmi-sensors-oem-intel-s2600jf.h +index 0b11e61ce..4ae808cda 100644 +--- a/ipmi-sensors/ipmi-sensors-oem-intel-s2600jf.h ++++ b/ipmi-sensors/ipmi-sensors-oem-intel-s2600jf.h +@@ -17,7 +17,7 @@ + */ + + #ifndef IPMI_SENSORS_OEM_INTEL_S2600JF_H +-#define IPMI_SENSORS_OEM_INTEL_H ++#define IPMI_SENSORS_OEM_INTEL_S2600JF_H + + #include "ipmi-sensors.h" + +diff --git a/ipmi-sensors/ipmi-sensors-oem-intel-s2600wp.h b/ipmi-sensors/ipmi-sensors-oem-intel-s2600wp.h +index 0607b125d..5c6410b7b 100644 +--- a/ipmi-sensors/ipmi-sensors-oem-intel-s2600wp.h ++++ b/ipmi-sensors/ipmi-sensors-oem-intel-s2600wp.h +@@ -17,7 +17,7 @@ + */ + + #ifndef IPMI_SENSORS_OEM_INTEL_S2600WP_H +-#define IPMI_SENSORS_OEM_INTEL_H ++#define IPMI_SENSORS_OEM_INTEL_S2600WP_H + + #include "ipmi-sensors.h" + +diff --git a/ipmi-sensors/ipmi-sensors-oem-intel-s5500wb.h b/ipmi-sensors/ipmi-sensors-oem-intel-s5500wb.h +index f4f3dc85b..204295bd8 100644 +--- a/ipmi-sensors/ipmi-sensors-oem-intel-s5500wb.h ++++ b/ipmi-sensors/ipmi-sensors-oem-intel-s5500wb.h +@@ -17,7 +17,7 @@ + */ + + #ifndef IPMI_SENSORS_OEM_INTEL_S5500WB_H +-#define IPMI_SENSORS_OEM_INTEL_H ++#define IPMI_SENSORS_OEM_INTEL_S5500WB_H + + #include "ipmi-sensors.h" + +-- +2.39.2 + diff --git a/package/freeipmi/0003-ipmi-sensors-add-missing-include.patch b/package/freeipmi/0003-ipmi-sensors-add-missing-include.patch new file mode 100644 index 00000000..8bc44165 --- /dev/null +++ b/package/freeipmi/0003-ipmi-sensors-add-missing-include.patch @@ -0,0 +1,28 @@ +From 6ac6f816dbfc83d8cd4f4f163b0f8ff1062d883e Mon Sep 17 00:00:00 2001 +From: Albert Chu +Date: Mon, 25 Mar 2024 13:57:45 -0700 +Subject: [PATCH] ipmi-sensors: add missing include + +Signed-off-by: Albert Chu +[Waldemar: removed Changelog patching] +Signed-off-by: Waldemar Brodkorb +Upstream: https://git.savannah.gnu.org/cgit/freeipmi.git/commit/?h=freeipmi-1-6-0-stable&id=6ac6f816dbfc83d8cd4f4f163b0f8ff1062d883e +--- + ipmi-sensors/ipmi-sensors-oem-intel.c | 1 + + 1 files changed, 1 insertions(+) + +diff --git a/ipmi-sensors/ipmi-sensors-oem-intel.c b/ipmi-sensors/ipmi-sensors-oem-intel.c +index 5e0f3733a..3fc022e3d 100644 +--- a/ipmi-sensors/ipmi-sensors-oem-intel.c ++++ b/ipmi-sensors/ipmi-sensors-oem-intel.c +@@ -34,6 +34,7 @@ + #include "ipmi-sensors-oem-intel.h" + #include "ipmi-sensors-oem-intel-s5500wb.h" + #include "ipmi-sensors-oem-intel-s2600jf.h" ++#include "ipmi-sensors-oem-intel-s2600wp.h" + #include "ipmi-sensors-oem-intel-quanta-qssc-s4r.h" + #include "ipmi-sensors-oem-intel-node-manager.h" + +-- +2.39.2 + diff --git a/package/freeipmi/Config.in b/package/freeipmi/Config.in new file mode 100644 index 00000000..8ef2e137 --- /dev/null +++ b/package/freeipmi/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_FREEIPMI + bool "freeipmi" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL + help + FreeIPMI provides in-band and out-of-band IPMI software based + on the IPMI v1.5/2.0 specification. + + The IPMI specification defines a set of interfaces for + platform management and is implemented by a number vendors + for system management. The features of IPMI that most users + will be interested in are sensor monitoring, system event + monitoring, power control, and serial-over-LAN (SOL). + + https://www.gnu.org/software/freeipmi/ + +comment "freeipmi needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/freeipmi/freeipmi.hash b/package/freeipmi/freeipmi.hash new file mode 100644 index 00000000..2f81d90c --- /dev/null +++ b/package/freeipmi/freeipmi.hash @@ -0,0 +1,15 @@ +# Locally computed: +sha256 1a3dac5c76b7ccc4d4f86aa12b8ef9b212baef7489bf05e899b89abb7e14edb5 freeipmi-1.6.14.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING.bmc-watchdog +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING.ipmiconsole +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING.ipmi-dcmi +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING.ipmidetect +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING.ipmi-fru +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING.ipmimonitoring +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING.ipmiping +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING.ipmipower +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING.ipmiseld +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING.pstdout +sha256 48f44386b3f359e70d7e4a5d7f1d529d8591a7c64c47df3f4abdf2ad45a6d537 COPYING.sunbmc +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING.ZRESEARCH diff --git a/package/freeipmi/freeipmi.mk b/package/freeipmi/freeipmi.mk new file mode 100644 index 00000000..e28f63f7 --- /dev/null +++ b/package/freeipmi/freeipmi.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# freeipmi +# +################################################################################ + +FREEIPMI_VERSION = 1.6.14 +FREEIPMI_SITE = https://ftp.gnu.org/gnu/freeipmi +FREEIPMI_LICENSE = GPL-3.0+, BSD-like (sunbmc) +FREEIPMI_LICENSE_FILES = \ + COPYING COPYING.bmc-watchdog COPYING.ipmiconsole COPYING.ipmi-dcmi \ + COPYING.ipmidetect COPYING.ipmi-fru COPYING.ipmimonitoring \ + COPYING.ipmiping COPYING.ipmipower COPYING.ipmiseld COPYING.pstdout \ + COPYING.sunbmc COPYING.ZRESEARCH +FREEIPMI_DEPENDENCIES = host-pkgconf +FREEIPMI_INSTALL_STAGING = YES +# Disable checking for /dev/urandom and /dev/random through AC_CHECK_FILE +FREEIPMI_CONF_OPTS = --without-random-device + +# Work around for uClibc or musl toolchains which lack argp_*() +# functions. +ifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y) +FREEIPMI_DEPENDENCIES += argp-standalone $(TARGET_NLS_DEPENDENCIES) +FREEIPMI_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) +endif + +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +FREEIPMI_CONF_OPTS += --with-encryption +FREEIPMI_DEPENDENCIES += libgcrypt +else +FREEIPMI_CONF_OPTS += --without-encryption +endif + +$(eval $(autotools-package)) diff --git a/package/freeradius-client/0001-fix-for-nettle.patch b/package/freeradius-client/0001-fix-for-nettle.patch new file mode 100644 index 00000000..a862c749 --- /dev/null +++ b/package/freeradius-client/0001-fix-for-nettle.patch @@ -0,0 +1,20 @@ +lib/rc-md5: fix build when nettle is enabled + +rc-md5 uses size_t, which is defined in string.h. This include is +missing when built against nettle. + +Just add it. + +Signed-off-by: "Yann E. MORIN" + +diff -durN freeradius-client-1.1.7.orig/lib/rc-md5.h freeradius-client-1.1.7/lib/rc-md5.h +--- freeradius-client-1.1.7.orig/lib/rc-md5.h 2015-01-19 17:18:26.000000000 +0100 ++++ freeradius-client-1.1.7/lib/rc-md5.h 2015-01-25 22:56:07.815626476 +0100 +@@ -13,6 +13,7 @@ + + #ifdef HAVE_NETTLE + ++#include /* size_t */ + #include + + #else diff --git a/package/freeradius-client/Config.in b/package/freeradius-client/Config.in new file mode 100644 index 00000000..36a74c3a --- /dev/null +++ b/package/freeradius-client/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_FREERADIUS_CLIENT + bool "freeradius-client" + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + FreeRADIUS Client is a framework and library for + writing RADIUS Clients. + + http://wiki.freeradius.org/project/Radiusclient diff --git a/package/freeradius-client/freeradius-client.hash b/package/freeradius-client/freeradius-client.hash new file mode 100644 index 00000000..e343b3a4 --- /dev/null +++ b/package/freeradius-client/freeradius-client.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 eada2861b8f4928e3ac6b5bbfe11e92cd6cdcacfce40cae1085e77c1b6add0e9 freeradius-client-1.1.7.tar.gz +sha256 e579878de7971b2224ae2263bbc61f6c465fe40e884a9068d5fa9d17fbfd2ebe COPYRIGHT diff --git a/package/freeradius-client/freeradius-client.mk b/package/freeradius-client/freeradius-client.mk new file mode 100644 index 00000000..32be15ba --- /dev/null +++ b/package/freeradius-client/freeradius-client.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# freeradius-client +# +################################################################################ + +FREERADIUS_CLIENT_VERSION = 1.1.7 +FREERADIUS_CLIENT_SITE = https://freeradius.org/ftp/pub/freeradius +FREERADIUS_CLIENT_LICENSE = BSD-2-Clause +FREERADIUS_CLIENT_LICENSE_FILES = COPYRIGHT +FREERADIUS_CLIENT_INSTALL_STAGING = YES + +FREERADIUS_CLIENT_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +FREERADIUS_CLIENT_DEPENDENCIES += libxcrypt +endif + +ifeq ($(BR2_PACKAGE_NETTLE),y) +FREERADIUS_CLIENT_DEPENDENCIES += nettle +FREERADIUS_CLIENT_CONF_OPTS += --with-nettle=yes +else +FREERADIUS_CLIENT_CONF_OPTS += --with-nettle=no +endif + +$(eval $(autotools-package)) diff --git a/package/freeradius-server/0001-jlibtool-cross-with-host-CC.patch b/package/freeradius-server/0001-jlibtool-cross-with-host-CC.patch new file mode 100644 index 00000000..94205754 --- /dev/null +++ b/package/freeradius-server/0001-jlibtool-cross-with-host-CC.patch @@ -0,0 +1,37 @@ +From 8a8506320acf3ea18940a6e3a447d7d394a3bd8e Mon Sep 17 00:00:00 2001 +From: David Gouarin +Date: Mon, 12 Apr 2021 11:05:54 -0500 +Subject: [PATCH] jlibtool cross with host CC + +jlibtool.c: while cross compiling, use host CC instead of target CC to build jlibtool + +Upstream: Not applicable + +Signed-off-by: David Gouarin +Signed-off-by: Matt Weber +[Fabrice: update for 3.2.3] +SIgned-off-by: Fabrice Fontaine +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + scripts/libtool.mk | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/scripts/libtool.mk b/scripts/libtool.mk +index 57915e1053..c28260dd7e 100644 +--- a/scripts/libtool.mk ++++ b/scripts/libtool.mk +@@ -48,8 +48,8 @@ ifeq "${LIBTOOL}" "JLIBTOOL" + # binary! + ${JLIBTOOL}: ${top_makedir}/jlibtool.c + $(Q)mkdir -p $(dir $@) +- $(Q)echo CC jlibtool.c +- $(Q)${CC} $< -o $@ ${JLIBTOOL_DEFS} ++ $(Q)echo HOSTCC jlibtool.c ++ $(Q)${HOSTCC} $< -o $@ ${JLIBTOOL_DEFS} + + clean: jlibtool_clean + +-- +2.17.1 + diff --git a/package/freeradius-server/0002-configure.ac-add-option-for-libcap.patch b/package/freeradius-server/0002-configure.ac-add-option-for-libcap.patch new file mode 100644 index 00000000..77ef3d18 --- /dev/null +++ b/package/freeradius-server/0002-configure.ac-add-option-for-libcap.patch @@ -0,0 +1,75 @@ +From 404f18da62e3708c9b290ee4eaf8461911df5475 Mon Sep 17 00:00:00 2001 +From: Changqing Li +Date: Thu, 22 Aug 2019 10:50:21 +0800 +Subject: [PATCH] configure.ac: add option for libcap + +Upstream-Status: Pending + +Signed-off-by: Jackie Huang +Signed-off-by: Changqing Li + +Fetch from: http://cgit.openembedded.org/meta-openembedded/tree/meta-networking/recipes-connectivity/freeradius/files +Signed-off-by: David Gouarin +Signed-off-by: Matt Weber +Upstream: https://github.com/FreeRADIUS/freeradius-server/pull/4632 +--- + configure.ac | 36 +++++++++++++++++++++++++++--------- + 1 file changed, 27 insertions(+), 9 deletions(-) + +diff --git a/configure.ac b/configure.ac +index c72511ab39..de016b28e5 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -941,6 +941,22 @@ fi + dnl Set by FR_SMART_CHECKLIB + LIBS="${old_LIBS}" + ++dnl # ++dnl # extra argument: --with-libcap ++dnl # ++WITH_LIBCAP=yes ++AC_ARG_WITH(libcap, ++[ --with-licap use licap for debugger checks. (default=yes)], ++[ case "$withval" in ++ no) ++ WITH_LIBCAP=no ++ ;; ++ *) ++ WITH_LIBCAP=yes ++ ;; ++ esac ] ++) ++ + dnl Check for cap + dnl extra argument: --with-cap-lib-dir=DIR + cap_lib_dir= +@@ -974,15 +990,17 @@ AC_ARG_WITH(cap-include-dir, + ;; + esac]) + +-smart_try_dir="$cap_lib_dir" +-FR_SMART_CHECK_LIB(cap, cap_get_proc) +-if test "x$ac_cv_lib_cap_cap_get_proc" != "xyes"; then +- AC_MSG_WARN([cap library not found, debugger checks will not be enabled. Use --with-cap-lib-dir=.]) +-else +- AC_DEFINE(HAVE_LIBCAP, 1, +- [Define to 1 if you have the `cap' library (-lcap).] +- ) +- HAVE_LIBCAP=1 ++if test "x$WITH_LIBCAP" = xyes; then ++ smart_try_dir="$cap_lib_dir" ++ FR_SMART_CHECK_LIB(cap, cap_get_proc) ++ if test "x$ac_cv_lib_cap_cap_get_proc" != "xyes"; then ++ AC_MSG_WARN([cap library not found, debugger checks will not be enabled. Use --with-cap-lib-dir=.]) ++ else ++ AC_DEFINE(HAVE_LIBCAP, 1, ++ [Define to 1 if you have the `cap' library (-lcap).] ++ ) ++ HAVE_LIBCAP=1 ++ fi + fi + + dnl # +-- +2.17.1 + diff --git a/package/freeradius-server/0003-configure.ac-allow-cross-compilation.patch b/package/freeradius-server/0003-configure.ac-allow-cross-compilation.patch new file mode 100644 index 00000000..a34c872a --- /dev/null +++ b/package/freeradius-server/0003-configure.ac-allow-cross-compilation.patch @@ -0,0 +1,44 @@ +From d6c1da041da77902a06d10bf03ef454468921801 Mon Sep 17 00:00:00 2001 +From: Changqing Li +Date: Tue, 24 Jul 2018 15:03:39 +0800 +Subject: [PATCH] configure.ac: allow cross-compilation + +The checking OpenSSL library and header version consistency will +always fail in cross compiling, skip the check and give a warning +instead for cross compiling. + +Upstream-Status: Inappropriate[embedded specific] + +Signed-off-by: Jackie Huang +Signed-off-by: Yi Zhao + +update to new version 3.0.17 to fix patch warning +Signed-off-by: Changqing Li + +Fetch from: http://cgit.openembedded.org/meta-openembedded/tree/meta-networking/recipes-connectivity/freeradius/files +Signed-off-by: David Gouarin +Signed-off-by: Matt Weber +Upstream: https://github.com/FreeRADIUS/freeradius-server/pull/4632 +[Fabrice: update for 3.2.3] +Signed-off-by: Fabrice Fontaine +--- + src/modules/rlm_krb5/configure.ac | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/modules/rlm_krb5/configure.ac b/src/modules/rlm_krb5/configure.ac +index efc9f29d7f..98a97e438a 100644 +--- a/src/modules/rlm_krb5/configure.ac ++++ b/src/modules/rlm_krb5/configure.ac +@@ -137,7 +137,8 @@ if test x$with_[]modname != xno; then + FR_SMART_CHECK_LIB(krb5, krb5_is_thread_safe) + if test "x$ac_cv_lib_krb5_krb5_is_thread_safe" = xyes; then + AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include ]], [[return krb5_is_thread_safe() ? 0 : 1]])], +- [krb5threadsafe="-DKRB5_IS_THREAD_SAFE"], [AC_MSG_WARN([[libkrb5 is not threadsafe]])]) ++ [krb5threadsafe="-DKRB5_IS_THREAD_SAFE"], [AC_MSG_WARN([[libkrb5 is not threadsafe]])], ++ [AC_MSG_WARN(cross compiling: not checking)]) + fi + else + krb5threadsafe="" +-- +2.17.1 + diff --git a/package/freeradius-server/0004-fix-error-for-expansion-of-macro-in-thread.h.patch b/package/freeradius-server/0004-fix-error-for-expansion-of-macro-in-thread.h.patch new file mode 100644 index 00000000..00eb63c0 --- /dev/null +++ b/package/freeradius-server/0004-fix-error-for-expansion-of-macro-in-thread.h.patch @@ -0,0 +1,66 @@ +From dae3b7c53171dfeacce91e0da1c8bd4e4166352e Mon Sep 17 00:00:00 2001 +From: Yi Zhao +Date: Wed, 18 Jan 2017 14:59:39 +0800 +Subject: [PATCH] fix error for expansion of macro in thread.h + +The parameter declaration is missing in expansion of macro +which cause the build error: +| In file included from src/freeradius-devel/libradius.h:80:0, +| from src/lib/log.c:26: +| src/lib/log.c: In function '__fr_thread_local_destroy_fr_strerror_buffer': +| src/lib/log.c:37:31: error: 'fr_strerror_buffer' undeclared (first use in this function) +| fr_thread_local_setup(char *, fr_strerror_buffer) /* macro */ +| ^ + +Add the missing declaration in macro. + +Upstream-Status: Pending + +Signed-off-by: Yi Zhao + +Fetch from: http://cgit.openembedded.org/meta-openembedded/tree/meta-networking/recipes-connectivity/freeradius/files +Signed-off-by: David Gouarin +Signed-off-by: Matt Weber +Upstream: N/A, code has changed +--- + src/include/threads.h | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/include/threads.h b/src/include/threads.h +index e36d81dac0..2bcb6aadcb 100644 +--- a/src/include/threads.h ++++ b/src/include/threads.h +@@ -89,7 +89,7 @@ static _t __fr_thread_local_init_##_n(pthread_destructor_t func)\ + # define fr_thread_local_get(_n) _n + #elif defined(HAVE_PTHREAD_H) + # include +-# define fr_thread_local_setup(_t, _n) \ ++# define fr_thread_local_setup(_t, _n) static __thread _t _n;\ + static pthread_key_t __fr_thread_local_key_##_n;\ + static pthread_once_t __fr_thread_local_once_##_n = PTHREAD_ONCE_INIT;\ + static pthread_destructor_t __fr_thread_local_destructor_##_n = NULL;\ +@@ -100,17 +100,17 @@ static void __fr_thread_local_destroy_##_n(UNUSED void *unused)\ + static void __fr_thread_local_key_init_##_n(void)\ + {\ + (void) pthread_key_create(&__fr_thread_local_key_##_n, __fr_thread_local_destroy_##_n);\ +- (void) pthread_setspecific(__fr_thread_local_key_##_n, &(_n));\ + }\ + static _t __fr_thread_local_init_##_n(pthread_destructor_t func)\ + {\ + __fr_thread_local_destructor_##_n = func;\ + if (_n) return _n; \ + (void) pthread_once(&__fr_thread_local_once_##_n, __fr_thread_local_key_init_##_n);\ ++ (void) pthread_setspecific(__fr_thread_local_key_##_n, &(_n));\ + return _n;\ + } +-# define fr_thread_local_init(_n, _f) __fr_thread_local_init_##_n(_f) +-# define fr_thread_local_set(_n, _v) __fr_thread_local_set_##_n(_v) +-# define fr_thread_local_get(_n) __fr_thread_local_get_##_n() ++# define fr_thread_local_init(_n, _f) __fr_thread_local_init_##_n(_f) ++# define fr_thread_local_set(_n, _v) ((int)!((_n = _v) || 1)) ++# define fr_thread_local_get(_n) _n + #endif + #endif +-- +2.17.1 + diff --git a/package/freeradius-server/0005-modules-rlm_sql-remove-mysql_version.h.patch b/package/freeradius-server/0005-modules-rlm_sql-remove-mysql_version.h.patch new file mode 100644 index 00000000..42e8c208 --- /dev/null +++ b/package/freeradius-server/0005-modules-rlm_sql-remove-mysql_version.h.patch @@ -0,0 +1,37 @@ +From 77b8c75f9904897768f87e20fef5d7739ddcd3c7 Mon Sep 17 00:00:00 2001 +From: Jared Bents +Date: Tue, 4 Feb 2020 08:22:11 -0600 +Subject: [PATCH] modules/rlm_sql: remove mysql_version.h + +remove mysql_version.h as mysql.h is included and mysql_version.h +should not be included by per the header file warning + +Upstream: http://lists.freeradius.org/pipermail/freeradius-devel/2021-April/014218.html + +Signed-off-by: Jared Bents +Signed-off-by: Matt Weber +[Applied upstream as https://github.com/FreeRADIUS/freeradius-server/commit/f20e80fce5f1b0589dccdf441b5d835188c0dfa2] +--- + src/modules/rlm_sql/drivers/rlm_sql_mysql/rlm_sql_mysql.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/src/modules/rlm_sql/drivers/rlm_sql_mysql/rlm_sql_mysql.c b/src/modules/rlm_sql/drivers/rlm_sql_mysql/rlm_sql_mysql.c +index a7992647cd..ea44d0cc7a 100644 +--- a/src/modules/rlm_sql/drivers/rlm_sql_mysql/rlm_sql_mysql.c ++++ b/src/modules/rlm_sql/drivers/rlm_sql_mysql/rlm_sql_mysql.c +@@ -34,12 +34,10 @@ RCSID("$Id$") + #include "config.h" + + #ifdef HAVE_MYSQL_MYSQL_H +-# include + # include + # include + # include + #elif defined(HAVE_MYSQL_H) +-# include + # include + # include + # include +-- +2.17.1 + diff --git a/package/freeradius-server/0006-configure.ac-add-option-for-pcap.patch b/package/freeradius-server/0006-configure.ac-add-option-for-pcap.patch new file mode 100644 index 00000000..266023dd --- /dev/null +++ b/package/freeradius-server/0006-configure.ac-add-option-for-pcap.patch @@ -0,0 +1,80 @@ +From 35494386a99a4e46be3a99849d2f48651e6ca268 Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Tue, 26 Jul 2022 18:01:48 +0200 +Subject: [PATCH] configure.ac: add option for pcap + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +Upstream: https://github.com/FreeRADIUS/freeradius-server/pull/4632 +--- + configure.ac | 46 +++++++++++++++++++++++++++++++--------------- + 1 file changed, 31 insertions(+), 15 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 45d8e619e2..f760a5b236 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1004,6 +1004,20 @@ AC_CHECK_LIB(ws2_32, htonl) + dnl # + dnl # Check the pcap library for the RADIUS sniffer. + dnl # ++dnl extra argument: --with-pcap=yes/no ++WITH_PCAP=yes ++AC_ARG_WITH(pcap, ++[ --with-pcap use pcap library for the RADIUS sniffer. (default=yes)], ++[ case "$withval" in ++ no) ++ WITH_PCAP=no ++ ;; ++ *) ++ WITH_PCAP=yes ++ ;; ++ esac ] ++) ++ + dnl extra argument: --with-pcap-lib-dir=DIR + pcap_lib_dir= + AC_ARG_WITH(pcap-lib-dir, +@@ -1036,23 +1050,25 @@ AC_ARG_WITH(pcap-include-dir, + ;; + esac]) + +-smart_try_dir="$pcap_lib_dir" +-FR_SMART_CHECK_LIB(pcap, pcap_open_live) +-if test "x$ac_cv_lib_pcap_pcap_open_live" != "xyes"; then +- AC_MSG_WARN([pcap library not found, silently disabling the RADIUS sniffer, and ARP listener. Use --with-pcap-lib-dir=.]) +-else +- AC_CHECK_FUNCS(\ +- pcap_fopen_offline \ +- pcap_dump_fopen \ +- pcap_create \ +- pcap_activate +- ) ++if test "x$WITH_PCAP" = xyes; then ++ smart_try_dir="$pcap_lib_dir" ++ FR_SMART_CHECK_LIB(pcap, pcap_open_live) ++ if test "x$ac_cv_lib_pcap_pcap_open_live" != "xyes"; then ++ AC_MSG_WARN([pcap library not found, silently disabling the RADIUS sniffer, and ARP listener. Use --with-pcap-lib-dir=.]) ++ else ++ AC_CHECK_FUNCS(\ ++ pcap_fopen_offline \ ++ pcap_dump_fopen \ ++ pcap_create \ ++ pcap_activate ++ ) + +- PCAP_LIBS="${smart_lib}" +- PCAP_LDFLAGS="${smart_ldflags}" ++ PCAP_LIBS="${smart_lib}" ++ PCAP_LDFLAGS="${smart_ldflags}" ++ fi ++ dnl Set by FR_SMART_CHECK_LIB ++ LIBS="${old_LIBS}" + fi +-dnl Set by FR_SMART_CHECK_LIB +-LIBS="${old_LIBS}" + + dnl Check for collectdclient + dnl extra argument: --with-collectdclient-lib-dir=DIR +-- +2.35.3 + diff --git a/package/freeradius-server/0007-configure.ac-add-option-for-collectdclient.patch b/package/freeradius-server/0007-configure.ac-add-option-for-collectdclient.patch new file mode 100644 index 00000000..67a19321 --- /dev/null +++ b/package/freeradius-server/0007-configure.ac-add-option-for-collectdclient.patch @@ -0,0 +1,67 @@ +From b8c75df6e252a1c0648448d6d561826ee9c464dd Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Tue, 26 Jul 2022 18:02:21 +0200 +Subject: [PATCH] configure.ac: add option for collectdclient + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +Upstream: https://github.com/FreeRADIUS/freeradius-server/pull/4632 +--- + configure.ac | 34 +++++++++++++++++++++++++--------- + 1 file changed, 25 insertions(+), 9 deletions(-) + +diff --git a/configure.ac b/configure.ac +index f760a5b236..f431da6db5 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1070,6 +1070,20 @@ if test "x$WITH_PCAP" = xyes; then + LIBS="${old_LIBS}" + fi + ++dnl extra argument: --with-collectdclient=yes/no ++WITH_COLLECTDCLIENT=yes ++AC_ARG_WITH(collectdclient, ++[ --with-collectdclient use collectd client. (default=yes)], ++[ case "$withval" in ++ no) ++ WITH_COLLECTDCLIENT=no ++ ;; ++ *) ++ WITH_COLLECTDCLIENT=yes ++ ;; ++ esac ] ++) ++ + dnl Check for collectdclient + dnl extra argument: --with-collectdclient-lib-dir=DIR + collectdclient_lib_dir= +@@ -1103,16 +1117,18 @@ AC_ARG_WITH(collectdclient-include-dir, + ;; + esac]) + +-smart_try_dir="$collectdclient_lib_dir" +-FR_SMART_CHECK_LIB(collectdclient, lcc_connect) +-if test "x$ac_cv_lib_collectdclient_lcc_connect" != "xyes"; then +- AC_MSG_WARN([collectdclient library not found. Use --with-collectdclient-lib-dir=.]) +-else +- COLLECTDC_LIBS="${smart_lib}" +- COLLECTDC_LDFLAGS="${smart_ldflags}" ++if test "x$WITH_COLLECTDCLIENT" = xyes; then ++ smart_try_dir="$collectdclient_lib_dir" ++ FR_SMART_CHECK_LIB(collectdclient, lcc_connect) ++ if test "x$ac_cv_lib_collectdclient_lcc_connect" != "xyes"; then ++ AC_MSG_WARN([collectdclient library not found. Use --with-collectdclient-lib-dir=.]) ++ else ++ COLLECTDC_LIBS="${smart_lib}" ++ COLLECTDC_LDFLAGS="${smart_ldflags}" ++ fi ++ dnl Set by FR_SMART_CHECKLIB ++ LIBS="${old_LIBS}" + fi +-dnl Set by FR_SMART_CHECKLIB +-LIBS="${old_LIBS}" + + dnl # + dnl # extra argument: --with-libcap +-- +2.35.3 + diff --git a/package/freeradius-server/0008-configure.ac-try-execinfo-in-libc-before-searching-l.patch b/package/freeradius-server/0008-configure.ac-try-execinfo-in-libc-before-searching-l.patch new file mode 100644 index 00000000..6633bd27 --- /dev/null +++ b/package/freeradius-server/0008-configure.ac-try-execinfo-in-libc-before-searching-l.patch @@ -0,0 +1,63 @@ +From ba41a28cd526bccde4ec3db0998e1b00d3afc0e2 Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Tue, 26 Jul 2022 18:31:14 +0200 +Subject: [PATCH] configure.ac: try execinfo in libc before searching + libexecinfo + +execinfo is provided by glibc, so the usual case is that it is part of +libc. Do this before starting a redundant search for libexecinfo. + +This is especially relevant for cross-compilation, where +FR_SMART_CHECK_LIB can find an incompatible library. + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +Upstream: https://github.com/FreeRADIUS/freeradius-server/pull/4632 +[Fabrice: update for 3.2.3] +Signed-off-by: Fabrice Fontaine +--- + configure.ac | 38 +++++++++++++++++++------------------- + 1 file changed, 19 insertions(+), 19 deletions(-) + +diff --git a/configure.ac b/configure.ac +index f431da6db5..faa7cfc2b4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2165,21 +2165,21 @@ dnl # + smart_try_dir=$execinfo_include_dir + FR_SMART_CHECK_INCLUDE(execinfo.h) + if test "x$ac_cv_header_execinfo_h" = "xyes"; then +- smart_try_dir=$execinfo_lib_dir +- FR_SMART_CHECK_LIB(execinfo, backtrace_symbols) ++ dnl # Might be provided as part of libc ++ AC_MSG_CHECKING([if execinfo provided as part of libc]) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ++ #include ++ ]], [[ ++ void *sym[1]; ++ backtrace_symbols(&sym, sizeof(sym)) ]])],[ ++ AC_MSG_RESULT(yes) ++ ac_cv_lib_execinfo_backtrace_symbols="yes" ++ ],[ ++ AC_MSG_RESULT(no) ++ ]) + if test "x$ac_cv_lib_execinfo_backtrace_symbols" != "xyes"; then +- dnl # Might be provided as part of libc +- AC_MSG_CHECKING([if execinfo provided as part of libc]) +- AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +- #include +- ]], [[ +- void *sym[1]; +- backtrace_symbols(&sym, sizeof(sym)) ]])],[ +- AC_MSG_RESULT(yes) +- ac_cv_lib_execinfo_backtrace_symbols="yes" +- ],[ +- AC_MSG_RESULT(no) +- ]) ++ smart_try_dir=$execinfo_lib_dir ++ FR_SMART_CHECK_LIB(execinfo, backtrace_symbols) + fi + + if test "x$ac_cv_lib_execinfo_backtrace_symbols" = "xyes"; then +-- +2.35.3 + diff --git a/package/freeradius-server/0009-src-modules-rlm_python-fix-build-with-Ofast.patch b/package/freeradius-server/0009-src-modules-rlm_python-fix-build-with-Ofast.patch new file mode 100644 index 00000000..2c1f07cb --- /dev/null +++ b/package/freeradius-server/0009-src-modules-rlm_python-fix-build-with-Ofast.patch @@ -0,0 +1,51 @@ +From 963edf3f87d34e274885d9cc448651d8a1601a6f Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 11 Jan 2024 17:38:41 +0100 +Subject: [PATCH] src/modules/rlm_python: fix build with -Ofast + +Stripping logic wrongly translates -Ofast into ast resulting in the +following build failure: + +configure: /home/fabrice/buildroot/output/host/powerpc64-buildroot-linux-gnu/sysroot/usr/bin/python3-config's cflags were "-I/home/fabrice/buildroot/output/host/powerpc64-buildroot-linux-gnu/sysroot/usr/include/python3.11 -I/home/fabrice/buildroot/output/host/powerpc64-buildroot-linux-gnu/sysroot/usr/include/python3.11 -Wsign-compare -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Ofast -g0 -D_FORTIFY_SOURCE=2 -DNDEBUG -g -fwrapv -O3 -Wall" +configure: Sanitized cflags were " -isystem/home/fabrice/buildroot/output/host/powerpc64-buildroot-linux-gnu/sysroot/usr/include/python3.11 -isystem/home/fabrice/buildroot/output/host/powerpc64-buildroot-linux-gnu/sysroot/usr/include/python3.11 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 ast -D_FORTIFY_SOURCE=2 -fwrapv " + +[...] + +powerpc64-buildroot-linux-gnu-gcc.br_real: error: ast: linker input file not found: No such file or directory + +Fixes: + - http://autobuild.buildroot.org/results/904c43241b99a8d848c1891cb5af132a291311b4 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/FreeRADIUS/freeradius-server/pull/5263 +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + src/modules/rlm_python3/configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/modules/rlm_python3/configure.ac b/src/modules/rlm_python3/configure.ac +index e2f74574fb..ee30b324d9 100644 +--- a/src/modules/rlm_python3/configure.ac ++++ b/src/modules/rlm_python3/configure.ac +@@ -44,7 +44,7 @@ else + + dnl # Convert -I to -isystem to get rid of warnings about issues in Python headers + dnl # Strip -systemroot +- dnl # Strip optimisation flags (-O[0-9]?). We decide our optimisation level, not python. ++ dnl # Strip optimisation flags (-O[0-9|fast]?). We decide our optimisation level, not python. + dnl # -D_FORTIFY_SOURCE needs -O. + dnl # Strip debug symbol flags (-g[0-9]?). We decide on debugging symbols, not python + dnl # Strip -W*, we decide what warnings are important +@@ -56,7 +56,7 @@ else + mod_cflags=`echo " $python3_cflags" | sed -e '\ + s/ -I/ -isystem/g;\ + s/ -isysroot[[ =]]\{0,1\}[[^-]]*/ /g;\ +- s/ -O[[^[[:blank:]]]]*/ /g;\ ++ s/ -O[[^[[:blank:]]*]]*/ /g;\ + s/ -Wp,-D_FORTIFY_SOURCE=[[[:digit:]]]/ /g;\ + s/ -g[[^ ]]*/ /g;\ + s/ -W[[^ ]]*/ /g;\ +-- +2.43.0 + diff --git a/package/freeradius-server/Config.in b/package/freeradius-server/Config.in new file mode 100644 index 00000000..e99778ea --- /dev/null +++ b/package/freeradius-server/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_FREERADIUS_SERVER + bool "freeradius-server" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # libtalloc + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4 if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBTALLOC + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + FreeRADIUS is an open source server which implements + a protocol for remote user Authorization, Authentication + and Accounting. + + http://wiki.freeradius.org/ + +comment "freeradius-server needs a glibc toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_USES_GLIBC diff --git a/package/freeradius-server/freeradius-server.hash b/package/freeradius-server/freeradius-server.hash new file mode 100644 index 00000000..6ee8f778 --- /dev/null +++ b/package/freeradius-server/freeradius-server.hash @@ -0,0 +1,4 @@ +# Locally computed, after checking +# https://freeradius.org/ftp/pub/freeradius/freeradius-server-3.2.3.tar.bz2.sig +sha256 4a16aeffbfa1424e1f317fdf71d17e5523a4fd9564d87c747a60595ef93c5d1f freeradius-server-3.2.3.tar.bz2 +sha256 0a0e46014fc2efd5144a30359c0e6e1ea9fa3dd407d3318204150efd7b4caf6a COPYRIGHT diff --git a/package/freeradius-server/freeradius-server.mk b/package/freeradius-server/freeradius-server.mk new file mode 100644 index 00000000..1ec77a1c --- /dev/null +++ b/package/freeradius-server/freeradius-server.mk @@ -0,0 +1,244 @@ +################################################################################ +# +# freeradius-server +# +################################################################################ + +FREERADIUS_SERVER_VERSION = 3.2.3 +FREERADIUS_SERVER_SOURCE = \ + freeradius-server-$(FREERADIUS_SERVER_VERSION).tar.bz2 +FREERADIUS_SERVER_SITE = https://freeradius.org/ftp/pub/freeradius +FREERADIUS_SERVER_LICENSE = GPL-2.0 +FREERADIUS_SERVER_LICENSE_FILES = COPYRIGHT +FREERADIUS_SERVER_CPE_ID_VENDOR = freeradius +FREERADIUS_SERVER_CPE_ID_PRODUCT = freeradius +FREERADIUS_SERVER_DEPENDENCIES = libtalloc +FREERADIUS_SERVER_AUTORECONF = YES + +# We're patching src/modules/rlm_krb5/configure.ac +define FREERADIUS_SERVER_RUN_KRB5_AUTORECONF + cd $(@D)/src/modules/rlm_krb5; $(AUTORECONF) -I$(@D)/m4 +endef +FREERADIUS_SERVER_PRE_CONFIGURE_HOOKS += FREERADIUS_SERVER_RUN_KRB5_AUTORECONF + +# We're patching src/modules/rlm_python3/configure.ac +define FREERADIUS_SERVER_RUN_PYTHON3_AUTORECONF + cd $(@D)/src/modules/rlm_python3; $(AUTORECONF) -I$(@D)/m4 +endef +FREERADIUS_SERVER_PRE_CONFIGURE_HOOKS += FREERADIUS_SERVER_RUN_PYTHON3_AUTORECONF + +# some compiler checks are not supported while cross compiling. +# instead of removing those checks, we cache the answers +FREERADIUS_SERVER_CONF_OPTS += \ + ax_cv_cc_bounded_attribute=no \ + ax_cv_cc_builtin_bswap64=no \ + ax_cv_cc_builtin_choose_expr=no \ + ax_cv_cc_builtin_types_compatible_p=no + +# Some paths are looked up in $PATH but used on the target. +# Set them explicitly so they are still valid if it's in some other +# place on the host. Note that some of those don't necessarily exist +# on the target - in that case, the script will simply fail to work. +# Note that some paths are actually used during the build, those +# shouldn't be set explicitly here! +FREERADIUS_SERVER_CONF_OPTS += \ + ac_cv_path_RUSERS=/usr/bin/rusers \ + ac_cv_path_SNMPGET=/usr/bin/snmpget \ + ac_cv_path_SNMPWALK=/usr/bin/snmpwalk + +# Modules for which we don't have the dependencies must be disabled +# explicitly, to avoid that they're searched on the host. +FREERADIUS_SERVER_CONF_OPTS += \ + --without-rlm_eap_ike \ + --without-rlm_eap_tnc \ + --without-rlm_perl \ + --without-rlm_python \ + --without-rlm_sql_iodbc \ + --without-rlm_sql_oracle \ + --without-rlm_sql_freetds \ + --without-rlm_yubikey + +ifeq ($(BR2_PACKAGE_COLLECTD),y) +FREERADIUS_SERVER_CONF_OPTS += --with-collectdclient +FREERADIUS_SERVER_DEPENDENCIES += collectd +else +FREERADIUS_SERVER_CONF_OPTS += --without-collectdclient +endif + +ifeq ($(BR2_PACKAGE_GDBM),y) +FREERADIUS_SERVER_CONF_OPTS += \ + --with-rlm_counter \ + --with-rlm_ippool +FREERADIUS_SERVER_DEPENDENCIES += gdbm +else +FREERADIUS_SERVER_CONF_OPTS += \ + --without-rlm_counter \ + --without-rlm_ippool +endif + +ifeq ($(BR2_PACKAGE_HIREDIS),y) +FREERADIUS_SERVER_CONF_OPTS += \ + --with-rlm_cache_redis \ + --with-rlm_redis \ + --with-rlm_rediswho +FREERADIUS_SERVER_DEPENDENCIES += hiredis +else +FREERADIUS_SERVER_CONF_OPTS += \ + --without-rlm_cache_redis \ + --without-rlm_redis \ + --without-rlm_rediswho +endif + +ifeq ($(BR2_PACKAGE_JSON_C)$(BR2_PACKAGE_LIBCURL),yy) +FREERADIUS_SERVER_CONF_OPTS += --with-rlm_rest +FREERADIUS_SERVER_DEPENDENCIES += json-c libcurl +else +FREERADIUS_SERVER_CONF_OPTS += --without-rlm_rest +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +FREERADIUS_SERVER_CONF_OPTS += --with-libcap +FREERADIUS_SERVER_DEPENDENCIES += libcap +else +FREERADIUS_SERVER_CONF_OPTS += --without-libcap +endif + +ifeq ($(BR2_PACKAGE_LIBKRB5),y) +FREERADIUS_SERVER_CONF_OPTS += \ + ac_cv_path_krb5_config=$(STAGING_DIR)/usr/bin/krb5-config \ + --with-rlm_krb5 +FREERADIUS_SERVER_DEPENDENCIES += libkrb5 +else +FREERADIUS_SERVER_CONF_OPTS += --without-rlm_krb5 +endif + +ifeq ($(BR2_PACKAGE_LIBPCAP),y) +FREERADIUS_SERVER_CONF_OPTS += --with-pcap +FREERADIUS_SERVER_DEPENDENCIES += libpcap +else +FREERADIUS_SERVER_CONF_OPTS += --without-pcap +endif + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +FREERADIUS_SERVER_DEPENDENCIES += libxcrypt +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +FREERADIUS_SERVER_CONF_OPTS += --with-rlm_pam +FREERADIUS_SERVER_DEPENDENCIES += linux-pam +else +FREERADIUS_SERVER_CONF_OPTS += --without-rlm_pam +endif + +ifeq ($(BR2_PACKAGE_OPENLDAP),y) +FREERADIUS_SERVER_CONF_OPTS += --with-rlm_ldap +FREERADIUS_SERVER_DEPENDENCIES += openldap +else +FREERADIUS_SERVER_CONF_OPTS += --without-rlm_ldap +endif + +ifeq ($(BR2_PACKAGE_MEMCACHED),y) +FREERADIUS_SERVER_CONF_OPTS += --with-rlm_cache_memcached +FREERADIUS_SERVER_DEPENDENCIES += memcached +else +FREERADIUS_SERVER_CONF_OPTS += --without-rlm_cache_memcached +endif + +ifeq ($(BR2_PACKAGE_MARIADB),y) +FREERADIUS_SERVER_CONF_OPTS += --with-rlm_sql_mysql +FREERADIUS_SERVER_DEPENDENCIES += mariadb +else +FREERADIUS_SERVER_CONF_OPTS += --without-rlm_sql_mysql +endif + +ifeq ($(BR2_PACKAGE_PCRE),y) +FREERADIUS_SERVER_CONF_OPTS += --with-pcre +FREERADIUS_SERVER_DEPENDENCIES += pcre +else +FREERADIUS_SERVER_CONF_OPTS += --without-pcre +endif + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +FREERADIUS_SERVER_CONF_OPTS += \ + --with-rlm_python3 \ + --with-rlm-python3-config-bin=$(STAGING_DIR)/usr/bin/python3-config +FREERADIUS_SERVER_DEPENDENCIES += python3 +else +FREERADIUS_SERVER_CONF_OPTS += --without-rlm_python3 +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +FREERADIUS_SERVER_CONF_OPTS += --with-readline +FREERADIUS_SERVER_DEPENDENCIES += readline +else +FREERADIUS_SERVER_CONF_OPTS += --without-readline +endif + +ifeq ($(BR2_PACKAGE_SQLITE),y) +FREERADIUS_SERVER_CONF_OPTS += --with-rlm_sql_sqlite +FREERADIUS_SERVER_DEPENDENCIES += sqlite +else +FREERADIUS_SERVER_CONF_OPTS += --without-rlm_sql_sqlite +endif + +ifeq ($(BR2_PACKAGE_UNIXODBC),y) +FREERADIUS_SERVER_CONF_OPTS += --with-rlm_sql_unixodbc +FREERADIUS_SERVER_DEPENDENCIES += unixodbc +else +FREERADIUS_SERVER_CONF_OPTS += --without-rlm_sql_unixodbc +endif + +ifeq ($(BR2_PACKAGE_POSTGRESQL),y) +FREERADIUS_SERVER_CONF_OPTS += --with-rlm_sql_postgresql +FREERADIUS_SERVER_DEPENDENCIES += postgresql +else +FREERADIUS_SERVER_CONF_OPTS += --without-rlm_sql_postgresql +endif + +ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) +FREERADIUS_SERVER_DEPENDENCIES += openssl +FREERADIUS_SERVER_CONF_OPTS += \ + --with-openssl \ + --with-rlm_eap \ + --with-rlm_eap_pwd +else +FREERADIUS_SERVER_CONF_OPTS += \ + --without-openssl \ + --without-rlm_eap \ + --without-rlm_eap_pwd +endif + +ifeq ($(BR2_PACKAGE_PCRE),y) +FREERADIUS_SERVER_CONF_OPTS += --with-pcre +FREERADIUS_SERVER_DEPENDENCIES += pcre +else +FREERADIUS_SERVER_CONF_OPTS += --without-pcre +endif + +ifeq ($(BR2_PACKAGE_RUBY),y) +FREERADIUS_SERVER_CONF_OPTS += --with-rlm_ruby +FREERADIUS_SERVER_DEPENDENCIES += ruby +else +FREERADIUS_SERVER_CONF_OPTS += --without-rlm_ruby +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +FREERADIUS_SERVER_CONF_OPTS += --with-systemd +FREERADIUS_SERVER_DEPENDENCIES += systemd +else +FREERADIUS_SERVER_CONF_OPTS += --without-systemd +endif + +# TARGET_DIR is set to empty to avoid creation of symlinks in hardcoded host directories +# freeradius Makefile does not support an alternate DESTDIR, instead it uses the magic $(R) variable +FREERADIUS_SERVER_MAKE_ENV = R=$(TARGET_DIR) TARGET_DIR="" + +# use MAKE1 because make install does not support parallel build +FREERADIUS_SERVER_MAKE = $(MAKE1) + +define FREERADIUS_SERVER_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/freeradius-server/radiusd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/radiusd.service +endef + +$(eval $(autotools-package)) diff --git a/package/freeradius-server/radiusd.service b/package/freeradius-server/radiusd.service new file mode 100644 index 00000000..1f29db09 --- /dev/null +++ b/package/freeradius-server/radiusd.service @@ -0,0 +1,38 @@ +# Reference from: freeradius-server/redhat/radiusd.service + +[Unit] +Description=FreeRADIUS multi-protocol policy server +After=network-online.target +Documentation=man:radiusd(8) man:radiusd.conf(5) http://wiki.freeradius.org/ http://networkradius.com/doc/ + +[Service] +Type=notify +WatchdogSec=60 +NotifyAccess=all +EnvironmentFile=-/etc/default/radiusd + +# FreeRADIUS can do static evaluation of policy language rules based +# on environmental variables which is very useful for doing per-host +# customization. +# Unfortunately systemd does not allow variable substitutions such +# as %H or $(hostname) in the EnvironmentFile. +# We provide HOSTNAME here for convenience. +Environment=HOSTNAME=%H + +# Limit memory to 2G this is fine for %99.99 of deployments. FreeRADIUS +# is not memory hungry, if it's using more than this, then there's probably +# a leak somewhere. +MemoryLimit=2G + +ExecStartPre=/usr/sbin/radiusd $FREERADIUS_OPTIONS -Cx -lstdout +ExecStart=/usr/sbin/radiusd -f $FREERADIUS_OPTIONS +Restart=on-failure +RestartSec=5 +ExecReload=/usr/sbin/radiusd $FREERADIUS_OPTIONS -Cxm -lstdout +ExecReload=/bin/kill -HUP $MAINPID + +# Only allow native system calls +SystemCallArchitectures=native + +[Install] +WantedBy=multi-user.target diff --git a/package/freerdp/0001-Fix-variable-declaration-in-loop.patch b/package/freerdp/0001-Fix-variable-declaration-in-loop.patch new file mode 100644 index 00000000..ec179536 --- /dev/null +++ b/package/freerdp/0001-Fix-variable-declaration-in-loop.patch @@ -0,0 +1,37 @@ +From 48f25939f4a48b01072f3cd2ece1e36a41c0ad44 Mon Sep 17 00:00:00 2001 +From: Armin Novak +Date: Wed, 16 Sep 2020 09:30:37 +0200 +Subject: [PATCH] Fix variable declaration in loop + +Upstream: https://github.com/FreeRDP/FreeRDP/commit/ddde652460350b962d32036981ff8ed77ed2f1ed +Signed-off-by: Fabrice Fontaine +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + client/X11/xf_graphics.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/client/X11/xf_graphics.c b/client/X11/xf_graphics.c +index 5aa1fd48b5a3..c8f24362aec7 100644 +--- a/client/X11/xf_graphics.c ++++ b/client/X11/xf_graphics.c +@@ -447,6 +447,7 @@ static void xf_Pointer_Free(rdpContext* context, rdpPointer* pointer) + WLog_DBG(TAG, "%s: %p", __func__, pointer); + + #ifdef WITH_XCURSOR ++ UINT32 i; + xfContext* xfc = (xfContext*)context; + xfPointer* xpointer = (xfPointer*)pointer; + +@@ -456,7 +457,7 @@ static void xf_Pointer_Free(rdpContext* context, rdpPointer* pointer) + free(xpointer->cursorWidths); + free(xpointer->cursorHeights); + +- for (int i = 0; i < xpointer->nCursors; i++) ++ for (i = 0; i < xpointer->nCursors; i++) + { + XFreeCursor(xfc->display, xpointer->cursors[i]); + } +-- +2.43.0 + diff --git a/package/freerdp/0002-Fixed-variable-declaration-in-loop.patch b/package/freerdp/0002-Fixed-variable-declaration-in-loop.patch new file mode 100644 index 00000000..838844d6 --- /dev/null +++ b/package/freerdp/0002-Fixed-variable-declaration-in-loop.patch @@ -0,0 +1,38 @@ +From b0b856590b523869358875594841f3e6c2919569 Mon Sep 17 00:00:00 2001 +From: akallabeth +Date: Tue, 22 Sep 2020 07:43:56 +0200 +Subject: [PATCH] Fixed variable declaration in loop + +Upstream: https://github.com/FreeRDP/FreeRDP/commit/4f8a48d96e472e43a5f856c449f61669792ce9fa +Signed-off-by: Fabrice Fontaine +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + client/X11/xf_graphics.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/client/X11/xf_graphics.c b/client/X11/xf_graphics.c +index c8f24362aec7..c8b604cc6ad4 100644 +--- a/client/X11/xf_graphics.c ++++ b/client/X11/xf_graphics.c +@@ -246,7 +246,7 @@ static BOOL xf_Pointer_GetCursorForCurrentScale(rdpContext* context, const rdpPo + double xscale; + double yscale; + size_t size; +- int cursorIndex = -1; ++ int cursorIndex = -1, i; + + if (!context || !pointer || !context->gdi) + return FALSE; +@@ -264,7 +264,7 @@ static BOOL xf_Pointer_GetCursorForCurrentScale(rdpContext* context, const rdpPo + WLog_DBG(TAG, "%s: scaled: %" PRIu32 "x%" PRIu32 ", desktop: %" PRIu32 "x%" PRIu32, __func__, + xfc->scaledWidth, xfc->savedHeight, settings->DesktopWidth, settings->DesktopHeight); + +- for (int i = 0; i < xpointer->nCursors; i++) ++ for (i = 0; i < xpointer->nCursors; i++) + { + if (xpointer->cursorWidths[i] == xTargetSize && xpointer->cursorHeights[i] == yTargetSize) + { +-- +2.43.0 + diff --git a/package/freerdp/0003-winpr-include-winpr-file.h-fix-build-on-uclibc.patch b/package/freerdp/0003-winpr-include-winpr-file.h-fix-build-on-uclibc.patch new file mode 100644 index 00000000..63434e58 --- /dev/null +++ b/package/freerdp/0003-winpr-include-winpr-file.h-fix-build-on-uclibc.patch @@ -0,0 +1,39 @@ +From 21036304f909eae9f7506f48703ba1c74724342b Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 31 Jul 2021 09:49:27 +0200 +Subject: [PATCH] winpr/include/winpr/file.h: fix build on uclibc + +Include stdio.h to fix the following build failure with uclibc raised +since version 2.4.0 and +https://github.com/FreeRDP/FreeRDP/commit/eb6777ea69b022c9e43a1576a2192a1cb807b1e6: + +In file included from /tmp/instance-0/output-1/build/freerdp-2.4.0/winpr/libwinpr/utils/lodepng/lodepng.c:30: +/tmp/instance-0/output-1/build/freerdp-2.4.0/winpr/include/winpr/file.h:524:11: error: unknown type name 'FILE' + WINPR_API FILE* winpr_fopen(const char* path, const char* mode); + ^~~~ + +Fixes: + - http://autobuild.buildroot.org/results/31e770a330158035e24b7b952bec0030138482b7 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/FreeRDP/FreeRDP/commit/0976cce458f2281cef6e8c417daf4bbd22bcc087 +--- + winpr/include/winpr/file.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/winpr/include/winpr/file.h b/winpr/include/winpr/file.h +index 48a29f9f5..79c9b392c 100644 +--- a/winpr/include/winpr/file.h ++++ b/winpr/include/winpr/file.h +@@ -30,6 +30,8 @@ + + #ifndef _WIN32 + ++#include ++ + #ifndef MAX_PATH + #define MAX_PATH 260 + #endif +-- +2.30.2 + diff --git a/package/freerdp/Config.in b/package/freerdp/Config.in new file mode 100644 index 00000000..14c5f986 --- /dev/null +++ b/package/freerdp/Config.in @@ -0,0 +1,74 @@ +config BR2_PACKAGE_FREERDP + bool "freerdp" + # FreeRDP does not have a single C++ source file, however it + # insists on having a C++ compiler. Removing that requirement + # is a bit too much involving, so we just depend on it... + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on !BR2_STATIC_LIBS # uses dlfcn.h + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # libglib2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_LIBGLIB2 + help + FreeRDP is a free implementation of the Remote Desktop + Protocol (RDP), released under the Apache license + + This only installs the freerdp libraries. + + http://www.freerdp.com/ + + Note: this also installs a key and certificate in + /etc/freerdp/keys/ . These are publicly-known, as they + are present in FreeRDP's source tree. It is strongly + suggested that you overwrite them with your own set, + either in an overlay rootfs or in a post-build script. + +if BR2_PACKAGE_FREERDP + +config BR2_PACKAGE_FREERDP_GSTREAMER1 + bool "gstreamer support" + depends on BR2_PACKAGE_GSTREAMER1 + depends on BR2_PACKAGE_XORG7 # xlib-libxrandr + # gstreamer-1.x dependencies already dependencies of FreeRDP + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP + select BR2_PACKAGE_XLIB_LIBXRANDR + +comment "gstreamer support needs X.Org" + depends on !BR2_PACKAGE_XORG7 + depends on BR2_PACKAGE_GSTREAMER1 + +config BR2_PACKAGE_FREERDP_SERVER + bool "server" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXDAMAGE + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXFIXES + +config BR2_PACKAGE_FREERDP_CLIENT_X11 + bool "X11 client" + default y + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + +comment "server and X11 client need X.Org" + depends on !BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_FREERDP_CLIENT_WL + bool "wayland client" + default y + depends on BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_LIBXKBCOMMON + +endif + +comment "freerdp needs a toolchain w/ wchar, dynamic library, threads, C++" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP diff --git a/package/freerdp/freerdp.hash b/package/freerdp/freerdp.hash new file mode 100644 index 00000000..1007215c --- /dev/null +++ b/package/freerdp/freerdp.hash @@ -0,0 +1,5 @@ +# From https://pub.freerdp.com/releases/freerdp-2.11.7.tar.gz.sha256 +sha256 5a2d54e1ca0f1facd1632bcc94c73b9f071a80c5fdbbb3f26e79f02aaa586ca3 freerdp-2.11.7.tar.gz + +# Locally calculated +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/freerdp/freerdp.mk b/package/freerdp/freerdp.mk new file mode 100644 index 00000000..e8c8f320 --- /dev/null +++ b/package/freerdp/freerdp.mk @@ -0,0 +1,272 @@ +################################################################################ +# +# freerdp +# +################################################################################ + +FREERDP_VERSION = 2.11.7 +FREERDP_SITE = https://pub.freerdp.com/releases +FREERDP_DEPENDENCIES = libglib2 openssl zlib +FREERDP_LICENSE = Apache-2.0 +FREERDP_LICENSE_FILES = LICENSE +FREERDP_CPE_ID_VENDOR = freerdp + +FREERDP_INSTALL_STAGING = YES + +FREERDP_CONF_OPTS = -DWITH_MANPAGES=OFF -Wno-dev -DWITH_GSTREAMER_0_10=OFF + +ifeq ($(BR2_PACKAGE_FREERDP_GSTREAMER1),y) +FREERDP_CONF_OPTS += -DWITH_GSTREAMER_1_0=ON +FREERDP_DEPENDENCIES += gstreamer1 gst1-plugins-base +else +FREERDP_CONF_OPTS += -DWITH_GSTREAMER_1_0=OFF +endif + +ifeq ($(BR2_PACKAGE_CUPS),y) +FREERDP_CONF_OPTS += -DWITH_CUPS=ON +FREERDP_DEPENDENCIES += cups +else +FREERDP_CONF_OPTS += -DWITH_CUPS=OFF +endif + +ifeq ($(BR2_PACKAGE_FFMPEG),y) +FREERDP_CONF_OPTS += -DWITH_FFMPEG=ON +FREERDP_DEPENDENCIES += ffmpeg +else +FREERDP_CONF_OPTS += -DWITH_FFMPEG=OFF +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB_MIXER),y) +FREERDP_CONF_OPTS += -DWITH_ALSA=ON +FREERDP_DEPENDENCIES += alsa-lib +else +FREERDP_CONF_OPTS += -DWITH_ALSA=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBEXECINFO),y) +FREERDP_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-lexecinfo +FREERDP_DEPENDENCIES += libexecinfo +endif + +ifeq ($(BR2_PACKAGE_LIBUSB),y) +FREERDP_CONF_OPTS += -DCHANNEL_URBDRC=ON +FREERDP_DEPENDENCIES += libusb +else +FREERDP_CONF_OPTS += -DCHANNEL_URBDRC=OFF +endif + +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +FREERDP_CONF_OPTS += -DWITH_PULSE=ON +FREERDP_DEPENDENCIES += pulseaudio +else +FREERDP_CONF_OPTS += -DWITH_PULSE=OFF +endif + +# For the systemd journal +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +FREERDP_CONF_OPTS += -DWITH_LIBSYSTEMD=ON +FREERDP_DEPENDENCIES += systemd +else +FREERDP_CONF_OPTS += -DWITH_LIBSYSTEMD=OFF +endif + +ifeq ($(BR2_ARM_CPU_HAS_NEON),y) +FREERDP_CONF_OPTS += -DWITH_NEON=ON +else +FREERDP_CONF_OPTS += -DWITH_NEON=OFF +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE2),y) +FREERDP_CONF_OPTS += -DWITH_SSE2=ON +else +FREERDP_CONF_OPTS += -DWITH_SSE2=OFF +endif + +ifeq ($(BR2_arm)$(BR2_armeb),y) +FREERDP_CONF_OPTS += -DARM_FP_ABI=$(GCC_TARGET_FLOAT_ABI) +endif + +#--------------------------------------- +# Enabling server and/or client + +# Clients and server interface must always be enabled to build the +# corresponding libraries. +FREERDP_CONF_OPTS += -DWITH_SERVER_INTERFACE=ON +FREERDP_CONF_OPTS += -DWITH_CLIENT_INTERFACE=ON + +ifeq ($(BR2_PACKAGE_FREERDP_SERVER),y) +FREERDP_CONF_OPTS += -DWITH_SERVER=ON +endif + +ifneq ($(BR2_PACKAGE_FREERDP_CLIENT_X11)$(BR2_PACKAGE_FREERDP_CLIENT_WL),) +FREERDP_CONF_OPTS += -DWITH_CLIENT=ON +endif + +#--------------------------------------- +# Libraries for client and/or server + +# The FreeRDP buildsystem uses non-orthogonal options. For example it +# is not possible to build the server and the wayland client without +# also building the X client. That's because the dependencies of the +# server (the X libraries) are a superset of those of the X client. +# So, as soon as FreeRDP is configured for the server and the wayland +# client, it will believe it also has to build the X client, because +# the libraries it needs are enabled. +# +# Furthermore, the shadow server is always built, even if there's nothing +# it can serve (i.e. the X libs are disabled). +# +# So, we do not care whether we build too much; we remove, as +# post-install hooks, whatever we do not want. + +# If Xorg is enabled, and the server or the X client are, then libX11 +# and libXext are forcibly enabled at the Kconfig level. However, if +# Xorg is enabled but neither the server nor the X client are, then +# there's nothing that guarantees those two libs are enabled. So we +# really must check for them. +ifeq ($(BR2_PACKAGE_XLIB_LIBX11)$(BR2_PACKAGE_XLIB_LIBXEXT),yy) +FREERDP_DEPENDENCIES += xlib_libX11 xlib_libXext +FREERDP_CONF_OPTS += -DWITH_X11=ON +else +FREERDP_CONF_OPTS += -DWITH_X11=OFF +endif + +# The following libs are either optional or mandatory only for either +# the server or the client. A mandatory library for either one is +# selected from Kconfig, so we can make it conditional here +ifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y) +FREERDP_CONF_OPTS += -DWITH_XCURSOR=ON +FREERDP_DEPENDENCIES += xlib_libXcursor +else +FREERDP_CONF_OPTS += -DWITH_XCURSOR=OFF +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXDAMAGE),y) +FREERDP_CONF_OPTS += -DWITH_XDAMAGE=ON +FREERDP_DEPENDENCIES += xlib_libXdamage +else +FREERDP_CONF_OPTS += -DWITH_XDAMAGE=OFF +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y) +FREERDP_CONF_OPTS += -DWITH_XFIXES=ON +FREERDP_DEPENDENCIES += xlib_libXfixes +else +FREERDP_CONF_OPTS += -DWITH_XFIXES=OFF +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXI),y) +FREERDP_CONF_OPTS += -DWITH_XI=ON +FREERDP_DEPENDENCIES += xlib_libXi +else +FREERDP_CONF_OPTS += -DWITH_XI=OFF +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +FREERDP_CONF_OPTS += -DWITH_XINERAMA=ON +FREERDP_DEPENDENCIES += xlib_libXinerama +else +FREERDP_CONF_OPTS += -DWITH_XINERAMA=OFF +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXKBFILE),y) +FREERDP_CONF_OPTS += -DWITH_XKBFILE=ON +FREERDP_DEPENDENCIES += xlib_libxkbfile +else +FREERDP_CONF_OPTS += -DWITH_XKBFILE=OFF +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) +FREERDP_CONF_OPTS += -DWITH_XRANDR=ON +FREERDP_DEPENDENCIES += xlib_libXrandr +else +FREERDP_CONF_OPTS += -DWITH_XRANDR=OFF +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRENDER),y) +FREERDP_CONF_OPTS += -DWITH_XRENDER=ON +FREERDP_DEPENDENCIES += xlib_libXrender +else +FREERDP_CONF_OPTS += -DWITH_XRENDER=OFF +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXTST),y) +FREERDP_CONF_OPTS += -DWITH_XTEST=ON +FREERDP_DEPENDENCIES += xlib_libXtst +else +FREERDP_CONF_OPTS += -DWITH_XTEST=OFF +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXV),y) +FREERDP_CONF_OPTS += -DWITH_XV=ON +FREERDP_DEPENDENCIES += xlib_libXv +else +FREERDP_CONF_OPTS += -DWITH_XV=OFF +endif + +ifeq ($(BR2_PACKAGE_FREERDP_CLIENT_WL),y) +FREERDP_DEPENDENCIES += wayland libxkbcommon +FREERDP_CONF_OPTS += \ + -DWITH_WAYLAND=ON \ + -DWAYLAND_SCANNER=$(HOST_DIR)/bin/wayland-scanner +else +FREERDP_CONF_OPTS += -DWITH_WAYLAND=OFF +endif + +#--------------------------------------- +# Post-install hooks to cleanup and install missing stuff + +# Shadow server is always installed, no matter what, so we manually +# remove it if the user does not want the server. +ifeq ($(BR2_PACKAGE_FREERDP_SERVER),) +define FREERDP_RM_SHADOW_SERVER + rm -f $(TARGET_DIR)/usr/bin/freerdp-shadow +endef +FREERDP_POST_INSTALL_TARGET_HOOKS += FREERDP_RM_SHADOW_SERVER +endif # ! server + +# X client is always built as soon as a client is enabled and the +# necessary libs are enabled (e.g. because of the server), so manually +# remove it if the user does not want it. +ifeq ($(BR2_PACKAGE_FREERDP_CLIENT_X11),) +define FREERDP_RM_CLIENT_X11 + rm -f $(TARGET_DIR)/usr/bin/xfreerdp + rm -f $(TARGET_DIR)/usr/lib/libxfreerdp-client* +endef +FREERDP_POST_INSTALL_TARGET_HOOKS += FREERDP_RM_CLIENT_X11 +define FREERDP_RM_CLIENT_X11_LIB + rm -f $(STAGING_DIR)/usr/lib/libxfreerdp-client* +endef +FREERDP_POST_INSTALL_STAGING_HOOKS += FREERDP_RM_CLIENT_X11_LIB +endif # ! X client + +# Wayland client is always built as soon as wayland is enabled, so +# manually remove it if the user does not want it. +ifeq ($(BR2_PACKAGE_FREERDP_CLIENT_WL),) +define FREERDP_RM_CLIENT_WL + rm -f $(TARGET_DIR)/usr/bin/wlfreerdp +endef +FREERDP_POST_INSTALL_TARGET_HOOKS += FREERDP_RM_CLIENT_WL +endif + +# Remove static libraries in unusual dir +define FREERDP_CLEANUP + rm -rf $(TARGET_DIR)/usr/lib/freerdp +endef +FREERDP_POST_INSTALL_TARGET_HOOKS += FREERDP_CLEANUP + +# Install the server key and certificate, so that a client can connect. +# A user can override them with its own in a post-build script, if needed. +# We install them even if the server is not enabled, since another server +# can be built and linked with libfreerdp (e.g. weston with the RDP +# backend). Key and cert are installed world-readable, so non-root users +# can start a server. +define FREERDP_INSTALL_KEYS + $(INSTALL) -m 0644 -D $(@D)/server/Sample/server.key \ + $(TARGET_DIR)/etc/freerdp/keys/server.key + $(INSTALL) -m 0644 -D $(@D)/server/Sample/server.crt \ + $(TARGET_DIR)/etc/freerdp/keys/server.crt +endef +FREERDP_POST_INSTALL_TARGET_HOOKS += FREERDP_INSTALL_KEYS + +$(eval $(cmake-package)) diff --git a/package/freescale-imx/Config.in b/package/freescale-imx/Config.in new file mode 100644 index 00000000..6d196a05 --- /dev/null +++ b/package/freescale-imx/Config.in @@ -0,0 +1,199 @@ +menuconfig BR2_PACKAGE_FREESCALE_IMX + bool "Freescale i.MX libraries" + depends on BR2_arm || BR2_aarch64 + help + Those packages provide hardware acceleration for GPU or VPU, + hardware optimization or some hardware tools for Freescale + i.MX platforms. + +if BR2_PACKAGE_FREESCALE_IMX +choice + prompt "i.MX platform" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX25_3STACK + bool "imx25-3stack" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX27ADS + bool "imx27ads" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX37_3STACK + bool "imx37-3stack" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX50 + bool "imx50" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX51 + bool "imx51" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX53 + bool "imx53" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q + bool "imx6q/imx6dl" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6S + bool "imx6sl/imx6sx" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6UL + bool "imx6ul/imx6ull/imx6ulz" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX7 + bool "imx7d/imx7ulp" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8 + bool "imx8" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M + bool "imx8m" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM + bool "imx8mm" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN + bool "imx8mn" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP + bool "imx8mp" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8ULP + bool "imx8ulp" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X + bool "imx8x" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8DXL + bool "imx8dxl" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX91 + bool "imx91" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93 + bool "imx93" + +endchoice + +choice + prompt "i.MX 8ULP Silicon Revision" + default BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8ULPA2 + depends on BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8ULP + help + Some packages related to the selected i.MX platform need to + know the silicon revision of the platform they will run on. + + Note - mismatches may result in a failure to boot! + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8ULPA0 + bool "imx8ulpa0" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8ULPA1 + bool "imx8ulpa1" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8ULPA2 + bool "imx8ulpa2" + +endchoice + +choice + prompt "i.MX 93 Silicon Revision" + default BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93A1 + depends on BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93 + help + Some packages related to the selected i.MX platform need to + know the silicon revision of the platform they will run on. + + Note - mismatches may result in a failure to boot! + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93A0 + bool "imx93a0" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93A1 + bool "imx93a1" + +endchoice + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM + string + default "IMX25_3STACK" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX25_3STACK + default "IMX27ADS" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX27ADS + default "IMX37_3STACK" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX37_3STACK + default "IMX50" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX50 + default "IMX51" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX51 + default "IMX53" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX53 + default "IMX6Q" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q + default "IMX6S" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6S + default "IMX6UL" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6UL + default "IMX7" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX7 + default "IMX8" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8 + default "IMX8MQ" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M + default "IMX8MM" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM + default "IMX8MN" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN + default "IMX8MP" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP + default "IMX8ULP" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8ULP + default "IMX91" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX91 + default "IMX93" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93 + +config BR2_PACKAGE_FREESCALE_IMX_HAS_VPU + bool + default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX27ADS || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX51 || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX53 || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q + +config BR2_PACKAGE_FREESCALE_IMX_HAS_VPU_HANTRO + bool + default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP + +config BR2_PACKAGE_FREESCALE_IMX_HAS_VIV_GPU + bool + default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6S || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX7 || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8 || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8ULP || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8DXL + +config BR2_PACKAGE_FREESCALE_IMX_HAS_ELE + bool + default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8ULP || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX91 || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93 + +config BR2_PACKAGE_FREESCALE_IMX_HAS_UPOWER + bool + default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8ULP + +source "package/freescale-imx/imx-alsa-plugins/Config.in" +source "package/freescale-imx/imx-codec/Config.in" +source "package/freescale-imx/imx-kobs/Config.in" +source "package/freescale-imx/imx-lib/Config.in" +source "package/freescale-imx/imx-m4fwloader/Config.in" +source "package/freescale-imx/imx-parser/Config.in" +source "package/freescale-imx/imx-uuc/Config.in" +source "package/freescale-imx/imx-vpu/Config.in" +source "package/freescale-imx/imx-vpu-hantro/Config.in" +source "package/freescale-imx/imx-vpuwrap/Config.in" +source "package/freescale-imx/firmware-ele-imx/Config.in" +source "package/freescale-imx/firmware-imx/Config.in" +source "package/freescale-imx/firmware-upower/Config.in" +source "package/freescale-imx/imx-sc-firmware/Config.in" +source "package/freescale-imx/imx-seco/Config.in" +source "package/freescale-imx/imx-vpu-hantro-daemon/Config.in" +source "package/freescale-imx/imx-vpu-hantro-vc/Config.in" +if (BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX51 || BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX53) +source "package/freescale-imx/gpu-amd-bin-mx51/Config.in" +source "package/freescale-imx/libz160/Config.in" +endif +if BR2_PACKAGE_FREESCALE_IMX_HAS_VIV_GPU +source "package/freescale-imx/imx-gpu-g2d/Config.in" +source "package/freescale-imx/imx-gpu-viv/Config.in" +source "package/freescale-imx/kernel-module-imx-gpu-viv/Config.in" +endif + +endif diff --git a/package/freescale-imx/firmware-ele-imx/Config.in b/package/freescale-imx/firmware-ele-imx/Config.in new file mode 100644 index 00000000..e8369f01 --- /dev/null +++ b/package/freescale-imx/firmware-ele-imx/Config.in @@ -0,0 +1,26 @@ +comment "firmware-ele-imx needs an i.MX platform with EdgeLock Secure Enclave" + depends on !BR2_PACKAGE_FREESCALE_IMX_HAS_ELE + +config BR2_PACKAGE_FIRMWARE_ELE_IMX + bool "firmware-ele-imx" + depends on BR2_PACKAGE_FREESCALE_IMX_HAS_ELE + help + Firmware blobs for the EdgeLock Secure Enclave (ELE) + present on i.MX8ULP and i.MX9 SoCs. + + This library is provided by NXP as-is and doesn't have an + upstream. + +if BR2_PACKAGE_FIRMWARE_ELE_IMX + +config BR2_PACKAGE_FIRMWARE_ELE_IMX_AHAB_CONTAINER_IMAGE + string + default "mx8ulpa0-ahab-container.img" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8ULPA0 + default "mx8ulpa1-ahab-container.img" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8ULPA1 + default "mx8ulpa2-ahab-container.img" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8ULPA2 + default "mx93a0-ahab-container.img" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93A0 + default "mx93a1-ahab-container.img" if \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX91 || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93A1 + +endif # BR2_PACKAGE_FIRMWARE_ELE_IMX diff --git a/package/freescale-imx/firmware-ele-imx/firmware-ele-imx.hash b/package/freescale-imx/firmware-ele-imx/firmware-ele-imx.hash new file mode 100644 index 00000000..0923e546 --- /dev/null +++ b/package/freescale-imx/firmware-ele-imx/firmware-ele-imx.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 4a0440168d8dfb95989a17be8fafb149589e110e7d4518e5e8a33463dfb5e5ca firmware-ele-imx-0.1.0.bin +sha256 24d7cb3a7e51011466a149bd99acf89387b832be2d0890ce2e183dfbc9d7cb84 COPYING +sha256 3282d88fad766897f93b0827297a70c2707d9358db24cccd5777abf7c997da77 EULA diff --git a/package/freescale-imx/firmware-ele-imx/firmware-ele-imx.mk b/package/freescale-imx/firmware-ele-imx/firmware-ele-imx.mk new file mode 100644 index 00000000..d493fe4a --- /dev/null +++ b/package/freescale-imx/firmware-ele-imx/firmware-ele-imx.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# firmware-ele-imx +# +################################################################################ + +FIRMWARE_ELE_IMX_VERSION = 0.1.0 +FIRMWARE_ELE_IMX_SITE = $(FREESCALE_IMX_SITE) +FIRMWARE_ELE_IMX_SOURCE = firmware-ele-imx-$(FIRMWARE_ELE_IMX_VERSION).bin + +FIRMWARE_ELE_IMX_LICENSE = NXP Semiconductor Software License Agreement +FIRMWARE_ELE_IMX_LICENSE_FILES = COPYING EULA +FIRMWARE_ELE_IMX_REDISTRIBUTE = NO + +FIRMWARE_ELE_IMX_INSTALL_IMAGES = YES + +define FIRMWARE_ELE_IMX_EXTRACT_CMDS + $(call NXP_EXTRACT_HELPER,$(FIRMWARE_ELE_IMX_DL_DIR)/$(FIRMWARE_ELE_IMX_SOURCE)) +endef + +FIRMWARE_ELE_IMX_AHAB_CONTAINER_IMAGE = $(call qstrip,$(BR2_PACKAGE_FIRMWARE_ELE_IMX_AHAB_CONTAINER_IMAGE)) + +define FIRMWARE_ELE_IMX_INSTALL_IMAGES_CMDS + cp $(@D)/$(FIRMWARE_ELE_IMX_AHAB_CONTAINER_IMAGE) $(BINARIES_DIR)/ahab-container.img +endef + +$(eval $(generic-package)) diff --git a/package/freescale-imx/firmware-imx/Config.in b/package/freescale-imx/firmware-imx/Config.in new file mode 100644 index 00000000..4a998644 --- /dev/null +++ b/package/freescale-imx/firmware-imx/Config.in @@ -0,0 +1,120 @@ +config BR2_PACKAGE_FIRMWARE_IMX + bool "firmware-imx" + depends on BR2_arm || BR2_aarch64 # Only relevant for i.MX + help + Firmware blobs for the Freescale i.MX SoCs. + + It contains blobs for SDMA, VPU, HDMI, EDPC, and DDR + training. + + This library is provided by Freescale as-is and doesn't have + an upstream. + +if BR2_PACKAGE_FIRMWARE_IMX + +config BR2_PACKAGE_FIRMWARE_IMX_SDMA_FW_NAME + string + default "imx25" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX25_3STACK + default "imx51" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX51 + default "imx53" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX53 + default "imx6q" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q + default "imx6q" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6S + default "imx6q" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6UL + default "imx7d" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX7 + default "imx7d" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M + default "imx7d" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM + default "imx7d" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN + default "imx7d" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP + default "imx7d" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8ULP + +config BR2_PACKAGE_FIRMWARE_IMX_VPU_FW_NAME + string + default "imx27" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX27ADS + default "imx51" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX51 + default "imx53" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX53 + default "imx6" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q + default "imx8" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8 + default "imx8" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X + default "imx8" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8DXL + +config BR2_PACKAGE_FIRMWARE_IMX_NEEDS_HDMI_FW + bool + default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M + +config BR2_PACKAGE_FIRMWARE_IMX_NEEDS_EASRC_FW + bool + default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN + +config BR2_PACKAGE_FIRMWARE_IMX_NEEDS_EPDC_FW + bool + default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q + default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6S + +config BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW + bool + default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M + default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM + default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN + default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP + +config BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW_IMX9 + bool + default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX91 + default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93 + +if BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW + +choice + bool "DDR training binaries" + default BR2_PACKAGE_FIRMWARE_IMX_LPDDR4 + help + Choose the DDR training binaries to be used depending on the + kind of memory that is available on the target board (DDR4, + LPDDR4, etc...). + +config BR2_PACKAGE_FIRMWARE_IMX_LPDDR4 + bool "lpddr4" + help + Use LPDDR4 binaries (i.e.: lpddr4_pmu_train_*.bin) + +config BR2_PACKAGE_FIRMWARE_IMX_DDR4 + bool "DDR4" + help + Use DDR4 binaries (i.e.: ddr4_*_201810.bin). + +config BR2_PACKAGE_FIRMWARE_IMX_DDR3 + bool "DDR3" + help + Use DDR3 binaries (i.e.: ddr3_*_201810.bin). + +endchoice # DDR training FW + +config BR2_PACKAGE_FIRMWARE_IMX_DDR_VERSION + string "DDR3/DDR4/LPDDR4 firmware version" + # Needed for backward compatibility, the package used to + # unconditionally use HW version 201810 when DDR3/DDR4 was + # selected + default "201810" if BR2_PACKAGE_FIRMWARE_IMX_DDR3 || BR2_PACKAGE_FIRMWARE_IMX_DDR4 + help + Use a specific version of the imx ddr binaries. Leaving this + field empty will select the default version. + +endif # BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW + +if BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW || BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW_IMX9 + +config BR2_PACKAGE_FIRMWARE_IMX_IMEM_LEN + hex "(LP)DDR IMEM padding length" + default 0x8000 + help + The IMEM firmware will be padded to this length + +config BR2_PACKAGE_FIRMWARE_IMX_DMEM_LEN + hex "(LP)DDR DMEM padding length" + default 0x4000 + help + The DMEM firmware will be padded to this length + +endif # BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW || BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW_IMX9 + +endif # BR2_PACKAGE_FIRMWARE_IMX diff --git a/package/freescale-imx/firmware-imx/firmware-imx.hash b/package/freescale-imx/firmware-imx/firmware-imx.hash new file mode 100644 index 00000000..d606ae6d --- /dev/null +++ b/package/freescale-imx/firmware-imx/firmware-imx.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 2e27962332197ebebbb30138f6dfb365361d48d7efa565df97c4f79285b1ca50 firmware-imx-8.24-fbe0a4c.bin +sha256 c9ee518510d72e254d62743f5098163eacdb6428c6ba4d8119afe2d12edba068 COPYING +sha256 165f6c0eacb4d3a05289dfb79331c9a2c05207eb7a67ef28a117f246a0145428 EULA +sha256 40d02f6d6b4e94d9307529408f372f5a9908cf3d156ec533a4e54274b40f271e SCR.txt diff --git a/package/freescale-imx/firmware-imx/firmware-imx.mk b/package/freescale-imx/firmware-imx/firmware-imx.mk new file mode 100644 index 00000000..8666d76a --- /dev/null +++ b/package/freescale-imx/firmware-imx/firmware-imx.mk @@ -0,0 +1,227 @@ +################################################################################ +# +# firmware-imx +# +################################################################################ + +FIRMWARE_IMX_VERSION = 8.24 +FIRMWARE_IMX_REVISION = fbe0a4c +FIRMWARE_IMX_SITE = $(FREESCALE_IMX_SITE) +FIRMWARE_IMX_SOURCE = firmware-imx-$(FIRMWARE_IMX_VERSION)-$(FIRMWARE_IMX_REVISION).bin + +FIRMWARE_IMX_LICENSE = NXP Semiconductor Software License Agreement +FIRMWARE_IMX_LICENSE_FILES = EULA COPYING SCR.txt +FIRMWARE_IMX_REDISTRIBUTE = NO + +FIRMWARE_IMX_INSTALL_IMAGES = YES + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE),y) +FIRMWARE_IMX_DEPENDENCIES += linux-firmware +endif + +define FIRMWARE_IMX_EXTRACT_CMDS + $(call NXP_EXTRACT_HELPER,$(FIRMWARE_IMX_DL_DIR)/$(FIRMWARE_IMX_SOURCE)) +endef + +# +# DDR firmware +# + +define FIRMWARE_IMX_PREPARE_DDR_FW + $(TARGET_OBJCOPY) -I binary -O binary \ + --pad-to $(BR2_PACKAGE_FIRMWARE_IMX_IMEM_LEN) --gap-fill=0x0 \ + $(FIRMWARE_IMX_DDRFW_DIR)/$(strip $(1)).bin \ + $(FIRMWARE_IMX_DDRFW_DIR)/$(strip $(1))_pad.bin + $(TARGET_OBJCOPY) -I binary -O binary \ + --pad-to $(BR2_PACKAGE_FIRMWARE_IMX_DMEM_LEN) --gap-fill=0x0 \ + $(FIRMWARE_IMX_DDRFW_DIR)/$(strip $(2)).bin \ + $(FIRMWARE_IMX_DDRFW_DIR)/$(strip $(2))_pad.bin + cat $(FIRMWARE_IMX_DDRFW_DIR)/$(strip $(1))_pad.bin \ + $(FIRMWARE_IMX_DDRFW_DIR)/$(strip $(2))_pad.bin > \ + $(FIRMWARE_IMX_DDRFW_DIR)/$(strip $(3)).bin +endef + +FIRMWARE_IMX_DDR_VERSION = $(call qstrip,$(BR2_PACKAGE_FIRMWARE_IMX_DDR_VERSION)) +ifneq ($(FIRMWARE_IMX_DDR_VERSION),) +FIRMWARE_IMX_DDR_VERSION_SUFFIX = _$(FIRMWARE_IMX_DDR_VERSION) +endif + +ifeq ($(BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW_IMX9),y) +FIRMWARE_IMX_DDRFW_DIR = $(@D)/firmware/ddr/synopsys + +define FIRMWARE_IMX_INSTALL_IMAGE_DDR_FW + # Create padded versions of lpddr4_{d,i}mem_{1,2}d_* and generate lpddr4_fw.bin. + # lpddr4_fw.bin is needed when generating imx9-boot-sd.bin + # which is done in post-image script. + $(call FIRMWARE_IMX_PREPARE_DDR_FW, \ + lpddr4_imem_1d_v202201, + lpddr4_dmem_1d_v202201, + lpddr4_1d_fw) + $(call FIRMWARE_IMX_PREPARE_DDR_FW, \ + lpddr4_imem_2d_v202201, + lpddr4_dmem_2d_v202201, + lpddr4_2d_fw) + cat $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4_1d_fw.bin \ + $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4_2d_fw.bin > \ + $(BINARIES_DIR)/lpddr4_fw.bin + ln -sf $(BINARIES_DIR)/lpddr4_fw.bin $(BINARIES_DIR)/ddr_fw.bin + + # U-Boot supports creation of the combined flash.bin image. To make + # sure that U-Boot can access all available files copy them to + # the binary dir. + cp $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4*.bin $(BINARIES_DIR)/ +endef +endif + +ifeq ($(BR2_PACKAGE_FIRMWARE_IMX_LPDDR4),y) +FIRMWARE_IMX_DDRFW_DIR = $(@D)/firmware/ddr/synopsys + +define FIRMWARE_IMX_INSTALL_IMAGE_DDR_FW + # Create padded versions of lpddr4_pmu_* and generate lpddr4_pmu_train_fw.bin. + # lpddr4_pmu_train_fw.bin is needed when generating imx8-boot-sd.bin + # which is done in post-image script. + $(call FIRMWARE_IMX_PREPARE_DDR_FW, \ + lpddr4_pmu_train_1d_imem$(FIRMWARE_IMX_DDR_VERSION_SUFFIX), + lpddr4_pmu_train_1d_dmem$(FIRMWARE_IMX_DDR_VERSION_SUFFIX), + lpddr4_pmu_train_1d_fw) + $(call FIRMWARE_IMX_PREPARE_DDR_FW, \ + lpddr4_pmu_train_2d_imem$(FIRMWARE_IMX_DDR_VERSION_SUFFIX), + lpddr4_pmu_train_2d_dmem$(FIRMWARE_IMX_DDR_VERSION_SUFFIX), + lpddr4_pmu_train_2d_fw) + cat $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4_pmu_train_1d_fw.bin \ + $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4_pmu_train_2d_fw.bin > \ + $(BINARIES_DIR)/lpddr4_pmu_train_fw.bin + ln -sf $(BINARIES_DIR)/lpddr4_pmu_train_fw.bin $(BINARIES_DIR)/ddr_fw.bin + + # U-Boot supports creation of the combined flash.bin image. To make + # sure that U-Boot can access all available files copy them to + # the binary dir. + cp $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4*.bin $(BINARIES_DIR)/ +endef +endif + +ifeq ($(BR2_PACKAGE_FIRMWARE_IMX_DDR4),y) +FIRMWARE_IMX_DDRFW_DIR = $(@D)/firmware/ddr/synopsys + +define FIRMWARE_IMX_INSTALL_IMAGE_DDR_FW + # Create padded versions of ddr4_* and generate ddr4_fw.bin. + # ddr4_fw.bin is needed when generating imx8-boot-sd.bin + # which is done in post-image script. + $(call FIRMWARE_IMX_PREPARE_DDR_FW, \ + ddr4_imem_1d$(FIRMWARE_IMX_DDR_VERSION_SUFFIX), + ddr4_dmem_1d$(FIRMWARE_IMX_DDR_VERSION_SUFFIX), + ddr4_1d_fw) + $(call FIRMWARE_IMX_PREPARE_DDR_FW, \ + ddr4_imem_2d$(FIRMWARE_IMX_DDR_VERSION_SUFFIX), + ddr4_dmem_2d$(FIRMWARE_IMX_DDR_VERSION_SUFFIX), + ddr4_2d_fw) + cat $(FIRMWARE_IMX_DDRFW_DIR)/ddr4_1d_fw.bin \ + $(FIRMWARE_IMX_DDRFW_DIR)/ddr4_2d_fw.bin > \ + $(BINARIES_DIR)/ddr4_fw.bin + ln -sf $(BINARIES_DIR)/ddr4_fw.bin $(BINARIES_DIR)/ddr_fw.bin + + # U-Boot supports creation of the combined flash.bin image. To make + # sure that U-Boot can access all available files copy them to + # the binary dir. + cp $(FIRMWARE_IMX_DDRFW_DIR)/ddr4*.bin $(BINARIES_DIR)/ +endef +endif + +ifeq ($(BR2_PACKAGE_FIRMWARE_IMX_DDR3),y) +FIRMWARE_IMX_DDRFW_DIR = $(@D)/firmware/ddr/synopsys + +define FIRMWARE_IMX_INSTALL_IMAGE_DDR_FW + # Create padded versions of ddr3_* and generate ddr3_fw.bin. + # ddr3_fw.bin is needed when generating imx8-boot-sd.bin + # which is done in post-image script. + $(call FIRMWARE_IMX_PREPARE_DDR_FW, \ + ddr3_imem_1d$(FIRMWARE_IMX_DDR_VERSION_SUFFIX), + ddr3_dmem_1d$(FIRMWARE_IMX_DDR_VERSION_SUFFIX), + ddr3_1d_fw) + cat $(FIRMWARE_IMX_DDRFW_DIR)/ddr3_1d_fw.bin > \ + $(BINARIES_DIR)/ddr3_fw.bin + ln -sf $(BINARIES_DIR)/ddr3_fw.bin $(BINARIES_DIR)/ddr_fw.bin + + # U-Boot supports creation of the combined flash.bin image. To make + # sure that U-Boot can access all available files copy them to + # the binary dir. + cp $(FIRMWARE_IMX_DDRFW_DIR)/ddr3*.bin $(BINARIES_DIR)/ +endef +endif + +# +# HDMI firmware +# + +ifeq ($(BR2_PACKAGE_FIRMWARE_IMX_NEEDS_HDMI_FW),y) +define FIRMWARE_IMX_INSTALL_IMAGE_HDMI_FW + cp $(@D)/firmware/hdmi/cadence/signed_hdmi_imx8m.bin \ + $(BINARIES_DIR)/signed_hdmi_imx8m.bin +endef +endif + +# +# EASRC firmware +# + +ifeq ($(BR2_PACKAGE_FIRMWARE_IMX_NEEDS_EASRC_FW),y) +define FIRMWARE_IMX_INSTALL_TARGET_EASRC_FW + mkdir -p $(TARGET_DIR)/lib/firmware/imx + cp -r $(@D)/firmware/easrc $(TARGET_DIR)/lib/firmware/imx +endef +endif + +# +# EPDC firmware +# + +ifeq ($(BR2_PACKAGE_FIRMWARE_IMX_NEEDS_EPDC_FW),y) +define FIRMWARE_IMX_INSTALL_TARGET_EPDC_FW + mkdir -p $(TARGET_DIR)/lib/firmware/imx + cp -r $(@D)/firmware/epdc $(TARGET_DIR)/lib/firmware/imx + mv $(TARGET_DIR)/lib/firmware/imx/epdc/epdc_ED060XH2C1.fw.nonrestricted \ + $(TARGET_DIR)/lib/firmware/imx/epdc/epdc_ED060XH2C1.fw +endef +endif + +# +# SDMA firmware +# + +FIRMWARE_IMX_SDMA_FW_NAME = $(call qstrip,$(BR2_PACKAGE_FIRMWARE_IMX_SDMA_FW_NAME)) +ifneq ($(FIRMWARE_IMX_SDMA_FW_NAME),) +define FIRMWARE_IMX_INSTALL_TARGET_SDMA_FW + mkdir -p $(TARGET_DIR)/lib/firmware/imx/sdma + cp -r $(@D)/firmware/sdma/sdma-$(FIRMWARE_IMX_SDMA_FW_NAME)*.bin \ + $(TARGET_DIR)/lib/firmware/imx/sdma/ +endef +endif + +# +# VPU firmware +# + +FIRMWARE_IMX_VPU_FW_NAME = $(call qstrip,$(BR2_PACKAGE_FIRMWARE_IMX_VPU_FW_NAME)) +ifneq ($(FIRMWARE_IMX_VPU_FW_NAME),) +define FIRMWARE_IMX_INSTALL_TARGET_VPU_FW + mkdir -p $(TARGET_DIR)/lib/firmware/vpu + for i in $$(find $(@D)/firmware/vpu/vpu_fw_$(FIRMWARE_IMX_VPU_FW_NAME)*.bin); do \ + cp $$i $(TARGET_DIR)/lib/firmware/vpu/ ; \ + ln -sf vpu/$$(basename $$i) $(TARGET_DIR)/lib/firmware/$$(basename $$i) ; \ + done +endef +endif + +define FIRMWARE_IMX_INSTALL_IMAGES_CMDS + $(FIRMWARE_IMX_INSTALL_IMAGE_DDR_FW) + $(FIRMWARE_IMX_INSTALL_IMAGE_HDMI_FW) +endef + +define FIRMWARE_IMX_INSTALL_TARGET_CMDS + $(FIRMWARE_IMX_INSTALL_TARGET_EASRC_FW) + $(FIRMWARE_IMX_INSTALL_TARGET_EPDC_FW) + $(FIRMWARE_IMX_INSTALL_TARGET_SDMA_FW) + $(FIRMWARE_IMX_INSTALL_TARGET_VPU_FW) +endef + +$(eval $(generic-package)) diff --git a/package/freescale-imx/firmware-upower/Config.in b/package/freescale-imx/firmware-upower/Config.in new file mode 100644 index 00000000..ca7486d2 --- /dev/null +++ b/package/freescale-imx/firmware-upower/Config.in @@ -0,0 +1,22 @@ +comment "firmware-upower needs an i.MX platform with uPower" + depends on !BR2_PACKAGE_FREESCALE_IMX_HAS_UPOWER + +config BR2_PACKAGE_FIRMWARE_UPOWER + bool "firmware-upower" + depends on BR2_PACKAGE_FREESCALE_IMX_HAS_UPOWER + help + NXP i.MX uPower firmware present on i.MX 8ULP SoC. + + This library is provided by NXP as-is and doesn't have an + upstream. + +if BR2_PACKAGE_FIRMWARE_UPOWER + +config BR2_PACKAGE_FIRMWARE_UPOWER_UPOWER_FIRMWARE_NAME + string + default "upower_a0.bin" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8ULPA0 + default "upower_a1.bin" if \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8ULPA1 || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8ULPA2 + +endif # BR2_PACKAGE_FIRMWARE_UPOWER diff --git a/package/freescale-imx/firmware-upower/firmware-upower.hash b/package/freescale-imx/firmware-upower/firmware-upower.hash new file mode 100644 index 00000000..dc5938ad --- /dev/null +++ b/package/freescale-imx/firmware-upower/firmware-upower.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 1df3a03d69feb38a450ee63abc7713d78cf6339988476e4c9f95ebbf63790f66 firmware-upower-1.3.1.bin +sha256 de37a0bcbf1717b910c1a53ea6eab853c404e61e8143bb6c081d39f532571e54 COPYING +sha256 b158adaac5e2d1c7fa6e739ff168ab498957e3303070f1c0b0e66d9a8f02a354 EULA diff --git a/package/freescale-imx/firmware-upower/firmware-upower.mk b/package/freescale-imx/firmware-upower/firmware-upower.mk new file mode 100644 index 00000000..dfdf7551 --- /dev/null +++ b/package/freescale-imx/firmware-upower/firmware-upower.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# firmware-ele-imx +# +################################################################################ + +FIRMWARE_UPOWER_VERSION = 1.3.1 +FIRMWARE_UPOWER_SITE = $(FREESCALE_IMX_SITE) +FIRMWARE_UPOWER_SOURCE = firmware-upower-$(FIRMWARE_UPOWER_VERSION).bin + +FIRMWARE_UPOWER_LICENSE = NXP Semiconductor Software License Agreement +FIRMWARE_UPOWER_LICENSE_FILES = COPYING EULA +FIRMWARE_UPOWER_REDISTRIBUTE = NO + +FIRMWARE_UPOWER_INSTALL_IMAGES = YES + +define FIRMWARE_UPOWER_EXTRACT_CMDS + $(call NXP_EXTRACT_HELPER,$(FIRMWARE_UPOWER_DL_DIR)/$(FIRMWARE_UPOWER_SOURCE)) +endef + +FIRMWARE_UPOWER_UPOWER_FIRMWARE_NAME = $(call qstrip,$(BR2_PACKAGE_FIRMWARE_UPOWER_UPOWER_FIRMWARE_NAME)) + +define FIRMWARE_UPOWER_INSTALL_IMAGES_CMDS + cp $(@D)/$(FIRMWARE_UPOWER_UPOWER_FIRMWARE_NAME) $(BINARIES_DIR)/upower.bin +endef + +$(eval $(generic-package)) diff --git a/package/freescale-imx/freescale-imx.mk b/package/freescale-imx/freescale-imx.mk new file mode 100644 index 00000000..b119d90e --- /dev/null +++ b/package/freescale-imx/freescale-imx.mk @@ -0,0 +1,9 @@ +################################################################################ +# +# freescale-imx +# +################################################################################ + +FREESCALE_IMX_SITE = https://www.nxp.com/lgfiles/NMG/MAD/YOCTO + +include $(sort $(wildcard package/freescale-imx/*/*.mk)) diff --git a/package/freescale-imx/gpu-amd-bin-mx51/Config.in b/package/freescale-imx/gpu-amd-bin-mx51/Config.in new file mode 100644 index 00000000..cd66c737 --- /dev/null +++ b/package/freescale-imx/gpu-amd-bin-mx51/Config.in @@ -0,0 +1,60 @@ +comment "gpu-amd-bin-mx51 needs a glibc EABI toolchain w/ C++" + depends on BR2_arm + depends on !BR2_ARM_EABI || !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_GPU_AMD_BIN_MX51 + bool "gpu-amd-bin-mx51 (also imx53)" + depends on BR2_ARM_EABI + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_HAS_LIBGLES + select BR2_PACKAGE_HAS_LIBOPENVG + help + Freescale libraries, headers and executables for the + AMD GPU on i.MX5x, containing OpenGL/ES, OpenVG + and EGL support. + +if BR2_PACKAGE_GPU_AMD_BIN_MX51 + +choice + prompt "Output option" + help + There are two versions of this library: one for + direct framebuffer access, one for X11 rendering. + Choose here which version to install. + +config BR2_PACKAGE_GPU_AMD_BIN_MX51_OUTPUT_X11 + bool "X11" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_LIBXCB + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XLIB_LIBXDMCP + select BR2_PACKAGE_XLIB_LIBXAU + +comment "X11 backend needs X.org enabled" + depends on !BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_GPU_AMD_BIN_MX51_OUTPUT_FB + bool "Framebuffer" + +endchoice + +config BR2_PACKAGE_PROVIDES_LIBEGL + default "gpu-amd-bin-mx51" + +config BR2_PACKAGE_PROVIDES_LIBGLES + default "gpu-amd-bin-mx51" + +config BR2_PACKAGE_PROVIDES_LIBOPENVG + default "gpu-amd-bin-mx51" + +config BR2_PACKAGE_GPU_AMD_BIN_MX51_EXAMPLES + bool "install examples" + help + Copy the examples to the target. + +endif diff --git a/package/freescale-imx/gpu-amd-bin-mx51/egl.pc b/package/freescale-imx/gpu-amd-bin-mx51/egl.pc new file mode 100644 index 00000000..b0ff229f --- /dev/null +++ b/package/freescale-imx/gpu-amd-bin-mx51/egl.pc @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: egl +Description: Freescale amd-gpu-bin-mx51 implementation of EGL +Version: 7.11.0 +Libs: -L${libdir} -lEGL +Cflags: -I${includedir} diff --git a/package/freescale-imx/gpu-amd-bin-mx51/glesv2.pc b/package/freescale-imx/gpu-amd-bin-mx51/glesv2.pc new file mode 100644 index 00000000..6f9b7fc8 --- /dev/null +++ b/package/freescale-imx/gpu-amd-bin-mx51/glesv2.pc @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: glesv2 +Description: Freescale amd-gpu-bin-mx51 implementation of OpenGL ESv2 +Version: 7.11.0 +Libs: -L${libdir} -lGLESv2 +Cflags: -I${includedir} diff --git a/package/freescale-imx/gpu-amd-bin-mx51/gpu-amd-bin-mx51.hash b/package/freescale-imx/gpu-amd-bin-mx51/gpu-amd-bin-mx51.hash new file mode 100644 index 00000000..9c08e4aa --- /dev/null +++ b/package/freescale-imx/gpu-amd-bin-mx51/gpu-amd-bin-mx51.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 c7a6fa03b7aa2a375556c59908876554ba720c1e744baba2debb84a408f790db amd-gpu-x11-bin-mx51-11.09.01.bin +sha256 f0db68a764b5fb199729e7435f606b8d12b61ca97990336c647b7e81f4a584d9 amd-gpu-bin-mx51-11.09.01.bin diff --git a/package/freescale-imx/gpu-amd-bin-mx51/gpu-amd-bin-mx51.mk b/package/freescale-imx/gpu-amd-bin-mx51/gpu-amd-bin-mx51.mk new file mode 100644 index 00000000..895fedc2 --- /dev/null +++ b/package/freescale-imx/gpu-amd-bin-mx51/gpu-amd-bin-mx51.mk @@ -0,0 +1,67 @@ +################################################################################ +# +# gpu-amd-bin-mx51 +# +################################################################################ + +GPU_AMD_BIN_MX51_SITE = $(FREESCALE_IMX_SITE) +GPU_AMD_BIN_MX51_BASE_VERSION = 11.09.01 +ifeq ($(BR2_PACKAGE_GPU_AMD_BIN_MX51_OUTPUT_FB),y) +GPU_AMD_BIN_MX51_VERSION = $(GPU_AMD_BIN_MX51_BASE_VERSION)-fb +GPU_AMD_BIN_MX51_SOURCE = amd-gpu-bin-mx51-$(GPU_AMD_BIN_MX51_BASE_VERSION).bin +else +GPU_AMD_BIN_MX51_VERSION = $(GPU_AMD_BIN_MX51_BASE_VERSION)-x11 +GPU_AMD_BIN_MX51_SOURCE = amd-gpu-x11-bin-mx51-$(GPU_AMD_BIN_MX51_BASE_VERSION).bin +GPU_AMD_BIN_MX51_DEPENDENCIES += libxcb xlib_libX11 xlib_libXext \ + xlib_libXrender xlib_libXau xlib_libXdmcp +endif +GPU_AMD_BIN_MX51_PROVIDES = libegl libgles libopenvg +GPU_AMD_BIN_MX51_INSTALL_STAGING = YES + +GPU_AMD_BIN_MX51_LICENSE = Freescale Semiconductor Software License Agreement +GPU_AMD_BIN_MX51_LICENSE_FILES = EULA +GPU_AMD_BIN_MX51_REDISTRIBUTE = NO + +define GPU_AMD_BIN_MX51_EXTRACT_CMDS + $(call NXP_EXTRACT_HELPER,$(GPU_AMD_BIN_MX51_DL_DIR)/$(GPU_AMD_BIN_MX51_SOURCE)) +endef + +# Upstream headers need to be compiled with -D_LINUX. It is more convenient +# to rely on __linux__ which is defined in compiler itself +define GPU_AMD_BIN_MX51_FIXUP_HEADERS + $(SED) 's/_LINUX/__linux__/g' $(@D)/usr/include/*/*.h +endef +GPU_AMD_BIN_MX51_POST_PATCH_HOOKS += GPU_AMD_BIN_MX51_FIXUP_HEADERS + +# eglplatform_1.4.h contains X11 compatible headers +ifeq ($(BR2_PACKAGE_GPU_AMD_BIN_MX51_OUTPUT_X11),y) +define GPU_AMD_BIN_MX51_FIXUP_EGL_HEADERS + mv $(STAGING_DIR)/usr/include/EGL/eglplatform_1.4.h $(STAGING_DIR)/usr/include/EGL/eglplatform.h +endef +endif + +define GPU_AMD_BIN_MX51_INSTALL_STAGING_CMDS + $(INSTALL) -d $(STAGING_DIR)/usr/lib/pkgconfig + $(INSTALL) -m 644 package/freescale-imx/gpu-amd-bin-mx51/*.pc $(STAGING_DIR)/usr/lib/pkgconfig/ + $(INSTALL) -m 755 $(@D)/usr/lib/lib* $(STAGING_DIR)/usr/lib/ + cp -r $(@D)/usr/include/* $(STAGING_DIR)/usr/include + $(GPU_AMD_BIN_MX51_FIXUP_EGL_HEADERS) +endef + +ifeq ($(BR2_PACKAGE_GPU_AMD_BIN_MX51_EXAMPLES),y) +define GPU_AMD_BIN_MX51_INSTALL_EXAMPLES + $(INSTALL) -d $(TARGET_DIR)/usr/share/examples/gpu_amd_samples + $(INSTALL) -m 755 $(@D)/usr/bin/* $(TARGET_DIR)/usr/share/examples/gpu_amd_samples +endef +endif + +define GPU_AMD_BIN_MX51_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 $(@D)/usr/lib/lib*so* $(TARGET_DIR)/usr/lib/ + $(GPU_AMD_BIN_MX51_INSTALL_EXAMPLES) +endef + +define GPU_AMD_BIN_MX51_DEVICES + /dev/gsl_kmod c 640 0 0 249 0 1 4 +endef + +$(eval $(generic-package)) diff --git a/package/freescale-imx/gpu-amd-bin-mx51/vg.pc b/package/freescale-imx/gpu-amd-bin-mx51/vg.pc new file mode 100644 index 00000000..8fe956e1 --- /dev/null +++ b/package/freescale-imx/gpu-amd-bin-mx51/vg.pc @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: vg +Description: Freescale amd-gpu-bin-mx51 implementation of OpenVG +Version: 1.1 +Libs: -L${libdir} -lOpenVG +Cflags: -I${includedir}/ diff --git a/package/freescale-imx/imx-alsa-plugins/Config.in b/package/freescale-imx/imx-alsa-plugins/Config.in new file mode 100644 index 00000000..df47edd1 --- /dev/null +++ b/package/freescale-imx/imx-alsa-plugins/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_IMX_ALSA_PLUGINS + bool "imx-alsa-plugins" + depends on BR2_arm # Only relevant for i.MX + depends on BR2_LINUX_KERNEL + depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib + select BR2_PACKAGE_ALSA_LIB + help + ALSA plugins specific for the Freescale i.MX platform. It + requires a kernel that includes the i.MX specific headers + to be built. + + The following plugins are provided so far: + * Rate Converter Plugin Using Freescale ASRC Hardware + Resampler (i.MX53 and most i.MX6) + + https://github.com/nxp-imx/imx-alsa-plugins + +comment "imx-alsa-libs needs an imx-specific Linux kernel to be built" + depends on BR2_arm + depends on !BR2_LINUX_KERNEL + +comment "imx-alsa-libs needs a toolchain w/ threads" + depends on BR2_arm + depends on BR2_LINUX_KERNEL && !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/freescale-imx/imx-alsa-plugins/imx-alsa-plugins.hash b/package/freescale-imx/imx-alsa-plugins/imx-alsa-plugins.hash new file mode 100644 index 00000000..1ca7697f --- /dev/null +++ b/package/freescale-imx/imx-alsa-plugins/imx-alsa-plugins.hash @@ -0,0 +1,3 @@ +# Locally calculated: +sha256 089bba009f82bf5e4a1e34b77a7d3badce2948619d92bec7a7ad42e766442d4c imx-alsa-plugins-rel_imx_4.9.x_1.0.0_ga.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING.GPL diff --git a/package/freescale-imx/imx-alsa-plugins/imx-alsa-plugins.mk b/package/freescale-imx/imx-alsa-plugins/imx-alsa-plugins.mk new file mode 100644 index 00000000..912cc7c6 --- /dev/null +++ b/package/freescale-imx/imx-alsa-plugins/imx-alsa-plugins.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# imx-alsa-plugins +# +################################################################################ + +IMX_ALSA_PLUGINS_VERSION = rel_imx_4.9.x_1.0.0_ga +IMX_ALSA_PLUGINS_SITE = $(call github,nxp-imx,imx-alsa-plugins,$(IMX_ALSA_PLUGINS_VERSION)) +IMX_ALSA_PLUGINS_LICENSE = GPL-2.0+ +IMX_ALSA_PLUGINS_LICENSE_FILES = COPYING.GPL +IMX_ALSA_PLUGINS_DEPENDENCIES = host-pkgconf alsa-lib + +# git, no configure +IMX_ALSA_PLUGINS_AUTORECONF = YES + +# needs access to imx-specific kernel headers +IMX_ALSA_PLUGINS_DEPENDENCIES += linux +IMX_ALSA_PLUGINS_CONF_ENV += CPPFLAGS="$(TARGET_CPPFLAGS) -idirafter $(LINUX_DIR)/include/uapi" + +$(eval $(autotools-package)) diff --git a/package/freescale-imx/imx-codec/Config.in b/package/freescale-imx/imx-codec/Config.in new file mode 100644 index 00000000..0ecb92bf --- /dev/null +++ b/package/freescale-imx/imx-codec/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_IMX_CODEC + bool "imx-codec" + depends on BR2_arm || BR2_aarch64 # Only relevant for i.MX + depends on BR2_TOOLCHAIN_USES_GLIBC # prebuilt binaries + help + Binary codec libraries for the NXP i.MX SoCs. + + This library is provided by NXP as-is and doesn't have + an upstream. + +comment "imx-codec needs a glibc toolchain" + depends on BR2_arm || BR2_aarch64 + depends on !BR2_TOOLCHAIN_USES_GLIBC diff --git a/package/freescale-imx/imx-codec/imx-codec.hash b/package/freescale-imx/imx-codec/imx-codec.hash new file mode 100644 index 00000000..666d38d0 --- /dev/null +++ b/package/freescale-imx/imx-codec/imx-codec.hash @@ -0,0 +1,4 @@ +# locally computed +sha256 b0744a91c265202a79a019c72f17cae01fd5b63a3ba451592b6c8349d95719e0 imx-codec-4.8.2.bin +sha256 24d7cb3a7e51011466a149bd99acf89387b832be2d0890ce2e183dfbc9d7cb84 COPYING +sha256 3282d88fad766897f93b0827297a70c2707d9358db24cccd5777abf7c997da77 EULA diff --git a/package/freescale-imx/imx-codec/imx-codec.mk b/package/freescale-imx/imx-codec/imx-codec.mk new file mode 100644 index 00000000..54ba6f12 --- /dev/null +++ b/package/freescale-imx/imx-codec/imx-codec.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# imx-codec +# +################################################################################ + +IMX_CODEC_VERSION = 4.8.2 +IMX_CODEC_SITE = $(FREESCALE_IMX_SITE) +IMX_CODEC_SOURCE = imx-codec-$(IMX_CODEC_VERSION).bin +IMX_CODEC_INSTALL_STAGING = YES + +IMX_CODEC_LICENSE = NXP Semiconductor Software License Agreement, BSD-3-Clause (flac, ogg headers) +IMX_CODEC_LICENSE_FILES = EULA COPYING +IMX_CODEC_REDISTRIBUTE = NO + +ifeq ($(BR2_aarch64),y) +IMX_CODEC_CONF_OPTS += --enable-armv8 +endif + +ifeq ($(BR2_ARM_EABIHF),y) +IMX_CODEC_CONF_OPTS += --enable-fhw +endif + +ifeq ($(BR2_PACKAGE_IMX_VPU),y) +IMX_CODEC_CONF_OPTS += --enable-vpu +endif + +define IMX_CODEC_EXTRACT_CMDS + $(call NXP_EXTRACT_HELPER,$(IMX_CODEC_DL_DIR)/$(IMX_CODEC_SOURCE)) +endef + +# FIXME The Makefile installs both the arm9 and arm11 versions of the +# libraries, but we only need one of them. + +# Upstream installs libraries into usr/lib/imx-mm, but the dynamic +# loader only looks in usr/lib, so move the libraries there +define IMX_CODEC_FIXUP_TARGET_PATH + find $(TARGET_DIR)/usr/lib/imx-mm -not -type d \ + -exec mv {} $(TARGET_DIR)/usr/lib \; + rm -rf $(TARGET_DIR)/usr/lib/imx-mm +endef +IMX_CODEC_POST_INSTALL_TARGET_HOOKS += IMX_CODEC_FIXUP_TARGET_PATH + +$(eval $(autotools-package)) diff --git a/package/freescale-imx/imx-gpu-g2d/Config.in b/package/freescale-imx/imx-gpu-g2d/Config.in new file mode 100644 index 00000000..c143b17c --- /dev/null +++ b/package/freescale-imx/imx-gpu-g2d/Config.in @@ -0,0 +1,20 @@ +comment "imx-gpu-g2d needs a glibc toolchain with armhf enabled" + depends on BR2_arm + depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_ARM_EABIHF + +comment "imx-gpu-g2d needs a glibc toolchain" + depends on BR2_aarch64 + depends on !BR2_TOOLCHAIN_USES_GLIBC + +config BR2_PACKAGE_IMX_GPU_G2D + bool "imx-gpu-g2d" + # Pre-built binaries only available for ARM EABIhf + depends on (BR2_arm && BR2_ARM_EABIHF) || BR2_aarch64 + # Library binaries are linked against libc.so.6 + depends on BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_IMX_GPU_VIV + help + Userspace 2D libraries for Vivante GPU on i.MX platforms. + + This library is provided by NXP as-is and doesn't have an + upstream. diff --git a/package/freescale-imx/imx-gpu-g2d/imx-gpu-g2d.hash b/package/freescale-imx/imx-gpu-g2d/imx-gpu-g2d.hash new file mode 100644 index 00000000..922fce22 --- /dev/null +++ b/package/freescale-imx/imx-gpu-g2d/imx-gpu-g2d.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 413610ce4730eb9adbde30c8ad4a72df3edd69d84e1154a0c29efa7f33a30663 imx-gpu-g2d-6.4.11.p2.6-arm-bc7b6a2.bin +sha256 b2e4c580bf887042f479fde7c8b07c6215794d8123263d10ff0c167af7ba5918 imx-gpu-g2d-6.4.11.p2.6-aarch64-bc7b6a2.bin +sha256 c9ee518510d72e254d62743f5098163eacdb6428c6ba4d8119afe2d12edba068 COPYING +sha256 165f6c0eacb4d3a05289dfb79331c9a2c05207eb7a67ef28a117f246a0145428 EULA diff --git a/package/freescale-imx/imx-gpu-g2d/imx-gpu-g2d.mk b/package/freescale-imx/imx-gpu-g2d/imx-gpu-g2d.mk new file mode 100644 index 00000000..0a7ee3c2 --- /dev/null +++ b/package/freescale-imx/imx-gpu-g2d/imx-gpu-g2d.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# imx-gpu-g2d +# +################################################################################ + +ifeq ($(BR2_aarch64),y) +IMX_GPU_G2D_VERSION = 6.4.11.p2.6-aarch64-bc7b6a2 +else +IMX_GPU_G2D_VERSION = 6.4.11.p2.6-arm-bc7b6a2 +endif +IMX_GPU_G2D_SITE = $(FREESCALE_IMX_SITE) +IMX_GPU_G2D_SOURCE = imx-gpu-g2d-$(IMX_GPU_G2D_VERSION).bin +IMX_GPU_G2D_DEPENDENCIES = imx-gpu-viv +IMX_GPU_G2D_INSTALL_STAGING = YES + +IMX_GPU_G2D_LICENSE = NXP Semiconductor Software License Agreement +IMX_GPU_G2D_LICENSE_FILES = EULA COPYING +IMX_GPU_G2D_REDISTRIBUTE = NO + +define IMX_GPU_G2D_EXTRACT_CMDS + $(call NXP_EXTRACT_HELPER,$(IMX_GPU_G2D_DL_DIR)/$(IMX_GPU_G2D_SOURCE)) +endef + +define IMX_GPU_G2D_INSTALL_STAGING_CMDS + cp -a $(@D)/g2d/usr/* $(STAGING_DIR)/usr +endef + +define IMX_GPU_G2D_INSTALL_TARGET_CMDS + cp -a $(@D)/g2d/usr/lib $(TARGET_DIR)/usr +endef + +$(eval $(generic-package)) diff --git a/package/freescale-imx/imx-gpu-viv/Config.in b/package/freescale-imx/imx-gpu-viv/Config.in new file mode 100644 index 00000000..0a1be6ec --- /dev/null +++ b/package/freescale-imx/imx-gpu-viv/Config.in @@ -0,0 +1,107 @@ +comment "imx-gpu-viv needs a glibc toolchain with armhf enabled" + depends on BR2_arm + depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_ARM_EABIHF + +comment "imx-gpu-viv needs a glibc toolchain" + depends on BR2_aarch64 + depends on !BR2_TOOLCHAIN_USES_GLIBC + +config BR2_PACKAGE_IMX_GPU_VIV + bool "imx-gpu-viv" + # Pre-built binaries only available for ARM EABIhf + depends on (BR2_arm && BR2_ARM_EABIHF) || BR2_aarch64 + # Library binaries are linked against libc.so.6 + depends on BR2_TOOLCHAIN_USES_GLIBC + # Library binaries are linked against libdrm.so.2, except framebuffer + # output on ARM + select BR2_PACKAGE_LIBDRM if !(BR2_arm && BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_FB) + select BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_HAS_LIBGLES + # gbm is only available in the aarch64 blobs + select BR2_PACKAGE_HAS_LIBGBM if BR2_aarch64 + select BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF if BR2_aarch64 + select BR2_PACKAGE_LIBGBM_HAS_FEATURE_FORMAT_MODIFIER_PLANE_COUNT if BR2_aarch64 + select BR2_PACKAGE_HAS_LIBOPENCL + select BR2_PACKAGE_HAS_LIBOPENVG + help + Userspace libraries for Vivante GPU on i.MX platforms + + It contains libraries and headers for GLES, OpenCL, and + OpenVG. It also contains a plugin for DirectFB-1.4.0, but + that doesn't work together with buildroot's DirectFB + version. + + This library is provided by Freescale as-is and doesn't have + an upstream. + +if BR2_PACKAGE_IMX_GPU_VIV + +choice + prompt "Output option" + help + There are two versions of this library: one for + direct framebuffer access, one for wayland rendering. + Choose here which version to install. + +config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_FB + bool "Framebuffer" + # The i.MX8 aarch64 blob doesn't support FB output + depends on BR2_arm + +config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL + bool "Wayland" + select BR2_PACKAGE_WAYLAND + +endchoice + +config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT + string + default "fb" if BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_FB + default "wayland" if BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL + +config BR2_PACKAGE_PROVIDES_LIBEGL + default "imx-gpu-viv" + +config BR2_PACKAGE_PROVIDES_LIBGLES + default "imx-gpu-viv" + +config BR2_PACKAGE_PROVIDES_LIBOPENCL + default "imx-gpu-viv" + +config BR2_PACKAGE_PROVIDES_LIBOPENVG + default "imx-gpu-viv" + +if BR2_aarch64 + +config BR2_PACKAGE_PROVIDES_LIBGBM + default "imx-gpu-viv" + +config BR2_PACKAGE_IMX_GPU_VIV_PLATFORM + string + default "mx8mn" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN + default "mx8mp" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP + default "mx8mq" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M + default "mx8qm" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8 + default "mx8qxp" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X + +endif + +config BR2_PACKAGE_IMX_GPU_VIV_EXAMPLES + bool "install examples" + # example binaries are linked against libstdc++.so.6 + depends on BR2_INSTALL_LIBSTDCPP + help + Copy the Vivante examples to the target. + + Warning: examples take approximately 150 MB of disk space. + +comment "imx-gpu-viv-examples need a toolchain w/ C++ support" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_IMX_GPU_VIV_GMEM_INFO + bool "install gmem_info tool" + help + Copy the gmem_info tool to the target which provides + information about GPU memory consumption. + +endif diff --git a/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.hash b/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.hash new file mode 100644 index 00000000..cce08e27 --- /dev/null +++ b/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 cf6e42c9c9a903cd933b767d411131390d237a4b92ecad579db57d54538707f3 imx-gpu-viv-6.4.11.p2.6-aarch32-bc7b6a2.bin +sha256 5fe828113b9b2801b3fd60cd15eadfd0ac747e5897ef7db7fa22f80e7dd8a8e1 imx-gpu-viv-6.4.11.p2.6-aarch64-bc7b6a2.bin +sha256 c9ee518510d72e254d62743f5098163eacdb6428c6ba4d8119afe2d12edba068 COPYING +sha256 165f6c0eacb4d3a05289dfb79331c9a2c05207eb7a67ef28a117f246a0145428 EULA diff --git a/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk b/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk new file mode 100644 index 00000000..a559bb74 --- /dev/null +++ b/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk @@ -0,0 +1,98 @@ +################################################################################ +# +# imx-gpu-viv +# +################################################################################ + +ifeq ($(BR2_aarch64),y) +IMX_GPU_VIV_VERSION = 6.4.11.p2.6-aarch64-bc7b6a2 +else +IMX_GPU_VIV_VERSION = 6.4.11.p2.6-aarch32-bc7b6a2 +endif +IMX_GPU_VIV_SITE = $(FREESCALE_IMX_SITE) +IMX_GPU_VIV_SOURCE = imx-gpu-viv-$(IMX_GPU_VIV_VERSION).bin + +IMX_GPU_VIV_INSTALL_STAGING = YES + +IMX_GPU_VIV_LICENSE = NXP Semiconductor Software License Agreement +IMX_GPU_VIV_LICENSE_FILES = EULA COPYING +IMX_GPU_VIV_REDISTRIBUTE = NO + +IMX_GPU_VIV_PROVIDES = libegl libgles libopencl libopenvg + +ifeq ($(BR2_aarch64),y) +IMX_GPU_VIV_PROVIDES += libgbm +endif + +IMX_GPU_VIV_LIB_TARGET = $(call qstrip,$(BR2_PACKAGE_IMX_GPU_VIV_OUTPUT)) + +# Libraries are linked against libdrm, except framebuffer output on ARM +ifneq ($(IMX_GPU_VIV_LIB_TARGET)$(BR2_arm),fby) +IMX_GPU_VIV_DEPENDENCIES += libdrm +endif + +ifeq ($(IMX_GPU_VIV_LIB_TARGET),wayland) +IMX_GPU_VIV_DEPENDENCIES += wayland +endif + +define IMX_GPU_VIV_EXTRACT_CMDS + $(call NXP_EXTRACT_HELPER,$(IMX_GPU_VIV_DL_DIR)/$(IMX_GPU_VIV_SOURCE)) +endef + +ifeq ($(IMX_GPU_VIV_LIB_TARGET),fb) +define IMX_GPU_VIV_FIXUP_PKGCONFIG + ln -sf egl_linuxfb.pc $(@D)/gpu-core/usr/lib/pkgconfig/egl.pc +endef +else ifeq ($(IMX_GPU_VIV_LIB_TARGET),wayland) +define IMX_GPU_VIV_FIXUP_PKGCONFIG + ln -sf egl_wayland.pc $(@D)/gpu-core/usr/lib/pkgconfig/egl.pc +endef +endif + +IMX_GPU_VIV_PLATFORM_DIR = $(call qstrip,$(BR2_PACKAGE_IMX_GPU_VIV_PLATFORM)) +ifneq ($(IMX_GPU_VIV_PLATFORM_DIR),) +define IMX_GPU_VIV_COPY_PLATFORM + cp -dpfr $(@D)/gpu-core/usr/lib/$(IMX_GPU_VIV_PLATFORM_DIR)/* $(@D)/gpu-core/usr/lib/ +endef +endif + +# Instead of building, we fix up the inconsistencies that exist +# in the upstream archive here. We also remove unused backend files. +# Make sure these commands are idempotent. +define IMX_GPU_VIV_BUILD_CMDS + cp -dpfr $(@D)/gpu-core/usr/lib/$(IMX_GPU_VIV_LIB_TARGET)/* $(@D)/gpu-core/usr/lib/ + $(foreach backend,fb wayland, \ + $(RM) -r $(@D)/gpu-core/usr/lib/$(backend) + ) + $(IMX_GPU_VIV_COPY_PLATFORM) + $(foreach platform,mx8mn mx8mp mx8mq mx8qm mx8qxp mx8ulp, \ + $(RM) -r $(@D)/gpu-core/usr/lib/$(platform) + ) + $(IMX_GPU_VIV_FIXUP_PKGCONFIG) +endef + +define IMX_GPU_VIV_INSTALL_STAGING_CMDS + cp -r $(@D)/gpu-core/usr/* $(STAGING_DIR)/usr +endef + +ifeq ($(BR2_PACKAGE_IMX_GPU_VIV_EXAMPLES),y) +define IMX_GPU_VIV_INSTALL_EXAMPLES + mkdir -p $(TARGET_DIR)/usr/share/examples/ + cp -r $(@D)/gpu-demos/opt/* $(TARGET_DIR)/usr/share/examples/ +endef +endif + +ifeq ($(BR2_PACKAGE_IMX_GPU_VIV_GMEM_INFO),y) +define IMX_GPU_VIV_INSTALL_GMEM_INFO + cp -dpfr $(@D)/gpu-tools/gmem-info/usr/bin/* $(TARGET_DIR)/usr/bin/ +endef +endif + +define IMX_GPU_VIV_INSTALL_TARGET_CMDS + $(IMX_GPU_VIV_INSTALL_EXAMPLES) + $(IMX_GPU_VIV_INSTALL_GMEM_INFO) + cp -a $(@D)/gpu-core/usr/lib $(TARGET_DIR)/usr + $(INSTALL) -D -m 0644 $(@D)/gpu-core/etc/Vivante.icd $(TARGET_DIR)/etc/OpenCL/vendors/Vivante.icd +endef + +$(eval $(generic-package)) diff --git a/package/freescale-imx/imx-kobs/0001-Fix-musl-build.patch b/package/freescale-imx/imx-kobs/0001-Fix-musl-build.patch new file mode 100644 index 00000000..373b34ff --- /dev/null +++ b/package/freescale-imx/imx-kobs/0001-Fix-musl-build.patch @@ -0,0 +1,42 @@ +[PATCH] Fix musl build + +Signed-off-by: Gary Bisson +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + src/mtd.c | 1 + + src/mtd.h | 5 +++++ + 2 files changed, 6 insertions(+) + +diff --git a/src/mtd.c b/src/mtd.c +index 1edc441..6d2264c 100644 +--- a/src/mtd.c ++++ b/src/mtd.c +@@ -31,6 +31,7 @@ + #include + #include + #include ++#include + #include + #include + #include + +diff --git a/src/mtd.h b/src/mtd.h +index bd21add..debfc84 100644 +--- a/src/mtd.h ++++ b/src/mtd.h +@@ -31,6 +31,11 @@ + #include "BootControlBlocks.h" + #include "rom_nand_hamming_code_ecc.h" + ++// musl library doesn't define loff_t ++#if !defined(__GLIBC__) && !defined(__UCLIBC__) ++#define loff_t off_t ++#endif ++ + //------------------------------------------------------------------------------ + // Re-definitions of true and false, because the standard ones aren't good + // enough? +-- +2.5.1 + diff --git a/package/freescale-imx/imx-kobs/0002-Fix-build-for-recent-toolchains.patch b/package/freescale-imx/imx-kobs/0002-Fix-build-for-recent-toolchains.patch new file mode 100644 index 00000000..c5cfb802 --- /dev/null +++ b/package/freescale-imx/imx-kobs/0002-Fix-build-for-recent-toolchains.patch @@ -0,0 +1,26 @@ +[PATCH] Fix build for recent toolchains + +Starting with Linux 4.4 headers, mtd-user.h isn't including stdint.h +anymore which breaks the build. + +Signed-off-by: Gary Bisson +--- + src/BootControlBlocks.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/BootControlBlocks.h b/src/BootControlBlocks.h +index 192eb61..aacdb64 100644 +--- a/src/BootControlBlocks.h ++++ b/src/BootControlBlocks.h +@@ -20,6 +20,8 @@ + #ifndef BOOTCONTROLBLOCKS_H_ + #define BOOTCONTROLBLOCKS_H_ + ++#include ++ + #define NCB_FINGERPRINT1 0x504d5453 //!< 'STMP' + #define NCB_FINGERPRINT2 0x2042434e //!< 'NCB' - NAND Control Block + #define NCB_FINGERPRINT3 0x4e494252 //!< 'RBIN' - ROM Boot Image Block - N +-- +2.6.4 + diff --git a/package/freescale-imx/imx-kobs/Config.in b/package/freescale-imx/imx-kobs/Config.in new file mode 100644 index 00000000..a81842b9 --- /dev/null +++ b/package/freescale-imx/imx-kobs/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_IMX_KOBS + bool "imx-kobs" + depends on BR2_arm # Only relevant for i.MX + help + The imx-kobs tool is used for writing images to NAND on i.MX + platforms. + + https://github.com/NXPmicro/imx-kobs diff --git a/package/freescale-imx/imx-kobs/imx-kobs.hash b/package/freescale-imx/imx-kobs/imx-kobs.hash new file mode 100644 index 00000000..39ab2b65 --- /dev/null +++ b/package/freescale-imx/imx-kobs/imx-kobs.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 e83c9bca2706a33832174fc609b434d513a39b54ca90a714a6d0bb6f7a0386f7 imx-kobs-ff13a99a22aa73cca0e09a33c2ebb6a94ad698da.tar.gz +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 LICENSE diff --git a/package/freescale-imx/imx-kobs/imx-kobs.mk b/package/freescale-imx/imx-kobs/imx-kobs.mk new file mode 100644 index 00000000..d33d3a1b --- /dev/null +++ b/package/freescale-imx/imx-kobs/imx-kobs.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# imx-kobs +# +################################################################################ + +IMX_KOBS_VERSION = ff13a99a22aa73cca0e09a33c2ebb6a94ad698da +IMX_KOBS_SITE = $(call github,nxp-imx,imx-kobs,$(IMX_KOBS_VERSION)) +IMX_KOBS_LICENSE = GPL-2.0+ +IMX_KOBS_LICENSE_FILES = LICENSE + +$(eval $(autotools-package)) diff --git a/package/freescale-imx/imx-lib/Config.in b/package/freescale-imx/imx-lib/Config.in new file mode 100644 index 00000000..0a89bf14 --- /dev/null +++ b/package/freescale-imx/imx-lib/Config.in @@ -0,0 +1,14 @@ +comment "imx-lib needs an imx-specific Linux kernel to be built" + depends on BR2_arm && !BR2_LINUX_KERNEL + +config BR2_PACKAGE_IMX_LIB + bool "imx-lib" + depends on BR2_LINUX_KERNEL + depends on BR2_arm # Only relevant for i.MX + help + Library of userspace helpers specific for the Freescale i.MX + platform. It wraps the kernel interfaces for some i.MX + platform specific drivers. It requires a kernel that + includes the i.MX specific headers to be built. + + https://github.com/nxp-imx/imx-lib diff --git a/package/freescale-imx/imx-lib/imx-lib.hash b/package/freescale-imx/imx-lib/imx-lib.hash new file mode 100644 index 00000000..3443d1d6 --- /dev/null +++ b/package/freescale-imx/imx-lib/imx-lib.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 09362a83d9e24525d9aeb6b6d557935f06054dc430fb66ec5676a99f0ca49608 imx-lib-3f777974c0c146817e2ff5cb0340ca66a1f99e57-git4.tar.gz +sha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a COPYING-LGPL-2.1 diff --git a/package/freescale-imx/imx-lib/imx-lib.mk b/package/freescale-imx/imx-lib/imx-lib.mk new file mode 100644 index 00000000..f06453e8 --- /dev/null +++ b/package/freescale-imx/imx-lib/imx-lib.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# imx-lib +# +################################################################################ + +IMX_LIB_VERSION = 3f777974c0c146817e2ff5cb0340ca66a1f99e57 +IMX_LIB_SITE = https://github.com/nxp-imx/imx-lib.git +IMX_LIB_SITE_METHOD = git +IMX_LIB_LICENSE = LGPL-2.1+ +IMX_LIB_LICENSE_FILES = COPYING-LGPL-2.1 + +IMX_LIB_INSTALL_STAGING = YES + +# imx-lib needs access to imx-specific kernel headers +IMX_LIB_DEPENDENCIES += linux +IMX_LIB_INCLUDE = \ + -idirafter $(LINUX_DIR)/include/uapi + +IMX_LIB_MAKE_ENV = \ + $(TARGET_MAKE_ENV) \ + $(TARGET_CONFIGURE_OPTS) \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + PLATFORM=$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM) \ + INCLUDE="$(IMX_LIB_INCLUDE)" + +define IMX_LIB_BUILD_CMDS + $(IMX_LIB_MAKE_ENV) $(MAKE1) -C $(@D) +endef + +define IMX_LIB_INSTALL_STAGING_CMDS + $(IMX_LIB_MAKE_ENV) $(MAKE1) -C $(@D) DEST_DIR=$(STAGING_DIR) install +endef + +define IMX_LIB_INSTALL_TARGET_CMDS + $(IMX_LIB_MAKE_ENV) $(MAKE1) -C $(@D) DEST_DIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/freescale-imx/imx-m4fwloader/Config.in b/package/freescale-imx/imx-m4fwloader/Config.in new file mode 100644 index 00000000..d75480a7 --- /dev/null +++ b/package/freescale-imx/imx-m4fwloader/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_IMX_M4FWLOADER + bool "imx-m4fwloader" + depends on BR2_arm # Only relevant for i.MX + help + This package provides a tool to load a firmware to the + Cortex-M4 core available in some i.MX processors. + + https://github.com/NXPmicro/imx-m4fwloader diff --git a/package/freescale-imx/imx-m4fwloader/imx-m4fwloader.hash b/package/freescale-imx/imx-m4fwloader/imx-m4fwloader.hash new file mode 100644 index 00000000..0949a099 --- /dev/null +++ b/package/freescale-imx/imx-m4fwloader/imx-m4fwloader.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 fb6334900972fe389e808845417dd9045fb0f7eb47952fc22a00f4cdaf94af1a imx-m4fwloader-8cf4d17a09ba23250d43381b49ba00d92406fad9.tar.gz +sha256 c03cea027b4b40e4402fabd08557736727ec3d5bc54ad64ab6472de432198cad LICENSE diff --git a/package/freescale-imx/imx-m4fwloader/imx-m4fwloader.mk b/package/freescale-imx/imx-m4fwloader/imx-m4fwloader.mk new file mode 100644 index 00000000..320d5dc6 --- /dev/null +++ b/package/freescale-imx/imx-m4fwloader/imx-m4fwloader.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# imx-m4fwloader +# +################################################################################ + +IMX_M4FWLOADER_VERSION = 8cf4d17a09ba23250d43381b49ba00d92406fad9 +IMX_M4FWLOADER_SITE = $(call github,NXPmicro,imx-m4fwloader,$(IMX_M4FWLOADER_VERSION)) +IMX_M4FWLOADER_LICENSE = GPL-2.0+ +IMX_M4FWLOADER_LICENSE_FILES = LICENSE + +define IMX_M4FWLOADER_BUILD_CMDS + $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) -o $(@D)/imx-m4fwloader \ + $(@D)/m4fwloader.c +endef + +define IMX_M4FWLOADER_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/imx-m4fwloader \ + $(TARGET_DIR)/usr/sbin/imx-m4fwloader +endef + +$(eval $(generic-package)) diff --git a/package/freescale-imx/imx-parser/Config.in b/package/freescale-imx/imx-parser/Config.in new file mode 100644 index 00000000..028b2bf6 --- /dev/null +++ b/package/freescale-imx/imx-parser/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_IMX_PARSER + bool "imx-parser" + depends on BR2_arm || BR2_aarch64 # Only relevant for i.MX + help + Binary parser libraries for the NXP i.MX SoCs. + + This library is provided by NXP as-is and doesn't have + an upstream. diff --git a/package/freescale-imx/imx-parser/imx-parser.hash b/package/freescale-imx/imx-parser/imx-parser.hash new file mode 100644 index 00000000..017d2c2f --- /dev/null +++ b/package/freescale-imx/imx-parser/imx-parser.hash @@ -0,0 +1,4 @@ +# locally computed +sha256 9cd8c49a0bb1050afcfbcc7a677a348443fda4ecacb621cc6e38897619e27c67 imx-parser-4.3.5.bin +sha256 78696664f7afe7f2b081c99af60082d6403fab935b1b10056ed41aec123ff7fa COPYING +sha256 fc93f26e4197b9240c327ce26ae6e02123f022423d4704c7b0448a37372cf2a2 EULA diff --git a/package/freescale-imx/imx-parser/imx-parser.mk b/package/freescale-imx/imx-parser/imx-parser.mk new file mode 100644 index 00000000..dccb8829 --- /dev/null +++ b/package/freescale-imx/imx-parser/imx-parser.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# imx-parser +# +################################################################################ + +IMX_PARSER_VERSION = 4.3.5 +IMX_PARSER_SITE = $(FREESCALE_IMX_SITE) +IMX_PARSER_SOURCE = imx-parser-$(IMX_PARSER_VERSION).bin +IMX_PARSER_INSTALL_STAGING = YES + +IMX_PARSER_LICENSE = NXP Semiconductor Software License Agreement +IMX_PARSER_LICENSE_FILES = EULA COPYING +IMX_PARSER_REDISTRIBUTE = NO + +ifeq ($(BR2_aarch64),y) +IMX_PARSER_CONF_OPTS += --enable-armv8 +endif + +ifeq ($(BR2_ARM_EABIHF),y) +IMX_PARSER_CONF_OPTS += --enable-fhw +else +IMX_PARSER_CONF_OPTS += --enable-fsw +endif + +define IMX_PARSER_EXTRACT_CMDS + $(call NXP_EXTRACT_HELPER,$(IMX_PARSER_DL_DIR)/$(IMX_PARSER_SOURCE)) +endef + +# The Makefile installs several versions of the libraries, but we only +# need one of them, depending on the platform. + +# Upstream installs libraries into usr/lib/imx-mm, but the dynamic +# loader only looks in usr/lib, so move the libraries there +define IMX_PARSER_FIXUP_TARGET_PATH + find $(TARGET_DIR)/usr/lib/imx-mm -not -type d \ + -exec mv {} $(TARGET_DIR)/usr/lib \; + rm -rf $(TARGET_DIR)/usr/lib/imx-mm +endef +IMX_PARSER_POST_INSTALL_TARGET_HOOKS += IMX_PARSER_FIXUP_TARGET_PATH + +$(eval $(autotools-package)) diff --git a/package/freescale-imx/imx-sc-firmware/Config.in b/package/freescale-imx/imx-sc-firmware/Config.in new file mode 100644 index 00000000..016f9739 --- /dev/null +++ b/package/freescale-imx/imx-sc-firmware/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_IMX_SC_FIRMWARE + bool "imx-sc-firmware" + depends on BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8 || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8DXL + help + System Control Unit Firmware blobs for the Freescale i.MX8 + SoCs. + + This library is provided by Freescale as-is and doesn't have + an upstream. diff --git a/package/freescale-imx/imx-sc-firmware/imx-sc-firmware.hash b/package/freescale-imx/imx-sc-firmware/imx-sc-firmware.hash new file mode 100644 index 00000000..955879eb --- /dev/null +++ b/package/freescale-imx/imx-sc-firmware/imx-sc-firmware.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 23327c38ffc746321697528b2c4c726ed5c3ebadf4b312592d533664719595bd imx-sc-firmware-1.16.0.bin +sha256 165f6c0eacb4d3a05289dfb79331c9a2c05207eb7a67ef28a117f246a0145428 EULA +sha256 c9ee518510d72e254d62743f5098163eacdb6428c6ba4d8119afe2d12edba068 COPYING diff --git a/package/freescale-imx/imx-sc-firmware/imx-sc-firmware.mk b/package/freescale-imx/imx-sc-firmware/imx-sc-firmware.mk new file mode 100644 index 00000000..5c9ec59d --- /dev/null +++ b/package/freescale-imx/imx-sc-firmware/imx-sc-firmware.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# imx-sc-firmware +# +################################################################################ + +IMX_SC_FIRMWARE_VERSION = 1.16.0 +IMX_SC_FIRMWARE_SITE = $(FREESCALE_IMX_SITE) +IMX_SC_FIRMWARE_SOURCE = imx-sc-firmware-$(IMX_SC_FIRMWARE_VERSION).bin + +IMX_SC_FIRMWARE_LICENSE = NXP Semiconductor Software License Agreement +IMX_SC_FIRMWARE_LICENSE_FILES = EULA COPYING +IMX_SC_FIRMWARE_REDISTRIBUTE = NO + +define IMX_SC_FIRMWARE_EXTRACT_CMDS + $(call NXP_EXTRACT_HELPER,$(IMX_SC_FIRMWARE_DL_DIR)/$(IMX_SC_FIRMWARE_SOURCE)) +endef + +IMX_SC_FIRMWARE_INSTALL_IMAGES = YES + +# SCFW firmware is needed when generating imx8-boot-sd.bin which is +# done in post-image script. +ifeq ($(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X),y) +define IMX_SC_FIRMWARE_INSTALL_IMAGES_CMDS + cp $(@D)/mx8qx-mek-scfw-tcm.bin $(BINARIES_DIR)/mx8qx-mek-scfw-tcm.bin + cp $(@D)/mx8qx-val-scfw-tcm.bin $(BINARIES_DIR)/mx8qx-val-scfw-tcm.bin +endef +else ifeq ($(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8DXL),y) +define IMX_SC_FIRMWARE_INSTALL_IMAGES_CMDS + cp $(@D)/mx8dxl-evk-scfw-tcm.bin $(BINARIES_DIR)/ +endef +else ifeq ($(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8),y) +define IMX_SC_FIRMWARE_INSTALL_IMAGES_CMDS + cp $(@D)/mx8qm-*-scfw-tcm.bin $(BINARIES_DIR)/ +endef +endif + +$(eval $(generic-package)) diff --git a/package/freescale-imx/imx-seco/Config.in b/package/freescale-imx/imx-seco/Config.in new file mode 100644 index 00000000..7abdd7eb --- /dev/null +++ b/package/freescale-imx/imx-seco/Config.in @@ -0,0 +1,60 @@ +config BR2_PACKAGE_IMX_SECO + bool "imx-seco" + depends on BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8 || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8DXL + help + Firmware file for the i.MX8 and i.MX8X Security Controller. + + This library is provided by Freescale as-is and doesn't have + an upstream. + +if BR2_PACKAGE_IMX_SECO + +choice + prompt "i.MX Seco Firmware Release" + default BR2_PACKAGE_IMX_SECO_MX8QMB0 if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8 + default BR2_PACKAGE_IMX_SECO_MX8QXC0 if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X + default BR2_PACKAGE_IMX_SECO_MX8DXLB0 if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8DXL + help + Select the appropriate ahab container image to install + to match the iMX asics revision. + + Note - mismatches result in a failure to boot + +config BR2_PACKAGE_IMX_SECO_MX8DXLA0 + bool "imx-seco-mx8dxla0" + depends on BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X + +config BR2_PACKAGE_IMX_SECO_MX8DXLA1 + bool "imx-seco-mx8dxla1" + depends on BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X + +config BR2_PACKAGE_IMX_SECO_MX8DXLB0 + bool "imx-seco-mx8dxlb0" + depends on BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8DXL + +config BR2_PACKAGE_IMX_SECO_MX8QMB0 + bool "imx-seco-mx8qmb0" + depends on BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8 + +config BR2_PACKAGE_IMX_SECO_MX8QXB0 + bool "imx-seco-mx8qxb0" + depends on BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X + +config BR2_PACKAGE_IMX_SECO_MX8QXC0 + bool "imx-seco-mx8qxc0" + depends on BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X + +endchoice + +config BR2_PACKAGE_IMX_SECO_AHAB_CONTAINER_IMAGE + string + default "mx8dxla0-ahab-container.img" if BR2_PACKAGE_IMX_SECO_MX8DXLA0 + default "mx8dxla1-ahab-container.img" if BR2_PACKAGE_IMX_SECO_MX8DXLA1 + default "mx8dxlb0-ahab-container.img" if BR2_PACKAGE_IMX_SECO_MX8DXLB0 + default "mx8qmb0-ahab-container.img" if BR2_PACKAGE_IMX_SECO_MX8QMB0 + default "mx8qxb0-ahab-container.img" if BR2_PACKAGE_IMX_SECO_MX8QXB0 + default "mx8qxc0-ahab-container.img" if BR2_PACKAGE_IMX_SECO_MX8QXC0 + +endif diff --git a/package/freescale-imx/imx-seco/imx-seco.hash b/package/freescale-imx/imx-seco/imx-seco.hash new file mode 100644 index 00000000..a91dbc22 --- /dev/null +++ b/package/freescale-imx/imx-seco/imx-seco.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 9b04be33814a9cbda9bbfcb6711585cf7e4ed2527793813c95230f350323cba7 imx-seco-5.9.4.bin +sha256 165f6c0eacb4d3a05289dfb79331c9a2c05207eb7a67ef28a117f246a0145428 EULA +sha256 c9ee518510d72e254d62743f5098163eacdb6428c6ba4d8119afe2d12edba068 COPYING diff --git a/package/freescale-imx/imx-seco/imx-seco.mk b/package/freescale-imx/imx-seco/imx-seco.mk new file mode 100644 index 00000000..4afac800 --- /dev/null +++ b/package/freescale-imx/imx-seco/imx-seco.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# imx-seco +# +################################################################################ + +IMX_SECO_VERSION = 5.9.4 +IMX_SECO_SITE = $(FREESCALE_IMX_SITE) +IMX_SECO_SOURCE = imx-seco-$(IMX_SECO_VERSION).bin + +IMX_SECO_LICENSE = NXP Semiconductor Software License Agreement +IMX_SECO_LICENSE_FILES = EULA COPYING +IMX_SECO_REDISTRIBUTE = NO + +define IMX_SECO_EXTRACT_CMDS + $(call NXP_EXTRACT_HELPER,$(IMX_SECO_DL_DIR)/$(IMX_SECO_SOURCE)) +endef + +IMX_SECO_INSTALL_IMAGES = YES + +# SECO firmware is needed when generating imx8-boot-sd.bin which +# is done in post-image script. +IMX_SECO_AHAB_CONTAINER_IMAGE = $(call qstrip,$(BR2_PACKAGE_IMX_SECO_AHAB_CONTAINER_IMAGE)) + +define IMX_SECO_INSTALL_IMAGES_CMDS + cp $(@D)/firmware/seco/$(IMX_SECO_AHAB_CONTAINER_IMAGE) \ + $(BINARIES_DIR)/ahab-container.img +endef + +$(eval $(generic-package)) diff --git a/package/freescale-imx/imx-uuc/Config.in b/package/freescale-imx/imx-uuc/Config.in new file mode 100644 index 00000000..6c3d4a63 --- /dev/null +++ b/package/freescale-imx/imx-uuc/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_IMX_UUC + bool "imx-uuc" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_arm || BR2_aarch64 # Only relevant for i.MX + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 # usb_functionfs_descs_head_v2 + select BR2_PACKAGE_HOST_DOSFSTOOLS + help + This package provides the Universal Adapter user-space + utility that is used to receive commands from the + Manufacturing Tool using the Freescale UTP Protocol. + + It requires a Freescale/NXP kernel whose configuration + contains the CONFIG_FSL_UTP option. + + This package is provided by Freescale/NXP as-is and doesn't + have an upstream. + +comment "imx-uuc needs a toolchain w/ threads, headers >= 3.18" + depends on BR2_arm + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 diff --git a/package/freescale-imx/imx-uuc/S80imx-uuc b/package/freescale-imx/imx-uuc/S80imx-uuc new file mode 100644 index 00000000..9a92c983 --- /dev/null +++ b/package/freescale-imx/imx-uuc/S80imx-uuc @@ -0,0 +1,27 @@ +#!/bin/sh + +NAME=uuc +DAEMON=/usr/bin/$NAME + +case "$1" in + start) + printf "Starting $NAME: " + start-stop-daemon -S -q -b -m -p /var/run/${NAME}.pid -x $DAEMON + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping $NAME: " + start-stop-daemon -K -q -p /var/run/${NAME}.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart|reload) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/package/freescale-imx/imx-uuc/imx-uuc.hash b/package/freescale-imx/imx-uuc/imx-uuc.hash new file mode 100644 index 00000000..c41ac57c --- /dev/null +++ b/package/freescale-imx/imx-uuc/imx-uuc.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 7f4d4838d4bf489932ef4a242677db30ad8d9ffd76065e07f4ddee3e6c35db82 imx-uuc-d6afb27e55d73d7ad08cd2dd51c784d8ec9694dc.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/freescale-imx/imx-uuc/imx-uuc.mk b/package/freescale-imx/imx-uuc/imx-uuc.mk new file mode 100644 index 00000000..4e065c19 --- /dev/null +++ b/package/freescale-imx/imx-uuc/imx-uuc.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# imx-uuc +# +################################################################################ + +IMX_UUC_VERSION = d6afb27e55d73d7ad08cd2dd51c784d8ec9694dc +IMX_UUC_SITE = $(call github,NXPmicro,imx-uuc,$(IMX_UUC_VERSION)) +IMX_UUC_LICENSE = GPL-2.0+ +IMX_UUC_LICENSE_FILES = COPYING + +# mkfs.vfat is needed to create a FAT partition used by g_mass_storage +# so Windows do not offer to format the device when connected to the PC. +IMX_UUC_DEPENDENCIES = host-dosfstools + +define IMX_UUC_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define IMX_UUC_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/uuc $(TARGET_DIR)/usr/bin/uuc + $(INSTALL) -D -m 755 $(@D)/sdimage $(TARGET_DIR)/usr/bin/sdimage + $(INSTALL) -D -m 755 $(@D)/ufb $(TARGET_DIR)/usr/bin/ufb + dd if=/dev/zero of=$(TARGET_DIR)/fat bs=1M count=1 + $(HOST_DIR)/sbin/mkfs.vfat $(TARGET_DIR)/fat +endef + +define IMX_UUC_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/freescale-imx/imx-uuc/S80imx-uuc \ + $(TARGET_DIR)/etc/init.d/S80imx-uuc +endef + +define IMX_UUC_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/freescale-imx/imx-uuc/imx-uuc.service \ + $(TARGET_DIR)/usr/lib/systemd/system/imx-uuc.service +endef + +$(eval $(generic-package)) diff --git a/package/freescale-imx/imx-uuc/imx-uuc.service b/package/freescale-imx/imx-uuc/imx-uuc.service new file mode 100644 index 00000000..fae7fc64 --- /dev/null +++ b/package/freescale-imx/imx-uuc/imx-uuc.service @@ -0,0 +1,11 @@ +[Unit] +Description=i.MX Universal UTP Communication Service +After=systemd-modules-load.service + +[Service] +Type=simple +ExecStart=/usr/bin/uuc + +[Install] +WantedBy=multi-user.target + diff --git a/package/freescale-imx/imx-vpu-hantro-daemon/Config.in b/package/freescale-imx/imx-vpu-hantro-daemon/Config.in new file mode 100644 index 00000000..663ed434 --- /dev/null +++ b/package/freescale-imx/imx-vpu-hantro-daemon/Config.in @@ -0,0 +1,17 @@ +comment "imx-vpu-hantro-daemon needs an i.MX-specific Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +comment "imx-vpu-hantro-daemon needs an i.MX platform with Hantro VPU" + depends on BR2_LINUX_KERNEL + depends on !BR2_PACKAGE_FREESCALE_IMX_HAS_VPU_HANTRO + +config BR2_PACKAGE_IMX_VPU_HANTRO_DAEMON + bool "imx-vpu-hantro-daemon" + depends on BR2_LINUX_KERNEL + depends on BR2_PACKAGE_FREESCALE_IMX_HAS_VPU_HANTRO + select BR2_PACKAGE_IMX_VPU_HANTRO + select BR2_PACKAGE_IMX_VPU_HANTRO_VC if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP + help + i.MX Hantro V4L2 Daemon specific for the NXP i.MX SoC + integrating a Hantro Video Processing Unit (VPU) such as the + i.MX8MQ/i.MX8MM/i.MX8MP. diff --git a/package/freescale-imx/imx-vpu-hantro-daemon/imx-vpu-hantro-daemon.hash b/package/freescale-imx/imx-vpu-hantro-daemon/imx-vpu-hantro-daemon.hash new file mode 100644 index 00000000..0fd64cdf --- /dev/null +++ b/package/freescale-imx/imx-vpu-hantro-daemon/imx-vpu-hantro-daemon.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 80d6620063fd5e5506b05c907677b579d471a9b6daa8b26ffb963110cc680bf9 imx-vpu-hantro-daemon-1.1.9.tar.gz +sha256 bb645f02b260955f333348100e40af76253e2cd8b116bac047230439dd53ec5a LICENSE.txt diff --git a/package/freescale-imx/imx-vpu-hantro-daemon/imx-vpu-hantro-daemon.mk b/package/freescale-imx/imx-vpu-hantro-daemon/imx-vpu-hantro-daemon.mk new file mode 100644 index 00000000..12ec055f --- /dev/null +++ b/package/freescale-imx/imx-vpu-hantro-daemon/imx-vpu-hantro-daemon.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# imx-vpu-hantro-daemon +# +################################################################################ + +IMX_VPU_HANTRO_DAEMON_VERSION = 1.1.9 +IMX_VPU_HANTRO_DAEMON_SITE = $(FREESCALE_IMX_SITE) +IMX_VPU_HANTRO_DAEMON_LICENSE = NXP Semiconductor Software License Agreement +IMX_VPU_HANTRO_DAEMON_LICENSE_FILES = LICENSE.txt +IMX_VPU_HANTRO_DAEMON_REDISTRIBUTE = NO +IMX_VPU_HANTRO_DAEMON_DEPENDENCIES = imx-vpu-hantro linux +ifeq ($(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP),y) +IMX_VPU_HANTRO_DAEMON_DEPENDENCIES += imx-vpu-hantro-vc +endif + +IMX_VPU_HANTRO_DAEMON_MAKE_ENV = \ + $(TARGET_MAKE_ENV) \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + SDKTARGETSYSROOT=$(STAGING_DIR) \ + LINUX_KERNEL_ROOT=$(LINUX_DIR) \ + CTRLSW_HDRPATH="$(STAGING_DIR)/usr/include" \ + PLATFORM=$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM) + +define IMX_VPU_HANTRO_DAEMON_BUILD_CMDS + $(MAKE) -C $(@D) $(IMX_VPU_HANTRO_DAEMON_MAKE_ENV) +endef + +define IMX_VPU_HANTRO_DAEMON_INSTALL_TARGET_CMDS + $(IMX_VPU_HANTRO_DAEMON_MAKE_ENV) $(MAKE) -C $(@D) \ + DEST_DIR=$(TARGET_DIR) libdir=/usr/lib install +endef + +$(eval $(generic-package)) diff --git a/package/freescale-imx/imx-vpu-hantro-vc/Config.in b/package/freescale-imx/imx-vpu-hantro-vc/Config.in new file mode 100644 index 00000000..9a0f448b --- /dev/null +++ b/package/freescale-imx/imx-vpu-hantro-vc/Config.in @@ -0,0 +1,14 @@ +comment "imx-vpu-hantro-vc needs an i.MX-specific Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +comment "imx-vpu-hantro-vc needs an i.MX platform with Hantro VPU" + depends on BR2_LINUX_KERNEL + depends on !BR2_PACKAGE_FREESCALE_IMX_HAS_VPU_HANTRO + +config BR2_PACKAGE_IMX_VPU_HANTRO_VC + bool "imx-vpu-hantro-vc" + depends on BR2_LINUX_KERNEL + depends on BR2_PACKAGE_FREESCALE_IMX_HAS_VPU_HANTRO + help + i.MX VC8000E Encoder library. Intended for the i.MX 8M Plus + processor. diff --git a/package/freescale-imx/imx-vpu-hantro-vc/imx-vpu-hantro-vc.hash b/package/freescale-imx/imx-vpu-hantro-vc/imx-vpu-hantro-vc.hash new file mode 100644 index 00000000..7f6193e3 --- /dev/null +++ b/package/freescale-imx/imx-vpu-hantro-vc/imx-vpu-hantro-vc.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 84fcefa0619def2f009ca6651c5cffcda57fed29cd7060ef68be48c5d0d7814b imx-vpu-hantro-vc-1.9.1.bin +sha256 de37a0bcbf1717b910c1a53ea6eab853c404e61e8143bb6c081d39f532571e54 COPYING +sha256 b158adaac5e2d1c7fa6e739ff168ab498957e3303070f1c0b0e66d9a8f02a354 EULA diff --git a/package/freescale-imx/imx-vpu-hantro-vc/imx-vpu-hantro-vc.mk b/package/freescale-imx/imx-vpu-hantro-vc/imx-vpu-hantro-vc.mk new file mode 100644 index 00000000..de88ebf3 --- /dev/null +++ b/package/freescale-imx/imx-vpu-hantro-vc/imx-vpu-hantro-vc.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# imx-vpu-hantro-vc +# +################################################################################ + +IMX_VPU_HANTRO_VC_VERSION = 1.9.1 +IMX_VPU_HANTRO_VC_SITE = $(FREESCALE_IMX_SITE) +IMX_VPU_HANTRO_VC_SOURCE = imx-vpu-hantro-vc-$(IMX_VPU_HANTRO_VC_VERSION).bin +IMX_VPU_HANTRO_VC_DEPENDENCIES = linux +IMX_VPU_HANTRO_VC_INSTALL_STAGING = YES + +IMX_VPU_HANTRO_VC_LICENSE = NXP Semiconductor Software License Agreement +IMX_VPU_HANTRO_VC_LICENSE_FILES = EULA COPYING +IMX_VPU_HANTRO_VC_REDISTRIBUTE = NO + +define IMX_VPU_HANTRO_VC_EXTRACT_CMDS + $(call NXP_EXTRACT_HELPER,$(IMX_VPU_HANTRO_VC_DL_DIR)/$(IMX_VPU_HANTRO_VC_SOURCE)) +endef + +define IMX_VPU_HANTRO_VC_INSTALL_STAGING_CMDS + mkdir -p $(STAGING_DIR)/usr/include/ + cp -dpfr $(@D)/usr/include/hantro_VC8000E_enc/*.h $(STAGING_DIR)/usr/include/ + $(INSTALL) -D -m 0755 $(@D)/usr/lib/libhantro_vc8000e.so $(STAGING_DIR)/usr/lib/libhantro_vc8000e.so + $(INSTALL) -D -m 0755 $(@D)/usr/lib/libhantro_vc8000e.so.1 $(STAGING_DIR)/usr/lib/libhantro_vc8000e.so.1 +endef + +define IMX_VPU_HANTRO_VC_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/usr/lib/libhantro_vc8000e.so $(TARGET_DIR)/usr/lib/libhantro_vc8000e.so + $(INSTALL) -D -m 0755 $(@D)/usr/lib/libhantro_vc8000e.so.1 $(TARGET_DIR)/usr/lib/libhantro_vc8000e.so.1 +endef + +$(eval $(generic-package)) diff --git a/package/freescale-imx/imx-vpu-hantro/0001-Fix-ion.h-header-inclusion-to-be-standard.patch b/package/freescale-imx/imx-vpu-hantro/0001-Fix-ion.h-header-inclusion-to-be-standard.patch new file mode 100644 index 00000000..cdde7d9f --- /dev/null +++ b/package/freescale-imx/imx-vpu-hantro/0001-Fix-ion.h-header-inclusion-to-be-standard.patch @@ -0,0 +1,79 @@ +From dfe8ef9123936d2c1d5da34f63f661849171d5ef Mon Sep 17 00:00:00 2001 +From: Gary Bisson +Date: Sun, 3 Oct 2021 16:39:29 -0700 +Subject: [PATCH] Fix ion.h header inclusion to be standard + +NXP "solution" was to manually copy the header to include/linux. +Let's point the Makefile to the proper (mainline) location instead: +https://elixir.bootlin.com/linux/v4.17/source/drivers/staging/android/uapi/ion.h + +Signed-off-by: Gary Bisson +Signed-off-by: Chris Dimich +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + Makefile_G1G2 | 4 ++-- + Makefile_H1 | 4 ++-- + decoder_sw/software/linux/dwl/dwl_linux.c | 2 +- + h1_encoder/software/linux_reference/ewl/ewl_x280_common.c | 2 +- + 4 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/Makefile_G1G2 b/Makefile_G1G2 +index 8f83391..25884fa 100755 +--- a/Makefile_G1G2 ++++ b/Makefile_G1G2 +@@ -10,8 +10,8 @@ INCLUDE_HEADERS = -I./decoder_sw -I$(SOURCE_ROOT)/source/inc -I$(SOURCE_ROOT)/so + + INCLUDE_HEADERS += -I$(SOURCE_ROOT)/linux/memalloc + #INCLUDE_HEADERS += -I$(SOURCE_ROOT)/linux/ldriver +-#INCLUDE_HEADERS += -I$(LINUX_KERNEL_ROOT)/include/uapi -I$(LINUX_KERNEL_ROOT)/include +-INCLUDE_HEADERS += -I$(SDKTARGETSYSROOT)/usr/include/imx ++INCLUDE_HEADERS += -I$(LINUX_KERNEL_ROOT)/include/uapi -I$(LINUX_KERNEL_ROOT)/include ++INCLUDE_HEADERS += -I$(LINUX_KERNEL_ROOT)/drivers/staging/android/uapi + + CFLAGS += -DDEC_MODULE_PATH=\"/dev/mxc_hantro\" -DUSE_FAKE_RFC_TABLE -DFIFO_DATATYPE=void* -DNDEBUG -DDOWN_SCALER \ + -DUSE_EXTERNAL_BUFFER -DUSE_FAST_EC -DUSE_VP9_EC -DGET_FREE_BUFFER_NON_BLOCK \ +diff --git a/Makefile_H1 b/Makefile_H1 +index 0979571..479940a 100755 +--- a/Makefile_H1 ++++ b/Makefile_H1 +@@ -17,8 +17,8 @@ ENV = -DENC_MODULE_PATH=\\\"/dev/mxc_hantro_h1\\\" + #ENV += -DSDRAM_LM_BASE=0x00000000 + ENV += -DEWL_NO_HW_TIMEOUT + ENV += -DUSE_ION +-#ENV += -I$(LINUX_KERNEL_ROOT)/include/uapi -I$(LINUX_KERNEL_ROOT)/include +-ENV += -I$(SDKTARGETSYSROOT)/usr/include/imx ++ENV += -I$(LINUX_KERNEL_ROOT)/include/uapi -I$(LINUX_KERNEL_ROOT)/include ++ENV += -I$(LINUX_KERNEL_ROOT)/drivers/staging/android/uapi + + ifeq ($(CFG_SECURE_DATA_PATH), y) + ENV += -DCFG_SECURE_DATA_PATH +diff --git a/decoder_sw/software/linux/dwl/dwl_linux.c b/decoder_sw/software/linux/dwl/dwl_linux.c +index 7d5e33b..c0e5727 100755 +--- a/decoder_sw/software/linux/dwl/dwl_linux.c ++++ b/decoder_sw/software/linux/dwl/dwl_linux.c +@@ -50,7 +50,7 @@ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0) || defined(ENABLE_DMABUF_HEAP) + #include + #else +-#include ++#include + #endif + #ifdef ANDROID + #if !defined(ENABLE_DMABUF_HEAP) +diff --git a/h1_encoder/software/linux_reference/ewl/ewl_x280_common.c b/h1_encoder/software/linux_reference/ewl/ewl_x280_common.c +index 312e4cc..70630c3 100755 +--- a/h1_encoder/software/linux_reference/ewl/ewl_x280_common.c ++++ b/h1_encoder/software/linux_reference/ewl/ewl_x280_common.c +@@ -51,7 +51,7 @@ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0) || defined(ENABLE_DMABUF_HEAP) + #include + #else +-#include ++#include + #endif + #include + #include +-- +2.31.1 + diff --git a/package/freescale-imx/imx-vpu-hantro/0002-Fix-build-with-uclibc-toolchain.patch b/package/freescale-imx/imx-vpu-hantro/0002-Fix-build-with-uclibc-toolchain.patch new file mode 100644 index 00000000..eb18043c --- /dev/null +++ b/package/freescale-imx/imx-vpu-hantro/0002-Fix-build-with-uclibc-toolchain.patch @@ -0,0 +1,51 @@ +From 4f51b0a6b9a36cc56fa06eb0f76596d8e387f980 Mon Sep 17 00:00:00 2001 +From: Gary Bisson +Date: Fri, 27 Mar 2020 23:17:30 +0100 +Subject: [PATCH] Fix build with uclibc toolchain + +From: Laurent Gauthier (OSS) + +By default, backtrace support is disabled in uclibc. In that case the +execinfo.h header file is missing, producing a build error. + +Signed-off-by: Laurent Gauthier (OSS) +Signed-off-by: Gary Bisson +--- + openmax_il/source/dbgmacros.h | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/openmax_il/source/dbgmacros.h b/openmax_il/source/dbgmacros.h +index 3771c91..37ae09f 100755 +--- a/openmax_il/source/dbgmacros.h ++++ b/openmax_il/source/dbgmacros.h +@@ -50,13 +50,6 @@ + # define __USE_GNU + #endif + +-#ifndef ANDROID +-#include +-#include +-#endif +-#include +-#include +- + /***************** + ** DEBUG FLAGS ** + *****************/ +@@ -76,6 +69,13 @@ + #define TRACE_FILE "trace.log" + #endif + ++#ifndef ANDROID ++#include ++#include ++#endif ++#include ++#include ++ + #ifdef LOG_IN_FILE + #define TRACE(...) \ + { \ +-- +2.25.1 + diff --git a/package/freescale-imx/imx-vpu-hantro/0003-Fix-Linux-kernel-version-header.patch b/package/freescale-imx/imx-vpu-hantro/0003-Fix-Linux-kernel-version-header.patch new file mode 100644 index 00000000..427ebeb3 --- /dev/null +++ b/package/freescale-imx/imx-vpu-hantro/0003-Fix-Linux-kernel-version-header.patch @@ -0,0 +1,45 @@ +From 73cd57c18066ff863335a8616d0b348541d26118 Mon Sep 17 00:00:00 2001 +From: Gary Bisson +Date: Tue, 15 Nov 2022 21:43:47 +0100 +Subject: [PATCH] Fix Linux kernel version header + +- Up to kernel 5.10, NXP was using ION for memory management +- Starting with 5.15 kernels, NXP uses DMABUF and the ION header is no + longer in the kernel +- So keep the previous patch for people using kernel <= 5.10 +- Add path to the version.h header as imx-vpu-hantro will only include + ion.h depending on the kernel version + +Signed-off-by: Gary Bisson +--- + Makefile_G1G2 | 1 + + Makefile_H1 | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/Makefile_G1G2 b/Makefile_G1G2 +index 25884fa..8e03e91 100755 +--- a/Makefile_G1G2 ++++ b/Makefile_G1G2 +@@ -11,6 +11,7 @@ INCLUDE_HEADERS = -I./decoder_sw -I$(SOURCE_ROOT)/source/inc -I$(SOURCE_ROOT)/so + INCLUDE_HEADERS += -I$(SOURCE_ROOT)/linux/memalloc + #INCLUDE_HEADERS += -I$(SOURCE_ROOT)/linux/ldriver + INCLUDE_HEADERS += -I$(LINUX_KERNEL_ROOT)/include/uapi -I$(LINUX_KERNEL_ROOT)/include ++INCLUDE_HEADERS += -I$(LINUX_KERNEL_ROOT)/include/generated/uapi + INCLUDE_HEADERS += -I$(LINUX_KERNEL_ROOT)/drivers/staging/android/uapi + + CFLAGS += -DDEC_MODULE_PATH=\"/dev/mxc_hantro\" -DUSE_FAKE_RFC_TABLE -DFIFO_DATATYPE=void* -DNDEBUG -DDOWN_SCALER \ +diff --git a/Makefile_H1 b/Makefile_H1 +index 479940a..7ac6f8d 100755 +--- a/Makefile_H1 ++++ b/Makefile_H1 +@@ -18,6 +18,7 @@ ENV = -DENC_MODULE_PATH=\\\"/dev/mxc_hantro_h1\\\" + ENV += -DEWL_NO_HW_TIMEOUT + ENV += -DUSE_ION + ENV += -I$(LINUX_KERNEL_ROOT)/include/uapi -I$(LINUX_KERNEL_ROOT)/include ++ENV += -I$(LINUX_KERNEL_ROOT)/include/generated/uapi + ENV += -I$(LINUX_KERNEL_ROOT)/drivers/staging/android/uapi + + ifeq ($(CFG_SECURE_DATA_PATH), y) +-- +2.35.1 + diff --git a/package/freescale-imx/imx-vpu-hantro/Config.in b/package/freescale-imx/imx-vpu-hantro/Config.in new file mode 100644 index 00000000..25ce50ff --- /dev/null +++ b/package/freescale-imx/imx-vpu-hantro/Config.in @@ -0,0 +1,20 @@ +comment "imx-vpu-hantro needs an i.MX-specific Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +comment "imx-vpu-hantro needs an i.MX platform with Hantro VPU" + depends on BR2_LINUX_KERNEL + depends on !BR2_PACKAGE_FREESCALE_IMX_HAS_VPU_HANTRO + +config BR2_PACKAGE_IMX_VPU_HANTRO + bool "imx-vpu-hantro" + depends on BR2_LINUX_KERNEL + depends on BR2_PACKAGE_FREESCALE_IMX_HAS_VPU_HANTRO + help + Library of userspace helpers specific for the NXP i.MX SoC + integrating a Hantro Video Processing Unit (VPU) such as the + i.MX8MQ/i.MX8MM. + It requires a kernel that includes the i.MX specific headers + to be built. + + This library is provided by NXP as-is and doesn't have an + upstream. diff --git a/package/freescale-imx/imx-vpu-hantro/imx-vpu-hantro.hash b/package/freescale-imx/imx-vpu-hantro/imx-vpu-hantro.hash new file mode 100644 index 00000000..069700fc --- /dev/null +++ b/package/freescale-imx/imx-vpu-hantro/imx-vpu-hantro.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 21fb3288f6f44631ebf6479284c5c081ff829a3068811eebbacc510f14300ab4 imx-vpu-hantro-1.31.0.bin +sha256 24d7cb3a7e51011466a149bd99acf89387b832be2d0890ce2e183dfbc9d7cb84 COPYING +sha256 3282d88fad766897f93b0827297a70c2707d9358db24cccd5777abf7c997da77 EULA diff --git a/package/freescale-imx/imx-vpu-hantro/imx-vpu-hantro.mk b/package/freescale-imx/imx-vpu-hantro/imx-vpu-hantro.mk new file mode 100644 index 00000000..64df16e2 --- /dev/null +++ b/package/freescale-imx/imx-vpu-hantro/imx-vpu-hantro.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# imx-vpu-hantro +# +################################################################################ + +IMX_VPU_HANTRO_VERSION = 1.31.0 +IMX_VPU_HANTRO_SITE = $(FREESCALE_IMX_SITE) +IMX_VPU_HANTRO_SOURCE = imx-vpu-hantro-$(IMX_VPU_HANTRO_VERSION).bin +IMX_VPU_HANTRO_DEPENDENCIES = linux +IMX_VPU_HANTRO_INSTALL_STAGING = YES + +IMX_VPU_HANTRO_MAKE_ENV = \ + $(TARGET_MAKE_ENV) \ + $(TARGET_CONFIGURE_OPTS) \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + SDKTARGETSYSROOT=$(STAGING_DIR) \ + LINUX_KERNEL_ROOT=$(LINUX_DIR) \ + PLATFORM=$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM) + +IMX_VPU_HANTRO_LICENSE = NXP Semiconductor Software License Agreement +IMX_VPU_HANTRO_LICENSE_FILES = EULA COPYING +IMX_VPU_HANTRO_REDISTRIBUTE = NO + +define IMX_VPU_HANTRO_EXTRACT_CMDS + $(call NXP_EXTRACT_HELPER,$(IMX_VPU_HANTRO_DL_DIR)/$(IMX_VPU_HANTRO_SOURCE)) +endef + +define IMX_VPU_HANTRO_BUILD_CMDS + $(IMX_VPU_HANTRO_MAKE_ENV) $(MAKE1) -C $(@D) +endef + +define IMX_VPU_HANTRO_INSTALL_STAGING_CMDS + $(IMX_VPU_HANTRO_MAKE_ENV) $(MAKE1) -C $(@D) \ + DEST_DIR=$(STAGING_DIR) libdir=/usr/lib install +endef + +define IMX_VPU_HANTRO_INSTALL_TARGET_CMDS + $(IMX_VPU_HANTRO_MAKE_ENV) $(MAKE1) -C $(@D) \ + DEST_DIR=$(TARGET_DIR) libdir=/usr/lib install +endef + +$(eval $(generic-package)) diff --git a/package/freescale-imx/imx-vpu/Config.in b/package/freescale-imx/imx-vpu/Config.in new file mode 100644 index 00000000..dd3507eb --- /dev/null +++ b/package/freescale-imx/imx-vpu/Config.in @@ -0,0 +1,14 @@ +comment "imx-vpu needs an i.MX platform with VPU support" + depends on !BR2_PACKAGE_FREESCALE_IMX_HAS_VPU + +config BR2_PACKAGE_IMX_VPU + bool "imx-vpu" + depends on BR2_PACKAGE_FREESCALE_IMX_HAS_VPU + select BR2_PACKAGE_FIRMWARE_IMX + help + Library of userspace helpers specific for the NXP i.MX SoC + integrating a Chips&Media CODA Video Processing Unit (VPU) + such as the i.MX27/i.MX5x/i.MX6x. + + This library is provided by NXP as-is and doesn't have an + upstream. diff --git a/package/freescale-imx/imx-vpu/imx-vpu.hash b/package/freescale-imx/imx-vpu/imx-vpu.hash new file mode 100644 index 00000000..e3a53e3f --- /dev/null +++ b/package/freescale-imx/imx-vpu/imx-vpu.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 87cb799a57df654db29403cb74a75ca5185a1517022d3a4a16b8d69056c36127 imx-vpu-5.4.39.3.bin +sha256 2ceab29de5ea533b86f570bcc4e9ddbfb5fe85a1da4978a8613ff3fd9bed781d COPYING +sha256 7ffad92e72e5f6b23027e7cf93a770a4acef00a92dcf79f22701ed401c5478c0 EULA diff --git a/package/freescale-imx/imx-vpu/imx-vpu.mk b/package/freescale-imx/imx-vpu/imx-vpu.mk new file mode 100644 index 00000000..cae3d88b --- /dev/null +++ b/package/freescale-imx/imx-vpu/imx-vpu.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# imx-vpu +# +################################################################################ + +IMX_VPU_VERSION = 5.4.39.3 +IMX_VPU_SITE = $(FREESCALE_IMX_SITE) +IMX_VPU_SOURCE = imx-vpu-$(IMX_VPU_VERSION).bin + +IMX_VPU_INSTALL_STAGING = YES + +IMX_VPU_MAKE_ENV = \ + $(TARGET_MAKE_ENV) \ + $(TARGET_CONFIGURE_OPTS) \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + PLATFORM=$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM) + +IMX_VPU_LICENSE = NXP Semiconductor Software License Agreement +IMX_VPU_LICENSE_FILES = EULA COPYING +IMX_VPU_REDISTRIBUTE = NO + +define IMX_VPU_EXTRACT_CMDS + $(call NXP_EXTRACT_HELPER,$(IMX_VPU_DL_DIR)/$(IMX_VPU_SOURCE)) +endef + +define IMX_VPU_BUILD_CMDS + $(IMX_VPU_MAKE_ENV) $(MAKE1) -C $(@D) +endef + +define IMX_VPU_INSTALL_STAGING_CMDS + $(IMX_VPU_MAKE_ENV) $(MAKE1) -C $(@D) DEST_DIR=$(STAGING_DIR) install +endef + +define IMX_VPU_INSTALL_TARGET_CMDS + $(IMX_VPU_MAKE_ENV) $(MAKE1) -C $(@D) DEST_DIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/freescale-imx/imx-vpuwrap/Config.in b/package/freescale-imx/imx-vpuwrap/Config.in new file mode 100644 index 00000000..8a9bf0e3 --- /dev/null +++ b/package/freescale-imx/imx-vpuwrap/Config.in @@ -0,0 +1,19 @@ +comment "imx-vpuwrap needs an imx-specific Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +comment "imx-vpuwrap needs an i.MX platform with VPU support" + depends on BR2_LINUX_KERNEL + depends on !BR2_PACKAGE_FREESCALE_IMX_HAS_VPU && !BR2_PACKAGE_FREESCALE_IMX_HAS_VPU_HANTRO + +config BR2_PACKAGE_IMX_VPUWRAP + bool "imx-vpuwrap" + depends on BR2_LINUX_KERNEL + depends on BR2_PACKAGE_FREESCALE_IMX_HAS_VPU || BR2_PACKAGE_FREESCALE_IMX_HAS_VPU_HANTRO + select BR2_PACKAGE_IMX_VPU if BR2_PACKAGE_FREESCALE_IMX_HAS_VPU + select BR2_PACKAGE_IMX_VPU_HANTRO if BR2_PACKAGE_FREESCALE_IMX_HAS_VPU_HANTRO + help + Wrapper library for the vpu library, giving it a different + API. + + This library is provided by NXP as-is and doesn't have + an upstream. diff --git a/package/freescale-imx/imx-vpuwrap/imx-vpuwrap.hash b/package/freescale-imx/imx-vpuwrap/imx-vpuwrap.hash new file mode 100644 index 00000000..7a640374 --- /dev/null +++ b/package/freescale-imx/imx-vpuwrap/imx-vpuwrap.hash @@ -0,0 +1,4 @@ +# locally computed +sha256 5c08b4b7c771404c998779f0e27a75564b57958d463e2df152c910d76cca9e44 imx-vpuwrap-4.3.5.bin +sha256 78696664f7afe7f2b081c99af60082d6403fab935b1b10056ed41aec123ff7fa COPYING +sha256 fc93f26e4197b9240c327ce26ae6e02123f022423d4704c7b0448a37372cf2a2 EULA diff --git a/package/freescale-imx/imx-vpuwrap/imx-vpuwrap.mk b/package/freescale-imx/imx-vpuwrap/imx-vpuwrap.mk new file mode 100644 index 00000000..4bee1cf6 --- /dev/null +++ b/package/freescale-imx/imx-vpuwrap/imx-vpuwrap.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# imx-vpuwrap +# +################################################################################ + +IMX_VPUWRAP_VERSION = 4.3.5 +IMX_VPUWRAP_SITE = $(FREESCALE_IMX_SITE) +IMX_VPUWRAP_SOURCE = imx-vpuwrap-$(IMX_VPUWRAP_VERSION).bin +IMX_VPUWRAP_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_IMX_VPU),y) +IMX_VPUWRAP_DEPENDENCIES += imx-vpu +endif + +ifeq ($(BR2_PACKAGE_IMX_VPU_HANTRO),y) +IMX_VPUWRAP_DEPENDENCIES += imx-vpu-hantro +endif + +IMX_VPUWRAP_LICENSE = NXP Semiconductor Software License Agreement +IMX_VPUWRAP_LICENSE_FILES = EULA COPYING +IMX_VPUWRAP_REDISTRIBUTE = NO + +define IMX_VPUWRAP_EXTRACT_CMDS + $(call NXP_EXTRACT_HELPER,$(IMX_VPUWRAP_DL_DIR)/$(IMX_VPUWRAP_SOURCE)) +endef + +$(eval $(autotools-package)) diff --git a/package/freescale-imx/kernel-module-imx-gpu-viv/Config.in b/package/freescale-imx/kernel-module-imx-gpu-viv/Config.in new file mode 100644 index 00000000..4cea37a4 --- /dev/null +++ b/package/freescale-imx/kernel-module-imx-gpu-viv/Config.in @@ -0,0 +1,16 @@ +comment "kernel-module-imx-gpu-viv needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_KERNEL_MODULE_IMX_GPU_VIV + bool "kernel-module-imx-gpu-viv" + depends on BR2_LINUX_KERNEL + help + Kernel loadable module for Vivante GPU. + + This package uses an exact copy of the GPU kernel driver + source code of the same version as base and include fixes + and improvements developed by FSL Community. + + This module is only meant for NXP-based kernel. + + https://github.com/Freescale/kernel-module-imx-gpu-viv diff --git a/package/freescale-imx/kernel-module-imx-gpu-viv/kernel-module-imx-gpu-viv.hash b/package/freescale-imx/kernel-module-imx-gpu-viv/kernel-module-imx-gpu-viv.hash new file mode 100644 index 00000000..1a1e89b9 --- /dev/null +++ b/package/freescale-imx/kernel-module-imx-gpu-viv/kernel-module-imx-gpu-viv.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 b174a79042266b5d36c03f7db12036c93acd546f996367dd33233581e64857bb kernel-module-imx-gpu-viv-4d035200e7b15d2713d49979a1d05f201b92cf4c.tar.gz +sha256 b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259 COPYING diff --git a/package/freescale-imx/kernel-module-imx-gpu-viv/kernel-module-imx-gpu-viv.mk b/package/freescale-imx/kernel-module-imx-gpu-viv/kernel-module-imx-gpu-viv.mk new file mode 100644 index 00000000..d87f5750 --- /dev/null +++ b/package/freescale-imx/kernel-module-imx-gpu-viv/kernel-module-imx-gpu-viv.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# kernel-module-imx-gpu-viv +# +################################################################################ + +KERNEL_MODULE_IMX_GPU_VIV_VERSION = 4d035200e7b15d2713d49979a1d05f201b92cf4c +KERNEL_MODULE_IMX_GPU_VIV_SITE = \ + $(call github,Freescale,kernel-module-imx-gpu-viv,$(KERNEL_MODULE_IMX_GPU_VIV_VERSION)) +KERNEL_MODULE_IMX_GPU_VIV_LICENSE = GPL-2.0 +KERNEL_MODULE_IMX_GPU_VIV_LICENSE_FILES = COPYING + +KERNEL_MODULE_IMX_GPU_VIV_MODULE_MAKE_OPTS = \ + AQROOT=$(@D)/kernel-module-imx-gpu-viv-src \ + KERNEL_DIR=$(LINUX_DIR) + +KERNEL_MODULE_IMX_GPU_VIV_MODULE_SUBDIRS = kernel-module-imx-gpu-viv-src + +define KERNEL_MODULE_IMX_GPU_VIV_LINUX_CONFIG_FIXUPS + $(call KCONFIG_DISABLE_OPT,CONFIG_MXC_GPU_VIV) +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/freescale-imx/libz160/Config.in b/package/freescale-imx/libz160/Config.in new file mode 100644 index 00000000..a40ecdc7 --- /dev/null +++ b/package/freescale-imx/libz160/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBZ160 + bool "libz160" + depends on BR2_ARM_EABI + depends on BR2_TOOLCHAIN_USES_GLIBC + help + An API for user space programs to perform 2D accelerated + graphics operations on AMD GPU (included for examples in + iMX5x chipsets) + +comment "libz160 needs an EABI toolchain w/ glibc" + depends on !BR2_ARM_EABI || !BR2_TOOLCHAIN_USES_GLIBC diff --git a/package/freescale-imx/libz160/libz160.hash b/package/freescale-imx/libz160/libz160.hash new file mode 100644 index 00000000..75f266e3 --- /dev/null +++ b/package/freescale-imx/libz160/libz160.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 08767eb269a0a30ca0aa3d3b5aa9a53a2d17ed1c24651b7e8cefc7704b883f19 libz160-bin-11.09.01.bin +sha256 6d7a2fefc2f7ce888f9eb74919b852aed5a1087b2e84345be90cadbebe1b6578 EULA diff --git a/package/freescale-imx/libz160/libz160.mk b/package/freescale-imx/libz160/libz160.mk new file mode 100644 index 00000000..a15b5f6b --- /dev/null +++ b/package/freescale-imx/libz160/libz160.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# libz160 +# +################################################################################ + +LIBZ160_VERSION = 11.09.01 +LIBZ160_SOURCE = libz160-bin-$(LIBZ160_VERSION).bin +LIBZ160_SITE = $(FREESCALE_IMX_SITE) +LIBZ160_INSTALL_STAGING = YES + +# See freescale-imx +LIBZ160_LICENSE = Freescale Semiconductor Software License Agreement +LIBZ160_LICENSE_FILES = EULA +LIBZ160_REDISTRIBUTE = NO + +define LIBZ160_EXTRACT_CMDS + $(call NXP_EXTRACT_HELPER,$(LIBZ160_DL_DIR)/$(LIBZ160_SOURCE)) +endef + +define LIBZ160_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 755 $(@D)/usr/lib/libz160.so $(STAGING_DIR)/usr/lib/libz160.so + $(INSTALL) -D -m 644 $(@D)/usr/include/z160.h $(STAGING_DIR)/usr/include/z160.h +endef + +define LIBZ160_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/usr/lib/libz160.so $(TARGET_DIR)/usr/lib/libz160.so +endef + +$(eval $(generic-package)) diff --git a/package/freeswitch-mod-bcg729/Config.in b/package/freeswitch-mod-bcg729/Config.in new file mode 100644 index 00000000..e75e2acb --- /dev/null +++ b/package/freeswitch-mod-bcg729/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_FREESWITCH_MOD_BCG729 + bool "freeswitch-mod-bcg729" + depends on BR2_PACKAGE_FREESWITCH + depends on !BR2_STATIC_LIBS # freeswitch + select BR2_PACKAGE_BCG729 + help + FreeSWITCH G.729A module using the opensource bcg729 + implementation by Belledonne Communications. + + https://github.com/xadhoom/mod_bcg729 diff --git a/package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.hash b/package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.hash new file mode 100644 index 00000000..d7fb58fb --- /dev/null +++ b/package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 ada0640094b5b3b4a767ec360213bfed624e698c9932b2f9ceb76eb1c0f5a246 freeswitch-mod-bcg729-1.0.5.tar.gz +sha256 bb4680b13c3190429464a8308a07d7d891e6454349fb7be856e02405b25b1195 LICENSE diff --git a/package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.mk b/package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.mk new file mode 100644 index 00000000..d820756c --- /dev/null +++ b/package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# freeswitch-mod-bcg729 +# +################################################################################ + +FREESWITCH_MOD_BCG729_VERSION = 1.0.5 +FREESWITCH_MOD_BCG729_SITE = $(call github,xadhoom,mod_bcg729,v$(FREESWITCH_MOD_BCG729_VERSION)) +FREESWITCH_MOD_BCG729_LICENSE = MPL-1.1 +FREESWITCH_MOD_BCG729_LICENSE_FILES = LICENSE +FREESWITCH_MOD_BCG729_DEPENDENCIES = freeswitch bcg729 + +# instead of patching the not cross-compile friendly Makefile from +# upstream we issue the necessary build commands ourselves +define FREESWITCH_MOD_BCG729_BUILD_CMDS + $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) \ + -I$(STAGING_DIR)/usr/include/freeswitch \ + -fPIC -fomit-frame-pointer -fno-exceptions \ + -c $(@D)/mod_bcg729.c -o $(@D)/mod_bcg729.o + $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) \ + -fPIC -fomit-frame-pointer -fno-exceptions \ + -shared -Xlinker -x -lm -lbcg729 -Wl,-Bdynamic \ + -o $(@D)/mod_bcg729.so $(@D)/mod_bcg729.o +endef + +define FREESWITCH_MOD_BCG729_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 $(@D)/mod_bcg729.so $(TARGET_DIR)/usr/lib/freeswitch/mod/mod_bcg729.so +endef + +$(eval $(generic-package)) diff --git a/package/freeswitch/0001-libs-srtp-crypto-hash-hmac_ossl.c-fix-build-with-lib.patch b/package/freeswitch/0001-libs-srtp-crypto-hash-hmac_ossl.c-fix-build-with-lib.patch new file mode 100644 index 00000000..eb717fc2 --- /dev/null +++ b/package/freeswitch/0001-libs-srtp-crypto-hash-hmac_ossl.c-fix-build-with-lib.patch @@ -0,0 +1,59 @@ +From c8cc6f1773ff370bb14bb963e2f632eef6d6a3c2 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 12 May 2022 23:22:42 +0200 +Subject: [PATCH] libs/srtp/crypto/hash/hmac_ossl.c: fix build with libressl >= + 3.5.0 + +Fix the following build failure with libressl >= 3.5.0: + +crypto/hash/hmac_ossl.c: In function 'srtp_hmac_alloc': +crypto/hash/hmac_ossl.c:88:55: error: invalid application of 'sizeof' to incomplete type 'HMAC_CTX' {aka 'struct hmac_ctx_st'} + 88 | pointer = (uint8_t *)srtp_crypto_alloc(sizeof(HMAC_CTX) + + | ^~~~~~~~ +crypto/hash/hmac_ossl.c:97:9: warning: implicit declaration of function 'HMAC_CTX_init'; did you mean 'HMAC_CTX_new'? [-Wimplicit-function-declaration] + 97 | HMAC_CTX_init(new_hmac_ctx); + | ^~~~~~~~~~~~~ + | HMAC_CTX_new +crypto/hash/hmac_ossl.c: In function 'srtp_hmac_dealloc': +crypto/hash/hmac_ossl.c:130:5: warning: implicit declaration of function 'HMAC_CTX_cleanup' [-Wimplicit-function-declaration] + 130 | HMAC_CTX_cleanup(hmac_ctx); + | ^~~~~~~~~~~~~~~~ +crypto/hash/hmac_ossl.c:133:40: error: invalid application of 'sizeof' to incomplete type 'HMAC_CTX' {aka 'struct hmac_ctx_st'} + 133 | octet_string_set_to_zero(a, sizeof(HMAC_CTX) + sizeof(srtp_auth_t)); + | ^~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/e696ead9ffffa5bb80928d75607bfbb9b263d3c6 + +Signed-off-by: Fabrice Fontaine +--- + libs/srtp/crypto/hash/hmac_ossl.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/libs/srtp/crypto/hash/hmac_ossl.c b/libs/srtp/crypto/hash/hmac_ossl.c +index 8146438b05..6730cbb35c 100644 +--- a/libs/srtp/crypto/hash/hmac_ossl.c ++++ b/libs/srtp/crypto/hash/hmac_ossl.c +@@ -79,7 +79,8 @@ static srtp_err_status_t srtp_hmac_alloc(srtp_auth_t **a, + + /* OpenSSL 1.1.0 made HMAC_CTX an opaque structure, which must be allocated + using HMAC_CTX_new. But this function doesn't exist in OpenSSL 1.0.x. */ +-#if OPENSSL_VERSION_NUMBER < 0x10100000L || LIBRESSL_VERSION_NUMBER ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || \ ++ (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x30500000L) + { + /* allocate memory for auth and HMAC_CTX structures */ + uint8_t *pointer; +@@ -125,7 +126,8 @@ static srtp_err_status_t srtp_hmac_dealloc(srtp_auth_t *a) + + hmac_ctx = (HMAC_CTX *)a->state; + +-#if OPENSSL_VERSION_NUMBER < 0x10100000L || LIBRESSL_VERSION_NUMBER ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || \ ++ (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x30500000L) + HMAC_CTX_cleanup(hmac_ctx); + + /* zeroize entire state*/ +-- +2.35.1 + diff --git a/package/freeswitch/0002-mod_av-fix-build-with-ffmpeg-6.0.patch b/package/freeswitch/0002-mod_av-fix-build-with-ffmpeg-6.0.patch new file mode 100644 index 00000000..bd38d76d --- /dev/null +++ b/package/freeswitch/0002-mod_av-fix-build-with-ffmpeg-6.0.patch @@ -0,0 +1,48 @@ +From 2e75bb8b2c7f70c5d16c9e3d14b1427f4eb80c9c Mon Sep 17 00:00:00 2001 +From: Korynkai +Date: Thu, 17 Aug 2023 21:10:31 +0200 +Subject: [PATCH] mod_av: fix build with ffmpeg 6.0 + +Upstream: https://github.com/signalwire/freeswitch/issues/2202 + +Signed-off-by: Bernd Kuhls +--- + src/mod/applications/mod_av/avformat.c | 2 ++ + src/mod/applications/mod_av/mod_av.h | 1 + + 2 files changed, 3 insertions(+) + +diff --git a/src/mod/applications/mod_av/avformat.c b/src/mod/applications/mod_av/avformat.c +index 69475c169f..0a1662aed6 100644 +--- a/src/mod/applications/mod_av/avformat.c ++++ b/src/mod/applications/mod_av/avformat.c +@@ -455,6 +455,7 @@ static int mod_avformat_alloc_output_context2(AVFormatContext **avctx, const cha + } + + s->oformat = oformat; ++#if (LIBAVFORMAT_VERSION_MAJOR < LIBAVFORMAT_N) + if (s->oformat->priv_data_size > 0) { + s->priv_data = av_mallocz(s->oformat->priv_data_size); + if (!s->priv_data) { +@@ -468,6 +469,7 @@ static int mod_avformat_alloc_output_context2(AVFormatContext **avctx, const cha + } else { + s->priv_data = NULL; + } ++#endif + + if (filename) { + #if (LIBAVCODEC_VERSION_INT < AV_VERSION_INT(58,7,100)) +diff --git a/src/mod/applications/mod_av/mod_av.h b/src/mod/applications/mod_av/mod_av.h +index a89e6cb8f7..ef9bd48d73 100644 +--- a/src/mod/applications/mod_av/mod_av.h ++++ b/src/mod/applications/mod_av/mod_av.h +@@ -42,6 +42,7 @@ + + #define LIBAVCODEC_V 59 + #define LIBAVFORMAT_V 59 ++#define LIBAVFORMAT_N 60 + #define LIBAVUTIL_V 57 + + struct mod_av_globals { +-- +2.39.2 + diff --git a/package/freeswitch/Config.in b/package/freeswitch/Config.in new file mode 100644 index 00000000..80d18e06 --- /dev/null +++ b/package/freeswitch/Config.in @@ -0,0 +1,39 @@ +config BR2_PACKAGE_FREESWITCH + bool "freeswitch" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS # apr, included in freeswitch source + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # apr, included in freeswitch source + depends on BR2_USE_WCHAR # uses wchar_t + select BR2_PACKAGE_FFMPEG_SWSCALE if BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_JPEG + # src/mod/applications/mod_cv/mod_cv.cpp includes + # highgui.h, imgproc.hpp & objdetect.hpp + select BR2_PACKAGE_OPENCV3_LIB_HIGHGUI if BR2_PACKAGE_OPENCV3 + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC if BR2_PACKAGE_OPENCV3 + select BR2_PACKAGE_OPENCV3_LIB_OBJDETECT if BR2_PACKAGE_OPENCV3 + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_PCRE + select BR2_PACKAGE_SOFIA_SIP + select BR2_PACKAGE_SPANDSP + select BR2_PACKAGE_SPEEX + select BR2_PACKAGE_SPEEXDSP + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_TIFF + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_ZLIB + help + FreeSWITCH is a scalable open source cross-platform + telephony platform designed to route and interconnect + popular communication protocols using audio, video, text or + any other form of media. + + https://www.freeswitch.org + +comment "freeswitch needs a toolchain w/ C++, dynamic library, threads, wchar" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/package/freeswitch/freeswitch.hash b/package/freeswitch/freeswitch.hash new file mode 100644 index 00000000..9c6fb615 --- /dev/null +++ b/package/freeswitch/freeswitch.hash @@ -0,0 +1,10 @@ +# From https://files.freeswitch.org/freeswitch-releases/freeswitch-1.10.12.-release.tar.xz.sha256 +sha256 e324e4ae063e692c42b93031157329bae339ea007e611d3535333deaed85aa47 freeswitch-1.10.12.-release.tar.xz +# Locally computed +sha256 75c933202f40939cdc3827fce20a1efdaa38291e2b5a65d234eb16e2cffda66a COPYING +sha256 c3e3388768dae8bf4edcc4108f95be815b8a05c0b0aef6e4c3d8df81affdfa34 docs/OPENH264_BINARY_LICENSE.txt +sha256 e8e26b16da14aa3e6ed5c22c705fdc1f45d6225fca461ea9f7314bcdfdc414c4 libs/apr/LICENSE +sha256 8267348d5af1262c11d1a08de2f5afc77457755f1ac658627dd9acf71011d615 libs/libvpx/LICENSE +sha256 2b2cc1180c7e6988328ad2033b04b80117419db9c4c584918bbb3cfec7e9364f libs/libyuv/LICENSE +sha256 8e19d42a1eec9561f3f347253ddf2e385c55f392f025bb0fd41b88dbf38db5ae libs/srtp/LICENSE +sha256 ab00a482b6a3902e40211b43c5d0441962ea99b6cc7c25c0f243fa270b78d482 src/mod/codecs/mod_isac/LICENSE diff --git a/package/freeswitch/freeswitch.mk b/package/freeswitch/freeswitch.mk new file mode 100644 index 00000000..bef25236 --- /dev/null +++ b/package/freeswitch/freeswitch.mk @@ -0,0 +1,350 @@ +################################################################################ +# +# freeswitch +# +################################################################################ + +FREESWITCH_VERSION = 1.10.12 +FREESWITCH_SOURCE = freeswitch-$(FREESWITCH_VERSION).-release.tar.xz +FREESWITCH_SITE = https://files.freeswitch.org/freeswitch-releases +# External modules need headers/libs from staging +FREESWITCH_INSTALL_STAGING = YES +FREESWITCH_LICENSE = MPL-1.1, \ + GPL-3.0+ with font exception (fonts), \ + Apache-2.0 (apr), \ + BSD-3-Clause (libsrtp) + +FREESWITCH_LICENSE_FILES = \ + COPYING \ + libs/apr/LICENSE \ + libs/srtp/LICENSE + +FREESWITCH_CPE_ID_VENDOR = freeswitch + +# required dependencies +FREESWITCH_DEPENDENCIES = \ + host-pkgconf \ + jpeg \ + libcurl \ + openssl \ + pcre \ + spandsp \ + sofia-sip \ + speex \ + sqlite \ + tiff \ + util-linux \ + zlib + +# disable display of ClueCon banner in fs_cli +FREESWITCH_CONF_ENV += \ + disable_cc=yes + +# we neither need host-perl nor host-php +FREESWITCH_CONF_ENV += \ + ac_cv_prog_PERL=false \ + ac_cv_have_perl=no \ + ac_cv_prog_PHP=false \ + ac_cv_have_php=no \ + ac_cv_prog_PHP_CONFIG=false \ + ac_cv_have_php_config=no + +# disable pcap detection, pcap is an optional dependency for unit tests +FREESWITCH_CONF_ENV += \ + ac_cv_prog_HAVE_PCAP_CONFIG=false + +# copied from freeswitch/configure.ac, line 258+ +FREESWITCH_CONF_ENV += \ + ac_cv_file__dev_ptmx=yes \ + ac_cv_va_copy=yes \ + ac_cv_file__dev_urandom=yes \ + ac_cv_func_realloc_0_nonnull=yes \ + ac_cv_func_malloc_0_nonnull=yes \ + ac_cv_func_setpgrp_void=yes \ + ac_cv_file__dev_zero=yes \ + apr_cv_tcp_nodelay_with_cork=yes \ + ac_cv_file_dbd_apr_dbd_mysql_c=no \ + ac_cv_sizeof_ssize_t=4 \ + apr_cv_mutex_recursive=yes \ + ac_cv_func_pthread_rwlock_init=yes \ + apr_cv_type_rwlock_t=yes \ + apr_cv_process_shared_works=yes \ + apr_cv_mutex_robust_shared=yes + +# build breaks with -Werror enabled +FREESWITCH_CONF_ENV += \ + ac_cv_gcc_supports_w_no_unused_result=no + +FREESWITCH_CONF_OPTS = \ + --without-erlang \ + --enable-fhs \ + --without-python \ + --disable-system-xmlrpc-c + +# Enable optional modules +FREESWITCH_ENABLED_MODULES += \ + applications/mod_avmd \ + applications/mod_blacklist \ + applications/mod_callcenter \ + applications/mod_commands \ + applications/mod_conference \ + applications/mod_curl \ + applications/mod_db \ + applications/mod_directory \ + applications/mod_dptools \ + applications/mod_easyroute \ + applications/mod_esf \ + applications/mod_esl \ + applications/mod_expr \ + applications/mod_fifo \ + applications/mod_fsk \ + applications/mod_hash \ + applications/mod_httapi \ + applications/mod_lcr \ + applications/mod_sms \ + applications/mod_snom \ + applications/mod_spandsp \ + applications/mod_spy \ + applications/mod_valet_parking \ + applications/mod_voicemail \ + codecs/mod_g723_1 \ + dialplans/mod_dialplan_asterisk \ + dialplans/mod_dialplan_xml \ + endpoints/mod_loopback \ + endpoints/mod_rtc \ + endpoints/mod_rtmp \ + endpoints/mod_sofia \ + event_handlers/mod_cdr_csv \ + event_handlers/mod_cdr_sqlite \ + event_handlers/mod_event_socket \ + formats/mod_local_stream \ + formats/mod_native_file \ + formats/mod_tone_stream \ + loggers/mod_console \ + loggers/mod_logfile \ + loggers/mod_syslog \ + say/mod_say_de \ + say/mod_say_en \ + say/mod_say_es \ + say/mod_say_es_ar \ + say/mod_say_fa \ + say/mod_say_fr \ + say/mod_say_he \ + say/mod_say_hr \ + say/mod_say_hu \ + say/mod_say_it \ + say/mod_say_ja \ + say/mod_say_nl \ + say/mod_say_pl \ + say/mod_say_pt \ + say/mod_say_ru \ + say/mod_say_sv \ + say/mod_say_th \ + say/mod_say_zh \ + timers/mod_timerfd \ + xml_int/mod_xml_cdr \ + xml_int/mod_xml_rpc \ + xml_int/mod_xml_scgi + +define FREESWITCH_ENABLE_MODULES + $(Q)echo $(FREESWITCH_ENABLED_MODULES) \ + | tr ' ' '\n' \ + > $(@D)/modules.conf +endef +FREESWITCH_PRE_CONFIGURE_HOOKS += FREESWITCH_ENABLE_MODULES + +# mod_isac supports a limited set of archs +# src/mod/codecs/mod_isac/typedefs.h +ifeq ($(BR2_i386)$(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el)$(BR2_x86_64),y) +FREESWITCH_LICENSE += , BSD-3-Clause (mod_isac) +FREESWITCH_LICENSE_FILES += src/mod/codecs/mod_isac/LICENSE +FREESWITCH_ENABLED_MODULES += codecs/mod_isac +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +FREESWITCH_DEPENDENCIES += alsa-lib +FREESWITCH_ENABLED_MODULES += endpoints/mod_alsa +endif + +# Use the pass-through g729 module provided by freeswitch instead of +# the external mod_bcg729 provided by freeswitch-mod-bcg729. +ifeq ($(BR2_PACKAGE_FREESWITCH_MOD_BCG729),) +FREESWITCH_ENABLED_MODULES += codecs/mod_g729 +endif + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +FREESWITCH_DEPENDENCIES += freetype +endif + +ifeq ($(BR2_PACKAGE_LIBBROADVOICE),y) +FREESWITCH_DEPENDENCIES += libbroadvoice +FREESWITCH_ENABLED_MODULES += codecs/mod_bv +endif + +ifeq ($(BR2_PACKAGE_LIBCODEC2),y) +FREESWITCH_DEPENDENCIES += libcodec2 +FREESWITCH_ENABLED_MODULES += codecs/mod_codec2 +endif + +ifeq ($(BR2_PACKAGE_LIBEDIT),y) +FREESWITCH_DEPENDENCIES += libedit +FREESWITCH_CONF_OPTS += --enable-core-libedit-support +else +FREESWITCH_CONF_OPTS += --disable-core-libedit-support +endif + +ifeq ($(BR2_PACKAGE_LIBG7221),y) +FREESWITCH_DEPENDENCIES += libg7221 +endif + +ifeq ($(BR2_PACKAGE_LIBILBC),y) +FREESWITCH_DEPENDENCIES += libilbc +FREESWITCH_ENABLED_MODULES += codecs/mod_ilbc +endif + +ifeq ($(BR2_PACKAGE_LIBKS),y) +FREESWITCH_DEPENDENCIES += libks +FREESWITCH_ENABLED_MODULES += endpoints/mod_verto +endif + +ifeq ($(BR2_PACKAGE_LIBLDNS),y) +FREESWITCH_DEPENDENCIES += libldns +FREESWITCH_ENABLED_MODULES += applications/mod_enum +endif + +ifeq ($(BR2_PACKAGE_LIBMEMCACHED),y) +FREESWITCH_DEPENDENCIES += libmemcached +FREESWITCH_ENABLED_MODULES += applications/mod_memcache +endif + +ifeq ($(BR2_PACKAGE_LIBOPENH264),y) +FREESWITCH_LICENSE += , BSD-2-Clause (libopenh264) +FREESWITCH_LICENSE_FILES += docs/OPENH264_BINARY_LICENSE.txt +FREESWITCH_DEPENDENCIES += libopenh264 +FREESWITCH_ENABLED_MODULES += codecs/mod_openh264 +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +FREESWITCH_DEPENDENCIES += libpng +FREESWITCH_ENABLED_MODULES += formats/mod_png +endif + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +FREESWITCH_DEPENDENCIES += libxcrypt +endif + +ifeq ($(BR2_PACKAGE_LIBYAML),y) +FREESWITCH_DEPENDENCIES += libyaml +FREESWITCH_ENABLED_MODULES += languages/mod_yaml +endif + +ifeq ($(BR2_PACKAGE_LUA),y) +FREESWITCH_DEPENDENCIES += lua +FREESWITCH_ENABLED_MODULES += languages/mod_lua +endif + +ifeq ($(BR2_PACKAGE_OPENLDAP),y) +FREESWITCH_DEPENDENCIES += openldap +FREESWITCH_ENABLED_MODULES += directories/mod_ldap xml_int/mod_xml_ldap +endif + +ifeq ($(BR2_PACKAGE_OPUS),y) +FREESWITCH_DEPENDENCIES += opus +FREESWITCH_ENABLED_MODULES += codecs/mod_opus +endif + +ifeq ($(BR2_PACKAGE_PORTAUDIO),y) +FREESWITCH_DEPENDENCIES += portaudio +FREESWITCH_ENABLED_MODULES += endpoints/mod_portaudio +endif + +ifeq ($(BR2_PACKAGE_LAME)$(BR2_PACKAGE_LIBSHOUT)$(BR2_PACKAGE_MPG123),yyy) +FREESWITCH_DEPENDENCIES += lame libshout mpg123 +FREESWITCH_ENABLED_MODULES += formats/mod_shout +endif + +ifeq ($(BR2_PACKAGE_LIBSILK),y) +FREESWITCH_DEPENDENCIES += libsilk +FREESWITCH_ENABLED_MODULES += codecs/mod_silk +endif + +ifeq ($(BR2_PACKAGE_LIBSNDFILE),y) +FREESWITCH_DEPENDENCIES += libsndfile +FREESWITCH_ENABLED_MODULES += formats/mod_sndfile +endif + +ifeq ($(BR2_PACKAGE_LIBSOUNDTOUCH),y) +FREESWITCH_DEPENDENCIES += libsoundtouch +FREESWITCH_ENABLED_MODULES += applications/mod_soundtouch +endif + +ifeq ($(BR2_PACKAGE_OPENCV3),y) +FREESWITCH_DEPENDENCIES += opencv3 +FREESWITCH_ENABLED_MODULES += applications/mod_cv +endif + +ifeq ($(BR2_PACKAGE_POSTGRESQL),y) +FREESWITCH_CONF_ENV += \ + ac_cv_path_PG_CONFIG=$(STAGING_DIR)/usr/bin/pg_config +FREESWITCH_DEPENDENCIES += postgresql +FREESWITCH_ENABLED_MODULES += databases/mod_pgsql +endif + +ifeq ($(BR2_PACKAGE_UNIXODBC),y) +FREESWITCH_DEPENDENCIES += unixodbc +FREESWITCH_CONF_OPTS += \ + --enable-core-odbc-support \ + --with-odbc=$(STAGING_DIR)/usr +else +FREESWITCH_CONF_OPTS += --disable-core-odbc-support +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +FREESWITCH_DEPENDENCIES += xz +endif + +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_8)$(BR2_PACKAGE_FFMPEG),yy) +FREESWITCH_LICENSE += , BSD-3-Clause (libvpx, libyuv) +FREESWITCH_LICENSE_FILES += libs/libvpx/LICENSE libs/libyuv/LICENSE +FREESWITCH_CONF_OPTS += --enable-libvpx --enable-libyuv +FREESWITCH_DEPENDENCIES += host-yasm ffmpeg +FREESWITCH_ENABLED_MODULES += applications/mod_av applications/mod_fsv +FREESWITCH_MAKE_ENV += CROSS=$(TARGET_CROSS) + +# Freeswitch's buildsystem forgets to pass important environment +# variables and config options when it configures libvpx, so +# pre-build libvpx manually, so Freeswitch does not attempt to run +# its flawed commands... +# Freeswitch only ever uses the static libtrary, that's hard-coded, +# we can't do anything about that... +# From package/libvpx/libvpx.mk: +# - this is not a true autotools package. It is based on the ffmpeg +# build system. +# - ld is being used with cc options. therefore, pretend ld is cc. +define FREESWITCH_BUILD_LIBVPX + cd $(@D)/libs/libvpx && \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + LD="$(TARGET_CC)" \ + CROSS=$(GNU_TARGET_NAME) \ + ./configure \ + --target=generic-gnu \ + --enable-pic \ + --prefix=/usr \ + --disable-shared --enable-static \ + --disable-examples \ + --disable-docs \ + --disable-unit-tests && \ + $(TARGET_MAKE_ENV) \ + $(LIBVPX_MAKE_ENV) \ + $(MAKE) \ + -C $(@D)/libs/libvpx \ + all +endef +FREESWITCH_PRE_BUILD_HOOKS += FREESWITCH_BUILD_LIBVPX + +else +FREESWITCH_CONF_OPTS += --disable-libvpx --disable-libyuv +endif + +$(eval $(autotools-package)) diff --git a/package/freetype/Config.in b/package/freetype/Config.in new file mode 100644 index 00000000..06c6a854 --- /dev/null +++ b/package/freetype/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_FREETYPE + bool "freetype" + help + a free, high-quality and portable font engine. + + https://www.freetype.org/ diff --git a/package/freetype/freetype.hash b/package/freetype/freetype.hash new file mode 100644 index 00000000..e7331d5b --- /dev/null +++ b/package/freetype/freetype.hash @@ -0,0 +1,8 @@ +# From https://sourceforge.net/projects/freetype/files/freetype2/2.13.2/ +sha1 2d8d5917a1983ebd04921f2993a88858d6f72dec freetype-2.13.2.tar.xz +sha256 12991c4e55c506dd7f9b765933e62fd2be2e06d421505d7950a132e4f1bb484d freetype-2.13.2.tar.xz + +# Locally calculated +sha256 2e3bbb7d7c5c396368dd0853a790ec29ce5b8647163dde42a0493fb0d6556b2b LICENSE.TXT +sha256 08c135755dd589039470f1fdbb400daaabaaa50d0b366d19cebff4d22986baa1 docs/FTL.TXT +sha256 c4120c6752c910c299e3bd9cb3a46ff262c268303ca2069b61f92f10a5656c18 docs/GPLv2.TXT diff --git a/package/freetype/freetype.mk b/package/freetype/freetype.mk new file mode 100644 index 00000000..5032414d --- /dev/null +++ b/package/freetype/freetype.mk @@ -0,0 +1,71 @@ +################################################################################ +# +# freetype +# +################################################################################ + +FREETYPE_VERSION = 2.13.2 +FREETYPE_SOURCE = freetype-$(FREETYPE_VERSION).tar.xz +FREETYPE_SITE = http://download.savannah.gnu.org/releases/freetype +FREETYPE_INSTALL_STAGING = YES +FREETYPE_MAKE_OPTS = CCexe="$(HOSTCC)" +FREETYPE_LICENSE = FTL or GPL-2.0+ +FREETYPE_LICENSE_FILES = LICENSE.TXT docs/FTL.TXT docs/GPLv2.TXT +FREETYPE_CPE_ID_VENDOR = freetype +FREETYPE_DEPENDENCIES = host-pkgconf +FREETYPE_CONFIG_SCRIPTS = freetype-config + +# harfbuzz already depends on freetype so disable harfbuzz in freetype to avoid +# a circular dependency +FREETYPE_CONF_OPTS = --without-harfbuzz + +HOST_FREETYPE_DEPENDENCIES = host-pkgconf +HOST_FREETYPE_CONF_OPTS = \ + --without-brotli \ + --without-bzip2 \ + --without-harfbuzz \ + --without-png \ + --without-zlib + +# since 2.9.1 needed for freetype-config install +FREETYPE_CONF_OPTS += --enable-freetype-config +HOST_FREETYPE_CONF_OPTS += --enable-freetype-config + +ifeq ($(BR2_PACKAGE_ZLIB),y) +FREETYPE_DEPENDENCIES += zlib +FREETYPE_CONF_OPTS += --with-zlib +else +FREETYPE_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_BROTLI),y) +FREETYPE_DEPENDENCIES += brotli +FREETYPE_CONF_OPTS += --with-brotli +else +FREETYPE_CONF_OPTS += --without-brotli +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +FREETYPE_DEPENDENCIES += bzip2 +FREETYPE_CONF_OPTS += --with-bzip2 +else +FREETYPE_CONF_OPTS += --without-bzip2 +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +FREETYPE_DEPENDENCIES += libpng +FREETYPE_CONF_OPTS += --with-png +else +FREETYPE_CONF_OPTS += --without-png +endif + +# Extra fixing since includedir and libdir are expanded from configure values +define FREETYPE_FIX_CONFIG_FILE + $(SED) 's:^includedir=.*:includedir="$${prefix}/include":' \ + -e 's:^libdir=.*:libdir="$${exec_prefix}/lib":' \ + $(STAGING_DIR)/usr/bin/freetype-config +endef +FREETYPE_POST_INSTALL_STAGING_HOOKS += FREETYPE_FIX_CONFIG_FILE + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/frr/Config.in b/package/frr/Config.in new file mode 100644 index 00000000..0afd8c61 --- /dev/null +++ b/package/frr/Config.in @@ -0,0 +1,40 @@ +config BR2_PACKAGE_FRR + bool "frr" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS # libyang + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c, libyang + select BR2_PACKAGE_BASH + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_LIBYANG + select BR2_PACKAGE_READLINE + select BR2_PACKAGE_JSON_C + help + The FRRouting Protocol Suite. + + FRR is free software that implements and manages various + IPv4 and IPv6 routing protocols. + + https://frrouting.org + +if BR2_PACKAGE_FRR + +config BR2_PACKAGE_FRR_BMP + bool "BMP protocol" + select BR2_PACKAGE_C_ARES + help + Build BGP Monitoring Protocol daemon. + +config BR2_PACKAGE_FRR_NHRPD + bool "NHRPD protocol" + select BR2_PACKAGE_C_ARES + help + Build Next Hop Routing Protocol daemon. + +endif + +comment "frr needs a toolchain w/ threads, dynamic library" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/frr/S50frr b/package/frr/S50frr new file mode 100644 index 00000000..0c128353 --- /dev/null +++ b/package/frr/S50frr @@ -0,0 +1,46 @@ +#!/bin/sh + +DAEMON="frr" + +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + install -m 755 -o frr -g frr -d /var/run/frr + install -m 755 -o frr -g frr -d /var/log/frr + + printf 'Starting %s: ' "$DAEMON" + /usr/sbin/frrinit.sh start + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + /usr/sbin/frrinit.sh stop + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/package/frr/frr.hash b/package/frr/frr.hash new file mode 100644 index 00000000..4a61084b --- /dev/null +++ b/package/frr/frr.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 7ae9d8bafc65bb5d0f21061ac61dbc6cf93b2b05a5dae9e5eec72ed42388551e frr-8.5.4.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/frr/frr.mk b/package/frr/frr.mk new file mode 100644 index 00000000..1b7d66fc --- /dev/null +++ b/package/frr/frr.mk @@ -0,0 +1,109 @@ +################################################################################ +# +# frr +# +################################################################################ + +FRR_VERSION = 8.5.4 +FRR_SITE = $(call github,FRRouting,frr,frr-$(FRR_VERSION)) +FRR_LICENSE = GPL-2.0 +FRR_LICENSE_FILES = COPYING +FRR_CPE_ID_VENDOR = linuxfoundation +FRR_CPE_ID_PRODUCT = free_range_routing +FRR_AUTORECONF = YES + +FRR_DEPENDENCIES = host-frr readline json-c libyang \ + $(if $(BR2_PACKAGE_C_ARES),c-ares) \ + $(if $(BR2_PACKAGE_LIBXCRYPT),libxcrypt) + +HOST_FRR_DEPENDENCIES = host-flex host-bison host-elfutils host-python3 + +FRR_CONF_ENV = \ + ac_cv_lib_cunit_CU_initialize_registry=no \ + CFLAGS="$(TARGET_CFLAGS) -DFRR_XREF_NO_NOTE" + +FRR_CONF_OPTS = --with-clippy=$(HOST_DIR)/bin/clippy \ + --sysconfdir=/etc/frr \ + --localstatedir=/var/run/frr \ + --with-moduledir=/usr/lib/frr/modules \ + --enable-configfile-mask=0640 \ + --enable-logfile-mask=0640 \ + --enable-multipath=256 \ + --disable-ospfclient \ + --enable-shell-access \ + --enable-user=frr \ + --enable-group=frr \ + --enable-vty-group=frrvty \ + --enable-fpm + +HOST_FRR_CONF_OPTS = --enable-clippy-only + +ifeq ($(BR2_PACKAGE_FRR_BMP),y) +FRR_CONF_OPTS += --enable-bgp-bmp +else +FRR_CONF_OPTS += --disable-bgp-bmp +endif + +ifeq ($(BR2_PACKAGE_FRR_NHRPD),y) +FRR_CONF_OPTS += --enable-nhrpd +else +FRR_CONF_OPTS += --disable-nhrpd +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +FRR_DEPENDENCIES += libcap +FRR_CONF_OPTS += --enable-capabilities +else +FRR_CONF_OPTS += --disable-capabilities +endif + +ifeq ($(BR2_PACKAGE_SQLITE),y) +FRR_DEPENDENCIES += sqlite +FRR_CONF_OPTS += --enable-config-rollbacks +else +FRR_CONF_OPTS += --disable-config-rollbacks +endif + +ifeq ($(BR2_PACKAGE_ZEROMQ),y) +FRR_DEPENDENCIES += zeromq +FRR_CONF_OPTS += --enable-zeromq +else +FRR_CONF_OPTS += --disable-zeromq +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +FRR_CONF_ENV += LIBS=-latomic +endif + +define HOST_FRR_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/lib/clippy $(HOST_DIR)/bin/clippy +endef + +define FRR_INSTALL_CONFIG_FILES + $(foreach f,daemons daemons.conf frr.conf vtysh.conf support_bundle_commands.conf,\ + $(INSTALL) -D -m 0640 $(@D)/tools/etc/frr/$(f) \ + $(TARGET_DIR)/etc/frr/$(f) + ) + $(RM) $(TARGET_DIR)/etc/frr/*.sample +endef +FRR_POST_INSTALL_TARGET_HOOKS += FRR_INSTALL_CONFIG_FILES + +define FRR_PERMISSIONS + /etc/frr/daemons f 640 frr frr - - - - - + /etc/frr/daemons.conf f 640 frr frr - - - - - + /etc/frr/frr.conf f 640 frr frr - - - - - + /etc/frr/vtysh.conf f 640 frr frrvty - - - - - + /etc/frr/support_bundle_commands.conf f 640 frr frr +endef + +define FRR_USERS + frr -1 frr -1 * /var/run/frr - frrvty FRR user priv +endef + +define FRR_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 $(FRR_PKGDIR)/S50frr \ + $(TARGET_DIR)/etc/init.d/S50frr +endef + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/fscryptctl/Config.in b/package/fscryptctl/Config.in new file mode 100644 index 00000000..91b9ba8e --- /dev/null +++ b/package/fscryptctl/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_FSCRYPTCTL + bool "fscryptctl" + help + fscryptctl is a low-level tool written in C that handles raw + keys and manages policies for Linux filesystem encryption. + + Notice: Fscrypt support on EXT4 requires a kernel with + CONFIG_EXT4_ENCRYPTION=y and a file system with the + encryption option and block size equal to CPU page size + (BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS="-O encrypt -b 4096") + + https://github.com/google/fscryptctl diff --git a/package/fscryptctl/fscryptctl.hash b/package/fscryptctl/fscryptctl.hash new file mode 100644 index 00000000..0dcca689 --- /dev/null +++ b/package/fscryptctl/fscryptctl.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3828d5ad9b93664b9fec0174fc5d8e96d7b021a7896da74efe18fabe5f01d638 fscryptctl-1.0.0.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/fscryptctl/fscryptctl.mk b/package/fscryptctl/fscryptctl.mk new file mode 100644 index 00000000..0546f67a --- /dev/null +++ b/package/fscryptctl/fscryptctl.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# fscryptctl +# +################################################################################ + +FSCRYPTCTL_VERSION = 1.0.0 +FSCRYPTCTL_SITE = $(call github,google,fscryptctl,v$(FSCRYPTCTL_VERSION)) +FSCRYPTCTL_LICENSE = Apache-2.0 +FSCRYPTCTL_LICENSE_FILES = LICENSE + +define FSCRYPTCTL_BUILD_CMDS + $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) -std=c99" fscryptctl +endef + +define FSCRYPTCTL_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/fscryptctl $(TARGET_DIR)/usr/bin/fscryptctl +endef + +$(eval $(generic-package)) diff --git a/package/fstrcmp/0001-disable-rpath.patch b/package/fstrcmp/0001-disable-rpath.patch new file mode 100644 index 00000000..cec57e7e --- /dev/null +++ b/package/fstrcmp/0001-disable-rpath.patch @@ -0,0 +1,25 @@ +Remove rpath from linking command + +Fixes build error: + +lib/.libs/libfstrcmp.so: undefined reference to `__ctype_b_loc@GLIBC_2.3' +lib/.libs/libfstrcmp.so: undefined reference to `mbstowcs@GLIBC_2.2.5' +lib/.libs/libfstrcmp.so: undefined reference to `printf@GLIBC_2.2.5' +lib/.libs/libfstrcmp.so: undefined reference to `readlink@GLIBC_2.2.5' +lib/.libs/libfstrcmp.so: undefined reference to `malloc@GLIBC_2.2.5' +lib/.libs/libfstrcmp.so: undefined reference to `memcmp@GLIBC_2.2.5' +lib/.libs/libfstrcmp.so: undefined reference to `wcslen@GLIBC_2.2.5' + +Signed-off-by: Bernd Kuhls + +--- fstrcmp-0.7.D001/Makefile.in.orig 2014-03-05 01:13:45.000000000 +0100 ++++ fstrcmp-0.7.D001/Makefile.in 2019-04-07 13:55:07.817689231 +0200 +@@ -507,7 +507,7 @@ + lib/libfstrcmp.la: $(lib_obj) + rm -f $@ + $(LIBTOOL) --mode=link --tag=CC $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) \ +- -o $@ $(lib_obj) $(LIBS) -rpath $(libdir) -version-info 6:0:6 ++ -o $@ $(lib_obj) $(LIBS) -version-info 6:0:6 + + # + # The install of the *.la file automatically causes "$(LIBTOOL) --mode=install" diff --git a/package/fstrcmp/Config.in b/package/fstrcmp/Config.in new file mode 100644 index 00000000..04f11b0f --- /dev/null +++ b/package/fstrcmp/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_FSTRCMP + bool "fstrcmp" + depends on BR2_USE_WCHAR + help + The fstrcmp project provides a library that is used to make + fuzzy comparisons of strings and byte arrays, including multi- + byte character strings. + + http://fstrcmp.sourceforge.net/ + +comment "fstrcmp needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/package/fstrcmp/fstrcmp.hash b/package/fstrcmp/fstrcmp.hash new file mode 100644 index 00000000..fbc53b1b --- /dev/null +++ b/package/fstrcmp/fstrcmp.hash @@ -0,0 +1,6 @@ +# From https://sourceforge.net/projects/fstrcmp/files/fstrcmp/0.7/ +md5 9c440bbdfcad9fd22e38f2388715b0cc fstrcmp-0.7.D001.tar.gz +sha1 bb848118fb157dc624ae9fac0566a64cc85f2ef2 fstrcmp-0.7.D001.tar.gz +# Locally computed +sha256 e4018e850f80700acee8da296e56e15b1eef711ab15157e542e7d7e1237c3476 fstrcmp-0.7.D001.tar.gz +sha256 5352e426b563eda9252d76be92337b49f7b5cfdd1302a1e8d99389840c0e46be LICENSE diff --git a/package/fstrcmp/fstrcmp.mk b/package/fstrcmp/fstrcmp.mk new file mode 100644 index 00000000..294104b2 --- /dev/null +++ b/package/fstrcmp/fstrcmp.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# fstrcmp +# +################################################################################ + +FSTRCMP_VERSION_MAJOR = 0.7 +FSTRCMP_VERSION = $(FSTRCMP_VERSION_MAJOR).D001 +FSTRCMP_SITE = https://sourceforge.net/projects/fstrcmp/files/fstrcmp/$(FSTRCMP_VERSION_MAJOR) +FSTRCMP_LICENSE = GPL-3.0+ +FSTRCMP_LICENSE_FILES = LICENSE +FSTRCMP_INSTALL_STAGING = YES +FSTRCMP_DEPENDENCIES = host-libtool +FSTRCMP_CONF_ENV = LIBTOOL="$(HOST_DIR)/bin/libtool" + +FSTRCMP_MAKE_OPTS = all-bin libdir/pkgconfig/fstrcmp.pc + +# fstrcmp does not carry and use the usual ltmain.sh wrappers, so it does not +# inherit from our libtool patches to make -static behave like -all-static. +ifeq ($(BR2_STATIC_LIBS),y) +FSTRCMP_MAKE_OPTS += LDFLAGS="$(TARGET_LDFLAGS) -all-static" +endif + +# We need to install the package files ourselves due to upstream trying +# to install a .lai file which is missing because of rpath removal +define FSTRCMP_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install-include + $(INSTALL) -D -m 755 $(@D)/lib/.libs/libfstrcmp.a $(STAGING_DIR)/usr/lib/libfstrcmp.a + $(INSTALL) -D -m 755 $(@D)/lib/libfstrcmp.la $(STAGING_DIR)/usr/lib/libfstrcmp.la + $(INSTALL) -D -m 755 $(@D)/libdir/pkgconfig/fstrcmp.pc $(STAGING_DIR)/usr/lib/pkgconfig/fstrcmp.pc +endef + +define FSTRCMP_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/bin/fstrcmp $(TARGET_DIR)/usr/bin/fstrcmp +endef + +$(eval $(autotools-package)) diff --git a/package/fswebcam/Config.in b/package/fswebcam/Config.in new file mode 100644 index 00000000..fbd077bc --- /dev/null +++ b/package/fswebcam/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_FSWEBCAM + bool "fswebcam" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_GD + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBPNG + help + fswebcam is a neat and simple webcam app. It captures images + from a V4L1/V4L2 compatible device or file, averages them to + reduce noise and draws a caption using the GD Graphics + Library which also handles compressing the image to PNG or + JPEG. The resulting image is saved to a file or sent to + stdio where it can be piped to something like ncftpput or + scp. + + https://www.sanslogic.co.uk/fswebcam/ + +comment "fswebcam needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/package/fswebcam/fswebcam.hash b/package/fswebcam/fswebcam.hash new file mode 100644 index 00000000..6ecb0d97 --- /dev/null +++ b/package/fswebcam/fswebcam.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 d5439b2bf49bb634100d7e42ed9854f84bfd355c1d40bc3d4d81593eeadd8aee fswebcam-20200725.tar.gz +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 LICENSE diff --git a/package/fswebcam/fswebcam.mk b/package/fswebcam/fswebcam.mk new file mode 100644 index 00000000..12e7860e --- /dev/null +++ b/package/fswebcam/fswebcam.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# fswebcam +# +################################################################################ + +FSWEBCAM_VERSION = 20200725 +FSWEBCAM_SITE = $(call github,fsphil,fswebcam,$(FSWEBCAM_VERSION)) +FSWEBCAM_LICENSE = GPL-2.0 +FSWEBCAM_LICENSE_FILES = LICENSE + +FSWEBCAM_DEPENDENCIES += freetype jpeg libpng gd + +$(eval $(autotools-package)) diff --git a/package/ftop/0001-overflow.patch b/package/ftop/0001-overflow.patch new file mode 100644 index 00000000..a3a27c37 --- /dev/null +++ b/package/ftop/0001-overflow.patch @@ -0,0 +1,17 @@ +Set tmp_buf and rate_buf to something ridiculously high to fix a buffer +overflow when COLUMNS is large. - JeR + +(Taken from gentoo portage) +Signed-off-by: Gustavo Zacarias + +--- a/src/ftop.c 2009-02-16 07:00:00.000000000 +0100 ++++ b/src/ftop.c 2013-09-06 14:42:41.788852952 +0200 +@@ -736,7 +736,7 @@ + { + size_t i, j, bytes, bar_total; + char more_procs_ch, more_files_ch, expanded_ch; +- char tmp_buf[80], rate_buf[80]; ++ char tmp_buf[2048], rate_buf[2048]; + char *tmp_str; + snapshot *s, *s_prev; + file_info *tmp_file; diff --git a/package/ftop/Config.in b/package/ftop/Config.in new file mode 100644 index 00000000..bee70bfd --- /dev/null +++ b/package/ftop/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_FTOP + bool "ftop" + select BR2_PACKAGE_NCURSES + help + Ftop is to files what top is to processes. + The progress of all open files and file systems can be + monitored. + + https://sourceforge.net/projects/ftop/ diff --git a/package/ftop/ftop.hash b/package/ftop/ftop.hash new file mode 100644 index 00000000..b7849d65 --- /dev/null +++ b/package/ftop/ftop.hash @@ -0,0 +1,6 @@ +# From https://sourceforge.net/projects/ftop/files/ftop/1.0/ +md5 57c68b6e7431f4219d9eddaebcb395da ftop-1.0.tar.bz2 +sha1 d3ef1b74825f50c7c442d299b29d23c2478f199b ftop-1.0.tar.bz2 +# Locally computed +sha256 3a705f4f291384344cd32c3dd5f5f6a7cd7cea7624c83cb7e923966dbcd47f82 ftop-1.0.tar.bz2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/ftop/ftop.mk b/package/ftop/ftop.mk new file mode 100644 index 00000000..5498fb52 --- /dev/null +++ b/package/ftop/ftop.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# ftop +# +################################################################################ + +FTOP_VERSION = 1.0 +FTOP_SOURCE = ftop-$(FTOP_VERSION).tar.bz2 +FTOP_SITE = https://sourceforge.net/projects/ftop/files/ftop/$(FTOP_VERSION) +FTOP_DEPENDENCIES = ncurses +FTOP_LICENSE = GPL-3.0+ +FTOP_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/fuse-overlayfs/Config.in b/package/fuse-overlayfs/Config.in new file mode 100644 index 00000000..30a3372c --- /dev/null +++ b/package/fuse-overlayfs/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_FUSE_OVERLAYFS + bool "fuse-overlayfs" + depends on BR2_USE_MMU # libfuse3 + depends on !BR2_STATIC_LIBS # libfuse3 + depends on BR2_TOOLCHAIN_HAS_THREADS # libfuse3 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15 + select BR2_PACKAGE_LIBFUSE3 + help + FUSE-overlayfs is an implementation of overlay+shiftfs in + FUSE, intended to be used for rootless containers. + + http://github.com/containers/fuse-overlayfs + +comment "fuse-overlayfs needs a toolchain w/ threads, dynamic library, headers >= 3.15" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15 diff --git a/package/fuse-overlayfs/fuse-overlayfs.hash b/package/fuse-overlayfs/fuse-overlayfs.hash new file mode 100644 index 00000000..f1a326c8 --- /dev/null +++ b/package/fuse-overlayfs/fuse-overlayfs.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 96d10344921d5796bcba7a38580ae14a53c4e60399bb90b238ac5a10b3bb65b2 fuse-overlayfs-1.13.tar.gz +# Locally computed +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/fuse-overlayfs/fuse-overlayfs.mk b/package/fuse-overlayfs/fuse-overlayfs.mk new file mode 100644 index 00000000..2aa208d5 --- /dev/null +++ b/package/fuse-overlayfs/fuse-overlayfs.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# fuse-overlayfs +# +################################################################################ + +FUSE_OVERLAYFS_VERSION = 1.13 +FUSE_OVERLAYFS_SITE = $(call github,containers,fuse-overlayfs,v$(FUSE_OVERLAYFS_VERSION)) +FUSE_OVERLAYFS_LICENSE = GPL-2.0+ +FUSE_OVERLAYFS_LICENSE_FILES = COPYING + +FUSE_OVERLAYFS_AUTORECONF = YES +FUSE_OVERLAYFS_DEPENDENCIES = libfuse3 host-pkgconf + +$(eval $(autotools-package)) diff --git a/package/fwts/0001-build-do-not-use-Werror.patch b/package/fwts/0001-build-do-not-use-Werror.patch new file mode 100644 index 00000000..c6a84537 --- /dev/null +++ b/package/fwts/0001-build-do-not-use-Werror.patch @@ -0,0 +1,79 @@ +From feb05271b484b158c14611839f968109e9cf3082 Mon Sep 17 00:00:00 2001 +From: Erico Nunes +Date: Fri, 12 Aug 2016 23:11:56 +0200 +Subject: [PATCH] fwts: do not use -Werror +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Warnings come and go with various compiler versions, so using -Werror is +prone to cause build failures with various compiler versions, especially +newer versions that introduce new warnings. + +Remove use of -Werror. + +Signed-off-by: Erico Nunes +[Fabrice: updated for 20.08.00] +Signed-off-by: Fabrice Fontaine +[Vincent: rebased onto V21.05.00] +Signed-off-by: Vincent Stehlé +--- + configure.ac | 2 +- + src/Makefile.am | 2 +- + src/lib/src/Makefile.am | 2 +- + src/utilities/Makefile.am | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/configure.ac b/configure.ac +index ca2f54e2..ed584abf 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1,5 +1,5 @@ + AC_INIT([fwts],[0.1],[fwts-devel@lists.ubuntu.com]) +- AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects]) ++ AM_INIT_AUTOMAKE([-Wall foreign subdir-objects]) + m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) + AC_CANONICAL_HOST + AC_CONFIG_MACRO_DIR([m4]) +diff --git a/src/Makefile.am b/src/Makefile.am +index 3bb35e5c..e9fe92fe 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -13,7 +13,7 @@ AM_CPPFLAGS = \ + -I$(top_srcdir)/efi_runtime \ + -I$(top_srcdir)/smccc_test \ + -pthread \ +- -Wall -Werror -Wextra \ ++ -Wall -Wextra \ + -Wno-address-of-packed-member \ + -Wfloat-equal -Wmissing-declarations \ + -Wno-long-long -Wredundant-decls -Wshadow \ +diff --git a/src/lib/src/Makefile.am b/src/lib/src/Makefile.am +index d5d53dd7..76c48d4d 100644 +--- a/src/lib/src/Makefile.am ++++ b/src/lib/src/Makefile.am +@@ -22,7 +22,7 @@ AM_CPPFLAGS = \ + -I$(top_srcdir)/src/acpica/source/include \ + -I$(top_srcdir)/src/acpica/source/compiler \ + -DDATAROOTDIR=\"$(datarootdir)\" \ +- -Wall -Werror -Wextra \ ++ -Wall -Wextra \ + -Wno-address-of-packed-member + + pkglib_LTLIBRARIES = libfwts.la +diff --git a/src/utilities/Makefile.am b/src/utilities/Makefile.am +index de38f070..785975ff 100644 +--- a/src/utilities/Makefile.am ++++ b/src/utilities/Makefile.am +@@ -16,7 +16,7 @@ + # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + # + +-AM_CPPFLAGS = -Wall -Werror -Wextra -DDATAROOTDIR=\"$(datarootdir)\" \ ++AM_CPPFLAGS = -Wall -Wextra -DDATAROOTDIR=\"$(datarootdir)\" \ + -I$(srcdir)/../lib/include + + bin_PROGRAMS = kernelscan +-- +2.36.1 + diff --git a/package/fwts/Config.in b/package/fwts/Config.in new file mode 100644 index 00000000..08608d1d --- /dev/null +++ b/package/fwts/Config.in @@ -0,0 +1,47 @@ +config BR2_PACKAGE_FWTS_ARCH_SUPPORTS + bool + default y if BR2_aarch64 + default y if BR2_arm + default y if BR2_i386 + default y if BR2_x86_64 + +config BR2_PACKAGE_FWTS + bool "fwts" + depends on BR2_PACKAGE_FWTS_ARCH_SUPPORTS + depends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS # libbsd + depends on BR2_USE_MMU # libglib2 + depends on BR2_USE_WCHAR # libglib2, libbsd + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2, libbsd + depends on !BR2_STATIC_LIBS # libbsd + depends on BR2_TOOLCHAIN_USES_GLIBC # execinfo.h + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBBSD + help + Firmware Test Suite (FWTS) is a test suite that performs + sanity checks on firmware. It is intended to identify BIOS and + ACPI errors and if appropriate it will try to explain the + errors and give advice to help workaround or fix firmware + bugs. + + dtc (libfdt) is an optional dependency for fdt related tests. + + https://wiki.ubuntu.com/FirmwareTestSuite + +if BR2_PACKAGE_FWTS +config BR2_PACKAGE_FWTS_EFI_RUNTIME_MODULE + bool "efi_runtime module" + depends on BR2_LINUX_KERNEL + help + Firmware Test Suite (FWTS) provides a EFI runtime kernel + module required to run UEFI tests. + +comment "efi_runtime module needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL +endif + +comment "fwts needs a glibc toolchain w/ wchar, threads, dynamic library" + depends on BR2_PACKAGE_FWTS_ARCH_SUPPORTS + depends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS # libbsd + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_USES_GLIBC || BR2_STATIC_LIBS diff --git a/package/fwts/fwts.hash b/package/fwts/fwts.hash new file mode 100644 index 00000000..61f61583 --- /dev/null +++ b/package/fwts/fwts.hash @@ -0,0 +1,5 @@ +# Hash from: http://fwts.ubuntu.com/release/SHA256SUMS +sha256 2bd45ab1b9f8dc1db2716721e89d982ee4b4eda4b1043cca7b13775c95d5023b fwts-V24.07.00.tar.gz + +# Hash for license file +sha256 3cd2c5d12f024ff2aa203e37d7e972c4d5ab7bf1a65e3e09aebccf71e64b525b debian/copyright diff --git a/package/fwts/fwts.mk b/package/fwts/fwts.mk new file mode 100644 index 00000000..fa1f8ed8 --- /dev/null +++ b/package/fwts/fwts.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# fwts +# +################################################################################ + +FWTS_VERSION = 24.07.00 +FWTS_SOURCE = fwts-V$(FWTS_VERSION).tar.gz +FWTS_SITE = https://fwts.ubuntu.com/release +FWTS_STRIP_COMPONENTS = 0 +FWTS_LICENSE = GPL-2.0, LGPL-2.1, Custom +FWTS_LICENSE_FILES = debian/copyright +FWTS_AUTORECONF = YES +FWTS_DEPENDENCIES = host-bison host-flex host-pkgconf libglib2 libbsd \ + $(if $(BR2_PACKAGE_BASH_COMPLETION),bash-completion) \ + $(if $(BR2_PACKAGE_DTC),dtc) + +ifeq ($(BR2_OPTIMIZE_0),y) +FWTS_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -O1" +endif + +ifeq ($(BR2_PACKAGE_FWTS_EFI_RUNTIME_MODULE),y) +FWTS_MODULE_SUBDIRS = efi_runtime +$(eval $(kernel-module)) +endif + +$(eval $(autotools-package)) diff --git a/package/fwup/Config.in b/package/fwup/Config.in new file mode 100644 index 00000000..0e3c57d3 --- /dev/null +++ b/package/fwup/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_FWUP + bool "fwup" + depends on BR2_USE_MMU + depends on BR2_USE_WCHAR + select BR2_PACKAGE_LIBARCHIVE + # required by libarchive to include zip compression + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_LIBCONFUSE + help + Fwup is a scriptable embedded Linux firmware update creator + and runner. + + https://github.com/fhunleth/fwup + +comment "fwup needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR diff --git a/package/fwup/Config.in.host b/package/fwup/Config.in.host new file mode 100644 index 00000000..4e21c7db --- /dev/null +++ b/package/fwup/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_FWUP + bool "host fwup" + help + Fwup is a scriptable embedded Linux firmware update creator + and runner. + + https://github.com/fhunleth/fwup diff --git a/package/fwup/fwup.hash b/package/fwup/fwup.hash new file mode 100644 index 00000000..51ec444b --- /dev/null +++ b/package/fwup/fwup.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 9684551647f0ddd043f9ff46f7bec8eacb2da1ac29d6d8d5d775c346173b8e88 fwup-1.9.1.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/fwup/fwup.mk b/package/fwup/fwup.mk new file mode 100644 index 00000000..a6395d58 --- /dev/null +++ b/package/fwup/fwup.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# fwup +# +################################################################################ + +FWUP_VERSION = 1.9.1 +FWUP_SITE = $(call github,fwup-home,fwup,v$(FWUP_VERSION)) +FWUP_LICENSE = Apache-2.0 +FWUP_LICENSE_FILES = LICENSE +FWUP_DEPENDENCIES = host-pkgconf libconfuse libarchive +HOST_FWUP_DEPENDENCIES = host-pkgconf host-libconfuse host-libarchive +FWUP_AUTORECONF = YES +FWUP_CONF_ENV = ac_cv_path_HELP2MAN="" + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/fwupd-efi/0001-Allow-enabling-disabling-the-use-of-genpeimg-binary.patch b/package/fwupd-efi/0001-Allow-enabling-disabling-the-use-of-genpeimg-binary.patch new file mode 100644 index 00000000..e6e460a3 --- /dev/null +++ b/package/fwupd-efi/0001-Allow-enabling-disabling-the-use-of-genpeimg-binary.patch @@ -0,0 +1,41 @@ +From fb1cf079346a2838cc44f7116cb4a790e40cc5bf Mon Sep 17 00:00:00 2001 +From: James Hilliard +Date: Tue, 2 Jul 2024 15:08:18 -0600 +Subject: [PATCH] Allow enabling/disabling the use of genpeimg binary + +In some cases we may want to force the use of python3-pefile instead +of genpeimg such as when cross compiling, add a feature option to +allow disabling genpeimg. + +Upstream: https://github.com/fwupd/fwupd-efi/commit/fb1cf079346a2838cc44f7116cb4a790e40cc5bf +Signed-off-by: James Hilliard +--- + meson.build | 2 +- + meson_options.txt | 1 + + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index a3ce068..a5612a6 100644 +--- a/meson.build ++++ b/meson.build +@@ -17,7 +17,7 @@ prefix = get_option('prefix') + libdir = join_paths(prefix, get_option('libdir')) + libexecdir = join_paths(prefix, get_option('libexecdir')) + +-genpeimg = find_program ('genpeimg', required: false) ++genpeimg = find_program ('genpeimg', required: get_option('genpeimg')) + + efi_app_location = join_paths(libexecdir, 'fwupd', 'efi') + host_cpu = host_machine.cpu_family() +diff --git a/meson_options.txt b/meson_options.txt +index 26161e1..588ae29 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -7,3 +7,4 @@ option('efi_sbat_distro_summary', type : 'string', value : '', description : 'SB + option('efi_sbat_distro_pkgname', type : 'string', value : '', description : 'SBAT distribution package name, e.g. fwupd') + option('efi_sbat_distro_version', type : 'string', value : '', description : 'SBAT distribution version, e.g. fwupd-1.5.6.fc33') + option('efi_sbat_distro_url', type : 'string', value : '', description : 'SBAT distribution URL, e.g. https://src.fedoraproject.org/rpms/fwupd') ++option('genpeimg', type : 'feature', description : 'Use genpeimg to add NX support to binaries') +-- +2.34.1 + diff --git a/package/fwupd-efi/0002-Fix-python3-shebang-paths-and-add-python-option.patch b/package/fwupd-efi/0002-Fix-python3-shebang-paths-and-add-python-option.patch new file mode 100644 index 00000000..97475651 --- /dev/null +++ b/package/fwupd-efi/0002-Fix-python3-shebang-paths-and-add-python-option.patch @@ -0,0 +1,95 @@ +From 1cd1ff0216d5beb2a2523031398d4dba7d12729d Mon Sep 17 00:00:00 2001 +From: James Hilliard +Date: Tue, 2 Jul 2024 14:51:26 -0600 +Subject: [PATCH] Fix python3 shebang paths and add python option. + +Using absolute paths can result in the wrong python3 binary being +used, such as when cross compiling using a non-system python3. + +Use the normal python3 env shebang instead. + +Also add a meson option to allow overriding the python path. + +Upstream: https://github.com/fwupd/fwupd-efi/commit/1cd1ff0216d5beb2a2523031398d4dba7d12729d +Signed-off-by: James Hilliard +--- + contrib/reformat-code.py | 2 +- + efi/generate_binary.py | 2 +- + efi/generate_sbat.py | 2 +- + efi/meson.build | 4 ++-- + meson.build | 7 +++++++ + meson_options.txt | 1 + + 6 files changed, 13 insertions(+), 5 deletions(-) + +diff --git a/contrib/reformat-code.py b/contrib/reformat-code.py +index 65a4ac4..ff6014d 100755 +--- a/contrib/reformat-code.py ++++ b/contrib/reformat-code.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/python3 ++#!/usr/bin/env python3 + # + # Copyright (C) 2017 Dell Inc. + # +diff --git a/efi/generate_binary.py b/efi/generate_binary.py +index 443472a..a4611bb 100755 +--- a/efi/generate_binary.py ++++ b/efi/generate_binary.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/python3 ++#!/usr/bin/env python3 + # + # Copyright (C) 2021 Javier Martinez Canillas + # Copyright (C) 2021 Richard Hughes +diff --git a/efi/generate_sbat.py b/efi/generate_sbat.py +index 6c904e5..b9b80ac 100755 +--- a/efi/generate_sbat.py ++++ b/efi/generate_sbat.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/python3 ++#!/usr/bin/env python3 + # + # Copyright (C) 2021 Javier Martinez Canillas + # Copyright (C) 2021 Richard Hughes +diff --git a/efi/meson.build b/efi/meson.build +index 75ade7a..008ba3d 100644 +--- a/efi/meson.build ++++ b/efi/meson.build +@@ -1,5 +1,5 @@ +-generate_sbat = find_program('generate_sbat.py', native: true) +-generate_binary = find_program('generate_binary.py', native: true) ++generate_sbat = [python3, files('generate_sbat.py')] ++generate_binary = [python3, files('generate_binary.py')] + + # get source version, falling back + git = find_program('git', required : false) +diff --git a/meson.build b/meson.build +index a5612a6..5836213 100644 +--- a/meson.build ++++ b/meson.build +@@ -19,6 +19,13 @@ libexecdir = join_paths(prefix, get_option('libexecdir')) + + genpeimg = find_program ('genpeimg', required: get_option('genpeimg')) + ++python3path = get_option('python') ++if python3path == '' ++ python3 = import('python').find_installation('python3') ++else ++ python3 = find_program(python3path) ++endif ++ + efi_app_location = join_paths(libexecdir, 'fwupd', 'efi') + host_cpu = host_machine.cpu_family() + if host_cpu == 'x86' +diff --git a/meson_options.txt b/meson_options.txt +index 588ae29..5f6f521 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -8,3 +8,4 @@ option('efi_sbat_distro_pkgname', type : 'string', value : '', description : 'SB + option('efi_sbat_distro_version', type : 'string', value : '', description : 'SBAT distribution version, e.g. fwupd-1.5.6.fc33') + option('efi_sbat_distro_url', type : 'string', value : '', description : 'SBAT distribution URL, e.g. https://src.fedoraproject.org/rpms/fwupd') + option('genpeimg', type : 'feature', description : 'Use genpeimg to add NX support to binaries') ++option('python', type : 'string', description : 'the absolute path of the python3 binary') +-- +2.34.1 + diff --git a/package/fwupd-efi/Config.in b/package/fwupd-efi/Config.in new file mode 100644 index 00000000..7d3ad6a4 --- /dev/null +++ b/package/fwupd-efi/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_FWUPD_EFI + bool "fwupd-efi" + depends on BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS + select BR2_PACKAGE_GNU_EFI + select BR2_PACKAGE_HOST_PYTHON_USWID + help + EFI Application used by uefi-capsule plugin in fwupd. + + https://github.com/fwupd/fwupd-efi diff --git a/package/fwupd-efi/fwupd-efi.hash b/package/fwupd-efi/fwupd-efi.hash new file mode 100644 index 00000000..35dc9625 --- /dev/null +++ b/package/fwupd-efi/fwupd-efi.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 afd0805a2ad081a7caff2ef5bc004ce3a0147b538015e8eca966341716b1260e fwupd-efi-1.6.tar.xz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/fwupd-efi/fwupd-efi.mk b/package/fwupd-efi/fwupd-efi.mk new file mode 100644 index 00000000..45eeb8d8 --- /dev/null +++ b/package/fwupd-efi/fwupd-efi.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# fwupd-efi +# +################################################################################ + +FWUPD_EFI_VERSION = 1.6 +FWUPD_EFI_SITE = https://github.com/fwupd/fwupd-efi/releases/download/$(FWUPD_EFI_VERSION) +FWUPD_EFI_SOURCE = fwupd-efi-$(FWUPD_EFI_VERSION).tar.xz +FWUPD_EFI_LICENSE = LGPL-2.1+ +FWUPD_EFI_LICENSE_FILES = COPYING +FWUPD_EFI_INSTALL_STAGING = YES +FWUPD_EFI_DEPENDENCIES = host-python-pefile host-python-uswid gnu-efi +FWUPD_EFI_CONF_OPTS = \ + -Defi-libdir=$(STAGING_DIR)/usr/lib \ + -Defi-ldsdir=$(STAGING_DIR)/usr/lib \ + -Defi-includedir=$(STAGING_DIR)/usr/include/efi \ + -Defi_sbat_fwupd_generation=1 \ + -Defi_sbat_distro_id=buildroot \ + -Defi_sbat_distro_summary=Buildroot \ + -Defi_sbat_distro_pkgname=fwupd-efi \ + -Defi_sbat_distro_version=fwupd-efi-$(FWUPD_EFI_VERSION) \ + -Defi_sbat_distro_url=https://gitlab.com/buildroot.org/buildroot/-/tree/master/package/fwupd-efi \ + -Dgenpeimg=disabled \ + -Dpython="$(HOST_DIR)/bin/python3" +FWUPD_EFI_MESON_EXTRA_BINARIES = objcopy='$(TARGET_OBJCOPY)' + +$(eval $(meson-package)) diff --git a/package/fwupd/0001-Only-require-udevdir-when-gudev-support-is-enabled.patch b/package/fwupd/0001-Only-require-udevdir-when-gudev-support-is-enabled.patch new file mode 100644 index 00000000..0f145085 --- /dev/null +++ b/package/fwupd/0001-Only-require-udevdir-when-gudev-support-is-enabled.patch @@ -0,0 +1,35 @@ +From a784ef9b904778b511a6284f46d983906939de6c Mon Sep 17 00:00:00 2001 +From: James Hilliard +Date: Thu, 18 Jul 2024 09:44:15 -0600 +Subject: [PATCH] Only require udevdir when gudev support is enabled + +Signed-off-by: James Hilliard +Upstream: https://github.com/fwupd/fwupd/commit/a784ef9b904778b511a6284f46d983906939de6c +--- + meson.build | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +diff --git a/meson.build b/meson.build +index 22282d73e..f49d08d29 100644 +--- a/meson.build ++++ b/meson.build +@@ -273,10 +273,12 @@ if build_daemon + if not polkit.found() + warning('Polkit is disabled, the daemon will allow ALL client actions') + endif +- udevdir = get_option('udevdir') +- if udevdir == '' and host_machine.system() == 'linux' +- udev = dependency('udev') +- udevdir = udev.get_variable(pkgconfig: 'udevdir') ++ if gudev.found() ++ udevdir = get_option('udevdir') ++ if udevdir == '' and host_machine.system() == 'linux' ++ udev = dependency('udev') ++ udevdir = udev.get_variable(pkgconfig: 'udevdir') ++ endif + endif + endif + libm = cc.find_library('m', required: false) +-- +2.34.1 + diff --git a/package/fwupd/Config.in b/package/fwupd/Config.in new file mode 100644 index 00000000..6a96358e --- /dev/null +++ b/package/fwupd/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_FWUPD + bool "fwupd" + depends on !BR2_STATIC_LIBS # libxmlb + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBJCAT + select BR2_PACKAGE_LIBXMLB + select BR2_PACKAGE_ZLIB + help + Fwupd is a simple daemon to allow session software + to update device firmware on your local machine. + + https://fwupd.org/ + +comment "fwupd 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/package/fwupd/fwupd.hash b/package/fwupd/fwupd.hash new file mode 100644 index 00000000..8da9dc3c --- /dev/null +++ b/package/fwupd/fwupd.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b86a2d7fe1b6cc0ac4f75f3351a78cb3c225880c9e20b932fa078ef472e9fcb2 fwupd-1.9.20.tar.xz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/fwupd/fwupd.mk b/package/fwupd/fwupd.mk new file mode 100644 index 00000000..9283eb43 --- /dev/null +++ b/package/fwupd/fwupd.mk @@ -0,0 +1,208 @@ +################################################################################ +# +# fwupd +# +################################################################################ + +FWUPD_VERSION = 1.9.20 +FWUPD_SITE = https://github.com/fwupd/fwupd/releases/download/$(FWUPD_VERSION) +FWUPD_SOURCE = fwupd-$(FWUPD_VERSION).tar.xz +FWUPD_LICENSE = LGPL-2.1+ +FWUPD_LICENSE_FILES = COPYING +FWUPD_DEPENDENCIES = \ + host-pkgconf \ + host-python-jinja2 \ + libglib2 \ + libjcat \ + libxmlb \ + zlib + +FWUPD_CONF_OPTS = \ + -Dstatic_analysis=false \ + -Dconsolekit=disabled \ + -Dfirmware-packager=true \ + -Ddocs=disabled \ + -Dlvfs=true \ + -Dman=false \ + -Dgusb=disabled \ + -Dpassim=disabled \ + -Dp2p_policy=none \ + -Dcbor=disabled \ + -Dplugin_acpi_phat=enabled \ + -Dplugin_cfu=disabled \ + -Dplugin_ep963x=enabled \ + -Dplugin_fastboot=disabled \ + -Dplugin_logitech_bulkcontroller=disabled \ + -Dplugin_logitech_scribe=disabled \ + -Dplugin_logitech_tap=disabled \ + -Dplugin_pixart_rf=enabled \ + -Dplugin_tpm=disabled \ + -Dplugin_uefi_capsule=enabled \ + -Dplugin_uefi_capsule_splash=false \ + -Dplugin_nitrokey=enabled \ + -Dplugin_mtd=enabled \ + -Dplugin_intel_me=enabled \ + -Dplugin_upower=enabled \ + -Dplugin_powerd=enabled \ + -Dqubes=false \ + -Dsupported_build=enabled \ + -Dlaunchd=disabled \ + -Dtests=false \ + -Dmetainfo=true \ + -Dfish_completion=false \ + -Dcompat_cli=false \ + -Dthinklmi_compat=false \ + -Dpython="$(HOST_DIR)/bin/python3" + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +FWUPD_DEPENDENCIES += gobject-introspection +FWUPD_CONF_OPTS += -Dintrospection=enabled +else +FWUPD_CONF_OPTS += -Dintrospection=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBARCHIVE),y) +FWUPD_DEPENDENCIES += libarchive +FWUPD_CONF_OPTS += -Dlibarchive=enabled +else +FWUPD_CONF_OPTS += -Dlibarchive=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBGUDEV),y) +FWUPD_DEPENDENCIES += libgudev +FWUPD_CONF_OPTS += \ + -Dgudev=enabled \ + -Dplugin_android_boot=enabled \ + -Dplugin_bcm57xx=enabled \ + -Dplugin_emmc=enabled \ + -Dplugin_gpio=enabled \ + -Dplugin_igsc=enabled \ + -Dplugin_kinetic_dp=enabled \ + -Dplugin_parade_lspcon=enabled \ + -Dplugin_realtek_mst=enabled \ + -Dplugin_synaptics_mst=enabled \ + -Dplugin_mediatek_scaler=enabled \ + -Dplugin_scsi=enabled \ + -Dplugin_nvme=enabled \ + -Dplugin_uf2=enabled +else +FWUPD_CONF_OPTS += \ + -Dgudev=disabled \ + -Dplugin_android_boot=disabled \ + -Dplugin_bcm57xx=disabled \ + -Dplugin_emmc=disabled \ + -Dplugin_gpio=disabled \ + -Dplugin_igsc=disabled \ + -Dplugin_kinetic_dp=disabled \ + -Dplugin_parade_lspcon=disabled \ + -Dplugin_realtek_mst=disabled \ + -Dplugin_synaptics_mst=disabled \ + -Dplugin_mediatek_scaler=disabled \ + -Dplugin_scsi=disabled \ + -Dplugin_nvme=disabled \ + -Dplugin_uf2=disabled +endif + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y) +FWUPD_DEPENDENCIES += bluez5_utils +FWUPD_CONF_OPTS += -Dbluez=enabled +else +FWUPD_CONF_OPTS += -Dbluez=disabled +endif + +ifeq ($(BR2_PACKAGE_POLKIT),y) +FWUPD_DEPENDENCIES += polkit +FWUPD_CONF_OPTS += -Dpolkit=enabled +else +FWUPD_CONF_OPTS += -Dpolkit=disabled +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +FWUPD_DEPENDENCIES += gnutls +FWUPD_CONF_OPTS += -Dgnutls=enabled -Dplugin_uefi_pk=enabled +else +FWUPD_CONF_OPTS += -Dgnutls=disabled -Dplugin_uefi_pk=disabled +endif + +ifeq ($(BR2_PACKAGE_SQLITE),y) +FWUPD_DEPENDENCIES += sqlite +FWUPD_CONF_OPTS += -Dsqlite=enabled +else +FWUPD_CONF_OPTS += -Dsqlite=disabled +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +FWUPD_DEPENDENCIES += xz +FWUPD_CONF_OPTS += -Dlzma=enabled +ifeq ($(BR2_i386)$(BR2_x86_64),y) +FWUPD_CONF_OPTS += -Dplugin_intel_spi=true +else +FWUPD_CONF_OPTS += -Dplugin_intel_spi=false +endif +else +FWUPD_CONF_OPTS += -Dlzma=disabled -Dplugin_intel_spi=false +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_AMDGPU)$(BR2_PACKAGE_LIBGUDEV),yy) +FWUPD_DEPENDENCIES += libdrm libgudev +FWUPD_CONF_OPTS += -Dplugin_amdgpu=enabled +else +FWUPD_CONF_OPTS += -Dplugin_amdgpu=disabled +endif + +ifeq ($(BR2_i386)$(BR2_x86_64),y) +FWUPD_CONF_OPTS += -Dplugin_cpu=enabled -Dplugin_msr=enabled -Dhsi=enabled +else +FWUPD_CONF_OPTS += -Dplugin_cpu=disabled -Dplugin_msr=disabled -Dhsi=disabled +endif + +ifeq ($(BR2_PACKAGE_GNUTLS)$(BR2_PACKAGE_LIBGUDEV),yy) +FWUPD_DEPENDENCIES += gnutls libgudev +FWUPD_CONF_OPTS += -Dplugin_synaptics_rmi=enabled +else +FWUPD_CONF_OPTS += -Dplugin_synaptics_rmi=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +FWUPD_DEPENDENCIES += libcurl +FWUPD_CONF_OPTS += -Dplugin_redfish=enabled -Dcurl=enabled +else +FWUPD_CONF_OPTS += -Dplugin_redfish=disabled -Dcurl=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBGUDEV)$(BR2_PACKAGE_LIBMBIM)$(BR2_PACKAGE_LIBQMI)$(BR2_PACKAGE_MODEM_MANAGER),yyyy) +FWUPD_DEPENDENCIES += libgudev libmbim libqmi modem-manager +FWUPD_CONF_OPTS += -Dplugin_modem_manager=enabled +else +FWUPD_CONF_OPTS += -Dplugin_modem_manager=disabled +endif + +ifeq ($(BR2_PACKAGE_FLASHROM),y) +FWUPD_DEPENDENCIES += flashrom +FWUPD_CONF_OPTS += -Dplugin_flashrom=enabled +else +FWUPD_CONF_OPTS += -Dplugin_flashrom=disabled +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +FWUPD_DEPENDENCIES += systemd +FWUPD_CONF_OPTS += -Dsystemd=enabled -Delogind=enabled -Doffline=enabled +else +FWUPD_CONF_OPTS += -Dsystemd=disabled -Delogind=disabled -Doffline=disabled +endif + +ifeq ($(BR2_PACKAGE_FWUPD_EFI),y) +FWUPD_DEPENDENCIES += fwupd-efi +FWUPD_CONF_OPTS += -Defi_binary=true +else +FWUPD_CONF_OPTS += -Defi_binary=false +endif + +ifeq ($(BR2_PACKAGE_BASH_COMPLETION),y) +FWUPD_DEPENDENCIES += bash-completion +FWUPD_CONF_OPTS += -Dbash_completion=true +else +FWUPD_CONF_OPTS += -Dbash_completion=false +endif + +$(eval $(meson-package)) diff --git a/package/fxdiv/0001-CMake-don-t-enable-CXX-unless-building-tests-benchma.patch b/package/fxdiv/0001-CMake-don-t-enable-CXX-unless-building-tests-benchma.patch new file mode 100644 index 00000000..0336f5e1 --- /dev/null +++ b/package/fxdiv/0001-CMake-don-t-enable-CXX-unless-building-tests-benchma.patch @@ -0,0 +1,49 @@ +From 8c2d8fc60306a8edd21182a1f5f267a7aca55763 Mon Sep 17 00:00:00 2001 +From: James Hilliard +Date: Sun, 29 Jan 2023 21:18:28 -0700 +Subject: [PATCH] CMake: don't enable CXX unless building tests/benchmarks + +We only need CXX support when building tests/benchmarks. + +Fixes: +CMake Error at CMakeLists.txt:4 (PROJECT): + No CMAKE_CXX_COMPILER could be found. + + Tell CMake where to find the compiler by setting either the environment + variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path + to the compiler, or to the compiler name if it is in the PATH. + +Signed-off-by: James Hilliard +[Upstream status: +https://github.com/Maratyszcza/FXdiv/pull/3] +--- + CMakeLists.txt | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index bcae6b5..c75f558 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,7 +1,7 @@ + CMAKE_MINIMUM_REQUIRED(VERSION 3.5 FATAL_ERROR) + + # ---[ Project +-PROJECT(FXdiv C CXX) ++PROJECT(FXdiv C) + + # ---[ Options. + OPTION(FXDIV_USE_INLINE_ASSEMBLY "Allow use of inline assembly in FXdiv" OFF) +@@ -16,6 +16,10 @@ ENDIF() + # ---[ CMake options + INCLUDE(GNUInstallDirs) + ++IF(FXDIV_BUILD_TESTS OR FXDIV_BUILD_BENCHMARKS) ++ ENABLE_LANGUAGE(CXX) ++ENDIF() ++ + IF(FXDIV_BUILD_TESTS) + ENABLE_TESTING() + ENDIF() +-- +2.34.1 + diff --git a/package/fxdiv/Config.in b/package/fxdiv/Config.in new file mode 100644 index 00000000..5aa714e4 --- /dev/null +++ b/package/fxdiv/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_FXDIV + bool "fxdiv" + help + Header-only library for division via fixed-point + multiplication by inverse. + + https://github.com/Maratyszcza/FXdiv diff --git a/package/fxdiv/fxdiv.hash b/package/fxdiv/fxdiv.hash new file mode 100644 index 00000000..2142d84e --- /dev/null +++ b/package/fxdiv/fxdiv.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 ec74d882a0a47cfd9c0f95bc4fae9901a4ade802a96a3b76e02671bb7340a4c5 fxdiv-63058eff77e11aa15bf531df5dd34395ec3017c8.tar.gz +# License files, locally calculated +sha256 7cac00006125b1486a27e4801ed66357236e984c540bd323945ab7b66b078ec3 LICENSE diff --git a/package/fxdiv/fxdiv.mk b/package/fxdiv/fxdiv.mk new file mode 100644 index 00000000..06dbf064 --- /dev/null +++ b/package/fxdiv/fxdiv.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# fxdiv +# +################################################################################ + +FXDIV_VERSION = 63058eff77e11aa15bf531df5dd34395ec3017c8 +FXDIV_SITE = $(call github,Maratyszcza,FXdiv,$(FXDIV_VERSION)) +FXDIV_LICENSE = MIT +FXDIV_LICENSE_FILES = LICENSE +FXDIV_INSTALL_STAGING = YES +# Only installs a header +FXDIV_INSTALL_TARGET = NO + +FXDIV_CONF_OPTS = \ + -DFXDIV_BUILD_TESTS=OFF \ + -DFXDIV_BUILD_BENCHMARKS=OFF + +$(eval $(cmake-package)) diff --git a/package/fxload/0001-fix-static-build.patch b/package/fxload/0001-fix-static-build.patch new file mode 100644 index 00000000..9ce49baa --- /dev/null +++ b/package/fxload/0001-fix-static-build.patch @@ -0,0 +1,25 @@ +fix static build + +Fix the following static build failure: + +/home/buildroot/autobuild/instance-3/output-1/host/bin/sh4-buildroot-linux-musl-gcc -o fxload ezusb.o main.o +/home/buildroot/autobuild/instance-3/output-1/host/lib/gcc/sh4-buildroot-linux-musl/10.3.0/../../../../sh4-buildroot-linux-musl/bin/ld: /home/buildroot/autobuild/instance-3/output-1/host/lib/gcc/sh4-buildroot-linux-musl/10.3.0/libgcc.a(unwind-dw2.o): in function `size_of_encoded_value': +/home/buildroot/autobuild/instance-3/output-1/build/host-gcc-final-10.3.0/build/sh4-buildroot-linux-musl/libgcc/../../../libgcc/unwind-pe.h:89: undefined reference to `abort' + +Fixes: + - http://autobuild.buildroot.org/results/bca28d7a6d2b324fb61fe99b8af4b86caa2350ee + +Signed-off-by: Fabrice Fontaine + +diff -Naur fxload-2008_10_13.orig/Makefile fxload-2008_10_13/Makefile +--- fxload-2008_10_13.orig/Makefile 2022-06-11 22:11:02.845916977 +0200 ++++ fxload-2008_10_13/Makefile 2022-06-11 22:12:25.118006070 +0200 +@@ -39,7 +39,7 @@ + + # object files + $(PROG): $(FILES_OBJ) +- $(CC) -o $(PROG) $(FILES_OBJ) ++ $(CC) $(LDFLAGS) -o $(PROG) $(FILES_OBJ) + + %.o: %.c + $(CC) -c $(CFLAGS) $< -o $@ diff --git a/package/fxload/Config.in b/package/fxload/Config.in new file mode 100644 index 00000000..f4d6ef54 --- /dev/null +++ b/package/fxload/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_FXLOAD + bool "fxload" + help + This program is conveniently able to download firmware into + FX, FX2, and FX2LP EZ-USB devices, as well as the original + AnchorChips EZ-USB. + It is intended to be invoked by hotplug scripts when the + unprogrammed device appears on the bus. + + http://sourceforge.net/projects/linux-hotplug/ diff --git a/package/fxload/fxload.hash b/package/fxload/fxload.hash new file mode 100644 index 00000000..68a6ba84 --- /dev/null +++ b/package/fxload/fxload.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 0cc8bfd2a7cbba2f68e0c5767477634922287943c91dd9fcf029fc8b9d577858 fxload-2008_10_13.tar.gz +sha256 dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa COPYING diff --git a/package/fxload/fxload.mk b/package/fxload/fxload.mk new file mode 100644 index 00000000..d3d654a4 --- /dev/null +++ b/package/fxload/fxload.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# fxload +# +################################################################################ + +FXLOAD_VERSION = 2008_10_13 +FXLOAD_SITE = http://downloads.sourceforge.net/project/linux-hotplug/fxload/$(FXLOAD_VERSION) +FXLOAD_LICENSE = GPL-2.0+ +FXLOAD_LICENSE_FILES = COPYING + +FXLOAD_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_63261),y) +FXLOAD_CFLAGS += -O0 +endif + +define FXLOAD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(FXLOAD_CFLAGS)" -C $(@D) all +endef + +define FXLOAD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) prefix=$(TARGET_DIR) -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/gauche/Config.in b/package/gauche/Config.in new file mode 100644 index 00000000..c5f2a519 --- /dev/null +++ b/package/gauche/Config.in @@ -0,0 +1,28 @@ +# Architecture dependency from the bundled bdwgc. +config BR2_PACKAGE_GAUCHE_ARCH_SUPPORTS + bool + default y if BR2_arm || BR2_armeb || BR2_i386 || BR2_m68k || \ + BR2_mips || BR2_mipsel || BR2_mips64 || \ + BR2_mips64el || BR2_powerpc || BR2_powerpc64 || \ + BR2_powerpc64le || BR2_sh || BR2_x86_64 + +config BR2_PACKAGE_GAUCHE + bool "gauche" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_GAUCHE_ARCH_SUPPORTS + depends on !BR2_STATIC_LIBS + help + Gauche is an R7RS Scheme implementation developed to be a + handy script interpreter, which allows programmers and + system administrators to write small to large scripts for + their daily chores. Quick startup, built-in system + interface, native multilingual support are some of its + goals. + + http://practical-scheme.net/gauche/ + +comment "gauche needs a toolchain w/ NPTL, dynamic library" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_GAUCHE_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS diff --git a/package/gauche/gauche.hash b/package/gauche/gauche.hash new file mode 100644 index 00000000..65e7da9e --- /dev/null +++ b/package/gauche/gauche.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking signature +# https://github.com/shirok/Gauche/releases/download/release0_9_12/Gauche-0.9.12.tgz.asc +sha256 b4ae64921b07a96661695ebd5aac0dec813d1a68e546a61609113d7843f5b617 Gauche-0.9.12.tgz + +# Locally calculated +sha256 bc09c643a05e14d7ea8264aa737c5c14d60a20911a0309e7b27da231bbb4525d COPYING diff --git a/package/gauche/gauche.mk b/package/gauche/gauche.mk new file mode 100644 index 00000000..b635c488 --- /dev/null +++ b/package/gauche/gauche.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# gauche +# +################################################################################ + +GAUCHE_VERSION = 0.9.12 +GAUCHE_SOURCE = Gauche-$(GAUCHE_VERSION).tgz +GAUCHE_SITE = https://github.com/shirok/Gauche/releases/download/release$(subst .,_,$(GAUCHE_VERSION)) +GAUCHE_LICENSE = BSD-3-Clause, Boehm-gc, SRFI (srfi-11.scm), reload (reload.scm) +GAUCHE_LICENSE_FILES = COPYING +GAUCHE_DEPENDENCIES = host-gauche + +HOST_GAUCHE_CONF_OPTS = --without-zlib +GAUCHE_CONF_OPTS = --with-libatomic-ops=none + +# Enable embedded axTLS +GAUCHE_TLS_LIBS = axtls + +ifeq ($(BR2_PACKAGE_MBEDTLS),y) +GAUCHE_TLS_LIBS += mbedtls +GAUCHE_DEPENDENCIES += mbedtls +endif + +GAUCHE_CONF_OPTS += --with-tls="$(GAUCHE_TLS_LIBS)" + +ifeq ($(BR2_PACKAGE_ZLIB),y) +GAUCHE_CONF_OPTS += --with-zlib=$(STAGING_DIR) +GAUCHE_DEPENDENCIES += zlib +else +GAUCHE_CONF_OPTS += --without-zlib +endif + +# Detection of c99 support in configure fails without WCHAR. To enable +# automatic detection of c99 support by configure, we need to enable +# WCHAR in toolchain. But actually we do not need WCHAR at gauche +# runtime. So reuesting WCHAR in toolchain just for automatic detection +# will be overkill. To solve this, explicitly -std=gnu99 is specified +# here. +GAUCHE_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -std=gnu99" + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/gawk/Config.in b/package/gawk/Config.in new file mode 100644 index 00000000..e9cf4c5f --- /dev/null +++ b/package/gawk/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_GAWK + bool "gawk" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + A special-purpose programming language which is data driven + rather than procedural. Allows for simple data-reformatting + jobs with just a few lines of code. + + http://www.gnu.org/software/gawk/ + +comment "gawk needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/package/gawk/gawk.hash b/package/gawk/gawk.hash new file mode 100644 index 00000000..3ff0a900 --- /dev/null +++ b/package/gawk/gawk.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +# https://ftp.gnu.org/gnu/gawk/gawk-5.3.0.tar.xz.sig +# Primary key fingerprint: D196 7C63 7887 1317 7D86 1ED7 DF59 7815 937E C0D2 +sha256 ca9c16d3d11d0ff8c69d79dc0b47267e1329a69b39b799895604ed447d3ca90b gawk-5.3.0.tar.xz +# Locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/gawk/gawk.mk b/package/gawk/gawk.mk new file mode 100644 index 00000000..ff1b9920 --- /dev/null +++ b/package/gawk/gawk.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# gawk +# +################################################################################ + +GAWK_VERSION = 5.3.0 +GAWK_SOURCE = gawk-$(GAWK_VERSION).tar.xz +GAWK_SITE = $(BR2_GNU_MIRROR)/gawk +GAWK_DEPENDENCIES = host-gawk +GAWK_LICENSE = GPL-3.0+ +GAWK_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_LIBSIGSEGV),y) +GAWK_DEPENDENCIES += libsigsegv +endif + +# --with-mpfr requires an argument so just let +# configure find it automatically +ifeq ($(BR2_PACKAGE_MPFR),y) +GAWK_DEPENDENCIES += mpfr +else +GAWK_CONF_OPTS += --without-mpfr +endif + +# --with-readline requires an argument so just let +# configure find it automatically +ifeq ($(BR2_PACKAGE_READLINE),y) +GAWK_DEPENDENCIES += readline +else +GAWK_CONF_OPTS += --without-readline +endif + +HOST_GAWK_CONF_OPTS = --without-readline --without-mpfr + +define GAWK_CREATE_SYMLINK + ln -sf gawk $(TARGET_DIR)/usr/bin/awk +endef + +GAWK_POST_INSTALL_TARGET_HOOKS += GAWK_CREATE_SYMLINK + +define HOST_GAWK_CREATE_SYMLINK + ln -sf gawk $(HOST_DIR)/bin/awk +endef + +HOST_GAWK_POST_INSTALL_HOOKS += HOST_GAWK_CREATE_SYMLINK + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/gcc-bare-metal/14.2.0 b/package/gcc-bare-metal/14.2.0 new file mode 120000 index 00000000..07372368 --- /dev/null +++ b/package/gcc-bare-metal/14.2.0 @@ -0,0 +1 @@ +../gcc/14.2.0/ \ No newline at end of file diff --git a/package/gcc-bare-metal/gcc-bare-metal.hash b/package/gcc-bare-metal/gcc-bare-metal.hash new file mode 120000 index 00000000..d417b0dc --- /dev/null +++ b/package/gcc-bare-metal/gcc-bare-metal.hash @@ -0,0 +1 @@ +../gcc/gcc.hash \ No newline at end of file diff --git a/package/gcc-bare-metal/gcc-bare-metal.mk b/package/gcc-bare-metal/gcc-bare-metal.mk new file mode 100644 index 00000000..501f12bc --- /dev/null +++ b/package/gcc-bare-metal/gcc-bare-metal.mk @@ -0,0 +1,63 @@ +################################################################################ +# +# gcc-bare-metal +# +################################################################################ + +HOST_GCC_BARE_METAL_VERSION = 14.2.0 +HOST_GCC_BARE_METAL_SITE = \ + https://ftp.gnu.org/gnu/gcc/gcc-$(HOST_GCC_BARE_METAL_VERSION) +HOST_GCC_BARE_METAL_SOURCE = gcc-$(HOST_GCC_BARE_METAL_VERSION).tar.xz + +HOST_GCC_BARE_METAL_LICENSE = GPL-2.0, GPL-3.0, LGPL-2.1, LGPL-3.0 +HOST_GCC_BARE_METAL_LICENSE_FILES = COPYING COPYING3 COPYING.LIB COPYING3.LIB +HOST_GCC_BARE_METAL_CPE_ID_VENDOR = gnu +HOST_GCC_BARE_METAL_CPE_ID_PRODUCT = gcc + +HOST_GCC_BARE_METAL_DEPENDENCIES = \ + host-binutils-bare-metal \ + host-gmp \ + host-mpc \ + host-mpfr \ + host-isl + +# gcc doesn't support in-tree build, so we create a 'build' +# subdirectory in the gcc sources, and build from there. +define GCC_BARE_METAL_CONFIGURE_SYMLINK + mkdir -p $(@D)/build + ln -sf ../configure $(@D)/build/configure +endef + +HOST_GCC_BARE_METAL_PRE_CONFIGURE_HOOKS += GCC_BARE_METAL_CONFIGURE_SYMLINK +HOST_GCC_BARE_METAL_SUBDIR = build + +HOST_GCC_BARE_METAL_MAKE_OPTS = \ + $(HOST_GCC_COMMON_MAKE_OPTS) \ + all-gcc \ + all-target-libgcc + +HOST_GCC_BARE_METAL_INSTALL_OPTS = install-gcc install-target-libgcc + +HOST_GCC_BARE_METAL_CONF_OPTS = \ + --target=$(TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH_TUPLE) \ + --disable-initfini_array \ + --disable-__cxa_atexit \ + --disable-libstdcxx-pch \ + --with-newlib \ + --disable-threads \ + --enable-plugins \ + --with-gnu-as \ + --disable-libitm \ + --without-long-double-128 \ + --without-headers \ + --enable-languages=c \ + --disable-multilib \ + --with-gmp=$(HOST_DIR) \ + --with-mpc=$(HOST_DIR) \ + --with-mpfr=$(HOST_DIR) \ + --with-isl=$(HOST_DIR) \ + --with-sysroot=$(TOOLCHAIN_BARE_METAL_BUILDROOT_SYSROOT) \ + AR_FOR_TARGET=$(HOST_DIR)/bin/$(TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH_TUPLE)-ar \ + RANLIB_FOR_TARGET=$(HOST_DIR)/bin/$(TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH_TUPLE)-ranlib + +$(eval $(host-autotools-package)) diff --git a/package/gcc/12.4.0/0001-disable-split-stack-for-non-thread-builds.patch b/package/gcc/12.4.0/0001-disable-split-stack-for-non-thread-builds.patch new file mode 100644 index 00000000..e801085d --- /dev/null +++ b/package/gcc/12.4.0/0001-disable-split-stack-for-non-thread-builds.patch @@ -0,0 +1,26 @@ +From 4f67134e0b1404fef4ea72342be8fab4c37ca8c8 Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Mon, 25 Jul 2022 00:29:55 +0200 +Subject: [PATCH] disable split-stack for non-thread builds + +Signed-off-by: Waldemar Brodkorb +[Romain: convert to git format] +Signed-off-by: Romain Naour +--- + libgcc/config/t-stack | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/libgcc/config/t-stack b/libgcc/config/t-stack +index cc0366b4cd8..f3f97e86d60 100644 +--- a/libgcc/config/t-stack ++++ b/libgcc/config/t-stack +@@ -1,4 +1,6 @@ + # Makefile fragment to provide generic support for -fsplit-stack. + # This should be used in config.host for any host which supports + # -fsplit-stack. ++ifeq ($(enable_threads),yes) + LIB2ADD_ST += $(srcdir)/generic-morestack.c $(srcdir)/generic-morestack-thread.c ++endif +-- +2.34.3 + diff --git a/package/gcc/12.4.0/0002-or1k-Only-define-TARGET_HAVE_TLS-when-HAVE_AS_TLS.patch b/package/gcc/12.4.0/0002-or1k-Only-define-TARGET_HAVE_TLS-when-HAVE_AS_TLS.patch new file mode 100644 index 00000000..4bac5972 --- /dev/null +++ b/package/gcc/12.4.0/0002-or1k-Only-define-TARGET_HAVE_TLS-when-HAVE_AS_TLS.patch @@ -0,0 +1,48 @@ +From ca01d2526917ec6e54b30472d3aedfd46d4ca585 Mon Sep 17 00:00:00 2001 +From: Stafford Horne +Date: Thu, 29 Sep 2022 15:32:39 +0100 +Subject: [PATCH] or1k: Only define TARGET_HAVE_TLS when HAVE_AS_TLS + +This was found when testing buildroot with linuxthreads enabled. In +this case, the build passes --disable-tls to the toolchain during +configuration. After building the OpenRISC toolchain it was still +generating TLS code sequences and causing linker failures such as: + + ..../or1k-buildroot-linux-uclibc-gcc -o gpsd-3.24/gpsctl .... -lusb-1.0 -lm -lrt -lnsl + ..../ld: ..../sysroot/usr/lib/libusb-1.0.so: undefined reference to `__tls_get_addr' + +This patch fixes this by disabling tls for the OpenRISC target when requested +via --disable-tls. + +gcc/ChangeLog: + + * config/or1k/or1k.cc (TARGET_HAVE_TLS): Only define if + HAVE_AS_TLS is defined. + +Tested-by: Yann E. MORIN + +Upstream: https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=ca01d2526917ec6e54b30472d3aedfd46d4ca585 + +Signed-off-by: Bernd Kuhls +--- + gcc/config/or1k/or1k.cc | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/gcc/config/or1k/or1k.cc b/gcc/config/or1k/or1k.cc +index da2f59062ba..0ce7b234417 100644 +--- a/gcc/config/or1k/or1k.cc ++++ b/gcc/config/or1k/or1k.cc +@@ -2206,8 +2206,10 @@ or1k_output_mi_thunk (FILE *file, tree thunk_fndecl, + #undef TARGET_LEGITIMATE_ADDRESS_P + #define TARGET_LEGITIMATE_ADDRESS_P or1k_legitimate_address_p + ++#ifdef HAVE_AS_TLS + #undef TARGET_HAVE_TLS + #define TARGET_HAVE_TLS true ++#endif + + #undef TARGET_HAVE_SPECULATION_SAFE_VALUE + #define TARGET_HAVE_SPECULATION_SAFE_VALUE speculation_safe_value_not_needed +-- +2.39.3 + diff --git a/package/gcc/12.4.0/0003-xtensa-add-.note.GNU-stack-section-on-linux.patch b/package/gcc/12.4.0/0003-xtensa-add-.note.GNU-stack-section-on-linux.patch new file mode 100644 index 00000000..4c79c344 --- /dev/null +++ b/package/gcc/12.4.0/0003-xtensa-add-.note.GNU-stack-section-on-linux.patch @@ -0,0 +1,105 @@ +From 38cdfcc4b2cca8d251ff8d8d34201dfe9849333e Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Thu, 2 Mar 2023 09:45:41 -0800 +Subject: [PATCH] xtensa: add .note.GNU-stack section on linux + +gcc/ + * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro. + +libgcc/ + * config/xtensa/crti.S: Add .note.GNU-stack section on linux. + * config/xtensa/crtn.S: Likewise. + * config/xtensa/lib1funcs.S: Likewise. + * config/xtensa/lib2funcs.S: Likewise. + +Signed-off-by: Max Filippov +Signed-off-by: Waldemar Brodkorb +Upstream: https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=6360bf9a2d08f08c151464c77c0da53cd702ff25 +--- + gcc/config/xtensa/linux.h | 1 + + libgcc/config/xtensa/crti.S | 6 ++++++ + libgcc/config/xtensa/crtn.S | 6 ++++++ + libgcc/config/xtensa/lib1funcs.S | 6 ++++++ + libgcc/config/xtensa/lib2funcs.S | 6 ++++++ + 5 files changed, 25 insertions(+) + +diff --git a/gcc/config/xtensa/linux.h b/gcc/config/xtensa/linux.h +index edce618fb94..fe0e3a43797 100644 +--- a/gcc/config/xtensa/linux.h ++++ b/gcc/config/xtensa/linux.h +@@ -69,3 +69,4 @@ along with GCC; see the file COPYING3. If not see + + #undef DBX_REGISTER_NUMBER + ++#define TARGET_ASM_FILE_END file_end_indicate_exec_stack +diff --git a/libgcc/config/xtensa/crti.S b/libgcc/config/xtensa/crti.S +index 3de7bc101f4..0996e7cb29b 100644 +--- a/libgcc/config/xtensa/crti.S ++++ b/libgcc/config/xtensa/crti.S +@@ -26,6 +26,12 @@ + + #include "xtensa-config.h" + ++/* An executable stack is *not* required for these functions. */ ++#if defined(__ELF__) && defined(__linux__) ++.section .note.GNU-stack,"",%progbits ++.previous ++#endif ++ + .section .init + .globl _init + .type _init,@function +diff --git a/libgcc/config/xtensa/crtn.S b/libgcc/config/xtensa/crtn.S +index 06b932edb14..a4cc9830096 100644 +--- a/libgcc/config/xtensa/crtn.S ++++ b/libgcc/config/xtensa/crtn.S +@@ -27,6 +27,12 @@ + + #include "xtensa-config.h" + ++/* An executable stack is *not* required for these functions. */ ++#if defined(__ELF__) && defined(__linux__) ++.section .note.GNU-stack,"",%progbits ++.previous ++#endif ++ + .section .init + #if XCHAL_HAVE_WINDOWED && !__XTENSA_CALL0_ABI__ + retw +diff --git a/libgcc/config/xtensa/lib1funcs.S b/libgcc/config/xtensa/lib1funcs.S +index 5a2bd20534f..7177dd4f73a 100644 +--- a/libgcc/config/xtensa/lib1funcs.S ++++ b/libgcc/config/xtensa/lib1funcs.S +@@ -25,6 +25,12 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + + #include "xtensa-config.h" + ++/* An executable stack is *not* required for these functions. */ ++#if defined(__ELF__) && defined(__linux__) ++.section .note.GNU-stack,"",%progbits ++.previous ++#endif ++ + /* Define macros for the ABS and ADDX* instructions to handle cases + where they are not included in the Xtensa processor configuration. */ + +diff --git a/libgcc/config/xtensa/lib2funcs.S b/libgcc/config/xtensa/lib2funcs.S +index 681bac1be8c..a40c1a45604 100644 +--- a/libgcc/config/xtensa/lib2funcs.S ++++ b/libgcc/config/xtensa/lib2funcs.S +@@ -25,6 +25,12 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + + #include "xtensa-config.h" + ++/* An executable stack is *not* required for these functions. */ ++#if defined(__ELF__) && defined(__linux__) ++.section .note.GNU-stack,"",%progbits ++.previous ++#endif ++ + /* __xtensa_libgcc_window_spill: This function flushes out all but the + current register window. This is used to set up the stack so that + arbitrary frames can be accessed. */ +-- +2.39.2 + diff --git a/package/gcc/12.4.0/0004-Remove-crypt-and-crypt_r-interceptors.patch b/package/gcc/12.4.0/0004-Remove-crypt-and-crypt_r-interceptors.patch new file mode 100644 index 00000000..de3c27c8 --- /dev/null +++ b/package/gcc/12.4.0/0004-Remove-crypt-and-crypt_r-interceptors.patch @@ -0,0 +1,140 @@ +From bf61483b6a5e32cb397f97a1cd4af2a41d46ade3 Mon Sep 17 00:00:00 2001 +From: Fangrui Song +Date: Fri, 28 Apr 2023 09:59:17 -0700 +Subject: [PATCH] Remove crypt and crypt_r interceptors + +From Florian Weimer's D144073 + +> On GNU/Linux (glibc), the crypt and crypt_r functions are not part of the main shared object (libc.so.6), but libcrypt (with multiple possible sonames). The sanitizer libraries do not depend on libcrypt, so it can happen that during sanitizer library initialization, no real implementation will be found because the crypt, crypt_r functions are not present in the process image (yet). If its interceptors are called nevertheless, this results in a call through a null pointer when the sanitizer library attempts to forward the call to the real implementation. +> +> Many distributions have already switched to libxcrypt, a library that is separate from glibc and that can be build with sanitizers directly (avoiding the need for interceptors). This patch disables building the interceptor for glibc targets. + +Let's remove crypt and crypt_r interceptors (D68431) to fix issues with +newer glibc. + +For older glibc, msan will not know that an uninstrumented crypt_r call +initializes `data`, so there is a risk for false positives. However, with some +codebase survey, I think crypt_r uses are very few and the call sites typically +have a `memset(&data, 0, sizeof(data));` anyway. + +Fix https://github.com/google/sanitizers/issues/1365 +Related: https://bugzilla.redhat.com/show_bug.cgi?id=2169432 + +Reviewed By: #sanitizers, fweimer, thesamesam, vitalybuka + +Differential Revision: https://reviews.llvm.org/D149403 + +[Thomas: taken from Crosstool-NG] +Upstream: (llvm) https://github.com/llvm/llvm-project/commit/d7bead833631486e337e541e692d9b4a1ca14edd +Upstream: (gcc) https://github.com/gcc-mirror/gcc/commit/d96e14ceb9475f9bccbbc0325d5b11419fad9246 +Signed-off-by: Thomas Petazzoni +--- + .../sanitizer_common_interceptors.inc | 37 ------------------- + .../sanitizer_platform_interceptors.h | 2 - + .../sanitizer_platform_limits_posix.cpp | 2 - + .../sanitizer_platform_limits_posix.h | 1 - + 4 files changed, 42 deletions(-) + +diff --git a/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc b/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc +index abb38ccfa15d..61250226aa56 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc ++++ b/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc +@@ -9977,41 +9977,6 @@ INTERCEPTOR(SSIZE_T, getrandom, void *buf, SIZE_T buflen, unsigned int flags) { + #define INIT_GETRANDOM + #endif + +-#if SANITIZER_INTERCEPT_CRYPT +-INTERCEPTOR(char *, crypt, char *key, char *salt) { +- void *ctx; +- COMMON_INTERCEPTOR_ENTER(ctx, crypt, key, salt); +- COMMON_INTERCEPTOR_READ_RANGE(ctx, key, internal_strlen(key) + 1); +- COMMON_INTERCEPTOR_READ_RANGE(ctx, salt, internal_strlen(salt) + 1); +- char *res = REAL(crypt)(key, salt); +- if (res != nullptr) +- COMMON_INTERCEPTOR_INITIALIZE_RANGE(res, internal_strlen(res) + 1); +- return res; +-} +-#define INIT_CRYPT COMMON_INTERCEPT_FUNCTION(crypt); +-#else +-#define INIT_CRYPT +-#endif +- +-#if SANITIZER_INTERCEPT_CRYPT_R +-INTERCEPTOR(char *, crypt_r, char *key, char *salt, void *data) { +- void *ctx; +- COMMON_INTERCEPTOR_ENTER(ctx, crypt_r, key, salt, data); +- COMMON_INTERCEPTOR_READ_RANGE(ctx, key, internal_strlen(key) + 1); +- COMMON_INTERCEPTOR_READ_RANGE(ctx, salt, internal_strlen(salt) + 1); +- char *res = REAL(crypt_r)(key, salt, data); +- if (res != nullptr) { +- COMMON_INTERCEPTOR_WRITE_RANGE(ctx, data, +- __sanitizer::struct_crypt_data_sz); +- COMMON_INTERCEPTOR_INITIALIZE_RANGE(res, internal_strlen(res) + 1); +- } +- return res; +-} +-#define INIT_CRYPT_R COMMON_INTERCEPT_FUNCTION(crypt_r); +-#else +-#define INIT_CRYPT_R +-#endif +- + #if SANITIZER_INTERCEPT_GETENTROPY + INTERCEPTOR(int, getentropy, void *buf, SIZE_T buflen) { + void *ctx; +@@ -10521,8 +10486,6 @@ static void InitializeCommonInterceptors() { + INIT_GETUSERSHELL; + INIT_SL_INIT; + INIT_GETRANDOM; +- INIT_CRYPT; +- INIT_CRYPT_R; + INIT_GETENTROPY; + INIT_QSORT; + INIT_QSORT_R; +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h b/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h +index 14610f2df78d..787db66ae2b7 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h +@@ -568,8 +568,6 @@ + #define SANITIZER_INTERCEPT_FDEVNAME SI_FREEBSD + #define SANITIZER_INTERCEPT_GETUSERSHELL (SI_POSIX && !SI_ANDROID) + #define SANITIZER_INTERCEPT_SL_INIT (SI_FREEBSD || SI_NETBSD) +-#define SANITIZER_INTERCEPT_CRYPT (SI_POSIX && !SI_ANDROID) +-#define SANITIZER_INTERCEPT_CRYPT_R (SI_LINUX && !SI_ANDROID) + + #define SANITIZER_INTERCEPT_GETRANDOM \ + ((SI_LINUX && __GLIBC_PREREQ(2, 25)) || SI_FREEBSD) +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp +index c335f33dda58..bfdccd5df078 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp +@@ -154,7 +154,6 @@ typedef struct user_fpregs elf_fpregset_t; + #include + #include + #include +-#include + #endif // SANITIZER_ANDROID + + #include +@@ -254,7 +253,6 @@ namespace __sanitizer { + unsigned struct_ustat_sz = SIZEOF_STRUCT_USTAT; + unsigned struct_rlimit64_sz = sizeof(struct rlimit64); + unsigned struct_statvfs64_sz = sizeof(struct statvfs64); +- unsigned struct_crypt_data_sz = sizeof(struct crypt_data); + #endif // SANITIZER_LINUX && !SANITIZER_ANDROID + + #if SANITIZER_LINUX && !SANITIZER_ANDROID +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +index da53b5abef27..2605bb849a78 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +@@ -298,7 +298,6 @@ extern unsigned struct_msqid_ds_sz; + extern unsigned struct_mq_attr_sz; + extern unsigned struct_timex_sz; + extern unsigned struct_statvfs_sz; +-extern unsigned struct_crypt_data_sz; + #endif // SANITIZER_LINUX && !SANITIZER_ANDROID + + struct __sanitizer_iovec { +-- +2.43.0 + diff --git a/package/gcc/12.4.0/0005-Undef-_TIME_BITS-along-with-_FILE_OFFSET_BITS-on-Lin.patch b/package/gcc/12.4.0/0005-Undef-_TIME_BITS-along-with-_FILE_OFFSET_BITS-on-Lin.patch new file mode 100644 index 00000000..386c9287 --- /dev/null +++ b/package/gcc/12.4.0/0005-Undef-_TIME_BITS-along-with-_FILE_OFFSET_BITS-on-Lin.patch @@ -0,0 +1,44 @@ +From e45f12ecf703eed45515d451cf014fba32e7410b Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 3 Feb 2023 11:48:35 -0800 +Subject: [PATCH] Undef _TIME_BITS along with _FILE_OFFSET_BITS on Linux + +On 32-bit glibc>=2.34 systems using 64bit time_t build fails because +_FILE_OFFSET_BITS is undefined here but _TIME_BITS is still set to 64 + +Fixes + +``` +/usr/include/features-time64.h:26:5: error: "_TIME_BITS=64 is allowed + only with _FILE_OFFSET_BITS=64" +| # error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64" +| ^ +| 1 error generated. +``` + +Reviewed By: thesamesam, MaskRay + +Differential Revision: https://reviews.llvm.org/D140812 + +Upstream: https://github.com/llvm/llvm-project/commit/26800a2c7e7996dc773b4e990dd5cca41c45e1a9 +Upstream: https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=d53b3d94aaf211ffb2159614f5aaaf03ceb861cc +Signed-off-by: Thomas Petazzoni +--- + .../sanitizer_common/sanitizer_platform_limits_posix.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp +index bfdccd5df07..4cedcbfb4bf 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp +@@ -18,6 +18,7 @@ + // depends on _FILE_OFFSET_BITS setting. + // To get this "true" dirent definition, we undefine _FILE_OFFSET_BITS below. + #undef _FILE_OFFSET_BITS ++#undef _TIME_BITS + #endif + + // Must go after undef _FILE_OFFSET_BITS. +-- +2.45.2 + diff --git a/package/gcc/12.4.0/0006-libsanitizer-also-undef-_TIME_BITS-in-sanitizer_proc.patch b/package/gcc/12.4.0/0006-libsanitizer-also-undef-_TIME_BITS-in-sanitizer_proc.patch new file mode 100644 index 00000000..80c3378d --- /dev/null +++ b/package/gcc/12.4.0/0006-libsanitizer-also-undef-_TIME_BITS-in-sanitizer_proc.patch @@ -0,0 +1,53 @@ +From 940a0c955bca98aba937c4bfe3fe4a4c17dddb85 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 18 Jul 2024 23:13:41 +0200 +Subject: [PATCH] libsanitizer: also undef _TIME_BITS in + sanitizer_procmaps_solaris.cpp + +Upstream commit +https://github.com/llvm/llvm-project/commit/26800a2c7e7996dc773b4e990dd5cca41c45e1a9 +of LLVM added a #undef _TIME_BITS in +libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp to +fix the build on 32-bit Linux platforms that have enabled 64-bit +time_t using _TIME_BITS=64. + +Indeed, _TIME_BITS=64 can only be used when _FILE_OFFSET_BITS=64, but +sanitizer_platform_limits_posix.cpp undefines _FILE_OFFSET_BITS before +including any header file. To fix this, the upstream fix was to also +undef _TIME_BITS. + +This commit simply does the same in sanitizer_procmaps_solaris.cpp, +which also gets compiled under Linux (despite what the file name +says). In practice on Linux hosts (where _TIME_BITS=64 matters), +sanitizer_procmaps_solaris.cpp will expand to nothing, as pretty much +the rest of the file is inside a #ifdef SANITIZER_SOLARIS...#endif. So +the #undef _FILE_OFFSET_BITS and #undef _TIME_BITS are only here +before including sanitizer_platform.h, which will set the +SANITIZER_LINUX/SANITIZER_SOLARIS define depending on the platform. + +Fixes: + +armeb-buildroot-linux-gnueabi/sysroot/usr/include/features-time64.h:26:5: error: #error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64" + 26 | # error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64" + +Upstream: https://gcc.gnu.org/pipermail/gcc-patches/2024-July/657811.html +Signed-off-by: Thomas Petazzoni +--- + libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp b/libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp +index e16c4e938cb..ca88cf2c2df 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp ++++ b/libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp +@@ -11,6 +11,7 @@ + + // Before Solaris 11.4, doesn't work in a largefile environment. + #undef _FILE_OFFSET_BITS ++#undef _TIME_BITS + #include "sanitizer_platform.h" + #if SANITIZER_SOLARIS + #include "sanitizer_common.h" +-- +2.45.2 + diff --git a/package/gcc/13.3.0/0001-disable-split-stack-for-non-thread-builds.patch b/package/gcc/13.3.0/0001-disable-split-stack-for-non-thread-builds.patch new file mode 100644 index 00000000..e801085d --- /dev/null +++ b/package/gcc/13.3.0/0001-disable-split-stack-for-non-thread-builds.patch @@ -0,0 +1,26 @@ +From 4f67134e0b1404fef4ea72342be8fab4c37ca8c8 Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Mon, 25 Jul 2022 00:29:55 +0200 +Subject: [PATCH] disable split-stack for non-thread builds + +Signed-off-by: Waldemar Brodkorb +[Romain: convert to git format] +Signed-off-by: Romain Naour +--- + libgcc/config/t-stack | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/libgcc/config/t-stack b/libgcc/config/t-stack +index cc0366b4cd8..f3f97e86d60 100644 +--- a/libgcc/config/t-stack ++++ b/libgcc/config/t-stack +@@ -1,4 +1,6 @@ + # Makefile fragment to provide generic support for -fsplit-stack. + # This should be used in config.host for any host which supports + # -fsplit-stack. ++ifeq ($(enable_threads),yes) + LIB2ADD_ST += $(srcdir)/generic-morestack.c $(srcdir)/generic-morestack-thread.c ++endif +-- +2.34.3 + diff --git a/package/gcc/13.3.0/0002-RISC-V-fix-build-issue-with-gcc-4.9.x.patch b/package/gcc/13.3.0/0002-RISC-V-fix-build-issue-with-gcc-4.9.x.patch new file mode 100644 index 00000000..4368f084 --- /dev/null +++ b/package/gcc/13.3.0/0002-RISC-V-fix-build-issue-with-gcc-4.9.x.patch @@ -0,0 +1,48 @@ +From e5253b777eefef7d66d3bd1c641de6d133d3573d Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Tue, 2 May 2023 14:21:55 +0200 +Subject: [PATCH] RISC-V: fix build issue with gcc 4.9.x + +GCC should still build with GCC 4.8.3 or newer [1] +using C++03 by default. But a recent change in +RISC-V port introduced a C++11 feature "std::log2" [2]. + +Use log2 from the C header, without the namespace [3]. + +[1] https://gcc.gnu.org/install/prerequisites.html +[2] https://gcc.gnu.org/git/?p=gcc.git;a=patch;h=7caa1ae5e451e780fbc4746a54e3f19d4f4304dc +[3] https://stackoverflow.com/questions/26733413/error-log2-is-not-a-member-of-std + +Fixes: +https://gitlab.com/buildroot.org/toolchains-builder/-/jobs/4202276589 + +gcc/ChangeLog: + * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without + the namespace. + +Signed-off-by: Romain Naour +Upstream: https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=87c347c2897537a6aa391efbfc5ed00c625434fe +Signed-off-by: Romain Naour +--- + gcc/config/riscv/genrvv-type-indexer.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/gcc/config/riscv/genrvv-type-indexer.cc b/gcc/config/riscv/genrvv-type-indexer.cc +index e677b55290c..eebe382d1c3 100644 +--- a/gcc/config/riscv/genrvv-type-indexer.cc ++++ b/gcc/config/riscv/genrvv-type-indexer.cc +@@ -115,9 +115,9 @@ same_ratio_eew_type (unsigned sew, int lmul_log2, unsigned eew, bool unsigned_p, + if (sew == eew) + elmul_log2 = lmul_log2; + else if (sew > eew) +- elmul_log2 = lmul_log2 - std::log2 (sew / eew); ++ elmul_log2 = lmul_log2 - log2 (sew / eew); + else /* sew < eew */ +- elmul_log2 = lmul_log2 + std::log2 (eew / sew); ++ elmul_log2 = lmul_log2 + log2 (eew / sew); + + if (float_p) + return floattype (eew, elmul_log2); +-- +2.34.3 + diff --git a/package/gcc/13.3.0/0003-Remove-crypt-and-crypt_r-interceptors.patch b/package/gcc/13.3.0/0003-Remove-crypt-and-crypt_r-interceptors.patch new file mode 100644 index 00000000..98bfed59 --- /dev/null +++ b/package/gcc/13.3.0/0003-Remove-crypt-and-crypt_r-interceptors.patch @@ -0,0 +1,146 @@ +From 3521d93c552a11640a959ee61d551c225981c448 Mon Sep 17 00:00:00 2001 +From: Fangrui Song +Date: Fri, 28 Apr 2023 09:59:17 -0700 +Subject: [PATCH] Remove crypt and crypt_r interceptors + +From Florian Weimer's D144073 + +> On GNU/Linux (glibc), the crypt and crypt_r functions are not part of the main shared object (libc.so.6), but libcrypt (with multiple possible sonames). The sanitizer libraries do not depend on libcrypt, so it can happen that during sanitizer library initialization, no real implementation will be found because the crypt, crypt_r functions are not present in the process image (yet). If its interceptors are called nevertheless, this results in a call through a null pointer when the sanitizer library attempts to forward the call to the real implementation. +> +> Many distributions have already switched to libxcrypt, a library that is separate from glibc and that can be build with sanitizers directly (avoiding the need for interceptors). This patch disables building the interceptor for glibc targets. + +Let's remove crypt and crypt_r interceptors (D68431) to fix issues with +newer glibc. + +For older glibc, msan will not know that an uninstrumented crypt_r call +initializes `data`, so there is a risk for false positives. However, with some +codebase survey, I think crypt_r uses are very few and the call sites typically +have a `memset(&data, 0, sizeof(data));` anyway. + +Fix https://github.com/google/sanitizers/issues/1365 +Related: https://bugzilla.redhat.com/show_bug.cgi?id=2169432 + +Reviewed By: #sanitizers, fweimer, thesamesam, vitalybuka + +Differential Revision: https://reviews.llvm.org/D149403 + +[Thomas: taken from Crosstool-NG] +Upstream: (llvm) https://github.com/llvm/llvm-project/commit/d7bead833631486e337e541e692d9b4a1ca14edd +Upstream: (gcc) https://github.com/gcc-mirror/gcc/commit/d96e14ceb9475f9bccbbc0325d5b11419fad9246 +Signed-off-by: Thomas Petazzoni +--- + .../sanitizer_common_interceptors.inc | 37 ------------------- + .../sanitizer_platform_interceptors.h | 2 - + .../sanitizer_platform_limits_posix.cpp | 8 ---- + .../sanitizer_platform_limits_posix.h | 1 - + 4 files changed, 48 deletions(-) + +diff --git a/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc b/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc +index ba4b80081f0..662c4199742 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc ++++ b/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc +@@ -10187,41 +10187,6 @@ INTERCEPTOR(SSIZE_T, getrandom, void *buf, SIZE_T buflen, unsigned int flags) { + #define INIT_GETRANDOM + #endif + +-#if SANITIZER_INTERCEPT_CRYPT +-INTERCEPTOR(char *, crypt, char *key, char *salt) { +- void *ctx; +- COMMON_INTERCEPTOR_ENTER(ctx, crypt, key, salt); +- COMMON_INTERCEPTOR_READ_RANGE(ctx, key, internal_strlen(key) + 1); +- COMMON_INTERCEPTOR_READ_RANGE(ctx, salt, internal_strlen(salt) + 1); +- char *res = REAL(crypt)(key, salt); +- if (res != nullptr) +- COMMON_INTERCEPTOR_INITIALIZE_RANGE(res, internal_strlen(res) + 1); +- return res; +-} +-#define INIT_CRYPT COMMON_INTERCEPT_FUNCTION(crypt); +-#else +-#define INIT_CRYPT +-#endif +- +-#if SANITIZER_INTERCEPT_CRYPT_R +-INTERCEPTOR(char *, crypt_r, char *key, char *salt, void *data) { +- void *ctx; +- COMMON_INTERCEPTOR_ENTER(ctx, crypt_r, key, salt, data); +- COMMON_INTERCEPTOR_READ_RANGE(ctx, key, internal_strlen(key) + 1); +- COMMON_INTERCEPTOR_READ_RANGE(ctx, salt, internal_strlen(salt) + 1); +- char *res = REAL(crypt_r)(key, salt, data); +- if (res != nullptr) { +- COMMON_INTERCEPTOR_WRITE_RANGE(ctx, data, +- __sanitizer::struct_crypt_data_sz); +- COMMON_INTERCEPTOR_INITIALIZE_RANGE(res, internal_strlen(res) + 1); +- } +- return res; +-} +-#define INIT_CRYPT_R COMMON_INTERCEPT_FUNCTION(crypt_r); +-#else +-#define INIT_CRYPT_R +-#endif +- + #if SANITIZER_INTERCEPT_GETENTROPY + INTERCEPTOR(int, getentropy, void *buf, SIZE_T buflen) { + void *ctx; +@@ -10772,8 +10737,6 @@ static void InitializeCommonInterceptors() { + INIT_GETUSERSHELL; + INIT_SL_INIT; + INIT_GETRANDOM; +- INIT_CRYPT; +- INIT_CRYPT_R; + INIT_GETENTROPY; + INIT_QSORT; + INIT_QSORT_R; +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h b/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h +index 8307b1ec28b..d50166ee6ce 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h +@@ -571,8 +571,6 @@ + #define SANITIZER_INTERCEPT_FDEVNAME SI_FREEBSD + #define SANITIZER_INTERCEPT_GETUSERSHELL (SI_POSIX && !SI_ANDROID) + #define SANITIZER_INTERCEPT_SL_INIT (SI_FREEBSD || SI_NETBSD) +-#define SANITIZER_INTERCEPT_CRYPT (SI_POSIX && !SI_ANDROID) +-#define SANITIZER_INTERCEPT_CRYPT_R (SI_LINUX && !SI_ANDROID) + + #define SANITIZER_INTERCEPT_GETRANDOM \ + ((SI_LINUX && __GLIBC_PREREQ(2, 25)) || SI_FREEBSD) +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp +index c85cf1626a7..bcbd143d19d 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp +@@ -176,10 +176,6 @@ typedef struct user_fpregs elf_fpregset_t; + # include "sanitizer_platform_interceptors.h" + # include "sanitizer_platform_limits_posix.h" + +-#if SANITIZER_INTERCEPT_CRYPT_R +-#include +-#endif +- + namespace __sanitizer { + unsigned struct_utsname_sz = sizeof(struct utsname); + unsigned struct_stat_sz = sizeof(struct stat); +@@ -283,10 +279,6 @@ namespace __sanitizer { + unsigned struct_statvfs64_sz = sizeof(struct statvfs64); + #endif // SANITIZER_LINUX && !SANITIZER_ANDROID + +-#if SANITIZER_INTERCEPT_CRYPT_R +- unsigned struct_crypt_data_sz = sizeof(struct crypt_data); +-#endif +- + #if SANITIZER_LINUX && !SANITIZER_ANDROID + unsigned struct_timex_sz = sizeof(struct timex); + unsigned struct_msqid_ds_sz = sizeof(struct msqid_ds); +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +index 44dd3d9e22d..29ebb304a9b 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +@@ -319,7 +319,6 @@ extern unsigned struct_msqid_ds_sz; + extern unsigned struct_mq_attr_sz; + extern unsigned struct_timex_sz; + extern unsigned struct_statvfs_sz; +-extern unsigned struct_crypt_data_sz; + #endif // SANITIZER_LINUX && !SANITIZER_ANDROID + + struct __sanitizer_iovec { +-- +2.43.0 + diff --git a/package/gcc/13.3.0/0004-Undef-_TIME_BITS-along-with-_FILE_OFFSET_BITS-on-Lin.patch b/package/gcc/13.3.0/0004-Undef-_TIME_BITS-along-with-_FILE_OFFSET_BITS-on-Lin.patch new file mode 100644 index 00000000..a3be0914 --- /dev/null +++ b/package/gcc/13.3.0/0004-Undef-_TIME_BITS-along-with-_FILE_OFFSET_BITS-on-Lin.patch @@ -0,0 +1,44 @@ +From 88b73eedcfa0fc58aee2555377e6f7d4de153282 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 3 Feb 2023 11:48:35 -0800 +Subject: [PATCH] Undef _TIME_BITS along with _FILE_OFFSET_BITS on Linux + +On 32-bit glibc>=2.34 systems using 64bit time_t build fails because +_FILE_OFFSET_BITS is undefined here but _TIME_BITS is still set to 64 + +Fixes + +``` +/usr/include/features-time64.h:26:5: error: "_TIME_BITS=64 is allowed + only with _FILE_OFFSET_BITS=64" +| # error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64" +| ^ +| 1 error generated. +``` + +Reviewed By: thesamesam, MaskRay + +Differential Revision: https://reviews.llvm.org/D140812 + +Upstream: https://github.com/llvm/llvm-project/commit/26800a2c7e7996dc773b4e990dd5cca41c45e1a9 +Upstream: https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=d53b3d94aaf211ffb2159614f5aaaf03ceb861cc +Signed-off-by: Thomas Petazzoni +--- + .../sanitizer_common/sanitizer_platform_limits_posix.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp +index bcbd143d19d..1b23898b374 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp +@@ -18,6 +18,7 @@ + // depends on _FILE_OFFSET_BITS setting. + // To get this "true" dirent definition, we undefine _FILE_OFFSET_BITS below. + #undef _FILE_OFFSET_BITS ++#undef _TIME_BITS + #endif + + // Must go after undef _FILE_OFFSET_BITS. +-- +2.45.2 + diff --git a/package/gcc/13.3.0/0005-libsanitizer-also-undef-_TIME_BITS-in-sanitizer_proc.patch b/package/gcc/13.3.0/0005-libsanitizer-also-undef-_TIME_BITS-in-sanitizer_proc.patch new file mode 100644 index 00000000..73b09ac3 --- /dev/null +++ b/package/gcc/13.3.0/0005-libsanitizer-also-undef-_TIME_BITS-in-sanitizer_proc.patch @@ -0,0 +1,53 @@ +From 7ad54084a2c07cca6d03dfe274893e903852d359 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 18 Jul 2024 23:13:41 +0200 +Subject: [PATCH] libsanitizer: also undef _TIME_BITS in + sanitizer_procmaps_solaris.cpp + +Upstream commit +https://github.com/llvm/llvm-project/commit/26800a2c7e7996dc773b4e990dd5cca41c45e1a9 +of LLVM added a #undef _TIME_BITS in +libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp to +fix the build on 32-bit Linux platforms that have enabled 64-bit +time_t using _TIME_BITS=64. + +Indeed, _TIME_BITS=64 can only be used when _FILE_OFFSET_BITS=64, but +sanitizer_platform_limits_posix.cpp undefines _FILE_OFFSET_BITS before +including any header file. To fix this, the upstream fix was to also +undef _TIME_BITS. + +This commit simply does the same in sanitizer_procmaps_solaris.cpp, +which also gets compiled under Linux (despite what the file name +says). In practice on Linux hosts (where _TIME_BITS=64 matters), +sanitizer_procmaps_solaris.cpp will expand to nothing, as pretty much +the rest of the file is inside a #ifdef SANITIZER_SOLARIS...#endif. So +the #undef _FILE_OFFSET_BITS and #undef _TIME_BITS are only here +before including sanitizer_platform.h, which will set the +SANITIZER_LINUX/SANITIZER_SOLARIS define depending on the platform. + +Fixes: + +armeb-buildroot-linux-gnueabi/sysroot/usr/include/features-time64.h:26:5: error: #error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64" + 26 | # error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64" + +Upstream: https://gcc.gnu.org/pipermail/gcc-patches/2024-July/657811.html +Signed-off-by: Thomas Petazzoni +--- + libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp b/libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp +index eeb49e2afe3..1b23fd4d512 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp ++++ b/libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp +@@ -11,6 +11,7 @@ + + // Before Solaris 11.4, doesn't work in a largefile environment. + #undef _FILE_OFFSET_BITS ++#undef _TIME_BITS + #include "sanitizer_platform.h" + #if SANITIZER_SOLARIS + # include +-- +2.45.2 + diff --git a/package/gcc/14.2.0/0001-disable-split-stack-for-non-thread-builds.patch b/package/gcc/14.2.0/0001-disable-split-stack-for-non-thread-builds.patch new file mode 100644 index 00000000..e801085d --- /dev/null +++ b/package/gcc/14.2.0/0001-disable-split-stack-for-non-thread-builds.patch @@ -0,0 +1,26 @@ +From 4f67134e0b1404fef4ea72342be8fab4c37ca8c8 Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Mon, 25 Jul 2022 00:29:55 +0200 +Subject: [PATCH] disable split-stack for non-thread builds + +Signed-off-by: Waldemar Brodkorb +[Romain: convert to git format] +Signed-off-by: Romain Naour +--- + libgcc/config/t-stack | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/libgcc/config/t-stack b/libgcc/config/t-stack +index cc0366b4cd8..f3f97e86d60 100644 +--- a/libgcc/config/t-stack ++++ b/libgcc/config/t-stack +@@ -1,4 +1,6 @@ + # Makefile fragment to provide generic support for -fsplit-stack. + # This should be used in config.host for any host which supports + # -fsplit-stack. ++ifeq ($(enable_threads),yes) + LIB2ADD_ST += $(srcdir)/generic-morestack.c $(srcdir)/generic-morestack-thread.c ++endif +-- +2.34.3 + diff --git a/package/gcc/14.2.0/0002-libsanitizer-also-undef-_TIME_BITS-in-sanitizer_proc.patch b/package/gcc/14.2.0/0002-libsanitizer-also-undef-_TIME_BITS-in-sanitizer_proc.patch new file mode 100644 index 00000000..b9dfcd0d --- /dev/null +++ b/package/gcc/14.2.0/0002-libsanitizer-also-undef-_TIME_BITS-in-sanitizer_proc.patch @@ -0,0 +1,53 @@ +From 71de45698f60f8feabc0e91336f1e2fb387902df Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 18 Jul 2024 23:13:41 +0200 +Subject: [PATCH] libsanitizer: also undef _TIME_BITS in + sanitizer_procmaps_solaris.cpp + +Upstream commit +https://github.com/llvm/llvm-project/commit/26800a2c7e7996dc773b4e990dd5cca41c45e1a9 +of LLVM added a #undef _TIME_BITS in +libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp to +fix the build on 32-bit Linux platforms that have enabled 64-bit +time_t using _TIME_BITS=64. + +Indeed, _TIME_BITS=64 can only be used when _FILE_OFFSET_BITS=64, but +sanitizer_platform_limits_posix.cpp undefines _FILE_OFFSET_BITS before +including any header file. To fix this, the upstream fix was to also +undef _TIME_BITS. + +This commit simply does the same in sanitizer_procmaps_solaris.cpp, +which also gets compiled under Linux (despite what the file name +says). In practice on Linux hosts (where _TIME_BITS=64 matters), +sanitizer_procmaps_solaris.cpp will expand to nothing, as pretty much +the rest of the file is inside a #ifdef SANITIZER_SOLARIS...#endif. So +the #undef _FILE_OFFSET_BITS and #undef _TIME_BITS are only here +before including sanitizer_platform.h, which will set the +SANITIZER_LINUX/SANITIZER_SOLARIS define depending on the platform. + +Fixes: + +armeb-buildroot-linux-gnueabi/sysroot/usr/include/features-time64.h:26:5: error: #error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64" + 26 | # error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64" + +Upstream: https://gcc.gnu.org/pipermail/gcc-patches/2024-July/657811.html +Signed-off-by: Thomas Petazzoni +--- + libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp b/libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp +index eeb49e2afe3..1b23fd4d512 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp ++++ b/libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp +@@ -11,6 +11,7 @@ + + // Before Solaris 11.4, doesn't work in a largefile environment. + #undef _FILE_OFFSET_BITS ++#undef _TIME_BITS + #include "sanitizer_platform.h" + #if SANITIZER_SOLARIS + # include +-- +2.45.2 + diff --git a/package/gcc/14.2.0/0003-libquadmath-Fix-up-libquadmath-math-sqrtq.c-compilat.patch b/package/gcc/14.2.0/0003-libquadmath-Fix-up-libquadmath-math-sqrtq.c-compilat.patch new file mode 100644 index 00000000..b6ed2ffe --- /dev/null +++ b/package/gcc/14.2.0/0003-libquadmath-Fix-up-libquadmath-math-sqrtq.c-compilat.patch @@ -0,0 +1,57 @@ +From ba9356565695728ce0c852f7de3de27f8745611d Mon Sep 17 00:00:00 2001 +From: Jakub Jelinek +Date: Sat, 3 Aug 2024 20:37:54 +0200 +Subject: [PATCH] libquadmath: Fix up libquadmath/math/sqrtq.c compilation in + some powerpc* configurations [PR116007] + +My PR114623 change started using soft-fp.h and quad.h for the sqrtq implementation. +Unfortunately, that seems to fail building in some powerpc* configurations, where +TFmode isn't available. +quad.h has: + #ifndef TFtype + typedef float TFtype __attribute__ ((mode (TF))); + #endif +and uses TFtype. quad.h has: + /* Define the complex type corresponding to __float128 + ("_Complex __float128" is not allowed) */ + #if (!defined(_ARCH_PPC)) || defined(__LONG_DOUBLE_IEEE128__) + typedef _Complex float __attribute__((mode(TC))) __complex128; + #else + typedef _Complex float __attribute__((mode(KC))) __complex128; + #endif +with the conditional and KCmode use added during porting of libquadmath +to powerpc*, so I've just defined TFtype for powerpc when __LONG_DOUBLE_IEEE128__ +isn't defined; I could define it to float __attribute__ ((mode (KF))) but it +seemed easier to just define it to __float128 which should do the same thing. + +2024-08-03 Jakub Jelinek + + PR target/116007 + * math/sqrtq.c (TFtype): For PowerPC without __LONG_DOUBLE_IEEE128__ + define to __float128 before including soft-fp.h and quad.h. + +(cherry picked from commit 3ac02e67503ccffa3dfeeffc0a60fce6bdaca43b) +Upstream: https://gcc.gnu.org/g:3ac02e67503ccffa3dfeeffc0a60fce6bdaca43b +Upstream: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116007 +Signed-off-by: Thomas Petazzoni +--- + libquadmath/math/sqrtq.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/libquadmath/math/sqrtq.c b/libquadmath/math/sqrtq.c +index 8ca2828d42c..a58998a0667 100644 +--- a/libquadmath/math/sqrtq.c ++++ b/libquadmath/math/sqrtq.c +@@ -9,6 +9,9 @@ + && defined(FE_TOWARDZERO) \ + && defined(FE_INEXACT) + #define USE_SOFT_FP 1 ++#if defined(_ARCH_PPC) && !defined(__LONG_DOUBLE_IEEE128__) ++#define TFtype __float128 ++#endif + #include "../../libgcc/soft-fp/soft-fp.h" + #include "../../libgcc/soft-fp/quad.h" + #endif +-- +2.46.0 + diff --git a/package/gcc/8.4.0/0001-xtensa-fix-PR-target-91880.patch b/package/gcc/8.4.0/0001-xtensa-fix-PR-target-91880.patch new file mode 100644 index 00000000..119826b5 --- /dev/null +++ b/package/gcc/8.4.0/0001-xtensa-fix-PR-target-91880.patch @@ -0,0 +1,51 @@ +From 28623c81b50663e946790649352cb1b3ed23954d Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Tue, 24 Sep 2019 04:15:17 -0700 +Subject: [PATCH] xtensa: fix PR target/91880 + +Xtensa hwloop_optimize segfaults when zero overhead loop is about to be +inserted as the first instruction of the function. +Insert zero overhead loop instruction into new basic block before the +loop when basic block that precedes the loop is empty. + +2019-09-26 Max Filippov +gcc/ + * config/xtensa/xtensa.c (hwloop_optimize): Insert zero overhead + loop instruction into new basic block before the loop when basic + block that precedes the loop is empty. + +Signed-off-by: Max Filippov +[Romain: rebase on gcc 8.4.0] +Signed-off-by: Romain Naour +--- +Backported from: r276166 + + gcc/config/xtensa/xtensa.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c +index 08f9f7c7a8f..de206527810 100644 +--- a/gcc/config/xtensa/xtensa.c ++++ b/gcc/config/xtensa/xtensa.c +@@ -4232,7 +4232,9 @@ hwloop_optimize (hwloop_info loop) + + seq = get_insns (); + +- if (!single_succ_p (entry_bb) || vec_safe_length (loop->incoming) > 1) ++ entry_after = BB_END (entry_bb); ++ if (!single_succ_p (entry_bb) || vec_safe_length (loop->incoming) > 1 ++ || !entry_after) + { + basic_block new_bb; + edge e; +@@ -4253,7 +4255,6 @@ hwloop_optimize (hwloop_info loop) + } + else + { +- entry_after = BB_END (entry_bb); + while (DEBUG_INSN_P (entry_after) + || (NOTE_P (entry_after) + && NOTE_KIND (entry_after) != NOTE_INSN_BASIC_BLOCK)) +-- +2.24.1 + diff --git a/package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch b/package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch new file mode 100644 index 00000000..ec2bf883 --- /dev/null +++ b/package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch @@ -0,0 +1,322 @@ +From bb9b71752267444b4360442b89129bfc0ae938d3 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Wed, 20 Jan 2021 23:06:07 +0100 +Subject: [PATCH] Revert "re PR target/92095 (internal error with -O1 + -mcpu=niagara2 -fPIE)" + +This reverts commit 3fcce773f0f914c0499b130c6e9efa0e45ee54a0. + +Building the Buildroot defconfig qemu_sparc_ss10_defconfig using +gcc 8.4, 9.3 and 10 produce a broken rootfs that trigger illegal +instruction messages. + +gcc 8.3, 9.2 are the latest working gcc version. +git bisect between gcc 8.4 and 8.4 allowed to identify +the commit that introcuce the regression. + +Reverting this patch allowed to produce a working rootfs. + +Signed-off-by: Romain Naour +Cc: Eric Botcazou +--- + gcc/config/sparc/sparc-protos.h | 1 - + gcc/config/sparc/sparc.c | 121 +++++++----------- + gcc/config/sparc/sparc.md | 5 +- + .../gcc.c-torture/compile/20191108-1.c | 14 -- + gcc/testsuite/gcc.target/sparc/overflow-3.c | 2 +- + gcc/testsuite/gcc.target/sparc/overflow-4.c | 2 +- + gcc/testsuite/gcc.target/sparc/overflow-5.c | 2 +- + 7 files changed, 53 insertions(+), 94 deletions(-) + delete mode 100644 gcc/testsuite/gcc.c-torture/compile/20191108-1.c + +diff --git a/gcc/config/sparc/sparc-protos.h b/gcc/config/sparc/sparc-protos.h +index b3f73c2f2bf..71a067e871c 100644 +--- a/gcc/config/sparc/sparc-protos.h ++++ b/gcc/config/sparc/sparc-protos.h +@@ -69,7 +69,6 @@ extern void sparc_split_reg_mem (rtx, rtx, machine_mode); + extern void sparc_split_mem_reg (rtx, rtx, machine_mode); + extern int sparc_split_reg_reg_legitimate (rtx, rtx); + extern void sparc_split_reg_reg (rtx, rtx, machine_mode); +-extern const char *output_load_pcrel_sym (rtx *); + extern const char *output_ubranch (rtx, rtx_insn *); + extern const char *output_cbranch (rtx, rtx, int, int, int, rtx_insn *); + extern const char *output_return (rtx_insn *); +diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c +index 73032d33596..db1b428db90 100644 +--- a/gcc/config/sparc/sparc.c ++++ b/gcc/config/sparc/sparc.c +@@ -4200,6 +4200,13 @@ eligible_for_sibcall_delay (rtx_insn *trial) + static bool + sparc_cannot_force_const_mem (machine_mode mode, rtx x) + { ++ /* After IRA has run in PIC mode, it is too late to put anything into the ++ constant pool if the PIC register hasn't already been initialized. */ ++ if ((lra_in_progress || reload_in_progress) ++ && flag_pic ++ && !crtl->uses_pic_offset_table) ++ return true; ++ + switch (GET_CODE (x)) + { + case CONST_INT: +@@ -4235,11 +4242,9 @@ sparc_cannot_force_const_mem (machine_mode mode, rtx x) + } + + /* Global Offset Table support. */ +-static GTY(()) rtx got_symbol_rtx = NULL_RTX; +-static GTY(()) rtx got_register_rtx = NULL_RTX; + static GTY(()) rtx got_helper_rtx = NULL_RTX; +- +-static GTY(()) bool got_helper_needed = false; ++static GTY(()) rtx got_register_rtx = NULL_RTX; ++static GTY(()) rtx got_symbol_rtx = NULL_RTX; + + /* Return the SYMBOL_REF for the Global Offset Table. */ + +@@ -4252,6 +4257,27 @@ sparc_got (void) + return got_symbol_rtx; + } + ++#ifdef HAVE_GAS_HIDDEN ++# define USE_HIDDEN_LINKONCE 1 ++#else ++# define USE_HIDDEN_LINKONCE 0 ++#endif ++ ++static void ++get_pc_thunk_name (char name[32], unsigned int regno) ++{ ++ const char *reg_name = reg_names[regno]; ++ ++ /* Skip the leading '%' as that cannot be used in a ++ symbol name. */ ++ reg_name += 1; ++ ++ if (USE_HIDDEN_LINKONCE) ++ sprintf (name, "__sparc_get_pc_thunk.%s", reg_name); ++ else ++ ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC", regno); ++} ++ + /* Wrapper around the load_pcrel_sym{si,di} patterns. */ + + static rtx +@@ -4271,78 +4297,30 @@ gen_load_pcrel_sym (rtx op0, rtx op1, rtx op2) + return insn; + } + +-/* Output the load_pcrel_sym{si,di} patterns. */ +- +-const char * +-output_load_pcrel_sym (rtx *operands) +-{ +- if (flag_delayed_branch) +- { +- output_asm_insn ("sethi\t%%hi(%a1-4), %0", operands); +- output_asm_insn ("call\t%a2", operands); +- output_asm_insn (" add\t%0, %%lo(%a1+4), %0", operands); +- } +- else +- { +- output_asm_insn ("sethi\t%%hi(%a1-8), %0", operands); +- output_asm_insn ("add\t%0, %%lo(%a1-4), %0", operands); +- output_asm_insn ("call\t%a2", operands); +- output_asm_insn (" nop", NULL); +- } +- +- if (operands[2] == got_helper_rtx) +- got_helper_needed = true; +- +- return ""; +-} +- +-#ifdef HAVE_GAS_HIDDEN +-# define USE_HIDDEN_LINKONCE 1 +-#else +-# define USE_HIDDEN_LINKONCE 0 +-#endif +- + /* Emit code to load the GOT register. */ + + void + load_got_register (void) + { +- rtx insn; ++ if (!got_register_rtx) ++ got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM); + + if (TARGET_VXWORKS_RTP) +- { +- if (!got_register_rtx) +- got_register_rtx = pic_offset_table_rtx; +- +- insn = gen_vxworks_load_got (); +- } ++ emit_insn (gen_vxworks_load_got ()); + else + { +- if (!got_register_rtx) +- got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM); +- + /* The GOT symbol is subject to a PC-relative relocation so we need a + helper function to add the PC value and thus get the final value. */ + if (!got_helper_rtx) + { + char name[32]; +- +- /* Skip the leading '%' as that cannot be used in a symbol name. */ +- if (USE_HIDDEN_LINKONCE) +- sprintf (name, "__sparc_get_pc_thunk.%s", +- reg_names[REGNO (got_register_rtx)] + 1); +- else +- ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC", +- REGNO (got_register_rtx)); +- ++ get_pc_thunk_name (name, GLOBAL_OFFSET_TABLE_REGNUM); + got_helper_rtx = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name)); + } + +- insn +- = gen_load_pcrel_sym (got_register_rtx, sparc_got (), got_helper_rtx); ++ emit_insn (gen_load_pcrel_sym (got_register_rtx, sparc_got (), ++ got_helper_rtx)); + } +- +- emit_insn (insn); + } + + /* Ensure that we are not using patterns that are not OK with PIC. */ +@@ -5494,7 +5472,7 @@ save_local_or_in_reg_p (unsigned int regno, int leaf_function) + return true; + + /* GOT register (%l7) if needed. */ +- if (got_register_rtx && regno == REGNO (got_register_rtx)) ++ if (regno == GLOBAL_OFFSET_TABLE_REGNUM && got_register_rtx) + return true; + + /* If the function accesses prior frames, the frame pointer and the return +@@ -12475,9 +12453,10 @@ static void + sparc_file_end (void) + { + /* If we need to emit the special GOT helper function, do so now. */ +- if (got_helper_needed) ++ if (got_helper_rtx) + { + const char *name = XSTR (got_helper_rtx, 0); ++ const char *reg_name = reg_names[GLOBAL_OFFSET_TABLE_REGNUM]; + #ifdef DWARF2_UNWIND_INFO + bool do_cfi; + #endif +@@ -12514,22 +12493,17 @@ sparc_file_end (void) + #ifdef DWARF2_UNWIND_INFO + do_cfi = dwarf2out_do_cfi_asm (); + if (do_cfi) +- output_asm_insn (".cfi_startproc", NULL); ++ fprintf (asm_out_file, "\t.cfi_startproc\n"); + #endif + if (flag_delayed_branch) +- { +- output_asm_insn ("jmp\t%%o7+8", NULL); +- output_asm_insn (" add\t%%o7, %0, %0", &got_register_rtx); +- } ++ fprintf (asm_out_file, "\tjmp\t%%o7+8\n\t add\t%%o7, %s, %s\n", ++ reg_name, reg_name); + else +- { +- output_asm_insn ("add\t%%o7, %0, %0", &got_register_rtx); +- output_asm_insn ("jmp\t%%o7+8", NULL); +- output_asm_insn (" nop", NULL); +- } ++ fprintf (asm_out_file, "\tadd\t%%o7, %s, %s\n\tjmp\t%%o7+8\n\t nop\n", ++ reg_name, reg_name); + #ifdef DWARF2_UNWIND_INFO + if (do_cfi) +- output_asm_insn (".cfi_endproc", NULL); ++ fprintf (asm_out_file, "\t.cfi_endproc\n"); + #endif + } + +@@ -13035,10 +13009,7 @@ sparc_init_pic_reg (void) + edge entry_edge; + rtx_insn *seq; + +- /* In PIC mode, we need to always initialize the PIC register if optimization +- is enabled, because we are called from IRA and LRA may later force things +- to the constant pool for optimization purposes. */ +- if (!flag_pic || (!crtl->uses_pic_offset_table && !optimize)) ++ if (!crtl->uses_pic_offset_table) + return; + + start_sequence (); +diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md +index 468e2cc5d3b..25134bd1148 100644 +--- a/gcc/config/sparc/sparc.md ++++ b/gcc/config/sparc/sparc.md +@@ -1601,7 +1601,10 @@ + (clobber (reg:P O7_REG))] + "REGNO (operands[0]) == INTVAL (operands[3])" + { +- return output_load_pcrel_sym (operands); ++ if (flag_delayed_branch) ++ return "sethi\t%%hi(%a1-4), %0\n\tcall\t%a2\n\t add\t%0, %%lo(%a1+4), %0"; ++ else ++ return "sethi\t%%hi(%a1-8), %0\n\tadd\t%0, %%lo(%a1-4), %0\n\tcall\t%a2\n\t nop"; + } + [(set (attr "type") (const_string "multi")) + (set (attr "length") +diff --git a/gcc/testsuite/gcc.c-torture/compile/20191108-1.c b/gcc/testsuite/gcc.c-torture/compile/20191108-1.c +deleted file mode 100644 +index 7929751bb06..00000000000 +--- a/gcc/testsuite/gcc.c-torture/compile/20191108-1.c ++++ /dev/null +@@ -1,14 +0,0 @@ +-/* PR target/92095 */ +-/* Testcase by Sergei Trofimovich */ +- +-typedef union { +- double a; +- int b[2]; +-} c; +- +-double d(int e) +-{ +- c f; +- (&f)->b[0] = 15728640; +- return e ? -(&f)->a : (&f)->a; +-} +diff --git a/gcc/testsuite/gcc.target/sparc/overflow-3.c b/gcc/testsuite/gcc.target/sparc/overflow-3.c +index 18253bb6e5e..8cb24f52f7b 100644 +--- a/gcc/testsuite/gcc.target/sparc/overflow-3.c ++++ b/gcc/testsuite/gcc.target/sparc/overflow-3.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O -fno-pie" } */ ++/* { dg-options "-O" } */ + /* { dg-require-effective-target lp64 } */ + + #include +diff --git a/gcc/testsuite/gcc.target/sparc/overflow-4.c b/gcc/testsuite/gcc.target/sparc/overflow-4.c +index fb30877efb9..868edea2b9e 100644 +--- a/gcc/testsuite/gcc.target/sparc/overflow-4.c ++++ b/gcc/testsuite/gcc.target/sparc/overflow-4.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O -fno-pie -mno-vis3" } */ ++/* { dg-options "-O -mno-vis3" } */ + /* { dg-require-effective-target lp64 } */ + + #include +diff --git a/gcc/testsuite/gcc.target/sparc/overflow-5.c b/gcc/testsuite/gcc.target/sparc/overflow-5.c +index 509d957715d..501ce04f7a1 100644 +--- a/gcc/testsuite/gcc.target/sparc/overflow-5.c ++++ b/gcc/testsuite/gcc.target/sparc/overflow-5.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O -fno-pie -mvis3" } */ ++/* { dg-options "-O -mvis3" } */ + /* { dg-require-effective-target lp64 } */ + + #include +-- +2.25.4 + diff --git a/package/gcc/8.4.0/0003-libsanitizer-Remove-cyclades-from-libsanitizer.patch b/package/gcc/8.4.0/0003-libsanitizer-Remove-cyclades-from-libsanitizer.patch new file mode 100644 index 00000000..b4c14acf --- /dev/null +++ b/package/gcc/8.4.0/0003-libsanitizer-Remove-cyclades-from-libsanitizer.patch @@ -0,0 +1,123 @@ +From 29210b168cc458480f71b242ad964ecd79214e38 Mon Sep 17 00:00:00 2001 +From: Tamar Christina +Date: Fri, 21 May 2021 12:16:56 +0100 +Subject: [PATCH] libsanitizer: Remove cyclades from libsanitizer + +The Linux kernel has removed the interface to cyclades from +the latest kernel headers[1] due to them being orphaned for the +past 13 years. + +libsanitizer uses this header when compiling against glibc, but +glibcs itself doesn't seem to have any references to cyclades. + +Further more it seems that the driver is broken in the kernel and +the firmware doesn't seem to be available anymore. + +As such since this is breaking the build of libsanitizer (and so the +GCC bootstrap[2]) I propose to remove this. + +[1] https://lkml.org/lkml/2021/3/2/153 +[2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100379 + +libsanitizer/ChangeLog: + + PR sanitizer/100379 + * sanitizer_common/sanitizer_common_interceptors_ioctl.inc: Cherry-pick + llvm-project revision f7c5351552387bd43f6ca3631016d7f0dfe0f135. + * sanitizer_common/sanitizer_platform_limits_posix.cc: Likewise. + * sanitizer_common/sanitizer_platform_limits_posix.h: Likewise. + +Signed-off-by: Maxim Kochetkov +--- + .../sanitizer_common_interceptors_ioctl.inc | 9 --------- + .../sanitizer_platform_limits_posix.cc | 11 ----------- + .../sanitizer_platform_limits_posix.h | 10 ---------- + 3 files changed, 30 deletions(-) + +diff --git a/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc b/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +index a68534c5a0a..85ab53e7430 100755 +--- a/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc ++++ b/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +@@ -361,15 +361,6 @@ static void ioctl_table_fill() { + + #if SANITIZER_LINUX && !SANITIZER_ANDROID + // _(SIOCDEVPLIP, WRITE, struct_ifreq_sz); // the same as EQL_ENSLAVE +- _(CYGETDEFTHRESH, WRITE, sizeof(int)); +- _(CYGETDEFTIMEOUT, WRITE, sizeof(int)); +- _(CYGETMON, WRITE, struct_cyclades_monitor_sz); +- _(CYGETTHRESH, WRITE, sizeof(int)); +- _(CYGETTIMEOUT, WRITE, sizeof(int)); +- _(CYSETDEFTHRESH, NONE, 0); +- _(CYSETDEFTIMEOUT, NONE, 0); +- _(CYSETTHRESH, NONE, 0); +- _(CYSETTIMEOUT, NONE, 0); + _(EQL_EMANCIPATE, WRITE, struct_ifreq_sz); + _(EQL_ENSLAVE, WRITE, struct_ifreq_sz); + _(EQL_GETMASTRCFG, WRITE, struct_ifreq_sz); +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +index 5c720b2e700..17f2c78b389 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +@@ -157,7 +157,6 @@ typedef struct user_fpregs elf_fpregset_t; + # include + #endif + #include +-#include + #include + #include + #include +@@ -464,7 +463,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr); + + #if SANITIZER_LINUX && !SANITIZER_ANDROID + unsigned struct_ax25_parms_struct_sz = sizeof(struct ax25_parms_struct); +- unsigned struct_cyclades_monitor_sz = sizeof(struct cyclades_monitor); + #if EV_VERSION > (0x010000) + unsigned struct_input_keymap_entry_sz = sizeof(struct input_keymap_entry); + #else +@@ -831,15 +829,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr); + #endif // SANITIZER_LINUX || SANITIZER_FREEBSD + + #if SANITIZER_LINUX && !SANITIZER_ANDROID +- unsigned IOCTL_CYGETDEFTHRESH = CYGETDEFTHRESH; +- unsigned IOCTL_CYGETDEFTIMEOUT = CYGETDEFTIMEOUT; +- unsigned IOCTL_CYGETMON = CYGETMON; +- unsigned IOCTL_CYGETTHRESH = CYGETTHRESH; +- unsigned IOCTL_CYGETTIMEOUT = CYGETTIMEOUT; +- unsigned IOCTL_CYSETDEFTHRESH = CYSETDEFTHRESH; +- unsigned IOCTL_CYSETDEFTIMEOUT = CYSETDEFTIMEOUT; +- unsigned IOCTL_CYSETTHRESH = CYSETTHRESH; +- unsigned IOCTL_CYSETTIMEOUT = CYSETTIMEOUT; + unsigned IOCTL_EQL_EMANCIPATE = EQL_EMANCIPATE; + unsigned IOCTL_EQL_ENSLAVE = EQL_ENSLAVE; + unsigned IOCTL_EQL_GETMASTRCFG = EQL_GETMASTRCFG; +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +index 9c1429623ab..9f05c4e9ea7 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +@@ -1004,7 +1004,6 @@ struct __sanitizer_cookie_io_functions_t { + + #if SANITIZER_LINUX && !SANITIZER_ANDROID + extern unsigned struct_ax25_parms_struct_sz; +- extern unsigned struct_cyclades_monitor_sz; + extern unsigned struct_input_keymap_entry_sz; + extern unsigned struct_ipx_config_data_sz; + extern unsigned struct_kbdiacrs_sz; +@@ -1349,15 +1348,6 @@ struct __sanitizer_cookie_io_functions_t { + #endif // SANITIZER_LINUX || SANITIZER_FREEBSD + + #if SANITIZER_LINUX && !SANITIZER_ANDROID +- extern unsigned IOCTL_CYGETDEFTHRESH; +- extern unsigned IOCTL_CYGETDEFTIMEOUT; +- extern unsigned IOCTL_CYGETMON; +- extern unsigned IOCTL_CYGETTHRESH; +- extern unsigned IOCTL_CYGETTIMEOUT; +- extern unsigned IOCTL_CYSETDEFTHRESH; +- extern unsigned IOCTL_CYSETDEFTIMEOUT; +- extern unsigned IOCTL_CYSETTHRESH; +- extern unsigned IOCTL_CYSETTIMEOUT; + extern unsigned IOCTL_EQL_EMANCIPATE; + extern unsigned IOCTL_EQL_ENSLAVE; + extern unsigned IOCTL_EQL_GETMASTRCFG; +-- +2.31.1 + diff --git a/package/gcc/8.4.0/0004-disable-split-stack-for-non-thread-builds.patch b/package/gcc/8.4.0/0004-disable-split-stack-for-non-thread-builds.patch new file mode 100644 index 00000000..8d99e892 --- /dev/null +++ b/package/gcc/8.4.0/0004-disable-split-stack-for-non-thread-builds.patch @@ -0,0 +1,26 @@ +From 1ddcb4870533af1b71b6afb75b8f2b271fd88eb4 Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Mon, 25 Jul 2022 00:29:55 +0200 +Subject: [PATCH] disable split-stack for non-thread builds + +Signed-off-by: Waldemar Brodkorb +[Romain: convert to git format] +Signed-off-by: Romain Naour +--- + libgcc/config/t-stack | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/libgcc/config/t-stack b/libgcc/config/t-stack +index cc0366b4cd8..f3f97e86d60 100644 +--- a/libgcc/config/t-stack ++++ b/libgcc/config/t-stack +@@ -1,4 +1,6 @@ + # Makefile fragment to provide generic support for -fsplit-stack. + # This should be used in config.host for any host which supports + # -fsplit-stack. ++ifeq ($(enable_threads),yes) + LIB2ADD_ST += $(srcdir)/generic-morestack.c $(srcdir)/generic-morestack-thread.c ++endif +-- +2.34.3 + diff --git a/package/gcc/Config.in b/package/gcc/Config.in new file mode 100644 index 00000000..d2a26abb --- /dev/null +++ b/package/gcc/Config.in @@ -0,0 +1,3 @@ +config BR2_PACKAGE_GCC_FINAL + bool + default y if BR2_TOOLCHAIN_BUILDROOT diff --git a/package/gcc/Config.in.host b/package/gcc/Config.in.host new file mode 100644 index 00000000..911bc2f4 --- /dev/null +++ b/package/gcc/Config.in.host @@ -0,0 +1,140 @@ +comment "GCC Options" + +choice + prompt "GCC compiler Version" + default BR2_GCC_VERSION_ARC if BR2_GCC_VERSION_4_8_ARC # legacy + default BR2_GCC_VERSION_ARC if BR2_arc + default BR2_GCC_VERSION_POWERPC_SPE if BR2_POWERPC_CPU_HAS_SPE + default BR2_GCC_VERSION_13_X + help + Select the version of gcc you wish to use. + +config BR2_GCC_VERSION_ARC + bool "gcc arc (13.1)" + # Only supported architecture + depends on BR2_arc + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + +config BR2_GCC_VERSION_POWERPC_SPE + bool "gcc powerpc spe" + # powerpc spe support has been deprecated since gcc 8.x. + # https://gcc.gnu.org/ml/gcc/2018-04/msg00102.html + depends on BR2_POWERPC_CPU_HAS_SPE + select BR2_TOOLCHAIN_GCC_AT_LEAST_8 + +config BR2_GCC_VERSION_12_X + bool "gcc 12.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + # powerpc spe support has been deprecated since gcc 8.x. + # https://gcc.gnu.org/ml/gcc/2018-04/msg00102.html + depends on !BR2_POWERPC_CPU_HAS_SPE + # ARC HS48 rel 31 only supported by gcc arc fork. + depends on !BR2_archs4x_rel31 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + +config BR2_GCC_VERSION_13_X + bool "gcc 13.x" + # powerpc spe support has been deprecated since gcc 8.x. + # https://gcc.gnu.org/ml/gcc/2018-04/msg00102.html + depends on !BR2_POWERPC_CPU_HAS_SPE + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + +config BR2_GCC_VERSION_14_X + bool "gcc 14.x" + # powerpc spe support has been deprecated since gcc 8.x. + # https://gcc.gnu.org/ml/gcc/2018-04/msg00102.html + depends on !BR2_POWERPC_CPU_HAS_SPE + select BR2_TOOLCHAIN_GCC_AT_LEAST_14 + +endchoice + +# libcilkrts was introduced in gcc 4.9 and removed in gcc 8.x +config BR2_GCC_SUPPORTS_LIBCILKRTS + bool + default y if !BR2_TOOLCHAIN_GCC_AT_LEAST_8 + +config BR2_GCC_SUPPORTS_DLANG + bool + default y if BR2_aarch64 + default y if BR2_arm + default y if BR2_i386 + default y if BR2_mips || BR2_mipsel + default y if BR2_mips64 || BR2_mips64el + default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + default y if BR2_x86_64 + default y if BR2_riscv && !BR2_RISCV_64 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_9 + depends on BR2_TOOLCHAIN_USES_GLIBC + # "The D front-end is now itself written in D, in order to build GDC, you + # will need a working GDC compiler (GCC version 9.1 or later)." + # https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=5fee5ec362f7a243f459e6378fd49dfc89dc9fb5 + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_12 + +config BR2_GCC_VERSION + string + default "8.4.0" if BR2_GCC_VERSION_POWERPC_SPE + default "12.4.0" if BR2_GCC_VERSION_12_X + default "13.3.0" if BR2_GCC_VERSION_13_X + default "14.2.0" if BR2_GCC_VERSION_14_X + default "arc-2023.09-release" if BR2_GCC_VERSION_ARC + +config BR2_EXTRA_GCC_CONFIG_OPTIONS + string "Additional gcc options" + default "" + help + Any additional gcc configure options you may want to + include. Those options are applied for all of the gcc + initial, gcc intermediate and gcc final passes. + +config BR2_TOOLCHAIN_BUILDROOT_CXX + bool "Enable C++ support" + select BR2_INSTALL_LIBSTDCPP + help + Enable this option if you want your toolchain to support the + C++ language and you want C++ libraries to be installed on + your target system. + +comment "Fortran support needs a toolchain w/ wchar" + depends on BR2_TOOLCHAIN_HAS_LIBQUADMATH + depends on !BR2_USE_WCHAR # libquadmath + +config BR2_TOOLCHAIN_BUILDROOT_FORTRAN + bool "Enable Fortran support" + # on architecture building libquadmath, wchar is required + depends on !BR2_TOOLCHAIN_HAS_LIBQUADMATH || \ + (BR2_TOOLCHAIN_HAS_LIBQUADMATH && BR2_USE_WCHAR) + # internal compiler error: in gen_reg_rtx, at emit-rtl.cc:1167 + # fixed in gcc 14.x, so disable gcc 12.x/13.x + depends on !(BR2_microblaze && \ + (BR2_GCC_VERSION_12_X || BR2_GCC_VERSION_13_X)) + select BR2_TOOLCHAIN_HAS_FORTRAN + help + Enable this option if you want your toolchain to support the + Fortran language and you want Fortran libraries to be + installed on your target system. + +config BR2_TOOLCHAIN_BUILDROOT_DLANG + bool "Enable D language support" + depends on BR2_GCC_SUPPORTS_DLANG + select BR2_TOOLCHAIN_HAS_DLANG + help + Enable this option if you want your toolchain to support the + D language and you want D libraries to be installed on your + target system. + +config BR2_GCC_ENABLE_OPENMP + bool "Enable compiler OpenMP support" + depends on !BR2_PTHREADS_NONE && !BR2_arc && !BR2_microblaze + select BR2_TOOLCHAIN_HAS_OPENMP + help + Enable OpenMP support for the compiler + +config BR2_GCC_ENABLE_GRAPHITE + bool "Enable graphite support" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 + help + This option enables the graphite optimizations in the + compiler. + +comment "graphite support needs gcc >= 5.x" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_5 diff --git a/package/gcc/gcc-final/gcc-final.hash b/package/gcc/gcc-final/gcc-final.hash new file mode 120000 index 00000000..7ac9361a --- /dev/null +++ b/package/gcc/gcc-final/gcc-final.hash @@ -0,0 +1 @@ +../gcc.hash \ No newline at end of file diff --git a/package/gcc/gcc-final/gcc-final.mk b/package/gcc/gcc-final/gcc-final.mk new file mode 100644 index 00000000..99d7047b --- /dev/null +++ b/package/gcc/gcc-final/gcc-final.mk @@ -0,0 +1,214 @@ +################################################################################ +# +# gcc-final +# +################################################################################ + +GCC_FINAL_VERSION = $(GCC_VERSION) +GCC_FINAL_SITE = $(GCC_SITE) +GCC_FINAL_SOURCE = $(GCC_SOURCE) +GCC_FINAL_LICENSE = GPL-3.0-with-GCC-exception +GCC_FINAL_LICENSE_FILES = COPYING.RUNTIME +HOST_GCC_FINAL_LICENSE = $(HOST_GCC_LICENSE) +HOST_GCC_FINAL_LICENSE_FILES = $(HOST_GCC_LICENSE_FILES) + +GCC_FINAL_DEPENDENCIES = host-gcc-final +GCC_FINAL_ADD_TOOLCHAIN_DEPENDENCY = NO +GCC_FINAL_INSTALL_STAGING = YES + +GCC_FINAL_DL_SUBDIR = gcc +HOST_GCC_FINAL_DL_SUBDIR = gcc + +HOST_GCC_FINAL_DEPENDENCIES = \ + $(HOST_GCC_COMMON_DEPENDENCIES) \ + $(BR_LIBC) + +HOST_GCC_FINAL_EXCLUDES = $(HOST_GCC_EXCLUDES) + +ifneq ($(ARCH_XTENSA_OVERLAY_FILE),) +HOST_GCC_FINAL_POST_EXTRACT_HOOKS += HOST_GCC_XTENSA_OVERLAY_EXTRACT +HOST_GCC_FINAL_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL) +endif + +HOST_GCC_FINAL_POST_PATCH_HOOKS += HOST_GCC_APPLY_PATCHES + +# gcc doesn't support in-tree build, so we create a 'build' +# subdirectory in the gcc sources, and build from there. +HOST_GCC_FINAL_SUBDIR = build + +HOST_GCC_FINAL_PRE_CONFIGURE_HOOKS += HOST_GCC_CONFIGURE_SYMLINK + +# We want to always build the static variants of all the gcc libraries, +# of which libstdc++, libgomp, libmudflap... +# To do so, we can not just pass --enable-static to override the generic +# --disable-static flag, otherwise gcc fails to build some of those +# libraries, see; +# http://lists.busybox.net/pipermail/buildroot/2013-October/080412.html +# +# So we must completely override the generic commands and provide our own. +# +define HOST_GCC_FINAL_CONFIGURE_CMDS + (cd $(HOST_GCC_FINAL_SRCDIR) && rm -rf config.cache; \ + $(HOST_CONFIGURE_OPTS) \ + CFLAGS="$(HOST_CFLAGS)" \ + LDFLAGS="$(HOST_LDFLAGS)" \ + $(HOST_GCC_FINAL_CONF_ENV) \ + ./configure \ + --prefix="$(HOST_DIR)" \ + --sysconfdir="$(HOST_DIR)/etc" \ + --enable-static \ + $(QUIET) $(HOST_GCC_FINAL_CONF_OPTS) \ + ) +endef + +# Languages supported by the cross-compiler +GCC_FINAL_CROSS_LANGUAGES-y = c +GCC_FINAL_CROSS_LANGUAGES-$(BR2_INSTALL_LIBSTDCPP) += c++ +GCC_FINAL_CROSS_LANGUAGES-$(BR2_TOOLCHAIN_BUILDROOT_DLANG) += d +GCC_FINAL_CROSS_LANGUAGES-$(BR2_TOOLCHAIN_BUILDROOT_FORTRAN) += fortran +GCC_FINAL_CROSS_LANGUAGES = $(subst $(space),$(comma),$(GCC_FINAL_CROSS_LANGUAGES-y)) + +HOST_GCC_FINAL_CONF_OPTS = \ + $(HOST_GCC_COMMON_CONF_OPTS) \ + --enable-languages=$(GCC_FINAL_CROSS_LANGUAGES) \ + --with-build-time-tools=$(HOST_DIR)/$(GNU_TARGET_NAME)/bin + +# The kernel wants to use the -m4-nofpu option to make sure that it +# doesn't use floating point operations. +ifeq ($(BR2_sh4)$(BR2_sh4eb),y) +HOST_GCC_FINAL_CONF_OPTS += "--with-multilib-list=m4,m4-nofpu" +HOST_GCC_FINAL_GCC_LIB_DIR = $(HOST_DIR)/$(GNU_TARGET_NAME)/lib/!m4* +else ifeq ($(BR2_sh4a)$(BR2_sh4aeb),y) +HOST_GCC_FINAL_CONF_OPTS += "--with-multilib-list=m4a,m4a-nofpu" +HOST_GCC_FINAL_GCC_LIB_DIR = $(HOST_DIR)/$(GNU_TARGET_NAME)/lib/!m4* +else +HOST_GCC_FINAL_GCC_LIB_DIR = $(HOST_DIR)/$(GNU_TARGET_NAME)/lib* +endif + +ifeq ($(BR2_GCC_SUPPORTS_LIBCILKRTS),y) + +# libcilkrts does not support v8 +ifeq ($(BR2_sparc),y) +HOST_GCC_FINAL_CONF_OPTS += --disable-libcilkrts +endif + +# Pthreads are required to build libcilkrts +ifeq ($(BR2_PTHREADS_NONE),y) +HOST_GCC_FINAL_CONF_OPTS += --disable-libcilkrts +endif + +ifeq ($(BR2_STATIC_LIBS),y) +# disable libcilkrts as there is no static version +HOST_GCC_FINAL_CONF_OPTS += --disable-libcilkrts +endif + +endif # BR2_GCC_SUPPORTS_LIBCILKRTS + +# Disable shared libs like libstdc++ if we do static since it confuses linking +ifeq ($(BR2_STATIC_LIBS),y) +HOST_GCC_FINAL_CONF_OPTS += --disable-shared +else +HOST_GCC_FINAL_CONF_OPTS += --enable-shared +endif + +ifeq ($(BR2_GCC_ENABLE_OPENMP),y) +HOST_GCC_FINAL_CONF_OPTS += --enable-libgomp +else +HOST_GCC_FINAL_CONF_OPTS += --disable-libgomp +endif + +# End with user-provided options, so that they can override previously +# defined options. +HOST_GCC_FINAL_CONF_OPTS += \ + $(call qstrip,$(BR2_EXTRA_GCC_CONFIG_OPTIONS)) + +HOST_GCC_FINAL_CONF_ENV = \ + $(HOST_GCC_COMMON_CONF_ENV) + +HOST_GCC_FINAL_MAKE_OPTS += $(HOST_GCC_COMMON_MAKE_OPTS) + +# Make sure we have 'cc' +define HOST_GCC_FINAL_CREATE_CC_SYMLINKS + if [ ! -e $(HOST_DIR)/bin/$(GNU_TARGET_NAME)-cc ]; then \ + ln -f $(HOST_DIR)/bin/$(GNU_TARGET_NAME)-gcc \ + $(HOST_DIR)/bin/$(GNU_TARGET_NAME)-cc; \ + fi +endef + +HOST_GCC_FINAL_POST_INSTALL_HOOKS += HOST_GCC_FINAL_CREATE_CC_SYMLINKS + +HOST_GCC_FINAL_TOOLCHAIN_WRAPPER_ARGS += $(HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS) +HOST_GCC_FINAL_POST_BUILD_HOOKS += TOOLCHAIN_WRAPPER_BUILD +HOST_GCC_FINAL_POST_INSTALL_HOOKS += TOOLCHAIN_WRAPPER_INSTALL +# Note: this must be done after CREATE_CC_SYMLINKS, otherwise the +# -cc symlink to the wrapper is not created. +HOST_GCC_FINAL_POST_INSTALL_HOOKS += HOST_GCC_INSTALL_WRAPPER_AND_SIMPLE_SYMLINKS + +GCC_FINAL_LIBS = + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +GCC_FINAL_LIBS += libatomic +endif + +ifeq ($(BR2_STATIC_LIBS),) +GCC_FINAL_LIBS += libgcc_s +endif + +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +GCC_FINAL_USR_LIBS += libstdc++ +endif + +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_DLANG),y) +GCC_FINAL_USR_LIBS += libgdruntime libgphobos +endif + +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_FORTRAN),y) +GCC_FINAL_USR_LIBS += libgfortran +# fortran needs quadmath on x86 and x86_64 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBQUADMATH),y) +GCC_FINAL_USR_LIBS += libquadmath +endif +endif + +ifeq ($(BR2_GCC_ENABLE_OPENMP),y) +GCC_FINAL_USR_LIBS += libgomp +endif + +GCC_FINAL_USR_LIBS += $(call qstrip,$(BR2_TOOLCHAIN_EXTRA_LIBS)) + +define GCC_FINAL_INSTALL_STAGING_CMDS + $(foreach lib,$(GCC_FINAL_LIBS), \ + cp -dpf $(HOST_GCC_FINAL_GCC_LIB_DIR)/$(lib)* \ + $(STAGING_DIR)/lib/ + ) + $(foreach lib,$(GCC_FINAL_USR_LIBS), \ + cp -dpf $(HOST_GCC_FINAL_GCC_LIB_DIR)/$(lib)* \ + $(STAGING_DIR)/usr/lib/ + ) +endef + +ifeq ($(BR2_STATIC_LIBS),) +define GCC_FINAL_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/lib $(TARGET_DIR)/usr/lib + $(foreach lib,$(GCC_FINAL_LIBS), \ + cp -dpf $(HOST_GCC_FINAL_GCC_LIB_DIR)/$(lib).so* \ + $(TARGET_DIR)/lib/ + ) + $(foreach lib,$(GCC_FINAL_USR_LIBS), \ + cp -dpf $(HOST_GCC_FINAL_GCC_LIB_DIR)/$(lib).so* \ + $(TARGET_DIR)/usr/lib/ + ) +endef +endif + +# coldfire is not working without removing these object files from libgcc.a +ifeq ($(BR2_m68k_cf),y) +define GCC_FINAL_M68K_LIBGCC_FIXUP + find $(STAGING_DIR) -name libgcc.a -print | \ + while read t; do $(GNU_TARGET_NAME)-ar dv "$t" _ctors.o; done +endef +GCC_FINAL_POST_INSTALL_STAGING_HOOKS += HOST_GCC_FINAL_M68K_LIBGCC_FIXUP +endif + +$(eval $(generic-package)) +$(eval $(host-autotools-package)) diff --git a/package/gcc/gcc-initial/gcc-initial.hash b/package/gcc/gcc-initial/gcc-initial.hash new file mode 120000 index 00000000..7ac9361a --- /dev/null +++ b/package/gcc/gcc-initial/gcc-initial.hash @@ -0,0 +1 @@ +../gcc.hash \ No newline at end of file diff --git a/package/gcc/gcc-initial/gcc-initial.mk b/package/gcc/gcc-initial/gcc-initial.mk new file mode 100644 index 00000000..1f8b76a9 --- /dev/null +++ b/package/gcc/gcc-initial/gcc-initial.mk @@ -0,0 +1,63 @@ +################################################################################ +# +# gcc-initial +# +################################################################################ + +GCC_INITIAL_VERSION = $(GCC_VERSION) +GCC_INITIAL_SITE = $(GCC_SITE) +GCC_INITIAL_SOURCE = $(GCC_SOURCE) +HOST_GCC_INITIAL_LICENSE = $(HOST_GCC_LICENSE) +HOST_GCC_INITIAL_LICENSE_FILES = $(HOST_GCC_LICENSE_FILES) + +# We do not have a 'gcc' package per-se; we only have two incarnations, +# gcc-initial and gcc-final. gcc-initial is just an internal step that +# users should not care about, while gcc-final is the one they shall see. +HOST_GCC_INITIAL_DL_SUBDIR = gcc + +HOST_GCC_INITIAL_DEPENDENCIES = $(HOST_GCC_COMMON_DEPENDENCIES) + +HOST_GCC_INITIAL_EXCLUDES = $(HOST_GCC_EXCLUDES) + +ifneq ($(ARCH_XTENSA_OVERLAY_FILE),) +HOST_GCC_INITIAL_POST_EXTRACT_HOOKS += HOST_GCC_XTENSA_OVERLAY_EXTRACT +HOST_GCC_INITIAL_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL) +endif + +HOST_GCC_INITIAL_POST_PATCH_HOOKS += HOST_GCC_APPLY_PATCHES + +# gcc doesn't support in-tree build, so we create a 'build' +# subdirectory in the gcc sources, and build from there. +HOST_GCC_INITIAL_SUBDIR = build + +HOST_GCC_INITIAL_PRE_CONFIGURE_HOOKS += HOST_GCC_CONFIGURE_SYMLINK + +HOST_GCC_INITIAL_CONF_OPTS = \ + $(HOST_GCC_COMMON_CONF_OPTS) \ + --enable-languages=c \ + --disable-shared \ + --without-headers \ + --disable-threads \ + --with-newlib \ + --disable-largefile \ + $(call qstrip,$(BR2_EXTRA_GCC_CONFIG_OPTIONS)) + +HOST_GCC_INITIAL_CONF_ENV = \ + $(HOST_GCC_COMMON_CONF_ENV) + +# Enable GCC target libs optimizations to optimize out __register_frame +# when needed for some architectures when building with glibc. +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_107728),y) +HOST_GCC_INITIAL_CONF_ENV += CFLAGS_FOR_TARGET="$(GCC_COMMON_TARGET_CFLAGS) -O1" +HOST_GCC_INITIAL_CONF_ENV += CXXFLAGS_FOR_TARGET="$(GCC_COMMON_TARGET_CXXFLAGS) -O1" +endif + +HOST_GCC_INITIAL_MAKE_OPTS = $(HOST_GCC_COMMON_MAKE_OPTS) all-gcc all-target-libgcc +HOST_GCC_INITIAL_INSTALL_OPTS = install-gcc install-target-libgcc + +HOST_GCC_INITIAL_TOOLCHAIN_WRAPPER_ARGS += $(HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS) +HOST_GCC_INITIAL_POST_BUILD_HOOKS += TOOLCHAIN_WRAPPER_BUILD +HOST_GCC_INITIAL_POST_INSTALL_HOOKS += TOOLCHAIN_WRAPPER_INSTALL +HOST_GCC_INITIAL_POST_INSTALL_HOOKS += HOST_GCC_INSTALL_WRAPPER_AND_SIMPLE_SYMLINKS + +$(eval $(host-autotools-package)) diff --git a/package/gcc/gcc.hash b/package/gcc/gcc.hash new file mode 100644 index 00000000..b7c53f8f --- /dev/null +++ b/package/gcc/gcc.hash @@ -0,0 +1,22 @@ +# From https://gcc.gnu.org/pub/gcc/releases/gcc-8.4.0/sha512.sum +sha512 6de904f552a02de33b11ef52312bb664396efd7e1ce3bbe37bfad5ef617f133095b3767b4804bc7fe78df335cb53bc83f1ac055baed40979ce4c2c3e46b70280 gcc-8.4.0.tar.xz +# From https://gcc.gnu.org/pub/gcc/releases/gcc-10.4.0/sha512.sum +sha512 440c08ca746da450d9a1b35e8fd2305cb27e7e6987cd9d0f7d375f3b1fc9e4b0bd7acb3cd7bf795e72fcbead59cdef5b6c152862f5d35cd9fbfe6902101ce648 gcc-10.4.0.tar.xz +# From https://gcc.gnu.org/pub/gcc/releases/gcc-12.4.0/sha512.sum +sha512 5bd29402cad2deb5d9388d0236c7146414d77e5b8d5f1c6c941c7a1f47691c3389f08656d5f6e8e2d6717bf2c81f018d326f632fb468f42925b40bd217fc4853 gcc-12.4.0.tar.xz +# From https://gcc.gnu.org/pub/gcc/releases/gcc-13.3.0/sha512.sum +sha512 ed5f2f4c6ed2c796fcf2c93707159e9dbd3ddb1ba063d549804dd68cdabbb6d550985ae1c8465ae9a336cfe29274a6eb0f42e21924360574ebd8e5d5c7c9a801 gcc-13.3.0.tar.xz +# From https://gcc.gnu.org/pub/gcc/releases/gcc-14.2.0/sha512.sum +sha512 932bdef0cda94bacedf452ab17f103c0cb511ff2cec55e9112fc0328cbf1d803b42595728ea7b200e0a057c03e85626f937012e49a7515bc5dd256b2bf4bc396 gcc-14.2.0.tar.xz + +# Locally calculated (fetched from Github) +sha512 4dca20f517a42bb027fec605965b09fb917a535eebf3fe3e811d93476b02b1962df5ad4665f117bd44c2ec8e8015d51a44c00591761fe5f259c201ac5c7d920f gcc-arc-2023.09-release.tar.gz +# Locally calculated (fetched from Github) +sha512 2de7cf47333a4092b02d3bb98f4206f14966f1d139a724d09cf3b22f8a43ae0c704f33e6477d6367a03c29b265480dc900169e9d417006c5d46f0ae446b8c6f1 gcc-or1k-musl-5.4.0-20170218.tar.gz + +# Locally calculated +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING3 +sha256 a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c COPYING3.LIB +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING.LIB +sha256 9d6b43ce4d8de0c878bf16b54d8e7a10d9bd42b75178153e3af6a815bdc90f74 COPYING.RUNTIME diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk new file mode 100644 index 00000000..e4780353 --- /dev/null +++ b/package/gcc/gcc.mk @@ -0,0 +1,376 @@ +################################################################################ +# +# Common variables for the gcc-initial and gcc-final packages. +# +################################################################################ + +# +# Version, site and source +# + +GCC_VERSION = $(call qstrip,$(BR2_GCC_VERSION)) + +ifeq ($(BR2_GCC_VERSION_ARC),y) +GCC_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,gcc,$(GCC_VERSION)) +GCC_SOURCE = gcc-$(GCC_VERSION).tar.gz +else +GCC_SITE = $(BR2_GNU_MIRROR:/=)/gcc/gcc-$(GCC_VERSION) +GCC_SOURCE = gcc-$(GCC_VERSION).tar.xz +endif + +HOST_GCC_LICENSE = GPL-2.0, GPL-3.0, LGPL-2.1, LGPL-3.0 +HOST_GCC_LICENSE_FILES = COPYING COPYING3 COPYING.LIB COPYING3.LIB + +# +# Xtensa special hook +# +define HOST_GCC_XTENSA_OVERLAY_EXTRACT + $(call arch-xtensa-overlay-extract,$(@D),gcc) +endef + +# +# Apply patches +# + +# gcc is a special package, not named gcc, but gcc-initial and +# gcc-final, but patches are nonetheless stored in package/gcc in the +# tree, and potentially in BR2_GLOBAL_PATCH_DIR directories as well. +define HOST_GCC_APPLY_PATCHES + for patchdir in \ + package/gcc/$(GCC_VERSION) \ + $(addsuffix /gcc/$(GCC_VERSION),$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))) \ + $(addsuffix /gcc,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))) ; do \ + if test -d $${patchdir}; then \ + $(APPLY_PATCHES) $(@D) $${patchdir} \*.patch || exit 1; \ + fi; \ + done +endef + +HOST_GCC_EXCLUDES = \ + libjava/* libgo/* + +# +# Create 'build' directory and configure symlink +# + +define HOST_GCC_CONFIGURE_SYMLINK + mkdir -p $(@D)/build + ln -sf ../configure $(@D)/build/configure +endef + +# +# Common configuration options +# + +HOST_GCC_COMMON_DEPENDENCIES = \ + host-binutils \ + host-gmp \ + host-mpc \ + host-mpfr \ + $(if $(BR2_BINFMT_FLAT),host-elf2flt) + +HOST_GCC_COMMON_CONF_OPTS = \ + --target=$(GNU_TARGET_NAME) \ + --with-sysroot=$(STAGING_DIR) \ + --enable-__cxa_atexit \ + --with-gnu-ld \ + --disable-libssp \ + --disable-multilib \ + --disable-decimal-float \ + --enable-plugins \ + --enable-lto \ + --with-gmp=$(HOST_DIR) \ + --with-mpc=$(HOST_DIR) \ + --with-mpfr=$(HOST_DIR) \ + --with-pkgversion="Buildroot $(BR2_VERSION_FULL)" \ + --with-bugurl="https://gitlab.com/buildroot.org/buildroot/-/issues" \ + --without-zstd + +ifeq ($(BR2_REPRODUCIBLE),y) +HOST_GCC_COMMON_CONF_OPTS += --with-debug-prefix-map=$(BASE_DIR)=buildroot +endif + +# Don't build documentation. It takes up extra space / build time, +# and sometimes needs specific makeinfo versions to work. Override the check +# for a modern makeinfo otherwise the configure scripts will still enable it. +HOST_GCC_COMMON_CONF_ENV = \ + MAKEINFO=missing +HOST_GCC_COMMON_MAKE_OPTS = \ + gcc_cv_prog_makeinfo_modern=no + +# Target binaries and libraries which are being built as a part of GCC +# don't use Buildroot toolchain wrapper because, instead its very own "xgcc" +# binary is used. And so we need to explicitly propagate ALL the flags +# directly to "xgcc" and that is done via configure-time environment +# variables, see below setup of HOST_GCC_COMMON_CONF_ENV. +GCC_COMMON_TARGET_CFLAGS = $(TARGET_CFLAGS) $(ARCH_TOOLCHAIN_WRAPPER_OPTS) +GCC_COMMON_TARGET_CXXFLAGS = $(TARGET_CXXFLAGS) $(ARCH_TOOLCHAIN_WRAPPER_OPTS) +GCC_COMMON_TARGET_LDFLAGS = $(TARGET_LDFLAGS) $(ARCH_TOOLCHAIN_WRAPPER_OPTS) + +# used to fix ../../../../libsanitizer/libbacktrace/../../libbacktrace/elf.c:772:21: error: 'st.st_mode' may be used uninitialized in this function [-Werror=maybe-uninitialized] +ifeq ($(BR2_ENABLE_DEBUG),y) +GCC_COMMON_TARGET_CFLAGS += -Wno-error +endif + +# Propagate options used for target software building to GCC target libs +HOST_GCC_COMMON_CONF_ENV += CFLAGS_FOR_TARGET="$(GCC_COMMON_TARGET_CFLAGS)" +HOST_GCC_COMMON_CONF_ENV += CXXFLAGS_FOR_TARGET="$(GCC_COMMON_TARGET_CXXFLAGS)" +HOST_GCC_COMMON_CONF_ENV += LDFLAGS_FOR_TARGET="$(GCC_COMMON_TARGET_LDFLAGS)" +HOST_GCC_COMMON_CONF_ENV += AR_FOR_TARGET=gcc-ar NM_FOR_TARGET=gcc-nm RANLIB_FOR_TARGET=gcc-ranlib + +# libitm needs sparc V9+ +ifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y) +HOST_GCC_COMMON_CONF_OPTS += --disable-libitm +endif + +# libmpx uses secure_getenv and struct _libc_fpstate not present in musl +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_MUSL)$(BR2_TOOLCHAIN_GCC_AT_LEAST_6),yy) +HOST_GCC_COMMON_CONF_OPTS += --disable-libmpx +endif + +# quadmath support requires wchar +ifeq ($(BR2_USE_WCHAR)$(BR2_TOOLCHAIN_HAS_LIBQUADMATH),yy) +HOST_GCC_COMMON_CONF_OPTS += --enable-libquadmath --enable-libquadmath-support +else +HOST_GCC_COMMON_CONF_OPTS += --disable-libquadmath --disable-libquadmath-support +endif + +# libsanitizer requires wordexp, not in default uClibc config. Also +# doesn't build properly with musl. +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_UCLIBC)$(BR2_TOOLCHAIN_BUILDROOT_MUSL),y) +HOST_GCC_COMMON_CONF_OPTS += --disable-libsanitizer +endif + +# libsanitizer is broken for SPARC +# https://bugs.busybox.net/show_bug.cgi?id=7951 +ifeq ($(BR2_sparc)$(BR2_sparc64),y) +HOST_GCC_COMMON_CONF_OPTS += --disable-libsanitizer +endif + +# libsanitizer is available for mips64{el} since gcc 12 but fail to build +# with n32 ABI due to struct stat64 definition clash due to mixing +# kernel and user headers. +ifeq ($(BR2_mips64)$(BR2_mips64el):$(BR2_MIPS_NABI32),y:y) +HOST_GCC_COMMON_CONF_OPTS += --disable-libsanitizer +endif + +# libsanitizer bundled in gcc 12 fails to build for mips32 due to +# mixing kernel and user struct stat. +ifeq ($(BR2_mips)$(BR2_mipsel):$(BR2_TOOLCHAIN_GCC_AT_LEAST_12),y:y) +HOST_GCC_COMMON_CONF_OPTS += --disable-libsanitizer +endif + +# libsanitizer is broken for Thumb1, sanitizer_linux.cc contains unconditional +# "ldr ip, [sp], #8", which causes: +# ....s: Assembler messages: +# ....s:4190: Error: lo register required -- `ldr ip,[sp],#8' +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +HOST_GCC_COMMON_CONF_OPTS += --disable-libsanitizer +endif + +# The logic in libbacktrace/configure.ac to detect if __sync builtins +# are available assumes they are as soon as target_subdir is not +# empty, i.e when cross-compiling. However, some platforms do not have +# __sync builtins, so help the configure script a bit. +ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_4),) +HOST_GCC_COMMON_CONF_ENV += target_configargs="libbacktrace_cv_sys_sync=no" +endif + +# TLS support is not needed on uClibc/no-thread and +# uClibc/linux-threads, otherwise, for all other situations (glibc, +# musl and uClibc/NPTL), we need it. +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_UCLIBC)$(BR2_PTHREADS)$(BR2_PTHREADS_NONE),yy) +HOST_GCC_COMMON_CONF_OPTS += --disable-tls +else +HOST_GCC_COMMON_CONF_OPTS += --enable-tls +endif + +ifeq ($(BR2_PTHREADS_NONE),y) +HOST_GCC_COMMON_CONF_OPTS += \ + --disable-threads \ + --disable-libitm \ + --disable-libatomic +else +HOST_GCC_COMMON_CONF_OPTS += --enable-threads +endif + +# gcc 5 doesn't need cloog any more, see +# https://gcc.gnu.org/gcc-5/changes.html and we don't support graphite +# on GCC 4.9.x, so only isl is needed. +ifeq ($(BR2_GCC_ENABLE_GRAPHITE),y) +HOST_GCC_COMMON_DEPENDENCIES += host-isl +HOST_GCC_COMMON_CONF_OPTS += --with-isl=$(HOST_DIR) +else +HOST_GCC_COMMON_CONF_OPTS += --without-isl --without-cloog +endif + +ifeq ($(BR2_arc),y) +HOST_GCC_COMMON_DEPENDENCIES += host-flex host-bison +endif + +ifeq ($(BR2_SOFT_FLOAT),y) +# only mips*-*-*, arm*-*-* and sparc*-*-* accept --with-float +# powerpc seems to be needing it as well +ifeq ($(BR2_arm)$(BR2_armeb)$(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el)$(BR2_powerpc)$(BR2_sparc),y) +HOST_GCC_COMMON_CONF_OPTS += --with-float=soft +endif +endif + +# Determine arch/tune/abi/cpu options +ifneq ($(GCC_TARGET_ARCH),) +HOST_GCC_COMMON_CONF_OPTS += --with-arch="$(GCC_TARGET_ARCH)" +endif +ifneq ($(GCC_TARGET_ABI),) +HOST_GCC_COMMON_CONF_OPTS += --with-abi="$(GCC_TARGET_ABI)" +endif +ifeq ($(BR2_TOOLCHAIN_HAS_MNAN_OPTION),y) +ifneq ($(GCC_TARGET_NAN),) +HOST_GCC_COMMON_CONF_OPTS += --with-nan="$(GCC_TARGET_NAN)" +endif +endif +ifneq ($(GCC_TARGET_FP32_MODE),) +HOST_GCC_COMMON_CONF_OPTS += --with-fp-32="$(GCC_TARGET_FP32_MODE)" +endif + +# musl/uClibc-ng does not work with biarch powerpc toolchains, we +# need to configure gcc explicitely for 32 Bit for CPU's supporting +# 64 Bit and 32 Bit +ifneq ($(GCC_TARGET_CPU),) +ifeq ($(BR2_powerpc),y) +HOST_GCC_COMMON_CONF_OPTS += --with-cpu-32=$(GCC_TARGET_CPU) +else +HOST_GCC_COMMON_CONF_OPTS += --with-cpu=$(GCC_TARGET_CPU) +endif +endif + +ifneq ($(GCC_TARGET_FPU),) +HOST_GCC_COMMON_CONF_OPTS += --with-fpu=$(GCC_TARGET_FPU) +endif + +ifneq ($(GCC_TARGET_FLOAT_ABI),) +HOST_GCC_COMMON_CONF_OPTS += --with-float=$(GCC_TARGET_FLOAT_ABI) +endif + +ifneq ($(GCC_TARGET_MODE),) +HOST_GCC_COMMON_CONF_OPTS += --with-mode=$(GCC_TARGET_MODE) +endif + +# Enable proper double/long double for SPE ABI +ifeq ($(BR2_POWERPC_CPU_HAS_SPE),y) +HOST_GCC_COMMON_CONF_OPTS += \ + --enable-obsolete \ + --enable-e500_double \ + --with-long-double-128 +endif + +# Set default to Secure-PLT to prevent run-time +# generation of PLT stubs (supports RELRO and +# SELinux non-exemem capabilities) +ifeq ($(BR2_powerpc)$(BR2_powerpc64),y) +HOST_GCC_COMMON_CONF_OPTS += --enable-secureplt +endif + +# PowerPC64 big endian by default uses the elfv1 ABI, and PowerPC 64 +# little endian by default uses the elfv2 ABI. However, musl has +# decided to use the elfv2 ABI for both, so we force the elfv2 ABI for +# Power64 big endian when the selected C library is musl. +ifeq ($(BR2_TOOLCHAIN_USES_MUSL)$(BR2_powerpc64),yy) +HOST_GCC_COMMON_CONF_OPTS += \ + --with-abi=elfv2 \ + --without-long-double-128 +endif + +# Since glibc >= 2.26, poerpc64le requires double/long double which +# requires at least gcc 6.2. +# See sysdeps/powerpc/powerpc64le/configure.ac +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC)$(BR2_TOOLCHAIN_GCC_AT_LEAST_6)$(BR2_powerpc64le),yyy) +HOST_GCC_COMMON_CONF_OPTS += \ + --with-long-double-128 +endif + +ifeq ($(BR2_s390x),y) +HOST_GCC_COMMON_CONF_OPTS += \ + --with-long-double-128 +endif + +# allow to build gcc 14.x +ifeq ($(BR2_nios2),y) +HOST_GCC_COMMON_CONF_OPTS += --enable-obsolete +endif + +HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_CROSS_PATH_SUFFIX='".br_real"' + +# For gcc-initial, we need to tell gcc that the C library will be +# providing the ssp support, as it can't guess it since the C library +# hasn't been built yet. +# +# For gcc-final, the gcc logic to detect whether SSP support is +# available or not in the C library is not working properly for +# uClibc, so let's be explicit as well. +HOST_GCC_COMMON_MAKE_OPTS += \ + gcc_cv_libc_provides_ssp=$(if $(BR2_TOOLCHAIN_HAS_SSP),yes,no) + +ifeq ($(BR2_CCACHE),y) +HOST_GCC_COMMON_CCACHE_HASH_FILES += $($(PKG)_DL_DIR)/$(GCC_SOURCE) + +# Cfr. PATCH_BASE_DIRS in .stamp_patched, but we catch both versioned +# and unversioned patches unconditionally. Moreover, to facilitate the +# addition of gcc patches in BR2_GLOBAL_PATCH_DIR, we allow them to be +# stored in a sub-directory called 'gcc' even if it's not technically +# the name of the package. +HOST_GCC_COMMON_CCACHE_HASH_FILES += \ + $(sort $(wildcard \ + package/gcc/$(GCC_VERSION)/*.patch \ + $(addsuffix /$($(PKG)_RAWNAME)/$(GCC_VERSION)/*.patch,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))) \ + $(addsuffix /$($(PKG)_RAWNAME)/*.patch,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))) \ + $(addsuffix /gcc/$(GCC_VERSION)/*.patch,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))) \ + $(addsuffix /gcc/*.patch,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))))) +ifeq ($(BR2_xtensa),y) +HOST_GCC_COMMON_CCACHE_HASH_FILES += $(ARCH_XTENSA_OVERLAY_FILE) +endif + +# _CONF_OPTS contains some references to the absolute path of $(HOST_DIR) +# and a reference to the Buildroot git revision (BR2_VERSION_FULL), +# so substitute those away. +HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_CCACHE_HASH=\"`\ + printf '%s\n' $(subst $(HOST_DIR),@HOST_DIR@,\ + $(subst --with-pkgversion="Buildroot $(BR2_VERSION_FULL)",,$($(PKG)_CONF_OPTS))) \ + | sha256sum - $(HOST_GCC_COMMON_CCACHE_HASH_FILES) \ + | cut -c -64 | tr -d '\n'`\" +endif # BR2_CCACHE + +# 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. +# According to gfortran manpage, it supports all options supported by gcc, so +# add gfortran to the list of the program called via the Buildroot wrapper. +# Avoid that a .br_real is symlinked a second time. +# Also create -linux- symlinks. +define HOST_GCC_INSTALL_WRAPPER_AND_SIMPLE_SYMLINKS + $(Q)cd $(HOST_DIR)/bin; \ + for i in $(GNU_TARGET_NAME)-*; do \ + case "$$i" in \ + *.br_real) \ + ;; \ + *-ar|*-ranlib|*-nm) \ + ln -snf $$i $(ARCH)-linux$${i##$(GNU_TARGET_NAME)}; \ + ;; \ + *cc|*cc-*|*++|*++-*|*cpp|*-gfortran|*-gdc) \ + rm -f $$i.br_real; \ + mv $$i $$i.br_real; \ + ln -sf toolchain-wrapper $$i; \ + ln -sf toolchain-wrapper $(ARCH)-linux$${i##$(GNU_TARGET_NAME)}; \ + ln -snf $$i.br_real $(ARCH)-linux$${i##$(GNU_TARGET_NAME)}.br_real; \ + ;; \ + *) \ + ln -snf $$i $(ARCH)-linux$${i##$(GNU_TARGET_NAME)}; \ + ;; \ + esac; \ + done + +endef + +include $(sort $(wildcard package/gcc/*/*.mk)) diff --git a/package/gcnano-binaries/Config.in b/package/gcnano-binaries/Config.in new file mode 100644 index 00000000..f01468f0 --- /dev/null +++ b/package/gcnano-binaries/Config.in @@ -0,0 +1,39 @@ +comment "gcnano-binaries needs a Linux kernel to be built" + depends on BR2_arm || BR2_aarch64 + depends on !BR2_LINUX_KERNEL + +comment "gcnano-binaries needs a glibc toolchain w/ threads, dynamic library" + depends on BR2_arm || BR2_aarch64 + depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_TOOLCHAIN_HAS_THREADS \ + || BR2_STATIC_LIBS + +config BR2_PACKAGE_GCNANO_BINARIES + bool "gcnano-binaries" + depends on BR2_arm || BR2_aarch64 + depends on BR2_LINUX_KERNEL + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm, wayland + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_HAS_LIBGBM + select BR2_PACKAGE_LIBGBM_HAS_FEATURE_FORMAT_MODIFIER_PLANE_COUNT + select BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF + select BR2_PACKAGE_HAS_LIBGLES + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_WAYLAND + help + Driver and libraries for stm vivante gcnano gpu. + https://github.com/STMicroelectronics/gcnano-binaries/ + +if BR2_PACKAGE_GCNANO_BINARIES + +config BR2_PACKAGE_PROVIDES_LIBEGL + default "gcnano-binaries" + +config BR2_PACKAGE_PROVIDES_LIBGBM + default "gcnano-binaries" + +config BR2_PACKAGE_PROVIDES_LIBGLES + default "gcnano-binaries" + +endif diff --git a/package/gcnano-binaries/gcnano-binaries.hash b/package/gcnano-binaries/gcnano-binaries.hash new file mode 100644 index 00000000..d3c64d44 --- /dev/null +++ b/package/gcnano-binaries/gcnano-binaries.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 4c7454ac44c9e3ead20a978a5c009e8489fa90ce5cf291be31016a7f497bea26 gcnano-binaries-bbaae49a0e4859ed53f898a250269c8a237261bc.tar.gz +sha256 29c78804b097b5cfee0e802bef9f60348a635640eadd8a91b7ce82ddf17fbf5a EULA diff --git a/package/gcnano-binaries/gcnano-binaries.mk b/package/gcnano-binaries/gcnano-binaries.mk new file mode 100644 index 00000000..03912ea5 --- /dev/null +++ b/package/gcnano-binaries/gcnano-binaries.mk @@ -0,0 +1,85 @@ +################################################################################ +# +# gcnano-binaries +# +################################################################################ + +GCNANO_BINARIES_LIB_VERSION = 6.4.15 +GCNANO_BINARIES_DRIVER_VERSION = $(GCNANO_BINARIES_LIB_VERSION) + +GCNANO_BINARIES_SITE = $(call github,STMicroelectronics,gcnano-binaries,$(GCNANO_BINARIES_VERSION)) +GCNANO_BINARIES_VERSION = bbaae49a0e4859ed53f898a250269c8a237261bc +ifeq ($(BR2_arm),y) +GCNANO_BINARIES_USERLAND_VERSION = stm32mp1-$(GCNANO_BINARIES_LIB_VERSION)-20240206 +GCNANO_BINARIES_ARCH_TYPE = arm +GCNANO_BINARIES_SOC_PLATFORM = st-mp1 +else +GCNANO_BINARIES_USERLAND_VERSION = stm32mp2-$(GCNANO_BINARIES_LIB_VERSION)-20240517 +GCNANO_BINARIES_ARCH_TYPE = arm64 +GCNANO_BINARIES_SOC_PLATFORM = st-mp2 +endif + +GCNANO_BINARIES_LICENSE = MIT, Vivante End User Software License Terms +GCNANO_BINARIES_LICENSE_FILES = EULA +GCNANO_BINARIES_REDISTRIBUTE = NO + +GCNANO_BINARIES_DEPENDENCIES = linux wayland libdrm + +GCNANO_BINARIES_INSTALL_STAGING = YES + +GCNANO_BINARIES_PROVIDES = libegl libgles libgbm + +# The Github repository doesn't contain the source code as-is: it +# contains a tarball with the kernel driver source code, and a +# self-extractible binary for the user-space parts. So we extract both +# below, and also extract the EULA text from the self-extractible binary +define GCNANO_BINARIES_EXTRACT_HELPER + awk 'BEGIN { start = 0; } \ + /^EOEULA/ { start = 0; } \ + { if (start) print; } \ + /< $(@D)/EULA + cd $(@D) && sh gcnano-userland-multi-$(GCNANO_BINARIES_USERLAND_VERSION).bin --auto-accept +endef + +GCNANO_BINARIES_POST_EXTRACT_HOOKS += GCNANO_BINARIES_EXTRACT_HELPER + +GCNANO_BINARIES_MODULE_SUBDIRS = gcnano-driver-stm32mp + +GCNANO_BINARIES_MODULE_MAKE_OPTS = \ + ARCH_TYPE=$(GCNANO_BINARIES_ARCH_TYPE) \ + KERNEL_DIR=$(LINUX_DIR) \ + SOC_PLATFORM=$(GCNANO_BINARIES_SOC_PLATFORM) \ + AQROOT=$(@D)/gcnano-driver-stm32mp \ + DEBUG=0 + +GCNANO_BINARIES_USERLAND_SUBDIR = gcnano-userland-multi-$(GCNANO_BINARIES_USERLAND_VERSION) + +define GCNANO_BINARIES_INSTALL + cd $(@D)/$(GCNANO_BINARIES_USERLAND_SUBDIR)/release/drivers/ ; \ + find . -type f -exec $(INSTALL) -D -m 0755 {} $(1)/usr/lib/{} \; ; \ + for sharelib in *.so.*; do \ + dev_lib_name=`echo $${sharelib} | awk -F'.so' '{print $$1}'`.so ; \ + link_name=`$(TARGET_OBJDUMP) -x $${sharelib} 2>/dev/null | grep SONAME | sed 's/.* //'` ; \ + ln -sf $${sharelib} $(1)/usr/lib/$${dev_lib_name} ; \ + ln -sf $${sharelib} $(1)/usr/lib/$${link_name} ; \ + done + mkdir -p $(1)/usr/include + cp -a $(@D)/$(GCNANO_BINARIES_USERLAND_SUBDIR)/release/include/* $(1)/usr/include/ + cd $(@D)/$(GCNANO_BINARIES_USERLAND_SUBDIR)/pkgconfig/ ; \ + for file in *.pc ; do \ + sed -e "s|#PREFIX#|/usr|" -e "s|#VERSION#|23.0.3|" $$file > $$file.temp ; \ + $(INSTALL) -D -m 0644 $$file.temp $(1)/usr/lib/pkgconfig/$$file ; \ + done +endef + +define GCNANO_BINARIES_INSTALL_TARGET_CMDS + $(call GCNANO_BINARIES_INSTALL,$(TARGET_DIR)) +endef + +define GCNANO_BINARIES_INSTALL_STAGING_CMDS + $(call GCNANO_BINARIES_INSTALL,$(STAGING_DIR)) +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/gconf/Config.in b/package/gconf/Config.in new file mode 100644 index 00000000..a2371b3f --- /dev/null +++ b/package/gconf/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_GCONF + bool "gconf" + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2 + depends on BR2_USE_MMU # dbus, libglib2 + depends on BR2_USE_WCHAR # libglib2 + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_DBUS_GLIB + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBXML2 + help + GConf was a system used by the GNOME desktop environment for + storing configuration settings for the desktop and + applications. It is similar to the Windows Registry. + + https://projects.gnome.org/gconf/ + +comment "gconf needs a toolchain w/ threads, wchar, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR \ + || BR2_STATIC_LIBS diff --git a/package/gconf/gconf.hash b/package/gconf/gconf.hash new file mode 100644 index 00000000..ad0064fa --- /dev/null +++ b/package/gconf/gconf.hash @@ -0,0 +1,4 @@ +# From https://download.gnome.org/sources/GConf/3.2/GConf-3.2.6.sha256sum +sha256 1912b91803ab09a5eed34d364bf09fe3a2a9c96751fde03a4e0cfa51a04d784c GConf-3.2.6.tar.xz +# License files, locally calculated +sha256 94b03f1a60a7fd5007149530626a895a6ef5a8b9342abfd56860c5f3956f5d23 COPYING diff --git a/package/gconf/gconf.mk b/package/gconf/gconf.mk new file mode 100644 index 00000000..b84fa960 --- /dev/null +++ b/package/gconf/gconf.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# gconf +# +################################################################################ + +GCONF_VERSION = 3.2.6 +GCONF_SOURCE = GConf-$(GCONF_VERSION).tar.xz +GCONF_SITE = https://download.gnome.org/sources/GConf/3.2 +GCONF_CONF_OPTS = --disable-orbit +GCONF_DEPENDENCIES = dbus dbus-glib libglib2 libxml2 \ + host-intltool $(TARGET_NLS_DEPENDENCIES) +GCONF_LICENSE = LGPL-2.0+ +GCONF_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +GCONF_CONF_OPTS += --enable-introspection +GCONF_DEPENDENCIES += gobject-introspection +else +GCONF_CONF_OPTS += --disable-introspection +endif + +$(eval $(autotools-package)) diff --git a/package/gcr/0001-meson-Fix-unknown-kw-argument-in-gnome.generate_gir.patch b/package/gcr/0001-meson-Fix-unknown-kw-argument-in-gnome.generate_gir.patch new file mode 100644 index 00000000..a1d4e1b4 --- /dev/null +++ b/package/gcr/0001-meson-Fix-unknown-kw-argument-in-gnome.generate_gir.patch @@ -0,0 +1,64 @@ +From b3ca1d02bb0148ca787ac4aead164d7c8ce2c4d8 Mon Sep 17 00:00:00 2001 +From: Jakub Jirutka +Date: Wed, 12 Jan 2022 00:24:20 +0100 +Subject: [PATCH] meson: Fix unknown kw argument in gnome.generate_gir + +This argument has been removed in Meson 0.61.0: + + gck/meson.build:130:2: ERROR: gnome.generate_gir got unknown keyword arguments "packages" + +https://github.com/mesonbuild/meson/commit/f8fc5cb860465718fe7c79a1bf1fe00659f138de: + +> The packages argument to gnome.generate_gir was allowed, but never did anything, so stop passing it. + +Fixes #89 + +[aperez@igalia.com: backport from upstream] +Signed-off-by: Adrian Perez de Castro +[yann.morin.1998@free.fr: make it an actual backport] +Signed-off-by: Yann E. MORIN +--- + gck/meson.build | 1 - + gcr/meson.build | 1 - + ui/meson.build | 1 - + 3 files changed, 3 deletions(-) + +diff --git a/gck/meson.build b/gck/meson.build +index 756b486..a21a1e9 100644 +--- a/gck/meson.build ++++ b/gck/meson.build +@@ -131,7 +131,6 @@ if get_option('introspection') + sources: gck_gir_sources, + namespace: 'Gck', + nsversion: '@0@'.format(gck_major_version), +- packages: gck_deps, + export_packages: 'gck-@0@'.format(gck_major_version), + includes: [ 'GObject-2.0', 'Gio-2.0' ], + header: 'gck/gck.h', +diff --git a/gcr/meson.build b/gcr/meson.build +index 2233a44..c83641b 100644 +--- a/gcr/meson.build ++++ b/gcr/meson.build +@@ -190,7 +190,6 @@ if get_option('introspection') + sources: [ gcr_base_public_sources, gcr_base_headers ], + namespace: 'Gcr', + nsversion: '@0@'.format(gcr_major_version), +- packages: gcr_base_deps, + export_packages: 'gcr-base-@0@'.format(gcr_major_version), + includes: [ + 'GObject-2.0', +diff --git a/ui/meson.build b/ui/meson.build +index e656ea2..32ee057 100644 +--- a/ui/meson.build ++++ b/ui/meson.build +@@ -152,7 +152,6 @@ if get_option('introspection') + export_packages: 'gcr-ui-@0@'.format(gcr_major_version), + identifier_prefix: 'Gcr', + symbol_prefix: 'gcr', +- packages: gcr_ui_deps, + includes: [ + 'GObject-2.0', + 'Gio-2.0', +-- +2.25.1 + diff --git a/package/gcr/Config.in b/package/gcr/Config.in new file mode 100644 index 00000000..dbc22cf4 --- /dev/null +++ b/package/gcr/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_GCR + bool "gcr" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt -> libgpg-error + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + depends on !BR2_STATIC_LIBS # p11-kit + select BR2_PACKAGE_GNUPG2 if BR2_PACKAGE_GNUPG2_DEPENDS && !BR2_PACKAGE_GNUPG # runtime + select BR2_PACKAGE_GNUPG if !BR2_PACKAGE_GNUPG2_DEPENDS # runtime + select BR2_PACKAGE_LIBGCRYPT + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_P11_KIT + help + Library for cryptographic UIs and accessing PKCS#11 modules. + + https://developer.gnome.org/gcr/ + +comment "gcr needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/package/gcr/gcr.hash b/package/gcr/gcr.hash new file mode 100644 index 00000000..f6cc44e9 --- /dev/null +++ b/package/gcr/gcr.hash @@ -0,0 +1,3 @@ +# From https://download.gnome.org/sources/gcr/3.40/gcr-3.40.0.sha256sum +sha256 b9d3645a5fd953a54285cc64d4fc046736463dbd4dcc25caf5c7b59bed3027f5 gcr-3.40.0.tar.xz +sha256 94b03f1a60a7fd5007149530626a895a6ef5a8b9342abfd56860c5f3956f5d23 COPYING diff --git a/package/gcr/gcr.mk b/package/gcr/gcr.mk new file mode 100644 index 00000000..3a8c0172 --- /dev/null +++ b/package/gcr/gcr.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# gcr +# +################################################################################ + +GCR_VERSION_MAJOR = 3.40 +GCR_VERSION = $(GCR_VERSION_MAJOR).0 +GCR_SITE = https://download.gnome.org/sources/gcr/$(GCR_VERSION_MAJOR) +GCR_SOURCE = gcr-$(GCR_VERSION).tar.xz +GCR_DEPENDENCIES = \ + host-pkgconf \ + libgcrypt \ + libglib2 \ + p11-kit \ + $(TARGET_NLS_DEPENDENCIES) +GCR_INSTALL_STAGING = YES +GCR_CONF_OPTS = -Dgtk_doc=false +# Even though COPYING is v2 the code states v2.1+ +GCR_LICENSE = LGPL-2.1+ +GCR_LICENSE_FILES = COPYING +GCR_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) + +ifeq ($(BR2_PACKAGE_GNUPG2),y) +GCR_CONF_OPTS += -Dgpg_path=/usr/bin/gpg2 +else +GCR_CONF_OPTS += -Dgpg_path=/usr/bin/gpg +endif + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +GCR_DEPENDENCIES += gobject-introspection host-libxslt host-vala +GCR_CONF_OPTS += -Dintrospection=true +else +GCR_CONF_OPTS += -Dintrospection=false +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) +GCR_DEPENDENCIES += libgtk3 +GCR_CONF_OPTS += -Dgtk=true +else ifeq ($(BR2_PACKAGE_LIBGTK3_WAYLAND),y) +GCR_DEPENDENCIES += libgtk3 +GCR_CONF_OPTS += -Dgtk=true +else +GCR_CONF_OPTS += -Dgtk=false +endif + +$(eval $(meson-package)) diff --git a/package/gd/Config.in b/package/gd/Config.in new file mode 100644 index 00000000..861cef88 --- /dev/null +++ b/package/gd/Config.in @@ -0,0 +1,58 @@ +menuconfig BR2_PACKAGE_GD + bool "gd" + help + GD is a graphics library. It allows your code to quickly + draw images complete with lines, arcs, text, multiple + colours, cut and paste from other images, flood fills, and + write out the result as a PNG file. This is particularly + useful in World Wide Web applications, where PNG is one of + the formats accepted for inline images by most browsers. + + https://libgd.github.io/ + +if BR2_PACKAGE_GD + +config BR2_PACKAGE_GD_ANNOTATE + bool "annotate" + +config BR2_PACKAGE_GD_BDFTOGD + bool "bdftogd" + depends on BR2_PACKAGE_PERL + +config BR2_PACKAGE_GD_GD2COPYPAL + bool "gd2copypal" + +config BR2_PACKAGE_GD_GD2TOGIF + bool "gd2togif" + +config BR2_PACKAGE_GD_GD2TOPNG + bool "gd2topng" + select BR2_PACKAGE_LIBPNG + +config BR2_PACKAGE_GD_GDCMPGIF + bool "gdcmpgif" + +config BR2_PACKAGE_GD_GDPARTTOPNG + bool "gdparttopng" + select BR2_PACKAGE_LIBPNG + +config BR2_PACKAGE_GD_GDTOPNG + bool "gdtopng" + select BR2_PACKAGE_LIBPNG + +config BR2_PACKAGE_GD_GIFTOGD2 + bool "giftogd2" + +config BR2_PACKAGE_GD_PNGTOGD + bool "pngtogd" + select BR2_PACKAGE_LIBPNG + +config BR2_PACKAGE_GD_PNGTOGD2 + bool "pngtogd2" + select BR2_PACKAGE_LIBPNG + +config BR2_PACKAGE_GD_WEBPNG + bool "webpng" + select BR2_PACKAGE_LIBPNG + +endif diff --git a/package/gd/gd.hash b/package/gd/gd.hash new file mode 100644 index 00000000..d0b1e976 --- /dev/null +++ b/package/gd/gd.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3fe822ece20796060af63b7c60acb151e5844204d289da0ce08f8fdf131e5a61 libgd-2.3.3.tar.xz +sha256 005f4b6b0141d1bd11d371bbf7d4f67947f85a4906b7f5465f942204cf918ba3 COPYING diff --git a/package/gd/gd.mk b/package/gd/gd.mk new file mode 100644 index 00000000..969c02aa --- /dev/null +++ b/package/gd/gd.mk @@ -0,0 +1,103 @@ +################################################################################ +# +# gd +# +################################################################################ + +GD_VERSION = 2.3.3 +GD_SOURCE = libgd-$(GD_VERSION).tar.xz +GD_SITE = https://github.com/libgd/libgd/releases/download/gd-$(GD_VERSION) +GD_INSTALL_STAGING = YES +GD_LICENSE = GD license +GD_LICENSE_FILES = COPYING +GD_CPE_ID_VENDOR = libgd +GD_CPE_ID_PRODUCT = libgd +GD_CONF_OPTS = --without-x --disable-rpath --disable-werror +GD_DEPENDENCIES = host-pkgconf + +# gd forgets to link utilities with -pthread even though it uses +# pthreads, causing linking errors with static linking +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +GD_CONF_ENV += LDFLAGS="$(TARGET_LDFLAGS) -pthread" +endif + +ifeq ($(BR2_PACKAGE_FONTCONFIG),y) +GD_DEPENDENCIES += fontconfig +GD_CONF_OPTS += --with-fontconfig +endif + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +GD_DEPENDENCIES += freetype +GD_CONF_OPTS += --with-freetype=$(STAGING_DIR)/usr +else +GD_CONF_OPTS += --without-freetype +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +GD_DEPENDENCIES += libiconv +# not strictly needed for gd, but ensures -liconv ends up in gdlib.pc +GD_CONF_ENV += LIBS_PRIVATES="-liconv" +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +GD_DEPENDENCIES += jpeg +GD_CONF_OPTS += --with-jpeg +endif + +ifeq ($(BR2_PACKAGE_LIBHEIF),y) +GD_DEPENDENCIES += libheif +GD_CONF_OPTS += --with-heif +else +GD_CONF_OPTS += --without-heif +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +GD_DEPENDENCIES += libpng +GD_CONF_OPTS += --with-png +else +GD_CONF_OPTS += --without-png +endif + +ifeq ($(BR2_PACKAGE_WEBP),y) +GD_DEPENDENCIES += webp +GD_CONF_OPTS += --with-webp +else +GD_CONF_OPTS += --without-webp +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +GD_DEPENDENCIES += tiff +GD_CONF_OPTS += --with-tiff +else +GD_CONF_OPTS += --without-tiff +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXPM),y) +GD_DEPENDENCIES += xlib_libXpm +GD_CONF_OPTS += --with-xpm +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +GD_DEPENDENCIES += zlib +endif + +GD_TOOLS_$(BR2_PACKAGE_GD_ANNOTATE) += annotate +GD_TOOLS_$(BR2_PACKAGE_GD_BDFTOGD) += bdftogd +GD_TOOLS_$(BR2_PACKAGE_GD_GD2COPYPAL) += gd2copypal +GD_TOOLS_$(BR2_PACKAGE_GD_GD2TOGIF) += gd2togif +GD_TOOLS_$(BR2_PACKAGE_GD_GD2TOPNG) += gd2topng +GD_TOOLS_$(BR2_PACKAGE_GD_GDCMPGIF) += gdcmpgif +GD_TOOLS_$(BR2_PACKAGE_GD_GDPARTTOPNG) += gdparttopng +GD_TOOLS_$(BR2_PACKAGE_GD_GDTOPNG) += gdtopng +GD_TOOLS_$(BR2_PACKAGE_GD_GIFTOGD2) += giftogd2 +GD_TOOLS_$(BR2_PACKAGE_GD_PNGTOGD) += pngtogd +GD_TOOLS_$(BR2_PACKAGE_GD_PNGTOGD2) += pngtogd2 +GD_TOOLS_$(BR2_PACKAGE_GD_WEBPNG) += webpng + +define GD_REMOVE_TOOLS + rm -f $(addprefix $(TARGET_DIR)/usr/bin/,$(GD_TOOLS_)) +endef + +GD_POST_INSTALL_TARGET_HOOKS += GD_REMOVE_TOOLS + +$(eval $(autotools-package)) diff --git a/package/gdal/Config.in b/package/gdal/Config.in new file mode 100644 index 00000000..6ee088ce --- /dev/null +++ b/package/gdal/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_GDAL + bool "gdal" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c + depends on BR2_INSTALL_LIBSTDCPP # proj, qhull + # configure can't find proj, when linking statically + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11, proj + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # proj + depends on BR2_USE_WCHAR # proj + select BR2_PACKAGE_GIFLIB + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_JSON_C + select BR2_PACKAGE_LIBGEOTIFF + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_PROJ + select BR2_PACKAGE_QHULL + select BR2_PACKAGE_ZLIB + help + GDAL is a translator library for raster and vector geospatial + data formats. As a library, it presents a single raster + abstract data model and single vector abstract data model to + the calling application for all supported formats. It also + comes with a variety of useful command line utilities for data + translation and processing. + + https://gdal.org/ + +comment "gdal needs a toolchain w/ C++, dynamic library, gcc >= 4.7, NPTL, wchar" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_USE_WCHAR diff --git a/package/gdal/gdal.hash b/package/gdal/gdal.hash new file mode 100644 index 00000000..baec7c91 --- /dev/null +++ b/package/gdal/gdal.hash @@ -0,0 +1,6 @@ +# md5 from: https://download.osgeo.org/gdal/3.8.2/gdal-3.8.2.tar.gz.md5, sha256 locally computed: +md5 178461c9c1cd4503e36559a1063bb752 gdal-3.8.2.tar.xz +sha256 dc2921ee1cf7a5c0498e94d15fb9ab9c9689c296363a1d021fc3293dd242b4db gdal-3.8.2.tar.xz + +# Hashes of license files: +sha256 1dae3468e81d00da56e2936f74d33b8b3ad09d726437f19ce209a5dabea41f77 LICENSE.TXT diff --git a/package/gdal/gdal.mk b/package/gdal/gdal.mk new file mode 100644 index 00000000..77ffb514 --- /dev/null +++ b/package/gdal/gdal.mk @@ -0,0 +1,160 @@ +################################################################################ +# +# gdal +# +################################################################################ + +GDAL_VERSION = 3.8.2 +GDAL_SITE = https://download.osgeo.org/gdal/$(GDAL_VERSION) +GDAL_SOURCE = gdal-$(GDAL_VERSION).tar.xz +GDAL_LICENSE = Apache-2.0, ISC, MIT, many others +GDAL_LICENSE_FILES = LICENSE.TXT +GDAL_CPE_ID_VENDOR = osgeo +GDAL_INSTALL_STAGING = YES +GDAL_CONFIG_SCRIPTS = gdal-config +GDAL_SUPPORTS_IN_SOURCE_BUILD = NO + +# gdal at its core only needs host-pkgconf, libgeotiff, proj and tiff +# but since by default mrf driver support is enabled, it also needs +# jpeg, libpng and zlib. By default there are also many other drivers +# enabled but it seems, in contrast to mrf driver support, that they +# can be implicitly disabled, by configuring gdal without their +# respectively needed dependencies. +GDAL_DEPENDENCIES = \ + giflib \ + host-pkgconf \ + jpeg \ + json-c \ + libgeotiff \ + libpng \ + proj \ + qhull \ + tiff \ + zlib + +# Yes, even though they have -DDGDAL_USE options, a few libraries are +# mandatory. If we don't provide them, bundled versions are used. +GDAL_CONF_OPTS = \ + -DGDAL_USE_GEOTIFF=ON \ + -DGDAL_USE_GIF=ON \ + -DGDAL_USE_JPEG=ON \ + -DGDAL_USE_JSONC=ON \ + -DGDAL_USE_ZLIB=ON \ + -DGDAL_USE_PNG=ON \ + -DGDAL_USE_QHULL=ON \ + -DGDAL_USE_ARMADILLO=OFF \ + -DGDAL_USE_BLOSC=OFF \ + -DGDAL_USE_BRUNSLI=OFF \ + -DGDAL_USE_CFITSIO=OFF \ + -DGDAL_USE_CRYPTOPP=OFF \ + -DGDAL_USE_CRNLIB=OFF \ + -DGDAL_USE_ECW=OFF \ + -DGDAL_USE_FILEGDB=OFF \ + -DGDAL_USE_FREEXL=OFF \ + -DGDAL_USE_GEOS=OFF \ + -DGDAL_USE_LIBKML=OFF \ + -DGDAL_USE_LZ4=OFF \ + -DGDAL_USE_GTA=OFF \ + -DGDAL_USE_HDF4=OFF \ + -DGDAL_USE_HDF5=OFF \ + -DGDAL_USE_HDFS=OFF \ + -DGDAL_USE_HEIF=OFF \ + -DGDAL_USE_IDB=OFF \ + -DGDAL_USE_LURATECH=OFF \ + -DGDAL_USE_JPEG12_INTERNAL=OFF \ + -DGDAL_USE_JXL=OFF \ + -DGDAL_USE_KDU=OFF \ + -DGDAL_USE_KEA=OFF \ + -DGDAL_USE_LERC=OFF \ + -DGDAL_USE_DEFLATE=OFF \ + -DGDAL_USE_MONGOCXX=OFF \ + -DGDAL_USE_MRSID=OFF \ + -DGDAL_USE_PUBLICDECOMPWT=OFF \ + -DGDAL_USE_MYSQL=OFF \ + -DGDAL_USE_NETCDF=OFF \ + -DGDAL_USE_ORACLE=OFF \ + -DGDAL_USE_ODBC=OFF \ + -DGDAL_USE_OGDI=OFF \ + -DGDAL_USE_OPENCL=OFF \ + -DGDAL_USE_OPENEXR=OFF \ + -DGDAL_USE_OPENJPEG=OFF \ + -DGDAL_USE_PCRE=OFF \ + -DGDAL_USE_PCRE2=OFF \ + -DGDAL_USE_PDFIUM=OFF \ + -DGDAL_USE_PODOFO=OFF \ + -DGDAL_USE_POPPLER=OFF \ + -DGDAL_USE_RASTERLITE2=OFF \ + -DGDAL_USE_RDB=OFF \ + -DGDAL_USE_SFCGAL=OFF \ + -DGDAL_USE_FYBA=OFF \ + -DGDAL_USE_SPATIALITE=OFF \ + -DGDAL_USE_TEIGHA=OFF \ + -DGDAL_USE_TILEDB=OFF \ + -DGDAL_USE_WEBP=OFF \ + -DGDAL_USE_XERCESC=OFF \ + -DGDAL_USE_ZSTD=OFF \ + -DGDAL_ENABLE_DRIVER_PCIDSK=OFF \ + -DGDAL_ENABLE_DRIVER_PCRASTER=OFF \ + -DGDAL_ENABLE_DRIVER_NULL=OFF \ + -DGDAL_ENABLE_MACOSX_FRAMEWORK=OFF \ + -DENABLE_GNM=OFF \ + -DENABLE_PAM=OFF \ + -DBUILD_JAVA_BINDINGS=OFF \ + -DBUILD_PYTHON_BINDINGS=OFF + +ifeq ($(BR2_PACKAGE_EXPAT),y) +GDAL_DEPENDENCIES += expat +GDAL_CONF_OPTS += -DGDAL_USE_EXPAT=ON +else +GDAL_CONF_OPTS += -DGDAL_USE_EXPAT=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +GDAL_DEPENDENCIES += libcurl +GDAL_CONF_OPTS += -DGDAL_USE_CURL=ON +else +GDAL_CONF_OPTS += -DGDAL_USE_CURL=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +GDAL_DEPENDENCIES += libxml2 +GDAL_CONF_OPTS += -DGDAL_USE_LIBXML2=ON +else +GDAL_CONF_OPTS += -DGDAL_USE_LIBXML2=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBZLIB),y) +GDAL_CONF_OPTS += -DENABLE_DEFLATE64=ON +else +GDAL_CONF_OPTS += -DENABLE_DEFLATE64=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +GDAL_DEPENDENCIES += openssl +GDAL_CONF_OPTS += -DGDAL_USE_OPENSSL=ON +else +GDAL_CONF_OPTS += -DGDAL_USE_OPENSSL=OFF +endif + +ifeq ($(BR2_PACKAGE_POSTGRESQL),y) +GDAL_DEPENDENCIES += postgresql +GDAL_CONF_OPTS += -DGDAL_USE_POSTGRESQL=ON +else +GDAL_CONF_OPTS += -DGDAL_USE_POSTGRESQL=OFF +endif + +ifeq ($(BR2_PACKAGE_SQLITE),y) +GDAL_DEPENDENCIES += sqlite +GDAL_CONF_OPTS += -DGDAL_USE_SQLITE3=ON +else +GDAL_CONF_OPTS += -DGDAL_USE_SQLITE3=OFF +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +GDAL_DEPENDENCIES += xz +GDAL_CONF_OPTS += -DGDAL_USE_LIBLZMA=ON +else +GDAL_CONF_OPTS += -DGDAL_USE_LIBLZMA=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/gdb/13.2/0001-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch b/package/gdb/13.2/0001-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch new file mode 100644 index 00000000..adf60520 --- /dev/null +++ b/package/gdb/13.2/0001-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch @@ -0,0 +1,55 @@ +From 2edb66509607289ea7462db99e247de1200454c1 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 6 Aug 2016 17:32:50 -0700 +Subject: [PATCH] ppc/ptrace: Define pt_regs uapi_pt_regs on !GLIBC systems + +Upstream-Status: Pending + +Signed-off-by: Khem Raj +Signed-off-by: Thomas Petazzoni +[Rebase on gdb 8.3] +Signed-off-by: Romain Naour +--- + gdb/nat/ppc-linux.h | 6 ++++++ + gdbserver/linux-ppc-low.cc | 6 ++++++ + 2 files changed, 12 insertions(+) + +diff --git a/gdb/nat/ppc-linux.h b/gdb/nat/ppc-linux.h +index c84f9146bbd..8c8580c95e1 100644 +--- a/gdb/nat/ppc-linux.h ++++ b/gdb/nat/ppc-linux.h +@@ -18,7 +18,13 @@ + #ifndef NAT_PPC_LINUX_H + #define NAT_PPC_LINUX_H + ++#if !defined(__GLIBC__) ++# define pt_regs uapi_pt_regs ++#endif + #include ++#if !defined(__GLIBC__) ++# undef pt_regs ++#endif + #include + + /* This sometimes isn't defined. */ +diff --git a/gdbserver/linux-ppc-low.cc b/gdbserver/linux-ppc-low.cc +index fdf74727e39..f64afd09b7a 100644 +--- a/gdbserver/linux-ppc-low.cc ++++ b/gdbserver/linux-ppc-low.cc +@@ -23,7 +23,13 @@ + #include "elf/common.h" + #include + #include ++#if !defined(__GLIBC__) ++# define pt_regs uapi_pt_regs ++#endif + #include ++#if !defined(__GLIBC__) ++# undef pt_regs ++#endif + + #include "arch/ppc-linux-common.h" + #include "arch/ppc-linux-tdesc.h" +-- +2.41.0 + diff --git a/package/gdb/13.2/0002-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch b/package/gdb/13.2/0002-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch new file mode 100644 index 00000000..30bffea6 --- /dev/null +++ b/package/gdb/13.2/0002-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch @@ -0,0 +1,43 @@ +From 2dd3ed43936f26d2929d0e42b200f29e128d4f0d Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 3 Jun 2017 21:23:52 +0200 +Subject: [PATCH] sh/ptrace: Define pt_{dsp,}regs uapi_pt_{dsp,}regs on !GLIBC + systems + +Fixes a pt_{dsp,}regs redefinition when building with the musl C library +on SuperH. + +Inspired by +http://git.yoctoproject.org/clean/cgit.cgi/poky/plain/meta/recipes-devtools/gdb/gdb/0004-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch, +adapted for SuperH. + +Signed-off-by: Thomas Petazzoni +[Rebase on gdb 8.0] +Signed-off-by: Romain Naour +--- + gdbserver/linux-sh-low.cc | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/gdbserver/linux-sh-low.cc b/gdbserver/linux-sh-low.cc +index 782b8292010..e42f29b845a 100644 +--- a/gdbserver/linux-sh-low.cc ++++ b/gdbserver/linux-sh-low.cc +@@ -76,7 +76,15 @@ extern const struct target_desc *tdesc_sh; + #include + #endif + ++#if !defined(__GLIBC__) ++# define pt_regs uapi_pt_regs ++# define pt_dspregs uapi_pt_dspregs ++#endif + #include ++#if !defined(__GLIBC__) ++# undef pt_regs ++# undef pt_dspregs ++#endif + + #define sh_num_regs 41 + +-- +2.41.0 + diff --git a/package/gdb/13.2/0003-use-asm-sgidefs.h.patch b/package/gdb/13.2/0003-use-asm-sgidefs.h.patch new file mode 100644 index 00000000..acb80e6f --- /dev/null +++ b/package/gdb/13.2/0003-use-asm-sgidefs.h.patch @@ -0,0 +1,40 @@ +From 7f05121278d5d5a1939276cfd9f913a0bbe004e1 Mon Sep 17 00:00:00 2001 +From: Andre McCurdy +Date: Sat, 30 Apr 2016 15:29:06 -0700 +Subject: [PATCH] use + +Build fix for MIPS with musl libc + +The MIPS specific header is provided by glibc and uclibc +but not by musl. Regardless of the libc, the kernel headers provide + which provides the same definitions, so use that +instead. + +Upstream-Status: Pending + +[Vincent: +Taken from: https://sourceware.org/bugzilla/show_bug.cgi?id=21070] + +Signed-off-by: Andre McCurdy +Signed-off-by: Khem Raj +Signed-off-by: Vicente Olivert Riera +--- + gdb/mips-linux-nat.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c +index 972b5db8e76..e3d838dd9a4 100644 +--- a/gdb/mips-linux-nat.c ++++ b/gdb/mips-linux-nat.c +@@ -31,7 +31,7 @@ + #include "gdb_proc_service.h" + #include "gregset.h" + +-#include ++#include + #include "nat/gdb_ptrace.h" + #include + #include "inf-ptrace.h" +-- +2.41.0 + diff --git a/package/gdb/13.2/0004-gdbserver-fix-build-for-m68k.patch b/package/gdb/13.2/0004-gdbserver-fix-build-for-m68k.patch new file mode 100644 index 00000000..d4c41737 --- /dev/null +++ b/package/gdb/13.2/0004-gdbserver-fix-build-for-m68k.patch @@ -0,0 +1,63 @@ +From e1eef0a642f7aa8aa6071b99b7c0119c436dec11 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 22 Jun 2018 22:40:26 +0200 +Subject: [PATCH] gdbserver: fix build for m68k +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +As for strace [1], when is included after , +the build fails on m68k with the following diagnostics: + +In file included from ./../nat/linux-ptrace.h:28:0, + from linux-low.h:27, + from linux-m68k-low.c:20: +[...]/usr/include/sys/reg.h:26:3: error: expected identifier before numeric constant + PT_D1 = 0, + ^ +[...]usr/include/sys/reg.h:26:3: error: expected « } » before numeric constant +[...]usr/include/sys/reg.h:26:3: error: expected unqualified-id before numeric constant +In file included from linux-m68k-low.c:27:0: +[...]usr/include/sys/reg.h:99:1: error: expected declaration before « } » token + }; + ^ + +Fix this by moving on top of "linux-low.h". + +[1] https://github.com/strace/strace/commit/6ebf6c4f9e5ebca123a5b5f24afe67cf0473cf92 + +Signed-off-by: Romain Naour +--- + gdbserver/linux-m68k-low.cc | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/gdbserver/linux-m68k-low.cc b/gdbserver/linux-m68k-low.cc +index 6094fd914f5..3613d9f642a 100644 +--- a/gdbserver/linux-m68k-low.cc ++++ b/gdbserver/linux-m68k-low.cc +@@ -17,6 +17,11 @@ + along with this program. If not, see . */ + + #include "server.h" ++ ++#ifdef HAVE_SYS_REG_H ++#include ++#endif ++ + #include "linux-low.h" + + /* Linux target op definitions for the m68k architecture. */ +@@ -80,10 +85,6 @@ m68k_target::low_decr_pc_after_break () + void init_registers_m68k (void); + extern const struct target_desc *tdesc_m68k; + +-#ifdef HAVE_SYS_REG_H +-#include +-#endif +- + #define m68k_num_regs 29 + #define m68k_num_gregs 18 + +-- +2.41.0 + diff --git a/package/gdb/13.2/0005-nat-fork-inferior-include-linux-ptrace.h.patch b/package/gdb/13.2/0005-nat-fork-inferior-include-linux-ptrace.h.patch new file mode 100644 index 00000000..e8986459 --- /dev/null +++ b/package/gdb/13.2/0005-nat-fork-inferior-include-linux-ptrace.h.patch @@ -0,0 +1,53 @@ +From 1527c8a790f50be8386eef413483248ff281ed28 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 24 Jun 2018 23:33:55 +0200 +Subject: [PATCH] nat/fork-inferior: include linux-ptrace.h + +To decide whether fork() or vfork() should be used, fork-inferior.c +uses the following test: + + #if !(defined(__UCLIBC__) && defined(HAS_NOMMU)) + +However, HAS_NOMMU is never defined, because it gets defined in +linux-ptrace.h, which is not included by fork-inferior.c. Due to this, +gdbserver fails to build on noMMU architectures. This commit fixes +that by simply including linux-ptrace.h. + +This bug was introduced by commit +2090129c36c7e582943b7d300968d19b46160d84 ("Share fork_inferior et al +with gdbserver"). Indeed, the same fork()/vfork() selection was done, +but in another file where linux-ptrace.h was included. + +Fixes the following build issue: + +../nat/fork-inferior.c: In function 'pid_t fork_inferior(const char*, const string&, char**, void (*)(), void (*)(int), void (*)(), const char*, void (*)(const char*, char* const*, char* const*))': +../nat/fork-inferior.c:376:11: error: 'fork' was not declared in this scope + pid = fork (); + ^~~~ +../nat/fork-inferior.c:376:11: note: suggested alternative: 'vfork' + pid = fork (); + ^~~~ + vfork + +Signed-off-by: Thomas Petazzoni +[Romain: rebase on gdb 8.3] +Signed-off-by: Romain Naour +--- + gdb/nat/fork-inferior.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/gdb/nat/fork-inferior.c b/gdb/nat/fork-inferior.c +index 968983b2021..8ef620c7193 100644 +--- a/gdb/nat/fork-inferior.c ++++ b/gdb/nat/fork-inferior.c +@@ -27,6 +27,7 @@ + #include "gdbsupport/pathstuff.h" + #include "gdbsupport/signals-state-save-restore.h" + #include "gdbsupport/gdb_tilde_expand.h" ++#include "linux-ptrace.h" + #include + + extern char **environ; +-- +2.41.0 + diff --git a/package/gdb/13.2/0006-Fix-getrandom-compile-for-uclibc-v1.0.35.patch b/package/gdb/13.2/0006-Fix-getrandom-compile-for-uclibc-v1.0.35.patch new file mode 100644 index 00000000..27ff8342 --- /dev/null +++ b/package/gdb/13.2/0006-Fix-getrandom-compile-for-uclibc-v1.0.35.patch @@ -0,0 +1,39 @@ +From a9a4213216d95b4e7cbe4f96d993233bfa2f21e6 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Sat, 6 Nov 2021 10:06:25 +0100 +Subject: [PATCH] Fix getrandom compile for uclibc < v1.0.35 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- fix getrandom compile for uclibc < v1.0.35, add missing stddef.h + include (fixed in uclibc since v1.0.35, see [1]) + +Fixes: + + .../host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:27:35: error: unknown type name ‘size_t’ + 27 | extern int getrandom(void *__buf, size_t count, unsigned int flags) + | ^~~~~~ + +[1] https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/commit/?id=00972c02c2b6e0a95d5def4a71bdfb188e091782t + +Signed-off-by: Peter Seiderer +--- + gnulib/import/getrandom.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/gnulib/import/getrandom.c b/gnulib/import/getrandom.c +index e1468730933..3948d8d552a 100644 +--- a/gnulib/import/getrandom.c ++++ b/gnulib/import/getrandom.c +@@ -19,6 +19,7 @@ + + #include + ++#include + #include + + #include +-- +2.41.0 + diff --git a/package/gdb/13.2/0007-fix-musl-build-on-riscv.patch b/package/gdb/13.2/0007-fix-musl-build-on-riscv.patch new file mode 100644 index 00000000..9b494f6b --- /dev/null +++ b/package/gdb/13.2/0007-fix-musl-build-on-riscv.patch @@ -0,0 +1,60 @@ +From dcadf89351e1944986d3f8c96081142b65f131eb Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 10 Nov 2021 23:14:54 +0100 +Subject: [PATCH] fix musl build on riscv + +Fix the following build failure raised with musl: + +../../gdbserver/linux-riscv-low.cc: In function 'void riscv_fill_fpregset(regcache*, void*)': +../../gdbserver/linux-riscv-low.cc:140:19: error: 'ELF_NFPREG' was not declared in this scope; did you mean 'ELF_NGREG'? + 140 | for (i = 0; i < ELF_NFPREG - 1; i++, regbuf += flen) + | ^~~~~~~~~~ + | ELF_NGREG + +musl fixed the issue with +https://git.musl-libc.org/cgit/musl/commit/?id=e5d2823631bbfebacf48e1a34ed28f28d7cb2570 + +Fixes: + - http://autobuild.buildroot.org/results/16b19198980ce9c81a618b3f6e8dc9fe28247a28 + +Signed-off-by: Fabrice Fontaine +--- + gdb/nat/riscv-linux-tdesc.c | 5 +++++ + gdbserver/linux-riscv-low.cc | 5 +++++ + 2 files changed, 10 insertions(+) + +diff --git a/gdb/nat/riscv-linux-tdesc.c b/gdb/nat/riscv-linux-tdesc.c +index d676233cc31..b620aab5b72 100644 +--- a/gdb/nat/riscv-linux-tdesc.c ++++ b/gdb/nat/riscv-linux-tdesc.c +@@ -31,6 +31,11 @@ + # define NFPREG 33 + #endif + ++/* Work around musl breakage since version 1.1.24. */ ++#ifndef ELF_NFPREG ++# define ELF_NFPREG 33 ++#endif ++ + /* See nat/riscv-linux-tdesc.h. */ + + struct riscv_gdbarch_features +diff --git a/gdbserver/linux-riscv-low.cc b/gdbserver/linux-riscv-low.cc +index 129bc3b138b..a813a897de4 100644 +--- a/gdbserver/linux-riscv-low.cc ++++ b/gdbserver/linux-riscv-low.cc +@@ -30,6 +30,11 @@ + # define NFPREG 33 + #endif + ++/* Work around musl breakage since version 1.1.24. */ ++#ifndef ELF_NFPREG ++# define ELF_NFPREG 33 ++#endif ++ + /* Linux target op definitions for the RISC-V architecture. */ + + class riscv_target : public linux_process_target +-- +2.41.0 + diff --git a/package/gdb/13.2/0008-gdbserver-Makefile.in-fix-NLS-build.patch b/package/gdb/13.2/0008-gdbserver-Makefile.in-fix-NLS-build.patch new file mode 100644 index 00000000..c8a40ab5 --- /dev/null +++ b/package/gdb/13.2/0008-gdbserver-Makefile.in-fix-NLS-build.patch @@ -0,0 +1,38 @@ +From a4535ce245a0675399877c62a9a12fb0fd36b510 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 18 Nov 2021 22:52:08 +0100 +Subject: [PATCH] gdbserver/Makefile.in: fix NLS build + +Fix the following build failure raised since gdb version 10.1 and +https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=9a665d62266e75f0519f3a663784c458885b5c63: + + CXXLD libinproctrace.so +/home/buildroot/autobuild/instance-2/output-1/host/opt/ext-toolchain/bin/../lib/gcc/i586-buildroot-linux-musl/9.3.0/../../../../i586-buildroot-linux-musl/bin/ld: gdbsupport/tdesc-ipa.o: in function `print_xml_feature::visit(tdesc_type_builtin const*)': +/home/buildroot/autobuild/instance-2/output-1/build/gdb-10.2/build/gdbserver/../../gdbserver/../gdbsupport/tdesc.cc:310: undefined reference to `libintl_gettext' + +Fixes: + - http://autobuild.buildroot.org/results/faacc874fe9d32b74cb3d3dea988ef661cb0e3d0 + +Signed-off-by: Fabrice Fontaine +[Upstream status: +https://sourceware.org/pipermail/gdb-patches/2021-November/183580.html] +--- + gdbserver/Makefile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gdbserver/Makefile.in b/gdbserver/Makefile.in +index 040f0b6faa0..07ca24cef5c 100644 +--- a/gdbserver/Makefile.in ++++ b/gdbserver/Makefile.in +@@ -389,7 +389,7 @@ $(IPA_LIB): $(sort $(IPA_OBJS)) ${CDEPS} + $(ECHO_CXXLD) $(CC_LD) -shared -fPIC -Wl,--soname=$(IPA_LIB) \ + -Wl,--no-undefined $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \ + $(CXXFLAGS) \ +- -o $(IPA_LIB) ${IPA_OBJS} $(LIBIBERTY_FOR_SHLIB) -ldl -pthread ++ -o $(IPA_LIB) ${IPA_OBJS} $(LIBIBERTY_FOR_SHLIB) -ldl -pthread $(INTL) + + # Put the proper machine-specific files first, so M-. on a machine + # specific routine gets the one for the correct machine. +-- +2.41.0 + diff --git a/package/gdb/13.2/0009-gdb-Fix-native-build-on-xtensa.patch b/package/gdb/13.2/0009-gdb-Fix-native-build-on-xtensa.patch new file mode 100644 index 00000000..553ef278 --- /dev/null +++ b/package/gdb/13.2/0009-gdb-Fix-native-build-on-xtensa.patch @@ -0,0 +1,57 @@ +From ed34c23325270b3eada8202f5478b8d53fb5846a Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 28 Aug 2022 23:21:37 +0200 +Subject: [PATCH] gdb: Fix native build on xtensa +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Apply a similar fix than for Alpha architecture on gdb 9: +https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=7a27b85f6d9b5eea9bd1493f903158fbea4b2231 + +Fixes: + +../../gdb/xtensa-linux-nat.c: In function ‘void fill_gregset(const regcache*, elf_greg_t (*)[128], int)’: +../../gdb/xtensa-linux-nat.c:66:17: error: ‘gdbarch_pc_regnum’ was not declared in this scope + 66 | if (regnum == gdbarch_pc_regnum (gdbarch) || regnum == -1) + | ^~~~~~~~~~~~~~~~~ + CXX complaints.o +../../gdb/xtensa-linux-nat.c:68:17: error: ‘gdbarch_ps_regnum’ was not declared in this scope + 68 | if (regnum == gdbarch_ps_regnum (gdbarch) || regnum == -1) + | ^~~~~~~~~~~~~~~~~ +../../gdb/xtensa-linux-nat.c:71:38: error: no matching function for call to ‘gdbarch_tdep::gdbarch_tdep(gdbarch*&)’ + 71 | if (regnum == gdbarch_tdep (gdbarch)->wb_regnum || regnum == -1) + | ^ +In file included from ../../gdb/xtensa-linux-nat.c:38: +../../gdb/xtensa-tdep.h:160:8: note: candidate: ‘gdbarch_tdep::gdbarch_tdep()’ + 160 | struct gdbarch_tdep + | ^~~~~~~~~~~~ +../../gdb/xtensa-tdep.h:160:8: note: candidate expects 0 arguments, 1 provided +../../gdb/xtensa-tdep.h:160:8: note: candidate: ‘constexpr gdbarch_tdep::gdbarch_tdep(const gdbarch_tdep&)’ +../../gdb/xtensa-tdep.h:160:8: note: no known conversion for argument 1 from ‘gdbarch*’ to ‘const gdbarch_tdep&’ +../../gdb/xtensa-tdep.h:160:8: note: candidate: ‘constexpr gdbarch_tdep::gdbarch_tdep(gdbarch_tdep&&)’ +../../gdb/xtensa-tdep.h:160:8: note: no known conversion for argument 1 from ‘gdbarch*’ to ‘gdbarch_tdep&&’ +../../gdb/xtensa-linux-nat.c:72:49: error: no matching function for call to ‘gdbarch_tdep::gdbarch_tdep(gdbarch*&)’ + 72 | regcache->raw_collect (gdbarch_tdep (gdbarch)->wb_regnum, + | ^ + +Signed-off-by: Romain Naour +--- + gdb/xtensa-linux-nat.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/gdb/xtensa-linux-nat.c b/gdb/xtensa-linux-nat.c +index e3da3c6a7a5..61834bc28d0 100644 +--- a/gdb/xtensa-linux-nat.c ++++ b/gdb/xtensa-linux-nat.c +@@ -36,6 +36,7 @@ + + #include "gregset.h" + #include "xtensa-tdep.h" ++#include "gdbarch.h" + + /* Defines ps_err_e, struct ps_prochandle. */ + #include "gdb_proc_service.h" +-- +2.41.0 + diff --git a/package/gdb/14.2/0001-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch b/package/gdb/14.2/0001-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch new file mode 100644 index 00000000..b213ba5a --- /dev/null +++ b/package/gdb/14.2/0001-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch @@ -0,0 +1,55 @@ +From ee74f5a6fa98b43c45c9c56a26c00abc21aeeaa1 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 6 Aug 2016 17:32:50 -0700 +Subject: [PATCH] ppc/ptrace: Define pt_regs uapi_pt_regs on !GLIBC systems + +Upstream-Status: Pending + +Signed-off-by: Khem Raj +Signed-off-by: Thomas Petazzoni +[Rebase on gdb 8.3] +Signed-off-by: Romain Naour +--- + gdb/nat/ppc-linux.h | 6 ++++++ + gdbserver/linux-ppc-low.cc | 6 ++++++ + 2 files changed, 12 insertions(+) + +diff --git a/gdb/nat/ppc-linux.h b/gdb/nat/ppc-linux.h +index c84f9146bbd..8c8580c95e1 100644 +--- a/gdb/nat/ppc-linux.h ++++ b/gdb/nat/ppc-linux.h +@@ -18,7 +18,13 @@ + #ifndef NAT_PPC_LINUX_H + #define NAT_PPC_LINUX_H + ++#if !defined(__GLIBC__) ++# define pt_regs uapi_pt_regs ++#endif + #include ++#if !defined(__GLIBC__) ++# undef pt_regs ++#endif + #include + + /* This sometimes isn't defined. */ +diff --git a/gdbserver/linux-ppc-low.cc b/gdbserver/linux-ppc-low.cc +index 86fbc8f5d96..8a1a39bc750 100644 +--- a/gdbserver/linux-ppc-low.cc ++++ b/gdbserver/linux-ppc-low.cc +@@ -23,7 +23,13 @@ + #include "elf/common.h" + #include + #include ++#if !defined(__GLIBC__) ++# define pt_regs uapi_pt_regs ++#endif + #include ++#if !defined(__GLIBC__) ++# undef pt_regs ++#endif + + #include "arch/ppc-linux-common.h" + #include "arch/ppc-linux-tdesc.h" +-- +2.43.0 + diff --git a/package/gdb/14.2/0002-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch b/package/gdb/14.2/0002-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch new file mode 100644 index 00000000..b070c4fc --- /dev/null +++ b/package/gdb/14.2/0002-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch @@ -0,0 +1,43 @@ +From 57b2606e39b2ac90a3810baccbd73161ffdb5f2d Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 3 Jun 2017 21:23:52 +0200 +Subject: [PATCH] sh/ptrace: Define pt_{dsp,}regs uapi_pt_{dsp,}regs on !GLIBC + systems + +Fixes a pt_{dsp,}regs redefinition when building with the musl C library +on SuperH. + +Inspired by +http://git.yoctoproject.org/clean/cgit.cgi/poky/plain/meta/recipes-devtools/gdb/gdb/0004-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch, +adapted for SuperH. + +Signed-off-by: Thomas Petazzoni +[Rebase on gdb 8.0] +Signed-off-by: Romain Naour +--- + gdbserver/linux-sh-low.cc | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/gdbserver/linux-sh-low.cc b/gdbserver/linux-sh-low.cc +index 782b8292010..e42f29b845a 100644 +--- a/gdbserver/linux-sh-low.cc ++++ b/gdbserver/linux-sh-low.cc +@@ -76,7 +76,15 @@ extern const struct target_desc *tdesc_sh; + #include + #endif + ++#if !defined(__GLIBC__) ++# define pt_regs uapi_pt_regs ++# define pt_dspregs uapi_pt_dspregs ++#endif + #include ++#if !defined(__GLIBC__) ++# undef pt_regs ++# undef pt_dspregs ++#endif + + #define sh_num_regs 41 + +-- +2.43.0 + diff --git a/package/gdb/14.2/0003-use-asm-sgidefs.h.patch b/package/gdb/14.2/0003-use-asm-sgidefs.h.patch new file mode 100644 index 00000000..12f0885b --- /dev/null +++ b/package/gdb/14.2/0003-use-asm-sgidefs.h.patch @@ -0,0 +1,40 @@ +From 5288e2a3dcb2928e1367cd1d4c31da3b8310f3a0 Mon Sep 17 00:00:00 2001 +From: Andre McCurdy +Date: Sat, 30 Apr 2016 15:29:06 -0700 +Subject: [PATCH] use + +Build fix for MIPS with musl libc + +The MIPS specific header is provided by glibc and uclibc +but not by musl. Regardless of the libc, the kernel headers provide + which provides the same definitions, so use that +instead. + +Upstream-Status: Pending + +[Vincent: +Taken from: https://sourceware.org/bugzilla/show_bug.cgi?id=21070] + +Signed-off-by: Andre McCurdy +Signed-off-by: Khem Raj +Signed-off-by: Vicente Olivert Riera +--- + gdb/mips-linux-nat.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c +index 8a7cc95f2a4..3686f43abfd 100644 +--- a/gdb/mips-linux-nat.c ++++ b/gdb/mips-linux-nat.c +@@ -31,7 +31,7 @@ + #include "gdb_proc_service.h" + #include "gregset.h" + +-#include ++#include + #include "nat/gdb_ptrace.h" + #include + #include "inf-ptrace.h" +-- +2.43.0 + diff --git a/package/gdb/14.2/0004-gdbserver-fix-build-for-m68k.patch b/package/gdb/14.2/0004-gdbserver-fix-build-for-m68k.patch new file mode 100644 index 00000000..21509b32 --- /dev/null +++ b/package/gdb/14.2/0004-gdbserver-fix-build-for-m68k.patch @@ -0,0 +1,63 @@ +From 5e352184c2fc696c5b7aff1985098c460686a638 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 22 Jun 2018 22:40:26 +0200 +Subject: [PATCH] gdbserver: fix build for m68k +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +As for strace [1], when is included after , +the build fails on m68k with the following diagnostics: + +In file included from ./../nat/linux-ptrace.h:28:0, + from linux-low.h:27, + from linux-m68k-low.c:20: +[...]/usr/include/sys/reg.h:26:3: error: expected identifier before numeric constant + PT_D1 = 0, + ^ +[...]usr/include/sys/reg.h:26:3: error: expected « } » before numeric constant +[...]usr/include/sys/reg.h:26:3: error: expected unqualified-id before numeric constant +In file included from linux-m68k-low.c:27:0: +[...]usr/include/sys/reg.h:99:1: error: expected declaration before « } » token + }; + ^ + +Fix this by moving on top of "linux-low.h". + +[1] https://github.com/strace/strace/commit/6ebf6c4f9e5ebca123a5b5f24afe67cf0473cf92 + +Signed-off-by: Romain Naour +--- + gdbserver/linux-m68k-low.cc | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/gdbserver/linux-m68k-low.cc b/gdbserver/linux-m68k-low.cc +index 6094fd914f5..3613d9f642a 100644 +--- a/gdbserver/linux-m68k-low.cc ++++ b/gdbserver/linux-m68k-low.cc +@@ -17,6 +17,11 @@ + along with this program. If not, see . */ + + #include "server.h" ++ ++#ifdef HAVE_SYS_REG_H ++#include ++#endif ++ + #include "linux-low.h" + + /* Linux target op definitions for the m68k architecture. */ +@@ -80,10 +85,6 @@ m68k_target::low_decr_pc_after_break () + void init_registers_m68k (void); + extern const struct target_desc *tdesc_m68k; + +-#ifdef HAVE_SYS_REG_H +-#include +-#endif +- + #define m68k_num_regs 29 + #define m68k_num_gregs 18 + +-- +2.43.0 + diff --git a/package/gdb/14.2/0005-nat-fork-inferior-include-linux-ptrace.h.patch b/package/gdb/14.2/0005-nat-fork-inferior-include-linux-ptrace.h.patch new file mode 100644 index 00000000..43ed3778 --- /dev/null +++ b/package/gdb/14.2/0005-nat-fork-inferior-include-linux-ptrace.h.patch @@ -0,0 +1,53 @@ +From 3e55ad5448f5379e3d7e079f17a18904e905cebf Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 24 Jun 2018 23:33:55 +0200 +Subject: [PATCH] nat/fork-inferior: include linux-ptrace.h + +To decide whether fork() or vfork() should be used, fork-inferior.c +uses the following test: + + #if !(defined(__UCLIBC__) && defined(HAS_NOMMU)) + +However, HAS_NOMMU is never defined, because it gets defined in +linux-ptrace.h, which is not included by fork-inferior.c. Due to this, +gdbserver fails to build on noMMU architectures. This commit fixes +that by simply including linux-ptrace.h. + +This bug was introduced by commit +2090129c36c7e582943b7d300968d19b46160d84 ("Share fork_inferior et al +with gdbserver"). Indeed, the same fork()/vfork() selection was done, +but in another file where linux-ptrace.h was included. + +Fixes the following build issue: + +../nat/fork-inferior.c: In function 'pid_t fork_inferior(const char*, const string&, char**, void (*)(), void (*)(int), void (*)(), const char*, void (*)(const char*, char* const*, char* const*))': +../nat/fork-inferior.c:376:11: error: 'fork' was not declared in this scope + pid = fork (); + ^~~~ +../nat/fork-inferior.c:376:11: note: suggested alternative: 'vfork' + pid = fork (); + ^~~~ + vfork + +Signed-off-by: Thomas Petazzoni +[Romain: rebase on gdb 8.3] +Signed-off-by: Romain Naour +--- + gdb/nat/fork-inferior.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/gdb/nat/fork-inferior.c b/gdb/nat/fork-inferior.c +index 968983b2021..8ef620c7193 100644 +--- a/gdb/nat/fork-inferior.c ++++ b/gdb/nat/fork-inferior.c +@@ -27,6 +27,7 @@ + #include "gdbsupport/pathstuff.h" + #include "gdbsupport/signals-state-save-restore.h" + #include "gdbsupport/gdb_tilde_expand.h" ++#include "linux-ptrace.h" + #include + + extern char **environ; +-- +2.43.0 + diff --git a/package/gdb/14.2/0006-Fix-getrandom-compile-for-uclibc-v1.0.35.patch b/package/gdb/14.2/0006-Fix-getrandom-compile-for-uclibc-v1.0.35.patch new file mode 100644 index 00000000..7fed8266 --- /dev/null +++ b/package/gdb/14.2/0006-Fix-getrandom-compile-for-uclibc-v1.0.35.patch @@ -0,0 +1,39 @@ +From c87940ff1c2efd22c3dab9cd712531281144ed89 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Sat, 6 Nov 2021 10:06:25 +0100 +Subject: [PATCH] Fix getrandom compile for uclibc < v1.0.35 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- fix getrandom compile for uclibc < v1.0.35, add missing stddef.h + include (fixed in uclibc since v1.0.35, see [1]) + +Fixes: + + .../host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:27:35: error: unknown type name ‘size_t’ + 27 | extern int getrandom(void *__buf, size_t count, unsigned int flags) + | ^~~~~~ + +[1] https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/commit/?id=00972c02c2b6e0a95d5def4a71bdfb188e091782t + +Signed-off-by: Peter Seiderer +--- + gnulib/import/getrandom.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/gnulib/import/getrandom.c b/gnulib/import/getrandom.c +index e1468730933..3948d8d552a 100644 +--- a/gnulib/import/getrandom.c ++++ b/gnulib/import/getrandom.c +@@ -19,6 +19,7 @@ + + #include + ++#include + #include + + #include +-- +2.43.0 + diff --git a/package/gdb/14.2/0007-fix-musl-build-on-riscv.patch b/package/gdb/14.2/0007-fix-musl-build-on-riscv.patch new file mode 100644 index 00000000..ca6af252 --- /dev/null +++ b/package/gdb/14.2/0007-fix-musl-build-on-riscv.patch @@ -0,0 +1,60 @@ +From f297ef653008b47fdaa4eebbccf2705f3d0996a8 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 10 Nov 2021 23:14:54 +0100 +Subject: [PATCH] fix musl build on riscv + +Fix the following build failure raised with musl: + +../../gdbserver/linux-riscv-low.cc: In function 'void riscv_fill_fpregset(regcache*, void*)': +../../gdbserver/linux-riscv-low.cc:140:19: error: 'ELF_NFPREG' was not declared in this scope; did you mean 'ELF_NGREG'? + 140 | for (i = 0; i < ELF_NFPREG - 1; i++, regbuf += flen) + | ^~~~~~~~~~ + | ELF_NGREG + +musl fixed the issue with +https://git.musl-libc.org/cgit/musl/commit/?id=e5d2823631bbfebacf48e1a34ed28f28d7cb2570 + +Fixes: + - http://autobuild.buildroot.org/results/16b19198980ce9c81a618b3f6e8dc9fe28247a28 + +Signed-off-by: Fabrice Fontaine +--- + gdb/nat/riscv-linux-tdesc.c | 5 +++++ + gdbserver/linux-riscv-low.cc | 5 +++++ + 2 files changed, 10 insertions(+) + +diff --git a/gdb/nat/riscv-linux-tdesc.c b/gdb/nat/riscv-linux-tdesc.c +index d676233cc31..b620aab5b72 100644 +--- a/gdb/nat/riscv-linux-tdesc.c ++++ b/gdb/nat/riscv-linux-tdesc.c +@@ -31,6 +31,11 @@ + # define NFPREG 33 + #endif + ++/* Work around musl breakage since version 1.1.24. */ ++#ifndef ELF_NFPREG ++# define ELF_NFPREG 33 ++#endif ++ + /* See nat/riscv-linux-tdesc.h. */ + + struct riscv_gdbarch_features +diff --git a/gdbserver/linux-riscv-low.cc b/gdbserver/linux-riscv-low.cc +index 4c251bb179c..77a48ac9ee1 100644 +--- a/gdbserver/linux-riscv-low.cc ++++ b/gdbserver/linux-riscv-low.cc +@@ -30,6 +30,11 @@ + # define NFPREG 33 + #endif + ++/* Work around musl breakage since version 1.1.24. */ ++#ifndef ELF_NFPREG ++# define ELF_NFPREG 33 ++#endif ++ + /* Linux target op definitions for the RISC-V architecture. */ + + class riscv_target : public linux_process_target +-- +2.43.0 + diff --git a/package/gdb/14.2/0008-gdbserver-Makefile.in-fix-NLS-build.patch b/package/gdb/14.2/0008-gdbserver-Makefile.in-fix-NLS-build.patch new file mode 100644 index 00000000..05fedfc9 --- /dev/null +++ b/package/gdb/14.2/0008-gdbserver-Makefile.in-fix-NLS-build.patch @@ -0,0 +1,38 @@ +From 49cc0d8a7a930eab1eb8c848101150ca83145334 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 18 Nov 2021 22:52:08 +0100 +Subject: [PATCH] gdbserver/Makefile.in: fix NLS build + +Fix the following build failure raised since gdb version 10.1 and +https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=9a665d62266e75f0519f3a663784c458885b5c63: + + CXXLD libinproctrace.so +/home/buildroot/autobuild/instance-2/output-1/host/opt/ext-toolchain/bin/../lib/gcc/i586-buildroot-linux-musl/9.3.0/../../../../i586-buildroot-linux-musl/bin/ld: gdbsupport/tdesc-ipa.o: in function `print_xml_feature::visit(tdesc_type_builtin const*)': +/home/buildroot/autobuild/instance-2/output-1/build/gdb-10.2/build/gdbserver/../../gdbserver/../gdbsupport/tdesc.cc:310: undefined reference to `libintl_gettext' + +Fixes: + - http://autobuild.buildroot.org/results/faacc874fe9d32b74cb3d3dea988ef661cb0e3d0 + +Signed-off-by: Fabrice Fontaine +[Upstream status: +https://sourceware.org/pipermail/gdb-patches/2021-November/183580.html] +--- + gdbserver/Makefile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gdbserver/Makefile.in b/gdbserver/Makefile.in +index b597515d428..54cc7ccb0f6 100644 +--- a/gdbserver/Makefile.in ++++ b/gdbserver/Makefile.in +@@ -389,7 +389,7 @@ $(IPA_LIB): $(sort $(IPA_OBJS)) ${CDEPS} + $(ECHO_CXXLD) $(CC_LD) -shared -fPIC -Wl,--soname=$(IPA_LIB) \ + -Wl,--no-undefined $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \ + $(CXXFLAGS) \ +- -o $(IPA_LIB) ${IPA_OBJS} $(LIBIBERTY_FOR_SHLIB) -ldl -pthread ++ -o $(IPA_LIB) ${IPA_OBJS} $(LIBIBERTY_FOR_SHLIB) -ldl -pthread $(INTL) + + # Put the proper machine-specific files first, so M-. on a machine + # specific routine gets the one for the correct machine. +-- +2.43.0 + diff --git a/package/gdb/14.2/0009-gdb-Fix-native-build-on-xtensa.patch b/package/gdb/14.2/0009-gdb-Fix-native-build-on-xtensa.patch new file mode 100644 index 00000000..10302a4b --- /dev/null +++ b/package/gdb/14.2/0009-gdb-Fix-native-build-on-xtensa.patch @@ -0,0 +1,57 @@ +From 0533122983d2ac973453915cb1331b87d8d7fc0a Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 28 Aug 2022 23:21:37 +0200 +Subject: [PATCH] gdb: Fix native build on xtensa +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Apply a similar fix than for Alpha architecture on gdb 9: +https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=7a27b85f6d9b5eea9bd1493f903158fbea4b2231 + +Fixes: + +../../gdb/xtensa-linux-nat.c: In function ‘void fill_gregset(const regcache*, elf_greg_t (*)[128], int)’: +../../gdb/xtensa-linux-nat.c:66:17: error: ‘gdbarch_pc_regnum’ was not declared in this scope + 66 | if (regnum == gdbarch_pc_regnum (gdbarch) || regnum == -1) + | ^~~~~~~~~~~~~~~~~ + CXX complaints.o +../../gdb/xtensa-linux-nat.c:68:17: error: ‘gdbarch_ps_regnum’ was not declared in this scope + 68 | if (regnum == gdbarch_ps_regnum (gdbarch) || regnum == -1) + | ^~~~~~~~~~~~~~~~~ +../../gdb/xtensa-linux-nat.c:71:38: error: no matching function for call to ‘gdbarch_tdep::gdbarch_tdep(gdbarch*&)’ + 71 | if (regnum == gdbarch_tdep (gdbarch)->wb_regnum || regnum == -1) + | ^ +In file included from ../../gdb/xtensa-linux-nat.c:38: +../../gdb/xtensa-tdep.h:160:8: note: candidate: ‘gdbarch_tdep::gdbarch_tdep()’ + 160 | struct gdbarch_tdep + | ^~~~~~~~~~~~ +../../gdb/xtensa-tdep.h:160:8: note: candidate expects 0 arguments, 1 provided +../../gdb/xtensa-tdep.h:160:8: note: candidate: ‘constexpr gdbarch_tdep::gdbarch_tdep(const gdbarch_tdep&)’ +../../gdb/xtensa-tdep.h:160:8: note: no known conversion for argument 1 from ‘gdbarch*’ to ‘const gdbarch_tdep&’ +../../gdb/xtensa-tdep.h:160:8: note: candidate: ‘constexpr gdbarch_tdep::gdbarch_tdep(gdbarch_tdep&&)’ +../../gdb/xtensa-tdep.h:160:8: note: no known conversion for argument 1 from ‘gdbarch*’ to ‘gdbarch_tdep&&’ +../../gdb/xtensa-linux-nat.c:72:49: error: no matching function for call to ‘gdbarch_tdep::gdbarch_tdep(gdbarch*&)’ + 72 | regcache->raw_collect (gdbarch_tdep (gdbarch)->wb_regnum, + | ^ + +Signed-off-by: Romain Naour +--- + gdb/xtensa-linux-nat.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/gdb/xtensa-linux-nat.c b/gdb/xtensa-linux-nat.c +index e3da3c6a7a5..61834bc28d0 100644 +--- a/gdb/xtensa-linux-nat.c ++++ b/gdb/xtensa-linux-nat.c +@@ -36,6 +36,7 @@ + + #include "gregset.h" + #include "xtensa-tdep.h" ++#include "gdbarch.h" + + /* Defines ps_err_e, struct ps_prochandle. */ + #include "gdb_proc_service.h" +-- +2.43.0 + diff --git a/package/gdb/15.1/0001-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch b/package/gdb/15.1/0001-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch new file mode 100644 index 00000000..d4147e3a --- /dev/null +++ b/package/gdb/15.1/0001-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch @@ -0,0 +1,55 @@ +From e815bac6c090d8c67a508d648685cbaf706ed052 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 6 Aug 2016 17:32:50 -0700 +Subject: [PATCH] ppc/ptrace: Define pt_regs uapi_pt_regs on !GLIBC systems + +Upstream-Status: Pending + +Signed-off-by: Khem Raj +Signed-off-by: Thomas Petazzoni +[Rebase on gdb 8.3] +Signed-off-by: Romain Naour +--- + gdb/nat/ppc-linux.h | 6 ++++++ + gdbserver/linux-ppc-low.cc | 6 ++++++ + 2 files changed, 12 insertions(+) + +diff --git a/gdb/nat/ppc-linux.h b/gdb/nat/ppc-linux.h +index b51e2278f4b..f1bc07df0e9 100644 +--- a/gdb/nat/ppc-linux.h ++++ b/gdb/nat/ppc-linux.h +@@ -18,7 +18,13 @@ + #ifndef NAT_PPC_LINUX_H + #define NAT_PPC_LINUX_H + ++#if !defined(__GLIBC__) ++# define pt_regs uapi_pt_regs ++#endif + #include ++#if !defined(__GLIBC__) ++# undef pt_regs ++#endif + #include + + /* This sometimes isn't defined. */ +diff --git a/gdbserver/linux-ppc-low.cc b/gdbserver/linux-ppc-low.cc +index bd3ac143660..1c8c0b3a98e 100644 +--- a/gdbserver/linux-ppc-low.cc ++++ b/gdbserver/linux-ppc-low.cc +@@ -22,7 +22,13 @@ + #include "elf/common.h" + #include + #include ++#if !defined(__GLIBC__) ++# define pt_regs uapi_pt_regs ++#endif + #include ++#if !defined(__GLIBC__) ++# undef pt_regs ++#endif + + #include "arch/ppc-linux-common.h" + #include "arch/ppc-linux-tdesc.h" +-- +2.45.2 + diff --git a/package/gdb/15.1/0002-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch b/package/gdb/15.1/0002-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch new file mode 100644 index 00000000..0d4f918c --- /dev/null +++ b/package/gdb/15.1/0002-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch @@ -0,0 +1,43 @@ +From da36d051935c737b09c080b5a4e27180f85d975f Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 3 Jun 2017 21:23:52 +0200 +Subject: [PATCH] sh/ptrace: Define pt_{dsp,}regs uapi_pt_{dsp,}regs on !GLIBC + systems + +Fixes a pt_{dsp,}regs redefinition when building with the musl C library +on SuperH. + +Inspired by +http://git.yoctoproject.org/clean/cgit.cgi/poky/plain/meta/recipes-devtools/gdb/gdb/0004-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch, +adapted for SuperH. + +Signed-off-by: Thomas Petazzoni +[Rebase on gdb 8.0] +Signed-off-by: Romain Naour +--- + gdbserver/linux-sh-low.cc | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/gdbserver/linux-sh-low.cc b/gdbserver/linux-sh-low.cc +index 64e6de3480b..4770e652614 100644 +--- a/gdbserver/linux-sh-low.cc ++++ b/gdbserver/linux-sh-low.cc +@@ -75,7 +75,15 @@ extern const struct target_desc *tdesc_sh; + #include + #endif + ++#if !defined(__GLIBC__) ++# define pt_regs uapi_pt_regs ++# define pt_dspregs uapi_pt_dspregs ++#endif + #include ++#if !defined(__GLIBC__) ++# undef pt_regs ++# undef pt_dspregs ++#endif + + #define sh_num_regs 41 + +-- +2.45.2 + diff --git a/package/gdb/15.1/0003-use-asm-sgidefs.h.patch b/package/gdb/15.1/0003-use-asm-sgidefs.h.patch new file mode 100644 index 00000000..fbbeec06 --- /dev/null +++ b/package/gdb/15.1/0003-use-asm-sgidefs.h.patch @@ -0,0 +1,40 @@ +From 73cfc1539610f4671e35591bfd1e6bf7edda8e71 Mon Sep 17 00:00:00 2001 +From: Andre McCurdy +Date: Sat, 30 Apr 2016 15:29:06 -0700 +Subject: [PATCH] use + +Build fix for MIPS with musl libc + +The MIPS specific header is provided by glibc and uclibc +but not by musl. Regardless of the libc, the kernel headers provide + which provides the same definitions, so use that +instead. + +Upstream-Status: Pending + +[Vincent: +Taken from: https://sourceware.org/bugzilla/show_bug.cgi?id=21070] + +Signed-off-by: Andre McCurdy +Signed-off-by: Khem Raj +Signed-off-by: Vicente Olivert Riera +--- + gdb/mips-linux-nat.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c +index 3d072ea935c..d763c9b8f7e 100644 +--- a/gdb/mips-linux-nat.c ++++ b/gdb/mips-linux-nat.c +@@ -30,7 +30,7 @@ + #include "gdb_proc_service.h" + #include "gregset.h" + +-#include ++#include + #include "nat/gdb_ptrace.h" + #include + #include "inf-ptrace.h" +-- +2.45.2 + diff --git a/package/gdb/15.1/0004-gdbserver-fix-build-for-m68k.patch b/package/gdb/15.1/0004-gdbserver-fix-build-for-m68k.patch new file mode 100644 index 00000000..f321a57a --- /dev/null +++ b/package/gdb/15.1/0004-gdbserver-fix-build-for-m68k.patch @@ -0,0 +1,64 @@ +From d7fac5f69c6426a9b74e6d98f926c8bf8d3207a0 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 22 Jun 2018 22:40:26 +0200 +Subject: [PATCH] gdbserver: fix build for m68k +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +As for strace [1], when is included after , +the build fails on m68k with the following diagnostics: + +In file included from ./../nat/linux-ptrace.h:28:0, + from linux-low.h:27, + from linux-m68k-low.c:20: +[...]/usr/include/sys/reg.h:26:3: error: expected identifier before numeric constant + PT_D1 = 0, + ^ +[...]usr/include/sys/reg.h:26:3: error: expected « } » before numeric constant +[...]usr/include/sys/reg.h:26:3: error: expected unqualified-id before numeric constant +In file included from linux-m68k-low.c:27:0: +[...]usr/include/sys/reg.h:99:1: error: expected declaration before « } » token + }; + ^ + +Fix this by moving on top of "linux-low.h". + +[1] https://github.com/strace/strace/commit/6ebf6c4f9e5ebca123a5b5f24afe67cf0473cf92 + +Signed-off-by: Romain Naour +--- + gdbserver/linux-m68k-low.cc | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +diff --git a/gdbserver/linux-m68k-low.cc b/gdbserver/linux-m68k-low.cc +index 8020e49ac6e..d9ba6235288 100644 +--- a/gdbserver/linux-m68k-low.cc ++++ b/gdbserver/linux-m68k-low.cc +@@ -16,6 +16,12 @@ + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + ++#include "server.h" ++ ++#ifdef HAVE_SYS_REG_H ++#include ++#endif ++ + #include "linux-low.h" + + /* Linux target op definitions for the m68k architecture. */ +@@ -79,10 +85,6 @@ m68k_target::low_decr_pc_after_break () + void init_registers_m68k (void); + extern const struct target_desc *tdesc_m68k; + +-#ifdef HAVE_SYS_REG_H +-#include +-#endif +- + #define m68k_num_regs 29 + #define m68k_num_gregs 18 + +-- +2.45.2 + diff --git a/package/gdb/15.1/0005-nat-fork-inferior-include-linux-ptrace.h.patch b/package/gdb/15.1/0005-nat-fork-inferior-include-linux-ptrace.h.patch new file mode 100644 index 00000000..3b2bb3bf --- /dev/null +++ b/package/gdb/15.1/0005-nat-fork-inferior-include-linux-ptrace.h.patch @@ -0,0 +1,53 @@ +From 1dbb7548d94ef83b76748c66bf5ade75a154b009 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 24 Jun 2018 23:33:55 +0200 +Subject: [PATCH] nat/fork-inferior: include linux-ptrace.h + +To decide whether fork() or vfork() should be used, fork-inferior.c +uses the following test: + + #if !(defined(__UCLIBC__) && defined(HAS_NOMMU)) + +However, HAS_NOMMU is never defined, because it gets defined in +linux-ptrace.h, which is not included by fork-inferior.c. Due to this, +gdbserver fails to build on noMMU architectures. This commit fixes +that by simply including linux-ptrace.h. + +This bug was introduced by commit +2090129c36c7e582943b7d300968d19b46160d84 ("Share fork_inferior et al +with gdbserver"). Indeed, the same fork()/vfork() selection was done, +but in another file where linux-ptrace.h was included. + +Fixes the following build issue: + +../nat/fork-inferior.c: In function 'pid_t fork_inferior(const char*, const string&, char**, void (*)(), void (*)(int), void (*)(), const char*, void (*)(const char*, char* const*, char* const*))': +../nat/fork-inferior.c:376:11: error: 'fork' was not declared in this scope + pid = fork (); + ^~~~ +../nat/fork-inferior.c:376:11: note: suggested alternative: 'vfork' + pid = fork (); + ^~~~ + vfork + +Signed-off-by: Thomas Petazzoni +[Romain: rebase on gdb 8.3] +Signed-off-by: Romain Naour +--- + gdb/nat/fork-inferior.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/gdb/nat/fork-inferior.c b/gdb/nat/fork-inferior.c +index c1082eb0441..05e42dc580a 100644 +--- a/gdb/nat/fork-inferior.c ++++ b/gdb/nat/fork-inferior.c +@@ -27,6 +27,7 @@ + #include "gdbsupport/signals-state-save-restore.h" + #include "gdbsupport/gdb_tilde_expand.h" + #include "gdbsupport/gdb_signals.h" ++#include "linux-ptrace.h" + #include + + extern char **environ; +-- +2.45.2 + diff --git a/package/gdb/15.1/0006-Fix-getrandom-compile-for-uclibc-v1.0.35.patch b/package/gdb/15.1/0006-Fix-getrandom-compile-for-uclibc-v1.0.35.patch new file mode 100644 index 00000000..5fe5234a --- /dev/null +++ b/package/gdb/15.1/0006-Fix-getrandom-compile-for-uclibc-v1.0.35.patch @@ -0,0 +1,39 @@ +From 90d1e33247a4329235dbaa60521cf1ecb649d0f9 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Sat, 6 Nov 2021 10:06:25 +0100 +Subject: [PATCH] Fix getrandom compile for uclibc < v1.0.35 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- fix getrandom compile for uclibc < v1.0.35, add missing stddef.h + include (fixed in uclibc since v1.0.35, see [1]) + +Fixes: + + .../host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:27:35: error: unknown type name ‘size_t’ + 27 | extern int getrandom(void *__buf, size_t count, unsigned int flags) + | ^~~~~~ + +[1] https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/commit/?id=00972c02c2b6e0a95d5def4a71bdfb188e091782t + +Signed-off-by: Peter Seiderer +--- + gnulib/import/getrandom.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/gnulib/import/getrandom.c b/gnulib/import/getrandom.c +index e1468730933..3948d8d552a 100644 +--- a/gnulib/import/getrandom.c ++++ b/gnulib/import/getrandom.c +@@ -19,6 +19,7 @@ + + #include + ++#include + #include + + #include +-- +2.45.2 + diff --git a/package/gdb/15.1/0007-fix-musl-build-on-riscv.patch b/package/gdb/15.1/0007-fix-musl-build-on-riscv.patch new file mode 100644 index 00000000..08737d21 --- /dev/null +++ b/package/gdb/15.1/0007-fix-musl-build-on-riscv.patch @@ -0,0 +1,60 @@ +From 7b93a4abcbaa0c273aabc40213b2cdc1d3570e25 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 10 Nov 2021 23:14:54 +0100 +Subject: [PATCH] fix musl build on riscv + +Fix the following build failure raised with musl: + +../../gdbserver/linux-riscv-low.cc: In function 'void riscv_fill_fpregset(regcache*, void*)': +../../gdbserver/linux-riscv-low.cc:140:19: error: 'ELF_NFPREG' was not declared in this scope; did you mean 'ELF_NGREG'? + 140 | for (i = 0; i < ELF_NFPREG - 1; i++, regbuf += flen) + | ^~~~~~~~~~ + | ELF_NGREG + +musl fixed the issue with +https://git.musl-libc.org/cgit/musl/commit/?id=e5d2823631bbfebacf48e1a34ed28f28d7cb2570 + +Fixes: + - http://autobuild.buildroot.org/results/16b19198980ce9c81a618b3f6e8dc9fe28247a28 + +Signed-off-by: Fabrice Fontaine +--- + gdb/nat/riscv-linux-tdesc.c | 5 +++++ + gdbserver/linux-riscv-low.cc | 5 +++++ + 2 files changed, 10 insertions(+) + +diff --git a/gdb/nat/riscv-linux-tdesc.c b/gdb/nat/riscv-linux-tdesc.c +index 0cd38435b22..c1f39037ad7 100644 +--- a/gdb/nat/riscv-linux-tdesc.c ++++ b/gdb/nat/riscv-linux-tdesc.c +@@ -30,6 +30,11 @@ + # define NFPREG 33 + #endif + ++/* Work around musl breakage since version 1.1.24. */ ++#ifndef ELF_NFPREG ++# define ELF_NFPREG 33 ++#endif ++ + /* See nat/riscv-linux-tdesc.h. */ + + struct riscv_gdbarch_features +diff --git a/gdbserver/linux-riscv-low.cc b/gdbserver/linux-riscv-low.cc +index c4554c507a8..aa9253ca769 100644 +--- a/gdbserver/linux-riscv-low.cc ++++ b/gdbserver/linux-riscv-low.cc +@@ -29,6 +29,11 @@ + # define NFPREG 33 + #endif + ++/* Work around musl breakage since version 1.1.24. */ ++#ifndef ELF_NFPREG ++# define ELF_NFPREG 33 ++#endif ++ + /* Linux target op definitions for the RISC-V architecture. */ + + class riscv_target : public linux_process_target +-- +2.45.2 + diff --git a/package/gdb/15.1/0008-gdbserver-Makefile.in-fix-NLS-build.patch b/package/gdb/15.1/0008-gdbserver-Makefile.in-fix-NLS-build.patch new file mode 100644 index 00000000..8368c6bc --- /dev/null +++ b/package/gdb/15.1/0008-gdbserver-Makefile.in-fix-NLS-build.patch @@ -0,0 +1,38 @@ +From 169d2240b045a77689d2f61af671557bc02271d4 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 18 Nov 2021 22:52:08 +0100 +Subject: [PATCH] gdbserver/Makefile.in: fix NLS build + +Fix the following build failure raised since gdb version 10.1 and +https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=9a665d62266e75f0519f3a663784c458885b5c63: + + CXXLD libinproctrace.so +/home/buildroot/autobuild/instance-2/output-1/host/opt/ext-toolchain/bin/../lib/gcc/i586-buildroot-linux-musl/9.3.0/../../../../i586-buildroot-linux-musl/bin/ld: gdbsupport/tdesc-ipa.o: in function `print_xml_feature::visit(tdesc_type_builtin const*)': +/home/buildroot/autobuild/instance-2/output-1/build/gdb-10.2/build/gdbserver/../../gdbserver/../gdbsupport/tdesc.cc:310: undefined reference to `libintl_gettext' + +Fixes: + - http://autobuild.buildroot.org/results/faacc874fe9d32b74cb3d3dea988ef661cb0e3d0 + +Signed-off-by: Fabrice Fontaine +[Upstream status: +https://sourceware.org/pipermail/gdb-patches/2021-November/183580.html] +--- + gdbserver/Makefile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gdbserver/Makefile.in b/gdbserver/Makefile.in +index 6148ccf9121..7c054f4daf6 100644 +--- a/gdbserver/Makefile.in ++++ b/gdbserver/Makefile.in +@@ -408,7 +408,7 @@ $(IPA_LIB): $(sort $(IPA_OBJS)) ${CDEPS} + $(ECHO_CXXLD) $(CC_LD) -shared -fPIC -Wl,--soname=$(IPA_LIB) \ + -Wl,--no-undefined $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \ + $(CXXFLAGS) \ +- -o $(IPA_LIB) ${IPA_OBJS} $(LIBIBERTY_FOR_SHLIB) -ldl -pthread ++ -o $(IPA_LIB) ${IPA_OBJS} $(LIBIBERTY_FOR_SHLIB) -ldl -pthread $(INTL) + + # Put the proper machine-specific files first, so M-. on a machine + # specific routine gets the one for the correct machine. +-- +2.45.2 + diff --git a/package/gdb/15.1/0009-gdb-Fix-native-build-on-xtensa.patch b/package/gdb/15.1/0009-gdb-Fix-native-build-on-xtensa.patch new file mode 100644 index 00000000..a6bdc923 --- /dev/null +++ b/package/gdb/15.1/0009-gdb-Fix-native-build-on-xtensa.patch @@ -0,0 +1,57 @@ +From ab4b71c3f308af89fe2751344375b694e9d63a66 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 28 Aug 2022 23:21:37 +0200 +Subject: [PATCH] gdb: Fix native build on xtensa +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Apply a similar fix than for Alpha architecture on gdb 9: +https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=7a27b85f6d9b5eea9bd1493f903158fbea4b2231 + +Fixes: + +../../gdb/xtensa-linux-nat.c: In function ‘void fill_gregset(const regcache*, elf_greg_t (*)[128], int)’: +../../gdb/xtensa-linux-nat.c:66:17: error: ‘gdbarch_pc_regnum’ was not declared in this scope + 66 | if (regnum == gdbarch_pc_regnum (gdbarch) || regnum == -1) + | ^~~~~~~~~~~~~~~~~ + CXX complaints.o +../../gdb/xtensa-linux-nat.c:68:17: error: ‘gdbarch_ps_regnum’ was not declared in this scope + 68 | if (regnum == gdbarch_ps_regnum (gdbarch) || regnum == -1) + | ^~~~~~~~~~~~~~~~~ +../../gdb/xtensa-linux-nat.c:71:38: error: no matching function for call to ‘gdbarch_tdep::gdbarch_tdep(gdbarch*&)’ + 71 | if (regnum == gdbarch_tdep (gdbarch)->wb_regnum || regnum == -1) + | ^ +In file included from ../../gdb/xtensa-linux-nat.c:38: +../../gdb/xtensa-tdep.h:160:8: note: candidate: ‘gdbarch_tdep::gdbarch_tdep()’ + 160 | struct gdbarch_tdep + | ^~~~~~~~~~~~ +../../gdb/xtensa-tdep.h:160:8: note: candidate expects 0 arguments, 1 provided +../../gdb/xtensa-tdep.h:160:8: note: candidate: ‘constexpr gdbarch_tdep::gdbarch_tdep(const gdbarch_tdep&)’ +../../gdb/xtensa-tdep.h:160:8: note: no known conversion for argument 1 from ‘gdbarch*’ to ‘const gdbarch_tdep&’ +../../gdb/xtensa-tdep.h:160:8: note: candidate: ‘constexpr gdbarch_tdep::gdbarch_tdep(gdbarch_tdep&&)’ +../../gdb/xtensa-tdep.h:160:8: note: no known conversion for argument 1 from ‘gdbarch*’ to ‘gdbarch_tdep&&’ +../../gdb/xtensa-linux-nat.c:72:49: error: no matching function for call to ‘gdbarch_tdep::gdbarch_tdep(gdbarch*&)’ + 72 | regcache->raw_collect (gdbarch_tdep (gdbarch)->wb_regnum, + | ^ + +Signed-off-by: Romain Naour +--- + gdb/xtensa-linux-nat.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/gdb/xtensa-linux-nat.c b/gdb/xtensa-linux-nat.c +index f8509b02e07..794be827f9a 100644 +--- a/gdb/xtensa-linux-nat.c ++++ b/gdb/xtensa-linux-nat.c +@@ -35,6 +35,7 @@ + + #include "gregset.h" + #include "xtensa-tdep.h" ++#include "gdbarch.h" + + /* Defines ps_err_e, struct ps_prochandle. */ + #include "gdb_proc_service.h" +-- +2.45.2 + diff --git a/package/gdb/Config.in b/package/gdb/Config.in new file mode 100644 index 00000000..49ee4b37 --- /dev/null +++ b/package/gdb/Config.in @@ -0,0 +1,92 @@ +config BR2_PACKAGE_GDB_ARCH_SUPPORTS + bool + default y + depends on !((BR2_arm || BR2_armeb) && BR2_BINFMT_FLAT) + depends on !BR2_microblaze + +comment "gdb needs a glibc or uclibc toolchain" + depends on BR2_or1k + depends on BR2_TOOLCHAIN_USES_MUSL + +comment "gdb/gdbserver needs a toolchain w/ threads, threads debug" + depends on BR2_PACKAGE_GDB_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_HAS_THREADS_DEBUG + +comment "gdb/gdbserver >= 8.x needs a toolchain w/ C++, gcc >= 4.8" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +config BR2_PACKAGE_GDB + bool "gdb" + depends on BR2_TOOLCHAIN_HAS_THREADS && BR2_TOOLCHAIN_HAS_THREADS_DEBUG + depends on BR2_PACKAGE_GDB_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on BR2_INSTALL_LIBSTDCPP + # The or1k musl port is incomplete, elf_gregset_t definition is missing: + # https://git.musl-libc.org/cgit/musl/tree/arch/or1k/bits/user.h?h=v1.2.3 + depends on !BR2_or1k || !BR2_TOOLCHAIN_USES_MUSL + # When the external toolchain gdbserver is copied to the + # target, we don't allow building a separate gdbserver. The + # one from the external toolchain should be used. + select BR2_PACKAGE_GDB_SERVER if \ + (!BR2_PACKAGE_GDB_DEBUGGER && !BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY) + help + GDB, the GNU Project debugger, allows you to see what is + going on `inside' another program while it executes -- or + what another program was doing at the moment it crashed. + + This option allows to build gdbserver and/or the gdb + debugger for the target. + + For embedded development, the most common solution is to + build only 'gdbserver' for the target, and use a cross-gdb + on the host. See BR2_PACKAGE_HOST_GDB in the Toolchain menu + to enable one. Notice that external toolchains often provide + their own pre-built cross-gdb and gdbserver binaries. + + http://www.gnu.org/software/gdb/ + +if BR2_PACKAGE_GDB + +config BR2_PACKAGE_GDB_SERVER + bool "gdbserver" + depends on !BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY + help + Build the gdbserver stub to run on the target. + A full gdb is needed to debug the progam. + +config BR2_PACKAGE_GDB_DEBUGGER + bool "full debugger" + depends on BR2_USE_WCHAR + depends on !BR2_sh + select BR2_PACKAGE_GMP + select BR2_PACKAGE_MPFR if !(BR2_GDB_VERSION_13) + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_ZLIB + +comment "full gdb on target needs a toolchain w/ wchar" + depends on !BR2_sh + depends on !BR2_USE_WCHAR + +if BR2_PACKAGE_GDB_DEBUGGER + +config BR2_PACKAGE_GDB_TUI + bool "TUI support" + help + This option enables terminal user interface (TUI) for gdb + + "The GDB Text User Interface (TUI) is a terminal interface + which uses the curses library to show the source file, the + assembly output, the program registers and GDB commands in + separate text windows." + + https://sourceware.org/gdb/current/onlinedocs/gdb/TUI.html + +config BR2_PACKAGE_GDB_PYTHON + bool "Python support" + depends on BR2_PACKAGE_PYTHON3 + help + This option enables Python support in the target gdb. + +endif + +endif diff --git a/package/gdb/Config.in.host b/package/gdb/Config.in.host new file mode 100644 index 00000000..36462a0f --- /dev/null +++ b/package/gdb/Config.in.host @@ -0,0 +1,74 @@ +config BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS + bool + default y + depends on !((BR2_arm || BR2_armeb) && BR2_BINFMT_FLAT) + depends on !BR2_microblaze + +comment "Host GDB Options" + depends on !BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY + depends on BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS + +config BR2_PACKAGE_HOST_GDB + bool "Build cross gdb for the host" + # When the external toolchain gdbserver is used, we shouldn't + # allow to build a cross-gdb, as the one of the external + # toolchain should be used. + depends on !BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY + depends on BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS + help + Build a cross gdb that runs on the host machine and debugs + programs running on the target. It requires 'gdbserver' + installed on the target, see BR2_PACKAGE_GDB_SERVER to + enable it. + +if BR2_PACKAGE_HOST_GDB + +config BR2_PACKAGE_HOST_GDB_TUI + bool "TUI support" + help + This option enables terminal user interface (TUI) for gdb + +config BR2_PACKAGE_HOST_GDB_PYTHON3 + bool "Python support" + help + This option enables the Python 3 support in the cross gdb. + +config BR2_PACKAGE_HOST_GDB_SIM + bool "Simulator support" + depends on !BR2_arc + help + This option enables the simulator support in the cross gdb. + +choice + prompt "GDB debugger Version" + default BR2_GDB_VERSION_14 + depends on !BR2_arc + help + Select the version of gdb you wish to use. + +config BR2_GDB_VERSION_13 + bool "gdb 13.x" + +config BR2_GDB_VERSION_14 + bool "gdb 14.x" + +config BR2_GDB_VERSION_15 + bool "gdb 15.x" + depends on BR2_HOST_GCC_AT_LEAST_9 && BR2_TOOLCHAIN_GCC_AT_LEAST_9 + +comment "gdb 15.x needs host and target gcc >= 9" + depends on !BR2_HOST_GCC_AT_LEAST_9 || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_9 + +endchoice + +endif + +# If cross-gdb is not enabled, the latest stable version is chosen. +config BR2_GDB_VERSION + string + default "arc-2023.09-release" if BR2_arc + default "13.2" if BR2_GDB_VERSION_13 + default "14.2" if BR2_GDB_VERSION_14 || !BR2_PACKAGE_HOST_GDB + default "15.1" if BR2_GDB_VERSION_15 + depends on BR2_PACKAGE_GDB || BR2_PACKAGE_HOST_GDB diff --git a/package/gdb/gdb-python-config b/package/gdb/gdb-python-config new file mode 100755 index 00000000..640c3583 --- /dev/null +++ b/package/gdb/gdb-python-config @@ -0,0 +1,41 @@ +#!/bin/sh + +# This shell script is used to fake Python. Gdb wants to be passed a +# Python interpreter, to run its own python-config.py program, which +# uses sysconfig. However, when cross-compiling, this doesn't work +# well since we would have to use the host Python, whose sysconfig +# module would return host values. +# +# As recommended at +# https://sourceware.org/gdb/wiki/CrossCompilingWithPythonSupport, +# this wrapper shell script can be used as a replacement. It ignores +# the python-config.py script passed as first arguments, and +# "emulates" its behavior. + +if [ $# -ne 2 ] ; then + echo "Bad # args." >&2 + exit 1 +fi + +if [ -z "${BR_PYTHON_VERSION}" ]; then + echo "Environment variable BR_PYTHON_VERSION not set." >&2 + exit 1 +fi + +# The first argument is the path to python-config.py, ignore it. + +case "$2" in + --includes) + echo "-I${STAGING_DIR}/usr/include/python${BR_PYTHON_VERSION}" + ;; + --ldflags) + echo "-lpthread -ldl -lutil -lm -lpython${BR_PYTHON_VERSION}" + ;; + --exec-prefix) + echo "/usr" + ;; + *) + echo "Bad arg $2." >&2 + exit 1 + ;; +esac diff --git a/package/gdb/gdb.hash b/package/gdb/gdb.hash new file mode 100644 index 00000000..6cf55a67 --- /dev/null +++ b/package/gdb/gdb.hash @@ -0,0 +1,7 @@ +# From https://gcc.gnu.org/pub/gdb/releases/sha512.sum +sha512 8185d3e11ab60dafff5860a5016577bfe7dd7547ef01ebc867bc247603d82b74ff74c4f29492c7d2aee57076f52be33e289f4c6b414a4b870d4b3004909f4c34 gdb-13.2.tar.xz +sha512 7e07941f1fe661288cc571b4964012ceabc1760624fce20320db2f470c01439b2386f859b5288da13204b758e2e3b22a74c68c012178db93b9529b06f1e22ede gdb-14.2.tar.xz +sha512 0217434073023a8b8316088bf3ee95d53a1b6a7897f6269095429016a8900f9a05e130c390d8d5d5550cc515c16519de1071d8eef96aa58e38056c7e37da1d8b gdb-15.1.tar.xz + +# Locally calculated (fetched from Github) +sha512 3518b47d5c11d1fb478ee152bde1719363f9391db73f3b9f5491217c17742bef8ebca6a51a40302dfaa9476c5a32a8b8f70a4bf64289422dea5f750ae53ab88d gdb-arc-2023.09-release.tar.gz diff --git a/package/gdb/gdb.mk b/package/gdb/gdb.mk new file mode 100644 index 00000000..c966cdc1 --- /dev/null +++ b/package/gdb/gdb.mk @@ -0,0 +1,323 @@ +################################################################################ +# +# gdb +# +################################################################################ + +GDB_VERSION = $(call qstrip,$(BR2_GDB_VERSION)) +GDB_SITE = $(BR2_GNU_MIRROR)/gdb +GDB_SOURCE = gdb-$(GDB_VERSION).tar.xz + +ifeq ($(GDB_VERSION),arc-2023.09-release) +GDB_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,binutils-gdb,$(GDB_VERSION)) +GDB_SOURCE = gdb-$(GDB_VERSION).tar.gz +GDB_FROM_GIT = y +endif + +GDB_LICENSE = GPL-2.0+, LGPL-2.0+, GPL-3.0+, LGPL-3.0+ +GDB_LICENSE_FILES = COPYING COPYING.LIB COPYING3 COPYING3.LIB +GDB_CPE_ID_VENDOR = gnu + +# Out of tree build is mandatory, so we create a 'build' subdirectory +# in the gdb sources, and build from there. +GDB_SUBDIR = build +define GDB_CONFIGURE_SYMLINK + mkdir -p $(@D)/$(GDB_SUBDIR) + ln -sf ../configure $(@D)/$(GDB_SUBDIR)/configure +endef +GDB_PRE_CONFIGURE_HOOKS += GDB_CONFIGURE_SYMLINK + +# For the host variant, we really want to build with XML support, +# which is needed to read XML descriptions of target architectures. We +# also need ncurses. +# As for libiberty, gdb may use a system-installed one if present, so +# we must ensure ours is installed first. +HOST_GDB_DEPENDENCIES = host-expat host-libiberty host-ncurses host-zlib + +# Disable building documentation +GDB_MAKE_OPTS += MAKEINFO=true +GDB_INSTALL_TARGET_OPTS += MAKEINFO=true DESTDIR=$(TARGET_DIR) install +HOST_GDB_MAKE_OPTS += MAKEINFO=true +HOST_GDB_INSTALL_OPTS += MAKEINFO=true install + +# Apply the Xtensa specific patches +ifneq ($(ARCH_XTENSA_OVERLAY_FILE),) +define GDB_XTENSA_OVERLAY_EXTRACT + $(call arch-xtensa-overlay-extract,$(@D),gdb) +endef +GDB_POST_EXTRACT_HOOKS += GDB_XTENSA_OVERLAY_EXTRACT +GDB_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL) +HOST_GDB_POST_EXTRACT_HOOKS += GDB_XTENSA_OVERLAY_EXTRACT +HOST_GDB_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL) +endif + +ifeq ($(GDB_FROM_GIT),y) +GDB_DEPENDENCIES += host-flex host-bison +HOST_GDB_DEPENDENCIES += host-flex host-bison +endif + +# All newer versions of GDB need host-gmp +HOST_GDB_DEPENDENCIES += host-gmp + +# When gdb sources are fetched from the binutils-gdb repository, they +# also contain the binutils sources, but binutils shouldn't be built, +# so we disable it (additionally the option --disable-install-libbfd +# prevents the un-wanted installation of libobcodes.so and libbfd.so). +GDB_DISABLE_BINUTILS_CONF_OPTS = \ + --disable-binutils \ + --disable-install-libbfd \ + --disable-ld \ + --disable-gas \ + --disable-gprof + +GDB_CONF_ENV = \ + ac_cv_type_uintptr_t=yes \ + gt_cv_func_gettext_libintl=yes \ + ac_cv_func_dcgettext=yes \ + gdb_cv_func_sigsetjmp=yes \ + bash_cv_func_strcoll_broken=no \ + bash_cv_must_reinstall_sighandlers=no \ + bash_cv_func_sigsetjmp=present \ + bash_cv_have_mbstate_t=yes \ + gdb_cv_func_sigsetjmp=yes + +# Starting with gdb 7.11, the bundled gnulib tries to use +# rpl_gettimeofday (gettimeofday replacement) due to the code being +# unable to determine if the replacement function should be used or +# not when cross-compiling with uClibc or musl as C libraries. So use +# gl_cv_func_gettimeofday_clobber=no to not use rpl_gettimeofday, +# assuming musl and uClibc have a properly working gettimeofday +# implementation. It needs to be passed to GDB_CONF_ENV to build +# gdbserver only but also to GDB_MAKE_ENV, because otherwise it does +# not get passed to the configure script of nested packages while +# building gdbserver with full debugger. +GDB_CONF_ENV += gl_cv_func_gettimeofday_clobber=no +GDB_MAKE_ENV += gl_cv_func_gettimeofday_clobber=no + +# Similarly, starting with gdb 8.1, the bundled gnulib tries to use +# rpl_strerror. Let's tell gnulib the C library implementation works +# well enough. +GDB_CONF_ENV += \ + gl_cv_func_working_strerror=yes \ + gl_cv_func_strerror_0_works=yes +GDB_MAKE_ENV += \ + gl_cv_func_working_strerror=yes \ + gl_cv_func_strerror_0_works=yes + +# Starting with glibc 2.25, the proc_service.h header has been copied +# from gdb to glibc so other tools can use it. However, that makes it +# necessary to make sure that declaration of prfpregset_t declaration +# is consistent between gdb and glibc. In gdb, however, there is a +# workaround for a broken prfpregset_t declaration in glibc 2.3 which +# uses AC_TRY_RUN to detect if it's needed, which doesn't work in +# cross-compilation. So pass the cache option to configure. +# It needs to be passed to GDB_CONF_ENV to build gdbserver only but +# also to GDB_MAKE_ENV, because otherwise it does not get passed to the +# configure script of nested packages while building gdbserver with full +# debugger. +GDB_CONF_ENV += gdb_cv_prfpregset_t_broken=no +GDB_MAKE_ENV += gdb_cv_prfpregset_t_broken=no + +# We want the built-in libraries of gdb (libbfd, libopcodes) to be +# built and linked statically, as we do not install them on the +# target, to not clash with the ones potentially installed by +# binutils. This is why we pass --enable-static --disable-shared. +GDB_CONF_OPTS = \ + --without-uiout \ + --disable-gdbtk \ + --without-x \ + --disable-sim \ + $(GDB_DISABLE_BINUTILS_CONF_OPTS) \ + --without-included-gettext \ + --disable-werror \ + --enable-static \ + --disable-shared \ + --disable-source-highlight + +ifeq ($(BR2_PACKAGE_GDB_DEBUGGER),y) +GDB_DEPENDENCIES += zlib +GDB_CONF_OPTS += \ + --enable-gdb \ + --with-curses \ + --with-system-zlib +GDB_DEPENDENCIES += ncurses \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) +else +# When only building gdbserver, we don't need zlib. But we have no way to +# tell the top-level configure that we don't need zlib: it either wants to +# build the bundled one, or use the system one. +# Since we're going to only install the gdbserver to the target, we don't +# care that the bundled zlib is built, as it is not used. +GDB_CONF_OPTS += \ + --disable-gdb \ + --without-curses \ + --without-system-zlib +endif + +# Starting from GDB 11.x, gmp is needed as a dependency to build full +# gdb. +ifeq ($(BR2_PACKAGE_GDB_DEBUGGER),y) +GDB_CONF_OPTS += \ + --with-libgmp-prefix=$(STAGING_DIR)/usr +GDB_DEPENDENCIES += gmp +endif + +# Starting from GDB 14.x, mpfr is needed as a dependency to build full +# gdb. +# GDB fork from ARC GNU tools 2023.09 is based on GDB14 branch and so +# requires MPFR as well. +ifeq ($(BR2_PACKAGE_GDB_DEBUGGER):$(BR2_GDB_VERSION_13),y:) +GDB_DEPENDENCIES += mpfr +GDB_CONF_OPTS += --with-mpfr=$(STAGING_DIR) +else +GDB_CONF_OPTS += --without-mpfr +endif + +ifeq ($(BR2_PACKAGE_GDB_SERVER),y) +GDB_CONF_OPTS += --enable-gdbserver +GDB_DEPENDENCIES += $(TARGET_NLS_DEPENDENCIES) +else +GDB_CONF_OPTS += --disable-gdbserver +endif + +# gdb 7.12+ by default builds with a C++ compiler, which doesn't work +# when we don't have C++ support in the toolchain +ifneq ($(BR2_INSTALL_LIBSTDCPP),y) +GDB_CONF_OPTS += --disable-build-with-cxx +endif + +# inprocess-agent can't be built statically +ifeq ($(BR2_STATIC_LIBS),y) +GDB_CONF_OPTS += --disable-inprocess-agent +endif + +ifeq ($(BR2_PACKAGE_GDB_TUI),y) +GDB_CONF_OPTS += --enable-tui +else +GDB_CONF_OPTS += --disable-tui +endif + +ifeq ($(BR2_PACKAGE_GDB_PYTHON),y) +# CONF_ENV: for top-level configure; MAKE_ENV: for sub-projects' configure. +GDB_CONF_ENV += BR_PYTHON_VERSION=$(PYTHON3_VERSION_MAJOR) +GDB_MAKE_ENV += BR_PYTHON_VERSION=$(PYTHON3_VERSION_MAJOR) +GDB_DEPENDENCIES += python3 +GDB_CONF_OPTS += --with-python=$(TOPDIR)/package/gdb/gdb-python-config +else +GDB_CONF_OPTS += --without-python +endif + +ifeq ($(BR2_PACKAGE_EXPAT),y) +GDB_CONF_OPTS += --with-expat +GDB_CONF_OPTS += --with-libexpat-prefix=$(STAGING_DIR)/usr +GDB_DEPENDENCIES += expat +else +GDB_CONF_OPTS += --without-expat +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +GDB_CONF_OPTS += --with-lzma +GDB_CONF_OPTS += --with-liblzma-prefix=$(STAGING_DIR)/usr +GDB_DEPENDENCIES += xz +else +GDB_CONF_OPTS += --without-lzma +endif + +ifeq ($(BR2_PACKAGE_GDB_PYTHON),) +# This removes some unneeded Python scripts and XML target description +# files that are not useful for a normal usage of the debugger. +define GDB_REMOVE_UNNEEDED_FILES + $(RM) -rf $(TARGET_DIR)/usr/share/gdb +endef + +GDB_POST_INSTALL_TARGET_HOOKS += GDB_REMOVE_UNNEEDED_FILES +endif + +# This installs the gdbserver somewhere into the $(HOST_DIR) so that +# it becomes an integral part of the SDK, if the toolchain generated +# by Buildroot is later used as an external toolchain. We install it +# in debug-root/usr/bin/gdbserver so that it matches what Crosstool-NG +# does. +define GDB_SDK_INSTALL_GDBSERVER + $(INSTALL) -D -m 0755 $(TARGET_DIR)/usr/bin/gdbserver \ + $(HOST_DIR)/$(GNU_TARGET_NAME)/debug-root/usr/bin/gdbserver +endef + +ifeq ($(BR2_PACKAGE_GDB_SERVER),y) +GDB_POST_INSTALL_TARGET_HOOKS += GDB_SDK_INSTALL_GDBSERVER +endif + +# A few notes: +# * --target, because we're doing a cross build rather than a real +# host build. +# * --enable-static --disable-shared because we want host gdb to +# build and link against a static version of libbfd and +# libopcodes, because we don't install the shared variants of +# those libraries in $(HOST_DIR), as it might clash with binutils +HOST_GDB_CONF_OPTS = \ + --target=$(GNU_TARGET_NAME) \ + --enable-static \ + --disable-shared \ + --without-uiout \ + --disable-gdbtk \ + --without-x \ + --enable-threads \ + --disable-werror \ + --without-included-gettext \ + --with-system-zlib \ + --with-curses \ + --disable-source-highlight \ + $(GDB_DISABLE_BINUTILS_CONF_OPTS) + +# GDB newer than 14.x need host-mpfr +# GDB fork from ARC GNU tools 2023.09 is based on GDB14 branch and so +# requires MPFR as well. +ifeq ($(BR2_GDB_VERSION_13),) +HOST_GDB_DEPENDENCIES += host-mpfr +HOST_GDB_CONF_OPTS += --with-mpfr=$(HOST_DIR) +else +HOST_GDB_CONF_OPTS += --without-mpfr +endif + +ifeq ($(BR2_PACKAGE_HOST_GDB_TUI),y) +HOST_GDB_CONF_OPTS += --enable-tui +else +HOST_GDB_CONF_OPTS += --disable-tui +endif + +ifeq ($(BR2_PACKAGE_HOST_GDB_PYTHON3),y) +HOST_GDB_CONF_OPTS += --with-python=$(HOST_DIR)/bin/python3 +HOST_GDB_DEPENDENCIES += host-python3 +else +HOST_GDB_CONF_OPTS += --without-python +endif + +ifeq ($(BR2_PACKAGE_HOST_GDB_SIM),y) +HOST_GDB_CONF_OPTS += --enable-sim +else +HOST_GDB_CONF_OPTS += --disable-sim +endif + +# Since gdb 9, in-tree builds for GDB are not allowed anymore, +# so we create a 'build' subdirectory in the gdb sources, and +# build from there. +HOST_GDB_SUBDIR = build + +define HOST_GDB_CONFIGURE_SYMLINK + mkdir -p $(@D)/build + ln -sf ../configure $(@D)/build/configure +endef +HOST_GDB_PRE_CONFIGURE_HOOKS += HOST_GDB_CONFIGURE_SYMLINK + +# legacy $arch-linux-gdb symlink +define HOST_GDB_ADD_SYMLINK + cd $(HOST_DIR)/bin && \ + ln -snf $(GNU_TARGET_NAME)-gdb $(ARCH)-linux-gdb +endef + +HOST_GDB_POST_INSTALL_HOOKS += HOST_GDB_ADD_SYMLINK + +HOST_GDB_POST_INSTALL_HOOKS += gen_gdbinit_file + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/gdbm/Config.in b/package/gdbm/Config.in new file mode 100644 index 00000000..7c8fcc4e --- /dev/null +++ b/package/gdbm/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_GDBM + bool "gdbm" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR + help + GNU dbm is a set of database routines that use extensible + hashing. It works similar to the standard UNIX dbm routines. + + https://www.gnu.org/software/gdbm/gdbm.html + +comment "gdbm needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR diff --git a/package/gdbm/gdbm.hash b/package/gdbm/gdbm.hash new file mode 100644 index 00000000..a9df4890 --- /dev/null +++ b/package/gdbm/gdbm.hash @@ -0,0 +1,6 @@ +# From https://www.gnu.org.ua/software/gdbm/download.html +md5 c780815649e52317be48331c1773e987 gdbm-1.24.tar.gz +sha1 7bd455f28c9e4afacc042e0c712aac1b2391fef2 gdbm-1.24.tar.gz +# Locally computed +sha256 695e9827fdf763513f133910bc7e6cfdb9187943a4fec943e57449723d2b8dbf gdbm-1.24.tar.gz +sha256 690d762f2e8e149ab1e2d6a409a3853b6151a2533b2382fae549a176d6bedecf COPYING diff --git a/package/gdbm/gdbm.mk b/package/gdbm/gdbm.mk new file mode 100644 index 00000000..1a2c352d --- /dev/null +++ b/package/gdbm/gdbm.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# gdbm +# +################################################################################ + +GDBM_VERSION = 1.24 +GDBM_SITE = $(BR2_GNU_MIRROR)/gdbm +GDBM_LICENSE = GPL-3.0+ +GDBM_LICENSE_FILES = COPYING +GDBM_INSTALL_STAGING = YES +GDBM_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) + +ifeq ($(BR2_PACKAGE_READLINE),y) +GDBM_CONF_OPTS += --with-readline +GDBM_DEPENDENCIES += readline +else +GDBM_CONF_OPTS += --without-readline +endif + +$(eval $(autotools-package)) diff --git a/package/gdk-pixbuf-xlib/Config.in b/package/gdk-pixbuf-xlib/Config.in new file mode 100644 index 00000000..2efc5d4d --- /dev/null +++ b/package/gdk-pixbuf-xlib/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_GDK_PIXBUF_XLIB + bool "gdk-pixbuf-xlib" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU # gdk-pixbuf -> glib2 + depends on BR2_USE_WCHAR # gdk-pixbuf -> glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # gdk-pixbuf -> glib2 + select BR2_PACKAGE_GDK_PIXBUF + select BR2_PACKAGE_XLIB_LIBX11 + help + Deprecated Xlib integration for GdkPixbuf. + + https://gitlab.gnome.org/Archive/gdk-pixbuf-xlib + +comment "gdk-pixbuf-xlib needs a toolchain w/ wchar, threads" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/gdk-pixbuf-xlib/gdk-pixbuf-xlib.hash b/package/gdk-pixbuf-xlib/gdk-pixbuf-xlib.hash new file mode 100644 index 00000000..7298ef50 --- /dev/null +++ b/package/gdk-pixbuf-xlib/gdk-pixbuf-xlib.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/gdk-pixbuf-xlib/2.40/gdk-pixbuf-xlib-2.40.2.sha256sum +sha256 8b8e1c270ec16a06f665ea841f8e4e167eaa0118d0cbfeeade43745f09198ff7 gdk-pixbuf-xlib-2.40.2.tar.xz + +# Hash for license file +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/gdk-pixbuf-xlib/gdk-pixbuf-xlib.mk b/package/gdk-pixbuf-xlib/gdk-pixbuf-xlib.mk new file mode 100644 index 00000000..5af33c6a --- /dev/null +++ b/package/gdk-pixbuf-xlib/gdk-pixbuf-xlib.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# gdk-pixbuf-xlib +# +################################################################################ + +GDK_PIXBUF_XLIB_VERSION_MAJOR = 2.40 +GDK_PIXBUF_XLIB_VERSION = $(GDK_PIXBUF_XLIB_VERSION_MAJOR).2 +GDK_PIXBUF_XLIB_SOURCE = gdk-pixbuf-xlib-$(GDK_PIXBUF_XLIB_VERSION).tar.xz +GDK_PIXBUF_XLIB_SITE = https://download.gnome.org/sources/gdk-pixbuf-xlib/$(GDK_PIXBUF_XLIB_VERSION_MAJOR) +GDK_PIXBUF_XLIB_LICENSE = LGPL-2.1+ +GDK_PIXBUF_XLIB_LICENSE_FILES = COPYING +GDK_PIXBUF_XLIB_INSTALL_STAGING = YES +GDK_PIXBUF_XLIB_DEPENDENCIES = gdk-pixbuf xlib_libX11 + +$(eval $(meson-package)) diff --git a/package/gdk-pixbuf/Config.in b/package/gdk-pixbuf/Config.in new file mode 100644 index 00000000..0ba6dda8 --- /dev/null +++ b/package/gdk-pixbuf/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_GDK_PIXBUF + bool "gdk-pixbuf" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Gdk-Pixbuf is an image loader and scaler. It uses GObject + and the GLib, to integrate well with GNOME applications. + + https://www.gtk.org/ + +comment "gdk-pixbuf needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/gdk-pixbuf/gdk-pixbuf.hash b/package/gdk-pixbuf/gdk-pixbuf.hash new file mode 100644 index 00000000..c3953e15 --- /dev/null +++ b/package/gdk-pixbuf/gdk-pixbuf.hash @@ -0,0 +1,3 @@ +# From https://download.gnome.org/sources/gdk-pixbuf/2.42/gdk-pixbuf-2.42.10.sha256sum +sha256 ee9b6c75d13ba096907a2e3c6b27b61bcd17f5c7ebeab5a5b439d2f2e39fe44b gdk-pixbuf-2.42.10.tar.xz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/gdk-pixbuf/gdk-pixbuf.mk b/package/gdk-pixbuf/gdk-pixbuf.mk new file mode 100644 index 00000000..e041d2cb --- /dev/null +++ b/package/gdk-pixbuf/gdk-pixbuf.mk @@ -0,0 +1,98 @@ +################################################################################ +# +# gdk-pixbuf +# +################################################################################ + +GDK_PIXBUF_VERSION_MAJOR = 2.42 +GDK_PIXBUF_VERSION = $(GDK_PIXBUF_VERSION_MAJOR).10 +GDK_PIXBUF_SOURCE = gdk-pixbuf-$(GDK_PIXBUF_VERSION).tar.xz +GDK_PIXBUF_SITE = https://download.gnome.org/sources/gdk-pixbuf/$(GDK_PIXBUF_VERSION_MAJOR) +GDK_PIXBUF_LICENSE = LGPL-2.1+ +GDK_PIXBUF_LICENSE_FILES = COPYING +GDK_PIXBUF_CPE_ID_VENDOR = gnome +GDK_PIXBUF_INSTALL_STAGING = YES +GDK_PIXBUF_DEPENDENCIES = \ + host-gdk-pixbuf host-libglib2 host-pkgconf \ + libglib2 $(if $(BR2_ENABLE_LOCALE),,libiconv) +HOST_GDK_PIXBUF_DEPENDENCIES = host-libpng host-pkgconf host-libglib2 + +GDK_PIXBUF_CONF_OPTS = \ + -Dgio_sniffing=false \ + -Dtests=false \ + -Dinstalled_tests=false \ + -Dman=false + +HOST_GDK_PIXBUF_CONF_OPTS = \ + -Dgio_sniffing=false \ + -Dtests=false \ + -Dinstalled_tests=false \ + -Dintrospection=disabled \ + -Drelocatable=true \ + -Dman=false + +ifeq ($(BR2_STATIC_LIBS),y) +GDK_PIXBUF_CONF_OPTS += -Dbuiltin_loaders=all +endif + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +GDK_PIXBUF_CONF_OPTS += -Dintrospection=enabled +GDK_PIXBUF_DEPENDENCIES += gobject-introspection +else +GDK_PIXBUF_CONF_OPTS += -Dintrospection=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +GDK_PIXBUF_CONF_OPTS += -Dpng=enabled +GDK_PIXBUF_DEPENDENCIES += libpng +else +GDK_PIXBUF_CONF_OPTS += -Dpng=disabled +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +GDK_PIXBUF_CONF_OPTS += -Djpeg=enabled +HOST_GDK_PIXBUF_CONF_OPTS += -Djpeg=enabled +GDK_PIXBUF_DEPENDENCIES += jpeg +HOST_GDK_PIXBUF_DEPENDENCIES += host-libjpeg +else +GDK_PIXBUF_CONF_OPTS += -Djpeg=disabled +HOST_GDK_PIXBUF_CONF_OPTS += -Djpeg=disabled +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +GDK_PIXBUF_CONF_OPTS += -Dtiff=enabled +HOST_GDK_PIXBUF_CONF_OPTS += -Dtiff=enabled +GDK_PIXBUF_DEPENDENCIES += tiff +HOST_GDK_PIXBUF_DEPENDENCIES += host-tiff +else +GDK_PIXBUF_CONF_OPTS += -Dtiff=disabled +HOST_GDK_PIXBUF_CONF_OPTS += -Dtiff=disabled +endif + +# gdk-pixbuf requires the loaders.cache file populated to work properly +# Rather than doing so at runtime, since the fs can be read-only, do so +# here after building and installing to target. +# And since the cache file will contain relative host directory names we +# need to prepend them with /usr/. +ifeq ($(BR2_STATIC_LIBS),) +define GDK_PIXBUF_UPDATE_CACHE + GDK_PIXBUF_MODULEDIR=$(HOST_DIR)/lib/gdk-pixbuf-2.0/2.10.0/loaders \ + $(HOST_DIR)/bin/gdk-pixbuf-query-loaders \ + > $(TARGET_DIR)/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache + $(SED) 's,^"lib,"/usr/lib,g' \ + $(TARGET_DIR)/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache +endef +GDK_PIXBUF_POST_INSTALL_TARGET_HOOKS += GDK_PIXBUF_UPDATE_CACHE +endif + +# Target gdk-pixbuf needs loaders.cache populated to build for the +# thumbnailer. Use the host-built since it matches the target options +# regarding mime types (which is the used information). +define GDK_PIXBUF_COPY_LOADERS_CACHE + cp -f $(HOST_DIR)/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache \ + $(@D)/gdk-pixbuf +endef +GDK_PIXBUF_PRE_BUILD_HOOKS += GDK_PIXBUF_COPY_LOADERS_CACHE + +$(eval $(meson-package)) +$(eval $(host-meson-package)) diff --git a/package/genext2fs/Config.in b/package/genext2fs/Config.in new file mode 100644 index 00000000..2251684d --- /dev/null +++ b/package/genext2fs/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_GENEXT2FS + bool "genext2fs" + help + genext2fs generates an ext2 filesystem as a normal (non-root) + user. It does not require you to mount the image file to + copy files on it, nor does it require that you become the + superuser to make device nodes. + + http://genext2fs.sourceforge.net/ diff --git a/package/genext2fs/Config.in.host b/package/genext2fs/Config.in.host new file mode 100644 index 00000000..a03e16b2 --- /dev/null +++ b/package/genext2fs/Config.in.host @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HOST_GENEXT2FS + bool "host genext2fs" + help + genext2fs generates an ext2 filesystem as a normal (non-root) + user. It does not require you to mount the image file to + copy files on it, nor does it require that you become the + superuser to make device nodes. + + http://genext2fs.sourceforge.net/ diff --git a/package/genext2fs/genext2fs.hash b/package/genext2fs/genext2fs.hash new file mode 100644 index 00000000..20bb1c64 --- /dev/null +++ b/package/genext2fs/genext2fs.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 d3861e4fe89131bd21fbd25cf0b683b727b5c030c4c336fadcd738ada830aab0 genext2fs-1.5.0.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/genext2fs/genext2fs.mk b/package/genext2fs/genext2fs.mk new file mode 100644 index 00000000..adfa412e --- /dev/null +++ b/package/genext2fs/genext2fs.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# genext2fs +# +################################################################################ + +GENEXT2FS_VERSION = 1.5.0 +GENEXT2FS_SITE = $(call github,bestouff,genext2fs,v$(GENEXT2FS_VERSION)) +GENEXT2FS_LICENSE = GPL-2.0 +GENEXT2FS_LICENSE_FILES = COPYING +# From git +GENEXT2FS_AUTORECONF = YES + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/gengetopt/0001-configure.ac-add-disable-doc-option.patch b/package/gengetopt/0001-configure.ac-add-disable-doc-option.patch new file mode 100644 index 00000000..80bda9b7 --- /dev/null +++ b/package/gengetopt/0001-configure.ac-add-disable-doc-option.patch @@ -0,0 +1,52 @@ +From e3fe8db2b67cdb18e1a2a6765644c8cc476d0b0a Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 22 Sep 2019 09:27:24 +0200 +Subject: configure.ac: add --disable-doc option + +Add --disable-doc option to allow the user to disable documentation + +Signed-off-by: Fabrice Fontaine +Upstream: https://git.savannah.gnu.org/cgit/gengetopt.git/commit/?id=e3fe8db2b67cdb18e1a2a6765644c8cc476d0b0a +--- + Makefile.am | 6 +++++- + configure.ac | 7 +++++++ + 2 files changed, 12 insertions(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 1f184c2..76ac21a 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -18,7 +18,11 @@ + ACLOCAL_AMFLAGS = -I m4 -I gl/m4 + + EXTRA_DIST = configure TODO LICENSE gl/m4/gnulib-cache.m4 +-SUBDIRS = gl src doc tests ++SUBDIRS = gl src tests ++ ++if ENABLE_DOC ++SUBDIRS += doc ++endif + + gengetoptdoc_DATA = ChangeLog COPYING NEWS THANKS INSTALL README LICENSE + +diff --git a/configure.ac b/configure.ac +index 0ee89db..915706c 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -61,6 +61,13 @@ AC_ARG_ENABLE( + AC_COMPILE_WARNINGS + ) + ++AC_ARG_ENABLE( ++ [doc], ++ [--enable-doc enable documentation], ++ [enable_doc=$enableval], ++ [enable_doc=yes]) ++AM_CONDITIONAL(ENABLE_DOC, test x"$enable_doc" = xyes) ++ + AC_ARG_WITH( + [gengen], + [ --with-gengen=mygengen gengen to use], +-- +cgit v1.1 + diff --git a/package/gengetopt/gengetopt.hash b/package/gengetopt/gengetopt.hash new file mode 100644 index 00000000..707efacd --- /dev/null +++ b/package/gengetopt/gengetopt.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 b941aec9011864978dd7fdeb052b1943535824169d2aa2b0e7eae9ab807584ac gengetopt-2.23.tar.xz +sha256 afab96ff35204960631dc05506034f9efc01e6d696f0ac93718d6bd43512cda7 COPYING +sha256 72a43351233d6a581f891cdfff78b7b7d5f2a12522523929c5f7e8f674c2f6fc LICENSE diff --git a/package/gengetopt/gengetopt.mk b/package/gengetopt/gengetopt.mk new file mode 100644 index 00000000..5ecd44bc --- /dev/null +++ b/package/gengetopt/gengetopt.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# gengetopt +# +################################################################################ + +GENGETOPT_VERSION = 2.23 +GENGETOPT_SOURCE = gengetopt-$(GENGETOPT_VERSION).tar.xz +GENGETOPT_SITE = $(BR2_GNU_MIRROR)/gengetopt +GENGETOPT_LICENSE = GPL-3.0+ +GENGETOPT_LICENSE_FILES = COPYING LICENSE +# We're patching configure.ac +HOST_GENGETOPT_AUTORECONF = YES + +$(eval $(host-autotools-package)) diff --git a/package/genimage/Config.in.host b/package/genimage/Config.in.host new file mode 100644 index 00000000..cf831a14 --- /dev/null +++ b/package/genimage/Config.in.host @@ -0,0 +1,13 @@ +config BR2_PACKAGE_HOST_GENIMAGE + bool "host genimage" + help + genimage is a tool to generate multiple filesystem and flash + images from a given root filesystem tree. genimage is + intended to be run in a fakeroot environment. + + Configuration is done in a config file parsed by + libconfuse. Options like the path to tools can be given in + environment variables, the config file or commandline + switches. + + https://github.com/pengutronix/genimage diff --git a/package/genimage/genimage.hash b/package/genimage/genimage.hash new file mode 100644 index 00000000..232ba6ef --- /dev/null +++ b/package/genimage/genimage.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 ebc3f886c4d80064dd6c6d5e3c2e98e5a670078264108ce2f89ada8a2e13fedd genimage-18.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/genimage/genimage.mk b/package/genimage/genimage.mk new file mode 100644 index 00000000..b8ce7ff3 --- /dev/null +++ b/package/genimage/genimage.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# genimage +# +################################################################################ + +GENIMAGE_VERSION = 18 +GENIMAGE_SOURCE = genimage-$(GENIMAGE_VERSION).tar.xz +GENIMAGE_SITE = https://github.com/pengutronix/genimage/releases/download/v$(GENIMAGE_VERSION) +HOST_GENIMAGE_DEPENDENCIES = host-pkgconf host-libconfuse +GENIMAGE_LICENSE = GPL-2.0 +GENIMAGE_LICENSE_FILES = COPYING + +$(eval $(host-autotools-package)) diff --git a/package/genpart/0001-fix-return-code.patch b/package/genpart/0001-fix-return-code.patch new file mode 100644 index 00000000..ec18c82f --- /dev/null +++ b/package/genpart/0001-fix-return-code.patch @@ -0,0 +1,25 @@ +genpart: return 0 if partition writen OK, with no do_magic + +If do_magic is false, we don't won't write the 0xaa55 magic. +However, if we succesfully wrote the partition entry, we still +want to return 0 to indicate success. + +Signed-off-by: "Yann E. MORIN" +Cc: Robert Schwebel + +-- +Patch sent upstream, but no mailing list. +Status: accepted upstream, not yet released. + +diff -durN host-genpart-1.0.2.orig/src/genpart.c host-genpart-1.0.2/src/genpart.c +--- host-genpart-1.0.2.orig/src/genpart.c 2009-12-20 21:54:56.000000000 +0100 ++++ host-genpart-1.0.2/src/genpart.c 2013-01-22 23:13:24.109752579 +0100 +@@ -92,6 +92,8 @@ + if (do_magic) { + if (fwrite(&magic, 2, 1, stdout) > 0) + rc=0; ++ } else { ++ rc=0; + } + } + return rc; diff --git a/package/genpart/Config.in b/package/genpart/Config.in new file mode 100644 index 00000000..64288452 --- /dev/null +++ b/package/genpart/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_GENPART + bool "genpart" + help + Generate a 16 byte partition table entry defined by command + line arguments and dump it to stdout. No CHS magic is done, + only lba entries are filled out. + + http://www.pengutronix.de/software/genpart/index_en.html diff --git a/package/genpart/Config.in.host b/package/genpart/Config.in.host new file mode 100644 index 00000000..d8b9eb61 --- /dev/null +++ b/package/genpart/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_GENPART + bool "host genpart" + help + Generate a 16 byte partition table entry defined by command + line arguments and dump it to stdout. No CHS magic is done, + only lba entries are filled out. + + http://www.pengutronix.de/software/genpart/index_en.html diff --git a/package/genpart/genpart.hash b/package/genpart/genpart.hash new file mode 100644 index 00000000..e7e67793 --- /dev/null +++ b/package/genpart/genpart.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 bfb39434f31d10f1b8c7b6bc6ec612309838c2819022561541c4d2d5a424e3f2 genpart-1.0.2.tar.bz2 diff --git a/package/genpart/genpart.mk b/package/genpart/genpart.mk new file mode 100644 index 00000000..2aa2c710 --- /dev/null +++ b/package/genpart/genpart.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# genpart +# +################################################################################ + +GENPART_VERSION = 1.0.2 +GENPART_SOURCE = genpart-$(GENPART_VERSION).tar.bz2 +GENPART_SITE = http://www.pengutronix.de/software/genpart/download +# genpart has no license embedded in its source release. +# However, their project page mentions: +# > This community portal offers an overview about our own OSS +# > projects and projects Pengutronix is or was involved with. +# We can thus assume genpart is under a FLOSS license. +# So, until the authors have clarified the licensing terms: +GENPART_LICENSE = Unknown (clarification has been asked to the authors) + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/genromfs/0001-build-system.patch b/package/genromfs/0001-build-system.patch new file mode 100644 index 00000000..827fe75b --- /dev/null +++ b/package/genromfs/0001-build-system.patch @@ -0,0 +1,26 @@ +--- + Makefile | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +Index: genromfs-0.5.2/Makefile +=================================================================== +--- genromfs-0.5.2.orig/Makefile ++++ genromfs-0.5.2/Makefile +@@ -6,8 +6,6 @@ + PACKAGE = genromfs + VERSION = 0.5.2 + CC = gcc +-CFLAGS = -O2 -Wall -DVERSION=\"$(VERSION)\"#-g# +-LDFLAGS = -s#-g + + DISTDIR = $(PACKAGE)-$(VERSION) + +@@ -24,7 +22,7 @@ + $(CC) $(LDFLAGS) genromfs.o -o genromfs + + .c.o: +- $(CC) $(CFLAGS) $< -c -o $@ ++ $(CC) $(CFLAGS) -DVERSION=\"$(VERSION)\" $< -c -o $@ + + clean: + rm -f genromfs *.o diff --git a/package/genromfs/Config.in b/package/genromfs/Config.in new file mode 100644 index 00000000..e4eba9f1 --- /dev/null +++ b/package/genromfs/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_GENROMFS + bool "genromfs" + help + Tool to generate a ROMFS filesystem. + + http://romfs.sourceforge.net/ diff --git a/package/genromfs/genromfs.hash b/package/genromfs/genromfs.hash new file mode 100644 index 00000000..0be88ee1 --- /dev/null +++ b/package/genromfs/genromfs.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 30f37fc734572c1dbaa2504585bc23ba6b8fd7df767ae7155995b2ca0ebed960 genromfs-0.5.2.tar.gz +sha256 cc2a6651c315b233ebc110b49ea3c6452eff9a28f8bc051ffd2bb92a8dcfa3d2 COPYING diff --git a/package/genromfs/genromfs.mk b/package/genromfs/genromfs.mk new file mode 100644 index 00000000..fd696b45 --- /dev/null +++ b/package/genromfs/genromfs.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# genromfs +# +################################################################################ + +GENROMFS_VERSION = 0.5.2 +GENROMFS_SITE = http://downloads.sourceforge.net/project/romfs/genromfs/$(GENROMFS_VERSION) +GENROMFS_LICENSE = GPL-2.0+ +GENROMFS_LICENSE_FILES = COPYING + +define GENROMFS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + CC="$(TARGET_CC)" \ + CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" +endef + +# "PREFIX" is the equivalent of DESTDIR in autotools, "prefix" is the +# traditional prefix. "prefix" defaults to /usr so no need to set it. +define GENROMFS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX=$(TARGET_DIR) install +endef + +define HOST_GENROMFS_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_GENROMFS_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) prefix=$(HOST_DIR) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/gensio/0001-Fix-missing-EVP_PKEY_ED25519-build-error-on-libressl.patch b/package/gensio/0001-Fix-missing-EVP_PKEY_ED25519-build-error-on-libressl.patch new file mode 100644 index 00000000..e9087aa3 --- /dev/null +++ b/package/gensio/0001-Fix-missing-EVP_PKEY_ED25519-build-error-on-libressl.patch @@ -0,0 +1,105 @@ +From 1e7071684329f23ee3447310d203d193c283979e Mon Sep 17 00:00:00 2001 +From: James Hilliard +Date: Wed, 5 Oct 2022 15:30:32 -0600 +Subject: [PATCH] Fix missing EVP_PKEY_ED25519 build error on libressl +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes: +gensio_filter_certauth.c: In function ‘v3_certauth_add_challenge_rsp’: +gensio_filter_certauth.c:838:44: error: ‘EVP_PKEY_ED25519’ undeclared (first use in this function); did you mean ‘EVP_PKEY_DSA1’? + 838 | if (EVP_PKEY_base_id(sfilter->pkey) == EVP_PKEY_ED25519) { + | ^~~~~~~~~~~~~~~~ + | EVP_PKEY_DSA1 +gensio_filter_certauth.c:838:44: note: each undeclared identifier is reported only once for each function it appears in +gensio_filter_certauth.c: In function ‘certauth_add_challenge_rsp’: +gensio_filter_certauth.c:901:44: error: ‘EVP_PKEY_ED25519’ undeclared (first use in this function); did you mean ‘EVP_PKEY_DSA1’? + 901 | if (EVP_PKEY_base_id(sfilter->pkey) == EVP_PKEY_ED25519) + | ^~~~~~~~~~~~~~~~ + | EVP_PKEY_DSA1 +gensio_filter_certauth.c: In function ‘certauth_check_challenge’: +gensio_filter_certauth.c:1048:35: error: ‘EVP_PKEY_ED25519’ undeclared (first use in this function); did you mean ‘EVP_PKEY_DSA1’? + 1048 | if (EVP_PKEY_base_id(pkey) == EVP_PKEY_ED25519) + | ^~~~~~~~~~~~~~~~ + | EVP_PKEY_DSA1 + +Signed-off-by: Corey Minyard +[Retrieved from: +https://github.com/cminyard/gensio/commit/1e7071684329f23ee3447310d203d193c283979e] +Signed-off-by: Fabrice Fontaine +--- + lib/gensio_filter_certauth.c | 6 ++++++ + tools/gtlssh-keygen.c | 11 ++++++++++- + 2 files changed, 16 insertions(+), 1 deletion(-) + +diff --git a/lib/gensio_filter_certauth.c b/lib/gensio_filter_certauth.c +index 642379b6..c4552e79 100644 +--- a/lib/gensio_filter_certauth.c ++++ b/lib/gensio_filter_certauth.c +@@ -835,11 +835,13 @@ v3_certauth_add_challenge_rsp(struct certauth_filter *sfilter) + unsigned int lenpos, len; + int rv = 0; + ++#ifdef EVP_PKEY_ED25519 + if (EVP_PKEY_base_id(sfilter->pkey) == EVP_PKEY_ED25519) { + gca_log_err(sfilter, + "Remote end or SSL too old to support ed25519 key"); + return GE_KEYINVALID; + } ++#endif + + certauth_write_byte(sfilter, CERTAUTH_CHALLENGE_RSP); + lenpos = sfilter->write_buf_len; +@@ -898,8 +900,10 @@ certauth_add_challenge_rsp(struct certauth_filter *sfilter) + if (sfilter->version < 4 || sfilter->my_version < 4) + return v3_certauth_add_challenge_rsp(sfilter); + ++#ifdef EVP_PKEY_ED25519 + if (EVP_PKEY_base_id(sfilter->pkey) == EVP_PKEY_ED25519) + digest = NULL; ++#endif + + certauth_write_byte(sfilter, CERTAUTH_CHALLENGE_RSP); + lenpos = sfilter->write_buf_len; +@@ -1045,8 +1049,10 @@ certauth_check_challenge(struct certauth_filter *sfilter) + goto out_nomem; + } + ++#ifdef EVP_PKEY_ED25519 + if (EVP_PKEY_base_id(pkey) == EVP_PKEY_ED25519) + digest = NULL; ++#endif + + if (!EVP_DigestVerifyInit(sign_ctx, NULL, digest, NULL, pkey)) { + gca_logs_err(sfilter, "Digest verify init failed"); +diff --git a/tools/gtlssh-keygen.c b/tools/gtlssh-keygen.c +index c8c28937..0779dd78 100644 +--- a/tools/gtlssh-keygen.c ++++ b/tools/gtlssh-keygen.c +@@ -108,7 +108,12 @@ help(const char *progname) + P(" The default is your username for normal certificates and\n"); + P(" the fully qualified domain name for server certificates.\n"); + P(" --algorithm - Set the algorithm to use for the key,\n"); +- P(" either ed25519, rsa or ec. The default is ed25519.\n"); ++ P(" either ed25519, rsa or ec. "); ++#ifdef EVP_PKEY_ED25519 ++ P("The default is ed25519.\n"); ++#else ++ P("The default is ec.\n"); ++#endif + P(" --force, -f - Don't ask questions, just do the operation. This\n"); + P(" may overwrite data without asking.\n"); + P(" --version - Print the version number and exit.\n"); +@@ -831,7 +836,11 @@ genpkey_ed25519(const char *key) + return rc != 0; + } + ++#ifdef EVP_PKEY_ED25519 + static int (*genpkey)(const char *key) = genpkey_ed25519; ++#else ++static int (*genpkey)(const char *key) = genpkey_ec; ++#endif + + /* + * Create a single key. If name is NULL, it's a server key, otherwise diff --git a/package/gensio/Config.in b/package/gensio/Config.in new file mode 100644 index 00000000..fd0e4769 --- /dev/null +++ b/package/gensio/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_GENSIO + bool "gensio" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_ATOMIC + help + A library to abstract stream I/O like serial port, TCP, + telnet, UDP, SSL, IPMI SOL, etc. + + https://github.com/cminyard/gensio diff --git a/package/gensio/gensio.hash b/package/gensio/gensio.hash new file mode 100644 index 00000000..84af3fda --- /dev/null +++ b/package/gensio/gensio.hash @@ -0,0 +1,7 @@ +# From https://sourceforge.net/projects/ser2net/files/ser2net/ +md5 c8d65e1809ed5cd1138fa309e3ab0e94 gensio-2.5.5.tar.gz +sha1 076fc8324dedb658972a88c738131a409968e2ba gensio-2.5.5.tar.gz +# Locally computed: +sha256 63c5fff536efd080fb7bc7fa084331c19fc64abd42b7f2bec86bd77b4fd10840 gensio-2.5.5.tar.gz +sha256 501f3108e6c03e5a0a5585ebaaa369171aead5319cd0a7a4dc1f66211c1f09f1 COPYING +sha256 dcac7d447dd81ab96d28dce00a07a6486e623f7ded94e2a2a8e83312405cdf89 COPYING.LIB diff --git a/package/gensio/gensio.mk b/package/gensio/gensio.mk new file mode 100644 index 00000000..2ba1b950 --- /dev/null +++ b/package/gensio/gensio.mk @@ -0,0 +1,67 @@ +################################################################################ +# +# gensio +# +################################################################################ + +GENSIO_VERSION = 2.5.5 +GENSIO_SITE = http://downloads.sourceforge.net/project/ser2net/ser2net +GENSIO_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (tools) +GENSIO_LICENSE_FILES = COPYING.LIB COPYING +GENSIO_INSTALL_STAGING = YES +GENSIO_CONF_OPTS = \ + --without-swig \ + --without-python + +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +GENSIO_CONF_OPTS += --with-cplusplus +else +GENSIO_CONF_OPTS += --without-cplusplus +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB_PCM),y) +GENSIO_DEPENDENCIES += alsa-lib +GENSIO_CONF_OPTS += --with-alsa +else +GENSIO_CONF_OPTS += --without-alsa +endif + +ifeq ($(BR2_PACKAGE_AVAHI_LIBAVAHI_CLIENT),y) +GENSIO_DEPENDENCIES += avahi +GENSIO_CONF_OPTS += --with-mdns +else +GENSIO_CONF_OPTS += --without-mdns +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +GENSIO_DEPENDENCIES += host-pkgconf libglib2 +GENSIO_CONF_OPTS += --with-glib +else +GENSIO_CONF_OPTS += --without-glib +endif + +ifeq ($(BR2_PACKAGE_OPENIPMI),y) +GENSIO_DEPENDENCIES += openipmi +GENSIO_CONF_OPTS += --with-openipmi +else +GENSIO_CONF_OPTS += --without-openipmi +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +GENSIO_DEPENDENCIES += host-pkgconf openssl +GENSIO_CONF_OPTS += --with-openssl +else +GENSIO_CONF_OPTS += --without-openssl +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +GENSIO_CONF_ENV += LIBS=-latomic +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +GENSIO_CONF_OPTS += --with-pthreads +else +GENSIO_CONF_OPTS += --without-pthreads +endif + +$(eval $(autotools-package)) diff --git a/package/geoip/Config.in b/package/geoip/Config.in new file mode 100644 index 00000000..739a8da0 --- /dev/null +++ b/package/geoip/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_GEOIP + bool "geoip" + help + GeoIP is a C library that enables the user to find + geographical and network information of an IP address. + + To use this library, you need to download MaxMind's free + GeoLite or commercial GeoIP binary databases into the + target's /usr/share/GeoIP directory in uncompressed form. + + Note that GeoIP2 / GeoLite2 are not supported by this + library. + + https://github.com/maxmind/geoip-api-c diff --git a/package/geoip/geoip.hash b/package/geoip/geoip.hash new file mode 100644 index 00000000..9d0a02d3 --- /dev/null +++ b/package/geoip/geoip.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1dfb748003c5e4b7fd56ba8c4cd786633d5d6f409547584f6910398389636f80 GeoIP-1.6.12.tar.gz +sha256 36b6d3fa47916943fd5fec313c584784946047ec1337a78b440e5992cb595f89 COPYING diff --git a/package/geoip/geoip.mk b/package/geoip/geoip.mk new file mode 100644 index 00000000..cbd42823 --- /dev/null +++ b/package/geoip/geoip.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# geoip +# +################################################################################ + +GEOIP_VERSION = 1.6.12 +GEOIP_SOURCE = GeoIP-$(GEOIP_VERSION).tar.gz +GEOIP_SITE = https://github.com/maxmind/geoip-api-c/releases/download/v$(GEOIP_VERSION) +GEOIP_INSTALL_STAGING = YES +GEOIP_LICENSE = LGPL-2.1+ +GEOIP_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/gerbera/0001-buildfix-support-fmtlib-10.patch b/package/gerbera/0001-buildfix-support-fmtlib-10.patch new file mode 100644 index 00000000..b274aab7 --- /dev/null +++ b/package/gerbera/0001-buildfix-support-fmtlib-10.patch @@ -0,0 +1,166 @@ +From 37957aac0aea776e6f843af2358916f81056a405 Mon Sep 17 00:00:00 2001 +From: Mamoru TASAKA +Date: Thu, 29 Jun 2023 22:09:15 +0900 +Subject: [PATCH] buildfix: support fmtlib 10 + +With fmtlib10, fmt::format does not accept pugi::xml_node as it is. +Use name() member function, as this usage appear on other places of +gerbera source code. + +Closes #2839 . + +Upstream: https://github.com/gerbera/gerbera/commit/37957aac0aea776e6f843af2358916f81056a405 + +Signed-off-by: Bernd Kuhls +--- + src/config/setup/config_setup_array.cc | 6 +++--- + src/config/setup/config_setup_autoscan.cc | 2 +- + src/config/setup/config_setup_client.cc | 2 +- + src/config/setup/config_setup_dictionary.cc | 6 +++--- + src/config/setup/config_setup_dynamic.cc | 2 +- + src/config/setup/config_setup_transcoding.cc | 2 +- + src/config/setup/config_setup_tweak.cc | 2 +- + src/config/setup/config_setup_vector.cc | 4 ++-- + 8 files changed, 13 insertions(+), 13 deletions(-) + +diff --git a/src/config/setup/config_setup_array.cc b/src/config/setup/config_setup_array.cc +index 62dd5c9a7..a5f8958ce 100644 +--- a/src/config/setup/config_setup_array.cc ++++ b/src/config/setup/config_setup_array.cc +@@ -137,11 +137,11 @@ std::vector ConfigArraySetup::getXmlContent(const pugi::xml_node& o + std::vector result; + if (initArray) { + if (!initArray(optValue, result, ConfigDefinition::mapConfigOption(nodeOption))) { +- throw_std_runtime_error("Invalid {} array value '{}'", xpath, optValue); ++ throw_std_runtime_error("Invalid {} array value '{}'", xpath, optValue.name()); + } + } else { + if (!createOptionFromNode(optValue, result)) { +- throw_std_runtime_error("Invalid {} array value '{}'", xpath, optValue); ++ throw_std_runtime_error("Invalid {} array value '{}'", xpath, optValue.name()); + } + } + if (result.empty()) { +@@ -150,7 +150,7 @@ std::vector ConfigArraySetup::getXmlContent(const pugi::xml_node& o + result = defaultEntries; + } + if (notEmpty && result.empty()) { +- throw_std_runtime_error("Invalid array {} empty '{}'", xpath, optValue); ++ throw_std_runtime_error("Invalid array {} empty '{}'", xpath, optValue.name()); + } + return result; + } +diff --git a/src/config/setup/config_setup_autoscan.cc b/src/config/setup/config_setup_autoscan.cc +index 9ae4e61f8..5e1394585 100644 +--- a/src/config/setup/config_setup_autoscan.cc ++++ b/src/config/setup/config_setup_autoscan.cc +@@ -245,7 +245,7 @@ std::shared_ptr ConfigAutoscanSetup::newOption(const pugi::xml_nod + { + auto result = std::vector(); + if (!createOptionFromNode(optValue, result)) { +- throw_std_runtime_error("Init {} autoscan failed '{}'", xpath, optValue); ++ throw_std_runtime_error("Init {} autoscan failed '{}'", xpath, optValue.name()); + } + optionValue = std::make_shared(result); + return optionValue; +diff --git a/src/config/setup/config_setup_client.cc b/src/config/setup/config_setup_client.cc +index ffd12fc01..857db3c3e 100644 +--- a/src/config/setup/config_setup_client.cc ++++ b/src/config/setup/config_setup_client.cc +@@ -183,7 +183,7 @@ std::shared_ptr ConfigClientSetup::newOption(const pugi::xml_node& + auto result = std::make_shared(); + + if (!createOptionFromNode(isEnabled ? optValue : pugi::xml_node(nullptr), result)) { +- throw_std_runtime_error("Init {} client config failed '{}'", xpath, optValue); ++ throw_std_runtime_error("Init {} client config failed '{}'", xpath, optValue.name()); + } + optionValue = std::make_shared(result); + return optionValue; +diff --git a/src/config/setup/config_setup_dictionary.cc b/src/config/setup/config_setup_dictionary.cc +index 003b4cc59..69d1a7255 100644 +--- a/src/config/setup/config_setup_dictionary.cc ++++ b/src/config/setup/config_setup_dictionary.cc +@@ -163,11 +163,11 @@ std::map ConfigDictionarySetup::getXmlContent(const pu + std::map result; + if (initDict) { + if (!initDict(optValue, result)) { +- throw_std_runtime_error("Init {} dictionary failed '{}'", xpath, optValue); ++ throw_std_runtime_error("Init {} dictionary failed '{}'", xpath, optValue.name()); + } + } else { + if (!createOptionFromNode(optValue, result) && required) { +- throw_std_runtime_error("Init {} dictionary failed '{}'", xpath, optValue); ++ throw_std_runtime_error("Init {} dictionary failed '{}'", xpath, optValue.name()); + } + } + if (result.empty()) { +@@ -176,7 +176,7 @@ std::map ConfigDictionarySetup::getXmlContent(const pu + result = defaultEntries; + } + if (notEmpty && result.empty()) { +- throw_std_runtime_error("Invalid dictionary {} empty '{}'", xpath, optValue); ++ throw_std_runtime_error("Invalid dictionary {} empty '{}'", xpath, optValue.name()); + } + return result; + } +diff --git a/src/config/setup/config_setup_dynamic.cc b/src/config/setup/config_setup_dynamic.cc +index 0074cb6d3..d6962afe6 100644 +--- a/src/config/setup/config_setup_dynamic.cc ++++ b/src/config/setup/config_setup_dynamic.cc +@@ -192,7 +192,7 @@ std::shared_ptr ConfigDynamicContentSetup::newOption(const pugi::x + auto result = std::make_shared(); + + if (!createOptionFromNode(optValue, result)) { +- throw_std_runtime_error("Init {} DynamicContentList failed '{}'", xpath, optValue); ++ throw_std_runtime_error("Init {} DynamicContentList failed '{}'", xpath, optValue.name()); + } + optionValue = std::make_shared(result); + return optionValue; +diff --git a/src/config/setup/config_setup_transcoding.cc b/src/config/setup/config_setup_transcoding.cc +index 17d1780dc..1f6fb0604 100644 +--- a/src/config/setup/config_setup_transcoding.cc ++++ b/src/config/setup/config_setup_transcoding.cc +@@ -501,7 +501,7 @@ std::shared_ptr ConfigTranscodingSetup::newOption(const pugi::xml_ + auto result = std::make_shared(); + + if (!createOptionFromNode(isEnabled ? optValue : pugi::xml_node(nullptr), result)) { +- throw_std_runtime_error("Init {} transcoding failed '{}'", xpath, optValue); ++ throw_std_runtime_error("Init {} transcoding failed '{}'", xpath, optValue.name()); + } + optionValue = std::make_shared(result); + return optionValue; +diff --git a/src/config/setup/config_setup_tweak.cc b/src/config/setup/config_setup_tweak.cc +index 65dae2759..4da9fca1b 100644 +--- a/src/config/setup/config_setup_tweak.cc ++++ b/src/config/setup/config_setup_tweak.cc +@@ -257,7 +257,7 @@ std::shared_ptr ConfigDirectorySetup::newOption(const pugi::xml_no + auto result = std::make_shared(); + + if (!createOptionFromNode(optValue, result)) { +- throw_std_runtime_error("Init {} DirectoryConfigList failed '{}'", xpath, optValue); ++ throw_std_runtime_error("Init {} DirectoryConfigList failed '{}'", xpath, optValue.name()); + } + optionValue = std::make_shared(result); + return optionValue; +diff --git a/src/config/setup/config_setup_vector.cc b/src/config/setup/config_setup_vector.cc +index e5efe2767..9a9670569 100644 +--- a/src/config/setup/config_setup_vector.cc ++++ b/src/config/setup/config_setup_vector.cc +@@ -181,7 +181,7 @@ std::vector>> ConfigVectorSetup: + { + std::vector>> result; + if (!createOptionFromNode(optValue, result) && required) { +- throw_std_runtime_error("Init {} vector failed '{}'", xpath, optValue); ++ throw_std_runtime_error("Init {} vector failed '{}'", xpath, optValue.name()); + } + if (result.empty()) { + log_debug("{} assigning {} default values", xpath, defaultEntries.size()); +@@ -189,7 +189,7 @@ std::vector>> ConfigVectorSetup: + result = defaultEntries; + } + if (notEmpty && result.empty()) { +- throw_std_runtime_error("Invalid vector {} empty '{}'", xpath, optValue); ++ throw_std_runtime_error("Invalid vector {} empty '{}'", xpath, optValue.name()); + } + return result; + } diff --git a/package/gerbera/0002-Build-against-fmt-11.0.0.patch b/package/gerbera/0002-Build-against-fmt-11.0.0.patch new file mode 100644 index 00000000..27dc05e5 --- /dev/null +++ b/package/gerbera/0002-Build-against-fmt-11.0.0.patch @@ -0,0 +1,136 @@ +From bb9e80f4225d4ecb0d75d80c16b0ba3ddb12b1dc Mon Sep 17 00:00:00 2001 +From: Dario Binacchi +Date: Mon, 2 Sep 2024 23:30:19 +0200 +Subject: [PATCH] Build against fmt 11.0.0 + +Signed-off-by: Dario Binacchi +Upstream: backport from upstream https://github.com/gerbera/gerbera/commit/f1f266efbb0a6adac160e428cd14c20f6ecd3e5d +--- + README.md | 2 +- + scripts/install-spdlog.sh | 4 +++- + scripts/versions.sh | 2 +- + src/database/sql_format.h | 3 +++ + src/util/logger.h | 5 ++++- + src/util/url_utils.cc | 7 ++++++- + test/scripting/mock/duk_helper.cc | 4 +++- + 7 files changed, 21 insertions(+), 6 deletions(-) + +diff --git a/README.md b/README.md +index a1992738f009..990a9af8855f 100644 +--- a/README.md ++++ b/README.md +@@ -53,7 +53,7 @@ sudo make install + | libiconv | | | | Required | Charset conversion | | + | sqlite3 | 3.7.0 | 3.35.5 | 3.36.0 | Required | Database storage | | + | zlib | | | | Required | Data compression | | +-| [fmtlib] | 7.1.3 | 7.1.3 | 9.1.0 | Required | Fast string formatting | | ++| [fmtlib] | 7.1.3 | 9.1.0 | 11.0.0 | Required | Fast string formatting | | + | [spdlog] | 1.8.1 | 1.8.5 | 1.11.0 | Required | Runtime logging | | + | [duktape] | 2.1.0 | 2.6.0 | 2.7.0 | Optional | Scripting Support | Enabled | + | mysql | | | | Optional | Alternate database storage | Disabled | +diff --git a/scripts/install-spdlog.sh b/scripts/install-spdlog.sh +index 8a758e35b579..5c1426e3d44f 100755 +--- a/scripts/install-spdlog.sh ++++ b/scripts/install-spdlog.sh +@@ -39,7 +39,9 @@ fi + mkdir build + cd build + +-cmake .. -DSPDLOG_FMT_EXTERNAL=ON -DBUILD_SHARED_LIBS=${BUILD_SHARED} ++cmake .. -DSPDLOG_FMT_EXTERNAL=ON \ ++ -DBUILD_SHARED_LIBS=${BUILD_SHARED} \ ++ -DSPDLOG_BUILD_EXAMPLE=OFF + + if command -v nproc >/dev/null 2>&1; then + make "-j$(nproc)" +diff --git a/scripts/versions.sh b/scripts/versions.sh +index 19a0f80f79ac..8c1ffe7d590d 100644 +--- a/scripts/versions.sh ++++ b/scripts/versions.sh +@@ -36,7 +36,7 @@ else + EBML="1.4.4" + EXIV2="v0.27.5" + FFMPEGTHUMBNAILER="2.2.2" +- FMT="9.1.0" ++ FMT="11.0.0" + GOOGLETEST="1.12.1" + LASTFM="0.4.0" + MATROSKA="1.7.1" +diff --git a/src/database/sql_format.h b/src/database/sql_format.h +index 551122eb7cf7..d64edae69372 100644 +--- a/src/database/sql_format.h ++++ b/src/database/sql_format.h +@@ -26,6 +26,9 @@ + #define __SQL_FORMAT_H__ + + #include ++#if FMT_VERSION >= 100202 ++#include ++#endif + + struct SQLIdentifier { + constexpr SQLIdentifier(std::string_view name, char quote_begin, char quote_end) +diff --git a/src/util/logger.h b/src/util/logger.h +index a121ead31e95..d51e60430ed9 100644 +--- a/src/util/logger.h ++++ b/src/util/logger.h +@@ -36,6 +36,9 @@ + + #include + #include ++#if FMT_VERSION >= 100202 ++#include ++#endif + #include + #include + #include +@@ -135,7 +138,7 @@ template + struct fmt::formatter, char>> + : formatter> { + template +- auto format(const T& value, FormatContext& ctx) -> decltype(ctx.out()) ++ auto format(const T& value, FormatContext& ctx) const -> decltype(ctx.out()) + { + return fmt::formatter>::format( + static_cast>(value), ctx); +diff --git a/src/util/url_utils.cc b/src/util/url_utils.cc +index b1c9fecef863..84f6f3be43d4 100644 +--- a/src/util/url_utils.cc ++++ b/src/util/url_utils.cc +@@ -23,11 +23,16 @@ Gerbera - https://gerbera.io/ + + #include "url_utils.h" // API + ++#include "exceptions.h" ++ ++ + #include ++#if FMT_VERSION >= 100202 ++#include ++#endif + #include + + #include "common.h" +-#include "exceptions.h" + + namespace URLUtils { + +diff --git a/test/scripting/mock/duk_helper.cc b/test/scripting/mock/duk_helper.cc +index 71bdc5d025f7..f1ab1cfef8a7 100644 +--- a/test/scripting/mock/duk_helper.cc ++++ b/test/scripting/mock/duk_helper.cc +@@ -24,8 +24,10 @@ + #include "duk_helper.h" + #include + #include +-#include + #include ++#if FMT_VERSION >= 100202 ++#include ++#endif + #include + + std::vector DukTestHelper::arrayToVector(duk_context* ctx, duk_idx_t idx) +-- +2.43.0 + diff --git a/package/gerbera/Config.in b/package/gerbera/Config.in new file mode 100644 index 00000000..46a163ec --- /dev/null +++ b/package/gerbera/Config.in @@ -0,0 +1,34 @@ +config BR2_PACKAGE_GERBERA + bool "gerbera" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # C++17 filesystem + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR # fmt + select BR2_PACKAGE_FMT + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_LIBUPNP if !BR2_PACKAGE_LIBNPUPNP + select BR2_PACKAGE_PUGIXML + select BR2_PACKAGE_PUGIXML_XPATH_SUPPORT + select BR2_PACKAGE_SPDLOG + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_ZLIB + help + A free media server. + Stream your media to devices on your home network. + + Select BR2_PACKAGE_DUKTAPE if you want to enable JavaScript + for scripting. + + https://gerbera.io + +comment "gerbera needs a toolchain w/ C++, dynamic library, threads, wchar, gcc >= 8" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_8 diff --git a/package/gerbera/S99gerbera b/package/gerbera/S99gerbera new file mode 100644 index 00000000..e5a70e78 --- /dev/null +++ b/package/gerbera/S99gerbera @@ -0,0 +1,55 @@ +#!/bin/sh + +DAEMON="gerbera" +PIDFILE="/var/run/$DAEMON.pid" + +GERBERA_ARGS="-c /etc/gerbera/config.xml -l /var/log/gerbera.log" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +# (Re)create home directory +mkdir -p /var/lib/$DAEMON + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -m -b -p "$PIDFILE" -x "/usr/bin/$DAEMON" \ + -- $GERBERA_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/gerbera/config.xml b/package/gerbera/config.xml new file mode 100644 index 00000000..e6261f25 --- /dev/null +++ b/package/gerbera/config.xml @@ -0,0 +1,175 @@ + + + + + + + + + + Gerbera + uuid:7b156a2a-d79e-4763-983b-ae1d13fe0ff4 + /var/lib/gerbera + /usr/share/gerbera/web + + 180 + + + gerbera.db + + + + + upnp:class derivedfrom "object.item" and last_updated > "@last7" + + + upnp:class derivedfrom "object.item" and last_modified > "@last7" + + + + + * + + video + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + audio/mpeg + no + yes + no + + + + + video/mpeg + yes + yes + yes + + + + + + + diff --git a/package/gerbera/gerbera.hash b/package/gerbera/gerbera.hash new file mode 100644 index 00000000..ee6e3d9b --- /dev/null +++ b/package/gerbera/gerbera.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 2144a7c4a13e8b43aa0c911fbeae65f05e2c42254ddd03be5c41f5fcf103a93c gerbera-1.12.1.tar.gz +sha256 cae4138373be41fd2be75faf41ce7efbcf49fb17d0e05ad1c51cc01ac335b9b6 LICENSE.md diff --git a/package/gerbera/gerbera.mk b/package/gerbera/gerbera.mk new file mode 100644 index 00000000..6616a83e --- /dev/null +++ b/package/gerbera/gerbera.mk @@ -0,0 +1,133 @@ +################################################################################ +# +# gerbera +# +################################################################################ + +GERBERA_VERSION = 1.12.1 +GERBERA_SITE = $(call github,gerbera,gerbera,v$(GERBERA_VERSION)) +GERBERA_LICENSE = GPL-2.0 +GERBERA_LICENSE_FILES = LICENSE.md +GERBERA_DEPENDENCIES = \ + fmt \ + host-pkgconf \ + pugixml \ + spdlog \ + sqlite \ + util-linux \ + zlib +GERBERA_CONF_OPTS = -DWITH_DEBUG=OFF + +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_9)$(BR2_OPTIMIZE_S),yy) +GERBERA_CONF_OPTS += -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) -O2" +endif + +# Uses __atomic_fetch_add_4 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +GERBERA_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic +endif + +ifeq ($(BR2_PACKAGE_DUKTAPE),y) +GERBERA_DEPENDENCIES += duktape +GERBERA_CONF_OPTS += -DWITH_JS=ON +else +GERBERA_CONF_OPTS += -DWITH_JS=OFF +endif + +ifeq ($(BR2_PACKAGE_EXIV2),y) +GERBERA_DEPENDENCIES += exiv2 +GERBERA_CONF_OPTS += -DWITH_EXIV2=ON +else +GERBERA_CONF_OPTS += -DWITH_EXIV2=OFF +endif + +ifeq ($(BR2_PACKAGE_FFMPEG),y) +GERBERA_DEPENDENCIES += ffmpeg +GERBERA_CONF_OPTS += -DWITH_AVCODEC=ON +else +GERBERA_CONF_OPTS += -DWITH_AVCODEC=OFF +endif + +ifeq ($(BR2_PACKAGE_FILE),y) +GERBERA_DEPENDENCIES += file +GERBERA_CONF_OPTS += -DWITH_MAGIC=ON +else +GERBERA_CONF_OPTS += -DWITH_MAGIC=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +GERBERA_DEPENDENCIES += libcurl +GERBERA_CONF_OPTS += -DWITH_CURL=ON +else +GERBERA_CONF_OPTS += -DWITH_CURL=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBEXIF),y) +GERBERA_DEPENDENCIES += libexif +GERBERA_CONF_OPTS += -DWITH_EXIF=ON +else +GERBERA_CONF_OPTS += -DWITH_EXIF=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +GERBERA_DEPENDENCIES += libiconv +endif + +ifeq ($(BR2_PACKAGE_LIBMATROSKA),y) +GERBERA_DEPENDENCIES += libmatroska +GERBERA_CONF_OPTS += -DWITH_MATROSKA=ON +else +GERBERA_CONF_OPTS += -DWITH_MATROSKA=OFF +endif + +# Either libupnp or libnpupnp are guranteed to be enabled +ifeq ($(BR2_PACKAGE_LIBNPUPNP),y) +GERBERA_DEPENDENCIES += libnpupnp +GERBERA_CONF_OPTS += -DWITH_NPUPNP=ON +else +GERBERA_DEPENDENCIES += libupnp +GERBERA_CONF_OPTS += -DWITH_NPUPNP=OFF +endif + +ifeq ($(BR2_PACKAGE_MARIADB),y) +GERBERA_DEPENDENCIES += mariadb +GERBERA_CONF_OPTS += -DWITH_MYSQL=ON +else +GERBERA_CONF_OPTS += -DWITH_MYSQL=OFF +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +GERBERA_DEPENDENCIES += systemd +GERBERA_CONF_OPTS += -DWITH_SYSTEMD=ON +else +GERBERA_CONF_OPTS += -DWITH_SYSTEMD=OFF +endif + +ifeq ($(BR2_PACKAGE_TAGLIB),y) +GERBERA_DEPENDENCIES += taglib +GERBERA_CONF_OPTS += -DWITH_TAGLIB=ON +else +GERBERA_CONF_OPTS += -DWITH_TAGLIB=OFF +endif + +# gerbera does not provide a default configuration file, it can be +# created during run time through --create-config: +# http://docs.gerbera.io/en/latest/config-overview.html#generating-configuration +# However, to have a correct home directory and UDN, install it ourself +define GERBERA_INSTALL_CONFIGURATION + $(INSTALL) -D -m 0644 package/gerbera/config.xml \ + $(TARGET_DIR)/etc/gerbera/config.xml +endef + +GERBERA_POST_INSTALL_TARGET_HOOKS += GERBERA_INSTALL_CONFIGURATION + +define GERBERA_USERS + gerbera -1 gerbera -1 * /var/lib/gerbera - - Gerbera user +endef + +define GERBERA_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/gerbera/S99gerbera \ + $(TARGET_DIR)/etc/init.d/S99gerbera +endef + +$(eval $(cmake-package)) diff --git a/package/gesftpserver/Config.in b/package/gesftpserver/Config.in new file mode 100644 index 00000000..bce47700 --- /dev/null +++ b/package/gesftpserver/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_GESFTPSERVER + bool "gesftpserver" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Green End SFTP Server + + This is an SFTP server supporting up to protocol version 6. + It is possible to use it as a drop-in replacement for the + OpenSSH server, or to provide sftp support for Dropbear. + + http://www.greenend.org.uk/rjk/sftpserver/ + +comment "gesftpserver needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/gesftpserver/gesftpserver.hash b/package/gesftpserver/gesftpserver.hash new file mode 100644 index 00000000..6d910a84 --- /dev/null +++ b/package/gesftpserver/gesftpserver.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b18b10405ef2b05c45450aafd6803f69efb4d2138e4e07fd186c1618027ee169 sftpserver-2.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/gesftpserver/gesftpserver.mk b/package/gesftpserver/gesftpserver.mk new file mode 100644 index 00000000..5a7106d7 --- /dev/null +++ b/package/gesftpserver/gesftpserver.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# gesftpserver +# +################################################################################ + +GESFTPSERVER_VERSION = 2 +GESFTPSERVER_SOURCE = sftpserver-$(GESFTPSERVER_VERSION).tar.gz +GESFTPSERVER_SITE = http://www.greenend.org.uk/rjk/sftpserver +GESFTPSERVER_LICENSE = GPL-2.0+ +GESFTPSERVER_LICENSE_FILES = COPYING + +# "Missing prototype" warning treated as error +GESFTPSERVER_CONF_OPTS = --disable-warnings-as-errors +GESFTPSERVER_CPE_ID_VENDOR = greenend +GESFTPSERVER_CPE_ID_PRODUCT = sftpserver + +# forgets to link against pthread when cross compiling +GESFTPSERVER_CONF_ENV = \ + CFLAGS="$(TARGET_CFLAGS) -std=c99" \ + LIBS=-lpthread + +# overwrite openssh version if enabled +GESFTPSERVER_DEPENDENCIES += \ + $(if $(BR2_ENABLE_LOCALE),,libiconv) \ + $(if $(BR2_PACKAGE_OPENSSH),openssh) + +# Python on the host is only used for tests, which we don't use in +# Buildroot +GESFTPSERVER_CONF_ENV += rjk_cv_python3=false + +# openssh/dropbear looks here +define GESFTPSERVER_ADD_SYMLINK + ln -sf gesftpserver $(TARGET_DIR)/usr/libexec/sftp-server +endef + +GESFTPSERVER_POST_INSTALL_TARGET_HOOKS += GESFTPSERVER_ADD_SYMLINK + +$(eval $(autotools-package)) diff --git a/package/getent/Config.in b/package/getent/Config.in new file mode 100644 index 00000000..a7303cb9 --- /dev/null +++ b/package/getent/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_GETENT + bool "getent" + help + This package installs the 'getent' utility, which allows to + get entries from Name Service Switch libraries. For glibc + toolchains, it's the real getent program from the C library + that gets installed, which is NSS-capable. For uclibc and + musl toolchains, it's a simple wrapper script that emulates + getent's behavior, since there is no NSS support in uclibc + and musl. diff --git a/package/getent/getent b/package/getent/getent new file mode 100644 index 00000000..fdda7936 --- /dev/null +++ b/package/getent/getent @@ -0,0 +1,45 @@ +#!/bin/sh +# $Header: /var/cvs/uClibc/extra/scripts/getent,v 1.2 2005/02/02 14:18:01 solar Exp $ +# +# Closely (not perfectly) emulate the behavior of glibc's getent utility +# +#passwd|shadow|group|aliases|hosts|networks|ethers|netgroup|protocols|services|rpc +# only returns the first match (by design) +# dns based search is not supported (hosts,networks) +# case-insensitive matches not supported (ethers; others?) +# may return false-positives (hosts,protocols,rpc,services,ethers) +# +# Taken from uClibc 0.9.33. + +export PATH="${PATH}:/bin:/usr/bin" + +file="/etc/$1" +case $1 in + passwd|group) + match="^$2:\|^[^:]*:[^:]*:$2:" ;; + shadow) + match="^$2:" ;; + networks|netgroup) + match="^[[:space:]]*$2\>" ;; + hosts|protocols|rpc|services|ethers) + match="\<$2\>" ;; + aliases) + match="^[[:space:]]*$2[[:space:]]*:" ;; + ""|-h|--help) + echo "USAGE: $0 database [key]" + exit 0 ;; + *) + echo "$0: Unknown database: $1" 1>&2 + exit 1 ;; +esac + +if [ ! -f "$file" ] ; then + echo "$0: Could not find database file for $1" 1>&2 + exit 1 +fi + +if [ $# -eq 1 ] ; then + exec cat "$file" +else + sed "s/#.*//; /$match/q; d" "$file" | grep . || exit 2 +fi diff --git a/package/getent/getent.mk b/package/getent/getent.mk new file mode 100644 index 00000000..4e3eaea0 --- /dev/null +++ b/package/getent/getent.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# getent +# +################################################################################ + +GETENT_LICENSE = LGPL-2.1+ + +# For glibc toolchains, we use the getent program built/installed by +# the C library. For other toolchains, we use the wrapper script +# included in this package. +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y) +# Sourcery toolchains install it in sysroot/usr/lib/bin +# Buildroot toolchains install it in sysroot/usr/bin +GETENT_LOCATION = $(firstword $(wildcard \ + $(STAGING_DIR)/usr/bin/getent \ + $(STAGING_DIR)/usr/lib/bin/getent)) +else +GETENT_LOCATION = package/getent/getent +endif + +define GETENT_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(GETENT_LOCATION) $(TARGET_DIR)/usr/bin/getent +endef + +$(eval $(generic-package)) diff --git a/package/gettext-gnu/Config.in b/package/gettext-gnu/Config.in new file mode 100644 index 00000000..27e7a3da --- /dev/null +++ b/package/gettext-gnu/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_GETTEXT_GNU + bool + depends on BR2_USE_WCHAR + select BR2_PACKAGE_HAS_GETTEXT + help + The GNU `gettext' utilities are a set of tools that provide a + framework to help other GNU packages produce multi-lingual + messages. + + Only the libintl library will be installed in the + target. The full gettext suite, including tools, will be + installed in the staging directory. + + http://www.gnu.org/software/gettext/ + +if BR2_PACKAGE_GETTEXT_GNU + +config BR2_PACKAGE_PROVIDES_GETTEXT + default "gettext-gnu" + +endif + +config BR2_PACKAGE_PROVIDES_HOST_GETTEXT + default "host-gettext-gnu" if BR2_SYSTEM_ENABLE_NLS diff --git a/package/gettext-gnu/gettext-gnu.hash b/package/gettext-gnu/gettext-gnu.hash new file mode 100644 index 00000000..7c649843 --- /dev/null +++ b/package/gettext-gnu/gettext-gnu.hash @@ -0,0 +1,5 @@ +# Please keep in sync with package/gettext-tiny/gettext-tiny.hash +# Locally calculated +sha256 29217f1816ee2e777fa9a01f9956a14139c0c23cc1b20368f06b2888e8a34116 gettext-0.22.4.tar.xz +sha256 e79e9c8a0c85d735ff98185918ec94ed7d175efc377012787aebcf3b80f0d90b COPYING +sha256 3fe5361f24b7c49ba12911c08f5a33f9cb18871d95d9fb881f5b8a4793e04288 gettext-runtime/intl/COPYING.LIB diff --git a/package/gettext-gnu/gettext-gnu.mk b/package/gettext-gnu/gettext-gnu.mk new file mode 100644 index 00000000..b7d0cf21 --- /dev/null +++ b/package/gettext-gnu/gettext-gnu.mk @@ -0,0 +1,94 @@ +################################################################################ +# +# gettext-gnu +# +################################################################################ + +# Please keep in sync with GETTEXT_TINY_ARCHIVE_VERSION in +# gettext-tiny/gettext-tiny.mk +GETTEXT_GNU_VERSION = 0.22.4 +GETTEXT_GNU_SITE = $(BR2_GNU_MIRROR)/gettext +GETTEXT_GNU_SOURCE = gettext-$(GETTEXT_GNU_VERSION).tar.xz +GETTEXT_GNU_INSTALL_STAGING = YES +GETTEXT_GNU_LICENSE = LGPL-2.1+ (libintl), GPL-3.0+ (the rest) +GETTEXT_GNU_LICENSE_FILES = COPYING gettext-runtime/intl/COPYING.LIB +GETTEXT_GNU_CPE_ID_VENDOR = gnu +GETTEXT_GNU_CPE_ID_PRODUCT = gettext +GETTEXT_GNU_PROVIDES = gettext +GETTEXT_GNU_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv) + +# Avoid using the bundled subset of libxml2 +HOST_GETTEXT_GNU_DEPENDENCIES = host-libxml2 + +GETTEXT_GNU_CONF_OPTS += \ + --disable-libasprintf \ + --disable-acl \ + --disable-openmp \ + --disable-rpath \ + --disable-java \ + --disable-native-java \ + --disable-csharp \ + --disable-relocatable \ + --without-emacs + +HOST_GETTEXT_GNU_CONF_OPTS = \ + --disable-libasprintf \ + --disable-acl \ + --disable-openmp \ + --disable-rpath \ + --disable-java \ + --disable-native-java \ + --disable-csharp \ + --disable-relocatable \ + --without-emacs + +# Force the build of libintl, even if the C library provides a stub +# gettext implementation +ifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y) +GETTEXT_GNU_CONF_OPTS += --with-included-gettext +else +GETTEXT_GNU_CONF_OPTS += --without-included-gettext +endif + +# For the target version, we only need the runtime. +GETTEXT_GNU_SUBDIR = gettext-runtime +# For the host variant, we only need the tools, but those need the +# runtime, so it is much simpler to build the whole package. _SUBDIR +# for the host is inherited from the target if not set or empty, so +# we need to explicitly set it to build the whole package. +HOST_GETTEXT_GNU_SUBDIR = . + +# Disable the build of documentation and examples of gettext-tools, +# and the build of documentation and tests of gettext-runtime. +define HOST_GETTEXT_GNU_DISABLE_UNNEEDED + $(SED) '/^SUBDIRS/s/ doc //;/^SUBDIRS/s/examples$$//' $(@D)/gettext-tools/Makefile.in + $(SED) '/^SUBDIRS/s/ doc //;/^SUBDIRS/s/tests$$//' $(@D)/gettext-runtime/Makefile.in +endef + +GETTEXT_GNU_POST_PATCH_HOOKS += HOST_GETTEXT_GNU_DISABLE_UNNEEDED +HOST_GETTEXT_GNU_POST_PATCH_HOOKS += HOST_GETTEXT_GNU_DISABLE_UNNEEDED + +define GETTEXT_GNU_REMOVE_UNNEEDED + $(RM) -rf $(TARGET_DIR)/usr/share/gettext/ABOUT-NLS + rmdir --ignore-fail-on-non-empty $(TARGET_DIR)/usr/share/gettext +endef + +GETTEXT_GNU_POST_INSTALL_TARGET_HOOKS += GETTEXT_GNU_REMOVE_UNNEEDED + +# Force build with NLS support, otherwise libintl is not built +# This is needed because some packages (eg. libglib2) requires +# locales, but do not properly depend on BR2_ENABLE_LOCALE, and +# instead select BR2_PACKAGE_GETTEXT_GNU. Those packages need to be +# fixed before we can remove the following 3 lines... :-( +ifeq ($(BR2_ENABLE_LOCALE),) +GETTEXT_GNU_CONF_OPTS += --enable-nls +endif + +# Disable interactive confirmation in host gettextize for package fixups +define HOST_GETTEXT_GNU_GETTEXTIZE_CONFIRMATION + $(SED) '/read dummy/d' $(HOST_DIR)/bin/gettextize +endef +HOST_GETTEXT_GNU_POST_INSTALL_HOOKS += HOST_GETTEXT_GNU_GETTEXTIZE_CONFIRMATION + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/gettext-tiny/Config.in b/package/gettext-tiny/Config.in new file mode 100644 index 00000000..6f91a00b --- /dev/null +++ b/package/gettext-tiny/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_GETTEXT_TINY + bool + select BR2_PACKAGE_HAS_GETTEXT + help + Stub and/or lightweight replacements of the gnu gettext + suite; because the GNU one takes ages to compile. + + https://github.com/sabotage-linux/gettext-tiny + +if BR2_PACKAGE_GETTEXT_TINY + +config BR2_PACKAGE_PROVIDES_GETTEXT + default "gettext-tiny" + +endif + +config BR2_PACKAGE_PROVIDES_HOST_GETTEXT + default "host-gettext-tiny" if !BR2_SYSTEM_ENABLE_NLS diff --git a/package/gettext-tiny/gettext-tiny.hash b/package/gettext-tiny/gettext-tiny.hash new file mode 100644 index 00000000..f7ed50b4 --- /dev/null +++ b/package/gettext-tiny/gettext-tiny.hash @@ -0,0 +1,6 @@ +# Locally Computed: +sha256 29cc165e27e83d2bb3760118c2368eadab550830d962d758e51bd36eb860f383 gettext-tiny-0.3.2.tar.gz +sha256 4c938aa3d8fa3c184bba5e87a8a2febc89560627c9d0567536879e3eca1a7b4f LICENSE +sha256 e79e9c8a0c85d735ff98185918ec94ed7d175efc377012787aebcf3b80f0d90b extra/COPYING +# Locally Computed: +sha256 29217f1816ee2e777fa9a01f9956a14139c0c23cc1b20368f06b2888e8a34116 gettext-0.22.4.tar.xz diff --git a/package/gettext-tiny/gettext-tiny.mk b/package/gettext-tiny/gettext-tiny.mk new file mode 100644 index 00000000..3fe8a781 --- /dev/null +++ b/package/gettext-tiny/gettext-tiny.mk @@ -0,0 +1,108 @@ +################################################################################ +# +# gettext-tiny +# +################################################################################ + +GETTEXT_TINY_VERSION = 0.3.2 +GETTEXT_TINY_SITE = $(call github,sabotage-linux,gettext-tiny,v$(GETTEXT_TINY_VERSION)) +GETTEXT_TINY_LICENSE = MIT, GPL-3.0+ (extra gettext) +GETTEXT_TINY_INSTALL_STAGING = YES +GETTEXT_TINY_LICENSE_FILES = LICENSE +HOST_GETTEXT_TINY_LICENSE_FILES = LICENSE extra/COPYING + +GETTEXT_TINY_PROVIDES = gettext + +# needed for gettextize +# Please keep in sync with package/gettext-gnu/gettext-gnu.mk +GETTEXT_TINY_ARCHIVE_VERSION = 0.22.4 + +GETTEXT_TINY_EXTRA_GETTEXT_FILES = \ + gettext-tools/misc/gettextize.in \ + gettext-tools/po/Makevars.template \ + gettext-runtime/po/boldquot.sed \ + gettext-runtime/po/en@boldquot.header \ + gettext-runtime/po/en@quot.header \ + gettext-runtime/po/insert-header.sin \ + gettext-runtime/po/quot.sed \ + gettext-runtime/po/remove-potcdate.sin \ + gettext-runtime/po/Rules-quot \ + gettext-runtime/po/Makefile.in.in \ + COPYING + +HOST_GETTEXT_TINY_EXTRA_DOWNLOADS = $(GETTEXT_GNU_SITE)/$(GETTEXT_GNU_SOURCE) + +define HOST_GETTEXT_TINY_EXTRACT_GNU_GETTEXT + mkdir -p $(@D)/gettext-gnu + $(call suitable-extractor,$(GETTEXT_GNU_SOURCE)) \ + $(GETTEXT_TINY_DL_DIR)/$(GETTEXT_GNU_SOURCE) | \ + $(TAR) --strip-components=1 -C $(@D)/gettext-gnu $(TAR_OPTIONS) - +endef +HOST_GETTEXT_TINY_POST_EXTRACT_HOOKS += HOST_GETTEXT_TINY_EXTRACT_GNU_GETTEXT + +define HOST_GETTEXT_TINY_COPY_EXTRA_FILES + $(foreach f,$(GETTEXT_TINY_EXTRA_GETTEXT_FILES),\ + $(INSTALL) -D -m 0644 $(@D)/gettext-gnu/$(f) $(@D)/extra/$(notdir $(f)) + ) + $(INSTALL) -D -m 0755 $(@D)/gettext-gnu/build-aux/config.rpath \ + $(@D)/build-aux/config.rpath +endef +HOST_GETTEXT_TINY_POST_PATCH_HOOKS += HOST_GETTEXT_TINY_COPY_EXTRA_FILES + +define HOST_GETTEXT_TINY_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) \ + $(HOST_CONFIGURE_OPTS) \ + prefix=$(HOST_DIR) \ + CFLAGS="$(HOST_CFLAGS) -fPIC" \ + LIBINTL=NONE + + cp $(@D)/extra/gettextize.in $(@D)/gettextize + + $(SED) 's,@PACKAGE@,gettext-tools,g;' $(@D)/gettextize + $(SED) 's,@VERSION@,$(GETTEXT_GNU_VERSION),g;' $(@D)/gettextize + $(SED) 's,@ARCHIVE_VERSION@,$(GETTEXT_TINY_ARCHIVE_VERSION),' $(@D)/gettextize + $(SED) 's,@prefix@,$(HOST_DIR),g;' $(@D)/gettextize + $(SED) 's,@datarootdir@,$${prefix}/share,g;' $(@D)/gettextize + $(SED) 's,@datadir@,$${prefix}/share,g;' $(@D)/gettextize + $(SED) 's,@PATH_SEPARATOR@,:,g;' $(@D)/gettextize + $(SED) 's,@RELOCATABLE@,no,g;' $(@D)/gettextize + $(SED) 's,@exec_prefix@,$${prefix},g;' $(@D)/gettextize + $(SED) 's,@bindir@,$${exec_prefix}/bin,g;' $(@D)/gettextize +endef + +define HOST_GETTEXT_TINY_INSTALL_CMDS + $(Q)mkdir -p $(HOST_DIR)/share/gettext-tiny/po + $(Q)mkdir -p $(HOST_DIR)/share/gettext-tiny/m4 + + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) \ + $(HOST_CONFIGURE_OPTS) \ + prefix=$(HOST_DIR) \ + LIBINTL=NONE install + + $(SED) '/read dummy/d' $(@D)/gettextize + + $(INSTALL) -m 0755 -D $(@D)/gettextize $(HOST_DIR)/bin/gettextize + $(INSTALL) -m 0644 -D $(@D)/build-aux/config.rpath $(HOST_DIR)/share/gettext-tiny/config.rpath + $(INSTALL) -m 0644 -D $(@D)/extra/Makefile.in.in $(HOST_DIR)/share/gettext-tiny/po/Makefile.in.in + $(INSTALL) -m 0644 -D $(@D)/extra/boldquot.sed $(HOST_DIR)/share/gettext-tiny/po/boldquot.sed + $(INSTALL) -m 0644 -D $(@D)/extra/en@boldquot.header $(HOST_DIR)/share/gettext-tiny/po/en@boldquot.header + $(INSTALL) -m 0644 -D $(@D)/extra/en@quot.header $(HOST_DIR)/share/gettext-tiny/po/en@quot.header + $(INSTALL) -m 0644 -D $(@D)/extra/insert-header.sin $(HOST_DIR)/share/gettext-tiny/po/insert-header.sin + $(INSTALL) -m 0644 -D $(@D)/extra/quot.sed $(HOST_DIR)/share/gettext-tiny/po/quot.sed + $(INSTALL) -m 0644 -D $(@D)/extra/remove-potcdate.sin $(HOST_DIR)/share/gettext-tiny/po/remove-potcdate.sin + $(INSTALL) -m 0644 -D $(@D)/extra/Rules-quot $(HOST_DIR)/share/gettext-tiny/po/Rules-quot + $(INSTALL) -m 0644 -D $(@D)/extra/Makevars.template $(HOST_DIR)/share/gettext-tiny/po/Makevars.template + + $(Q)touch $(HOST_DIR)/share/gettext-tiny/ABOUT-NLS + + # for gettextize + ln -sf $(HOST_DIR)/share/gettext-tiny $(HOST_DIR)/share/gettext +endef + +# Install simple echo wrapper for gettext tool +define GETTEXT_TINY_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(GETTEXT_TINY_PKGDIR)/gettext-wrapper $(TARGET_DIR)/usr/bin/gettext +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/gettext-tiny/gettext-wrapper b/package/gettext-tiny/gettext-wrapper new file mode 100644 index 00000000..11424824 --- /dev/null +++ b/package/gettext-tiny/gettext-wrapper @@ -0,0 +1,24 @@ +#!/bin/sh +# +# Thanks to "Yann E. MORIN" +# for this gettext replacement. + +while [ ${#} -ne 0 ]; do + case "${1}" in + (-h) printf "no help\n"; return 0;; + (-V) printf "0.0.0\n"; return 0;; + (-d|--domain) shift 2;; + (-d*|--domain=*) shift 1;; + (-e|-E|-n) shift 1;; + (-s) shift 1;; # Ignore? + (-*) printf "invalid option '%s'\n" "${1}" >&2; return 1;; + (*) break;; + esac +done + +case ${#} in + (0) printf "missing arguments\n" >&2; return 1;; + (1) printf "%s" "${1}";; + (2) printf "%s" "${2}";; + (*) printf "too many arguments\n" >&2; return 1;; +esac diff --git a/package/gettext/Config.in b/package/gettext/Config.in new file mode 100644 index 00000000..6d83388c --- /dev/null +++ b/package/gettext/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_GETTEXT + bool "gettext" + select BR2_PACKAGE_GETTEXT_GNU if BR2_SYSTEM_ENABLE_NLS + select BR2_PACKAGE_GETTEXT_TINY if !BR2_SYSTEM_ENABLE_NLS + +config BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL + bool + default y if BR2_SYSTEM_ENABLE_NLS + depends on !BR2_TOOLCHAIN_HAS_FULL_GETTEXT + +config BR2_PACKAGE_HAS_GETTEXT + bool + +config BR2_PACKAGE_PROVIDES_GETTEXT + string + +config BR2_PACKAGE_PROVIDES_HOST_GETTEXT + string diff --git a/package/gettext/gettext.mk b/package/gettext/gettext.mk new file mode 100644 index 00000000..a86e26f6 --- /dev/null +++ b/package/gettext/gettext.mk @@ -0,0 +1,8 @@ +################################################################################ +# +# gettext +# +################################################################################ + +$(eval $(virtual-package)) +$(eval $(host-virtual-package)) diff --git a/package/gflags/Config.in b/package/gflags/Config.in new file mode 100644 index 00000000..ed059445 --- /dev/null +++ b/package/gflags/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_GFLAGS + bool "gflags" + depends on BR2_INSTALL_LIBSTDCPP + help + The gflags package contains a C++ library that implements + commandline flags processing. It includes built-in support for + standard types such as string and the ability to define flags + in the source file in which they are used. + + https://github.com/gflags/gflags + +comment "gflags needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/gflags/gflags.hash b/package/gflags/gflags.hash new file mode 100644 index 00000000..06aeb85d --- /dev/null +++ b/package/gflags/gflags.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 34af2f15cf7367513b352bdcd2493ab14ce43692d2dcd9dfc499492966c64dcf gflags-2.2.2.tar.gz + +# Hash for license file: +sha256 90d1f3701813c3cd65eee2dc736746fe46b465918f3f7d6d31463a2018b33fa5 COPYING.txt diff --git a/package/gflags/gflags.mk b/package/gflags/gflags.mk new file mode 100644 index 00000000..f32869f7 --- /dev/null +++ b/package/gflags/gflags.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# gflags +# +################################################################################ + +GFLAGS_VERSION = 2.2.2 +GFLAGS_SITE = $(call github,gflags,gflags,v$(GFLAGS_VERSION)) +GFLAGS_INSTALL_STAGING = YES +GFLAGS_LICENSE = BSD-3-Clause +GFLAGS_LICENSE_FILES = COPYING.txt + +# Force Release otherwise libraries will be suffixed by _debug which will raise +# unexpected build failures with packages that use gflags (e.g. rocksdb) +GFLAGS_CONF_OPTS = -DCMAKE_BUILD_TYPE=Release + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),) +GFLAGS_CONF_OPTS += -DBUILD_gflags_LIB=OFF \ + -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) -DNO_THREADS" +endif + +$(eval $(cmake-package)) diff --git a/package/ghostscript-fonts/Config.in b/package/ghostscript-fonts/Config.in new file mode 100644 index 00000000..9b9b8d0c --- /dev/null +++ b/package/ghostscript-fonts/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_GHOSTSCRIPT_FONTS + bool "ghostscript-fonts" + help + Fonts and font metrics customarily distributed with + Ghostscript. Currently includes the 35 standard PostScript + fonts and a grab-bag of others. + + http://sourceforge.net/projects/gs-fonts diff --git a/package/ghostscript-fonts/ghostscript-fonts.hash b/package/ghostscript-fonts/ghostscript-fonts.hash new file mode 100644 index 00000000..d1563562 --- /dev/null +++ b/package/ghostscript-fonts/ghostscript-fonts.hash @@ -0,0 +1,5 @@ +# From http://sourceforge.net/projects/gs-fonts/files/gs-fonts/8.11%20%28base%2035%2C%20GPL%29/ +sha1 2a7198e8178b2e7dba87cb5794da515200b568f5 ghostscript-fonts-std-8.11.tar.gz +# Locally computed +sha256 0eb6f356119f2e49b2563210852e17f57f9dcc5755f350a69a46a0d641a0c401 ghostscript-fonts-std-8.11.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/ghostscript-fonts/ghostscript-fonts.mk b/package/ghostscript-fonts/ghostscript-fonts.mk new file mode 100644 index 00000000..156eb4c3 --- /dev/null +++ b/package/ghostscript-fonts/ghostscript-fonts.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# ghostscript-fonts +# +################################################################################ + +GHOSTSCRIPT_FONTS_VERSION = 8.11 +GHOSTSCRIPT_FONTS_SITE = http://downloads.sourceforge.net/project/gs-fonts/gs-fonts/8.11%20%28base%2035%2C%20GPL%29 +GHOSTSCRIPT_FONTS_SOURCE = ghostscript-fonts-std-$(GHOSTSCRIPT_FONTS_VERSION).tar.gz +GHOSTSCRIPT_FONTS_LICENSE = GPL-2.0 +GHOSTSCRIPT_FONTS_LICENSE_FILES = COPYING + +GHOSTSCRIPT_FONTS_TARGET_DIR = $(TARGET_DIR)/usr/share/fonts/gs + +define GHOSTSCRIPT_FONTS_INSTALL_TARGET_CMDS + mkdir -p $(GHOSTSCRIPT_FONTS_TARGET_DIR) + $(INSTALL) -m 644 $(@D)/*.afm $(GHOSTSCRIPT_FONTS_TARGET_DIR) + $(INSTALL) -m 644 $(@D)/*.pfb $(GHOSTSCRIPT_FONTS_TARGET_DIR) +endef + +$(eval $(generic-package)) diff --git a/package/ghostscript/Config.in b/package/ghostscript/Config.in new file mode 100644 index 00000000..023ef5f2 --- /dev/null +++ b/package/ghostscript/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_GHOSTSCRIPT + bool "ghostscript" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_GHOSTSCRIPT_FONTS + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LCMS2 + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_TIFF + help + Ghostscript is an interpreter for PostScript and Portable + Document Format (PDF) files. + + http://ghostscript.com diff --git a/package/ghostscript/ghostscript.hash b/package/ghostscript/ghostscript.hash new file mode 100644 index 00000000..ed8e4cf7 --- /dev/null +++ b/package/ghostscript/ghostscript.hash @@ -0,0 +1,5 @@ +# From https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10031/SHA512SUMS +sha512 59e071cd23aed246b51317d3cccd9ccf8e1e84c4ecf9b22fb938e561eff42cec61915b0bdd96a313a3ea27750579c54ca0d0862b65edd306a621731c0063ffd3 ghostscript-10.03.1.tar.xz + +# Hash for license file: +sha256 8ce064f423b7c24a011b6ebf9431b8bf9861a5255e47c84bfb23fc526d030a8b LICENSE diff --git a/package/ghostscript/ghostscript.mk b/package/ghostscript/ghostscript.mk new file mode 100644 index 00000000..80e2543d --- /dev/null +++ b/package/ghostscript/ghostscript.mk @@ -0,0 +1,99 @@ +################################################################################ +# +# ghostscript +# +################################################################################ + +GHOSTSCRIPT_VERSION = 10.03.1 +GHOSTSCRIPT_SOURCE = ghostscript-$(GHOSTSCRIPT_VERSION).tar.xz +GHOSTSCRIPT_SITE = https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs$(subst .,,$(GHOSTSCRIPT_VERSION)) +GHOSTSCRIPT_LICENSE = AGPL-3.0 +GHOSTSCRIPT_LICENSE_FILES = LICENSE +GHOSTSCRIPT_CPE_ID_VENDOR = artifex +GHOSTSCRIPT_DEPENDENCIES = \ + host-lcms2 \ + host-libjpeg \ + host-pkgconf \ + host-zlib \ + fontconfig \ + ghostscript-fonts \ + jpeg \ + lcms2 \ + libpng \ + tiff + +# Ghostscript includes (old) copies of several libraries, delete them. +# Inspired by linuxfromscratch: +# http://www.linuxfromscratch.org/blfs/view/svn/pst/gs.html +define GHOSTSCRIPT_REMOVE_LIBS + rm -rf $(@D)/freetype $(@D)/ijs $(@D)/jbig2dec $(@D)/jpeg \ + $(@D)/lcms2mt $(@D)/libpng $(@D)/openjpeg $(@D)/tiff \ + $(@D)/zlib +endef +GHOSTSCRIPT_POST_PATCH_HOOKS += GHOSTSCRIPT_REMOVE_LIBS + +GHOSTSCRIPT_CONF_ENV = \ + CCAUX="$(HOSTCC)" \ + CFLAGSAUX="$(HOST_CFLAGS) $(HOST_LDFLAGS)" \ + PKGCONFIG="$(PKG_CONFIG_HOST_BINARY)" + +GHOSTSCRIPT_CONF_OPTS = \ + --disable-compile-inits \ + --enable-fontconfig \ + --with-fontpath=/usr/share/fonts \ + --enable-freetype \ + --disable-gtk \ + --without-libpaper \ + --with-system-libtiff + +ifeq ($(BR2_PACKAGE_JBIG2DEC),y) +GHOSTSCRIPT_DEPENDENCIES += jbig2dec +GHOSTSCRIPT_CONF_OPTS += --with-jbig2dec +else +GHOSTSCRIPT_CONF_OPTS += --without-jbig2dec +endif + +ifeq ($(BR2_PACKAGE_LIBIDN),y) +GHOSTSCRIPT_DEPENDENCIES += libidn +GHOSTSCRIPT_CONF_OPTS += --with-libidn +else +GHOSTSCRIPT_CONF_OPTS += --without-libidn +endif + +ifeq ($(BR2_PACKAGE_OPENJPEG),y) +GHOSTSCRIPT_DEPENDENCIES += openjpeg +GHOSTSCRIPT_CONF_OPTS += --enable-openjpeg +else +GHOSTSCRIPT_CONF_OPTS += --disable-openjpeg +endif + +ifeq ($(BR2_PACKAGE_OPENJPEG)$(BR2_PACKAGE_JBIG2DEC),yy) +# Dependencies already handle on per-package basis above, +# but duplicated here for consistency. +GHOSTSCRIPT_DEPENDENCIES += openjpeg jbig2dec +GHOSTSCRIPT_CONF_OPTS += --with-pdf +else +GHOSTSCRIPT_CONF_OPTS += --without-pdf +endif + +ifeq ($(BR2_PACKAGE_CUPS),y) +GHOSTSCRIPT_DEPENDENCIES += cups +GHOSTSCRIPT_CONF_OPTS += \ + CUPSCONFIG=$(STAGING_DIR)/usr/bin/cups-config \ + --enable-cups +else +GHOSTSCRIPT_CONF_OPTS += --disable-cups +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) +GHOSTSCRIPT_DEPENDENCIES += xlib_libX11 +GHOSTSCRIPT_CONF_OPTS += --with-x +else +GHOSTSCRIPT_CONF_OPTS += --without-x +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),) +GHOSTSCRIPT_CONF_OPTS += --without-tesseract +endif + +$(eval $(autotools-package)) diff --git a/package/giblib/0001-fix-imlib2-detection.patch b/package/giblib/0001-fix-imlib2-detection.patch new file mode 100644 index 00000000..23231079 --- /dev/null +++ b/package/giblib/0001-fix-imlib2-detection.patch @@ -0,0 +1,127 @@ +configure.ac + Makefile.am: fix the imlib2 detection + +Although imlib2 is correctly checked for, the variables used to get +the CFLAGS and LIBS are wrong (perhaps a remnant of the pre-imlib2 +era, when giblib was using imlib). + +Signed-off-by: "Yann E. MORIN" + +diff --git a/configure.ac b/configure.ac +index 6807d86..c8874f0 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -18,16 +18,10 @@ AM_MAINTAINER_MODE + AM_WITH_DMALLOC + + AC_PATH_GENERIC(imlib2, 1.0.0, [ +- AC_SUBST(IMLIB_LIBS) +- AC_SUBST(IMLIB_CFLAGS) ], ++ AC_SUBST(IMLIB2_LIBS) ++ AC_SUBST(IMLIB2_CFLAGS) ], + AC_MSG_ERROR(Cannot find imlib2: Is imlib2-config in the path?) ) + +-dnl the above doesn't work for some reason :/ +-IMLIB_LIBS=`imlib2-config --libs` +-IMLIB_CFLAGS=`imlib2-config --cflags` +-AC_SUBST(IMLIB_LIBS) +-AC_SUBST(IMLIB_CFLAGS) +- + LIBS="$LIBS -lm" + CFLAGS="$CFLAGS -Wall" + +@@ -48,7 +42,7 @@ $PACKAGE $VERSION + Configuration: + -------------- + +-Imlib2 libs: $IMLIB_LIBS +-Imlib2 cflags: $IMLIB_CFLAGS ++Imlib2 libs: $IMLIB2_LIBS ++Imlib2 cflags: $IMLIB2_CFLAGS + CFLAGS: $CFLAGS + " +diff --git a/configure.in b/configure.in +index 432cb16..6999095 100644 +--- a/configure.in ++++ b/configure.in +@@ -17,16 +17,10 @@ AM_MAINTAINER_MODE + AM_WITH_DMALLOC + + AC_PATH_GENERIC(imlib2, 1.0.0, [ +- AC_SUBST(IMLIB_LIBS) +- AC_SUBST(IMLIB_CFLAGS) ], ++ AC_SUBST(IMLIB2_LIBS) ++ AC_SUBST(IMLIB2_CFLAGS) ], + AC_MSG_ERROR(Cannot find imlib2: Is imlib2-config in the path?) ) + +-dnl the above doesn't work for some reason :/ +-IMLIB_LIBS=`imlib2-config --libs` +-IMLIB_CFLAGS=`imlib2-config --cflags` +-AC_SUBST(IMLIB_LIBS) +-AC_SUBST(IMLIB_CFLAGS) +- + LIBS="$LIBS -lm" + CFLAGS="$CFLAGS -Wall" + +@@ -45,7 +39,7 @@ $PACKAGE $VERSION + Configuration: + -------------- + +-Imlib2 libs: $IMLIB_LIBS +-Imlib2 cflags: $IMLIB_CFLAGS ++Imlib2 libs: $IMLIB2_LIBS ++Imlib2 cflags: $IMLIB2_CFLAGS + CFLAGS: $CFLAGS + " +diff --git a/giblib-config.in b/giblib-config.in +index f3a7db6..cef1620 100644 +--- a/giblib-config.in ++++ b/giblib-config.in +@@ -42,11 +42,11 @@ while test $# -gt 0; do + if test @includedir@ != /usr/include ; then + includes=-I@includedir@ + fi +- echo $includes -I$prefix/include/giblib @IMLIB_CFLAGS@ ++ echo $includes -I$prefix/include/giblib @IMLIB2_CFLAGS@ + ;; + --libs) + libdirs=-L@libdir@ +- echo $libdirs -lgiblib @LDFLAGS@ @IMLIB_LIBS@ ++ echo $libdirs -lgiblib @LDFLAGS@ @IMLIB2_LIBS@ + ;; + *) + echo "${usage}" 1>&2 +diff --git a/giblib.pc.in b/giblib.pc.in +index df520ae..783e6e1 100644 +--- a/giblib.pc.in ++++ b/giblib.pc.in +@@ -6,6 +6,6 @@ includedir=@includedir@ + Name: giblib + Description: wrapper library for imlib2, and other stuff + Version: @VERSION@ +-Libs: -L${libdir} -lgiblib @LDFLAGS@ @IMLIB_LIBS@ +-Cflags: -I${includedir} -I${includedir}/giblib @IMLIB_CFLAGS@ ++Libs: -L${libdir} -lgiblib @LDFLAGS@ @IMLIB2_LIBS@ ++Cflags: -I${includedir} -I${includedir}/giblib @IMLIB2_CFLAGS@ + +diff --git a/giblib/Makefile.am b/giblib/Makefile.am +index d1edc09..49d8ac4 100644 +--- a/giblib/Makefile.am ++++ b/giblib/Makefile.am +@@ -3,7 +3,7 @@ MAINTAINERCLEANFILES = Makefile.in + + INCLUDES = \ + -I. -I$(top_srcdir) \ +--DPREFIX=\""$(prefix)"\" @IMLIB_CFLAGS@ ++-DPREFIX=\""$(prefix)"\" @IMLIB2_CFLAGS@ + + lib_LTLIBRARIES = libgiblib.la + +@@ -24,7 +24,7 @@ libgiblib_la_SOURCES = \ + gib_utils.c gib_utils.h \ + gib_queue.c gib_queue.h + +-libgiblib_la_LIBADD = @IMLIB_LIBS@ ++libgiblib_la_LIBADD = @IMLIB2_LIBS@ + libgiblib_la_DEPENDENCIES = giblib_config.h + libgiblib_la_LDFLAGS = -version-info 1:6:0 + diff --git a/package/giblib/Config.in b/package/giblib/Config.in new file mode 100644 index 00000000..f50271ac --- /dev/null +++ b/package/giblib/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_GIBLIB + bool "giblib" + depends on BR2_PACKAGE_XORG7 + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_IMLIB2 + select BR2_PACKAGE_IMLIB2_X + help + Giblib is a simple library which wraps imlib2. + + http://linuxbrit.co.uk/giblib/ + +comment "giblib support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/giblib/giblib.hash b/package/giblib/giblib.hash new file mode 100644 index 00000000..0c83a554 --- /dev/null +++ b/package/giblib/giblib.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 176611c4d88d742ea4013991ad54c2f9d2feefbc97a28434c0f48922ebaa8bac giblib-1.2.4.tar.gz +sha256 8601e2dacede853fe325f7fd3a11f93b1753d576db60426f1b0ff4e68f41ff07 COPYING diff --git a/package/giblib/giblib.mk b/package/giblib/giblib.mk new file mode 100644 index 00000000..b0a96200 --- /dev/null +++ b/package/giblib/giblib.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# giblib +# +################################################################################ + +GIBLIB_VERSION = 1.2.4 +GIBLIB_SITE = http://linuxbrit.co.uk/downloads +GIBLIB_INSTALL_STAGING = YES +GIBLIB_DEPENDENCIES = imlib2 +GIBLIB_AUTORECONF = YES +GIBLIB_CONF_OPTS = \ + --with-imlib2-prefix=$(STAGING_DIR)/usr \ + --with-imlib2-exec-prefix=$(STAGING_DIR)/usr +GIBLIB_CONFIG_SCRIPTS = giblib-config +GIBLIB_LICENSE = MIT +GIBLIB_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/giflib/0001-Makefile-add-targets-to-manage-static-building.patch b/package/giflib/0001-Makefile-add-targets-to-manage-static-building.patch new file mode 100644 index 00000000..31d7542e --- /dev/null +++ b/package/giflib/0001-Makefile-add-targets-to-manage-static-building.patch @@ -0,0 +1,73 @@ +From 409af8210f2256eed4d2c73083aa75975f03424b Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 12 Jul 2019 12:20:38 +0200 +Subject: [PATCH] Makefile: add targets to manage static building + +Add static-lib, shared-lib, install-static-lib and install-shared-lib +targets to allow the user to build giflib when dynamic library support +is not available or enable on the toolchain + +Signed-off-by: Fabrice Fontaine +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +Upstream: https://sourceforge.net/p/giflib/code/merge-requests/7 +--- + Makefile | 18 ++++++++++++++---- + 1 file changed, 14 insertions(+), 4 deletions(-) + +diff --git a/Makefile b/Makefile +index 87966a96cd4f..4a93aace54b8 100644 +--- a/Makefile ++++ b/Makefile +@@ -87,13 +87,20 @@ LIBUTILSO = libutil.$(SOEXTENSION) + LIBUTILSOMAJOR = libutil.$(LIBMAJOR).$(SOEXTENSION) + endif + +-all: $(LIBGIFSO) libgif.a $(LIBUTILSO) libutil.a $(UTILS) ++SHARED_LIBS = $(LIBGIFSO) $(LIBUTILSO) ++STATIC_LIBS = libgif.a libutil.a ++ ++all: shared-lib static-lib $(UTILS) + ifeq ($(UNAME), Darwin) + else + $(MAKE) -C doc + endif + +-$(UTILS):: libgif.a libutil.a ++$(UTILS):: $(STATIC_LIBS) ++ ++shared-lib: $(SHARED_LIBS) ++ ++static-lib: $(STATIC_LIBS) + + $(LIBGIFSO): $(OBJECTS) $(HEADERS) + ifeq ($(UNAME), Darwin) +@@ -116,7 +123,7 @@ libutil.a: $(UOBJECTS) $(UHEADERS) + $(AR) rcs libutil.a $(UOBJECTS) + + clean: +- rm -f $(UTILS) $(TARGET) libgetarg.a libgif.a $(LIBGIFSO) libutil.a $(LIBUTILSO) *.o ++ rm -f $(UTILS) $(TARGET) libgetarg.a $(SHARED_LIBS) $(STATIC_LIBS) *.o + rm -f $(LIBGIFSOVER) + rm -f $(LIBGIFSOMAJOR) + rm -fr doc/*.1 *.html doc/staging +@@ -141,12 +148,15 @@ install-bin: $(INSTALLABLE) + install-include: + $(INSTALL) -d "$(DESTDIR)$(INCDIR)" + $(INSTALL) -m 644 gif_lib.h "$(DESTDIR)$(INCDIR)" +-install-lib: ++install-static-lib: + $(INSTALL) -d "$(DESTDIR)$(LIBDIR)" + $(INSTALL) -m 644 libgif.a "$(DESTDIR)$(LIBDIR)/libgif.a" ++install-shared-lib: ++ $(INSTALL) -d "$(DESTDIR)$(LIBDIR)" + $(INSTALL) -m 755 $(LIBGIFSO) "$(DESTDIR)$(LIBDIR)/$(LIBGIFSOVER)" + ln -sf $(LIBGIFSOVER) "$(DESTDIR)$(LIBDIR)/$(LIBGIFSOMAJOR)" + ln -sf $(LIBGIFSOMAJOR) "$(DESTDIR)$(LIBDIR)/$(LIBGIFSO)" ++install-lib: install-static-lib install-shared-lib + install-man: + $(INSTALL) -d "$(DESTDIR)$(MANDIR)/man1" + $(INSTALL) -m 644 $(MANUAL_PAGES) "$(DESTDIR)$(MANDIR)/man1" +-- +2.43.0 + diff --git a/package/giflib/0002-Fix-several-defects-found-by-Coverity-scan.patch b/package/giflib/0002-Fix-several-defects-found-by-Coverity-scan.patch new file mode 100644 index 00000000..77f21b40 --- /dev/null +++ b/package/giflib/0002-Fix-several-defects-found-by-Coverity-scan.patch @@ -0,0 +1,61 @@ +From 7c3bce4add77944e5b479ef5da81ae7fd71a7e95 Mon Sep 17 00:00:00 2001 +From: Sandro Mani +Date: Tue, 5 Dec 2023 16:38:48 -0700 +Subject: [PATCH] Fix several defects found by Coverity scan + +From: giflib-5.2.1-17.fc39.src.rpm +Upstream: Not submitted + +Signed-off-by: Sandro Mani +Signed-off-by: Adam Duskett +[Fabrice: updated for 5.2.2] +Signed-off-by: Fabrice Fontaine +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + gif2rgb.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/gif2rgb.c b/gif2rgb.c +index d51226d65d3d..50c43ae44ee2 100644 +--- a/gif2rgb.c ++++ b/gif2rgb.c +@@ -165,6 +165,8 @@ static void SaveGif(GifByteType *OutputBuffer, int Width, int Height, + /* Open stdout for the output file: */ + if ((GifFile = EGifOpenFileHandle(1, &Error)) == NULL) { + PrintGifError(Error); ++ free(OutputBuffer); ++ GifFreeMapObject(OutputColorMap); + exit(EXIT_FAILURE); + } + +@@ -173,6 +175,8 @@ static void SaveGif(GifByteType *OutputBuffer, int Width, int Height, + EGifPutImageDesc(GifFile, 0, 0, Width, Height, false, NULL) == + GIF_ERROR) { + PrintGifError(Error); ++ free(OutputBuffer); ++ GifFreeMapObject(OutputColorMap); + exit(EXIT_FAILURE); + } + +@@ -182,6 +186,8 @@ static void SaveGif(GifByteType *OutputBuffer, int Width, int Height, + + for (i = 0; i < Height; i++) { + if (EGifPutLine(GifFile, Ptr, Width) == GIF_ERROR) { ++ free(OutputBuffer); ++ GifFreeMapObject(OutputColorMap); + exit(EXIT_FAILURE); + } + GifQprintf("\b\b\b\b%-4d", Height - i - 1); +@@ -191,6 +197,8 @@ static void SaveGif(GifByteType *OutputBuffer, int Width, int Height, + + if (EGifCloseFile(GifFile, &Error) == GIF_ERROR) { + PrintGifError(Error); ++ free(OutputBuffer); ++ GifFreeMapObject(OutputColorMap); + exit(EXIT_FAILURE); + } + } +-- +2.43.0 + diff --git a/package/giflib/Config.in b/package/giflib/Config.in new file mode 100644 index 00000000..fc1f85d0 --- /dev/null +++ b/package/giflib/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_GIFLIB + bool "giflib" + help + giflib is a library for reading and writing gif images. + + http://sourceforge.net/projects/giflib diff --git a/package/giflib/giflib.hash b/package/giflib/giflib.hash new file mode 100644 index 00000000..f11d4f15 --- /dev/null +++ b/package/giflib/giflib.hash @@ -0,0 +1,6 @@ +# From http://sourceforge.net/projects/giflib/files +md5 913dd251492134e235ee3c9a91987a4d giflib-5.2.2.tar.gz +sha1 608ba98d2dd8d03dfa7476f434d57de50a33e10b giflib-5.2.2.tar.gz +# Locally computed +sha256 be7ffbd057cadebe2aa144542fd90c6838c6a083b5e8a9048b8ee3b66b29d5fb giflib-5.2.2.tar.gz +sha256 0c9b7990ecdca88b676db232c226548ac408b279f550d424d996f0d83591dd8e COPYING diff --git a/package/giflib/giflib.mk b/package/giflib/giflib.mk new file mode 100644 index 00000000..f37ec8af --- /dev/null +++ b/package/giflib/giflib.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# giflib +# +################################################################################ + +GIFLIB_VERSION = 5.2.2 +GIFLIB_SITE = http://downloads.sourceforge.net/project/giflib +GIFLIB_INSTALL_STAGING = YES +GIFLIB_LICENSE = MIT +GIFLIB_LICENSE_FILES = COPYING +GIFLIB_CPE_ID_VALID = YES + +ifeq ($(BR2_STATIC_LIBS),y) +GIFLIB_BUILD_LIBS = static-lib +GIFLIB_INSTALL_LIBS = install-static-lib +else ifeq ($(BR2_SHARED_LIBS),y) +GIFLIB_BUILD_LIBS = shared-lib +GIFLIB_INSTALL_LIBS = install-shared-lib +else +GIFLIB_BUILD_LIBS = static-lib shared-lib +GIFLIB_INSTALL_LIBS = install-lib +endif + +define GIFLIB_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(GIFLIB_BUILD_LIBS) +endef + +define HOST_GIFLIB_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) shared-lib +endef + +define GIFLIB_INSTALL_STAGING_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) \ + PREFIX=/usr install-include $(GIFLIB_INSTALL_LIBS) +endef + +define GIFLIB_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) \ + PREFIX=/usr install-include $(GIFLIB_INSTALL_LIBS) +endef + +define HOST_GIFLIB_INSTALL_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(HOST_DIR) \ + PREFIX=/usr install-include install-shared-lib +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/git-crypt/0001-fix-build-with-libressl-3.5.0.patch b/package/git-crypt/0001-fix-build-with-libressl-3.5.0.patch new file mode 100644 index 00000000..7daaf9c8 --- /dev/null +++ b/package/git-crypt/0001-fix-build-with-libressl-3.5.0.patch @@ -0,0 +1,56 @@ +From c21cde9010175e2355df17d4e81fedd6020603f8 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 14 May 2022 00:03:51 +0200 +Subject: [PATCH] fix build with libressl >= 3.5.0 + +Fix the following build failure with libressl >= 3.5.0: + +crypto-openssl-10.cpp:78:18: error: field 'ctx' has incomplete type 'HMAC_CTX' {aka 'hmac_ctx_st'} + 78 | HMAC_CTX ctx; + | ^~~ + +Fixes: + - http://autobuild.buildroot.org/results/98747d470c2ad59280934e160d24bd3fdad1503c + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/AGWA/git-crypt/pull/249] +--- + crypto-openssl-10.cpp | 4 +++- + crypto-openssl-11.cpp | 4 +++- + 2 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/crypto-openssl-10.cpp b/crypto-openssl-10.cpp +index f0f2c53..a7a5d52 100644 +--- a/crypto-openssl-10.cpp ++++ b/crypto-openssl-10.cpp +@@ -29,8 +29,10 @@ + */ + + #include ++#include + +-#if !defined(OPENSSL_API_COMPAT) ++#if !defined(OPENSSL_API_COMPAT) && \ ++ !(defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x30500000L) + + #include "crypto.hpp" + #include "key.hpp" +diff --git a/crypto-openssl-11.cpp b/crypto-openssl-11.cpp +index adf03bb..32c2483 100644 +--- a/crypto-openssl-11.cpp ++++ b/crypto-openssl-11.cpp +@@ -29,8 +29,10 @@ + */ + + #include ++#include + +-#if defined(OPENSSL_API_COMPAT) ++#if defined(OPENSSL_API_COMPAT) || \ ++ (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x30500000L) + + #include "crypto.hpp" + #include "key.hpp" +-- +2.35.1 + diff --git a/package/git-crypt/Config.in b/package/git-crypt/Config.in new file mode 100644 index 00000000..9a270b8f --- /dev/null +++ b/package/git-crypt/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_GIT_CRYPT + bool "git-crypt" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr + depends on BR2_USE_MMU # git + select BR2_PACKAGE_GIT # runtime + select BR2_PACKAGE_OPENSSL + help + git-crypt enables transparent encryption and decryption of + files in a git repository. + + https://www.agwa.name/projects/git-crypt/ + +comment "git-crypt needs a toolchain w/ C++, gcc >= 4.9" + depends on !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_USE_MMU + +comment "git-crypt needs a toolchain not affected by GCC bug 64735" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/git-crypt/git-crypt.hash b/package/git-crypt/git-crypt.hash new file mode 100644 index 00000000..5957a027 --- /dev/null +++ b/package/git-crypt/git-crypt.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +sha256 50f100816a636a682404703b6c23a459e4d30248b2886a5cf571b0d52527c7d8 git-crypt-0.7.0.tar.gz +# Locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING +sha256 506657e7a381165550e6c33e35b3b03bbef3e1feb68ba5529e264bd75ed2dc64 parse_options.hpp diff --git a/package/git-crypt/git-crypt.mk b/package/git-crypt/git-crypt.mk new file mode 100644 index 00000000..82671b03 --- /dev/null +++ b/package/git-crypt/git-crypt.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# git-crypt +# +################################################################################ + +GIT_CRYPT_VERSION = 0.7.0 +GIT_CRYPT_SITE = https://www.agwa.name/projects/git-crypt/downloads +GIT_CRYPT_DEPENDENCIES = host-pkgconf openssl +GIT_CRYPT_LICENSE = GPL-3.0+, MIT +GIT_CRYPT_LICENSE_FILES = COPYING parse_options.hpp + +GIT_CRYPT_LIBS = `$(PKG_CONFIG_HOST_BINARY) --libs openssl` + +define GIT_CRYPT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \ + LDFLAGS="$(TARGET_LDFLAGS) $(GIT_CRYPT_LIBS)" \ + CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11 -DOPENSSL_API_COMPAT=0x30000000L" \ + PREFIX=/usr +endef + +define GIT_CRYPT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) \ + PREFIX=/usr install +endef + +$(eval $(generic-package)) diff --git a/package/git/Config.in b/package/git/Config.in new file mode 100644 index 00000000..d53921d7 --- /dev/null +++ b/package/git/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_GIT + bool "git" + depends on BR2_USE_MMU # uses fork() + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Git is a free and open source distributed version control + system designed to handle everything from small to very large + projects. + + http://git-scm.com diff --git a/package/git/git.hash b/package/git/git.hash new file mode 100644 index 00000000..6b34d145 --- /dev/null +++ b/package/git/git.hash @@ -0,0 +1,5 @@ +# From: https://www.kernel.org/pub/software/scm/git/sha256sums.asc +sha256 7f123462a28b7ca3ebe2607485f7168554c2b10dfc155c7ec46300666ac27f95 git-2.46.0.tar.xz +# Locally calculated +sha256 5b2198d1645f767585e8a88ac0499b04472164c0d2da22e75ecf97ef443ab32e COPYING +sha256 1922f45d2c49e390032c9c0ba6d7cac904087f7cec51af30c2b2ad022ce0e76a LGPL-2.1 diff --git a/package/git/git.mk b/package/git/git.mk new file mode 100644 index 00000000..d0b27d7e --- /dev/null +++ b/package/git/git.mk @@ -0,0 +1,83 @@ +################################################################################ +# +# git +# +################################################################################ + +GIT_VERSION = 2.46.0 +GIT_SOURCE = git-$(GIT_VERSION).tar.xz +GIT_SITE = $(BR2_KERNEL_MIRROR)/software/scm/git +GIT_LICENSE = GPL-2.0, LGPL-2.1+ +GIT_LICENSE_FILES = COPYING LGPL-2.1 +GIT_CPE_ID_VENDOR = git-scm +GIT_SELINUX_MODULES = apache git xdg +GIT_DEPENDENCIES = zlib $(TARGET_NLS_DEPENDENCIES) + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +GIT_DEPENDENCIES += host-pkgconf openssl +GIT_CONF_OPTS += --with-openssl +GIT_MAKE_OPTS += LIB_4_CRYPTO="`$(PKG_CONFIG_HOST_BINARY) --libs libssl libcrypto`" +else +GIT_CONF_OPTS += --without-openssl +endif + +ifeq ($(BR2_PACKAGE_PCRE2),y) +GIT_DEPENDENCIES += pcre2 +GIT_CONF_OPTS += --with-libpcre2 +else +GIT_CONF_OPTS += --without-libpcre2 +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +GIT_DEPENDENCIES += libcurl +GIT_CONF_OPTS += --with-curl +GIT_CONF_ENV += \ + ac_cv_prog_CURL_CONFIG=$(STAGING_DIR)/usr/bin/$(LIBCURL_CONFIG_SCRIPTS) +else +GIT_CONF_OPTS += --without-curl +endif + +ifeq ($(BR2_PACKAGE_EXPAT),y) +GIT_DEPENDENCIES += expat +GIT_CONF_OPTS += --with-expat +else +GIT_CONF_OPTS += --without-expat +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +GIT_DEPENDENCIES += libiconv +GIT_CONF_ENV_LIBS += -liconv +GIT_CONF_OPTS += --with-iconv=$(STAGING_DIR)/usr +GIT_CONF_ENV += ac_cv_iconv_omits_bom=no +else +GIT_CONF_OPTS += --without-iconv +endif + +ifeq ($(BR2_PACKAGE_TCL),y) +GIT_DEPENDENCIES += tcl +GIT_CONF_OPTS += --with-tcltk +else +GIT_CONF_OPTS += --without-tcltk +endif + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),) +GIT_MAKE_OPTS += NO_GETTEXT=1 +endif + +GIT_CFLAGS = $(TARGET_CFLAGS) + +ifneq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180)$(BR2_TOOLCHAIN_HAS_GCC_BUG_93847),) +GIT_CFLAGS += -O0 +endif + +GIT_CONF_OPTS += CFLAGS="$(GIT_CFLAGS)" + +GIT_INSTALL_TARGET_OPTS = $(GIT_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install + +# assume yes for these tests, configure will bail out otherwise +# saying error: cannot run test program while cross compiling +GIT_CONF_ENV += \ + ac_cv_fread_reads_directories=yes \ + ac_cv_snprintf_returns_bogus=yes LIBS='$(GIT_CONF_ENV_LIBS)' + +$(eval $(autotools-package)) diff --git a/package/gitlab-runner/Config.in b/package/gitlab-runner/Config.in new file mode 100644 index 00000000..cfe8c941 --- /dev/null +++ b/package/gitlab-runner/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_GITLAB_RUNNER + bool "gitlab-runner" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # git + depends on BR2_USE_WCHAR # tar + select BR2_PACKAGE_BASH # runtime, shells/bash.go probably want to support bashism. + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash + select BR2_PACKAGE_CA_CERTIFICATES # runtime + select BR2_PACKAGE_GIT # runtime + select BR2_PACKAGE_HOST_GO + select BR2_PACKAGE_LIBCURL # runtime + select BR2_PACKAGE_LIBCURL_CURL # runtime + select BR2_PACKAGE_LIBCURL_FORCE_TLS # runtime + select BR2_PACKAGE_OPENSSL # runtime + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL # runtime + select BR2_PACKAGE_LIBOPENSSL_BIN # runtime + select BR2_PACKAGE_TAR # runtime + help + GitLab Runner is the open source project that is used to run + your jobs and send the results back to GitLab. It is used in + conjunction with GitLab CI/CD, the open-source continuous + integration service included with GitLab that coordinates the + jobs. + + https://docs.gitlab.com/runner/ + +comment "gitlab-runner needs a toolchain w/ threads" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/gitlab-runner/S95gitlab-runner b/package/gitlab-runner/S95gitlab-runner new file mode 100644 index 00000000..739adf17 --- /dev/null +++ b/package/gitlab-runner/S95gitlab-runner @@ -0,0 +1,64 @@ +#!/bin/sh + +DAEMON="gitlab-runner" +PIDFILE="/var/run/$DAEMON.pid" + +DAEMON_ARGS="run --syslog --user gitlab-runner -d /var/lib/gitlab-runner -c /etc/gitlab-runner/config.toml" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -m -b -p "$PIDFILE" -x "/usr/bin/$DAEMON" \ + -- $DAEMON_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" -u "$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +reload() { + printf 'Reloading %s: ' "$DAEMON" + start-stop-daemon -K -s HUP -q -p "$PIDFILE" -u "$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/gitlab-runner/gitlab-runner.hash b/package/gitlab-runner/gitlab-runner.hash new file mode 100644 index 00000000..45140563 --- /dev/null +++ b/package/gitlab-runner/gitlab-runner.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 d09aba81c6bb4a55783a45c7bc5d686aa6084e25e27920d2a1004cc4a63f6db7 gitlab-runner-15.5.0-go2.tar.gz +sha256 0ae968b7ddd25da0209c3c6594aac1ac74ddf90385940b02b420463e2e0734de LICENSE diff --git a/package/gitlab-runner/gitlab-runner.mk b/package/gitlab-runner/gitlab-runner.mk new file mode 100644 index 00000000..ecd109bf --- /dev/null +++ b/package/gitlab-runner/gitlab-runner.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# gitlab-runner +# +################################################################################ + +GITLAB_RUNNER_VERSION = 15.5.0 +GITLAB_RUNNER_SITE = https://gitlab.com/gitlab-org/gitlab-runner/-/archive/v$(GITLAB_RUNNER_VERSION) +GITLAB_RUNNER_LICENSE = MIT +GITLAB_RUNNER_LICENSE_FILES = LICENSE + +GITLAB_RUNNER_LDFLAGS = \ + -X gitlab.com/gitlab-org/gitlab-runner/common.VERSION=$(GITLAB_RUNNER_VERSION) + +define GITLAB_RUNNER_USERS + gitlab-runner -1 gitlab-runner -1 * /var/lib/gitlab-runner /bin/false - Gitlab Runner +endef + +define GITLAB_RUNNER_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/gitlab-runner/S95gitlab-runner \ + $(TARGET_DIR)/etc/init.d/S95gitlab-runner +endef + +define GITLAB_RUNNER_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/var/lib/gitlab-runner + $(INSTALL) -D -m 0644 package/gitlab-runner/gitlab-runner.service \ + $(TARGET_DIR)/usr/lib/systemd/system/gitlab-runner.service +endef + +GITLAB_RUNNER_POST_INSTALL_TARGET_HOOKS += GITLAB_RUNNER_INSTALL_CONFIG + +$(eval $(golang-package)) diff --git a/package/gitlab-runner/gitlab-runner.service b/package/gitlab-runner/gitlab-runner.service new file mode 100644 index 00000000..cba751a3 --- /dev/null +++ b/package/gitlab-runner/gitlab-runner.service @@ -0,0 +1,18 @@ +[Unit] +Description=GitLab Runner +After=network.target +ConditionFileIsExecutable=/usr/bin/gitlab-runner + +[Service] +Environment="DAEMON_ARGS=run --working-directory /var/lib/gitlab-runner --config /etc/gitlab-runner/config.toml --service gitlab-runner --syslog --user gitlab-runner" +EnvironmentFile=-/etc/default/%p +StartLimitInterval=5 +StartLimitBurst=10 +ExecStart=/usr/bin/gitlab-runner $DAEMON_ARGS +ExecReload=/bin/kill -HUP $MAINPID + +Restart=always +RestartSec=120 + +[Install] +WantedBy=multi-user.target diff --git a/package/gkrellm/Config.in b/package/gkrellm/Config.in new file mode 100644 index 00000000..e957c058 --- /dev/null +++ b/package/gkrellm/Config.in @@ -0,0 +1,43 @@ +config BR2_PACKAGE_GKRELLM + bool "gkrellm" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_GKRELLM_SERVER if !BR2_PACKAGE_GKRELLM_CLIENT + select BR2_PACKAGE_LIBGLIB2 + help + GKrellM is a single process stack of system monitors which + supports applying themes to match its appearance to your + window manager, Gtk, or any other theme. + + http://gkrellm.srcbox.net/ + +if BR2_PACKAGE_GKRELLM + +config BR2_PACKAGE_GKRELLM_SERVER + bool "server" + help + Enable gkrellm server. + +config BR2_PACKAGE_GKRELLM_CLIENT + bool "client" + depends on BR2_PACKAGE_XORG7 # libgtk2 + depends on BR2_INSTALL_LIBSTDCPP # libgtk2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libgtk2 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # libgtk2 + select BR2_PACKAGE_LIBGTK2 + select BR2_PACKAGE_XLIB_LIBSM + help + Enable gkrellm client. + +comment "client needs a toolchain w/ C++, gcc >= 4.8" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_PACKAGE_XORG7 + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +endif # BR2_PACKAGE_GKRELLM + +comment "gkrellm needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/gkrellm/gkrellm.hash b/package/gkrellm/gkrellm.hash new file mode 100644 index 00000000..88624c33 --- /dev/null +++ b/package/gkrellm/gkrellm.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 1ee0643ed9ed99f88c1504c89d9ccb20780cf29319c904b68e80a8e7c8678c06 gkrellm-2.3.11.tar.bz2 +sha256 691de85c3c6eeda5b6982c751548575344739ce4b4418d78905e599359f6c435 COPYING +sha256 b81e0c0c3fb2a58f25377388484a1f729abb367f5f2b43e335a6ed3272ce8536 COPYRIGHT diff --git a/package/gkrellm/gkrellm.mk b/package/gkrellm/gkrellm.mk new file mode 100644 index 00000000..27a87be1 --- /dev/null +++ b/package/gkrellm/gkrellm.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# gkrellm +# +################################################################################ + +GKRELLM_VERSION = 2.3.11 +GKRELLM_SITE = http://gkrellm.srcbox.net/releases +GKRELLM_SOURCE = gkrellm-$(GKRELLM_VERSION).tar.bz2 +GKRELLM_LICENSE = GPL-3.0+ +GKRELLM_LICENSE_FILES = COPYING COPYRIGHT +GKRELLM_DEPENDENCIES = host-pkgconf libglib2 $(TARGET_NLS_DEPENDENCIES) +GKRELLM_BUILD_OPTS = \ + STRIP="" \ + SYS_LIBS="$(GKRELLM_SYS_LIBS)" + +GKRELLM_SYS_LIBS = $(TARGET_NLS_LIBS) + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +GKRELLM_SYS_LIBS += -latomic +endif + +ifeq ($(BR2_PACKAGE_LM_SENSORS),y) +GKRELLM_DEPENDENCIES += lm-sensors +else +GKRELLM_BUILD_OPTS += without-libsensors=yes +endif + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +GKRELLM_BUILD_OPTS += enable_nls=1 +else +GKRELLM_BUILD_OPTS += enable_nls=0 +endif + +ifeq ($(BR2_PACKAGE_GKRELLM_SERVER)$(BR2_PACKAGE_GKRELLM_CLIENT),yy) +GKRELLM_BUILD_DIR = $(@D) +else ifeq ($(BR2_PACKAGE_GKRELLM_SERVER),y) +GKRELLM_BUILD_DIR = $(@D)/server +else +GKRELLM_BUILD_DIR = $(@D)/src +endif + +ifeq ($(BR2_PACKAGE_GKRELLM_CLIENT),y) +GKRELLM_DEPENDENCIES += libgtk2 xlib_libSM +GKRELLM_BUILD_OPTS += X11_LIBS="-lX11 -lSM -lICE" +GKRELLM_LICENSE += GPL (base64.c), Public Domain (md5.h, md5c.c) +endif + +define GKRELLM_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) \ + -C $(GKRELLM_BUILD_DIR) $(GKRELLM_BUILD_OPTS) +endef + +define GKRELLM_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) \ + -C $(GKRELLM_BUILD_DIR) $(GKRELLM_BUILD_OPTS) \ + INSTALLROOT=$(TARGET_DIR)/usr install +endef + +$(eval $(generic-package)) diff --git a/package/gli/Config.in b/package/gli/Config.in new file mode 100644 index 00000000..da7ce28b --- /dev/null +++ b/package/gli/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_GLI + bool "gli" + depends on BR2_INSTALL_LIBSTDCPP + help + OpenGL Image (GLI) + + http://gli.g-truc.net + +comment "gli needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/gli/gli.hash b/package/gli/gli.hash new file mode 100644 index 00000000..b6f9317f --- /dev/null +++ b/package/gli/gli.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2f4f67ac4d1673216f03ff37e406bb403689b39a2df3d2efad501448705bbb3f gli-779b99ac6656e4d30c3b24e96e0136a59649a869.tar.gz +sha256 474c5f04064507cf5ac991fc3d4b990e5e34b15705d38d2062f8844c102113cf manual.md diff --git a/package/gli/gli.mk b/package/gli/gli.mk new file mode 100644 index 00000000..a7892094 --- /dev/null +++ b/package/gli/gli.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# gli +# +################################################################################ + +GLI_VERSION = 779b99ac6656e4d30c3b24e96e0136a59649a869 +GLI_SITE = $(call github,g-truc,gli,$(GLI_VERSION)) +GLI_LICENSE = MIT +GLI_LICENSE_FILES = manual.md + +# GLI is a header-only library, it only makes sense +# to have it installed into the staging directory. +GLI_INSTALL_STAGING = YES +GLI_INSTALL_TARGET = NO + +GLI_CONF_OPTS = -DGLI_TEST_ENABLE=OFF + +$(eval $(cmake-package)) diff --git a/package/glib-networking/Config.in b/package/glib-networking/Config.in new file mode 100644 index 00000000..9c5d36af --- /dev/null +++ b/package/glib-networking/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_GLIB_NETWORKING + bool "glib-networking" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_GNUTLS + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL if !BR2_PACKAGE_GNUTLS + select BR2_PACKAGE_P11_KIT if BR2_PACKAGE_GNUTLS + help + Network-related GIO modules for glib. + + https://gitlab.gnome.org/GNOME/glib-networking + +comment "glib-networking 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/package/glib-networking/glib-networking.hash b/package/glib-networking/glib-networking.hash new file mode 100644 index 00000000..72e70ff0 --- /dev/null +++ b/package/glib-networking/glib-networking.hash @@ -0,0 +1,3 @@ +# From https://download.gnome.org/sources/glib-networking/2.76/glib-networking-2.76.0.sha256sum +sha256 149a05a179e629a538be25662aa324b499d7c4549c5151db5373e780a1bf1b9a glib-networking-2.76.0.tar.xz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/glib-networking/glib-networking.mk b/package/glib-networking/glib-networking.mk new file mode 100644 index 00000000..24811716 --- /dev/null +++ b/package/glib-networking/glib-networking.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# glib-networking +# +################################################################################ + +GLIB_NETWORKING_VERSION_MAJOR = 2.76 +GLIB_NETWORKING_VERSION = $(GLIB_NETWORKING_VERSION_MAJOR).0 +GLIB_NETWORKING_SITE = https://download.gnome.org/sources/glib-networking/$(GLIB_NETWORKING_VERSION_MAJOR) +GLIB_NETWORKING_SOURCE = glib-networking-$(GLIB_NETWORKING_VERSION).tar.xz +GLIB_NETWORKING_INSTALL_STAGING = YES +GLIB_NETWORKING_DEPENDENCIES = \ + $(TARGET_NLS_DEPENDENCIES) \ + host-pkgconf \ + libglib2 + +GLIB_NETWORKING_CONF_OPTS = \ + -Dlibproxy=disabled \ + -Dgnome_proxy=disabled + +GLIB_NETWORKING_LICENSE = LGPL-2.0+ +GLIB_NETWORKING_LICENSE_FILES = COPYING +GLIB_NETWORKING_CPE_ID_VENDOR = gnome + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +GLIB_NETWORKING_DEPENDENCIES += gnutls +GLIB_NETWORKING_CONF_OPTS += -Dgnutls=enabled +else +GLIB_NETWORKING_CONF_OPTS += -Dgnutls=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) +GLIB_NETWORKING_DEPENDENCIES += openssl +GLIB_NETWORKING_CONF_OPTS += -Dopenssl=enabled +else +GLIB_NETWORKING_CONF_OPTS += -Dopenssl=disabled +endif + +$(eval $(meson-package)) diff --git a/package/glibc/Config.in b/package/glibc/Config.in new file mode 100644 index 00000000..81c64083 --- /dev/null +++ b/package/glibc/Config.in @@ -0,0 +1,73 @@ +config BR2_PACKAGE_GLIBC_ARCH_SUPPORTS + bool + default y if BR2_arm + default y if BR2_armeb + default y if BR2_aarch64 + default y if BR2_aarch64_be + default y if BR2_i386 + default y if BR2_m68k_m68k + default y if BR2_mips + default y if BR2_mipsel + default y if BR2_mips64 + default y if BR2_mips64el + default y if BR2_or1k + default y if BR2_powerpc + default y if BR2_powerpc64 + default y if BR2_powerpc64le + default y if BR2_riscv + default y if BR2_s390x + default y if BR2_sh + default y if BR2_sparc64 + default y if BR2_x86_64 + default y if BR2_microblaze + default y if BR2_nios2 + default y if BR2_arc && BR2_ARC_ATOMIC_EXT + depends on !BR2_POWERPC_CPU_HAS_SPE + depends on BR2_RISCV_ISA_RVA || !BR2_riscv + depends on BR2_USE_MMU + +config BR2_PACKAGE_GLIBC_SUPPORTS + bool + default y if BR2_PACKAGE_GLIBC_ARCH_SUPPORTS + # Make sure to keep these dependencies in sync with the + # Config.in comments in + # toolchain/toolchain-buildroot/Config.in + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 || !BR2_powerpc64le + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5 || !BR2_MIPS_NAN_2008 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4 || !BR2_RISCV_32 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 || !BR2_RISCV_64 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1 || !BR2_arc + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4 || !BR2_or1k + +if BR2_TOOLCHAIN_BUILDROOT_GLIBC + +comment "Glibc Options" + +config BR2_PACKAGE_GLIBC + bool + default y + select BR2_PACKAGE_LINUX_HEADERS + select BR2_TOOLCHAIN_HAS_SSP if BR2_PACKAGE_HOST_BINUTILS_SUPPORTS_CFI + help + https://www.gnu.org/software/libc/ + +config BR2_PACKAGE_GLIBC_KERNEL_COMPAT + bool "Enable compatibility shims to run on older kernels" + help + Say 'y' here if you plan on running your system on a kernel + older than the version used for the toolchain headers. + + Enabling those compatibility shims may generate a slightly + bigger and slightly slower glibc library. + + The oldest supported kernel version depends on the + architecture. + +config BR2_PACKAGE_GLIBC_UTILS + bool "Install glibc utilities" + help + Enabling this option will compile and install the getconf, + ldconfig, ldd and locale glibc utilities for the target. + +endif # BR2_TOOLCHAIN_BUILDROOT_GLIBC diff --git a/package/glibc/glibc.hash b/package/glibc/glibc.hash new file mode 100644 index 00000000..aaf7848a --- /dev/null +++ b/package/glibc/glibc.hash @@ -0,0 +1,7 @@ +# Locally calculated (fetched from Github) +sha256 2858e8e47c4c0df32b526c56d5590ec939e8178201ee9526bb070999ce4aa1f2 glibc-2.39-74-g198632a05f6c7b9ab67d3331d8caace9ceabb685.tar.gz + +# Hashes for license files +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB +sha256 bba29819a3e938fae92674d6a88533e10605e389da8b51cdcba0a94f6221c5bc LICENSES diff --git a/package/glibc/glibc.mk b/package/glibc/glibc.mk new file mode 100644 index 00000000..db6fa558 --- /dev/null +++ b/package/glibc/glibc.mk @@ -0,0 +1,220 @@ +################################################################################ +# +# glibc +# +################################################################################ + +# Generate version string using: +# git describe --match 'glibc-*' --abbrev=40 origin/release/MAJOR.MINOR/master | cut -d '-' -f 2- +# When updating the version, please also update localedef +GLIBC_VERSION = 2.39-74-g198632a05f6c7b9ab67d3331d8caace9ceabb685 +# Upstream doesn't officially provide an https download link. +# There is one (https://sourceware.org/git/glibc.git) but it's not reliable, +# sometimes the connection times out. So use an unofficial github mirror. +# When updating the version, check it on the official repository; +# *NEVER* decide on a version string by looking at the mirror. +# Then check that the mirror has been synced already (happens once a day.) +GLIBC_SITE = $(call github,bminor,glibc,$(GLIBC_VERSION)) + +GLIBC_LICENSE = GPL-2.0+ (programs), LGPL-2.1+, BSD-3-Clause, MIT (library) +GLIBC_LICENSE_FILES = COPYING COPYING.LIB LICENSES +GLIBC_CPE_ID_VENDOR = gnu + +# Extract the base version (e.g. 2.38) from GLIBC_VERSION in order to +# allow proper matching with the CPE database. +GLIBC_CPE_ID_VERSION = $(word 1, $(subst -,$(space),$(GLIBC_VERSION))) + +# Fixed by glibc-2.39-31-g31da30f23cddd36db29d5b6a1c7619361b271fb4 +GLIBC_IGNORE_CVES += CVE-2024-2961 + +# Fixed by glibc-2.39-35-g1263d583d2e28afb8be53f8d6922f0842036f35d +GLIBC_IGNORE_CVES += CVE-2024-33599 + +# Fixed by glibc-2.39-37-gc99f886de54446cd4447db6b44be93dabbdc2f8b +GLIBC_IGNORE_CVES += CVE-2024-33600 + +# Fixed by glibc-2.39-38-ga9a8d3eebb145779a18d90e3966009a1daa63cd +GLIBC_IGNORE_CVES += CVE-2024-33601 CVE-2024-33602 + +# All these CVEs are considered as not being security issues by +# upstream glibc: +# https://security-tracker.debian.org/tracker/CVE-2010-4756 +# https://security-tracker.debian.org/tracker/CVE-2019-1010022 +# https://security-tracker.debian.org/tracker/CVE-2019-1010023 +# https://security-tracker.debian.org/tracker/CVE-2019-1010024 +# https://security-tracker.debian.org/tracker/CVE-2019-1010025 +GLIBC_IGNORE_CVES += \ + CVE-2010-4756 \ + CVE-2019-1010022 \ + CVE-2019-1010023 \ + CVE-2019-1010024 \ + CVE-2019-1010025 + +# glibc is part of the toolchain so disable the toolchain dependency +GLIBC_ADD_TOOLCHAIN_DEPENDENCY = NO + +# Before glibc is configured, we must have the first stage +# cross-compiler and the kernel headers +GLIBC_DEPENDENCIES = host-gcc-initial linux-headers host-bison host-gawk \ + $(BR2_MAKE_HOST_DEPENDENCY) $(BR2_PYTHON3_HOST_DEPENDENCY) + +GLIBC_SUBDIR = build + +GLIBC_INSTALL_STAGING = YES + +GLIBC_INSTALL_STAGING_OPTS = install_root=$(STAGING_DIR) install + +# Thumb build is broken, build in ARM mode +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +GLIBC_EXTRA_CFLAGS += -marm +endif + +# MIPS64 defaults to n32 so pass the correct -mabi if +# we are using a different ABI. OABI32 is also used +# in MIPS so we pass -mabi=32 in this case as well +# even though it's not strictly necessary. +ifeq ($(BR2_MIPS_NABI64),y) +GLIBC_EXTRA_CFLAGS += -mabi=64 +else ifeq ($(BR2_MIPS_OABI32),y) +GLIBC_EXTRA_CFLAGS += -mabi=32 +endif + +ifeq ($(BR2_ENABLE_DEBUG),y) +GLIBC_EXTRA_CFLAGS += -g +endif + +# glibc explicitly requires compile barriers between files +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_7),y) +GLIBC_EXTRA_CFLAGS += -fno-lto +endif + +# The stubs.h header is not installed by install-headers, but is +# needed for the gcc build. An empty stubs.h will work, as explained +# in http://gcc.gnu.org/ml/gcc/2002-01/msg00900.html. The same trick +# is used by Crosstool-NG. +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_GLIBC),y) +define GLIBC_ADD_MISSING_STUB_H + mkdir -p $(STAGING_DIR)/usr/include/gnu + touch $(STAGING_DIR)/usr/include/gnu/stubs.h +endef +endif + +GLIBC_CONF_ENV = \ + ac_cv_path_BASH_SHELL=/bin/$(if $(BR2_PACKAGE_BASH),bash,sh) \ + libc_cv_forced_unwind=yes \ + libc_cv_ssp=no + +# POSIX shell does not support localization, so remove the corresponding +# syntax from ldd if bash is not selected. +ifeq ($(BR2_PACKAGE_BASH),) +define GLIBC_LDD_NO_BASH + $(SED) 's/$$"/"/g' $(@D)/elf/ldd.bash.in +endef +GLIBC_POST_PATCH_HOOKS += GLIBC_LDD_NO_BASH +endif + +# Override the default library locations of /lib64/ and +# /usr/lib64// for RISC-V. +ifeq ($(BR2_riscv),y) +ifeq ($(BR2_RISCV_64),y) +GLIBC_CONF_ENV += libc_cv_slibdir=/lib64 libc_cv_rtlddir=/lib +else +GLIBC_CONF_ENV += libc_cv_slibdir=/lib32 libc_cv_rtlddir=/lib +endif +endif + +# glibc requires make >= 4.0 since 2.28 release. +# https://www.sourceware.org/ml/libc-alpha/2018-08/msg00003.html +GLIBC_MAKE = $(BR2_MAKE) +GLIBC_CONF_ENV += ac_cv_prog_MAKE="$(BR2_MAKE)" + +ifeq ($(BR2_PACKAGE_GLIBC_KERNEL_COMPAT),) +GLIBC_CONF_OPTS += --enable-kernel=$(call qstrip,$(BR2_TOOLCHAIN_HEADERS_AT_LEAST)) +endif + +# Even though we use the autotools-package infrastructure, we have to +# override the default configure commands for several reasons: +# +# 1. We have to build out-of-tree, but we can't use the same +# 'symbolic link to configure' used with the gcc packages. +# +# 2. We have to execute the configure script with bash and not sh. +# +# Glibc nowadays can be build with optimization flags f.e. -Os + +GLIBC_CFLAGS = $(TARGET_OPTIMIZATION) +# crash in qemu-system-nios2 with -Os +ifeq ($(BR2_nios2),y) +GLIBC_CFLAGS += -O2 +endif + +# glibc can't be built without optimization +ifeq ($(BR2_OPTIMIZE_0),y) +GLIBC_CFLAGS += -O1 +endif + +# glibc can't be built with Optimize for fast +ifeq ($(BR2_OPTIMIZE_FAST),y) +GLIBC_CFLAGS += -O2 +endif + +define GLIBC_CONFIGURE_CMDS + mkdir -p $(@D)/build + # Do the configuration + (cd $(@D)/build; \ + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(GLIBC_CFLAGS) $(GLIBC_EXTRA_CFLAGS)" CPPFLAGS="" \ + CXXFLAGS="$(GLIBC_CFLAGS) $(GLIBC_EXTRA_CFLAGS)" \ + $(GLIBC_CONF_ENV) \ + $(SHELL) $(@D)/configure \ + --target=$(GNU_TARGET_NAME) \ + --host=$(GNU_TARGET_NAME) \ + --build=$(GNU_HOST_NAME) \ + --prefix=/usr \ + --enable-shared \ + $(if $(BR2_x86_64),--enable-lock-elision) \ + --with-pkgversion="Buildroot" \ + --disable-profile \ + --disable-werror \ + --without-gd \ + --with-headers=$(STAGING_DIR)/usr/include \ + $(if $(BR2_aarch64)$(BR2_aarch64_be),--enable-mathvec) \ + $(GLIBC_CONF_OPTS)) + $(GLIBC_ADD_MISSING_STUB_H) +endef + +# +# We also override the install to target commands since we only want +# to install the libraries, and nothing more. +# + +GLIBC_LIBS_LIB = \ + ld*.so.* libanl.so.* libc.so.* libdl.so.* libgcc_s.so.* \ + libm.so.* libpthread.so.* libresolv.so.* librt.so.* \ + libutil.so.* libnss_files.so.* libnss_dns.so.* libmvec.so.* + +ifeq ($(BR2_PACKAGE_GDB),y) +GLIBC_LIBS_LIB += libthread_db.so.* +endif + +ifeq ($(BR2_PACKAGE_GLIBC_UTILS),y) +GLIBC_TARGET_UTILS_USR_BIN = posix/getconf elf/ldd +GLIBC_TARGET_UTILS_SBIN = elf/ldconfig +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +GLIBC_TARGET_UTILS_USR_BIN += locale/locale +endif +endif + +define GLIBC_INSTALL_TARGET_CMDS + for libpattern in $(GLIBC_LIBS_LIB); do \ + $(call copy_toolchain_lib_root,$$libpattern) ; \ + done + $(foreach util,$(GLIBC_TARGET_UTILS_USR_BIN), \ + $(INSTALL) -D -m 0755 $(@D)/build/$(util) $(TARGET_DIR)/usr/bin/$(notdir $(util)) + ) + $(foreach util,$(GLIBC_TARGET_UTILS_SBIN), \ + $(INSTALL) -D -m 0755 $(@D)/build/$(util) $(TARGET_DIR)/sbin/$(notdir $(util)) + ) +endef + +$(eval $(autotools-package)) diff --git a/package/glibc/nsswitch.conf b/package/glibc/nsswitch.conf new file mode 100644 index 00000000..5c384918 --- /dev/null +++ b/package/glibc/nsswitch.conf @@ -0,0 +1,13 @@ +# /etc/nsswitch.conf + +passwd: files +group: files +shadow: files + +hosts: files dns +networks: files dns + +protocols: files +services: files +ethers: files +rpc: files diff --git a/package/glibmm/Config.in b/package/glibmm/Config.in new file mode 100644 index 00000000..b7bed195 --- /dev/null +++ b/package/glibmm/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_GLIBMM + bool "glibmm (latest)" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # libsigc + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBSIGC + help + The GLibmm package is a set of C++ bindings for GLib. + + http://www.gtkmm.org/ + +comment "glibmm needs a toolchain w/ C++, wchar, threads, gcc >= 7" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || !BR2_USE_WCHAR \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/glibmm/glibmm.hash b/package/glibmm/glibmm.hash new file mode 100644 index 00000000..ee50ccdb --- /dev/null +++ b/package/glibmm/glibmm.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/glibmm/2.76/glibmm-2.76.0.sha256sum +sha256 8637d80ceabd94fddd6e48970a082a264558d4ab82684e15ffc87e7ef3462ab2 glibmm-2.76.0.tar.xz +# License files, locally calculated +sha256 3ea7fa7c5d9a3a113e950eca9cfb85107f096270d8e4dd99daa9d8abdebc60e7 COPYING +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING.tools diff --git a/package/glibmm/glibmm.mk b/package/glibmm/glibmm.mk new file mode 100644 index 00000000..da95329a --- /dev/null +++ b/package/glibmm/glibmm.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# glibmm +# +################################################################################ + +GLIBMM_VERSION_MAJOR = 2.76 +GLIBMM_VERSION = $(GLIBMM_VERSION_MAJOR).0 +GLIBMM_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (tools) +GLIBMM_LICENSE_FILES = COPYING COPYING.tools +GLIBMM_SOURCE = glibmm-$(GLIBMM_VERSION).tar.xz +GLIBMM_SITE = https://download.gnome.org/sources/glibmm/$(GLIBMM_VERSION_MAJOR) +GLIBMM_INSTALL_STAGING = YES +GLIBMM_DEPENDENCIES = libglib2 libsigc host-pkgconf +GLIBMM_CONF_OPTS = -Dbuild-examples=false + +GLIBMM_CXXFLAGS = $(TARGET_CXXFLAGS) +GLIBMM_LDFLAGS = $(TARGET_LDFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +GLIBMM_CXXFLAGS += -O0 +endif + +# Uses __atomic_fetch_add_4 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +GLIBMM_LDFLAGS += -latomic +endif + +$(eval $(meson-package)) diff --git a/package/glibmm2_66/Config.in b/package/glibmm2_66/Config.in new file mode 100644 index 00000000..628584ca --- /dev/null +++ b/package/glibmm2_66/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_GLIBMM2_66 + bool "glibmm (2.66.x)" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # regex_replace + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBSIGC2 + help + The GLibmm package is a set of C++ bindings for GLib. + + This is the last version before the API and ABI change + introduced in 2.68.0 which requires C++17. + + http://www.gtkmm.org/ + +comment "glibmm (2.66.x) needs a toolchain w/ C++, wchar, threads, gcc >= 4.9" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_USE_WCHAR \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/glibmm2_66/glibmm2_66.hash b/package/glibmm2_66/glibmm2_66.hash new file mode 100644 index 00000000..19272d2b --- /dev/null +++ b/package/glibmm2_66/glibmm2_66.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/glibmm/2.66/glibmm-2.66.6.sha256sum +sha256 5358742598181e5351d7bf8da072bf93e6dd5f178d27640d4e462bc8f14e152f glibmm-2.66.6.tar.xz +# License files, locally calculated +sha256 3ea7fa7c5d9a3a113e950eca9cfb85107f096270d8e4dd99daa9d8abdebc60e7 COPYING +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING.tools diff --git a/package/glibmm2_66/glibmm2_66.mk b/package/glibmm2_66/glibmm2_66.mk new file mode 100644 index 00000000..7f28342c --- /dev/null +++ b/package/glibmm2_66/glibmm2_66.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# glibmm2_66 +# +################################################################################ + +GLIBMM2_66_VERSION_MAJOR = 2.66 +GLIBMM2_66_VERSION = $(GLIBMM2_66_VERSION_MAJOR).6 +GLIBMM2_66_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (tools) +GLIBMM2_66_LICENSE_FILES = COPYING COPYING.tools +GLIBMM2_66_SOURCE = glibmm-$(GLIBMM2_66_VERSION).tar.xz +GLIBMM2_66_SITE = https://download.gnome.org/sources/glibmm/$(GLIBMM2_66_VERSION_MAJOR) +GLIBMM2_66_INSTALL_STAGING = YES +GLIBMM2_66_DEPENDENCIES = libglib2 libsigc2 host-pkgconf +GLIBMM2_66_CONF_OPTS = -Dbuild-examples=false + +GLIBMM2_66_CXXFLAGS = $(TARGET_CXXFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +GLIBMM2_66_CXXFLAGS += -O0 +endif + +$(eval $(meson-package)) diff --git a/package/glm/Config.in b/package/glm/Config.in new file mode 100644 index 00000000..41b36083 --- /dev/null +++ b/package/glm/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_GLM + bool "glm" + depends on BR2_INSTALL_LIBSTDCPP + help + OpenGL Mathematics (GLM) + + http://glm.g-truc.net + +comment "glm needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/glm/glm.hash b/package/glm/glm.hash new file mode 100644 index 00000000..0084bd09 --- /dev/null +++ b/package/glm/glm.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 e51f6c89ff33b7cfb19daafb215f293d106cd900f8d681b9b1295312ccadbd23 glm-1.0.0.tar.gz +sha256 62d2d642c7d054d4fb4c9b42faad617d6c88fcd91e317f8035aa9f277cc159c3 copying.txt diff --git a/package/glm/glm.mk b/package/glm/glm.mk new file mode 100644 index 00000000..ce8efc11 --- /dev/null +++ b/package/glm/glm.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# glm +# +################################################################################ + +GLM_VERSION = 1.0.0 +GLM_SITE = $(call github,g-truc,glm,$(GLM_VERSION)) +GLM_LICENSE = MIT +GLM_LICENSE_FILES = copying.txt + +# GLM is a header-only library, it only makes sense +# to have it installed into the staging directory. +GLM_INSTALL_STAGING = YES +GLM_INSTALL_TARGET = NO + +# Don't build libraries as GLM is header-only +GLM_CONF_OPTS = \ + -DGLM_TEST_ENABLE=OFF \ + -DGLM_BUILD_LIBRARY=OFF + +$(eval $(cmake-package)) diff --git a/package/glmark2/Config.in b/package/glmark2/Config.in new file mode 100644 index 00000000..059acc62 --- /dev/null +++ b/package/glmark2/Config.in @@ -0,0 +1,73 @@ +config BR2_PACKAGE_GLMARK2_FLAVOR_ANY + bool + +config BR2_PACKAGE_GLMARK2_FLAVOR_DRM_GLESV2 + bool + default y + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_HAS_LIBGBM + depends on BR2_PACKAGE_HAS_LIBGLES + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_TOOLCHAIN_HAS_THREADS # libpthread-stubs -> libdrm + select BR2_PACKAGE_GLMARK2_FLAVOR_ANY + +config BR2_PACKAGE_GLMARK2_FLAVOR_DRM_GL + bool + default y + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_HAS_LIBGL + depends on BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_GLMARK2_FLAVOR_ANY + +config BR2_PACKAGE_GLMARK2_FLAVOR_WAYLAND_GLESV2 + bool + default y + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_HAS_LIBGLES + depends on BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_GLMARK2_FLAVOR_ANY + +config BR2_PACKAGE_GLMARK2_FLAVOR_WAYLAND_GL + bool + default y + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_HAS_LIBGL + depends on BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_GLMARK2_FLAVOR_ANY + +config BR2_PACKAGE_GLMARK2_FLAVOR_X11_GLESV2 + bool + default y + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_HAS_LIBGLES + depends on BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_GLMARK2_FLAVOR_ANY + +config BR2_PACKAGE_GLMARK2_FLAVOR_X11_GL + bool + default y + depends on BR2_PACKAGE_HAS_LIBGL + depends on BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_GLMARK2_FLAVOR_ANY + +comment "glmark2 needs a toolchain w/ C++, gcc >= 4.9" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +comment "glmark2 needs an OpenGL or an openGL ES and EGL backend" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 && BR2_INSTALL_LIBSTDCPP + depends on !BR2_PACKAGE_GLMARK2_FLAVOR_ANY + +config BR2_PACKAGE_GLMARK2 + bool "glmark2" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14 + depends on BR2_PACKAGE_GLMARK2_FLAVOR_ANY + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBDRM if BR2_PACKAGE_GLMARK2_FLAVOR_DRM_GLESV2 + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_WAYLAND_PROTOCOLS if BR2_PACKAGE_GLMARK2_FLAVOR_WAYLAND_GL + select BR2_PACKAGE_WAYLAND_PROTOCOLS if BR2_PACKAGE_GLMARK2_FLAVOR_WAYLAND_GLESV2 + help + glmark2 is an OpenGL 2.0 and ES 2.0 benchmark. + + https://github.com/glmark2/glmark2 diff --git a/package/glmark2/glmark2.hash b/package/glmark2/glmark2.hash new file mode 100644 index 00000000..5b1d13b4 --- /dev/null +++ b/package/glmark2/glmark2.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 8fece3fc323b643644a525be163dc4931a4189971eda1de8ad4c1712c5db3d67 glmark2-2023.01.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING +sha256 16fbc228292bd774b263b212ae422c524cbf3b2078bcf21b22f8bdd4373be617 COPYING.SGI diff --git a/package/glmark2/glmark2.mk b/package/glmark2/glmark2.mk new file mode 100644 index 00000000..c98df7e6 --- /dev/null +++ b/package/glmark2/glmark2.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# glmark2 +# +################################################################################ + +GLMARK2_VERSION = 2023.01 +GLMARK2_SITE = $(call github,glmark2,glmark2,$(GLMARK2_VERSION)) +GLMARK2_LICENSE = GPL-3.0+, SGIv1 +GLMARK2_LICENSE_FILES = COPYING COPYING.SGI +GLMARK2_DEPENDENCIES = host-pkgconf jpeg libegl libpng + +ifeq ($(BR2_PACKAGE_GLMARK2_FLAVOR_DRM_GLESV2),y) +GLMARK2_DEPENDENCIES += libdrm libgbm libgles udev +GLMARK2_FLAVORS += drm-glesv2 +endif + +ifeq ($(BR2_PACKAGE_GLMARK2_FLAVOR_DRM_GL),y) +GLMARK2_DEPENDENCIES += libgl udev +GLMARK2_FLAVORS += drm-gl +endif + +ifeq ($(BR2_PACKAGE_GLMARK2_FLAVOR_X11_GLESV2),y) +GLMARK2_DEPENDENCIES += libgles xlib_libX11 +GLMARK2_FLAVORS += x11-glesv2 +endif + +ifeq ($(BR2_PACKAGE_GLMARK2_FLAVOR_X11_GL),y) +GLMARK2_DEPENDENCIES += libgl xlib_libX11 +GLMARK2_FLAVORS += x11-gl +endif + +ifeq ($(BR2_PACKAGE_GLMARK2_FLAVOR_WAYLAND_GLESV2),y) +GLMARK2_DEPENDENCIES += libgles wayland wayland-protocols +GLMARK2_FLAVORS += wayland-glesv2 +endif + +ifeq ($(BR2_PACKAGE_GLMARK2_FLAVOR_WAYLAND_GL),y) +GLMARK2_DEPENDENCIES += libgl wayland wayland-protocols +GLMARK2_FLAVORS += wayland-gl +endif + +GLMARK2_CONF_OPTS = -Dflavors=$(subst $(space),$(comma),$(GLMARK2_FLAVORS)) + +$(eval $(meson-package)) diff --git a/package/glog/Config.in b/package/glog/Config.in new file mode 100644 index 00000000..85873f02 --- /dev/null +++ b/package/glog/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_GLOG + bool "glog" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_6 # C++14 + help + C++ implementation of the Google logging module + + https://github.com/google/glog + +comment "glog needs a toolchain w/ C++, threads, gcc >= 6" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_6 diff --git a/package/glog/glog.hash b/package/glog/glog.hash new file mode 100644 index 00000000..fb0ea939 --- /dev/null +++ b/package/glog/glog.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 375106b5976231b92e66879c1a92ce062923b9ae573c42b56ba28b112ee4cc11 glog-0.7.0.tar.gz + +# Hash for License file: +sha256 136d48dea7a681413691f3db3098f6cf5ffaa3119d96d97bb83b8cff3ce38c4a COPYING diff --git a/package/glog/glog.mk b/package/glog/glog.mk new file mode 100644 index 00000000..4b3f39be --- /dev/null +++ b/package/glog/glog.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# glog +# +################################################################################ + +GLOG_VERSION = 0.7.0 +GLOG_SITE = $(call github,google,glog,v$(GLOG_VERSION)) +GLOG_INSTALL_STAGING = YES +GLOG_LICENSE = BSD-3-Clause +GLOG_LICENSE_FILES = COPYING +GLOG_CONF_OPTS = -DWITH_GTEST=OFF + +ifeq ($(BR2_PACKAGE_GFLAGS),y) +GLOG_DEPENDENCIES += gflags +GLOG_CONF_OPTS += -DWITH_GFLAGS=ON +else +GLOG_CONF_OPTS += -DWITH_GFLAGS=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/gloox/Config.in b/package/gloox/Config.in new file mode 100644 index 00000000..91e9f06e --- /dev/null +++ b/package/gloox/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_GLOOX + bool "gloox" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_MPC + help + gloox is a portable high-level Jabber/XMPP library for C++. It + is fully compliant with the XMPP RFCs, supports all of the + XMPP features (including SRV lookups, TLS, SASL, roster + management, and privacy lists), and implements several XEPs + that make it ideal for writing any kind of Jabber/XMPP client + or component. + + https://camaya.net/gloox/ + +comment "gloox needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/gloox/gloox.hash b/package/gloox/gloox.hash new file mode 100644 index 00000000..963b7982 --- /dev/null +++ b/package/gloox/gloox.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 591bd12c249ede0b50a1ef6b99ac0de8ef9c1ba4fd2e186f97a740215cc5966c gloox-1.0.28.tar.bz2 +sha256 40a20c41c8dabb8ba61bea983fa8f2f6989e67fac56bb62c2249053807fd26af LICENSE diff --git a/package/gloox/gloox.mk b/package/gloox/gloox.mk new file mode 100644 index 00000000..0d24f800 --- /dev/null +++ b/package/gloox/gloox.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# gloox +# +################################################################################ + +GLOOX_VERSION = 1.0.28 +GLOOX_SOURCE = gloox-$(GLOOX_VERSION).tar.bz2 +GLOOX_SITE = https://camaya.net/download +GLOOX_LICENSE = GPL-3.0 with OpenSSL exception +GLOOX_LICENSE_FILES = LICENSE +GLOOX_INSTALL_STAGING = YES +GLOOX_DEPENDENCIES = mpc +GLOOX_CONF_OPTS = \ + --without-libidn \ + --enable-getaddrinfo \ + --without-examples \ + --without-tests + +GLOOX_CXXFLAGS = $(TARGET_CXXFLAGS) +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +GLOOX_CXXFLAGS += -O0 +endif +GLOOX_CONF_ENV += CXXFLAGS="$(GLOOX_CXXFLAGS)" + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +GLOOX_CONF_ENV += LIBS=-latomic +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +GLOOX_CONF_OPTS += --with-zlib +GLOOX_DEPENDENCIES += zlib +else +GLOOX_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +GLOOX_CONF_OPTS += --with-openssl --without-gnutls +GLOOX_DEPENDENCIES += openssl +else ifeq ($(BR2_PACKAGE_GNUTLS),y) +GLOOX_CONF_OPTS += --with-gnutls --without-openssl +GLOOX_DEPENDENCIES += gnutls +else +GLOOX_CONF_OPTS += --without-gnutls --without-openssl +endif + +$(eval $(autotools-package)) diff --git a/package/glorytun/0001-Add-support-for-Apple-silicon.patch b/package/glorytun/0001-Add-support-for-Apple-silicon.patch new file mode 100644 index 00000000..6d4b8273 --- /dev/null +++ b/package/glorytun/0001-Add-support-for-Apple-silicon.patch @@ -0,0 +1,51 @@ +From 577ae0352d191fa604f861ea2f0847e7c5eda617 Mon Sep 17 00:00:00 2001 +From: Frank Denis +Date: Wed, 1 Jul 2020 22:51:43 +0200 +Subject: [PATCH] Add support for Apple silicon + +[Retrieved from: +https://github.com/angt/aegis256/commit/577ae0352d191fa604f861ea2f0847e7c5eda617] +Signed-off-by: Fabrice Fontaine +--- + aegis256.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/mud/aegis256/aegis256.c b/mud/aegis256/aegis256.c +index 9a580bf..75a772c 100644 +--- a/mud/aegis256/aegis256.c ++++ b/mud/aegis256/aegis256.c +@@ -36,7 +36,7 @@ typedef __m128i x128; + #define store128(X,Y) _mm_storeu_si128((x128 *)(X), (Y)) + #define set2x64(X,Y) _mm_set_epi64x((long long)(X), (long long)(Y)) + +-#elif defined(__linux__) && (defined(__ARM_NEON_FP) || defined(__aarch64__)) ++#elif (defined(__APPLE__) || defined(__linux__)) && (defined(__ARM_NEON_FP) || defined(__aarch64__)) + + #ifdef __clang__ + #pragma clang attribute push (__attribute__((target("crypto"))),apply_to=function) +@@ -48,7 +48,9 @@ typedef __m128i x128; + #endif + + #ifdef __ARM_FEATURE_CRYPTO ++#ifdef __linux__ + #include ++#endif + #include + + typedef uint8x16_t x128; +@@ -62,11 +64,15 @@ typedef uint8x16_t x128; + int + aegis256_is_available(void) + { ++#ifdef __linux__ + return (getauxval(AT_HWCAP) & HWCAP_AES) + #ifdef HWCAP2_AES + || (getauxval(AT_HWCAP2) & HWCAP2_AES) + #endif + ; ++#else // __APPLE__ ++ return 1; ++#endif + } + + #endif // __ARM_FEATURE_CRYPTO diff --git a/package/glorytun/0002-aegis256.c-fix-aarch64-build-with-uclibc.patch b/package/glorytun/0002-aegis256.c-fix-aarch64-build-with-uclibc.patch new file mode 100644 index 00000000..37ae8a33 --- /dev/null +++ b/package/glorytun/0002-aegis256.c-fix-aarch64-build-with-uclibc.patch @@ -0,0 +1,43 @@ +From eb22e270a962d4a2da1972304fd8b1216211c9d1 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 16 Apr 2022 23:32:55 +0200 +Subject: [PATCH] aegis256.c: fix aarch64 build with uclibc + +Fix the following aarch64 build failure with uclibc: + +mud/aegis256/aegis256.c:51:10: fatal error: sys/auxv.h: No such file or directory + 51 | #include + | ^~~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/4e1bbd72b9b7e0f9963f6693c3d7bc9a1d24fab4 + +Signed-off-by: Fabrice Fontaine +[Retrieved from: +https://github.com/angt/aegis256/commit/eb22e270a962d4a2da1972304fd8b1216211c9d1] +--- + aegis256.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/mud/aegis256/aegis256.c b/mud/aegis256/aegis256.c +index 75a772c..4e73fab 100644 +--- a/mud/aegis256/aegis256.c ++++ b/mud/aegis256/aegis256.c +@@ -48,7 +48,7 @@ typedef __m128i x128; + #endif + + #ifdef __ARM_FEATURE_CRYPTO +-#ifdef __linux__ ++#if defined(__linux__) && __has_include("sys/auxv.h") + #include + #endif + #include +@@ -64,7 +64,7 @@ typedef uint8x16_t x128; + int + aegis256_is_available(void) + { +-#ifdef __linux__ ++#if defined(__linux__) && __has_include("sys/auxv.h") + return (getauxval(AT_HWCAP) & HWCAP_AES) + #ifdef HWCAP2_AES + || (getauxval(AT_HWCAP2) & HWCAP2_AES) diff --git a/package/glorytun/Config.in b/package/glorytun/Config.in new file mode 100644 index 00000000..82d248f7 --- /dev/null +++ b/package/glorytun/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_GLORYTUN + bool "glorytun" + select BR2_PACKAGE_LIBSODIUM + help + A small, simple and secure VPN. + + https://github.com/angt/glorytun diff --git a/package/glorytun/glorytun.hash b/package/glorytun/glorytun.hash new file mode 100644 index 00000000..39dd12fa --- /dev/null +++ b/package/glorytun/glorytun.hash @@ -0,0 +1,2 @@ +sha256 137d9c525a05bb605163df0465367d36e943715ca773ce43d5ea66f0597600a3 glorytun-0.3.4.tar.gz +sha256 3d9ddddb8807c305287d9dbab58473e5307e9c91651c43c654a0828855d2b373 LICENSE diff --git a/package/glorytun/glorytun.mk b/package/glorytun/glorytun.mk new file mode 100644 index 00000000..389c7a07 --- /dev/null +++ b/package/glorytun/glorytun.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# glorytun +# +################################################################################ + +GLORYTUN_VERSION = 0.3.4 +GLORYTUN_SITE = https://github.com/angt/glorytun/releases/download/v$(GLORYTUN_VERSION) +GLORYTUN_DEPENDENCIES = libsodium host-pkgconf +GLORYTUN_LICENSE = BSD-2-Clause +GLORYTUN_LICENSE_FILES = LICENSE + +$(eval $(autotools-package)) diff --git a/package/glslsandbox-player/Config.in b/package/glslsandbox-player/Config.in new file mode 100644 index 00000000..530c158f --- /dev/null +++ b/package/glslsandbox-player/Config.in @@ -0,0 +1,122 @@ +config BR2_PACKAGE_GLSLSANDBOX_PLAYER + bool "glslsandbox-player" + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_HAS_LIBGLES + help + GLSL Sandbox standalone player allow one to run and render + (most of) nice shaders available online on the + http://glslsandbox.com/ website, but without the need of an + Internet connection, a web browser or any of its + dependencies. Instead, the only requirement of + glslsandbox-player is a working EGL and GLESv2 libraries. + + This package is useful for stressing and testing GLES shader + compiler in GPU drivers. + + https://github.com/jolivain/glslsandbox-player + +if BR2_PACKAGE_GLSLSANDBOX_PLAYER + +config BR2_PACKAGE_GLSLSANDBOX_PLAYER_PNG + bool "Enable PNG support" + select BR2_PACKAGE_LIBPNG + help + Enable PNG texture loading support + +config BR2_PACKAGE_GLSLSANDBOX_PLAYER_TESTING + bool "Enable testing" + help + Generate and install test suite on target + +config BR2_PACKAGE_GLSLSANDBOX_PLAYER_SCRIPTS + bool "Install scripts" + depends on !BR2_STATIC_LIBS # python3 + depends on BR2_TOOLCHAIN_HAS_THREADS # python3 + depends on BR2_USE_MMU # bash, python3 + depends on BR2_USE_WCHAR # python3 + select BR2_PACKAGE_BASH # runtime + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS if BR2_PACKAGE_BUSYBOX # bash + select BR2_PACKAGE_COREUTILS # runtime (timeout) + select BR2_PACKAGE_LIBCURL_CURL # runtime + select BR2_PACKAGE_IMAGEMAGICK # runtime + select BR2_PACKAGE_JPEG # runtime + select BR2_PACKAGE_LIBCURL # runtime + select BR2_PACKAGE_LIBOPENSSL_BIN if BR2_PACKAGE_LIBOPENSSL # runtime + select BR2_PACKAGE_LIBRESSL_BIN if BR2_PACKAGE_LIBRESSL # runtime + select BR2_PACKAGE_MAKE # runtime + select BR2_PACKAGE_OPENSSL # runtime + select BR2_PACKAGE_PYTHON3 # runtime + help + Install additional helper scripts + +choice + prompt "Native windowing system" + default BR2_PACKAGE_GLSLSANDBOX_PLAYER_MALI if BR2_PACKAGE_SUNXI_MALI_UTGARD + default BR2_PACKAGE_GLSLSANDBOX_PLAYER_MALI_T76X if BR2_PACKAGE_MALI_T76X + default BR2_PACKAGE_GLSLSANDBOX_PLAYER_RPI if BR2_PACKAGE_RPI_USERLAND + default BR2_PACKAGE_GLSLSANDBOX_PLAYER_SDL2 if BR2_PACKAGE_SDL2_OPENGLES + default BR2_PACKAGE_GLSLSANDBOX_PLAYER_TISGX if BR2_PACKAGE_TI_SGX_UM + default BR2_PACKAGE_GLSLSANDBOX_PLAYER_VIVFB if BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_FB + default BR2_PACKAGE_GLSLSANDBOX_PLAYER_WL if BR2_PACKAGE_WAYLAND + default BR2_PACKAGE_GLSLSANDBOX_PLAYER_X11 if BR2_PACKAGE_XORG7 + help + Select the native windowing system you wish to use. + +config BR2_PACKAGE_GLSLSANDBOX_PLAYER_NULL + bool "NullWS" + help + Enable Null Windowing System + +config BR2_PACKAGE_GLSLSANDBOX_PLAYER_KMS + bool "KMS/DRM/GBM" + depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm + depends on BR2_PACKAGE_HAS_LIBGBM + select BR2_PACKAGE_LIBDRM + +config BR2_PACKAGE_GLSLSANDBOX_PLAYER_MALI + bool "Allwinner ARM/Mali Frame Buffer" + depends on BR2_PACKAGE_SUNXI_MALI_UTGARD + +config BR2_PACKAGE_GLSLSANDBOX_PLAYER_MALI_T76X + bool "ARM/Mali T76x Frame Buffer" + depends on BR2_PACKAGE_MALI_T76X + +config BR2_PACKAGE_GLSLSANDBOX_PLAYER_RPI + bool "RaspberryPI Frame Buffer" + depends on BR2_PACKAGE_RPI_USERLAND + +config BR2_PACKAGE_GLSLSANDBOX_PLAYER_SDL2 + bool "SDL2" + depends on BR2_PACKAGE_SDL2_OPENGLES + +config BR2_PACKAGE_GLSLSANDBOX_PLAYER_TISGX + bool "TI/SGX Frame Buffer" + depends on BR2_PACKAGE_TI_SGX_UM + +config BR2_PACKAGE_GLSLSANDBOX_PLAYER_VIVFB + bool "Vivante Frame Buffer" + depends on BR2_PACKAGE_IMX_GPU_VIV + +config BR2_PACKAGE_GLSLSANDBOX_PLAYER_WL + bool "Wayland" + depends on BR2_PACKAGE_WAYLAND + +config BR2_PACKAGE_GLSLSANDBOX_PLAYER_X11 + bool "X11" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + +endchoice + +if BR2_PACKAGE_GLSLSANDBOX_PLAYER_WL +config BR2_PACKAGE_GLSLSANDBOX_PLAYER_WL_IVI + bool "Wayland IVI shell support" + +config BR2_PACKAGE_GLSLSANDBOX_PLAYER_WL_XDG + bool "Wayland XDG shell support" + select BR2_PACKAGE_WAYLAND_PROTOCOLS +endif +endif + +comment "glslsandbox-player needs openGL ES and EGL driver" + depends on !BR2_PACKAGE_HAS_LIBEGL || !BR2_PACKAGE_HAS_LIBGLES diff --git a/package/glslsandbox-player/glslsandbox-player.hash b/package/glslsandbox-player/glslsandbox-player.hash new file mode 100644 index 00000000..91af3c9c --- /dev/null +++ b/package/glslsandbox-player/glslsandbox-player.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 8adf89f65a060958e6ba2aa52a28f3189fde23b5478958ad4b8b6a7e82007587 glslsandbox-player-2023.04.05.tar.gz +sha256 cda47d436d3aeb02d595ddd316d841494926d286327383b5d63734115204a8b2 LICENSE diff --git a/package/glslsandbox-player/glslsandbox-player.mk b/package/glslsandbox-player/glslsandbox-player.mk new file mode 100644 index 00000000..0066f435 --- /dev/null +++ b/package/glslsandbox-player/glslsandbox-player.mk @@ -0,0 +1,86 @@ +################################################################################ +# +# glslsandbox-player +# +################################################################################ + +GLSLSANDBOX_PLAYER_VERSION = 2023.04.05 +GLSLSANDBOX_PLAYER_SITE = $(call github,jolivain,glslsandbox-player,v$(GLSLSANDBOX_PLAYER_VERSION)) +GLSLSANDBOX_PLAYER_AUTORECONF = YES +GLSLSANDBOX_PLAYER_DEPENDENCIES = libegl libgles host-pkgconf + +GLSLSANDBOX_PLAYER_LICENSE = BSD-2-Clause +GLSLSANDBOX_PLAYER_LICENSE_FILES = LICENSE + +ifeq ($(BR2_PACKAGE_LIBEXECINFO),y) +GLSLSANDBOX_PLAYER_DEPENDENCIES += libexecinfo +GLSLSANDBOX_PLAYER_CONF_ENV += LIBS="-lexecinfo" +endif + +ifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_PNG),y) +GLSLSANDBOX_PLAYER_DEPENDENCIES += libpng +GLSLSANDBOX_PLAYER_CONF_OPTS += --with-libpng +else +GLSLSANDBOX_PLAYER_CONF_OPTS += --without-libpng +endif + +ifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_TESTING),y) +GLSLSANDBOX_PLAYER_CONF_OPTS += \ + --with-shader-list=shader-tests.list \ + --enable-testing \ + --enable-install-testsuite +else +GLSLSANDBOX_PLAYER_CONF_OPTS += \ + --with-shader-list=shader-local.list \ + --disable-testing +endif + +ifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_SCRIPTS),y) +GLSLSANDBOX_PLAYER_CONF_OPTS += --enable-install-scripts +else +GLSLSANDBOX_PLAYER_CONF_OPTS += --disable-install-scripts +endif + +ifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_NULL),y) +GLSLSANDBOX_PLAYER_CONF_OPTS += --with-native-gfx=nullws +else ifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_KMS),y) +GLSLSANDBOX_PLAYER_DEPENDENCIES += libdrm libgbm +GLSLSANDBOX_PLAYER_CONF_OPTS += --with-native-gfx=kms +else ifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_MALI),y) +GLSLSANDBOX_PLAYER_DEPENDENCIES += sunxi-mali-utgard +GLSLSANDBOX_PLAYER_CONF_OPTS += --with-native-gfx=mali +else ifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_MALI_T76X),y) +GLSLSANDBOX_PLAYER_DEPENDENCIES += mali-t76x +GLSLSANDBOX_PLAYER_CONF_OPTS += --with-native-gfx=nullws +else ifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_RPI),y) +GLSLSANDBOX_PLAYER_DEPENDENCIES += rpi-userland +GLSLSANDBOX_PLAYER_CONF_OPTS += --with-native-gfx=rpi +else ifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_SDL2),y) +GLSLSANDBOX_PLAYER_DEPENDENCIES += sdl2 +GLSLSANDBOX_PLAYER_CONF_OPTS += --with-native-gfx=sdl2 +else ifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_TISGX),y) +GLSLSANDBOX_PLAYER_DEPENDENCIES += ti-sgx-um +GLSLSANDBOX_PLAYER_CONF_OPTS += --with-native-gfx=tisgx +else ifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_VIVFB),y) +GLSLSANDBOX_PLAYER_DEPENDENCIES += imx-gpu-viv +GLSLSANDBOX_PLAYER_CONF_OPTS += --with-native-gfx=vivfb +else ifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_WL),y) +GLSLSANDBOX_PLAYER_DEPENDENCIES += wayland +GLSLSANDBOX_PLAYER_CONF_OPTS += --with-native-gfx=wl +ifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_WL_IVI),y) +GLSLSANDBOX_PLAYER_CONF_OPTS += --enable-ivi +else +GLSLSANDBOX_PLAYER_CONF_OPTS += --disable-ivi +endif +ifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_WL_XDG),y) +GLSLSANDBOX_PLAYER_DEPENDENCIES += wayland-protocols +GLSLSANDBOX_PLAYER_CONF_OPTS += --enable-wlxdg +else +GLSLSANDBOX_PLAYER_CONF_OPTS += --disable-wlxdg +endif +else ifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_X11),y) +GLSLSANDBOX_PLAYER_DEPENDENCIES += xlib_libX11 +GLSLSANDBOX_PLAYER_CONF_OPTS += --with-native-gfx=x11 +endif + +$(eval $(autotools-package)) diff --git a/package/gmp/Config.in b/package/gmp/Config.in new file mode 100644 index 00000000..226e0887 --- /dev/null +++ b/package/gmp/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_GMP + bool "gmp" + help + GNU Multiple Precision Arithmetic Library. + + http://gmplib.org/ diff --git a/package/gmp/gmp.hash b/package/gmp/gmp.hash new file mode 100644 index 00000000..8c8b4d11 --- /dev/null +++ b/package/gmp/gmp.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +sha256 a3c2b80201b89e68616f4ad30bc66aee4927c3ce50e33929ca819d5c43538898 gmp-6.3.0.tar.xz + +# Locally calculated +sha256 a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c COPYING.LESSERv3 +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYINGv2 diff --git a/package/gmp/gmp.mk b/package/gmp/gmp.mk new file mode 100644 index 00000000..7e8da902 --- /dev/null +++ b/package/gmp/gmp.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# gmp +# +################################################################################ + +GMP_VERSION = 6.3.0 +GMP_SITE = $(BR2_GNU_MIRROR)/gmp +GMP_SOURCE = gmp-$(GMP_VERSION).tar.xz +GMP_INSTALL_STAGING = YES +GMP_LICENSE = LGPL-3.0+ or GPL-2.0+ +GMP_LICENSE_FILES = COPYING.LESSERv3 COPYINGv2 +GMP_CPE_ID_VENDOR = gmplib +GMP_DEPENDENCIES = host-m4 +HOST_GMP_DEPENDENCIES = host-m4 + +GMP_CONF_ENV += CC_FOR_BUILD="$(HOSTCC) -std=c99" + +# GMP doesn't support assembly for coldfire or mips r6 ISA yet +# Disable for ARM v7m since it has different asm constraints +ifeq ($(BR2_m68k_cf)$(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6)$(BR2_ARM_CPU_ARMV7M),y) +GMP_CONF_OPTS += --disable-assembly +endif + +# GMP needs M extension for riscv assembly +ifeq ($(BR2_riscv):$(BR2_RISCV_ISA_RVM),y:) +GMP_CONF_OPTS += --disable-assembly +endif + +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +GMP_CONF_OPTS += --enable-cxx +else +GMP_CONF_OPTS += --disable-cxx +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/gmrender-resurrect/Config.in b/package/gmrender-resurrect/Config.in new file mode 100644 index 00000000..de52410a --- /dev/null +++ b/package/gmrender-resurrect/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_GMRENDER_RESURRECT + bool "gmrender-resurrect" + depends on BR2_USE_WCHAR # gstreamer1 -> libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # gstreamer1 + select BR2_PACKAGE_GSTREAMER1 + select BR2_PACKAGE_GST1_PLUGINS_BASE # run-time only + select BR2_PACKAGE_LIBUPNP + help + UPnP (DLNA) media renderer based on gstreamer + + https://github.com/hzeller/gmrender-resurrect + +comment "gmrender-resurrect needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/gmrender-resurrect/gmrender-resurrect.hash b/package/gmrender-resurrect/gmrender-resurrect.hash new file mode 100644 index 00000000..f14abffc --- /dev/null +++ b/package/gmrender-resurrect/gmrender-resurrect.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 550b07bc6a073176ad7de0efd603663c9875311dfb81ae1075263e3fd6974335 gmrender-resurrect-0.1.tar.gz +sha256 c38aee9e3c8c4d5d594ff548a1be05453023016d6286931f6512db215ec1fd42 COPYING diff --git a/package/gmrender-resurrect/gmrender-resurrect.mk b/package/gmrender-resurrect/gmrender-resurrect.mk new file mode 100644 index 00000000..77ac83ca --- /dev/null +++ b/package/gmrender-resurrect/gmrender-resurrect.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# gmrender-resurrect +# +################################################################################ + +GMRENDER_RESURRECT_VERSION = 0.1 +GMRENDER_RESURRECT_SITE = $(call github,hzeller,gmrender-resurrect,v$(GMRENDER_RESURRECT_VERSION)) +# Original distribution does not have default configure, +# so we need to autoreconf: +GMRENDER_RESURRECT_AUTORECONF = YES +GMRENDER_RESURRECT_LICENSE = GPL-2.0+ +GMRENDER_RESURRECT_LICENSE_FILES = COPYING +GMRENDER_RESURRECT_DEPENDENCIES = \ + gstreamer1 \ + libupnp + +$(eval $(autotools-package)) diff --git a/package/gnu-efi/0001-Make.defaults-don-t-override-ARCH-when-cross-compili.patch b/package/gnu-efi/0001-Make.defaults-don-t-override-ARCH-when-cross-compili.patch new file mode 100644 index 00000000..2eb9c5a0 --- /dev/null +++ b/package/gnu-efi/0001-Make.defaults-don-t-override-ARCH-when-cross-compili.patch @@ -0,0 +1,32 @@ +From b2dbeec5063265eb0121342c24a900a4888712a7 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 20 Jan 2019 21:07:11 +0100 +Subject: [PATCH] Make.defaults: don't override ARCH when cross-compiling + +Don't override the user-provided ARCH when cross-compiling otherwise +ARCH won't be correct for armv5, aarch64 and x86_64 + +Fixes: + - http://autobuild.buildroot.org/results/2dfc0e10da25a8382a43557420d7dc3444c02dbb + +Signed-off-by: Fabrice Fontaine +--- + Make.defaults | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Make.defaults b/Make.defaults +index 47ed361..7420344 100755 +--- a/Make.defaults ++++ b/Make.defaults +@@ -67,7 +67,7 @@ ARCH ?= $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed -e s,i[345678 + + # Get ARCH from the compiler if cross compiling + ifneq ($(CROSS_COMPILE),) +- override ARCH := $(shell $(CC) -dumpmachine | cut -f1 -d-| sed -e s,i[3456789]86,ia32, -e 's,armv[67].*,arm,' ) ++ ARCH := $(shell $(CC) -dumpmachine | cut -f1 -d-| sed -e s,i[3456789]86,ia32, -e 's,armv[67].*,arm,' ) + endif + + # FreeBSD (and possibly others) reports amd64 instead of x86_64 +-- +2.36.1 + diff --git a/package/gnu-efi/Config.in b/package/gnu-efi/Config.in new file mode 100644 index 00000000..35446876 --- /dev/null +++ b/package/gnu-efi/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS + bool + default y if BR2_arm && BR2_ARM_CPU_HAS_ARM && !BR2_ARM_SOFT_FLOAT + default y if BR2_RISCV_64 + default y if BR2_aarch64 + default y if BR2_i386 + default y if BR2_x86_64 + depends on BR2_USE_MMU + +config BR2_PACKAGE_GNU_EFI + bool "gnu-efi" + depends on BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS + help + Develop EFI applications for ARM-64, ARM-32, x86_64, IA-64 + (IPF), IA-32 (x86), and MIPS platforms using the GNU toolchain + and the EFI development environment. + + http://gnu-efi.sourceforge.net/ diff --git a/package/gnu-efi/gnu-efi.hash b/package/gnu-efi/gnu-efi.hash new file mode 100644 index 00000000..e059da86 --- /dev/null +++ b/package/gnu-efi/gnu-efi.hash @@ -0,0 +1,6 @@ +# From http://sourceforge.net/projects/gnu-efi/files +md5 0b93ad70dff96991dd87978fc4275bd1 gnu-efi-3.0.18.tar.bz2 +sha1 4f12dc4ab3e7940070c87affea17bf8a6209957a gnu-efi-3.0.18.tar.bz2 +# Locally computed +sha256 7f212c96ee66547eeefb531267b641e5473d7d8529f0bd8ccdefd33cf7413f5c gnu-efi-3.0.18.tar.bz2 +sha256 42d352e9c28dd446fd0209cd6f75588c8e41f0934540bb382bbd61c752360265 README.efilib diff --git a/package/gnu-efi/gnu-efi.mk b/package/gnu-efi/gnu-efi.mk new file mode 100644 index 00000000..2eed4e40 --- /dev/null +++ b/package/gnu-efi/gnu-efi.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# gnu-efi +# +################################################################################ + +GNU_EFI_VERSION = 3.0.18 +GNU_EFI_SOURCE = gnu-efi-$(GNU_EFI_VERSION).tar.bz2 +GNU_EFI_SITE = http://downloads.sourceforge.net/project/gnu-efi +GNU_EFI_INSTALL_STAGING = YES +GNU_EFI_LICENSE = BSD-3-Clause and/or GPL-2.0+ (gnuefi), BSD-3-Clause (efilib) +GNU_EFI_LICENSE_FILES = README.efilib + +# gnu-efi is a set of library and header files used to build +# standalone EFI applications such as bootloaders. There is no point +# in installing these libraries to the target. +GNU_EFI_INSTALL_TARGET = NO + +ifeq ($(BR2_i386),y) +GNU_EFI_PLATFORM = ia32 +else ifeq ($(BR2_x86_64),y) +GNU_EFI_PLATFORM = x86_64 +else ifeq ($(BR2_arm)$(BR2_armeb),y) +GNU_EFI_PLATFORM = arm +else ifeq ($(BR2_aarch64)$(BR2_aarch64_be),y) +GNU_EFI_PLATFORM = aarch64 +else ifeq ($(BR2_RISCV_64),y) +GNU_EFI_PLATFORM = riscv64 +endif + +GNU_EFI_MAKE_OPTS = \ + ARCH=$(GNU_EFI_PLATFORM) \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + PREFIX=/usr + +define GNU_EFI_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(GNU_EFI_MAKE_OPTS) +endef + +define GNU_EFI_INSTALL_STAGING_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(GNU_EFI_MAKE_OPTS) \ + INSTALLROOT=$(STAGING_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/gnuchess/Config.in b/package/gnuchess/Config.in new file mode 100644 index 00000000..0ddd2882 --- /dev/null +++ b/package/gnuchess/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_GNUCHESS + bool "gnuchess" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_FLEX + help + GNU Chess lets most modern computers play a full game of + chess. + + http://ftp.gnu.org/pub/gnu/chess + +comment "gnuchess needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/gnuchess/gnuchess.hash b/package/gnuchess/gnuchess.hash new file mode 100644 index 00000000..0248abcf --- /dev/null +++ b/package/gnuchess/gnuchess.hash @@ -0,0 +1,3 @@ +# sha256 locally computed +sha256 ddfcc20bdd756900a9ab6c42c7daf90a2893bf7f19ce347420ce36baebc41890 gnuchess-6.2.9.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/gnuchess/gnuchess.mk b/package/gnuchess/gnuchess.mk new file mode 100644 index 00000000..630b3aef --- /dev/null +++ b/package/gnuchess/gnuchess.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# gnuchess +# +################################################################################ + +GNUCHESS_VERSION = 6.2.9 +GNUCHESS_SITE = $(BR2_GNU_MIRROR)/chess +GNUCHESS_LICENSE = GPL-3.0+ +GNUCHESS_LICENSE_FILES = COPYING +GNUCHESS_CPE_ID_VENDOR = gnu +GNUCHESS_CPE_ID_PRODUCT = chess + +GNUCHESS_DEPENDENCIES = host-flex flex +GNUCHESS_DEPENDENCIES += $(if $(BR2_PACKAGE_READLINE),readline) \ + $(TARGET_NLS_DEPENDENCIES) + +$(eval $(autotools-package)) diff --git a/package/gnupg/0001-build-Always-use-EXTERN_UNLESS_MAIN_MODULE-pattern.patch b/package/gnupg/0001-build-Always-use-EXTERN_UNLESS_MAIN_MODULE-pattern.patch new file mode 100644 index 00000000..9f0ba1b0 --- /dev/null +++ b/package/gnupg/0001-build-Always-use-EXTERN_UNLESS_MAIN_MODULE-pattern.patch @@ -0,0 +1,156 @@ +From 45ef4455a60929932d1499cf718c1c9f59af9f26 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 26 May 2020 22:57:05 +0200 +Subject: [PATCH] build: Always use EXTERN_UNLESS_MAIN_MODULE pattern + +This patch is loosely based on upstream commit +6aff8a132815a84bab69401c1e7de96ec549fbf2 ("build: Always use +EXTERN_UNLESS_MAIN_MODULE pattern."). However, this upstream commit +applies to gnupg2, and the code base has changed quite significantly +compared to gnupg 1.x, so upstream's patch cannot be applied +as-is. The goal of the patch is to make sure each variable is only +defined once, ass gcc 10 now default to -fno-common. + +Essentially, this patch mainly fixes the EXTERN_UNLESS_MAIN_MODULE +define so that it really expands to "extern" when +INCLUDED_BY_MAIN_MODULE is not defined, even on non-RiscOS +systems. Contrary to upstream's patch we however do not factorize the +multiple EXTERN_UNLESS_MAIN_MODULE definitions into a single place as +it requires too many changes: instead we simply fix the few +definitions of this macro. + +Once the macro is fixed, two places need to define +INCLUDED_BY_MAIN_MODULE: tools/bftest.c and tools/mpicalc.c so that +when they include the common headers, their variables are at least +defined once. + +The iobuf.{c,h} case is handled differently: iobuf.h gains an +unconditional "extern", with the variable being added to iobuf.c. This +is identical to what upstream's +6aff8a132815a84bab69401c1e7de96ec549fbf2 is doing. + +Signed-off-by: Thomas Petazzoni +--- + g10/options.h | 3 +-- + include/cipher.h | 2 +- + include/iobuf.h | 9 +-------- + include/memory.h | 2 +- + include/mpi.h | 2 +- + tools/bftest.c | 1 + + tools/mpicalc.c | 1 + + util/iobuf.c | 2 ++ + 8 files changed, 9 insertions(+), 13 deletions(-) + +diff --git a/g10/options.h b/g10/options.h +index 0ac6e7755..bae19e9e3 100644 +--- a/g10/options.h ++++ b/g10/options.h +@@ -26,8 +26,7 @@ + #include "packet.h" + + #ifndef EXTERN_UNLESS_MAIN_MODULE +-/* Norcraft can't cope with common symbols */ +-#if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE) ++#if !defined (INCLUDED_BY_MAIN_MODULE) + #define EXTERN_UNLESS_MAIN_MODULE extern + #else + #define EXTERN_UNLESS_MAIN_MODULE +diff --git a/include/cipher.h b/include/cipher.h +index dd4af18cb..6ef6e6829 100644 +--- a/include/cipher.h ++++ b/include/cipher.h +@@ -115,7 +115,7 @@ struct gcry_md_context { + typedef struct gcry_md_context *MD_HANDLE; + + #ifndef EXTERN_UNLESS_MAIN_MODULE +-#if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE) ++#if !defined (INCLUDED_BY_MAIN_MODULE) + #define EXTERN_UNLESS_MAIN_MODULE extern + #else + #define EXTERN_UNLESS_MAIN_MODULE +diff --git a/include/iobuf.h b/include/iobuf.h +index 030f8c8e9..b4d26b7e1 100644 +--- a/include/iobuf.h ++++ b/include/iobuf.h +@@ -69,14 +69,7 @@ struct iobuf_struct { + } unget; + }; + +-#ifndef EXTERN_UNLESS_MAIN_MODULE +-#if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE) +-#define EXTERN_UNLESS_MAIN_MODULE extern +-#else +-#define EXTERN_UNLESS_MAIN_MODULE +-#endif +-#endif +-EXTERN_UNLESS_MAIN_MODULE int iobuf_debug_mode; ++extern int iobuf_debug_mode; + + void iobuf_enable_special_filenames ( int yes ); + int iobuf_is_pipe_filename (const char *fname); +diff --git a/include/memory.h b/include/memory.h +index d414a9b2e..6698337e3 100644 +--- a/include/memory.h ++++ b/include/memory.h +@@ -91,7 +91,7 @@ unsigned secmem_get_flags(void); + #define DBG_MEMSTAT memory_stat_debug_mode + + #ifndef EXTERN_UNLESS_MAIN_MODULE +-#if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE) ++#if !defined (INCLUDED_BY_MAIN_MODULE) + #define EXTERN_UNLESS_MAIN_MODULE extern + #else + #define EXTERN_UNLESS_MAIN_MODULE +diff --git a/include/mpi.h b/include/mpi.h +index a4c16f5af..7a45ff805 100644 +--- a/include/mpi.h ++++ b/include/mpi.h +@@ -36,7 +36,7 @@ + #include "memory.h" + + #ifndef EXTERN_UNLESS_MAIN_MODULE +-#if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE) ++#if !defined (INCLUDED_BY_MAIN_MODULE) + #define EXTERN_UNLESS_MAIN_MODULE extern + #else + #define EXTERN_UNLESS_MAIN_MODULE +diff --git a/tools/bftest.c b/tools/bftest.c +index 8a1572c2b..5afd7e125 100644 +--- a/tools/bftest.c ++++ b/tools/bftest.c +@@ -26,6 +26,7 @@ + #include + #endif + ++#define INCLUDED_BY_MAIN_MODULE + #include "util.h" + #include "cipher.h" + #include "i18n.h" +diff --git a/tools/mpicalc.c b/tools/mpicalc.c +index 46e5fc824..31acd82a4 100644 +--- a/tools/mpicalc.c ++++ b/tools/mpicalc.c +@@ -31,6 +31,7 @@ + #include + #include + ++#define INCLUDED_BY_MAIN_MODULE + #include "util.h" + #include "mpi.h" + #include "i18n.h" +diff --git a/util/iobuf.c b/util/iobuf.c +index c8442929a..0d9ee4cec 100644 +--- a/util/iobuf.c ++++ b/util/iobuf.c +@@ -113,6 +113,8 @@ typedef struct { + static CLOSE_CACHE close_cache; + #endif + ++int iobuf_debug_mode; ++ + #ifdef _WIN32 + typedef struct { + int sock; +-- +2.26.2 + diff --git a/package/gnupg/Config.in b/package/gnupg/Config.in new file mode 100644 index 00000000..e92fca70 --- /dev/null +++ b/package/gnupg/Config.in @@ -0,0 +1,44 @@ +config BR2_PACKAGE_GNUPG + bool "gnupg" + select BR2_PACKAGE_ZLIB + help + GnuPG is the GNU project's complete and free implementation + of the OpenPGP standard as defined by RFC4880. GnuPG allows + to encrypt and sign your data and communication, features a + versatile key management system as well as access modules + for all kinds of public key directories. GnuPG, also known + as GPG, is a command line tool with features for easy + integration with other applications. + + http://gnupg.org/ + +if BR2_PACKAGE_GNUPG + +config BR2_PACKAGE_GNUPG_AES + bool "AES support" + help + Support for the AES cipher + +config BR2_PACKAGE_GNUPG_RSA + bool "RSA support" + help + Support for RSA public key algorithm + +config BR2_PACKAGE_GNUPG_GPGV + bool "gpgv" + help + gpgv is an OpenPGP signature verification tool. + + This program is actually a stripped-down version of gpg + which is only able to check signatures. It is somewhat + smaller than the fully-blown gpg and uses a different (and + simpler) way to check that the public keys used to make the + signature are valid. There are no configuration files and + only a few options are implemented. + +config BR2_PACKAGE_GNUPG_GPGSPLIT + bool "gpgsplit" + help + gpgsplit splits an OpenPGP message into packets. + +endif diff --git a/package/gnupg/Config.in.host b/package/gnupg/Config.in.host new file mode 100644 index 00000000..36864157 --- /dev/null +++ b/package/gnupg/Config.in.host @@ -0,0 +1,12 @@ +config BR2_PACKAGE_HOST_GNUPG + bool "host gnupg" + help + GnuPG is the GNU project's complete and free implementation + of the OpenPGP standard as defined by RFC4880. GnuPG allows + to encrypt and sign your data and communication, features a + versatile key management system as well as access modules + for all kinds of public key directories. GnuPG, also known + as GPG, is a command line tool with features for easy + integration with other applications. + + http://gnupg.org/ diff --git a/package/gnupg/gnupg.hash b/package/gnupg/gnupg.hash new file mode 100644 index 00000000..f4b33bda --- /dev/null +++ b/package/gnupg/gnupg.hash @@ -0,0 +1,5 @@ +# Locally computed based on signature +# https://gnupg.org/ftp/gcrypt/gnupg/gnupg-1.4.23.tar.bz2.sig +sha256 c9462f17e651b6507848c08c430c791287cd75491f8b5a8b50c6ed46b12678ba gnupg-1.4.23.tar.bz2 +# locally computed +sha256 fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7 COPYING diff --git a/package/gnupg/gnupg.mk b/package/gnupg/gnupg.mk new file mode 100644 index 00000000..68df11a0 --- /dev/null +++ b/package/gnupg/gnupg.mk @@ -0,0 +1,91 @@ +################################################################################ +# +# gnupg +# +################################################################################ + +GNUPG_VERSION = 1.4.23 +GNUPG_SOURCE = gnupg-$(GNUPG_VERSION).tar.bz2 +GNUPG_SITE = https://gnupg.org/ftp/gcrypt/gnupg +GNUPG_LICENSE = GPL-3.0+ +GNUPG_LICENSE_FILES = COPYING +GNUPG_DEPENDENCIES = zlib $(if $(BR2_PACKAGE_LIBICONV),libiconv) +GNUPG_CPE_ID_VENDOR = gnupg +GNUPG_SELINUX_MODULES = gpg +GNUPG_CONF_ENV = ac_cv_sys_symbol_underscore=no +GNUPG_CONF_OPTS = \ + --disable-rpath \ + --enable-minimal \ + --disable-regex \ + --enable-sha256 \ + --enable-sha512 + +HOST_GNUPG_DEPENDENCIES = host-zlib +HOST_GNUPG_CONF_OPTS = \ + --disable-rpath \ + --enable-minimal \ + --disable-regex \ + --enable-sha256 \ + --enable-sha512 \ + --enable-aes \ + --enable-rsa \ + --without-libcurl \ + --without-readline + +# gnupg doesn't support assembly for coldfire +ifeq ($(BR2_m68k_cf),y) +GNUPG_CONF_OPTS += --disable-asm +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +GNUPG_CONF_OPTS += --enable-bzip2 +GNUPG_DEPENDENCIES += bzip2 +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +GNUPG_CONF_ENV += ac_cv_path__libcurl_config=$(STAGING_DIR)/usr/bin/curl-config +GNUPG_DEPENDENCIES += libcurl +else +GNUPG_CONF_OPTS += --without-libcurl +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +GNUPG_DEPENDENCIES += readline +else +GNUPG_CONF_OPTS += --without-readline +endif + +ifeq ($(BR2_PACKAGE_GNUPG_AES),y) +GNUPG_CONF_OPTS += --enable-aes +else +GNUPG_CONF_OPTS += --disable-aes +endif + +ifeq ($(BR2_PACKAGE_GNUPG_RSA),y) +GNUPG_CONF_OPTS += --enable-rsa +else +GNUPG_CONF_OPTS += --disable-rsa +endif + +ifneq ($(BR2_PACKAGE_GNUPG_GPGV),y) +define GNUPG_REMOVE_GPGV + rm -f $(TARGET_DIR)/usr/bin/gpgv +endef +GNUPG_POST_INSTALL_TARGET_HOOKS += GNUPG_REMOVE_GPGV +endif + +ifneq ($(BR2_PACKAGE_GNUPG_GPGSPLIT),y) +define GNUPG_REMOVE_GPGSPLIT + rm -f $(TARGET_DIR)/usr/bin/gpgsplit +endef +GNUPG_POST_INSTALL_TARGET_HOOKS += GNUPG_REMOVE_GPGSPLIT +endif + +define GNUPG_FIXUP_GPG_ZIP + test -f $(TARGET_DIR)/usr/bin/gpg-zip && \ + $(SED) 's%^TAR=.*%TAR=/bin/tar%' $(TARGET_DIR)/usr/bin/gpg-zip +endef +GNUPG_POST_INSTALL_TARGET_HOOKS += GNUPG_FIXUP_GPG_ZIP + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/gnupg2/Config.in b/package/gnupg2/Config.in new file mode 100644 index 00000000..043d5355 --- /dev/null +++ b/package/gnupg2/Config.in @@ -0,0 +1,53 @@ +comment "gnupg2 needs a toolchain w/ threads and dynamic library support" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS + +# helper to make it easier to select gnupg2 or gnupg; usage: +# select BR2_PACKAGE_GNUPG2 if BR2_PACKAGE_GNUPG2_DEPENDS && !BR2_PACKAGE_GNUPG +# select BR2_PACKAGE_GNUPG if !BR2_PACKAGE_GNUPG2_DEPENDS + +config BR2_PACKAGE_GNUPG2_DEPENDS + bool + default y + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error + depends on BR2_TOOLCHAIN_HAS_THREADS # libnpth + depends on BR2_USE_MMU # libassuan, libnpth + depends on !BR2_STATIC_LIBS + +config BR2_PACKAGE_GNUPG2 + bool "gnupg2" + depends on BR2_PACKAGE_GNUPG2_DEPENDS + depends on !BR2_PACKAGE_GNUPG + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_LIBGPG_ERROR + select BR2_PACKAGE_LIBGCRYPT + select BR2_PACKAGE_LIBASSUAN + select BR2_PACKAGE_LIBKSBA + select BR2_PACKAGE_LIBNPTH + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + GnuPG is the GNU project's complete and free implementation + of the OpenPGP standard as defined by RFC4880. GnuPG allows + to encrypt and sign your data and communication, features a + versatile key management system as well as access modules + for all kinds of public key directories. GnuPG, also known + as GPG, is a command line tool with features for easy + integration with other applications. + + http://gnupg.org/ + +if BR2_PACKAGE_GNUPG2 + +config BR2_PACKAGE_GNUPG2_GPGV + bool "gpgv" + help + gpgv is an OpenPGP signature verification tool. + + This program is actually a stripped-down version of gpg + which is only able to check signatures. It is somewhat + smaller than the fully-blown gpg and uses a different (and + simpler) way to check that the public keys used to make the + signature are valid. There are no configuration files and + only a few options are implemented. + +endif diff --git a/package/gnupg2/Config.in.host b/package/gnupg2/Config.in.host new file mode 100644 index 00000000..c636cbee --- /dev/null +++ b/package/gnupg2/Config.in.host @@ -0,0 +1,13 @@ +config BR2_PACKAGE_HOST_GNUPG2 + bool "host gnupg2" + depends on !BR2_PACKAGE_HOST_GNUPG + help + GnuPG is the GNU project's complete and free implementation + of the OpenPGP standard as defined by RFC4880. GnuPG allows + to encrypt and sign your data and communication, features a + versatile key management system as well as access modules + for all kinds of public key directories. GnuPG, also known + as GPG, is a command line tool with features for easy + integration with other applications. + + http://gnupg.org/ diff --git a/package/gnupg2/gnupg2.hash b/package/gnupg2/gnupg2.hash new file mode 100644 index 00000000..8bb64c9e --- /dev/null +++ b/package/gnupg2/gnupg2.hash @@ -0,0 +1,5 @@ +# From https://www.gnupg.org/download/integrity_check.html +sha1 ae0935ead29a2dfa34d6b48d70808652bc3ca73b gnupg-2.4.5.tar.bz2 +sha256 f68f7d75d06cb1635c336d34d844af97436c3f64ea14bcb7c869782f96f44277 gnupg-2.4.5.tar.bz2 +# Locally calculated +sha256 bc2d6664f6276fa0a72d57633b3ae68dc7dcb677b71018bf08c8e93e509f1357 COPYING diff --git a/package/gnupg2/gnupg2.mk b/package/gnupg2/gnupg2.mk new file mode 100644 index 00000000..d38aaeec --- /dev/null +++ b/package/gnupg2/gnupg2.mk @@ -0,0 +1,89 @@ +################################################################################ +# +# gnupg2 +# +################################################################################ + +GNUPG2_VERSION = 2.4.5 +GNUPG2_SOURCE = gnupg-$(GNUPG2_VERSION).tar.bz2 +GNUPG2_SITE = https://gnupg.org/ftp/gcrypt/gnupg +GNUPG2_LICENSE = GPL-3.0+ +GNUPG2_LICENSE_FILES = COPYING +GNUPG2_CPE_ID_VENDOR = gnupg +GNUPG2_CPE_ID_PRODUCT = gnupg +GNUPG2_SELINUX_MODULES = gpg +GNUPG2_DEPENDENCIES = zlib libgpg-error libgcrypt libassuan libksba libnpth \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) host-pkgconf +HOST_GNUPG2_DEPENDENCIES = host-zlib host-libgpg-error host-libgcrypt host-libassuan \ + host-libksba host-libnpth host-pkgconf + +GNUPG2_CONF_OPTS = \ + --disable-rpath \ + --with-libgpg-error-prefix=$(STAGING_DIR)/usr \ + --with-libgcrypt-prefix=$(STAGING_DIR)/usr \ + --with-libassuan-prefix=$(STAGING_DIR)/usr \ + --with-ksba-prefix=$(STAGING_DIR)/usr \ + --with-npth-prefix=$(STAGING_DIR)/usr + +HOST_GNUPG2_CONF_OPTS = \ + --with-gpg-error-prefix=$(HOST_DIR) \ + --with-libgcrypt-prefix=$(HOST_DIR) \ + --with-libassuan-prefix=$(HOST_DIR) \ + --with-ksba-prefix=$(HOST_DIR) \ + --with-npth-prefix=$(HOST_DIR) \ + --disable-bzip2 \ + --disable-gnutls \ + --disable-ccid-driver \ + --without-readline \ + --disable-sqlite + +# Force the path to "gpgrt-config" (from the libgpg-error package) to +# avoid using the one on host, if present. +GNUPG2_CONF_ENV += GPGRT_CONFIG=$(STAGING_DIR)/usr/bin/gpgrt-config +HOST_GNUPG2_CONF_ENV += GPGRT_CONFIG=$(HOST_DIR)/bin/gpgrt-config + +ifneq ($(BR2_PACKAGE_GNUPG2_GPGV),y) +define GNUPG2_REMOVE_GPGV + rm -f $(TARGET_DIR)/usr/bin/gpgv +endef +GNUPG2_POST_INSTALL_TARGET_HOOKS += GNUPG2_REMOVE_GPGV +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +GNUPG2_CONF_OPTS += --enable-bzip2 --with-bzip2=$(STAGING_DIR) +GNUPG2_DEPENDENCIES += bzip2 +else +GNUPG2_CONF_OPTS += --disable-bzip2 +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +GNUPG2_CONF_OPTS += --enable-gnutls +GNUPG2_DEPENDENCIES += gnutls +else +GNUPG2_CONF_OPTS += --disable-gnutls +endif + +ifeq ($(BR2_PACKAGE_LIBUSB),y) +GNUPG2_CONF_ENV += CPPFLAGS="$(TARGET_CPPFLAGS) -I$(STAGING_DIR)/usr/include/libusb-1.0" +GNUPG2_CONF_OPTS += --enable-ccid-driver +GNUPG2_DEPENDENCIES += libusb +else +GNUPG2_CONF_OPTS += --disable-ccid-driver +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +GNUPG2_CONF_OPTS += --with-readline=$(STAGING_DIR) +GNUPG2_DEPENDENCIES += readline +else +GNUPG2_CONF_OPTS += --without-readline +endif + +ifeq ($(BR2_PACKAGE_SQLITE),y) +GNUPG2_CONF_OPTS += --enable-sqlite +GNUPG2_DEPENDENCIES += sqlite +else +GNUPG2_CONF_OPTS += --disable-sqlite +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/gnuplot/0001-configure-add-without-demo-option.patch b/package/gnuplot/0001-configure-add-without-demo-option.patch new file mode 100644 index 00000000..4eb9833f --- /dev/null +++ b/package/gnuplot/0001-configure-add-without-demo-option.patch @@ -0,0 +1,59 @@ +Add options to enable/disable docs and demos + +Originally written by Anthony Viallard +. + +Signed-off-by: Thomas Petazzoni +[Vincent: adapt patch to 5.0.5 version] +Signed-off-by: Vicente Olivert Riera +[Michael: adapt patch to 5.4.0 version] +Signed-off-by: Michael Fischer +[Michael: adapt patch to 6.0.0 version] +Signed-off-by: Michael Fischer + +--- a/configure.ac 2023-12-19 00:28:58.000000000 +0100 ++++ b/configure.ac 2024-05-13 15:41:18.313920528 +0200 +@@ -715,6 +715,32 @@ + + dnl Process rest of with and enable options + ++dnl Whether we want to build the doc files ++dnl Does nothing here, is passed on to the doc subdir ++AC_ARG_ENABLE(doc,dnl ++[ --disable-doc do not build doc files]) ++dnl build doc files ++if test "$enable_doc" != no; then ++ AC_CONFIG_SUBDIRS(docs) ++ DOCSUBDIR=docs ++else ++ DOCSUBDIR= ++fi ++AC_SUBST(DOCSUBDIR) ++ ++dnl Whether we want to build the demo files ++dnl Does nothing here, is passed on to the demo subdir ++AC_ARG_ENABLE(demo,dnl ++[ --disable-demo do not build demo files]) ++dnl build demo files ++if test "$enable_demo" != no; then ++ AC_CONFIG_SUBDIRS(demo) ++ DEMOSUBDIR=demo ++else ++ DEMOSUBDIR= ++fi ++AC_SUBST(DEMOSUBDIR) ++ + dnl without-extra-coordinate may leave a hole in "struct coordinate" + AC_ARG_WITH(extra-coordinate,dnl + [ --without-extra-coordinate leave possible hole in struct coordinate],,) +--- a/Makefile.am 2023-12-19 00:28:58.000000000 +0100 ++++ b/Makefile.am 2024-05-13 15:54:21.189906680 +0200 +@@ -1,7 +1,7 @@ + ## Process this file with automake to produce Makefile.in -*-Makefile-*- + AUTOMAKE_OPTIONS = foreign + +-SUBDIRS = config m4 term src docs man demo share ++SUBDIRS = config m4 term src $(DOCSUBDIR) man $(DEMOSUBDIR) share + + EXTRA_DIST = BUGS Copyright FAQ.pdf INSTALL INSTALL.gnu \ + PATCHLEVEL PGPKEYS README RELEASE_NOTES \ diff --git a/package/gnuplot/Config.in b/package/gnuplot/Config.in new file mode 100644 index 00000000..8068a728 --- /dev/null +++ b/package/gnuplot/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_GNUPLOT + bool "gnuplot" + select BR2_PACKAGE_READLINE if !BR2_PACKAGE_LIBEDIT + help + A portable command-line driven graphing utility. + + http://www.gnuplot.info/ diff --git a/package/gnuplot/gnuplot.hash b/package/gnuplot/gnuplot.hash new file mode 100644 index 00000000..40723388 --- /dev/null +++ b/package/gnuplot/gnuplot.hash @@ -0,0 +1,6 @@ +# From https://sourceforge.net/projects/gnuplot/files/gnuplot/6.0.1/ +md5 744fde2362fb20db6cfc58de73f96e9c gnuplot-6.0.1.tar.gz +sha1 ce1aaeff632c78cba2b3ca8142cf130bfd411478 gnuplot-6.0.1.tar.gz +# Locally computed +sha256 e85a660c1a2a1808ff24f7e69981ffcbac66a45c9dcf711b65610b26ea71379a gnuplot-6.0.1.tar.gz +sha256 895928ec0735cca1c8cec42656c7e314a065d0242813bb8693c0c1bf61fd4e4d Copyright diff --git a/package/gnuplot/gnuplot.mk b/package/gnuplot/gnuplot.mk new file mode 100644 index 00000000..adb9ce6a --- /dev/null +++ b/package/gnuplot/gnuplot.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# gnuplot +# +################################################################################ + +GNUPLOT_VERSION = 6.0.1 +GNUPLOT_SITE = http://downloads.sourceforge.net/project/gnuplot/gnuplot/$(GNUPLOT_VERSION) +GNUPLOT_LICENSE = gnuplot license (open source) +GNUPLOT_LICENSE_FILES = Copyright +GNUPLOT_CPE_ID_VALID = YES + +GNUPLOT_AUTORECONF = YES + +GNUPLOT_CONF_OPTS = \ + --without-x \ + --disable-raise-console \ + --disable-mouse \ + --without-tutorial \ + --disable-demo \ + --without-row-help \ + --disable-history-file \ + --disable-wxwidgets \ + --without-lua \ + --without-latex \ + --without-cairo \ + --without-qt + +# relocation truncated to fit: R_68K_GOT16O +ifeq ($(BR2_m68k_cf),y) +GNUPLOT_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -mxgot" +endif + +ifeq ($(BR2_PACKAGE_GD)$(BR2_PACKAGE_LIBPNG),yy) +GNUPLOT_CONF_OPTS += --with-gd +GNUPLOT_DEPENDENCIES += host-pkgconf gd +else +GNUPLOT_CONF_OPTS += --without-gd +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +GNUPLOT_CONF_OPTS += --with-readline=gnu +GNUPLOT_DEPENDENCIES += readline +else ifeq ($(BR2_PACKAGE_LIBEDIT),y) +GNUPLOT_CONF_OPTS += --with-readline=bsd +GNUPLOT_DEPENDENCIES += libedit +endif + +# Remove Javascript scripts, lua scripts, PostScript files +define GNUPLOT_REMOVE_UNNEEDED_FILES + $(RM) -rf $(TARGET_DIR)/usr/share/gnuplot +endef + +GNUPLOT_POST_INSTALL_TARGET_HOOKS += GNUPLOT_REMOVE_UNNEEDED_FILES + +$(eval $(autotools-package)) diff --git a/package/gnuradio/0001-blocks-runtime-io_signature-include-spdlog-ranges.h-.patch b/package/gnuradio/0001-blocks-runtime-io_signature-include-spdlog-ranges.h-.patch new file mode 100644 index 00000000..6a08b8ed --- /dev/null +++ b/package/gnuradio/0001-blocks-runtime-io_signature-include-spdlog-ranges.h-.patch @@ -0,0 +1,38 @@ +From 03c9a40883e610e54b8fc3c3ce1842d68d7ce2e4 Mon Sep 17 00:00:00 2001 +From: Kefu Chai +Date: Mon, 15 Jul 2024 09:27:16 +0800 +Subject: [PATCH] blocks,runtime: io_signature: include spdlog/*/ranges.h for + using fmt::join() + +fmt::join() was moved into fmt/ranges.h since fmt 11, so let's +include the corresponding header in spdlog for using it. + +Signed-off-by: Kefu Chai +(cherry picked from commit 19b070051c1c2b5fb6f2da8fb6422b27418c3dfa) +Signed-off-by: Jeff Long +Upstream: https://github.com/gnuradio/gnuradio/commit/ead459813367e7fd679dad067d1b020010d49b4f +[Julien: backported commit ead45981 from v3.10.11.0] +Signed-off-by: Julien Olivain +--- + gr-blocks/lib/message_debug_impl.cc | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/gr-blocks/lib/message_debug_impl.cc b/gr-blocks/lib/message_debug_impl.cc +index 1e81aec0d..415d2be97 100644 +--- a/gr-blocks/lib/message_debug_impl.cc ++++ b/gr-blocks/lib/message_debug_impl.cc +@@ -14,6 +14,11 @@ + #include + #include + #include ++#if __has_include() ++#include ++#elif __has_include() ++#include ++#endif + #include + #include + #include +-- +2.46.0 + diff --git a/package/gnuradio/Config.in b/package/gnuradio/Config.in new file mode 100644 index 00000000..d9ad6506 --- /dev/null +++ b/package/gnuradio/Config.in @@ -0,0 +1,181 @@ +comment "gnuradio needs a toolchain w/ C++, NPTL, wchar, dynamic library, gcc >= 8" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_8 + +comment "gnuradio needs a toolchain not affected by GCC bug 43744" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_43744 + +config BR2_PACKAGE_GNURADIO + bool "gnuradio" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_USE_MMU # use fork() + depends on BR2_USE_WCHAR # boost + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic, boost-thread + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_43744 + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_ATOMIC + select BR2_PACKAGE_BOOST_DATE_TIME + select BR2_PACKAGE_BOOST_PROGRAM_OPTIONS + select BR2_PACKAGE_BOOST_REGEX + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_THREAD + select BR2_PACKAGE_LOG4CPP + select BR2_PACKAGE_GMP + select BR2_PACKAGE_SPDLOG + select BR2_PACKAGE_VOLK + help + GNU Radio is a free & open-source software development + toolkit that provides signal processing blocks to implement + software radios. It can be used with readily-available + low-cost external RF hardware to create software-defined + radios, or without hardware in a simulation-like + environment. It is widely used in hobbyist, academic and + commercial environments to support both wireless + communications research and real-world radio systems. + + http://gnuradio.org/ + +if BR2_PACKAGE_GNURADIO + +config BR2_PACKAGE_GNURADIO_AUDIO + bool "gr-audio" + select BR2_PACKAGE_ALSA_LIB if !BR2_PACKAGE_PORTAUDIO + help + Add audio source/sink to GNU Radio + +config BR2_PACKAGE_GNURADIO_BLOCKS + bool "blocks support" + help + GNU Radio basic block library + +config BR2_PACKAGE_GNURADIO_CTRLPORT + bool "ctrlport support" + help + GNU Radio ctrlport block + +config BR2_PACKAGE_GNURADIO_DTV + bool "gr-dtv support" + select BR2_PACKAGE_GNURADIO_ANALOG + select BR2_PACKAGE_GNURADIO_FEC + select BR2_PACKAGE_GNURADIO_FILTER + help + various digital television standards blocks + +config BR2_PACKAGE_GNURADIO_FEC + bool "gr-fec support" + select BR2_PACKAGE_GNURADIO_BLOCKS + select BR2_PACKAGE_GSL + help + FEC signal processing blocks + +config BR2_PACKAGE_GNURADIO_PYTHON + bool "python support" + depends on BR2_PACKAGE_PYTHON3 + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy + depends on BR2_HOST_GCC_AT_LEAST_9 # host-python-numpy + select BR2_PACKAGE_BOOST_PYTHON + select BR2_PACKAGE_PYTHON_NUMPY # runtime + select BR2_PACKAGE_PYTHON_PYBIND + select BR2_PACKAGE_PYTHON_SIX # runtime + help + Enable python component + +comment "python support needs a glibc or musl toolchain w/ host gcc >= 9" + depends on !BR2_HOST_GCC_AT_LEAST_9 || \ + !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) + +config BR2_PACKAGE_GNURADIO_UTILS + bool "gr-utils support" + depends on BR2_PACKAGE_GNURADIO_PYTHON + help + Misc python utilities + +config BR2_PACKAGE_GNURADIO_ZEROMQ + bool "gr-zeromq support" + select BR2_PACKAGE_CPPZMQ + select BR2_PACKAGE_PYTHON_PYZMQ if BR2_PACKAGE_GNURADIO_PYTHON + help + zeromq communication support + +config BR2_PACKAGE_GNURADIO_ANALOG + bool "gr-analog support" + select BR2_PACKAGE_GNURADIO_FILTER + help + Analog communications blocks + +config BR2_PACKAGE_GNURADIO_CHANNELS + bool "gr-channels support" + select BR2_PACKAGE_GNURADIO_ANALOG + help + Channel model blocks + +config BR2_PACKAGE_GNURADIO_DIGITAL + bool "gr-digital support" + select BR2_PACKAGE_GNURADIO_ANALOG + help + Digital communications blocks + +config BR2_PACKAGE_GNURADIO_FFT + bool "gr-fft support" + select BR2_PACKAGE_FFTW + select BR2_PACKAGE_FFTW_SINGLE + select BR2_PACKAGE_GNURADIO_BLOCKS + help + FFT signal processing blocks + +config BR2_PACKAGE_GNURADIO_FILTER + bool "gr-filter support" + select BR2_PACKAGE_GNURADIO_FFT + help + Filter signal processing blocks + +config BR2_PACKAGE_GNURADIO_IIO + bool "gr-iio support" + select BR2_PACKAGE_LIBIIO + select BR2_PACKAGE_GNURADIO_BLOCKS + help + IIO support + +config BR2_PACKAGE_GNURADIO_NETWORK + bool "gr-network support" + select BR2_PACKAGE_GNURADIO_BLOCKS + help + TCP and UDP source/sink blocks + +config BR2_PACKAGE_GNURADIO_QTGUI + bool "gr-qtgui" + depends on BR2_PACKAGE_GNURADIO_PYTHON + depends on BR2_PACKAGE_QT5 + select BR2_PACKAGE_GNURADIO_FFT + select BR2_PACKAGE_GNURADIO_FILTER + select BR2_PACKAGE_PYTHON_PYQT5 + select BR2_PACKAGE_QT5BASE_FONTCONFIG # runtime + select BR2_PACKAGE_QT5BASE_GUI # runtime + select BR2_PACKAGE_QT5BASE_WIDGETS # runtime + select BR2_PACKAGE_QWT + help + GNU Radio Qt scopes + +config BR2_PACKAGE_GNURADIO_TRELLIS + bool "gr-trellis support" + select BR2_PACKAGE_GNURADIO_DIGITAL + help + Trellis coded modulation blocks + +config BR2_PACKAGE_GNURADIO_UHD + bool "gr-uhd support" + select BR2_PACKAGE_UHD + select BR2_PACKAGE_GNURADIO_ANALOG + select BR2_PACKAGE_GNURADIO_BLOCKS + select BR2_PACKAGE_GNURADIO_FILTER + help + UHD support + +endif diff --git a/package/gnuradio/gnuradio.hash b/package/gnuradio/gnuradio.hash new file mode 100644 index 00000000..f41f5a78 --- /dev/null +++ b/package/gnuradio/gnuradio.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 55156650ada130600c70bc2ab38eee718fc1d23011be548471e888399f207ddc gnuradio-3.10.7.0.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/gnuradio/gnuradio.mk b/package/gnuradio/gnuradio.mk new file mode 100644 index 00000000..bdaab86f --- /dev/null +++ b/package/gnuradio/gnuradio.mk @@ -0,0 +1,177 @@ +################################################################################ +# +# gnuradio +# +################################################################################ + +GNURADIO_VERSION = 3.10.7.0 +GNURADIO_SITE = $(call github,gnuradio,gnuradio,v$(GNURADIO_VERSION)) +GNURADIO_LICENSE = GPL-3.0+ +GNURADIO_LICENSE_FILES = COPYING + +GNURADIO_SUPPORTS_IN_SOURCE_BUILD = NO + +GNURADIO_DEPENDENCIES = \ + host-python3 \ + boost \ + log4cpp \ + gmp \ + spdlog \ + volk + +GNURADIO_CONF_OPTS = \ + -DPYTHON_EXECUTABLE=$(HOST_DIR)/bin/python3 \ + -DENABLE_DEFAULT=OFF \ + -DENABLE_EXAMPLES=OFF \ + -DENABLE_GNURADIO_RUNTIME=ON \ + -DENABLE_TESTING=OFF \ + -DXMLTO_EXECUTABLE=NOTFOUND + +# For third-party blocks, the gnuradio libraries are mandatory at +# compile time. +GNURADIO_INSTALL_STAGING = YES + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +GNURADIO_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_ANALOG),y) +GNURADIO_CONF_OPTS += -DENABLE_GR_ANALOG=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_ANALOG=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_AUDIO),y) +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +GNURADIO_DEPENDENCIES += alsa-lib +endif +ifeq ($(BR2_PACKAGE_PORTAUDIO),y) +GNURADIO_DEPENDENCIES += portaudio +endif +GNURADIO_CONF_OPTS += -DENABLE_GR_AUDIO=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_AUDIO=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_BLOCKS),y) +GNURADIO_CONF_OPTS += -DENABLE_GR_BLOCKS=ON +ifeq ($(BR2_PACKAGE_LIBSNDFILE),y) +GNURADIO_DEPENDENCIES += libsndfile +endif +else +GNURADIO_CONF_OPTS += -DENABLE_GR_BLOCKS=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_CHANNELS),y) +GNURADIO_CONF_OPTS += -DENABLE_GR_CHANNELS=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_CHANNELS=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_CTRLPORT),y) +GNURADIO_CONF_OPTS += -DENABLE_GR_CTRLPORT=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_CTRLPORT=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_DIGITAL),y) +GNURADIO_CONF_OPTS += -DENABLE_GR_DIGITAL=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_DIGITAL=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_DTV),y) +GNURADIO_CONF_OPTS += -DENABLE_GR_DTV=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_DTV=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_FEC),y) +GNURADIO_DEPENDENCIES += gsl +GNURADIO_CONF_OPTS += -DENABLE_GR_FEC=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_FEC=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_FFT),y) +GNURADIO_DEPENDENCIES += fftw-single +GNURADIO_CONF_OPTS += -DENABLE_GR_FFT=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_FFT=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_FILTER),y) +GNURADIO_CONF_OPTS += -DENABLE_GR_FILTER=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_FILTER=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_NETWORK),y) +GNURADIO_CONF_OPTS += -DENABLE_GR_NETWORK=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_NETWORK=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_IIO),y) +GNURADIO_CONF_OPTS += -DENABLE_GR_IIO=ON +GNURADIO_DEPENDENCIES += libiio +else +GNURADIO_CONF_OPTS += -DENABLE_GR_IIO=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_PYTHON),y) +GNURADIO_DEPENDENCIES += python3 python-pybind \ + host-python-numpy host-python-packaging +GNURADIO_CONF_OPTS += -DENABLE_PYTHON=ON +# mandatory to avoid pybind11 to overwrite variables provided +# by gnuradio and buildroot +GNURADIO_CONF_OPTS += -DPYBIND11_PYTHONLIBS_OVERWRITE=OFF +# mandatory to avoid pybind11 to force libraries extensions +# with a name based on host architecture +GNURADIO_CONF_ENV += _PYTHON_SYSCONFIGDATA_NAME="$(PKG_PYTHON_SYSCONFIGDATA_NAME)" \ + PYTHONPATH=$(PYTHON3_PATH) +# mandatory to install python modules in site-packages and to use +# correct path for python libraries +GNURADIO_CONF_OPTS += -DGR_PYTHON_RELATIVE=ON \ + -DGR_PYTHON_DIR=lib/python$(PYTHON3_VERSION_MAJOR)/site-packages +else +GNURADIO_CONF_OPTS += -DENABLE_PYTHON=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_QTGUI),y) +GNURADIO_DEPENDENCIES += qt5base python-pyqt5 qwt +GNURADIO_CONF_OPTS += -DENABLE_GR_QTGUI=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_QTGUI=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_TRELLIS),y) +GNURADIO_CONF_OPTS += -DENABLE_GR_TRELLIS=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_TRELLIS=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_UHD),y) +GNURADIO_DEPENDENCIES += uhd +GNURADIO_CONF_OPTS += -DENABLE_GR_UHD=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_UHD=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_UTILS),y) +GNURADIO_CONF_OPTS += -DENABLE_GR_UTILS=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_UTILS=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_ZEROMQ),y) +GNURADIO_DEPENDENCIES += cppzmq +ifeq ($(BR2_PACKAGE_GNURADIO_PYTHON),y) +GNURADIO_DEPENDENCIES += python-pyzmq +endif +GNURADIO_CONF_OPTS += -DENABLE_GR_ZEROMQ=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_ZEROMQ=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/gnutls/Config.in b/package/gnutls/Config.in new file mode 100644 index 00000000..59af32bf --- /dev/null +++ b/package/gnutls/Config.in @@ -0,0 +1,41 @@ +config BR2_PACKAGE_GNUTLS + bool "gnutls" + # https://gitlab.com/gnutls/gnutls/issues/203 + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR + select BR2_PACKAGE_LIBTASN1 + select BR2_PACKAGE_LIBUNISTRING + select BR2_PACKAGE_NETTLE + help + GnuTLS is a secure communications library implementing the SSL + and TLS protocols and technologies around them. + + https://www.gnutls.org/ + +if BR2_PACKAGE_GNUTLS + +config BR2_PACKAGE_GNUTLS_OPENSSL + bool "OpenSSL compatibility library" + help + Install OpenSSL compatibility library. + +config BR2_PACKAGE_GNUTLS_TOOLS + bool "install tools" + help + Install GnuTLS command line tools for various cryptographic + tasks. + +config BR2_PACKAGE_GNUTLS_ENABLE_SSL2 + bool "enable SSLv2" + help + Enable SSLv2 protocol. + +config BR2_PACKAGE_GNUTLS_ENABLE_GOST + bool "enable GOST" + help + Enable GOST cipher. + +endif + +comment "gnutls needs a toolchain w/ wchar, dynamic library" + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS diff --git a/package/gnutls/gnutls.hash b/package/gnutls/gnutls.hash new file mode 100644 index 00000000..d9f830ec --- /dev/null +++ b/package/gnutls/gnutls.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +# https://www.gnupg.org/ftp/gcrypt/gnutls/v3.8/gnutls-3.8.6.tar.xz.sig +sha256 2e1588aae53cb32d43937f1f4eca28febd9c0c7aa1734fc5dd61a7e81e0ebcdd gnutls-3.8.6.tar.xz +# Locally calculated +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 doc/COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 doc/COPYING.LESSER diff --git a/package/gnutls/gnutls.mk b/package/gnutls/gnutls.mk new file mode 100644 index 00000000..479922ee --- /dev/null +++ b/package/gnutls/gnutls.mk @@ -0,0 +1,133 @@ +################################################################################ +# +# gnutls +# +################################################################################ + +# When bumping, make sure *all* --without-libfoo-prefix options are in GNUTLS_CONF_OPTS +GNUTLS_VERSION_MAJOR = 3.8 +GNUTLS_VERSION = $(GNUTLS_VERSION_MAJOR).6 +GNUTLS_SOURCE = gnutls-$(GNUTLS_VERSION).tar.xz +GNUTLS_SITE = https://www.gnupg.org/ftp/gcrypt/gnutls/v$(GNUTLS_VERSION_MAJOR) +GNUTLS_LICENSE = LGPL-2.1+ (core library) +GNUTLS_LICENSE_FILES = doc/COPYING.LESSER + +GNUTLS_DEPENDENCIES = host-pkgconf libtasn1 libunistring nettle +GNUTLS_CPE_ID_VENDOR = gnu +# Don't add an optional dependency on tpm2-tss as it creates a +# circular dependency: tpm2-tss -> libcurl -> gnutls -> tmp2-tss. +GNUTLS_CONF_OPTS = \ + --disable-doc \ + --disable-libdane \ + --disable-rpath \ + --disable-tests \ + --without-included-unistring \ + --without-libcrypto-prefix \ + --without-libdl-prefix \ + --without-libev-prefix \ + --without-libiconv-prefix \ + --without-libintl-prefix \ + --without-libpthread-prefix \ + --without-libseccomp-prefix \ + --without-librt-prefix \ + --without-libz-prefix \ + --without-tpm \ + --without-tpm2 \ + $(if $(BR2_PACKAGE_GNUTLS_TOOLS),--enable-tools,--disable-tools) \ + $(if $(BR2_PACKAGE_GNUTLS_ENABLE_SSL2),--enable,--disable)-ssl2-support \ + $(if $(BR2_PACKAGE_GNUTLS_ENABLE_GOST),--enable,--disable)-gost +GNUTLS_CONF_ENV = gl_cv_socket_ipv6=yes \ + ac_cv_header_wchar_h=$(if $(BR2_USE_WCHAR),yes,no) \ + gt_cv_c_wchar_t=$(if $(BR2_USE_WCHAR),yes,no) \ + gt_cv_c_wint_t=$(if $(BR2_USE_WCHAR),yes,no) \ + gl_cv_func_gettimeofday_clobber=no +GNUTLS_INSTALL_STAGING = YES + +HOST_GNUTLS_DEPENDENCIES = host-pkgconf host-libtasn1 host-libunistring host-nettle +HOST_GNUTLS_CONF_OPTS = \ + --disable-doc \ + --disable-libdane \ + --disable-rpath \ + --disable-tests \ + --without-included-unistring \ + --without-libcrypto-prefix \ + --without-libdl-prefix \ + --without-libev-prefix \ + --without-libiconv-prefix \ + --without-libintl-prefix \ + --without-libpthread-prefix \ + --without-libseccomp-prefix \ + --without-librt-prefix \ + --without-libz-prefix \ + --without-tpm \ + --without-tpm2 \ + --disable-openssl-compatibility \ + --without-libbrotli \ + --without-idn \ + --without-p11-kit \ + --without-zlib \ + --without-libzstd + +ifeq ($(BR2_PACKAGE_GNUTLS_OPENSSL),y) +GNUTLS_LICENSE += , GPL-3.0+ (gnutls-openssl library) +GNUTLS_LICENSE_FILES += doc/COPYING +GNUTLS_CONF_OPTS += --enable-openssl-compatibility +else +GNUTLS_CONF_OPTS += --disable-openssl-compatibility +endif + +ifeq ($(BR2_PACKAGE_BROTLI),y) +GNUTLS_CONF_OPTS += --with-libbrotli +GNUTLS_DEPENDENCIES += brotli +else +GNUTLS_CONF_OPTS += --without-libbrotli +endif + +ifeq ($(BR2_PACKAGE_CRYPTODEV_LINUX),y) +GNUTLS_CONF_OPTS += --enable-cryptodev +GNUTLS_DEPENDENCIES += cryptodev-linux +endif + +ifeq ($(BR2_PACKAGE_LIBIDN2),y) +GNUTLS_CONF_OPTS += --with-idn +GNUTLS_DEPENDENCIES += libidn2 +else +GNUTLS_CONF_OPTS += --without-idn +endif + +ifeq ($(BR2_PACKAGE_P11_KIT),y) +GNUTLS_CONF_OPTS += --with-p11-kit +GNUTLS_DEPENDENCIES += p11-kit +else +GNUTLS_CONF_OPTS += --without-p11-kit +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +GNUTLS_CONF_OPTS += --with-zlib +GNUTLS_DEPENDENCIES += zlib +else +GNUTLS_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +GNUTLS_CONF_OPTS += --with-libzstd +GNUTLS_DEPENDENCIES += zstd +else +GNUTLS_CONF_OPTS += --without-libzstd +endif + +# Provide a default CA cert location +ifeq ($(BR2_PACKAGE_P11_KIT),y) +GNUTLS_CONF_OPTS += --with-default-trust-store-pkcs11=pkcs11:model=p11-kit-trust +else ifeq ($(BR2_PACKAGE_CA_CERTIFICATES),y) +GNUTLS_CONF_OPTS += --with-default-trust-store-file=/etc/ssl/certs/ca-certificates.crt +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +GNUTLS_LIBS += -latomic +endif + +GNUTLS_CONF_ENV += LIBS="$(GNUTLS_LIBS)" + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/go/Config.in.host b/package/go/Config.in.host new file mode 100644 index 00000000..11ce6df3 --- /dev/null +++ b/package/go/Config.in.host @@ -0,0 +1,70 @@ +# Target go packages should depend on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS +config BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + bool + default y + depends on BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE3_ARCH_SUPPORTS + # See https://go.dev/doc/install/source#environment + # See src/go/build/syslist.go for the list of supported architectures + depends on (BR2_arm && BR2_TOOLCHAIN_SUPPORTS_PIE) || BR2_aarch64 \ + || BR2_i386 || BR2_x86_64 || BR2_powerpc64le \ + || BR2_mips64 || BR2_mips64el || BR2_riscv || BR2_s390x + depends on !BR2_ARM_CPU_ARMV4 + # MIPS R6 support in Go has not yet been developed. + depends on !BR2_MIPS_CPU_MIPS64R6 + # Go doesn't support Risc-v 32-bit. + depends on !BR2_RISCV_32 + # Go requires the following Risc-v General (G) features: + depends on !BR2_riscv || (BR2_RISCV_ISA_RVI && \ + BR2_RISCV_ISA_RVM && BR2_RISCV_ISA_RVA && \ + BR2_RISCV_ISA_RVF && BR2_RISCV_ISA_RVD) + +config BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + bool + default y + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + # Go doesn't support CGO linking on MIPS64x platforms + # See: https://github.com/karalabe/xgo/issues/46 + depends on !BR2_mips64 && !BR2_mips64el + # go uses dlfcn.h + cgo for its plugin module + depends on !BR2_STATIC_LIBS + # cgo supports uses threads + depends on BR2_TOOLCHAIN_HAS_THREADS + +# Host go packages should depend on BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS +config BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS + bool + default y + depends on BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE3_ARCH_SUPPORTS + +# Go packages should select BR2_PACKAGE_HOST_GO +config BR2_PACKAGE_HOST_GO + bool + depends on BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS + +if BR2_PACKAGE_HOST_GO + +choice + prompt "Go compiler variant" + default BR2_PACKAGE_HOST_GO_SRC + help + Select a Go compiler variant. + + Default to 'host-go-src'. + +config BR2_PACKAGE_HOST_GO_SRC + bool "host go (source)" + help + This package will build the go compiler for the host. + +endchoice + +endif + +config BR2_PACKAGE_PROVIDES_HOST_GO + string + # Default to host-go-src, as the only provider for now + default "host-go-src" + +source "package/go/go-bootstrap-stage1/Config.in.host" +source "package/go/go-bootstrap-stage2/Config.in.host" +source "package/go/go-bootstrap-stage3/Config.in.host" diff --git a/package/go/go-bootstrap-stage1/Config.in.host b/package/go/go-bootstrap-stage1/Config.in.host new file mode 100644 index 00000000..56a743ca --- /dev/null +++ b/package/go/go-bootstrap-stage1/Config.in.host @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE1_ARCH_SUPPORTS + bool + # See src/cmd/dist/unix.c for the list of supported architectures + default y if BR2_HOSTARCH = "x86" + default y if BR2_HOSTARCH = "x86_64" + default y if BR2_HOSTARCH = "arm" diff --git a/package/go/go-bootstrap-stage1/go-bootstrap-stage1.hash b/package/go/go-bootstrap-stage1/go-bootstrap-stage1.hash new file mode 100644 index 00000000..0f186a5d --- /dev/null +++ b/package/go/go-bootstrap-stage1/go-bootstrap-stage1.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 f4ff5b5eb3a3cae1c993723f3eab519c5bae18866b5e5f96fe1102f0cb5c3e52 go1.4-bootstrap-20171003.tar.gz +sha256 dd26a7abddd02e2d0aba97805b31f248ef7835d9e10da289b22e3b8ab78b324d LICENSE diff --git a/package/go/go-bootstrap-stage1/go-bootstrap-stage1.mk b/package/go/go-bootstrap-stage1/go-bootstrap-stage1.mk new file mode 100644 index 00000000..3e4ee574 --- /dev/null +++ b/package/go/go-bootstrap-stage1/go-bootstrap-stage1.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# go-bootstrap-stage1 +# +################################################################################ + +# Use last C-based Go compiler: v1.4.x +# See https://golang.org/doc/install/source#bootstrapFromSource +GO_BOOTSTRAP_STAGE1_VERSION = 1.4-bootstrap-20171003 +GO_BOOTSTRAP_STAGE1_SITE = https://dl.google.com/go +GO_BOOTSTRAP_STAGE1_SOURCE = go$(GO_BOOTSTRAP_STAGE1_VERSION).tar.gz + +GO_BOOTSTRAP_STAGE1_LICENSE = BSD-3-Clause +GO_BOOTSTRAP_STAGE1_LICENSE_FILES = LICENSE + +HOST_GO_BOOTSTRAP_STAGE1_ROOT = $(HOST_DIR)/lib/go-$(GO_BOOTSTRAP_STAGE1_VERSION) + +# The go build system is not compatible with ccache, so use +# HOSTCC_NOCCACHE. See https://github.com/golang/go/issues/11685. +HOST_GO_BOOTSTRAP_STAGE1_MAKE_ENV = \ + GOOS=linux \ + GOROOT_FINAL="$(HOST_GO_BOOTSTRAP_STAGE1_ROOT)" \ + GOROOT="$(@D)" \ + GOBIN="$(@D)/bin" \ + CC=$(HOSTCC_NOCCACHE) \ + CGO_ENABLED=0 + +define HOST_GO_BOOTSTRAP_STAGE1_BUILD_CMDS + cd $(@D)/src && $(HOST_GO_BOOTSTRAP_STAGE1_MAKE_ENV) ./make.bash +endef + +define HOST_GO_BOOTSTRAP_STAGE1_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/bin/go $(HOST_GO_BOOTSTRAP_STAGE1_ROOT)/bin/go + $(INSTALL) -D -m 0755 $(@D)/bin/gofmt $(HOST_GO_BOOTSTRAP_STAGE1_ROOT)/bin/gofmt + + cp -a $(@D)/lib $(HOST_GO_BOOTSTRAP_STAGE1_ROOT)/ + cp -a $(@D)/pkg $(HOST_GO_BOOTSTRAP_STAGE1_ROOT)/ + + # The Go sources must be installed to the host/ tree for the Go stdlib. + cp -a $(@D)/src $(HOST_GO_BOOTSTRAP_STAGE1_ROOT)/ +endef + +$(eval $(host-generic-package)) diff --git a/package/go/go-bootstrap-stage2/Config.in.host b/package/go/go-bootstrap-stage2/Config.in.host new file mode 100644 index 00000000..967ddaed --- /dev/null +++ b/package/go/go-bootstrap-stage2/Config.in.host @@ -0,0 +1,4 @@ +config BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE2_ARCH_SUPPORTS + bool + default y + depends on BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE1_ARCH_SUPPORTS diff --git a/package/go/go-bootstrap-stage2/go-bootstrap-stage2.hash b/package/go/go-bootstrap-stage2/go-bootstrap-stage2.hash new file mode 100644 index 00000000..d61663ca --- /dev/null +++ b/package/go/go-bootstrap-stage2/go-bootstrap-stage2.hash @@ -0,0 +1,3 @@ +# From https://go.dev/dl +sha256 ccf36b53fb0024a017353c3ddb22c1f00bc7a8073c6aac79042da24ee34434d3 go1.19.13.src.tar.gz +sha256 2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067 LICENSE diff --git a/package/go/go-bootstrap-stage2/go-bootstrap-stage2.mk b/package/go/go-bootstrap-stage2/go-bootstrap-stage2.mk new file mode 100644 index 00000000..98bf624b --- /dev/null +++ b/package/go/go-bootstrap-stage2/go-bootstrap-stage2.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# go-bootstrap-stage2 +# +################################################################################ + +# Use last Go version that go-bootstrap-stage1 can build: v1.19.x +# See https://golang.org/doc/install/source#bootstrapFromSource +GO_BOOTSTRAP_STAGE2_VERSION = 1.19.13 +GO_BOOTSTRAP_STAGE2_SITE = https://storage.googleapis.com/golang +GO_BOOTSTRAP_STAGE2_SOURCE = go$(GO_BOOTSTRAP_STAGE2_VERSION).src.tar.gz + +GO_BOOTSTRAP_STAGE2_LICENSE = BSD-3-Clause +GO_BOOTSTRAP_STAGE2_LICENSE_FILES = LICENSE + +# Use go-bootstrap-stage1 to bootstrap. +HOST_GO_BOOTSTRAP_STAGE2_DEPENDENCIES = host-go-bootstrap-stage1 + +HOST_GO_BOOTSTRAP_STAGE2_ROOT = $(HOST_DIR)/lib/go-$(GO_BOOTSTRAP_STAGE2_VERSION) + +# The go build system is not compatible with ccache, so use +# HOSTCC_NOCCACHE. See https://github.com/golang/go/issues/11685. +HOST_GO_BOOTSTRAP_STAGE2_MAKE_ENV = \ + GO111MODULE=off \ + GOROOT_BOOTSTRAP=$(HOST_GO_BOOTSTRAP_STAGE1_ROOT) \ + GOROOT_FINAL=$(HOST_GO_BOOTSTRAP_STAGE2_ROOT) \ + GOROOT="$(@D)" \ + GOBIN="$(@D)/bin" \ + GOOS=linux \ + CC=$(HOSTCC_NOCCACHE) \ + CXX=$(HOSTCXX_NOCCACHE) \ + CGO_ENABLED=0 + +define HOST_GO_BOOTSTRAP_STAGE2_BUILD_CMDS + cd $(@D)/src && \ + $(HOST_GO_BOOTSTRAP_STAGE2_MAKE_ENV) ./make.bash $(if $(VERBOSE),-v) +endef + +define HOST_GO_BOOTSTRAP_STAGE2_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/bin/go $(HOST_GO_BOOTSTRAP_STAGE2_ROOT)/bin/go + $(INSTALL) -D -m 0755 $(@D)/bin/gofmt $(HOST_GO_BOOTSTRAP_STAGE2_ROOT)/bin/gofmt + + cp -a $(@D)/lib $(HOST_GO_BOOTSTRAP_STAGE2_ROOT)/ + + mkdir -p $(HOST_GO_BOOTSTRAP_STAGE2_ROOT)/pkg + cp -a $(@D)/pkg/include $(@D)/pkg/linux_* $(HOST_GO_BOOTSTRAP_STAGE2_ROOT)/pkg/ + cp -a $(@D)/pkg/tool $(HOST_GO_BOOTSTRAP_STAGE2_ROOT)/pkg/ + + # The Go sources must be installed to the host/ tree for the Go stdlib. + cp -a $(@D)/src $(HOST_GO_BOOTSTRAP_STAGE2_ROOT)/ +endef + +$(eval $(host-generic-package)) diff --git a/package/go/go-bootstrap-stage3/0001-cmd-dist-set-buildvcs-false-when-building-go-bootstr.patch b/package/go/go-bootstrap-stage3/0001-cmd-dist-set-buildvcs-false-when-building-go-bootstr.patch new file mode 100644 index 00000000..58f4581b --- /dev/null +++ b/package/go/go-bootstrap-stage3/0001-cmd-dist-set-buildvcs-false-when-building-go-bootstr.patch @@ -0,0 +1,71 @@ +From 6b05378097c6a386ed9912d2471976dc39504e86 Mon Sep 17 00:00:00 2001 +From: Christian Stewart +Date: Thu, 27 Jul 2023 21:28:47 -0700 +Subject: [PATCH] cmd/dist: set buildvcs=false when building go-bootstrap + +When building go-bootstrap as part of the make.bash process, the cmd/dist +invokes the bootstrap Go compiler to build the go_bootstrap tool: + +${GOROOT_BOOTSTRAP}/bin/go install -tags=math_big_pure_go compiler_bootstrap purego bootstrap/cmd/... + +If there is an invalid .git directory in a parent of ${GOROOT_BOOTSTRAP}, +make.bash will fail. Reproduction of the issue: + + mkdir go-issue-61620 + cd ./go-issue-61620 + wget https://go.dev/dl/go1.19.11.src.tar.gz + mkdir go-bootstrap + tar -xf go1.19.11.src.tar.gz -C ./go-bootstrap --strip-components=1 + cd ./go-bootstrap/src/ + bash make.bash + cd ../../ + wget https://go.dev/dl/go1.20.6.src.tar.gz + mkdir go + tar -xf go1.20.6.src.tar.gz -C ./go/ --strip-components=1 + printf "gitdir: ../../does/not/exist/.git" > ./.git + cd ./go/src/ + GOROOT_BOOTSTRAP=$(pwd)/../../go-bootstrap/ bash make.bash + +The build fails with the following error: + + Building Go toolchain1 using [snip]/go-1.19.10. + error obtaining VCS status: exit status 128 + Use -buildvcs=false to disable VCS stamping. + go tool dist: FAILED: [snip]/go-1.19.10/bin/go install -tags=math_big_pure_go \ + compiler_bootstrap purego bootstrap/cmd/...: exit status 1 + +This change unconditionally sets -buildvcs=false when compiling go-bootstrap. We +don't need the revision information in those binaries anyway. Setting this flag +was previously not done as we were unsure if the go-bootstrap compiler would be +new enough to support the buildvcs build flag. Since Go 1.20.x, Go 1.19.x is the +minimum version for go-bootstrap, and supports -buildvcs=false. We can now set +-buildvcs=false without worrying about compatibility. + +Related: https://github.com/golang/go/issues/54852 +Fixes: https://github.com/golang/go/issues/61620 + +Upstream: https://github.com/golang/go/pull/61621 + +Signed-off-by: Christian Stewart +Signed-off-by: Romain Naour +--- + src/cmd/dist/buildtool.go | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/cmd/dist/buildtool.go b/src/cmd/dist/buildtool.go +index a528d7aa76..3b411d6ebb 100644 +--- a/src/cmd/dist/buildtool.go ++++ b/src/cmd/dist/buildtool.go +@@ -221,6 +221,9 @@ func bootstrapBuildTools() { + cmd := []string{ + pathf("%s/bin/go", goroot_bootstrap), + "install", ++ // Fixes cases where an invalid .git is present in a parent of GOROOT_BOOTSTRAP. ++ // See: https://github.com/golang/go/issues/61620 ++ "-buildvcs=false", + "-tags=math_big_pure_go compiler_bootstrap purego", + } + if vflag > 0 { +-- +2.41.0 + diff --git a/package/go/go-bootstrap-stage3/Config.in.host b/package/go/go-bootstrap-stage3/Config.in.host new file mode 100644 index 00000000..1714c2fb --- /dev/null +++ b/package/go/go-bootstrap-stage3/Config.in.host @@ -0,0 +1,4 @@ +config BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE3_ARCH_SUPPORTS + bool + default y + depends on BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE2_ARCH_SUPPORTS diff --git a/package/go/go-bootstrap-stage3/go-bootstrap-stage3.hash b/package/go/go-bootstrap-stage3/go-bootstrap-stage3.hash new file mode 100644 index 00000000..b1aed10c --- /dev/null +++ b/package/go/go-bootstrap-stage3/go-bootstrap-stage3.hash @@ -0,0 +1,3 @@ +# From https://go.dev/dl +sha256 dc806cf75a87e1414b5b4c3dcb9dd3e9cc98f4cfccec42b7af617d5a658a3c43 go1.21.8.src.tar.gz +sha256 2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067 LICENSE diff --git a/package/go/go-bootstrap-stage3/go-bootstrap-stage3.mk b/package/go/go-bootstrap-stage3/go-bootstrap-stage3.mk new file mode 100644 index 00000000..bdc84595 --- /dev/null +++ b/package/go/go-bootstrap-stage3/go-bootstrap-stage3.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# go-bootstrap-stage3 +# +################################################################################ + +# Use last Go version that go-bootstrap-stage2 can build: v1.21.x +# See https://go.dev/doc/go1.22#bootstrap +GO_BOOTSTRAP_STAGE3_VERSION = 1.21.8 +GO_BOOTSTRAP_STAGE3_SITE = https://storage.googleapis.com/golang +GO_BOOTSTRAP_STAGE3_SOURCE = go$(GO_BOOTSTRAP_STAGE3_VERSION).src.tar.gz + +GO_BOOTSTRAP_STAGE3_LICENSE = BSD-3-Clause +GO_BOOTSTRAP_STAGE3_LICENSE_FILES = LICENSE + +# Use go-bootstrap-stage2 to bootstrap. +HOST_GO_BOOTSTRAP_STAGE3_DEPENDENCIES = host-go-bootstrap-stage2 + +HOST_GO_BOOTSTRAP_STAGE3_ROOT = $(HOST_DIR)/lib/go-$(GO_BOOTSTRAP_STAGE3_VERSION) + +# The go build system is not compatible with ccache, so use +# HOSTCC_NOCCACHE. See https://github.com/golang/go/issues/11685. +HOST_GO_BOOTSTRAP_STAGE3_MAKE_ENV = \ + GO111MODULE=off \ + GOCACHE=$(HOST_GO_HOST_CACHE) \ + GOROOT_BOOTSTRAP=$(HOST_GO_BOOTSTRAP_STAGE2_ROOT) \ + GOROOT_FINAL=$(HOST_GO_BOOTSTRAP_STAGE3_ROOT) \ + GOROOT="$(@D)" \ + GOBIN="$(@D)/bin" \ + GOOS=linux \ + CC=$(HOSTCC_NOCCACHE) \ + CXX=$(HOSTCXX_NOCCACHE) \ + CGO_ENABLED=0 + +define HOST_GO_BOOTSTRAP_STAGE3_BUILD_CMDS + cd $(@D)/src && \ + $(HOST_GO_BOOTSTRAP_STAGE3_MAKE_ENV) ./make.bash $(if $(VERBOSE),-v) +endef + +define HOST_GO_BOOTSTRAP_STAGE3_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/bin/go $(HOST_GO_BOOTSTRAP_STAGE3_ROOT)/bin/go + $(INSTALL) -D -m 0755 $(@D)/bin/gofmt $(HOST_GO_BOOTSTRAP_STAGE3_ROOT)/bin/gofmt + + cp -a $(@D)/lib $(HOST_GO_BOOTSTRAP_STAGE3_ROOT)/ + + mkdir -p $(HOST_GO_BOOTSTRAP_STAGE3_ROOT)/pkg + cp -a $(@D)/pkg/include $(HOST_GO_BOOTSTRAP_STAGE3_ROOT)/pkg/ + cp -a $(@D)/pkg/tool $(HOST_GO_BOOTSTRAP_STAGE3_ROOT)/pkg/ + + # The Go sources must be installed to the host/ tree for the Go stdlib. + cp -a $(@D)/src $(HOST_GO_BOOTSTRAP_STAGE3_ROOT)/ +endef + +$(eval $(host-generic-package)) diff --git a/package/go/go-src/0001-build.go-explicit-option-for-crosscompilation.patch b/package/go/go-src/0001-build.go-explicit-option-for-crosscompilation.patch new file mode 100644 index 00000000..992a83a6 --- /dev/null +++ b/package/go/go-src/0001-build.go-explicit-option-for-crosscompilation.patch @@ -0,0 +1,40 @@ +From 6aed475557032a7ff9009e9b4b691b40b561876a Mon Sep 17 00:00:00 2001 +From: Angelo Compagnucci +Date: Tue, 8 May 2018 16:08:44 +0200 +Subject: [PATCH] build.go: explicit option for crosscompilation + +Actually if GOHOSTOS == GOOS || GOHOSTARCH == GOARCH the go build system +assume it's not cross compiling and uses the same toolchain also for the +bootstrap. This is a problem in case the cross compilation mandates a +different toolchain for bootstrap and target. This patch adds +GO_ASSUME_CROSSCOMPILING varible to assure that in case of cross +compilation CC_FOR_TARGET can be different from CC. + +Signed-off-by: Angelo Compagnucci +Signed-off-by: Anisse Astier +--- + src/cmd/dist/build.go | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go +index 7c44c4a605..03500920c4 100644 +--- a/src/cmd/dist/build.go ++++ b/src/cmd/dist/build.go +@@ -286,12 +286,13 @@ func xinit() { + // $CC_FOR_goos_goarch, if set, applies only to goos/goarch. + func compilerEnv(envName, def string) map[string]string { + m := map[string]string{"": def} ++ crosscompiling := os.Getenv("GO_ASSUME_CROSSCOMPILING") + + if env := os.Getenv(envName); env != "" { + m[""] = env + } + if env := os.Getenv(envName + "_FOR_TARGET"); env != "" { +- if gohostos != goos || gohostarch != goarch { ++ if gohostos != goos || gohostarch != goarch || crosscompiling == "1" { + m[gohostos+"/"+gohostarch] = m[""] + } + m[""] = env +-- +2.35.1 + diff --git a/package/go/go-src/0002-cmd-dist-set-buildvcs-false-when-building-go-bootstr.patch b/package/go/go-src/0002-cmd-dist-set-buildvcs-false-when-building-go-bootstr.patch new file mode 100644 index 00000000..4f53356f --- /dev/null +++ b/package/go/go-src/0002-cmd-dist-set-buildvcs-false-when-building-go-bootstr.patch @@ -0,0 +1,73 @@ +From 6b05378097c6a386ed9912d2471976dc39504e86 Mon Sep 17 00:00:00 2001 +From: Christian Stewart +Date: Thu, 27 Jul 2023 21:28:47 -0700 +Subject: [PATCH] cmd/dist: set buildvcs=false when building go-bootstrap + +When building go-bootstrap as part of the make.bash process, the cmd/dist +invokes the bootstrap Go compiler to build the go_bootstrap tool: + +${GOROOT_BOOTSTRAP}/bin/go install -tags=math_big_pure_go compiler_bootstrap purego bootstrap/cmd/... + +If there is an invalid .git directory in a parent of ${GOROOT_BOOTSTRAP}, +make.bash will fail. Reproduction of the issue: + + mkdir go-issue-61620 + cd ./go-issue-61620 + wget https://go.dev/dl/go1.19.11.src.tar.gz + mkdir go-bootstrap + tar -xf go1.19.11.src.tar.gz -C ./go-bootstrap --strip-components=1 + cd ./go-bootstrap/src/ + bash make.bash + cd ../../ + wget https://go.dev/dl/go1.20.6.src.tar.gz + mkdir go + tar -xf go1.20.6.src.tar.gz -C ./go/ --strip-components=1 + printf "gitdir: ../../does/not/exist/.git" > ./.git + cd ./go/src/ + GOROOT_BOOTSTRAP=$(pwd)/../../go-bootstrap/ bash make.bash + +The build fails with the following error: + + Building Go toolchain1 using [snip]/go-1.19.10. + error obtaining VCS status: exit status 128 + Use -buildvcs=false to disable VCS stamping. + go tool dist: FAILED: [snip]/go-1.19.10/bin/go install -tags=math_big_pure_go \ + compiler_bootstrap purego bootstrap/cmd/...: exit status 1 + +This change unconditionally sets -buildvcs=false when compiling go-bootstrap. We +don't need the revision information in those binaries anyway. Setting this flag +was previously not done as we were unsure if the go-bootstrap compiler would be +new enough to support the buildvcs build flag. Since Go 1.20.x, Go 1.19.x is the +minimum version for go-bootstrap, and supports -buildvcs=false. We can now set +-buildvcs=false without worrying about compatibility. + +Related: https://github.com/golang/go/issues/54852 +Fixes: https://github.com/golang/go/issues/61620 + +--- + +Upstream: https://github.com/golang/go/pull/61621 + +Signed-off-by: Christian Stewart + +--- + src/cmd/dist/buildtool.go | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/cmd/dist/buildtool.go b/src/cmd/dist/buildtool.go +index a528d7aa76..3b411d6ebb 100644 +--- a/src/cmd/dist/buildtool.go ++++ b/src/cmd/dist/buildtool.go +@@ -221,6 +221,9 @@ func bootstrapBuildTools() { + cmd := []string{ + pathf("%s/bin/go", goroot_bootstrap), + "install", ++ // Fixes cases where an invalid .git is present in a parent of GOROOT_BOOTSTRAP. ++ // See: https://github.com/golang/go/issues/61620 ++ "-buildvcs=false", + "-tags=math_big_pure_go compiler_bootstrap purego", + } + if vflag > 0 { +-- +2.41.0 + diff --git a/package/go/go-src/go-src.hash b/package/go/go-src/go-src.hash new file mode 100644 index 00000000..d300f6e2 --- /dev/null +++ b/package/go/go-src/go-src.hash @@ -0,0 +1,3 @@ +# From https://go.dev/dl +sha256 ac9c723f224969aee624bc34fd34c9e13f2a212d75c71c807de644bb46e112f6 go1.22.5.src.tar.gz +sha256 2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067 LICENSE diff --git a/package/go/go-src/go-src.mk b/package/go/go-src/go-src.mk new file mode 100644 index 00000000..0d1a9b31 --- /dev/null +++ b/package/go/go-src/go-src.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# go-src +# +################################################################################ + +GO_SRC_SITE = https://storage.googleapis.com/golang +GO_SRC_SOURCE = go$(GO_VERSION).src.tar.gz + +GO_SRC_LICENSE = BSD-3-Clause +GO_SRC_LICENSE_FILES = LICENSE +GO_SRC_CPE_ID_VENDOR = golang + +HOST_GO_SRC_PROVIDES = host-go +HOST_GO_SRC_DEPENDENCIES = \ + host-go-bootstrap-stage3 \ + $(HOST_GO_DEPENDENCIES_CGO) + +ifeq ($(BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS),y) + +HOST_GO_SRC_CROSS_ENV = \ + CC_FOR_TARGET="$(TARGET_CC)" \ + CXX_FOR_TARGET="$(TARGET_CXX)" \ + GOOS="linux" \ + GOARCH=$(GO_GOARCH) \ + $(if $(GO_GO386),GO386=$(GO_GO386)) \ + $(if $(GO_GOARM),GOARM=$(GO_GOARM)) \ + GO_ASSUME_CROSSCOMPILING=1 + +endif + +# The go build system is not compatible with ccache, so use +# HOSTCC_NOCCACHE. See https://github.com/golang/go/issues/11685. +HOST_GO_SRC_MAKE_ENV = \ + GO111MODULE=off \ + GOCACHE=$(HOST_GO_HOST_CACHE) \ + GOROOT_BOOTSTRAP=$(HOST_GO_BOOTSTRAP_STAGE3_ROOT) \ + GOROOT_FINAL=$(HOST_GO_ROOT) \ + GOROOT="$(@D)" \ + GOBIN="$(@D)/bin" \ + GOOS=linux \ + CC=$(HOSTCC_NOCCACHE) \ + CXX=$(HOSTCXX_NOCCACHE) \ + CGO_ENABLED=$(HOST_GO_CGO_ENABLED) \ + $(HOST_GO_SRC_CROSS_ENV) + +define HOST_GO_SRC_BUILD_CMDS + cd $(@D)/src && \ + $(HOST_GO_SRC_MAKE_ENV) ./make.bash $(if $(VERBOSE),-v) +endef + +define HOST_GO_SRC_INSTALL_CMDS + $(GO_BINARIES_INSTALL) +endef + +$(eval $(host-generic-package)) diff --git a/package/go/go.mk b/package/go/go.mk new file mode 100644 index 00000000..660c7a9b --- /dev/null +++ b/package/go/go.mk @@ -0,0 +1,138 @@ +################################################################################ +# +# go +# +################################################################################ + +GO_VERSION = 1.22.5 + +HOST_GO_GOPATH = $(HOST_DIR)/share/go-path +HOST_GO_HOST_CACHE = $(HOST_DIR)/share/host-go-cache +HOST_GO_ROOT = $(HOST_DIR)/lib/go +HOST_GO_TARGET_CACHE = $(HOST_DIR)/share/go-cache + +# We pass an empty GOBIN, otherwise "go install: cannot install +# cross-compiled binaries when GOBIN is set" +HOST_GO_COMMON_ENV = \ + GO111MODULE=on \ + GOFLAGS=-mod=vendor \ + GOROOT="$(HOST_GO_ROOT)" \ + GOPATH="$(HOST_GO_GOPATH)" \ + GOCACHE="$(HOST_GO_TARGET_CACHE)" \ + GOMODCACHE="$(HOST_GO_GOPATH)/pkg/mod" \ + GOPROXY=off \ + GOTOOLCHAIN=local \ + PATH=$(BR_PATH) \ + GOBIN= \ + CGO_ENABLED=$(HOST_GO_CGO_ENABLED) + +ifeq ($(BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS),y) + +ifeq ($(BR2_arm),y) +GO_GOARCH = arm +ifeq ($(BR2_ARM_CPU_ARMV5),y) +GO_GOARM = 5 +else ifeq ($(BR2_ARM_CPU_ARMV6),y) +GO_GOARM = 6 +else ifeq ($(BR2_ARM_CPU_ARMV7A),y) +GO_GOARM = 7 +else ifeq ($(BR2_ARM_CPU_ARMV8A),y) +# Go doesn't support 32-bit GOARM=8 (https://github.com/golang/go/issues/29373) +# but can still benefit from armv7 optimisations +GO_GOARM = 7 +endif +else ifeq ($(BR2_aarch64),y) +GO_GOARCH = arm64 +else ifeq ($(BR2_i386),y) +GO_GOARCH = 386 +# i386: use softfloat if no SSE2: https://golang.org/doc/go1.16#386 +ifneq ($(BR2_X86_CPU_HAS_SSE2),y) +GO_GO386 = softfloat +endif +else ifeq ($(BR2_x86_64),y) +GO_GOARCH = amd64 +else ifeq ($(BR2_powerpc64),y) +GO_GOARCH = ppc64 +else ifeq ($(BR2_powerpc64le),y) +GO_GOARCH = ppc64le +else ifeq ($(BR2_mips64),y) +GO_GOARCH = mips64 +else ifeq ($(BR2_mips64el),y) +GO_GOARCH = mips64le +else ifeq ($(BR2_riscv),y) +GO_GOARCH = riscv64 +else ifeq ($(BR2_s390x),y) +GO_GOARCH = s390x +endif + +# For the convienience of target packages. +HOST_GO_TOOLDIR = $(HOST_GO_ROOT)/pkg/tool/linux_$(GO_GOARCH) +HOST_GO_TARGET_ENV = \ + $(HOST_GO_COMMON_ENV) \ + GOOS="linux" \ + GOARCH=$(GO_GOARCH) \ + CC="$(TARGET_CC)" \ + CXX="$(TARGET_CXX)" \ + CGO_CFLAGS="$(TARGET_CFLAGS)" \ + CGO_CXXFLAGS="$(TARGET_CXXFLAGS)" \ + CGO_LDFLAGS="$(TARGET_LDFLAGS)" \ + GOTOOLDIR="$(HOST_GO_TOOLDIR)" + +# Allow packages to use cgo support if it is available for the target. They +# will need the toolchain for cgo support; for convenence, include that +# dependency here. +# +# Note that any target package needing cgo support must include 'depends on +# BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS' in its config file. +ifeq ($(BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS),y) +HOST_GO_DEPENDENCIES_CGO += toolchain +HOST_GO_CGO_ENABLED = 1 +else +HOST_GO_CGO_ENABLED = 0 +endif +else # !BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS +# If the target arch does not support go, host-go can still be used to build +# packages for the host, and enable cgo. No need to set all the arch stuff +#since we will not be cross-compiling. +HOST_GO_CGO_ENABLED = 1 +endif # BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS +# Ensure the toolchain is available, whatever the provider +HOST_GO_DEPENDENCIES += $(HOST_GO_DEPENDENCIES_CGO) + +# For the convenience of host golang packages +HOST_GO_HOST_ENV = \ + $(HOST_GO_COMMON_ENV) \ + GOOS="" \ + GOARCH="" \ + GOCACHE="$(HOST_GO_HOST_CACHE)" \ + CC="$(HOSTCC_NOCCACHE)" \ + CXX="$(HOSTCXX_NOCCACHE)" \ + CGO_CFLAGS="$(HOST_CFLAGS)" \ + CGO_CXXFLAGS="$(HOST_CXXFLAGS)" \ + CGO_LDFLAGS="$(HOST_LDFLAGS)" + +define GO_BINARIES_INSTALL + $(INSTALL) -D -m 0755 $(@D)/bin/go $(HOST_GO_ROOT)/bin/go + $(INSTALL) -D -m 0755 $(@D)/bin/gofmt $(HOST_GO_ROOT)/bin/gofmt + + mkdir -p $(HOST_DIR)/bin + ln -sf ../lib/go/bin/go $(HOST_DIR)/bin/ + ln -sf ../lib/go/bin/gofmt $(HOST_DIR)/bin/ + + cp -a $(@D)/lib $(HOST_GO_ROOT)/ + + mkdir -p $(HOST_GO_ROOT)/pkg + cp -a $(@D)/pkg/include $(HOST_GO_ROOT)/pkg/ + cp -a $(@D)/pkg/tool $(HOST_GO_ROOT)/pkg/ + + # The Go sources must be installed to the host/ tree for the Go stdlib. + cp -a $(@D)/src $(HOST_GO_ROOT)/ + + # Set file timestamps to prevent the Go compiler from rebuilding the stdlib + # when compiling other programs. + find $(HOST_GO_ROOT) -type f -exec touch -r $(@D)/bin/go {} \; +endef + +$(eval $(host-virtual-package)) + +include $(sort $(wildcard package/go/*/*.mk)) diff --git a/package/gob2/0001-dont-include-from-prefix.patch b/package/gob2/0001-dont-include-from-prefix.patch new file mode 100644 index 00000000..1b603d75 --- /dev/null +++ b/package/gob2/0001-dont-include-from-prefix.patch @@ -0,0 +1,40 @@ +[PATCH] Don't search $prefix/include for header files + +Don't add $prefix/include to the header file search path, as that breaks +cross compilation (build $prefix/include isn't the same as target +$prefix/include). + +Signed-off-by: Peter Korsgaard +--- + src/Makefile.am | 3 +-- + src/Makefile.in | 3 +-- + 2 files changed, 2 insertions(+), 4 deletions(-) + +Index: gob2-2.0.15/src/Makefile.am +=================================================================== +--- gob2-2.0.15.orig/src/Makefile.am ++++ gob2-2.0.15/src/Makefile.am +@@ -17,8 +17,7 @@ INCLUDES = \ + -I$(top_builddir) \ + -I$(top_builddir)/src \ + -I$(top_srcdir) \ +- -I$(top_srcdir)/src \ +- -I$(includedir) ++ -I$(top_srcdir)/src + + if NOINSTGOB + noinst_PROGRAMS = @NOINSTGOB@ +Index: gob2-2.0.15/src/Makefile.in +=================================================================== +--- gob2-2.0.15.orig/src/Makefile.in ++++ gob2-2.0.15/src/Makefile.in +@@ -193,8 +193,7 @@ INCLUDES = \ + -I$(top_builddir) \ + -I$(top_builddir)/src \ + -I$(top_srcdir) \ +- -I$(top_srcdir)/src \ +- -I$(includedir) ++ -I$(top_srcdir)/src + + @NOINSTGOB_TRUE@noinst_PROGRAMS = @NOINSTGOB@ + @NOINSTGOB_FALSE@bin_PROGRAMS = @INSTGOB@ diff --git a/package/gob2/gob2.hash b/package/gob2/gob2.hash new file mode 100644 index 00000000..9cef2ed6 --- /dev/null +++ b/package/gob2/gob2.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 f7ee84c07ca88ae96e5a60461957cc4dd0aa69d61804433d1c85de3d50be8026 gob2-2.0.20.tar.xz +sha256 b8a2f73f743dc1a51aff23f1aacbca4b868564db52496fa3c0caba755bfd1eaf COPYING +sha256 7222386392eecf784e2f0c406f412f238cb6d25865a8447ae0947b32bb569889 COPYING.generated-code diff --git a/package/gob2/gob2.mk b/package/gob2/gob2.mk new file mode 100644 index 00000000..d0cce8fb --- /dev/null +++ b/package/gob2/gob2.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# gob2 +# +################################################################################ + +GOB2_VERSION = 2.0.20 +GOB2_SOURCE = gob2-$(GOB2_VERSION).tar.xz +GOB2_SITE = http://ftp.5z.com/pub/gob +GOB2_LICENSE = GPL-2.0+ +GOB2_LICENSE_FILES = COPYING COPYING.generated-code +HOST_GOB2_DEPENDENCIES = host-bison host-flex host-libglib2 + +$(eval $(host-autotools-package)) + +# gob2 for the host +GOB2_HOST_BINARY = $(HOST_DIR)/bin/gob2 diff --git a/package/gobject-introspection/0001-disable-tests.patch b/package/gobject-introspection/0001-disable-tests.patch new file mode 100644 index 00000000..8de216c0 --- /dev/null +++ b/package/gobject-introspection/0001-disable-tests.patch @@ -0,0 +1,34 @@ +From c87faf380ddf44da9d624dabd28178c9065f0f76 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Mon, 3 Feb 2020 10:07:15 -0800 +Subject: [PATCH] disable tests + +If introspection data on the host is not built, meson throws the error: +"Unknown variable "typelibs". Because tests are not required, removing +the subdir tests alltogether fixes this issue. + +Signed-off-by: Adam Duskett +--- + meson.build | 6 ------ + 1 file changed, 6 deletions(-) + +diff --git a/meson.build b/meson.build +index c2cb577f..65ce7adf 100644 +--- a/meson.build ++++ b/meson.build +@@ -237,12 +237,6 @@ else + endif + subdir('docs') + +-# The tests will also run, which is not possible if they +-# were built for a different architecture. +-if not meson.is_cross_build() +- subdir('tests') +-endif +- + install_data('Makefile.introspection', install_dir: join_paths(get_option('datadir'), 'gobject-introspection-1.0')) + install_data('m4/introspection.m4', install_dir: join_paths(get_option('datadir'), 'aclocal')) + +-- +2.25.1 + diff --git a/package/gobject-introspection/0002-Add-rpath-links-to-ccompiler.patch b/package/gobject-introspection/0002-Add-rpath-links-to-ccompiler.patch new file mode 100644 index 00000000..a8cf332f --- /dev/null +++ b/package/gobject-introspection/0002-Add-rpath-links-to-ccompiler.patch @@ -0,0 +1,29 @@ +From 952e2e2bb6a22ec8824223b03b65cb28361c6e34 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Wed, 14 Mar 2018 12:07:10 -0400 +Subject: [PATCH] Add rpath links to ccompiler + +This patch allows gobject-introspection to process extra paths passed to the +compiler via the GIR_EXTRA_LIBS_PATH variable. + +Signed-off-by: Adam Duskett +--- + giscanner/ccompiler.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/giscanner/ccompiler.py b/giscanner/ccompiler.py +index cb97e76f..d29b28c8 100644 +--- a/giscanner/ccompiler.py ++++ b/giscanner/ccompiler.py +@@ -266,6 +266,8 @@ class CCompiler(object): + + for envvar in runtime_path_envvar: + if envvar in os.environ: ++ for envvar_path in os.environ[envvar].split(':'): ++ args.append("-Wl,-rpath-link," + envvar_path) + os.environ[envvar] = \ + os.pathsep.join(runtime_paths + [os.environ[envvar]]) + else: +-- +2.25.1 + diff --git a/package/gobject-introspection/0003-giscanner-ignore-error-return-codes-from-ldd-wrapper.patch b/package/gobject-introspection/0003-giscanner-ignore-error-return-codes-from-ldd-wrapper.patch new file mode 100644 index 00000000..f1ea5189 --- /dev/null +++ b/package/gobject-introspection/0003-giscanner-ignore-error-return-codes-from-ldd-wrapper.patch @@ -0,0 +1,31 @@ +From e0fc4a2a5161a36483ddc518be9bb14390f11b19 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin +Date: Wed, 5 Sep 2018 16:46:52 +0200 +Subject: [PATCH] giscanner: ignore error return codes from ldd-wrapper + +prelink-rtld, which we use instead of ldd returns 127 when it can't find a library. +It is not an error per se, but it breaks subprocess.check_output(). + +Upstream-Status: Inappropriate [oe-core specific] +Signed-off-by: Alexander Kanavin +Signed-off-by: Adam Duskett +--- + giscanner/shlibs.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/giscanner/shlibs.py b/giscanner/shlibs.py +index 9f8ab5df..7a1a72fe 100644 +--- a/giscanner/shlibs.py ++++ b/giscanner/shlibs.py +@@ -103,7 +103,7 @@ def _resolve_non_libtool(options, binary, libraries): + args.extend(['otool', '-L', binary.args[0]]) + else: + args.extend(['ldd', binary.args[0]]) +- output = subprocess.check_output(args) ++ output = subprocess.run(args, check=False, stdout=subprocess.PIPE).stdout + if isinstance(output, bytes): + output = output.decode("utf-8", "replace") + +-- +2.25.1 + diff --git a/package/gobject-introspection/Config.in b/package/gobject-introspection/Config.in new file mode 100644 index 00000000..42250eb7 --- /dev/null +++ b/package/gobject-introspection/Config.in @@ -0,0 +1,50 @@ +config BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS + bool + default y + depends on BR2_PACKAGE_HOST_QEMU_ARCH_SUPPORTS + +config BR2_PACKAGE_GOBJECT_INTROSPECTION + bool "gobject-introspection" + depends on BR2_USE_MMU # python3, libglib2 + depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS + # While gcc 4.8 might be compatible with gobject-introspection, + # The autobuilders use some toolchains from codesourcery which + # have gcc 4.8 and a very old version of glibc, which will cause + # compile errors with locale.c. As such, require 4.9 until this + # can be verified. + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_HOST_GCC_AT_LEAST_8 # host-qemu + depends on BR2_TOOLCHAIN_USES_GLIBC + # gobject-introspection does not require python3 to run on the + # target; however, because the tools run in a qemu wrapper, a + # cross-compiled python3 must be installed to staging. As there + # is no current mechanism to tell Buildroot only to install + # python to staging, then python must also be installed + # unconditionally to the target when building + # gobject-introspection. + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_HOST_QEMU + select BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE + select BR2_PACKAGE_LIBFFI + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_ZLIB + help + GObject introspection is a middleware layer between C + libraries (using GObject) and language bindings. The C library + can be scanned at compile time and generate a metadata file, + in addition to the actual native C library. Then at runtime, + language bindings can read this metadata and automatically + provide bindings to call into the C library. + + https://wiki.gnome.org/action/show/Projects/GObjectIntrospection + +comment "gobject-introspection needs python3" + depends on !BR2_PACKAGE_PYTHON3 + depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS + +comment "gobject-introspection needs a glibc toolchain, gcc >= 4.9, host gcc >= 8" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_HOST_GCC_AT_LEAST_8 diff --git a/package/gobject-introspection/g-ir-compiler.in b/package/gobject-introspection/g-ir-compiler.in new file mode 100644 index 00000000..71275302 --- /dev/null +++ b/package/gobject-introspection/g-ir-compiler.in @@ -0,0 +1,3 @@ +#!/usr/bin/env sh + +"$(dirname "$0")"/g-ir-scanner-qemuwrapper "$(dirname "$0")"/g-ir-compiler.real "$@" diff --git a/package/gobject-introspection/g-ir-scanner-lddwrapper.in b/package/gobject-introspection/g-ir-scanner-lddwrapper.in new file mode 100644 index 00000000..2f09bca7 --- /dev/null +++ b/package/gobject-introspection/g-ir-scanner-lddwrapper.in @@ -0,0 +1,3 @@ +#!/usr/bin/env sh + +"${HOST_DIR}"/sbin/prelink-rtld --root="$(dirname "$0")/../../" "$@" diff --git a/package/gobject-introspection/g-ir-scanner-qemuwrapper.in b/package/gobject-introspection/g-ir-scanner-qemuwrapper.in new file mode 100644 index 00000000..9786feea --- /dev/null +++ b/package/gobject-introspection/g-ir-scanner-qemuwrapper.in @@ -0,0 +1,22 @@ +#!/usr/bin/env sh + +GOI_LIBRARY_PATH="${GIR_EXTRA_LIBS_PATH:+${GIR_EXTRA_LIBS_PATH}:}.libs:$(dirname "$0")/../lib:$(dirname "$0")/../../lib" + +# Pass -r to qemu-user as to trick glibc into not erroring out if the host kernel +# is older than the target kernel. +# Use a modules directory which does not exist so we don't load random things +# which may then get deleted (or their dependencies) and potentially segfault +GIO_MODULE_DIR="$(dirname "$0")/../lib/gio/modules-dummy" \ +@QEMU_USER@ -r @TOOLCHAIN_HEADERS_VERSION@ \ + @QEMU_USERMODE_ARGS@ \ + -L "$(dirname "$0")/../../" \ + -E LD_LIBRARY_PATH="${GOI_LIBRARY_PATH}" \ + "$@" + +# shellcheck disable=SC2181 +if [ $? -ne 0 ]; then + echo "If the above error message is about missing .so libraries, then setting up GIR_EXTRA_LIBS_PATH in the .mk file should help." + # shellcheck disable=SC2016 + echo 'Typically like this: PKG_MAKE_ENV += GIR_EXTRA_LIBS_PATH="$(@D)/.libs"' + exit 1 +fi diff --git a/package/gobject-introspection/g-ir-scanner.in b/package/gobject-introspection/g-ir-scanner.in new file mode 100644 index 00000000..013eb157 --- /dev/null +++ b/package/gobject-introspection/g-ir-scanner.in @@ -0,0 +1,22 @@ +#!/usr/bin/env sh + +# These environment variables are empty by default, and as such ccompiler.py +# defaults to either using the system tools (CC, CXX, and CPP) or leaving +# the variables blank (LDFLAGS, CFLAGS, and CPPFLAGS.) +# Export these variables to ensure all build systems can generate .gir and +# .typelib files properly. +export CPP="${CPP:-${HOST_DIR}/bin/@BASENAME_TARGET_CPP@}" +export CC="${CC:-${HOST_DIR}/bin/@BASENAME_TARGET_CC@}" +export CXX="${CXX:-${HOST_DIR}/bin/@BASENAME_TARGET_CXX@}" +export CPPFLAGS="${CPPFLAGS:-@TARGET_CPPFLAGS@}" +export CFLAGS="${CFLAGS:-@TARGET_CFLAGS@}" +export CXXFLAGS="${CXXFLAGS:-@TARGET_CXXFLAGS@}" +export LDFLAGS="${LDFLAGS:-@TARGET_LDFLAGS@}" + +export GI_SCANNER_DISABLE_CACHE=1 + +"${HOST_DIR}"/bin/g-ir-scanner \ + --lib-dirs-envvar=GIR_EXTRA_LIBS_PATH \ + --use-binary-wrapper="$(dirname "$0")"/g-ir-scanner-qemuwrapper \ + --use-ldd-wrapper="$(dirname "$0")"/g-ir-scanner-lddwrapper \ + --add-include-path="$(dirname "$0")"/../share/gir-1.0 "$@" diff --git a/package/gobject-introspection/gobject-introspection.hash b/package/gobject-introspection/gobject-introspection.hash new file mode 100644 index 00000000..063b9627 --- /dev/null +++ b/package/gobject-introspection/gobject-introspection.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/gobject-introspection/1.76/gobject-introspection-1.76.1.sha256sum +sha256 196178bf64345501dcdc4d8469b36aa6fe80489354efe71cb7cb8ab82a3738bf gobject-introspection-1.76.1.tar.xz +sha256 faa2e414bd5f91d2d2c39e85c7cc3f2ccde05c3306f96b404f8ed8cf0266c279 COPYING.LGPL +sha256 4c1cedcbb4a12ea964f1160dbbf36099e5a59b96129a99a1a1a61f2cb09271fb COPYING.GPL +sha256 23f82cbc9808cdd8e902df38271434040ce0562ca382ac2a96f5e3bf807b6d31 giscanner/scannerlexer.l diff --git a/package/gobject-introspection/gobject-introspection.mk b/package/gobject-introspection/gobject-introspection.mk new file mode 100644 index 00000000..f0c7fcd2 --- /dev/null +++ b/package/gobject-introspection/gobject-introspection.mk @@ -0,0 +1,153 @@ +################################################################################ +# +# gobject-introspection +# +################################################################################ + +GOBJECT_INTROSPECTION_VERSION_MAJOR = 1.76 +GOBJECT_INTROSPECTION_VERSION = $(GOBJECT_INTROSPECTION_VERSION_MAJOR).1 +GOBJECT_INTROSPECTION_SITE = https://download.gnome.org/sources/gobject-introspection/$(GOBJECT_INTROSPECTION_VERSION_MAJOR) +GOBJECT_INTROSPECTION_SOURCE = gobject-introspection-$(GOBJECT_INTROSPECTION_VERSION).tar.xz +GOBJECT_INTROSPECTION_INSTALL_STAGING = YES +GOBJECT_INTROSPECTION_LICENSE = LGPL-2.0+, GPL-2.0+, BSD-2-Clause +GOBJECT_INTROSPECTION_LICENSE_FILES = COPYING.LGPL COPYING.GPL giscanner/scannerlexer.l + +GOBJECT_INTROSPECTION_DEPENDENCIES = \ + host-autoconf-archive \ + host-gobject-introspection \ + host-prelink-cross \ + host-qemu \ + libffi \ + libglib2 \ + python3 \ + zlib + +HOST_GOBJECT_INTROSPECTION_DEPENDENCIES = \ + host-bison \ + host-flex \ + host-libglib2 \ + host-python3 + +# g-ir-scanner will default to /usr/bin/ld for linking if this is not set. +GOBJECT_INTROSPECTION_NINJA_ENV += \ + CC="$(TARGET_CC)" + +# When building, gobject-introspection uses tools/g-ir-scanner to build several +# .gir and .typelib files. g-ir-scanner does not use LDFLAGS, and by default, +# links to the system-installed libglib2 path. To remedy this issue, defining +# LD_LIBRARY_PATH forces g-ir-scanner to use our host installed libglib2 files. +HOST_GOBJECT_INTROSPECTION_NINJA_ENV += \ + LD_LIBRARY_PATH="$(if $(LD_LIBRARY_PATH),$(LD_LIBRARY_PATH):)$(HOST_DIR)/lib" + +# Use the host gi-scanner to prevent the scanner from generating incorrect +# elf classes. +GOBJECT_INTROSPECTION_CONF_OPTS = \ + -Dgi_cross_use_prebuilt_gi=true \ + -Dgi_cross_binary_wrapper="$(STAGING_DIR)/usr/bin/g-ir-scanner-qemuwrapper" \ + -Dgi_cross_ldd_wrapper="$(STAGING_DIR)/usr/bin/g-ir-scanner-lddwrapper" \ + -Dbuild_introspection_data=true \ + -Ddoctool=disabled + +ifeq ($(BR2_PACKAGE_CAIRO),y) +GOBJECT_INTROSPECTION_DEPENDENCIES += cairo +GOBJECT_INTROSPECTION_CONF_OPTS += -Dcairo=enabled +else +GOBJECT_INTROSPECTION_CONF_OPTS += -Dcairo=disabled +endif + +# GI_SCANNER_DISABLE_CACHE=1 prevents g-ir-scanner from writing cache data to ${HOME} +GOBJECT_INTROSPECTION_CONF_ENV = \ + GI_SCANNER_DISABLE_CACHE=1 + +HOST_GOBJECT_INTROSPECTION_CONF_ENV = \ + GI_SCANNER_DISABLE_CACHE=1 + +# Make sure g-ir-tool-template uses the host python. +define GOBJECT_INTROSPECTION_FIX_TOOLS_PYTHON_PATH + $(SED) '1s%#!.*%#!$(HOST_DIR)/bin/python3%' $(@D)/tools/g-ir-tool-template.in +endef +HOST_GOBJECT_INTROSPECTION_PRE_CONFIGURE_HOOKS += GOBJECT_INTROSPECTION_FIX_TOOLS_PYTHON_PATH + +# Perform the following: +# - Just as above, Ensure that g-ir-tool-template.in uses the host python. +# - Install all of the wrappers needed to build gobject-introspection. +# - Create a safe modules directory which does not exist so we don't load random things +# which may then get deleted (or their dependencies) and potentially segfault +define GOBJECT_INTROSPECTION_INSTALL_PRE_WRAPPERS + $(SED) '1s%#!.*%#!$(HOST_DIR)/bin/python3%' $(@D)/tools/g-ir-tool-template.in + + $(INSTALL) -D -m 755 $(GOBJECT_INTROSPECTION_PKGDIR)/g-ir-scanner-lddwrapper.in \ + $(STAGING_DIR)/usr/bin/g-ir-scanner-lddwrapper + + $(INSTALL) -D -m 755 $(GOBJECT_INTROSPECTION_PKGDIR)/g-ir-scanner-qemuwrapper.in \ + $(STAGING_DIR)/usr/bin/g-ir-scanner-qemuwrapper + $(SED) "s%@QEMU_USER@%$(QEMU_USER)%g" \ + $(STAGING_DIR)/usr/bin/g-ir-scanner-qemuwrapper + $(SED) "s%@QEMU_USERMODE_ARGS@%$(call qstrip,$(BR2_PACKAGE_HOST_QEMU_USER_MODE_ARGS))%g" \ + $(STAGING_DIR)/usr/bin/g-ir-scanner-qemuwrapper + $(SED) "s%@TOOLCHAIN_HEADERS_VERSION@%$(BR2_TOOLCHAIN_HEADERS_AT_LEAST)%g" \ + $(STAGING_DIR)/usr/bin/g-ir-scanner-qemuwrapper + + # Use a modules directory which does not exist so we don't load random things + # which may then get deleted (or their dependencies) and potentially segfault + mkdir -p $(STAGING_DIR)/usr/lib/gio/modules-dummy +endef +GOBJECT_INTROSPECTION_PRE_CONFIGURE_HOOKS += GOBJECT_INTROSPECTION_INSTALL_PRE_WRAPPERS + +# Move the real compiler and scanner to .real, and replace them with the wrappers. +# Using .real has the following advantages: +# - There is no need to change the logic for other packages. +# - The wrappers call the .real files using qemu. +define GOBJECT_INTROSPECTION_INSTALL_WRAPPERS + # Move the real binaries to their names.real, then replace them with + # the wrappers. + $(foreach w,g-ir-compiler g-ir-scanner, + mv $(STAGING_DIR)/usr/bin/$(w) $(STAGING_DIR)/usr/bin/$(w).real + $(INSTALL) -D -m 755 \ + $(GOBJECT_INTROSPECTION_PKGDIR)/$(w).in $(STAGING_DIR)/usr/bin/$(w) + ) + $(SED) "s%@BASENAME_TARGET_CPP@%$(notdir $(TARGET_CPP))%g" \ + -e "s%@BASENAME_TARGET_CC@%$(notdir $(TARGET_CC))%g" \ + -e "s%@BASENAME_TARGET_CXX@%$(notdir $(TARGET_CXX))%g" \ + -e "s%@TARGET_CPPFLAGS@%$(TARGET_CPPFLAGS)%g" \ + -e "s%@TARGET_CFLAGS@%$(TARGET_CFLAGS)%g" \ + -e "s%@TARGET_CXXFLAGS@%$(TARGET_CXXFLAGS)%g" \ + -e "s%@TARGET_LDFLAGS@%$(TARGET_LDFLAGS)%g" \ + $(STAGING_DIR)/usr/bin/g-ir-scanner + + # Gobject-introspection installs Makefile.introspection in + # $(STAGING_DIR)/usr/share which is needed for autotools-based programs to + # build .gir and .typelib files. Unfortunately, gobject-introspection-1.0.pc + # uses $(prefix)/share as the directory, which + # causes the host /usr/share being used instead of $(STAGING_DIR)/usr/share. + # Change datadir to $(libdir)/../share which will prefix $(STAGING_DIR) + # to the correct location. + $(SED) "s%^datadir=.*%datadir=\$${libdir}/../share%g" \ + $(STAGING_DIR)/usr/lib/pkgconfig/gobject-introspection-1.0.pc + + # By default, girdir and typelibdir use datadir and libdir as their prefix, + # of which pkg-config appends the sysroot directory. This results in files + # being installed in $(STAGING_DIR)/$(STAGING_DIR)/path/to/files. + # Changing the prefix to prefix prevents this error. + $(SED) "s%girdir=.*%girdir=\$${prefix}/share/gir-1.0%g" \ + $(STAGING_DIR)/usr/lib/pkgconfig/gobject-introspection-1.0.pc + + $(SED) "s%typelibdir=.*%typelibdir=\$${prefix}/lib/girepository-1.0%g" \ + $(STAGING_DIR)/usr/lib/pkgconfig/gobject-introspection-1.0.pc + + # Set includedir to $(STAGING_DIR)/usr/share/gir-1.0 instead of . or + # g-ir-compiler won't find .gir files resulting in a build failure for + # autotools-based based programs + $(SED) "s%includedir=.%includedir=$(STAGING_DIR)/usr/share/gir-1.0%g" \ + $(STAGING_DIR)/usr/share/gobject-introspection-1.0/Makefile.introspection +endef +GOBJECT_INTROSPECTION_POST_INSTALL_STAGING_HOOKS += GOBJECT_INTROSPECTION_INSTALL_WRAPPERS + +# Only .typelib files are needed to run. +define GOBJECT_INTROSPECTION_REMOVE_DEVELOPMENT_FILES + find $(TARGET_DIR)/usr/share \( -iname "*.gir" -o -iname \*.rnc \) -delete +endef +GOBJECT_INTROSPECTION_TARGET_FINALIZE_HOOKS += GOBJECT_INTROSPECTION_REMOVE_DEVELOPMENT_FILES + +$(eval $(meson-package)) +$(eval $(host-meson-package)) diff --git a/package/gocryptfs/Config.in b/package/gocryptfs/Config.in new file mode 100644 index 00000000..2c70b9b2 --- /dev/null +++ b/package/gocryptfs/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_GOCRYPTFS + bool "gocryptfs" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_HOST_GO + help + gocryptfs is an encrypted FUSE overlay filesystem. + + https://github.com/rfjakob/gocryptfs + +comment "gocryptfs needs a toolchain w/ threads" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/gocryptfs/gocryptfs.hash b/package/gocryptfs/gocryptfs.hash new file mode 100644 index 00000000..faeb0b3d --- /dev/null +++ b/package/gocryptfs/gocryptfs.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 6cfb1dffd0ff396b355b83ab1ff55b774e2246982dad4683703f11e58bfb0e3f gocryptfs-2.3.2-go2.tar.gz +sha256 322a7e3b02cf18e38b7e6b18cafefb773df8676c65634b34e8a2beb931294a4b LICENSE diff --git a/package/gocryptfs/gocryptfs.mk b/package/gocryptfs/gocryptfs.mk new file mode 100644 index 00000000..6d84acc2 --- /dev/null +++ b/package/gocryptfs/gocryptfs.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# gocryptfs +# +################################################################################ + +GOCRYPTFS_VERSION = 2.3.2 +GOCRYPTFS_SITE = $(call github,rfjakob,gocryptfs,v$(GOCRYPTFS_VERSION)) +GOCRYPTFS_LICENSE = MIT +GOCRYPTFS_LICENSE_FILES = LICENSE + +GOCRYPTFS_GOMOD = github.com/rfjakob/gocryptfs/v2 + +GOCRYPTFS_LDFLAGS = \ + -X main.GitVersion=$(GOCRYPTFS_VERSION) \ + -X main.GitVersionFuse=[vendored] +GOCRYPTFS_TAGS = without_openssl + +$(eval $(golang-package)) diff --git a/package/google-breakpad/0001-Fixed-missing-include-for-std-find_if.patch b/package/google-breakpad/0001-Fixed-missing-include-for-std-find_if.patch new file mode 100644 index 00000000..141e12b6 --- /dev/null +++ b/package/google-breakpad/0001-Fixed-missing-include-for-std-find_if.patch @@ -0,0 +1,26 @@ +From 898a997855168c0e6a689072fefba89246271a5d Mon Sep 17 00:00:00 2001 +From: Nathan Moinvaziri +Date: Tue, 19 Dec 2023 14:35:05 -0800 +Subject: [PATCH] Fixed missing include for std::find_if. + +Throws an error when compiling on Windows. + +Change-Id: Ieb34c00cf199aaa1b45a440086c48b8ed363b3c7 +Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/5137658 +Reviewed-by: Ivan Penkov +Upstream: https://github.com/google/breakpad/commit/898a997855168c0e6a689072fefba89246271a5d +Signed-off-by: Kadambini Nema +--- + +diff --git a/src/common/module.cc b/src/common/module.cc +index 0eb5aad..b6f5da7 100644 +--- a/src/common/module.cc ++++ b/src/common/module.cc +@@ -42,6 +42,7 @@ + #include + #include + ++#include + #include + #include + #include diff --git a/package/google-breakpad/Config.in b/package/google-breakpad/Config.in new file mode 100644 index 00000000..4e2d98eb --- /dev/null +++ b/package/google-breakpad/Config.in @@ -0,0 +1,54 @@ +config BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS + bool + default y if BR2_i386 || BR2_x86_64 || BR2_arm || BR2_aarch64 || \ + BR2_mips || BR2_mipsel + +config BR2_PACKAGE_GOOGLE_BREAKPAD + bool "google-breakpad" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17 + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS + select BR2_PACKAGE_LINUX_SYSCALL_SUPPORT + select BR2_PACKAGE_ZLIB + help + Google-Breakpad is a library and tool suite that allows you + to distribute an application to users with compiler-provided + debugging information removed, record crashes in compact + "minidump" files, send them back to your server, and produce + C and C++ stack traces from these minidumps. Breakpad can + also write minidumps on request for programs that have not + crashed. + + You may want to set BR2_ENABLE_DEBUG, in order to get useful + results. + + This target package installs a static library named + libbreakpad_client.a which should be linked into programs + willing to use Google Breakpad. A host variant of this + package is also available, and provides the different tools + needed to extract the debugging symbols from target + binaries. + + https://chromium.googlesource.com/breakpad/breakpad + +if BR2_PACKAGE_GOOGLE_BREAKPAD + +config BR2_PACKAGE_GOOGLE_BREAKPAD_TOOLS + bool "Build target tools" + help + Build processor and tools for target: dump_syms, + minidump_stackwalk and microdump_stackwalk. + +endif + +comment "google-breakpad requires a glibc toolchain w/ wchar, threads, C++, gcc >= 7" + depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 diff --git a/package/google-breakpad/Config.in.host b/package/google-breakpad/Config.in.host new file mode 100644 index 00000000..28d30476 --- /dev/null +++ b/package/google-breakpad/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS + bool + default y if BR2_HOSTARCH = "x86_64" + default y if BR2_HOSTARCH = "x86" + default y if BR2_HOSTARCH = "arm" + default y if BR2_HOSTARCH = "aarch64" + default y if BR2_HOSTARCH = "mips" + default y if BR2_HOSTARCH = "mipsel" diff --git a/package/google-breakpad/gen-syms.sh b/package/google-breakpad/gen-syms.sh new file mode 100755 index 00000000..4bc020ec --- /dev/null +++ b/package/google-breakpad/gen-syms.sh @@ -0,0 +1,34 @@ +#!/bin/sh +NAME="${0##*/}" +STAGING_DIR="${1}" +TARGET_DIR="${2}" +shift 2 + +SYMBOLS_DIR="${STAGING_DIR}/usr/share/google-breakpad-symbols" +rm -rf "${SYMBOLS_DIR}" +mkdir -p "${SYMBOLS_DIR}" + +error() { + fmt="${1}"; shift + printf "%s: ${fmt}" "${NAME}" "${@}" >&2 + exit 1 +} + +for FILE in "${@}"; do + f="${TARGET_DIR}${FILE}" + if [ ! -e "${f}" ]; then + error "%s: No such file or directory\n" "${FILE}" + fi + if [ -d "${f}" ]; then + error "%s: Is a directory\n" "${FILE}" + fi + if dump_syms "${f}" > "${SYMBOLS_DIR}/tmp.sym" 2>/dev/null; then + hash=$(head -n1 "${SYMBOLS_DIR}/tmp.sym" | cut -d ' ' -f 4); + filename=$(basename "${FILE}"); + mkdir -p "${SYMBOLS_DIR}/${filename}/${hash}" + mv "${SYMBOLS_DIR}/tmp.sym" "${SYMBOLS_DIR}/${filename}/${hash}/${filename}.sym"; + else + error "Error dumping symbols for: '%s'\n" "${FILE}" + fi +done +rm -rf "${SYMBOLS_DIR}/tmp" diff --git a/package/google-breakpad/google-breakpad.hash b/package/google-breakpad/google-breakpad.hash new file mode 100644 index 00000000..cff0fddf --- /dev/null +++ b/package/google-breakpad/google-breakpad.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 23d74651790fd8168a9f5d910988a93abee7d4c5297ec477dca545b037a237c0 google-breakpad-f49c2f1a2023da0cb055874fba050563dfea57db-git4.tar.gz +sha256 69b3d80c19a460e09716910d54d1ada5d800716e2b73751bebac44352590f646 LICENSE diff --git a/package/google-breakpad/google-breakpad.mk b/package/google-breakpad/google-breakpad.mk new file mode 100644 index 00000000..81d2c7d4 --- /dev/null +++ b/package/google-breakpad/google-breakpad.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# google-breakpad +# +################################################################################ + +GOOGLE_BREAKPAD_VERSION = f49c2f1a2023da0cb055874fba050563dfea57db +GOOGLE_BREAKPAD_SITE = https://chromium.googlesource.com/breakpad/breakpad +GOOGLE_BREAKPAD_SITE_METHOD = git +GOOGLE_BREAKPAD_INSTALL_STAGING = YES +# APSL-2.0, BSD-4-Clause, Apache-2.0, BSD-2-Clause not listed, only +# used for Mac code, GPL-2.0 not listed, only used for autotools code +GOOGLE_BREAKPAD_LICENSE = \ + BSD-3-Clause, \ + Unicode-DFS-2015 (UTF code), \ + MIT (src/common/linux/breakpad_getcontext.S), \ + curl (src/third_party/curl/), \ + ClArtistic (src/third_party/libdisasm) +GOOGLE_BREAKPAD_LICENSE_FILES = LICENSE +# Needed because the configure/Makefile.in provided in the Git +# repository is out of date, and links with -lzstd even if +# --disable-zstd is passed +GOOGLE_BREAKPAD_AUTORECONF = YES +GOOGLE_BREAKPAD_DEPENDENCIES = host-google-breakpad linux-syscall-support zlib +GOOGLE_BREAKPAD_CONF_OPTS = --disable-zstd + +HOST_GOOGLE_BREAKPAD_DEPENDENCIES = host-linux-syscall-support host-zlib +HOST_GOOGLE_BREAKPAD_CONF_OPTS = --disable-zstd + +ifeq ($(BR2_PACKAGE_GOOGLE_BREAKPAD_TOOLS),) +GOOGLE_BREAKPAD_INSTALL_TARGET = NO +endif + +# Avoid using depot-tools to download this file. +define HOST_GOOGLE_BREAKPAD_LSS + $(INSTALL) -D -m 0644 \ + $(HOST_DIR)/include/linux_syscall_support.h \ + $(@D)/src/third_party/lss/linux_syscall_support.h +endef +HOST_GOOGLE_BREAKPAD_PRE_CONFIGURE_HOOKS += HOST_GOOGLE_BREAKPAD_LSS + +define GOOGLE_BREAKPAD_LSS + $(INSTALL) -D -m 0644 \ + $(STAGING_DIR)/usr/include/linux_syscall_support.h \ + $(@D)/src/third_party/lss/linux_syscall_support.h +endef +GOOGLE_BREAKPAD_PRE_CONFIGURE_HOOKS += GOOGLE_BREAKPAD_LSS + +define GOOGLE_BREAKPAD_EXTRACT_SYMBOLS + $(EXTRA_ENV) package/google-breakpad/gen-syms.sh $(STAGING_DIR) \ + $(TARGET_DIR) $(call qstrip,$(BR2_GOOGLE_BREAKPAD_INCLUDE_FILES)) +endef +GOOGLE_BREAKPAD_TARGET_FINALIZE_HOOKS += GOOGLE_BREAKPAD_EXTRACT_SYMBOLS + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/googlefontdirectory/Config.in b/package/googlefontdirectory/Config.in new file mode 100644 index 00000000..cf2814d8 --- /dev/null +++ b/package/googlefontdirectory/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_GOOGLEFONTDIRECTORY + bool "Google font directory" + help + Font files available from Google Fonts + + https://github.com/google/fonts + +if BR2_PACKAGE_GOOGLEFONTDIRECTORY + +config BR2_PACKAGE_GOOGLEFONTDIRECTORY_FONTS + string "List of fonts to install" + default "ufl/ubuntu" + help + Specify a space-separated list of fonts to install. They + correspond to the path of the font directory within Google + Font directory code base. For example: ufl/ubuntu, + apache/kranky or ofl/gleego. + +endif diff --git a/package/googlefontdirectory/googlefontdirectory.hash b/package/googlefontdirectory/googlefontdirectory.hash new file mode 100644 index 00000000..24967b04 --- /dev/null +++ b/package/googlefontdirectory/googlefontdirectory.hash @@ -0,0 +1,1677 @@ +# Locally calculated +sha256 c911d284cb6ff255f25298123f33aaf96039664dcf3de22e66ca9f2af7019a08 googlefontdirectory-2125bc9b447971543caaa132530b828e5e682819.tar.gz +# Locally calculated with +# for i in $(find apache/ ofl/ ufl/ -name 'LICENSE.txt' -o -name 'OFL.txt' -o -name 'LICENCE.txt' | sort) ; do printf "sha256 %s\n" "$(sha256sum $i)" ; done +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/aclonica/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/arimo/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/calligraffitti/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/cherrycreamsoda/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/chewy/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/comingsoon/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/cousine/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/craftygirls/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/creepstercaps/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/crushed/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/fontdinerswanky/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/homemadeapple/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/irishgrover/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/justanotherhand/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/kosugi/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/kosugimaru/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/kranky/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/luckiestguy/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/maidenorange/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/montez/LICENSE.txt +sha256 3ddf9be5c28fe27dad143a5dc76eea25222ad1dd68934a047064e56ed2fa40c5 apache/mountainsofchristmas/LICENSE.txt +sha256 3ddf9be5c28fe27dad143a5dc76eea25222ad1dd68934a047064e56ed2fa40c5 apache/opensanshebrewcondensed/LICENSE.txt +sha256 3ddf9be5c28fe27dad143a5dc76eea25222ad1dd68934a047064e56ed2fa40c5 apache/opensanshebrew/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/permanentmarker/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/rancho/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/redressed/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/robotomono/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/robotoslab/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/rochester/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/rocksalt/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/satisfy/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/schoolbell/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/slackey/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/smokum/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/specialelite/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/sunshiney/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/syncopate/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/tinos/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/ultra/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/unkempt/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/walterturncoat/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache/yellowtail/LICENSE.txt +sha256 f0376d04eb58fb19e9f1690a99a1eb37380ad0246f7d503f2abd8e8a74ed12be ofl/abeezee/OFL.txt +sha256 4f4bc3806a1e55789c6ef75ca5fc628297b05292f74966474dc0d40324abc609 ofl/abel/OFL.txt +sha256 fe9183a0b7c1ae626b14004cd533c89ec7c192aba017f81ab71ede910256abb2 ofl/abhayalibre/OFL.txt +sha256 da0971c73aa1773b791926b81530f3cec50c94031912f162a320263488805ef8 ofl/aboreto/OFL.txt +sha256 aba8997e16b1e3888c6e855ba883c70d96bd4375bff8cb9c7ce0f097200f74b8 ofl/abrilfatface/OFL.txt +sha256 09686a4f466a3e8e277078fa304509fca618670fc6334f7180439ef2d5ebb18f ofl/abyssinicasil/OFL.txt +sha256 e5ccbfc32e4d7fae98b467a9af310ac8d2efd5d90e684426cd24f3eb36090a2c ofl/acme/OFL.txt +sha256 c1bcd16ffc9d095822fd6b7fa1a24c7918b24815ed05711421f804293d2efa62 ofl/actor/OFL.txt +sha256 16a8be6ac4b009ba1dd1e17cea48762f4915609ea5dca1303f716cf63998739d ofl/adamina/OFL.txt +sha256 657961e80b42febe82f70a56a4ffe6bbd1dba06aec6338f002f729e637fdb902 ofl/adlamdisplay/OFL.txt +sha256 794d72ffdd25e8f7ca8e1d68db088c30ddbf2fdb369b6cc8217d4fa5fa6dc62f ofl/adobeblank/OFL.txt +sha256 c8d52b6a6c2a6c46193a48d4e6dc7368896bc7d4c069f33abca0728476957aec ofl/adventpro/OFL.txt +sha256 a65e37f173d58cab5d4f8eb6373f4e24ee79ad6c80235dbe845a117917af2d99 ofl/afacad/OFL.txt +sha256 e338828ef7e0686999d6e041d8b2020a952e537179c4bec70a43cf04000f1202 ofl/agbalumo/OFL.txt +sha256 5a5df9eeb233115038bb9bbe00d37897195864802cb889fe755697ba7736d518 ofl/agdasima/OFL.txt +sha256 520a0c239d39b379b61c4de5f8e3b02db20b0dfc137481843eac01f02c41f4a2 ofl/aguafinascript/OFL.txt +sha256 570f2e9653614183d28503a9fb25ec5d3d31cde064b617e853e71d8dba629085 ofl/akatab/OFL.txt +sha256 ca8b6e93436590a2e4efe58431345c0d5c00a43f1f4412c7cbac650215933ad9 ofl/akayakanadaka/OFL.txt +sha256 c9fe51b84ce71b4e8bd90eee48812942694c46f8b8c89207c0fc5579727d595e ofl/akayatelivigala/OFL.txt +sha256 f15a9a3a9a665c2d17655b8fedad86d9a8f30081d46bb91236beb1bc7294a589 ofl/akronim/OFL.txt +sha256 c39e284759a441660d4c4d852c537e271d0fd5c301fe46d065a972b6ee144ba8 ofl/aksarabaligalang/OFL.txt +sha256 f177d40332e5a3f1b76d1d19821102173f30aab9dc58329db20ed1ab42ac7ec1 ofl/akshar/OFL.txt +sha256 aac8f0cda6159b7251d1034651bcb42e07611495bc8cd764c89d22f3123032f8 ofl/aladin/OFL.txt +sha256 def1327fad7ddbec8a64701518aa5b8b8e3fc657559c4a6ce43a9163c3ceb6bb ofl/alata/OFL.txt +sha256 82d8db016c47218bd20ebd5db171d896d6e42d6edb7dcb59feb54523bf07495d ofl/alatsi/OFL.txt +sha256 5c856c086e8743b84932aae46ced424729a703932b601e9eb8aaeac15a617ec6 ofl/albertsans/OFL.txt +sha256 de985adf63cff6b1bcb7c5cb55f1c5850fb1d36289d20a0e26d97a281bfcf956 ofl/aldrich/OFL.txt +sha256 c267a00c9476c78a2336d7b372b536885b8b24173a29ed53496f67a742c14961 ofl/alef/OFL.txt +sha256 f6f60d5d4cf4f4b1fc4e41353c897a2f5a16e6396c0cd8fa8bdfd2f4586a9a68 ofl/alegreya/OFL.txt +sha256 0677891e6a143f297350d260ad766ad33bfc18ed5fa4f213acf648d6b597ec1a ofl/alegreyasans/OFL.txt +sha256 0677891e6a143f297350d260ad766ad33bfc18ed5fa4f213acf648d6b597ec1a ofl/alegreyasanssc/OFL.txt +sha256 f6f60d5d4cf4f4b1fc4e41353c897a2f5a16e6396c0cd8fa8bdfd2f4586a9a68 ofl/alegreyasc/OFL.txt +sha256 f13013bb1f4887b67240ec2ec5754ef968a3753ada1e538b598eae375cf74273 ofl/aleo/OFL.txt +sha256 56372aed19c2701f50e6e784110af55bf8796ed51648805324ad1adb0a3860bb ofl/alexandria/OFL.txt +sha256 0ee34ce7c99b0deb7f7332bca0a4950d3796c23c00de77ada8aa29a4b55ff2c2 ofl/alexbrush/OFL.txt +sha256 e315abc82a78710c7242e2f2e6529651fd631d4d50e6ad98ea194f9b54c3d701 ofl/alfaslabone/OFL.txt +sha256 ef643b6b82fb5c2ce056e27b6bf6908433a785bbb6ee6dc23c4739743f063e54 ofl/alice/OFL.txt +sha256 fb5d6a8310a52ccc2036f1c98db07ece3a9f167d9b3138e13452fefc4c865fd9 ofl/alikeangular/OFL.txt +sha256 9c63835765bcc42b59fab82a211b61a8cea32f2abd7e8bf288d4c84463adace0 ofl/alike/OFL.txt +sha256 ff805fd2cff5f5f7e8890323702f4cd461c179a76bb6016c93031338f49af3d4 ofl/alkalami/OFL.txt +sha256 5985658cc7672eb25b95427a485ce922402908c90d9feaca2a88930cd98e54d9 ofl/alkatra/OFL.txt +sha256 ab721b35816e470fb11619ad3705f75d08dccd0864505e3d782e94fd937f6620 ofl/allan/OFL.txt +sha256 08fba9df5c9890f3ab00ee63f63e005ad93a23746f7484f5fe9501a1ad32730e ofl/allerta/OFL.txt +sha256 08fba9df5c9890f3ab00ee63f63e005ad93a23746f7484f5fe9501a1ad32730e ofl/allertastencil/OFL.txt +sha256 75db6ecda0911c52cc92b7aca4b7eb33120333e664851ec2b57fc6330f9fd84e ofl/allison/OFL.txt +sha256 c8cb4c94a558b6cb82ac5dc981a73a0b8aee35a5c52c8a7832fc0280c289ad49 ofl/allura/OFL.txt +sha256 142e053c374dd465a92bd7378116b517e344dbc662361308130fc2566db30c2a ofl/almarai/OFL.txt +sha256 b7eae5e3c3447f70caa14e0c43f5e0d953f54ee59df406f6362863bcee1a0a95 ofl/almendradisplay/OFL.txt +sha256 b7eae5e3c3447f70caa14e0c43f5e0d953f54ee59df406f6362863bcee1a0a95 ofl/almendra/OFL.txt +sha256 b7eae5e3c3447f70caa14e0c43f5e0d953f54ee59df406f6362863bcee1a0a95 ofl/almendrasc/OFL.txt +sha256 2b0ed87071361caf613d6362b46d7289037f1001af3b11ab747905692f87025e ofl/alumnisanscollegiateone/OFL.txt +sha256 e7ae596600908a4ba9634d03b8096fe3a5445fe692b3f420d7490512ca0e8521 ofl/alumnisansinlineone/OFL.txt +sha256 08e1c6fa00b198f9cf90fd8c7f540ce400892063234d5a3b38dcae9f659c977f ofl/alumnisans/OFL.txt +sha256 855c8e5b459dfa20361af32b393bab0c18f67f888ee7bd69d54318cbefcaa7fe ofl/alumnisanspinstripe/OFL.txt +sha256 89bf0833b785c49b0f271273ab440bdc20c85bf0322537dc901df940bf1579da ofl/amarante/OFL.txt +sha256 5eca89cdd576df5e4b7c694e0425b126a9ca839aa067df85fab33904a8187076 ofl/amaranth/OFL.txt +sha256 301f77908df2b00141b4dcea50cc1a586c3afcee78843bd811088e8263623f9d ofl/amaticsc/OFL.txt +sha256 ca424122f42a8d8442bc4cfd902f5f027ea67b5417705f5af1d1235927781720 ofl/amethysta/OFL.txt +sha256 bd8323cd1d2b6bbdfbbf99cb41ec1156d0352ced170de4aa3a96d95e6e20bf5b ofl/amiko/OFL.txt +sha256 72598f78a098644c6b4ac04665e0bad7a69841c0dc504e81a8399d963a23e50d ofl/amiri/OFL.txt +sha256 b73b7b5ef4da8d6f83c93bbcad4d2a8d13be8fb44f3eeb3305b7e6d1f0c5a0c9 ofl/amiriquran/OFL.txt +sha256 0dd8e32457e18621737b593ab0fac49905cd948a078ed0e64f4890df714a1dfb ofl/amita/OFL.txt +sha256 06c79c896894160a5810d869a822fa7d02a0e2ccffd97920b8cf3b880380f6e5 ofl/amstelvaralpha/OFL.txt +sha256 2ac164969308ac200eefc516151934701044f0db5695ae2acc15df2a8d22e5cb ofl/anaheim/OFL.txt +sha256 34f84fc4cafb1090f253e429fcdd72e9adb059864edd5ba3ba19ff4f0586769e ofl/andadapro/OFL.txt +sha256 43ee152fcd7be0c6eb3468f3012e776cb75bf88f5dec548be0aa4619bf438f9e ofl/andika/OFL.txt +sha256 de62be758bba267e653a5f457dfebb4680957e2c343eb3e7de15aff4746bed05 ofl/anekbangla/OFL.txt +sha256 de62be758bba267e653a5f457dfebb4680957e2c343eb3e7de15aff4746bed05 ofl/anekdevanagari/OFL.txt +sha256 de62be758bba267e653a5f457dfebb4680957e2c343eb3e7de15aff4746bed05 ofl/anekgujarati/OFL.txt +sha256 de62be758bba267e653a5f457dfebb4680957e2c343eb3e7de15aff4746bed05 ofl/anekgurmukhi/OFL.txt +sha256 de62be758bba267e653a5f457dfebb4680957e2c343eb3e7de15aff4746bed05 ofl/anekkannada/OFL.txt +sha256 de62be758bba267e653a5f457dfebb4680957e2c343eb3e7de15aff4746bed05 ofl/aneklatin/OFL.txt +sha256 de62be758bba267e653a5f457dfebb4680957e2c343eb3e7de15aff4746bed05 ofl/anekmalayalam/OFL.txt +sha256 de62be758bba267e653a5f457dfebb4680957e2c343eb3e7de15aff4746bed05 ofl/anekodia/OFL.txt +sha256 de62be758bba267e653a5f457dfebb4680957e2c343eb3e7de15aff4746bed05 ofl/anektamil/OFL.txt +sha256 de62be758bba267e653a5f457dfebb4680957e2c343eb3e7de15aff4746bed05 ofl/anektelugu/OFL.txt +sha256 ffa0191e03e3d94d2269bcdcdbaa31cd5c7dc6aa189ec531de939ffd2a3a5f09 ofl/angkor/OFL.txt +sha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485 ofl/annieuseyourtelescope/OFL.txt +sha256 8594350034ab1cb85a1946ef8852e69290255816c311450a66fed6eeda9d6292 ofl/anonymouspro/OFL.txt +sha256 b9ced72fbc4812b7dd2a67fe4df3ecbc0a75a7f43c0ffc4f0873a198d8b8431d ofl/anta/OFL.txt +sha256 60ddc0ee6e443b78940b5f92bcbab76c98ec6965e0da9fbdaf267383ab72bba8 ofl/anticdidone/OFL.txt +sha256 c1f8e0feb0babaacf774b971bcfd791e44125b9d61ff074e4c20924e9661556e ofl/antic/OFL.txt +sha256 22d1914919d3fe08b179dc31169fc743ca7eede7827b91a5d48c23c8cdc7cb81 ofl/anticslab/OFL.txt +sha256 ae9a754b006df720bb6721e7b78c04990df734f87195c6033140fceab60bebf6 ofl/antonio/OFL.txt +sha256 ee67e6ee22790b7929f1a3769ca2801d565c64b5a9096942c1adf5596de9c9e4 ofl/anton/OFL.txt +sha256 cbc57ac0dddda1b70f246a16358fc3c2a32628a23a6d10ef64f746141d3fb159 ofl/anuphan/OFL.txt +sha256 7f0313b042b462fcae1934436cc747f9fd4433e3b08fd6459a4a5104b0bbd5db ofl/anybody/OFL.txt +sha256 c0093b62824cfa8786df613c00a316fa483bdcb7ccd11ba5faca006bb692f68d ofl/aoboshione/OFL.txt +sha256 cf6dd07485d67d20f105afb9981dffdb6b180b59af45a228839cf3fb0277c9fb ofl/arapey/OFL.txt +sha256 980c2b058d331f3c5ca4a1223e549511b71630e4f4a5533879d436d583cb5665 ofl/arbutus/OFL.txt +sha256 1c023b4aca0e441c55c45c86cdff57fa524a96778f291d9a29a4ad777b70e2e3 ofl/arbutusslab/OFL.txt +sha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485 ofl/architectsdaughter/OFL.txt +sha256 3173acd82f8c6159b5b1037b539fcbd4edff68e65c2ea8b9412b5a5ca97b08ff ofl/archivoblack/OFL.txt +sha256 b2087ef3fb91248e346600d19021249152a9688efea72905aa1996bb16a4c8de ofl/archivonarrow/OFL.txt +sha256 108b4e57c9c796d3d38d0428ca7ee39de47ad93187302718d9b2d8864b9b716b ofl/archivo/OFL.txt +sha256 c5211cc6a0eb32a23608076d74585942dc4d9a738357cfe40b7dddcee1442f33 ofl/arefruqaaink/OFL.txt +sha256 41ac14451a624c69490e24b9aaaaa1f65dc9dc17c3f6f38172fc43d5ba654a1b ofl/arefruqaa/OFL.txt +sha256 424875d518bd5175f201a74349796121c959f9c095f960b9d57521612a77ec7a ofl/areyouserious/OFL.txt +sha256 aae6749568fe746a578b16cb6ca8ca9a22729b0c738254e17c21b23a61972bd0 ofl/arima/OFL.txt +sha256 a525f5a38671cd1a5e0071968fe39c8a135b4f42d412a92ab9cf970923332430 ofl/arizonia/OFL.txt +sha256 47a0b7e315bc56ca0326fca46302d87d48a61e3528d4196e966b62f5bf0243f2 ofl/armata/OFL.txt +sha256 c1bec22a6baf0cc6365b3f049694559f171a92ffa6eef2ddb26b0950ff6a4693 ofl/aronesans/OFL.txt +sha256 a94cfd8d1f5c33f9a7506def359b907f3313f7008bb57fc893985963cd342f8f ofl/arsenal/OFL.txt +sha256 3cb7c635ce885c1410af5cbe934d1a89b05055635a53a0a5971db5edc77a4ac1 ofl/artifika/OFL.txt +sha256 359671bf16c00cae69cb66d041296b2adc7a4becd73a463cb8c5e101d97c7986 ofl/arvo/OFL.txt +sha256 dd028a807788d5e22e9f8cc18f026cda23369954673658f2ecc7d30bdb364b89 ofl/arya/OFL.txt +sha256 a6f4d778db0d2a87c2c6e560f71eb018b4253505b2f23c108724dea5d4d74ed0 ofl/asapcondensed/OFL.txt +sha256 a6f4d778db0d2a87c2c6e560f71eb018b4253505b2f23c108724dea5d4d74ed0 ofl/asap/OFL.txt +sha256 223fa23e8419ee762c662e0faf912dfcf386fa7093ac9ff690e380ce1993ba55 ofl/asar/OFL.txt +sha256 14313e23f0e8f72849f29306b73e878001a77bf3a22fef14352f9800357a3827 ofl/asset/OFL.txt +sha256 7eaf6282cfab122b99ffd62a122fc27b6c3c8f2c65b56ff9b3a25badbc64887d ofl/assistant/OFL.txt +sha256 4e69611ba5017f1fde74c31d342f5c85604814b1b45387b9ab46205996dec38e ofl/astloch/OFL.txt +sha256 ea274e87939d38032b31fb741af75bff9fa3f8d4a8b652265f9e0ce1ad7e9f80 ofl/asul/OFL.txt +sha256 1d08c63944e639bbfe8a1b81e3c6a63836806c126b3573b9cda0db83fd27ffe9 ofl/athiti/OFL.txt +sha256 f32d22b3908fcad2c86a74000614ec22e6a7f66ea7e867e616026a27aebdc143 ofl/atkinsonhyperlegible/OFL.txt +sha256 96d82a96abc02fb457ddde0227833dbde9d1d02876c91f0a4e27845ca0d692fa ofl/atomicage/OFL.txt +sha256 071a0917e2aca3f11ebb24ec0a01b85315d3d07787b1e273033708f5faa67fd2 ofl/aubrey/OFL.txt +sha256 4fe01b13ffb41faa8f030d84843a95dab32792dfeeca7c072abbfd3f4d6896ad ofl/audiowide/OFL.txt +sha256 793891edf1f4f4f35b52fcc9706b03f779c7ea18ab8e9e441242d63ef0279488 ofl/autourone/OFL.txt +sha256 b8397dc8f7ede718fda9a553018d3dc2e90db99da53a85cb644204ce4e629844 ofl/average/OFL.txt +sha256 37d5360d8d2433689e78302a93cd88e9add8a2294046476625edada2d4328deb ofl/averagesans/OFL.txt +sha256 46239ba6485d28553fd944da4ad32a00d9c403aa1c3e111676b0b96fe458d1d4 ofl/averiagruesalibre/OFL.txt +sha256 46239ba6485d28553fd944da4ad32a00d9c403aa1c3e111676b0b96fe458d1d4 ofl/averialibre/OFL.txt +sha256 46239ba6485d28553fd944da4ad32a00d9c403aa1c3e111676b0b96fe458d1d4 ofl/averiasanslibre/OFL.txt +sha256 46239ba6485d28553fd944da4ad32a00d9c403aa1c3e111676b0b96fe458d1d4 ofl/averiaseriflibre/OFL.txt +sha256 2a0fd31798d131b38a9fe730a260bc9a1d85452e36cdf79e5fcaf937bf4d9f86 ofl/azeretmono/OFL.txt +sha256 a815f65bc72d90494b01842d3171f7cb0f9f935e023d9cc260904d221ef1064a ofl/b612mono/OFL.txt +sha256 a815f65bc72d90494b01842d3171f7cb0f9f935e023d9cc260904d221ef1064a ofl/b612/OFL.txt +sha256 213ab761dccc1d47421dd9b88c38b317f8cb35452655db4cf023886b78b76418 ofl/babylonica/OFL.txt +sha256 9c44c9cf5f348a3069f350ed032a55069532d66fb0d7cf958d09012667a88fbe ofl/bacasimeantique/OFL.txt +sha256 d38acce513eccb51d7ac34ca47be279e1fcfdeca1ed088bdd2d281dc6ca939ee ofl/badscript/OFL.txt +sha256 4f40ab196ccf674056fed8b0e6d4f918eea183a149be8a67bff1239413ebada9 ofl/bagelfatone/OFL.txt +sha256 e3ed3ad6cb257e16dc1789900707c5cd1cdef2d60d155389342604991cf693f9 ofl/bahiana/OFL.txt +sha256 d33d42f346e4c706291b3373b8120bfe5fa74377c6c858b0626e5dc4f5c29245 ofl/bahianita/OFL.txt +sha256 fe5e822667a4b2e083b8fdd7a37546163f26f6481b58742236abffdcfb3e6c71 ofl/baijamjuree/OFL.txt +sha256 f2f87c78860447f0bba5f99a1ff7c7e53cc39ead09bc7f130432e58df66be8ff ofl/bakbakone/OFL.txt +sha256 f916a0e34635667d5b9828401c10d461bb29780beddd45c30c5dc25c037dffbd ofl/ballet/OFL.txt +sha256 ad09b05dc8bc678c9daf7c4c5f7ef1f55e5726127f4330b2e98e40b9dffcb860 ofl/baloo2/OFL.txt +sha256 ad09b05dc8bc678c9daf7c4c5f7ef1f55e5726127f4330b2e98e40b9dffcb860 ofl/baloobhai2/OFL.txt +sha256 ad09b05dc8bc678c9daf7c4c5f7ef1f55e5726127f4330b2e98e40b9dffcb860 ofl/baloobhaijaan2/OFL.txt +sha256 ad09b05dc8bc678c9daf7c4c5f7ef1f55e5726127f4330b2e98e40b9dffcb860 ofl/baloobhaina2/OFL.txt +sha256 ad09b05dc8bc678c9daf7c4c5f7ef1f55e5726127f4330b2e98e40b9dffcb860 ofl/baloochettan2/OFL.txt +sha256 ad09b05dc8bc678c9daf7c4c5f7ef1f55e5726127f4330b2e98e40b9dffcb860 ofl/balooda2/OFL.txt +sha256 ad09b05dc8bc678c9daf7c4c5f7ef1f55e5726127f4330b2e98e40b9dffcb860 ofl/baloopaaji2/OFL.txt +sha256 ad09b05dc8bc678c9daf7c4c5f7ef1f55e5726127f4330b2e98e40b9dffcb860 ofl/balootamma2/OFL.txt +sha256 ad09b05dc8bc678c9daf7c4c5f7ef1f55e5726127f4330b2e98e40b9dffcb860 ofl/balootammudu2/OFL.txt +sha256 ad09b05dc8bc678c9daf7c4c5f7ef1f55e5726127f4330b2e98e40b9dffcb860 ofl/baloothambi2/OFL.txt +sha256 0e82859672e549fd39554e2bfa97b5511e81f4f89394f2e696666d36b5d52144 ofl/balsamiqsans/OFL.txt +sha256 876db27db250a9b9c03fc2ef30a5efe1f37c2ed2686d368c3779583bdf746912 ofl/balthazar/OFL.txt +sha256 630dd5a307c0657b094d324e069b390edf90182fe5003639e06c02a0e5769af7 ofl/bangers/OFL.txt +sha256 186d750eb496a4c17a76385f82be6aea2ac1cf2de074a811d63786cf374ea73f ofl/barlowcondensed/OFL.txt +sha256 186d750eb496a4c17a76385f82be6aea2ac1cf2de074a811d63786cf374ea73f ofl/barlow/OFL.txt +sha256 186d750eb496a4c17a76385f82be6aea2ac1cf2de074a811d63786cf374ea73f ofl/barlowsemicondensed/OFL.txt +sha256 d90fb3bcba8c59ffd661fe1973eb4d39d9b70da666343bdd584d4b09e12e5204 ofl/barriecito/OFL.txt +sha256 e2f2dc7a667954c16a919acff5351e8ea89813d10f5a7504e1f4668fffbfa14b ofl/barrio/OFL.txt +sha256 9a51726e5f247cb1f07bb8f49c163bc3e9ddee5f367bb5a1871d09b854ed1b7c ofl/basic/OFL.txt +sha256 7cded5db7bf3c281f9364469d5f89a1f836736f61d8bd47693d7fb037b24ab6b ofl/baskervville/OFL.txt +sha256 b7e7aaa1d798762d14374256ee62450bd6585f1ec9490a95368e90a90e425d7d ofl/battambang/OFL.txt +sha256 bc80ea18223ea0db2ed73ab5bfd0cd601906a2b7a163183c6c4ea333be309ce4 ofl/baumans/OFL.txt +sha256 1fb43cb6d1df2ba95e6757c4abe9037c9736f87127aded80d41e7ba82119f488 ofl/bayon/OFL.txt +sha256 072b20402dd2e98e819b7469e9ffc0f5e3cc42224e3ccd012494a8080198f516 ofl/beaurivage/OFL.txt +sha256 72082f6cb4d04be2ecf7cc7d9e1e7d73787f0af8a5a278a47cade70c16b78341 ofl/bebasneue/OFL.txt +sha256 b2c0e5c91cc2a0e0b9594ceae858c9bf0cf41dca3c1d7d0f3c508d41db6752a9 ofl/belanosima/OFL.txt +sha256 284a5a26e6db9a04259a5690ad57d52c56a4c515ca2ece1943d950f99e709dcd ofl/belgrano/OFL.txt +sha256 2348c4852e6322105d130aa2addbe24c962e330094ad6dfbfd9fbd2281d76b0b ofl/bellefair/OFL.txt +sha256 355326d5707ff94ffe27711c7ae26217b63e93de6d5b3413292174fda5f5f9d8 ofl/belleza/OFL.txt +sha256 92938e2734b9280a9d4428c0fe4421b3e501641f78dafc7438fc19c0fc625c07 ofl/bellota/OFL.txt +sha256 92938e2734b9280a9d4428c0fe4421b3e501641f78dafc7438fc19c0fc625c07 ofl/bellotatext/OFL.txt +sha256 460966d12f306a007930575c3b8bc336fe0c32f880d622af6d3b745a06ca79a4 ofl/benchnine/OFL.txt +sha256 d4a77174d44252b564b086e4003b9e84c7a4f52859ea3b316c1242d813bbc5c4 ofl/benne/OFL.txt +sha256 4a7d2f227b91046ef7a54f8f735668d86e45f4fd4089268de292a6e9de108253 ofl/bentham/OFL.txt +sha256 d941aa56e280b4f204272c4b1add01a8ebc7af3e8e69ba8ba9118aa2a5306dde ofl/berkshireswash/OFL.txt +sha256 e8d81ba3b06080b764626d4385f319344e102ddf2c08bb4209412ac22d695f69 ofl/besley/OFL.txt +sha256 b54f3a872628c8b350ffe6b069078936cc23d9d3d020f886ea5867a000c2e2ce ofl/bethellen/OFL.txt +sha256 578f12281f17e7dd88c9e553240243b29f4240043eef22093d32c043c4ab6dc0 ofl/bevan/OFL.txt +sha256 6b7f8f73609a25ea78c891e34cf37b06f8a676b7ea986e941e43b009110f2a85 ofl/bevietnampro/OFL.txt +sha256 012b1870f81b0d97ca756edd9eea315c7fc22657ac2f1cbdfcb6772fed3e20f3 ofl/bhavuka/OFL.txt +sha256 653b14a843954678d2ebcfbbc211d59edf10ea912a953ae00704230536e702f4 ofl/bhutukaexpandedone/OFL.txt +sha256 0409c6582424508453ce41648067efaacf0c790622918493d8f1d934bc5329a0 ofl/bigelowrules/OFL.txt +sha256 0d5fa0cce86012de872273700eef4fd162459e7c24a6a314911380627391071b ofl/bigshotone/OFL.txt +sha256 338f9c050f19daeda1d597243faf79f3a3d437c338af58cb7047617d0ce08771 ofl/bigshouldersdisplay/OFL.txt +sha256 338f9c050f19daeda1d597243faf79f3a3d437c338af58cb7047617d0ce08771 ofl/bigshouldersinlinedisplay/OFL.txt +sha256 338f9c050f19daeda1d597243faf79f3a3d437c338af58cb7047617d0ce08771 ofl/bigshouldersinlinetext/OFL.txt +sha256 338f9c050f19daeda1d597243faf79f3a3d437c338af58cb7047617d0ce08771 ofl/bigshouldersstencildisplay/OFL.txt +sha256 338f9c050f19daeda1d597243faf79f3a3d437c338af58cb7047617d0ce08771 ofl/bigshouldersstenciltext/OFL.txt +sha256 338f9c050f19daeda1d597243faf79f3a3d437c338af58cb7047617d0ce08771 ofl/bigshoulderstext/OFL.txt +sha256 89ccbb54444cd2fa0ee25cceb2e67d3453d56250a561bd176983b169cdaf47bf ofl/bilbo/OFL.txt +sha256 93f60741563b4f51f2fcdb207fde72b2b23292a47022c729aecd998b360d8038 ofl/bilboswashcaps/OFL.txt +sha256 0b7eae990329ac175a2e1c329060b3a4d6876e4e0cd7e5235511578352f7b191 ofl/biorhymeexpanded/OFL.txt +sha256 b14f883330579c3373e41c7c0acdfde91b2e812edfe1e6c5af91bd32a5fa7d13 ofl/biorhyme/OFL.txt +sha256 8214d2621f5a4113dd0eba60863e3e88916cd639444b519c87f6b6b652543072 ofl/birthstonebounce/OFL.txt +sha256 ae70628cbdffc3f7178e05a6c5ef0f94253e72eaa9c4bf109d50187151d16b12 ofl/birthstone/OFL.txt +sha256 505bb8f3c30f2006b4e02d250fda31ed94b651a35f1124a201ca1c405ce989af ofl/biryani/OFL.txt +sha256 b49fc895c04ec3e9cd31077f2539979da8065e2747037b1bb9c6548787050db4 ofl/bitter/OFL.txt +sha256 e753d7155d53c747d037a445e584c8ecfca6dd79846db610417e282a736b28bc ofl/bizudgothic/OFL.txt +sha256 ef0ed524b3bd012f37015e986809eed6f67905456ebfc1ebd7fcc2765282ee01 ofl/bizudmincho/OFL.txt +sha256 e753d7155d53c747d037a445e584c8ecfca6dd79846db610417e282a736b28bc ofl/bizudpgothic/OFL.txt +sha256 ef0ed524b3bd012f37015e986809eed6f67905456ebfc1ebd7fcc2765282ee01 ofl/bizudpmincho/OFL.txt +sha256 a9b3e7e1cf5735dc49d802b88b1858a2a50307ba2a877ddf3f0b27d8b1d0abc5 ofl/blackandwhitepicture/OFL.txt +sha256 a02e8715fcdf3325c474b7209399f50230897bfa828fe4eea2639ced1a1d574b ofl/blackhansans/OFL.txt +sha256 f67ca4a200424868ee8fcd5464d7b35ac1cbf7723f6bfdbd19a8524689fab9a8 ofl/blackopsone/OFL.txt +sha256 94b5d5a52420a96f2b4f427bc6f56133f6ddbdfaffa17fdd29049811fc9fd64c ofl/blakahollow/OFL.txt +sha256 94b5d5a52420a96f2b4f427bc6f56133f6ddbdfaffa17fdd29049811fc9fd64c ofl/blakaink/OFL.txt +sha256 94b5d5a52420a96f2b4f427bc6f56133f6ddbdfaffa17fdd29049811fc9fd64c ofl/blaka/OFL.txt +sha256 1d084d2a6ecdadb969f9dbff4c834a8625e4c4625acd5c64f5e95809e4a3e0c2 ofl/bodonimoda/OFL.txt +sha256 3793a376255d457c0571e009846e92b4fca702756e6f28d43b54e71bff40e380 ofl/bokor/OFL.txt +sha256 38f7dca74a98bbcc13858c9f56e9c7d86e12b4242f2a5ccbecf6e9277c9fd363 ofl/bonanova/OFL.txt +sha256 d13a278247ce39695f5ea6b721103faa668083022c5280b78c6392263e473929 ofl/bonbon/OFL.txt +sha256 c130db0ae064ae91ddfa3f73c766d6998895cf4138f37d85398fc14ff62d555e ofl/bonheurroyale/OFL.txt +sha256 4653c63a4bab99aa50de5190853fa21ea6c0a25d69d49f5a42cd51f0f67665e0 ofl/boogaloo/OFL.txt +sha256 a44737231b1272dda0ff794086a02be2967de9a83db7eeb0265007c9667cbd12 ofl/borel/OFL.txt +sha256 f3ee3eb20a9d565bee2bbc0d616de382a113327d7506565b2f3d3bee5f489375 ofl/bowlbyone/OFL.txt +sha256 f3ee3eb20a9d565bee2bbc0d616de382a113327d7506565b2f3d3bee5f489375 ofl/bowlbyonesc/OFL.txt +sha256 005dd8f296dfe349f4da0da2ab29fb730a1be2b16c760197740b133680c85769 ofl/braahone/OFL.txt +sha256 6bb89ebc3087ca384513615bd4faee0a636fde0934718263257a13b7eabf83ea ofl/brawler/OFL.txt +sha256 fbe0442a6b1ce162c95e241df76cab5ef2daf6a5ac84ae1a7a6749f32c051098 ofl/breeserif/OFL.txt +sha256 4b5a7d8f37f5602621c8a8d7358a6a2e71317e6c231c661e15aef0275d3e07ba ofl/bricolagegrotesque/OFL.txt +sha256 0818bff7217e2a147826e6f18f6b4c5094f7415fcc61298883dde2fded9b4411 ofl/brunoace/OFL.txt +sha256 0818bff7217e2a147826e6f18f6b4c5094f7415fcc61298883dde2fded9b4411 ofl/brunoacesc/OFL.txt +sha256 733ac89b598ee093fe094927a8e66a988423a61b745c62233a2b0d6e2a159e58 ofl/brygada1918/OFL.txt +sha256 26daffa24723bb188643085cfc5423f9d78d22a395df4a7928380e430545a201 ofl/bubblegumsans/OFL.txt +sha256 39602407e30d466bf169f46d690aaae4f5f039258e5642f91a80bb132ce6e14a ofl/bubblerone/OFL.txt +sha256 a9ef1db03f660130790beeb3b5d91b68536a44a98ec2db3097d02a1c5f91c599 ofl/buda/OFL.txt +sha256 3bbcf1617d93d3a949a10da78ae91c58be536fb04567ab4b5b9fd207126f1db5 ofl/buenard/OFL.txt +sha256 2ce1c4fcf4ab9c8474d0824434497d4afa4425db4de5629103698b170ac4ee74 ofl/bungeecolor/OFL.txt +sha256 2ce1c4fcf4ab9c8474d0824434497d4afa4425db4de5629103698b170ac4ee74 ofl/bungeehairline/OFL.txt +sha256 2ce1c4fcf4ab9c8474d0824434497d4afa4425db4de5629103698b170ac4ee74 ofl/bungeeinline/OFL.txt +sha256 2ce1c4fcf4ab9c8474d0824434497d4afa4425db4de5629103698b170ac4ee74 ofl/bungee/OFL.txt +sha256 2ce1c4fcf4ab9c8474d0824434497d4afa4425db4de5629103698b170ac4ee74 ofl/bungeeoutline/OFL.txt +sha256 2ce1c4fcf4ab9c8474d0824434497d4afa4425db4de5629103698b170ac4ee74 ofl/bungeeshade/OFL.txt +sha256 2ce1c4fcf4ab9c8474d0824434497d4afa4425db4de5629103698b170ac4ee74 ofl/bungeespice/OFL.txt +sha256 a0369b1d5f654110f2fe101db56a02d02806f1e609ab233368bc573ec45050e5 ofl/butcherman/OFL.txt +sha256 d64c91b0306b53fabed08762068eea8b918d654fb0721c288f13cefa4aaf088c ofl/butterflykids/OFL.txt +sha256 a20db45220b6c4dc9776f24c77dc9ec7a98977d8b3c65b03aabe66b2d08e0791 ofl/cabincondensed/OFL.txt +sha256 965bf33673aec648a3b399185639e502b58e52693d004fc03f6bbdf21b1a0094 ofl/cabin/OFL.txt +sha256 f6fc9fbae062e4efc1b0306e27715d43cd64a48b8ffba81c22034b8efee4fce2 ofl/cabinsketch/OFL.txt +sha256 bcb0bda74430ccc281a616a81d0a287fed5a423815b00b222e0b7f603f85b26f ofl/caesardressing/OFL.txt +sha256 c0a8947de199b422d30c16137e4decd5362e3a1d504422880d69c02bd6046dac ofl/cagliostro/OFL.txt +sha256 a4554e1799d42e1405924b61eb0e0722ae1623b1f1f07f995348f96c496362a9 ofl/cairo/OFL.txt +sha256 a4554e1799d42e1405924b61eb0e0722ae1623b1f1f07f995348f96c496362a9 ofl/cairoplay/OFL.txt +sha256 ccdab61d371d8c8683a128a92cd7d498dbdb1d37689f7cb21f1bf6b16658d213 ofl/caladea/OFL.txt +sha256 c25166066fc22ae04c4c5076d67e2c839fa796aa6da4ba8cbc550a16ee2fff87 ofl/calistoga/OFL.txt +sha256 846e8cc6dc69bf685d2db14cfa758ff3d9d771d54c9e0d3b511f0ecb97ac0e8a ofl/cambay/OFL.txt +sha256 5454dc5cf2f46a2005f42f13ee2a998c7d0afd7f556f32fda208c72b266f7adc ofl/cambo/OFL.txt +sha256 f0be7437bbb8b91ad4a4f7a5f3d0020368e494a803d892df03e8886d51f2db3a ofl/candal/OFL.txt +sha256 3d916878ddf8e33ecddd57b8cadfb4c3cf84760cf9c1d66ed3e0654c20403d6e ofl/cantarell/OFL.txt +sha256 f8fbefb5b1004615e6d1e84b1c75e68520d91196f600cb1b07620dd2748eff64 ofl/cantataone/OFL.txt +sha256 867b506cb023eae20c1accde77b2e0abf7d8a9e2620da8dbebac9f7b1117ca0b ofl/cantoraone/OFL.txt +sha256 755d165efdbad1ad4a7840aa1f2484b0111627993e162bdcfb25fb2c277db955 ofl/caprasimo/OFL.txt +sha256 13e862ac3f67130f58bd4bebb61c588d147b5a555b1ac6959570799c4f648cd0 ofl/capriola/OFL.txt +sha256 3acada615ba300875cf2b4fada3873b8fc93ee099682059782ab25a08e29a6b3 ofl/caramel/OFL.txt +sha256 c83b38a64847eb1a4583a044f001c82c52df49e77f0a40edf4d0d2aa9c3ef9f9 ofl/carattere/OFL.txt +sha256 8e28b778b6e1a7ff9ca72f4dee2d53120aa2856dc1bfd0be44307e365b0e45bb ofl/cardo/OFL.txt +sha256 58402f82a7c332a700294988fe7554fbb0a63a8d27ccc1ee3bbc640311990a00 ofl/carlito/OFL.txt +sha256 806cb93632b8091cd36554642a96b2752bab50015da6a2b456d786c1f9aef5a5 ofl/carme/OFL.txt +sha256 afc1b710d644c1262e1765d2401abcf93a545a4cb051955e2243fbabb8164e25 ofl/carroisgothic/OFL.txt +sha256 afc1b710d644c1262e1765d2401abcf93a545a4cb051955e2243fbabb8164e25 ofl/carroisgothicsc/OFL.txt +sha256 c4afe82f49c05689c40dd4e262803b29c6e611e7b4efd3a0418f574b2be79d9a ofl/carterone/OFL.txt +sha256 336c6a25afd535f9019824e419f5b507d31360a2fb1c87c6e1a663dc74c3b248 ofl/castoro/OFL.txt +sha256 336c6a25afd535f9019824e419f5b507d31360a2fb1c87c6e1a663dc74c3b248 ofl/castorotitling/OFL.txt +sha256 c88333734ad7cd30540ec6614d12aa829a0395715de30e336d22ddfa3005db42 ofl/catamaran/OFL.txt +sha256 1e5bf8207a40678bc401e2e5456d0db1f2a183b550a30976b48dcdd6a4e4c46c ofl/caudex/OFL.txt +sha256 21b54eb0d7513524798a00dfbaf99a02c003a0012a728cc5f0e02d24c50482fb ofl/caveatbrush/OFL.txt +sha256 1f9d81d094273d82f3898a1ee8b598a717d050ecbf5ff7bede105b704880157b ofl/caveat/OFL.txt +sha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485 ofl/cedarvillecursive/OFL.txt +sha256 9a33b452a3107542c35fc5fcee80e4d8798c82aca071c2f6f58a0f8dc5ad61fe ofl/cevicheone/OFL.txt +sha256 13831d02389d917d22fcfa6c79f98f8acbf61d230add0e73a4d4dc5f3bfb9e56 ofl/chakrapetch/OFL.txt +sha256 6b12c8d417bb766fa017d1161c7ca050392817a7eecbf3110fc2a8616564b956 ofl/changa/OFL.txt +sha256 67261c7ceb3e627da5c94d6617dac6da29bf36b910bee304a7680ad62e2c8b46 ofl/changaone/OFL.txt +sha256 e98ce988fba1c138f4e7c0c5120809706ab1b24a3c29638ca83ab2ff082e08db ofl/chango/OFL.txt +sha256 0acda775b4dedaf980821f590206a692779ee495170018ee2b9caf1c50fc136a ofl/charissil/OFL.txt +sha256 41423e9e1d0ea79d0e78bd5fe9e0b27f4c23140706f5dfbfe116839c83aae91c ofl/charm/OFL.txt +sha256 23b896f4937eac954a383340c92dfcac1c6e05ec21cc08ec6de47d30ad8496a3 ofl/charmonman/OFL.txt +sha256 8c495ddd455def58a45310376a747bb61bf86e4b071cc527b3618bccd3ef00fa ofl/chauphilomeneone/OFL.txt +sha256 5d3457831b42632d958fe1a14a09706d8acb006486a5ca5b2b419cd61cb22e32 ofl/chelaone/OFL.txt +sha256 ae6de2f6fc00f76cc7eb0d97c1ae5e0b7ec734f20ad7f58cf4c74738dc822d21 ofl/chelseamarket/OFL.txt +sha256 bb8fac04b8535d39fb9851c9d886248d25bc0c82000066c92dd577c3369f512b ofl/chenla/OFL.txt +sha256 09fc82b47c15731fa66cc812d5110e00879c75209ab76d68bb813eff5ccc182d ofl/cherish/OFL.txt +sha256 0e04cbdaa14fc3e98b6ad1c9156b04d952cbdd0d31845766bae4cb543a71bcba ofl/cherrybombone/OFL.txt +sha256 d416bc9437e1d7d8aba0613395ee49c95ce72d680672e910c6205b545cfcbad8 ofl/cherryswash/OFL.txt +sha256 f27cbf1055db7b9dd80bce5cd12b462f2d9ed7313d84dd8bfef1ddd2b61bdfc5 ofl/chicle/OFL.txt +sha256 f7516c3dde20383922ee27750d432cc2b95b4ba275204d374b7305ef95ed2d14 ofl/chilanka/OFL.txt +sha256 c9b69fa18c372df2b187b49efc57b1ea643b86a938e5af32f6b5a7af1017c891 ofl/chivomono/OFL.txt +sha256 c9b69fa18c372df2b187b49efc57b1ea643b86a938e5af32f6b5a7af1017c891 ofl/chivo/OFL.txt +sha256 55270f3e221dc526d84c2833e512cc0f399bcd2b4b1746f63d532345b23fae56 ofl/chokokutai/OFL.txt +sha256 74584d937293a9cacdcd2eb05851b71aa1527901c18b87961d2f877c77a1b486 ofl/chonburi/OFL.txt +sha256 1e5d6660366ddcfca4f2fc10e2acfba9fa4d97d40aec80d7dbfd41d730a420ae ofl/cinzeldecorative/OFL.txt +sha256 f2b3029aba64c378bf0963b62945eee15e564fe4330b934c8f2eb058282b5e83 ofl/cinzel/OFL.txt +sha256 ec1d7de447a90e4b6d8f2b4f95c7f89a70e315fdb41969bc716059e4f2461fa4 ofl/clickerscript/OFL.txt +sha256 4630b4e729101fd951afba1ed560f54d446b2eaaab7e7df07ed2f4955c909b79 ofl/climatecrisis/OFL.txt +sha256 0b1bada9befa95a40d55830fe83fc7f8064e245fea33bdf0f96f57848f3866fa ofl/coda/OFL.txt +sha256 35dca6122235851d236bd861124f4a893d409eba021cd8c6a292a19df0f4640d ofl/codystar/OFL.txt +sha256 5c289da4a19f054ace8e31a144a6a254601898cd7faf9eaa301141afda0adbbe ofl/coiny/OFL.txt +sha256 574430e571a6928624f4bdf044420f7547a26309b7ebf6962296d33294e0a1e0 ofl/combo/OFL.txt +sha256 bc85bae0b512b799bbfb2b916e4d0a34cfd963d09778cd783e248b479e67760a ofl/comfortaa/OFL.txt +sha256 8a4fe79803bade3a40c58d2ab69586f20b841f143e4ea60fd2bf7d98b29a8489 ofl/comforterbrush/OFL.txt +sha256 abc9cc1c5d7dc6005ebffb703055380ad7b39a159f690e16233d80f78262f82b ofl/comforter/OFL.txt +sha256 7c38a22e5878e60fe423360553e63dd7be23d29f1f60336034935dbfc96e8320 ofl/comicneue/OFL.txt +sha256 2685ed3cc823fdf9c1f91e59ede79bc8823a1b5e5d654e10072bc6d310277065 ofl/comme/OFL.txt +sha256 4a7d88c77b4bc39ff84f2e058ba8f015636c50ce33588a86d9da97defe519933 ofl/commissioner/OFL.txt +sha256 162a3b5c72cba845280a6f887c11d02984540b924510138c8b1eb473bcdafb6a ofl/concertone/OFL.txt +sha256 2492bb8645caaf622bdc3e880cdc9b069921e7341346d7b193666c866a1935d0 ofl/condiment/OFL.txt +sha256 08a12877eda24767239f26b527bfce0c515efaf623c66da6baad92a6d5315e9a ofl/content/OFL.txt +sha256 90bd333a5cf0ed09264fc3e559d44979373f6c3d983b0f65cc46e952b4eb61f0 ofl/contrailone/OFL.txt +sha256 354b4be0340cd58e381fdf58793a108897bf944a7f8faf9e877c476ed6c730d1 ofl/convergence/OFL.txt +sha256 c832a4230a713d080aa2f2544d9a298ed911f689b2c48f7f276a0196b16d2b8a ofl/cookie/OFL.txt +sha256 7a1d085067cd589026b256dd85af1eaa1087fa0f3d468192724c5138cc14d894 ofl/copse/OFL.txt +sha256 aad1e82802172d4c1d22dd015a5b8b4275e5665a49c1df54ed64716fca7ae194 ofl/corben/OFL.txt +sha256 93c4a947d0c82b6838675aeb6090b7e9e7534b9655b2aeec1874149290a58bbf ofl/corinthia/OFL.txt +sha256 60700d351cac4650c51f3f9db318d2a420f8b45052dba2715eb5fec41f0f6956 ofl/cormorantgaramond/OFL.txt +sha256 60700d351cac4650c51f3f9db318d2a420f8b45052dba2715eb5fec41f0f6956 ofl/cormorantinfant/OFL.txt +sha256 60700d351cac4650c51f3f9db318d2a420f8b45052dba2715eb5fec41f0f6956 ofl/cormorant/OFL.txt +sha256 60700d351cac4650c51f3f9db318d2a420f8b45052dba2715eb5fec41f0f6956 ofl/cormorantsc/OFL.txt +sha256 60700d351cac4650c51f3f9db318d2a420f8b45052dba2715eb5fec41f0f6956 ofl/cormorantunicase/OFL.txt +sha256 9134ca6996bd33ea2022e109f13f20e29dee1dcd8b2e8878aad576d2ca334e9f ofl/cormorantupright/OFL.txt +sha256 0836fd874230b17f840efcf7d3bb529f5a7b5befbfeef94478519cfe2d8551c2 ofl/courgette/OFL.txt +sha256 9a755af092b494944c99f471be6fddd19b006a448fefdc4717e4ee0aa09a97b0 ofl/courierprime/OFL.txt +sha256 c972795e48b096b6d4e3a947b0bb21c1baf1922a6e07ff9ada587c058f228740 ofl/coustard/OFL.txt +sha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485 ofl/coveredbyyourgrace/OFL.txt +sha256 c09e3b81d9cfeec46bc29a3374000e8ad013d694bdf24a288088491dd4cd5c69 ofl/creepster/OFL.txt +sha256 4938e917ac54665be1dd862f54634d991b39c5d1eef69345d66a5089e401bfb4 ofl/creteround/OFL.txt +sha256 1820869bd5baa1c2d88fa87c89eea532cf9442d841008acab720654b7f82823d ofl/crimsonpro/OFL.txt +sha256 50fd67cddc097377a5c871e8452b778bc5aedfa3480a705cb27c5e3a078218df ofl/crimsontext/OFL.txt +sha256 eba176d3ae86af6b41e9b744e4d18fb56e2a6ad671381bddb61fabb86b1d39c1 ofl/croissantone/OFL.txt +sha256 af74fe3bf28777e8b7df9f7ed718b15f92e14d60448f36d7dd21ada6caeca33a ofl/cuprum/OFL.txt +sha256 1a2debd5ad8e656b26bb3b29213caa8f7e557a2f31454b11ebb6c3e3b59aa5d4 ofl/cutefont/OFL.txt +sha256 bc4c7eb365ea342b1a027fb8417fb0152f5d482a2e31c012fbfa29b668827b04 ofl/cutivemono/OFL.txt +sha256 1404cc9279d4ad713a372a5e1e1d20d7b9b000d2397c8529aeb3df5402446600 ofl/cutive/OFL.txt +sha256 58e2ecc7d7147a7c8268553c1bed2354331c2003829396fa6f9506852144e46e ofl/daibannasil/OFL.txt +sha256 a21fa252efb7a1ff84de6a36df4386959668aa046f28161b4047829f7d9cd1b5 ofl/damion/OFL.txt +sha256 6f090277c00af96651ce6dbcc38ff1591047a3bffef486e80b6a32e8276a8201 ofl/dancingscript/OFL.txt +sha256 4a89bc6c8bb9f144683714d67dd3098400f90e194176c31f429fe23a08713ec7 ofl/dangrek/OFL.txt +sha256 60eab011e210601f85e18474c5a191838c95a9acce0cc6da1c646ac9e3683cd9 ofl/darkergrotesque/OFL.txt +sha256 bd898c86fb555f060ee9e5d318d631bbdcd196b98ae8019e0077421f46da132f ofl/darumadropone/OFL.txt +sha256 b67325cbf8ec07e72162e8dc06abcf0599411483a0fc35c55c2908900a4bc585 ofl/davidlibre/OFL.txt +sha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485 ofl/dawningofanewday/OFL.txt +sha256 cacad5bf45bf5c81f4b6cbd114261bc8a08f6110b66a4c6fad8bbc16618a3096 ofl/daysone/OFL.txt +sha256 64ecb0c6bf5cd80c3da76035c00671272966afbd32ffbdbcad95a8b56501fb08 ofl/decovaralpha/OFL.txt +sha256 f139d6f43d2a63a8fb3ded48b8ec747d9d59a7fbb13d077d9b96ac88580bc1ad ofl/dekko/OFL.txt +sha256 3fa395232efa6d42e5af84de2503875c895b24a9299bb84aa54633c74bf8a0d2 ofl/delicioushandrawn/OFL.txt +sha256 d8eb8611f8c98d20cbf18a28425652d6022dc2a5cca15026b920f1f2bc92a612 ofl/delius/OFL.txt +sha256 d8eb8611f8c98d20cbf18a28425652d6022dc2a5cca15026b920f1f2bc92a612 ofl/deliusswashcaps/OFL.txt +sha256 d8eb8611f8c98d20cbf18a28425652d6022dc2a5cca15026b920f1f2bc92a612 ofl/deliusunicase/OFL.txt +sha256 19e186a088a50835b38b59409a76b8df2d0252ce114a99e79e306231bbe253b7 ofl/dellarespira/OFL.txt +sha256 9224862f76f6ffc1a12abf2ae4310e584cfdd2a475c503f74d1e0c0e8bee5ed0 ofl/denkone/OFL.txt +sha256 bac36a7fcafc5702d9d928bb81c7de9f8739eaa820e546c3d2cc52730b652af4 ofl/devonshire/OFL.txt +sha256 9e53298e3629e00ae4c31531cca09051ddaa654a5de4f7b55e596132fff86e1f ofl/dhurjati/OFL.txt +sha256 00a6fe8dfdc48d6206bcc4f10a765515a73433dfba7255eff966963beb26facb ofl/dhyana/OFL.txt +sha256 36e2f1debc9778bac79fac1a0cb5a5ef51c102f00b58ef7d8a05324144b68166 ofl/didactgothic/OFL.txt +sha256 cdf5fc4014abe91588666a9592ec86200e5a4d743b4b6e05d28d47e850bbe5fa ofl/digitalnumbers/OFL.txt +sha256 9279f4143833810493f74b4520c8b8fce2526d9df2da9564ffe897e065e1d461 ofl/diphylleia/OFL.txt +sha256 f4e8602be4b69bc44e3ce17d026622722b992a07b1aab0db23da48b0155b289e ofl/diplomata/OFL.txt +sha256 f4e8602be4b69bc44e3ce17d026622722b992a07b1aab0db23da48b0155b289e ofl/diplomatasc/OFL.txt +sha256 2bada5ea45c3c63b7f1ea1f88ce9672c9e4f0c42b2c3b7378949084fe55a3066 ofl/dmmono/OFL.txt +sha256 9af36190332437f5ecd09974de43c1f7c77a310a996cdd8ceb25628b458840e1 ofl/dmsans/OFL.txt +sha256 a3e5cdd67d4571dd0a24fcc968de0efde7ae97ef752daf0906e4767619dd7231 ofl/dmserifdisplay/OFL.txt +sha256 a3e5cdd67d4571dd0a24fcc968de0efde7ae97ef752daf0906e4767619dd7231 ofl/dmseriftext/OFL.txt +sha256 de5ff32211a4340b01477af39ee339d639438955e409f79b666d4b9207f3c92c ofl/dohyeon/OFL.txt +sha256 dcc832bd71ea62cbf97f06327a1b5442905b49ea446801421d71f7d1362db215 ofl/dokdo/OFL.txt +sha256 4931b601cf50f9e6ee749ae76778a067fb2e0df4296f08d095ef38afc526a5e4 ofl/domine/OFL.txt +sha256 8aa063e3a1299c5e1821f386f5ca8bc157ac561bd12c739ffa81c6f0821450c0 ofl/donegalone/OFL.txt +sha256 f9e59049e824264bffd626d0901cfcaac9d5ba756988b904d3e3e0e233493607 ofl/dongle/OFL.txt +sha256 4342add6f0f2261f8579f31c10a55938930559703eed18be4a33b74eb749d298 ofl/doppioone/OFL.txt +sha256 92f750829545386017c3418d890769778b76fd01dfb41c62fcbb0d42ba0303eb ofl/dorsa/OFL.txt +sha256 6dfa3951f0c829518b284608fcc1acb196cba1536b1ae1713a49deccde1ccc53 ofl/dosis/OFL.txt +sha256 b6630c61ea078cacd7fabe37d14ffe557a0b45b06683374a9aa9e24262993e33 ofl/dotgothic16/OFL.txt +sha256 3621f156cc7a26e0a9cb413332e0bb35a0e76b36dbfe0b1c885b565a7bf3051e ofl/drsugiyama/OFL.txt +sha256 9df0700fcd0ef48abd74459a8650d35f59397fbaa00c5b00527e57cc155689c0 ofl/durusans/OFL.txt +sha256 ee2c069b30f3e9a5aaf52357117ee3443ee27f17c29a2ec68861db283379905c ofl/dynalight/OFL.txt +sha256 ad0bc2ae83f6dbf6f3edde26752324260c2fbaf9cc021748d363a879dd5b749c ofl/dynapuff/OFL.txt +sha256 3184f6a99f589c78740fbff6ddaaabb43b8cc2f3852da36e60aeb024ea8d6f00 ofl/eaglelake/OFL.txt +sha256 39de3de5f1873f89bca4af37823ab22e28e88d0d8f7fe2f07e82e9e6e9bf7b70 ofl/eastseadokdo/OFL.txt +sha256 5946eec3a7d3bda02825930156e4716198e7753641dd3303a3e8c386c8011909 ofl/eater/OFL.txt +sha256 6f9e3a1c51f617e7b110862426204ec7a56d8c6d2f731373b5de6b8d069099b6 ofl/ebgaramond/OFL.txt +sha256 1b3b78123c94dcbc9fd4ec174317336c8c93423da62dc946b8852553cb13ddee ofl/economica/OFL.txt +sha256 003e3a0675b0b5d38cb6a188039d33a8d747a84effec32e7f8aa6e25cf6d3e2d ofl/eczar/OFL.txt +sha256 9c50bb9d2dbfd864553688da113bf817a294f3721b7a35ac6569c63bb939a998 ofl/edunswactfoundation/OFL.txt +sha256 9c50bb9d2dbfd864553688da113bf817a294f3721b7a35ac6569c63bb939a998 ofl/eduqldbeginner/OFL.txt +sha256 9c50bb9d2dbfd864553688da113bf817a294f3721b7a35ac6569c63bb939a998 ofl/edusabeginner/OFL.txt +sha256 9c50bb9d2dbfd864553688da113bf817a294f3721b7a35ac6569c63bb939a998 ofl/edutasbeginner/OFL.txt +sha256 9c50bb9d2dbfd864553688da113bf817a294f3721b7a35ac6569c63bb939a998 ofl/eduvicwantbeginner/OFL.txt +sha256 2ee5e8e47cd7d08f60bb9555f72b25912c9e81b13f5bc9a0551ddf943da6ca98 ofl/ekmukta/OFL.txt +sha256 c4955dfe15a5db10326aa58ef767460c42cd12a3acdb3e698eee2704eb373d94 ofl/electrolize/OFL.txt +sha256 b69113722df50071b68ea377ad261919f08fd0dd6672f68b8868445586a30770 ofl/elmessiri/OFL.txt +sha256 0c3f4763f49c2cd37757a2856ad470aec6a416981ac6d6e3f900c1128be39de7 ofl/elsie/OFL.txt +sha256 0c3f4763f49c2cd37757a2856ad470aec6a416981ac6d6e3f900c1128be39de7 ofl/elsieswashcaps/OFL.txt +sha256 8f94e5901c371537043e0c762c827ce33963e7bd186fbea0abafc035ef7120a7 ofl/emblemaone/OFL.txt +sha256 0623888cc2391c6c9853c04eafa7f687fef1a8328bbb848feab05d9e2a98764d ofl/emilyscandy/OFL.txt +sha256 cc8c0c3e81cf543e190f128b83ba7c30959f15865c14dd972fca4917faeceec1 ofl/encodesanscondensed/OFL.txt +sha256 cc8c0c3e81cf543e190f128b83ba7c30959f15865c14dd972fca4917faeceec1 ofl/encodesansexpanded/OFL.txt +sha256 b47f4d635e8c592a37e98f751627cad0a81694c56aecc603b33819a908ea9625 ofl/encodesans/OFL.txt +sha256 b47f4d635e8c592a37e98f751627cad0a81694c56aecc603b33819a908ea9625 ofl/encodesanssc/OFL.txt +sha256 cc8c0c3e81cf543e190f128b83ba7c30959f15865c14dd972fca4917faeceec1 ofl/encodesanssemicondensed/OFL.txt +sha256 cc8c0c3e81cf543e190f128b83ba7c30959f15865c14dd972fca4917faeceec1 ofl/encodesanssemiexpanded/OFL.txt +sha256 ef0bdccd20de76d517fb3939161d05ecd5808382fb8fa82cde5fcdb3adcb8029 ofl/engagement/OFL.txt +sha256 a8103c045a88bf9b28dcd7eb60a6662008f49afc0f3721bc46aaf761fc0409e7 ofl/englebert/OFL.txt +sha256 0e74984817cdd51dbfbd8309022aa75f733e80dff0cb1d26ad2157e90446ba97 ofl/enriqueta/OFL.txt +sha256 6160853a95e0826f3d9dd21d26b7518b86e50a3469f19a62c3f4ce1ab1ed5573 ofl/ephesis/OFL.txt +sha256 95ebd6a2e4035b8398c83928fb85297b48441f27f405398c29b59aae899fc747 ofl/epilogue/OFL.txt +sha256 d484e0dce424a9e360adabb568b6773db5f1566df71ce3e9dcd66a6cc2c38d33 ofl/ericaone/OFL.txt +sha256 5bbeae56b9db61a9bf85b64d5ed9a74cfcf9ee3e9b005bc2906859ddecd5eaa1 ofl/esteban/OFL.txt +sha256 b3a14dd814e7e5158a1869fd89094e213f1ab9abc62e1e1730b751cc93fef3a3 ofl/estonia/OFL.txt +sha256 58bbdbe5c48dd1d7cfd658425a455c29811181873d3a46a4932c29e5b0ec16e6 ofl/euphoriascript/OFL.txt +sha256 9bc1eb1c679510b32d2e3f5f4f3b47726b1657aa121494aa68ba0b124a3c3a53 ofl/ewert/OFL.txt +sha256 cecc43de8bf5449d88fb03a6d33b0b569df304545d3b57760863e833a6434d45 ofl/exo2/OFL.txt +sha256 1159ea72ed1f7e7541cea35a0dece48d2abb0317d7c70f75a482f94932382a77 ofl/exo/OFL.txt +sha256 6cc3a1a3e60a0db4f824c16d42e7db461a939abb0759a740a4135074001eaba5 ofl/expletussans/OFL.txt +sha256 b8ed61f16fe601a8d20fa9c8ea979f4a7424c324596ce3cacdebb19353e1d808 ofl/explora/OFL.txt +sha256 f2c0dfa02d6f5c444b4babd7bc0b43be77ea85706e8524342516bc41e43c2f01 ofl/fahkwang/OFL.txt +sha256 9708dd560d1f8aa1f006461aa447a31fda7b9aff662d152837654a388e0eb2ee ofl/familjengrotesk/OFL.txt +sha256 9ca8b9e5db7184105da255bb110023cf1cce6caa56186341bb7b09ba97b20ba5 ofl/fanwoodtext/OFL.txt +sha256 2f9d46ed4ff595fe040cfcd11d41f80cd6b31b72c8e1b4ac793db50382cd3154 ofl/farro/OFL.txt +sha256 afc1cda4eedcfe27c8cf30fe3e9879587cb43cc2882d4cb91dd3e3fc9eecd0bf ofl/farsan/OFL.txt +sha256 a7fe1f3d23034092b015aaeb53d2ecbc9e592be96b10bdfbcf8700ec6a6ffc97 ofl/fascinateinline/OFL.txt +sha256 a7fe1f3d23034092b015aaeb53d2ecbc9e592be96b10bdfbcf8700ec6a6ffc97 ofl/fascinate/OFL.txt +sha256 4da248dc81a7ea4cf5b23f9cf7a0f8cad900875b3f52a928befb5c51e82e9438 ofl/fasterone/OFL.txt +sha256 896b66a47308af2d268b0d93c59bb4c9e82870f63565b819e84f789c0825d992 ofl/fasthand/OFL.txt +sha256 69ac34f1c6fd163d5d01cea262da6cfa34fee1310283a116a0db8e14116b40d1 ofl/faunaone/OFL.txt +sha256 2d8f6a7be96a15fd2deaa8e6b5320cec6c253216b5a8f7e1becccfc51147b877 ofl/faustina/OFL.txt +sha256 17d7a7f5d9f0139535ecec516988c4c73a2ec0f225987288f3fd6ee2622d4450 ofl/federant/OFL.txt +sha256 e30f893523e50ebbe07acd783ae29c7d604e6208cae7646d993e8528ce13e35a ofl/federo/OFL.txt +sha256 75c7ccf4f537a7a3ebbedd299c1d2542e13d3b27aaf76a0a2d9fa91a2a8fcd3a ofl/felipa/OFL.txt +sha256 8586a7e75681c7297af4cc0641eb2b29e882c5187fe189a1160eceb4e95d4163 ofl/fenix/OFL.txt +sha256 9185cdf29ddad3ff97f5f07094345937c33f01ea232827a9ef9af9d88ae4b6a8 ofl/festive/OFL.txt +sha256 140d37233e7f3ce7313798befa9600893bcceaf41a55fa0fa5ad52f7f657a268 ofl/figtree/OFL.txt +sha256 d336c098ea798bf14de111cd90dff7d6bc340852405246511345d0f8564fe76e ofl/fingerpaint/OFL.txt +sha256 0a55f40011bdfbdd4a07ef363fdc054d92ca3a5f0fc66381aac82344bd9cec2c ofl/finlandica/OFL.txt +sha256 926041dac670e6922505e35ac1661a4e8d20f1ffeabbbcb5edb5544370702369 ofl/firacode/OFL.txt +sha256 d1829ff3455bbf3b9d13dfb0a57758a863107c9108aab48558f26f37f1094180 ofl/firamono/OFL.txt +sha256 8f24842e9174beda18a556c2ae7d54f5dc444340c19a3a9ef77e23bca366adbd ofl/firasanscondensed/OFL.txt +sha256 8f24842e9174beda18a556c2ae7d54f5dc444340c19a3a9ef77e23bca366adbd ofl/firasansextracondensed/OFL.txt +sha256 8f24842e9174beda18a556c2ae7d54f5dc444340c19a3a9ef77e23bca366adbd ofl/firasans/OFL.txt +sha256 047c204476dacfeddbf93d33ab3d43ba82fb7e66e398fdacfce8e815e9a5c270 ofl/fjallaone/OFL.txt +sha256 df9fcd8f62ae79aba7fa5b0563a08dfede1fa0909d668287d70c395d88f5fe02 ofl/fjordone/OFL.txt +sha256 e3ea566dbf689a9110b2094f9f2e5d16d7ec31720147651efc1005ca20420dd4 ofl/flamenco/OFL.txt +sha256 4febcc8d6e539db3e0c652da87bc8704f6d48e71e07f8ddb0974094a3de8da81 ofl/flavors/OFL.txt +sha256 bb3ee29bfc75dc1ac4407831b665c92e9e58fb5e2e07022f6f731d8e063e37f8 ofl/fleurdeleah/OFL.txt +sha256 54665278a85e00842c5a261c2bc51c4735082f0164edcd95da27ed11e253e604 ofl/flowblock/OFL.txt +sha256 54665278a85e00842c5a261c2bc51c4735082f0164edcd95da27ed11e253e604 ofl/flowcircular/OFL.txt +sha256 54665278a85e00842c5a261c2bc51c4735082f0164edcd95da27ed11e253e604 ofl/flowrounded/OFL.txt +sha256 b0daefd86530f48f6f57e90770276e42e63b3daadc9cdcf0cfd4cb16a7499946 ofl/foldit/OFL.txt +sha256 382232d1add5623ba5b06394afa071f4eeecccb6d2b2bd02cfecff4a8a45065a ofl/fondamento/OFL.txt +sha256 1bfe7d2aca99042eabf37079152fef8abdda2c36dad454ae89b858a3cb1078c5 ofl/forum/OFL.txt +sha256 ef14426248ca0404eae1ae65e61802b1627b5ec33aab117fb36edf401a81636e ofl/fragmentmono/OFL.txt +sha256 09685e225ba9b697b2ccd2d4098cac5ecbed0679960605258a271af60749887b ofl/francoisone/OFL.txt +sha256 59b8e1b6cb49d339b729a924fb3c2d892e5729a712f7540e2337d0db3bdfcca4 ofl/frankruhllibre/OFL.txt +sha256 bdf4c22802eaf804f998195871c6b8938aac2ac14b2d78a8bd66a6f1eced833b ofl/fraunces/OFL.txt +sha256 60fea3a0da19167a3efb9c3792a3a15dc9235405d01bbec1233fdf3e79c74296 ofl/freckleface/OFL.txt +sha256 f8e2b58dd7a8c8e21e5d744b45876bce7e010a647c071c1ed42ff0e618d4ea59 ofl/frederickathegreat/OFL.txt +sha256 5c9e7eee5c6b25f4b05b8d53b2e470ea4962f9ced742d044a98f7d95d1375bab ofl/fredoka/OFL.txt +sha256 eb42d30e111024646a167f47f3e85c5c2df21ceb36a3a279a6f19e2584b00ec8 ofl/freehand/OFL.txt +sha256 a40c3a6d0c968d3a10b17a2614606de6f20178deccc2447305f31fb106a57fb0 ofl/fresca/OFL.txt +sha256 c2368518f12463a93cfed44e1460f36085dc60df06f415ee9b0319809987ccce ofl/frijole/OFL.txt +sha256 c0cd6d3807663a19c2d4a96f17b90a71a06e78bb329d45ad77c6798c89f761d9 ofl/fruktur/OFL.txt +sha256 5951473ab31533bfe1452bbcece47f237a5546c7e7d45ff1aec0289619623294 ofl/fugazone/OFL.txt +sha256 22e37052104e101981fa0ea905457948f4f01bd31c7fde0502ff25c586801fa1 ofl/fuggles/OFL.txt +sha256 373164fa83991434f3fcfb9ef3cd0d8d4ffc44407841c08d9d6a43c07ffab978 ofl/fuzzybubbles/OFL.txt +sha256 21506cc7106bbfd4aa1c40371f33f9f4296182a8e4bb46658e99af24feb4bfca ofl/gabarito/OFL.txt +sha256 c5478a76bd760eed7b741678b71d9dfe1062e7399739a3b6da8ebe00d19715d1 ofl/gabriela/OFL.txt +sha256 53a9ce47085d9fef613c7ecb3730dc80d25962510bbea231b89564f58240f251 ofl/gaegu/OFL.txt +sha256 eb6c70cb6b575ad22df022d454df7a20582915e6e8da19b579c6cbef37a26bb5 ofl/gafata/OFL.txt +sha256 4e9a7cb5e08ca48e87b31184036b705690828000e1b5e8777f9ec01dce84aba6 ofl/gajrajone/OFL.txt +sha256 6a809aeba8af2115ca4b4c3597b1fbeb836a45f0489070f330f9c2dff870da8d ofl/galada/OFL.txt +sha256 d102f22055cfa31a9659228483de3c726010f0b3b416b78e3cbefcb54816e812 ofl/galdeano/OFL.txt +sha256 117fa195cff980e3b10fd8e8e21658c6ec954b0886647970a03c9694d3553b69 ofl/galindo/OFL.txt +sha256 39de3de5f1873f89bca4af37823ab22e28e88d0d8f7fe2f07e82e9e6e9bf7b70 ofl/gamjaflower/OFL.txt +sha256 4d95bf0e5a54632046323a75fb31f8e2af4071119482c02978746ddcd3866248 ofl/gantari/OFL.txt +sha256 a13e353470a9abc44e015067bc353fd3ebc3ea010dea68a00d56f961ebe8f7a9 ofl/gasoekone/OFL.txt +sha256 b2cc52a7162f0c8f71924211d040de37b19894f563a0190a75c017e2dc28d08a ofl/gayathri/OFL.txt +sha256 af98a2aec12e0ff6aeee941693221ddbfdb86ae4486949e1d54cbedf2422f994 ofl/gelasio/OFL.txt +sha256 9f1dccdd6211e2bbb679318dba3717d9eb1e3edc6fcab54beed05679d83a72b5 ofl/gemunulibre/OFL.txt +sha256 c29a3fd5e7962b626fcbcf6713d47ae4656fded06335b607d14f03a4a25cb82b ofl/genos/OFL.txt +sha256 c309a440be606e283ccacc746662d714b9c5b5a7a0a10dd2514b90206b55ddfe ofl/gentiumbookplus/OFL.txt +sha256 c309a440be606e283ccacc746662d714b9c5b5a7a0a10dd2514b90206b55ddfe ofl/gentiumplus/OFL.txt +sha256 778186245840aea0e60bec6a46e7fb1442e0cd78e41afeadffcd3e8824b379e0 ofl/geologica/OFL.txt +sha256 cd059851dc2abcd2865ae318e8b949736f958794210acb90316530fd100fc904 ofl/geo/OFL.txt +sha256 e913854957b9c1aca0c81b29fca565827185ddee0f5a039319e0e45e1b7b3079 ofl/georama/OFL.txt +sha256 013e33b6b2919fd0ffbdde6080a1c0f4521689fdce0f4876a59cf49ff8ae31c0 ofl/geostarfill/OFL.txt +sha256 013e33b6b2919fd0ffbdde6080a1c0f4521689fdce0f4876a59cf49ff8ae31c0 ofl/geostar/OFL.txt +sha256 b7574cd4c76770e5e3915d16bd93f09663bd77cb041a4ec09d824c52b540529a ofl/germaniaone/OFL.txt +sha256 9e19c0d2e7e7adcbe9dfd0749e34dda41e7e356e0f2cc082d61d2fc9b6e0cef7 ofl/gfsdidot/OFL.txt +sha256 bfc205682f5454b42a732ec857b665293ab8bc6f0ee901a0967219ba7ffdb190 ofl/gfsneohellenic/OFL.txt +sha256 c72eaa495a68969eb124218d20d3a6092e8f23ac1d25b9315d1014c5438f43e1 ofl/gideonroman/OFL.txt +sha256 bd22e766af8f8e58eb520cb4fa73538826d04f7371b45e82295d22d1e32a4e58 ofl/gidugu/OFL.txt +sha256 e8d94225bdcfecfb5a6e14bc0e2bb26fe48670f28ac46a7d676d9a90d8bfbe24 ofl/gildadisplay/OFL.txt +sha256 5a8469d3fe72117eb9b630747cfd9f50a31d81b7d18c112cfc9fb368509fe739 ofl/girassol/OFL.txt +sha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485 ofl/giveyouglory/OFL.txt +sha256 2950994bcfb8e903f0539d28a8ec4af077e0aa1fa7946c33c912d2d6969c2971 ofl/glassantiqua/OFL.txt +sha256 638774cdf8233b5ddaf9ebee1821e9de1d5d59c335d8ee3ba0b47fb17833b502 ofl/glegoo/OFL.txt +sha256 321e28d45a430e017d9d1d6a47ef1fd261aad354723b014cf1933a765036c311 ofl/gloock/OFL.txt +sha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485 ofl/gloriahallelujah/OFL.txt +sha256 9a1f7cf2f267af05d4816ea6340087454ea1d237bd9f29a76ef3932ec4055da7 ofl/glory/OFL.txt +sha256 9bf9f51b4e1279bc28c6cf78b4d3d0a07b254435a79e6597ad244defa6df1882 ofl/gluten/OFL.txt +sha256 042a570b306ab893c6168be7e6e79bbceae46097141357ad0af7ef8bb179ed7b ofl/goblinone/OFL.txt +sha256 fd20b82eb12d16ec31a58fc44f7e6c533b14b425b569d83f616a1f7a9a401e75 ofl/gochihand/OFL.txt +sha256 bb7828b16438c97ca84b53e2fbd2c3bd9dcf2a86ccda6806ec9ae955a1814d29 ofl/goldman/OFL.txt +sha256 ff532f9e8789f09a9fdffc3c0954eedfb0a48be77b2e2eb90f5f82e4f347f50c ofl/golostext/OFL.txt +sha256 860cbfdc9dbc3f0e8d35af80c31e8f20945bff393d4f483dfc157469e01d321c ofl/gorditas/OFL.txt +sha256 ed95c33f80ccca002e3a360b683c43368f9c5eb024e5b992abb51af3c10b59bc ofl/gothica1/OFL.txt +sha256 159eb46ed0b08f8b9678d6f22f54cc614452d4ab0fb670b568f7a5f315afe511 ofl/gotu/OFL.txt +sha256 58bdc69f4c6177125c6e7cdbc78f710f5f9952f11bba7bd5b17bd7ef169d731f ofl/goudybookletter1911/OFL.txt +sha256 49a57cc769fa9affd6eefb9070a61e3d3f6b757c97cafb15848bc6d1c81acc78 ofl/gowunbatang/OFL.txt +sha256 a7c73f9521cd646bbdfb6684c99a62311bbd7bce11898dc11ef0b3c69eda1aca ofl/gowundodum/OFL.txt +sha256 742a6a4386db47a2987c7c3b4aeedfb5adedfb3356c118de450a664735686535 ofl/graduate/OFL.txt +sha256 4c0a1150a363b42bd8681ff4a00315ac49510a944c4c9978237ff8b90a8920a5 ofl/grandhotel/OFL.txt +sha256 4d0bb797c98a0840faec0952153a4030442f263fcf08b906e38837ea8f401808 ofl/grandifloraone/OFL.txt +sha256 c98642ce049ee94f1868c47db44dbdc69e1800e2cf3edb539f030ac4abc22ceb ofl/grandstander/OFL.txt +sha256 5818012656b5ba904c83dad6a0011bd25071d840231f83d69ba34eebd5e510e7 ofl/grapenuts/OFL.txt +sha256 9860b97028024085855e503e32c1971bfd603374641cd018c136433ebcf5a338 ofl/gravitasone/OFL.txt +sha256 54d54b13619520d57d399e3d4057563a5a4c54b69d8f7d1598aedb1aaeaab240 ofl/greatvibes/OFL.txt +sha256 350eba96ff4c979070566cd24d068784c482a65d1485dc14e3ccb56f06594972 ofl/grechenfuemen/OFL.txt +sha256 bca29af2c3c9e142d11f523f414902ab8fb9ab8ffa3c34c63b6b72aa4e7d6acc ofl/grenzegotisch/OFL.txt +sha256 5070d4334d60972881020a5453b9832a090843e904cf013f40b6ebdfe9b871ca ofl/grenze/OFL.txt +sha256 1bd29b2ddae760a1f7014c59fedefb0b110f91110d25080615bcdadad83dbb87 ofl/greyqo/OFL.txt +sha256 879ec56fcc9a961937fd24d542b3b7b3f2b8cb3236b7351e62d16719e25de14c ofl/griffy/OFL.txt +sha256 513de41f10e2a9e374fc23ac57dd0bcea4070ad7aaeaeec2e16656e025a2e19a ofl/gruppo/OFL.txt +sha256 315a576cbc7ab61c9e347b5725893bc8498fdcb8fc10831793c6864bc2cefba8 ofl/gudea/OFL.txt +sha256 391ac3126dacc95b92a8f3408467879edb3245344bc411530a30d5aada52df92 ofl/gugi/OFL.txt +sha256 42d665be2bd66ea6445e0a37cb6f80eb4ac10d56cd0503efa0c6d6d6ebe86de2 ofl/gulzar/OFL.txt +sha256 d11742efedc994c84a152639a76098e3de6c097d77c06e3c4155b8ac00ae9328 ofl/gupter/OFL.txt +sha256 2bd35914efa381c80f9fb62d6ea7d736d3c0739196a3783c3122593c3408392c ofl/gurajada/OFL.txt +sha256 469761758d333ff4ab9f69759dbb8576d23077097862654c2e4d1fc6f19d090d ofl/gwendolyn/OFL.txt +sha256 2a7b0a41ef401e4e0e955280b07c0a2698932d56aad3181089bdbbaad5760491 ofl/habibi/OFL.txt +sha256 8d3c434650e84f42ddb33e9b5929089ea51c39b231b798dacb33087d5f05d9f1 ofl/hachimarupop/OFL.txt +sha256 ddadb10d28a303e3ef3b1f7ec55d3027903b9ec566d2f87d3ee03f3c87c91711 ofl/hahmlet/OFL.txt +sha256 f62ef357d3a1c3d27edd35a6e1ba350e8a8d13499797964eeadefbf0b3b15d1f ofl/halant/OFL.txt +sha256 b43e2530c7af69fe1800f180d210b6d2745915ed4e0e404495038c861bb6dbf7 ofl/hammersmithone/OFL.txt +sha256 1f581506286e960436548dba0701aab278f7e67f2adc6bdae2958923867d1e64 ofl/hanaleifill/OFL.txt +sha256 1f581506286e960436548dba0701aab278f7e67f2adc6bdae2958923867d1e64 ofl/hanalei/OFL.txt +sha256 934a45d3b43276e1f857301e9cb07e00b829cca3d0c13e8e6f8c6790dd6c8a2c ofl/handjet/OFL.txt +sha256 5f1f5510eff7922864bf326ffa1d4a62f01add5193e9367b542378e5a808b500 ofl/handlee/OFL.txt +sha256 e02ccb89a86839b22feff7872ff5cc355cc0f58318d29eee20e2cf83a612f16d ofl/hankengrotesk/OFL.txt +sha256 d724dea493d89a7a9681186e2fb462b7cd551674960ee4142ae6b325261b5115 ofl/hanna/OFL.txt +sha256 de2246895f0ac21fe05b095d586d36cbc9f987ebcaed1e050c61e69667caf1c6 ofl/hannari/OFL.txt +sha256 5d7825ce858a13f5ce7a5149479be33700de83925ae6f610c7e31fced67f05ce ofl/hanuman/OFL.txt +sha256 bff4e5087ece354afccd073621197bbb7dd9349943b5ee6aa12b1adf0b133081 ofl/happymonkey/OFL.txt +sha256 dac9251efc01f872318d95e90988bb9995b1c31a9f6bc70c9831b104703191d9 ofl/harmattan/OFL.txt +sha256 7527e73a61f742a0dd050ab2fc7333de71ac7886023c100bca66a0a93b37498e ofl/headlandone/OFL.txt +sha256 2a603f9fb5d68c3a67b3ab5d79e685fbc0c0585a9a478e5b89b2edab135cc1f6 ofl/hedvigletterssans/OFL.txt +sha256 2a603f9fb5d68c3a67b3ab5d79e685fbc0c0585a9a478e5b89b2edab135cc1f6 ofl/hedviglettersserif/OFL.txt +sha256 866747cbccae229433e946b90fcfc457b81c33ac89e593855770851354f9e6c3 ofl/heebo/OFL.txt +sha256 2d83a49d05906b5e23285168e72c0d019fc15e3ad110376f640feeeda34c27d1 ofl/hennypenny/OFL.txt +sha256 66f19a3655694659983eab355b8833b54e17d34f653d5ae5b86cb90c0550a4de ofl/heptaslab/OFL.txt +sha256 6e54fc004ebeb61322ecab1d86334ebf69e7051632d48eca489beee505d70762 ofl/hermeneusone/OFL.txt +sha256 50265d2b41f8ad2dd350532d2286509aa694021b4aa0490b06f0068e4ed78c27 ofl/herrvonmuellerhoff/OFL.txt +sha256 39de3de5f1873f89bca4af37823ab22e28e88d0d8f7fe2f07e82e9e6e9bf7b70 ofl/himelody/OFL.txt +sha256 3e9b0ddf2dd1ed6ada1bc29977601095102505d11dae646df1f6b1d59572f4ba ofl/hinamincho/OFL.txt +sha256 4b255eb44f613a8e426e195f0d0b7e10fcba1af7eb6047d9a7f4f3c449940e19 ofl/hindcolombo/OFL.txt +sha256 4b255eb44f613a8e426e195f0d0b7e10fcba1af7eb6047d9a7f4f3c449940e19 ofl/hindguntur/OFL.txt +sha256 4b255eb44f613a8e426e195f0d0b7e10fcba1af7eb6047d9a7f4f3c449940e19 ofl/hindjalandhar/OFL.txt +sha256 4b255eb44f613a8e426e195f0d0b7e10fcba1af7eb6047d9a7f4f3c449940e19 ofl/hindkochi/OFL.txt +sha256 4b255eb44f613a8e426e195f0d0b7e10fcba1af7eb6047d9a7f4f3c449940e19 ofl/hindmadurai/OFL.txt +sha256 4b255eb44f613a8e426e195f0d0b7e10fcba1af7eb6047d9a7f4f3c449940e19 ofl/hindmysuru/OFL.txt +sha256 f62ef357d3a1c3d27edd35a6e1ba350e8a8d13499797964eeadefbf0b3b15d1f ofl/hind/OFL.txt +sha256 4b255eb44f613a8e426e195f0d0b7e10fcba1af7eb6047d9a7f4f3c449940e19 ofl/hindsiliguri/OFL.txt +sha256 4b255eb44f613a8e426e195f0d0b7e10fcba1af7eb6047d9a7f4f3c449940e19 ofl/hindvadodara/OFL.txt +sha256 ac987f9cbc5b18d3239d88adb57a4e134049811d24ddda2f6383faa589fd2727 ofl/holtwoodonesc/OFL.txt +sha256 6b6c6721a30480a323cf33acf6a7703dfce46b846827a65f8ee96230060e3c3e ofl/homenaje/OFL.txt +sha256 0bc7e93bd50c78f58e981cab4d452566f70a425815b7a3a7331f8d9c85ff0e26 ofl/honk/OFL.txt +sha256 0f3199eac4dcfc512e37593730841da3da6a937ac633c3f0f61d13355d3744d3 ofl/hubballi/OFL.txt +sha256 064358800fe0bce38e0f0c75f748649b702b221dba298bd9de2e6b4026df45b8 ofl/hurricane/OFL.txt +sha256 a642565cd75e9535acc67679fdc6a8a99115fb437b764e86b4d82b03d8b17945 ofl/ibarrarealnova/OFL.txt +sha256 7e6b2818edbd8f6a01ae80641cc8f16a51080d08fb4e532be3a0b6f74adb07da ofl/ibmplexmono/OFL.txt +sha256 7e6b2818edbd8f6a01ae80641cc8f16a51080d08fb4e532be3a0b6f74adb07da ofl/ibmplexsansarabic/OFL.txt +sha256 7e6b2818edbd8f6a01ae80641cc8f16a51080d08fb4e532be3a0b6f74adb07da ofl/ibmplexsanscondensed/OFL.txt +sha256 7e6b2818edbd8f6a01ae80641cc8f16a51080d08fb4e532be3a0b6f74adb07da ofl/ibmplexsansdevanagari/OFL.txt +sha256 7e6b2818edbd8f6a01ae80641cc8f16a51080d08fb4e532be3a0b6f74adb07da ofl/ibmplexsanshebrew/OFL.txt +sha256 7e6b2818edbd8f6a01ae80641cc8f16a51080d08fb4e532be3a0b6f74adb07da ofl/ibmplexsansjp/OFL.txt +sha256 7e6b2818edbd8f6a01ae80641cc8f16a51080d08fb4e532be3a0b6f74adb07da ofl/ibmplexsanskr/OFL.txt +sha256 7e6b2818edbd8f6a01ae80641cc8f16a51080d08fb4e532be3a0b6f74adb07da ofl/ibmplexsans/OFL.txt +sha256 7e6b2818edbd8f6a01ae80641cc8f16a51080d08fb4e532be3a0b6f74adb07da ofl/ibmplexsansthailooped/OFL.txt +sha256 7e6b2818edbd8f6a01ae80641cc8f16a51080d08fb4e532be3a0b6f74adb07da ofl/ibmplexsansthai/OFL.txt +sha256 7e6b2818edbd8f6a01ae80641cc8f16a51080d08fb4e532be3a0b6f74adb07da ofl/ibmplexserif/OFL.txt +sha256 2d62278530348951887211d79d1dba04acebd6ed3b1c413f6154702efea3ea62 ofl/iceberg/OFL.txt +sha256 518962c41d4a5e96b0016bd8d8acc965413ea1a0102467e4955931e702b14a0d ofl/iceland/OFL.txt +sha256 6bedaf6a91cc0f23c61b1be288107e7aab97913447575c6f59f395e4e04b4588 ofl/imbue/OFL.txt +sha256 2a3ca501fc4d5efcad9798531e3e06962b1e20c60e464f6cbd6c17630112c773 ofl/imfelldoublepica/OFL.txt +sha256 2a3ca501fc4d5efcad9798531e3e06962b1e20c60e464f6cbd6c17630112c773 ofl/imfelldoublepicasc/OFL.txt +sha256 2a3ca501fc4d5efcad9798531e3e06962b1e20c60e464f6cbd6c17630112c773 ofl/imfelldwpica/OFL.txt +sha256 2a3ca501fc4d5efcad9798531e3e06962b1e20c60e464f6cbd6c17630112c773 ofl/imfelldwpicasc/OFL.txt +sha256 2a3ca501fc4d5efcad9798531e3e06962b1e20c60e464f6cbd6c17630112c773 ofl/imfellenglish/OFL.txt +sha256 2a3ca501fc4d5efcad9798531e3e06962b1e20c60e464f6cbd6c17630112c773 ofl/imfellenglishsc/OFL.txt +sha256 2a3ca501fc4d5efcad9798531e3e06962b1e20c60e464f6cbd6c17630112c773 ofl/imfellfrenchcanon/OFL.txt +sha256 2a3ca501fc4d5efcad9798531e3e06962b1e20c60e464f6cbd6c17630112c773 ofl/imfellfrenchcanonsc/OFL.txt +sha256 2a3ca501fc4d5efcad9798531e3e06962b1e20c60e464f6cbd6c17630112c773 ofl/imfellgreatprimer/OFL.txt +sha256 2a3ca501fc4d5efcad9798531e3e06962b1e20c60e464f6cbd6c17630112c773 ofl/imfellgreatprimersc/OFL.txt +sha256 42b758018a3f0fa429f9aaf7cafaa273ce922ea7dfba30f50cc828b8aa3e1717 ofl/imperialscript/OFL.txt +sha256 6afcd25837be87e7c564f594d20ee009b4bfa540c4eb2d274992e2b1483fa3c9 ofl/imprima/OFL.txt +sha256 0690e0819628a20c5ee68388a7bae621e5c3e53be57276169decd00111d8f2cf ofl/inclusivesans/OFL.txt +sha256 29bd0cfd0fb2a45f9b057c834a057724bae1f63b525a8ac83d3e7525706d9f80 ofl/inconsolata/OFL.txt +sha256 ca9fe3a0e10bbb082f83ecdc07f5f04845c4bd689c46456da3e6bae23e11aae2 ofl/inder/OFL.txt +sha256 d9cdb075679d15a99bab2a8541b9c4fdc71347502111fbe9affd1d462219d96b ofl/indieflower/OFL.txt +sha256 8cf345e9566428f6171371bbd5bcc7f8ebe443712b9349267dc59391b7d4aeb1 ofl/ingriddarling/OFL.txt +sha256 3169e7e0e87168908218f11d660a52c0b81b5952fd73918a596e70721d68d3e5 ofl/inika/OFL.txt +sha256 16f8621a8dda01f044b8a58489334dbaadfad44ef2fa1d5ce0864cc2f309df01 ofl/inknutantiqua/OFL.txt +sha256 2609587542b75aef638a6bcf9bb1d528595fa093f1a8b905e85f9dd77b6f3487 ofl/inriasans/OFL.txt +sha256 17ce133cf770fd000edafa607ae2a41dc6ce5a4f30fe82f777fa242929e76714 ofl/inriaserif/OFL.txt +sha256 ce7d437b6ae0e923abd1947c7a5f4d2171f60d932ec525a37c5daaa521e59683 ofl/inspiration/OFL.txt +sha256 9e27a72ed30eb49a08678f6a5d6ed98ec7ba5368f541637ee0683ec9134ef966 ofl/instrumentsans/OFL.txt +sha256 129ed7618959716959f2941fdd5b49e0ad6e6c1d78726761786a00253d865521 ofl/instrumentserif/OFL.txt +sha256 5b9321a4298cfeb6b34354164a1c3afc3db114569984c502b9b35d988fd58c57 ofl/inter/OFL.txt +sha256 50240ab035cf1b6b3307940235481d515c4b6de3ab1fa843dbe59e7892cb9d58 ofl/intertight/OFL.txt +sha256 e8697c6fe444e393a33ff5b9f929483db7a782b404f82453589782500298a22c ofl/islandmoments/OFL.txt +sha256 1e511bb01d29562932157365418c02d954d8faeef794bcd54729177fb2b03db0 ofl/istokweb/OFL.txt +sha256 486c4d5b9baf0d0ba5546ef3c43fcfe22c062299ab6948045a43efffe4b0f74b ofl/italiana/OFL.txt +sha256 bce79721f0203586872bbd7016922baf449980bdd1c44550a821112a3b547185 ofl/italianno/OFL.txt +sha256 1f00d1f970b4ea469b6936e599b599bb217edaab792e586658ef2e71cf438685 ofl/itim/OFL.txt +sha256 2887c5bb38abbde9ccc608c4dcc4b0dba0fefc0c74eec011033bcfbd3ffcb235 ofl/jacquesfrancois/OFL.txt +sha256 2887c5bb38abbde9ccc608c4dcc4b0dba0fefc0c74eec011033bcfbd3ffcb235 ofl/jacquesfrancoisshadow/OFL.txt +sha256 a74380bba78a364ec70b3a5fb6a1161b83cb05cc3e75a0910afbd1b5aff4f9c8 ofl/jaldi/OFL.txt +sha256 6939af7114f0a33c7e6142d4c1320d1bbde11aebe6d8f3c48fc5fb3e0f676a7b ofl/jejugothic/OFL.txt +sha256 6939af7114f0a33c7e6142d4c1320d1bbde11aebe6d8f3c48fc5fb3e0f676a7b ofl/jejuhallasan/OFL.txt +sha256 6939af7114f0a33c7e6142d4c1320d1bbde11aebe6d8f3c48fc5fb3e0f676a7b ofl/jejumyeongjo/OFL.txt +sha256 b2fe5e8987594e9ffd1d2ca52a2f5d73eb8335243893c5d6254b5ad69269591d ofl/jetbrainsmono/OFL.txt +sha256 fca01a37b10879d7685c7d03fc5a04086b15cdb2cb4f870cb687aa5a9a0a1361 ofl/jimnightshade/OFL.txt +sha256 1a7bee2a10dc98def83076f719360f7db6a7760e0f5401046877a415ffc1abfa ofl/joan/OFL.txt +sha256 c4cd9f38c3246ee6a68c264f017320dc1af09677d386166d8cda806d9a12e0d2 ofl/jockeyone/OFL.txt +sha256 28c6d2887c3dfa42488c5418c6c16ead580d33ff0afe60c05159689201f9ec63 ofl/jollylodger/OFL.txt +sha256 ca64dee162bf239c7b92d854d388bcd30552edc3ae1ef5e31714acda34c988db ofl/jomhuria/OFL.txt +sha256 49b9214f7b40024abec2fc89a32bdda380f2174ba7005d7636e6ea340157c5a6 ofl/jomolhari/OFL.txt +sha256 aee5a4081e8a52f80428b30f178b719d115f18dad3e1fa15a986163e1078a85b ofl/josefinsans/OFL.txt +sha256 40be94683ce097454926ce71af843ceebf8a5eb01dc196f58063d65951cc5dae ofl/josefinslab/OFL.txt +sha256 1af3438a4d5f0ed2bdbc5751a5a67ebf6d537334161184b7fbb68503ef0ea0c5 ofl/jost/OFL.txt +sha256 9ec5fb9facd0c46e43b4d6a309c4bc7aa6c8423c898ed9543b3c9c4133b9e01e ofl/jotione/OFL.txt +sha256 44a7c6e4c5572392ae122d3b1d8c6ba6fd640a7797e675384585d947f2773e3c ofl/jua/OFL.txt +sha256 36e2f1debc9778bac79fac1a0cb5a5ef51c102f00b58ef7d8a05324144b68166 ofl/judson/OFL.txt +sha256 6b7242e4ff02ed5bc24ddd655bc1fec1ab7cd4a86335ffef1d197561264cd0e7 ofl/julee/OFL.txt +sha256 955655cafa13f187f45a79dcf451942fd1118a8426abc5a25ffc5dbb00709da6 ofl/juliussansone/OFL.txt +sha256 a1077580b649c7b0e05ea0e9369d48687b4ab1c585573bf86b0dcce7dde177c0 ofl/junge/OFL.txt +sha256 54d85ef76f1fcf89671e196a9bca6b02683c68277caa89d89ff1b63a5fe9c421 ofl/jura/OFL.txt +sha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485 ofl/justmeagaindownhere/OFL.txt +sha256 869e4c29978c318b33c2e5c7c8f24d2e947f249071bb1471620036a9d1ba87ad ofl/k2d/OFL.txt +sha256 f993b906272c2c0f13f12bc8fef1367a39164853dc69fc808fd26ec343fe58e8 ofl/kablammo/OFL.txt +sha256 b01cec9e5e2035b70a6aeb61c673d1f6d5c91539845be07733bd9880fddeb9f0 ofl/kadwa/OFL.txt +sha256 6c5445d4febbf6d84025b874a85c51e7e4bfa7495279eccdb4c317a6de857b46 ofl/kaiseidecol/OFL.txt +sha256 6c5445d4febbf6d84025b874a85c51e7e4bfa7495279eccdb4c317a6de857b46 ofl/kaiseiharunoumi/OFL.txt +sha256 6c5445d4febbf6d84025b874a85c51e7e4bfa7495279eccdb4c317a6de857b46 ofl/kaiseiopti/OFL.txt +sha256 6c5445d4febbf6d84025b874a85c51e7e4bfa7495279eccdb4c317a6de857b46 ofl/kaiseitokumin/OFL.txt +sha256 f62ef357d3a1c3d27edd35a6e1ba350e8a8d13499797964eeadefbf0b3b15d1f ofl/kalam/OFL.txt +sha256 46eec4220309d801b70628d371aeff217e5151dfaad11606a71f2af5f1396f7a ofl/kalnia/OFL.txt +sha256 3105b49207b8deaef9efa249489df8eff9d76b331d46a433e15cc4685932dff7 ofl/kameron/OFL.txt +sha256 eb998cc5a685b240cdb46a0b5747e70334c8c57bbd7b1f6b044d75719358df67 ofl/kanit/OFL.txt +sha256 7b300b8a1e2e9d7cddb68859551f1ad54a05019eff28da02e3be811c1257f0a7 ofl/kantumruypro/OFL.txt +sha256 89c5e961d4a259af9f3a187be51aa1e095a6fca13a7ad20b40a1d690be7cdc0a ofl/kapakana/OFL.txt +sha256 d2dcb5c24a68a08bc55e2416d13cd32b077c9637044dd40f3863a0aa90aa228b ofl/karantina/OFL.txt +sha256 edf2c840acb9570fe02f40721126aa0da4e4011a0030cc6dce30780569f609b6 ofl/karla/OFL.txt +sha256 fdecdad755f4e5e95bee491c7521f31625dc08283562ea8579543c90430eb269 ofl/karlatamilinclined/OFL.txt +sha256 cc31fe974951d56d542f33782d07b2d5577a4afdddba89744e6bd69bcbf3a853 ofl/karlatamilupright/OFL.txt +sha256 f62ef357d3a1c3d27edd35a6e1ba350e8a8d13499797964eeadefbf0b3b15d1f ofl/karma/OFL.txt +sha256 251f65282ff48a7e8ef3fb661fc99254d9b3b0c368427c98b1edbfe4ca66e888 ofl/katibeh/OFL.txt +sha256 3336bf5d4e7eedba48ecb831f37bf676e901c39f2e6a422cceadd9d2ffa55be8 ofl/kaushanscript/OFL.txt +sha256 0acef93ca37cf19eeb83a1c6a29b78b08377a211c8d80cd27626e210176828da ofl/kavivanar/OFL.txt +sha256 82831e8f12ecb6deb2f4d9919a04049895b4619e0301fa6b699c861bd7311c54 ofl/kavoon/OFL.txt +sha256 1968df42d8d640e1680750aaea7e81ef3f45aaa514eff4df2ef0c9174a2e3fda ofl/kayphodu/OFL.txt +sha256 355d9d22e809d67010fc5decd3d9ea6ba201fa8ed410a0207977a329e456b1eb ofl/kdamthmorpro/OFL.txt +sha256 ca13e9cd1faaa6afb9e43dcb534a8984cec3218993fb4b436468a79a1657ee19 ofl/keaniaone/OFL.txt +sha256 393d494f9ebb5db6a3552ffa03a4c6f3746c22808b40d011b391681da55ca3f6 ofl/kellyslab/OFL.txt +sha256 ce78cc8de3f6edd2738e8c02f2079db7086c9a74314baa5854675f83c33954ff ofl/kenia/OFL.txt +sha256 f62ef357d3a1c3d27edd35a6e1ba350e8a8d13499797964eeadefbf0b3b15d1f ofl/khand/OFL.txt +sha256 6827fa45930d5847fca5b3d3898b3d87a229fba772a5b6c5bc33bf73ec83478d ofl/khmer/OFL.txt +sha256 2171558d2482764644a2f793696fa2e48c361730ecc87686b9a29082d6daeb10 ofl/khula/OFL.txt +sha256 38a83f1f8b6efc3ab354b8b6eed22e8524dc71280844dc24811d95ae27b34952 ofl/khyay/OFL.txt +sha256 72fe43ef3efbc44903674b7b21a19c6e14ef5e4217bc922662320554ffcfb77a ofl/kings/OFL.txt +sha256 7e896665d0863d2a17a671001dbe2528a5f9302f1dff9222af8b0834e9088d0c ofl/kiranghaerang/OFL.txt +sha256 ea54eb4bd4d5a57ec47417d02855ba011af5d917303461617fe01a5688e0525d ofl/kiteone/OFL.txt +sha256 07ceae7a6e3294cbbd0fdf6e35226550566a1cce9fd226d0f8a57f3d34c664fe ofl/kiwimaru/OFL.txt +sha256 e376b0df8e8a2345a9533db6f0a5333a1107975569ad9d1973a7ee557161ca38 ofl/kleeone/OFL.txt +sha256 14b3fbd06078a869cf2ba96e6dacb852d373703c86ca7ad54a4cdd6e20fbab19 ofl/knewave/OFL.txt +sha256 b1958132ff727bd74409aa37ec0abbe4be13b1b379e1210e6fb77fc608c607d5 ofl/kodchasan/OFL.txt +sha256 0878e7d6e842bc3c45154059a1c2812de0d31dca343fe6bc16abc9afdee3e3de ofl/koho/OFL.txt +sha256 65f03a12dedb8d9b1d032393334c3978818966fa72251089bed66a3fe3f56dfb ofl/kohsantepheap/OFL.txt +sha256 d3711c90a7deda6210d30e41b945f16bdaa00662b30ee0b7c36abfee82525bfe ofl/kokoro/OFL.txt +sha256 8045c0c155e0da96ced6c6fd049214ef420575c047ede767d88fd02e31b9aa2f ofl/kolkerbrush/OFL.txt +sha256 d4577dd4b58d06011490a6715de2e17d6808d65fb68f4f3b95a68e9c7c929469 ofl/konkhmersleokchher/OFL.txt +sha256 9c56b4e2e4e922cc37e19e1a9e2e1128beaa17a812e1b67c8ac371b0fb57ae03 ofl/kopubbatang/OFL.txt +sha256 e39d6ec64a37ed1523a59940695a61ea5e7882d9bbe0e7eb11653fda4b04fc79 ofl/kottaone/OFL.txt +sha256 d5e231771c466695f0aea212a3c18ae4e34ea2503f1fc0751f04b0c7610c6735 ofl/koulen/OFL.txt +sha256 bec72f4e6e1f29541d7295ed2ed14fc868695673051b940352200d1ffc4095e3 ofl/kreon/OFL.txt +sha256 4ec46c3e4469afa19f0156bac6917472974f9c85c189f9220cf8735d3e810401 ofl/kristi/OFL.txt +sha256 6c181f5a0045e8f414e1c232c35972ab83ea084ac44825f517ba001628d97b21 ofl/kronaone/OFL.txt +sha256 8f187da1eb4f23e3fe7ba68b1cb2e92881a415dd34c46489698454517e273c4f ofl/krub/OFL.txt +sha256 2b79a19d4c611849e232c3471fca0355e909526a2ed8e04acab933d5168a01f1 ofl/kufam/OFL.txt +sha256 ff72e4d89860e64ee38ccf8a5a7e9dc085d5e36115b096a6c7f8bc988e9bec61 ofl/kumarone/OFL.txt +sha256 b7057fc68425720a92830bbd18b39f070d784a4551de7b0b7e1ad3cc6747d3fc ofl/kumbhsans/OFL.txt +sha256 b712dacdda5da76c0213f8478886f893b855665c1153ae438bc3e55a7dc525ef ofl/kurale/OFL.txt +sha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485 ofl/labelleaurore/OFL.txt +sha256 b1a62ca897c597c0a0f01be8cb50c0d8370579acd1eadc3f2cc43093d6bbd142 ofl/labrada/OFL.txt +sha256 7dcb8031db2b0f39d41c3ec93a3cd77ccc53fb4ab3f691095ca6c51a06a52cb6 ofl/lacquer/OFL.txt +sha256 f62ef357d3a1c3d27edd35a6e1ba350e8a8d13499797964eeadefbf0b3b15d1f ofl/laila/OFL.txt +sha256 b5c3d12a3085b96011fee65555234bb9d31fa7444cf6f8d5ae6b1f5771394399 ofl/lakkireddy/OFL.txt +sha256 327bac41d89cf9f32e0efe353228018e1661cff458a5d4905714958514df7bd5 ofl/lalezar/OFL.txt +sha256 d51f3341fd7b3dfa1114d3ef0bdabbe57f60eef86a1458019e0077d676fa1fcb ofl/lancelot/OFL.txt +sha256 ade15f17ac8ff3a726d08ef8708242c78312d946dcb834a8811706d281e45cad ofl/langar/OFL.txt +sha256 911d554d974b49592d825bafefef1b52835f7f0502b5daeff5e292395ea25ad2 ofl/lateef/OFL.txt +sha256 74ba064d03f1f1c4a952da936c3eb71866c34404916734de3cae73b34357e59e ofl/lato/OFL.txt +sha256 f679d25307d193d34ed36afedde50715c97f155a3c720d90d39e7e5d468e0092 ofl/lavishlyyours/OFL.txt +sha256 44778c339892f79188c60b7471485dd5af92c59351c7f9629a00fc625c6cae5d ofl/leaguegothic/OFL.txt +sha256 81d0973236b5b5709a80a217a330db36eabedf57bf4031de46b4660b69901234 ofl/leaguescript/OFL.txt +sha256 41c9980cacc325ccd1afa6553bcae038cc6c74fa519aff60bacb99e3854292ce ofl/leaguespartan/OFL.txt +sha256 2937c7789b0e4fdeda6eafe93164a2ab36e20386704c4cb6f87b1deb620ec0da ofl/leckerlione/OFL.txt +sha256 ba01480319f922ecebbc73f1a523e7f8876e92b16553a32c494bcd3f6f5a27fa ofl/ledger/OFL.txt +sha256 3fa0ceff4b9a2d28dde43bc63cde3acfb5e6e92d13a53e484ca0e501e18c7e2e ofl/lekton/OFL.txt +sha256 d8a8801a55cbc8eeaab7dc9396c4491d60cc7e4ecb2501c6f8282754d743fc2a ofl/lemonada/OFL.txt +sha256 e317ef2e8f152eea3bd96bfad4868cc406625cc4336087fd645e10a5f2b859f3 ofl/lemon/OFL.txt +sha256 5da8505887d0fa7fe963445fd58852707fda34adfeb65af25c99d152bab285bd ofl/lexenddeca/OFL.txt +sha256 5da8505887d0fa7fe963445fd58852707fda34adfeb65af25c99d152bab285bd ofl/lexendexa/OFL.txt +sha256 5da8505887d0fa7fe963445fd58852707fda34adfeb65af25c99d152bab285bd ofl/lexendgiga/OFL.txt +sha256 5da8505887d0fa7fe963445fd58852707fda34adfeb65af25c99d152bab285bd ofl/lexendmega/OFL.txt +sha256 5da8505887d0fa7fe963445fd58852707fda34adfeb65af25c99d152bab285bd ofl/lexend/OFL.txt +sha256 5da8505887d0fa7fe963445fd58852707fda34adfeb65af25c99d152bab285bd ofl/lexendpeta/OFL.txt +sha256 5da8505887d0fa7fe963445fd58852707fda34adfeb65af25c99d152bab285bd ofl/lexendtera/OFL.txt +sha256 5da8505887d0fa7fe963445fd58852707fda34adfeb65af25c99d152bab285bd ofl/lexendzetta/OFL.txt +sha256 a4b7ccd1bda3269afba7d6d9293a7161e699d2f4f1f280dd8a8535c569388de9 ofl/librebarcode128/OFL.txt +sha256 a4b7ccd1bda3269afba7d6d9293a7161e699d2f4f1f280dd8a8535c569388de9 ofl/librebarcode128text/OFL.txt +sha256 a4b7ccd1bda3269afba7d6d9293a7161e699d2f4f1f280dd8a8535c569388de9 ofl/librebarcode39extended/OFL.txt +sha256 a4b7ccd1bda3269afba7d6d9293a7161e699d2f4f1f280dd8a8535c569388de9 ofl/librebarcode39extendedtext/OFL.txt +sha256 a4b7ccd1bda3269afba7d6d9293a7161e699d2f4f1f280dd8a8535c569388de9 ofl/librebarcode39/OFL.txt +sha256 a4b7ccd1bda3269afba7d6d9293a7161e699d2f4f1f280dd8a8535c569388de9 ofl/librebarcode39text/OFL.txt +sha256 a4b7ccd1bda3269afba7d6d9293a7161e699d2f4f1f280dd8a8535c569388de9 ofl/librebarcodeean13text/OFL.txt +sha256 de719ceea028324610230b3573688949768aa30c0b693fb5661691cf36f6ae89 ofl/librebaskerville/OFL.txt +sha256 7ce3bf8e8087bf7495a3e1ed2044e83439db990c778d61b128fd09b7876d0420 ofl/librebodoni/OFL.txt +sha256 9cc8cef15f5e8bcbe99a13ee8d268f6f6f6a5811cd1ed05056ef4608c9b16fd1 ofl/librecaslondisplay/OFL.txt +sha256 a294245c822c5aa9fd9a9f3189418e99415428be5fecadf797793d5d8f6a3ad3 ofl/librecaslontext/OFL.txt +sha256 556704a4cfb5af042e30284e314124779c82ba3854d9393cf3681e5f4575ff71 ofl/librefranklin/OFL.txt +sha256 5ee90951ba3cf079b5c79ec17029e073a72bea1ca08f03ee4b289773a5744ddd ofl/licorice/OFL.txt +sha256 aa36087ecd7e9085e5a1439b0a6d0ee35966e8cd2ccaa649bebe62cae5815e82 ofl/lifesavers/OFL.txt +sha256 255d5debbb80eb2ea762644311f266a279e8778f00156655a516e2b7781a63e1 ofl/lilitaone/OFL.txt +sha256 878aec7282ab41d058cedbf90e14512bcb4fbd0658496de8c2dfc592ed1f0cd0 ofl/lilyscriptone/OFL.txt +sha256 6b53fb03a50914cc382f4d025ee595c17c43f24ae870f840bc51969d3e316c7e ofl/limelight/OFL.txt +sha256 9ca8b9e5db7184105da255bb110023cf1cce6caa56186341bb7b09ba97b20ba5 ofl/lindenhill/OFL.txt +sha256 cab4ad0d72d01c3e4d539e8bd4c1b4fca51718538db77e3802550a173329e617 ofl/linefont/OFL.txt +sha256 bfa22e938e1c9844e5126461e9fcd12315007cae3d9442e940e4ab322403ce9f ofl/lisubosa/OFL.txt +sha256 8742963604cd89dc81437811a850018fc03b2bfad686d7422c8235967c87614e ofl/literata/OFL.txt +sha256 ff56684b0212481e7c3886c26d5a655de9b211c8119e5ccc756138a97b066acc ofl/liujianmaocao/OFL.txt +sha256 0d0630b8fb51f80905ba9298e69ce7f3f0c080e019158b6aca469dded731ee1e ofl/livvic/OFL.txt +sha256 88aece7d90f2bb7049719f11619a560af22af3451af141f12aa4f46bb157a99b ofl/lobster/OFL.txt +sha256 f46c3ea04f38ea73c0731d73dfba3d7361d4b38970feb31a3558bd1b75e0656a ofl/lobstertwo/OFL.txt +sha256 e88691a5e0a8a3f788f31db959701ec90a1d5e7505f1cc53c5663180a7d23c81 ofl/lohitbengali/OFL.txt +sha256 4fe81901e6f84cfce1145c715e931352a9a12aa7ac75cc193eb523c0cb0e5eb5 ofl/lohitdevanagari/OFL.txt +sha256 c87702d8b70f714fbefb554660e8ca57a43ef62a59089d11cbf0c6bd51d56928 ofl/lohittamil/OFL.txt +sha256 9551ade371e7bcb1f6d9959273bbf1fed3bdf398efb5c57cc1fd85d6a13e9e5e ofl/londrinaoutline/OFL.txt +sha256 819e3b25f9b50f12299a3db1638be3813efc6b938f2b86693a218d20ec4e3209 ofl/londrinashadow/OFL.txt +sha256 85b700bfba1250a6f8bdf930cd7113faf3d8e9dc52cd89eb98c3ac8a038a4aa9 ofl/londrinasketch/OFL.txt +sha256 66b5c49d384cba754806a891ebd52f2ca08dd05c0eb3c56170192da466a00a20 ofl/londrinasolid/OFL.txt +sha256 603546b7219a94bb59bf8294458194a5010119486354092b66a09a3fd61aeacc ofl/longcang/OFL.txt +sha256 1d9a970809ac804b582a6ce7f0ebc4e7fefcbfd7ff6299cad35ee656a21be716 ofl/lora/OFL.txt +sha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485 ofl/lovedbytheking/OFL.txt +sha256 aa90c61f2e9a4e55cc6fba56a8c37dc97921010bb4d6d1cf0377fd8f8982fe59 ofl/lovelight/OFL.txt +sha256 9686eb9a16c2f004dab33197b49645d96bad806621659819e36ad6924d405568 ofl/loversquarrel/OFL.txt +sha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485 ofl/loveyalikeasister/OFL.txt +sha256 d028940636b0acee45c302e6de8eee8e1ec66a6c59280a5f5f2b0c06a6681428 ofl/lugrasimo/OFL.txt +sha256 a2c9113a30ba080cec4de37032f54c5fb761c0c73c7ecba96f38555b4e1037d4 ofl/lumanosimo/OFL.txt +sha256 07384f69fe8c6045a0e9f05a689a966a4e086e604987d902d5647a0802996f54 ofl/lunasima/OFL.txt +sha256 65f43260cf7e66b57ddca8d148384a6602e2c06edd389a8b3cf388045127b47d ofl/lusitana/OFL.txt +sha256 930fed5b06a415736dc3b4e5f4f01585523b672717564bf677f93966bcd57636 ofl/lustria/OFL.txt +sha256 b0c6f67b9ee530515e627d9909c8de84dfd30995a8c9802279beed28c740c4e9 ofl/luxuriousroman/OFL.txt +sha256 0d53601eaba9a6f5dbf7ee43e26edbb37ea5fb7f3f170052ca5dc8d51704a5ea ofl/luxuriousscript/OFL.txt +sha256 0d75673e4c98de3e11337dbd90b05d0232edfcade5c1c02fbc0118c85aea25da ofl/macondo/OFL.txt +sha256 0d75673e4c98de3e11337dbd90b05d0232edfcade5c1c02fbc0118c85aea25da ofl/macondoswashcaps/OFL.txt +sha256 e15f74b13b1a30c878f162b2ce10aff4668d0e8ec8dae41dc61c1c12aa6d9eb9 ofl/mada/OFL.txt +sha256 746b384383888d9325ed2fa9c40d2456b458aa190dd2b8c515ed4f02a1075bb7 ofl/magra/OFL.txt +sha256 1d08c63944e639bbfe8a1b81e3c6a63836806c126b3573b9cda0db83fd27ffe9 ofl/maitree/OFL.txt +sha256 616e75d879831bedfa7725c078e09bb56f8a17f40b194e16691b12251bb42b3e ofl/majormonodisplay/OFL.txt +sha256 5e13aac27147fa739af42e7314d48c7ed92d7986cb1fe5d84f32c09377ad8a7d ofl/mako/OFL.txt +sha256 bc1175730d609233043cde47e48f69831f012e85537c5ec1a2cf4836757c1540 ofl/mali/OFL.txt +sha256 8928e999ff156e35852ab41d7a906598a8285acd3bcd81dff67213a6cd98d43e ofl/mallanna/OFL.txt +sha256 1b8eef90c567309fef17962cc969dd9ed1de69176517238e744018bb983e7c1c ofl/mandali/OFL.txt +sha256 2e144823e28b854ff5e1d41db9a2180fdb1d8e44a71c2ae4fca5c4b2a5adde4c ofl/manjari/OFL.txt +sha256 e01b637272e0cbdfb240184dd98ea5cc671556d9894dae2668d92ab2c906787c ofl/manrope/OFL.txt +sha256 14ac0a5413a923c9ad11b6f541df17207fb7a0e0725e43eb29c88eb04c3ea2aa ofl/mansalva/OFL.txt +sha256 6f5869d0892d8c06cabcccce3726cacc849bd0a96b83bef5850402ab2b9fce71 ofl/manuale/OFL.txt +sha256 715ba72697e14daa9b29a333545f69bde7c497b9f77d0a2a4c4a5a752d961801 ofl/marcellus/OFL.txt +sha256 715ba72697e14daa9b29a333545f69bde7c497b9f77d0a2a4c4a5a752d961801 ofl/marcellussc/OFL.txt +sha256 f22a2beea88d631a620b15683fd03e79f13ad3297ad97fa5e42283c0b1a3a038 ofl/marckscript/OFL.txt +sha256 50f7b09af5ff677f611a96cdf5eb916307c59b29f2e8144942718cb432a9bf6f ofl/margarine/OFL.txt +sha256 096744f008d418398e0b72ce8d4c46f195c036600a7a48df256ac95e026a79dc ofl/marhey/OFL.txt +sha256 6e7f259edf178c70b2ee36acfcc934b76d1cd56bb58d2c8f2ab8b5dded8bd430 ofl/markazitext/OFL.txt +sha256 a345b13576140008a697ac66ca8c76cd63b1dd076712bc30a0f5e97dcc53cc83 ofl/markoone/OFL.txt +sha256 b0a0977df31de3ec1e62bb819c410feda2944bcdab999a9aac2468e715cc99e1 ofl/marmelad/OFL.txt +sha256 f177d98c67b84250ec87a03ca6ad161e84cab15b435e960039b971797a065f4a ofl/martel/OFL.txt +sha256 5641212407f956b828bf632afc4bbb3344f461f82255ab56756d9e3e8604c7b1 ofl/martelsans/OFL.txt +sha256 ddafd2c3f37ef1d83ef284ca63e159befd3820850c5e9eded14ca52eee92c256 ofl/martianmono/OFL.txt +sha256 6cca1abc09d677cf00a55674ce2775e0eeb6dc5c0137b0401816680b9e500f81 ofl/marvel/OFL.txt +sha256 d7bdb1cee215b689e23c2f95672a6084c790542170648267a55114103d756a08 ofl/mashanzheng/OFL.txt +sha256 171b5e77742daf0aaa952ad9a9fc4afd78b3f3e80170a49a510ef849f4b915fb ofl/mate/OFL.txt +sha256 171b5e77742daf0aaa952ad9a9fc4afd78b3f3e80170a49a510ef849f4b915fb ofl/matesc/OFL.txt +sha256 e0cde1a4993ed689d463d5e2401f4a60c54cc48a14253ab0f8012d722c417038 ofl/mavenpro/OFL.txt +sha256 e0cde1a4993ed689d463d5e2401f4a60c54cc48a14253ab0f8012d722c417038 ofl/mavenprovfbeta/OFL.txt +sha256 846ce83956a732edd57b74d9ba988d58abc8c8e6d0926859559318ce6aed139d ofl/mclaren/OFL.txt +sha256 bcc0945e23c5ea0269327a87b443443a15d2867f4bf6791f3c01c32245880849 ofl/meaculpa/OFL.txt +sha256 eb1992aec1cf892ec94ffc116d79b62c7cb03dc108141b94a57a4195d210b514 ofl/meddon/OFL.txt +sha256 45b1f44d2cb859ea4b7be2f322c57b8ff7be55075c336744e62b5550cd0a97eb ofl/medievalsharp/OFL.txt +sha256 88ac81fcd30e64f6e6b91b61b159c9b700bb3dd59012b72ec61629abcfc7fba1 ofl/medulaone/OFL.txt +sha256 d530c14e9cc263c567b47742ef20df2a41374f00732ba4f290f52adad428b1a2 ofl/meerainimai/OFL.txt +sha256 36e2f1debc9778bac79fac1a0cb5a5ef51c102f00b58ef7d8a05324144b68166 ofl/megrim/OFL.txt +sha256 e12a3e737fa75c0ee072d965b6185710f35e38a4f7a0793ebc66ba14a216109b ofl/meiescript/OFL.txt +sha256 712916eb364418dc1d6f916bc504ac80be4e16d5e7126822fcf483f82f9ae6f6 ofl/meowscript/OFL.txt +sha256 131d19126a0e7ddd25540fd6bee219cebbc8aee7e8374882998ee6c2f4ff6cf4 ofl/mergeone/OFL.txt +sha256 61470db03bfdf0616932a086346acf8eddaddbdffbac9c468f0d88ac72ccb151 ofl/merienda/OFL.txt +sha256 a7ba785ad99b6eae0444ab89910e512d4af9865937fddbcb5c72c4f59f55d6ad ofl/merriweather/OFL.txt +sha256 e07e715e58eb63bd8d4ccf2b2e7d0a5d3ef5d93f596431f6dc3aed42ac1a2304 ofl/merriweathersans/OFL.txt +sha256 2f871c2e81de6d0c72c981615002c30bc9f1637003d6d3d4c3f0149886b70569 ofl/mervalescript/OFL.txt +sha256 4e66943af352059c059dd658774f25fbc831f1ad478f9f0890c06ecc2dd324c7 ofl/metalmania/OFL.txt +sha256 6ec397700f08afddd3f46421e1a2fe59c5e3c1480183b1ab161793f1e901f159 ofl/metal/OFL.txt +sha256 4fece81b541808b40293b0cd3f5b1990274e1100e1c20455dc2987cd96639d3f ofl/metamorphous/OFL.txt +sha256 4eaa1fae0ddbce35cfbc42ec1079f7fd78e4146b1d322630600af07a1e3212a9 ofl/metrophobic/OFL.txt +sha256 6958d8c61b6b223f81bdc2109941e5d0004996dde61e197d628e0293f4f1bc58 ofl/miama/OFL.txt +sha256 33c39ce59a45bfb0dae3280e98bdb46be59d6d68efc62d4dc5fae90a26d2f393 ofl/michroma/OFL.txt +sha256 3997621a219c7758e31dbafdd3cbd2bcb0b6144a41d1ca068d04dbcc4bafcde6 ofl/milonga/OFL.txt +sha256 aa5d677391db4e54ad324b6888792e533c5d800de7ab713302a2fc8bff2f4f6e ofl/miltonian/OFL.txt +sha256 aa5d677391db4e54ad324b6888792e533c5d800de7ab713302a2fc8bff2f4f6e ofl/miltoniantattoo/OFL.txt +sha256 d2875ded3e44e9ae53ea2b35e825dafffa19e82c5d14addb9f1150fcd7a3463d ofl/mina/OFL.txt +sha256 b632b20bfdec8a8b1247cc8624c4954641db3f1def485b91c91ec1590478e693 ofl/mingzat/OFL.txt +sha256 56c4ff36faaaf336bc5fee659ff6fab2413d67499cc22acc29079b3892d8931b ofl/miniver/OFL.txt +sha256 aa8a8196a3e22c3bd985e33cd3245ae9a38accba5e79fc0e3b292612a8d6b337 ofl/miriamlibre/OFL.txt +sha256 d1bf0acea511ad1f4de53e942cffb8ab0e67c03c6203d6f390d71105d52c33f0 ofl/missfajardose/OFL.txt +sha256 76be26178f13ef82866cf6a5c54272191bb583c203ad7035021c7681c9043558 ofl/mochiypopone/OFL.txt +sha256 76be26178f13ef82866cf6a5c54272191bb583c203ad7035021c7681c9043558 ofl/mochiypoppone/OFL.txt +sha256 5fb0694694dc307d1eb0121689395e634b6329ff545acc53f55ad66a716b3cf1 ofl/modak/OFL.txt +sha256 3e908f3a95680bdf3c8456bfbf76392605b34cb3fba109e46441056ab966cb35 ofl/modernantiqua/OFL.txt +sha256 039b820470ad522dc92e98b3aeaea5d53f7e19a1e9d0248ff5df00b426868aa0 ofl/mohave/OFL.txt +sha256 0f2daa61cee069893d44ba24f3bdddbba18ac33b011fd8944e8682dbf347c61d ofl/moiraione/OFL.txt +sha256 4dee45deee99672fbe342b2f4b7aa75b0cd12de18a68f9732c77f096bab47e0e ofl/molengo/OFL.txt +sha256 af9b97696048d509e3d70f8108b7c4381084f95c8fedd97acaa76b0b287668be ofl/molle/OFL.txt +sha256 6ccb3c94ae8f9ddf4954c8981a1a624204087e940b941c580d3738f8c09de9dd ofl/monda/OFL.txt +sha256 a6695ce9e8a5a86bfa3a55b65c3be569a0eca8dbf4c38bae323ac2433008916b ofl/monofett/OFL.txt +sha256 0e7bc933f607a0fe98e2635cef0df76dc9b6a0198a7a7ad035e8a2b8d329e137 ofl/monomaniacone/OFL.txt +sha256 585c6d2da8bcd8ffa651e0016f2e992a6891b625143a46a1dacf00699a817d9a ofl/monoton/OFL.txt +sha256 a5fc033225d145b43fd7391482ae7689825414ce29a01614d651a3012b57c81e ofl/monsieurladoulaise/OFL.txt +sha256 cb8bbf7a86eefa8c146f24ae5be74fffa887ba83719ab3c87036be8e3d0191e2 ofl/montaga/OFL.txt +sha256 3b00031e7de1fd7d8cce0a7a4638a38a8988e16a8950210ebf8e57f688b14c4d ofl/montaguslab/OFL.txt +sha256 1431e4458b02d3fba371726627ce93269fc26440cebacdf0c4965ea4a3cb5cb3 ofl/montecarlo/OFL.txt +sha256 41f82bb4d24b304f30f7136bc47abdd083782e4265c984160f5649d1e78ea49c ofl/montserratalternates/OFL.txt +sha256 41f82bb4d24b304f30f7136bc47abdd083782e4265c984160f5649d1e78ea49c ofl/montserrat/OFL.txt +sha256 c54957d55e7c9e66c28e474cd39de75dc044e8f69056788cae44eb78841ceef1 ofl/montserratsubrayada/OFL.txt +sha256 3cd47b38fdc04ceae502892dfa59788e57a27b73a4cd2d521d660c76298b5853 ofl/moolahlah/OFL.txt +sha256 12c5c11cf37c77a574ef3964fd27f117aa1e1dc4c1569b723cfe45c3d474306e ofl/mooli/OFL.txt +sha256 8e032df9af3acefbcf2c02d5a868ecaf2233005014bdb00caba05c14dd279be5 ofl/moondance/OFL.txt +sha256 993860a6b21dbb0eb98c7e07490f07d24c919d4ad4fed04a1b34f1663d9d53e3 ofl/moul/OFL.txt +sha256 9268f8a3b23f0ab8ad964478b4ad5e0ac534a4835b8409cd208bcc846d096bef ofl/moulpali/OFL.txt +sha256 81d6c3788a6b641cb9f543389d9d5c0cd3bf94fbb5639be19c102b9274c34291 ofl/mousememoirs/OFL.txt +sha256 04971e3fcee60b247395150d93b3616f6a0b092572332c96187b472976553abc ofl/mplus1code/OFL.txt +sha256 04971e3fcee60b247395150d93b3616f6a0b092572332c96187b472976553abc ofl/mplus1/OFL.txt +sha256 da15da6b1496d4de18f97e2ad1b722ef8a1c121149c2c93b2cf7eac6ac27b35c ofl/mplus1p/OFL.txt +sha256 04971e3fcee60b247395150d93b3616f6a0b092572332c96187b472976553abc ofl/mplus2/OFL.txt +sha256 04971e3fcee60b247395150d93b3616f6a0b092572332c96187b472976553abc ofl/mpluscodelatin/OFL.txt +sha256 5ae0cfa62a70251d9a2c3c5430ed3bafa480005f23e4b9525488f2318e5c10ca ofl/mrbedfort/OFL.txt +sha256 0da6a3e5b24a9fa04085c20a2a1d3101eeb1e0bff56a2291f407187e1b2adcf2 ofl/mrdafoe/OFL.txt +sha256 c3bfad2900a83f571d5c984d490d51c56aef14806c28dde38125593e1e71daca ofl/mrdehaviland/OFL.txt +sha256 f354ef1e7256644b320c5e1d9a07a819c2e2b930166003c96680894f9fba81be ofl/mrssaintdelafield/OFL.txt +sha256 967d75b89eef1f8a0ba1f5ee7dfb13427621f9116c6e7878ca04da8c9aa8641b ofl/mrssheppards/OFL.txt +sha256 1f3ddf9e7c9ac7445b046a89d9b420fb4a3861f1d62091a85357179db73ebd12 ofl/msmadi/OFL.txt +sha256 46751a31966477e3f038d1e5ff1146a33234a3a523a0e6a21be3221cba082a34 ofl/muktamahee/OFL.txt +sha256 d24ff874133ecd133e55d7c4070d2edab14d3933477c2bccb3a0d8d1cc9c33bf ofl/muktamalar/OFL.txt +sha256 2ee5e8e47cd7d08f60bb9555f72b25912c9e81b13f5bc9a0551ddf943da6ca98 ofl/mukta/OFL.txt +sha256 d24ff874133ecd133e55d7c4070d2edab14d3933477c2bccb3a0d8d1cc9c33bf ofl/muktavaani/OFL.txt +sha256 097e9ac414d9251c8580c073a13f8899798c66db746de60662148789ca693f19 ofl/mulish/OFL.txt +sha256 7d9f69e9be971aaa0caf64555545b3d34d23204d53ee88085790866ee21c75f9 ofl/murecho/OFL.txt +sha256 a1da98a568fa3e62fbf76b7f4d735da7da0aa2ed055600937b15356bab5ff118 ofl/museomoderno/OFL.txt +sha256 b9d592c3bf421197d9b7e353416b8e2ec81584988824b43d38c86d997a08b868 ofl/myanmarsanspro/OFL.txt +sha256 b4f46a426751128d9415c0b36a3a652dd21a116039e5926ac1890762a223713d ofl/mynerve/OFL.txt +sha256 5d9c0715f247ead158013109a3c7a053d044ab58d74cbae50594f648189ac550 ofl/mysoul/OFL.txt +sha256 965bd2c907f7bb6f36da4f85e83f29aea8b2f720783deebd7ed7b40678e67672 ofl/mysteryquest/OFL.txt +sha256 999d3ace5ea7f04761689794a9c877b0a5fc8b22a469518ffad78b4facb2e61b ofl/nabla/OFL.txt +sha256 d3474845766e4361040178d2ddd0683efbd7117b4faf19ea99fc1574ecc51e7c ofl/namdhinggo/OFL.txt +sha256 eeacf16032901d0ed0456876ec77b8f0fda6b3fecec7d972f8543eb602e6c30f ofl/nanumbrushscript/OFL.txt +sha256 eeacf16032901d0ed0456876ec77b8f0fda6b3fecec7d972f8543eb602e6c30f ofl/nanumgothiccoding/OFL.txt +sha256 eeacf16032901d0ed0456876ec77b8f0fda6b3fecec7d972f8543eb602e6c30f ofl/nanumgothic/OFL.txt +sha256 8eb1c1019fe7fe6d0b6e7d7bbbba1d9cbdd969d8c5f26455708f6cfb8a77284c ofl/nanummyeongjo/OFL.txt +sha256 eeacf16032901d0ed0456876ec77b8f0fda6b3fecec7d972f8543eb602e6c30f ofl/nanumpenscript/OFL.txt +sha256 1bd2ca2cf8853076508e6cd1bb187541b52fc24f80fceab5074b32229dd394db ofl/narnoor/OFL.txt +sha256 c0a7efe98e77cbfcf1a5ca43e874e25cf53d9185c56295bc3b5c407f95dae638 ofl/nats/OFL.txt +sha256 1b6b1362683d5bb1f864615e723b4323a3c05de5dd020e0e448546135bab75de ofl/neonderthaw/OFL.txt +sha256 dc7c4ee52985271463f5ad27e06e87a5c5c9de1f9edd04d5a9ca7b76486fc2a6 ofl/nerkoone/OFL.txt +sha256 656a20870fbcb8f559f1c6308c1df90ac93d7cd0279aab49b43a43b5e58534e6 ofl/neucha/OFL.txt +sha256 636d62f04d7bda9fcf9354f258f6244e7e18288cae036b95122e204f1acbec80 ofl/neuton/OFL.txt +sha256 942d51cf079299e83e9dd7a9a37eb92260524e8d1d576b2f0b3f7ca207c53f8e ofl/newrocker/OFL.txt +sha256 7729f005b7a087368e2cf61fc4b65cdc85988e47d0e6e38c93a72de345e86b41 ofl/newscycle/OFL.txt +sha256 fdfad38143ec470553cae82a1e45320bdd1b9ec70415d37bd0171051d8a4ded8 ofl/newsreader/OFL.txt +sha256 448df04b698cb1101857b61c7d1b4187beb59d3a0fb5edbd834d308758cda95e ofl/newtegomin/OFL.txt +sha256 6aa923334ec515d26b1a61bb978a0bb5bd8884de7529add1625beef2f4a53f74 ofl/nicomoji/OFL.txt +sha256 70f664de65e7bb62e1ac728f20a9bb28de7fdc18be594186137a9e15ce9dcee5 ofl/niconne/OFL.txt +sha256 f9f28345ffcd6cea6e3c6699e4579cd1948053d80fe89a6a5a2ecb269afc95f8 ofl/nikukyu/OFL.txt +sha256 513346ac60af1dde9d4a7bcfad3f39909d5697373a8aa1a6ee4376e6d22d3cdf ofl/niramit/OFL.txt +sha256 e711c816f7de931244976f51166baa15446fc307e5d0ea04fdca1bc2c04afb1c ofl/nixieone/OFL.txt +sha256 9465823369fbe1ae0b5a3065021d53ef8c56e113e664229455dc80b237fa6a07 ofl/nobile/OFL.txt +sha256 3fe944228254901b015c1c39178dac2e4217eba07118294b84dca34d28d4b2ee ofl/nokora/OFL.txt +sha256 b7ac0199d926980457302e0486f9561c61c0d2f84f3ba170fcd8e0f9d3956a4c ofl/norican/OFL.txt +sha256 4f8b437578b20bff261adfe6c02f63bcf7dbb6a45ab37804b3547e5d5f44927b ofl/nosifercaps/OFL.txt +sha256 b41b99f35b507564e54f6b2f5162ad1c21f94a16837c632da6632b376a341f42 ofl/nosifer/OFL.txt +sha256 fa28ba897eb819768d6bc00c30aa03ef560e80e5f6fb872eaea089c66992f502 ofl/notable/OFL.txt +sha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485 ofl/nothingyoucoulddo/OFL.txt +sha256 f2ab7e5c5c750fa03a8d8f64c72a089ed86fbd3dc172440fcc704b27816d5957 ofl/noticiatext/OFL.txt +sha256 531b0954400dc0026fd55302be06c665c895d2795819d1d18a642652afee1a7a ofl/notocoloremojicompattest/OFL.txt +sha256 ac564676d10054a8445923dfc2dfb13c042d97888bd27c1b6ec6dfe89a9d8d62 ofl/notocoloremoji/OFL.txt +sha256 500bb1ccf43df7bbb522112f9133a52b16e1c35e809632f5d8609b179152de5b ofl/notoemoji/OFL.txt +sha256 2481cfe088b756d7e841ecdff6e3ec6efa9486a711b06a74a464f3fcc986e0ef ofl/notokufiarabic/OFL.txt +sha256 1679cb60544990b4c2445320c6d5298e4bb0c08ff00dbb5a526f3793fdaa1e6f ofl/notomusic/OFL.txt +sha256 07fc70bfeb985cc1a87a8587d0a0c80bab11c86c9dc3fd95b6f0cb332f983e96 ofl/notonaskharabic/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notonaskharabicui/OFL.txt +sha256 e90279e3fb2003c4d54f8685e25274bd7838b1b21c891520d71dbdb1d4a98907 ofl/notonastaliqurdu/OFL.txt +sha256 9b9fe028b5ba74d231659a1bbaf0ed09b11e759d1ca6a070999e16d151616b47 ofl/notorashihebrew/OFL.txt +sha256 0e86b3990089b054d8e6a29520589ac7ff3926738e2868e20d1b7f137d337d14 ofl/notosansadlam/OFL.txt +sha256 0e86b3990089b054d8e6a29520589ac7ff3926738e2868e20d1b7f137d337d14 ofl/notosansadlamunjoined/OFL.txt +sha256 38a991a0d87537daefe1a2332edcffdb599bf9670533badbbfc98f881b8f817c ofl/notosansanatolianhieroglyphs/OFL.txt +sha256 07fc70bfeb985cc1a87a8587d0a0c80bab11c86c9dc3fd95b6f0cb332f983e96 ofl/notosansarabic/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notosansarabicui/OFL.txt +sha256 0468358b316f69f405b55cadf8a8314e16e3610b8feaad96772bd5d968112d02 ofl/notosansarmenian/OFL.txt +sha256 3554a83d7ac9f12aefb36a548e6c88fe1a71711d5c57f86001305c78a5c03152 ofl/notosansavestan/OFL.txt +sha256 11bc477b31ec9e66f86bf6f64c060dde84b34ed49582d881657b472c33c4e1e9 ofl/notosansbalinese/OFL.txt +sha256 3dd4cce0a3d3405f7b690bc10bc2c78f2d2feb448c8f88b604bed2f33892d892 ofl/notosansbamum/OFL.txt +sha256 287edd17552fbfffb8b695582889adad29672599d654cf53d820aace29208256 ofl/notosansbassavah/OFL.txt +sha256 ff0723191d946fd4c7e53effb67b3b5b25b1c3f3aa85f5244230fa2580a8fc1b ofl/notosansbatak/OFL.txt +sha256 754f0e221aa7d5a915489f3bf1f20fe53ddc35ab2834a4d91656d78f9622de70 ofl/notosansbengali/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notosansbengaliui/OFL.txt +sha256 55acad617cc72f630484d7cef2c12074a818df03eea7d89d6d595c663fc92fc5 ofl/notosansbhaiksuki/OFL.txt +sha256 46d6caa05a24bda40dd8c1d073c3857b69738b856a8b644238104a62bf2cd6d1 ofl/notosansbrahmi/OFL.txt +sha256 1b63982dfebd74eab553a4aa303bc18811d9f136f82e20c37df7262ce3125bca ofl/notosansbuginese/OFL.txt +sha256 6c127a87daaa23faca73b3607879fe6f86799e3948d07275800b54b805610294 ofl/notosansbuhid/OFL.txt +sha256 507cc466e43d021662b9e9320a55a81798d293ed6a4a80c8d519f917bd90fdeb ofl/notosanscanadianaboriginal/OFL.txt +sha256 8d161a6467a3b032c852f311d23a8df336d2152ca9e4b236c8b6e2ed49199068 ofl/notosanscarian/OFL.txt +sha256 9fcb74e139ee491def8fd25fb9a651310594a0dd232616030fc8d304a7c9d0c0 ofl/notosanscaucasianalbanian/OFL.txt +sha256 4f95be0c30353cefed3d98051bb6762754893267ddbe123783cf92e8aa6f787f ofl/notosanschakma/OFL.txt +sha256 dcbc971844d8db052a5fe3adfb8bce4e56788986fee96f9c7bfbf56ef519b9c9 ofl/notosanscham/OFL.txt +sha256 d7f9ca0cf1b9bcb7e94697bce31b2ec7a5571c51deb8f1f2f411ddf9a67859dd ofl/notosanscherokee/OFL.txt +sha256 9154669974b25a4694c515f835bcc6a354291df78a57fa167ac8b3946a8c2ce0 ofl/notosanschorasmian/OFL.txt +sha256 322570ceef6e9935b2422470682e42481903eb444fc416455c32c2c3c888c78c ofl/notosanscoptic/OFL.txt +sha256 83e16aed35737ea80911a82938ad4bfe762fde24928010c2c80d21ece07bec14 ofl/notosanscuneiform/OFL.txt +sha256 18f3c4770aae15b8f60a8d4e5a7d7e7065fbcca195d6fa8ca23fd10374647b0a ofl/notosanscypriot/OFL.txt +sha256 d3350b235b681746db9ca902f656cadf122769738f3cef76bc999df7d52bbd77 ofl/notosanscyprominoan/OFL.txt +sha256 cdfc75eeec8b7d71279b2412798808f2b7c5d70fe672ad624c3418b58ccd1c42 ofl/notosansdeseret/OFL.txt +sha256 a216f6f8d85c7228093e0ee5e258d9d377e6671f68acb4db1930b29583d0f331 ofl/notosansdevanagari/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notosansdevanagariui/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notosansdisplay/OFL.txt +sha256 b1b12c372165b0a2cf7533c7fa8b6568b8981d2e207a15d7bf631bd1910c4fe0 ofl/notosansduployan/OFL.txt +sha256 dc8114a49f5bb53bad3d99ee52cbb245e98076438d59428a258720258494de68 ofl/notosansegyptianhieroglyphs/OFL.txt +sha256 6abb98eea47fde30d4d334fc50f1ee26048e77f1e7f66172c682df8f8fd52a94 ofl/notosanselbasan/OFL.txt +sha256 bdfb572fad1e0d80331b02e52d9f2184a4e5b2b3991427eff95c1d816fbd2a77 ofl/notosanselymaic/OFL.txt +sha256 72606b23f312cb25973958f2892d4d2c2012deabadbf0f763232624a9649fc69 ofl/notosansethiopic/OFL.txt +sha256 8c02263c5d73d40544f9ed91e30c4e947407057a3cc430d7b786189aeceff6df ofl/notosansgeorgian/OFL.txt +sha256 246cab0cc2102b5f601447ab1d48f79d2ca2b23cc72ed7968efcbaa9bf9cccfe ofl/notosansglagolitic/OFL.txt +sha256 f7107137477d250fc49410833110c25ffd8b96a78b1a25e1f1b967e876070949 ofl/notosansgothic/OFL.txt +sha256 57ddd5a347bbe5f83d47a5a63679af4a3eb7f609f5a3d5c059ad12fd1fa29e21 ofl/notosansgrantha/OFL.txt +sha256 c0b88977aa18b5e4fd05d646d560da89fde61b6581fa4507cb00dd90bd1bf7d4 ofl/notosansgujarati/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notosansgujaratiui/OFL.txt +sha256 08143215e0afaca5ccf91aae3f575029f918b9177d5bc18e0c49dd838a5ba5f4 ofl/notosansgunjalagondi/OFL.txt +sha256 3f7451b7e2c8381be0c5712f7b0dd5c2d75fe787ae16a99f18b7fa45627a0fde ofl/notosansgurmukhi/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notosansgurmukhiui/OFL.txt +sha256 addc4a900f32e670a401766f144d6a1fc1bc7dffed87350e310ef1d68ba404f8 ofl/notosanshanifirohingya/OFL.txt +sha256 1d243377ac4633a4b10bb66cc07695c8432e93a611433fb5e91a2009cbd2616f ofl/notosanshanunoo/OFL.txt +sha256 910456012f8244afa9af0d21863a0d637e62b20af4d935350b8635c9664860c0 ofl/notosanshatran/OFL.txt +sha256 9b9fe028b5ba74d231659a1bbaf0ed09b11e759d1ca6a070999e16d151616b47 ofl/notosanshebrew/OFL.txt +sha256 1c05c68c34f9708415aada51f17e1b0092d2cea709bf4a94cd38114f9e73d7d9 ofl/notosanshk/OFL.txt +sha256 965a8053ceb55292d06262810224e7e283015545a73bcb0e0c5931bdcc982aa7 ofl/notosansimperialaramaic/OFL.txt +sha256 5bc7346cabfde1fbca124566f67198f154d5d356e022639f2406f087def374f2 ofl/notosansindicsiyaqnumbers/OFL.txt +sha256 0e246b748c637c88e8e0c34d5c1d27fe46bf477738653e46055df5c015c24ded ofl/notosansinscriptionalpahlavi/OFL.txt +sha256 34db797c6a8f7bba182a70971aa9191af6265864ec804339f7a4d2a05afed33e ofl/notosansinscriptionalparthian/OFL.txt +sha256 8a5665bd3b16a64f953b24a71f12e298f5233be8a4ed17424129c5524a397892 ofl/notosansjavanese/OFL.txt +sha256 1c05c68c34f9708415aada51f17e1b0092d2cea709bf4a94cd38114f9e73d7d9 ofl/notosansjp/OFL.txt +sha256 319dab1a833d34ed8b4bedcb9076c53bc0c9e5bc48c011b93eb294d3631d6d65 ofl/notosanskaithi/OFL.txt +sha256 9d49a4e56df9b36403b139f48bf07fd87cc5e716cb3203c54b04b674adb16238 ofl/notosanskannada/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notosanskannadaui/OFL.txt +sha256 13a37d6fb70d8c4c04f2b8452731029208427934ba4151dd1e8221f006950e3d ofl/notosanskawi/OFL.txt +sha256 e053c471ccf7602350e2f9f77bb479dfadc040173ce4e50309dba9ce1ae7e09a ofl/notosanskayahli/OFL.txt +sha256 b3928e46f902b1d6d7108c8e9d5c08599b1c5c3e02bdec8a2e21a184c9a19e13 ofl/notosanskharoshthi/OFL.txt +sha256 be0407f060aea48787ff9e75d8d3aedef70aef113b3ce9aca26fdaacd10b1870 ofl/notosanskhmer/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notosanskhmerui/OFL.txt +sha256 82ead5cfe70167960007329171dcffe99886373b3159619e596e84f08890234c ofl/notosanskhojki/OFL.txt +sha256 fc41afc2ff35b773da629641500b5b99d8243f121571c10b54cceabe516330b3 ofl/notosanskhudawadi/OFL.txt +sha256 1c05c68c34f9708415aada51f17e1b0092d2cea709bf4a94cd38114f9e73d7d9 ofl/notosanskr/OFL.txt +sha256 a42993999944845fb5af693ea678a372a053db1f0981d55e911dcfa9d330f279 ofl/notosanslaolooped/OFL.txt +sha256 a42993999944845fb5af693ea678a372a053db1f0981d55e911dcfa9d330f279 ofl/notosanslao/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notosanslaoui/OFL.txt +sha256 d6a4fe388105d6738b6f56eae2b43368a58e6191d5d62d9e9440b38b4d32547f ofl/notosanslepcha/OFL.txt +sha256 9745259e135d9de74a122c6498a830a1e45c59b75677821f42e11691e769deec ofl/notosanslimbu/OFL.txt +sha256 a67a01aefe12fa20a386b1dcd45b36a82b9c71c27cbef6b4b359ff9c9a816ded ofl/notosanslineara/OFL.txt +sha256 bc7112fdaa4a03fd869deca0d0454cd34fa575663a194cec9578da5489f713b3 ofl/notosanslinearb/OFL.txt +sha256 1f65bfdc26d6bd6e57249c60a86ea355761fb9150694e50206175d3fa8d3c166 ofl/notosanslisu/OFL.txt +sha256 43ade220daeb7c8f610c4ca136304710e4eb910f64627d6010ddf9fe2fe18cf8 ofl/notosanslycian/OFL.txt +sha256 3a4d46fda7223bbdc698882822b43b3650432f8895b9b62c7f01bbf889990aa0 ofl/notosanslydian/OFL.txt +sha256 3c695b36fef73588d0a192dad666b2956d15582f66289a85a3d55705e4cd454a ofl/notosansmahajani/OFL.txt +sha256 1df18163a0bf60f02131401ba1609df90051f40c4047684dda1c8a2e9586f7f2 ofl/notosansmalayalam/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notosansmalayalamui/OFL.txt +sha256 0a3a51e5b087d142502e86b8003f78e82ed7bbb3f232e8d45f202591b29dc119 ofl/notosansmandaic/OFL.txt +sha256 b1d3bb52a18917b0fe332721a4cd438d601fe9439d4359e36cc33d90c29c39d6 ofl/notosansmanichaean/OFL.txt +sha256 60359568c6c75e3337f971f8af1d9d025d111d001707206b1fb1c64017378ae5 ofl/notosansmarchen/OFL.txt +sha256 4fa8727beab4099775b4e6e67a636c423755679e54bc23208e323897e1f34e88 ofl/notosansmasaramgondi/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notosansmath/OFL.txt +sha256 4ea975c31fc83692252a4c19382bbd539e7a06afa2eaacdad4ef433132cf64bc ofl/notosansmayannumerals/OFL.txt +sha256 47755a5e817c401cdca376815aae527195d333688277cce00a542b83ed532fa7 ofl/notosansmedefaidrin/OFL.txt +sha256 5dbbaac416c9c5021f3409d1157419c0bfe5089ef39a373c49a632eefdc639d8 ofl/notosansmeeteimayek/OFL.txt +sha256 e87457c702ba140cd0c6b319e75eac02c1e74c80c2f522cbc7b9ea5315b98ecd ofl/notosansmendekikakui/OFL.txt +sha256 1dfb3d4b1c7a31bf3de390189cf46f30eef4a45f43523437d09c1339e6b3a194 ofl/notosansmeroitic/OFL.txt +sha256 8d8b751f6af44eae099f1debc858a93646e88d9d6a0a43573e9785383fcb3bdb ofl/notosansmiao/OFL.txt +sha256 fc8470520ea4c92c2430e6cb57b6d92bc1aabff954292ce8f20db2c5465d4a25 ofl/notosansmodi/OFL.txt +sha256 b0158b3c0b16c20e22ea662850503a7980111c5c704501e942cc1a7ed12dc011 ofl/notosansmongolian/OFL.txt +sha256 cee9892f9f0cc8fe882c9e9537ee6a89621d86ee7ceaf70b02e2b2b1c25c061a ofl/notosansmono/OFL.txt +sha256 4db1c3aa73647bb9ad9b0137917e3e335ed1e7286c1764db707e3f5836a766d1 ofl/notosansmro/OFL.txt +sha256 a1b3ca46173087cac8b37010a23bd72edab3fd104ea8ef6cc0ff282078df52e4 ofl/notosansmultani/OFL.txt +sha256 246a75859267af7da466823969d2e2b407ed8455ee5f74f4c8d63d8783be9b57 ofl/notosansmyanmar/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notosansmyanmarui/OFL.txt +sha256 d1d3fa924183e4c4f14d17fd5bdd2b1ab3e433c898bb2cb6074b5cf331c22485 ofl/notosansnabataean/OFL.txt +sha256 76011376f7892fb18a4eb84f662483b112270a1dcf0be20d4041ec19490f6fd2 ofl/notosansnagmundari/OFL.txt +sha256 1b03662d65f124e6333ccf45d389154e42028c8eee158b28ccba7ce344723b80 ofl/notosansnandinagari/OFL.txt +sha256 39b6d4531cfac5e6004bf5f34668bf1ce50ef3b1f2cbe0b2ecc432949a45c6dd ofl/notosansnewa/OFL.txt +sha256 c689158356ee339a27b56c95a802dc5980b7d654586fa44b5ccdd3d5c7230c2f ofl/notosansnewtailue/OFL.txt +sha256 ddddb5913f75b8f4af1e50386b5ecdfa909b58685994f120b116a3ae5a1c8c48 ofl/notosansnko/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notosansnko_todelist/OFL.txt +sha256 ddddb5913f75b8f4af1e50386b5ecdfa909b58685994f120b116a3ae5a1c8c48 ofl/notosansnkounjoined/OFL.txt +sha256 1cabb5c007be074c36e1a390b591265c31fa910d20d73af57e13093928f8cac0 ofl/notosansnushu/OFL.txt +sha256 cee9892f9f0cc8fe882c9e9537ee6a89621d86ee7ceaf70b02e2b2b1c25c061a ofl/notosans/OFL.txt +sha256 d5e3e9b305ff13448c11cb348dce7f180eb42c961a53325c1339fdeeaec4e239 ofl/notosansogham/OFL.txt +sha256 b30754bbe6bea30b666a60d513ae80435a197979c9500e8380f83acd99dc763b ofl/notosansolchiki/OFL.txt +sha256 8b78300a14978656a55fac2ee73466ece7d6e9e9d8a4ba770f81ed92f3ec8af4 ofl/notosansoldhungarian/OFL.txt +sha256 9c4cef96698c8ecda3a659bd973b4880420afd9e105731e30631d62a0a75a482 ofl/notosansolditalic/OFL.txt +sha256 5f57555b16c41ca7ff067efefdb3eadfcb601d3d96263f5ba13ac017c770dc1b ofl/notosansoldnortharabian/OFL.txt +sha256 368ec41388919a8214a906db7ab1491a8b3588b81938d2c33225e607c8b5c564 ofl/notosansoldpermic/OFL.txt +sha256 002443fcdf6acb8cf7467b678bfba924396bbd47c64522500a48ba86fdc295d3 ofl/notosansoldpersian/OFL.txt +sha256 16ed6acd7df2afc8c37ef5bc269bcd17f8ef4878ec2ca4a7fe507660b3bdeb62 ofl/notosansoldsogdian/OFL.txt +sha256 22aac2446e3aa2fb1e02eb6aecde823aa7e13e3fbd89ed3bd8595905e1d37671 ofl/notosansoldsoutharabian/OFL.txt +sha256 7a86be07750ab3c83800ca157a5fcb7fb5642fdee16c4b5e2a8d75b9d8ac622e ofl/notosansoldturkic/OFL.txt +sha256 c90ff15ade263a49148e35af34e9c177c6d56881e81260b29f10123e9e227eca ofl/notosansoriya/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notosansoriyaui/OFL.txt +sha256 46683544b3fae35c1716ad6deead57b7363edfc369aabcd8d159250e3fce57ae ofl/notosansosage/OFL.txt +sha256 a912228f344a47ecb6e7f00c96f70a62033e18c028304bd0b23ce77c929621f4 ofl/notosansosmanya/OFL.txt +sha256 55c7d320c0be6098bd42e7665397f2f15b46ba6b1fad2708969bf073402d012e ofl/notosanspahawhhmong/OFL.txt +sha256 387a4cccbc74240911059aad6db9ab13be0c72a8d7cd98c94a63d6c3ece8f5e0 ofl/notosanspalmyrene/OFL.txt +sha256 ab62d184e7353d161ddea97e3aa400f9251a653b055dd5b030b07fede3bb546e ofl/notosanspaucinhau/OFL.txt +sha256 36c78621f9338739cd29fc770253fbb867be8934d36d6a172afc6bd56da4c138 ofl/notosansphagspa/OFL.txt +sha256 ff3760ba038fb0498a3cbfd3454fc983babefe2a0318a660cd7e70c9bcc3eece ofl/notosansphoenician/OFL.txt +sha256 14747a4aba5fd7a925205eb6b322d05dce2c3975ea44107b182df03978906058 ofl/notosanspsalterpahlavi/OFL.txt +sha256 6f14737b51d3231847a92f992f416ed1e2017235d6ac3c6e9e46ef2f9288a160 ofl/notosansrejang/OFL.txt +sha256 b0fbcb9eaf0f5f415358bfefa5999ee75e18cde4a275b78285b2140a9e381865 ofl/notosansrunic/OFL.txt +sha256 b5077d717d6cd64f06e8e4500eb103b0cb51dd95965d562e2ba3a0684e6c966f ofl/notosanssamaritan/OFL.txt +sha256 aef66e1a5ca98031d65b2284c24de0e66158703fe84a0bf339ac600c8e355c1a ofl/notosanssaurashtra/OFL.txt +sha256 1c05c68c34f9708415aada51f17e1b0092d2cea709bf4a94cd38114f9e73d7d9 ofl/notosanssc/OFL.txt +sha256 110e682353242abfe1529151fda818b381cb722b4d5a46388c13f55225e21b1b ofl/notosanssharada/OFL.txt +sha256 ce9ffedf88a403a1de82c6a58869ff84e7371453d844247babe40336de5f613b ofl/notosansshavian/OFL.txt +sha256 85610e60cd4cfa1395c27ada1f15ac5ba10b7b9f1eb343a66532105682d2c830 ofl/notosanssiddham/OFL.txt +sha256 5cd389912c5b7f1d1ae7c341968109343697a7bdabf69c0dabafb5b6b8cc5477 ofl/notosanssignwriting/OFL.txt +sha256 2d6f7c43bce61f4b1919379f901bc613484f5285f520b6d29bb7c1f31b17e841 ofl/notosanssinhala/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notosanssinhalaui/OFL.txt +sha256 ade8e858dd1b48cae4781855440ae9ba83358a7f4f1ac8eadfb0ad90644b1775 ofl/notosanssogdian/OFL.txt +sha256 a95dc9b1eab6e384e5f14d125074cddac6108c30a829190cfedc973d571a59cf ofl/notosanssorasompeng/OFL.txt +sha256 a5f1c842c6b33865210dda255cbbc8257ce6f05e861129af3d45b887147cdcc3 ofl/notosanssoyombo/OFL.txt +sha256 2d42ae3d7f3522cfd45fcd4daffa698a1d7b5c13b2512593d0f993633fa428fa ofl/notosanssundanese/OFL.txt +sha256 5533f0addd3fcdfc8d784db3aeec631bb04f570961831ea2c384a4dbf2fcfc13 ofl/notosanssylotinagri/OFL.txt +sha256 b118dd41337806a5d4797052c77caf3bd096aed783e5eb21b4d11154351e1ac0 ofl/notosanssymbols2/OFL.txt +sha256 b118dd41337806a5d4797052c77caf3bd096aed783e5eb21b4d11154351e1ac0 ofl/notosanssymbols/OFL.txt +sha256 6442860dad2700aabece2ac7252680b1a5bfc0987cec1ca0c3d605ab8f0b7975 ofl/notosanssyriaceastern/OFL.txt +sha256 6442860dad2700aabece2ac7252680b1a5bfc0987cec1ca0c3d605ab8f0b7975 ofl/notosanssyriac/OFL.txt +sha256 34e8361b8799f1e37b199f0260a66a38f4359f42ed0f2dcf96e3650f6bff2cd9 ofl/notosanstagalog/OFL.txt +sha256 3c2f7990d23f5f5150ea8c8eab653a197ca191934cccbf09514afdae76b559b1 ofl/notosanstagbanwa/OFL.txt +sha256 01950566b02c4f25f237a1619129650852da6f664110f7bdaccdc60ba51b1b06 ofl/notosanstaile/OFL.txt +sha256 8cf7ad1fbb6cd4a3b1596f813d6e0d57f919f612a72c2e2603506489f9dbebc6 ofl/notosanstaitham/OFL.txt +sha256 12353b96af2837abbe42f486d99c487836d8d9778b058c37d920ca2ec0cc83a3 ofl/notosanstaiviet/OFL.txt +sha256 7289a413acc7fa6ec0a40f1c92652e02178fe3a36e2fee2f98af8ceada41b0a4 ofl/notosanstakri/OFL.txt +sha256 f8ff8ce7d0a81bf8d5e121c635ef027250c531f2fd37d5988b8dd6e45f19d7f1 ofl/notosanstamil/OFL.txt +sha256 f8ff8ce7d0a81bf8d5e121c635ef027250c531f2fd37d5988b8dd6e45f19d7f1 ofl/notosanstamilsupplement/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notosanstamilui/OFL.txt +sha256 b4c6eab864c1283a5c1846d7b5467e70cdc58fac872123aeac0b966a9ab3169b ofl/notosanstangsa/OFL.txt +sha256 1c05c68c34f9708415aada51f17e1b0092d2cea709bf4a94cd38114f9e73d7d9 ofl/notosanstc/OFL.txt +sha256 481c72a8f1b4f645a7e6b10326be41b2da2c15cb470ff48a07fab773eed00102 ofl/notosanstelugu/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notosansteluguui/OFL.txt +sha256 5de6fbfe9ca25509fd60e47be3fab3cc236abe20bc1b123a5c2bd12f067fd13c ofl/notosansthaana/OFL.txt +sha256 2e98fd23a52d253db8612cd5942c8f2ff4111b21d2367050fdca91d8ccc374a0 ofl/notosansthailooped/OFL.txt +sha256 2e98fd23a52d253db8612cd5942c8f2ff4111b21d2367050fdca91d8ccc374a0 ofl/notosansthai/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notosansthaiui/OFL.txt +sha256 030b53206585ee108e261d15e3674ea3f8969cd59bbeccbd0028027a0eb22d6a ofl/notosanstifinagh/OFL.txt +sha256 9bf9c1ab9b7837bb65fb40dd7f6b706a28199cd633b80dcebe532bddc56594cb ofl/notosanstirhuta/OFL.txt +sha256 1c95c4c9e705f165c9577063a49b5e86914e2f38d62db454143b261bfee674c1 ofl/notosansugaritic/OFL.txt +sha256 765206100bc8ad011be3a0976323394c28f335c69c49de152c3bd8bd27cdb803 ofl/notosansvai/OFL.txt +sha256 d6269b9dcf2275996a5dbf660e3d2dda3cf0d74e9b470629e474c4adfe42f969 ofl/notosansvithkuqi/OFL.txt +sha256 50f044fdaa382fa03de22849f2b31906a56139df0dad90215fa60413dbc255e8 ofl/notosanswancho/OFL.txt +sha256 a97d2d7a91aa60fe67b6c9b77ff562fd0d29e1c27f667c650bd52f322ab0be88 ofl/notosanswarangciti/OFL.txt +sha256 e231e5bdb5cea3b5a3a9055d3ddc8ea9225dd9eb46db6404a8cd8b0cb5b0c4dc ofl/notosansyi/OFL.txt +sha256 bb3dc754adff0b5baa523c96e6ecc424df94b406b1f32ac19630905230ff0739 ofl/notosanszanabazarsquare/OFL.txt +sha256 33941759eab10afc82c8a166212be569a1e0bf40aa42f9987bdcabb2907c08ee ofl/notoserifahom/OFL.txt +sha256 0468358b316f69f405b55cadf8a8314e16e3610b8feaad96772bd5d968112d02 ofl/notoserifarmenian/OFL.txt +sha256 11bc477b31ec9e66f86bf6f64c060dde84b34ed49582d881657b472c33c4e1e9 ofl/notoserifbalinese/OFL.txt +sha256 754f0e221aa7d5a915489f3bf1f20fe53ddc35ab2834a4d91656d78f9622de70 ofl/notoserifbengali/OFL.txt +sha256 a216f6f8d85c7228093e0ee5e258d9d377e6671f68acb4db1930b29583d0f331 ofl/notoserifdevanagari/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notoserifdisplay/OFL.txt +sha256 5e67c5a885cfcfd6ce8c2807e440c07091e3ea5432b2557b13611e3ce5b0691b ofl/notoserifdogra/OFL.txt +sha256 72606b23f312cb25973958f2892d4d2c2012deabadbf0f763232624a9649fc69 ofl/notoserifethiopic/OFL.txt +sha256 8c02263c5d73d40544f9ed91e30c4e947407057a3cc430d7b786189aeceff6df ofl/notoserifgeorgian/OFL.txt +sha256 57ddd5a347bbe5f83d47a5a63679af4a3eb7f609f5a3d5c059ad12fd1fa29e21 ofl/notoserifgrantha/OFL.txt +sha256 c0b88977aa18b5e4fd05d646d560da89fde61b6581fa4507cb00dd90bd1bf7d4 ofl/notoserifgujarati/OFL.txt +sha256 3f7451b7e2c8381be0c5712f7b0dd5c2d75fe787ae16a99f18b7fa45627a0fde ofl/notoserifgurmukhi/OFL.txt +sha256 9b9fe028b5ba74d231659a1bbaf0ed09b11e759d1ca6a070999e16d151616b47 ofl/notoserifhebrew/OFL.txt +sha256 1c05c68c34f9708415aada51f17e1b0092d2cea709bf4a94cd38114f9e73d7d9 ofl/notoserifhk/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notoserifjp/OFL.txt +sha256 9d49a4e56df9b36403b139f48bf07fd87cc5e716cb3203c54b04b674adb16238 ofl/notoserifkannada/OFL.txt +sha256 58068590e3e02b923b3c8b7e94d3668aeeac58e9d7ecc05f3e5243c2ae385e55 ofl/notoserifkhitansmallscript/OFL.txt +sha256 be0407f060aea48787ff9e75d8d3aedef70aef113b3ce9aca26fdaacd10b1870 ofl/notoserifkhmer/OFL.txt +sha256 82ead5cfe70167960007329171dcffe99886373b3159619e596e84f08890234c ofl/notoserifkhojki/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notoserifkr/OFL.txt +sha256 a42993999944845fb5af693ea678a372a053db1f0981d55e911dcfa9d330f279 ofl/notoseriflao/OFL.txt +sha256 d8f80a299c629ef4b73009b9e89c7ef4eee08c2a2ae5f595d81cf5db64c4af9b ofl/notoserifmakasar/OFL.txt +sha256 1df18163a0bf60f02131401ba1609df90051f40c4047684dda1c8a2e9586f7f2 ofl/notoserifmalayalam/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notoserifmyanmar/OFL.txt +sha256 e13fc63364c2d60d1933e3a20c74a265d949f1e2321155db2b0df103f78d539e ofl/notoserifnphmong/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notoserifnyiakengpuachuehmong/OFL.txt +sha256 cee9892f9f0cc8fe882c9e9537ee6a89621d86ee7ceaf70b02e2b2b1c25c061a ofl/notoserif/OFL.txt +sha256 ffa5a817150c87cb62d776029ac3773ae634f61b189d5c5cc352adf006000781 ofl/notoserifolduyghur/OFL.txt +sha256 c90ff15ade263a49148e35af34e9c177c6d56881e81260b29f10123e9e227eca ofl/notoseriforiya/OFL.txt +sha256 7f6a7ae1130aa5931a54f4a2bcfa63596178353391aaeae143a29d5f7101deaf ofl/notoserifottomansiyaq/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notoserifsc/OFL.txt +sha256 2d6f7c43bce61f4b1919379f901bc613484f5285f520b6d29bb7c1f31b17e841 ofl/notoserifsinhala/OFL.txt +sha256 f8ff8ce7d0a81bf8d5e121c635ef027250c531f2fd37d5988b8dd6e45f19d7f1 ofl/notoseriftamil/OFL.txt +sha256 bd8b32c064be2225d55f878a689063c6f169ccd9e2792d7051f0d74cf4816f1b ofl/notoseriftangut/OFL.txt +sha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6 ofl/notoseriftc/OFL.txt +sha256 481c72a8f1b4f645a7e6b10326be41b2da2c15cb470ff48a07fab773eed00102 ofl/notoseriftelugu/OFL.txt +sha256 2e98fd23a52d253db8612cd5942c8f2ff4111b21d2367050fdca91d8ccc374a0 ofl/notoserifthai/OFL.txt +sha256 0077789fc3cb20f358278ba4c6437eb14ade97d4d3e3281eaa42853efcd9dc8b ofl/notoseriftibetan/OFL.txt +sha256 96d0164554d7c701933793a594fd0616f7b1a6d492262139876f96f91de59081 ofl/notoseriftoto/OFL.txt +sha256 d6269b9dcf2275996a5dbf660e3d2dda3cf0d74e9b470629e474c4adfe42f969 ofl/notoserifvithkuqi/OFL.txt +sha256 e54b92f7047e9de3276849387c4109fe77718bf608408ac2f9826188af442dfb ofl/notoserifyezidi/OFL.txt +sha256 1cabb5c007be074c36e1a390b591265c31fa910d20d73af57e13093928f8cac0 ofl/nototraditionalnushu/OFL.txt +sha256 b1b08ef05bc4e6e9bc16bc372e2a980d437aafa4de86c33baba37ba2651e9a90 ofl/notoznamennymusicalnotation/OFL.txt +sha256 5505d1a010ee0f2eeecdf624984d2a6170480adab3091170abbcedd85361f1b9 ofl/novacut/OFL.txt +sha256 d2f87f90d108a947f98c030d9d8e4bf27e761ce83f222453b9a7230c5fb309e1 ofl/novaflat/OFL.txt +sha256 197c3f48cff4df3d768230e0bbdbc4305d8b8b9041ea6fb5e00872af66adc5ae ofl/novamono/OFL.txt +sha256 bb655534b6c7bf3e547c1368a68a5b1032d0e96fd08b5cc75f3d7a78528784ef ofl/novaoval/OFL.txt +sha256 f1ef4c3ef43322403f5c30e4fb46496969cb5c34a2a6e7247b507254b69caa6a ofl/novaround/OFL.txt +sha256 9b1cfccef4a7e19f90e2901f808f3aec4335d3cc81f978453ad0c8ded14447a0 ofl/novascript/OFL.txt +sha256 42e7b456fee0d0dc86927579b3d2626d42bb0f4cc9778f3a92ca8ada4e46348e ofl/novaslim/OFL.txt +sha256 c0bcb72e68dd416db0bb9fcec7a7fa62321b0147cde00d8c8f82748e33aefd34 ofl/novasquare/OFL.txt +sha256 455755e2e7ce9dbac6beb3729c97c57d6f74a638dcb5be548ec953021fbdbfb3 ofl/ntr/OFL.txt +sha256 760fb433c515570f6b77ebc60299c2c91d5f03848c659452a9d2458b28935768 ofl/numans/OFL.txt +sha256 580df76c95a1ec5ab878ceb25bb3d85c6a076804e9c970c8c6972aea775fdf65 ofl/nunito/OFL.txt +sha256 efbb0c9e864cef973982d9a17567e6be5c3d1759695574586f3f18c7ecca064b ofl/nunitosans/OFL.txt +sha256 4a90b22c5b61d15805fc786aa22592a4e8b52c4ff5774a4bb2c1ae0cb79b083a ofl/nuosusil/OFL.txt +sha256 c8f4a6ae0810a3ad10e484b29b6a6d4bb6c6e60d900266970789c54227713fe2 ofl/odibeesans/OFL.txt +sha256 3f747f7502101ae1e66f6e794e1a37aa2967580239dc5b9d6a28fd7c0f3495e3 ofl/odormeanchey/OFL.txt +sha256 270ab96983ada2aace07b48f216b8e229b747a2d0fc1f8b32dc4d506c1058993 ofl/offside/OFL.txt +sha256 ed50ebe2fa922554980909192526fe94966556626d6d440a462c8e7eaed74cdc ofl/oflsortsmillgoudytt/OFL.txt +sha256 053326baf9314c746e170e100766517d85ad78f5c9311123787e7d82b0ee7341 ofl/oi/OFL.txt +sha256 fc59ca3cd3bcb47bd4df597519111ec130c25cabcc57a8808dd2d243cdcec6ae ofl/oldenburg/OFL.txt +sha256 4faa2d9e2ce0a4b5b37e62ee6fafe474a539b31578f7214ed97cc3503aeb8ebd ofl/oldstandardtt/OFL.txt +sha256 1e535087b6db508ffce476d197d5198deede7a5e5eb5f3ada8c68f864e98c7f5 ofl/ole/OFL.txt +sha256 8fbe530adcbe30c658393c3f2b5a4785d6765afcefdfe47f594730131f3a0abd ofl/oleoscript/OFL.txt +sha256 8fbe530adcbe30c658393c3f2b5a4785d6765afcefdfe47f594730131f3a0abd ofl/oleoscriptswashcaps/OFL.txt +sha256 071195d8806e226faeee60259c28ca67b458227af5195a73f5cfcab06e3003bc ofl/onest/OFL.txt +sha256 a768f4c2b04f8e960236f9854c8afeb3626fb34927f25aa66aa7f1cc8cea715e ofl/ooohbaby/OFL.txt +sha256 fbbbcfef55318de350562559b671360de6d597112ecc5c73881b05092db89602 ofl/opensans/OFL.txt +sha256 d941c5b788d47aa469ee54e30f4c12d6a43c45a295f10c568bdf9772f2893b7b ofl/oranienbaum/OFL.txt +sha256 00f1783a4e7a52d945c0c4de689571b2db896493362651db2706b40c6fc1c330 ofl/orbit/OFL.txt +sha256 ab609b0e110d622435ff337cdf233288556e011bbf9bd0550be98846c0630819 ofl/orbitron/OFL.txt +sha256 96b7bc175186cd0153a9682a1c9bb1da7103ab13a83abef8026bc64582ca616f ofl/oregano/OFL.txt +sha256 14c21a0a12187e4d5e83914ffb2c976cc0f616ce1e0da80cb1f5a80f6a9b8709 ofl/orelegaone/OFL.txt +sha256 781433e63668e8f766a755b3df5e1a7100850d3a2fecaf5bc6d01d87888fb354 ofl/orienta/OFL.txt +sha256 173ea2d0bdda981829719623c35699e8c0e4aa508e0af12817ad7ccbfa4c6137 ofl/originalsurfer/OFL.txt +sha256 0fd731a904b729a4e02eaf5e8ebd06783edd9abe400e8882760160230675b652 ofl/oswald/OFL.txt +sha256 906375346809a46416faa9de00683ddf70dca62d2a9798acf9f75b2578898ae2 ofl/otomanopeeone/OFL.txt +sha256 c676351bf8576b9aba743cd5eaa8c0e7ee0d51f805d720447b4df4ddb6a2e416 ofl/outfit/OFL.txt +sha256 62fab0ba1d5593782cbf048da193f4b1edc16b817577a99d707827513ad80e9a ofl/overlock/OFL.txt +sha256 62fab0ba1d5593782cbf048da193f4b1edc16b817577a99d707827513ad80e9a ofl/overlocksc/OFL.txt +sha256 86e5ff25c701ec446d20b1a85b02ee6d36de8503a7288a4c948f5459809af1f0 ofl/overpassmono/OFL.txt +sha256 86e5ff25c701ec446d20b1a85b02ee6d36de8503a7288a4c948f5459809af1f0 ofl/overpass/OFL.txt +sha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485 ofl/overtherainbow/OFL.txt +sha256 008445a4d53fbd71bff9cf733bdfd841a1b15fb58ef3473f7bab4c456e3b2930 ofl/ovo/OFL.txt +sha256 fe17c0f2581d71b4e1ea7e636e7f4877c29223e11bb1dd1a871e8c3f2a86336b ofl/oxanium/OFL.txt +sha256 1e20933206ca06421c7c378184da5476d195314cf4bcda2bf122cd45d69a956e ofl/oxygenmono/OFL.txt +sha256 1e20933206ca06421c7c378184da5476d195314cf4bcda2bf122cd45d69a956e ofl/oxygen/OFL.txt +sha256 a47e5daeda73568969395c656823102678f2eefb0d7d7ecb47aac4cc17e42204 ofl/pacifico/OFL.txt +sha256 95449a2d36ed919703ee09d3d802e8321b489f20efa1bb375d140f0bb45c98aa ofl/padauk/OFL.txt +sha256 34553405dce90b2a0e6c5a544e3a17a40105473456c1dd028dcce1dc511a099e ofl/padyakkeexpandedone/OFL.txt +sha256 548890e4083028f04e5feba04b6e00554654d840aab81c8664eb66c2216a571b ofl/palanquindark/OFL.txt +sha256 548890e4083028f04e5feba04b6e00554654d840aab81c8664eb66c2216a571b ofl/palanquin/OFL.txt +sha256 3c1a085f9dbd44877f73b0e1e1917ab084eb79828328fba74323c3bcd4171c6a ofl/palettemosaic/OFL.txt +sha256 b4fc1d55ce610f255c5712f8169543f9610536d002deb99bbc99bfbba9f8a560 ofl/pangolin/OFL.txt +sha256 96c9adf4335fee2c0b8028009d85d6bf59e6bde8d378fe589f188b7390eae9ce ofl/paprika/OFL.txt +sha256 1dd84b611f4bed7f9ff9089e76a96337b187e6f283a4ab33bcb987f844f2c4db ofl/parisienne/OFL.txt +sha256 5802c9e3509199c7aa9a13ea410ae27febbc0cdea184bf7d227170fac703bba8 ofl/passeroone/OFL.txt +sha256 36c285c5472c625901d4a13da7e31c5ea6126678d31d56cf95572c49f27c8950 ofl/passionone/OFL.txt +sha256 06d7dd50c2cc2a10cf2b690511b139266051c5cc96548e9c32b4ca5eab3c0e7a ofl/passionsconflict/OFL.txt +sha256 66a018bdb4174781a473d6b26c9873a8b8ed5f5c8086bc18f1532f850f61cacd ofl/pathwayextreme/OFL.txt +sha256 ad4275c6aa3ddcf5ed3f0a788732e13ba57799b1d8deb00de3fc2a928ea70ea2 ofl/pathwaygothicone/OFL.txt +sha256 377f4f9c19e935228552478eb68cc2ed82910988a60ba60e2ac73b09f32d02d1 ofl/patrickhand/OFL.txt +sha256 b554a7f57d54db7857d4d9b8dc56ebd347dc4f857fb4f1ce1a25c332dfbf484c ofl/patrickhandsc/OFL.txt +sha256 72060253bd481a8dc18664bb9117072dc07c0f0270a40617c230654821774850 ofl/pattaya/OFL.txt +sha256 cd2dea62cd4b0c5fb335cf07ff04fd5c4bacb49b8d6c2bbbef9766c663d79b1c ofl/patuaone/OFL.txt +sha256 75a77451968e55a1ab404bd953bd8778983e21116d507b890fbcf838e58c8e8b ofl/pavanam/OFL.txt +sha256 12404fcefccc3cb964cb2406510ba679b30f7d7ae689db08df5b455ae24b3feb ofl/paytoneone/OFL.txt +sha256 9263f9488a9ed1d5f4218581b642e0f054f9a20d208f1a53c19c9f7dbd27eaf2 ofl/peddana/OFL.txt +sha256 e8dd8f53b2fa502ace0636debbe7e357c4888d8d02b8b41d6a9a22d3058a63dc ofl/peralta/OFL.txt +sha256 e8ed3488dac3452e67746a5ebac23bf5cf72a614b606a1f80a81ade4e0e6b03f ofl/petemoss/OFL.txt +sha256 cf5c4103b0ecf3c38e7c26768b5caf05e1b3e16d4d87b32d859b3c19ce7c216c ofl/petitformalscript/OFL.txt +sha256 a889ff77b75be8bcd1456ff147eb9dac647f3eb217fad50fb4877496884f6dcb ofl/petrona/OFL.txt +sha256 6e6efa9b0556d100cfe60690cff5d9be7144df77adabfd2c278dbfee451351ea ofl/phetsarath/OFL.txt +sha256 331c71cbd8f1d8a70cd6eec3d55553b64e6261a9bb0982fa12e6e48baca827c5 ofl/philosopher/OFL.txt +sha256 907fa104d1ab720c2d698e51035593f5e6ea5283bd34a6c7cbdad5d6715e68de ofl/phudu/OFL.txt +sha256 eb54463ef24368895c812c9117e677a59bd2379f80da85515e19b473f310e4ed ofl/piazzolla/OFL.txt +sha256 5b158abb3406e69b7408b562b7199f6ff55a41ea56e260b87176d693b0095e47 ofl/piedra/OFL.txt +sha256 26a2c5433d20b9bffb8b7314d2a91eb0f55492385b66b148559affbe03b6e462 ofl/pinyonscript/OFL.txt +sha256 e8ad3f3de5baeff6bac6e711d8c406e0a6b8a61d2944741532d8965d893a2681 ofl/pirataone/OFL.txt +sha256 b66ba46f511a851ab09998b5a5a9fdbb102545a3864cb993095e1745996873a7 ofl/pixelifysans/OFL.txt +sha256 2400b30a72d2b1555255b81625576dfb552584a19a9c85ad8d43ff77bceab13b ofl/plaster/OFL.txt +sha256 271ad2688ff6199bc86135839c27a980d4cb3d2fae3a68ec01e98cb8b529d953 ofl/playball/OFL.txt +sha256 566be814f8e96e93dfa16101331557eb6b5467e9e03f627c0910fe93ca12300e ofl/playfairdisplay/OFL.txt +sha256 e414e07f7a4da16ed47ebec80d52dd79f21d3ca42bc92385a755d8078a038814 ofl/playfairdisplaysc/OFL.txt +sha256 0d93adc203a3ad4cddc53e18b8241333a92c13ca796b21ef786b9057a6b51978 ofl/playfair/OFL.txt +sha256 6d216cec166b6e139adaa599053dd49720c053e1f2adb4845de3cc9c3704344d ofl/play/OFL.txt +sha256 fe3f3a0bf33f5c06566d2d1192b36c7e364243d7b8ecd8f8a2715760d050a563 ofl/playpensans/OFL.txt +sha256 28f224e2db47301516a1e0839d2ae5bfc0249a40761116dbf0f0b731429143a1 ofl/playwriteco/OFL.txt +sha256 28f224e2db47301516a1e0839d2ae5bfc0249a40761116dbf0f0b731429143a1 ofl/playwritefrtrad/OFL.txt +sha256 28f224e2db47301516a1e0839d2ae5bfc0249a40761116dbf0f0b731429143a1 ofl/playwritegbs/OFL.txt +sha256 995c7199cab65954f545996326755daee7b63cc6b42b06c13da1f9502ab08a99 ofl/plusjakartasans/OFL.txt +sha256 7076d4436e0908702b4dcd94974cdedb01770649b9cc4a13030ea8fb20889d0b ofl/podkova/OFL.txt +sha256 5866fd437bf701cd93f2c41ca2a8b33786975c947bee27882d256b408c9b424a ofl/podkovavfbeta/OFL.txt +sha256 24af1fb3ab8dfeddc83162b7f3b6c1104149b6c3022f1aa948ef4f8ff7e6bf7c ofl/poetsenone/OFL.txt +sha256 708e33bed791c40638926a7577bcef8ff8748f84045f3825277540cbb8d483ba ofl/poiretone/OFL.txt +sha256 de318dcb99e332a746edb9f83180ee206fc3bce74ff96ad7d1cb219967ec74af ofl/pollerone/OFL.txt +sha256 21f7082f0893d6029ff6a2240e047b0f6ed8e8d54d7d1ff5dd947c9f469fbb07 ofl/poltawskinowy/OFL.txt +sha256 56edbe5fff7981dae6f6eff32f61ba04cd54324e5abfa44b1257b2a307ea561c ofl/poly/OFL.txt +sha256 bdce62dd98db969b73f93f8e8e2151004c20ad871ceb15ad9bfcbdf2cf939dba ofl/pompiere/OFL.txt +sha256 6ea7a3ef1d07feb592693f3f22c26d0b09321ff81814292b49be99888d0da9d7 ofl/ponnala/OFL.txt +sha256 a247e9c11f1d488e94c40190b162ac871064dc639c0eae4ebc28013c89b599ec ofl/pontanosans/OFL.txt +sha256 39de3de5f1873f89bca4af37823ab22e28e88d0d8f7fe2f07e82e9e6e9bf7b70 ofl/poorstory/OFL.txt +sha256 6be04893d770899a015649c7aa3b582f871b272f8747a92b78b17c3e5c8b2573 ofl/poppins/OFL.txt +sha256 ac55580be2df22a06d29a47501e2ae11e1d399620f5a779e17a66f016ba6d5ff ofl/portersansblock/OFL.txt +sha256 021d5f1df697848da51620394659187be77cbe382ff2f896bc84ffb89c0c2d52 ofl/portlligatsans/OFL.txt +sha256 e37fcc467040ecd81bf4cf59c99ef56b20f57918995e82b3de1d5b4e931bc2e6 ofl/portlligatslab/OFL.txt +sha256 fe55933bcfad354914050fe0e7c879bd666a623f1e363a651198ac40c271cd26 ofl/pottaone/OFL.txt +sha256 2dab153a33dcb2101bba3f194d27d953c848a0fabf2e336650a81f84a0c33b3f ofl/pragatinarrow/OFL.txt +sha256 2988632106d61639fba8e4a6310da2c4c9376795c9c2e84ad24e23031bf40ecf ofl/praise/OFL.txt +sha256 d10e72fe42afb7abab9185139f761074897e5cfe8d1e1d503ac6cd8dc02fbddf ofl/preahvihear/OFL.txt +sha256 705960c3281a5765ecc0b59bd4ed7ca59eed165748076bc2fc3e8fdbfeb944b0 ofl/pressstart2p/OFL.txt +sha256 1d08c63944e639bbfe8a1b81e3c6a63836806c126b3573b9cda0db83fd27ffe9 ofl/pridi/OFL.txt +sha256 3f0f27931c92453994176af3b1e7954f9aac39fe145374d6d08c47c822e82e59 ofl/princesssofia/OFL.txt +sha256 9ca8b9e5db7184105da255bb110023cf1cce6caa56186341bb7b09ba97b20ba5 ofl/prociono/OFL.txt +sha256 1d08c63944e639bbfe8a1b81e3c6a63836806c126b3573b9cda0db83fd27ffe9 ofl/prompt/OFL.txt +sha256 7039124ec9c84f9d637637da9f80158f0d3681c82d4e6a811053467f7c33d587 ofl/prostoone/OFL.txt +sha256 6828e2435964f939c9276ba052ff55b4ccd155b5fbbae9a16c53b1691531fccf ofl/protestguerrilla/OFL.txt +sha256 6828e2435964f939c9276ba052ff55b4ccd155b5fbbae9a16c53b1691531fccf ofl/protestrevolution/OFL.txt +sha256 6828e2435964f939c9276ba052ff55b4ccd155b5fbbae9a16c53b1691531fccf ofl/protestriot/OFL.txt +sha256 6828e2435964f939c9276ba052ff55b4ccd155b5fbbae9a16c53b1691531fccf ofl/proteststrike/OFL.txt +sha256 a68d8ec6bea7f277053ae93bf563d4b97c233f09f8e79f86ffe5db66f31fdddf ofl/prozalibre/OFL.txt +sha256 511125dc85198375795fdbc109d088654d3b7f9dbd3ccb7bf93d844aef0b153c ofl/ptmono/OFL.txt +sha256 2758cf7a872827f39661cf8cc24188113c030447aefb5ca7145993650076ca8c ofl/ptsanscaption/OFL.txt +sha256 2758cf7a872827f39661cf8cc24188113c030447aefb5ca7145993650076ca8c ofl/ptsansnarrow/OFL.txt +sha256 2758cf7a872827f39661cf8cc24188113c030447aefb5ca7145993650076ca8c ofl/ptsans/OFL.txt +sha256 ddf311c28ddf5a5ad9747649837346b67bed9d356789c3072bb27dbce49e514d ofl/ptserifcaption/OFL.txt +sha256 ddf311c28ddf5a5ad9747649837346b67bed9d356789c3072bb27dbce49e514d ofl/ptserif/OFL.txt +sha256 157a9e77f7580246e97c769490e2e977ae94399f9d30f4556015c41fe8c28bac ofl/publicsans/OFL.txt +sha256 fdc9b4ddc3c811c2ece4c4a11a2126115bc087ec0e1ffbca5f379865a9aa18c9 ofl/puppiesplay/OFL.txt +sha256 5f5dbf452c1657370d9280b50d647212a53c80acae6d78e0b5e8c2b26dc62b09 ofl/puritan/OFL.txt +sha256 89d9d01291eeb91074ccf1f7ce07e7a1d9d421ec1191f8e84d440cb50830ed92 ofl/purplepurse/OFL.txt +sha256 88aece7d90f2bb7049719f11619a560af22af3451af141f12aa4f46bb157a99b ofl/pushster/OFL.txt +sha256 0f1071ef57cf3ed05972b47cc979ed6bb9ce323342f4a07dfd188e49efae3190 ofl/qahiri/OFL.txt +sha256 3747fdcbfe4f51d6a2f101c35105bacde3715b3c32b34b6b03e5fb37983f89fc ofl/quando/OFL.txt +sha256 25995bcf8e8ddea1aafa5449870567cbbeae7e26b27ba30aca5642f2c02e9757 ofl/quantico/OFL.txt +sha256 684ef102ca4c5ff61cf1c1e5c2c6326f3c26f848446f98b8862dcca716a87601 ofl/quattrocento/OFL.txt +sha256 b00c646b7d04a6da1665a148815b8c589c1e05ed7e1febf7ccbd91758747cb03 ofl/quattrocentosans/OFL.txt +sha256 c9bcf9bea97a216657d25325f418f0fe7fd0bc847b3dbb3f1b5a05b207370608 ofl/questrial/OFL.txt +sha256 14d28541780d90f6577bb7abcc6f005bf6969614294e75c82abb8758a696ad46 ofl/quicksand/OFL.txt +sha256 0786594992757ea0290ae4a490ab9249728f372adb13959c0c8ae4fec83057ff ofl/quintessential/OFL.txt +sha256 bff9838fb62b99b45b3b976fdd842f5aa43b02b5f84bd28e949834096c5fffb7 ofl/qwigley/OFL.txt +sha256 893e23589ddf2536380e3ad01f2780c726919566440915971d58faef5247161f ofl/qwitchergrypen/OFL.txt +sha256 cdcc959c42ab255b4cea4bd82f2db5c24a2da7ecabe615d02d5a5dba3716e446 ofl/racingsansone/OFL.txt +sha256 86b4932ef0e19f8fd573ec941c3e121ae80771187ad1b854ae2b52525d452544 ofl/radiocanada/OFL.txt +sha256 a3b0977c5c25101d45054cf9199b9127b05fddc79d4da7dcf400821824e5a6d0 ofl/radley/OFL.txt +sha256 f62ef357d3a1c3d27edd35a6e1ba350e8a8d13499797964eeadefbf0b3b15d1f ofl/rajdhani/OFL.txt +sha256 5c36e7ec460b285185ea23847aa1f508708d9ce15d5c055279defd022972f836 ofl/rakkas/OFL.txt +sha256 e31de7000a2a13b2e54ad01e788fd29e979fe05ea1fded44d6e71cc06e33bb2b ofl/ralewaydots/OFL.txt +sha256 7e946cf1171784d1015279e7dc35f827957a6b5d1f1f659ae0c98e5f5e37ed9b ofl/raleway/OFL.txt +sha256 0c922e2d65050677c26ae8dc501bc9ad3e0059c4b10df2fc9717d7bdacdfeb6d ofl/ramabhadra/OFL.txt +sha256 525411e604e7a1d85a4cd42641869f94388f04a6ed77829d6c4edd7fd740ceab ofl/ramaraja/OFL.txt +sha256 9a9f089005f389717106bb3ba427cda9bd51b8a477078644566543f2a60ca85d ofl/rambla/OFL.txt +sha256 af88d31020bb48a1f78f4384249814d04a44d22feeede2ff4ae79fbb4fcf74da ofl/rammettoone/OFL.txt +sha256 1286896706738557c1fb98f0f66006d4ca675e475d681ca85976fd0da9daa353 ofl/rampartone/OFL.txt +sha256 0fc8e6675568c02aac6b41dd3cccaf2264fc5969601effe68e09b26635879b2c ofl/ranchers/OFL.txt +sha256 8c22fb3866eaebd77a2cb8e8ecbb095381ff32300db57758326fef35a26132f5 ofl/ranga/OFL.txt +sha256 27d2d3c15cded787be66c6f51c4b24bea99863f4f162961b5088e4521c2e2bd5 ofl/rasa/OFL.txt +sha256 064539f87826887d2062b7823b2b97b7625d68b642f6c945c99c0b8dc8084195 ofl/rationale/OFL.txt +sha256 ae629d13b06d9afc5cf3c07d585f3192b89b7decaffc5c4dfcfa7ce11a2a2b11 ofl/raviprakash/OFL.txt +sha256 b41267a3903a45955f77b44596e080480c577fb7221df59672d0bc8cd8cd4b6f ofl/readexpro/OFL.txt +sha256 f9f539cf7549bd417159dbdb9c400943a5b60a7366c2c6fbde9f095173d82479 ofl/recursive/OFL.txt +sha256 ed836da2ff14b9b2d04001057e03c0531afdd2626bf66a612b17124589f58efa ofl/redacted/OFL.txt +sha256 ed836da2ff14b9b2d04001057e03c0531afdd2626bf66a612b17124589f58efa ofl/redactedscript/OFL.txt +sha256 e3477c603c48733e1be829b7611199427e8ec580401635011e59aa29e7277bc7 ofl/redditsans/OFL.txt +sha256 4f1417e27511207cd217656c964f1b0d8b0c4a30156a1a699cf16dc5eba0dff6 ofl/redhatdisplay/OFL.txt +sha256 4f1417e27511207cd217656c964f1b0d8b0c4a30156a1a699cf16dc5eba0dff6 ofl/redhatmono/OFL.txt +sha256 4f1417e27511207cd217656c964f1b0d8b0c4a30156a1a699cf16dc5eba0dff6 ofl/redhattext/OFL.txt +sha256 bb33f381066f9c041fa2266fb634a00b64caedd8301ce80926ba361d9a481464 ofl/redrose/OFL.txt +sha256 fedb204ccadda62524c5467136cef4968b6b67efdc6ca3e8752c1248d81e7f4e ofl/reemkufifun/OFL.txt +sha256 fedb204ccadda62524c5467136cef4968b6b67efdc6ca3e8752c1248d81e7f4e ofl/reemkufiink/OFL.txt +sha256 fedb204ccadda62524c5467136cef4968b6b67efdc6ca3e8752c1248d81e7f4e ofl/reemkufi/OFL.txt +sha256 fbb941b371c6348ee2572ce8c78fb66128a61885f960dec1906c4e44ca4b4d3c ofl/reeniebeanie/OFL.txt +sha256 2756c3dcd85ad997b742330f91332fb478afad302708d4149f7bcd4600543ce2 ofl/reggaeone/OFL.txt +sha256 2366789d24196c55c9a79058d3a56a3e659f0629cad97f47df83ace26396d7d6 ofl/rem/OFL.txt +sha256 453da5aa5ad479f38cfec84f83ea03fa89106e728e286272db8a4198d681a9db ofl/rethinksans/OFL.txt +sha256 a1580ba69a8d706bd95e1e72ee0b5cfda0a478fbbab6a4af13b4a9e1b28faac0 ofl/revalia/OFL.txt +sha256 0886960207bb5bcf81a46ce663bab6c52a742dad80ee2cff5cbcda6f1df88568 ofl/rhodiumlibre/OFL.txt +sha256 9acc45e5ba18b5b38868fad1f51c03df4f5d7a43061d46314843de45c4444233 ofl/ribeyemarrow/OFL.txt +sha256 9acc45e5ba18b5b38868fad1f51c03df4f5d7a43061d46314843de45c4444233 ofl/ribeye/OFL.txt +sha256 1c5bc055869d5e9151ec7774082727db720ec4293c65be67f91a4bdcaeb02998 ofl/righteous/OFL.txt +sha256 33e3a83e377c6a41149044bd919f50d9a971d801052d4e0c0a98cb417b42ae38 ofl/risque/OFL.txt +sha256 b926569d7ff2c695dab9d771f3d9c3ded162f7a5bbac4aaf390d89f1ce0e1a5c ofl/roadrage/OFL.txt +sha256 0e4cc6ece88573545be2ed25835363662a6182ba4a4c1b5c8feda52add30e8a6 ofl/robotocondensed/OFL.txt +sha256 9cbaed04b20c853f99840efe5dc96956f6f6120ed83a0ade35f9281a2b63e5d0 ofl/robotoflex/OFL.txt +sha256 9fb77dcb5cfef0de20f4b1ba296e3127320bcd7cc408ded5f61cd884f7bbb4dc ofl/roboto/OFL.txt +sha256 34dbfbb43e0b4fdeef445d77b9ac0b988e5ad7a9bbf16808c97b66c66d51f553 ofl/robotoserif/OFL.txt +sha256 91595b148d8e476851147257a1234aa4a1dba722424fcdbdfca8965450fb48ad ofl/rock3d/OFL.txt +sha256 b2f42a005a6a48ead81e369021e300184f0cbecb48aee6f831e46c7897f6055b ofl/rocknrollone/OFL.txt +sha256 31501a9490dce395cdb40015237d3684186b79f81dd6a31442d669eb7da81066 ofl/rokkitt/OFL.txt +sha256 e75230ee246a04912366cd8d759d081200d80fb0756766c96dd52f73e8b40bed ofl/romanesco/OFL.txt +sha256 16741ac498178f645283cfb45b7a487b6d361b5de5730c5ea729f056f414f6b0 ofl/ropasans/OFL.txt +sha256 944998f475ee63b332a19137840d9e334c94ec6300f8091a5049a647798ca33a ofl/rosario/OFL.txt +sha256 8a59454b7f1cc0b1fa29805781769047e5c269aa629e3422c2d7fc04b89e5c1f ofl/rosarivo/OFL.txt +sha256 08fdc7cbd92b9bbc4d41d0945ae7f25450d91c5fc8c66c68df331af3505e4ec3 ofl/rougescript/OFL.txt +sha256 67f64c5509e5151796599e3ad47c3131cbe0c80c4f9430b90236a1249c2eacc9 ofl/roundedmplus1c/OFL.txt +sha256 c585309492415154b9ad6401a9e0c5d9e3f9b2e92b71146d968e5bd4305ac74b ofl/rowdies/OFL.txt +sha256 f62ef357d3a1c3d27edd35a6e1ba350e8a8d13499797964eeadefbf0b3b15d1f ofl/rozhaone/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubik80sfade/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikbeastly/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikbrokenfax/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikbubbles/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikburned/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikdirt/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikdistressed/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikdoodleshadow/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikdoodletriangles/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikgemstones/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikglitch/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikglitchpop/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikiso/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubiklines/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikmaps/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikmarkerhatch/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikmaze/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikmicrobe/OFL.txt +sha256 43d530580461a574f6dfed9e15af6a74e95f7c04d9bfa1174a63ff036e8eee07 ofl/rubikmonoone/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikmoonrocks/OFL.txt +sha256 472cbe7c25441df63e9c7864b43eb3c0f4b3df950c66a76224e6cfe1eae843fb ofl/rubik/OFL.txt +sha256 9788e3b3e67f22ab5846a0bb867a230e7df2468c3cd20f730a5d9c34e673d090 ofl/rubikone/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikpixels/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikpuddles/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikscribble/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikspraypaint/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikstorm/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikvinyl/OFL.txt +sha256 f9e2d4498ea80d38bac7b8841d68af68c132fa67e1552e7c05717e6987de1d74 ofl/rubikwetpaint/OFL.txt +sha256 1ac58be64e921818878e02adb0712060d51991cc3341228748ee6055885662aa ofl/ruda/OFL.txt +sha256 ce1108854c91696a8549bb21459f1dc74e8a1ec11664d712c3868c40042f1a8a ofl/rufina/OFL.txt +sha256 028e6aff42d008b81b231919bd68a5508b4b5ba53cab9344ec6eb2cbffc1721c ofl/rugeboogie/OFL.txt +sha256 e604b133509815768e6ec4738bb04844ce9a23e80099d2b61e5d75ef46acbeb0 ofl/ruluko/OFL.txt +sha256 b598b7fddfd578950aa1fe6e0e2607b779abfaa686b83af8ec65c860f646b2cd ofl/rumraisin/OFL.txt +sha256 0dd28b488490429f3037082a331fca8a07d19f2218272f6c4260b196fbffdee1 ofl/ruslandisplay/OFL.txt +sha256 3ac1301549523d9861fedca12871f24e575fbd26d520632fc00ba849b471d275 ofl/russoone/OFL.txt +sha256 b044afdd80638da6bb25da192efe7e72e5d2c0944862d2ecd19f21fc95371199 ofl/ruthie/OFL.txt +sha256 2abc42812053bb5fd07d5f49c98311fef1471c2ff108c372abbbd44cdd4c7759 ofl/ruwudu/OFL.txt +sha256 399b33eb38cdfc76b8665defa5f81d52e8193d630ad5858c893db6bc20031bc9 ofl/rye/OFL.txt +sha256 2e2cb5a98da665f2ab82a9fd01fb18c2337f845761b0c163f690ed65f3b94677 ofl/sacramento/OFL.txt +sha256 9ee6b2ec20a06c599a07412690876eb457bf192c10e886e60d8bdffb80bc21a3 ofl/sahitya/OFL.txt +sha256 55e13d77a4457aa9c60f10c5b97baea3343d3bac30960d49554a033cb9eaff7c ofl/sail/OFL.txt +sha256 0e2ccc5da1dd979f08ba82bca2fb61592506a1e58d3cbfc26d904f0db71bd812 ofl/sairacondensed/OFL.txt +sha256 0e2ccc5da1dd979f08ba82bca2fb61592506a1e58d3cbfc26d904f0db71bd812 ofl/sairaextracondensed/OFL.txt +sha256 f2665d4718b452b3818a877191355ac884a6b9b419d35408fe7ee487e9e8f30f ofl/saira/OFL.txt +sha256 0e2ccc5da1dd979f08ba82bca2fb61592506a1e58d3cbfc26d904f0db71bd812 ofl/sairasemicondensed/OFL.txt +sha256 fc7c16a0d286a351a7de245a0bd661275e9d393de8955c7fa37ef3c8b85b7e3e ofl/sairastencilone/OFL.txt +sha256 31c59bcdd538c113ef5c048f56827439facb12b7e5cfd158b04c83727edc453b ofl/salsa/OFL.txt +sha256 5f8ff4a3f951c104e99245bdb952be08c73369222048bbf19fa3bf7170d10949 ofl/sanchez/OFL.txt +sha256 69f01b79c1be37a734736a94a12c55cb28d09ee93e4febc9db109cec608f9ae7 ofl/sancreek/OFL.txt +sha256 156ea6985861158c7dea63ecaac4c78ab0ed737d168ddffc3e34c687985a033b ofl/sansation/OFL.txt +sha256 0cf28cdcf1cdfd35054352816b2d8c81bd6d6f73632198b61507f26dd4dcbeea ofl/sansita/OFL.txt +sha256 9e0d3db586ba0abf5ca398683809dacdf4c81b2960f592bd085fbf206a67ddb0 ofl/sansitaone/OFL.txt +sha256 e0513f56a7710b94b459ccb7ef77bb7a464e24c777fb2f7023b78af8915dbb86 ofl/sansitaswashed/OFL.txt +sha256 b26cae1321380296ba8311b632a397d5eac11b47197f9d0aa0b9310f1531ad60 ofl/sarabun/OFL.txt +sha256 afb8c471158619593df0fb501453bd39fda42396e2cc3911e2a0a471c11b863c ofl/sarala/OFL.txt +sha256 2cc926050c4c6ccd9a0288b7792e2fcf93e5629ee6269e35986f092275e5a1b9 ofl/sarina/OFL.txt +sha256 f62ef357d3a1c3d27edd35a6e1ba350e8a8d13499797964eeadefbf0b3b15d1f ofl/sarpanch/OFL.txt +sha256 4c28e5c8e904020d010057646481259101cc0d10a6a8e204d8d796f083ecb4c7 ofl/sassyfrass/OFL.txt +sha256 5f247fad3e8a86b6c0779dff09277047c1ce2b0b7580a1093347a8af755352ba ofl/sawarabigothic/OFL.txt +sha256 c254ae01c407f4a2bd0ad163e4c1a795d57ddfa8967c21b8a28c250b44d13963 ofl/sawarabimincho/OFL.txt +sha256 0a852a06f0256a6684662663ccb1d8e08d131abd1f70cf8d972a344cf31aa381 ofl/scada/OFL.txt +sha256 206ce51bc8843a6f95d64ea4c14f24ceaf4dfe199153debc5532b87d1d945d8b ofl/scheherazadenew/OFL.txt +sha256 3b4f3063b6ac7c1e403e2c4a5e8ef3a58190ff83ed7b15af66511858699139ce ofl/schibstedgrotesk/OFL.txt +sha256 b5c776129b160163c84620b35fd45dea45edf49789cda5a94c2290c230581e0b ofl/scopeone/OFL.txt +sha256 3d08baba63f1f2427fd96dee8da30b1ef6c1421b3be0e1f07cc2a78abb27c91d ofl/seaweedscript/OFL.txt +sha256 0b27313ffedb61d9941c5ba17c8b9ef5d2724c6e9aff41cd1ece24baed059eae ofl/secularone/OFL.txt +sha256 eef925ad6afcbba33f7989f5ad826fd68d50cc1ab4d679c52927c8afd40bddf0 ofl/sedan/OFL.txt +sha256 eef925ad6afcbba33f7989f5ad826fd68d50cc1ab4d679c52927c8afd40bddf0 ofl/sedansc/OFL.txt +sha256 f323edc1e5a6d8fa16120aa15367cdfb15468474cc621f9bda1a2f73c5d08d73 ofl/sedgwickavedisplay/OFL.txt +sha256 f323edc1e5a6d8fa16120aa15367cdfb15468474cc621f9bda1a2f73c5d08d73 ofl/sedgwickave/OFL.txt +sha256 a07b444918d700ed5d2e5ca153d3e55035874c24f8ed7a30ee9be026b03a719a ofl/sendflowers/OFL.txt +sha256 1d37e58d4bc1383c5141211bbd5bf123d80aa1d26d5b09dfcbac2bfc2fffb826 ofl/sen/OFL.txt +sha256 473c5e3123102434d05c66a9fc8b19cf285a3bf71cd8a91a41acef44d1448e62 ofl/sevillana/OFL.txt +sha256 444798d79ed7957dd04526095a94b3070f163fe0850e9cf2ec497c758d288bfe ofl/seymourone/OFL.txt +sha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485 ofl/shadowsintolight/OFL.txt +sha256 6a28d4d5d8b4d1ea89ace5a047ac6e0de182acdb8bfa22897bf7702102094f69 ofl/shadowsintolighttwo/OFL.txt +sha256 5f23f1b25bbc73e5886ee2c0863dfc4f3ecb18cb65092bab8e4e8403e3e679e5 ofl/shalimar/OFL.txt +sha256 ebfce7d104d597c385b71e9fbf8f0e2034e73320f857086105dc265b82c05caa ofl/shantellsans/OFL.txt +sha256 bab5a06fe5d0b7ef84a169bc67a6ca90f65e9a13877b84ce564a60b19142ee0c ofl/shanti/OFL.txt +sha256 9d96f445b6e9c701428811d0177f894874f8d6f07ecc30d568c506542368f3ff ofl/share/OFL.txt +sha256 9d96f445b6e9c701428811d0177f894874f8d6f07ecc30d568c506542368f3ff ofl/sharetechmono/OFL.txt +sha256 87b7d831a81fe8b37e7e6c672937493f710ff81883eee3adec7b5423297efd16 ofl/sharetech/OFL.txt +sha256 9ad629515fb62dfc2a831187b260bb53b4fcae1494dd4cb94c2b30da2466da51 ofl/shipporiantiqueb1/OFL.txt +sha256 9ad629515fb62dfc2a831187b260bb53b4fcae1494dd4cb94c2b30da2466da51 ofl/shipporiantique/OFL.txt +sha256 41fba056279be5f45ff9a99e44b7b53897b42732f5806d8e666e0ab49ac6bd38 ofl/shipporiminchob1/OFL.txt +sha256 41fba056279be5f45ff9a99e44b7b53897b42732f5806d8e666e0ab49ac6bd38 ofl/shipporimincho/OFL.txt +sha256 82e1f1ecc4c04924c6490b5a3f03c39feacb81337a45911daa30b758c69df788 ofl/shizuru/OFL.txt +sha256 ee81f11dd1970e9749afd2a572256f8eefce65532872762a4d7a3d5daa0812c8 ofl/shojumaru/OFL.txt +sha256 fe079cdbbad0f6520eb0a8235bce65b21596dd0c4c5a2694b3325cc87313b618 ofl/shortstack/OFL.txt +sha256 325e890b8b26fe0a683c3ba24c506d902bdd7034d9c47bd7fa2bb72b5433b9c9 ofl/shrikhand/OFL.txt +sha256 85814924eca98e1fa530901cc5167d0012aaf31122f9570d7e9755443dd9335b ofl/siemreap/OFL.txt +sha256 75ff072c71b85d17c237e06104b5ff6648095cd62229a321b3bb5750f18df49d ofl/sigmar/OFL.txt +sha256 2db02cb5d05d5f8a003ffefce36a32a16520ad4cab9ed90635ff953b583e4e82 ofl/sigmarone/OFL.txt +sha256 225fa26a24e27536ac01342419a0aa812469f5f2eaf0d79693a5f92904e86571 ofl/signikanegative/OFL.txt +sha256 1ba345a91338581e5f8fccc3e37e447ddea5b99ec9caec1b76c7c39492387d2f ofl/signikanegativesc/OFL.txt +sha256 225fa26a24e27536ac01342419a0aa812469f5f2eaf0d79693a5f92904e86571 ofl/signika/OFL.txt +sha256 1ba345a91338581e5f8fccc3e37e447ddea5b99ec9caec1b76c7c39492387d2f ofl/signikasc/OFL.txt +sha256 86c5e9c9382cdcc5948704fdfe60f2aa164a719746931219a42736ecd9cefbd3 ofl/silkscreen/OFL.txt +sha256 61056041809e0ba18bf8b9d637a375ab1c725025428533d74d668d88b2cb8b89 ofl/simonetta/OFL.txt +sha256 397e83b05703a4240be51e2c3a2be1d0d7693d7a2d8b1ff367c26a2b9afc013e ofl/singleday/OFL.txt +sha256 dd028a807788d5e22e9f8cc18f026cda23369954673658f2ecc7d30bdb364b89 ofl/sintony/OFL.txt +sha256 ca19ac21c7656f493189093eca52b4239fcc5eacc15ab2e3d67cfbfc0e6e443b ofl/sirinstencil/OFL.txt +sha256 95803fae1b063e592c67b5867f1f36df1df526e5ebf33c6cd4d4afa31a9d5586 ofl/sitara/OFL.txt +sha256 29cca754098468057880970c604e55c4e2bcb8479742e4130c94f2ddc0363f9c ofl/sixcaps/OFL.txt +sha256 a5ef1337c7efa6a7dfb4f23ada5dc9319653b60acb34601ed734608608fee39d ofl/sixtyfour/OFL.txt +sha256 593f0bc55c75b673772b378eaee314f128283745c4bb1cfdb9b8012a3b6c46fe ofl/skranji/OFL.txt +sha256 76a55594c9a18b7d94b8119de838237eb834bae4e8c646d6d363aee587b7b427 ofl/slabo13px/OFL.txt +sha256 76a55594c9a18b7d94b8119de838237eb834bae4e8c646d6d363aee587b7b427 ofl/slabo27px/OFL.txt +sha256 7d4c49f4c5e195125c1bbec7b8c6b884b616555cdf7c7101b98b39a766f88945 ofl/slacksideone/OFL.txt +sha256 dc894a2b7d8000fbda9998744f7d47e1fd1b2ab53609c1fb8461d5b3a7d027b8 ofl/smooch/OFL.txt +sha256 fa0b71e1cd04a0ba1b95f17b45dbb2d9072a9a1e7760935dfbde8a3fe8f0402c ofl/smoochsans/OFL.txt +sha256 d849309d514833fe3d7a610e10f6cd5d99b4f9552bfa304969acbf89c66e4422 ofl/smythe/OFL.txt +sha256 89418a3c7b5726c3f8828a7b7c3f1cad661cf5b7a1be3d2bd9ea243f8d9890c8 ofl/sniglet/OFL.txt +sha256 d3909465d5838d9d1c72b975ff1ed4f410a85dccd43801be525bf2b2bde89f92 ofl/snippet/OFL.txt +sha256 cd354a6084383c50398fae709ebe3a5dd98b947c486c1fe9de5f89caf81f980c ofl/snowburstone/OFL.txt +sha256 455397ca15d39e9178bbbf4b485a29187751d60f7ceb7829980a521d5ab6848d ofl/sofadione/OFL.txt +sha256 336fab6956d78eb34b50cd7bc6b16116c44735fbd0bf9f4def769ca4d8e218a9 ofl/sofia/OFL.txt +sha256 3e824d5099202de2c98cbd8e5ecba54da7d220c1ad851330726e65f3e60842d1 ofl/sofiasanscondensed/OFL.txt +sha256 3e824d5099202de2c98cbd8e5ecba54da7d220c1ad851330726e65f3e60842d1 ofl/sofiasansextracondensed/OFL.txt +sha256 3e824d5099202de2c98cbd8e5ecba54da7d220c1ad851330726e65f3e60842d1 ofl/sofiasans/OFL.txt +sha256 3e824d5099202de2c98cbd8e5ecba54da7d220c1ad851330726e65f3e60842d1 ofl/sofiasanssemicondensed/OFL.txt +sha256 5c1dd86fa761f43e8337de5ebe63ad75504423635de752c63a2f1fa93fcfc80c ofl/solitreo/OFL.txt +sha256 00730ae6eab82c336c89e1b9ad751540b032a54c822cc26a0268161fd200b16f ofl/solway/OFL.txt +sha256 495a16e8214dd38dec1b569224d3a740c8f646336877794c492638e3172e8e9c ofl/sometypemono/OFL.txt +sha256 40bd3f35477284c021978816e9d3b8723ff2283fd7065fafaa5bb3004e41b237 ofl/songmyung/OFL.txt +sha256 19d06d19f1720e1873105ce859318099f1a5322361007ce8f5a2b48463c33ad7 ofl/sono/OFL.txt +sha256 6cbe0f55c154b5dee71ca4f2418d69e4e916448ef2ab52dc4541197b292efa24 ofl/sonsieone/OFL.txt +sha256 ba0b9729c9428ba79a0459ab8ec575791b51509dbec213e383d0316d37fec299 ofl/sora/OFL.txt +sha256 ed50ebe2fa922554980909192526fe94966556626d6d440a462c8e7eaed74cdc ofl/sortsmillgoudy/OFL.txt +sha256 e8d0118fa9d640543e7f6848d1d93f47313c7f56b64f73f37291d859cd5932bf ofl/souliyo/OFL.txt +sha256 cb30d3086a8b3ce0b9e3690bf48d6620402b61160bc658076f95180ccd9e9dae ofl/sourcecodepro/OFL.txt +sha256 09746787287a289323b0ec3cff4d1a4a801331b82b7207c1e186f5d26619a392 ofl/sourcesans3/OFL.txt +sha256 564ce565c371c5e5bbf286006565a7c9aa55a9f56e7ca58d56e05d649dd61a72 ofl/spacegrotesk/OFL.txt +sha256 4664e83780a263c53dbab95d3590a5a9db914aeb9a3c78f7e7ad451f9151c998 ofl/spacemono/OFL.txt +sha256 963f283b5410c7df62067a35cd7def0802c583a880e7cd7e326832ec3985ec87 ofl/spectral/OFL.txt +sha256 466aaa3bbd245e4c91c4e82c0828efe9fcfd913f5b020d75f0918516c2540fa8 ofl/spicyrice/OFL.txt +sha256 f938d4076b66a13cf984ce88d92a07ff9802e8ae5e1f4a28cdc43fad122ae611 ofl/spinnaker/OFL.txt +sha256 2c3737ea83b48d48624068d1bbd1d9f8049eb7cf2e1f67435e420375c42e0686 ofl/spirax/OFL.txt +sha256 e2740ec5a5949bf65af5771f0537bf26cc1ec3020782b0e43fd961973a730775 ofl/splash/OFL.txt +sha256 4abb88162e4c0c5f9fc6c2f15d7085f7b7e27fd89f541a13488e1bcb829bde3f ofl/splinesansmono/OFL.txt +sha256 45b2aa0796f435bd620d864b6b44ff08855dc575524f23ffb43161e69cb5dbfc ofl/splinesans/OFL.txt +sha256 d2f9c74aba2716333b0a3d283083f9fdc93b2e060c5ae094c79e97e8cba9d7e6 ofl/squadaone/OFL.txt +sha256 0dbdce2f23073469bc0047c323e259399a76cfec756aa5f0bd1a58f34f438220 ofl/squarepeg/OFL.txt +sha256 f8c2225a5fdb50e2e75f98cf6e69f198571f605f1b7f6f7eacc0947e2fcdbe8d ofl/sreekrushnadevaraya/OFL.txt +sha256 1f00d1f970b4ea469b6936e599b599bb217edaab792e586658ef2e71cf438685 ofl/sriracha/OFL.txt +sha256 4398885e6b303830d81eea03444aae6fb08a44f41b6acd193c88a2f8cd17606e ofl/srisakdi/OFL.txt +sha256 72afba97d1ac9409a9fd3bb91a02a639427ca1988977909dad273e293a508d7e ofl/staatliches/OFL.txt +sha256 d7577acbab1d70f2e6bd1b21d8f61db189d6aabe6375bc2d96564b8d94031664 ofl/stalemate/OFL.txt +sha256 194e25172d0144f29aff4b6fb2931ff0be0139448a5cd867db37863c9179330a ofl/stalinistone/OFL.txt +sha256 88d3abd47414e7912d0d2eb44ca89e0b1bd7c43cc2ebe58a8a75281ad75a0f60 ofl/stardosstencil/OFL.txt +sha256 3800c4515b765a7a1baadb91335aa56ed58d58c86e09ff27a1186902d520b964 ofl/sticknobills/OFL.txt +sha256 35187dd015d0c0006d57f99815fb3f81304c4445f04c3fa35bc533a7a4b00676 ofl/stick/OFL.txt +sha256 fc1e501d419d84a8f1a800adae092045002d7141241f498237611dbb8ea763d7 ofl/stintultracondensed/OFL.txt +sha256 fbc351e1b5428e4f45834647dc23a5f8aaa3e744e2f4117ca03c44f640b9a3a2 ofl/stintultraexpanded/OFL.txt +sha256 0c8825913b60d858aacdb33c4ca6660a7d64b0d6464702efbb19313f5765861a ofl/stixtwomath/OFL.txt +sha256 62c0967a997b9691326d35b1f90baf085a557327b711618bc4161325ce1bb1b2 ofl/stixtwotext/OFL.txt +sha256 a57810cbca0b4715ae8610dd7a268260cebbdd4fd76d304e371517f828150669 ofl/stoke/OFL.txt +sha256 a97ad9dd8228fbe25532616c7f12169501a5445ee33eaa233a5c69c595dfcc97 ofl/strait/OFL.txt +sha256 c8af073a60e30b55ef5d0e4f80cea168e06dd65bdee7ec18c1ea8de8f7228780 ofl/strong/OFL.txt +sha256 47d3c6fc003cb3231297530b79ca108aaa4e504c0008a80fa3dc2ee4a3e8c4a6 ofl/stylescript/OFL.txt +sha256 a9b3e7e1cf5735dc49d802b88b1858a2a50307ba2a877ddf3f0b27d8b1d0abc5 ofl/stylish/OFL.txt +sha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485 ofl/sueellenfrancisco/OFL.txt +sha256 aa8a8196a3e22c3bd985e33cd3245ae9a38accba5e79fc0e3b292612a8d6b337 ofl/suezone/OFL.txt +sha256 aa8a8196a3e22c3bd985e33cd3245ae9a38accba5e79fc0e3b292612a8d6b337 ofl/sulphurpoint/OFL.txt +sha256 c8155eb9337078a9ea9f1e576ac813a03030ca43e2694593e90cd4fee6fce937 ofl/sumana/OFL.txt +sha256 a9b40759b5821a0c2ad07cbd2c2a61dca4b3e222e6370a7d5bfb6b373bf4fb10 ofl/sunflower/OFL.txt +sha256 88dcde7d08e509a3eec64886292a36cbd58ed9bb52f37f91f55656fb9d21ddb8 ofl/supermercadoone/OFL.txt +sha256 c5a77946a56488790364d060628385d51226da62a18f30d2be0181d82ee62b00 ofl/suranna/OFL.txt +sha256 53ad6a474f68ddfc3fe72449de3ede4d3f033b2f24b77833b1d56edf505486d2 ofl/sura/OFL.txt +sha256 42ad5a49e171bec80308a1c9e8e66b03e638b3ea65af7fafa6fc0e42f45e7626 ofl/suravaram/OFL.txt +sha256 f0e7cf380f1f4665979058b18a2f3d7bd4155dffc52dcecf2a6e82f5bd1f46f9 ofl/suwannaphum/OFL.txt +sha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485 ofl/swankyandmoomoo/OFL.txt +sha256 c80622543840e2bc72670a00daef3a6cb1af6fad522d15b9a5d9410733c878b5 ofl/synemono/OFL.txt +sha256 cc43cdce6f91c57989af8459341c276655e34224e954fa69c2ad700831a742d8 ofl/syne/OFL.txt +sha256 c80622543840e2bc72670a00daef3a6cb1af6fad522d15b9a5d9410733c878b5 ofl/synetactile/OFL.txt +sha256 268fac20d46709abff409b4be3847359f30c3ee4c4b7f7e5aa6dd29a4db29f49 ofl/taiheritagepro/OFL.txt +sha256 9b584984f9db0ee30347391a76eff9c0a6b03dc450c3c6afe3757a2cb3a4db87 ofl/tajawal/OFL.txt +sha256 adadb8d5d34fe2218dca0f4a4919a9b6f81dfaebb289e5446ac7b3063d6965e9 ofl/tangerine/OFL.txt +sha256 ade4b61436a9ec043fcb4b2ee823e05d9f6ae38b4aa0e130f62d785805b486fd ofl/tapestry/OFL.txt +sha256 0180c4c3f63f09bf7e740453bc1be09d40583f3884f2f4341facc8af2caf188e ofl/taprom/OFL.txt +sha256 6506b2fa2a14259a8859608a6148a4591d67bbaef4d8e1948b43c4078561b0e5 ofl/tauri/OFL.txt +sha256 1d08c63944e639bbfe8a1b81e3c6a63836806c126b3573b9cda0db83fd27ffe9 ofl/taviraj/OFL.txt +sha256 4a193c54e911c1e8194d4db657423f2527f54a1239f24cb67ecb09128dc9f065 ofl/teko/OFL.txt +sha256 ff4bb37f716836feb5038e1bf5c47e5a1946717fcfabb175086ed49f85ea47fd ofl/tektur/OFL.txt +sha256 5a5cf278190adf8be3e9905c2b21460241cb376c600bdfd6eb7aceb66036c4bf ofl/telex/OFL.txt +sha256 cbdf9d35f32a9a2f02fb23c8b89c115a5a8e45feaaa2266920c4594c83dd5ed4 ofl/tenaliramakrishna/OFL.txt +sha256 7b826efb1b74a50b1c1aef0a1ba4530925b993ceadc3016d1d787c68a61649dd ofl/tenorsans/OFL.txt +sha256 75798d56e448ba4d2aec3ef5f3c2d805d9c6fe2ba688cd3d7162b2dd31e9cf48 ofl/textmeone/OFL.txt +sha256 631ba6504ec2454e472196173aea91c423295787d2128f3732e73fb07a9ea1e0 ofl/texturina/OFL.txt +sha256 9b8405bf5f503f92401fc990f372b34d469670ab60041d5298d1015d3d0b45f8 ofl/thabit/OFL.txt +sha256 59bda6b53e28d388de5eac7bbb8f3e65889dc8489be3d922f95a525354110c0e ofl/tharlon/OFL.txt +sha256 31eb7046f4c80e0f96944c4b40b0772de68b34783b794fc13aab3f54c2ef6d9b ofl/thasadith/OFL.txt +sha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485 ofl/thegirlnextdoor/OFL.txt +sha256 ed90d1f988ede9fa1db0ed42f25db2cf7b47d8f411832205a073c6553d44f98b ofl/thenautigal/OFL.txt +sha256 01af2625d6247ecd2430d1d1603c579f85989d43b2d9129e08e0ac0df8909918 ofl/tienne/OFL.txt +sha256 f62ef357d3a1c3d27edd35a6e1ba350e8a8d13499797964eeadefbf0b3b15d1f ofl/tillana/OFL.txt +sha256 97941703cd5fb1d5e86a062c9463ed12a613dbfbab9961c333699bdb2d277321 ofl/tiltneon/OFL.txt +sha256 97941703cd5fb1d5e86a062c9463ed12a613dbfbab9961c333699bdb2d277321 ofl/tiltprism/OFL.txt +sha256 97941703cd5fb1d5e86a062c9463ed12a613dbfbab9961c333699bdb2d277321 ofl/tiltwarp/OFL.txt +sha256 f2fcbde4b8968400d661e7dcc23052b1885815c8e3b45323b26cbb833352f5de ofl/timmana/OFL.txt +sha256 2ed6051706542c5d6d96480318152b17900bb6d4dbadb11d7d5d6464d8b3e0dd ofl/tirobangla/OFL.txt +sha256 2ed6051706542c5d6d96480318152b17900bb6d4dbadb11d7d5d6464d8b3e0dd ofl/tirodevanagarihindi/OFL.txt +sha256 2ed6051706542c5d6d96480318152b17900bb6d4dbadb11d7d5d6464d8b3e0dd ofl/tirodevanagarimarathi/OFL.txt +sha256 2ed6051706542c5d6d96480318152b17900bb6d4dbadb11d7d5d6464d8b3e0dd ofl/tirodevanagarisanskrit/OFL.txt +sha256 2ed6051706542c5d6d96480318152b17900bb6d4dbadb11d7d5d6464d8b3e0dd ofl/tirogurmukhi/OFL.txt +sha256 2ed6051706542c5d6d96480318152b17900bb6d4dbadb11d7d5d6464d8b3e0dd ofl/tirokannada/OFL.txt +sha256 2ed6051706542c5d6d96480318152b17900bb6d4dbadb11d7d5d6464d8b3e0dd ofl/tirotamil/OFL.txt +sha256 2ed6051706542c5d6d96480318152b17900bb6d4dbadb11d7d5d6464d8b3e0dd ofl/tirotelugu/OFL.txt +sha256 61be7c29f4835e2be7243db12213d75d53ff028f29f4b493212a1688b1d3a1ba ofl/titanone/OFL.txt +sha256 c0562e066174197902a4a10606673d189f067970ef89c6013943b9cf182aadbc ofl/titilliumweb/OFL.txt +sha256 1dd4eaacd1da1bfb7e1d14dd5af0279c17d4503fde55abc628bdaccc63ae9eca ofl/tomorrow/OFL.txt +sha256 8e4050fb74972d5c2021517f5c9bb7d60af585a36e967fa61762225ed77abae1 ofl/tourney/OFL.txt +sha256 018d17b5e04c0a217a21979fa6b6d77bd5a143a5f06ea2ea102e427abd1ebfa2 ofl/tradewinds/OFL.txt +sha256 709f9689eabbab61e913ddc288187e7e3d09550339f7df894a909548f90af814 ofl/trainone/OFL.txt +sha256 1d08c63944e639bbfe8a1b81e3c6a63836806c126b3573b9cda0db83fd27ffe9 ofl/trirong/OFL.txt +sha256 50fc74eff3191af1c918c047600d1e7f15324eb13f7c7c1cbbe43949bb261536 ofl/trispace/OFL.txt +sha256 b5b48b6baf1a46fbe309af924841891869f4aeddda039943b20c623028b6c726 ofl/trocchi/OFL.txt +sha256 72a22b6dd29b6b0cdcc98de30701b46532c9f7314ee095df3063d10775dd70c3 ofl/trochut/OFL.txt +sha256 d4c3f10bf7997331b75c76d40535898729361c589b7301507120fa5582c827f3 ofl/truculenta/OFL.txt +sha256 4bed7eaae70cab1bdf2bcf9b1cb562fcd9cc26d1c3533c4ade0ec70516dfb3a4 ofl/trykker/OFL.txt +sha256 0d268d55bd00b6518d3f136afb63e7f01f49c922b06c4e55dd4a2841d3bd66e6 ofl/tsukimirounded/OFL.txt +sha256 a36ab46c8b1a74a480a1c51d6a5af08b643e870c6d247f233bc97c97c8ad2098 ofl/tuffy/OFL.txt +sha256 6fc386ac48a529b85c21f90a6c8d2111c6271b3063f9ddd78e92645db5259510 ofl/tulpenone/OFL.txt +sha256 b479f3aee0d64914d4d8575bb8d7b901ffbcf9badf0c4ae0cef89ff2df394115 ofl/turretroad/OFL.txt +sha256 bbb2d117979266df4a2178e2ed7d6d03df765bd3a8763733b8446350f109533f ofl/twinklestar/OFL.txt +sha256 44a89ff5fd62cee611cf9c6134ce7db219aeb90703b19db2361dcde648d73918 ofl/uchen/OFL.txt +sha256 31e5d4e83955e7103c34570dd49b0570ef490800bd65b42923c0dd02445263b3 ofl/unbounded/OFL.txt +sha256 244ca4ef7b106d8c660e9a00cecf5d581b6a222f447d7d59a8f61711b2ad3400 ofl/uncialantiqua/OFL.txt +sha256 b0316f404a7b291e40921c605160181065791a5010a2d2d5691fc7e28cdbdff2 ofl/underdog/OFL.txt +sha256 05f4462985eece49ebd278c13ac1011b546e0a9a4675c542b7239edc90df55d4 ofl/unicaone/OFL.txt +sha256 99d2f30e282d6174af8ff68597f58bb53c0dcb2b104a4c1b8d19da49021d00d3 ofl/unifrakturcook/OFL.txt +sha256 96199bf9ff12dd471a66911dee95440737b437e7f5a6fd30e9e950c16d66e8df ofl/unifrakturmaguntia/OFL.txt +sha256 c1cf7f8c4f87824f85386000ea0edd60aa7d4d1a07b87a6e9627149fc9705511 ofl/unlock/OFL.txt +sha256 99d67fff016522688b8f913377f8ae9f6da6ffeae42cf67c0e5e87cfb0928d33 ofl/unna/OFL.txt +sha256 b658a65a9462d5204aaebb6804efacbb0fced61b2d03f7a321f7173aa114b7ab ofl/updock/OFL.txt +sha256 ee1221b1c2d08920e5f9ca764eb228dafa5c8090df9cf665373c2287b9cb8f49 ofl/urbanist/OFL.txt +sha256 7344b8b8c97c4f88c0ff8bb72bb024bba72f404be1c740b6596a73ed15d28df3 ofl/vampiroone/OFL.txt +sha256 5a8751bef5a4fc867ae015099267905034345260f14060fa276aac4051ddd8b4 ofl/varela/OFL.txt +sha256 45446732635812510428bf1bad902a8b133f3c7348ad8593ecca90895595b278 ofl/varelaround/OFL.txt +sha256 291cdb55bc64894f58739446a46e19687574662722ab110c1a2b7e5d435171e0 ofl/varta/OFL.txt +sha256 f1d1a3536fa4b9c71d04fe4c8d8bbfc0cc5c457d6883f45086b04d0bc07ed12d ofl/vastshadow/OFL.txt +sha256 17e355067c8284f47743a1ee3b1ef7ff684ff0601eda357f9353b10b3016ab31 ofl/vazirmatn/OFL.txt +sha256 f3758ee70600ecd5450f01ea373204b202e048d0454c9db2d1175c5a5dd1e92f ofl/vesperlibre/OFL.txt +sha256 1cd4dc67e3c5a349d0121e0d91837cec083559fb94ebf70a8a31601a787f42e3 ofl/viaodalibre/OFL.txt +sha256 34ef6e0045e0798577c79d0ff774efa624e362e7154faa3a5f8ebc93299fd0ab ofl/vibes/OFL.txt +sha256 26e4c39c4905bd7f1068b0bab008f5a4a9b945e2d7fda31e52719fc5aa9655bf ofl/vibur/OFL.txt +sha256 493589852331b4ea83f1d6b0cbdc157b002ffdb995cf2429acf0c9863bc8f3df ofl/victormono/OFL.txt +sha256 36931b77dd81fa96fffad91b6acb54931e600845eb81f91ecf1b4459012c621a ofl/vidaloka/OFL.txt +sha256 b67eed9578defb59cc4ff4b58428fb816786e499e84cdeafca54723b055c169e ofl/viga/OFL.txt +sha256 dc64ddaa4fd815621dc18f538446e7a234e611817f48064dc5f6bfafefc3ed6d ofl/vinasans/OFL.txt +sha256 fd17f80dc48ff767d91d0dd9f821eebfd8b73ee82f55537a9052b6b0107622c8 ofl/voces/OFL.txt +sha256 1c43e70c49ef7a9b35fcb3758fec8ec5969ff1274c4834b4466b9014f3b9f55f ofl/volkhov/OFL.txt +sha256 53f9c99fa3d47f7d632a42ee7bab4a834a60a744f6026d676c3a223cef2b2ef3 ofl/vollkorn/OFL.txt +sha256 53f9c99fa3d47f7d632a42ee7bab4a834a60a744f6026d676c3a223cef2b2ef3 ofl/vollkornsc/OFL.txt +sha256 433e2b7a293f2a47811d032fe45d4f6e20a00bfc676d56e5a1524e4a76ab3b71 ofl/voltaire/OFL.txt +sha256 27d9af34210253e7ca1251fbace86c6f65b40031d6ce1a75493a1b2093631298 ofl/vt323/OFL.txt +sha256 e609059f5600ecaa921d782de1f5072f92c08e5b4868de63be7c98abfd9b4061 ofl/vujahdayscript/OFL.txt +sha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485 ofl/waitingforthesunrise/OFL.txt +sha256 bddfe669338d0dbc24c15ccd31dbf5c101a213da38049c24baca9ccb7fde45a4 ofl/wallpoet/OFL.txt +sha256 11739fc270dbd2ff3d726f5177d2402132fc1bb1455f886e4f084bc13eda665c ofl/warnes/OFL.txt +sha256 eaa2e23b59eb264d9f982126f5d6cb7594b00a6a5e3684d916ecbf0c31004610 ofl/waterbrush/OFL.txt +sha256 d842d4d8ea0c1010050a83d51ed7a5594d55a4a988e89646470454af14e9f624 ofl/waterfall/OFL.txt +sha256 739f76be0415d6176ad32a2ce489350c8e8ccc6862728d9dfacddb9b26054ccd ofl/wavefont/OFL.txt +sha256 4281c00ab5b8f672fc8d686f48cb886ffbe900c8c9ee22473ca7e72e7cef8fbe ofl/wellfleet/OFL.txt +sha256 aff3cea99bf300b4b29f4dc04867cf9b49d83de8c5ecaf991c446d506b56173e ofl/wendyone/OFL.txt +sha256 5a5681c41a0eb58eebe8ce4bad1bc8a088335a362c5d4fe02ca572dcadaae98f ofl/whisper/OFL.txt +sha256 6f375e7f24ae282137aff041b3aa4b8efd8234187f9448b91f436b958cd8edc7 ofl/windsong/OFL.txt +sha256 87b05b85d41a2de76f04dd8efd0f5781db8a498556a6c5d320478903e2329b32 ofl/wireone/OFL.txt +sha256 6ea47aed4703a072a5011bf429f998c718ff7c3ae57598f7e78c2d3fa1e25c33 ofl/wixmadefordisplay/OFL.txt +sha256 6ea47aed4703a072a5011bf429f998c718ff7c3ae57598f7e78c2d3fa1e25c33 ofl/wixmadefortext/OFL.txt +sha256 c46bda9181c8f01cf430e8b4d769a2fa8b19369f9f01b947c0d400939147e700 ofl/workbench/OFL.txt +sha256 749aca05078664ce682dce1b1b10096ac397cb088c1a6df4e1bb56f0092a9272 ofl/worksans/OFL.txt +sha256 ca75fb29ae8e2aa30b8d0a0de74842769cd204634059629521134e2baf791fab ofl/xanhmono/OFL.txt +sha256 f016385cb4b360e7698d22a48c6b58c0634b1ed5c9c17df78515d43887511df6 ofl/yaldevicolombo/OFL.txt +sha256 9d8a27215d55e25527a33cc90f0dfd32e382454cf3b5d8f815f303c9030b42d1 ofl/yaldevi/OFL.txt +sha256 9efbe6f8570e8c3d8b000914bd1da07ff4977d1325cc2d046180e05f40677f01 ofl/yanonekaffeesatz/OFL.txt +sha256 8f2e5a9b52cf355023104413827e17dd7126c5a3656492d45eaa1ceb270aa4f1 ofl/yantramanav/OFL.txt +sha256 71e5222c549d85a1403b6e709b4328b81d7b51ba021b8bd20df89550da80c087 ofl/yatraone/OFL.txt +sha256 d7d8074c2dd46804990c184e25849947ab76c5ac7607fbf3966543455769bb73 ofl/yeonsung/OFL.txt +sha256 ab592d1abca19428b89d851706fa7815ec25139c6affb45d366577ca63fb91b7 ofl/yesevaone/OFL.txt +sha256 a80ee908b60f5bec9c10b135d3da93730e2194107d1f7fd3f61bd8c1a97b3e0c ofl/yesteryear/OFL.txt +sha256 f9e5dfcdb2947c0db70465668706b0617cd052b6f86e582dff8741d9e5cded0a ofl/yinmar/OFL.txt +sha256 de2f50189ab7b6a3ff3563ce680d0984b16942a21a5cef051dd9e7701ea035e1 ofl/yomogi/OFL.txt +sha256 737d8d343b674c6894f373de71a044b6782c130f2aebf180933d63ddf7a3dc19 ofl/youngserif/OFL.txt +sha256 27d2d3c15cded787be66c6f51c4b24bea99863f4f162961b5088e4521c2e2bd5 ofl/yrsa/OFL.txt +sha256 1343b9162a2d24f685767766ea23a75a80b88ba13ba421244e65b72210578b78 ofl/ysabeauinfant/OFL.txt +sha256 1343b9162a2d24f685767766ea23a75a80b88ba13ba421244e65b72210578b78 ofl/ysabeauoffice/OFL.txt +sha256 1343b9162a2d24f685767766ea23a75a80b88ba13ba421244e65b72210578b78 ofl/ysabeau/OFL.txt +sha256 1343b9162a2d24f685767766ea23a75a80b88ba13ba421244e65b72210578b78 ofl/ysabeausc/OFL.txt +sha256 ef7c85c72ae94381c8bc4832ae4e6fbabdeafa2bb8a31313cd75dce95a690256 ofl/yujiboku/OFL.txt +sha256 ef7c85c72ae94381c8bc4832ae4e6fbabdeafa2bb8a31313cd75dce95a690256 ofl/yujihentaiganaakari/OFL.txt +sha256 ef7c85c72ae94381c8bc4832ae4e6fbabdeafa2bb8a31313cd75dce95a690256 ofl/yujihentaiganaakebono/OFL.txt +sha256 ef7c85c72ae94381c8bc4832ae4e6fbabdeafa2bb8a31313cd75dce95a690256 ofl/yujimai/OFL.txt +sha256 ef7c85c72ae94381c8bc4832ae4e6fbabdeafa2bb8a31313cd75dce95a690256 ofl/yujisyuku/OFL.txt +sha256 c74e8c47951ddd9c902f07097761cfa0457993e28d8e1e946e273c0250be77c9 ofl/yuseimagic/OFL.txt +sha256 5d6517d497bea6116ed35079b30374043f6d90b19c8d97fc4e5ec48520d1e08b ofl/zcoolkuaile/OFL.txt +sha256 f1bce31b817dee01c1e4ef8bc45d8ecb95f01f4abbf0a985007cb3cd0fd8123d ofl/zcoolqingkehuangyou/OFL.txt +sha256 a094514ca57cf8f9c5e8d8d1adab5d8cd3a377297ff016f9df2c05b3ecd77f0a ofl/zcoolxiaowei/OFL.txt +sha256 c76594cc8f4af2ea35d1e05278b1911b22cc6227bc3b0ad404f68be03fe3f107 ofl/zenantique/OFL.txt +sha256 c76594cc8f4af2ea35d1e05278b1911b22cc6227bc3b0ad404f68be03fe3f107 ofl/zenantiquesoft/OFL.txt +sha256 31b461a9de7f5b4ceb988b01d6ce4d9318180394cb5dacff5bf08c557f3cb7a0 ofl/zendots/OFL.txt +sha256 0fac78a235c98d640cb06332eb5362c211d86fa03c011df438c35005d22ad2c7 ofl/zenkakugothicantique/OFL.txt +sha256 0fac78a235c98d640cb06332eb5362c211d86fa03c011df438c35005d22ad2c7 ofl/zenkakugothicnew/OFL.txt +sha256 fdfcb596ac910b447e482f42d4d1e5df3cfcb71c681a9f10e7f2d0126b274111 ofl/zenkurenaido/OFL.txt +sha256 5f08909b75e1705f0e0d73b64654f5f1a649f523cad91f58c6777098fc46bf40 ofl/zenloop/OFL.txt +sha256 2a20cf7ce1909d8ee1e949095d340f7d7656705f7c810a2d6faf56800ad0cb3d ofl/zenmarugothic/OFL.txt +sha256 469d214f9842809659c827b7f2adaf40ec0df6efdd5fe18b7127665c32aafaec ofl/zenoldmincho/OFL.txt +sha256 0fe0292d3dc4551c19ea5774d325f5bf434e910d97c8e7eeb47fb7bac6c3a5d1 ofl/zentokyozoo/OFL.txt +sha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485 ofl/zeyada/OFL.txt +sha256 10947328199e369a3e6b4a67e8e5507ed99d5bbb264a1f156415aa9b665e4d15 ofl/zhimangxing/OFL.txt +sha256 3cbf579238e4eacd90ad67883d971aa346ce8990d658635f78f98d608a6830a2 ofl/zillaslabhighlight/OFL.txt +sha256 240b385d3ec8c8d5c1d4af2bbba6ac72bac0309a80c1a8ff112c168643cc6811 ofl/zillaslab/OFL.txt +sha256 2f0015108d68627bd788d313f529c21ff4da2c2c42a5e1f3883acc83480f9002 ufl/ubuntucondensed/LICENCE.txt +sha256 2f0015108d68627bd788d313f529c21ff4da2c2c42a5e1f3883acc83480f9002 ufl/ubuntu/LICENCE.txt +sha256 2f0015108d68627bd788d313f529c21ff4da2c2c42a5e1f3883acc83480f9002 ufl/ubuntumono/LICENCE.txt diff --git a/package/googlefontdirectory/googlefontdirectory.mk b/package/googlefontdirectory/googlefontdirectory.mk new file mode 100644 index 00000000..b0e5b6e5 --- /dev/null +++ b/package/googlefontdirectory/googlefontdirectory.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# googlefontdirectory +# +################################################################################ + +GOOGLEFONTDIRECTORY_VERSION = 2125bc9b447971543caaa132530b828e5e682819 +GOOGLEFONTDIRECTORY_SITE = $(call github,google,fonts,$(GOOGLEFONTDIRECTORY_VERSION)) + +GOOGLEFONTDIRECTORY_FONTS = \ + $(call qstrip,$(BR2_PACKAGE_GOOGLEFONTDIRECTORY_FONTS)) + +ifneq ($(filter apache/%,$(GOOGLEFONTDIRECTORY_FONTS)),) +GOOGLEFONTDIRECTORY_ALL_LICENSES += Apache-2.0 +GOOGLEFONTDIRECTORY_LICENSE_FILES += $(addsuffix /LICENSE.txt,$(filter apache/%,$(GOOGLEFONTDIRECTORY_FONTS))) +endif + +ifneq ($(filter ofl/%,$(GOOGLEFONTDIRECTORY_FONTS)),) +GOOGLEFONTDIRECTORY_ALL_LICENSES += OFL-1.1 +GOOGLEFONTDIRECTORY_LICENSE_FILES += $(addsuffix /OFL.txt,$(filter ofl/%,$(GOOGLEFONTDIRECTORY_FONTS))) +endif + +ifneq ($(filter ufl/%,$(GOOGLEFONTDIRECTORY_FONTS)),) +GOOGLEFONTDIRECTORY_ALL_LICENSES += UFL-1.1 +GOOGLEFONTDIRECTORY_LICENSE_FILES += $(addsuffix /LICENCE.txt,$(filter ufl/%,$(GOOGLEFONTDIRECTORY_FONTS))) +endif + +GOOGLEFONTDIRECTORY_LICENSE = $(subst $(space),$(comma)$(space),$(GOOGLEFONTDIRECTORY_ALL_LICENSES)) + +define GOOGLEFONTDIRECTORY_INSTALL_TARGET_CMDS + $(foreach d,$(GOOGLEFONTDIRECTORY_FONTS), \ + mkdir -p $(TARGET_DIR)/usr/share/fonts/$(notdir $(d)) + $(INSTALL) -m 0644 -t $(TARGET_DIR)/usr/share/fonts/$(notdir $(d)) $(@D)/$(d)/*.ttf + ) +endef + +$(eval $(generic-package)) diff --git a/package/gperf/Config.in b/package/gperf/Config.in new file mode 100644 index 00000000..e6d51fca --- /dev/null +++ b/package/gperf/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_GPERF + bool "gperf" + depends on BR2_INSTALL_LIBSTDCPP + help + A 'perfect hash function' generator + + http://www.gnu.org/software/gperf/ + +comment "gperf needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/gperf/gperf.hash b/package/gperf/gperf.hash new file mode 100644 index 00000000..1ea48c45 --- /dev/null +++ b/package/gperf/gperf.hash @@ -0,0 +1,7 @@ +# Locally calculated after checking pgp signature +# https://ftp.gnu.org/pub/gnu/gperf/gperf-3.1.tar.gz.sig +# with key 93C08C88471097CD +sha256 588546b945bba4b70b6a3a616e80b4ab466e3f33024a352fc2198112cdbb3ae2 gperf-3.1.tar.gz + +# Locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/gperf/gperf.mk b/package/gperf/gperf.mk new file mode 100644 index 00000000..4b928a0e --- /dev/null +++ b/package/gperf/gperf.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# gperf +# +################################################################################ + +GPERF_VERSION = 3.1 +GPERF_SITE = $(BR2_GNU_MIRROR)/gperf +GPERF_LICENSE = GPL-3.0+ +GPERF_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/gpm/0001-Added-musl-support-to-libgpm-and-the-daemon.patch b/package/gpm/0001-Added-musl-support-to-libgpm-and-the-daemon.patch new file mode 100644 index 00000000..1e143e50 --- /dev/null +++ b/package/gpm/0001-Added-musl-support-to-libgpm-and-the-daemon.patch @@ -0,0 +1,69 @@ +From eb0e14f8a5c414603b2e882df54b9fec138104ec Mon Sep 17 00:00:00 2001 +From: Dima Krasner +Date: Wed, 12 Nov 2014 23:06:46 +0200 +Subject: [PATCH] Added musl support to libgpm and the daemon. + +Upstream: https://github.com/telmich/gpm/commit/d88fb1de5803c366ab62f7de9ee5d83207fb2afe +Signed-off-by: Thomas Petazzoni +--- + src/daemon/open_console.c | 1 + + src/prog/display-buttons.c | 1 + + src/prog/display-coords.c | 1 + + src/prog/gpm-root.y | 4 ++-- + 4 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/daemon/open_console.c b/src/daemon/open_console.c +index 98297c9..4d6c0af 100644 +--- a/src/daemon/open_console.c ++++ b/src/daemon/open_console.c +@@ -21,6 +21,7 @@ + + #include /* open and co. */ + #include /* stat() */ ++#include /* major() */ + #include /* ioctl */ + + /* Linux specific (to be outsourced in gpm2 */ +diff --git a/src/prog/display-buttons.c b/src/prog/display-buttons.c +index de8e5b2..38d2f11 100644 +--- a/src/prog/display-buttons.c ++++ b/src/prog/display-buttons.c +@@ -36,6 +36,7 @@ + #include /* printf() */ + #include /* time() */ + #include /* errno */ ++#include /* fd_set and FD_* */ + #include /* gpm information */ + + /* display resulting data */ +diff --git a/src/prog/display-coords.c b/src/prog/display-coords.c +index ed15c8a..411283a 100644 +--- a/src/prog/display-coords.c ++++ b/src/prog/display-coords.c +@@ -37,6 +37,7 @@ + #include /* printf() */ + #include /* time() */ + #include /* errno */ ++#include /* fd_set and FD_* */ + #include /* gpm information */ + + /* display resulting data */ +diff --git a/src/prog/gpm-root.y b/src/prog/gpm-root.y +index 069d801..188ae35 100644 +--- a/src/prog/gpm-root.y ++++ b/src/prog/gpm-root.y +@@ -1199,9 +1199,9 @@ int main(int argc, char **argv) + #if defined(__GLIBC__) + __sigemptyset(&childaction.sa_mask); + #else /* __GLIBC__ */ +- childaction.sa_mask=0; ++ sigemptyset(&childaction.sa_mask); + #endif /* __GLIBC__ */ +- childaction.sa_flags=SA_INTERRUPT; /* need to break the select() call */ ++ childaction.sa_flags=0; + sigaction(SIGCHLD,&childaction,NULL); + + /*....................................... Connect and get your buffer */ +-- +2.1.0 + diff --git a/package/gpm/0002-Install-unversioned-solibrary.patch b/package/gpm/0002-Install-unversioned-solibrary.patch new file mode 100644 index 00000000..5f184dab --- /dev/null +++ b/package/gpm/0002-Install-unversioned-solibrary.patch @@ -0,0 +1,39 @@ +From 06b00d53d8bd513ad5d262dc94a016c6fbf2d3aa Mon Sep 17 00:00:00 2001 +From: Kamil Rytarowski +Date: Sat, 4 May 2013 01:30:17 +0200 +Subject: [PATCH] Install unversioned solibrary + +Unversioned solibraries are shipped with -devel packages in Linux +distros. Generate and install it for the consistency. + +Upstream: https://github.com/telmich/gpm/commit/06b00d53d8bd513ad5d262dc94a016c6fbf2d3aa +Signed-off-by: Bernd Kuhls +--- + src/Makefile.in | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +diff --git a/src/Makefile.in b/src/Makefile.in +index 6b60ad3..7e9e2ef 100644 +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -79,7 +79,7 @@ prog/%: prog/%.o + # | $(SED) '\''s/\($*\)\.o\([ :]*\)/\1.o \1.lo\2/g'\'' > $(DEPDIR)/$@' + + # Do it all! +-all: gpm lib/libgpm.so.@abi_lev@ @LIBGPM_A@ $(PROG) ++all: gpm lib/libgpm.so.@abi_lev@ lib/libgpm.so @LIBGPM_A@ $(PROG) + + gpm: $(GOBJ) + $(CC) @LDFLAGS@ $(LDFLAGS) -o $@ $(GOBJ) @LIBS@ $(LIBS) -lm +@@ -168,9 +168,8 @@ lib/libgpm.so.@abi_full@: $(PICS) + @LDFLAGS@ $(LDFLAGS) -o lib/libgpm.so.@abi_full@ $^ @LIBS@ @SHARED_LIBS@ $(LIBS) + lib/libgpm.so.@abi_lev@: lib/libgpm.so.@abi_full@ + $(LN_S) -f libgpm.so.@abi_full@ lib/libgpm.so.@abi_lev@ +-# unneeded, isn't it? +-#lib/libgpm.so: lib/libgpm.so.@abi_full@ +-# $(LN_S) -f libgpm.so.@abi_full@ lib/libgpm.so ++lib/libgpm.so: lib/libgpm.so.@abi_full@ ++ $(LN_S) -f libgpm.so.@abi_full@ lib/libgpm.so + + include $(DEPFILE) + diff --git a/package/gpm/0003-src-Makefile.in-Really-install-unversioned-solibrary.patch b/package/gpm/0003-src-Makefile.in-Really-install-unversioned-solibrary.patch new file mode 100644 index 00000000..3806fe7e --- /dev/null +++ b/package/gpm/0003-src-Makefile.in-Really-install-unversioned-solibrary.patch @@ -0,0 +1,33 @@ +From 5b83edaa20f6ecf97d16e323be1ed555d8fa2c01 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sat, 20 Feb 2016 17:59:52 +0100 +Subject: [PATCH] src/Makefile.in: Really install unversioned solibrary + +This commit is a follow-up to +https://github.com/telmich/gpm/commit/06b00d53d8bd513ad5d262dc94a016c6fbf2d3aa +which created libgpm.so but failed to include it in the install target. + +Upstream: https://github.com/telmich/gpm/pull/11 + +Signed-off-by: Bernd Kuhls +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + src/Makefile.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/Makefile.in b/src/Makefile.in +index b63e4f4489bd..a1838c300312 100644 +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -115,6 +115,7 @@ install: check + if test "x@SHLIB@" != "x" ; then \ + $(INSTALL_DATA) -m 644 lib/libgpm.so.@abi_full@ $(libdir)/libgpm.so.@abi_full@ ; \ + cd $(libdir) && $(LN_S) -f libgpm.so.@abi_full@ libgpm.so.@abi_lev@ ; \ ++ cd $(libdir) && $(LN_S) -f libgpm.so.@abi_full@ libgpm.so ; \ + echo "WARNING: We installed a lib, you should now call ldconfig" ; \ + echo "f.i.: ldconfig -n -l $(libdir)/libgpm.so.@abi_full@" ; \ + echo "Or to update everything just type ldconfig" ; \ +-- +2.43.0 + diff --git a/package/gpm/0004-Use-sigemptyset-API-instead-of-__sigemptyset.patch b/package/gpm/0004-Use-sigemptyset-API-instead-of-__sigemptyset.patch new file mode 100644 index 00000000..5820d21f --- /dev/null +++ b/package/gpm/0004-Use-sigemptyset-API-instead-of-__sigemptyset.patch @@ -0,0 +1,34 @@ +From fdc42770596e25749f7e2ce0ea97882177397167 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sun, 25 Jun 2017 07:25:33 -0700 +Subject: [PATCH] Use sigemptyset API instead of __sigemptyset + +__sigemptyset has been removed from glibc public +API headers in upcoming (2.26) release onwards + +Signed-off-by: Khem Raj +Upstream: https://github.com/telmich/gpm/commit/fdc42770596e25749f7e2ce0ea97882177397167 +Signed-off-by: Petr Vorel +--- + src/prog/gpm-root.y | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/src/prog/gpm-root.y b/src/prog/gpm-root.y +index 5126c65..76c896c 100644 +--- a/src/prog/gpm-root.y ++++ b/src/prog/gpm-root.y +@@ -1196,11 +1196,7 @@ int main(int argc, char **argv) + LOG_DAEMON : LOG_USER); + /* reap your zombies */ + childaction.sa_handler=reap_children; +-#if defined(__GLIBC__) +- __sigemptyset(&childaction.sa_mask); +-#else /* __GLIBC__ */ + sigemptyset(&childaction.sa_mask); +-#endif /* __GLIBC__ */ + childaction.sa_flags=0; + sigaction(SIGCHLD,&childaction,NULL); + +-- +2.14.2 + diff --git a/package/gpm/0005-fix-building-w-newer-glibc.patch b/package/gpm/0005-fix-building-w-newer-glibc.patch new file mode 100644 index 00000000..839f92f3 --- /dev/null +++ b/package/gpm/0005-fix-building-w-newer-glibc.patch @@ -0,0 +1,33 @@ +From b350aee4ea5785a75cb6ad770f6b768c506ebb70 Mon Sep 17 00:00:00 2001 +From: Mike Frysinger +Date: Mon, 14 Mar 2016 15:39:54 -0400 +Subject: [PATCH] fix building w/newer glibc + +Linux C libraries are looking to disentangle sysmacros.h from the +sys/types.h include, so make sure we pull in the header when it is +found. + +Upstream: https://github.com/telmich/gpm/commit/b350aee4ea5785a75cb6ad770f6b768c506ebb70 +Signed-off-by: Giulio Benetti +--- + src/daemon/open_console.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/daemon/open_console.c b/src/daemon/open_console.c +index 4d6c0af..6dd43e6 100644 +--- a/src/daemon/open_console.c ++++ b/src/daemon/open_console.c +@@ -24,6 +24,10 @@ + #include /* major() */ + #include /* ioctl */ + ++#ifdef HAVE_SYS_SYSMACROS_H ++#include /* major() w/newer glibc */ ++#endif ++ + /* Linux specific (to be outsourced in gpm2 */ + #include /* for serial console check */ + #include /* for serial console check */ +-- +2.17.1 + diff --git a/package/gpm/0006-src-headers-daemon.h-avoid-redefinition-of-last_sele.patch b/package/gpm/0006-src-headers-daemon.h-avoid-redefinition-of-last_sele.patch new file mode 100644 index 00000000..0c8428df --- /dev/null +++ b/package/gpm/0006-src-headers-daemon.h-avoid-redefinition-of-last_sele.patch @@ -0,0 +1,44 @@ +From f04f24dd5ca5c1c13608b144ab66e2ccd47f106a Mon Sep 17 00:00:00 2001 +From: Sergei Trofimovich +Date: Sun, 19 Jan 2020 19:53:41 +0000 +Subject: [PATCH] src/headers/daemon.h: avoid redefinition of + 'last_selection_time' + +Noticed build failure on gcc-10 as: + +``` +gcc -L/home/slyfox/dev/git/gpm/src -o gpm mice.o ... report.o tools.o -lm +ld: twiddler.o:gpm/src/headers/daemon.h:183: + multiple definition of `last_selection_time'; mice.o:gpm/src/headers/daemon.h:183: first defined here +ld: synaptics.o:git/gpm/src/headers/daemon.h:183: + multiple definition of `last_selection_time'; mice.o:git/gpm/src/headers/daemon.h:183: first defined here +``` + +gcc-10 will change the default from -fcommon to fno-common: +https://gcc.gnu.org/PR85678. + +The error also happens if CFLAGS=-fno-common passed explicitly. + +Signed-off-by: Sergei Trofimovich +Upstream: https://github.com/telmich/gpm/commit/f04f24dd5ca5c1c13608b144ab66e2ccd47f106a +Signed-off-by: Heiko Thiery +--- + src/headers/daemon.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/headers/daemon.h b/src/headers/daemon.h +index a8936ad..24a1a97 100644 +--- a/src/headers/daemon.h ++++ b/src/headers/daemon.h +@@ -180,7 +180,7 @@ extern struct mouse_features mouse_table[3], + extern Gpm_Type mice[]; + extern Gpm_Type *repeated_type; + +-time_t last_selection_time; ++extern time_t last_selection_time; + + + +-- +2.20.1 + diff --git a/package/gpm/0007-Add-include-string-h.patch b/package/gpm/0007-Add-include-string-h.patch new file mode 100644 index 00000000..dd7e736e --- /dev/null +++ b/package/gpm/0007-Add-include-string-h.patch @@ -0,0 +1,27 @@ +From 2085cab74a0a84df8b965addf007775a7225c9ec Mon Sep 17 00:00:00 2001 +From: Kurt Nalty <46026992+kurtnalty@users.noreply.github.com> +Date: Sat, 29 Dec 2018 23:47:17 -0600 +Subject: [PATCH] Add include + +Added + line 28, #include /* strcpy, bzero */ +for musl compilation + +Upstream: https://github.com/telmich/gpm/commit/2085cab74a0a84df8b965addf007775a7225c9ec +Signed-off-by: Fabrice Fontaine +--- + src/daemon/old_main.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/daemon/old_main.c b/src/daemon/old_main.c +index 2581e26..ab7a87f 100644 +--- a/src/daemon/old_main.c ++++ b/src/daemon/old_main.c +@@ -25,6 +25,7 @@ + #include /* guess again */ + #include /* guess again */ + #include /* unlink */ ++#include /* strcpy, bzero */ + #include /* chmod */ + + #include /* linux hd* */ diff --git a/package/gpm/Config.in b/package/gpm/Config.in new file mode 100644 index 00000000..11584799 --- /dev/null +++ b/package/gpm/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_GPM + bool "gpm" + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # fork() + help + "gpm" means general purpose mouse (server) and provides mouse + support for Linux virtual consoles. + gpm-root (to draw menus in current virtual console; config + file in /etc/gpm-root.conf) and disable-paste (to disable + paste buffer for security reasons), will also be installed. + + http://www.nico.schottelius.org/software/gpm/ + +if BR2_PACKAGE_GPM + +config BR2_PACKAGE_GPM_INSTALL_TEST_TOOLS + bool "install test tools" + help + Install gpm test tools (get-versions, mev, hltest, mouse-test, + display-buttons & display-coords). + +endif + +comment "gpm mouse server needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + depends on BR2_USE_MMU diff --git a/package/gpm/gpm.hash b/package/gpm/gpm.hash new file mode 100644 index 00000000..fac89318 --- /dev/null +++ b/package/gpm/gpm.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 a955053b36556ffa7c628ce18fd6de7d625966573fa412fb08869533d8f7385c gpm-1.20.7.tar.lzma +sha256 1b2a567f289f66a143c56353e7b3d4fa5862514a5e3c5cfdf8b02ee5e5aaa953 COPYING diff --git a/package/gpm/gpm.mk b/package/gpm/gpm.mk new file mode 100644 index 00000000..69526434 --- /dev/null +++ b/package/gpm/gpm.mk @@ -0,0 +1,72 @@ +################################################################################ +# +# gpm +# +################################################################################ + +GPM_VERSION = 1.20.7 +GPM_SOURCE = gpm-$(GPM_VERSION).tar.lzma +GPM_SITE = http://www.nico.schottelius.org/software/gpm/archives +GPM_LICENSE = GPL-2.0+ +GPM_LICENSE_FILES = COPYING +GPM_SELINUX_MODULES = gpm +GPM_INSTALL_STAGING = YES +GPM_DEPENDENCIES = host-bison + +# if not already installed in staging dir, gpm Makefile may fail to find some +# of the headers needed to generate build dependencies, the first time it is +# built. CPPFLAGS is used to pass the right include path to dependency rules. +GPM_CONF_ENV = \ + CPPFLAGS="$(TARGET_CPPFLAGS) -I$(@D)/src/headers/" \ + ac_cv_path_emacs=no + +# For some reason, Microblaze gcc does not define __ELF__, which gpm +# configure script uses to determine whether the architecture uses ELF +# binaries and therefore can build shared libraries. We fix this by +# telling GPM that ELF is used on Microblaze. +ifeq ($(BR2_microblaze),y) +GPM_CONF_ENV += itz_cv_sys_elf=yes +endif + +# gpm and ncurses have a circular dependency. As gpm function GPM_Wgetch() +# (requiring ncurses) is not recommended for use by ncurses people themselves +# and as it's better to have gpm support in ncurses that the contrary, we force +# gpm to not look after ncurses explicitly. +# http://invisible-island.net/ncurses/ncurses.faq.html#using_gpm_lib +GPM_CONF_OPTS = --without-curses + +# configure is missing but gpm seems not compatible with our autoreconf +# mechanism so we have to do it manually instead of using GPM_AUTORECONF = YES +define GPM_RUN_AUTOGEN + cd $(@D) && PATH=$(BR_PATH) ./autogen.sh +endef +GPM_PRE_CONFIGURE_HOOKS += GPM_RUN_AUTOGEN + +GPM_DEPENDENCIES += host-automake host-autoconf host-libtool + +# gpm tries to build/install .info doc even if makeinfo isn't installed on the +# host, so we have to disable global doc installation to prevent autobuild +# errors. +define GPM_DISABLE_DOC_INSTALL + $(SED) 's/SUBDIRS = src doc contrib/SUBDIRS = src contrib/' \ + $(@D)/Makefile.in +endef +GPM_POST_PATCH_HOOKS += GPM_DISABLE_DOC_INSTALL + +ifeq ($(BR2_PACKAGE_GPM_INSTALL_TEST_TOOLS),) +define GPM_REMOVE_TEST_TOOLS_FROM_TARGET + for tools in mev hltest mouse-test display-buttons \ + get-versions display-coords; do \ + rm -f $(TARGET_DIR)/usr/bin/$$tools ; \ + done +endef +GPM_POST_INSTALL_TARGET_HOOKS += GPM_REMOVE_TEST_TOOLS_FROM_TARGET +endif + +define GPM_INSTALL_GPM_ROOT_CONF_ON_TARGET + $(INSTALL) -m 0644 -D $(@D)/conf/gpm-root.conf $(TARGET_DIR)/etc/ +endef + +GPM_POST_INSTALL_TARGET_HOOKS += GPM_INSTALL_GPM_ROOT_CONF_ON_TARGET + +$(eval $(autotools-package)) diff --git a/package/gpsd/Config.in b/package/gpsd/Config.in new file mode 100644 index 00000000..92a124b8 --- /dev/null +++ b/package/gpsd/Config.in @@ -0,0 +1,248 @@ +comment "gpsd needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +menuconfig BR2_PACKAGE_GPSD + bool "gpsd" + # Uses fork() + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS + # Always tries to build a shared library + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_GPSD_CLIENTS if !BR2_PACKAGE_GPSD_DAEMON \ + && !BR2_PACKAGE_GPSD_PYTHON + help + gpsd is a service daemon that monitors one or more GPSes or + AIS receivers attached to a host computer through serial or + USB ports, making all data on the location/course/velocity of + the sensors available to be queried on TCP port 2947 of the + host computer. + + The D-Bus interface is included if dbus-glib is enabled. + + https://gpsd.gitlab.io/gpsd + +if BR2_PACKAGE_GPSD + +config BR2_PACKAGE_GPSD_DAEMON + bool "gpsd daemon" + default y # legacy + select BR2_PACKAGE_GPSD_CLIENTS + help + Build and install the gpsd daemon itself + +if BR2_PACKAGE_GPSD_DAEMON + +config BR2_PACKAGE_GPSD_DEVICES + string "Where to look for GPSes" + default "/dev/ttyS1" + +comment "Features" + +config BR2_PACKAGE_GPSD_CLIENT_DEBUG + bool "client debugging support" + +config BR2_PACKAGE_GPSD_PROFILING + bool "profiling support" + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on !BR2_aarch64 + # Needs glibc for ARC arc-2018.03-eng007+ for correct __mcount linking + depends on !BR2_arc + +comment "profiling support not available with uClibc-based toolchain" + depends on !BR2_TOOLCHAIN_USES_GLIBC + +config BR2_PACKAGE_GPSD_USER + bool "GPSD privilege revocation user" + +config BR2_PACKAGE_GPSD_USER_VALUE + string "user to run as" + default "nobody" + depends on BR2_PACKAGE_GPSD_USER + +config BR2_PACKAGE_GPSD_GROUP + bool "GPSD privilege revocation group" + +config BR2_PACKAGE_GPSD_GROUP_VALUE + string "group to run as" + default "nobody" + depends on BR2_PACKAGE_GPSD_GROUP + +config BR2_PACKAGE_GPSD_MAX_CLIENT + bool "compile with limited maximum clients" + +config BR2_PACKAGE_GPSD_MAX_CLIENT_VALUE + int "maximum number of clients" + default "10" + depends on BR2_PACKAGE_GPSD_MAX_CLIENT + +config BR2_PACKAGE_GPSD_MAX_DEV + bool "compile with maximum allowed devices" + +config BR2_PACKAGE_GPSD_MAX_DEV_VALUE + int "maximum allowed devices" + default "2" + depends on BR2_PACKAGE_GPSD_MAX_DEV + +config BR2_PACKAGE_GPSD_SQUELCH + bool "squelch gpsd_report and gpsd_hexdump to save cpu" + +comment "Protocols" + +config BR2_PACKAGE_GPSD_AIVDM + bool "Aivdm" + help + Aivdm support + +config BR2_PACKAGE_GPSD_ASHTECH + bool "Ashtech" + help + Ashtech support + +config BR2_PACKAGE_GPSD_EARTHMATE + bool "Earthmate" + help + DeLorme EarthMate Zodiac support + +config BR2_PACKAGE_GPSD_EVERMORE + bool "EverMore" + help + EverMore binary support + +config BR2_PACKAGE_GPSD_FURY + bool "Fury" + help + Jackson Labs Fury and Firefly support + +config BR2_PACKAGE_GPSD_FV18 + bool "FV-18" + help + San Jose Navigation FV-18 support + +config BR2_PACKAGE_GPSD_GARMIN + bool "Garmin (kernel)" + help + Garmin kernel driver support + +config BR2_PACKAGE_GPSD_GARMIN_SIMPLE_TXT + bool "Garmin (simple text)" + help + Garmin Simple Text support + +config BR2_PACKAGE_GPSD_GEOSTAR + bool "Geostar" + help + Geostar Protocol support + +config BR2_PACKAGE_GPSD_GPSCLOCK + bool "GPSClock" + help + GPSClock support + +config BR2_PACKAGE_GPSD_GREIS + bool "Greis" + help + Greis support + +config BR2_PACKAGE_GPSD_ISYNC + bool "iSync" + help + Spectratime iSync LNRClok/GRCLOK support + +config BR2_PACKAGE_GPSD_ITRAX + bool "iTrax" + help + iTrax support + +config BR2_PACKAGE_GPSD_NAVCOM + bool "Navcom" + help + Navcom binary support + +config BR2_PACKAGE_GPSD_NMEA2000 + bool "NMEA2000" + select BR2_PACKAGE_GPSD_NAVCOM + select BR2_PACKAGE_GPSD_AIVDM + help + NMEA2000/CAN support + +config BR2_PACKAGE_GPSD_OCEANSERVER + bool "OceanServer" + help + OceanServer Digital Compass support + +config BR2_PACKAGE_GPSD_ONCORE + bool "OnCore" + help + OnCore support + +config BR2_PACKAGE_GPSD_RTCM104V2 + bool "RTCM104 v2" + help + RTCM104 v2 support + +config BR2_PACKAGE_GPSD_RTCM104V3 + bool "RTCM104 v3" + help + RTCM104 v3 support + +config BR2_PACKAGE_GPSD_SIRF + bool "SiRF" + help + SiRF binary support + +config BR2_PACKAGE_GPSD_SKYTRAQ + bool "Skytraq" + help + Skytraq support + +config BR2_PACKAGE_GPSD_SUPERSTAR2 + bool "SuperStarII" + help + Novatel SuperStarII binary support + +config BR2_PACKAGE_GPSD_TRIMBLE_TSIP + bool "Trimble TSIP" + help + Trimble TSIP support + +config BR2_PACKAGE_GPSD_TRIPMATE + bool "TripMate" + help + Delorme TripMate support + +config BR2_PACKAGE_GPSD_TRUE_NORTH + bool "True North Technologies" + help + True North Technologies support + +config BR2_PACKAGE_GPSD_UBX + bool "UBX" + help + uBlox UBX binary support + +endif # GPSD_DAEMON + +config BR2_PACKAGE_GPSD_CLIENTS + bool "gpsd clients" + default y # legacy + help + Build and install gspd client programs, like: + - gpsctl + - gpsdctl + - gpsdecode + - gpspipe + - ... + +config BR2_PACKAGE_GPSD_PYTHON + bool "build Python support and modules" + depends on BR2_USE_WCHAR # python3 + select BR2_PACKAGE_PYTHON3 + help + Python libraries and tools for the gpsd service daemon + including gpsfake test harness. + +comment "python support needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +endif diff --git a/package/gpsd/S50gpsd b/package/gpsd/S50gpsd new file mode 100644 index 00000000..39bf2320 --- /dev/null +++ b/package/gpsd/S50gpsd @@ -0,0 +1,40 @@ +#!/bin/sh +# +# Starts the gps daemon. +# + +NAME=gpsd +DAEMON=/usr/sbin/$NAME +DEVICES=/dev/ttyS1 +PIDFILE=/var/run/$NAME.pid + +start() { + printf "Starting $NAME: " + start-stop-daemon -S -q -p $PIDFILE --exec $DAEMON -- -P $PIDFILE $DEVICES && echo "OK" || echo "Failed" +} +stop() { + printf "Stopping $NAME: " + start-stop-daemon -K -q -p $PIDFILE && echo "OK" || echo "Failed" + rm -f $PIDFILE +} +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/package/gpsd/br-chrony.conf b/package/gpsd/br-chrony.conf new file mode 100644 index 00000000..67a79e5f --- /dev/null +++ b/package/gpsd/br-chrony.conf @@ -0,0 +1,2 @@ +[Unit] +After=chrony.service diff --git a/package/gpsd/gpsd.hash b/package/gpsd/gpsd.hash new file mode 100644 index 00000000..15e1181e --- /dev/null +++ b/package/gpsd/gpsd.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b368b6a305e3f7a6382d23a0cbfc1d78923060b6b7f54cf7987a73c7b4a9afc2 gpsd-3.25.tar.gz +sha256 fdf339997bbca9eaf507476b82fbcac608fc39a3d89b86b51e16db4c9f933716 COPYING diff --git a/package/gpsd/gpsd.mk b/package/gpsd/gpsd.mk new file mode 100644 index 00000000..8f87766d --- /dev/null +++ b/package/gpsd/gpsd.mk @@ -0,0 +1,259 @@ +################################################################################ +# +# gpsd +# +################################################################################ + +GPSD_VERSION = 3.25 +GPSD_SITE = http://download-mirror.savannah.gnu.org/releases/gpsd +GPSD_LICENSE = BSD-2-Clause +GPSD_LICENSE_FILES = COPYING +GPSD_CPE_ID_VALID = YES +GPSD_SELINUX_MODULES = gpsd +GPSD_INSTALL_STAGING = YES + +GPSD_DEPENDENCIES = host-scons host-pkgconf + +GPSD_LDFLAGS = $(TARGET_LDFLAGS) +GPSD_CFLAGS = $(TARGET_CFLAGS) +GPSD_CXXFLAGS = $(TARGET_CXXFLAGS) + +GPSD_SCONS_ENV = $(TARGET_CONFIGURE_OPTS) + +GPSD_SCONS_OPTS = \ + arch=$(ARCH) \ + manbuild=no \ + prefix=/usr \ + sysroot=$(STAGING_DIR) \ + strip=no \ + qt=no + +ifeq ($(BR2_PACKAGE_NCURSES),y) +GPSD_DEPENDENCIES += ncurses +else +GPSD_SCONS_OPTS += ncurses=no +endif + +# Build libgpsmm if we've got C++ +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +GPSD_LDFLAGS += -lstdc++ +GPSD_CFLAGS += -std=gnu++98 +GPSD_CXXFLAGS += -std=gnu++98 +GPSD_SCONS_OPTS += libgpsmm=yes +else +GPSD_SCONS_OPTS += libgpsmm=no +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y) +GPSD_CFLAGS += -O0 +GPSD_CXXFLAGS += -O0 +endif + +# If libusb is available build it before so the package can use it +ifeq ($(BR2_PACKAGE_LIBUSB),y) +GPSD_DEPENDENCIES += libusb +else +GPSD_SCONS_OPTS += usb=no +endif + +# If bluetooth is available build it before so the package can use it +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y) +GPSD_DEPENDENCIES += bluez5_utils +else +GPSD_SCONS_OPTS += bluez=no +endif + +# If pps-tools is available, build it before so the package can use it +# (HAVE_SYS_TIMEPPS_H). +ifeq ($(BR2_PACKAGE_PPS_TOOLS),y) +GPSD_DEPENDENCIES += pps-tools +endif + +ifeq ($(BR2_PACKAGE_DBUS_GLIB),y) +GPSD_SCONS_OPTS += dbus_export=yes +GPSD_DEPENDENCIES += dbus-glib +endif + +# Protocol support +ifneq ($(BR2_PACKAGE_GPSD_ASHTECH),y) +GPSD_SCONS_OPTS += ashtech=no +endif +ifneq ($(BR2_PACKAGE_GPSD_AIVDM),y) +GPSD_SCONS_OPTS += aivdm=no +endif +ifneq ($(BR2_PACKAGE_GPSD_EARTHMATE),y) +GPSD_SCONS_OPTS += earthmate=no +endif +ifneq ($(BR2_PACKAGE_GPSD_EVERMORE),y) +GPSD_SCONS_OPTS += evermore=no +endif +ifneq ($(BR2_PACKAGE_GPSD_FURY),y) +GPSD_SCONS_OPTS += fury=no +endif +ifneq ($(BR2_PACKAGE_GPSD_FV18),y) +GPSD_SCONS_OPTS += fv18=no +endif +ifneq ($(BR2_PACKAGE_GPSD_GARMIN),y) +GPSD_SCONS_OPTS += garmin=no +endif +ifneq ($(BR2_PACKAGE_GPSD_GARMIN_SIMPLE_TXT),y) +GPSD_SCONS_OPTS += garmintxt=no +endif +ifneq ($(BR2_PACKAGE_GPSD_GEOSTAR),y) +GPSD_SCONS_OPTS += geostar=no +endif +ifneq ($(BR2_PACKAGE_GPSD_GPSCLOCK),y) +GPSD_SCONS_OPTS += gpsclock=no +endif +ifneq ($(BR2_PACKAGE_GPSD_GREIS),y) +GPSD_SCONS_OPTS += greis=no +endif +ifneq ($(BR2_PACKAGE_GPSD_ISYNC),y) +GPSD_SCONS_OPTS += isync=no +endif +ifneq ($(BR2_PACKAGE_GPSD_ITRAX),y) +GPSD_SCONS_OPTS += itrax=no +endif +ifneq ($(BR2_PACKAGE_GPSD_NAVCOM),y) +GPSD_SCONS_OPTS += navcom=no +endif +ifneq ($(BR2_PACKAGE_GPSD_NMEA2000),y) +GPSD_SCONS_OPTS += nmea2000=no +endif +ifneq ($(BR2_PACKAGE_GPSD_OCEANSERVER),y) +GPSD_SCONS_OPTS += oceanserver=no +endif +ifneq ($(BR2_PACKAGE_GPSD_ONCORE),y) +GPSD_SCONS_OPTS += oncore=no +endif +ifneq ($(BR2_PACKAGE_GPSD_RTCM104V2),y) +GPSD_SCONS_OPTS += rtcm104v2=no +endif +ifneq ($(BR2_PACKAGE_GPSD_RTCM104V3),y) +GPSD_SCONS_OPTS += rtcm104v3=no +endif +ifneq ($(BR2_PACKAGE_GPSD_SIRF),y) +GPSD_SCONS_OPTS += sirf=no +endif +ifneq ($(BR2_PACKAGE_GPSD_SKYTRAQ),y) +GPSD_SCONS_OPTS += skytraq=no +endif +ifneq ($(BR2_PACKAGE_GPSD_SUPERSTAR2),y) +GPSD_SCONS_OPTS += superstar2=no +endif +ifneq ($(BR2_PACKAGE_GPSD_TRIMBLE_TSIP),y) +GPSD_SCONS_OPTS += tsip=no +endif +ifneq ($(BR2_PACKAGE_GPSD_TRIPMATE),y) +GPSD_SCONS_OPTS += tripmate=no +endif +ifneq ($(BR2_PACKAGE_GPSD_TRUE_NORTH),y) +GPSD_SCONS_OPTS += tnt=no +endif +ifneq ($(BR2_PACKAGE_GPSD_UBX),y) +GPSD_SCONS_OPTS += ublox=no +endif + +# Features +ifeq ($(BR2_PACKAGE_GPSD_SQUELCH),y) +GPSD_SCONS_OPTS += squelch=yes +endif +ifeq ($(BR2_PACKAGE_GPSD_PROFILING),y) +GPSD_SCONS_OPTS += profiling=yes +endif +ifneq ($(BR2_PACKAGE_GPSD_CLIENT_DEBUG),y) +GPSD_SCONS_OPTS += clientdebug=no +endif +ifeq ($(BR2_PACKAGE_GPSD_USER),y) +GPSD_SCONS_OPTS += gpsd_user=$(BR2_PACKAGE_GPSD_USER_VALUE) +endif +ifeq ($(BR2_PACKAGE_GPSD_GROUP),y) +GPSD_SCONS_OPTS += gpsd_group=$(BR2_PACKAGE_GPSD_GROUP_VALUE) +endif +ifeq ($(BR2_PACKAGE_GPSD_MAX_CLIENT),y) +GPSD_SCONS_OPTS += max_clients=$(BR2_PACKAGE_GPSD_MAX_CLIENT_VALUE) +endif +ifeq ($(BR2_PACKAGE_GPSD_MAX_DEV),y) +GPSD_SCONS_OPTS += max_devices=$(BR2_PACKAGE_GPSD_MAX_DEV_VALUE) +endif + +ifeq ($(BR2_PACKAGE_GPSD_DAEMON),y) +GPSD_SCONS_OPTS += \ + gpsd=yes \ + systemd=$(if $(BR2_INIT_SYSTEMD),yes,no) + +GPSD_INSTALL_RULE = $(if $(BR2_PACKAGE_HAS_UDEV),udev-install,install) + +# When using chrony, wait for after Buildroot's chrony.service +ifeq ($(BR2_PACKAGE_CHRONY),y) +define GPSD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(GPSD_PKGDIR)/br-chrony.conf \ + $(TARGET_DIR)/usr/lib/systemd/system/gpsd.service.d/br-chrony.conf +endef +endif + +define GPSD_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/gpsd/S50gpsd $(TARGET_DIR)/etc/init.d/S50gpsd + $(SED) 's,^DEVICES=.*,DEVICES=$(BR2_PACKAGE_GPSD_DEVICES),' $(TARGET_DIR)/etc/init.d/S50gpsd +endef + +# After the udev rule is installed, make it writable so that this +# package can be re-built/re-installed. +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +define GPSD_INSTALL_UDEV_RULES + chmod u+w $(TARGET_DIR)/lib/udev/rules.d/25-gpsd.rules +endef +GPSD_POST_INSTALL_TARGET_HOOKS += GPSD_INSTALL_UDEV_RULES +endif + +else # GPSD_DAEMON +GPSD_SCONS_OPTS += gpsd=no systemd=no +GPSD_INSTALL_RULE = install +endif + +ifeq ($(BR2_PACKAGE_GPSD_CLIENTS),y) +GPSD_SCONS_OPTS += gpsdclients=yes +else +GPSD_SCONS_OPTS += gpsdclients=no +endif + +ifeq ($(BR2_PACKAGE_GPSD_PYTHON),y) +GPSD_SCONS_OPTS += \ + python=yes \ + python_libdir="/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages" +else +GPSD_SCONS_OPTS += python=no +endif + +GPSD_SCONS_ENV += \ + LDFLAGS="$(GPSD_LDFLAGS)" \ + CFLAGS="$(GPSD_CFLAGS)" \ + CCFLAGS="$(GPSD_CFLAGS)" \ + CXXFLAGS="$(GPSD_CXXFLAGS)" + +define GPSD_BUILD_CMDS + (cd $(@D); \ + $(GPSD_SCONS_ENV) \ + $(SCONS) \ + $(GPSD_SCONS_OPTS)) +endef + +define GPSD_INSTALL_TARGET_CMDS + (cd $(@D); \ + $(GPSD_SCONS_ENV) \ + DESTDIR=$(TARGET_DIR) \ + $(SCONS) \ + $(GPSD_SCONS_OPTS) \ + $(GPSD_INSTALL_RULE)) +endef + +define GPSD_INSTALL_STAGING_CMDS + (cd $(@D); \ + $(GPSD_SCONS_ENV) \ + DESTDIR=$(STAGING_DIR) \ + $(SCONS) \ + $(GPSD_SCONS_OPTS) \ + install) +endef + +$(eval $(generic-package)) diff --git a/package/gptfdisk/0001-gptcurses-partially-revert-Tweaks-for-building-on-th.patch b/package/gptfdisk/0001-gptcurses-partially-revert-Tweaks-for-building-on-th.patch new file mode 100644 index 00000000..02f95453 --- /dev/null +++ b/package/gptfdisk/0001-gptcurses-partially-revert-Tweaks-for-building-on-th.patch @@ -0,0 +1,42 @@ +From 22e69d77d745b42ca85fefdf8c9f7625b852b964 Mon Sep 17 00:00:00 2001 +From: Pierre-Jean Texier +Date: Wed, 26 Feb 2020 22:08:28 +0100 +Subject: [PATCH] gptcurses: partially revert "Tweaks for building on the + latest XCode for macOS" + +This partially reverts commit bbd6b4cc67ffcdf7b2a6bd5008d28006cb147393. + +Fixes: + +| gptcurses.cc:29:10: fatal error: ncursesw/ncurses.h: No such file or directory +| 29 | #include +| | ^~~~~~~~~~~~~~~~~~~~ + +Signed-off-by: Pierre-Jean Texier +[Retrieved from: +https://sourceforge.net/u/texierp/gptfdisk/ci/22e69d77d745b42ca85fefdf8c9f7625b852b964 +Upstream status (with meson build system): +https://sourceforge.net/p/gptfdisk/code/merge-requests/21] +--- + gptcurses.cc | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/gptcurses.cc b/gptcurses.cc +index 1b18cf2..4ebfde1 100644 +--- a/gptcurses.cc ++++ b/gptcurses.cc +@@ -23,11 +23,7 @@ + #include + #include + #include +-#if defined (__APPLE__) || (__FreeBSD__) + #include +-#else +-#include +-#endif + #include "gptcurses.h" + #include "support.h" + +-- +2.26.2 + diff --git a/package/gptfdisk/Config.in b/package/gptfdisk/Config.in new file mode 100644 index 00000000..8d94d2bc --- /dev/null +++ b/package/gptfdisk/Config.in @@ -0,0 +1,47 @@ +comment "gptfdisk needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_GPTFDISK + bool "gptfdisk" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_GPTFDISK_GDISK if \ + !(BR2_PACKAGE_GPTFDISK_SGDISK || BR2_PACKAGE_GPTFDISK_CGDISK) + help + GPT fdisk (consisting of the gdisk and sgdisk programs) is a + text-mode partitioning tool that works on Globally Unique + Identifier (GUID) Partition Table (GPT) disks, rather than on + the more common (through 2010) Master Boot Record (MBR) + partition tables. + + http://www.rodsbooks.com/gdisk/ + +if BR2_PACKAGE_GPTFDISK + +config BR2_PACKAGE_GPTFDISK_GDISK + bool "interactive gdisk" + help + Install the interactive GUID partition table (GPT) manipulator + /usr/sbin/gdisk which is modelled after and quite similar in + use to the traditional MBR based fdisk tool. + +config BR2_PACKAGE_GPTFDISK_SGDISK + bool "command line sgdisk" + select BR2_PACKAGE_POPT + help + Install the command-line GUID partition table (GPT) + manipulator /usr/sbin/sgdisk which is named after the + traditional MBR based sfdisk tool albeit with an entirely + different option syntax. + +config BR2_PACKAGE_GPTFDISK_CGDISK + bool "ncurses cgdisk" + depends on BR2_USE_WCHAR # ncurses wchar + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_NCURSES_WCHAR # needed because of UTF-16 + help + Install the ncurses-based GUID partition table (GPT) + manipulator /usr/sbin/cgdisk. + +endif diff --git a/package/gptfdisk/Config.in.host b/package/gptfdisk/Config.in.host new file mode 100644 index 00000000..1300d024 --- /dev/null +++ b/package/gptfdisk/Config.in.host @@ -0,0 +1,11 @@ +config BR2_PACKAGE_HOST_GPTFDISK + bool "host gptfdisk" + select BR2_PACKAGE_HOST_UTIL_LINUX + help + GPT fdisk (consisting of the gdisk and sgdisk programs) is a + text-mode partitioning tool that works on Globally Unique + Identifier (GUID) Partition Table (GPT) disks, rather than + on the more common (through 2010) Master Boot Record (MBR) + partition tables. + + http://www.rodsbooks.com/gdisk/ diff --git a/package/gptfdisk/gptfdisk.hash b/package/gptfdisk/gptfdisk.hash new file mode 100644 index 00000000..14a8d59a --- /dev/null +++ b/package/gptfdisk/gptfdisk.hash @@ -0,0 +1,5 @@ +# From http://sourceforge.net/projects/gptfdisk/files/gptfdisk/1.0.10/ +sha1 70c0bfe4290c2893fc957ef7f6156c5e74e469fc gptfdisk-1.0.10.tar.gz +# Locally computed +sha256 2abed61bc6d2b9ec498973c0440b8b804b7a72d7144069b5a9209b2ad693a282 gptfdisk-1.0.10.tar.gz +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/package/gptfdisk/gptfdisk.mk b/package/gptfdisk/gptfdisk.mk new file mode 100644 index 00000000..b35899bf --- /dev/null +++ b/package/gptfdisk/gptfdisk.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# gptfdisk +# +################################################################################ + +GPTFDISK_VERSION = 1.0.10 +GPTFDISK_SITE = http://downloads.sourceforge.net/sourceforge/gptfdisk +GPTFDISK_LICENSE = GPL-2.0+ +GPTFDISK_LICENSE_FILES = COPYING + +GPTFDISK_TARGETS_$(BR2_PACKAGE_GPTFDISK_GDISK) += gdisk +GPTFDISK_TARGETS_$(BR2_PACKAGE_GPTFDISK_SGDISK) += sgdisk +GPTFDISK_TARGETS_$(BR2_PACKAGE_GPTFDISK_CGDISK) += cgdisk + +GPTFDISK_DEPENDENCIES += util-linux +GPTFDISK_LDLIBS += -luuid + +ifeq ($(BR2_PACKAGE_GPTFDISK_SGDISK),y) +GPTFDISK_DEPENDENCIES += host-pkgconf popt +GPTFDISK_SGDISK_LDLIBS += `$(PKG_CONFIG_HOST_BINARY) --libs popt` +endif +ifeq ($(BR2_PACKAGE_GPTFDISK_CGDISK),y) +GPTFDISK_DEPENDENCIES += ncurses +endif + +ifeq ($(BR2_STATIC_LIBS),y) +# gptfdisk dependencies may link against libiconv, so we need to do so +# as well when linking statically +ifeq ($(BR2_PACKAGE_LIBICONV),y) +GPTFDISK_DEPENDENCIES += libiconv +GPTFDISK_LDLIBS += -liconv +endif +endif + +define GPTFDISK_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + LDLIBS='$(GPTFDISK_LDLIBS)' \ + SGDISK_LDLIBS='$(GPTFDISK_SGDISK_LDLIBS)' $(GPTFDISK_TARGETS_y) +endef + +define GPTFDISK_INSTALL_TARGET_CMDS + for i in $(GPTFDISK_TARGETS_y); do \ + $(INSTALL) -D -m 0755 $(@D)/$$i $(TARGET_DIR)/usr/sbin/$$i || exit 1; \ + done +endef + +HOST_GPTFDISK_DEPENDENCIES = host-util-linux host-popt + +define HOST_GPTFDISK_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) sgdisk +endef + +define HOST_GPTFDISK_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/sgdisk $(HOST_DIR)/sbin/sgdisk +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/gqrx/Config.in b/package/gqrx/Config.in new file mode 100644 index 00000000..97f0b7de --- /dev/null +++ b/package/gqrx/Config.in @@ -0,0 +1,55 @@ +comment "gqrx needs a toolchain w/ C++, threads, wchar, dynamic library, gcc >= 8" + depends on BR2_USE_MMU # gnuradio + depends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_USE_WCHAR || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_8 + +comment "gqrx needs qt5" + depends on !BR2_PACKAGE_QT5 + +comment "gqrx needs a toolchain not affected by GCC bug 43744" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_43744 + +config BR2_PACKAGE_GQRX + bool "gqrx" + depends on BR2_USE_MMU # gnuradio + depends on !BR2_STATIC_LIBS # gnuradio + depends on BR2_INSTALL_LIBSTDCPP # boost + depends on BR2_TOOLCHAIN_HAS_THREADS # boost + depends on BR2_USE_WCHAR # boost + depends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_PACKAGE_QT5 + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # gnuradio -> boost-atomic + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # gnuradio + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_43744 # gnuradio + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_PROGRAM_OPTIONS + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_GNURADIO + select BR2_PACKAGE_GNURADIO_ANALOG + select BR2_PACKAGE_GNURADIO_AUDIO + select BR2_PACKAGE_GNURADIO_BLOCKS + select BR2_PACKAGE_GNURADIO_DIGITAL + select BR2_PACKAGE_GNURADIO_FFT + select BR2_PACKAGE_GNURADIO_FILTER + select BR2_PACKAGE_GNURADIO_NETWORK + select BR2_PACKAGE_GR_OSMOSDR + select BR2_PACKAGE_LIBSNDFILE + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_WIDGETS + select BR2_PACKAGE_QT5SVG + help + Gqrx is an open source software defined radio (SDR) receiver + implemented using GNU Radio and the Qt GUI + toolkit. Currently it works on Linux and Mac with hardware + supported by gr-osmosdr, including Funcube Dongle, RTL-SDR, + Airspy, HackRF, BladeRF, RFSpace, USRP and SoapySDR. + + Gqrx can operate as an AM/FM/SSB receiver with audio output + or as an FFT-only instrument. There are also various hooks + for interacting with external application using network + sockets. + + http://gqrx.dk/ diff --git a/package/gqrx/gqrx.hash b/package/gqrx/gqrx.hash new file mode 100644 index 00000000..567ff947 --- /dev/null +++ b/package/gqrx/gqrx.hash @@ -0,0 +1,4 @@ +# Locally calculated: +sha256 4a826b468b2fb38a59cbe1f1b566e62c3114509186a7a25ba27dc92833f3eb44 gqrx-2.15.9.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING +sha256 7cc22ce5ee61df62e427ec43b8130de149edee3cafb5af4f18d59b6dc3958faf LICENSE-CTK diff --git a/package/gqrx/gqrx.mk b/package/gqrx/gqrx.mk new file mode 100644 index 00000000..d2518213 --- /dev/null +++ b/package/gqrx/gqrx.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# gqrx +# +################################################################################ + +GQRX_VERSION = 2.15.9 +GQRX_SITE = $(call github,csete,gqrx,v$(GQRX_VERSION)) +GQRX_LICENSE = GPL-3.0+, Apache-2.0 +GQRX_LICENSE_FILES = COPYING LICENSE-CTK +GQRX_DEPENDENCIES = boost gnuradio gr-osmosdr libsndfile qt5base qt5svg + +GQRX_CONF_OPTS = -DLINUX_AUDIO_BACKEND=Gr-audio + +# gqrx can use __atomic builtins, so we need to link with +# libatomic when available +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +GQRX_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic +endif + +$(eval $(cmake-package)) diff --git a/package/gr-osmosdr/Config.in b/package/gr-osmosdr/Config.in new file mode 100644 index 00000000..72d3c3f4 --- /dev/null +++ b/package/gr-osmosdr/Config.in @@ -0,0 +1,52 @@ +config BR2_PACKAGE_GR_OSMOSDR + bool "gr-osmosdr" + depends on BR2_PACKAGE_GNURADIO + select BR2_PACKAGE_GNURADIO_BLOCKS + select BR2_PACKAGE_GNURADIO_FFT + select BR2_PACKAGE_GNURADIO_FILTER + help + GNU Radio block for interfacing with various radio hardware + + http://osmocom.org/projects/osmosdr + +if BR2_PACKAGE_GR_OSMOSDR + +config BR2_PACKAGE_GR_OSMOSDR_IQFILE + bool "IQ File Source support" + help + Enable IQ File Source support + +config BR2_PACKAGE_GR_OSMOSDR_RTLSDR + bool "Osmocom RTLSDR support" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # librtlsdr -> libusb + select BR2_PACKAGE_LIBRTLSDR + help + Enable Osmocom RTLSDR support + +comment "Osmocom RTLSDR support needs a toolchain w/ gcc >= 4.9" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_GR_OSMOSDR_RTLSDR_TCP + bool "RTLSDR TCP Client support" + help + Enable RTLSDR TCP client support + +config BR2_PACKAGE_GR_OSMOSDR_RFSPACE + bool "RFSPACE Receivers support" + help + Enable RFSPACE Receivers support + +config BR2_PACKAGE_GR_OSMOSDR_HACKRF + bool "Osmocom HACKRF support" + depends on !BR2_STATIC_LIBS # hackrf + depends on BR2_TOOLCHAIN_HAS_THREADS # hackrf + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # hackrf + select BR2_PACKAGE_HACKRF + help + Enable Osmocom HACKRF support + +comment "hackrf support needs a toolchain w/ threads, dynamic library, gcc >= 4.9" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +endif diff --git a/package/gr-osmosdr/gr-osmosdr.hash b/package/gr-osmosdr/gr-osmosdr.hash new file mode 100644 index 00000000..b5ac50c4 --- /dev/null +++ b/package/gr-osmosdr/gr-osmosdr.hash @@ -0,0 +1,3 @@ +# Locally calculated: +sha256 28b6f2768aee7b397b227e9e70822e28de3b4c5362a5d14646a0948a48094a63 gr-osmosdr-0.2.4.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/gr-osmosdr/gr-osmosdr.mk b/package/gr-osmosdr/gr-osmosdr.mk new file mode 100644 index 00000000..0d1e4edb --- /dev/null +++ b/package/gr-osmosdr/gr-osmosdr.mk @@ -0,0 +1,66 @@ +################################################################################ +# +# gr-osmosdr +# +################################################################################ + +GR_OSMOSDR_VERSION = 0.2.4 +GR_OSMOSDR_SITE = $(call github,osmocom,gr-osmosdr,v$(GR_OSMOSDR_VERSION)) +GR_OSMOSDR_LICENSE = GPL-3.0+ +GR_OSMOSDR_LICENSE_FILES = COPYING + +# gr-osmosdr prevents doing an in-source-tree build +GR_OSMOSDR_SUPPORTS_IN_SOURCE_BUILD = NO + +GR_OSMOSDR_DEPENDENCIES = gnuradio host-python3 + +GR_OSMOSDR_CONF_OPTS = \ + -DENABLE_DEFAULT=OFF \ + -DENABLE_DOXYGEN=OFF + +# For third-party blocks, the gr-osmosdr libraries are mandatory at +# compile time. +GR_OSMOSDR_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_GNURADIO_PYTHON),y) +GR_OSMOSDR_CONF_OPTS += \ + -DENABLE_PYTHON=ON \ + -DPYTHON_INCLUDE_DIRS=$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR) +GR_OSMOSDR_DEPENDENCIES += python3 host-python-six +else +GR_OSMOSDR_CONF_OPTS += -DENABLE_PYTHON=OFF +endif + +ifeq ($(BR2_PACKAGE_GR_OSMOSDR_IQFILE),y) +GR_OSMOSDR_CONF_OPTS += -DENABLE_FILE=ON +else +GR_OSMOSDR_CONF_OPTS += -DENABLE_FILE=OFF +endif + +ifeq ($(BR2_PACKAGE_GR_OSMOSDR_RTLSDR),y) +GR_OSMOSDR_CONF_OPTS += -DENABLE_RTL=ON +GR_OSMOSDR_DEPENDENCIES += librtlsdr +else +GR_OSMOSDR_CONF_OPTS += -DENABLE_RTL=OFF +endif + +ifeq ($(BR2_PACKAGE_GR_OSMOSDR_RTLSDR_TCP),y) +GR_OSMOSDR_CONF_OPTS += -DENABLE_RTL_TCP=ON +else +GR_OSMOSDR_CONF_OPTS += -DENABLE_RTL_TCP=OFF +endif + +ifeq ($(BR2_PACKAGE_GR_OSMOSDR_RFSPACE),y) +GR_OSMOSDR_CONF_OPTS += -DENABLE_RFSPACE=ON +else +GR_OSMOSDR_CONF_OPTS += -DENABLE_RFSPACE=OFF +endif + +ifeq ($(BR2_PACKAGE_GR_OSMOSDR_HACKRF),y) +GR_OSMOSDR_CONF_OPTS += -DENABLE_HACKRF=ON +GR_OSMOSDR_DEPENDENCIES += hackrf +else +GR_OSMOSDR_CONF_OPTS += -DENABLE_HACKRF=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/granite/Config.in b/package/granite/Config.in new file mode 100644 index 00000000..9519e16d --- /dev/null +++ b/package/granite/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_GRANITE + bool "granite" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libgee + depends on BR2_PACKAGE_LIBGTK3 + select BR2_PACKAGE_LIBGEE + select BR2_PACKAGE_LIBGLIB2 + help + An extension to GTK+ that provides several useful widgets and + classes to ease application development. + + https://github.com/elementary/granite + +comment "granite needs libgtk3 and a toolchain w/ wchar, threads, gcc >= 4.9" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_LIBGTK3 || !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/granite/granite.hash b/package/granite/granite.hash new file mode 100644 index 00000000..7dfc008d --- /dev/null +++ b/package/granite/granite.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 067d31445da9808a802fca523630c3e4b84d2d7c78ae547ced017cb7f3b9c6b5 granite-6.2.0.tar.gz +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 COPYING diff --git a/package/granite/granite.mk b/package/granite/granite.mk new file mode 100644 index 00000000..d5e6b9f4 --- /dev/null +++ b/package/granite/granite.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# granite +# +################################################################################ + +GRANITE_VERSION = 6.2.0 +GRANITE_SITE = $(call github,elementary,granite,$(GRANITE_VERSION)) +GRANITE_DEPENDENCIES = \ + host-pkgconf \ + host-vala \ + libgee \ + libglib2 \ + libgtk3 \ + $(TARGET_NLS_DEPENDENCIES) +GRANITE_INSTALL_STAGING = YES +GRANITE_LICENSE = LGPL-3.0+ +GRANITE_LICENSE_FILES = COPYING +GRANITE_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +GRANITE_CONF_OPTS += -Dintrospection=true +GRANITE_DEPENDENCIES += gobject-introspection +else +GRANITE_CONF_OPTS += -Dintrospection=false +endif + +$(eval $(meson-package)) diff --git a/package/grantlee/Config.in b/package/grantlee/Config.in new file mode 100644 index 00000000..7849cfd9 --- /dev/null +++ b/package/grantlee/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_GRANTLEE + bool "grantlee" + depends on (BR2_PACKAGE_QT5_JSCORE_AVAILABLE && BR2_PACKAGE_QT5) || BR2_PACKAGE_QT6 + select BR2_PACKAGE_QT5SCRIPT if BR2_PACKAGE_QT5 + select BR2_PACKAGE_QT5BASE_GUI if BR2_PACKAGE_QT5 + select BR2_PACKAGE_QT6BASE_GUI if BR2_PACKAGE_QT6 + select BR2_PACKAGE_QT6DECLARATIVE if BR2_PACKAGE_QT6 + help + Qt implementation of the Django template framework + + http://www.grantlee.org diff --git a/package/grantlee/grantlee.hash b/package/grantlee/grantlee.hash new file mode 100644 index 00000000..6ff509f0 --- /dev/null +++ b/package/grantlee/grantlee.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 ba288ae9ed37ec0c3622ceb40ae1f7e1e6b2ea89216ad8587f0863d64be24f06 grantlee-5.3.1.tar.gz + +# Hash for license file +sha256 4c3b163159fe524dc992489c5bc52aaf0231b5ff41fb6234adb7f10373da24c4 COPYING.LIB diff --git a/package/grantlee/grantlee.mk b/package/grantlee/grantlee.mk new file mode 100644 index 00000000..9e786645 --- /dev/null +++ b/package/grantlee/grantlee.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# grantlee +# +################################################################################ + +GRANTLEE_VERSION = 5.3.1 +GRANTLEE_SITE = $(call github,steveire,grantlee,v$(GRANTLEE_VERSION)) +GRANTLEE_INSTALL_STAGING = YES +GRANTLEE_LICENSE = LGPL-2.1+ +GRANTLEE_LICENSE_FILES = COPYING.LIB + +ifeq ($(BR2_PACKAGE_QT5BASE),y) +GRANTLEE_DEPENDENCIES += qt5base qt5script +else ifeq ($(BR2_PACKAGE_QT6BASE),y) +GRANTLEE_DEPENDENCIES += qt6base qt6declarative +GRANTLEE_CONF_OPTS += -DGRANTLEE_BUILD_WITH_QT6=ON +endif + +$(eval $(cmake-package)) diff --git a/package/graphene/Config.in b/package/graphene/Config.in new file mode 100644 index 00000000..60f6073a --- /dev/null +++ b/package/graphene/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_GRAPHENE + bool "graphene" + help + A thin layer of types for graphic libraries. + + https://ebassi.github.io/graphene/ diff --git a/package/graphene/graphene.hash b/package/graphene/graphene.hash new file mode 100644 index 00000000..7d2b5694 --- /dev/null +++ b/package/graphene/graphene.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 922dc109d2dc5dc56617a29bd716c79dd84db31721a8493a13a5f79109a4a4ed graphene-1.10.8.tar.gz +sha256 cfd9fd7b2be592d2c0910d32dc1d8910c08dc0670b1d9ce417a82fa9eb788df9 LICENSE.txt diff --git a/package/graphene/graphene.mk b/package/graphene/graphene.mk new file mode 100644 index 00000000..efdae914 --- /dev/null +++ b/package/graphene/graphene.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# graphene +# +################################################################################ + +GRAPHENE_VERSION = 1.10.8 +GRAPHENE_SITE = $(call github,ebassi,graphene,$(GRAPHENE_VERSION)) +GRAPHENE_LICENSE = MIT +GRAPHENE_LICENSE_FILES = LICENSE.txt +GRAPHENE_INSTALL_STAGING = YES + +GRAPHENE_CONF_OPTS = \ + -Dtests=false \ + -Dinstalled_tests=false \ + -Dgtk_doc=false + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +GRAPHENE_CONF_OPTS += -Dgobject_types=true +GRAPHENE_DEPENDENCIES += libglib2 +else +GRAPHENE_CONF_OPTS += -Dgobject_types=false +endif + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +GRAPHENE_CONF_OPTS += -Dintrospection=enabled +GRAPHENE_DEPENDENCIES += gobject-introspection +else +GRAPHENE_CONF_OPTS += -Dintrospection=disabled +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE2),y) +GRAPHENE_CONF_OPTS += -Dsse2=true +else +GRAPHENE_CONF_OPTS += -Dsse2=false +endif + +ifeq ($(BR2_ARM_CPU_HAS_NEON),y) +GRAPHENE_CONF_OPTS += -Darm_neon=true +else +GRAPHENE_CONF_OPTS += -Darm_neon=false +endif + +$(eval $(meson-package)) diff --git a/package/graphicsmagick/Config.in b/package/graphicsmagick/Config.in new file mode 100644 index 00000000..1e47d673 --- /dev/null +++ b/package/graphicsmagick/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_GRAPHICSMAGICK + bool "graphicsmagick" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + help + GraphicsMagick is the swiss army knife of image processing. + It provides a robust and efficient collection of tools + and libraries which support reading, writing, + and manipulating an image in over 89 major formats + including important formats like DPX, GIF, JPEG, JPEG-2000, + PNG, PDF, PNM, TIFF, and WebP. + + http://www.graphicsmagick.org/ + +comment "graphicsmagick needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/graphicsmagick/graphicsmagick.hash b/package/graphicsmagick/graphicsmagick.hash new file mode 100644 index 00000000..a894aedf --- /dev/null +++ b/package/graphicsmagick/graphicsmagick.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 97dc1a9d4e89c77b25a3b24505e7ff1653b88f9bfe31f189ce10804b8efa7746 GraphicsMagick-1.3.40.tar.xz +sha256 0a20e661de942ebe115a354d0ec6d1d42b93856ea765f813f350a5ce5024cdb7 Copyright.txt diff --git a/package/graphicsmagick/graphicsmagick.mk b/package/graphicsmagick/graphicsmagick.mk new file mode 100644 index 00000000..76b826ce --- /dev/null +++ b/package/graphicsmagick/graphicsmagick.mk @@ -0,0 +1,125 @@ +################################################################################ +# +# graphicsmagick +# +################################################################################ + +GRAPHICSMAGICK_VERSION = 1.3.40 +GRAPHICSMAGICK_SOURCE = GraphicsMagick-$(GRAPHICSMAGICK_VERSION).tar.xz +GRAPHICSMAGICK_SITE = https://downloads.sourceforge.net/project/graphicsmagick/graphicsmagick/$(GRAPHICSMAGICK_VERSION) +GRAPHICSMAGICK_LICENSE = MIT +GRAPHICSMAGICK_LICENSE_FILES = Copyright.txt +GRAPHICSMAGICK_CPE_ID_VENDOR = graphicsmagick + +GRAPHICSMAGICK_INSTALL_STAGING = YES +GRAPHICSMAGICK_CONFIG_SCRIPTS = GraphicsMagick-config GraphicsMagickWand-config + +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +GRAPHICSMAGICK_CONFIG_SCRIPTS += GraphicsMagick++-config +endif + +GRAPHICSMAGICK_CONF_OPTS = \ + --without-dps \ + --without-fpx \ + --without-jbig \ + --without-perl \ + --without-trio \ + --without-wmf \ + --without-x \ + --with-gs-font-dir=/usr/share/fonts/gs + +GRAPHICSMAGICK_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_TOOLCHAIN_HAS_OPENMP),y) +GRAPHICSMAGICK_CONF_OPTS += --enable-openmp +else +GRAPHICSMAGICK_CONF_OPTS += --disable-openmp +endif + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +GRAPHICSMAGICK_CONF_OPTS += --with-ttf +GRAPHICSMAGICK_CONF_ENV += ac_cv_path_freetype_config=$(STAGING_DIR)/usr/bin/freetype-config +GRAPHICSMAGICK_DEPENDENCIES += freetype +else +GRAPHICSMAGICK_CONF_OPTS += --without-ttf +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +GRAPHICSMAGICK_CONF_OPTS += --with-jpeg +GRAPHICSMAGICK_DEPENDENCIES += jpeg +else +GRAPHICSMAGICK_CONF_OPTS += --without-jpeg +endif + +ifeq ($(BR2_PACKAGE_OPENJPEG),y) +GRAPHICSMAGICK_CONF_OPTS += --with-jp2 +GRAPHICSMAGICK_DEPENDENCIES += openjpeg +else +GRAPHICSMAGICK_CONF_OPTS += --without-jp2 +endif + +ifeq ($(BR2_PACKAGE_LCMS2),y) +GRAPHICSMAGICK_CONF_OPTS += --with-lcms2 +GRAPHICSMAGICK_DEPENDENCIES += lcms2 +else +GRAPHICSMAGICK_CONF_OPTS += --without-lcms2 +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +GRAPHICSMAGICK_CONF_OPTS += --with-png +GRAPHICSMAGICK_DEPENDENCIES += libpng +else +GRAPHICSMAGICK_CONF_OPTS += --without-png +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +GRAPHICSMAGICK_CONF_OPTS += --with-xml +GRAPHICSMAGICK_CONF_ENV += ac_cv_path_xml2_config=$(STAGING_DIR)/usr/bin/xml2-config +GRAPHICSMAGICK_DEPENDENCIES += libxml2 +else +GRAPHICSMAGICK_CONF_OPTS += --without-xml +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +GRAPHICSMAGICK_CONF_OPTS += --with-tiff +GRAPHICSMAGICK_DEPENDENCIES += tiff +else +GRAPHICSMAGICK_CONF_OPTS += --without-tiff +endif + +ifeq ($(BR2_PACKAGE_WEBP_MUX),y) +GRAPHICSMAGICK_CONF_OPTS += --with-webp +GRAPHICSMAGICK_DEPENDENCIES += webp +else +GRAPHICSMAGICK_CONF_OPTS += --without-webp +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +GRAPHICSMAGICK_CONF_OPTS += --with-lzma +GRAPHICSMAGICK_DEPENDENCIES += xz +else +GRAPHICSMAGICK_CONF_OPTS += --without-lzma +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +GRAPHICSMAGICK_CONF_OPTS += --with-zlib +GRAPHICSMAGICK_DEPENDENCIES += zlib +else +GRAPHICSMAGICK_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +GRAPHICSMAGICK_CONF_OPTS += --with-bzlib +GRAPHICSMAGICK_DEPENDENCIES += bzip2 +else +GRAPHICSMAGICK_CONF_OPTS += --without-bzlib +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +GRAPHICSMAGICK_CONF_OPTS += --with-zstd +GRAPHICSMAGICK_DEPENDENCIES += zstd +else +GRAPHICSMAGICK_CONF_OPTS += --without-zstd +endif + +$(eval $(autotools-package)) diff --git a/package/graphite2/0001-don-t-install-a-libtool-file-with-static-library.patch b/package/graphite2/0001-don-t-install-a-libtool-file-with-static-library.patch new file mode 100644 index 00000000..ac150622 --- /dev/null +++ b/package/graphite2/0001-don-t-install-a-libtool-file-with-static-library.patch @@ -0,0 +1,67 @@ +From 3edb88b55c0870989778c670d555aa159a2c3abc Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 31 Aug 2020 20:56:43 +0200 +Subject: [PATCH] don't install a libtool file with static library + +Static library is supported since version 1.3.11 and +https://github.com/silnrsi/graphite/commit/2f143c04da5caa43ddf4dba437b2f2bc26bf4238 + +However, graphite2 is still installing libgraphite2.la which contains +incorrect information (i.e. dlname set to libgraphite2.so and +old_library set to ''): + +dlname='libgraphite2.so' + +library_names='libgraphite2.so.3.2.1 libgraphite2.so.3 libgraphite2.so' + +old_library='' + +dependency_libs='' + +This will result in the following build failure with any applications +using this file such as harfbuzz: + +arm-linux-g++.br_real: error: /home/buildroot/autobuild/run/instance-3/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libgraphite2.so: No such file or directory +make[5]: *** [main] Error 1 + +Instead of trying to fix this libtool file, just disable it when +building a static library as it is not needed + +Fixes: + - http://autobuild.buildroot.org/results/9ebe1d11e80755d59190ef2aae82bbba5cc45e44 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/silnrsi/graphite/pull/65] +--- + src/CMakeLists.txt | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index b6ac26bf..a7ace040 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -131,7 +131,9 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + nolib_test(stdc++ $) + endif () + set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "") +- CREATE_LIBTOOL_FILE(graphite2 "/lib${LIB_SUFFIX}") ++ if (BUILD_SHARED_LIBS) ++ CREATE_LIBTOOL_FILE(graphite2 "/lib${LIB_SUFFIX}") ++ endif() + endif() + + if (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") +@@ -146,7 +148,9 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") + include(Graphite) + nolib_test(stdc++ $) + set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "") +- CREATE_LIBTOOL_FILE(graphite2 "/lib${LIB_SUFFIX}") ++ if (BUILD_SHARED_LIBS) ++ CREATE_LIBTOOL_FILE(graphite2 "/lib${LIB_SUFFIX}") ++ endif() + endif() + + if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") +-- +2.28.0 + diff --git a/package/graphite2/Config.in b/package/graphite2/Config.in new file mode 100644 index 00000000..ec92ff7b --- /dev/null +++ b/package/graphite2/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_GRAPHITE2 + bool "graphite2" + depends on BR2_INSTALL_LIBSTDCPP + help + Graphite is a project within SIL's scripts and software dev + groups to provide cross-platform rendering for complex + writing systems. + + https://github.com/silnrsi/graphite + +comment "graphite2 needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/graphite2/graphite2.hash b/package/graphite2/graphite2.hash new file mode 100644 index 00000000..e005375f --- /dev/null +++ b/package/graphite2/graphite2.hash @@ -0,0 +1,4 @@ +# From https://github.com/silnrsi/graphite/releases/download/1.3.14/graphite2-1.3.14.sha256sum +sha256 f99d1c13aa5fa296898a181dff9b82fb25f6cc0933dbaa7a475d8109bd54209d graphite2-1.3.14.tgz +# Locally computed +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 LICENSE diff --git a/package/graphite2/graphite2.mk b/package/graphite2/graphite2.mk new file mode 100644 index 00000000..7f9e3c51 --- /dev/null +++ b/package/graphite2/graphite2.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# graphite2 +# +################################################################################ + +GRAPHITE2_VERSION = 1.3.14 +GRAPHITE2_SOURCE = graphite2-$(GRAPHITE2_VERSION).tgz +GRAPHITE2_SITE = \ + https://github.com/silnrsi/graphite/releases/download/$(GRAPHITE2_VERSION) +GRAPHITE2_INSTALL_STAGING = YES +GRAPHITE2_LICENSE = LGPL-2.1+ +GRAPHITE2_LICENSE_FILES = LICENSE +GRAPHITE2_CPE_ID_VENDOR = sil + +# Avoid building docs and tests to save time +define GRAPHITE2_DISABLE_TESTS_DOC + $(SED) '/^add_subdirectory(doc)/d' \ + -e '/^add_subdirectory(tests)/d' \ + -e '/add_subdirectory(gr2fonttest)/d' \ + $(@D)/CMakeLists.txt +endef +GRAPHITE2_POST_PATCH_HOOKS += GRAPHITE2_DISABLE_TESTS_DOC + +$(eval $(cmake-package)) diff --git a/package/grep/Config.in b/package/grep/Config.in new file mode 100644 index 00000000..665c05c0 --- /dev/null +++ b/package/grep/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_GREP + bool "grep" + depends on BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + The GNU regular expression matcher. + + egrep/fgrep aliases need /bin/sh to be available. + + http://www.gnu.org/software/grep/grep.html + +comment "grep needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/package/grep/grep.hash b/package/grep/grep.hash new file mode 100644 index 00000000..a0028a4e --- /dev/null +++ b/package/grep/grep.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking signature +# https://ftp.gnu.org/gnu/grep/grep-3.11.tar.xz.sig +# using key 155D3FC500C834486D1EEA677FD9FCCB000BEEEE +sha256 1db2aedde89d0dea42b16d9528f894c8d15dae4e190b59aecc78f5a951276eab grep-3.11.tar.xz +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 COPYING diff --git a/package/grep/grep.mk b/package/grep/grep.mk new file mode 100644 index 00000000..61900bb9 --- /dev/null +++ b/package/grep/grep.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# grep +# +################################################################################ + +GREP_VERSION = 3.11 +GREP_SITE = $(BR2_GNU_MIRROR)/grep +GREP_SOURCE = grep-$(GREP_VERSION).tar.xz +GREP_LICENSE = GPL-3.0+ +GREP_LICENSE_FILES = COPYING +GREP_CPE_ID_VENDOR = gnu +GREP_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) +# install into /bin like busybox grep +GREP_CONF_OPTS = --exec-prefix=/ + +ifeq ($(BR2_SYSTEM_BIN_SH_NONE),y) + +define GREP_REMOVE_ALIAS + $(RM) $(TARGET_DIR)/bin/[fe]grep +endef +GREP_POST_INSTALL_TARGET_HOOKS += GREP_REMOVE_ALIAS + +else + +# ensure egrep/fgrep shell wrappers use #!/bin/sh +define GREP_FIXUP_SHEBANG + $(SED) 's/bash$$/sh/' $(TARGET_DIR)/bin/[fe]grep +endef +GREP_POST_INSTALL_TARGET_HOOKS += GREP_FIXUP_SHEBANG + +endif + +# link with iconv if enabled +ifeq ($(BR2_PACKAGE_LIBICONV),y) +GREP_CONF_ENV += LIBS=-liconv +GREP_DEPENDENCIES += libiconv +endif + +# link with pcre if enabled +ifeq ($(BR2_PACKAGE_PCRE2),y) +GREP_CONF_OPTS += --enable-perl-regexp +GREP_DEPENDENCIES += pcre2 +else +GREP_CONF_OPTS += --disable-perl-regexp +endif + +$(eval $(autotools-package)) diff --git a/package/grpc/0001-Properly-detect-the-availability-of-pthread_setname_.patch b/package/grpc/0001-Properly-detect-the-availability-of-pthread_setname_.patch new file mode 100644 index 00000000..92dc5a6c --- /dev/null +++ b/package/grpc/0001-Properly-detect-the-availability-of-pthread_setname_.patch @@ -0,0 +1,66 @@ +From 0dfb289a3b362b082ac3608d887e42f09dadc0d2 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 31 Dec 2018 16:22:07 +0100 +Subject: [PATCH] Properly detect the availability of pthread_setname_np() + +This commit adds a CMake check for the availability of +pthread_setname_np(), and only uses it on Linux when available. + +Indeed, some C libraries, such as uClibc, do not provide this +non-POSIX function in all cases. + +Upstream: https://github.com/grpc/grpc/pull/17610 +Signed-off-by: Thomas Petazzoni + +[buildroot@heine.tech: + 1.42.0 added new logic to handle older glibc without pthread_setname_np() + but is still not sufficient for all cases. So alter the patch to wrap all + this with our cmake based workaround. + See: https://github.com/grpc/grpc/pull/27540 +] +Signed-off-by: Michael Nosthoff +--- + CMakeLists.txt | 6 ++++++ + include/grpc/impl/codegen/port_platform.h | 2 ++ + 2 files changed, 8 insertions(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 45c2fcb..0b2be4f 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -208,6 +208,12 @@ if (NOT DEFINED CMAKE_POSITION_INDEPENDENT_CODE) + endif() + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules") + ++include(CheckSymbolExists) ++check_symbol_exists(pthread_setname_np pthread.h HAVE_PTHREAD_SETNAME_NP) ++if (HAVE_PTHREAD_SETNAME_NP) ++ add_definitions(-DHAVE_PTHREAD_SETNAME_NP) ++endif () ++ + if(MSVC) + include(cmake/msvc_static_runtime.cmake) + add_definitions(-D_WIN32_WINNT=0x600 -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINSOCK_DEPRECATED_NO_WARNINGS) +diff --git a/include/grpc/impl/codegen/port_platform.h b/include/grpc/impl/codegen/port_platform.h +index 4f213ff..55ecd9d 100644 +--- a/include/grpc/impl/codegen/port_platform.h ++++ b/include/grpc/impl/codegen/port_platform.h +@@ -186,6 +186,7 @@ + #endif /* _LP64 */ + #ifdef __GLIBC__ + #define GPR_POSIX_CRASH_HANDLER 1 ++#if defined(HAVE_PTHREAD_SETNAME_NP) + #ifdef __GLIBC_PREREQ + #if __GLIBC_PREREQ(2, 12) + #define GPR_LINUX_PTHREAD_NAME 1 +@@ -194,6 +195,7 @@ + // musl libc & others + #define GPR_LINUX_PTHREAD_NAME 1 + #endif ++#endif /* HAVE_PTHREAD_SETNAME_NP */ + #include + #else /* musl libc */ + #define GPR_MUSL_LIBC_COMPAT 1 + +-- +2.26.63 diff --git a/package/grpc/0002-wrap_memcpy.cc-add-GPR_DISABLE_WRAPPED_MEMCPY.patch b/package/grpc/0002-wrap_memcpy.cc-add-GPR_DISABLE_WRAPPED_MEMCPY.patch new file mode 100644 index 00000000..aac92bab --- /dev/null +++ b/package/grpc/0002-wrap_memcpy.cc-add-GPR_DISABLE_WRAPPED_MEMCPY.patch @@ -0,0 +1,34 @@ +From be030314805137cd63b46ea6eaa702b608669910 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 2 Jun 2019 17:45:47 +0200 +Subject: [PATCH] wrap_memcpy.cc: add GPR_DISABLE_WRAPPED_MEMCPY + +Add GPR_DISABLE_WRAPPED_MEMCPY to allow the user to disable wrapped +memcpy. This will fix build on x86_64 on musl/uclibc without changing +the cpu behavior. + +Fixes: + - http://autobuild.buildroot.org/results/20d6f2489a4e291a53bd514da66105eb607e1014 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/grpc/grpc/pull/19207] +--- + src/core/lib/gpr/wrap_memcpy.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/core/lib/gpr/wrap_memcpy.cc b/src/core/lib/gpr/wrap_memcpy.cc +index 9b8608e056..38b76acf95 100644 +--- a/src/core/lib/gpr/wrap_memcpy.cc ++++ b/src/core/lib/gpr/wrap_memcpy.cc +@@ -29,7 +29,7 @@ + extern "C" { + #ifdef __linux__ + #if defined(__x86_64__) && !defined(GPR_MUSL_LIBC_COMPAT) && \ +- !defined(__ANDROID__) ++ !defined(__ANDROID__) && !defined(GPR_DISABLE_WRAPPED_MEMCPY) + __asm__(".symver memcpy,memcpy@GLIBC_2.2.5"); + void* __wrap_memcpy(void* destination, const void* source, size_t num) { + return memcpy(destination, source, num); +-- +2.20.1 + diff --git a/package/grpc/0003-host-grpc-only-cpp-plugin.patch b/package/grpc/0003-host-grpc-only-cpp-plugin.patch new file mode 100644 index 00000000..bfb87130 --- /dev/null +++ b/package/grpc/0003-host-grpc-only-cpp-plugin.patch @@ -0,0 +1,209 @@ +From 0f2c73b62bdc612f9d5cdd8e0c765995470d4f8b Mon Sep 17 00:00:00 2001 +From: Thomas De Schampheleire +Date: Tue, 25 May 2021 14:55:23 +0200 +Subject: [PATCH] Add option to restrict building of (host-)grpc to + grpc_cpp_plugin only. + +This avoids unnecessary dependencies on big packages like libabseil-cpp and +others. + +Upstream: not accepted (see https://github.com/grpc/grpc/issues/25322) + +Signed-off-by: Thomas De Schampheleire +Signed-off-by: Fabrice Fontaine + +Updated for 1.48.0: +Signed-off-by: Michael Nosthoff +--- + CMakeLists.txt | 39 +++++++++++++++++++++++++++++++++++---- + 1 file changed, 35 insertions(+), 4 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0dcae6b1aee5..57b3963a43b0 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -49,12 +49,16 @@ option(gRPC_BUILD_TESTS "Build tests" OFF) + option(gRPC_BUILD_CODEGEN "Build codegen" ON) + option(gRPC_BUILD_CSHARP_EXT "Build C# extensions" ON) + option(gRPC_BACKWARDS_COMPATIBILITY_MODE "Build libraries that are binary compatible across a larger number of OS and libc versions" OFF) ++option(gRPC_BUILD_PLUGIN_SUPPORT_ONLY "Build plugin support only" OFF) + + set(gRPC_INSTALL_default ON) + if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) + # Disable gRPC_INSTALL by default if building as a submodule + set(gRPC_INSTALL_default OFF) + endif() ++if(gRPC_BUILD_PLUGIN_SUPPORT_ONLY) ++ set(gRPC_INSTALL_default OFF) ++endif() + set(gRPC_INSTALL ${gRPC_INSTALL_default} CACHE BOOL + "Generate installation target") + +@@ -563,6 +567,8 @@ add_custom_target(plugins + DEPENDS ${_gRPC_PLUGIN_LIST} + ) + ++if (NOT gRPC_BUILD_PLUGIN_SUPPORT_ONLY) ++ + add_custom_target(tools_c + DEPENDS + ) +@@ -574,6 +580,8 @@ add_custom_target(tools_cxx + add_custom_target(tools + DEPENDS tools_c tools_cxx) + ++endif() # gRPC_BUILD_PLUGIN_SUPPORT_ONLY ++ + protobuf_generate_grpc_cpp_with_import_path_correction( + src/proto/grpc/channelz/channelz.proto src/proto/grpc/channelz/channelz.proto + ) +@@ -1307,6 +1315,7 @@ if(gRPC_BUILD_TESTS) + DEPENDS buildtests_c buildtests_cxx) + endif() + ++if (NOT gRPC_BUILD_PLUGIN_SUPPORT_ONLY) + + add_library(address_sorting + third_party/address_sorting/address_sorting.c +@@ -1359,6 +1368,8 @@ if(gRPC_INSTALL) + ) + endif() + ++endif() # gRPC_BUILD_PLUGIN_SUPPORT_ONLY ++ + if(gRPC_BUILD_TESTS) + + add_library(end2end_tests +@@ -1512,6 +1523,8 @@ target_link_libraries(end2end_tests + + endif() + ++if(NOT gRPC_BUILD_PLUGIN_SUPPORT_ONLY) ++ + add_library(gpr + src/core/lib/gpr/alloc.cc + src/core/lib/gpr/atm.cc +@@ -2504,6 +2517,8 @@ if(gRPC_INSTALL) + ) + endif() + ++endif() # gRPC_BUILD_PLUGIN_SUPPORT_ONLY ++ + if(gRPC_BUILD_TESTS) + + add_library(grpc_test_util +@@ -2618,6 +2633,8 @@ endif() + + endif() + ++if(NOT gRPC_BUILD_PLUGIN_SUPPORT_ONLY) ++ + add_library(grpc_unsecure + src/core/ext/filters/census/grpc_context.cc + src/core/ext/filters/channel_idle/channel_idle_filter.cc +@@ -3102,6 +3119,8 @@ if(gRPC_INSTALL) + ) + endif() + ++endif() # gRPC_BUILD_PLUGIN_SUPPORT_ONLY ++ + if(gRPC_BUILD_TESTS) + + if(gRPC_BUILD_CODEGEN) +@@ -3185,6 +3204,8 @@ endif() + + endif() + ++if(NOT gRPC_BUILD_PLUGIN_SUPPORT_ONLY) ++ + add_library(grpc++ + src/core/ext/transport/binder/client/binder_connector.cc + src/core/ext/transport/binder/client/channel_create.cc +@@ -3635,6 +3656,7 @@ if(gRPC_INSTALL) + ) + endif() + ++endif() # gRPC_BUILD_PLUGIN_SUPPORT_ONLY + + if(gRPC_BUILD_CODEGEN) + add_library(grpc++_reflection +@@ -3889,6 +3911,8 @@ target_link_libraries(grpc++_test_util + + endif() + ++if(NOT gRPC_BUILD_PLUGIN_SUPPORT_ONLY) ++ + add_library(grpc++_unsecure + src/cpp/client/channel_cc.cc + src/cpp/client/client_callback.cc +@@ -4181,6 +4205,7 @@ if(gRPC_INSTALL) + ) + endif() + ++endif() # gRPC_BUILD_PLUGIN_SUPPORT_ONLY + + add_library(grpc_plugin_support + src/compiler/cpp_generator.cc +@@ -4240,7 +4265,7 @@ foreach(_hdr + endforeach() + + +-if(gRPC_INSTALL) ++if(gRPC_INSTALL OR gRPC_BUILD_PLUGIN_SUPPORT_ONLY) + install(TARGETS grpc_plugin_support EXPORT gRPCTargets + RUNTIME DESTINATION ${gRPC_INSTALL_BINDIR} + BUNDLE DESTINATION ${gRPC_INSTALL_BINDIR} +@@ -4324,6 +4349,8 @@ endif() + + endif() + ++if(NOT gRPC_BUILD_PLUGIN_SUPPORT_ONLY) ++ + add_library(upb + third_party/upb/third_party/utf8_range/naive.c + third_party/upb/third_party/utf8_range/range2-neon.c +@@ -4393,6 +4420,8 @@ if(gRPC_INSTALL) + ) + endif() + ++endif() # gRPC_BUILD_PLUGIN_SUPPORT_ONLY ++ + + if(gRPC_BUILD_TESTS) + +@@ -11085,7 +11114,7 @@ target_link_libraries(grpc_completion_queue_test + + + endif() +-if(gRPC_BUILD_CODEGEN AND gRPC_BUILD_GRPC_CPP_PLUGIN) ++if(gRPC_BUILD_GRPC_CPP_PLUGIN) + + add_executable(grpc_cpp_plugin + src/compiler/cpp_plugin.cc +@@ -11115,7 +11144,7 @@ target_link_libraries(grpc_cpp_plugin + + + +-if(gRPC_INSTALL) ++if(gRPC_INSTALL OR gRPC_BUILD_PLUGIN_SUPPORT_ONLY) + install(TARGETS grpc_cpp_plugin EXPORT gRPCTargets + RUNTIME DESTINATION ${gRPC_INSTALL_BINDIR} + BUNDLE DESTINATION ${gRPC_INSTALL_BINDIR} +@@ -23128,7 +23157,7 @@ endif() + + + +- ++if (NOT gRPC_BUILD_PLUGIN_SUPPORT_ONLY) + + if(gRPC_INSTALL) + install(EXPORT gRPCTargets +@@ -23225,3 +23254,5 @@ generate_pkgconfig( + "-lgrpc++_unsecure" + "" + "grpc++_unsecure.pc") ++ ++endif() # gRPC_BUILD_PLUGIN_SUPPORT_ONLY +-- +2.43.0 + diff --git a/package/grpc/0004-disable-unconditionally-downloading-api-repos.patch b/package/grpc/0004-disable-unconditionally-downloading-api-repos.patch new file mode 100644 index 00000000..967bbf62 --- /dev/null +++ b/package/grpc/0004-disable-unconditionally-downloading-api-repos.patch @@ -0,0 +1,39 @@ +From b0599c3d1b52818c79ea8fa5dfdc40a4ce01e454 Mon Sep 17 00:00:00 2001 +From: Michael Nosthoff +Date: Fri, 22 Jul 2022 08:49:48 +0200 +Subject: [PATCH] disable unconditionally downloading api repos + +The Buildroot build doesn't need those submodules, so disable them hard +for now. + +See https://github.com/grpc/grpc/issues/30385 + +Signed-off-by: Michael Nosthoff + +--- + CMakeLists.txt | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 11e7ae2b67..a9062fa6ef 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -327,6 +327,7 @@ include(cmake/xxhash.cmake) + include(cmake/zlib.cmake) + include(cmake/download_archive.cmake) + ++if(FALSE) + # Setup external proto library at third_party/envoy-api with 2 download URLs + if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/envoy-api) + # Download the archive via HTTP, validate the checksum, and extract to third_party/envoy-api. +@@ -403,6 +404,7 @@ if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/xds) + xds-cb28da3451f158a947dfc45090fe92b07b243bc1 + ) + endif() ++endif() + + if(WIN32) + set(_gRPC_BASELIB_LIBRARIES ws2_32 crypt32) +-- +2.25.1 + diff --git a/package/grpc/Config.in b/package/grpc/Config.in new file mode 100644 index 00000000..7664948b --- /dev/null +++ b/package/grpc/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_GRPC + bool "grpc" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # protobuf, re2 + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # protobuf + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # libabseil-cpp, re2 + depends on !BR2_STATIC_LIBS # protobuf, libabseil-cpp, re2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS + select BR2_PACKAGE_C_ARES + select BR2_PACKAGE_LIBABSEIL_CPP + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_PROTOBUF + select BR2_PACKAGE_RE2 + select BR2_PACKAGE_ZLIB + help + A language-neutral, platform-neutral, open source, remote + procedure call (RPC) system initially developed at Google. + + http://github.com/grpc/grpc + +comment "grpc needs a toolchain w/ C++, threads, dynamic library, gcc >= 8" + depends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \ + || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_8 + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS diff --git a/package/grpc/grpc.hash b/package/grpc/grpc.hash new file mode 100644 index 00000000..e6b76dcb --- /dev/null +++ b/package/grpc/grpc.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 b55696fb249669744de3e71acc54a9382bea0dce7cd5ba379b356b12b82d4229 grpc-1.51.1.tar.gz +sha256 590198e3f305f2c347fde64d637c65492bbef554db6c8364e149cd375e3797ee LICENSE diff --git a/package/grpc/grpc.mk b/package/grpc/grpc.mk new file mode 100644 index 00000000..9125b1f9 --- /dev/null +++ b/package/grpc/grpc.mk @@ -0,0 +1,92 @@ +################################################################################ +# +# grpc +# +################################################################################ + +GRPC_VERSION = 1.51.1 +GRPC_SITE = $(call github,grpc,grpc,v$(GRPC_VERSION)) +GRPC_LICENSE = Apache-2.0, BSD-3-Clause (third_party code), MPL-2.0 (etc/roots.pem) +GRPC_LICENSE_FILES = LICENSE +GRPC_CPE_ID_VENDOR = grpc + +GRPC_INSTALL_STAGING = YES + +# Need to use host grpc_cpp_plugin during cross compilation. +GRPC_DEPENDENCIES = c-ares host-grpc libabseil-cpp openssl protobuf re2 zlib +HOST_GRPC_DEPENDENCIES = host-protobuf + +# gRPC_CARES_PROVIDER=package won't work because it requires c-ares to have +# installed a cmake config file, but buildroot uses c-ares' autotools build, +# which doesn't do this. These CARES settings trick the gRPC cmake code into +# not looking for c-ares at all and yet still linking with the library. +GRPC_CONF_OPTS = \ + -DCMAKE_EXE_LINKER_FLAGS="$(GRPC_EXE_LINKER_FLAGS)" \ + -DgRPC_ABSL_PROVIDER=package \ + -D_gRPC_CARES_LIBRARIES=cares \ + -DgRPC_CARES_PROVIDER=none \ + -DgRPC_PROTOBUF_PROVIDER=package \ + -DgRPC_RE2_PROVIDER=package \ + -DgRPC_SSL_PROVIDER=package \ + -DgRPC_ZLIB_PROVIDER=package \ + -DgRPC_BUILD_GRPC_CPP_PLUGIN=OFF \ + -DgRPC_BUILD_GRPC_CSHARP_PLUGIN=OFF \ + -DgRPC_BUILD_GRPC_NODE_PLUGIN=OFF \ + -DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=OFF \ + -DgRPC_BUILD_GRPC_PHP_PLUGIN=OFF \ + -DgRPC_BUILD_GRPC_PYTHON_PLUGIN=OFF \ + -DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF + +ifeq ($(BR2_PACKAGE_LIBEXECINFO),y) +GRPC_DEPENDENCIES += libexecinfo +GRPC_EXE_LINKER_FLAGS += -lexecinfo +endif + +# grpc can use __atomic builtins, so we need to link with +# libatomic when available +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +GRPC_EXE_LINKER_FLAGS += -latomic +endif + +GRPC_CFLAGS = $(TARGET_CFLAGS) +GRPC_CXXFLAGS = $(TARGET_CXXFLAGS) + +# Set GPR_DISABLE_WRAPPED_MEMCPY otherwise build will fail on x86_64 with uclibc +# because grpc tries to link with memcpy@GLIBC_2.2.5 +ifeq ($(BR2_x86_64):$(BR2_TOOLCHAIN_USES_GLIBC),y:) +GRPC_CFLAGS += -DGPR_DISABLE_WRAPPED_MEMCPY +GRPC_CXXFLAGS += -DGPR_DISABLE_WRAPPED_MEMCPY +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +GRPC_CFLAGS += -O0 +GRPC_CXXFLAGS += -O0 +endif + +GRPC_CONF_OPTS += \ + -DCMAKE_C_FLAGS="$(GRPC_CFLAGS)" \ + -DCMAKE_CXX_FLAGS="$(GRPC_CXXFLAGS)" + +# For host-grpc, we only need the 'grpc_cpp_plugin' binary, which is needed for +# target grpc compilation. To avoid unnecessary build steps and host +# dependencies, supply enough options to pass the configure checks without +# requiring other host packages, unless those needed by grpc_cpp_plugin. +HOST_GRPC_CONF_OPTS = \ + -DgRPC_PROTOBUF_PROVIDER=package \ + -DgRPC_ABSL_PROVIDER=none \ + -DgRPC_CARES_PROVIDER=none \ + -DgRPC_RE2_PROVIDER=none \ + -DgRPC_SSL_PROVIDER=none \ + -DgRPC_ZLIB_PROVIDER=none \ + -DgRPC_BUILD_CODEGEN=OFF \ + -DgRPC_BUILD_CSHARP_EXT=OFF \ + -DgRPC_BUILD_PLUGIN_SUPPORT_ONLY=ON \ + -DgRPC_BUILD_GRPC_CSHARP_PLUGIN=OFF \ + -DgRPC_BUILD_GRPC_NODE_PLUGIN=OFF \ + -DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=OFF \ + -DgRPC_BUILD_GRPC_PHP_PLUGIN=OFF \ + -DgRPC_BUILD_GRPC_PYTHON_PLUGIN=OFF \ + -DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/gsettings-desktop-schemas/Config.in b/package/gsettings-desktop-schemas/Config.in new file mode 100644 index 00000000..0dfffc38 --- /dev/null +++ b/package/gsettings-desktop-schemas/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_GSETTINGS_DESKTOP_SCHEMAS + bool "gsettings-desktop-schemas" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + help + gsettings-desktop-schemas contains a collection of GSettings + schemas for settings shared by various components of a + desktop. + + https://github.com/GNOME/gsettings-desktop-schemas + +comment "gsettings-desktop-schemas needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/gsettings-desktop-schemas/gsettings-desktop-schemas.hash b/package/gsettings-desktop-schemas/gsettings-desktop-schemas.hash new file mode 100644 index 00000000..0d80c87e --- /dev/null +++ b/package/gsettings-desktop-schemas/gsettings-desktop-schemas.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/gsettings-desktop-schemas/45/gsettings-desktop-schemas-45.0.sha256sum +sha256 365c8d04daf79b38c8b3dc9626349a024f9e4befdd31fede74b42f7a9fbe0ae2 gsettings-desktop-schemas-45.0.tar.xz + +# Hash for license file +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/gsettings-desktop-schemas/gsettings-desktop-schemas.mk b/package/gsettings-desktop-schemas/gsettings-desktop-schemas.mk new file mode 100644 index 00000000..b47097b9 --- /dev/null +++ b/package/gsettings-desktop-schemas/gsettings-desktop-schemas.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# gsettings-desktop-schemas +# +################################################################################ + +GSETTINGS_DESKTOP_SCHEMAS_VERSION_MAJOR = 45 +GSETTINGS_DESKTOP_SCHEMAS_VERSION = $(GSETTINGS_DESKTOP_SCHEMAS_VERSION_MAJOR).0 +GSETTINGS_DESKTOP_SCHEMAS_SOURCE = gsettings-desktop-schemas-$(GSETTINGS_DESKTOP_SCHEMAS_VERSION).tar.xz +GSETTINGS_DESKTOP_SCHEMAS_SITE = https://download.gnome.org/sources/gsettings-desktop-schemas/$(GSETTINGS_DESKTOP_SCHEMAS_VERSION_MAJOR) +GSETTINGS_DESKTOP_SCHEMAS_INSTALL_STAGING = YES +GSETTINGS_DESKTOP_SCHEMAS_DEPENDENCIES = host-pkgconf libglib2 +GSETTINGS_DESKTOP_SCHEMAS_LICENSE = LGPL-2.1+ +GSETTINGS_DESKTOP_SCHEMAS_LICENSE_FILES = COPYING +GSETTINGS_DESKTOP_SCHEMAS_CONF_OPTS = -Dintrospection=false + +$(eval $(meson-package)) diff --git a/package/gsl/0001-configure.ac-fix-build-on-powerpc.patch b/package/gsl/0001-configure.ac-fix-build-on-powerpc.patch new file mode 100644 index 00000000..96ab7804 --- /dev/null +++ b/package/gsl/0001-configure.ac-fix-build-on-powerpc.patch @@ -0,0 +1,54 @@ +From 84e62d57b90b41a0c96bb9fb6ec61ecaac76a1ab Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 5 Nov 2022 21:31:36 +0100 +Subject: [PATCH] configure.ac: fix build on powerpc and m68k + +Fix the following powerpc and m68k build failures on: + - musl raised because fpu_control.h is not available: + +In file included from fp.c:8: +fp-gnuppc.c:21:10: fatal error: fpu_control.h: No such file or directory + 21 | #include + | ^~~~~~~~~~~~~~~ + + - glibc raised because _FPU_RC_NEAREST is undefined if _SOFT_FLOAT is + set: + + In file included from fp.c:8: +fp-gnuppc.c: In function 'gsl_ieee_set_mode': +fp-gnuppc.c:53:15: error: '_FPU_RC_NEAREST' undeclared (first use in this function) + 53 | mode |= _FPU_RC_NEAREST ; + | ^~~~~~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/d73e116c81bf16d2e55fced215d6bd3b382fef10 + - http://autobuild.buildroot.org/results/48403946bb4cda9013e51db59c1b2ffdcf4e2854 + +Signed-off-by: Fabrice Fontaine +Upstream: https://lists.gnu.org/archive/html/bug-gsl/2022-11/msg00000.html +--- + configure.ac | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/configure.ac b/configure.ac +index bfd9ca30..1ee6dca0 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -389,6 +389,14 @@ if test "$ac_cv_c_ieee_interface" = "gnux86" ; then + fi + fi + ++if test "$ac_cv_c_ieee_interface" = "gnuppc" -o "$ac_cv_c_ieee_interface" = "gnum68k" ; then ++ AC_CACHE_CHECK([for _FPU_RC_NEAREST], ac_cv_c__fpu_rc_nearest, ++ [ac_cv_c__fpu_rc_nearest=no ++ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ++]], [[ unsigned short mode = _FPU_RC_NEAREST ; ]])],[ac_cv_c__fpu_rc_nearest="yes"],[ac_cv_c_ieee_interface=unknown]) ++ ]) ++fi ++ + ac_tr_ieee_interface=HAVE_`echo $ac_cv_c_ieee_interface | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`_IEEE_INTERFACE + AC_DEFINE_UNQUOTED($ac_tr_ieee_interface,1,[IEEE Interface Type]) + +-- +2.35.1 + diff --git a/package/gsl/Config.in b/package/gsl/Config.in new file mode 100644 index 00000000..5b82ac2a --- /dev/null +++ b/package/gsl/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_GSL + bool "gsl" + help + The GNU Scientific Library (GSL) is a numerical library for + C and C++ programmers. The library provides a wide range of + mathematical routines such as random number generators, + special functions and least-squares fitting. There are over + 1000 functions in total with an extensive test suite. + + http://www.gnu.org/software/gsl diff --git a/package/gsl/gsl.hash b/package/gsl/gsl.hash new file mode 100644 index 00000000..153ae413 --- /dev/null +++ b/package/gsl/gsl.hash @@ -0,0 +1,3 @@ +# Locally calculated after checking pgp signature +sha256 dcb0fbd43048832b757ff9942691a8dd70026d5da0ff85601e52687f6deeb34b gsl-2.7.1.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/gsl/gsl.mk b/package/gsl/gsl.mk new file mode 100644 index 00000000..575cb754 --- /dev/null +++ b/package/gsl/gsl.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# gsl +# +################################################################################ + +GSL_VERSION = 2.7.1 +GSL_SITE = $(BR2_GNU_MIRROR)/gsl +GSL_INSTALL_STAGING = YES +GSL_LICENSE = GPL-3.0 +GSL_LICENSE_FILES = COPYING +GSL_CONFIG_SCRIPTS = gsl-config +# We're patching configure.ac +GSL_AUTORECONF = YES + +# uClibc pretends to have fenv support as it installs , but in +# practice, it only implements it for i386. Problem reported upstream +# at: http://lists.busybox.net/pipermail/uclibc/2012-October/047067.html. +# So we tell gsl that fenv related functions are not available in this +# case. +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +ifneq ($(BR2_i386),y) +GSL_CONF_ENV = \ + ac_cv_have_decl_feenableexcept=no \ + ac_cv_have_decl_fesettrapenable=no +endif +endif + +$(eval $(autotools-package)) diff --git a/package/gssdp/Config.in b/package/gssdp/Config.in new file mode 100644 index 00000000..5a9317f4 --- /dev/null +++ b/package/gssdp/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_GSSDP + bool "gssdp" + depends on BR2_USE_WCHAR # glib2, libsoup3 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2, libsoup3 + depends on BR2_USE_MMU # glib2, libsoup3 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBSOUP3 + help + GSSDP implements resource discovery and announcement over + SSDP. + + http://www.gupnp.org + +comment "gssdp needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/gssdp/gssdp.hash b/package/gssdp/gssdp.hash new file mode 100644 index 00000000..06bf5109 --- /dev/null +++ b/package/gssdp/gssdp.hash @@ -0,0 +1,5 @@ +# Hash from: https://download.gnome.org/sources/gssdp/1.6/gssdp-1.6.3.sha256sum: +sha256 2fedb5afdb22cf14d5498a39a773ca89788a250fcf70118783df821e1f3f3446 gssdp-1.6.3.tar.xz + +# Hash for license file: +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/gssdp/gssdp.mk b/package/gssdp/gssdp.mk new file mode 100644 index 00000000..3b446496 --- /dev/null +++ b/package/gssdp/gssdp.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# gssdp +# +################################################################################ + +GSSDP_VERSION_MAJOR = 1.6 +GSSDP_VERSION = $(GSSDP_VERSION_MAJOR).3 +GSSDP_SOURCE = gssdp-$(GSSDP_VERSION).tar.xz +GSSDP_SITE = https://download.gnome.org/sources/gssdp/$(GSSDP_VERSION_MAJOR) +GSSDP_LICENSE = LGPL-2.1+ +GSSDP_LICENSE_FILES = COPYING +GSSDP_INSTALL_STAGING = YES +GSSDP_DEPENDENCIES = host-pkgconf libglib2 libsoup3 +GSSDP_CONF_OPTS = \ + -Dexamples=false \ + -Dgtk_doc=false \ + -Dmanpages=false \ + -Dsniffer=false + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +GSSDP_CONF_OPTS += -Dintrospection=true -Dvapi=true +GSSDP_DEPENDENCIES += host-vala gobject-introspection +else +GSSDP_CONF_OPTS += -Dintrospection=false -Dvapi=false +endif + +$(eval $(meson-package)) diff --git a/package/gstreamer1/Config.in b/package/gstreamer1/Config.in new file mode 100644 index 00000000..8fe8a343 --- /dev/null +++ b/package/gstreamer1/Config.in @@ -0,0 +1,21 @@ +# Gstreamer 1.x & Plugins +source "package/gstreamer1/gstreamer1/Config.in" + +if BR2_PACKAGE_GSTREAMER1 +source "package/gstreamer1/gst1-plugins-base/Config.in" +source "package/gstreamer1/gst1-plugins-bayer2rgb-neon/Config.in" +source "package/gstreamer1/gst1-plugins-good/Config.in" +source "package/gstreamer1/gst1-plugins-bad/Config.in" +source "package/gstreamer1/gst1-plugins-ugly/Config.in" +source "package/gstreamer1/gst1-devtools/Config.in" +source "package/gstreamer1/gst1-imx/Config.in" +source "package/gstreamer1/gst1-interpipe/Config.in" +source "package/gstreamer1/gst1-libav/Config.in" +source "package/gstreamer1/gst1-python/Config.in" +source "package/gstreamer1/gst1-rtsp-server/Config.in" +source "package/gstreamer1/gst1-shark/Config.in" +source "package/gstreamer1/gst1-vaapi/Config.in" +source "package/gstreamer1/gst-omx/Config.in" +source "package/gstreamer1/gstd/Config.in" +source "package/gstreamer1/gstreamer1-editing-services/Config.in" +endif diff --git a/package/gstreamer1/gst-omx/Config.in b/package/gstreamer1/gst-omx/Config.in new file mode 100644 index 00000000..efe3d211 --- /dev/null +++ b/package/gstreamer1/gst-omx/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_GST_OMX + bool "gst-omx" + depends on BR2_PACKAGE_HAS_LIBOPENMAX + select BR2_PACKAGE_GST1_PLUGINS_BASE + help + GStreamer plug-in to use OpenMAX API. + + https://cgit.freedesktop.org/gstreamer/gst-omx + +comment "gst-omx requires a OpenMAX implementation" + depends on !BR2_PACKAGE_HAS_LIBOPENMAX diff --git a/package/gstreamer1/gst-omx/gst-omx.hash b/package/gstreamer1/gst-omx/gst-omx.hash new file mode 100644 index 00000000..86f8c772 --- /dev/null +++ b/package/gstreamer1/gst-omx/gst-omx.hash @@ -0,0 +1,3 @@ +# From https://gstreamer.freedesktop.org/src/gst-omx/gst-omx-1.22.9.tar.xz.sha256sum +sha256 9362d6117985d09dcf6e27bdaef377dc08efb7df01d00101d04fb644addac61e gst-omx-1.22.9.tar.xz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/gstreamer1/gst-omx/gst-omx.mk b/package/gstreamer1/gst-omx/gst-omx.mk new file mode 100644 index 00000000..32891baf --- /dev/null +++ b/package/gstreamer1/gst-omx/gst-omx.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# gst-omx +# +################################################################################ + +GST_OMX_VERSION = 1.22.9 +GST_OMX_SOURCE = gst-omx-$(GST_OMX_VERSION).tar.xz +GST_OMX_SITE = https://gstreamer.freedesktop.org/src/gst-omx + +GST_OMX_LICENSE = LGPL-2.1 +GST_OMX_LICENSE_FILES = COPYING + +GST_OMX_CONF_OPTS = \ + -Dexamples=disabled \ + -Dtests=disabled \ + -Dtools=disabled \ + -Ddoc=disabled + +ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) +GST_OMX_VARIANT = rpi +GST_OMX_CONF_OPTS += -Dheader_path=$(STAGING_DIR)/usr/include/IL +else +GST_OMX_VARIANT = generic +endif + +GST_OMX_CONF_OPTS += -Dtarget=$(GST_OMX_VARIANT) + +GST_OMX_DEPENDENCIES = gstreamer1 gst1-plugins-base libopenmax + +# adjust library paths to where buildroot installs them +define GST_OMX_FIXUP_CONFIG_PATHS + find $(@D)/config -name gstomx.conf | \ + xargs $(SED) 's|/usr/local|/usr|g' -e 's|/opt/vc|/usr|g' +endef + +GST_OMX_POST_PATCH_HOOKS += GST_OMX_FIXUP_CONFIG_PATHS + +$(eval $(meson-package)) diff --git a/package/gstreamer1/gst1-devtools/Config.in b/package/gstreamer1/gst1-devtools/Config.in new file mode 100644 index 00000000..3f39beff --- /dev/null +++ b/package/gstreamer1/gst1-devtools/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_GST1_DEVTOOLS + bool "gst1-devtools" + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_GSTREAMER1_CHECK + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_JSON_GLIB + select BR2_PACKAGE_PYTHON3_PYEXPAT + # cairo is autodetected but needs PNG support + select BR2_PACKAGE_CAIRO_PNG if BR2_PACKAGE_CAIRO + help + GStreamer development tools (gst-validate). + + https://gstreamer.freedesktop.org + +comment "gst1-devtools depends on python" + depends on !BR2_PACKAGE_PYTHON3 diff --git a/package/gstreamer1/gst1-devtools/gst1-devtools.hash b/package/gstreamer1/gst1-devtools/gst1-devtools.hash new file mode 100644 index 00000000..6cf7c959 --- /dev/null +++ b/package/gstreamer1/gst1-devtools/gst1-devtools.hash @@ -0,0 +1,3 @@ +# From https://gstreamer.freedesktop.org/src/gst-devtools/gst-devtools-1.22.9.tar.xz.sha256sum +sha256 02e29400b44e9cc603aa6444dee5726b57edabef6455e6d0921ffed6f13840ee gst-devtools-1.22.9.tar.xz +sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 validate/COPYING diff --git a/package/gstreamer1/gst1-devtools/gst1-devtools.mk b/package/gstreamer1/gst1-devtools/gst1-devtools.mk new file mode 100644 index 00000000..0c085b8b --- /dev/null +++ b/package/gstreamer1/gst1-devtools/gst1-devtools.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# gst1-devtools +# +################################################################################ + +GST1_DEVTOOLS_VERSION = 1.22.9 +GST1_DEVTOOLS_SOURCE = gst-devtools-$(GST1_DEVTOOLS_VERSION).tar.xz +GST1_DEVTOOLS_SITE = https://gstreamer.freedesktop.org/src/gst-devtools +GST1_DEVTOOLS_LICENSE = LGPL-2.1+ +GST1_DEVTOOLS_LICENSE_FILES = validate/COPYING +GST1_DEVTOOLS_INSTALL_STAGING = YES + +GST1_DEVTOOLS_DEPENDENCIES = \ + host-python3 \ + python3 \ + gstreamer1 \ + gst1-plugins-base \ + json-glib + +ifeq ($(BR2_PACKAGE_GST1_RTSP_SERVER),y) +GST1_DEVTOOLS_DEPENDENCIES += gst1-rtsp-server +endif + +GST1_DEVTOOLS_CONF_OPTS = \ + -Dvalidate=enabled \ + -Ddebug_viewer=disabled \ + -Dintrospection=disabled \ + -Dtests=disabled \ + -Ddoc=disabled + +# build GstValidateVideo +ifeq ($(BR2_PACKAGE_CAIRO),y) +GST1_DEVTOOLS_CONF_OPTS += -Dcairo=enabled +GST1_DEVTOOLS_DEPENDENCIES += cairo +else +GST1_DEVTOOLS_CONF_OPTS += -Dcairo=disabled +endif + +$(eval $(meson-package)) diff --git a/package/gstreamer1/gst1-imx/Config.in b/package/gstreamer1/gst1-imx/Config.in new file mode 100644 index 00000000..bd1f8d41 --- /dev/null +++ b/package/gstreamer1/gst1-imx/Config.in @@ -0,0 +1,104 @@ +comment "gst1-imx needs a toolchain w/ dynamic library" + depends on BR2_arm + depends on BR2_STATIC_LIBS + +menuconfig BR2_PACKAGE_GST1_IMX + bool "gst1-imx" + depends on BR2_arm # Only relevant for i.MX + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_GST1_PLUGINS_BASE + help + This is a set of GStreamer 1.0 plugins for plugins for + Freescale's i.MX platforms, which make use of the i.MX + multimedia capabilities. + + https://github.com/Freescale/gstreamer-imx + +if BR2_PACKAGE_GST1_IMX + +config BR2_PACKAGE_GST1_IMX_EGLVISINK + bool "imxeglvivsink" + depends on BR2_PACKAGE_IMX_GPU_VIV + help + Elements leveraging the 3D GPU + +comment "imxeglvivsink needs the Vivante 3D libraries" + depends on !BR2_PACKAGE_IMX_GPU_VIV + +config BR2_PACKAGE_GST1_IMX_G2D + bool "imxg2d" + depends on BR2_PACKAGE_IMX_GPU_G2D + help + Elements leveraging the 2D GPU + +comment "imxg2d needs the G2D libraries" + depends on !BR2_PACKAGE_IMX_GPU_G2D + +config BR2_PACKAGE_GST1_IMX_IPU + bool "imxipu" + depends on BR2_LINUX_KERNEL + help + Elements leveraging the IPU + +comment "imxipu needs an imx-specific Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_GST1_IMX_MP3ENCODER + bool "mp3encoder" + depends on BR2_PACKAGE_IMX_CODEC + help + Elements for MP3 encoding + +comment "mp3encoder needs the i.MX codec binaries" + depends on !BR2_PACKAGE_IMX_CODEC + +config BR2_PACKAGE_GST1_IMX_PXP + bool "imxpxp" + depends on BR2_LINUX_KERNEL + help + Elements leveraging the PXP + +comment "imxpxp needs an imx-specific Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_GST1_IMX_UNIAUDIODEC + bool "uniaudiodec" + depends on BR2_PACKAGE_IMX_CODEC + help + Elements for audio decoding + +comment "uniaudiodec needs the i.MX codec binaries" + depends on !BR2_PACKAGE_IMX_CODEC + +config BR2_PACKAGE_GST1_IMX_VPU + bool "imxvpu" + depends on BR2_PACKAGE_LIBIMXVPUAPI + help + Elements leveraging the VPU + +comment "imxvpu needs the VPU imxvpuapi library" + depends on !BR2_PACKAGE_LIBIMXVPUAPI + +config BR2_PACKAGE_GST1_IMX_V4L2VIDEOSRC + bool "imxv4l2videosrc" + depends on BR2_INSTALL_LIBSTDCPP # gst1-plugins-bad + select BR2_PACKAGE_GST1_PLUGINS_BAD + help + Elements for V4L2 capture + +comment "imxv4l2videosrc needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_GST1_IMX_V4L2VIDEOSINK + bool "imxv4l2videosink" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2 # V4L2_COLORSPACE_DEFAULT + depends on BR2_INSTALL_LIBSTDCPP # gst1-plugins-bad + select BR2_PACKAGE_GST1_PLUGINS_BAD + help + Elements for V4L2 output + +comment "imxv4l2videosink needs a toolchain w/ headers >= 4.2, C++" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2 || \ + !BR2_INSTALL_LIBSTDCPP + +endif diff --git a/package/gstreamer1/gst1-imx/gst1-imx.hash b/package/gstreamer1/gst1-imx/gst1-imx.hash new file mode 100644 index 00000000..0c2a99cc --- /dev/null +++ b/package/gstreamer1/gst1-imx/gst1-imx.hash @@ -0,0 +1,3 @@ +# locally computed hash +sha256 21feb24130c18e4a1f8cc4f72d575903d1f9134dd0604e41e91b5e783d81e320 gst1-imx-0.13.1.tar.gz +sha256 94b03f1a60a7fd5007149530626a895a6ef5a8b9342abfd56860c5f3956f5d23 LICENSE diff --git a/package/gstreamer1/gst1-imx/gst1-imx.mk b/package/gstreamer1/gst1-imx/gst1-imx.mk new file mode 100644 index 00000000..f091b4f9 --- /dev/null +++ b/package/gstreamer1/gst1-imx/gst1-imx.mk @@ -0,0 +1,104 @@ +################################################################################ +# +# gst1-imx +# +################################################################################ + +GST1_IMX_VERSION = 0.13.1 +GST1_IMX_SITE = $(call github,Freescale,gstreamer-imx,$(GST1_IMX_VERSION)) + +GST1_IMX_LICENSE = LGPL-2.0+ +GST1_IMX_LICENSE_FILES = LICENSE + +GST1_IMX_INSTALL_STAGING = YES +GST1_IMX_NEEDS_EXTERNAL_WAF = YES + +GST1_IMX_DEPENDENCIES += \ + host-pkgconf \ + gstreamer1 \ + gst1-plugins-base + +GST1_IMX_CONF_OPTS = --prefix="/usr" + +ifeq ($(BR2_LINUX_KERNEL),y) +# IPU and PXP need access to imx-specific kernel headers +GST1_IMX_DEPENDENCIES += linux +GST1_IMX_CONF_OPTS += --kernel-headers="$(LINUX_DIR)/include" +endif + +ifeq ($(BR2_PACKAGE_IMX_CODEC),y) +GST1_IMX_DEPENDENCIES += imx-codec +endif + +ifeq ($(BR2_PACKAGE_IMX_GPU_VIV),y) +GST1_IMX_DEPENDENCIES += imx-gpu-viv +endif + +ifeq ($(BR2_PACKAGE_IMX_GPU_G2D),y) +GST1_IMX_DEPENDENCIES += imx-gpu-g2d +endif + +ifeq ($(BR2_PACKAGE_GST1_IMX_EGLVISINK),y) +# There's no --enable-eglvivsink option +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) +GST1_IMX_DEPENDENCIES += xlib_libX11 +GST1_IMX_CONF_OPTS += --egl-platform=x11 +else +ifeq ($(BR2_PACKAGE_WAYLAND),y) +GST1_IMX_DEPENDENCIES += wayland +GST1_IMX_CONF_OPTS += --egl-platform=wayland +else +GST1_IMX_CONF_OPTS += --egl-platform=fb +endif +endif +else +GST1_IMX_CONF_OPTS += --disable-eglvivsink +endif + +# There's no --enable-g2d option +ifeq ($(BR2_PACKAGE_GST1_IMX_G2D),) +GST1_IMX_CONF_OPTS += --disable-g2d +endif + +# There's no --enable-ipu option +ifeq ($(BR2_PACKAGE_GST1_IMX_IPU),) +GST1_IMX_CONF_OPTS += --disable-ipu +endif + +# There's no --enable-mp3encoder option +ifeq ($(BR2_PACKAGE_GST1_IMX_MP3ENCODER),) +GST1_IMX_CONF_OPTS += --disable-mp3encoder +endif + +# There's no --enable-pxp option +ifeq ($(BR2_PACKAGE_GST1_IMX_PXP),) +GST1_IMX_CONF_OPTS += --disable-pxp +endif + +# There's no --enable-uniaudiodec option +ifeq ($(BR2_PACKAGE_GST1_IMX_UNIAUDIODEC),) +GST1_IMX_CONF_OPTS += --disable-uniaudiodec +endif + +ifeq ($(BR2_PACKAGE_GST1_IMX_VPU),y) +# There's no --enable-vpu option +GST1_IMX_DEPENDENCIES += libimxvpuapi +else +GST1_IMX_CONF_OPTS += --disable-vpu +endif + +ifeq ($(BR2_PACKAGE_GST1_IMX_V4L2VIDEOSRC),y) +# There's no --enable-imxv4l2videosrc option +GST1_IMX_DEPENDENCIES += gst1-plugins-bad +else +GST1_IMX_CONF_OPTS += --disable-imxv4l2videosrc +endif + +ifeq ($(BR2_PACKAGE_GST1_IMX_V4L2VIDEOSINK),y) +# There's no --enable-imxv4l2videosink option +GST1_IMX_DEPENDENCIES += gst1-plugins-bad +else +GST1_IMX_CONF_OPTS += --disable-imxv4l2videosink +endif + +$(eval $(waf-package)) diff --git a/package/gstreamer1/gst1-interpipe/Config.in b/package/gstreamer1/gst1-interpipe/Config.in new file mode 100644 index 00000000..5640c2b3 --- /dev/null +++ b/package/gstreamer1/gst1-interpipe/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_GST1_INTERPIPE + bool "gst1-interpipe" + select BR2_PACKAGE_GSTREAMER1_CHECK + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP + help + GstInterpipe is a Gstreamer plug-in that allows communication + between two independent pipelines. + + https://github.com/RidgeRun/gst-interpipe diff --git a/package/gstreamer1/gst1-interpipe/gst1-interpipe.hash b/package/gstreamer1/gst1-interpipe/gst1-interpipe.hash new file mode 100644 index 00000000..7004466e --- /dev/null +++ b/package/gstreamer1/gst1-interpipe/gst1-interpipe.hash @@ -0,0 +1,5 @@ +# locally computed hash +sha256 c8614f53c65aea9086cfa64803ceb0617e5ef699413a1effbb68aaea23ca0c1c gst1-interpipe-v1.1.8-git4.tar.gz + +# Hashes for license files: +sha256 16d7caa6cabbfd0ca47e064a7b48cb446d013e84ca88c854d6470851752136d5 COPYING diff --git a/package/gstreamer1/gst1-interpipe/gst1-interpipe.mk b/package/gstreamer1/gst1-interpipe/gst1-interpipe.mk new file mode 100644 index 00000000..cec23e7f --- /dev/null +++ b/package/gstreamer1/gst1-interpipe/gst1-interpipe.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# gst1-interpipe +# +################################################################################ + +GST1_INTERPIPE_VERSION = v1.1.8 +GST1_INTERPIPE_SITE = https://github.com/RidgeRun/gst-interpipe +GST1_INTERPIPE_SITE_METHOD = git +# fetch gst-interpipe/common sub module +GST1_INTERPIPE_GIT_SUBMODULES = YES + +GST1_INTERPIPE_LICENSE = LGPL-2.1 +GST1_INTERPIPE_LICENSE_FILES = COPYING + +GST1_INTERPIPE_DEPENDENCIES = host-pkgconf gstreamer1 gst1-plugins-base + +GST1_INTERPIPE_CONF_OPTS = \ + -Dtests=disabled \ + -Denable-gtk-doc=false + +$(eval $(meson-package)) diff --git a/package/gstreamer1/gst1-libav/Config.in b/package/gstreamer1/gst1-libav/Config.in new file mode 100644 index 00000000..51bac04d --- /dev/null +++ b/package/gstreamer1/gst1-libav/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_GST1_LIBAV + bool "gst1-libav" + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS # ffmpeg + select BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_FFMPEG_SWSCALE + select BR2_PACKAGE_GST1_PLUGINS_BASE + help + GStreamer plugin (formerly gst-ffmpeg). + + This package contains GStreamer plugins based on + the libav project. + + The codecs, muxers, bitstreams and filters to build can be + selected in the ffmpeg package. + + https://gstreamer.freedesktop.org/ + +comment "gst1-libav needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/gstreamer1/gst1-libav/gst1-libav.hash b/package/gstreamer1/gst1-libav/gst1-libav.hash new file mode 100644 index 00000000..b5bc84d6 --- /dev/null +++ b/package/gstreamer1/gst1-libav/gst1-libav.hash @@ -0,0 +1,3 @@ +# From https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-1.22.9.tar.xz.sha256sum +sha256 192f7d27d21c1e7c72c339a2647a9b0c247fedc62ea5029115f8c3e22ebb87d8 gst-libav-1.22.9.tar.xz +sha256 ad2eec519ebd4b5df86ea84dff24ae3bfa2edea846a703b58902dd221ae375db COPYING diff --git a/package/gstreamer1/gst1-libav/gst1-libav.mk b/package/gstreamer1/gst1-libav/gst1-libav.mk new file mode 100644 index 00000000..1b872b7f --- /dev/null +++ b/package/gstreamer1/gst1-libav/gst1-libav.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# gst1-libav +# +################################################################################ + +GST1_LIBAV_VERSION = 1.22.9 +GST1_LIBAV_SOURCE = gst-libav-$(GST1_LIBAV_VERSION).tar.xz +GST1_LIBAV_SITE = https://gstreamer.freedesktop.org/src/gst-libav +GST1_LIBAV_LICENSE = LGPL-2.1+ +GST1_LIBAV_LICENSE_FILES = COPYING +GST1_LIBAV_DEPENDENCIES = host-pkgconf ffmpeg gstreamer1 gst1-plugins-base +GST1_LIBAV_CONF_OPTS = -Ddoc=disabled + +$(eval $(meson-package)) diff --git a/package/gstreamer1/gst1-plugins-bad/0001-webrtcdsp-Update-code-for-webrtc-audio-processing-1.patch b/package/gstreamer1/gst1-plugins-bad/0001-webrtcdsp-Update-code-for-webrtc-audio-processing-1.patch new file mode 100644 index 00000000..a2ab0ef6 --- /dev/null +++ b/package/gstreamer1/gst1-plugins-bad/0001-webrtcdsp-Update-code-for-webrtc-audio-processing-1.patch @@ -0,0 +1,883 @@ +From d5755744c3e2b70e9f04704ae9d18b928d9fa456 Mon Sep 17 00:00:00 2001 +From: Arun Raghavan +Date: Wed, 2 Dec 2020 18:31:44 -0500 +Subject: [PATCH] webrtcdsp: Update code for webrtc-audio-processing-1 + +Updated API usage appropriately, and now we have a versioned package to +track breaking vs. non-breaking updates. + +Deprecates a number of properties (and we have to plug in our own values +for related enums which are now gone): + + * echo-suprression-level + * experimental-agc + * extended-filter + * delay-agnostic + * voice-detection-frame-size-ms + * voice-detection-likelihood + +Part-of: +Signed-off-by: James Hilliard +Upstream: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/d5755744c3e2b70e9f04704ae9d18b928d9fa456 +--- + .../ext/webrtcdsp/gstwebrtcdsp.cpp | 271 +++++++----------- + .../ext/webrtcdsp/gstwebrtcechoprobe.cpp | 87 +++--- + .../ext/webrtcdsp/gstwebrtcechoprobe.h | 9 +- + .../gst-plugins-bad/ext/webrtcdsp/meson.build | 4 +- + 4 files changed, 164 insertions(+), 207 deletions(-) + +diff --git a/ext/webrtcdsp/gstwebrtcdsp.cpp b/ext/webrtcdsp/gstwebrtcdsp.cpp +index 7ee09488fb..c9a7cdae2f 100644 +--- a/ext/webrtcdsp/gstwebrtcdsp.cpp ++++ b/ext/webrtcdsp/gstwebrtcdsp.cpp +@@ -71,9 +71,7 @@ + #include "gstwebrtcdsp.h" + #include "gstwebrtcechoprobe.h" + +-#include +-#include +-#include ++#include + + GST_DEBUG_CATEGORY (webrtc_dsp_debug); + #define GST_CAT_DEFAULT (webrtc_dsp_debug) +@@ -82,10 +80,9 @@ GST_DEBUG_CATEGORY (webrtc_dsp_debug); + #define DEFAULT_COMPRESSION_GAIN_DB 9 + #define DEFAULT_STARTUP_MIN_VOLUME 12 + #define DEFAULT_LIMITER TRUE +-#define DEFAULT_GAIN_CONTROL_MODE webrtc::GainControl::kAdaptiveDigital ++#define DEFAULT_GAIN_CONTROL_MODE webrtc::AudioProcessing::Config::GainController1::Mode::kAdaptiveDigital + #define DEFAULT_VOICE_DETECTION FALSE + #define DEFAULT_VOICE_DETECTION_FRAME_SIZE_MS 10 +-#define DEFAULT_VOICE_DETECTION_LIKELIHOOD webrtc::VoiceDetection::kLowLikelihood + + static GstStaticPadTemplate gst_webrtc_dsp_sink_template = + GST_STATIC_PAD_TEMPLATE ("sink", +@@ -119,7 +116,7 @@ GST_STATIC_PAD_TEMPLATE ("src", + "channels = (int) [1, MAX]") + ); + +-typedef webrtc::EchoCancellation::SuppressionLevel GstWebrtcEchoSuppressionLevel; ++typedef int GstWebrtcEchoSuppressionLevel; + #define GST_TYPE_WEBRTC_ECHO_SUPPRESSION_LEVEL \ + (gst_webrtc_echo_suppression_level_get_type ()) + static GType +@@ -127,10 +124,9 @@ gst_webrtc_echo_suppression_level_get_type (void) + { + static GType suppression_level_type = 0; + static const GEnumValue level_types[] = { +- {webrtc::EchoCancellation::kLowSuppression, "Low Suppression", "low"}, +- {webrtc::EchoCancellation::kModerateSuppression, +- "Moderate Suppression", "moderate"}, +- {webrtc::EchoCancellation::kHighSuppression, "high Suppression", "high"}, ++ {1, "Low Suppression", "low"}, ++ {2, "Moderate Suppression", "moderate"}, ++ {3, "high Suppression", "high"}, + {0, NULL, NULL} + }; + +@@ -141,7 +137,7 @@ gst_webrtc_echo_suppression_level_get_type (void) + return suppression_level_type; + } + +-typedef webrtc::NoiseSuppression::Level GstWebrtcNoiseSuppressionLevel; ++typedef webrtc::AudioProcessing::Config::NoiseSuppression::Level GstWebrtcNoiseSuppressionLevel; + #define GST_TYPE_WEBRTC_NOISE_SUPPRESSION_LEVEL \ + (gst_webrtc_noise_suppression_level_get_type ()) + static GType +@@ -149,10 +145,10 @@ gst_webrtc_noise_suppression_level_get_type (void) + { + static GType suppression_level_type = 0; + static const GEnumValue level_types[] = { +- {webrtc::NoiseSuppression::kLow, "Low Suppression", "low"}, +- {webrtc::NoiseSuppression::kModerate, "Moderate Suppression", "moderate"}, +- {webrtc::NoiseSuppression::kHigh, "High Suppression", "high"}, +- {webrtc::NoiseSuppression::kVeryHigh, "Very High Suppression", ++ {webrtc::AudioProcessing::Config::NoiseSuppression::Level::kLow, "Low Suppression", "low"}, ++ {webrtc::AudioProcessing::Config::NoiseSuppression::Level::kModerate, "Moderate Suppression", "moderate"}, ++ {webrtc::AudioProcessing::Config::NoiseSuppression::Level::kHigh, "High Suppression", "high"}, ++ {webrtc::AudioProcessing::Config::NoiseSuppression::Level::kVeryHigh, "Very High Suppression", + "very-high"}, + {0, NULL, NULL} + }; +@@ -164,7 +160,7 @@ gst_webrtc_noise_suppression_level_get_type (void) + return suppression_level_type; + } + +-typedef webrtc::GainControl::Mode GstWebrtcGainControlMode; ++typedef webrtc::AudioProcessing::Config::GainController1::Mode GstWebrtcGainControlMode; + #define GST_TYPE_WEBRTC_GAIN_CONTROL_MODE \ + (gst_webrtc_gain_control_mode_get_type ()) + static GType +@@ -172,8 +168,9 @@ gst_webrtc_gain_control_mode_get_type (void) + { + static GType gain_control_mode_type = 0; + static const GEnumValue mode_types[] = { +- {webrtc::GainControl::kAdaptiveDigital, "Adaptive Digital", "adaptive-digital"}, +- {webrtc::GainControl::kFixedDigital, "Fixed Digital", "fixed-digital"}, ++ {webrtc::AudioProcessing::Config::GainController1::kAdaptiveDigital, "Adaptive Digital", "adaptive-digital"}, ++ {webrtc::AudioProcessing::Config::GainController1::kFixedDigital, "Fixed Digital", "fixed-digital"}, ++ {webrtc::AudioProcessing::Config::GainController1::kAdaptiveAnalog, "Adaptive Analog", "adaptive-analog"}, + {0, NULL, NULL} + }; + +@@ -184,7 +181,7 @@ gst_webrtc_gain_control_mode_get_type (void) + return gain_control_mode_type; + } + +-typedef webrtc::VoiceDetection::Likelihood GstWebrtcVoiceDetectionLikelihood; ++typedef int GstWebrtcVoiceDetectionLikelihood; + #define GST_TYPE_WEBRTC_VOICE_DETECTION_LIKELIHOOD \ + (gst_webrtc_voice_detection_likelihood_get_type ()) + static GType +@@ -192,10 +189,10 @@ gst_webrtc_voice_detection_likelihood_get_type (void) + { + static GType likelihood_type = 0; + static const GEnumValue likelihood_types[] = { +- {webrtc::VoiceDetection::kVeryLowLikelihood, "Very Low Likelihood", "very-low"}, +- {webrtc::VoiceDetection::kLowLikelihood, "Low Likelihood", "low"}, +- {webrtc::VoiceDetection::kModerateLikelihood, "Moderate Likelihood", "moderate"}, +- {webrtc::VoiceDetection::kHighLikelihood, "High Likelihood", "high"}, ++ {1, "Very Low Likelihood", "very-low"}, ++ {2, "Low Likelihood", "low"}, ++ {3, "Moderate Likelihood", "moderate"}, ++ {4, "High Likelihood", "high"}, + {0, NULL, NULL} + }; + +@@ -227,6 +224,7 @@ enum + PROP_VOICE_DETECTION, + PROP_VOICE_DETECTION_FRAME_SIZE_MS, + PROP_VOICE_DETECTION_LIKELIHOOD, ++ PROP_EXTRA_DELAY_MS, + }; + + /** +@@ -248,7 +246,7 @@ struct _GstWebrtcDsp + /* Protected by the stream lock */ + GstAdapter *adapter; + GstPlanarAudioAdapter *padapter; +- webrtc::AudioProcessing * apm; ++ webrtc::AudioProcessing *apm; + + /* Protected by the object lock */ + gchar *probe_name; +@@ -257,21 +255,15 @@ struct _GstWebrtcDsp + /* Properties */ + gboolean high_pass_filter; + gboolean echo_cancel; +- webrtc::EchoCancellation::SuppressionLevel echo_suppression_level; + gboolean noise_suppression; +- webrtc::NoiseSuppression::Level noise_suppression_level; ++ webrtc::AudioProcessing::Config::NoiseSuppression::Level noise_suppression_level; + gboolean gain_control; +- gboolean experimental_agc; +- gboolean extended_filter; +- gboolean delay_agnostic; + gint target_level_dbfs; + gint compression_gain_db; + gint startup_min_volume; + gboolean limiter; +- webrtc::GainControl::Mode gain_control_mode; ++ webrtc::AudioProcessing::Config::GainController1::Mode gain_control_mode; + gboolean voice_detection; +- gint voice_detection_frame_size_ms; +- webrtc::VoiceDetection::Likelihood voice_detection_likelihood; + }; + + G_DEFINE_TYPE_WITH_CODE (GstWebrtcDsp, gst_webrtc_dsp, GST_TYPE_AUDIO_FILTER, +@@ -376,9 +368,9 @@ gst_webrtc_dsp_analyze_reverse_stream (GstWebrtcDsp * self, + GstClockTime rec_time) + { + GstWebrtcEchoProbe *probe = NULL; +- webrtc::AudioProcessing * apm; +- webrtc::AudioFrame frame; ++ webrtc::AudioProcessing *apm; + GstBuffer *buf = NULL; ++ GstAudioBuffer abuf; + GstFlowReturn ret = GST_FLOW_OK; + gint err, delay; + +@@ -391,48 +383,44 @@ gst_webrtc_dsp_analyze_reverse_stream (GstWebrtcDsp * self, + if (!probe) + return GST_FLOW_OK; + ++ webrtc::StreamConfig config (probe->info.rate, probe->info.channels, ++ false); + apm = self->apm; + +- if (self->delay_agnostic) +- rec_time = GST_CLOCK_TIME_NONE; +- +-again: +- delay = gst_webrtc_echo_probe_read (probe, rec_time, (gpointer) &frame, &buf); ++ delay = gst_webrtc_echo_probe_read (probe, rec_time, &buf); + apm->set_stream_delay_ms (delay); + ++ g_return_val_if_fail (buf != NULL, GST_FLOW_ERROR); ++ + if (delay < 0) + goto done; + +- if (frame.sample_rate_hz_ != self->info.rate) { ++ if (probe->info.rate != self->info.rate) { + GST_ELEMENT_ERROR (self, STREAM, FORMAT, + ("Echo Probe has rate %i , while the DSP is running at rate %i," + " use a caps filter to ensure those are the same.", +- frame.sample_rate_hz_, self->info.rate), (NULL)); ++ probe->info.rate, self->info.rate), (NULL)); + ret = GST_FLOW_ERROR; + goto done; + } + +- if (buf) { +- webrtc::StreamConfig config (frame.sample_rate_hz_, frame.num_channels_, +- false); +- GstAudioBuffer abuf; +- float * const * data; ++ gst_audio_buffer_map (&abuf, &self->info, buf, GST_MAP_READWRITE); ++ ++ if (probe->interleaved) { ++ int16_t * const data = (int16_t * const) abuf.planes[0]; + +- gst_audio_buffer_map (&abuf, &self->info, buf, GST_MAP_READWRITE); +- data = (float * const *) abuf.planes; + if ((err = apm->ProcessReverseStream (data, config, config, data)) < 0) + GST_WARNING_OBJECT (self, "Reverse stream analyses failed: %s.", + webrtc_error_to_string (err)); +- gst_audio_buffer_unmap (&abuf); +- gst_buffer_replace (&buf, NULL); + } else { +- if ((err = apm->AnalyzeReverseStream (&frame)) < 0) ++ float * const * data = (float * const *) abuf.planes; ++ ++ if ((err = apm->ProcessReverseStream (data, config, config, data)) < 0) + GST_WARNING_OBJECT (self, "Reverse stream analyses failed: %s.", + webrtc_error_to_string (err)); + } + +- if (self->delay_agnostic) +- goto again; ++ gst_audio_buffer_unmap (&abuf); + + done: + gst_object_unref (probe); +@@ -443,16 +431,14 @@ done: + + static void + gst_webrtc_vad_post_activity (GstWebrtcDsp *self, GstBuffer *buffer, +- gboolean stream_has_voice) ++ gboolean stream_has_voice, guint8 level) + { + GstClockTime timestamp = GST_BUFFER_PTS (buffer); + GstBaseTransform *trans = GST_BASE_TRANSFORM_CAST (self); + GstStructure *s; + GstClockTime stream_time; + GstAudioLevelMeta *meta; +- guint8 level; + +- level = self->apm->level_estimator ()->RMS (); + meta = gst_buffer_get_audio_level_meta (buffer); + if (meta) { + meta->voice_activity = stream_has_voice; +@@ -481,6 +467,7 @@ gst_webrtc_dsp_process_stream (GstWebrtcDsp * self, + { + GstAudioBuffer abuf; + webrtc::AudioProcessing * apm = self->apm; ++ webrtc::StreamConfig config (self->info.rate, self->info.channels, false); + gint err; + + if (!gst_audio_buffer_map (&abuf, &self->info, buffer, +@@ -490,19 +477,10 @@ gst_webrtc_dsp_process_stream (GstWebrtcDsp * self, + } + + if (self->interleaved) { +- webrtc::AudioFrame frame; +- frame.num_channels_ = self->info.channels; +- frame.sample_rate_hz_ = self->info.rate; +- frame.samples_per_channel_ = self->period_samples; +- +- memcpy (frame.data_, abuf.planes[0], self->period_size); +- err = apm->ProcessStream (&frame); +- if (err >= 0) +- memcpy (abuf.planes[0], frame.data_, self->period_size); ++ int16_t * const data = (int16_t * const) abuf.planes[0]; ++ err = apm->ProcessStream (data, config, config, data); + } else { + float * const * data = (float * const *) abuf.planes; +- webrtc::StreamConfig config (self->info.rate, self->info.channels, false); +- + err = apm->ProcessStream (data, config, config, data); + } + +@@ -511,10 +489,13 @@ gst_webrtc_dsp_process_stream (GstWebrtcDsp * self, + webrtc_error_to_string (err)); + } else { + if (self->voice_detection) { +- gboolean stream_has_voice = apm->voice_detection ()->stream_has_voice (); ++ webrtc::AudioProcessingStats stats = apm->GetStatistics (); ++ gboolean stream_has_voice = stats.voice_detected && *stats.voice_detected; ++ // The meta takes the value as -dbov, so we negate ++ guint8 level = stats.output_rms_dbfs ? (guint8) -(*stats.output_rms_dbfs) : 127; + + if (stream_has_voice != self->stream_has_voice) +- gst_webrtc_vad_post_activity (self, buffer, stream_has_voice); ++ gst_webrtc_vad_post_activity (self, buffer, stream_has_voice, level); + + self->stream_has_voice = stream_has_voice; + } +@@ -583,21 +564,9 @@ static gboolean + gst_webrtc_dsp_start (GstBaseTransform * btrans) + { + GstWebrtcDsp *self = GST_WEBRTC_DSP (btrans); +- webrtc::Config config; + + GST_OBJECT_LOCK (self); + +- config.Set < webrtc::ExtendedFilter > +- (new webrtc::ExtendedFilter (self->extended_filter)); +- config.Set < webrtc::ExperimentalAgc > +- (new webrtc::ExperimentalAgc (self->experimental_agc, self->startup_min_volume)); +- config.Set < webrtc::DelayAgnostic > +- (new webrtc::DelayAgnostic (self->delay_agnostic)); +- +- /* TODO Intelligibility enhancer, Beamforming, etc. */ +- +- self->apm = webrtc::AudioProcessing::Create (config); +- + if (self->echo_cancel) { + self->probe = gst_webrtc_acquire_echo_probe (self->probe_name); + +@@ -618,10 +587,8 @@ static gboolean + gst_webrtc_dsp_setup (GstAudioFilter * filter, const GstAudioInfo * info) + { + GstWebrtcDsp *self = GST_WEBRTC_DSP (filter); +- webrtc::AudioProcessing * apm; +- webrtc::ProcessingConfig pconfig; ++ webrtc::AudioProcessing::Config config; + GstAudioInfo probe_info = *info; +- gint err = 0; + + GST_LOG_OBJECT (self, "setting format to %s with %i Hz and %i channels", + info->finfo->description, info->rate, info->channels); +@@ -633,7 +600,7 @@ gst_webrtc_dsp_setup (GstAudioFilter * filter, const GstAudioInfo * info) + + self->info = *info; + self->interleaved = (info->layout == GST_AUDIO_LAYOUT_INTERLEAVED); +- apm = self->apm; ++ self->apm = webrtc::AudioProcessingBuilder().Create(); + + if (!self->interleaved) + gst_planar_audio_adapter_configure (self->padapter, info); +@@ -642,8 +609,7 @@ gst_webrtc_dsp_setup (GstAudioFilter * filter, const GstAudioInfo * info) + self->period_samples = info->rate / 100; + self->period_size = self->period_samples * info->bpf; + +- if (self->interleaved && +- (webrtc::AudioFrame::kMaxDataSizeSamples * 2) < self->period_size) ++ if (self->interleaved && (self->period_size > MAX_DATA_SIZE_SAMPLES * 2)) + goto period_too_big; + + if (self->probe) { +@@ -658,40 +624,31 @@ gst_webrtc_dsp_setup (GstAudioFilter * filter, const GstAudioInfo * info) + GST_WEBRTC_ECHO_PROBE_UNLOCK (self->probe); + } + +- /* input stream */ +- pconfig.streams[webrtc::ProcessingConfig::kInputStream] = +- webrtc::StreamConfig (info->rate, info->channels, false); +- /* output stream */ +- pconfig.streams[webrtc::ProcessingConfig::kOutputStream] = +- webrtc::StreamConfig (info->rate, info->channels, false); +- /* reverse input stream */ +- pconfig.streams[webrtc::ProcessingConfig::kReverseInputStream] = +- webrtc::StreamConfig (probe_info.rate, probe_info.channels, false); +- /* reverse output stream */ +- pconfig.streams[webrtc::ProcessingConfig::kReverseOutputStream] = +- webrtc::StreamConfig (probe_info.rate, probe_info.channels, false); +- +- if ((err = apm->Initialize (pconfig)) < 0) +- goto initialize_failed; +- + /* Setup Filters */ ++ // TODO: expose pre_amplifier ++ + if (self->high_pass_filter) { + GST_DEBUG_OBJECT (self, "Enabling High Pass filter"); +- apm->high_pass_filter ()->Enable (true); ++ config.high_pass_filter.enabled = true; + } + + if (self->echo_cancel) { + GST_DEBUG_OBJECT (self, "Enabling Echo Cancellation"); +- apm->echo_cancellation ()->enable_drift_compensation (false); +- apm->echo_cancellation () +- ->set_suppression_level (self->echo_suppression_level); +- apm->echo_cancellation ()->Enable (true); ++ config.echo_canceller.enabled = true; + } + + if (self->noise_suppression) { + GST_DEBUG_OBJECT (self, "Enabling Noise Suppression"); +- apm->noise_suppression ()->set_level (self->noise_suppression_level); +- apm->noise_suppression ()->Enable (true); ++ config.noise_suppression.enabled = true; ++ config.noise_suppression.level = self->noise_suppression_level; ++ } ++ ++ // TODO: expose transient suppression ++ ++ if (self->voice_detection) { ++ GST_DEBUG_OBJECT (self, "Enabling Voice Activity Detection"); ++ config.voice_detection.enabled = true; ++ self->stream_has_voice = FALSE; + } + + if (self->gain_control) { +@@ -706,30 +663,17 @@ gst_webrtc_dsp_setup (GstAudioFilter * filter, const GstAudioInfo * info) + + g_type_class_unref (mode_class); + +- apm->gain_control ()->set_mode (self->gain_control_mode); +- apm->gain_control ()->set_target_level_dbfs (self->target_level_dbfs); +- apm->gain_control ()->set_compression_gain_db (self->compression_gain_db); +- apm->gain_control ()->enable_limiter (self->limiter); +- apm->gain_control ()->Enable (true); ++ config.gain_controller1.enabled = true; ++ config.gain_controller1.target_level_dbfs = self->target_level_dbfs; ++ config.gain_controller1.compression_gain_db = self->compression_gain_db; ++ config.gain_controller1.enable_limiter = self->limiter; ++ config.level_estimation.enabled = true; + } + +- if (self->voice_detection) { +- GEnumClass *likelihood_class = (GEnumClass *) +- g_type_class_ref (GST_TYPE_WEBRTC_VOICE_DETECTION_LIKELIHOOD); +- GST_DEBUG_OBJECT (self, "Enabling Voice Activity Detection, frame size " +- "%d milliseconds, likelihood: %s", self->voice_detection_frame_size_ms, +- g_enum_get_value (likelihood_class, +- self->voice_detection_likelihood)->value_name); +- g_type_class_unref (likelihood_class); ++ // TODO: expose gain controller 2 ++ // TODO: expose residual echo detector + +- self->stream_has_voice = FALSE; +- +- apm->voice_detection ()->Enable (true); +- apm->voice_detection ()->set_likelihood (self->voice_detection_likelihood); +- apm->voice_detection ()->set_frame_size_ms ( +- self->voice_detection_frame_size_ms); +- apm->level_estimator ()->Enable (true); +- } ++ self->apm->ApplyConfig (config); + + GST_OBJECT_UNLOCK (self); + +@@ -738,9 +682,9 @@ gst_webrtc_dsp_setup (GstAudioFilter * filter, const GstAudioInfo * info) + period_too_big: + GST_OBJECT_UNLOCK (self); + GST_WARNING_OBJECT (self, "webrtcdsp format produce too big period " +- "(maximum is %" G_GSIZE_FORMAT " samples and we have %u samples), " ++ "(maximum is %d samples and we have %u samples), " + "reduce the number of channels or the rate.", +- webrtc::AudioFrame::kMaxDataSizeSamples, self->period_size / 2); ++ MAX_DATA_SIZE_SAMPLES, self->period_size / 2); + return FALSE; + + probe_has_wrong_rate: +@@ -751,14 +695,6 @@ probe_has_wrong_rate: + " use a caps filter to ensure those are the same.", + probe_info.rate, info->rate), (NULL)); + return FALSE; +- +-initialize_failed: +- GST_OBJECT_UNLOCK (self); +- GST_ELEMENT_ERROR (self, LIBRARY, INIT, +- ("Failed to initialize WebRTC Audio Processing library"), +- ("webrtc::AudioProcessing::Initialize() failed: %s", +- webrtc_error_to_string (err))); +- return FALSE; + } + + static gboolean +@@ -803,8 +739,6 @@ gst_webrtc_dsp_set_property (GObject * object, + self->echo_cancel = g_value_get_boolean (value); + break; + case PROP_ECHO_SUPPRESSION_LEVEL: +- self->echo_suppression_level = +- (GstWebrtcEchoSuppressionLevel) g_value_get_enum (value); + break; + case PROP_NOISE_SUPPRESSION: + self->noise_suppression = g_value_get_boolean (value); +@@ -817,13 +751,10 @@ gst_webrtc_dsp_set_property (GObject * object, + self->gain_control = g_value_get_boolean (value); + break; + case PROP_EXPERIMENTAL_AGC: +- self->experimental_agc = g_value_get_boolean (value); + break; + case PROP_EXTENDED_FILTER: +- self->extended_filter = g_value_get_boolean (value); + break; + case PROP_DELAY_AGNOSTIC: +- self->delay_agnostic = g_value_get_boolean (value); + break; + case PROP_TARGET_LEVEL_DBFS: + self->target_level_dbfs = g_value_get_int (value); +@@ -845,11 +776,8 @@ gst_webrtc_dsp_set_property (GObject * object, + self->voice_detection = g_value_get_boolean (value); + break; + case PROP_VOICE_DETECTION_FRAME_SIZE_MS: +- self->voice_detection_frame_size_ms = g_value_get_int (value); + break; + case PROP_VOICE_DETECTION_LIKELIHOOD: +- self->voice_detection_likelihood = +- (GstWebrtcVoiceDetectionLikelihood) g_value_get_enum (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); +@@ -876,7 +804,7 @@ gst_webrtc_dsp_get_property (GObject * object, + g_value_set_boolean (value, self->echo_cancel); + break; + case PROP_ECHO_SUPPRESSION_LEVEL: +- g_value_set_enum (value, self->echo_suppression_level); ++ g_value_set_enum (value, (GstWebrtcEchoSuppressionLevel) 2); + break; + case PROP_NOISE_SUPPRESSION: + g_value_set_boolean (value, self->noise_suppression); +@@ -888,13 +816,13 @@ gst_webrtc_dsp_get_property (GObject * object, + g_value_set_boolean (value, self->gain_control); + break; + case PROP_EXPERIMENTAL_AGC: +- g_value_set_boolean (value, self->experimental_agc); ++ g_value_set_boolean (value, false); + break; + case PROP_EXTENDED_FILTER: +- g_value_set_boolean (value, self->extended_filter); ++ g_value_set_boolean (value, false); + break; + case PROP_DELAY_AGNOSTIC: +- g_value_set_boolean (value, self->delay_agnostic); ++ g_value_set_boolean (value, false); + break; + case PROP_TARGET_LEVEL_DBFS: + g_value_set_int (value, self->target_level_dbfs); +@@ -915,10 +843,10 @@ gst_webrtc_dsp_get_property (GObject * object, + g_value_set_boolean (value, self->voice_detection); + break; + case PROP_VOICE_DETECTION_FRAME_SIZE_MS: +- g_value_set_int (value, self->voice_detection_frame_size_ms); ++ g_value_set_int (value, 0); + break; + case PROP_VOICE_DETECTION_LIKELIHOOD: +- g_value_set_enum (value, self->voice_detection_likelihood); ++ g_value_set_enum (value, 2); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); +@@ -1005,13 +933,13 @@ gst_webrtc_dsp_class_init (GstWebrtcDspClass * klass) + + g_object_class_install_property (gobject_class, + PROP_ECHO_SUPPRESSION_LEVEL, +- g_param_spec_enum ("echo-suppression-level", "Echo Suppression Level", ++ g_param_spec_enum ("echo-suppression-level", ++ "Echo Suppression Level (does nothing)", + "Controls the aggressiveness of the suppressor. A higher level " + "trades off double-talk performance for increased echo suppression.", +- GST_TYPE_WEBRTC_ECHO_SUPPRESSION_LEVEL, +- webrtc::EchoCancellation::kModerateSuppression, ++ GST_TYPE_WEBRTC_ECHO_SUPPRESSION_LEVEL, 2, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | +- G_PARAM_CONSTRUCT))); ++ G_PARAM_CONSTRUCT | G_PARAM_DEPRECATED))); + + g_object_class_install_property (gobject_class, + PROP_NOISE_SUPPRESSION, +@@ -1026,7 +954,7 @@ gst_webrtc_dsp_class_init (GstWebrtcDspClass * klass) + "Controls the aggressiveness of the suppression. Increasing the " + "level will reduce the noise level at the expense of a higher " + "speech distortion.", GST_TYPE_WEBRTC_NOISE_SUPPRESSION_LEVEL, +- webrtc::EchoCancellation::kModerateSuppression, ++ webrtc::AudioProcessing::Config::NoiseSuppression::Level::kModerate, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | + G_PARAM_CONSTRUCT))); + +@@ -1039,24 +967,26 @@ gst_webrtc_dsp_class_init (GstWebrtcDspClass * klass) + + g_object_class_install_property (gobject_class, + PROP_EXPERIMENTAL_AGC, +- g_param_spec_boolean ("experimental-agc", "Experimental AGC", ++ g_param_spec_boolean ("experimental-agc", ++ "Experimental AGC (does nothing)", + "Enable or disable experimental automatic gain control.", + FALSE, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | +- G_PARAM_CONSTRUCT))); ++ G_PARAM_CONSTRUCT | G_PARAM_DEPRECATED))); + + g_object_class_install_property (gobject_class, + PROP_EXTENDED_FILTER, + g_param_spec_boolean ("extended-filter", "Extended Filter", + "Enable or disable the extended filter.", + TRUE, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | +- G_PARAM_CONSTRUCT))); ++ G_PARAM_CONSTRUCT | G_PARAM_DEPRECATED))); + + g_object_class_install_property (gobject_class, + PROP_DELAY_AGNOSTIC, +- g_param_spec_boolean ("delay-agnostic", "Delay Agnostic", ++ g_param_spec_boolean ("delay-agnostic", ++ "Delay agnostic mode (does nothing)", + "Enable or disable the delay agnostic mode.", + FALSE, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | +- G_PARAM_CONSTRUCT))); ++ G_PARAM_CONSTRUCT | G_PARAM_DEPRECATED))); + + g_object_class_install_property (gobject_class, + PROP_TARGET_LEVEL_DBFS, +@@ -1111,24 +1041,23 @@ gst_webrtc_dsp_class_init (GstWebrtcDspClass * klass) + g_object_class_install_property (gobject_class, + PROP_VOICE_DETECTION_FRAME_SIZE_MS, + g_param_spec_int ("voice-detection-frame-size-ms", +- "Voice Detection Frame Size Milliseconds", ++ "Voice detection frame size in milliseconds (does nothing)", + "Sets the |size| of the frames in ms on which the VAD will operate. " + "Larger frames will improve detection accuracy, but reduce the " + "frequency of updates", + 10, 30, DEFAULT_VOICE_DETECTION_FRAME_SIZE_MS, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | +- G_PARAM_CONSTRUCT))); ++ G_PARAM_CONSTRUCT | G_PARAM_DEPRECATED))); + + g_object_class_install_property (gobject_class, + PROP_VOICE_DETECTION_LIKELIHOOD, + g_param_spec_enum ("voice-detection-likelihood", +- "Voice Detection Likelihood", ++ "Voice detection likelihood (does nothing)", + "Specifies the likelihood that a frame will be declared to contain " + "voice.", +- GST_TYPE_WEBRTC_VOICE_DETECTION_LIKELIHOOD, +- DEFAULT_VOICE_DETECTION_LIKELIHOOD, ++ GST_TYPE_WEBRTC_VOICE_DETECTION_LIKELIHOOD, 2, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | +- G_PARAM_CONSTRUCT))); ++ G_PARAM_CONSTRUCT | G_PARAM_DEPRECATED))); + + gst_type_mark_as_plugin_api (GST_TYPE_WEBRTC_GAIN_CONTROL_MODE, (GstPluginAPIFlags) 0); + gst_type_mark_as_plugin_api (GST_TYPE_WEBRTC_NOISE_SUPPRESSION_LEVEL, (GstPluginAPIFlags) 0); +diff --git a/ext/webrtcdsp/gstwebrtcechoprobe.cpp b/ext/webrtcdsp/gstwebrtcechoprobe.cpp +index acdb3d8a7d..8e8ca064c4 100644 +--- a/ext/webrtcdsp/gstwebrtcechoprobe.cpp ++++ b/ext/webrtcdsp/gstwebrtcechoprobe.cpp +@@ -33,7 +33,8 @@ + + #include "gstwebrtcechoprobe.h" + +-#include ++#include ++ + #include + + GST_DEBUG_CATEGORY_EXTERN (webrtc_dsp_debug); +@@ -102,7 +103,7 @@ gst_webrtc_echo_probe_setup (GstAudioFilter * filter, const GstAudioInfo * info) + self->period_size = self->period_samples * info->bpf; + + if (self->interleaved && +- (webrtc::AudioFrame::kMaxDataSizeSamples * 2) < self->period_size) ++ (MAX_DATA_SIZE_SAMPLES * 2) < self->period_size) + goto period_too_big; + + GST_WEBRTC_ECHO_PROBE_UNLOCK (self); +@@ -112,9 +113,9 @@ gst_webrtc_echo_probe_setup (GstAudioFilter * filter, const GstAudioInfo * info) + period_too_big: + GST_WEBRTC_ECHO_PROBE_UNLOCK (self); + GST_WARNING_OBJECT (self, "webrtcdsp format produce too big period " +- "(maximum is %" G_GSIZE_FORMAT " samples and we have %u samples), " ++ "(maximum is %d samples and we have %u samples), " + "reduce the number of channels or the rate.", +- webrtc::AudioFrame::kMaxDataSizeSamples, self->period_size / 2); ++ MAX_DATA_SIZE_SAMPLES, self->period_size / 2); + return FALSE; + } + +@@ -303,18 +304,20 @@ gst_webrtc_release_echo_probe (GstWebrtcEchoProbe * probe) + + gint + gst_webrtc_echo_probe_read (GstWebrtcEchoProbe * self, GstClockTime rec_time, +- gpointer _frame, GstBuffer ** buf) ++ GstBuffer ** buf) + { +- webrtc::AudioFrame * frame = (webrtc::AudioFrame *) _frame; + GstClockTimeDiff diff; +- gsize avail, skip, offset, size; ++ gsize avail, skip, offset, size = 0; + gint delay = -1; + + GST_WEBRTC_ECHO_PROBE_LOCK (self); + ++ /* We always return a buffer -- if don't have data (size == 0), we generate a ++ * silence buffer */ ++ + if (!GST_CLOCK_TIME_IS_VALID (self->latency) || + !GST_AUDIO_INFO_IS_VALID (&self->info)) +- goto done; ++ goto copy; + + if (self->interleaved) + avail = gst_adapter_available (self->adapter) / self->info.bpf; +@@ -324,7 +327,7 @@ gst_webrtc_echo_probe_read (GstWebrtcEchoProbe * self, GstClockTime rec_time, + /* In delay agnostic mode, just return 10ms of data */ + if (!GST_CLOCK_TIME_IS_VALID (rec_time)) { + if (avail < self->period_samples) +- goto done; ++ goto copy; + + size = self->period_samples; + skip = 0; +@@ -371,23 +374,51 @@ gst_webrtc_echo_probe_read (GstWebrtcEchoProbe * self, GstClockTime rec_time, + size = MIN (avail - offset, self->period_samples - skip); + + copy: +- if (self->interleaved) { +- skip *= self->info.bpf; +- offset *= self->info.bpf; +- size *= self->info.bpf; +- +- if (size < self->period_size) +- memset (frame->data_, 0, self->period_size); +- +- if (size) { +- gst_adapter_copy (self->adapter, (guint8 *) frame->data_ + skip, +- offset, size); +- gst_adapter_flush (self->adapter, offset + size); +- } ++ if (!size) { ++ /* No data, provide a period's worth of silence */ ++ *buf = gst_buffer_new_allocate (NULL, self->period_size, NULL); ++ gst_buffer_memset (*buf, 0, 0, self->period_size); ++ gst_buffer_add_audio_meta (*buf, &self->info, self->period_samples, ++ NULL); + } else { ++ /* We have some actual data, pop period_samples' worth if have it, else pad ++ * with silence and provide what we do have */ + GstBuffer *ret, *taken, *tmp; + +- if (size) { ++ if (self->interleaved) { ++ skip *= self->info.bpf; ++ offset *= self->info.bpf; ++ size *= self->info.bpf; ++ ++ gst_adapter_flush (self->adapter, offset); ++ ++ /* we need to fill silence at the beginning and/or the end of the ++ * buffer in order to have period_samples in the buffer */ ++ if (size < self->period_size) { ++ gsize padding = self->period_size - (skip + size); ++ ++ taken = gst_adapter_take_buffer (self->adapter, size); ++ ret = gst_buffer_new (); ++ ++ /* need some silence at the beginning */ ++ if (skip) { ++ tmp = gst_buffer_new_allocate (NULL, skip, NULL); ++ gst_buffer_memset (tmp, 0, 0, skip); ++ ret = gst_buffer_append (ret, tmp); ++ } ++ ++ ret = gst_buffer_append (ret, taken); ++ ++ /* need some silence at the end */ ++ if (padding) { ++ tmp = gst_buffer_new_allocate (NULL, padding, NULL); ++ gst_buffer_memset (tmp, 0, 0, padding); ++ ret = gst_buffer_append (ret, tmp); ++ } ++ } else { ++ ret = gst_adapter_take_buffer (self->adapter, size); ++ } ++ } else { + gst_planar_audio_adapter_flush (self->padapter, offset); + + /* we need to fill silence at the beginning and/or the end of each +@@ -430,23 +461,13 @@ copy: + ret = gst_planar_audio_adapter_take_buffer (self->padapter, size, + GST_MAP_READWRITE); + } +- } else { +- ret = gst_buffer_new_allocate (NULL, self->period_size, NULL); +- gst_buffer_memset (ret, 0, 0, self->period_size); +- gst_buffer_add_audio_meta (ret, &self->info, self->period_samples, +- NULL); + } + + *buf = ret; + } + +- frame->num_channels_ = self->info.channels; +- frame->sample_rate_hz_ = self->info.rate; +- frame->samples_per_channel_ = self->period_samples; +- + delay = self->delay; + +-done: + GST_WEBRTC_ECHO_PROBE_UNLOCK (self); + + return delay; +diff --git a/ext/webrtcdsp/gstwebrtcechoprobe.h b/ext/webrtcdsp/gstwebrtcechoprobe.h +index 36fd34f179..488c0e958f 100644 +--- a/ext/webrtcdsp/gstwebrtcechoprobe.h ++++ b/ext/webrtcdsp/gstwebrtcechoprobe.h +@@ -45,6 +45,12 @@ G_BEGIN_DECLS + #define GST_WEBRTC_ECHO_PROBE_LOCK(obj) g_mutex_lock (&GST_WEBRTC_ECHO_PROBE (obj)->lock) + #define GST_WEBRTC_ECHO_PROBE_UNLOCK(obj) g_mutex_unlock (&GST_WEBRTC_ECHO_PROBE (obj)->lock) + ++/* From the webrtc audio_frame.h definition of kMaxDataSizeSamples: ++ * Stereo, 32 kHz, 120 ms (2 * 32 * 120) ++ * Stereo, 192 kHz, 20 ms (2 * 192 * 20) ++ */ ++#define MAX_DATA_SIZE_SAMPLES 7680 ++ + typedef struct _GstWebrtcEchoProbe GstWebrtcEchoProbe; + typedef struct _GstWebrtcEchoProbeClass GstWebrtcEchoProbeClass; + +@@ -71,6 +77,7 @@ struct _GstWebrtcEchoProbe + GstClockTime latency; + gint delay; + gboolean interleaved; ++ gint extra_delay; + + GstSegment segment; + GstAdapter *adapter; +@@ -92,7 +99,7 @@ GST_ELEMENT_REGISTER_DECLARE (webrtcechoprobe); + GstWebrtcEchoProbe *gst_webrtc_acquire_echo_probe (const gchar * name); + void gst_webrtc_release_echo_probe (GstWebrtcEchoProbe * probe); + gint gst_webrtc_echo_probe_read (GstWebrtcEchoProbe * self, +- GstClockTime rec_time, gpointer frame, GstBuffer ** buf); ++ GstClockTime rec_time, GstBuffer ** buf); + + G_END_DECLS + #endif /* __GST_WEBRTC_ECHO_PROBE_H__ */ +diff --git a/ext/webrtcdsp/meson.build b/ext/webrtcdsp/meson.build +index 5aeae69a44..09565e27c7 100644 +--- a/ext/webrtcdsp/meson.build ++++ b/ext/webrtcdsp/meson.build +@@ -4,7 +4,7 @@ webrtc_sources = [ + 'gstwebrtcdspplugin.cpp' + ] + +-webrtc_dep = dependency('webrtc-audio-processing', version : ['>= 0.2', '< 0.4'], ++webrtc_dep = dependency('webrtc-audio-processing-1', version : ['>= 1.0'], + required : get_option('webrtcdsp')) + + if not gnustl_dep.found() and get_option('webrtcdsp').enabled() +@@ -20,7 +20,7 @@ if webrtc_dep.found() and gnustl_dep.found() + dependencies : [gstbase_dep, gstaudio_dep, gstbadaudio_dep, webrtc_dep, gnustl_dep], + install : true, + install_dir : plugins_install_dir, +- override_options : ['cpp_std=c++11'], ++ override_options : ['cpp_std=c++17'], + ) + plugins += [gstwebrtcdsp] + endif +-- +2.34.1 + diff --git a/package/gstreamer1/gst1-plugins-bad/Config.in b/package/gstreamer1/gst1-plugins-bad/Config.in new file mode 100644 index 00000000..e85ec167 --- /dev/null +++ b/package/gstreamer1/gst1-plugins-bad/Config.in @@ -0,0 +1,759 @@ +menuconfig BR2_PACKAGE_GST1_PLUGINS_BAD + bool "gst1-plugins-bad" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_GST1_PLUGINS_BASE + help + A set of plug-ins for GStreamer that may be of poor quality + or lacking some features. + + https://gstreamer.freedesktop.org/ + +if BR2_PACKAGE_GST1_PLUGINS_BAD + +comment "dependency-less plugins" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ACCURIP + bool "accurip" + help + Accurip plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ADPCMDEC + bool "adpcmdec" + help + ADPCM decoder + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ADPCMENC + bool "adpcmenc" + help + ADPCM encoder + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AIFF + bool "aiff" + help + Create and parse Audio interchange File Format (AIFF) files + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ASFMUX + bool "asfmux" + help + ASF Muxer Plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOBUFFERSPLIT + bool "audiobuffersplit" + help + Audio buffersplit plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOFXBAD + bool "audiofxbad" + help + Audio filters plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOLATENCY + bool "audiolatency" + help + Audio latency plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOMIXMATRIX + bool "audiomixmatrix" + help + Audio N:M mixer plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOVISUALIZERS + bool "audiovisualizers" + help + Creates video visualizations of audio input + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUTOCONVERT + bool "autoconvert" + help + Selects convertor element based on caps + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_BAYER + bool "bayer" + help + Elements to convert Bayer images + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CAMERABIN2 + bool "camerabin2" + help + Take image snapshots and record movies from camera + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CODECALPHA + bool "codecalpha" + help + Elements for VP8/VP9 alpha support (codecalphademux, + alphacombine, vp8alphadecodebin, vp9alphadecodebin) + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_COLOREFFECTS + bool "coloreffects" + help + Color Look-up Table filters + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DEBUGUTILS + bool "debugutils" + help + Collection of elements that may or may not be useful for + debugging + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVBSUBENC + bool "dvbsubenc" + help + DVB subpicture encoding support + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVBSUBOVERLAY + bool "dvbsuboverlay" + help + DVB subtitle renderer plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVDSPU + bool "dvdspu" + help + DVD Sub-picture Overlay element + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FACEOVERLAY + bool "faceoverlay" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FESTIVAL + bool "festival" + help + Synthesizes plain text into audio + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FIELDANALYSIS + bool "fieldanalysis" + help + Video field analysis + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FREEVERB + bool "freeverb" + help + Reverberation/room effect + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FREI0R + bool "frei0r" + help + frei0r plugin library + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GAUDIEFFECTS + bool "gaudieffects" + help + Gaudi video effects + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GEOMETRICTRANSFORM + bool "geometrictransform" + help + Various geometric image transform elements + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GDP + bool "gdp" + help + Payload/depayload GDP packets + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ID3TAG + bool "id3tag" + help + ID3 v1 and v2 muxing plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_INTER + bool "inter" + help + plugin for inter-pipeline communication + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_INTERLACE + bool "interlace" + help + Create an interlaced video stream + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IVFPARSE + bool "ivfparse" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IVTC + bool "ivtc" + help + Inverse Telecine plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_JP2KDECIMATOR + bool "jp2kdecimator" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_JPEGFORMAT + bool "jpegformat" + help + JPEG interchange format plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIBRFB + bool "librfb" + help + Connects to a VNC server and decodes RFB stream + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MIDI + bool "midi" + help + MIDI plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGDEMUX + bool "mpegdemux" + help + MPEG-PS demuxer + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSDEMUX + bool "mpegtsdemux" + help + MPEG TS demuxer + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSMUX + bool "mpegtsmux" + help + MPEG-TS muxer + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGPSMUX + bool "mpegpsmux" + help + MPEG-PS muxer + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MXF + bool "mxf" + help + MXF plugin library + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NETSIM + bool "netsim" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ONVIF + bool "onvif" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PCAPPARSE + bool "pcapparse" + help + Element parsing raw pcap streams + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PNM + bool "pnm" + help + PNM plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PROXY + bool "proxy" + help + Proxy plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RAWPARSE + bool "rawparse" + help + Parses byte streams into raw frames + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_REMOVESILENCE + bool "removesilence" + help + Removes silence from an audio stream + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RIST + bool "rist" + help + RIST streaming + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTMP2 + bool "rtmp2" + help + RTMP sink/source (rtmp2sink, rtmp2src) + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTP2 + bool "rtp" + help + RTP (rtpsrc/rtpsink) + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTMP + bool "rtmp" + select BR2_PACKAGE_RTMPDUMP + help + RTMP plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDP + bool "sdp" + help + configure streaming sessions using SDP + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SEGMENTCLIP + bool "segmentclip" + help + Segment clip elements + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SIREN + bool "siren" + help + Siren encoder/decoder/payloader/depayloader plugins + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SMOOTH + bool "smooth" + help + Apply a smooth filter to an image + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SPEED + bool "speed" + help + Set speed/pitch on audio/raw streams (resampler) + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SUBENC + bool "subenc" + help + subtitle encoders + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SWITCHBIN + bool "switchbin" + help + Switching between paths based on input caps + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TIMECODE + bool "timecode" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOFILTERS + bool "videofilters" + help + Video filters in gst-plugins-bad + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOFRAME_AUDIOLEVEL + bool "videoframe_audiolevel" + help + videoframe_audiolevel + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOPARSERS + bool "videoparsers" + help + videoparsers + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOSIGNAL + bool "videosignal" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VMNC + bool "vmnc" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_Y4M + bool "y4m" + help + Demuxes/decodes YUV4MPEG streams + +comment "plugins with external dependencies" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AES + bool "aes" + select BR2_PACKAGE_OPENSSL + help + "AES encryption/decryption plugin" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ASSRENDER + bool "assrender" + depends on BR2_INSTALL_LIBSTDCPP # libass -> harfbuzz + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libass -> harfbuzz + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libass -> harfbuzz + select BR2_PACKAGE_LIBASS + +comment "assrender plugin needs a toolchain w/ C++, gcc >= 4.9" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_BLUEZ + bool "bluez" + depends on BR2_USE_WCHAR # bluez5_utils -> libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # bluez5_utils -> dbus, libglib2 + depends on BR2_USE_MMU # bluez5_utils -> dbus + depends on !BR2_STATIC_LIBS # bluez5_utils -> uses dlfcn + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # bluez5_utils + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # bluez5_utils + select BR2_PACKAGE_BLUEZ5_UTILS + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_AUDIO # runtime + help + Bluetooth audio A2DP/AVDTP sink, AVDTP source plugin + +comment "bluez plugin needs a toolchain w/ wchar, threads, headers >= 3.4, dynamic library" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 || BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_USE_MMU + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_BZ2 + bool "bz2" + select BR2_PACKAGE_BZIP2 + help + Compress or decompress streams + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CURL + bool "curl" + select BR2_PACKAGE_LIBCURL + help + libcurl-based elements + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DASH + bool "dash" + select BR2_PACKAGE_LIBXML2 + help + DASH demuxer plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DECKLINK + bool "decklink" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS # + help + Blackmagic Decklink plugin + +comment "decklink needs a toolchain w/ C++, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DIRECTFB + bool "directfb" + default y + depends on BR2_PACKAGE_DIRECTFB + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVB + bool "dvb" + # FEC_2_5 / QAM_4_NR definitions + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 + select BR2_PACKAGE_DTV_SCAN_TABLES + help + DVB elements + +comment "dvb needs a toolchain w/ headers >= 3.7" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FAAD + bool "faad" + select BR2_PACKAGE_FAAD2 + help + Free AAC Decoder (FAAD) + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FBDEV + bool "fbdev" + help + Linux framebuffer video sink + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FDK_AAC + bool "fdk-aac" + depends on BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_FDK_AAC + help + MPEG AAC encoder/decoder + +comment "fdk-aac needs a toolchain w/ C++" + depends on BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FLUIDSYNTH + bool "fluidsynth" + depends on !BR2_STATIC_LIBS # fluidsynth + depends on BR2_USE_WCHAR # fluidsynth + depends on BR2_TOOLCHAIN_HAS_THREADS # fluidsynth + depends on BR2_USE_MMU # fluidsynth + select BR2_PACKAGE_FLUIDSYNTH + help + Fluidsynth MIDI decoder plugin + +comment "fluidsynth needs a toolchain w/ threads, wchar, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GL + bool "gl" + default y + depends on BR2_PACKAGE_GST1_PLUGINS_BASE_HAS_LIB_OPENGL + +comment "gl needs the gst1-plugins-base opengl library" + depends on !BR2_PACKAGE_GST1_PLUGINS_BASE_HAS_LIB_OPENGL + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_HLS + bool "hls" + select BR2_PACKAGE_NETTLE if !(BR2_PACKAGE_LIBGCRYPT || BR2_PACKAGE_OPENSSL) + help + Fragmented streaming plugins + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_KMS + bool "kmssink" + depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm -> libpthread-stubs + select BR2_PACKAGE_LIBDRM + help + KMS video sink + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DTLS + bool "dtls" + select BR2_PACKAGE_OPENSSL + help + DTLS plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TTML + bool "ttml" + depends on BR2_USE_WCHAR # pango -> glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # pango -> glib2 + depends on BR2_USE_MMU # pango -> glib2 + depends on BR2_INSTALL_LIBSTDCPP # pango -> freetype + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # pango -> harfbuzz + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_PANGO + help + Timed Text Markup Language (TTML) subtitle plugin + +comment "ttml needs a toolchain w/ wchar, threads, C++, gcc >= 4.9" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEG2ENC + bool "mpeg2enc" + depends on BR2_USE_MMU # fork + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBMPEG2 + select BR2_PACKAGE_MJPEGTOOLS + help + High-quality MPEG-1/2 video encoder + +comment "mpeg2enc needs a toolchain w/ threads, C++" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MUSEPACK + bool "musepack" + select BR2_PACKAGE_MUSEPACK + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NEON + bool "neon" + select BR2_PACKAGE_NEON + help + lib neon http client src + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENAL + bool "openal" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + select BR2_PACKAGE_OPENAL + +comment "openal plugin needs a toolchain w/ NPTL, C++, gcc >= 4.9" + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL \ + || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENH264 + bool "openh264" + depends on BR2_PACKAGE_LIBOPENH264_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP # libopenh264 + depends on !BR2_STATIC_LIBS # libopenh264 + depends on BR2_TOOLCHAIN_HAS_THREADS # libopenh264 + select BR2_PACKAGE_LIBOPENH264 + help + OpenH264 based encoding/decoding plugin + +comment "openh264 plugin needs a toolchain w/ C++, dynamic library, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS + depends on BR2_PACKAGE_LIBOPENH264_ARCH_SUPPORTS + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENJPEG + bool "openjpeg" + select BR2_PACKAGE_OPENJPEG + help + GStreamer OpenJPEG plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPUS + bool "opus" + select BR2_PACKAGE_OPUS + help + OPUS plugin library + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_QROVERLAY + bool "qroverlay" + select BR2_PACKAGE_JSON_GLIB + select BR2_PACKAGE_LIBQRENCODE + help + Elements qroverlay, debugqroverlay (overlay data on top of + video in the form of a QR code) + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RSVG + bool "rsvg" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # librsvg + depends on BR2_INSTALL_LIBSTDCPP # librsvg -> pango + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # librsvg -> pango -> harfbuzz + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # librsvg -> pango -> harfbuzz + select BR2_PACKAGE_LIBRSVG + help + RSVG plugin library + +comment "rsvg plugin needs a toolchain w/ C++, gcc >= 4.9" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SBC + bool "sbc" + select BR2_PACKAGE_SBC + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SCTP + bool "sctp" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # __sync_*_4 intrinsics + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SHM + bool "shm" + help + shared memory sink source + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SNDFILE + bool "sndfile" + select BR2_PACKAGE_LIBSNDFILE + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SRTP + bool "srtp" + select BR2_PACKAGE_LIBSRTP + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_UVCH264 + bool "uvch264" + depends on BR2_PACKAGE_HAS_UDEV # libgudev + depends on BR2_TOOLCHAIN_HAS_THREADS # libgudev, libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + depends on BR2_USE_MMU # libgudev + depends on BR2_USE_WCHAR # libgudev + select BR2_PACKAGE_LIBGUDEV + select BR2_PACKAGE_LIBUSB + help + UVC compliant H.264 camera source plugin + +comment "uvch264 needs udev /dev management" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_HAS_UDEV + +comment "uvch264 needs a toolchain w/ threads, wchar, gcc >= 4.9" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VA + bool "va" + depends on !BR2_STATIC_LIBS # libva + depends on BR2_TOOLCHAIN_HAS_THREADS # libva + select BR2_PACKAGE_LIBVA + help + VA-API new plugin + +comment "va needs a toolchain w/ threads, dynamic library" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VOAACENC + bool "voaacenc" + select BR2_PACKAGE_VO_AACENC + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WAYLAND + bool "wayland" + default y + depends on BR2_PACKAGE_WAYLAND + depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm -> libpthread-stubs + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_WAYLAND_PROTOCOLS + help + Wayland Video Sink + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBP + bool "webp" + select BR2_PACKAGE_WEBP + help + Webp image format plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBRTC + bool "webrtc" + depends on !BR2_STATIC_LIBS # libnice -> gnutls + select BR2_PACKAGE_GST1_PLUGINS_BASE # libgstsdp + select BR2_PACKAGE_LIBNICE + help + WebRTC plugins (webrtcbin - a bin for webrtc connections) + +comment "webrtc needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBRTCDSP + bool "webrtcdsp" + # All depends from webrtc-audio-processing + depends on BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS + depends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING + help + WebRTC echo-cancellation, gain control and noise suppression + +comment "webrtcdsp needs a toolchain w/ C++, NPTL, dynamic library, gcc >= 8" + depends on BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS + depends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \ + || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_8 + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WPE + bool "wpe" + default y + depends on BR2_PACKAGE_WPEWEBKIT + depends on BR2_PACKAGE_GST1_PLUGINS_BASE_HAS_LIB_OPENGL + depends on !BR2_PACKAGE_WPEWEBKIT_MEDIA_STREAM + +comment "wpe needs the gst1-plugins-base opengl library and wpewebkit" + depends on !BR2_PACKAGE_WPEWEBKIT \ + || !BR2_PACKAGE_GST1_PLUGINS_BASE_HAS_LIB_OPENGL + +comment "wpe is incompatible w/ wpewebkit media-stream support" + depends on BR2_PACKAGE_WPEWEBKIT + depends on BR2_PACKAGE_GST1_PLUGINS_BASE_HAS_LIB_OPENGL + depends on BR2_PACKAGE_WPEWEBKIT_MEDIA_STREAM + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_V4L2CODECS + bool "v4l2codecs" + depends on BR2_PACKAGE_HAS_UDEV # libgudev + select BR2_PACKAGE_LIBGUDEV + help + Video4Linux Stateless CODECs support + +comment "v4l2codecs need udev /dev management" + depends on !BR2_PACKAGE_HAS_UDEV + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_X265 + bool "x265" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # x265 + select BR2_PACKAGE_X265 + help + x265 encoding plugin + +comment "x265 needs a toolchain w/ C++, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS + +config BR2_PACKAGE_GST1_PLUGINS_BAD_ZBAR + bool "zbar" + depends on BR2_TOOLCHAIN_HAS_THREADS # zbar-> libv4l + depends on BR2_USE_MMU # zbar-> libv4l + depends on BR2_INSTALL_LIBSTDCPP # zbar-> libv4l + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 # zbar -> libv4l + select BR2_PACKAGE_ZBAR + +comment "zbar plugin needs a toolchain w/ threads, C++ and headers >= 3.0" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 + +config BR2_PACKAGE_GST1_PLUGINS_BAD_ZXING + bool "zxing" + depends on !BR2_STATIC_LIBS # zxing-cpp + depends on BR2_USE_WCHAR # zxing-cpp + depends on BR2_INSTALL_LIBSTDCPP # zxing-cpp + depends on BR2_TOOLCHAIN_HAS_THREADS # zxing-cpp + select BR2_PACKAGE_ZXING_CPP + +comment "zxing plugin needs a toolchain w/ C++, wchar, dynamic library, threads" + depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR || \ + !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + +endif + +comment "gst1-plugins-bad needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.hash b/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.hash new file mode 100644 index 00000000..174c4ad5 --- /dev/null +++ b/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.hash @@ -0,0 +1,3 @@ +# From https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.22.9.tar.xz.sha256sum +sha256 1bc65d0fd5f53a3636564efd3fcf318c3edcdec39c4109a503c1fc8203840a1d gst-plugins-bad-1.22.9.tar.xz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.mk b/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.mk new file mode 100644 index 00000000..a6103837 --- /dev/null +++ b/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.mk @@ -0,0 +1,841 @@ +################################################################################ +# +# gst1-plugins-bad +# +################################################################################ + +GST1_PLUGINS_BAD_VERSION = 1.22.9 +GST1_PLUGINS_BAD_SOURCE = gst-plugins-bad-$(GST1_PLUGINS_BAD_VERSION).tar.xz +GST1_PLUGINS_BAD_SITE = https://gstreamer.freedesktop.org/src/gst-plugins-bad +GST1_PLUGINS_BAD_INSTALL_STAGING = YES +# Additional plugin licenses will be appended to GST1_PLUGINS_BAD_LICENSE and +# GST1_PLUGINS_BAD_LICENSE_FILES if enabled. +GST1_PLUGINS_BAD_LICENSE_FILES = COPYING +GST1_PLUGINS_BAD_LICENSE = LGPL-2.0+ +GST1_PLUGINS_BAD_CPE_ID_VENDOR = freedesktop +GST1_PLUGINS_BAD_CPE_ID_PRODUCT = gst-plugins-bad + +GST1_PLUGINS_BAD_CFLAGS = $(TARGET_CFLAGS) -std=c99 -D_GNU_SOURCE +GST1_PLUGINS_BAD_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) + +GST1_PLUGINS_BAD_CONF_OPTS = \ + -Dexamples=disabled \ + -Dtests=disabled \ + -Ddirectsound=disabled \ + -Dd3dvideosink=disabled \ + -Dwinks=disabled \ + -Dandroidmedia=disabled \ + -Dapplemedia=disabled \ + -Dgobject-cast-checks=disabled \ + -Dglib-asserts=disabled \ + -Dglib-checks=disabled \ + -Dextra-checks=disabled \ + -Ddoc=disabled + +# Options which require currently unpackaged libraries +GST1_PLUGINS_BAD_CONF_OPTS += \ + -Dasio=disabled \ + -Davtp=disabled \ + -Dopensles=disabled \ + -Dmsdk=disabled \ + -Dvoamrwbenc=disabled \ + -Dbs2b=disabled \ + -Dchromaprint=disabled \ + -Dd3d11=disabled \ + -Ddc1394=disabled \ + -Ddts=disabled \ + -Dresindvd=disabled \ + -Dfaac=disabled \ + -Dflite=disabled \ + -Dgs=disabled \ + -Dgsm=disabled \ + -Dkate=disabled \ + -Dladspa=disabled \ + -Dldac=disabled \ + -Dlv2=disabled \ + -Dmediafoundation=disabled \ + -Dmicrodns=disabled \ + -Dlibde265=disabled \ + -Dmodplug=disabled \ + -Dmplex=disabled \ + -Donnx=disabled \ + -Dopenexr=disabled \ + -Dopenni2=disabled \ + -Dteletext=disabled \ + -Dwildmidi=disabled \ + -Dsmoothstreaming=disabled \ + -Dsoundtouch=disabled \ + -Dgme=disabled \ + -Dspandsp=disabled \ + -Dsvthevcenc=disabled \ + -Dtranscode=disabled \ + -Dwasapi2=disabled \ + -Dmagicleap=disabled \ + -Disac=disabled \ + -Diqa=disabled \ + -Dopencv=disabled + +GST1_PLUGINS_BAD_DEPENDENCIES = gst1-plugins-base gstreamer1 + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dintrospection=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += gobject-introspection +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dintrospection=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WAYLAND),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dwayland=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += libdrm wayland wayland-protocols +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dwayland=disabled +endif + +ifeq ($(BR2_PACKAGE_ORC),y) +GST1_PLUGINS_BAD_DEPENDENCIES += orc +GST1_PLUGINS_BAD_CONF_OPTS += -Dorc=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dorc=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_BLUEZ),y) +GST1_PLUGINS_BAD_DEPENDENCIES += bluez5_utils +GST1_PLUGINS_BAD_CONF_OPTS += -Dbluez=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dbluez=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ACCURIP),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Daccurip=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Daccurip=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ADPCMDEC),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dadpcmdec=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dadpcmdec=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ADPCMENC),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dadpcmenc=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dadpcmenc=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AIFF),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Daiff=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Daiff=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ASFMUX),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dasfmux=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dasfmux=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOBUFFERSPLIT),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Daudiobuffersplit=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Daudiobuffersplit=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOFXBAD),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Daudiofxbad=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Daudiofxbad=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOLATENCY),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Daudiolatency=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Daudiolatency=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOMIXMATRIX),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Daudiomixmatrix=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Daudiomixmatrix=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOVISUALIZERS),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Daudiovisualizers=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Daudiovisualizers=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUTOCONVERT),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dautoconvert=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dautoconvert=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_BAYER),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dbayer=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dbayer=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CAMERABIN2),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dcamerabin2=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dcamerabin2=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CODECALPHA),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dcodecalpha=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dcodecalpha=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_COLOREFFECTS),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dcoloreffects=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dcoloreffects=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DEBUGUTILS),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Ddebugutils=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Ddebugutils=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVBSUBENC),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Ddvbsubenc=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Ddvbsubenc=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVBSUBOVERLAY),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Ddvbsuboverlay=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Ddvbsuboverlay=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVDSPU),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Ddvdspu=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Ddvdspu=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FACEOVERLAY),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dfaceoverlay=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dfaceoverlay=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FESTIVAL),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dfestival=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dfestival=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FIELDANALYSIS),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dfieldanalysis=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dfieldanalysis=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FREEVERB),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dfreeverb=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dfreeverb=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FREI0R),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dfrei0r=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dfrei0r=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GAUDIEFFECTS),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dgaudieffects=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dgaudieffects=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GEOMETRICTRANSFORM),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dgeometrictransform=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dgeometrictransform=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GDP),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dgdp=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dgdp=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ID3TAG),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Did3tag=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Did3tag=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_INTER),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dinter=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dinter=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_INTERLACE),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dinterlace=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dinterlace=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IVFPARSE),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Divfparse=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Divfparse=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IVTC),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Divtc=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Divtc=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_JP2KDECIMATOR),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Djp2kdecimator=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Djp2kdecimator=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_JPEGFORMAT),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Djpegformat=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Djpegformat=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIBRFB),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dlibrfb=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dlibrfb=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MIDI),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dmidi=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dmidi=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGDEMUX),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dmpegdemux=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dmpegdemux=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGPSMUX),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dmpegpsmux=enabled +GST1_PLUGINS_BAD_HAS_UNKNOWN_LICENSE = y +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dmpegpsmux=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSMUX),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dmpegtsmux=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dmpegtsmux=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSDEMUX),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dmpegtsdemux=enabled +GST1_PLUGINS_BAD_HAS_UNKNOWN_LICENSE = y +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dmpegtsdemux=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MXF),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dmxf=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dmxf=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NETSIM),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dnetsim=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dnetsim=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ONVIF),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Donvif=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Donvif=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PCAPPARSE),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dpcapparse=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dpcapparse=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PNM),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dpnm=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dpnm=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PROXY),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dproxy=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dproxy=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RAWPARSE),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Drawparse=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Drawparse=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_REMOVESILENCE),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dremovesilence=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dremovesilence=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RIST),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Drist=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Drist=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTMP2),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Drtmp2=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Drtmp2=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTP2),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Drtp=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Drtp=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTMP),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Drtmp=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += rtmpdump +else +GST1_PLUGINS_BAD_CONF_OPTS += -Drtmp=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDP),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dsdp=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dsdp=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SEGMENTCLIP),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dsegmentclip=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dsegmentclip=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SIREN),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dsiren=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dsiren=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SMOOTH),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dsmooth=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dsmooth=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SPEED),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dspeed=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dspeed=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SUBENC),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dsubenc=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dsubenc=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SWITCHBIN),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dswitchbin=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dswitchbin=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TIMECODE),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dtimecode=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dtimecode=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOFILTERS),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dvideofilters=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dvideofilters=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOFRAME_AUDIOLEVEL),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dvideoframe_audiolevel=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dvideoframe_audiolevel=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOPARSERS),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dvideoparsers=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dvideoparsers=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOSIGNAL),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dvideosignal=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dvideosignal=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VMNC),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dvmnc=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dvmnc=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_Y4M),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dy4m=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dy4m=disabled +endif + +# Plugins with dependencies + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AES),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Daes=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += openssl +else +GST1_PLUGINS_BAD_CONF_OPTS += -Daes=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ASSRENDER),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dassrender=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += libass +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dassrender=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_BZ2),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dbz2=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += bzip2 +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dbz2=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CURL),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dcurl=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += libcurl +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dcurl=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DASH),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Ddash=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += libxml2 +else +GST1_PLUGINS_BAD_CONF_OPTS += -Ddash=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DECKLINK),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Ddecklink=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Ddecklink=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DIRECTFB),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Ddirectfb=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += directfb +else +GST1_PLUGINS_BAD_CONF_OPTS += -Ddirectfb=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVB),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Ddvb=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += dtv-scan-tables +else +GST1_PLUGINS_BAD_CONF_OPTS += -Ddvb=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FAAD),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dfaad=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += faad2 +GST1_PLUGINS_BAD_HAS_GPL_LICENSE = y +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dfaad=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FBDEV),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dfbdev=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dfbdev=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FDK_AAC),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dfdkaac=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += fdk-aac +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dfdkaac=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FLUIDSYNTH),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dfluidsynth=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += fluidsynth +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dfluidsynth=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GL),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dgl=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dgl=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_HLS),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dhls=enabled + +ifeq ($(BR2_PACKAGE_NETTLE),y) +GST1_PLUGINS_BAD_DEPENDENCIES += nettle +GST1_PLUGINS_BAD_CONF_OPTS += -Dhls-crypto='nettle' +else ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +GST1_PLUGINS_BAD_DEPENDENCIES += libgcrypt +GST1_PLUGINS_BAD_CONF_OPTS += -Dhls-crypto='libgcrypt' +else +GST1_PLUGINS_BAD_DEPENDENCIES += openssl +GST1_PLUGINS_BAD_CONF_OPTS += -Dhls-crypto='openssl' +endif + +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dhls=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_KMS),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dkms=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += libdrm +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dkms=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DTLS),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Ddtls=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += openssl +GST1_PLUGINS_BAD_HAS_BSD2C_LICENSE = y +else +GST1_PLUGINS_BAD_CONF_OPTS += -Ddtls=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TTML),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dttml=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += cairo libxml2 pango +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dttml=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEG2ENC),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dmpeg2enc=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += libmpeg2 mjpegtools +GST1_PLUGINS_BAD_HAS_GPL_LICENSE = y +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dmpeg2enc=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MUSEPACK),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dmusepack=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += musepack +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dmusepack=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NEON),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dneon=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += neon +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dneon=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENAL),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dopenal=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += openal +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dopenal=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENH264),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dopenh264=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += libopenh264 +GST1_PLUGINS_BAD_HAS_BSD2C_LICENSE = y +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dopenh264=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENJPEG),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dopenjpeg=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += openjpeg +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dopenjpeg=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPUS),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dopus=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += opus +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dopus=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_QROVERLAY),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dqroverlay=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += json-glib libqrencode +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dqroverlay=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RSVG),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Drsvg=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += librsvg +else +GST1_PLUGINS_BAD_CONF_OPTS += -Drsvg=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SBC),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dsbc=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += sbc +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dsbc=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SCTP),y) +GST1_PLUGINS_BAD_CONF_OPTS += \ + -Dsctp=enabled \ + -Dsctp-internal-usrsctp=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += \ + -Dsctp=disabled \ + -Dsctp-internal-usrsctp=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SHM),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dshm=enabled +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dshm=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SNDFILE),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dsndfile=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += libsndfile +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dsndfile=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SRTP),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dsrtp=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += libsrtp +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dsrtp=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_UVCH264),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Duvch264=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += libgudev libusb +else +GST1_PLUGINS_BAD_CONF_OPTS += -Duvch264=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VA),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dva=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += libva +ifeq ($(BR2_PACKAGE_LIBDRM),y) +GST1_PLUGINS_BAD_DEPENDENCIES += libdrm +endif +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dva=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VOAACENC),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dvoaacenc=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += vo-aacenc +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dvoaacenc=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBP),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dwebp=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += webp +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dwebp=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBRTC),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dwebrtc=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += gst1-plugins-base libnice +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dwebrtc=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBRTCDSP),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dwebrtcdsp=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += webrtc-audio-processing +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dwebrtcdsp=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WPE),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dwpe=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += libwpe wpewebkit wpebackend-fdo +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dwpe=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_V4L2CODECS),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dv4l2codecs=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += libgudev +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dv4l2codecs=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_X265),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dx265=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += x265 +GST1_PLUGINS_BAD_HAS_GPL_LICENSE = y +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dx265=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_ZBAR),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dzbar=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += zbar +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dzbar=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_ZXING),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dzxing=enabled +GST1_PLUGINS_BAD_DEPENDENCIES += zxing-cpp +else +GST1_PLUGINS_BAD_CONF_OPTS += -Dzxing=disabled +endif + +# Add GPL license if GPL licensed plugins enabled. +ifeq ($(GST1_PLUGINS_BAD_HAS_GPL_LICENSE),y) +GST1_PLUGINS_BAD_CONF_OPTS += -Dgpl=enabled +GST1_PLUGINS_BAD_LICENSE += , GPL-2.0+ +GST1_PLUGINS_BAD_LICENSE_FILES += COPYING +endif + +# Add BSD license if BSD licensed plugins enabled. +ifeq ($(GST1_PLUGINS_BAD_HAS_BSD2C_LICENSE),y) +GST1_PLUGINS_BAD_LICENSE += , BSD-2-Clause +endif + +# Add Unknown license if Unknown licensed plugins enabled. +ifeq ($(GST1_PLUGINS_BAD_HAS_UNKNOWN_LICENSE),y) +GST1_PLUGINS_BAD_LICENSE += , UNKNOWN +endif + +# Use the following command to extract license info for plugins. +# # find . -name 'plugin-*.xml' | xargs grep license + +$(eval $(meson-package)) diff --git a/package/gstreamer1/gst1-plugins-base/Config.in b/package/gstreamer1/gst1-plugins-base/Config.in new file mode 100644 index 00000000..df10774a --- /dev/null +++ b/package/gstreamer1/gst1-plugins-base/Config.in @@ -0,0 +1,317 @@ +menuconfig BR2_PACKAGE_GST1_PLUGINS_BASE + bool "gst1-plugins-base" + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXV if BR2_PACKAGE_XORG7 + help + A basic set of well-supported plug-ins for GStreamer. + + https://gstreamer.freedesktop.org/ + +if BR2_PACKAGE_GST1_PLUGINS_BASE + +config BR2_PACKAGE_GST1_PLUGINS_BASE_INSTALL_TOOLS + bool "install tools" + help + Install the gst-discoverer, gst-device-monitor and gst-play + tools. + +comment "dependency-less plugins" + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ADDER + bool "adder" + help + Adds multiple streams + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP + bool "app" + help + Elements used to communicate with applications + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOCONVERT + bool "audioconvert (mandatory for audio playback)" + default y + help + Convert audio to different formats + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOMIXER + bool "audiomixer" + help + Audio mixer plugin + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORATE + bool "audiorate" + help + Adjusts audio frames + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOTESTSRC + bool "audiotestsrc" + help + Creates audio test signals of given frequency and volume + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_COMPOSITOR + bool "compositor" + help + Video compositor plugin + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ENCODING + bool "encoding" + help + various encoding-related elements + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERTSCALE + bool "videoconvertscale (mandatory for video playback)" + default y + help + Colorspace conversion, resizes video + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_GIO + bool "gio" + help + GIO elements + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_GIO_TYPEFINDER + bool "gio-typefinder" + help + GIO typefinder elements + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OVERLAYCOMPOSITION + bool "overlaycomposition" + help + Overlaycomposition plugin. + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_PLAYBACK + bool "playback" + default y + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TYPEFIND + help + various playback elements + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORESAMPLE + bool "audioresample (mandatory for audio playback)" + default y + help + Resamples audio + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_RAWPARSE + bool "rawparse" + help + Parses byte streams into raw frames + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_SUBPARSE + bool "subparse" + help + Subtitle parsing + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TCP + bool "tcp" + help + transfer data over the network via TCP + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TYPEFIND + bool "typefind" + default y + help + default typefind functions + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOTESTSRC + bool "videotestsrc" + help + Creates a test video stream + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEORATE + bool "videorate" + help + Adjusts video frames + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VOLUME + bool "volume (mandatory for audio playback)" + default y + help + plugin for controlling audio volume + +comment "plugins with external dependencies" + +menuconfig BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL + bool "opengl" + depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES + +if BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL + +config BR2_PACKAGE_GST1_PLUGINS_BASE_HAS_LIB_OPENGL + def_bool BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_WINDOW + +comment "The opengl library needs an API, a platform and a window system" + depends on !BR2_PACKAGE_GST1_PLUGINS_BASE_HAS_LIB_OPENGL + +comment "APIs" + +config BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API + bool + +config BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_OPENGL + bool "opengl" + default y + depends on BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_LIBGLU + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API + +comment "opengl needs an OpenGL backend" + depends on !BR2_PACKAGE_HAS_LIBGL + +config BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_GLES2 + bool "gles2" + default y + depends on BR2_PACKAGE_HAS_LIBGLES + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API + +comment "gles2 needs an OpenGL ES backend" + depends on !BR2_PACKAGE_HAS_LIBGLES + +comment "Platforms" + +config BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_PLATFORM + bool + +config BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_GLX + bool "glx" + default y + depends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_OPENGL + depends on BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR # mesa needs big X + depends on !BR2_PACKAGE_RPI_USERLAND # x11 + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XORGPROTO + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_X11 + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_PLATFORM + help + OpenGL Extension to the X Window System + +comment "glx not supported with rpi-userland" + depends on BR2_PACKAGE_RPI_USERLAND + +comment "glx needs the opengl API and modular X.org" + depends on !BR2_PACKAGE_RPI_USERLAND && \ + (!BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_OPENGL || \ + !BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR) + +config BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL + bool "egl" + default y + depends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API + depends on BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_PLATFORM + +comment "egl needs an API and an EGL backend" + depends on !BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API || \ + !BR2_PACKAGE_HAS_LIBEGL + +comment "Window systems" + +config BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_WINDOW + bool + +config BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_X11 + bool "x11" + default y + depends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_PLATFORM + depends on !BR2_PACKAGE_RPI_USERLAND + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_WINDOW + +comment "x11 not supported with rpi-userland" + depends on BR2_PACKAGE_RPI_USERLAND + +comment "x11 needs a platform and X.org" + depends on !BR2_PACKAGE_RPI_USERLAND && \ + (!BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_PLATFORM || \ + !BR2_PACKAGE_XORG7) + +config BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_WAYLAND + bool "wayland" + default y + depends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL + depends on BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_WAYLAND_PROTOCOLS + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_WINDOW + +comment "wayland needs the egl platform and the wayland package" + depends on !BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL || \ + !BR2_PACKAGE_WAYLAND + +config BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_DISPMANX + bool "dispmanx" + default y + depends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL + depends on BR2_PACKAGE_RPI_USERLAND + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_WINDOW + help + Raspberry Pi's Dispmanx windowing system + +comment "dispmanx needs the egl platform and rpi-userland" + depends on !BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL || \ + !BR2_PACKAGE_RPI_USERLAND +endif + +comment "opengl needs an OpenGL or OpenGL ES backend" + depends on !BR2_PACKAGE_HAS_LIBGL && !BR2_PACKAGE_HAS_LIBGLES + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA + bool "alsa (mandatory for audio playback)" + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_MIXER + select BR2_PACKAGE_ALSA_LIB_PCM + select BR2_PACKAGE_ALSA_LIB_SEQ + help + ALSA plugin library + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TREMOR + bool "tremor" + select BR2_PACKAGE_TREMOR + help + Vorbis Tremor decoder + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OGG + bool "ogg (*.ogg audio/video)" + select BR2_PACKAGE_LIBOGG + help + ogg stream manipulation (info about ogg: http://xiph.org) + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OPUS + bool "opus" + select BR2_PACKAGE_OPUS + help + Opus codec for speech and audio. + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_PANGO + bool "pango font renderer" + depends on BR2_USE_WCHAR # pango -> glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # pango -> glib2 + depends on BR2_USE_MMU # pango -> glib2 + depends on BR2_INSTALL_LIBSTDCPP # pango -> freetype + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # pango -> harfbuzz + select BR2_PACKAGE_PANGO + help + Pango-based text rendering and overlay + +comment "pango plugin needs a toolchain w/ C++, wchar, threads, gcc >= 4.9" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_THEORA + bool "theora (*.ogg video)" + select BR2_PACKAGE_LIBTHEORA + help + Theora plugin library + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VORBIS + bool "vorbis (*.ogg audio)" + select BR2_PACKAGE_LIBVORBIS + help + Vorbis plugin library + +endif diff --git a/package/gstreamer1/gst1-plugins-base/gst1-plugins-base.hash b/package/gstreamer1/gst1-plugins-base/gst1-plugins-base.hash new file mode 100644 index 00000000..060a871b --- /dev/null +++ b/package/gstreamer1/gst1-plugins-base/gst1-plugins-base.hash @@ -0,0 +1,3 @@ +# From https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.22.9.tar.xz.sha256sum +sha256 fac3e0dd2d8e9370388b34bf8c21b89d5f63bc3cfc12cd7fdc8fc6c1cba03334 gst-plugins-base-1.22.9.tar.xz +sha256 ad2eec519ebd4b5df86ea84dff24ae3bfa2edea846a703b58902dd221ae375db COPYING diff --git a/package/gstreamer1/gst1-plugins-base/gst1-plugins-base.mk b/package/gstreamer1/gst1-plugins-base/gst1-plugins-base.mk new file mode 100644 index 00000000..512e3fde --- /dev/null +++ b/package/gstreamer1/gst1-plugins-base/gst1-plugins-base.mk @@ -0,0 +1,295 @@ +################################################################################ +# +# gst1-plugins-base +# +################################################################################ + +GST1_PLUGINS_BASE_VERSION = 1.22.9 +GST1_PLUGINS_BASE_SOURCE = gst-plugins-base-$(GST1_PLUGINS_BASE_VERSION).tar.xz +GST1_PLUGINS_BASE_SITE = https://gstreamer.freedesktop.org/src/gst-plugins-base +GST1_PLUGINS_BASE_INSTALL_STAGING = YES +GST1_PLUGINS_BASE_LICENSE_FILES = COPYING +GST1_PLUGINS_BASE_LICENSE = LGPL-2.1+ + +GST1_PLUGINS_BASE_CFLAGS = $(TARGET_CFLAGS) -std=gnu99 + +GST1_PLUGINS_BASE_CONF_OPTS = \ + -Dexamples=disabled \ + -Dtests=disabled \ + -Dgobject-cast-checks=disabled \ + -Dglib-asserts=disabled \ + -Dglib-checks=disabled \ + -Dqt5=disabled \ + -Ddoc=disabled + +# Options which require currently unpackaged libraries +GST1_PLUGINS_BASE_CONF_OPTS += \ + -Dcdparanoia=disabled \ + -Dlibvisual=disabled \ + -Diso-codes=disabled + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_INSTALL_TOOLS),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Dtools=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dtools=disabled +endif + +GST1_PLUGINS_BASE_DEPENDENCIES = gstreamer1 $(TARGET_NLS_DEPENDENCIES) + +GST1_PLUGINS_BASE_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) + +# These plugins are listed in the order from ./configure --help + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Dintrospection=enabled +GST1_PLUGINS_BASE_DEPENDENCIES += gobject-introspection +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dintrospection=disabled +endif + +ifeq ($(BR2_PACKAGE_ORC),y) +GST1_PLUGINS_BASE_DEPENDENCIES += orc +GST1_PLUGINS_BASE_CONF_OPTS += -Dorc=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dorc=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API)$(BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_PLATFORM)$(BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_WINDOW),yyy) +GST1_PLUGINS_BASE_CONF_OPTS += -Dgl=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dgl=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_OPENGL),y) +GST1_PLUGINS_BASE_GL_API_LIST = opengl +GST1_PLUGINS_BASE_DEPENDENCIES += libgl libglu +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_GLES2),y) +GST1_PLUGINS_BASE_GL_API_LIST += gles2 +GST1_PLUGINS_BASE_DEPENDENCIES += libgles +endif + +GST1_PLUGINS_BASE_CONF_OPTS += -Dgl_api='$(subst $(space),$(comma),$(GST1_PLUGINS_BASE_GL_API_LIST))' + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_GLX),y) +GST1_PLUGINS_BASE_GL_PLATFORM_LIST += glx +GST1_PLUGINS_BASE_DEPENDENCIES += xorgproto xlib_libXrender +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL),y) +GST1_PLUGINS_BASE_GL_PLATFORM_LIST += egl +GST1_PLUGINS_BASE_DEPENDENCIES += libegl +endif +GST1_PLUGINS_BASE_CONF_OPTS += -Dgl_platform='$(subst $(space),$(comma),$(GST1_PLUGINS_BASE_GL_PLATFORM_LIST))' + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_X11),y) +GST1_PLUGINS_BASE_WINSYS_LIST += x11 +GST1_PLUGINS_BASE_DEPENDENCIES += xlib_libX11 xlib_libXext +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_WAYLAND),y) +GST1_PLUGINS_BASE_WINSYS_LIST += wayland +GST1_PLUGINS_BASE_DEPENDENCIES += wayland wayland-protocols +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_DISPMANX),y) +GST1_PLUGINS_BASE_WINSYS_LIST += dispmanx +GST1_PLUGINS_BASE_DEPENDENCIES += rpi-userland +endif +GST1_PLUGINS_BASE_CONF_OPTS += -Dgl_winsys='$(subst $(space),$(comma),$(GST1_PLUGINS_BASE_WINSYS_LIST))' + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ADDER),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Dadder=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dadder=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Dapp=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dapp=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOCONVERT),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Daudioconvert=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Daudioconvert=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOMIXER),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Daudiomixer=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Daudiomixer=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORATE),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Daudiorate=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Daudiorate=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOTESTSRC),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Daudiotestsrc=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Daudiotestsrc=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_COMPOSITOR),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Dcompositor=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dcompositor=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ENCODING),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Dencoding=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dencoding=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERTSCALE),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Dvideoconvertscale=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dvideoconvertscale=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_GIO),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Dgio=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dgio=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_GIO_TYPEFINDER),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Dgio-typefinder=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dgio-typefinder=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OVERLAYCOMPOSITION),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Doverlaycomposition=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Doverlaycomposition=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_PLAYBACK),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Dplayback=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dplayback=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORESAMPLE),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Daudioresample=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Daudioresample=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_RAWPARSE),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Drawparse=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Drawparse=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_SUBPARSE),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Dsubparse=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dsubparse=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TCP),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Dtcp=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dtcp=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TYPEFIND),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Dtypefind=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dtypefind=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOTESTSRC),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Dvideotestsrc=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dvideotestsrc=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEORATE),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Dvideorate=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dvideorate=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VOLUME),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Dvolume=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dvolume=disabled +endif + +# Zlib is checked for headers and is not an option. +ifeq ($(BR2_PACKAGE_ZLIB),y) +GST1_PLUGINS_BASE_DEPENDENCIES += zlib +endif + +ifeq ($(BR2_PACKAGE_XORG7),y) +GST1_PLUGINS_BASE_DEPENDENCIES += xlib_libX11 xlib_libXext xlib_libXv +GST1_PLUGINS_BASE_CONF_OPTS += \ + -Dx11=enabled \ + -Dxshm=enabled \ + -Dxvideo=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += \ + -Dx11=disabled \ + -Dxshm=disabled \ + -Dxvideo=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA),y) +GST1_PLUGINS_BASE_DEPENDENCIES += alsa-lib +GST1_PLUGINS_BASE_CONF_OPTS += -Dalsa=enabled +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dalsa=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TREMOR),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Dtremor=enabled +GST1_PLUGINS_BASE_DEPENDENCIES += tremor +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dtremor=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OPUS),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Dopus=enabled +GST1_PLUGINS_BASE_DEPENDENCIES += opus +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dopus=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OGG),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Dogg=enabled +GST1_PLUGINS_BASE_DEPENDENCIES += libogg +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dogg=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_PANGO),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Dpango=enabled +GST1_PLUGINS_BASE_DEPENDENCIES += pango +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dpango=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_THEORA),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Dtheora=enabled +GST1_PLUGINS_BASE_DEPENDENCIES += libtheora +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dtheora=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VORBIS),y) +GST1_PLUGINS_BASE_CONF_OPTS += -Dvorbis=enabled +GST1_PLUGINS_BASE_DEPENDENCIES += libvorbis +else +GST1_PLUGINS_BASE_CONF_OPTS += -Dvorbis=disabled +endif + +$(eval $(meson-package)) diff --git a/package/gstreamer1/gst1-plugins-bayer2rgb-neon/Config.in b/package/gstreamer1/gst1-plugins-bayer2rgb-neon/Config.in new file mode 100644 index 00000000..57bafd33 --- /dev/null +++ b/package/gstreamer1/gst1-plugins-bayer2rgb-neon/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_GST1_PLUGINS_BAYER2RGB_NEON + bool "gst1-plugins-bayer2rgb-neon" + depends on BR2_PACKAGE_BAYER2RGB_NEON_ARCH_SUPPORTS + depends on !BR2_STATIC_LIBS # bayer2rgb-neon + depends on BR2_INSTALL_LIBSTDCPP # bayer2rgb-neon + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # bayer2rgb-neon + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_BAYER2RGB_NEON + help + gst1-plugins-bayer2rgb-neon is a gstreamer1 + plugin which uses bayer2rgb-neon library to + decode raw camera bayer to RGB using + NEON hardware acceleration. + + https://gitlab-ext.sigma-chemnitz.de/ensc/gst-bayer2rgb-neon + +comment "gst1-plugins-bayer2rgb-neon needs a toolchain w/ C++, dynamic library, gcc >= 4.9" + depends on BR2_PACKAGE_BAYER2RGB_NEON_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/gstreamer1/gst1-plugins-bayer2rgb-neon/gst1-plugins-bayer2rgb-neon.hash b/package/gstreamer1/gst1-plugins-bayer2rgb-neon/gst1-plugins-bayer2rgb-neon.hash new file mode 100644 index 00000000..1efaf642 --- /dev/null +++ b/package/gstreamer1/gst1-plugins-bayer2rgb-neon/gst1-plugins-bayer2rgb-neon.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 6ae89adf1979edf5760bbf2fb589dcaa905cff55bb828e6b271bc3d1e403a130 gst1-plugins-bayer2rgb-neon-b630798efcd611879e7cb1c246052e5ba1acc41d-git4.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/gstreamer1/gst1-plugins-bayer2rgb-neon/gst1-plugins-bayer2rgb-neon.mk b/package/gstreamer1/gst1-plugins-bayer2rgb-neon/gst1-plugins-bayer2rgb-neon.mk new file mode 100644 index 00000000..0d4aeac7 --- /dev/null +++ b/package/gstreamer1/gst1-plugins-bayer2rgb-neon/gst1-plugins-bayer2rgb-neon.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# gst1-plugins-bayer2rgb-neon +# +################################################################################ + +GST1_PLUGINS_BAYER2RGB_NEON_VERSION = b630798efcd611879e7cb1c246052e5ba1acc41d +GST1_PLUGINS_BAYER2RGB_NEON_SITE = https://gitlab-ext.sigma-chemnitz.de/ensc/gst-bayer2rgb-neon.git +GST1_PLUGINS_BAYER2RGB_NEON_SITE_METHOD = git +GST1_PLUGINS_BAYER2RGB_NEON_LICENSE = GPL-3.0 +GST1_PLUGINS_BAYER2RGB_NEON_LICENSE_FILES = COPYING + +GST1_PLUGINS_BAYER2RGB_NEON_DEPENDENCIES = \ + host-pkgconf \ + gstreamer1 \ + gst1-plugins-base \ + bayer2rgb-neon + +GST1_PLUGINS_BAYER2RGB_NEON_AUTORECONF = YES + +GST1_PLUGINS_BAYER2RGB_NEON_CONF_OPTS = --with-plugindir=/usr/lib/gstreamer-1.0 + +$(eval $(autotools-package)) diff --git a/package/gstreamer1/gst1-plugins-good/Config.in b/package/gstreamer1/gst1-plugins-good/Config.in new file mode 100644 index 00000000..3cf227b7 --- /dev/null +++ b/package/gstreamer1/gst1-plugins-good/Config.in @@ -0,0 +1,436 @@ +menuconfig BR2_PACKAGE_GST1_PLUGINS_GOOD + bool "gst1-plugins-good" + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXV if BR2_PACKAGE_XORG7 + help + A set of well-supported plug-ins for GStreamer under the + preferred license. + + https://gstreamer.freedesktop.org/ + +if BR2_PACKAGE_GST1_PLUGINS_GOOD + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_JPEG + bool "jpeg (JPEG support)" + select BR2_PACKAGE_JPEG + help + JPeg plugin library + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PNG + bool "png (PNG support)" + select BR2_PACKAGE_LIBPNG + help + PNG plugin library + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_BZ2 + bool "bz2 support" + depends on BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA + select BR2_PACKAGE_BZIP2 + help + Enable bz2 support for the following plugins: + matroska + +comment "dependency-less plugins" + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ALPHA + bool "alpha" + help + adds an alpha channel to video - constant or via chroma-keying + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_APETAG + bool "apetag" + help + APEv1/2 tag reader + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUDIOFX + bool "audiofx" + help + Audio effects plugin + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUDIOPARSERS + bool "audioparsers" + help + Parsers for various audio formats + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUPARSE + bool "auparse" + help + parses au streams + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUTODETECT + bool "autodetect" + help + Plugin contains auto-detection plugins for video/audio in- + and outputs + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AVI + bool "avi (*.avi video)" + default y + help + AVI stream handling + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_CUTTER + bool "cutter" + help + Audio Cutter to split audio into non-silent bits + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DEBUGUTILS + bool "debugutils" + help + elements for testing and debugging + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DEINTERLACE + bool "deinterlace" + help + Deinterlacer + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DTMF + bool "dtmf" + help + DTMF plugin + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_EFFECTV + bool "effectv" + help + effect plugins from the effectv project + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_EQUALIZER + bool "equalizer" + help + GStreamer audio equalizers + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLV + bool "flv" + help + FLV muxing and demuxing plugin + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLX + bool "flx" + help + FLC/FLI/FLX video decoder + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_GOOM + bool "goom" + help + GOOM visualization filter + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_GOOM2K1 + bool "goom2k1" + help + GOOM 2k1 visualization filter + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ICYDEMUX + bool "icydemux" + help + Demux ICY tags from a stream + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ID3DEMUX + bool "id3demux (*.mp3 audio)" + help + Demux ID3v1 and ID3v2 tags from a file + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_IMAGEFREEZE + bool "imagefreeze" + help + Still frame stream generator + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_INTERLEAVE + bool "interleave" + help + Audio interleaver/deinterleaver + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ISOMP4 + bool "isomp4" + default y + help + ISO base media file format support (mp4, 3gpp, qt, mj2) + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LAW + bool "law" + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LEVEL + bool "level" + help + Audio level plugin + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA + bool "matroska" + help + Matroska and WebM stream handling + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MONOSCOPE + bool "monoscope" + help + Monoscope visualization + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MULTIFILE + bool "multifile" + help + Reads/Writes buffers from/to sequentially named files + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MULTIPART + bool "multipart" + help + multipart stream manipulation + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_REPLAYGAIN + bool "replaygain" + help + ReplayGain volume normalization + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTP + bool "rtp" + help + Real-time protocol plugins + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTPMANAGER + bool "rtpmanager" + help + RTP session management plugin library + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP + bool "rtsp" + help + transfer data via RTSP + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SHAPEWIPE + bool "shapewipe" + help + Shape Wipe transition filter + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SMPTE + bool "smpte" + help + Apply the standard SMPTE transitions on video images + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SPECTRUM + bool "spectrum" + help + Run an FFT on the audio signal, output spectrum data + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_UDP + bool "udp" + help + transfer data via UDP + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOBOX + bool "videobox" + help + resizes a video by adding borders or cropping + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOCROP + bool "videocrop" + help + Crops video into a user-defined region + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOFILTER + bool "videofilter" + help + Video filters plugin + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOMIXER + bool "videomixer" + help + Video mixer + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_WAVENC + bool "wavenc" + help + Encode raw audio into WAV + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_WAVPARSE + bool "wavparse (*.wav audio)" + default y + help + Parse a .wav file into raw audio + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_XINGMUX + bool "xingmux" + help + Add XING tags to mpeg audio files + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_Y4M + bool "y4m" + help + Encodes a YUV frame into the yuv4mpeg format (mjpegtools) + +comment "plugins with external dependencies" + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_ADAPTIVEMUX2 + bool "adaptivedemux2 (Adaptive Streaming 2)" + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_LIBSOUP3 + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LAME + bool "lame (*.mp3 audio encoder)" + select BR2_PACKAGE_LAME + help + Encode MP3s with LAME + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MPG123 + bool "mpg123 (*.mp3 audio)" + select BR2_PACKAGE_MPG123 + help + mp3 decoding based on the mpg123 library + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_OSS + bool "ossaudio (OSS audio)" + help + OSS (Open Sound System) support for GStreamer + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_OSS4 + bool "oss4 (Open Sound System 4)" + help + Open Sound System (OSS) version 4 support for GStreamer + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_QMLGL + bool "qmlgl (qt5)" + depends on BR2_PACKAGE_QT5 + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative + depends on BR2_PACKAGE_GST1_PLUGINS_BASE_HAS_LIB_OPENGL + select BR2_PACKAGE_QT5BASE_WIDGETS + select BR2_PACKAGE_QT5DECLARATIVE + select BR2_PACKAGE_QT5DECLARATIVE_QUICK + select BR2_PACKAGE_QT5TOOLS + select BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS + select BR2_PACKAGE_QT5X11EXTRAS if BR2_PACKAGE_QT5BASE_XCB + help + QT5 plugin which includes elements qmlglsrc and qmlglsink + +comment "qmlgl (qt5) needs the gst1-plugins-base opengl library" + depends on !BR2_PACKAGE_GST1_PLUGINS_BASE_HAS_LIB_OPENGL + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SHOUT2 + bool "shout2" + select BR2_PACKAGE_LIBSHOUT + help + Elements to send data to an icecast server using libshout2 + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2 + bool "v4l2" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 # multi planar api + select BR2_PACKAGE_LIBGUDEV if BR2_PACKAGE_HAS_UDEV + help + elements for Video 4 Linux + +comment "v4l2 needs a toolchain w/ headers >= 3.0" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2_PROBE + bool "v4l2-probe (m2m)" + depends on BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2 + help + Enables the V4L2 probe at plugin load time. This enables + support for v4l2 transform devices, such as m2m + devices. These plugins are registered as v4l2videoNconvert + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_CAIRO + bool "cairo" + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_CAIRO_PNG + help + Cairo-based elements + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLAC + bool "flac (libFLAC)" + depends on BR2_USE_WCHAR # flac + select BR2_PACKAGE_FLAC + help + The FLAC Lossless compressor Codec + +comment "flac needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_GDKPIXBUF + bool "gdkpixbuf" + depends on BR2_USE_WCHAR # gdk-pixbuf -> libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # gdk-pixbuf -> libglib2 + select BR2_PACKAGE_GDK_PIXBUF + help + GdkPixbuf-based image decoder, overlay and sink + +comment "gdkpixbuf needs a toolchain w/ wchar, threads" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_JACK + bool "jack" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_JACK2 + help + JACK audio source/sink plugin + +comment "jack needs a toolchain w/ C++, dynamic library" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_PULSE + bool "pulseaudio" + depends on BR2_TOOLCHAIN_HAS_THREADS # pulseaudio + depends on BR2_USE_MMU # pulseaudio + depends on !BR2_STATIC_LIBS # pulseaudio + depends on BR2_USE_WCHAR # pulseaudio + depends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC # pulseaudio + select BR2_PACKAGE_PULSEAUDIO + help + PulseAudio plugin library + +comment "pulseaudio support needs a toolchain w/ threads, wchar, dynamic library" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || !BR2_USE_WCHAR + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SOUPHTTPSRC + bool "souphttpsrc (http client)" + depends on BR2_USE_WCHAR # libsoup3 -> glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libsoup3 -> glib2 + select BR2_PACKAGE_LIBSOUP3 + help + libsoup3 HTTP client src/sink + +comment "souphttpsrc needs a toolchain w/ wchar, threads" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SPEEX + bool "speex" + select BR2_PACKAGE_SPEEX + help + Speex plugin library + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_TAGLIB + bool "taglib" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + select BR2_PACKAGE_TAGLIB + help + Taglib tagging plugin library + +comment "taglib needs a toolchain w/ C++, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_TWOLAME + bool "twolame" + select BR2_PACKAGE_TWOLAME + help + twolame mp2 audio encoder plugin + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VPX + bool "vpx (webm)" + depends on BR2_TOOLCHAIN_HAS_THREADS # libvpx + select BR2_PACKAGE_LIBVPX + help + VP8 plugin + +comment "libvpx needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_WAVPACK + bool "wavpack (*.wv audio)" + select BR2_PACKAGE_WAVPACK + help + Wavpack lossless/lossy audio format handling + +endif diff --git a/package/gstreamer1/gst1-plugins-good/gst1-plugins-good.hash b/package/gstreamer1/gst1-plugins-good/gst1-plugins-good.hash new file mode 100644 index 00000000..4410da6e --- /dev/null +++ b/package/gstreamer1/gst1-plugins-good/gst1-plugins-good.hash @@ -0,0 +1,3 @@ +# From https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.22.9.tar.xz.sha256sum +sha256 26959fcfebfff637d4ea08ef40316baf31b61bb7729820b0684e800c3a1478b6 gst-plugins-good-1.22.9.tar.xz +sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 COPYING diff --git a/package/gstreamer1/gst1-plugins-good/gst1-plugins-good.mk b/package/gstreamer1/gst1-plugins-good/gst1-plugins-good.mk new file mode 100644 index 00000000..2bb826d8 --- /dev/null +++ b/package/gstreamer1/gst1-plugins-good/gst1-plugins-good.mk @@ -0,0 +1,503 @@ +################################################################################ +# +# gst1-plugins-good +# +################################################################################ + +GST1_PLUGINS_GOOD_VERSION = 1.22.9 +GST1_PLUGINS_GOOD_SOURCE = gst-plugins-good-$(GST1_PLUGINS_GOOD_VERSION).tar.xz +GST1_PLUGINS_GOOD_SITE = https://gstreamer.freedesktop.org/src/gst-plugins-good +GST1_PLUGINS_GOOD_LICENSE_FILES = COPYING +GST1_PLUGINS_GOOD_LICENSE = LGPL-2.1+ + +GST1_PLUGINS_GOOD_CFLAGS = $(TARGET_CFLAGS) -std=gnu99 +GST1_PLUGINS_GOOD_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) + +GST1_PLUGINS_GOOD_CONF_OPTS = \ + -Dexamples=disabled \ + -Dtests=disabled \ + -Dgobject-cast-checks=disabled \ + -Dglib-asserts=disabled \ + -Dglib-checks=disabled \ + -Dasm=disabled \ + -Ddirectsound=disabled \ + -Dwaveform=disabled \ + -Drpicamsrc=disabled \ + -Dosxaudio=disabled \ + -Dosxvideo=disabled \ + -Daalib=disabled \ + -Dlibcaca=disabled \ + -Ddoc=disabled + +# Options which require currently unpackaged libraries +GST1_PLUGINS_GOOD_CONF_OPTS += \ + -Ddv=disabled \ + -Ddv1394=disabled + +GST1_PLUGINS_GOOD_DEPENDENCIES = \ + gstreamer1 \ + gst1-plugins-base \ + $(TARGET_NLS_DEPENDENCIES) + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_JACK),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Djack=enabled +GST1_PLUGINS_GOOD_DEPENDENCIES += jack2 +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Djack=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBV4L),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dv4l2-libv4l2=enabled +GST1_PLUGINS_GOOD_DEPENDENCIES += libv4l +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dv4l2-libv4l2=disabled +endif + +ifeq ($(BR2_PACKAGE_ORC),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dorc=enabled +GST1_PLUGINS_GOOD_DEPENDENCIES += orc +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_ADAPTIVEMUX2),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dadaptivedemux2=enabled +GST1_PLUGINS_GOOD_DEPENDENCIES += libsoup3 libxml2 +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dadaptivedemux2=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ALPHA),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dalpha=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dalpha=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_APETAG),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dapetag=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dapetag=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUDIOFX),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Daudiofx=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Daudiofx=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUDIOPARSERS),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Daudioparsers=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Daudioparsers=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUPARSE),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dauparse=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dauparse=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUTODETECT),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dautodetect=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dautodetect=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AVI),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Davi=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Davi=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_CUTTER),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dcutter=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dcutter=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DEBUGUTILS),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Ddebugutils=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Ddebugutils=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DEINTERLACE),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Ddeinterlace=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Ddeinterlace=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DTMF),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Ddtmf=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Ddtmf=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_EFFECTV),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Deffectv=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Deffectv=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_EQUALIZER),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dequalizer=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dequalizer=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLV),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dflv=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dflv=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLX),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dflx=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dflx=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_GOOM),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dgoom=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dgoom=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_GOOM2K1),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dgoom2k1=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dgoom2k1=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ICYDEMUX),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dicydemux=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dicydemux=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ID3DEMUX),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Did3demux=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Did3demux=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_IMAGEFREEZE),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dimagefreeze=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dimagefreeze=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_INTERLEAVE),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dinterleave=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dinterleave=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ISOMP4),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Disomp4=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Disomp4=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LAME),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dlame=enabled +GST1_PLUGINS_GOOD_DEPENDENCIES += lame +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dlame=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MPG123),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dmpg123=enabled +GST1_PLUGINS_GOOD_DEPENDENCIES += mpg123 +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dmpg123=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LAW),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dlaw=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dlaw=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LEVEL),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dlevel=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dlevel=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dmatroska=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dmatroska=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MONOSCOPE),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dmonoscope=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dmonoscope=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MULTIFILE),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dmultifile=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dmultifile=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MULTIPART),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dmultipart=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dmultipart=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_REPLAYGAIN),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dreplaygain=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dreplaygain=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTP),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Drtp=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Drtp=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTPMANAGER),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Drtpmanager=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Drtpmanager=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Drtsp=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Drtsp=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SHAPEWIPE),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dshapewipe=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dshapewipe=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SMPTE),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dsmpte=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dsmpte=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SPECTRUM),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dspectrum=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dspectrum=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_UDP),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dudp=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dudp=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOBOX),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dvideobox=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dvideobox=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOCROP),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dvideocrop=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dvideocrop=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOFILTER),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dvideofilter=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dvideofilter=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOMIXER),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dvideomixer=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dvideomixer=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_WAVENC),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dwavenc=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dwavenc=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_WAVPARSE),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dwavparse=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dwavparse=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_XINGMUX),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dxingmux=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dxingmux=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_Y4M),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dy4m=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dy4m=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_OSS),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Doss=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Doss=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_OSS4),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Doss4=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Doss4=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_QMLGL),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dqt5=enabled +GST1_PLUGINS_GOOD_DEPENDENCIES += qt5declarative qt5tools +ifeq ($(BR2_PACKAGE_QT5BASE_XCB),y) +GST1_PLUGINS_GOOD_DEPENDENCIES += qt5x11extras +endif +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dqt5=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SHOUT2),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dshout2=enabled +GST1_PLUGINS_GOOD_DEPENDENCIES += libshout +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dshout2=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dv4l2=enabled +# Enable use of gudev if available, for device probing and monitoring. +ifeq ($(BR2_PACKAGE_LIBGUDEV),y) +GST1_PLUGINS_GOOD_DEPENDENCIES += libgudev +GST1_PLUGINS_GOOD_CONF_OPTS += -Dv4l2-gudev=enabled +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dv4l2-gudev=disabled +endif +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dv4l2=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2_PROBE),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dv4l2-probe=true +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dv4l2-probe=false +endif + +ifeq ($(BR2_PACKAGE_XORG7),y) +GST1_PLUGINS_GOOD_DEPENDENCIES += xlib_libX11 xlib_libXext xlib_libXv +GST1_PLUGINS_GOOD_CONF_OPTS += -Dximagesrc=enabled +ifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y) +GST1_PLUGINS_GOOD_DEPENDENCIES += xlib_libXfixes +GST1_PLUGINS_GOOD_CONF_OPTS += -Dximagesrc-xfixes=enabled +endif +ifeq ($(BR2_PACKAGE_XLIB_LIBXDAMAGE),y) +GST1_PLUGINS_GOOD_DEPENDENCIES += xlib_libXdamage +GST1_PLUGINS_GOOD_CONF_OPTS += -Dximagesrc-xdamage=enabled +endif +else +GST1_PLUGINS_GOOD_CONF_OPTS += \ + -Dximagesrc=disabled \ + -Dximagesrc-xfixes=disabled \ + -Dximagesrc-xdamage=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_CAIRO),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dcairo=enabled +GST1_PLUGINS_GOOD_DEPENDENCIES += cairo +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dcairo=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLAC),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dflac=enabled +GST1_PLUGINS_GOOD_DEPENDENCIES += flac +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dflac=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_GDKPIXBUF),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dgdk-pixbuf=enabled +GST1_PLUGINS_GOOD_DEPENDENCIES += gdk-pixbuf +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dgdk-pixbuf=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_JPEG),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Djpeg=enabled +GST1_PLUGINS_GOOD_DEPENDENCIES += jpeg +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Djpeg=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PNG),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dpng=enabled +GST1_PLUGINS_GOOD_DEPENDENCIES += libpng +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dpng=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_PULSE),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dpulse=enabled +GST1_PLUGINS_GOOD_DEPENDENCIES += pulseaudio +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dpulse=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SOUPHTTPSRC),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dsoup=enabled +GST1_PLUGINS_GOOD_DEPENDENCIES += libsoup3 +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dsoup=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SPEEX),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dspeex=enabled +GST1_PLUGINS_GOOD_DEPENDENCIES += speex +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dspeex=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_TAGLIB),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dtaglib=enabled +GST1_PLUGINS_GOOD_DEPENDENCIES += taglib +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dtaglib=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_TWOLAME),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dtwolame=enabled +GST1_PLUGINS_GOOD_DEPENDENCIES += twolame +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dtwolame=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VPX),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dvpx=enabled +GST1_PLUGINS_GOOD_DEPENDENCIES += libvpx +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dvpx=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_WAVPACK),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dwavpack=enabled +GST1_PLUGINS_GOOD_DEPENDENCIES += wavpack +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dwavpack=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_BZ2),y) +GST1_PLUGINS_GOOD_CONF_OPTS += -Dbz2=enabled +GST1_PLUGINS_GOOD_DEPENDENCIES += bzip2 +else +GST1_PLUGINS_GOOD_CONF_OPTS += -Dbz2=disabled +endif + +$(eval $(meson-package)) diff --git a/package/gstreamer1/gst1-plugins-ugly/Config.in b/package/gstreamer1/gst1-plugins-ugly/Config.in new file mode 100644 index 00000000..54766ffa --- /dev/null +++ b/package/gstreamer1/gst1-plugins-ugly/Config.in @@ -0,0 +1,56 @@ +menuconfig BR2_PACKAGE_GST1_PLUGINS_UGLY + bool "gst1-plugins-ugly" + select BR2_PACKAGE_GST1_PLUGINS_BASE + help + A set of well-supported plug-ins for GStreamer, but might pose + problems for distributors. + + https://gstreamer.freedesktop.org/ + +if BR2_PACKAGE_GST1_PLUGINS_UGLY + +comment "dependency-less plugins" + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_ASFDEMUX + bool "asfdemux" + help + Demuxes and muxes audio and video in Microsofts ASF format + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_DVDLPCMDEC + bool "dvdlpcmdec" + help + Decode DVD LPCM frames into standard PCM + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_DVDSUB + bool "dvdsub" + help + DVD subtitle parser and decoder + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_REALMEDIA + bool "realmedia" + help + RealMedia support plugins + +comment "plugins with external dependencies (there may be more available)" + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_DVDREAD + bool "dvdread" + select BR2_PACKAGE_LIBDVDREAD + help + Access a DVD with dvdread + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MPEG2DEC + bool "mpeg2dec" + select BR2_PACKAGE_LIBMPEG2 + help + LibMpeg2 decoder + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_X264 + bool "x264" + select BR2_PACKAGE_X264 + help + x264 encoder + +# Note: to get descriptions use the following. +# # find . -name 'plugin-*.xml' | xargs grep -m 1 description +endif diff --git a/package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.hash b/package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.hash new file mode 100644 index 00000000..20394619 --- /dev/null +++ b/package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.hash @@ -0,0 +1,3 @@ +# From https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.22.9.tar.xz.sha256sum +sha256 0bf685d66015a01dd3fc1671b64a1c8acb321dd9d4ab9e05a29ab19782aa6236 gst-plugins-ugly-1.22.9.tar.xz +sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 COPYING diff --git a/package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.mk b/package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.mk new file mode 100644 index 00000000..7bb95dd1 --- /dev/null +++ b/package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.mk @@ -0,0 +1,93 @@ +################################################################################ +# +# gst1-plugins-ugly +# +################################################################################ + +GST1_PLUGINS_UGLY_VERSION = 1.22.9 +GST1_PLUGINS_UGLY_SOURCE = gst-plugins-ugly-$(GST1_PLUGINS_UGLY_VERSION).tar.xz +GST1_PLUGINS_UGLY_SITE = https://gstreamer.freedesktop.org/src/gst-plugins-ugly +GST1_PLUGINS_UGLY_LICENSE_FILES = COPYING +# GPL licensed plugins will append to GST1_PLUGINS_UGLY_LICENSE if enabled. +GST1_PLUGINS_UGLY_LICENSE = LGPL-2.1+ + +GST1_PLUGINS_UGLY_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) + +GST1_PLUGINS_UGLY_CONF_OPTS += \ + -Dtests=disabled \ + -Ddoc=disabled + +GST1_PLUGINS_UGLY_CONF_OPTS += \ + -Da52dec=disabled \ + -Damrnb=disabled \ + -Damrwbdec=disabled \ + -Dcdio=disabled \ + -Dsidplay=disabled + +GST1_PLUGINS_UGLY_DEPENDENCIES = gstreamer1 gst1-plugins-base + +ifeq ($(BR2_PACKAGE_ORC),y) +GST1_PLUGINS_UGLY_CONF_OPTS += -Dorc=enabled +GST1_PLUGINS_UGLY_DEPENDENCIES += orc +else +GST1_PLUGINS_UGLY_CONF_OPTS += -Dorc=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_ASFDEMUX),y) +GST1_PLUGINS_UGLY_CONF_OPTS += -Dasfdemux=enabled +else +GST1_PLUGINS_UGLY_CONF_OPTS += -Dasfdemux=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_DVDLPCMDEC),y) +GST1_PLUGINS_UGLY_CONF_OPTS += -Ddvdlpcmdec=enabled +else +GST1_PLUGINS_UGLY_CONF_OPTS += -Ddvdlpcmdec=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_DVDSUB),y) +GST1_PLUGINS_UGLY_CONF_OPTS += -Ddvdsub=enabled +else +GST1_PLUGINS_UGLY_CONF_OPTS += -Ddvdsub=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_REALMEDIA),y) +GST1_PLUGINS_UGLY_CONF_OPTS += -Drealmedia=enabled +else +GST1_PLUGINS_UGLY_CONF_OPTS += -Drealmedia=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_DVDREAD),y) +GST1_PLUGINS_UGLY_CONF_OPTS += -Ddvdread=enabled +GST1_PLUGINS_UGLY_DEPENDENCIES += libdvdread +GST1_PLUGINS_UGLY_HAS_GPL_LICENSE = y +else +GST1_PLUGINS_UGLY_CONF_OPTS += -Ddvdread=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MPEG2DEC),y) +GST1_PLUGINS_UGLY_CONF_OPTS += -Dmpeg2dec=enabled +GST1_PLUGINS_UGLY_DEPENDENCIES += libmpeg2 +GST1_PLUGINS_UGLY_HAS_GPL_LICENSE = y +else +GST1_PLUGINS_UGLY_CONF_OPTS += -Dmpeg2dec=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_X264),y) +GST1_PLUGINS_UGLY_CONF_OPTS += -Dx264=enabled +GST1_PLUGINS_UGLY_DEPENDENCIES += x264 +GST1_PLUGINS_UGLY_HAS_GPL_LICENSE = y +else +GST1_PLUGINS_UGLY_CONF_OPTS += -Dx264=disabled +endif + +# Add GPL license if GPL plugins enabled. +ifeq ($(GST1_PLUGINS_UGLY_HAS_GPL_LICENSE),y) +GST1_PLUGINS_UGLY_CONF_OPTS += -Dgpl=enabled +GST1_PLUGINS_UGLY_LICENSE += , GPL-2.0 +endif + +# Use the following command to extract license info for plugins. +# # find . -name 'plugin-*.xml' | xargs grep license + +$(eval $(meson-package)) diff --git a/package/gstreamer1/gst1-python/Config.in b/package/gstreamer1/gst1-python/Config.in new file mode 100644 index 00000000..d2671266 --- /dev/null +++ b/package/gstreamer1/gst1-python/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_GST1_PYTHON + bool "gst1-python" + depends on BR2_USE_MMU # libglib2, gobject-introspection + depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS # gobject-introspection + depends on BR2_HOST_GCC_AT_LEAST_8 # gobject-introspection -> host-qemu + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # gobject-introspection + depends on BR2_TOOLCHAIN_USES_GLIBC # gobject-introspection + depends on BR2_PACKAGE_PYTHON3 # gobject-introspection + select BR2_PACKAGE_GOBJECT_INTROSPECTION + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_PYTHON_GOBJECT + help + GStreamer python overrides for the gobject-introspection-based + pygst bindings. + + https://gstreamer.freedesktop.org/modules/gst-python.html + +comment "gst1-python needs python3" + depends on !BR2_PACKAGE_PYTHON3 + +comment "gst1-python needs a glibc toolchain, gcc >= 4.9, host gcc >= 8" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_HOST_GCC_AT_LEAST_8 diff --git a/package/gstreamer1/gst1-python/gst1-python.hash b/package/gstreamer1/gst1-python/gst1-python.hash new file mode 100644 index 00000000..2f352df9 --- /dev/null +++ b/package/gstreamer1/gst1-python/gst1-python.hash @@ -0,0 +1,3 @@ +# From https://gstreamer.freedesktop.org/src/gst-python/gst-python-1.22.9.tar.xz.sha256sum +sha256 3f9d5c6ffefda268703744b592a6b3983aa6723273b1220ecbcb62c2a5800009 gst-python-1.22.9.tar.xz +sha256 ea3ad127610e5ded2210b3a86a46314f2b3b28e438eccffdae19a4d6fbcdb0c2 COPYING diff --git a/package/gstreamer1/gst1-python/gst1-python.mk b/package/gstreamer1/gst1-python/gst1-python.mk new file mode 100644 index 00000000..501ca5e0 --- /dev/null +++ b/package/gstreamer1/gst1-python/gst1-python.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# gst1-python +# +################################################################################ + +GST1_PYTHON_VERSION = 1.22.9 +GST1_PYTHON_SOURCE = gst-python-$(GST1_PYTHON_VERSION).tar.xz +GST1_PYTHON_SITE = https://gstreamer.freedesktop.org/src/gst-python +GST1_PYTHON_INSTALL_STAGING = YES +GST1_PYTHON_LICENSE_FILES = COPYING +GST1_PYTHON_LICENSE = LGPL-2.1+ + +GST1_PYTHON_DEPENDENCIES = \ + gst1-plugins-base \ + gstreamer1 \ + python-gobject + +# A sysconfigdata_name must be manually specified or the resulting .so +# will have a x86_64 prefix, which causes "from gi.repository import Gst" +# to fail. A pythonpath must be specified or the host python path will be +# used resulting in a "not a valid python" error. +GST1_PYTHON_CONF_ENV += \ + _PYTHON_SYSCONFIGDATA_NAME=$(PKG_PYTHON_SYSCONFIGDATA_NAME) \ + PYTHONPATH=$(PYTHON3_PATH) + +# Due to the CONF_ENV options, libpython-dir must be set manually +# or else the error: "Python dynamic library path could not be determined" +# occurs. We set the libpython-dir to /usr/lib as this path is hard-coded +# into the resulting .so file as /usr/lib/python3.$(PYTHON3_VERSION_MAJOR).so. +# Because we provide PYTHONPATH=$(PYTHON3_PATH) above, the logic in the meson +# file uses the above python path to determine if /usr/lib/ has the proper .so +# file. Because Buildroot provides the appropriate paths, the meson file finds +# the correct .so file, and the resulting compiled library has the appropriate +# path of /usr/lib/python3.$(PYTHON3_VERSION_MAJOR).so +GST1_PYTHON_CONF_OPTS += \ + -Dlibpython-dir=/usr/lib/ \ + -Dtests=disabled + +$(eval $(meson-package)) diff --git a/package/gstreamer1/gst1-rtsp-server/Config.in b/package/gstreamer1/gst1-rtsp-server/Config.in new file mode 100644 index 00000000..f0294795 --- /dev/null +++ b/package/gstreamer1/gst1-rtsp-server/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_GST1_RTSP_SERVER + bool "gst1-rtsp-server" + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP # runtime + select BR2_PACKAGE_GST1_PLUGINS_GOOD + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTP # runtime + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTPMANAGER # runtime + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_UDP # runtime + help + RTSP server library based on GStreamer. + + https://gstreamer.freedesktop.org/ diff --git a/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.hash b/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.hash new file mode 100644 index 00000000..21f38037 --- /dev/null +++ b/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.hash @@ -0,0 +1,4 @@ +# From https://gstreamer.freedesktop.org/src/gst-rtsp-server/gst-rtsp-server-1.22.9.tar.xz.sha256sum +sha256 808af148f89404ff74850f8ca5272bed4bfe67f9620231dc4514fd07eb26d0a4 gst-rtsp-server-1.22.9.tar.xz +sha256 ad2eec519ebd4b5df86ea84dff24ae3bfa2edea846a703b58902dd221ae375db COPYING +sha256 ad2eec519ebd4b5df86ea84dff24ae3bfa2edea846a703b58902dd221ae375db COPYING.LIB diff --git a/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.mk b/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.mk new file mode 100644 index 00000000..87e6413d --- /dev/null +++ b/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# gst1-rtsp-server +# +################################################################################ + +GST1_RTSP_SERVER_VERSION = 1.22.9 +GST1_RTSP_SERVER_SOURCE = gst-rtsp-server-$(GST1_RTSP_SERVER_VERSION).tar.xz +GST1_RTSP_SERVER_SITE = http://gstreamer.freedesktop.org/src/gst-rtsp-server +GST1_RTSP_SERVER_LICENSE = LGPL-2.1+ +GST1_RTSP_SERVER_LICENSE_FILES = COPYING COPYING.LIB +GST1_RTSP_SERVER_CPE_ID_VENDOR = gstreamer_project +GST1_RTSP_SERVER_CPE_ID_PRODUCT = gst-rtsp-server +GST1_RTSP_SERVER_INSTALL_STAGING = YES +GST1_RTSP_SERVER_DEPENDENCIES = \ + host-pkgconf \ + gstreamer1 \ + gst1-plugins-base \ + gst1-plugins-good + +GST1_RTSP_SERVER_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) + +GST1_RTSP_SERVER_CONF_OPTS = \ + -Dexamples=disabled \ + -Dtests=disabled \ + -Ddoc=disabled + +GST1_RTSP_SERVER_CONF_OPTS += \ + -Dexamples=disabled \ + -Dtests=disabled \ + -Dgobject-cast-checks=disabled \ + -Dglib-asserts=disabled \ + -Dglib-checks=disabled + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +GST1_RTSP_SERVER_CONF_OPTS += -Dintrospection=enabled +GST1_RTSP_SERVER_DEPENDENCIES += gobject-introspection +else +GST1_RTSP_SERVER_CONF_OPTS += -Dintrospection=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBCGROUP),y) +GST1_RTSP_SERVER_DEPENDENCIES += libcgroup +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD),y) +GST1_RTSP_SERVER_DEPENDENCIES += gst1-plugins-bad +endif + +$(eval $(meson-package)) diff --git a/package/gstreamer1/gst1-shark/Config.in b/package/gstreamer1/gst1-shark/Config.in new file mode 100644 index 00000000..ad6b6fb9 --- /dev/null +++ b/package/gstreamer1/gst1-shark/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_GST1_SHARK + bool "gst1-shark" + select BR2_PACKAGE_GSTREAMER1_CHECK + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP + select BR2_PACKAGE_GSTREAMER1_GST_DEBUG # gst_debug_log_valist, GST_CAT_STATES + help + GstShark leverages GStreamers newest instrumentation subsystem + by installing a set of custom hooks to the trace points. A + variety of data analytics are extracted and presented to the + user in a graphical, friendly way. + + https://github.com/RidgeRun/gst-shark diff --git a/package/gstreamer1/gst1-shark/gst1-shark.hash b/package/gstreamer1/gst1-shark/gst1-shark.hash new file mode 100644 index 00000000..509d3444 --- /dev/null +++ b/package/gstreamer1/gst1-shark/gst1-shark.hash @@ -0,0 +1,4 @@ +sha256 28817276848dcff7dcbf5ecd78a0b69f34d3dfcd08a07f5244d9405729f76b94 gst1-shark-v0.8.1-git4.tar.gz + +# Hashes for license files: +sha256 6d191b8f1fa03cabced18b8e48fddbf960a19f965bed8491e76ed62238f92f0b COPYING diff --git a/package/gstreamer1/gst1-shark/gst1-shark.mk b/package/gstreamer1/gst1-shark/gst1-shark.mk new file mode 100644 index 00000000..a059d41c --- /dev/null +++ b/package/gstreamer1/gst1-shark/gst1-shark.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# gst1-shark +# +################################################################################ + +GST1_SHARK_VERSION = v0.8.1 +GST1_SHARK_SITE = https://github.com/RidgeRun/gst-shark.git +GST1_SHARK_SITE_METHOD = git +GST1_SHARK_GIT_SUBMODULES = YES + +GST1_SHARK_LICENSE = LGPL-2.1+ +GST1_SHARK_LICENSE_FILES = COPYING + +GST1_SHARK_AUTORECONF = YES +GST1_SHARK_DEPENDENCIES = host-pkgconf gstreamer1 gst1-plugins-base +GST1_SHARK_CONF_OPTS = --disable-graphviz + +$(eval $(autotools-package)) diff --git a/package/gstreamer1/gst1-vaapi/Config.in b/package/gstreamer1/gst1-vaapi/Config.in new file mode 100644 index 00000000..d6a1542a --- /dev/null +++ b/package/gstreamer1/gst1-vaapi/Config.in @@ -0,0 +1,54 @@ +config BR2_PACKAGE_GST1_VAAPI + bool "gst1-vaapi" + depends on !BR2_STATIC_LIBS # dlopen(), libva + depends on BR2_TOOLCHAIN_HAS_THREADS # libva, libdrm + depends on BR2_INSTALL_LIBSTDCPP # gst1-plugins-bad + depends on BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_LIBVA + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_GST1_PLUGINS_BAD # gstreamer-codecparsers + select BR2_PACKAGE_WAYLAND_PROTOCOLS if BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXRANDR if BR2_PACKAGE_XORG7 + help + gstreamer-vaapi consists in a collection of VA-API based + plugins for GStreamer and helper libraries. + + vaapidec is used to decode JPEG, MPEG-2, MPEG-4:2, + H.264 AVC, H.264 MVC, VP8, VC-1, WMV3, HEVC videos to VA + surfaces, depending on the actual value of and the + underlying hardware capabilities. This plugin is also able + to implicitly download the decoded surface to raw YUV + buffers. + + vaapienc is used to encode into MPEG-2, H.264 AVC, + H.264 MVC, JPEG, VP8, HEVC videos, depending on the actual + value of (mpeg2, h264, etc.) and the hardware + capabilities. By default, raw format bitstreams are + generated, so the result may be piped to a muxer, e.g. qtmux + for MP4 containers. + + vaapipostproc is used to filter VA surfaces, for + e.g. scaling, deinterlacing (bob, motion-adaptive, + motion-compensated), noise reduction or sharpening. This + plugin is also used to upload raw YUV pixels into VA + surfaces. + + vaapisink is used to render VA surfaces to an X11 or Wayland + display. This plugin also features a "headless" mode (DRM) + more suited to remote transcode scenarios, with faster + throughput. + + https://cgit.freedesktop.org/gstreamer/gstreamer-vaapi + +if BR2_PACKAGE_GST1_VAAPI + +config BR2_PACKAGE_GST1_VAAPI_ENCODERS + bool "enable encoders" + +endif + +comment "gst1-vaapi needs udev /dev management and a toolchain w/ threads, dynamic library, C++" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_PACKAGE_HAS_UDEV || !BR2_INSTALL_LIBSTDCPP diff --git a/package/gstreamer1/gst1-vaapi/gst1-vaapi.hash b/package/gstreamer1/gst1-vaapi/gst1-vaapi.hash new file mode 100644 index 00000000..ec23ae7c --- /dev/null +++ b/package/gstreamer1/gst1-vaapi/gst1-vaapi.hash @@ -0,0 +1,3 @@ +# From https://gstreamer.freedesktop.org/src/gstreamer-vaapi/gstreamer-vaapi-1.22.9.tar.xz.sha256sum +sha256 8ba20da8c4cbf5b2953dba904672c4275d0053e1528f97fdf8e59942c7883ca8 gstreamer-vaapi-1.22.9.tar.xz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB diff --git a/package/gstreamer1/gst1-vaapi/gst1-vaapi.mk b/package/gstreamer1/gst1-vaapi/gst1-vaapi.mk new file mode 100644 index 00000000..d934bab2 --- /dev/null +++ b/package/gstreamer1/gst1-vaapi/gst1-vaapi.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# gst1-vaapi +# +################################################################################ + +GST1_VAAPI_VERSION = 1.22.9 +GST1_VAAPI_SITE = https://gstreamer.freedesktop.org/src/gstreamer-vaapi +GST1_VAAPI_SOURCE = gstreamer-vaapi-$(GST1_VAAPI_VERSION).tar.xz +GST1_VAAPI_LICENSE = LGPL-2.1+ +GST1_VAAPI_LICENSE_FILES = COPYING.LIB + +GST1_VAAPI_DEPENDENCIES += \ + gstreamer1 \ + gst1-plugins-base \ + gst1-plugins-bad \ + libva \ + libdrm + +GST1_VAAPI_CONF_OPTS += \ + -Ddrm=enabled \ + -Degl=enabled \ + -Dexamples=disabled \ + -Dtests=disabled \ + -Ddoc=disabled + +ifeq ($(BR2_PACKAGE_GST1_VAAPI_ENCODERS),y) +GST1_VAAPI_CONF_OPTS += -Dencoders=enabled +else +GST1_VAAPI_CONF_OPTS += -Dencoders=disabled +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBEGL),y) +GST1_VAAPI_CONF_OPTS += -Degl=enabled +GST1_VAAPI_DEPENDENCIES += libegl +else +GST1_VAAPI_CONF_OPTS += -Degl=disabled +endif + +ifeq ($(BR2_PACKAGE_WAYLAND),y) +GST1_VAAPI_CONF_OPTS += -Dwayland=enabled +GST1_VAAPI_DEPENDENCIES += wayland wayland-protocols +else +GST1_VAAPI_CONF_OPTS += -Dwayland=disabled +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBX11)$(BR2_PACKAGE_XLIB_LIBXRANDR),yy) +GST1_VAAPI_CONF_OPTS += -Dx11=enabled +GST1_VAAPI_DEPENDENCIES += xlib_libX11 xlib_libXrandr +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +GST1_VAAPI_CONF_OPTS += -Dglx=enabled +else +GST1_VAAPI_CONF_OPTS += -Dglx=disabled +endif +else +GST1_VAAPI_CONF_OPTS += -Dx11=disabled -Dglx=disabled +endif + +$(eval $(meson-package)) diff --git a/package/gstreamer1/gstd/0001-Don-t-require-gstd-check-user-xenv.sh-for-systemd-se.patch b/package/gstreamer1/gstd/0001-Don-t-require-gstd-check-user-xenv.sh-for-systemd-se.patch new file mode 100644 index 00000000..247b5ab3 --- /dev/null +++ b/package/gstreamer1/gstd/0001-Don-t-require-gstd-check-user-xenv.sh-for-systemd-se.patch @@ -0,0 +1,34 @@ +From 05ae5237b1bc23399898f9c06463cfe2b5bba499 Mon Sep 17 00:00:00 2001 +From: James Hilliard +Date: Tue, 14 Sep 2021 17:48:03 -0600 +Subject: [PATCH] Don't require gstd-check-user-xenv.sh for systemd service + +The gstd-check-user-xenv.sh script does not appear to be required +for running the gstd service so we shouldn't require it for the +service to start. + +Note that the non-systemd init script already does not require this. + +Signed-off-by: James Hilliard +[Upstream status: +https://github.com/RidgeRun/gstd-1.x/pull/251] +--- + init/gstd.service.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/init/gstd.service.in b/init/gstd.service.in +index 3d20ecd..9125983 100644 +--- a/init/gstd.service.in ++++ b/init/gstd.service.in +@@ -6,7 +6,7 @@ StartLimitIntervalSec=30 + [Service] + Restart=on-failure + RestartSec=5s +-ExecStartPre=@GSTD_SYSTEMD_DIR@/gstd-check-user-xenv.sh ++ExecStartPre=-@GSTD_SYSTEMD_DIR@/gstd-check-user-xenv.sh + ExecStart=@prefix@/bin/gstd + + [Install] +-- +2.25.1 + diff --git a/package/gstreamer1/gstd/Config.in b/package/gstreamer1/gstd/Config.in new file mode 100644 index 00000000..bfe1a40b --- /dev/null +++ b/package/gstreamer1/gstd/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_GSTD + bool "gstd" + depends on BR2_USE_WCHAR # libglib2 -> gettext, libedit, libsoup + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2, libsoup + depends on BR2_USE_MMU # libdaemon, libedit, libglib2 + select BR2_PACKAGE_GSTREAMER1_GST_DEBUG # gst_debug_bin_to_dot_data + select BR2_PACKAGE_JANSSON + select BR2_PACKAGE_JSON_GLIB + select BR2_PACKAGE_LIBDAEMON + select BR2_PACKAGE_LIBEDIT + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBSOUP + help + GStreamer Daemon, also called gstd, is a GStreamer framework + for controlling audio and video streaming using an + InterProcess Communication protocol. + + https://developer.ridgerun.com/wiki/index.php?title=GStreamer_Daemon diff --git a/package/gstreamer1/gstd/gstd.hash b/package/gstreamer1/gstd/gstd.hash new file mode 100644 index 00000000..632f83f8 --- /dev/null +++ b/package/gstreamer1/gstd/gstd.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 f4a83765d2cf2948c38abc5107ab07d49a01b4101047f188fed7204f1d4e49c7 gstd-0.15.0.tar.gz +sha256 10162be9f7ddb9e98c22c3edd0f78d62ab88f0ca8b1cc968bd85d5d665489d90 COPYING diff --git a/package/gstreamer1/gstd/gstd.mk b/package/gstreamer1/gstd/gstd.mk new file mode 100644 index 00000000..965ede79 --- /dev/null +++ b/package/gstreamer1/gstd/gstd.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# gstd +# +################################################################################ + +GSTD_VERSION = 0.15.0 +GSTD_SITE = $(call github,RidgeRun,gstd-1.x,v$(GSTD_VERSION)) +GSTD_LICENSE_FILES = COPYING +GSTD_LICENSE = LGPL-2.1+ + +GSTD_DEPENDENCIES = \ + $(BR2_COREUTILS_HOST_DEPENDENCY) \ + gstreamer1 \ + jansson \ + json-glib \ + libdaemon \ + libedit \ + libglib2 \ + libsoup + +GSTD_CONF_OPTS = \ + -Denable-tests=disabled \ + -Denable-examples=disabled \ + -Denable-gtk-doc=false \ + -Denable-python=disabled \ + -Dwith-gstd-runstatedir=/var/run/gstd \ + -Dwith-gstd-logstatedir=/var/log/gstd \ + -Dwith-gstd-systemddir=/usr/lib/systemd/system + +GSTD_CFLAGS = $(TARGET_CFLAGS) -std=gnu99 + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +GSTD_CONF_OPTS += -Denable-systemd=enabled -Denable-initd=disabled +GSTD_DEPENDENCIES += systemd +else +GSTD_CONF_OPTS += -Denable-systemd=disabled -Denable-initd=enabled +endif + +$(eval $(meson-package)) diff --git a/package/gstreamer1/gstreamer1-editing-services/Config.in b/package/gstreamer1/gstreamer1-editing-services/Config.in new file mode 100644 index 00000000..e824781d --- /dev/null +++ b/package/gstreamer1/gstreamer1-editing-services/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_GSTREAMER1_EDITING_SERVICES + bool "gstreamer1-editing-services" + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_GST1_PLUGINS_GOOD + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOCONVERT # runtime + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOMIXER # runtime + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORESAMPLE # runtime + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERTSCALE # runtime + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOTESTSRC # runtime + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VOLUME # runtime + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_IMAGEFREEZE # runtime + help + GStreamer Editing Services is a high-level library for + facilitating the creation of audio/video non-linear editors. + + https://gstreamer.freedesktop.org diff --git a/package/gstreamer1/gstreamer1-editing-services/gstreamer1-editing-services.hash b/package/gstreamer1/gstreamer1-editing-services/gstreamer1-editing-services.hash new file mode 100644 index 00000000..2ea29dae --- /dev/null +++ b/package/gstreamer1/gstreamer1-editing-services/gstreamer1-editing-services.hash @@ -0,0 +1,6 @@ +# From https://gstreamer.freedesktop.org/src/gstreamer-editing-services/gst-editing-services-1.22.9.tar.xz.sha256sum +sha256 3553ad3802dccde0c0ef1461881acd9b55bddf8adf751de4cb51b7f8cb50440d gst-editing-services-1.22.9.tar.xz + +# Hashes for license files: +sha256 f445dc78b88496f7e20c7a2a461b95baba5865c8919b8289ac24ac0a80c6ce7a COPYING +sha256 f445dc78b88496f7e20c7a2a461b95baba5865c8919b8289ac24ac0a80c6ce7a COPYING.LIB diff --git a/package/gstreamer1/gstreamer1-editing-services/gstreamer1-editing-services.mk b/package/gstreamer1/gstreamer1-editing-services/gstreamer1-editing-services.mk new file mode 100644 index 00000000..e2c0f1cc --- /dev/null +++ b/package/gstreamer1/gstreamer1-editing-services/gstreamer1-editing-services.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# gstreamer1-editing-services +# +################################################################################ + +GSTREAMER1_EDITING_SERVICES_VERSION = 1.22.9 +GSTREAMER1_EDITING_SERVICES_SOURCE = gst-editing-services-$(GSTREAMER1_EDITING_SERVICES_VERSION).tar.xz +GSTREAMER1_EDITING_SERVICES_SITE = https://gstreamer.freedesktop.org/src/gstreamer-editing-services +GSTREAMER1_EDITING_SERVICES_LICENSE = LGPL-2.0+ +GSTREAMER1_EDITING_SERVICES_LICENSE_FILES = COPYING COPYING.LIB +GSTREAMER1_EDITING_SERVICES_INSTALL_STAGING = YES +GSTREAMER1_EDITING_SERVICES_DEPENDENCIES = \ + host-pkgconf \ + gstreamer1 \ + gst1-plugins-base \ + gst1-plugins-good \ + libxml2 + +GSTREAMER1_EDITING_SERVICES_CONF_OPTS = \ + -Ddoc=disabled \ + -Dexamples=disabled \ + -Dintrospection=disabled \ + -Dtests=disabled \ + -Dtools=enabled \ + -Dbash-completion=disabled \ + -Dxptv=disabled \ + -Dpython=disabled + +ifeq ($(BR2_PACKAGE_GST1_DEVTOOLS),y) +GSTREAMER1_EDITING_SERVICES_DEPENDENCIES += gst1-devtools +GSTREAMER1_EDITING_SERVICES_CONF_OPTS += -Dvalidate=enabled +else +GSTREAMER1_EDITING_SERVICES_CONF_OPTS += -Dvalidate=disabled +endif + +$(eval $(meson-package)) diff --git a/package/gstreamer1/gstreamer1.mk b/package/gstreamer1/gstreamer1.mk new file mode 100644 index 00000000..8530ff02 --- /dev/null +++ b/package/gstreamer1/gstreamer1.mk @@ -0,0 +1 @@ +include $(sort $(wildcard package/gstreamer1/*/*.mk)) diff --git a/package/gstreamer1/gstreamer1/Config.in b/package/gstreamer1/gstreamer1/Config.in new file mode 100644 index 00000000..5609d869 --- /dev/null +++ b/package/gstreamer1/gstreamer1/Config.in @@ -0,0 +1,61 @@ +comment "gstreamer 1.x needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_GSTREAMER1 + bool "gstreamer 1.x" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + help + GStreamer is an open source multimedia framework. This 1.x + version of Gstreamer is incompatible with Gstreamer 0.10.x. + + https://gstreamer.freedesktop.org/ + +if BR2_PACKAGE_GSTREAMER1 + +config BR2_PACKAGE_GSTREAMER1_CHECK + bool "enable unit test libraries" + help + Enable building unit test libraries for gstreamer. + +config BR2_PACKAGE_GSTREAMER1_PARSE + bool "enable command-line parser" + default y + help + Enable command line parser for gstreamer. This may increase + the CPU overhead by a small amount. + +config BR2_PACKAGE_GSTREAMER1_TRACE + bool "enable tracing subsystem" + default y + help + Enable the tracing subsystem within gstreamer. This may + increase CPU overhead by a small amount. + +config BR2_PACKAGE_GSTREAMER1_GST_DEBUG + bool "enable gst-debug trace support" + default y + help + Enable support for the gst-debug tracing functionality in + gstreamer. This has limited CPU overhead, but does increase + the rootfs size somewhat. + +config BR2_PACKAGE_GSTREAMER1_PLUGIN_REGISTRY + bool "enable plugin registry" + default y + help + Enable support for the GStreamer plugin registry. This may + increase the launch-time for a GStreamer application. + +config BR2_PACKAGE_GSTREAMER1_INSTALL_TOOLS + bool "install tools" + default y + help + Install the gst-inspect, gst-launch, gst-stats and + gst-typefind tools. This will take up additional space on + the target. + +endif diff --git a/package/gstreamer1/gstreamer1/gstreamer1.hash b/package/gstreamer1/gstreamer1/gstreamer1.hash new file mode 100644 index 00000000..b6ed001e --- /dev/null +++ b/package/gstreamer1/gstreamer1/gstreamer1.hash @@ -0,0 +1,3 @@ +# From https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.22.9.tar.xz.sha256sum +sha256 1e7124d347e8cdc80f08ec1d370c201be513002af1102bb20e83c5279cb48ebd gstreamer-1.22.9.tar.xz +sha256 ad2eec519ebd4b5df86ea84dff24ae3bfa2edea846a703b58902dd221ae375db COPYING diff --git a/package/gstreamer1/gstreamer1/gstreamer1.mk b/package/gstreamer1/gstreamer1/gstreamer1.mk new file mode 100644 index 00000000..5b9125e6 --- /dev/null +++ b/package/gstreamer1/gstreamer1/gstreamer1.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# gstreamer1 +# +################################################################################ + +GSTREAMER1_VERSION = 1.22.9 +GSTREAMER1_SOURCE = gstreamer-$(GSTREAMER1_VERSION).tar.xz +GSTREAMER1_SITE = https://gstreamer.freedesktop.org/src/gstreamer +GSTREAMER1_INSTALL_STAGING = YES +GSTREAMER1_LICENSE_FILES = COPYING +GSTREAMER1_LICENSE = LGPL-2.1+ +GSTREAMER1_CPE_ID_VENDOR = gstreamer_project +GSTREAMER1_CPE_ID_PRODUCT = gstreamer + +GSTREAMER1_CONF_OPTS = \ + -Dexamples=disabled \ + -Dtests=disabled \ + -Dbenchmarks=disabled \ + -Dtools=$(if $(BR2_PACKAGE_GSTREAMER1_INSTALL_TOOLS),enabled,disabled) \ + -Dgobject-cast-checks=disabled \ + -Dglib-asserts=disabled \ + -Dglib-checks=disabled \ + -Dextra-checks=disabled \ + -Dcheck=$(if $(BR2_PACKAGE_GSTREAMER1_CHECK),enabled,disabled) \ + -Dtracer_hooks=$(if $(BR2_PACKAGE_GSTREAMER1_TRACE),true,false) \ + -Doption-parsing=$(if $(BR2_PACKAGE_GSTREAMER1_PARSE),true,false) \ + -Dgst_debug=$(if $(BR2_PACKAGE_GSTREAMER1_GST_DEBUG),true,false) \ + -Dgst_parse=true \ + -Dregistry=$(if $(BR2_PACKAGE_GSTREAMER1_PLUGIN_REGISTRY),true,false) \ + -Ddoc=disabled + +GSTREAMER1_DEPENDENCIES = \ + host-bison \ + host-flex \ + host-pkgconf \ + libglib2 \ + $(if $(BR2_PACKAGE_LIBUNWIND),libunwind) \ + $(if $(BR2_PACKAGE_VALGRIND),valgrind) \ + $(TARGET_NLS_DEPENDENCIES) + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +GSTREAMER1_CONF_OPTS += -Dintrospection=enabled +GSTREAMER1_DEPENDENCIES += gobject-introspection +else +GSTREAMER1_CONF_OPTS += -Dintrospection=disabled +endif + +GSTREAMER1_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) + +# By default, girdir uses datadir as its prefix of which pkg-config will not +# append the sysroot directory. This results in a build failure with +# gst1-plugins-base. Changing prefix to ${libdir}/../share prevents this error. +define GSTREAMER1_FIX_GIRDIR + $(SED) "s%girdir=.*%girdir=\$${libdir}/../share/gir-1.0%g" \ + $(STAGING_DIR)/usr/lib/pkgconfig/gstreamer-1.0.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/gstreamer-base-1.0.pc +endef +GSTREAMER1_POST_INSTALL_STAGING_HOOKS += GSTREAMER1_FIX_GIRDIR + +$(eval $(meson-package)) diff --git a/package/gtest/Config.in b/package/gtest/Config.in new file mode 100644 index 00000000..25d756f7 --- /dev/null +++ b/package/gtest/Config.in @@ -0,0 +1,50 @@ +config BR2_PACKAGE_GTEST + bool "gtest" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14 + depends on BR2_USE_MMU # fork() + help + Google's framework for writing C++ tests on a variety of + platforms (Linux, Mac OS X, Windows, Cygwin, Windows CE, and + Symbian). Based on the xUnit architecture. Supports + automatic test discovery, a rich set of assertions, + user-defined assertions, death tests, fatal and non-fatal + failures, value- and type-parameterized tests, various + options for running the tests, and XML test report + generation. + + Gtest also allows to easily build testsuites for C programs. + + This package allows running testsuites on the target which + might be advantageous in certain cases. + + https://github.com/google/googletest + +if BR2_PACKAGE_GTEST + +config BR2_PACKAGE_GTEST_GMOCK + bool "gmock" + help + Inspired by jMock, EasyMock, and Hamcrest, and designed with + C++'s specifics in mind, Google C++ Mocking Framework (or + Google Mock for short) is a library for writing and using C++ + mock classes. + + Google Mock: + + * lets you create mock classes trivially using simple + macros, supports a rich set of matchers and actions, + * handles unordered, partially ordered, or completely + ordered expectations, + * is extensible by users, and + * works on Linux, Mac OS X, Windows, Windows Mobile, minGW, + and Symbian. + +endif # BR2_PACKAGE_GTEST + +comment "gtest needs a toolchain w/ C++, wchar, threads, gcc >= 5" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_5 diff --git a/package/gtest/gtest.hash b/package/gtest/gtest.hash new file mode 100644 index 00000000..5b1dcf44 --- /dev/null +++ b/package/gtest/gtest.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 8ad598c73ad796e0d8280b082cebd82a630d73e73cd3c70057938a6501bba5d7 gtest-1.14.0.tar.gz +sha256 9702de7e4117a8e2b20dafab11ffda58c198aede066406496bef670d40a22138 LICENSE diff --git a/package/gtest/gtest.mk b/package/gtest/gtest.mk new file mode 100644 index 00000000..c252ede8 --- /dev/null +++ b/package/gtest/gtest.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# gtest +# +################################################################################ + +GTEST_VERSION = 1.14.0 +GTEST_SITE = $(call github,google,googletest,v$(GTEST_VERSION)) +GTEST_INSTALL_STAGING = YES +GTEST_INSTALL_TARGET = NO +GTEST_LICENSE = BSD-3-Clause +GTEST_LICENSE_FILES = LICENSE +GTEST_CPE_ID_VENDOR = google +GTEST_CPE_ID_PRODUCT = google_test + +# While it is possible to build gtest as shared library, using this gtest shared +# library requires to set some special configure option in the project using +# gtest. +# So, force to build gtest as a static library. +# +# For further details, refer to the explaination given in the README file from +# the gtest sources. +GTEST_CONF_OPTS = -DBUILD_SHARED_LIBS=OFF + +# Ensure that GTest is compiled with -fPIC to allow linking the static +# libraries with dynamically linked programs. This is not a requirement +# for most architectures but is mandatory for ARM. +ifeq ($(BR2_STATIC_LIBS),) +GTEST_CONF_OPTS += -DCMAKE_POSITION_INDEPENDENT_CODE=ON +endif + +ifeq ($(BR2_PACKAGE_GTEST_GMOCK),y) +GTEST_CONF_OPTS += -DBUILD_GMOCK=ON +else +GTEST_CONF_OPTS += -DBUILD_GMOCK=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/gtk2-engines/Config.in b/package/gtk2-engines/Config.in new file mode 100644 index 00000000..756a7d00 --- /dev/null +++ b/package/gtk2-engines/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_GTK2_ENGINES + bool "gtk engines" + depends on BR2_PACKAGE_LIBGTK2 + help + A collection of basic theme engines for GTK+. diff --git a/package/gtk2-engines/gtk2-engines.hash b/package/gtk2-engines/gtk2-engines.hash new file mode 100644 index 00000000..71a0ecd2 --- /dev/null +++ b/package/gtk2-engines/gtk2-engines.hash @@ -0,0 +1,4 @@ +# From https://download.gnome.org/sources/gtk-engines/2.20/gtk-engines-2.20.2.sha256sum +sha256 15b680abca6c773ecb85253521fa100dd3b8549befeecc7595b10209d62d66b5 gtk-engines-2.20.2.tar.bz2 +# Locally computed +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING diff --git a/package/gtk2-engines/gtk2-engines.mk b/package/gtk2-engines/gtk2-engines.mk new file mode 100644 index 00000000..ea41bcca --- /dev/null +++ b/package/gtk2-engines/gtk2-engines.mk @@ -0,0 +1,88 @@ +################################################################################ +# +# gtk2-engines +# +################################################################################ + +GTK2_ENGINES_VERSION_MAJOR = 2.20 +GTK2_ENGINES_VERSION = $(GTK2_ENGINES_VERSION_MAJOR).2 +GTK2_ENGINES_SOURCE = gtk-engines-$(GTK2_ENGINES_VERSION).tar.bz2 +GTK2_ENGINES_SITE = https://download.gnome.org/sources/gtk-engines/$(GTK2_ENGINES_VERSION_MAJOR) +GTK2_ENGINES_DEPENDENCIES = libgtk2 host-intltool +GTK2_ENGINES_LICENSE = LGPL-2.1+ +GTK2_ENGINES_LICENSE_FILES = COPYING + +GTK2_ENGINES_CONF_ENV = \ + ac_cv_func_posix_getpwuid_r=yes \ + glib_cv_stack_grows=no \ + glib_cv_uscore=no \ + ac_cv_func_strtod=yes \ + ac_fsusage_space=yes \ + fu_cv_sys_stat_statfs2_bsize=yes \ + ac_cv_func_closedir_void=no \ + ac_cv_func_getloadavg=no \ + ac_cv_lib_util_getloadavg=no \ + ac_cv_lib_getloadavg_getloadavg=no \ + ac_cv_func_getgroups=yes \ + ac_cv_func_getgroups_works=yes \ + ac_cv_func_chown_works=yes \ + ac_cv_have_decl_euidaccess=no \ + ac_cv_func_euidaccess=no \ + ac_cv_have_decl_strnlen=yes \ + ac_cv_func_strnlen_working=yes \ + ac_cv_func_lstat_dereferences_slashed_symlink=yes \ + ac_cv_func_lstat_empty_string_bug=no \ + ac_cv_func_stat_empty_string_bug=no \ + vb_cv_func_rename_trailing_slash_bug=no \ + ac_cv_have_decl_nanosleep=yes \ + jm_cv_func_nanosleep_works=yes \ + gl_cv_func_working_utimes=yes \ + ac_cv_func_utime_null=yes \ + ac_cv_have_decl_strerror_r=yes \ + ac_cv_func_strerror_r_char_p=no \ + jm_cv_func_svid_putenv=yes \ + ac_cv_func_getcwd_null=yes \ + ac_cv_func_getdelim=yes \ + ac_cv_func_mkstemp=yes \ + utils_cv_func_mkstemp_limitations=no \ + utils_cv_func_mkdir_trailing_slash_bug=no \ + jm_cv_func_gettimeofday_clobber=no \ + gl_cv_func_working_readdir=yes \ + jm_ac_cv_func_link_follows_symlink=no \ + utils_cv_localtime_cache=no \ + ac_cv_struct_st_mtim_nsec=no \ + gl_cv_func_tzset_clobber=no \ + gl_cv_func_getcwd_null=yes \ + gl_cv_func_getcwd_path_max=yes \ + ac_cv_func_fnmatch_gnu=yes \ + am_getline_needs_run_time_check=no \ + am_cv_func_working_getline=yes \ + gl_cv_func_mkdir_trailing_slash_bug=no \ + gl_cv_func_mkstemp_limitations=no \ + ac_cv_func_working_mktime=yes \ + jm_cv_func_working_re_compile_pattern=yes \ + ac_use_included_regex=no \ + gl_cv_c_restrict=no \ + ac_cv_path_CUPS_CONFIG=no + +GTK2_ENGINES_CONF_OPTS = \ + --with-x \ + --x-includes=$(STAGING_DIR)/usr/include/X11 \ + --x-libraries=$(STAGING_DIR)/usr/lib \ + --disable-glibtest \ + --enable-explicit-deps=no \ + --enable-clearlooks \ + --disable-crux \ + --disable-hc \ + --disable-industrial \ + --disable-mist \ + --disable-redmond \ + --disable-smooth \ + --disable-glide \ + --disable-thinice \ + --enable-animation \ + --disable-development \ + --disable-paranoia \ + --disable-deprecated + +$(eval $(autotools-package)) diff --git a/package/gtkiostream/0001-configure.ac-add-option-to-disable-tests.patch b/package/gtkiostream/0001-configure.ac-add-option-to-disable-tests.patch new file mode 100644 index 00000000..4c7fb601 --- /dev/null +++ b/package/gtkiostream/0001-configure.ac-add-option-to-disable-tests.patch @@ -0,0 +1,54 @@ +From 864d67d5cb4334f106c1ae055f0260b44f0dbb3b Mon Sep 17 00:00:00 2001 +From: Angelo Compagnucci +Date: Wed, 8 Feb 2023 10:58:20 +0100 +Subject: [PATCH] configure.ac: add option to disable tests + +This commit adds an option that allows to disable building tests, +which are not useful in some situations. + +Upstream: https://github.com/flatmax/gtkiostream/pull/25 +Signed-off-by: Angelo Compagnucci +[Thomas: improved with a configuration option] +Signed-off-by: Thomas Petazzoni +--- + Makefile.am | 7 ++++++- + configure.ac | 5 +++++ + 2 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 3cc0944..cd5d9e4 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -20,7 +20,12 @@ AUTOMAKE_OPTIONS = foreign subdir-objects + SUBDIRS = src api include + + if !HAVE_EMSCRIPTEN +-SUBDIRS += applications test ++SUBDIRS += applications ++ ++if HAVE_TESTS ++SUBDIRS += test ++endif ++ + endif + + ACLOCAL_AMFLAGS = -I m4 +diff --git a/configure.ac b/configure.ac +index 4557858..7950bf2 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -68,6 +68,11 @@ fi + # Checks for documentation + AM_CONDITIONAL([HAVE_DOXYGEN],[test -n "$DOXYGEN"])AM_COND_IF([HAVE_DOXYGEN], [AC_CONFIG_FILES([api/Doxyfile])]) + ++AC_ARG_ENABLE(tests, AS_HELP_STRING([--disable-tests], ++ [Disable tests (default: enabled)]), ++ [TESTS=$enableval], [TESTS=yes]) ++AM_CONDITIONAL([HAVE_TESTS],[test "x$TESTS" = xyes]) ++ + #check whether this is a cygwin system + AM_CONDITIONAL(CYGWIN, test "$build_os" = "cygwin") + +-- +2.45.2 + diff --git a/package/gtkiostream/Config.in b/package/gtkiostream/Config.in new file mode 100644 index 00000000..334b4dc3 --- /dev/null +++ b/package/gtkiostream/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_GTKIOSTREAM_ARCH_SUPPORTS + bool + default y if BR2_ENDIAN = "LITTLE" + +config BR2_PACKAGE_GTKIOSTREAM + bool "gtkiostream" + depends on BR2_PACKAGE_GTKIOSTREAM_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP # eigen + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_ALSA_LIB_MIXER if BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_EIGEN + select BR2_PACKAGE_FFTW + select BR2_PACKAGE_FFTW_DOUBLE + select BR2_PACKAGE_FFTW_SINGLE + help + This package provides many useful software engineering and + signal processing includes and linkable library. + + https://github.com/flatmax/gtkiostream + +comment "gtkiostream needs a toolchain w/ C++, threads" + depends on BR2_PACKAGE_GTKIOSTREAM_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/gtkiostream/gtkiostream.hash b/package/gtkiostream/gtkiostream.hash new file mode 100644 index 00000000..225504be --- /dev/null +++ b/package/gtkiostream/gtkiostream.hash @@ -0,0 +1,3 @@ +# locally computed hash +sha256 44e8d921d462005cd330a1c24e5bd8061175b90ae53f537dbf73f59b74f6e01b gtkiostream-1.8.0.tar.gz +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 gpl.txt diff --git a/package/gtkiostream/gtkiostream.mk b/package/gtkiostream/gtkiostream.mk new file mode 100644 index 00000000..bc3d859d --- /dev/null +++ b/package/gtkiostream/gtkiostream.mk @@ -0,0 +1,62 @@ +################################################################################ +# +# GTKIOSTREAM +# +################################################################################ + +GTKIOSTREAM_VERSION = 1.8.0 +GTKIOSTREAM_SITE = $(call github,flatmax,gtkiostream,v$(GTKIOSTREAM_VERSION)) +GTKIOSTREAM_LICENSE = GPL-2.0+ +GTKIOSTREAM_LICENSE_FILES = gpl.txt + +# configure script not available +GTKIOSTREAM_AUTORECONF = YES + +GTKIOSTREAM_DEPENDENCIES = \ + eigen \ + fftw-double \ + fftw-single \ + host-pkgconf + +GTKIOSTREAM_CONF_OPTS = \ + --disable-octave \ + --disable-tests \ + $(if $(BR2_TOOLCHAIN_HAS_OPENMP),--disable,--enable)-openmp + +# For the optional packages below, there's unfortunately no +# ./configure option to explicitly enable/disable them. They are +# checked by the ./configure script using pkg-config. + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +GTKIOSTREAM_DEPENDENCIES += alsa-lib +endif + +ifeq ($(BR2_PACKAGE_JACK2),y) +GTKIOSTREAM_DEPENDENCIES += jack2 +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +GTKIOSTREAM_DEPENDENCIES += libglib2 +endif + +ifeq ($(BR2_PACKAGE_LIBGTK2),y) +GTKIOSTREAM_DEPENDENCIES += libgtk2 +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3),y) +GTKIOSTREAM_DEPENDENCIES += libgtk3 +endif + +ifeq ($(BR2_PACKAGE_LIBWEBSOCKETS),y) +GTKIOSTREAM_DEPENDENCIES += libwebsockets +endif + +ifeq ($(BR2_PACKAGE_OPENCV3),y) +GTKIOSTREAM_DEPENDENCIES += opencv3 +endif + +ifeq ($(BR2_PACKAGE_SOX),y) +GTKIOSTREAM_DEPENDENCIES += sox +endif + +$(eval $(autotools-package)) diff --git a/package/gtkmm3/Config.in b/package/gtkmm3/Config.in new file mode 100644 index 00000000..6b924c85 --- /dev/null +++ b/package/gtkmm3/Config.in @@ -0,0 +1,30 @@ +comment "gtkmm3 needs libgtk3 and a toolchain w/ C++, wchar, threads, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_USE_WCHAR \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_PACKAGE_LIBGTK3 \ + || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_GTKMM3 + bool "gtkmm3" + # Broken on existing external/internal nios2 toolchains, + # revisit when they are upgraded with at least Binutils >= 2.26 + # and GCC >= 5.3. + # https://sourceware.org/bugzilla/show_bug.cgi?id=19405 + depends on !BR2_nios2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pangomm, libgtk3 -> pango -> harfbuzz + depends on BR2_INSTALL_LIBSTDCPP # glibmm, libpangomm -> glibmm/pango + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS # *mm/libgtk3 -> libglib2 + depends on BR2_USE_MMU # *mm/libgtk3 -> libglib2 + depends on BR2_USE_WCHAR # *mm/libgtk3 -> libglib2 + depends on BR2_PACKAGE_LIBGTK3 + select BR2_PACKAGE_ATKMM2_28 + select BR2_PACKAGE_CAIROMM1_14 + select BR2_PACKAGE_GLIBMM2_66 + select BR2_PACKAGE_LIBSIGC2 + select BR2_PACKAGE_PANGOMM2_46 + help + The gtkmm3 package is a set of C++ bindings for GTK 3. + + http://www.gtkmm.org/ diff --git a/package/gtkmm3/gtkmm3.hash b/package/gtkmm3/gtkmm3.hash new file mode 100644 index 00000000..9bfd68e0 --- /dev/null +++ b/package/gtkmm3/gtkmm3.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/gtkmm/3.24/gtkmm-3.24.8.sha256sum +sha256 d2940c64922e5b958554b23d4c41d1839ea9e43e0d2e5b3819cfb46824a098c4 gtkmm-3.24.8.tar.xz +# Locally computed +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING.tools diff --git a/package/gtkmm3/gtkmm3.mk b/package/gtkmm3/gtkmm3.mk new file mode 100644 index 00000000..f4fc5484 --- /dev/null +++ b/package/gtkmm3/gtkmm3.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# gtkmm3 +# +################################################################################ + +GTKMM3_VERSION_MAJOR = 3.24 +GTKMM3_VERSION = $(GTKMM3_VERSION_MAJOR).8 +GTKMM3_SOURCE = gtkmm-$(GTKMM3_VERSION).tar.xz +GTKMM3_SITE = https://download.gnome.org/sources/gtkmm/$(GTKMM3_VERSION_MAJOR) +GTKMM3_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (tools) +GTKMM3_LICENSE_FILES = COPYING COPYING.tools +GTKMM3_INSTALL_STAGING = YES +GTKMM3_DEPENDENCIES = atkmm2_28 cairomm1_14 glibmm2_66 libgtk3 libsigc2 pangomm2_46 host-pkgconf + +GTKMM3_CONF_OPTS = \ + -Dbuild-demos=false \ + -Dbuild-tests=false + +ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) +GTKMM3_CONF_OPTS += -Dbuild-x11-api=true +else +GTKMM3_CONF_OPTS += -Dbuild-x11-api=false +endif + +$(eval $(meson-package)) diff --git a/package/gtkperf/Config.in b/package/gtkperf/Config.in new file mode 100644 index 00000000..a763e305 --- /dev/null +++ b/package/gtkperf/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_GTKPERF + bool "gtkperf (performance test for GTK2)" + depends on BR2_PACKAGE_LIBGTK2 + help + GtkPerf is an application designed to test GTK+ performance. + The point is to create common testing platform to run + predefined GTK+ widgets + e.g. (opening comboboxes, toggling buttons, scrolling text + yms.) and this way define the speed of device/platform. + + http://gtkperf.sourceforge.net/ diff --git a/package/gtkperf/gtkperf.hash b/package/gtkperf/gtkperf.hash new file mode 100644 index 00000000..72f35a26 --- /dev/null +++ b/package/gtkperf/gtkperf.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 9704344e732038eecbd007dd996a56293a6b027b5b76f3f036273a3fae1ab27b gtkperf_0.40.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/gtkperf/gtkperf.mk b/package/gtkperf/gtkperf.mk new file mode 100644 index 00000000..cc043398 --- /dev/null +++ b/package/gtkperf/gtkperf.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# gtkperf +# +################################################################################ + +GTKPERF_VERSION = 0.40 +GTKPERF_SOURCE = gtkperf_$(GTKPERF_VERSION).tar.gz +GTKPERF_SITE = http://downloads.sourceforge.net/project/gtkperf/gtkperf/$(GTKPERF_VERSION) +GTKPERF_DEPENDENCIES = libgtk2 $(TARGET_NLS_DEPENDENCIES) +GTKPERF_LICENSE = GPL-2.0 +GTKPERF_LICENSE_FILES = COPYING +GTKPERF_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) + +$(eval $(autotools-package)) diff --git a/package/gtksourceview/Config.in b/package/gtksourceview/Config.in new file mode 100644 index 00000000..e87969b1 --- /dev/null +++ b/package/gtksourceview/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_GTKSOURCEVIEW + bool "gtksourceview" + depends on BR2_PACKAGE_LIBGTK3 + select BR2_PACKAGE_LIBXML2 + help + GtkSourceView is a portable C library that extends the + standard GTK+ framework for multiline text editing with + support for configurable syntax highlighting, unlimited + undo/redo, search and replace, a completion framework, + printing and other features typical of a source code editor. + + https://projects.gnome.org/gtksourceview diff --git a/package/gtksourceview/gtksourceview.hash b/package/gtksourceview/gtksourceview.hash new file mode 100644 index 00000000..7a9cf006 --- /dev/null +++ b/package/gtksourceview/gtksourceview.hash @@ -0,0 +1,5 @@ +# Hash from: https://download.gnome.org/sources/gtksourceview/3.24/gtksourceview-3.24.7.sha256sum: +sha256 a5c20d3a6347533689358f3ea52486409f6dd41d5a69c65eab7570cfaffee8e6 gtksourceview-3.24.7.tar.xz + +# Locally computed: +sha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a COPYING diff --git a/package/gtksourceview/gtksourceview.mk b/package/gtksourceview/gtksourceview.mk new file mode 100644 index 00000000..3f5aaea4 --- /dev/null +++ b/package/gtksourceview/gtksourceview.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# gtksourceview +# +################################################################################ + +GTKSOURCEVIEW_VERSION_MAJOR = 3.24 +GTKSOURCEVIEW_VERSION = $(GTKSOURCEVIEW_VERSION_MAJOR).7 +GTKSOURCEVIEW_SOURCE = gtksourceview-$(GTKSOURCEVIEW_VERSION).tar.xz +GTKSOURCEVIEW_SITE = \ + https://download.gnome.org/sources/gtksourceview/$(GTKSOURCEVIEW_VERSION_MAJOR) +GTKSOURCEVIEW_LICENSE = LGPL-2.1+ +GTKSOURCEVIEW_LICENSE_FILES = COPYING +GTKSOURCEVIEW_INSTALL_STAGING = YES +GTKSOURCEVIEW_DEPENDENCIES = host-pkgconf libglib2 libxml2 libgtk3 + +$(eval $(autotools-package)) diff --git a/package/guile/0001-calculate-csqrt_manually.patch b/package/guile/0001-calculate-csqrt_manually.patch new file mode 100644 index 00000000..98bb0b68 --- /dev/null +++ b/package/guile/0001-calculate-csqrt_manually.patch @@ -0,0 +1,16 @@ +Avoid using scm_from_complex_double(csqrt()) when building with uclibc. + +Signed-off-by: Pedro Aguilar + +diff -Nau guile-2.0.11.orig/configure.ac guile-2.0.11/configure.ac +--- guile-2.0.11.orig/configure.ac 2014-03-12 14:36:02.000000000 +0100 ++++ guile-2.0.11/configure.ac 2014-11-03 23:59:51.897267207 +0100 +@@ -862,7 +862,7 @@ + }]])], + [guile_cv_use_csqrt=yes], + [guile_cv_use_csqrt="no, glibc 2.3 bug"], +- [guile_cv_use_csqrt="yes, hopefully (cross-compiling)"])]) ++ [guile_cv_use_csqrt="no (cross-compiling)"])]) + case $guile_cv_use_csqrt in + yes*) + AC_DEFINE([HAVE_USABLE_CSQRT], 1, [Define to 1 if csqrt is bug-free]) diff --git a/package/guile/0002-Makefile.am-fix-build-without-makeinfo.patch b/package/guile/0002-Makefile.am-fix-build-without-makeinfo.patch new file mode 100644 index 00000000..0d16f923 --- /dev/null +++ b/package/guile/0002-Makefile.am-fix-build-without-makeinfo.patch @@ -0,0 +1,51 @@ +From 9304ad88a5f4b083d348563c5de00da53b34cf46 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 6 Mar 2020 23:20:39 +0100 +Subject: [PATCH] Makefile.am: fix build without makeinfo + +Don't build doc subdir if makeinfo is not available otherwise build +fails on: + +make[4]: Entering directory '/nvmedata/autobuild/instance-7/output-1/build/host-guile-2.0.14/doc/ref' + MAKEINFO guile.info +/nvmedata/autobuild/instance-7/output-1/build/host-guile-2.0.14/build-aux/missing: line 81: makeinfo: command not found +WARNING: 'makeinfo' is missing on your system. + You should only need it if you modified a '.texi' file, or + any other file indirectly affecting the aspect of the manual. + You might want to install the Texinfo package: + + The spurious makeinfo call might also be the consequence of + using a buggy 'make' (AIX, DU, IRIX), in which case you might + want to install GNU make: + + +Fixes: + - http://autobuild.buildroot.org/results/9605aac6f760bfff190d0ab95fa50f65486ffe90 + +Signed-off-by: Fabrice Fontaine +[Upstream status: sent to bug-guile@gnu.org] +--- + Makefile.am | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index ebbf6d476..2270afb9f 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -38,8 +38,12 @@ SUBDIRS = \ + test-suite \ + benchmark-suite \ + gc-benchmarks \ +- am \ ++ am ++ ++if HAVE_MAKEINFO ++SUBDIRS += \ + doc ++endif + + DIST_SUBDIRS = $(SUBDIRS) prebuilt + +-- +2.25.0 + diff --git a/package/guile/Config.in b/package/guile/Config.in new file mode 100644 index 00000000..eeeeaf40 --- /dev/null +++ b/package/guile/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_GUILE + bool "guile" + depends on BR2_USE_MMU # bdwgc + depends on !BR2_TOOLCHAIN_USES_MUSL # no strtol_l + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS # bdwgc + depends on BR2_USE_WCHAR # libunistring + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBUNISTRING + select BR2_PACKAGE_LIBFFI + select BR2_PACKAGE_GMP + select BR2_PACKAGE_BDWGC + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Guile is an interpreter and compiler for the Scheme + programming language, a clean and elegant dialect of Lisp. + + http://www.gnu.org/software/guile + +comment "guile needs a uClibc or glibc toolchain w/ threads, wchar, dynamic library" + depends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \ + BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL diff --git a/package/guile/guile.hash b/package/guile/guile.hash new file mode 100644 index 00000000..b671edad --- /dev/null +++ b/package/guile/guile.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +sha256 1a2625ac72b2366e95792f3fe758fd2df775b4044a90a4a9787326e66c0d750d guile-3.0.9.tar.xz +# Locally computed +sha256 b51c6f20e6d029cb5b3e5bf235ac562c9a188c5bdc4ffcdc663897772d6e0260 LICENSE +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING +sha256 9ccf26cfe845e0eb8bb58053e47366e7ab6b697ae010f7650978d4b71b7d1fc1 COPYING.LESSER diff --git a/package/guile/guile.mk b/package/guile/guile.mk new file mode 100644 index 00000000..82daaf5a --- /dev/null +++ b/package/guile/guile.mk @@ -0,0 +1,73 @@ +################################################################################ +# +# guile +# +################################################################################ + +GUILE_VERSION = 3.0.9 +GUILE_SOURCE = guile-$(GUILE_VERSION).tar.xz +GUILE_SITE = $(BR2_GNU_MIRROR)/guile +GUILE_INSTALL_STAGING = YES +# For 0002-calculate-csqrt_manually.patch and +# 0003-Makefile.am-fix-build-without-makeinfo.patch and +# 0004-Update-gnulib-to-8f4538a53d64054ae2fc8b86c0f87c418c6176e6.patch +GUILE_AUTORECONF = YES +GUILE_LICENSE = LGPL-3.0+ +GUILE_LICENSE_FILES = LICENSE COPYING COPYING.LESSER +GUILE_CPE_ID_VENDOR = gnu + +GUILE_DEPENDENCIES = host-guile libunistring libffi gmp bdwgc host-pkgconf +HOST_GUILE_DEPENDENCIES = \ + host-libunistring host-libffi host-gmp host-bdwgc host-flex \ + host-pkgconf host-gettext host-gperf + +ifeq ($(BR2_ENABLE_LOCALE),) +GUILE_DEPENDENCIES += libiconv +endif + +# The HAVE_GC* CFLAGS specify that we will use internal callbacks +# instead of the ones provided by +# bdwgc. Eg. HAVE_GC_SET_FINALIZER_NOTIFIER specifies that we won't +# use bdwgc's GC_finalizer_notifier callback. Trying to use these +# specific bdwgc's callbacks breaks guile's building. +GUILE_CFLAGS = \ + -DHAVE_GC_SET_FINALIZER_NOTIFIER \ + -DHAVE_GC_GET_HEAP_USAGE_SAFE \ + -DHAVE_GC_GET_FREE_SPACE_DIVISOR \ + -DHAVE_GC_SET_FINALIZE_ON_DEMAND + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +GUILE_CONF_ENV += LIBS=-latomic +endif + +ifeq ($(BR2_STATIC_LIBS),y) +GUILE_CFLAGS += -DGC_NO_DLOPEN +endif + +# jit triggers build failures with gcc < 5 +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_5),) +GUILE_CONF_OPTS += --disable-jit +endif +ifeq ($(BR2_HOST_GCC_AT_LEAST_5),) +HOST_GUILE_CONF_OPTS += --disable-jit +endif + +# It can use readline, but on the condition that it was build against +# ncurses. If both aren't present disable readline support since the +# host readline/ncurses support can poison the build. +ifeq ($(BR2_PACKAGE_NCURSES)$(BR2_PACKAGE_READLINE),yy) +GUILE_CONF_OPTS += --with-libreadline-prefix=$(STAGING_DIR)/usr +GUILE_DEPENDENCIES += readline +else +GUILE_CONF_OPTS += --without-libreadline-prefix +endif + +GUILE_CONF_ENV += GUILE_FOR_BUILD=$(HOST_DIR)/bin/guile \ + CFLAGS="$(TARGET_CFLAGS) $(GUILE_CFLAGS)" + +GUILE_CONF_OPTS += \ + --with-libgmp-prefix=$(STAGING_DIR)/usr/lib \ + --with-libunistring-prefix=$(STAGING_DIR)/usr/lib + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/gumbo-parser/0001-configure.ac-fix-build-without-C.patch b/package/gumbo-parser/0001-configure.ac-fix-build-without-C.patch new file mode 100644 index 00000000..cf90e6f3 --- /dev/null +++ b/package/gumbo-parser/0001-configure.ac-fix-build-without-C.patch @@ -0,0 +1,63 @@ +From 968975107af5f4382e3e9410a635e32c14cea75f Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 21 Jul 2021 23:47:26 +0200 +Subject: [PATCH] configure.ac: fix build without C++ + +Fix the following build failure raised on toolchains without C++: + +checking whether the C++ compiler works... no +configure: error: in `/home/buildroot/autobuild/run/instance-0/output-1/build/gumbo-parser-0.10.1': +configure: error: C++ compiler cannot create executables + +Fixes: + - http://autobuild.buildroot.org/results/a32b5d3b959433fd5c3543661c37f80d27fbd010 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/google/gumbo-parser/pull/426] +--- + Makefile.am | 2 ++ + configure.ac | 6 +++++- + 2 files changed, 7 insertions(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index cb62459..5bebd92 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -105,7 +105,9 @@ gumbo_test_DEPENDENCIES += check-local + gumbo_test_LDADD += gtest/lib/libgtest.la gtest/lib/libgtest_main.la + endif + ++if HAVE_EXAMPLES + noinst_PROGRAMS = clean_text find_links get_title positions_of_class benchmark serialize prettyprint ++endif + LDADD = libgumbo.la + AM_CPPFLAGS = -I"$(srcdir)/src" + +diff --git a/configure.ac b/configure.ac +index 32dc9b9..172a36b 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -9,8 +9,8 @@ AC_CONFIG_SRCDIR([src/parser.c]) + AC_CONFIG_FILES([Makefile gumbo.pc]) + + # Checks for programs. +-AC_PROG_CXX + AC_PROG_CC_C99 ++AC_PROG_CXX + + # Checks for libraries. + +@@ -27,6 +27,10 @@ AC_CHECK_LIB([gtest_main], + AM_CONDITIONAL(HAVE_SHARED_LIBGTEST, [true]), + AM_CONDITIONAL(HAVE_SHARED_LIBGTEST, [false])) + ++AC_ARG_ENABLE([examples], ++ AS_HELP_STRING([--disable-examples], [Disable examples])) ++AM_CONDITIONAL([HAVE_EXAMPLES], [test "x$enable_examples" != "xno"]) ++ + # Init Automake & libtool + AM_INIT_AUTOMAKE([foreign subdir-objects]) + m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) +-- +2.30.2 + diff --git a/package/gumbo-parser/Config.in b/package/gumbo-parser/Config.in new file mode 100644 index 00000000..04bb2294 --- /dev/null +++ b/package/gumbo-parser/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_GUMBO_PARSER + bool "gumbo-parser" + help + Gumbo is an implementation of the HTML5 parsing algorithm + implemented as a pure C99 library with no outside + dependencies. It's designed to serve as a building block for + other tools and libraries such as linters, validators, + templating languages, and refactoring and analysis tools. + + https://github.com/google/gumbo-parser diff --git a/package/gumbo-parser/gumbo-parser.hash b/package/gumbo-parser/gumbo-parser.hash new file mode 100644 index 00000000..c4af3307 --- /dev/null +++ b/package/gumbo-parser/gumbo-parser.hash @@ -0,0 +1,5 @@ +# Locally computed: +sha256 28463053d44a5dfbc4b77bcf49c8cee119338ffa636cc17fc3378421d714efad gumbo-parser-0.10.1.tar.gz + +# Hash for license files: +sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 COPYING diff --git a/package/gumbo-parser/gumbo-parser.mk b/package/gumbo-parser/gumbo-parser.mk new file mode 100644 index 00000000..8c9330ae --- /dev/null +++ b/package/gumbo-parser/gumbo-parser.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# gumbo-parser +# +################################################################################ + +GUMBO_PARSER_VERSION = 0.10.1 +GUMBO_PARSER_SITE = $(call github,google,gumbo-parser,v$(GUMBO_PARSER_VERSION)) +GUMBO_PARSER_LICENSE = Apache-2.0 +GUMBO_PARSER_LICENSE_FILES = COPYING +GUMBO_PARSER_INSTALL_STAGING = YES +GUMBO_PARSER_AUTORECONF = YES +GUMBO_PARSER_CONF_OPTS = --disable-examples + +$(eval $(autotools-package)) diff --git a/package/gupnp-av/0001-libxml2.11-support.patch b/package/gupnp-av/0001-libxml2.11-support.patch new file mode 100644 index 00000000..739a8d77 --- /dev/null +++ b/package/gupnp-av/0001-libxml2.11-support.patch @@ -0,0 +1,41 @@ +From 4dbc4c1da2a033c497d84a1291c46f416a9cac51 Mon Sep 17 00:00:00 2001 +From: David Anes +Date: Thu, 4 May 2023 11:54:02 +0200 +Subject: use xmlReadMemory instead of xmlRecoverMemory, as it's been + deprecated in libxml2 2.11.0 + +Since version 2.11.0, some private symbols have been removed. + +Downloaded from +https://code.opensuse.org/package/gupnp-av/blob/master/f/gupnp-av-libxml2.11-support.patch + +Upstream: https://gitlab.gnome.org/GNOME/gupnp-av/-/issues/10 + +Signed-off-by: Bernd Kuhls +--- +Index: gupnp-av-0.14.1/libgupnp-av/gupnp-didl-lite-parser.c +=================================================================== +--- gupnp-av-0.14.1.orig/libgupnp-av/gupnp-didl-lite-parser.c ++++ gupnp-av-0.14.1/libgupnp-av/gupnp-didl-lite-parser.c +@@ -230,7 +230,7 @@ gupnp_didl_lite_parser_parse_didl_recurs + GUPnPAVXMLDoc *xml_doc = NULL; + gboolean result; + +- doc = xmlRecoverMemory (didl, strlen (didl)); ++ doc = xmlReadMemory (didl, strlen (didl), NULL, NULL, XML_PARSE_RECOVER); + if (doc == NULL) { + g_set_error (error, + G_MARKUP_ERROR, +Index: gupnp-av-0.14.1/libgupnp-av/gupnp-feature-list-parser.c +=================================================================== +--- gupnp-av-0.14.1.orig/libgupnp-av/gupnp-feature-list-parser.c ++++ gupnp-av-0.14.1/libgupnp-av/gupnp-feature-list-parser.c +@@ -114,7 +114,7 @@ gupnp_feature_list_parser_parse_text + xmlNode *element; + GList *feature_list = NULL; + +- doc = xmlRecoverMemory (text, strlen (text)); ++ doc = xmlReadMemory (text, strlen (text), NULL, NULL, XML_PARSE_RECOVER); + if (doc == NULL) { + g_set_error (error, + G_MARKUP_ERROR, diff --git a/package/gupnp-av/0002-xml-Fix-compatibility-with-libxml2-2-12-x.patch b/package/gupnp-av/0002-xml-Fix-compatibility-with-libxml2-2-12-x.patch new file mode 100644 index 00000000..358098fb --- /dev/null +++ b/package/gupnp-av/0002-xml-Fix-compatibility-with-libxml2-2-12-x.patch @@ -0,0 +1,26 @@ +From 1e10a41fcef6ae0d3e89958db89bc22398f3b4f1 Mon Sep 17 00:00:00 2001 +From: Jens Georg +Date: Sat, 25 Nov 2023 17:58:49 +0100 +Subject: [PATCH] xml: Fix compatibility with libxml2 2.12.x + +Upstream: https://gitlab.gnome.org/GNOME/gupnp-av/-/commit/1e10a41fcef6ae0d3e89958db89bc22398f3b4f1 +Signed-off-by: Fabrice Fontaine +--- + libgupnp-av/xml-util.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libgupnp-av/xml-util.h b/libgupnp-av/xml-util.h +index e0e49f7..0bbe0f8 100644 +--- a/libgupnp-av/xml-util.h ++++ b/libgupnp-av/xml-util.h +@@ -16,6 +16,7 @@ + + #include + #include ++#include + #include + #include + +-- +GitLab + diff --git a/package/gupnp-av/Config.in b/package/gupnp-av/Config.in new file mode 100644 index 00000000..7b618f5b --- /dev/null +++ b/package/gupnp-av/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_GUPNP_AV + bool "gupnp-av" + depends on BR2_USE_WCHAR # glib2, gupnp + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2, gupnp + depends on BR2_USE_MMU # glib2, gupnp + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_GUPNP + select BR2_PACKAGE_LIBXML2 + help + GUPnP-AV is a collection of helpers for building AV + (audio/video) applications using GUPnP. + + http://www.gupnp.org/ + +comment "gupnp-av needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/gupnp-av/gupnp-av.hash b/package/gupnp-av/gupnp-av.hash new file mode 100644 index 00000000..c8ed0db2 --- /dev/null +++ b/package/gupnp-av/gupnp-av.hash @@ -0,0 +1,5 @@ +# Hash from: https://download.gnome.org/sources/gupnp-av/0.14/gupnp-av-0.14.1.sha256sum: +sha256 b79ce0cc4b0c66d9c54bc22183a10e5709a0011d2af272025948efcab33a3e4f gupnp-av-0.14.1.tar.xz + +# Hash for license file: +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/gupnp-av/gupnp-av.mk b/package/gupnp-av/gupnp-av.mk new file mode 100644 index 00000000..3821c4e1 --- /dev/null +++ b/package/gupnp-av/gupnp-av.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# gupnp-av +# +################################################################################ + +GUPNP_AV_VERSION_MAJOR = 0.14 +GUPNP_AV_VERSION = $(GUPNP_AV_VERSION_MAJOR).1 +GUPNP_AV_SOURCE = gupnp-av-$(GUPNP_AV_VERSION).tar.xz +GUPNP_AV_SITE = https://download.gnome.org/sources/gupnp-av/$(GUPNP_AV_VERSION_MAJOR) +GUPNP_AV_LICENSE = LGPL-2.1+ +GUPNP_AV_LICENSE_FILES = COPYING +GUPNP_AV_INSTALL_STAGING = YES +GUPNP_AV_DEPENDENCIES = host-pkgconf libglib2 libxml2 gupnp + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +GUPNP_AV_CONF_OPTS += -Dintrospection=true -Dvapi=true +GUPNP_AV_DEPENDENCIES += host-vala gobject-introspection +else +GUPNP_AV_CONF_OPTS += -Dintrospection=false -Dvapi=false +endif + +$(eval $(meson-package)) diff --git a/package/gupnp-dlna/Config.in b/package/gupnp-dlna/Config.in new file mode 100644 index 00000000..a0ecdb3b --- /dev/null +++ b/package/gupnp-dlna/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_GUPNP_DLNA + bool "gupnp-dlna" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBXML2 + help + GUPnP DLNA is a small utility library that aims to ease the + DLNA-related tasks such as media profile guessing, transcoding + to a given profile, etc. + + http://www.gupnp.org/ + +comment "gupnp-dlna needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/gupnp-dlna/gupnp-dlna.hash b/package/gupnp-dlna/gupnp-dlna.hash new file mode 100644 index 00000000..c7cab260 --- /dev/null +++ b/package/gupnp-dlna/gupnp-dlna.hash @@ -0,0 +1,5 @@ +# Hash from: https://download.gnome.org/sources/gupnp-dlna/0.12/gupnp-dlna-0.12.0.sha256sum: +sha256 3d53b96f85bc5628d33e367ec9bf2adb38ef2b34d7ad0434a6ba0cf4ad9048e6 gupnp-dlna-0.12.0.tar.xz + +# Locally computed: +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/gupnp-dlna/gupnp-dlna.mk b/package/gupnp-dlna/gupnp-dlna.mk new file mode 100644 index 00000000..0064700f --- /dev/null +++ b/package/gupnp-dlna/gupnp-dlna.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# gupnp-dlna +# +################################################################################ + +GUPNP_DLNA_VERSION_MAJOR = 0.12 +GUPNP_DLNA_VERSION = $(GUPNP_DLNA_VERSION_MAJOR).0 +GUPNP_DLNA_SOURCE = gupnp-dlna-$(GUPNP_DLNA_VERSION).tar.xz +GUPNP_DLNA_SITE = \ + https://download.gnome.org/sources/gupnp-dlna/$(GUPNP_DLNA_VERSION_MAJOR) +# COPYING contains LGPL-2.1 but all source files contain LPGL-2.0+ +GUPNP_DLNA_LICENSE = LGPL-2.0+ +GUPNP_DLNA_LICENSE_FILES = COPYING +GUPNP_DLNA_INSTALL_STAGING = YES +GUPNP_DLNA_DEPENDENCIES = host-pkgconf libglib2 libxml2 + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +GUPNP_DLNA_CONF_OPTS += -Dintrospection=true -Dvapi=true +GUPNP_DLNA_DEPENDENCIES += host-vala gobject-introspection +else +GUPNP_DLNA_CONF_OPTS += -Dintrospection=false -Dvapi=false +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE):$(BR2_STATIC_LIBS),y:) +GUPNP_DLNA_CONF_OPTS += -Dgstreamer_backend=enabled +GUPNP_DLNA_DEPENDENCIES += gstreamer1 gst1-plugins-base +else +GUPNP_DLNA_CONF_OPTS += -Dgstreamer_backend=disabled +endif + +$(eval $(meson-package)) diff --git a/package/gupnp-tools/0001-common-Drop-deprecated-xmlRecoverMemory.patch b/package/gupnp-tools/0001-common-Drop-deprecated-xmlRecoverMemory.patch new file mode 100644 index 00000000..c81d1b01 --- /dev/null +++ b/package/gupnp-tools/0001-common-Drop-deprecated-xmlRecoverMemory.patch @@ -0,0 +1,33 @@ +From f675ac7e0afe67a86f3f1191d3274d6ffbd4e5d7 Mon Sep 17 00:00:00 2001 +From: Jens Georg +Date: Thu, 3 Aug 2023 23:44:15 +0200 +Subject: [PATCH] common: Drop deprecated xmlRecoverMemory + +Fixes #27 + +Upstream: https://gitlab.gnome.org/GNOME/gupnp-tools/-/commit/f675ac7e0afe67a86f3f1191d3274d6ffbd4e5d7 +Signed-off-by: Fabrice Fontaine +--- + src/common/pretty-print.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/src/common/pretty-print.c b/src/common/pretty-print.c +index c692664..c8ebc9a 100644 +--- a/src/common/pretty-print.c ++++ b/src/common/pretty-print.c +@@ -34,7 +34,11 @@ pretty_print_xml (const char *xml) + char *text; + int length; + +- doc = xmlRecoverMemory (xml, strlen (xml)); ++ doc = xmlReadMemory (xml, ++ strlen (xml), ++ NULL, ++ NULL, ++ XML_PARSE_NONET | XML_PARSE_RECOVER); + + if (!doc) + return NULL; +-- +GitLab + diff --git a/package/gupnp-tools/0002-common-Fix-compatibility-with-libxml2-2-12.patch b/package/gupnp-tools/0002-common-Fix-compatibility-with-libxml2-2-12.patch new file mode 100644 index 00000000..c76d440b --- /dev/null +++ b/package/gupnp-tools/0002-common-Fix-compatibility-with-libxml2-2-12.patch @@ -0,0 +1,28 @@ +From 4e06104df81fba2cda06d4747b33e75f4cade458 Mon Sep 17 00:00:00 2001 +From: Jens Georg +Date: Fri, 24 Nov 2023 18:12:50 +0100 +Subject: [PATCH] common: Fix compatibility with libxml2 2.12 + +Fixes #28 + +Upstream: https://gitlab.gnome.org/GNOME/gupnp-tools/-/commit/4e06104df81fba2cda06d4747b33e75f4cade458 +Signed-off-by: Fabrice Fontaine +--- + src/common/pretty-print.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/common/pretty-print.c b/src/common/pretty-print.c +index c8ebc9a..1519cb0 100644 +--- a/src/common/pretty-print.c ++++ b/src/common/pretty-print.c +@@ -22,6 +22,7 @@ + + #include "pretty-print.h" + ++#include + #include + + #include +-- +GitLab + diff --git a/package/gupnp-tools/Config.in b/package/gupnp-tools/Config.in new file mode 100644 index 00000000..5bce5cab --- /dev/null +++ b/package/gupnp-tools/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_GUPNP_TOOLS + bool "gupnp-tools" + depends on BR2_PACKAGE_LIBGTK3 + # gssdp, gupnp, libsoup3 all select on libglib2, so they have + # the same dependencies as libgtk3, which we depend on. So for + # the same of simplicity, we don't replicate all those + # (complex) dependencies. + select BR2_PACKAGE_GSSDP + select BR2_PACKAGE_GUPNP + select BR2_PACKAGE_LIBSOUP3 + select BR2_PACKAGE_LIBXML2 + help + GUPnP Tools are free replacements of Intel UPnP tools that + use GUPnP. They provides client and server side tools which + enable one to easily test and debug one's UPnP devices and + control points. + + http://www.gupnp.org/ + +comment "gupnp-tools needs libgtk3" + depends on !BR2_PACKAGE_LIBGTK3 diff --git a/package/gupnp-tools/gupnp-tools.hash b/package/gupnp-tools/gupnp-tools.hash new file mode 100644 index 00000000..28e26613 --- /dev/null +++ b/package/gupnp-tools/gupnp-tools.hash @@ -0,0 +1,5 @@ +# Hash from: https://download.gnome.org/sources/gupnp-tools/0.12/gupnp-tools-0.12.1.sha256sum: +sha256 53cf93123f397e8f8f0b8e9e4364c86a7502a5334f4c0be2e054a824478bd5ba gupnp-tools-0.12.1.tar.xz + +# Locally computed: +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/gupnp-tools/gupnp-tools.mk b/package/gupnp-tools/gupnp-tools.mk new file mode 100644 index 00000000..99fdf54f --- /dev/null +++ b/package/gupnp-tools/gupnp-tools.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# gupnp-tools +# +################################################################################ + +GUPNP_TOOLS_VERSION_MAJOR = 0.12 +GUPNP_TOOLS_VERSION = $(GUPNP_TOOLS_VERSION_MAJOR).1 +GUPNP_TOOLS_SOURCE = gupnp-tools-$(GUPNP_TOOLS_VERSION).tar.xz +GUPNP_TOOLS_SITE = \ + https://download.gnome.org/sources/gupnp-tools/$(GUPNP_TOOLS_VERSION_MAJOR) +GUPNP_TOOLS_LICENSE = GPL-2.0+ +GUPNP_TOOLS_LICENSE_FILES = COPYING +GUPNP_TOOLS_INSTALL_STAGING = YES +GUPNP_TOOLS_DEPENDENCIES = \ + host-pkgconf \ + libglib2 \ + libxml2 \ + gssdp \ + gupnp \ + libsoup3 \ + libgtk3 \ + $(TARGET_NLS_DEPENDENCIES) + +GUPNP_TOOLS_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) + +ifeq ($(BR2_PACKAGE_GUPNP_AV),y) +GUPNP_TOOLS_CONF_OPTS += -Dav-tools=true +GUPNP_TOOLS_DEPENDENCIES += gupnp-av +else +GUPNP_TOOLS_CONF_OPTS += -Dav-tools=false +endif + +ifeq ($(BR2_PACKAGE_GTKSOURCEVIEW),y) +GUPNP_TOOLS_DEPENDENCIES += gtksourceview +endif + +$(eval $(meson-package)) diff --git a/package/gupnp/0001-all-Fix-compatibility-with-libxml2-2-12-x.patch b/package/gupnp/0001-all-Fix-compatibility-with-libxml2-2-12-x.patch new file mode 100644 index 00000000..14f696ca --- /dev/null +++ b/package/gupnp/0001-all-Fix-compatibility-with-libxml2-2-12-x.patch @@ -0,0 +1,84 @@ +From 00514fb62ebd341803fa44e26a6482a8c25dbd34 Mon Sep 17 00:00:00 2001 +From: Jens Georg +Date: Sat, 25 Nov 2023 17:56:02 +0100 +Subject: [PATCH] all: Fix compatibility with libxml2 2.12.x + +Upstream: https://gitlab.gnome.org/GNOME/gupnp/-/commit/00514fb62ebd341803fa44e26a6482a8c25dbd34 +Signed-off-by: Fabrice Fontaine +--- + libgupnp/gupnp-control-point.c | 2 ++ + libgupnp/gupnp-service-proxy-action.c | 2 ++ + libgupnp/gupnp-service-proxy.c | 2 ++ + libgupnp/gupnp-xml-doc.c | 3 +++ + libgupnp/xml-util.h | 2 ++ + 5 files changed, 11 insertions(+) + +diff --git a/libgupnp/gupnp-control-point.c b/libgupnp/gupnp-control-point.c +index d4b44721..4374f726 100644 +--- a/libgupnp/gupnp-control-point.c ++++ b/libgupnp/gupnp-control-point.c +@@ -27,6 +27,8 @@ + #include + #include + ++#include ++ + #include "gupnp-control-point.h" + #include "gupnp-context-private.h" + #include "gupnp-resource-factory-private.h" +diff --git a/libgupnp/gupnp-service-proxy-action.c b/libgupnp/gupnp-service-proxy-action.c +index b241d86c..6ea241ad 100644 +--- a/libgupnp/gupnp-service-proxy-action.c ++++ b/libgupnp/gupnp-service-proxy-action.c +@@ -9,6 +9,8 @@ + + #include + ++#include ++ + #include "gupnp-error.h" + #include "gupnp-service-proxy.h" + #include "gvalue-util.h" +diff --git a/libgupnp/gupnp-service-proxy.c b/libgupnp/gupnp-service-proxy.c +index adba5ab0..3f1a4454 100644 +--- a/libgupnp/gupnp-service-proxy.c ++++ b/libgupnp/gupnp-service-proxy.c +@@ -16,6 +16,8 @@ + #include + #include + ++#include ++ + #include "gena-protocol.h" + #include "gupnp-context-private.h" + #include "gupnp-error-private.h" +diff --git a/libgupnp/gupnp-xml-doc.c b/libgupnp/gupnp-xml-doc.c +index 627f1a28..66f9b3dd 100644 +--- a/libgupnp/gupnp-xml-doc.c ++++ b/libgupnp/gupnp-xml-doc.c +@@ -15,6 +15,9 @@ + #include + #include + #include ++ ++#include ++ + #include "gupnp-xml-doc.h" + #include "gupnp-error.h" + +diff --git a/libgupnp/xml-util.h b/libgupnp/xml-util.h +index a02eb3d4..d0dcaeba 100644 +--- a/libgupnp/xml-util.h ++++ b/libgupnp/xml-util.h +@@ -10,6 +10,8 @@ + #define GUPNP_XML_UTIL_H + + #include ++#include ++ + #include + #include + +-- +GitLab + diff --git a/package/gupnp/Config.in b/package/gupnp/Config.in new file mode 100644 index 00000000..3074a427 --- /dev/null +++ b/package/gupnp/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_GUPNP + bool "gupnp" + depends on BR2_USE_WCHAR # glib2, gssdp + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2, gssdp + depends on BR2_USE_MMU # glib2, gssdp + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_GSSDP + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + GUPnP implements the UPnP specification: resource announcement + and discovery, description, control, event notification, and + presentation. + + http://www.gupnp.org/ + +comment "gupnp needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/gupnp/gupnp.hash b/package/gupnp/gupnp.hash new file mode 100644 index 00000000..b8a3fa08 --- /dev/null +++ b/package/gupnp/gupnp.hash @@ -0,0 +1,5 @@ +# Hash from: https://download.gnome.org/sources/gupnp/1.6/gupnp-1.6.6.sha256sum: +sha256 c9dc50e8c78b3792d1b0e6c5c5f52c93e9345d3dae2891e311a993a574f5a04f gupnp-1.6.6.tar.xz + +# Hash for license file: +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/gupnp/gupnp.mk b/package/gupnp/gupnp.mk new file mode 100644 index 00000000..cfcc1141 --- /dev/null +++ b/package/gupnp/gupnp.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# gupnp +# +################################################################################ + +GUPNP_VERSION_MAJOR = 1.6 +GUPNP_VERSION = $(GUPNP_VERSION_MAJOR).6 +GUPNP_SOURCE = gupnp-$(GUPNP_VERSION).tar.xz +GUPNP_SITE = https://download.gnome.org/sources/gupnp/$(GUPNP_VERSION_MAJOR) +GUPNP_LICENSE = LGPL-2.1+ +GUPNP_LICENSE_FILES = COPYING +GUPNP_CPE_ID_VENDOR = gnome +GUPNP_INSTALL_STAGING = YES +GUPNP_DEPENDENCIES = host-pkgconf libglib2 libxml2 gssdp util-linux +GUPNP_CONF_OPTS = -Dexamples=false + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +GUPNP_CONF_OPTS += -Dintrospection=true -Dvapi=true +GUPNP_DEPENDENCIES += host-vala gobject-introspection +else +GUPNP_CONF_OPTS += -Dintrospection=false -Dvapi=false +endif + +$(eval $(meson-package)) diff --git a/package/gutenprint/0001-use-pregen-xmli18n-header.patch b/package/gutenprint/0001-use-pregen-xmli18n-header.patch new file mode 100644 index 00000000..533fe33d --- /dev/null +++ b/package/gutenprint/0001-use-pregen-xmli18n-header.patch @@ -0,0 +1,48 @@ +src/xml: use preg-gen xmli18n_tmp.h if specified + +Ideally, the programs needed at build-time should be built with +CC_FOR_BUILD, and not with CC_FOR_HOST. + +Unfortunately, this program wants to link against the gutenprint libs, +so we would also need to build them with CC_FOR_HOST, that is build them +twice, once for build, once for host. + +Instead, in the Buildroot context, we first build gutenprint for the build +system, use that to generate the incriminated header, and then re-use that +header to build the gutenprint for the host. + +It is not possible to have such constructs in Makefile.am: + ifeq ($(FOO),) + bar: bla + cat $< >$@ + else + bar: + echo $(FOO) >$@ + endif + +as autoreconf will yell loudly that there is an 'endif' without an 'if'. +Sigh... :-( + +Signed-off-by: "Yann E. MORIN" + +diff -durN gutenprint-5.2.9.orig/src/xml/Makefile.am gutenprint-5.2.9/src/xml/Makefile.am +--- gutenprint-5.2.9.orig/src/xml/Makefile.am 2011-03-30 02:43:24.000000000 +0200 ++++ gutenprint-5.2.9/src/xml/Makefile.am 2013-03-24 17:08:08.435918773 +0100 +@@ -52,10 +52,13 @@ + + + xmli18n-tmp.h: xml-stamp extract-strings +- -rm -f $@ $@.tmp +- ./extract-strings `cat xml-stamp | sed -e 's;^;$(srcdir)/;'` > $@.tmp +- mv $@.tmp $@ +- ++ if [ -z "$(BR2_USE_PREGEN_XMLI18N_TMP_H)" ]; then \ ++ rm -f $@ $@.tmp; \ ++ ./extract-strings `cat xml-stamp | sed -e 's;^;$(srcdir)/;'` > $@.tmp; \ ++ mv $@.tmp $@; \ ++ else \ ++ cp $(BR2_USE_PREGEN_XMLI18N_TMP_H) $@; \ ++ fi + + dist-hook: xmli18n-tmp.h xml-stamp + # xmli18n-tmp.h is needed by po/POTFILES.in at dist time diff --git a/package/gutenprint/0002-cups-support-replaces-static-with-static-libtool-lib.patch b/package/gutenprint/0002-cups-support-replaces-static-with-static-libtool-lib.patch new file mode 100644 index 00000000..61ef0269 --- /dev/null +++ b/package/gutenprint/0002-cups-support-replaces-static-with-static-libtool-lib.patch @@ -0,0 +1,39 @@ +From 08a5d355160eb2ac8346ae1b94591418343217f9 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 17 Aug 2014 23:43:20 +0200 +Subject: [PATCH] cups support: replaces -static with -static-libtool-libs + +gutenprint rely on the original behaviour of -static, but since commit +in buildroot "support/libtool: make -static behave like -all-static" [1], +the build of genppd is broken. + +genppd need to be build statically otherwise the following warning appears: +***WARNING: Use of --disable-static-genppd or --disable-static + when building CUPS is very dangerous. The build may + fail when building the PPD files, or may *SILENTLY* + build incorrect PPD files or cause other problems. + Please review the README and release notes carefully! + +[1] http://git.buildroot.net/buildroot/commit/?id=97703978ac870ce2b14ad144f8e082de82aa2c64 + +Signed-off-by: Romain Naour +--- + src/cups/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/cups/Makefile.am b/src/cups/Makefile.am +index 1e27ae0..d711b70 100644 +--- a/src/cups/Makefile.am ++++ b/src/cups/Makefile.am +@@ -84,7 +84,7 @@ noinst_SCRIPTS=test-rastertogutenprint + endif + + if BUILD_GENPPD_STATIC +-STATIC_LDOPTS=-static -export-dynamic ++STATIC_LDOPTS=-static-libtool-libs -export-dynamic + endif + + cups_calibrate_SOURCES = cups-calibrate.c +-- +1.9.3 + diff --git a/package/gutenprint/Config.in b/package/gutenprint/Config.in new file mode 100644 index 00000000..f93717c7 --- /dev/null +++ b/package/gutenprint/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_GUTENPRINT + bool "gutenprint" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_CUPS + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Gutenprint, formerly named Gimp-Print, is a suite of printer + drivers that may be used with most common UNIX print spooling + systems, including CUPS, lpr, LPRng, or others + + http://gimp-print.sourceforge.net/ + +comment "gutenprint needs a toolchain w/ C++" + depends on BR2_PACKAGE_CUPS + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/gutenprint/gutenprint.hash b/package/gutenprint/gutenprint.hash new file mode 100644 index 00000000..81188849 --- /dev/null +++ b/package/gutenprint/gutenprint.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 45bf0766f196a764c113bfad7ab1ea748f1d5ff9ebb0d3a2206705fe52e82389 gutenprint-5.2.14.tar.bz2 +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/package/gutenprint/gutenprint.mk b/package/gutenprint/gutenprint.mk new file mode 100644 index 00000000..bcc9c54b --- /dev/null +++ b/package/gutenprint/gutenprint.mk @@ -0,0 +1,89 @@ +################################################################################ +# +# gutenprint +# +################################################################################ + +GUTENPRINT_VERSION_MAJOR = 5.2 +GUTENPRINT_VERSION = $(GUTENPRINT_VERSION_MAJOR).14 +GUTENPRINT_SITE = http://downloads.sourceforge.net/project/gimp-print/gutenprint-$(GUTENPRINT_VERSION_MAJOR)/$(GUTENPRINT_VERSION) +GUTENPRINT_SOURCE = gutenprint-$(GUTENPRINT_VERSION).tar.bz2 +GUTENPRINT_LICENSE = GPL-2.0+ +GUTENPRINT_LICENSE_FILES = COPYING +GUTENPRINT_CPE_ID_VALID = YES + +# Needed, as we touch Makefile.am +GUTENPRINT_AUTORECONF = YES + +# Needed by autoreconf +define GUTENPRINT_CREATE_M4_DIR + mkdir -p $(@D)/m4local +endef +GUTENPRINT_POST_PATCH_HOOKS += GUTENPRINT_CREATE_M4_DIR +HOST_GUTENPRINT_POST_PATCH_HOOKS += GUTENPRINT_CREATE_M4_DIR + +GUTENPRINT_DEPENDENCIES = \ + cups host-pkgconf \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) \ + $(if $(BR2_PACKAGE_LIBUSB),libusb) + +# host-gutenprint is needed to generate XML as part of compilation +# the program that generates the xml also links against libgutenprint +# so we need to build both a host package and a target package +GUTENPRINT_DEPENDENCIES += host-gutenprint + +GUTENPRINT_CONF_ENV = \ + ac_cv_path_CUPS_CONFIG=$(STAGING_DIR)/usr/bin/cups-config \ + ac_cv_path_IJS_CONFIG="" + +GUTENPRINT_CONF_OPTS = \ + --disable-libgutenprintui2 \ + --disable-samples \ + --without-doc \ + --without-gimp2 \ + --disable-escputil \ + --disable-test \ + --disable-testpattern \ + --with-cups="/usr" \ + --with-sysroot="$(STAGING_DIR)" \ + --disable-cups-ppds + +# USE_PREGEN_XMLI18N_TMP_H is added by our patch +GUTENPRINT_MAKE_ENV = BR2_USE_PREGEN_XMLI18N_TMP_H=$(HOST_DIR)/include/xmli18n-tmp.h + +HOST_GUTENPRINT_DEPENDENCIES = host-pkgconf +# The host-gutenprint shall create the required header +HOST_GUTENPRINT_MAKE_ENV = + +# Even with --without-cups, gutenprint will still add the output of +# cups-config --cflags / --ldflags to it's compiler/linker flags if +# available on host. +# Notice: Because of the configure logic, it needs to be set to the +# empty string to to disable this, not just to /bin/false like elsewhere. +HOST_GUTENPRINT_CONF_ENV = ac_cv_path_CUPS_CONFIG='' + +HOST_GUTENPRINT_CONF_OPTS = \ + --disable-libgutenprintui2 \ + --disable-samples \ + --without-gimp2 \ + --without-doc \ + --without-foomatic \ + --without-foomatic3 \ + --disable-escputil \ + --disable-test \ + --disable-testpattern \ + --without-cups + +define HOST_GUTENPRINT_POST_BUILD_INSTAL_TMP_HEADER + cp $(@D)/src/xml/xmli18n-tmp.h $(HOST_DIR)/include +endef +HOST_GUTENPRINT_POST_BUILD_HOOKS += HOST_GUTENPRINT_POST_BUILD_INSTAL_TMP_HEADER + +define GUTENPRINT_POST_INSTALL_TARGET_FIXUP + mkdir -p $(TARGET_DIR)/usr/share/gutenprint/5.2 + cp -rf $(HOST_DIR)/share/gutenprint/5.2/xml $(TARGET_DIR)/usr/share/gutenprint/5.2 +endef +GUTENPRINT_POST_INSTALL_TARGET_HOOKS += GUTENPRINT_POST_INSTALL_TARGET_FIXUP + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/gvfs/0001-build-Remove-incorrect-i18n.merge_file-argument.patch b/package/gvfs/0001-build-Remove-incorrect-i18n.merge_file-argument.patch new file mode 100644 index 00000000..a85a1a37 --- /dev/null +++ b/package/gvfs/0001-build-Remove-incorrect-i18n.merge_file-argument.patch @@ -0,0 +1,33 @@ +From 17a067b9b823a0d54e061eae45ff8e2c7e4a88d0 Mon Sep 17 00:00:00 2001 +From: Ondrej Holy +Date: Fri, 21 Jan 2022 08:32:31 +0100 +Subject: [PATCH] build: Remove incorrect i18n.merge_file argument + +The positional argument was being silently ignored until meson 0.60.0 where +it fails with "ERROR: Function does not take positional arguments". + +Related: https://github.com/mesonbuild/meson/issues/9441 +Fixes: https://gitlab.gnome.org/GNOME/gvfs/-/issues/599 + +[Retrieved (and backported) from: +https://gitlab.gnome.org/GNOME/gvfs/-/commit/17a067b9b823a0d54e061eae45ff8e2c7e4a88d0] +Signed-off-by: Fabrice Fontaine +--- + daemon/meson.build | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/daemon/meson.build b/daemon/meson.build +index 5f9559aa..e20ada29 100644 +--- a/daemon/meson.build ++++ b/daemon/meson.build +@@ -360,7 +360,6 @@ if enable_admin + ) + + i18n.merge_file( +- policy, + input: policy_in, + output: '@BASENAME@', + po_dir: po_dir, +-- +GitLab + diff --git a/package/gvfs/Config.in b/package/gvfs/Config.in new file mode 100644 index 00000000..68ad2914 --- /dev/null +++ b/package/gvfs/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_GVFS + bool "gvfs" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_USE_MMU # dbus, glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, glib2 + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_GSETTINGS_DESKTOP_SCHEMAS + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_SHARED_MIME_INFO + help + gvfs is a userspace virtual filesystem where mount runs as a + separate processes which you talk to via D-Bus. It also + contains a gio module that seamlessly adds gvfs support to + all applications using the gio API. It also supports exposing + the gvfs mounts to non-gio applications using fuse. + + https://wiki.gnome.org/action/show/Projects/gvfs + +comment "gvfs 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/package/gvfs/gvfs.hash b/package/gvfs/gvfs.hash new file mode 100644 index 00000000..fc068ddb --- /dev/null +++ b/package/gvfs/gvfs.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/gvfs/1.48/gvfs-1.48.1.sha256sum +sha256 b2ea4f271aad2711f16b43c03151e2ec5a9874ff1a21142ef6d6406486a19dc2 gvfs-1.48.1.tar.xz + +# Hash for license file +sha256 45cf336e2e48176993babc5aabf44437390f40e6a86a472c6abfc7ce9c035db4 COPYING diff --git a/package/gvfs/gvfs.mk b/package/gvfs/gvfs.mk new file mode 100644 index 00000000..50efed1a --- /dev/null +++ b/package/gvfs/gvfs.mk @@ -0,0 +1,171 @@ +################################################################################ +# +# gvfs +# +################################################################################ + +GVFS_VERSION_MAJOR = 1.48 +GVFS_VERSION = $(GVFS_VERSION_MAJOR).1 +GVFS_SOURCE = gvfs-$(GVFS_VERSION).tar.xz +GVFS_SITE = https://download.gnome.org/sources/gvfs/$(GVFS_VERSION_MAJOR) +GVFS_INSTALL_STAGING = YES +GVFS_DEPENDENCIES = \ + host-pkgconf \ + host-libglib2 \ + dbus \ + gsettings-desktop-schemas \ + libglib2 \ + shared-mime-info \ + $(TARGET_NLS_DEPENDENCIES) +GVFS_LICENSE = LGPL-2.0+ +GVFS_LICENSE_FILES = COPYING +GVFS_CPE_ID_VENDOR = gnome + +GVFS_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) + +# Most of these are missing library support +GVFS_CONF_OPTS = \ + -Dafc=false \ + -Dgoa=false \ + -Dgoogle=false \ + -Dmtp=false \ + -Dsftp=false \ + -Dudisks2=false + +ifeq ($(BR2_PACKAGE_AVAHI),y) +GVFS_DEPENDENCIES += avahi +GVFS_CONF_OPTS += -Ddnssd=true +else +GVFS_CONF_OPTS += -Ddnssd=false +endif + +ifeq ($(BR2_PACKAGE_GCR),y) +GVFS_DEPENDENCIES += gcr +GVFS_CONF_OPTS += -Dgcr=true +else +GVFS_CONF_OPTS += -Dgcr=false +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +GVFS_DEPENDENCIES += udev +endif + +ifeq ($(BR2_PACKAGE_LIBGUDEV),y) +GVFS_DEPENDENCIES += libgudev +GVFS_CONF_OPTS += -Dgudev=true +else +GVFS_CONF_OPTS += -Dgudev=false +endif + +ifeq ($(BR2_PACKAGE_LIBARCHIVE),y) +GVFS_DEPENDENCIES += libarchive +GVFS_CONF_OPTS += -Darchive=true +else +GVFS_CONF_OPTS += -Darchive=false +endif + +ifeq ($(BR2_PACKAGE_LIBBLURAY),y) +GVFS_DEPENDENCIES += libbluray +GVFS_CONF_OPTS += -Dbluray=true +else +GVFS_CONF_OPTS += -Dbluray=false +endif + +ifeq ($(BR2_PACKAGE_LIBCAP)$(BR2_PACKAGE_POLKIT),yy) +GVFS_DEPENDENCIES += libcap polkit +GVFS_CONF_OPTS += -Dadmin=true +else +GVFS_CONF_OPTS += -Dadmin=false +endif + +ifeq ($(BR2_PACKAGE_LIBCDIO_PARANOIA)$(BR2_PACKAGE_LIBGUDEV),yy) +GVFS_DEPENDENCIES += libcdio-paranoia libgudev +GVFS_CONF_OPTS += -Dcdda=true +else +GVFS_CONF_OPTS += -Dcdda=false +endif + +ifeq ($(BR2_PACKAGE_LIBFUSE3),y) +GVFS_DEPENDENCIES += libfuse3 +GVFS_CONF_OPTS += -Dfuse=true +else +GVFS_CONF_OPTS += -Dfuse=false +endif + +# AFP support is anon-only without libgcrypt which isn't very useful +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +GVFS_CONF_OPTS += \ + -Dafp=true \ + -Dgcrypt=true +GVFS_DEPENDENCIES += libgcrypt +else +GVFS_CONF_OPTS += \ + -Dafp=false \ + -Dgcrypt=false +endif + +ifeq ($(BR2_PACKAGE_LIBGPHOTO2)$(BR2_PACKAGE_LIBGUDEV),yy) +GVFS_DEPENDENCIES += libgphoto2 libgudev +GVFS_CONF_OPTS += -Dgphoto2=true +else +GVFS_CONF_OPTS += -Dgphoto2=false +endif + +ifeq ($(BR2_PACKAGE_LIBNFS),y) +GVFS_CONF_OPTS += -Dnfs=true +GVFS_DEPENDENCIES += libnfs +else +GVFS_CONF_OPTS += -Dnfs=false +endif + +ifeq ($(BR2_PACKAGE_LIBSECRET),y) +GVFS_DEPENDENCIES += libsecret +GVFS_CONF_OPTS += -Dkeyring=true +else +GVFS_CONF_OPTS += -Dkeyring=false +endif + +ifeq ($(BR2_PACKAGE_LIBSOUP)$(BR2_PACKAGE_LIBXML2),yy) +GVFS_DEPENDENCIES += libsoup libxml2 +GVFS_CONF_OPTS += -Dhttp=true +else +GVFS_CONF_OPTS += -Dhttp=false +endif + +ifeq ($(BR2_PACKAGE_LIBUSB),y) +GVFS_DEPENDENCIES += libusb +GVFS_CONF_OPTS += -Dlibusb=true +else +GVFS_CONF_OPTS += -Dlibusb=false +endif + +ifeq ($(BR2_PACKAGE_SAMBA4),y) +GVFS_DEPENDENCIES += samba4 +GVFS_CONF_OPTS += -Dsmb=true +else +GVFS_CONF_OPTS += -Dsmb=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +GVFS_DEPENDENCIES += systemd +GVFS_CONF_OPTS += -Dlogind=true +else +GVFS_CONF_OPTS += \ + -Dlogind=false \ + -Dsystemduserunitdir=no \ + -Dtmpfilesdir=no +endif + +define GVFS_REMOVE_TARGET_SCHEMAS + rm $(TARGET_DIR)/usr/share/glib-2.0/schemas/*.xml +endef + +define GVFS_COMPILE_SCHEMAS + $(HOST_DIR)/bin/glib-compile-schemas --targetdir=$(TARGET_DIR)/usr/share/glib-2.0/schemas $(STAGING_DIR)/usr/share/glib-2.0/schemas +endef + +GVFS_POST_INSTALL_TARGET_HOOKS += \ + GVFS_REMOVE_TARGET_SCHEMAS \ + GVFS_COMPILE_SCHEMAS + +$(eval $(meson-package)) diff --git a/package/gzip/Config.in b/package/gzip/Config.in new file mode 100644 index 00000000..f2eac037 --- /dev/null +++ b/package/gzip/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_GZIP + bool "gzip" + depends on BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + Standard GNU compressor. Provides things like gzip, + gunzip, gzcat, etc... + + http://www.gnu.org/software/gzip/gzip.html + +comment "gzip needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/package/gzip/gzip.hash b/package/gzip/gzip.hash new file mode 100644 index 00000000..4d9d0c72 --- /dev/null +++ b/package/gzip/gzip.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +# https://ftp.gnu.org/gnu/gzip/gzip-1.13.tar.xz.sig +# using key 155D3FC500C834486D1EEA677FD9FCCB000BEEEE +sha256 7454eb6935db17c6655576c2e1b0fabefd38b4d0936e0f87f48cd062ce91a057 gzip-1.13.tar.xz +# Locally calculated +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 COPYING diff --git a/package/gzip/gzip.mk b/package/gzip/gzip.mk new file mode 100644 index 00000000..33032135 --- /dev/null +++ b/package/gzip/gzip.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# gzip +# +################################################################################ + +GZIP_VERSION = 1.13 +GZIP_SOURCE = gzip-$(GZIP_VERSION).tar.xz +GZIP_SITE = $(BR2_GNU_MIRROR)/gzip +# Some other tools expect it to be in /bin +GZIP_CONF_OPTS = --exec-prefix=/ +GZIP_LICENSE = GPL-3.0+ +GZIP_LICENSE_FILES = COPYING +GZIP_CPE_ID_VENDOR = gnu +GZIP_CONF_ENV += gl_cv_func_fflush_stdin=yes +HOST_GZIP_CONF_ENV += gl_cv_func_fflush_stdin=yes +# configure substitutes $(SHELL) for the shell shebang in scripts like +# gzexe. Unfortunately, the same $(SHELL) variable will also be used by +# make to run its commands. Fortunately, /bin/sh is always a POSIX shell +# on both the target and host systems that we support. Even with this, +# the configure check is slightly broken and prints a bogus warning: +# "using /bin/sh, even though it may have file descriptor bugs" +GZIP_CONF_ENV += ac_cv_path_shell=/bin/sh + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/hackrf/Config.in b/package/hackrf/Config.in new file mode 100644 index 00000000..d5df328d --- /dev/null +++ b/package/hackrf/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_HACKRF + bool "hackrf" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_FFTW + select BR2_PACKAGE_FFTW_SINGLE + select BR2_PACKAGE_LIBUSB + help + Library and tools for accessing HackRF SDR boards. + + https://hackrf.readthedocs.io + +comment "hackrf needs a toolchain w/ threads, dynamic library, gcc >= 4.9" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/hackrf/hackrf.hash b/package/hackrf/hackrf.hash new file mode 100644 index 00000000..0426009d --- /dev/null +++ b/package/hackrf/hackrf.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 32a03f943a30be4ba478e94bf69f14a5b7d55be6761007f4a4f5453418206a11 hackrf-2023.01.1.tar.xz +sha256 49b60a6288f90f49074228cc1fae0fb16871ba36b756013abdf7c2fc92f01fad COPYING diff --git a/package/hackrf/hackrf.mk b/package/hackrf/hackrf.mk new file mode 100644 index 00000000..0d753381 --- /dev/null +++ b/package/hackrf/hackrf.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# hackrf +# +################################################################################ + +HACKRF_VERSION = 2023.01.1 +HACKRF_SITE = https://github.com/greatscottgadgets/hackrf/releases/download/v$(HACKRF_VERSION) +HACKRF_SOURCE = hackrf-$(HACKRF_VERSION).tar.xz +HACKRF_LICENSE = GPL-2.0+, BSD-3-Clause +HACKRF_LICENSE_FILES = COPYING +HACKRF_DEPENDENCIES = fftw-single libusb +HACKRF_SUBDIR = host +HACKRF_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +HACKRF_CONF_OPTS += \ + -DINSTALL_UDEV_RULES=ON \ + -DUDEV_RULES_GROUP=plugdev +else +HACKRF_CONF_OPTS += -DINSTALL_UDEV_RULES=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/hans/Config.in b/package/hans/Config.in new file mode 100644 index 00000000..54bdfd96 --- /dev/null +++ b/package/hans/Config.in @@ -0,0 +1,14 @@ +comment "hans needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_HANS + bool "hans" + depends on BR2_INSTALL_LIBSTDCPP + help + Hans makes it possible to tunnel IPv4 through ICMP echo + packets, so you could call it a ping tunnel. + This can be useful when you find yourself in the situation + that your Internet access is firewalled, but pings are + allowed. + + http://code.gerade.org/hans/ diff --git a/package/hans/hans.hash b/package/hans/hans.hash new file mode 100644 index 00000000..a1f591eb --- /dev/null +++ b/package/hans/hans.hash @@ -0,0 +1,6 @@ +# From http://sourceforge.net/projects/hanstunnel/files/source/ +md5 d23fbaeb990ed7d05695fcc8f8ef7847 hans-1.1.tar.gz +sha1 15dd4b717e8808d9279af970d4826aad826bc849 hans-1.1.tar.gz +# Locally computed +sha256 966962d8734ab6b4d871e035d08f45256025a5220216bd48e41fa7fd0ad136c5 hans-1.1.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE diff --git a/package/hans/hans.mk b/package/hans/hans.mk new file mode 100644 index 00000000..6d2b1dab --- /dev/null +++ b/package/hans/hans.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# hans +# +################################################################################ + +HANS_VERSION = 1.1 +HANS_SITE = http://downloads.sourceforge.net/project/hanstunnel/source +HANS_LICENSE = GPL-3.0+ +HANS_LICENSE_FILES = LICENSE + +define HANS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) GCC="$(TARGET_CC)" GPP="$(TARGET_CXX)" -C $(@D) +endef + +define HANS_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -D $(@D)/hans $(TARGET_DIR)/usr/sbin/hans +endef + +$(eval $(generic-package)) diff --git a/package/haproxy/0001-BUILD-atomic-atomic.h-may-need-compiler.h-on-ARMv8.2.patch b/package/haproxy/0001-BUILD-atomic-atomic.h-may-need-compiler.h-on-ARMv8.2.patch new file mode 100644 index 00000000..b3b1f732 --- /dev/null +++ b/package/haproxy/0001-BUILD-atomic-atomic.h-may-need-compiler.h-on-ARMv8.2.patch @@ -0,0 +1,36 @@ +From 5ab3c61932af7619518169da744ba6346f060405 Mon Sep 17 00:00:00 2001 +From: Willy Tarreau +Date: Thu, 8 Dec 2022 08:32:57 +0100 +Subject: [PATCH] BUILD: atomic: atomic.h may need compiler.h on ARMv8.2-a + +We get a build error in ncbuf.c when building for ARMv8.2-a because ncbuf +has minimal includes and among them bug.h which includes atomic.h. Atomic.h +may use "forceinline" without including compiler.h, hence the build error. +It was verified that adding it doesn't inflate the total headers. + +Since all other C files include api.h which already covers this, there's +no real need to bapkport this. The issue was already there in 2.3 though. + +Upstream: https://git.haproxy.org/?p=haproxy.git;a=commitdiff;h=5ab3c61932af7619518169da744ba6346f060405#patch1 + +Signed-off-by: Bernd Kuhls +--- + include/haproxy/atomic.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/include/haproxy/atomic.h b/include/haproxy/atomic.h +index f60be95..7e3c826 100644 +--- a/include/haproxy/atomic.h ++++ b/include/haproxy/atomic.h +@@ -23,6 +23,8 @@ + #ifndef _HAPROXY_ATOMIC_H + #define _HAPROXY_ATOMIC_H + ++#include ++ + /* A few notes for the macros and functions here: + * - this file is painful to edit, most operations exist in 3 variants, + * no-thread, threads with gcc<4.7, threads with gcc>=4.7. Be careful when +-- +1.7.10.4 + diff --git a/package/haproxy/Config.in b/package/haproxy/Config.in new file mode 100644 index 00000000..b348eb9d --- /dev/null +++ b/package/haproxy/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_HAPROXY_ARCH_SUPPORTS + bool + default y + # src/proto_http.c:6330:1: internal compiler error: Segmentation fault + depends on !BR2_nios2 + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60040 + depends on !(BR2_sh4 && !BR2_TOOLCHAIN_GCC_AT_LEAST_7) + +config BR2_PACKAGE_HAPROXY + bool "haproxy" + depends on BR2_PACKAGE_HAPROXY_ARCH_SUPPORTS + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_SYNC_1 && BR2_TOOLCHAIN_HAS_SYNC_4 + help + HAProxy is a free, very fast and reliable solution offering + high availability, load balancing, and proxying for TCP and + HTTP-based applications. + + http://www.haproxy.org diff --git a/package/haproxy/haproxy.hash b/package/haproxy/haproxy.hash new file mode 100644 index 00000000..74390c2f --- /dev/null +++ b/package/haproxy/haproxy.hash @@ -0,0 +1,6 @@ +# From: http://www.haproxy.org/download/2.6/src/haproxy-2.6.15.tar.gz.sha256 +sha256 41f8e1695e92fafdffe39690a68993f1a0f5f7f06931a99e9a153f749ea39cfd haproxy-2.6.15.tar.gz +# Locally computed: +sha256 0717ca51fceaa25ac9e5ccc62e0c727dcf27796057201fb5fded56a25ff6ca28 LICENSE +sha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a doc/lgpl.txt +sha256 ddb9db7630752f8fdc6898f7c99a99eaeeac5213627ecb093df9c82f56175dc7 doc/gpl.txt diff --git a/package/haproxy/haproxy.mk b/package/haproxy/haproxy.mk new file mode 100644 index 00000000..61a9ebeb --- /dev/null +++ b/package/haproxy/haproxy.mk @@ -0,0 +1,93 @@ +################################################################################ +# +# haproxy +# +################################################################################ + +HAPROXY_VERSION_MAJOR = 2.6 +HAPROXY_VERSION = $(HAPROXY_VERSION_MAJOR).15 +HAPROXY_SITE = http://www.haproxy.org/download/$(HAPROXY_VERSION_MAJOR)/src +HAPROXY_LICENSE = GPL-2.0+ and LGPL-2.1+ with exceptions +HAPROXY_LICENSE_FILES = LICENSE doc/lgpl.txt doc/gpl.txt +HAPROXY_CPE_ID_VENDOR = haproxy + +HAPROXY_MAKE_OPTS = \ + LD=$(TARGET_CC) \ + PREFIX=/usr \ + TARGET=custom + +ifeq ($(BR2_STATIC_LIBS),) +HAPROXY_MAKE_OPTS += USE_DL=1 +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +HAPROXY_LIBS += -latomic +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS_NPTL),y) +# threads uses atomics on gcc >= 4.7 and sync otherwise (see +# include/common/hathreads.h) +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_7):$(BR2_TOOLCHAIN_HAS_ATOMIC),y:y) +HAPROXY_MAKE_OPTS += USE_THREAD=1 +else ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_7):$(BR2_TOOLCHAIN_HAS_SYNC_4),:y) +HAPROXY_MAKE_OPTS += USE_THREAD=1 +endif +endif + +ifeq ($(BR2_PACKAGE_LUA_5_3),y) +HAPROXY_DEPENDENCIES += lua +HAPROXY_MAKE_OPTS += \ + LUA_LIB_NAME=lua \ + USE_LUA=1 +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +HAPROXY_DEPENDENCIES += openssl +HAPROXY_MAKE_OPTS += USE_OPENSSL=1 +ifeq ($(BR2_STATIC_LIBS),y) +HAPROXY_LIBS += -lz +endif +endif + +# pcre and pcre2 can't be enabled at the same time so prefer pcre2 +ifeq ($(BR2_PACKAGE_PCRE2),y) +HAPROXY_DEPENDENCIES += pcre2 +HAPROXY_MAKE_OPTS += \ + PCRE2_CONFIG=$(STAGING_DIR)/usr/bin/pcre2-config \ + USE_PCRE2=1 +else ifeq ($(BR2_PACKAGE_PCRE),y) +HAPROXY_DEPENDENCIES += pcre +HAPROXY_MAKE_OPTS += \ + PCRE_CONFIG=$(STAGING_DIR)/usr/bin/pcre-config \ + USE_PCRE=1 +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +HAPROXY_DEPENDENCIES += systemd +HAPROXY_MAKE_OPTS += USE_SYSTEMD=1 +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +HAPROXY_DEPENDENCIES += zlib +HAPROXY_MAKE_OPTS += USE_ZLIB=1 +endif + +HAPROXY_MAKE_OPTS += ADDLIB="$(HAPROXY_LIBS)" + +HAPROXY_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_90620),y) +HAPROXY_CFLAGS += -O0 +endif + +define HAPROXY_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + $(HAPROXY_MAKE_OPTS) DEFINE="$(HAPROXY_CFLAGS)" -C $(@D) +endef + +define HAPROXY_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + $(HAPROXY_MAKE_OPTS) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/harfbuzz/0001-meson.build-check-for-pthread.h.patch b/package/harfbuzz/0001-meson.build-check-for-pthread.h.patch new file mode 100644 index 00000000..102f9ff4 --- /dev/null +++ b/package/harfbuzz/0001-meson.build-check-for-pthread.h.patch @@ -0,0 +1,42 @@ +From 96bbf3a3af45d86f790afdf91a6686c37421e92b Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 15 Nov 2020 10:57:37 +0100 +Subject: [PATCH] meson.build: check for pthread.h + +Check for pthread.h otherwise the build will fail with some toolchains +that have libphtread.so but not pthread.h: + +Run-time dependency threads found: YES + +../src/hb-mutex.hh:53:10: fatal error: pthread.h: No such file or directory + #include + ^~~~~~~~~~~ + +Moreover, fix detection of pthread fallback + +Fixes: + - http://autobuild.buildroot.org/results/70c98e89b1d5e5b651d1f6928dc53f465103f57a + +Signed-off-by: Fabrice Fontaine +--- + meson.build | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/meson.build b/meson.build +index bf3925db..6d263d48 100644 +--- a/meson.build ++++ b/meson.build +@@ -270,7 +270,9 @@ endif + # threads + thread_dep = null_dep + if host_machine.system() != 'windows' +- thread_dep = dependency('threads', required: false) ++ if cpp.has_header('pthread.h') ++ thread_dep = dependency('threads', required: false) ++ endif + + if thread_dep.found() + conf.set('HAVE_PTHREAD', 1) +-- +2.29.2 + diff --git a/package/harfbuzz/Config.in b/package/harfbuzz/Config.in new file mode 100644 index 00000000..2e4219ee --- /dev/null +++ b/package/harfbuzz/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_HARFBUZZ + bool "harfbuzz" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + help + HarfBuzz is an OpenType text shaping engine + + https://harfbuzz.github.io/ + + Harfbuzz can make optional use of cairo, freetype, + glib2 and icu packages if they are selected. + +comment "harfbuzz needs a toolchain w/ C++, gcc >= 4.9" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/harfbuzz/harfbuzz.hash b/package/harfbuzz/harfbuzz.hash new file mode 100644 index 00000000..fa4ee16a --- /dev/null +++ b/package/harfbuzz/harfbuzz.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 a41b272ceeb920c57263ec851604542d9ec85ee3030506d94662067c7b6ab89e harfbuzz-9.0.0.tar.xz +sha256 ba8f810f2455c2f08e2d56bb49b72f37fcf68f1f4fade38977cfd7372050ad64 COPYING diff --git a/package/harfbuzz/harfbuzz.mk b/package/harfbuzz/harfbuzz.mk new file mode 100644 index 00000000..946b2b0f --- /dev/null +++ b/package/harfbuzz/harfbuzz.mk @@ -0,0 +1,102 @@ +################################################################################ +# +# harfbuzz +# +################################################################################ + +HARFBUZZ_VERSION = 9.0.0 +HARFBUZZ_SITE = https://github.com/harfbuzz/harfbuzz/releases/download/$(HARFBUZZ_VERSION) +HARFBUZZ_SOURCE = harfbuzz-$(HARFBUZZ_VERSION).tar.xz +HARFBUZZ_LICENSE = MIT, ISC (ucdn library) +HARFBUZZ_LICENSE_FILES = COPYING +HARFBUZZ_CPE_ID_VALID = YES +HARFBUZZ_INSTALL_STAGING = YES +HARFBUZZ_CONF_OPTS = \ + -Dgdi=disabled \ + -Ddirectwrite=disabled \ + -Dcoretext=disabled \ + -Dtests=disabled \ + -Ddocs=disabled \ + -Dbenchmark=disabled \ + -Dicu_builtin=false \ + -Dexperimental_api=false \ + -Dfuzzer_ldflags="" + +# freetype & glib2 support required by host-pango +HOST_HARFBUZZ_DEPENDENCIES = \ + host-freetype \ + host-libglib2 +HOST_HARFBUZZ_CONF_OPTS = \ + -Dglib=enabled \ + -Dgobject=disabled \ + -Dcairo=disabled \ + -Dicu=disabled \ + -Dgraphite=disabled \ + -Dfreetype=enabled \ + -Dgdi=disabled \ + -Ddirectwrite=disabled \ + -Dcoretext=disabled \ + -Dtests=disabled \ + -Dintrospection=disabled \ + -Ddocs=disabled \ + -Dbenchmark=disabled \ + -Dicu_builtin=false \ + -Dexperimental_api=false \ + -Dfuzzer_ldflags="" + +ifeq ($(BR2_PACKAGE_CAIRO),y) +HARFBUZZ_DEPENDENCIES += cairo +HARFBUZZ_CONF_OPTS += -Dcairo=enabled +else +HARFBUZZ_CONF_OPTS += -Dcairo=disabled +endif + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +HARFBUZZ_DEPENDENCIES += freetype +HARFBUZZ_CONF_OPTS += -Dfreetype=enabled +else +HARFBUZZ_CONF_OPTS += -Dfreetype=disabled +endif + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +HARFBUZZ_DEPENDENCIES += gobject-introspection +HARFBUZZ_CONF_OPTS += \ + -Dgobject=enabled \ + -Dintrospection=enabled +else +HARFBUZZ_CONF_OPTS += \ + -Dgobject=disabled \ + -Dintrospection=disabled +endif + +ifeq ($(BR2_PACKAGE_GRAPHITE2),y) +HARFBUZZ_DEPENDENCIES += graphite2 +HARFBUZZ_CONF_OPTS += -Dgraphite=enabled +else +HARFBUZZ_CONF_OPTS += -Dgraphite=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +HARFBUZZ_DEPENDENCIES += libglib2 +HARFBUZZ_CONF_OPTS += -Dglib=enabled +else +HARFBUZZ_CONF_OPTS += -Dglib=disabled +endif + +ifeq ($(BR2_PACKAGE_ICU),y) +HARFBUZZ_DEPENDENCIES += icu +HARFBUZZ_CONF_OPTS += -Dicu=enabled +else +HARFBUZZ_CONF_OPTS += -Dicu=disabled +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),) +HARFBUZZ_CXXFLAGS += $(TARGET_CXXFLAGS) -DHB_NO_MT +endif + +ifeq ($(BR2_GCC_VERSION_ARC),y) +HARFBUZZ_CXXFLAGS += -O0 +endif + +$(eval $(meson-package)) +$(eval $(host-meson-package)) diff --git a/package/haserl/0001-add-haserl_lualib.inc.patch b/package/haserl/0001-add-haserl_lualib.inc.patch new file mode 100644 index 00000000..31a11e95 --- /dev/null +++ b/package/haserl/0001-add-haserl_lualib.inc.patch @@ -0,0 +1,151 @@ +[HACK] add preprocessed lualib file so host-lua isn't needed + +Haserl no longer ships with haserl_lualib.inc, causing lua2c (which needs +host-lua support) to be built to generate it. + +Re-add .inc file from 0.9.33 so we don't need host-lua. + +Signed-off-by: Peter Korsgaard +Signed-off-by: Max Filippov +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + src/Makefile.in | 3 - + src/haserl_lualib.inc | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 98 insertions(+), 2 deletions(-) + +Index: haserl-0.9.33/src/haserl_lualib.inc +=================================================================== +--- /dev/null ++++ haserl-0.9.33/src/haserl_lualib.inc +@@ -0,0 +1,109 @@ ++/* This file was automatically generated from haserl_lualib.lua. DO NOT EDIT */ ++ ++static const unsigned char haserl_lualib[] = { ++ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 19, 0, 0, 0, ++ 0, 0, 0, 0, 64,104, 97,115,101,114,108, 95,108,117, 97,108, ++ 105, 98, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 2, 7, 24, 0, 0, 0, 10, 0, 0, 0, 74, 0, 0, 0,138, ++ 0, 0, 0,202, 0, 0, 0, 10, 1, 0, 0, 74, 1, 0, 0,138, ++ 1, 0, 0,135,129, 1, 0, 71, 65, 1, 0, 7, 1, 1, 0,199, ++ 192, 0, 0,135,128, 0, 0, 71, 64, 0, 0, 7, 0, 0, 0, 5, ++ 0, 0, 0,100, 0, 0, 0, 9, 64,128,131, 5, 0, 0, 0,100, ++ 64, 0, 0, 9, 64, 0,132, 5, 0, 0, 0,100,128, 0, 0, 9, ++ 64,128,132, 30, 0,128, 0, 10, 0, 0, 0, 4, 7, 0, 0, 0, ++ 0, 0, 0, 0,104, 97,115,101,114,108, 0, 4, 5, 0, 0, 0, ++ 0, 0, 0, 0, 70, 79, 82, 77, 0, 4, 4, 0, 0, 0, 0, 0, ++ 0, 0, 69, 78, 86, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 67, ++ 79, 79, 75, 73, 69, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 72, ++ 65, 83, 69, 82, 76, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 71, ++ 69, 84, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 80, 79, 83, 84, ++ 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,115,101,116,102,105,101, ++ 108,100, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,103,101,116,102, ++ 105,101,108,100, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,109,121, ++ 112,117,116,101,110,118, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 25, 0, 0, 0, 39, 0, 0, 0, 0, 2, 0, 10, 29, ++ 0, 0, 0,133, 0, 0, 0,197, 64, 0, 0,198,128,192, 1, 0, ++ 1, 0, 0, 65,193, 0, 0,220, 0,129, 1, 22,128, 4,128, 5, ++ 2, 1, 0, 64, 2, 0, 3, 28,130, 0, 1, 26, 2, 0, 0, 22, ++ 192, 0,128, 5, 2, 1, 0, 64, 2, 0, 3, 28,130, 0, 1,128, ++ 1, 0, 4, 23, 64,193, 3, 22,128, 1,128, 6,130, 1, 1, 26, ++ 66, 0, 0, 22, 0, 0,128, 10, 2, 0, 0,137, 0, 2, 3,134, ++ 128, 1, 1, 22, 0, 0,128,137, 64, 0, 3,225,128, 0, 0, 22, ++ 128,250,127, 30, 0,128, 0, 6, 0, 0, 0, 4, 3, 0, 0, 0, ++ 0, 0, 0, 0, 95, 71, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, ++ 115,116,114,105,110,103, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, ++ 103,109, 97,116, 99,104, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0, ++ 40, 91, 37,119, 95, 37, 45, 93, 43, 41, 40, 46, 63, 41, 0, 4, ++ 9, 0, 0, 0, 0, 0, 0, 0,116,111,110,117,109, 98,101,114, ++ 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, ++ 29, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, ++ 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, ++ 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, ++ 29, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, ++ 30, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, ++ 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, ++ 34, 0, 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 28, 0, 0, 0, ++ 37, 0, 0, 0, 39, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, ++ 0, 0, 0, 0,102, 0, 0, 0, 0, 0, 28, 0, 0, 0, 2, 0, ++ 0, 0, 0, 0, 0, 0,118, 0, 0, 0, 0, 0, 28, 0, 0, 0, ++ 2, 0, 0, 0, 0, 0, 0, 0,116, 0, 1, 0, 0, 0, 28, 0, ++ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,103, ++ 101,110,101,114, 97,116,111,114, 41, 0, 6, 0, 0, 0, 28, 0, ++ 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,115, ++ 116, 97,116,101, 41, 0, 6, 0, 0, 0, 28, 0, 0, 0, 14, 0, ++ 0, 0, 0, 0, 0, 0, 40,102,111,114, 32, 99,111,110,116,114, ++ 111,108, 41, 0, 6, 0, 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, ++ 0, 0, 0, 0,119, 0, 7, 0, 0, 0, 26, 0, 0, 0, 2, 0, ++ 0, 0, 0, 0, 0, 0,100, 0, 7, 0, 0, 0, 26, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, ++ 47, 0, 0, 0, 0, 1, 0, 8, 12, 0, 0, 0, 69, 0, 0, 0, ++ 133, 64, 0, 0,134,128, 64, 1,192, 0, 0, 0, 1,193, 0, 0, ++ 156, 0,129, 1, 22, 0, 0,128, 70, 64,129, 0,161, 64, 0, 0, ++ 22, 0,255,127, 94, 0, 0, 1, 30, 0,128, 0, 4, 0, 0, 0, ++ 4, 3, 0, 0, 0, 0, 0, 0, 0, 95, 71, 0, 4, 7, 0, 0, ++ 0, 0, 0, 0, 0,115,116,114,105,110,103, 0, 4, 7, 0, 0, ++ 0, 0, 0, 0, 0,103,109, 97,116, 99,104, 0, 4, 7, 0, 0, ++ 0, 0, 0, 0, 0, 91, 37,119, 95, 93, 43, 0, 0, 0, 0, 0, ++ 12, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, ++ 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, ++ 44, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 46, 0, 0, 0, ++ 47, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, ++ 102, 0, 0, 0, 0, 0, 11, 0, 0, 0, 2, 0, 0, 0, 0, 0, ++ 0, 0,118, 0, 1, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, ++ 0, 0, 0, 0, 40,102,111,114, 32,103,101,110,101,114, 97,116, ++ 111,114, 41, 0, 6, 0, 0, 0, 10, 0, 0, 0, 12, 0, 0, 0, ++ 0, 0, 0, 0, 40,102,111,114, 32,115,116, 97,116,101, 41, 0, ++ 6, 0, 0, 0, 10, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, ++ 40,102,111,114, 32, 99,111,110,116,114,111,108, 41, 0, 6, 0, ++ 0, 0, 10, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,119, 0, ++ 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 49, 0, 0, 0, 55, 0, 0, 0, 0, 2, 0, 6, ++ 20, 0, 0, 0,133, 0, 0, 0,134, 64, 64, 1,192, 0, 0, 0, ++ 1,129, 0, 0, 65,193, 0, 0,156,128, 0, 2, 0, 0, 0, 1, ++ 133, 0, 0, 0,134, 64, 64, 1,192, 0, 0, 0, 1, 1, 1, 0, ++ 65,193, 0, 0,156,128, 0, 2, 0, 0, 0, 1,133, 64, 1, 0, ++ 134,128, 65, 1,192, 0, 0, 0, 0, 1,128, 0,156, 64,128, 1, ++ 30, 0,128, 0, 7, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, ++ 0,115,116,114,105,110,103, 0, 4, 5, 0, 0, 0, 0, 0, 0, ++ 0,103,115,117, 98, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 91, ++ 92, 93, 92, 91, 93, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 46, ++ 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 91, 92, 46, 93, 43, 0, ++ 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,115,101,114,108, 0, ++ 4, 9, 0, 0, 0, 0, 0, 0, 0,115,101,116,102,105,101,108, ++ 100, 0, 0, 0, 0, 0, 20, 0, 0, 0, 51, 0, 0, 0, 51, 0, ++ 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, ++ 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, ++ 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, ++ 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, ++ 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 2, 0, 0, 0, 4, 0, ++ 0, 0, 0, 0, 0, 0,107,101,121, 0, 0, 0, 0, 0, 19, 0, ++ 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 0, ++ 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, ++ 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, ++ 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, ++ 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, ++ 23, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 39, 0, 0, 0, ++ 25, 0, 0, 0, 41, 0, 0, 0, 47, 0, 0, 0, 41, 0, 0, 0, ++ 49, 0, 0, 0, 55, 0, 0, 0, 49, 0, 0, 0, 55, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0, ++}; +Index: haserl-0.9.29/src/Makefile.in +=================================================================== +--- haserl-0.9.29.orig/src/Makefile.in ++++ haserl-0.9.29/src/Makefile.in +@@ -86,7 +86,6 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : +-@USE_LUA_TRUE@noinst_PROGRAMS = lua2c$(EXEEXT) + @INCLUDE_LUASHELL_TRUE@@USE_LUA_TRUE@am__append_1 = h_lua.c h_lua.h + @INCLUDE_LUACSHELL_TRUE@@USE_LUA_TRUE@am__append_2 = h_luac.c h_luac.h + bin_PROGRAMS = haserl$(EXEEXT) +@@ -812,7 +811,7 @@ + @USE_LUA_TRUE@ $(CC_FOR_BUILD) $(CFLAGS) $(LUA_CFLAGS) $(LDFLAGS) $(lua2c_LDFLAGS) \ + @USE_LUA_TRUE@ -o $@ $^ $(LIBS) $(LUA_LIBS) + +-@USE_LUA_TRUE@haserl_lualib.inc : haserl_lualib.lua lua2c ++@USE_LUA_TRUE@haserl_lualib.inc : + @USE_LUA_TRUE@ if ! ./lua2c haserl_lualib haserl_lualib.lua >$@; then \ + @USE_LUA_TRUE@ rm $@; \ + @USE_LUA_TRUE@ exit 1 ;\ diff --git a/package/haserl/Config.in b/package/haserl/Config.in new file mode 100644 index 00000000..9ccc392d --- /dev/null +++ b/package/haserl/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_HASERL + bool "haserl" + depends on BR2_USE_MMU # fork() + help + Haserl is a small cgi wrapper that enables shell scripts to be + embedded into html documents. It is intended for environments + where something like PHP is too big. + + http://haserl.sourceforge.net/ + +config BR2_PACKAGE_HASERL_WITH_LUA + bool "Lua support" + depends on BR2_PACKAGE_HASERL + depends on BR2_PACKAGE_LUA + help + Enable Lua support for haserl diff --git a/package/haserl/haserl.hash b/package/haserl/haserl.hash new file mode 100644 index 00000000..c66b54a0 --- /dev/null +++ b/package/haserl/haserl.hash @@ -0,0 +1,5 @@ +# From http://sourceforge.net/projects/haserl/files/haserl-devel/ +md5 b94cd201a82b410b7f93fe3a31416cff haserl-0.9.36.tar.gz +sha1 a6244b496f06e1fea70581cb02c04bc1f0ffcbc3 haserl-0.9.36.tar.gz +# Locally computed +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/haserl/haserl.mk b/package/haserl/haserl.mk new file mode 100644 index 00000000..f2a9d714 --- /dev/null +++ b/package/haserl/haserl.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# haserl +# +################################################################################ + +HASERL_VERSION = 0.9.36 +HASERL_SITE = http://downloads.sourceforge.net/project/haserl/haserl-devel +HASERL_LICENSE = GPL-2.0 +HASERL_LICENSE_FILES = COPYING +HASERL_CPE_ID_VALID = YES +HASERL_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_HASERL_WITH_LUA),y) +HASERL_CONF_OPTS += --with-lua +HASERL_DEPENDENCIES += lua + +# liblua uses dlopen when dynamically linked +ifneq ($(BR2_STATIC_LIBS),y) +HASERL_CONF_ENV += LIBS="-ldl" +endif + +else +HASERL_CONF_OPTS += --without-lua +endif + +define HASERL_REMOVE_EXAMPLES + rm -rf $(TARGET_DIR)/usr/share/haserl +endef + +HASERL_POST_INSTALL_TARGET_HOOKS += HASERL_REMOVE_EXAMPLES + +$(eval $(autotools-package)) diff --git a/package/haveged/Config.in b/package/haveged/Config.in new file mode 100644 index 00000000..0e49a2db --- /dev/null +++ b/package/haveged/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HAVEGED + bool "haveged" + depends on BR2_USE_MMU # fork() + help + The haveged project is an attempt to provide an easy-to-use, + unpredictable random number generator based upon an adaptation + of the HAVEGE algorithm. + + http://www.issihosts.com/haveged/ diff --git a/package/haveged/S21haveged b/package/haveged/S21haveged new file mode 100644 index 00000000..4b6e6ced --- /dev/null +++ b/package/haveged/S21haveged @@ -0,0 +1,23 @@ +#!/bin/sh + +case "$1" in + start) + printf "Starting haveged: " + start-stop-daemon -S -x /usr/sbin/haveged -- -w 1024 -r 0 + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping haveged: " + start-stop-daemon -K -x /usr/sbin/haveged + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart|reload) + $0 stop + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit 0 diff --git a/package/haveged/haveged.hash b/package/haveged/haveged.hash new file mode 100644 index 00000000..61bf6cc9 --- /dev/null +++ b/package/haveged/haveged.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b835fa02b52ee7d06276e028571cadcb14d08f5e5a4b5767adf81451f70561c7 haveged-1.9.18.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/haveged/haveged.mk b/package/haveged/haveged.mk new file mode 100644 index 00000000..fbf72a96 --- /dev/null +++ b/package/haveged/haveged.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# haveged +# +################################################################################ + +HAVEGED_VERSION = 1.9.18 +HAVEGED_SITE = $(call github,jirka-h,haveged,v$(HAVEGED_VERSION)) +HAVEGED_LICENSE = GPL-3.0+ +HAVEGED_LICENSE_FILES = COPYING +HAVEGED_SELINUX_MODULES = entropyd + +# '--disable-init' as buildroot ships its own sysv/systemd init files +HAVEGED_CONF_OPTS = \ + --enable-daemon \ + --disable-diagnostic \ + --disable-init \ + --disable-nistest \ + --disable-enttest \ + --disable-olt \ + --enable-tune + +ifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y) +HAVEGED_CONF_OPTS += --enable-clock_gettime +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +HAVEGED_CONF_OPTS += --enable-threads +else +HAVEGED_CONF_OPTS += --disable-threads +endif + +define HAVEGED_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/haveged/S21haveged \ + $(TARGET_DIR)/etc/init.d/S21haveged +endef + +define HAVEGED_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/haveged/haveged.service \ + $(TARGET_DIR)/usr/lib/systemd/system/haveged.service +endef + +$(eval $(autotools-package)) diff --git a/package/haveged/haveged.service b/package/haveged/haveged.service new file mode 100644 index 00000000..5a2336b0 --- /dev/null +++ b/package/haveged/haveged.service @@ -0,0 +1,22 @@ +[Unit] +# inspiration from upstream init.d/service.fedora +Description=Entropy Daemon based on the HAVEGE algorithm +Documentation=man:haveged(8) http://www.issihosts.com/haveged/ +DefaultDependencies=no +# This would wait for filesystems, but we only need /dev/random, which +# is certainly available after systemd initialised +# After=systemd-tmpfiles-setup-dev.service +Before=sysinit.target shutdown.target systemd-journald.service + +[Service] +ExecStart=/usr/sbin/haveged -w 1024 -v 1 --Foreground +Restart=always +SuccessExitStatus=137 143 + +# Only simple isolation methods that don't pull in dependencies +CapabilityBoundingSet=CAP_SYS_ADMIN +SecureBits=noroot-locked +ProtectSystem=full + +[Install] +WantedBy=sysinit.target diff --git a/package/hawktracer/Config.in b/package/hawktracer/Config.in new file mode 100644 index 00000000..bee9c27b --- /dev/null +++ b/package/hawktracer/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_HAWKTRACER + bool "hawktracer" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + help + HawkTracer is a highly portable, low-overhead, configurable + profiling tool built in Amazon Video for getting performance + metrics from low-end devices. + + https://hawktracer.github.io/ + +if BR2_PACKAGE_HAWKTRACER + +config BR2_PACKAGE_HAWKTRACER_TCP_LISTENER + bool "TCP listener" + default y + depends on BR2_TOOLCHAIN_HAS_THREADS + +comment "TCP listener needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +endif + +comment "hawktracer needs a toolchain w/ C++, gcc >= 4.8" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 diff --git a/package/hawktracer/hawktracer.hash b/package/hawktracer/hawktracer.hash new file mode 100644 index 00000000..585b612c --- /dev/null +++ b/package/hawktracer/hawktracer.hash @@ -0,0 +1,3 @@ +# Computed locally +sha256 12a689a1cfb2ae25ad777b1b2275dbba5cd64905627b0a20d17d6e26de003cef hawktracer-0.11.0.tar.gz +sha256 2f377333e64ad08ad3afec8ed6c2c96ced2a6d7d67443eb2784a931bb7b3fd59 LICENSE diff --git a/package/hawktracer/hawktracer.mk b/package/hawktracer/hawktracer.mk new file mode 100644 index 00000000..8e722080 --- /dev/null +++ b/package/hawktracer/hawktracer.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# hawktracer +# +################################################################################ + +HAWKTRACER_VERSION = 0.11.0 +HAWKTRACER_SITE = $(call github,amzn,hawktracer,v$(HAWKTRACER_VERSION)) +HAWKTRACER_LICENSE = MIT +HAWKTRACER_LICENSE_FILES = LICENSE +HAWKTRACER_INSTALL_STAGING = YES + +HAWKTRACER_CONF_OPTS = \ + -DENABLE_ASAN=OFF \ + -DENABLE_TESTS=OFF \ + -DENABLE_CODE_COVERAGE=OFF \ + -DENABLE_BENCHMARKS=OFF \ + -DENABLE_DOC=OFF \ + -DENABLE_PYTHON_BINDINGS=OFF \ + -DENABLE_MAINTAINER_MODE=OFF \ + -DENABLE_RELEASE_MODE=OFF \ + -DENABLE_CLIENT=OFF \ + -DENABLE_EXAMPLES=OFF + +ifeq ($(BR2_STATIC_LIBS),y) +HAWKTRACER_CONF_OPTS += -DBUILD_STATIC_LIB=ON +else +HAWKTRACER_CONF_OPTS += -DBUILD_STATIC_LIB=OFF +endif + +ifeq ($(BR2_PACKAGE_HAWKTRACER_TCP_LISTENER),y) +HAWKTRACER_CONF_OPTS += -DENABLE_TCP_LISTENER=ON +else +HAWKTRACER_CONF_OPTS += -DENABLE_TCP_LISTENER=OFF +endif + +# Enable threads support if supported by toolchain +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +HAWKTRACER_CONF_OPTS += \ + -DENABLE_CPU_USAGE_FEATURE=ON \ + -DENABLE_THREADS=ON +else +HAWKTRACER_CONF_OPTS += \ + -DENABLE_CPU_USAGE_FEATURE=OFF \ + -DENABLE_THREADS=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/hddtemp/Config.in b/package/hddtemp/Config.in new file mode 100644 index 00000000..0e022524 --- /dev/null +++ b/package/hddtemp/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_HDDTEMP + bool "hddtemp" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBEXECINFO if !BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + hddtemp is a small utility that gives you the temperature of + your hard drive by reading S.M.A.R.T. informations, for drives + that support this feature. + + https://github.com/vitlav/hddtemp + http://www.guzu.net/linux/hddtemp.php + +comment "hddtemp needs dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/package/hddtemp/hddtemp.hash b/package/hddtemp/hddtemp.hash new file mode 100644 index 00000000..cd82d7f8 --- /dev/null +++ b/package/hddtemp/hddtemp.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 592322c64f0d5f035132249e3d051b752f5d24867514522a17285d5e72d21075 hddtemp-0.4.3.tar.gz +sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 GPL-2 diff --git a/package/hddtemp/hddtemp.mk b/package/hddtemp/hddtemp.mk new file mode 100644 index 00000000..42dcb3d4 --- /dev/null +++ b/package/hddtemp/hddtemp.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# hddtemp +# +################################################################################ + +HDDTEMP_VERSION = 0.4.3 +HDDTEMP_SITE = $(call github,vitlav,hddtemp,v$(HDDTEMP_VERSION)) +HDDTEMP_LICENSE = GPLv2 +HDDTEMP_LICENSE_FILES = GPL-2 + +# Fetched from Github with no configure script +HDDTEMP_AUTORECONF = YES +HDDTEMP_AUTOPOINT = YES + +HDDTEMP_DB_PATH = /usr/share/misc/hddtemp.db +HDDTEMP_CONF_OPTS = --with-db-path=$(HDDTEMP_DB_PATH) +HDDTEMP_CONF_ENV = LIBS="$(HDDTEMP_LIBS) $(TARGET_NLS_LIBS)" +HDDTEMP_DEPENDENCIES += $(TARGET_NLS_DEPENDENCIES) + +ifeq ($(BR2_PACKAGE_LIBEXECINFO),y) +HDDTEMP_DEPENDENCIES += libexecinfo +HDDTEMP_LIBS += -lexecinfo +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +HDDTEMP_DEPENDENCIES += libiconv +HDDTEMP_LIBS += -liconv +endif + +define HDDTEMP_INSTALL_HDDTEMP_DB + $(INSTALL) -D $(@D)/data/hddtemp.db $(TARGET_DIR)$(HDDTEMP_DB_PATH) +endef +HDDTEMP_POST_INSTALL_TARGET_HOOKS += HDDTEMP_INSTALL_HDDTEMP_DB + +$(eval $(autotools-package)) diff --git a/package/hdparm/Config.in b/package/hdparm/Config.in new file mode 100644 index 00000000..17ecb65c --- /dev/null +++ b/package/hdparm/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HDPARM + bool "hdparm" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + hdparm - get/set ATA/SATA drive parameters under Linux + + https://sourceforge.net/projects/hdparm/ diff --git a/package/hdparm/hdparm.hash b/package/hdparm/hdparm.hash new file mode 100644 index 00000000..1d735852 --- /dev/null +++ b/package/hdparm/hdparm.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/hdparm/files/hdparm/ +sha1 3bc0916493f2f485c6371ec0fd16418d0e1fa636 hdparm-9.65.tar.gz +# Locally computed +sha256 d14929f910d060932e717e9382425d47c2e7144235a53713d55a94f7de535a4b hdparm-9.65.tar.gz +sha256 eae572b06d2733f5c65fbe81680ce2b8a109afee2bdd1a161343c772af0e82e1 LICENSE.TXT diff --git a/package/hdparm/hdparm.mk b/package/hdparm/hdparm.mk new file mode 100644 index 00000000..3c8b77e5 --- /dev/null +++ b/package/hdparm/hdparm.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# hdparm +# +################################################################################ + +HDPARM_VERSION = 9.65 +HDPARM_SITE = https://downloads.sourceforge.net/project/hdparm/hdparm +HDPARM_LICENSE = BSD-Style +HDPARM_LICENSE_FILES = LICENSE.TXT + +define HDPARM_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + STRIP=/bin/true +endef + +define HDPARM_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/hdparm $(TARGET_DIR)/sbin/hdparm +endef + +$(eval $(generic-package)) diff --git a/package/heimdal/0001-Use-perl-module-JSON-PP-part-of-core-instead-of-JSON.patch b/package/heimdal/0001-Use-perl-module-JSON-PP-part-of-core-instead-of-JSON.patch new file mode 100644 index 00000000..7323ac70 --- /dev/null +++ b/package/heimdal/0001-Use-perl-module-JSON-PP-part-of-core-instead-of-JSON.patch @@ -0,0 +1,57 @@ +From f6fdb0a28e3bfcb3fd0aa1c81ad59c5411c0d660 Mon Sep 17 00:00:00 2001 +From: Andrew Sim +Date: Sat, 10 Jun 2023 09:00:24 +0200 +Subject: [PATCH] Use perl module JSON:PP, part of core, instead of JSON + package + +This patch removes the need for an external package. + +Ported from +https://github.com/openwrt/packages/blob/master/net/samba4/patches/105-perl-json-pp.patch +https://github.com/openwrt/packages/commit/402f4ba4eff65b80a9deaa6085256112bec4d67b#diff-208d4e0345c9d29fbec23d6f655ba794afd3052f5cb8dd73944db72ce81b847b + +Upstream: https://github.com/heimdal/heimdal/pull/1176 + +Signed-off-by: Bernd Kuhls +--- + cf/make-proto.pl | 4 ++-- + configure.ac | 1 - + 2 files changed, 2 insertions(+), 3 deletions(-) + +diff --git a/cf/make-proto.pl b/cf/make-proto.pl +index 36a040ce6..4af21916b 100644 +--- a/cf/make-proto.pl ++++ b/cf/make-proto.pl +@@ -4,7 +4,7 @@ + use Getopt::Std; + use File::Compare; + +-use JSON; ++use JSON::PP + + my $comment = 0; + my $doxygen = 0; +@@ -70,7 +70,7 @@ if($opt_x) { + my $EXP; + local $/; + open(EXP, '<', $opt_x) || die "open ${opt_x}"; +- my $obj = JSON->new->utf8->decode(); ++ my $obj = JSON::PP->new->utf8->decode(); + close $EXP; + + foreach my $x (keys %$obj) { +diff --git a/configure.ac b/configure.ac +index cedb4c01f..cecd030e6 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -56,7 +56,6 @@ if ! test -f "$srcdir/lib/asn1/der-protos.h" || + AC_KRB_PROG_PERL + AC_KRB_PERL_MOD(Getopt::Std) + AC_KRB_PERL_MOD(File::Compare) +- AC_KRB_PERL_MOD(JSON) + fi + + AC_KRB_PROG_YACC +-- +2.39.2 + diff --git a/package/heimdal/heimdal.hash b/package/heimdal/heimdal.hash new file mode 100644 index 00000000..250ddbbd --- /dev/null +++ b/package/heimdal/heimdal.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 2576c5e2d793db53c86e108fd117b278437bb02d6c6db2bec4d1b86958f1980a heimdal-f4faaeaba371fff3f8d1bc14389f5e6d70ca8e17.tar.gz +sha256 0c4b07bf5b98f7a1d01f8e60722d6c6747ef052c2aa6d2043daf690d4e1b0a7f LICENSE diff --git a/package/heimdal/heimdal.mk b/package/heimdal/heimdal.mk new file mode 100644 index 00000000..786d94a1 --- /dev/null +++ b/package/heimdal/heimdal.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# heimdal +# +################################################################################ + +HEIMDAL_VERSION = f4faaeaba371fff3f8d1bc14389f5e6d70ca8e17 +HEIMDAL_SITE = $(call github,heimdal,heimdal,$(HEIMDAL_VERSION)) +HOST_HEIMDAL_DEPENDENCIES = host-e2fsprogs host-ncurses host-pkgconf +HOST_HEIMDAL_AUTORECONF = YES +HEIMDAL_INSTALL_STAGING = YES +# static because of -fPIC issues with e2fsprogs on x86_64 host +HOST_HEIMDAL_CONF_OPTS = \ + --disable-shared \ + --enable-static \ + --without-openldap \ + --without-capng \ + --with-db-type-preference= \ + --without-sqlite3 \ + --without-libintl \ + --without-openssl \ + --without-berkeley-db \ + --without-readline \ + --without-libedit \ + --without-hesiod \ + --without-x \ + --disable-mdb-db \ + --disable-ndbm-db \ + --disable-heimdal-documentation + +# Don't use compile_et from e2fsprogs as it raises a build failure with samba4 +HOST_HEIMDAL_CONF_ENV = ac_cv_prog_COMPILE_ET=no MAKEINFO=true +HEIMDAL_LICENSE = BSD-3-Clause +HEIMDAL_LICENSE_FILES = LICENSE +HEIMDAL_CPE_ID_VALID = YES + +# We need compile_et for samba4 +define HOST_HEIMDAL_INSTALL_COMPILE_ET + $(INSTALL) -m 0755 $(@D)/lib/com_err/compile_et \ + $(HOST_DIR)/bin/compile_et +endef + +HOST_HEIMDAL_POST_INSTALL_HOOKS += \ + HOST_HEIMDAL_INSTALL_COMPILE_ET + +$(eval $(host-autotools-package)) diff --git a/package/heirloom-mailx/0001-fix-libressl-support.patch b/package/heirloom-mailx/0001-fix-libressl-support.patch new file mode 100644 index 00000000..b54aaaf7 --- /dev/null +++ b/package/heirloom-mailx/0001-fix-libressl-support.patch @@ -0,0 +1,54 @@ +From aad28d30af6c3a74c522dd61943788e908860c84 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Fri, 4 Aug 2017 07:22:47 -0400 +Subject: [PATCH] fix libressl support + +heirloom-mailx has two small issues when compiling against LibreSSL: + - RAND_egd is used (LibreSSL does not support RAND_egd) + Solution: "Guard" the code calling RAND_egd + + - SSLv3_client_method function is used (LibreSSL does not support SSLv3) + Solution: "Guard" the code with #ifndef OPENSSL_NO_SSL3 + +Signed-off-by: Adam Duskett +--- + openssl.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/openssl.c b/openssl.c +index 44fe4e5..c4a1bb7 100644 +--- a/openssl.c ++++ b/openssl.c +@@ -137,11 +137,13 @@ ssl_rand_init(void) + + if ((cp = value("ssl-rand-egd")) != NULL) { + cp = expand(cp); ++#ifndef OPENSSL_NO_EGD + if (RAND_egd(cp) == -1) { + fprintf(stderr, catgets(catd, CATSET, 245, + "entropy daemon at \"%s\" not available\n"), + cp); + } else ++#endif + state = 1; + } else if ((cp = value("ssl-rand-file")) != NULL) { + cp = expand(cp); +@@ -216,10 +218,15 @@ ssl_select_method(const char *uhp) + + cp = ssl_method_string(uhp); + if (cp != NULL) { ++ #ifndef OPENSSL_NO_SSL3 + if (equal(cp, "ssl3")) + method = SSLv3_client_method(); + else if (equal(cp, "tls1")) + method = TLSv1_client_method(); ++ #else ++ if (equal(cp, "tls1")) ++ method = TLSv1_client_method(); ++ #endif + else { + fprintf(stderr, catgets(catd, CATSET, 244, + "Invalid SSL method \"%s\"\n"), cp); +-- +2.13.3 + diff --git a/package/heirloom-mailx/Config.in b/package/heirloom-mailx/Config.in new file mode 100644 index 00000000..c5b0bcbe --- /dev/null +++ b/package/heirloom-mailx/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_HEIRLOOM_MAILX + bool "heirloom-mailx" + # uses fork() + depends on BR2_USE_MMU + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_RC2 if BR2_PACKAGE_LIBOPENSSL + help + Heirloom mailx (previously known as nail) is a mail user + agent for Unix systems. + + It can be used as a command-line mail reader, but also more + importantly on embedded systems, as a mail composition + program and SMTP client, in order to send e-mail from shell + scripts. It supports SMTP authentication (login, plain, + cram-md5), SMTPS, MIME encoding of attachements, and more. + + http://heirloom.sourceforge.net/mailx.html + +comment "heirloom-mailx needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + depends on BR2_USE_MMU diff --git a/package/heirloom-mailx/heirloom-mailx.hash b/package/heirloom-mailx/heirloom-mailx.hash new file mode 100644 index 00000000..c42f9b6d --- /dev/null +++ b/package/heirloom-mailx/heirloom-mailx.hash @@ -0,0 +1,5 @@ +# From http://snapshot.debian.org/archive/debian/20150815T155609Z/pool/main/h/heirloom-mailx/heirloom-mailx_12.5-5.dsc +sha256 015ba4209135867f37a0245d22235a392b8bbed956913286b887c2e2a9a421ad heirloom-mailx_12.5.orig.tar.gz +sha256 0140cef831f966cf65a0a6ba2ed4eef4f2bfb402b7b18db7307bc42e63328ce6 heirloom-mailx_12.5-5.debian.tar.xz +# Locally computed +sha256 5ddc00aed98a0cf75fc7edfd9f3aeb1e919ae0ad5e9ff55d61f643d62d802b07 COPYING diff --git a/package/heirloom-mailx/heirloom-mailx.mk b/package/heirloom-mailx/heirloom-mailx.mk new file mode 100644 index 00000000..063fccf5 --- /dev/null +++ b/package/heirloom-mailx/heirloom-mailx.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# heirloom-mailx +# +################################################################################ + +HEIRLOOM_MAILX_VERSION = 12.5 +HEIRLOOM_MAILX_SOURCE = heirloom-mailx_$(HEIRLOOM_MAILX_VERSION).orig.tar.gz +HEIRLOOM_MAILX_SITE = http://snapshot.debian.org/archive/debian/20150815T155609Z/pool/main/h/heirloom-mailx +HEIRLOOM_MAILX_PATCH = heirloom-mailx_$(HEIRLOOM_MAILX_VERSION)-5.debian.tar.xz +HEIRLOOM_MAILX_LICENSE = BSD-4-Clause, Bellcore (base64), OpenVision (imap_gssapi), RSA Data Security (md5), Network Working Group (hmac), MPL-1.1 (nss) +HEIRLOOM_MAILX_LICENSE_FILES = COPYING +HEIRLOOM_MAILX_CPE_ID_VENDOR = heirloom +HEIRLOOM_MAILX_CPE_ID_PRODUCT = mailx +# 0011-outof-Introduce-expandaddr-flag.patch in the Debian patches +HEIRLOOM_MAILX_IGNORE_CVES += CVE-2014-7844 +# 0014-globname-Invoke-wordexp-with-WRDE_NOCMD.patch in the Debian patches +HEIRLOOM_MAILX_IGNORE_CVES += CVE-2004-2771 + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +HEIRLOOM_MAILX_DEPENDENCIES += openssl +endif + +define HEIRLOOM_MAILX_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) $(SHELL) ./makeconfig) +endef + +HEIRLOOM_MAILX_CFLAGS = $(TARGET_CFLAGS) + +# -fPIC is needed to build with NIOS2 toolchains. +HEIRLOOM_MAILX_CFLAGS += -fPIC + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_101916),y) +HEIRLOOM_MAILX_CFLAGS += -O0 +endif + +define HEIRLOOM_MAILX_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) \ + CFLAGS="$(HEIRLOOM_MAILX_CFLAGS)" \ + -C $(@D) +endef + +define HEIRLOOM_MAILX_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + PREFIX=/usr \ + UCBINSTALL=$(INSTALL) \ + STRIP=/bin/true \ + DESTDIR=$(TARGET_DIR) \ + install +endef + +$(eval $(generic-package)) diff --git a/package/hiawatha/Config.in b/package/hiawatha/Config.in new file mode 100644 index 00000000..8bcee3f0 --- /dev/null +++ b/package/hiawatha/Config.in @@ -0,0 +1,37 @@ +comment "hiawatha needs a 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 + +config BR2_PACKAGE_HIAWATHA + bool "hiawatha" + # needs fork() + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # __sync_*_4 intrisics + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_ZLIB + help + Hiawatha is a webserver for Unix and has been built with + security in mind. This resulted in a highly secure + webserver, in both code and features. + + This webserver runs on Linux, BSD, MacOS X and + Windows. Although it can run any kind of CGI / FastCGI + application, it has been optimized for usage with PHP. Most + well known PHP frameworks and CMS applications have been + tested with Hiawatha and ran without a problem. Hiawatha + supports many web and HTTP features such as CGI/FastCGI, + HTTP authentication, virtual host support, request + pipelining, keep alive connections, URL rewriting and many + more. + + https://hiawatha.leisink.net/ + +if BR2_PACKAGE_HIAWATHA + +config BR2_PACKAGE_HIAWATHA_SSL + bool "hiawatha TLS support" + +endif diff --git a/package/hiawatha/hiawatha.hash b/package/hiawatha/hiawatha.hash new file mode 100644 index 00000000..1ee94ee6 --- /dev/null +++ b/package/hiawatha/hiawatha.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 99c64f76927f93469f062ab76b74eb79a397ea4be12da86bf746b2bb57cf1bc5 hiawatha-11.2.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 LICENSE diff --git a/package/hiawatha/hiawatha.mk b/package/hiawatha/hiawatha.mk new file mode 100644 index 00000000..4c94f006 --- /dev/null +++ b/package/hiawatha/hiawatha.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# hiawatha +# +################################################################################ + +HIAWATHA_VERSION = 11.2 +HIAWATHA_SITE = https://hiawatha.leisink.net/files +HIAWATHA_DEPENDENCIES = zlib +HIAWATHA_LICENSE = GPL-2.0 +HIAWATHA_LICENSE_FILES = LICENSE +HIAWATHA_CPE_ID_VENDOR = hiawatha-webserver + +# Disable system mbedtls as hiawatha needs mbedtls 3.x +HIAWATHA_CONF_OPTS = \ + -DINSTALL_MBEDTLS_HEADERS=OFF \ + -DUSE_SYSTEM_MBEDTLS=OFF \ + -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) -std=c99" \ + -DENABLE_TOOLKIT=OFF \ + -DCONFIG_DIR=/etc/hiawatha \ + -DLOG_DIR=/var/log \ + -DPID_DIR=/var/run \ + -DWEBROOT_DIR=/var/www/hiawatha \ + -DWORK_DIR=/var/lib/hiawatha + +define HIAWATHA_MBEDTLS_DISABLE_ASM + $(SED) '/^#define MBEDTLS_AESNI_C/d' \ + $(@D)/mbedtls/include/mbedtls/mbedtls_config.h + $(SED) '/^#define MBEDTLS_HAVE_ASM/d' \ + $(@D)/mbedtls/include/mbedtls/mbedtls_config.h + $(SED) '/^#define MBEDTLS_PADLOCK_C/d' \ + $(@D)/mbedtls/include/mbedtls/mbedtls_config.h +endef + +# ARM in thumb mode breaks debugging with asm optimizations +# Microblaze asm optimizations are broken in general +# MIPS R6 asm is not yet supported +ifeq ($(BR2_ENABLE_DEBUG)$(BR2_ARM_INSTRUCTIONS_THUMB)$(BR2_ARM_INSTRUCTIONS_THUMB2),yy) +HIAWATHA_POST_CONFIGURE_HOOKS += HIAWATHA_MBEDTLS_DISABLE_ASM +else ifeq ($(BR2_microblaze)$(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6),y) +HIAWATHA_POST_CONFIGURE_HOOKS += HIAWATHA_MBEDTLS_DISABLE_ASM +endif + +ifeq ($(BR2_PACKAGE_HIAWATHA_SSL),y) +HIAWATHA_CONF_OPTS += -DENABLE_TLS=ON +else +HIAWATHA_CONF_OPTS += -DENABLE_TLS=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +HIAWATHA_DEPENDENCIES += libxcrypt +endif + +ifeq ($(BR2_PACKAGE_LIBXSLT),y) +HIAWATHA_CONF_OPTS += -DENABLE_XSLT=ON +HIAWATHA_DEPENDENCIES += libxslt +else +HIAWATHA_CONF_OPTS += -DENABLE_XSLT=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/hicolor-icon-theme/Config.in b/package/hicolor-icon-theme/Config.in new file mode 100644 index 00000000..5ef2cd22 --- /dev/null +++ b/package/hicolor-icon-theme/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_HICOLOR_ICON_THEME + bool "hicolor icon theme" + help + Freedesktop Hicolor icon theme + + This is the fallback icon theme, which only creates the + standard directory structure for storing icons of third-party + applications (i.e. the ones not available in usual icon + themes). + + https://www.freedesktop.org/wiki/Software/icon-theme/ diff --git a/package/hicolor-icon-theme/hicolor-icon-theme.hash b/package/hicolor-icon-theme/hicolor-icon-theme.hash new file mode 100644 index 00000000..ec9635f0 --- /dev/null +++ b/package/hicolor-icon-theme/hicolor-icon-theme.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 317484352271d18cbbcfac3868eab798d67fff1b8402e740baa6ff41d588a9d8 hicolor-icon-theme-0.17.tar.xz +sha256 b0a64377d4ee87b7dbcf418ce4fb33ec3b2d7081b6732890e4af06b8118c4526 COPYING diff --git a/package/hicolor-icon-theme/hicolor-icon-theme.mk b/package/hicolor-icon-theme/hicolor-icon-theme.mk new file mode 100644 index 00000000..088aecf3 --- /dev/null +++ b/package/hicolor-icon-theme/hicolor-icon-theme.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# hicolor-icon-theme +# +################################################################################ + +HICOLOR_ICON_THEME_VERSION = 0.17 +HICOLOR_ICON_THEME_SITE = http://icon-theme.freedesktop.org/releases +HICOLOR_ICON_THEME_SOURCE = hicolor-icon-theme-$(HICOLOR_ICON_THEME_VERSION).tar.xz +HICOLOR_ICON_THEME_LICENSE = GPL-2.0 +HICOLOR_ICON_THEME_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/hidapi/Config.in b/package/hidapi/Config.in new file mode 100644 index 00000000..1d3c86b6 --- /dev/null +++ b/package/hidapi/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_HIDAPI + bool "hidapi" + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBGUDEV + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + # runtime UTF conversion support + select BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY if BR2_TOOLCHAIN_USES_GLIBC + help + HIDAPI is a multi-platform library which allows an application + to interface with USB and Bluetooth HID-Class devices on + Windows, Linux, and Mac OS X. + + http://github.com/libusb/hidapi/ + +comment "hidapi needs udev /dev management and a toolchain w/ NPTL, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + !BR2_PACKAGE_HAS_UDEV || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/hidapi/hidapi.hash b/package/hidapi/hidapi.hash new file mode 100644 index 00000000..cc2d1321 --- /dev/null +++ b/package/hidapi/hidapi.hash @@ -0,0 +1,6 @@ +# Locally calculated +sha256 a5714234abe6e1f53647dd8cba7d69f65f71c558b7896ed218864ffcf405bcbd hidapi-0.14.0.tar.gz +sha256 7d3b087c34f35d4d538e3bcddd1ff8f66e92f9ef336881999482800ddf840913 LICENSE.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE-gpl3.txt +sha256 30eb1bef29b46f8ba7ab8b416035dbd93cb034a45481dd97815b944284582cd2 LICENSE-bsd.txt +sha256 fb5436aa63d1b71a8dfbf74ecaf1a5b4e1ec4df7f80074d11fec99284f69ca5f LICENSE-orig.txt diff --git a/package/hidapi/hidapi.mk b/package/hidapi/hidapi.mk new file mode 100644 index 00000000..9f5c0a3d --- /dev/null +++ b/package/hidapi/hidapi.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# hidapi +# +################################################################################ + +HIDAPI_VERSION = 0.14.0 +HIDAPI_SITE = $(call github,libusb,hidapi,hidapi-$(HIDAPI_VERSION)) +HIDAPI_INSTALL_STAGING = YES +# No configure provided, so we need to autoreconf. +HIDAPI_AUTORECONF = YES +HIDAPI_LICENSE = GPL-3.0 or BSD-3-Clause or HIDAPI license +HIDAPI_LICENSE_FILES = LICENSE.txt LICENSE-gpl3.txt LICENSE-bsd.txt LICENSE-orig.txt + +HIDAPI_DEPENDENCIES = libusb libgudev + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +HIDAPI_DEPENDENCIES += libiconv +HIDAPI_CONF_ENV += LIBS="-liconv" +endif + +$(eval $(autotools-package)) diff --git a/package/highway/Config.in b/package/highway/Config.in new file mode 100644 index 00000000..f4cef30e --- /dev/null +++ b/package/highway/Config.in @@ -0,0 +1,34 @@ +config BR2_PACKAGE_HIGHWAY + bool "highway" + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_INSTALL_LIBSTDCPP + # For gcc bug 58969, see: + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58969 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++11, GCC_BUG_58969 + help + Highway is a C++ library that provides portable SIMD/vector + intrinsics. + + https://github.com/google/highway + +if BR2_PACKAGE_HIGHWAY + +config BR2_PACKAGE_HIGHWAY_CONTRIB + bool "Enable Contrib" + help + Build Highway contrib library which contains extra + SIMD-related utilities: an image class with aligned rows, a + math library (16 functions already implemented, mostly + trigonometry), and functions for computing dot products and + sorting. + +config BR2_PACKAGE_HIGHWAY_EXAMPLES + bool "Enable Examples" + help + Build Highway examples + +endif + +comment "highway needs a toolchain w/ C++, gcc >= 7" + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_7 diff --git a/package/highway/highway.hash b/package/highway/highway.hash new file mode 100644 index 00000000..5addf50e --- /dev/null +++ b/package/highway/highway.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 7e0be78b8318e8bdbf6fa545d2ecb4c90f947df03f7aadc42c1967f019e63343 highway-1.2.0.tar.gz +sha256 43070e2d4e532684de521b885f385d0841030efa2b1a20bafb76133a5e1379c1 LICENSE +sha256 d25e82e26acd42ca3ccc9993622631163425b869b9e16284226d534cff6470f2 LICENSE-BSD3 diff --git a/package/highway/highway.mk b/package/highway/highway.mk new file mode 100644 index 00000000..a74bc90d --- /dev/null +++ b/package/highway/highway.mk @@ -0,0 +1,57 @@ +################################################################################ +# +# highway +# +################################################################################ + +HIGHWAY_VERSION = 1.2.0 +HIGHWAY_SITE = $(call github,google,highway,$(HIGHWAY_VERSION)) +HIGHWAY_LICENSE = Apache-2.0 or BSD-3-Clause +HIGHWAY_LICENSE_FILES = LICENSE LICENSE-BSD3 +HIGHWAY_INSTALL_STAGING = YES + +HIGHWAY_CXXFLAGS = $(TARGET_CXXFLAGS) + +ifeq ($(BR2_PACKAGE_HIGHWAY_CONTRIB),y) +HIGHWAY_CONF_OPTS += -DHWY_ENABLE_CONTRIB=ON +else +HIGHWAY_CONF_OPTS += -DHWY_ENABLE_CONTRIB=OFF +endif + +ifeq ($(BR2_PACKAGE_HIGHWAY_EXAMPLES),y) +HIGHWAY_CONF_OPTS += -DHWY_ENABLE_EXAMPLES=ON +# Examples are not installed by cmake. This binary can be useful for +# quick testing and debug. +define HIGHWAY_INSTALL_EXAMPLES + $(INSTALL) -m 0755 \ + $(@D)/examples/hwy_benchmark \ + $(TARGET_DIR)/usr/bin/hwy_benchmark +endef +HIGHWAY_POST_INSTALL_TARGET_HOOKS += HIGHWAY_INSTALL_EXAMPLES +else +HIGHWAY_CONF_OPTS += -DHWY_ENABLE_EXAMPLES=OFF +endif + +ifeq ($(BR2_ARM_FPU_VFPV4),y) +HIGHWAY_CONF_OPTS += -DHWY_CMAKE_ARM7=ON +else +# Highway Armv7 Neon support requires in fact vfpv4 / neon v2. When we +# are in a vfpv3 case (e.g. Cortex-A8, Cortex-A9) this flag need to be +# set to off. +HIGHWAY_CONF_OPTS += -DHWY_CMAKE_ARM7=OFF +endif + +ifeq ($(BR2_RISCV_32),y) +HIGHWAY_CONF_OPTS += -DHWY_CMAKE_RVV=OFF +endif + +# Workaround for gcc bug 104028 on m68k. +# See: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104028 +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_104028),y) +HIGHWAY_CXXFLAGS += -O0 +endif + +HIGHWAY_CONF_OPTS += \ + -DCMAKE_CXX_FLAGS="$(HIGHWAY_CXXFLAGS)" + +$(eval $(cmake-package)) diff --git a/package/hiredis/0001-CMakeList-add-option-to-not-install-NuGet-packaging.patch b/package/hiredis/0001-CMakeList-add-option-to-not-install-NuGet-packaging.patch new file mode 100644 index 00000000..dbe8bc0a --- /dev/null +++ b/package/hiredis/0001-CMakeList-add-option-to-not-install-NuGet-packaging.patch @@ -0,0 +1,51 @@ +From ff7a064490e0aacf718a5263b25b2ddaad0d245e Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sat, 20 Jan 2024 13:53:39 +0100 +Subject: [PATCH] CMakeList: add option to not install NuGet packaging + +The NuGet hiredis.target packaging description file is of no use on +systems that are not using NuGet, like Linux systems, and the spurious +presence of that file is not "clean". + +Add a cmake option to allow users to disable installation of that file. +As some people may have relied on that file to be installed, continue to +install it by default. + +Signed-off-by: Yann E. MORIN +Upstream: https://github.com/redis/hiredis/commit/ff7a064490e0aacf718a5263b25b2ddaad0d245e +--- + CMakeLists.txt | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index b7d6ee8..0fcf29b 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -6,6 +6,9 @@ OPTION(DISABLE_TESTS "If tests should be compiled or not" OFF) + OPTION(ENABLE_SSL_TESTS "Should we test SSL connections" OFF) + OPTION(ENABLE_EXAMPLES "Enable building hiredis examples" OFF) + OPTION(ENABLE_ASYNC_TESTS "Should we run all asynchronous API tests" OFF) ++# Historically, the NuGet file was always install; default ++# to ON for those who rely on that historical behaviour. ++OPTION(ENABLE_NUGET "Install NuGET packaging details" ON) + + MACRO(getVersionBit name) + SET(VERSION_REGEX "^#define ${name} (.+)$") +@@ -105,9 +108,11 @@ if (MSVC AND BUILD_SHARED_LIBS) + CONFIGURATIONS Debug RelWithDebInfo) + endif() + +-# For NuGet packages +-INSTALL(FILES hiredis.targets +- DESTINATION build/native) ++if (ENABLE_NUGET) ++ # For NuGet packages ++ INSTALL(FILES hiredis.targets ++ DESTINATION build/native) ++endif() + + INSTALL(FILES hiredis.h read.h sds.h async.h alloc.h sockcompat.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/hiredis) +-- +2.43.0 + diff --git a/package/hiredis/Config.in b/package/hiredis/Config.in new file mode 100644 index 00000000..16563553 --- /dev/null +++ b/package/hiredis/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_HIREDIS + bool "hiredis" + help + Minimalistic C client for Redis >= 1.2 + + It is minimalistic because it just adds minimal support for + the protocol, but at the same time it uses a high level + printf-alike API in order to make it much higher level than + otherwise suggested by its minimal code base and the lack of + explicit bindings for every Redis command. + + https://github.com/redis/hiredis diff --git a/package/hiredis/hiredis.hash b/package/hiredis/hiredis.hash new file mode 100644 index 00000000..16ee442d --- /dev/null +++ b/package/hiredis/hiredis.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 82ad632d31ee05da13b537c124f819eb88e18851d9cb0c30ae0552084811588c hiredis-1.2.0.tar.gz +sha256 dca05ce8fc87a8261783b4aed0deef8becc9350b6aa770bc714d0c1833b896eb COPYING diff --git a/package/hiredis/hiredis.mk b/package/hiredis/hiredis.mk new file mode 100644 index 00000000..86f35bd4 --- /dev/null +++ b/package/hiredis/hiredis.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# hiredis +# +################################################################################ + +HIREDIS_VERSION_MAJOR = 1.2 +HIREDIS_VERSION = $(HIREDIS_VERSION_MAJOR).0 +HIREDIS_SITE = $(call github,redis,hiredis,v$(HIREDIS_VERSION)) +HIREDIS_LICENSE = BSD-3-Clause +HIREDIS_LICENSE_FILES = COPYING +HIREDIS_CPE_ID_VENDOR = redislabs +HIREDIS_INSTALL_STAGING = YES + +# The package is a dependency to ccache so ccache cannot be a dependency +HOST_HIREDIS_ADD_CCACHE_DEPENDENCY = NO + +HIREDIS_CONF_OPTS = -DENABLE_NUGET=OFF -DDISABLE_TESTS=ON +HOST_HIREDIS_CONF_OPTS = -DENABLE_NUGET=OFF -DDISABLE_TESTS=ON -DENABLE_SSL=OFF + +# Set CMAKE_BUILD_TYPE to Release or the libraries will be suffixed with "d" +# resulting in build failures when linking. +HIREDIS_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release +HOST_HIREDIS_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release + +ifeq ($(BR2_PACKAGE_OPENSSL)$(BR2_TOOLCHAIN_HAS_THREADS),yy) +HIREDIS_CONF_OPTS += -DENABLE_SSL=ON +HIREDIS_DEPENDENCIES += openssl +else +HIREDIS_CONF_OPTS += -DENABLE_SSL=OFF +endif + +# We may be a ccache dependency, so we can't use ccache; reset the +# options set by the cmake infra. +HOST_HIREDIS_CONF_OPTS += \ + -UCMAKE_C_COMPILER_LAUNCHER \ + -UCMAKE_CXX_COMPILER_LAUNCHER + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/hostapd/Config.in b/package/hostapd/Config.in new file mode 100644 index 00000000..f4206cee --- /dev/null +++ b/package/hostapd/Config.in @@ -0,0 +1,116 @@ +config BR2_PACKAGE_HOSTAPD + bool "hostapd" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4 if BR2_PACKAGE_LIBOPENSSL + help + User space daemon for wireless access points. + + It implements IEEE 802.11 access point management, + IEEE 802.1X/WPA/WPA2/EAP authenticators, RADIUS client, + EAP server and RADIUS authentication server. + + http://w1.fi/hostapd/ + +if BR2_PACKAGE_HOSTAPD + +config BR2_PACKAGE_HOSTAPD_DRIVER_HOSTAP + bool "Enable hostap driver" + default y + select BR2_PACKAGE_HOSTAPD_HAS_WIFI_DRIVERS + help + Enable support for Host AP driver. + +config BR2_PACKAGE_HOSTAPD_DRIVER_NL80211 + bool "Enable nl80211 driver" + default y + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_LIBNL + select BR2_PACKAGE_HOSTAPD_HAS_WIFI_DRIVERS + help + Enable support for drivers using the nl80211 kernel interface. + +comment "nl80211 driver needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_HOSTAPD_DRIVER_WIRED + bool "Enable wired driver" + help + Enable support for wired authenticator. + +config BR2_PACKAGE_HOSTAPD_DRIVER_NONE + bool + default y + depends on !BR2_PACKAGE_HOSTAPD_DRIVER_HOSTAP + depends on !BR2_PACKAGE_HOSTAPD_DRIVER_NL80211 + depends on !BR2_PACKAGE_HOSTAPD_DRIVER_WIRED + +config BR2_PACKAGE_HOSTAPD_HAS_WIFI_DRIVERS + bool + +config BR2_PACKAGE_HOSTAPD_ACS + bool "Enable ACS" + default y + depends on BR2_PACKAGE_HOSTAPD_DRIVER_NL80211 + help + Enable support for standard ACS (Automatic Channel Selection). + Some propietary drivers use a custom algorithm which requires + channel to be set to '0' (which enables ACS in the config), + causing hostapd to use the standard one which doesn't work + for those cases. + +comment "ACS is currently only supported through the nl80211 driver" + depends on !BR2_PACKAGE_HOSTAPD_DRIVER_NL80211 + +config BR2_PACKAGE_HOSTAPD_EAP + bool "Enable EAP" + depends on !BR2_STATIC_LIBS + help + Enable support for EAP and RADIUS. + +comment "hostapd EAP needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_HOSTAPD_WPS + bool "Enable WPS" + help + Enable support for Wi-Fi Protected Setup. + +config BR2_PACKAGE_HOSTAPD_WPA3 + bool "Enable WPA3 support" + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + help + Enable WPA3 support including OWE, SAE, DPP + +config BR2_PACKAGE_HOSTAPD_VLAN + bool "Enable VLAN support" + default y + help + Enable support for VLANs. + +if BR2_PACKAGE_HOSTAPD_VLAN + +config BR2_PACKAGE_HOSTAPD_VLAN_DYNAMIC + bool "Enable dynamic VLAN support" + default y + help + Enable support for fully dynamic VLANs. + This enables hostapd to automatically create + bridge and VLAN interfaces if necessary. + +config BR2_PACKAGE_HOSTAPD_VLAN_NETLINK + bool "Use netlink-based API for VLAN operations" + default y + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_LIBNL + help + Use netlink-based kernel API for VLAN operations + instead of ioctl(). + +comment "netlink-based VLAN support needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +endif # BR2_PACKAGE_HOSTAPD_VLAN + +endif diff --git a/package/hostapd/hostapd.hash b/package/hostapd/hostapd.hash new file mode 100644 index 00000000..79215861 --- /dev/null +++ b/package/hostapd/hostapd.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2b3facb632fd4f65e32f4bf82a76b4b72c501f995a4f62e330219fe7aed1747a hostapd-2.11.tar.gz +sha256 f1b5992bbdd015c3ccb7faaadd62ef58ed821e15b9329bf2ceb27511ccc3f562 README diff --git a/package/hostapd/hostapd.mk b/package/hostapd/hostapd.mk new file mode 100644 index 00000000..3eda1c7e --- /dev/null +++ b/package/hostapd/hostapd.mk @@ -0,0 +1,156 @@ +################################################################################ +# +# hostapd +# +################################################################################ + +HOSTAPD_VERSION = 2.11 +HOSTAPD_SITE = http://w1.fi/releases +HOSTAPD_SUBDIR = hostapd +HOSTAPD_CONFIG = $(HOSTAPD_DIR)/$(HOSTAPD_SUBDIR)/.config +HOSTAPD_DEPENDENCIES = host-pkgconf +HOSTAPD_CFLAGS = $(TARGET_CFLAGS) +HOSTAPD_LICENSE = BSD-3-Clause +HOSTAPD_LICENSE_FILES = README + +HOSTAPD_CPE_ID_VENDOR = w1.fi +HOSTAPD_SELINUX_MODULES = hostapd + +HOSTAPD_CONFIG_ENABLE = \ + CONFIG_INTERNAL_LIBTOMMATH \ + CONFIG_DEBUG_FILE \ + CONFIG_DEBUG_SYSLOG + +HOSTAPD_CONFIG_DISABLE = + +# Try to use openssl if it's already available +ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) +HOSTAPD_DEPENDENCIES += libopenssl +HOSTAPD_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs openssl` +HOSTAPD_CONFIG_EDITS += 's/\#\(CONFIG_TLS=openssl\)/\1/' +else +HOSTAPD_CONFIG_DISABLE += CONFIG_EAP_PWD CONFIG_EAP_TEAP +HOSTAPD_CONFIG_EDITS += 's/\#\(CONFIG_TLS=\).*/\1internal/' +endif + +ifeq ($(BR2_PACKAGE_HOSTAPD_DRIVER_HOSTAP),) +HOSTAPD_CONFIG_DISABLE += CONFIG_DRIVER_HOSTAP +endif + +ifeq ($(BR2_PACKAGE_HOSTAPD_DRIVER_NL80211),) +HOSTAPD_CONFIG_DISABLE += CONFIG_DRIVER_NL80211 +endif + +ifeq ($(BR2_PACKAGE_HOSTAPD_DRIVER_WIRED),y) +HOSTAPD_CONFIG_ENABLE += CONFIG_DRIVER_WIRED +endif + +ifeq ($(BR2_PACKAGE_HOSTAPD_DRIVER_NONE),y) +HOSTAPD_CONFIG_ENABLE += CONFIG_DRIVER_NONE +endif + +# Add options for wireless drivers +ifeq ($(BR2_PACKAGE_HOSTAPD_HAS_WIFI_DRIVERS),y) +HOSTAPD_CONFIG_ENABLE += \ + CONFIG_HS20 \ + CONFIG_IEEE80211BE \ + CONFIG_IEEE80211AX \ + CONFIG_IEEE80211AC \ + CONFIG_IEEE80211N \ + CONFIG_IEEE80211R \ + CONFIG_INTERWORKING +endif + +ifeq ($(BR2_PACKAGE_HOSTAPD_ACS),y) +HOSTAPD_CONFIG_ENABLE += CONFIG_ACS +endif + +ifeq ($(BR2_PACKAGE_HOSTAPD_EAP),y) +HOSTAPD_CONFIG_ENABLE += \ + CONFIG_EAP \ + CONFIG_RADIUS_SERVER + +# Enable both TLS v1.1 (CONFIG_TLSV11) and v1.2 (CONFIG_TLSV12) +HOSTAPD_CONFIG_ENABLE += CONFIG_TLSV1 +else +HOSTAPD_CONFIG_DISABLE += CONFIG_EAP +HOSTAPD_CONFIG_ENABLE += \ + CONFIG_NO_ACCOUNTING \ + CONFIG_NO_RADIUS +endif + +ifeq ($(BR2_PACKAGE_HOSTAPD_WPS),y) +HOSTAPD_CONFIG_ENABLE += CONFIG_WPS +endif + +ifeq ($(BR2_PACKAGE_HOSTAPD_WPA3),y) +HOSTAPD_CONFIG_ENABLE += \ + CONFIG_DPP \ + CONFIG_SAE \ + CONFIG_SAE_PK \ + CONFIG_OWE +else +HOSTAPD_CONFIG_DISABLE += \ + CONFIG_DPP \ + CONFIG_SAE \ + CONFIG_SAE_PK \ + CONFIG_OWE +endif + +ifeq ($(BR2_PACKAGE_HOSTAPD_VLAN),) +HOSTAPD_CONFIG_ENABLE += CONFIG_NO_VLAN +endif + +ifeq ($(BR2_PACKAGE_HOSTAPD_VLAN_DYNAMIC),y) +HOSTAPD_CONFIG_ENABLE += \ + CONFIG_FULL_DYNAMIC_VLAN \ + NEED_LINUX_IOCTL +endif + +ifeq ($(BR2_PACKAGE_HOSTAPD_VLAN_NETLINK),y) +HOSTAPD_CONFIG_ENABLE += CONFIG_VLAN_NETLINK +endif + +# Options for building with libnl +ifeq ($(BR2_PACKAGE_LIBNL),y) +HOSTAPD_DEPENDENCIES += libnl +HOSTAPD_CFLAGS += -I$(STAGING_DIR)/usr/include/libnl3/ +HOSTAPD_CONFIG_ENABLE += CONFIG_LIBNL32 +# libnl-3 needs -lm (for rint) and -lpthread if linking statically +# And library order matters hence stick -lnl-3 first since it's appended +# in the hostapd Makefiles as in LIBS+=-lnl-3 ... thus failing +ifeq ($(BR2_STATIC_LIBS),y) +HOSTAPD_LIBS += -lnl-3 -lm -lpthread +endif +endif + +define HOSTAPD_CONFIGURE_CMDS + cp $(@D)/hostapd/defconfig $(HOSTAPD_CONFIG) + sed -i $(patsubst %,-e 's/^#\(%\)/\1/',$(HOSTAPD_CONFIG_ENABLE)) \ + $(patsubst %,-e 's/^\(%\)/#\1/',$(HOSTAPD_CONFIG_DISABLE)) \ + $(patsubst %,-e %,$(HOSTAPD_CONFIG_EDITS)) \ + $(HOSTAPD_CONFIG) + # set requested configuration options not listed in hostapd defconfig + for s in $(HOSTAPD_CONFIG_ENABLE) ; do \ + if ! grep -q "^$${s}" $(HOSTAPD_CONFIG); then \ + echo "$${s}=y" >> $(HOSTAPD_CONFIG) ; \ + fi \ + done +endef + +define HOSTAPD_BUILD_CMDS + $(TARGET_MAKE_ENV) CFLAGS="$(HOSTAPD_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" LIBS="$(HOSTAPD_LIBS)" \ + $(MAKE) CC="$(TARGET_CC)" -C $(@D)/$(HOSTAPD_SUBDIR) +endef + +define HOSTAPD_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/$(HOSTAPD_SUBDIR)/hostapd \ + $(TARGET_DIR)/usr/sbin/hostapd + $(INSTALL) -m 0755 -D $(@D)/$(HOSTAPD_SUBDIR)/hostapd_cli \ + $(TARGET_DIR)/usr/bin/hostapd_cli + $(INSTALL) -m 0644 -D $(@D)/$(HOSTAPD_SUBDIR)/hostapd.conf \ + $(TARGET_DIR)/etc/hostapd.conf +endef + +$(eval $(generic-package)) diff --git a/package/hplip/0001-build-use-pkg-config-to-discover-libusb.patch b/package/hplip/0001-build-use-pkg-config-to-discover-libusb.patch new file mode 100644 index 00000000..59b89a4a --- /dev/null +++ b/package/hplip/0001-build-use-pkg-config-to-discover-libusb.patch @@ -0,0 +1,45 @@ +From 1eed2b65eff4c66b80eab0ec46c6705de19bdb9d Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 21 Jan 2016 23:54:03 +0100 +Subject: [PATCH] build: use pkg-config to discover libusb + +This allows to remove hardcoded paths to libusb headers. + +Signed-off-by: Thomas Petazzoni +--- + Makefile.am | 4 ++-- + configure.in | 3 +-- + 2 files changed, 3 insertions(+), 4 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 73fed2e..3a4e899 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -92,8 +92,8 @@ libhpmud_la_SOURCES += io/hpmud/musb_libusb01.c + libhpmud_la_LDFLAGS += -lusb + else + libhpmud_la_SOURCES += io/hpmud/musb.c +-libhpmud_la_CFLAGS += -I/usr/include/libusb-1.0 +-libhpmud_la_LDFLAGS += -lusb-1.0 ++libhpmud_la_CFLAGS += $(LIBUSB_CFLAGS) ++libhpmud_la_LDFLAGS += $(LIBUSB_LIBS) + endif + + if NETWORK_BUILD +diff --git a/configure.in b/configure.in +index 3706645..8b06428 100755 +--- a/configure.in ++++ b/configure.in +@@ -542,8 +542,7 @@ if test "$hpijs_only_build" = "no" && test "$hpcups_only_build" = "no"; then + AC_CHECK_LIB([usb], [usb_init], [LIBS="$LIBS"], [AC_MSG_ERROR([cannot find libusb support], 2)]) + AC_CHECK_HEADERS(usb.h, ,[AC_MSG_ERROR([cannot find libusb-devel support], 11)]) + else +- AC_CHECK_LIB([usb-1.0], [libusb_init], [LIBS="$LIBS"], [AC_MSG_ERROR([cannot find libusb 1.0 support], 2)]) +- AC_CHECK_HEADERS(libusb-1.0/libusb.h, ,[AC_MSG_ERROR([cannot find libusb-1.0-devel support], 11)]) ++ PKG_CHECK_MODULES([LIBUSB], [libusb-1.0]) + fi + fi + +-- +2.6.4 + diff --git a/package/hplip/0002-configure.in-fix-AM_INIT_AUTOMAKE-call.patch b/package/hplip/0002-configure.in-fix-AM_INIT_AUTOMAKE-call.patch new file mode 100644 index 00000000..db2f0a43 --- /dev/null +++ b/package/hplip/0002-configure.in-fix-AM_INIT_AUTOMAKE-call.patch @@ -0,0 +1,35 @@ +From a2de7e834417de68db10dc6f09d5810b06e6cbc8 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 21 Jan 2016 23:54:50 +0100 +Subject: [PATCH] configure.in: fix AM_INIT_AUTOMAKE call + +Uncomment the appropriate call to AM_INIT_AUTOMAKE so that the +"foreign" option is passed, which avoids the need for creating various +unneeded files when autoreconfiguring. + +Add the subdir-objects options since the main Makefile.am references +files in subdirectories. This allows to silence a huge amount of +warning when autoreconfiguring. + +Signed-off-by: Thomas Petazzoni +--- + configure.in | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/configure.in b/configure.in +index 8b06428..680cad5 100755 +--- a/configure.in ++++ b/configure.in +@@ -27,8 +27,7 @@ + + #AC_PREREQ(2.59) + AC_INIT([HP Linux Imaging and Printing], [3.17.10], [3.17.10], [hplip]) +-#AM_INIT_AUTOMAKE([1.9 foreign]) +-AM_INIT_AUTOMAKE ++AM_INIT_AUTOMAKE([1.9 foreign subdir-objects]) + AC_DISABLE_STATIC + + # Checks for programs. +-- +2.6.4 + diff --git a/package/hplip/Config.in b/package/hplip/Config.in new file mode 100644 index 00000000..bab29303 --- /dev/null +++ b/package/hplip/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_HPLIP + bool "hplip" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_CUPS + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + depends on !BR2_STATIC_LIBS # libdl + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_JPEG + help + HP Linux Imaging and Printing (HPLIP) + HPLIP is an HP-developed solution for printing, scanning, and + faxing with HP inkjet and laser based printers in Linux. The + HPLIP project provides printing support for 2,211 printer + models, including Deskjet, Officejet, Photosmart, PSC + (Print Scan Copy), Business Inkjet, LaserJet, Edgeline MFP, + and LaserJet MFP. + + http://hplipopensource.com/ + +comment "hplip needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.9" + depends on BR2_PACKAGE_CUPS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/hplip/hplip.hash b/package/hplip/hplip.hash new file mode 100644 index 00000000..0a4d7eeb --- /dev/null +++ b/package/hplip/hplip.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 0f7344174672f63a98a22f3c109005b6eb89fe738b7d466316bf2c53d083476c hplip-3.17.10.tar.gz +sha256 8af0e85fc6b88aec25200bcb4f604d886818482bd2c5cc81038f4c6a311c913a COPYING diff --git a/package/hplip/hplip.mk b/package/hplip/hplip.mk new file mode 100644 index 00000000..59a0f8ac --- /dev/null +++ b/package/hplip/hplip.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# hplip +# +################################################################################ + +HPLIP_VERSION = 3.17.10 +HPLIP_SITE = http://downloads.sourceforge.net/hplip/hplip +HPLIP_AUTORECONF = YES +HPLIP_DEPENDENCIES = cups libusb jpeg host-pkgconf +HPLIP_LICENSE = GPL-2.0, BSD-3-Clause, MIT +HPLIP_LICENSE_FILES = COPYING +HPLIP_CPE_ID_VENDOR = hp +HPLIP_CPE_ID_PRODUCT = linux_imaging_and_printing_project + +HPLIP_CONF_OPTS = \ + --disable-qt4 \ + --disable-scan-build \ + --disable-gui-build \ + --disable-doc-build \ + --disable-network-build \ + --enable-hpcups-install \ + --disable-hpijs-install \ + --enable-cups-ppd-install \ + --enable-cups-drv-install \ + --disable-foomatic-ppd-install \ + --disable-foomatic-drv-install \ + --disable-foomatic-rip-hplip-install \ + --enable-new-hpcups \ + --enable-lite-build + +# build system does not support cups-config +HPLIP_CONF_ENV = LIBS=`$(STAGING_DIR)/usr/bin/cups-config --libs` + +ifeq ($(BR2_PACKAGE_DBUS),y) +HPLIP_CONF_OPTS += --enable-dbus-build +HPLIP_DEPENDENCIES += dbus +else +HPLIP_CONF_OPTS += --disable-dbus-build +endif + +define HPLIP_POST_INSTALL_TARGET_FIXUP + mkdir -p $(TARGET_DIR)/usr/share/hplip/data/models + cp $(@D)/data/models/* $(TARGET_DIR)/usr/share/hplip/data/models +endef +HPLIP_POST_INSTALL_TARGET_HOOKS += HPLIP_POST_INSTALL_TARGET_FIXUP + +$(eval $(autotools-package)) diff --git a/package/htop/Config.in b/package/htop/Config.in new file mode 100644 index 00000000..214a9a1c --- /dev/null +++ b/package/htop/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_HTOP + bool "htop" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # dlopen() + select BR2_PACKAGE_NCURSES + help + htop is an interactive text-mode process viewer for Linux. + It aims to be a better top. + + https://htop.dev/ + +comment "htop needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/package/htop/htop.hash b/package/htop/htop.hash new file mode 100644 index 00000000..3e45e1a2 --- /dev/null +++ b/package/htop/htop.hash @@ -0,0 +1,5 @@ +# From https://github.com/htop-dev/htop/releases/download/3.3.0/htop-3.3.0.tar.xz.sha256 +sha256 a69acf9b42ff592c4861010fce7d8006805f0d6ef0e8ee647a6ee6e59b743d5c htop-3.3.0.tar.xz + +# Locally calculated +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/htop/htop.mk b/package/htop/htop.mk new file mode 100644 index 00000000..4fa8e4fb --- /dev/null +++ b/package/htop/htop.mk @@ -0,0 +1,57 @@ +################################################################################ +# +# htop +# +################################################################################ + +HTOP_VERSION = 3.3.0 +HTOP_SOURCE = htop-$(HTOP_VERSION).tar.xz +HTOP_SITE = https://github.com/htop-dev/htop/releases/download/$(HTOP_VERSION) +HTOP_DEPENDENCIES = ncurses +# Prevent htop build system from searching the host paths +HTOP_CONF_ENV = HTOP_NCURSES_CONFIG_SCRIPT=$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS) +HTOP_LICENSE = GPL-2.0+ +HTOP_LICENSE_FILES = COPYING + +# ac_cv_prog_cc_c99 is required for BR2_USE_WCHAR=n because the C99 test +# provided by autoconf relies on wchar_t. +HTOP_CONF_ENV += ac_cv_prog_cc_c99=-std=gnu99 + +# --enable-static has a non-standard semantic in htop, and causes the +# main binary to be linked statically, not just the production of +# static libraries. This causes issues with BR2_SHARED_STATIC_LIBS as +# htop is linked statically, but pkg-config returns results relevant +# for a shared library build. Since htop is only building an +# application, let's disable this bogus behavior. +ifeq ($(BR2_SHARED_STATIC_LIBS),y) +HTOP_CONF_OPTS += --disable-static +endif + +ifeq ($(BR2_PACKAGE_HWLOC),y) +HTOP_CONF_OPTS += --enable-hwloc +HTOP_DEPENDENCIES += hwloc +else +HTOP_CONF_OPTS += --disable-hwloc +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +HTOP_CONF_OPTS += --enable-capabilities +HTOP_DEPENDENCIES += libcap +else +HTOP_CONF_OPTS += --disable-capabilities +endif + +ifeq ($(BR2_PACKAGE_LM_SENSORS),y) +HTOP_CONF_OPTS += --enable-sensors +HTOP_DEPENDENCIES += lm-sensors +else +HTOP_CONF_OPTS += --disable-sensors +endif + +ifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y) +HTOP_CONF_OPTS += --enable-unicode +else +HTOP_CONF_OPTS += --disable-unicode +endif + +$(eval $(autotools-package)) diff --git a/package/htpdate/Config.in b/package/htpdate/Config.in new file mode 100644 index 00000000..d2a71fb6 --- /dev/null +++ b/package/htpdate/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HTPDATE + bool "htpdate" + depends on BR2_USE_MMU # fork() + help + The HTTP Time Protocol (HTP) is used to synchronize a + computer's time with web servers as reference time source. + + https://github.com/twekkel/htpdate diff --git a/package/htpdate/S43htpdate b/package/htpdate/S43htpdate new file mode 100644 index 00000000..5971d706 --- /dev/null +++ b/package/htpdate/S43htpdate @@ -0,0 +1,51 @@ +#!/bin/sh + +DAEMON="htpdate" +PIDFILE="/var/run/$DAEMON.pid" + +HTPDATE_ARGS="-a -s -t https://google.com" +test -r "/etc/default/$DAEMON" && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -x "/usr/sbin/$DAEMON" \ + -- -D -i "$PIDFILE" $HTPDATE_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/htpdate/htpdate.hash b/package/htpdate/htpdate.hash new file mode 100644 index 00000000..b711773a --- /dev/null +++ b/package/htpdate/htpdate.hash @@ -0,0 +1,3 @@ +# Locally calculated: +sha256 88c52fe475308ee95f560fd7cf68c75bc6e9a6abf56be7fed203a7f762fe7ab2 htpdate-1.3.7.tar.gz +sha256 7989949df09a0489434723c571541604cd3f2e0418c6a6aa9179bfaf8ec807cc LICENSE diff --git a/package/htpdate/htpdate.mk b/package/htpdate/htpdate.mk new file mode 100644 index 00000000..20be904d --- /dev/null +++ b/package/htpdate/htpdate.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# htpdate +# +################################################################################ + +HTPDATE_VERSION = 1.3.7 +HTPDATE_SITE = $(call github,twekkel,htpdate,v$(HTPDATE_VERSION)) +HTPDATE_LICENSE = GPL-2.0+ +HTPDATE_LICENSE_FILES = LICENSE + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +HTPDATE_BUILD_OPTS = \ + https \ + SSL_LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs openssl`" +HTPDATE_DEPENDENCIES += openssl host-pkgconf +endif + +define HTPDATE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(HTPDATE_BUILD_OPTS) +endef + +define HTPDATE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + DESTDIR=$(TARGET_DIR) install +endef + +define HTPDATE_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/htpdate/S43htpdate \ + $(TARGET_DIR)/etc/init.d/S43htpdate +endef + +define HTPDATE_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/htpdate/htpdate.service \ + $(TARGET_DIR)/usr/lib/systemd/system/htpdate.service +endef + +$(eval $(generic-package)) diff --git a/package/htpdate/htpdate.service b/package/htpdate/htpdate.service new file mode 100644 index 00000000..95220581 --- /dev/null +++ b/package/htpdate/htpdate.service @@ -0,0 +1,13 @@ +[Unit] +Description=htpdate daemon +After=network.target + +[Service] +Type=forking +PIDFile=/run/htpdate.pid +Environment=HTPDATE_ARGS="-a -s -t https://www.google.com" +EnvironmentFile=-/etc/default/htpdate +ExecStart=/usr/sbin/htpdate -D -i /run/htpdate.pid $HTPDATE_ARGS + +[Install] +WantedBy=multi-user.target diff --git a/package/httping/0001-fix-math-library-linking.patch b/package/httping/0001-fix-math-library-linking.patch new file mode 100644 index 00000000..582fb9e9 --- /dev/null +++ b/package/httping/0001-fix-math-library-linking.patch @@ -0,0 +1,27 @@ +Move LDFLAGS+=-lm option to the end. +The order of the math library directive '-lm' matters. + +Signed-off-by: Yuvaraj Patil +[Fabrice: make the patch to be applied with fuzz factor 0] +Signed-off-by: Fabrice Fontaine +--- +diff -Nurp httping-2.3.4_orig/Makefile httping-2.3.4/Makefile +--- httping-2.3.4_orig/Makefile 2014-07-23 16:16:36.495546288 +0530 ++++ httping-2.3.4/Makefile 2014-07-23 16:18:42.547541002 +0530 +@@ -36,7 +36,6 @@ DEBUG=yes + WFLAGS=-Wall -W -Wextra -pedantic -D_FORTIFY_SOURCE=2 + OFLAGS= + CFLAGS+=$(WFLAGS) $(OFLAGS) -DVERSION=\"$(VERSION)\" -DLOCALEDIR=\"$(LOCALEDIR)\" +-LDFLAGS+=-lm + + PACKAGE=$(TARGET)-$(VERSION) + PREFIX?=/usr +@@ -97,6 +96,8 @@ ifeq ($(ARM),yes) + CC=arm-linux-gcc + endif + ++LDFLAGS+=-lm ++ + all: $(TARGET) $(TRANSLATIONS) + + $(TARGET): $(OBJS) diff --git a/package/httping/0002-Makefile-allow-build-without-gettext.patch b/package/httping/0002-Makefile-allow-build-without-gettext.patch new file mode 100644 index 00000000..aec1de47 --- /dev/null +++ b/package/httping/0002-Makefile-allow-build-without-gettext.patch @@ -0,0 +1,48 @@ +From fe7d6c5a0e5dfe129f228498037393d23d6ae890 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Tue, 18 Jul 2017 19:09:03 +0300 +Subject: [PATCH] Makefile: allow build without gettext + +The msgfmt command is part of the gettext package, and is used to generate +binary translation files. When gettext is not installed, build fails. +Translation files are not always needed on size constrained embedded targets. +Add an option to disable translation files generation using the NO_GETTEXT +variable. + +Signed-off-by: Baruch Siach +--- +Upstream status: https://github.com/flok99/httping/pull/36 + + Makefile | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Makefile b/Makefile +index 46127f4cdde1..160cc1794ec8 100644 +--- a/Makefile ++++ b/Makefile +@@ -55,7 +55,9 @@ MKDIR=/bin/mkdir + ARCHIVE=/bin/tar cf - + COMPRESS=/bin/gzip -9 + ++ifneq ($(NO_GETTEXT),yes) + TRANSLATIONS=nl.mo ru.mo ++endif + + OBJS=gen.o http.o io.o error.o utils.o main.o tcp.o res.o socks5.o kalman.o cookies.o help.o colors.o + +@@ -118,10 +120,12 @@ install: $(TARGET) $(TRANSLATIONS) + ifneq ($(DEBUG),yes) + $(STRIP) $(DESTDIR)/$(BINDIR)/$(TARGET) + endif ++ifneq ($(NO_GETTEXT),yes) + mkdir -p $(DESTDIR)/$(PREFIX)/share/locale/nl/LC_MESSAGES + cp nl.mo $(DESTDIR)/$(PREFIX)/share/locale/nl/LC_MESSAGES/httping.mo + mkdir -p $(DESTDIR)/$(PREFIX)/share/locale/ru/LC_MESSAGES + cp ru.mo $(DESTDIR)/$(PREFIX)/share/locale/ru/LC_MESSAGES/httping.mo ++endif + + + makefile.inc: +-- +2.13.2 + diff --git a/package/httping/Config.in b/package/httping/Config.in new file mode 100644 index 00000000..c0e5071c --- /dev/null +++ b/package/httping/Config.in @@ -0,0 +1,22 @@ +comment "httping needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +config BR2_PACKAGE_HTTPING + bool "httping" + depends on BR2_USE_WCHAR + help + Httping is like 'ping' but for http-requests. + Give it an url, and it'll show you how long it takes to + connect, send a request and retrieve the reply (only the + headers). + Be aware that the transmission across the network also takes + time! So it measures the latency of the webserver + network. + + http://www.vanheusden.com/httping/ + +if BR2_PACKAGE_HTTPING + +config BR2_PACKAGE_HTTPING_TFO + bool "TCP Fast Open (TFO) support" + +endif diff --git a/package/httping/httping.hash b/package/httping/httping.hash new file mode 100644 index 00000000..3178c323 --- /dev/null +++ b/package/httping/httping.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3e895a0a6d7bd79de25a255a1376d4da88eb09c34efdd0476ab5a907e75bfaf8 httping-2.5.tgz +sha256 c5db2e5b9a692fcdf2bd370f1533529063fbcf8947a8f5ee9d4b050a14e0566d license.txt diff --git a/package/httping/httping.mk b/package/httping/httping.mk new file mode 100644 index 00000000..b3a625a8 --- /dev/null +++ b/package/httping/httping.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# httping +# +################################################################################ + +HTTPING_VERSION = 2.5 +HTTPING_SOURCE = httping-$(HTTPING_VERSION).tgz +HTTPING_SITE = http://www.vanheusden.com/httping +HTTPING_LICENSE = GPL-2.0 +HTTPING_LICENSE_FILES = license.txt +HTTPING_LDFLAGS = $(TARGET_LDFLAGS) \ + $(TARGET_NLS_LIBS) \ + $(if $(BR2_PACKAGE_LIBICONV),-liconv) +HTTPING_DEPENDENCIES = \ + $(TARGET_NLS_DEPENDENCIES) \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) \ + $(if $(BR2_PACKAGE_NCURSES_WCHAR),ncurses) \ + $(if $(BR2_PACKAGE_OPENSSL),openssl) \ + $(if $(BR2_PACKAGE_FFTW_DOUBLE),fftw-double) +HTTPING_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) \ + FW=$(if $(BR2_PACKAGE_FFTW_DOUBLE),yes,no) \ + NC=$(if $(BR2_PACKAGE_NCURSES_WCHAR),yes,no) \ + SSL=$(if $(BR2_PACKAGE_OPENSSL),yes,no) \ + TFO=$(if $(BR2_PACKAGE_HTTPING_TFO),yes,no) \ + NO_GETTEXT=$(if $(BR2_SYSTEM_ENABLE_NLS),no,yes) + +define HTTPING_BUILD_CMDS + $(HTTPING_MAKE_OPTS) LDFLAGS="$(HTTPING_LDFLAGS)" \ + $(MAKE) DEBUG=no -C $(@D) +endef + +define HTTPING_INSTALL_TARGET_CMDS + $(HTTPING_MAKE_OPTS) $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/hwdata/Config.in b/package/hwdata/Config.in new file mode 100644 index 00000000..f563988a --- /dev/null +++ b/package/hwdata/Config.in @@ -0,0 +1,38 @@ +config BR2_PACKAGE_HWDATA + bool "hwdata" + help + Various hardware identification and configuration data + + - Individual Address Block (IAB) and Organizationally Unique + Identifier (OUI) databases, from IEEE Registration Authority + - PCI ID database + - PNP ID database (from Microsoft) + - USB ID database + + https://github.com/vcrhonek/hwdata + +if BR2_PACKAGE_HWDATA + +config BR2_PACKAGE_HWDATA_IAB_OUI_TXT + bool "install iab.txt and oui.txt" + help + Install iab.txt and oui.txt + +config BR2_PACKAGE_HWDATA_PCI_IDS + bool "install pci.ids" + default y + help + Install pci.ids + +config BR2_PACKAGE_HWDATA_PNP_IDS + bool "install pnp.ids" + help + Install pnp.ids + +config BR2_PACKAGE_HWDATA_USB_IDS + bool "install usb.ids" + default y + help + Install usb.ids + +endif diff --git a/package/hwdata/hwdata.hash b/package/hwdata/hwdata.hash new file mode 100644 index 00000000..7d895999 --- /dev/null +++ b/package/hwdata/hwdata.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 caa496a6203084ee3404c688a75ea05b4b10eec93340c503199647216127f347 hwdata-0.384.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 21d0406f93e884a050426ebc21931839a45d56bfcbcbfdda7686d583f36f107f LICENSE diff --git a/package/hwdata/hwdata.mk b/package/hwdata/hwdata.mk new file mode 100644 index 00000000..3394dbd0 --- /dev/null +++ b/package/hwdata/hwdata.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# hwdata +# +################################################################################ + +HWDATA_VERSION = 0.384 +HWDATA_SITE = $(call github,vcrhonek,hwdata,v$(HWDATA_VERSION)) +HWDATA_LICENSE = GPL-2.0+, BSD-3-Clause, XFree86 1.0 +HWDATA_LICENSE_FILES = COPYING LICENSE +HWDATA_INSTALL_STAGING = YES + +HWDATA_FILES = \ + $(if $(BR2_PACKAGE_HWDATA_IAB_OUI_TXT),iab.txt oui.txt) \ + $(if $(BR2_PACKAGE_HWDATA_PCI_IDS),pci.ids) \ + $(if $(BR2_PACKAGE_HWDATA_PNP_IDS),pnp.ids) \ + $(if $(BR2_PACKAGE_HWDATA_USB_IDS),usb.ids) + +define HWDATA_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure) +endef + +define HWDATA_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) hwdata.pc +endef + +ifneq ($(strip $(HWDATA_FILES)),) +define HWDATA_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0644 $(@D)/hwdata.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/hwdata.pc + $(INSTALL) -d -m 755 $(STAGING_DIR)/usr/share/hwdata + $(INSTALL) -m 644 -t $(STAGING_DIR)/usr/share/hwdata \ + $(addprefix $(@D)/,$(HWDATA_FILES)) +endef +define HWDATA_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 755 $(TARGET_DIR)/usr/share/hwdata + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/share/hwdata \ + $(addprefix $(@D)/,$(HWDATA_FILES)) +endef +endif + +$(eval $(generic-package)) diff --git a/package/hwloc/Config.in b/package/hwloc/Config.in new file mode 100644 index 00000000..1fb23027 --- /dev/null +++ b/package/hwloc/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_HWLOC + bool "hwloc" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Portable Hardware Locality + + Provides a portable abstraction (across OS, versions, + architectures, ...) of the hierarchical topology of modern + architectures, including NUMA memory nodes, sockets, shared + caches, cores and simultaneous multithreading. + + http://www.open-mpi.org/projects/hwloc/ + +comment "hwloc needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/hwloc/hwloc.hash b/package/hwloc/hwloc.hash new file mode 100644 index 00000000..8010b857 --- /dev/null +++ b/package/hwloc/hwloc.hash @@ -0,0 +1,5 @@ +# From https://www.open-mpi.org/software/hwloc/v2.9/ +sha1 76b49087619b46d71e18bd1131d35a5ccf5de791 hwloc-2.9.3.tar.bz2 +sha256 5c4062ce556f6d3451fc177ffb8673a2120f81df6835dea6a21a90fbdfff0dec hwloc-2.9.3.tar.bz2 +# Locally computed +sha256 d79a936a42f3c6cb7c8375a023d43f4435f4664d3a5a2ea6b4623cff83c7fc06 COPYING diff --git a/package/hwloc/hwloc.mk b/package/hwloc/hwloc.mk new file mode 100644 index 00000000..8fe9e648 --- /dev/null +++ b/package/hwloc/hwloc.mk @@ -0,0 +1,58 @@ +################################################################################ +# +# hwloc +# +################################################################################ + +HWLOC_VERSION_MAJOR = 2.9 +HWLOC_VERSION = $(HWLOC_VERSION_MAJOR).3 +HWLOC_SOURCE = hwloc-$(HWLOC_VERSION).tar.bz2 +HWLOC_SITE = https://download.open-mpi.org/release/hwloc/v$(HWLOC_VERSION_MAJOR) +HWLOC_LICENSE = BSD-3-Clause +HWLOC_LICENSE_FILES = COPYING +HWLOC_DEPENDENCIES = host-pkgconf +HWLOC_INSTALL_STAGING = YES +HWLOC_SELINUX_MODULES = hwloc + +# ac_cv_prog_cc_c99 is required for BR2_USE_WCHAR=n because the C99 test +# provided by autoconf relies on wchar_t. +HWLOC_CONF_ENV = ac_cv_prog_cc_c99=-std=gnu99 + +HWLOC_CONF_OPTS = \ + --disable-opencl \ + --disable-cuda \ + --disable-nvml \ + --disable-gl \ + --disable-cairo \ + --disable-doxygen + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +HWLOC_CONF_OPTS += --enable-libudev +HWLOC_DEPENDENCIES += udev +else +HWLOC_CONF_OPTS += --disable-libudev +endif + +ifeq ($(BR2_PACKAGE_LIBPCIACCESS),y) +HWLOC_CONF_OPTS += --enable-pci +HWLOC_DEPENDENCIES += libpciaccess +else +HWLOC_CONF_OPTS += --disable-pci +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +HWLOC_CONF_OPTS += --enable-libxml2 +HWLOC_DEPENDENCIES += libxml2 +else +HWLOC_CONF_OPTS += --disable-libxml2 +endif + +ifeq ($(BR2_PACKAGE_NCURSES),y) +HWLOC_DEPENDENCIES += ncurses +endif + +ifeq ($(BR2_PACKAGE_NUMACTL),y) +HWLOC_DEPENDENCIES += numactl +endif + +$(eval $(autotools-package)) diff --git a/package/hyperfine/Config.in b/package/hyperfine/Config.in new file mode 100644 index 00000000..527e9781 --- /dev/null +++ b/package/hyperfine/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_HYPERFINE + bool "hyperfine" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_RUSTC + help + hyperfine is a benchmark tool written in Rust. It evaluates + execution time of a command passed in arguments and make a + relative comparison if multiple arguments are used at the + same time. + + https://github.com/sharkdp/hyperfine diff --git a/package/hyperfine/hyperfine.hash b/package/hyperfine/hyperfine.hash new file mode 100644 index 00000000..88b87101 --- /dev/null +++ b/package/hyperfine/hyperfine.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 6cbe5673729ba7fd7a1b0b19a54630f93f4fcc29ea7878845f17931d31cd16fb hyperfine-1.18.0-cargo2.tar.gz +sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE-APACHE +sha256 1dfee18c2ff07ce551de4d6a1d2db158c0380746b488a7f0d08c8e0d3568b7c3 LICENSE-MIT diff --git a/package/hyperfine/hyperfine.mk b/package/hyperfine/hyperfine.mk new file mode 100644 index 00000000..b9f09a28 --- /dev/null +++ b/package/hyperfine/hyperfine.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# hyperfine +# +################################################################################ + +HYPERFINE_VERSION = 1.18.0 +HYPERFINE_SITE = $(call github,sharkdp,hyperfine,v$(HYPERFINE_VERSION)) +HYPERFINE_LICENSE = Apache-2.0 or MIT +HYPERFINE_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT + +$(eval $(cargo-package)) diff --git a/package/i2c-tools/0001-py-smbus-Use-setuptools-instead-of-distutils.patch b/package/i2c-tools/0001-py-smbus-Use-setuptools-instead-of-distutils.patch new file mode 100644 index 00000000..63b2a7f8 --- /dev/null +++ b/package/i2c-tools/0001-py-smbus-Use-setuptools-instead-of-distutils.patch @@ -0,0 +1,38 @@ +From cf3541b8a7ed50782edd05836020d31230fb86c6 Mon Sep 17 00:00:00 2001 +From: Ross Burton +Date: Wed, 19 Jan 2022 12:08:53 +0100 +Subject: py-smbus: Use setuptools instead of distutils + +As per [1], distutils is deprecated in Python 3.10 and will be removed +entirely in Python 3.12. + +As setuptools is essentially an enhanced version of distutils, it's +trivial to port to that. + +[1] https://docs.python.org/3/whatsnew/3.10.html#distutils-deprecated + +Signed-off-by: Ross Burton +Signed-off-by: Jean Delvare + +Upstream: https://git.kernel.org/pub/scm/utils/i2c-tools/i2c-tools.git/commit/?id=cf3541b8a7ed50782edd05836020d31230fb86c6 + +Signed-off-by: Bernd Kuhls +--- + py-smbus/setup.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/py-smbus/setup.py b/py-smbus/setup.py +index 28a4500..26db33a 100644 +--- a/py-smbus/setup.py ++++ b/py-smbus/setup.py +@@ -1,6 +1,6 @@ + #!/usr/bin/env python + +-from distutils.core import setup, Extension ++from setuptools import setup, Extension + + setup( name="smbus", + version="1.1", +-- +cgit + diff --git a/package/i2c-tools/Config.in b/package/i2c-tools/Config.in new file mode 100644 index 00000000..d9b8dd9a --- /dev/null +++ b/package/i2c-tools/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_I2C_TOOLS + bool "i2c-tools" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + Heterogeneous set of I2C tools for Linux + + This package contains a heterogeneous set of I2C tools for + Linux: a bus probing tool, a chip dumper, register-level + access helpers, EEPROM decoding scripts, and more. + + https://i2c.wiki.kernel.org/index.php/I2C_Tools diff --git a/package/i2c-tools/i2c-tools.hash b/package/i2c-tools/i2c-tools.hash new file mode 100644 index 00000000..9bfdacb3 --- /dev/null +++ b/package/i2c-tools/i2c-tools.hash @@ -0,0 +1,7 @@ +# From https://www.kernel.org/pub/software/utils/i2c-tools/sha256sums.asc +sha256 1f899e43603184fac32f34d72498fc737952dbc9c97a8dd9467fadfdf4600cf9 i2c-tools-4.3.tar.xz + +# License files +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPL +sha256 2293b6e9076984d02184ff620baac557143e16cfa47d88f0a791d05a1271742c README diff --git a/package/i2c-tools/i2c-tools.mk b/package/i2c-tools/i2c-tools.mk new file mode 100644 index 00000000..99388d95 --- /dev/null +++ b/package/i2c-tools/i2c-tools.mk @@ -0,0 +1,68 @@ +################################################################################ +# +# i2c-tools +# +################################################################################ + +I2C_TOOLS_VERSION = 4.3 +I2C_TOOLS_SOURCE = i2c-tools-$(I2C_TOOLS_VERSION).tar.xz +I2C_TOOLS_SITE = https://www.kernel.org/pub/software/utils/i2c-tools +I2C_TOOLS_LICENSE = GPL-2.0+, GPL-2.0 (py-smbus), LGPL-2.1+ (libi2c) +I2C_TOOLS_LICENSE_FILES = COPYING COPYING.LGPL README +I2C_TOOLS_CPE_ID_VALID = YES +I2C_TOOLS_MAKE_OPTS = EXTRA=eeprog +I2C_TOOLS_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +I2C_TOOLS_DEPENDENCIES += host-python-setuptools python3 +endif + +ifeq ($(BR2_STATIC_LIBS),y) +I2C_TOOLS_MAKE_OPTS += BUILD_DYNAMIC_LIB=0 USE_STATIC_LIB=1 +endif + +ifeq ($(BR2_SHARED_LIBS),y) +I2C_TOOLS_MAKE_OPTS += BUILD_STATIC_LIB=0 +endif + +# Build/install steps mirror the distutil python package type in the python package +# infrastructure +ifeq ($(BR2_PACKAGE_PYTHON3),y) +# BASE_ENV taken from PKG_PYTHON_SETUPTOOLS_ENV in package/pkg-python.mk +I2C_TOOLS_PYTHON_BASE_ENV = \ + $(PKG_PYTHON_SETUPTOOLS_ENV) \ + CFLAGS="$(TARGET_CFLAGS) -I../include" + +define I2C_TOOLS_BUILD_PYSMBUS + (cd $(@D)/py-smbus; \ + $(I2C_TOOLS_PYTHON_BASE_ENV) \ + $(HOST_DIR)/bin/python setup.py build) +endef + +define I2C_TOOLS_INSTALL_PYSMBUS + (cd $(@D)/py-smbus; \ + $(I2C_TOOLS_PYTHON_BASE_ENV) \ + $(HOST_DIR)/bin/python setup.py install \ + $(PKG_PYTHON_SETUPTOOLS_INSTALL_OPTS) \ + --root=$(TARGET_DIR)) +endef + +endif # BR2_PACKAGE_PYTHON3 + +define I2C_TOOLS_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) $(I2C_TOOLS_MAKE_OPTS) -C $(@D) + $(I2C_TOOLS_BUILD_PYSMBUS) +endef + +define I2C_TOOLS_INSTALL_TARGET_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) $(I2C_TOOLS_MAKE_OPTS) \ + DESTDIR="$(TARGET_DIR)" PREFIX=/usr -C $(@D) install + $(I2C_TOOLS_INSTALL_PYSMBUS) +endef + +define I2C_TOOLS_INSTALL_STAGING_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) $(I2C_TOOLS_MAKE_OPTS) \ + DESTDIR="$(STAGING_DIR)" PREFIX=/usr -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/i2pd/Config.in b/package/i2pd/Config.in new file mode 100644 index 00000000..c1ba08ef --- /dev/null +++ b/package/i2pd/Config.in @@ -0,0 +1,40 @@ +config BR2_PACKAGE_I2PD + bool "i2pd" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_ATOMIC + # pthread_condattr_setclock + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-filesystem + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR # boost + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_DATE_TIME + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_BOOST_PROGRAM_OPTIONS + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + i2pd (I2P Daemon) is a full-featured C++ implementation of I2P + client. + + I2P (Invisible Internet Protocol) is a universal anonymous + network layer. + All communications over I2P are anonymous and end-to-end + encrypted, participants don't reveal their real IP addresses. + + http://i2pd.website + +comment "i2pd needs a toolchain w/ C++, NPTL, wchar" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_USE_WCHAR + +comment "i2pd needs exception_ptr" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/i2pd/S99i2pd b/package/i2pd/S99i2pd new file mode 100644 index 00000000..32775cdb --- /dev/null +++ b/package/i2pd/S99i2pd @@ -0,0 +1,38 @@ +#!/bin/sh + +NAME=i2pd +PIDFILE=/var/run/$NAME.pid +DAEMON=/usr/bin/$NAME +DAEMON_ARGS="--conf=/etc/i2pd/i2pd.conf --tunconf=/etc/i2pd/tunnels.conf --pidfile=/var/run/i2pd.pid --logfile=/var/log/i2pd.log --daemon --service" + +start() { + printf "Starting $NAME: " + start-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON -- $DAEMON_ARGS + [ $? = 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}" + exit 1 +esac + +exit $? diff --git a/package/i2pd/i2pd.hash b/package/i2pd/i2pd.hash new file mode 100644 index 00000000..cc099a94 --- /dev/null +++ b/package/i2pd/i2pd.hash @@ -0,0 +1,4 @@ +# From https://github.com/PurpleI2P/i2pd/releases/download/2.50.2/SHA512SUMS +sha512 7df7a578711a959feee4326060829cf87c0d1669e473934549cb59d868a7aef7300ecd2d7a6b92a2295aa7e97964cc16d0e44a334db917e22b0b59573a9052de i2pd-2.50.2.tar.gz +# Locally computed: +sha256 e32cc0171ce3301afa67d83f61598f29af7efdf8218dfb66cc1a72224474ec2c LICENSE diff --git a/package/i2pd/i2pd.mk b/package/i2pd/i2pd.mk new file mode 100644 index 00000000..402931c6 --- /dev/null +++ b/package/i2pd/i2pd.mk @@ -0,0 +1,63 @@ +################################################################################ +# +# i2pd +# +################################################################################ + +I2PD_VERSION = 2.50.2 +I2PD_SITE = $(call github,PurpleI2P,i2pd,$(I2PD_VERSION)) +I2PD_LICENSE = BSD-3-Clause +I2PD_LICENSE_FILES = LICENSE +I2PD_CPE_ID_VENDOR = i2pd +I2PD_SUBDIR = build +I2PD_DEPENDENCIES = \ + boost \ + openssl \ + zlib + +I2PD_CONF_OPTS += -DWITH_GUI=OFF + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +I2PD_CONF_OPTS += \ + -DHAVE_CXX_ATOMICS_WITHOUT_LIB=OFF \ + -DHAVE_CXX_ATOMICS64_WITHOUT_LIB=OFF +endif + +ifeq ($(BR2_STATIC_LIBS),y) +I2PD_CONF_OPTS += -DWITH_STATIC=ON +else +I2PD_CONF_OPTS += -DWITH_STATIC=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBMINIUPNPC),y) +I2PD_DEPENDENCIES += libminiupnpc +I2PD_CONF_OPTS += -DWITH_UPNP=ON +else +I2PD_CONF_OPTS += -DWITH_UPNP=OFF +endif + +define I2PD_INSTALL_CONFIGURATION_FILES + $(INSTALL) -D -m 644 $(@D)/contrib/i2pd.conf \ + $(TARGET_DIR)/etc/i2pd/i2pd.conf + $(INSTALL) -D -m 644 $(@D)/contrib/tunnels.conf \ + $(TARGET_DIR)/etc/i2pd/tunnels.conf + mkdir -p $(TARGET_DIR)/var/lib/i2pd + cp -a $(@D)/contrib/certificates $(TARGET_DIR)/var/lib/i2pd +endef +I2PD_POST_INSTALL_TARGET_HOOKS += I2PD_INSTALL_CONFIGURATION_FILES + +define I2PD_USERS + i2pd -1 i2pd -1 * /var/lib/i2pd - - I2P Daemon +endef + +define I2PD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/i2pd/S99i2pd \ + $(TARGET_DIR)/etc/init.d/S99i2pd +endef + +define I2PD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/i2pd/i2pd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/i2pd.service +endef + +$(eval $(cmake-package)) diff --git a/package/i2pd/i2pd.service b/package/i2pd/i2pd.service new file mode 100644 index 00000000..0fdee595 --- /dev/null +++ b/package/i2pd/i2pd.service @@ -0,0 +1,29 @@ +[Unit] +Description=I2P Router written in C++ +After=network.target + +[Service] +User=i2pd +Group=i2pd +RuntimeDirectory=i2pd +RuntimeDirectoryMode=0700 +LogsDirectory=i2pd +LogsDirectoryMode=0700 +Type=simple +ExecStart=/usr/bin/i2pd --conf=/etc/i2pd/i2pd.conf --tunconf=/etc/i2pd/tunnels.conf --pidfile=/run/i2pd/i2pd.pid --logfile=/var/log/i2pd/i2pd.log --daemon --service +ExecReload=/bin/kill -HUP $MAINPID +PIDFile=/run/i2pd/i2pd.pid +### Uncomment, if auto restart needed +#Restart=on-failure + +### Use SIGINT for graceful stop daemon. +# i2pd stops accepting new tunnels and waits ~10 min while old ones do not die. +KillSignal=SIGINT +TimeoutStopSec=10m + +# If you have problems with hanging i2pd, you can try enable this +#LimitNOFILE=4096 +PrivateDevices=yes + +[Install] +WantedBy=multi-user.target diff --git a/package/i7z/0001-fix-build-with-gcc-10.patch b/package/i7z/0001-fix-build-with-gcc-10.patch new file mode 100644 index 00000000..a25e937b --- /dev/null +++ b/package/i7z/0001-fix-build-with-gcc-10.patch @@ -0,0 +1,63 @@ +From 6e4e407a374512b5bcb5a7c184258653e472ef9f Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 19 Jan 2021 07:47:58 +0100 +Subject: [PATCH] fix build with gcc 10 + +Fix the following build failure with gcc 10 (which defaults to +-fno-common): + +/home/buildroot/autobuild/instance-2/output-1/host/bin/x86_64-linux-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -fno-schedule-insns2 -fno-schedule-insns -fno-inline-small-functions -fno-caller-saves -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DBUILD_MAIN -Wimplicit-function-declaration -Dx64_BIT -o i7z i7z.o helper_functions.o i7z_Single_Socket.o i7z_Dual_Socket.o -lncurses -lpthread -lrt -lm +/home/buildroot/autobuild/instance-2/output-1/host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-gnu/10.2.0/../../../../x86_64-buildroot-linux-gnu/bin/ld: i7z_Dual_Socket.o:(.bss+0x0): multiple definition of `global_ts'; i7z_Single_Socket.o:(.bss+0x0): first defined here + +Fixes: + - http://autobuild.buildroot.org/results/1a433611ba8676cf1ca276fccaf3633971bd562e + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/ajaiantilal/i7z/pull/27] +--- + i7z.c | 1 + + i7z_Dual_Socket.c | 2 +- + i7z_Single_Socket.c | 2 +- + 3 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/i7z.c b/i7z.c +index 61e2757..910a608 100644 +--- a/i7z.c ++++ b/i7z.c +@@ -34,6 +34,7 @@ int Dual_Socket(); + + int socket_0_num=0, socket_1_num=1; + bool use_ncurses = true; ++struct timespec global_ts; + + /////////////////////LOGGING TO FILE//////////////////////////////////////// + FILE *fp_log_file_freq; +diff --git a/i7z_Dual_Socket.c b/i7z_Dual_Socket.c +index 1388339..ceafdce 100644 +--- a/i7z_Dual_Socket.c ++++ b/i7z_Dual_Socket.c +@@ -37,7 +37,7 @@ float Read_Voltage_CPU(int cpu_num); + extern struct program_options prog_options; + FILE *fp_log_file; + +-struct timespec global_ts; ++extern struct timespec global_ts; + extern FILE *fp_log_file_freq_1, *fp_log_file_freq_2; + + extern char* CPU_FREQUENCY_LOGGING_FILE_single; +diff --git a/i7z_Single_Socket.c b/i7z_Single_Socket.c +index 16e98c1..b7266e6 100644 +--- a/i7z_Single_Socket.c ++++ b/i7z_Single_Socket.c +@@ -35,7 +35,7 @@ int Read_Thermal_Status_CPU(int cpu_num); + extern struct program_options prog_options; + extern FILE *fp_log_file_freq; + +-struct timespec global_ts; ++extern struct timespec global_ts; + + extern char* CPU_FREQUENCY_LOGGING_FILE_single; + extern char* CPU_FREQUENCY_LOGGING_FILE_dual; +-- +2.29.2 + diff --git a/package/i7z/Config.in b/package/i7z/Config.in new file mode 100644 index 00000000..eea74f2f --- /dev/null +++ b/package/i7z/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_I7Z + bool "i7z" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_NCURSES + help + "A better i7 (and now i3, i5) reporting tool for Linux." + + i7z can print out the C-states and temperature for i3, i5 + and i7 based Core processors from Intel (including Nehalems, + Sandy Bridge and Ivy Bridge). + + https://github.com/ajaiantilal/i7z + +comment "i7z needs a toolchain w/ threads" + depends on BR2_i386 || BR2_x86_64 + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/i7z/i7z.hash b/package/i7z/i7z.hash new file mode 100644 index 00000000..d3affe8d --- /dev/null +++ b/package/i7z/i7z.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 e127bddf850e7febd39cef2d2b13dca5fe19cc2a1bb1099d72b683be5d8bd1c0 i7z-5023138d7c35c4667c938b853e5ea89737334e92.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/i7z/i7z.mk b/package/i7z/i7z.mk new file mode 100644 index 00000000..9c2c6739 --- /dev/null +++ b/package/i7z/i7z.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# i7z +# +################################################################################ + +I7Z_VERSION = 5023138d7c35c4667c938b853e5ea89737334e92 +I7Z_SITE = $(call github,ajaiantilal,i7z,$(I7Z_VERSION)) +I7Z_LICENSE = GPL-2.0 +I7Z_LICENSE_FILES = COPYING +I7Z_DEPENDENCIES = ncurses + +define I7Z_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define I7Z_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install \ + DESTDIR="$(TARGET_DIR)" +endef + +$(eval $(generic-package)) diff --git a/package/ibm-sw-tpm2/0001-Use-LONG_BIT-to-define-RADIX_BITS.patch b/package/ibm-sw-tpm2/0001-Use-LONG_BIT-to-define-RADIX_BITS.patch new file mode 100644 index 00000000..8d83116d --- /dev/null +++ b/package/ibm-sw-tpm2/0001-Use-LONG_BIT-to-define-RADIX_BITS.patch @@ -0,0 +1,87 @@ +From 7ea7fe229ea6195938d9eadbe783cb1aa74380ba Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 26 Apr 2020 15:33:39 +0200 +Subject: [PATCH] Use LONG_BIT to define RADIX_BITS + +This allows to avoid having to support each CPU architecture +individually. + +Also, add the necessary defines in the makefile to expose +LONG_BIT. Adding those defines end up requiring using +as we're now using >= POSIX.1-2001 definitions of fd_set and friends. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Vincent Fazio +[Bernd: rebased for git rev 5452af422edeff70fcae8ea99dd28a0922051d7b] +Signed-off-by: Bernd Kuhls +[Fabrice: rebase for rev183-2024-03-27] +Signed-off-by: Fabrice Fontaine +--- + src/LibSupport.h | 21 +++------------------ + src/TcpServerPosix.c | 1 + + src/makefile | 2 ++ + 3 files changed, 6 insertions(+), 18 deletions(-) + +diff --git a/src/tpm_radix.h b/src/tpm_radix.h +index 5055560..48b1e16 100644 +--- a/src/tpm_radix.h ++++ b/src/tpm_radix.h +@@ -61,27 +61,9 @@ + //** Introduction + // Common defines for supporting large numbers and cryptographic buffer sizing. + //********************* +-#ifndef RADIX_BITS +-# if defined(__x86_64__) || defined(__x86_64) || defined(__amd64__) \ +- || defined(__amd64) || defined(_WIN64) || defined(_M_X64) || defined(_M_ARM64) \ +- || defined(__aarch64__) || defined(__PPC64__) || defined(__s390x__) \ +- || defined(__powerpc64__) || defined(__ppc64__) +-# define RADIX_BITS 64 +-# elif defined(__i386__) || defined(__i386) || defined(i386) || defined(_WIN32) \ +- || defined(_M_IX86) +-# define RADIX_BITS 32 +-# elif defined(_M_ARM) || defined(__arm__) || defined(__thumb__) +-# define RADIX_BITS 32 +-# elif defined(__riscv) +-// __riscv and __riscv_xlen are standardized by the RISC-V community and should be available +-// on any compliant compiler. +-// +-// https://github.com/riscv-non-isa/riscv-toolchain-conventions +-# define RADIX_BITS __riscv_xlen +-# else +-# error Unable to determine RADIX_BITS from compiler environment +-# endif +-#endif // RADIX_BITS ++#include ++ ++#define RADIX_BITS LONG_BIT + + #if RADIX_BITS == 64 + # define RADIX_BYTES 8 +diff --git a/src/TcpServerPosix.c b/src/TcpServerPosix.c +index cad0402..6293cdd 100644 +--- a/src/TcpServerPosix.c ++++ b/src/TcpServerPosix.c +@@ -66,6 +66,7 @@ + + #include + #include ++#include + #include + #include + #include +diff --git a/src/makefile b/src/makefile +index f124e78..6ee128e 100644 +--- a/src/makefile ++++ b/src/makefile +@@ -47,6 +47,8 @@ CCFLAGS = -Wall \ + -c -ggdb -O0 \ + -DTPM_POSIX \ + -D_POSIX_ \ ++ -D_DEFAULT_SOURCE \ ++ -D_XOPEN_SOURCE=500 \ + -DTPM_NUVOTON + + # add this line for big endian platforms +-- +2.17.1 + diff --git a/package/ibm-sw-tpm2/0002-src-BnToOsslMath.h-fix-build-with-openssl-3.3.x.patch b/package/ibm-sw-tpm2/0002-src-BnToOsslMath.h-fix-build-with-openssl-3.3.x.patch new file mode 100644 index 00000000..a349c05d --- /dev/null +++ b/package/ibm-sw-tpm2/0002-src-BnToOsslMath.h-fix-build-with-openssl-3.3.x.patch @@ -0,0 +1,40 @@ +From 1b5d9eb91f0d24d09d711ef839d301ee8b640d61 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 21 Jul 2024 09:08:39 +0200 +Subject: [PATCH] src/BnToOsslMath.h: fix build with openssl 3.3.x + +Fix the following build failure with openssl 3.3.x: + +In file included from BnValues.h:327, + from Global.h:80, + from Tpm.h:78, + from AuditCommands.c:62: +TpmToOsslMath.h:83:5: error: #error Untested OpenSSL version + 83 | # error Untested OpenSSL version + | ^~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/2fb5e1cb792fe25ef860ff8111622cd1ff3770bf + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/kgoldman/ibmswtpm2/pull/15 +--- + src/BnToOsslMath.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/BnToOsslMath.h b/src/BnToOsslMath.h +index df4bcfb..72939ea 100644 +--- a/src/BnToOsslMath.h ++++ b/src/BnToOsslMath.h +@@ -77,7 +77,7 @@ + #include + #include + +-#if OPENSSL_VERSION_NUMBER >= 0x30200ff0L ++#if OPENSSL_VERSION_NUMBER >= 0x30300ff0L + // Check the bignum_st definition against the one below and either update the + // version check or provide the new definition for this version. + # error Untested OpenSSL version +-- +2.43.0 + diff --git a/package/ibm-sw-tpm2/Config.in b/package/ibm-sw-tpm2/Config.in new file mode 100644 index 00000000..179fa739 --- /dev/null +++ b/package/ibm-sw-tpm2/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_IBM_SW_TPM2 + bool "ibm-sw-tpm2" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS # ibm-sw-tpm2 + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + help + This project is an implementation of the TCG TPM 2.0 + specification. It is based on the TPM specification Parts 3 + and 4 source code donated by Microsoft, with additional + files to complete the implementation. + + https://sourceforge.net/projects/ibmswtpm2/ + +comment "ibm-sw-tpm2 needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/ibm-sw-tpm2/ibm-sw-tpm2.hash b/package/ibm-sw-tpm2/ibm-sw-tpm2.hash new file mode 100644 index 00000000..3c2d0e75 --- /dev/null +++ b/package/ibm-sw-tpm2/ibm-sw-tpm2.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 239cea3ec99cb31fb25c1ba4fe9b98a862bb20daefefeba8908d370bedd42a31 ibm-sw-tpm2-rev183-2024-03-27-git4.tar.gz +sha256 dd2d31b560011ea673e197251e710e52669d911367d83cd3cfd018f8ed58bde9 LICENSE diff --git a/package/ibm-sw-tpm2/ibm-sw-tpm2.mk b/package/ibm-sw-tpm2/ibm-sw-tpm2.mk new file mode 100644 index 00000000..67ecd459 --- /dev/null +++ b/package/ibm-sw-tpm2/ibm-sw-tpm2.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# ibm-sw-tpm2 +# +################################################################################ + +IBM_SW_TPM2_VERSION = rev183-2024-03-27 +IBM_SW_TPM2_SITE = https://git.code.sf.net/p/ibmswtpm2/tpm2 +IBM_SW_TPM2_SITE_METHOD = git +IBM_SW_TPM2_LICENSE = BSD-3-Clause +IBM_SW_TPM2_LICENSE_FILES = LICENSE +IBM_SW_TPM2_DEPENDENCIES = openssl + +define IBM_SW_TPM2_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src $(TARGET_CONFIGURE_OPTS) +endef + +define IBM_SW_TPM2_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src $(TARGET_CONFIGURE_OPTS) install \ + DESTDIR=$(TARGET_DIR) +endef + +$(eval $(generic-package)) diff --git a/package/ibrcommon/0001-ibrcommon-data-File.cpp-support-POSIX-basename-call.patch b/package/ibrcommon/0001-ibrcommon-data-File.cpp-support-POSIX-basename-call.patch new file mode 100644 index 00000000..5cd302c9 --- /dev/null +++ b/package/ibrcommon/0001-ibrcommon-data-File.cpp-support-POSIX-basename-call.patch @@ -0,0 +1,55 @@ +From d667b13a87cf3207599a19eb981a893a1d7a67ee Mon Sep 17 00:00:00 2001 +From: Brendan Heading +Date: Mon, 14 Sep 2015 23:25:52 +0100 +Subject: [PATCH] ibrcommon/data/File.cpp: support POSIX basename call + +Firstly, and somewhat strangely, musl chooses not to provide a basename(3) +prototype within whenever __cplusplus is defined. This can be +solved by including the header defined by POSIX 1003.1 whenever +__GLIBC__ is not defined. + +However, this leads to a second problem. POSIX defines the function as +char* basename(char*) and this is the only version supported by musl. +However, the std::string.cstr() method returns a const char*. + +POSIX says that the string parameter can be modified. However the GNU +implementation never modifies it. glibc therefore supports an extension +when compiling under C++ by also supplying +const char* basename(const char*). This extension is not present on musl +which is the cause of the failure. + +The solution is reasonably straightforward; test if __GLIBC__ is defined +before calling basename. If not, use the fallback already provided for +other platforms whereby basename() is called on a temporary copy. + +Signed-off-by: Brendan Heading +Upstream-status: pending +--- + ibrcommon/data/File.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ibrcommon/data/File.cpp b/ibrcommon/data/File.cpp +index 31af4ae..68e9b4f 100644 +--- a/ibrcommon/data/File.cpp ++++ b/ibrcommon/data/File.cpp +@@ -35,7 +35,7 @@ + #include + #include + +-#if !defined(HAVE_FEATURES_H) || defined(ANDROID) ++#if !defined(HAVE_FEATURES_H) || !defined(__GLIBC__) || defined(ANDROID) + #include + #endif + +@@ -225,7 +225,7 @@ namespace ibrcommon + + std::string File::getBasename() const + { +-#if !defined(ANDROID) && defined(HAVE_FEATURES_H) ++#if !defined(ANDROID) && defined(HAVE_FEATURES_H) && defined(__GLIBC__) + return std::string(basename(_path.c_str())); + #else + char path[_path.length()+1]; +-- +2.4.3 + diff --git a/package/ibrcommon/0002-ibrcommon-added-openssl-1.1-compatibility-264.patch b/package/ibrcommon/0002-ibrcommon-added-openssl-1.1-compatibility-264.patch new file mode 100644 index 00000000..90e5147f --- /dev/null +++ b/package/ibrcommon/0002-ibrcommon-added-openssl-1.1-compatibility-264.patch @@ -0,0 +1,357 @@ +From a801d10a081e3130e24042256a43190c9eb6c112 Mon Sep 17 00:00:00 2001 +From: Eneas Queiroz <35331380+cotequeiroz@users.noreply.github.com> +Date: Wed, 23 May 2018 03:09:02 -0300 +Subject: [PATCH] ibrcommon: added openssl 1.1 compatibility (#264) + +This patch adds compatibility to openssl 1.1.0. + +Backported from master branch: +https://github.com/ibrdtn/ibrdtn/commit/a801d10a081e3130e24042256a43190c9eb6c112 + +Signed-off-by: Eneas U de Queiroz +Signed-off-by: Bernd Kuhls +--- + ibrcommon/ibrcommon/ssl/HMacStream.cpp | 11 +++--- + ibrcommon/ibrcommon/ssl/HMacStream.h | 2 +- + ibrcommon/ibrcommon/ssl/RSASHA256Stream.cpp | 28 +++++++------ + ibrcommon/ibrcommon/ssl/RSASHA256Stream.h | 2 +- + ibrcommon/ibrcommon/ssl/iostreamBIO.cpp | 44 ++++++++++++++++----- + ibrcommon/ibrcommon/ssl/openssl_compat.h | 38 ++++++++++++++++++ + 6 files changed, 95 insertions(+), 30 deletions(-) + create mode 100644 ibrcommon/ibrcommon/ssl/openssl_compat.h + +diff --git a/ibrcommon/ssl/HMacStream.cpp b/ibrcommon/ssl/HMacStream.cpp +index e5d317e3..66d8ce42 100644 +--- a/ibrcommon/ssl/HMacStream.cpp ++++ b/ibrcommon/ssl/HMacStream.cpp +@@ -20,29 +20,30 @@ + */ + + #include "ibrcommon/ssl/HMacStream.h" ++#include "openssl_compat.h" + + namespace ibrcommon + { + HMacStream::HMacStream(const unsigned char * const key, const int key_size) + : HashStream(EVP_MAX_MD_SIZE, BUFF_SIZE), key_(key), key_size_(key_size) + { +- HMAC_CTX_init(&ctx_); +- HMAC_Init_ex(&ctx_, key_, key_size_, EVP_sha1(), NULL); ++ ctx_ = HMAC_CTX_new(); ++ HMAC_Init_ex(ctx_, key_, key_size_, EVP_sha1(), NULL); + } + + HMacStream::~HMacStream() + { +- HMAC_CTX_cleanup(&ctx_); ++ HMAC_CTX_free(ctx_); + } + + void HMacStream::update(char *buf, const size_t size) + { + // hashing +- HMAC_Update(&ctx_, (unsigned char*)buf, size); ++ HMAC_Update(ctx_, (unsigned char*)buf, size); + } + + void HMacStream::finalize(char * hash, unsigned int &size) + { +- HMAC_Final(&ctx_, (unsigned char*)hash, &size); ++ HMAC_Final(ctx_, (unsigned char*)hash, &size); + } + } +diff --git a/ibrcommon/ssl/HMacStream.h b/ibrcommon/ssl/HMacStream.h +index 7dcea168..d04bceb8 100644 +--- a/ibrcommon/ssl/HMacStream.h ++++ b/ibrcommon/ssl/HMacStream.h +@@ -44,7 +44,7 @@ namespace ibrcommon + const unsigned char * const key_; + const int key_size_; + +- HMAC_CTX ctx_; ++ HMAC_CTX* ctx_; + }; + } + +diff --git a/ibrcommon/ssl/RSASHA256Stream.cpp b/ibrcommon/ssl/RSASHA256Stream.cpp +index d94430ed..d25c5d2f 100644 +--- a/ibrcommon/ssl/RSASHA256Stream.cpp ++++ b/ibrcommon/ssl/RSASHA256Stream.cpp +@@ -21,6 +21,7 @@ + + #include "ibrcommon/ssl/RSASHA256Stream.h" + #include "ibrcommon/Logger.h" ++#include "openssl_compat.h" + #include + + namespace ibrcommon +@@ -30,11 +31,11 @@ namespace ibrcommon + { + // Initialize get pointer. This should be zero so that underflow is called upon first read. + setp(&out_buf_[0], &out_buf_[BUFF_SIZE - 1]); +- EVP_MD_CTX_init(&_ctx); ++ _ctx = EVP_MD_CTX_new(); + + if (!_verify) + { +- if (!EVP_SignInit_ex(&_ctx, EVP_sha256(), NULL)) ++ if (!EVP_SignInit_ex(_ctx, EVP_sha256(), NULL)) + { + IBRCOMMON_LOGGER_TAG("RSASHA256Stream", critical) << "failed to initialize the signature function" << IBRCOMMON_LOGGER_ENDL; + ERR_print_errors_fp(stderr); +@@ -42,7 +43,7 @@ namespace ibrcommon + } + else + { +- if (!EVP_VerifyInit_ex(&_ctx, EVP_sha256(), NULL)) ++ if (!EVP_VerifyInit_ex(_ctx, EVP_sha256(), NULL)) + { + IBRCOMMON_LOGGER_TAG("RSASHA256Stream", critical) << "failed to initialize the verification function" << IBRCOMMON_LOGGER_ENDL; + ERR_print_errors_fp(stderr); +@@ -52,18 +53,19 @@ namespace ibrcommon + + RSASHA256Stream::~RSASHA256Stream() + { +- EVP_MD_CTX_cleanup(&_ctx); ++ EVP_MD_CTX_free(_ctx); + } + + void RSASHA256Stream::reset() + { +- EVP_MD_CTX_cleanup(&_ctx); +- +- EVP_MD_CTX_init(&_ctx); ++#if OPENSSL_VERSION_NUMBER < 0x10100000L ++ EVP_MD_CTX_cleanup(_ctx); ++#endif ++ EVP_MD_CTX_init(_ctx); + + if (!_verify) + { +- if (!EVP_SignInit_ex(&_ctx, EVP_sha256(), NULL)) ++ if (!EVP_SignInit_ex(_ctx, EVP_sha256(), NULL)) + { + IBRCOMMON_LOGGER_TAG("RSASHA256Stream", critical) << "failed to initialize the signature function" << IBRCOMMON_LOGGER_ENDL; + ERR_print_errors_fp(stderr); +@@ -71,7 +73,7 @@ namespace ibrcommon + } + else + { +- if (!EVP_VerifyInit_ex(&_ctx, EVP_sha256(), NULL)) ++ if (!EVP_VerifyInit_ex(_ctx, EVP_sha256(), NULL)) + { + IBRCOMMON_LOGGER_TAG("RSASHA256Stream", critical) << "failed to initialize the verfication function" << IBRCOMMON_LOGGER_ENDL; + ERR_print_errors_fp(stderr); +@@ -91,7 +93,7 @@ namespace ibrcommon + std::vector sign(EVP_PKEY_size(_pkey)); + unsigned int size = EVP_PKEY_size(_pkey); + +- _return_code = EVP_SignFinal(&_ctx, &sign[0], &size, _pkey); ++ _return_code = EVP_SignFinal(_ctx, &sign[0], &size, _pkey); + + _sign = std::string((const char*)&sign[0], size); + +@@ -107,7 +109,7 @@ namespace ibrcommon + if (!_sign_valid) + { + sync(); +- _return_code = EVP_VerifyFinal(&_ctx, reinterpret_cast(their_sign.c_str()), static_cast(their_sign.size()), _pkey); ++ _return_code = EVP_VerifyFinal(_ctx, reinterpret_cast(their_sign.c_str()), static_cast(their_sign.size()), _pkey); + _sign_valid = true; + } + return _return_code; +@@ -145,7 +147,7 @@ namespace ibrcommon + if (!_verify) + // hashing + { +- if (!EVP_SignUpdate(&_ctx, &out_buf_[0], iend - ibegin)) ++ if (!EVP_SignUpdate(_ctx, &out_buf_[0], iend - ibegin)) + { + IBRCOMMON_LOGGER_TAG("RSASHA256Stream", critical) << "failed to feed data into the signature function" << IBRCOMMON_LOGGER_ENDL; + ERR_print_errors_fp(stderr); +@@ -153,7 +155,7 @@ namespace ibrcommon + } + else + { +- if (!EVP_VerifyUpdate(&_ctx, &out_buf_[0], iend - ibegin)) ++ if (!EVP_VerifyUpdate(_ctx, &out_buf_[0], iend - ibegin)) + { + IBRCOMMON_LOGGER_TAG("RSASHA256Stream", critical) << "failed to feed data into the verification function" << IBRCOMMON_LOGGER_ENDL; + ERR_print_errors_fp(stderr); +diff --git a/ibrcommon/ssl/RSASHA256Stream.h b/ibrcommon/ssl/RSASHA256Stream.h +index 344f8e10..6f3a1168 100644 +--- a/ibrcommon/ssl/RSASHA256Stream.h ++++ b/ibrcommon/ssl/RSASHA256Stream.h +@@ -106,7 +106,7 @@ namespace ibrcommon + + /** the context in which the streamed data will be feed into for + calculation of the hash/signature */ +- EVP_MD_CTX _ctx; ++ EVP_MD_CTX * _ctx; + + /** tells if the context needs to be finalized to get a valid signature or + verification */ +diff --git a/ibrcommon/ssl/iostreamBIO.cpp b/ibrcommon/ssl/iostreamBIO.cpp +index 18c1b55c..ea6c63eb 100644 +--- a/ibrcommon/ssl/iostreamBIO.cpp ++++ b/ibrcommon/ssl/iostreamBIO.cpp +@@ -23,6 +23,7 @@ + + #include "ibrcommon/Logger.h" + ++#include "openssl_compat.h" + #include + + namespace ibrcommon +@@ -42,7 +43,20 @@ static int create(BIO *bio); + //static int destroy(BIO *bio); + //static long (*callback_ctrl)(BIO *, int, bio_info_cb *); + +- ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++BIO_METHOD * BIO_iostream_method() ++{ ++ static BIO_METHOD *iostream_method = NULL; ++ if (iostream_method) { ++ iostream_method = BIO_meth_new(iostreamBIO::type, iostreamBIO::name); ++ BIO_meth_set_write(iostream_method, bwrite); ++ BIO_meth_set_read(iostream_method, bread); ++ BIO_meth_set_ctrl(iostream_method, ctrl); ++ BIO_meth_set_create(iostream_method, create); ++ } ++ return iostream_method; ++} ++#else + static BIO_METHOD iostream_method = + { + iostreamBIO::type, +@@ -56,12 +70,17 @@ static BIO_METHOD iostream_method = + NULL,//destroy, + NULL//callback_ctrl + }; ++BIO_METHOD * BIO_iostream_method() ++{ ++ return &iostream_method; ++} ++#endif + + iostreamBIO::iostreamBIO(iostream *stream) + : _stream(stream) + { + /* create BIO */ +- _bio = BIO_new(&iostream_method); ++ _bio = BIO_new(BIO_iostream_method()); + if(!_bio){ + /* creation failed, throw exception */ + char err_buf[ERR_BUF_SIZE]; +@@ -72,7 +91,7 @@ iostreamBIO::iostreamBIO(iostream *stream) + } + + /* save the iostream in the bio object */ +- _bio->ptr = stream; ++ BIO_set_data(_bio, (void *) stream); + } + + BIO * iostreamBIO::getBIO(){ +@@ -81,10 +100,10 @@ BIO * iostreamBIO::getBIO(){ + + static int create(BIO *bio) + { +- bio->ptr = NULL; +- /* (from openssl memory bio) */ +- bio->shutdown=1; +- bio->init=1; ++ BIO_set_data(bio, NULL); ++ BIO_set_shutdown(bio, 1); ++ BIO_set_init(bio, 1); ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + /* from bss_mem.c (openssl): + * bio->num is used to hold the value to return on 'empty', if it is + * 0, should_retry is not set +@@ -93,6 +112,7 @@ static int create(BIO *bio) + * it is set to 0 since the underlying stream is blocking + */ + bio->num= 0; ++#endif + + return 1; + } +@@ -102,7 +122,7 @@ static int create(BIO *bio) + static long ctrl(BIO *bio, int cmd, long num, void *) + { + long ret; +- iostream *stream = reinterpret_cast(bio->ptr); ++ iostream *stream = reinterpret_cast(BIO_get_data(bio)); + + IBRCOMMON_LOGGER_DEBUG_TAG("iostreamBIO", 90) << "ctrl called, cmd: " << cmd << ", num: " << num << "." << IBRCOMMON_LOGGER_ENDL; + +@@ -147,8 +167,12 @@ static long ctrl(BIO *bio, int cmd, long num, void *) + + static int bread(BIO *bio, char *buf, int len) + { +- iostream *stream = reinterpret_cast(bio->ptr); ++ iostream *stream = reinterpret_cast(BIO_get_data(bio)); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ int num_bytes = 0; ++#else + int num_bytes = bio->num; ++#endif + + try{ + /* make sure to read at least 1 byte and then read as much as we can */ +@@ -170,7 +194,7 @@ static int bwrite(BIO *bio, const char *buf, int len) + if(len == 0){ + return 0; + } +- iostream *stream = reinterpret_cast(bio->ptr); ++ iostream *stream = reinterpret_cast(BIO_get_data(bio)); + + /* write the data */ + try{ +diff --git a/ibrcommon/ssl/openssl_compat.h b/ibrcommon/ssl/openssl_compat.h +new file mode 100644 +index 00000000..e491677f +--- /dev/null ++++ b/ibrcommon/ssl/openssl_compat.h +@@ -0,0 +1,38 @@ ++#ifndef OPENSSL_COMPAT_H ++#define OPENSSL_COMPAT_H ++ ++#include ++#if OPENSSL_VERSION_NUMBER < 0x10100000L ++ ++#include ++#include ++ ++static inline EVP_MD_CTX * EVP_MD_CTX_new() ++{ ++ EVP_MD_CTX *ctx; ++ ++ ctx = (EVP_MD_CTX *) OPENSSL_malloc(sizeof(EVP_MD_CTX)); ++ EVP_MD_CTX_init(ctx); ++ return ctx; ++} ++#define EVP_MD_CTX_free(c) if (c != NULL) OPENSSL_free(c) ++ ++static inline HMAC_CTX * HMAC_CTX_new() ++{ ++ HMAC_CTX *ctx; ++ ++ ctx = (HMAC_CTX *) OPENSSL_malloc(sizeof(HMAC_CTX)); ++ HMAC_CTX_init(ctx); ++ return ctx; ++} ++#define HMAC_CTX_free(c) if (c != NULL) OPENSSL_free(c) ++ ++#define BIO_get_data(b) b->ptr ++#define BIO_set_data(b, v) b->ptr=v ++#define BIO_set_shutdown(b, v) b->shutdown=v ++#define BIO_set_init(b, v) b->init=v ++ ++#endif /* OPENSSL_VERSION_NUMBER */ ++ ++#endif /* OPENSSL_COMPAT_H */ ++ +-- +2.18.0 + diff --git a/package/ibrcommon/0003-ibrcommon-ssl-gcm-fix-static-build-with-openssl.patch b/package/ibrcommon/0003-ibrcommon-ssl-gcm-fix-static-build-with-openssl.patch new file mode 100644 index 00000000..c55b227c --- /dev/null +++ b/package/ibrcommon/0003-ibrcommon-ssl-gcm-fix-static-build-with-openssl.patch @@ -0,0 +1,94 @@ +From 8118c43a53271ba2dd31ce3913a3cd21bc7dcca7 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 16 Feb 2019 11:58:34 +0100 +Subject: [PATCH] ibrcommon/ssl/gcm: fix static build with openssl + +gf_mul is already defined in libcrypto (openssl) so rename it into +ibrdtn_gf_mul to fix following build failure: + +/home/buildroot/autobuild/instance-3/output/host/bin/../arm-buildroot-uclinux-uclibcgnueabi/sysroot/usr/lib/libcrypto.a(f_impl.o): In function `gf_mul': +f_impl.c:(.text+0x0): multiple definition of `gf_mul' +/home/buildroot/autobuild/instance-3/output/host/arm-buildroot-uclinux-uclibcgnueabi/sysroot/usr/lib/libibrcommon.a(gf128mul.o):gf128mul.cpp:(.text+0x30): first defined here +collect2: error: ld returned 1 exit status +Makefile:560: recipe for target 'dtnd' failed + +Fixes: + - http://autobuild.buildroot.org/results/1d3b4b6cf043a3e185ce758b617a0a18c3d36cdb + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/ibrdtn/ibrdtn/pull/269] +--- + ibrcommon/ibrcommon/ssl/gcm/gcm.cpp | 10 +++++----- + ibrcommon/ibrcommon/ssl/gcm/gf128mul.cpp | 2 +- + ibrcommon/ibrcommon/ssl/gcm/gf128mul.h | 2 +- + 3 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/ibrcommon/ssl/gcm/gcm.cpp b/ibrcommon/ssl/gcm/gcm.cpp +index 8a5745b4..6097b43e 100644 +--- a/ibrcommon/ssl/gcm/gcm.cpp ++++ b/ibrcommon/ssl/gcm/gcm.cpp +@@ -89,7 +89,7 @@ ret_type gcm_init_and_key( /* initialise mode and set key + #elif defined( TABLES_256 ) + #define gf_mul_hh(a, ctx, scr) gf_mul_256(a, ctx->gf_t256, scr) + #else +-#define gf_mul_hh(a, ctx, scr) gf_mul(a, ui8_ptr(ctx->ghash_h)) ++#define gf_mul_hh(a, ctx, scr) ibrdtn_gf_mul(a, ui8_ptr(ctx->ghash_h)) + #endif + + ret_type gcm_init_message( /* initialise a new message */ +@@ -334,9 +334,9 @@ ret_type gcm_compute_tag( /* compute authentication tag + memcpy(tbuf, ctx->ghash_h, BLOCK_SIZE); + for( ; ; ) + { +- if(ln & 1) gf_mul(ui8_ptr(ctx->hdr_ghv), tbuf); ++ if(ln & 1) ibrdtn_gf_mul(ui8_ptr(ctx->hdr_ghv), tbuf); + if(!(ln >>= 1)) break; +- gf_mul(tbuf, tbuf); ++ ibrdtn_gf_mul(tbuf, tbuf); + } + } + #else /* this one seems slower on x86 and x86_64 :-( */ +@@ -348,12 +348,12 @@ ret_type gcm_compute_tag( /* compute authentication tag + tbuf[0] = 0x80; + while(i) + { +- gf_mul(tbuf, tbuf); ++ ibrdtn_gf_mul(tbuf, tbuf); + if(i & ln) + gf_mul_hh(tbuf, ctx, scratch); + i >>= 1; + } +- gf_mul(ui8_ptr(ctx->hdr_ghv), tbuf); ++ ibrdtn_gf_mul(ui8_ptr(ctx->hdr_ghv), tbuf); + } + #endif + i = BLOCK_SIZE; ln = (uint_32t)(ctx->txt_acnt << 3); +diff --git a/ibrcommon/ssl/gcm/gf128mul.cpp b/ibrcommon/ssl/gcm/gf128mul.cpp +index a553a044..d0c460c3 100644 +--- a/ibrcommon/ssl/gcm/gf128mul.cpp ++++ b/ibrcommon/ssl/gcm/gf128mul.cpp +@@ -103,7 +103,7 @@ + + const unsigned short gf_tab[256] = gf_dat(xda); + +-void gf_mul(void *a, const void* b) ++void ibrdtn_gf_mul(void *a, const void* b) + { uint_32t r[GF_BYTE_LEN >> 2], p[8][GF_BYTE_LEN >> 2]; + int i; + +diff --git a/ibrcommon/ssl/gcm/gf128mul.h b/ibrcommon/ssl/gcm/gf128mul.h +index 4645c7fe..65fba54b 100644 +--- a/ibrcommon/ssl/gcm/gf128mul.h ++++ b/ibrcommon/ssl/gcm/gf128mul.h +@@ -619,7 +619,7 @@ gf_inline void mul_x(void *r, const void *x) + + /* A slow generic version of gf_mul (a = a * b) */ + +-void gf_mul(void *a, const void* b); ++void ibrdtn_gf_mul(void *a, const void* b); + + /* This version uses 64k bytes of table space on the stack. + A 16 byte buffer has to be multiplied by a 16 byte key +-- +2.14.1 + diff --git a/package/ibrcommon/Config.in b/package/ibrcommon/Config.in new file mode 100644 index 00000000..36ccfbc3 --- /dev/null +++ b/package/ibrcommon/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_IBRCOMMON + bool "ibrcommon" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + IBR-DTN is a small dtn application that supports: + Bundle Protocol RFC 5050 + Bundle Security Protocol RFC 6257 + + http://trac.ibr.cs.tu-bs.de/project-cm-2012-ibrdtn + +comment "ibrcommon needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/ibrcommon/ibrcommon.hash b/package/ibrcommon/ibrcommon.hash new file mode 100644 index 00000000..4b714421 --- /dev/null +++ b/package/ibrcommon/ibrcommon.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 9c457c1ebc01e6216524636628c647bef34ab11bd96f0e0788be8749374fdc20 ibrcommon-1.0.1.tar.gz +sha256 1a0b57773a46d9d4cc2f0d1780a17acc38af506bb1e0234aaa85f8ccd6dc0b92 COPYING +sha256 9b8a430c2136ebcf76bd37f50da7d7a80ede413ec6604cc4694ea536e779854c README diff --git a/package/ibrcommon/ibrcommon.mk b/package/ibrcommon/ibrcommon.mk new file mode 100644 index 00000000..d9e843eb --- /dev/null +++ b/package/ibrcommon/ibrcommon.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# ibrcommon +# +################################################################################ + +IBRCOMMON_VERSION = 1.0.1 +IBRCOMMON_SITE = https://www.ibr.cs.tu-bs.de/projects/ibr-dtn/releases +IBRCOMMON_INSTALL_STAGING = YES +IBRCOMMON_LICENSE = Apache-2.0 +IBRCOMMON_LICENSE_FILES = COPYING README +IBRCOMMON_DEPENDENCIES = host-pkgconf +IBRCOMMON_CONF_ENV = CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11" + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +IBRCOMMON_DEPENDENCIES += openssl +IBRCOMMON_CONF_OPTS += --with-openssl +else +IBRCOMMON_CONF_OPTS += --without-openssl +endif + +ifeq ($(BR2_PACKAGE_LIBNL),y) +IBRCOMMON_DEPENDENCIES += libnl +IBRCOMMON_CONF_OPTS += --with-lowpan +else +IBRCOMMON_CONF_OPTS += --without-lowpan +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +IBRCOMMON_DEPENDENCIES += libxml2 +IBRCOMMON_CONF_OPTS += --with-xml +else +IBRCOMMON_CONF_OPTS += --without-xml +endif + +$(eval $(autotools-package)) diff --git a/package/ibrdtn-tools/Config.in b/package/ibrdtn-tools/Config.in new file mode 100644 index 00000000..91419d67 --- /dev/null +++ b/package/ibrdtn-tools/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_IBRDTN_TOOLS + bool "ibrdtn-tools" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_IBRCOMMON + select BR2_PACKAGE_IBRDTN + help + IBR-DTN is a small dtn application that supports: + Bundle Protocol RFC 5050 + Bundle Security Protocol RFC 6257 + + http://trac.ibr.cs.tu-bs.de/project-cm-2012-ibrdtn + +comment "ibrdtn-tools needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/ibrdtn-tools/ibrdtn-tools.hash b/package/ibrdtn-tools/ibrdtn-tools.hash new file mode 100644 index 00000000..c9fb64cd --- /dev/null +++ b/package/ibrdtn-tools/ibrdtn-tools.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 eab066cf15f9c322d769c6c9c58adfb474cba7d446fd12e8de5ff6344376795b ibrdtn-tools-1.0.1.tar.gz +sha256 809fa1ed21450f59827d1e9aec720bbc4b687434fa22283c6cb5dd82a47ab9c0 COPYING diff --git a/package/ibrdtn-tools/ibrdtn-tools.mk b/package/ibrdtn-tools/ibrdtn-tools.mk new file mode 100644 index 00000000..77dbfc10 --- /dev/null +++ b/package/ibrdtn-tools/ibrdtn-tools.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# ibrdtn-tools +# +################################################################################ + +IBRDTN_TOOLS_VERSION = 1.0.1 +IBRDTN_TOOLS_SITE = https://www.ibr.cs.tu-bs.de/projects/ibr-dtn/releases +IBRDTN_TOOLS_LICENSE = Apache-2.0 +IBRDTN_TOOLS_LICENSE_FILES = COPYING +IBRDTN_TOOLS_DEPENDENCIES = ibrcommon ibrdtn host-pkgconf +IBRDTN_TOOLS_CONF_ENV = CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11" + +ifeq ($(BR2_STATIC_LIBS),y) +IBRDTN_TOOLS_CONF_ENV += LDFLAGS="$(TARGET_LDFLAGS) -pthread" +endif + +ifeq ($(BR2_PACKAGE_LIBDAEMON),y) +IBRDTN_TOOLS_CONF_OPTS += --with-libdaemon +IBRDTN_TOOLS_DEPENDENCIES += libdaemon +else +IBRDTN_TOOLS_CONF_OPTS += --without-libdaemon +endif + +ifeq ($(BR2_PACKAGE_LIBARCHIVE),y) +IBRDTN_TOOLS_CONF_OPTS += --with-libarchive +IBRDTN_TOOLS_DEPENDENCIES += libarchive +else +IBRDTN_TOOLS_CONF_OPTS += --without-libarchive +endif + +$(eval $(autotools-package)) diff --git a/package/ibrdtn/Config.in b/package/ibrdtn/Config.in new file mode 100644 index 00000000..56983159 --- /dev/null +++ b/package/ibrdtn/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_IBRDTN + bool "ibrdtn" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_IBRCOMMON + help + IBR-DTN is a small dtn application that supports: + Bundle Protocol RFC 5050 + Bundle Security Protocol RFC 6257 + + This package contains the ibrdtn library. + + http://trac.ibr.cs.tu-bs.de/project-cm-2012-ibrdtn + +comment "ibrdtn needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/ibrdtn/ibrdtn.hash b/package/ibrdtn/ibrdtn.hash new file mode 100644 index 00000000..0712df1c --- /dev/null +++ b/package/ibrdtn/ibrdtn.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 288b14ccbaefb5e3234065c2778c247797ccb3c7afbb6746bb37dc12c620d360 ibrdtn-1.0.1.tar.gz +sha256 809fa1ed21450f59827d1e9aec720bbc4b687434fa22283c6cb5dd82a47ab9c0 COPYING diff --git a/package/ibrdtn/ibrdtn.mk b/package/ibrdtn/ibrdtn.mk new file mode 100644 index 00000000..99ff92d4 --- /dev/null +++ b/package/ibrdtn/ibrdtn.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# ibrdtn +# +################################################################################ + +IBRDTN_VERSION = 1.0.1 +IBRDTN_SITE = https://www.ibr.cs.tu-bs.de/projects/ibr-dtn/releases +IBRDTN_INSTALL_STAGING = YES +IBRDTN_LICENSE = Apache-2.0 +IBRDTN_LICENSE_FILES = COPYING +IBRDTN_DEPENDENCIES = ibrcommon host-pkgconf +IBRDTN_CONF_ENV = CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11" + +ifeq ($(BR2_PACKAGE_ZLIB),y) +IBRDTN_CONF_OPTS += --with-compression +IBRDTN_DEPENDENCIES += zlib +else +IBRDTN_CONF_OPTS += --without-compression +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +IBRDTN_CONF_OPTS += --with-glib +IBRDTN_DEPENDENCIES += libglib2 +else +IBRDTN_CONF_OPTS += --without-glib +endif + +$(eval $(autotools-package)) diff --git a/package/ibrdtnd/0001-ibrdtnd-added-openssl-compatibility.patch b/package/ibrdtnd/0001-ibrdtnd-added-openssl-compatibility.patch new file mode 100644 index 00000000..8d100e2a --- /dev/null +++ b/package/ibrdtnd/0001-ibrdtnd-added-openssl-compatibility.patch @@ -0,0 +1,205 @@ +From 8785fe0be66c8d6eaa94ffde921909a7ec220123 Mon Sep 17 00:00:00 2001 +From: Eneas U de Queiroz +Date: Sat, 26 May 2018 23:44:54 -0300 +Subject: [PATCH] ibrdtnd: added openssl compatibility + +This patch adds compatibility with openssl 1.1.0 to ibrdtnd. + +Upstream: https://github.com/ibrdtn/ibrdtn/pull/265 + +Signed-off-by: Eneas U de Queiroz +Signed-off-by: Matthew Weber +--- + src/security/exchange/DHProtocol.cpp | 36 ++++++++++--- + src/security/exchange/Makefile.am | 2 + + src/security/exchange/openssl_compat.cpp | 62 ++++++++++++++++++++++ + src/security/exchange/openssl_compat.h | 13 +++++ + 4 files changed, 107 insertions(+), 6 deletions(-) + create mode 100644 src/security/exchange/openssl_compat.cpp + create mode 100644 src/security/exchange/openssl_compat.h + +diff --git a/src/security/exchange/DHProtocol.cpp b/src/security/exchange/DHProtocol.cpp +index e94c502..3e0ad71 100644 +--- a/src/security/exchange/DHProtocol.cpp ++++ b/src/security/exchange/DHProtocol.cpp +@@ -30,6 +30,7 @@ + + #include + #include ++#include "openssl_compat.h" + + #define DH_KEY_LENGTH 1024 + +@@ -132,6 +133,7 @@ namespace dtn + + void DHProtocol::begin(KeyExchangeSession &session, KeyExchangeData &data) + { ++ const BIGNUM *pub_key, *p, *g; + // get session state + DHState &state = session.getState(); + +@@ -159,9 +161,12 @@ namespace dtn + // prepare request + KeyExchangeData request(KeyExchangeData::REQUEST, session); + +- write(request, state.dh->pub_key); +- write(request, state.dh->p); +- write(request, state.dh->g); ++ DH_get0_pqg(state.dh, &p, NULL, &g); ++ DH_get0_key(state.dh, &pub_key, NULL); ++ ++ write(request, pub_key); ++ write(request, p); ++ write(request, g); + + manager.submit(session, request); + } +@@ -177,6 +182,15 @@ namespace dtn + { + if (data.getAction() == KeyExchangeData::REQUEST) + { ++ BIGNUM *p = BN_new(); ++ BIGNUM *g = BN_new(); ++ if (p == NULL || g == NULL) ++ { ++ BN_free(p); ++ BN_free(g); ++ throw ibrcommon::Exception("Error while allocating space for DH parameters"); ++ } ++ + BIGNUM* pub_key = BN_new(); + read(data, &pub_key); + +@@ -184,8 +198,16 @@ namespace dtn + state.dh = DH_new(); + + // read p and g paramter from message +- read(data, &state.dh->p); +- read(data, &state.dh->g); ++ read(data, &p); ++ read(data, &g); ++ ++ if (DH_set0_pqg(state.dh, p, NULL, g)) ++ { ++ BN_free(p); ++ BN_free(g); ++ BN_free(pub_key); ++ throw ibrcommon::Exception("Error while setting DH parameters"); ++ } + + int codes; + if (!DH_check(state.dh, &codes)) +@@ -213,7 +235,9 @@ namespace dtn + state.secret.assign((const char*)secret, length); + + KeyExchangeData response(KeyExchangeData::RESPONSE, session); +- write(response, state.dh->pub_key); ++ const BIGNUM *state_dh_pub_key; ++ DH_get0_key(state.dh, &state_dh_pub_key, NULL); ++ write(response, state_dh_pub_key); + + manager.submit(session, response); + +diff --git a/src/security/exchange/Makefile.am b/src/security/exchange/Makefile.am +index a6b2f83..71ed836 100644 +--- a/src/security/exchange/Makefile.am ++++ b/src/security/exchange/Makefile.am +@@ -22,6 +22,8 @@ exchange_SOURCES += \ + NFCProtocol.cpp \ + NoneProtocol.h \ + NoneProtocol.cpp \ ++ openssl_compat.h \ ++ openssl_compat.cpp \ + QRCodeProtocol.h \ + QRCodeProtocol.cpp + +diff --git a/src/security/exchange/openssl_compat.cpp b/src/security/exchange/openssl_compat.cpp +new file mode 100644 +index 0000000..e3baba0 +--- /dev/null ++++ b/src/security/exchange/openssl_compat.cpp +@@ -0,0 +1,62 @@ ++/* ++ * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the OpenSSL license (the "License"). You may not use ++ * this file except in compliance with the License. You can obtain a copy ++ * in the file LICENSE in the source distribution or at ++ * https://www.openssl.org/source/license.html ++ */ ++ ++#include "openssl_compat.h" ++ ++#if OPENSSL_VERSION_NUMBER < 0x10100000L ++ ++void DH_get0_pqg(const DH *dh, ++ const BIGNUM **p, const BIGNUM **q, const BIGNUM **g) ++{ ++ if (p != NULL) ++ *p = dh->p; ++ if (q != NULL) ++ *q = dh->q; ++ if (g != NULL) ++ *g = dh->g; ++} ++ ++int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g) ++{ ++ /* If the fields p and g in d are NULL, the corresponding input ++ * parameters MUST be non-NULL. q may remain NULL. ++ */ ++ if ((dh->p == NULL && p == NULL) ++ || (dh->g == NULL && g == NULL)) ++ return 0; ++ ++ if (p != NULL) { ++ BN_free(dh->p); ++ dh->p = p; ++ } ++ if (q != NULL) { ++ BN_free(dh->q); ++ dh->q = q; ++ } ++ if (g != NULL) { ++ BN_free(dh->g); ++ dh->g = g; ++ } ++ ++ if (q != NULL) { ++ dh->length = BN_num_bits(q); ++ } ++ ++ return 1; ++} ++ ++void DH_get0_key(const DH *dh, const BIGNUM **pub_key, const BIGNUM **priv_key) ++{ ++ if (pub_key != NULL) ++ *pub_key = dh->pub_key; ++ if (priv_key != NULL) ++ *priv_key = dh->priv_key; ++} ++ ++#endif /* OPENSSL_VERSION_NUMBER */ +diff --git a/src/security/exchange/openssl_compat.h b/src/security/exchange/openssl_compat.h +new file mode 100644 +index 0000000..29e7d41 +--- /dev/null ++++ b/src/security/exchange/openssl_compat.h +@@ -0,0 +1,13 @@ ++#ifndef LIBCRYPTO_COMPAT_H ++#define LIBCRYPTO_COMPAT_H ++ ++#if OPENSSL_VERSION_NUMBER < 0x10100000L ++ ++#include ++ ++void DH_get0_pqg(const DH *dh, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g); ++int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g); ++void DH_get0_key(const DH *dh, const BIGNUM **pub_key, const BIGNUM **priv_key); ++ ++#endif /* OPENSSL_VERSION_NUMBER */ ++#endif /* LIBCRYPTO_COMPAT_H */ +-- +1.9.1 + diff --git a/package/ibrdtnd/0002-SecurityCertificateManager.cpp-include-cstring-267.patch b/package/ibrdtnd/0002-SecurityCertificateManager.cpp-include-cstring-267.patch new file mode 100644 index 00000000..e681936e --- /dev/null +++ b/package/ibrdtnd/0002-SecurityCertificateManager.cpp-include-cstring-267.patch @@ -0,0 +1,29 @@ +From 9458a8627ed73600488a6d8a0ce2ce1d123da583 Mon Sep 17 00:00:00 2001 +From: bkuhls +Date: Sun, 19 Aug 2018 11:23:48 +0200 +Subject: [PATCH] SecurityCertificateManager.cpp: include cstring (#267) + +Fixes build with gcc-8.2.0. + +Upstream: https://github.com/ibrdtn/ibrdtn/commit/122fa8ed49f896abf6a389505f3d0b66d49d1e77 + +Signed-off-by: Matthew Weber +--- + src/security/SecurityCertificateManager.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/security/SecurityCertificateManager.cpp b/src/security/SecurityCertificateManager.cpp +index 5fba703..f2bbb01 100644 +--- a/src/security/SecurityCertificateManager.cpp ++++ b/src/security/SecurityCertificateManager.cpp +@@ -22,6 +22,7 @@ + #include "security/SecurityCertificateManager.h" + #include "Configuration.h" + ++#include + #include + + #include +-- +1.9.1 + diff --git a/package/ibrdtnd/Config.in b/package/ibrdtnd/Config.in new file mode 100644 index 00000000..f7f371ed --- /dev/null +++ b/package/ibrdtnd/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_IBRDTND + bool "ibrdtnd" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_IBRDTN + select BR2_PACKAGE_IBRCOMMON + help + IBR-DTN is a small dtn application that supports: + Bundle Protocol RFC 5050 + Bundle Security Protocol RFC 6257 + + http://trac.ibr.cs.tu-bs.de/project-cm-2012-ibrdtn + +comment "ibrdtnd needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/ibrdtnd/ibrdtnd.hash b/package/ibrdtnd/ibrdtnd.hash new file mode 100644 index 00000000..e1438bee --- /dev/null +++ b/package/ibrdtnd/ibrdtnd.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 9bd79636154093ab6bf4fd10d6c62d67c6db45141460847b19def327c93771ed ibrdtnd-1.0.1.tar.gz +sha256 0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594 COPYING diff --git a/package/ibrdtnd/ibrdtnd.mk b/package/ibrdtnd/ibrdtnd.mk new file mode 100644 index 00000000..20ac496f --- /dev/null +++ b/package/ibrdtnd/ibrdtnd.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# ibrdtnd +# +################################################################################ + +IBRDTND_VERSION = 1.0.1 +IBRDTND_SITE = https://www.ibr.cs.tu-bs.de/projects/ibr-dtn/releases +IBRDTND_LICENSE = Apache-2.0 +IBRDTND_LICENSE_FILES = COPYING +IBRDTND_DEPENDENCIES = ibrdtn ibrcommon host-pkgconf + +# Disable features that don't have the necessary dependencies in +# Buildroot +IBRDTND_CONF_OPTS = \ + --disable-dtndht \ + --without-wifip2p \ + --without-vmime + +# don't build documentation +IBRDTND_CONF_ENV = \ + PDFLATEX='no' \ + CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11" + +ifeq ($(BR2_PACKAGE_LIBDAEMON),y) +IBRDTND_CONF_OPTS += --enable-libdaemon +IBRDTND_DEPENDENCIES += libdaemon +else +IBRDTND_CONF_OPTS += --disable-libdaemon +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +IBRDTND_CONF_OPTS += --with-curl +IBRDTND_DEPENDENCIES += libcurl +else +IBRDTND_CONF_OPTS += --without-curl +endif + +ifeq ($(BR2_PACKAGE_SQLITE),y) +IBRDTND_CONF_OPTS += --with-sqlite +IBRDTND_DEPENDENCIES += sqlite +else +IBRDTND_CONF_OPTS += --without-sqlite +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +IBRDTND_CONF_OPTS += --with-tls +IBRDTND_DEPENDENCIES += openssl +else +IBRDTND_CONF_OPTS += --without-tls +endif + +$(eval $(autotools-package)) diff --git a/package/icu/0001-dont-build-static-dynamic-twice.patch b/package/icu/0001-dont-build-static-dynamic-twice.patch new file mode 100644 index 00000000..ccbe534a --- /dev/null +++ b/package/icu/0001-dont-build-static-dynamic-twice.patch @@ -0,0 +1,37 @@ +Don't build object files twice + +When passed --enable-static and --enable-shared, icu will generate +both a shared and a static version of its libraries. + +However, in order to do so, it builds each and every object file +twice: once with -fPIC (for the shared library), and once without +-fPIC (for the static library). While admittedly building -fPIC for a +static library generates a slightly suboptimal code, this is what all +the autotools-based project are doing. They build each object file +once, and they use it for both the static and shared libraries. + +icu builds the object files for the shared library as .o files, and +the object files for static library as .ao files. By simply changing +the suffix of object files used for static libraries to ".o", we tell +icu to use the ones built for the shared library (i.e, with -fPIC), +and avoid the double build of icu. + +On a fast build server, this brings the target icu build from +3m41.302s down to 1m43.926s (approximate numbers: some other builds +are running on the system at the same time). + +Signed-off-by: Thomas Petazzoni + +Index: b/source/config/mh-linux +=================================================================== +--- a/source/config/mh-linux ++++ b/source/config/mh-linux +@@ -35,7 +35,7 @@ + ## Shared object suffix + SO = so + ## Non-shared intermediate object suffix +-STATIC_O = ao ++STATIC_O = o + + ## Compilation rules + %.$(STATIC_O): $(srcdir)/%.c diff --git a/package/icu/0002-workaround-toolchain-bugs.patch b/package/icu/0002-workaround-toolchain-bugs.patch new file mode 100644 index 00000000..b5f25d0a --- /dev/null +++ b/package/icu/0002-workaround-toolchain-bugs.patch @@ -0,0 +1,37 @@ +Workaround toolchain bugs + +Many of ARM Sourcery CodeBench toolchain have a bug when compiling +icu's translit.cpp source file. The bug is trigerred when there is a +combination of "-W -Wall" and "-Os", and causes an internal compiler +error. The bug has been reported to Mentor Graphics. + +Even though it is clearly a toolchain bug, having a workaround for it +is trivial in this case. So it will avoid our users falling into this +internal compiler error, and allow our autobuilders to test more +packages using this Sourcery CodeBench toolchain.qq + +[Gustavo: update for ICU4C 54.1] +Signed-off-by: Thomas Petazzoni +Signed-off-by: Gustavo Zacarias + +diff -Nura icu.orig/source/configure icu/source/configure +--- icu.orig/source/configure 2014-12-18 15:49:43.038628644 -0300 ++++ icu/source/configure 2014-12-18 15:51:23.183083232 -0300 +@@ -4323,7 +4323,7 @@ + ;; + esac + +- CFLAGS="$CFLAGS -Wall -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings" ++ CFLAGS="$CFLAGS -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings" + else + case "${host}" in + *-*-cygwin) +@@ -4337,7 +4337,7 @@ + fi + if test "$GXX" = yes + then +- CXXFLAGS="$CXXFLAGS -W -Wall -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long" ++ CXXFLAGS="$CXXFLAGS -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long" + else + case "${host}" in + *-*-cygwin) diff --git a/package/icu/0003-link-icudata-as-data-only.patch b/package/icu/0003-link-icudata-as-data-only.patch new file mode 100644 index 00000000..d970e8d3 --- /dev/null +++ b/package/icu/0003-link-icudata-as-data-only.patch @@ -0,0 +1,35 @@ +From d5d0c4bb7cc9aa4a132ec0bea13255aee50c1cf9 Mon Sep 17 00:00:00 2001 +From: Maxime Hadjinlian +Date: Fri, 6 Jun 2014 14:55:58 +0200 +Subject: [PATCH] Don't link icudata as a data only library + +This patch cames straight from Debian. It fixes an issue when +libicudata would not have some flags indicating it's EABIhf, causing +applications linked against libicudata to not start on EABIhf +systems. Getting rid of the -nodefaultlibs -nostdlib flags solves the +problem, and is the solution that is used by Debian, see +https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=653457. + +Signed-off-by: Maxime Hadjinlian +--- + source/config/mh-linux | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/source/config/mh-linux b/source/config/mh-linux +index 531a3b2..5a2a7c4 100644 +--- a/source/config/mh-linux ++++ b/source/config/mh-linux +@@ -21,7 +21,9 @@ LD_RPATH= -Wl,-zorigin,-rpath,'$$'ORIGIN + LD_RPATH_PRE = -Wl,-rpath, + + ## These are the library specific LDFLAGS +-LDFLAGSICUDT=-nodefaultlibs -nostdlib ++#LDFLAGSICUDT=-nodefaultlibs -nostdlib ++# Debian change: linking icudata as data only causes too many problems. ++LDFLAGSICUDT= + + ## Compiler switch to embed a library name + # The initial tab in the next line is to prevent icu-config from reading it. +-- +2.0.0.rc2 + diff --git a/package/icu/0004-fix-static-linking-with-icu-uc.patch b/package/icu/0004-fix-static-linking-with-icu-uc.patch new file mode 100644 index 00000000..965906b9 --- /dev/null +++ b/package/icu/0004-fix-static-linking-with-icu-uc.patch @@ -0,0 +1,34 @@ +From ffff12fd321c7a056e796e74cc508726b0626ae0 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Wed, 22 Jul 2015 22:43:25 +0200 +Subject: [PATCH] fix static linking with icu-uc + +During static linking with a C application and libicuuc.a, +-lstdc++ is required. + +Add -lstdc++ in Libs.private of icu-uc.pc. + +Fixes: +http://autobuild.buildroot.net/results/210/2107f9dfb39eeb6559fb4271c7af8b39aef521ca/ + +Signed-off-by: Romain Naour +--- + source/Makefile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/source/Makefile.in b/source/Makefile.in +index 9db6c52..ca48e16 100644 +--- a/source/Makefile.in ++++ b/source/Makefile.in +@@ -264,7 +264,7 @@ config/icu-uc.pc: config/icu.pc Makefile icudefs.mk + @echo "Description: $(PACKAGE_ICU_DESCRIPTION): Common and Data libraries" >> $@ + @echo "Name: $(PACKAGE)-uc" >> $@ + @echo "Libs:" '-L$${libdir}' "${ICULIBS_UC}" "${ICULIBS_DT}" >> $@ +- @echo "Libs.private:" '$${baselibs}' >> $@ ++ @echo "Libs.private:" '$${baselibs}' -lstdc++ >> $@ + @echo $@ updated. + + config/icu-i18n.pc: config/icu.pc Makefile icudefs.mk +-- +2.4.3 + diff --git a/package/icu/Config.in b/package/icu/Config.in new file mode 100644 index 00000000..8b410bfd --- /dev/null +++ b/package/icu/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_ICU + bool "icu" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_HOST_GCC_AT_LEAST_4_9 # C++11 PR56019 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 PR56019 + depends on BR2_TOOLCHAIN_HAS_THREADS + # icu does some funky things by generating by itself an ELF + # file, and it cannot easily be changed to generate FLAT + # format. + depends on !BR2_BINFMT_FLAT + help + International Components for Unicode. + + https://icu.unicode.org/ + +if BR2_PACKAGE_ICU + +config BR2_PACKAGE_ICU_CUSTOM_DATA_PATH + string "Path to custom data library file" + help + This option allows to define the path to a custom data + library generated with http://apps.icu-project.org/datacustom/ + Make sure you select the appropiate version to match the one + provided by buildroot. + Leave empty to not use this functionality. + +endif + +comment "icu needs a toolchain w/ C++, wchar, threads, gcc >= 4.9, host gcc >= 4.9" + depends on !BR2_BINFMT_FLAT + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_HOST_GCC_AT_LEAST_4_9 diff --git a/package/icu/icu.hash b/package/icu/icu.hash new file mode 100644 index 00000000..0948bf49 --- /dev/null +++ b/package/icu/icu.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 818a80712ed3caacd9b652305e01afc7fa167e6f2e94996da44b90c2ab604ce1 icu4c-73_2-src.tgz +sha256 f3005e195ff74d8812cc1f182a1c446fab678d70a10e3dada497585befee5416 LICENSE diff --git a/package/icu/icu.mk b/package/icu/icu.mk new file mode 100644 index 00000000..73547a75 --- /dev/null +++ b/package/icu/icu.mk @@ -0,0 +1,84 @@ +################################################################################ +# +# icu +# +################################################################################ + +# Git tags (and therefore versions on release-monitoring.org) use the +# XX-Y format, but the tarballs are named XX_Y and the containing +# directories XX.Y. +ICU_VERSION = 73-2 +ICU_SOURCE = icu4c-$(subst -,_,$(ICU_VERSION))-src.tgz +ICU_SITE = \ + https://github.com/unicode-org/icu/releases/download/release-$(ICU_VERSION) +ICU_LICENSE = ICU License +ICU_LICENSE_FILES = LICENSE +ICU_CPE_ID_VENDOR = icu-project +ICU_CPE_ID_PRODUCT = international_components_for_unicode +ICU_CPE_ID_VERSION = $(subst -,.,$(ICU_VERSION)) + +ICU_DEPENDENCIES = host-icu +ICU_INSTALL_STAGING = YES +ICU_CONFIG_SCRIPTS = icu-config +ICU_CONF_OPTS = \ + --with-cross-build=$(HOST_ICU_DIR)/source \ + --disable-samples \ + --disable-tests + +# the icu build process breaks if the TARGET environment variable is +# non-empty +ICU_CONF_ENV += TARGET="" +ICU_MAKE_ENV += TARGET="" +HOST_ICU_CONF_ENV += TARGET="" +HOST_ICU_MAKE_ENV += TARGET="" + +# When available, icu prefers to use C++11 atomics, which rely on the +# __atomic builtins. On certain architectures, this requires linking +# with libatomic starting from gcc 4.8. +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +ICU_CONF_ENV += LIBS="-latomic" +endif + +# strtod_l() is not supported by musl; also xlocale.h is missing +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +ICU_CONF_ENV += ac_cv_func_strtod_l=no +endif + +HOST_ICU_CONF_OPTS = \ + --disable-samples \ + --disable-tests \ + --disable-extras \ + --disable-icuio \ + --disable-layout +ICU_SUBDIR = source +HOST_ICU_SUBDIR = source + +# ICU build scripting adds paths to LD_LIBRARY_PATH using +# LD_LIBRARY_PATH="custom-path:${LD_LIBRARY_PATH}" +# which, if LD_LIBRARY_PATH was empty, causes the last search directory +# to be the working directory, causing the build to try to load target +# libraries, possibly crashing the build due to ABI mismatches. +# Workaround by ensuring LD_LIBRARY_PATH is never empty. +# https://unicode-org.atlassian.net/browse/ICU-21417 +ifeq ($(LD_LIBRARY_PATH),) +ICU_MAKE_ENV += LD_LIBRARY_PATH=/dev/null +endif + +ICU_CUSTOM_DATA_PATH = $(call qstrip,$(BR2_PACKAGE_ICU_CUSTOM_DATA_PATH)) + +ifneq ($(ICU_CUSTOM_DATA_PATH),) +define ICU_COPY_CUSTOM_DATA + cp $(ICU_CUSTOM_DATA_PATH) $(@D)/source/data/in/ +endef +ICU_POST_PATCH_HOOKS += ICU_COPY_CUSTOM_DATA +endif + +define ICU_REMOVE_DEV_FILES + rm -f $(addprefix $(TARGET_DIR)/usr/bin/,derb genbrk gencfu gencnval gendict genrb icuinfo makeconv uconv) + rm -f $(addprefix $(TARGET_DIR)/usr/sbin/,genccode gencmn gennorm2 gensprep icupkg) + rm -rf $(TARGET_DIR)/usr/share/icu +endef +ICU_POST_INSTALL_TARGET_HOOKS += ICU_REMOVE_DEV_FILES + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/ifenslave/Config.in b/package/ifenslave/Config.in new file mode 100644 index 00000000..d28e0f7c --- /dev/null +++ b/package/ifenslave/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_IFENSLAVE + bool "ifenslave" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + Configure network interfaces for parallel routing (bonding) + + https://salsa.debian.org/debian/ifenslave diff --git a/package/ifenslave/ifenslave.hash b/package/ifenslave/ifenslave.hash new file mode 100644 index 00000000..825f2d6f --- /dev/null +++ b/package/ifenslave/ifenslave.hash @@ -0,0 +1,5 @@ +# From http://snapshot.debian.org/archive/debian/20170102T091407Z/pool/main/i/ifenslave/ifenslave_2.9.dsc +sha1 a17e88fa298ef337e872c8aa5d7a390921239d1a ifenslave_2.9.tar.xz +sha256 e5666c0b61347bd06f2394c16eca6895fcb5e5cc83d0a1c596a975274de5a3c9 ifenslave_2.9.tar.xz +# Locally computed +sha256 299e00f3afc0e6ea0685340df73ad444e58e6fe0229989ba0983f5f33e275c41 debian/copyright diff --git a/package/ifenslave/ifenslave.mk b/package/ifenslave/ifenslave.mk new file mode 100644 index 00000000..b51aa720 --- /dev/null +++ b/package/ifenslave/ifenslave.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# ifenslave +# +################################################################################ + +IFENSLAVE_VERSION = 2.9 +IFENSLAVE_SOURCE = ifenslave_$(IFENSLAVE_VERSION).tar.xz +IFENSLAVE_SITE = http://snapshot.debian.org/archive/debian/20170102T091407Z/pool/main/i/ifenslave +IFENSLAVE_LICENSE = GPL-3.0+ +IFENSLAVE_LICENSE_FILES = debian/copyright + +# shell script, so nothing to build + +define IFENSLAVE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/ifenslave $(TARGET_DIR)/sbin/ifenslave +endef + +$(eval $(generic-package)) diff --git a/package/ifmetric/0001-Fix-issue-NETLINK-Packet-too-small-or-truncated-92-1.patch b/package/ifmetric/0001-Fix-issue-NETLINK-Packet-too-small-or-truncated-92-1.patch new file mode 100644 index 00000000..8986b4fc --- /dev/null +++ b/package/ifmetric/0001-Fix-issue-NETLINK-Packet-too-small-or-truncated-92-1.patch @@ -0,0 +1,29 @@ +From 0c80f9ead3eb1d938b3e8e68165c91e62db72de3 Mon Sep 17 00:00:00 2001 +From: Damjan Georgievski +Date: Wed, 15 Aug 2012 00:54:38 +0200 +Subject: [PATCH] Fix issue: NETLINK: Packet too small or truncated! + 92!=16!=244 + +As reported in http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=514197#22 + +Signed-off-by: Peter Korsgaard +--- + src/nlrequest.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/nlrequest.c b/src/nlrequest.c +index 99fd3d0..3a1f794 100644 +--- a/src/nlrequest.c ++++ b/src/nlrequest.c +@@ -44,7 +44,7 @@ int netlink_request(int s, struct nlmsghdr *n, int (*callback) (struct nlmsghdr + + for (;;) { + int bytes; +- char replybuf[2048]; ++ char replybuf[4096]; + struct nlmsghdr *p = (struct nlmsghdr *) replybuf; + + if ((bytes = recv(s, &replybuf, sizeof(replybuf), 0)) < 0) { +-- +2.11.0 + diff --git a/package/ifmetric/Config.in b/package/ifmetric/Config.in new file mode 100644 index 00000000..64c8ace8 --- /dev/null +++ b/package/ifmetric/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_IFMETRIC + bool "ifmetric" + help + Ifmetric is a Linux tool for setting the metrics of all IPv4 + routes attached to a given network interface at once. This + may be used to change the priority of routing IPv4 traffic + over the interface. Lower metrics correlate with higher + priorities. + + http://0pointer.de/lennart/projects/ifmetric/ diff --git a/package/ifmetric/ifmetric.hash b/package/ifmetric/ifmetric.hash new file mode 100644 index 00000000..7b3733fa --- /dev/null +++ b/package/ifmetric/ifmetric.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 0fa8510a4e34e555f136f9df81d26618313f2d69a4880c0fb5967f19502f1aec ifmetric-0.3.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 LICENSE +sha256 1e33d5a8750b4b3c2cb4fb89a916463f3c838f8eb361abbf72faf244c7dde771 README diff --git a/package/ifmetric/ifmetric.mk b/package/ifmetric/ifmetric.mk new file mode 100644 index 00000000..29a6cbcd --- /dev/null +++ b/package/ifmetric/ifmetric.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# ifmetric +# +################################################################################ + +IFMETRIC_VERSION = 0.3 +IFMETRIC_SITE = http://0pointer.de/lennart/projects/ifmetric +IFMETRIC_LICENSE = GPL-2.0+ +IFMETRIC_LICENSE_FILES = LICENSE README +# do not generate documentation +IFMETRIC_CONF_OPTS = --disable-lynx --disable-xmltoman + +$(eval $(autotools-package)) diff --git a/package/ifplugd/0001-cross.patch b/package/ifplugd/0001-cross.patch new file mode 100644 index 00000000..62172381 --- /dev/null +++ b/package/ifplugd/0001-cross.patch @@ -0,0 +1,17 @@ +--- + configure | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: ifplugd-0.28/configure +=================================================================== +--- ifplugd-0.28.orig/configure ++++ ifplugd-0.28/configure +@@ -5430,7 +5430,7 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test "$cross_compiling" = yes; then +- ac_cv_func_malloc_0_nonnull=no ++ ac_cv_func_malloc_0_nonnull=yes + else + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ diff --git a/package/ifplugd/0002-fix-headers.patch b/package/ifplugd/0002-fix-headers.patch new file mode 100644 index 00000000..06372a26 --- /dev/null +++ b/package/ifplugd/0002-fix-headers.patch @@ -0,0 +1,24 @@ +--- + src/interface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: ifplugd-0.28/src/interface.c +=================================================================== +--- ifplugd-0.28.orig/src/interface.c ++++ ifplugd-0.28/src/interface.c +@@ -23,7 +23,6 @@ + #endif + + #include +-#include + #include + #include + #include +@@ -32,6 +31,7 @@ + #include + #include + #include ++#include + #include + #include + #include diff --git a/package/ifplugd/0003-no-cxx.patch b/package/ifplugd/0003-no-cxx.patch new file mode 100644 index 00000000..50ec0545 --- /dev/null +++ b/package/ifplugd/0003-no-cxx.patch @@ -0,0 +1,17 @@ +[PATCH] ifplugd: configure: don't check for C++ compiler + +The configure script was checking for a C++ compiler (and erroring out +if not found), even though it isn't used for anything. + +Signed-off-by: Peter Korsgaard +diff -urpN ifplugd-0.28/configure.ac ifplugd-0.28.new/configure.ac +--- ifplugd-0.28/configure.ac 2005-06-04 21:21:51.000000000 +0200 ++++ ifplugd-0.28.new/configure.ac 2008-12-13 20:31:13.000000000 +0100 +@@ -33,7 +33,6 @@ if type -p stow > /dev/null && test -d / + fi + + # Checks for programs. +-AC_PROG_CXX + AC_PROG_CC + AC_PROG_CPP + AC_PROG_INSTALL diff --git a/package/ifplugd/0004-musl-fix-types.patch b/package/ifplugd/0004-musl-fix-types.patch new file mode 100644 index 00000000..174f9c8a --- /dev/null +++ b/package/ifplugd/0004-musl-fix-types.patch @@ -0,0 +1,24 @@ +The musl C library does not define type names such as `__uint32_t`. Instead we +use the integer types declared in the ISO C standard header file . + +Signed-off-by: Jörg Krause + +diff -purN ifplugd-0.28.orig/src/ethtool-local.h ifplugd-0.28/src/ethtool-local.h +--- ifplugd-0.28.orig/src/ethtool-local.h 2015-08-01 18:43:47.360916834 +0200 ++++ ifplugd-0.28/src/ethtool-local.h 2015-08-01 18:44:24.256037746 +0200 +@@ -21,10 +21,12 @@ + * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + ++#include ++ + typedef unsigned long long u64; +-typedef __uint32_t u32; +-typedef __uint16_t u16; +-typedef __uint8_t u8; ++typedef uint32_t u32; ++typedef uint16_t u16; ++typedef uint8_t u8; + + #include "ethtool-kernel.h" + diff --git a/package/ifplugd/0005-src-interface.h-fix-build-with-gcc-10.patch b/package/ifplugd/0005-src-interface.h-fix-build-with-gcc-10.patch new file mode 100644 index 00000000..febeb768 --- /dev/null +++ b/package/ifplugd/0005-src-interface.h-fix-build-with-gcc-10.patch @@ -0,0 +1,38 @@ +From 4ce42974267dd969a597a7357d6c98ccbe8140f8 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 17 Aug 2020 20:41:29 +0200 +Subject: [PATCH] src/interface.h: fix build with gcc 10 + +This will fix the following build failure: + +/home/buildroot/autobuild/instance-1/output-1/host/bin/arm-buildroot-linux-gnueabihf-gcc -D_REENTRANT -DSYSCONFDIR="\"/etc\"" -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -pipe -W -Wall -Wno-unused-parameter -o ifplugstatus ifplugstatus.o interface.o -L/home/buildroot/autobuild/instance-1/output-1/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/lib -ldaemon +/home/buildroot/autobuild/instance-1/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: interface.o:(.bss+0x0): multiple definition of `interface_do_message'; ifplugstatus.o:(.bss+0xc): first defined here +/home/buildroot/autobuild/instance-1/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: interface.o:(.bss+0x4): multiple definition of `interface_auto_up'; ifplugstatus.o:(.bss+0x4): first defined here + +Fixes: + - http://autobuild.buildroot.org/results/63f7c6fc4a2a30c8eb0298856a2615f816d50299 + +Signed-off-by: Fabrice Fontaine +[Upstream status: sent to Lennart Poettering ] +--- + src/interface.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/interface.h b/src/interface.h +index 2f35a84..e603844 100644 +--- a/src/interface.h ++++ b/src/interface.h +@@ -21,8 +21,8 @@ + * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +-int interface_auto_up; +-int interface_do_message; ++extern int interface_auto_up; ++extern int interface_do_message; + + typedef enum { IFSTATUS_UP, IFSTATUS_DOWN, IFSTATUS_ERR } interface_status_t; + +-- +2.27.0 + diff --git a/package/ifplugd/Config.in b/package/ifplugd/Config.in new file mode 100644 index 00000000..c4b5b5b9 --- /dev/null +++ b/package/ifplugd/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_IFPLUGD + bool "ifplugd" + # libdaemon uses fork() + depends on BR2_USE_MMU + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_LIBDAEMON + help + Ifplugd is a daemon which will automatically configure your + ethernet device when a cable is plugged in and automatically + de-configure it if the cable is pulled out. This is useful + on laptops with onboard network adapters, since it will only + configure the interface when a cable is really connected. + + http://0pointer.de/lennart/projects/ifplugd/ diff --git a/package/ifplugd/ifplugd.hash b/package/ifplugd/ifplugd.hash new file mode 100644 index 00000000..9b720e31 --- /dev/null +++ b/package/ifplugd/ifplugd.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 474754ac4ab32d738cbf2a4a3e87ee0a2c71b9048a38bdcd7df1e4f9fd6541f0 ifplugd-0.28.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 LICENSE diff --git a/package/ifplugd/ifplugd.mk b/package/ifplugd/ifplugd.mk new file mode 100644 index 00000000..6de7f176 --- /dev/null +++ b/package/ifplugd/ifplugd.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# ifplugd +# +################################################################################ + +IFPLUGD_VERSION = 0.28 +IFPLUGD_SITE = http://0pointer.de/lennart/projects/ifplugd +IFPLUGD_LICENSE = GPL-2.0+ +IFPLUGD_LICENSE_FILES = LICENSE +IFPLUGD_SELINUX_MODULES = ifplugd +IFPLUGD_AUTORECONF = YES + +# install-strip unconditionally overwrites $(TARGET_DIR)/etc/ifplugd/ifplugd.* +IFPLUGD_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-exec +IFPLUGD_CONF_OPTS = --disable-lynx --with-initdir=/etc/init.d/ +IFPLUGD_DEPENDENCIES = libdaemon + +define IFPLUGD_INSTALL_FIXUP + $(INSTALL) -D -m 0644 $(@D)/conf/ifplugd.conf $(TARGET_DIR)/etc/ifplugd/ifplugd.conf; \ + $(SED) 's^\(ARGS=.*\)w^\1^' $(TARGET_DIR)/etc/ifplugd/ifplugd.conf; \ + $(INSTALL) -D -m 0755 $(@D)/conf/ifplugd.action \ + $(TARGET_DIR)/etc/ifplugd/ifplugd.action +endef + +IFPLUGD_POST_INSTALL_TARGET_HOOKS += IFPLUGD_INSTALL_FIXUP + +define IFPLUGD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 $(@D)/conf/ifplugd.init \ + $(TARGET_DIR)/etc/init.d/S45ifplugd + # don't use bash for init script + $(SED) 's^/bin/bash^/bin/sh^g' $(TARGET_DIR)/etc/init.d/S45ifplugd +endef + +$(eval $(autotools-package)) diff --git a/package/iftop/0001-ui_common.h-fix-build-with-gcc-10.patch b/package/iftop/0001-ui_common.h-fix-build-with-gcc-10.patch new file mode 100644 index 00000000..4bee03eb --- /dev/null +++ b/package/iftop/0001-ui_common.h-fix-build-with-gcc-10.patch @@ -0,0 +1,60 @@ +From 18a9f7732944bfe45023f9dd7528295e7d43e678 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 12 Aug 2020 22:31:33 +0200 +Subject: [PATCH] ui_common.h: fix build with gcc 10 + +Define global variables as extern in header to fix the build with gcc 10 +which default to -fno-common: https://gcc.gnu.org/gcc-10/porting_to.html + +Fixes: + - http://autobuild.buildroot.org/results/55a8581f11e776439782c228441ef1c8c1243386 + +Signed-off-by: Fabrice Fontaine +[Upstream status: sent to iftop-users@lists.beasts.org] +--- + ui_common.c | 6 ++++++ + ui_common.h | 10 +++++----- + 2 files changed, 11 insertions(+), 5 deletions(-) + +diff --git a/ui_common.c b/ui_common.c +index dcf6646..b1027ec 100644 +--- a/ui_common.c ++++ b/ui_common.c +@@ -17,6 +17,12 @@ + + #include "ui_common.h" + ++sorted_list_type screen_list; ++host_pair_line totals; ++int peaksent, peakrecv, peaktotal; ++hash_type* screen_hash; ++hash_type* service_hash; ++ + /* 2, 10 and 40 seconds */ + int history_divs[HISTORY_DIVISIONS] = {1, 5, 20}; + +diff --git a/ui_common.h b/ui_common.h +index 63ae5bb..add72fe 100644 +--- a/ui_common.h ++++ b/ui_common.h +@@ -33,12 +33,12 @@ typedef struct host_pair_line_tag { + + extern options_t options; + +-sorted_list_type screen_list; +-host_pair_line totals; +-int peaksent, peakrecv, peaktotal; ++extern sorted_list_type screen_list; ++extern host_pair_line totals; ++extern int peaksent, peakrecv, peaktotal; + extern history_type history_totals; +-hash_type* screen_hash; +-hash_type* service_hash; ++extern hash_type* screen_hash; ++extern hash_type* service_hash; + + void analyse_data(void); + void screen_list_init(void); +-- +2.27.0 + diff --git a/package/iftop/0002-Rename-pcap_filter-to-iftop_pcap_filter.patch b/package/iftop/0002-Rename-pcap_filter-to-iftop_pcap_filter.patch new file mode 100644 index 00000000..92eedcca --- /dev/null +++ b/package/iftop/0002-Rename-pcap_filter-to-iftop_pcap_filter.patch @@ -0,0 +1,51 @@ +From 64a185ce2017e4523f4bc39a36c7aebd6d68549a Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 2 Jun 2021 08:21:04 +0200 +Subject: [PATCH] Rename pcap_filter to iftop_pcap_filter + +Rename pcap_filter to iftop_pcap_filter to fix the following static +build failure: + +/home/buildroot/autobuild/run/instance-3/output-1/host/bin/riscv64-linux-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -static -static -o iftop addr_hash.o edline.o hash.o iftop.o ns_hash.o options.o resolver.o screenfilter.o serv_hash.o sorted_list.o threadprof.o ui_common.o ui.o tui.o util.o addrs_ioctl.o addrs_dlpi.o dlcommon.o stringmap.o cfgfile.o vector.o -lpcap -lpcap -L/home/buildroot/autobuild/run/instance-3/output-1/host/riscv64-buildroot-linux-musl/sysroot/usr/bin/../../../../bin/../riscv64-buildroot-linux-musl/sysroot/usr/lib -lnl-genl-3 -lnl-3 -lpthread -lcurses +/home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/riscv64-buildroot-linux-musl/10.2.0/../../../../riscv64-buildroot-linux-musl/bin/ld: /home/buildroot/autobuild/run/instance-3/output-1/host/riscv64-buildroot-linux-musl/sysroot/usr/bin/../../../../bin/../riscv64-buildroot-linux-musl/sysroot/usr/lib/libpcap.a(bpf_filter.o): in function `pcap_filter': +bpf_filter.c:(.text+0x4a8): multiple definition of `pcap_filter'; iftop.o:iftop.c:(.bss+0x1a8): first defined here + +Fixes: + - http://autobuild.buildroot.org/results/eb53ff6b031c654daec57050dec376b5c9134a81 + +Signed-off-by: Fabrice Fontaine +--- + iftop.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/iftop.c b/iftop.c +index aaec6aa..f89eee3 100644 +--- a/iftop.c ++++ b/iftop.c +@@ -74,7 +74,7 @@ int history_len = 1; + pthread_mutex_t tick_mutex; + + pcap_t* pd; /* pcap descriptor */ +-struct bpf_program pcap_filter; ++struct bpf_program iftop_pcap_filter; + pcap_handler packet_handler; + + sig_atomic_t foad; +@@ -679,12 +679,12 @@ char *set_filter_code(const char *filter) { + sprintf(x, "(%s) and (ip or ip6)", filter); + } else + x = xstrdup("ip or ip6"); +- if (pcap_compile(pd, &pcap_filter, x, 1, 0) == -1) { ++ if (pcap_compile(pd, &iftop_pcap_filter, x, 1, 0) == -1) { + xfree(x); + return pcap_geterr(pd); + } + xfree(x); +- if (pcap_setfilter(pd, &pcap_filter) == -1) ++ if (pcap_setfilter(pd, &iftop_pcap_filter) == -1) + return pcap_geterr(pd); + else + return NULL; +-- +2.30.2 + diff --git a/package/iftop/Config.in b/package/iftop/Config.in new file mode 100644 index 00000000..514101ca --- /dev/null +++ b/package/iftop/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_IFTOP + bool "iftop" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_LIBPCAP + help + iftop does for network usage what top(1) does for CPU usage. + It listens to network traffic on a named interface and + displays a table of current bandwidth usage by pairs of hosts. + Handy for answering the question "why is our ADSL link so + slow?". + + http://www.ex-parrot.com/pdw/iftop/ + +comment "iftop needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/iftop/iftop.hash b/package/iftop/iftop.hash new file mode 100644 index 00000000..3611a6a6 --- /dev/null +++ b/package/iftop/iftop.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 f733eeea371a7577f8fe353d86dd88d16f5b2a2e702bd96f5ffb2c197d9b4f97 iftop-1.0pre4.tar.gz +sha256 c00d1408e080e7f14615c7c2e0fbd079f1b2c19e93fc6eab819bdee8d5fdfbc4 COPYING diff --git a/package/iftop/iftop.mk b/package/iftop/iftop.mk new file mode 100644 index 00000000..664c725f --- /dev/null +++ b/package/iftop/iftop.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# iftop +# +################################################################################ + +IFTOP_VERSION = 1.0pre4 +IFTOP_SITE = http://www.ex-parrot.com/pdw/iftop/download +IFTOP_DEPENDENCIES = ncurses libpcap +IFTOP_LICENSE = GPL-2.0+ +IFTOP_LICENSE_FILES = COPYING + +IFTOP_LIBS = -lpcap +ifeq ($(BR2_STATIC_LIBS),y) +IFTOP_LIBS += `$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs` +endif +IFTOP_CONF_ENV += LIBS+="$(IFTOP_LIBS)" + +$(eval $(autotools-package)) diff --git a/package/ifupdown-scripts/Config.in b/package/ifupdown-scripts/Config.in new file mode 100644 index 00000000..166094c5 --- /dev/null +++ b/package/ifupdown-scripts/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_IFUPDOWN_SCRIPTS + bool "ifupdown scripts" + default y if BR2_ROOTFS_SKELETON_DEFAULT + depends on !BR2_PACKAGE_SYSTEMD_NETWORKD && !BR2_PACKAGE_NETIFRC + help + Set of scripts used by ifupdown (either the standalone one, + or the busybox one) to bring network up, or tear it down. diff --git a/package/ifupdown-scripts/S40network b/package/ifupdown-scripts/S40network new file mode 100644 index 00000000..642c5013 --- /dev/null +++ b/package/ifupdown-scripts/S40network @@ -0,0 +1,30 @@ +#!/bin/sh +# +# Start the network.... +# + +# Debian ifupdown needs the /run/network lock directory +mkdir -p /run/network + +case "$1" in + start) + printf "Starting network: " + /sbin/ifup -a + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping network: " + /sbin/ifdown -a + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart|reload) + "$0" stop + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? + diff --git a/package/ifupdown-scripts/ifupdown-scripts.mk b/package/ifupdown-scripts/ifupdown-scripts.mk new file mode 100644 index 00000000..5ef03214 --- /dev/null +++ b/package/ifupdown-scripts/ifupdown-scripts.mk @@ -0,0 +1,72 @@ +################################################################################ +# +# ifupdown-scripts +# +################################################################################ + +define IFUPDOWN_SCRIPTS_PREAMBLE + echo "# interface file auto-generated by buildroot" \ + > $(TARGET_DIR)/etc/network/interfaces +endef + +define IFUPDOWN_SCRIPTS_LOCALHOST + ( \ + echo ; \ + echo "auto lo"; \ + echo "iface lo inet loopback"; \ + ) >> $(TARGET_DIR)/etc/network/interfaces +endef + +IFUPDOWN_SCRIPTS_DHCP_IFACE = $(call qstrip,$(BR2_SYSTEM_DHCP)) + +ifneq ($(IFUPDOWN_SCRIPTS_DHCP_IFACE),) +define IFUPDOWN_SCRIPTS_DHCP + ( \ + echo ; \ + echo "auto $(IFUPDOWN_SCRIPTS_DHCP_IFACE)"; \ + echo "iface $(IFUPDOWN_SCRIPTS_DHCP_IFACE) inet dhcp"; \ + echo " pre-up /etc/network/nfs_check"; \ + echo " wait-delay 15"; \ + echo " hostname \$$(hostname)"; \ + ) >> $(TARGET_DIR)/etc/network/interfaces +endef +define IFUPDOWN_SCRIPTS_DHCP_OPENRC + echo "ifup $(IFUPDOWN_SCRIPTS_DHCP_IFACE)" \ + > $(TARGET_DIR)/etc/ifup.$(IFUPDOWN_SCRIPTS_DHCP_IFACE) + echo "ifdown $(IFUPDOWN_SCRIPTS_DHCP_IFACE)" \ + > $(TARGET_DIR)/etc/ifdown.$(IFUPDOWN_SCRIPTS_DHCP_IFACE) +endef +endif + +define IFUPDOWN_SCRIPTS_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(IFUPDOWN_SCRIPTS_PKGDIR)/nfs_check \ + $(TARGET_DIR)/etc/network/nfs_check + $(call SYSTEM_RSYNC,$(IFUPDOWN_SCRIPTS_PKGDIR)/network,$(TARGET_DIR)/etc/network) +endef + +define IFUPDOWN_SCRIPTS_INSTALL_INIT_OPENRC + $(IFUPDOWN_SCRIPTS_PREAMBLE) + $(IFUPDOWN_SCRIPTS_DHCP) + $(IFUPDOWN_SCRIPTS_DHCP_OPENRC) +endef + +define IFUPDOWN_SCRIPTS_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 $(IFUPDOWN_SCRIPTS_PKGDIR)/S40network \ + $(TARGET_DIR)/etc/init.d/S40network + $(IFUPDOWN_SCRIPTS_PREAMBLE) + $(IFUPDOWN_SCRIPTS_LOCALHOST) + $(IFUPDOWN_SCRIPTS_DHCP) +endef + +# ifupdown-scripts can not be selected when systemd-networkd is +# enabled, so if we are enabled with systemd, we must install our +# own service file. +define IFUPDOWN_SCRIPTS_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(IFUPDOWN_SCRIPTS_PKGDIR)/network.service \ + $(TARGET_DIR)/etc/systemd/system/network.service + $(IFUPDOWN_SCRIPTS_PREAMBLE) + $(IFUPDOWN_SCRIPTS_LOCALHOST) + $(IFUPDOWN_SCRIPTS_DHCP) +endef + +$(eval $(generic-package)) diff --git a/package/ifupdown-scripts/network.service b/package/ifupdown-scripts/network.service new file mode 100644 index 00000000..0d77bb82 --- /dev/null +++ b/package/ifupdown-scripts/network.service @@ -0,0 +1,21 @@ +[Unit] +Description=Network Connectivity +Wants=network.target +Before=network.target + +[Service] +Type=oneshot +RemainAfterExit=yes + +# lo is brought up earlier, which will cause the upcoming "ifup -a" to fail +# with exit code 1, due to an "ip: RTNETLINK answers: File exists" error during +# its "ip addr add ..." command, subsequently causing this unit to fail even +# though it is a benign error. Flushing the lo address with the command below +# before ifup prevents this failure. +ExecStart=/sbin/ip addr flush dev lo + +ExecStart=/sbin/ifup -a +ExecStop=/sbin/ifdown -a + +[Install] +WantedBy=multi-user.target diff --git a/package/ifupdown-scripts/network/if-down.d/.empty b/package/ifupdown-scripts/network/if-down.d/.empty new file mode 100644 index 00000000..e69de29b diff --git a/package/ifupdown-scripts/network/if-post-down.d/.empty b/package/ifupdown-scripts/network/if-post-down.d/.empty new file mode 100644 index 00000000..e69de29b diff --git a/package/ifupdown-scripts/network/if-pre-up.d/wait_iface b/package/ifupdown-scripts/network/if-pre-up.d/wait_iface new file mode 100755 index 00000000..ebccff2a --- /dev/null +++ b/package/ifupdown-scripts/network/if-pre-up.d/wait_iface @@ -0,0 +1,21 @@ +#!/bin/sh + +# In case we have a slow-to-appear interface (e.g. eth-over-USB), +# and we need to configure it, wait until it appears, but not too +# long either. IF_WAIT_DELAY is in seconds. + +if [ "${IF_WAIT_DELAY}" -a ! -e "/sys/class/net/${IFACE}" ]; then + printf "Waiting for interface %s to appear" "${IFACE}" + while [ ${IF_WAIT_DELAY} -gt 0 ]; do + if [ -e "/sys/class/net/${IFACE}" ]; then + printf "\n" + exit 0 + fi + sleep 1 + printf "." + : $((IF_WAIT_DELAY -= 1)) + done + printf " timeout!\n" + exit 1 +fi + diff --git a/package/ifupdown-scripts/network/if-up.d/.empty b/package/ifupdown-scripts/network/if-up.d/.empty new file mode 100644 index 00000000..e69de29b diff --git a/package/ifupdown-scripts/nfs_check b/package/ifupdown-scripts/nfs_check new file mode 100755 index 00000000..dfa0cbf5 --- /dev/null +++ b/package/ifupdown-scripts/nfs_check @@ -0,0 +1,20 @@ +#!/bin/sh + +# This allows NFS booting to work while also being able to configure +# the network interface via DHCP when not NFS booting. Otherwise, a +# NFS booted system will likely hang during DHCP configuration. + +# Attempting to configure the network interface used for NFS will +# initially bring that network down. Since the root filesystem is +# accessed over this network, the system hangs. + +# This script is run by ifup and will attempt to detect if a NFS root +# mount uses the interface to be configured (IFACE), and if so does +# not configure it. This should allow the same build to be disk/flash +# booted or NFS booted. + +nfsip=`sed -n '/^[^ ]*:.* \/ nfs.*[ ,]addr=\([0-9.]\+\).*/s//\1/p' /proc/mounts` +if [ -n "$nfsip" ] && ip route get to "$nfsip" | grep -q "dev $IFACE"; then + echo Skipping $IFACE, used for NFS from $nfsip + exit 1 +fi diff --git a/package/ifupdown/0001-archcommon-define-GNU-only-FNM_EXTMATCH-to-zero-on-n.patch b/package/ifupdown/0001-archcommon-define-GNU-only-FNM_EXTMATCH-to-zero-on-n.patch new file mode 100644 index 00000000..b1b58f1e --- /dev/null +++ b/package/ifupdown/0001-archcommon-define-GNU-only-FNM_EXTMATCH-to-zero-on-n.patch @@ -0,0 +1,41 @@ +From e27fe4b483194ee57736c228b7a6c56696ae8a06 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= +Date: Thu, 16 Mar 2023 09:29:20 +0100 +Subject: [PATCH] archcommon: define GNU-only FNM_EXTMATCH to zero on non-glibc +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +FNM_EXTMATCH is a GNU extension that enables extended pattern matching +for fnmatch(3). Defining it to zero on non-glibc builds makes ifupdown +usable, albeit with a sligthy reduced pattern matching feature set. + +Signed-off-by: Martin Hundebøll +Upstream-status: Denied [https://salsa.debian.org/debian/ifupdown/-/merge_requests/5] +--- + archcommon.h | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/archcommon.h b/archcommon.h +index 818b0b6..981e84f 100644 +--- a/archcommon.h ++++ b/archcommon.h +@@ -1,5 +1,15 @@ + #include "header.h" + ++/* ++ * FNM_EXTMATCH is a GNU extension, so it isn't available when compiling ++ * with MUSL. Defining FNM_EXTMATCH to zero is safe, as the flag merely ++ * enables extended pattern matching, which MUSL users should be able to ++ * live without. ++ */ ++#ifndef FNM_EXTMATCH ++#define FNM_EXTMATCH 0 ++#endif ++ + bool execable(const char *); + + #define iface_is_link() (!_iface_has(ifd->real_iface, ":.")) +-- +2.39.2 + diff --git a/package/ifupdown/0001-dont-use-dpkg-architecture.patch b/package/ifupdown/0001-dont-use-dpkg-architecture.patch new file mode 100644 index 00000000..bb5c58f8 --- /dev/null +++ b/package/ifupdown/0001-dont-use-dpkg-architecture.patch @@ -0,0 +1,17 @@ +Drop the need for dpkg-architecture, we only build for linux. +Thanks to Károly Kasza for catching this one. + +Signed-off-by: Gustavo Zacarias + +diff -Nura ifupdown.orig/defn2c.pl ifupdown/defn2c.pl +--- ifupdown.orig/defn2c.pl 2014-11-18 16:39:28.878772655 -0300 ++++ ifupdown/defn2c.pl 2014-11-18 16:43:41.120456676 -0300 +@@ -2,7 +2,7 @@ + + use strict; + +-my $DEB_HOST_ARCH_OS = `dpkg-architecture -qDEB_HOST_ARCH_OS`; ++my $DEB_HOST_ARCH_OS = "linux"; + + $DEB_HOST_ARCH_OS =~ s/\n//; + diff --git a/package/ifupdown/Config.in b/package/ifupdown/Config.in new file mode 100644 index 00000000..97d02b4c --- /dev/null +++ b/package/ifupdown/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_IFUPDOWN + bool "ifupdown" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # iproute2 + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + # runtime for ip binary + select BR2_PACKAGE_IPROUTE2 if !BR2_PACKAGE_BUSYBOX + # runtime for run-parts + select BR2_PACKAGE_DEBIANUTILS if !BR2_PACKAGE_BUSYBOX + help + High level tools to configure network interfaces. + + https://tracker.debian.org/pkg/ifupdown + +comment "ifupdown needs a toolchain w/ headers >= 3.4" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/package/ifupdown/ifupdown.hash b/package/ifupdown/ifupdown.hash new file mode 100644 index 00000000..f5c2d2d3 --- /dev/null +++ b/package/ifupdown/ifupdown.hash @@ -0,0 +1,4 @@ +# From http://snapshot.debian.org/archive/debian/20230222T205615Z/pool/main/i/ifupdown/ifupdown_0.8.41.dsc +sha256 222c5bef313a9e71d9be4b946c73c8606c98f9e0229153191d9c6d8fb9b3599c ifupdown_0.8.41.tar.xz +# Locally computed +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/ifupdown/ifupdown.mk b/package/ifupdown/ifupdown.mk new file mode 100644 index 00000000..14c36db0 --- /dev/null +++ b/package/ifupdown/ifupdown.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# ifupdown +# +################################################################################ + +IFUPDOWN_VERSION = 0.8.41 +IFUPDOWN_SOURCE = ifupdown_$(IFUPDOWN_VERSION).tar.xz +IFUPDOWN_SITE = http://snapshot.debian.org/archive/debian/20230222T205615Z/pool/main/i/ifupdown +IFUPDOWN_LICENSE = GPL-2.0+ +IFUPDOWN_LICENSE_FILES = COPYING +IFUPDOWN_CPE_ID_VENDOR = debian + +define IFUPDOWN_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) -std=gnu99 -D'IFUPDOWN_VERSION=\"$(IFUPDOWN_VERSION)\"'" \ + ARCH=linux \ + -C $(@D) +endef + +# install doesn't overwrite +define IFUPDOWN_INSTALL_TARGET_CMDS + $(RM) $(TARGET_DIR)/sbin/{ifdown,ifquery} + $(TARGET_MAKE_ENV) $(MAKE) BASEDIR=$(TARGET_DIR) -C $(@D) install +endef + +# We need to switch from /bin/ip to /sbin/ip +IFUPDOWN_DEFN_FILES = can inet inet6 ipx link meta +define IFUPDOWN_MAKE_IP_IN_SBIN + for f in $(IFUPDOWN_DEFN_FILES) ; do \ + $(SED) 's,/bin/ip,/sbin/ip,' $(@D)/$$f.defn ; \ + done +endef +IFUPDOWN_POST_PATCH_HOOKS += IFUPDOWN_MAKE_IP_IN_SBIN + +$(eval $(generic-package)) diff --git a/package/igd2-for-linux/Config.in b/package/igd2-for-linux/Config.in new file mode 100644 index 00000000..f1658d3a --- /dev/null +++ b/package/igd2-for-linux/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_IGD2_FOR_LINUX + bool "igd2-for-linux" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + select BR2_PACKAGE_IPTABLES # runtime + select BR2_PACKAGE_LIBUPNP + help + This is The Linux UPnP Internet Gateway Device 2. It is + modified from the original Linux UPnP Internet Gateway Device + [http://linux-igd.sourceforge.net/] according to UPnP + InternetGatewayDevice:2 specifications. + + It implements the UPnP Internet Gateway Device version 2 + specification (IGDv2) and allows UPnP aware clients, such as + MSN Messenger, Azureus or Miranda to work properly from behind + a NAT firewall. + + Please edit /etc/upnpd.conf before using upnpd! + + https://github.com/Orange-OpenSource/igd2-for-linux + +comment "igd2-for-linux needs a toolchain w/ threads, wchar" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/package/igd2-for-linux/S99upnpd b/package/igd2-for-linux/S99upnpd new file mode 100644 index 00000000..c023fa47 --- /dev/null +++ b/package/igd2-for-linux/S99upnpd @@ -0,0 +1,67 @@ +#!/bin/sh + +NAME=upnpd +PIDFILE=/var/run/$NAME.pid +DAEMON=/usr/sbin/$NAME +CFGFILE=/etc/default/$NAME + +LAN=eth0 +WAN=eth0 + +# For the UPnP library to function correctly, networking must be configured +# properly for multicasting as described in +# https://sourceforge.net/p/pupnp/code/ci/master/tree/README. +# Without this addition, device advertisements and control point searches will +# not function. +# However, the route has to be configured once for all UPnP applications +# (igd2-for-linux, ushare, ...) so do not manage UPnP route by default +MANAGE_UPNP_MULTICAST_ROUTE_ON_LAN=0 + +# Read configuration variable file if it is present +if [ -f $CFGFILE ]; then + . $CFGFILE +fi + +DAEMON_ARGS="-f $WAN $LAN" + +start() { + if [ $MANAGE_UPNP_MULTICAST_ROUTE_ON_LAN != 0 ]; then + printf "Add UPnP multicast route on $LAN\n" + route add -net 239.0.0.0 netmask 255.0.0.0 $LAN + fi + printf "Starting $NAME: " + start-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON -- $DAEMON_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping $NAME: " + start-stop-daemon -K -q -p $PIDFILE + [ $? = 0 ] && echo "OK" || echo "FAIL" + if [ $MANAGE_UPNP_MULTICAST_ROUTE_ON_LAN != 0 ]; then + printf "Remove UPnP multicast route on $LAN\n" + route del -net 239.0.0.0 netmask 255.0.0.0 $LAN + fi +} + +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/package/igd2-for-linux/igd2-for-linux.hash b/package/igd2-for-linux/igd2-for-linux.hash new file mode 100644 index 00000000..3b4fd4f5 --- /dev/null +++ b/package/igd2-for-linux/igd2-for-linux.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 68ee10bf02b18890af8bf9e38be377f038627cd16fce54200fc1b26fd83e4375 igd2-for-linux-2.2.tar.gz +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 linuxigd2/doc/LICENSE +sha256 c8b99423cad48bb44e2cf52a496361404290865eac259a82da6d1e4331ececb3 linuxigd2/src/threadutil/COPYING diff --git a/package/igd2-for-linux/igd2-for-linux.mk b/package/igd2-for-linux/igd2-for-linux.mk new file mode 100644 index 00000000..c646c6bf --- /dev/null +++ b/package/igd2-for-linux/igd2-for-linux.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# igd2-for-linux +# +################################################################################ + +IGD2_FOR_LINUX_VERSION = 2.2 +IGD2_FOR_LINUX_SITE = \ + $(call github,Orange-OpenSource,igd2-for-linux,v$(IGD2_FOR_LINUX_VERSION)) + +IGD2_FOR_LINUX_LICENSE = GPL-2.0, BSD-3-Clause +IGD2_FOR_LINUX_LICENSE_FILES = linuxigd2/doc/LICENSE linuxigd2/src/threadutil/COPYING + +IGD2_FOR_LINUX_DEPENDENCIES = libupnp +# From git +IGD2_FOR_LINUX_AUTORECONF = YES +IGD2_FOR_LINUX_SUBDIR = linuxigd2 + +define IGD2_FOR_LINUX_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/igd2-for-linux/S99upnpd \ + $(TARGET_DIR)/etc/init.d/S99upnpd +endef + +define IGD2_FOR_LINUX_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/igd2-for-linux/upnpd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/upnpd.service +endef + +$(eval $(autotools-package)) diff --git a/package/igd2-for-linux/upnpd.service b/package/igd2-for-linux/upnpd.service new file mode 100644 index 00000000..91a5b4ca --- /dev/null +++ b/package/igd2-for-linux/upnpd.service @@ -0,0 +1,22 @@ +[Unit] +Description=UPnP Internet Gateway Device version 2 daemon +After=network.target + +[Service] +Environment="LAN=eth0" +Environment="WAN=eth0" +EnvironmentFile=/etc/default/upnpd +# For the UPnP library to function correctly, networking must be configured +# properly for multicasting as described in +# https://sourceforge.net/p/pupnp/code/ci/master/tree/README. +# Without this addition, device advertisements and control point searches will +# not function. +# However, the route has to be configured once for all UPnP applications +# (igd2-for-linux, ushare, ...) so do not manage UPnP route by default +#ExecStartPre=/sbin/route add -net 239.0.0.0 netmask 255.0.0.0 $LAN +#ExecStopPost=/sbin/route del -net 239.0.0.0 netmask 255.0.0.0 $LAN +ExecStart=/usr/sbin/upnpd -f $WAN $LAN +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/igh-ethercat/0001-Remove-dev_base_lock-for-linux-6.9.0.patch b/package/igh-ethercat/0001-Remove-dev_base_lock-for-linux-6.9.0.patch new file mode 100644 index 00000000..a71edb7b --- /dev/null +++ b/package/igh-ethercat/0001-Remove-dev_base_lock-for-linux-6.9.0.patch @@ -0,0 +1,51 @@ +From 09eb1b9f73d677d10d18039305b9d974e52cc6d5 Mon Sep 17 00:00:00 2001 +From: Nicola Fontana +Date: Mon, 3 Jun 2024 12:45:48 +0200 +Subject: [PATCH] Remove dev_base_lock for linux >= 6.9.0 + +Kernel commit 1b3ef46cb7f2618cc0b507393220a69810f6da12 removed +`dev_base_lock` from v6.9 onward. + +Use the alternate iterator `for_each_netdev_rcu` introduced by commit +c6d14c84566d6b70ad9dc1618db0dec87cca9300 in 2.6.33+. + +Upstream: https://gitlab.com/etherlab.org/ethercat/-/commit/95c25b50711ca7e1f990bdcbca8fa713c942ab01 +Signed-off-by: Thomas Petazzoni +--- + devices/generic.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/devices/generic.c b/devices/generic.c +index 4d4d9bbd..f30f1e17 100644 +--- a/devices/generic.c ++++ b/devices/generic.c +@@ -420,14 +420,14 @@ int __init ec_gen_init_module(void) + INIT_LIST_HEAD(&generic_devices); + INIT_LIST_HEAD(&descs); + +- read_lock(&dev_base_lock); +- for_each_netdev(&init_net, netdev) { ++ rcu_read_lock(); ++ for_each_netdev_rcu(&init_net, netdev) { + if (netdev->type != ARPHRD_ETHER) + continue; + desc = kmalloc(sizeof(ec_gen_interface_desc_t), GFP_ATOMIC); + if (!desc) { + ret = -ENOMEM; +- read_unlock(&dev_base_lock); ++ rcu_read_unlock(); + goto out_err; + } + strncpy(desc->name, netdev->name, IFNAMSIZ); +@@ -436,7 +436,7 @@ int __init ec_gen_init_module(void) + memcpy(desc->dev_addr, netdev->dev_addr, ETH_ALEN); + list_add_tail(&desc->list, &descs); + } +- read_unlock(&dev_base_lock); ++ rcu_read_unlock(); + + list_for_each_entry_safe(desc, next, &descs, list) { + ret = offer_device(desc); +-- +2.45.2 + diff --git a/package/igh-ethercat/Config.in b/package/igh-ethercat/Config.in new file mode 100644 index 00000000..e600ef5f --- /dev/null +++ b/package/igh-ethercat/Config.in @@ -0,0 +1,29 @@ +comment "igh-ethercat needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_IGH_ETHERCAT + bool "igh-ethercat" + depends on BR2_LINUX_KERNEL + help + IgH EtherCAT Master for Linux. + + http://www.etherlab.org/en/ethercat/index.php + +if BR2_PACKAGE_IGH_ETHERCAT + +config BR2_PACKAGE_IGH_ETHERCAT_8139TOO + bool "8139too driver" + +config BR2_PACKAGE_IGH_ETHERCAT_E100 + bool "e100 driver" + +config BR2_PACKAGE_IGH_ETHERCAT_E1000 + bool "e1000 driver" + +config BR2_PACKAGE_IGH_ETHERCAT_E1000E + bool "e1000e driver" + +config BR2_PACKAGE_IGH_ETHERCAT_R8169 + bool "r8169 driver" + +endif diff --git a/package/igh-ethercat/igh-ethercat.hash b/package/igh-ethercat/igh-ethercat.hash new file mode 100644 index 00000000..67a152c6 --- /dev/null +++ b/package/igh-ethercat/igh-ethercat.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 7e4d8f3497c0bc0b64a151c0d074349fe7614767563642d6fedb19567eafa1e1 igh-ethercat-f5dc109176400f540a8682a2c9ee20d411d14d61.tar.gz +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LESSER diff --git a/package/igh-ethercat/igh-ethercat.mk b/package/igh-ethercat/igh-ethercat.mk new file mode 100644 index 00000000..5b618ab5 --- /dev/null +++ b/package/igh-ethercat/igh-ethercat.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# igh-ethercat +# +################################################################################ + +IGH_ETHERCAT_VERSION = f5dc109176400f540a8682a2c9ee20d411d14d61 +IGH_ETHERCAT_SITE = $(call gitlab,etherlab.org,ethercat,$(IGH_ETHERCAT_VERSION)) +IGH_ETHERCAT_LICENSE = GPL-2.0 (IgH EtherCAT master), LGPL-2.1 (libraries) +IGH_ETHERCAT_LICENSE_FILES = COPYING COPYING.LESSER +# Fetching from Git +IGH_ETHERCAT_AUTORECONF = YES + +IGH_ETHERCAT_INSTALL_STAGING = YES + +IGH_ETHERCAT_CONF_OPTS = \ + --with-linux-dir=$(LINUX_DIR) \ + $(if $(BR2_INSTALL_LIBSTDCPP),--enable-tool,--disable-tool) \ + $(if $(BR2_PACKAGE_IGH_ETHERCAT_8139TOO),--enable-8139too,--disable-8139too) \ + $(if $(BR2_PACKAGE_IGH_ETHERCAT_E100),--enable-e100,--disable-e100) \ + $(if $(BR2_PACKAGE_IGH_ETHERCAT_E1000),--enable-e1000,--disable-e1000) \ + $(if $(BR2_PACKAGE_IGH_ETHERCAT_E1000E),--enable-e1000e,--disable-e1000e) \ + $(if $(BR2_PACKAGE_IGH_ETHERCAT_R8169),--enable-r8169,--disable-r8169) + +$(eval $(kernel-module)) +$(eval $(autotools-package)) diff --git a/package/igmpproxy/Config.in b/package/igmpproxy/Config.in new file mode 100644 index 00000000..37f39b28 --- /dev/null +++ b/package/igmpproxy/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_IGMPPROXY + bool "igmpproxy" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR + help + A simple dynamic Multicast Routing Daemon + using only IGMP signalling. It's intended + for simple forwarding of Multicast traffic + between networks. + + http://sourceforge.net/projects/igmpproxy/ + +comment "igmpproxy needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR diff --git a/package/igmpproxy/igmpproxy.hash b/package/igmpproxy/igmpproxy.hash new file mode 100644 index 00000000..a7e1a065 --- /dev/null +++ b/package/igmpproxy/igmpproxy.hash @@ -0,0 +1,5 @@ +# Locally computed: +sha256 afa4b75a823b82f71ce99f33eae4e8136b906ae8a5ede5caaad93bac38cdae24 igmpproxy-0.4.tar.gz +sha256 be3d05af93dbbc4650f8d641d8e1bec220af4a729e07ba71e949c25b93a1b4f6 COPYING +sha256 c4f65d5d396ad518a37d30b83fe33897661858dc174ff64a15d0461630ce64e4 GPL.txt +sha256 4328a21f0822caa9976356623118bcdcc9970c7a0f9a3deeba23c779b7cfb5d1 Stanford.txt diff --git a/package/igmpproxy/igmpproxy.mk b/package/igmpproxy/igmpproxy.mk new file mode 100644 index 00000000..357c9087 --- /dev/null +++ b/package/igmpproxy/igmpproxy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# igmpproxy +# +################################################################################ + +IGMPPROXY_VERSION = 0.4 +IGMPPROXY_SITE = \ + https://github.com/pali/igmpproxy/releases/download/$(IGMPPROXY_VERSION) +IGMPPROXY_AUTORECONF = YES +IGMPPROXY_LICENSE = GPL-2.0+, BSD-3-Clause (mrouted) +IGMPPROXY_LICENSE_FILES = COPYING GPL.txt Stanford.txt + +$(eval $(autotools-package)) diff --git a/package/igt-gpu-tools/Config.in b/package/igt-gpu-tools/Config.in new file mode 100644 index 00000000..809c8e28 --- /dev/null +++ b/package/igt-gpu-tools/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_IGT_GPU_TOOLS + bool "igt-gpu-tools" + depends on BR2_USE_MMU # fork() + depends on BR2_ENABLE_LOCALE + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_USE_WCHAR # elfutils + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 # linux/dma-buf.h + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # procps-ng + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_CAIRO_PNG + select BR2_PACKAGE_ELFUTILS + select BR2_PACKAGE_KMOD + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBPCIACCESS + select BR2_PACKAGE_PIXMAN + select BR2_PACKAGE_PROCPS_NG + select BR2_PACKAGE_ZLIB + help + IGT GPU Tools is a collection of tools for development and + testing of the DRM drivers. + + https://gitlab.freedesktop.org/drm/igt-gpu-tools + +comment "igt-gpu-tools needs udev /dev management and toolchain w/ threads, wchar, dynamic library, locale, headers >= 4.11" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_HAS_UDEV || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \ + !BR2_ENABLE_LOCALE || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 diff --git a/package/igt-gpu-tools/igt-gpu-tools.hash b/package/igt-gpu-tools/igt-gpu-tools.hash new file mode 100644 index 00000000..bf760b91 --- /dev/null +++ b/package/igt-gpu-tools/igt-gpu-tools.hash @@ -0,0 +1,5 @@ +# Locally calculated from download +sha256 de6e9443d569e76333ec6c8ffc53937b6831224161fe69bf2f07efad3bd0e04a igt-gpu-tools-0ee4074685c1e184f2d3612ea6eb4d126f9a2e23.tar.bz2 + +# Hash for license file: +sha256 1b7e266857b05808660f42369a4a797459d7b7bec7245e378aa28a8db2f213da COPYING diff --git a/package/igt-gpu-tools/igt-gpu-tools.mk b/package/igt-gpu-tools/igt-gpu-tools.mk new file mode 100644 index 00000000..e3e7d4a8 --- /dev/null +++ b/package/igt-gpu-tools/igt-gpu-tools.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# igt-gpu-tools +# +################################################################################ + +IGT_GPU_TOOLS_VERSION = 0ee4074685c1e184f2d3612ea6eb4d126f9a2e23 +IGT_GPU_TOOLS_SOURCE = igt-gpu-tools-$(IGT_GPU_TOOLS_VERSION).tar.bz2 +IGT_GPU_TOOLS_SITE = https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/archive/$(IGT_GPU_TOOLS_VERSION) +IGT_GPU_TOOLS_LICENSE = MIT +IGT_GPU_TOOLS_LICENSE_FILES = COPYING +IGT_GPU_TOOLS_INSTALL_STAGING = YES +IGT_GPU_TOOLS_DEPENDENCIES = \ + host-pkgconf \ + cairo \ + elfutils \ + kmod \ + libdrm \ + libglib2 \ + libpciaccess \ + pixman \ + procps-ng \ + udev \ + zlib + +IGT_GPU_TOOLS_CONF_OPTS = \ + -Dchamelium=disabled \ + -Dtests=disabled + +# On x86 systems, libigt resolves igt_half_to_float and igt_float_to_half as +# indirect functions at runtime by checking CPU features with igt_x86_features. +# The igt_x86_features function is implemented is a different object and the +# call uses the PLT itself. If lazy binding is disabled, this causes a segfault +# while resolving the symbols for libigt on x64 systems. Disable BINDNOW on X86 +# systems to prevent the segfaults. +# https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/102 +# https://bugs.gentoo.org/788625#c13 +ifeq ($(BR2_i386)$(BR2_x86_64)x$(BR2_RELRO_NONE),yx) +IGT_GPU_TOOLS_LDFLAGS = $(TARGET_LDFLAGS) -Wl,-z,lazy +endif + +ifeq ($(BR2_PACKAGE_JSON_C),y) +IGT_GPU_TOOLS_CONF_OPTS += -Drunner=enabled +IGT_GPU_TOOLS_DEPENDENCIES += json-c +else +IGT_GPU_TOOLS_CONF_OPTS += -Drunner=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBUNWIND),y) +IGT_GPU_TOOLS_CONF_OPTS += -Dlibunwind=enabled +IGT_GPU_TOOLS_DEPENDENCIES += libunwind +else +IGT_GPU_TOOLS_CONF_OPTS += -Dlibunwind=disabled +endif + +$(eval $(meson-package)) diff --git a/package/ijs/Config.in b/package/ijs/Config.in new file mode 100644 index 00000000..50e8161b --- /dev/null +++ b/package/ijs/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_IJS + bool "ijs" + depends on BR2_USE_MMU # fork() + help + The IJS package contains a library which implements a + protocol for transmission of raster page images. + + http://www.openprinting.org/ diff --git a/package/ijs/ijs.hash b/package/ijs/ijs.hash new file mode 100644 index 00000000..3d860fc8 --- /dev/null +++ b/package/ijs/ijs.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 11a5f5084488c480f3ff5a24d64d7147bb64272bf60a0ba51330a56c5b50cab9 ijs-0.35.tar.bz2 +sha256 f723390b7ee019eccf07763dcb5744acf8bb43034bc3ba3d6f1c94440e365b4f README diff --git a/package/ijs/ijs.mk b/package/ijs/ijs.mk new file mode 100644 index 00000000..dfd3ff9f --- /dev/null +++ b/package/ijs/ijs.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# ijs +# +################################################################################ + +IJS_VERSION = 0.35 +IJS_SOURCE = ijs-$(IJS_VERSION).tar.bz2 +IJS_SITE = http://www.openprinting.org/download/ijs/download +IJS_LICENSE = MIT +IJS_LICENSE_FILES = README +# Buildroot libtool patch does not apply, so we autoreconf the +# package. +IJS_AUTORECONF = YES +IJS_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/ima-evm-utils/Config.in b/package/ima-evm-utils/Config.in new file mode 100644 index 00000000..6c29c9de --- /dev/null +++ b/package/ima-evm-utils/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_IMA_EVM_UTILS + bool "ima-evm-utils" + depends on BR2_USE_MMU # keyutils + depends on !BR2_STATIC_LIBS # keyutils, tpm2-tss + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_KEYUTILS + select BR2_PACKAGE_TPM2_TSS + help + Linux Integrity Measurement Architecture (IMA) + Extended Verification Module (EVM) tools. + + https://sourceforge.net/p/linux-ima/wiki/Home/ + +comment "ima-evm-utils needs dynamic library support" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/package/ima-evm-utils/ima-evm-utils.hash b/package/ima-evm-utils/ima-evm-utils.hash new file mode 100644 index 00000000..844ba0d4 --- /dev/null +++ b/package/ima-evm-utils/ima-evm-utils.hash @@ -0,0 +1,3 @@ +# https://github.com/linux-integrity/ima-evm-utils/releases/download/v1.6/ima-evm-utils-1.6.tar.gz.sha256 +sha256 3d09e77a09e985b285891f13d458653f44913879147679dce30bdbf00380d40e ima-evm-utils-1.6.tar.gz +sha256 d037fb0b5fdb4d1e09e246a56bdb8049fc6d9b1f9270c0ec2ae4bc8f9285165b LICENSES.txt diff --git a/package/ima-evm-utils/ima-evm-utils.mk b/package/ima-evm-utils/ima-evm-utils.mk new file mode 100644 index 00000000..858efee8 --- /dev/null +++ b/package/ima-evm-utils/ima-evm-utils.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# ima-evm-utils +# +################################################################################ + +IMA_EVM_UTILS_VERSION = 1.6 +IMA_EVM_UTILS_SITE = https://github.com/linux-integrity/ima-evm-utils/releases/download/v$(IMA_EVM_UTILS_VERSION) +IMA_EVM_UTILS_LICENSE = LGPL-2.0+ (libimaevm), GPL-2.0+ (evmctl) +IMA_EVM_UTILS_LICENSE_FILES = LICENSES.txt +IMA_EVM_UTILS_INSTALL_STAGING = YES +IMA_EVM_UTILS_DEPENDENCIES = host-pkgconf keyutils openssl tpm2-tss + +# Tarball doesn't contain configure +IMA_EVM_UTILS_AUTORECONF = YES + +# Build and install in the src subdirectory. This avoids building the +# documentation, which requires asciidoc and xsltproc. Note that configure still +# needs to be run from the top dir, so _SUBDIR can't be used. + +define IMA_EVM_UTILS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src all +endef + +define IMA_EVM_UTILS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR="$(STAGING_DIR)" -C $(@D)/src install +endef + +define IMA_EVM_UTILS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR="$(TARGET_DIR)" -C $(@D)/src install +endef + +$(eval $(autotools-package)) diff --git a/package/imagemagick/Config.in b/package/imagemagick/Config.in new file mode 100644 index 00000000..8b795d89 --- /dev/null +++ b/package/imagemagick/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_IMAGEMAGICK + bool "imagemagick" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + help + ImageMagick(R) is a software suite to create, edit, and + compose bitmap images. It can read, convert and write images + in a variety of formats (about 100) including DPX, EXR, GIF, + JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, and TIFF. + Use ImageMagick to translate, flip, mirror, rotate, scale, + shear and transform images, adjust image colors, apply various + special effects, or draw text, lines, polygons, ellipses and + Bézier curves. + + http://www.imagemagick.org/ + +comment "imagemagick needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/imagemagick/Config.in.host b/package/imagemagick/Config.in.host new file mode 100644 index 00000000..26912e5f --- /dev/null +++ b/package/imagemagick/Config.in.host @@ -0,0 +1,43 @@ +config BR2_PACKAGE_HOST_IMAGEMAGICK + bool "host imagemagick" + help + ImageMagick(R) is a software suite to create, edit, and + compose bitmap images. It can read, convert and write images + in a variety of formats (about 100) including DPX, EXR, GIF, + JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, and TIFF. + Use ImageMagick to translate, flip, mirror, rotate, scale, + shear and transform images, adjust image colors, apply various + special effects, or draw text, lines, polygons, ellipses and + Bézier curves. + + http://www.imagemagick.org/ + +if BR2_PACKAGE_HOST_IMAGEMAGICK + +config BR2_PACKAGE_HOST_IMAGEMAGICK_SVG + bool "SVG support" + depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS # host-librsvg + depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-pango -> host-harfbuzz + select BR2_PACKAGE_HOST_IMAGEMAGICK_XML + help + Say 'y' here is you need ImageMagick tools (like convert) + to support SVG. + + This is not enabled by default, as it brings quite a few + extra dependencies, and thus extra build time. + +comment "SVG support needs host gcc >= 4.9" + depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS + depends on !BR2_HOST_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_HOST_IMAGEMAGICK_XML + bool "XML support" + help + Say 'y' here if you need ImageMagick to support XML. Indeed, + ImageMagick does not trust unvalidated XMP profiles in + images. If such a XML profile is encountered inside e.g. a + PNG image the processing is aborted. Validating the XMP + profile requires that ImageMagick is compiled with XML + support. + +endif diff --git a/package/imagemagick/imagemagick.hash b/package/imagemagick/imagemagick.hash new file mode 100644 index 00000000..30a12220 --- /dev/null +++ b/package/imagemagick/imagemagick.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 c82210ea3fdbd044b656ba3d5b42df1da9a18e78fc0e500169bad70d3b0d9ba3 imagemagick-7.1.1-31.tar.gz +sha256 a556c5292c87c9a6ac795c80669b0c3660f9f729de8c476bf2b10f83ab1b34ec LICENSE diff --git a/package/imagemagick/imagemagick.mk b/package/imagemagick/imagemagick.mk new file mode 100644 index 00000000..b2d3e755 --- /dev/null +++ b/package/imagemagick/imagemagick.mk @@ -0,0 +1,264 @@ +################################################################################ +# +# imagemagick +# +################################################################################ + +IMAGEMAGICK_VERSION = 7.1.1-31 +IMAGEMAGICK_SITE = $(call github,ImageMagick,ImageMagick,$(IMAGEMAGICK_VERSION)) +IMAGEMAGICK_LICENSE = Apache-2.0 +IMAGEMAGICK_LICENSE_FILES = LICENSE +IMAGEMAGICK_CPE_ID_VENDOR = imagemagick + +IMAGEMAGICK_INSTALL_STAGING = YES +IMAGEMAGICK_CONFIG_SCRIPTS = \ + $(addsuffix -config,MagickCore MagickWand) + +ifeq ($(BR2_INSTALL_LIBSTDCPP)$(BR2_USE_WCHAR),yy) +IMAGEMAGICK_CONFIG_SCRIPTS += Magick++-config +endif + +IMAGEMAGICK_CONF_ENV = \ + ac_cv_sys_file_offset_bits=64 \ + ax_cv_check_cl_libcl=no + +IMAGEMAGICK_CONF_OPTS = \ + --program-transform-name='s,,,' \ + --disable-opencl \ + --disable-openmp \ + --without-djvu \ + --without-dps \ + --without-flif \ + --without-fpx \ + --without-gslib \ + --without-gvc \ + --without-jbig \ + --without-jxl \ + --without-lqr \ + --without-openexr \ + --without-openjp2 \ + --without-perl \ + --without-raqm \ + --without-wmf \ + --without-x \ + --with-gs-font-dir=/usr/share/fonts/gs + +IMAGEMAGICK_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +# Like postgreSQL, imagemagick does not build against uClibc with +# locales enabled, due to an uClibc bug, see +# http://lists.uclibc.org/pipermail/uclibc/2014-April/048326.html +# so overwrite automatic detection and disable locale support +IMAGEMAGICK_CONF_ENV += ac_cv_func_newlocale=no +endif + +ifeq ($(BR2_PACKAGE_FONTCONFIG),y) +IMAGEMAGICK_CONF_OPTS += --with-fontconfig +IMAGEMAGICK_DEPENDENCIES += fontconfig +else +IMAGEMAGICK_CONF_OPTS += --without-fontconfig +endif + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +IMAGEMAGICK_CONF_OPTS += --with-freetype +IMAGEMAGICK_CONF_ENV += \ + ac_cv_path_freetype_config=$(STAGING_DIR)/usr/bin/freetype-config +IMAGEMAGICK_DEPENDENCIES += freetype +else +IMAGEMAGICK_CONF_OPTS += --without-freetype +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +IMAGEMAGICK_CONF_OPTS += --with-jpeg +IMAGEMAGICK_DEPENDENCIES += jpeg +else +IMAGEMAGICK_CONF_OPTS += --without-jpeg +endif + +ifeq ($(BR2_PACKAGE_LCMS2),y) +IMAGEMAGICK_CONF_OPTS += --with-lcms +IMAGEMAGICK_DEPENDENCIES += lcms2 +else +IMAGEMAGICK_CONF_OPTS += --without-lcms +endif + +ifeq ($(BR2_PACKAGE_LIBHEIF),y) +IMAGEMAGICK_CONF_OPTS += --with-heic +IMAGEMAGICK_DEPENDENCIES += libheif +else +IMAGEMAGICK_CONF_OPTS += --without-heic +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +IMAGEMAGICK_CONF_OPTS += --with-png +IMAGEMAGICK_DEPENDENCIES += libpng +else +IMAGEMAGICK_CONF_OPTS += --without-png +endif + +ifeq ($(BR2_PACKAGE_LIBRAW),y) +IMAGEMAGICK_CONF_OPTS += --with-raw +IMAGEMAGICK_DEPENDENCIES += libraw +else +IMAGEMAGICK_CONF_OPTS += --without-raw +endif + +ifeq ($(BR2_PACKAGE_LIBRSVG),y) +IMAGEMAGICK_CONF_OPTS += --with-rsvg +IMAGEMAGICK_DEPENDENCIES += librsvg +else +IMAGEMAGICK_CONF_OPTS += --without-rsvg +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +IMAGEMAGICK_CONF_OPTS += --with-xml +IMAGEMAGICK_CONF_ENV += ac_cv_path_xml2_config=$(STAGING_DIR)/usr/bin/xml2-config +IMAGEMAGICK_DEPENDENCIES += libxml2 +else +IMAGEMAGICK_CONF_OPTS += --without-xml +endif + +ifeq ($(BR2_PACKAGE_LIBZIP),y) +IMAGEMAGICK_CONF_OPTS += --with-zip +IMAGEMAGICK_DEPENDENCIES += libzip +else +IMAGEMAGICK_CONF_OPTS += --without-zip +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +IMAGEMAGICK_CONF_OPTS += --with-zstd +IMAGEMAGICK_DEPENDENCIES += zstd +else +IMAGEMAGICK_CONF_OPTS += --without-zstd +endif + +ifeq ($(BR2_PACKAGE_PANGO),y) +IMAGEMAGICK_CONF_OPTS += --with-pango +IMAGEMAGICK_DEPENDENCIES += pango +else +IMAGEMAGICK_CONF_OPTS += --without-pango +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +IMAGEMAGICK_CONF_OPTS += --with-tiff +IMAGEMAGICK_DEPENDENCIES += tiff +else +IMAGEMAGICK_CONF_OPTS += --without-tiff +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +IMAGEMAGICK_CONF_OPTS += --with-lzma +IMAGEMAGICK_DEPENDENCIES += xz +else +IMAGEMAGICK_CONF_OPTS += --without-lzma +endif + +ifeq ($(BR2_PACKAGE_FFTW_DOUBLE),y) +# configure script misdetects these leading to build errors +IMAGEMAGICK_CONF_ENV += ac_cv_func_creal=yes ac_cv_func_cimag=yes +IMAGEMAGICK_CONF_OPTS += --with-fftw +IMAGEMAGICK_DEPENDENCIES += fftw-double +else +IMAGEMAGICK_CONF_OPTS += --without-fftw +endif + +ifeq ($(BR2_PACKAGE_WEBP),y) +IMAGEMAGICK_CONF_OPTS += --with-webp +IMAGEMAGICK_DEPENDENCIES += webp +else +IMAGEMAGICK_CONF_OPTS += --without-webp +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +IMAGEMAGICK_CONF_OPTS += --with-zlib +IMAGEMAGICK_DEPENDENCIES += zlib +else +IMAGEMAGICK_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +IMAGEMAGICK_CONF_OPTS += --with-bzlib +IMAGEMAGICK_DEPENDENCIES += bzip2 +else +IMAGEMAGICK_CONF_OPTS += --without-bzlib +endif + +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +IMAGEMAGICK_CONF_OPTS += --with-utilities +else +IMAGEMAGICK_CONF_OPTS += --without-utilities +endif + +HOST_IMAGEMAGICK_CONF_OPTS = \ + --disable-opencl \ + --disable-openmp \ + --without-djvu \ + --without-dps \ + --without-flif \ + --without-fpx \ + --without-gslib \ + --without-gvc \ + --without-heic \ + --without-jbig \ + --without-jxl \ + --without-lqr \ + --without-openexr \ + --without-openjp2 \ + --without-perl \ + --without-raqm \ + --without-raw \ + --without-wmf \ + --without-x \ + --without-zip \ + --without-zstd \ + --without-bzlib \ + --without-fftw \ + --without-lcms \ + --without-lzma \ + --without-tiff \ + --without-webp \ + --with-jpeg \ + --with-png \ + --with-zlib + +# uses clock_gettime, which was provided by librt in glibc < 2.17 +HOST_IMAGEMAGICK_CONF_ENV = \ + LIBS="-lrt" \ + ax_cv_check_cl_libcl=no + +HOST_IMAGEMAGICK_DEPENDENCIES = \ + host-libjpeg \ + host-libpng \ + host-pkgconf \ + host-zlib + +ifeq ($(BR2_PACKAGE_HOST_IMAGEMAGICK_SVG),y) +HOST_IMAGEMAGICK_DEPENDENCIES += \ + host-fontconfig \ + host-freetype \ + host-librsvg \ + host-pango +HOST_IMAGEMAGICK_CONF_ENV += ac_cv_path_xml2_config=$(HOST_DIR)/bin/xml2-config +HOST_IMAGEMAGICK_CONF_OPTS += \ + --with-fontconfig \ + --with-freetype \ + --with-pango \ + --with-rsvg +else +HOST_IMAGEMAGICK_CONF_OPTS += \ + --without-fontconfig \ + --without-freetype \ + --without-pango \ + --without-rsvg +endif + +ifeq ($(BR2_PACKAGE_HOST_IMAGEMAGICK_XML),y) +HOST_IMAGEMAGICK_CONF_OPTS += --with-xml +HOST_IMAGEMAGICK_DEPENDENCIES += host-libxml2 +else +HOST_IMAGEMAGICK_CONF_OPTS += --without-xml +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/imlib2/Config.in b/package/imlib2/Config.in new file mode 100644 index 00000000..c47178f1 --- /dev/null +++ b/package/imlib2/Config.in @@ -0,0 +1,42 @@ +comment "imlib2 needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_IMLIB2 + bool "imlib2" + depends on !BR2_STATIC_LIBS # dlopen() + select BR2_PACKAGE_FREETYPE + help + Imlib 2 is the successor to Imlib. This library provides + routines to load, save and render images in various formats. + + http://freshmeat.net/projects/imlib2/ + +if BR2_PACKAGE_IMLIB2 + +config BR2_PACKAGE_IMLIB2_JPEG + bool "JPEG support" + select BR2_PACKAGE_JPEG + +config BR2_PACKAGE_IMLIB2_PNG + bool "PNG support" + select BR2_PACKAGE_LIBPNG + +config BR2_PACKAGE_IMLIB2_GIF + bool "GIF support" + select BR2_PACKAGE_GIFLIB + +config BR2_PACKAGE_IMLIB2_TIFF + bool "TIFF support" + select BR2_PACKAGE_TIFF + +config BR2_PACKAGE_IMLIB2_ID3 + bool "ID3 support" + select BR2_PACKAGE_LIBID3TAG + +config BR2_PACKAGE_IMLIB2_X + bool "X support" + default y + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBX11 +endif diff --git a/package/imlib2/imlib2.hash b/package/imlib2/imlib2.hash new file mode 100644 index 00000000..690d836c --- /dev/null +++ b/package/imlib2/imlib2.hash @@ -0,0 +1,8 @@ +# From https://sourceforge.net/projects/enlightenment/files/imlib2-src/1.7.3/ +md5 1e79055a0b8fe27d208b6f8bb1bde60c imlib2-1.7.3.tar.bz2 +sha1 3d55965f946d0b2754a84c8e57c78ddc227252c6 imlib2-1.7.3.tar.bz2 + +# Locally computed +sha256 158d0b8c20bc11221af9e77a64a116fca7051b03cdea2c4f31d31f469382f997 imlib2-1.7.3.tar.bz2 +sha256 fb70339dd33a77b6213c7ae067fccf93d04af44ff3f937c61f8863f7970e73f6 COPYING +sha256 8c9a2e92ed4937e2d30c2ea95439c36ed3002fc47e34efee43455a460fee8ef5 COPYING-PLAIN diff --git a/package/imlib2/imlib2.mk b/package/imlib2/imlib2.mk new file mode 100644 index 00000000..89b4769f --- /dev/null +++ b/package/imlib2/imlib2.mk @@ -0,0 +1,68 @@ +################################################################################ +# +# imlib2 +# +################################################################################ + +IMLIB2_VERSION = 1.7.3 +IMLIB2_SOURCE = imlib2-$(IMLIB2_VERSION).tar.bz2 +IMLIB2_SITE = http://downloads.sourceforge.net/project/enlightenment/imlib2-src/$(IMLIB2_VERSION) +IMLIB2_LICENSE = Imlib2 +IMLIB2_LICENSE_FILES = COPYING COPYING-PLAIN +IMLIB2_CPE_ID_VENDOR = enlightenment + +IMLIB2_INSTALL_STAGING = YES +IMLIB2_DEPENDENCIES = host-pkgconf freetype +IMLIB2_CONF_OPTS = --with-freetype-config=$(STAGING_DIR)/usr/bin/freetype-config +IMLIB2_CONFIG_SCRIPTS = imlib2-config + +ifeq ($(BR2_PACKAGE_IMLIB2_X),y) +IMLIB2_CONF_OPTS += --with-x +IMLIB2_DEPENDENCIES += xlib_libX11 xlib_libXext +else +IMLIB2_CONF_OPTS += --without-x +endif + +ifeq ($(BR2_PACKAGE_IMLIB2_JPEG),y) +IMLIB2_CONF_OPTS += --with-jpeg +IMLIB2_DEPENDENCIES += jpeg +else +IMLIB2_CONF_OPTS += --without-jpeg +endif + +ifeq ($(BR2_PACKAGE_IMLIB2_PNG),y) +IMLIB2_CONF_OPTS += --with-png +IMLIB2_DEPENDENCIES += libpng +else +IMLIB2_CONF_OPTS += --without-png +endif + +ifeq ($(BR2_PACKAGE_IMLIB2_GIF),y) +IMLIB2_CONF_OPTS += --with-gif +IMLIB2_DEPENDENCIES += giflib +else +IMLIB2_CONF_OPTS += --without-gif +endif + +ifeq ($(BR2_PACKAGE_IMLIB2_TIFF),y) +IMLIB2_CONF_OPTS += --with-tiff +IMLIB2_DEPENDENCIES += tiff +else +IMLIB2_CONF_OPTS += --without-tiff +endif + +ifeq ($(BR2_PACKAGE_IMLIB2_ID3),y) +IMLIB2_CONF_OPTS += --with-id3 +IMLIB2_DEPENDENCIES += libid3tag +else +IMLIB2_CONF_OPTS += --without-id3 +endif + +# drop -L from linker flags +define IMLIB2_FIXUP_IMLIB2_CONFIG + $(SED) 's/-L[^ ]*//g' $(STAGING_DIR)/usr/bin/imlib2-config +endef + +IMLIB2_POST_INSTALL_STAGING_HOOKS += IMLIB2_FIXUP_IMLIB2_CONFIG + +$(eval $(autotools-package)) diff --git a/package/imx-mkimage/0001-Add-unused-fake-version.patch b/package/imx-mkimage/0001-Add-unused-fake-version.patch new file mode 100644 index 00000000..7e8a98c1 --- /dev/null +++ b/package/imx-mkimage/0001-Add-unused-fake-version.patch @@ -0,0 +1,36 @@ +From 30e81d949d03f24de3b89d14cf98cb7decb2740c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andr=C3=A9=20Hentschel?= +Date: Mon, 25 Feb 2019 22:15:55 +0100 +Subject: [PATCH] Add unused fake version +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The Makefile makes the assumption that the build process runs +from a Git clone of the source code. +We can safely add a fake version here, because the code to +print it is broken anyway. + +Signed-off-by: André Hentschel +--- + Makefile | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/Makefile b/Makefile +index 1c0b039..49639a5 100644 +--- a/Makefile ++++ b/Makefile +@@ -41,9 +41,7 @@ $(MKIMG): src/build_info.h $(SRCS) + bin: $(MKIMG) + + src/build_info.h: +- @echo -n '#define MKIMAGE_COMMIT 0x' > src/build_info.h +- @git rev-parse --short=8 HEAD >> src/build_info.h +- @echo '' >> src/build_info.h ++ @echo '#define MKIMAGE_COMMIT 0xdeadbeef' > src/build_info.h + + help: + @echo $(CURR_DIR) +-- +2.31.1 + diff --git a/package/imx-mkimage/Config.in.host b/package/imx-mkimage/Config.in.host new file mode 100644 index 00000000..09df2a3c --- /dev/null +++ b/package/imx-mkimage/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_IMX_MKIMAGE + bool "host imx-mkimage" + help + imx-mkimage is used to combine input images and generate + final boot image with appropriate IVT set. + + https://github.com/nxp-imx/imx-mkimage diff --git a/package/imx-mkimage/imx-mkimage.hash b/package/imx-mkimage/imx-mkimage.hash new file mode 100644 index 00000000..02205def --- /dev/null +++ b/package/imx-mkimage/imx-mkimage.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 0a5654229c063e4e87b5d69f47a4a913ecee51f8a817ae2346a2a407e765ed3b imx-mkimage-lf-6.6.23-2.0.0.tar.gz +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c LICENSE diff --git a/package/imx-mkimage/imx-mkimage.mk b/package/imx-mkimage/imx-mkimage.mk new file mode 100644 index 00000000..f7396ba1 --- /dev/null +++ b/package/imx-mkimage/imx-mkimage.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# imx-mkimage +# +################################################################################ + +IMX_MKIMAGE_VERSION = lf-6.6.23-2.0.0 +IMX_MKIMAGE_SITE = $(call github,nxp-imx,imx-mkimage,$(IMX_MKIMAGE_VERSION)) +IMX_MKIMAGE_LICENSE = GPL-2.0+ +IMX_MKIMAGE_LICENSE_FILES = LICENSE +HOST_IMX_MKIMAGE_DEPENDENCIES = host-zlib + +ifeq ($(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M)$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM)$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN)$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP),y) +# i.MX8M needs a different binary +define HOST_IMX_MKIMAGE_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) \ + CFLAGS="$(HOST_CFLAGS) -std=c99" \ + BUILD_LDFLAGS="$(HOST_LDFLAGS)" \ + -C $(@D)/iMX8M SOC_DIR=iMX8M -f soc.mak mkimage_imx8 +endef +define HOST_IMX_MKIMAGE_INSTALL_CMDS + $(INSTALL) -D -m 755 $(@D)/iMX8M/mkimage_imx8 $(HOST_DIR)/bin/mkimage_imx8 + $(INSTALL) -D -m 755 $(@D)/iMX8M/mkimage_fit_atf.sh $(HOST_DIR)/bin/mkimage_fit_atf.sh + $(INSTALL) -D -m 755 $(@D)/iMX8M/print_fit_hab.sh $(HOST_DIR)/bin/print_fit_hab.sh +endef +else +# i.MX8, i.MX8X and i.MX9 +define HOST_IMX_MKIMAGE_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) \ + CFLAGS="$(HOST_CFLAGS) -std=c99" \ + -C $(@D) MKIMG=mkimage_imx8 mkimage_imx8 +endef +define HOST_IMX_MKIMAGE_INSTALL_CMDS + $(INSTALL) -D -m 755 $(@D)/mkimage_imx8 $(HOST_DIR)/bin/mkimage_imx8 +endef +endif + +$(eval $(host-generic-package)) diff --git a/package/imx-usb-loader/Config.in b/package/imx-usb-loader/Config.in new file mode 100644 index 00000000..9a152e09 --- /dev/null +++ b/package/imx-usb-loader/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_IMX_USB_LOADER + bool "imx-usb-loader" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + This package contains tools to download and execute code + on Freescale i.MX5/i.MX6 and Vybrid SoCs through the + Serial Download Protocol. + + https://github.com/boundarydevices/imx_usb_loader + +comment "imx-usb-loader needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/imx-usb-loader/Config.in.host b/package/imx-usb-loader/Config.in.host new file mode 100644 index 00000000..78c5edea --- /dev/null +++ b/package/imx-usb-loader/Config.in.host @@ -0,0 +1,14 @@ +config BR2_PACKAGE_HOST_IMX_USB_LOADER + bool "host imx-usb-loader" + depends on BR2_arm || BR2_aarch64 + depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb + help + This package contains tools to download and execute code + on Freescale i.MX5x/6x/7x/8x and Vybrid SoCs through the + Serial Download Protocol. + + https://github.com/boundarydevices/imx_usb_loader + +comment "host imx-usb-loader needs a toolchain w/ host gcc >= 4.9" + depends on BR2_arm || BR2_aarch64 + depends on !BR2_HOST_GCC_AT_LEAST_4_9 diff --git a/package/imx-usb-loader/imx-usb-loader.hash b/package/imx-usb-loader/imx-usb-loader.hash new file mode 100644 index 00000000..7e1c0971 --- /dev/null +++ b/package/imx-usb-loader/imx-usb-loader.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 4357907c9669874d3ccbf00395bf0b1733c26e6daea85d721f1c0cd897f4162c imx-usb-loader-30b43d69770cd69e84c045dc9dcabb1f3e9d975a.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/imx-usb-loader/imx-usb-loader.mk b/package/imx-usb-loader/imx-usb-loader.mk new file mode 100644 index 00000000..1a094869 --- /dev/null +++ b/package/imx-usb-loader/imx-usb-loader.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# imx-usb-loader +# +################################################################################ + +IMX_USB_LOADER_VERSION = 30b43d69770cd69e84c045dc9dcabb1f3e9d975a + +IMX_USB_LOADER_SITE = $(call github,boundarydevices,imx_usb_loader,$(IMX_USB_LOADER_VERSION)) +IMX_USB_LOADER_LICENSE = LGPL-2.1+ +IMX_USB_LOADER_LICENSE_FILES = COPYING +IMX_USB_LOADER_DEPENDENCIES = libusb host-pkgconf +HOST_IMX_USB_LOADER_DEPENDENCIES = host-libusb host-pkgconf + +define IMX_USB_LOADER_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define HOST_IMX_USB_LOADER_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define IMX_USB_LOADER_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) prefix=$(TARGET_DIR)/usr install +endef + +define HOST_IMX_USB_LOADER_INSTALL_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) prefix=$(HOST_DIR) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/inadyn/Config.in b/package/inadyn/Config.in new file mode 100644 index 00000000..63b2d9ad --- /dev/null +++ b/package/inadyn/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_INADYN + bool "inadyn" + depends on BR2_USE_MMU # Uses fork() + depends on !BR2_STATIC_LIBS # dlopen() + select BR2_PACKAGE_LIBCONFUSE + help + In-a-Dyn is Dynamic DNS (DDNS) client with HTTPS support used + to automate the task of keeping your Internet name in sync + with your public (DHCP/PPPoE) IP address. It can also be used + when you have backup connections to the Internet. + + For HTTPS support you need to select one of the libraries: + OpenSSL, GnuTLS, or mbed TLS (PolarSSL). + + https://github.com/troglobit/inadyn + +comment "inadyn needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + depends on BR2_USE_MMU diff --git a/package/inadyn/S70inadyn b/package/inadyn/S70inadyn new file mode 100755 index 00000000..8a71693c --- /dev/null +++ b/package/inadyn/S70inadyn @@ -0,0 +1,70 @@ +#!/bin/sh +# Customizations are sourced from /etc/default/inadyn. For example, +# override INADYN_ARGS to adjust log level, add a startup delay, etc. +# +# NOTE: to start, add a line ENABLED="yes" to /etc/default/inadyn + +DAEMON="inadyn" +PIDFILE="/var/run/$DAEMON.pid" + +INADYN_ARGS="" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + if [ "$ENABLED" != "yes" ]; then + echo "SKIPPED" + exit 0 + fi + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -p "$PIDFILE" -x "/usr/sbin/$DAEMON" \ + -- $INADYN_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" -x "/usr/sbin/$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +reload() { + printf 'Reloading %s: ' "$DAEMON" + start-stop-daemon -K -s HUP -q -p "$PIDFILE" -x "/usr/sbin/$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +case "$1" in + start|stop|restart|reload) + "$1";; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/inadyn/inadyn.conf b/package/inadyn/inadyn.conf new file mode 100644 index 00000000..3328ee22 --- /dev/null +++ b/package/inadyn/inadyn.conf @@ -0,0 +1,26 @@ +# Example /etc/inadyn.conf +# +# Remember to change this file to match your provider and credentials +# Username and password can be included from another file. For more +# info, see https://man.troglobit.com/man5/inadyn.conf.5.html + +# Use IP address of interface instead of external checkip server. +# Useful when you want to register internal IP addresses +#iface = eth0 + +# IP address change check interval +period = 300 + +# Remove of change to match your Dyn account +provider dyndns.org { + username = test + password = test + hostname = { "my.example.com", "other.example.org" } +} + +# Remove or change to match your FreeDNS account +provider freedns { + username = lower-case-username + password = case-sensitive-pwd + hostname = some.example.com +} diff --git a/package/inadyn/inadyn.hash b/package/inadyn/inadyn.hash new file mode 100644 index 00000000..eb5249e3 --- /dev/null +++ b/package/inadyn/inadyn.hash @@ -0,0 +1,5 @@ +# Upstream .sha256 from GitHub +sha256 38fe00f20b293e64a89efc85f766ff40f0be3bcf9c3ed68b842104540a60806e inadyn-2.12.0.tar.gz + +# Locally computed +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/inadyn/inadyn.mk b/package/inadyn/inadyn.mk new file mode 100644 index 00000000..fa2eedc1 --- /dev/null +++ b/package/inadyn/inadyn.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# inadyn +# +################################################################################ + +INADYN_VERSION = 2.12.0 +INADYN_SITE = https://github.com/troglobit/inadyn/releases/download/v$(INADYN_VERSION) +INADYN_LICENSE = GPL-2.0+ +INADYN_LICENSE_FILES = COPYING +INADYN_DEPENDENCIES = host-pkgconf libconfuse + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +INADYN_CONF_OPTS += --enable-openssl +INADYN_DEPENDENCIES += openssl +else ifeq ($(BR2_PACKAGE_GNUTLS),y) +INADYN_DEPENDENCIES += gnutls +else ifeq ($BR2_PACKAGE_MBEDTLS, y) +INADYN_DEPENDENCIES += mbedtls +else +INADYN_CONF_OPTS += --disable-ssl +endif + +define INADYN_INSTALL_SAMPLE_CONFIG + $(INSTALL) -D -m 0600 package/inadyn/inadyn.conf \ + $(TARGET_DIR)/etc/inadyn.conf +endef +INADYN_POST_INSTALL_TARGET_HOOKS += INADYN_INSTALL_SAMPLE_CONFIG + +define INADYN_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/inadyn/S70inadyn \ + $(TARGET_DIR)/etc/init.d/S70inadyn +endef + +define INADYN_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(@D)/inadyn.service \ + $(TARGET_DIR)/usr/lib/systemd/system/inadyn.service +endef + +$(eval $(autotools-package)) diff --git a/package/inconsolata/Config.in b/package/inconsolata/Config.in new file mode 100644 index 00000000..de6b3885 --- /dev/null +++ b/package/inconsolata/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_INCONSOLATA + bool "inconsolata" + help + Inconsolata is a monospace font, designed for code listings + and the like. + + http://www.google.com/fonts/specimen/Inconsolata diff --git a/package/inconsolata/inconsolata.hash b/package/inconsolata/inconsolata.hash new file mode 100644 index 00000000..d222fc32 --- /dev/null +++ b/package/inconsolata/inconsolata.hash @@ -0,0 +1,4 @@ +# From http://snapshot.debian.org/archive/debian/20091207T044352Z/pool/main/t/ttf-inconsolata/ttf-inconsolata_001.010-2.dsc +sha256 ecf8ba44911fcb3c9683aef1ca2b3cfbafa119a3e93c682f448850e1ae08ce93 ttf-inconsolata_001.010.orig.tar.gz +# Locally computed +sha256 8bbed014d1c85a9e3f36703816833c9538e140fea88c2bc3a745ce2449dc18ab OFL.txt diff --git a/package/inconsolata/inconsolata.mk b/package/inconsolata/inconsolata.mk new file mode 100644 index 00000000..3fe3895c --- /dev/null +++ b/package/inconsolata/inconsolata.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# inconsolata +# +################################################################################ + +INCONSOLATA_VERSION = 001.010 +INCONSOLATA_SITE = http://snapshot.debian.org/archive/debian/20090524T155154Z/pool/main/t/ttf-inconsolata +INCONSOLATA_SOURCE = ttf-inconsolata_$(INCONSOLATA_VERSION).orig.tar.gz +INCONSOLATA_TARGET_DIR = $(TARGET_DIR)/usr/share/fonts/inconsolata +INCONSOLATA_LICENSE = OFL-1.0 +INCONSOLATA_LICENSE_FILES = OFL.txt + +define INCONSOLATA_INSTALL_TARGET_CMDS + mkdir -p $(INCONSOLATA_TARGET_DIR) + $(INSTALL) -m 644 $(@D)/*.otf $(INCONSOLATA_TARGET_DIR) +endef + +$(eval $(generic-package)) diff --git a/package/inih/Config.in b/package/inih/Config.in new file mode 100644 index 00000000..2c6553a8 --- /dev/null +++ b/package/inih/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_INIH + bool "inih" + help + inih (INI Not Invented Here) is a simple .INI file parser + written in C. + + https://github.com/benhoyt/inih/ diff --git a/package/inih/inih.hash b/package/inih/inih.hash new file mode 100644 index 00000000..f20d7ac0 --- /dev/null +++ b/package/inih/inih.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 e79216260d5dffe809bda840be48ab0eec7737b2bb9f02d2275c1b46344ea7b7 inih-58.tar.gz +sha256 9ae3b39e83e9158e44b67733baa3bb2d84e80efdcfb14a5820210a42c7abdf7f LICENSE.txt diff --git a/package/inih/inih.mk b/package/inih/inih.mk new file mode 100644 index 00000000..80cde094 --- /dev/null +++ b/package/inih/inih.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# inih +# +################################################################################ + +INIH_VERSION = 58 +INIH_SITE = $(call github,benhoyt,inih,r$(INIH_VERSION)) +INIH_INSTALL_STAGING = YES +INIH_LICENSE = BSD-3-Clause +INIH_LICENSE_FILES = LICENSE.txt +INIH_CONF_OPTS = -Ddistro_install=true + +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +INIH_CONF_OPTS += -Dwith_INIReader=true +else +INIH_CONF_OPTS += -Dwith_INIReader=false +endif + +$(eval $(meson-package)) diff --git a/package/initscripts/Config.in b/package/initscripts/Config.in new file mode 100644 index 00000000..82cbd5c6 --- /dev/null +++ b/package/initscripts/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_INITSCRIPTS + bool + help + The basics startup scripts for both SysV and Busybox diff --git a/package/initscripts/init.d/rcK b/package/initscripts/init.d/rcK new file mode 100755 index 00000000..59e9c54f --- /dev/null +++ b/package/initscripts/init.d/rcK @@ -0,0 +1,27 @@ +#!/bin/sh + + +# Stop all init scripts in /etc/init.d +# executing them in reversed numerical order. +# +for i in $(ls -r /etc/init.d/S??*) ;do + + # Ignore dangling symlinks (if any). + [ ! -f "$i" ] && continue + + case "$i" in + *.sh) + # Source shell script for speed. + ( + trap - INT QUIT TSTP + set stop + . $i + ) + ;; + *) + # No sh extension, so fork subprocess. + $i stop + ;; + esac +done + diff --git a/package/initscripts/init.d/rcS b/package/initscripts/init.d/rcS new file mode 100755 index 00000000..de411534 --- /dev/null +++ b/package/initscripts/init.d/rcS @@ -0,0 +1,27 @@ +#!/bin/sh + + +# Start all init scripts in /etc/init.d +# executing them in numerical order. +# +for i in /etc/init.d/S??* ;do + + # Ignore dangling symlinks (if any). + [ ! -f "$i" ] && continue + + case "$i" in + *.sh) + # Source shell script for speed. + ( + trap - INT QUIT TSTP + set start + . $i + ) + ;; + *) + # No sh extension, so fork subprocess. + $i start + ;; + esac +done + diff --git a/package/initscripts/initscripts.mk b/package/initscripts/initscripts.mk new file mode 100644 index 00000000..2e997dcd --- /dev/null +++ b/package/initscripts/initscripts.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# initscripts +# +################################################################################ + +define INITSCRIPTS_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/etc/init.d + $(INSTALL) -D -m 0755 package/initscripts/init.d/* $(TARGET_DIR)/etc/init.d/ +endef + +$(eval $(generic-package)) diff --git a/package/inotify-tools/Config.in b/package/inotify-tools/Config.in new file mode 100644 index 00000000..6b113d9e --- /dev/null +++ b/package/inotify-tools/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_INOTIFY_TOOLS + bool "inotify-tools" + depends on BR2_USE_MMU # fork() + help + inotify-tools is a C library and a set of command-line + programs for Linux providing a simple interface to inotify. + These programs can be used to monitor and act upon + filesystem events. Provides the 'inotifywait' and + 'inotifywatch' binaries. + + https://github.com/inotify-tools/inotify-tools diff --git a/package/inotify-tools/inotify-tools.hash b/package/inotify-tools/inotify-tools.hash new file mode 100644 index 00000000..5984827f --- /dev/null +++ b/package/inotify-tools/inotify-tools.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 c5b018567814ea555d716f518b6e3ae243c733f7bd3e8585d81748a6da286f3c inotify-tools-3.20.2.2.tar.gz +sha256 e41fc126320a79ed53b5aa3386f059f7d10770856d6fd714ab80a96ce6bd09d6 COPYING diff --git a/package/inotify-tools/inotify-tools.mk b/package/inotify-tools/inotify-tools.mk new file mode 100644 index 00000000..b410ade3 --- /dev/null +++ b/package/inotify-tools/inotify-tools.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# inotify-tools +# +################################################################################ + +INOTIFY_TOOLS_VERSION = 3.20.2.2 +INOTIFY_TOOLS_SITE = https://github.com/inotify-tools/inotify-tools/releases/download/$(INOTIFY_TOOLS_VERSION) +INOTIFY_TOOLS_LICENSE = GPL-2.0+ +INOTIFY_TOOLS_LICENSE_FILES = COPYING +INOTIFY_TOOLS_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/input-event-daemon/Config.in b/package/input-event-daemon/Config.in new file mode 100644 index 00000000..84177fd8 --- /dev/null +++ b/package/input-event-daemon/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_INPUT_EVENT_DAEMON + bool "input-event-daemon" + # Uses fork() + depends on BR2_USE_MMU + help + input-event-daemon is a daemon which executes + a user-defined command on input events, such as + keys, mouse buttons and switches. + + http://github.com/gandro/input-event-daemon diff --git a/package/input-event-daemon/S99input-event-daemon b/package/input-event-daemon/S99input-event-daemon new file mode 100644 index 00000000..8d70dd30 --- /dev/null +++ b/package/input-event-daemon/S99input-event-daemon @@ -0,0 +1,39 @@ +#! /bin/sh + +[ -f /usr/bin/input-event-daemon ] || exit 0 + +start() { + printf "Starting input-event-daemon: " + input-event-daemon + echo "done" +} + + +stop() { + printf "Stopping input-event-daemon: " + killall input-event-daemon + echo "done" +} + +restart() { + stop + start +} + +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|reload|restart}" + exit 1 +esac + +exit $? diff --git a/package/input-event-daemon/input-event-daemon.hash b/package/input-event-daemon/input-event-daemon.hash new file mode 100644 index 00000000..ad0c4e99 --- /dev/null +++ b/package/input-event-daemon/input-event-daemon.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1d9a44160aead88080093f74be9d709fbbc2637f982958e2673d80aedacd0a65 input-event-daemon-0.1.3.tar.gz +sha256 56f6614c63a023e4d486332968bfa7933f06ea7c785ef85f403448022ae7f912 README diff --git a/package/input-event-daemon/input-event-daemon.mk b/package/input-event-daemon/input-event-daemon.mk new file mode 100644 index 00000000..37fe2241 --- /dev/null +++ b/package/input-event-daemon/input-event-daemon.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# input-event-daemon +# +################################################################################ + +INPUT_EVENT_DAEMON_VERSION = 0.1.3 +INPUT_EVENT_DAEMON_SITE = $(call github,gandro,input-event-daemon,v$(INPUT_EVENT_DAEMON_VERSION)) +INPUT_EVENT_DAEMON_LICENSE = input-event-daemon license +INPUT_EVENT_DAEMON_LICENSE_FILES = README + +define INPUT_EVENT_DAEMON_BUILD_CMDS + touch $(@D)/input-event-table.h + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" -C $(@D) +endef + +define INPUT_EVENT_DAEMON_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -D $(@D)/input-event-daemon \ + $(TARGET_DIR)/usr/bin/input-event-daemon + $(INSTALL) -m 644 -D $(@D)/docs/sample.conf \ + $(TARGET_DIR)/etc/input-event-daemon.conf +endef + +define INPUT_EVENT_DAEMON_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/input-event-daemon/S99input-event-daemon \ + $(TARGET_DIR)/etc/init.d/S99input-event-daemon +endef + +define INPUT_EVENT_DAEMON_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/input-event-daemon/input-event-daemon.service \ + $(TARGET_DIR)/usr/lib/systemd/system/input-event-daemon.service +endef + +$(eval $(generic-package)) diff --git a/package/input-event-daemon/input-event-daemon.service b/package/input-event-daemon/input-event-daemon.service new file mode 100644 index 00000000..d91e655f --- /dev/null +++ b/package/input-event-daemon/input-event-daemon.service @@ -0,0 +1,9 @@ +[Unit] +Description=Input Event Daemon + +[Service] +ExecStart=/usr/bin/input-event-daemon --no-daemon +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/intel-gmmlib/0001-Drop-hardening-related-flags.patch b/package/intel-gmmlib/0001-Drop-hardening-related-flags.patch new file mode 100644 index 00000000..b63d82f3 --- /dev/null +++ b/package/intel-gmmlib/0001-Drop-hardening-related-flags.patch @@ -0,0 +1,28 @@ +From 1528980ee15e9589a7e27ec6d12a33cd8aab57b4 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Tue, 8 Jun 2021 07:51:40 +0200 +Subject: [PATCH] Drop hardening-related flags + +These will be set by Buildroot depending on toolchain capabilities and +global Buildroot options. + +Signed-off-by: Bernd Kuhls +--- + Source/GmmLib/Linux.cmake | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/Source/GmmLib/Linux.cmake b/Source/GmmLib/Linux.cmake +index 1a09bc4..b28fc1b 100644 +--- a/Source/GmmLib/Linux.cmake ++++ b/Source/GmmLib/Linux.cmake +@@ -97,7 +97,6 @@ SET (GMMLIB_COMPILER_FLAGS_COMMON + -DUSE_SSE3 + -DUSE_SSSE3 + # Other common flags +- -fstack-protector + -fdata-sections + -ffunction-sections + -fmessage-length=0 +-- +2.29.2 + diff --git a/package/intel-gmmlib/Config.in b/package/intel-gmmlib/Config.in new file mode 100644 index 00000000..a3d0d261 --- /dev/null +++ b/package/intel-gmmlib/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_INTEL_GMMLIB + bool "intel-gmmlib" + depends on BR2_x86_64 + depends on !BR2_STATIC_LIBS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + The Intel(R) Graphics Memory Management Library provides + device specific and buffer management for the Intel(R) + Graphics Compute Runtime for OpenCL(TM) and the Intel(R) + Media Driver for VAAPI. + + https://github.com/intel/gmmlib + +comment "intel-gmmlib needs a toolchain w/ dynamic library, C++, threads" + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/intel-gmmlib/intel-gmmlib.hash b/package/intel-gmmlib/intel-gmmlib.hash new file mode 100644 index 00000000..93138bf2 --- /dev/null +++ b/package/intel-gmmlib/intel-gmmlib.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 451fbe2eac26533a896ca0da0356354ecc38680f273fce7d121c6a22251ed21e intel-gmmlib-22.4.1.tar.gz +sha256 8b7446825df3f8b0268307e272aa6aaaf78351c83161d860d02c913c22666c48 LICENSE.md diff --git a/package/intel-gmmlib/intel-gmmlib.mk b/package/intel-gmmlib/intel-gmmlib.mk new file mode 100644 index 00000000..a21c3bf1 --- /dev/null +++ b/package/intel-gmmlib/intel-gmmlib.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# intel-gmmlib +# +################################################################################ + +INTEL_GMMLIB_VERSION = 22.4.1 +INTEL_GMMLIB_SITE = https://github.com/intel/gmmlib/archive +INTEL_GMMLIB_LICENSE = MIT +INTEL_GMMLIB_LICENSE_FILES = LICENSE.md + +INTEL_GMMLIB_INSTALL_STAGING = YES +INTEL_GMMLIB_SUPPORTS_IN_SOURCE_BUILD = NO + +INTEL_GMMLIB_CONF_OPTS = -DRUN_TEST_SUITE=OFF + +$(eval $(cmake-package)) diff --git a/package/intel-mediadriver/Config.in b/package/intel-mediadriver/Config.in new file mode 100644 index 00000000..c59437ec --- /dev/null +++ b/package/intel-mediadriver/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_INTEL_MEDIADRIVER + bool "intel-mediadriver" + depends on BR2_x86_64 + depends on !BR2_STATIC_LIBS # mesa3d, libva + depends on BR2_INSTALL_LIBSTDCPP # intel-gmmlib, mesa3d + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # mesa3d + depends on BR2_TOOLCHAIN_HAS_SYNC_1 # mesa3d + depends on BR2_TOOLCHAIN_HAS_THREADS # intel-gmmlib, libva + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # mesa3d + select BR2_PACKAGE_INTEL_GMMLIB + select BR2_PACKAGE_LIBPCIACCESS + select BR2_PACKAGE_LIBVA + select BR2_PACKAGE_MESA3D + help + The Intel(R) Media Driver for VAAPI is a new VA-API (Video + Acceleration API) user mode driver supporting hardware + accelerated decoding, encoding, and video post processing for + GEN based graphics hardware. + + https://github.com/intel/media-driver + +if BR2_PACKAGE_INTEL_MEDIADRIVER + +config BR2_PACKAGE_INTEL_MEDIADRIVER_GEN8 + bool "Gen8 support" + default y + help + Enable support for Gen8 GPUs (Coffee Lake) + +endif # BR2_PACKAGE_INTEL_MEDIADRIVER + +comment "intel-mediadriver needs a toolchain w/ dynamic library, gcc >= 8, C++, NPTL" + depends on BR2_x86_64 && BR2_TOOLCHAIN_HAS_SYNC_1 + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_TOOLCHAIN_GCC_AT_LEAST_8 diff --git a/package/intel-mediadriver/intel-mediadriver.hash b/package/intel-mediadriver/intel-mediadriver.hash new file mode 100644 index 00000000..109d90c4 --- /dev/null +++ b/package/intel-mediadriver/intel-mediadriver.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 98702b946edb24454a3b780f8dd5b3091c6c795478467c1c00fe4d16c4371291 intel-media-24.3.1.tar.gz +sha256 74979d5aaee78b8da82e3aafd415a216b6131dfff6d95d6930927c8a4e3bded3 LICENSE.md diff --git a/package/intel-mediadriver/intel-mediadriver.mk b/package/intel-mediadriver/intel-mediadriver.mk new file mode 100644 index 00000000..ee1f03dd --- /dev/null +++ b/package/intel-mediadriver/intel-mediadriver.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# intel-mediadriver +# +################################################################################ + +# based on https://software.intel.com/en-us/articles/build-and-debug-open-source-media-stack + +INTEL_MEDIADRIVER_VERSION = 24.3.1 +INTEL_MEDIADRIVER_SITE = https://github.com/intel/media-driver/archive +INTEL_MEDIADRIVER_SOURCE= intel-media-$(INTEL_MEDIADRIVER_VERSION).tar.gz +INTEL_MEDIADRIVER_LICENSE = MIT, BSD-3-Clause +INTEL_MEDIADRIVER_LICENSE_FILES = LICENSE.md + +INTEL_MEDIADRIVER_DEPENDENCIES = \ + intel-gmmlib \ + libpciaccess \ + libva \ + mesa3d + +ifeq ($(BR2_PACKAGE_LIBEXECINFO),y) +INTEL_MEDIADRIVER_DEPENDENCIES += libexecinfo +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) +INTEL_MEDIADRIVER_DEPENDENCIES += xlib_libX11 +endif + +INTEL_MEDIADRIVER_SUPPORTS_IN_SOURCE_BUILD = NO + +# hardening is disabled here, so that the top-level Buildroot options +# control which hardening features are enabled +INTEL_MEDIADRIVER_CONF_OPTS = \ + -DINSTALL_DRIVER_SYSCONF=OFF \ + -DMEDIA_BUILD_FATAL_WARNINGS=OFF \ + -DMEDIA_RUN_TEST_SUITE=OFF \ + -DMEDIA_BUILD_HARDENING=OFF + +ifeq ($(BR2_PACKAGE_INTEL_MEDIADRIVER_GEN8),y) +INTEL_MEDIADRIVER_CONF_OPTS += -DGEN8=ON +else +INTEL_MEDIADRIVER_CONF_OPTS += -DGEN8=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/intel-mediasdk/0001-Don-t-force-fstack-protector.patch b/package/intel-mediasdk/0001-Don-t-force-fstack-protector.patch new file mode 100644 index 00000000..b3ecfc98 --- /dev/null +++ b/package/intel-mediasdk/0001-Don-t-force-fstack-protector.patch @@ -0,0 +1,54 @@ +From 28ca7393c08cb54b87d11c1ca92821e48f54781b Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 15 Apr 2019 23:09:33 +0200 +Subject: [PATCH] Don't force -fstack-protector + +This allows the environment to decide whether SSP should be used or +not, for example to support toolchains that don't have SSP support. + +Signed-off-by: Thomas Petazzoni +[Bernd: rebased for 21.2.3] +Signed-off-by: Bernd Kuhls +--- + api/mfx_dispatch/linux/CMakeLists.txt | 2 +- + builder/FindPackages.cmake | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/api/mfx_dispatch/linux/CMakeLists.txt b/api/mfx_dispatch/linux/CMakeLists.txt +index 15a4bd9a..4415f840 100644 +--- a/api/mfx_dispatch/linux/CMakeLists.txt ++++ b/api/mfx_dispatch/linux/CMakeLists.txt +@@ -101,7 +101,7 @@ target_link_libraries(mfx dl) + get_api_version(MFX_VERSION_MAJOR MFX_VERSION_MINOR) + + set_target_properties( mfx PROPERTIES LINK_FLAGS +- "-Wl,--no-undefined,-z,relro,-z,now,-z,noexecstack -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/libmfx.map -fstack-protector") ++ "-Wl,--no-undefined,-z,relro,-z,now,-z,noexecstack -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/libmfx.map") + set_target_properties( mfx PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIB_DIR}/${CMAKE_BUILD_TYPE} FOLDER mfx ) + set_target_properties( mfx PROPERTIES VERSION ${MFX_VERSION_MAJOR}.${MFX_VERSION_MINOR}) + set_target_properties( mfx PROPERTIES SOVERSION ${MFX_VERSION_MAJOR}) +diff --git a/builder/FindPackages.cmake b/builder/FindPackages.cmake +index 7e36ae2d..5b8b9b9d 100644 +--- a/builder/FindPackages.cmake ++++ b/builder/FindPackages.cmake +@@ -83,7 +83,7 @@ function( configure_build_variant_linux target variant ) + return() # should not occur; just in case + endif() + set( link_flags_list "-Wl,--no-undefined,-z,relro,-z,now,-z,noexecstack -Wl,--no-as-needed -ldl") +- append_property( ${ARGV0} LINK_FLAGS "${link_flags_list} ${MFX_LDFLAGS} -fstack-protector" ) ++ append_property( ${ARGV0} LINK_FLAGS "${link_flags_list} ${MFX_LDFLAGS}" ) + # message( STATUS "Libva located at: ${PKG_LIBVA_LIBRARY_DIRS}" ) + + if( ARGV1 MATCHES hw AND Linux ) +@@ -452,7 +452,7 @@ function(configure_dependencies target dependencies variant) + endforeach() + + set(SCOPE_CFLAGS ${SCOPE_CFLAGS} PARENT_SCOPE) +- set(SCOPE_LINKFLAGS "${SCOPE_LINKFLAGS} -Wl,--no-undefined,-z,relro,-z,now,-z,noexecstack -fstack-protector" PARENT_SCOPE) ++ set(SCOPE_LINKFLAGS "${SCOPE_LINKFLAGS} -Wl,--no-undefined,-z,relro,-z,now,-z,noexecstack" PARENT_SCOPE) + set(SCOPE_LIBS ${SCOPE_LIBS} PARENT_SCOPE) + endfunction() + +-- +2.20.1 + diff --git a/package/intel-mediasdk/0002-add-missing-stdint.h-to-mfxparser-cpp.patch b/package/intel-mediasdk/0002-add-missing-stdint.h-to-mfxparser-cpp.patch new file mode 100644 index 00000000..d2a095c3 --- /dev/null +++ b/package/intel-mediasdk/0002-add-missing-stdint.h-to-mfxparser-cpp.patch @@ -0,0 +1,31 @@ +From 8fb9f5feaf738f69b278d2cac15baada1447aae8 Mon Sep 17 00:00:00 2001 +From: Sergei Trofimovich +Date: Mon, 28 Nov 2022 23:31:29 +0000 +Subject: [PATCH] add missing to mfxparser.cpp + +Without the change build fails on `gcc-13` as: + + MediaSDK/api/mfx_dispatch/linux/mfxparser.cpp: In function 'std::string MFX::printCodecId(mfxU32)': + MediaSDK/api/mfx_dispatch/linux/mfxparser.cpp:60:3: error: 'uint8_t' was not declared in this scope + 60 | uint8_t* data = reinterpret_cast(&id); + | ^~~~~~~ + +Upstream: https://github.com/Intel-Media-SDK/MediaSDK/pull/2998 + +Signed-off-by: Bernd Kuhls +--- + api/mfx_dispatch/linux/mfxparser.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/api/mfx_dispatch/linux/mfxparser.cpp b/api/mfx_dispatch/linux/mfxparser.cpp +index 9d3823ec3e..12e46d1881 100644 +--- a/api/mfx_dispatch/linux/mfxparser.cpp ++++ b/api/mfx_dispatch/linux/mfxparser.cpp +@@ -20,6 +20,7 @@ + + #include + #include ++#include + #include + #include + diff --git a/package/intel-mediasdk/Config.in b/package/intel-mediasdk/Config.in new file mode 100644 index 00000000..c1f609e3 --- /dev/null +++ b/package/intel-mediasdk/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_INTEL_MEDIASDK + bool "intel-mediasdk" + depends on BR2_x86_64 + depends on !BR2_STATIC_LIBS # intel-mediadriver + depends on BR2_INSTALL_LIBSTDCPP # intel-mediadriver + depends on BR2_TOOLCHAIN_HAS_SYNC_1 # intel-mediadriver + depends on BR2_TOOLCHAIN_HAS_THREADS # intel-mediadriver + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # intel-mediadriver + select BR2_PACKAGE_INTEL_MEDIADRIVER + select BR2_PACKAGE_LIBDRM_INTEL + help + Intel(R) Media SDK provides an API to access + hardware-accelerated video decode, encode and filtering on + Intel® platforms with integrated graphics. + + Supported video encoders: HEVC, AVC, MPEG-2, JPEG + Supported Video decoders: HEVC, AVC, VP8, MPEG-2, VC1, JPEG + Supported video pre-processing filters: Color Conversion, + Deinterlace, Denoise, Resize, Rotate, Composition + + http://mediasdk.intel.com/ + +comment "intel-mediasdk needs a toolchain w/ dynamic library, C++, NPTL" + depends on BR2_x86_64 && BR2_TOOLCHAIN_HAS_SYNC_1 + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/package/intel-mediasdk/intel-mediasdk.hash b/package/intel-mediasdk/intel-mediasdk.hash new file mode 100644 index 00000000..f975ab15 --- /dev/null +++ b/package/intel-mediasdk/intel-mediasdk.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 12f23a78104edc1c9bfa755effd2723866d107ad752f72d3839fcc8db0503cec intel-mediasdk-23.2.2.tar.gz +sha256 dfd67773578903698f9ff4a61eb8f2d84810cbecd56f3f3cee8c649f813b6ea6 LICENSE diff --git a/package/intel-mediasdk/intel-mediasdk.mk b/package/intel-mediasdk/intel-mediasdk.mk new file mode 100644 index 00000000..18a29384 --- /dev/null +++ b/package/intel-mediasdk/intel-mediasdk.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# intel-mediasdk +# +################################################################################ + +INTEL_MEDIASDK_VERSION = 23.2.2 +INTEL_MEDIASDK_SITE = https://github.com/Intel-Media-SDK/MediaSDK/archive +INTEL_MEDIASDK_LICENSE = MIT +INTEL_MEDIASDK_LICENSE_FILES = LICENSE + +INTEL_MEDIASDK_INSTALL_STAGING = YES +INTEL_MEDIASDK_DEPENDENCIES = intel-mediadriver + +INTEL_MEDIASDK_CONF_OPTS = \ + -DBUILD_SAMPLES=OFF \ + -DBUILD_TUTORIALS=OFF \ + -DMFX_INCLUDE="$(@D)/api/include" + +$(eval $(cmake-package)) diff --git a/package/intel-microcode/Config.in b/package/intel-microcode/Config.in new file mode 100644 index 00000000..4a45aa1e --- /dev/null +++ b/package/intel-microcode/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_INTEL_MICROCODE + bool "intel-microcode" + depends on BR2_x86_64 || BR2_i386 + help + This package provides an Intel microcode data file that can be + used to correct processor errors. The iucode-tool package and + proper kernel support are required to upload the microcode. + + https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files + +config BR2_PACKAGE_INTEL_MICROCODE_INSTALL_TARGET + bool "install microcode files to /lib/firmware in target" + default y + depends on BR2_PACKAGE_INTEL_MICROCODE + help + Select this option to have the microcode files installed to + /lib/firmware/intel-ucode in the target root filesystem, in + addition to the images directory. diff --git a/package/intel-microcode/intel-microcode.hash b/package/intel-microcode/intel-microcode.hash new file mode 100644 index 00000000..742be5ae --- /dev/null +++ b/package/intel-microcode/intel-microcode.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 c29eb35fdbd39e3ed8587e6f0b1275cc03265f230c2fcaf88e2a1556451e773f intel-microcode-20240531.tar.gz +sha256 03efb1491c7e899feb2665fa299363e64035e5444c1b8bc1f6ebed30de964e12 license diff --git a/package/intel-microcode/intel-microcode.mk b/package/intel-microcode/intel-microcode.mk new file mode 100644 index 00000000..6862565b --- /dev/null +++ b/package/intel-microcode/intel-microcode.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# intel-microcode +# +################################################################################ + +INTEL_MICROCODE_VERSION = 20240531 +INTEL_MICROCODE_SITE = $(call github,intel,Intel-Linux-Processor-Microcode-Data-Files,microcode-$(INTEL_MICROCODE_VERSION)) +INTEL_MICROCODE_LICENSE = PROPRIETARY +INTEL_MICROCODE_LICENSE_FILES = license +INTEL_MICROCODE_REDISTRIBUTE = NO +INTEL_MICROCODE_INSTALL_IMAGES = YES + +define INTEL_MICROCODE_INSTALL_IMAGES_CMDS + mkdir -p $(BINARIES_DIR)/intel-ucode + $(INSTALL) -m 0644 -t $(BINARIES_DIR)/intel-ucode \ + $(@D)/intel-ucode/* +endef + +ifeq ($(BR2_PACKAGE_INTEL_MICROCODE_INSTALL_TARGET),y) +define INTEL_MICROCODE_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/lib/firmware/intel-ucode + $(INSTALL) -m 0644 -t $(TARGET_DIR)/lib/firmware/intel-ucode \ + $(@D)/intel-ucode/* +endef +else +INTEL_MICROCODE_INSTALL_TARGET = NO +endif + +define INTEL_MICROCODE_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_MICROCODE) + $(call KCONFIG_ENABLE_OPT,CONFIG_MICROCODE_INTEL) +endef + +$(eval $(generic-package)) diff --git a/package/intel-vpl-gpu-rt/Config.in b/package/intel-vpl-gpu-rt/Config.in new file mode 100644 index 00000000..da26ea6a --- /dev/null +++ b/package/intel-vpl-gpu-rt/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_INTEL_VPL_GPU_RT + bool "intel-vpl-gpu-rt" + depends on BR2_x86_64 # intel-mediadriver + depends on BR2_PACKAGE_LIBVPL_ARCH_SUPPORTS # libvpl + depends on BR2_INSTALL_LIBSTDCPP # libvpl + depends on !BR2_STATIC_LIBS # libvpl + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # libvpl + depends on BR2_TOOLCHAIN_HAS_SYNC_1 # intel-mediadriver + depends on BR2_TOOLCHAIN_HAS_THREADS # libvpl + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # intel-mediadriver + select BR2_PACKAGE_INTEL_MEDIADRIVER # runtime + select BR2_PACKAGE_LIBVA + select BR2_PACKAGE_LIBVPL + help + Intel® Video Processing Library (Intel® VPL) GPU Runtime is a + Runtime implementation of Intel® VPL API for Intel Gen GPUs, + starting with Tiger Lake. + + https://github.com/intel/vpl-gpu-rt + +comment "intel-vpl-gpu-rt needs a toolchain w/ dynamic library, gcc >= 7, C++, NPTL" + depends on BR2_x86_64 + depends on BR2_PACKAGE_LIBVPL_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_SYNC_1 + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \ + !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.hash b/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.hash new file mode 100644 index 00000000..ba756af4 --- /dev/null +++ b/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 b92594e8e30be3b879526f4ac38bef60ea684cc8e93d2e7f24eb45205d0211b9 intel-vpl-gpu-rt-24.3.1.tar.gz +sha256 c31c3cc5fd66d1250dbca1c3d9011a9f874537442ac71c8de80f2f0fed13f297 LICENSE diff --git a/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.mk b/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.mk new file mode 100644 index 00000000..7d7771aa --- /dev/null +++ b/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# intel-vpl-gpu-rt +# +################################################################################ + +INTEL_VPL_GPU_RT_VERSION = 24.3.1 +INTEL_VPL_GPU_RT_SITE = $(call github,intel,vpl-gpu-rt,intel-onevpl-$(INTEL_VPL_GPU_RT_VERSION)) +INTEL_VPL_GPU_RT_LICENSE = MIT +INTEL_VPL_GPU_RT_LICENSE_FILES = LICENSE +INTEL_VPL_GPU_RT_CPE_ID_VENDOR = intel +INTEL_VPL_GPU_RT_CPE_ID_PRODUCT = onevpl_gpu_runtime +INTEL_VPL_GPU_RT_DEPENDENCIES = libva libvpl + +$(eval $(cmake-package)) diff --git a/package/intltool/0001-perl-5.26-compatibility.patch b/package/intltool/0001-perl-5.26-compatibility.patch new file mode 100644 index 00000000..a2a7aef1 --- /dev/null +++ b/package/intltool/0001-perl-5.26-compatibility.patch @@ -0,0 +1,55 @@ +Fix regex errors thrown by Perl 5.26: + +Unescaped left brace in regex is illegal here in regex; marked by <-- HERE in m/^(.*)\${ <-- HERE ?([A-Z_]+)}?(.*)$/ at $BUILDROOT/host/usr/bin/intltool-update line 1065. + +Fetched from: +https://github.com/Alexpux/MSYS2-packages/blob/master/intltool/perl-5.22-compatibility.patch + +Reported upstream: +https://bugs.launchpad.net/intltool/+bug/1696658 + +Signed-off-by: Jörg Krause + +--- intltool-0.51.0.orig/intltool-update.in 2015-03-09 02:39:54.000000000 +0100 ++++ intltool-0.51.0.orig/intltool-update.in 2015-06-19 01:52:07.171228154 +0200 +@@ -1062,7 +1062,7 @@ + } + } + +- if ($str =~ /^(.*)\${?([A-Z_]+)}?(.*)$/) ++ if ($str =~ /^(.*)\$\{?([A-Z_]+)}?(.*)$/) + { + my $rest = $3; + my $untouched = $1; +@@ -1190,10 +1190,10 @@ + $name =~ s/\(+$//g; + $version =~ s/\(+$//g; + +- $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/); +- $varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/); +- $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/); +- $varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/); ++ $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\$\{?AC_PACKAGE_NAME}?/); ++ $varhash{"PACKAGE"} = $name if (not $name =~ /\$\{?PACKAGE}?/); ++ $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\$\{?AC_PACKAGE_VERSION}?/); ++ $varhash{"VERSION"} = $version if (not $name =~ /\$\{?VERSION}?/); + } + + if ($conf_source =~ /^AC_INIT\(([^,\)]+),([^,\)]+)[,]?([^,\)]+)?/m) +@@ -1219,11 +1219,11 @@ + $version =~ s/\(+$//g; + $bugurl =~ s/\(+$//g if (defined $bugurl); + +- $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/); +- $varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/); +- $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/); +- $varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/); +- $varhash{"PACKAGE_BUGREPORT"} = $bugurl if (defined $bugurl and not $bugurl =~ /\${?\w+}?/); ++ $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\$\{?AC_PACKAGE_NAME}?/); ++ $varhash{"PACKAGE"} = $name if (not $name =~ /\$\{?PACKAGE}?/); ++ $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\$\{?AC_PACKAGE_VERSION}?/); ++ $varhash{"VERSION"} = $version if (not $name =~ /\$\{?VERSION}?/); ++ $varhash{"PACKAGE_BUGREPORT"} = $bugurl if (defined $bugurl and not $bugurl =~ /\$\{?\w+}?/); + } + + # \s makes this not work, why? diff --git a/package/intltool/intltool.hash b/package/intltool/intltool.hash new file mode 100644 index 00000000..59983b02 --- /dev/null +++ b/package/intltool/intltool.hash @@ -0,0 +1,6 @@ +# From https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz/+md5 +md5 12e517cac2b57a0121cda351570f1e63 intltool-0.51.0.tar.gz + +# Locally calculated +sha256 67c74d94196b153b774ab9f89b2fa6c6ba79352407037c8c14d5aeb334e959cd intltool-0.51.0.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/intltool/intltool.mk b/package/intltool/intltool.mk new file mode 100644 index 00000000..85955444 --- /dev/null +++ b/package/intltool/intltool.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# intltool +# +################################################################################ + +INTLTOOL_VERSION = 0.51.0 +INTLTOOL_SITE = https://launchpad.net/intltool/trunk/$(INTLTOOL_VERSION)/+download +INTLTOOL_LICENSE = GPL-2.0+ +INTLTOOL_LICENSE_FILES = COPYING + +HOST_INTLTOOL_DEPENDENCIES = host-gettext host-libxml-parser-perl + +$(eval $(host-autotools-package)) diff --git a/package/iodine/0001-src-osflags-fully-fix-cross-compilation.patch b/package/iodine/0001-src-osflags-fully-fix-cross-compilation.patch new file mode 100644 index 00000000..c6dc321a --- /dev/null +++ b/package/iodine/0001-src-osflags-fully-fix-cross-compilation.patch @@ -0,0 +1,40 @@ +From a5d71d076168f8ad1e7dd30b35f1569f180f429c Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 2 Nov 2023 23:03:15 +0100 +Subject: [PATCH] src/osflags: fully fix cross-compilation + +Cross-compilation was only partially fixed by +https://github.com/yarrick/iodine/commit/024481c94b97ef37981621cdc38f8b20f8919418 +as selinux was still enabled depending on host file existence + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/yarrick/iodine/pull/93 +--- + src/osflags | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/osflags b/src/osflags +index 9a437bd..39ca5fa 100755 +--- a/src/osflags ++++ b/src/osflags +@@ -20,7 +20,7 @@ link) + ;; + Linux) + FLAGS=""; +- [ -e /usr/include/selinux/selinux.h ] && FLAGS="$FLAGS -lselinux"; ++ "$PKG_CONFIG" --exists libselinux && FLAGS="$FLAGS $($PKG_CONFIG --libs libselinux)"; + "$PKG_CONFIG" --exists libsystemd-daemon && FLAGS="$FLAGS $($PKG_CONFIG --libs libsystemd-daemon)"; + "$PKG_CONFIG" --exists libsystemd && FLAGS="$FLAGS $($PKG_CONFIG --libs libsystemd)"; + echo $FLAGS; +@@ -40,7 +40,7 @@ cflags) + ;; + Linux) + FLAGS="-D_GNU_SOURCE" +- [ -e /usr/include/selinux/selinux.h ] && FLAGS="$FLAGS -DHAVE_SETCON"; ++ "$PKG_CONFIG" --exists libselinux && FLAGS="$FLAGS -DHAVE_SETCON"; + "$PKG_CONFIG" --exists libsystemd-daemon && FLAGS="$FLAGS -DHAVE_SYSTEMD"; + "$PKG_CONFIG" --exists libsystemd && FLAGS="$FLAGS -DHAVE_SYSTEMD"; + echo $FLAGS; +-- +2.42.0 + diff --git a/package/iodine/Config.in b/package/iodine/Config.in new file mode 100644 index 00000000..6962cb8a --- /dev/null +++ b/package/iodine/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_IODINE + bool "iodine" + select BR2_PACKAGE_ZLIB + help + iodine lets you tunnel IPv4 data through a DNS server. + This can be usable in different situations where + internet access is firewalled, but DNS queries are allowed. + + http://code.kryo.se/iodine/ diff --git a/package/iodine/iodine.hash b/package/iodine/iodine.hash new file mode 100644 index 00000000..6f765a24 --- /dev/null +++ b/package/iodine/iodine.hash @@ -0,0 +1,5 @@ +# From http://code.kryo.se/iodine/ +md5 6f2a53476cbc09bbffe7e07d6e9dd19d iodine-0.8.0.tar.gz +# Locally computed +sha256 546e92cf8617f7970ea81c850b1063eb189c68c406d0c6a67e02c55e72e714c6 iodine-0.8.0.tar.gz +sha256 9541123931e4df4ec84612e056a92ecaab905fe201deaf932b895406565fbb85 LICENSE diff --git a/package/iodine/iodine.mk b/package/iodine/iodine.mk new file mode 100644 index 00000000..998f9250 --- /dev/null +++ b/package/iodine/iodine.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# iodine +# +################################################################################ + +IODINE_VERSION = 0.8.0 +IODINE_SITE = http://code.kryo.se/iodine +IODINE_LICENSE = MIT +IODINE_LICENSE_FILES = LICENSE +IODINE_CPE_ID_VENDOR = kryo +IODINE_SELINUX_MODULES = iodine +IODINE_DEPENDENCIES = \ + host-pkgconf \ + $(if $(BR2_PACKAGE_LIBSELINUX),libselinux) \ + $(if $(BR2_PACKAGE_SYSTEMD),systemd) \ + zlib + +IODINE_CFLAGS = $(TARGET_CFLAGS) + +# iodine contains a local implementation of daemon(3) for older +# systems, unless __GLIBC__ is defined. Musl does provide it, but +# unlike uClibc it doesn't define __GLIBC__. Work around it by +# pretending to be glibc as we otherwise end up with symbol conflicts. +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +IODINE_CFLAGS += -D__GLIBC__ +endif + +define IODINE_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) CFLAGS="$(IODINE_CFLAGS)" \ + $(MAKE) ARCH=$(BR2_ARCH) -C $(@D) +endef + +define IODINE_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install DESTDIR="$(TARGET_DIR)" prefix=/usr +endef + +$(eval $(generic-package)) diff --git a/package/iotop/0001-Fix-build-error-with-Python-3.patch b/package/iotop/0001-Fix-build-error-with-Python-3.patch new file mode 100644 index 00000000..bf656f88 --- /dev/null +++ b/package/iotop/0001-Fix-build-error-with-Python-3.patch @@ -0,0 +1,37 @@ +Status: upstream +http://repo.or.cz/w/iotop.git/commit/99c8d7cedce81f17b851954d94bfa73787300599 + +Signed-off-by: Christophe Vu-Brugier + +From 99c8d7cedce81f17b851954d94bfa73787300599 Mon Sep 17 00:00:00 2001 +From: Christophe Vu-Brugier +Date: Fri, 17 Oct 2014 13:49:31 +0200 +Subject: [PATCH] Fix build error with Python 3 caused by itervalues() in + setup.py + +The itervalues() method is not available in Python 3. As a +consequence, this patch replaces the call to itervalues() in setup.py +with a call to values() which works on both Python 2 and Python 3. + +Signed-off-by: Christophe Vu-Brugier +Signed-off-by: Paul Wise +--- + setup.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/setup.py b/setup.py +index 7150102..9de6068 100755 +--- a/setup.py ++++ b/setup.py +@@ -7,7 +7,7 @@ from iotop.version import VERSION + # Dirty hack to make setup.py install the iotop script to sbin/ instead of bin/ + # while still honoring the choice of installing into local/ or not. + if hasattr(distutils_install, 'INSTALL_SCHEMES'): +- for d in distutils_install.INSTALL_SCHEMES.itervalues(): ++ for d in distutils_install.INSTALL_SCHEMES.values(): + if d.get('scripts', '').endswith('/bin'): + d['scripts'] = d['scripts'][:-len('/bin')] + '/sbin' + +-- +2.1.4 + diff --git a/package/iotop/Config.in b/package/iotop/Config.in new file mode 100644 index 00000000..460503b9 --- /dev/null +++ b/package/iotop/Config.in @@ -0,0 +1,11 @@ +comment "iotop depends on python3" + depends on !BR2_PACKAGE_PYTHON3 + +config BR2_PACKAGE_IOTOP + bool "iotop" + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON3_CURSES + help + iotop does for I/O usage what top does for CPU usage. + + http://guichaz.free.fr/iotop/ diff --git a/package/iotop/iotop.hash b/package/iotop/iotop.hash new file mode 100644 index 00000000..a8e96479 --- /dev/null +++ b/package/iotop/iotop.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1a7c02fd3758bb048d8af861c5f8735eb3ee9abadeaa787f27b8af2b1eaee8ce iotop-0.6.tar.gz +sha256 c38aee9e3c8c4d5d594ff548a1be05453023016d6286931f6512db215ec1fd42 COPYING diff --git a/package/iotop/iotop.mk b/package/iotop/iotop.mk new file mode 100644 index 00000000..e9ef9edc --- /dev/null +++ b/package/iotop/iotop.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# iotop +# +################################################################################ + +IOTOP_VERSION = 0.6 +IOTOP_SITE = http://guichaz.free.fr/iotop/files +IOTOP_LICENSE = GPL-2.0+ +IOTOP_LICENSE_FILES = COPYING +IOTOP_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/iozone/0001-Add-new-targets-for-iozone.patch b/package/iozone/0001-Add-new-targets-for-iozone.patch new file mode 100644 index 00000000..3cc184ec --- /dev/null +++ b/package/iozone/0001-Add-new-targets-for-iozone.patch @@ -0,0 +1,103 @@ +From 5b1e973b2333e838624abf195b3ba9716591f304 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Sun, 10 Oct 2021 10:15:26 +0200 +Subject: [PATCH] Add new targets for iozone: + +linux-noaio is for linux targets without AIO (use case: uClibc) +linux-noth is for linux target without threads or AIO + +And make largefile support optional via CFLAGS. + +Signed-off-by: Gustavo Zacarias +Signed-off-by: Gilles Talis +--- + src/current/makefile | 56 +++++++++++++++++++++++++++++++++++++------- + 1 file changed, 47 insertions(+), 9 deletions(-) + +diff --git a/src/current/makefile b/src/current/makefile +index 3a54701..3b17b1b 100644 +--- a/src/current/makefile ++++ b/src/current/makefile +@@ -172,10 +172,28 @@ hpux_no_ansi: iozone_hpux_no.o libbif.o + # GNU 'C' compiler Linux build with threads, largefiles, async I/O + # + linux: iozone_linux.o libasync.o libbif.o fileop_linux.o pit_server.o +- $(CC) -O3 $(CFLAGS) iozone_linux.o libasync.o libbif.o -lpthread \ ++ $(CC) $(CFLAGS) $(LDFLAGS) iozone_linux.o libasync.o libbif.o \ ++ -lpthread -lrt -o iozone ++ $(CC) $(CFLAGS) -Dlinux fileop_linux.o -o fileop ++ $(CC) $(CFLAGS) -Dlinux pit_server.o -o pit_server ++ ++# ++# GNU 'C' compiler Linux build with threads, largefiles ++# ++linux-noaio: iozone_linux-noaio.o libbif.o fileop_linux.o pit_server.o ++ $(CC) $(CFLAGS) $(LDFLAGS) iozone_linux-noaio.o libbif.o \ ++ -lpthread -lrt -o iozone ++ $(CC) $(CFLAGS) -Dlinux fileop_linux.o -o fileop ++ $(CC) $(CFLAGS) -Dlinux pit_server.o -o pit_server ++ ++# ++# GNU 'C' compiler Linux build with largefiles ++# ++linux-noth: iozone_linux-noth.o libbif.o fileop_linux.o pit_server.o ++ $(CC) $(CFLAGS) $(LDFLAGS) iozone_linux-noth.o libbif.o \ + -lrt -o iozone +- $(CC) -O3 $(CFLAGS) -Dlinux fileop_linux.o -o fileop +- $(CC) -O3 $(CFLAGS) -Dlinux pit_server.o -o pit_server ++ $(CC) $(CFLAGS) -Dlinux fileop_linux.o -o fileop ++ $(CC) $(CFLAGS) -Dlinux pit_server.o -o pit_server + + # + # GNU 'C' compiler Linux build for powerpc chip with threads, largefiles, async I/O +@@ -841,13 +859,33 @@ iozone_linux.o: iozone.c libbif.c libasync.c + @echo "" + @echo "Building iozone for Linux" + @echo "" +- $(CC) -Wmissing-prototypes -Wall -c -O3 -Dunix -DHAVE_ANSIC_C -DASYNC_IO -DHAVE_PREAD \ +- -DSHARED_MEM -Dlinux -D_LARGEFILE64_SOURCE $(CFLAGS) iozone.c \ ++ $(CC) -Wmissing-prototypes -Wall -c -Dunix -DHAVE_ANSIC_C -DASYNC_IO -DHAVE_PREAD \ ++ -DSHARED_MEM -Dlinux $(CFLAGS) iozone.c \ + -DNAME='"linux"' -o iozone_linux.o +- $(CC) -Wmissing-prototypes -Wall -c -O3 -Dunix -DHAVE_ANSIC_C -DASYNC_IO -D_LARGEFILE64_SOURCE \ ++ $(CC) -Wmissing-prototypes -Wall -c -Dunix -DHAVE_ANSIC_C -DASYNC_IO \ ++ -DSHARED_MEM -Dlinux $(CFLAGS) libbif.c -o libbif.o ++ $(CC) -Wmissing-prototypes -Wall -c -Dunix -Dlinux -DHAVE_ANSIC_C -DASYNC_IO \ ++ $(CFLAGS) libasync.c -o libasync.o ++ ++iozone_linux-noaio.o: iozone.c libbif.c ++ @echo "" ++ @echo "Building iozone for Linux no AIO" ++ @echo "" ++ $(CC) -Wmissing-prototypes -Wall -c -Dunix -DHAVE_ANSIC_C -DHAVE_PREAD \ ++ -DSHARED_MEM -Dlinux $(CFLAGS) iozone.c \ ++ -DNAME='"linux"' -o iozone_linux-noaio.o ++ $(CC) -Wmissing-prototypes -Wall -c -Dunix -DHAVE_ANSIC_C \ ++ -DSHARED_MEM -Dlinux $(CFLAGS) libbif.c -o libbif.o ++ ++iozone_linux-noth.o: iozone.c libbif.c ++ @echo "" ++ @echo "Building iozone for Linux with no threads" ++ @echo "" ++ $(CC) -Wmissing-prototypes -Wall -c -Dunix -DHAVE_ANSIC_C -DNO_THREADS -DHAVE_PREAD \ ++ -DSHARED_MEM -Dlinux $(CFLAGS) iozone.c \ ++ -DNAME='"linux"' -o iozone_linux-noth.o ++ $(CC) -Wmissing-prototypes -Wall -c -Dunix -DHAVE_ANSIC_C -DNO_THREADS \ + -DSHARED_MEM -Dlinux $(CFLAGS) libbif.c -o libbif.o +- $(CC) -Wmissing-prototypes -Wall -c -O3 -Dunix -Dlinux -DHAVE_ANSIC_C -DASYNC_IO \ +- -D_LARGEFILE64_SOURCE $(CFLAGS) libasync.c -o libasync.o + + fileop_AIX.o: fileop.c + @echo "" +@@ -951,7 +989,7 @@ fileop_linux.o: fileop.c + @echo "" + @echo "Building fileop for Linux" + @echo "" +- $(CC) -Wall -c -O3 $(CFLAGS) fileop.c -o fileop_linux.o ++ $(CC) -Wall -c $(CFLAGS) fileop.c -o fileop_linux.o + + fileop_openbsd.o: fileop.c + @echo "" +-- +2.27.0 + diff --git a/package/iozone/0002-fix-build-without-aio.patch b/package/iozone/0002-fix-build-without-aio.patch new file mode 100644 index 00000000..8b54bef4 --- /dev/null +++ b/package/iozone/0002-fix-build-without-aio.patch @@ -0,0 +1,176 @@ +Fix build without ASYNC_IO + +Fix the following build failure without ASYNC_IO: + +/home/buildroot/autobuild/run/instance-1/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mipsel-buildroot-linux-uclibc/12.3.0/../../../../mipsel-buildroot-linux-uclibc/bin/ld: iozone_linux-noaio.o: in function `read_perf_test': +iozone.c:(.text+0x11a74): undefined reference to `end_async' + +Fixes: + - http://autobuild.buildroot.org/results/31a4f0ac9eeb71df5d2f40ffe9f1f256cb58e399 + +Signed-off-by: Fabrice Fontaine +Upstream: sent to capps@iozone.org + +diff '--color=auto' -Nura iozone3_506.orig/src/current/iozone.c iozone3_506/src/current/iozone.c +--- iozone3_506.orig/src/current/iozone.c 2024-03-06 12:28:16.734023725 +0100 ++++ iozone3_506/src/current/iozone.c 2024-03-06 12:39:14.453991162 +0100 +@@ -9153,6 +9153,7 @@ + } + } + } ++#ifdef ASYNC_IO + if(async_flag) + { + if(no_copy_flag) +@@ -9160,6 +9161,7 @@ + end_async(gc); + gc=0; + } ++#endif + buffer1=0; + if(hist_summary) + { +@@ -9634,6 +9636,7 @@ + } + } + } ++#ifdef ASYNC_IO + if(async_flag) + { + if(no_copy_flag) +@@ -9641,6 +9644,7 @@ + end_async(gc); + gc=0; + } ++#endif + if(rlocking) + { + lock_offset=I_LSEEK(fd,0,SEEK_CUR); +@@ -10097,6 +10101,7 @@ + } + } + } ++#ifdef ASYNC_IO + if(async_flag) + { + if(no_copy_flag) +@@ -10104,6 +10109,7 @@ + end_async(gc); + gc=0; + } ++#endif + if(rlocking) + { + mylockr((int) fd, (int) 0, (int)1, +@@ -10749,6 +10755,7 @@ + } + } + } ++#ifdef ASYNC_IO + if(async_flag) + { + if(no_copy_flag) +@@ -10756,6 +10763,7 @@ + end_async(gc); + gc=0; + } ++#endif + + /* This is a bit tricky. The goal is to read with a stride through + the file. The problem is that you need to touch all of the file +@@ -15485,6 +15493,7 @@ + } + } + } ++#ifdef ASYNC_IO + if(async_flag) + { + if(no_copy_flag) +@@ -15492,6 +15501,7 @@ + end_async(gc); + gc=0; + } ++#endif + read_so_far+=reclen/1024; + r_traj_bytes_completed+=reclen; + r_traj_ops_completed++; +@@ -16050,6 +16060,7 @@ + } + } + } ++#ifdef ASYNC_IO + if(async_flag) + { + if(no_copy_flag) +@@ -16057,6 +16068,7 @@ + end_async(gc); + gc=0; + } ++#endif + read_so_far+=reclen/1024; + r_traj_bytes_completed+=reclen; + r_traj_ops_completed++; +@@ -16665,6 +16677,7 @@ + } + } + } ++#ifdef ASYNC_IO + if(async_flag) + { + if(no_copy_flag) +@@ -16672,6 +16685,7 @@ + end_async(gc); + gc=0; + } ++#endif + re_read_so_far+=reclen/1024; + r_traj_bytes_completed+=reclen; + r_traj_ops_completed++; +@@ -17244,6 +17258,7 @@ + lock_offset, reclen); + } + current_position+=reclen; ++#ifdef ASYNC_IO + if(async_flag) + { + if(no_copy_flag) +@@ -17251,6 +17266,7 @@ + end_async(gc); + gc=0; + } ++#endif + t_offset = (off64_t)reclen*2; + if (!(h_flag || k_flag || mmapflag)) + { +@@ -17778,6 +17794,7 @@ + } + } + } ++#ifdef ASYNC_IO + if(async_flag) + { + if(no_copy_flag) +@@ -17785,6 +17802,7 @@ + end_async(gc); + gc=0; + } ++#endif + if(current_position + (stride * reclen) >= (numrecs64 * reclen)-reclen) + { + current_position=0; +@@ -18528,6 +18546,7 @@ + } + } + } ++#ifdef ASYNC_IO + if(async_flag) + { + if(no_copy_flag) +@@ -18535,6 +18554,7 @@ + end_async(gc); + gc=0; + } ++#endif + ranread_so_far+=reclen/1024; + if(*stop_flag) + { diff --git a/package/iozone/Config.in b/package/iozone/Config.in new file mode 100644 index 00000000..c66def26 --- /dev/null +++ b/package/iozone/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_IOZONE + bool "iozone" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + help + IOzone is a filesystem benchmark tool. + The benchmark generates and measures a variety of file + operations + + http://www.iozone.org/ + +comment "iozone needs a toolchain w/ NPTL" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/package/iozone/iozone.hash b/package/iozone/iozone.hash new file mode 100644 index 00000000..936ab5a6 --- /dev/null +++ b/package/iozone/iozone.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 114ce5c071873b9a2c7ba6e73d05d5ef7e66564392acbfcdc0b3261db10fcbe7 iozone3_506.tar +sha256 bff7909fd698708d15613a4fb977a193cff98f44ef170c2dc1dd502974df75b2 docs/License.txt diff --git a/package/iozone/iozone.mk b/package/iozone/iozone.mk new file mode 100644 index 00000000..b1b29d10 --- /dev/null +++ b/package/iozone/iozone.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# iozone +# +################################################################################ + +IOZONE_VERSION = 3.506 +IOZONE_SOURCE = iozone$(subst .,_,$(IOZONE_VERSION)).tar +IOZONE_SITE = http://www.iozone.org/src/current +IOZONE_LICENSE = IOzone license (NO DERIVED WORKS ALLOWED) +IOZONE_LICENSE_FILES = docs/License.txt + +# AIO support not available on uClibc, use the linux (non-aio) target. +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +IOZONE_TARGET = linux-noaio +else +IOZONE_TARGET = linux +endif + +define IOZONE_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) $(IOZONE_TARGET) -C $(@D)/src/current +endef + +define IOZONE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/src/current/iozone \ + $(TARGET_DIR)/usr/bin/iozone + $(INSTALL) -D -m 755 $(@D)/src/current/fileop \ + $(TARGET_DIR)/usr/bin/fileop +endef + +$(eval $(generic-package)) diff --git a/package/ipcalc/Config.in b/package/ipcalc/Config.in new file mode 100644 index 00000000..5f5f7ad8 --- /dev/null +++ b/package/ipcalc/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_IPCALC + bool "ipcalc" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + A modern IPv4/IPv6 ipcalc tool, assisting in network + calculations in command line and as a tool for scripts. + + https://gitlab.com/ipcalc/ipcalc diff --git a/package/ipcalc/ipcalc.hash b/package/ipcalc/ipcalc.hash new file mode 100644 index 00000000..dec69d2a --- /dev/null +++ b/package/ipcalc/ipcalc.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 5ed8f20819a5bdb089829fc62c9a2c685252759d5c3ec289492e6ef5762f4e3b ipcalc-1.0.3.tar.bz2 +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/ipcalc/ipcalc.mk b/package/ipcalc/ipcalc.mk new file mode 100644 index 00000000..c1eba5d5 --- /dev/null +++ b/package/ipcalc/ipcalc.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# ipcalc +# +################################################################################ + +IPCALC_VERSION = 1.0.3 +IPCALC_SITE = $(call gitlab,ipcalc,ipcalc,$(IPCALC_VERSION)) +IPCALC_SOURCE = ipcalc-$(IPCALC_VERSION).tar.bz2 +IPCALC_LICENSE = GPL-2.0+ +IPCALC_LICENSE_FILES = COPYING + +ifeq ($(BR2_STATIC_LIBS),y) +IPCALC_CONF_OPTS += -Duse_runtime_linking=disabled +else +IPCALC_CONF_OPTS += -Duse_runtime_linking=enabled +endif + +ifeq ($(BR2_PACKAGE_GEOIP),y) +IPCALC_CONF_OPTS += -Duse_geoip=enabled +IPCALC_DEPENDENCIES += host-pkgconf geoip +else +IPCALC_CONF_OPTS += -Duse_geoip=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBMAXMINDDB),y) +IPCALC_CONF_OPTS += -Duse_maxminddb=enabled +IPCALC_DEPENDENCIES += host-pkgconf libmaxminddb +else +IPCALC_CONF_OPTS += -Duse_maxminddb=disabled +endif + +$(eval $(meson-package)) diff --git a/package/iperf/Config.in b/package/iperf/Config.in new file mode 100644 index 00000000..21a2df8a --- /dev/null +++ b/package/iperf/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_IPERF + bool "iperf" + depends on BR2_INSTALL_LIBSTDCPP + # uses fork() + depends on BR2_USE_MMU + help + Internet Protocol bandwidth measuring tool for measuring + TCP/UDP performance. + + https://sourceforge.net/projects/iperf2/ + +comment "iperf needs a toolchain w/ C++" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/iperf/iperf.hash b/package/iperf/iperf.hash new file mode 100644 index 00000000..e4d40d59 --- /dev/null +++ b/package/iperf/iperf.hash @@ -0,0 +1,7 @@ +# From https://sourceforge.net/projects/iperf2/files/ +md5 34bb6ac1abeb801bf3f729794dc5ac36 iperf-2.2.0.tar.gz +sha1 bcbd101ab36f3faacaab1a765a96806ca49a1495 iperf-2.2.0.tar.gz + +# Locally computed: +sha256 16810a9575e4c6dd65e4a18ab5df3cdac6730b3c832cf080a8990f132f68364a iperf-2.2.0.tar.gz +sha256 5f9f5c4feca3347c3b3c0ada8b16b4e6b698aac4e6f016a24adf61a5915336d1 COPYING diff --git a/package/iperf/iperf.mk b/package/iperf/iperf.mk new file mode 100644 index 00000000..30361466 --- /dev/null +++ b/package/iperf/iperf.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# iperf +# +################################################################################ + +IPERF_VERSION = 2.2.0 +IPERF_SITE = https://downloads.sourceforge.net/project/iperf2 +IPERF_LICENSE = MIT-like +IPERF_LICENSE_FILES = COPYING +IPERF_CPE_ID_VENDOR = iperf2_project +IPERF_CPE_ID_PRODUCT = iperf2 + +IPERF_CONF_OPTS = \ + --disable-web100 + +$(eval $(autotools-package)) diff --git a/package/iperf3/Config.in b/package/iperf3/Config.in new file mode 100644 index 00000000..0c6946f5 --- /dev/null +++ b/package/iperf3/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_IPERF3 + bool "iperf3" + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_TOOLCHAIN_HAS_THREADS + help + iperf is a tool for active measurements of the maximum + achievable bandwidth on IP networks. + It supports tuning of various parameters related to timing, + protocols, and buffers. For each test it reports the + bandwidth, loss, and other parameters. + It's a redesign of the NLANR/DAST iperf(2) and is not backward + compatible. + + http://software.es.net/iperf/index.html + +comment "iperf3 needs a toolchain w/ threads" + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/iperf3/iperf3.hash b/package/iperf3/iperf3.hash new file mode 100644 index 00000000..ee0149da --- /dev/null +++ b/package/iperf3/iperf3.hash @@ -0,0 +1,4 @@ +# From https://downloads.es.net/pub/iperf/iperf-3.17.1.tar.gz.sha256 +sha256 84404ca8431b595e86c473d8f23d8bb102810001f15feaf610effd3b318788aa iperf-3.17.1.tar.gz +# Locally computed +sha256 3dc3e2076dd9cdea2b66d8fe213997ff25fb6171594f055b59fe25321b438f6f LICENSE diff --git a/package/iperf3/iperf3.mk b/package/iperf3/iperf3.mk new file mode 100644 index 00000000..1d2b5720 --- /dev/null +++ b/package/iperf3/iperf3.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# iperf3 +# +################################################################################ + +IPERF3_VERSION = 3.17.1 +IPERF3_SITE = https://downloads.es.net/pub/iperf +IPERF3_SOURCE = iperf-$(IPERF3_VERSION).tar.gz +IPERF3_LICENSE = BSD-3-Clause, BSD-2-Clause, MIT +IPERF3_LICENSE_FILES = LICENSE +IPERF3_CPE_ID_VENDOR = es + +IPERF3_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE" + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +# We intentionally don't pass --with-openssl, otherwise pkg-config is +# not used, and indirect libraries are not picked up when static +# linking. +IPERF3_DEPENDENCIES += host-pkgconf openssl +else +IPERF3_CONF_OPTS += --without-openssl +endif + +$(eval $(autotools-package)) diff --git a/package/ipmitool/0001-configure.ac-fix-readline-static-build.patch b/package/ipmitool/0001-configure.ac-fix-readline-static-build.patch new file mode 100644 index 00000000..e3d43495 --- /dev/null +++ b/package/ipmitool/0001-configure.ac-fix-readline-static-build.patch @@ -0,0 +1,49 @@ +From 9836e2211ba8b3035a1d390bbf6a0eebe4c2439d Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 3 Nov 2022 17:19:09 +0100 +Subject: [PATCH] configure.ac: fix readline static build + +Use pkg-config to retrieve readline dependencies such as ncurses to +avoid the following static build when readline is built with ncurses +support (which is raised since version 1.8.19 and +https://github.com/ipmitool/ipmitool/commit/63dd71c39c9bf522ad3a785dd001737a285458eb): + +** Unable to build Solaris 9 x86 IPMI interface support! +checking for library containing readline... no +configure: error: ** Unable to find readline required by ipmishell. + +[...] + +configure:15125: /tmp/instance-0/output-1/host/bin/armeb-buildroot-linux-musleabi-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O0 -g0 -static -Wall -Wextra -std=gnu11 -pedantic -Wformat -Wformat-nonliteral -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -static conftest.c -lreadline -lcrypto >&5 +/tmp/instance-0/output-1/host/lib/gcc/armeb-buildroot-linux-musleabi/11.3.0/../../../../armeb-buildroot-linux-musleabi/bin/ld: /tmp/instance-0/output-1/host/armeb-buildroot-linux-musleabi/sysroot/usr/lib/libreadline.a(display.o): in function `_rl_move_cursor_relative': +display.c:(.text+0x80fc): undefined reference to `tputs' + +Fixes: + - http://autobuild.buildroot.org/results/dabc6a4f49d464c129ac6bc3710011678142fcbe + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/ipmitool/ipmitool/pull/374] +--- + configure.ac | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index d6ba62b..4ee1be8 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -624,7 +624,11 @@ AC_ARG_ENABLE([ipmishell], + + dnl check for readline library to enable ipmi shell + if test "x$xenable_ipmishell" = "xyes"; then +- AC_SEARCH_LIBS([readline], [readline edit], [have_readline=yes]) ++ PKG_PROG_PKG_CONFIG ++ PKG_CHECK_MODULES([READLINE], [readline], ++ [LIBS="$LIBS $READLINE_LIBS" have_readline=yes], ++ [AC_SEARCH_LIBS([readline], [readline edit], [have_readline=yes])] ++ ) + if test "x$have_readline" != "xyes"; then + AC_MSG_ERROR([** Unable to find readline required by ipmishell.]) + xenable_ipmishell=no +-- +2.35.1 + diff --git a/package/ipmitool/0002-Fix-enterprise-numbers-URL.patch b/package/ipmitool/0002-Fix-enterprise-numbers-URL.patch new file mode 100644 index 00000000..07cdbd45 --- /dev/null +++ b/package/ipmitool/0002-Fix-enterprise-numbers-URL.patch @@ -0,0 +1,36 @@ +From 1edb0e27e44196d1ebe449aba0b9be22d376bcb6 Mon Sep 17 00:00:00 2001 +From: Alexander Amelkin +Date: Tue, 22 Nov 2022 13:55:33 +0300 +Subject: [PATCH] Fix enterprise-numbers URL + +IANA has changed their URL scheme, and the content at the old URL for +enterprise-numbers switched from text/plain to text/html. + +Fix Makefile.am to use the new URL + +Resolves ipmitool/ipmitool#377 + +Signed-off-by: Alexander Amelkin + +[vfazio: backport from upstream 1edb0e27e44196d1ebe449aba0b9be22d376bcb6] +Signed-off-by: Vincent Fazio +--- + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index ce3267f..3182a52 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -41,7 +41,7 @@ MAINTAINERCLEANFILES = Makefile.in aclocal.m4 configure configure-stamp \ + $(distdir).tar.gz $(distdir).tar.bz2 + + SUBDIRS = lib src include doc contrib control +-IANA_PEN = http://www.iana.org/assignments/enterprise-numbers ++IANA_PEN = http://www.iana.org/assignments/enterprise-numbers.txt + + dist-hook: + cp control/ipmitool.spec $(distdir) +-- +2.25.1 + diff --git a/package/ipmitool/0003-Do-not-require-the-IANA-PEN-registry-file.patch b/package/ipmitool/0003-Do-not-require-the-IANA-PEN-registry-file.patch new file mode 100644 index 00000000..3f35a78a --- /dev/null +++ b/package/ipmitool/0003-Do-not-require-the-IANA-PEN-registry-file.patch @@ -0,0 +1,115 @@ +From 26b088193a55624df4cbe2a0d33c7bba5bca108d Mon Sep 17 00:00:00 2001 +From: Vincent Fazio +Date: Sat, 7 Jan 2023 21:02:48 -0600 +Subject: [PATCH] Do not require the IANA PEN registry file + +Previously, ipmitool would fail to run if the local copy of the IANA PEN +registry could not be parsed. + +When the registry is not available the manufacturer will be "Unknown" but +ipmitool will otherwise function so should not be considered fatal. + +Also, fix an issue with improperly handling the `oem_info_list_load` +return value. Previously, in `ipmi_oem_info_init`, if `oem_info_list_load` +returned a negative value due to the registry file not existing, an +improper count would cause `oem_info_init_from_list` to aallocate a list +that didn't encompass the full header/tail list. + + IANA PEN registry open failed: No such file or directory + Allocating 3 entries + [ 1] 16777214 | A Debug Assisting Company, Ltd. + [ 0] 1048575 | Unspecified + +Now, use a signed int and ensure a valid count of loaded OEMs is used. + +Signed-off-by: Vincent Fazio + +[vfazio: backport from upstream 26b088193a55624df4cbe2a0d33c7bba5bca108d] +Signed-off-by: Vincent Fazio +--- + include/ipmitool/ipmi_strings.h | 2 +- + lib/ipmi_main.c | 5 +---- + lib/ipmi_strings.c | 19 +++++-------------- + 3 files changed, 7 insertions(+), 19 deletions(-) + +diff --git a/include/ipmitool/ipmi_strings.h b/include/ipmitool/ipmi_strings.h +index 17c37c6..d60179c 100644 +--- a/include/ipmitool/ipmi_strings.h ++++ b/include/ipmitool/ipmi_strings.h +@@ -55,7 +55,7 @@ extern const struct valstr ipmi_integrity_algorithms[]; + extern const struct valstr ipmi_encryption_algorithms[]; + extern const struct valstr ipmi_user_enable_status_vals[]; + extern const struct valstr *ipmi_oem_info; +-int ipmi_oem_info_init(); ++void ipmi_oem_info_init(); + void ipmi_oem_info_free(); + + extern const struct valstr picmg_frucontrol_vals[]; +diff --git a/lib/ipmi_main.c b/lib/ipmi_main.c +index a673a30..510bc2d 100644 +--- a/lib/ipmi_main.c ++++ b/lib/ipmi_main.c +@@ -853,10 +853,7 @@ ipmi_main(int argc, char ** argv, + } + + /* load the IANA PEN registry */ +- if (ipmi_oem_info_init()) { +- lprintf(LOG_ERR, "Failed to initialize the OEM info dictionary"); +- goto out_free; +- } ++ ipmi_oem_info_init(); + + /* run OEM setup if found */ + if (oemtype && +diff --git a/lib/ipmi_strings.c b/lib/ipmi_strings.c +index 26b359f..c8fc2d0 100644 +--- a/lib/ipmi_strings.c ++++ b/lib/ipmi_strings.c +@@ -1719,39 +1719,30 @@ out: + return rc; + } + +-int ipmi_oem_info_init() ++void ipmi_oem_info_init() + { + oem_valstr_list_t terminator = { { -1, NULL}, NULL }; /* Terminator */ + oem_valstr_list_t *oemlist = &terminator; + bool free_strings = true; +- size_t count; +- int rc = -4; ++ int count; + + lprintf(LOG_INFO, "Loading IANA PEN Registry..."); + + if (ipmi_oem_info) { + lprintf(LOG_INFO, "IANA PEN Registry is already loaded"); +- rc = 0; + goto out; + } + +- if (!(count = oem_info_list_load(&oemlist))) { +- /* +- * We can't identify OEMs without a loaded registry. +- * Set the pointer to dummy and return. +- */ +- ipmi_oem_info = ipmi_oem_info_dummy; +- goto out; ++ if ((count = oem_info_list_load(&oemlist)) < 1) { ++ lprintf(LOG_WARN, "Failed to load entries from IANA PEN Registry"); ++ count = 0; + } + + /* In the array was allocated, don't free the strings at cleanup */ + free_strings = !oem_info_init_from_list(oemlist, count); + +- rc = IPMI_CC_OK; +- + out: + oem_info_list_free(&oemlist, free_strings); +- return rc; + } + + void ipmi_oem_info_free() +-- +2.25.1 + diff --git a/package/ipmitool/0004-configure.ac-allow-disabling-registry-downloads.patch b/package/ipmitool/0004-configure.ac-allow-disabling-registry-downloads.patch new file mode 100644 index 00000000..9a995b9a --- /dev/null +++ b/package/ipmitool/0004-configure.ac-allow-disabling-registry-downloads.patch @@ -0,0 +1,75 @@ +From be11d948f89b10be094e28d8a0a5e8fb532c7b60 Mon Sep 17 00:00:00 2001 +From: Vincent Fazio +Date: Wed, 11 Jan 2023 22:55:51 -0600 +Subject: [PATCH] configure.ac: allow disabling registry downloads + +Some environments require reproducible builds. Since the IANA PEN +registry is constantly updating and there is no snapshot available, +installing ipmitool via `make install` is not reproducible. + +Provide a configure mechanism to disable the registry download/install.. + +[vfazio: backport from upstream be11d948f89b10be094e28d8a0a5e8fb532c7b60] +Signed-off-by: Vincent Fazio +--- + configure.ac | 30 ++++++++++++++++++++---------- + 1 file changed, 20 insertions(+), 10 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 4ee1be8..1dd2742 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -18,8 +18,6 @@ AC_PROG_LN_S + AC_PROG_MAKE_SET + AC_CHECK_PROG([RPMBUILD], [rpmbuild], [rpmbuild], [rpm]) + AC_CHECK_PROG([SED], [sed], [sed]) +-AC_CHECK_PROG([WGET], [wget], [wget]) +-AC_CHECK_PROG([CURL], [curl], [curl]) + + AC_HEADER_STDC + AC_CHECK_HEADERS([stdlib.h string.h sys/ioctl.h sys/stat.h unistd.h paths.h]) +@@ -56,21 +54,33 @@ if test "x$exec_prefix" = "xNONE"; then + exec_prefix="$prefix" + fi + +-if test "x$WGET" = "x"; then +- if test "x$CURL" = "x"; then ++dnl allow enabling/disabling the fetching of the IANA PEN registry ++AC_ARG_ENABLE([registry-download], ++ [AC_HELP_STRING([--enable-registry-download], ++ [download/install the IANA PEN registry [default=yes]])], ++ [xenable_registry_download=$enableval], ++ [xenable_registry_download=yes]) ++ ++AM_CONDITIONAL([DOWNLOAD], [false]) ++ ++if test "x$xenable_registry_download" = "xyes"; then ++ AC_CHECK_PROG([WGET], [wget], [wget]) ++ AC_CHECK_PROG([CURL], [curl], [curl]) ++ ++ if test "x$WGET" = "x" && test "x$CURL" = "x"; then + AC_MSG_WARN([** Neither wget nor curl could be found.]) + AC_MSG_WARN([** IANA PEN database will not be installed by `make install` !]) + else +- DOWNLOAD="$CURL --location --progress-bar" + AM_CONDITIONAL([DOWNLOAD], [true]) ++ if test "x$WGET" != "x"; then ++ DOWNLOAD="$WGET -c -nd -O -" ++ else ++ DOWNLOAD="$CURL --location --progress-bar" ++ fi + fi +-else +- DOWNLOAD="$WGET -c -nd -O -" +- AM_CONDITIONAL([DOWNLOAD], [true]) + fi + +-AC_MSG_WARN([** Download is:]) +-AC_MSG_WARN($DOWNLOAD) ++AC_MSG_WARN([** Download is: $DOWNLOAD]) + AC_SUBST(DOWNLOAD, $DOWNLOAD) + + dnl +-- +2.25.1 + diff --git a/package/ipmitool/Config.in b/package/ipmitool/Config.in new file mode 100644 index 00000000..9516ff85 --- /dev/null +++ b/package/ipmitool/Config.in @@ -0,0 +1,51 @@ +config BR2_PACKAGE_IPMITOOL + bool "ipmitool" + depends on BR2_USE_MMU # fork() + help + IPMItool provides a simple command-line interface to + IPMI-enabled devices. + + https://github.com/ipmitool/ipmitool/ + +if BR2_PACKAGE_IPMITOOL + +config BR2_PACKAGE_IPMITOOL_PEN_REG_URI + string "IANA PEN registry URL or path" + default "https://www.iana.org/assignments/enterprise-numbers.txt" + help + Enter an URL or a file path to the PEN registry to use. + + Note that the official registry is 4MiB+ and may change any + time and is thus not guaranteed to be reproducible. + + Leave empty to not use a registry; vendor IDs will be + displayed instead of the corresponding names. + +config BR2_PACKAGE_IPMITOOL_LANPLUS + bool "enable lanplus interface" + select BR2_PACKAGE_OPENSSL + help + Enables the IPMI v2.0 RMCP+ LAN interface typically used to + send IPMI commands to the BMC of a remote server. + Not needed if you only want to communicate with the local BMC + of your device using the OpenIPMI ipmi_si kernel module, or if + using the legacy IPMI v1.5 RMCP LAN interface. + +config BR2_PACKAGE_IPMITOOL_USB + bool "enable usb interface" + help + Enables the IPMI USB interface typically used to send inband + IPMI commands to the BMC of a server. + +config BR2_PACKAGE_IPMITOOL_IPMIEVD + bool "ipmievd" + help + IPMI event daemon for sending events to syslog + +config BR2_PACKAGE_IPMITOOL_IPMISHELL + bool "ipmishell" + select BR2_PACKAGE_READLINE + help + IPMI shell interface + +endif diff --git a/package/ipmitool/ipmitool.hash b/package/ipmitool/ipmitool.hash new file mode 100644 index 00000000..c3b298e3 --- /dev/null +++ b/package/ipmitool/ipmitool.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 48b010e7bcdf93e4e4b6e43c53c7f60aa6873d574cbd45a8d86fa7aaeebaff9c ipmitool-1_8_19.tar.gz +sha256 b7e2382a8be43b5f6cb092f2d2bda163bf1a1938be9300f821a845cbcd535f56 COPYING diff --git a/package/ipmitool/ipmitool.mk b/package/ipmitool/ipmitool.mk new file mode 100644 index 00000000..4f215190 --- /dev/null +++ b/package/ipmitool/ipmitool.mk @@ -0,0 +1,68 @@ +################################################################################ +# +# ipmitool +# +################################################################################ + +IPMITOOL_VERSION = 1_8_19 +IPMITOOL_SITE = $(call github,ipmitool,ipmitool,IPMITOOL_$(IPMITOOL_VERSION)) +IPMITOOL_LICENSE = BSD-3-Clause +IPMITOOL_LICENSE_FILES = COPYING +IPMITOOL_CPE_ID_VALID = YES +# From git +IPMITOOL_AUTORECONF = YES +IPMITOOL_DEPENDENCIES = host-pkgconf + +IPMITOOL_CONF_OPTS = --disable-registry-download + +ifeq ($(BR2_PACKAGE_FREEIPMI),y) +IPMITOOL_DEPENDENCIES += freeipmi +IPMITOOL_CONF_OPTS += --enable-intf-free +else +IPMITOOL_CONF_OPTS += --disable-intf-free +endif + +ifeq ($(BR2_PACKAGE_IPMITOOL_LANPLUS),y) +IPMITOOL_DEPENDENCIES += openssl +IPMITOOL_CONF_OPTS += --enable-intf-lanplus +else +IPMITOOL_CONF_OPTS += --disable-intf-lanplus +endif + +ifeq ($(BR2_PACKAGE_IPMITOOL_USB),y) +IPMITOOL_CONF_OPTS += --enable-intf-usb +else +IPMITOOL_CONF_OPTS += --disable-intf-usb +endif + +ifeq ($(BR2_PACKAGE_IPMITOOL_IPMISHELL),y) +IPMITOOL_DEPENDENCIES += readline +IPMITOOL_CONF_OPTS += --enable-ipmishell +else +IPMITOOL_CONF_OPTS += --disable-ipmishell +endif + +ifeq ($(BR2_PACKAGE_IPMITOOL_IPMIEVD),) +define IPMITOOL_REMOVE_IPMIEVD + $(RM) -f $(TARGET_DIR)/usr/sbin/ipmievd +endef +IPMITOOL_POST_INSTALL_TARGET_HOOKS += IPMITOOL_REMOVE_IPMIEVD +endif + +IPMITOOL_PEN_REG_URI = $(call qstrip,$(BR2_PACKAGE_IPMITOOL_PEN_REG_URI)) +ifneq ($(IPMITOOL_PEN_REG_URI),) +ifneq ($(findstring ://,$(IPMITOOL_PEN_REG_URI)),) +IPMITOOL_EXTRA_DOWNLOADS += $(IPMITOOL_PEN_REG_URI) +BR_NO_CHECK_HASH_FOR += $(notdir $(IPMITOOL_PEN_REG_URI)) +IPMITOOL_PEN_REG = $(IPMITOOL_DL_DIR)/$(notdir $(IPMITOOL_PEN_REG_URI)) +else +IPMITOOL_PEN_REG = $(IPMITOOL_PEN_REG_URI) +endif #findstring +define IPMITOOL_INSTALL_PEN_REG + $(INSTALL) -D -m 0644 $(IPMITOOL_PEN_REG) \ + $(TARGET_DIR)/usr/share/misc/enterprise-numbers +endef +IPMITOOL_POST_INSTALL_TARGET_HOOKS += IPMITOOL_INSTALL_PEN_REG +endif # IPMITOOL_PEN_REG_URI !empty + +$(eval $(autotools-package)) diff --git a/package/ipmiutil/Config.in b/package/ipmiutil/Config.in new file mode 100644 index 00000000..9eb5452b --- /dev/null +++ b/package/ipmiutil/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_IPMIUTIL + bool "ipmiutil" + depends on BR2_USE_MMU + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_x86_64 || BR2_i386 + help + The ipmiutil package provides easy-to-use utilities to view + the SEL, perform an IPMI chassis reset, set up the IPMI LAN + and Platform Event Filter entries to allow SNMP alerts, + Serial-Over-LAN console, event daemon, and other IPMI tasks. + + http://ipmiutil.sourceforge.net/ + +comment "ipmiutil needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + depends on BR2_x86_64 || BR2_i386 diff --git a/package/ipmiutil/ipmiutil.hash b/package/ipmiutil/ipmiutil.hash new file mode 100644 index 00000000..ecefdac5 --- /dev/null +++ b/package/ipmiutil/ipmiutil.hash @@ -0,0 +1,6 @@ +# From https://sourceforge.net/projects/ipmiutil/files/ +md5 332f688084510771ed79946c815a2ba7 ipmiutil-3.1.9.tar.gz +sha1 3959d22d6c83b2452d087b1c325f47e6bc2b08ac ipmiutil-3.1.9.tar.gz +# Locally computed +sha256 5ae99bdd1296a8e25cea839784ec39ebca57b0e3701b2d440b8e02e22dc4bc95 ipmiutil-3.1.9.tar.gz +sha256 7e0ec8238aa1431e95a4950032a4483fe33fec3fac348eaade5856cdc5ae3e39 COPYING diff --git a/package/ipmiutil/ipmiutil.mk b/package/ipmiutil/ipmiutil.mk new file mode 100644 index 00000000..b5a83b80 --- /dev/null +++ b/package/ipmiutil/ipmiutil.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# ipmiutil +# +################################################################################ + +IPMIUTIL_VERSION = 3.1.9 +IPMIUTIL_SITE = https://downloads.sourceforge.net/project/ipmiutil +IPMIUTIL_LICENSE = BSD-3-Clause +IPMIUTIL_LICENSE_FILES = COPYING + +IPMIUTIL_MAKE = $(MAKE1) +IPMIUTIL_CONF_ENV = ac_cv_type_wchar_t=$(if $(BR2_USE_WCHAR),yes,no) + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +# tests against distro libcrypto so it might get a false positive when +# the openssl version is old, so force it off +# SKIP_MD2 can be used only if ALLOW_GNU is defined. +IPMIUTIL_CONF_OPTS += CPPFLAGS="$(TARGET_CPPFLAGS) -DALLOW_GNU -DSKIP_MD2 -DSSL11" +IPMIUTIL_DEPENDENCIES += openssl +else +IPMIUTIL_CONF_OPTS += --disable-lanplus +endif + +$(eval $(autotools-package)) diff --git a/package/iproute2/0001-Fix-implicit-declaration-of-function-htobe64-in-gcc-.patch b/package/iproute2/0001-Fix-implicit-declaration-of-function-htobe64-in-gcc-.patch new file mode 100644 index 00000000..318701e7 --- /dev/null +++ b/package/iproute2/0001-Fix-implicit-declaration-of-function-htobe64-in-gcc-.patch @@ -0,0 +1,43 @@ +From ea78477cba25b50e7f63f02635e6870d72dcf68e Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Wed, 14 Aug 2024 19:10:09 +0200 +Subject: [PATCH] Fix implicit declaration of function 'htobe64' in gcc 14 on + musl systems + +On musl systems with GCC 14 and above, the htobe64 function cannot be +found by default. From the man page[0], the function is from endian.h +header file. If the file is not included in, then we get the following +error message. The issue however cannot be reproduced on glibc systems. + +In file included from ../include/libgenl.h:5, + from libgenl.c:12: +../include/libnetlink.h: In function 'rta_getattr_be64': +../include/libnetlink.h:281:16: error: implicit declaration of function 'htobe64' [-Wimplicit-function-declaration] + 281 | return htobe64(rta_getattr_u64(rta)); + | ^~~~~~~ +make[1]: *** [../config.include:24: libgenl.o] Error 1 + +[0]: https://linux.die.net/man/3/htobe64 + +Signed-off-by: Brahmajit Das +Signed-off-by: Waldemar Brodkorb +Upstream: https://lore.kernel.org/netdev/20240514084335.19f5b280@hermes.local/T/ +--- + include/libnetlink.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/include/libnetlink.h b/include/libnetlink.h +index 30f0c2d2..77e81815 100644 +--- a/include/libnetlink.h ++++ b/include/libnetlink.h +@@ -12,6 +12,7 @@ + #include + #include + #include ++#include + + struct rtnl_handle { + int fd; +-- +2.39.2 + diff --git a/package/iproute2/0002-Fix-implicit-declaration-of-function-basename-in-gcc.patch b/package/iproute2/0002-Fix-implicit-declaration-of-function-basename-in-gcc.patch new file mode 100644 index 00000000..3bce4b15 --- /dev/null +++ b/package/iproute2/0002-Fix-implicit-declaration-of-function-basename-in-gcc.patch @@ -0,0 +1,33 @@ +From 482b7362dedc57d0c9783bd83084919ccaa79e77 Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Wed, 14 Aug 2024 19:43:44 +0200 +Subject: [PATCH] Fix implicit declaration of function basename in gcc-14.x + +From Alpine Linux. +https://gitlab.alpinelinux.org/alpine/aports/-/blob/master/main/iproute2/basename.patch?ref_type=heads + +But also reported Upstream via netdev mailinglist by Gentoo people. + +Signed-off-by: Waldemar Brodkorb +Upstream: https://marc.info/?l=linux-netdev&m=172278781323421&w=2 +--- + rdma/rdma.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/rdma/rdma.c b/rdma/rdma.c +index 131c6b2a..1e7db382 100644 +--- a/rdma/rdma.c ++++ b/rdma/rdma.c +@@ -8,6 +8,9 @@ + #include "version.h" + #include "color.h" + ++/* For basename(3) prototype */ ++#include ++ + /* Global utils flags */ + int json; + +-- +2.39.2 + diff --git a/package/iproute2/Config.in b/package/iproute2/Config.in new file mode 100644 index 00000000..ab9e515e --- /dev/null +++ b/package/iproute2/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_IPROUTE2 + bool "iproute2" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # __kernel_{u,}long_t + help + Kernel routing and traffic control utilities. Provides things + like ip and tc. + + http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2 + +comment "iproute2 needs a toolchain w/ headers >= 3.4" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 diff --git a/package/iproute2/iproute2.hash b/package/iproute2/iproute2.hash new file mode 100644 index 00000000..0760183b --- /dev/null +++ b/package/iproute2/iproute2.hash @@ -0,0 +1,3 @@ +# From https://kernel.org/pub/linux/utils/net/iproute2/sha256sums.asc +sha256 91a62f82737b44905a00fa803369c447d549e914e9a2a4018fdd75b1d54e8dce iproute2-6.10.0.tar.xz +sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 COPYING diff --git a/package/iproute2/iproute2.mk b/package/iproute2/iproute2.mk new file mode 100644 index 00000000..08b890b3 --- /dev/null +++ b/package/iproute2/iproute2.mk @@ -0,0 +1,69 @@ +################################################################################ +# +# iproute2 +# +################################################################################ + +IPROUTE2_VERSION = 6.10.0 +IPROUTE2_SOURCE = iproute2-$(IPROUTE2_VERSION).tar.xz +IPROUTE2_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/net/iproute2 +IPROUTE2_DEPENDENCIES = host-bison host-flex host-pkgconf \ + $(if $(BR2_PACKAGE_LIBMNL),libmnl) +IPROUTE2_LICENSE = GPL-2.0+ +IPROUTE2_LICENSE_FILES = COPYING +IPROUTE2_CPE_ID_VALID = YES + +ifeq ($(BR2_PACKAGE_ELFUTILS),y) +IPROUTE2_DEPENDENCIES += elfutils +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +IPROUTE2_DEPENDENCIES += libcap +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +IPROUTE2_DEPENDENCIES += libselinux +endif + +ifeq ($(BR2_PACKAGE_IPTABLES)x$(BR2_STATIC_LIBS),yx) +IPROUTE2_DEPENDENCIES += iptables +else +define IPROUTE2_DISABLE_IPTABLES + # m_xt.so is built unconditionally + echo "TC_CONFIG_XT:=n" >>$(@D)/config.mk +endef +endif + +ifeq ($(BR2_PACKAGE_BERKELEYDB_COMPAT185),y) +IPROUTE2_DEPENDENCIES += berkeleydb +endif + +ifeq ($(BR2_PACKAGE_LIBBPF),y) +IPROUTE2_DEPENDENCIES += libbpf +IPROUTE2_CONFIGURE_OPTS += --libbpf_force on +else +IPROUTE2_CONFIGURE_OPTS += --libbpf_force off +endif + +define IPROUTE2_CONFIGURE_CMDS + cd $(@D) && $(TARGET_CONFIGURE_OPTS) ./configure \ + $(IPROUTE2_CONFIGURE_OPTS) + $(IPROUTE2_DISABLE_IPTABLES) +endef + +# workaround for static_assert on uclibc-ng < 1.0.42 +IPROUTE2_CFLAGS = $(TARGET_CFLAGS) -Dstatic_assert=_Static_assert + +define IPROUTE2_BUILD_CMDS + $(TARGET_MAKE_ENV) LDFLAGS="$(TARGET_LDFLAGS)" \ + CFLAGS="$(IPROUTE2_CFLAGS) -DXT_LIB_DIR=\\\"/usr/lib/xtables\\\"" \ + CBUILD_CFLAGS="$(HOST_CFLAGS)" $(MAKE) V=1 LIBDB_LIBS=-lpthread \ + DBM_INCLUDE="$(STAGING_DIR)/usr/include" \ + SHARED_LIBS="$(if $(BR2_STATIC_LIBS),n,y)" -C $(@D) +endef + +define IPROUTE2_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) DESTDIR="$(TARGET_DIR)" $(MAKE) -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/iprutils/0001-configure.ac-add-AC_USE_SYSTEM_EXTENSIONS.patch b/package/iprutils/0001-configure.ac-add-AC_USE_SYSTEM_EXTENSIONS.patch new file mode 100644 index 00000000..c2b6a315 --- /dev/null +++ b/package/iprutils/0001-configure.ac-add-AC_USE_SYSTEM_EXTENSIONS.patch @@ -0,0 +1,47 @@ +From 068f37c100e105fd8edcae07762613e8e33c5282 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 18 Aug 2020 20:26:58 +0200 +Subject: [PATCH] configure.ac: add AC_USE_SYSTEM_EXTENSIONS + +uint and alphasort come from glibc, and with ancient versions thereof, +they were guarded behind different sets of feature-test macros (see +manpage for scandir() for example), which were not default back then. + +In file included from iprdump.c:17:0: +iprlib.h:1866:2: error: unknown type name 'uint' + uint supported_with_min_ucode_level; + ^ + +iprlib.c: In function 'ipr_get_pci_slots': +iprlib.c:1999:48: error: 'alphasort' undeclared (first use in this function) + num_slots = scandir(rootslot, &slotdir, NULL, alphasort); + ^ + +Fix them by adding AC_USE_SYSTEM_EXTENSIONS in configure.ac + +Fixes: + - http://autobuild.buildroot.org/results/41fde4aa06f7c025bb05aa594716643b9010358f + +[Upstream status: https://github.com/bjking1/iprutils/pull/4] +Signed-off-by: Fabrice Fontaine +[yann.morin.1998@free.fr: issue is with glibc, not gcc] +Signed-off-by: Yann E. MORIN +--- + configure.ac | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/configure.ac b/configure.ac +index 462a8b5..7f5fa7d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -14,6 +14,7 @@ AC_INIT([iprutils], [2.4.19.1], [iprdd-devel@lists.sourceforge.net]) + + AM_INIT_AUTOMAKE([1.9 foreign]) + AC_CONFIG_MACRO_DIR([build-aux]) ++AC_USE_SYSTEM_EXTENSIONS + + # Checks for programs. + AC_PROG_CC +-- +2.27.0 + diff --git a/package/iprutils/Config.in b/package/iprutils/Config.in new file mode 100644 index 00000000..2938da0e --- /dev/null +++ b/package/iprutils/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_IPRUTILS + bool "iprutils" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_LIBSYSFS + select BR2_PACKAGE_PCIUTILS + select BR2_PACKAGE_ZLIB + help + System utilities for IBM Power RAID devices + + http://sourceforge.net/projects/iprdd/ diff --git a/package/iprutils/iprutils.hash b/package/iprutils/iprutils.hash new file mode 100644 index 00000000..bcad6e6d --- /dev/null +++ b/package/iprutils/iprutils.hash @@ -0,0 +1,6 @@ +# From https://sourceforge.net/projects/iprdd/files/iprutils%20for%202.6%20kernels/2.4.18/ +md5 df733f504dd4f96abf3272f679b25311 iprutils-2.4.18.1.tar.gz +sha1 701a1a9af6890d333904a92f0b01c26b92f821fa iprutils-2.4.18.1.tar.gz +# Locally computed: +sha256 1c26aee3bf95517fcb844f35ff2711a39b46cbfb50619db1d792c93eeee6f43d iprutils-2.4.18.1.tar.gz +sha256 59b4179e61248aff9cd2d6ee4cd1dbbd0ef48836fe2eeee19f4b16459785104a LICENSE diff --git a/package/iprutils/iprutils.mk b/package/iprutils/iprutils.mk new file mode 100644 index 00000000..9595125a --- /dev/null +++ b/package/iprutils/iprutils.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# iprutils +# +################################################################################ + +IPRUTILS_VERSION_MAJOR = 2.4.18 +IPRUTILS_VERSION = $(IPRUTILS_VERSION_MAJOR).1 +IPRUTILS_SITE = https://downloads.sourceforge.net/project/iprdd/iprutils%20for%202.6%20kernels/$(IPRUTILS_VERSION_MAJOR) +IPRUTILS_DEPENDENCIES = ncurses libsysfs pciutils zlib +IPRUTILS_LICENSE = Common Public License Version 1.0 +IPRUTILS_LICENSE_FILES = LICENSE +# We"re patching configure.ac +IPRUTILS_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/ipset/Config.in b/package/ipset/Config.in new file mode 100644 index 00000000..69514132 --- /dev/null +++ b/package/ipset/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_IPSET + bool "ipset" + select BR2_PACKAGE_LIBMNL + help + Utility to manage IP sets in the linux kernel. + Requires a patched kernel or version >=2.6.39. + + http://ipset.netfilter.org/ diff --git a/package/ipset/ipset.hash b/package/ipset/ipset.hash new file mode 100644 index 00000000..fb9b8c40 --- /dev/null +++ b/package/ipset/ipset.hash @@ -0,0 +1,4 @@ +# From https://ipset.netfilter.org/ipset-7.16.tar.bz2.sha512sum.txt +sha512 e69ddee956f0922c8e08e7e5d358d6b5b24178a9f08151b20957cc3465baaba9ecd6aa938ae157f2cd286ccd7f0b7a279cfd89cec2393a00b43e4d945c275307 ipset-7.16.tar.bz2 +# Locally calculated +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/package/ipset/ipset.mk b/package/ipset/ipset.mk new file mode 100644 index 00000000..9832d8fd --- /dev/null +++ b/package/ipset/ipset.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# ipset +# +################################################################################ + +IPSET_VERSION = 7.16 +IPSET_SOURCE = ipset-$(IPSET_VERSION).tar.bz2 +IPSET_SITE = http://ipset.netfilter.org +IPSET_DEPENDENCIES = libmnl host-pkgconf +IPSET_CONF_OPTS = --with-kmod=no +IPSET_LICENSE = GPL-2.0 +IPSET_LICENSE_FILES = COPYING +IPSET_CPE_ID_VENDOR = netfilter +IPSET_INSTALL_STAGING = YES +IPSET_SELINUX_MODULES = iptables + +$(eval $(autotools-package)) diff --git a/package/iptables/Config.in b/package/iptables/Config.in new file mode 100644 index 00000000..e6b12603 --- /dev/null +++ b/package/iptables/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_IPTABLES + bool "iptables" + help + Linux kernel firewall, NAT, and packet mangling tools. + + http://www.netfilter.org/projects/iptables/index.html + +if BR2_PACKAGE_IPTABLES + +config BR2_PACKAGE_IPTABLES_BPF_NFSYNPROXY + bool "bpfc and nfsynproxy" + select BR2_PACKAGE_LIBPCAP + help + Build bpf compiler and nfsynproxy configuration tool. + +config BR2_PACKAGE_IPTABLES_NFTABLES + bool "nftables compat" + # uses dlfcn + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + select BR2_PACKAGE_LIBMNL + select BR2_PACKAGE_LIBNFTNL + help + Build nftables compat utilities. + +comment "nftables compat needs a toolchain w/ wchar, dynamic library, headers >= 3.12" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 || \ + !BR2_USE_WCHAR || BR2_STATIC_LIBS + +endif diff --git a/package/iptables/S35iptables b/package/iptables/S35iptables new file mode 100644 index 00000000..a2de29d2 --- /dev/null +++ b/package/iptables/S35iptables @@ -0,0 +1,58 @@ +#!/bin/sh + +DAEMON="iptables" + +IPTABLES_ARGS="" + +start() { + printf 'Starting %s: ' "$DAEMON" + iptables-restore /etc/iptables.conf + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + iptables -F + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +save() { + printf 'Saving %s: ' "$DAEMON" + iptables-save -f /etc/iptables.conf + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "SKIP (read-only file system detected)" + fi + return "$status" +} + +case "$1" in + start|stop|restart|save) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|save|reload}" + exit 1 +esac diff --git a/package/iptables/iptables.hash b/package/iptables/iptables.hash new file mode 100644 index 00000000..be8b0df3 --- /dev/null +++ b/package/iptables/iptables.hash @@ -0,0 +1,4 @@ +# From https://netfilter.org/projects/iptables/downloads.html +sha256 5cc255c189356e317d070755ce9371eb63a1b783c34498fb8c30264f3cc59c9c iptables-1.8.10.tar.xz +# Locally calculated +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/iptables/iptables.mk b/package/iptables/iptables.mk new file mode 100644 index 00000000..67121369 --- /dev/null +++ b/package/iptables/iptables.mk @@ -0,0 +1,65 @@ +################################################################################ +# +# iptables +# +################################################################################ + +IPTABLES_VERSION = 1.8.10 +IPTABLES_SOURCE = iptables-$(IPTABLES_VERSION).tar.xz +IPTABLES_SITE = https://netfilter.org/projects/iptables/files +IPTABLES_INSTALL_STAGING = YES +IPTABLES_DEPENDENCIES = host-pkgconf +IPTABLES_LICENSE = GPL-2.0 +IPTABLES_LICENSE_FILES = COPYING +IPTABLES_CPE_ID_VENDOR = netfilter +IPTABLES_SELINUX_MODULES = iptables + +# Building static causes ugly warnings on some plugins +IPTABLES_CONF_OPTS = --libexecdir=/usr/lib --with-kernel=$(STAGING_DIR)/usr \ + $(if $(BR2_STATIC_LIBS),,--disable-static) + +# For connlabel match +ifeq ($(BR2_PACKAGE_LIBNETFILTER_CONNTRACK),y) +IPTABLES_DEPENDENCIES += libnetfilter_conntrack +endif + +# For nfnl_osf +ifeq ($(BR2_PACKAGE_LIBNFNETLINK),y) +IPTABLES_DEPENDENCIES += libnfnetlink +endif + +# For iptables-compat tools +ifeq ($(BR2_PACKAGE_IPTABLES_NFTABLES),y) +IPTABLES_CONF_OPTS += --enable-nftables +IPTABLES_DEPENDENCIES += host-bison host-flex libmnl libnftnl +else +IPTABLES_CONF_OPTS += --disable-nftables +endif + +# bpf compiler support and nfsynproxy tool +ifeq ($(BR2_PACKAGE_IPTABLES_BPF_NFSYNPROXY),y) +# libpcap is tricky for static-only builds and needs help +ifeq ($(BR2_STATIC_LIBS),y) +IPTABLES_LIBS_FOR_STATIC_LINK += `$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs` +IPTABLES_CONF_OPTS += LIBS="$(IPTABLES_LIBS_FOR_STATIC_LINK)" +endif +IPTABLES_CONF_OPTS += --enable-bpf-compiler --enable-nfsynproxy +IPTABLES_DEPENDENCIES += libpcap +else +IPTABLES_CONF_OPTS += --disable-bpf-compiler --disable-nfsynproxy +endif + +define IPTABLES_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_IPTABLES) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_FILTER) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XTABLES) +endef + +define IPTABLES_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/iptables/S35iptables \ + $(TARGET_DIR)/etc/init.d/S35iptables + touch $(TARGET_DIR)/etc/iptables.conf +endef + +$(eval $(autotools-package)) diff --git a/package/iptraf-ng/Config.in b/package/iptraf-ng/Config.in new file mode 100644 index 00000000..5c61b7c0 --- /dev/null +++ b/package/iptraf-ng/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_IPTRAF_NG + bool "iptraf-ng" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 + select BR2_PACKAGE_NCURSES + help + IPTraf-ng is a console-based network monitoring program for + Linux that gathers displays information about IP traffic. + + https://github.com/iptraf-ng/iptraf-ng + + IPTraf-ng is a fork of original IPTraf v3.0.0 + (http://iptraf.seul.org). + +comment "iptraf-ng needs a toolchain w/ kernel headers >= 3.14" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 diff --git a/package/iptraf-ng/iptraf-ng.hash b/package/iptraf-ng/iptraf-ng.hash new file mode 100644 index 00000000..314d5cee --- /dev/null +++ b/package/iptraf-ng/iptraf-ng.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 9f5cef584065420dea1ba32c86126aede1fa9bd25b0f8362b0f9fd9754f00870 iptraf-ng-1.2.1.tar.gz +sha256 4e49bef38f621aac4a870da4b30011c7b7abc7256b218daec1c425b08448ae1e LICENSE diff --git a/package/iptraf-ng/iptraf-ng.mk b/package/iptraf-ng/iptraf-ng.mk new file mode 100644 index 00000000..044630be --- /dev/null +++ b/package/iptraf-ng/iptraf-ng.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# iptraf-ng +# +################################################################################ + +IPTRAF_NG_VERSION = 1.2.1 +IPTRAF_NG_SITE = $(call github,iptraf-ng,iptraf-ng,v$(IPTRAF_NG_VERSION)) +IPTRAF_NG_LICENSE = GPL-2.0+ +IPTRAF_NG_LICENSE_FILES = LICENSE +IPTRAF_NG_DEPENDENCIES = ncurses + +define IPTRAF_NG_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + NCURSES_LDFLAGS="-lpanel -lncurses" \ + -C $(@D) +endef + +define IPTRAF_NG_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + prefix=/usr DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/iputils/Config.in b/package/iputils/Config.in new file mode 100644 index 00000000..ec7bc541 --- /dev/null +++ b/package/iputils/Config.in @@ -0,0 +1,40 @@ +config BR2_PACKAGE_IPUTILS + bool "iputils" + depends on BR2_USE_MMU # fork() + help + This package is set of small useful utilities for Linux + networking. It includes complete versions of ping, arping, + etc. + + https://github.com/iputils/iputils + +if BR2_PACKAGE_IPUTILS + +config BR2_PACKAGE_IPUTILS_ARPING + bool "arping" + default y + help + Installs arping. + +config BR2_PACKAGE_IPUTILS_CLOCKDIFF + bool "clockdiff" + default y + help + Installs clockdiff. + +config BR2_PACKAGE_IPUTILS_PING + bool "ping" + default y + help + Installs ping. + +config BR2_PACKAGE_IPUTILS_TRACEPATH + bool "tracepath" + default y + help + Installs tracepath. + +comment "ninfod needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +endif diff --git a/package/iputils/iputils.hash b/package/iputils/iputils.hash new file mode 100644 index 00000000..a3e48d60 --- /dev/null +++ b/package/iputils/iputils.hash @@ -0,0 +1,6 @@ +# https://github.com/iputils/iputils/releases/download/20240117/sha256sums.asc +sha256 7ed46e876e4157e1d20c40ec945e1ce0f3af3b10b5f6373e423135c6f22cd116 iputils-20240117.tar.gz +# Locally computed +sha256 2c9f29d982c48665c30b3adaf400c048988fd256eb91c691e351eb3b6a8b2036 LICENSE +sha256 9acc4bc871a4742550158e3696dcb381953172ef808d04ca248184f9f6322712 Documentation/LICENSE.BSD3 +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 Documentation/LICENSE.GPL2 diff --git a/package/iputils/iputils.mk b/package/iputils/iputils.mk new file mode 100644 index 00000000..08d849e6 --- /dev/null +++ b/package/iputils/iputils.mk @@ -0,0 +1,120 @@ +################################################################################ +# +# iputils +# +################################################################################ + +IPUTILS_VERSION = 20240117 +IPUTILS_SITE = https://github.com/iputils/iputils/releases/download/$(IPUTILS_VERSION) +IPUTILS_LICENSE = GPL-2.0+, BSD-3-Clause +IPUTILS_LICENSE_FILES = LICENSE Documentation/LICENSE.BSD3 Documentation/LICENSE.GPL2 +IPUTILS_CPE_ID_VALID = YES +IPUTILS_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) + +# Selectively build binaries +IPUTILS_CONF_OPTS += \ + -DBUILD_CLOCKDIFF=$(if $(BR2_PACKAGE_IPUTILS_CLOCKDIFF),true,false) \ + -DBUILD_TRACEPATH=$(if $(BR2_PACKAGE_IPUTILS_TRACEPATH),true,false) \ + -DSKIP_TESTS=true + +# Selectively select the appropriate SELinux refpolicy modules +IPUTILS_SELINUX_MODULES = \ + $(if $(BR2_PACKAGE_IPUTILS_ARPING),netutils) \ + $(if $(BR2_PACKAGE_IPUTILS_PING),netutils) \ + $(if $(BR2_PACKAGE_IPUTILS_TRACEPATH),netutils) + +# +# arping +# +ifeq ($(BR2_PACKAGE_IPUTILS_ARPING),y) +IPUTILS_CONF_OPTS += -DBUILD_ARPING=true + +# move some binaries to the same location as where Busybox installs +# the corresponding applets, so that we have a single version of the +# tools (from iputils) +define IPUTILS_MOVE_ARPING_BINARY + mv $(TARGET_DIR)/usr/bin/arping $(TARGET_DIR)/usr/sbin/arping +endef +IPUTILS_POST_INSTALL_TARGET_HOOKS += IPUTILS_MOVE_ARPING_BINARY + +else +IPUTILS_CONF_OPTS += -DBUILD_ARPING=false +endif + +# +# ping +# +ifeq ($(BR2_PACKAGE_IPUTILS_PING),y) +IPUTILS_CONF_OPTS += -DBUILD_PING=true + +# same reason to move the ping binary as for arping +ifeq ($(BR2_ROOTFS_MERGED_USR),) +define IPUTILS_MOVE_PING_BINARY + mv $(TARGET_DIR)/usr/bin/ping $(TARGET_DIR)/bin/ping +endef +IPUTILS_POST_INSTALL_TARGET_HOOKS += IPUTILS_MOVE_PING_BINARY +endif + +# upstream requires distros to create symlink +define IPUTILS_CREATE_PING6_SYMLINK + ln -sf ping $(TARGET_DIR)/bin/ping6 +endef +IPUTILS_POST_INSTALL_TARGET_HOOKS += IPUTILS_CREATE_PING6_SYMLINK + +else +IPUTILS_CONF_OPTS += -DBUILD_PING=false +endif + +# Handle libraries +ifeq ($(BR2_PACKAGE_LIBCAP),y) +IPUTILS_CONF_OPTS += -DUSE_CAP=true +IPUTILS_DEPENDENCIES += libcap +else +IPUTILS_CONF_OPTS += -DUSE_CAP=false +endif + +ifeq ($(BR2_PACKAGE_LIBIDN2),y) +IPUTILS_CONF_OPTS += -DUSE_IDN=true +IPUTILS_DEPENDENCIES += libidn2 +else +IPUTILS_CONF_OPTS += -DUSE_IDN=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +IPUTILS_DEPENDENCIES += systemd +endif + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +IPUTILS_CONF_OPTS += -DUSE_GETTEXT=true +else +IPUTILS_CONF_OPTS += -DUSE_GETTEXT=false +endif + +# XSL Stylesheets for DocBook 5 not packaged for buildroot +IPUTILS_CONF_OPTS += -DBUILD_MANS=false -DBUILD_HTML_MANS=false + +# handle permissions ourselves +IPUTILS_CONF_OPTS += -DNO_SETCAP_OR_SUID=true +ifeq ($(BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES),y) +define IPUTILS_PERMISSIONS + $(if $(BR2_PACKAGE_IPUTILS_ARPING),\ + /usr/sbin/arping f 755 0 0 - - - - -,) + $(if $(BR2_PACKAGE_IPUTILS_CLOCKDIFF),\ + /usr/bin/clockdiff f 755 0 0 - - - - - + |xattr cap_net_raw+p,) + $(if $(BR2_PACKAGE_IPUTILS_PING),\ + /bin/ping f 755 0 0 - - - - - + |xattr cap_net_raw+p,) +endef +else +define IPUTILS_PERMISSIONS + $(if $(BR2_PACKAGE_IPUTILS_ARPING),\ + /usr/sbin/arping f 755 0 0 - - - - -,) + $(if $(BR2_PACKAGE_IPUTILS_CLOCKDIFF),\ + /usr/bin/clockdiff f 4755 0 0 - - - - -,) + $(if $(BR2_PACKAGE_IPUTILS_PING),\ + /bin/ping f 4755 0 0 - - - - -,) +endef +endif + +$(eval $(meson-package)) diff --git a/package/irda-utils/0001-daemon.patch b/package/irda-utils/0001-daemon.patch new file mode 100644 index 00000000..f6034a75 --- /dev/null +++ b/package/irda-utils/0001-daemon.patch @@ -0,0 +1,34 @@ +written by Mike Frysinger + +https://sourceforge.net/tracker/?func=detail&aid=3132053&group_id=5616&atid=305616 + +Rather than using the fork function (which doesnt work on nommu +systems), simply use the daemon() function instead (which does +work). this should work the same before and after for all systems. + +--- a/irattach/util.c ++++ b/irattach/util.c +@@ -156,21 +156,10 @@ + + void fork_now(int ttyfd) + { +- int ret; + int i; + +- if ((ret = fork()) > 0) +- exit(0); +- +- if (ret == -1) +- syslog(LOG_INFO, "forking: %m"); +- if (setsid() < 0) +- syslog(LOG_INFO, "detaching from tty: %m"); +- +- if ((ret = fork()) > 0) { +- /* cleanup_files = 0; */ +- exit(0); +- } ++ if (daemon(1, 1)) ++ syslog(LOG_INFO, "daemon: %m"); + + /* Close all open inherited files! Except for ttyfd! */ + for (i = 0; i < 64; i++) diff --git a/package/irda-utils/0002-nommu.patch b/package/irda-utils/0002-nommu.patch new file mode 100644 index 00000000..bc76bd39 --- /dev/null +++ b/package/irda-utils/0002-nommu.patch @@ -0,0 +1,24 @@ +written by Mike Frysinger + +https://sourceforge.net/tracker/?func=detail&aid=3132056&group_id=5616&atid=305616 + +nommu systems cannot fork() as the hardware cannot support +it. irattach uses it as a minor optimization, but it isnt +necessary for correct functioning of the utility. so add a +NO_FORK define so we nommu peeps can do CFLAGS="... -DNO_FORK=1 +..." and use it in our embedded systems. + +--- a/irattach/irattach.c ++++ b/irattach/irattach.c +@@ -397,7 +397,11 @@ + after_names[i]); + /* Create a new instance for this other + * interface */ ++#ifdef NO_FORK ++ pid = -1; ++#else + pid = fork(); ++#endif + /* If in the child */ + if(!pid) { + /* Get the interface name */ diff --git a/package/irda-utils/0003-subdir.patch b/package/irda-utils/0003-subdir.patch new file mode 100644 index 00000000..e9b5458a --- /dev/null +++ b/package/irda-utils/0003-subdir.patch @@ -0,0 +1,23 @@ +written by Mike Frysinger + +https://sourceforge.net/tracker/?func=detail&aid=3132051&group_id=5616&atid=305616 + +The top level makefile ignores build/install errors in subdirs which makes +packaging a pain to verify. + +--- a/Makefile ++++ b/Makefile +@@ -31,11 +31,11 @@ + CFLAGS= -O2 -W -Wall + + all: +- @-(set -e ; for d in $(DIRS) ; do $(MAKE) $(MAKE_OUTPUT) -C $$d $@ ; done) ++ @(set -e ; for d in $(DIRS) ; do $(MAKE) $(MAKE_OUTPUT) -C $$d $@ ; done) + + + install: +- @-(set -e ; for d in $(DIRS) ; do $(MAKE) $(MAKE_OUTPUT) -C $$d $@ ; done) ++ @(set -e ; for d in $(DIRS) ; do $(MAKE) $(MAKE_OUTPUT) -C $$d $@ ; done) + + + clean: diff --git a/package/irda-utils/0004-musl.patch b/package/irda-utils/0004-musl.patch new file mode 100644 index 00000000..6cf975b8 --- /dev/null +++ b/package/irda-utils/0004-musl.patch @@ -0,0 +1,31 @@ +Replace use of with . + +kernel headers already provides the +needed definitions, moreover not all libc implementations +provide if_packet.h e.g. musl + +Signed-off-by: Khem Raj +Upstream-Status: Pending +[From http://cgit.openembedded.org/openembedded-core/plain/meta/recipes-connectivity/irda-utils/irda-utils-0.9.18/musl.patch.] +Signed-off-by: Bernd Kuhls + +Index: irda-utils-0.9.18/irdaping/irdaping.c +=================================================================== +--- irda-utils-0.9.18.orig/irdaping/irdaping.c ++++ irda-utils-0.9.18/irdaping/irdaping.c +@@ -33,7 +33,6 @@ + #include + #include + #include /* For struct ifreq */ +-#include /* For struct sockaddr_pkt */ + #include /* For ARPHRD_IRDA */ + #include /* For ETH_P_ALL */ + #include /* For htons */ +@@ -46,6 +45,7 @@ + #include /* __cpu_to_le32 and co. */ + + #include /* For __u8 and co. */ ++#include /* For struct sockaddr_pkt */ + #include + + #ifndef AF_IRDA diff --git a/package/irda-utils/Config.in b/package/irda-utils/Config.in new file mode 100644 index 00000000..418ab618 --- /dev/null +++ b/package/irda-utils/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_IRDA_UTILS + bool "irda-utils" + help + user space utilities which control the IrDA stack + + http://irda.sourceforge.net/ + +if BR2_PACKAGE_IRDA_UTILS + +config BR2_PACKAGE_IRDA_UTILS_IRATTACH + bool "irattach" + +config BR2_PACKAGE_IRDA_UTILS_IRDAPING + bool "irdaping" + +config BR2_PACKAGE_IRDA_UTILS_IRNETD + bool "irnetd" + +endif diff --git a/package/irda-utils/irda-utils.hash b/package/irda-utils/irda-utils.hash new file mode 100644 index 00000000..8a513cf3 --- /dev/null +++ b/package/irda-utils/irda-utils.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 61980551e46b2eaa9e17ad31cbc1a638074611fc33bff34163d10c7a67a9fdc6 irda-utils-0.9.18.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 man/COPYING diff --git a/package/irda-utils/irda-utils.mk b/package/irda-utils/irda-utils.mk new file mode 100644 index 00000000..18a3e586 --- /dev/null +++ b/package/irda-utils/irda-utils.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# irda-utils +# +################################################################################ + +IRDA_UTILS_VERSION = 0.9.18 +IRDA_UTILS_SITE = http://downloads.sourceforge.net/project/irda/irda-utils/$(IRDA_UTILS_VERSION) +IRDA_UTILS_LICENSE = GPL-2.0+ +IRDA_UTILS_LICENSE_FILES = man/COPYING + +IRDA_UTILS_CFLAGS = $(TARGET_CFLAGS) -I. +ifeq ($(BR2_USE_MMU),) +IRDA_UTILS_CFLAGS += -DNO_FORK=1 +endif + +define IRDA_UTILS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + CC="$(TARGET_CC)" \ + CFLAGS="$(IRDA_UTILS_CFLAGS)" \ + SYS_INCLUDES= \ + DIRS="irattach irdaping irnetd" \ + V=1 -C $(@D) +endef + +IRDA_UTILS_SBINS- = +IRDA_UTILS_SBINS-y = +IRDA_UTILS_SBINS-$(BR2_PACKAGE_IRDA_UTILS_IRATTACH) += irattach +IRDA_UTILS_SBINS-$(BR2_PACKAGE_IRDA_UTILS_IRDAPING) += irdaping +IRDA_UTILS_SBINS-$(BR2_PACKAGE_IRDA_UTILS_IRNETD) += irnetd +IRDA_UTILS_SBINS- += $(IRDA_UTILS_SBINS-y) + +define IRDA_UTILS_INSTALL_TARGET_CMDS + for i in $(IRDA_UTILS_SBINS-y); do \ + $(INSTALL) -m 0755 -D $(@D)/$$i/$$i $(TARGET_DIR)/usr/sbin/$$i || exit 1; \ + done +endef + +$(eval $(generic-package)) diff --git a/package/irqbalance/Config.in b/package/irqbalance/Config.in new file mode 100644 index 00000000..02d146f4 --- /dev/null +++ b/package/irqbalance/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_IRQBALANCE + bool "irqbalance" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + help + Irqbalance is a daemon to help balance the cpu load generated + by interrupts across all of a systems cpus. + Irqbalance identifies the highest volume interrupt sources, + and isolates them to a single unique cpu, so that load is + spread as much as possible over an entire processor set, while + minimizing cache hit rates for irq handlers. + + https://github.com/Irqbalance/irqbalance + +comment "irqbalance needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/irqbalance/S13irqbalance b/package/irqbalance/S13irqbalance new file mode 100644 index 00000000..f6ed9291 --- /dev/null +++ b/package/irqbalance/S13irqbalance @@ -0,0 +1,36 @@ +#!/bin/sh +# +# Starts irqbalance +# + +EXEC="/usr/sbin/irqbalance" +ARGS="" +PID="/var/run/irqbalance.pid" + +case "$1" in + start) + printf "Starting irqbalance: " + # for irqbalance socket /run/irqbalance/irqbalance.sock + mkdir -p /run/irqbalance + start-stop-daemon -S -q -x $EXEC -- $ARGS + if [ $? != 0 ]; then + echo "FAILED" + exit 1 + else + echo "OK" + fi + pidof irqbalance > $PID + ;; + stop) + printf "Stopping irqbalance: " + start-stop-daemon -K -q -p $PID + echo "OK" + ;; + restart|reload) + $0 stop + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/package/irqbalance/irqbalance.hash b/package/irqbalance/irqbalance.hash new file mode 100644 index 00000000..bf33e71e --- /dev/null +++ b/package/irqbalance/irqbalance.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 8d698799251ea8518f342f36be26f2f092df51189f6777db33116d40cf0dae6c irqbalance-1.9.3.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/irqbalance/irqbalance.mk b/package/irqbalance/irqbalance.mk new file mode 100644 index 00000000..5d1bd480 --- /dev/null +++ b/package/irqbalance/irqbalance.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# irqbalance +# +################################################################################ + +IRQBALANCE_VERSION = 1.9.3 +IRQBALANCE_SITE = $(call github,irqbalance,irqbalance,v$(IRQBALANCE_VERSION)) +IRQBALANCE_LICENSE = GPL-2.0 +IRQBALANCE_LICENSE_FILES = COPYING +IRQBALANCE_SELINUX_MODULES = irqbalance +IRQBALANCE_DEPENDENCIES = host-pkgconf libglib2 +# Autoreconf needed because package is distributed without a configure script +IRQBALANCE_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_LIBCAP_NG),y) +IRQBALANCE_DEPENDENCIES += libcap-ng +IRQBALANCE_CONF_OPTS += --with-libcap-ng +else +IRQBALANCE_CONF_OPTS += --without-libcap-ng +endif + +ifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y) +IRQBALANCE_DEPENDENCIES += ncurses +IRQBALANCE_CONF_OPTS += --with-irqbalance-ui +else +IRQBALANCE_CONF_OPTS += --without-irqbalance-ui +endif + +ifeq ($(BR2_PACKAGE_NUMACTL),y) +IRQBALANCE_DEPENDENCIES += numactl +IRQBALANCE_CONF_OPTS += --enable-numa +else +IRQBALANCE_CONF_OPTS += --disable-numa +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +IRQBALANCE_DEPENDENCIES += systemd +IRQBALANCE_CONF_OPTS += --with-systemd +else +IRQBALANCE_CONF_OPTS += --without-systemd +endif + +define IRQBALANCE_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/irqbalance/S13irqbalance \ + $(TARGET_DIR)/etc/init.d/S13irqbalance +endef + +define IRQBALANCE_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/irqbalance/irqbalance.service \ + $(TARGET_DIR)/usr/lib/systemd/system/irqbalance.service +endef + +$(eval $(autotools-package)) diff --git a/package/irqbalance/irqbalance.service b/package/irqbalance/irqbalance.service new file mode 100644 index 00000000..39574877 --- /dev/null +++ b/package/irqbalance/irqbalance.service @@ -0,0 +1,10 @@ +[Unit] +Description=irqbalance daemon +After=syslog.target + +[Service] +RuntimeDirectory=irqbalance +ExecStart=/usr/sbin/irqbalance --foreground + +[Install] +WantedBy=multi-user.target diff --git a/package/irrlicht/0001-override-CPPFLAGS-CXXFLAGS-and-CFLAGS-in-Makefile.patch b/package/irrlicht/0001-override-CPPFLAGS-CXXFLAGS-and-CFLAGS-in-Makefile.patch new file mode 100644 index 00000000..d6e4b63f --- /dev/null +++ b/package/irrlicht/0001-override-CPPFLAGS-CXXFLAGS-and-CFLAGS-in-Makefile.patch @@ -0,0 +1,44 @@ +From 5c5e6d0f469c8b4384bbe5d6c8f78069c182daf0 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 9 Apr 2017 19:56:55 +0200 +Subject: [PATCH] override CPPFLAGS, CXXFLAGS and CFLAGS in Makefile + +When CPPFLAGS is passed on the command line, include paths for the +bundled libraries are lost. Since the hand written Makefile want +to use them unconditionally, we need to use the key word "override" +before CPPFLAGS. + +Do the same for CXXFLAGS and CFLAGS otherwise -fPIC is lost. + +Signed-off-by: Romain Naour +--- + source/Irrlicht/Makefile | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/source/Irrlicht/Makefile b/source/Irrlicht/Makefile +index 0712b07..b334e9c 100644 +--- a/source/Irrlicht/Makefile ++++ b/source/Irrlicht/Makefile +@@ -62,7 +62,7 @@ LINKOBJ = $(IRRMESHOBJ) $(IRROBJ) $(IRRPARTICLEOBJ) $(IRRANIMOBJ) \ + ############### + #Compiler flags + CXXINCS = -I../../include -Izlib -Ijpeglib -Ilibpng +-CPPFLAGS += $(CXXINCS) -DIRRLICHT_EXPORTS=1 ++override CPPFLAGS += $(CXXINCS) -DIRRLICHT_EXPORTS=1 + CXXFLAGS += -Wall -pipe -fno-exceptions -fno-rtti -fstrict-aliasing + ifndef NDEBUG + CXXFLAGS += -g -D_DEBUG +@@ -74,8 +74,8 @@ CXXFLAGS += -pg + endif + CFLAGS := -O3 -fexpensive-optimizations -DPNG_THREAD_UNSAFE_OK -DPNG_NO_MMX_CODE -DPNG_NO_MNG_FEATURES + +-sharedlib sharedlib_osx: CXXFLAGS += -fPIC +-sharedlib sharedlib_osx: CFLAGS += -fPIC ++sharedlib sharedlib_osx: override CXXFLAGS += -fPIC ++sharedlib sharedlib_osx: override CFLAGS += -fPIC + + #multilib handling + ifeq ($(HOSTTYPE), x86_64) +-- +2.9.3 + diff --git a/package/irrlicht/0002-makefile-override-LDFLAGS-and-remove-obsolete-X11R6-.patch b/package/irrlicht/0002-makefile-override-LDFLAGS-and-remove-obsolete-X11R6-.patch new file mode 100644 index 00000000..51b98a4e --- /dev/null +++ b/package/irrlicht/0002-makefile-override-LDFLAGS-and-remove-obsolete-X11R6-.patch @@ -0,0 +1,36 @@ +From 0ecb59c4dc575bb902c1955d8762f91ff79290a4 Mon Sep 17 00:00:00 2001 +From: Bartosz Bilas +Date: Tue, 23 Jun 2020 19:36:27 +0200 +Subject: [PATCH] makefile: override LDFLAGS and remove obsolete X11R6 + lib/include directories + +Add "override" keyword to LDFLAGS variable in order to link libraries +using buildroot cross-compiler correctly and remove those non-supported +paths to lib/includes that are not used and not available in buildroot +and in addition point to the host system libraries in a result +cause the following warning: + +/home/bartekk/buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-gnueabihf/9.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: warning: library search path "/usr/X11R6/lib" is unsafe for cross-compilation + +Signed-off-by: Bartosz Bilas +--- + source/Irrlicht/Makefile | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/source/Irrlicht/Makefile b/source/Irrlicht/Makefile +index 1a8277e..b323237 100644 +--- a/source/Irrlicht/Makefile ++++ b/source/Irrlicht/Makefile +@@ -88,8 +88,7 @@ STATIC_LIB = libIrrlicht.a + LIB_PATH = ../../lib/$(SYSTEM) + INSTALL_DIR = /usr/local/lib + sharedlib install: SHARED_LIB = libIrrlicht.so +-sharedlib: LDFLAGS += -L/usr/X11R6/lib$(LIBSELECT) -lGL -lXxf86vm +-staticlib sharedlib: CXXINCS += -I/usr/X11R6/include ++sharedlib: override LDFLAGS += -lGL -lXxf86vm + + #OSX specific options + staticlib_osx sharedlib_osx install_osx: SYSTEM = MacOSX +-- +2.27.0 + diff --git a/package/irrlicht/Config.in b/package/irrlicht/Config.in new file mode 100644 index 00000000..edd182be --- /dev/null +++ b/package/irrlicht/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_IRRLICHT + bool "irrlicht" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_XORG7 + depends on BR2_PACKAGE_HAS_LIBGL # use GLX + select BR2_PACKAGE_XLIB_LIBXXF86VM # libXxf86vm + help + An open source high performance realtime 3D graphics engine. + + http://irrlicht.sourceforge.net/ + +comment "irrlicht needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +comment "irrlicht needs X11 and an OpenGL provider" + depends on !BR2_PACKAGE_HAS_LIBGL || !BR2_PACKAGE_XORG7 + depends on BR2_INSTALL_LIBSTDCPP diff --git a/package/irrlicht/irrlicht.hash b/package/irrlicht/irrlicht.hash new file mode 100644 index 00000000..7f9bceb0 --- /dev/null +++ b/package/irrlicht/irrlicht.hash @@ -0,0 +1,10 @@ +# From https://sourceforge.net/projects/irrlicht/files/Irrlicht%20SDK/1.8/1.8.5 +md5 1fcf67c2906eb84b531af512de8481b1 irrlicht-1.8.5.zip +sha1 96908ebc379e0172261c240dc018416ce6a3e4e3 irrlicht-1.8.5.zip +# Locally calculated +sha256 effb7beed3985099ce2315a959c639b4973aac8210f61e354475a84105944f3d irrlicht-1.8.5.zip +sha256 cc86e0b830f9d48933feb198f2741a7d9bb7c34fe8a35302d8ce36b8e2ecb27b doc/aesGladman.txt +sha256 e8a6b63336018eec09ac3a7cdfe5a80bda635641bc0397a77b8baa25bed03800 doc/bzip2-license.txt +sha256 ca38f1ba4ab901111f6eee50009bd46dbd866e6beb98d592d843f7c162d73409 doc/irrlicht-license.txt +sha256 67f098c29401646a0f52da432efc3bab0433c13f17effc3314e9fa523da51b75 doc/jpglib-license.txt +sha256 e0f86c3e4acd285618faa55735ceedce46084a3cfb06b8f31d0d092bb68ae151 doc/libpng-license.txt diff --git a/package/irrlicht/irrlicht.mk b/package/irrlicht/irrlicht.mk new file mode 100644 index 00000000..c1da50a5 --- /dev/null +++ b/package/irrlicht/irrlicht.mk @@ -0,0 +1,65 @@ +################################################################################ +# +# irrlicht +# +################################################################################ + +IRRLICHT_VERSION_MAJOR = 1.8 +IRRLICHT_VERSION = $(IRRLICHT_VERSION_MAJOR).5 +IRRLICHT_SOURCE = irrlicht-$(IRRLICHT_VERSION).zip +IRRLICHT_SITE = https://downloads.sourceforge.net/project/irrlicht/Irrlicht%20SDK/$(IRRLICHT_VERSION_MAJOR)/$(IRRLICHT_VERSION) +IRRLICHT_INSTALL_STAGING = YES + +# Bundled libraries: bzip2, libaesGladman, libpng, lzma, zlib, +# The handcrafted Makefile can only use bundled libraries. +IRRLICHT_LICENSE = Zlib (irrlicht), BSD-3-Clause (libaesGladman), bzip2-1.0.5 (bzip2), IJG (libjpeg), Libpng (libpng) +IRRLICHT_LICENSE_FILES = \ + doc/aesGladman.txt \ + doc/bzip2-license.txt \ + doc/irrlicht-license.txt \ + doc/jpglib-license.txt \ + doc/libpng-license.txt + +IRRLICHT_SUBDIR = source/Irrlicht + +IRRLICHT_DEPENDENCIES = libgl xlib_libXxf86vm + +define IRRLICHT_EXTRACT_CMDS + $(UNZIP) -d $(@D) $(IRRLICHT_DL_DIR)/$(IRRLICHT_SOURCE) + mv $(@D)/irrlicht-$(IRRLICHT_VERSION)/* $(@D) + $(RM) -r $(@D)/irrlicht-$(IRRLICHT_VERSION) +endef + +IRRLICHT_CONF_OPTS = $(TARGET_CONFIGURE_OPTS) + +# Build a static library OR a shared library, otherwise we need to compile with -fPIC +# "relocation R_X86_64_32S can not be used when making a shared object; recompile with -fPIC" +ifeq ($(BR2_STATIC_LIBS),) +IRRLICHT_CONF_OPTS += sharedlib +endif + +# Irrlicht fail to detect properly the NEON support on aarch64 or ARM with NEON FPU support. +# While linking an application with libIrrlicht.so, we get an undefined reference to +# png_init_filter_functions_neon. +# Some files are missing in the libpng bundled in Irrlicht, in particular arm/arm_init.c, +# so disable NEON support completely. +IRRLICHT_CONF_OPTS += CPPFLAGS="$(TARGET_CPPFLAGS) -DPNG_ARM_NEON_OPT=0" + +define IRRLICHT_BUILD_CMDS + $(TARGET_MAKE_ENV) + $(MAKE) -C $(@D)/$(IRRLICHT_SUBDIR) $(IRRLICHT_CONF_OPTS) +endef + +define IRRLICHT_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + INSTALL_DIR=$(STAGING_DIR)/usr/lib \ + -C $(@D)/$(IRRLICHT_SUBDIR) install +endef + +define IRRLICHT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + INSTALL_DIR=$(TARGET_DIR)/usr/lib \ + -C $(@D)/$(IRRLICHT_SUBDIR) install +endef + +$(eval $(generic-package)) diff --git a/package/irssi/Config.in b/package/irssi/Config.in new file mode 100644 index 00000000..6361cff3 --- /dev/null +++ b/package/irssi/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_IRSSI + bool "irssi" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_OPENSSL + help + Irssi is a terminal based IRC client for UNIX systems. + + http://irssi.org/ + +if BR2_PACKAGE_IRSSI + +config BR2_PACKAGE_IRSSI_PROXY + bool "proxy module" + help + Build the irssi proxy module, which allows an IRC connection + to be shared among multiple clients. + +config BR2_PACKAGE_IRSSI_TRUE_COLOR + bool "true color support" + help + Build with true color support in terminal. + +endif + +comment "irssi needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/irssi/irssi.hash b/package/irssi/irssi.hash new file mode 100644 index 00000000..df72ee4d --- /dev/null +++ b/package/irssi/irssi.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 fefe9ec8c7b1475449945c934a2360ab12693454892be47a6d288c63eb107ead irssi-1.4.4.tar.xz +# Locally calculated +sha256 a1a27cb2ecee8d5378fbb3562f577104a445d6d66fee89286e16758305e63e2b COPYING diff --git a/package/irssi/irssi.mk b/package/irssi/irssi.mk new file mode 100644 index 00000000..6790bf0c --- /dev/null +++ b/package/irssi/irssi.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# irssi +# +################################################################################ + +IRSSI_VERSION = 1.4.4 +IRSSI_SOURCE = irssi-$(IRSSI_VERSION).tar.xz +IRSSI_SITE = https://codeberg.org/irssi/irssi/releases/download/$(IRSSI_VERSION) +IRSSI_LICENSE = GPL-2.0+ +IRSSI_LICENSE_FILES = COPYING +IRSSI_CPE_ID_VENDOR = irssi +IRSSI_DEPENDENCIES = host-pkgconf libglib2 ncurses openssl + +IRSSI_CONF_OPTS = \ + --disable-glibtest \ + --without-perl + +ifeq ($(BR2_PACKAGE_IRSSI_PROXY),y) +IRSSI_CONF_OPTS += --with-proxy +# If shared libs are disabled, 'proxy' has to go in the list of built-in +# modules. +ifeq ($(BR2_STATIC_LIBS),y) +IRSSI_CONF_OPTS += --with-modules=proxy +endif +else +IRSSI_CONF_OPTS += --without-proxy +endif # proxy + +ifeq ($(BR2_PACKAGE_IRSSI_TRUE_COLOR),y) +IRSSI_CONF_OPTS += --enable-true-color +else +IRSSI_CONF_OPTS += --disable-true-color +endif + +# Cross-compiling irssi with the perl interpreter enabled doesn't work +# yet. So, remove scripts as they are useless in that case. +define IRSSI_REMOVE_SCRIPTS + rm -rf $(TARGET_DIR)/usr/share/irssi/scripts/ +endef + +IRSSI_POST_INSTALL_TARGET_HOOKS += IRSSI_REMOVE_SCRIPTS + +$(eval $(autotools-package)) diff --git a/package/isl/isl.hash b/package/isl/isl.hash new file mode 100644 index 00000000..1f8c9982 --- /dev/null +++ b/package/isl/isl.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 a0b5cb06d24f9fa9e77b55fabbe9a3c94a336190345c2555f9915bb38e976504 isl-0.26.tar.xz +sha256 3a2c398103f6bca0f50a9a9465deca9230b370b0212af5fdf31ed88a36215c30 LICENSE diff --git a/package/isl/isl.mk b/package/isl/isl.mk new file mode 100644 index 00000000..42830a26 --- /dev/null +++ b/package/isl/isl.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# isl +# +################################################################################ + +ISL_VERSION = 0.26 +ISL_SOURCE = isl-$(ISL_VERSION).tar.xz +ISL_SITE = https://libisl.sourceforge.io +ISL_LICENSE = MIT +ISL_LICENSE_FILES = LICENSE +HOST_ISL_DEPENDENCIES = host-gmp + +$(eval $(host-autotools-package)) diff --git a/package/iucode-tool/Config.in b/package/iucode-tool/Config.in new file mode 100644 index 00000000..f9f2521a --- /dev/null +++ b/package/iucode-tool/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_IUCODE_TOOL + bool "iucode-tool" + depends on BR2_x86_64 || BR2_i386 + select BR2_PACKAGE_INTEL_MICROCODE + select BR2_PACKAGE_INTEL_MICROCODE_INSTALL_TARGET + select BR2_PACKAGE_ARGP_STANDALONE \ + if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL + help + Intel processor microcode tool + + https://gitlab.com/iucode-tool diff --git a/package/iucode-tool/S00iucode-tool b/package/iucode-tool/S00iucode-tool new file mode 100644 index 00000000..393c903b --- /dev/null +++ b/package/iucode-tool/S00iucode-tool @@ -0,0 +1,28 @@ +#!/bin/sh +# +# Upload microcode into the processor. +# + +MICROCODE_DIR="/lib/firmware/intel-ucode" + +start() { + printf 'Starting iucode-tool: ' + /usr/sbin/iucode_tool -q -k "$MICROCODE_DIR" + status="$?" + if [ "$status" = 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +case "$1" in + start) + start;; + stop|restart|reload) + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/iucode-tool/iucode-tool.hash b/package/iucode-tool/iucode-tool.hash new file mode 100644 index 00000000..ae18339c --- /dev/null +++ b/package/iucode-tool/iucode-tool.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 12b88efa4d0d95af08db05a50b3dcb217c0eb2bfc67b483779e33d498ddb2f95 iucode-tool_2.3.1.tar.xz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/iucode-tool/iucode-tool.mk b/package/iucode-tool/iucode-tool.mk new file mode 100644 index 00000000..e22e7828 --- /dev/null +++ b/package/iucode-tool/iucode-tool.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# iucode-tool +# +################################################################################ + +IUCODE_TOOL_VERSION = 2.3.1 +IUCODE_TOOL_SOURCE = iucode-tool_$(IUCODE_TOOL_VERSION).tar.xz +IUCODE_TOOL_SITE = https://gitlab.com/iucode-tool/releases/raw/master +IUCODE_TOOL_LICENSE = GPL-2.0+ +IUCODE_TOOL_LICENSE_FILES = COPYING +IUCODE_TOOL_CPE_ID_VALID = YES + +ifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y) +IUCODE_TOOL_DEPENDENCIES += argp-standalone $(TARGET_NLS_DEPENDENCIES) +IUCODE_TOOL_CONF_ENV += LIBS=$(TARGET_NLS_LIBS) +endif + +define IUCODE_TOOL_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/iucode-tool/S00iucode-tool \ + $(TARGET_DIR)/etc/init.d/S00iucode-tool +endef + +define IUCODE_TOOL_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/iucode-tool/iucode.service \ + $(TARGET_DIR)/usr/lib/systemd/system/iucode.service +endef + +$(eval $(autotools-package)) diff --git a/package/iucode-tool/iucode.service b/package/iucode-tool/iucode.service new file mode 100644 index 00000000..d99acc6a --- /dev/null +++ b/package/iucode-tool/iucode.service @@ -0,0 +1,10 @@ +[Unit] +Description=Upload microcode into the processor + +[Service] +Type=oneshot +ExecStart=/usr/sbin/iucode_tool -k /usr/share/misc/intel-microcode.dat +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target diff --git a/package/ivi-homescreen/0001-add-missing-headers-to-the-audio-players-and-keyboar.patch b/package/ivi-homescreen/0001-add-missing-headers-to-the-audio-players-and-keyboar.patch new file mode 100644 index 00000000..0d308b78 --- /dev/null +++ b/package/ivi-homescreen/0001-add-missing-headers-to-the-audio-players-and-keyboar.patch @@ -0,0 +1,104 @@ +From 7e35ea4fbd94a1604907069bb9cc2e2dff4b43c7 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Sat, 6 Jan 2024 14:18:56 -0700 +Subject: [PATCH] add missing headers to the audio-players and keyboard_manager + plugin + +Fixes flutter::StandardMethodCodec not being declared on the following lines: +plugins/audio_players/audio_players_registry.cc:83 +plugins/audio_players/audio_players_registry.cc:94 +plugins/audio_players/audio_players_registry.cc:152 +plugins/audio_players/audio_player.cc:257 +plugins/audio_players/audio_player.cc:623 +plugins/keyboard_manager/keyboard_manager.cc:25 + +Upstream: https://github.com/toyota-connected/ivi-homescreen/pull/133 + +Signed-off-by: Adam Duskett +--- + shell/plugins/audio_players/audio_player.cc | 3 ++- + shell/plugins/audio_players/audio_players.cc | 4 +++- + shell/plugins/audio_players/audio_players_registry.cc | 3 ++- + shell/plugins/keyboard_manager/keyboard_manager.h | 3 ++- + 4 files changed, 9 insertions(+), 4 deletions(-) + +diff --git a/shell/plugins/audio_players/audio_player.cc b/shell/plugins/audio_players/audio_player.cc +index 56027eb..a85e9ae 100644 +--- a/shell/plugins/audio_players/audio_player.cc ++++ b/shell/plugins/audio_players/audio_player.cc +@@ -20,6 +20,7 @@ + #include + #include + ++#include + #include + + #include +@@ -639,4 +640,4 @@ void AudioPlayer::OnPlatformMessage(const FlutterPlatformMessage* message, + engine->SendPlatformMessageResponse(message->response_handle, result->data(), + result->size()); + } +-} // namespace Plugins +\ No newline at end of file ++} // namespace Plugins +diff --git a/shell/plugins/audio_players/audio_players.cc b/shell/plugins/audio_players/audio_players.cc +index 0605576..4290f5a 100644 +--- a/shell/plugins/audio_players/audio_players.cc ++++ b/shell/plugins/audio_players/audio_players.cc +@@ -19,6 +19,8 @@ + #include + #include + ++#include ++ + #include "audio_player.h" + #include "audio_players_registry.h" + #include "engine.h" +@@ -314,4 +316,4 @@ void AudioPlayers::OnPlatformMessage(const FlutterPlatformMessage* message, + : "Unknown AudioPlayersLinux error"); + } + } +-} +\ No newline at end of file ++} +diff --git a/shell/plugins/audio_players/audio_players_registry.cc b/shell/plugins/audio_players/audio_players_registry.cc +index 6c9ef33..00c4f45 100644 +--- a/shell/plugins/audio_players/audio_players_registry.cc ++++ b/shell/plugins/audio_players/audio_players_registry.cc +@@ -19,6 +19,7 @@ + #include + #include + ++#include + #include + + #include "audio_player.h" +@@ -168,4 +169,4 @@ void AudioPlayersRegistry::OnPlatformMessageEvents( + engine->SendPlatformMessageResponse(message->response_handle, result->data(), + result->size()); + } +-} // namespace Plugins +\ No newline at end of file ++} // namespace Plugins +diff --git a/shell/plugins/keyboard_manager/keyboard_manager.h b/shell/plugins/keyboard_manager/keyboard_manager.h +index 74b4e8d..cae1954 100644 +--- a/shell/plugins/keyboard_manager/keyboard_manager.h ++++ b/shell/plugins/keyboard_manager/keyboard_manager.h +@@ -17,6 +17,7 @@ + #pragma once + + #include "flutter/fml/macros.h" ++#include + + #include + +@@ -45,4 +46,4 @@ class KeyboardManager { + + private: + static constexpr char kGetKeyboardState[] = "getKeyboardState"; +-}; +\ No newline at end of file ++}; +-- +2.43.0 + diff --git a/package/ivi-homescreen/Config.in b/package/ivi-homescreen/Config.in new file mode 100644 index 00000000..a4f5f683 --- /dev/null +++ b/package/ivi-homescreen/Config.in @@ -0,0 +1,269 @@ +menuconfig BR2_PACKAGE_IVI_HOMESCREEN + bool "ivi-homescreen" + depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS + depends on BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS + depends on BR2_HOST_GCC_AT_LEAST_5 # flutter-engine + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # C++17 filesystem + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # flutter-engine + depends on BR2_TOOLCHAIN_USES_GLIBC # flutter-engine + depends on BR2_INSTALL_LIBSTDCPP # flutter-engine + depends on !BR2_STATIC_LIBS # flutter-engine, wayland + depends on BR2_USE_WCHAR # flutter-engine + depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES # flutter-engine + select BR2_PACKAGE_HOST_FLUTTER_SDK_BIN + select BR2_PACKAGE_FLUTTER_ENGINE + select BR2_PACKAGE_LIBXKBCOMMON + select BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_WAYLAND_PROTOCOLS + select BR2_PACKAGE_WAYLAND_UTILS + help + Toyota's Flutter Embedder that communicates with Wayland + compositors. + Features: + - Strongly Typed (C++) + - Lightweight + - Platform Channels enabled/disabled via CMake + - OpenGL Texture Framework + - Compositor Sub-surface/Region support + - Vulkan / EGL backend support + + https://github.com/toyota-connected/ivi-homescreen + +if BR2_PACKAGE_IVI_HOMESCREEN + +config BR2_PACKAGE_IVI_HOMESCREEN_IVI_SHELL_CLIENT + bool "ivi-shell client" + +comment "Logging" +config BR2_PACKAGE_IVI_HOMESCREEN_DART_VM_LOGGING + bool "Enable Dart VM Logging" + +config BR2_PACKAGE_IVI_HOMESCREEN_DLT_LOGGING + bool "DLT logging" + +comment "EGL options" + +config BR2_PACKAGE_IVI_HOMESCREEN_EGL_TRANSPARENCY + bool "Transparency" + depends on BR2_PACKAGE_HAS_LIBEGL + +comment "Transparency support needs an EGL backend" + depends on !BR2_PACKAGE_HAS_LIBEGL + +config BR2_PACKAGE_IVI_HOMESCREEN_EGL_ENABLE_3D + bool "3D support" + depends on BR2_PACKAGE_HAS_LIBEGL + help + Build with EGL Stencil, Depth, and Stencil + +comment "3D support needs an EGL backend" + depends on !BR2_PACKAGE_HAS_LIBEGL + +config BR2_PACKAGE_IVI_HOMESCREEN_EGL_MULTISAMPLE + bool "Multisample support" + depends on BR2_PACKAGE_HAS_LIBEGL + help + Build with EGL Sample set to 4 + +comment "Multisample support needs an EGL backend" + depends on !BR2_PACKAGE_HAS_LIBEGL + +comment "dependency-less plugins" + +config BR2_PACKAGE_IVI_HOMESCREEN_ACCESSIBILITY_PLUGIN + bool "Accessibility" + +config BR2_PACKAGE_IVI_HOMESCREEN_COMP_REGION_PLUGIN + bool "Compositor Region" + +config BR2_PACKAGE_IVI_HOMESCREEN_COMP_SURF_PLUGIN + bool "Compositor Surface" + +config BR2_PACKAGE_IVI_HOMESCREEN_DESKTOP_WINDOW_PLUGIN + bool "Desktop Window" + help + Flutter plugin to change window size. + + https://pub.dev/packages/desktop_window + +config BR2_PACKAGE_IVI_HOMESCREEN_GO_ROUTER_PLUGIN + bool "Go Router" + help + A declarative routing package for Flutter that uses the + Router API to provide a convenient, url-based API for + navigating between different screens. You can define URL + patterns, navigate using a URL, handle deep links, and a + number of other navigation-related scenarios. + + https://pub.dev/packages/go_router + +config BR2_PACKAGE_IVI_HOMESCREEN_INTEGRATION_TEST_PLUGIN + bool "Flutter Integration Test support" + help + https://docs.flutter.dev/cookbook/testing/integration/introduction + +config BR2_PACKAGE_IVI_HOMESCREEN_ISOLATE_PLUGIN + bool "Isolate" + +config BR2_PACKAGE_IVI_HOMESCREEN_KEYBOARD_MANAGER_PLUGIN + bool "Keyboard Manager" + select BR2_PACKAGE_IVI_HOMESCREEN_TEXT_INPUT_PLUGIN # runtime + help + This is a wrapper for the raw keyboard listener made to + simplify intercept external keyboard button press. + + https://pub.dev/packages/keyboard_manager + +config BR2_PACKAGE_IVI_HOMESCREEN_KEY_EVENT_PLUGIN + bool "Key Event" + select BR2_PACKAGE_IVI_HOMESCREEN_TEXT_INPUT_PLUGIN # runtime + help + KeyEvent plugin to support RawKeyEvent. + +config BR2_PACKAGE_IVI_HOMESCREEN_LAYER_PLAYGROUND_PLUGIN + bool "Layer Playground" + select BR2_PACKAGE_IVI_HOMESCREEN_PLATFORM_VIEWS_PLUGIN + help + This plugin enables the platform views plugin and also + provides a simple-box-view-type option. + + https://github.com/toyota-connected/ivi-homescreen/tree/main/shell/plugins/platform_views + +config BR2_PACKAGE_IVI_HOMESCREEN_LOGGING_PLUGIN + bool "Logging" + +config BR2_PACKAGE_IVI_HOMESCREEN_MOUSE_CURSOR_PLUGIN + bool "Mouse Cursor" + help + Add mouse cursor support. + +config BR2_PACKAGE_IVI_HOMESCREEN_PACKAGE_INFO_PLUGIN + bool "PackageInfo" + help + Prints the ivi-homescreen package information. + +config BR2_PACKAGE_IVI_HOMESCREEN_PLATFORM_PLUGIN + bool "Platform" + help + Get information about the platform the Flutter application + is running on. + +config BR2_PACKAGE_IVI_HOMESCREEN_PLATFORM_VIEWS_PLUGIN + bool "Platform Views" + help + This plugin supports the AndroidView interface. Meaning you + can take any Platform View Dart code, change the definition + to use AndroidView, and you will have a working interface. + + Benefits of using this interface: + - pre-defined interface that is supported in Flutter SDK + - params are easily augmented in Dart to add for given use + case + - pass touch to another process/library without additional + work + + For a backing implementation there are a number of approaches: + - Have a PlatformView implementation render to a Texture + - Compositor Region support + (poke a hole for another process) + - Compositor sub-surface and manage Z-order + + The above is already supported today using either an OpenGL + texture, or a Compositor Sub-Surface. Using Platform Views + just re-uses an existing interface. + + https://github.com/toyota-connected/ivi-homescreen/tree/main/shell/plugins/platform_views + +config BR2_PACKAGE_IVI_HOMESCREEN_RESTORATION_PLUGIN + bool "Restoration" + help + Handles the Flutter restoration callback + +config BR2_PACKAGE_IVI_HOMESCREEN_TEXT_INPUT_PLUGIN + bool "Text Input" + help + Allow for text input + +comment "plugins with external dependencies" +config BR2_PACKAGE_IVI_HOMESCREEN_AUDIO_PLAYERS + bool "Audio Players" + 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_AUDIOCONVERT + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORESAMPLE + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VOLUME + help + A Flutter plugin to play multiple simultaneously audio files. + Based on audioplayers-v5.2.1 + + https://pub.dev/packages/audioplayers + +config BR2_PACKAGE_IVI_HOMESCREEN_FLUTTER_SECURE_STORAGE_PLUGIN + bool "Flutter Secure Storage" + select BR2_PACKAGE_LIBSECRET + help + Store data in secure storage + + https://pub.dev/packages/flutter_secure_storage + +config BR2_PACKAGE_IVI_HOMESCREEN_GOOGLE_SIGN_IN_PLUGIN + bool "Google Sign In manager" + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBCURL_FORCE_TLS + select BR2_PACKAGE_OPENSSL + help + This static plugin is to support this pub.dev package: + https://pub.dev/packages/google_sign_in + + https://github.com/toyota-connected/ivi-homescreen/tree/main/shell/plugins/google_sign_in + +config BR2_PACKAGE_IVI_HOMESCREEN_GSTREAMER_EGL_PLUGIN + bool "GStreamer EGL" + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API # GST1_PLUGINS_BASE_LIB_OPENGL_EGL + select BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL + help + A GStreamer-powered alternative to Flutter's video_player that + support Linux, iOS and Android. + + https://pub.dev/packages/flutter_gstreamer_player + +comment "GStreamer plugin needs gst1-plugins-base with an EGL backend" + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + depends on !BR2_PACKAGE_HAS_LIBEGL \ + || !BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API + +config BR2_PACKAGE_IVI_HOMESCREEN_OPENGL_TEXTURE_PLUGIN + bool "OpenGL Texture" + depends on BR2_PACKAGE_HAS_LIBEGL + help + A Flutter OpenGL ES plugin using a Texture() widget. + Many shaders from ShaderToy.com can be copy/pasted + + https://pub.dev/packages/flutter_opengl + +comment "OpenGL texture plugin needs an EGL backend" + depends on !BR2_PACKAGE_HAS_LIBEGL + +endif # BR2_PACKAGE_IVI_HOMESCREEN + +comment "ivi-homescreen needs a glibc toolchain w/ wchar, C++, gcc >= 8, dynamic library, host gcc >= 5" + depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS + depends on BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_USES_GLIBC \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_8 \ + || BR2_STATIC_LIBS || !BR2_USE_WCHAR \ + || !BR2_HOST_GCC_AT_LEAST_5 + +comment "ivi-homescreen needs a toolchain not affected by GCC bug 64735" + depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS + depends on BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + +comment "ivi-homescreen needs an OpenGL or OpenGLES backend" + depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS + depends on BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS + depends on !BR2_PACKAGE_HAS_LIBGL && !BR2_PACKAGE_HAS_LIBGLES diff --git a/package/ivi-homescreen/ivi-homescreen.hash b/package/ivi-homescreen/ivi-homescreen.hash new file mode 100644 index 00000000..60b9281a --- /dev/null +++ b/package/ivi-homescreen/ivi-homescreen.hash @@ -0,0 +1,21 @@ +# Locally calculated +sha256 733a95a9b50875e8b45b0b69118656edba3ba88ecc65e3c0d76ea5df9761c433 ivi-homescreen-5ab78a19e95c88cc5d6b173ab1260a211e78cf0a-git4.tar.gz + +# Apache-2.0 +sha256 6b96fa0a3def85caaf466caa2bd82d4ca4f22d106ff88f97a00c537c00cc714b LICENSE +sha256 943c358cb6d086e4bc0937941b8f8d766db7d4e5f06583efd45dca0ca6a645f3 third_party/filament/libs/bluevk/include/bluevk/BlueVK.h + +# BSD-3-Clause +sha256 fdff25c8a4147791114584a45d56621336d294601da77656e83504a71747c8c2 third_party/flutter/shell/platform/common/client_wrapper/core_implementations.cc + +# BSD-Style +sha256 baa98cbcc03e3e745c4ad9ac2d3fb3464424486b2e420081181013034a7e6406 third_party/flutter/third_party/dart/runtime/include/dart_api.h + +# BSL-1.0 +sha256 c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566 third_party/asio-1-28-1/asio/LICENSE_1_0.txt + +# MIT +sha256 240f786071b64c28c0a1dae3e3b05fc3ca93fa4882b1e36e56ee49fee3037b0a third_party/flutter/third_party/rapidjson/include/rapidjson/rapidjson.h +sha256 4b67e7ae8c91e68e1a929eb1cbaa4c773c6d19aa91aaa12c390cf9560d1c9799 third_party/sanitizers-cmake/LICENSE +sha256 a7241a379cb98d37788f82c2fc2e484c3ae85dae881fd3406f0637644850926f third_party/spdlog-1.12.0/LICENSE +sha256 8b79f17fa7cf47adeeb8277965267e3932155fdfcab81a0ed5d583438bdf9135 third_party/weston/protocol/ivi-application.xml diff --git a/package/ivi-homescreen/ivi-homescreen.mk b/package/ivi-homescreen/ivi-homescreen.mk new file mode 100644 index 00000000..4293b2bc --- /dev/null +++ b/package/ivi-homescreen/ivi-homescreen.mk @@ -0,0 +1,136 @@ +################################################################################ +# +# ivi-homescreen +# +################################################################################ + +IVI_HOMESCREEN_VERSION = 5ab78a19e95c88cc5d6b173ab1260a211e78cf0a +IVI_HOMESCREEN_SITE = https://github.com/toyota-connected/ivi-homescreen.git +IVI_HOMESCREEN_SITE_METHOD = git +IVI_HOMESCREEN_LICENSE = Apache-2.0, BSD-3-Clause, BSD-Style, BSL-1.0, MIT + +# Keep order as listed in ivi-homescreen.hash +IVI_HOMESCREEN_LICENSE_FILES = \ + LICENSE \ + third_party/filament/libs/bluevk/include/bluevk/BlueVK.h \ + third_party/flutter/shell/platform/common/client_wrapper/core_implementations.cc \ + third_party/flutter/third_party/dart/runtime/include/dart_api.h \ + third_party/asio-1-28-1/asio/LICENSE_1_0.txt \ + third_party/flutter/third_party/rapidjson/include/rapidjson/rapidjson.h \ + third_party/sanitizers-cmake/LICENSE \ + third_party/spdlog-1.12.0/LICENSE \ + third_party/weston/protocol/ivi-application.xml + +IVI_HOMESCREEN_DEPENDENCIES = \ + host-flutter-sdk-bin \ + flutter-engine \ + libxkbcommon \ + wayland \ + wayland-protocols \ + wayland-utils + +IVI_HOMESCREEN_CONF_OPTS = \ + -DBUILD_CRASH_HANDLER=OFF \ + -DBUILD_PLUGIN_FILE_SELECTOR=OFF \ + -DBUILD_PLUGIN_FIREBASE_CORE=OFF \ + -DBUILD_PLUGIN_URL_LAUNCHER=OFF \ + -DBUILD_TEXTURE_NAVI_RENDER_EGL=OFF \ + -DBUILD_TEXTURE_TEST_EGL=OFF \ + -DBUILD_UNIT_TESTS=OFF \ + -DENABLE_AGL_CLIENT=OFF \ + -DENABLE_XDG_CLIENT=ON \ + -DENABLE_IVI_SHELL_CLIENT=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_IVI_SHELL_CLIENT),ON,OFF) + +# Logging +IVI_HOMESCREEN_CONF_OPTS += \ + -DENABLE_DART_VM_LOGGING=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_DART_VM_LOGGING),ON,OFF) \ + -DENABLE_DLT=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_DLT_LOGGING),ON,OFF) + +# EGL +IVI_HOMESCREEN_CONF_OPTS += \ + -DBUILD_EGL_TRANSPARENCY=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_EGL_TRANSPARENCY),ON,OFF) \ + -DBUILD_EGL_ENABLE_3D=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_EGL_ENABLE_3D),ON,OFF) \ + -DBUILD_EGL_ENABLE_MULTISAMPLE=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_EGL_MULTISAMPLE),ON,OFF) + +# dependency-less plugins +IVI_HOMESCREEN_CONF_OPTS += \ + -DBUILD_PLUGIN_ACCESSIBILITY=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_ACCESSIBILITY_PLUGIN),ON,OFF) \ + -DBUILD_PLUGIN_COMP_REGION=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_COMP_REGION_PLUGIN),ON,OFF) \ + -DBUILD_PLUGIN_COMP_SURF=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_COMP_SURF_PLUGIN),ON,OFF) \ + -DBUILD_PLUGIN_DESKTOP_WINDOW=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_DESKTOP_WINDOW_PLUGIN),ON,OFF) \ + -DBUILD_PLUGIN_GO_ROUTER=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_GO_ROUTER_PLUGIN),ON,OFF) \ + -DBUILD_PLUGIN_INTEGRATION_TEST=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_INTEGRATION_TEST_PLUGIN),ON,OFF) \ + -DBUILD_PLUGIN_ISOLATE=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_ISOLATE_PLUGIN),ON,OFF) \ + -DBUILD_PLUGIN_KEYBOARD_MANAGER=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_KEYBOARD_MANAGER_PLUGIN),ON,OFF) \ + -DBUILD_PLUGIN_KEY_EVENT=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_KEY_EVENT_PLUGIN),ON,OFF) \ + -DBUILD_PLUGIN_LAYER_PLAYGROUND=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_LAYER_PLAYGROUND_PLUGIN),ON,OFF) \ + -DBUILD_PLUGIN_LOGGING=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_LOGGING_PLUGIN),ON,OFF) \ + -DBUILD_PLUGIN_MOUSE_CURSOR=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_MOUSE_CURSOR_PLUGIN),ON,OFF) \ + -DBUILD_PLUGIN_PACKAGE_INFO=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_PACKAGE_INFO_PLUGIN),ON,OFF) \ + -DBUILD_PLUGIN_PLATFORM=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_PLATFORM_PLUGIN),ON,OFF) \ + -DBUILD_PLUGIN_PLATFORM_VIEWS=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_PLATFORM_VIEWS_PLUGIN),ON,OFF) \ + -DBUILD_PLUGIN_RESTORATION=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_RESTORATION_PLUGIN),ON,OFF) \ + -DBUILD_PLUGIN_TEXT_INPUT=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_TEXT_INPUT_PLUGIN),ON,OFF) + +# Wayland backend options +ifeq ($(BR2_PACKAGE_HAS_LIBEGL),y) +IVI_HOMESCREEN_DEPENDENCIES += libegl +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_EGL=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_EGL=OFF +endif + +ifeq ($(BR2_PACKAGE_MESA3D_VULKAN_DRIVER),y) +IVI_HOMESCREEN_DEPENDENCIES += mesa3d +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_VULKAN=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_VULKAN=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBDRM),y) +IVI_HOMESCREEN_DEPENDENCIES += libdrm +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_DRM=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_DRM=OFF +endif + +# "plugins with external dependencies" +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_AUDIO_PLAYERS),y) +IVI_HOMESCREEN_DEPENDENCIES += gstreamer1 gst1-plugins-base +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_AUDIO_PLAYERS=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_AUDIO_PLAYERS=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_FLUTTER_SECURE_STORAGE_PLUGIN),y) +IVI_HOMESCREEN_DEPENDENCIES += libsecret +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_SECURE_STORAGE=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_SECURE_STORAGE=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_GOOGLE_SIGN_IN_PLUGIN),y) +IVI_HOMESCREEN_DEPENDENCIES += libcurl +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_GOOGLE_SIGN_IN=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_GOOGLE_SIGN_IN=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_GSTREAMER_EGL_PLUGIN),y) +IVI_HOMESCREEN_DEPENDENCIES += ffmpeg gstreamer1 gst1-plugins-base +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_GSTREAMER_EGL=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_GSTREAMER_EGL=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_OPENGL_TEXTURE_PLUGIN),y) +IVI_HOMESCREEN_CONF_OPTS += \ + -DBUILD_PLUGIN_OPENGL_TEXTURE=ON \ + -DBUILD_TEXTURE_EGL=ON +else +IVI_HOMESCREEN_CONF_OPTS += \ + -DBUILD_PLUGIN_OPENGL_TEXTURE=OFF \ + -DBUILD_TEXTURE_EGL=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/iw/Config.in b/package/iw/Config.in new file mode 100644 index 00000000..8a74e3b2 --- /dev/null +++ b/package/iw/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_IW + bool "iw" + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_LIBNL + help + Utility for wireless devices using the mac80211 kernel stack + + https://wireless.wiki.kernel.org/en/users/documentation/iw + +comment "iw needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/iw/iw.hash b/package/iw/iw.hash new file mode 100644 index 00000000..376dc3b4 --- /dev/null +++ b/package/iw/iw.hash @@ -0,0 +1,4 @@ +# From https://www.kernel.org/pub/software/network/iw/sha256sums.asc +sha256 f167bbe947dd53bb9ebc0c1dcef5db6ad73ac1d6084f2c6f9376c5c360cc4d4e iw-5.19.tar.xz +# Locally calculated +sha256 5932fb70481e128940168a5fdf133e6454293c0865c7e757874b235cb6daa2af COPYING diff --git a/package/iw/iw.mk b/package/iw/iw.mk new file mode 100644 index 00000000..60ada9d5 --- /dev/null +++ b/package/iw/iw.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# iw +# +################################################################################ + +IW_VERSION = 5.19 +IW_SOURCE = iw-$(IW_VERSION).tar.xz +IW_SITE = $(BR2_KERNEL_MIRROR)/software/network/iw +IW_LICENSE = ISC +IW_LICENSE_FILES = COPYING +IW_CPE_ID_VENDOR = kernel +IW_DEPENDENCIES = host-pkgconf libnl +IW_MAKE_ENV = \ + $(TARGET_MAKE_ENV) \ + PKG_CONFIG="$(HOST_DIR)/bin/pkg-config" + +define IW_BUILD_CMDS + $(IW_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define IW_INSTALL_TARGET_CMDS + $(IW_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/iwd/Config.in b/package/iwd/Config.in new file mode 100644 index 00000000..59d44223 --- /dev/null +++ b/package/iwd/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_IWD + bool "iwd" + depends on BR2_USE_MMU # dbus + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # ell + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 # ell + depends on BR2_USE_WCHAR # ell + select BR2_PACKAGE_DBUS # runtime + select BR2_PACKAGE_ELL + select BR2_PACKAGE_OPENRESOLV if !BR2_PACKAGE_SYSTEMD_RESOLVED + help + iNet Wireless daemon (iwd) + + https://iwd.wiki.kernel.org/ + +comment "iwd needs a toolchain w/ threads, wchar, headers >= 4.12" + depends on BR2_USE_MMU # dbus + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # ell + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 diff --git a/package/iwd/S40iwd b/package/iwd/S40iwd new file mode 100644 index 00000000..6714ca99 --- /dev/null +++ b/package/iwd/S40iwd @@ -0,0 +1,42 @@ +#!/bin/sh + +DAEMON="/usr/libexec/iwd" +PIDFILE="/var/run/iwd.pid" + +IWD_ARGS="" + +[ -r "/etc/default/iwd" ] && . "/etc/default/iwd" + +start() { + printf "Starting iwd:" + mkdir -p /tmp/iwd/hotspot + start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "$DAEMON" \ + -- $IWD_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf "Stopping iwd:" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +case "$1" in + start|stop) + "$1";; + *) + echo "Usage: $0 {start|stop}" + exit 1 +esac diff --git a/package/iwd/iwd.hash b/package/iwd/iwd.hash new file mode 100644 index 00000000..9f88b2d6 --- /dev/null +++ b/package/iwd/iwd.hash @@ -0,0 +1,5 @@ +# From https://mirrors.edge.kernel.org/pub/linux/network/wireless/sha256sums.asc +sha256 5901ab3fbb74bb75ec9adda35daeff595e4d238882fee7fc8c805b30ca79d943 iwd-2.17.tar.xz + +# License files +sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING diff --git a/package/iwd/iwd.mk b/package/iwd/iwd.mk new file mode 100644 index 00000000..c516bab4 --- /dev/null +++ b/package/iwd/iwd.mk @@ -0,0 +1,81 @@ +################################################################################ +# +# iwd +# +################################################################################ + +IWD_VERSION = 2.17 +IWD_SOURCE = iwd-$(IWD_VERSION).tar.xz +IWD_SITE = $(BR2_KERNEL_MIRROR)/linux/network/wireless +IWD_LICENSE = LGPL-2.1+ +IWD_LICENSE_FILES = COPYING +IWD_CPE_ID_VENDOR = intel +IWD_CPE_ID_PRODUCT = inet_wireless_daemon +IWD_SELINUX_MODULES = networkmanager + +IWD_CONF_OPTS = \ + --disable-manual-pages \ + --enable-external-ell \ + --enable-dbus-policy +IWD_DEPENDENCIES = dbus ell + +ifeq ($(BR2_PACKAGE_READLINE),y) +# iwd client depends on readline (GPL-3.0+) +IWD_LICENSE += , GPL-3.0+ (client) +IWD_CONF_OPTS += --enable-client +IWD_DEPENDENCIES += readline +else +IWD_CONF_OPTS += --disable-client +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +IWD_CONF_OPTS += --enable-systemd-service +IWD_DEPENDENCIES += systemd +else +IWD_CONF_OPTS += --disable-systemd-service +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_RESOLVED),y) +IWD_RESOLV_SERVICE = systemd +else +IWD_RESOLV_SERVICE = resolvconf +endif + +define IWD_INSTALL_CONFIG_FILE + $(INSTALL) -D -m 644 package/iwd/main.conf $(TARGET_DIR)/etc/iwd/main.conf + $(SED) 's,__RESOLV_SERVICE__,$(IWD_RESOLV_SERVICE),' $(TARGET_DIR)/etc/iwd/main.conf +endef + +IWD_POST_INSTALL_TARGET_HOOKS += IWD_INSTALL_CONFIG_FILE + +define IWD_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/iwd/S40iwd \ + $(TARGET_DIR)/etc/init.d/S40iwd + mkdir -p $(TARGET_DIR)/var/lib/iwd + ln -sf /tmp/iwd/hotspot $(TARGET_DIR)/var/lib/iwd/hotspot +endef + +define IWD_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_ASYMMETRIC_KEY_TYPE) + $(call KCONFIG_ENABLE_OPT,CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE) + $(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_AES) + $(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_CBC) + $(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_CMAC) + $(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_DES) + $(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_ECB) + $(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_HMAC) + $(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_MD4) + $(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_MD5) + $(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_SHA1) + $(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_SHA256) + $(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_SHA512) + $(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_USER_API_HASH) + $(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_USER_API_SKCIPHER) + $(call KCONFIG_ENABLE_OPT,CONFIG_KEYS) + $(call KCONFIG_ENABLE_OPT,CONFIG_KEY_DH_OPERATIONS) + $(call KCONFIG_ENABLE_OPT,CONFIG_PKCS7_MESSAGE_PARSER) + $(call KCONFIG_ENABLE_OPT,CONFIG_PKCS8_PRIVATE_KEY_PARSER) + $(call KCONFIG_ENABLE_OPT,CONFIG_X509_CERTIFICATE_PARSER) +endef + +$(eval $(autotools-package)) diff --git a/package/iwd/main.conf b/package/iwd/main.conf new file mode 100644 index 00000000..22c1cd73 --- /dev/null +++ b/package/iwd/main.conf @@ -0,0 +1,5 @@ +# use built-in dhcp client +[General] +EnableNetworkConfiguration=true +[Network] +NameResolvingService=__RESOLV_SERVICE__ diff --git a/package/jack1/Config.in b/package/jack1/Config.in new file mode 100644 index 00000000..5b3116e2 --- /dev/null +++ b/package/jack1/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_JACK1 + bool "jack1" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_PACKAGE_JACK2 + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_HWDEP + select BR2_PACKAGE_ALSA_LIB_RAWMIDI + select BR2_PACKAGE_ALSA_LIB_SEQ + select BR2_PACKAGE_BERKELEYDB + help + JACK Audio Connection Kit (JACK 1 implementation). + + JACK is a low-latency sound server, allowing multiple + applications to connect to one audio device, and to share + audio between themselves. This package contains the daemon + jackd as well as some example clients. + + http://jackaudio.org/ + + Another implementation (BR2_PACKAGE_JACK2) is also available, + please consult the documentation to choose the right one: + + https://github.com/jackaudio/jackaudio.github.com/wiki/Differences-between-jack1-and-jack2 + +comment "jack1 needs a 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 diff --git a/package/jack1/jack1.hash b/package/jack1/jack1.hash new file mode 100644 index 00000000..d82b9daf --- /dev/null +++ b/package/jack1/jack1.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 7b290e9dc7b9262ac328d41eef80c1053c97013efacbefa30477cb9b2a5445ea jack1-0.126.0.tar.gz +sha256 661fe53a7e3fce790b185e35c60b7ed80d7efdf25fd7df5af6814a9a215a538f COPYING +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING.GPL +sha256 ad01ea5cd2755f6048383c8d54c88459cd6fcb17757c5c8892f8c5ea060f6140 COPYING.LGPL diff --git a/package/jack1/jack1.mk b/package/jack1/jack1.mk new file mode 100644 index 00000000..4e16d7e9 --- /dev/null +++ b/package/jack1/jack1.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# jack1 +# +################################################################################ + +JACK1_VERSION = 0.126.0 +JACK1_SITE = \ + https://github.com/jackaudio/jack1/releases/download/$(JACK1_VERSION) +JACK1_LICENSE = GPL-2.0+ (jack server), LGPL-2.1+ (jack library) +JACK1_LICENSE_FILES = COPYING COPYING.GPL COPYING.LGPL +JACK1_INSTALL_STAGING = YES + +JACK1_DEPENDENCIES = host-pkgconf alsa-lib berkeleydb + +ifeq ($(BR2_PACKAGE_LIBSAMPLERATE),y) +JACK1_DEPENDENCIES += libsamplerate +endif + +JACK1_CONF_OPTS = --without-html-dir --disable-oss + +$(eval $(autotools-package)) diff --git a/package/jack2/0001-Update-to-waf-2-0-26.patch b/package/jack2/0001-Update-to-waf-2-0-26.patch new file mode 100644 index 00000000..b662894a --- /dev/null +++ b/package/jack2/0001-Update-to-waf-2-0-26.patch @@ -0,0 +1,3480 @@ +From 553ca1e649293ef87e96dd3e7621fd87e0b59986 Mon Sep 17 00:00:00 2001 +From: Nils Philippsen +Date: Tue, 29 Aug 2023 12:41:46 +0200 +Subject: [PATCH] Update to waf 2.0.26 + +This makes waf compatible with Python 3.12 again. + +Also, apply modifications needed for MacOS and add as a patch file (see +commits 0f2e3b2 and dc6c995). + +Signed-off-by: Nils Philippsen + +Upstream: https://github.com/jackaudio/jack2/commit/250420381b1a6974798939ad7104ab1a4b9a9994 +Signed-off-by: Fabrice Fontaine +--- + waf | 7 +- + waflib-macos-mods.patch | 18 + + waflib/Build.py | 47 +- + waflib/ConfigSet.py | 2 +- + waflib/Configure.py | 46 +- + waflib/Context.py | 24 +- + waflib/Logs.py | 9 +- + waflib/Node.py | 3 +- + waflib/Options.py | 31 +- + waflib/Runner.py | 27 +- + waflib/Scripting.py | 27 +- + waflib/Task.py | 48 ++- + waflib/TaskGen.py | 16 +- + waflib/Tools/c_aliases.py | 10 +- + waflib/Tools/c_config.py | 37 +- + waflib/Tools/c_preproc.py | 6 +- + waflib/Tools/c_tests.py | 18 +- + waflib/Tools/ccroot.py | 20 +- + waflib/Tools/compiler_c.py | 25 +- + waflib/Tools/compiler_cxx.py | 25 +- + waflib/Tools/irixcc.py | 14 +- + waflib/Tools/msvc.py | 45 +- + waflib/Tools/waf_unit_test.py | 14 +- + waflib/Utils.py | 60 ++- + waflib/ansiterm.py | 2 +- + waflib/extras/clang_cross.py | 92 ++++ + waflib/extras/clang_cross_common.py | 113 +++++ + waflib/extras/clangxx_cross.py | 106 +++++ + waflib/extras/classic_runner.py | 68 +++ + waflib/extras/color_msvc.py | 59 +++ + waflib/extras/fc_fujitsu.py | 52 +++ + waflib/extras/fc_nfort.py | 52 +++ + waflib/extras/genpybind.py | 194 +++++++++ + waflib/extras/haxe.py | 154 +++++++ + waflib/extras/msvc_pdb.py | 46 ++ + waflib/extras/sphinx.py | 120 ++++++ + waflib/extras/wafcache.py | 648 ++++++++++++++++++++++++++++ + waflib/extras/xcode6.py | 18 +- + waflib/fixpy2.py | 2 +- + waflib/processor.py | 4 + + 40 files changed, 2114 insertions(+), 195 deletions(-) + create mode 100644 waflib-macos-mods.patch + create mode 100644 waflib/extras/clang_cross.py + create mode 100644 waflib/extras/clang_cross_common.py + create mode 100644 waflib/extras/clangxx_cross.py + create mode 100644 waflib/extras/classic_runner.py + create mode 100644 waflib/extras/color_msvc.py + create mode 100644 waflib/extras/fc_fujitsu.py + create mode 100644 waflib/extras/fc_nfort.py + create mode 100644 waflib/extras/genpybind.py + create mode 100644 waflib/extras/haxe.py + create mode 100644 waflib/extras/msvc_pdb.py + create mode 100644 waflib/extras/sphinx.py + create mode 100644 waflib/extras/wafcache.py + +diff --git a/waf b/waf +index 845fba5e9..38b2c9106 100755 +--- a/waf ++++ b/waf +@@ -1,4 +1,4 @@ +-#!/usr/bin/python3 ++#!/usr/bin/env python + # encoding: latin-1 + # Thomas Nagy, 2005-2018 + # +@@ -32,7 +32,7 @@ POSSIBILITY OF SUCH DAMAGE. + + import os, sys, inspect + +-VERSION="2.0.12" ++VERSION="2.0.26" + REVISION="x" + GIT="x" + INSTALL="x" +@@ -142,6 +142,9 @@ def find_lib(): + if name.endswith('waf-light'): + w = test(base) + if w: return w ++ for dir in sys.path: ++ if test(dir): ++ return dir + err('waf-light requires waflib -> export WAFDIR=/folder') + + dirname = '%s-%s-%s' % (WAF, VERSION, REVISION) +diff --git a/waflib-macos-mods.patch b/waflib-macos-mods.patch +new file mode 100644 +index 000000000..9e2c8a3de +--- /dev/null ++++ b/waflib-macos-mods.patch +@@ -0,0 +1,18 @@ ++diff --git a/waflib/Tools/ccroot.py b/waflib/Tools/ccroot.py ++index cfef8bf5..484846f5 100644 ++--- a/waflib/Tools/ccroot.py +++++ b/waflib/Tools/ccroot.py ++@@ -575,12 +575,10 @@ def apply_vnum(self): ++ ++ cnum = getattr(self, 'cnum', str(nums[0])) ++ cnums = cnum.split('.') ++- if len(cnums)>len(nums) or nums[0:len(cnums)] != cnums: ++- raise Errors.WafError('invalid compatibility version %s' % cnum) ++ ++ libname = node.name ++ if libname.endswith('.dylib'): ++- name3 = libname.replace('.dylib', '.%s.dylib' % self.vnum) +++ name3 = libname.replace('.dylib', '.%s.dylib' % cnums[0]) ++ name2 = libname.replace('.dylib', '.%s.dylib' % cnum) ++ else: ++ name3 = libname + '.' + self.vnum +diff --git a/waflib/Build.py b/waflib/Build.py +index c9661df15..b49dd8302 100644 +--- a/waflib/Build.py ++++ b/waflib/Build.py +@@ -104,7 +104,7 @@ def __init__(self, **kw): + """Amount of jobs to run in parallel""" + + self.targets = Options.options.targets +- """List of targets to build (default: \*)""" ++ """List of targets to build (default: \\*)""" + + self.keep = Options.options.keep + """Whether the build should continue past errors""" +@@ -753,10 +753,12 @@ def tgpost(tg): + else: + ln = self.launch_node() + if ln.is_child_of(self.bldnode): +- Logs.warn('Building from the build directory, forcing --targets=*') ++ if Logs.verbose > 1: ++ Logs.warn('Building from the build directory, forcing --targets=*') + ln = self.srcnode + elif not ln.is_child_of(self.srcnode): +- Logs.warn('CWD %s is not under %s, forcing --targets=* (run distclean?)', ln.abspath(), self.srcnode.abspath()) ++ if Logs.verbose > 1: ++ Logs.warn('CWD %s is not under %s, forcing --targets=* (run distclean?)', ln.abspath(), self.srcnode.abspath()) + ln = self.srcnode + + def is_post(tg, ln): +@@ -1054,7 +1056,7 @@ def post_run(self): + def get_install_path(self, destdir=True): + """ + Returns the destination path where files will be installed, pre-pending `destdir`. +- ++ + Relative paths will be interpreted relative to `PREFIX` if no `destdir` is given. + + :rtype: string +@@ -1062,11 +1064,11 @@ def get_install_path(self, destdir=True): + if isinstance(self.install_to, Node.Node): + dest = self.install_to.abspath() + else: +- dest = Utils.subst_vars(self.install_to, self.env) ++ dest = os.path.normpath(Utils.subst_vars(self.install_to, self.env)) + if not os.path.isabs(dest): +- dest = os.path.join(self.env.PREFIX, dest) ++ dest = os.path.join(self.env.PREFIX, dest) + if destdir and Options.options.destdir: +- dest = os.path.join(Options.options.destdir, os.path.splitdrive(dest)[1].lstrip(os.sep)) ++ dest = Options.options.destdir.rstrip(os.sep) + os.sep + os.path.splitdrive(dest)[1].lstrip(os.sep) + return dest + + def copy_fun(self, src, tgt): +@@ -1160,11 +1162,19 @@ def do_install(self, src, tgt, lbl, **kw): + # same size and identical timestamps -> make no copy + if st1.st_mtime + 2 >= st2.st_mtime and st1.st_size == st2.st_size: + if not self.generator.bld.progress_bar: +- Logs.info('- install %s (from %s)', tgt, lbl) ++ ++ c1 = Logs.colors.NORMAL ++ c2 = Logs.colors.BLUE ++ ++ Logs.info('%s- install %s%s%s (from %s)', c1, c2, tgt, c1, lbl) + return False + + if not self.generator.bld.progress_bar: +- Logs.info('+ install %s (from %s)', tgt, lbl) ++ ++ c1 = Logs.colors.NORMAL ++ c2 = Logs.colors.BLUE ++ ++ Logs.info('%s+ install %s%s%s (from %s)', c1, c2, tgt, c1, lbl) + + # Give best attempt at making destination overwritable, + # like the 'install' utility used by 'make install' does. +@@ -1221,14 +1231,18 @@ def do_link(self, src, tgt, **kw): + """ + if os.path.islink(tgt) and os.readlink(tgt) == src: + if not self.generator.bld.progress_bar: +- Logs.info('- symlink %s (to %s)', tgt, src) ++ c1 = Logs.colors.NORMAL ++ c2 = Logs.colors.BLUE ++ Logs.info('%s- symlink %s%s%s (to %s)', c1, c2, tgt, c1, src) + else: + try: + os.remove(tgt) + except OSError: + pass + if not self.generator.bld.progress_bar: +- Logs.info('+ symlink %s (to %s)', tgt, src) ++ c1 = Logs.colors.NORMAL ++ c2 = Logs.colors.BLUE ++ Logs.info('%s+ symlink %s%s%s (to %s)', c1, c2, tgt, c1, src) + os.symlink(src, tgt) + self.fix_perms(tgt) + +@@ -1237,7 +1251,9 @@ def do_uninstall(self, src, tgt, lbl, **kw): + See :py:meth:`waflib.Build.inst.do_install` + """ + if not self.generator.bld.progress_bar: +- Logs.info('- remove %s', tgt) ++ c1 = Logs.colors.NORMAL ++ c2 = Logs.colors.BLUE ++ Logs.info('%s- remove %s%s%s', c1, c2, tgt, c1) + + #self.uninstall.append(tgt) + try: +@@ -1257,7 +1273,9 @@ def do_unlink(self, src, tgt, **kw): + """ + try: + if not self.generator.bld.progress_bar: +- Logs.info('- remove %s', tgt) ++ c1 = Logs.colors.NORMAL ++ c2 = Logs.colors.BLUE ++ Logs.info('%s- remove %s%s%s', c1, c2, tgt, c1) + os.remove(tgt) + except OSError: + pass +@@ -1318,7 +1336,8 @@ def build(bld): + lst = [] + for env in self.all_envs.values(): + lst.extend(self.root.find_or_declare(f) for f in env[CFG_FILES]) +- for n in self.bldnode.ant_glob('**/*', excl='.lock* *conf_check_*/** config.log c4che/*', quiet=True): ++ excluded_dirs = '.lock* *conf_check_*/** config.log %s/*' % CACHE_DIR ++ for n in self.bldnode.ant_glob('**/*', excl=excluded_dirs, quiet=True): + if n in lst: + continue + n.delete() +diff --git a/waflib/ConfigSet.py b/waflib/ConfigSet.py +index 84736c9c8..901fba6c0 100644 +--- a/waflib/ConfigSet.py ++++ b/waflib/ConfigSet.py +@@ -11,7 +11,7 @@ + + import copy, re, os + from waflib import Logs, Utils +-re_imp = re.compile('^(#)*?([^#=]*?)\ =\ (.*?)$', re.M) ++re_imp = re.compile(r'^(#)*?([^#=]*?)\ =\ (.*?)$', re.M) + + class ConfigSet(object): + """ +diff --git a/waflib/Configure.py b/waflib/Configure.py +index d0a4793a8..f6fdc4e94 100644 +--- a/waflib/Configure.py ++++ b/waflib/Configure.py +@@ -125,7 +125,7 @@ def init_dirs(self): + self.bldnode.mkdir() + + if not os.path.isdir(self.bldnode.abspath()): +- conf.fatal('Could not create the build directory %s' % self.bldnode.abspath()) ++ self.fatal('Could not create the build directory %s' % self.bldnode.abspath()) + + def execute(self): + """ +@@ -180,6 +180,7 @@ def execute(self): + env.hash = self.hash + env.files = self.files + env.environ = dict(self.environ) ++ env.launch_dir = Context.launch_dir + + if not (self.env.NO_LOCK_IN_RUN or env.environ.get('NO_LOCK_IN_RUN') or getattr(Options.options, 'no_lock_in_run')): + env.store(os.path.join(Context.run_dir, Options.lockfile)) +@@ -438,7 +439,7 @@ def find_program(self, filename, **kw): + + var = kw.get('var', '') + if not var: +- var = re.sub(r'[-.]', '_', filename[0].upper()) ++ var = re.sub(r'\W', '_', filename[0].upper()) + + path_list = kw.get('path_list', '') + if path_list: +@@ -507,23 +508,27 @@ def find_binary(self, filenames, exts, paths): + @conf + def run_build(self, *k, **kw): + """ +- Create a temporary build context to execute a build. A reference to that build +- context is kept on self.test_bld for debugging purposes, and you should not rely +- on it too much (read the note on the cache below). +- The parameters given in the arguments to this function are passed as arguments for +- a single task generator created in the build. Only three parameters are obligatory: ++ Create a temporary build context to execute a build. A temporary reference to that build ++ context is kept on self.test_bld for debugging purposes. ++ The arguments to this function are passed to a single task generator for that build. ++ Only three parameters are mandatory: + + :param features: features to pass to a task generator created in the build + :type features: list of string + :param compile_filename: file to create for the compilation (default: *test.c*) + :type compile_filename: string +- :param code: code to write in the filename to compile ++ :param code: input file contents + :type code: string + +- Though this function returns *0* by default, the build may set an attribute named *retval* on the ++ Though this function returns *0* by default, the build may bind attribute named *retval* on the + build context object to return a particular value. See :py:func:`waflib.Tools.c_config.test_exec_fun` for example. + +- This function also provides a limited cache. To use it, provide the following option:: ++ The temporary builds creates a temporary folder; the name of that folder is calculated ++ by hashing input arguments to this function, with the exception of :py:class:`waflib.ConfigSet.ConfigSet` ++ objects which are used for both reading and writing values. ++ ++ This function also features a cache which is disabled by default; that cache relies ++ on the hash value calculated as indicated above:: + + def options(opt): + opt.add_option('--confcache', dest='confcache', default=0, +@@ -534,10 +539,24 @@ def options(opt): + $ waf configure --confcache + + """ +- lst = [str(v) for (p, v) in kw.items() if p != 'env'] +- h = Utils.h_list(lst) ++ buf = [] ++ for key in sorted(kw.keys()): ++ v = kw[key] ++ if isinstance(v, ConfigSet.ConfigSet): ++ # values are being written to, so they are excluded from contributing to the hash ++ continue ++ elif hasattr(v, '__call__'): ++ buf.append(Utils.h_fun(v)) ++ else: ++ buf.append(str(v)) ++ h = Utils.h_list(buf) + dir = self.bldnode.abspath() + os.sep + (not Utils.is_win32 and '.' or '') + 'conf_check_' + Utils.to_hex(h) + ++ cachemode = kw.get('confcache', getattr(Options.options, 'confcache', None)) ++ ++ if not cachemode and os.path.exists(dir): ++ shutil.rmtree(dir) ++ + try: + os.makedirs(dir) + except OSError: +@@ -548,7 +567,6 @@ def options(opt): + except OSError: + self.fatal('cannot use the configuration test folder %r' % dir) + +- cachemode = getattr(Options.options, 'confcache', None) + if cachemode == 1: + try: + proj = ConfigSet.ConfigSet(os.path.join(dir, 'cache_run_build')) +@@ -588,7 +606,7 @@ def options(opt): + else: + ret = getattr(bld, 'retval', 0) + finally: +- if cachemode == 1: ++ if cachemode: + # cache the results each time + proj = ConfigSet.ConfigSet() + proj['cache_run_build'] = ret +diff --git a/waflib/Context.py b/waflib/Context.py +index 761b521f5..369664819 100644 +--- a/waflib/Context.py ++++ b/waflib/Context.py +@@ -6,20 +6,30 @@ + Classes and functions enabling the command system + """ + +-import os, re, imp, sys ++import os, re, sys + from waflib import Utils, Errors, Logs + import waflib.Node + ++if sys.hexversion > 0x3040000: ++ import types ++ class imp(object): ++ new_module = lambda x: types.ModuleType(x) ++else: ++ import imp ++ + # the following 3 constants are updated on each new release (do not touch) +-HEXVERSION=0x2000c00 ++HEXVERSION=0x2001a00 + """Constant updated on new releases""" + +-WAFVERSION="2.0.12" ++WAFVERSION="2.0.26" + """Constant updated on new releases""" + +-WAFREVISION="54841218840ffa34fddf834680a5a17db69caa12" ++WAFREVISION="0fb985ce1932c6f3e7533f435e4ee209d673776e" + """Git revision when the waf version is updated""" + ++WAFNAME="waf" ++"""Application name displayed on --help""" ++ + ABI = 20 + """Version of the build data cache file format (used in :py:const:`waflib.Context.DBFILE`)""" + +@@ -134,7 +144,7 @@ def foo(ctx): + :type fun: string + + .. inheritance-diagram:: waflib.Context.Context waflib.Build.BuildContext waflib.Build.InstallContext waflib.Build.UninstallContext waflib.Build.StepContext waflib.Build.ListContext waflib.Configure.ConfigurationContext waflib.Scripting.Dist waflib.Scripting.DistCheck waflib.Build.CleanContext +- ++ :top-classes: waflib.Context.Context + """ + + errors = Errors +@@ -613,7 +623,7 @@ def load_special_tools(self, var, ban=[]): + is typically called once for a programming language group, see for + example :py:mod:`waflib.Tools.compiler_c` + +- :param var: glob expression, for example 'cxx\_\*.py' ++ :param var: glob expression, for example 'cxx\\_\\*.py' + :type var: string + :param ban: list of exact file names to exclude + :type ban: list of string +@@ -678,7 +688,7 @@ def load_module(path, encoding=None): + + def load_tool(tool, tooldir=None, ctx=None, with_sys_path=True): + """ +- Importx a Waf tool as a python module, and stores it in the dict :py:const:`waflib.Context.Context.tools` ++ Imports a Waf tool as a python module, and stores it in the dict :py:const:`waflib.Context.Context.tools` + + :type tool: string + :param tool: Name of the tool +diff --git a/waflib/Logs.py b/waflib/Logs.py +index 2a475169b..298411db5 100644 +--- a/waflib/Logs.py ++++ b/waflib/Logs.py +@@ -237,7 +237,10 @@ def format(self, rec): + if rec.levelno >= logging.INFO: + # the goal of this is to format without the leading "Logs, hour" prefix + if rec.args: +- return msg % rec.args ++ try: ++ return msg % rec.args ++ except UnicodeDecodeError: ++ return msg.encode('utf-8') % rec.args + return msg + + rec.msg = msg +@@ -276,9 +279,9 @@ def error(*k, **kw): + + def warn(*k, **kw): + """ +- Wraps logging.warn ++ Wraps logging.warning + """ +- log.warn(*k, **kw) ++ log.warning(*k, **kw) + + def info(*k, **kw): + """ +diff --git a/waflib/Node.py b/waflib/Node.py +index 4ac1ea8a0..2ad184669 100644 +--- a/waflib/Node.py ++++ b/waflib/Node.py +@@ -73,7 +73,7 @@ def ant_matcher(s, ignorecase): + if k == '**': + accu.append(k) + else: +- k = k.replace('.', '[.]').replace('*','.*').replace('?', '.').replace('+', '\\+') ++ k = k.replace('.', '[.]').replace('*', '.*').replace('?', '.').replace('+', '\\+') + k = '^%s$' % k + try: + exp = re.compile(k, flags=reflags) +@@ -595,7 +595,6 @@ def ant_iter(self, accept=None, maxdepth=25, pats=[], dir=False, src=True, remov + :rtype: iterator + """ + dircont = self.listdir() +- dircont.sort() + + try: + lst = set(self.children.keys()) +diff --git a/waflib/Options.py b/waflib/Options.py +index ad802d4b9..d4104917c 100644 +--- a/waflib/Options.py ++++ b/waflib/Options.py +@@ -44,7 +44,7 @@ class opt_parser(optparse.OptionParser): + """ + def __init__(self, ctx, allow_unknown=False): + optparse.OptionParser.__init__(self, conflict_handler='resolve', add_help_option=False, +- version='waf %s (%s)' % (Context.WAFVERSION, Context.WAFREVISION)) ++ version='%s %s (%s)' % (Context.WAFNAME, Context.WAFVERSION, Context.WAFREVISION)) + self.formatter.width = Logs.get_term_cols() + self.ctx = ctx + self.allow_unknown = allow_unknown +@@ -62,6 +62,21 @@ def _process_args(self, largs, rargs, values): + else: + self.error(str(e)) + ++ def _process_long_opt(self, rargs, values): ++ # --custom-option=-ftxyz is interpreted as -f -t... see #2280 ++ if self.allow_unknown: ++ back = [] + rargs ++ try: ++ optparse.OptionParser._process_long_opt(self, rargs, values) ++ except optparse.BadOptionError: ++ while rargs: ++ rargs.pop() ++ rargs.extend(back) ++ rargs.pop(0) ++ raise ++ else: ++ optparse.OptionParser._process_long_opt(self, rargs, values) ++ + def print_usage(self, file=None): + return self.print_help(file) + +@@ -96,11 +111,11 @@ def get_usage(self): + lst.sort() + ret = '\n'.join(lst) + +- return '''waf [commands] [options] ++ return '''%s [commands] [options] + +-Main commands (example: ./waf build -j4) ++Main commands (example: ./%s build -j4) + %s +-''' % ret ++''' % (Context.WAFNAME, Context.WAFNAME, ret) + + + class OptionsContext(Context.Context): +@@ -141,9 +156,9 @@ def __init__(self, **kw): + gr.add_option('-o', '--out', action='store', default='', help='build dir for the project', dest='out') + gr.add_option('-t', '--top', action='store', default='', help='src dir for the project', dest='top') + +- gr.add_option('--no-lock-in-run', action='store_true', default='', help=optparse.SUPPRESS_HELP, dest='no_lock_in_run') +- gr.add_option('--no-lock-in-out', action='store_true', default='', help=optparse.SUPPRESS_HELP, dest='no_lock_in_out') +- gr.add_option('--no-lock-in-top', action='store_true', default='', help=optparse.SUPPRESS_HELP, dest='no_lock_in_top') ++ gr.add_option('--no-lock-in-run', action='store_true', default=os.environ.get('NO_LOCK_IN_RUN', ''), help=optparse.SUPPRESS_HELP, dest='no_lock_in_run') ++ gr.add_option('--no-lock-in-out', action='store_true', default=os.environ.get('NO_LOCK_IN_OUT', ''), help=optparse.SUPPRESS_HELP, dest='no_lock_in_out') ++ gr.add_option('--no-lock-in-top', action='store_true', default=os.environ.get('NO_LOCK_IN_TOP', ''), help=optparse.SUPPRESS_HELP, dest='no_lock_in_top') + + default_prefix = getattr(Context.g_module, 'default_prefix', os.environ.get('PREFIX')) + if not default_prefix: +@@ -282,6 +297,8 @@ def parse_cmd_args(self, _args=None, cwd=None, allow_unknown=False): + elif arg != 'options': + commands.append(arg) + ++ if options.jobs < 1: ++ options.jobs = 1 + for name in 'top out destdir prefix bindir libdir'.split(): + # those paths are usually expanded from Context.launch_dir + if getattr(options, name, None): +diff --git a/waflib/Runner.py b/waflib/Runner.py +index 261084d27..350c86a22 100644 +--- a/waflib/Runner.py ++++ b/waflib/Runner.py +@@ -37,6 +37,8 @@ def __len__(self): + return len(self.lst) + def __iter__(self): + return iter(self.lst) ++ def __str__(self): ++ return 'PriorityTasks: [%s]' % '\n '.join(str(x) for x in self.lst) + def clear(self): + self.lst = [] + def append(self, task): +@@ -69,7 +71,7 @@ def __init__(self, spawner, task): + """Task to execute""" + self.spawner = spawner + """Coordinator object""" +- self.setDaemon(1) ++ self.daemon = True + self.start() + def run(self): + """ +@@ -96,7 +98,7 @@ def __init__(self, master): + """:py:class:`waflib.Runner.Parallel` producer instance""" + self.sem = Utils.threading.Semaphore(master.numjobs) + """Bounded semaphore that prevents spawning more than *n* concurrent consumers""" +- self.setDaemon(1) ++ self.daemon = True + self.start() + def run(self): + """ +@@ -181,10 +183,12 @@ def __init__(self, bld, j=2): + The reverse dependency graph of dependencies obtained from Task.run_after + """ + +- self.spawner = Spawner(self) ++ self.spawner = None + """ + Coordinating daemon thread that spawns thread consumers + """ ++ if self.numjobs > 1: ++ self.spawner = Spawner(self) + + def get_next_task(self): + """ +@@ -254,6 +258,8 @@ def refill_task_list(self): + self.outstanding.append(x) + break + else: ++ if self.stop or self.error: ++ break + raise Errors.WafError('Broken revdeps detected on %r' % self.incomplete) + else: + tasks = next(self.biter) +@@ -331,11 +337,16 @@ def try_unfreeze(x): + + if hasattr(tsk, 'semaphore'): + sem = tsk.semaphore +- sem.release(tsk) +- while sem.waiting and not sem.is_locked(): +- # take a frozen task, make it ready to run +- x = sem.waiting.pop() +- self._add_task(x) ++ try: ++ sem.release(tsk) ++ except KeyError: ++ # TODO ++ pass ++ else: ++ while sem.waiting and not sem.is_locked(): ++ # take a frozen task, make it ready to run ++ x = sem.waiting.pop() ++ self._add_task(x) + + def get_out(self): + """ +diff --git a/waflib/Scripting.py b/waflib/Scripting.py +index 749d4f2e6..a80cb3678 100644 +--- a/waflib/Scripting.py ++++ b/waflib/Scripting.py +@@ -216,7 +216,10 @@ def parse_options(): + ctx = Context.create_context('options') + ctx.execute() + if not Options.commands: +- Options.commands.append(default_cmd) ++ if isinstance(default_cmd, list): ++ Options.commands.extend(default_cmd) ++ else: ++ Options.commands.append(default_cmd) + if Options.options.whelp: + ctx.parser.print_help() + sys.exit(0) +@@ -280,7 +283,7 @@ def distclean_dir(dirname): + pass + + try: +- shutil.rmtree('c4che') ++ shutil.rmtree(Build.CACHE_DIR) + except OSError: + pass + +@@ -303,7 +306,7 @@ def remove_and_log(k, fun): + + # remove a build folder, if any + cur = '.' +- if ctx.options.no_lock_in_top: ++ if os.environ.get('NO_LOCK_IN_TOP') or ctx.options.no_lock_in_top: + cur = ctx.options.out + + try: +@@ -329,7 +332,12 @@ def remove_and_log(k, fun): + else: + remove_and_log(env.out_dir, shutil.rmtree) + +- for k in (env.out_dir, env.top_dir, env.run_dir): ++ env_dirs = [env.out_dir] ++ if not (os.environ.get('NO_LOCK_IN_TOP') or ctx.options.no_lock_in_top): ++ env_dirs.append(env.top_dir) ++ if not (os.environ.get('NO_LOCK_IN_RUN') or ctx.options.no_lock_in_run): ++ env_dirs.append(env.run_dir) ++ for k in env_dirs: + p = os.path.join(k, Options.lockfile) + remove_and_log(p, os.remove) + +@@ -380,7 +388,11 @@ def archive(self): + + for x in files: + archive_name = self.get_base_name() + '/' + x.path_from(self.base_path) +- zip.write(x.abspath(), archive_name, zipfile.ZIP_DEFLATED) ++ if os.environ.get('SOURCE_DATE_EPOCH'): ++ # TODO: parse that timestamp ++ zip.writestr(zipfile.ZipInfo(archive_name), x.read(), zipfile.ZIP_DEFLATED) ++ else: ++ zip.write(x.abspath(), archive_name, zipfile.ZIP_DEFLATED) + zip.close() + else: + self.fatal('Valid algo types are tar.bz2, tar.gz, tar.xz or zip') +@@ -417,6 +429,8 @@ def add_tar_file(self, x, tar): + tinfo.gid = 0 + tinfo.uname = 'root' + tinfo.gname = 'root' ++ if os.environ.get('SOURCE_DATE_EPOCH'): ++ tinfo.mtime = int(os.environ.get('SOURCE_DATE_EPOCH')) + + if os.path.isfile(p): + with open(p, 'rb') as f: +@@ -598,12 +612,15 @@ def execute(self): + cmd = env.config_cmd or 'configure' + if Configure.autoconfig == 'clobber': + tmp = Options.options.__dict__ ++ launch_dir_tmp = Context.launch_dir + if env.options: + Options.options.__dict__ = env.options ++ Context.launch_dir = env.launch_dir + try: + run_command(cmd) + finally: + Options.options.__dict__ = tmp ++ Context.launch_dir = launch_dir_tmp + else: + run_command(cmd) + run_command(self.cmd) +diff --git a/waflib/Task.py b/waflib/Task.py +index 6aebc6074..cb49a7394 100644 +--- a/waflib/Task.py ++++ b/waflib/Task.py +@@ -163,10 +163,10 @@ class Task(evil): + """File extensions that objects of this task class may create""" + + before = [] +- """List of task class names to execute before instances of this class""" ++ """The instances of this class are executed before the instances of classes whose names are in this list""" + + after = [] +- """List of task class names to execute after instances of this class""" ++ """The instances of this class are executed after the instances of classes whose names are in this list""" + + hcode = Utils.SIG_NIL + """String representing an additional hash for the class representation""" +@@ -306,25 +306,31 @@ def exec_command(self, cmd, **kw): + if hasattr(self, 'stderr'): + kw['stderr'] = self.stderr + +- # workaround for command line length limit: +- # http://support.microsoft.com/kb/830473 +- if not isinstance(cmd, str) and (len(repr(cmd)) >= 8192 if Utils.is_win32 else len(cmd) > 200000): +- cmd, args = self.split_argfile(cmd) +- try: +- (fd, tmp) = tempfile.mkstemp() +- os.write(fd, '\r\n'.join(args).encode()) +- os.close(fd) +- if Logs.verbose: +- Logs.debug('argfile: @%r -> %r', tmp, args) +- return self.generator.bld.exec_command(cmd + ['@' + tmp], **kw) +- finally: ++ if not isinstance(cmd, str): ++ if Utils.is_win32: ++ # win32 compares the resulting length http://support.microsoft.com/kb/830473 ++ too_long = sum([len(arg) for arg in cmd]) + len(cmd) > 8192 ++ else: ++ # non-win32 counts the amount of arguments (200k) ++ too_long = len(cmd) > 200000 ++ ++ if too_long and getattr(self, 'allow_argsfile', True): ++ # Shunt arguments to a temporary file if the command is too long. ++ cmd, args = self.split_argfile(cmd) + try: +- os.remove(tmp) +- except OSError: +- # anti-virus and indexers can keep files open -_- +- pass +- else: +- return self.generator.bld.exec_command(cmd, **kw) ++ (fd, tmp) = tempfile.mkstemp() ++ os.write(fd, '\r\n'.join(args).encode()) ++ os.close(fd) ++ if Logs.verbose: ++ Logs.debug('argfile: @%r -> %r', tmp, args) ++ return self.generator.bld.exec_command(cmd + ['@' + tmp], **kw) ++ finally: ++ try: ++ os.remove(tmp) ++ except OSError: ++ # anti-virus and indexers can keep files open -_- ++ pass ++ return self.generator.bld.exec_command(cmd, **kw) + + def process(self): + """ +@@ -1044,7 +1050,7 @@ def funex(c): + exec(c, dc) + return dc['f'] + +-re_cond = re.compile('(?P\w+)|(?P\|)|(?P&)') ++re_cond = re.compile(r'(?P\w+)|(?P\|)|(?P&)') + re_novar = re.compile(r'^(SRC|TGT)\W+.*?$') + reg_act = re.compile(r'(?P\\)|(?P\$\$)|(?P\$\{(?P\w+)(?P.*?)\})', re.M) + def compile_fun_shell(line): +diff --git a/waflib/TaskGen.py b/waflib/TaskGen.py +index a74e6431d..32468f03d 100644 +--- a/waflib/TaskGen.py ++++ b/waflib/TaskGen.py +@@ -74,7 +74,7 @@ def __init__(self, *k, **kw): + else: + self.bld = kw['bld'] + self.env = self.bld.env.derive() +- self.path = self.bld.path # emulate chdir when reading scripts ++ self.path = kw.get('path', self.bld.path) # by default, emulate chdir when reading scripts + + # Provide a unique index per folder + # This is part of a measure to prevent output file name collisions +@@ -400,7 +400,7 @@ def feature(*k): + Decorator that registers a task generator method that will be executed when the + object attribute ``feature`` contains the corresponding key(s):: + +- from waflib.Task import feature ++ from waflib.TaskGen import feature + @feature('myfeature') + def myfunction(self): + print('that is my feature!') +@@ -631,12 +631,8 @@ def chmod_fun(tsk): + cls.scan = self.scan + elif has_deps: + def scan(self): +- nodes = [] +- for x in self.generator.to_list(getattr(self.generator, 'deps', None)): +- node = self.generator.path.find_resource(x) +- if not node: +- self.generator.bld.fatal('Could not find %r (was it declared?)' % x) +- nodes.append(node) ++ deps = getattr(self.generator, 'deps', None) ++ nodes = self.generator.to_nodes(deps) + return [nodes, []] + cls.scan = scan + +@@ -727,7 +723,7 @@ def sequence_order(self): + self.bld.prev = self + + +-re_m4 = re.compile('@(\w+)@', re.M) ++re_m4 = re.compile(r'@(\w+)@', re.M) + + class subst_pc(Task.Task): + """ +@@ -905,7 +901,7 @@ def build(bld): + # paranoid safety measure for the general case foo.in->foo.h with ambiguous dependencies + for xt in HEADER_EXTS: + if b.name.endswith(xt): +- tsk.ext_in = tsk.ext_in + ['.h'] ++ tsk.ext_out = tsk.ext_out + ['.h'] + break + + inst_to = getattr(self, 'install_path', None) +diff --git a/waflib/Tools/c_aliases.py b/waflib/Tools/c_aliases.py +index c9d53692e..928cfe29c 100644 +--- a/waflib/Tools/c_aliases.py ++++ b/waflib/Tools/c_aliases.py +@@ -38,7 +38,7 @@ def sniff_features(**kw): + :return: the list of features for a task generator processing the source files + :rtype: list of string + """ +- exts = get_extensions(kw['source']) ++ exts = get_extensions(kw.get('source', [])) + typ = kw['typ'] + feats = [] + +@@ -47,10 +47,12 @@ def sniff_features(**kw): + if x in exts: + feats.append('cxx') + break +- + if 'c' in exts or 'vala' in exts or 'gs' in exts: + feats.append('c') + ++ if 's' in exts or 'S' in exts: ++ feats.append('asm') ++ + for x in 'f f90 F F90 for FOR'.split(): + if x in exts: + feats.append('fc') +@@ -66,11 +68,11 @@ def sniff_features(**kw): + if typ in ('program', 'shlib', 'stlib'): + will_link = False + for x in feats: +- if x in ('cxx', 'd', 'fc', 'c'): ++ if x in ('cxx', 'd', 'fc', 'c', 'asm'): + feats.append(x + typ) + will_link = True + if not will_link and not kw.get('features', []): +- raise Errors.WafError('Cannot link from %r, try passing eg: features="c cprogram"?' % kw) ++ raise Errors.WafError('Unable to determine how to link %r, try adding eg: features="c cshlib"?' % kw) + return feats + + def set_features(kw, typ): +diff --git a/waflib/Tools/c_config.py b/waflib/Tools/c_config.py +index d2b3c0d8f..f5ab19bf6 100644 +--- a/waflib/Tools/c_config.py ++++ b/waflib/Tools/c_config.py +@@ -68,6 +68,8 @@ + '__s390__' : 's390', + '__sh__' : 'sh', + '__xtensa__' : 'xtensa', ++'__e2k__' : 'e2k', ++'__riscv' : 'riscv', + } + + @conf +@@ -86,6 +88,10 @@ def configure(conf): + :type uselib_store: string + :param env: config set or conf.env by default + :type env: :py:class:`waflib.ConfigSet.ConfigSet` ++ :param force_static: force usage of static libraries ++ :type force_static: bool default False ++ :param posix: usage of POSIX mode for shlex lexical analiysis library ++ :type posix: bool default True + """ + + assert(isinstance(line, str)) +@@ -103,6 +109,8 @@ def configure(conf): + lex.commenters = '' + lst = list(lex) + ++ so_re = re.compile(r"\.so(?:\.[0-9]+)*$") ++ + # append_unique is not always possible + # for example, apple flags may require both -arch i386 and -arch ppc + uselib = uselib_store +@@ -144,7 +152,7 @@ def appu(var, val): + elif x.startswith('-std='): + prefix = 'CXXFLAGS' if '++' in x else 'CFLAGS' + app(prefix, x) +- elif x.startswith('+') or x in ('-pthread', '-fPIC', '-fpic', '-fPIE', '-fpie'): ++ elif x.startswith('+') or x in ('-pthread', '-fPIC', '-fpic', '-fPIE', '-fpie', '-flto', '-fno-lto'): + app('CFLAGS', x) + app('CXXFLAGS', x) + app('LINKFLAGS', x) +@@ -180,7 +188,7 @@ def appu(var, val): + app('CFLAGS', tmp) + app('CXXFLAGS', tmp) + app('LINKFLAGS', tmp) +- elif x.endswith(('.a', '.so', '.dylib', '.lib')): ++ elif x.endswith(('.a', '.dylib', '.lib')) or so_re.search(x): + appu('LINKFLAGS', x) # not cool, #762 + else: + self.to_log('Unhandled flag %r' % x) +@@ -246,13 +254,15 @@ def exec_cfg(self, kw): + * if modversion is given, then return the module version + * else, execute the *-config* program with the *args* and *variables* given, and set the flags on the *conf.env.FLAGS_name* variable + ++ :param path: the **-config program to use** ++ :type path: list of string + :param atleast_pkgconfig_version: minimum pkg-config version to use (disable other tests) + :type atleast_pkgconfig_version: string + :param package: package name, for example *gtk+-2.0* + :type package: string +- :param uselib_store: if the test is successful, define HAVE\_*name*. It is also used to define *conf.env.FLAGS_name* variables. ++ :param uselib_store: if the test is successful, define HAVE\\_*name*. It is also used to define *conf.env.FLAGS_name* variables. + :type uselib_store: string +- :param modversion: if provided, return the version of the given module and define *name*\_VERSION ++ :param modversion: if provided, return the version of the given module and define *name*\\_VERSION + :type modversion: string + :param args: arguments to give to *package* when retrieving flags + :type args: list of string +@@ -260,6 +270,12 @@ def exec_cfg(self, kw): + :type variables: list of string + :param define_variable: additional variables to define (also in conf.env.PKG_CONFIG_DEFINES) + :type define_variable: dict(string: string) ++ :param pkg_config_path: paths where pkg-config should search for .pc config files (overrides env.PKG_CONFIG_PATH if exists) ++ :type pkg_config_path: string, list of directories separated by colon ++ :param force_static: force usage of static libraries ++ :type force_static: bool default False ++ :param posix: usage of POSIX mode for shlex lexical analiysis library ++ :type posix: bool default True + """ + + path = Utils.to_list(kw['path']) +@@ -334,6 +350,7 @@ def check_cfg(self, *k, **kw): + """ + Checks for configuration flags using a **-config**-like program (pkg-config, sdl-config, etc). + This wraps internal calls to :py:func:`waflib.Tools.c_config.validate_cfg` and :py:func:`waflib.Tools.c_config.exec_cfg` ++ so check exec_cfg parameters descriptions for more details on kw passed + + A few examples:: + +@@ -659,20 +676,21 @@ class test_exec(Task.Task): + """ + color = 'PINK' + def run(self): ++ cmd = [self.inputs[0].abspath()] + getattr(self.generator, 'test_args', []) + if getattr(self.generator, 'rpath', None): + if getattr(self.generator, 'define_ret', False): +- self.generator.bld.retval = self.generator.bld.cmd_and_log([self.inputs[0].abspath()]) ++ self.generator.bld.retval = self.generator.bld.cmd_and_log(cmd) + else: +- self.generator.bld.retval = self.generator.bld.exec_command([self.inputs[0].abspath()]) ++ self.generator.bld.retval = self.generator.bld.exec_command(cmd) + else: + env = self.env.env or {} + env.update(dict(os.environ)) + for var in ('LD_LIBRARY_PATH', 'DYLD_LIBRARY_PATH', 'PATH'): + env[var] = self.inputs[0].parent.abspath() + os.path.pathsep + env.get(var, '') + if getattr(self.generator, 'define_ret', False): +- self.generator.bld.retval = self.generator.bld.cmd_and_log([self.inputs[0].abspath()], env=env) ++ self.generator.bld.retval = self.generator.bld.cmd_and_log(cmd, env=env) + else: +- self.generator.bld.retval = self.generator.bld.exec_command([self.inputs[0].abspath()], env=env) ++ self.generator.bld.retval = self.generator.bld.exec_command(cmd, env=env) + + @feature('test_exec') + @after_method('apply_link') +@@ -1266,10 +1284,11 @@ def to_log(self, *k, **kw): + tasks = [] + + id_to_task = {} +- for dct in k: ++ for counter, dct in enumerate(k): + x = Task.classes['cfgtask'](bld=bld, env=None) + tasks.append(x) + x.args = dct ++ x.args['multicheck_counter'] = counter + x.bld = bld + x.conf = self + x.args = dct +diff --git a/waflib/Tools/c_preproc.py b/waflib/Tools/c_preproc.py +index 7e04b4a7c..68e5f5aea 100644 +--- a/waflib/Tools/c_preproc.py ++++ b/waflib/Tools/c_preproc.py +@@ -75,13 +75,13 @@ class PreprocError(Errors.WafError): + re.IGNORECASE | re.MULTILINE) + """Match #include lines""" + +-re_mac = re.compile("^[a-zA-Z_]\w*") ++re_mac = re.compile(r"^[a-zA-Z_]\w*") + """Match macro definitions""" + + re_fun = re.compile('^[a-zA-Z_][a-zA-Z0-9_]*[(]') + """Match macro functions""" + +-re_pragma_once = re.compile('^\s*once\s*', re.IGNORECASE) ++re_pragma_once = re.compile(r'^\s*once\s*', re.IGNORECASE) + """Match #pragma once statements""" + + re_nl = re.compile('\\\\\r*\n', re.MULTILINE) +@@ -660,7 +660,7 @@ def extract_macro(txt): + # empty define, assign an empty token + return (v, [[], [('T','')]]) + +-re_include = re.compile('^\s*(<(?:.*)>|"(?:.*)")') ++re_include = re.compile(r'^\s*(<(?:.*)>|"(?:.*)")') + def extract_include(txt, defs): + """ + Process a line in the form:: +diff --git a/waflib/Tools/c_tests.py b/waflib/Tools/c_tests.py +index f858df576..bdd186c6b 100644 +--- a/waflib/Tools/c_tests.py ++++ b/waflib/Tools/c_tests.py +@@ -180,9 +180,15 @@ def check_large_file(self, **kw): + ######################################################################################## + + ENDIAN_FRAGMENT = ''' ++#ifdef _MSC_VER ++#define testshlib_EXPORT __declspec(dllexport) ++#else ++#define testshlib_EXPORT ++#endif ++ + short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; +-int use_ascii (int i) { ++int testshlib_EXPORT use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; +@@ -208,12 +214,12 @@ def run(self): + return -1 + + @feature('grep_for_endianness') +-@after_method('process_source') ++@after_method('apply_link') + def grep_for_endianness_fun(self): + """ + Used by the endianness configuration test + """ +- self.create_task('grep_for_endianness', self.compiled_tasks[0].outputs[0]) ++ self.create_task('grep_for_endianness', self.link_task.outputs[0]) + + @conf + def check_endianness(self): +@@ -223,7 +229,9 @@ def check_endianness(self): + tmp = [] + def check_msg(self): + return tmp[0] +- self.check(fragment=ENDIAN_FRAGMENT, features='c grep_for_endianness', +- msg='Checking for endianness', define='ENDIANNESS', tmp=tmp, okmsg=check_msg) ++ ++ self.check(fragment=ENDIAN_FRAGMENT, features='c cshlib grep_for_endianness', ++ msg='Checking for endianness', define='ENDIANNESS', tmp=tmp, ++ okmsg=check_msg, confcache=None) + return tmp[0] + +diff --git a/waflib/Tools/ccroot.py b/waflib/Tools/ccroot.py +index 484846f5f..533992903 100644 +--- a/waflib/Tools/ccroot.py ++++ b/waflib/Tools/ccroot.py +@@ -111,7 +111,7 @@ def apply_incpaths(self): + tg = bld(features='includes', includes='.') + + The folders only need to be relative to the current directory, the equivalent build directory is +- added automatically (for headers created in the build directory). This enable using a build directory ++ added automatically (for headers created in the build directory). This enables using a build directory + or not (``top == out``). + + This method will add a list of nodes read by :py:func:`waflib.Tools.ccroot.to_incnodes` in ``tg.env.INCPATHS``, +@@ -128,6 +128,7 @@ class link_task(Task.Task): + Base class for all link tasks. A task generator is supposed to have at most one link task bound in the attribute *link_task*. See :py:func:`waflib.Tools.ccroot.apply_link`. + + .. inheritance-diagram:: waflib.Tools.ccroot.stlink_task waflib.Tools.c.cprogram waflib.Tools.c.cshlib waflib.Tools.cxx.cxxstlib waflib.Tools.cxx.cxxprogram waflib.Tools.cxx.cxxshlib waflib.Tools.d.dprogram waflib.Tools.d.dshlib waflib.Tools.d.dstlib waflib.Tools.ccroot.fake_shlib waflib.Tools.ccroot.fake_stlib waflib.Tools.asm.asmprogram waflib.Tools.asm.asmshlib waflib.Tools.asm.asmstlib ++ :top-classes: waflib.Tools.ccroot.link_task + """ + color = 'YELLOW' + +@@ -238,6 +239,17 @@ def wrap(self): + setattr(cls, 'run', wrap) + rm_tgt(stlink_task) + ++@feature('skip_stlib_link_deps') ++@before_method('process_use') ++def apply_skip_stlib_link_deps(self): ++ """ ++ This enables an optimization in the :py:func:wafilb.Tools.ccroot.processes_use: method that skips dependency and ++ link flag optimizations for targets that generate static libraries (via the :py:class:Tools.ccroot.stlink_task task). ++ The actual behavior is implemented in :py:func:wafilb.Tools.ccroot.processes_use: method so this feature only tells waf ++ to enable the new behavior. ++ """ ++ self.env.SKIP_STLIB_LINK_DEPS = True ++ + @feature('c', 'cxx', 'd', 'fc', 'asm') + @after_method('process_source') + def apply_link(self): +@@ -386,7 +398,11 @@ def build(bld): + y = self.bld.get_tgen_by_name(x) + var = y.tmp_use_var + if var and link_task: +- if var == 'LIB' or y.tmp_use_stlib or x in names: ++ if self.env.SKIP_STLIB_LINK_DEPS and isinstance(link_task, stlink_task): ++ # If the skip_stlib_link_deps feature is enabled then we should ++ # avoid adding lib deps to the stlink_task instance. ++ pass ++ elif var == 'LIB' or y.tmp_use_stlib or x in names: + self.env.append_value(var, [y.target[y.target.rfind(os.sep) + 1:]]) + self.link_task.dep_nodes.extend(y.link_task.outputs) + tmp_path = y.link_task.outputs[0].parent.path_from(self.get_cwd()) +diff --git a/waflib/Tools/compiler_c.py b/waflib/Tools/compiler_c.py +index 2dba3f827..e033ce6c5 100644 +--- a/waflib/Tools/compiler_c.py ++++ b/waflib/Tools/compiler_c.py +@@ -36,18 +36,19 @@ def build(bld): + from waflib.Logs import debug + + c_compiler = { +-'win32': ['msvc', 'gcc', 'clang'], +-'cygwin': ['gcc'], +-'darwin': ['clang', 'gcc'], +-'aix': ['xlc', 'gcc', 'clang'], +-'linux': ['gcc', 'clang', 'icc'], +-'sunos': ['suncc', 'gcc'], +-'irix': ['gcc', 'irixcc'], +-'hpux': ['gcc'], +-'osf1V': ['gcc'], +-'gnu': ['gcc', 'clang'], +-'java': ['gcc', 'msvc', 'clang', 'icc'], +-'default':['clang', 'gcc'], ++'win32': ['msvc', 'gcc', 'clang'], ++'cygwin': ['gcc', 'clang'], ++'darwin': ['clang', 'gcc'], ++'aix': ['xlc', 'gcc', 'clang'], ++'linux': ['gcc', 'clang', 'icc'], ++'sunos': ['suncc', 'gcc'], ++'irix': ['gcc', 'irixcc'], ++'hpux': ['gcc'], ++'osf1V': ['gcc'], ++'gnu': ['gcc', 'clang'], ++'java': ['gcc', 'msvc', 'clang', 'icc'], ++'gnukfreebsd': ['gcc', 'clang'], ++'default': ['clang', 'gcc'], + } + """ + Dict mapping platform names to Waf tools finding specific C compilers:: +diff --git a/waflib/Tools/compiler_cxx.py b/waflib/Tools/compiler_cxx.py +index 1af65a226..42658c584 100644 +--- a/waflib/Tools/compiler_cxx.py ++++ b/waflib/Tools/compiler_cxx.py +@@ -37,18 +37,19 @@ def build(bld): + from waflib.Logs import debug + + cxx_compiler = { +-'win32': ['msvc', 'g++', 'clang++'], +-'cygwin': ['g++'], +-'darwin': ['clang++', 'g++'], +-'aix': ['xlc++', 'g++', 'clang++'], +-'linux': ['g++', 'clang++', 'icpc'], +-'sunos': ['sunc++', 'g++'], +-'irix': ['g++'], +-'hpux': ['g++'], +-'osf1V': ['g++'], +-'gnu': ['g++', 'clang++'], +-'java': ['g++', 'msvc', 'clang++', 'icpc'], +-'default': ['clang++', 'g++'] ++'win32': ['msvc', 'g++', 'clang++'], ++'cygwin': ['g++', 'clang++'], ++'darwin': ['clang++', 'g++'], ++'aix': ['xlc++', 'g++', 'clang++'], ++'linux': ['g++', 'clang++', 'icpc'], ++'sunos': ['sunc++', 'g++'], ++'irix': ['g++'], ++'hpux': ['g++'], ++'osf1V': ['g++'], ++'gnu': ['g++', 'clang++'], ++'java': ['g++', 'msvc', 'clang++', 'icpc'], ++'gnukfreebsd': ['g++', 'clang++'], ++'default': ['clang++', 'g++'] + } + """ + Dict mapping the platform names to Waf tools finding specific C++ compilers:: +diff --git a/waflib/Tools/irixcc.py b/waflib/Tools/irixcc.py +index c3ae1ac91..0335c13cb 100644 +--- a/waflib/Tools/irixcc.py ++++ b/waflib/Tools/irixcc.py +@@ -13,22 +13,11 @@ + @conf + def find_irixcc(conf): + v = conf.env +- cc = None +- if v.CC: +- cc = v.CC +- elif 'CC' in conf.environ: +- cc = conf.environ['CC'] +- if not cc: +- cc = conf.find_program('cc', var='CC') +- if not cc: +- conf.fatal('irixcc was not found') +- ++ cc = conf.find_program('cc', var='CC') + try: + conf.cmd_and_log(cc + ['-version']) + except Errors.WafError: + conf.fatal('%r -version could not be executed' % cc) +- +- v.CC = cc + v.CC_NAME = 'irix' + + @conf +@@ -57,7 +46,6 @@ def irixcc_common_flags(conf): + + def configure(conf): + conf.find_irixcc() +- conf.find_cpp() + conf.find_ar() + conf.irixcc_common_flags() + conf.cc_load_tools() +diff --git a/waflib/Tools/msvc.py b/waflib/Tools/msvc.py +index 17b347d45..d60f67026 100644 +--- a/waflib/Tools/msvc.py ++++ b/waflib/Tools/msvc.py +@@ -99,10 +99,31 @@ def build(bld): + """List of icl platforms""" + + def options(opt): +- opt.add_option('--msvc_version', type='string', help = 'msvc version, eg: "msvc 10.0,msvc 9.0"', default='') ++ default_ver = '' ++ vsver = os.getenv('VSCMD_VER') ++ if vsver: ++ m = re.match(r'(^\d+\.\d+).*', vsver) ++ if m: ++ default_ver = 'msvc %s' % m.group(1) ++ opt.add_option('--msvc_version', type='string', help = 'msvc version, eg: "msvc 10.0,msvc 9.0"', default=default_ver) + opt.add_option('--msvc_targets', type='string', help = 'msvc targets, eg: "x64,arm"', default='') + opt.add_option('--no-msvc-lazy', action='store_false', help = 'lazily check msvc target environments', default=True, dest='msvc_lazy') + ++class MSVCVersion(object): ++ def __init__(self, ver): ++ m = re.search(r'^(.*)\s+(\d+[.]\d+)', ver) ++ if m: ++ self.name = m.group(1) ++ self.number = float(m.group(2)) ++ else: ++ self.name = ver ++ self.number = 0. ++ ++ def __lt__(self, other): ++ if self.number == other.number: ++ return self.name < other.name ++ return self.number < other.number ++ + @conf + def setup_msvc(conf, versiondict): + """ +@@ -119,7 +140,7 @@ def setup_msvc(conf, versiondict): + platforms=Utils.to_list(conf.env.MSVC_TARGETS) or [i for i,j in all_msvc_platforms+all_icl_platforms+all_wince_platforms] + desired_versions = getattr(Options.options, 'msvc_version', '').split(',') + if desired_versions == ['']: +- desired_versions = conf.env.MSVC_VERSIONS or list(reversed(sorted(versiondict.keys()))) ++ desired_versions = conf.env.MSVC_VERSIONS or list(sorted(versiondict.keys(), key=MSVCVersion, reverse=True)) + + # Override lazy detection by evaluating after the fact. + lazy_detect = getattr(Options.options, 'msvc_lazy', True) +@@ -187,7 +208,7 @@ def get_msvc_version(conf, compiler, version, target, vcvars): + echo INCLUDE=%%INCLUDE%% + echo LIB=%%LIB%%;%%LIBPATH%% + """ % (vcvars,target)) +- sout = conf.cmd_and_log(['cmd.exe', '/E:on', '/V:on', '/C', batfile.abspath()]) ++ sout = conf.cmd_and_log(['cmd.exe', '/E:on', '/V:on', '/C', batfile.abspath()], stdin=getattr(Utils.subprocess, 'DEVNULL', None)) + lines = sout.splitlines() + + if not lines[0]: +@@ -281,7 +302,7 @@ def gather_wince_supported_platforms(): + + def gather_msvc_detected_versions(): + #Detected MSVC versions! +- version_pattern = re.compile('^(\d\d?\.\d\d?)(Exp)?$') ++ version_pattern = re.compile(r'^(\d\d?\.\d\d?)(Exp)?$') + detected_versions = [] + for vcver,vcvar in (('VCExpress','Exp'), ('VisualStudio','')): + prefix = 'SOFTWARE\\Wow6432node\\Microsoft\\' + vcver +@@ -367,7 +388,7 @@ def gather_wsdk_versions(conf, versions): + :param versions: list to modify + :type versions: list + """ +- version_pattern = re.compile('^v..?.?\...?.?') ++ version_pattern = re.compile(r'^v..?.?\...?.?') + try: + all_versions = Utils.winreg.OpenKey(Utils.winreg.HKEY_LOCAL_MACHINE, 'SOFTWARE\\Wow6432node\\Microsoft\\Microsoft SDKs\\Windows') + except OSError: +@@ -525,7 +546,7 @@ def gather_icl_versions(conf, versions): + :param versions: list to modify + :type versions: list + """ +- version_pattern = re.compile('^...?.?\....?.?') ++ version_pattern = re.compile(r'^...?.?\....?.?') + try: + all_versions = Utils.winreg.OpenKey(Utils.winreg.HKEY_LOCAL_MACHINE, 'SOFTWARE\\Wow6432node\\Intel\\Compilers\\C++') + except OSError: +@@ -579,7 +600,7 @@ def gather_intel_composer_versions(conf, versions): + :param versions: list to modify + :type versions: list + """ +- version_pattern = re.compile('^...?.?\...?.?.?') ++ version_pattern = re.compile(r'^...?.?\...?.?.?') + try: + all_versions = Utils.winreg.OpenKey(Utils.winreg.HKEY_LOCAL_MACHINE, 'SOFTWARE\\Wow6432node\\Intel\\Suites') + except OSError: +@@ -683,7 +704,7 @@ def find_lt_names_msvc(self, libname, is_static=False): + if not is_static and ltdict.get('library_names', ''): + dllnames=ltdict['library_names'].split() + dll=dllnames[0].lower() +- dll=re.sub('\.dll$', '', dll) ++ dll=re.sub(r'\.dll$', '', dll) + return (lt_libdir, dll, False) + elif ltdict.get('old_library', ''): + olib=ltdict['old_library'] +@@ -700,7 +721,7 @@ def find_lt_names_msvc(self, libname, is_static=False): + @conf + def libname_msvc(self, libname, is_static=False): + lib = libname.lower() +- lib = re.sub('\.lib$','',lib) ++ lib = re.sub(r'\.lib$','',lib) + + if lib in g_msvc_systemlibs: + return lib +@@ -747,11 +768,11 @@ def libname_msvc(self, libname, is_static=False): + for libn in libnames: + if os.path.exists(os.path.join(path, libn)): + Logs.debug('msvc: lib found: %s', os.path.join(path,libn)) +- return re.sub('\.lib$', '',libn) ++ return re.sub(r'\.lib$', '',libn) + + #if no lib can be found, just return the libname as msvc expects it + self.fatal('The library %r could not be found' % libname) +- return re.sub('\.lib$', '', libname) ++ return re.sub(r'\.lib$', '', libname) + + @conf + def check_lib_msvc(self, libname, is_static=False, uselib_store=None): +@@ -969,7 +990,7 @@ def build(bld): + if not is_static: + for f in self.env.LINKFLAGS: + d = f.lower() +- if d[1:] == 'debug': ++ if d[1:] in ('debug', 'debug:full', 'debug:fastlink'): + pdbnode = self.link_task.outputs[0].change_ext('.pdb') + self.link_task.outputs.append(pdbnode) + +diff --git a/waflib/Tools/waf_unit_test.py b/waflib/Tools/waf_unit_test.py +index 74d6c0561..8cff89bde 100644 +--- a/waflib/Tools/waf_unit_test.py ++++ b/waflib/Tools/waf_unit_test.py +@@ -97,6 +97,7 @@ def make_interpreted_test(self): + if isinstance(v, str): + v = v.split(os.pathsep) + self.ut_env[k] = os.pathsep.join(p + v) ++ self.env.append_value('UT_DEPS', ['%r%r' % (key, self.ut_env[key]) for key in self.ut_env]) + + @feature('test') + @after_method('apply_link', 'process_use') +@@ -108,7 +109,8 @@ def make_test(self): + tsk = self.create_task('utest', self.link_task.outputs) + if getattr(self, 'ut_str', None): + self.ut_run, lst = Task.compile_fun(self.ut_str, shell=getattr(self, 'ut_shell', False)) +- tsk.vars = lst + tsk.vars ++ tsk.vars = tsk.vars + lst ++ self.env.append_value('UT_DEPS', self.ut_str) + + self.handle_ut_cwd('ut_cwd') + +@@ -139,6 +141,10 @@ def add_path(var): + if not hasattr(self, 'ut_cmd'): + self.ut_cmd = getattr(Options.options, 'testcmd', False) + ++ self.env.append_value('UT_DEPS', str(self.ut_cmd)) ++ self.env.append_value('UT_DEPS', self.ut_paths) ++ self.env.append_value('UT_DEPS', ['%r%r' % (key, self.ut_env[key]) for key in self.ut_env]) ++ + @taskgen_method + def add_test_results(self, tup): + """Override and return tup[1] to interrupt the build immediately if a test does not run""" +@@ -159,7 +165,7 @@ class utest(Task.Task): + """ + color = 'PINK' + after = ['vnum', 'inst'] +- vars = [] ++ vars = ['UT_DEPS'] + + def runnable_status(self): + """ +@@ -200,7 +206,7 @@ def run(self): + self.ut_exec = getattr(self.generator, 'ut_exec', [self.inputs[0].abspath()]) + ut_cmd = getattr(self.generator, 'ut_cmd', False) + if ut_cmd: +- self.ut_exec = shlex.split(ut_cmd % ' '.join(self.ut_exec)) ++ self.ut_exec = shlex.split(ut_cmd % Utils.shell_escape(self.ut_exec)) + + return self.exec_command(self.ut_exec) + +@@ -214,7 +220,7 @@ def exec_command(self, cmd, **kw): + 'cmd': cmd + } + script_file = self.inputs[0].abspath() + '_run.py' +- Utils.writef(script_file, script_code) ++ Utils.writef(script_file, script_code, encoding='utf-8') + os.chmod(script_file, Utils.O755) + if Logs.verbose > 1: + Logs.info('Test debug file written as %r' % script_file) +diff --git a/waflib/Utils.py b/waflib/Utils.py +index a0cc2a09d..ea0f7a9db 100644 +--- a/waflib/Utils.py ++++ b/waflib/Utils.py +@@ -11,7 +11,7 @@ + + from __future__ import with_statement + +-import atexit, os, sys, errno, inspect, re, datetime, platform, base64, signal, functools, time ++import atexit, os, sys, errno, inspect, re, datetime, platform, base64, signal, functools, time, shlex + + try: + import cPickle +@@ -49,10 +49,16 @@ class TimeoutExpired(Exception): + from hashlib import md5 + except ImportError: + try: +- from md5 import md5 ++ from hashlib import sha1 as md5 + except ImportError: +- # never fail to enable fixes from another module ++ # never fail to enable potential fixes from another module + pass ++else: ++ try: ++ md5().digest() ++ except ValueError: ++ # Fips? #2213 ++ from hashlib import sha1 as md5 + + try: + import threading +@@ -202,7 +208,7 @@ def __next__(self): + + next = __next__ + +-is_win32 = os.sep == '\\' or sys.platform == 'win32' # msys2 ++is_win32 = os.sep == '\\' or sys.platform == 'win32' or os.name == 'nt' # msys2 + """ + Whether this system is a Windows series + """ +@@ -446,6 +452,8 @@ def console_encoding(): + pass + else: + if codepage: ++ if 65001 == codepage and sys.version_info < (3, 3): ++ return 'utf-8' + return 'cp%d' % codepage + return sys.stdout.encoding or ('cp1252' if is_win32 else 'latin-1') + +@@ -484,7 +492,9 @@ def split_path_msys(path): + if sys.platform == 'cygwin': + split_path = split_path_cygwin + elif is_win32: +- if os.environ.get('MSYSTEM'): ++ # Consider this an MSYSTEM environment if $MSYSTEM is set and python ++ # reports is executable from a unix like path on a windows host. ++ if os.environ.get('MSYSTEM') and sys.executable.startswith('/'): + split_path = split_path_msys + else: + split_path = split_path_win32 +@@ -569,10 +579,13 @@ def quote_define_name(s): + fu = fu.upper() + return fu + +-re_sh = re.compile('\\s|\'|"') +-""" +-Regexp used for shell_escape below +-""" ++# shlex.quote didn't exist until python 3.3. Prior to that it was a non-documented ++# function in pipes. ++try: ++ shell_quote = shlex.quote ++except AttributeError: ++ import pipes ++ shell_quote = pipes.quote + + def shell_escape(cmd): + """ +@@ -581,7 +594,7 @@ def shell_escape(cmd): + """ + if isinstance(cmd, str): + return cmd +- return ' '.join(repr(x) if re_sh.search(x) else x for x in cmd) ++ return ' '.join(shell_quote(x) for x in cmd) + + def h_list(lst): + """ +@@ -596,6 +609,12 @@ def h_list(lst): + """ + return md5(repr(lst).encode()).digest() + ++if sys.hexversion < 0x3000000: ++ def h_list_python2(lst): ++ return md5(repr(lst)).digest() ++ h_list_python2.__doc__ = h_list.__doc__ ++ h_list = h_list_python2 ++ + def h_fun(fun): + """ + Hash functions +@@ -615,7 +634,7 @@ def h_fun(fun): + # + # The sorting result outcome will be consistent because: + # 1. tuples are compared in order of their elements +- # 2. optional argument names are unique ++ # 2. optional argument namess are unique + code.extend(sorted(fun.keywords.items())) + code.append(h_fun(fun.func)) + fun.code = h_list(code) +@@ -730,7 +749,7 @@ def unversioned_sys_platform(): + if s == 'cli' and os.name == 'nt': + # ironpython is only on windows as far as we know + return 'win32' +- return re.split('\d+$', s)[0] ++ return re.split(r'\d+$', s)[0] + + def nada(*k, **kw): + """ +@@ -851,6 +870,19 @@ def lib64(): + return '64' + return '' + ++def loose_version(ver_str): ++ # private for the time being! ++ # see #2402 ++ lst = re.split(r'([.]|\\d+|[a-zA-Z])', ver_str) ++ ver = [] ++ for i, val in enumerate(lst): ++ try: ++ ver.append(int(val)) ++ except ValueError: ++ if val != '.': ++ ver.append(val) ++ return ver ++ + def sane_path(p): + # private function for the time being! + return os.path.abspath(os.path.expanduser(p)) +@@ -871,13 +903,13 @@ def get_process(): + except IndexError: + filepath = os.path.dirname(os.path.abspath(__file__)) + os.sep + 'processor.py' + cmd = [sys.executable, '-c', readf(filepath)] +- return subprocess.Popen(cmd, stdout=subprocess.PIPE, stdin=subprocess.PIPE, bufsize=0) ++ return subprocess.Popen(cmd, stdout=subprocess.PIPE, stdin=subprocess.PIPE, bufsize=0, close_fds=not is_win32) + + def run_prefork_process(cmd, kwargs, cargs): + """ + Delegates process execution to a pre-forked process instance. + """ +- if not 'env' in kwargs: ++ if not kwargs.get('env'): + kwargs['env'] = dict(os.environ) + try: + obj = base64.b64encode(cPickle.dumps([cmd, kwargs, cargs])) +diff --git a/waflib/ansiterm.py b/waflib/ansiterm.py +index 0d20c6374..027f0ad68 100644 +--- a/waflib/ansiterm.py ++++ b/waflib/ansiterm.py +@@ -264,7 +264,7 @@ def hide_cursor(self,param): + 'u': pop_cursor, + } + # Match either the escape sequence or text not containing escape sequence +- ansi_tokens = re.compile('(?:\x1b\[([0-9?;]*)([a-zA-Z])|([^\x1b]+))') ++ ansi_tokens = re.compile(r'(?:\x1b\[([0-9?;]*)([a-zA-Z])|([^\x1b]+))') + def write(self, text): + try: + wlock.acquire() +diff --git a/waflib/extras/clang_cross.py b/waflib/extras/clang_cross.py +new file mode 100644 +index 000000000..1b51e2886 +--- /dev/null ++++ b/waflib/extras/clang_cross.py +@@ -0,0 +1,92 @@ ++#!/usr/bin/env python ++# encoding: utf-8 ++# Krzysztof Kosiński 2014 ++# DragoonX6 2018 ++ ++""" ++Detect the Clang C compiler ++This version is an attempt at supporting the -target and -sysroot flag of Clang. ++""" ++ ++from waflib.Tools import ccroot, ar, gcc ++from waflib.Configure import conf ++import waflib.Context ++import waflib.extras.clang_cross_common ++ ++def options(opt): ++ """ ++ Target triplet for clang:: ++ $ waf configure --clang-target-triple=x86_64-pc-linux-gnu ++ """ ++ cc_compiler_opts = opt.add_option_group('Configuration options') ++ cc_compiler_opts.add_option('--clang-target-triple', default=None, ++ help='Target triple for clang', ++ dest='clang_target_triple') ++ cc_compiler_opts.add_option('--clang-sysroot', default=None, ++ help='Sysroot for clang', ++ dest='clang_sysroot') ++ ++@conf ++def find_clang(conf): ++ """ ++ Finds the program clang and executes it to ensure it really is clang ++ """ ++ ++ import os ++ ++ cc = conf.find_program('clang', var='CC') ++ ++ if conf.options.clang_target_triple != None: ++ conf.env.append_value('CC', ['-target', conf.options.clang_target_triple]) ++ ++ if conf.options.clang_sysroot != None: ++ sysroot = str() ++ ++ if os.path.isabs(conf.options.clang_sysroot): ++ sysroot = conf.options.clang_sysroot ++ else: ++ sysroot = os.path.normpath(os.path.join(os.getcwd(), conf.options.clang_sysroot)) ++ ++ conf.env.append_value('CC', ['--sysroot', sysroot]) ++ ++ conf.get_cc_version(cc, clang=True) ++ conf.env.CC_NAME = 'clang' ++ ++@conf ++def clang_modifier_x86_64_w64_mingw32(conf): ++ conf.gcc_modifier_win32() ++ ++@conf ++def clang_modifier_i386_w64_mingw32(conf): ++ conf.gcc_modifier_win32() ++ ++@conf ++def clang_modifier_x86_64_windows_msvc(conf): ++ conf.clang_modifier_msvc() ++ ++ # Allow the user to override any flags if they so desire. ++ clang_modifier_user_func = getattr(conf, 'clang_modifier_x86_64_windows_msvc_user', None) ++ if clang_modifier_user_func: ++ clang_modifier_user_func() ++ ++@conf ++def clang_modifier_i386_windows_msvc(conf): ++ conf.clang_modifier_msvc() ++ ++ # Allow the user to override any flags if they so desire. ++ clang_modifier_user_func = getattr(conf, 'clang_modifier_i386_windows_msvc_user', None) ++ if clang_modifier_user_func: ++ clang_modifier_user_func() ++ ++def configure(conf): ++ conf.find_clang() ++ conf.find_program(['llvm-ar', 'ar'], var='AR') ++ conf.find_ar() ++ conf.gcc_common_flags() ++ # Allow the user to provide flags for the target platform. ++ conf.gcc_modifier_platform() ++ # And allow more fine grained control based on the compiler's triplet. ++ conf.clang_modifier_target_triple() ++ conf.cc_load_tools() ++ conf.cc_add_flags() ++ conf.link_add_flags() +diff --git a/waflib/extras/clang_cross_common.py b/waflib/extras/clang_cross_common.py +new file mode 100644 +index 000000000..b76a07006 +--- /dev/null ++++ b/waflib/extras/clang_cross_common.py +@@ -0,0 +1,113 @@ ++#!/usr/bin/env python ++# encoding: utf-8 ++# DragoonX6 2018 ++ ++""" ++Common routines for cross_clang.py and cross_clangxx.py ++""" ++ ++from waflib.Configure import conf ++import waflib.Context ++ ++def normalize_target_triple(target_triple): ++ target_triple = target_triple[:-1] ++ normalized_triple = target_triple.replace('--', '-unknown-') ++ ++ if normalized_triple.startswith('-'): ++ normalized_triple = 'unknown' + normalized_triple ++ ++ if normalized_triple.endswith('-'): ++ normalized_triple += 'unknown' ++ ++ # Normalize MinGW builds to *arch*-w64-mingw32 ++ if normalized_triple.endswith('windows-gnu'): ++ normalized_triple = normalized_triple[:normalized_triple.index('-')] + '-w64-mingw32' ++ ++ # Strip the vendor when doing msvc builds, since it's unused anyway. ++ if normalized_triple.endswith('windows-msvc'): ++ normalized_triple = normalized_triple[:normalized_triple.index('-')] + '-windows-msvc' ++ ++ return normalized_triple.replace('-', '_') ++ ++@conf ++def clang_modifier_msvc(conf): ++ import os ++ ++ """ ++ Really basic setup to use clang in msvc mode. ++ We actually don't really want to do a lot, even though clang is msvc compatible ++ in this mode, that doesn't mean we're actually using msvc. ++ It's probably the best to leave it to the user, we can assume msvc mode if the user ++ uses the clang-cl frontend, but this module only concerns itself with the gcc-like frontend. ++ """ ++ v = conf.env ++ v.cprogram_PATTERN = '%s.exe' ++ ++ v.cshlib_PATTERN = '%s.dll' ++ v.implib_PATTERN = '%s.lib' ++ v.IMPLIB_ST = '-Wl,-IMPLIB:%s' ++ v.SHLIB_MARKER = [] ++ ++ v.CFLAGS_cshlib = [] ++ v.LINKFLAGS_cshlib = ['-Wl,-DLL'] ++ v.cstlib_PATTERN = '%s.lib' ++ v.STLIB_MARKER = [] ++ ++ del(v.AR) ++ conf.find_program(['llvm-lib', 'lib'], var='AR') ++ v.ARFLAGS = ['-nologo'] ++ v.AR_TGT_F = ['-out:'] ++ ++ # Default to the linker supplied with llvm instead of link.exe or ld ++ v.LINK_CC = v.CC + ['-fuse-ld=lld', '-nostdlib'] ++ v.CCLNK_TGT_F = ['-o'] ++ v.def_PATTERN = '-Wl,-def:%s' ++ ++ v.LINKFLAGS = [] ++ ++ v.LIB_ST = '-l%s' ++ v.LIBPATH_ST = '-Wl,-LIBPATH:%s' ++ v.STLIB_ST = '-l%s' ++ v.STLIBPATH_ST = '-Wl,-LIBPATH:%s' ++ ++ CFLAGS_CRT_COMMON = [ ++ '-Xclang', '--dependent-lib=oldnames', ++ '-Xclang', '-fno-rtti-data', ++ '-D_MT' ++ ] ++ ++ v.CFLAGS_CRT_MULTITHREADED = CFLAGS_CRT_COMMON + [ ++ '-Xclang', '-flto-visibility-public-std', ++ '-Xclang', '--dependent-lib=libcmt', ++ ] ++ v.CXXFLAGS_CRT_MULTITHREADED = v.CFLAGS_CRT_MULTITHREADED ++ ++ v.CFLAGS_CRT_MULTITHREADED_DBG = CFLAGS_CRT_COMMON + [ ++ '-D_DEBUG', ++ '-Xclang', '-flto-visibility-public-std', ++ '-Xclang', '--dependent-lib=libcmtd', ++ ] ++ v.CXXFLAGS_CRT_MULTITHREADED_DBG = v.CFLAGS_CRT_MULTITHREADED_DBG ++ ++ v.CFLAGS_CRT_MULTITHREADED_DLL = CFLAGS_CRT_COMMON + [ ++ '-D_DLL', ++ '-Xclang', '--dependent-lib=msvcrt' ++ ] ++ v.CXXFLAGS_CRT_MULTITHREADED_DLL = v.CFLAGS_CRT_MULTITHREADED_DLL ++ ++ v.CFLAGS_CRT_MULTITHREADED_DLL_DBG = CFLAGS_CRT_COMMON + [ ++ '-D_DLL', ++ '-D_DEBUG', ++ '-Xclang', '--dependent-lib=msvcrtd', ++ ] ++ v.CXXFLAGS_CRT_MULTITHREADED_DLL_DBG = v.CFLAGS_CRT_MULTITHREADED_DLL_DBG ++ ++@conf ++def clang_modifier_target_triple(conf, cpp=False): ++ compiler = conf.env.CXX if cpp else conf.env.CC ++ output = conf.cmd_and_log(compiler + ['-dumpmachine'], output=waflib.Context.STDOUT) ++ ++ modifier = ('clangxx' if cpp else 'clang') + '_modifier_' ++ clang_modifier_func = getattr(conf, modifier + normalize_target_triple(output), None) ++ if clang_modifier_func: ++ clang_modifier_func() +diff --git a/waflib/extras/clangxx_cross.py b/waflib/extras/clangxx_cross.py +new file mode 100644 +index 000000000..0ad38ad46 +--- /dev/null ++++ b/waflib/extras/clangxx_cross.py +@@ -0,0 +1,106 @@ ++#!/usr/bin/env python ++# encoding: utf-8 ++# Thomas Nagy 2009-2018 (ita) ++# DragoonX6 2018 ++ ++""" ++Detect the Clang++ C++ compiler ++This version is an attempt at supporting the -target and -sysroot flag of Clang++. ++""" ++ ++from waflib.Tools import ccroot, ar, gxx ++from waflib.Configure import conf ++import waflib.extras.clang_cross_common ++ ++def options(opt): ++ """ ++ Target triplet for clang++:: ++ $ waf configure --clangxx-target-triple=x86_64-pc-linux-gnu ++ """ ++ cxx_compiler_opts = opt.add_option_group('Configuration options') ++ cxx_compiler_opts.add_option('--clangxx-target-triple', default=None, ++ help='Target triple for clang++', ++ dest='clangxx_target_triple') ++ cxx_compiler_opts.add_option('--clangxx-sysroot', default=None, ++ help='Sysroot for clang++', ++ dest='clangxx_sysroot') ++ ++@conf ++def find_clangxx(conf): ++ """ ++ Finds the program clang++, and executes it to ensure it really is clang++ ++ """ ++ ++ import os ++ ++ cxx = conf.find_program('clang++', var='CXX') ++ ++ if conf.options.clangxx_target_triple != None: ++ conf.env.append_value('CXX', ['-target', conf.options.clangxx_target_triple]) ++ ++ if conf.options.clangxx_sysroot != None: ++ sysroot = str() ++ ++ if os.path.isabs(conf.options.clangxx_sysroot): ++ sysroot = conf.options.clangxx_sysroot ++ else: ++ sysroot = os.path.normpath(os.path.join(os.getcwd(), conf.options.clangxx_sysroot)) ++ ++ conf.env.append_value('CXX', ['--sysroot', sysroot]) ++ ++ conf.get_cc_version(cxx, clang=True) ++ conf.env.CXX_NAME = 'clang' ++ ++@conf ++def clangxx_modifier_x86_64_w64_mingw32(conf): ++ conf.gcc_modifier_win32() ++ ++@conf ++def clangxx_modifier_i386_w64_mingw32(conf): ++ conf.gcc_modifier_win32() ++ ++@conf ++def clangxx_modifier_msvc(conf): ++ v = conf.env ++ v.cxxprogram_PATTERN = v.cprogram_PATTERN ++ v.cxxshlib_PATTERN = v.cshlib_PATTERN ++ ++ v.CXXFLAGS_cxxshlib = [] ++ v.LINKFLAGS_cxxshlib = v.LINKFLAGS_cshlib ++ v.cxxstlib_PATTERN = v.cstlib_PATTERN ++ ++ v.LINK_CXX = v.CXX + ['-fuse-ld=lld', '-nostdlib'] ++ v.CXXLNK_TGT_F = v.CCLNK_TGT_F ++ ++@conf ++def clangxx_modifier_x86_64_windows_msvc(conf): ++ conf.clang_modifier_msvc() ++ conf.clangxx_modifier_msvc() ++ ++ # Allow the user to override any flags if they so desire. ++ clang_modifier_user_func = getattr(conf, 'clangxx_modifier_x86_64_windows_msvc_user', None) ++ if clang_modifier_user_func: ++ clang_modifier_user_func() ++ ++@conf ++def clangxx_modifier_i386_windows_msvc(conf): ++ conf.clang_modifier_msvc() ++ conf.clangxx_modifier_msvc() ++ ++ # Allow the user to override any flags if they so desire. ++ clang_modifier_user_func = getattr(conf, 'clangxx_modifier_i386_windows_msvc_user', None) ++ if clang_modifier_user_func: ++ clang_modifier_user_func() ++ ++def configure(conf): ++ conf.find_clangxx() ++ conf.find_program(['llvm-ar', 'ar'], var='AR') ++ conf.find_ar() ++ conf.gxx_common_flags() ++ # Allow the user to provide flags for the target platform. ++ conf.gxx_modifier_platform() ++ # And allow more fine grained control based on the compiler's triplet. ++ conf.clang_modifier_target_triple(cpp=True) ++ conf.cxx_load_tools() ++ conf.cxx_add_flags() ++ conf.link_add_flags() +diff --git a/waflib/extras/classic_runner.py b/waflib/extras/classic_runner.py +new file mode 100644 +index 000000000..b08c794e8 +--- /dev/null ++++ b/waflib/extras/classic_runner.py +@@ -0,0 +1,68 @@ ++#!/usr/bin/env python ++# encoding: utf-8 ++# Thomas Nagy, 2021 (ita) ++ ++from waflib import Utils, Runner ++ ++""" ++Re-enable the classic threading system from waf 1.x ++ ++def configure(conf): ++ conf.load('classic_runner') ++""" ++ ++class TaskConsumer(Utils.threading.Thread): ++ """ ++ Task consumers belong to a pool of workers ++ ++ They wait for tasks in the queue and then use ``task.process(...)`` ++ """ ++ def __init__(self, spawner): ++ Utils.threading.Thread.__init__(self) ++ """ ++ Obtain :py:class:`waflib.Task.TaskBase` instances from this queue. ++ """ ++ self.spawner = spawner ++ self.daemon = True ++ self.start() ++ ++ def run(self): ++ """ ++ Loop over the tasks to execute ++ """ ++ try: ++ self.loop() ++ except Exception: ++ pass ++ ++ def loop(self): ++ """ ++ Obtain tasks from :py:attr:`waflib.Runner.TaskConsumer.ready` and call ++ :py:meth:`waflib.Task.TaskBase.process`. If the object is a function, execute it. ++ """ ++ master = self.spawner.master ++ while 1: ++ if not master.stop: ++ try: ++ tsk = master.ready.get() ++ if tsk: ++ tsk.log_display(tsk.generator.bld) ++ master.process_task(tsk) ++ else: ++ break ++ finally: ++ master.out.put(tsk) ++ ++class Spawner(object): ++ """ ++ Daemon thread that consumes tasks from :py:class:`waflib.Runner.Parallel` producer and ++ spawns a consuming thread :py:class:`waflib.Runner.Consumer` for each ++ :py:class:`waflib.Task.Task` instance. ++ """ ++ def __init__(self, master): ++ self.master = master ++ """:py:class:`waflib.Runner.Parallel` producer instance""" ++ ++ self.pool = [TaskConsumer(self) for i in range(master.numjobs)] ++ ++Runner.Spawner = Spawner +diff --git a/waflib/extras/color_msvc.py b/waflib/extras/color_msvc.py +new file mode 100644 +index 000000000..60bacb7b2 +--- /dev/null ++++ b/waflib/extras/color_msvc.py +@@ -0,0 +1,59 @@ ++#!/usr/bin/env python ++# encoding: utf-8 ++ ++# Replaces the default formatter by one which understands MSVC output and colorizes it. ++# Modified from color_gcc.py ++ ++__author__ = __maintainer__ = "Alibek Omarov " ++__copyright__ = "Alibek Omarov, 2019" ++ ++import sys ++from waflib import Logs ++ ++class ColorMSVCFormatter(Logs.formatter): ++ def __init__(self, colors): ++ self.colors = colors ++ Logs.formatter.__init__(self) ++ ++ def parseMessage(self, line, color): ++ # Split messaage from 'disk:filepath: type: message' ++ arr = line.split(':', 3) ++ if len(arr) < 4: ++ return line ++ ++ colored = self.colors.BOLD + arr[0] + ':' + arr[1] + ':' + self.colors.NORMAL ++ colored += color + arr[2] + ':' + self.colors.NORMAL ++ colored += arr[3] ++ return colored ++ ++ def format(self, rec): ++ frame = sys._getframe() ++ while frame: ++ func = frame.f_code.co_name ++ if func == 'exec_command': ++ cmd = frame.f_locals.get('cmd') ++ if isinstance(cmd, list): ++ # Fix file case, it may be CL.EXE or cl.exe ++ argv0 = cmd[0].lower() ++ if 'cl.exe' in argv0: ++ lines = [] ++ # This will not work with "localized" versions ++ # of MSVC ++ for line in rec.msg.splitlines(): ++ if ': warning ' in line: ++ lines.append(self.parseMessage(line, self.colors.YELLOW)) ++ elif ': error ' in line: ++ lines.append(self.parseMessage(line, self.colors.RED)) ++ elif ': fatal error ' in line: ++ lines.append(self.parseMessage(line, self.colors.RED + self.colors.BOLD)) ++ elif ': note: ' in line: ++ lines.append(self.parseMessage(line, self.colors.CYAN)) ++ else: ++ lines.append(line) ++ rec.msg = "\n".join(lines) ++ frame = frame.f_back ++ return Logs.formatter.format(self, rec) ++ ++def options(opt): ++ Logs.log.handlers[0].setFormatter(ColorMSVCFormatter(Logs.colors)) ++ +diff --git a/waflib/extras/fc_fujitsu.py b/waflib/extras/fc_fujitsu.py +new file mode 100644 +index 000000000..cae676c20 +--- /dev/null ++++ b/waflib/extras/fc_fujitsu.py +@@ -0,0 +1,52 @@ ++#! /usr/bin/env python ++# encoding: utf-8 ++# Detection of the Fujitsu Fortran compiler for ARM64FX ++ ++import re ++from waflib.Tools import fc,fc_config,fc_scan ++from waflib.Configure import conf ++from waflib.Tools.compiler_fc import fc_compiler ++fc_compiler['linux'].append('fc_fujitsu') ++ ++@conf ++def find_fujitsu(conf): ++ fc=conf.find_program(['frtpx'],var='FC') ++ conf.get_fujitsu_version(fc) ++ conf.env.FC_NAME='FUJITSU' ++ conf.env.FC_MOD_CAPITALIZATION='lower' ++ ++@conf ++def fujitsu_flags(conf): ++ v=conf.env ++ v['_FCMODOUTFLAGS']=[] ++ v['FCFLAGS_DEBUG']=[] ++ v['FCFLAGS_fcshlib']=[] ++ v['LINKFLAGS_fcshlib']=[] ++ v['FCSTLIB_MARKER']='' ++ v['FCSHLIB_MARKER']='' ++ ++@conf ++def get_fujitsu_version(conf,fc): ++ version_re=re.compile(r"frtpx\s*\(FRT\)\s*(?P\d+)\.(?P\d+)\.",re.I).search ++ cmd=fc+['--version'] ++ out,err=fc_config.getoutput(conf,cmd,stdin=False) ++ if out: ++ match=version_re(out) ++ else: ++ match=version_re(err) ++ if not match: ++ return(False) ++ conf.fatal('Could not determine the Fujitsu FRT Fortran compiler version.') ++ else: ++ k=match.groupdict() ++ conf.env['FC_VERSION']=(k['major'],k['minor']) ++ ++def configure(conf): ++ conf.find_fujitsu() ++ conf.find_program('ar',var='AR') ++ conf.add_os_flags('ARFLAGS') ++ if not conf.env.ARFLAGS: ++ conf.env.ARFLAGS=['rcs'] ++ conf.fc_flags() ++ conf.fc_add_flags() ++ conf.fujitsu_flags() +diff --git a/waflib/extras/fc_nfort.py b/waflib/extras/fc_nfort.py +new file mode 100644 +index 000000000..c25886b8e +--- /dev/null ++++ b/waflib/extras/fc_nfort.py +@@ -0,0 +1,52 @@ ++#! /usr/bin/env python ++# encoding: utf-8 ++# Detection of the NEC Fortran compiler for Aurora Tsubasa ++ ++import re ++from waflib.Tools import fc,fc_config,fc_scan ++from waflib.Configure import conf ++from waflib.Tools.compiler_fc import fc_compiler ++fc_compiler['linux'].append('fc_nfort') ++ ++@conf ++def find_nfort(conf): ++ fc=conf.find_program(['nfort'],var='FC') ++ conf.get_nfort_version(fc) ++ conf.env.FC_NAME='NFORT' ++ conf.env.FC_MOD_CAPITALIZATION='lower' ++ ++@conf ++def nfort_flags(conf): ++ v=conf.env ++ v['_FCMODOUTFLAGS']=[] ++ v['FCFLAGS_DEBUG']=[] ++ v['FCFLAGS_fcshlib']=[] ++ v['LINKFLAGS_fcshlib']=[] ++ v['FCSTLIB_MARKER']='' ++ v['FCSHLIB_MARKER']='' ++ ++@conf ++def get_nfort_version(conf,fc): ++ version_re=re.compile(r"nfort\s*\(NFORT\)\s*(?P\d+)\.(?P\d+)\.",re.I).search ++ cmd=fc+['--version'] ++ out,err=fc_config.getoutput(conf,cmd,stdin=False) ++ if out: ++ match=version_re(out) ++ else: ++ match=version_re(err) ++ if not match: ++ return(False) ++ conf.fatal('Could not determine the NEC NFORT Fortran compiler version.') ++ else: ++ k=match.groupdict() ++ conf.env['FC_VERSION']=(k['major'],k['minor']) ++ ++def configure(conf): ++ conf.find_nfort() ++ conf.find_program('nar',var='AR') ++ conf.add_os_flags('ARFLAGS') ++ if not conf.env.ARFLAGS: ++ conf.env.ARFLAGS=['rcs'] ++ conf.fc_flags() ++ conf.fc_add_flags() ++ conf.nfort_flags() +diff --git a/waflib/extras/genpybind.py b/waflib/extras/genpybind.py +new file mode 100644 +index 000000000..ac206ee8a +--- /dev/null ++++ b/waflib/extras/genpybind.py +@@ -0,0 +1,194 @@ ++import os ++import pipes ++import subprocess ++import sys ++ ++from waflib import Logs, Task, Context ++from waflib.Tools.c_preproc import scan as scan_impl ++# ^-- Note: waflib.extras.gccdeps.scan does not work for us, ++# due to its current implementation: ++# The -MD flag is injected into the {C,CXX}FLAGS environment variable and ++# dependencies are read out in a separate step after compiling by reading ++# the .d file saved alongside the object file. ++# As the genpybind task refers to a header file that is never compiled itself, ++# gccdeps will not be able to extract the list of dependencies. ++ ++from waflib.TaskGen import feature, before_method ++ ++ ++def join_args(args): ++ return " ".join(pipes.quote(arg) for arg in args) ++ ++ ++def configure(cfg): ++ cfg.load("compiler_cxx") ++ cfg.load("python") ++ cfg.check_python_version(minver=(2, 7)) ++ if not cfg.env.LLVM_CONFIG: ++ cfg.find_program("llvm-config", var="LLVM_CONFIG") ++ if not cfg.env.GENPYBIND: ++ cfg.find_program("genpybind", var="GENPYBIND") ++ ++ # find clang reasource dir for builtin headers ++ cfg.env.GENPYBIND_RESOURCE_DIR = os.path.join( ++ cfg.cmd_and_log(cfg.env.LLVM_CONFIG + ["--libdir"]).strip(), ++ "clang", ++ cfg.cmd_and_log(cfg.env.LLVM_CONFIG + ["--version"]).strip()) ++ if os.path.exists(cfg.env.GENPYBIND_RESOURCE_DIR): ++ cfg.msg("Checking clang resource dir", cfg.env.GENPYBIND_RESOURCE_DIR) ++ else: ++ cfg.fatal("Clang resource dir not found") ++ ++ ++@feature("genpybind") ++@before_method("process_source") ++def generate_genpybind_source(self): ++ """ ++ Run genpybind on the headers provided in `source` and compile/link the ++ generated code instead. This works by generating the code on the fly and ++ swapping the source node before `process_source` is run. ++ """ ++ # name of module defaults to name of target ++ module = getattr(self, "module", self.target) ++ ++ # create temporary source file in build directory to hold generated code ++ out = "genpybind-%s.%d.cpp" % (module, self.idx) ++ out = self.path.get_bld().find_or_declare(out) ++ ++ task = self.create_task("genpybind", self.to_nodes(self.source), out) ++ # used to detect whether CFLAGS or CXXFLAGS should be passed to genpybind ++ task.features = self.features ++ task.module = module ++ # can be used to select definitions to include in the current module ++ # (when header files are shared by more than one module) ++ task.genpybind_tags = self.to_list(getattr(self, "genpybind_tags", [])) ++ # additional include directories ++ task.includes = self.to_list(getattr(self, "includes", [])) ++ task.genpybind = self.env.GENPYBIND ++ ++ # Tell waf to compile/link the generated code instead of the headers ++ # originally passed-in via the `source` parameter. (see `process_source`) ++ self.source = [out] ++ ++ ++class genpybind(Task.Task): # pylint: disable=invalid-name ++ """ ++ Runs genpybind on headers provided as input to this task. ++ Generated code will be written to the first (and only) output node. ++ """ ++ quiet = True ++ color = "PINK" ++ scan = scan_impl ++ ++ @staticmethod ++ def keyword(): ++ return "Analyzing" ++ ++ def run(self): ++ if not self.inputs: ++ return ++ ++ args = self.find_genpybind() + self._arguments( ++ resource_dir=self.env.GENPYBIND_RESOURCE_DIR) ++ ++ output = self.run_genpybind(args) ++ ++ # For debugging / log output ++ pasteable_command = join_args(args) ++ ++ # write generated code to file in build directory ++ # (will be compiled during process_source stage) ++ (output_node,) = self.outputs ++ output_node.write("// {}\n{}\n".format( ++ pasteable_command.replace("\n", "\n// "), output)) ++ ++ def find_genpybind(self): ++ return self.genpybind ++ ++ def run_genpybind(self, args): ++ bld = self.generator.bld ++ ++ kwargs = dict(cwd=bld.variant_dir) ++ if hasattr(bld, "log_command"): ++ bld.log_command(args, kwargs) ++ else: ++ Logs.debug("runner: {!r}".format(args)) ++ proc = subprocess.Popen( ++ args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, **kwargs) ++ stdout, stderr = proc.communicate() ++ ++ if not isinstance(stdout, str): ++ stdout = stdout.decode(sys.stdout.encoding, errors="replace") ++ if not isinstance(stderr, str): ++ stderr = stderr.decode(sys.stderr.encoding, errors="replace") ++ ++ if proc.returncode != 0: ++ bld.fatal( ++ "genpybind returned {code} during the following call:" ++ "\n{command}\n\n{stdout}\n\n{stderr}".format( ++ code=proc.returncode, ++ command=join_args(args), ++ stdout=stdout, ++ stderr=stderr, ++ )) ++ ++ if stderr.strip(): ++ Logs.debug("non-fatal warnings during genpybind run:\n{}".format(stderr)) ++ ++ return stdout ++ ++ def _include_paths(self): ++ return self.generator.to_incnodes(self.includes + self.env.INCLUDES) ++ ++ def _inputs_as_relative_includes(self): ++ include_paths = self._include_paths() ++ relative_includes = [] ++ for node in self.inputs: ++ for inc in include_paths: ++ if node.is_child_of(inc): ++ relative_includes.append(node.path_from(inc)) ++ break ++ else: ++ self.generator.bld.fatal("could not resolve {}".format(node)) ++ return relative_includes ++ ++ def _arguments(self, genpybind_parse=None, resource_dir=None): ++ args = [] ++ relative_includes = self._inputs_as_relative_includes() ++ is_cxx = "cxx" in self.features ++ ++ # options for genpybind ++ args.extend(["--genpybind-module", self.module]) ++ if self.genpybind_tags: ++ args.extend(["--genpybind-tag"] + self.genpybind_tags) ++ if relative_includes: ++ args.extend(["--genpybind-include"] + relative_includes) ++ if genpybind_parse: ++ args.extend(["--genpybind-parse", genpybind_parse]) ++ ++ args.append("--") ++ ++ # headers to be processed by genpybind ++ args.extend(node.abspath() for node in self.inputs) ++ ++ args.append("--") ++ ++ # options for clang/genpybind-parse ++ args.append("-D__GENPYBIND__") ++ args.append("-xc++" if is_cxx else "-xc") ++ has_std_argument = False ++ for flag in self.env["CXXFLAGS" if is_cxx else "CFLAGS"]: ++ flag = flag.replace("-std=gnu", "-std=c") ++ if flag.startswith("-std=c"): ++ has_std_argument = True ++ args.append(flag) ++ if not has_std_argument: ++ args.append("-std=c++14") ++ args.extend("-I{}".format(n.abspath()) for n in self._include_paths()) ++ args.extend("-D{}".format(p) for p in self.env.DEFINES) ++ ++ # point to clang resource dir, if specified ++ if resource_dir: ++ args.append("-resource-dir={}".format(resource_dir)) ++ ++ return args +diff --git a/waflib/extras/haxe.py b/waflib/extras/haxe.py +new file mode 100644 +index 000000000..4ff374579 +--- /dev/null ++++ b/waflib/extras/haxe.py +@@ -0,0 +1,154 @@ ++import re ++ ++from waflib import Utils, Task, Errors, Logs ++from waflib.Configure import conf ++from waflib.TaskGen import extension, taskgen_method ++ ++HAXE_COMPILERS = { ++ 'JS': {'tgt': '--js', 'ext_out': ['.js']}, ++ 'LUA': {'tgt': '--lua', 'ext_out': ['.lua']}, ++ 'SWF': {'tgt': '--swf', 'ext_out': ['.swf']}, ++ 'NEKO': {'tgt': '--neko', 'ext_out': ['.n']}, ++ 'PHP': {'tgt': '--php', 'ext_out': ['.php']}, ++ 'CPP': {'tgt': '--cpp', 'ext_out': ['.h', '.cpp']}, ++ 'CPPIA': {'tgt': '--cppia', 'ext_out': ['.cppia']}, ++ 'CS': {'tgt': '--cs', 'ext_out': ['.cs']}, ++ 'JAVA': {'tgt': '--java', 'ext_out': ['.java']}, ++ 'JVM': {'tgt': '--jvm', 'ext_out': ['.jar']}, ++ 'PYTHON': {'tgt': '--python', 'ext_out': ['.py']}, ++ 'HL': {'tgt': '--hl', 'ext_out': ['.hl']}, ++ 'HLC': {'tgt': '--hl', 'ext_out': ['.h', '.c']}, ++} ++ ++@conf ++def check_haxe_pkg(self, **kw): ++ self.find_program('haxelib') ++ libs = kw.get('libs') ++ if not libs or not (type(libs) == str or (type(libs) == list and all(isinstance(s, str) for s in libs))): ++ self.fatal('Specify correct libs value in ensure call') ++ return ++ fetch = kw.get('fetch') ++ if not fetch is None and not type(fetch) == bool: ++ self.fatal('Specify correct fetch value in ensure call') ++ ++ libs = [libs] if type(libs) == str else libs ++ halt = False ++ for lib in libs: ++ try: ++ self.start_msg('Checking for library %s' % lib) ++ output = self.cmd_and_log(self.env.HAXELIB + ['list', lib]) ++ except Errors.WafError: ++ self.end_msg(False) ++ self.fatal('Can\'t run haxelib list, ensuring halted') ++ return ++ ++ if lib in output: ++ self.end_msg(lib in output) ++ else: ++ if not fetch: ++ self.end_msg(False) ++ halt = True ++ continue ++ try: ++ status = self.exec_command(self.env.HAXELIB + ['install', lib]) ++ if status: ++ self.end_msg(False) ++ self.fatal('Can\'t get %s with haxelib, ensuring halted' % lib) ++ return ++ else: ++ self.end_msg('downloaded', color='YELLOW') ++ except Errors.WafError: ++ self.end_msg(False) ++ self.fatal('Can\'t run haxelib install, ensuring halted') ++ return ++ postfix = kw.get('uselib_store') or lib.upper() ++ self.env.append_unique('LIB_' + postfix, lib) ++ ++ if halt: ++ self.fatal('Can\'t find libraries in haxelib list, ensuring halted') ++ return ++ ++class haxe(Task.Task): ++ vars = ['HAXE_VERSION', 'HAXE_FLAGS'] ++ ext_in = ['.hx'] ++ ++ def run(self): ++ cmd = self.env.HAXE + self.env.HAXE_FLAGS_DEFAULT + self.env.HAXE_FLAGS ++ return self.exec_command(cmd) ++ ++for COMP in HAXE_COMPILERS: ++ # create runners for each compile target ++ type("haxe_" + COMP, (haxe,), {'ext_out': HAXE_COMPILERS[COMP]['ext_out']}) ++ ++@taskgen_method ++def init_haxe(self): ++ errmsg = '%s not found, specify correct value' ++ try: ++ compiler = HAXE_COMPILERS[self.compiler] ++ comp_tgt = compiler['tgt'] ++ comp_mod = '/main.c' if self.compiler == 'HLC' else '' ++ except (AttributeError, KeyError): ++ self.bld.fatal(errmsg % 'COMPILER' + ': ' + ', '.join(HAXE_COMPILERS.keys())) ++ return ++ ++ self.env.append_value( ++ 'HAXE_FLAGS', ++ [comp_tgt, self.path.get_bld().make_node(self.target + comp_mod).abspath()]) ++ if hasattr(self, 'use'): ++ if not (type(self.use) == str or type(self.use) == list): ++ self.bld.fatal(errmsg % 'USE') ++ return ++ self.use = [self.use] if type(self.use) == str else self.use ++ ++ for dep in self.use: ++ if self.env['LIB_' + dep]: ++ for lib in self.env['LIB_' + dep]: ++ self.env.append_value('HAXE_FLAGS', ['-lib', lib]) ++ ++ if hasattr(self, 'res'): ++ if not type(self.res) == str: ++ self.bld.fatal(errmsg % 'RES') ++ return ++ self.env.append_value('HAXE_FLAGS', ['-D', 'resourcesPath=%s' % self.res]) ++ ++@extension('.hx') ++def haxe_hook(self, node): ++ if len(self.source) > 1: ++ self.bld.fatal('Use separate task generators for multiple files') ++ return ++ ++ src = node ++ tgt = self.path.get_bld().find_or_declare(self.target) ++ ++ self.init_haxe() ++ self.create_task('haxe_' + self.compiler, src, tgt) ++ ++@conf ++def check_haxe(self, mini=None, maxi=None): ++ self.start_msg('Checking for haxe version') ++ try: ++ curr = re.search( ++ r'(\d+.?)+', ++ self.cmd_and_log(self.env.HAXE + ['-version'])).group() ++ except Errors.WafError: ++ self.end_msg(False) ++ self.fatal('Can\'t get haxe version') ++ return ++ ++ if mini and Utils.num2ver(curr) < Utils.num2ver(mini): ++ self.end_msg('wrong', color='RED') ++ self.fatal('%s is too old, need >= %s' % (curr, mini)) ++ return ++ if maxi and Utils.num2ver(curr) > Utils.num2ver(maxi): ++ self.end_msg('wrong', color='RED') ++ self.fatal('%s is too new, need <= %s' % (curr, maxi)) ++ return ++ self.end_msg(curr, color='GREEN') ++ self.env.HAXE_VERSION = curr ++ ++def configure(self): ++ self.env.append_value( ++ 'HAXE_FLAGS_DEFAULT', ++ ['-D', 'no-compilation', '-cp', self.path.abspath()]) ++ Logs.warn('Default flags: %s' % ' '.join(self.env.HAXE_FLAGS_DEFAULT)) ++ self.find_program('haxe') +diff --git a/waflib/extras/msvc_pdb.py b/waflib/extras/msvc_pdb.py +new file mode 100644 +index 000000000..077656b4f +--- /dev/null ++++ b/waflib/extras/msvc_pdb.py +@@ -0,0 +1,46 @@ ++#!/usr/bin/env python ++# encoding: utf-8 ++# Rafaël Kooi 2019 ++ ++from waflib import TaskGen ++ ++@TaskGen.feature('c', 'cxx', 'fc') ++@TaskGen.after_method('propagate_uselib_vars') ++def add_pdb_per_object(self): ++ """For msvc/fortran, specify a unique compile pdb per object, to work ++ around LNK4099. Flags are updated with a unique /Fd flag based on the ++ task output name. This is separate from the link pdb. ++ """ ++ if not hasattr(self, 'compiled_tasks'): ++ return ++ ++ link_task = getattr(self, 'link_task', None) ++ ++ for task in self.compiled_tasks: ++ if task.inputs and task.inputs[0].name.lower().endswith('.rc'): ++ continue ++ ++ add_pdb = False ++ for flagname in ('CFLAGS', 'CXXFLAGS', 'FCFLAGS'): ++ # several languages may be used at once ++ for flag in task.env[flagname]: ++ if flag[1:].lower() == 'zi': ++ add_pdb = True ++ break ++ ++ if add_pdb: ++ node = task.outputs[0].change_ext('.pdb') ++ pdb_flag = '/Fd:' + node.abspath() ++ ++ for flagname in ('CFLAGS', 'CXXFLAGS', 'FCFLAGS'): ++ buf = [pdb_flag] ++ for flag in task.env[flagname]: ++ if flag[1:3] == 'Fd' or flag[1:].lower() == 'fs' or flag[1:].lower() == 'mp': ++ continue ++ buf.append(flag) ++ task.env[flagname] = buf ++ ++ if link_task and not node in link_task.dep_nodes: ++ link_task.dep_nodes.append(node) ++ if not node in task.outputs: ++ task.outputs.append(node) +diff --git a/waflib/extras/sphinx.py b/waflib/extras/sphinx.py +new file mode 100644 +index 000000000..08f3cfd8a +--- /dev/null ++++ b/waflib/extras/sphinx.py +@@ -0,0 +1,120 @@ ++"""Support for Sphinx documentation ++ ++This is a wrapper for sphinx-build program. Please note that sphinx-build supports only ++one output format at a time, but the tool can create multiple tasks to handle more. ++The output formats can be passed via the sphinx_output_format, which is an array of ++strings. For backwards compatibility if only one output is needed, it can be passed ++as a single string. ++The default output format is html. ++ ++Specific formats can be installed in different directories by specifying the ++install_path_ attribute. If not defined, the standard install_path ++will be used instead. ++ ++Example wscript: ++ ++def configure(cnf): ++ conf.load('sphinx') ++ ++def build(bld): ++ bld( ++ features='sphinx', ++ sphinx_source='sources', # path to source directory ++ sphinx_options='-a -v', # sphinx-build program additional options ++ sphinx_output_format=['html', 'man'], # output format of sphinx documentation ++ install_path_man='${DOCDIR}/man' # put man pages in a specific directory ++ ) ++ ++""" ++ ++from waflib.Node import Node ++from waflib import Utils ++from waflib import Task ++from waflib.TaskGen import feature, after_method ++ ++ ++def configure(cnf): ++ """Check if sphinx-build program is available and loads gnu_dirs tool.""" ++ cnf.find_program('sphinx-build', var='SPHINX_BUILD', mandatory=False) ++ cnf.load('gnu_dirs') ++ ++ ++@feature('sphinx') ++def build_sphinx(self): ++ """Builds sphinx sources. ++ """ ++ if not self.env.SPHINX_BUILD: ++ self.bld.fatal('Program SPHINX_BUILD not defined.') ++ if not getattr(self, 'sphinx_source', None): ++ self.bld.fatal('Attribute sphinx_source not defined.') ++ if not isinstance(self.sphinx_source, Node): ++ self.sphinx_source = self.path.find_node(self.sphinx_source) ++ if not self.sphinx_source: ++ self.bld.fatal('Can\'t find sphinx_source: %r' % self.sphinx_source) ++ ++ # In the taskgen we have the complete list of formats ++ Utils.def_attrs(self, sphinx_output_format='html') ++ self.sphinx_output_format = Utils.to_list(self.sphinx_output_format) ++ ++ self.env.SPHINX_OPTIONS = getattr(self, 'sphinx_options', []) ++ ++ for source_file in self.sphinx_source.ant_glob('**/*'): ++ self.bld.add_manual_dependency(self.sphinx_source, source_file) ++ ++ for cfmt in self.sphinx_output_format: ++ sphinx_build_task = self.create_task('SphinxBuildingTask') ++ sphinx_build_task.set_inputs(self.sphinx_source) ++ # In task we keep the specific format this task is generating ++ sphinx_build_task.env.SPHINX_OUTPUT_FORMAT = cfmt ++ ++ # the sphinx-build results are in directory ++ sphinx_build_task.sphinx_output_directory = self.path.get_bld().make_node(cfmt) ++ sphinx_build_task.set_outputs(sphinx_build_task.sphinx_output_directory) ++ sphinx_build_task.sphinx_output_directory.mkdir() ++ ++ Utils.def_attrs(sphinx_build_task, install_path=getattr(self, 'install_path_' + cfmt, getattr(self, 'install_path', get_install_path(sphinx_build_task)))) ++ ++ ++def get_install_path(object): ++ if object.env.SPHINX_OUTPUT_FORMAT == 'man': ++ return object.env.MANDIR ++ elif object.env.SPHINX_OUTPUT_FORMAT == 'info': ++ return object.env.INFODIR ++ else: ++ return object.env.DOCDIR ++ ++ ++class SphinxBuildingTask(Task.Task): ++ color = 'BOLD' ++ run_str = '${SPHINX_BUILD} -M ${SPHINX_OUTPUT_FORMAT} ${SRC} ${TGT} -d ${TGT[0].bld_dir()}/doctrees-${SPHINX_OUTPUT_FORMAT} ${SPHINX_OPTIONS}' ++ ++ def keyword(self): ++ return 'Compiling (%s)' % self.env.SPHINX_OUTPUT_FORMAT ++ ++ def runnable_status(self): ++ ++ for x in self.run_after: ++ if not x.hasrun: ++ return Task.ASK_LATER ++ ++ self.signature() ++ ret = Task.Task.runnable_status(self) ++ if ret == Task.SKIP_ME: ++ # in case the files were removed ++ self.add_install() ++ return ret ++ ++ ++ def post_run(self): ++ self.add_install() ++ return Task.Task.post_run(self) ++ ++ ++ def add_install(self): ++ nodes = self.sphinx_output_directory.ant_glob('**/*', quiet=True) ++ self.outputs += nodes ++ self.generator.add_install_files(install_to=self.install_path, ++ install_from=nodes, ++ postpone=False, ++ cwd=self.sphinx_output_directory.make_node(self.env.SPHINX_OUTPUT_FORMAT), ++ relative_trick=True) +diff --git a/waflib/extras/wafcache.py b/waflib/extras/wafcache.py +new file mode 100644 +index 000000000..30ac3ef51 +--- /dev/null ++++ b/waflib/extras/wafcache.py +@@ -0,0 +1,648 @@ ++#! /usr/bin/env python ++# encoding: utf-8 ++# Thomas Nagy, 2019 (ita) ++ ++""" ++Filesystem-based cache system to share and re-use build artifacts ++ ++Cache access operations (copy to and from) are delegated to ++independent pre-forked worker subprocesses. ++ ++The following environment variables may be set: ++* WAFCACHE: several possibilities: ++ - File cache: ++ absolute path of the waf cache (~/.cache/wafcache_user, ++ where `user` represents the currently logged-in user) ++ - URL to a cache server, for example: ++ export WAFCACHE=http://localhost:8080/files/ ++ in that case, GET/POST requests are made to urls of the form ++ http://localhost:8080/files/000000000/0 (cache management is delegated to the server) ++ - GCS, S3 or MINIO bucket ++ gs://my-bucket/ (uses gsutil command line tool or WAFCACHE_CMD) ++ s3://my-bucket/ (uses aws command line tool or WAFCACHE_CMD) ++ minio://my-bucket/ (uses mc command line tool or WAFCACHE_CMD) ++* WAFCACHE_CMD: bucket upload/download command, for example: ++ WAFCACHE_CMD="gsutil cp %{SRC} %{TGT}" ++ Note that the WAFCACHE bucket value is used for the source or destination ++ depending on the operation (upload or download). For example, with: ++ WAFCACHE="gs://mybucket/" ++ the following commands may be run: ++ gsutil cp build/myprogram gs://mybucket/aa/aaaaa/1 ++ gsutil cp gs://mybucket/bb/bbbbb/2 build/somefile ++* WAFCACHE_NO_PUSH: if set, disables pushing to the cache ++* WAFCACHE_VERBOSITY: if set, displays more detailed cache operations ++* WAFCACHE_STATS: if set, displays cache usage statistics on exit ++ ++File cache specific options: ++ Files are copied using hard links by default; if the cache is located ++ onto another partition, the system switches to file copies instead. ++* WAFCACHE_TRIM_MAX_FOLDER: maximum amount of tasks to cache (1M) ++* WAFCACHE_EVICT_MAX_BYTES: maximum amount of cache size in bytes (10GB) ++* WAFCACHE_EVICT_INTERVAL_MINUTES: minimum time interval to try ++ and trim the cache (3 minutes) ++ ++Upload specific options: ++* WAFCACHE_ASYNC_WORKERS: define a number of workers to upload results asynchronously ++ this may improve build performance with many/long file uploads ++ the default is unset (synchronous uploads) ++* WAFCACHE_ASYNC_NOWAIT: do not wait for uploads to complete (default: False) ++ this requires asynchonous uploads to have an effect ++ ++Usage:: ++ ++ def build(bld): ++ bld.load('wafcache') ++ ... ++ ++To troubleshoot:: ++ ++ waf clean build --zone=wafcache ++""" ++ ++import atexit, base64, errno, fcntl, getpass, os, re, shutil, sys, time, threading, traceback, urllib3, shlex ++try: ++ import subprocess32 as subprocess ++except ImportError: ++ import subprocess ++ ++base_cache = os.path.expanduser('~/.cache/') ++if not os.path.isdir(base_cache): ++ base_cache = '/tmp/' ++default_wafcache_dir = os.path.join(base_cache, 'wafcache_' + getpass.getuser()) ++ ++CACHE_DIR = os.environ.get('WAFCACHE', default_wafcache_dir) ++WAFCACHE_CMD = os.environ.get('WAFCACHE_CMD') ++TRIM_MAX_FOLDERS = int(os.environ.get('WAFCACHE_TRIM_MAX_FOLDER', 1000000)) ++EVICT_INTERVAL_MINUTES = int(os.environ.get('WAFCACHE_EVICT_INTERVAL_MINUTES', 3)) ++EVICT_MAX_BYTES = int(os.environ.get('WAFCACHE_EVICT_MAX_BYTES', 10**10)) ++WAFCACHE_NO_PUSH = 1 if os.environ.get('WAFCACHE_NO_PUSH') else 0 ++WAFCACHE_VERBOSITY = 1 if os.environ.get('WAFCACHE_VERBOSITY') else 0 ++WAFCACHE_STATS = 1 if os.environ.get('WAFCACHE_STATS') else 0 ++WAFCACHE_ASYNC_WORKERS = os.environ.get('WAFCACHE_ASYNC_WORKERS') ++WAFCACHE_ASYNC_NOWAIT = os.environ.get('WAFCACHE_ASYNC_NOWAIT') ++OK = "ok" ++ ++re_waf_cmd = re.compile('(?P%{SRC})|(?P%{TGT})') ++ ++try: ++ import cPickle ++except ImportError: ++ import pickle as cPickle ++ ++if __name__ != '__main__': ++ from waflib import Task, Logs, Utils, Build ++ ++def can_retrieve_cache(self): ++ """ ++ New method for waf Task classes ++ """ ++ if not self.outputs: ++ return False ++ ++ self.cached = False ++ ++ sig = self.signature() ++ ssig = Utils.to_hex(self.uid() + sig) ++ ++ if WAFCACHE_STATS: ++ self.generator.bld.cache_reqs += 1 ++ ++ files_to = [node.abspath() for node in self.outputs] ++ proc = get_process() ++ err = cache_command(proc, ssig, [], files_to) ++ process_pool.append(proc) ++ if err.startswith(OK): ++ if WAFCACHE_VERBOSITY: ++ Logs.pprint('CYAN', ' Fetched %r from cache' % files_to) ++ else: ++ Logs.debug('wafcache: fetched %r from cache', files_to) ++ if WAFCACHE_STATS: ++ self.generator.bld.cache_hits += 1 ++ else: ++ if WAFCACHE_VERBOSITY: ++ Logs.pprint('YELLOW', ' No cache entry %s' % files_to) ++ else: ++ Logs.debug('wafcache: No cache entry %s: %s', files_to, err) ++ return False ++ ++ self.cached = True ++ return True ++ ++def put_files_cache(self): ++ """ ++ New method for waf Task classes ++ """ ++ if WAFCACHE_NO_PUSH or getattr(self, 'cached', None) or not self.outputs: ++ return ++ ++ files_from = [] ++ for node in self.outputs: ++ path = node.abspath() ++ if not os.path.isfile(path): ++ return ++ files_from.append(path) ++ ++ bld = self.generator.bld ++ old_sig = self.signature() ++ ++ for node in self.inputs: ++ try: ++ del node.ctx.cache_sig[node] ++ except KeyError: ++ pass ++ ++ delattr(self, 'cache_sig') ++ sig = self.signature() ++ ++ def _async_put_files_cache(bld, ssig, files_from): ++ proc = get_process() ++ if WAFCACHE_ASYNC_WORKERS: ++ with bld.wafcache_lock: ++ if bld.wafcache_stop: ++ process_pool.append(proc) ++ return ++ bld.wafcache_procs.add(proc) ++ ++ err = cache_command(proc, ssig, files_from, []) ++ process_pool.append(proc) ++ if err.startswith(OK): ++ if WAFCACHE_VERBOSITY: ++ Logs.pprint('CYAN', ' Successfully uploaded %s to cache' % files_from) ++ else: ++ Logs.debug('wafcache: Successfully uploaded %r to cache', files_from) ++ if WAFCACHE_STATS: ++ bld.cache_puts += 1 ++ else: ++ if WAFCACHE_VERBOSITY: ++ Logs.pprint('RED', ' Error caching step results %s: %s' % (files_from, err)) ++ else: ++ Logs.debug('wafcache: Error caching results %s: %s', files_from, err) ++ ++ if old_sig == sig: ++ ssig = Utils.to_hex(self.uid() + sig) ++ if WAFCACHE_ASYNC_WORKERS: ++ fut = bld.wafcache_executor.submit(_async_put_files_cache, bld, ssig, files_from) ++ bld.wafcache_uploads.append(fut) ++ else: ++ _async_put_files_cache(bld, ssig, files_from) ++ else: ++ Logs.debug('wafcache: skipped %r upload due to late input modifications %r', self.outputs, self.inputs) ++ ++ bld.task_sigs[self.uid()] = self.cache_sig ++ ++def hash_env_vars(self, env, vars_lst): ++ """ ++ Reimplement BuildContext.hash_env_vars so that the resulting hash does not depend on local paths ++ """ ++ if not env.table: ++ env = env.parent ++ if not env: ++ return Utils.SIG_NIL ++ ++ idx = str(id(env)) + str(vars_lst) ++ try: ++ cache = self.cache_env ++ except AttributeError: ++ cache = self.cache_env = {} ++ else: ++ try: ++ return self.cache_env[idx] ++ except KeyError: ++ pass ++ ++ v = str([env[a] for a in vars_lst]) ++ v = v.replace(self.srcnode.abspath().__repr__()[:-1], '') ++ m = Utils.md5() ++ m.update(v.encode()) ++ ret = m.digest() ++ ++ Logs.debug('envhash: %r %r', ret, v) ++ ++ cache[idx] = ret ++ ++ return ret ++ ++def uid(self): ++ """ ++ Reimplement Task.uid() so that the signature does not depend on local paths ++ """ ++ try: ++ return self.uid_ ++ except AttributeError: ++ m = Utils.md5() ++ src = self.generator.bld.srcnode ++ up = m.update ++ up(self.__class__.__name__.encode()) ++ for x in self.inputs + self.outputs: ++ up(x.path_from(src).encode()) ++ self.uid_ = m.digest() ++ return self.uid_ ++ ++ ++def make_cached(cls): ++ """ ++ Enable the waf cache for a given task class ++ """ ++ if getattr(cls, 'nocache', None) or getattr(cls, 'has_cache', False): ++ return ++ ++ full_name = "%s.%s" % (cls.__module__, cls.__name__) ++ if full_name in ('waflib.Tools.ccroot.vnum', 'waflib.Build.inst'): ++ return ++ ++ m1 = getattr(cls, 'run', None) ++ def run(self): ++ if getattr(self, 'nocache', False): ++ return m1(self) ++ if self.can_retrieve_cache(): ++ return 0 ++ return m1(self) ++ cls.run = run ++ ++ m2 = getattr(cls, 'post_run', None) ++ def post_run(self): ++ if getattr(self, 'nocache', False): ++ return m2(self) ++ ret = m2(self) ++ self.put_files_cache() ++ return ret ++ cls.post_run = post_run ++ cls.has_cache = True ++ ++process_pool = [] ++def get_process(): ++ """ ++ Returns a worker process that can process waf cache commands ++ The worker process is assumed to be returned to the process pool when unused ++ """ ++ try: ++ return process_pool.pop() ++ except IndexError: ++ filepath = os.path.dirname(os.path.abspath(__file__)) + os.sep + 'wafcache.py' ++ cmd = [sys.executable, '-c', Utils.readf(filepath)] ++ return subprocess.Popen(cmd, stdout=subprocess.PIPE, stdin=subprocess.PIPE, bufsize=0) ++ ++def atexit_pool(): ++ for proc in process_pool: ++ proc.kill() ++atexit.register(atexit_pool) ++ ++def build(bld): ++ """ ++ Called during the build process to enable file caching ++ """ ++ ++ if WAFCACHE_ASYNC_WORKERS: ++ try: ++ num_workers = int(WAFCACHE_ASYNC_WORKERS) ++ except ValueError: ++ Logs.warn('Invalid WAFCACHE_ASYNC_WORKERS specified: %r' % WAFCACHE_ASYNC_WORKERS) ++ else: ++ from concurrent.futures import ThreadPoolExecutor ++ bld.wafcache_executor = ThreadPoolExecutor(max_workers=num_workers) ++ bld.wafcache_uploads = [] ++ bld.wafcache_procs = set([]) ++ bld.wafcache_stop = False ++ bld.wafcache_lock = threading.Lock() ++ ++ def finalize_upload_async(bld): ++ if WAFCACHE_ASYNC_NOWAIT: ++ with bld.wafcache_lock: ++ bld.wafcache_stop = True ++ ++ for fut in reversed(bld.wafcache_uploads): ++ fut.cancel() ++ ++ for proc in bld.wafcache_procs: ++ proc.kill() ++ ++ bld.wafcache_procs.clear() ++ else: ++ Logs.pprint('CYAN', '... waiting for wafcache uploads to complete (%s uploads)' % len(bld.wafcache_uploads)) ++ bld.wafcache_executor.shutdown(wait=True) ++ bld.add_post_fun(finalize_upload_async) ++ ++ if WAFCACHE_STATS: ++ # Init counter for statistics and hook to print results at the end ++ bld.cache_reqs = bld.cache_hits = bld.cache_puts = 0 ++ ++ def printstats(bld): ++ hit_ratio = 0 ++ if bld.cache_reqs > 0: ++ hit_ratio = (bld.cache_hits / bld.cache_reqs) * 100 ++ Logs.pprint('CYAN', ' wafcache stats: %s requests, %s hits (ratio: %.2f%%), %s writes' % ++ (bld.cache_reqs, bld.cache_hits, hit_ratio, bld.cache_puts) ) ++ bld.add_post_fun(printstats) ++ ++ if process_pool: ++ # already called once ++ return ++ ++ # pre-allocation ++ processes = [get_process() for x in range(bld.jobs)] ++ process_pool.extend(processes) ++ ++ Task.Task.can_retrieve_cache = can_retrieve_cache ++ Task.Task.put_files_cache = put_files_cache ++ Task.Task.uid = uid ++ Build.BuildContext.hash_env_vars = hash_env_vars ++ for x in reversed(list(Task.classes.values())): ++ make_cached(x) ++ ++def cache_command(proc, sig, files_from, files_to): ++ """ ++ Create a command for cache worker processes, returns a pickled ++ base64-encoded tuple containing the task signature, a list of files to ++ cache and a list of files files to get from cache (one of the lists ++ is assumed to be empty) ++ """ ++ obj = base64.b64encode(cPickle.dumps([sig, files_from, files_to])) ++ proc.stdin.write(obj) ++ proc.stdin.write('\n'.encode()) ++ proc.stdin.flush() ++ obj = proc.stdout.readline() ++ if not obj: ++ raise OSError('Preforked sub-process %r died' % proc.pid) ++ return cPickle.loads(base64.b64decode(obj)) ++ ++try: ++ copyfun = os.link ++except NameError: ++ copyfun = shutil.copy2 ++ ++def atomic_copy(orig, dest): ++ """ ++ Copy files to the cache, the operation is atomic for a given file ++ """ ++ global copyfun ++ tmp = dest + '.tmp' ++ up = os.path.dirname(dest) ++ try: ++ os.makedirs(up) ++ except OSError: ++ pass ++ ++ try: ++ copyfun(orig, tmp) ++ except OSError as e: ++ if e.errno == errno.EXDEV: ++ copyfun = shutil.copy2 ++ copyfun(orig, tmp) ++ else: ++ raise ++ os.rename(tmp, dest) ++ ++def lru_trim(): ++ """ ++ the cache folders take the form: ++ `CACHE_DIR/0b/0b180f82246d726ece37c8ccd0fb1cde2650d7bfcf122ec1f169079a3bfc0ab9` ++ they are listed in order of last access, and then removed ++ until the amount of folders is within TRIM_MAX_FOLDERS and the total space ++ taken by files is less than EVICT_MAX_BYTES ++ """ ++ lst = [] ++ for up in os.listdir(CACHE_DIR): ++ if len(up) == 2: ++ sub = os.path.join(CACHE_DIR, up) ++ for hval in os.listdir(sub): ++ path = os.path.join(sub, hval) ++ ++ size = 0 ++ for fname in os.listdir(path): ++ try: ++ size += os.lstat(os.path.join(path, fname)).st_size ++ except OSError: ++ pass ++ lst.append((os.stat(path).st_mtime, size, path)) ++ ++ lst.sort(key=lambda x: x[0]) ++ lst.reverse() ++ ++ tot = sum(x[1] for x in lst) ++ while tot > EVICT_MAX_BYTES or len(lst) > TRIM_MAX_FOLDERS: ++ _, tmp_size, path = lst.pop() ++ tot -= tmp_size ++ ++ tmp = path + '.remove' ++ try: ++ shutil.rmtree(tmp) ++ except OSError: ++ pass ++ try: ++ os.rename(path, tmp) ++ except OSError: ++ sys.stderr.write('Could not rename %r to %r\n' % (path, tmp)) ++ else: ++ try: ++ shutil.rmtree(tmp) ++ except OSError: ++ sys.stderr.write('Could not remove %r\n' % tmp) ++ sys.stderr.write("Cache trimmed: %r bytes in %r folders left\n" % (tot, len(lst))) ++ ++ ++def lru_evict(): ++ """ ++ Reduce the cache size ++ """ ++ lockfile = os.path.join(CACHE_DIR, 'all.lock') ++ try: ++ st = os.stat(lockfile) ++ except EnvironmentError as e: ++ if e.errno == errno.ENOENT: ++ with open(lockfile, 'w') as f: ++ f.write('') ++ return ++ else: ++ raise ++ ++ if st.st_mtime < time.time() - EVICT_INTERVAL_MINUTES * 60: ++ # check every EVICT_INTERVAL_MINUTES minutes if the cache is too big ++ # OCLOEXEC is unnecessary because no processes are spawned ++ fd = os.open(lockfile, os.O_RDWR | os.O_CREAT, 0o755) ++ try: ++ try: ++ fcntl.flock(fd, fcntl.LOCK_EX | fcntl.LOCK_NB) ++ except EnvironmentError: ++ if WAFCACHE_VERBOSITY: ++ sys.stderr.write('wafcache: another cleaning process is running\n') ++ else: ++ # now dow the actual cleanup ++ lru_trim() ++ os.utime(lockfile, None) ++ finally: ++ os.close(fd) ++ ++class netcache(object): ++ def __init__(self): ++ self.http = urllib3.PoolManager() ++ ++ def url_of(self, sig, i): ++ return "%s/%s/%s" % (CACHE_DIR, sig, i) ++ ++ def upload(self, file_path, sig, i): ++ url = self.url_of(sig, i) ++ with open(file_path, 'rb') as f: ++ file_data = f.read() ++ r = self.http.request('POST', url, timeout=60, ++ fields={ 'file': ('%s/%s' % (sig, i), file_data), }) ++ if r.status >= 400: ++ raise OSError("Invalid status %r %r" % (url, r.status)) ++ ++ def download(self, file_path, sig, i): ++ url = self.url_of(sig, i) ++ with self.http.request('GET', url, preload_content=False, timeout=60) as inf: ++ if inf.status >= 400: ++ raise OSError("Invalid status %r %r" % (url, inf.status)) ++ with open(file_path, 'wb') as out: ++ shutil.copyfileobj(inf, out) ++ ++ def copy_to_cache(self, sig, files_from, files_to): ++ try: ++ for i, x in enumerate(files_from): ++ if not os.path.islink(x): ++ self.upload(x, sig, i) ++ except Exception: ++ return traceback.format_exc() ++ return OK ++ ++ def copy_from_cache(self, sig, files_from, files_to): ++ try: ++ for i, x in enumerate(files_to): ++ self.download(x, sig, i) ++ except Exception: ++ return traceback.format_exc() ++ return OK ++ ++class fcache(object): ++ def __init__(self): ++ if not os.path.exists(CACHE_DIR): ++ try: ++ os.makedirs(CACHE_DIR) ++ except OSError: ++ pass ++ if not os.path.exists(CACHE_DIR): ++ raise ValueError('Could not initialize the cache directory') ++ ++ def copy_to_cache(self, sig, files_from, files_to): ++ """ ++ Copy files to the cache, existing files are overwritten, ++ and the copy is atomic only for a given file, not for all files ++ that belong to a given task object ++ """ ++ try: ++ for i, x in enumerate(files_from): ++ dest = os.path.join(CACHE_DIR, sig[:2], sig, str(i)) ++ atomic_copy(x, dest) ++ except Exception: ++ return traceback.format_exc() ++ else: ++ # attempt trimming if caching was successful: ++ # we may have things to trim! ++ try: ++ lru_evict() ++ except Exception: ++ return traceback.format_exc() ++ return OK ++ ++ def copy_from_cache(self, sig, files_from, files_to): ++ """ ++ Copy files from the cache ++ """ ++ try: ++ for i, x in enumerate(files_to): ++ orig = os.path.join(CACHE_DIR, sig[:2], sig, str(i)) ++ atomic_copy(orig, x) ++ ++ # success! update the cache time ++ os.utime(os.path.join(CACHE_DIR, sig[:2], sig), None) ++ except Exception: ++ return traceback.format_exc() ++ return OK ++ ++class bucket_cache(object): ++ def bucket_copy(self, source, target): ++ if WAFCACHE_CMD: ++ def replacer(match): ++ if match.group('src'): ++ return source ++ elif match.group('tgt'): ++ return target ++ cmd = [re_waf_cmd.sub(replacer, x) for x in shlex.split(WAFCACHE_CMD)] ++ elif CACHE_DIR.startswith('s3://'): ++ cmd = ['aws', 's3', 'cp', source, target] ++ elif CACHE_DIR.startswith('gs://'): ++ cmd = ['gsutil', 'cp', source, target] ++ else: ++ cmd = ['mc', 'cp', source, target] ++ ++ proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) ++ out, err = proc.communicate() ++ if proc.returncode: ++ raise OSError('Error copy %r to %r using: %r (exit %r):\n out:%s\n err:%s' % ( ++ source, target, cmd, proc.returncode, out.decode(errors='replace'), err.decode(errors='replace'))) ++ ++ def copy_to_cache(self, sig, files_from, files_to): ++ try: ++ for i, x in enumerate(files_from): ++ dest = os.path.join(CACHE_DIR, sig[:2], sig, str(i)) ++ self.bucket_copy(x, dest) ++ except Exception: ++ return traceback.format_exc() ++ return OK ++ ++ def copy_from_cache(self, sig, files_from, files_to): ++ try: ++ for i, x in enumerate(files_to): ++ orig = os.path.join(CACHE_DIR, sig[:2], sig, str(i)) ++ self.bucket_copy(orig, x) ++ except EnvironmentError: ++ return traceback.format_exc() ++ return OK ++ ++def loop(service): ++ """ ++ This function is run when this file is run as a standalone python script, ++ it assumes a parent process that will communicate the commands to it ++ as pickled-encoded tuples (one line per command) ++ ++ The commands are to copy files to the cache or copy files from the ++ cache to a target destination ++ """ ++ # one operation is performed at a single time by a single process ++ # therefore stdin never has more than one line ++ txt = sys.stdin.readline().strip() ++ if not txt: ++ # parent process probably ended ++ sys.exit(1) ++ ret = OK ++ ++ [sig, files_from, files_to] = cPickle.loads(base64.b64decode(txt)) ++ if files_from: ++ # TODO return early when pushing files upstream ++ ret = service.copy_to_cache(sig, files_from, files_to) ++ elif files_to: ++ # the build process waits for workers to (possibly) obtain files from the cache ++ ret = service.copy_from_cache(sig, files_from, files_to) ++ else: ++ ret = "Invalid command" ++ ++ obj = base64.b64encode(cPickle.dumps(ret)) ++ sys.stdout.write(obj.decode()) ++ sys.stdout.write('\n') ++ sys.stdout.flush() ++ ++if __name__ == '__main__': ++ if CACHE_DIR.startswith('s3://') or CACHE_DIR.startswith('gs://') or CACHE_DIR.startswith('minio://'): ++ if CACHE_DIR.startswith('minio://'): ++ CACHE_DIR = CACHE_DIR[8:] # minio doesn't need the protocol part, uses config aliases ++ service = bucket_cache() ++ elif CACHE_DIR.startswith('http'): ++ service = netcache() ++ else: ++ service = fcache() ++ while 1: ++ try: ++ loop(service) ++ except KeyboardInterrupt: ++ break ++ +diff --git a/waflib/extras/xcode6.py b/waflib/extras/xcode6.py +index 91bbff181..c5b309120 100644 +--- a/waflib/extras/xcode6.py ++++ b/waflib/extras/xcode6.py +@@ -99,7 +99,7 @@ def delete_invalid_values(dct): + ... + } + 'Release': { +- 'ARCHS' x86_64' ++ 'ARCHS': x86_64' + ... + } + } +@@ -163,12 +163,12 @@ def tostring(self, value): + result = result + "\t\t}" + return result + elif isinstance(value, str): +- return "\"%s\"" % value ++ return '"%s"' % value.replace('"', '\\\\\\"') + elif isinstance(value, list): + result = "(\n" + for i in value: +- result = result + "\t\t\t%s,\n" % self.tostring(i) +- result = result + "\t\t)" ++ result = result + "\t\t\t\t%s,\n" % self.tostring(i) ++ result = result + "\t\t\t)" + return result + elif isinstance(value, XCodeNode): + return value._id +@@ -565,13 +565,13 @@ def process_xcode(self): + # Override target specific build settings + bldsettings = { + 'HEADER_SEARCH_PATHS': ['$(inherited)'] + self.env['INCPATHS'], +- 'LIBRARY_SEARCH_PATHS': ['$(inherited)'] + Utils.to_list(self.env.LIBPATH) + Utils.to_list(self.env.STLIBPATH) + Utils.to_list(self.env.LIBDIR) , ++ 'LIBRARY_SEARCH_PATHS': ['$(inherited)'] + Utils.to_list(self.env.LIBPATH) + Utils.to_list(self.env.STLIBPATH) + Utils.to_list(self.env.LIBDIR), + 'FRAMEWORK_SEARCH_PATHS': ['$(inherited)'] + Utils.to_list(self.env.FRAMEWORKPATH), +- 'OTHER_LDFLAGS': libs + ' ' + frameworks, +- 'OTHER_LIBTOOLFLAGS': bld.env['LINKFLAGS'], ++ 'OTHER_LDFLAGS': libs + ' ' + frameworks + ' ' + ' '.join(bld.env['LINKFLAGS']), + 'OTHER_CPLUSPLUSFLAGS': Utils.to_list(self.env['CXXFLAGS']), + 'OTHER_CFLAGS': Utils.to_list(self.env['CFLAGS']), +- 'INSTALL_PATH': [] ++ 'INSTALL_PATH': [], ++ 'GCC_PREPROCESSOR_DEFINITIONS': self.env['DEFINES'] + } + + # Install path +@@ -591,7 +591,7 @@ def process_xcode(self): + + # The keys represents different build configuration, e.g. Debug, Release and so on.. + # Insert our generated build settings to all configuration names +- keys = set(settings.keys() + bld.env.PROJ_CONFIGURATION.keys()) ++ keys = set(settings.keys()) | set(bld.env.PROJ_CONFIGURATION.keys()) + for k in keys: + if k in settings: + settings[k].update(bldsettings) +diff --git a/waflib/fixpy2.py b/waflib/fixpy2.py +index 24176e066..c99bff4b9 100644 +--- a/waflib/fixpy2.py ++++ b/waflib/fixpy2.py +@@ -56,7 +56,7 @@ def r1(code): + @subst('Runner.py') + def r4(code): + "generator syntax" +- return code.replace('next(self.biter)', 'self.biter.next()') ++ return code.replace('next(self.biter)', 'self.biter.next()').replace('self.daemon = True', 'self.setDaemon(1)') + + @subst('Context.py') + def r5(code): +diff --git a/waflib/processor.py b/waflib/processor.py +index 2eecf3bd9..eff2e69ad 100755 +--- a/waflib/processor.py ++++ b/waflib/processor.py +@@ -27,6 +27,10 @@ def run(): + [cmd, kwargs, cargs] = cPickle.loads(base64.b64decode(txt)) + cargs = cargs or {} + ++ if not 'close_fds' in kwargs: ++ # workers have no fds ++ kwargs['close_fds'] = False ++ + ret = 1 + out, err, ex, trace = (None, None, None, None) + try: diff --git a/package/jack2/Config.in b/package/jack2/Config.in new file mode 100644 index 00000000..f5ac0399 --- /dev/null +++ b/package/jack2/Config.in @@ -0,0 +1,51 @@ +config BR2_PACKAGE_JACK2 + bool "jack2" + depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib + depends on BR2_USE_MMU # fork() + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_HWDEP + select BR2_PACKAGE_ALSA_LIB_SEQ + select BR2_PACKAGE_ALSA_LIB_RAWMIDI + # Ensure we get at least one: + select BR2_PACKAGE_JACK2_LEGACY if !BR2_PACKAGE_JACK2_DBUS + help + JACK Audio Connection Kit (server and example clients). + + JACK is a low-latency sound server, allowing multiple + applications to connect to one audio device, and to share + audio between themselves. This package contains the daemon + jackd as well as some example clients. + + http://jackaudio.org/ + +if BR2_PACKAGE_JACK2 + +config BR2_PACKAGE_JACK2_LEGACY + bool "classic jack2" + help + Build and use jackd. + + https://github.com/jackaudio/jackaudio.github.com/wiki/JACK-DBus-packaging + +config BR2_PACKAGE_JACK2_DBUS + bool "dbus jack2" + depends on BR2_USE_WCHAR # dbus-python, python + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_DBUS_PYTHON + select BR2_PACKAGE_PYTHON3 # runtime + select BR2_PACKAGE_PYTHON3_PYEXPAT # runtime + help + Build and use jackdbus. + + https://github.com/jackaudio/jackaudio.github.com/wiki/JACK-DBus-packaging + +endif + +comment "jack2 needs a toolchain w/ threads, C++, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \ + BR2_STATIC_LIBS diff --git a/package/jack2/jack2.hash b/package/jack2/jack2.hash new file mode 100644 index 00000000..264e877e --- /dev/null +++ b/package/jack2/jack2.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1e42b9fc4ad7db7befd414d45ab2f8a159c0b30fcd6eee452be662298766a849 jack2-1.9.22.tar.gz +sha256 d8c320ffc0030d1b096ae4732b50d2b811cf95e9a9b7377c1127b2563e0a0388 COPYING diff --git a/package/jack2/jack2.mk b/package/jack2/jack2.mk new file mode 100644 index 00000000..de5d1566 --- /dev/null +++ b/package/jack2/jack2.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# jack2 +# +################################################################################ + +JACK2_VERSION = 1.9.22 +JACK2_SITE = $(call github,jackaudio,jack2,v$(JACK2_VERSION)) +JACK2_LICENSE = GPL-2.0+ (jack server), LGPL-2.1+ (jack library) +JACK2_LICENSE_FILES = COPYING +JACK2_CPE_ID_VENDOR = jackaudio +JACK2_DEPENDENCIES = host-pkgconf alsa-lib +JACK2_INSTALL_STAGING = YES + +JACK2_CONF_OPTS = --alsa + +ifeq ($(BR2_PACKAGE_LIBEXECINFO),y) +JACK2_DEPENDENCIES += libexecinfo +JACK2_CONF_ENV += LDFLAGS="$(TARGET_LDFLAGS) -lexecinfo" +endif + +ifeq ($(BR2_PACKAGE_LIBSAMPLERATE),y) +JACK2_DEPENDENCIES += libsamplerate +JACK2_CONF_OPTS += --samplerate=yes +else +JACK2_CONF_OPTS += --samplerate=no +endif + +ifeq ($(BR2_PACKAGE_OPUS),y) +JACK2_DEPENDENCIES += opus +JACK2_CONF_OPTS += --opus=yes +else +JACK2_CONF_OPTS += --opus=no +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +JACK2_DEPENDENCIES += systemd +JACK2_CONF_OPTS += --systemd=yes +else +JACK2_CONF_OPTS += --systemd=no +endif + +ifeq ($(BR2_PACKAGE_JACK2_LEGACY),y) +JACK2_CONF_OPTS += --classic +else +define JACK2_REMOVE_JACK_CONTROL + $(RM) -f $(TARGET_DIR)/usr/bin/jack_control +endef +JACK2_POST_INSTALL_TARGET_HOOKS += JACK2_REMOVE_JACK_CONTROL +endif + +ifeq ($(BR2_PACKAGE_JACK2_DBUS),y) +JACK2_DEPENDENCIES += dbus +JACK2_CONF_OPTS += --dbus +endif + +# The dependency against eigen is only useful in conjunction with +# gtkiostream, which we do not have, so we don't need to depend on +# eigen. + +$(eval $(waf-package)) diff --git a/package/jailhouse/Config.in b/package/jailhouse/Config.in new file mode 100644 index 00000000..44541416 --- /dev/null +++ b/package/jailhouse/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_JAILHOUSE + bool "jailhouse" + depends on BR2_aarch64 || BR2_x86_64 + depends on BR2_LINUX_KERNEL + help + The Jailhouse partitioning Hypervisor based on Linux. + + https://github.com/siemens/jailhouse + +if BR2_PACKAGE_JAILHOUSE + +config BR2_PACKAGE_JAILHOUSE_HELPER_SCRIPTS + bool "helper scripts" + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_MAKO # runtime + help + Python-based helpers for the Jailhouse Hypervisor. + + https://github.com/siemens/jailhouse + +comment "helper scripts require Python3" + depends on !BR2_PACKAGE_PYTHON3 + +endif + +comment "jailhouse needs a Linux kernel to be built" + depends on BR2_aarch64 || BR2_x86_64 + depends on !BR2_LINUX_KERNEL diff --git a/package/jailhouse/jailhouse.hash b/package/jailhouse/jailhouse.hash new file mode 100644 index 00000000..96d58198 --- /dev/null +++ b/package/jailhouse/jailhouse.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 38ea5d2d9672ce7f76fd0c163edaa8968711aca58f245aec3c8934f140e828b6 jailhouse-e57d1eff6d55aeed5f977fe4e2acfb6ccbdd7560.tar.gz +sha256 3aafb31a2436178323663e00511f16d58fc36ea654b1457532e79d017205efd8 COPYING diff --git a/package/jailhouse/jailhouse.mk b/package/jailhouse/jailhouse.mk new file mode 100644 index 00000000..b5a8b40f --- /dev/null +++ b/package/jailhouse/jailhouse.mk @@ -0,0 +1,70 @@ +################################################################################ +# +# jailhouse +# +################################################################################ + +JAILHOUSE_VERSION = e57d1eff6d55aeed5f977fe4e2acfb6ccbdd7560 +JAILHOUSE_SITE = $(call github,siemens,jailhouse,$(JAILHOUSE_VERSION)) +JAILHOUSE_LICENSE = GPL-2.0 +JAILHOUSE_LICENSE_FILES = COPYING +JAILHOUSE_DEPENDENCIES = \ + linux + +JAILHOUSE_MAKE_OPTS = \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + ARCH="$(KERNEL_ARCH)" \ + KDIR="$(LINUX_DIR)" \ + DESTDIR="$(TARGET_DIR)" \ + prefix=/usr + +ifeq ($(BR2_PACKAGE_JAILHOUSE_HELPER_SCRIPTS),y) +JAILHOUSE_DEPENDENCIES += \ + host-python-mako \ + host-python-setuptools +JAILHOUSE_MAKE_OPTS += \ + HAS_PYTHON_MAKO="yes" \ + PYTHON_PIP_USABLE="yes" +else +JAILHOUSE_MAKE_OPTS += \ + HAS_PYTHON_MAKO="no" \ + PYTHON_PIP_USABLE="no" +endif + +ifeq ($(BR2_PACKAGE_JAILHOUSE_HELPER_SCRIPTS),y) +define JAILHOUSE_BUILD_HELPER_SCRIPTS + cd $(@D) && \ + $(PKG_PYTHON_SETUPTOOLS_ENV) \ + $(HOST_DIR)/bin/python setup.py \ + build +endef +define JAILHOUSE_INSTALL_HELPER_SCRIPTS + cd $(@D) && \ + $(PKG_PYTHON_SETUPTOOLS_ENV) \ + $(HOST_DIR)/bin/python setup.py \ + install --no-compile \ + $(PKG_PYTHON_SETUPTOOLS_INSTALL_OPTS) \ + --root=$(TARGET_DIR)) +endef +endif + +define JAILHOUSE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(JAILHOUSE_MAKE_OPTS) -C $(@D) + + $(JAILHOUSE_BUILD_HELPER_SCRIPTS) +endef + +define JAILHOUSE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(JAILHOUSE_MAKE_OPTS) -C $(@D) modules_install firmware_install tool_inmates_install + $(TARGET_MAKE_ENV) $(MAKE) $(JAILHOUSE_MAKE_OPTS) -C $(@D)/tools src=$(@D)/tools install + + $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/jailhouse + $(INSTALL) -D -m 0644 $(@D)/configs/*/*.cell $(TARGET_DIR)/etc/jailhouse + + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/libexec/jailhouse/demos + $(INSTALL) -D -m 0755 $(@D)/inmates/demos/*/*.bin $(TARGET_DIR)/usr/libexec/jailhouse/demos + + $(JAILHOUSE_INSTALL_HELPER_SCRIPTS) +endef + +$(eval $(generic-package)) diff --git a/package/janet/Config.in b/package/janet/Config.in new file mode 100644 index 00000000..bb4bf462 --- /dev/null +++ b/package/janet/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_JANET + bool "janet" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C11/stdatomic.h + help + Janet is a functional and imperative programming language. + The entire language (core library, interpreter, compiler, + assembler, PEG) is less than 1MB. You can also add Janet + scripting to an application by embedding a single C file + and two headers. + + https://janet-lang.org/ + +comment "janet needs a toolchain w/ gcc >= 4.9" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/janet/janet.hash b/package/janet/janet.hash new file mode 100644 index 00000000..a35835a5 --- /dev/null +++ b/package/janet/janet.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 947dfdab6c1417c7c43efef2ecb7a92a3c339ce2135233fe88323740e6e7fab1 janet-1.35.2.tar.gz + +# Locally calculated +sha256 95fca700e8dce9699248e7cc80ac88ce2357874c8352cd2be4d18f183dc9710b LICENSE diff --git a/package/janet/janet.mk b/package/janet/janet.mk new file mode 100644 index 00000000..9bf5322d --- /dev/null +++ b/package/janet/janet.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# janet +# +################################################################################ + +JANET_VERSION = 1.35.2 +JANET_SITE = $(call github,janet-lang,janet,v$(JANET_VERSION)) +JANET_LICENSE = MIT +JANET_LICENSE_FILES = LICENSE + +JANET_INSTALL_STAGING = YES + +ifeq ($(BR2_STATIC_LIBS),y) +JANET_CONF_OPTS += -Ddynamic_modules=false +endif + +# Uses __atomic_fetch_add_4 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +JANET_LDFLAGS += $(TARGET_LDFLAGS) -latomic +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),) +JANET_CONF_OPTS += -Dsingle_threaded=true +endif + +$(eval $(meson-package)) diff --git a/package/jansson/Config.in b/package/jansson/Config.in new file mode 100644 index 00000000..18c8ce5d --- /dev/null +++ b/package/jansson/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_JANSSON + bool "jansson" + help + Jansson is a C library for encoding, decoding and manipulating + JSON data. + + http://www.digip.org/jansson/ diff --git a/package/jansson/jansson.hash b/package/jansson/jansson.hash new file mode 100644 index 00000000..0d9dc7b5 --- /dev/null +++ b/package/jansson/jansson.hash @@ -0,0 +1,3 @@ +# Locally calculated after checking pgp signature +sha256 fba956f27c6ae56ce6dfd52fbf9d20254aad42821f74fa52f83957625294afb9 jansson-2.14.tar.bz2 +sha256 1fff7d37d22157bcd81ab53b6c54da755d7c2f868f15807d9bde920f10730da0 LICENSE diff --git a/package/jansson/jansson.mk b/package/jansson/jansson.mk new file mode 100644 index 00000000..8efe28bf --- /dev/null +++ b/package/jansson/jansson.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# jansson +# +################################################################################ + +JANSSON_VERSION = 2.14 +JANSSON_SOURCE = jansson-$(JANSSON_VERSION).tar.bz2 +JANSSON_SITE = \ + https://github.com/akheron/jansson/releases/download/v$(JANSSON_VERSION) +JANSSON_LICENSE = MIT +JANSSON_LICENSE_FILES = LICENSE +JANSSON_CPE_ID_VALID = YES +JANSSON_INSTALL_STAGING = YES +JANSSON_CONF_ENV = LIBS="-lm" + +$(eval $(autotools-package)) diff --git a/package/janus-gateway/0001-disable-ssp.patch b/package/janus-gateway/0001-disable-ssp.patch new file mode 100644 index 00000000..0c9b006e --- /dev/null +++ b/package/janus-gateway/0001-disable-ssp.patch @@ -0,0 +1,35 @@ +From 4b02c8207adb888d35951bbc1c5b3029594f44c6 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Wed, 24 Apr 2019 13:56:27 -0400 +Subject: [PATCH] Do not force SSP usage + +The toolchain may not support SSP, so do not enforce its usage, let +the package user pass the appropriate CFLAGS to enable SSP if needed. + +Signed-off-by: Gregory Dymarek +Signed-off-by: Thomas Petazzoni +(rebased against v0.1.0) +Signed-off-by: Bernd Kuhls +(rebased against v0.6.3) +Signed-off-by: Adam Duskett +[Upstream status: rejected +(https://github.com/meetecho/janus-gateway/pull/1801)] +--- + configure.ac | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 257ea8c..ca17a29 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -20,7 +20,6 @@ LT_INIT + # Common CFLAGS + CFLAGS="$CFLAGS \ + -fPIC \ +- -fstack-protector-all \ + -fstrict-aliasing \ + -ggdb3 \ + -pthread \ +-- +2.20.1 + diff --git a/package/janus-gateway/0002-Add-test-for-Wunused-but-set-variable.patch b/package/janus-gateway/0002-Add-test-for-Wunused-but-set-variable.patch new file mode 100644 index 00000000..4596577a --- /dev/null +++ b/package/janus-gateway/0002-Add-test-for-Wunused-but-set-variable.patch @@ -0,0 +1,152 @@ +From c0f075bdee5edabf8f19b68e0880fbd249a89653 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 3 Jan 2015 15:09:59 +0100 +Subject: [PATCH] Add test for -Wunused-but-set-variable + +The -Wunused-but-set-variable option does not exist in some old gcc +versions (gcc 4.5.x), so using it unconditionally breaks the build +with such compilers. + +This commit introduces the AX_CHECK_COMPILE_FLAG m4 macro taken from +the autoconf-archive +(http://git.savannah.gnu.org/gitweb/?p=autoconf-archive.git;a=blob_plain;f=m4/ax_check_compile_flag.m4), +and uses it to detect if the -Wunused-but-set-variable option is +supported, and only uses it in this case. + +Signed-off-by: Thomas Petazzoni +(rebased against v0.1.0) +Signed-off-by: Bernd Kuhls +(rebased against v0.6.3) +Signed-off-by: Adam Duskett +[rebased against v1.0.3) +Signed-off-by: Fabrice Fontaine +Upstream: rejected (https://github.com/meetecho/janus-gateway/pull/1789) +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi + +--- + Makefile.am | 1 + + configure.ac | 6 ++- + m4/ax_check_compile_flag.m4 | 74 +++++++++++++++++++++++++++++++++++++ + 3 files changed, 79 insertions(+), 2 deletions(-) + create mode 100644 m4/ax_check_compile_flag.m4 + +diff --git a/src/Makefile.am b/src/Makefile.am +index 96d361e53be0..a8bfd17c930c 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -132,6 +132,7 @@ janus_CFLAGS = \ + -DEVENTDIR=\"$(eventdir)\" \ + -DLOGGERDIR=\"$(loggerdir)\" \ + -DCONFDIR=\"$(confdir)\" \ ++ @GCC_WARN_UNUSED_BUT_SET@ \ + $(BORINGSSL_CFLAGS) \ + $(NULL) + +diff --git a/configure.ac b/configure.ac +index c37c85b7ab06..5afe0ef0bbff 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -12,6 +12,9 @@ AM_SILENT_RULES([yes]) + AC_USE_SYSTEM_EXTENSIONS + + AC_PROG_CC ++AX_CHECK_COMPILE_FLAG([-Wunused-but-set-variable], ++ [GCC_WARN_UNUSED_BUT_SET=-Wunused-but-set-variable]) ++AC_SUBST(GCC_WARN_UNUSED_BUT_SET) + + LT_PREREQ([2.2]) + LT_INIT +@@ -65,8 +68,7 @@ cc*) + CFLAGS="$CFLAGS \ + -Wcast-align \ + -Wno-override-init \ +- -Wunsafe-loop-optimizations \ +- -Wunused-but-set-variable" ++ -Wunsafe-loop-optimizations" + esac + + JANUS_VERSION=1102 +diff --git a/m4/ax_check_compile_flag.m4 b/m4/ax_check_compile_flag.m4 +new file mode 100644 +index 0000000..51df0c0 +--- /dev/null ++++ b/m4/ax_check_compile_flag.m4 +@@ -0,0 +1,74 @@ ++# =========================================================================== ++# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT]) ++# ++# DESCRIPTION ++# ++# Check whether the given FLAG works with the current language's compiler ++# or gives an error. (Warnings, however, are ignored) ++# ++# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on ++# success/failure. ++# ++# If EXTRA-FLAGS is defined, it is added to the current language's default ++# flags (e.g. CFLAGS) when the check is done. The check is thus made with ++# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to ++# force the compiler to issue an error when a bad flag is given. ++# ++# INPUT gives an alternative input source to AC_COMPILE_IFELSE. ++# ++# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this ++# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. ++# ++# LICENSE ++# ++# Copyright (c) 2008 Guido U. Draheim ++# Copyright (c) 2011 Maarten Bosmans ++# ++# This program is free software: you can redistribute it and/or modify it ++# under the terms of the GNU General Public License as published by the ++# Free Software Foundation, either version 3 of the License, or (at your ++# option) any later version. ++# ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General ++# Public License for more details. ++# ++# You should have received a copy of the GNU General Public License along ++# with this program. If not, see . ++# ++# As a special exception, the respective Autoconf Macro's copyright owner ++# gives unlimited permission to copy, distribute and modify the configure ++# scripts that are the output of Autoconf when processing the Macro. You ++# need not follow the terms of the GNU General Public License when using ++# or distributing such scripts, even though portions of the text of the ++# Macro appear in them. The GNU General Public License (GPL) does govern ++# all other use of the material that constitutes the Autoconf Macro. ++# ++# This special exception to the GPL applies to versions of the Autoconf ++# Macro released by the Autoconf Archive. When you make and distribute a ++# modified version of the Autoconf Macro, you may extend this special ++# exception to the GPL to apply to your modified version as well. ++ ++#serial 3 ++ ++AC_DEFUN([AX_CHECK_COMPILE_FLAG], ++[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX ++AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl ++AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ ++ ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS ++ _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" ++ AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])], ++ [AS_VAR_SET(CACHEVAR,[yes])], ++ [AS_VAR_SET(CACHEVAR,[no])]) ++ _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) ++AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes], ++ [m4_default([$2], :)], ++ [m4_default([$3], :)]) ++AS_VAR_POPDEF([CACHEVAR])dnl ++])dnl AX_CHECK_COMPILE_FLAGS +-- +2.20.1 + diff --git a/package/janus-gateway/Config.in b/package/janus-gateway/Config.in new file mode 100644 index 00000000..ccf065d2 --- /dev/null +++ b/package/janus-gateway/Config.in @@ -0,0 +1,107 @@ +menuconfig BR2_PACKAGE_JANUS_GATEWAY + bool "janus-gateway" + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_WCHAR # libnice -> libglib2 + depends on BR2_USE_MMU # libnice + depends on !BR2_STATIC_LIBS # dlopen + select BR2_PACKAGE_JANSSON + select BR2_PACKAGE_LIBCONFIG + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBNICE + select BR2_PACKAGE_LIBSRTP + select BR2_PACKAGE_OPENSSL + help + Janus is an open source, general purpose, WebRTC gateway + designed and developed by Meetecho. + + https://github.com/meetecho/janus-gateway + +if BR2_PACKAGE_JANUS_GATEWAY + +config BR2_PACKAGE_JANUS_GATEWAY_DEMOS + bool "HTML demos" + help + Install the demonstration website, as featured on + https://janus.conf.meetecho.com/ + +comment "plugins" + +config BR2_PACKAGE_JANUS_GATEWAY_AUDIO_BRIDGE + bool "audio bridge" + select BR2_PACKAGE_OPUS + +config BR2_PACKAGE_JANUS_GATEWAY_DUKTAPE + bool "duktape" + depends on !BR2_OPTIMIZE_FAST # duktape + select BR2_PACKAGE_DUKTAPE + +comment "duktape plugin can't be built with optimize for fast" + depends on BR2_OPTIMIZE_FAST + +config BR2_PACKAGE_JANUS_GATEWAY_ECHO_TEST + bool "echo test" + +config BR2_PACKAGE_JANUS_GATEWAY_RECORDPLAY + bool "record and play" + +config BR2_PACKAGE_JANUS_GATEWAY_SIP_GATEWAY + bool "sip gateway" + select BR2_PACKAGE_SOFIA_SIP + +config BR2_PACKAGE_JANUS_GATEWAY_STREAMING + bool "streaming" + # SO_REUSEPORT + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 + +comment "streaming plugin needs a toolchain w/ headers >= 3.9" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 + +config BR2_PACKAGE_JANUS_GATEWAY_TEXT_ROOM + bool "text room" + +config BR2_PACKAGE_JANUS_GATEWAY_VIDEO_CALL + bool "video call" + +config BR2_PACKAGE_JANUS_GATEWAY_VIDEO_ROOM + bool "video room" + +config BR2_PACKAGE_JANUS_GATEWAY_VOICE_MAIL + bool "voice mail" + select BR2_PACKAGE_LIBOGG + +comment "transports" + +config BR2_PACKAGE_JANUS_GATEWAY_MQTT + bool "MQTT" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_PAHO_MQTT_C + +comment "MQTT transport needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_JANUS_GATEWAY_RABBITMQ + bool "RabbitMQ" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_RABBITMQ_C + +comment "RabbitMQ transport needs a toolchain w/ dynamic library, threads" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_JANUS_GATEWAY_REST + bool "REST (HTTP/HTTPS)" + select BR2_PACKAGE_LIBMICROHTTPD + +config BR2_PACKAGE_JANUS_GATEWAY_UNIX_SOCKETS + bool "Unix Sockets" + default y + +config BR2_PACKAGE_JANUS_GATEWAY_WEBSOCKETS + bool "WebSockets" + select BR2_PACKAGE_LIBWEBSOCKETS + +endif + +comment "janus-gateway needs a toolchain w/ dynamic library, threads, wchar" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/package/janus-gateway/janus-gateway.hash b/package/janus-gateway/janus-gateway.hash new file mode 100644 index 00000000..a147a8af --- /dev/null +++ b/package/janus-gateway/janus-gateway.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 f721d62a22b38ba3a341a5502f06b8b3a5a4f7bd0e9cc6c53de257fe99695e17 janus-gateway-1.1.2.tar.gz +sha256 91d04c97fa1da3fcd28205873276358aafc071c5b00a9ea8c49dd06d487a9dc6 COPYING diff --git a/package/janus-gateway/janus-gateway.mk b/package/janus-gateway/janus-gateway.mk new file mode 100644 index 00000000..0b4db458 --- /dev/null +++ b/package/janus-gateway/janus-gateway.mk @@ -0,0 +1,151 @@ +################################################################################ +# +# janus-gateway +# +################################################################################ + +JANUS_GATEWAY_VERSION = 1.1.2 +JANUS_GATEWAY_SITE = $(call github,meetecho,janus-gateway,v$(JANUS_GATEWAY_VERSION)) +JANUS_GATEWAY_LICENSE = GPL-3.0 with OpenSSL exception +JANUS_GATEWAY_LICENSE_FILES = COPYING +JANUS_GATEWAY_CPE_ID_VENDOR = meetecho +JANUS_GATEWAY_CPE_ID_PRODUCT = janus +JANUS_GATEWAY_INSTALL_STAGING = YES + +# ding-libs provides the ini_config library +JANUS_GATEWAY_DEPENDENCIES = host-pkgconf jansson libnice \ + libsrtp libglib2 openssl libconfig \ + $(if $(BR2_PACKAGE_LIBOGG),libogg) + +# Straight out of the repository, no ./configure, and we also patch +# configure.ac. +JANUS_GATEWAY_AUTORECONF = YES + +JANUS_GATEWAY_CONF_OPTS = \ + --disable-data-channels \ + --disable-sample-event-handler + +ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_DEMOS),) +define JANUS_GATEWAY_REMOVE_DEMOS + $(RM) -fr $(TARGET_DIR)/usr/share/janus/demos/ +endef +JANUS_GATEWAY_POST_INSTALL_TARGET_HOOKS += JANUS_GATEWAY_REMOVE_DEMOS +endif + +ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_AUDIO_BRIDGE),y) +JANUS_GATEWAY_DEPENDENCIES += opus +JANUS_GATEWAY_CONF_OPTS += --enable-plugin-audiobridge +else +JANUS_GATEWAY_CONF_OPTS += --disable-plugin-audiobridge +endif + +ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_DUKTAPE),y) +JANUS_GATEWAY_DEPENDENCIES += duktape +JANUS_GATEWAY_CONF_OPTS += --enable-plugin-duktape +else +JANUS_GATEWAY_CONF_OPTS += --disable-plugin-duktape +endif + +ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_ECHO_TEST),y) +JANUS_GATEWAY_CONF_OPTS += --enable-plugin-echotest +else +JANUS_GATEWAY_CONF_OPTS += --disable-plugin-echotest +endif + +ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_RECORDPLAY),y) +JANUS_GATEWAY_CONF_OPTS += --enable-plugin-recordplay +else +JANUS_GATEWAY_CONF_OPTS += --disable-plugin-recordplay +endif + +ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_SIP_GATEWAY),y) +JANUS_GATEWAY_DEPENDENCIES += sofia-sip +JANUS_GATEWAY_CONF_OPTS += --enable-plugin-sip +else +JANUS_GATEWAY_CONF_OPTS += --disable-plugin-sip +endif + +ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_STREAMING),y) +JANUS_GATEWAY_CONF_OPTS += --enable-plugin-streaming +else +JANUS_GATEWAY_CONF_OPTS += --disable-plugin-streaming +endif + +ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_TEXT_ROOM),y) +JANUS_GATEWAY_CONF_OPTS += --enable-plugin-textroom +else +JANUS_GATEWAY_CONF_OPTS += --disable-plugin-textroom +endif + +ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_VIDEO_CALL),y) +JANUS_GATEWAY_CONF_OPTS += --enable-plugin-videocall +else +JANUS_GATEWAY_CONF_OPTS += --disable-plugin-videocall +endif + +ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_VIDEO_ROOM),y) +JANUS_GATEWAY_CONF_OPTS += --enable-plugin-videoroom +else +JANUS_GATEWAY_CONF_OPTS += --disable-plugin-videoroom +endif + +ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_VOICE_MAIL),y) +JANUS_GATEWAY_CONF_OPTS += --enable-plugin-voicemail +else +JANUS_GATEWAY_CONF_OPTS += --disable-plugin-voicemail +endif + +ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_MQTT),y) +JANUS_GATEWAY_DEPENDENCIES += paho-mqtt-c +JANUS_GATEWAY_CONF_OPTS += --enable-mqtt +else +JANUS_GATEWAY_CONF_OPTS += --disable-mqtt +endif + +ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_RABBITMQ),y) +JANUS_GATEWAY_DEPENDENCIES += rabbitmq-c +JANUS_GATEWAY_CONF_OPTS += --enable-rabbitmq +else +JANUS_GATEWAY_CONF_OPTS += --disable-rabbitmq +endif + +ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_REST),y) +JANUS_GATEWAY_DEPENDENCIES += libmicrohttpd +JANUS_GATEWAY_CONF_OPTS += --enable-rest +else +JANUS_GATEWAY_CONF_OPTS += --disable-rest +endif + +ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_UNIX_SOCKETS),y) +JANUS_GATEWAY_CONF_OPTS += --enable-unix-sockets +else +JANUS_GATEWAY_CONF_OPTS += --disable-unix-sockets +endif + +ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_WEBSOCKETS),y) +JANUS_GATEWAY_DEPENDENCIES += libwebsockets +JANUS_GATEWAY_CONF_OPTS += --enable-websockets +else +JANUS_GATEWAY_CONF_OPTS += --disable-websockets +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +JANUS_GATEWAY_DEPENDENCIES += libcurl +JANUS_GATEWAY_CONF_OPTS += --enable-turn-rest-api +else +JANUS_GATEWAY_CONF_OPTS += --disable-turn-rest-api +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +JANUS_GATEWAY_DEPENDENCIES += systemd +JANUS_GATEWAY_CONF_OPTS += --enable-systemd-sockets +else +JANUS_GATEWAY_CONF_OPTS += --disable-systemd-sockets +endif + +define JANUS_GATEWAY_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/janus-gateway/janus-gateway.service \ + $(TARGET_DIR)/usr/lib/systemd/system/janus-gateway.service +endef + +$(eval $(autotools-package)) diff --git a/package/janus-gateway/janus-gateway.service b/package/janus-gateway/janus-gateway.service new file mode 100644 index 00000000..6e6bc7f0 --- /dev/null +++ b/package/janus-gateway/janus-gateway.service @@ -0,0 +1,13 @@ +[Unit] +Description=Janus WebRTC Gateway +Wants=network.target +StartLimitIntervalSec=0 + +[Service] +Type=simple +ExecStart=/usr/bin/janus +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target diff --git a/package/jasper/Config.in b/package/jasper/Config.in new file mode 100644 index 00000000..72969365 --- /dev/null +++ b/package/jasper/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_JASPER + bool "jasper" + help + JPEG-2000 decoder + + http://www.ece.uvic.ca/~mdadams/jasper/ diff --git a/package/jasper/jasper.hash b/package/jasper/jasper.hash new file mode 100644 index 00000000..410bcfc6 --- /dev/null +++ b/package/jasper/jasper.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 28d28290cc2eaf70c8756d391ed8bcc8ab809a895b9a67ea6e89da23a611801a jasper-2.0.33.tar.gz +sha256 4ad1bb42aff888c4403d792e6e2c5f1716d6c279fea70b296333c9d577d30b81 LICENSE diff --git a/package/jasper/jasper.mk b/package/jasper/jasper.mk new file mode 100644 index 00000000..45b9c495 --- /dev/null +++ b/package/jasper/jasper.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# jasper +# +################################################################################ + +JASPER_VERSION = 2.0.33 +JASPER_SITE = https://github.com/jasper-software/jasper/releases/download/version-$(JASPER_VERSION) +JASPER_INSTALL_STAGING = YES +JASPER_LICENSE = JasPer-2.0 +JASPER_LICENSE_FILES = LICENSE +JASPER_CPE_ID_VALID = YES +JASPER_SUPPORTS_IN_SOURCE_BUILD = NO +JASPER_CONF_OPTS = \ + -DJAS_ENABLE_DOC=OFF \ + -DJAS_ENABLE_PROGRAMS=OFF + +ifeq ($(BR2_STATIC_LIBS),y) +JASPER_CONF_OPTS += -DJAS_ENABLE_SHARED=OFF +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +JASPER_CONF_OPTS += -DJAS_ENABLE_LIBJPEG=ON +JASPER_DEPENDENCIES += jpeg +else +JASPER_CONF_OPTS += -DJAS_ENABLE_LIBJPEG=OFF +endif + +JASPER_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +JASPER_CFLAGS += -O0 +endif + +JASPER_CONF_OPTS += -DCMAKE_C_FLAGS="$(JASPER_CFLAGS)" + +$(eval $(cmake-package)) diff --git a/package/jbig2dec/Config.in b/package/jbig2dec/Config.in new file mode 100644 index 00000000..d1440dca --- /dev/null +++ b/package/jbig2dec/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_JBIG2DEC + bool "jbig2dec" + help + jbig2dec is a decoder implementation of the JBIG2 + image compression format. + + https://jbig2dec.com/ diff --git a/package/jbig2dec/jbig2dec.hash b/package/jbig2dec/jbig2dec.hash new file mode 100644 index 00000000..5a34af37 --- /dev/null +++ b/package/jbig2dec/jbig2dec.hash @@ -0,0 +1,7 @@ +# https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs9530/MD5SUMS +# and SHA512SUMS are missing the hashes for this file. +# Locally computed: +sha256 279476695b38f04939aa59d041be56f6bade3422003a406a85e9792c27118a37 jbig2dec-0.19.tar.gz + +# Hash for license files: +sha256 1bf5258afe453934484fd0cea97508b72301633a6a78b0ae8a9ee44ac78f26d9 LICENSE diff --git a/package/jbig2dec/jbig2dec.mk b/package/jbig2dec/jbig2dec.mk new file mode 100644 index 00000000..8d881136 --- /dev/null +++ b/package/jbig2dec/jbig2dec.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# jbig2dec +# +################################################################################ + +JBIG2DEC_VERSION = 0.19 +JBIG2DEC_SITE = \ + https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs9530 +JBIG2DEC_LICENSE = AGPL-3.0+ +JBIG2DEC_LICENSE_FILES = LICENSE +JBIG2DEC_CPE_ID_VENDOR = artifex +JBIG2DEC_INSTALL_STAGING = YES +# tarball is missing install-sh, install.sh, or shtool +JBIG2DEC_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/jemalloc/Config.in b/package/jemalloc/Config.in new file mode 100644 index 00000000..c272d452 --- /dev/null +++ b/package/jemalloc/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_JEMALLOC_ARCH_SUPPORTS + bool + # see include/jemalloc/internal/quantum.h + default y if BR2_arm || BR2_armeb + default y if BR2_aarch64 || BR2_aarch64_be + default y if BR2_i386 || BR2_x86_64 + default y if BR2_m68k + default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + default y if BR2_nios2 + default y if BR2_or1k + default y if BR2_powerpc + default y if BR2_riscv + default y if BR2_sh4 || BR2sh4eb || BR2_sh4a || BR2_sh4aeb + default y if BR2_sparc64 + +config BR2_PACKAGE_JEMALLOC + bool "jemalloc" + depends on BR2_PACKAGE_JEMALLOC_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + help + This library providing a malloc(3) implementation that + emphasizes fragmentation avoidance and scalable concurrency + support. + + http://jemalloc.net/ + +comment "jemalloc needs a toolchain w/ threads" + depends on BR2_PACKAGE_JEMALLOC_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/jemalloc/jemalloc.hash b/package/jemalloc/jemalloc.hash new file mode 100644 index 00000000..214fe806 --- /dev/null +++ b/package/jemalloc/jemalloc.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2db82d1e7119df3e71b7640219b6dfe84789bc0537983c3b7ac4f7189aecfeaa jemalloc-5.3.0.tar.bz2 +sha256 94aa2caa98c25d942f58b956c71dba6a99ff98fc3a31cbc669fe2a4cd0268b53 COPYING diff --git a/package/jemalloc/jemalloc.mk b/package/jemalloc/jemalloc.mk new file mode 100644 index 00000000..bd8a2d76 --- /dev/null +++ b/package/jemalloc/jemalloc.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# jemalloc +# +################################################################################ + +JEMALLOC_VERSION = 5.3.0 +JEMALLOC_SOURCE = jemalloc-$(JEMALLOC_VERSION).tar.bz2 +JEMALLOC_SITE = https://github.com/jemalloc/jemalloc/releases/download/$(JEMALLOC_VERSION) +JEMALLOC_LICENSE = BSD-2-Clause +JEMALLOC_LICENSE_FILES = COPYING +JEMALLOC_INSTALL_STAGING = YES +JEMALLOC_CONFIG_SCRIPTS = jemalloc-config + +# gcc bug internal compiler error: in merge_overlapping_regs, at +# regrename.c:304. This bug is fixed since gcc 6. +ifeq ($(BR2_or1k):$(BR2_TOOLCHAIN_GCC_AT_LEAST_6),y:) +JEMALLOC_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -O0" +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/jh71xx-tools/Config.in.host b/package/jh71xx-tools/Config.in.host new file mode 100644 index 00000000..08872f29 --- /dev/null +++ b/package/jh71xx-tools/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_JH71XX_TOOLS + bool "host jh71xx-tools" + depends on BR2_riscv + help + Bootloader recovery and updater tool for StarFive JH7100 SoCs. + + https://github.com/kprasadvnsi/JH71xx-tools diff --git a/package/jh71xx-tools/jh71xx-tools.hash b/package/jh71xx-tools/jh71xx-tools.hash new file mode 100644 index 00000000..6bc7abe9 --- /dev/null +++ b/package/jh71xx-tools/jh71xx-tools.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 0f16ea896164f6e8bfe0a03bbbd95ff14d474445ba6f045f9377d01282c9364f jh71xx-tools-7a29f4b9d2355aa39afa8680680909bb74e4991d.tar.gz +sha256 cf03c59b41f6d8a5046f7bff4bbe3576075314299a4d0828d7855bf60af81001 LICENSE diff --git a/package/jh71xx-tools/jh71xx-tools.mk b/package/jh71xx-tools/jh71xx-tools.mk new file mode 100644 index 00000000..f082e2a4 --- /dev/null +++ b/package/jh71xx-tools/jh71xx-tools.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# jh71xx-tools +# +################################################################################ + +JH71XX_TOOLS_VERSION = 7a29f4b9d2355aa39afa8680680909bb74e4991d +JH71XX_TOOLS_SITE = $(call github,kprasadvnsi,JH71xx-tools,$(JH71XX_TOOLS_VERSION)) +JH71XX_TOOLS_LICENSE = MIT +JH71XX_TOOLS_LICENSE_FILES = LICENSE + +define HOST_JH71XX_TOOLS_BUILD_CMDS + $(HOSTCC) -o $(@D)/jh7100-recover $(@D)/jh7100-recover.c +endef + +define HOST_JH71XX_TOOLS_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/jh7100-recover $(HOST_DIR)/bin/jh7100-recover +endef + +$(eval $(host-generic-package)) diff --git a/package/jhead/Config.in b/package/jhead/Config.in new file mode 100644 index 00000000..58498cd6 --- /dev/null +++ b/package/jhead/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_JHEAD + bool "jhead" + depends on BR2_USE_WCHAR + help + Jhead is a program for manipulating settings and thumbnails + in Exif jpeg headers used by most Digital Cameras. + + http://www.sentex.net/~mwandel/jhead/ + +comment "jhead needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/package/jhead/jhead.hash b/package/jhead/jhead.hash new file mode 100644 index 00000000..1fe85619 --- /dev/null +++ b/package/jhead/jhead.hash @@ -0,0 +1,3 @@ +# Locally calculated from download (no sig, hash) +sha256 999a81b489c7b2a7264118f194359ecf4c1b714996a2790ff6d5d2f3940f1e9f jhead-3.08.tar.gz +sha256 b3971a74d00c834bc7f112d8a0027b25663fd1637a21381a3e5df4bd2b614dff readme.txt diff --git a/package/jhead/jhead.mk b/package/jhead/jhead.mk new file mode 100644 index 00000000..94031278 --- /dev/null +++ b/package/jhead/jhead.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# jhead +# +################################################################################ + +JHEAD_VERSION = 3.08 +JHEAD_SITE = $(call github,Matthias-Wandel,jhead,$(JHEAD_VERSION)) +JHEAD_LICENSE = Public Domain +JHEAD_LICENSE_FILES = readme.txt +JHEAD_CPE_ID_VALID = YES + +define JHEAD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define JHEAD_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/jhead $(TARGET_DIR)/usr/bin/jhead +endef + +$(eval $(generic-package)) diff --git a/package/jimtcl/Config.in b/package/jimtcl/Config.in new file mode 100644 index 00000000..635fef14 --- /dev/null +++ b/package/jimtcl/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_JIMTCL + bool "jimtcl" + help + Jim Tcl is a small footprint reimplementation of the Tcl + scripting language. The core language engine is compatible + with Tcl 8.5+, while implementing a significant subset of + the Tcl 8.6 command set, plus additional features available + only in Jim Tcl. + + http://jim.tcl.tk diff --git a/package/jimtcl/jimtcl.hash b/package/jimtcl/jimtcl.hash new file mode 100644 index 00000000..d4174a3d --- /dev/null +++ b/package/jimtcl/jimtcl.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 ab7eb3680ba0d16f4a9eb1e05b7fcbb7d23438e25185462c55cd032a1954a985 jimtcl-0.81.tar.gz +sha256 419f1146334e57fb258d6c957d1f94d43455ec0d24b1b54c4447e5f61a353950 LICENSE diff --git a/package/jimtcl/jimtcl.mk b/package/jimtcl/jimtcl.mk new file mode 100644 index 00000000..3d68ca8f --- /dev/null +++ b/package/jimtcl/jimtcl.mk @@ -0,0 +1,103 @@ +################################################################################ +# +# jimtcl +# +################################################################################ + +JIMTCL_VERSION = 0.81 +JIMTCL_SITE = $(call github,msteveb,jimtcl,$(JIMTCL_VERSION)) +JIMTCL_INSTALL_STAGING = YES +JIMTCL_LICENSE = BSD-2-Clause +JIMTCL_LICENSE_FILES = LICENSE + +JIMTCL_HEADERS_TO_INSTALL = \ + jim.h \ + jim-eventloop.h \ + jim-signal.h \ + jim-subcmd.h \ + jim-win32compat.h \ + jim-config.h + +ifeq ($(BR2_PACKAGE_TCL),) +define JIMTCL_LINK_TCLSH + ln -sf jimsh $(TARGET_DIR)/usr/bin/tclsh +endef +endif + +ifeq ($(BR2_STATIC_LIBS),y) +define JIMTCL_INSTALL_LIB + $(INSTALL) -m 0644 -D $(@D)/libjim.a $(1)/usr/lib/libjim.a +endef +else +JIMTCL_SHARED = --shared +define JIMTCL_INSTALL_LIB + $(INSTALL) -m 0755 -D $(@D)/libjim.so.$(JIMTCL_VERSION) \ + $(1)/usr/lib/libjim.so.$(JIMTCL_VERSION) + ln -sf libjim.so.$(JIMTCL_VERSION) $(1)/usr/lib/libjim.so +endef +endif + +# build system doesn't use autotools, but does use an old version of +# gnuconfig which doesn't know all the architectures supported by +# Buildroot, so update config.guess / config.sub like we do in +# pkg-autotools.mk +JIMTCL_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK +HOST_JIMTCL_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK + +# jimtcl really wants to find a existing $CXX, so feed it false +# when we do not have one. +define JIMTCL_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_CONFIGURE_OPTS) \ + CCACHE=none \ + $(if $(BR2_INSTALL_LIBSTDCPP),,CXX=false) \ + ./configure --prefix=/usr \ + --host=$(GNU_TARGET_NAME) \ + --build=$(GNU_HOST_NAME) \ + $(JIMTCL_SHARED) \ + ) +endef + +# -fPIC is mandatory to build shared libraries on certain architectures +# (e.g. SPARC) and causes no harm or drawbacks on other architectures +define JIMTCL_BUILD_CMDS + SH_CFLAGS="-fPIC" \ + SHOBJ_CFLAGS="-fPIC" \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define JIMTCL_INSTALL_STAGING_CMDS + for i in $(JIMTCL_HEADERS_TO_INSTALL); do \ + cp -a $(@D)/$$i $(STAGING_DIR)/usr/include/ || exit 1 ; \ + done; \ + $(call JIMTCL_INSTALL_LIB,$(STAGING_DIR)) +endef + +define JIMTCL_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/jimsh $(TARGET_DIR)/usr/bin/jimsh + $(call JIMTCL_INSTALL_LIB,$(TARGET_DIR)) + $(JIMTCL_LINK_TCLSH) +endef + +define HOST_JIMTCL_CONFIGURE_CMDS + cd $(@D) && \ + $(HOST_CONFIGURE_OPTS) \ + CCACHE=none \ + ./configure --prefix=$(HOST_DIR) --shared +endef + +define HOST_JIMTCL_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_JIMTCL_INSTALL_CMDS + for i in $(JIMTCL_HEADERS_TO_INSTALL); do \ + cp -a $(@D)/$$i $(HOST_DIR)/include/ || exit 1 ; \ + done; + $(INSTALL) -m 0755 -D $(@D)/libjim.so.$(JIMTCL_VERSION) \ + $(HOST_DIR)/lib/libjim.so.$(JIMTCL_VERSION) + ln -sf libjim.so.$(JIMTCL_VERSION) $(HOST_DIR)/lib/libjim.so +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/jitterentropy-library/Config.in b/package/jitterentropy-library/Config.in new file mode 100644 index 00000000..f9ae1bac --- /dev/null +++ b/package/jitterentropy-library/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_JITTERENTROPY_LIBRARY + bool "libjitterentropy" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Hardware RNG based on CPU timing jitter. + + https://github.com/smuellerDD/jitterentropy-library + +comment "libjitterentropy needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/jitterentropy-library/jitterentropy-library.hash b/package/jitterentropy-library/jitterentropy-library.hash new file mode 100644 index 00000000..c7833f14 --- /dev/null +++ b/package/jitterentropy-library/jitterentropy-library.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 802f025f766c38abf663fd5a21482b8313b6d6e2c68c36a4ffd6bc105fe975ab jitterentropy-library-3.4.1.tar.xz +sha256 7a89069066f6c0b8767d3256e5ec5d765b2c7f3354a5a06fc8d5bd7b8103d8a3 LICENSE +sha256 13aa749a5b0a454917a944ed8fffc530b784f5ead522b1aacaf4ec8aa55a6239 LICENSE.bsd +sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 LICENSE.gplv2 diff --git a/package/jitterentropy-library/jitterentropy-library.mk b/package/jitterentropy-library/jitterentropy-library.mk new file mode 100644 index 00000000..f405082d --- /dev/null +++ b/package/jitterentropy-library/jitterentropy-library.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# jitterentropy-library +# +################################################################################ + +JITTERENTROPY_LIBRARY_VERSION = 3.4.1 +JITTERENTROPY_LIBRARY_SOURCE = \ + jitterentropy-library-$(JITTERENTROPY_LIBRARY_VERSION).tar.xz +JITTERENTROPY_LIBRARY_SITE = http://www.chronox.de/jent +JITTERENTROPY_LIBRARY_LICENSE = GPL-2.0 or BSD-3-Clause +JITTERENTROPY_LIBRARY_LICENSE_FILES = LICENSE LICENSE.bsd LICENSE.gplv2 +JITTERENTROPY_LIBRARY_INSTALL_STAGING = YES +JITTERENTROPY_LIBRARY_INSTALL_TARGETS = install-includes +JITTERENTROPY_LIBRARY_SELINUX_MODULES = entropyd + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +JITTERENTROPY_LIBRARY_BUILD_TARGETS += jitterentropy-static +JITTERENTROPY_LIBRARY_INSTALL_TARGETS += install-static +endif + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +JITTERENTROPY_LIBRARY_BUILD_TARGETS += jitterentropy +JITTERENTROPY_LIBRARY_INSTALL_TARGETS += install-shared +endif + +define JITTERENTROPY_LIBRARY_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + ENABLE_STACK_PROTECTOR=0 $(JITTERENTROPY_LIBRARY_BUILD_TARGETS) +endef + +define JITTERENTROPY_LIBRARY_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) \ + INSTALL_STRIP="install" PREFIX=/usr \ + $(JITTERENTROPY_LIBRARY_INSTALL_TARGETS) +endef + +define JITTERENTROPY_LIBRARY_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) \ + INSTALL_STRIP="install" PREFIX=/usr \ + $(JITTERENTROPY_LIBRARY_INSTALL_TARGETS) +endef + +$(eval $(generic-package)) diff --git a/package/jo/Config.in b/package/jo/Config.in new file mode 100644 index 00000000..c5532c21 --- /dev/null +++ b/package/jo/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_JO + bool "jo" + help + Command-line processor to output JSON from a shell + + https://github.com/jpmens/jo diff --git a/package/jo/jo.hash b/package/jo/jo.hash new file mode 100644 index 00000000..efad8228 --- /dev/null +++ b/package/jo/jo.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 eb15592f1ba6d5a77468a1438a20e3d21c3d63bb7d045fb3544f223340fcd1a1 jo-1.6.tar.gz +sha256 41d8b23dc6e76731f4920b9ce42d0d4a248d243a510319e2441d174a115f35cf COPYING diff --git a/package/jo/jo.mk b/package/jo/jo.mk new file mode 100644 index 00000000..dd5dd03d --- /dev/null +++ b/package/jo/jo.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# jo +# +################################################################################ + +JO_VERSION = 1.6 +JO_SITE = https://github.com/jpmens/jo/releases/download/$(JO_VERSION) +JO_LICENSE = MIT (json.[ch]), GPL-2.0+ (rest) +JO_LICENSE_FILES = COPYING +# don't build man pages +JO_CONF_ENV = ac_cv_path_PANDOC='' + +$(eval $(autotools-package)) diff --git a/package/joe/Config.in b/package/joe/Config.in new file mode 100644 index 00000000..c9dd967b --- /dev/null +++ b/package/joe/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_JOE + bool "joe" + depends on BR2_USE_MMU # fork() + help + Joe's Own Editor + + JOE is an easy-to-use, full featured terminal-based screen + editor. Its behavior is a blending of WordStar and GNU-EMACS + (but it does not use code from either program). + It is a great editor for new users or as an alternative to vi. + + http://joe-editor.sf.net + +config BR2_PACKAGE_JOE_FULL + bool "full install of rc and syntax highlighting files" + default y + depends on BR2_PACKAGE_JOE + help + Install all rc and syntax highlighting files. Without this + option only the joe binary is installed, which contains a + default configuration. diff --git a/package/joe/joe.hash b/package/joe/joe.hash new file mode 100644 index 00000000..8029a22d --- /dev/null +++ b/package/joe/joe.hash @@ -0,0 +1,6 @@ +# From https://sourceforge.net/projects/joe-editor/files/JOE%20sources/joe-4.6/ +sha1 da7712333f676cfb5ae9f3565fd2225c5a2185ca joe-4.6.tar.gz +md5 9017484e6116830d846678b625ea5c43 joe-4.6.tar.gz +# Locally computed: +sha256 495a0a61f26404070fe8a719d80406dc7f337623788e445b92a9f6de512ab9de joe-4.6.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/joe/joe.mk b/package/joe/joe.mk new file mode 100644 index 00000000..9346ec1f --- /dev/null +++ b/package/joe/joe.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# joe +# +################################################################################ + +JOE_VERSION = 4.6 +JOE_SITE = http://downloads.sourceforge.net/project/joe-editor/JOE%20sources/joe-$(JOE_VERSION) +JOE_LICENSE = GPL-2.0+ +JOE_LICENSE_FILES = COPYING +JOE_CPE_ID_VENDOR = joseph_allen + +ifeq ($(BR2_PACKAGE_NCURSES),y) +JOE_DEPENDENCIES += ncurses +JOE_CONF_OPTS += --enable-curses +else +JOE_CONF_OPTS += --disable-curses +endif + +ifneq ($(BR2_PACKAGE_JOE_FULL),y) +define JOE_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/joe/joe $(TARGET_DIR)/usr/bin/joe +endef +endif + +$(eval $(autotools-package)) diff --git a/package/jose/0001-lib-hsh.c-rename-hsh-local-variable.patch b/package/jose/0001-lib-hsh.c-rename-hsh-local-variable.patch new file mode 100644 index 00000000..0bd259ad --- /dev/null +++ b/package/jose/0001-lib-hsh.c-rename-hsh-local-variable.patch @@ -0,0 +1,71 @@ +From 591fc6da944ffc29936e0019b2bc225ddc81dbba Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 20 Nov 2017 22:48:33 +0100 +Subject: [PATCH] lib/hsh.c: rename hsh local variable + +The hsh local variable name conflicts with the function prototype of +hsh() in hsh.h, causing the following build issues with old compilers +(gcc 4.7): + +hsh.c: In function 'hsh': +hsh.c:28:21: error: declaration of 'hsh' shadows a global declaration [-Werror=shadow] +hsh.c:26:1: error: shadowed declaration is here [-Werror=shadow] +hsh.c: In function 'hsh_buf': +hsh.c:60:21: error: declaration of 'hsh' shadows a global declaration [-Werror=shadow] +hsh.c:26:1: error: shadowed declaration is here [-Werror=shadow] + +Therefore, we rename this local variable to _hsh. + +Submitted-upstream: https://github.com/latchset/jose/pull/51 +Signed-off-by: Thomas Petazzoni +--- + lib/hsh.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/lib/hsh.c b/lib/hsh.c +index c59a95f..a2a891b 100644 +--- a/lib/hsh.c ++++ b/lib/hsh.c +@@ -25,7 +25,7 @@ + json_t * + hsh(jose_cfg_t *cfg, const char *alg, const void *data, size_t dlen) + { +- jose_io_auto_t *hsh = NULL; ++ jose_io_auto_t *_hsh = NULL; + jose_io_auto_t *enc = NULL; + jose_io_auto_t *buf = NULL; + char b[1024] = {}; +@@ -33,8 +33,8 @@ hsh(jose_cfg_t *cfg, const char *alg, const void *data, size_t dlen) + + buf = jose_io_buffer(cfg, b, &l); + enc = jose_b64_enc_io(buf); +- hsh = hsh_io(cfg, alg, enc); +- if (!buf || !enc || !hsh || !hsh->feed(hsh, data, dlen) || !hsh->done(hsh)) ++ _hsh = hsh_io(cfg, alg, enc); ++ if (!buf || !enc || !_hsh || !_hsh->feed(_hsh, data, dlen) || !_hsh->done(_hsh)) + return NULL; + + return json_stringn(b, l); +@@ -57,7 +57,7 @@ hsh_buf(jose_cfg_t *cfg, const char *alg, + const void *data, size_t dlen, void *hash, size_t hlen) + { + const jose_hook_alg_t *a = NULL; +- jose_io_auto_t *hsh = NULL; ++ jose_io_auto_t *_hsh = NULL; + jose_io_auto_t *buf = NULL; + + a = jose_hook_alg_find(JOSE_HOOK_ALG_KIND_HASH, alg); +@@ -71,8 +71,8 @@ hsh_buf(jose_cfg_t *cfg, const char *alg, + return SIZE_MAX; + + buf = jose_io_buffer(cfg, hash, &hlen); +- hsh = a->hash.hsh(a, cfg, buf); +- if (!buf || !hsh || !hsh->feed(hsh, data, dlen) || !hsh->done(hsh)) ++ _hsh = a->hash.hsh(a, cfg, buf); ++ if (!buf || !_hsh || !_hsh->feed(_hsh, data, dlen) || !_hsh->done(_hsh)) + return SIZE_MAX; + + return hlen; +-- +2.13.6 + diff --git a/package/jose/0002-man-add-option-to-skip-building-man-pages.patch b/package/jose/0002-man-add-option-to-skip-building-man-pages.patch new file mode 100644 index 00000000..3a5ad1ea --- /dev/null +++ b/package/jose/0002-man-add-option-to-skip-building-man-pages.patch @@ -0,0 +1,64 @@ +From 506132d3edc8d062f65fdacf007a15613d27e5c5 Mon Sep 17 00:00:00 2001 +From: Eneas U de Queiroz +Date: Wed, 6 Apr 2022 09:49:48 -0300 +Subject: [PATCH] man: add option to skip building man pages + +Add a 'skip_manpages' option to meson, so that man pages do not get +built. + +Signed-off-by: Eneas U de Queiroz +[Retrieved from: https://github.com/latchset/jose/pull/115] +Signed-off-by: Fabrice Fontaine +--- + meson.build | 24 +++++++++++++----------- + meson_options.txt | 1 + + 2 files changed, 14 insertions(+), 11 deletions(-) + create mode 100644 meson_options.txt + +diff --git a/meson.build b/meson.build +index 1edfbe7..9b40efb 100644 +--- a/meson.build ++++ b/meson.build +@@ -37,7 +37,6 @@ zlib = dependency('zlib') + threads = dependency('threads') + jansson = dependency('jansson', version: '>=2.10') + libcrypto = dependency('libcrypto', version: '>=1.0.2') +-a2x = find_program('a2x', required: false) + + mans = [] + +@@ -63,14 +62,17 @@ pkg.generate( + requires: 'jansson', + ) + +-if a2x.found() +- foreach m : mans +- custom_target(m.split('/')[-1], input: m + '.adoc', output: m.split('/')[-1], +- command: [a2x, '-f', 'manpage', '-D', meson.current_build_dir(), '@INPUT@'], +- install_dir: join_paths(get_option('mandir'), 'man' + m.split('.')[-1]), +- install: true +- ) +- endforeach +-else +- warning('Will not build man pages due to missing dependencies!') ++if not get_option('skip_manpages') ++ a2x = find_program('a2x', required: false) ++ if a2x.found() ++ foreach m : mans ++ custom_target(m.split('/')[-1], input: m + '.adoc', output: m.split('/')[-1], ++ command: [a2x, '-f', 'manpage', '-D', meson.current_build_dir(), '@INPUT@'], ++ install_dir: join_paths(get_option('mandir'), 'man' + m.split('.')[-1]), ++ install: true ++ ) ++ endforeach ++ else ++ warning('Will not build man pages due to missing dependencies!') ++ endif + endif +diff --git a/meson_options.txt b/meson_options.txt +new file mode 100644 +index 0000000..0885515 +--- /dev/null ++++ b/meson_options.txt +@@ -0,0 +1 @@ ++option('skip_manpages', type: 'boolean', value: false, description: 'Do not build manpages') diff --git a/package/jose/Config.in b/package/jose/Config.in new file mode 100644 index 00000000..4a9ed8da --- /dev/null +++ b/package/jose/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_JOSE + bool "jose" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_JANSSON + select BR2_PACKAGE_OPENSSL + help + C-language implementation of Javascript Object Signing and + Encryption. + + https://github.com/latchset/jose + +comment "jose needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/jose/jose.hash b/package/jose/jose.hash new file mode 100644 index 00000000..128d26d1 --- /dev/null +++ b/package/jose/jose.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 e272afe7717e22790c383f3164480627a567c714ccb80c1ee96f62c9929d8225 jose-11.tar.xz +sha256 09e8a9bcec8067104652c168685ab0931e7868f9c8284b66f5ae6edae5f1130b COPYING diff --git a/package/jose/jose.mk b/package/jose/jose.mk new file mode 100644 index 00000000..723ebe8b --- /dev/null +++ b/package/jose/jose.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# jose +# +################################################################################ + +JOSE_VERSION = 11 +JOSE_SOURCE = jose-$(JOSE_VERSION).tar.xz +JOSE_SITE = https://github.com/latchset/jose/releases/download/v$(JOSE_VERSION) +JOSE_LICENSE = Apache-2.0 +JOSE_LICENSE_FILES = COPYING +JOSE_INSTALL_STAGING = YES +JOSE_DEPENDENCIES = host-pkgconf zlib jansson openssl +JOSE_CONF_OPTS = -Dskip_manpages=true + +$(eval $(meson-package)) diff --git a/package/jpeg-turbo/Config.in.options b/package/jpeg-turbo/Config.in.options new file mode 100644 index 00000000..8654b309 --- /dev/null +++ b/package/jpeg-turbo/Config.in.options @@ -0,0 +1,11 @@ +if BR2_PACKAGE_JPEG_TURBO + +config BR2_PACKAGE_JPEG_TURBO_TOOLS + bool "jpeg-turbo tools" + help + Libjpeg-turbo can also provide some tools like cjpeg, + djpeg, jpegtran, rdjpgcom, tjbench and wrjpgcom. + + If you want to keep them enable this option. + +endif diff --git a/package/jpeg-turbo/jpeg-turbo.hash b/package/jpeg-turbo/jpeg-turbo.hash new file mode 100644 index 00000000..a929ae4d --- /dev/null +++ b/package/jpeg-turbo/jpeg-turbo.hash @@ -0,0 +1,7 @@ +# From https://sourceforge.net/projects/libjpeg-turbo/files/2.1.5/ +sha1 edab071e7c5bc12f98a2a7ae499bd6b312770849 libjpeg-turbo-2.1.5.tar.gz +md5 1c6e9f8550a82c6d4cd30b370c22a5fd libjpeg-turbo-2.1.5.tar.gz +# Locally computed +sha256 bc12bc9dce55300c6bf4342bc233bcc26bd38bf289eedf147360d731c668ddaf libjpeg-turbo-2.1.5.tar.gz +sha256 60c756742db3ad1913304e8b13f0e86e22e51adb50cc0b3333c163f7e45ceec1 LICENSE.md +sha256 4b7b9f8c03bb8d60270dfd12684e70ab21e4abfd27e73905cd1a7c4cae6f5cdb README.ijg diff --git a/package/jpeg-turbo/jpeg-turbo.mk b/package/jpeg-turbo/jpeg-turbo.mk new file mode 100644 index 00000000..5e806156 --- /dev/null +++ b/package/jpeg-turbo/jpeg-turbo.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# jpeg-turbo +# +################################################################################ + +JPEG_TURBO_VERSION = 2.1.5 +JPEG_TURBO_SOURCE = libjpeg-turbo-$(JPEG_TURBO_VERSION).tar.gz +JPEG_TURBO_SITE = https://downloads.sourceforge.net/project/libjpeg-turbo/$(JPEG_TURBO_VERSION) +JPEG_TURBO_LICENSE = IJG (libjpeg), BSD-3-Clause (TurboJPEG), Zlib (SIMD) +JPEG_TURBO_LICENSE_FILES = LICENSE.md README.ijg +JPEG_TURBO_CPE_ID_VENDOR = libjpeg-turbo +JPEG_TURBO_CPE_ID_PRODUCT = libjpeg-turbo +JPEG_TURBO_INSTALL_STAGING = YES +JPEG_TURBO_PROVIDES = jpeg +JPEG_TURBO_DEPENDENCIES = host-pkgconf + +JPEG_TURBO_CONF_OPTS = -DWITH_JPEG8=ON + +ifeq ($(BR2_STATIC_LIBS),y) +JPEG_TURBO_CONF_OPTS += -DENABLE_STATIC=ON -DENABLE_SHARED=OFF +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +JPEG_TURBO_CONF_OPTS += -DENABLE_STATIC=ON -DENABLE_SHARED=ON +else ifeq ($(BR2_SHARED_LIBS),y) +JPEG_TURBO_CONF_OPTS += -DENABLE_STATIC=OFF -DENABLE_SHARED=ON +endif + +ifeq ($(BR2_PACKAGE_JPEG_SIMD_SUPPORT),y) +JPEG_TURBO_CONF_OPTS += -DWITH_SIMD=ON +# x86 simd support needs nasm +JPEG_TURBO_DEPENDENCIES += $(if $(BR2_X86_CPU_HAS_MMX),host-nasm) +else +JPEG_TURBO_CONF_OPTS += -DWITH_SIMD=OFF +endif + +# Ensure that jpeg-turbo is compiled with -fPIC to allow linking the static +# libraries with dynamically linked programs. This is not a requirement +# for most architectures but is mandatory for ARM. +# This allow to avoid link issues with BR2_SSP_ALL: +# jsimd_none.c.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against external symbol `__stack_chk_guard@@GLIBC_2.17' +# can not be used when making a shared object; recompile with -fPIC +ifeq ($(BR2_STATIC_LIBS),) +JPEG_TURBO_CONF_OPTS += -DCMAKE_POSITION_INDEPENDENT_CODE=ON +endif + +ifeq ($(BR2_PACKAGE_JPEG_TURBO_TOOLS),) +define JPEG_TURBO_REMOVE_TOOLS + rm -f $(addprefix $(TARGET_DIR)/usr/bin/,cjpeg djpeg jpegtran rdjpgcom tjbench wrjpgcom) +endef +JPEG_TURBO_POST_INSTALL_TARGET_HOOKS += JPEG_TURBO_REMOVE_TOOLS +endif + +$(eval $(cmake-package)) diff --git a/package/jpeg/Config.in b/package/jpeg/Config.in new file mode 100644 index 00000000..371f89aa --- /dev/null +++ b/package/jpeg/Config.in @@ -0,0 +1,57 @@ +# jpeg-turbo has simd support for some architectures +config BR2_PACKAGE_JPEG_SIMD_SUPPORT + bool + default y if BR2_X86_CPU_HAS_MMX + default y if BR2_ARM_CPU_HAS_NEON + default y if BR2_POWERPC_CPU_HAS_ALTIVEC && !BR2_powerpc64le + default y if BR2_POWERPC_CPU_HAS_VSX && BR2_powerpc64le + default y if BR2_aarch64 || BR2_aarch64_be + +config BR2_PACKAGE_JPEG + bool "jpeg support" + help + Select the desired JPEG library provider. + +if BR2_PACKAGE_JPEG + +choice + prompt "jpeg variant" + default BR2_PACKAGE_JPEG_TURBO if BR2_PACKAGE_JPEG_SIMD_SUPPORT + help + Select the normal libjpeg or libjpeg-turbo. + +config BR2_PACKAGE_LIBJPEG + bool "jpeg" + select BR2_PACKAGE_HAS_JPEG + help + The ubiquitous C library for manipulating JPEG images. + + http://www.ijg.org/ + +config BR2_PACKAGE_JPEG_TURBO + bool "jpeg-turbo" + select BR2_PACKAGE_HAS_JPEG + help + Libjpeg-turbo is a derivative of libjpeg that uses SIMD + instructions (MMX, SSE2, NEON) to accelerate baseline JPEG + compression and decompression on x86, x86-64, and ARM + systems. + + http://www.libjpeg-turbo.org + +# libjpeg from br2-external trees, if any +source "$BR2_BASE_DIR/.br2-external.in.jpeg" + +endchoice + +source "package/jpeg-turbo/Config.in.options" + +config BR2_PACKAGE_HAS_JPEG + bool + +config BR2_PACKAGE_PROVIDES_JPEG + string + default "libjpeg" if BR2_PACKAGE_LIBJPEG + default "jpeg-turbo" if BR2_PACKAGE_JPEG_TURBO + +endif diff --git a/package/jpeg/jpeg.mk b/package/jpeg/jpeg.mk new file mode 100644 index 00000000..2d56be6a --- /dev/null +++ b/package/jpeg/jpeg.mk @@ -0,0 +1,7 @@ +################################################################################ +# +# jpeg +# +################################################################################ + +$(eval $(virtual-package)) diff --git a/package/jq/Config.in b/package/jq/Config.in new file mode 100644 index 00000000..ed2e0fa3 --- /dev/null +++ b/package/jq/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_JQ + bool "jq" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + jq is like sed for JSON data - you can use it to slice and + filter and map and transform structured data with the same + ease that sed, awk, grep and friends let you play with text. + + https://jqlang.github.io/jq/ + +comment "jq needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/jq/Config.in.host b/package/jq/Config.in.host new file mode 100644 index 00000000..9fc0e990 --- /dev/null +++ b/package/jq/Config.in.host @@ -0,0 +1,11 @@ +config BR2_PACKAGE_HOST_JQ + bool "host jq" + help + jq is like sed for JSON data - you can use it to slice and + filter and map and transform structured data with the same + ease that sed, awk, grep and friends let you play with text. + + As a host tool, jq can be useful to create/edit/merge/check + JSON files from a post-build script. + + http://stedolan.github.io/jq/ diff --git a/package/jq/jq.hash b/package/jq/jq.hash new file mode 100644 index 00000000..d4d8656e --- /dev/null +++ b/package/jq/jq.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 478c9ca129fd2e3443fe27314b455e211e0d8c60bc8ff7df703873deeee580c2 jq-1.7.1.tar.gz +sha256 10e974638a41fadfd72357f2f3a4325e20b856c563365128f72feaa406f8c92d COPYING diff --git a/package/jq/jq.mk b/package/jq/jq.mk new file mode 100644 index 00000000..ba27e22f --- /dev/null +++ b/package/jq/jq.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# jq +# +################################################################################ + +JQ_VERSION = 1.7.1 +JQ_SITE = https://github.com/jqlang/jq/releases/download/jq-$(JQ_VERSION) +JQ_LICENSE = MIT (code), ICU (decNumber), CC-BY-3.0 (documentation) +JQ_LICENSE_FILES = COPYING +JQ_CPE_ID_VALID = YES +JQ_INSTALL_STAGING = YES + +# uses c99 specific features +JQ_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -std=c99" +HOST_JQ_CONF_ENV += CFLAGS="$(HOST_CFLAGS) -std=c99" + +HOST_JQ_CONF_OPTS += --without-oniguruma + +ifeq ($(BR2_PACKAGE_ONIGURUMA),y) +JQ_DEPENDENCIES += oniguruma +JQ_CONF_OPTS += --with-oniguruma +else +JQ_CONF_OPTS += --without-oniguruma +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/jquery-datetimepicker/Config.in b/package/jquery-datetimepicker/Config.in new file mode 100644 index 00000000..9da37188 --- /dev/null +++ b/package/jquery-datetimepicker/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_JQUERY_DATETIMEPICKER + bool "jquery-datetimepicker" + help + Use this plugin to unobtrusively add a datetimepicker, + datepicker or timepicker dropdown to your forms. + + http://xdsoft.net/jqplugins/datetimepicker diff --git a/package/jquery-datetimepicker/jquery-datetimepicker.hash b/package/jquery-datetimepicker/jquery-datetimepicker.hash new file mode 100644 index 00000000..1fbd428e --- /dev/null +++ b/package/jquery-datetimepicker/jquery-datetimepicker.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2f362a8acd149d1487a9460942f135d1037f01ee0cbfecba8c352fa2f79c34c9 jquery-datetimepicker-2.4.5.tar.gz +sha256 491add640b4678b78571d3b4c0840422b48a5b397e47e2104c1942ff1fce1a68 MIT-LICENSE.txt diff --git a/package/jquery-datetimepicker/jquery-datetimepicker.mk b/package/jquery-datetimepicker/jquery-datetimepicker.mk new file mode 100644 index 00000000..e4d47997 --- /dev/null +++ b/package/jquery-datetimepicker/jquery-datetimepicker.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# jquery-datetimepicker +# +################################################################################ + +JQUERY_DATETIMEPICKER_VERSION = 2.4.5 +JQUERY_DATETIMEPICKER_SITE = $(call github,xdan,datetimepicker,$(JQUERY_DATETIMEPICKER_VERSION)) +JQUERY_DATETIMEPICKER_LICENSE = MIT +JQUERY_DATETIMEPICKER_LICENSE_FILES = MIT-LICENSE.txt + +define JQUERY_DATETIMEPICKER_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/jquery.datetimepicker.css \ + $(TARGET_DIR)/var/www/jquery-plugins/datetimepicker/jquery.datetimepicker.css + $(INSTALL) -m 0644 -D $(@D)/jquery.datetimepicker.js \ + $(TARGET_DIR)/var/www/jquery-plugins/datetimepicker/jquery.datetimepicker.js +endef + +$(eval $(generic-package)) diff --git a/package/jquery-keyboard/Config.in b/package/jquery-keyboard/Config.in new file mode 100644 index 00000000..117c4a56 --- /dev/null +++ b/package/jquery-keyboard/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_JQUERY_KEYBOARD + bool "jquery-keyboard" + select BR2_PACKAGE_JQUERY_UI + help + Virtual Keyboard using jQuery UI + + https://github.com/Mottie/Keyboard diff --git a/package/jquery-keyboard/jquery-keyboard.hash b/package/jquery-keyboard/jquery-keyboard.hash new file mode 100644 index 00000000..a0d9d7d8 --- /dev/null +++ b/package/jquery-keyboard/jquery-keyboard.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 6a20a1cdc9367c218048125eeb6f78d775175a964b3b9b781a931b63c0f98c66 jquery-keyboard-1.18.12.tar.gz +sha256 0ad9a0e7291b45cdb5abe2a517d8b82282a816d41c9224660849792ce01fe983 README.markdown diff --git a/package/jquery-keyboard/jquery-keyboard.mk b/package/jquery-keyboard/jquery-keyboard.mk new file mode 100644 index 00000000..5066aa2c --- /dev/null +++ b/package/jquery-keyboard/jquery-keyboard.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# jquery-keyboard +# +################################################################################ + +JQUERY_KEYBOARD_VERSION = 1.18.12 +JQUERY_KEYBOARD_SITE = $(call github,Mottie,Keyboard,v$(JQUERY_KEYBOARD_VERSION)) +JQUERY_KEYBOARD_LICENSE = MIT WTFPL +JQUERY_KEYBOARD_LICENSE_FILES = README.markdown + +define JQUERY_KEYBOARD_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/css/keyboard.css \ + $(TARGET_DIR)/var/www/css/keyboard.css + $(INSTALL) -m 0644 $(@D)/js/jquery.keyboard*.js \ + $(TARGET_DIR)/var/www + $(INSTALL) -m 0644 -D $(@D)/js/jquery.mousewheel.js \ + $(TARGET_DIR)/var/www/jquery.mousewheel.js + $(INSTALL) -m 0755 -d $(TARGET_DIR)/var/www/layouts + $(INSTALL) -m 0644 $(@D)/layouts/*.js \ + $(TARGET_DIR)/var/www/layouts +endef + +$(eval $(generic-package)) diff --git a/package/jquery-mobile/Config.in b/package/jquery-mobile/Config.in new file mode 100644 index 00000000..fa31a363 --- /dev/null +++ b/package/jquery-mobile/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_JQUERY_MOBILE + bool "jquery-mobile" + help + jQuery-Mobile is a unified, HTML5-based user interface + system for all popular mobile device platforms, built on the + rock-solid jQuery and jQuery UI foundation. Its lightweight + code is built with progressive enhancement, and has a + flexible, easily themeable design. + + http://jquerymobile.com + +if BR2_PACKAGE_JQUERY_MOBILE + +config BR2_PACKAGE_JQUERY_MOBILE_FULL + bool "jquery-mobile development files" + help + Installs the development versions. + +config BR2_PACKAGE_JQUERY_MOBILE_DEMOS + bool "jquery-mobile demo files" + help + Installs the demo files. + The main demo page is http://hostname/demos/index.html + +endif diff --git a/package/jquery-mobile/jquery-mobile.hash b/package/jquery-mobile/jquery-mobile.hash new file mode 100644 index 00000000..3dfaa07a --- /dev/null +++ b/package/jquery-mobile/jquery-mobile.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 7ed156b191dc3e262e3f450aede43adfb738ff0085afed87eb18fe4f43dfc681 jquery.mobile-1.4.3.zip diff --git a/package/jquery-mobile/jquery-mobile.mk b/package/jquery-mobile/jquery-mobile.mk new file mode 100644 index 00000000..1171e60d --- /dev/null +++ b/package/jquery-mobile/jquery-mobile.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# jquery-mobile +# +################################################################################ + +JQUERY_MOBILE_VERSION = 1.4.3 +JQUERY_MOBILE_SITE = http://jquerymobile.com/resources/download +JQUERY_MOBILE_SOURCE = jquery.mobile-$(JQUERY_MOBILE_VERSION).zip +JQUERY_MOBILE_LICENSE = MIT + +define JQUERY_MOBILE_EXTRACT_CMDS + $(UNZIP) -d $(@D) $(JQUERY_MOBILE_DL_DIR)/$(JQUERY_MOBILE_SOURCE) +endef + +JQUERY_MOBILE_INSTALLED_FILES = \ + jquery.mobile.structure-$(JQUERY_MOBILE_VERSION).min.css \ + jquery.mobile.theme-$(JQUERY_MOBILE_VERSION).min.css \ + jquery.mobile-$(JQUERY_MOBILE_VERSION).min.css \ + jquery.mobile-$(JQUERY_MOBILE_VERSION).min.map \ + jquery.mobile-$(JQUERY_MOBILE_VERSION).min.js + +ifeq ($(BR2_PACKAGE_JQUERY_MOBILE_FULL),y) +JQUERY_MOBILE_INSTALLED_FILES += \ + jquery.mobile.structure-$(JQUERY_MOBILE_VERSION).css \ + jquery.mobile.theme-$(JQUERY_MOBILE_VERSION).css \ + jquery.mobile-$(JQUERY_MOBILE_VERSION).css \ + jquery.mobile-$(JQUERY_MOBILE_VERSION).js +endif + +ifeq ($(BR2_PACKAGE_JQUERY_MOBILE_DEMOS),y) +define JQUERY_MOBILE_INSTALL_DEMOS + mkdir -p $(TARGET_DIR)/var/www/demos + cp -r $(@D)/demos/* $(TARGET_DIR)/var/www/demos +endef +endif + +define JQUERY_MOBILE_INSTALL_TARGET_CMDS + for f in $(JQUERY_MOBILE_INSTALLED_FILES) ; do \ + $(INSTALL) -m 0644 -D $(@D)/$$f $(TARGET_DIR)/var/www/$$f || break ; \ + done + mkdir -p $(TARGET_DIR)/var/www/images + cp -r $(@D)/images/* $(TARGET_DIR)/var/www/images + $(JQUERY_MOBILE_INSTALL_DEMOS) +endef + +$(eval $(generic-package)) diff --git a/package/jquery-sidebar/Config.in b/package/jquery-sidebar/Config.in new file mode 100644 index 00000000..324a20c2 --- /dev/null +++ b/package/jquery-sidebar/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_JQUERY_SIDEBAR + bool "jquery-sidebar" + help + A stupid simple sidebar jQuery plugin. + + http://jillix.github.io/jQuery-sidebar/ diff --git a/package/jquery-sidebar/jquery-sidebar.hash b/package/jquery-sidebar/jquery-sidebar.hash new file mode 100644 index 00000000..5d336fee --- /dev/null +++ b/package/jquery-sidebar/jquery-sidebar.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 c96e46439a87555f2200442f597cce64f21f81f94d7601ddfc3b837913ddb42f jquery-sidebar-3.3.2.tar.gz +sha256 f3522370f4b6accf9c1344f520bdea35f2388f1cbb124c0c179d2ca2a6a94c76 LICENSE diff --git a/package/jquery-sidebar/jquery-sidebar.mk b/package/jquery-sidebar/jquery-sidebar.mk new file mode 100644 index 00000000..7af3667b --- /dev/null +++ b/package/jquery-sidebar/jquery-sidebar.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# jquery-sidebar +# +################################################################################ + +JQUERY_SIDEBAR_VERSION = 3.3.2 +JQUERY_SIDEBAR_SITE = $(call github,jillix,jQuery-sidebar,$(JQUERY_SIDEBAR_VERSION)) +JQUERY_SIDEBAR_LICENSE = MIT +JQUERY_SIDEBAR_LICENSE_FILES = LICENSE + +define JQUERY_SIDEBAR_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/src/jquery.sidebar.min.js \ + $(TARGET_DIR)/var/www/jquery-plugins/sidebar/jquery.sidebar.min.js +endef + +$(eval $(generic-package)) diff --git a/package/jquery-sparkline/Config.in b/package/jquery-sparkline/Config.in new file mode 100644 index 00000000..1741a294 --- /dev/null +++ b/package/jquery-sparkline/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_JQUERY_SPARKLINE + bool "jquery-sparkline" + help + This jQuery plugin generates sparklines (small inline + charts) directly in the browser using data supplied either + inline in the HTML, or via javascript. + + The plugin is compatible with most modern browsers and has + been tested with Firefox 2+, Safari 3+, Opera 9, Google + Chrome and Internet Explorer 6, 7 & 8. + + http://www.omnipotent.net/jquery.sparkline/ diff --git a/package/jquery-sparkline/jquery-sparkline.hash b/package/jquery-sparkline/jquery-sparkline.hash new file mode 100644 index 00000000..d8088bce --- /dev/null +++ b/package/jquery-sparkline/jquery-sparkline.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 06e0242da172ab85985db3774c54ac1b53391a5b447857a100c5118b8281a543 jquery.sparkline.min.js diff --git a/package/jquery-sparkline/jquery-sparkline.mk b/package/jquery-sparkline/jquery-sparkline.mk new file mode 100644 index 00000000..683d84f4 --- /dev/null +++ b/package/jquery-sparkline/jquery-sparkline.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# jquery-sparkline +# +################################################################################ + +JQUERY_SPARKLINE_VERSION = 2.1.2 +JQUERY_SPARKLINE_SITE = http://www.omnipotent.net/jquery.sparkline/$(JQUERY_SPARKLINE_VERSION) +JQUERY_SPARKLINE_SOURCE = jquery.sparkline.min.js +JQUERY_SPARKLINE_LICENSE = BSD-3-Clause + +define JQUERY_SPARKLINE_EXTRACT_CMDS + cp $(JQUERY_SPARKLINE_DL_DIR)/$(JQUERY_SPARKLINE_SOURCE) $(@D) +endef + +define JQUERY_SPARKLINE_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/$(JQUERY_SPARKLINE_SOURCE) \ + $(TARGET_DIR)/var/www/jquery.sparkline.js +endef + +$(eval $(generic-package)) diff --git a/package/jquery-ui-themes/Config.in b/package/jquery-ui-themes/Config.in new file mode 100644 index 00000000..b372d40b --- /dev/null +++ b/package/jquery-ui-themes/Config.in @@ -0,0 +1,117 @@ +config BR2_PACKAGE_JQUERY_UI_THEMES + bool "jquery-ui-themes" + depends on BR2_PACKAGE_JQUERY_UI + help + Themes for jQuery UI. + + http://jqueryui.com/ + +if BR2_PACKAGE_JQUERY_UI_THEMES + +choice + prompt "theme to install" + help + Specify the jQuery UI theme to install. + +config BR2_PACKAGE_JQUERY_UI_THEMES_BLACK_TIE + bool "black-tie" + +config BR2_PACKAGE_JQUERY_UI_THEMES_BLITZER + bool "blitzer" + +config BR2_PACKAGE_JQUERY_UI_THEMES_CUPERTINO + bool "cupertino" + +config BR2_PACKAGE_JQUERY_UI_THEMES_DARK_HIVE + bool "dark-hive" + +config BR2_PACKAGE_JQUERY_UI_THEMES_DOT_LUV + bool "dot-luv" + +config BR2_PACKAGE_JQUERY_UI_THEMES_EGGPLANT + bool "eggplant" + +config BR2_PACKAGE_JQUERY_UI_THEMES_EXCITE_BIKE + bool "excite-bike" + +config BR2_PACKAGE_JQUERY_UI_THEMES_FLICK + bool "flick" + +config BR2_PACKAGE_JQUERY_UI_THEMES_HOT_SNEAKS + bool "hot-sneaks" + +config BR2_PACKAGE_JQUERY_UI_THEMES_HUMANITY + bool "humanity" + +config BR2_PACKAGE_JQUERY_UI_THEMES_LE_FROG + bool "le-frog" + +config BR2_PACKAGE_JQUERY_UI_THEMES_MINT_CHOC + bool "mint-choc" + +config BR2_PACKAGE_JQUERY_UI_THEMES_OVERCAST + bool "overcast" + +config BR2_PACKAGE_JQUERY_UI_THEMES_PEPPER_GRINDER + bool "pepper-grinder" + +config BR2_PACKAGE_JQUERY_UI_THEMES_REDMOND + bool "redmond" + +config BR2_PACKAGE_JQUERY_UI_THEMES_SMOOTHNESS + bool "smoothness" + +config BR2_PACKAGE_JQUERY_UI_THEMES_SOUTH_STREET + bool "south-street" + +config BR2_PACKAGE_JQUERY_UI_THEMES_START + bool "start" + +config BR2_PACKAGE_JQUERY_UI_THEMES_SUNNY + bool "sunny" + +config BR2_PACKAGE_JQUERY_UI_THEMES_SWANKY_PURSE + bool "swanky-purse" + +config BR2_PACKAGE_JQUERY_UI_THEMES_TRONTASTIC + bool "trontastic" + +config BR2_PACKAGE_JQUERY_UI_THEMES_UI_DARKNESS + bool "ui-darkness" + +config BR2_PACKAGE_JQUERY_UI_THEMES_UI_LIGHTNESS + bool "ui-lightness" + +config BR2_PACKAGE_JQUERY_UI_THEMES_VADER + bool "vader" + +endchoice + +config BR2_PACKAGE_JQUERY_UI_THEMES_THEME + string + default "black-tie" if BR2_PACKAGE_JQUERY_UI_THEMES_BLACK_TIE + default "blitzer" if BR2_PACKAGE_JQUERY_UI_THEMES_BLITZER + default "cupertino" if BR2_PACKAGE_JQUERY_UI_THEMES_CUPERTINO + default "dark-hive" if BR2_PACKAGE_JQUERY_UI_THEMES_DARK_HIVE + default "dot-luv" if BR2_PACKAGE_JQUERY_UI_THEMES_DOT_LUV + default "eggplant" if BR2_PACKAGE_JQUERY_UI_THEMES_EGGPLANT + default "excite-bike" if BR2_PACKAGE_JQUERY_UI_THEMES_EXCITE_BIKE + default "flick" if BR2_PACKAGE_JQUERY_UI_THEMES_FLICK + default "hot-sneaks" if BR2_PACKAGE_JQUERY_UI_THEMES_HOT_SNEAKS + default "humanity" if BR2_PACKAGE_JQUERY_UI_THEMES_HUMANITY + default "le-frog" if BR2_PACKAGE_JQUERY_UI_THEMES_LE_FROG + default "mint-choc" if BR2_PACKAGE_JQUERY_UI_THEMES_MINT_CHOC + default "overcast" if BR2_PACKAGE_JQUERY_UI_THEMES_OVERCAST + default "pepper-grinder" if BR2_PACKAGE_JQUERY_UI_THEMES_PEPPER_GRINDER + default "redmond" if BR2_PACKAGE_JQUERY_UI_THEMES_REDMOND + default "smoothness" if BR2_PACKAGE_JQUERY_UI_THEMES_SMOOTHNESS + default "south-street" if BR2_PACKAGE_JQUERY_UI_THEMES_SOUTH_STREET + default "start" if BR2_PACKAGE_JQUERY_UI_THEMES_START + default "sunny" if BR2_PACKAGE_JQUERY_UI_THEMES_SUNNY + default "swanky-purse" if BR2_PACKAGE_JQUERY_UI_THEMES_SWANKY_PURSE + default "trontastic" if BR2_PACKAGE_JQUERY_UI_THEMES_TRONTASTIC + default "ui-darkness" if BR2_PACKAGE_JQUERY_UI_THEMES_UI_DARKNESS + default "ui-lightness" if BR2_PACKAGE_JQUERY_UI_THEMES_UI_LIGHTNESS + default "vader" if BR2_PACKAGE_JQUERY_UI_THEMES_VADER + +endif diff --git a/package/jquery-ui-themes/jquery-ui-themes.hash b/package/jquery-ui-themes/jquery-ui-themes.hash new file mode 100644 index 00000000..5f662dad --- /dev/null +++ b/package/jquery-ui-themes/jquery-ui-themes.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 90467a83abcb8d2471b0d53d21b4c09e2cf686d5350e10a6e84fa3f3616a840f jquery-ui-themes-1.10.4.zip +sha256 ef1fdd608b20fbea7ef269ed03bd24e637717cc193971798a394bf2fa983cd53 MIT-LICENSE.txt diff --git a/package/jquery-ui-themes/jquery-ui-themes.mk b/package/jquery-ui-themes/jquery-ui-themes.mk new file mode 100644 index 00000000..5108389a --- /dev/null +++ b/package/jquery-ui-themes/jquery-ui-themes.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# jquery-ui-themes +# +################################################################################ + +JQUERY_UI_THEMES_VERSION = 1.10.4 +JQUERY_UI_THEMES_SITE = http://jqueryui.com/resources/download +JQUERY_UI_THEMES_SOURCE = jquery-ui-themes-$(JQUERY_UI_THEMES_VERSION).zip +JQUERY_UI_THEMES_LICENSE = MIT +JQUERY_UI_THEMES_LICENSE_FILES = MIT-LICENSE.txt +JQUERY_UI_THEMES_DEPENDENCIES = jquery-ui + +define JQUERY_UI_THEMES_EXTRACT_CMDS + $(UNZIP) -d $(@D) $(JQUERY_UI_THEMES_DL_DIR)/$(JQUERY_UI_THEMES_SOURCE) + mv $(@D)/jquery-ui-themes-$(JQUERY_UI_THEMES_VERSION)/* $(@D) + $(RM) -r $(@D)/jquery-ui-themes-$(JQUERY_UI_THEMES_VERSION) +endef + +define JQUERY_UI_THEMES_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D \ + $(@D)/themes/$(call qstrip,$(BR2_PACKAGE_JQUERY_UI_THEMES_THEME))/jquery-ui.css \ + $(TARGET_DIR)/var/www/jquery-ui.css + $(INSTALL) -d $(TARGET_DIR)/var/www/images + cp -a $(@D)/themes/$(call qstrip,$(BR2_PACKAGE_JQUERY_UI_THEMES_THEME))/images/*.png \ + $(TARGET_DIR)/var/www/images + chmod 0644 $(TARGET_DIR)/var/www/images/*.png +endef + +$(eval $(generic-package)) diff --git a/package/jquery-ui/Config.in b/package/jquery-ui/Config.in new file mode 100644 index 00000000..fd38997e --- /dev/null +++ b/package/jquery-ui/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_JQUERY_UI + bool "jquery-ui" + help + jQuery UI provides abstractions for low-level interaction and + animation, advanced effects and high-level, themeable widgets, + built on top of the jQuery JavaScript Library, that you can + use to build highly interactive web applications. + + http://jqueryui.com/ diff --git a/package/jquery-ui/jquery-ui.hash b/package/jquery-ui/jquery-ui.hash new file mode 100644 index 00000000..92bb5312 --- /dev/null +++ b/package/jquery-ui/jquery-ui.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 5f063f91df85431e3fea84f5d5709726d6dcd15ee4bf86b0e9a4b134912a5efd jquery-ui-1.13.1.zip +sha256 de33fb695880d0b07615d4b86f78cd43796906959ade5fdfef70968827a0db78 LICENSE.txt diff --git a/package/jquery-ui/jquery-ui.mk b/package/jquery-ui/jquery-ui.mk new file mode 100644 index 00000000..98d150bb --- /dev/null +++ b/package/jquery-ui/jquery-ui.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# jquery-ui +# +################################################################################ + +JQUERY_UI_VERSION = 1.13.1 +JQUERY_UI_SITE = https://jqueryui.com/resources/download +JQUERY_UI_SOURCE = jquery-ui-$(JQUERY_UI_VERSION).zip +JQUERY_UI_LICENSE = MIT +JQUERY_UI_LICENSE_FILES = LICENSE.txt + +define JQUERY_UI_EXTRACT_CMDS + $(UNZIP) -d $(@D) $(JQUERY_UI_DL_DIR)/$(JQUERY_UI_SOURCE) + mv $(@D)/jquery-ui-$(JQUERY_UI_VERSION)/* $(@D) + $(RM) -r $(@D)/jquery-ui-$(JQUERY_UI_VERSION) +endef + +define JQUERY_UI_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/jquery-ui.min.js \ + $(TARGET_DIR)/var/www/jquery-ui.js + $(INSTALL) -m 0644 -D $(@D)/jquery-ui.min.css \ + $(TARGET_DIR)/var/www/jquery-ui.css + $(INSTALL) -d $(TARGET_DIR)/var/www/images + $(INSTALL) -m 0644 -t $(TARGET_DIR)/var/www/images \ + $(@D)/images/*.png +endef + +$(eval $(generic-package)) diff --git a/package/jquery-validation/Config.in b/package/jquery-validation/Config.in new file mode 100644 index 00000000..39e898e8 --- /dev/null +++ b/package/jquery-validation/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_JQUERY_VALIDATION + bool "jquery-validation" + help + The jQuery Validation Plugin provides drop-in validation for + your existing forms, while making all kinds of + customizations to fit your application really easy. + + http://jqueryvalidation.org/ diff --git a/package/jquery-validation/jquery-validation.hash b/package/jquery-validation/jquery-validation.hash new file mode 100644 index 00000000..31ecd62b --- /dev/null +++ b/package/jquery-validation/jquery-validation.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 52381e080f266f8bca1a17acd6a4a68be4c2606a8b16f8a12e597cc69f2c0584 jquery-validation-1.19.5.zip +sha256 f398878cab338b869638bdac1aeae76bf3ac11b2b89da6e0b68bc1a645733440 LICENSE.md diff --git a/package/jquery-validation/jquery-validation.mk b/package/jquery-validation/jquery-validation.mk new file mode 100644 index 00000000..1ed37ee7 --- /dev/null +++ b/package/jquery-validation/jquery-validation.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# jquery-validation +# +################################################################################ + +JQUERY_VALIDATION_VERSION = 1.19.5 +JQUERY_VALIDATION_SITE = https://github.com/jquery-validation/jquery-validation/releases/download/$(JQUERY_VALIDATION_VERSION) +JQUERY_VALIDATION_SOURCE = jquery-validation-$(JQUERY_VALIDATION_VERSION).zip +JQUERY_VALIDATION_LICENSE = MIT +JQUERY_VALIDATION_LICENSE_FILES = LICENSE.md +JQUERY_VALIDATION_CPE_ID_VENDOR = jqueryvalidation +JQUERY_VALIDATION_CPE_ID_PRODUCT = jquery_validation + +define JQUERY_VALIDATION_EXTRACT_CMDS + $(UNZIP) -d $(@D) $(JQUERY_VALIDATION_DL_DIR)/$(JQUERY_VALIDATION_SOURCE) +endef + +define JQUERY_VALIDATION_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/dist/jquery.validate.min.js \ + $(TARGET_DIR)/var/www/jquery.validate.js +endef + +$(eval $(generic-package)) diff --git a/package/jquery/Config.in b/package/jquery/Config.in new file mode 100644 index 00000000..92f56042 --- /dev/null +++ b/package/jquery/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_JQUERY + bool "jQuery" + help + jQuery is a fast and concise JavaScript Library that + simplifies HTML document traversing, event handling, + animating, and Ajax interactions for rapid web development. + + http://jquery.com diff --git a/package/jquery/jquery.hash b/package/jquery/jquery.hash new file mode 100644 index 00000000..173eb95f --- /dev/null +++ b/package/jquery/jquery.hash @@ -0,0 +1,2 @@ +# Locally computed hashes, not provided by upstream +sha256 f7f6a5894f1d19ddad6fa392b2ece2c5e578cbf7da4ea805b6885eb6985b6e3d jquery-3.5.1.min.js diff --git a/package/jquery/jquery.mk b/package/jquery/jquery.mk new file mode 100644 index 00000000..8febed36 --- /dev/null +++ b/package/jquery/jquery.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# jquery +# +################################################################################ + +JQUERY_VERSION = 3.5.1 +JQUERY_SITE = http://code.jquery.com +JQUERY_SOURCE = jquery-$(JQUERY_VERSION).min.js +JQUERY_LICENSE = MIT +JQUERY_CPE_ID_VENDOR = jquery + +define JQUERY_EXTRACT_CMDS + cp $(JQUERY_DL_DIR)/$(JQUERY_SOURCE) $(@D) +endef + +define JQUERY_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/$(JQUERY_SOURCE) \ + $(TARGET_DIR)/var/www/jquery.js +endef + +$(eval $(generic-package)) diff --git a/package/jsmin/Config.in b/package/jsmin/Config.in new file mode 100644 index 00000000..d0948b89 --- /dev/null +++ b/package/jsmin/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_JSMIN + bool "jsmin" + help + JSMin is a filter which removes comments and unnecessary + whitespace from JavaScript files. It typically reduces + filesize by half, resulting in faster downloads. It also + encourages a more expressive programming style because it + eliminates the download cost of clean, literate + self-documentation. + + http://www.crockford.com/javascript/jsmin.html diff --git a/package/jsmin/Config.in.host b/package/jsmin/Config.in.host new file mode 100644 index 00000000..25ec9bb8 --- /dev/null +++ b/package/jsmin/Config.in.host @@ -0,0 +1,11 @@ +config BR2_PACKAGE_HOST_JSMIN + bool "host jsmin" + help + JSMin is a filter which removes comments and unnecessary + whitespace from JavaScript files. It typically reduces + filesize by half, resulting in faster downloads. It also + encourages a more expressive programming style because it + eliminates the download cost of clean, literate + self-documentation. + + http://www.crockford.com/javascript/jsmin.html diff --git a/package/jsmin/jsmin.hash b/package/jsmin/jsmin.hash new file mode 100644 index 00000000..cc449055 --- /dev/null +++ b/package/jsmin/jsmin.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 aae127bf7291a7b2592f36599e5ed6c6423eac7abe0cd5992f82d6d46fe9ed2d jsmin-1bf6ce5f74a9f8752ac7f5d115b8d7ccb31cfe1b.tar.gz +sha256 b420f61778af09534adc836a5086f5625b8499124051c50baefa218e7c03a58c jsmin.c diff --git a/package/jsmin/jsmin.mk b/package/jsmin/jsmin.mk new file mode 100644 index 00000000..84c39a7b --- /dev/null +++ b/package/jsmin/jsmin.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# jsmin +# +################################################################################ + +JSMIN_VERSION = 1bf6ce5f74a9f8752ac7f5d115b8d7ccb31cfe1b +JSMIN_SITE = $(call github,douglascrockford,JSMin,$(JSMIN_VERSION)) +JSMIN_LICENSE = MIT +JSMIN_LICENSE_FILES = jsmin.c + +define JSMIN_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) jsmin +endef + +define JSMIN_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/jsmin $(TARGET_DIR)/usr/bin/jsmin +endef + +define HOST_JSMIN_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) jsmin +endef + +define HOST_JSMIN_INSTALL_CMDS + $(INSTALL) -m 0755 -D $(@D)/jsmin $(HOST_DIR)/bin/jsmin +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/jsmn/Config.in b/package/jsmn/Config.in new file mode 100644 index 00000000..ab142732 --- /dev/null +++ b/package/jsmn/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_JSMN + bool "jsmn" + help + jsmn (pronounced like 'jasmine') is a minimalistic JSON + parser in C. It can be easily integrated into + resource-limited or embedded projects. + + https://github.com/zserge/jsmn/ diff --git a/package/jsmn/jsmn.hash b/package/jsmn/jsmn.hash new file mode 100644 index 00000000..7eaf6800 --- /dev/null +++ b/package/jsmn/jsmn.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 5f0913a10657fe7ec8d5794ccf00a01000e3e1f2f1e1f143c34a0f7b47edcb38 jsmn-1.1.0.tar.gz +sha256 4675b94a50d2afe811c52785463c854f1156056632cce17cc7133939eac8ed55 LICENSE diff --git a/package/jsmn/jsmn.mk b/package/jsmn/jsmn.mk new file mode 100644 index 00000000..750e8cf8 --- /dev/null +++ b/package/jsmn/jsmn.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# jsmn +# +################################################################################ + +JSMN_VERSION = 1.1.0 +JSMN_SITE = $(call github,zserge,jsmn,v$(JSMN_VERSION)) +JSMN_LICENSE = MIT +JSMN_LICENSE_FILES = LICENSE +# single-header, header-only library +JSMN_INSTALL_STAGING = YES +JSMN_INSTALL_TARGET = NO + +define JSMN_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0644 $(@D)/jsmn.h $(STAGING_DIR)/usr/include/jsmn.h +endef + +$(eval $(generic-package)) diff --git a/package/json-c/0001-json_pointer.c-initialize-idx.patch b/package/json-c/0001-json_pointer.c-initialize-idx.patch new file mode 100644 index 00000000..3dbe0b40 --- /dev/null +++ b/package/json-c/0001-json_pointer.c-initialize-idx.patch @@ -0,0 +1,37 @@ +From 7ff7eab603611c65b3110dcb1b0caf5cc68b07a3 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 8 Nov 2023 22:42:48 +0100 +Subject: [PATCH] json_pointer.c: initialize idx + +Fix the following build failure with gcc 5: + +/home/thomas/autobuild/instance-2/output-1/build/json-c-0.17/json_pointer.c: In function 'json_pointer_result_get_recursive': +/home/thomas/autobuild/instance-2/output-1/build/json-c-0.17/json_pointer.c:193:25: error: 'idx' may be used uninitialized in this function [-Werror=maybe-uninitialized] + res->index_in_parent = idx; + ^ + +Fixes: + - http://autobuild.buildroot.org/results/523b35a979d59121fe4e18c38171792b06233940/ + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/json-c/json-c/pull/839 +--- + json_pointer.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/json_pointer.c b/json_pointer.c +index 89e9e21..0ac8aaa 100644 +--- a/json_pointer.c ++++ b/json_pointer.c +@@ -158,7 +158,7 @@ static int json_pointer_result_get_recursive(struct json_object *obj, char *path + struct json_pointer_get_result *res) + { + struct json_object *parent_obj = obj; +- size_t idx; ++ size_t idx = 0; + char *endp; + int rc; + +-- +2.42.0 + diff --git a/package/json-c/Config.in b/package/json-c/Config.in new file mode 100644 index 00000000..4df44a96 --- /dev/null +++ b/package/json-c/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_JSON_C + bool "json-c" + # uses __sync_val_compare_and_swap_4 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + help + JSON-C - A JSON implementation in C + + JSON-C implements a reference counting object model that + allows you to easily construct JSON objects in C, output + them as JSON formatted strings and parse JSON formatted + strings back into the C representation of JSON objects. + + https://github.com/json-c/json-c/ diff --git a/package/json-c/json-c.hash b/package/json-c/json-c.hash new file mode 100644 index 00000000..c9bb8c70 --- /dev/null +++ b/package/json-c/json-c.hash @@ -0,0 +1,4 @@ +# From https://github.com/json-c/json-c/wiki +sha256 7550914d58fb63b2c3546f3ccfbe11f1c094147bd31a69dcd23714d7956159e6 json-c-0.17.tar.gz +# Locally calculated +sha256 74c1e6ca5eba76b54d0ad00d4815c8315c1b3bc45ff99de61d103dc92486284c COPYING diff --git a/package/json-c/json-c.mk b/package/json-c/json-c.mk new file mode 100644 index 00000000..68401433 --- /dev/null +++ b/package/json-c/json-c.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# json-c +# +################################################################################ + +JSON_C_VERSION = 0.17 +JSON_C_SITE = https://s3.amazonaws.com/json-c_releases/releases +JSON_C_INSTALL_STAGING = YES +JSON_C_LICENSE = MIT +JSON_C_LICENSE_FILES = COPYING +JSON_C_CPE_ID_VENDOR = json-c +JSON_C_CONF_OPTS = -DBUILD_APPS=OFF -DDISABLE_EXTRA_LIBS=ON + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/json-for-modern-cpp/Config.in b/package/json-for-modern-cpp/Config.in new file mode 100644 index 00000000..b045cba6 --- /dev/null +++ b/package/json-for-modern-cpp/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_JSON_FOR_MODERN_CPP + bool "json-for-modern-cpp" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + depends on BR2_INSTALL_LIBSTDCPP + help + Json for modern c++ has the following desing goals in mind: + + - Intuitive syntax. In languages such as Python, JSON feels + like a first class data type. All the operator magic of + modern C++ is used to achieve the same feeling in c++. + + - Trivial integration. The whole code consists of a single + header file json.hpp. That's it. No library, no + subproject, no dependencies, no complex build system. The + class is written in vanilla C++11. All in all, everything + should require no adjustment of compiler flags or project + settings. + + - Serious testing. The class is heavily unit-tested and + covers 100% of the code, including all exceptional + behavior. Furthermore, it is checked with Valgrind that + there are no memory leaks. To maintain high quality, the + project is following the Core Infrastructure Initiative + (CII) best practices. + + https://github.com/nlohmann/json + +comment "json-for-modern-cpp needs a toolchain w/ C++, gcc >= 4.9" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/json-for-modern-cpp/json-for-modern-cpp.hash b/package/json-for-modern-cpp/json-for-modern-cpp.hash new file mode 100644 index 00000000..1f0e5efd --- /dev/null +++ b/package/json-for-modern-cpp/json-for-modern-cpp.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 0d8ef5af7f9794e3263480193c491549b2ba6cc74bb018906202ada498a79406 json-3.11.3.tar.gz +sha256 86b998c792894ccb911a1cb7994f7a9652894e7a094c0b5e45be2f553f45cf14 LICENSE.MIT diff --git a/package/json-for-modern-cpp/json-for-modern-cpp.mk b/package/json-for-modern-cpp/json-for-modern-cpp.mk new file mode 100644 index 00000000..345280b3 --- /dev/null +++ b/package/json-for-modern-cpp/json-for-modern-cpp.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# json-for-modern-cpp +# +################################################################################ + +JSON_FOR_MODERN_CPP_VERSION = 3.11.3 +JSON_FOR_MODERN_CPP_SOURCE = json-$(JSON_FOR_MODERN_CPP_VERSION).tar.gz +JSON_FOR_MODERN_CPP_SITE = $(call github,nlohmann,json,v$(JSON_FOR_MODERN_CPP_VERSION)) +JSON_FOR_MODERN_CPP_LICENSE = MIT +JSON_FOR_MODERN_CPP_LICENSE_FILES = LICENSE.MIT +JSON_FOR_MODERN_CPP_CPE_ID_VALID = YES + +JSON_FOR_MODERN_CPP_INSTALL_STAGING = YES +# header only library +JSON_FOR_MODERN_CPP_INSTALL_TARGET = NO +JSON_FOR_MODERN_CPP_CONF_OPTS = -DJSON_BuildTests=OFF -DJSON_MultipleHeaders=ON + +$(eval $(cmake-package)) diff --git a/package/json-glib/Config.in b/package/json-glib/Config.in new file mode 100644 index 00000000..9df03d92 --- /dev/null +++ b/package/json-glib/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_JSON_GLIB + bool "json-glib" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + help + JSON-GLib is a library providing serialization and + deserialization support for the JavaScript Object Notation + (JSON) format described by RFC 4627. + + https://live.gnome.org/JsonGlib/ + +comment "json-glib needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/json-glib/json-glib.hash b/package/json-glib/json-glib.hash new file mode 100644 index 00000000..b78d7083 --- /dev/null +++ b/package/json-glib/json-glib.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/json-glib/1.8/json-glib-1.8.0.sha256sum +sha256 97ef5eb92ca811039ad50a65f06633f1aae64792789307be7170795d8b319454 json-glib-1.8.0.tar.xz + +# Hash for license file: +sha256 a190dc9c8043755d90f8b0a75fa66b9e42d4af4c980bf5ddc633f0124db3cee7 COPYING diff --git a/package/json-glib/json-glib.mk b/package/json-glib/json-glib.mk new file mode 100644 index 00000000..e216af20 --- /dev/null +++ b/package/json-glib/json-glib.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# json-glib +# +################################################################################ + +JSON_GLIB_VERSION_MAJOR = 1.8 +JSON_GLIB_VERSION = $(JSON_GLIB_VERSION_MAJOR).0 +JSON_GLIB_SITE = https://download.gnome.org/sources/json-glib/$(JSON_GLIB_VERSION_MAJOR) +JSON_GLIB_SOURCE = json-glib-$(JSON_GLIB_VERSION).tar.xz +JSON_GLIB_LICENSE = LGPL-2.1+ +JSON_GLIB_LICENSE_FILES = COPYING +JSON_GLIB_INSTALL_STAGING = YES +JSON_GLIB_CONF_OPTS = -Dgtk_doc=disabled -Dtests=false + +JSON_GLIB_DEPENDENCIES = \ + $(TARGET_NLS_DEPENDENCIES) \ + host-pkgconf \ + libglib2 + +HOST_JSON_GLIB_DEPENDENCIES = \ + host-pkgconf \ + host-libglib2 + +HOST_JSON_GLIB_CONF_OPTS = \ + -Dgtk_doc=disabled \ + -Dtests=false \ + -Dintrospection=disabled + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +JSON_GLIB_CONF_OPTS += -Dintrospection=enabled +JSON_GLIB_DEPENDENCIES += gobject-introspection +else +JSON_GLIB_CONF_OPTS += -Dintrospection=disabled +endif + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +JSON_GLIB_CONF_OPTS += -Dnls=enabled +else +JSON_GLIB_CONF_OPTS += -Dnls=disabled +endif + +JSON_GLIB_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) + +$(eval $(meson-package)) +$(eval $(host-meson-package)) diff --git a/package/json-javascript/Config.in b/package/json-javascript/Config.in new file mode 100644 index 00000000..501c54f3 --- /dev/null +++ b/package/json-javascript/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_JSON_JAVASCRIPT + bool "json-javascript" + help + JSON in JavaScript + + https://github.com/douglascrockford/JSON-js/ diff --git a/package/json-javascript/json-javascript.hash b/package/json-javascript/json-javascript.hash new file mode 100644 index 00000000..9522fee9 --- /dev/null +++ b/package/json-javascript/json-javascript.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1a9dd4429e4bb4929dcb438f9591a3625bc8cc161f840b5f843d8b1d2c8dcfe5 json-javascript-3d7767b6b1f3da363c625ff54e63bbf20e9e83ac.tar.gz +sha256 925947d3d711c4441a9db20f51215fbf5c119d2a3b51cadb2c9031907d8014b5 json2.js diff --git a/package/json-javascript/json-javascript.mk b/package/json-javascript/json-javascript.mk new file mode 100644 index 00000000..c15b5319 --- /dev/null +++ b/package/json-javascript/json-javascript.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# json-javascript +# +################################################################################ + +JSON_JAVASCRIPT_VERSION = 3d7767b6b1f3da363c625ff54e63bbf20e9e83ac +JSON_JAVASCRIPT_SITE = $(call github,douglascrockford,JSON-js,$(JSON_JAVASCRIPT_VERSION)) +JSON_JAVASCRIPT_LICENSE = Public Domain +JSON_JAVASCRIPT_LICENSE_FILES = json2.js + +define JSON_JAVASCRIPT_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/json2.js $(TARGET_DIR)/var/www/json2.js +endef + +$(eval $(generic-package)) diff --git a/package/jsoncpp/Config.in b/package/jsoncpp/Config.in new file mode 100644 index 00000000..a6c6b919 --- /dev/null +++ b/package/jsoncpp/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_JSONCPP + bool "jsoncpp" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11 + depends on BR2_INSTALL_LIBSTDCPP + help + JsonCpp is a C++ library that allows manipulating JSON + values, including serialization and deserialization to and + from strings. It can also preserve existing comment in + unserialization/serialization steps, making it a convenient + format to store user input files. + + https://github.com/open-source-parsers/jsoncpp + +comment "jsoncpp needs a toolchain w/ C++, gcc >= 4.7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 diff --git a/package/jsoncpp/jsoncpp.hash b/package/jsoncpp/jsoncpp.hash new file mode 100644 index 00000000..99266ae4 --- /dev/null +++ b/package/jsoncpp/jsoncpp.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 f409856e5920c18d0c2fb85276e24ee607d2a09b5e7d5f0a371368903c275da2 jsoncpp-1.9.5.tar.gz +sha256 cec0db5f6d7ed6b3a72647bd50aed02e13c3377fd44382b96dc2915534c042ad LICENSE diff --git a/package/jsoncpp/jsoncpp.mk b/package/jsoncpp/jsoncpp.mk new file mode 100644 index 00000000..5ef62bef --- /dev/null +++ b/package/jsoncpp/jsoncpp.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# jsoncpp +# +################################################################################ + +JSONCPP_VERSION = 1.9.5 +JSONCPP_SITE = $(call github,open-source-parsers,jsoncpp,$(JSONCPP_VERSION)) +JSONCPP_LICENSE = Public Domain or MIT +JSONCPP_LICENSE_FILES = LICENSE +JSONCPP_CPE_ID_VALID = YES +JSONCPP_INSTALL_STAGING = YES +JSONCPP_CONF_OPTS = -Dtests=false + +$(eval $(meson-package)) diff --git a/package/jszip/Config.in b/package/jszip/Config.in new file mode 100644 index 00000000..455891ab --- /dev/null +++ b/package/jszip/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_JSZIP + bool "jszip" + help + JSZip is a javascript library for creating, reading and + editing .zip files, with a lovely and simple API. + + https://stuk.github.io/jszip diff --git a/package/jszip/jszip.hash b/package/jszip/jszip.hash new file mode 100644 index 00000000..e90e9cc6 --- /dev/null +++ b/package/jszip/jszip.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 e873e5d0d8549c78c0eafcab8fba40f4a1e27c5a9d48f4a6b2eb122470d0d88c jszip-3.10.1.tar.gz +sha256 566c953c6090b1218ca6217dd7359d45dde46581968586dc607d59a78af6a9c4 LICENSE.markdown diff --git a/package/jszip/jszip.mk b/package/jszip/jszip.mk new file mode 100644 index 00000000..f038263a --- /dev/null +++ b/package/jszip/jszip.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# jszip +# +################################################################################ + +JSZIP_VERSION = 3.10.1 +JSZIP_SITE = $(call github,Stuk,jszip,v$(JSZIP_VERSION)) +JSZIP_LICENSE = MIT or GPL-3.0 +JSZIP_LICENSE_FILES = LICENSE.markdown +JSZIP_CPE_ID_VALID = YES + +define JSZIP_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/dist/jszip.min.js \ + $(TARGET_DIR)/var/www/jszip/js/jszip.min.js +endef + +$(eval $(generic-package)) diff --git a/package/kbd/Config.in b/package/kbd/Config.in new file mode 100644 index 00000000..27cadf1a --- /dev/null +++ b/package/kbd/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_KBD + bool "kbd" + # Uses fork() + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # _Generic + help + Keytable files and keyboard utilities. + + http://kernel.org/pub/linux/utils/kbd/ + +comment "kbd needs a toolchain w/ gcc >= 4.9" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/kbd/kbd.hash b/package/kbd/kbd.hash new file mode 100644 index 00000000..63f7286d --- /dev/null +++ b/package/kbd/kbd.hash @@ -0,0 +1,4 @@ +# From https://www.kernel.org/pub/linux/utils/kbd/sha256sums.asc +sha256 ccdf452387a6380973d2927363e9cbb939fa2068915a6f937ff9d24522024683 kbd-2.5.1.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 5a16340fe773f422144b436df90319114a2884933c56e9be6fad642e59be5e1f CREDITS diff --git a/package/kbd/kbd.mk b/package/kbd/kbd.mk new file mode 100644 index 00000000..15912419 --- /dev/null +++ b/package/kbd/kbd.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# kbd +# +################################################################################ + +KBD_VERSION = 2.5.1 +KBD_SOURCE = kbd-$(KBD_VERSION).tar.xz +KBD_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/kbd +KBD_CONF_OPTS = \ + --disable-vlock \ + --disable-tests +KBD_DEPENDENCIES = \ + $(TARGET_NLS_DEPENDENCIES) \ + host-pkgconf +KBD_LICENSE = GPL-2.0+ +KBD_LICENSE_FILES = COPYING CREDITS + +KBD_INSTALL_TARGET_OPTS = MKINSTALLDIRS=$(@D)/config/mkinstalldirs DESTDIR=$(TARGET_DIR) install + +$(eval $(autotools-package)) diff --git a/package/keepalived/Config.in b/package/keepalived/Config.in new file mode 100644 index 00000000..2a0663fe --- /dev/null +++ b/package/keepalived/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_KEEPALIVED + bool "keepalived" + depends on BR2_USE_MMU + depends on !BR2_STATIC_LIBS # uses libdl + select BR2_PACKAGE_OPENSSL + help + The main goal of the keepalived project is to add a strong & + robust keepalive facility to the Linux Virtual Server + project. It implements a multilayer TCP/IP stack + checks. Keepalived implements a framework based on three + family checks: Layer3, Layer4 & Layer5. This framework gives + the daemon the ability of checking a LVS server pool + states. Keepalived can be sumarize as a LVS driving daemon. + + http://www.keepalived.org/ + +comment "keepalived needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/package/keepalived/keepalived.hash b/package/keepalived/keepalived.hash new file mode 100644 index 00000000..7c93d818 --- /dev/null +++ b/package/keepalived/keepalived.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 85882eb62974f395d4c631be990a41a839594a7e62fbfebcb5649a937a7a1bb6 keepalived-2.2.8.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/keepalived/keepalived.mk b/package/keepalived/keepalived.mk new file mode 100644 index 00000000..eb5abf97 --- /dev/null +++ b/package/keepalived/keepalived.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# keepalived +# +################################################################################ + +KEEPALIVED_VERSION = 2.2.8 +KEEPALIVED_SITE = http://www.keepalived.org/software +KEEPALIVED_DEPENDENCIES = host-pkgconf openssl +KEEPALIVED_LICENSE = GPL-2.0+ +KEEPALIVED_LICENSE_FILES = COPYING +KEEPALIVED_CPE_ID_VENDOR = keepalived +KEEPALIVED_CONF_OPTS = --disable-hardening + +ifeq ($(BR2_PACKAGE_JSON_C),y) +KEEPALIVED_DEPENDENCIES += json-c +KEEPALIVED_CONF_OPTS += --enable-json +else +KEEPALIVED_CONF_OPTS += --disable-json +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +KEEPALIVED_DEPENDENCIES += libglib2 +KEEPALIVED_CONF_OPTS += --enable-dbus +else +KEEPALIVED_CONF_OPTS += --disable-dbus +endif + +ifeq ($(BR2_PACKAGE_LIBNL)$(BR2_PACKAGE_LIBNFNETLINK),yy) +KEEPALIVED_DEPENDENCIES += libnl libnfnetlink +KEEPALIVED_CONF_OPTS += --enable-libnl +else +KEEPALIVED_CONF_OPTS += --disable-libnl +endif + +ifeq ($(BR2_PACKAGE_IPTABLES),y) +KEEPALIVED_DEPENDENCIES += iptables +KEEPALIVED_CONF_OPTS += --enable-iptables +# ipset support only makes sense when iptables support is enabled. +ifeq ($(BR2_PACKAGE_IPSET),y) +KEEPALIVED_DEPENDENCIES += ipset +KEEPALIVED_CONF_OPTS += --enable-libipset +else +KEEPALIVED_CONF_OPTS += --disable-libipset +endif +else +KEEPALIVED_CONF_OPTS += --disable-iptables +endif + +ifeq ($(BR2_PACKAGE_LIBNFTNL),y) +KEEPALIVED_DEPENDENCIES += libnftnl +KEEPALIVED_CONF_OPTS += --enable-nftables +else +KEEPALIVED_CONF_OPTS += --disable-nftables +endif + +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_9),) +KEEPALIVED_CONF_OPTS += --disable-track-process +endif + +$(eval $(autotools-package)) diff --git a/package/kexec-lite/0001-clean-restart.patch b/package/kexec-lite/0001-clean-restart.patch new file mode 100644 index 00000000..faaa93a0 --- /dev/null +++ b/package/kexec-lite/0001-clean-restart.patch @@ -0,0 +1,34 @@ +From 0a654c20e1b9324c57ba4116b52fb6ab33847e1d Mon Sep 17 00:00:00 2001 +From: Jeremy Kerr +Date: Thu, 8 Aug 2013 17:16:31 +0800 +Subject: [PATCH] kexec: Implement clean restart for busybox init + +Signed-off-by: Jeremy Kerr +--- + kexec.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/kexec.c b/kexec.c +index 2edb7df..b2a0c42 100644 +--- a/kexec.c ++++ b/kexec.c +@@ -27,6 +27,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -818,7 +819,7 @@ int main(int argc, char *argv[]) + sync(); + exec_kexec(); + } else { +- execlp("shutdown", "shutdown", "-r", "now", NULL); ++ kill(1, SIGQUIT); + } + + return -1; +-- +1.7.10.4 + diff --git a/package/kexec-lite/Config.in b/package/kexec-lite/Config.in new file mode 100644 index 00000000..89184b0b --- /dev/null +++ b/package/kexec-lite/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_KEXEC_LITE_ARCH_SUPPORTS + bool + default y + depends on BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + +config BR2_PACKAGE_KEXEC_LITE + bool "kexec-lite" + depends on BR2_PACKAGE_KEXEC_LITE_ARCH_SUPPORTS + depends on !BR2_STATIC_LIBS # dtc, elfutils + depends on BR2_USE_WCHAR # elfutils + depends on BR2_TOOLCHAIN_HAS_THREADS # elfutils + select BR2_PACKAGE_ELFUTILS + select BR2_PACKAGE_DTC + select BR2_PACKAGE_DTC_PROGRAMS + help + Kexec is a user space utiltity for loading another kernel + and asking the currently running kernel to do something with + it. + + This package is a tiny implementation of the kexec userspace + components, for devicetree-based platforms. + + https://github.com/antonblanchard/kexec-lite + +comment "kexec-lite needs a toolchain w/ wchar, dynamic library, threads" + depends on BR2_PACKAGE_KEXEC_LITE_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/kexec-lite/kexec-lite.hash b/package/kexec-lite/kexec-lite.hash new file mode 100644 index 00000000..e2426a45 --- /dev/null +++ b/package/kexec-lite/kexec-lite.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1027c69721e8ee21614273a540e1dd505370d8d814845c0adaf838496105a35d kexec-lite-6b0130b3c1ea489e061cda2805e6f8b68dc96a76.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/kexec-lite/kexec-lite.mk b/package/kexec-lite/kexec-lite.mk new file mode 100644 index 00000000..89d42659 --- /dev/null +++ b/package/kexec-lite/kexec-lite.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kexec-lite +# +################################################################################ + +KEXEC_LITE_VERSION = 6b0130b3c1ea489e061cda2805e6f8b68dc96a76 +KEXEC_LITE_SITE = $(call github,antonblanchard,kexec-lite,$(KEXEC_LITE_VERSION)) +KEXEC_LITE_LICENSE = GPL-2.0+ +KEXEC_LITE_LICENSE_FILES = COPYING +KEXEC_LITE_DEPENDENCIES = elfutils dtc +KEXEC_LITE_AUTORECONF = YES +KEXEC_LITE_SELINUX_MODULES = kdump + +$(eval $(autotools-package)) diff --git a/package/kexec/Config.in b/package/kexec/Config.in new file mode 100644 index 00000000..707f8663 --- /dev/null +++ b/package/kexec/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_KEXEC_ARCH_SUPPORTS + bool + default y + depends on BR2_i386 || BR2_x86_64 || BR2_arm || BR2_armeb || \ + BR2_mips || BR2_mips64 || BR2_mipsel || BR2_mips64el || \ + BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le || \ + BR2_sh4 || BR2_sh4a || BR2_aarch64 || BR2_s390x || BR2_m68k + +config BR2_PACKAGE_KEXEC + bool "kexec" + depends on BR2_PACKAGE_KEXEC_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # memfd_create() + help + Kexec is a user space utility for loading another kernel + and asking the currently running kernel to do something with + it. + + https://www.kernel.org/pub/linux/utils/kernel/kexec/ + +if BR2_PACKAGE_KEXEC + +config BR2_PACKAGE_KEXEC_ZLIB + bool "zlib support" + select BR2_PACKAGE_ZLIB + help + Support for compressed kernel images + +endif + +comment "kexec needs a toolchain w/ headers >= 3.17" + depends on BR2_PACKAGE_KEXEC_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 diff --git a/package/kexec/kexec.hash b/package/kexec/kexec.hash new file mode 100644 index 00000000..91496c06 --- /dev/null +++ b/package/kexec/kexec.hash @@ -0,0 +1,6 @@ +# From https://www.kernel.org/pub/linux/utils/kernel/kexec/sha256sums.asc +# After checking pgp signature with key: +# B8868C80BA62A1FFFAF5FDA9632D3A06589DA6B1 +sha256 67b1ac503aade45a54db0bc79228a8830a35d5d4f83cee932cff3e7a81a4a9ec kexec-tools-2.0.29.tar.xz +# locally calculated +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/kexec/kexec.mk b/package/kexec/kexec.mk new file mode 100644 index 00000000..5f798b6a --- /dev/null +++ b/package/kexec/kexec.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# kexec +# +################################################################################ + +KEXEC_VERSION = 2.0.29 +KEXEC_SOURCE = kexec-tools-$(KEXEC_VERSION).tar.xz +KEXEC_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/kernel/kexec +KEXEC_LICENSE = GPL-2.0 +KEXEC_LICENSE_FILES = COPYING +KEXEC_CPE_ID_PRODUCT = kexec-tools +KEXEC_CPE_ID_VENDOR = kexec-tools_project +KEXEC_SELINUX_MODULES = kdump + +# Makefile expects $STRIP -o to work, so needed for !BR2_STRIP_strip +KEXEC_MAKE_OPTS = STRIP="$(TARGET_CROSS)strip" + +# kexec requires at least -O1 optimization level. Its code uses a +# trick to detect unaligned accesses at link time which needs at least +# dead-code-removal to work. See put/get_unaligned() macros in +# kexec/kexec.h +ifeq ($(BR2_OPTIMIZE_0),y) +KEXEC_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -O1" +endif + +ifeq ($(BR2_PACKAGE_KEXEC_ZLIB),y) +KEXEC_CONF_OPTS += --with-zlib +KEXEC_DEPENDENCIES += zlib +else +KEXEC_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +KEXEC_CONF_OPTS += --with-lzma +KEXEC_DEPENDENCIES += xz +else +KEXEC_CONF_OPTS += --without-lzma +endif + +define KEXEC_REMOVE_LIB_TOOLS + rm -rf $(TARGET_DIR)/usr/lib/kexec-tools +endef + +KEXEC_POST_INSTALL_TARGET_HOOKS += KEXEC_REMOVE_LIB_TOOLS + +$(eval $(autotools-package)) diff --git a/package/keyutils/0001-fix-install-rule.patch b/package/keyutils/0001-fix-install-rule.patch new file mode 100644 index 00000000..b8bad533 --- /dev/null +++ b/package/keyutils/0001-fix-install-rule.patch @@ -0,0 +1,22 @@ +Makefile: fix install rule + +Do not link the .so with an absolute path, otherwise it may point to +the host library. + +Based on the former patch by Yann E. MORIN. + +Signed-off-by: Vicente Olivert Riera +[baruch: update for 1.6] +Signed-off-by: Baruch Siach + +--- keyutils-1.5.9/Makefile.orig 2014-09-22 16:13:41.593562765 +0100 ++++ keyutils-1.5.9/Makefile 2014-09-22 16:14:05.377963952 +0100 +@@ -200,7 +200,7 @@ ifeq ($(NO_SOLIB),0) + $(INSTALL) -D $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBNAME) + $(LNS) $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME) + mkdir -p $(DESTDIR)$(USRLIBDIR) +- $(LNS) $(LIBDIR)/$(SONAME) $(DESTDIR)$(USRLIBDIR)/$(DEVELLIB) ++ $(LNS) $(SONAME) $(DESTDIR)$(USRLIBDIR)/$(DEVELLIB) + sed \ + -e 's,@VERSION\@,$(VERSION),g' \ + -e 's,@prefix\@,$(PREFIX),g' \ diff --git a/package/keyutils/0002-cifs.patch b/package/keyutils/0002-cifs.patch new file mode 100644 index 00000000..23f8e331 --- /dev/null +++ b/package/keyutils/0002-cifs.patch @@ -0,0 +1,15 @@ +Patch vampirised from Debian's packaging of keyutils-1.4 + +Author: Marcus Meissner +Description: Added 2 cifs helpers to request-key.conf (for CIFS DFS support) + +diff -Naurp keyutils.orig/request-key.conf keyutils/request-key.conf +--- keyutils.orig/request-key.conf 2008-09-07 23:53:10.000000000 +0000 ++++ keyutils/request-key.conf 2009-02-05 00:53:00.000000000 +0000 +@@ -38,4 +38,6 @@ + create user debug:* revoked /bin/keyctl reject %k 30 %c %S + create user debug:loop:* * |/bin/cat + create user debug:* * /usr/share/keyutils/request-key-debug.sh %k %d %c %S ++create cifs.spnego * * /usr/sbin/cifs.upcall -c %k ++create dns_resolver * * /usr/sbin/cifs.upcall %k + negate * * * /bin/keyctl negate %k 30 %S diff --git a/package/keyutils/Config.in b/package/keyutils/Config.in new file mode 100644 index 00000000..e4a2e846 --- /dev/null +++ b/package/keyutils/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_KEYUTILS + bool "keyutils" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # dlopen + help + These tools are used to control the key management system + built into the Linux kernel. + + https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/keyutils.git/ + +comment "keyutils needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/package/keyutils/keyutils.hash b/package/keyutils/keyutils.hash new file mode 100644 index 00000000..35de0c78 --- /dev/null +++ b/package/keyutils/keyutils.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 a61d5706136ae4c05bd48f86186bcfdbd88dd8bd5107e3e195c924cfc1b39bb4 keyutils-1.6.3.tar.gz +sha256 f46409d4822b2457b39bbd0e7881eecb396130eb8320b7748fa7e9488970aa6d LICENCE.GPL +sha256 0d15593e3a8ad90917f8509b5ac1e4b5e5d196434a68029aa9dc0858a4a4c521 LICENCE.LGPL diff --git a/package/keyutils/keyutils.mk b/package/keyutils/keyutils.mk new file mode 100644 index 00000000..fb387ed1 --- /dev/null +++ b/package/keyutils/keyutils.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# keyutils +# +################################################################################ + +KEYUTILS_VERSION = 1.6.3 +KEYUTILS_SITE = https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/keyutils.git/snapshot +KEYUTILS_LICENSE = GPL-2.0+, LGPL-2.1+ +KEYUTILS_LICENSE_FILES = LICENCE.GPL LICENCE.LGPL +KEYUTILS_CPE_ID_VALID = YES +KEYUTILS_INSTALL_STAGING = YES + +KEYUTILS_MAKE_PARAMS = \ + INSTALL=$(INSTALL) \ + LIBDIR=/usr/lib \ + USRLIBDIR=/usr/lib \ + CFLAGS="$(TARGET_CFLAGS)" \ + CPPFLAGS="$(TARGET_CPPFLAGS) -I." \ + LNS="$(HOSTLN) -sf" + +ifeq ($(BR2_SHARED_LIBS),y) +KEYUTILS_MAKE_PARAMS += NO_ARLIB=1 +endif + +# Touch cxx.stamp to avoid adding a C++ dependency +define KEYUTILS_CONFIGURE_CMDS + touch $(@D)/cxx.stamp +endef + +define KEYUTILS_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) $(KEYUTILS_MAKE_PARAMS) -C $(@D) +endef + +define KEYUTILS_INSTALL_STAGING_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) $(KEYUTILS_MAKE_PARAMS) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +define KEYUTILS_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) $(KEYUTILS_MAKE_PARAMS) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/kf5/Config.in b/package/kf5/Config.in new file mode 100644 index 00000000..030759f3 --- /dev/null +++ b/package/kf5/Config.in @@ -0,0 +1,15 @@ +menuconfig BR2_PACKAGE_KF5 + bool "KF5" + depends on BR2_PACKAGE_QT5 + help + This option enables the KF5 KDE Frameworks. Sub-options + allow to select which modules should be built. + + https://techbase.kde.org/KDE_Frameworks + +if BR2_PACKAGE_KF5 +source "package/kf5/kf5-extra-cmake-modules/Config.in" +source "package/kf5/kf5-kcoreaddons/Config.in" +source "package/kf5/kf5-modemmanager-qt/Config.in" +source "package/kf5/kf5-networkmanager-qt/Config.in" +endif diff --git a/package/kf5/kf5-extra-cmake-modules/Config.in b/package/kf5/kf5-extra-cmake-modules/Config.in new file mode 100644 index 00000000..7cb1036c --- /dev/null +++ b/package/kf5/kf5-extra-cmake-modules/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_KF5_EXTRA_CMAKE_MODULES + bool "kf5-extra-cmake-modules" + help + KF5 is a set of Qt framework addons, extending Qt in various + ways, not only restricted in helping integration in KDE. + + This package corresponds to the extra CMake modules, + required for most KF5 libraries. + + https://api.kde.org/frameworks/extra-cmake-modules/html/index.html diff --git a/package/kf5/kf5-extra-cmake-modules/kf5-extra-cmake-modules.hash b/package/kf5/kf5-extra-cmake-modules/kf5-extra-cmake-modules.hash new file mode 100644 index 00000000..70b776b5 --- /dev/null +++ b/package/kf5/kf5-extra-cmake-modules/kf5-extra-cmake-modules.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 9717885e30aadf184fa71511930409cabbf08eb6627ea8b051de8804fbcec54c extra-cmake-modules-5.91.0.tar.xz +sha256 46cde7dc11e64c78d650b4851b88f6704b4665ff60f22a1caf68ceb15e217e5b COPYING-CMAKE-SCRIPTS diff --git a/package/kf5/kf5-extra-cmake-modules/kf5-extra-cmake-modules.mk b/package/kf5/kf5-extra-cmake-modules/kf5-extra-cmake-modules.mk new file mode 100644 index 00000000..ba274845 --- /dev/null +++ b/package/kf5/kf5-extra-cmake-modules/kf5-extra-cmake-modules.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# kf5-extra-cmake-modules +# +################################################################################ + +KF5_EXTRA_CMAKE_MODULES_VERSION = $(KF5_VERSION) +KF5_EXTRA_CMAKE_MODULES_SITE = $(KF5_SITE) +KF5_EXTRA_CMAKE_MODULES_SOURCE = extra-cmake-modules-$(KF5_EXTRA_CMAKE_MODULES_VERSION).tar.xz +KF5_EXTRA_CMAKE_MODULES_LICENSE = BSD-3-Clause +KF5_EXTRA_CMAKE_MODULES_LICENSE_FILES = COPYING-CMAKE-SCRIPTS + +KF5_EXTRA_CMAKE_MODULES_DEPENDENCIES = host-pkgconf +KF5_EXTRA_CMAKE_MODULES_INSTALL_STAGING = YES +KF5_EXTRA_CMAKE_MODULES_INSTALL_TARGET = NO + +KF5_EXTRA_CMAKE_MODULES_CONF_OPTS += \ + -DBUILD_HTML_DOCS=OFF \ + -DBUILD_MAN_DOCS=OFF \ + -DBUILD_QTHELP_DOCS=OFF + +$(eval $(cmake-package)) diff --git a/package/kf5/kf5-kcoreaddons/Config.in b/package/kf5/kf5-kcoreaddons/Config.in new file mode 100644 index 00000000..88fda03e --- /dev/null +++ b/package/kf5/kf5-kcoreaddons/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_KF5_KCOREADDONS + bool "kf5-kcoreaddons" + select BR2_PACKAGE_KF5_EXTRA_CMAKE_MODULES + select BR2_PACKAGE_QT5TOOLS + select BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS + help + KF5 is a set of Qt framework addons, extending Qt in + various ways, not only restricted in helping integration + in KDE. + + This package contains KCoreAddons, a set of classes built + on top of QtCore to perform various tasks. + + https://api.kde.org/frameworks/kcoreaddons/html/index.html diff --git a/package/kf5/kf5-kcoreaddons/kf5-kcoreaddons.hash b/package/kf5/kf5-kcoreaddons/kf5-kcoreaddons.hash new file mode 100644 index 00000000..e4ebf2bb --- /dev/null +++ b/package/kf5/kf5-kcoreaddons/kf5-kcoreaddons.hash @@ -0,0 +1,16 @@ +# Locally calculated +sha256 dfe3da03260e0153f9f6ced1fc7464eaaf0ed1fb692fc6c2b2d968b629ad719b kcoreaddons-5.91.0.tar.xz + +# Hash for license files +sha256 d1cf0896da7045d841fe45b0991cf35540bac1a17b5d11f4afcf8fcb950246b5 LICENSES/GPL-2.0-only.txt +sha256 606aa26338f69ce178f1cbc648b7574aec4b5bbaeb20f4df36ff49010cb8fbbd LICENSES/GPL-2.0-or-later.txt +sha256 2ca9503d76d1ffab14f599b4741382eec11face60ad1f0d7a41897809003a286 LICENSES/GPL-3.0-only.txt +sha256 de588a8b1c41fe73ffe1201f9d12c718a988ed8e1302929625a6e7c2bced7461 LICENSES/LGPL-2.0-only.txt +sha256 de588a8b1c41fe73ffe1201f9d12c718a988ed8e1302929625a6e7c2bced7461 LICENSES/LGPL-2.0-or-later.txt +sha256 211f1b738d1b864bab2648bee9b55becd39fd2d6aa49c1196e7d87b41db4bc07 LICENSES/LGPL-2.1-only.txt +sha256 476b03829862ab7e3ed920f87fad3de3c995f7dd93c26476eb40f0117de43fdc LICENSES/LGPL-3.0-only.txt +sha256 ef839531eb65b0168f9aed14047c84be13e9ea38801a73bc18abe24dc93e6ac9 LICENSES/LicenseRef-KDE-Accepted-GPL.txt +sha256 d9f25707d20e804f15005be46527366b0604bd739754d144a83d3983d94a9a6a LICENSES/LicenseRef-KDE-Accepted-LGPL.txt +sha256 272bc0fa06a23d3c807375f95f8d6ccd98541321d2882732668ab139c16f9bf4 LICENSES/LicenseRef-Qt-Commercial.txt +sha256 a3b538a7d81c4935d185056479d12fd43042bb9f3a21c9cbb4a8500fab8e5880 LICENSES/MPL-1.1.txt +sha256 7dea3adab58690d8ee14775da755cd30a52649a47704ff78ae85197ae0d37c60 LICENSES/Qt-LGPL-exception-1.1.txt diff --git a/package/kf5/kf5-kcoreaddons/kf5-kcoreaddons.mk b/package/kf5/kf5-kcoreaddons/kf5-kcoreaddons.mk new file mode 100644 index 00000000..e2f67f15 --- /dev/null +++ b/package/kf5/kf5-kcoreaddons/kf5-kcoreaddons.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# kf5-kcoreaddons +# +################################################################################ + +KF5_KCOREADDONS_VERSION = $(KF5_VERSION) +KF5_KCOREADDONS_SITE = $(KF5_SITE) +KF5_KCOREADDONS_SOURCE = kcoreaddons-$(KF5_KCOREADDONS_VERSION).tar.xz +KF5_KCOREADDONS_LICENSE = \ + LGPL-2.0+, LGPL-2.1 or LGPL-3.0 or LicenseRef-KDE-Accepted-LGPL (library), \ + MPL.1.1 or GPL-2.0+ or LGPL-2.1+ (posix_fallocate_mac.h), \ + LGPL-2.1 with Qt-LGPL-exception-1.1 or LicenseRef-Qt-Commercial (kprocesslist), \ + GPL-2.0 or GPL-3.0 or LicenseRef-KDE-Accepted-GPL (autotests) +KF5_KCOREADDONS_LICENSE_FILES = \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-2.0-or-later.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-2.0-only.txt \ + LICENSES/LGPL-2.0-or-later.txt \ + LICENSES/LGPL-2.1-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/LicenseRef-KDE-Accepted-GPL.txt \ + LICENSES/LicenseRef-KDE-Accepted-LGPL.txt \ + LICENSES/LicenseRef-Qt-Commercial.txt \ + LICENSES/MPL-1.1.txt \ + LICENSES/Qt-LGPL-exception-1.1.txt + +KF5_KCOREADDONS_DEPENDENCIES = \ + kf5-extra-cmake-modules \ + qt5tools \ + $(if $(BR2_PACKAGE_PYTHON3),python3) +KF5_KCOREADDONS_INSTALL_STAGING = YES + +KF5_KCOREADDONS_CXXFLAGS = $(TARGET_CXXFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +KF5_KCOREADDONS_CXXFLAGS += -latomic +endif + +KF5_KCOREADDONS_CONF_OPTS = -DCMAKE_CXX_FLAGS="$(KF5_KCOREADDONS_CXXFLAGS)" + +ifeq ($(BR2_microblaze),y) +# Microblaze ld emits warnings, make warnings not to be treated as errors +KF5_KCOREADDONS_CONF_OPTS += -DCMAKE_SHARED_LINKER_FLAGS="-Wl,--no-fatal-warnings" +endif + +$(eval $(cmake-package)) diff --git a/package/kf5/kf5-modemmanager-qt/Config.in b/package/kf5/kf5-modemmanager-qt/Config.in new file mode 100644 index 00000000..f08de556 --- /dev/null +++ b/package/kf5/kf5-modemmanager-qt/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_KF5_MODEMMANAGER_QT + bool "kf5-modemmanager-qt" + depends on BR2_USE_MMU # qt5dbus + depends on BR2_TOOLCHAIN_HAS_THREADS # qt5dbus + depends on BR2_PACKAGE_MODEM_MANAGER + select BR2_PACKAGE_QT5BASE_DBUS + select BR2_PACKAGE_KF5_EXTRA_CMAKE_MODULES + help + KF5 is a set of Qt framework addons, extending Qt in various + ways, not only restricted in helping integration in KDE. + + This package contains the ModemManager Qt5 bindings from the + KF5 project. + + https://api.kde.org/frameworks/modemmanager-qt/html/index.html + +comment "kf5-modemmanager-qt needs toolchain w/ threads" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_MODEM_MANAGER + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/kf5/kf5-modemmanager-qt/kf5-modemmanager-qt.hash b/package/kf5/kf5-modemmanager-qt/kf5-modemmanager-qt.hash new file mode 100644 index 00000000..4b6c03a3 --- /dev/null +++ b/package/kf5/kf5-modemmanager-qt/kf5-modemmanager-qt.hash @@ -0,0 +1,10 @@ +# Locally calculated +sha256 a2673f18c7866d39c9cedca2f86540c56baf966a2491a86ca06a5a0427358496 modemmanager-qt-5.91.0.tar.xz + +# Hash for license files +sha256 d1cf0896da7045d841fe45b0991cf35540bac1a17b5d11f4afcf8fcb950246b5 LICENSES/GPL-2.0-only.txt +sha256 2ca9503d76d1ffab14f599b4741382eec11face60ad1f0d7a41897809003a286 LICENSES/GPL-3.0-only.txt +sha256 211f1b738d1b864bab2648bee9b55becd39fd2d6aa49c1196e7d87b41db4bc07 LICENSES/LGPL-2.1-only.txt +sha256 476b03829862ab7e3ed920f87fad3de3c995f7dd93c26476eb40f0117de43fdc LICENSES/LGPL-3.0-only.txt +sha256 ef839531eb65b0168f9aed14047c84be13e9ea38801a73bc18abe24dc93e6ac9 LICENSES/LicenseRef-KDE-Accepted-GPL.txt +sha256 d9f25707d20e804f15005be46527366b0604bd739754d144a83d3983d94a9a6a LICENSES/LicenseRef-KDE-Accepted-LGPL.txt diff --git a/package/kf5/kf5-modemmanager-qt/kf5-modemmanager-qt.mk b/package/kf5/kf5-modemmanager-qt/kf5-modemmanager-qt.mk new file mode 100644 index 00000000..38c80d3d --- /dev/null +++ b/package/kf5/kf5-modemmanager-qt/kf5-modemmanager-qt.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# kf5-modemmanager-qt +# +################################################################################ + +KF5_MODEMMANAGER_QT_VERSION = $(KF5_VERSION) +KF5_MODEMMANAGER_QT_SITE = $(KF5_SITE) +KF5_MODEMMANAGER_QT_SOURCE = modemmanager-qt-$(KF5_MODEMMANAGER_QT_VERSION).tar.xz +KF5_MODEMMANAGER_QT_LICENSE = \ + LGPL-2.1 or LGPL-3.0 or LicenseRef-KDE-Accepted-LGPL (library), \ + GPL-2.0 or GPL-3.0 or LicenseRef-KDE-Accepted-GPL (autotests, examples) + +KF5_MODEMMANAGER_QT_LICENSE_FILES = \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-2.1-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/LicenseRef-KDE-Accepted-GPL.txt \ + LICENSES/LicenseRef-KDE-Accepted-LGPL.txt + +KF5_MODEMMANAGER_QT_DEPENDENCIES = kf5-extra-cmake-modules modem-manager qt5base +KF5_MODEMMANAGER_QT_INSTALL_STAGING = YES + +# Uses __atomic_fetch_add_4 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +KF5_MODEMMANAGER_QT_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic +endif + +$(eval $(cmake-package)) diff --git a/package/kf5/kf5-networkmanager-qt/Config.in b/package/kf5/kf5-networkmanager-qt/Config.in new file mode 100644 index 00000000..6b309f08 --- /dev/null +++ b/package/kf5/kf5-networkmanager-qt/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_KF5_NETWORKMANAGER_QT + bool "kf5-networkmanager-qt" + depends on BR2_USE_MMU # qt5dbus + depends on BR2_TOOLCHAIN_HAS_THREADS # qt5dbus + depends on BR2_PACKAGE_NETWORK_MANAGER + select BR2_PACKAGE_QT5BASE_DBUS + select BR2_PACKAGE_KF5_EXTRA_CMAKE_MODULES + help + KF5 is a set of Qt framework addons, extending Qt in various + ways, not only restricted in helping integration in KDE. + + This package contains the NetworkManager Qt5 bindings from + the KF5 project. + + https://api.kde.org/frameworks/networkmanager-qt/html/index.html + +comment "kf5-networkmanager-qt needs toolchain w/ threads" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_NETWORK_MANAGER + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/kf5/kf5-networkmanager-qt/kf5-networkmanager-qt.hash b/package/kf5/kf5-networkmanager-qt/kf5-networkmanager-qt.hash new file mode 100644 index 00000000..de450406 --- /dev/null +++ b/package/kf5/kf5-networkmanager-qt/kf5-networkmanager-qt.hash @@ -0,0 +1,10 @@ +# Locally calculated +sha256 2e20ffd995ce64a90b1133b594bab2b2292be54e538f62633e78e8296cc44738 networkmanager-qt-5.91.0.tar.xz + +# Hash for license files +sha256 d1cf0896da7045d841fe45b0991cf35540bac1a17b5d11f4afcf8fcb950246b5 LICENSES/GPL-2.0-only.txt +sha256 2ca9503d76d1ffab14f599b4741382eec11face60ad1f0d7a41897809003a286 LICENSES/GPL-3.0-only.txt +sha256 211f1b738d1b864bab2648bee9b55becd39fd2d6aa49c1196e7d87b41db4bc07 LICENSES/LGPL-2.1-only.txt +sha256 476b03829862ab7e3ed920f87fad3de3c995f7dd93c26476eb40f0117de43fdc LICENSES/LGPL-3.0-only.txt +sha256 ef839531eb65b0168f9aed14047c84be13e9ea38801a73bc18abe24dc93e6ac9 LICENSES/LicenseRef-KDE-Accepted-GPL.txt +sha256 d9f25707d20e804f15005be46527366b0604bd739754d144a83d3983d94a9a6a LICENSES/LicenseRef-KDE-Accepted-LGPL.txt diff --git a/package/kf5/kf5-networkmanager-qt/kf5-networkmanager-qt.mk b/package/kf5/kf5-networkmanager-qt/kf5-networkmanager-qt.mk new file mode 100644 index 00000000..7adff2de --- /dev/null +++ b/package/kf5/kf5-networkmanager-qt/kf5-networkmanager-qt.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# kf5-networkmanager-qt +# +################################################################################ + +KF5_NETWORKMANAGER_QT_VERSION = $(KF5_VERSION) +KF5_NETWORKMANAGER_QT_SITE = $(KF5_SITE) +KF5_NETWORKMANAGER_QT_SOURCE = networkmanager-qt-$(KF5_NETWORKMANAGER_QT_VERSION).tar.xz +KF5_NETWORKMANAGER_QT_LICENSE = \ + LGPL-2.1 or LGPL-3.0 or LicenseRef-KDE-Accepted-LGPL (library), \ + GPL-2.0 or GPL-3.0 or LicenseRef-KDE-Accepted-GPL (autotests, examples) +KF5_NETWORKMANAGER_QT_LICENSE_FILES = \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-2.1-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/LicenseRef-KDE-Accepted-GPL.txt \ + LICENSES/LicenseRef-KDE-Accepted-LGPL.txt + +KF5_NETWORKMANAGER_QT_DEPENDENCIES = kf5-extra-cmake-modules network-manager qt5base +KF5_NETWORKMANAGER_QT_INSTALL_STAGING = YES + +$(eval $(cmake-package)) diff --git a/package/kf5/kf5.mk b/package/kf5/kf5.mk new file mode 100644 index 00000000..64b08bae --- /dev/null +++ b/package/kf5/kf5.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# kf5 +# +################################################################################ + +KF5_VERSION_MAJOR = 5.91 +KF5_VERSION = $(KF5_VERSION_MAJOR).0 +KF5_SITE = https://download.kde.org/stable/frameworks/$(KF5_VERSION_MAJOR) + +include $(sort $(wildcard package/kf5/*/*.mk)) diff --git a/package/kismet/Config.in b/package/kismet/Config.in new file mode 100644 index 00000000..2e1e0cfb --- /dev/null +++ b/package/kismet/Config.in @@ -0,0 +1,79 @@ +comment "kismet needs a toolchain w/ threads, C++, gcc >= 5, host gcc >= 7" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 || \ + !BR2_HOST_GCC_AT_LEAST_7 + depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS + +config BR2_PACKAGE_KISMET + bool "kismet" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS # protobuf-c + depends on BR2_HOST_GCC_AT_LEAST_7 # protobuf-c + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14 + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_PROTOBUF_C + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_ZLIB + help + Kismet is a wireless network and device detector, sniffer, + wardriving tool, and WIDS (wireless intrusion detection) + framework. + + Kismet works with Wi-Fi interfaces, Bluetooth interfaces, some + SDR (software defined radio) hardware like the RTLSDR, and + other specialized capture hardware. + + http://www.kismetwireless.net + +if BR2_PACKAGE_KISMET + +config BR2_PACKAGE_KISMET_PYTHON_TOOLS + bool "Install python tools" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # protobuf + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS # python-numpy + depends on BR2_PACKAGE_PYTHON3 + depends on !BR2_STATIC_LIBS # protobuf + depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy + select BR2_PACKAGE_PROTOBUF + select BR2_PACKAGE_PYTHON_NUMPY # runtime for RTLAMR and RTLADSB + select BR2_PACKAGE_PYTHON_PROTOBUF # runtime + select BR2_PACKAGE_PYTHON_SERIAL # runtime for Freaklabs Zigbee + select BR2_PACKAGE_PYTHON_SETUPTOOLS + help + Enable Python and Python-related tools (RTL_433, RTLAMR, + RTLADSB and Freaklabs Zigbee) + +comment "python tools needs python3" + depends on !BR2_PACKAGE_PYTHON3 + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + +comment "python tools needs a glibc or musl toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + depends on !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) + +config BR2_PACKAGE_KISMET_SERVER + bool "Install server" + default y + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # protobuf + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_USE_WCHAR + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::future + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_PROTOBUF + +comment "server needs a toolchain w/ dynamic library, wchar" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR + +comment "server needs a toolchain not affected by GCC bug 64735" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + +endif diff --git a/package/kismet/kismet.hash b/package/kismet/kismet.hash new file mode 100644 index 00000000..54351585 --- /dev/null +++ b/package/kismet/kismet.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 f08548e26ca65fa1e567b1debbea1ca4d0e7206bddb96a4f639c90171873e8f7 kismet-2023-07-R1.tar.xz +sha256 93c7f0d7e356b0abfb6f494ff3ea37f96abc84e9a5619b25d4e43f7553a55739 LICENSE diff --git a/package/kismet/kismet.mk b/package/kismet/kismet.mk new file mode 100644 index 00000000..c448233d --- /dev/null +++ b/package/kismet/kismet.mk @@ -0,0 +1,94 @@ +################################################################################ +# +# kismet +# +################################################################################ + +KISMET_VERSION = 2023-07-R1 +KISMET_SOURCE = kismet-$(KISMET_VERSION).tar.xz +KISMET_SITE = http://www.kismetwireless.net/code +KISMET_DEPENDENCIES = \ + host-pkgconf \ + libpcap \ + $(if $(BR2_PACKAGE_LIBNL),libnl) \ + $(if $(BR2_PACKAGE_OPENSSL),openssl) \ + $(if $(BR2_PACKAGE_PROTOBUF),protobuf) \ + protobuf-c \ + sqlite \ + zlib +KISMET_LICENSE = GPL-2.0+ +KISMET_LICENSE_FILES = LICENSE +KISMET_SELINUX_MODULES = kismet + +KISMET_CONF_OPTS = --disable-debuglibs --disable-wifi-coconut + +KISMET_CXXFLAGS = $(TARGET_CXXFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +KISMET_CXXFLAGS += -O0 +endif + +KISMET_CONF_ENV += CXXFLAGS="$(KISMET_CXXFLAGS)" + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +KISMET_DEPENDENCIES += libcap +KISMET_CONF_OPTS += --enable-libcap +else +KISMET_CONF_OPTS += --disable-libcap +endif + +ifeq ($(BR2_PACKAGE_LIBUSB),y) +KISMET_DEPENDENCIES += libusb +KISMET_CONF_OPTS += --enable-libusb +else +KISMET_CONF_OPTS += --disable-libusb +endif + +ifeq ($(BR2_PACKAGE_LIBWEBSOCKETS),y) +KISMET_DEPENDENCIES += libwebsockets +KISMET_CONF_OPTS += --enable-libwebsockets +else +KISMET_CONF_OPTS += --disable-libwebsockets +endif + +ifeq ($(BR2_PACKAGE_LM_SENSORS),y) +KISMET_DEPENDENCIES += lm-sensors +KISMET_CONF_OPTS += --enable-lmsensors +else +KISMET_CONF_OPTS += --disable-lmsensors +endif + +ifeq ($(BR2_PACKAGE_PCRE2),y) +KISMET_DEPENDENCIES += pcre2 +KISMET_CONF_OPTS += --enable-pcre --enable-require-pcre2 +else ifeq ($(BR2_PACKAGE_PCRE),y) +KISMET_DEPENDENCIES += pcre +KISMET_CONF_OPTS += --enable-pcre --disable-require-pcre2 +else +KISMET_CONF_OPTS += --disable-pcre +endif + +ifeq ($(BR2_PACKAGE_KISMET_PYTHON_TOOLS),y) +KISMET_DEPENDENCIES += python3 python-setuptools +KISMET_CONF_OPTS += \ + --enable-python-tools \ + --with-python-interpreter=$(HOST_DIR)/bin/python$(PYTHON3_VERSION_MAJOR) +else +KISMET_CONF_OPTS += --disable-python-tools +endif + +KISMET_INSTALL_TARGET_OPTS += \ + DESTDIR=$(TARGET_DIR) \ + INSTUSR=$(shell id -u) \ + INSTGRP=$(shell id -g) \ + SUIDGROUP=$(shell id -g) + +ifeq ($(BR2_PACKAGE_KISMET_SERVER),y) +KISMET_CONF_OPTS += --disable-capture-tools-only +KISMET_INSTALL_TARGET_OPTS += install +else +KISMET_CONF_OPTS += --enable-capture-tools-only +KISMET_INSTALL_TARGET_OPTS += binsuidinstall +endif + +$(eval $(autotools-package)) diff --git a/package/kmemd/Config.in b/package/kmemd/Config.in new file mode 100644 index 00000000..b3aebf12 --- /dev/null +++ b/package/kmemd/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_KMEMD + bool "kmemd" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libbpf + depends on BR2_USE_WCHAR # libbpf + depends on !BR2_STATIC_LIBS # libbpf + depends on BR2_TOOLCHAIN_HAS_THREADS # libbpf + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14 + select BR2_PACKAGE_LIBBPF + help + Explore a live Linux kernel's memory using GDB + + https://github.com/wkz/kmemd + +comment "kmemd needs a toolchain w/ wchar, dynamic library, threads, headers >= 5.14" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13 diff --git a/package/kmemd/kmemd.hash b/package/kmemd/kmemd.hash new file mode 100644 index 00000000..aecfea57 --- /dev/null +++ b/package/kmemd/kmemd.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 519ac3cdd367acee5090eec3b7e08400724f9b84486b191f3af534bd7cffca70 kmemd-1.0.0.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/kmemd/kmemd.mk b/package/kmemd/kmemd.mk new file mode 100644 index 00000000..902941b9 --- /dev/null +++ b/package/kmemd/kmemd.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# kmemd +# +################################################################################ + +KMEMD_VERSION = 1.0.0 +KMEMD_SITE = https://github.com/wkz/kmemd/releases/download/$(KMEMD_VERSION) +KMEMD_LICENSE = GPL-2.0 +KMEMD_LICENSE_FILES = COPYING +KMEMD_DEPENDENCIES = libbpf + +define KMEMD_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_BPF_SYSCALL) + $(call KCONFIG_ENABLE_OPT,CONFIG_FTRACE) + $(call KCONFIG_ENABLE_OPT,CONFIG_KPROBES) + $(call KCONFIG_ENABLE_OPT,CONFIG_PERF_EVENTS) +endef + +$(eval $(autotools-package)) diff --git a/package/kmod/0001-fix-O_CLOEXEC.patch b/package/kmod/0001-fix-O_CLOEXEC.patch new file mode 100644 index 00000000..145ac342 --- /dev/null +++ b/package/kmod/0001-fix-O_CLOEXEC.patch @@ -0,0 +1,48 @@ +From b39a62f6682463bcd47480348fac3dcd209a19a5 Mon Sep 17 00:00:00 2001 +From: Robert Yang +Date: Wed, 22 Jan 2014 01:06:40 -0500 +Subject: [PATCH] Add dummy definition of O_CLOEXEC + +O_CLOEXEC is introduced from Linux 2.6.23, so old kernel doesn't have +it, we need check before use. + +This patch is much more like a workaround, since it may need fcntl() use +FD_CLOEXEC to replace. + +This problem was reported by "Ting Liu " + +[Thomas De Schampheleire +Signed-off-by: Vicente Olivert Riera + +Upstream-status: rejected, suggests to add in buildroot instead [1] + +[1] http://news.gmane.org/find-root.php?message_id=1412062906%2d27378%2d1%2dgit%2dsend%2demail%2dpatrickdepinguin%40gmail.com + +--- + shared/missing.h | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +diff --git a/shared/missing.h b/shared/missing.h +index 4c0d136..e123e98 100644 +--- a/shared/missing.h ++++ b/shared/missing.h +@@ -19,6 +19,10 @@ + # define __NR_finit_module -1 + #endif + ++#ifndef O_CLOEXEC ++#define O_CLOEXEC 0 ++#endif ++ + #ifndef HAVE_FINIT_MODULE + #include + +-- +1.7.1 + diff --git a/package/kmod/0002-Use-portable-implementation-for-basename-API.patch b/package/kmod/0002-Use-portable-implementation-for-basename-API.patch new file mode 100644 index 00000000..26f108d6 --- /dev/null +++ b/package/kmod/0002-Use-portable-implementation-for-basename-API.patch @@ -0,0 +1,134 @@ +From 721ed6040c7aa47070faf6378c433089e178bd43 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 9 Dec 2023 17:35:59 -0800 +Subject: [PATCH] Use portable implementation for basename API + +musl has removed the non-prototype declaration of basename from +string.h [1] which now results in build errors with clang-17+ compiler + +Implement GNU basename behavior using strchr which is portable across libcs + +Fixes +../git/tools/kmod.c:71:19: error: call to undeclared function 'basename'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] +71 | "Commands:\n", basename(argv[0])); +| ^ + +[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7 + +Suggested-by: Rich Felker + +Signed-off-by: Khem Raj + +Upstream: https://github.com/kmod-project/kmod/pull/32 +Signed-off-by: Fiona Klute +--- + libkmod/libkmod-config.c | 2 +- + shared/util.c | 4 ++-- + shared/util.h | 7 +++++++ + testsuite/testsuite.c | 2 +- + tools/depmod.c | 2 +- + tools/kmod.c | 4 ++-- + 6 files changed, 14 insertions(+), 7 deletions(-) + +diff --git a/libkmod/libkmod-config.c b/libkmod/libkmod-config.c +index e83621b3..8aa555a4 100644 +--- a/libkmod/libkmod-config.c ++++ b/libkmod/libkmod-config.c +@@ -794,7 +794,7 @@ static int conf_files_insert_sorted(struct kmod_ctx *ctx, + bool is_single = false; + + if (name == NULL) { +- name = basename(path); ++ name = gnu_basename(path); + is_single = true; + } + +diff --git a/shared/util.c b/shared/util.c +index e2bab83a..0e16670e 100644 +--- a/shared/util.c ++++ b/shared/util.c +@@ -172,9 +172,9 @@ char *modname_normalize(const char *modname, char buf[static PATH_MAX], size_t * + + char *path_to_modname(const char *path, char buf[static PATH_MAX], size_t *len) + { +- char *modname; ++ const char *modname; + +- modname = basename(path); ++ modname = gnu_basename(path); + if (modname == NULL || modname[0] == '\0') + return NULL; + +diff --git a/shared/util.h b/shared/util.h +index c4a3916b..073dc5a7 100644 +--- a/shared/util.h ++++ b/shared/util.h +@@ -5,6 +5,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -76,6 +77,12 @@ do { \ + __p->__v = (val); \ + } while(0) + ++static _always_inline_ const char *gnu_basename(const char *s) ++{ ++ const char *p = strrchr(s, '/'); ++ return p ? p+1 : s; ++} ++ + static _always_inline_ unsigned int ALIGN_POWER2(unsigned int u) + { + return 1 << ((sizeof(u) * 8) - __builtin_clz(u - 1)); +diff --git a/testsuite/testsuite.c b/testsuite/testsuite.c +index 318343ac..aafc9873 100644 +--- a/testsuite/testsuite.c ++++ b/testsuite/testsuite.c +@@ -70,7 +70,7 @@ static void help(void) + + printf("Usage:\n" + "\t%s [options] \n" +- "Options:\n", basename(progname)); ++ "Options:\n", gnu_basename(progname)); + + for (itr = options, itr_short = options_short; + itr->name != NULL; itr++, itr_short++) +diff --git a/tools/depmod.c b/tools/depmod.c +index 43fc354a..cfb15b11 100644 +--- a/tools/depmod.c ++++ b/tools/depmod.c +@@ -762,7 +762,7 @@ static int cfg_files_insert_sorted(struct cfg_file ***p_files, size_t *p_n_files + if (name != NULL) + namelen = strlen(name); + else { +- name = basename(dir); ++ name = gnu_basename(dir); + namelen = strlen(name); + dirlen -= namelen + 1; + } +diff --git a/tools/kmod.c b/tools/kmod.c +index 55689c07..df91e5c6 100644 +--- a/tools/kmod.c ++++ b/tools/kmod.c +@@ -68,7 +68,7 @@ static int kmod_help(int argc, char *argv[]) + "Options:\n" + "\t-V, --version show version\n" + "\t-h, --help show this help\n\n" +- "Commands:\n", basename(argv[0])); ++ "Commands:\n", gnu_basename(argv[0])); + + for (i = 0; i < ARRAY_SIZE(kmod_cmds); i++) { + if (kmod_cmds[i]->help != NULL) { +@@ -156,7 +156,7 @@ static int handle_kmod_compat_commands(int argc, char *argv[]) + const char *cmd; + size_t i; + +- cmd = basename(argv[0]); ++ cmd = gnu_basename(argv[0]); + + for (i = 0; i < ARRAY_SIZE(kmod_compat_cmds); i++) { + if (streq(kmod_compat_cmds[i]->name, cmd)) diff --git a/package/kmod/Config.in b/package/kmod/Config.in new file mode 100644 index 00000000..e59b281c --- /dev/null +++ b/package/kmod/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_KMOD + bool "kmod" + depends on !BR2_STATIC_LIBS + help + handle kernel modules + + http://git.kernel.org/?p=utils/kernel/kmod/kmod.git + +if BR2_PACKAGE_KMOD + +config BR2_PACKAGE_KMOD_TOOLS + bool "kmod utilities" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + Install kmod module utilities (depmod, insmod, lsmod, + modinfo, modprobe, rmmod). + +endif + +comment "kmod needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/kmod/Config.in.host b/package/kmod/Config.in.host new file mode 100644 index 00000000..7680cecd --- /dev/null +++ b/package/kmod/Config.in.host @@ -0,0 +1,19 @@ +config BR2_PACKAGE_HOST_KMOD + bool "host kmod" + help + kmod is a set of tools to handle common tasks with Linux + kernel modules like insert, remove, list, check properties, + resolve dependencies and aliases. + +if BR2_PACKAGE_HOST_KMOD + +config BR2_PACKAGE_HOST_KMOD_GZ + bool "support gzip-compressed modules" + +config BR2_PACKAGE_HOST_KMOD_ZSTD + bool "support zstd-compressed modules" + +config BR2_PACKAGE_HOST_KMOD_XZ + bool "support xz-compressed modules" + +endif diff --git a/package/kmod/kmod.hash b/package/kmod/kmod.hash new file mode 100644 index 00000000..f4b01b20 --- /dev/null +++ b/package/kmod/kmod.hash @@ -0,0 +1,6 @@ +# From https://www.kernel.org/pub/linux/utils/kernel/kmod/sha256sums.asc +sha256 f5a6949043cc72c001b728d8c218609c5a15f3c33d75614b78c79418fcf00d80 kmod-31.tar.xz + +# Locally calculated +sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 libkmod/COPYING +sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 COPYING diff --git a/package/kmod/kmod.mk b/package/kmod/kmod.mk new file mode 100644 index 00000000..d83fb85a --- /dev/null +++ b/package/kmod/kmod.mk @@ -0,0 +1,120 @@ +################################################################################ +# +# kmod +# +################################################################################ + +KMOD_VERSION = 31 +KMOD_SOURCE = kmod-$(KMOD_VERSION).tar.xz +KMOD_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/kernel/kmod +KMOD_INSTALL_STAGING = YES +KMOD_DEPENDENCIES = host-pkgconf +HOST_KMOD_DEPENDENCIES = host-pkgconf + +# license info for libkmod only, conditionally add more below +KMOD_LICENSE = LGPL-2.1+ (library) +KMOD_LICENSE_FILES = libkmod/COPYING + +KMOD_CPE_ID_VENDOR = kernel + +# --gc-sections triggers binutils ld segfault +# https://sourceware.org/bugzilla/show_bug.cgi?id=21180 +ifeq ($(BR2_microblaze),y) +KMOD_CONF_ENV += cc_cv_LDFLAGS__Wl___gc_sections=false +endif + +# static linking not supported, see +# https://git.kernel.org/cgit/utils/kernel/kmod/kmod.git/commit/?id=b7016153ec8 +KMOD_CONF_OPTS = --disable-static --enable-shared + +KMOD_CONF_OPTS += --disable-manpages +HOST_KMOD_CONF_OPTS = --disable-manpages + +ifeq ($(BR2_PACKAGE_BASH_COMPLETION),y) +KMOD_CONF_OPTS += --with-bashcompletiondir=/usr/share/bash-completion/completions +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +KMOD_DEPENDENCIES += zlib +KMOD_CONF_OPTS += --with-zlib +else +KMOD_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +KMOD_DEPENDENCIES += zstd +KMOD_CONF_OPTS += --with-zstd +else +KMOD_CONF_OPTS += --without-zstd +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +KMOD_DEPENDENCIES += xz +KMOD_CONF_OPTS += --with-xz +else +KMOD_CONF_OPTS += --without-xz +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +KMOD_DEPENDENCIES += openssl +KMOD_CONF_OPTS += --with-openssl +else +KMOD_CONF_OPTS += --without-openssl +endif + +ifeq ($(BR2_PACKAGE_KMOD_TOOLS),y) + +# add license info for kmod tools +KMOD_LICENSE += , GPL-2.0+ (tools) +KMOD_LICENSE_FILES += COPYING + +# /sbin is really /usr/sbin with merged /usr, so adjust relative symlink +ifeq ($(BR2_ROOTFS_MERGED_USR),y) +KMOD_BIN_PATH = ../bin/kmod +else +KMOD_BIN_PATH = ../usr/bin/kmod +endif + +define KMOD_INSTALL_TOOLS + for i in depmod insmod lsmod modinfo modprobe rmmod; do \ + ln -sf $(KMOD_BIN_PATH) $(TARGET_DIR)/sbin/$$i; \ + done +endef + +KMOD_POST_INSTALL_TARGET_HOOKS += KMOD_INSTALL_TOOLS +else +KMOD_CONF_OPTS += --disable-tools +endif + +ifeq ($(BR2_PACKAGE_HOST_KMOD_GZ),y) +HOST_KMOD_DEPENDENCIES += host-zlib +HOST_KMOD_CONF_OPTS += --with-zlib +else +HOST_KMOD_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_HOST_KMOD_ZSTD),y) +HOST_KMOD_DEPENDENCIES += host-zstd +HOST_KMOD_CONF_OPTS += --with-zstd +else +HOST_KMOD_CONF_OPTS += --without-zstd +endif + +ifeq ($(BR2_PACKAGE_HOST_KMOD_XZ),y) +HOST_KMOD_DEPENDENCIES += host-xz +HOST_KMOD_CONF_OPTS += --with-xz +else +HOST_KMOD_CONF_OPTS += --without-xz +endif + +# We only install depmod, since that's the only tool used for the +# host. +define HOST_KMOD_INSTALL_TOOLS + mkdir -p $(HOST_DIR)/sbin/ + ln -sf ../bin/kmod $(HOST_DIR)/sbin/depmod +endef + +HOST_KMOD_POST_INSTALL_HOOKS += HOST_KMOD_INSTALL_TOOLS + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/kmon/Config.in b/package/kmon/Config.in new file mode 100644 index 00000000..7c56f387 --- /dev/null +++ b/package/kmon/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_KMON + bool "kmon" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_RUSTC + help + kmon provides a terminal UI for managing kernel modules + and monitoring kernel activities. + + https://github.com/orhun/kmon diff --git a/package/kmon/kmon.hash b/package/kmon/kmon.hash new file mode 100644 index 00000000..96400977 --- /dev/null +++ b/package/kmon/kmon.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 e4723d733a2b6ad5f318a6bea77f973f3a9dbfdb727ba00352a13b9db0522194 kmon-1.6.5-cargo2.tar.gz +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 LICENSE diff --git a/package/kmon/kmon.mk b/package/kmon/kmon.mk new file mode 100644 index 00000000..afd996f3 --- /dev/null +++ b/package/kmon/kmon.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# kmon +# +################################################################################ + +KMON_VERSION = 1.6.5 +KMON_SITE = $(call github,orhun,kmon,v$(KMON_VERSION)) +KMON_LICENSE = GPL-3.0 +KMON_LICENSE_FILES = LICENSE + +$(eval $(cargo-package)) diff --git a/package/kmscube/Config.in b/package/kmscube/Config.in new file mode 100644 index 00000000..f68f38b7 --- /dev/null +++ b/package/kmscube/Config.in @@ -0,0 +1,34 @@ +config BR2_PACKAGE_KMSCUBE + bool "kmscube" + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_HAS_LIBGBM + depends on BR2_PACKAGE_LIBGBM_HAS_FEATURE_FORMAT_MODIFIER_PLANE_COUNT + depends on BR2_PACKAGE_HAS_LIBGLES + depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm + select BR2_PACKAGE_LIBDRM + help + kmscube is an application to test kms/drm drivers. + + https://cgit.freedesktop.org/mesa/kmscube/ + +if BR2_PACKAGE_KMSCUBE + +config BR2_PACKAGE_KMSCUBE_GSTREAMER + bool "Enable gstreamer video support" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP + select BR2_PACKAGE_GSTREAMER1 + +endif + +comment "kmscube needs EGL, GBM and OpenGL ES, and a toolchain w/ thread support" + depends on \ + !BR2_PACKAGE_HAS_LIBEGL || \ + !BR2_PACKAGE_HAS_LIBGBM || \ + !BR2_PACKAGE_LIBGBM_HAS_FEATURE_FORMAT_MODIFIER_PLANE_COUNT || \ + !BR2_PACKAGE_HAS_LIBGLES || \ + !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/kmscube/kmscube.hash b/package/kmscube/kmscube.hash new file mode 100644 index 00000000..e5ca6e72 --- /dev/null +++ b/package/kmscube/kmscube.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 c7e7fd7ebcd59a5a57b717ba309a25b73e8028ed4f6bc95bd87e3b7ad5732834 kmscube-ea6c5d1eeefbfb0a1c27ab74a6e4621f1d9adf4c.tar.gz +sha256 f622099ab0d274133f6e62d5fccfe970b61134d80ed036f45f8cf1e90c3d5a05 COPYING diff --git a/package/kmscube/kmscube.mk b/package/kmscube/kmscube.mk new file mode 100644 index 00000000..eeb22061 --- /dev/null +++ b/package/kmscube/kmscube.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# kmscube +# +################################################################################ + +KMSCUBE_VERSION = ea6c5d1eeefbfb0a1c27ab74a6e4621f1d9adf4c +KMSCUBE_SITE = https://gitlab.freedesktop.org/mesa/kmscube/-/archive/$(KMSCUBE_VERSION) +KMSCUBE_LICENSE = MIT +KMSCUBE_LICENSE_FILES = COPYING +KMSCUBE_DEPENDENCIES = host-pkgconf libdrm libegl libgbm libgles + +ifeq ($(BR2_PACKAGE_KMSCUBE_GSTREAMER),y) +KMSCUBE_DEPENDENCIES += gst1-plugins-base gstreamer1 libglib2 +KMSCUBE_CONF_OPTS += -Dgstreamer=enabled +else +KMSCUBE_CONF_OPTS += -Dgstreamer=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +KMSCUBE_DEPENDENCIES += libpng +# libpng is automatically detected in meson, there is no build +# configuration option to pass. +endif + +$(eval $(meson-package)) diff --git a/package/kmsxx/Config.in b/package/kmsxx/Config.in new file mode 100644 index 00000000..fa327ba1 --- /dev/null +++ b/package/kmsxx/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_KMSXX + bool "kms++" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 # linux/dma-buf.h + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm + depends on BR2_USE_WCHAR # fmt + select BR2_PACKAGE_FMT + select BR2_PACKAGE_LIBDRM + help + libkms++ is a C++11 library for kernel mode setting. + + Also included are simple test tools for KMS. + + https://github.com/tomba/kmsxx + +if BR2_PACKAGE_KMSXX + +config BR2_PACKAGE_KMSXX_INSTALL_TESTS + bool "Install test programs" + help + This option allows to install the kmsxx test programs. + +endif + +comment "kms++ needs a toolchain w/ threads, C++, gcc >= 4.8, headers >= 4.11, wchar" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 \ + || !BR2_USE_WCHAR diff --git a/package/kmsxx/kmsxx.hash b/package/kmsxx/kmsxx.hash new file mode 100644 index 00000000..c141ef7e --- /dev/null +++ b/package/kmsxx/kmsxx.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 99759fe9334369ccd80ab0bbfe1110ee47e74f1e20abc2d7b2f028067ea0a0c3 kmsxx-824bbb1f4cd062d66b457faca50f904b34dfd96c.tar.gz +sha256 fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85 LICENSE diff --git a/package/kmsxx/kmsxx.mk b/package/kmsxx/kmsxx.mk new file mode 100644 index 00000000..8ebdffaa --- /dev/null +++ b/package/kmsxx/kmsxx.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# kmsxx +# +################################################################################ + +KMSXX_VERSION = 824bbb1f4cd062d66b457faca50f904b34dfd96c +KMSXX_SITE = $(call github,tomba,kmsxx,$(KMSXX_VERSION)) +KMSXX_LICENSE = MPL-2.0 +KMSXX_LICENSE_FILES = LICENSE +KMSXX_INSTALL_STAGING = YES +KMSXX_DEPENDENCIES = fmt libdrm host-pkgconf +KMSXX_CONF_OPTS = \ + -Dkmscube=false \ + -Dpykms=disabled \ + -Domap=disabled \ + -Dsystem-pybind11=enabled + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +KMSXX_CXXFLAGS += $(TARGET_CXXFLAGS) -O0 +endif + +ifeq ($(BR2_PACKAGE_KMSXX_INSTALL_TESTS),y) +KMSXX_CONF_OPTS += -Dutils=true +# extra handling for some utils not installed by default +KMSXX_EXTRA_UTILS = kmsview kmscapture omap-wbcap omap-wbm2m +ifeq ($(BR2_PACKAGE_LIBEVDEV),y) +KMSXX_DEPENDENCIES += libevdev +KMSXX_EXTRA_UTILS += kmstouch +endif +define KMSXX_INSTALL_EXTRA_UTILS + $(foreach t,$(KMSXX_EXTRA_UTILS),\ + $(INSTALL) -D -m 0755 $(@D)/build/utils/$(t) \ + $(TARGET_DIR)/usr/bin/$(t) + ) +endef +KMSXX_POST_INSTALL_TARGET_HOOKS += KMSXX_INSTALL_EXTRA_UTILS +else +KMSXX_CONF_OPTS += -Dutils=false +endif + +$(eval $(meson-package)) diff --git a/package/knock/Config.in b/package/knock/Config.in new file mode 100644 index 00000000..5a4c00d9 --- /dev/null +++ b/package/knock/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_KNOCK + bool "knock" + help + A port knocking implementation. + Provides a daemon and a user application. Port knocking can be + used to run an arbitrary application, once the daemon detects + a predefined sequence of incoming TCP/UDP packets on a network + interface. This can be used, e.g. to open up ports in a + firewall. + + http://www.zeroflux.org/projects/knock + +if BR2_PACKAGE_KNOCK + +config BR2_PACKAGE_KNOCK_KNOCKD + bool "knockd" + default y + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBPCAP + help + Enable knockd + +endif diff --git a/package/knock/knock.hash b/package/knock/knock.hash new file mode 100644 index 00000000..fb8d9aef --- /dev/null +++ b/package/knock/knock.hash @@ -0,0 +1,3 @@ +# locally computed hash +sha256 7a82c276ca1540faa7f5bb25010f4a59d45323a31c44a30fbe4a6e484dd18b1a knock-0.8.tar.gz +sha256 d747e19206e41702e40822dd91d37cbf40edd86f364ea416d667a0e3013f7189 COPYING diff --git a/package/knock/knock.mk b/package/knock/knock.mk new file mode 100644 index 00000000..de70f262 --- /dev/null +++ b/package/knock/knock.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# knock +# +################################################################################ + +KNOCK_VERSION = 0.8 +KNOCK_SITE = $(call github,jvinet,knock,v$(KNOCK_VERSION)) +KNOCK_AUTORECONF = YES +KNOCK_LICENSE = GPL-2.0+ +KNOCK_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_KNOCK_KNOCKD),y) +KNOCK_DEPENDENCIES += libpcap +KNOCK_CONF_OPTS += --enable-knockd +ifeq ($(BR2_STATIC_LIBS),y) +KNOCK_CONF_OPTS += LIBS="`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`" +endif +else +KNOCK_CONF_OPTS += --disable-knockd +endif + +$(eval $(autotools-package)) diff --git a/package/kodi-audiodecoder-modplug/Config.in b/package/kodi-audiodecoder-modplug/Config.in new file mode 100644 index 00000000..856ca8be --- /dev/null +++ b/package/kodi-audiodecoder-modplug/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_AUDIODECODER_MODPLUG + bool "kodi-audiodecoder-modplug" + select BR2_PACKAGE_LIBMODPLUG + help + Modplug decoder addon for Kodi + + https://github.com/xbmc/audiodecoder.modplug diff --git a/package/kodi-audiodecoder-modplug/kodi-audiodecoder-modplug.hash b/package/kodi-audiodecoder-modplug/kodi-audiodecoder-modplug.hash new file mode 100644 index 00000000..054e7581 --- /dev/null +++ b/package/kodi-audiodecoder-modplug/kodi-audiodecoder-modplug.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 7c637f4e012e7e26a3431244a8444331f9bfeaf9c6af73cac799b58b9a0eefdf kodi-audiodecoder-modplug-e697156054ea3eb5974fb9727e046287220985e5.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-audiodecoder-modplug/kodi-audiodecoder-modplug.mk b/package/kodi-audiodecoder-modplug/kodi-audiodecoder-modplug.mk new file mode 100644 index 00000000..e435591c --- /dev/null +++ b/package/kodi-audiodecoder-modplug/kodi-audiodecoder-modplug.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-audiodecoder-modplug +# +################################################################################ + +KODI_AUDIODECODER_MODPLUG_VERSION = e697156054ea3eb5974fb9727e046287220985e5 +KODI_AUDIODECODER_MODPLUG_SITE = $(call github,xbmc,audiodecoder.modplug,$(KODI_AUDIODECODER_MODPLUG_VERSION)) +KODI_AUDIODECODER_MODPLUG_LICENSE = GPL-2.0+ +KODI_AUDIODECODER_MODPLUG_LICENSE_FILES = LICENSE.md +KODI_AUDIODECODER_MODPLUG_DEPENDENCIES = kodi libmodplug + +$(eval $(cmake-package)) diff --git a/package/kodi-audiodecoder-nosefart/Config.in b/package/kodi-audiodecoder-nosefart/Config.in new file mode 100644 index 00000000..bb56a3d6 --- /dev/null +++ b/package/kodi-audiodecoder-nosefart/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_KODI_AUDIODECODER_NOSEFART + bool "kodi-audiodecoder-nosefart" + help + Nosefart decoder addon for Kodi + + https://github.com/xbmc/audiodecoder.nosefart diff --git a/package/kodi-audiodecoder-nosefart/kodi-audiodecoder-nosefart.hash b/package/kodi-audiodecoder-nosefart/kodi-audiodecoder-nosefart.hash new file mode 100644 index 00000000..b2e3a36a --- /dev/null +++ b/package/kodi-audiodecoder-nosefart/kodi-audiodecoder-nosefart.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 fd0d12af9d3d59fbcf41e67d1f8ac9e1339c702219da4a3393688e89ff911ebb kodi-audiodecoder-nosefart-92c6daeb278b02cd63fee724c96051421c9149f3.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-audiodecoder-nosefart/kodi-audiodecoder-nosefart.mk b/package/kodi-audiodecoder-nosefart/kodi-audiodecoder-nosefart.mk new file mode 100644 index 00000000..74254471 --- /dev/null +++ b/package/kodi-audiodecoder-nosefart/kodi-audiodecoder-nosefart.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-audiodecoder-nosefart +# +################################################################################ + +KODI_AUDIODECODER_NOSEFART_VERSION = 92c6daeb278b02cd63fee724c96051421c9149f3 +KODI_AUDIODECODER_NOSEFART_SITE = $(call github,xbmc,audiodecoder.nosefart,$(KODI_AUDIODECODER_NOSEFART_VERSION)) +KODI_AUDIODECODER_NOSEFART_LICENSE = GPL-2.0+ +KODI_AUDIODECODER_NOSEFART_LICENSE_FILES = LICENSE.md +KODI_AUDIODECODER_NOSEFART_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-audiodecoder-sidplay/Config.in b/package/kodi-audiodecoder-sidplay/Config.in new file mode 100644 index 00000000..eca4160a --- /dev/null +++ b/package/kodi-audiodecoder-sidplay/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_AUDIODECODER_SIDPLAY + bool "kodi-audiodecoder-sidplay" + select BR2_PACKAGE_LIBSIDPLAY2 + help + Sidplay decoder addon for Kodi + + https://github.com/xbmc/audiodecoder.sidplay diff --git a/package/kodi-audiodecoder-sidplay/kodi-audiodecoder-sidplay.hash b/package/kodi-audiodecoder-sidplay/kodi-audiodecoder-sidplay.hash new file mode 100644 index 00000000..1f0da25f --- /dev/null +++ b/package/kodi-audiodecoder-sidplay/kodi-audiodecoder-sidplay.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 63090c74af51db7a859f8a2aa317ea2c4f2125be3306190502efc5522f00ec93 kodi-audiodecoder-sidplay-0ba1bc70faced93352cdd9ec1a5ec84e22a2e0f5.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-audiodecoder-sidplay/kodi-audiodecoder-sidplay.mk b/package/kodi-audiodecoder-sidplay/kodi-audiodecoder-sidplay.mk new file mode 100644 index 00000000..a0890132 --- /dev/null +++ b/package/kodi-audiodecoder-sidplay/kodi-audiodecoder-sidplay.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-audiodecoder-sidplay +# +################################################################################ + +KODI_AUDIODECODER_SIDPLAY_VERSION = 0ba1bc70faced93352cdd9ec1a5ec84e22a2e0f5 +KODI_AUDIODECODER_SIDPLAY_SITE = $(call github,xbmc,audiodecoder.sidplay,$(KODI_AUDIODECODER_SIDPLAY_VERSION)) +KODI_AUDIODECODER_SIDPLAY_LICENSE = GPL-2.0+ +KODI_AUDIODECODER_SIDPLAY_LICENSE_FILES = LICENSE.md +KODI_AUDIODECODER_SIDPLAY_DEPENDENCIES = host-pkgconf kodi libsidplay2 + +$(eval $(cmake-package)) diff --git a/package/kodi-audiodecoder-snesapu/Config.in b/package/kodi-audiodecoder-snesapu/Config.in new file mode 100644 index 00000000..2c3bb15d --- /dev/null +++ b/package/kodi-audiodecoder-snesapu/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_KODI_AUDIODECODER_SNESAPU + bool "kodi-audiodecoder-snesapu" + help + SPC decoder addon for Kodi + + https://github.com/xbmc/audiodecoder.snesapu diff --git a/package/kodi-audiodecoder-snesapu/kodi-audiodecoder-snesapu.hash b/package/kodi-audiodecoder-snesapu/kodi-audiodecoder-snesapu.hash new file mode 100644 index 00000000..db8b33cb --- /dev/null +++ b/package/kodi-audiodecoder-snesapu/kodi-audiodecoder-snesapu.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 4932d6d00c3b8662bc6e1600757bd85856c79028c5ecb920fa0d257bab30b7a2 kodi-audiodecoder-snesapu-532186702c49ba7fe007badc74fa6a6e9cac48fe.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-audiodecoder-snesapu/kodi-audiodecoder-snesapu.mk b/package/kodi-audiodecoder-snesapu/kodi-audiodecoder-snesapu.mk new file mode 100644 index 00000000..5b6cafcc --- /dev/null +++ b/package/kodi-audiodecoder-snesapu/kodi-audiodecoder-snesapu.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-audiodecoder-snesapu +# +################################################################################ + +KODI_AUDIODECODER_SNESAPU_VERSION = 532186702c49ba7fe007badc74fa6a6e9cac48fe +KODI_AUDIODECODER_SNESAPU_SITE = $(call github,xbmc,audiodecoder.snesapu,$(KODI_AUDIODECODER_SNESAPU_VERSION)) +KODI_AUDIODECODER_SNESAPU_LICENSE = GPL-2.0+ +KODI_AUDIODECODER_SNESAPU_LICENSE_FILES = LICENSE.md +KODI_AUDIODECODER_SNESAPU_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-audiodecoder-stsound/Config.in b/package/kodi-audiodecoder-stsound/Config.in new file mode 100644 index 00000000..2001e481 --- /dev/null +++ b/package/kodi-audiodecoder-stsound/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_KODI_AUDIODECODER_STSOUND + bool "kodi-audiodecoder-stsound" + help + YM decoder addon for Kodi + + https://github.com/xbmc/audiodecoder.stsound diff --git a/package/kodi-audiodecoder-stsound/kodi-audiodecoder-stsound.hash b/package/kodi-audiodecoder-stsound/kodi-audiodecoder-stsound.hash new file mode 100644 index 00000000..daa3f537 --- /dev/null +++ b/package/kodi-audiodecoder-stsound/kodi-audiodecoder-stsound.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 bf292e364bd9bbc0286fb49815cd4c2f86e5952d9bd1c878f6d1952d081d87de kodi-audiodecoder-stsound-b72c793e2ada7ab2358568ec5b01fd71ddf7cdb3.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-audiodecoder-stsound/kodi-audiodecoder-stsound.mk b/package/kodi-audiodecoder-stsound/kodi-audiodecoder-stsound.mk new file mode 100644 index 00000000..36535cde --- /dev/null +++ b/package/kodi-audiodecoder-stsound/kodi-audiodecoder-stsound.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-audiodecoder-stsound +# +################################################################################ + +KODI_AUDIODECODER_STSOUND_VERSION = b72c793e2ada7ab2358568ec5b01fd71ddf7cdb3 +KODI_AUDIODECODER_STSOUND_SITE = $(call github,xbmc,audiodecoder.stsound,$(KODI_AUDIODECODER_STSOUND_VERSION)) +KODI_AUDIODECODER_STSOUND_LICENSE = GPL-2.0+ +KODI_AUDIODECODER_STSOUND_LICENSE_FILES = LICENSE.md +KODI_AUDIODECODER_STSOUND_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-audiodecoder-timidity/Config.in b/package/kodi-audiodecoder-timidity/Config.in new file mode 100644 index 00000000..ad3caf1e --- /dev/null +++ b/package/kodi-audiodecoder-timidity/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_KODI_AUDIODECODER_TIMIDITY + bool "kodi-audiodecoder-timidity" + help + Timidity decoder addon for Kodi + + https://github.com/xbmc/audiodecoder.timidity diff --git a/package/kodi-audiodecoder-timidity/kodi-audiodecoder-timidity.hash b/package/kodi-audiodecoder-timidity/kodi-audiodecoder-timidity.hash new file mode 100644 index 00000000..8714ebbd --- /dev/null +++ b/package/kodi-audiodecoder-timidity/kodi-audiodecoder-timidity.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 6f8e72ab3c63db04fd863893bbc5afe2c8cfcc7a71d86b68ed5bfe26ea5bf066 kodi-audiodecoder-timidity-00bee97ded3bc824dc454104bd53d0f431404571.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-audiodecoder-timidity/kodi-audiodecoder-timidity.mk b/package/kodi-audiodecoder-timidity/kodi-audiodecoder-timidity.mk new file mode 100644 index 00000000..bef0d672 --- /dev/null +++ b/package/kodi-audiodecoder-timidity/kodi-audiodecoder-timidity.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-audiodecoder-timidity +# +################################################################################ + +KODI_AUDIODECODER_TIMIDITY_VERSION = 00bee97ded3bc824dc454104bd53d0f431404571 +KODI_AUDIODECODER_TIMIDITY_SITE = $(call github,xbmc,audiodecoder.timidity,$(KODI_AUDIODECODER_TIMIDITY_VERSION)) +KODI_AUDIODECODER_TIMIDITY_LICENSE = GPL-2.0+ +KODI_AUDIODECODER_TIMIDITY_LICENSE_FILES = LICENSE.md +KODI_AUDIODECODER_TIMIDITY_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-audiodecoder-vgmstream/Config.in b/package/kodi-audiodecoder-vgmstream/Config.in new file mode 100644 index 00000000..440edc7c --- /dev/null +++ b/package/kodi-audiodecoder-vgmstream/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_KODI_AUDIODECODER_VGMSTREAM + bool "kodi-audiodecoder-vgmstream" + help + VGM decoder addon for Kodi + + https://github.com/xbmc/audiodecoder.vgmstream diff --git a/package/kodi-audiodecoder-vgmstream/kodi-audiodecoder-vgmstream.hash b/package/kodi-audiodecoder-vgmstream/kodi-audiodecoder-vgmstream.hash new file mode 100644 index 00000000..a39c49bb --- /dev/null +++ b/package/kodi-audiodecoder-vgmstream/kodi-audiodecoder-vgmstream.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 c198151522b082feef1855e8a94d45ee498388c6764d58b92af9de20c72896c0 kodi-audiodecoder-vgmstream-56bedfc90ca600401e6dda407a5b933da0976664.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-audiodecoder-vgmstream/kodi-audiodecoder-vgmstream.mk b/package/kodi-audiodecoder-vgmstream/kodi-audiodecoder-vgmstream.mk new file mode 100644 index 00000000..62d95689 --- /dev/null +++ b/package/kodi-audiodecoder-vgmstream/kodi-audiodecoder-vgmstream.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-audiodecoder-vgmstream +# +################################################################################ + +KODI_AUDIODECODER_VGMSTREAM_VERSION = 56bedfc90ca600401e6dda407a5b933da0976664 +KODI_AUDIODECODER_VGMSTREAM_SITE = $(call github,xbmc,audiodecoder.vgmstream,$(KODI_AUDIODECODER_VGMSTREAM_VERSION)) +KODI_AUDIODECODER_VGMSTREAM_LICENSE = GPL-2.0+ +KODI_AUDIODECODER_VGMSTREAM_LICENSE_FILES = LICENSE.md +KODI_AUDIODECODER_VGMSTREAM_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-audioencoder-flac/Config.in b/package/kodi-audioencoder-flac/Config.in new file mode 100644 index 00000000..95acbbad --- /dev/null +++ b/package/kodi-audioencoder-flac/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_KODI_AUDIOENCODER_FLAC + bool "kodi-audioencoder-flac" + select BR2_PACKAGE_FLAC + select BR2_PACKAGE_KODI_OPTICALDRIVE + select BR2_PACKAGE_LIBOGG + help + An audioencoder addon for Kodi + + https://github.com/xbmc/audioencoder.flac diff --git a/package/kodi-audioencoder-flac/kodi-audioencoder-flac.hash b/package/kodi-audioencoder-flac/kodi-audioencoder-flac.hash new file mode 100644 index 00000000..8910a6e4 --- /dev/null +++ b/package/kodi-audioencoder-flac/kodi-audioencoder-flac.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 37bf7e8b6bff74f7609df7c7d0672b2c847ac6bc8d0a586a7a8c136712d57cbd kodi-audioencoder-flac-de8f0937d8f3ddda987599041b82b7f1c32beec7.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-audioencoder-flac/kodi-audioencoder-flac.mk b/package/kodi-audioencoder-flac/kodi-audioencoder-flac.mk new file mode 100644 index 00000000..6d7920b1 --- /dev/null +++ b/package/kodi-audioencoder-flac/kodi-audioencoder-flac.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-audioencoder-flac +# +################################################################################ + +KODI_AUDIOENCODER_FLAC_VERSION = de8f0937d8f3ddda987599041b82b7f1c32beec7 +KODI_AUDIOENCODER_FLAC_SITE = $(call github,xbmc,audioencoder.flac,$(KODI_AUDIOENCODER_FLAC_VERSION)) +KODI_AUDIOENCODER_FLAC_LICENSE = GPL-2.0+ +KODI_AUDIOENCODER_FLAC_LICENSE_FILES = LICENSE.md +KODI_AUDIOENCODER_FLAC_DEPENDENCIES = flac kodi libogg host-pkgconf + +$(eval $(cmake-package)) diff --git a/package/kodi-audioencoder-lame/Config.in b/package/kodi-audioencoder-lame/Config.in new file mode 100644 index 00000000..b050ac6b --- /dev/null +++ b/package/kodi-audioencoder-lame/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_KODI_AUDIOENCODER_LAME + bool "kodi-audioencoder-lame" + select BR2_PACKAGE_KODI_OPTICALDRIVE + select BR2_PACKAGE_LAME + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + An audioencoder addon for Kodi + + https://github.com/xbmc/audioencoder.lame diff --git a/package/kodi-audioencoder-lame/kodi-audioencoder-lame.hash b/package/kodi-audioencoder-lame/kodi-audioencoder-lame.hash new file mode 100644 index 00000000..17a25247 --- /dev/null +++ b/package/kodi-audioencoder-lame/kodi-audioencoder-lame.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 4241e4d4a5b6619de684d67b79b8e7b18003cee6dcc6d8f87e5c429899f48146 kodi-audioencoder-lame-f272aeb7aeb94e9d8bf1454e23f0232790bf0ef6.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-audioencoder-lame/kodi-audioencoder-lame.mk b/package/kodi-audioencoder-lame/kodi-audioencoder-lame.mk new file mode 100644 index 00000000..b0a87099 --- /dev/null +++ b/package/kodi-audioencoder-lame/kodi-audioencoder-lame.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# kodi-audioencoder-lame +# +################################################################################ + +KODI_AUDIOENCODER_LAME_VERSION = f272aeb7aeb94e9d8bf1454e23f0232790bf0ef6 +KODI_AUDIOENCODER_LAME_SITE = $(call github,xbmc,audioencoder.lame,$(KODI_AUDIOENCODER_LAME_VERSION)) +KODI_AUDIOENCODER_LAME_LICENSE = GPL-2.0+ +KODI_AUDIOENCODER_LAME_LICENSE_FILES = LICENSE.md +KODI_AUDIOENCODER_LAME_DEPENDENCIES = kodi lame +KODI_AUDIOENCODER_LAME_CONF_OPTS += \ + -DLAME_INCLUDE_DIRS=$(STAGING_DIR)/usr/include + +ifeq ($(BR2_ENABLE_LOCALE),) +KODI_AUDIOENCODER_LAME_DEPENDENCIES += libiconv +endif + +$(eval $(cmake-package)) diff --git a/package/kodi-audioencoder-vorbis/Config.in b/package/kodi-audioencoder-vorbis/Config.in new file mode 100644 index 00000000..8b84626f --- /dev/null +++ b/package/kodi-audioencoder-vorbis/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_KODI_AUDIOENCODER_VORBIS + bool "kodi-audioencoder-vorbis" + select BR2_PACKAGE_KODI_OPTICALDRIVE + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_LIBVORBIS + help + An audioencoder addon for Kodi + + https://github.com/xbmc/audioencoder.vorbis diff --git a/package/kodi-audioencoder-vorbis/kodi-audioencoder-vorbis.hash b/package/kodi-audioencoder-vorbis/kodi-audioencoder-vorbis.hash new file mode 100644 index 00000000..6a561771 --- /dev/null +++ b/package/kodi-audioencoder-vorbis/kodi-audioencoder-vorbis.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 6b05ece93cb843a84facd1240141b6f1ea0653b07e95939f9837310bc3ecdda7 kodi-audioencoder-vorbis-88c1a68efa644aaf2bb91378e26a3f054dcf025c.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-audioencoder-vorbis/kodi-audioencoder-vorbis.mk b/package/kodi-audioencoder-vorbis/kodi-audioencoder-vorbis.mk new file mode 100644 index 00000000..11c1a863 --- /dev/null +++ b/package/kodi-audioencoder-vorbis/kodi-audioencoder-vorbis.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-audioencoder-vorbis +# +################################################################################ + +KODI_AUDIOENCODER_VORBIS_VERSION = 88c1a68efa644aaf2bb91378e26a3f054dcf025c +KODI_AUDIOENCODER_VORBIS_SITE = $(call github,xbmc,audioencoder.vorbis,$(KODI_AUDIOENCODER_VORBIS_VERSION)) +KODI_AUDIOENCODER_VORBIS_LICENSE = GPL-2.0+ +KODI_AUDIOENCODER_VORBIS_LICENSE_FILES = LICENSE.md +KODI_AUDIOENCODER_VORBIS_DEPENDENCIES = kodi libogg libvorbis host-pkgconf + +$(eval $(cmake-package)) diff --git a/package/kodi-audioencoder-wav/Config.in b/package/kodi-audioencoder-wav/Config.in new file mode 100644 index 00000000..6bdbb9aa --- /dev/null +++ b/package/kodi-audioencoder-wav/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_AUDIOENCODER_WAV + bool "kodi-audioencoder-wav" + select BR2_PACKAGE_KODI_OPTICALDRIVE + help + An audioencoder addon for Kodi + + https://github.com/xbmc/audioencoder.wav diff --git a/package/kodi-audioencoder-wav/kodi-audioencoder-wav.hash b/package/kodi-audioencoder-wav/kodi-audioencoder-wav.hash new file mode 100644 index 00000000..56f16824 --- /dev/null +++ b/package/kodi-audioencoder-wav/kodi-audioencoder-wav.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 e2f9d7bf7be9b4d521a103115e204150fd029c50fb55e6fd700d32945a8d8551 kodi-audioencoder-wav-d4449bb3f2066893649cdbcc72375a628e610289.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-audioencoder-wav/kodi-audioencoder-wav.mk b/package/kodi-audioencoder-wav/kodi-audioencoder-wav.mk new file mode 100644 index 00000000..8dbc8403 --- /dev/null +++ b/package/kodi-audioencoder-wav/kodi-audioencoder-wav.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-audioencoder-wav +# +################################################################################ + +KODI_AUDIOENCODER_WAV_VERSION = d4449bb3f2066893649cdbcc72375a628e610289 +KODI_AUDIOENCODER_WAV_SITE = $(call github,xbmc,audioencoder.wav,$(KODI_AUDIOENCODER_WAV_VERSION)) +KODI_AUDIOENCODER_WAV_LICENSE = GPL-2.0+ +KODI_AUDIOENCODER_WAV_LICENSE_FILES = LICENSE.md +KODI_AUDIOENCODER_WAV_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-imagedecoder-heif/Config.in b/package/kodi-imagedecoder-heif/Config.in new file mode 100644 index 00000000..d0950385 --- /dev/null +++ b/package/kodi-imagedecoder-heif/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_KODI_IMAGEDECODER_HEIF + bool "kodi-imagedecoder-heif" + depends on BR2_INSTALL_LIBSTDCPP # libde265, libheif, tinyxml2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libde265 + depends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_30730 # libheif + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # libheif + select BR2_PACKAGE_LIBDE265 + select BR2_PACKAGE_LIBHEIF + select BR2_PACKAGE_TINYXML2 + help + HEIF image decoder add-on for Kodi + + https://github.com/xbmc/imagedecoder.heif + +comment "kodi-imagedecoder-heif needs a toolchain w/ C++, threads, gcc >= 4.8" + depends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_30730 # libheif + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 diff --git a/package/kodi-imagedecoder-heif/kodi-imagedecoder-heif.hash b/package/kodi-imagedecoder-heif/kodi-imagedecoder-heif.hash new file mode 100644 index 00000000..c68a2680 --- /dev/null +++ b/package/kodi-imagedecoder-heif/kodi-imagedecoder-heif.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 12578bc027871dce331ea82070dd8f3e59bf89e72ae43b9178b8083a36be9c23 kodi-imagedecoder-heif-bf9771060dddc753ac7cf1dbf561059cad54dfb0.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-imagedecoder-heif/kodi-imagedecoder-heif.mk b/package/kodi-imagedecoder-heif/kodi-imagedecoder-heif.mk new file mode 100644 index 00000000..600f3fa7 --- /dev/null +++ b/package/kodi-imagedecoder-heif/kodi-imagedecoder-heif.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-imagedecoder-heif +# +################################################################################ + +KODI_IMAGEDECODER_HEIF_VERSION = bf9771060dddc753ac7cf1dbf561059cad54dfb0 +KODI_IMAGEDECODER_HEIF_SITE = $(call github,xbmc,imagedecoder.heif,$(KODI_IMAGEDECODER_HEIF_VERSION)) +KODI_IMAGEDECODER_HEIF_LICENSE = GPL-2.0+ +KODI_IMAGEDECODER_HEIF_LICENSE_FILES = LICENSE.md +KODI_IMAGEDECODER_HEIF_DEPENDENCIES = kodi libde265 libheif tinyxml2 + +$(eval $(cmake-package)) diff --git a/package/kodi-imagedecoder-raw/Config.in b/package/kodi-imagedecoder-raw/Config.in new file mode 100644 index 00000000..1f04a2a5 --- /dev/null +++ b/package/kodi-imagedecoder-raw/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_KODI_IMAGEDECODER_RAW + bool "kodi-imagedecoder-raw" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LCMS2 + select BR2_PACKAGE_LIBRAW + help + RAW image decoder add-on for Kodi + + https://github.com/xbmc/imagedecoder.raw + +comment "kodi-imagedecoder-raw needs a toolchain w/ C++" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/kodi-imagedecoder-raw/kodi-imagedecoder-raw.hash b/package/kodi-imagedecoder-raw/kodi-imagedecoder-raw.hash new file mode 100644 index 00000000..8f945104 --- /dev/null +++ b/package/kodi-imagedecoder-raw/kodi-imagedecoder-raw.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 451ce58acf377dd4758d78baf46f3e8c35d1e76b1a073744963f7a837f336707 kodi-imagedecoder-raw-7be9cf4d985c277f3a059f64873d81b24e6edd70.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-imagedecoder-raw/kodi-imagedecoder-raw.mk b/package/kodi-imagedecoder-raw/kodi-imagedecoder-raw.mk new file mode 100644 index 00000000..87699ffa --- /dev/null +++ b/package/kodi-imagedecoder-raw/kodi-imagedecoder-raw.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-imagedecoder-raw +# +################################################################################ + +KODI_IMAGEDECODER_RAW_VERSION = 7be9cf4d985c277f3a059f64873d81b24e6edd70 +KODI_IMAGEDECODER_RAW_SITE = $(call github,xbmc,imagedecoder.raw,$(KODI_IMAGEDECODER_RAW_VERSION)) +KODI_IMAGEDECODER_RAW_LICENSE = GPL-2.0+ +KODI_IMAGEDECODER_RAW_LICENSE_FILES = LICENSE.md +KODI_IMAGEDECODER_RAW_DEPENDENCIES = kodi jpeg lcms2 libraw + +$(eval $(cmake-package)) diff --git a/package/kodi-inputstream-adaptive/Config.in b/package/kodi-inputstream-adaptive/Config.in new file mode 100644 index 00000000..f1f98b83 --- /dev/null +++ b/package/kodi-inputstream-adaptive/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_KODI_INPUTSTREAM_ADAPTIVE + bool "kodi-inputstream-adaptive" + # wvdecrypter/cdm/build/build_config.h + depends on BR2_aarch64 || BR2_arm || BR2_i386 || BR2_mipsel \ + || BR2_mips64el || BR2_x86_64 + select BR2_PACKAGE_BENTO4 + select BR2_PACKAGE_PUGIXML + help + Kodi inputstream addon for several manifest types + + https://github.com/xbmc/inputstream.adaptive diff --git a/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash b/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash new file mode 100644 index 00000000..82325ab0 --- /dev/null +++ b/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash @@ -0,0 +1,9 @@ +# Locally computed +sha256 caf71b67cf242c600878718dab8227947062a28485078b8bf68ac72aef51e12c kodi-inputstream-adaptive-21.4.10-Omega.tar.gz +sha256 48632d57fbb6ab8f50cbf4deced5c91e733fa7ff292687c4816b77f28e483df9 LICENSE.md +sha256 02f864f3e07456785625968022ce811c5640301bfd2ae70963efea89d306790a LICENSES/README.md +sha256 0b7f5dcb3d2c28ff78d999786028930e762df0baa2f52955782e378ec5b636a8 LICENSES/BSD-2-Clause-Views +sha256 db15ad8651cae3da082c555f3b5a84ffe2b697695ba5e4d9d391395c15f7af14 LICENSES/BSD-3-Clause +sha256 184867bbdccfe35775d9ce80ee9a5739d96a647d88b383f44351770c637a97f9 LICENSES/google-patent-license-webm +sha256 ac71e3e4eb5973038a48907ed1b036e0fcd486033b342e38445c246f12c46b47 LICENSES/GPL-2.0-or-later +sha256 44ed58e0d80f7d6261bba01aa5c8a59995ee0180512e1c2a47bfff1b5be240f2 LICENSES/RSA-MD diff --git a/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk b/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk new file mode 100644 index 00000000..b6825c1f --- /dev/null +++ b/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# kodi-inputstream-adaptive +# +################################################################################ + +KODI_INPUTSTREAM_ADAPTIVE_VERSION = 21.4.10-Omega +KODI_INPUTSTREAM_ADAPTIVE_SITE = $(call github,xbmc,inputstream.adaptive,$(KODI_INPUTSTREAM_ADAPTIVE_VERSION)) +KODI_INPUTSTREAM_ADAPTIVE_LICENSE = \ + BSD-2-Clause-Views \ + BSD-3-Clause \ + google-patent-license-webm \ + GPL-2.0-or-later \ + RSA-MD5 + +KODI_INPUTSTREAM_ADAPTIVE_LICENSE_FILES = \ + LICENSE.md \ + LICENSES/README.md \ + LICENSES/BSD-2-Clause-Views \ + LICENSES/BSD-3-Clause \ + LICENSES/google-patent-license-webm \ + LICENSES/GPL-2.0-or-later \ + LICENSES/RSA-MD + +KODI_INPUTSTREAM_ADAPTIVE_DEPENDENCIES = bento4 kodi pugixml + +$(eval $(cmake-package)) diff --git a/package/kodi-inputstream-ffmpegdirect/Config.in b/package/kodi-inputstream-ffmpegdirect/Config.in new file mode 100644 index 00000000..4f246e17 --- /dev/null +++ b/package/kodi-inputstream-ffmpegdirect/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_KODI_INPUTSTREAM_FFMPEGDIRECT + bool "kodi-inputstream-ffmpegdirect" + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_FFMPEG_GPL + select BR2_PACKAGE_FFMPEG_POSTPROC + help + This is a Kodi input stream addon for streams that can be + opened by FFmpeg's libavformat, such as plain TS, HLS and + DASH streams. + + https://github.com/xbmc/inputstream.ffmpegdirect diff --git a/package/kodi-inputstream-ffmpegdirect/kodi-inputstream-ffmpegdirect.hash b/package/kodi-inputstream-ffmpegdirect/kodi-inputstream-ffmpegdirect.hash new file mode 100644 index 00000000..536bdc70 --- /dev/null +++ b/package/kodi-inputstream-ffmpegdirect/kodi-inputstream-ffmpegdirect.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 b28ccbd489d9b69779fd818ee158f69ebd6fd85b1f0410ffc8098ff0c8665bdc kodi-inputstream-ffmpegdirect-21.3.5-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-inputstream-ffmpegdirect/kodi-inputstream-ffmpegdirect.mk b/package/kodi-inputstream-ffmpegdirect/kodi-inputstream-ffmpegdirect.mk new file mode 100644 index 00000000..d9d46ed7 --- /dev/null +++ b/package/kodi-inputstream-ffmpegdirect/kodi-inputstream-ffmpegdirect.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kodi-inputstream-ffmpegdirect +# +################################################################################ + +KODI_INPUTSTREAM_FFMPEGDIRECT_VERSION = 21.3.5-Omega +KODI_INPUTSTREAM_FFMPEGDIRECT_SITE = $(call github,xbmc,inputstream.ffmpegdirect,$(KODI_INPUTSTREAM_FFMPEGDIRECT_VERSION)) +KODI_INPUTSTREAM_FFMPEGDIRECT_LICENSE = GPL-2.0+ +KODI_INPUTSTREAM_FFMPEGDIRECT_LICENSE_FILES = LICENSE.md +KODI_INPUTSTREAM_FFMPEGDIRECT_DEPENDENCIES = bzip2 ffmpeg kodi +KODI_INPUTSTREAM_FFMPEGDIRECT_CONF_OPTS = \ + -DFFMPEG_PATH=$(STAGING_DIR)/usr + +$(eval $(cmake-package)) diff --git a/package/kodi-inputstream-rtmp/Config.in b/package/kodi-inputstream-rtmp/Config.in new file mode 100644 index 00000000..c4bd2e13 --- /dev/null +++ b/package/kodi-inputstream-rtmp/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_KODI_INPUTSTREAM_RTMP + bool "kodi-inputstream-rtmp" + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_RTMPDUMP + select BR2_PACKAGE_ZLIB + help + RTMP input stream add-on for Kodi + + https://github.com/xbmc/inputstream.rtmp diff --git a/package/kodi-inputstream-rtmp/kodi-inputstream-rtmp.hash b/package/kodi-inputstream-rtmp/kodi-inputstream-rtmp.hash new file mode 100644 index 00000000..7a86e540 --- /dev/null +++ b/package/kodi-inputstream-rtmp/kodi-inputstream-rtmp.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 193fabb14cd9d92baecf7319c50ba183bc6254385bf187fe2a726159134df2a9 kodi-inputstream-rtmp-21.1.0-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-inputstream-rtmp/kodi-inputstream-rtmp.mk b/package/kodi-inputstream-rtmp/kodi-inputstream-rtmp.mk new file mode 100644 index 00000000..5c09144e --- /dev/null +++ b/package/kodi-inputstream-rtmp/kodi-inputstream-rtmp.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-inputstream-rtmp +# +################################################################################ + +KODI_INPUTSTREAM_RTMP_VERSION = 21.1.0-Omega +KODI_INPUTSTREAM_RTMP_SITE = $(call github,xbmc,inputstream.rtmp,$(KODI_INPUTSTREAM_RTMP_VERSION)) +KODI_INPUTSTREAM_RTMP_LICENSE = GPL-2.0+ +KODI_INPUTSTREAM_RTMP_LICENSE_FILES = LICENSE.md +KODI_INPUTSTREAM_RTMP_DEPENDENCIES = kodi openssl rtmpdump zlib + +$(eval $(cmake-package)) diff --git a/package/kodi-jsonschemabuilder/kodi-jsonschemabuilder.hash b/package/kodi-jsonschemabuilder/kodi-jsonschemabuilder.hash new file mode 120000 index 00000000..a5757509 --- /dev/null +++ b/package/kodi-jsonschemabuilder/kodi-jsonschemabuilder.hash @@ -0,0 +1 @@ +../kodi/kodi.hash \ No newline at end of file diff --git a/package/kodi-jsonschemabuilder/kodi-jsonschemabuilder.mk b/package/kodi-jsonschemabuilder/kodi-jsonschemabuilder.mk new file mode 100644 index 00000000..ee94a525 --- /dev/null +++ b/package/kodi-jsonschemabuilder/kodi-jsonschemabuilder.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# kodi-jsonschemabuilder +# +################################################################################ + +# Not possible to directly refer to kodi variables, because of +# first/second expansion trickery... +KODI_JSONSCHEMABUILDER_VERSION = 21.0-Omega +KODI_JSONSCHEMABUILDER_SITE = $(call github,xbmc,xbmc,$(KODI_JSONSCHEMABUILDER_VERSION)) +KODI_JSONSCHEMABUILDER_SOURCE = kodi-$(KODI_JSONSCHEMABUILDER_VERSION).tar.gz +KODI_JSONSCHEMABUILDER_DL_SUBDIR = kodi +KODI_JSONSCHEMABUILDER_LICENSE = GPL-2.0 +KODI_JSONSCHEMABUILDER_LICENSE_FILES = LICENSE.md +HOST_KODI_JSONSCHEMABUILDER_SUBDIR = tools/depends/native/JsonSchemaBuilder/src + +HOST_KODI_JSONSCHEMABUILDER_CONF_OPTS = \ + -DCMAKE_MODULE_PATH=$(@D)/project/cmake/modules + +define HOST_KODI_JSONSCHEMABUILDER_INSTALL_CMDS + $(INSTALL) -m 755 -D \ + $(@D)/tools/depends/native/JsonSchemaBuilder/src/JsonSchemaBuilder \ + $(HOST_DIR)/bin/kodi-JsonSchemaBuilder +endef + +$(eval $(host-cmake-package)) diff --git a/package/kodi-peripheral-joystick/Config.in b/package/kodi-peripheral-joystick/Config.in new file mode 100644 index 00000000..d93e71b6 --- /dev/null +++ b/package/kodi-peripheral-joystick/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_KODI_PERIPHERAL_JOYSTICK + bool "kodi-peripheral-joystick" + depends on BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_TINYXML + help + Kodi joystick support (drivers and button maps) + + https://github.com/xbmc/peripheral.joystick + +comment "kodi-peripheral-joystick needs udev /dev management" + depends on !BR2_PACKAGE_HAS_UDEV diff --git a/package/kodi-peripheral-joystick/kodi-peripheral-joystick.hash b/package/kodi-peripheral-joystick/kodi-peripheral-joystick.hash new file mode 100644 index 00000000..a9d27bd7 --- /dev/null +++ b/package/kodi-peripheral-joystick/kodi-peripheral-joystick.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 226366b69536579d1adccb8548ba20c1b094876ce481bab81f744affa71bb305 kodi-peripheral-joystick-21.1.18-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-peripheral-joystick/kodi-peripheral-joystick.mk b/package/kodi-peripheral-joystick/kodi-peripheral-joystick.mk new file mode 100644 index 00000000..aceefba5 --- /dev/null +++ b/package/kodi-peripheral-joystick/kodi-peripheral-joystick.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-peripheral-joystick +# +################################################################################ + +KODI_PERIPHERAL_JOYSTICK_VERSION = 21.1.18-Omega +KODI_PERIPHERAL_JOYSTICK_SITE = $(call github,xbmc,peripheral.joystick,$(KODI_PERIPHERAL_JOYSTICK_VERSION)) +KODI_PERIPHERAL_JOYSTICK_LICENSE = GPL-2.0+ +KODI_PERIPHERAL_JOYSTICK_LICENSE_FILES = LICENSE.md +KODI_PERIPHERAL_JOYSTICK_DEPENDENCIES = kodi tinyxml udev + +$(eval $(cmake-package)) diff --git a/package/kodi-peripheral-xarcade/Config.in b/package/kodi-peripheral-xarcade/Config.in new file mode 100644 index 00000000..8d3c6785 --- /dev/null +++ b/package/kodi-peripheral-xarcade/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_KODI_PERIPHERAL_XARCADE + bool "kodi-peripheral-xarcade" + help + X-Arcade Tankstick support for Kodi + + https://github.com/kodi-game/peripheral.xarcade diff --git a/package/kodi-peripheral-xarcade/kodi-peripheral-xarcade.hash b/package/kodi-peripheral-xarcade/kodi-peripheral-xarcade.hash new file mode 100644 index 00000000..5e960f2f --- /dev/null +++ b/package/kodi-peripheral-xarcade/kodi-peripheral-xarcade.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 56f5e976c53f6911ce4179126807da82d8fec1ead092c2add1d97e48e3468d8a kodi-peripheral-xarcade-21.0.0-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-peripheral-xarcade/kodi-peripheral-xarcade.mk b/package/kodi-peripheral-xarcade/kodi-peripheral-xarcade.mk new file mode 100644 index 00000000..3c89f0bb --- /dev/null +++ b/package/kodi-peripheral-xarcade/kodi-peripheral-xarcade.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-peripheral-xarcade +# +################################################################################ + +KODI_PERIPHERAL_XARCADE_VERSION = 21.0.0-Omega +KODI_PERIPHERAL_XARCADE_SITE = $(call github,kodi-game,peripheral.xarcade,$(KODI_PERIPHERAL_XARCADE_VERSION)) +KODI_PERIPHERAL_XARCADE_LICENSE = GPL-2.0+ +KODI_PERIPHERAL_XARCADE_LICENSE_FILES = LICENSE.md +KODI_PERIPHERAL_XARCADE_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-pvr-argustv/Config.in b/package/kodi-pvr-argustv/Config.in new file mode 100644 index 00000000..7cca2661 --- /dev/null +++ b/package/kodi-pvr-argustv/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_PVR_ARGUSTV + bool "kodi-pvr-argustv" + select BR2_PACKAGE_JSONCPP + help + Kodi's ARGUS TV client addon + + https://github.com/kodi-pvr/pvr.argustv diff --git a/package/kodi-pvr-argustv/kodi-pvr-argustv.hash b/package/kodi-pvr-argustv/kodi-pvr-argustv.hash new file mode 100644 index 00000000..df9b9242 --- /dev/null +++ b/package/kodi-pvr-argustv/kodi-pvr-argustv.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 2fc9a21411f2015ef5d07fc4aad1411588860b2036a5677bde88b2429839192b kodi-pvr-argustv-21.0.2-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-argustv/kodi-pvr-argustv.mk b/package/kodi-pvr-argustv/kodi-pvr-argustv.mk new file mode 100644 index 00000000..d1f05cad --- /dev/null +++ b/package/kodi-pvr-argustv/kodi-pvr-argustv.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-pvr-argustv +# +################################################################################ + +KODI_PVR_ARGUSTV_VERSION = 21.0.2-Omega +KODI_PVR_ARGUSTV_SITE = $(call github,kodi-pvr,pvr.argustv,$(KODI_PVR_ARGUSTV_VERSION)) +KODI_PVR_ARGUSTV_LICENSE = GPL-2.0+ +KODI_PVR_ARGUSTV_LICENSE_FILES = LICENSE.md +KODI_PVR_ARGUSTV_DEPENDENCIES = jsoncpp kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-pvr-dvblink/Config.in b/package/kodi-pvr-dvblink/Config.in new file mode 100644 index 00000000..33587503 --- /dev/null +++ b/package/kodi-pvr-dvblink/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_PVR_DVBLINK + bool "kodi-pvr-dvblink" + select BR2_PACKAGE_TINYXML2 + help + Kodi's DVBLink client addon + + https://github.com/kodi-pvr/pvr.dvblink diff --git a/package/kodi-pvr-dvblink/kodi-pvr-dvblink.hash b/package/kodi-pvr-dvblink/kodi-pvr-dvblink.hash new file mode 100644 index 00000000..286a30ab --- /dev/null +++ b/package/kodi-pvr-dvblink/kodi-pvr-dvblink.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 a532955c0993f0d30ce85a04c80e62e80312089435b32f7dd28e1882b52dbf33 kodi-pvr-dvblink-21.1.2-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-dvblink/kodi-pvr-dvblink.mk b/package/kodi-pvr-dvblink/kodi-pvr-dvblink.mk new file mode 100644 index 00000000..65205215 --- /dev/null +++ b/package/kodi-pvr-dvblink/kodi-pvr-dvblink.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-pvr-dvblink +# +################################################################################ + +KODI_PVR_DVBLINK_VERSION = 21.1.2-Omega +KODI_PVR_DVBLINK_SITE = $(call github,kodi-pvr,pvr.dvblink,$(KODI_PVR_DVBLINK_VERSION)) +KODI_PVR_DVBLINK_LICENSE = GPL-2.0+ +KODI_PVR_DVBLINK_LICENSE_FILES = LICENSE.md +KODI_PVR_DVBLINK_DEPENDENCIES = kodi tinyxml2 + +$(eval $(cmake-package)) diff --git a/package/kodi-pvr-dvbviewer/Config.in b/package/kodi-pvr-dvbviewer/Config.in new file mode 100644 index 00000000..6a47d154 --- /dev/null +++ b/package/kodi-pvr-dvbviewer/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_PVR_DVBVIEWER + bool "kodi-pvr-dvbviewer" + select BR2_PACKAGE_TINYXML + help + Kodi's DVBViewer client addon + + https://github.com/kodi-pvr/pvr.dvbviewer diff --git a/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.hash b/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.hash new file mode 100644 index 00000000..8aadcfdb --- /dev/null +++ b/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 bde3ff8e2416d6b47478702ec0731a3a31392422f4cd0ec41669bb797277c31a kodi-pvr-dvbviewer-21.1.2-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.mk b/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.mk new file mode 100644 index 00000000..a68bc23c --- /dev/null +++ b/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-pvr-dvbviewer +# +################################################################################ + +KODI_PVR_DVBVIEWER_VERSION = 21.1.2-Omega +KODI_PVR_DVBVIEWER_SITE = $(call github,kodi-pvr,pvr.dvbviewer,$(KODI_PVR_DVBVIEWER_VERSION)) +KODI_PVR_DVBVIEWER_LICENSE = GPL-2.0+ +KODI_PVR_DVBVIEWER_LICENSE_FILES = LICENSE.md +KODI_PVR_DVBVIEWER_DEPENDENCIES = kodi tinyxml + +$(eval $(cmake-package)) diff --git a/package/kodi-pvr-filmon/Config.in b/package/kodi-pvr-filmon/Config.in new file mode 100644 index 00000000..d1000291 --- /dev/null +++ b/package/kodi-pvr-filmon/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_PVR_FILMON + bool "kodi-pvr-filmon" + select BR2_PACKAGE_JSONCPP + help + Filmon PVR client addon for Kodi + + https://github.com/kodi-pvr/pvr.filmon diff --git a/package/kodi-pvr-filmon/kodi-pvr-filmon.hash b/package/kodi-pvr-filmon/kodi-pvr-filmon.hash new file mode 100644 index 00000000..058788d1 --- /dev/null +++ b/package/kodi-pvr-filmon/kodi-pvr-filmon.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 62e7426d654e33c95c2c9940fce48f9549f73eae510258448fd6ed606499eac6 kodi-pvr-filmon-21.0.2-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-filmon/kodi-pvr-filmon.mk b/package/kodi-pvr-filmon/kodi-pvr-filmon.mk new file mode 100644 index 00000000..db7ca752 --- /dev/null +++ b/package/kodi-pvr-filmon/kodi-pvr-filmon.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-pvr-filmon +# +################################################################################ + +KODI_PVR_FILMON_VERSION = 21.0.2-Omega +KODI_PVR_FILMON_SITE = $(call github,kodi-pvr,pvr.filmon,$(KODI_PVR_FILMON_VERSION)) +KODI_PVR_FILMON_LICENSE = GPL-2.0+ +KODI_PVR_FILMON_LICENSE_FILES = LICENSE.md +KODI_PVR_FILMON_DEPENDENCIES = jsoncpp kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-pvr-hdhomerun/Config.in b/package/kodi-pvr-hdhomerun/Config.in new file mode 100644 index 00000000..5a05a85c --- /dev/null +++ b/package/kodi-pvr-hdhomerun/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_KODI_PVR_HDHOMERUN + bool "kodi-pvr-hdhomerun" + select BR2_PACKAGE_JSONCPP + select BR2_PACKAGE_LIBHDHOMERUN + help + Kodi's HDHomeRun client addon + + https://github.com/kodi-pvr/pvr.hdhomerun diff --git a/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.hash b/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.hash new file mode 100644 index 00000000..c1635b55 --- /dev/null +++ b/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 5c59d1ca40846b733175ba0f5360b86ea676a64d1a162bdc0faf8e16a8f2dea0 kodi-pvr-hdhomerun-21.0.1-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.mk b/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.mk new file mode 100644 index 00000000..5f69f606 --- /dev/null +++ b/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-pvr-hdhomerun +# +################################################################################ + +KODI_PVR_HDHOMERUN_VERSION = 21.0.1-Omega +KODI_PVR_HDHOMERUN_SITE = $(call github,kodi-pvr,pvr.hdhomerun,$(KODI_PVR_HDHOMERUN_VERSION)) +KODI_PVR_HDHOMERUN_LICENSE = GPL-2.0+ +KODI_PVR_HDHOMERUN_LICENSE_FILES = LICENSE.md +KODI_PVR_HDHOMERUN_DEPENDENCIES = jsoncpp kodi libhdhomerun + +$(eval $(cmake-package)) diff --git a/package/kodi-pvr-hts/Config.in b/package/kodi-pvr-hts/Config.in new file mode 100644 index 00000000..a352457f --- /dev/null +++ b/package/kodi-pvr-hts/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_KODI_PVR_HTS + bool "kodi-pvr-hts" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17 + help + Tvheadend HTSP PVR client addon for Kodi + + https://github.com/kodi-pvr/pvr.hts + +comment "kodi-pvr-hts needs a toolchain w/ gcc >= 7" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7 diff --git a/package/kodi-pvr-hts/kodi-pvr-hts.hash b/package/kodi-pvr-hts/kodi-pvr-hts.hash new file mode 100644 index 00000000..15b790c8 --- /dev/null +++ b/package/kodi-pvr-hts/kodi-pvr-hts.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 c54c249a4c91091e47245b406210224aa4e3c5468497eb9cdeb09cd336cab4b2 kodi-pvr-hts-21.2.5-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-hts/kodi-pvr-hts.mk b/package/kodi-pvr-hts/kodi-pvr-hts.mk new file mode 100644 index 00000000..68c4d04b --- /dev/null +++ b/package/kodi-pvr-hts/kodi-pvr-hts.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-pvr-hts +# +################################################################################ + +KODI_PVR_HTS_VERSION = 21.2.5-Omega +KODI_PVR_HTS_SITE = $(call github,kodi-pvr,pvr.hts,$(KODI_PVR_HTS_VERSION)) +KODI_PVR_HTS_LICENSE = GPL-2.0+ +KODI_PVR_HTS_LICENSE_FILES = LICENSE.md +KODI_PVR_HTS_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-pvr-iptvsimple/Config.in b/package/kodi-pvr-iptvsimple/Config.in new file mode 100644 index 00000000..2f5a208b --- /dev/null +++ b/package/kodi-pvr-iptvsimple/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_KODI_PVR_IPTVSIMPLE + bool "kodi-pvr-iptvsimple" + # kodi-inputstream-adaptive + depends on BR2_aarch64 || BR2_arm || BR2_i386 || BR2_mipsel \ + || BR2_mips64el || BR2_x86_64 + select BR2_PACKAGE_KODI_INPUTSTREAM_ADAPTIVE # runtime + select BR2_PACKAGE_KODI_INPUTSTREAM_FFMPEGDIRECT # runtime + select BR2_PACKAGE_KODI_INPUTSTREAM_RTMP # runtime + select BR2_PACKAGE_PUGIXML + select BR2_PACKAGE_XZ + select BR2_PACKAGE_ZLIB + help + IPTV Live TV and Radio PVR client addon for Kodi + + https://github.com/kodi-pvr/pvr.iptvsimple diff --git a/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.hash b/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.hash new file mode 100644 index 00000000..560eea27 --- /dev/null +++ b/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 aa463ad43e0dda1aaf10f5fca562823d91762671ad5b5077f5dbaeb7dc425fa7 kodi-pvr-iptvsimple-21.8.5-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.mk b/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.mk new file mode 100644 index 00000000..04b83273 --- /dev/null +++ b/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-pvr-iptvsimple +# +################################################################################ + +KODI_PVR_IPTVSIMPLE_VERSION = 21.8.5-Omega +KODI_PVR_IPTVSIMPLE_SITE = $(call github,kodi-pvr,pvr.iptvsimple,$(KODI_PVR_IPTVSIMPLE_VERSION)) +KODI_PVR_IPTVSIMPLE_LICENSE = GPL-2.0+ +KODI_PVR_IPTVSIMPLE_LICENSE_FILES = LICENSE.md +KODI_PVR_IPTVSIMPLE_DEPENDENCIES = kodi pugixml xz zlib + +$(eval $(cmake-package)) diff --git a/package/kodi-pvr-mediaportal-tvserver/Config.in b/package/kodi-pvr-mediaportal-tvserver/Config.in new file mode 100644 index 00000000..e8f1e3d6 --- /dev/null +++ b/package/kodi-pvr-mediaportal-tvserver/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_PVR_MEDIAPORTAL_TVSERVER + bool "kodi-pvr-mediaportal-tvserver" + select BR2_PACKAGE_TINYXML + help + MediaPortal TVServer PVR client addon for Kodi + + https://github.com/kodi-pvr/pvr.mediaportal.tvserver diff --git a/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.hash b/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.hash new file mode 100644 index 00000000..b6add33b --- /dev/null +++ b/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 0aedb77bd9f3a36375feec7f3769d596dbc536b66d584eb933fb11ec7cff8514 kodi-pvr-mediaportal-tvserver-21.0.3-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.mk b/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.mk new file mode 100644 index 00000000..8ada1a1e --- /dev/null +++ b/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-pvr-mediaportal-tvserver +# +################################################################################ + +KODI_PVR_MEDIAPORTAL_TVSERVER_VERSION = 21.0.3-Omega +KODI_PVR_MEDIAPORTAL_TVSERVER_SITE = $(call github,kodi-pvr,pvr.mediaportal.tvserver,$(KODI_PVR_MEDIAPORTAL_TVSERVER_VERSION)) +KODI_PVR_MEDIAPORTAL_TVSERVER_LICENSE = GPL-2.0+ +KODI_PVR_MEDIAPORTAL_TVSERVER_LICENSE_FILES = LICENSE.md +KODI_PVR_MEDIAPORTAL_TVSERVER_DEPENDENCIES = kodi tinyxml + +$(eval $(cmake-package)) diff --git a/package/kodi-pvr-mythtv/Config.in b/package/kodi-pvr-mythtv/Config.in new file mode 100644 index 00000000..ebdbc004 --- /dev/null +++ b/package/kodi-pvr-mythtv/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_KODI_PVR_MYTHTV + bool "kodi-pvr-mythtv" + help + MythTV PVR for Kodi + + https://github.com/kodi-pvr/pvr.mythtv diff --git a/package/kodi-pvr-mythtv/kodi-pvr-mythtv.hash b/package/kodi-pvr-mythtv/kodi-pvr-mythtv.hash new file mode 100644 index 00000000..d445d9cb --- /dev/null +++ b/package/kodi-pvr-mythtv/kodi-pvr-mythtv.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 d3a54798f38befeaeaf57dec7ea85e3c8846591298ced3f686ac03d62edeb0f9 kodi-pvr-mythtv-21.1.9-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-mythtv/kodi-pvr-mythtv.mk b/package/kodi-pvr-mythtv/kodi-pvr-mythtv.mk new file mode 100644 index 00000000..0b54002a --- /dev/null +++ b/package/kodi-pvr-mythtv/kodi-pvr-mythtv.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-pvr-mythtv +# +################################################################################ + +KODI_PVR_MYTHTV_VERSION = 21.1.9-Omega +KODI_PVR_MYTHTV_SITE = $(call github,janbar,pvr.mythtv,$(KODI_PVR_MYTHTV_VERSION)) +KODI_PVR_MYTHTV_LICENSE = GPL-2.0+ +KODI_PVR_MYTHTV_LICENSE_FILES = LICENSE.md +KODI_PVR_MYTHTV_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-pvr-nextpvr/Config.in b/package/kodi-pvr-nextpvr/Config.in new file mode 100644 index 00000000..d260df83 --- /dev/null +++ b/package/kodi-pvr-nextpvr/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_PVR_NEXTPVR + bool "kodi-pvr-nextpvr" + select BR2_PACKAGE_TINYXML2 + help + Kodi's NextPVR client addon + + https://github.com/kodi-pvr/pvr.nextpvr diff --git a/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.hash b/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.hash new file mode 100644 index 00000000..5b8b6b7e --- /dev/null +++ b/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 dd4974d3bf664067787da271ad8f76a8ecf61e73909050991aae99e0c2863eaa kodi-pvr-nextpvr-21.1.1-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.mk b/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.mk new file mode 100644 index 00000000..788415b8 --- /dev/null +++ b/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-pvr-nextpvr +# +################################################################################ + +KODI_PVR_NEXTPVR_VERSION = 21.1.1-Omega +KODI_PVR_NEXTPVR_SITE = $(call github,kodi-pvr,pvr.nextpvr,$(KODI_PVR_NEXTPVR_VERSION)) +KODI_PVR_NEXTPVR_LICENSE = GPL-2.0+ +KODI_PVR_NEXTPVR_LICENSE_FILES = LICENSE.md +KODI_PVR_NEXTPVR_DEPENDENCIES = kodi tinyxml2 + +$(eval $(cmake-package)) diff --git a/package/kodi-pvr-njoy/Config.in b/package/kodi-pvr-njoy/Config.in new file mode 100644 index 00000000..bb84ea3a --- /dev/null +++ b/package/kodi-pvr-njoy/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_PVR_NJOY + bool "kodi-pvr-njoy" + select BR2_PACKAGE_TINYXML + help + Kodi's Njoy N7 client addon + + https://github.com/kodi-pvr/pvr.njoy diff --git a/package/kodi-pvr-njoy/kodi-pvr-njoy.hash b/package/kodi-pvr-njoy/kodi-pvr-njoy.hash new file mode 100644 index 00000000..c99e92bb --- /dev/null +++ b/package/kodi-pvr-njoy/kodi-pvr-njoy.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 e9768f87857374476766ba8d791793b4e8d1e9d3239149b2142a7b5b3f24b439 kodi-pvr-njoy-21.0.1-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-njoy/kodi-pvr-njoy.mk b/package/kodi-pvr-njoy/kodi-pvr-njoy.mk new file mode 100644 index 00000000..ab0d371c --- /dev/null +++ b/package/kodi-pvr-njoy/kodi-pvr-njoy.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-pvr-njoy +# +################################################################################ + +KODI_PVR_NJOY_VERSION = 21.0.1-Omega +KODI_PVR_NJOY_SITE = $(call github,kodi-pvr,pvr.njoy,$(KODI_PVR_NJOY_VERSION)) +KODI_PVR_NJOY_LICENSE = GPL-2.0+ +KODI_PVR_NJOY_LICENSE_FILES = LICENSE.md +KODI_PVR_NJOY_DEPENDENCIES = kodi tinyxml + +$(eval $(cmake-package)) diff --git a/package/kodi-pvr-octonet/Config.in b/package/kodi-pvr-octonet/Config.in new file mode 100644 index 00000000..7b46cccb --- /dev/null +++ b/package/kodi-pvr-octonet/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_KODI_PVR_OCTONET + bool "kodi-pvr-octonet" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # jsoncpp + select BR2_PACKAGE_JSONCPP + help + DigitalDevices Octonet PVR client addon for Kodi + + https://github.com/DigitalDevices/pvr.octonet + +comment "kodi-pvr-octonet needs a toolchain w/ gcc >= 4.7" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 diff --git a/package/kodi-pvr-octonet/kodi-pvr-octonet.hash b/package/kodi-pvr-octonet/kodi-pvr-octonet.hash new file mode 100644 index 00000000..f62f31ce --- /dev/null +++ b/package/kodi-pvr-octonet/kodi-pvr-octonet.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 4fd97ff7f0fa021a45958dcd1f922e39dbf5e7366732a74caf782621b97aaa07 kodi-pvr-octonet-21.0.1-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-octonet/kodi-pvr-octonet.mk b/package/kodi-pvr-octonet/kodi-pvr-octonet.mk new file mode 100644 index 00000000..bbcd78f4 --- /dev/null +++ b/package/kodi-pvr-octonet/kodi-pvr-octonet.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-pvr-octonet +# +################################################################################ + +KODI_PVR_OCTONET_VERSION = 21.0.1-Omega +KODI_PVR_OCTONET_SITE = $(call github,DigitalDevices,pvr.octonet,$(KODI_PVR_OCTONET_VERSION)) +KODI_PVR_OCTONET_LICENSE = GPL-2.0+ +KODI_PVR_OCTONET_LICENSE_FILES = LICENSE.md +KODI_PVR_OCTONET_DEPENDENCIES = jsoncpp kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-pvr-pctv/Config.in b/package/kodi-pvr-pctv/Config.in new file mode 100644 index 00000000..11fe09b2 --- /dev/null +++ b/package/kodi-pvr-pctv/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_PVR_PCTV + bool "kodi-pvr-pctv" + select BR2_PACKAGE_JSONCPP + help + PCTV PVR client addon for Kodi + + https://github.com/kodi-pvr/pvr.vdr.vnsi diff --git a/package/kodi-pvr-pctv/kodi-pvr-pctv.hash b/package/kodi-pvr-pctv/kodi-pvr-pctv.hash new file mode 100644 index 00000000..bc79a194 --- /dev/null +++ b/package/kodi-pvr-pctv/kodi-pvr-pctv.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 d695032343a096c214a767f8c13d072035dc38cbda2a3305a91bc40ee7cb7770 kodi-pvr-pctv-21.0.1-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-pctv/kodi-pvr-pctv.mk b/package/kodi-pvr-pctv/kodi-pvr-pctv.mk new file mode 100644 index 00000000..d7b7b59b --- /dev/null +++ b/package/kodi-pvr-pctv/kodi-pvr-pctv.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-pvr-pctv +# +################################################################################ + +KODI_PVR_PCTV_VERSION = 21.0.1-Omega +KODI_PVR_PCTV_SITE = $(call github,kodi-pvr,pvr.pctv,$(KODI_PVR_PCTV_VERSION)) +KODI_PVR_PCTV_LICENSE = GPL-2.0+ +KODI_PVR_PCTV_LICENSE_FILES = LICENSE.md +KODI_PVR_PCTV_DEPENDENCIES = jsoncpp kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-pvr-plutotv/Config.in b/package/kodi-pvr-plutotv/Config.in new file mode 100644 index 00000000..37441283 --- /dev/null +++ b/package/kodi-pvr-plutotv/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_PVR_PLUTOTV + bool "kodi-pvr-plutotv" + select BR2_PACKAGE_RAPIDJSON + help + Pluto.tv PVR Client for Kodi + + https://github.com/kodi-pvr/pvr.plutotv diff --git a/package/kodi-pvr-plutotv/kodi-pvr-plutotv.hash b/package/kodi-pvr-plutotv/kodi-pvr-plutotv.hash new file mode 100644 index 00000000..75f9ed03 --- /dev/null +++ b/package/kodi-pvr-plutotv/kodi-pvr-plutotv.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 468d5ad4703c36d73dc8d08008d19c0e9b44474b86b4d5e618b97c3003214b6e kodi-pvr-plutotv-21.3.1-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-plutotv/kodi-pvr-plutotv.mk b/package/kodi-pvr-plutotv/kodi-pvr-plutotv.mk new file mode 100644 index 00000000..d363f206 --- /dev/null +++ b/package/kodi-pvr-plutotv/kodi-pvr-plutotv.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-pvr-plutotv +# +################################################################################ + +KODI_PVR_PLUTOTV_VERSION = 21.3.1-Omega +KODI_PVR_PLUTOTV_SITE = $(call github,kodi-pvr,pvr.plutotv,$(KODI_PVR_PLUTOTV_VERSION)) +KODI_PVR_PLUTOTV_LICENSE = GPL-2.0+ +KODI_PVR_PLUTOTV_LICENSE_FILES = LICENSE.md +KODI_PVR_PLUTOTV_DEPENDENCIES = kodi rapidjson + +$(eval $(cmake-package)) diff --git a/package/kodi-pvr-stalker/Config.in b/package/kodi-pvr-stalker/Config.in new file mode 100644 index 00000000..f82d5a49 --- /dev/null +++ b/package/kodi-pvr-stalker/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_KODI_PVR_STALKER + bool "kodi-pvr-stalker" + select BR2_PACKAGE_JSONCPP + select BR2_PACKAGE_LIBXML2 + help + A PVR Client that connects Kodi to Stalker Middleware + + https://github.com/kodi-pvr/pvr.stalker diff --git a/package/kodi-pvr-stalker/kodi-pvr-stalker.hash b/package/kodi-pvr-stalker/kodi-pvr-stalker.hash new file mode 100644 index 00000000..4232af0d --- /dev/null +++ b/package/kodi-pvr-stalker/kodi-pvr-stalker.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 dd461f59d37cd5e4a199ea2547aeef42861d9f7a57b5d92d3253f686164474a6 kodi-pvr-stalker-21.1.2-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-stalker/kodi-pvr-stalker.mk b/package/kodi-pvr-stalker/kodi-pvr-stalker.mk new file mode 100644 index 00000000..a703323c --- /dev/null +++ b/package/kodi-pvr-stalker/kodi-pvr-stalker.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-pvr-stalker +# +################################################################################ + +KODI_PVR_STALKER_VERSION = 21.1.2-Omega +KODI_PVR_STALKER_SITE = $(call github,kodi-pvr,pvr.stalker,$(KODI_PVR_STALKER_VERSION)) +KODI_PVR_STALKER_LICENSE = GPL-2.0+ +KODI_PVR_STALKER_LICENSE_FILES = LICENSE.md +KODI_PVR_STALKER_DEPENDENCIES = jsoncpp kodi libxml2 + +$(eval $(cmake-package)) diff --git a/package/kodi-pvr-vbox/Config.in b/package/kodi-pvr-vbox/Config.in new file mode 100644 index 00000000..590877e1 --- /dev/null +++ b/package/kodi-pvr-vbox/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_KODI_PVR_VBOX + bool "kodi-pvr-vbox" + select BR2_PACKAGE_TINYXML2 + help + Kodi PVR addon for interfacing with VBox Communications XTi TV + Gateway + + https://github.com/kodi-pvr/pvr.vbox diff --git a/package/kodi-pvr-vbox/kodi-pvr-vbox.hash b/package/kodi-pvr-vbox/kodi-pvr-vbox.hash new file mode 100644 index 00000000..e35d518b --- /dev/null +++ b/package/kodi-pvr-vbox/kodi-pvr-vbox.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 241aad6926579835d5d0513ad588f39ee9e99de5858655c38a25454c69372746 kodi-pvr-vbox-21.1.4-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-vbox/kodi-pvr-vbox.mk b/package/kodi-pvr-vbox/kodi-pvr-vbox.mk new file mode 100644 index 00000000..4b16c70e --- /dev/null +++ b/package/kodi-pvr-vbox/kodi-pvr-vbox.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-pvr-vbox +# +################################################################################ + +KODI_PVR_VBOX_VERSION = 21.1.4-Omega +KODI_PVR_VBOX_SITE = $(call github,kodi-pvr,pvr.vbox,$(KODI_PVR_VBOX_VERSION)) +KODI_PVR_VBOX_LICENSE = GPL-2.0+ +KODI_PVR_VBOX_LICENSE_FILES = LICENSE.md +KODI_PVR_VBOX_DEPENDENCIES = kodi tinyxml2 + +$(eval $(cmake-package)) diff --git a/package/kodi-pvr-vdr-vnsi/Config.in b/package/kodi-pvr-vdr-vnsi/Config.in new file mode 100644 index 00000000..6b57900b --- /dev/null +++ b/package/kodi-pvr-vdr-vnsi/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_KODI_PVR_VDR_VNSI + bool "kodi-pvr-vdr-vnsi" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17 + help + Kodi PVR addon VNSI + + https://github.com/kodi-pvr/pvr.vdr.vnsi + +comment "kodi-pvr-vdr-vnsi needs a toolchain w/ gcc >= 7" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7 diff --git a/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.hash b/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.hash new file mode 100644 index 00000000..79475062 --- /dev/null +++ b/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 6c66868a97c4860442cf02acfeacedc929da372bf1b71971410700e8e9689a12 kodi-pvr-vdr-vnsi-21.1.2-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.mk b/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.mk new file mode 100644 index 00000000..c35594eb --- /dev/null +++ b/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-pvr-vdr-vnsi +# +################################################################################ + +KODI_PVR_VDR_VNSI_VERSION = 21.1.2-Omega +KODI_PVR_VDR_VNSI_SITE = $(call github,kodi-pvr,pvr.vdr.vnsi,$(KODI_PVR_VDR_VNSI_VERSION)) +KODI_PVR_VDR_VNSI_LICENSE = GPL-2.0+ +KODI_PVR_VDR_VNSI_LICENSE_FILES = LICENSE.md +KODI_PVR_VDR_VNSI_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-pvr-vuplus/Config.in b/package/kodi-pvr-vuplus/Config.in new file mode 100644 index 00000000..862f5f92 --- /dev/null +++ b/package/kodi-pvr-vuplus/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_KODI_PVR_VUPLUS + bool "kodi-pvr-vuplus" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # json-for-modern-cpp + select BR2_PACKAGE_JSON_FOR_MODERN_CPP + select BR2_PACKAGE_TINYXML + help + VuPlus PVR client addon for Kodi + + https://github.com/kodi-pvr/pvr.vuplus + +comment "kodi-pvr-vuplus needs a toolchain w/ gcc >= 4.9" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/kodi-pvr-vuplus/kodi-pvr-vuplus.hash b/package/kodi-pvr-vuplus/kodi-pvr-vuplus.hash new file mode 100644 index 00000000..2b1139e0 --- /dev/null +++ b/package/kodi-pvr-vuplus/kodi-pvr-vuplus.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 e0fc9ef1db89e97c11dadccc06901ac0fbff03ff9f22ba7a8de665ce85c28aa8 kodi-pvr-vuplus-21.2.1-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-vuplus/kodi-pvr-vuplus.mk b/package/kodi-pvr-vuplus/kodi-pvr-vuplus.mk new file mode 100644 index 00000000..c289042a --- /dev/null +++ b/package/kodi-pvr-vuplus/kodi-pvr-vuplus.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-pvr-vuplus +# +################################################################################ + +KODI_PVR_VUPLUS_VERSION = 21.2.1-Omega +KODI_PVR_VUPLUS_SITE = $(call github,kodi-pvr,pvr.vuplus,$(KODI_PVR_VUPLUS_VERSION)) +KODI_PVR_VUPLUS_LICENSE = GPL-2.0+ +KODI_PVR_VUPLUS_LICENSE_FILES = LICENSE.md +KODI_PVR_VUPLUS_DEPENDENCIES = json-for-modern-cpp kodi tinyxml + +$(eval $(cmake-package)) diff --git a/package/kodi-pvr-waipu/Config.in b/package/kodi-pvr-waipu/Config.in new file mode 100644 index 00000000..ee0cc2bd --- /dev/null +++ b/package/kodi-pvr-waipu/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_PVR_WAIPU + bool "kodi-pvr-waipu" + select BR2_PACKAGE_RAPIDJSON + help + Waipu.tv PVR Plugin for Kodi + + https://github.com/flubshi/pvr.waipu diff --git a/package/kodi-pvr-waipu/kodi-pvr-waipu.hash b/package/kodi-pvr-waipu/kodi-pvr-waipu.hash new file mode 100644 index 00000000..3a78f23b --- /dev/null +++ b/package/kodi-pvr-waipu/kodi-pvr-waipu.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 11819542b32a8dc9a4b6f5cc2fb98153298be1156bbf36a1b2aaf569be9842ab kodi-pvr-waipu-21.8.6-Omega.tar.gz +sha256 4202d4fb329f58c83ba921b56d7071e37f7df3f15b3820a3a04ef8eee49f54d2 pvr.waipu/LICENSE.txt diff --git a/package/kodi-pvr-waipu/kodi-pvr-waipu.mk b/package/kodi-pvr-waipu/kodi-pvr-waipu.mk new file mode 100644 index 00000000..15a25a87 --- /dev/null +++ b/package/kodi-pvr-waipu/kodi-pvr-waipu.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-pvr-waipu +# +################################################################################ + +KODI_PVR_WAIPU_VERSION = 21.8.6-Omega +KODI_PVR_WAIPU_SITE = $(call github,flubshi,pvr.waipu,$(KODI_PVR_WAIPU_VERSION)) +KODI_PVR_WAIPU_LICENSE = GPL-2.0+ +KODI_PVR_WAIPU_LICENSE_FILES = pvr.waipu/LICENSE.txt +KODI_PVR_WAIPU_DEPENDENCIES = kodi rapidjson + +$(eval $(cmake-package)) diff --git a/package/kodi-pvr-wmc/Config.in b/package/kodi-pvr-wmc/Config.in new file mode 100644 index 00000000..3daf4c38 --- /dev/null +++ b/package/kodi-pvr-wmc/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_KODI_PVR_WMC + bool "kodi-pvr-wmc" + help + Kodi's Windows Media Center client addon + + https://github.com/kodi-pvr/pvr.wmc diff --git a/package/kodi-pvr-wmc/kodi-pvr-wmc.hash b/package/kodi-pvr-wmc/kodi-pvr-wmc.hash new file mode 100644 index 00000000..f274aa92 --- /dev/null +++ b/package/kodi-pvr-wmc/kodi-pvr-wmc.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 690de222455f4ec02480e3cc0eb524e64448ca95486394f562c48492a614e17c kodi-pvr-wmc-21.0.2-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-wmc/kodi-pvr-wmc.mk b/package/kodi-pvr-wmc/kodi-pvr-wmc.mk new file mode 100644 index 00000000..04097ba1 --- /dev/null +++ b/package/kodi-pvr-wmc/kodi-pvr-wmc.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-pvr-wmc +# +################################################################################ + +KODI_PVR_WMC_VERSION = 21.0.2-Omega +KODI_PVR_WMC_SITE = $(call github,kodi-pvr,pvr.wmc,$(KODI_PVR_WMC_VERSION)) +KODI_PVR_WMC_LICENSE = GPL-2.0+ +KODI_PVR_WMC_LICENSE_FILES = LICENSE.md +KODI_PVR_WMC_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-pvr-zattoo/Config.in b/package/kodi-pvr-zattoo/Config.in new file mode 100644 index 00000000..9a6eb3fe --- /dev/null +++ b/package/kodi-pvr-zattoo/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_KODI_PVR_ZATTOO + bool "kodi-pvr-zattoo" + select BR2_PACKAGE_RAPIDJSON + select BR2_PACKAGE_TINYXML2 + help + Kodi PVR-Addon for Zattoo + + https://github.com/rbuehlma/pvr.zattoo diff --git a/package/kodi-pvr-zattoo/kodi-pvr-zattoo.hash b/package/kodi-pvr-zattoo/kodi-pvr-zattoo.hash new file mode 100644 index 00000000..126640f0 --- /dev/null +++ b/package/kodi-pvr-zattoo/kodi-pvr-zattoo.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 20361e6de6bd783203e73dc19f8aa0bfc1e269508bfc7933477fbaa1e8a4b9e9 kodi-pvr-zattoo-21.0.3-Omega.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-zattoo/kodi-pvr-zattoo.mk b/package/kodi-pvr-zattoo/kodi-pvr-zattoo.mk new file mode 100644 index 00000000..50d3651c --- /dev/null +++ b/package/kodi-pvr-zattoo/kodi-pvr-zattoo.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-pvr-zattoo +# +################################################################################ + +KODI_PVR_ZATTOO_VERSION = 21.0.3-Omega +KODI_PVR_ZATTOO_SITE = $(call github,rbuehlma,pvr.zattoo,$(KODI_PVR_ZATTOO_VERSION)) +KODI_PVR_ZATTOO_LICENSE = GPL-2.0+ +KODI_PVR_ZATTOO_LICENSE_FILES = LICENSE.md +KODI_PVR_ZATTOO_DEPENDENCIES = kodi rapidjson tinyxml2 + +$(eval $(cmake-package)) diff --git a/package/kodi-screensaver-asteroids/Config.in b/package/kodi-screensaver-asteroids/Config.in new file mode 100644 index 00000000..833e065d --- /dev/null +++ b/package/kodi-screensaver-asteroids/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_SCREENSAVER_ASTEROIDS + bool "kodi-screensaver-asteroids" + select BR2_PACKAGE_GLM + help + Asteroids screensaver for Kodi + + https://github.com/xbmc/screensaver.asteroids diff --git a/package/kodi-screensaver-asteroids/kodi-screensaver-asteroids.hash b/package/kodi-screensaver-asteroids/kodi-screensaver-asteroids.hash new file mode 100644 index 00000000..a65f1140 --- /dev/null +++ b/package/kodi-screensaver-asteroids/kodi-screensaver-asteroids.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 7644f9ad16e0f2ae9b4796cdc5cdd92761e835b5edb4f114311d2578c0aeffe6 kodi-screensaver-asteroids-9f761cb7d5842e61da9c608c9f58067bcb986d89.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-screensaver-asteroids/kodi-screensaver-asteroids.mk b/package/kodi-screensaver-asteroids/kodi-screensaver-asteroids.mk new file mode 100644 index 00000000..f96eb4e8 --- /dev/null +++ b/package/kodi-screensaver-asteroids/kodi-screensaver-asteroids.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-screensaver-asteroids +# +################################################################################ + +KODI_SCREENSAVER_ASTEROIDS_VERSION = 9f761cb7d5842e61da9c608c9f58067bcb986d89 +KODI_SCREENSAVER_ASTEROIDS_SITE = $(call github,xbmc,screensaver.asteroids,$(KODI_SCREENSAVER_ASTEROIDS_VERSION)) +KODI_SCREENSAVER_ASTEROIDS_LICENSE = GPL-2.0+ +KODI_SCREENSAVER_ASTEROIDS_LICENSE_FILES = LICENSE.md +KODI_SCREENSAVER_ASTEROIDS_DEPENDENCIES = glm kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-screensaver-asterwave/Config.in b/package/kodi-screensaver-asterwave/Config.in new file mode 100644 index 00000000..ffb5caad --- /dev/null +++ b/package/kodi-screensaver-asterwave/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_SCREENSAVER_ASTERWAVE + bool "kodi-screensaver-asterwave" + select BR2_PACKAGE_GLM + help + AsterWave screensaver for Kodi + + https://github.com/xbmc/screensaver.asterwave diff --git a/package/kodi-screensaver-asterwave/kodi-screensaver-asterwave.hash b/package/kodi-screensaver-asterwave/kodi-screensaver-asterwave.hash new file mode 100644 index 00000000..2825a7be --- /dev/null +++ b/package/kodi-screensaver-asterwave/kodi-screensaver-asterwave.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 4cb21eed4a679bbebcc0ed4c4ec3f510f4a9319327eba8d896dd8944bb5ff0f8 kodi-screensaver-asterwave-701111a81875688f016ce62b25670608a7fcd2d2.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-screensaver-asterwave/kodi-screensaver-asterwave.mk b/package/kodi-screensaver-asterwave/kodi-screensaver-asterwave.mk new file mode 100644 index 00000000..d2fffab7 --- /dev/null +++ b/package/kodi-screensaver-asterwave/kodi-screensaver-asterwave.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# kodi-screensaver-asterwave +# +################################################################################ + +KODI_SCREENSAVER_ASTERWAVE_VERSION = 701111a81875688f016ce62b25670608a7fcd2d2 +KODI_SCREENSAVER_ASTERWAVE_SITE = $(call github,xbmc,screensaver.asterwave,$(KODI_SCREENSAVER_ASTERWAVE_VERSION)) +KODI_SCREENSAVER_ASTERWAVE_LICENSE = GPL-2.0+ +KODI_SCREENSAVER_ASTERWAVE_LICENSE_FILES = LICENSE.md +KODI_SCREENSAVER_ASTERWAVE_DEPENDENCIES = glm kodi + +KODI_SCREENSAVER_ASTERWAVE_CONF_OPTS += \ + -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags egl`" \ + -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags egl`" + +$(eval $(cmake-package)) diff --git a/package/kodi-screensaver-biogenesis/Config.in b/package/kodi-screensaver-biogenesis/Config.in new file mode 100644 index 00000000..26f134d0 --- /dev/null +++ b/package/kodi-screensaver-biogenesis/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_KODI_SCREENSAVER_BIOGENESIS + bool "kodi-screensaver-biogenesis" + help + BioGenesis screensaver for Kodi + + https://github.com/xbmc/screensaver.biogenesis diff --git a/package/kodi-screensaver-biogenesis/kodi-screensaver-biogenesis.hash b/package/kodi-screensaver-biogenesis/kodi-screensaver-biogenesis.hash new file mode 100644 index 00000000..a6207043 --- /dev/null +++ b/package/kodi-screensaver-biogenesis/kodi-screensaver-biogenesis.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 92491cbcb1abaa8ab2cf113a0eb4d0ad588f59c062c91e8e06b035c6eb0ea84f kodi-screensaver-biogenesis-953947d07fdf69967e2dc64b289631c57c79e800.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-screensaver-biogenesis/kodi-screensaver-biogenesis.mk b/package/kodi-screensaver-biogenesis/kodi-screensaver-biogenesis.mk new file mode 100644 index 00000000..bb40c7eb --- /dev/null +++ b/package/kodi-screensaver-biogenesis/kodi-screensaver-biogenesis.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-screensaver-biogenesis +# +################################################################################ + +KODI_SCREENSAVER_BIOGENESIS_VERSION = 953947d07fdf69967e2dc64b289631c57c79e800 +KODI_SCREENSAVER_BIOGENESIS_SITE = $(call github,xbmc,screensaver.biogenesis,$(KODI_SCREENSAVER_BIOGENESIS_VERSION)) +KODI_SCREENSAVER_BIOGENESIS_LICENSE = GPL-2.0+ +KODI_SCREENSAVER_BIOGENESIS_LICENSE_FILES = LICENSE.md +KODI_SCREENSAVER_BIOGENESIS_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-screensaver-cpblobs/Config.in b/package/kodi-screensaver-cpblobs/Config.in new file mode 100644 index 00000000..7f9a5914 --- /dev/null +++ b/package/kodi-screensaver-cpblobs/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_SCREENSAVER_CPBLOBS + bool "kodi-screensaver-cpblobs" + select BR2_PACKAGE_GLM + help + CpBlobs screensaver for Kodi + + https://github.com/xbmc/screensaver.cpblobs diff --git a/package/kodi-screensaver-cpblobs/kodi-screensaver-cpblobs.hash b/package/kodi-screensaver-cpblobs/kodi-screensaver-cpblobs.hash new file mode 100644 index 00000000..0d653a27 --- /dev/null +++ b/package/kodi-screensaver-cpblobs/kodi-screensaver-cpblobs.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 84213263bad9d5dbaadc704b28d79f4bd2603287f05f0264563cf560f23f5309 kodi-screensaver-cpblobs-cd96c71c22940014d5c79c58af99b60e0b418f71.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-screensaver-cpblobs/kodi-screensaver-cpblobs.mk b/package/kodi-screensaver-cpblobs/kodi-screensaver-cpblobs.mk new file mode 100644 index 00000000..9e010ec7 --- /dev/null +++ b/package/kodi-screensaver-cpblobs/kodi-screensaver-cpblobs.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# kodi-screensaver-cpblobs +# +################################################################################ + +KODI_SCREENSAVER_CPBLOBS_VERSION = cd96c71c22940014d5c79c58af99b60e0b418f71 +KODI_SCREENSAVER_CPBLOBS_SITE = $(call github,xbmc,screensaver.cpblobs,$(KODI_SCREENSAVER_CPBLOBS_VERSION)) +KODI_SCREENSAVER_CPBLOBS_LICENSE = GPL-2.0 +KODI_SCREENSAVER_CPBLOBS_LICENSE_FILES = LICENSE.md +KODI_SCREENSAVER_CPBLOBS_DEPENDENCIES = glm kodi + +KODI_SCREENSAVER_CPBLOBS_CONF_OPTS += \ + -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags egl`" \ + -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags egl`" + +$(eval $(cmake-package)) diff --git a/package/kodi-screensaver-greynetic/Config.in b/package/kodi-screensaver-greynetic/Config.in new file mode 100644 index 00000000..92db2855 --- /dev/null +++ b/package/kodi-screensaver-greynetic/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_SCREENSAVER_GREYNETIC + bool "kodi-screensaver-greynetic" + select BR2_PACKAGE_GLM + help + Greynetic screensaver for Kodi + + https://github.com/xbmc/screensaver.greynetic diff --git a/package/kodi-screensaver-greynetic/kodi-screensaver-greynetic.hash b/package/kodi-screensaver-greynetic/kodi-screensaver-greynetic.hash new file mode 100644 index 00000000..a1678be4 --- /dev/null +++ b/package/kodi-screensaver-greynetic/kodi-screensaver-greynetic.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 0974661ce4725e685222cce04b9f43d24b4161f8af9400b6e739549368a0e1eb kodi-screensaver-greynetic-2955c4105ea1223e9901dbc804812bdb3c0412a7.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-screensaver-greynetic/kodi-screensaver-greynetic.mk b/package/kodi-screensaver-greynetic/kodi-screensaver-greynetic.mk new file mode 100644 index 00000000..4789cdfc --- /dev/null +++ b/package/kodi-screensaver-greynetic/kodi-screensaver-greynetic.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-screensaver-greynetic +# +################################################################################ + +KODI_SCREENSAVER_GREYNETIC_VERSION = 2955c4105ea1223e9901dbc804812bdb3c0412a7 +KODI_SCREENSAVER_GREYNETIC_SITE = $(call github,xbmc,screensaver.greynetic,$(KODI_SCREENSAVER_GREYNETIC_VERSION)) +KODI_SCREENSAVER_GREYNETIC_LICENSE = GPL-2.0+ +KODI_SCREENSAVER_GREYNETIC_LICENSE_FILES = LICENSE.md +KODI_SCREENSAVER_GREYNETIC_DEPENDENCIES = glm kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-screensaver-matrixtrails/Config.in b/package/kodi-screensaver-matrixtrails/Config.in new file mode 100644 index 00000000..9f031ba1 --- /dev/null +++ b/package/kodi-screensaver-matrixtrails/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_KODI_SCREENSAVER_MATRIXTRAILS + bool "kodi-screensaver-matrixtrails" + help + Matrix trails screensaver for Kodi + + https://github.com/xbmc/screensaver.matrixtrails diff --git a/package/kodi-screensaver-matrixtrails/kodi-screensaver-matrixtrails.hash b/package/kodi-screensaver-matrixtrails/kodi-screensaver-matrixtrails.hash new file mode 100644 index 00000000..8bc93257 --- /dev/null +++ b/package/kodi-screensaver-matrixtrails/kodi-screensaver-matrixtrails.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 6016fc31cdb489417cf3c39d13403d5d8ff332e5b3aef5bf8916e70c61d479c4 kodi-screensaver-matrixtrails-364b7275fb02edf9a5c03bd56c8010431711b249.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-screensaver-matrixtrails/kodi-screensaver-matrixtrails.mk b/package/kodi-screensaver-matrixtrails/kodi-screensaver-matrixtrails.mk new file mode 100644 index 00000000..a00bcf85 --- /dev/null +++ b/package/kodi-screensaver-matrixtrails/kodi-screensaver-matrixtrails.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# kodi-screensaver-matrixtrails +# +################################################################################ + +KODI_SCREENSAVER_MATRIXTRAILS_VERSION = 364b7275fb02edf9a5c03bd56c8010431711b249 +KODI_SCREENSAVER_MATRIXTRAILS_SITE = $(call github,xbmc,screensaver.matrixtrails,$(KODI_SCREENSAVER_MATRIXTRAILS_VERSION)) +KODI_SCREENSAVER_MATRIXTRAILS_LICENSE = GPL-2.0+ +KODI_SCREENSAVER_MATRIXTRAILS_LICENSE_FILES = LICENSE.md +KODI_SCREENSAVER_MATRIXTRAILS_DEPENDENCIES = kodi + +KODI_SCREENSAVER_MATRIXTRAILS_CONF_OPTS += \ + -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags egl`" \ + -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags egl`" + +$(eval $(cmake-package)) diff --git a/package/kodi-screensaver-pingpong/Config.in b/package/kodi-screensaver-pingpong/Config.in new file mode 100644 index 00000000..2983f7c2 --- /dev/null +++ b/package/kodi-screensaver-pingpong/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_SCREENSAVER_PINGPONG + bool "kodi-screensaver-pingpong" + select BR2_PACKAGE_GLM + help + Ping-pong screensaver for Kodi + + https://github.com/xbmc/screensaver.pingpong diff --git a/package/kodi-screensaver-pingpong/kodi-screensaver-pingpong.hash b/package/kodi-screensaver-pingpong/kodi-screensaver-pingpong.hash new file mode 100644 index 00000000..cd3a0315 --- /dev/null +++ b/package/kodi-screensaver-pingpong/kodi-screensaver-pingpong.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 861a752aa5090817670c378cc4be05e06f27b60f3c9e30503facc28cea45312d kodi-screensaver-pingpong-a0b8b956002ddc64eb6d433e3230fa09619f2aef.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-screensaver-pingpong/kodi-screensaver-pingpong.mk b/package/kodi-screensaver-pingpong/kodi-screensaver-pingpong.mk new file mode 100644 index 00000000..9b90da29 --- /dev/null +++ b/package/kodi-screensaver-pingpong/kodi-screensaver-pingpong.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-screensaver-pingpong +# +################################################################################ + +KODI_SCREENSAVER_PINGPONG_VERSION = a0b8b956002ddc64eb6d433e3230fa09619f2aef +KODI_SCREENSAVER_PINGPONG_SITE = $(call github,xbmc,screensaver.pingpong,$(KODI_SCREENSAVER_PINGPONG_VERSION)) +KODI_SCREENSAVER_PINGPONG_LICENSE = GPL-2.0+ +KODI_SCREENSAVER_PINGPONG_LICENSE_FILES = LICENSE.md +KODI_SCREENSAVER_PINGPONG_DEPENDENCIES = glm kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-screensaver-pyro/Config.in b/package/kodi-screensaver-pyro/Config.in new file mode 100644 index 00000000..9ee99883 --- /dev/null +++ b/package/kodi-screensaver-pyro/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_KODI_SCREENSAVER_PYRO + bool "kodi-screensaver-pyro" + help + Pyro screensaver for Kodi + + https://github.com/xbmc/screensaver.pyro diff --git a/package/kodi-screensaver-pyro/kodi-screensaver-pyro.hash b/package/kodi-screensaver-pyro/kodi-screensaver-pyro.hash new file mode 100644 index 00000000..4a8d00de --- /dev/null +++ b/package/kodi-screensaver-pyro/kodi-screensaver-pyro.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 bea100644c2e29f645f379cc51f58b5b87b745cf51d2863649a16869d514e60d kodi-screensaver-pyro-b0d14d3f8cfe7d0c71ce8df8a6b8d6f121b42908.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-screensaver-pyro/kodi-screensaver-pyro.mk b/package/kodi-screensaver-pyro/kodi-screensaver-pyro.mk new file mode 100644 index 00000000..b82d2e0f --- /dev/null +++ b/package/kodi-screensaver-pyro/kodi-screensaver-pyro.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-screensaver-pyro +# +################################################################################ + +KODI_SCREENSAVER_PYRO_VERSION = b0d14d3f8cfe7d0c71ce8df8a6b8d6f121b42908 +KODI_SCREENSAVER_PYRO_SITE = $(call github,xbmc,screensaver.pyro,$(KODI_SCREENSAVER_PYRO_VERSION)) +KODI_SCREENSAVER_PYRO_LICENSE = GPL-2.0+ +KODI_SCREENSAVER_PYRO_LICENSE_FILES = LICENSE.md +KODI_SCREENSAVER_PYRO_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-screensaver-rsxs/Config.in b/package/kodi-screensaver-rsxs/Config.in new file mode 100644 index 00000000..e88df1fe --- /dev/null +++ b/package/kodi-screensaver-rsxs/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_KODI_SCREENSAVER_RSXS + bool "kodi-screensaver-rsxs" + depends on BR2_PACKAGE_KODI_RENDER_SYSTEM_GL + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_GLI + select BR2_PACKAGE_GLM + help + RSXS screensaver add-ons for Kodi + + https://github.com/xbmc/screensavers.rsxs + +comment "kodi-screensaver-rsxs needs OpenGL as Kodi render system" + depends on !BR2_PACKAGE_KODI_RENDER_SYSTEM_GL diff --git a/package/kodi-screensaver-rsxs/kodi-screensaver-rsxs.hash b/package/kodi-screensaver-rsxs/kodi-screensaver-rsxs.hash new file mode 100644 index 00000000..021b92c1 --- /dev/null +++ b/package/kodi-screensaver-rsxs/kodi-screensaver-rsxs.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 7f3de3b68c4852290ad3aa2f3b77a356dbc3f26a78bec8356f04723f6d86be42 kodi-screensaver-rsxs-56bc68ef28a8d2a8cf345472df6105bc4c111a04.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-screensaver-rsxs/kodi-screensaver-rsxs.mk b/package/kodi-screensaver-rsxs/kodi-screensaver-rsxs.mk new file mode 100644 index 00000000..caadbdb1 --- /dev/null +++ b/package/kodi-screensaver-rsxs/kodi-screensaver-rsxs.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-screensaver-rsxs +# +################################################################################ + +KODI_SCREENSAVER_RSXS_VERSION = 56bc68ef28a8d2a8cf345472df6105bc4c111a04 +KODI_SCREENSAVER_RSXS_SITE = $(call github,xbmc,screensavers.rsxs,$(KODI_SCREENSAVER_RSXS_VERSION)) +KODI_SCREENSAVER_RSXS_LICENSE = GPL-2.0+ +KODI_SCREENSAVER_RSXS_LICENSE_FILES = LICENSE.md +KODI_SCREENSAVER_RSXS_DEPENDENCIES = bzip2 gli glm kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-screensaver-stars/Config.in b/package/kodi-screensaver-stars/Config.in new file mode 100644 index 00000000..3a8713a5 --- /dev/null +++ b/package/kodi-screensaver-stars/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_KODI_SCREENSAVER_STARS + bool "kodi-screensaver-stars" + help + Starfield screensaver for Kodi + + https://github.com/xbmc/screensaver.stars diff --git a/package/kodi-screensaver-stars/kodi-screensaver-stars.hash b/package/kodi-screensaver-stars/kodi-screensaver-stars.hash new file mode 100644 index 00000000..e4bedbfc --- /dev/null +++ b/package/kodi-screensaver-stars/kodi-screensaver-stars.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 84d63373984f83e04bb8990a00a5b57a95ddd595f6a2b5fdf56bbd424cd546c8 kodi-screensaver-stars-e31111555b41692fd373719a9ba74aba3e7f4790.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-screensaver-stars/kodi-screensaver-stars.mk b/package/kodi-screensaver-stars/kodi-screensaver-stars.mk new file mode 100644 index 00000000..c9aef4dc --- /dev/null +++ b/package/kodi-screensaver-stars/kodi-screensaver-stars.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-screensaver-stars +# +################################################################################ + +KODI_SCREENSAVER_STARS_VERSION = e31111555b41692fd373719a9ba74aba3e7f4790 +KODI_SCREENSAVER_STARS_SITE = $(call github,xbmc,screensaver.stars,$(KODI_SCREENSAVER_STARS_VERSION)) +KODI_SCREENSAVER_STARS_LICENSE = GPL-2.0+ +KODI_SCREENSAVER_STARS_LICENSE_FILES = LICENSE.md +KODI_SCREENSAVER_STARS_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-skin-confluence/Config.in b/package/kodi-skin-confluence/Config.in new file mode 100644 index 00000000..08b65680 --- /dev/null +++ b/package/kodi-skin-confluence/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_KODI_SKIN_CONFLUENCE + bool "kodi-skin-confluence" + help + Kodi confluence skin + + https://github.com/xbmc/skin.confluence diff --git a/package/kodi-skin-confluence/kodi-skin-confluence.hash b/package/kodi-skin-confluence/kodi-skin-confluence.hash new file mode 100644 index 00000000..ed53dd50 --- /dev/null +++ b/package/kodi-skin-confluence/kodi-skin-confluence.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 85550f949598d3904bcb77e3d2e6b7fa2d0d9334a7939b964a94d98ffe0e36ea kodi-skin-confluence-b2f2fe26ab47ca3c317d5d7927687e41584e46ed.tar.gz +sha256 89931c1fb1f3716694175763cf3221cfcd63d6935031cf6b4512d17ffe5d9860 LICENSE.txt diff --git a/package/kodi-skin-confluence/kodi-skin-confluence.mk b/package/kodi-skin-confluence/kodi-skin-confluence.mk new file mode 100644 index 00000000..2898c045 --- /dev/null +++ b/package/kodi-skin-confluence/kodi-skin-confluence.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# kodi-skin-confluence +# +################################################################################ + +KODI_SKIN_CONFLUENCE_VERSION = b2f2fe26ab47ca3c317d5d7927687e41584e46ed +KODI_SKIN_CONFLUENCE_SITE = $(call github,xbmc,skin.confluence,$(KODI_SKIN_CONFLUENCE_VERSION)) +KODI_SKIN_CONFLUENCE_LICENSE = GPL-2.0 +KODI_SKIN_CONFLUENCE_LICENSE_FILES = LICENSE.txt +KODI_SKIN_CONFLUENCE_DEPENDENCIES = kodi + +define KODI_SKIN_CONFLUENCE_BUILD_CMDS + $(HOST_DIR)/bin/kodi-TexturePacker -input $(@D)/media/ -output $(@D)/media/Textures.xbt -dupecheck -use_none +endef + +define KODI_SKIN_CONFLUENCE_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/share/kodi/addons/skin.confluence + cp -dpfr $(@D)/* $(TARGET_DIR)/usr/share/kodi/addons/skin.confluence + find $(TARGET_DIR)/usr/share/kodi/addons/skin.confluence/media -name *.jpg -delete + find $(TARGET_DIR)/usr/share/kodi/addons/skin.confluence/media -name *.png -delete +endef + +$(eval $(generic-package)) diff --git a/package/kodi-texturepacker/kodi-texturepacker.hash b/package/kodi-texturepacker/kodi-texturepacker.hash new file mode 120000 index 00000000..a5757509 --- /dev/null +++ b/package/kodi-texturepacker/kodi-texturepacker.hash @@ -0,0 +1 @@ +../kodi/kodi.hash \ No newline at end of file diff --git a/package/kodi-texturepacker/kodi-texturepacker.mk b/package/kodi-texturepacker/kodi-texturepacker.mk new file mode 100644 index 00000000..c3c06d02 --- /dev/null +++ b/package/kodi-texturepacker/kodi-texturepacker.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# kodi-texturepacker +# +################################################################################ + +# Not possible to directly refer to kodi variables, because of +# first/second expansion trickery... +KODI_TEXTUREPACKER_VERSION = 21.0-Omega +KODI_TEXTUREPACKER_SITE = $(call github,xbmc,xbmc,$(KODI_TEXTUREPACKER_VERSION)) +KODI_TEXTUREPACKER_SOURCE = kodi-$(KODI_TEXTUREPACKER_VERSION).tar.gz +KODI_TEXTUREPACKER_DL_SUBDIR = kodi +KODI_TEXTUREPACKER_LICENSE = GPL-2.0 +KODI_TEXTUREPACKER_LICENSE_FILES = LICENSE.md +HOST_KODI_TEXTUREPACKER_SUBDIR = tools/depends/native/TexturePacker/src +HOST_KODI_TEXTUREPACKER_DEPENDENCIES = \ + host-giflib \ + host-libjpeg \ + host-libpng \ + host-lzo + +HOST_KODI_TEXTUREPACKER_CXXFLAGS = \ + $(HOST_CXXFLAGS) \ + -std=c++17 \ + -DTARGET_POSIX \ + -DTARGET_LINUX \ + -D_LINUX \ + -I$(@D)/xbmc/linux + +HOST_KODI_TEXTUREPACKER_CONF_OPTS += \ + -DCMAKE_CXX_FLAGS="$(HOST_KODI_TEXTUREPACKER_CXXFLAGS)" \ + -DCMAKE_MODULE_PATH=$(@D)/cmake/modules \ + -DKODI_SOURCE_DIR=$(@D) \ + -Wno-dev + +define HOST_KODI_TEXTUREPACKER_INSTALL_CMDS + $(INSTALL) -m 755 -D \ + $(@D)/tools/depends/native/TexturePacker/src/TexturePacker \ + $(HOST_DIR)/bin/kodi-TexturePacker +endef + +$(eval $(host-cmake-package)) diff --git a/package/kodi-vfs-libarchive/Config.in b/package/kodi-vfs-libarchive/Config.in new file mode 100644 index 00000000..6720e520 --- /dev/null +++ b/package/kodi-vfs-libarchive/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_KODI_VFS_LIBARCHIVE + bool "kodi-vfs-libarchive" + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_LIBARCHIVE + select BR2_PACKAGE_LZ4 + select BR2_PACKAGE_LZO + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_XZ + select BR2_PACKAGE_ZLIB + help + Libarchive VFS add-on for Kodi + + https://github.com/xbmc/vfs.libarchive diff --git a/package/kodi-vfs-libarchive/kodi-vfs-libarchive.hash b/package/kodi-vfs-libarchive/kodi-vfs-libarchive.hash new file mode 100644 index 00000000..729a569f --- /dev/null +++ b/package/kodi-vfs-libarchive/kodi-vfs-libarchive.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 23515c84f4a0cceaf845c1d6c0c39947a28be2d515cff995b384b29e93b11831 kodi-vfs-libarchive-0333aa5e189221e76282eeefb3f573e27b187551.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-vfs-libarchive/kodi-vfs-libarchive.mk b/package/kodi-vfs-libarchive/kodi-vfs-libarchive.mk new file mode 100644 index 00000000..257a0d04 --- /dev/null +++ b/package/kodi-vfs-libarchive/kodi-vfs-libarchive.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# kodi-vfs-libarchive +# +################################################################################ + +KODI_VFS_LIBARCHIVE_VERSION = 0333aa5e189221e76282eeefb3f573e27b187551 +KODI_VFS_LIBARCHIVE_SITE = $(call github,xbmc,vfs.libarchive,$(KODI_VFS_LIBARCHIVE_VERSION)) +KODI_VFS_LIBARCHIVE_LICENSE = GPL-2.0+ +KODI_VFS_LIBARCHIVE_LICENSE_FILES = LICENSE.md +KODI_VFS_LIBARCHIVE_DEPENDENCIES = \ + bzip2 \ + kodi \ + libarchive \ + lz4 \ + lzo \ + openssl \ + xz \ + zlib + +$(eval $(cmake-package)) diff --git a/package/kodi-vfs-rar/Config.in b/package/kodi-vfs-rar/Config.in new file mode 100644 index 00000000..2d8b6805 --- /dev/null +++ b/package/kodi-vfs-rar/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_VFS_RAR + bool "kodi-vfs-rar" + select BR2_PACKAGE_TINYXML + help + RAR VFS addon for Kodi + + https://github.com/xbmc/vfs.rar diff --git a/package/kodi-vfs-rar/kodi-vfs-rar.hash b/package/kodi-vfs-rar/kodi-vfs-rar.hash new file mode 100644 index 00000000..e368515a --- /dev/null +++ b/package/kodi-vfs-rar/kodi-vfs-rar.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 c1da0e8aafa5419ae414857893a59c22109138ad7245071e0678b26f401a7be1 kodi-vfs-rar-2f49a0de43bc9f4e91dfec73a13dcb04df285233.tar.gz +# License files +sha256 6ecc1687808b7d66b24f874755abfed7464d9751ed0001cd4e8e5d9bf397ff8a lib/UnrarXLib/license.txt +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-vfs-rar/kodi-vfs-rar.mk b/package/kodi-vfs-rar/kodi-vfs-rar.mk new file mode 100644 index 00000000..8dfd205c --- /dev/null +++ b/package/kodi-vfs-rar/kodi-vfs-rar.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-vfs-rar +# +################################################################################ + +KODI_VFS_RAR_VERSION = 2f49a0de43bc9f4e91dfec73a13dcb04df285233 +KODI_VFS_RAR_SITE = $(call github,xbmc,vfs.rar,$(KODI_VFS_RAR_VERSION)) +KODI_VFS_RAR_LICENSE = unrar, GPL-2.0+ +KODI_VFS_RAR_LICENSE_FILES = lib/UnrarXLib/license.txt LICENSE.md +KODI_VFS_RAR_DEPENDENCIES = kodi tinyxml + +$(eval $(cmake-package)) diff --git a/package/kodi-vfs-sftp/Config.in b/package/kodi-vfs-sftp/Config.in new file mode 100644 index 00000000..b742777f --- /dev/null +++ b/package/kodi-vfs-sftp/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_KODI_VFS_SFTP + bool "kodi-vfs-sftp" + select BR2_PACKAGE_LIBSSH + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + SFTP VFS addon for Kodi + + https://github.com/xbmc/vfs.sftp diff --git a/package/kodi-vfs-sftp/kodi-vfs-sftp.hash b/package/kodi-vfs-sftp/kodi-vfs-sftp.hash new file mode 100644 index 00000000..12ddbae6 --- /dev/null +++ b/package/kodi-vfs-sftp/kodi-vfs-sftp.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 2197096f7081d140efb573e1afcee257e55bd0312e48c25e787bf10879e6bc92 kodi-vfs-sftp-9fe870e71a10a37f2d793b2261bac48b195f2705.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-vfs-sftp/kodi-vfs-sftp.mk b/package/kodi-vfs-sftp/kodi-vfs-sftp.mk new file mode 100644 index 00000000..e3298465 --- /dev/null +++ b/package/kodi-vfs-sftp/kodi-vfs-sftp.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-vfs-sftp +# +################################################################################ + +KODI_VFS_SFTP_VERSION = 9fe870e71a10a37f2d793b2261bac48b195f2705 +KODI_VFS_SFTP_SITE = $(call github,xbmc,vfs.sftp,$(KODI_VFS_SFTP_VERSION)) +KODI_VFS_SFTP_LICENSE = GPL-2.0+ +KODI_VFS_SFTP_LICENSE_FILES = LICENSE.md +KODI_VFS_SFTP_DEPENDENCIES = kodi libssh openssl zlib + +$(eval $(cmake-package)) diff --git a/package/kodi-visualisation-fishbmc/Config.in b/package/kodi-visualisation-fishbmc/Config.in new file mode 100644 index 00000000..4d86d823 --- /dev/null +++ b/package/kodi-visualisation-fishbmc/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_VISUALISATION_FISHBMC + bool "kodi-visualisation-fishbmc" + select BR2_PACKAGE_GLM + help + Fische visualiser for Kodi + + https://github.com/xbmc/visualization.fishbmc diff --git a/package/kodi-visualisation-fishbmc/kodi-visualisation-fishbmc.hash b/package/kodi-visualisation-fishbmc/kodi-visualisation-fishbmc.hash new file mode 100644 index 00000000..42d6cab7 --- /dev/null +++ b/package/kodi-visualisation-fishbmc/kodi-visualisation-fishbmc.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 a21d1683cf648b188a39fd32b123c147ce7dad99fa1a67078652b28365ce6666 kodi-visualisation-fishbmc-daa4e6b3e952075b813768e3518ac6e6b0724f55.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-visualisation-fishbmc/kodi-visualisation-fishbmc.mk b/package/kodi-visualisation-fishbmc/kodi-visualisation-fishbmc.mk new file mode 100644 index 00000000..2e27ed69 --- /dev/null +++ b/package/kodi-visualisation-fishbmc/kodi-visualisation-fishbmc.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-visualisation-fishbmc +# +################################################################################ + +KODI_VISUALISATION_FISHBMC_VERSION = daa4e6b3e952075b813768e3518ac6e6b0724f55 +KODI_VISUALISATION_FISHBMC_SITE = $(call github,xbmc,visualization.fishbmc,$(KODI_VISUALISATION_FISHBMC_VERSION)) +KODI_VISUALISATION_FISHBMC_LICENSE = GPL-2.0+ +KODI_VISUALISATION_FISHBMC_LICENSE_FILES = LICENSE.md +KODI_VISUALISATION_FISHBMC_DEPENDENCIES = glm kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-visualisation-goom/Config.in b/package/kodi-visualisation-goom/Config.in new file mode 100644 index 00000000..18905bba --- /dev/null +++ b/package/kodi-visualisation-goom/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_KODI_VISUALISATION_GOOM + bool "kodi-visualisation-goom" + depends on BR2_PACKAGE_KODI_RENDER_SYSTEM_GL + select BR2_PACKAGE_GLM + help + GOOM visualiser for Kodi + + https://github.com/notspiff/visualization.goom + +comment "kodi-visualization-goom needs OpenGL as Kodi render system" + depends on !BR2_PACKAGE_KODI_RENDER_SYSTEM_GL diff --git a/package/kodi-visualisation-goom/kodi-visualisation-goom.hash b/package/kodi-visualisation-goom/kodi-visualisation-goom.hash new file mode 100644 index 00000000..835fcf56 --- /dev/null +++ b/package/kodi-visualisation-goom/kodi-visualisation-goom.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 dcf46760c0b1e6eb90fff94684c907ca10261febae12c63d1253325452704ecc kodi-visualisation-goom-a8cb12592900fcd099d65d7760cbb113489ec884.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-visualisation-goom/kodi-visualisation-goom.mk b/package/kodi-visualisation-goom/kodi-visualisation-goom.mk new file mode 100644 index 00000000..0f40b2ab --- /dev/null +++ b/package/kodi-visualisation-goom/kodi-visualisation-goom.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# kodi-visualisation-goom +# +################################################################################ + +KODI_VISUALISATION_GOOM_VERSION = a8cb12592900fcd099d65d7760cbb113489ec884 +KODI_VISUALISATION_GOOM_SITE = $(call github,xbmc,visualization.goom,$(KODI_VISUALISATION_GOOM_VERSION)) +KODI_VISUALISATION_GOOM_LICENSE = GPL-2.0+ +KODI_VISUALISATION_GOOM_LICENSE_FILES = LICENSE.md + +KODI_VISUALISATION_GOOM_DEPENDENCIES = glm kodi + +KODI_VISUALISATION_GOOM_CONF_OPTS += \ + -DCMAKE_C_FLAGS="-std=c11" + +$(eval $(cmake-package)) diff --git a/package/kodi-visualisation-matrix/Config.in b/package/kodi-visualisation-matrix/Config.in new file mode 100644 index 00000000..db01f152 --- /dev/null +++ b/package/kodi-visualisation-matrix/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_VISUALISATION_MATRIX + bool "kodi-visualisation-matrix" + select BR2_PACKAGE_GLM + help + Matrix themed visualization addon for Kodi + + https://github.com/xbmc/visualization.matrix diff --git a/package/kodi-visualisation-matrix/kodi-visualisation-matrix.hash b/package/kodi-visualisation-matrix/kodi-visualisation-matrix.hash new file mode 100644 index 00000000..ed3ee016 --- /dev/null +++ b/package/kodi-visualisation-matrix/kodi-visualisation-matrix.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 2abe39666e64bb1b3e8d3b88876524ed022d2dbeeb141cb9bd43549d8b5b403c kodi-visualisation-matrix-8a373e240e47f27f1289c1c606621403794eb0d1.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-visualisation-matrix/kodi-visualisation-matrix.mk b/package/kodi-visualisation-matrix/kodi-visualisation-matrix.mk new file mode 100644 index 00000000..125aee1d --- /dev/null +++ b/package/kodi-visualisation-matrix/kodi-visualisation-matrix.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-visualisation-matrix +# +################################################################################ + +KODI_VISUALISATION_MATRIX_VERSION = 8a373e240e47f27f1289c1c606621403794eb0d1 +KODI_VISUALISATION_MATRIX_SITE = $(call github,xbmc,visualization.matrix,$(KODI_VISUALISATION_MATRIX_VERSION)) +KODI_VISUALISATION_MATRIX_LICENSE = GPL-2.0+ +KODI_VISUALISATION_MATRIX_LICENSE_FILES = LICENSE.md +KODI_VISUALISATION_MATRIX_DEPENDENCIES = glm kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-visualisation-shadertoy/Config.in b/package/kodi-visualisation-shadertoy/Config.in new file mode 100644 index 00000000..50fd38c2 --- /dev/null +++ b/package/kodi-visualisation-shadertoy/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_KODI_VISUALISATION_SHADERTOY + bool "kodi-visualisation-shadertoy" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # jsoncpp + select BR2_PACKAGE_GLM + select BR2_PACKAGE_JSONCPP + help + Shadertoy visualiser for Kodi + + https://github.com/notspiff/visualization.shadertoy + +comment "kodi-visualisation-shadertoy needs a toolchain w/ gcc >= 4.7" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 diff --git a/package/kodi-visualisation-shadertoy/kodi-visualisation-shadertoy.hash b/package/kodi-visualisation-shadertoy/kodi-visualisation-shadertoy.hash new file mode 100644 index 00000000..b74b0a76 --- /dev/null +++ b/package/kodi-visualisation-shadertoy/kodi-visualisation-shadertoy.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 6144e32ee4c1f7e75be6b2827555b4999d251ebdd67d785cac0e8b38869ef529 kodi-visualisation-shadertoy-364132b12b6da78e281b6a1d678155d43aace83f.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-visualisation-shadertoy/kodi-visualisation-shadertoy.mk b/package/kodi-visualisation-shadertoy/kodi-visualisation-shadertoy.mk new file mode 100644 index 00000000..45313a3e --- /dev/null +++ b/package/kodi-visualisation-shadertoy/kodi-visualisation-shadertoy.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-visualisation-shadertoy +# +################################################################################ + +KODI_VISUALISATION_SHADERTOY_VERSION = 364132b12b6da78e281b6a1d678155d43aace83f +KODI_VISUALISATION_SHADERTOY_SITE = $(call github,xbmc,visualization.shadertoy,$(KODI_VISUALISATION_SHADERTOY_VERSION)) +KODI_VISUALISATION_SHADERTOY_LICENSE = GPL-2.0+ +KODI_VISUALISATION_SHADERTOY_LICENSE_FILES = LICENSE.md +KODI_VISUALISATION_SHADERTOY_DEPENDENCIES = glm jsoncpp kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-visualisation-spectrum/Config.in b/package/kodi-visualisation-spectrum/Config.in new file mode 100644 index 00000000..deb62308 --- /dev/null +++ b/package/kodi-visualisation-spectrum/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_VISUALISATION_SPECTRUM + bool "kodi-visualisation-spectrum" + select BR2_PACKAGE_GLM + help + Spectrum visualiser for Kodi + + https://github.com/notspiff/visualization.spectrum diff --git a/package/kodi-visualisation-spectrum/kodi-visualisation-spectrum.hash b/package/kodi-visualisation-spectrum/kodi-visualisation-spectrum.hash new file mode 100644 index 00000000..a6083e55 --- /dev/null +++ b/package/kodi-visualisation-spectrum/kodi-visualisation-spectrum.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 ae794542e8c7de00528bf486d381134f4da8b7c35903c5f5e06a1a6015878b12 kodi-visualisation-spectrum-8f2fc2135b34740af538ade3faf310f1a188db7f.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-visualisation-spectrum/kodi-visualisation-spectrum.mk b/package/kodi-visualisation-spectrum/kodi-visualisation-spectrum.mk new file mode 100644 index 00000000..c50eae3f --- /dev/null +++ b/package/kodi-visualisation-spectrum/kodi-visualisation-spectrum.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-visualisation-spectrum +# +################################################################################ + +KODI_VISUALISATION_SPECTRUM_VERSION = 8f2fc2135b34740af538ade3faf310f1a188db7f +KODI_VISUALISATION_SPECTRUM_SITE = $(call github,xbmc,visualization.spectrum,$(KODI_VISUALISATION_SPECTRUM_VERSION)) +KODI_VISUALISATION_SPECTRUM_LICENSE = GPL-2.0+ +KODI_VISUALISATION_SPECTRUM_LICENSE_FILES = LICENSE.md +KODI_VISUALISATION_SPECTRUM_DEPENDENCIES = glm kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-visualisation-starburst/Config.in b/package/kodi-visualisation-starburst/Config.in new file mode 100644 index 00000000..af9eee7a --- /dev/null +++ b/package/kodi-visualisation-starburst/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_VISUALISATION_STARBURST + bool "kodi-visualisation-starburst" + select BR2_PACKAGE_GLM + help + StarBurst visualization for Kodi + + https://github.com/xbmc/visualization.starburst diff --git a/package/kodi-visualisation-starburst/kodi-visualisation-starburst.hash b/package/kodi-visualisation-starburst/kodi-visualisation-starburst.hash new file mode 100644 index 00000000..870c5088 --- /dev/null +++ b/package/kodi-visualisation-starburst/kodi-visualisation-starburst.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 3755544db4d633c411236ca2149f93c641c4c8d858a68f9eb4176b046fbf0ea4 kodi-visualisation-starburst-7923772cd986849531bdfee0a0bc989842b41996.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-visualisation-starburst/kodi-visualisation-starburst.mk b/package/kodi-visualisation-starburst/kodi-visualisation-starburst.mk new file mode 100644 index 00000000..bd61e4c7 --- /dev/null +++ b/package/kodi-visualisation-starburst/kodi-visualisation-starburst.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-visualisation-starburst +# +################################################################################ + +KODI_VISUALISATION_STARBURST_VERSION = 7923772cd986849531bdfee0a0bc989842b41996 +KODI_VISUALISATION_STARBURST_SITE = $(call github,xbmc,visualization.starburst,$(KODI_VISUALISATION_STARBURST_VERSION)) +KODI_VISUALISATION_STARBURST_LICENSE = GPL-2.0+ +KODI_VISUALISATION_STARBURST_LICENSE_FILES = LICENSE.md +KODI_VISUALISATION_STARBURST_DEPENDENCIES = glm kodi + +$(eval $(cmake-package)) diff --git a/package/kodi-visualisation-waveform/Config.in b/package/kodi-visualisation-waveform/Config.in new file mode 100644 index 00000000..24a5f7f3 --- /dev/null +++ b/package/kodi-visualisation-waveform/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_VISUALISATION_WAVEFORM + bool "kodi-visualisation-waveform" + select BR2_PACKAGE_GLM + help + Waveform visualiser for Kodi + + https://github.com/notspiff/visualization.waveform diff --git a/package/kodi-visualisation-waveform/kodi-visualisation-waveform.hash b/package/kodi-visualisation-waveform/kodi-visualisation-waveform.hash new file mode 100644 index 00000000..29bb0772 --- /dev/null +++ b/package/kodi-visualisation-waveform/kodi-visualisation-waveform.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 edda37479bc38eb129a9e83c30f14f21646b17693b5679130fd644787b63dce0 kodi-visualisation-waveform-a388be3b9c4a62a5087616d3c92a26d6cbbeb24f.tar.gz +sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-visualisation-waveform/kodi-visualisation-waveform.mk b/package/kodi-visualisation-waveform/kodi-visualisation-waveform.mk new file mode 100644 index 00000000..925d76cb --- /dev/null +++ b/package/kodi-visualisation-waveform/kodi-visualisation-waveform.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-visualisation-waveform +# +################################################################################ + +KODI_VISUALISATION_WAVEFORM_VERSION = a388be3b9c4a62a5087616d3c92a26d6cbbeb24f +KODI_VISUALISATION_WAVEFORM_SITE = $(call github,xbmc,visualization.waveform,$(KODI_VISUALISATION_WAVEFORM_VERSION)) +KODI_VISUALISATION_WAVEFORM_LICENSE = GPL-2.0+ +KODI_VISUALISATION_WAVEFORM_LICENSE_FILES = LICENSE.md +KODI_VISUALISATION_WAVEFORM_DEPENDENCIES = glm kodi + +$(eval $(cmake-package)) diff --git a/package/kodi/0001-kodi-config.cmake-use-CMAKE_FIND_ROOT_PATH-to-fix-cr.patch b/package/kodi/0001-kodi-config.cmake-use-CMAKE_FIND_ROOT_PATH-to-fix-cr.patch new file mode 100644 index 00000000..4fb95c8b --- /dev/null +++ b/package/kodi/0001-kodi-config.cmake-use-CMAKE_FIND_ROOT_PATH-to-fix-cr.patch @@ -0,0 +1,45 @@ +From 6604cce38fed748e98d3bd2bf9d0f368d67eeb3c Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 29 Jul 2015 23:13:33 +0200 +Subject: [PATCH] kodi-config.cmake: use CMAKE_FIND_ROOT_PATH to fix + cross-compilation + +When cross-compiling, the location at build time of the libraries is +not the same as the one at run-time. The CMAKE_FIND_ROOT_PATH variable +is here to handle this difference, so use it in kodi-config.cmake. + +Upstream: Reverted (PR 17616 and 18680) + +Signed-off-by: Thomas Petazzoni +(rebased and simplified for Kodi 17.0-Krypton) +Signed-off-by: Bernd Kuhls +(rebased for Kodi 19.0-Matrix) +--- + cmake/KodiConfig.cmake.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/cmake/KodiConfig.cmake.in b/cmake/KodiConfig.cmake.in +index a06d889fca9d..ff299807ea44 100644 +--- a/cmake/KodiConfig.cmake.in ++++ b/cmake/KodiConfig.cmake.in +@@ -9,7 +9,7 @@ if(NOT @APP_NAME_UC@_PREFIX) + set(@APP_NAME_UC@_PREFIX @APP_PREFIX@) + endif() + if(NOT @APP_NAME_UC@_INCLUDE_DIR) +- set(@APP_NAME_UC@_INCLUDE_DIR @APP_INCLUDE_DIR@) ++ set(@APP_NAME_UC@_INCLUDE_DIR ${CMAKE_FIND_ROOT_PATH}/@APP_INCLUDE_DIR@) + endif() + if(NOT @APP_NAME_UC@_LIB_DIR) + set(@APP_NAME_UC@_LIB_DIR @APP_LIB_DIR@) +@@ -18,7 +18,7 @@ if(NOT @APP_NAME_UC@_DATA_DIR) + set(@APP_NAME_UC@_DATA_DIR @APP_DATA_DIR@) + endif() + set(APP_RENDER_SYSTEM @APP_RENDER_SYSTEM@) +-list(APPEND CMAKE_MODULE_PATH @APP_LIB_DIR@ @APP_DATA_DIR@/cmake) ++list(APPEND CMAKE_MODULE_PATH ${CMAKE_FIND_ROOT_PATH}/@APP_LIB_DIR@ ${CMAKE_FIND_ROOT_PATH}/@APP_DATA_DIR@/cmake) + + string(REPLACE ";" " " ARCH_DEFINES "@ARCH_DEFINES@") + add_definitions(${ARCH_DEFINES} -DBUILD_KODI_ADDON) +-- +2.5.0 + diff --git a/package/kodi/Config.in b/package/kodi/Config.in new file mode 100644 index 00000000..25c5758b --- /dev/null +++ b/package/kodi/Config.in @@ -0,0 +1,376 @@ +config BR2_PACKAGE_KODI_ARCH_SUPPORTS + bool + default y if BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + # i386: needs sse (see upstream PR 10351) + depends on !(BR2_i386 && !BR2_X86_CPU_HAS_SSE) + depends on BR2_USE_MMU # libcdio, and others + +comment "kodi needs python3 w/ .py modules, a uClibc or glibc toolchain w/ C++, threads, wchar, dynamic library, gcc >= 9.x, host gcc >= 9.x" + depends on BR2_PACKAGE_KODI_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_USE_WCHAR || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_9 \ + || !BR2_HOST_GCC_AT_LEAST_9 \ + || BR2_TOOLCHAIN_USES_MUSL \ + || !BR2_PACKAGE_PYTHON3 \ + || BR2_PACKAGE_PYTHON3_PYC_ONLY + +config BR2_PACKAGE_KODI_PLATFORM_SUPPORTS + bool + +config BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_GBM + bool + default y + depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES + depends on BR2_PACKAGE_HAS_LIBGBM + depends on BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF + depends on BR2_PACKAGE_HAS_UDEV # libinput + select BR2_PACKAGE_KODI_PLATFORM_SUPPORTS + select BR2_PACKAGE_LIBDISPLAY_INFO + +comment "kodi needs udev support for gbm" + depends on !BR2_PACKAGE_KODI_PLATFORM_SUPPORTS + +config BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_WAYLAND + bool + default y + depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES + depends on BR2_HOST_GCC_AT_LEAST_4_9 # waylandpp + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # waylandpp + depends on BR2_INSTALL_LIBSTDCPP # waylandpp + depends on BR2_PACKAGE_WAYLAND # waylandpp + select BR2_PACKAGE_KODI_PLATFORM_SUPPORTS + +config BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_X11 + bool + default y + depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_KODI_PLATFORM_SUPPORTS + +comment "kodi needs an OpenGL EGL backend with OpenGL or GLES support" + depends on !BR2_PACKAGE_KODI_PLATFORM_SUPPORTS + +menuconfig BR2_PACKAGE_KODI + bool "kodi" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libass -> harfbuzz + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_9 # C++17 + depends on BR2_HOST_GCC_AT_LEAST_9 # C++17 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_TOOLCHAIN_USES_MUSL + depends on BR2_USE_WCHAR + depends on !BR2_STATIC_LIBS # gnutls, python3 and others + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_KODI_ARCH_SUPPORTS + depends on BR2_PACKAGE_KODI_PLATFORM_SUPPORTS + depends on BR2_PACKAGE_PYTHON3 + depends on !BR2_PACKAGE_PYTHON3_PYC_ONLY + select BR2_NEEDS_HOST_JAVA + select BR2_HOST_CMAKE_AT_LEAST_3_24 + select BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_FFMPEG_GPL + select BR2_PACKAGE_FFMPEG_POSTPROC + select BR2_PACKAGE_FFMPEG_SWSCALE + select BR2_PACKAGE_FLATBUFFERS + select BR2_PACKAGE_FMT + select BR2_PACKAGE_FONTCONFIG # needed for libass + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_FSTRCMP + select BR2_PACKAGE_GIFLIB + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBASS + select BR2_PACKAGE_LIBCDIO + select BR2_PACKAGE_LIBCROSSGUID + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_LIBFRIBIDI + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_LIBICONV_EXTRA_ENCODINGS if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_LIBPLIST + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_LZO + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_PCRE + select BR2_PACKAGE_PCRE_UCP + select BR2_PACKAGE_PYTHON3_2TO3 + select BR2_PACKAGE_PYTHON3_PYEXPAT + select BR2_PACKAGE_PYTHON3_SQLITE + select BR2_PACKAGE_PYTHON3_SSL + select BR2_PACKAGE_PYTHON3_UNICODEDATA + select BR2_PACKAGE_PYTHON3_ZLIB + select BR2_PACKAGE_RAPIDJSON + select BR2_PACKAGE_SPDLOG + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_TAGLIB + select BR2_PACKAGE_TINYXML + select BR2_PACKAGE_TINYXML2 + select BR2_PACKAGE_ZLIB + select BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY if BR2_TOOLCHAIN_USES_GLIBC # runtime UTF conversion support + select BR2_PACKAGE_LIBINPUT if BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_GBM + select BR2_PACKAGE_LIBXKBCOMMON if BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_GBM + select BR2_PACKAGE_LIBXKBCOMMON if BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_WAYLAND + select BR2_PACKAGE_WAYLANDPP if BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_WAYLAND + select BR2_PACKAGE_XLIB_LIBXRANDR if BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_X11 + help + Kodi is an award-winning free and open source (GPL) software + media player and entertainment hub for digital media. + + http://kodi.tv + +if BR2_PACKAGE_KODI + +config BR2_PACKAGE_KODI_ALSA_LIB + bool "alsa" + select BR2_PACKAGE_ALSA_LIB + help + Enable alsa support. + +config BR2_PACKAGE_KODI_AVAHI + bool "avahi" + select BR2_PACKAGE_AVAHI + select BR2_PACKAGE_AVAHI_DAEMON + help + Enable Avahi support. + Select this if you want Kodi to support Bonjour protocol. + +config BR2_PACKAGE_KODI_BLUEZ + bool "bluetooth" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 # bluez5_utils hid plugin + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # bluez5_utils + select BR2_PACKAGE_BLUEZ5_UTILS + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_AUDIO + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HID + help + Enable bluetooth support + +comment "bluetooth support needs a toolchain w/ headers >= 3.18" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 + +config BR2_PACKAGE_KODI_DBUS + bool "dbus" + select BR2_PACKAGE_DBUS + help + Enable D-Bus support + +config BR2_PACKAGE_KODI_EVENTCLIENTS + bool "eventclients" + help + Enable event clients support + + https://github.com/xbmc/xbmc/blob/master/tools/EventClients/README.txt + +config BR2_PACKAGE_KODI_LIBBLURAY + bool "blu-ray" + select BR2_PACKAGE_LIBBLURAY + help + Enable Blu-ray input support. + Select this if you want to play back Blu-ray content. + +config BR2_PACKAGE_KODI_LIBCEC + bool "hdmi cec" + select BR2_PACKAGE_LIBCEC + help + Enable CEC (Consumer Electronics Control) support. + Select this if you want Kodi to support HDMI CEC. + +config BR2_PACKAGE_KODI_LCMS2 + bool "lcms2" + select BR2_PACKAGE_LCMS2 + help + Enable color management support. + +config BR2_PACKAGE_KODI_LIBMICROHTTPD + bool "web server" + select BR2_PACKAGE_LIBMICROHTTPD + help + Enable webserver feature + +config BR2_PACKAGE_KODI_LIBNFS + bool "nfs" + # libnfs -> libtirpc + depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC || BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBNFS + help + Enable NFS server support. + +comment "nfs support needs a toolchain w/ threads support" + depends on !(BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_HAS_NATIVE_RPC) + +config BR2_PACKAGE_KODI_MYSQL + bool "mysql" + select BR2_PACKAGE_MARIADB + help + Enable MySQL support + +choice + prompt "render system" + default BR2_PACKAGE_KODI_RENDER_SYSTEM_GL + +config BR2_PACKAGE_KODI_RENDER_SYSTEM_GL + bool "OpenGL" + depends on BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_LIBGLU + +config BR2_PACKAGE_KODI_RENDER_SYSTEM_GLES + bool "GLES" + depends on BR2_PACKAGE_HAS_LIBGLES + +endchoice + +config BR2_PACKAGE_KODI_PIPEWIRE + bool "pipewire" + depends on BR2_PACKAGE_PIPEWIRE + help + Enable Pipewire support. + +config BR2_PACKAGE_KODI_PULSEAUDIO + bool "pulseaudio" + depends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC + # Pulseaudio support in kodi needs glib support in Pulseaudio, + # see FindPulseAudio.cmake. Kodi meets all dependencies of + # libglib2, so there is no need to propagate them here. + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_PULSEAUDIO + help + Enable Pulseaudio support. + +config BR2_PACKAGE_KODI_LIBSHAIRPLAY + bool "shairport" + select BR2_PACKAGE_LIBSHAIRPLAY + help + Enable Shairport support. + Select this if you want to stream content from an Apple + device. + +config BR2_PACKAGE_KODI_LIBSMBCLIENT + bool "samba" + depends on BR2_PACKAGE_SAMBA4 + help + Enable Samba support + +config BR2_PACKAGE_KODI_LIBUSB + bool "usb" + # https://github.com/xbmc/xbmc/blob/Jarvis/configure.ac#L1554 + # "if libudev is available, we don't need libusb" + depends on !BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + help + Enable libusb support. + +config BR2_PACKAGE_KODI_LIBVDPAU + bool "vdpau" + depends on BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_X11 && \ + BR2_PACKAGE_KODI_RENDER_SYSTEM_GL + select BR2_PACKAGE_LIBVDPAU + help + Enable libvdpau support. + +comment "libvdpau support needs platform 'X11/OpenGL'" + depends on !BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_X11 || \ + !BR2_PACKAGE_KODI_RENDER_SYSTEM_GL + +config BR2_PACKAGE_KODI_UPNP + bool "upnp" + help + Enable UPnP support + +config BR2_PACKAGE_KODI_OPTICALDRIVE + bool "optical drives" + help + Add support for optical drives, to read e.g. DVDs... + +menu "Audio decoder addons" + source "package/kodi-audiodecoder-modplug/Config.in" + source "package/kodi-audiodecoder-nosefart/Config.in" + source "package/kodi-audiodecoder-sidplay/Config.in" + source "package/kodi-audiodecoder-snesapu/Config.in" + source "package/kodi-audiodecoder-stsound/Config.in" + source "package/kodi-audiodecoder-timidity/Config.in" + source "package/kodi-audiodecoder-vgmstream/Config.in" +endmenu + +menu "Audio encoder addons" + source "package/kodi-audioencoder-flac/Config.in" + source "package/kodi-audioencoder-lame/Config.in" + source "package/kodi-audioencoder-vorbis/Config.in" + source "package/kodi-audioencoder-wav/Config.in" +endmenu + +menu "Image decoder addons" + source "package/kodi-imagedecoder-heif/Config.in" + source "package/kodi-imagedecoder-raw/Config.in" +endmenu + +menu "Peripheral addons" + source "package/kodi-peripheral-joystick/Config.in" + source "package/kodi-peripheral-xarcade/Config.in" +endmenu + +menu "Inputstream addons" + source "package/kodi-inputstream-adaptive/Config.in" + source "package/kodi-inputstream-ffmpegdirect/Config.in" + source "package/kodi-inputstream-rtmp/Config.in" +endmenu + +menu "PVR addons" + source "package/kodi-pvr-argustv/Config.in" + source "package/kodi-pvr-dvblink/Config.in" + source "package/kodi-pvr-dvbviewer/Config.in" + source "package/kodi-pvr-filmon/Config.in" + source "package/kodi-pvr-hdhomerun/Config.in" + source "package/kodi-pvr-hts/Config.in" + source "package/kodi-pvr-iptvsimple/Config.in" + source "package/kodi-pvr-mediaportal-tvserver/Config.in" + source "package/kodi-pvr-mythtv/Config.in" + source "package/kodi-pvr-nextpvr/Config.in" + source "package/kodi-pvr-njoy/Config.in" + source "package/kodi-pvr-octonet/Config.in" + source "package/kodi-pvr-pctv/Config.in" + source "package/kodi-pvr-plutotv/Config.in" + source "package/kodi-pvr-stalker/Config.in" + source "package/kodi-pvr-vbox/Config.in" + source "package/kodi-pvr-vdr-vnsi/Config.in" + source "package/kodi-pvr-vuplus/Config.in" + source "package/kodi-pvr-waipu/Config.in" + source "package/kodi-pvr-wmc/Config.in" + source "package/kodi-pvr-zattoo/Config.in" +endmenu + +menu "Screensavers" + source "package/kodi-screensaver-asteroids/Config.in" + source "package/kodi-screensaver-asterwave/Config.in" + source "package/kodi-screensaver-biogenesis/Config.in" + source "package/kodi-screensaver-cpblobs/Config.in" + source "package/kodi-screensaver-greynetic/Config.in" + source "package/kodi-screensaver-matrixtrails/Config.in" + source "package/kodi-screensaver-pingpong/Config.in" + source "package/kodi-screensaver-pyro/Config.in" + source "package/kodi-screensaver-rsxs/Config.in" + source "package/kodi-screensaver-stars/Config.in" +endmenu + +menu "Skins" + source "package/kodi-skin-confluence/Config.in" +endmenu + +menu "Virtual file systems" + source "package/kodi-vfs-libarchive/Config.in" + source "package/kodi-vfs-rar/Config.in" + source "package/kodi-vfs-sftp/Config.in" +endmenu + +menu "Visualisations" + source "package/kodi-visualisation-fishbmc/Config.in" + source "package/kodi-visualisation-goom/Config.in" + source "package/kodi-visualisation-matrix/Config.in" + source "package/kodi-visualisation-shadertoy/Config.in" + source "package/kodi-visualisation-spectrum/Config.in" + source "package/kodi-visualisation-starburst/Config.in" + source "package/kodi-visualisation-waveform/Config.in" +endmenu + +endif # BR2_PACKAGE_KODI diff --git a/package/kodi/S50kodi b/package/kodi/S50kodi new file mode 100644 index 00000000..0afe7a67 --- /dev/null +++ b/package/kodi/S50kodi @@ -0,0 +1,39 @@ +#!/bin/sh +# +# Starts Kodi +# + +BIN=/usr/bin/br-kodi +KODI=/usr/lib/kodi/kodi.bin +KODI_ARGS="--standalone -fs -n" +PIDFILE=/var/run/kodi.pid + +start() { + printf "Starting Kodi: " + start-stop-daemon -S -q -b -m -p $PIDFILE --exec $BIN -- $KODI $KODI_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping Kodi: " + 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}" + exit 1 +esac diff --git a/package/kodi/br-kodi b/package/kodi/br-kodi new file mode 100755 index 00000000..83d4d4e5 --- /dev/null +++ b/package/kodi/br-kodi @@ -0,0 +1,36 @@ +#!/bin/sh + +# We're called with the real Kodi executable as +# first argument, followed by any Kodi extra args +KODI="${1}" +shift + +# In case someone asked we terminate, just kill +# the Kodi process +trap_kill() { + LOOP=0 + killall "${KODI##*/}" +} +trap trap_kill INT QUIT TERM + +LOOP=1 +while [ ${LOOP} -eq 1 ]; do + # Hack: BusyBox ash does not catch signals while a non-builtin + # is running, and only catches the signal when the non-builtin + # command ends. So, we just background the Kodi binary, and wait + # for it. But BusyBox' ash's wait builtin does not return the + # exit code even if there was only one job (which is correct + # for POSIX). So we explicitly wait for the Kodi job + "${KODI}" "${@}" & + wait %1 + ret=$? + case "${ret}" in + 0) ;; + 64) poweroff; LOOP=0;; + 66) reboot; LOOP=0;; + *) # Crash + sleep 1 + ;; + esac +done +exit ${ret} diff --git a/package/kodi/kodi.hash b/package/kodi/kodi.hash new file mode 100644 index 00000000..15d1e471 --- /dev/null +++ b/package/kodi/kodi.hash @@ -0,0 +1,10 @@ +# From https://github.com/xbmc/xbmc/blob/Omega/xbmc/interfaces/swig/CMakeLists.txt +sha512 743698979c801f3cfb36545888b5303e1e25dae5692bb45cab7ebbe102a6eda31f09abc6978349ad90ecaf630416fc87eacba7781244855e7e771a3c44041fa0 apache-groovy-binary-4.0.16.zip +sha512 8e7e62418a49ba810512c13a640a8bf35f878fcd54af32fdaab1111e37817f58b21b475980ba663fba4887e45ef8d88af8ff17796f20d202e929e8e2574546dc commons-lang3-3.14.0-bin.tar.gz +sha512 2e94877000dd270b69e2e8cbf49f258a90b4c628b6b6b0814e300a2f0e9c391f0816dceb0707e596ae3b7c9532f93e7a4917df47c77f44b3a810e14042ce5f3f commons-text-1.11.0-bin.tar.gz +# Locally computed +sha256 7f54c1fd8456ac46221fbc85e447362bdc209163c6cb19fca98d106560071b7c kodi-21.0-Omega.tar.gz +sha256 f38c4a4e7a4f4da6d8e83b8852489aa3bb6588a915dc41f5ee89d9aad305a06e kodi-libdvdcss-1.4.3-Next-Nexus-Alpha2-2.tar.gz +sha256 584f62a3896794408d46368e2ecf2c6217ab9c676ce85921b2d68b8961f49dfc kodi-libdvdnav-6.1.1-Next-Nexus-Alpha2-2.tar.gz +sha256 719130091e3adc9725ba72df808f24a14737a009dca5a4c38c601c0c76449b62 kodi-libdvdread-6.1.3-Next-Nexus-Alpha2-2.tar.gz +sha256 9d2396ef3e091d3b82bc84143e070700412984e8589513570f54e0675d1e8851 LICENSE.md diff --git a/package/kodi/kodi.mk b/package/kodi/kodi.mk new file mode 100644 index 00000000..e941847f --- /dev/null +++ b/package/kodi/kodi.mk @@ -0,0 +1,434 @@ +################################################################################ +# +# kodi +# +################################################################################ + +# When updating the version, please also update kodi-jsonschemabuilder +# and kodi-texturepacker +KODI_VERSION_MAJOR = 21.0 +KODI_VERSION_NAME = Omega +KODI_VERSION = $(KODI_VERSION_MAJOR)-$(KODI_VERSION_NAME) +KODI_SITE = $(call github,xbmc,xbmc,$(KODI_VERSION)) +KODI_LICENSE = GPL-2.0 +KODI_LICENSE_FILES = LICENSE.md +KODI_CPE_ID_VENDOR = kodi +KODI_CPE_ID_VERSION = $(KODI_VERSION_MAJOR) +# needed for binary addons +KODI_INSTALL_STAGING = YES +# kodi recommends building out-of-source +KODI_SUPPORTS_IN_SOURCE_BUILD = NO +KODI_DEPENDENCIES = \ + ffmpeg \ + flatbuffers \ + fmt \ + fontconfig \ + freetype \ + fstrcmp \ + giflib \ + host-flatbuffers \ + host-gawk \ + host-gettext \ + host-gperf \ + host-kodi-jsonschemabuilder \ + host-kodi-texturepacker \ + host-nasm \ + host-swig \ + host-xmlstarlet \ + jpeg \ + libass \ + libcdio \ + libcrossguid \ + libcurl \ + libdrm \ + libegl \ + libfribidi \ + libplist \ + libpng \ + lzo \ + openssl \ + pcre \ + python3 \ + rapidjson \ + spdlog \ + sqlite \ + taglib \ + tinyxml \ + tinyxml2 \ + zlib + +# taken from tools/depends/target/*/*-VERSION +KODI_LIBDVDCSS_VERSION = 1.4.3-Next-Nexus-Alpha2-2 +KODI_LIBDVDNAV_VERSION = 6.1.1-Next-Nexus-Alpha2-2 +KODI_LIBDVDREAD_VERSION = 6.1.3-Next-Nexus-Alpha2-2 +KODI_EXTRA_DOWNLOADS += \ + https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-binary-4.0.16.zip \ + https://archive.apache.org/dist/commons/lang/binaries/commons-lang3-3.14.0-bin.tar.gz \ + https://archive.apache.org/dist/commons/text/binaries/commons-text-1.11.0-bin.tar.gz \ + $(call github,xbmc,libdvdcss,$(KODI_LIBDVDCSS_VERSION))/kodi-libdvdcss-$(KODI_LIBDVDCSS_VERSION).tar.gz \ + $(call github,xbmc,libdvdnav,$(KODI_LIBDVDNAV_VERSION))/kodi-libdvdnav-$(KODI_LIBDVDNAV_VERSION).tar.gz \ + $(call github,xbmc,libdvdread,$(KODI_LIBDVDREAD_VERSION))/kodi-libdvdread-$(KODI_LIBDVDREAD_VERSION).tar.gz + +define KODI_PROVIDE_JAVA_TARBALLS + mkdir -p $(@D)/buildroot-build/build/download + cp $(KODI_DL_DIR)/apache-groovy-binary-4.0.16.zip $(@D)/buildroot-build/build/download + cp $(KODI_DL_DIR)/commons-lang3-3.14.0-bin.tar.gz $(@D)/buildroot-build/build/download + cp $(KODI_DL_DIR)/commons-text-1.11.0-bin.tar.gz $(@D)/buildroot-build/build/download +endef +KODI_POST_EXTRACT_HOOKS = KODI_PROVIDE_JAVA_TARBALLS + +KODI_CONF_OPTS += \ + -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) $(KODI_C_FLAGS)" \ + -DCMAKE_EXE_LINKER_FLAGS="$(KODI_EXTRA_LIBS)" \ + -DENABLE_APP_AUTONAME=OFF \ + -DENABLE_CCACHE=OFF \ + -DENABLE_DVDCSS=ON \ + -DENABLE_INTERNAL_CROSSGUID=OFF \ + -DWITH_FFMPEG=$(STAGING_DIR)/usr \ + -DENABLE_INTERNAL_FLATBUFFERS=OFF \ + -DFLATBUFFERS_FLATC_EXECUTABLE=$(HOST_DIR)/bin/flatc \ + -DENABLE_INTERNAL_RapidJSON=OFF \ + -DENABLE_INTERNAL_SPDLOG=OFF \ + -DKODI_DEPENDSBUILD=OFF \ + -DENABLE_GOLD=OFF \ + -DCLANG_FORMAT_EXECUTABLE=OFF \ + -DHOST_CAN_EXECUTE_TARGET=FALSE \ + -DNATIVEPREFIX=$(HOST_DIR) \ + -DDEPENDS_PATH=$(STAGING_DIR)/usr \ + -DENABLE_TESTING=OFF \ + -DENABLE_DEBUGFISSION=OFF \ + -DPYTHON_EXECUTABLE=$(HOST_DIR)/bin/python \ + -DPYTHON_INCLUDE_DIRS=$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR) \ + -DPYTHON_PATH=$(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR) \ + -DPYTHON_VER=$(PYTHON3_VERSION_MAJOR) \ + -DWITH_JSONSCHEMABUILDER=$(HOST_DIR)/bin/ \ + -DWITH_TEXTUREPACKER=$(HOST_DIR)/bin/ \ + -DLIBDVDCSS_URL=$(KODI_DL_DIR)/kodi-libdvdcss-$(KODI_LIBDVDCSS_VERSION).tar.gz \ + -DLIBDVDNAV_URL=$(KODI_DL_DIR)/kodi-libdvdnav-$(KODI_LIBDVDNAV_VERSION).tar.gz \ + -DLIBDVDREAD_URL=$(KODI_DL_DIR)/kodi-libdvdread-$(KODI_LIBDVDREAD_VERSION).tar.gz + +ifeq ($(BR2_PACKAGE_KODI_RENDER_SYSTEM_GL),y) +KODI_CONF_OPTS += -DAPP_RENDER_SYSTEM=gl +KODI_DEPENDENCIES += libgl libglu +else ifeq ($(BR2_PACKAGE_KODI_RENDER_SYSTEM_GLES),y) +KODI_CONF_OPTS += -DAPP_RENDER_SYSTEM=gles +KODI_DEPENDENCIES += libgles +endif + +ifeq ($(BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_GBM),y) +KODI_CORE_PLATFORM_NAME += gbm +KODI_DEPENDENCIES += libdisplay-info libgbm libinput libxkbcommon +endif + +ifeq ($(BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_WAYLAND),y) +KODI_CONF_OPTS += \ + -DPC_WAYLANDPP_SCANNER=$(HOST_DIR)/bin/wayland-scanner \ + -DPC_WAYLANDPP_SCANNER_FOUND=ON +KODI_CORE_PLATFORM_NAME += wayland +KODI_DEPENDENCIES += libxkbcommon waylandpp +endif + +ifeq ($(BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_X11),y) +KODI_CORE_PLATFORM_NAME += x11 +KODI_DEPENDENCIES += \ + xlib_libX11 \ + xlib_libXext \ + xlib_libXrandr +endif + +KODI_CONF_OPTS += -DCORE_PLATFORM_NAME="$(KODI_CORE_PLATFORM_NAME)" + +ifeq ($(BR2_ENABLE_LOCALE),) +KODI_DEPENDENCIES += libiconv +KODI_EXTRA_LIBS += -liconv +endif + +ifeq ($(BR2_arceb)$(BR2_arcle),y) +KODI_CONF_OPTS += -DWITH_ARCH=arc -DWITH_CPU=arc +else ifeq ($(BR2_armeb),y) +KODI_CONF_OPTS += -DWITH_ARCH=arm -DWITH_CPU=arm +else ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el),y) +KODI_CONF_OPTS += \ + -DWITH_ARCH=mips$(if $(BR2_ARCH_IS_64),64) \ + -DWITH_CPU=mips$(if $(BR2_ARCH_IS_64),64) +else ifeq ($(BR2_powerpc)$(BR2_powerpc64le),y) +KODI_CONF_OPTS += \ + -DWITH_ARCH=powerpc$(if $(BR2_ARCH_IS_64),64) \ + -DWITH_CPU=powerpc$(if $(BR2_ARCH_IS_64),64) +else ifeq ($(BR2_or1k)$(BR2_powerpc64)$(BR2_riscv)$(BR2_sparc64)$(BR2_sh4)$(BR2_xtensa),y) +KODI_CONF_OPTS += -DWITH_ARCH=$(BR2_ARCH) -DWITH_CPU=$(BR2_ARCH) +else +# Kodi auto-detects ARCH, tested: arm, aarch64, i386, x86_64 +# see project/cmake/scripts/linux/ArchSetup.cmake +KODI_CONF_OPTS += -DWITH_CPU=$(BR2_ARCH) +endif + +ifeq ($(BR2_ARM_CPU_HAS_NEON),y) +KODI_CONF_OPTS += -DENABLE_NEON=ON +else ifeq ($(BR2_aarch64),y) +KODI_CONF_OPTS += -DENABLE_NEON=ON +else +KODI_CONF_OPTS += -DENABLE_NEON=OFF +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE),y) +KODI_CONF_OPTS += -D_SSE_OK=ON -D_SSE_TRUE=ON +else +KODI_CONF_OPTS += -D_SSE_OK=OFF -D_SSE_TRUE=OFF +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE2),y) +KODI_CONF_OPTS += -D_SSE2_OK=ON -D_SSE2_TRUE=ON +else +KODI_CONF_OPTS += -D_SSE2_OK=OFF -D_SSE2_TRUE=OFF +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE3),y) +KODI_CONF_OPTS += -D_SSE3_OK=ON -D_SSE3_TRUE=ON +else +KODI_CONF_OPTS += -D_SSE3_OK=OFF -D_SSE3_TRUE=OFF +endif + +ifeq ($(BR2_X86_CPU_HAS_SSSE3),y) +KODI_CONF_OPTS += -D_SSSE3_OK=ON -D_SSSE3_TRUE=ON +else +KODI_CONF_OPTS += -D_SSSE3_OK=OFF -D_SSSE3_TRUE=OFF +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE4),y) +KODI_CONF_OPTS += -D_SSE41_OK=ON -D_SSE41_TRUE=ON +else +KODI_CONF_OPTS += -D_SSE41_OK=OFF -D_SSE41_TRUE=OFF +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE42),y) +KODI_CONF_OPTS += -D_SSE42_OK=ON -D_SSE42_TRUE=ON +else +KODI_CONF_OPTS += -D_SSE42_OK=OFF -D_SSE42_TRUE=OFF +endif + +ifeq ($(BR2_X86_CPU_HAS_AVX),y) +KODI_CONF_OPTS += -D_AVX_OK=ON -D_AVX_TRUE=ON +else +KODI_CONF_OPTS += -D_AVX_OK=OFF -D_AVX_TRUE=OFF +endif + +ifeq ($(BR2_X86_CPU_HAS_AVX2),y) +KODI_CONF_OPTS += -D_AVX2_OK=ON -D_AVX2_TRUE=ON +else +KODI_CONF_OPTS += -D_AVX2_OK=OFF -D_AVX2_TRUE=OFF +endif + +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_5),) +KODI_C_FLAGS += -std=gnu99 +endif + +ifeq ($(BR2_PACKAGE_KODI_MYSQL),y) +KODI_CONF_OPTS += -DENABLE_MYSQLCLIENT=ON +KODI_DEPENDENCIES += mariadb +else +KODI_CONF_OPTS += -DENABLE_MYSQLCLIENT=OFF +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +KODI_CONF_OPTS += -DENABLE_UDEV=ON +KODI_DEPENDENCIES += udev +else +KODI_CONF_OPTS += -DENABLE_UDEV=OFF +ifeq ($(BR2_PACKAGE_KODI_LIBUSB),y) +KODI_CONF_OPTS += -DENABLE_LIBUSB=ON +KODI_DEPENDENCIES += libusb-compat +else +KODI_CONF_OPTS += -DENABLE_LIBUSB=OFF +endif +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +KODI_CONF_OPTS += -DENABLE_CAP=ON +KODI_DEPENDENCIES += libcap +else +KODI_CONF_OPTS += -DENABLE_CAP=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBXML2)$(BR2_PACKAGE_LIBXSLT),yy) +KODI_CONF_OPTS += -DENABLE_XSLT=ON +KODI_DEPENDENCIES += libxml2 libxslt +else +KODI_CONF_OPTS += -DENABLE_XSLT=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_BLUEZ),y) +KODI_CONF_OPTS += -DENABLE_BLUETOOTH=ON +KODI_DEPENDENCIES += bluez5_utils +else +KODI_CONF_OPTS += -DENABLE_BLUETOOTH=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_DBUS),y) +KODI_DEPENDENCIES += dbus +KODI_CONF_OPTS += -DENABLE_DBUS=ON +else +KODI_CONF_OPTS += -DENABLE_DBUS=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_EVENTCLIENTS),y) +KODI_CONF_OPTS += -DENABLE_EVENTCLIENTS=ON +else +KODI_CONF_OPTS += -DENABLE_EVENTCLIENTS=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_ALSA_LIB),y) +KODI_CONF_OPTS += -DENABLE_ALSA=ON +KODI_DEPENDENCIES += alsa-lib +else +KODI_CONF_OPTS += -DENABLE_ALSA=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_LIBMICROHTTPD),y) +KODI_CONF_OPTS += -DENABLE_MICROHTTPD=ON +KODI_DEPENDENCIES += libmicrohttpd +else +KODI_CONF_OPTS += -DENABLE_MICROHTTPD=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_LIBSMBCLIENT),y) +KODI_DEPENDENCIES += samba4 +KODI_CONF_OPTS += -DENABLE_SMBCLIENT=ON +else +KODI_CONF_OPTS += -DENABLE_SMBCLIENT=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_LIBNFS),y) +KODI_DEPENDENCIES += libnfs +KODI_CONF_OPTS += -DENABLE_NFS=ON +else +KODI_CONF_OPTS += -DENABLE_NFS=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_LIBBLURAY),y) +KODI_DEPENDENCIES += libbluray +KODI_CONF_OPTS += -DENABLE_BLURAY=ON +else +KODI_CONF_OPTS += -DENABLE_BLURAY=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_LIBSHAIRPLAY),y) +KODI_DEPENDENCIES += libshairplay +KODI_CONF_OPTS += -DENABLE_AIRTUNES=ON +else +KODI_CONF_OPTS += -DENABLE_AIRTUNES=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_AVAHI),y) +KODI_DEPENDENCIES += avahi +KODI_CONF_OPTS += -DENABLE_AVAHI=ON +else +KODI_CONF_OPTS += -DENABLE_AVAHI=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_LIBCEC),y) +KODI_DEPENDENCIES += libcec +KODI_CONF_OPTS += -DENABLE_CEC=ON +else +KODI_CONF_OPTS += -DENABLE_CEC=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_LCMS2),y) +KODI_DEPENDENCIES += lcms2 +KODI_CONF_OPTS += -DENABLE_LCMS2=ON +else +KODI_CONF_OPTS += -DENABLE_LCMS2=OFF +endif + +ifeq ($(BR2_PACKAGE_LIRC_TOOLS),y) +KODI_DEPENDENCIES += lirc-tools +endif + +ifeq ($(BR2_PACKAGE_LIBVA),y) +KODI_DEPENDENCIES += libva +KODI_CONF_OPTS += -DENABLE_VAAPI=ON +else +KODI_CONF_OPTS += -DENABLE_VAAPI=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_LIBVDPAU),y) +KODI_DEPENDENCIES += libvdpau +KODI_CONF_OPTS += -DENABLE_VDPAU=ON +else +KODI_CONF_OPTS += -DENABLE_VDPAU=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_UPNP),y) +KODI_CONF_OPTS += -DENABLE_UPNP=ON +else +KODI_CONF_OPTS += -DENABLE_UPNP=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_OPTICALDRIVE),y) +KODI_CONF_OPTS += -DENABLE_OPTICAL=ON +else +KODI_CONF_OPTS += -DENABLE_OPTICAL=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_PIPEWIRE),y) +KODI_CONF_OPTS += -DENABLE_PIPEWIRE=ON +KODI_DEPENDENCIES += pipewire +else +KODI_CONF_OPTS += -DENABLE_PIPEWIRE=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_PULSEAUDIO),y) +KODI_CONF_OPTS += -DENABLE_PULSEAUDIO=ON +KODI_DEPENDENCIES += pulseaudio +else +KODI_CONF_OPTS += -DENABLE_PULSEAUDIO=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBUDFREAD),y) +KODI_CONF_OPTS += -DENABLE_UDFREAD=ON +KODI_DEPENDENCIES += libudfread +else +KODI_CONF_OPTS += -DENABLE_UDFREAD=OFF +endif + +# Remove versioncheck addon, updating Kodi is done by building a new +# buildroot image. +KODI_ADDON_MANIFEST = $(TARGET_DIR)/usr/share/kodi/system/addon-manifest.xml +define KODI_CLEAN_UNUSED_ADDONS + rm -Rf $(TARGET_DIR)/usr/share/kodi/addons/service.xbmc.versioncheck + $(HOST_DIR)/bin/xml ed -L \ + -d "/addons/addon[text()='service.xbmc.versioncheck']" \ + $(KODI_ADDON_MANIFEST) +endef +KODI_POST_INSTALL_TARGET_HOOKS += KODI_CLEAN_UNUSED_ADDONS + +define KODI_INSTALL_BR_WRAPPER + $(INSTALL) -D -m 0755 package/kodi/br-kodi \ + $(TARGET_DIR)/usr/bin/br-kodi +endef +KODI_POST_INSTALL_TARGET_HOOKS += KODI_INSTALL_BR_WRAPPER + +# When run from a startup script, Kodi has no $HOME where to store its +# configuration, so ends up storing it in /.kodi (yes, at the root of +# the rootfs). This is a problem for read-only filesystems. But we can't +# easily change that, so create /.kodi as a symlink where we want the +# config to eventually be. Add synlinks for the legacy XBMC name as well +define KODI_INSTALL_CONFIG_DIR + $(INSTALL) -d -m 0755 $(TARGET_DIR)/var/kodi + ln -sf /var/kodi $(TARGET_DIR)/.kodi + ln -sf /var/kodi $(TARGET_DIR)/var/xbmc + ln -sf /var/kodi $(TARGET_DIR)/.xbmc +endef +KODI_POST_INSTALL_TARGET_HOOKS += KODI_INSTALL_CONFIG_DIR + +define KODI_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/kodi/S50kodi \ + $(TARGET_DIR)/etc/init.d/S50kodi +endef + +define KODI_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/kodi/kodi.service \ + $(TARGET_DIR)/usr/lib/systemd/system/kodi.service +endef + +$(eval $(cmake-package)) diff --git a/package/kodi/kodi.service b/package/kodi/kodi.service new file mode 100644 index 00000000..f30741c1 --- /dev/null +++ b/package/kodi/kodi.service @@ -0,0 +1,12 @@ +[Unit] +Description = Kodi Entertainment Center +After = network.target + +[Service] +Type = simple +ExecStart = /usr/lib/kodi/kodi.bin --standalone -fs -n +Restart = on-failure + +[Install] +WantedBy = multi-user.target + diff --git a/package/kompexsqlite/Config.in b/package/kompexsqlite/Config.in new file mode 100644 index 00000000..5b718425 --- /dev/null +++ b/package/kompexsqlite/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_KOMPEXSQLITE + bool "kompexsqlite" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + help + The Kompex SQLite Wrapper is an open source C++ wrapper + library for SQLite. + + http://sqlitewrapper.kompex-online.com/index.php + +comment "kompexsqlite needs a toolchain w/ C++, wchar, threads, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/kompexsqlite/kompexsqlite.hash b/package/kompexsqlite/kompexsqlite.hash new file mode 100644 index 00000000..aa0f2695 --- /dev/null +++ b/package/kompexsqlite/kompexsqlite.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 81773ddb156fed51ef43a5f562e3b47761c4c33de9197bf0c3e7099b08579e2a download.php?dl=KompexSQLiteWrapper-Source_1.12.15.tar.gz +sha256 65fd20aeb67892740a710a09d788acfda8747741e746395739412919f84b5f9f inc/KompexSQLiteDatabase.h +sha256 001f26c0b2ca407a9a5d3f5e0690d7e576687b23110e18d2a08014dd774eb71c inc/sqlite3.h diff --git a/package/kompexsqlite/kompexsqlite.mk b/package/kompexsqlite/kompexsqlite.mk new file mode 100644 index 00000000..6a619de0 --- /dev/null +++ b/package/kompexsqlite/kompexsqlite.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# kompexsqlite +# +################################################################################ + +KOMPEXSQLITE_VERSION = 1.12.15 +KOMPEXSQLITE_SOURCE = download.php?dl=KompexSQLiteWrapper-Source_$(KOMPEXSQLITE_VERSION).tar.gz +KOMPEXSQLITE_SITE = http://sqlitewrapper.kompex-online.com/counter +KOMPEXSQLITE_INSTALL_STAGING = YES +KOMPEXSQLITE_LICENSE = MIT (wrapper), Public Domain (bundled sqlite) +KOMPEXSQLITE_LICENSE_FILES = inc/KompexSQLiteDatabase.h inc/sqlite3.h + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +KOMPEXSQLITE_CONFS += ReleaseStaticLib +define KOMPEXSQLITE_INSTALL_STATIC_LIB + $(INSTALL) -D -m 0644 $(@D)/lib/release/KompexSQLiteWrapper_Static.a \ + $(STAGING_DIR)/usr/lib/libkompex-sqlite-wrapper.a +endef +endif + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +KOMPEXSQLITE_CONFS += ReleaseDynamicLib +define KOMPEXSQLITE_INSTALL_SHARED_LIB + $(INSTALL) -D -m 0755 $(@D)/lib/release/KompexSQLiteWrapper.so \ + $(1)/usr/lib/libkompex-sqlite-wrapper.so +endef +endif + +define KOMPEXSQLITE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + ALLCONFS="$(KOMPEXSQLITE_CONFS)" \ + -C "$(@D)/Kompex SQLite Wrapper" all +endef + +define KOMPEXSQLITE_INSTALL_STAGING_CMDS + mkdir -p $(STAGING_DIR)/usr/include/kompex + $(INSTALL) -m 644 $(@D)/inc/* $(STAGING_DIR)/usr/include/kompex + $(KOMPEXSQLITE_INSTALL_STATIC_LIB) + $(call KOMPEXSQLITE_INSTALL_SHARED_LIB,$(STAGING_DIR)) +endef + +define KOMPEXSQLITE_INSTALL_TARGET_CMDS + $(call KOMPEXSQLITE_INSTALL_SHARED_LIB,$(TARGET_DIR)) +endef + +$(eval $(generic-package)) diff --git a/package/ksmbd-tools/Config.in b/package/ksmbd-tools/Config.in new file mode 100644 index 00000000..ce1850e0 --- /dev/null +++ b/package/ksmbd-tools/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_KSMBD_TOOLS + bool "ksmbd-tools" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2, libnl + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBNL + help + ksmbd kernel server userspace utilities. + + https://github.com/cifsd-team/ksmbd-tools + +comment "ksmbd-tools needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/ksmbd-tools/ksmbd-tools.hash b/package/ksmbd-tools/ksmbd-tools.hash new file mode 100644 index 00000000..3367886d --- /dev/null +++ b/package/ksmbd-tools/ksmbd-tools.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 5da7fb4cb4368f9abf56f6f9fbc17b25e387876bed9ff7ee0d6f1140ef07c8d7 ksmbd-tools-3.5.2.tar.gz +sha256 576540abf5e95029ad4ad90e32071385a5e95b2c30708c706116f3eb87b9a3de COPYING diff --git a/package/ksmbd-tools/ksmbd-tools.mk b/package/ksmbd-tools/ksmbd-tools.mk new file mode 100644 index 00000000..261eddad --- /dev/null +++ b/package/ksmbd-tools/ksmbd-tools.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# ksmbd-tools +# +################################################################################ + +KSMBD_TOOLS_VERSION = 3.5.2 +KSMBD_TOOLS_SITE = https://github.com/cifsd-team/ksmbd-tools/releases/download/$(KSMBD_TOOLS_VERSION) +KSMBD_TOOLS_LICENSE = GPL-2.0+ +KSMBD_TOOLS_LICENSE_FILES = COPYING +KSMBD_TOOLS_DEPENDENCIES = host-pkgconf libglib2 libnl + +ifeq ($(BR2_PACKAGE_LIBKRB5),y) +KSMBD_TOOLS_CONF_OPTS += --enable-krb5 +KSMBD_TOOLS_DEPENDENCIES += libkrb5 +else +KSMBD_TOOLS_CONF_OPTS += --disable-krb5 +endif + +$(eval $(autotools-package)) diff --git a/package/kvazaar/Config.in b/package/kvazaar/Config.in new file mode 100644 index 00000000..558d161e --- /dev/null +++ b/package/kvazaar/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_KVAZAAR + bool "kvazaar" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + # use deprecated altivec vec_lvsl() + depends on !BR2_powerpc && !BR2_powerpc64 && !BR2_powerpc64le + help + An open-source HEVC encoder licensed under LGPLv2.1 + + https://github.com/ultravideo/kvazaar + +comment "kvazaar needs a toolchain w/ C++, threads" + depends on !BR2_powerpc && !BR2_powerpc64 && !BR2_powerpc64le + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/kvazaar/kvazaar.hash b/package/kvazaar/kvazaar.hash new file mode 100644 index 00000000..4956fc70 --- /dev/null +++ b/package/kvazaar/kvazaar.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 f8fb72184f10b2fac295452bd0d5936d4449ed849754d5d1f3e7035998983573 kvazaar-2.2.0.tar.xz +sha256 3c1dc3d7f8a3d08c14f4fbe9942f45764d8a21a3296e8d83446f33fd65f21c38 LICENSE +sha256 16f569c87d5ec20b7474b55ee0a8877b8f8b4dc13f9567ebe0b8fe8afdeb34d2 LICENSE.EXT.greatest +sha256 f84c0f33873a015f399d8171cf321af2f09ef915ae7ad5a9edaa7d0286cf9d5e LICENSE.EXT.x264asm diff --git a/package/kvazaar/kvazaar.mk b/package/kvazaar/kvazaar.mk new file mode 100644 index 00000000..6bcc6066 --- /dev/null +++ b/package/kvazaar/kvazaar.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# kvazaar +# +################################################################################ + +KVAZAAR_VERSION = 2.2.0 +KVAZAAR_SOURCE = kvazaar-$(KVAZAAR_VERSION).tar.xz +KVAZAAR_SITE = https://github.com/ultravideo/kvazaar/releases/download/v$(KVAZAAR_VERSION) +KVAZAAR_LICENSE = BSD-3-Clause, ISC (greatest, x264asm) +KVAZAAR_LICENSE_FILES = LICENSE LICENSE.EXT.greatest LICENSE.EXT.x264asm +KVAZAAR_INSTALL_STAGING = YES +KVAZAAR_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_CRYPTOPP),y) +KVAZAAR_DEPENDENCIES += cryptopp +KVAZAAR_CONF_OPTS += --with-cryptopp +else +KVAZAAR_CONF_OPTS += --without-cryptopp +endif + +$(eval $(autotools-package)) diff --git a/package/kvm-unit-tests/Config.in b/package/kvm-unit-tests/Config.in new file mode 100644 index 00000000..02ea8dd5 --- /dev/null +++ b/package/kvm-unit-tests/Config.in @@ -0,0 +1,44 @@ +config BR2_PACKAGE_KVM_UNIT_TESTS_ARCH_SUPPORTS + bool + # On ARM, it needs virtualization extensions and little endian CPUs + default y if (BR2_arm || BR2_aarch64) && \ + (BR2_cortex_a7 || BR2_cortex_a12 || \ + BR2_cortex_a15 || BR2_cortex_a15_a7 || \ + BR2_cortex_a17 || BR2_cortex_a17_a7 || \ + BR2_cortex_a55 || BR2_cortex_a75 || \ + BR2_cortex_a75_a55 || BR2_cortex_a76 || \ + BR2_cortex_a76_a55) + default y if BR2_i386 || BR2_x86_64 + default y if BR2_powerpc64 || BR2_powerpc64le + default y if BR2_s390x + +config BR2_PACKAGE_KVM_UNIT_TESTS + bool "kvm-unit-tests" + depends on BR2_PACKAGE_KVM_UNIT_TESTS_ARCH_SUPPORTS + # on i386 and x86-64, __builtin_reachable is used, so we need + # gcc 4.5 at least. on i386, we use the target gcc, while on + # x86-64 we use the host gcc (see .mk file for details) + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 || !BR2_i386 + depends on BR2_HOSTARCH = "x86_64" || !BR2_x86_64 + select BR2_HOSTARCH_NEEDS_IA32_COMPILER if BR2_x86_64 + help + kvm-unit-tests is a project as old as KVM. As its name + suggests, it's purpose is to provide unit tests for KVM. The + unit tests are tiny guest operating systems that generally + execute only tens of lines of C and assembler test code in + order to obtain its PASS/FAIL result. Unit tests provide KVM + and virt hardware functional testing by targeting the + features through minimal implementations of their use per + the hardware specification. The simplicity of unit tests + make them easy to verify they are correct, easy to maintain, + and easy to use in timing measurements. Unit tests are also + often used for quick and dirty bug reproducers. The + reproducers may then be kept as regression tests. It's + strongly encouraged that patches implementing new KVM + features are submitted with accompanying unit tests. + + http://www.linux-kvm.org/page/KVM-unit-tests + +comment "kvm-unit-tests needs a toolchain w/ gcc >= 4.5" + depends on BR2_i386 + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 diff --git a/package/kvm-unit-tests/kvm-unit-tests.hash b/package/kvm-unit-tests/kvm-unit-tests.hash new file mode 100644 index 00000000..d4db9f2b --- /dev/null +++ b/package/kvm-unit-tests/kvm-unit-tests.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 8636994e10240705f10a9150ef688ae6832d0ea0dcc8860c826c645ecfc1169f kvm-unit-tests-v2024-01-08.tar.bz2 +sha256 b3c9ca9e257f2eaae070cf0ccdf8770764f05a947a39a835e633413750a5777b COPYRIGHT +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/kvm-unit-tests/kvm-unit-tests.mk b/package/kvm-unit-tests/kvm-unit-tests.mk new file mode 100644 index 00000000..73d20d6b --- /dev/null +++ b/package/kvm-unit-tests/kvm-unit-tests.mk @@ -0,0 +1,63 @@ +################################################################################ +# +# kvm-unit-tests +# +################################################################################ + +KVM_UNIT_TESTS_VERSION = 2024-01-08 +KVM_UNIT_TESTS_SOURCE = kvm-unit-tests-v$(KVM_UNIT_TESTS_VERSION).tar.bz2 +KVM_UNIT_TESTS_SITE = https://gitlab.com/kvm-unit-tests/kvm-unit-tests/-/archive/v$(KVM_UNIT_TESTS_VERSION) +KVM_UNIT_TESTS_LICENSE = GPL-2.0, LGPL-2.0 +KVM_UNIT_TESTS_LICENSE_FILES = COPYRIGHT LICENSE + +ifeq ($(BR2_aarch64)$(BR2_aarch64_be),y) +KVM_UNIT_TESTS_ARCH = aarch64 +else ifeq ($(BR2_arm),y) +KVM_UNIT_TESTS_ARCH = arm +else ifeq ($(BR2_i386),y) +KVM_UNIT_TESTS_ARCH = i386 +else ifeq ($(BR2_powerpc64)$(BR2_powerpc64le),y) +KVM_UNIT_TESTS_ARCH = ppc64 +else ifeq ($(BR2_s390x),y) +KVM_UNIT_TESTS_ARCH = s390x +else ifeq ($(BR2_x86_64),y) +KVM_UNIT_TESTS_ARCH = x86_64 +endif + +ifeq ($(BR2_ENDIAN),"LITTLE") +KVM_UNIT_TESTS_ENDIAN = little +else +KVM_UNIT_TESTS_ENDIAN = big +endif + +KVM_UNIT_TESTS_CONF_OPTS =\ + --disable-werror \ + --arch="$(KVM_UNIT_TESTS_ARCH)" \ + --processor="$(GCC_TARGET_CPU)" \ + --endian="$(KVM_UNIT_TESTS_ENDIAN)" + +# For all architectures but x86-64, we use the target +# compiler. However, for x86-64, we use the host compiler, as +# kvm-unit-tests builds 32 bit code, which Buildroot toolchains for +# x86-64 cannot do. +ifeq ($(BR2_x86_64),) +KVM_UNIT_TESTS_CONF_OPTS += --cross-prefix="$(TARGET_CROSS)" +endif + +define KVM_UNIT_TESTS_CONFIGURE_CMDS + cd $(@D) && ./configure $(KVM_UNIT_TESTS_CONF_OPTS) +endef + +define KVM_UNIT_TESTS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(KVM_UNIT_TESTS_MAKE_OPTS) -C $(@D) \ + standalone +endef + +define KVM_UNIT_TESTS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(KVM_UNIT_TESTS_MAKE_OPTS) -C $(@D) \ + DESTDIR=$(TARGET_DIR)/usr/share/kvm-unit-tests/ \ + install +endef + +# Does use configure script but not an autotools one +$(eval $(generic-package)) diff --git a/package/kvmtool/Config.in b/package/kvmtool/Config.in new file mode 100644 index 00000000..35225e01 --- /dev/null +++ b/package/kvmtool/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_KVMTOOL + bool "kvmtool" + depends on BR2_USE_MMU # guest simple init fork() + # No MADV_HUGEPAGE define in uClibc(-ng) + depends on (BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) + # Only mips big-endian seems to be supported (build breaks) + # Should work on powerpc64 but the build breaks with missing types + depends on BR2_aarch64 || BR2_arm || BR2_armeb || BR2_i386 || \ + BR2_mips || BR2_x86_64 || BR2_riscv + # libfdt is only required for DT architectures... + # ...but it's not able to build for static targets + depends on !(BR2_STATIC_LIBS && (BR2_aarch64 || BR2_arm || \ + BR2_armeb || BR2_riscv)) + select BR2_PACKAGE_DTC if BR2_aarch64 || BR2_arm || BR2_armeb || BR2_riscv + help + kvmtool is a lightweight tool for hosting KVM guests. + As a pure virtualization tool it only supports guests using + the same architecture, though it supports running 32-bit + guests on those 64-bit architectures that allow this. + + https://git.kernel.org/cgit/linux/kernel/git/will/kvmtool.git/tree/README + +comment "kvmtool needs a glibc or musl toolchain" + depends on BR2_USE_MMU + depends on BR2_i386 || BR2_mips || BR2_x86_64 + depends on !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) + +comment "kvmtool needs a glibc or musl toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_aarch64 || BR2_arm || BR2_armeb + depends on !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) || \ + BR2_STATIC_LIBS diff --git a/package/kvmtool/kvmtool.hash b/package/kvmtool/kvmtool.hash new file mode 100644 index 00000000..63bbb716 --- /dev/null +++ b/package/kvmtool/kvmtool.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 a8504d8b184cae4e65ff5555cc84a436f3fbbc832a8017e3ca59d997dd5581db kvmtool-4d2c017f41533b0e51e00f689050c26190a15318-git4.tar.gz +sha256 0d5bf346df9e635a29dcdddf832dc5b002ca6cdc1c5c9c6c567d2a61bb0c5c15 COPYING diff --git a/package/kvmtool/kvmtool.mk b/package/kvmtool/kvmtool.mk new file mode 100644 index 00000000..7fec6643 --- /dev/null +++ b/package/kvmtool/kvmtool.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# kvmtool +# +################################################################################ + +KVMTOOL_VERSION = 4d2c017f41533b0e51e00f689050c26190a15318 +KVMTOOL_SITE = https://git.kernel.org/pub/scm/linux/kernel/git/will/kvmtool.git +KVMTOOL_SITE_METHOD = git +KVMTOOL_DEPENDENCIES = \ + $(if $(BR2_PACKAGE_BINUTILS),binutils) \ + $(if $(BR2_PACKAGE_DTC),dtc) \ + $(if $(BR2_PACKAGE_LIBAIO),libaio) \ + $(if $(BR2_PACKAGE_LIBGTK3),libgtk3) \ + $(if $(BR2_PACKAGE_LIBVNCSERVER),libvncserver) \ + $(if $(BR2_PACKAGE_SDL),sdl) \ + $(if $(BR2_PACKAGE_ZLIB),zlib) +KVMTOOL_LICENSE = GPL-2.0 +KVMTOOL_LICENSE_FILES = COPYING +KVMTOOL_CPE_ID_VALID = YES + +# Disable -Werror, otherwise musl is not happy +KVMTOOL_MAKE_OPTS = \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + LDFLAGS="$(TARGET_LDFLAGS) $(KVMTOOL_EXTRA_LDFLAGS)" \ + WERROR=0 + +define KVMTOOL_BUILD_CMDS + $(TARGET_MAKE_ENV) ARCH=$(NORMALIZED_ARCH) $(MAKE) -C $(@D) $(KVMTOOL_MAKE_OPTS) +endef + +define KVMTOOL_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) ARCH=$(NORMALIZED_ARCH) $(MAKE) -C $(@D) \ + $(KVMTOOL_MAKE_OPTS) install DESTDIR=$(TARGET_DIR) prefix=/usr +endef + +$(eval $(generic-package)) diff --git a/package/kyua/Config.in b/package/kyua/Config.in new file mode 100644 index 00000000..4fc5e098 --- /dev/null +++ b/package/kyua/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_KYUA + bool "kyua" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_HAS_LUAINTERPRETER # lutok + depends on !BR2_PACKAGE_LUAJIT # lutok + depends on !BR2_STATIC_LIBS # lutok + depends on BR2_USE_MMU # atf + select BR2_PACKAGE_ATF + select BR2_PACKAGE_LUTOK + select BR2_PACKAGE_SQLITE + help + Kyua is a testing framework for infrastructure software, + originally designed to equip BSD-based operating systems + with a test suite. This means that Kyua is lightweight + and simple, and that Kyua integrates well with various build + systems and continuous integration frameworks. + + https://github.com/jmmv/kyua + +comment "kyua needs a toolchain w/ C++, dynamic library and full Lua" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_PACKAGE_LUAJIT || BR2_STATIC_LIBS + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + depends on BR2_USE_MMU diff --git a/package/kyua/kyua.hash b/package/kyua/kyua.hash new file mode 100644 index 00000000..4b0e5589 --- /dev/null +++ b/package/kyua/kyua.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 db6e5d341d5cf7e49e50aa361243e19087a00ba33742b0855d2685c0b8e721d6 kyua-0.13.tar.gz +sha256 a6a8f43f6d2ed9b801978cc012cc816c4a9421a6dcea0579d3a40eab4b349674 LICENSE diff --git a/package/kyua/kyua.mk b/package/kyua/kyua.mk new file mode 100644 index 00000000..5caa2039 --- /dev/null +++ b/package/kyua/kyua.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# kyua +# +################################################################################ + +KYUA_VERSION = 0.13 +KYUA_SITE = https://github.com/jmmv/kyua/releases/download/kyua-$(KYUA_VERSION) +KYUA_DEPENDENCIES = host-pkgconf atf lutok sqlite +KYUA_CONF_OPTS = --without-doxygen --without-atf +KYUA_LICENSE = BSD-3-Clause +KYUA_LICENSE_FILES = LICENSE +KYUA_CONF_ENV = \ + kyua_cv_attribute_noreturn=yes \ + kyua_cv_getcwd_dyn=yes \ + kyua_cv_lchmod_works=no \ + kyua_cv_getopt_gnu=yes \ + kyua_cv_getopt_optind_reset_value=0 \ + kyua_cv_signals_lastno=15 + +define KYUA_INSTALL_CONFIG + $(INSTALL) -D -m 644 $(@D)/examples/kyua.conf $(TARGET_DIR)/etc/kyua/kyua.conf +endef + +KYUA_POST_INSTALL_HOOKS += KYUA_INSTALL_CONFIG + +$(eval $(autotools-package)) diff --git a/package/lame/Config.in b/package/lame/Config.in new file mode 100644 index 00000000..2b144a05 --- /dev/null +++ b/package/lame/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LAME + bool "lame" + help + LAME is a high quality MPEG Audio Layer III (MP3) encoder. + + http://lame.sourceforge.net/ diff --git a/package/lame/lame.hash b/package/lame/lame.hash new file mode 100644 index 00000000..58dc6f78 --- /dev/null +++ b/package/lame/lame.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e lame-3.100.tar.gz +sha256 bfe4a52dc4645385f356a8e83cc54216a293e3b6f1cb4f79f5fc0277abf937fd COPYING diff --git a/package/lame/lame.mk b/package/lame/lame.mk new file mode 100644 index 00000000..206e4407 --- /dev/null +++ b/package/lame/lame.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# lame +# +################################################################################ + +LAME_VERSION = 3.100 +LAME_SITE = http://downloads.sourceforge.net/project/lame/lame/$(LAME_VERSION) +LAME_DEPENDENCIES = host-pkgconf +LAME_INSTALL_STAGING = YES +LAME_CONF_ENV = GTK_CONFIG=/bin/false +LAME_CONF_OPTS = --enable-dynamic-frontends +LAME_LICENSE = LGPL-2.0+ +LAME_LICENSE_FILES = COPYING +LAME_CPE_ID_VALID = YES + +ifeq ($(BR2_PACKAGE_LIBSNDFILE),y) +LAME_DEPENDENCIES += libsndfile +LAME_CONF_OPTS += --with-fileio=sndfile +endif + +ifeq ($(BR2_PACKAGE_NCURSES),y) +LAME_DEPENDENCIES += ncurses +endif + +ifeq ($(BR2_ENDIAN),"BIG") +define LAME_BIGENDIAN_ARCH + echo "#define WORDS_BIGENDIAN 1" >>$(@D)/config.h +endef +endif + +LAME_POST_CONFIGURE_HOOKS += LAME_BIGENDIAN_ARCH + +$(eval $(autotools-package)) diff --git a/package/lapack/Config.in b/package/lapack/Config.in new file mode 100644 index 00000000..4e92b49a --- /dev/null +++ b/package/lapack/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_LAPACK_ARCH_SUPPORTS + bool + default y + # _fpu_control is used on PowerPC, but not available with + # uClibc or musl + depends on !BR2_powerpc || BR2_TOOLCHAIN_USES_GLIBC + +comment "lapack/blas needs a glibc toolchain" + depends on BR2_powerpc + depends on !BR2_TOOLCHAIN_USES_GLIBC + +comment "lapack/blas needs a toolchain w/ fortran" + depends on BR2_PACKAGE_LAPACK_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_FORTRAN + +config BR2_PACKAGE_LAPACK + bool "lapack/blas" + depends on BR2_PACKAGE_LAPACK_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_FORTRAN + help + LAPACK and BLAS FORTRAN implementation. This package + installs two libraries: libblas and liblapack. + + http://www.netlib.org/lapack/ + +config BR2_PACKAGE_LAPACK_COMPLEX + bool "Complex/Complex16 support" + default y + depends on BR2_PACKAGE_LAPACK + help + Builds support for COMPLEX and COMPLEX16 data types. diff --git a/package/lapack/lapack.hash b/package/lapack/lapack.hash new file mode 100644 index 00000000..4d4d2c05 --- /dev/null +++ b/package/lapack/lapack.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 cd005cd021f144d7d5f7f33c943942db9f03a28d110d6a3b80d718a295f7f714 lapack-3.10.1.tar.gz +sha256 44f7c08ab11e40b21d8bf8220712929ba8d0204645d2174869acf915562d0969 LICENSE diff --git a/package/lapack/lapack.mk b/package/lapack/lapack.mk new file mode 100644 index 00000000..3c1ab1fc --- /dev/null +++ b/package/lapack/lapack.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# lapack +# +################################################################################ + +LAPACK_VERSION = 3.10.1 +LAPACK_LICENSE = BSD-3-Clause +LAPACK_LICENSE_FILES = LICENSE +LAPACK_SITE = $(call github,Reference-LAPACK,lapack,v$(LAPACK_VERSION)) +LAPACK_CPE_ID_VALID = YES +LAPACK_INSTALL_STAGING = YES +LAPACK_SUPPORTS_IN_SOURCE_BUILD = NO +LAPACK_CONF_OPTS = -DLAPACKE=ON -DCBLAS=ON + +ifeq ($(BR2_PACKAGE_LAPACK_COMPLEX),y) +LAPACK_CONF_OPTS += \ + -DBUILD_COMPLEX=ON \ + -DBUILD_COMPLEX16=ON \ + -DLAPACKE_BUILD_COMPLEX=ON \ + -DLAPACKE_BUILD_COMPLEX16=ON +else +LAPACK_CONF_OPTS += \ + -DBUILD_COMPLEX=OFF \ + -DBUILD_COMPLEX16=OFF \ + -DLAPACKE_BUILD_COMPLEX=OFF \ + -DLAPACKE_BUILD_COMPLEX16=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/latencytop/0001-makefile.patch b/package/latencytop/0001-makefile.patch new file mode 100644 index 00000000..fa8c51cf --- /dev/null +++ b/package/latencytop/0001-makefile.patch @@ -0,0 +1,28 @@ +Usee $(CC) to enable cross compiling and link to the right ncurses library. + +Signed-off-by: Qais Yousef + +--- latencytop-0.5/Makefile.old 2012-04-18 11:59:39.748084334 +0100 ++++ latencytop-0.5/Makefile 2012-04-18 12:00:08.659112340 +0100 +@@ -4,7 +4,7 @@ + DESTDIR = + SBINDIR = /usr/sbin + XCFLAGS = -W -g `pkg-config --cflags glib-2.0` -D_FORTIFY_SOURCE=2 -Wno-sign-compare +-LDF = -Wl,--as-needed `pkg-config --libs glib-2.0` -lncursesw ++LDF = -Wl,--as-needed `pkg-config --libs glib-2.0` -lncurses + + OBJS= latencytop.o text_display.o translate.o fsync.o + +@@ -26,10 +26,10 @@ + + # We write explicity this "implicit rule" + %.o : %.c +- gcc -c $(CFLAGS) $(XCFLAGS) $< -o $@ ++ $(CC) -c $(CFLAGS) $(XCFLAGS) $< -o $@ + + latencytop: $(OBJS) latencytop.h Makefile +- gcc $(CFLAGS) $(OBJS) $(LDF) -o latencytop ++ $(CC) $(CFLAGS) $(OBJS) $(LDF) -o latencytop + + clean: + rm -f *~ latencytop DEADJOE *.o diff --git a/package/latencytop/Config.in b/package/latencytop/Config.in new file mode 100644 index 00000000..b54ef052 --- /dev/null +++ b/package/latencytop/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_LATENCYTOP + bool "latencytop" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_LIBGLIB2 + help + There are many types and causes of latency. LatencyTOP + focuses on the type of latency that causes skips in audio, + stutters in your desktop experience or that overloads your + server (while you have plenty of CPU power left). + + LatencyTOP focuses on the cases where the applications want + to run and execute useful code, but there's some resource + that's not currently available (and the kernel then blocks + the process). This is done both on a system level and on a + per process level, so that you can see what's happening to + the system, and which process is suffering and/or causing + the delays. + + http://www.latencytop.org + +comment "latencytop needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/latencytop/latencytop.hash b/package/latencytop/latencytop.hash new file mode 100644 index 00000000..74b8a03a --- /dev/null +++ b/package/latencytop/latencytop.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 9e7f72fbea7bd918e71212a1eabaad8488d2c602205d2e3c95d62cd57e9203ef latencytop-0.5.tar.gz +sha256 34d1db30ab21eaedb2c191b2787632a960090a0c63da9f5b481d84b23b98c438 latencytop.c diff --git a/package/latencytop/latencytop.mk b/package/latencytop/latencytop.mk new file mode 100644 index 00000000..56afe860 --- /dev/null +++ b/package/latencytop/latencytop.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# latencytop +# +################################################################################ + +LATENCYTOP_VERSION = 0.5 +LATENCYTOP_SITE = http://www.latencytop.org/download +LATENCYTOP_DEPENDENCIES = libglib2 ncurses +LATENCYTOP_LICENSE = GPL-2.0 +LATENCYTOP_LICENSE_FILES = latencytop.c + +# NOTE: GTK is heavy weight, we intentionally build the text (ncurses) +# version only +define LATENCYTOP_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) HAS_GTK_GUI= +endef + +define LATENCYTOP_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) install -C $(@D) DESTDIR=$(TARGET_DIR) HAS_GTK_GUI= +endef + +$(eval $(generic-package)) diff --git a/package/lbase64/0001-retro-compatible-with-Lua-5.1.patch b/package/lbase64/0001-retro-compatible-with-Lua-5.1.patch new file mode 100644 index 00000000..12acf448 --- /dev/null +++ b/package/lbase64/0001-retro-compatible-with-Lua-5.1.patch @@ -0,0 +1,20 @@ +retro compatible with Lua 5.1 C/API + +Signed-off-by: Francois Perrad + +Index: b/lbase64.c +=================================================================== +--- a/lbase64.c ++++ b/lbase64.c +@@ -111,7 +111,11 @@ + + LUALIB_API int luaopen_base64(lua_State *L) + { ++#if LUA_VERSION_NUM >= 502 + luaL_newlib(L,R); ++#else ++ luaL_register(L,MYNAME,R); ++#endif + lua_pushliteral(L,"version"); /** version */ + lua_pushliteral(L,MYVERSION); + lua_settable(L,-3); diff --git a/package/lbase64/Config.in b/package/lbase64/Config.in new file mode 100644 index 00000000..c836ffb5 --- /dev/null +++ b/package/lbase64/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LBASE64 + bool "lbase64" + help + A base64 library for Lua + + http://webserver2.tecgraf.puc-rio.br/~lhf/ftp/lua/#lbase64 diff --git a/package/lbase64/lbase64.hash b/package/lbase64/lbase64.hash new file mode 100644 index 00000000..34ef2132 --- /dev/null +++ b/package/lbase64/lbase64.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b83dbc87330a322e5222cd891a6e258b533f5b6c46e8f3c18fc0265e4c991aaa lbase64.tar.gz +sha256 a2b4f2d25b56c40801ce4f403541cbc301313048acfaa59c9509024bec57b662 README diff --git a/package/lbase64/lbase64.mk b/package/lbase64/lbase64.mk new file mode 100644 index 00000000..0225fc67 --- /dev/null +++ b/package/lbase64/lbase64.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# lbase64 +# +################################################################################ + +LBASE64_VERSION = 20120820 +LBASE64_SITE = http://webserver2.tecgraf.puc-rio.br/~lhf/ftp/lua/5.3 +LBASE64_SOURCE = lbase64.tar.gz +LBASE64_LICENSE = Public domain +LBASE64_LICENSE_FILES = README +LBASE64_DEPENDENCIES = luainterpreter + +define LBASE64_BUILD_CMDS + $(MAKE1) $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) -fPIC" -C $(@D) so +endef + +define LBASE64_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/base64.so \ + $(TARGET_DIR)/usr/lib/lua/$(LUAINTERPRETER_ABIVER)/base64.so +endef + +$(eval $(generic-package)) diff --git a/package/lbreakout2/Config.in b/package/lbreakout2/Config.in new file mode 100644 index 00000000..eeb8a069 --- /dev/null +++ b/package/lbreakout2/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_LBREAKOUT2 + bool "LBreakout2" + select BR2_PACKAGE_SDL + select BR2_PACKAGE_LIBPNG + help + LBreakout2 is the successor to LBreakout, a breakout-style + arcade game in the manner of Arkanoid. Requires SDL, libpng, + and optionnally SDL_mixer/SDL_net. + A display with minimum 640x480 resolution, a keyboard and a + mouse are recommanded. + + http://lgames.sourceforge.net/index.php?project=LBreakout2 + +if BR2_PACKAGE_LBREAKOUT2 + +config BR2_PACKAGE_LBREAKOUT2_AUDIO + bool "audio support" + default y + select BR2_PACKAGE_SDL_MIXER + help + Activates audio support in LBreakout2. Will add SDL_mixer. + +config BR2_PACKAGE_LBREAKOUT2_NET + bool "network support" + default y + select BR2_PACKAGE_SDL_NET + help + Activates network support LBreakout2. Will add SDL_net. + +endif diff --git a/package/lbreakout2/lbreakout2.hash b/package/lbreakout2/lbreakout2.hash new file mode 100644 index 00000000..440ffed3 --- /dev/null +++ b/package/lbreakout2/lbreakout2.hash @@ -0,0 +1,6 @@ +# From https://sourceforge.net/projects/lgames/files/lbreakout2/2.6/ +md5 1a9238b83f9f13f09b7a4d53e00b4e84 lbreakout2-2.6.5.tar.gz +sha1 d92326499165fd368be04378d633e13d42b4d2d7 lbreakout2-2.6.5.tar.gz +# Locally computed: +sha256 9104d6175553da3442dc6a5fc407a669e2f5aff3eedc5d30409eb003b7a78d6f lbreakout2-2.6.5.tar.gz +sha256 67f82e045cf7acfef853ea0f426575a8359161a0a325e19f02b529a87c4b6c34 COPYING diff --git a/package/lbreakout2/lbreakout2.mk b/package/lbreakout2/lbreakout2.mk new file mode 100644 index 00000000..49db8d54 --- /dev/null +++ b/package/lbreakout2/lbreakout2.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# lbreakout2 +# +################################################################################ + +LBREAKOUT2_VERSION_MAJOR = 2.6 +LBREAKOUT2_VERSION = $(LBREAKOUT2_VERSION_MAJOR).5 +LBREAKOUT2_SITE = https://downloads.sourceforge.net/lgames/lbreakout2/$(LBREAKOUT2_VERSION_MAJOR) +LBREAKOUT2_LICENSE = GPL-2.0+ +LBREAKOUT2_LICENSE_FILES = COPYING + +LBREAKOUT2_DEPENDENCIES = sdl libpng $(TARGET_NLS_DEPENDENCIES) + +LBREAKOUT2_CONF_ENV = \ + SDL_CONFIG="$(STAGING_DIR)/usr/bin/sdl-config" \ + LIBS=$(TARGET_NLS_LIBS) + +ifeq ($(BR2_PACKAGE_LBREAKOUT2_AUDIO),y) +LBREAKOUT2_DEPENDENCIES += sdl_mixer +LBREAKOUT2_CONF_OPTS += --enable-audio=yes +else +LBREAKOUT2_CONF_OPTS += --disable-audio +endif + +ifeq ($(BR2_PACKAGE_LBREAKOUT2_NET),y) +LBREAKOUT2_DEPENDENCIES += sdl_net +LBREAKOUT2_CONF_OPTS += --enable-network=yes +else +LBREAKOUT2_CONF_OPTS += --disable-network +endif + +$(eval $(autotools-package)) diff --git a/package/lcdapi/Config.in b/package/lcdapi/Config.in new file mode 100644 index 00000000..154689b2 --- /dev/null +++ b/package/lcdapi/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LCDAPI + bool "lcdapi" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + C++ client API for lcdproc, containing a set of widget + classes. + + https://github.com/spdawson/lcdapi + +comment "lcdapi needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/lcdapi/lcdapi.hash b/package/lcdapi/lcdapi.hash new file mode 100644 index 00000000..fc86b66d --- /dev/null +++ b/package/lcdapi/lcdapi.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 6afdd4238af1fa7ea5f10378601381fc3f535a10504dc7d4ea8eab56e0dda091 lcdapi-0.11.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/lcdapi/lcdapi.mk b/package/lcdapi/lcdapi.mk new file mode 100644 index 00000000..f6b14cd2 --- /dev/null +++ b/package/lcdapi/lcdapi.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# lcdapi +# +################################################################################ + +LCDAPI_VERSION = 0.11 +LCDAPI_SITE = $(call github,spdawson,lcdapi,v$(LCDAPI_VERSION)) +LCDAPI_LICENSE = LGPL-2.1+ +LCDAPI_LICENSE_FILES = COPYING +LCDAPI_AUTORECONF = YES +LCDAPI_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/lcdproc/0001-LCDd.conf.patch b/package/lcdproc/0001-LCDd.conf.patch new file mode 100644 index 00000000..283ac886 --- /dev/null +++ b/package/lcdproc/0001-LCDd.conf.patch @@ -0,0 +1,18 @@ +Fix the default LCDd configuration file, so that the DriverPath +is set to the correct lcdproc library install path, rather than +the dummy/default path. + +Signed-off-by: Simon Dawson +--- + +--- lcdproc-0.5.3/LCDd.conf.orig 2009-06-20 14:48:34.000000000 +0100 ++++ lcdproc-0.5.3/LCDd.conf 2010-05-11 10:02:21.000000000 +0100 +@@ -34,7 +34,7 @@ + # the driver modules and will thus not be able to + # function properly. + # NOTE: Always place a slash as last character ! +-DriverPath=server/drivers/ ++DriverPath=/usr/lib/lcdproc/ + + # Tells the server to load the given drivers. Multiple lines can be given. + # The name of the driver is case sensitive and determines the section diff --git a/package/lcdproc/0002-Add-missing-ioctl-header.patch b/package/lcdproc/0002-Add-missing-ioctl-header.patch new file mode 100644 index 00000000..8c212359 --- /dev/null +++ b/package/lcdproc/0002-Add-missing-ioctl-header.patch @@ -0,0 +1,50 @@ +From 6267665454501512ac054202b38e4e6a72fa284b Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Fri, 8 Sep 2017 14:19:11 +0300 +Subject: [PATCH] Add missing ioctl header + +The spidev.h header uses macros from linux/ioctl.h. Add this header +explicitly since some libc, like musl, do not include it implicitly. +This fixes the following build failure: + +In file included from .../sysroot/usr/include/sys/ioctl.h:7:0, + from hd44780-spi.c:31: +hd44780-spi.c: In function ‘spi_transfer’: +hd44780-spi.c:89:24: error: ‘_IOC_SIZEBITS’ undeclared (first use in this function) + status = ioctl(p->fd, SPI_IOC_MESSAGE(1), &xfer); + ^ +Signed-off-by: Baruch Siach +--- +Upstream status: https://github.com/lcdproc/lcdproc/pull/90 + + server/drivers/hd44780-pifacecad.c | 1 + + server/drivers/hd44780-spi.c | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/server/drivers/hd44780-pifacecad.c b/server/drivers/hd44780-pifacecad.c +index a73b9f9b1f82..55139124d852 100644 +--- a/server/drivers/hd44780-pifacecad.c ++++ b/server/drivers/hd44780-pifacecad.c +@@ -54,6 +54,7 @@ + #include + #include + #include ++#include + #include + #include + +diff --git a/server/drivers/hd44780-spi.c b/server/drivers/hd44780-spi.c +index 791156f87a26..74c85fb014aa 100644 +--- a/server/drivers/hd44780-spi.c ++++ b/server/drivers/hd44780-spi.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + #include + #include + +-- +2.14.1 + diff --git a/package/lcdproc/0003-Fixcompilation-with-GCC-10-x.patch b/package/lcdproc/0003-Fixcompilation-with-GCC-10-x.patch new file mode 100644 index 00000000..c8a3dc20 --- /dev/null +++ b/package/lcdproc/0003-Fixcompilation-with-GCC-10-x.patch @@ -0,0 +1,46 @@ +From 084126b03f29b33ab3e657c66e8c6a439f27f8e1 Mon Sep 17 00:00:00 2001 +From: Harald Geyer +Date: Mon, 10 Feb 2020 13:15:10 +0100 +Subject: [PATCH] Fix compilation with GCC >= 10.x + +Starting with GCC >= 10.x, -fno-common is used as default +instead of -fcommon. This patch fixes the compilation. + +Closes: #148 + +Suggested-by: Conrad Kostecki +Signed-off-by: Harald Geyer + +[Retrieved from: +https://github.com/lcdproc/lcdproc/commit/084126b03f29b33ab3e657c66e8c6a439f27f8e1] +Signed-off-by: Fabrice Fontaine +--- + clients/lcdproc/iface.c | 1 + + clients/lcdproc/iface.h | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/clients/lcdproc/iface.c b/clients/lcdproc/iface.c +index 40e50cb7..1ac355bd 100644 +--- a/clients/lcdproc/iface.c ++++ b/clients/lcdproc/iface.c +@@ -32,6 +32,7 @@ + #define UNSET_INT -1 + #define UNSET_STR "\01" + ++IfaceInfo iface[MAX_INTERFACES]; + + static int iface_count = 0; /* number of interfaces */ + static char unit_label[10] = "B"; /* default unit label is Bytes */ +diff --git a/clients/lcdproc/iface.h b/clients/lcdproc/iface.h +index cc6dbaaf..c1bd6b5b 100644 +--- a/clients/lcdproc/iface.h ++++ b/clients/lcdproc/iface.h +@@ -18,7 +18,7 @@ + /** max number of interfaces in multi-interface mode */ + #define MAX_INTERFACES 3 + +-IfaceInfo iface[MAX_INTERFACES]; /* interface info */ ++extern IfaceInfo iface[MAX_INTERFACES]; /* interface info */ + + /** Update screen content */ + int iface_screen(int rep, int display, int *flags_ptr); diff --git a/package/lcdproc/Config.in b/package/lcdproc/Config.in new file mode 100644 index 00000000..e5ff432d --- /dev/null +++ b/package/lcdproc/Config.in @@ -0,0 +1,29 @@ +comment "lcdproc needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_LCDPROC + bool "lcdproc" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_ZLIB + help + LCD display driver daemon and clients + + http://lcdproc.org/ + +if BR2_PACKAGE_LCDPROC + +config BR2_PACKAGE_LCDPROC_DRIVERS + string "List of drivers to build" + default "all" + help + Specify a comma-separated list of lcdproc drivers to be built + +config BR2_PACKAGE_LCDPROC_MENUS + bool "Menu support" + help + Enable support for lcdproc menus + +endif diff --git a/package/lcdproc/lcdproc.hash b/package/lcdproc/lcdproc.hash new file mode 100644 index 00000000..a90d43c1 --- /dev/null +++ b/package/lcdproc/lcdproc.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 843007d377adc856529ed0c7c42c9a7563043f06b1b73add0372bba3a3029804 lcdproc-0.5.7.tar.gz +sha256 d48a915496c96ff775b377d2222de3150ae5172bfb84a6ec9f9ceab962f97b83 lcdproc-0.5.9.tar.gz +sha256 1b2a567f289f66a143c56353e7b3d4fa5862514a5e3c5cfdf8b02ee5e5aaa953 COPYING diff --git a/package/lcdproc/lcdproc.mk b/package/lcdproc/lcdproc.mk new file mode 100644 index 00000000..96e59da4 --- /dev/null +++ b/package/lcdproc/lcdproc.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# lcdproc +# +################################################################################ + +LCDPROC_VERSION = 0.5.9 +LCDPROC_SITE = https://github.com/lcdproc/lcdproc/releases/download/v$(LCDPROC_VERSION) +LCDPROC_LICENSE = GPL-2.0+ +LCDPROC_LICENSE_FILES = COPYING +LCDPROC_MAKE = $(MAKE1) + +LCDPROC_CONF_OPTS = --enable-drivers=$(BR2_PACKAGE_LCDPROC_DRIVERS) + +ifeq ($(BR2_PACKAGE_LCDPROC_MENUS),y) +LCDPROC_CONF_OPTS += --enable-lcdproc-menus +endif + +LCDPROC_DEPENDENCIES = freetype ncurses zlib + +LCDPROC_CONF_ENV += \ + ac_cv_mtab_file=/etc/mtab \ + ac_cv_path_FT2_CONFIG=$(STAGING_DIR)/usr/bin/freetype-config + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +LCDPROC_DEPENDENCIES += libpng +LCDPROC_CONF_ENV += ac_cv_path__png_config=$(STAGING_DIR)/usr/bin/libpng-config +LCDPROC_CONF_OPTS += --enable-libpng +else +LCDPROC_CONF_OPTS += --disable-libpng +endif + +$(eval $(autotools-package)) diff --git a/package/lcms2/Config.in b/package/lcms2/Config.in new file mode 100644 index 00000000..19e1b9c1 --- /dev/null +++ b/package/lcms2/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LCMS2 + bool "lcms2" + help + Little Color Management Software (CMS) intends to be an OPEN + SOURCE small-footprint color management engine, with special + focus on accuracy and performance. + It uses the International Color Consortium standard (ICC), + which is the modern standard when regarding to color + management. + + http://www.littlecms.com/ diff --git a/package/lcms2/lcms2.hash b/package/lcms2/lcms2.hash new file mode 100644 index 00000000..362412e3 --- /dev/null +++ b/package/lcms2/lcms2.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/lcms/files/lcms/2.16 +sha1 751d32ba11809e3591c118be9aae8ac2dbd41cb7 lcms2-2.16.tar.gz +# Locally computed: +sha256 d873d34ad8b9b4cea010631f1a6228d2087475e4dc5e763eb81acc23d9d45a51 lcms2-2.16.tar.gz +sha256 6dbd60437f8ef91d8de1f08ad75882547fd4931bfcc3566a0735f28db1484d31 LICENSE diff --git a/package/lcms2/lcms2.mk b/package/lcms2/lcms2.mk new file mode 100644 index 00000000..92aeff88 --- /dev/null +++ b/package/lcms2/lcms2.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# lcms2 +# +################################################################################ + +LCMS2_VERSION = 2.16 +LCMS2_SITE = http://downloads.sourceforge.net/project/lcms/lcms/$(LCMS2_VERSION) +LCMS2_LICENSE = MIT +LCMS2_LICENSE_FILES = LICENSE +LCMS2_CPE_ID_VENDOR = littlecms +LCMS2_CPE_ID_PRODUCT = little_cms +LCMS2_INSTALL_STAGING = YES +# tiff is only used by tificc sample +LCMS2_CONF_OPTS = --without-tiff + +ifeq ($(BR2_PACKAGE_JPEG),y) +LCMS2_CONF_OPTS += --with-jpeg +LCMS2_DEPENDENCIES += jpeg +else +LCMS2_CONF_OPTS += --without-jpeg +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LCMS2_CONF_OPTS += --with-zlib +LCMS2_DEPENDENCIES += zlib +else +LCMS2_CONF_OPTS += --without-zlib +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/leafnode2/0001-cross_makefile.patch b/package/leafnode2/0001-cross_makefile.patch new file mode 100644 index 00000000..32116446 --- /dev/null +++ b/package/leafnode2/0001-cross_makefile.patch @@ -0,0 +1,39 @@ +Fix cross-compilation issues + + - During target package compilation the host version of b_sortnl is + needed. + + - Do not call a 'amiroot' program built for the target when + cross-compiling. We're anyway not root, so simply remove the + chown/chgrp dance. + +Signed-off-by: Bernd Kuhls +Signed-off-by: Thomas Petazzoni + +Index: b/Makefile.am +=================================================================== +--- a/Makefile.am ++++ b/Makefile.am +@@ -311,7 +311,7 @@ + + configparam_data.c: $(srcdir)/config.table b_sortnl$(EXEEXT) genconfigparam_data.awk + rm -f config.table.sorted +- ./b_sortnl$(EXEEXT) <$(srcdir)/config.table >config.table.sorted ++ ./b_sortnl_host$(EXEEXT) <$(srcdir)/config.table >config.table.sorted + $(AWK) -f $(srcdir)/genconfigparam_data.awk $@ \ + || { rm -f $@ ; false ; } + +@@ -326,13 +326,7 @@ + install-data-hook: + $(INSTALL) -d -m 02770 $(DESTDIR)$(SPOOLDIR) + $(INSTALL) -d -m 02770 $(DESTDIR)$(SPOOLDIR)/leaf.node +- -./amiroot && chown $(RUNAS_USER) $(DESTDIR)$(SPOOLDIR) +- -./amiroot && chown $(RUNAS_USER) $(DESTDIR)$(SPOOLDIR)/leaf.node +- -./amiroot && chgrp $(RUNAS_GROUP) $(DESTDIR)$(SPOOLDIR) +- -./amiroot && chgrp $(RUNAS_GROUP) $(DESTDIR)$(SPOOLDIR)/leaf.node + rm -f $(DESTDIR)$(sbindir)/leafnode-version # now in $(bindir) +- ./amiroot && p=$(DESTDIR)$(bindir)/newsq && chown 0 $$p \ +- && chgrp $(RUNAS_GROUP) $$p && chmod 2111 $$p ; true + @echo + @echo "### If upgrading from leafnode before 1.6," + @echo "### run: make update" diff --git a/package/leafnode2/Config.in b/package/leafnode2/Config.in new file mode 100644 index 00000000..df9b2469 --- /dev/null +++ b/package/leafnode2/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LEAFNODE2 + bool "leafnode2" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_PCRE + help + Leafnode-2 is a store-and-forward NNTP (or Usenet) proxy + server designed for small sites with just a few active + newsgroups. + + https://gitlab.com/leafnode-2/leafnode-2 diff --git a/package/leafnode2/leafnode2.hash b/package/leafnode2/leafnode2.hash new file mode 100644 index 00000000..9c86173a --- /dev/null +++ b/package/leafnode2/leafnode2.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 42f2185f29a74f683a962e9cf6e38bc5f8a342d0dde8b6a03457a165365e3445 leafnode2-9543ffaf82406f943d449d522d88baa554515e0f.tar.gz +sha256 59d37f745dc5a2d63a51dff344f4ad89f72e76f8c7b7d877f20880d838b1bec9 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPL diff --git a/package/leafnode2/leafnode2.mk b/package/leafnode2/leafnode2.mk new file mode 100644 index 00000000..566aaf3d --- /dev/null +++ b/package/leafnode2/leafnode2.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# leafnode2 +# +################################################################################ + +LEAFNODE2_VERSION = 9543ffaf82406f943d449d522d88baa554515e0f +LEAFNODE2_SITE = $(call gitlab,leafnode-2,leafnode-2,$(LEAFNODE2_VERSION)) +LEAFNODE2_LICENSE = LGPL-2.1 +LEAFNODE2_LICENSE_FILES = COPYING COPYING.LGPL +LEAFNODE2_DEPENDENCIES = host-pcre pcre +LEAFNODE2_AUTORECONF = YES + +LEAFNODE2_CONF_ENV = \ + PCRECONFIG="$(STAGING_DIR)/usr/bin/pcre-config" + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +LEAFNODE2_DEPENDENCIES += libxcrypt +endif + +# --enable-runas-user use 'news' as default but the configure stop +# if news doesn't exist on the build host. +# Use 'root' while cross-compiling +LEAFNODE2_CONF_OPTS = \ + --sysconfdir=/etc/leafnode2 \ + --enable-spooldir=/var/spool/news \ + --enable-runas-user=root + +# Leafnode2 needs the host version of b_sortnl during +# compilation. Instead of creating a separate host package and +# installing b_sortnl to $(HOST_DIR) this binary is compiled +# on-the-fly, host-pcre is needed for this +define LEAFNODE2_BUILD_SORTNL_TOOL + cd $(@D); \ + $(HOSTCC) $(HOST_CFLAGS) -o b_sortnl_host \ + arc4random.c mergesort.c b_sortnl.c critmem_malloc.c \ + critmem_realloc.c -DHAVE_CONFIG_H -I$(HOST_DIR)/include \ + -L $(HOST_DIR)/lib -Wl,-rpath,$(HOST_DIR)/lib -lpcre +endef + +LEAFNODE2_PRE_BUILD_HOOKS += LEAFNODE2_BUILD_SORTNL_TOOL + +define LEAFNODE2_USERS + news -1 news -1 * - - - Leafnode2 daemon +endef + +$(eval $(autotools-package)) diff --git a/package/leafpad/Config.in b/package/leafpad/Config.in new file mode 100644 index 00000000..a4408547 --- /dev/null +++ b/package/leafpad/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LEAFPAD + bool "leafpad" + depends on BR2_PACKAGE_LIBGTK2 + help + GTK+ based simple text editor + + http://savannah.nongnu.org/download/leafpad diff --git a/package/leafpad/leafpad.hash b/package/leafpad/leafpad.hash new file mode 100644 index 00000000..4f6e68f0 --- /dev/null +++ b/package/leafpad/leafpad.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 07d3f712f4dbd0a33251fd1dee14e21afdc9f92090fc768c11ab0ac556adbe97 leafpad-0.8.19.tar.gz +# Locally computed +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/leafpad/leafpad.mk b/package/leafpad/leafpad.mk new file mode 100644 index 00000000..608fa37b --- /dev/null +++ b/package/leafpad/leafpad.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# leafpad +# +################################################################################ + +LEAFPAD_VERSION = 0.8.19 +LEAFPAD_SITE = http://savannah.nongnu.org/download/leafpad +LEAFPAD_DEPENDENCIES = libgtk2 host-intltool +LEAFPAD_LICENSE = GPL-2.0+ +LEAFPAD_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/ledmon/0001-src-ledctl-ledctl.c-replace-on_exit-by-atexit.patch b/package/ledmon/0001-src-ledctl-ledctl.c-replace-on_exit-by-atexit.patch new file mode 100644 index 00000000..4e1536df --- /dev/null +++ b/package/ledmon/0001-src-ledctl-ledctl.c-replace-on_exit-by-atexit.patch @@ -0,0 +1,40 @@ +From ff6f5cd263da4683b3ea07d4ef8afdbf95e2a401 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 9 May 2024 10:04:38 +0200 +Subject: [PATCH] ledctl: replace on_exit() by atexit() + +Replace on_exit() by atexit() to avoid the following musl build failure +raised since bcb9042 ("ledctl: Remove enum ledctl_status_code_t") +which partially reverted f08dd2c ("Fix build with Musl libc (#139)") + +/home/buildroot/autobuild/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-musleabi/12.3.0/../../../../arm-buildroot-linux-musleabi/bin/ld: ledctl-ledctl.o: in function `main': +ledctl.c:(.text.startup+0x140): undefined reference to `on_exit' + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/intel/ledmon/commit/ff6f5cd263da4683b3ea07d4ef8afdbf95e2a401 +--- + src/ledctl/ledctl.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/ledctl/ledctl.c b/src/ledctl/ledctl.c +index 231253dc..95db2d86 100644 +--- a/src/ledctl/ledctl.c ++++ b/src/ledctl/ledctl.c +@@ -230,7 +230,7 @@ static void ibpi_state_fini(struct ibpi_state *p) + * + * @return The function does not return a value. + */ +-static void _ledctl_fini(int _i, void *_arg) ++static void _ledctl_fini(void) + { + led_free(ctx); + list_erase(&ibpi_list); +@@ -1101,7 +1101,7 @@ int main(int argc, char *argv[]) + if (status != LED_STATUS_SUCCESS) + return status; + +- if (on_exit(_ledctl_fini, progname)) ++ if (atexit(_ledctl_fini)) + exit(LED_STATUS_ONEXIT_ERROR); + + status = _read_shared_conf(); diff --git a/package/ledmon/0002-configure.ac-use-AX_CHECK_LINK_FLAG-to-test-gcc-flag.patch b/package/ledmon/0002-configure.ac-use-AX_CHECK_LINK_FLAG-to-test-gcc-flag.patch new file mode 100644 index 00000000..730eb295 --- /dev/null +++ b/package/ledmon/0002-configure.ac-use-AX_CHECK_LINK_FLAG-to-test-gcc-flag.patch @@ -0,0 +1,49 @@ +From 0d391dbcb808755a65fcc9a8a0ceaf3aa53d153f Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 19 Aug 2024 00:08:40 +0200 +Subject: [PATCH] configure.ac: use AX_CHECK_LINK_FLAG() to test gcc flags + +ledmon's configure.ac defines an AX_AM_CFLAGS_ADD() macro that allows +to test if a flag is supported by gcc, and if so add it to +AM_CFLAGS. In order to test if the flag works, it uses +AX_CHECK_COMPILE_FLAG(), which only does a *compile* test, but not +a *link* test. However, some flags such as -fstack-protector might +appear to work at compile time, but not link time. Therefore +-fstack-protector is considered functional: + +checking whether C compiler accepts -fstack-protector-strong... yes + +but the build later fails: + +/home/buildroot/autobuild/instance-0/output-1/host/lib/gcc/m68k-buildroot-linux-uclibc/13.3.0/../../../../m68k-buildroot-linux-uclibc/bin/ld: cannot find -lssp_nonshared: No such file or directory +/home/buildroot/autobuild/instance-0/output-1/host/lib/gcc/m68k-buildroot-linux-uclibc/13.3.0/../../../../m68k-buildroot-linux-uclibc/bin/ld: cannot find -lssp: No such file or directory +collect2: error: ld returned 1 exit status + +In order to fix this, we test all flags with AX_CHECK_LINK_FLAG() +which does a full *link* of the test program. This allows to make sure +that the flag is fully functional. In our test case, +-fstack-protector-strong will be determined as being non-functional, +and therefore won't be used. + +Upstream: https://github.com/intel/ledmon/pull/244 +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index d3fada5..747b168 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -52,7 +52,7 @@ AC_CONFIG_HEADERS([config_ac.h]) + AM_CFLAGS='-Wall -I../config' + AM_CPPFLAGS='-D_DEBUG -D_GNU_SOURCE -D_DEFAULT_SOURCE -DDMALLOC_DISABLE -DBUILD_LABEL=\""$(BUILD_LABEL)"\"' + +-AC_DEFUN([AX_AM_CFLAGS_ADD],[AX_CHECK_COMPILE_FLAG($1, AM_CFLAGS="$AM_CFLAGS $1")]) ++AC_DEFUN([AX_AM_CFLAGS_ADD],[AX_CHECK_LINK_FLAG($1, AM_CFLAGS="$AM_CFLAGS $1")]) + AX_AM_CFLAGS_ADD([-Wformat -Wformat-security]) + AX_AM_CFLAGS_ADD([-Wformat-overflow=2]) + AX_AM_CFLAGS_ADD([-Wno-strict-overflow]) +-- +2.46.0 + diff --git a/package/ledmon/Config.in b/package/ledmon/Config.in new file mode 100644 index 00000000..d08be715 --- /dev/null +++ b/package/ledmon/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LEDMON + bool "ledmon" + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_TOOLCHAIN_HAS_THREADS # sg3_utils + select BR2_PACKAGE_PCIUTILS + select BR2_PACKAGE_SG3_UTILS + help + Enclosure LED Utilities. The ledmon application is + a daemon process used to monitor a state of software + RAID devices (md only) or a state of block devices. + + https://github.com/intel/ledmon + +comment "ledmon needs udev and a toolchain w/ threads" + depends on !BR2_PACKAGE_HAS_UDEV || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/ledmon/ledmon.hash b/package/ledmon/ledmon.hash new file mode 100644 index 00000000..e9cfcc63 --- /dev/null +++ b/package/ledmon/ledmon.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2826786cd5e7fe7d32d22e9d209b23124801fec9c3220dcd7fb45706f3818dc5 ledmon-1.0.0.tar.gz +sha256 dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa COPYING diff --git a/package/ledmon/ledmon.mk b/package/ledmon/ledmon.mk new file mode 100644 index 00000000..71150ad1 --- /dev/null +++ b/package/ledmon/ledmon.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# ledmon +# +################################################################################ + +LEDMON_VERSION = 1.0.0 +LEDMON_SITE = $(call github,intel,ledmon,v$(LEDMON_VERSION)) +LEDMON_DEPENDENCIES = host-autoconf-archive host-pkgconf pciutils sg3_utils udev +# The code base also include a COPYING.LIB file with the LGPL-2.1 text, +# and some source files are published under LGPL-2.1, but all of them are +# at some point linked with GPL-2.0 code, making the resulting binaries +# GPL-2.0 licensed +LEDMON_LICENSE = GPL-2.0 +LEDMON_LICENSE_FILES = COPYING +# From git +LEDMON_AUTORECONF = YES +LEDMON_AUTORECONF_OPTS = --include=$(HOST_DIR)/share/autoconf-archive + +$(eval $(autotools-package)) diff --git a/package/lensfun/Config.in b/package/lensfun/Config.in new file mode 100644 index 00000000..7c424f53 --- /dev/null +++ b/package/lensfun/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_LENSFUN + bool "lensfun" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + help + Lensfun itself is only a library for correcting several + artefacts and a database for storing lens profiles. To + actually use Lensfun to process your images you need an + image editing application with Lensfun support. + + https://lensfun.github.io + +if BR2_PACKAGE_LENSFUN + +config BR2_PACKAGE_LENSFUN_TOOLS + bool "lensfun tools" + select BR2_PACKAGE_LIBPNG + help + Build 'lenstool'. + +endif + +comment "lensfun needs a toolchain w/ C++, threads, wchar" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_USE_WCHAR diff --git a/package/lensfun/lensfun.hash b/package/lensfun/lensfun.hash new file mode 100644 index 00000000..5cb4fe37 --- /dev/null +++ b/package/lensfun/lensfun.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 dafb39c08ef24a0e2abd00d05d7341b1bf1f0c38bfcd5a4c69cf5f0ecb6db112 lensfun-0.3.4.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 docs/gpl-3.0.txt +sha256 a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c docs/lgpl-3.0.txt diff --git a/package/lensfun/lensfun.mk b/package/lensfun/lensfun.mk new file mode 100644 index 00000000..59f008ce --- /dev/null +++ b/package/lensfun/lensfun.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# lensfun +# +################################################################################ + +LENSFUN_VERSION = 0.3.4 +LENSFUN_SITE = $(call github,lensfun,lensfun,v$(LENSFUN_VERSION)) +LENSFUN_LICENSE = LGPL-3.0+ (libraries), GPL-3.0+ (programs) +LENSFUN_LICENSE_FILES = docs/gpl-3.0.txt docs/lgpl-3.0.txt +LENSFUN_INSTALL_STAGING = YES +LENSFUN_DEPENDENCIES = libglib2 + +# lensfun doesn't support in source build, it fail to build lensfun tools. +LENSFUN_SUPPORTS_IN_SOURCE_BUILD = NO + +ifeq ($(BR2_X86_CPU_HAS_SSE),y) +LENSFUN_CONF_OPTS += -DBUILD_FOR_SSE=ON +else +LENSFUN_CONF_OPTS += -DBUILD_FOR_SSE=OFF +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE2),y) +LENSFUN_CONF_OPTS += -DBUILD_FOR_SSE2=ON +else +LENSFUN_CONF_OPTS += -DBUILD_FOR_SSE2=OFF +endif + +ifeq ($(BR2_PACKAGE_LENSFUN_TOOLS),y) +LENSFUN_DEPENDENCIES += libpng +LENSFUN_CONF_OPTS += -DBUILD_LENSTOOL=ON +# broken +else +LENSFUN_CONF_OPTS += -DBUILD_LENSTOOL=OFF +endif + +ifeq ($(BR2_STATIC_LIBS),y) +LENSFUN_CONF_OPTS += -DBUILD_STATIC=ON +else +LENSFUN_CONF_OPTS += -DBUILD_STATIC=OFF +endif + +# Don't install helper scripts (which require python3 and gksudo). +# Don't run setup.py on the host. +LENSFUN_CONF_OPTS += -DINSTALL_HELPER_SCRIPTS=OFF -DPYTHON=OFF + +$(eval $(cmake-package)) diff --git a/package/leptonica/Config.in b/package/leptonica/Config.in new file mode 100644 index 00000000..ec4920c2 --- /dev/null +++ b/package/leptonica/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LEPTONICA + bool "leptonica" + help + Leptonica is an image processing and image analysis library. + + http://www.leptonica.org/ diff --git a/package/leptonica/leptonica.hash b/package/leptonica/leptonica.hash new file mode 100644 index 00000000..3416cfeb --- /dev/null +++ b/package/leptonica/leptonica.hash @@ -0,0 +1,3 @@ +# locally computed hash +sha256 2b3e1254b1cca381e77c819b59ca99774ff43530209b9aeb511e1d46588a64f6 leptonica-1.84.1.tar.gz +sha256 87829abb5bbb00b55a107365da89e9a33f86c4250169e5a1e5588505be7d5806 leptonica-license.txt diff --git a/package/leptonica/leptonica.mk b/package/leptonica/leptonica.mk new file mode 100644 index 00000000..0e902c64 --- /dev/null +++ b/package/leptonica/leptonica.mk @@ -0,0 +1,77 @@ +################################################################################ +# +# leptonica +# +################################################################################ + +LEPTONICA_VERSION = 1.84.1 +LEPTONICA_SITE = https://github.com/DanBloomberg/leptonica/releases/download/$(LEPTONICA_VERSION) +LEPTONICA_LICENSE = BSD-2-Clause +LEPTONICA_LICENSE_FILES = leptonica-license.txt +LEPTONICA_CPE_ID_VENDOR = leptonica +LEPTONICA_INSTALL_STAGING = YES +LEPTONICA_DEPENDENCIES = host-pkgconf + +LEPTONICA_CONF_OPTS += --disable-programs + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_101737),y) +LEPTONICA_CONF_OPTS += CFLAGS="$(TARGET_CFLAGS) -O0" +endif + +ifeq ($(BR2_PACKAGE_GIFLIB),y) +LEPTONICA_DEPENDENCIES += giflib +LEPTONICA_CONF_OPTS += --with-giflib +else +LEPTONICA_CONF_OPTS += --without-giflib +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +LEPTONICA_DEPENDENCIES += jpeg +LEPTONICA_CONF_OPTS += --with-jpeg +else +LEPTONICA_CONF_OPTS += --without-jpeg +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +LEPTONICA_DEPENDENCIES += libpng +LEPTONICA_CONF_OPTS += --with-libpng +else +LEPTONICA_CONF_OPTS += --without-libpng +endif + +ifeq ($(BR2_PACKAGE_OPENJPEG),y) +LEPTONICA_DEPENDENCIES += openjpeg +LEPTONICA_CONF_OPTS += --with-libopenjpeg +else +LEPTONICA_CONF_OPTS += --without-libopenjpeg +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +LEPTONICA_DEPENDENCIES += tiff +LEPTONICA_CONF_OPTS += --with-libtiff +else +LEPTONICA_CONF_OPTS += --without-libtiff +endif + +ifeq ($(BR2_PACKAGE_WEBP),y) +LEPTONICA_DEPENDENCIES += webp +LEPTONICA_CONF_OPTS += --with-libwebp +ifeq ($(BR2_PACKAGE_WEBP_DEMUX)$(BR2_PACKAGE_WEBP_MUX),yy) +LEPTONICA_CONF_OPTS += --with-libwebpmux +else +LEPTONICA_CONF_OPTS += --without-libwebpmux +endif +else +LEPTONICA_CONF_OPTS += \ + --without-libwebp \ + --without-libwebpmux +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LEPTONICA_DEPENDENCIES += zlib +LEPTONICA_CONF_OPTS += --with-zlib +else +LEPTONICA_CONF_OPTS += --without-zlib +endif + +$(eval $(autotools-package)) diff --git a/package/less/Config.in b/package/less/Config.in new file mode 100644 index 00000000..caf688ae --- /dev/null +++ b/package/less/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LESS + bool "less" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_NCURSES + help + Excellent text file viewer. + + http://www.greenwoodsoftware.com/ diff --git a/package/less/less.hash b/package/less/less.hash new file mode 100644 index 00000000..c44e2467 --- /dev/null +++ b/package/less/less.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +# using DSA key F153A7C833235259 +# https://www.greenwoodsoftware.com/less/less-643.sig +sha256 2911b5432c836fa084c8a2e68f6cd6312372c026a58faaa98862731c8b6052e8 less-643.tar.gz +# Locally calculated +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 COPYING diff --git a/package/less/less.mk b/package/less/less.mk new file mode 100644 index 00000000..7431d80c --- /dev/null +++ b/package/less/less.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# less +# +################################################################################ + +LESS_VERSION = 643 +LESS_SITE = http://www.greenwoodsoftware.com/less +LESS_LICENSE = GPL-3.0+ +LESS_LICENSE_FILES = COPYING +LESS_CPE_ID_VENDOR = gnu +LESS_DEPENDENCIES = ncurses + +$(eval $(autotools-package)) diff --git a/package/lesstif/Config.in b/package/lesstif/Config.in new file mode 100644 index 00000000..654ee6f1 --- /dev/null +++ b/package/lesstif/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LESSTIF + bool "lesstif" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_FREETYPE + help + lesstif is the Hungry Programmers' version of OSF/Motif + + http://lesstif.sourceforge.net/ diff --git a/package/lesstif/lesstif.hash b/package/lesstif/lesstif.hash new file mode 100644 index 00000000..31a394db --- /dev/null +++ b/package/lesstif/lesstif.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 eb4aa38858c29a4a3bcf605cfe7d91ca41f4522d78d770f69721e6e3a4ecf7e3 lesstif-0.95.2.tar.bz2 +sha256 94b03f1a60a7fd5007149530626a895a6ef5a8b9342abfd56860c5f3956f5d23 COPYING.LIB diff --git a/package/lesstif/lesstif.mk b/package/lesstif/lesstif.mk new file mode 100644 index 00000000..378c594e --- /dev/null +++ b/package/lesstif/lesstif.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# lesstif +# +################################################################################ + +LESSTIF_VERSION = 0.95.2 +LESSTIF_SOURCE = lesstif-$(LESSTIF_VERSION).tar.bz2 +LESSTIF_SITE = http://downloads.sourceforge.net/project/lesstif/lesstif/$(LESSTIF_VERSION) +LESSTIF_INSTALL_STAGING = YES +LESSTIF_DEPENDENCIES = \ + xlib_libXt \ + xlib_libXext \ + freetype +LESSTIF_LICENSE = LGPL-2.0+ +LESSTIF_LICENSE_FILES = COPYING.LIB +LESSTIF_CONF_OPTS = \ + --with-gnu-ld \ + --with-freetype-config=$(STAGING_DIR)/usr/bin/freetype-config \ + --enable-production=yes \ + --enable-build-tests=no \ + --no-recursion + +# Reduces the buggy makefile to the smallest possible (and working) thing +define LESSTIF_NOMAN2HTML + echo "all:" > $(@D)/doc/Makefile + echo "" >> $(@D)/doc/Makefile + echo "install:" >> $(@D)/doc/Makefile + echo "" >> $(@D)/doc/Makefile + echo "clean:" >> $(@D)/doc/Makefile +endef + +# Prevents to copy ac_find_motif.m4 on target, it would else +# be created at $(TARGET_DIR)/$(HOST_DIR)/share/aclocal/ac_find_motif.m4 +define LESSTIF_FIXACLOCAL + sed -i -e "/install-data-am: install-aclocalDATA/d" $(@D)/scripts/autoconf/Makefile +endef + +LESSTIF_POST_CONFIGURE_HOOKS += LESSTIF_NOMAN2HTML +LESSTIF_POST_CONFIGURE_HOOKS += LESSTIF_FIXACLOCAL + +$(eval $(autotools-package)) diff --git a/package/let-me-create/0001-fix-build-with-musl-C-library.patch b/package/let-me-create/0001-fix-build-with-musl-C-library.patch new file mode 100644 index 00000000..90a72464 --- /dev/null +++ b/package/let-me-create/0001-fix-build-with-musl-C-library.patch @@ -0,0 +1,38 @@ +From 93fbc53a727a49dd5061e44e3156ff2044e6e0b5 Mon Sep 17 00:00:00 2001 +From: Rahul Bedarkar +Date: Tue, 1 Aug 2017 22:44:22 +0530 +Subject: [PATCH] fix build with musl C library + +With musl C library, we get following build error: + +/home/buildroot/autobuild/run/instance-3/output/build/let-me-create-v1.5.2/src/core/spi.c: In function 'spi_transfer': +/home/buildroot/autobuild/run/instance-3/output/build/let-me-create-v1.5.2/src/core/spi.c:170:19: error: '_IOC_SIZEBITS' undeclared (first use in this function) +if (ioctl(fd, SPI_IOC_MESSAGE(1), &tr) < 0) { +^ +/home/buildroot/autobuild/run/instance-3/output/build/let-me-create-v1.5.2/src/core/spi.c:170:19: note: each undeclared identifier is reported only once for each function it appears in + +Include for musl C library compatibility. + +This build issue is detected by Buildroot autobuilder: +http://autobuild.buildroot.net/results/af9/af946fa6fe05ee265e4ac97742b15afeb0cea1ab/ + +Signed-off-by: Rahul Bedarkar rahulbedarkar89@gmail.com +--- +Upstream status: https://github.com/CreatorDev/LetMeCreate/pull/29 + + src/core/spi.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/core/spi.c b/src/core/spi.c +index 4d55cee..9ec7ea9 100644 +--- a/src/core/spi.c ++++ b/src/core/spi.c +@@ -1,4 +1,5 @@ + #include ++#include + #include + #include + #include +-- +2.7.4 + diff --git a/package/let-me-create/Config.in b/package/let-me-create/Config.in new file mode 100644 index 00000000..b0fdc73d --- /dev/null +++ b/package/let-me-create/Config.in @@ -0,0 +1,27 @@ +comment "let-me-create needs a toolchain w/ C++, threads, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \ + || BR2_STATIC_LIBS + +config BR2_PACKAGE_LET_ME_CREATE + bool "let-me-create" + # build issues in static libs configuration + # see https://github.com/CreatorDev/LetMeCreate/issues/28 + depends on !BR2_STATIC_LIBS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + This library is collection of small wrappers for some + interfaces on the Creator Ci40 board. It aims at making + easier to develop on this platform. It also provides + wrappers for a few clicks. + + https://github.com/CreatorDev/LetMeCreate + +if BR2_PACKAGE_LET_ME_CREATE + +config BR2_PACKAGE_LET_ME_CREATE_EXAMPLES + bool "Build and install examples" + help + Build and install examples + +endif diff --git a/package/let-me-create/let-me-create.hash b/package/let-me-create/let-me-create.hash new file mode 100644 index 00000000..89976178 --- /dev/null +++ b/package/let-me-create/let-me-create.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 5f42858a2062f34d2578e9cb1aed3ccb8d2409d908aa4c41a924418666d5f2bd let-me-create-1.5.2.tar.gz +sha256 8ffc162e1435e810845b09a4c0d534df057a030f4c107778677b6621dc203426 LICENSE diff --git a/package/let-me-create/let-me-create.mk b/package/let-me-create/let-me-create.mk new file mode 100644 index 00000000..faa5e14d --- /dev/null +++ b/package/let-me-create/let-me-create.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# LetMeCreate +# +################################################################################ + +LET_ME_CREATE_VERSION = 1.5.2 +LET_ME_CREATE_SITE = $(call github,CreatorDev,LetMeCreate,v$(LET_ME_CREATE_VERSION)) +LET_ME_CREATE_INSTALL_STAGING = YES +LET_ME_CREATE_LICENSE = BSD-3-Clause +LET_ME_CREATE_LICENSE_FILES = LICENSE + +# pure static build not supported +ifeq ($(BR2_SHARED_LIBS),y) +LET_ME_CREATE_CONF_OPTS += -DBUILD_STATIC=OFF -DBUILD_SHARED=ON +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +LET_ME_CREATE_CONF_OPTS += -DBUILD_STATIC=ON -DBUILD_SHARED=ON +endif + +ifeq ($(BR2_PACKAGE_LET_ME_CREATE_EXAMPLES),y) +LET_ME_CREATE_CONF_OPTS += -DBUILD_EXAMPLES=ON +else +LET_ME_CREATE_CONF_OPTS += -DBUILD_EXAMPLES=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/leveldb/0001-Fix-compilation-with-g-4.8.2.patch b/package/leveldb/0001-Fix-compilation-with-g-4.8.2.patch new file mode 100644 index 00000000..67a417c1 --- /dev/null +++ b/package/leveldb/0001-Fix-compilation-with-g-4.8.2.patch @@ -0,0 +1,31 @@ +From 8a8016f6d2af335ab205aa40d5274fc9b0c7a566 Mon Sep 17 00:00:00 2001 +From: Steve James +Date: Sun, 5 Apr 2015 16:29:51 +0200 +Subject: [PATCH] Fix compilation with g++ 4.8.2 + +Where db_iter.cc fails to get a typedef for ssize_t when compiled by +GCC. + +Upstream-Status: Submitted [https://github.com/google/leveldb/issues/233] + +Signed-off-by: Steve James +Signed-off-by: Thomas Petazzoni +--- + db/db_iter.cc | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/db/db_iter.cc b/db/db_iter.cc +index 3b2035e..c2e5f35 100644 +--- a/db/db_iter.cc ++++ b/db/db_iter.cc +@@ -13,6 +13,7 @@ + #include "util/logging.h" + #include "util/mutexlock.h" + #include "util/random.h" ++#include // for ssize_t + + namespace leveldb { + +-- +2.1.0 + diff --git a/package/leveldb/0002-CMake-install-libmemenv.a.patch b/package/leveldb/0002-CMake-install-libmemenv.a.patch new file mode 100644 index 00000000..25e050ea --- /dev/null +++ b/package/leveldb/0002-CMake-install-libmemenv.a.patch @@ -0,0 +1,78 @@ +From ef03beb64f5e8028f6b5d65f75ee60e8b2eec594 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sat, 12 Oct 2019 14:43:46 +0200 +Subject: [PATCH] CMake: install libmemenv.a + +Needed for qt5webkit +https://git.busybox.net/buildroot/commit/?id=8a10d9ce311c6cb0490d76921cae55618c258354 +https://git.busybox.net/buildroot/commit/?id=16f847340d07dce620e4c3fc0a099aa79898d86a + +Signed-off-by: Bernd Kuhls +[Fabrice : updated for 1.23] +Signed-off-by: Fabrice Fontaine +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + CMakeLists.txt | 32 +++++++++++++++++++++++++++++++- + 1 file changed, 31 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index f8285b82c6a4..ffce93b01ed6 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -209,6 +209,30 @@ target_sources(leveldb + "${LEVELDB_PUBLIC_INCLUDE_DIR}/write_batch.h" + ) + ++set(libmemenv_a_sources ++ "${PROJECT_SOURCE_DIR}/helpers/memenv/memenv.cc" ++ "${PROJECT_SOURCE_DIR}/helpers/memenv/memenv.h" ++ ) ++add_library(memenv STATIC ${libmemenv_a_sources}) ++target_compile_definitions(memenv ++ PRIVATE ++ # Used by include/export.h when building shared libraries. ++ LEVELDB_COMPILE_LIBRARY ++ # Used by port/port.h. ++ ${LEVELDB_PLATFORM_NAME}=1 ++) ++if (NOT HAVE_CXX17_HAS_INCLUDE) ++ target_compile_definitions(memenv ++ PRIVATE ++ LEVELDB_HAS_PORT_CONFIG_H=1 ++ ) ++endif(NOT HAVE_CXX17_HAS_INCLUDE) ++target_include_directories(memenv ++ PUBLIC ++ $ ++ $ ++) ++ + if (WIN32) + target_sources(leveldb + PRIVATE +@@ -445,7 +469,7 @@ int main() { + endif(LEVELDB_BUILD_BENCHMARKS) + + if(LEVELDB_INSTALL) +- install(TARGETS leveldb ++ install(TARGETS leveldb memenv + EXPORT leveldbTargets + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} +@@ -471,6 +495,12 @@ if(LEVELDB_INSTALL) + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/leveldb" + ) + ++ install( ++ FILES ++ "${PROJECT_SOURCE_DIR}/helpers/memenv/memenv.h" ++ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/helpers/memenv ++ ) ++ + include(CMakePackageConfigHelpers) + configure_package_config_file( + "cmake/${PROJECT_NAME}Config.cmake.in" +-- +2.43.0 + diff --git a/package/leveldb/0003-CMakeLists.txt-check-for-atomic-library.patch b/package/leveldb/0003-CMakeLists.txt-check-for-atomic-library.patch new file mode 100644 index 00000000..98609b6b --- /dev/null +++ b/package/leveldb/0003-CMakeLists.txt-check-for-atomic-library.patch @@ -0,0 +1,49 @@ +From 9e82eb57870ec7c01734b44ed4bb994362004df3 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 27 Dec 2019 10:20:53 +0100 +Subject: [PATCH] CMakeLists.txt: check for atomic library + +On some architectures, atomic binutils are provided by the libatomic +library from gcc. Linking with libatomic is therefore necessary, +otherwise the build fails with: + +[100%] Linking CXX executable leveldbutil +/home/fabrice/buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/sparc-buildroot-linux-uclibc/7.4.0/../../../../sparc-buildroot-linux-uclibc/bin/ld: libleveldb.a(env_posix.cc.o): in function `leveldb::(anonymous namespace)::Limiter::Acquire()': +env_posix.cc:(.text+0x124): undefined reference to `__atomic_fetch_sub_4' + +This is often for example the case on sparcv8 32 bit. + +Fixes: + - http://autobuild.buildroot.org/results/01d5a50581ac9e9b46f40e6f9665f74897db5e6f + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/google/leveldb/pull/765] +--- + CMakeLists.txt | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index be41ba4..9d6773f 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -41,6 +41,7 @@ include(CheckIncludeFile) + check_include_file("unistd.h" HAVE_UNISTD_H) + + include(CheckLibraryExists) ++check_library_exists(atomic __atomic_fetch_add_4 "" HAVE_ATOMIC) + check_library_exists(crc32c crc32c_value "" HAVE_CRC32C) + check_library_exists(snappy snappy_compress "" HAVE_SNAPPY) + check_library_exists(tcmalloc malloc "" HAVE_TCMALLOC) +@@ -270,6 +271,9 @@ if(HAVE_CLANG_THREAD_SAFETY) + -Werror -Wthread-safety) + endif(HAVE_CLANG_THREAD_SAFETY) + ++if(HAVE_ATOMIC) ++ target_link_libraries(leveldb atomic) ++endif(HAVE_ATOMIC) + if(HAVE_CRC32C) + target_link_libraries(leveldb crc32c) + endif(HAVE_CRC32C) +-- +2.24.0 + diff --git a/package/leveldb/0004-cmake-Use-find_package-to-find-Snappy.patch b/package/leveldb/0004-cmake-Use-find_package-to-find-Snappy.patch new file mode 100644 index 00000000..e254a26b --- /dev/null +++ b/package/leveldb/0004-cmake-Use-find_package-to-find-Snappy.patch @@ -0,0 +1,102 @@ +From aa658d96f59d0e29f0d9208b8fbb3cce42e57edc Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Pawe=C5=82=20Bylica?= +Date: Wed, 8 May 2019 10:42:03 +0200 +Subject: [PATCH] cmake: Use find_package() to find Snappy + +Upstream: https://github.com/google/leveldb/pull/686/commits/3e73a396a082efc76e065ae974fe18c3bb27219d +[Thomas: this commit allows to fix the detection of the snappy library +in static link configurations] +Signed-off-by: Thomas Petazzoni +[Fabrice : updated for 1.23] +Signed-off-by: Fabrice Fontaine +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + CMakeLists.txt | 12 ++++++++---- + cmake/FindSnappy.cmake | 31 +++++++++++++++++++++++++++++++ + 2 files changed, 39 insertions(+), 4 deletions(-) + create mode 100644 cmake/FindSnappy.cmake + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 436a9fe5513f..bbd179d3be59 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -6,6 +6,9 @@ cmake_minimum_required(VERSION 3.9) + # Keep the version below in sync with the one in db.h + project(leveldb VERSION 1.23.0 LANGUAGES C CXX) + ++# Include local CMake modules. ++list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) ++ + # C standard can be overridden when this is used as a sub-project. + if(NOT CMAKE_C_STANDARD) + # This project can use C11, but will gracefully decay down to C89. +@@ -34,13 +37,14 @@ option(LEVELDB_BUILD_TESTS "Build LevelDB's unit tests" ON) + option(LEVELDB_BUILD_BENCHMARKS "Build LevelDB's benchmarks" ON) + option(LEVELDB_INSTALL "Install LevelDB's header and library" ON) + ++find_package(Snappy) ++ + include(CheckIncludeFile) + check_include_file("unistd.h" HAVE_UNISTD_H) + + include(CheckLibraryExists) + check_library_exists(atomic __atomic_fetch_add_4 "" HAVE_ATOMIC) + check_library_exists(crc32c crc32c_value "" HAVE_CRC32C) +-check_library_exists(snappy snappy_compress "" HAVE_SNAPPY) + check_library_exists(tcmalloc malloc "" HAVE_TCMALLOC) + + include(CheckCXXSymbolExists) +@@ -298,9 +302,9 @@ endif(HAVE_ATOMIC) + if(HAVE_CRC32C) + target_link_libraries(leveldb crc32c) + endif(HAVE_CRC32C) +-if(HAVE_SNAPPY) +- target_link_libraries(leveldb snappy) +-endif(HAVE_SNAPPY) ++if(TARGET Snappy::snappy) ++ target_link_libraries(leveldb Snappy::snappy) ++endif() + if(HAVE_TCMALLOC) + target_link_libraries(leveldb tcmalloc) + endif(HAVE_TCMALLOC) +diff --git a/cmake/FindSnappy.cmake b/cmake/FindSnappy.cmake +new file mode 100644 +index 000000000000..88c1de98f228 +--- /dev/null ++++ b/cmake/FindSnappy.cmake +@@ -0,0 +1,31 @@ ++# Copyright 2019 The LevelDB Authors. All rights reserved. ++# Use of this source code is governed by a BSD-style license that can be ++# found in the LICENSE file. See the AUTHORS file for names of contributors. ++ ++find_library(SNAPPY_LIBRARY ++ NAMES snappy ++ HINTS ${SNAPPY_ROOT_DIR}/lib ++) ++ ++find_path(SNAPPY_INCLUDE_DIR ++ NAMES snappy.h ++ HINTS ${SNAPPY_ROOT_DIR}/include ++) ++ ++include(FindPackageHandleStandardArgs) ++find_package_handle_standard_args(Snappy DEFAULT_MSG SNAPPY_LIBRARY SNAPPY_INCLUDE_DIR) ++ ++mark_as_advanced(SNAPPY_LIBRARY SNAPPY_INCLUDE_DIR) ++ ++if(SNAPPY_FOUND) ++ set(HAVE_SNAPPY TRUE) # For compatibity with generating port_config.h. ++ ++ # Add imported targets. ++ # Follow the package naming convetion 'Snappy::' from ++ # https://github.com/google/snappy/blob/master/CMakeLists.txt#L211. ++ add_library(Snappy::snappy UNKNOWN IMPORTED) ++ set_target_properties(Snappy::snappy PROPERTIES ++ IMPORTED_LOCATION ${SNAPPY_LIBRARY} ++ INTERFACE_INCLUDE_DIRECTORIES ${SNAPPY_INCLUDE_DIR} ++ ) ++endif() +-- +2.43.0 + diff --git a/package/leveldb/Config.in b/package/leveldb/Config.in new file mode 100644 index 00000000..c4279fcb --- /dev/null +++ b/package/leveldb/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LEVELDB + bool "leveldb" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS + help + LevelDB is a fast key-value storage library written at Google + that provides an ordered mapping from string keys to string + values. + + https://github.com/google/leveldb + +comment "leveldb needs a toolchain w/ C++, threads, gcc >= 4.8" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 diff --git a/package/leveldb/leveldb.hash b/package/leveldb/leveldb.hash new file mode 100644 index 00000000..068cb09b --- /dev/null +++ b/package/leveldb/leveldb.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 9a37f8a6174f09bd622bc723b55881dc541cd50747cbd08831c2a82d620f6d76 leveldb-1.23.tar.gz +sha256 ccc19f1da0798ed666609b65a5b44dd8b3abe6fc08b9c0592eb76e82e174db19 LICENSE diff --git a/package/leveldb/leveldb.mk b/package/leveldb/leveldb.mk new file mode 100644 index 00000000..a8f9dc3a --- /dev/null +++ b/package/leveldb/leveldb.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# leveldb +# +################################################################################ + +LEVELDB_VERSION = 1.23 +LEVELDB_SITE = $(call github,google,leveldb,$(LEVELDB_VERSION)) +LEVELDB_LICENSE = BSD-3-Clause +LEVELDB_LICENSE_FILES = LICENSE +LEVELDB_INSTALL_STAGING = YES +LEVELDB_CONF_OPTS = \ + -DLEVELDB_BUILD_BENCHMARKS=OFF \ + -DLEVELDB_BUILD_TESTS=OFF + +ifeq ($(BR2_PACKAGE_SNAPPY),y) +LEVELDB_DEPENDENCIES += snappy +endif + +$(eval $(cmake-package)) diff --git a/package/lft/Config.in b/package/lft/Config.in new file mode 100644 index 00000000..9ed7b8bd --- /dev/null +++ b/package/lft/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LFT + bool "lft" + select BR2_PACKAGE_LIBPCAP + help + LFT, short for Layer Four Traceroute, is a sort of + 'traceroute' that often works much faster (than the + commonly-used Van Jacobson method) and goes through many + configurations of packet-filters (firewalls). + + http://pwhois.org/lft/ diff --git a/package/lft/lft.hash b/package/lft/lft.hash new file mode 100644 index 00000000..9bcce843 --- /dev/null +++ b/package/lft/lft.hash @@ -0,0 +1,5 @@ +# From http://pwhois.org/lft/ +md5 73cb955546692cf0fb5d7931939c56de lft-3.91.tar.gz +# Locally calculated +sha256 aad13e671adcfc471ab99417161964882d147893a54664f3f465ec5c8398e6af lft-3.91.tar.gz +sha256 e3b7634630e6800eccca6ecafb5d40153d4f8f7a20e2b2399bf3c0ea92f44614 COPYING diff --git a/package/lft/lft.mk b/package/lft/lft.mk new file mode 100644 index 00000000..37e6e777 --- /dev/null +++ b/package/lft/lft.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# lft +# +################################################################################ + +LFT_VERSION = 3.91 +LFT_SITE = http://pwhois.org/get +LFT_DEPENDENCIES = libpcap +LFT_LICENSE = VOSTROM Public License for Open Source +LFT_LICENSE_FILES = COPYING +LFT_CONF_OPTS = --with-pcap=$(STAGING_DIR)/usr +LFT_MAKE_ENV = STRIP=true + +ifeq ($(BR2_STATIC_LIBS),y) +LFT_CONF_OPTS += LIBS="`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`" +endif + +$(eval $(autotools-package)) diff --git a/package/lftp/0001-Fix-build-with-LibreSSL-following-commit-537f37898.patch b/package/lftp/0001-Fix-build-with-LibreSSL-following-commit-537f37898.patch new file mode 100644 index 00000000..8a40351b --- /dev/null +++ b/package/lftp/0001-Fix-build-with-LibreSSL-following-commit-537f37898.patch @@ -0,0 +1,46 @@ +From 0276d5c239c41b3a63f738a5dc47fd56ac389cf0 Mon Sep 17 00:00:00 2001 +From: Ganael Laplanche +Date: Thu, 20 Aug 2020 12:29:05 +0200 +Subject: [PATCH] Fix build with LibreSSL (following commit 537f37898) + +Upstream status: https://github.com/lavv17/lftp/commit/0276d5c239c41b3a63f738a5dc47fd56ac389cf0 +Signed-off-by: Artem Panfilov +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + src/lftp_ssl.cc | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/lftp_ssl.cc b/src/lftp_ssl.cc +index 14a3b9d4..968d3fb2 100644 +--- a/src/lftp_ssl.cc ++++ b/src/lftp_ssl.cc +@@ -34,7 +34,7 @@ + #include "misc.h" + #include "network.h" + #include "buffer.h" +-#if OPENSSL_VERSION_NUMBER < 0x10100000L ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || LIBRESSL_VERSION_NUMBER + #define X509_STORE_CTX_get_by_subject X509_STORE_get_by_subject + #endif + extern "C" { +@@ -840,7 +840,7 @@ lftp_ssl_openssl_instance::lftp_ssl_openssl_instance() + ssl_ctx=SSL_CTX_new(); + X509_set_default_verify_paths(ssl_ctx->cert); + #else +-#if OPENSSL_VERSION_NUMBER < 0x10100000L ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || LIBRESSL_VERSION_NUMBER + SSLeay_add_ssl_algorithms(); + #endif + ssl_ctx=SSL_CTX_new(SSLv23_client_method()); +@@ -1080,7 +1080,7 @@ void lftp_ssl_openssl::copy_sid(const lftp_ssl_openssl *o) + + const char *lftp_ssl_openssl::strerror() + { +-#if OPENSSL_VERSION_NUMBER < 0x10100000L ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || LIBRESSL_VERSION_NUMBER + SSL_load_error_strings(); + #endif + int error=ERR_get_error(); +-- +2.25.1 + diff --git a/package/lftp/0002-src-lftp_ssl.c-fix-build-with-libressl-2.7.0.patch b/package/lftp/0002-src-lftp_ssl.c-fix-build-with-libressl-2.7.0.patch new file mode 100644 index 00000000..4251a5e1 --- /dev/null +++ b/package/lftp/0002-src-lftp_ssl.c-fix-build-with-libressl-2.7.0.patch @@ -0,0 +1,36 @@ +From 3ffa0132987bdde986c82c924bc51b13b37f8b54 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 6 Apr 2022 22:56:21 +0200 +Subject: [PATCH] src/lftp_ssl.c: fix build with libressl >= 2.7.0 + +X509_OBJECT_get0_X509_CRL is provided by libressl since version 2.7.0 +and +https://github.com/libressl-portable/openbsd/commit/9866ae34c0af718973475296bd9ef036d3aaa94e +resulting in the following build failure: + +/nvmedata/autobuild/instance-21/output-1/host/opt/ext-toolchain/bin/../lib/gcc/microblaze-buildroot-linux-musl/11.2.0/../../../../microblaze-buildroot-linux-musl/bin/ld: /nvmedata/autobuild/instance-21/output-1/host/microblaze-buildroot-linux-musl/sysroot/usr/lib/libcrypto.a(x509_lu.c.o): in function `X509_OBJECT_get0_X509_CRL': +(.text+0xc3c): multiple definition of `X509_OBJECT_get0_X509_CRL'; /nvmedata/autobuild/instance-21/output-1/build/lftp-4.9.2/src/.libs/liblftp-network.a(liblftp_network_la-lftp_ssl.o):(.text+0x894): first defined here + +Fixes: + - http://autobuild.buildroot.org/results/7fd1dfd5bc750ae5a3278ca950c838ae90704b23 + +Signed-off-by: Fabrice Fontaine +[Retrieved from: +https://github.com/lavv17/lftp/commit/3ffa0132987bdde986c82c924bc51b13b37f8b54] +--- + src/lftp_ssl.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/lftp_ssl.cc b/src/lftp_ssl.cc +index 26e91e4b..a814543d 100644 +--- a/src/lftp_ssl.cc ++++ b/src/lftp_ssl.cc +@@ -664,7 +664,7 @@ int gnutls_x509_crt_list_import(gnutls_x509_crt_t *certs, unsigned int* cert_max + #elif USE_OPENSSL + //static int lftp_ssl_passwd_callback(char *buf,int size,int rwflag,void *userdata); + +-#if OPENSSL_VERSION_NUMBER < 0x10100000L || LIBRESSL_VERSION_NUMBER ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || (defined (LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000L) + // for compatibility with older versions + X509_OBJECT *X509_OBJECT_new() + { diff --git a/package/lftp/Config.in b/package/lftp/Config.in new file mode 100644 index 00000000..ebe8882e --- /dev/null +++ b/package/lftp/Config.in @@ -0,0 +1,67 @@ +config BR2_PACKAGE_LFTP + bool "lftp" + depends on BR2_USE_WCHAR + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_READLINE + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_GNUTLS + help + LFTP is a sophisticated ftp/http client, and a file transfer + program supporting a number of network protocols. Like BASH, + it has job control and uses the readline library for input. It + has bookmarks, a built-in mirror command, and can transfer + several files in parallel. + It was designed with reliability in mind. + + http://lftp.yar.ru/ + +if BR2_PACKAGE_LFTP + +comment "Commands" + +config BR2_PACKAGE_LFTP_CMD_MIRROR + bool "Mirror command" + default y + help + Enable mirror command + +config BR2_PACKAGE_LFTP_CMD_SLEEP + bool "Sleep command" + default y + help + Enable sleep command + +config BR2_PACKAGE_LFTP_CMD_TORRENT + bool "Torrent command" + help + Enable torrent command + +comment "Protocols" + +config BR2_PACKAGE_LFTP_PROTO_FISH + bool "FISH protocol" + help + Enable FISH protocol + +config BR2_PACKAGE_LFTP_PROTO_FTP + bool "FTP protocol" + default y + help + Enable FTP protocol + +config BR2_PACKAGE_LFTP_PROTO_HTTP + bool "HTTP protocol" + help + Enable HTTP protocol + +config BR2_PACKAGE_LFTP_PROTO_SFTP + bool "SFTP protocol" + help + Enable SFTP protocol + +endif # BR2_PACKAGE_LFTP + +comment "lftp requires a toolchain w/ C++, wchar" + depends on BR2_USE_MMU + depends on !(BR2_USE_WCHAR && BR2_INSTALL_LIBSTDCPP) diff --git a/package/lftp/lftp.hash b/package/lftp/lftp.hash new file mode 100644 index 00000000..e4c3305c --- /dev/null +++ b/package/lftp/lftp.hash @@ -0,0 +1,7 @@ +# From http://lftp.yar.ru/ftp/lftp-4.9.2.md5sum +md5 b3a272ecb7a2b60e3827776f90ffb2f3 lftp-4.9.2.tar.xz +# Locally calculated after checking gpg signature +sha256 c517c4f4f9c39bd415d7313088a2b1e313b2d386867fe40b7692b83a20f0670d lftp-4.9.2.tar.xz + +# Hash for license file: +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/lftp/lftp.mk b/package/lftp/lftp.mk new file mode 100644 index 00000000..483ca298 --- /dev/null +++ b/package/lftp/lftp.mk @@ -0,0 +1,77 @@ +################################################################################ +# +# lftp +# +################################################################################ + +LFTP_VERSION = 4.9.2 +LFTP_SOURCE = lftp-$(LFTP_VERSION).tar.xz +LFTP_SITE = http://lftp.yar.ru/ftp +LFTP_LICENSE = GPL-3.0+ +LFTP_LICENSE_FILES = COPYING +LFTP_CPE_ID_VALID = YES +LFTP_DEPENDENCIES = readline zlib host-pkgconf + +# Help lftp finding readline and zlib +LFTP_CONF_OPTS = \ + --with-readline=$(STAGING_DIR)/usr \ + --with-readline-lib="`$(PKG_CONFIG_HOST_BINARY) --libs readline`" \ + --with-zlib=$(STAGING_DIR)/usr + +ifneq ($(BR2_STATIC_LIBS),y) +LFTP_CONF_OPTS += --with-modules +endif + +ifeq ($(BR2_PACKAGE_EXPAT)$(BR2_PACKAGE_LFTP_PROTO_HTTP),yy) +LFTP_DEPENDENCIES += expat +LFTP_CONF_OPTS += --with-expat=$(STAGING_DIR)/usr +else +LFTP_CONF_OPTS += --without-expat +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +LFTP_DEPENDENCIES += gnutls +LFTP_CONF_OPTS += --with-gnutls +else +LFTP_CONF_OPTS += --without-gnutls +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LFTP_DEPENDENCIES += openssl +LFTP_CONF_OPTS += --with-openssl +else +LFTP_CONF_OPTS += --without-openssl +endif + +ifeq ($(BR2_PACKAGE_LIBIDN2),y) +LFTP_DEPENDENCIES += libidn2 +LFTP_CONF_OPTS += --with-libidn2=$(STAGING_DIR)/usr +else +LFTP_CONF_OPTS += --without-libidn2 +endif + +# Remove /usr/share/lftp +define LFTP_REMOVE_DATA + $(RM) -fr $(TARGET_DIR)/usr/share/lftp +endef + +LFTP_POST_INSTALL_TARGET_HOOKS += LFTP_REMOVE_DATA + +# Optional commands and protocols +LFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_CMD_MIRROR) += cmd-mirror.so +LFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_CMD_SLEEP) += cmd-sleep.so +LFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_CMD_TORRENT) += cmd-torrent.so +LFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_PROTO_FISH) += proto-fish.so +LFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_PROTO_FTP) += proto-ftp.so +LFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_PROTO_HTTP) += proto-http.so +LFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_PROTO_SFTP) += proto-sftp.so + +define LFTP_REMOVE_MODULES + for f in $(LFTP_MODULES_TO_REMOVE-) ; do \ + $(RM) -f $(TARGET_DIR)/usr/lib/lftp/$(LFTP_VERSION)/$$f ; \ + done +endef + +LFTP_POST_INSTALL_TARGET_HOOKS += LFTP_REMOVE_MODULES + +$(eval $(autotools-package)) diff --git a/package/libaacs/Config.in b/package/libaacs/Config.in new file mode 100644 index 00000000..d59b6da6 --- /dev/null +++ b/package/libaacs/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBAACS + bool "libaacs" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBGCRYPT + help + libaacs is a research project to implement the Advanced Access + Content System specification. + NB: this project doesn't offer any key or certificate that + could be used to decode encrypted copyrighted material. + + http://www.videolan.org/developers/libaacs.html + +comment "libaacs needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/libaacs/libaacs.hash b/package/libaacs/libaacs.hash new file mode 100644 index 00000000..d4977727 --- /dev/null +++ b/package/libaacs/libaacs.hash @@ -0,0 +1,5 @@ +# From http://download.videolan.org/pub/videolan/libaacs/0.11.1/libaacs-0.11.1.tar.bz2.sha512 +sha512 42dcba5fd593c9a8ec7af11251006b083ad2c49ec198734d1d66f67c2ded4557d77617600edbf0c5250e9b0407ef9a2f906d59d154bda8ecfc8adfd234fb2c42 libaacs-0.11.1.tar.bz2 + +# Hash for license file: +sha256 592987e8510228d546540b84a22444bde98e48d03078d3b2eefcd889bec5ce8c COPYING diff --git a/package/libaacs/libaacs.mk b/package/libaacs/libaacs.mk new file mode 100644 index 00000000..d4e90be2 --- /dev/null +++ b/package/libaacs/libaacs.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# libaacs +# +################################################################################ + +LIBAACS_VERSION = 0.11.1 +LIBAACS_SITE = http://download.videolan.org/pub/videolan/libaacs/$(LIBAACS_VERSION) +LIBAACS_SOURCE = libaacs-$(LIBAACS_VERSION).tar.bz2 +LIBAACS_LICENSE = LGPL-2.1+ +LIBAACS_LICENSE_FILES = COPYING +LIBAACS_INSTALL_STAGING = YES +LIBAACS_DEPENDENCIES = host-bison host-flex libgcrypt +LIBAACS_CONF_OPTS = \ + --disable-werror \ + --disable-extra-warnings \ + --disable-optimizations \ + --disable-examples \ + --disable-debug \ + --with-gnu-ld \ + --with-libgcrypt-prefix=$(STAGING_DIR)/usr \ + --with-gpg-error-prefix=$(STAGING_DIR)/usr + +$(eval $(autotools-package)) diff --git a/package/libabseil-cpp/0001-force-position-independent-code.patch b/package/libabseil-cpp/0001-force-position-independent-code.patch new file mode 100644 index 00000000..a6ca9c0f --- /dev/null +++ b/package/libabseil-cpp/0001-force-position-independent-code.patch @@ -0,0 +1,40 @@ +From 832765d12879fabf799dd80af6e8fee9cd298934 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Tue, 21 Jul 2020 13:08:50 -0700 +Subject: [PATCH] force position independent code + +Without this option, programs building for arm64 or x86-64 will fail when +attempting to link to the built libraries with the following (abbreviated) +error: + +"relocation against `.rodata' can not be used when making a shared object; +recompile with -fPIC." + +Because libabseil-cpp builds static libraries, it is better to set the +POSITION_INDEPENDENT_CODE to ON instead of forcing fPIC, as forcing fPIC may +cause relocation errors when shared libraries link against the built static +libraries. + +Signed-off-by: Adam Duskett +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + CMake/AbseilHelpers.cmake | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/CMake/AbseilHelpers.cmake b/CMake/AbseilHelpers.cmake +index 3bd33ce8718d..7f269bd20c21 100644 +--- a/CMake/AbseilHelpers.cmake ++++ b/CMake/AbseilHelpers.cmake +@@ -292,6 +292,8 @@ Cflags: -I\${includedir}${PC_CFLAGS}\n") + target_compile_features(${_NAME} PUBLIC ${ABSL_INTERNAL_CXX_STD_FEATURE}) + endif() + ++ # Without this setting, other programs such as GRPC will fail when linking. ++ set_property(TARGET ${_NAME} PROPERTY POSITION_INDEPENDENT_CODE ON) + # When being installed, we lose the absl_ prefix. We want to put it back + # to have properly named lib files. This is a no-op when we are not being + # installed. +-- +2.43.0 + diff --git a/package/libabseil-cpp/Config.in b/package/libabseil-cpp/Config.in new file mode 100644 index 00000000..7b65ec40 --- /dev/null +++ b/package/libabseil-cpp/Config.in @@ -0,0 +1,37 @@ +# see absl/debugging/internal/examine_stack.cc for the list of +# architectures that are supported, and for which ucontext is used. +config BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS + bool + default y if BR2_aarch64 || BR2_aarch64_be + default y if BR2_arm || BR2_armeb + default y if BR2_i386 + default y if BR2_m68k + default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + default y if BR2_riscv + default y if BR2_s390x + default y if BR2_sh + default y if BR2_sparc || BR2_sparc64 + default y if BR2_x86_64 + depends on BR2_TOOLCHAIN_HAS_UCONTEXT + +config BR2_PACKAGE_LIBABSEIL_CPP + bool "libabseil-cpp" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # C++14 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS # uses dlfcn.h + depends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS + help + Abseil is an open-source collection of C++ library code + designed to augment the C++ standard library. The Abseil + library code is collected from Google's own C++ code base, + has been extensively tested and used in production, and is + the same code we depend on in our daily coding lives. + + https://github.com/abseil/abseil-cpp + +comment "libabseil-cpp needs a toolchain w/ gcc >= 8, C++, threads, dynamic library" + depends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_8 diff --git a/package/libabseil-cpp/libabseil-cpp.hash b/package/libabseil-cpp/libabseil-cpp.hash new file mode 100644 index 00000000..c3fc0d85 --- /dev/null +++ b/package/libabseil-cpp/libabseil-cpp.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 987ce98f02eefbaf930d6e38ab16aa05737234d7afbab2d5c4ea7adbe50c28ed libabseil-cpp-20230802.1.tar.gz +sha256 c79a7fea0e3cac04cd43f20e7b648e5a0ff8fa5344e644b0ee09ca1162b62747 LICENSE diff --git a/package/libabseil-cpp/libabseil-cpp.mk b/package/libabseil-cpp/libabseil-cpp.mk new file mode 100644 index 00000000..a5dfc8eb --- /dev/null +++ b/package/libabseil-cpp/libabseil-cpp.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# libabseil-cpp +# +################################################################################ + +LIBABSEIL_CPP_VERSION = 20230802.1 +LIBABSEIL_CPP_SITE = $(call github,abseil,abseil-cpp,$(LIBABSEIL_CPP_VERSION)) +LIBABSEIL_CPP_LICENSE = Apache-2.0 +LIBABSEIL_CPP_LICENSE_FILES = LICENSE +LIBABSEIL_CPP_INSTALL_STAGING = YES + +LIBABSEIL_CPP_CONF_OPTS = \ + -DCMAKE_CXX_STANDARD=14 \ + -DABSL_ENABLE_INSTALL=ON \ + -DABSL_USE_GOOGLETEST_HEAD=OFF + +HOST_LIBABSEIL_CPP_CONF_OPTS = \ + -DCMAKE_CXX_STANDARD=14 \ + -DABSL_ENABLE_INSTALL=ON \ + -DABSL_USE_GOOGLETEST_HEAD=OFF + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/libaio/Config.in b/package/libaio/Config.in new file mode 100644 index 00000000..eed843f4 --- /dev/null +++ b/package/libaio/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBAIO + bool "libaio" + help + Library for doing asynchronous I/O + + https://pagure.io/libaio/ diff --git a/package/libaio/libaio.hash b/package/libaio/libaio.hash new file mode 100644 index 00000000..4ddc9733 --- /dev/null +++ b/package/libaio/libaio.hash @@ -0,0 +1,5 @@ +# From https://releases.pagure.org/libaio/CHECKSUMS +sha512 65c30a102433bf8386581b03fc706d84bd341be249fbdee11a032b237a7b239e8c27413504fef15e2797b1acd67f752526637005889590ecb380e2e120ab0b71 libaio-0.3.113.tar.gz + +# Hash for license file: +sha256 5bbcbb737e60fe9deba08ecbd00920cfcc3403ba2e534c64fdeea49d6bb87509 COPYING diff --git a/package/libaio/libaio.mk b/package/libaio/libaio.mk new file mode 100644 index 00000000..16cb502f --- /dev/null +++ b/package/libaio/libaio.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# libaio +# +################################################################################ + +LIBAIO_VERSION = 0.3.113 +LIBAIO_SITE = https://releases.pagure.org/libaio +LIBAIO_INSTALL_STAGING = YES +LIBAIO_LICENSE = LGPL-2.1+ +LIBAIO_LICENSE_FILES = COPYING +LIBAIO_CPE_ID_VALID = YES + +LIBAIO_CONFIGURE_OPTS = $(TARGET_CONFIGURE_OPTS) + +ifeq ($(BR2_STATIC_LIBS),y) +LIBAIO_CONFIGURE_OPTS += ENABLE_SHARED=0 +endif + +define LIBAIO_BUILD_CMDS + $(LIBAIO_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define LIBAIO_INSTALL_STAGING_CMDS + $(LIBAIO_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +define LIBAIO_INSTALL_TARGET_CMDS + $(LIBAIO_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +define HOST_LIBAIO_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_LIBAIO_INSTALL_CMDS + $(HOST_CONFIGURE_OPTS) $(HOST_MAKE_ENV) $(MAKE) -C $(@D) prefix=$(HOST_DIR) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/libao/Config.in b/package/libao/Config.in new file mode 100644 index 00000000..1fab6d9b --- /dev/null +++ b/package/libao/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBAO + bool "libao" + help + Libao is a cross-platform audio library that allows programs + to output audio using a simple API on a wide variety of + platforms. + + http://www.xiph.org/ao/ diff --git a/package/libao/libao.hash b/package/libao/libao.hash new file mode 100644 index 00000000..91c6bd11 --- /dev/null +++ b/package/libao/libao.hash @@ -0,0 +1,5 @@ +# From http://downloads.xiph.org/releases/ao/SHA256SUMS.txt +sha256 03ad231ad1f9d64b52474392d63c31197b0bc7bd416e58b1c10a329a5ed89caf libao-1.2.0.tar.gz + +# Hash for license file: +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/libao/libao.mk b/package/libao/libao.mk new file mode 100644 index 00000000..19a4c165 --- /dev/null +++ b/package/libao/libao.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# libao +# +################################################################################ + +LIBAO_VERSION = 1.2.0 +LIBAO_SITE = http://downloads.xiph.org/releases/ao +LIBAO_DEPENDENCIES = host-pkgconf +LIBAO_INSTALL_STAGING = YES +LIBAO_LICENSE = GPL-2.0+ +LIBAO_LICENSE_FILES = COPYING +LIBAO_CPE_ID_VENDOR = xiph +LIBAO_CONF_OPTS = \ + --disable-esd \ + --disable-wmm \ + --disable-arts \ + --disable-nas \ + --disable-pulse \ + --disable-broken-oss + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +LIBAO_DEPENDENCIES += alsa-lib +LIBAO_CONF_OPTS += --enable-alsa --enable-alsa-mmap + +# Remove the OSS plugin if ALSA is enabled, as libao will prefer ALSA anyway +define LIBAO_REMOVE_OSS_PLUGIN + rm -f $(TARGET_DIR)/usr/lib/ao/plugins-4/liboss.so +endef +LIBAO_POST_INSTALL_TARGET_HOOKS += LIBAO_REMOVE_OSS_PLUGIN +else +LIBAO_CONF_OPTS += --disable-alsa +endif + +$(eval $(autotools-package)) diff --git a/package/libapparmor/Config.in b/package/libapparmor/Config.in new file mode 100644 index 00000000..dbfd2dc4 --- /dev/null +++ b/package/libapparmor/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_LIBAPPARMOR + bool "libapparmor" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 + help + AppArmor is an effective and easy-to-use Linux application + security system. AppArmor proactively protects the operating + system and applications from external or internal threats, + even zero-day attacks, by enforcing good behavior and + preventing even unknown application flaws from being + exploited. + + This package installs only the library. + + http://wiki.apparmor.net + +comment "libapparmor needs a toolchain w/ headers >= 3.16, threads" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 diff --git a/package/libapparmor/libapparmor.hash b/package/libapparmor/libapparmor.hash new file mode 100644 index 00000000..68b0468a --- /dev/null +++ b/package/libapparmor/libapparmor.hash @@ -0,0 +1,6 @@ +# From https://gitlab.com/apparmor/apparmor/-/wikis/Release_Notes_3.1.7 +sha256 64494bd99fa6547a9cbdb4fc6bc732451a02dd19e6eb70eab977b239632151eb apparmor-v3.1.7.tar.gz + +# locally computed +sha256 a7e0cdcbea5c14927cedfc600d46526bdcbb1eb0a4d951e2ea53c2a6de159cb4 LICENSE +sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 libraries/libapparmor/COPYING.LGPL diff --git a/package/libapparmor/libapparmor.mk b/package/libapparmor/libapparmor.mk new file mode 100644 index 00000000..fa59ff29 --- /dev/null +++ b/package/libapparmor/libapparmor.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# libapparmor +# +################################################################################ + +# When updating the version here, please also update the apparmor package +LIBAPPARMOR_VERSION_MAJOR = 3.1 +LIBAPPARMOR_VERSION = $(LIBAPPARMOR_VERSION_MAJOR).7 +LIBAPPARMOR_SOURCE = apparmor-v$(LIBAPPARMOR_VERSION).tar.gz +LIBAPPARMOR_SITE = https://gitlab.com/apparmor/apparmor/-/archive/v$(LIBAPPARMOR_VERSION) +LIBAPPARMOR_LICENSE = LGPL-2.1 +LIBAPPARMOR_LICENSE_FILES = LICENSE libraries/libapparmor/COPYING.LGPL + +LIBAPPARMOR_DEPENDENCIES = host-bison host-flex host-pkgconf +LIBAPPARMOR_SUBDIR = libraries/libapparmor +LIBAPPARMOR_INSTALL_STAGING = YES + +# Patch 0001 touches Makefile.am and m4 files +LIBAPPARMOR_AUTORECONF = YES + +# Most AppArmor tools will want to link to the static lib. +# ac_cv_prog_cc_c99 is required for BR2_USE_WCHAR=n because the C99 test +# provided by autoconf relies on wchar_t. +LIBAPPARMOR_CONF_OPTS = \ + ac_cv_prog_cc_c99=-std=gnu99 \ + --enable-static \ + --disable-man-pages + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +LIBAPPARMOR_DEPENDENCIES += host-python3 host-python-setuptools host-swig python3 +LIBAPPARMOR_CONF_OPTS += \ + --with-python \ + PYTHON=$(HOST_DIR)/bin/python3 \ + PYTHON_CONFIG=$(STAGING_DIR)/usr/bin/python3-config \ + SWIG=$(SWIG) +else +LIBAPPARMOR_CONF_OPTS += --without-python +endif + +define LIBAPPARMOR_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_AUDIT) + $(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY) + $(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY_APPARMOR) + $(call KCONFIG_ENABLE_OPT,CONFIG_DEFAULT_SECURITY_APPARMOR) +endef + +$(eval $(autotools-package)) diff --git a/package/libarchive/0001-Revert-Only-add-iconv-to-the-.pc-file-if-needed-1825.patch b/package/libarchive/0001-Revert-Only-add-iconv-to-the-.pc-file-if-needed-1825.patch new file mode 100644 index 00000000..a4dd7dad --- /dev/null +++ b/package/libarchive/0001-Revert-Only-add-iconv-to-the-.pc-file-if-needed-1825.patch @@ -0,0 +1,31 @@ +From 3879afd473a256173cc626e16293f3fe8875f2d6 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 6 Jan 2024 09:53:23 +0100 +Subject: [PATCH] Revert "Only add "iconv" to the .pc file if needed (#1825)" + +This reverts commit 1f35c466aaa9444335a1b854b0b7223b0d2346c2. + +Upstream: no dedicated PR for this revert but there is already plenty of PRs/issues to fix iconv build ... +Signed-off-by: Fabrice Fontaine +--- + configure.ac | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 93f7af94..204a4e69 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -434,9 +434,7 @@ if test "x$with_iconv" != "xno"; then + AC_CHECK_HEADERS([localcharset.h]) + am_save_LIBS="$LIBS" + LIBS="${LIBS} ${LIBICONV}" +- if test -n "$LIBICONV"; then +- LIBSREQUIRED="$LIBSREQUIRED${LIBSREQUIRED:+ }iconv" +- fi ++ LIBSREQUIRED="$LIBSREQUIRED${LIBSREQUIRED:+ }iconv" + AC_CHECK_FUNCS([locale_charset]) + LIBS="${am_save_LIBS}" + if test "x$ac_cv_func_locale_charset" != "xyes"; then +-- +2.43.0 + diff --git a/package/libarchive/0002-autotools-do-not-add-iconv-for-Requires.private.patch b/package/libarchive/0002-autotools-do-not-add-iconv-for-Requires.private.patch new file mode 100644 index 00000000..3cbd3041 --- /dev/null +++ b/package/libarchive/0002-autotools-do-not-add-iconv-for-Requires.private.patch @@ -0,0 +1,27 @@ +From 619c1be8d38ff79622db8f66f3b02832795315f9 Mon Sep 17 00:00:00 2001 +From: Christian Hesse +Date: Wed, 14 Dec 2022 09:04:39 +0100 +Subject: [PATCH] autotools: do not add iconv for Requires.private + +There is no pkgconfig file for iconv, thus things break with this +change. Let's drop iconv from Requires.private. + +Fixes: a83f3d32 ("autotools: Fix static linking when openssl is enabled in windows") +Upstream: https://github.com/libarchive/libarchive/pull/1817/commits/619c1be8d38ff79622db8f66f3b02832795315f9 +Signed-off-by: Fabrice Fontaine +--- + configure.ac | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 99bff20d1..f245d0c55 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -434,7 +434,6 @@ if test "x$with_iconv" != "xno"; then + AC_CHECK_HEADERS([localcharset.h]) + am_save_LIBS="$LIBS" + LIBS="${LIBS} ${LIBICONV}" +- LIBSREQUIRED="$LIBSREQUIRED${LIBSREQUIRED:+ }iconv" + AC_CHECK_FUNCS([locale_charset]) + LIBS="${am_save_LIBS}" + if test "x$ac_cv_func_locale_charset" != "xyes"; then diff --git a/package/libarchive/Config.in b/package/libarchive/Config.in new file mode 100644 index 00000000..2c8d813c --- /dev/null +++ b/package/libarchive/Config.in @@ -0,0 +1,39 @@ +comment "libarchive needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +config BR2_PACKAGE_LIBARCHIVE + bool "libarchive" + depends on BR2_USE_WCHAR + help + Libarchive is a reusable C library for reading and writing a + variety of streaming archive formats. + + https://www.libarchive.org/ + +if BR2_PACKAGE_LIBARCHIVE + +config BR2_PACKAGE_LIBARCHIVE_BSDTAR + bool "bsdtar" + help + The 'bsdtar' program is a full-featured 'tar' + replacement built on libarchive. + +config BR2_PACKAGE_LIBARCHIVE_BSDCPIO + bool "bsdcpio" + help + The 'bsdcpio' program is a different interface to + essentially the same functionality as 'bsdtar'. + +config BR2_PACKAGE_LIBARCHIVE_BSDCAT + bool "bsdcat" + help + The 'bsdcat' program is a simple replacement tool + for zcat, bzcat, xzcat, and such. + +config BR2_PACKAGE_LIBARCHIVE_BSDUNZIP + bool "bsdunzip" + help + The 'bsdunzip' program is a simple replacement tool + for Info-ZIP. + +endif diff --git a/package/libarchive/libarchive.hash b/package/libarchive/libarchive.hash new file mode 100644 index 00000000..a2c64887 --- /dev/null +++ b/package/libarchive/libarchive.hash @@ -0,0 +1,4 @@ +# From https://www.libarchive.de/downloads/sha256sums +sha256 f887755c434a736a609cbd28d87ddbfbe9d6a3bb5b703c22c02f6af80a802735 libarchive-3.7.4.tar.xz +# Locally computed: +sha256 b2cdf763345de2de34cebf54394df3c61a105c3b71288603c251f2fa638200ba COPYING diff --git a/package/libarchive/libarchive.mk b/package/libarchive/libarchive.mk new file mode 100644 index 00000000..7d58b5c6 --- /dev/null +++ b/package/libarchive/libarchive.mk @@ -0,0 +1,174 @@ +################################################################################ +# +# libarchive +# +################################################################################ + +LIBARCHIVE_VERSION = 3.7.4 +LIBARCHIVE_SOURCE = libarchive-$(LIBARCHIVE_VERSION).tar.xz +LIBARCHIVE_SITE = https://www.libarchive.de/downloads +LIBARCHIVE_INSTALL_STAGING = YES +LIBARCHIVE_LICENSE = BSD-2-Clause, BSD-3-Clause, CC0-1.0, OpenSSL, Apache-2.0 +LIBARCHIVE_LICENSE_FILES = COPYING +LIBARCHIVE_CPE_ID_VENDOR = libarchive +# We're patching configure.ac +LIBARCHIVE_AUTORECONF = YES +# needed for autoreconf +LIBARCHIVE_DEPENDENCIES += host-pkgconf + +ifeq ($(BR2_PACKAGE_LIBARCHIVE_BSDTAR),y) +ifeq ($(BR2_STATIC_LIBS),y) +LIBARCHIVE_CONF_OPTS += --enable-bsdtar=static +else +LIBARCHIVE_CONF_OPTS += --enable-bsdtar=shared +endif +else +LIBARCHIVE_CONF_OPTS += --disable-bsdtar +endif + +ifeq ($(BR2_PACKAGE_LIBARCHIVE_BSDCPIO),y) +ifeq ($(BR2_STATIC_LIBS),y) +LIBARCHIVE_CONF_OPTS += --enable-bsdcpio=static +else +LIBARCHIVE_CONF_OPTS += --enable-bsdcpio=shared +endif +else +LIBARCHIVE_CONF_OPTS += --disable-bsdcpio +endif + +ifeq ($(BR2_PACKAGE_LIBARCHIVE_BSDCAT),y) +ifeq ($(BR2_STATIC_LIBS),y) +LIBARCHIVE_CONF_OPTS += --enable-bsdcat=static +else +LIBARCHIVE_CONF_OPTS += --enable-bsdcat=shared +endif +else +LIBARCHIVE_CONF_OPTS += --disable-bsdcat +endif + +ifeq ($(BR2_PACKAGE_LIBARCHIVE_BSDUNZIP),y) +ifeq ($(BR2_STATIC_LIBS),y) +LIBARCHIVE_CONF_OPTS += --enable-bsdunzip=static +else +LIBARCHIVE_CONF_OPTS += --enable-bsdunzip=shared +endif +else +LIBARCHIVE_CONF_OPTS += --disable-bsdunzip +endif + +ifeq ($(BR2_PACKAGE_ACL),y) +LIBARCHIVE_DEPENDENCIES += acl +else +LIBARCHIVE_CONF_OPTS += --disable-acl +endif + +ifeq ($(BR2_PACKAGE_ATTR),y) +LIBARCHIVE_DEPENDENCIES += attr +else +LIBARCHIVE_CONF_OPTS += --disable-xattr +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +LIBARCHIVE_CONF_OPTS += --with-bz2lib +LIBARCHIVE_DEPENDENCIES += bzip2 +else +LIBARCHIVE_CONF_OPTS += --without-bz2lib +endif + +ifeq ($(BR2_PACKAGE_EXPAT),y) +LIBARCHIVE_DEPENDENCIES += expat +else +LIBARCHIVE_CONF_OPTS += --without-expat +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +LIBARCHIVE_DEPENDENCIES += libiconv +else +LIBARCHIVE_CONF_OPTS += --without-libiconv-prefix +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +LIBARCHIVE_DEPENDENCIES += libxml2 +LIBARCHIVE_CONF_ENV += XML2_CONFIG=$(STAGING_DIR)/usr/bin/xml2-config +else +LIBARCHIVE_CONF_OPTS += --without-xml2 +endif + +ifeq ($(BR2_PACKAGE_LZ4),y) +LIBARCHIVE_CONF_OPTS += --with-lz4 +LIBARCHIVE_DEPENDENCIES += lz4 +else +LIBARCHIVE_CONF_OPTS += --without-lz4 +endif + +ifeq ($(BR2_PACKAGE_LZO),y) +LIBARCHIVE_DEPENDENCIES += lzo +else +LIBARCHIVE_CONF_OPTS += --without-lzo2 +endif + +ifeq ($(BR2_PACKAGE_MBEDTLS),y) +LIBARCHIVE_DEPENDENCIES += mbedtls +LIBARCHIVE_CONF_OPTS += --with-mbedtls +else +LIBARCHIVE_CONF_OPTS += --without-mbedtls +endif + +ifeq ($(BR2_PACKAGE_NETTLE),y) +LIBARCHIVE_DEPENDENCIES += nettle +LIBARCHIVE_CONF_OPTS += --with-nettle +else +LIBARCHIVE_CONF_OPTS += --without-nettle +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBARCHIVE_DEPENDENCIES += openssl +else +LIBARCHIVE_CONF_OPTS += --without-openssl +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LIBARCHIVE_DEPENDENCIES += zlib +else +LIBARCHIVE_CONF_OPTS += --without-zlib +endif + +# libarchive requires LZMA with thread support in the toolchain +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS)$(BR2_PACKAGE_XZ),yy) +LIBARCHIVE_DEPENDENCIES += xz +LIBARCHIVE_CONF_OPTS += --with-lzma +else +LIBARCHIVE_CONF_OPTS += --without-lzma +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +LIBARCHIVE_DEPENDENCIES += zstd +LIBARCHIVE_CONF_OPTS += --with-zstd +else +LIBARCHIVE_CONF_OPTS += --without-zstd +endif + +# The only user of host-libarchive needs zlib support +HOST_LIBARCHIVE_DEPENDENCIES = host-zlib +# needed for autoreconf +HOST_LIBARCHIVE_DEPENDENCIES += host-pkgconf +HOST_LIBARCHIVE_CONF_OPTS = \ + --disable-bsdtar \ + --disable-bsdcpio \ + --disable-bsdcat \ + --disable-acl \ + --disable-xattr \ + --without-bz2lib \ + --without-expat \ + --without-libiconv-prefix \ + --without-xml2 \ + --without-lz4 \ + --without-lzo2 \ + --without-mbedtls \ + --without-nettle \ + --without-openssl \ + --without-lzma \ + --without-zstd + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libargon2/0001-libargon2-dont-fail-on-existing-symlink.patch b/package/libargon2/0001-libargon2-dont-fail-on-existing-symlink.patch new file mode 100644 index 00000000..43a6deb9 --- /dev/null +++ b/package/libargon2/0001-libargon2-dont-fail-on-existing-symlink.patch @@ -0,0 +1,23 @@ +From b997b9e7d4744020409223afddc7299a771eb52d Mon Sep 17 00:00:00 2001 +From: Pascal de Bruijn +Date: Thu, 7 Nov 2019 09:55:32 +0100 +Subject: [PATCH] Don't fail on existing symlink + +Signed-off-by: Pascal de Bruijn +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 837e7f7..7c116c9 100644 +--- a/Makefile ++++ b/Makefile +@@ -238,7 +238,7 @@ install: $(RUN) libs + $(INSTALL) -d $(INST_LIBRARY) + $(INSTALL) -m 0644 $(LIBRARIES) $(INST_LIBRARY) + ifdef LINKED_LIB_SH +- cd $(INST_LIBRARY) && ln -s $(notdir $(LIB_SH) $(LINKED_LIB_SH)) ++ cd $(INST_LIBRARY) && ln -sf $(notdir $(LIB_SH) $(LINKED_LIB_SH)) + endif + $(INSTALL) -d $(INST_BINARY) + $(INSTALL) $(RUN) $(INST_BINARY) diff --git a/package/libargon2/Config.in b/package/libargon2/Config.in new file mode 100644 index 00000000..6bba74cf --- /dev/null +++ b/package/libargon2/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBARGON2 + bool "libargon2" + depends on BR2_USE_MMU + depends on !BR2_STATIC_LIBS + help + A modern password hashing algorithm + + https://password-hashing.net/#argon2 + +comment "libargon needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/package/libargon2/libargon2.hash b/package/libargon2/libargon2.hash new file mode 100644 index 00000000..331eea99 --- /dev/null +++ b/package/libargon2/libargon2.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 daf972a89577f8772602bf2eb38b6a3dd3d922bf5724d45e7f9589b5e830442c libargon2-20190702.tar.gz +sha256 220f8736a89ff51c92ef3d497f413b48e6cf1df3d6278bc909c6308c78e1718e LICENSE diff --git a/package/libargon2/libargon2.mk b/package/libargon2/libargon2.mk new file mode 100644 index 00000000..b3f6e1b2 --- /dev/null +++ b/package/libargon2/libargon2.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# libargon2 +# +################################################################################ + +LIBARGON2_VERSION = 20190702 +LIBARGON2_SITE = $(call github,P-H-C,phc-winner-argon2,$(LIBARGON2_VERSION)) +LIBARGON2_LICENSE = CC0-1.0 or Apache-2.0 +LIBARGON2_LICENSE_FILES = LICENSE +LIBARGON2_INSTALL_STAGING = YES + +LIBARGON2_OPTS = LIBRARY_REL=lib + +# GCC_TARGET_ARCH is not defined for all architectures, but libargon2 +# only uses it to detect if some x86 optimizations can be used, and +# GCC_TARGET_ARCH is defined on x86. +ifneq ($(GCC_TARGET_ARCH),) +LIBARGON2_OPTS += OPTTARGET=$(GCC_TARGET_ARCH) +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),) +LIBARGON2_OPTS += NO_THREADS=1 +endif + +define LIBARGON2_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(LIBARGON2_OPTS) +endef + +define LIBARGON2_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(LIBARGON2_OPTS) DESTDIR=$(STAGING_DIR) install +endef + +define LIBARGON2_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(LIBARGON2_OPTS) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/libargtable2/Config.in b/package/libargtable2/Config.in new file mode 100644 index 00000000..42d067be --- /dev/null +++ b/package/libargtable2/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBARGTABLE2 + bool "libargtable2" + help + A greatly simplified and yet quite robust argument parsing + set of library calls. + + http://argtable.sourceforge.net/ diff --git a/package/libargtable2/libargtable2.hash b/package/libargtable2/libargtable2.hash new file mode 100644 index 00000000..7df3a180 --- /dev/null +++ b/package/libargtable2/libargtable2.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 8f77e8a7ced5301af6e22f47302fdbc3b1ff41f2b83c43c77ae5ca041771ddbf argtable2-13.tar.gz +sha256 d7bf9d064ac3e5840f9dd02422b7eeec4f1fd03f37fadbd043602be5e882304f COPYING diff --git a/package/libargtable2/libargtable2.mk b/package/libargtable2/libargtable2.mk new file mode 100644 index 00000000..d033e28f --- /dev/null +++ b/package/libargtable2/libargtable2.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# libargtable2 +# +################################################################################ + +LIBARGTABLE2_MAJOR_VERSION = 2 +LIBARGTABLE2_MINOR_VERSION = 13 +LIBARGTABLE2_VERSION = $(LIBARGTABLE2_MAJOR_VERSION).$(LIBARGTABLE2_MINOR_VERSION) +LIBARGTABLE2_SOURCE = argtable2-$(LIBARGTABLE2_MINOR_VERSION).tar.gz +LIBARGTABLE2_SITE = http://downloads.sourceforge.net/project/argtable/argtable/argtable-$(LIBARGTABLE2_VERSION) +LIBARGTABLE2_INSTALL_STAGING = YES +LIBARGTABLE2_CONF_OPTS = \ + --disable-example \ + --disable-kernel-module \ + --enable-lib \ + --enable-util +LIBARGTABLE2_LICENSE = LGPL-2.0+ +LIBARGTABLE2_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/libart/0001-art-config-cross.patch b/package/libart/0001-art-config-cross.patch new file mode 100644 index 00000000..a54f26a2 --- /dev/null +++ b/package/libart/0001-art-config-cross.patch @@ -0,0 +1,34 @@ +diff -Nura libart_lgpl-2.3.21.orig/Makefile.am libart_lgpl-2.3.21/Makefile.am +--- libart_lgpl-2.3.21.orig/Makefile.am 2011-02-01 10:07:39.687545397 -0300 ++++ libart_lgpl-2.3.21/Makefile.am 2011-02-01 10:08:48.320545396 -0300 +@@ -5,11 +5,6 @@ + + noinst_SCRIPTS = gen_art_config.sh + +-BUILT_SOURCES = art_config.h +- +-art_config.h: +- ./gen_art_config.sh > art_config.h +- + EXTRA_DIST = \ + libart.def \ + libart-config.in \ +diff -Nura libart_lgpl-2.3.21.orig/art_config.h libart_lgpl-2.3.21/art_config.h +--- libart_lgpl-2.3.21.orig/art_config.h 2011-02-01 10:07:39.688545397 -0300 ++++ libart_lgpl-2.3.21/art_config.h 2011-02-01 10:08:27.315545395 -0300 +@@ -1,9 +1,15 @@ + /* Automatically generated by gen_art_config */ + ++#include ++ + #define ART_SIZEOF_CHAR 1 + #define ART_SIZEOF_SHORT 2 + #define ART_SIZEOF_INT 4 ++#if LONG_MAX == 2147483647L + #define ART_SIZEOF_LONG 4 ++#else ++#define ART_SIZEOF_LONG 8 ++#endif + + typedef unsigned char art_u8; + typedef unsigned short art_u16; diff --git a/package/libart/Config.in b/package/libart/Config.in new file mode 100644 index 00000000..92623358 --- /dev/null +++ b/package/libart/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBART + bool "libart" + help + Libart is a library for high-performance 2D graphics. It + supports a very powerful imaging model, basically the same + as SVG and the Java 2D API. It includes all PostScript + imaging operations, and adds antialiasing and + alpha-transparency. It is also highly tuned for incremental + rendering. It contains data structures and algorithms suited + to rapid, precise computation of Region of Interest, and a + two-phase rendering pipeline optimized for interactive + display. + + http://www.levien.com/libart/ diff --git a/package/libart/libart.hash b/package/libart/libart.hash new file mode 100644 index 00000000..c00272c5 --- /dev/null +++ b/package/libart/libart.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/libart_lgpl/2.3/libart_lgpl-2.3.21.sha256sum +sha256 2a10b1c884bb37c7bd5c5eba59dbd0d28bf68e64a42d7f2083c836f60f8e98fa libart_lgpl-2.3.21.tar.gz + +# Hash for license file: +sha256 d245807f90032872d1438d741ed21e2490e1175dc8aa3afa5ddb6c8e529b58e5 COPYING diff --git a/package/libart/libart.mk b/package/libart/libart.mk new file mode 100644 index 00000000..2c64a357 --- /dev/null +++ b/package/libart/libart.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libart +# +################################################################################ + +LIBART_VERSION_MAJOR = 2.3 +LIBART_VERSION = $(LIBART_VERSION_MAJOR).21 +LIBART_SOURCE = libart_lgpl-$(LIBART_VERSION).tar.gz +LIBART_SITE = https://download.gnome.org/sources/libart_lgpl/$(LIBART_VERSION_MAJOR) +LIBART_AUTORECONF = YES +LIBART_INSTALL_STAGING = YES +LIBART_CONFIG_SCRIPTS = libart2-config +LIBART_LICENSE = LGPL-2.0+ +LIBART_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/libass/Config.in b/package/libass/Config.in new file mode 100644 index 00000000..d7725d5e --- /dev/null +++ b/package/libass/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LIBASS + bool "libass" + depends on BR2_INSTALL_LIBSTDCPP # harfbuzz + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # harfbuzz + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # harfbuzz + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_HARFBUZZ + select BR2_PACKAGE_LIBFRIBIDI + help + libass is a portable subtitle renderer for the ASS/SSA + (Advanced Substation Alpha/Substation Alpha) subtitle format + + https://github.com/libass/libass + +comment "libass needs a toolchain w/ C++, gcc >= 4.9" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/libass/libass.hash b/package/libass/libass.hash new file mode 100644 index 00000000..2f6b554e --- /dev/null +++ b/package/libass/libass.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 eae425da50f0015c21f7b3a9c7262a910f0218af469e22e2931462fed3c50959 libass-0.17.3.tar.xz +sha256 f7e30699d02798351e7f839e3d3bfeb29ce65e44efa7735c225464c4fd7dfe9c COPYING diff --git a/package/libass/libass.mk b/package/libass/libass.mk new file mode 100644 index 00000000..f198ee89 --- /dev/null +++ b/package/libass/libass.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# libass +# +################################################################################ + +LIBASS_VERSION = 0.17.3 +LIBASS_SOURCE = libass-$(LIBASS_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. +LIBASS_SITE = https://github.com/libass/libass/releases/download/$(LIBASS_VERSION) +LIBASS_INSTALL_STAGING = YES +LIBASS_LICENSE = ISC +LIBASS_LICENSE_FILES = COPYING +LIBASS_CPE_ID_VALID = YES +LIBASS_DEPENDENCIES = \ + host-pkgconf \ + freetype \ + harfbuzz \ + libfribidi \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) + +# configure: WARNING: Install nasm for a significantly faster libass build. +# only for Intel archs +ifeq ($(BR2_i386)$(BR2_x86_64),y) +LIBASS_DEPENDENCIES += host-nasm +endif + +ifeq ($(BR2_PACKAGE_FONTCONFIG),y) +LIBASS_DEPENDENCIES += fontconfig +LIBASS_CONF_OPTS += --enable-fontconfig +else +LIBASS_CONF_OPTS += --disable-fontconfig --disable-require-system-font-provider +endif + +ifeq ($(BR2_PACKAGE_LIBUNIBREAK),y) +LIBASS_DEPENDENCIES += libunibreak +LIBASS_CONF_OPTS += --enable-libunibreak +else +LIBASS_CONF_OPTS += --disable-libunibreak +endif + +$(eval $(autotools-package)) diff --git a/package/libassuan/Config.in b/package/libassuan/Config.in new file mode 100644 index 00000000..012e65c4 --- /dev/null +++ b/package/libassuan/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBASSUAN + bool "libassuan" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBGPG_ERROR + help + Libassuan is a small library implementing the so-called + Assuan protocol. + + This protocol is used for IPC between most newer GnuPG + components. Both, server and client side functions are + provided. + + http://www.gnupg.org/related_software/libassuan/ diff --git a/package/libassuan/libassuan.hash b/package/libassuan/libassuan.hash new file mode 100644 index 00000000..6bb5022d --- /dev/null +++ b/package/libassuan/libassuan.hash @@ -0,0 +1,6 @@ +# From https://www.gnupg.org/download/integrity_check.html +sha1 b6ccd955085dac902a09871f94a3d41a7667d0c8 libassuan-2.5.7.tar.bz2 +sha256 0103081ffc27838a2e50479153ca105e873d3d65d8a9593282e9c94c7e6afb76 libassuan-2.5.7.tar.bz2 +# Locally calculated +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING.LIB +sha256 fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7 COPYING diff --git a/package/libassuan/libassuan.mk b/package/libassuan/libassuan.mk new file mode 100644 index 00000000..9cdc34bd --- /dev/null +++ b/package/libassuan/libassuan.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# libassuan +# +################################################################################ + +LIBASSUAN_VERSION = 2.5.7 +LIBASSUAN_SITE = https://gnupg.org/ftp/gcrypt/libassuan +LIBASSUAN_SOURCE = libassuan-$(LIBASSUAN_VERSION).tar.bz2 +LIBASSUAN_LICENSE = LGPL-2.1+ (library), GPL-3.0 (tests, doc) +LIBASSUAN_LICENSE_FILES = COPYING.LIB COPYING +LIBASSUAN_INSTALL_STAGING = YES +LIBASSUAN_DEPENDENCIES = libgpg-error +LIBASSUAN_CONF_OPTS = \ + --with-gpg-error-prefix=$(STAGING_DIR)/usr +LIBASSUAN_CONFIG_SCRIPTS = libassuan-config + +HOST_LIBASSUAN_DEPENDENCIES = host-libgpg-error +HOST_LIBASSUAN_CONF_OPTS = --with-gpg-error-prefix=$(HOST_DIR) + +# Force the path to "gpgrt-config" (from the libgpg-error package) to +# avoid using the one on host, if present. +LIBASSUAN_CONF_ENV += GPGRT_CONFIG=$(STAGING_DIR)/usr/bin/gpgrt-config +HOST_LIBASSUAN_CONF_ENV += GPGRT_CONFIG=$(HOST_DIR)/bin/gpgrt-config + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libatasmart/0001-strpool-cross-flags.patch b/package/libatasmart/0001-strpool-cross-flags.patch new file mode 100644 index 00000000..89b91cca --- /dev/null +++ b/package/libatasmart/0001-strpool-cross-flags.patch @@ -0,0 +1,42 @@ +From 730158700ea7a554c37f24bfbf5f4985f7280f3e Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Wed, 6 Feb 2013 14:07:02 +0100 +Subject: [PATCH] strpool: don't mix up host/build flags when cross compiling + +Submitted upstream as https://bugs.freedesktop.org/show_bug.cgi?id=60364 + +Commit b71035ce89 (build-sys: modernize build system) changed the strpool +(which needs to be built for the build machine) compilation to use +AM_CFLAGS / AM_LDFLAGS rather than CFLAGS / LDFLAGS. This is wrong, as +The AM_ version is used TOGETHER with (the user supplied) CFLAGS/LDFLAGS, +causing strpool to use both CFLAGS (for host) and CCFLAGS_FOR_BUILD (for +build) flags, breaking cross compilation with errors like: + +cc1: error: unrecognized command line option "-mabi=spe" + +Instead overwrite the (user supplied) CFLAGS with the (user supplied) +CFLAGS_FOR_BUILD (and similar for LDFLAGS) like we used to do. + +Signed-off-by: Peter Korsgaard +--- + strpool/Makefile.am | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/strpool/Makefile.am b/strpool/Makefile.am +index b041cea..5b335a5 100644 +--- a/strpool/Makefile.am ++++ b/strpool/Makefile.am +@@ -17,8 +17,8 @@ + # . + + CC = @CC_FOR_BUILD@ +-AM_CFLAGS = @BUILD_CFLAGS@ +-AM_LDFLAGS = @BUILD_LDFLAGS@ ++CFLAGS = @BUILD_CFLAGS@ ++LDFLAGS = @BUILD_LDFLAGS@ + + noinst_PROGRAMS = \ + strpool +-- +1.7.10.4 + diff --git a/package/libatasmart/Config.in b/package/libatasmart/Config.in new file mode 100644 index 00000000..9db3b093 --- /dev/null +++ b/package/libatasmart/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBATASMART + bool "libatasmart" + depends on BR2_PACKAGE_HAS_UDEV # libudev is configure dependency + help + The libatasmart package is a disk reporting library. + It only supports a subset of the ATA S.M.A.R.T. functionality. + + http://0pointer.de/blog/projects/being-smart.html + +comment "libatasmart requires udev to be enabled" + depends on !BR2_PACKAGE_HAS_UDEV diff --git a/package/libatasmart/libatasmart.hash b/package/libatasmart/libatasmart.hash new file mode 100644 index 00000000..edf09041 --- /dev/null +++ b/package/libatasmart/libatasmart.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 61f0ea345f63d28ab2ff0dc352c22271661b66bf09642db3a4049ac9dbdb0f8d libatasmart-0.19.tar.xz +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 LGPL diff --git a/package/libatasmart/libatasmart.mk b/package/libatasmart/libatasmart.mk new file mode 100644 index 00000000..1d4eeaae --- /dev/null +++ b/package/libatasmart/libatasmart.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# libatasmart +# +################################################################################ + +LIBATASMART_VERSION = 0.19 +LIBATASMART_SOURCE = libatasmart-$(LIBATASMART_VERSION).tar.xz +LIBATASMART_SITE = http://0pointer.de/public +LIBATASMART_LICENSE = LGPL-2.1 +LIBATASMART_LICENSE_FILES = LGPL +LIBATASMART_INSTALL_STAGING = YES + +# package doesn't include configure script +LIBATASMART_AUTORECONF = YES + +LIBATASMART_DEPENDENCIES = udev + +$(eval $(autotools-package)) diff --git a/package/libatomic_ops/Config.in b/package/libatomic_ops/Config.in new file mode 100644 index 00000000..8287c652 --- /dev/null +++ b/package/libatomic_ops/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS + bool + default y if BR2_aarch64 || BR2_arm || BR2_armeb + default y if BR2_i386 || BR2_x86_64 + default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + default y if BR2_riscv + default y if BR2_sparc || BR2_sparc64 + # Unsupported for MIPS R6 + depends on !BR2_MIPS_CPU_MIPS32R6 && !BR2_MIPS_CPU_MIPS64R6 + +config BR2_PACKAGE_LIBATOMIC_OPS + bool "libatomic_ops" + depends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS + help + Atomic operations library + + https://github.com/ivmai/libatomic_ops diff --git a/package/libatomic_ops/libatomic_ops.hash b/package/libatomic_ops/libatomic_ops.hash new file mode 100644 index 00000000..1710fd3a --- /dev/null +++ b/package/libatomic_ops/libatomic_ops.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 ad8428a40e01d41bc4ddad3166afa1fc175c9e58d8ef7ddbd7ef3298e32ac37b libatomic_ops-7.8.2.tar.gz +sha256 969294c9324b2d360ae2a08edd5ca6f9cd754cb71b71e56bee15d2f10bb10496 LICENSE +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/libatomic_ops/libatomic_ops.mk b/package/libatomic_ops/libatomic_ops.mk new file mode 100644 index 00000000..555ba678 --- /dev/null +++ b/package/libatomic_ops/libatomic_ops.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# libatomic_ops +# +################################################################################ + +LIBATOMIC_OPS_VERSION = 7.8.2 +LIBATOMIC_OPS_SITE = $(call github,ivmai,libatomic_ops,v$(LIBATOMIC_OPS_VERSION)) +LIBATOMIC_OPS_AUTORECONF = YES + +# From doc/LICENSING.txt: "Our intent is to make it easy to use +# libatomic_ops, in both free and proprietary software. Hence most +# code that we expect to be linked into a client application is +# covered by an MIT-style license. A few library routines are covered +# by the GNU General Public License. These are put into a separate +# library, libatomic_ops_gpl.a." +LIBATOMIC_OPS_LICENSE = MIT (main library) / GPL-2.0+ (gpl extension) +LIBATOMIC_OPS_LICENSE_FILES = COPYING LICENSE +LIBATOMIC_OPS_CPE_ID_VALID = YES + +LIBATOMIC_OPS_INSTALL_STAGING = YES + +ifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y) +LIBATOMIC_OPS_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -DAO_NO_SPARC_V9" +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libavif/Config.in b/package/libavif/Config.in new file mode 100644 index 00000000..a15e9fc7 --- /dev/null +++ b/package/libavif/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBAVIF + bool "libavif" + depends on !BR2_STATIC_LIBS # dav1d, dlfcn.h + depends on BR2_TOOLCHAIN_HAS_THREADS # dav1d, pthread + select BR2_PACKAGE_DAV1D + help + Friendly, portable C implementation of the AV1 Image File + Format. + + https://github.com/AOMediaCodec/libavif + +comment "libavif needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/libavif/libavif.hash b/package/libavif/libavif.hash new file mode 100644 index 00000000..b26e678a --- /dev/null +++ b/package/libavif/libavif.hash @@ -0,0 +1,3 @@ +sha256 914662e16245e062ed73f90112fbb4548241300843a7772d8d441bb6859de45b libavif-1.1.1.tar.gz + +sha256 165abf92cc04b39e80d29cadea7a6a7e8fddf59407d4ad2616507a7ebe8216f9 LICENSE diff --git a/package/libavif/libavif.mk b/package/libavif/libavif.mk new file mode 100644 index 00000000..0c2a8e4d --- /dev/null +++ b/package/libavif/libavif.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# libavif +# +################################################################################ + +LIBAVIF_VERSION = 1.1.1 +LIBAVIF_SITE = $(call github,AOMediaCodec,libavif,v$(LIBAVIF_VERSION)) +LIBAVIF_LICENSE = BSD-2-Clause, IJG, Apache-2.0 +LIBAVIF_LICENSE_FILES = LICENSE +LIBAVIF_CPE_ID_VENDOR = aomedia +LIBAVIF_INSTALL_STAGING = YES + +# Only the dav1d decoder is packaged at the moment. +LIBAVIF_DEPENDENCIES = dav1d +LIBAVIF_CONF_OPTS = \ + -DAVIF_BUILD_APPS=OFF \ + -DAVIF_BUILD_EXAMPLES=OFF \ + -DAVIF_BUILD_MAN_PAGES=OFF \ + -DAVIF_BUILD_TESTS=OFF \ + -DAVIF_CODEC_AOM=OFF \ + -DAVIF_CODEC_DAV1D=SYSTEM \ + -DAVIF_CODEC_LIBGAV1=OFF \ + -DAVIF_CODEC_RAV1E=OFF \ + -DAVIF_CODEC_SVT=OFF \ + -DAVIF_CODEC_AVM=OFF \ + -DAVIF_ENABLE_GTEST=OFF + +ifeq ($(BR2_PACKAGE_LIBYUV),y) +LIBAVIF_DEPENDENCIES += libyuv +LIBAVIF_CONF_OPTS += -DAVIF_LIBYUV=SYSTEM +else +LIBAVIF_CONF_OPTS += -DAVIF_LIBYUV=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/libavl/0001-fix-makefile.patch b/package/libavl/0001-fix-makefile.patch new file mode 100644 index 00000000..6cc96e5f --- /dev/null +++ b/package/libavl/0001-fix-makefile.patch @@ -0,0 +1,49 @@ +makefile: fix compilation and installation + +This was originally taken from: +https://sources.debian.org/data/main/liba/libavl/0.3.5-4/debian/patches/fix-makefile + +Unfortunately, the URL does not end in ".patch", therefore we cannot +use it in the FOO_PATCH variable directly. + +Signed-off-by: Michael Walle + +--- a/GNUmakefile ++++ b/GNUmakefile +@@ -6,7 +6,8 @@ + LDCONFIG ?= /sbin/ldconfig + + # Some suggestions: (-mcpu= generates i386 compatible code) +-CFLAGS ?= -O2 -fomit-frame-pointer -pipe -mcpu=i686 -w ++CFLAGS ?= -O2 -pipe -Wall -Werror ++CFLAGS += -fPIC + #CFLAGS = -O2 -fomit-frame-pointer -pipe -march=i586 -Wall -g + #CFLAGS = -O6 -fomit-frame-pointer -pipe -march=i586 -Wall -ansi -pedantic + #CFLAGS = -O6 -fomit-frame-pointer -pipe -march=i686 -Wall -ansi -pedantic +@@ -34,20 +35,21 @@ + $(CC) $(LDFLAGS) $^ -o $@ $(LIBS) + + $(LIBRARY): avl.o +- $(CC) -nostdlib -shared -Wl,-soname,libavl.so.1 $^ -o $@ -lc ++ $(CC) $(LDFLAGS) -shared -Wl,-soname,libavl.so.1 $^ -o $@ -lc + + clean: + $(RM) *.o $(PROGRAMS) libavl.* + + install: all + $(INSTALL) -d $(DESTDIR)$(libdir) +- $(INSTALL) avl.h $(DESTDIR)$(includedir) +- $(INSTALL) $(LIBRARIES) $(DESTDIR)$(libdir) +- for i in $(LIBRARIES); do\ ++ $(INSTALL) -d $(DESTDIR)$(includedir) ++ $(INSTALL) -m 644 avl.h $(DESTDIR)$(includedir) ++ $(INSTALL) -m 644 $(LIBRARY) $(DESTDIR)$(libdir) ++ for i in $(LIBRARY); do\ + $(LN) -sf $$i $(DESTDIR)$(libdir)/$${i%.*};\ + $(LN) -sf $${i%.*} $(DESTDIR)$(libdir)/$${i%.*.*};\ + done +- -$(LDCONFIG) ++ #-$(LDCONFIG) + + .PHONY: clean install all + .PRECIOUS: %.h %.c diff --git a/package/libavl/Config.in b/package/libavl/Config.in new file mode 100644 index 00000000..20d3c5ef --- /dev/null +++ b/package/libavl/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBAVL + bool "libavl" + depends on !BR2_STATIC_LIBS + help + AVLTree is a small implementation of AVL trees for the C + programming language. + + https://packages.debian.org/buster/libavl1 + + This is not the GNU AVL library by Ben Pfaff. + +comment "libavl needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/libavl/libavl.hash b/package/libavl/libavl.hash new file mode 100644 index 00000000..eb62ae5a --- /dev/null +++ b/package/libavl/libavl.hash @@ -0,0 +1,5 @@ +# From http://snapshot.debian.org/archive/debian/20160621T164030Z/pool/main/liba/libavl/libavl_0.3.5-4.dsc +sha256 4497b9e22cdd61ae2fa893b9d5fd6213dc306726d7c4be08c29e173622dca8a0 libavl_0.3.5.orig.tar.gz + +# Locally computed +sha256 767a9accfe3b110153b567983b98889469dfaae02899a632aeadbb81ad611293 COPYING diff --git a/package/libavl/libavl.mk b/package/libavl/libavl.mk new file mode 100644 index 00000000..75ada327 --- /dev/null +++ b/package/libavl/libavl.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# libavl +# +################################################################################ + +LIBAVL_VERSION = 0.3.5 +LIBAVL_SITE = http://snapshot.debian.org/archive/debian/20050312T000000Z/pool/main/liba/libavl +LIBAVL_SOURCE = libavl_$(LIBAVL_VERSION).orig.tar.gz +LIBAVL_LICENSE = LGPL-2.0+ +LIBAVL_LICENSE_FILES = COPYING +LIBAVL_INSTALL_STAGING = YES + +LIBAVL_CFLAGS = $(TARGET_CFLAGS) -fPIC +HOST_LIBAVL_CFLAGS = $(HOST_CFLAGS) -fPIC + +define LIBAVL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + CFLAGS="$(LIBAVL_CFLAGS)" +endef + +define LIBAVL_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) install \ + prefix=/usr DESTDIR=$(STAGING_DIR) +endef + +define LIBAVL_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) install \ + prefix=/usr DESTDIR=$(TARGET_DIR) +endef + +define HOST_LIBAVL_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) \ + CFLAGS="$(HOST_LIBAVL_CFLAGS)" +endef + +define HOST_LIBAVL_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) install \ + prefix=$(HOST_DIR) +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/libb2/Config.in b/package/libb2/Config.in new file mode 100644 index 00000000..5cb462eb --- /dev/null +++ b/package/libb2/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBB2 + bool "libb2" + help + C library providing BLAKE2b, BLAKE2s, BLAKE2bp, BLAKE2sp. + + https://github.com/BLAKE2/libb2 diff --git a/package/libb2/libb2.hash b/package/libb2/libb2.hash new file mode 100644 index 00000000..6ef24a98 --- /dev/null +++ b/package/libb2/libb2.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 10053dbc2fa342516b780a6bbf6e7b2a2360b8d49c5ac426936bf3df82526732 libb2-0.98.1.tar.gz +sha256 6a1ee543e5282cd9061881edf462e6fdab181f328da71fc2c9a6950a80e94d01 COPYING diff --git a/package/libb2/libb2.mk b/package/libb2/libb2.mk new file mode 100644 index 00000000..761c0599 --- /dev/null +++ b/package/libb2/libb2.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# libb2 +# +################################################################################ + +LIBB2_VERSION = 0.98.1 +LIBB2_SITE = $(call github,BLAKE2,libb2,v$(LIBB2_VERSION)) +LIBB2_LICENSE = CC0-1.0 +LIBB2_LICENSE_FILES = COPYING +LIBB2_INSTALL_STAGING = YES +LIBB2_AUTORECONF = YES +LIBB2_DEPENDENCIES = host-pkgconf +LIBB2_CONF_OPTS = --disable-fat --disable-native +HOST_LIBB2_DEPENDENCIES = host-pkgconf +HOST_LIBB2_CONF_OPTS = --disable-fat --enable-native + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libb64/0001-Integer-overflows.patch b/package/libb64/0001-Integer-overflows.patch new file mode 100644 index 00000000..0e3e08b1 --- /dev/null +++ b/package/libb64/0001-Integer-overflows.patch @@ -0,0 +1,73 @@ +Fix integer overflows. Will not work on compilers with unsigned char +as the default. + +Fetched from: https://sources.debian.org/patches/libb64/1.2-5/ + +Combined "integer overflows.diff" and "off by one.diff" and adapted +for version 1.2.1. + +Signed-off-by: Mikael Eliasson + +diff --git a/src/cdecode.c b/src/cdecode.c +index a6c0a42..45da4e1 100644 +--- a/src/cdecode.c ++++ b/src/cdecode.c +@@ -9,10 +9,11 @@ For details, see http://sourceforge.net/projects/libb64 + + int base64_decode_value(char value_in) + { +- static const char decoding[] = {62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-2,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51}; ++ static const signed char decoding[] = {62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-2,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51}; + static const char decoding_size = sizeof(decoding); ++ if (value_in < 43) return -1; + value_in -= 43; +- if (value_in < 0 || value_in >= decoding_size) return -1; ++ if (value_in >= decoding_size) return -1; + return decoding[(int)value_in]; + } + +@@ -26,7 +27,7 @@ int base64_decode_block(const char* code_in, const int length_in, char* plaintex + { + const char* codechar = code_in; + char* plainchar = plaintext_out; +- char fragment; ++ int fragment; + + *plainchar = state_in->plainchar; + +@@ -42,7 +43,7 @@ int base64_decode_block(const char* code_in, const int length_in, char* plaintex + state_in->plainchar = *plainchar; + return plainchar - plaintext_out; + } +- fragment = (char)base64_decode_value(*codechar++); ++ fragment = base64_decode_value(*codechar++); + } while (fragment < 0); + *plainchar = (fragment & 0x03f) << 2; + case step_b: +@@ -53,7 +54,7 @@ int base64_decode_block(const char* code_in, const int length_in, char* plaintex + state_in->plainchar = *plainchar; + return plainchar - plaintext_out; + } +- fragment = (char)base64_decode_value(*codechar++); ++ fragment = base64_decode_value(*codechar++); + } while (fragment < 0); + *plainchar++ |= (fragment & 0x030) >> 4; + *plainchar = (fragment & 0x00f) << 4; +@@ -65,7 +66,7 @@ int base64_decode_block(const char* code_in, const int length_in, char* plaintex + state_in->plainchar = *plainchar; + return plainchar - plaintext_out; + } +- fragment = (char)base64_decode_value(*codechar++); ++ fragment = base64_decode_value(*codechar++); + } while (fragment < 0); + *plainchar++ |= (fragment & 0x03c) >> 2; + *plainchar = (fragment & 0x003) << 6; +@@ -77,7 +78,7 @@ int base64_decode_block(const char* code_in, const int length_in, char* plaintex + state_in->plainchar = *plainchar; + return plainchar - plaintext_out; + } +- fragment = (char)base64_decode_value(*codechar++); ++ fragment = base64_decode_value(*codechar++); + } while (fragment < 0); + *plainchar++ |= (fragment & 0x03f); + } diff --git a/package/libb64/0002-Initialize-C++-objects.patch b/package/libb64/0002-Initialize-C++-objects.patch new file mode 100644 index 00000000..1556f889 --- /dev/null +++ b/package/libb64/0002-Initialize-C++-objects.patch @@ -0,0 +1,38 @@ +Fixes uninitialized C++ encoder and decoder _state variable bug. + +Fetched from: https://sources.debian.org/patches/libb64/1.2-5/ + +initialize-coder-state.diff patch without modifications. + +Signed-off-by: Mikael Eliasson + +diff --git a/include/b64/decode.h b/include/b64/decode.h +index 12b16ea..d3f7d60 100644 +--- a/include/b64/decode.h ++++ b/include/b64/decode.h +@@ -24,7 +24,9 @@ namespace base64 + + decoder(int buffersize_in = BUFFERSIZE) + : _buffersize(buffersize_in) +- {} ++ { ++ base64_init_decodestate(&_state); ++ } + + int decode(char value_in) + { +diff --git a/include/b64/encode.h b/include/b64/encode.h +index 5d807d9..49aafdc 100644 +--- a/include/b64/encode.h ++++ b/include/b64/encode.h +@@ -24,7 +24,9 @@ namespace base64 + + encoder(int buffersize_in = BUFFERSIZE) + : _buffersize(buffersize_in) +- {} ++ { ++ base64_init_encodestate(&_state); ++ } + + int encode(char value_in) + { diff --git a/package/libb64/Config.in b/package/libb64/Config.in new file mode 100644 index 00000000..405d0b8c --- /dev/null +++ b/package/libb64/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBB64 + bool "libb64" + help + libb64 is a library of ANSI C routines for fast encoding + and decoding of data into and from a base64-encoded format. + C++ wrappers are included, as well as the source code for + standalone encoding and decoding executables. + + Base64 uses a subset of displayable ASCII characters, and is + therefore a useful encoding for storing binary data in a text + file, such as XML, or sending binary data over text-only + email. + + http://libb64.sourceforge.net diff --git a/package/libb64/libb64.hash b/package/libb64/libb64.hash new file mode 100644 index 00000000..0ed8065f --- /dev/null +++ b/package/libb64/libb64.hash @@ -0,0 +1,6 @@ +# sha1 from sourceforge, sha256 locally computed +sha1 04b3e21b8c951d27f02fe91249ca3474554af0b9 libb64-1.2.1.zip +sha256 20106f0ba95cfd9c35a13c71206643e3fb3e46512df3e2efb2fdbf87116314b2 libb64-1.2.1.zip + +# Hash for license file: +sha256 834b7afa1b3c40289a3be775d3625016be1c0d7ea7a4a26c1eb207f53dc961d8 LICENSE diff --git a/package/libb64/libb64.mk b/package/libb64/libb64.mk new file mode 100644 index 00000000..ed6d3cf4 --- /dev/null +++ b/package/libb64/libb64.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# libb64 +# +################################################################################ + +LIBB64_VERSION = 1.2.1 +LIBB64_SOURCE = libb64-$(LIBB64_VERSION).zip +LIBB64_SITE = https://downloads.sourceforge.net/project/libb64/libb64/libb64 +LIBB64_LICENSE = Public Domain +LIBB64_LICENSE_FILES = LICENSE +LIBB64_INSTALL_STAGING = YES +# Only static lib and headers +LIBB64_INSTALL_TARGET = NO + +define LIBB64_EXTRACT_CMDS + unzip $(LIBB64_DL_DIR)/$(LIBB64_SOURCE) -d $(BUILD_DIR) +endef + +define LIBB64_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" CCFLAGS="$(TARGET_CFLAGS)" -C $(@D) all_src +endef + +define LIBB64_INSTALL_STAGING_CMDS + $(INSTALL) -d -m 0755 $(STAGING_DIR)/usr/include/b64 + $(INSTALL) -m 0644 $(@D)/include/b64/* $(STAGING_DIR)/usr/include/b64 + $(INSTALL) -D -m 0755 $(@D)/src/libb64.a $(STAGING_DIR)/usr/lib +endef + +$(eval $(generic-package)) diff --git a/package/libbacktrace/Config.in b/package/libbacktrace/Config.in new file mode 100644 index 00000000..0f940dd5 --- /dev/null +++ b/package/libbacktrace/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBBACKTRACE + bool "libbacktrace" + help + A C library that may be linked into a C/C++ program to + produce symbolic backtraces + + https://github.com/ianlancetaylor/libbacktrace diff --git a/package/libbacktrace/libbacktrace.hash b/package/libbacktrace/libbacktrace.hash new file mode 100644 index 00000000..bb5e00ee --- /dev/null +++ b/package/libbacktrace/libbacktrace.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 13072c499c76866c188beaf3d50f3dddbf2c27ed9fd72b33d1b857acd33b1cb5 libbacktrace-9b7f216e867916594d81e8b6118f092ac3fcf704.tar.gz +sha256 ef8a9b3247488f8901ca60de9b17b745d7bd67e5ec1e622f80d62364572200d8 LICENSE diff --git a/package/libbacktrace/libbacktrace.mk b/package/libbacktrace/libbacktrace.mk new file mode 100644 index 00000000..8f812228 --- /dev/null +++ b/package/libbacktrace/libbacktrace.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# libbacktrace +# +################################################################################ + +LIBBACKTRACE_VERSION = 9b7f216e867916594d81e8b6118f092ac3fcf704 +LIBBACKTRACE_SITE = $(call github,ianlancetaylor,libbacktrace,$(LIBBACKTRACE_VERSION)) +LIBBACKTRACE_LICENSE = BSD-3C-like +LIBBACKTRACE_LICENSE_FILES = LICENSE +LIBBACKTRACE_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/libbdplus/Config.in b/package/libbdplus/Config.in new file mode 100644 index 00000000..2d314d13 --- /dev/null +++ b/package/libbdplus/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBBDPLUS + bool "libbdplus" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBGCRYPT + help + libbdplus is a research project to implement the BD+ System + Specifications. + This research project provides, through an open-source + library, a way to understand how the BD+ works. + NB: this project doesn't offer any key, configuration file or + certificate that could be used to decode encrypted copyrighted + material. + + http://www.videolan.org/developers/libbdplus.html + +comment "libbdplus needs a toolchain w/ threads, dynamic library" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/libbdplus/libbdplus.hash b/package/libbdplus/libbdplus.hash new file mode 100644 index 00000000..2445af6e --- /dev/null +++ b/package/libbdplus/libbdplus.hash @@ -0,0 +1,5 @@ +# From http://download.videolan.org/pub/videolan/libbdplus/0.2.0/libbdplus-0.2.0.tar.bz2.sha512 +sha512 172e4932fb5540fbdb5b86e1d42cfaddf60b81416d2de50c8add83fb7f1bd7c296c975fd84a6ec42566977086dccfe07db5ce696038862bc75c6494c647998d6 libbdplus-0.2.0.tar.bz2 + +# Hash for license file: +sha256 592987e8510228d546540b84a22444bde98e48d03078d3b2eefcd889bec5ce8c COPYING diff --git a/package/libbdplus/libbdplus.mk b/package/libbdplus/libbdplus.mk new file mode 100644 index 00000000..600cb6b5 --- /dev/null +++ b/package/libbdplus/libbdplus.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# libbdplus +# +################################################################################ + +LIBBDPLUS_VERSION = 0.2.0 +LIBBDPLUS_SITE = http://download.videolan.org/pub/videolan/libbdplus/$(LIBBDPLUS_VERSION) +LIBBDPLUS_SOURCE = libbdplus-$(LIBBDPLUS_VERSION).tar.bz2 +LIBBDPLUS_LICENSE = LGPL-2.1+ +LIBBDPLUS_LICENSE_FILES = COPYING +LIBBDPLUS_INSTALL_STAGING = YES +LIBBDPLUS_DEPENDENCIES = libgcrypt +LIBBDPLUS_CONF_OPTS = \ + --disable-werror \ + --disable-extra-warnings \ + --disable-optimizations \ + --disable-examples \ + --disable-debug \ + --with-gnu-ld \ + --with-libgcrypt-prefix=$(STAGING_DIR)/usr \ + --with-gpg-error-prefix=$(STAGING_DIR)/usr + +ifeq ($(BR2_PACKAGE_LIBAACS),y) +LIBBDPLUS_DEPENDENCIES += libaacs +LIBBDPLUS_CONF_OPTS += --with-libaacs +else +LIBBDPLUS_CONF_OPTS += --without-libaacs +endif + +$(eval $(autotools-package)) diff --git a/package/libblockdev/0001-Provide-replacement-function-for-strerror_l.patch b/package/libblockdev/0001-Provide-replacement-function-for-strerror_l.patch new file mode 100644 index 00000000..d073e16a --- /dev/null +++ b/package/libblockdev/0001-Provide-replacement-function-for-strerror_l.patch @@ -0,0 +1,63 @@ +From 01883cc14904e55d90955ad7cd9fc55bc18364ac Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 20 Jan 2024 13:29:28 +0100 +Subject: [PATCH] Provide replacement function for strerror_l() + +strerror_l() is not implemented in some C libraries, such as uClibc, +so let's provide a simple replacement define that falls back on +strerror() in utils.h header and include it where missing. + +Upstream: N/A since it's due uclibc only + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Giulio Benetti +[Giulio: ported to version 3.0 and 3.1] +--- + configure.ac | 2 ++ + src/utils/module.c | 1 + + src/utils/utils.h | 4 ++++ + 3 files changed, 7 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 02b26e3e..67341134 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -120,6 +120,8 @@ AC_CHECK_HEADERS([dlfcn.h string.h unistd.h sys/fcntl.h sys/ioctl.h linux/random + [LIBBLOCKDEV_SOFT_FAILURE([Header file $ac_header not found.])], + []) + ++AC_CHECK_FUNCS([strerror_l]) ++ + AC_ARG_WITH([escrow], + AS_HELP_STRING([--with-escrow], [support escrow @<:@default=yes@:>@]), + [], +diff --git a/src/utils/module.c b/src/utils/module.c +index 6557c3ab..5893f0ac 100644 +--- a/src/utils/module.c ++++ b/src/utils/module.c +@@ -28,6 +28,7 @@ + #include "module.h" + #include "exec.h" + #include "logging.h" ++#include "utils.h" + + + /** +diff --git a/src/utils/utils.h b/src/utils/utils.h +index 801a8b6e..b2bdf0d0 100644 +--- a/src/utils/utils.h ++++ b/src/utils/utils.h +@@ -9,6 +9,10 @@ + #include "dbus.h" + #include "logging.h" + ++#if !defined(HAVE_STRERROR_L) ++#define strerror_l(errnum, locale) strerror(errnum) ++#endif ++ + /** + * SECTION: utils + * @short_description: library providing utility functions used by the blockdev library and its plugins +-- +2.34.1 + diff --git a/package/libblockdev/Config.in b/package/libblockdev/Config.in new file mode 100644 index 00000000..62ecaa1a --- /dev/null +++ b/package/libblockdev/Config.in @@ -0,0 +1,85 @@ +config BR2_PACKAGE_LIBBLOCKDEV + bool "libblockdev" + depends on !BR2_STATIC_LIBS # kmod + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_ENABLE_LOCALE + select BR2_PACKAGE_KMOD + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + libblockdev is a C library supporting GObject introspection + for manipulation of block devices. It has a plugin-based + architecture where each technology (like LVM, Btrfs, MD RAID, + Swap,...) is implemented in a separate plugin, possibly with + multiple implementations. + + https://github.com/storaged-project/libblockdev/ + +if BR2_PACKAGE_LIBBLOCKDEV + +comment "plugins" + +config BR2_PACKAGE_LIBBLOCKDEV_CRYPTO + bool "crypto" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # cryptsetup -> json-c + select BR2_PACKAGE_CRYPTSETUP + select BR2_PACKAGE_KEYUTILS + +config BR2_PACKAGE_LIBBLOCKDEV_FS + bool "filesystem" + depends on BR2_ENABLE_LOCALE # parted + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # parted + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + select BR2_PACKAGE_PARTED + select BR2_PACKAGE_E2FSPROGS + +comment "filesystem plugin needs a toolchain w/ locale, gcc >= 5" + depends on !BR2_ENABLE_LOCALE || !BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +config BR2_PACKAGE_LIBBLOCKDEV_LOOP + bool "loop" + +config BR2_PACKAGE_LIBBLOCKDEV_LVM2 + bool "lvm2" + depends on BR2_ENABLE_LOCALE # parted + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # parted + select BR2_PACKAGE_PARTED + select BR2_PACKAGE_LVM2 + +comment "lvm2 support needs a toolchain w/ locale, gcc >= 5" + depends on !BR2_ENABLE_LOCALE || !BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +config BR2_PACKAGE_LIBBLOCKDEV_MDRAID + bool "mdraid" + select BR2_PACKAGE_LIBBYTESIZE + +config BR2_PACKAGE_LIBBLOCKDEV_NVME + bool "nvme" + depends on BR2_USE_MMU # libnvme + select BR2_PACKAGE_LIBNVME + +config BR2_PACKAGE_LIBBLOCKDEV_PART + bool "part" + depends on BR2_ENABLE_LOCALE # parted + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # parted + select BR2_PACKAGE_PARTED + select BR2_PACKAGE_UTIL_LINUX_LIBFDISK + +comment "part plugin needs a toolchain w/ locale, gcc >= 5" + depends on !BR2_ENABLE_LOCALE || !BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +config BR2_PACKAGE_LIBBLOCKDEV_SWAP + bool "swap" + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + +endif + +comment "libblockdev needs udev /dev management and a toolchain w/ wchar, threads, dynamic library, locale" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_HAS_UDEV || BR2_STATIC_LIBS || \ + !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_ENABLE_LOCALE diff --git a/package/libblockdev/libblockdev.hash b/package/libblockdev/libblockdev.hash new file mode 100644 index 00000000..1438fad7 --- /dev/null +++ b/package/libblockdev/libblockdev.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a5cb33a53ff5969067982704f45399d02555fdb2313ed0c56eac9555397dc2db libblockdev-3.1.1.tar.gz +sha256 97bdc721d875501b6243a456333fdfdb1ab64d31c4da2554de845caf4674b946 LICENSE diff --git a/package/libblockdev/libblockdev.mk b/package/libblockdev/libblockdev.mk new file mode 100644 index 00000000..9ffa15a7 --- /dev/null +++ b/package/libblockdev/libblockdev.mk @@ -0,0 +1,84 @@ +################################################################################ +# +# libblockdev +# +################################################################################ + +LIBBLOCKDEV_VERSION = 3.1.1 +LIBBLOCKDEV_SITE = https://github.com/storaged-project/libblockdev/releases/download/$(LIBBLOCKDEV_VERSION)-1 +LIBBLOCKDEV_LICENSE = LGPL-2.1 +LIBBLOCKDEV_LICENSE_FILES = LICENSE +LIBBLOCKDEV_INSTALL_STAGING = YES +LIBBLOCKDEV_DEPENDENCIES = host-pkgconf libglib2 kmod udev +# 0001-Provide-replacement-function-for-strerror_l.patch +LIBBLOCKDEV_AUTORECONF = YES + +LIBBLOCKDEV_CONF_OPTS = \ + --disable-introspection \ + --with-loop \ + --without-btrfs \ + --without-dm \ + --without-escrow \ + --without-lvm_dbus \ + --without-mpath \ + --without-nvdimm \ + --without-python3 \ + --without-s390 \ + --without-tools + +ifeq ($(BR2_PACKAGE_LIBBLOCKDEV_CRYPTO),y) +LIBBLOCKDEV_DEPENDENCIES += cryptsetup keyutils +LIBBLOCKDEV_CONF_OPTS += --with-crypto +else +LIBBLOCKDEV_CONF_OPTS += --without-crypto +endif + +ifeq ($(BR2_PACKAGE_LIBBLOCKDEV_FS),y) +LIBBLOCKDEV_DEPENDENCIES += e2fsprogs parted util-linux +LIBBLOCKDEV_CONF_OPTS += --with-fs +else +LIBBLOCKDEV_CONF_OPTS += --without-fs +endif + +ifeq ($(BR2_PACKAGE_LIBBLOCKDEV_LOOP),y) +LIBBLOCKDEV_CONF_OPTS += --with-loop +else +LIBBLOCKDEV_CONF_OPTS += --without-loop +endif + +ifeq ($(BR2_PACKAGE_LIBBLOCKDEV_LVM2),y) +LIBBLOCKDEV_DEPENDENCIES += lvm2 parted +LIBBLOCKDEV_CONF_OPTS += --with-lvm +else +LIBBLOCKDEV_CONF_OPTS += --without-lvm +endif + +ifeq ($(BR2_PACKAGE_LIBBLOCKDEV_MDRAID),y) +LIBBLOCKDEV_DEPENDENCIES += libbytesize +LIBBLOCKDEV_CONF_OPTS += --with-mdraid +else +LIBBLOCKDEV_CONF_OPTS += --without-mdraid +endif + +ifeq ($(BR2_PACKAGE_LIBBLOCKDEV_PART),y) +LIBBLOCKDEV_DEPENDENCIES += parted util-linux +LIBBLOCKDEV_CONF_OPTS += --with-part +else +LIBBLOCKDEV_CONF_OPTS += --without-part +endif + +ifeq ($(BR2_PACKAGE_LIBBLOCKDEV_SWAP),y) +LIBBLOCKDEV_DEPENDENCIES += util-linux +LIBBLOCKDEV_CONF_OPTS += --with-swap +else +LIBBLOCKDEV_CONF_OPTS += --without-swap +endif + +ifeq ($(BR2_PACKAGE_LIBBLOCKDEV_NVME),y) +LIBBLOCKDEV_DEPENDENCIES += libnvme +LIBBLOCKDEV_CONF_OPTS += --with-nvme +else +LIBBLOCKDEV_CONF_OPTS += --without-nvme +endif + +$(eval $(autotools-package)) diff --git a/package/libbluray/Config.in b/package/libbluray/Config.in new file mode 100644 index 00000000..b9589356 --- /dev/null +++ b/package/libbluray/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBBLURAY + bool "libbluray" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + libbluray is a client library for accessing bluray disks. + + http://www.videolan.org/developers/libbluray.html + +comment "libbluray needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/libbluray/libbluray.hash b/package/libbluray/libbluray.hash new file mode 100644 index 00000000..a631722b --- /dev/null +++ b/package/libbluray/libbluray.hash @@ -0,0 +1,4 @@ +# From http://download.videolan.org/pub/videolan/libbluray/1.3.4/libbluray-1.3.4.tar.bz2.sha512 +sha512 94dbf3b68d1c23fe4648c153cc2f0c251886fac0a6b6bbe3a77caabaa5322682f712afe4a7b6b16ca3f06744fbc0e1ca872209a32898dcf0ae182055d335aec1 libbluray-1.3.4.tar.bz2 +# Locally computed +sha256 b3aa400aca6d2ba1f0bd03bd98d03d1fe7489a3bbb26969d72016360af8a5c9d COPYING diff --git a/package/libbluray/libbluray.mk b/package/libbluray/libbluray.mk new file mode 100644 index 00000000..54f4caa3 --- /dev/null +++ b/package/libbluray/libbluray.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# libbluray +# +################################################################################ + +LIBBLURAY_VERSION = 1.3.4 +LIBBLURAY_SITE = http://download.videolan.org/pub/videolan/libbluray/$(LIBBLURAY_VERSION) +LIBBLURAY_SOURCE = libbluray-$(LIBBLURAY_VERSION).tar.bz2 +LIBBLURAY_INSTALL_STAGING = YES +LIBBLURAY_LICENSE = LGPL-2.1+ +LIBBLURAY_LICENSE_FILES = COPYING +LIBBLURAY_CPE_ID_VENDOR = videolan +LIBBLURAY_DEPENDENCIES = host-pkgconf + +LIBBLURAY_CONF_OPTS = --disable-bdjava-jar + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +LIBBLURAY_DEPENDENCIES += libiconv +endif + +ifeq ($(BR2_PACKAGE_LIBUDFREAD),y) +LIBBLURAY_DEPENDENCIES += libudfread +else +LIBBLURAY_CONF_OPTS += --without-external-libudfread +endif + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +LIBBLURAY_DEPENDENCIES += freetype +LIBBLURAY_CONF_OPTS += --with-freetype +else +LIBBLURAY_CONF_OPTS += --without-freetype +endif + +ifeq ($(BR2_PACKAGE_FONTCONFIG),y) +LIBBLURAY_DEPENDENCIES += fontconfig +LIBBLURAY_CONF_OPTS += --with-fontconfig +else +LIBBLURAY_CONF_OPTS += --without-fontconfig +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +LIBBLURAY_DEPENDENCIES += libxml2 +LIBBLURAY_CONF_OPTS += --with-libxml2 +else +LIBBLURAY_CONF_OPTS += --without-libxml2 +endif + +$(eval $(autotools-package)) diff --git a/package/libbpf/Config.in b/package/libbpf/Config.in new file mode 100644 index 00000000..a78392cd --- /dev/null +++ b/package/libbpf/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_LIBBPF + bool "libbpf" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_USE_WCHAR # elfutils + depends on !BR2_STATIC_LIBS # elfutils + depends on BR2_TOOLCHAIN_HAS_THREADS # elfutils + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13 + select BR2_PACKAGE_ELFUTILS + select BR2_PACKAGE_ZLIB + help + libbpf library. + A mirror of bpf-next linux tree bpf-next/tools/lib/bpf + directory plus its supporting header files. The version + of the package reflects the version of ABI. + + https://github.com/libbpf/libbpf + +comment "libbpf needs a toolchain w/ wchar, dynamic library, threads, headers >= 4.13" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13 diff --git a/package/libbpf/libbpf.hash b/package/libbpf/libbpf.hash new file mode 100644 index 00000000..75f2b169 --- /dev/null +++ b/package/libbpf/libbpf.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 5da826c968fdb8a2f714701cfef7a4b7078be030cf58b56143b245816301cbb8 libbpf-1.1.0.tar.gz +sha256 847f4addbd56e2d5be20c4ea0845e972672fc07b755fadaae5f7abd35d71e349 LICENSE +sha256 e1638b9a0c68ca90fad3df1d6b4e430804d2fbdc15e58d02cffddfae38953bbf LICENSE.BSD-2-Clause +sha256 0b9a4febcdee6de55872501d5c1a8f5d8b0d1650cd4d5351995ceb22e889f8ca LICENSE.LGPL-2.1 diff --git a/package/libbpf/libbpf.mk b/package/libbpf/libbpf.mk new file mode 100644 index 00000000..ef33542f --- /dev/null +++ b/package/libbpf/libbpf.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# libbpf +# +################################################################################ + +LIBBPF_VERSION = 1.1.0 +LIBBPF_SITE = $(call github,libbpf,libbpf,v$(LIBBPF_VERSION)) +LIBBPF_LICENSE = GPL-2.0, LGPL-2.1, BSD-2-Clause +LIBBPF_LICENSE_FILES = LICENSE LICENSE.BSD-2-Clause LICENSE.LGPL-2.1 +LIBBPF_CPE_ID_VALID = YES +LIBBPF_DEPENDENCIES = host-bison host-flex host-pkgconf elfutils zlib +HOST_LIBBPF_DEPENDENCIES = host-bison host-flex host-pkgconf host-elfutils host-zlib +LIBBPF_INSTALL_STAGING = YES + +define LIBBPF_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) \ + -C $(@D)/src +endef + +# bpf/bpf.h installed by libbpf uses bpf_iter_link_info that was added since +# kernel 5.9, so we need to update some uapi headers in STAGING_DIR if the +# toolchain is build with linux-headers < 5.9. +# Otherwise bpf/bpf.h is broken due to out of date linux/bpf.h installed by the +# toolchain. +# https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=a5cbe05a6673b85bed2a63ffcfea6a96c6410cff +ifeq ($(BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9),) +LIBBPF_UPDATE_UAPI_HEADERS = install_uapi_headers +endif + +define LIBBPF_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) \ + -C $(@D)/src install $(LIBBPF_UPDATE_UAPI_HEADERS) \ + DESTDIR=$(STAGING_DIR) +endef + +define LIBBPF_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) \ + -C $(@D)/src install DESTDIR=$(TARGET_DIR) +endef + +define HOST_LIBBPF_INSTALL_CMDS + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) \ + -C $(@D)/src install install_uapi_headers DESTDIR=$(HOST_DIR) +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/libbroadvoice/Config.in b/package/libbroadvoice/Config.in new file mode 100644 index 00000000..3301ba8f --- /dev/null +++ b/package/libbroadvoice/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBBROADVOICE + bool "libbroadvoice" + # broken with gcc <= 4.8 on arc + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59049 + depends on !BR2_arc || BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + help + broadvoice - a library for the BroadVoice 16 and 32 speech + codecs + + https://www.broadcom.com/support/broadvoice diff --git a/package/libbroadvoice/libbroadvoice.hash b/package/libbroadvoice/libbroadvoice.hash new file mode 100644 index 00000000..1644fb4b --- /dev/null +++ b/package/libbroadvoice/libbroadvoice.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 74b7c9bbf90d2d8d8ec9befe73066f5c0d734498f586f6c870eb24dff2edcad7 libbroadvoice-f65b0f50c8c767229fbf1758370880abc0d78564-git4.tar.gz +sha256 2550586c993ce4a8c23c8b11968ea36192116a896a2504799cc65307d769c094 COPYING diff --git a/package/libbroadvoice/libbroadvoice.mk b/package/libbroadvoice/libbroadvoice.mk new file mode 100644 index 00000000..9c6b4e29 --- /dev/null +++ b/package/libbroadvoice/libbroadvoice.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# libbroadvoice +# +################################################################################ + +LIBBROADVOICE_VERSION = f65b0f50c8c767229fbf1758370880abc0d78564 +# we use the FreeSwitch fork because (quoting README): +# "This library is based on the Broadcom reference code, but has been +# heavily modified so that it builds into a proper library, with a clean +# usable interface, on a range of platforms." +LIBBROADVOICE_SITE = https://freeswitch.org/stash/scm/sd/libbroadvoice.git +LIBBROADVOICE_SITE_METHOD = git +LIBBROADVOICE_LICENSE = LGPL-2.1 +LIBBROADVOICE_LICENSE_FILES = COPYING +LIBBROADVOICE_AUTORECONF = YES +LIBBROADVOICE_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/libbsd/Config.in b/package/libbsd/Config.in new file mode 100644 index 00000000..9f4b30f6 --- /dev/null +++ b/package/libbsd/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS + bool + default y + # libbsd does not support those architectures (see src/local-elf.h) + depends on !BR2_microblaze + depends on !BR2_arc + depends on !BR2_xtensa + +config BR2_PACKAGE_LIBBSD + bool "libbsd" + depends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + select BR2_PACKAGE_LIBMD + help + This library provides useful functions commonly found on BSD + systems, and lacking on others like GNU systems, thus making + it easier to port projects with strong BSD origins, without + needing to embed the same code over and over again on each + project. + + http://libbsd.freedesktop.org/ + +comment "libbsd needs a toolchain w/ dynamic library, threads, wchar" + depends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_USE_WCHAR diff --git a/package/libbsd/libbsd.hash b/package/libbsd/libbsd.hash new file mode 100644 index 00000000..8b1af447 --- /dev/null +++ b/package/libbsd/libbsd.hash @@ -0,0 +1,5 @@ +# From https://archive.hadrons.org/software/libbsd/libbsd-0.11.7.announce +sha256 9baa186059ebbf25c06308e9f991fda31f7183c0f24931826d83aa6abd8a0261 libbsd-0.11.7.tar.xz +sha512 51fda4724f41dd8a4628afd58c21236a7588d9045e337e06eeabf83805a9aaaa53705441ca901ad11f1c65f18e881523bdc97721a7d3d6a5cced27f2450d09a2 libbsd-0.11.7.tar.xz +# Locally computed +sha256 7aab3a07716d31ca72e66c1073ef8a0fa0be0daa5df7c3b2cc0c668589142336 COPYING diff --git a/package/libbsd/libbsd.mk b/package/libbsd/libbsd.mk new file mode 100644 index 00000000..27937c46 --- /dev/null +++ b/package/libbsd/libbsd.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libbsd +# +################################################################################ + +LIBBSD_VERSION = 0.11.7 +LIBBSD_SOURCE = libbsd-$(LIBBSD_VERSION).tar.xz +LIBBSD_SITE = https://libbsd.freedesktop.org/releases +LIBBSD_LICENSE = BSD-2-Clause, BSD-3-Clause, BSD-4-Clause, BSD-5-Clause, \ + MIT, ISC, Beerware +LIBBSD_LICENSE_FILES = COPYING +LIBBSD_CPE_ID_VENDOR = freedesktop +LIBBSD_INSTALL_STAGING = YES +LIBBSD_DEPENDENCIES = libmd + +$(eval $(autotools-package)) diff --git a/package/libbson/Config.in b/package/libbson/Config.in new file mode 100644 index 00000000..95f224e2 --- /dev/null +++ b/package/libbson/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBBSON + bool "libbson" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + libbson is a library providing useful routines related to + building, parsing, and iterating BSON documents. + + http://mongoc.org/libbson/ + +comment "libbson needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libbson/libbson.hash b/package/libbson/libbson.hash new file mode 100644 index 00000000..e4b636d2 --- /dev/null +++ b/package/libbson/libbson.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 6bb51b863a4641d6d7729e4b55df8f4389ed534c34eb3a1cda906a53df11072c libbson-1.9.5.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 COPYING +sha256 8dc5cb3146b026715e6c145621c7732f36c295d825b7b3a03076ad3f238db48e THIRD_PARTY_NOTICES diff --git a/package/libbson/libbson.mk b/package/libbson/libbson.mk new file mode 100644 index 00000000..1ac72028 --- /dev/null +++ b/package/libbson/libbson.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# libbson +# +################################################################################ + +LIBBSON_VERSION = 1.9.5 +LIBBSON_SITE = https://github.com/mongodb/libbson/releases/download/$(LIBBSON_VERSION) +LIBBSON_LICENSE = Apache-2.0, MIT (jsonl), ISC (b64), Zlib (md5) +LIBBSON_LICENSE_FILES = COPYING THIRD_PARTY_NOTICES +LIBBSON_CPE_ID_VENDOR = mongodb +LIBBSON_CONF_OPTS = \ + --disable-tests \ + --disable-examples \ + --disable-man-pages \ + --disable-html-docs + +LIBBSON_INSTALL_STAGING = YES + +# Also has CMake support, but that forces shared+static libs and static +# lib has a different name. +$(eval $(autotools-package)) diff --git a/package/libbytesize/Config.in b/package/libbytesize/Config.in new file mode 100644 index 00000000..6cc550e4 --- /dev/null +++ b/package/libbytesize/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBBYTESIZE + bool "libbytesize" + select BR2_PACKAGE_GMP + select BR2_PACKAGE_MPFR + select BR2_PACKAGE_PCRE2 + help + A tiny library that facilitates the common operations with + sizes in bytes + + https://github.com/storaged-project/libbytesize/ diff --git a/package/libbytesize/libbytesize.hash b/package/libbytesize/libbytesize.hash new file mode 100644 index 00000000..a52a2803 --- /dev/null +++ b/package/libbytesize/libbytesize.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1d1ce3be8ac59fd59511d0794c7327d5cf33f1e83496837b17e19ac49400cad1 libbytesize-2.10.tar.gz +sha256 97bdc721d875501b6243a456333fdfdb1ab64d31c4da2554de845caf4674b946 LICENSE diff --git a/package/libbytesize/libbytesize.mk b/package/libbytesize/libbytesize.mk new file mode 100644 index 00000000..7f56cbcb --- /dev/null +++ b/package/libbytesize/libbytesize.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# libbytesize +# +################################################################################ + +LIBBYTESIZE_VERSION = 2.10 +LIBBYTESIZE_SITE = https://github.com/storaged-project/libbytesize/releases/download/$(LIBBYTESIZE_VERSION) +LIBBYTESIZE_LICENSE = LGPL-2.1+ +LIBBYTESIZE_LICENSE_FILES = LICENSE +LIBBYTESIZE_INSTALL_STAGING = YES + +LIBBYTESIZE_DEPENDENCIES = \ + host-pkgconf \ + host-gettext \ + gmp \ + mpfr \ + pcre2 + +LIBBYTESIZE_CONF_OPTS += \ + --without-python3 \ + --without-tools + +$(eval $(autotools-package)) diff --git a/package/libcamera-apps/Config.in b/package/libcamera-apps/Config.in new file mode 100644 index 00000000..f169d8c5 --- /dev/null +++ b/package/libcamera-apps/Config.in @@ -0,0 +1,33 @@ +config BR2_PACKAGE_LIBCAMERA_APPS + bool "libcamera-apps" + depends on BR2_PACKAGE_LIBCAMERA_ARCH_SUPPORTS # libcamera + depends on BR2_INSTALL_LIBSTDCPP # libcamera/boost + depends on BR2_TOOLCHAIN_HAS_THREADS # libcamera/boost + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # libcamera + depends on !BR2_STATIC_LIBS # gnutls/libcamera + depends on BR2_USE_WCHAR # gnutls/libcamera/boost + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5 + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_PROGRAM_OPTIONS + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBCAMERA + select BR2_PACKAGE_LIBEXIF + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_TIFF + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 && (BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBGL) + select BR2_PACKAGE_LIBDRM if BR2_PACKAGE_XORG7 && (BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBGL) + select BR2_PACKAGE_LIBEPOXY if BR2_PACKAGE_XORG7 && (BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBGL) + select BR2_PACKAGE_QT5BASE_GUI if BR2_PACKAGE_QT5 + select BR2_PACKAGE_QT5BASE_WIDGETS if BR2_PACKAGE_QT5 + help + This is a small suite of libcamera-based apps that aim to copy + the functionality of the existing "raspicam" apps. + + https://github.com/raspberrypi/libcamera-apps + +comment "libcamera-apps needs a toolchain w/ C++, threads, wchar, dynamic library, gcc >= 8, headers >= 5.5" + depends on BR2_PACKAGE_LIBCAMERA_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_8 || BR2_STATIC_LIBS || \ + !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5 diff --git a/package/libcamera-apps/libcamera-apps.hash b/package/libcamera-apps/libcamera-apps.hash new file mode 100644 index 00000000..00b499d2 --- /dev/null +++ b/package/libcamera-apps/libcamera-apps.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 576bcd585f1c8d8bc80e37fa3c8a172e9d1c8406490438cf6d0fbc7ba4996ec1 rpicam-apps-1.5.0.tar.xz +sha256 36dfed86bdef661a0a14ec1a1cc84c771d5a06b6f9b92e9ebb610ba711bd528a license.txt diff --git a/package/libcamera-apps/libcamera-apps.mk b/package/libcamera-apps/libcamera-apps.mk new file mode 100644 index 00000000..17983bb8 --- /dev/null +++ b/package/libcamera-apps/libcamera-apps.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# libcamera-apps +# +################################################################################ + +LIBCAMERA_APPS_VERSION = 1.5.0 +LIBCAMERA_APPS_SOURCE = rpicam-apps-$(LIBCAMERA_APPS_VERSION).tar.xz +LIBCAMERA_APPS_SITE = https://github.com/raspberrypi/rpicam-apps/releases/download/v$(LIBCAMERA_APPS_VERSION) +LIBCAMERA_APPS_LICENSE = BSD-2-Clause +LIBCAMERA_APPS_LICENSE_FILES = license.txt +LIBCAMERA_APPS_DEPENDENCIES = \ + host-pkgconf \ + boost \ + jpeg \ + libcamera \ + libexif \ + libpng \ + tiff + +LIBCAMERA_APPS_CONF_OPTS = \ + -Denable_opencv=disabled \ + -Denable_tflite=disabled + +ifeq ($(BR2_PACKAGE_LIBDRM),y) +LIBCAMERA_APPS_DEPENDENCIES += libdrm +LIBCAMERA_APPS_CONF_OPTS += -Denable_drm=enabled +else +LIBCAMERA_APPS_CONF_OPTS += -Denable_drm=disabled +endif + +ifeq ($(BR2_PACKAGE_FFMPEG)$(BR2_PACKAGE_LIBDRM),yy) +LIBCAMERA_APPS_DEPENDENCIES += ffmpeg libdrm +LIBCAMERA_APPS_CONF_OPTS += -Denable_libav=enabled +else +LIBCAMERA_APPS_CONF_OPTS += -Denable_libav=disabled +endif + +ifeq ($(BR2_PACKAGE_XORG7),y) +LIBCAMERA_APPS_DEPENDENCIES += \ + $(if $(BR2_PACKAGE_LIBEPOXY),libepoxy) \ + $(if $(BR2_PACKAGE_XLIB_LIBX11),xlib_libX11) +LIBCAMERA_APPS_CONF_OPTS += -Denable_egl=enabled +else +LIBCAMERA_APPS_CONF_OPTS += -Denable_egl=disabled +endif + +ifeq ($(BR2_PACKAGE_QT5),y) +LIBCAMERA_APPS_DEPENDENCIES += qt5base +LIBCAMERA_APPS_CONF_OPTS += -Denable_qt=enabled +else +LIBCAMERA_APPS_CONF_OPTS += -Denable_qt=disabled +endif + +$(eval $(meson-package)) diff --git a/package/libcamera/Config.in b/package/libcamera/Config.in new file mode 100644 index 00000000..e84b8d34 --- /dev/null +++ b/package/libcamera/Config.in @@ -0,0 +1,104 @@ +config BR2_PACKAGE_LIBCAMERA_ARCH_SUPPORTS + bool + default y + # Invalid packing size of ControlValue struct on m68k + depends on !BR2_m68k + +menuconfig BR2_PACKAGE_LIBCAMERA + bool "libcamera" + depends on BR2_PACKAGE_LIBCAMERA_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # C++17 + depends on !BR2_STATIC_LIBS # gnutls + depends on BR2_USE_WCHAR # gnutls + select BR2_PACKAGE_GNUTLS + select BR2_PACKAGE_LIBYAML + select BR2_PACKAGE_LIBCAMERA_PIPELINE_UVCVIDEO if !BR2_PACKAGE_LIBCAMERA_HAS_PIPELINE + help + libcamera provides a software stack to support + complex devices that need heavy hardware image + processing operations. + + http://www.libcamera.org/ + +if BR2_PACKAGE_LIBCAMERA + +config BR2_PACKAGE_LIBCAMERA_V4L2 + bool "libcamera v4l2 compatibility layer" + help + libcamera v4l2 compatibility layer + +config BR2_PACKAGE_LIBCAMERA_HAS_PIPELINE + bool + +config BR2_PACKAGE_LIBCAMERA_PIPELINE_IMX8_ISI + bool "imx8-isi pipeline" + depends on BR2_arm || BR2_aarch64 + select BR2_PACKAGE_LIBCAMERA_HAS_PIPELINE + help + Pipeline for i.MX8 SoC ISI capture interface. + +config BR2_PACKAGE_LIBCAMERA_PIPELINE_IPU3 + bool "ipu3 pipeline" + depends on BR2_i386 || BR2_x86_64 + select BR2_PACKAGE_LIBCAMERA_HAS_PIPELINE + help + Pipeline for Intel IPU3. + +config BR2_PACKAGE_LIBCAMERA_PIPELINE_RKISP1 + bool "rkisp1 pipeline" + depends on BR2_arm || BR2_aarch64 + select BR2_PACKAGE_LIBCAMERA_HAS_PIPELINE + help + Pipeline for Rockchip ISP1. + +config BR2_PACKAGE_LIBCAMERA_PIPELINE_RPI_VC4 + bool "rpi/vc4 pipeline" + depends on BR2_arm || BR2_aarch64 + depends on BR2_USE_WCHAR # boost (already enforced for gnutls) + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_LIBCAMERA_HAS_PIPELINE + help + Pipeline for Raspberry Pi devices. + +config BR2_PACKAGE_LIBCAMERA_PIPELINE_SIMPLE + bool "simple pipeline" + select BR2_PACKAGE_LIBCAMERA_HAS_PIPELINE + help + Pipeline for simple pipelines. + +config BR2_PACKAGE_LIBCAMERA_PIPELINE_UVCVIDEO + bool "uvcvideo pipeline" + help + Pipeline for uvcvideo devices. + +config BR2_PACKAGE_LIBCAMERA_PIPELINE_VIMC + bool "vimc pipeline" + select BR2_PACKAGE_LIBCAMERA_HAS_PIPELINE + help + Pipeline for the vimc device. + +config BR2_PACKAGE_LIBCAMERA_COMPLIANCE + bool "lc-compliance test application" + depends on BR2_USE_WCHAR # gtest + depends on BR2_TOOLCHAIN_HAS_THREADS # gtest + depends on BR2_INSTALL_LIBSTDCPP # gtest + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # gtest + depends on BR2_USE_MMU # gtest + select BR2_PACKAGE_GTEST + select BR2_PACKAGE_LIBEVENT + help + lc-compliance test application + +comment "lc-compliance test application needs a toolchain w/ C++, wchar, threads, gcc >= 5" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +endif # BR2_PACKAGE_LIBCAMERA + +comment "libcamera needs a toolchain w/ C++, threads, wchar, dynamic library, gcc >= 8" + depends on BR2_PACKAGE_LIBCAMERA_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_8 || BR2_STATIC_LIBS || !BR2_USE_WCHAR diff --git a/package/libcamera/libcamera.hash b/package/libcamera/libcamera.hash new file mode 100644 index 00000000..1566356b --- /dev/null +++ b/package/libcamera/libcamera.hash @@ -0,0 +1,12 @@ +sha256 1e0a3feff93577a30bcd4e67aa4c1969aecabcd90f78f540a637bb77553c5a7d libcamera-v0.3.0-git4.tar.gz + +# license files +sha256 fd38b2c053c0cce46d9c5ef3545a6e34d157a240ba99c9b8dca5d37a8147da6c LICENSES/BSD-2-Clause.txt +sha256 e11af671c491efac2f94c1d752bea92f4308ca2450c7d11e582e4b48c40e4de1 LICENSES/BSD-3-Clause.txt +sha256 6a573fb2f9082662978cf21fb153096df0a1981deaea7dbc10a11046fe005d9f LICENSES/CC0-1.0.txt +sha256 ec3732087acf8c52429a020d6bba362ff578705bdb53365a21744485ec15b0e6 LICENSES/CC-BY-SA-4.0.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 606aa26338f69ce178f1cbc648b7574aec4b5bbaeb20f4df36ff49010cb8fbbd LICENSES/GPL-2.0-or-later.txt +sha256 1ccf09bf2f598308df4bed9cd8e9657dc5cd0973d2800318f2e241486e2edf3f LICENSES/LGPL-2.1-or-later.txt +sha256 3f9e477523febab58de8b716ccfbcf02e6ef1c8e7728953905e8558637abe2a9 LICENSES/Linux-syscall-note.txt +sha256 8f25018489d6fe0dec34a352314c38dc146247b7de65735790f4398a92afa84b LICENSES/MIT.txt diff --git a/package/libcamera/libcamera.mk b/package/libcamera/libcamera.mk new file mode 100644 index 00000000..dfcd340b --- /dev/null +++ b/package/libcamera/libcamera.mk @@ -0,0 +1,140 @@ +################################################################################ +# +# libcamera +# +################################################################################ + +LIBCAMERA_SITE = https://git.linuxtv.org/libcamera.git +LIBCAMERA_VERSION = v0.3.0 +LIBCAMERA_SITE_METHOD = git +LIBCAMERA_DEPENDENCIES = \ + host-openssl \ + host-pkgconf \ + host-python-jinja2 \ + host-python-ply \ + host-python-pyyaml \ + libyaml \ + gnutls +LIBCAMERA_CONF_OPTS = \ + -Dandroid=disabled \ + -Ddocumentation=disabled \ + -Dtest=false \ + -Dpycamera=disabled \ + -Dwerror=false +LIBCAMERA_INSTALL_STAGING = YES +LIBCAMERA_LICENSE = \ + LGPL-2.1+ (library), \ + GPL-2.0+ (utils), \ + MIT (qcam/assets/feathericons), \ + BSD-2-Clause (raspberrypi), \ + GPL-2.0 with Linux-syscall-note or BSD-3-Clause (linux kernel headers), \ + CC0-1.0 (meson build system), \ + CC-BY-SA-4.0 (doc) +LIBCAMERA_LICENSE_FILES = \ + LICENSES/LGPL-2.1-or-later.txt \ + LICENSES/GPL-2.0-or-later.txt \ + LICENSES/MIT.txt \ + LICENSES/BSD-2-Clause.txt \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/Linux-syscall-note.txt \ + LICENSES/BSD-3-Clause.txt \ + LICENSES/CC0-1.0.txt \ + LICENSES/CC-BY-SA-4.0.txt + +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_7),y) +LIBCAMERA_CXXFLAGS = -faligned-new +endif + +ifeq ($(BR2_PACKAGE_LIBCAMERA_V4L2),y) +LIBCAMERA_CONF_OPTS += -Dv4l2=true +else +LIBCAMERA_CONF_OPTS += -Dv4l2=false +endif + +LIBCAMERA_PIPELINES-$(BR2_PACKAGE_LIBCAMERA_PIPELINE_IMX8_ISI) += imx8-isi +LIBCAMERA_PIPELINES-$(BR2_PACKAGE_LIBCAMERA_PIPELINE_IPU3) += ipu3 +LIBCAMERA_PIPELINES-$(BR2_PACKAGE_LIBCAMERA_PIPELINE_RKISP1) += rkisp1 +ifeq ($(BR2_PACKAGE_LIBCAMERA_PIPELINE_RPI_VC4),y) +LIBCAMERA_PIPELINES-y += rpi/vc4 +LIBCAMERA_DEPENDENCIES += boost +endif +LIBCAMERA_PIPELINES-$(BR2_PACKAGE_LIBCAMERA_PIPELINE_SIMPLE) += simple +LIBCAMERA_PIPELINES-$(BR2_PACKAGE_LIBCAMERA_PIPELINE_UVCVIDEO) += uvcvideo +LIBCAMERA_PIPELINES-$(BR2_PACKAGE_LIBCAMERA_PIPELINE_VIMC) += vimc + +LIBCAMERA_CONF_OPTS += -Dpipelines=$(subst $(space),$(comma),$(LIBCAMERA_PIPELINES-y)) + +ifeq ($(BR2_PACKAGE_LIBCAMERA_COMPLIANCE),y) +LIBCAMERA_DEPENDENCIES += gtest libevent +LIBCAMERA_CONF_OPTS += -Dlc-compliance=enabled +else +LIBCAMERA_CONF_OPTS += -Dlc-compliance=disabled +endif + +# gstreamer-video-1.0, gstreamer-allocators-1.0 +ifeq ($(BR2_PACKAGE_GSTREAMER1)$(BR2_PACKAGE_GST1_PLUGINS_BASE),yy) +LIBCAMERA_CONF_OPTS += -Dgstreamer=enabled +LIBCAMERA_DEPENDENCIES += gstreamer1 gst1-plugins-base +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_WIDGETS),y) +LIBCAMERA_CONF_OPTS += -Dqcam=enabled +LIBCAMERA_DEPENDENCIES += qt5base +ifeq ($(BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS),y) +LIBCAMERA_DEPENDENCIES += qt5tools +endif +else +LIBCAMERA_CONF_OPTS += -Dqcam=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBEVENT),y) +LIBCAMERA_CONF_OPTS += -Dcam=enabled +LIBCAMERA_DEPENDENCIES += libevent +else +LIBCAMERA_CONF_OPTS += -Dcam=disabled +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +LIBCAMERA_DEPENDENCIES += tiff +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +LIBCAMERA_CONF_OPTS += -Dudev=enabled +LIBCAMERA_DEPENDENCIES += udev +else +LIBCAMERA_CONF_OPTS += -Dudev=disabled +endif + +ifeq ($(BR2_PACKAGE_LTTNG_LIBUST),y) +LIBCAMERA_CONF_OPTS += -Dtracing=enabled +LIBCAMERA_DEPENDENCIES += lttng-libust +else +LIBCAMERA_CONF_OPTS += -Dtracing=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBEXECINFO),y) +LIBCAMERA_DEPENDENCIES += libexecinfo +LIBCAMERA_LDFLAGS = $(TARGET_LDFLAGS) -lexecinfo +endif + +# Open-Source IPA shlibs need to be signed in order to be runnable within the +# same process, otherwise they are deemed Closed-Source and run in another +# process and communicate over IPC. +# Buildroot sanitizes RPATH in a post build process. meson gets rid of rpath +# while installing so we don't need to do it manually here. +# Buildroot may strip symbols, so we need to do the same before signing +# otherwise the signature won't match the shlib on the rootfs. Since meson +# install target is signing the shlibs, we need to strip them before. +LIBCAMERA_STRIP_FIND_CMD = \ + find $(@D)/build/src/ipa \ + $(if $(call qstrip,$(BR2_STRIP_EXCLUDE_FILES)), \ + -not \( $(call findfileclauses,$(call qstrip,$(BR2_STRIP_EXCLUDE_FILES))) \) ) \ + -type f -name 'ipa_*.so' -print0 + +define LIBCAMERA_BUILD_STRIP_IPA_SO + $(LIBCAMERA_STRIP_FIND_CMD) | xargs --no-run-if-empty -0 $(STRIPCMD) +endef + +LIBCAMERA_POST_BUILD_HOOKS += LIBCAMERA_BUILD_STRIP_IPA_SO + +$(eval $(meson-package)) diff --git a/package/libcanberra/Config.in b/package/libcanberra/Config.in new file mode 100644 index 00000000..b2408800 --- /dev/null +++ b/package/libcanberra/Config.in @@ -0,0 +1,21 @@ +comment "libcanberra needs a toolchain w/ wchar, threads, dynamic library" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS + +config BR2_PACKAGE_LIBCANBERRA + bool "libcanberra" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + # We need at least one audio backend + select BR2_PACKAGE_ALSA_LIB if \ + !BR2_PACKAGE_PULSEAUDIO && \ + !BR2_PACKAGE_GSTREAMER1 + # We need libltdl + select BR2_PACKAGE_LIBTOOL + select BR2_PACKAGE_LIBVORBIS + help + libcanberra defines a simple abstract interface for playing + event sounds. + + http://0pointer.de/lennart/projects/libcanberra/ diff --git a/package/libcanberra/libcanberra.hash b/package/libcanberra/libcanberra.hash new file mode 100644 index 00000000..8dc90ccd --- /dev/null +++ b/package/libcanberra/libcanberra.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c2b671e67e0c288a69fc33dc1b6f1b534d07882c2aceed37004bf48c601afa72 libcanberra-0.30.tar.xz +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 LGPL diff --git a/package/libcanberra/libcanberra.mk b/package/libcanberra/libcanberra.mk new file mode 100644 index 00000000..2505e58e --- /dev/null +++ b/package/libcanberra/libcanberra.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# libcanberra +# +################################################################################ + +LIBCANBERRA_VERSION = 0.30 +LIBCANBERRA_SOURCE = libcanberra-$(LIBCANBERRA_VERSION).tar.xz +LIBCANBERRA_SITE = http://0pointer.de/lennart/projects/libcanberra +LIBCANBERRA_LICENSE = LGPL-2.1+ +LIBCANBERRA_LICENSE_FILES = LGPL +LIBCANBERRA_INSTALL_STAGING = YES + +LIBCANBERRA_DEPENDENCIES = host-pkgconf libtool libvorbis +LIBCANBERRA_CONF_OPTS = --disable-oss --disable-null --disable-tdb --disable-lynx + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +LIBCANBERRA_CONF_OPTS += --enable-udev +LIBCANBERRA_DEPENDENCIES += udev +else +LIBCANBERRA_CONF_OPTS += --disable-udev +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +LIBCANBERRA_CONF_OPTS += --enable-alsa +LIBCANBERRA_DEPENDENCIES += alsa-lib +else +LIBCANBERRA_CONF_OPTS += --disable-alsa +endif + +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +LIBCANBERRA_CONF_OPTS += --enable-pulse +LIBCANBERRA_DEPENDENCIES += pulseaudio +else +LIBCANBERRA_CONF_OPTS += --disable-pulse +endif + +ifeq ($(BR2_PACKAGE_GSTREAMER1),y) +LIBCANBERRA_CONF_OPTS += --enable-gstreamer +LIBCANBERRA_DEPENDENCIES += gstreamer1 +else +LIBCANBERRA_CONF_OPTS += --disable-gstreamer +endif + +ifeq ($(BR2_PACKAGE_LIBGTK2),y) +LIBCANBERRA_CONF_OPTS += --enable-gtk +LIBCANBERRA_DEPENDENCIES += libgtk2 +else +LIBCANBERRA_CONF_OPTS += --disable-gtk +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) +LIBCANBERRA_CONF_OPTS += --enable-gtk3 +LIBCANBERRA_DEPENDENCIES += libgtk3 +else +LIBCANBERRA_CONF_OPTS += --disable-gtk3 +endif + +$(eval $(autotools-package)) diff --git a/package/libcap-ng/Config.in b/package/libcap-ng/Config.in new file mode 100644 index 00000000..bee66b33 --- /dev/null +++ b/package/libcap-ng/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBCAP_NG + bool "libcap-ng" + help + The libcap-ng library is intended to make programming with + posix capabilities much easier than the traditional libcap + library. It includes utilities that can analyse all currently + running applications and print out any capabilities and + whether or not it has an open ended bounding set. + + https://people.redhat.com/sgrubb/libcap-ng/ diff --git a/package/libcap-ng/libcap-ng.hash b/package/libcap-ng/libcap-ng.hash new file mode 100644 index 00000000..022dd1f8 --- /dev/null +++ b/package/libcap-ng/libcap-ng.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 3ba5294d1cbdfa98afaacfbc00b6af9ed2b83e8a21817185dfd844cc8c7ac6ff libcap-ng-0.8.5.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING +sha256 f18a0811fa0e220ccbc42f661545e77f0388631e209585ed582a1c693029c6aa COPYING.LIB diff --git a/package/libcap-ng/libcap-ng.mk b/package/libcap-ng/libcap-ng.mk new file mode 100644 index 00000000..9c8012b2 --- /dev/null +++ b/package/libcap-ng/libcap-ng.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# libcap-ng +# +################################################################################ + +LIBCAP_NG_VERSION = 0.8.5 +LIBCAP_NG_SITE = https://people.redhat.com/sgrubb/libcap-ng +LIBCAP_NG_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (library) +LIBCAP_NG_LICENSE_FILES = COPYING COPYING.LIB +LIBCAP_NG_CPE_ID_VALID = YES +LIBCAP_NG_INSTALL_STAGING = YES + +LIBCAP_NG_CONF_ENV = ac_cv_prog_swig_found=no +LIBCAP_NG_CONF_OPTS = --without-python3 + +HOST_LIBCAP_NG_CONF_ENV = ac_cv_prog_swig_found=no +HOST_LIBCAP_NG_CONF_OPTS = --without-python3 + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libcap/Config.in b/package/libcap/Config.in new file mode 100644 index 00000000..e1971b7b --- /dev/null +++ b/package/libcap/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_LIBCAP + bool "libcap" + depends on BR2_USE_MMU # fork() + help + This library implements the user-space interfaces to the + POSIX 1003.1e capabilities available in Linux kernels. These + capabilities are a partitioning of the all powerful root + privilege into a set of distinct privileges. + + https://sites.google.com/site/fullycapable/ + +if BR2_PACKAGE_LIBCAP + +config BR2_PACKAGE_LIBCAP_TOOLS + bool "install tools" + help + Install setcap, getcap, getpcaps and capsh tools. + + For these tools to run properly, you should enable, in your + kernel configuration, extended file attributes/security labels + support for the file system type used on target system (e.g. + CONFIG_EXT2_FS_XATTR and CONFIG_EXT2_FS_SECURITY for ext2). + +endif diff --git a/package/libcap/libcap.hash b/package/libcap/libcap.hash new file mode 100644 index 00000000..dd9bc75a --- /dev/null +++ b/package/libcap/libcap.hash @@ -0,0 +1,5 @@ +# https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/sha256sums.asc +sha256 23a6ef8aadaf1e3e875f633bb2d116cfef8952dba7bc7c569b13458e1952b30f libcap-2.70.tar.xz + +# Hash for license file: +sha256 68467e731f4744bd6e0bb69e8df9c3a994e09cd6b203d0c41327ac6d079c581d License diff --git a/package/libcap/libcap.mk b/package/libcap/libcap.mk new file mode 100644 index 00000000..a1b2636c --- /dev/null +++ b/package/libcap/libcap.mk @@ -0,0 +1,72 @@ +################################################################################ +# +# libcap +# +################################################################################ + +LIBCAP_VERSION = 2.70 +LIBCAP_SITE = https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2 +LIBCAP_SOURCE = libcap-$(LIBCAP_VERSION).tar.xz +LIBCAP_LICENSE = GPL-2.0 or BSD-3-Clause +LIBCAP_LICENSE_FILES = License +LIBCAP_CPE_ID_VALID = YES + +LIBCAP_DEPENDENCIES = host-gperf +LIBCAP_INSTALL_STAGING = YES + +HOST_LIBCAP_DEPENDENCIES = host-gperf + +LIBCAP_MAKE_FLAGS = \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + BUILD_CC="$(HOSTCC)" \ + BUILD_CFLAGS="$(HOST_CFLAGS)" \ + lib=lib \ + prefix=/usr \ + SHARED=$(if $(BR2_STATIC_LIBS),,yes) \ + PTHREADS=$(if $(BR2_TOOLCHAIN_HAS_THREADS),yes,) + +LIBCAP_MAKE_DIRS = libcap + +ifeq ($(BR2_PACKAGE_LIBCAP_TOOLS),y) +LIBCAP_MAKE_DIRS += progs +endif + +define LIBCAP_BUILD_CMDS + $(foreach d,$(LIBCAP_MAKE_DIRS), \ + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/$(d) \ + $(LIBCAP_MAKE_FLAGS) all + ) +endef + +define LIBCAP_INSTALL_STAGING_CMDS + $(foreach d,$(LIBCAP_MAKE_DIRS), \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/$(d) $(LIBCAP_MAKE_FLAGS) \ + DESTDIR=$(STAGING_DIR) install + ) +endef + +define LIBCAP_INSTALL_TARGET_CMDS + $(foreach d,$(LIBCAP_MAKE_DIRS), \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/$(d) $(LIBCAP_MAKE_FLAGS) \ + DESTDIR=$(TARGET_DIR) install + ) +endef + +HOST_LIBCAP_MAKE_FLAGS = \ + DYNAMIC=yes \ + GOLANG=no \ + lib=lib \ + prefix=$(HOST_DIR) \ + RAISE_SETFCAP=no + +define HOST_LIBCAP_BUILD_CMDS + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(HOST_LIBCAP_MAKE_FLAGS) +endef + +define HOST_LIBCAP_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_LIBCAP_MAKE_FLAGS) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/libcdaudio/0001-libcdaudio-enable-autoreconf.patch b/package/libcdaudio/0001-libcdaudio-enable-autoreconf.patch new file mode 100644 index 00000000..ab2296c0 --- /dev/null +++ b/package/libcdaudio/0001-libcdaudio-enable-autoreconf.patch @@ -0,0 +1,43 @@ +From 9c2873b1d9292bcf43c862b6777d41c40521424c Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Sun, 13 Jan 2019 22:27:42 +0100 +Subject: [PATCH] libcdaudio: enable autoreconf + +Fixes the following two autoreconf errors (by simple removing of the +two offending lines): + + configure.ac:20: error: automatic de-ANSI-fication support has been removed + + Makefile.am:2: error: automatic de-ANSI-fication support has been removed + +Signed-off-by: Peter Seiderer +--- + Makefile.am | 1 - + configure.ac | 1 - + 2 files changed, 2 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index f639dd8..a32cfe6 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -1,5 +1,4 @@ + ## Process this file with automake to produce Makefile.in +-AUTOMAKE_OPTIONS = ansi2knr + SUBDIRS = src + + bin_SCRIPTS = libcdaudio-config +diff --git a/configure.ac b/configure.ac +index bbdd42d..6699ceb 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -17,7 +17,6 @@ AM_CONFIG_HEADER(config.h) + AC_PROG_AWK + AC_PROG_CC + AC_PROG_CPP +-AM_C_PROTOTYPES + AM_PROG_CC_STDC + AC_PROG_INSTALL + AC_PROG_LN_S +-- +2.20.1 + diff --git a/package/libcdaudio/Config.in b/package/libcdaudio/Config.in new file mode 100644 index 00000000..3eca607f --- /dev/null +++ b/package/libcdaudio/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBCDAUDIO + bool "libcdaudio" + # binutils assertion failure + depends on !BR2_nios2 + help + libcdaudio is a library designed to provide functions to + control operation of a CD-ROM when playing audio CDs. It + also contains functions for CDDB and CD Index lookup. + + http://libcdaudio.sourceforge.net/ diff --git a/package/libcdaudio/libcdaudio.hash b/package/libcdaudio/libcdaudio.hash new file mode 100644 index 00000000..67df7c5e --- /dev/null +++ b/package/libcdaudio/libcdaudio.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 5fdaf9af5ac4f75c0215d000b82b128fd054a582f81cc4f039a1e7fe69335ebb libcdaudio-0.99.12p2.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/libcdaudio/libcdaudio.mk b/package/libcdaudio/libcdaudio.mk new file mode 100644 index 00000000..651289d7 --- /dev/null +++ b/package/libcdaudio/libcdaudio.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libcdaudio +# +################################################################################ + +LIBCDAUDIO_VERSION = 0.99.12p2 +LIBCDAUDIO_SITE = http://downloads.sourceforge.net/project/libcdaudio/libcdaudio/$(LIBCDAUDIO_VERSION) +LIBCDAUDIO_INSTALL_STAGING = YES +LIBCDAUDIO_CONFIG_SCRIPTS = libcdaudio-config +LIBCDAUDIO_LICENSE = GPL-2.0+ +LIBCDAUDIO_LICENSE_FILES = COPYING + +# fix configure failure when the toolchain doesn't have C++ support +LIBCDAUDIO_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/libcddb/Config.in b/package/libcddb/Config.in new file mode 100644 index 00000000..f2bb8278 --- /dev/null +++ b/package/libcddb/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBCDDB + bool "libcddb" + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Libcddb is a C library to access data on a CDDB server + (freedb.org). It allows you to: + * search the database for possible CD matches; + * retrieve detailed information about a specific CD; + * submit new CD entries to the database. + + http://libcddb.sourceforge.net/index.html + +if BR2_PACKAGE_LIBCDDB + +config BR2_PACKAGE_LIBCDDB_INSTALL_CDDB_QUERY + bool "install cddb_query" + help + cddb_query is an optionnal libcddb test program. + +endif diff --git a/package/libcddb/libcddb.hash b/package/libcddb/libcddb.hash new file mode 100644 index 00000000..b2da48fc --- /dev/null +++ b/package/libcddb/libcddb.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 35ce0ee1741ea38def304ddfe84a958901413aa829698357f0bee5bb8f0a223b libcddb-1.3.2.tar.bz2 +sha256 7a4436f9ec37603356791c87de3bc444989befd2682d29efb3d97604e04c1852 COPYING diff --git a/package/libcddb/libcddb.mk b/package/libcddb/libcddb.mk new file mode 100644 index 00000000..952a8799 --- /dev/null +++ b/package/libcddb/libcddb.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# libcddb +# +################################################################################ + +LIBCDDB_VERSION = 1.3.2 +LIBCDDB_SOURCE = libcddb-$(LIBCDDB_VERSION).tar.bz2 +LIBCDDB_SITE = http://downloads.sourceforge.net/libcddb +LIBCDDB_LICENSE = LGPL-2.0+ +LIBCDDB_LICENSE_FILES = COPYING +LIBCDDB_INSTALL_STAGING = YES + +ifeq ($(BR2_ENABLE_LOCALE),) +LIBCDDB_DEPENDENCIES += libiconv +endif + +define LIBCDDB_REMOVE_CDDB_QUERY + rm -f $(TARGET_DIR)/usr/bin/cddb_query +endef + +ifeq ($(BR2_PACKAGE_LIBCDDB_INSTALL_CDDB_QUERY),) +LIBCDDB_POST_INSTALL_TARGET_HOOKS += LIBCDDB_REMOVE_CDDB_QUERY +endif + +$(eval $(autotools-package)) diff --git a/package/libcdio-paranoia/Config.in b/package/libcdio-paranoia/Config.in new file mode 100644 index 00000000..28c9ac9c --- /dev/null +++ b/package/libcdio-paranoia/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBCDIO_PARANOIA + bool "libcdio-paranoia" + depends on BR2_USE_MMU # libcdio + select BR2_PACKAGE_LIBCDIO + help + CD paranoia on top of libcdio + + http://www.gnu.org/software/libcdio/ diff --git a/package/libcdio-paranoia/libcdio-paranoia.hash b/package/libcdio-paranoia/libcdio-paranoia.hash new file mode 100644 index 00000000..f1f64f6c --- /dev/null +++ b/package/libcdio-paranoia/libcdio-paranoia.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 33b1cf305ccfbfd03b43936975615000ce538b119989c4bec469577570b60e8a libcdio-paranoia-10.2+2.0.1.tar.bz2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/libcdio-paranoia/libcdio-paranoia.mk b/package/libcdio-paranoia/libcdio-paranoia.mk new file mode 100644 index 00000000..944bb14d --- /dev/null +++ b/package/libcdio-paranoia/libcdio-paranoia.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# libcdio-paranoia +# +################################################################################ + +LIBCDIO_PARANOIA_VERSION = 10.2+2.0.1 +LIBCDIO_PARANOIA_SOURCE = libcdio-paranoia-$(LIBCDIO_PARANOIA_VERSION).tar.bz2 +LIBCDIO_PARANOIA_SITE = $(BR2_GNU_MIRROR)/libcdio +LIBCDIO_PARANOIA_LICENSE = GPL-3.0+ +LIBCDIO_PARANOIA_LICENSE_FILES = COPYING +LIBCDIO_PARANOIA_INSTALL_STAGING = YES +LIBCDIO_PARANOIA_DEPENDENCIES = host-pkgconf libcdio +LIBCDIO_PARANOIA_CONF_OPTS = --disable-example-progs + +ifeq ($(BR2_INSTALL_LIBSTDCPP),) +LIBCDIO_PARANOIA_CONF_OPTS += --disable-cxx +endif + +$(eval $(autotools-package)) diff --git a/package/libcdio/Config.in b/package/libcdio/Config.in new file mode 100644 index 00000000..fdc001ec --- /dev/null +++ b/package/libcdio/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBCDIO + bool "libcdio" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + The GNU Compact Disc Input and Control library. + + http://www.gnu.org/software/libcdio/ diff --git a/package/libcdio/libcdio.hash b/package/libcdio/libcdio.hash new file mode 100644 index 00000000..1b157992 --- /dev/null +++ b/package/libcdio/libcdio.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking signature +sha256 8550e9589dbd594bfac93b81ecf129b1dc9d0d51e90f9696f1b2f9b2af32712b libcdio-2.1.0.tar.bz2 + +# Hash for license file: +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/libcdio/libcdio.mk b/package/libcdio/libcdio.mk new file mode 100644 index 00000000..df26d9a7 --- /dev/null +++ b/package/libcdio/libcdio.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# libcdio +# +################################################################################ + +LIBCDIO_VERSION = 2.1.0 +LIBCDIO_SOURCE = libcdio-$(LIBCDIO_VERSION).tar.bz2 +LIBCDIO_SITE = $(BR2_GNU_MIRROR)/libcdio +LIBCDIO_INSTALL_STAGING = YES +LIBCDIO_LICENSE = GPL-3.0+ +LIBCDIO_LICENSE_FILES = COPYING +LIBCDIO_CPE_ID_VENDOR = gnu +LIBCDIO_CONF_OPTS = --disable-example-progs --disable-cddb + +ifeq ($(BR2_ENABLE_LOCALE),) +LIBCDIO_DEPENDENCIES += libiconv +endif + +ifeq ($(BR2_INSTALL_LIBSTDCPP),) +LIBCDIO_CONF_OPTS += --disable-cxx +endif + +ifeq ($(BR2_PACKAGE_NCURSES),y) +LIBCDIO_DEPENDENCIES += ncurses +else +LIBCDIO_CONF_OPTS += --without-cdda-player +endif + +$(eval $(autotools-package)) diff --git a/package/libcec/0001-cecloader-h-fix-null-return.patch b/package/libcec/0001-cecloader-h-fix-null-return.patch new file mode 100644 index 00000000..424e41c0 --- /dev/null +++ b/package/libcec/0001-cecloader-h-fix-null-return.patch @@ -0,0 +1,37 @@ +From 452b2049b2ee3e73968c603e5524b2d349ac0c3e Mon Sep 17 00:00:00 2001 +From: psykose +Date: Sat, 9 Apr 2022 17:59:11 +0000 +Subject: [PATCH] cecloader.h: fix null return + +returning NULL is invalid for a return type of bool when NULL is defined +as `nullptr` instead of 0L + +[Retrieved from: +https://github.com/Pulse-Eight/libcec/pull/599/commits/452b2049b2ee3e73968c603e5524b2d349ac0c3e] +Signed-off-by: Fabrice Fontaine +--- + include/cecloader.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/include/cecloader.h b/include/cecloader.h +index be76468f..550f598e 100644 +--- a/include/cecloader.h ++++ b/include/cecloader.h +@@ -172,7 +172,7 @@ bool LibCecBootloader(const char *strLib = NULL) + if (!g_libCEC) + { + std::cout << dlerror() << std::endl; +- return NULL; ++ return false; + } + } + +@@ -181,7 +181,7 @@ bool LibCecBootloader(const char *strLib = NULL) + if (!LibCecBootloader) + { + std::cout << "cannot find CECStartBootloader" << std::endl; +- return NULL; ++ return false; + } + + bool bReturn = LibCecBootloader(); diff --git a/package/libcec/Config.in b/package/libcec/Config.in new file mode 100644 index 00000000..2dddc536 --- /dev/null +++ b/package/libcec/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_LIBCEC + bool "libcec" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11 + select BR2_PACKAGE_LIBPLATFORM + help + libcec allows you in combination with the right hardware to + control your home theater devices with your TV remote + control utilizing existing HDMI cabling. + + http://libcec.pulse-eight.com + +comment "libcec needs a toolchain w/ C++, wchar, threads, dynamic library, gcc >= 4.7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_USE_WCHAR || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || \ + BR2_STATIC_LIBS diff --git a/package/libcec/libcec.hash b/package/libcec/libcec.hash new file mode 100644 index 00000000..3e5a4430 --- /dev/null +++ b/package/libcec/libcec.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 090696d7a4fb772d7acebbb06f91ab92e025531c7c91824046b9e4e71ecb3377 libcec-6.0.2.tar.gz +sha256 0137261d24ce001fc5237aacddd267533e0f150ac23cf21acffea599f7358f7a COPYING diff --git a/package/libcec/libcec.mk b/package/libcec/libcec.mk new file mode 100644 index 00000000..33e0463e --- /dev/null +++ b/package/libcec/libcec.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# libcec +# +################################################################################ + +LIBCEC_VERSION = 6.0.2 +LIBCEC_SITE = $(call github,Pulse-Eight,libcec,libcec-$(LIBCEC_VERSION)) +LIBCEC_LICENSE = GPL-2.0+ +LIBCEC_LICENSE_FILES = COPYING + +LIBCEC_INSTALL_STAGING = YES +LIBCEC_DEPENDENCIES = host-pkgconf libplatform + +ifeq ($(BR2_PACKAGE_LOCKDEV),y) +LIBCEC_DEPENDENCIES += lockdev +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +LIBCEC_DEPENDENCIES += udev +endif + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +LIBCEC_DEPENDENCIES += host-swig python3 +endif + +ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) +LIBCEC_DEPENDENCIES += rpi-userland +LIBCEC_CONF_OPTS += \ + -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) -lvcos -lvchiq_arm" \ + -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) \ + -I$(STAGING_DIR)/usr/include/interface/vmcs_host/linux \ + -I$(STAGING_DIR)/usr/include/interface/vcos/pthreads" +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) +LIBCEC_DEPENDENCIES += xlib_libXrandr +endif + +# Disable information about how libCEC is compiled. +LIBCEC_CONF_OPTS += -DHAVE_GIT_BIN="" \ + -DHAVE_WHOAMI_BIN="" \ + -DHAVE_HOSTNAME_BIN="" \ + -DHAVE_UNAME_BIN="" + +$(eval $(cmake-package)) diff --git a/package/libcgi/0001-CMakeLists.txt-honour-BUILD_TESTING.patch b/package/libcgi/0001-CMakeLists.txt-honour-BUILD_TESTING.patch new file mode 100644 index 00000000..3ec674ae --- /dev/null +++ b/package/libcgi/0001-CMakeLists.txt-honour-BUILD_TESTING.patch @@ -0,0 +1,44 @@ +From 15ec267520efbe45193eb1df5361a4ab56164294 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 8 May 2022 17:54:42 +0200 +Subject: [PATCH] CMakeLists.txt: honour BUILD_TESTING + +Allow the user to disable tests through the standard BUILD_TESTING +option: https://cmake.org/cmake/help/latest/module/CTest.html + +Signed-off-by: Fabrice Fontaine +[Retrieved from: +https://github.com/rafaelsteil/libcgi/commit/15ec267520efbe45193eb1df5361a4ab56164294] +--- + CMakeLists.txt | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index cbf0d97..e3329a1 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -29,15 +29,21 @@ option(BUILD_SHARED_LIBS + "Global flag to cause add_library to create shared libraries if on." + ON + ) ++option(BUILD_TESTING ++ "Build tests." ++ ON ++) + + # subdirectories + add_subdirectory("include/libcgi") + add_subdirectory("src") + + # test +-enable_testing() +-include(CTest) +-add_subdirectory("test") ++if(BUILD_TESTING) ++ enable_testing() ++ include(CTest) ++ add_subdirectory("test") ++endif(BUILD_TESTING) + + # cmake package stuff + configure_package_config_file(${PROJECT_NAME_LC}-config.cmake.in diff --git a/package/libcgi/Config.in b/package/libcgi/Config.in new file mode 100644 index 00000000..33369079 --- /dev/null +++ b/package/libcgi/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBCGI + bool "libcgi" + help + LibCGI is a library written from scratch to easily make + CGI applications in C. + + There are a lot of functions like string manipulation, + session and cookie support, GET and POST methods manipulation + etc..., to help you to quickly write powerful CGI programs. + + https://github.com/rafaelsteil/libcgi/ diff --git a/package/libcgi/libcgi.hash b/package/libcgi/libcgi.hash new file mode 100644 index 00000000..5e8845ed --- /dev/null +++ b/package/libcgi/libcgi.hash @@ -0,0 +1,8 @@ +# From https://github.com/rafaelsteil/libcgi/releases/download/v1.3.0/libcgi-1.3.0.tar.gz.md5 +md5 6efdc968bdf986832b7e220d1b914e57 libcgi-1.3.0.tar.gz +# From https://github.com/rafaelsteil/libcgi/releases/download/v1.3.0/libcgi-1.3.0.tar.gz.sha256 +sha256 d932f380b1a5dbfbddffaa76fac71bf505a9585d441c9ae86bfbf76033d9d8df libcgi-1.3.0.tar.gz + +# Hash for license file: +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSES/LGPL-2.1.txt +sha256 f32c31e26ec840753a8cd47cd2681e48be4cee853212d16a4b1d85ac4d677669 LICENSES/MIT.txt diff --git a/package/libcgi/libcgi.mk b/package/libcgi/libcgi.mk new file mode 100644 index 00000000..22163310 --- /dev/null +++ b/package/libcgi/libcgi.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libcgi +# +################################################################################ + +LIBCGI_VERSION = 1.3.0 +LIBCGI_SITE = https://github.com/rafaelsteil/libcgi/releases/download/v$(LIBCGI_VERSION) + +LIBCGI_INSTALL_STAGING = YES +LIBCGI_LICENSE = LGPL-2.1+, MIT (base64.c) +LIBCGI_LICENSE_FILES = LICENSES/LGPL-2.1.txt LICENSES/MIT.txt + +$(eval $(cmake-package)) diff --git a/package/libcgicc/0001-disable-documentation-option.patch b/package/libcgicc/0001-disable-documentation-option.patch new file mode 100644 index 00000000..a7b04a83 --- /dev/null +++ b/package/libcgicc/0001-disable-documentation-option.patch @@ -0,0 +1,50 @@ +Index: cgicc-3.2.9/Makefile.am +=================================================================== +--- cgicc-3.2.9.orig/Makefile.am 2010-02-25 16:34:06.000000000 +0100 ++++ cgicc-3.2.9/Makefile.am 2010-02-25 16:34:14.000000000 +0100 +@@ -8,9 +8,15 @@ + DEMO = + endif + ++if DOC ++DOCDIR = doc ++else ++DOC = ++endif ++ + ACLOCAL_AMFLAGS= + +-SUBDIRS = cgicc doc support $(DEMO) ++SUBDIRS = cgicc $(DOCDIR) support $(DEMO) + + CLEANFILES = *~ + +Index: cgicc-3.2.9/configure.ac +=================================================================== +--- cgicc-3.2.9.orig/configure.ac 2010-02-25 16:34:06.000000000 +0100 ++++ cgicc-3.2.9/configure.ac 2010-02-25 16:45:46.000000000 +0100 +@@ -17,9 +17,23 @@ + AC_PROG_CXX + AC_PROG_INSTALL + AC_PROG_LIBTOOL +-AC_CHECK_PROG(DOXYGEN, doxygen, doxygen, /bin/echo) + + ++AC_ARG_ENABLE(doc, ++ [ --enable-doc build doc [[default=yes]]], ++ [case "${enableval}" in ++ yes) cgicc_doc=yes ;; ++ no) cgicc_doc=no ;; ++ *) AC_MSG_ERROR(bad value ${enableval} for --enable-doc) ;; ++ esac], cgicc_doc=yes) ++ ++if test "$cgicc_doc" = yes; then ++ AC_CHECK_PROG(DOXYGEN, doxygen, doxygen) ++ if test -z "$DOXYGEN" ; then ++ AC_MSG_ERROR([Doxygen is required to build the documentation]) ++ fi ++fi ++AM_CONDITIONAL(DOC, test "$cgicc_doc" = yes) + + dnl Determine host system type + diff --git a/package/libcgicc/Config.in b/package/libcgicc/Config.in new file mode 100644 index 00000000..e1f6904b --- /dev/null +++ b/package/libcgicc/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBCGICC + bool "libcgicc" + depends on BR2_INSTALL_LIBSTDCPP + help + GNU cgicc is a C++ class library that greatly simplifies + the creation of CGI applications for the World Wide Web. + + http://www.cgicc.com + +comment "libcgicc needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/libcgicc/libcgicc.hash b/package/libcgicc/libcgicc.hash new file mode 100644 index 00000000..699a0dbf --- /dev/null +++ b/package/libcgicc/libcgicc.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +sha256 0f91c5ce8adf406ad35a46152ffb2b9c8d6079604b796d81f48b66d1f068ad4e cgicc-3.2.20.tar.gz + +# Hash for license files: +sha256 a2e480f5e8afd7c587a3c0ac2ed3b73ed4b10fa3a553dea26e7b661c7cedda72 COPYING.LIB +sha256 0fd15977dc962abf3eced509b1cf5356f9784939742d67a635671141023a11da COPYING.DOC diff --git a/package/libcgicc/libcgicc.mk b/package/libcgicc/libcgicc.mk new file mode 100644 index 00000000..3d651aef --- /dev/null +++ b/package/libcgicc/libcgicc.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# libcgicc +# +################################################################################ + +LIBCGICC_VERSION = 3.2.20 +LIBCGICC_SITE = $(BR2_GNU_MIRROR)/cgicc +LIBCGICC_SOURCE = cgicc-$(LIBCGICC_VERSION).tar.gz +LIBCGICC_LICENSE = LGPL-3.0+ (library), GFDL-1.2+ (docs) +LIBCGICC_LICENSE_FILES = COPYING.LIB COPYING.DOC +LIBCGICC_INSTALL_STAGING = YES +LIBCGICC_AUTORECONF = YES +LIBCGICC_CONFIG_SCRIPTS = cgicc-config +LIBCGICC_CONF_OPTS = \ + --disable-demos \ + --disable-doc + +$(eval $(autotools-package)) diff --git a/package/libcgroup/Config.in b/package/libcgroup/Config.in new file mode 100644 index 00000000..4f9ec074 --- /dev/null +++ b/package/libcgroup/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_LIBCGROUP + bool "libcgroup" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_MUSL_FTS if !BR2_TOOLCHAIN_USES_GLIBC + help + libcgroup is a library that abstracts the control + group file system in Linux. + + http://libcg.sourceforge.net/ + +if BR2_PACKAGE_LIBCGROUP + +config BR2_PACKAGE_LIBCGROUP_TOOLS + bool "install tools" + help + Include a set of command-line tools for managing cgroups. + +endif + +comment "libcgroup needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libcgroup/libcgroup.hash b/package/libcgroup/libcgroup.hash new file mode 100644 index 00000000..65b98d94 --- /dev/null +++ b/package/libcgroup/libcgroup.hash @@ -0,0 +1,5 @@ +# From https://github.com/libcgroup/libcgroup/releases/download/v2.0.3/libcgroup-2.0.3.tar.gz.sha256 +sha256 b29b5704de3d0fadf199fe4e17eeeaecba7f0dd1b85569c96eec37c7672e3026 libcgroup-2.0.3.tar.gz + +# Hash for license file +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING diff --git a/package/libcgroup/libcgroup.mk b/package/libcgroup/libcgroup.mk new file mode 100644 index 00000000..28f572d3 --- /dev/null +++ b/package/libcgroup/libcgroup.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# libcgroup +# +################################################################################ + +LIBCGROUP_VERSION = 2.0.3 +LIBCGROUP_SITE = https://github.com/libcgroup/libcgroup/releases/download/v$(LIBCGROUP_VERSION) +LIBCGROUP_LICENSE = LGPL-2.1 +LIBCGROUP_LICENSE_FILES = COPYING +LIBCGROUP_CPE_ID_VALID = YES +LIBCGROUP_DEPENDENCIES = host-bison host-flex +LIBCGROUP_INSTALL_STAGING = YES + +LIBCGROUP_CONF_OPTS = \ + --disable-daemon \ + --disable-initscript-install + +ifeq ($(BR2_PACKAGE_LIBCGROUP_TOOLS),y) +LIBCGROUP_CONF_OPTS += --enable-tools +else +LIBCGROUP_CONF_OPTS += --disable-tools +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +LIBCGROUP_DEPENDENCIES += linux-pam +LIBCGROUP_CONF_OPTS += --enable-pam +else +LIBCGROUP_CONF_OPTS += --disable-pam +endif + +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),) +LIBCGROUP_DEPENDENCIES += musl-fts +endif + +$(eval $(autotools-package)) diff --git a/package/libcli/0001-Swap-calloc-parameters-for-Wcalloc-transposed-args.patch b/package/libcli/0001-Swap-calloc-parameters-for-Wcalloc-transposed-args.patch new file mode 100644 index 00000000..909de2b7 --- /dev/null +++ b/package/libcli/0001-Swap-calloc-parameters-for-Wcalloc-transposed-args.patch @@ -0,0 +1,96 @@ +From 42e798e3f8b4a092be26bc91c9f87e5593f0d302 Mon Sep 17 00:00:00 2001 +From: Gwyn Ciesla +Date: Wed, 31 Jan 2024 14:40:42 -0600 +Subject: [PATCH] Swap calloc parameters for -Wcalloc-transposed-args + +Upstream: https://github.com/dparrish/libcli/pull/93 +Signed-off-by: Fabrice Fontaine +--- + libcli.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/libcli.c b/libcli.c +index 88c23d8..32ceeae 100644 +--- a/libcli.c ++++ b/libcli.c +@@ -427,7 +427,7 @@ struct cli_command *cli_register_command(struct cli_def *cli, struct cli_command + struct cli_command *c; + + if (!command) return NULL; +- if (!(c = calloc(sizeof(struct cli_command), 1))) return NULL; ++ if (!(c = calloc(1, sizeof(struct cli_command)))) return NULL; + c->command_type = CLI_REGULAR_COMMAND; + c->callback = callback; + c->next = NULL; +@@ -597,7 +597,7 @@ struct cli_def *cli_init() { + struct cli_def *cli; + struct cli_command *c; + +- if (!(cli = calloc(sizeof(struct cli_def), 1))) return 0; ++ if (!(cli = calloc(1, sizeof(struct cli_def)))) return 0; + + cli->buf_size = 1024; + if (!(cli->buffer = calloc(cli->buf_size, 1))) { +@@ -1957,7 +1957,7 @@ int cli_match_filter_init(struct cli_def *cli, int argc, char **argv, struct cli + char *search_flags = cli_get_optarg_value(cli, "search_flags", NULL); + + filt->filter = cli_match_filter; +- filt->data = state = calloc(sizeof(struct cli_match_filter_state), 1); ++ filt->data = state = calloc(1, sizeof(struct cli_match_filter_state)); + if (!state) return CLI_ERROR; + + if (!strcmp(cli->pipeline->current_stage->words[0], "include")) { +@@ -2050,7 +2050,7 @@ int cli_range_filter_init(struct cli_def *cli, int argc, char **argv, struct cli + // from the command line processing and continue + + filt->filter = cli_range_filter; +- filt->data = state = calloc(sizeof(struct cli_range_filter_state), 1); ++ filt->data = state = calloc(1, sizeof(struct cli_range_filter_state)); + if (state) { + state->from = from; + state->to = to; +@@ -2087,7 +2087,7 @@ int cli_count_filter_init(struct cli_def *cli, int argc, UNUSED(char **argv), st + } + + filt->filter = cli_count_filter; +- if (!(filt->data = calloc(sizeof(int), 1))) return CLI_ERROR; ++ if (!(filt->data = calloc(1, sizeof(int)))) return CLI_ERROR; + + return CLI_OK; + } +@@ -2144,7 +2144,7 @@ struct cli_command *cli_register_filter(struct cli_def *cli, const char *command + struct cli_command *c; + + if (!command) return NULL; +- if (!(c = calloc(sizeof(struct cli_command), 1))) return NULL; ++ if (!(c = calloc(1, sizeof(struct cli_command)))) return NULL; + + c->command_type = CLI_FILTER_COMMAND; + c->init = init; +@@ -2256,7 +2256,7 @@ struct cli_optarg *cli_register_optarg(struct cli_command *cmd, const char *name + goto CLEANUP; + } + } +- if (!(optarg = calloc(sizeof(struct cli_optarg), 1))) goto CLEANUP; ++ if (!(optarg = calloc(1, sizeof(struct cli_optarg)))) goto CLEANUP; + if (!(optarg->name = strdup(name))) goto CLEANUP; + if (help && !(optarg->help = strdup(help))) goto CLEANUP; + +@@ -2532,7 +2532,7 @@ struct cli_command *cli_int_register_buildmode_command(struct cli_def *cli, stru + struct cli_command *c; + + if (!command) return NULL; +- if (!(c = calloc(sizeof(struct cli_command), 1))) return NULL; ++ if (!(c = calloc(1, sizeof(struct cli_command)))) return NULL; + + c->flags = flags; + c->callback = callback; +@@ -3095,7 +3095,7 @@ int cli_int_execute_pipeline(struct cli_def *cli, struct cli_pipeline *pipeline) + struct cli_pipeline_stage *stage = &pipeline->stage[stage_num]; + pipeline->current_stage = stage; + cli->found_optargs = stage->found_optargs; +- *filt = calloc(sizeof(struct cli_filter), 1); ++ *filt = calloc(1, sizeof(struct cli_filter)); + if (*filt) { + if ((rc = stage->command->init(cli, stage->num_words, stage->words, *filt) != CLI_OK)) { + break; diff --git a/package/libcli/Config.in b/package/libcli/Config.in new file mode 100644 index 00000000..a5a8872d --- /dev/null +++ b/package/libcli/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBCLI + bool "libcli" + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + Libcli provides a shared library for including a Cisco-like + command-line interface into other software. It's a telnet + interface which supports command-line editing, history, + authentication and callbacks for a user-definable function + tree. + + https://github.com/dparrish/libcli diff --git a/package/libcli/libcli.hash b/package/libcli/libcli.hash new file mode 100644 index 00000000..a1a5459e --- /dev/null +++ b/package/libcli/libcli.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 179f78592f73492c22cc1b544b6f8cb0f6630a2f670430c118b8e084e6562e74 libcli-1.10.7.tar.gz +sha256 376b54d4c5f4aa99421823fa4da93e3ab73096fce2400e89858632aa7da24a14 COPYING diff --git a/package/libcli/libcli.mk b/package/libcli/libcli.mk new file mode 100644 index 00000000..f3f68f78 --- /dev/null +++ b/package/libcli/libcli.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# libcli +# +################################################################################ + +LIBCLI_VERSION = 1.10.7 +LIBCLI_SITE = $(call github,dparrish,libcli,V$(LIBCLI_VERSION)) +LIBCLI_LICENSE = LGPL-2.1 +LIBCLI_LICENSE_FILES = COPYING +LIBCLI_INSTALL_STAGING = YES + +# We will pass optimisation level via CFLAGS so remove libcli default +LIBCLI_MAKE_ARGS += OPTIM= + +# We can't run the test harness +LIBCLI_MAKE_ARGS += TESTS= + +# Disable the static library for shared only build +ifeq ($(BR2_SHARED_LIBS),y) +LIBCLI_MAKE_ARGS += STATIC_LIB= +endif + +# Disable the shared library for static only build +ifeq ($(BR2_STATIC_LIBS),y) +LIBCLI_MAKE_ARGS += DYNAMIC_LIB= +endif + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +LIBCLI_DEPENDENCIES += libxcrypt +endif + +define LIBCLI_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + $(LIBCLI_MAKE_ARGS) +endef + +define LIBCLI_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + $(LIBCLI_MAKE_ARGS) DESTDIR=$(STAGING_DIR) PREFIX=/usr install +endef + +define LIBCLI_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + $(LIBCLI_MAKE_ARGS) DESTDIR=$(TARGET_DIR) PREFIX=/usr install +endef + +$(eval $(generic-package)) diff --git a/package/libcoap/0001-coap_oscore-c-Fix-parsing-OSCORE-configuration-information.patch b/package/libcoap/0001-coap_oscore-c-Fix-parsing-OSCORE-configuration-information.patch new file mode 100644 index 00000000..e75250d6 --- /dev/null +++ b/package/libcoap/0001-coap_oscore-c-Fix-parsing-OSCORE-configuration-information.patch @@ -0,0 +1,38 @@ +From 2b28d8b0e9607e71a145345b4fe49517e052b7d9 Mon Sep 17 00:00:00 2001 +From: Jon Shallow +Date: Thu, 25 Jan 2024 18:03:17 +0000 +Subject: [PATCH] coap_oscore.c: Fix parsing OSCORE configuration information + +Upstream: https://github.com/obgm/libcoap/commit/2b28d8b0e9607e71a145345b4fe49517e052b7d9 +Signed-off-by: Fabrice Fontaine +--- + src/coap_oscore.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/src/coap_oscore.c b/src/coap_oscore.c +index 83f785c92..e0fb22947 100644 +--- a/src/coap_oscore.c ++++ b/src/coap_oscore.c +@@ -1678,11 +1678,12 @@ get_split_entry(const char **start, + oscore_value_t *value) { + const char *begin = *start; + const char *end; ++ const char *kend; + const char *split; + size_t i; + + retry: +- end = memchr(begin, '\n', size); ++ kend = end = memchr(begin, '\n', size); + if (end == NULL) + return 0; + +@@ -1693,7 +1694,7 @@ get_split_entry(const char **start, + + if (begin[0] == '#' || (end - begin) == 0) { + /* Skip comment / blank line */ +- size -= end - begin + 1; ++ size -= kend - begin + 1; + begin = *start; + goto retry; + } diff --git a/package/libcoap/Config.in b/package/libcoap/Config.in new file mode 100644 index 00000000..950aee52 --- /dev/null +++ b/package/libcoap/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBCOAP + bool "libcoap" + select BR2_PACKAGE_LIBOPENSSL_ENABLE_PSK if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENGINES if BR2_PACKAGE_LIBOPENSSL + help + libcoap is a C implementation of a lightweight + application-protocol for devices that are constrained their + resources such as computing power, RF range, memory, bandwith, + or network packet sizes. This protocol, CoAP, is standardized + by the IETF as RFC 7252. For further information related to + CoAP, see . + + https://github.com/obgm/libcoap diff --git a/package/libcoap/libcoap.hash b/package/libcoap/libcoap.hash new file mode 100644 index 00000000..20abb94f --- /dev/null +++ b/package/libcoap/libcoap.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 ae61a48c21f7b40e1442c9e1da9aab9e6f2cf0deccb02f3fed4de232a0b0522e libcoap-4.3.4.tar.gz +sha256 09dd86a017bad210527085008cbf706609c58210897b69845af14099577e7eb7 COPYING +sha256 bdd94ddd8e75010aebd045ead1c951110788003395c708811d6960248acb3891 LICENSE diff --git a/package/libcoap/libcoap.mk b/package/libcoap/libcoap.mk new file mode 100644 index 00000000..29161142 --- /dev/null +++ b/package/libcoap/libcoap.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# libcoap +# +################################################################################ + +LIBCOAP_VERSION = 4.3.4 +LIBCOAP_SITE = $(call github,obgm,libcoap,v$(LIBCOAP_VERSION)) +LIBCOAP_INSTALL_STAGING = YES +LIBCOAP_LICENSE = BSD-2-Clause +LIBCOAP_LICENSE_FILES = COPYING LICENSE +LIBCOAP_CPE_ID_VENDOR = libcoap +LIBCOAP_DEPENDENCIES = host-pkgconf +LIBCOAP_CONF_OPTS = \ + --disable-examples --disable-examples-source --without-tinydtls +LIBCOAP_AUTORECONF = YES + +# 0001-coap_oscore-c-Fix-parsing-OSCORE-configuration-information.patch +LIBCOAP_IGNORE_CVES += CVE-2024-0962 + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +LIBCOAP_DEPENDENCIES += gnutls +LIBCOAP_CONF_OPTS += \ + --enable-dtls --with-gnutls --without-mbedtls --without-openssl +else ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) +LIBCOAP_DEPENDENCIES += openssl +LIBCOAP_CONF_OPTS += \ + --enable-dtls --without-gnutls --without-mbedtls --with-openssl +else ifeq ($(BR2_PACKAGE_MBEDTLS),y) +LIBCOAP_DEPENDENCIES += mbedtls +LIBCOAP_CONF_OPTS += \ + --enable-dtls --without-gnutls --with-mbedtls --without-openssl +else +LIBCOAP_CONF_OPTS += --disable-dtls +endif + +$(eval $(autotools-package)) diff --git a/package/libcodec2/Config.in b/package/libcodec2/Config.in new file mode 100644 index 00000000..9a9eb865 --- /dev/null +++ b/package/libcodec2/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBCODEC2 + bool "libcodec2" + help + Codec2 is an open source low bit rate speech codec designed + for communications quality speech between 700 and 3200 bit/s. + + http://rowetel.com/codec2.html + +if BR2_PACKAGE_LIBCODEC2 + +config BR2_PACKAGE_LIBCODEC2_EXAMPLES + bool "libcodec2_examples" + help + Install Codec2 examples. + +endif diff --git a/package/libcodec2/libcodec2.hash b/package/libcodec2/libcodec2.hash new file mode 100644 index 00000000..828efa3e --- /dev/null +++ b/package/libcodec2/libcodec2.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 cbccae52b2c2ecc5d2757e407da567eb681241ff8dadce39d779a7219dbcf449 libcodec2-1.2.0.tar.gz +sha256 9ebb6f82b7380a62ac74c5f0322c88e6744dedf2ebe1f54d6f088282b39844bf COPYING diff --git a/package/libcodec2/libcodec2.mk b/package/libcodec2/libcodec2.mk new file mode 100644 index 00000000..5fc190ae --- /dev/null +++ b/package/libcodec2/libcodec2.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# libcodec2 +# +################################################################################ + +LIBCODEC2_VERSION = 1.2.0 +LIBCODEC2_SITE = $(call github,drowe67,codec2,$(LIBCODEC2_VERSION)) +LIBCODEC2_LICENSE = LGPL-2.1 +LIBCODEC2_LICENSE_FILES = COPYING +LIBCODEC2_INSTALL_STAGING = YES +LIBCODEC2_SUPPORTS_IN_SOURCE_BUILD = NO +LIBCODEC2_CONF_OPTS = -DUNITTEST=OFF + +ifeq ($(BR2_PACKAGE_LIBCODEC2_EXAMPLES),y) +LIBCODEC2_CONF_OPTS += -DINSTALL_EXAMPLES=ON +endif + +$(eval $(cmake-package)) diff --git a/package/libcofi/Config.in b/package/libcofi/Config.in new file mode 100644 index 00000000..b9d22d43 --- /dev/null +++ b/package/libcofi/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBCOFI + bool "libcofi" + depends on BR2_arm + # builds a shared library + depends on !BR2_STATIC_LIBS + help + A replacement for memcpy and memset functionality for the + Raspberry Pi with the intention of gaining greater + performance. + + https://github.com/simonjhall/copies-and-fills + +comment "libcofi needs a toolchain w/ dynamic library" + depends on BR2_arm + depends on BR2_STATIC_LIBS diff --git a/package/libcofi/libcofi.hash b/package/libcofi/libcofi.hash new file mode 100644 index 00000000..c5f6bb44 --- /dev/null +++ b/package/libcofi/libcofi.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 72ec89c19267612b316ec9c5835c07212b8f0a377c5b4c20b6e46e69a6e4a5e5 libcofi-7313fbe12b0593034d0a1b606bf33c7cf4ababce.tar.gz +sha256 1a8203e5d11f0841235cf30265b1ffb19c0d9c4a6d2889554cbeccaf9f09b327 README.md diff --git a/package/libcofi/libcofi.mk b/package/libcofi/libcofi.mk new file mode 100644 index 00000000..e611db6b --- /dev/null +++ b/package/libcofi/libcofi.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# libcofi +# +################################################################################ + +LIBCOFI_VERSION = 7313fbe12b0593034d0a1b606bf33c7cf4ababce +LIBCOFI_SITE = $(call github,simonjhall,copies-and-fills,$(LIBCOFI_VERSION)) +LIBCOFI_LICENSE = LGPL-2.1 +LIBCOFI_LICENSE_FILES = README.md + +define LIBCOFI_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define LIBCOFI_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/libcofi_rpi.so $(TARGET_DIR)/usr/lib/libcofi_rpi.so +endef + +$(eval $(generic-package)) diff --git a/package/libconfig/Config.in b/package/libconfig/Config.in new file mode 100644 index 00000000..9541b30b --- /dev/null +++ b/package/libconfig/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBCONFIG + bool "libconfig" + help + Libconfig is a simple library for manipulating structured + configuration files. The file format is more compact and more + readable than XML. And unlike XML, it is type-aware, so it is + not necessary to do string parsing in application code. + + https://hyperrealm.github.io/libconfig/ diff --git a/package/libconfig/libconfig.hash b/package/libconfig/libconfig.hash new file mode 100644 index 00000000..d359301d --- /dev/null +++ b/package/libconfig/libconfig.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 545166d6cac037744381d1e9cc5a5405094e7bfad16a411699bcff40bbb31ee7 libconfig-1.7.3.tar.gz +sha256 d80c9d084ebfb50ea1ed91bfbc2410d6ce542097a32c43b00781b83adcb8c77f COPYING.LIB diff --git a/package/libconfig/libconfig.mk b/package/libconfig/libconfig.mk new file mode 100644 index 00000000..6cdf6031 --- /dev/null +++ b/package/libconfig/libconfig.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# libconfig +# +################################################################################ + +LIBCONFIG_VERSION = 1.7.3 +LIBCONFIG_SITE = https://github.com/hyperrealm/libconfig/releases/download/v$(LIBCONFIG_VERSION) +LIBCONFIG_LICENSE = LGPL-2.1+ +LIBCONFIG_LICENSE_FILES = COPYING.LIB +LIBCONFIG_INSTALL_STAGING = YES +LIBCONFIG_CONF_OPTS = --disable-examples --disable-tests + +ifneq ($(BR2_INSTALL_LIBSTDCPP),y) +LIBCONFIG_CONF_OPTS += --disable-cxx +endif + +$(eval $(autotools-package)) diff --git a/package/libconfuse/0001-Fix-163-unterminated-username-used-with-getpwnam.patch b/package/libconfuse/0001-Fix-163-unterminated-username-used-with-getpwnam.patch new file mode 100644 index 00000000..9ff3f5ec --- /dev/null +++ b/package/libconfuse/0001-Fix-163-unterminated-username-used-with-getpwnam.patch @@ -0,0 +1,43 @@ +From d73777c2c3566fb2647727bb56d9a2295b81669b Mon Sep 17 00:00:00 2001 +From: Joachim Wiberg +Date: Fri, 2 Sep 2022 16:12:46 +0200 +Subject: [PATCH] Fix #163: unterminated username used with getpwnam() + +Signed-off-by: Joachim Wiberg + +[Retrieved (and backported) from: +https://github.com/libconfuse/libconfuse/commit/d73777c2c3566fb2647727bb56d9a2295b81669b] +Signed-off-by: Fabrice Fontaine +--- + src/confuse.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +diff --git a/src/confuse.c b/src/confuse.c +index 6d1fdbd..05566b5 100644 +--- a/src/confuse.c ++++ b/src/confuse.c +@@ -1894,18 +1894,20 @@ DLLIMPORT char *cfg_tilde_expand(const char *filename) + passwd = getpwuid(geteuid()); + file = filename + 1; + } else { +- /* ~user or ~user/path */ +- char *user; ++ char *user; /* ~user or ~user/path */ ++ size_t len; + + file = strchr(filename, '/'); + if (file == 0) + file = filename + strlen(filename); + +- user = malloc(file - filename); ++ len = file - filename - 1; ++ user = malloc(len + 1); + if (!user) + return NULL; + +- strncpy(user, filename + 1, file - filename - 1); ++ strncpy(user, &filename[1], len); ++ user[len] = 0; + passwd = getpwnam(user); + free(user); + } diff --git a/package/libconfuse/Config.in b/package/libconfuse/Config.in new file mode 100644 index 00000000..b96b8f28 --- /dev/null +++ b/package/libconfuse/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBCONFUSE + bool "libconfuse" + help + LibConfuse is a configuration file parser library written in + C. It supports sections and (lists of) values (strings, + integers, floats, booleans or other sections), as well as some + other features (such as single/double-quoted strings, + environment variable expansion, functions and nested include + statements. + + https://github.com/martinh/libconfuse/ diff --git a/package/libconfuse/libconfuse.hash b/package/libconfuse/libconfuse.hash new file mode 100644 index 00000000..bb968f7a --- /dev/null +++ b/package/libconfuse/libconfuse.hash @@ -0,0 +1,5 @@ +# From https://github.com/martinh/libconfuse/releases/download/v3.3/confuse-3.3.tar.xz.md5 +md5 a183cef2cecdd3783436ff8de500d274 confuse-3.3.tar.xz +# Locally computed +sha256 1dd50a0320e135a55025b23fcdbb3f0a81913b6d0b0a9df8cc2fdf3b3dc67010 confuse-3.3.tar.xz +sha256 dc3ff4b62f851dd2e94a151061ffeb7d28ddfc880a442068dc5283dbaa927306 LICENSE diff --git a/package/libconfuse/libconfuse.mk b/package/libconfuse/libconfuse.mk new file mode 100644 index 00000000..76123a7e --- /dev/null +++ b/package/libconfuse/libconfuse.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# libconfuse +# +################################################################################ + +LIBCONFUSE_VERSION = 3.3 +LIBCONFUSE_SOURCE = confuse-$(LIBCONFUSE_VERSION).tar.xz +LIBCONFUSE_SITE = https://github.com/martinh/libconfuse/releases/download/v$(LIBCONFUSE_VERSION) +LIBCONFUSE_INSTALL_STAGING = YES +LIBCONFUSE_CONF_OPTS = --disable-rpath +LIBCONFUSE_LICENSE = ISC +LIBCONFUSE_LICENSE_FILES = LICENSE +LIBCONFUSE_CPE_ID_VALID = YES +LIBCONFUSE_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) + +# 0001-Fix-163-unterminated-username-used-with-getpwnam.patch +LIBCONFUSE_IGNORE_CVES += CVE-2022-40320 + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libcorrect/0001-CMakeLists.txt-conditionally-use-Wpedantic.patch b/package/libcorrect/0001-CMakeLists.txt-conditionally-use-Wpedantic.patch new file mode 100644 index 00000000..77e29ad8 --- /dev/null +++ b/package/libcorrect/0001-CMakeLists.txt-conditionally-use-Wpedantic.patch @@ -0,0 +1,42 @@ +From 8fc28b4c4c01581b25220fdbc1eeda196e399256 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 10 Oct 2018 09:28:00 +0200 +Subject: [PATCH] CMakeLists.txt: conditionally use -Wpedantic + +-Wpedantic is only provided by gcc >= 4.8. Since showing pedantic +warnings is not really mandatory, let's only use this option when the +compiler supports it. + +Signed-off-by: Thomas Petazzoni +Upstream: https://github.com/quiet/libcorrect/pull/25 +--- + CMakeLists.txt | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 193f311..e570198 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -3,13 +3,18 @@ project(Correct C) + include(CheckLibraryExists) + include(CheckIncludeFiles) + include(CheckCSourceCompiles) ++include(CheckCCompilerFlag) + + if(MSVC) + set(LIBM "") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4") + else(MSVC) + set(LIBM "m") +-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -std=c99 -Wpedantic -Wall") ++set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -std=c99 -Wall") ++check_c_compiler_flag(-Wpedantic COMPILER_SUPPORTS_WPEDANTIC) ++if(COMPILER_SUPPORTS_WPEDANTIC) ++set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpedantic") ++endif() + if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g3 -O0 -fsanitize=address") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-no_pie,") +-- +2.14.4 + diff --git a/package/libcorrect/0002-CMakeLists.txt-conditionally-use-fsanitize-address.patch b/package/libcorrect/0002-CMakeLists.txt-conditionally-use-fsanitize-address.patch new file mode 100644 index 00000000..82e4f13e --- /dev/null +++ b/package/libcorrect/0002-CMakeLists.txt-conditionally-use-fsanitize-address.patch @@ -0,0 +1,35 @@ +From 1a3bb66608b2f96407d14fe13b782626990060f1 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 20 Nov 2018 08:20:13 +0100 +Subject: [PATCH] CMakeLists.txt: conditionally use -fsanitize=address + +Check that compiler supports -fsanitize=address before using it + +Fixes: + - http://autobuild.buildroot.net/results/221d6a418e75b39fe645c3a56cee676518d2cff6 + +Signed-off-by: Fabrice Fontaine +--- + CMakeLists.txt | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 2e8e07e..c3f71ce 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -17,7 +17,11 @@ if(COMPILER_SUPPORTS_WPEDANTIC) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpedantic") + endif() + if(CMAKE_BUILD_TYPE STREQUAL "Debug") +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g3 -O0 -fsanitize=address") ++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g3 -O0") ++ check_c_compiler_flag("-fsanitize=address -Werror" COMPILER_SUPPORTS_SANITIZE_ADDRESS) ++ if(COMPILER_SUPPORTS_SANITIZE_ADDRESS) ++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address") ++ endif() + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-no_pie,") + else() + if("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang") +-- +2.14.1 + diff --git a/package/libcorrect/Config.in b/package/libcorrect/Config.in new file mode 100644 index 00000000..eba6dc43 --- /dev/null +++ b/package/libcorrect/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBCORRECT + bool "libcorrect" + depends on !BR2_STATIC_LIBS + help + A C library for Forward Error Correction, providing + convolutional codes and Reed-Solomon codes. It is part + of the Quiet Modem Project. + + https://github.com/quiet/libcorrect + +comment "libcorrect needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/libcorrect/libcorrect.hash b/package/libcorrect/libcorrect.hash new file mode 100644 index 00000000..4c6289fb --- /dev/null +++ b/package/libcorrect/libcorrect.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 79861750540fb3a1cc501ee217cb4d1febc4855f3fb82e5eb60906eec5379890 libcorrect-ce6c17f1f988765ae3695315d7cce1f2a2e6cf0d.tar.gz +sha256 135138cd4304aa637836758dc5edfb5f21b7d09ecc637d25288d206b151a5768 LICENSE diff --git a/package/libcorrect/libcorrect.mk b/package/libcorrect/libcorrect.mk new file mode 100644 index 00000000..0a84aa5c --- /dev/null +++ b/package/libcorrect/libcorrect.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# libcorrect +# +################################################################################ + +LIBCORRECT_VERSION = ce6c17f1f988765ae3695315d7cce1f2a2e6cf0d +LIBCORRECT_SITE = $(call github,quiet,libcorrect,$(LIBCORRECT_VERSION)) +LIBCORRECT_LICENSE = BSD-3-Clause +LIBCORRECT_LICENSE_FILES = LICENSE +LIBCORRECT_INSTALL_STAGING = YES + +$(eval $(cmake-package)) diff --git a/package/libcpprestsdk/Config.in b/package/libcpprestsdk/Config.in new file mode 100644 index 00000000..e533b303 --- /dev/null +++ b/package/libcpprestsdk/Config.in @@ -0,0 +1,33 @@ +config BR2_PACKAGE_LIBCPPRESTSDK + bool "libcpprestsdk" + depends on BR2_ENABLE_LOCALE + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR # boost + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic, boost-filesystem + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_ATOMIC + select BR2_PACKAGE_BOOST_CHRONO + select BR2_PACKAGE_BOOST_DATE_TIME + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_BOOST_RANDOM + select BR2_PACKAGE_BOOST_REGEX + select BR2_PACKAGE_BOOST_THREAD + select BR2_PACKAGE_OPENSSL + help + The C++ REST SDK is a Microsoft project for cloud-based + client-server communication in native code using a modern + asynchronous C++ API design. This project aims to help C++ + developers connect to and interact with services. + + https://github.com/Microsoft/cpprestsdk + +comment "libcpprestsdk needs a toolchain w/ NPTL, C++, wchar, locale" + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + !BR2_INSTALL_LIBSTDCPP || \ + !BR2_USE_WCHAR || !BR2_ENABLE_LOCALE + +comment "libcpprestsdk needs exception_ptr" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/libcpprestsdk/libcpprestsdk.hash b/package/libcpprestsdk/libcpprestsdk.hash new file mode 100644 index 00000000..8e398d0c --- /dev/null +++ b/package/libcpprestsdk/libcpprestsdk.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 6bd74a637ff182144b6a4271227ea8b6b3ea92389f88b25b215e6f94fd4d41cb libcpprestsdk-2.10.18.tar.gz +sha256 5c191789f502ac87df83b57008d2fc3e47fbf31315381b5bc4309f6602d0fe97 license.txt diff --git a/package/libcpprestsdk/libcpprestsdk.mk b/package/libcpprestsdk/libcpprestsdk.mk new file mode 100644 index 00000000..68d4cf68 --- /dev/null +++ b/package/libcpprestsdk/libcpprestsdk.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# libcpprestsdk +# +################################################################################ + +LIBCPPRESTSDK_VERSION = 2.10.18 +LIBCPPRESTSDK_SITE = $(call github,Microsoft,cpprestsdk,$(LIBCPPRESTSDK_VERSION)) +LIBCPPRESTSDK_LICENSE = MIT +LIBCPPRESTSDK_LICENSE_FILES = license.txt +LIBCPPRESTSDK_SUBDIR = Release +LIBCPPRESTSDK_INSTALL_STAGING = YES +LIBCPPRESTSDK_DEPENDENCIES += host-pkgconf boost openssl +LIBCPPRESTSDK_CONF_OPTS = -DWERROR=OFF -DBUILD_SAMPLES=OFF + +ifeq ($(BR2_STATIC_LIBS),y) +LIBCPPRESTSDK_CONF_OPTS += \ + -DBoost_USE_STATIC_LIBS=ON \ + -DBoost_USE_STATIC_RUNTIME=ON +endif + +LIBCPPRESTSDK_CXXFLAGS = $(TARGET_CXXFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +LIBCPPRESTSDK_CXXFLAGS += -latomic +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LIBCPPRESTSDK_DEPENDENCIES += zlib +LIBCPPRESTSDK_CONF_OPTS += -DCPPREST_EXCLUDE_COMPRESSION=OFF +# brotli needs compression +ifeq ($(BR2_PACKAGE_BROTLI),y) +LIBCPPRESTSDK_DEPENDENCIES += brotli +LIBCPPRESTSDK_CONF_OPTS += -DCPPREST_EXCLUDE_BROTLI=OFF +else +LIBCPPRESTSDK_CONF_OPTS += -DCPPREST_EXCLUDE_BROTLI=ON +endif +else +LIBCPPRESTSDK_CONF_OPTS += -DCPPREST_EXCLUDE_COMPRESSION=ON +endif + +ifeq ($(BR2_PACKAGE_WEBSOCKETPP),y) +LIBCPPRESTSDK_DEPENDENCIES += websocketpp +LIBCPPRESTSDK_CONF_OPTS += -DCPPREST_EXCLUDE_WEBSOCKETS=OFF +else +LIBCPPRESTSDK_CONF_OPTS += -DCPPREST_EXCLUDE_WEBSOCKETS=ON +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +LIBCPPRESTSDK_CXXFLAGS += -O0 +endif + +LIBCPPRESTSDK_CONF_OPTS += -DCMAKE_CXX_FLAGS="$(LIBCPPRESTSDK_CXXFLAGS)" + +$(eval $(cmake-package)) diff --git a/package/libcrossguid/Config.in b/package/libcrossguid/Config.in new file mode 100644 index 00000000..49060bc8 --- /dev/null +++ b/package/libcrossguid/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBCROSSGUID + bool "libcrossguid" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11 + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Lightweight cross platform C++ GUID/UUID library + + https://github.com/graeme-hill/crossguid + +comment "libcrossguid needs a toolchain w/ C++, gcc >= 4.7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 diff --git a/package/libcrossguid/libcrossguid.hash b/package/libcrossguid/libcrossguid.hash new file mode 100644 index 00000000..17dbe35c --- /dev/null +++ b/package/libcrossguid/libcrossguid.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 022c9f02cc36e865cd8fd0111a597ff2bd91988deeb348dbe2aba64aed1abd99 libcrossguid-8f399e8bd4252be9952f3dfa8199924cc8487ca4.tar.gz +sha256 779e58787f966a1552f68d5ec041513cef68785dae4a519dbda7bc0b86eda20e LICENSE diff --git a/package/libcrossguid/libcrossguid.mk b/package/libcrossguid/libcrossguid.mk new file mode 100644 index 00000000..46d9a9dc --- /dev/null +++ b/package/libcrossguid/libcrossguid.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# libcrossguid +# +################################################################################ + +LIBCROSSGUID_VERSION = 8f399e8bd4252be9952f3dfa8199924cc8487ca4 +LIBCROSSGUID_SITE = $(call github,graeme-hill,crossguid,$(LIBCROSSGUID_VERSION)) +LIBCROSSGUID_LICENSE = MIT +LIBCROSSGUID_LICENSE_FILES = LICENSE +LIBCROSSGUID_INSTALL_STAGING = YES +# only a static library +LIBCROSSGUID_INSTALL_TARGET = NO +LIBCROSSGUID_DEPENDENCIES = util-linux + +define LIBCROSSGUID_BUILD_CMDS + (cd $(@D); $(TARGET_CXX) $(TARGET_CXXFLAGS) -std=c++11 -DGUID_LIBUUID \ + -c guid.cpp -o guid.o) + (cd $(@D); $(TARGET_AR) rvs libcrossguid.a guid.o) +endef + +define LIBCROSSGUID_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 644 $(@D)/libcrossguid.a \ + $(STAGING_DIR)/usr/lib/libcrossguid.a + $(INSTALL) -D -m 644 $(@D)/guid.h $(STAGING_DIR)/usr/include/guid.h +endef + +$(eval $(generic-package)) diff --git a/package/libcsv/Config.in b/package/libcsv/Config.in new file mode 100644 index 00000000..797c735b --- /dev/null +++ b/package/libcsv/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBCSV + bool "libcsv" + help + libcsv is a small, simple and fast CSV library written in + pure ANSI C89 that can read and write CSV data. It provides + a straight-forward interface using callback functions to + handle parsed fields and rows and can parse improperly + formatted CSV files. + + https://sourceforge.net/projects/libcsv/ diff --git a/package/libcsv/libcsv.hash b/package/libcsv/libcsv.hash new file mode 100644 index 00000000..c482d9fe --- /dev/null +++ b/package/libcsv/libcsv.hash @@ -0,0 +1,3 @@ +#locally computed +sha256 d9c0431cb803ceb9896ce74f683e6e5a0954e96ae1d9e4028d6e0f967bebd7e4 libcsv-3.0.3.tar.gz +sha256 6876b170378d38f65aadd271485f0a5c45beaa043a7d3de5e1636ec927922c83 COPYING.LESSER diff --git a/package/libcsv/libcsv.mk b/package/libcsv/libcsv.mk new file mode 100644 index 00000000..d0ce6433 --- /dev/null +++ b/package/libcsv/libcsv.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# libcsv +# +################################################################################ + +LIBCSV_VERSION = 3.0.3 +LIBCSV_SITE = http://sourceforge.net/projects/libcsv/files +LIBCSV_LICENSE = LGPL-2.1+ +LIBCSV_LICENSE_FILES = COPYING.LESSER +LIBCSV_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/libcue/Config.in b/package/libcue/Config.in new file mode 100644 index 00000000..69e64955 --- /dev/null +++ b/package/libcue/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBCUE + bool "libcue" + select BR2_PACKAGE_FLEX + help + CUE Sheet Parser Library + + https://github.com/lipnitsk/libcue diff --git a/package/libcue/libcue.hash b/package/libcue/libcue.hash new file mode 100644 index 00000000..47fe906e --- /dev/null +++ b/package/libcue/libcue.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 cc1b3a65c60bd88b77a1ddd1574042d83cf7cc32b85fe9481c99613359eb7cfe libcue-2.3.0.tar.gz +sha256 c388d36583fa54e13b6d73ad924d0b68d073ed8a5771e17cb49104705df4504f LICENSE diff --git a/package/libcue/libcue.mk b/package/libcue/libcue.mk new file mode 100644 index 00000000..7ef27f5a --- /dev/null +++ b/package/libcue/libcue.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libcue +# +################################################################################ + +LIBCUE_VERSION = 2.3.0 +LIBCUE_SITE = $(call github,lipnitsk,libcue,v$(LIBCUE_VERSION)) +LIBCUE_LICENSE = GPL-2.0, BSD-2-Clause (rem.c) +LIBCUE_LICENSE_FILES = LICENSE +LIBCUE_DEPENDENCIES = host-bison host-flex flex +LIBCUE_INSTALL_STAGING = YES + +$(eval $(cmake-package)) diff --git a/package/libcuefile/0001-fix-static-link.patch b/package/libcuefile/0001-fix-static-link.patch new file mode 100644 index 00000000..6eb58909 --- /dev/null +++ b/package/libcuefile/0001-fix-static-link.patch @@ -0,0 +1,25 @@ +Fix static only build + +Make sure to build the shared library only if BUILD_SHARED_LIBS is +ON. Normally, CMake takes care of this automatically, but libcuefile +wants to build both the shared and static variants, so the normal +logic of CMake doesn't apply. + +Signed-off-by: Thomas Petazzoni + +Index: b/src/CMakeLists.txt +=================================================================== +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -4,7 +4,11 @@ + add_library(cuefile-static STATIC cd cdtext cue_parse cue_print cue_scan cuefile time toc toc_parse toc_print toc_scan) + set_target_properties(cuefile-static PROPERTIES OUTPUT_NAME cuefile CLEAN_DIRECT_OUTPUT 1) + ++if (BUILD_SHARED_LIBS) + add_library(cuefile-shared SHARED cd cdtext cue_parse cue_print cue_scan cuefile time toc toc_parse toc_print toc_scan) + set_target_properties(cuefile-shared PROPERTIES OUTPUT_NAME cuefile CLEAN_DIRECT_OUTPUT 1 VERSION 0.0.0 SOVERSION 0) + + install(TARGETS cuefile-static cuefile-shared LIBRARY DESTINATION "lib${LIB_SUFFIX}" ARCHIVE DESTINATION "lib${LIB_SUFFIX}") ++else (BUILD_SHARED_LIBS) ++install(TARGETS cuefile-static LIBRARY DESTINATION "lib${LIB_SUFFIX}" ARCHIVE DESTINATION "lib${LIB_SUFFIX}") ++endif (BUILD_SHARED_LIBS) diff --git a/package/libcuefile/0002-libcuefile-fedora-c99.patch b/package/libcuefile/0002-libcuefile-fedora-c99.patch new file mode 100644 index 00000000..3f76dd31 --- /dev/null +++ b/package/libcuefile/0002-libcuefile-fedora-c99.patch @@ -0,0 +1,27 @@ +From 7dd8752f5aa2dccbaccb4c28a23f659df3bc0d19 Mon Sep 17 00:00:00 2001 +From: DJ Delorie +Date: Thu, 27 Apr 2023 17:24:58 -0400 +Subject: [PATCH] Fix C99 compatibility issue + +Related to: + + + + +See Also https://bugzilla.redhat.com/show_bug.cgi?id=2190307 +Signed-off-by: DJ Delorie +Signed-off-by: Dario Binacchi +Upstream: https://src.fedoraproject.org/rpms/libcuefile/blob/7dd8752f5aa2dccbaccb4c28a23f659df3bc0d19/f/libcuefile-fedora-c99.patch +--- +diff -rup a/src/cue_parse.c b/src/cue_parse.c +--- a/src/cue_parse.c 2011-06-18 07:28:43.000000000 -0400 ++++ b/src/cue_parse.c 2023-04-27 16:10:13.314263314 -0400 +@@ -1513,6 +1513,8 @@ void yyerror (char *s) + fprintf(stderr, "%d: %s\n", cue_lineno, s); + } + ++void cue_delete_buffer(void); ++ + Cd *cue_parse (FILE *fp) + { + cue_yyin = fp; diff --git a/package/libcuefile/Config.in b/package/libcuefile/Config.in new file mode 100644 index 00000000..416b3e14 --- /dev/null +++ b/package/libcuefile/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBCUEFILE + bool "libcuefile" + help + Cue File library from Musepack + + http://www.musepack.net/ diff --git a/package/libcuefile/libcuefile.hash b/package/libcuefile/libcuefile.hash new file mode 100644 index 00000000..2f737af0 --- /dev/null +++ b/package/libcuefile/libcuefile.hash @@ -0,0 +1,7 @@ +# From https://www.musepack.net/index.php?pg=src +md5 1a6ac52e1080fd54f0f59372345f1e4e libcuefile_r475.tar.gz +# Calculated based on the hash above +sha256 b681ca6772b3f64010d24de57361faecf426ee6182f5969fcf29b3f649133fe7 libcuefile_r475.tar.gz + +# Hash for license file: +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/libcuefile/libcuefile.mk b/package/libcuefile/libcuefile.mk new file mode 100644 index 00000000..891c1eec --- /dev/null +++ b/package/libcuefile/libcuefile.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# libcuefile +# +################################################################################ + +LIBCUEFILE_VERSION = 475 +LIBCUEFILE_SITE = http://files.musepack.net/source +LIBCUEFILE_SOURCE = libcuefile_r$(LIBCUEFILE_VERSION).tar.gz +LIBCUEFILE_INSTALL_STAGING = YES +LIBCUEFILE_LICENSE = GPL-2.0+ +LIBCUEFILE_LICENSE_FILES = COPYING + +define LIBCUEFILE_INSTALL_STAGING_INCLUDES + cp -r $(@D)/include $(STAGING_DIR)/usr +endef + +define LIBCUEFILE_INSTALL_TARGET_INCLUDES + cp -r $(@D)/include $(TARGET_DIR)/usr +endef + +LIBCUEFILE_POST_INSTALL_STAGING_HOOKS += LIBCUEFILE_INSTALL_STAGING_INCLUDES +LIBCUEFILE_POST_INSTALL_TARGET_HOOKS += LIBCUEFILE_INSTALL_TARGET_INCLUDES + +$(eval $(cmake-package)) diff --git a/package/libcurl/Config.in b/package/libcurl/Config.in new file mode 100644 index 00000000..0e52bc69 --- /dev/null +++ b/package/libcurl/Config.in @@ -0,0 +1,94 @@ +config BR2_PACKAGE_LIBCURL + bool "libcurl" + help + cURL is a tool for getting files from FTP, HTTP, Gopher, + Telnet, and Dict servers, using any of the supported + protocols. + + https://curl.se/ + +if BR2_PACKAGE_LIBCURL + +config BR2_PACKAGE_LIBCURL_CURL + bool "curl binary" + help + Install curl binary as well + +config BR2_PACKAGE_LIBCURL_VERBOSE + bool "verbose strings" + help + Enable verbose text strings + +config BR2_PACKAGE_LIBCURL_PROXY_SUPPORT + bool "proxy support" + default y + help + Enable proxy support. + +config BR2_PACKAGE_LIBCURL_COOKIES_SUPPORT + bool "cookies support" + default y + help + Enable support for cookies. + +config BR2_PACKAGE_LIBCURL_WEBSOCKETS_SUPPORT + bool "websockets support" + help + Enable support for websockets. + +config BR2_PACKAGE_LIBCURL_EXTRA_PROTOCOLS_FEATURES + bool "enable extra protocols and features" + default y + help + Enable the following extra protocols and features: + - LDAP / LDAPS + - POP3 / IMAP / SMTP + - Telnet + - TFTP + - RTSP + - SMB / CIFS + - DICT + - Gopher + +# Packages must select that if they require a SSL/TLS-enabled libcurl. +# Those packages must also select one crypto package that can be used +# as a backend below. +config BR2_PACKAGE_LIBCURL_FORCE_TLS + bool + +choice + prompt "SSL/TLS library to use" + +config BR2_PACKAGE_LIBCURL_OPENSSL + bool "OpenSSL" + depends on BR2_PACKAGE_OPENSSL + +config BR2_PACKAGE_LIBCURL_BEARSSL + bool "BearSSL" + depends on BR2_PACKAGE_BEARSSL + +config BR2_PACKAGE_LIBCURL_GNUTLS + bool "GnuTLS" + depends on BR2_PACKAGE_GNUTLS + +config BR2_PACKAGE_LIBCURL_MBEDTLS + bool "mbed TLS" + depends on BR2_PACKAGE_MBEDTLS + +config BR2_PACKAGE_LIBCURL_WOLFSSL + bool "WolfSSL" + depends on BR2_PACKAGE_WOLFSSL + depends on !BR2_STATIC_LIBS # wolfssl-all + select BR2_PACKAGE_WOLFSSL_ALL + +comment "WolfSSL needs a toolchain w/ dynamic library" + depends on BR2_PACKAGE_WOLFSSL + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_LIBCURL_TLS_NONE + bool "None" + depends on !BR2_PACKAGE_LIBCURL_FORCE_TLS + +endchoice + +endif diff --git a/package/libcurl/libcurl.hash b/package/libcurl/libcurl.hash new file mode 100644 index 00000000..1d019355 --- /dev/null +++ b/package/libcurl/libcurl.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +# https://curl.se/download/curl-8.9.1.tar.xz.asc +# signed with key 27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2 +sha256 f292f6cc051d5bbabf725ef85d432dfeacc8711dd717ea97612ae590643801e5 curl-8.9.1.tar.xz +sha256 adb1fc06547fd136244179809f7b7c2d2ae6c4534f160aa513af9b6a12866a32 COPYING diff --git a/package/libcurl/libcurl.mk b/package/libcurl/libcurl.mk new file mode 100644 index 00000000..3661cbf5 --- /dev/null +++ b/package/libcurl/libcurl.mk @@ -0,0 +1,205 @@ +################################################################################ +# +# libcurl +# +################################################################################ + +LIBCURL_VERSION = 8.9.1 +LIBCURL_SOURCE = curl-$(LIBCURL_VERSION).tar.xz +LIBCURL_SITE = https://curl.se/download +LIBCURL_DEPENDENCIES = host-pkgconf \ + $(if $(BR2_PACKAGE_ZLIB),zlib) \ + $(if $(BR2_PACKAGE_RTMPDUMP),rtmpdump) +LIBCURL_LICENSE = curl +LIBCURL_LICENSE_FILES = COPYING +LIBCURL_CPE_ID_VENDOR = haxx +LIBCURL_INSTALL_STAGING = YES + +# We disable NTLM delegation to winbinds ntlm_auth ('--disable-ntlm-wb') +# support because it uses fork(), which doesn't work on non-MMU platforms. +# Moreover, this authentication method is probably almost never used (see +# https://curl.se/docs/manpage.html#--ntlm), so disable NTLM support overall. +# +# Likewise, there is no compiler on the target, so libcurl-option (to +# generate C code) isn't very useful +LIBCURL_CONF_OPTS = \ + --disable-manual \ + --disable-ntlm \ + --disable-ntlm-wb \ + --with-random=/dev/urandom \ + --disable-curldebug \ + --disable-libcurl-option \ + --disable-ldap \ + --disable-ldaps + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +LIBCURL_CONF_OPTS += --enable-threaded-resolver +else +LIBCURL_CONF_OPTS += --disable-threaded-resolver +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +LIBCURL_CONF_OPTS += LIBS=-latomic +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_1),) +# Even though stdatomic.h does exist, link fails for __atomic_exchange_1 +# Work around this by pretending atomics aren't available. +LIBCURL_CONF_ENV += ac_cv_header_stdatomic_h=no +endif + +ifeq ($(BR2_PACKAGE_LIBCURL_VERBOSE),y) +LIBCURL_CONF_OPTS += --enable-verbose +else +LIBCURL_CONF_OPTS += --disable-verbose +endif + +LIBCURL_CONFIG_SCRIPTS = curl-config + +ifeq ($(BR2_PACKAGE_LIBCURL_TLS_NONE),y) +LIBCURL_CONF_OPTS += --without-ssl +endif + +ifeq ($(BR2_PACKAGE_LIBCURL_OPENSSL),y) +LIBCURL_DEPENDENCIES += openssl +LIBCURL_CONF_OPTS += --with-openssl=$(STAGING_DIR)/usr \ + --with-ca-path=/etc/ssl/certs +else +LIBCURL_CONF_OPTS += --without-openssl +endif + +ifeq ($(BR2_PACKAGE_LIBCURL_BEARSSL),y) +LIBCURL_CONF_OPTS += --with-bearssl=$(STAGING_DIR)/usr +LIBCURL_DEPENDENCIES += bearssl +else +LIBCURL_CONF_OPTS += --without-bearssl +endif + +ifeq ($(BR2_PACKAGE_LIBCURL_GNUTLS),y) +LIBCURL_CONF_OPTS += --with-gnutls=$(STAGING_DIR)/usr \ + --with-ca-fallback +LIBCURL_DEPENDENCIES += gnutls +else +LIBCURL_CONF_OPTS += --without-gnutls +endif + +ifeq ($(BR2_PACKAGE_LIBCURL_MBEDTLS),y) +LIBCURL_CONF_OPTS += --with-mbedtls=$(STAGING_DIR)/usr +LIBCURL_DEPENDENCIES += mbedtls +else +LIBCURL_CONF_OPTS += --without-mbedtls +endif + +ifeq ($(BR2_PACKAGE_LIBCURL_WOLFSSL),y) +LIBCURL_CONF_OPTS += --with-wolfssl=$(STAGING_DIR)/usr +LIBCURL_CONF_OPTS += --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt +LIBCURL_DEPENDENCIES += wolfssl +else +LIBCURL_CONF_OPTS += --without-wolfssl +endif + +ifeq ($(BR2_PACKAGE_C_ARES),y) +LIBCURL_DEPENDENCIES += c-ares +LIBCURL_CONF_OPTS += --enable-ares +else +LIBCURL_CONF_OPTS += --disable-ares +endif + +ifeq ($(BR2_PACKAGE_LIBIDN2),y) +LIBCURL_DEPENDENCIES += libidn2 +LIBCURL_CONF_OPTS += --with-libidn2 +else +LIBCURL_CONF_OPTS += --without-libidn2 +endif + +ifeq ($(BR2_PACKAGE_LIBPSL),y) +LIBCURL_DEPENDENCIES += libpsl +LIBCURL_CONF_OPTS += --with-libpsl +else +LIBCURL_CONF_OPTS += --without-libpsl +endif + +# Configure curl to support libssh2 +ifeq ($(BR2_PACKAGE_LIBSSH2),y) +LIBCURL_DEPENDENCIES += libssh2 +LIBCURL_CONF_OPTS += --with-libssh2 +else +LIBCURL_CONF_OPTS += --without-libssh2 +endif + +ifeq ($(BR2_PACKAGE_BROTLI),y) +LIBCURL_DEPENDENCIES += brotli +LIBCURL_CONF_OPTS += --with-brotli +else +LIBCURL_CONF_OPTS += --without-brotli +endif + +ifeq ($(BR2_PACKAGE_NGHTTP2),y) +LIBCURL_DEPENDENCIES += nghttp2 +LIBCURL_CONF_OPTS += --with-nghttp2 +else +LIBCURL_CONF_OPTS += --without-nghttp2 +endif + +ifeq ($(BR2_PACKAGE_LIBGSASL),y) +LIBCURL_DEPENDENCIES += libgsasl +LIBCURL_CONF_OPTS += --with-libgsasl +else +LIBCURL_CONF_OPTS += --without-libgsasl +endif + +ifeq ($(BR2_PACKAGE_LIBCURL_COOKIES_SUPPORT),y) +LIBCURL_CONF_OPTS += --enable-cookies +else +LIBCURL_CONF_OPTS += --disable-cookies +endif + +ifeq ($(BR2_PACKAGE_LIBCURL_PROXY_SUPPORT),y) +LIBCURL_CONF_OPTS += --enable-proxy +else +LIBCURL_CONF_OPTS += --disable-proxy +endif + +ifeq ($(BR2_PACKAGE_LIBCURL_WEBSOCKETS_SUPPORT),y) +LIBCURL_CONF_OPTS += --enable-websockets +else +LIBCURL_CONF_OPTS += --disable-websockets +endif + +ifeq ($(BR2_PACKAGE_LIBCURL_EXTRA_PROTOCOLS_FEATURES),y) +LIBCURL_CONF_OPTS += \ + --enable-dict \ + --enable-gopher \ + --enable-imap \ + --enable-pop3 \ + --enable-rtsp \ + --enable-smb \ + --enable-smtp \ + --enable-telnet \ + --enable-tftp +else +LIBCURL_CONF_OPTS += \ + --disable-dict \ + --disable-gopher \ + --disable-imap \ + --disable-pop3 \ + --disable-rtsp \ + --disable-smb \ + --disable-smtp \ + --disable-telnet \ + --disable-tftp +endif + +define LIBCURL_FIX_DOT_PC + printf 'Requires: openssl\n' >>$(@D)/libcurl.pc.in +endef +LIBCURL_POST_PATCH_HOOKS += $(if $(BR2_PACKAGE_LIBCURL_OPENSSL),LIBCURL_FIX_DOT_PC) + +ifeq ($(BR2_PACKAGE_LIBCURL_CURL),) +define LIBCURL_TARGET_CLEANUP + rm -rf $(TARGET_DIR)/usr/bin/curl +endef +LIBCURL_POST_INSTALL_TARGET_HOOKS += LIBCURL_TARGET_CLEANUP +endif + +$(eval $(autotools-package)) diff --git a/package/libcutl/libcutl.hash b/package/libcutl/libcutl.hash new file mode 100644 index 00000000..6c0358cb --- /dev/null +++ b/package/libcutl/libcutl.hash @@ -0,0 +1,6 @@ +# From https://www.codesynthesis.com/download/libcutl/1.10/libcutl-1.10.0.tar.bz2.sha1 +sha1 2885b79529f8caeb13687d722f5c114186f56956 libcutl-1.10.0.tar.bz2 + +# Locally Computed +sha256 125163c670e372b47d5626d54379ff8fbaded6ccd5db77ac0bf5912a4017121c libcutl-1.10.0.tar.bz2 +sha256 c7aa98c5af3b67174f16b12a1fed4332a51cd524b82c69e85baa4c2c412da239 LICENSE diff --git a/package/libcutl/libcutl.mk b/package/libcutl/libcutl.mk new file mode 100644 index 00000000..2b704ad3 --- /dev/null +++ b/package/libcutl/libcutl.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libcutl +# +################################################################################ + +LIBCUTL_VERSION_MAJOR = 1.10 +LIBCUTL_VERSION = $(LIBCUTL_VERSION_MAJOR).0 +LIBCUTL_SOURCE = libcutl-$(LIBCUTL_VERSION).tar.bz2 +LIBCUTL_SITE = https://www.codesynthesis.com/download/libcutl/$(LIBCUTL_VERSION_MAJOR) +LIBCUTL_INSTALL_STAGING = YES +LIBCUTL_LICENSE = MIT +LIBCUTL_LICENSE_FILES = LICENSE +HOST_LIBCUTL_CONF_ENV = CXXFLAGS="$(HOST_CXXFLAGS) -std=c++11" + +$(eval $(host-autotools-package)) diff --git a/package/libdaemon/0001-testd-use-unistd-h-instead-of-sys-unistd-h.patch b/package/libdaemon/0001-testd-use-unistd-h-instead-of-sys-unistd-h.patch new file mode 100644 index 00000000..c8f4270d --- /dev/null +++ b/package/libdaemon/0001-testd-use-unistd-h-instead-of-sys-unistd-h.patch @@ -0,0 +1,16 @@ +examples/testd.c: As the C POSIX library recommends include the +instead of . This removes an error when building libdaemon +against the musl C library. + +Signed-off-by: Jörg Krause +--- libdaemon-0.14.orig/examples/testd.c 2014-08-30 00:27:08.359832977 +0200 ++++ libdaemon-0.14/examples/testd.c 2014-08-30 00:27:25.439832670 +0200 +@@ -23,7 +23,7 @@ + #include + #include + #include +-#include ++#include + #include + + #include diff --git a/package/libdaemon/Config.in b/package/libdaemon/Config.in new file mode 100644 index 00000000..bfcedc19 --- /dev/null +++ b/package/libdaemon/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBDAEMON + bool "libdaemon" + # needs fork() + depends on BR2_USE_MMU + help + libdaemon is a lightweight C library that eases the + writing of UNIX daemons. + + http://0pointer.de/lennart/projects/libdaemon/ diff --git a/package/libdaemon/libdaemon.hash b/package/libdaemon/libdaemon.hash new file mode 100644 index 00000000..72652f0d --- /dev/null +++ b/package/libdaemon/libdaemon.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 fd23eb5f6f986dcc7e708307355ba3289abe03cc381fc47a80bca4a50aa6b834 libdaemon-0.14.tar.gz +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 LICENSE diff --git a/package/libdaemon/libdaemon.mk b/package/libdaemon/libdaemon.mk new file mode 100644 index 00000000..aa9bb808 --- /dev/null +++ b/package/libdaemon/libdaemon.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# libdaemon +# +################################################################################ + +LIBDAEMON_VERSION = 0.14 +LIBDAEMON_SITE = http://0pointer.de/lennart/projects/libdaemon +LIBDAEMON_LICENSE = LGPL-2.1+ +LIBDAEMON_LICENSE_FILES = LICENSE +LIBDAEMON_CPE_ID_VALID = YES + +LIBDAEMON_INSTALL_STAGING = YES +LIBDAEMON_CONF_ENV = ac_cv_func_setpgrp_void=no +LIBDAEMON_CONF_OPTS = --disable-lynx +LIBDAEMON_DEPENDENCIES = host-pkgconf + +$(eval $(autotools-package)) diff --git a/package/libdbi-drivers/Config.in b/package/libdbi-drivers/Config.in new file mode 100644 index 00000000..7c505340 --- /dev/null +++ b/package/libdbi-drivers/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBDBI_DRIVERS + bool "libdbi-drivers" + depends on !BR2_STATIC_LIBS # libdbi + select BR2_PACKAGE_LIBDBI + help + The libdbi-drivers project provides the + database-specific drivers for the libdbi framework. + + http://libdbi-drivers.sourceforge.net + +comment "libdbi-drivers needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/libdbi-drivers/libdbi-drivers.hash b/package/libdbi-drivers/libdbi-drivers.hash new file mode 100644 index 00000000..3408e1d6 --- /dev/null +++ b/package/libdbi-drivers/libdbi-drivers.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 a1e9c65153141a8adf91e97e782a2d55b9641dec5a6440ffa82e3d7cee724ce2 libdbi-drivers-0bfae6c43134cf58dc89364328545982ca297abb-git4.tar.gz +sha256 5bbcbb737e60fe9deba08ecbd00920cfcc3403ba2e534c64fdeea49d6bb87509 COPYING diff --git a/package/libdbi-drivers/libdbi-drivers.mk b/package/libdbi-drivers/libdbi-drivers.mk new file mode 100644 index 00000000..a6ff9d9c --- /dev/null +++ b/package/libdbi-drivers/libdbi-drivers.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# libdbi-drivers +# +################################################################################ + +LIBDBI_DRIVERS_VERSION = 0bfae6c43134cf58dc89364328545982ca297abb +LIBDBI_DRIVERS_SITE = https://git.code.sf.net/p/libdbi-drivers/libdbi-drivers +LIBDBI_DRIVERS_SITE_METHOD = git +LIBDBI_DRIVERS_LICENSE = LGPL-2.1+ +LIBDBI_DRIVERS_LICENSE_FILES = COPYING +LIBDBI_DRIVERS_INSTALL_STAGING = YES +LIBDBI_DRIVERS_DEPENDENCIES = libdbi host-pkgconf +LIBDBI_DRIVERS_AUTORECONF = YES + +LIBDBI_DRIVERS_CONF_OPTS = --with-dbi-libdir=$(STAGING_DIR)/usr/lib + +ifeq ($(BR2_PACKAGE_MARIADB),y) +LIBDBI_DRIVERS_DEPENDENCIES += mariadb +LIBDBI_DRIVERS_CONF_OPTS += --with-mysql +LIBDBI_DRIVERS_CONF_ENV += MYSQL_CONFIG="$(STAGING_DIR)/usr/bin/mysql_config" +else +LIBDBI_DRIVERS_CONF_OPTS += --without-mysql +endif + +ifeq ($(BR2_PACKAGE_POSTGRESQL),y) +LIBDBI_DRIVERS_DEPENDENCIES += postgresql +LIBDBI_DRIVERS_CONF_OPTS += --with-pgsql +else +LIBDBI_DRIVERS_CONF_OPTS += --without-pgsql +endif + +LIBDBI_DRIVERS_CONF_OPTS += --without-sqlite +ifeq ($(BR2_PACKAGE_SQLITE),y) +LIBDBI_DRIVERS_DEPENDENCIES += sqlite +LIBDBI_DRIVERS_CONF_OPTS += --with-sqlite3 +else +LIBDBI_DRIVERS_CONF_OPTS += --without-sqlite3 +endif + +LIBDBI_DRIVERS_CONF_OPTS += --without-msql # MiniSQL +LIBDBI_DRIVERS_CONF_OPTS += --without-oracle # Oracle OCI +LIBDBI_DRIVERS_CONF_OPTS += --without-firebird # Firebird/Interbase +LIBDBI_DRIVERS_CONF_OPTS += --without-freetds # Freetds +LIBDBI_DRIVERS_CONF_OPTS += --without-ingres # Ingres +LIBDBI_DRIVERS_CONF_OPTS += --without-db2 # IBM DB2 + +$(eval $(autotools-package)) diff --git a/package/libdbi/Config.in b/package/libdbi/Config.in new file mode 100644 index 00000000..13ac344f --- /dev/null +++ b/package/libdbi/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBDBI + bool "lidbi" + depends on !BR2_STATIC_LIBS + help + libdbi implements a database-independent abstraction layer + in C, similar to the DBI/DBD layer in Perl. + + http://libdbi.sourceforge.net + +comment "libdbi needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/libdbi/libdbi.hash b/package/libdbi/libdbi.hash new file mode 100644 index 00000000..4ab3cd68 --- /dev/null +++ b/package/libdbi/libdbi.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 8ceef7c6d40ad8cdc843bbdc0068619883ab8b833f5b43038ec36cf46350e332 libdbi-88b8477d57153b9f736dd19d432d3b7ab1c49073-git4.tar.gz +sha256 5bbcbb737e60fe9deba08ecbd00920cfcc3403ba2e534c64fdeea49d6bb87509 COPYING diff --git a/package/libdbi/libdbi.mk b/package/libdbi/libdbi.mk new file mode 100644 index 00000000..e48fffaf --- /dev/null +++ b/package/libdbi/libdbi.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libdbi +# +################################################################################ + +LIBDBI_VERSION = 88b8477d57153b9f736dd19d432d3b7ab1c49073 +LIBDBI_SITE = https://git.code.sf.net/p/libdbi/libdbi +LIBDBI_SITE_METHOD = git +LIBDBI_LICENSE = LGPL-2.1+ +LIBDBI_LICENSE_FILES = COPYING +LIBDBI_INSTALL_STAGING = YES +# Fetched from git, with no configure script +LIBDBI_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/libde265/Config.in b/package/libde265/Config.in new file mode 100644 index 00000000..2436beff --- /dev/null +++ b/package/libde265/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBDE265 + bool "libde265" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + libde265 is an open source implementation of the h.265 video + codec. + + https://github.com/strukturag/libde265 + +comment "libde265 needs a toolchain w/ threads, C++" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP diff --git a/package/libde265/libde265.hash b/package/libde265/libde265.hash new file mode 100644 index 00000000..a21a8a12 --- /dev/null +++ b/package/libde265/libde265.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 00251986c29d34d3af7117ed05874950c875dd9292d016be29d3b3762666511d libde265-1.0.15.tar.gz +sha256 02cc1585a20677992e0ba578fa692635dc193735f2691dc81de924b51c4e8020 COPYING diff --git a/package/libde265/libde265.mk b/package/libde265/libde265.mk new file mode 100644 index 00000000..62c22246 --- /dev/null +++ b/package/libde265/libde265.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libde265 +# +################################################################################ + +LIBDE265_VERSION = 1.0.15 +LIBDE265_SITE = https://github.com/strukturag/libde265/releases/download/v$(LIBDE265_VERSION) +LIBDE265_LICENSE = LGPL-3.0+ +LIBDE265_LICENSE_FILES = COPYING +LIBDE265_CPE_ID_VENDOR = struktur +LIBDE265_INSTALL_STAGING = YES + +$(eval $(cmake-package)) diff --git a/package/libdecor/Config.in b/package/libdecor/Config.in new file mode 100644 index 00000000..782fe855 --- /dev/null +++ b/package/libdecor/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_LIBDECOR + bool "libdecor" + depends on !BR2_STATIC_LIBS # wayland + depends on BR2_USE_MMU # pango + depends on BR2_USE_WCHAR # pango + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # pango + depends on BR2_INSTALL_LIBSTDCPP # pango + depends on BR2_TOOLCHAIN_HAS_THREADS # pango, wayland + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_PANGO + select BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_WAYLAND_PROTOCOLS + help + libdecor is a library that can help Wayland clients draw + window decorations for them. It aims to provide multiple + backends that implements the decoration drawing. + + https://gitlab.freedesktop.org/libdecor/libdecor + +comment "libdecor needs a toolchain w/ wchar, threads, C++, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_USE_WCHAR || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/libdecor/libdecor.hash b/package/libdecor/libdecor.hash new file mode 100644 index 00000000..9e51e905 --- /dev/null +++ b/package/libdecor/libdecor.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 82adece5baeb6194292b0d1a91b4b3d10da41115f352a5e6c5844b20b88a0512 libdecor-0.1.1.tar.gz +sha256 508a77d2e7b51d98adeed32648ad124b7b30241a8e70b2e72c99f92d8e5874d1 LICENSE diff --git a/package/libdecor/libdecor.mk b/package/libdecor/libdecor.mk new file mode 100644 index 00000000..b9657262 --- /dev/null +++ b/package/libdecor/libdecor.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# libdecor +# +################################################################################ + +LIBDECOR_VERSION = 0.1.1 +LIBDECOR_SITE = https://gitlab.freedesktop.org/libdecor/libdecor/-/archive/$(LIBDECOR_VERSION) +LIBDECOR_LICENSE = MIT +LIBDECOR_LICENSE_FILES = LICENSE +LIBDECOR_INSTALL_STAGING = YES +LIBDECOR_DEPENDENCIES = cairo pango wayland wayland-protocols +LIBDECOR_CONF_OPTS = -Ddemo=false + +ifeq ($(BR2_PACKAGE_DBUS),y) +LIBDECOR_CONF_OPTS += -Ddbus=enabled +LIBDECOR_DEPENDENCIES += dbus +else +LIBDECOR_CONF_OPTS += -Ddbus=disabled +endif + +$(eval $(meson-package)) diff --git a/package/libdeflate/Config.in b/package/libdeflate/Config.in new file mode 100644 index 00000000..d2fb0d6c --- /dev/null +++ b/package/libdeflate/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBDEFLATE + bool "libdeflate" + help + Libdeflate is a heavily optimized library for DEFLATE/zlib/ + gzip compression and decompression + + https://github.com/ebiggers/libdeflate diff --git a/package/libdeflate/libdeflate.hash b/package/libdeflate/libdeflate.hash new file mode 100644 index 00000000..46afa966 --- /dev/null +++ b/package/libdeflate/libdeflate.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 ed1454166ced78913ff3809870a4005b7170a6fd30767dc478a09b96847b9c2a libdeflate-1.20.tar.gz +sha256 5d246dd2537307b80fed9ba5fdddf5d0fe7a8f023393a071182b9daed56b40fe COPYING diff --git a/package/libdeflate/libdeflate.mk b/package/libdeflate/libdeflate.mk new file mode 100644 index 00000000..4597dc5a --- /dev/null +++ b/package/libdeflate/libdeflate.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# libdeflate +# +################################################################################ + +LIBDEFLATE_VERSION = 1.20 +LIBDEFLATE_SITE = $(call github,ebiggers,libdeflate,v$(LIBDEFLATE_VERSION)) +LIBDEFLATE_LICENSE = MIT +LIBDEFLATE_LICENSE_FILES = COPYING +LIBDEFLATE_INSTALL_STAGING = YES + +LIBDEFLATE_CFLAGS = -D_DEFAULT_SOURCE + +# Thumb build is broken, build in ARM mode, since all architectures +# that support Thumb1 also support ARM. +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +LIBDEFLATE_CFLAGS += -marm +endif + +LIBDEFLATE_CONF_OPTS = \ + -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) $(LIBDEFLATE_CFLAGS)" + +ifeq ($(BR2_SHARED_LIBS),y) +LIBDEFLATE_CONF_OPTS += \ + -DLIBDEFLATE_BUILD_SHARED_LIB=ON \ + -DLIBDEFLATE_BUILD_STATIC_LIB=OFF +else ifeq ($(BR2_STATIC_LIBS),y) +LIBDEFLATE_CONF_OPTS += \ + -DLIBDEFLATE_BUILD_SHARED_LIB=OFF \ + -DLIBDEFLATE_BUILD_STATIC_LIB=ON +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +LIBDEFLATE_CONF_OPTS += \ + -DLIBDEFLATE_BUILD_SHARED_LIB=ON \ + -DLIBDEFLATE_BUILD_STATIC_LIB=ON +endif + +$(eval $(cmake-package)) diff --git a/package/libdex/0001-add-stack-protector-option.patch b/package/libdex/0001-add-stack-protector-option.patch new file mode 100644 index 00000000..9021831a --- /dev/null +++ b/package/libdex/0001-add-stack-protector-option.patch @@ -0,0 +1,45 @@ +From 107efb2f1a014c4475e122677faddbe0dbef1000 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 23 Jul 2024 14:54:59 +0200 +Subject: [PATCH] add stack-protector option + +Allow the user to disable stack-protector as it is not supported by all +toolchains + +Signed-off-by: Fabrice Fontaine +Upstream: https://gitlab.gnome.org/GNOME/libdex/-/commit/a65d33aebbe43024a046b3f3cc4a1c6c533838d0 +--- + meson.build | 2 +- + meson_options.txt | 3 +++ + 2 files changed, 4 insertions(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index d0ca81d..2f7aac2 100644 +--- a/meson.build ++++ b/meson.build +@@ -126,7 +126,7 @@ test_c_args = [ + ['-Werror=format-security', '-Werror=format=2'], + '-FImsvc_recommended_pragmas.h', + ] +-if get_option('buildtype') != 'plain' ++if get_option('buildtype') != 'plain' and get_option('stack-protector') + if host_machine.system() != 'windows' + test_c_args += '-fstack-protector-strong' + endif +diff --git a/meson_options.txt b/meson_options.txt +index 519cd97..9e3364a 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -4,6 +4,9 @@ option('docs', + option('examples', + type: 'boolean', value: true, + description: 'Build example programs') ++option('stack-protector', ++ type: 'boolean', value: true, ++ description: 'Enable stack-protector') + option('vapi', + type: 'boolean', value: true, + description: 'Generate vapi data (requires vapigen)') +-- +GitLab + diff --git a/package/libdex/Config.in b/package/libdex/Config.in new file mode 100644 index 00000000..17abc0b0 --- /dev/null +++ b/package/libdex/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_LIBDEX + bool "libdex" + depends on BR2_USE_MMU # libglib2 + depends on BR2_USE_WCHAR # libglib2, gettext + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_UCONTEXT || \ + BR2_PACKAGE_LIBUCONTEXT_ARCH_SUPPORTS + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBUCONTEXT if \ + BR2_PACKAGE_LIBUCONTEXT_ARCH_SUPPORTS && !BR2_TOOLCHAIN_HAS_UCONTEXT + help + Dex provides Future-based programming for GLib-based + applications. It both integrates with and brings new + features for application and library authors who want + to structure concurrent code in an easy to manage way. + + https://gitlab.gnome.org/GNOME/libdex + +comment "libdex needs a toolchain w/ wchar, threads, dynamic library, ucontext" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS || \ + !(BR2_TOOLCHAIN_HAS_UCONTEXT || \ + BR2_PACKAGE_LIBUCONTEXT_ARCH_SUPPORTS) diff --git a/package/libdex/libdex.hash b/package/libdex/libdex.hash new file mode 100644 index 00000000..ec22f330 --- /dev/null +++ b/package/libdex/libdex.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/libdex/0.6/libdex-0.6.1.sha256sum +sha256 d176de6578571e32a8c0b603b6a5a13fa5f87fb6b5442575b38ec5af16b17a92 libdex-0.6.1.tar.xz + +# License files +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/libdex/libdex.mk b/package/libdex/libdex.mk new file mode 100644 index 00000000..360b3892 --- /dev/null +++ b/package/libdex/libdex.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# libdex +# +################################################################################ + +LIBDEX_VERSION_MAJOR = 0.6 +LIBDEX_VERSION = $(LIBDEX_VERSION_MAJOR).1 +LIBDEX_SOURCE = libdex-$(LIBDEX_VERSION).tar.xz +LIBDEX_SITE = https://download.gnome.org/sources/libdex/$(LIBDEX_VERSION_MAJOR) +LIBDEX_LICENSE = LGPL-2.1+ +LIBDEX_LICENSE_FILES = COPYING +LIBDEX_INSTALL_STAGING = YES +LIBDEX_DEPENDENCIES = libglib2 +LIBDEX_CONF_OPTS = \ + -Ddocs=false \ + -Dexamples=false \ + -Dstack-protector=false \ + -Dsysprof=false \ + -Dtests=false \ + -Dvapi=false \ + -Deventfd=enabled \ + -Dintrospection=disabled + +ifeq ($(BR2_PACKAGE_LIBUCONTEXT),y) +LIBDEX_DEPENDENCIES += libucontext +LIBDEX_LDFLAGS += $(TARGET_LDFLAGS) -lucontext +endif + +ifeq ($(BR2_PACKAGE_LIBURING),y) +LIBDEX_CONF_OPTS += -Dliburing=enabled +LIBDEX_DEPENDENCIES += liburing +else +LIBDEX_CONF_OPTS += -Dliburing=disabled +endif + +$(eval $(meson-package)) diff --git a/package/libdill/Config.in b/package/libdill/Config.in new file mode 100644 index 00000000..2376fc96 --- /dev/null +++ b/package/libdill/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBDILL + bool "libdill" + help + Libdill is a C library that makes writing structured + concurrent programs easy. + + http://libdill.org diff --git a/package/libdill/libdill.hash b/package/libdill/libdill.hash new file mode 100644 index 00000000..2f74b762 --- /dev/null +++ b/package/libdill/libdill.hash @@ -0,0 +1,3 @@ +# sha256 locally computed +sha256 a883a38d4073f43612b3221f908428ce9f663f940e5dd89c8dfad14058890380 libdill-32d0e8b733416208e0412a56490332772bc5c6e1.tar.gz +sha256 3f78d9c42c8919cb6dc63e51de17b9eb40a49d9cdd876ce59e77392721e8c2c6 COPYING diff --git a/package/libdill/libdill.mk b/package/libdill/libdill.mk new file mode 100644 index 00000000..9dda81d0 --- /dev/null +++ b/package/libdill/libdill.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# libdill +# +################################################################################ + +LIBDILL_VERSION = 32d0e8b733416208e0412a56490332772bc5c6e1 +LIBDILL_SITE = $(call github,sustrik,libdill,$(LIBDILL_VERSION)) +LIBDILL_LICENSE = MIT +LIBDILL_LICENSE_FILES = COPYING +LIBDILL_INSTALL_STAGING = YES +# Fetched from Github, with no configure script +LIBDILL_AUTORECONF = YES + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +LIBDILL_CONF_OPTS += --enable-threads +else +LIBDILL_CONF_OPTS += --disable-threads +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBDILL_DEPENDENCIES += host-pkgconf openssl +LIBDILL_CONF_OPTS += --enable-tls +else +LIBDILL_CONF_OPTS += --disable-tls +endif + +$(eval $(autotools-package)) diff --git a/package/libdisplay-info/Config.in b/package/libdisplay-info/Config.in new file mode 100644 index 00000000..b8363ed6 --- /dev/null +++ b/package/libdisplay-info/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBDISPLAY_INFO + bool "libdisplay-info" + select BR2_PACKAGE_HWDATA + select BR2_PACKAGE_HWDATA_PNP_IDS + help + EDID and DisplayID library. + + https://gitlab.freedesktop.org/emersion/libdisplay-info diff --git a/package/libdisplay-info/libdisplay-info.hash b/package/libdisplay-info/libdisplay-info.hash new file mode 100644 index 00000000..cc93a0cf --- /dev/null +++ b/package/libdisplay-info/libdisplay-info.hash @@ -0,0 +1,4 @@ +# From https://gitlab.freedesktop.org/emersion/libdisplay-info/-/releases/0.2.0/downloads/libdisplay-info-0.2.0.tar.xz.sha256sum +sha256 5a2f002a16f42dd3540c8846f80a90b8f4bdcd067a94b9d2087bc2feae974176 libdisplay-info-0.2.0.tar.xz +# Locally computed +sha256 15b396244e58830c5614b9394f4deccfe684970cd507f299383ab57ad339eedd LICENSE diff --git a/package/libdisplay-info/libdisplay-info.mk b/package/libdisplay-info/libdisplay-info.mk new file mode 100644 index 00000000..b8846384 --- /dev/null +++ b/package/libdisplay-info/libdisplay-info.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# libdisplay-info +# +################################################################################ + +LIBDISPLAY_INFO_VERSION = 0.2.0 +LIBDISPLAY_INFO_SOURCE = libdisplay-info-$(LIBDISPLAY_INFO_VERSION).tar.xz +LIBDISPLAY_INFO_SITE = https://gitlab.freedesktop.org/emersion/libdisplay-info/-/releases/$(LIBDISPLAY_INFO_VERSION)/downloads +LIBDISPLAY_INFO_LICENSE = MIT +LIBDISPLAY_INFO_LICENSE_FILES = LICENSE +LIBDISPLAY_INFO_INSTALL_STAGING = YES +LIBDISPLAY_INFO_DEPENDENCIES = hwdata + +# workaround for static_assert on uclibc-ng < 1.0.42 +LIBDISPLAY_INFO_CFLAGS += $(TARGET_CFLAGS) -Dstatic_assert=_Static_assert + +$(eval $(meson-package)) diff --git a/package/libdmtx/Config.in b/package/libdmtx/Config.in new file mode 100644 index 00000000..20f46914 --- /dev/null +++ b/package/libdmtx/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBDMTX + bool "libdmtx" + help + libdmtx is a software library that enables programs to read + and write Data Matrix barcodes of the modern ECC200 variety. + + https://github.com/dmtx/libdmtx diff --git a/package/libdmtx/libdmtx.hash b/package/libdmtx/libdmtx.hash new file mode 100644 index 00000000..8b176d73 --- /dev/null +++ b/package/libdmtx/libdmtx.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 7aa62adcefdd6e24bdabeb82b3ce41a8d35f4a0c95ab0c4438206aecafd6e1a1 libdmtx-0.7.7.tar.gz +sha256 fcc277b7302645322c63de22b9b0bdae2df3dfa7d6cbc0d5bed7a4d3f1a9af79 LICENSE diff --git a/package/libdmtx/libdmtx.mk b/package/libdmtx/libdmtx.mk new file mode 100644 index 00000000..00d37fb9 --- /dev/null +++ b/package/libdmtx/libdmtx.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libdmtx +# +################################################################################ + +LIBDMTX_VERSION = 0.7.7 +LIBDMTX_SITE = $(call github,dmtx,libdmtx,v$(LIBDMTX_VERSION)) +LIBDMTX_LICENSE = BSD-2-Clause or Special Permission +LIBDMTX_LICENSE_FILES = LICENSE +LIBDMTX_INSTALL_STAGING = YES +# github tarball does not include configure +LIBDMTX_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/libdnet/0001-python-makefile.patch b/package/libdnet/0001-python-makefile.patch new file mode 100644 index 00000000..e5526482 --- /dev/null +++ b/package/libdnet/0001-python-makefile.patch @@ -0,0 +1,29 @@ +From 298cd8eaa21a21eee85f9551a26ad294347b1d5a Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Thu, 30 Dec 2021 11:14:15 -0800 +Subject: [PATCH] python makefile + +Signed-off-by: Peter Korsgaard +[adam: refresh for 1.14; make it git-formatted] +Signed-off-by: Adam Duskett +[Fabrice: updated for 1.16.1] +Signed-off-by: Fabrice Fontaine +--- + python/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/python/Makefile.am b/python/Makefile.am +index 1a74ef2..59fe0f3 100644 +--- a/python/Makefile.am ++++ b/python/Makefile.am +@@ -11,6 +11,7 @@ $(srcdir)/dnet.c: $(srcdir)/dnet.pyx + + + python-build: ++ CC="$(CC)" LDSHARED="$(CC) -shared" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" $(PYTHON) setup.py build_ext -I$(PYINCDIR) -L$(PYLIBDIR) + $(PYTHON) setup.py build + touch python-build + +-- +2.33.1 + diff --git a/package/libdnet/Config.in b/package/libdnet/Config.in new file mode 100644 index 00000000..473e8aea --- /dev/null +++ b/package/libdnet/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_LIBDNET + bool "libdnet" + help + libdnet - simplified interface to low-level networking + routines. + + http://libdnet.sourceforge.net/ + +if BR2_PACKAGE_LIBDNET + +config BR2_PACKAGE_LIBDNET_PYTHON + bool "libdnet python module" + depends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS + depends on BR2_PACKAGE_PYTHON3 + depends on !BR2_STATIC_LIBS # libbsd + depends on BR2_TOOLCHAIN_HAS_THREADS # libbsd + depends on BR2_USE_WCHAR # libbsd + select BR2_PACKAGE_LIBBSD + help + dnet module for python + +comment "dnet module for python requires python3 package" + depends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS + depends on !BR2_PACKAGE_PYTHON3 + +comment "dnet module for python needs a toolchain w/ dynamic library, threads, wchar" + depends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_USE_WCHAR + +endif diff --git a/package/libdnet/libdnet.hash b/package/libdnet/libdnet.hash new file mode 100644 index 00000000..0ffeca60 --- /dev/null +++ b/package/libdnet/libdnet.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 7df1f0a3db9cf03b48cf50ab273fd6a20c1be99eb9344b9663fe3fd9ed9dab65 libdnet-1.16.4.tar.gz +sha256 6b46ec86e290066c47b6607d322135b3c473566e7225ac23d35a7c0588a82da6 LICENSE diff --git a/package/libdnet/libdnet.mk b/package/libdnet/libdnet.mk new file mode 100644 index 00000000..e678565b --- /dev/null +++ b/package/libdnet/libdnet.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# libdnet +# +################################################################################ + +LIBDNET_VERSION = 1.16.4 +LIBDNET_SITE = $(call github,ofalk,libdnet,libdnet-$(LIBDNET_VERSION)) +LIBDNET_LICENSE = BSD-3-Clause +LIBDNET_LICENSE_FILES = LICENSE +LIBDNET_INSTALL_STAGING = YES +LIBDNET_AUTORECONF = YES +LIBDNET_CONF_OPTS = \ + --with-gnu-ld \ + --with-check=no +LIBDNET_CONFIG_SCRIPTS = dnet-config +LIBDNET_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_LIBDNET_PYTHON),y) +LIBDNET_DEPENDENCIES += libbsd host-python-cython python3 +LIBDNET_CONF_OPTS += --with-python=$(HOST_DIR)/bin +LIBDNET_MAKE_ENV += $(PKG_PYTHON_SETUPTOOLS_ENV) +LIBDNET_INSTALL_TARGET_OPTS = $(LIBDNET_MAKE_OPTS) DESTDIR=$(TARGET_DIR) INSTALL_STRIP_FLAG=-s install-exec +LIBDNET_INSTALL_STAGING_OPTS = $(LIBDNET_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install +endif + +# Needed for autoreconf to work properly +define LIBDNET_FIXUP_ACINCLUDE_M4 + ln -sf config/acinclude.m4 $(@D) +endef + +LIBDNET_POST_EXTRACT_HOOKS += LIBDNET_FIXUP_ACINCLUDE_M4 + +define LIBDNET_REMOVE_CONFIG_SCRIPT + $(RM) -f $(TARGET_DIR)/usr/bin/dnet-config +endef + +LIBDNET_POST_INSTALL_TARGET_HOOKS += LIBDNET_REMOVE_CONFIG_SCRIPT + +$(eval $(autotools-package)) diff --git a/package/libdri2/Config.in b/package/libdri2/Config.in new file mode 100644 index 00000000..fa3f76e8 --- /dev/null +++ b/package/libdri2/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBDRI2 + bool "libdri2" + depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_XLIB_LIBXDAMAGE + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XORGPROTO + help + Library for the DRI2 extension to the X Window System. + + https://github.com/robclark/libdri2 + +comment "libdri2 needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libdri2/libdri2.hash b/package/libdri2/libdri2.hash new file mode 100644 index 00000000..dbaccbdd --- /dev/null +++ b/package/libdri2/libdri2.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 7c427f5c3fbda3d1df1dc77129e87605f4af1f3ad2adf2653c560d1703aa4395 libdri2-4f1eef3183df2b270c3d5cbef07343ee5127a6a4.tar.gz +sha256 4fac4d581d00f11c459d68b7cb970f3d4e5a5bbfb53784d85f59a90076280301 COPYING diff --git a/package/libdri2/libdri2.mk b/package/libdri2/libdri2.mk new file mode 100644 index 00000000..79f38c68 --- /dev/null +++ b/package/libdri2/libdri2.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libdri2 +# +################################################################################ + +LIBDRI2_VERSION = 4f1eef3183df2b270c3d5cbef07343ee5127a6a4 +LIBDRI2_SITE = $(call github,robclark,libdri2,$(LIBDRI2_VERSION)) +LIBDRI2_DEPENDENCIES = xlib_libXext xlib_libXdamage xorgproto libdrm +LIBDRI2_LICENSE = MIT +LIBDRI2_LICENSE_FILES = COPYING + +LIBDRI2_INSTALL_STAGING = YES +LIBDRI2_AUTORECONF = YES +LIBDRI2_CONF_ENV = xorg_cv_malloc0_returns_null=true + +$(eval $(autotools-package)) diff --git a/package/libdrm/0001-tests-meson.build-disable-nouveau-tests-for-static-b.patch b/package/libdrm/0001-tests-meson.build-disable-nouveau-tests-for-static-b.patch new file mode 100644 index 00000000..e2e18e12 --- /dev/null +++ b/package/libdrm/0001-tests-meson.build-disable-nouveau-tests-for-static-b.patch @@ -0,0 +1,43 @@ +From c9036706b9f724f09ac6288f82b53f2e76264ec7 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Mon, 25 Nov 2019 15:59:15 +0100 +Subject: [PATCH] tests/meson.build: disable nouveau tests for static build + +Signed-off-by: Peter Seiderer +--- +Notes: + + - the existing test/check for static build in meson.build does not + catch this case because e.g. the buildroot toolchain + br-arm-full-static-2019.05.1 provides an empty libdl.a + + 169 # Among others FreeBSD does not have a separate dl library. + 170 if not cc.has_function('dlsym') + 171 dep_dl = cc.find_library('dl', required : with_nouveau) + 172 else + 173 dep_dl = [] + 174 endif +--- + tests/meson.build | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/tests/meson.build b/tests/meson.build +index 6c8ddd9..f7cb5f0 100644 +--- a/tests/meson.build ++++ b/tests/meson.build +@@ -44,8 +44,11 @@ endif + if with_etnaviv + subdir('etnaviv') + endif ++lib_type = get_option('default_library') + if with_nouveau +- subdir('nouveau') ++ if lib_type != 'static' ++ subdir('nouveau') ++ endif + endif + + drmsl = executable( +-- +2.24.0 + diff --git a/package/libdrm/Config.in b/package/libdrm/Config.in new file mode 100644 index 00000000..fab8289b --- /dev/null +++ b/package/libdrm/Config.in @@ -0,0 +1,108 @@ +menuconfig BR2_PACKAGE_LIBDRM + bool "libdrm" + depends on BR2_TOOLCHAIN_HAS_THREADS # libpthread-stubs + select BR2_PACKAGE_LIBPTHREAD_STUBS + help + Direct Rendering Manager + + http://dri.freedesktop.org/libdrm/ + +if BR2_PACKAGE_LIBDRM + +config BR2_PACKAGE_LIBDRM_HAS_ATOMIC + bool + default y if BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS || \ + BR2_TOOLCHAIN_HAS_SYNC_4 + +config BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC + bool + select BR2_PACKAGE_LIBATOMIC_OPS if !BR2_TOOLCHAIN_HAS_SYNC_4 + +config BR2_PACKAGE_LIBDRM_INTEL + bool "intel" + depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC + select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC + select BR2_PACKAGE_LIBPCIACCESS + help + Install intel graphics driver. + +config BR2_PACKAGE_LIBDRM_RADEON + bool "radeon" + depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC + select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC + help + Install AMD/ATI graphics driver. + +config BR2_PACKAGE_LIBDRM_AMDGPU + bool "amdgpu" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC + select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC + help + Install AMD GPU driver. + +config BR2_PACKAGE_LIBDRM_NOUVEAU + bool "nouveau" + depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC + select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC + help + Install NVIDIA graphics driver. + +config BR2_PACKAGE_LIBDRM_VMWGFX + bool "vmwgfx" + depends on BR2_i386 || BR2_x86_64 + help + Installs Vmware graphics driver. + +config BR2_PACKAGE_LIBDRM_OMAP + bool "omap (experimental)" + depends on BR2_arm + depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC + select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC + help + Install the TI OMAP driver using an experimental API. + +config BR2_PACKAGE_LIBDRM_ETNAVIV + bool "etnaviv (experimental)" + depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC + select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC + help + Install the Etnaviv/Vivante driver using an experimental API. + +config BR2_PACKAGE_LIBDRM_EXYNOS + bool "exynos (experimental)" + depends on BR2_arm + help + Install Samsung Exynos driver using an experimental API. + +config BR2_PACKAGE_LIBDRM_FREEDRENO + bool "freedreno" + depends on BR2_arm || BR2_aarch64 || BR2_aarch64_be + depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC + select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC + help + Install Qualcomm Snapdragon driver. + +config BR2_PACKAGE_LIBDRM_TEGRA + bool "tegra (experimental)" + depends on BR2_arm + depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC + select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC + help + Install NVIDIA Tegra driver using an experimental API. + +config BR2_PACKAGE_LIBDRM_VC4 + bool "vc4" + depends on BR2_aarch64 || BR2_arm + help + Install vc4 (Raspberry Pi) driver. + +config BR2_PACKAGE_LIBDRM_INSTALL_TESTS + bool "Install test programs" + help + This option allows to install the libdrm test programs. + +endif + +comment "libdrm needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libdrm/libdrm.hash b/package/libdrm/libdrm.hash new file mode 100644 index 00000000..9d78d5e4 --- /dev/null +++ b/package/libdrm/libdrm.hash @@ -0,0 +1,6 @@ +# From https://lists.x.org/archives/xorg-announce/2024-June/003518.html +sha256 d9f5079b777dffca9300ccc56b10a93588cdfbc9dde2fae111940dfb6292f251 libdrm-2.4.122.tar.xz +sha512 ea6bac94416d4ba0e9805e142ae62904236bc49f803d4fc10c92968a4df64c818dd42524ad7a4e988062836783a148e27094050bb2754f751a368627f794ad13 libdrm-2.4.122.tar.xz + +# Hash for license file +sha256 d0a616a9020dc0271e36e6dd4bad174b4e2c2a42636f13785f8e18dd5f85fd83 data/meson.build diff --git a/package/libdrm/libdrm.mk b/package/libdrm/libdrm.mk new file mode 100644 index 00000000..ea956de1 --- /dev/null +++ b/package/libdrm/libdrm.mk @@ -0,0 +1,119 @@ +################################################################################ +# +# libdrm +# +################################################################################ + +LIBDRM_VERSION = 2.4.122 +LIBDRM_SOURCE = libdrm-$(LIBDRM_VERSION).tar.xz +LIBDRM_SITE = https://dri.freedesktop.org/libdrm +LIBDRM_LICENSE = MIT +LIBDRM_LICENSE_FILES = data/meson.build +LIBDRM_INSTALL_STAGING = YES + +LIBDRM_DEPENDENCIES = \ + libpthread-stubs \ + host-pkgconf + +LIBDRM_CONF_OPTS = \ + -Dcairo-tests=disabled \ + -Dman-pages=disabled + +ifeq ($(BR2_PACKAGE_LIBATOMIC_OPS),y) +LIBDRM_DEPENDENCIES += libatomic_ops +ifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y) +LIBDRM_CFLAGS = $(TARGET_CFLAGS) -DAO_NO_SPARC_V9 +endif +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_INTEL),y) +LIBDRM_CONF_OPTS += -Dintel=enabled +LIBDRM_DEPENDENCIES += libpciaccess +else +LIBDRM_CONF_OPTS += -Dintel=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_RADEON),y) +LIBDRM_CONF_OPTS += -Dradeon=enabled +else +LIBDRM_CONF_OPTS += -Dradeon=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_AMDGPU),y) +LIBDRM_CONF_OPTS += -Damdgpu=enabled +else +LIBDRM_CONF_OPTS += -Damdgpu=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_NOUVEAU),y) +LIBDRM_CONF_OPTS += -Dnouveau=enabled +else +LIBDRM_CONF_OPTS += -Dnouveau=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_VMWGFX),y) +LIBDRM_CONF_OPTS += -Dvmwgfx=enabled +else +LIBDRM_CONF_OPTS += -Dvmwgfx=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_OMAP),y) +LIBDRM_CONF_OPTS += -Domap=enabled +else +LIBDRM_CONF_OPTS += -Domap=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_ETNAVIV),y) +LIBDRM_CONF_OPTS += -Detnaviv=enabled +else +LIBDRM_CONF_OPTS += -Detnaviv=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_EXYNOS),y) +LIBDRM_CONF_OPTS += -Dexynos=enabled +else +LIBDRM_CONF_OPTS += -Dexynos=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_FREEDRENO),y) +LIBDRM_CONF_OPTS += -Dfreedreno=enabled +else +LIBDRM_CONF_OPTS += -Dfreedreno=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_TEGRA),y) +LIBDRM_CONF_OPTS += -Dtegra=enabled +else +LIBDRM_CONF_OPTS += -Dtegra=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_VC4),y) +LIBDRM_CONF_OPTS += -Dvc4=enabled +else +LIBDRM_CONF_OPTS += -Dvc4=disabled +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +LIBDRM_CONF_OPTS += -Dudev=true +LIBDRM_DEPENDENCIES += udev +else +LIBDRM_CONF_OPTS += -Dudev=false +endif + +ifeq ($(BR2_PACKAGE_VALGRIND),y) +LIBDRM_CONF_OPTS += -Dvalgrind=enabled +LIBDRM_DEPENDENCIES += valgrind +else +LIBDRM_CONF_OPTS += -Dvalgrind=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_INSTALL_TESTS),y) +LIBDRM_CONF_OPTS += -Dtests=true -Dinstall-test-programs=true +ifeq ($(BR2_PACKAGE_CUNIT),y) +LIBDRM_DEPENDENCIES += cunit +endif +else +LIBDRM_CONF_OPTS += -Dtests=false +endif + +$(eval $(meson-package)) diff --git a/package/libdvbcsa/0001-altivec-powerpc64.patch b/package/libdvbcsa/0001-altivec-powerpc64.patch new file mode 100644 index 00000000..3605c146 --- /dev/null +++ b/package/libdvbcsa/0001-altivec-powerpc64.patch @@ -0,0 +1,33 @@ +Fix compile on powerpc64/powerpc64le w/ altivec + +Correct the type of some vectors passed to vec_slo() or vec_sro(), which only +takes a char vector. + +Signed-off-by: Sam Bobroff + +--- a/src/dvbcsa_bs_altivec.h 2016-11-28 14:33:34.410021500 +1100 ++++ b/src/dvbcsa_bs_altivec.h 2016-11-28 14:34:25.442238715 +1100 +@@ -64,7 +64,7 @@ + } + case 0x29: { + dvbcsa_bs_word_t x = vec_splat_u8(10); +- return (dvbcsa_bs_word_t)vec_add(vec_splat_u8(0x1),vec_rl(x,x)); ++ return (dvbcsa_bs_word_t)vec_add((dvbcsa_bs_word_t)vec_splat_u8(0x1),vec_rl(x,x)); + } + case 0x40: { + dvbcsa_bs_word_t x = vec_splat_u8(4); +@@ -99,10 +99,10 @@ + #define SHVAL_14 BS_VAL8(0e) + #define SHVAL_7 BS_VAL8(07) + +-#define BS_SHL(a, n) ({ dvbcsa_bs_word_t x = SHVAL_##n; vec_sll(vec_slo((a), x), x); }) +-#define BS_SHR(a, n) ({ dvbcsa_bs_word_t x = SHVAL_##n; vec_srl(vec_sro((a), x), x); }) +-#define BS_SHL8(a, n) ({ dvbcsa_bs_word_t x = vec_splat_u8(n*2); x = vec_add(x,x); x = vec_add(x,x); vec_slo((a), x); }) +-#define BS_SHR8(a, n) ({ dvbcsa_bs_word_t x = vec_splat_u8(n*2); x = vec_add(x,x); x = vec_add(x,x); vec_sro((a), x); }) ++#define BS_SHL(a, n) ({ vector unsigned char x = SHVAL_##n; vec_sll(vec_slo((a), x), x); }) ++#define BS_SHR(a, n) ({ vector unsigned char x = SHVAL_##n; vec_srl(vec_sro((a), x), x); }) ++#define BS_SHL8(a, n) ({ vector unsigned char x = vec_splat_u8(n*2); x = vec_add(x,x); x = vec_add(x,x); vec_slo((a), x); }) ++#define BS_SHR8(a, n) ({ vector unsigned char x = vec_splat_u8(n*2); x = vec_add(x,x); x = vec_add(x,x); vec_sro((a), x); }) + + #define BS_EXTRACT8(a, n) ((uint8_t*)&(a))[15 - (n)] + diff --git a/package/libdvbcsa/Config.in b/package/libdvbcsa/Config.in new file mode 100644 index 00000000..1253ffbb --- /dev/null +++ b/package/libdvbcsa/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBDVBCSA + bool "libdvbcsa" + help + libdvbcsa is a free implementation of the DVB Common + Scrambling Algorithm - DVB/CSA - with encryption and + decryption capabilities + + As libdvbcsa implements a standard, it is completely legal to + use it. + + http://www.videolan.org/developers/libdvbcsa.html diff --git a/package/libdvbcsa/libdvbcsa.hash b/package/libdvbcsa/libdvbcsa.hash new file mode 100644 index 00000000..03ac7612 --- /dev/null +++ b/package/libdvbcsa/libdvbcsa.hash @@ -0,0 +1,7 @@ +# From http://download.videolan.org/pub/videolan/libdvbcsa/1.1.0/libdvbcsa-1.1.0.tar.gz.sha256 +sha256 4db78af5cdb2641dfb1136fe3531960a477c9e3e3b6ba19a2754d046af3f456d libdvbcsa-1.1.0.tar.gz +# From http://download.videolan.org/pub/videolan/libdvbcsa/1.1.0/libdvbcsa-1.1.0.tar.gz.sha1 +sha1 5f4640a7e93ae6494f24a881414e5c343f803365 libdvbcsa-1.1.0.tar.gz + +# Hash for license file: +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/libdvbcsa/libdvbcsa.mk b/package/libdvbcsa/libdvbcsa.mk new file mode 100644 index 00000000..8b733e74 --- /dev/null +++ b/package/libdvbcsa/libdvbcsa.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# libdvbcsa +# +################################################################################ + +LIBDVBCSA_VERSION = 1.1.0 +LIBDVBCSA_SITE = http://get.videolan.org/libdvbcsa/$(LIBDVBCSA_VERSION) +LIBDVBCSA_LICENSE = GPL-2.0+ +LIBDVBCSA_LICENSE_FILES = COPYING +LIBDVBCSA_INSTALL_STAGING = YES + +ifeq ($(BR2_X86_CPU_HAS_MMX),y) +LIBDVBCSA_CONF_OPTS += --enable-mmx +else +LIBDVBCSA_CONF_OPTS += --disable-mmx +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE2),y) +LIBDVBCSA_CONF_OPTS += --enable-sse2 +else +LIBDVBCSA_CONF_OPTS += --disable-sse2 +endif + +ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y) +LIBDVBCSA_CONF_OPTS += --enable-altivec +LIBDVBCSA_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -flax-vector-conversions" +else +LIBDVBCSA_CONF_OPTS += --disable-altivec +endif + +$(eval $(autotools-package)) diff --git a/package/libdvbpsi/Config.in b/package/libdvbpsi/Config.in new file mode 100644 index 00000000..e52079bb --- /dev/null +++ b/package/libdvbpsi/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBDVBPSI + bool "libdvbpsi" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + libdvbpsi is a simple library designed for decoding and + generation of MPEG TS and DVB PSI tables according to + standards ISO/IEC 13818 and ITU-T H.222.0. + + http://www.videolan.org/developers/libdvbpsi.html + +comment "libdvbpsi needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libdvbpsi/libdvbpsi.hash b/package/libdvbpsi/libdvbpsi.hash new file mode 100644 index 00000000..acf43488 --- /dev/null +++ b/package/libdvbpsi/libdvbpsi.hash @@ -0,0 +1,6 @@ +# From http://download.videolan.org/pub/libdvbpsi/1.3.3/libdvbpsi-1.3.3.tar.bz2.md5 +md5 9b556ab08bb62a8bec61f5c1649bc9a8 libdvbpsi-1.3.3.tar.bz2 +# From http://download.videolan.org/pub/libdvbpsi/1.3.3/libdvbpsi-1.3.3.tar.bz2.sha256 +sha256 02b5998bcf289cdfbd8757bedd5987e681309b0a25b3ffe6cebae599f7a00112 libdvbpsi-1.3.3.tar.bz2 +# Hash for license file: +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/libdvbpsi/libdvbpsi.mk b/package/libdvbpsi/libdvbpsi.mk new file mode 100644 index 00000000..5a07ad0c --- /dev/null +++ b/package/libdvbpsi/libdvbpsi.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libdvbpsi +# +################################################################################ + +LIBDVBPSI_VERSION = 1.3.3 +LIBDVBPSI_SITE = http://download.videolan.org/pub/libdvbpsi/$(LIBDVBPSI_VERSION) +LIBDVBPSI_SOURCE = libdvbpsi-$(LIBDVBPSI_VERSION).tar.bz2 +LIBDVBPSI_LICENSE = LGPL-2.1+ +LIBDVBPSI_LICENSE_FILES = COPYING +LIBDVBPSI_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/libdvbsi/Config.in b/package/libdvbsi/Config.in new file mode 100644 index 00000000..fa0dcea4 --- /dev/null +++ b/package/libdvbsi/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBDVBSI + bool "libdvbsi" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + help + C++ parsing library for Service Information (SI) in DVB + systems. With libdvbsi++ you can convert raw DVB service + information to a set of C++ objects, removing the need to + parse data manually. + + http://www.saftware.de/ + +comment "libdvbsi++ needs a toolchain w/ C++, wchar, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libdvbsi/libdvbsi.hash b/package/libdvbsi/libdvbsi.hash new file mode 100644 index 00000000..5f731a19 --- /dev/null +++ b/package/libdvbsi/libdvbsi.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a57949b842d94efedd895f2bd8e483c9f258e698092e35f1c3fdccb45b790953 libdvbsi++-0.3.9.tar.bz2 +sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 COPYING diff --git a/package/libdvbsi/libdvbsi.mk b/package/libdvbsi/libdvbsi.mk new file mode 100644 index 00000000..65191b81 --- /dev/null +++ b/package/libdvbsi/libdvbsi.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libdvbsi +# +################################################################################ + +LIBDVBSI_VERSION = 0.3.9 +LIBDVBSI_SOURCE = libdvbsi++-$(LIBDVBSI_VERSION).tar.bz2 +LIBDVBSI_SITE = https://github.com/mtdcr/libdvbsi/releases/download/$(LIBDVBSI_VERSION) +LIBDVBSI_INSTALL_STAGING = YES +LIBDVBSI_LICENSE = LGPL-2.1 +LIBDVBSI_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/libdvdcss/Config.in b/package/libdvdcss/Config.in new file mode 100644 index 00000000..a8c3b84c --- /dev/null +++ b/package/libdvdcss/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBDVDCSS + bool "libdvdcss" + help + libdvdcss is a simple library designed for accessing DVDs like + a block device without having to bother about the decryption. + + http://www.videolan.org/developers/libdvdcss.html diff --git a/package/libdvdcss/libdvdcss.hash b/package/libdvdcss/libdvdcss.hash new file mode 100644 index 00000000..4d20f19e --- /dev/null +++ b/package/libdvdcss/libdvdcss.hash @@ -0,0 +1,7 @@ +# From http://download.videolan.org/pub/videolan/libdvdcss/1.4.3/libdvdcss-1.4.3.tar.bz2.sha1 +sha1 fcea8b2749ead8183636e48300bea8791abc79ee libdvdcss-1.4.3.tar.bz2 +# From http://download.videolan.org/pub/videolan/libdvdcss/1.4.3/libdvdcss-1.4.3.tar.bz2.sha256 +sha256 233cc92f5dc01c5d3a96f5b3582be7d5cee5a35a52d3a08158745d3d86070079 libdvdcss-1.4.3.tar.bz2 + +# Hash for license file: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/libdvdcss/libdvdcss.mk b/package/libdvdcss/libdvdcss.mk new file mode 100644 index 00000000..f4d72177 --- /dev/null +++ b/package/libdvdcss/libdvdcss.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libdvdcss +# +################################################################################ + +LIBDVDCSS_VERSION = 1.4.3 +LIBDVDCSS_SOURCE = libdvdcss-$(LIBDVDCSS_VERSION).tar.bz2 +LIBDVDCSS_SITE = http://www.videolan.org/pub/videolan/libdvdcss/$(LIBDVDCSS_VERSION) +LIBDVDCSS_INSTALL_STAGING = YES +LIBDVDCSS_LICENSE = GPL-2.0+ +LIBDVDCSS_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/libdvdnav/Config.in b/package/libdvdnav/Config.in new file mode 100644 index 00000000..77cba5f1 --- /dev/null +++ b/package/libdvdnav/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBDVDNAV + bool "libdvdnav" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBDVDREAD + help + libdvdnav is a library that allows easy use of sophisticated + DVD navigation features such as DVD menus, multiangle + playback and even interactive DVD games. + + https://www.videolan.org/developers/libdvdnav.html + +comment "libdvdnav needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libdvdnav/libdvdnav.hash b/package/libdvdnav/libdvdnav.hash new file mode 100644 index 00000000..61d64b8e --- /dev/null +++ b/package/libdvdnav/libdvdnav.hash @@ -0,0 +1,7 @@ +# From http://download.videolan.org/pub/videolan/libdvdnav/6.1.1/libdvdnav-6.1.1.tar.bz2.sha1 +sha1 7ac76aa95d046db715763da23b7053b65cbc7540 libdvdnav-6.1.1.tar.bz2 +# From http://download.videolan.org/pub/videolan/libdvdnav/6.1.1/libdvdnav-6.1.1.tar.bz2.sha256 +sha256 c191a7475947d323ff7680cf92c0fb1be8237701885f37656c64d04e98d18d48 libdvdnav-6.1.1.tar.bz2 + +# Hash for license file: +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/libdvdnav/libdvdnav.mk b/package/libdvdnav/libdvdnav.mk new file mode 100644 index 00000000..e34c0710 --- /dev/null +++ b/package/libdvdnav/libdvdnav.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libdvdnav +# +################################################################################ + +LIBDVDNAV_VERSION = 6.1.1 +LIBDVDNAV_SOURCE = libdvdnav-$(LIBDVDNAV_VERSION).tar.bz2 +LIBDVDNAV_SITE = http://www.videolan.org/pub/videolan/libdvdnav/$(LIBDVDNAV_VERSION) +LIBDVDNAV_INSTALL_STAGING = YES +LIBDVDNAV_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -std=gnu99" +LIBDVDNAV_DEPENDENCIES = libdvdread host-pkgconf +LIBDVDNAV_LICENSE = GPL-2.0+ +LIBDVDNAV_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/libdvdread/Config.in b/package/libdvdread/Config.in new file mode 100644 index 00000000..35790541 --- /dev/null +++ b/package/libdvdread/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBDVDREAD + bool "libdvdread" + select BR2_PACKAGE_LIBDVDCSS + help + libdvdread provides a simple foundation for reading + DVD-Video images. + + https://www.videolan.org/developers/libdvdnav.html diff --git a/package/libdvdread/libdvdread.hash b/package/libdvdread/libdvdread.hash new file mode 100644 index 00000000..7fe02107 --- /dev/null +++ b/package/libdvdread/libdvdread.hash @@ -0,0 +1,7 @@ +# From http://download.videolan.org/pub/videolan/libdvdread/6.1.3/libdvdread-6.1.3.tar.bz2.sha1 +sha1 5e5721ff6ed01a9af9214be0d6563303e8bf2bed libdvdread-6.1.3.tar.bz2 +# From http://download.videolan.org/pub/videolan/libdvdread/6.1.3/libdvdread-6.1.3.tar.bz2.sha256 +sha256 ce35454997a208cbe50e91232f0e73fb1ac3471965813a13b8730a8f18a15369 libdvdread-6.1.3.tar.bz2 + +# Hash for license file: +sha256 d6cb0e9e560f51085556949a84af12b79a00f10ab8b66c752537faf7cd665572 COPYING diff --git a/package/libdvdread/libdvdread.mk b/package/libdvdread/libdvdread.mk new file mode 100644 index 00000000..bc486891 --- /dev/null +++ b/package/libdvdread/libdvdread.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libdvdread +# +################################################################################ + +LIBDVDREAD_VERSION = 6.1.3 +LIBDVDREAD_SOURCE = libdvdread-$(LIBDVDREAD_VERSION).tar.bz2 +LIBDVDREAD_SITE = http://www.videolan.org/pub/videolan/libdvdread/$(LIBDVDREAD_VERSION) +LIBDVDREAD_INSTALL_STAGING = YES +LIBDVDREAD_LICENSE = GPL-2.0+ +LIBDVDREAD_LICENSE_FILES = COPYING +LIBDVDREAD_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -std=gnu99" +LIBDVDREAD_CONF_OPTS = --with-libdvdcss +LIBDVDREAD_DEPENDENCIES = libdvdcss host-pkgconf + +$(eval $(autotools-package)) diff --git a/package/libeXosip2/0001-src-eXtl_dtls.c-fix-build-with-libressl-3.4.1.patch b/package/libeXosip2/0001-src-eXtl_dtls.c-fix-build-with-libressl-3.4.1.patch new file mode 100644 index 00000000..0b4be43b --- /dev/null +++ b/package/libeXosip2/0001-src-eXtl_dtls.c-fix-build-with-libressl-3.4.1.patch @@ -0,0 +1,43 @@ +From 4201c0ff3fd75e09025d515c427f85f9fec89621 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 5 Apr 2022 22:27:35 +0200 +Subject: [PATCH] src/eXtl_dtls.c: fix build with libressl >= 3.4.1 + +Fix the following build failure with libressl >= 3.4.1 which provides +SSL_set0_rbio() since +https://github.com/libressl-portable/openbsd/commit/c99939f9665a9c3c648682b4987df46600b70efc: + +In file included from eXtl_dtls.c:82: +/home/autobuild/autobuild/instance-4/output-1/host/x86_64-buildroot-linux-musl/sysroot/usr/include/openssl/ssl.h:1272:6: note: previous declaration of 'SSL_set0_rbio' was here + 1272 | void SSL_set0_rbio(SSL *s, BIO *rbio); + | ^~~~~~~~~~~~~ +eXtl_dtls.c: In function 'SSL_set0_rbio': +eXtl_dtls.c:108:17: error: invalid use of incomplete typedef 'SSL' {aka 'struct ssl_st'} + 108 | BIO_free_all(s->rbio); + | ^~ + +Fixes: + - http://autobuild.buildroot.org/results/dfafdbf71b31fbda1b5ba491ac35239af4a20aa2 + +Signed-off-by: Fabrice Fontaine +[Upstream status: sent to amoizard@antisip.com] +--- + src/eXtl_dtls.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/eXtl_dtls.c b/src/eXtl_dtls.c +index 07c0dc2..d0bd7dc 100644 +--- a/src/eXtl_dtls.c ++++ b/src/eXtl_dtls.c +@@ -102,7 +102,7 @@ + #define RANDOM "random.pem" + #define DHFILE "dh1024.pem" + +-#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x3040100L) + + static void SSL_set0_rbio(SSL *s, BIO *rbio) { + BIO_free_all(s->rbio); +-- +2.35.1 + diff --git a/package/libeXosip2/Config.in b/package/libeXosip2/Config.in new file mode 100644 index 00000000..9fbe9789 --- /dev/null +++ b/package/libeXosip2/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBEXOSIP2 + bool "libeXosip2" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBOSIP2 + help + eXosip is a library that hides the complexity of using the + SIP protocol for multimedia session establishment. + This protocol is mainly to be used by VoIP telephony + applications (endpoints or conference server) but might be + also useful for any application that wish to establish + sessions like multiplayer games. + eXosip is based in libosip. + + http://savannah.nongnu.org/projects/exosip/ diff --git a/package/libeXosip2/libeXosip2.hash b/package/libeXosip2/libeXosip2.hash new file mode 100644 index 00000000..5cfee3ab --- /dev/null +++ b/package/libeXosip2/libeXosip2.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 5b7823986431ea5cedc9f095d6964ace966f093b2ae7d0b08404788bfcebc9c2 libexosip2-5.3.0.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/libeXosip2/libeXosip2.mk b/package/libeXosip2/libeXosip2.mk new file mode 100644 index 00000000..86d821b0 --- /dev/null +++ b/package/libeXosip2/libeXosip2.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# libexosip2 +# +################################################################################ + +LIBEXOSIP2_VERSION = 5.3.0 +# Since version 5.0, letter 'X' in library's name is in lower case +LIBEXOSIP2_SOURCE = libexosip2-$(LIBEXOSIP2_VERSION).tar.gz +LIBEXOSIP2_SITE = http://download.savannah.gnu.org/releases/exosip +LIBEXOSIP2_INSTALL_STAGING = YES +LIBEXOSIP2_LICENSE = GPL-2.0+ +LIBEXOSIP2_LICENSE_FILES = COPYING +LIBEXOSIP2_CPE_ID_VENDOR = gnu +LIBEXOSIP2_CPE_ID_PRODUCT = exosip + +LIBEXOSIP2_DEPENDENCIES = host-pkgconf libosip2 + +ifeq ($(BR2_arc),y) +# toolchain __arc__ define conflicts with libeXosip2 source +LIBEXOSIP2_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -U__arc__" +endif + +ifeq ($(BR2_PACKAGE_C_ARES),y) +LIBEXOSIP2_DEPENDENCIES += c-ares +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBEXOSIP2_DEPENDENCIES += openssl +LIBEXOSIP2_CONF_OPTS += --enable-openssl +else +LIBEXOSIP2_CONF_OPTS += --disable-openssl +endif + +LIBEXOSIP2_CONF_OPTS += \ + --enable-mt=$(if $(BR2_TOOLCHAIN_HAS_THREADS),yes,no) + +$(eval $(autotools-package)) diff --git a/package/libeastl/Config.in b/package/libeastl/Config.in new file mode 100644 index 00000000..738b293b --- /dev/null +++ b/package/libeastl/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_LIBEASTL_ARCH_SUPPORTS + bool + default y if BR2_i386 + default y if BR2_x86_64 + default y if BR2_aarch64 + default y if BR2_powerpc + default y if BR2_powerpc64 + +config BR2_PACKAGE_LIBEASTL + bool "libeastl" + depends on BR2_PACKAGE_LIBEASTL_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14 + depends on BR2_TOOLCHAIN_HAS_THREADS + help + EASTL stands for Electronic Arts Standard Template + Library. It is a C++ template library of containers, + algorithms, and iterators useful for runtime and tool + development across multiple platforms. It is an extensive + and robust implementation that has an emphasis on high + performance. + + https://github.com/electronicarts/EASTL + +comment "libeastl needs a toolchain w/ C++, threads, gcc >= 4.9" + depends on BR2_PACKAGE_LIBEASTL_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP diff --git a/package/libeastl/libeastl.hash b/package/libeastl/libeastl.hash new file mode 100644 index 00000000..c7ba6da0 --- /dev/null +++ b/package/libeastl/libeastl.hash @@ -0,0 +1,2 @@ +sha256 9b3484553812b3ec3bad0857f7f675499c81f7cf4ac87e5f3b2acbe72e3a878a libeastl-45469730d641868ce05433fff2e199510c7d45c3.tar.gz +sha256 82c0243a1a62b8af01dab3bce6ed2b0852604bd508b85a561ba7d32480e598e3 LICENSE diff --git a/package/libeastl/libeastl.mk b/package/libeastl/libeastl.mk new file mode 100644 index 00000000..0559dd85 --- /dev/null +++ b/package/libeastl/libeastl.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# libeastl +# +################################################################################ + +LIBEASTL_VERSION = 45469730d641868ce05433fff2e199510c7d45c3 +LIBEASTL_SITE = $(call github,electronicarts,EASTL,$(LIBEASTL_VERSION)) +LIBEASTL_LICENSE = BSD-3-Clause +LIBEASTL_LICENSE_FILES = LICENSE +LIBEASTL_INSTALL_STAGING = YES + +$(eval $(cmake-package)) diff --git a/package/libebml/Config.in b/package/libebml/Config.in new file mode 100644 index 00000000..b770154a --- /dev/null +++ b/package/libebml/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBEBML + bool "libebml" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14 + help + Access library for the EBML (Extensible Binary Meta + Language, a binary derivative of XML) format. + + http://matroska.org + +comment "libebml needs a toolchain w/ C++, wchar, gcc >= 4.9" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/libebml/libebml.hash b/package/libebml/libebml.hash new file mode 100644 index 00000000..34626eb1 --- /dev/null +++ b/package/libebml/libebml.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 4971640b0592da29c2d426f303e137a9b0b3d07e1b81d069c1e56a2f49ab221b libebml-1.4.5.tar.xz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSE.LGPL diff --git a/package/libebml/libebml.mk b/package/libebml/libebml.mk new file mode 100644 index 00000000..0f69de8c --- /dev/null +++ b/package/libebml/libebml.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libebml +# +################################################################################ + +LIBEBML_VERSION = 1.4.5 +LIBEBML_SOURCE = libebml-$(LIBEBML_VERSION).tar.xz +LIBEBML_SITE = http://dl.matroska.org/downloads/libebml +LIBEBML_INSTALL_STAGING = YES +LIBEBML_LICENSE = LGPL-2.1+ +LIBEBML_LICENSE_FILES = LICENSE.LGPL +LIBEBML_CPE_ID_VENDOR = matroska + +$(eval $(cmake-package)) diff --git a/package/libebur128/Config.in b/package/libebur128/Config.in new file mode 100644 index 00000000..0d68b39d --- /dev/null +++ b/package/libebur128/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBEBUR128 + bool "libebur128" + # build system has no support to disable shared linking + # leading to a build error with a static-only toolchain + depends on !BR2_STATIC_LIBS + help + libebur128 is a library that implements the EBU R 128 standard + for loudness normalization. + + https://github.com/jiixyj/libebur128 + +comment "libebur128 needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/libebur128/libebur128.hash b/package/libebur128/libebur128.hash new file mode 100644 index 00000000..9c8c9e0c --- /dev/null +++ b/package/libebur128/libebur128.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 baa7fc293a3d4651e244d8022ad03ab797ca3c2ad8442c43199afe8059faa613 libebur128-1.2.6.tar.gz +sha256 d6b4754bb67bdd08b97d5d11b2d7434997a371585a78fe77007149df3af8d09c COPYING diff --git a/package/libebur128/libebur128.mk b/package/libebur128/libebur128.mk new file mode 100644 index 00000000..b7272fa7 --- /dev/null +++ b/package/libebur128/libebur128.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# libebur128 +# +################################################################################ + +LIBEBUR128_VERSION = 1.2.6 +LIBEBUR128_SITE = $(call github,jiixyj,libebur128,v$(LIBEBUR128_VERSION)) +LIBEBUR128_LICENSE = MIT +LIBEBUR128_LICENSE_FILES = COPYING +LIBEBUR128_INSTALL_STAGING = YES + +$(eval $(cmake-package)) diff --git a/package/libedit/0001-check-bsd-functions-in-libbsd.patch b/package/libedit/0001-check-bsd-functions-in-libbsd.patch new file mode 100644 index 00000000..5f056ff5 --- /dev/null +++ b/package/libedit/0001-check-bsd-functions-in-libbsd.patch @@ -0,0 +1,22 @@ +configure: on Linux, the BSD functions require linking against libbsd + +Signed-off-by: "Fabrice Fontaine" +(Rebased against 20210910-3.1) +Signed-off-by: "Yann E. MORIN" +(Rebased against 20150325-3.1 & 20221030-3.1) +Signed-off-by: Bernd Kuhls + +diff -durN libedit-20130712-3.1.orig/configure.ac libedit-20130712-3.1/configure.ac +--- libedit-20130712-3.1.orig/configure.ac 2013-07-12 20:39:22.000000000 +0200 ++++ libedit-20130712-3.1/configure.ac 2013-07-28 23:35:35.012676469 +0200 +@@ -119,6 +119,10 @@ + #AC_FUNC_MALLOC + #AC_FUNC_REALLOC + AC_FUNC_STAT ++ ++# Search for libbsd for *vis functions ++AC_CHECK_LIB([bsd], [vis]) ++ + AC_CHECK_FUNCS([endpwent isascii memchr memset re_comp regcomp strcasecmp strchr strcspn strdup strerror strrchr strstr strtol issetugid wcsdup strlcpy strlcat vis strvis strunvis __secure_getenv secure_getenv reallocarr]) + + # strlcpy diff --git a/package/libedit/0002-add-sys-types_h.patch b/package/libedit/0002-add-sys-types_h.patch new file mode 100644 index 00000000..26aa906e --- /dev/null +++ b/package/libedit/0002-add-sys-types_h.patch @@ -0,0 +1,15 @@ +Signed-off-by: Waldemar Brodkorb +Upstream: N/A only reachable via mail + +diff -Nur libedit-20221030-3.1.orig/src/sys.h libedit-20221030-3.1/src/sys.h +--- libedit-20221030-3.1.orig/src/sys.h 2022-10-30 06:35:40.000000000 +0100 ++++ libedit-20221030-3.1/src/sys.h 2023-08-12 09:52:28.137223311 +0200 +@@ -40,7 +40,7 @@ + #ifndef _h_sys + #define _h_sys + +-#if defined(HAVE_SYS_TYPES_H) && defined(__sun) ++#if defined(HAVE_SYS_TYPES_H) + #include + #endif + diff --git a/package/libedit/Config.in b/package/libedit/Config.in new file mode 100644 index 00000000..8ccf3edc --- /dev/null +++ b/package/libedit/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_LIBEDIT + bool "libedit" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_NCURSES + help + The editline library (from BSD) provides generic line editing + and history functions. It slightly resembles GNU readline. + + The official homepage is at: + http://ftp.netbsd.org/pub/NetBSD/NetBSD-release-5-0/src/lib/libedit/ + + Jess Thrysoee maintains an autotoolified package, which we use + in Buildroot as it makes it much simpler than using the + upstream sources which require pmake. + + http://www.thrysoee.dk/editline + +comment "libedit needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR diff --git a/package/libedit/libedit.hash b/package/libedit/libedit.hash new file mode 100644 index 00000000..c2ed7f77 --- /dev/null +++ b/package/libedit/libedit.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 4ee8182b6e569290e7d1f44f0f78dac8716b35f656b76528f699c69c98814dad libedit-20230828-3.1.tar.gz +sha256 9da6c9c74987a36c84302982799d17d2f748ba1c1c0c471425716173c1d07649 COPYING diff --git a/package/libedit/libedit.mk b/package/libedit/libedit.mk new file mode 100644 index 00000000..98e29a9b --- /dev/null +++ b/package/libedit/libedit.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# libedit +# +################################################################################ + +LIBEDIT_VERSION = 20230828-3.1 +LIBEDIT_SITE = https://www.thrysoee.dk/editline +LIBEDIT_INSTALL_STAGING = YES +LIBEDIT_DEPENDENCIES = ncurses +LIBEDIT_LICENSE = BSD-3-Clause +LIBEDIT_LICENSE_FILES = COPYING +LIBEDIT_CPE_ID_VALID = YES + +# We're patching configure.ac +LIBEDIT_AUTORECONF = YES + +# musl is ISO 10646 compliant but doesn't define __STDC_ISO_10646__, +# so let's define it manually +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +LIBEDIT_CONF_OPTS += CFLAGS="$(TARGET_CFLAGS) -D__STDC_ISO_10646__=201103L" +endif + +# Note: libbsd required for *vis functions, but works only with a toolchain +# with __progname; otherwise, some features are disabled, as if libbsd was +# missing entirely. +ifeq ($(BR2_PACKAGE_LIBBSD),y) +LIBEDIT_DEPENDENCIES += libbsd +endif + +$(eval $(autotools-package)) diff --git a/package/libee/Config.in b/package/libee/Config.in new file mode 100644 index 00000000..9a3411ef --- /dev/null +++ b/package/libee/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_LIBEE + bool "libee" + select BR2_PACKAGE_LIBESTR + help + An Event Expression Library inspired by CEE. + + CEE is an upcoming standard used to describe network + events in a number of normalized formats. It's goal is + to unify they currently many different representations + that exist in the industry. + + The core idea of libee is to provide a small but hopefully + convenient API layer above the CEE standard. However, CEE + is not finished. At the time of this writing, CEE is under + heavy development and even some of its core data structures + (like the data dictionary and taxonmy) have not been fully + specified. + + http://www.libee.org diff --git a/package/libee/libee.hash b/package/libee/libee.hash new file mode 100644 index 00000000..4783bbc2 --- /dev/null +++ b/package/libee/libee.hash @@ -0,0 +1,5 @@ +# From http://www.libee.org/download/libee-0-4-1/ +md5 7bbf4160876c12db6193c06e2badedb2 libee-0.4.1.tar.gz + +# Hash for license file: +sha256 275fecbf835387e042ba96884f0f05356a485a6ea8449b2c5295cc11652ad439 COPYING diff --git a/package/libee/libee.mk b/package/libee/libee.mk new file mode 100644 index 00000000..9879eff3 --- /dev/null +++ b/package/libee/libee.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libee +# +################################################################################ + +LIBEE_VERSION = 0.4.1 +LIBEE_SITE = http://www.libee.org/download/files/download +LIBEE_LICENSE = LGPL-2.1+ +LIBEE_LICENSE_FILES = COPYING +LIBEE_DEPENDENCIES = libestr host-pkgconf +LIBEE_INSTALL_STAGING = YES + +LIBEE_MAKE = $(MAKE1) + +$(eval $(autotools-package)) diff --git a/package/libenca/Config.in b/package/libenca/Config.in new file mode 100644 index 00000000..5e951ed8 --- /dev/null +++ b/package/libenca/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBENCA + bool "libenca" + help + Extremely Naive Charset Analyser + + http://cihar.com/software/enca/ diff --git a/package/libenca/libenca.hash b/package/libenca/libenca.hash new file mode 100644 index 00000000..04c9d512 --- /dev/null +++ b/package/libenca/libenca.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3a487eca40b41021e2e4b7a6440b97d822e6532db5464471f572ecf77295e8b8 enca-1.19.tar.xz +sha256 87f1bd4a52b4029476b684fcdd51fed3c6b2540e462d3c2d3bfc9be4558b2825 COPYING diff --git a/package/libenca/libenca.mk b/package/libenca/libenca.mk new file mode 100644 index 00000000..63b68950 --- /dev/null +++ b/package/libenca/libenca.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# libenca +# +################################################################################ + +LIBENCA_VERSION = 1.19 +LIBENCA_SITE = http://dl.cihar.com/enca +LIBENCA_SOURCE = enca-$(LIBENCA_VERSION).tar.xz +LIBENCA_INSTALL_STAGING = YES +LIBENCA_LICENSE = GPL-2.0 +LIBENCA_LICENSE_FILES = COPYING +LIBENCA_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv) + +LIBENCA_CONF_ENV += \ + ac_cv_file__dev_random=yes \ + ac_cv_file__dev_urandom=yes \ + ac_cv_file__dev_arandom=no \ + ac_cv_file__dev_srandom=no + +define LIBENCA_MAKE_HOST_TOOL + $(MAKE) -C $(@D)/tools $(HOST_CONFIGURE_OPTS) make_hash +endef + +LIBENCA_PRE_BUILD_HOOKS += LIBENCA_MAKE_HOST_TOOL + +$(eval $(autotools-package)) diff --git a/package/libepoxy/Config.in b/package/libepoxy/Config.in new file mode 100644 index 00000000..9da190b8 --- /dev/null +++ b/package/libepoxy/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBEPOXY + bool "libepoxy" + depends on BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_XUTIL_UTIL_MACROS + help + Epoxy is a library for handling OpenGL function pointer + management for you. + + https://github.com/anholt/libepoxy + +comment "libepoxy needs an OpenGL and/or OpenGL EGL backend" + depends on !BR2_PACKAGE_HAS_LIBEGL && !BR2_PACKAGE_HAS_LIBGL diff --git a/package/libepoxy/libepoxy.hash b/package/libepoxy/libepoxy.hash new file mode 100644 index 00000000..27adb70f --- /dev/null +++ b/package/libepoxy/libepoxy.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/libepoxy/1.5/libepoxy-1.5.10.sha256sum +sha256 072cda4b59dd098bba8c2363a6247299db1fa89411dc221c8b81b8ee8192e623 libepoxy-1.5.10.tar.xz + +# Hashes for license files: +sha256 8d5144666f9c4df9bbd69b8900086d5979259152a1060421cdcc0fb9061a1c12 COPYING diff --git a/package/libepoxy/libepoxy.mk b/package/libepoxy/libepoxy.mk new file mode 100644 index 00000000..16304288 --- /dev/null +++ b/package/libepoxy/libepoxy.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# libepoxy +# +################################################################################ + +LIBEPOXY_VERSION_MAJOR = 1.5 +LIBEPOXY_VERSION = $(LIBEPOXY_VERSION_MAJOR).10 +LIBEPOXY_SITE = https://download.gnome.org/sources/libepoxy/$(LIBEPOXY_VERSION_MAJOR) +LIBEPOXY_SOURCE = libepoxy-$(LIBEPOXY_VERSION).tar.xz +LIBEPOXY_INSTALL_STAGING = YES +LIBEPOXY_DEPENDENCIES = host-pkgconf xutil_util-macros +LIBEPOXY_LICENSE = MIT +LIBEPOXY_LICENSE_FILES = COPYING +LIBEPOXY_CONF_OPTS += -Ddocs=false -Dtests=false + +ifeq ($(BR2_PACKAGE_HAS_LIBEGL),y) +LIBEPOXY_CONF_OPTS += -Degl=yes +LIBEPOXY_DEPENDENCIES += libegl +else +LIBEPOXY_CONF_OPTS += -Degl=no +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGL)$(BR2_PACKAGE_XLIB_LIBX11),yy) +LIBEPOXY_CONF_OPTS += -Dglx=yes -Dx11=true +LIBEPOXY_DEPENDENCIES += libgl xlib_libX11 +else +LIBEPOXY_CONF_OPTS += -Dglx=no -Dx11=false +endif + +$(eval $(meson-package)) diff --git a/package/liberation/Config.in b/package/liberation/Config.in new file mode 100644 index 00000000..8d6b3e78 --- /dev/null +++ b/package/liberation/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_LIBERATION + bool "Liberation (Free fonts)" + help + The Liberation Fonts are intended to be replacements for the + three most commonly used fonts on Microsoft systems: + Times New Roman, Arial, and Courier New. + + https://github.com/liberationfonts/liberation-fonts + +if BR2_PACKAGE_LIBERATION + +config BR2_PACKAGE_LIBERATION_MONO + bool "mono fonts" + default y + +config BR2_PACKAGE_LIBERATION_SANS + bool "sans fonts" + default y + +config BR2_PACKAGE_LIBERATION_SERIF + bool "serif fonts" + default y + +endif diff --git a/package/liberation/liberation.hash b/package/liberation/liberation.hash new file mode 100644 index 00000000..70b44e48 --- /dev/null +++ b/package/liberation/liberation.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 7191c669bf38899f73a2094ed00f7b800553364f90e2637010a69c0e268f25d0 liberation-fonts-ttf-2.1.5.tar.gz +sha256 93fed46019c38bbe566b479d22148e2e8a1e85ada614accb0211c37b2c61c19b LICENSE diff --git a/package/liberation/liberation.mk b/package/liberation/liberation.mk new file mode 100644 index 00000000..35f06dc2 --- /dev/null +++ b/package/liberation/liberation.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# liberation +# +################################################################################ + +LIBERATION_VERSION = 2.1.5 +LIBERATION_SITE = https://github.com/liberationfonts/liberation-fonts/files/7261482 +LIBERATION_SOURCE = liberation-fonts-ttf-$(LIBERATION_VERSION).tar.gz +LIBERATION_TARGET_DIR = $(TARGET_DIR)/usr/share/fonts/liberation +LIBERATION_LICENSE = OFL-1.1 +LIBERATION_LICENSE_FILES = LICENSE + +ifeq ($(BR2_PACKAGE_LIBERATION_MONO),y) +define LIBERATION_INSTALL_MONO + $(INSTALL) -m 644 $(@D)/LiberationMono*.ttf $(LIBERATION_TARGET_DIR) +endef +endif + +ifeq ($(BR2_PACKAGE_LIBERATION_SANS),y) +define LIBERATION_INSTALL_SANS + $(INSTALL) -m 644 $(@D)/LiberationSans*.ttf $(LIBERATION_TARGET_DIR) +endef +endif + +ifeq ($(BR2_PACKAGE_LIBERATION_SERIF),y) +define LIBERATION_INSTALL_SERIF + $(INSTALL) -m 644 $(@D)/LiberationSerif*.ttf $(LIBERATION_TARGET_DIR) +endef +endif + +define LIBERATION_INSTALL_TARGET_CMDS + mkdir -p $(LIBERATION_TARGET_DIR) + $(LIBERATION_INSTALL_MONO) + $(LIBERATION_INSTALL_SANS) + $(LIBERATION_INSTALL_SERIF) +endef + +$(eval $(generic-package)) diff --git a/package/libesmtp/Config.in b/package/libesmtp/Config.in new file mode 100644 index 00000000..c631d127 --- /dev/null +++ b/package/libesmtp/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBESMTP + bool "libesmtp" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4 if BR2_PACKAGE_LIBOPENSSL + help + Library for sending emails through SMTP. + + https://libesmtp.github.io + +comment "libesmtp needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/libesmtp/libesmtp.hash b/package/libesmtp/libesmtp.hash new file mode 100644 index 00000000..596ed4ea --- /dev/null +++ b/package/libesmtp/libesmtp.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 32bc3614ca12d21c7d933f32d43410e8744b6f91fdca7732da9877a385e4e6c3 libesmtp-1.1.0.tar.gz +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING.GPL +sha256 20c17d8b8c48a600800dfd14f95d5cb9ff47066a9641ddeab48dc54aec96e331 LICENSE diff --git a/package/libesmtp/libesmtp.mk b/package/libesmtp/libesmtp.mk new file mode 100644 index 00000000..6456e83e --- /dev/null +++ b/package/libesmtp/libesmtp.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# libesmtp +# +################################################################################ + +LIBESMTP_VERSION = 1.1.0 +LIBESMTP_SITE = $(call github,libesmtp,libESMTP,v$(LIBESMTP_VERSION)) +LIBESMTP_INSTALL_STAGING = YES +LIBESMTP_LICENSE = GPL-2.0+ (examples), LGPL-2.1+ (library) +LIBESMTP_LICENSE_FILES = COPYING.GPL LICENSE +LIBESMTP_CPE_ID_VALID = YES + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBESMTP_CONF_OPTS += -Dtls=enabled +LIBESMTP_DEPENDENCIES += openssl +else +LIBESMTP_CONF_OPTS += -Dtls=disabled +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +LIBESMTP_CONF_OPTS += -Dpthreads=enabled +else +LIBESMTP_CONF_OPTS += -Dpthreads=disabled +endif + +$(eval $(meson-package)) diff --git a/package/libest/0001-package-libest-fix-error-implicit-declaration-of-fun.patch b/package/libest/0001-package-libest-fix-error-implicit-declaration-of-fun.patch new file mode 100644 index 00000000..6fd95217 --- /dev/null +++ b/package/libest/0001-package-libest-fix-error-implicit-declaration-of-fun.patch @@ -0,0 +1,64 @@ +From 28c65fd9dff2f30438b98f0b71f387468259a2c3 Mon Sep 17 00:00:00 2001 +From: Aleksandr Makarov +Date: Fri, 12 Jul 2024 21:07:10 +0300 +Subject: [PATCH] =?UTF-8?q?package/libest:=20fix=20error:=20implicit?= + =?UTF-8?q?=20declaration=20of=20function=20=E2=80=98ERR=5Ferror=5Fstring?= + =?UTF-8?q?=E2=80=99?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Added necessary header includes to fix 'implicit declaration' errors which occur when +using -Wimplicit-function-declaration flag. + +Upstream: https://github.com/cisco/libest/pull/132 +Signed-off-by: Aleksandr Makarov +--- + src/est/est.c | 4 +++- + src/est/est_client.c | 1 + + src/est/est_server_http.c | 2 ++ + 3 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/src/est/est.c b/src/est/est.c +index 8a65f87..24474c0 100644 +--- a/src/est/est.c ++++ b/src/est/est.c +@@ -42,7 +42,9 @@ + #include + #endif /* DISABLE_BACKTRACE*/ + #endif /* WIN32*/ +- ++#include ++#include ++#include + #ifndef ENABLE_CLIENT_ONLY + static char hex_chpw[] = {0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, + 0xF7, 0x0D, 0x01, 0x09, 0x07}; +diff --git a/src/est/est_client.c b/src/est/est_client.c +index 8dff9d9..5c25d4f 100644 +--- a/src/est/est_client.c ++++ b/src/est/est_client.c +@@ -40,6 +40,7 @@ + #include + #include + #include ++#include + #include "est.h" + #include "est_locl.h" + #include "est_ossl_util.h" +diff --git a/src/est/est_server_http.c b/src/est/est_server_http.c +index 2bd08d5..ce1cece 100644 +--- a/src/est/est_server_http.c ++++ b/src/est/est_server_http.c +@@ -42,6 +42,8 @@ + #include + #include + #include ++#include ++#include + #if defined(_WIN32) + #define _CRT_SECURE_NO_WARNINGS // Disable deprecation warning in VS2005 + #else +-- +2.40.1 + diff --git a/package/libest/0002-package-libest-Add-OpenSSL-3.0-compatibility.patch b/package/libest/0002-package-libest-Add-OpenSSL-3.0-compatibility.patch new file mode 100644 index 00000000..a4c74e42 --- /dev/null +++ b/package/libest/0002-package-libest-Add-OpenSSL-3.0-compatibility.patch @@ -0,0 +1,225 @@ +From ad5ce7ff1cae92c151dc6f350ef943106ddd852f Mon Sep 17 00:00:00 2001 +From: Aleksandr Makarov +Date: Fri, 12 Jul 2024 21:07:36 +0300 +Subject: [PATCH] package/libest: Add OpenSSL 3.0 compatibility + +The functions `FIPS_mode` and `FIPS_mode_set` are deprecated in OpenSSL 3.0, replaced by +`EVP_default_properties_is_fips_enabled` and `EVP_default_properties_enable_fips` respectively. + +This commit introduces wrappers for these new EVP APIs to maintain compatibility with OpenSSL 3.0, +while ensuring continued support for older versions of OpenSSL. + +- Implemented `is_fips_enabled` wrapper around `EVP_default_properties_is_fips_enabled` +- Implemented `enable_fips` wrapper around `EVP_default_properties_enable_fips` +- Added conditional compilation to support both new and legacy OpenSSL versions + +Upstream: https://github.com/cisco/libest/pull/132 +Signed-off-by: Aleksandr Makarov +--- + example/client-brski/estclient-brski.c | 2 +- + example/client/estclient.c | 2 +- + example/proxy/estproxy.c | 2 +- + example/server/estserver.c | 2 +- + java/jni/client.c | 2 +- + src/est/est_client.c | 12 ++++++------ + src/est/est_ossl_util.c | 18 ++++++++++++++++++ + src/est/est_ossl_util.h | 2 ++ + src/est/est_server.c | 2 +- + test/UT/US1864/us1864.c | 4 ++-- + 10 files changed, 34 insertions(+), 14 deletions(-) + +diff --git a/example/client-brski/estclient-brski.c b/example/client-brski/estclient-brski.c +index 9e63af5..6e03052 100644 +--- a/example/client-brski/estclient-brski.c ++++ b/example/client-brski/estclient-brski.c +@@ -388,7 +388,7 @@ int main (int argc, char **argv) + break; + case 'f': + /* Turn FIPS on if requested and exit if failure */ +- set_fips_return = FIPS_mode_set(1); ++ set_fips_return = est_enable_fips(1); + if (!set_fips_return) { + printf("\nERROR setting FIPS MODE ON ...\n"); + ERR_load_crypto_strings(); +diff --git a/example/client/estclient.c b/example/client/estclient.c +index a8a2d6f..75b1272 100644 +--- a/example/client/estclient.c ++++ b/example/client/estclient.c +@@ -1280,7 +1280,7 @@ int main (int argc, char **argv) + break; + case 'f': + /* Turn FIPS on if requested and exit if failure */ +- set_fips_return = FIPS_mode_set(1); ++ set_fips_return = est_enable_fips(1); + if (!set_fips_return) { + printf("\nERROR setting FIPS MODE ON ...\n"); + ERR_load_crypto_strings(); +diff --git a/example/proxy/estproxy.c b/example/proxy/estproxy.c +index 114bd65..6dbdbda 100644 +--- a/example/proxy/estproxy.c ++++ b/example/proxy/estproxy.c +@@ -593,7 +593,7 @@ int main (int argc, char **argv) + /* + * Turn FIPS on if user requested it and exit if failure + */ +- set_fips_return = FIPS_mode_set(1); ++ set_fips_return = est_enable_fips(1); + if (set_fips_return != 1) { + set_fips_error = ERR_get_error(); + printf("\nERROR WHILE SETTING FIPS MODE ON exiting ....\n"); +diff --git a/example/server/estserver.c b/example/server/estserver.c +index 3539dc4..90886cf 100644 +--- a/example/server/estserver.c ++++ b/example/server/estserver.c +@@ -2285,7 +2285,7 @@ int main (int argc, char **argv) + /* turn FIPS on if user requested it + * and exit if failure. + */ +- set_fips_return = FIPS_mode_set(1); ++ set_fips_return = est_enable_fips(1); + if (set_fips_return != 1) { + set_fips_error = ERR_get_error(); + printf("\nERROR WHILE SETTING FIPS MODE ON exiting ....\n"); +diff --git a/java/jni/client.c b/java/jni/client.c +index c5bc28e..f58d5c0 100644 +--- a/java/jni/client.c ++++ b/java/jni/client.c +@@ -179,7 +179,7 @@ static int jni_est_client_X509_REQ_sign (X509_REQ *x, EVP_PKEY *pkey, const EVP_ + */ + JNIEXPORT jint JNICALL Java_com_cisco_c3m_est_ESTClient_enable_1fips( + JNIEnv *env, jclass obj) { +- if (!FIPS_mode() && !FIPS_mode_set(1)) { ++ if (!est_is_fips_enabled() && !est_enable_fips(1)) { + ERR_print_errors_fp(stderr); + return -1; + } else { +diff --git a/src/est/est_client.c b/src/est/est_client.c +index 5c25d4f..63069af 100644 +--- a/src/est/est_client.c ++++ b/src/est/est_client.c +@@ -3183,7 +3183,7 @@ EST_ERROR est_client_enroll_internal (EST_CTX *ctx, char *cn, int *pkcs7_len, in + * HTTPS digest mode requires the use of MD5. Make sure we're not + * in FIPS mode and can use MD5 + */ +- if (ctx->auth_mode == AUTH_DIGEST && (FIPS_mode())){ ++ if (ctx->auth_mode == AUTH_DIGEST && (est_is_fips_enabled())){ + EST_LOG_ERR("HTTP digest auth not allowed while in FIPS mode"); + rv = EST_ERR_BAD_MODE; + goto err; +@@ -3594,7 +3594,7 @@ EST_ERROR est_client_reenroll (EST_CTX *ctx, X509 *cert, int *pkcs7_len, EVP_PKE + * HTTPS digest mode requires the use of MD5. Make sure we're not + * in FIPS mode and can use MD5 + */ +- if (ctx->auth_mode == AUTH_DIGEST && (FIPS_mode())){ ++ if (ctx->auth_mode == AUTH_DIGEST && (est_is_fips_enabled())){ + EST_LOG_ERR("HTTP digest auth not allowed while in FIPS mode"); + rv = EST_ERR_BAD_MODE; + goto err; +@@ -3680,7 +3680,7 @@ static EST_ERROR est_client_enroll_csr_internal (EST_CTX *ctx, X509_REQ *csr, in + * HTTPS digest mode requires the use of MD5. Make sure we're not + * in FIPS mode and can use MD5 + */ +- if (ctx->auth_mode == AUTH_DIGEST && (FIPS_mode())){ ++ if (ctx->auth_mode == AUTH_DIGEST && (est_is_fips_enabled())){ + EST_LOG_ERR("HTTP digest auth not allowed while in FIPS mode"); + rv = EST_ERR_BAD_MODE; + goto err; +@@ -5872,7 +5872,7 @@ static EST_ERROR est_client_brski_send_get_voucher (EST_CTX *ctx, int *cacert_le + * HTTPS digest mode requires the use of MD5. Make sure we're not + * in FIPS mode and can use MD5 + */ +- if (ctx->auth_mode == AUTH_DIGEST && (FIPS_mode())){ ++ if (ctx->auth_mode == AUTH_DIGEST && (est_is_fips_enabled())){ + EST_LOG_ERR("HTTP digest auth not allowed while in FIPS mode"); + rv = EST_ERR_BAD_MODE; + goto err; +@@ -6366,7 +6366,7 @@ EST_ERROR est_client_brski_send_voucher_status (EST_CTX *ctx, EST_BRSKI_STATUS_V + * HTTPS digest mode requires the use of MD5. Make sure we're not + * in FIPS mode and can use MD5 + */ +- if (ctx->auth_mode == AUTH_DIGEST && (FIPS_mode())){ ++ if (ctx->auth_mode == AUTH_DIGEST && (est_is_fips_enabled())){ + EST_LOG_ERR("HTTP digest auth not allowed while in FIPS mode"); + rv = EST_ERR_BAD_MODE; + goto err; +@@ -6535,7 +6535,7 @@ EST_ERROR est_client_brski_send_enroll_status (EST_CTX *ctx, EST_BRSKI_STATUS_VA + * HTTPS digest mode requires the use of MD5. Make sure we're not + * in FIPS mode and can use MD5 + */ +- if (ctx->auth_mode == AUTH_DIGEST && (FIPS_mode())){ ++ if (ctx->auth_mode == AUTH_DIGEST && (est_is_fips_enabled())){ + EST_LOG_ERR("HTTP digest auth not allowed while in FIPS mode"); + rv = EST_ERR_BAD_MODE; + goto err; +diff --git a/src/est/est_ossl_util.c b/src/est/est_ossl_util.c +index daa54f2..0887daa 100644 +--- a/src/est/est_ossl_util.c ++++ b/src/est/est_ossl_util.c +@@ -500,3 +500,21 @@ char *est_find_ser_num_in_subj(X509 *cert) + return(ser_num_str); + } + #endif ++ ++int est_is_fips_enabled() ++{ ++#if OPENSSL_VERSION_NUMBER >= 0x30000000L ++ return EVP_default_properties_is_fips_enabled(NULL); ++#else ++ return FIPS_mode(); ++#endif ++} ++ ++int est_enable_fips(int enable) ++{ ++#if OPENSSL_VERSION_NUMBER >= 0x30000000L ++ return EVP_default_properties_enable_fips(NULL, enable); ++#else ++ return FIPS_mode_set(enable); ++#endif ++} +diff --git a/src/est/est_ossl_util.h b/src/est/est_ossl_util.h +index 68ad290..2389e45 100644 +--- a/src/est/est_ossl_util.h ++++ b/src/est/est_ossl_util.h +@@ -44,4 +44,6 @@ LIBEST_TEST_API void ossl_dump_ssl_errors(void); + EST_ERROR ossl_init_cert_store(X509_STORE *store, + unsigned char *raw1, int size1); + ++int est_is_fips_enabled(); ++int est_enable_fips(int); + #endif +diff --git a/src/est/est_server.c b/src/est/est_server.c +index d047b48..979ae53 100644 +--- a/src/est/est_server.c ++++ b/src/est/est_server.c +@@ -3355,7 +3355,7 @@ EST_ERROR est_server_set_auth_mode (EST_CTX *ctx, EST_HTTP_AUTH_MODE amode) + /* + * Since HTTP digest auth uses MD5, make sure we're not in FIPS mode. + */ +- if (FIPS_mode()) { ++ if (est_is_fips_enabled()) { + EST_LOG_ERR("HTTP digest auth not allowed while in FIPS mode"); + return (EST_ERR_BAD_MODE); + } +diff --git a/test/UT/US1864/us1864.c b/test/UT/US1864/us1864.c +index 3e41cd7..1f57494 100644 +--- a/test/UT/US1864/us1864.c ++++ b/test/UT/US1864/us1864.c +@@ -218,12 +218,12 @@ static void us1864_test1 (void) + /* + * Make sure we don't allow DIGEST mode when in FIPS mode + */ +- if (!FIPS_mode_set(1)) { ++ if (!est_enable_fips(1)) { + printf("FIPS mode not supported, skipping test to prevent digest auth when in FIPS mode"); + } else { + est_rv = est_server_set_auth_mode(ctx, AUTH_DIGEST); + CU_ASSERT(est_rv == EST_ERR_BAD_MODE); +- FIPS_mode_set(0); ++ est_enable_fips(0); + } + + X509_free(x); +-- +2.40.1 + diff --git a/package/libest/0005-configure.ac-remove-duplicate-invocation-of-AM_INIT_.patch b/package/libest/0005-configure.ac-remove-duplicate-invocation-of-AM_INIT_.patch new file mode 100644 index 00000000..1ee35ad7 --- /dev/null +++ b/package/libest/0005-configure.ac-remove-duplicate-invocation-of-AM_INIT_.patch @@ -0,0 +1,36 @@ +From bd4fad5e427f4d2828f2edbe8063f6d6c9276c7b Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 8 Jan 2022 13:30:58 +0100 +Subject: [PATCH] configure.ac: remove duplicate invocation of AM_INIT_AUTOMAKE + +autoreconf fails with: + +configure.ac:9: error: AM_INIT_AUTOMAKE expanded multiple times +/home/thomas/projets/buildroot/output/host/share/aclocal-1.16/init.m4:29: AM_INIT_AUTOMAKE is expanded from... +configure.ac:7: the top level +/home/thomas/projets/buildroot/output/host/share/aclocal-1.16/init.m4:29: AM_INIT_AUTOMAKE is expanded from... +configure.ac:9: the top level + +Drop the duplicate invocation to AM_INIT_AUTOMAKE to solve this. + +Upstream: https://github.com/cisco/libest/pull/106 +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 0b930bf..66a91f2 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -4,7 +4,6 @@ AC_CONFIG_AUX_DIR(config) + AC_CONFIG_SRCDIR(src/est/est.c) + AC_CONFIG_MACRO_DIR([m4]) + +-AM_INIT_AUTOMAKE + AM_MAINTAINER_MODE + AM_INIT_AUTOMAKE([subdir-objects]) + +-- +2.33.1 + diff --git a/package/libest/0006-src-est-est_locl.h-add-missing-extern-on-e_ctx_ssl_e.patch b/package/libest/0006-src-est-est_locl.h-add-missing-extern-on-e_ctx_ssl_e.patch new file mode 100644 index 00000000..ba0ecb4a --- /dev/null +++ b/package/libest/0006-src-est-est_locl.h-add-missing-extern-on-e_ctx_ssl_e.patch @@ -0,0 +1,42 @@ +From 32fe99fa403d2f51931615745a64f8aede1ca46f Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 8 Jan 2022 13:38:17 +0100 +Subject: [PATCH] src/est/est_locl.h: add missing extern on + e_ctx_ssl_exdata_index + +Without this extern, the variable gets re-declared in each compilation +unit including est_locl.h, causing gcc >= 10 to complain with: + +/home/thomas/projets/buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/10.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: .libs/est_client.o:(.data+0x0): multiple definition of `e_ctx_ssl_exdata_index'; .libs/est.o:(.bss+0x8): first defined here +/home/thomas/projets/buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/10.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: .libs/est_server.o:(.bss+0xc): multiple definition of `e_ctx_ssl_exdata_index'; .libs/est.o:(.bss+0x8): first defined here +/home/thomas/projets/buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/10.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: .libs/est_server_http.o:(.bss+0x3b8): multiple definition of `e_ctx_ssl_exdata_index'; .libs/est.o:(.bss+0x8): first defined here +/home/thomas/projets/buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/10.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: .libs/est_proxy.o:(.bss+0x0): multiple definition of `e_ctx_ssl_exdata_index'; .libs/est.o:(.bss+0x8): first defined here +/home/thomas/projets/buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/10.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: .libs/est_client_http.o:(.bss+0x0): multiple definition of `e_ctx_ssl_exdata_index'; .libs/est.o:(.bss+0x8): first defined here +/home/thomas/projets/buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/10.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: .libs/est_ossl_util.o:(.bss+0x0): multiple definition of `e_ctx_ssl_exdata_index'; .libs/est.o:(.bss+0x8): first defined here +/home/thomas/projets/buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/10.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: .libs/est_client_proxy.o:(.bss+0x0): multiple definition of `e_ctx_ssl_exdata_index'; .libs/est.o:(.bss+0x8): first defined here +/home/thomas/projets/buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/10.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: .libs/est_enhcd_cert_auth.o:(.bss+0x0): multiple definition of `e_ctx_ssl_exdata_index'; .libs/est.o:(.bss+0x8): first defined here +/home/thomas/projets/buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/10.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: .libs/est_server_coap.o:(.bss+0x0): multiple definition of `e_ctx_ssl_exdata_index'; .libs/est.o:(.bss+0x8): first defined here +collect2: error: ld returned 1 exit status + +Upstream: https://github.com/cisco/libest/pull/107 +Signed-off-by: Thomas Petazzoni +--- + src/est/est_locl.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/est/est_locl.h b/src/est/est_locl.h +index 62dcbea..b16f62d 100644 +--- a/src/est/est_locl.h ++++ b/src/est/est_locl.h +@@ -590,7 +590,7 @@ typedef struct est_oid_list { + /* + * Index used to link the EST Ctx into the SSL structures + */ +-int e_ctx_ssl_exdata_index; ++extern int e_ctx_ssl_exdata_index; + + LIBEST_TEST_API void est_log (EST_LOG_LEVEL lvl, char *format, ...); + LIBEST_TEST_API void est_log_backtrace (void); +-- +2.33.1 + diff --git a/package/libest/Config.in b/package/libest/Config.in new file mode 100644 index 00000000..bd5f40af --- /dev/null +++ b/package/libest/Config.in @@ -0,0 +1,32 @@ +comment "libest needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_LIBEST + bool "libest" + depends on !BR2_STATIC_LIBS # libexecinfo or glibc + select BR2_PACKAGE_LIBEXECINFO if !BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + select BR2_PACKAGE_SAFECLIB + help + libest is a C implementation of RFC 7030 (Enrollment over + Secure Transport). + + It can be used to provision public key certificates from + a certificate authority (CA) or registration authority (RA) + to end-user devices and network infrastructure devices. + + https://github.com/cisco/libest + +if BR2_PACKAGE_LIBEST + +config BR2_PACKAGE_LIBEST_BRSKI + bool "BRSKI support" + +config BR2_PACKAGE_LIBEST_MODE_CLIENT_ONLY + bool "client-only mode" + # The client-only mode fails to build with OpenJDK/JNI + # bindings + depends on !BR2_PACKAGE_OPENJDK + +endif # BR2_PACKAGE_LIBEST diff --git a/package/libest/libest.hash b/package/libest/libest.hash new file mode 100644 index 00000000..dc9bc052 --- /dev/null +++ b/package/libest/libest.hash @@ -0,0 +1,3 @@ +# Computed locally +sha256 83983ac05137fd73586ddcb4874e30689fe694ee9a329797b60b3defc9a87327 libest-f8a6e5b53a5f70e72fe4029981df0693b17cbb32.tar.gz +sha256 fbdb055f98babf8d86095d6f9b9e34d2ff21a8212e442b8f18bdcb403e44366c LICENSE diff --git a/package/libest/libest.mk b/package/libest/libest.mk new file mode 100644 index 00000000..9f316876 --- /dev/null +++ b/package/libest/libest.mk @@ -0,0 +1,67 @@ +################################################################################ +# +# libest +# +################################################################################ + +LIBEST_VERSION = f8a6e5b53a5f70e72fe4029981df0693b17cbb32 +LIBEST_SITE = $(call github,cisco,libest,$(LIBEST_VERSION)) +# We don't build examples, so we're not affected by the OpenSSL +# license +LIBEST_LICENSE = BSD-3-Clause, MIT, W3C +LIBEST_LICENSE_FILES = LICENSE +LIBEST_INSTALL_STAGING = YES +LIBEST_AUTORECONF = YES +LIBEST_DEPENDENCIES = openssl host-pkgconf safeclib +# libcoap support is explicitly disabled because it breaks the build +# libsafec support is explicitly enabled because we want to avoid +# possible hidden use of bundled copy of library. +LIBEST_CONF_OPTS = \ + --with-ssl-dir=$(STAGING_DIR)/usr \ + $(if $(BR2_TOOLCHAIN_HAS_THREADS),--enable-pthreads,--disable-pthreads) \ + $(if $(BR2_PACKAGE_LIBEST_BRSKI),--enable-brski,--disable-brski) \ + --disable-examples \ + --without-libcoap-dir \ + --with-system-libsafec + +ifeq ($(BR2_PACKAGE_LIBEXECINFO),y) +LIBEST_DEPENDENCIES += libexecinfo +LIBEST_CONF_ENV += LDFLAGS="$(TARGET_LDFLAGS) -lexecinfo" +endif + +ifeq ($(BR2_PACKAGE_LIBEST_MODE_CLIENT_ONLY),y) +LIBEST_CONF_OPTS += --enable-client-only +else +LIBEST_CONF_OPTS += --disable-client-only +endif + +ifeq ($(BR2_PACKAGE_OPENJDK),y) +LIBEST_MAKE_ENV += JAVA_HOME=$(HOST_DIR)/lib/jvm +LIBEST_CONF_ENV += JAVA_HOME=$(HOST_DIR)/lib/jvm +LIBEST_CONF_OPTS += --enable-jni +LIBEST_DEPENDENCIES += openjdk +else +LIBEST_CONF_OPTS += --disable-jni +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +LIBEST_CONF_OPTS += --with-libcurl-dir=$(STAGING_DIR)/usr +LIBEST_DEPENDENCIES += libcurl +else +LIBEST_CONF_OPTS += --without-libcurl-dir +endif + +ifeq ($(BR2_PACKAGE_LIBURIPARSER),y) +LIBEST_CONF_OPTS += --with-uriparser-dir=$(STAGING_DIR)/usr +LIBEST_DEPENDENCIES += liburiparser +else +LIBEST_CONF_OPTS += --without-uriparser-dir +endif + +define LIBEST_INSTALL_PC + $(INSTALL) -c -m 0644 $(LIBEST_PKGDIR)/libest.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/libest.pc +endef +LIBEST_POST_INSTALL_STAGING_HOOKS += LIBEST_INSTALL_PC + +$(eval $(autotools-package)) diff --git a/package/libest/libest.pc b/package/libest/libest.pc new file mode 100644 index 00000000..166240f9 --- /dev/null +++ b/package/libest/libest.pc @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: libest +Description: implementation of RFC 7030 (Enrollment over Secure Transport) +Version: 2.1.0 +Libs: -lest +Cflags: -I${includedir}/est diff --git a/package/libestr/Config.in b/package/libestr/Config.in new file mode 100644 index 00000000..b1ca2a54 --- /dev/null +++ b/package/libestr/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBESTR + bool "libestr" + help + Some essentials for string handling (and a bit more) + + http://libestr.adiscon.com/ diff --git a/package/libestr/libestr.hash b/package/libestr/libestr.hash new file mode 100644 index 00000000..61ab3278 --- /dev/null +++ b/package/libestr/libestr.hash @@ -0,0 +1,5 @@ +# From http://libestr.adiscon.com/download/libestr-0-1-11/ +sha256 46632b2785ff4a231dcf241eeb0dcb5fc0c7d4da8ee49cf5687722cdbe8b2024 libestr-0.1.11.tar.gz + +# Hash for license file: +sha256 835b4793da5cbb8965fbd63905b55a4cb4310b7d1b882077d23066b08f901ff8 COPYING diff --git a/package/libestr/libestr.mk b/package/libestr/libestr.mk new file mode 100644 index 00000000..6ce22efa --- /dev/null +++ b/package/libestr/libestr.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libestr +# +################################################################################ + +LIBESTR_VERSION = 0.1.11 +LIBESTR_SITE = http://libestr.adiscon.com/files/download +LIBESTR_LICENSE = LGPL-2.1+ +LIBESTR_LICENSE_FILES = COPYING +LIBESTR_CPE_ID_VENDOR = adiscon +LIBESTR_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/libev/Config.in b/package/libev/Config.in new file mode 100644 index 00000000..71abe773 --- /dev/null +++ b/package/libev/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBEV + bool "libev" + help + Userspace library for handling asynchronous notifications + + http://software.schmorp.de/pkg/libev.html diff --git a/package/libev/libev.hash b/package/libev/libev.hash new file mode 100644 index 00000000..a849f3f3 --- /dev/null +++ b/package/libev/libev.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 507eb7b8d1015fbec5b935f34ebed15bf346bed04a11ab82b8eee848c4205aea libev-4.33.tar.gz +sha256 c4dd1a5bc38b041a320b93c5d6c08f5c41a63f2ce718ee16cfcb757fad448199 LICENSE diff --git a/package/libev/libev.mk b/package/libev/libev.mk new file mode 100644 index 00000000..cbd5433d --- /dev/null +++ b/package/libev/libev.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# libev +# +################################################################################ + +LIBEV_VERSION = 4.33 +LIBEV_SITE = http://dist.schmorp.de/libev/Attic +LIBEV_INSTALL_STAGING = YES +LIBEV_LICENSE = BSD-2-Clause or GPL-2.0+ +LIBEV_LICENSE_FILES = LICENSE + +# libev has some assembly function that is not present in Thumb mode: +# Error: selected processor does not support `mcr p15,0,r3,c7,c10,5' in Thumb mode +# so, we desactivate Thumb mode +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +LIBEV_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -marm" +endif + +# The 'compatibility' event.h header conflicts with libevent +# It's completely unnecessary for BR packages so remove it +define LIBEV_DISABLE_EVENT_H_INSTALL + $(SED) 's/ event.h//' $(@D)/Makefile.in +endef +LIBEV_POST_PATCH_HOOKS += LIBEV_DISABLE_EVENT_H_INSTALL + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libevdev/Config.in b/package/libevdev/Config.in new file mode 100644 index 00000000..91dd9db6 --- /dev/null +++ b/package/libevdev/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBEVDEV + bool "libevdev" + help + libevdev is a wrapper library for evdev devices + + http://freedesktop.org/wiki/Software/libevdev/ diff --git a/package/libevdev/libevdev.hash b/package/libevdev/libevdev.hash new file mode 100644 index 00000000..acaedfad --- /dev/null +++ b/package/libevdev/libevdev.hash @@ -0,0 +1,6 @@ +# From https://lists.freedesktop.org/archives/input-tools/2023-May/001585.html +sha256 06a77bf2ac5c993305882bc1641017f5bec1592d6d1b64787bad492ab34f2f36 libevdev-1.13.1.tar.xz +sha512 9b75bad4bc13948854c8dff7a7a46aca6c06d1410ccb000f881bf76055ccac040595c3b24fb1a574be875b5c262eb86820b9ec3383752641bc2047135e5a412f libevdev-1.13.1.tar.xz + +# Hash for license files: +sha256 6f13de7ce28e4948ba95170e0723ee1254c1978ce1f127af82aeca597b567cb9 COPYING diff --git a/package/libevdev/libevdev.mk b/package/libevdev/libevdev.mk new file mode 100644 index 00000000..b0cf6c9b --- /dev/null +++ b/package/libevdev/libevdev.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# libevdev +# +################################################################################ + +LIBEVDEV_VERSION = 1.13.1 +LIBEVDEV_SITE = http://www.freedesktop.org/software/libevdev +LIBEVDEV_SOURCE = libevdev-$(LIBEVDEV_VERSION).tar.xz +LIBEVDEV_LICENSE = MIT +LIBEVDEV_LICENSE_FILES = COPYING + +LIBEVDEV_DEPENDENCIES = $(BR2_PYTHON3_HOST_DEPENDENCY) + +LIBEVDEV_INSTALL_STAGING = YES + +LIBEVDEV_CONF_OPTS += \ + -Dtests=disabled \ + -Ddocumentation=disabled \ + -Dcoverity=false + +$(eval $(meson-package)) diff --git a/package/libevent/0001-Don-t-define-BIO_get_init-for-LibreSSL-3-5.patch b/package/libevent/0001-Don-t-define-BIO_get_init-for-LibreSSL-3-5.patch new file mode 100644 index 00000000..33c349b1 --- /dev/null +++ b/package/libevent/0001-Don-t-define-BIO_get_init-for-LibreSSL-3-5.patch @@ -0,0 +1,29 @@ +From 883630f76cbf512003b81de25cd96cb75c6cf0f9 Mon Sep 17 00:00:00 2001 +From: Theo Buehler +Date: Sun, 21 Nov 2021 21:38:20 +0100 +Subject: [PATCH] Don't define BIO_get_init() for LibreSSL 3.5+ + +BIO_get_init() is available in LibreSSL 3.5 and later. The BIO type +will become opaque, so the existing macro will break the build. + +[Retrieved from: +https://github.com/libevent/libevent/commit/883630f76cbf512003b81de25cd96cb75c6cf0f9] +Signed-off-by: Fabrice Fontaine +--- + openssl-compat.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/openssl-compat.h b/openssl-compat.h +index a23e34251b..f5de25539f 100644 +--- a/openssl-compat.h ++++ b/openssl-compat.h +@@ -40,7 +40,8 @@ static inline BIO_METHOD *BIO_meth_new(int type, const char *name) + #endif /* (OPENSSL_VERSION_NUMBER < 0x10100000L) || \ + (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x20700000L) */ + +-#if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x20700000L ++#if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x20700000L && \ ++ LIBRESSL_VERSION_NUMBER < 0x30500000L + #define BIO_get_init(b) (b)->init + #endif + diff --git a/package/libevent/Config.in b/package/libevent/Config.in new file mode 100644 index 00000000..c32f29e5 --- /dev/null +++ b/package/libevent/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBEVENT + bool "libevent" + help + Userspace library for handling asynchronous notifications + + http://libevent.org diff --git a/package/libevent/libevent.hash b/package/libevent/libevent.hash new file mode 100644 index 00000000..77574e78 --- /dev/null +++ b/package/libevent/libevent.hash @@ -0,0 +1,4 @@ +# locally computed +sha1 cd55656a9b5bed630b08f05495230affb7996b21 libevent-2.1.12-stable.tar.gz +sha256 92e6de1be9ec176428fd2367677e61ceffc2ee1cb119035037a27d346b0403bb libevent-2.1.12-stable.tar.gz +sha256 ff02effc9b331edcdac387d198691bfa3e575e7d244ad10cb826aa51ef085670 LICENSE diff --git a/package/libevent/libevent.mk b/package/libevent/libevent.mk new file mode 100644 index 00000000..355dfedc --- /dev/null +++ b/package/libevent/libevent.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# libevent +# +################################################################################ + +LIBEVENT_VERSION = 2.1.12 +LIBEVENT_SITE = https://github.com/libevent/libevent/releases/download/release-$(LIBEVENT_VERSION)-stable +LIBEVENT_SOURCE = libevent-$(LIBEVENT_VERSION)-stable.tar.gz +LIBEVENT_INSTALL_STAGING = YES +LIBEVENT_LICENSE = BSD-3-Clause, OpenBSD +LIBEVENT_LICENSE_FILES = LICENSE +LIBEVENT_CPE_ID_VALID = YES +LIBEVENT_CONF_OPTS = \ + --disable-libevent-regress \ + --disable-samples +HOST_LIBEVENT_CONF_OPTS = \ + --disable-libevent-regress \ + --disable-samples \ + --disable-openssl + +define LIBEVENT_REMOVE_PYSCRIPT + rm $(TARGET_DIR)/usr/bin/event_rpcgen.py +endef + +# libevent installs a python script to target - get rid of it if we +# don't have python support enabled +ifneq ($(BR2_PACKAGE_PYTHON3),y) +LIBEVENT_POST_INSTALL_TARGET_HOOKS += LIBEVENT_REMOVE_PYSCRIPT +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBEVENT_DEPENDENCIES += host-pkgconf openssl +LIBEVENT_CONF_OPTS += --enable-openssl +else +LIBEVENT_CONF_OPTS += --disable-openssl +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libexecinfo/Config.in b/package/libexecinfo/Config.in new file mode 100644 index 00000000..e90dfc4e --- /dev/null +++ b/package/libexecinfo/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBEXECINFO + bool "libexecinfo" + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on !BR2_TOOLCHAIN_USES_GLIBC + help + Library for inspecting program's backtrace + + https://github.com/mikroskeem/libexecinfo + +comment "libexecinfo needs a musl or uclibc toolchain w/ dynamic library" + depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_STATIC_LIBS diff --git a/package/libexecinfo/libexecinfo.hash b/package/libexecinfo/libexecinfo.hash new file mode 100644 index 00000000..4719b769 --- /dev/null +++ b/package/libexecinfo/libexecinfo.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 0462304192fab38c39a376594db1c8bdab4ebda2736bf54f01715917f430611e libexecinfo-1.1-3.tar.gz +sha256 46fbc8e6849a164c4ba8fd5875748bde302bf3cd713622af0e51b4e10344f516 execinfo.h diff --git a/package/libexecinfo/libexecinfo.mk b/package/libexecinfo/libexecinfo.mk new file mode 100644 index 00000000..85f4fd8c --- /dev/null +++ b/package/libexecinfo/libexecinfo.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# libexecinfo +# +################################################################################ + +LIBEXECINFO_VERSION = 1.1-3 +LIBEXECINFO_SITE = $(call github,mikroskeem,libexecinfo,$(LIBEXECINFO_VERSION)) +LIBEXECINFO_LICENSE = BSD-2-Clause +LIBEXECINFO_LICENSE_FILES = execinfo.h +LIBEXECINFO_INSTALL_STAGING = YES + +define LIBEXECINFO_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \ + EXECINFO_CFLAGS="$(TARGET_CFLAGS) -c" +endef + +define LIBEXECINFO_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \ + EXECINFO_CFLAGS="$(TARGET_CFLAGS) -c" \ + DESTDIR="$(STAGING_DIR)" PREFIX=/usr install +endef + +define LIBEXECINFO_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \ + EXECINFO_CFLAGS="$(TARGET_CFLAGS) -c" \ + DESTDIR="$(TARGET_DIR)" PREFIX=/usr install +endef + +$(eval $(generic-package)) diff --git a/package/libexif/Config.in b/package/libexif/Config.in new file mode 100644 index 00000000..8064c2e9 --- /dev/null +++ b/package/libexif/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBEXIF + bool "libexif" + help + Most digital cameras produce EXIF files, which are JPEG + files with extra tags that contain information about the + image. The EXIF library allows you to parse an EXIF file + and read the data from those tags. + + https://libexif.github.io diff --git a/package/libexif/libexif.hash b/package/libexif/libexif.hash new file mode 100644 index 00000000..0d082aed --- /dev/null +++ b/package/libexif/libexif.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 d47564c433b733d83b6704c70477e0a4067811d184ec565258ac563d8223f6ae libexif-0.6.24.tar.bz2 +sha256 36b6d3fa47916943fd5fec313c584784946047ec1337a78b440e5992cb595f89 COPYING diff --git a/package/libexif/libexif.mk b/package/libexif/libexif.mk new file mode 100644 index 00000000..858901f4 --- /dev/null +++ b/package/libexif/libexif.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libexif +# +################################################################################ + +LIBEXIF_VERSION = 0.6.24 +LIBEXIF_SOURCE = libexif-$(LIBEXIF_VERSION).tar.bz2 +LIBEXIF_SITE = \ + https://github.com/libexif/libexif/releases/download/v$(LIBEXIF_VERSION) +LIBEXIF_INSTALL_STAGING = YES +LIBEXIF_DEPENDENCIES = host-pkgconf +LIBEXIF_LICENSE = LGPL-2.1+ +LIBEXIF_LICENSE_FILES = COPYING +LIBEXIF_CPE_ID_VALID = YES + +$(eval $(autotools-package)) diff --git a/package/libfastjson/Config.in b/package/libfastjson/Config.in new file mode 100644 index 00000000..a3a7c809 --- /dev/null +++ b/package/libfastjson/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBFASTJSON + bool "libfastjson" + # uses the __sync_*_4 intrisics, or pthreads to emulate atomicity + depends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_THREADS + help + Libfastjson - A fast json library for C + + Libfastjson is a fork from json-c. The aim of this project + is not to provide a slightly modified clone of json-c. + Its aim is to provide: + + - a small library with essential json handling functions + - sufficiently good json support (not 100% standards + compliant) + - be very fast in processing + + https://github.com/rsyslog/libfastjson/ diff --git a/package/libfastjson/libfastjson.hash b/package/libfastjson/libfastjson.hash new file mode 100644 index 00000000..f220c608 --- /dev/null +++ b/package/libfastjson/libfastjson.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 67cde7e85fa372036d7694f3b32cfc666705ab19367920f555af9d1c183edfef libfastjson-0.99.9.1.tar.gz +sha256 b29370bbfa98816e1fca0901f18149d920736771bfd68b4ee0eb00c78b38d245 COPYING diff --git a/package/libfastjson/libfastjson.mk b/package/libfastjson/libfastjson.mk new file mode 100644 index 00000000..5ee33ba4 --- /dev/null +++ b/package/libfastjson/libfastjson.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libfastjson +# +################################################################################ + +LIBFASTJSON_VERSION = 0.99.9.1 +LIBFASTJSON_SITE = $(call github,rsyslog,libfastjson,v$(LIBFASTJSON_VERSION)) +LIBFASTJSON_INSTALL_STAGING = YES +LIBFASTJSON_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' +# From git +LIBFASTJSON_AUTORECONF = YES +LIBFASTJSON_LICENSE = MIT +LIBFASTJSON_LICENSE_FILES = COPYING +LIBFASTJSON_CPE_ID_VENDOR = rsyslog + +$(eval $(autotools-package)) diff --git a/package/libfcgi/0001-link-against-math.patch b/package/libfcgi/0001-link-against-math.patch new file mode 100644 index 00000000..909a295b --- /dev/null +++ b/package/libfcgi/0001-link-against-math.patch @@ -0,0 +1,20 @@ +Link libfcgi against the math library. + +Signed-off-by: Thomas Claveirole +[Louis: rebase on top of 2.4.2] +Signed-off-by: Louis Rannou +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi + +Index: b/libfcgi/Makefile.am +=================================================================== +--- a/libfcgi/Makefile.am ++++ b/libfcgi/Makefile.am +@@ -19,6 +19,7 @@ + os_@SYSTEM@.c + libfcgi_la_CC = @PTHREAD_CC@ + libfcgi_la_CFLAGS = @PTHREAD_CFLAGS@ ++libfcgi_la_LIBADD = -lm + libfcgi_la_LDFLAGS = @EXTRA_LIBS@ -no-undefined + + libfcgi___la_SOURCES = $(INCLUDE_FILES) \ diff --git a/package/libfcgi/0002-disable-examples.patch b/package/libfcgi/0002-disable-examples.patch new file mode 100644 index 00000000..ccd01c0c --- /dev/null +++ b/package/libfcgi/0002-disable-examples.patch @@ -0,0 +1,23 @@ +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +Common subdirectories: libfcgi-2.4.0.orig/cgi-fcgi and libfcgi-2.4.0/cgi-fcgi +Common subdirectories: libfcgi-2.4.0.orig/doc and libfcgi-2.4.0/doc +Common subdirectories: libfcgi-2.4.0.orig/examples and libfcgi-2.4.0/examples +Common subdirectories: libfcgi-2.4.0.orig/images and libfcgi-2.4.0/images +Common subdirectories: libfcgi-2.4.0.orig/include and libfcgi-2.4.0/include +Common subdirectories: libfcgi-2.4.0.orig/java and libfcgi-2.4.0/java +Common subdirectories: libfcgi-2.4.0.orig/libfcgi and libfcgi-2.4.0/libfcgi +diff -du libfcgi-2.4.0.orig/Makefile.am libfcgi-2.4.0/Makefile.am +--- libfcgi-2.4.0.orig/Makefile.am 2001-12-22 14:05:39.000000000 +0100 ++++ libfcgi-2.4.0/Makefile.am 2014-07-19 16:56:21.935216540 +0200 +@@ -10,7 +10,7 @@ + aclocal.m4 m4/libtool.m4 m4/lt*.m4 Makefile.in install-sh missing ltmain.sh \ + COPYING INSTALL + +-SUBDIRS = libfcgi cgi-fcgi examples include ++SUBDIRS = libfcgi cgi-fcgi include + + include_HEADERS = fcgi_config.h + +Common subdirectories: libfcgi-2.4.0.orig/perl and libfcgi-2.4.0/perl +Common subdirectories: libfcgi-2.4.0.orig/Win32 and libfcgi-2.4.0/Win32 diff --git a/package/libfcgi/Config.in b/package/libfcgi/Config.in new file mode 100644 index 00000000..aceea3e8 --- /dev/null +++ b/package/libfcgi/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBFCGI + bool "libfcgi" + depends on BR2_USE_MMU # fork() + help + FCGI, a fastcgi developer library for C/C++ + + https://fastcgi-archives.github.io/ diff --git a/package/libfcgi/libfcgi.hash b/package/libfcgi/libfcgi.hash new file mode 100644 index 00000000..83860a4f --- /dev/null +++ b/package/libfcgi/libfcgi.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1fe83501edfc3a7ec96bb1e69db3fd5ea1730135bd73ab152186fd0b437013bc libfcgi-2.4.2.tar.gz +sha256 f0a8fe4513a43e8eebb24cdcf9d2e7efc52e4d8259178c6d76d3d84418397d81 LICENSE.TERMS diff --git a/package/libfcgi/libfcgi.mk b/package/libfcgi/libfcgi.mk new file mode 100644 index 00000000..ee61c22c --- /dev/null +++ b/package/libfcgi/libfcgi.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libfcgi +# +################################################################################ + +LIBFCGI_VERSION = 2.4.2 +LIBFCGI_SITE = $(call github,FastCGI-Archives,fcgi2,$(LIBFCGI_VERSION)) +LIBFCGI_LICENSE = OML +LIBFCGI_LICENSE_FILES = LICENSE.TERMS +LIBFCGI_CPE_ID_VENDOR = fastcgi +LIBFCGI_CPE_ID_PRODUCT = fcgi +LIBFCGI_INSTALL_STAGING = YES +LIBFCGI_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/libffi/0001-Fix-use-of-compact-eh-frames-on-MIPS.patch b/package/libffi/0001-Fix-use-of-compact-eh-frames-on-MIPS.patch new file mode 100644 index 00000000..7786b984 --- /dev/null +++ b/package/libffi/0001-Fix-use-of-compact-eh-frames-on-MIPS.patch @@ -0,0 +1,47 @@ +From 31b6b6bc14197cd4183bdbd311fddeb36b5ae100 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Sat, 19 Sep 2015 22:53:29 +0200 +Subject: [PATCH] Fix use of compact eh frames on MIPS +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Newer MIPS toolchains use a different (compact) eh_frame format. +libffi don't like them, so we have to switch to the older format. + +This patch add -mno-compact-eh to CFLAGS when compiling for +Mips and compiler support it. + +Signed-off-by: Jérôme Pouiller +[unfuzz for 3.2.1] +Signed-off-by: Jörg Krause +[rebased for 3.4.6] +Signed-off-by: Bernd Kuhls +--- + configure.ac | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/configure.ac b/configure.ac +index a7bf5ee..36cd0d4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -238,6 +238,16 @@ esac + AM_CONDITIONAL(FFI_EXEC_TRAMPOLINE_TABLE, test x$FFI_EXEC_TRAMPOLINE_TABLE = x1) + AC_SUBST(FFI_EXEC_TRAMPOLINE_TABLE) + ++if test x$TARGET = xMIPS; then ++ save_CFLAGS="$CFLAGS" ++ CFLAGS=-mno-compact-eh ++ AC_MSG_CHECKING([whether the C compiler needs -mno-compact-eh]) ++ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], ++ [AC_MSG_RESULT([yes])]; [save_CFLAGS="$save_CFLAGS -mno-compact-eh"], ++ [AC_MSG_RESULT([no])]) ++ CFLAGS="$save_CFLAGS" ++fi ++ + if test x$TARGET = xX86_64; then + AC_CACHE_CHECK([toolchain supports unwind section type], + libffi_cv_as_x86_64_unwind_section_type, [ +-- +2.5.3 + diff --git a/package/libffi/0002-arc-Fix-warnings.patch b/package/libffi/0002-arc-Fix-warnings.patch new file mode 100644 index 00000000..45a2c9db --- /dev/null +++ b/package/libffi/0002-arc-Fix-warnings.patch @@ -0,0 +1,56 @@ +From 4f25e5be1a8a429b6925527c1cb94b6acd05642b Mon Sep 17 00:00:00 2001 +From: Yuriy Kolerov +Date: Wed, 17 Jul 2024 18:56:52 +0300 +Subject: [PATCH] arc: Fix warnings + +These warnings are fixed: + +1. A series of "unused variables". +2. Implicit conversion from a pointer to uint32_t. + +Signed-off-by: Yuriy Kolerov +Upstream: https://github.com/libffi/libffi/pull/844 +Signed-off-by: Thomas Petazzoni +--- + src/arc/ffi.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/src/arc/ffi.c b/src/arc/ffi.c +index d729274..0632319 100644 +--- a/src/arc/ffi.c ++++ b/src/arc/ffi.c +@@ -192,9 +192,10 @@ static void unmarshal_atom(call_builder *cb, int type, void *data) { + /* for arguments passed by reference returns the pointer, otherwise the arg is copied (up to MAXCOPYARG bytes) */ + static void *unmarshal(call_builder *cb, ffi_type *type, int var, void *data) { + size_t realign[2]; +- void *pointer; + + #if defined(__ARC64_ARCH64__) ++ void *pointer; ++ + if (type->size > 2 * __SIZEOF_POINTER__) { + /* pass by reference */ + unmarshal_atom(cb, FFI_TYPE_POINTER, (char*)&pointer); +@@ -348,7 +349,10 @@ ffi_prep_closure_loc (ffi_closure * closure, ffi_cif * cif, + void *user_data, void *codeloc) + { + uint32_t *tramp = (uint32_t *) & (closure->tramp[0]); ++ ++#if defined(__ARC64_ARCH64__) + size_t address_ffi_closure = (size_t) ffi_closure_asm; ++#endif + + switch (cif->abi) + { +@@ -367,7 +371,7 @@ ffi_prep_closure_loc (ffi_closure * closure, ffi_cif * cif, + FFI_ASSERT (tramp == codeloc); + tramp[0] = CODE_ENDIAN (0x200a1fc0); /* mov r8, pcl */ + tramp[1] = CODE_ENDIAN (0x20200f80); /* j [long imm] */ +- tramp[2] = CODE_ENDIAN (ffi_closure_asm); ++ tramp[2] = CODE_ENDIAN ((uint32_t) ffi_closure_asm); + break; + #endif + +-- +2.46.0 + diff --git a/package/libffi/0003-arc-Do-not-use-mov_s-and-movl_s-instructions.patch b/package/libffi/0003-arc-Do-not-use-mov_s-and-movl_s-instructions.patch new file mode 100644 index 00000000..3577ddf1 --- /dev/null +++ b/package/libffi/0003-arc-Do-not-use-mov_s-and-movl_s-instructions.patch @@ -0,0 +1,45 @@ +From 97c273519e41a7ef2841cb7531c6eda01fc69dc2 Mon Sep 17 00:00:00 2001 +From: Yuriy Kolerov +Date: Wed, 17 Jul 2024 19:19:30 +0300 +Subject: [PATCH] arc: Do not use mov_s and movl_s instructions + +mov_s and movl_s instructions use a restricted set of registers. +However, a list of available registers for such instructions for +one ARC target may not match a list for another ARC targets. For +example, it is applicable to ARC700 and ARC HS3x/4x - build +fails because mov_s formats may be incompatible in some cases. + +The easiest and the most straightforward way to fix this issue +is to use mov and movl instead of mov_s and movl_s. + +Signed-off-by: Yuriy Kolerov +Upstream: https://github.com/libffi/libffi/pull/844 +Signed-off-by: Thomas Petazzoni +--- + src/arc/arcompact.S | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/arc/arcompact.S b/src/arc/arcompact.S +index 1d7f1a1..e749341 100644 +--- a/src/arc/arcompact.S ++++ b/src/arc/arcompact.S +@@ -39,14 +39,14 @@ + #define LARG ldl + #define SARG stl + #define ADDPTR addl +-#define MOVPTR movl_s ++#define MOVPTR movl + #else + #define PTRS 4 + #define FLTS 4 + #define LARG ld + #define SARG st + #define ADDPTR add +-#define MOVPTR mov_s ++#define MOVPTR mov + #endif + + #define FRAME_LEN (8 * PTRS + 16) +-- +2.46.0 + diff --git a/package/libffi/0004-src-or1k-ffi.c-fix-prototype-of-ffi_call_SYSV.patch b/package/libffi/0004-src-or1k-ffi.c-fix-prototype-of-ffi_call_SYSV.patch new file mode 100644 index 00000000..f3a7b29e --- /dev/null +++ b/package/libffi/0004-src-or1k-ffi.c-fix-prototype-of-ffi_call_SYSV.patch @@ -0,0 +1,47 @@ +From 4506e943289ed1363f3921bc201d5da76f750229 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 17 Aug 2024 12:56:22 +0200 +Subject: [PATCH] src/or1k/ffi.c: fix prototype of ffi_call_SYSV() + +The current code base of libffi on OpenRISC (or1k) fails to build with +GCC 14.x with the following error: + +../src/or1k/ffi.c: In function 'ffi_call': +../src/or1k/ffi.c:167:34: error: passing argument 3 of 'ffi_call_SYSV' from incompatible pointer type [-Wincompatible-pointer-types] + 167 | ffi_call_SYSV(size, &ecif, ffi_prep_args, rvalue, fn, cif->flags); + | ^~~~~~~~~~~~~ + | | + | void * (*)(char *, extended_cif *) +../src/or1k/ffi.c:113:27: note: expected 'void * (*)(int *, extended_cif *)' but argument is of type 'void * (*)(char *, extended_cif *)' + 113 | void *(*)(int *, extended_cif *), + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This is due to the fact that ffi_prep_args() is in fact defined as: + + void* ffi_prep_args(char *stack, extended_cif *ecif) + +so, let's fix the prototype of the function pointer, which anyway gets +passed to assembly code, so the typing gets lost. + +Upstream: https://github.com/libffi/libffi/pull/854 +Signed-off-by: Thomas Petazzoni +--- + src/or1k/ffi.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/or1k/ffi.c b/src/or1k/ffi.c +index 9451d4e..157388e 100644 +--- a/src/or1k/ffi.c ++++ b/src/or1k/ffi.c +@@ -110,7 +110,7 @@ void* ffi_prep_args(char *stack, extended_cif *ecif) + + extern void ffi_call_SYSV(unsigned, + extended_cif *, +- void *(*)(int *, extended_cif *), ++ void *(*)(char *, extended_cif *), + unsigned *, + void (*fn)(void), + unsigned); +-- +2.46.0 + diff --git a/package/libffi/0005-src-or1k-ffi.c-fix-incompatible-pointer-type.patch b/package/libffi/0005-src-or1k-ffi.c-fix-incompatible-pointer-type.patch new file mode 100644 index 00000000..e1ff0035 --- /dev/null +++ b/package/libffi/0005-src-or1k-ffi.c-fix-incompatible-pointer-type.patch @@ -0,0 +1,50 @@ +From ec39b03d891a77552ad7729ff79bf21bf3591842 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 17 Aug 2024 13:52:45 +0200 +Subject: [PATCH] src/or1k/ffi.c: fix incompatible pointer type + +The current code base of libffi on OpenRISC (or1k) fails to build with +GCC 14.x with the following error: + +../src/or1k/ffi.c: In function 'ffi_closure_SYSV': +../src/or1k/ffi.c:183:22: error: initialization of 'char *' from incompatible pointer type 'int *' [-Wincompatible-pointer-types] + 183 | char *stack_args = sp; + | ^~ + +Indeed: + + register int *sp __asm__ ("r17"); + [..] + char *stack_args = sp; + +Adopt the same logic used for: + + char *ptr = (char *) register_args; + +which consists in casting to the desired pointer type. Indeed, later +in the code stack_args is assigned to ptr (so they need to be the same +pointer type), and some arithmetic is done on ptr, so changing its +pointer type would change the behavior. + +Upstream: https://github.com/libffi/libffi/pull/854 +Signed-off-by: Thomas Petazzoni +--- + src/or1k/ffi.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/or1k/ffi.c b/src/or1k/ffi.c +index 157388e..7a6d28c 100644 +--- a/src/or1k/ffi.c ++++ b/src/or1k/ffi.c +@@ -180,7 +180,7 @@ void ffi_closure_SYSV(unsigned long r3, unsigned long r4, unsigned long r5, + register int *r13 __asm__ ("r13"); + + ffi_closure* closure = (ffi_closure*) r13; +- char *stack_args = sp; ++ char *stack_args = (char*) sp; + + /* Lay the register arguments down in a continuous chunk of memory. */ + unsigned register_args[6] = +-- +2.46.0 + diff --git a/package/libffi/Config.in b/package/libffi/Config.in new file mode 100644 index 00000000..6edf570b --- /dev/null +++ b/package/libffi/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBFFI + bool "libffi" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + The libffi library provides a portable, high level + programming interface to various calling conventions. This + allows a programmer to call any function specified by a call + interface description at run-time. + + http://sourceware.org/libffi/ + +comment "libffi needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libffi/libffi.hash b/package/libffi/libffi.hash new file mode 100644 index 00000000..c2ef588f --- /dev/null +++ b/package/libffi/libffi.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 b0dea9df23c863a7a50e825440f3ebffabd65df1497108e5d437747843895a4e libffi-3.4.6.tar.gz +# License files, locally calculated +sha256 67894089811f93fca47a76f85e017da6f8582d4ba0905963c6e0f1ad6df7a195 LICENSE diff --git a/package/libffi/libffi.mk b/package/libffi/libffi.mk new file mode 100644 index 00000000..9c47cf39 --- /dev/null +++ b/package/libffi/libffi.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# libffi +# +################################################################################ + +LIBFFI_VERSION = 3.4.6 +LIBFFI_SITE = \ + https://github.com/libffi/libffi/releases/download/v$(LIBFFI_VERSION) +LIBFFI_LICENSE = MIT +LIBFFI_LICENSE_FILES = LICENSE +LIBFFI_CPE_ID_VALID = YES +LIBFFI_INSTALL_STAGING = YES +# We're patching configure.ac +LIBFFI_AUTORECONF = YES +LIBFFI_CONF_OPTS = --disable-multi-os-directory + +# The static exec trampolines is enabled by default since +# libffi 3.4.2. However it doesn't work with gobject-introspection. +LIBFFI_CONF_OPTS += --disable-exec-static-tramp + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libfm-extra/Config.in b/package/libfm-extra/Config.in new file mode 100644 index 00000000..60e6fda3 --- /dev/null +++ b/package/libfm-extra/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBFM_EXTRA + bool "libfm-extra" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + help + The libfm-extra package contains a library and other files + required by menu-cache-gen libexec of menu-cache + + http://wiki.lxde.org/en/Libfm + +comment "libfm-extra needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libfm-extra/libfm-extra.hash b/package/libfm-extra/libfm-extra.hash new file mode 100644 index 00000000..116cefb0 --- /dev/null +++ b/package/libfm-extra/libfm-extra.hash @@ -0,0 +1,8 @@ +# From https://sourceforge.net/projects/pcmanfm/files/PCManFM%20%2B%20Libfm%20%28tarball%20release%29/LibFM/ +md5 c87a0ff41ae77825079b2f785ec0741e libfm-1.3.2.tar.xz +sha1 7c5c14dd0615b457687966ce4e55c2d054bf93e1 libfm-1.3.2.tar.xz + +# Locally computed: +sha256 a5042630304cf8e5d8cff9d565c6bd546f228b48c960153ed366a34e87cad1e5 libfm-1.3.2.tar.gz +sha256 d8c320ffc0030d1b096ae4732b50d2b811cf95e9a9b7377c1127b2563e0a0388 COPYING +sha256 c3a3d93e111462f2b0292b56a6a7b87d342fd7156741d8b81b8b08723be4597e src/extra/fm-xml-file.c diff --git a/package/libfm-extra/libfm-extra.mk b/package/libfm-extra/libfm-extra.mk new file mode 100644 index 00000000..2a5df9ca --- /dev/null +++ b/package/libfm-extra/libfm-extra.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libfm-extra +# +################################################################################ + +LIBFM_EXTRA_VERSION = 1.3.2 +LIBFM_EXTRA_SOURCE = libfm-$(LIBFM_EXTRA_VERSION).tar.xz +LIBFM_EXTRA_SITE = http://sourceforge.net/projects/pcmanfm/files +LIBFM_EXTRA_DEPENDENCIES = libglib2 host-intltool +LIBFM_EXTRA_LICENSE = GPL-2.0+, LGPL-2.1+ +LIBFM_EXTRA_LICENSE_FILES = COPYING src/extra/fm-xml-file.c +LIBFM_EXTRA_INSTALL_STAGING = YES +LIBFM_EXTRA_CONF_OPTS = --with-extra-only --with-gtk=no + +$(eval $(autotools-package)) diff --git a/package/libfm/0001-modules-fix-cross-compilation.patch b/package/libfm/0001-modules-fix-cross-compilation.patch new file mode 100644 index 00000000..8b5f1cff --- /dev/null +++ b/package/libfm/0001-modules-fix-cross-compilation.patch @@ -0,0 +1,27 @@ +From 3bc935b732d1ff448727e90340e4be40ef6fc000 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 29 Apr 2018 20:22:29 +0200 +Subject: [PATCH] modules: fix cross-compilation + +Do not add -L$(libdir) to AM_LDFLAGS + +Signed-off-by: Fabrice Fontaine +--- + src/modules/Makefile.am | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/modules/Makefile.am b/src/modules/Makefile.am +index e61f4e01..01c15bd4 100644 +--- a/src/modules/Makefile.am ++++ b/src/modules/Makefile.am +@@ -11,7 +11,6 @@ AM_CPPFLAGS = \ + # tell libtool we compile module not library + AM_LDFLAGS = \ + -no-undefined -module -avoid-version -shared -export-dynamic \ +- -L$(libdir) \ + $(GIO_LIBS) + + # the module should be linked only with libfm, not libfm-gtk or whatever +-- +2.14.1 + diff --git a/package/libfm/Config.in b/package/libfm/Config.in new file mode 100644 index 00000000..e78bc99b --- /dev/null +++ b/package/libfm/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_LIBFM + bool "libfm" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + depends on BR2_INSTALL_LIBSTDCPP # libgtk2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libgtk2 -> pango -> harfbuzz + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libgtk2 -> pango -> harfbuzz + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBGTK2 if !BR2_PACKAGE_LIBGTK3_X11 + select BR2_PACKAGE_MENU_CACHE + help + A glib/gio-based library providing some file management + utilities and related-widgets missing in gtk+/glib. This is + the core of PCManFM. The library is desktop independent + (not LXDE specific) and has clean API. It can be used to + develop other applications requiring file management + functionality. For example, you can create your own file + manager with facilities provided by libfm. + + http://wiki.lxde.org/en/Libfm + +comment "libfm needs X.org and a toolchain w/ wchar, threads, C++, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_PACKAGE_XORG7 diff --git a/package/libfm/libfm.hash b/package/libfm/libfm.hash new file mode 100644 index 00000000..74781b2a --- /dev/null +++ b/package/libfm/libfm.hash @@ -0,0 +1,8 @@ +# From https://sourceforge.net/projects/pcmanfm/files/PCManFM%20%2B%20Libfm%20%28tarball%20release%29/LibFM/ +md5 c87a0ff41ae77825079b2f785ec0741e libfm-1.3.2.tar.xz +sha1 7c5c14dd0615b457687966ce4e55c2d054bf93e1 libfm-1.3.2.tar.xz + +# Locally computed: +sha256 a5042630304cf8e5d8cff9d565c6bd546f228b48c960153ed366a34e87cad1e5 libfm-1.3.2.tar.xz +sha256 d8c320ffc0030d1b096ae4732b50d2b811cf95e9a9b7377c1127b2563e0a0388 COPYING +sha256 c3a3d93e111462f2b0292b56a6a7b87d342fd7156741d8b81b8b08723be4597e src/extra/fm-xml-file.c diff --git a/package/libfm/libfm.mk b/package/libfm/libfm.mk new file mode 100644 index 00000000..29f6d7d5 --- /dev/null +++ b/package/libfm/libfm.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# libfm +# +################################################################################ + +LIBFM_VERSION = 1.3.2 +LIBFM_SOURCE = libfm-$(LIBFM_VERSION).tar.xz +LIBFM_SITE = http://sourceforge.net/projects/pcmanfm/files +LIBFM_DEPENDENCIES = menu-cache libglib2 cairo +LIBFM_LICENSE = GPL-2.0+, LGPL-2.1+ +LIBFM_LICENSE_FILES = COPYING src/extra/fm-xml-file.c +LIBFM_INSTALL_STAGING = YES +# We're patching src/modules/Makefile.am +LIBFM_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_LIBEXIF),y) +LIBFM_CONF_OPTS += --enable-exif +LIBFM_DEPENDENCIES += libexif +else +LIBFM_CONF_OPTS += --disable-exif +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) +LIBFM_CONF_OPTS += --with-gtk=3 +LIBFM_DEPENDENCIES += libgtk3 +else +LIBFM_CONF_OPTS += --with-gtk=2 +LIBFM_DEPENDENCIES += libgtk2 +endif + +$(eval $(autotools-package)) diff --git a/package/libfreefare/Config.in b/package/libfreefare/Config.in new file mode 100644 index 00000000..574787e8 --- /dev/null +++ b/package/libfreefare/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBFREEFARE + bool "libfreefare" + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBNFC + help + Library for high level manipulation of MIFARE cards. + + http://nfc-tools.org/index.php?title=Libfreefare diff --git a/package/libfreefare/libfreefare.hash b/package/libfreefare/libfreefare.hash new file mode 100644 index 00000000..6ef30513 --- /dev/null +++ b/package/libfreefare/libfreefare.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 48db20cccdf3435a9f205bcbb67dbd4eec055991d21840fb419874efd9ce9df8 libfreefare-c2b0cfa4b9fb0e4be88604f00b7a2405618d5abc.tar.gz + +# Hash for license file: +sha256 be6209dfd763a0ba77fbe990cfd2512804441d8b5f0cad927baa3341b50fcade COPYING diff --git a/package/libfreefare/libfreefare.mk b/package/libfreefare/libfreefare.mk new file mode 100644 index 00000000..7065c441 --- /dev/null +++ b/package/libfreefare/libfreefare.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libfreefare +# +################################################################################ + +LIBFREEFARE_VERSION = c2b0cfa4b9fb0e4be88604f00b7a2405618d5abc +LIBFREEFARE_SITE = $(call github,nfc-tools,libfreefare,$(LIBFREEFARE_VERSION)) +LIBFREEFARE_DEPENDENCIES = host-pkgconf libnfc openssl +LIBFREEFARE_LICENSE = LGPL-3.0+ with exception +LIBFREEFARE_LICENSE_FILES = COPYING +# From git +LIBFREEFARE_AUTORECONF = YES +LIBFREEFARE_CONF_ENV += LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl` + +$(eval $(autotools-package)) diff --git a/package/libfreeglut/Config.in b/package/libfreeglut/Config.in new file mode 100644 index 00000000..ccb2d5cd --- /dev/null +++ b/package/libfreeglut/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBFREEGLUT + bool "libfreeglut" + depends on BR2_PACKAGE_HAS_LIBGL + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_LIBGLU + select BR2_PACKAGE_XLIB_LIBXI + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_XLIB_LIBXXF86VM + help + FreeGLUT is a free-software/open-source alternative to the + OpenGL Utility Toolkit (GLUT) library. GLUT (and hence + FreeGLUT) takes care of all the system-specific chores + required for creating windows, initializing OpenGL contexts, + and handling input events, to allow for trully portable OpenGL + programs. + + http://freeglut.sourceforge.net + +comment "libfreeglut depends on X.org and needs an OpenGL backend" + depends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_HAS_LIBGL diff --git a/package/libfreeglut/libfreeglut.hash b/package/libfreeglut/libfreeglut.hash new file mode 100644 index 00000000..249a780f --- /dev/null +++ b/package/libfreeglut/libfreeglut.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 3c0bcb915d9b180a97edaebd011b7a1de54583a838644dcd42bb0ea0c6f3eaec freeglut-3.4.0.tar.gz +sha256 b6593d5ec4c113a274abb85b10e8615895cb0ddb89f7912af5fe5aa8df38a275 COPYING diff --git a/package/libfreeglut/libfreeglut.mk b/package/libfreeglut/libfreeglut.mk new file mode 100644 index 00000000..09309aec --- /dev/null +++ b/package/libfreeglut/libfreeglut.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# libfreeglut +# +################################################################################ + +LIBFREEGLUT_VERSION = 3.4.0 +LIBFREEGLUT_SOURCE = freeglut-$(LIBFREEGLUT_VERSION).tar.gz +LIBFREEGLUT_SITE = https://github.com/FreeGLUTProject/freeglut/releases/download/v$(LIBFREEGLUT_VERSION) +LIBFREEGLUT_LICENSE = MIT +LIBFREEGLUT_LICENSE_FILES = COPYING +LIBFREEGLUT_INSTALL_STAGING = YES +LIBFREEGLUT_DEPENDENCIES = \ + libgl \ + libglu \ + xlib_libXi \ + xlib_libXrandr \ + xlib_libXxf86vm + +LIBFREEGLUT_CONF_OPTS = -DFREEGLUT_BUILD_DEMOS=OFF + +# package depends on X.org which depends on !BR2_STATIC_LIBS +ifeq ($(BR2_SHARED_LIBS),y) +LIBFREEGLUT_CONF_OPTS += \ + -DFREEGLUT_BUILD_SHARED_LIBS=ON \ + -DFREEGLUT_BUILD_STATIC_LIBS=OFF +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +LIBFREEGLUT_CONF_OPTS += \ + -DFREEGLUT_BUILD_SHARED_LIBS=ON \ + -DFREEGLUT_BUILD_STATIC_LIBS=ON +endif + +$(eval $(cmake-package)) diff --git a/package/libfreeimage/0001-no-root-install.patch b/package/libfreeimage/0001-no-root-install.patch new file mode 100644 index 00000000..54756d8e --- /dev/null +++ b/package/libfreeimage/0001-no-root-install.patch @@ -0,0 +1,20 @@ +Makefile.gnu: allow non-root install by not enforcing root ownserhip + +Signed-off-by: Rémi Rérolle + +diff -ruN a/Makefile.gnu b/Makefile.gnu +--- a/Makefile.gnu 2015-04-09 16:34:02.315316841 +0200 ++++ b/Makefile.gnu 2015-04-09 16:34:28.875483201 +0200 +@@ -71,9 +71,9 @@ + + install: + install -d $(INCDIR) $(INSTALLDIR) +- install -m 644 -o root -g root $(HEADER) $(INCDIR) +- install -m 644 -o root -g root $(STATICLIB) $(INSTALLDIR) +- install -m 755 -o root -g root $(SHAREDLIB) $(INSTALLDIR) ++ install -m 644 $(HEADER) $(INCDIR) ++ install -m 644 $(STATICLIB) $(INSTALLDIR) ++ install -m 755 $(SHAREDLIB) $(INSTALLDIR) + ln -sf $(SHAREDLIB) $(INSTALLDIR)/$(VERLIBNAME) + ln -sf $(VERLIBNAME) $(INSTALLDIR)/$(LIBNAME) + # ldconfig diff --git a/package/libfreeimage/0002-fix-cpuid-x86.patch b/package/libfreeimage/0002-fix-cpuid-x86.patch new file mode 100644 index 00000000..98b0e9c6 --- /dev/null +++ b/package/libfreeimage/0002-fix-cpuid-x86.patch @@ -0,0 +1,67 @@ +Fix build issue caused by invalid register usage on x86 + +Patch taken from https://github.com/openexr/openexr/issues/128. + +Signed-off-by: Thomas Petazzoni + +Index: b/Source/OpenEXR/IlmImf/ImfSystemSpecific.cpp +=================================================================== +--- a/Source/OpenEXR/IlmImf/ImfSystemSpecific.cpp ++++ b/Source/OpenEXR/IlmImf/ImfSystemSpecific.cpp +@@ -40,21 +40,19 @@ + + namespace { + #if defined(IMF_HAVE_SSE2) && defined(__GNUC__) +- ++#include + // Helper functions for gcc + SSE enabled +- void cpuid(int n, int &eax, int &ebx, int &ecx, int &edx) ++ void cpuid(unsigned int n, unsigned int &eax, unsigned int &ebx, ++ unsigned int &ecx, unsigned int &edx) + { +- __asm__ __volatile__ ( +- "cpuid" +- : /* Output */ "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx) +- : /* Input */ "a"(n) +- : /* Clobber */); ++ __get_cpuid(n, &eax, &ebx, &ecx, &edx); + } + + #else // IMF_HAVE_SSE2 && __GNUC__ + + // Helper functions for generic compiler - all disabled +- void cpuid(int n, int &eax, int &ebx, int &ecx, int &edx) ++ void cpuid(unsigned int n, unsigned int &eax, unsigned int &ebx, ++ unsigned int &ecx, unsigned int &edx) + { + eax = ebx = ecx = edx = 0; + } +@@ -64,7 +62,7 @@ + + #ifdef OPENEXR_IMF_HAVE_GCC_INLINE_ASM_AVX + +- void xgetbv(int n, int &eax, int &edx) ++ void xgetbv(unsigned int n, unsigned int &eax, unsigned int &edx) + { + __asm__ __volatile__ ( + "xgetbv" +@@ -75,7 +73,7 @@ + + #else // OPENEXR_IMF_HAVE_GCC_INLINE_ASM_AVX + +- void xgetbv(int n, int &eax, int &edx) ++ void xgetbv(unsigned int n, unsigned int &eax, unsigned int &edx) + { + eax = edx = 0; + } +@@ -94,8 +92,8 @@ + f16c(false) + { + bool osxsave = false; +- int max = 0; +- int eax, ebx, ecx, edx; ++ unsigned int max = 0; ++ unsigned int eax, ebx, ecx, edx; + + cpuid(0, max, ebx, ecx, edx); + if (max > 0) diff --git a/package/libfreeimage/0003-fix-big-endian-os.patch b/package/libfreeimage/0003-fix-big-endian-os.patch new file mode 100644 index 00000000..e0d4e921 --- /dev/null +++ b/package/libfreeimage/0003-fix-big-endian-os.patch @@ -0,0 +1,64 @@ +fixed PluginBMP, PluginDDS for compilation under Big Endian OS + +Downloaded from upstream commit: +https://sourceforge.net/p/freeimage/svn/1809/ + +Signed-off-by: Bernd Kuhls + +diff -uNr FreeImage.orig/Source/FreeImage/PluginBMP.cpp FreeImage/Source/FreeImage/PluginBMP.cpp +--- FreeImage.orig/Source/FreeImage/PluginBMP.cpp 2016-06-15 12:35:30.000000000 +0200 ++++ FreeImage/Source/FreeImage/PluginBMP.cpp 2019-08-31 16:00:27.813378612 +0200 +@@ -518,7 +518,7 @@ + io->read_proc(FreeImage_GetPalette(dib), used_colors * sizeof(RGBQUAD), 1, handle); + #if FREEIMAGE_COLORORDER == FREEIMAGE_COLORORDER_RGB + RGBQUAD *pal = FreeImage_GetPalette(dib); +- for(int i = 0; i < used_colors; i++) { ++ for(unsigned int i = 0; i < used_colors; i++) { + INPLACESWAP(pal[i].rgbRed, pal[i].rgbBlue); + } + #endif +@@ -1419,7 +1419,7 @@ + + free(buffer); + #ifdef FREEIMAGE_BIGENDIAN +- } else if (bpp == 16) { ++ } else if (dst_bpp == 16) { + int padding = dst_pitch - dst_width * sizeof(WORD); + WORD pad = 0; + WORD pixel; +@@ -1440,7 +1440,7 @@ + } + #endif + #if FREEIMAGE_COLORORDER == FREEIMAGE_COLORORDER_RGB +- } else if (bpp == 24) { ++ } else if (dst_bpp == 24) { + int padding = dst_pitch - dst_width * sizeof(FILE_BGR); + DWORD pad = 0; + FILE_BGR bgr; +@@ -1461,7 +1461,7 @@ + } + } + } +- } else if (bpp == 32) { ++ } else if (dst_bpp == 32) { + FILE_BGRA bgra; + for(unsigned y = 0; y < dst_height; y++) { + BYTE *line = FreeImage_GetScanLine(dib, y); +diff -uNr FreeImage.orig/Source/FreeImage/PluginDDS.cpp FreeImage/Source/FreeImage/PluginDDS.cpp +--- FreeImage.orig/Source/FreeImage/PluginDDS.cpp 2018-07-31 17:04:58.000000000 +0200 ++++ FreeImage/Source/FreeImage/PluginDDS.cpp 2019-08-31 16:00:39.213465120 +0200 +@@ -356,14 +356,6 @@ + for(int i=0; i<11; i++) { + SwapLong(&header->surfaceDesc.dwReserved1[i]); + } +- SwapLong(&header->surfaceDesc.ddpfPixelFormat.dwSize); +- SwapLong(&header->surfaceDesc.ddpfPixelFormat.dwFlags); +- SwapLong(&header->surfaceDesc.ddpfPixelFormat.dwFourCC); +- SwapLong(&header->surfaceDesc.ddpfPixelFormat.dwRGBBitCount); +- SwapLong(&header->surfaceDesc.ddpfPixelFormat.dwRBitMask); +- SwapLong(&header->surfaceDesc.ddpfPixelFormat.dwGBitMask); +- SwapLong(&header->surfaceDesc.ddpfPixelFormat.dwBBitMask); +- SwapLong(&header->surfaceDesc.ddpfPixelFormat.dwRGBAlphaBitMask); + SwapLong(&header->surfaceDesc.ddsCaps.dwCaps1); + SwapLong(&header->surfaceDesc.ddsCaps.dwCaps2); + SwapLong(&header->surfaceDesc.ddsCaps.dwReserved[0]); diff --git a/package/libfreeimage/0004-fixed-C-11-warnings.patch b/package/libfreeimage/0004-fixed-C-11-warnings.patch new file mode 100644 index 00000000..cf9c4730 --- /dev/null +++ b/package/libfreeimage/0004-fixed-C-11-warnings.patch @@ -0,0 +1,94 @@ +fixed C++11 warnings + +Signed-off-by: Fabrice Fontaine +[Retrieved from: https://sourceforge.net/p/freeimage/svn/1896] + +Index: trunk/Source/FreeImage/CacheFile.cpp +=================================================================== +--- trunk/Source/FreeImage/CacheFile.cpp (révision 1895) ++++ trunk/Source/FreeImage/CacheFile.cpp (révision 1896) +@@ -147,10 +147,14 @@ + m_current_block->data = new BYTE[BLOCK_SIZE]; + + fseek(m_file, m_current_block->nr * BLOCK_SIZE, SEEK_SET); +- fread(m_current_block->data, BLOCK_SIZE, 1, m_file); +- +- m_page_cache_mem.splice(m_page_cache_mem.begin(), m_page_cache_disk, it->second); +- m_page_map[nr] = m_page_cache_mem.begin(); ++ if (fread(m_current_block->data, BLOCK_SIZE, 1, m_file) == 1) { ++ m_page_cache_mem.splice(m_page_cache_mem.begin(), m_page_cache_disk, it->second); ++ m_page_map[nr] = m_page_cache_mem.begin(); ++ } ++ else { ++ FreeImage_OutputMessageProc(FIF_UNKNOWN, "Failed to lock a block in CacheFile"); ++ return NULL; ++ } + } + + // if the memory cache size is too large, swap an item to disc +Index: trunk/Source/FreeImage/MultiPage.cpp +=================================================================== +--- trunk/Source/FreeImage/MultiPage.cpp (révision 1895) ++++ trunk/Source/FreeImage/MultiPage.cpp (révision 1896) +@@ -271,8 +271,8 @@ + } + } + +- std::auto_ptr bitmap (new FIMULTIBITMAP); +- std::auto_ptr header (new MULTIBITMAPHEADER); ++ std::unique_ptr bitmap (new FIMULTIBITMAP); ++ std::unique_ptr header (new MULTIBITMAPHEADER); + header->m_filename = filename; + // io is default + header->node = node; +@@ -339,8 +339,8 @@ + PluginNode *node = list->FindNodeFromFIF(fif); + + if (node) { +- std::auto_ptr bitmap (new FIMULTIBITMAP); +- std::auto_ptr header (new MULTIBITMAPHEADER); ++ std::unique_ptr bitmap (new FIMULTIBITMAP); ++ std::unique_ptr header (new MULTIBITMAPHEADER); + header->io = *io; + header->node = node; + header->fif = fif; +Index: trunk/Source/FreeImage/PSDParser.cpp +=================================================================== +--- trunk/Source/FreeImage/PSDParser.cpp (révision 1895) ++++ trunk/Source/FreeImage/PSDParser.cpp (révision 1896) +@@ -97,7 +97,7 @@ + template + class PSDGetValue { + public: +- static inline int get(const BYTE * iprBuffer) {} // error ++ static inline int get(const BYTE * iprBuffer) { return -1; } // error + }; + + template <> +Index: trunk/Source/FreeImage/PluginPSD.cpp +=================================================================== +--- trunk/Source/FreeImage/PluginPSD.cpp (révision 1895) ++++ trunk/Source/FreeImage/PluginPSD.cpp (révision 1896) +@@ -127,7 +127,7 @@ + static BOOL DLL_CALLCONV + Save(FreeImageIO *io, FIBITMAP *dib, fi_handle handle, int page, int flags, void *data) { + if(!handle) { +- return NULL; ++ return FALSE; + } + try { + psdParser parser; +Index: trunk/Source/FreeImage/PluginHDR.cpp +=================================================================== +--- trunk/Source/FreeImage/PluginHDR.cpp (révision 1895) ++++ trunk/Source/FreeImage/PluginHDR.cpp (révision 1896) +@@ -244,7 +244,8 @@ + } + else if((buf[0] == '#') && (buf[1] == 0x20)) { + header_info->valid |= RGBE_VALID_COMMENT; +- strcpy(header_info->comment, buf); ++ strncpy(header_info->comment, buf, HDR_MAXLINE - 1); ++ header_info->comment[HDR_MAXLINE - 1] = '\0'; + } + } + if(!bHeaderFound || !bFormatFound) { diff --git a/package/libfreeimage/Config.in b/package/libfreeimage/Config.in new file mode 100644 index 00000000..9bffd035 --- /dev/null +++ b/package/libfreeimage/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LIBFREEIMAGE + bool "libfreeimage" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR + # compiler issue: "Error: invalid register number `63'" + depends on !BR2_arc + help + FreeImage is an Open Source library project for developers who + would like to support popular graphics image formats like PNG, + BMP, JPEG, TIFF and others as needed by today's multimedia + applications. + + http://freeimage.sourceforge.net + +comment "libfreeimage needs a toolchain w/ C++, dynamic library, wchar" + depends on !BR2_arc + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR diff --git a/package/libfreeimage/libfreeimage.hash b/package/libfreeimage/libfreeimage.hash new file mode 100644 index 00000000..388f3bb5 --- /dev/null +++ b/package/libfreeimage/libfreeimage.hash @@ -0,0 +1,9 @@ +# From https://sourceforge.net/projects/freeimage/files/Source%20Distribution/3.18.0/ +md5 f8ba138a3be233a3eed9c456e42e2578 FreeImage3180.zip +sha1 38daa9d8f1bca2330a2eaa42ec66fbe6ede7dce9 FreeImage3180.zip + +# Locally computed +sha256 f41379682f9ada94ea7b34fe86bf9ee00935a3147be41b6569c9605a53e438fd FreeImage3180.zip +sha256 d51615a1a47f1ddbb027920d60d3fc30a00e1284c795a47857883e641349fadf license-gplv2.txt +sha256 084be110e3e8757d8e6945cda1fbc7e5073bbe688dc19b92c0d8440155d8e282 license-gplv3.txt +sha256 0bb9a3123297c73ae6e19c70459fb0e58f313f67ca63176fd43f8e77668b8243 license-fi.txt diff --git a/package/libfreeimage/libfreeimage.mk b/package/libfreeimage/libfreeimage.mk new file mode 100644 index 00000000..4775f921 --- /dev/null +++ b/package/libfreeimage/libfreeimage.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# libfreeimage +# +################################################################################ + +LIBFREEIMAGE_VERSION = 3.18.0 +LIBFREEIMAGE_SITE = http://downloads.sourceforge.net/freeimage +LIBFREEIMAGE_SOURCE = FreeImage$(subst .,,$(LIBFREEIMAGE_VERSION)).zip +LIBFREEIMAGE_LICENSE = GPL-2.0 or GPL-3.0 or FreeImage Public License +LIBFREEIMAGE_LICENSE_FILES = license-gplv2.txt license-gplv3.txt license-fi.txt +LIBFREEIMAGE_CPE_ID_VENDOR = freeimage_project +LIBFREEIMAGE_CPE_ID_PRODUCT = freeimage +LIBFREEIMAGE_INSTALL_STAGING = YES + +define LIBFREEIMAGE_EXTRACT_CMDS + $(UNZIP) $(LIBFREEIMAGE_DL_DIR)/$(LIBFREEIMAGE_SOURCE) -d $(@D) + mv $(@D)/FreeImage/* $(@D) + rmdir $(@D)/FreeImage +endef + +define LIBFREEIMAGE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \ + CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11" $(MAKE) -C $(@D) +endef + +define LIBFREEIMAGE_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +define LIBFREEIMAGE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/libfribidi/Config.in b/package/libfribidi/Config.in new file mode 100644 index 00000000..74d9c5b4 --- /dev/null +++ b/package/libfribidi/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBFRIBIDI + bool "libfribidi" + help + GNU FriBidi is an implementation of the Unicode + Bidirectional Algorithm (bidi). + + http://www.fribidi.org/ diff --git a/package/libfribidi/libfribidi.hash b/package/libfribidi/libfribidi.hash new file mode 100644 index 00000000..29948fbb --- /dev/null +++ b/package/libfribidi/libfribidi.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 0bbc7ff633bfa208ae32d7e369cf5a7d20d5d2557a0b067c9aa98bcbf9967587 fribidi-1.0.15.tar.xz +sha256 32434afcc8666ba060e111d715bfdb6c2d5dd8a35fa4d3ab8ad67d8f850d2f2b COPYING diff --git a/package/libfribidi/libfribidi.mk b/package/libfribidi/libfribidi.mk new file mode 100644 index 00000000..ab7fe703 --- /dev/null +++ b/package/libfribidi/libfribidi.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# libfribidi +# +################################################################################ + +LIBFRIBIDI_VERSION = 1.0.15 +LIBFRIBIDI_SOURCE = fribidi-$(LIBFRIBIDI_VERSION).tar.xz +LIBFRIBIDI_SITE = https://github.com/fribidi/fribidi/releases/download/v$(LIBFRIBIDI_VERSION) +LIBFRIBIDI_LICENSE = LGPL-2.1+ +LIBFRIBIDI_LICENSE_FILES = COPYING +LIBFRIBIDI_CPE_ID_VENDOR = gnu +LIBFRIBIDI_CPE_ID_PRODUCT = fribidi +LIBFRIBIDI_INSTALL_STAGING = YES +LIBFRIBIDI_DEPENDENCIES = host-pkgconf + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libftdi/0001-pkgconfig_libusb.patch b/package/libftdi/0001-pkgconfig_libusb.patch new file mode 100644 index 00000000..389291de --- /dev/null +++ b/package/libftdi/0001-pkgconfig_libusb.patch @@ -0,0 +1,47 @@ +--- + configure.in | 35 +++++++++++------------------------ + 1 file changed, 11 insertions(+), 24 deletions(-) + +--- a/configure.in ++++ b/configure.in +@@ -8,30 +8,17 @@ + AM_PROG_LIBTOOL + AC_PROG_CXX + +-dnl check for libusb-config +-AC_CHECK_TOOL(HAVELIBUSB, libusb-config) +- +-if test ! -z "$HAVELIBUSB"; then +- LIBUSB_CFLAGS=`$HAVELIBUSB --cflags` +- LIBUSB_LIBS=`$HAVELIBUSB --libs` +- +- CFLAGS="$CFLAGS $LIBUSB_CFLAGS" +- LIBS="$LIBS $LIBUSB_LIBS" +-else +- AC_MSG_ERROR([*** libusb-config not found. You need a working libusb installation.]) +-fi +- +-dnl check for version of libusb +-AC_MSG_CHECKING([if libusb version is >= 0.1.7]) +-libusb_version_needed="1007" +-libusb_version=`$HAVELIBUSB --version | sed -e "s/libusb //" | awk 'BEGIN { FS = "."; } { printf "%d", ($''1 * 1000 + $''2) * 1000 + $''3;}'` ++dnl check for libusb ++PKG_CHECK_MODULES(LIBUSB, libusb >= 0.1.11) ++CFLAGS="$CFLAGS $LIBUSB_CFLAGS" ++LIBS="$LIBS $LIBUSB_LIBS" + +-if test $libusb_version -lt $libusb_version_needed; then +- AC_MSG_RESULT(no) +- AC_MSG_ERROR([*** libusb is too old ($libusb_version). You need a libusb installation newer or equal to 0.1.7.]) +-else +- AC_MSG_RESULT(yes) +-fi ++dnl Check for recent pkg-config which supports Requires.private ++case `$PKG_CONFIG --version` in ++0.?|0.1[0-7]) PKGCONFIG_REQUIRES="Requires"; ;; ++*) PKGCONFIG_REQUIRES="Requires.private"; ;; ++esac ++AC_SUBST(PKGCONFIG_REQUIRES) + + ENABLE_ASYNC_MODE=0 + AC_ARG_WITH(async-mode, diff --git a/package/libftdi/0002-libftdi.pc-requires-libusb-fix-static-build.patch b/package/libftdi/0002-libftdi.pc-requires-libusb-fix-static-build.patch new file mode 100644 index 00000000..ee47af60 --- /dev/null +++ b/package/libftdi/0002-libftdi.pc-requires-libusb-fix-static-build.patch @@ -0,0 +1,27 @@ +From d3d6ca63cb86727533d7d83c98e70002bb04f343 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Wed, 21 Jan 2015 11:18:59 +0100 +Subject: [PATCH] libftdi.pc: requires libusb (fix static build) + +--- + libftdi.pc.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/libftdi.pc.in b/libftdi.pc.in +index 2061b91..57f0a09 100644 +--- a/libftdi.pc.in ++++ b/libftdi.pc.in +@@ -5,8 +5,8 @@ includedir=@includedir@ + + Name: libftdi + Description: Library to program and control the FTDI USB controller +-Requires: ++Requires: libusb + Version: @VERSION@ +-Libs: -L${libdir} -lftdi -lusb ++Libs: -L${libdir} -lftdi + Cflags: -I${includedir} + +-- +2.1.0 + diff --git a/package/libftdi/Config.in b/package/libftdi/Config.in new file mode 100644 index 00000000..fdeac28a --- /dev/null +++ b/package/libftdi/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_LIBFTDI + bool "libftdi" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + help + Userspace access to FTDI USB interface chips + + http://www.intra2net.com/en/developer/libftdi/index.php + +if BR2_PACKAGE_LIBFTDI + +config BR2_PACKAGE_LIBFTDI_CPP + bool "C++ bindings" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + select BR2_PACKAGE_BOOST + help + C++ bindings for libftdi + +comment "libftdi C++ bindings need a toolchain w/ wchar, C++" + depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP + +endif # BR2_PACKAGE_LIBFTDI + +comment "libftdi needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/libftdi/libftdi.hash b/package/libftdi/libftdi.hash new file mode 100644 index 00000000..8271ab27 --- /dev/null +++ b/package/libftdi/libftdi.hash @@ -0,0 +1,7 @@ +# Locally computed (after checking the signature from http://www.intra2net.com/en/developer/libftdi/download.php) +sha256 3176d5b5986438f33f5208e690a8bfe90941be501cc0a72118ce3d338d4b838e libftdi-0.20.tar.gz + +# Hash for license files: +sha256 6bd354f4b9beca001b1b5395be48cef1d749a3ed27dddb8114bf09eb0ab2d88c LICENSE +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING.GPL +sha256 c340cbee4974bb96019e782f2279df016c92fb1e7f5299347e779d9acedbb991 COPYING.LIB diff --git a/package/libftdi/libftdi.mk b/package/libftdi/libftdi.mk new file mode 100644 index 00000000..25734262 --- /dev/null +++ b/package/libftdi/libftdi.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# libftdi +# +################################################################################ + +LIBFTDI_VERSION = 0.20 +LIBFTDI_SITE = http://www.intra2net.com/en/developer/libftdi/download +LIBFTDI_LICENSE = LGPL-2.1 (libftdi) +LIBFTDI_LICENSE_FILES = LICENSE COPYING.LIB +LIBFTDI_DEPENDENCIES = libusb-compat libusb +HOST_LIBFTDI_DEPENDENCIES = host-libusb-compat host-libusb +LIBFTDI_INSTALL_STAGING = YES +LIBFTDI_CONFIG_SCRIPTS = libftdi-config +LIBFTDI_AUTORECONF = YES + +LIBFTDI_CONF_OPTS = --without-examples + +# configure detect it automaticaly so we need to force it +ifeq ($(BR2_PACKAGE_LIBFTDI_CPP),y) +LIBFTDI_LICENSE += , GPL-2.0 with exception (ftdipp) +LIBFTDI_LICENSE_FILES += COPYING.GPL +LIBFTDI_DEPENDENCIES += boost +LIBFTDI_CONF_OPTS += --enable-libftdipp +else +LIBFTDI_CONF_OPTS += --disable-libftdipp +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libftdi1/0001-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch b/package/libftdi1/0001-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch new file mode 100644 index 00000000..8c45b881 --- /dev/null +++ b/package/libftdi1/0001-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch @@ -0,0 +1,93 @@ +From 7e57ff280b55b45e74329b9988279e8831d32eab Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sun, 25 Jan 2015 09:45:04 +0100 +Subject: [PATCH] cmake: use the standard CMake flag to drive the shared + object build + +Remove the STATICLIBS CMake option (and the code handling it) and let +the standard CMake flags drive the shared object build. + +Signed-off-by: Samuel Martin +[Fabrice: update for 1.5] +Signed-off-by: Fabrice Fontaine +--- + CMakeOptions.txt | 1 - + ftdipp/CMakeLists.txt | 14 +------------- + src/CMakeLists.txt | 13 +------------ + 3 files changed, 2 insertions(+), 26 deletions(-) + +diff --git a/CMakeOptions.txt b/CMakeOptions.txt +index 07b5887..b780ffd 100644 +--- a/CMakeOptions.txt ++++ b/CMakeOptions.txt +@@ -1,4 +1,3 @@ +-option ( STATICLIBS "Build static libraries" ON ) + option ( BUILD_TESTS "Build unit tests with Boost Unit Test framework" OFF ) + option ( DOCUMENTATION "Generate API documentation with Doxygen" OFF ) + option ( EXAMPLES "Build example programs" ON ) +diff --git a/ftdipp/CMakeLists.txt b/ftdipp/CMakeLists.txt +index fac5bcc..a06edf1 100644 +--- a/ftdipp/CMakeLists.txt ++++ b/ftdipp/CMakeLists.txt +@@ -12,7 +12,7 @@ include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR} + include_directories(${Boost_INCLUDE_DIRS}) + + # Shared library +-add_library(ftdipp1 SHARED ${cpp_sources}) ++add_library(ftdipp1 ${cpp_sources}) + + math(EXPR VERSION_FIXUP "${MAJOR_VERSION} + 1") # Compatibility with previous releases + set_target_properties(ftdipp1 PROPERTIES VERSION ${VERSION_FIXUP}.${MINOR_VERSION}.0 SOVERSION 3) +@@ -29,18 +29,6 @@ install ( TARGETS ftdipp1 + ARCHIVE DESTINATION lib${LIB_SUFFIX} + ) + +-# Static library +-if ( STATICLIBS ) +- add_library(ftdipp1-static STATIC ${cpp_sources}) +- set_target_properties(ftdipp1-static PROPERTIES OUTPUT_NAME "ftdipp1") +- set_target_properties(ftdipp1-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) +- +- install ( TARGETS ftdipp1-static +- ARCHIVE DESTINATION lib${LIB_SUFFIX} +- COMPONENT staticlibs +- ) +-endif () +- + install ( FILES ${cpp_headers} + DESTINATION include/${PROJECT_NAME} + COMPONENT headers +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 17b3617..ae4fc61 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -21,7 +21,7 @@ configure_file(ftdi_version_i.h.in "${CMAKE_CURRENT_BINARY_DIR}/ftdi_version_i.h + set(c_sources ${CMAKE_CURRENT_SOURCE_DIR}/ftdi.c ${CMAKE_CURRENT_SOURCE_DIR}/ftdi_stream.c CACHE INTERNAL "List of c sources" ) + set(c_headers ${CMAKE_CURRENT_SOURCE_DIR}/ftdi.h CACHE INTERNAL "List of c headers" ) + +-add_library(ftdi1 SHARED ${c_sources}) ++add_library(ftdi1 ${c_sources}) + + math(EXPR VERSION_FIXUP "${MAJOR_VERSION} + 1") # Compatibility with previous releases + set_target_properties(ftdi1 PROPERTIES VERSION ${VERSION_FIXUP}.${MINOR_VERSION}.0 SOVERSION 2) +@@ -38,17 +38,6 @@ install ( TARGETS ftdi1 + ARCHIVE DESTINATION lib${LIB_SUFFIX} + ) + +-if ( STATICLIBS ) +- add_library(ftdi1-static STATIC ${c_sources}) +- target_link_libraries(ftdi1-static ${LIBUSB_LIBRARIES}) +- set_target_properties(ftdi1-static PROPERTIES OUTPUT_NAME "ftdi1") +- set_target_properties(ftdi1-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) +- install ( TARGETS ftdi1-static +- ARCHIVE DESTINATION lib${LIB_SUFFIX} +- COMPONENT staticlibs +- ) +-endif () +- + install ( FILES ${c_headers} + DESTINATION include/${PROJECT_NAME} + COMPONENT headers +-- +2.27.0 + diff --git a/package/libftdi1/0002-CMakeLists.txt-fix-paths-when-FTDIPP-is-set.patch b/package/libftdi1/0002-CMakeLists.txt-fix-paths-when-FTDIPP-is-set.patch new file mode 100644 index 00000000..14c248bb --- /dev/null +++ b/package/libftdi1/0002-CMakeLists.txt-fix-paths-when-FTDIPP-is-set.patch @@ -0,0 +1,46 @@ +From 3e68fd7da98a755403cf5719c3d7a3c2f4dcbb58 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 17 Jul 2020 21:04:45 +0200 +Subject: [PATCH] CMakeLists.txt: fix paths when FTDIPP is set + +Use the same project name (i.e. libftdi1 and not libftdipp1) when FTDIPP +is enabled as suggested by Aurelien Jarno in +http://developer.intra2net.com/mailarchive/html/libftdi/2020/msg00044.html + +Without this change, the libftdi1.pc config file defines the include +path as /usr/local/include/libftdipp1 while the ftdi.h file is actually +installed in /usr/local/include/libftdi1 + +This is an issue for example for libsigrok which will fail on: + +In file included from src/hardware/asix-sigma/protocol.c:27: +src/hardware/asix-sigma/protocol.h:28:10: fatal error: ftdi.h: No such file or directory + 28 | #include + | ^~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/1427f44e36752c337791597fab47a1889552a2fe + +Signed-off-by: Fabrice Fontaine +[Upstream status: +http://developer.intra2net.com/mailarchive/html/libftdi/2020/msg00045.html] +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 5aecafc..3b0b87c 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -136,7 +136,7 @@ endif () + + add_subdirectory(src) + if ( FTDIPP ) +- project(libftdipp1 C CXX) ++ project(libftdi1 C CXX) + add_subdirectory(ftdipp) + endif () + if ( PYTHON_BINDINGS ) +-- +2.27.0 + diff --git a/package/libftdi1/0003-CMakeLists.txt-fix-static-build-with-libusb-and-lato.patch b/package/libftdi1/0003-CMakeLists.txt-fix-static-build-with-libusb-and-lato.patch new file mode 100644 index 00000000..c818c58d --- /dev/null +++ b/package/libftdi1/0003-CMakeLists.txt-fix-static-build-with-libusb-and-lato.patch @@ -0,0 +1,47 @@ +From b5b8fab6063ad90bb5ef05a72708ecde1796bc81 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 13 May 2022 18:11:50 +0200 +Subject: [PATCH] CMakeLists.txt: fix static build with libusb and -latomic + +Use pkg-config to retrieve libusb dependencies such as -latomic and +avoid the following static build failure: + +/nvmedata/autobuild/instance-29/output-1/per-package/libftdi1/host/bin/../lib/gcc/sparc-buildroot-linux-uclibc/10.3.0/../../../../sparc-buildroot-linux-uclibc/bin/ld: /nvmedata/autobuild/instance-29/output-1/per-package/libftdi1/host/sparc-buildroot-linux-uclibc/sysroot/lib/libusb-1.0.a(core.o): in function `libusb_unref_device': +/nvmedata/autobuild/instance-29/output-1/build/libusb-1.0.25/libusb/core.c:1186: undefined reference to `__atomic_fetch_add_4' + +Fixes: + - http://autobuild.buildroot.org/results/1ca7cd85ae60ad4797a6d8a83b2fb51d7eab96d9 + +Signed-off-by: Fabrice Fontaine +[Retrieved from: +http://developer.intra2net.com/git/?p=libftdi;a=commit;h=b5b8fab6063ad90bb5ef05a72708ecde1796bc81] +--- + CMakeLists.txt | 12 ++++++++++-- + 1 files changed, 10 insertions(+), 2 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 58f664a..d20aa94 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -25,8 +25,16 @@ if(${CMAKE_BUILD_TYPE} STREQUAL Debug) + endif(${CMAKE_BUILD_TYPE} STREQUAL Debug) + + # find libusb +-find_package ( USB1 REQUIRED ) +-include_directories ( ${LIBUSB_INCLUDE_DIR} ) ++find_package( PkgConfig ) ++if (PkgConfig_FOUND) ++ pkg_check_modules( LIBUSB libusb-1.0 ) ++ if (LIBUSB_FOUND) ++ include_directories ( ${LIBUSB_INCLUDE_DIRS} ) ++ else() ++ find_package ( USB1 REQUIRED ) ++ include_directories ( ${LIBUSB_INCLUDE_DIR} ) ++ endif() ++endif() + + # Find Boost + if (FTDIPP OR BUILD_TESTS) +-- +1.7.1 + diff --git a/package/libftdi1/0004-move-from-distutils-to-sysconfig.patch b/package/libftdi1/0004-move-from-distutils-to-sysconfig.patch new file mode 100644 index 00000000..7b38993a --- /dev/null +++ b/package/libftdi1/0004-move-from-distutils-to-sysconfig.patch @@ -0,0 +1,33 @@ +From abd19b721f7e9b4d514ed319ece173ebc7b1ea72 Mon Sep 17 00:00:00 2001 +From: =?utf8?q?Dan=20Hor=C3=A1k?= +Date: Mon, 19 Dec 2022 17:40:43 +0100 +Subject: [PATCH] python: move from distutils to sysconfig + +The distutils module was deprecated in Python 3.10, and will be removed +in 3.12 [1], thus switch to the sysconfig module instead. + +[1] https://peps.python.org/pep-0632/ + +Upstream: http://developer.intra2net.com/git/?p=libftdi;a=commit;h=abd19b721f7e9b4d514ed319ece173ebc7b1ea72 +Signed-off-by: Adam Duskett +Signed-off-by: Arnout Vandecappelle +--- + python/CMakeLists.txt | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt +index 5e406ff..9358419 100644 +--- a/python/CMakeLists.txt ++++ b/python/CMakeLists.txt +@@ -42,7 +42,7 @@ endif () + + set_target_properties ( ${SWIG_MODULE_ftdi1_REAL_NAME} PROPERTIES NO_SONAME ON ) + +-execute_process ( COMMAND ${PYTHON_EXECUTABLE} -c "from distutils import sysconfig; print( sysconfig.get_python_lib( plat_specific=True, prefix='${CMAKE_INSTALL_PREFIX}' ) )" ++execute_process ( COMMAND ${PYTHON_EXECUTABLE} -c "import sysconfig; print( sysconfig.get_path( 'platlib', vars={'platbase': '${CMAKE_INSTALL_PREFIX}'} ) )" + OUTPUT_VARIABLE _ABS_PYTHON_MODULE_PATH + OUTPUT_STRIP_TRAILING_WHITESPACE ) + +-- +1.7.1 + diff --git a/package/libftdi1/Config.in b/package/libftdi1/Config.in new file mode 100644 index 00000000..ec913661 --- /dev/null +++ b/package/libftdi1/Config.in @@ -0,0 +1,39 @@ +config BR2_PACKAGE_LIBFTDI1 + bool "libftdi1" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + Userspace access to FTDI USB interface chips (version 1.x) + + http://www.intra2net.com/en/developer/libftdi/index.php + +if BR2_PACKAGE_LIBFTDI1 + +config BR2_PACKAGE_LIBFTDI1_LIBFTDIPP1 + bool "libftdipp1" + depends on BR2_INSTALL_LIBSTDCPP # boost + depends on BR2_TOOLCHAIN_HAS_THREADS # boost + depends on BR2_USE_WCHAR # boost + select BR2_PACKAGE_BOOST + help + C++ bindings for libftdi + +comment "libftdipp1 needs a toolchain w/ C++, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR + +config BR2_PACKAGE_LIBFTDI1_PYTHON_BINDINGS + bool "python bindings" + depends on BR2_PACKAGE_PYTHON3 + help + Python bindings for libftdi + +config BR2_PACKAGE_LIBFTDI1_FDTI_EEPROM + bool "ftdi_eeprom tool" + select BR2_PACKAGE_LIBCONFUSE + +endif # BR2_PACKAGE_LIBFTDI1 + +comment "libftdi1 needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/libftdi1/libftdi1.hash b/package/libftdi1/libftdi1.hash new file mode 100644 index 00000000..6b825e8d --- /dev/null +++ b/package/libftdi1/libftdi1.hash @@ -0,0 +1,8 @@ +# Locally computed after checking the signature +# https://www.intra2net.com/en/developer/libftdi/download/libftdi1-1.5.tar.bz2.sig +sha256 7c7091e9c86196148bd41177b4590dccb1510bfe6cea5bf7407ff194482eb049 libftdi1-1.5.tar.bz2 + +# Hash for license files: +sha256 524f46428bf72bb8c6acfeca4909551fd2e0bdbb5305406d38382f4056095c56 LICENSE +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING.GPL +sha256 b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c COPYING.LIB diff --git a/package/libftdi1/libftdi1.mk b/package/libftdi1/libftdi1.mk new file mode 100644 index 00000000..66798add --- /dev/null +++ b/package/libftdi1/libftdi1.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# libftdi1 +# +################################################################################ + +LIBFTDI1_VERSION = 1.5 +LIBFTDI1_SOURCE = libftdi1-$(LIBFTDI1_VERSION).tar.bz2 +LIBFTDI1_SITE = http://www.intra2net.com/en/developer/libftdi/download +LIBFTDI1_INSTALL_STAGING = YES +LIBFTDI1_DEPENDENCIES = host-pkgconf libusb +LIBFTDI1_LICENSE = LGPL-2.1 (libftdi1), MIT (libftdi1) +LIBFTDI1_LICENSE_FILES = LICENSE COPYING.LIB +LIBFTDI1_CONFIG_SCRIPTS = libftdi1-config +LIBFTDI1_CONF_OPTS = -DDOCUMENTATION=OFF -DEXAMPLES=OFF + +ifeq ($(BR2_PACKAGE_LIBFTDI1_LIBFTDIPP1),y) +LIBFTDI1_LICENSE += , GPL-2.0 with exception (libftdipp1) +LIBFTDI1_LICENSE_FILES += COPYING.GPL +LIBFTDI1_DEPENDENCIES += boost +LIBFTDI1_CONF_OPTS += -DFTDIPP=ON +else +LIBFTDI1_CONF_OPTS += -DFTDIPP=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBFTDI1_PYTHON_BINDINGS),y) +LIBFTDI1_DEPENDENCIES += python3 host-swig +LIBFTDI1_CONF_OPTS += -DPYTHON_BINDINGS=ON +else +LIBFTDI1_CONF_OPTS += -DPYTHON_BINDINGS=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBFTDI1_FDTI_EEPROM),y) +# ftdi_eeprom optionally depends on libintl +LIBFTDI1_LICENSE += , GPL-2.0 (ftdi_eeprom) +LIBFTDI1_LICENSE_FILES += COPYING.GPL +LIBFTDI1_DEPENDENCIES += libconfuse $(TARGET_NLS_DEPENDENCIES) +LIBFTDI1_CONF_OPTS += -DFTDI_EEPROM=ON +else +LIBFTDI1_CONF_OPTS += -DFTDI_EEPROM=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/libfuse/0001-fix-aarch64-build.patch b/package/libfuse/0001-fix-aarch64-build.patch new file mode 100644 index 00000000..3b88687f --- /dev/null +++ b/package/libfuse/0001-fix-aarch64-build.patch @@ -0,0 +1,22 @@ +Fix build on the AArch64 platform + +Upstream-Status: Submitted + +Signed-off-by: Riku Voipio + +--- a/include/fuse_kernel.h ++++ b/include/fuse_kernel.h +@@ -88,12 +88,7 @@ + #ifndef _LINUX_FUSE_H + #define _LINUX_FUSE_H + +-#include +-#define __u64 uint64_t +-#define __s64 int64_t +-#define __u32 uint32_t +-#define __s32 int32_t +-#define __u16 uint16_t ++#include + + /* + * Version negotiation: diff --git a/package/libfuse/0002-util-ulockmgr_server-c-conditionally-define-closefrom-fix-glibc-2-34.patch b/package/libfuse/0002-util-ulockmgr_server-c-conditionally-define-closefrom-fix-glibc-2-34.patch new file mode 100644 index 00000000..7c3346e4 --- /dev/null +++ b/package/libfuse/0002-util-ulockmgr_server-c-conditionally-define-closefrom-fix-glibc-2-34.patch @@ -0,0 +1,64 @@ +From 5a43d0f724c56f8836f3f92411e0de1b5f82db32 Mon Sep 17 00:00:00 2001 +From: Sam James +Date: Sat, 24 Jul 2021 22:02:45 +0100 +Subject: [PATCH] util/ulockmgr_server.c: conditionally define closefrom (fix + glibc-2.34+) + +closefrom(3) has joined us in glibc-land from *BSD and Solaris. Since +it's available in glibc 2.34+, we want to detect it and only define our +fallback if the libc doesn't provide it. + +Bug: https://bugs.gentoo.org/803923 +Signed-off-by: Sam James + +[Retrieved from: +https://github.com/libfuse/libfuse/commit/5a43d0f724c56f8836f3f92411e0de1b5f82db32] +Signed-off-by: Fabrice Fontaine +--- + configure.ac | 1 + + util/ulockmgr_server.c | 6 ++++++ + 2 files changed, 7 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 9946a0efa..a2d481aa9 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -55,6 +55,7 @@ fi + + AC_CHECK_FUNCS([fork setxattr fdatasync splice vmsplice utimensat]) + AC_CHECK_FUNCS([posix_fallocate]) ++AC_CHECK_FUNCS([closefrom]) + AC_CHECK_MEMBERS([struct stat.st_atim]) + AC_CHECK_MEMBERS([struct stat.st_atimespec]) + +diff --git a/util/ulockmgr_server.c b/util/ulockmgr_server.c +index 273c7d923..a04dac5c6 100644 +--- a/util/ulockmgr_server.c ++++ b/util/ulockmgr_server.c +@@ -22,6 +22,10 @@ + #include + #include + ++#ifdef HAVE_CONFIG_H ++ #include "config.h" ++#endif ++ + struct message { + unsigned intr : 1; + unsigned nofd : 1; +@@ -124,6 +128,7 @@ static int receive_message(int sock, void *buf, size_t buflen, int *fdp, + return res; + } + ++#if !defined(HAVE_CLOSEFROM) + static int closefrom(int minfd) + { + DIR *dir = opendir("/proc/self/fd"); +@@ -141,6 +146,7 @@ static int closefrom(int minfd) + } + return 0; + } ++#endif + + static void send_reply(int cfd, struct message *msg) + { diff --git a/package/libfuse/Config.in b/package/libfuse/Config.in new file mode 100644 index 00000000..2b0e31a9 --- /dev/null +++ b/package/libfuse/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBFUSE + bool "libfuse" + # Really doesn't like static, see fuse/lib/fuse.c + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + help + FUSE (Filesystem in UserSpacE) + + https://github.com/libfuse/libfuse + +comment "libfuse needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/libfuse/libfuse.hash b/package/libfuse/libfuse.hash new file mode 100644 index 00000000..3ab32248 --- /dev/null +++ b/package/libfuse/libfuse.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +sha256 d0e69d5d608cc22ff4843791ad097f554dd32540ddc9bed7638cc6fea7c1b4b5 fuse-2.9.9.tar.gz + +# Hash for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB diff --git a/package/libfuse/libfuse.mk b/package/libfuse/libfuse.mk new file mode 100644 index 00000000..147b38b2 --- /dev/null +++ b/package/libfuse/libfuse.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# libfuse +# +################################################################################ + +LIBFUSE_VERSION = 2.9.9 +LIBFUSE_SOURCE = fuse-$(LIBFUSE_VERSION).tar.gz +LIBFUSE_SITE = https://github.com/libfuse/libfuse/releases/download/fuse-$(LIBFUSE_VERSION) +LIBFUSE_LICENSE = GPL-2.0, LGPL-2.1 +LIBFUSE_LICENSE_FILES = COPYING COPYING.LIB +LIBFUSE_CPE_ID_VALID = YES +LIBFUSE_INSTALL_STAGING = YES +# We're patching configure.ac +LIBFUSE_AUTORECONF = YES +# add host-gettext for AM_ICONV macro +LIBFUSE_DEPENDENCIES = \ + host-gettext \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) +LIBFUSE_CONF_OPTS = \ + --disable-example \ + --enable-lib \ + --enable-util \ + UDEV_RULES_PATH=/lib/udev/rules.d + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +define LIBFUSE_INSTALL_UDEV + mkdir -p $(TARGET_DIR)/lib/udev/rules.d + cp $(STAGING_DIR)/lib/udev/rules.d/*-fuse.rules $(TARGET_DIR)/lib/udev/rules.d +endef + +LIBFUSE_POST_INSTALL_TARGET_HOOKS += LIBFUSE_INSTALL_UDEV +endif + +define LIBFUSE_INSTALL_TARGET_CMDS + cp -dpf $(STAGING_DIR)/usr/bin/fusermount $(TARGET_DIR)/usr/bin/ + cp -dpf $(STAGING_DIR)/usr/lib/libfuse.so* $(TARGET_DIR)/usr/lib/ +endef + +define LIBFUSE_DEVICES + /dev/fuse c 666 0 0 10 229 0 0 - +endef + +define LIBFUSE_PERMISSIONS + /usr/bin/fusermount f 4755 0 0 - - - - - +endef + +$(eval $(autotools-package)) diff --git a/package/libfuse3/Config.in b/package/libfuse3/Config.in new file mode 100644 index 00000000..584d3bf1 --- /dev/null +++ b/package/libfuse3/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBFUSE3 + bool "libfuse3" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + help + The reference implementation of the Linux FUSE + (Filesystem in Userspace) interface. + + https://github.com/libfuse/libfuse + +comment "libfuse3 needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/libfuse3/libfuse3.hash b/package/libfuse3/libfuse3.hash new file mode 100644 index 00000000..6f3b3ce1 --- /dev/null +++ b/package/libfuse3/libfuse3.hash @@ -0,0 +1,3 @@ +# Locally calculated sha256 checksums +sha256 1bc306be1a1f4f6c8965fbdd79c9ccca021fdc4b277d501483a711cbd7dbcd6c libfuse3-3.16.2.tar.gz +sha256 b8832d9caaa075bbbd2aef24efa09f8b7ab66a832812d88c602da0c7b4397fad LICENSE diff --git a/package/libfuse3/libfuse3.mk b/package/libfuse3/libfuse3.mk new file mode 100644 index 00000000..f5c9dae8 --- /dev/null +++ b/package/libfuse3/libfuse3.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# libfuse3 +# +################################################################################ + +LIBFUSE3_VERSION = 3.16.2 +LIBFUSE3_SITE = $(call github,libfuse,libfuse,fuse-$(LIBFUSE3_VERSION)) +LIBFUSE3_LICENSE = LGPL-2.1 +LIBFUSE3_LICENSE_FILES = LICENSE +LIBFUSE3_CPE_ID_VENDOR = libfuse_project +LIBFUSE3_CPE_ID_PRODUCT = libfuse +LIBFUSE3_INSTALL_STAGING = YES +LIBFUSE3_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv) +LIBFUSE3_CONF_OPTS = \ + -Dexamples=false \ + -Dudevrulesdir=/lib/udev/rules.d \ + -Duseroot=false \ + -Dtests=false + +define LIBFUSE3_DEVICES + /dev/fuse c 666 0 0 10 229 0 0 - +endef + +define LIBFUSE3_PERMISSIONS + /usr/bin/fusermount3 f 4755 0 0 - - - - - +endef + +define LIBFUSE3_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_FUSE_FS) +endef + +$(eval $(meson-package)) diff --git a/package/libfutils/Config.in b/package/libfutils/Config.in new file mode 100644 index 00000000..7f795fc7 --- /dev/null +++ b/package/libfutils/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBFUTILS + bool "libfutils" + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_INSTALL_LIBSTDCPP # ulog + depends on BR2_TOOLCHAIN_HAS_THREADS # ulog + select BR2_PACKAGE_ULOG + help + This library contains some common useful functions (list, + hash, time) + + https://github.com/Parrot-Developers/libfutils + +comment "libfutils needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HAS_ATOMIC diff --git a/package/libfutils/libfutils.hash b/package/libfutils/libfutils.hash new file mode 100644 index 00000000..1fdcd84b --- /dev/null +++ b/package/libfutils/libfutils.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 b38d40c46b83e448d8c1716ddfb04b7ecd384f5cd2cb773db5c26c0589accdb3 libfutils-c326ce0cc2a7354381265a7664bb215be587fac6.tar.gz +sha256 eca11a1c62fae8d64a1247d93271375baecff8396141d7ff8d89671ee7e3ed0d COPYING diff --git a/package/libfutils/libfutils.mk b/package/libfutils/libfutils.mk new file mode 100644 index 00000000..84b53cca --- /dev/null +++ b/package/libfutils/libfutils.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# libfutils +# +################################################################################ + +LIBFUTILS_VERSION = c326ce0cc2a7354381265a7664bb215be587fac6 +LIBFUTILS_SITE = $(call github,Parrot-Developers,libfutils,$(LIBFUTILS_VERSION)) +LIBFUTILS_LICENSE = BSD-3-Clause +LIBFUTILS_LICENSE_FILES = COPYING +LIBFUTILS_DEPENDENCIES = host-alchemy ulog +LIBFUTILS_INSTALL_STAGING = YES + +LIBFUTILS_TARGET_ENV = \ + $(ALCHEMY_TARGET_ENV) \ + ALCHEMY_TARGET_SDK_DIRS="$(ALCHEMY_SDK_BASEDIR)/ulog" + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +LIBFUTILS_TARGET_ENV += TARGET_GLOBAL_LDLIBS='-latomic' +endif + +define LIBFUTILS_BUILD_CMDS + $(LIBFUTILS_TARGET_ENV) $(ALCHEMY_MAKE) libfutils +endef + +ifeq ($(BR2_STATIC_LIBS),) +# $(1): destination directory: target or staging +define LIBFUTILS_INSTALL_SHARED_LIBS + mkdir -p $(1)/usr/lib/ + $(INSTALL) -m 644 $(@D)/alchemy-out/staging/usr/lib/libfutils.so* \ + $(1)/usr/lib/ +endef +endif + +ifeq ($(BR2_SHARED_LIBS),) +define LIBFUTILS_INSTALL_STATIC_LIBS + mkdir -p $(1)/usr/lib/ + $(INSTALL) -D -m 644 $(@D)/alchemy-out/staging/usr/lib/libfutils.a \ + $(STAGING_DIR)/usr/lib/libfutils.a +endef +endif + +define LIBFUTILS_INSTALL_TARGET_CMDS + $(call LIBFUTILS_INSTALL_SHARED_LIBS, $(TARGET_DIR)) +endef + +define LIBFUTILS_INSTALL_STAGING_CMDS + mkdir -p $(STAGING_DIR)/usr/include/futils + $(INSTALL) -m 644 $(@D)/include/futils/* \ + $(STAGING_DIR)/usr/include/futils/ + $(LIBFUTILS_INSTALL_STATIC_LIBS) + $(call LIBFUTILS_INSTALL_SHARED_LIBS, $(STAGING_DIR)) + $(call ALCHEMY_INSTALL_LIB_SDK_FILE, libfutils, libfutils.so, libulog) +endef + +$(eval $(generic-package)) diff --git a/package/libg7221/Config.in b/package/libg7221/Config.in new file mode 100644 index 00000000..e057d289 --- /dev/null +++ b/package/libg7221/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBG7221 + bool "libg7221" + help + libg722_1 is a library for the ITU G.722.1 and Annex C + wideband speech codecs. + + http://www.soft-switch.org diff --git a/package/libg7221/libg7221.hash b/package/libg7221/libg7221.hash new file mode 100644 index 00000000..c7a7755b --- /dev/null +++ b/package/libg7221/libg7221.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 65942f84219f6586abc448e387f8c904777de64b3695449ac23132e4e9bde1d5 libg7221-dbfc29d4806ecdace50379a2f4d68a992a6fec34-git4.tar.gz +sha256 26cc5f718279b45dbe34e25a2d29b2c8ca487bd9ab11b2d68c9318ff59d5c645 COPYING diff --git a/package/libg7221/libg7221.mk b/package/libg7221/libg7221.mk new file mode 100644 index 00000000..813af11c --- /dev/null +++ b/package/libg7221/libg7221.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libg7221 +# +################################################################################ + +LIBG7221_VERSION = dbfc29d4806ecdace50379a2f4d68a992a6fec34 +# we use the FreeSwitch fork because it contains pkgconf support +LIBG7221_SITE = https://freeswitch.org/stash/scm/sd/libg7221.git +LIBG7221_SITE_METHOD = git +LIBG7221_LICENSE = Polycom +LIBG7221_LICENSE_FILES = COPYING +LIBG7221_AUTORECONF = YES +LIBG7221_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/libgcrypt/0001-configure.ac-add-an-option-to-disable-tests.patch b/package/libgcrypt/0001-configure.ac-add-an-option-to-disable-tests.patch new file mode 100644 index 00000000..bc0f9ebe --- /dev/null +++ b/package/libgcrypt/0001-configure.ac-add-an-option-to-disable-tests.patch @@ -0,0 +1,68 @@ +From 7fe1b8a53cc8c865c2a10dcd8f6cb4e51ccc6300 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 29 Jul 2019 12:19:10 +0200 +Subject: [PATCH] configure.ac: add an option to disable tests + +Add an option to allow the user to disable tests, this can be useful for +example when the toolchain does not provide thread. Indeed, in this +case, libgcrypt fails to build t-lock: + +t-lock.c: In function 'run_test': +t-lock.c:359:3: error: unknown type name 'pthread_t' + pthread_t rthread; + +Fixes: + - http://autobuild.buildroot.org/results/50a8ba572e3fafd3c6a39bd54bcfcaf78b5ad325 + +Signed-off-by: Fabrice Fontaine +[Bernd: rebased for version 1.11.0] +Signed-off-by: Bernd Kuhls +--- + Makefile.am | 7 ++++++- + configure.ac | 10 ++++++++++ + 2 files changed, 16 insertions(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 7fa4fa4d..f0bd90e4 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -40,9 +40,14 @@ else + doc = + endif + ++if BUILD_TESTS ++tests = tests ++else ++tests = ++endif + + DIST_SUBDIRS = m4 compat mpi cipher random src doc tests +-SUBDIRS = compat mpi cipher random src $(doc) tests ++SUBDIRS = compat mpi cipher random src $(doc) $(tests) + + EXTRA_DIST = autogen.sh autogen.rc README.GIT LICENSES \ + ChangeLog-2011 build-aux/ChangeLog-2011 doc/ChangeLog-2011 \ +diff --git a/configure.ac b/configure.ac +index e8c8cd39..1a6b61e5 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3777,6 +3777,16 @@ AC_ARG_ENABLE([doc], AC_HELP_STRING([--disable-doc], + AM_CONDITIONAL([BUILD_DOC], [test "x$build_doc" != xno]) + + ++# ++# Option to disable building of tests ++# ++build_tests=yes ++AC_ARG_ENABLE([tests], AC_HELP_STRING([--disable-tests], ++ [do not build tests]), ++ build_tests=$enableval, build_tests=yes) ++AM_CONDITIONAL([BUILD_TESTS], [test "x$build_tests" != xno]) ++ ++ + # + # Provide information about the build. + # +-- +2.20.1 + diff --git a/package/libgcrypt/Config.in b/package/libgcrypt/Config.in new file mode 100644 index 00000000..d3e5d4f7 --- /dev/null +++ b/package/libgcrypt/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBGCRYPT + bool "libgcrypt" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error + select BR2_PACKAGE_LIBGPG_ERROR + help + LibGCrypt is GNU's basic cryptographic library. + + http://www.gnu.org/software/libgcrypt/ diff --git a/package/libgcrypt/libgcrypt.hash b/package/libgcrypt/libgcrypt.hash new file mode 100644 index 00000000..ced8087c --- /dev/null +++ b/package/libgcrypt/libgcrypt.hash @@ -0,0 +1,5 @@ +# From https://www.gnupg.org/download/integrity_check.html +sha1 dd2c68e0685bb99249efeeb06046fae15b5214ba libgcrypt-1.11.0.tar.bz2 +sha256 09120c9867ce7f2081d6aaa1775386b98c2f2f246135761aae47d81f58685b9c libgcrypt-1.11.0.tar.bz2 +# Locally calculated +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB diff --git a/package/libgcrypt/libgcrypt.mk b/package/libgcrypt/libgcrypt.mk new file mode 100644 index 00000000..57eca507 --- /dev/null +++ b/package/libgcrypt/libgcrypt.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# libgcrypt +# +################################################################################ + +LIBGCRYPT_VERSION = 1.11.0 +LIBGCRYPT_SOURCE = libgcrypt-$(LIBGCRYPT_VERSION).tar.bz2 +LIBGCRYPT_LICENSE = LGPL-2.1+ +LIBGCRYPT_LICENSE_FILES = COPYING.LIB +LIBGCRYPT_SITE = https://gnupg.org/ftp/gcrypt/libgcrypt +LIBGCRYPT_INSTALL_STAGING = YES +LIBGCRYPT_DEPENDENCIES = libgpg-error +LIBGCRYPT_CONFIG_SCRIPTS = libgcrypt-config +LIBGCRYPT_CPE_ID_VENDOR = gnupg + +# Patching configure.ac and Makefile.am in 0001 +LIBGCRYPT_AUTORECONF = YES +LIBGCRYPT_CONF_ENV += GPGRT_CONFIG=$(STAGING_DIR)/usr/bin/gpgrt-config +LIBGCRYPT_CONF_OPTS = \ + --disable-tests \ + $(if $(BR2_OPTIMIZE_0),--disable-ppc-crypto-support,) \ + --with-gpg-error-prefix=$(STAGING_DIR)/usr + +# disable asm for broken archs +ifeq ($(BR2_i386)$(BR2_m68k_cf),y) +LIBGCRYPT_CONF_OPTS += --disable-asm +endif + +# Code doesn't build in thumb mode +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +LIBGCRYPT_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -marm" +endif + +HOST_LIBGCRYPT_DEPENDENCIES = host-libgpg-error +HOST_LIBGCRYPT_CONF_OPTS = \ + --disable-tests \ + --with-gpg-error-prefix=$(HOST_DIR) + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libgdiplus/0001-Build-unit-tests-only-when-enable-unit-tests-is-pass.patch b/package/libgdiplus/0001-Build-unit-tests-only-when-enable-unit-tests-is-pass.patch new file mode 100644 index 00000000..0ac5ecaa --- /dev/null +++ b/package/libgdiplus/0001-Build-unit-tests-only-when-enable-unit-tests-is-pass.patch @@ -0,0 +1,56 @@ +From ae92a466e203c8aec43f682a3a7aa617b820c3ba Mon Sep 17 00:00:00 2001 +From: Sergio Prado +Date: Sat, 10 Apr 2021 11:03:38 -0300 +Subject: [PATCH] Build unit tests only when --enable-unit-tests is passed + +Building unit tests by default requires all dependencies to be +installed (jpeg, tiff, etc) and users may not want that. + +So let's disable the build of unit tests by default and introduce +--enable-unit-tests configure option to enable it. + +Signed-off-by: Sergio Prado +Upstream: https://github.com/mono/libgdiplus/pull/701 +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + Makefile.am | 8 ++++++-- + configure.ac | 4 ++++ + 2 files changed, 10 insertions(+), 2 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index f40bdee0c2e9..152e0d64fdd9 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -1,7 +1,11 @@ + ACLOCAL_AMFLAGS = -I m4 + +-SUBDIRS = src tests +-DIST_SUBDIRS = src tests ++if BUILD_UNIT_TESTS ++SUBDIRS_TESTS = tests ++endif ++ ++SUBDIRS = src $(SUBDIRS_TESTS) ++DIST_SUBDIRS = src $(SUBDIRS_TESTS) + + pkgconfigdir = $(libdir)/pkgconfig + +diff --git a/configure.ac b/configure.ac +index 098fd0a664bd..c126ff091e58 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -47,6 +47,10 @@ + GDIPLUS_CFLAGS="$GDIPLUS_CFLAGS -Werror -Wno-unknown-warning-option -Wno-clobbered" + fi + ++AC_ARG_ENABLE(unittests, AS_HELP_STRING([--enable-unittests],[Enable building unit tests.]),[unittests=yes],[unittests=no]) ++ ++AM_CONDITIONAL([BUILD_UNIT_TESTS], [test x$unittests = xyes]) ++ + AC_ARG_ENABLE(asan, AS_HELP_STRING([--enable-asan],[Enable address sanitizer.]),[asan=yes],[asan=no]) + + if test $asan = "yes"; then +-- +2.17.1 + diff --git a/package/libgdiplus/Config.in b/package/libgdiplus/Config.in new file mode 100644 index 00000000..d26a997d --- /dev/null +++ b/package/libgdiplus/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_LIBGDIPLUS + bool "libgdiplus" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_WCHAR # libglib2 -> gettext + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_XLIB_LIBXFT + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_LIBPNG + help + An Open Source implementation of the GDI+ API. + + https://github.com/mono/libgdiplus + +comment "libgdiplus needs a toolchain w/ wchar, threads, C++" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_XORG7 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_INSTALL_LIBSTDCPP diff --git a/package/libgdiplus/libgdiplus.hash b/package/libgdiplus/libgdiplus.hash new file mode 100644 index 00000000..f6a9b5ea --- /dev/null +++ b/package/libgdiplus/libgdiplus.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 97d5a83d6d6d8f96c27fb7626f4ae11d3b38bc88a1726b4466aeb91451f3255b libgdiplus-6.1.tar.gz +sha256 81317bf837e02a116dc20b032fa1d0cbf9ec357621f141ff2c2daf26c17cbb5d LICENSE diff --git a/package/libgdiplus/libgdiplus.mk b/package/libgdiplus/libgdiplus.mk new file mode 100644 index 00000000..128270e0 --- /dev/null +++ b/package/libgdiplus/libgdiplus.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# libgdiplus +# +################################################################################ + +LIBGDIPLUS_VERSION = 6.1 +LIBGDIPLUS_SITE = https://download.mono-project.com/sources/libgdiplus + +LIBGDIPLUS_LICENSE = MIT +LIBGDIPLUS_LICENSE_FILES = LICENSE +LIBGDIPLUS_CPE_ID_VENDOR = mono-project + +LIBGDIPLUS_INSTALL_STAGING = YES + +# github tarball doesn't have configure +LIBGDIPLUS_AUTORECONF = YES + +LIBGDIPLUS_DEPENDENCIES = xlib_libXft libglib2 cairo libpng host-pkgconf + +ifeq ($(BR2_PACKAGE_GIFLIB),y) +LIBGDIPLUS_CONF_OPTS += --with-libgif +LIBGDIPLUS_DEPENDENCIES += giflib +else +LIBGDIPLUS_CONF_OPTS += --without-libgif +endif + +# there is a bug in the configure script that enables pango support +# when passing --without-pango, so let's just not use it +ifeq ($(BR2_PACKAGE_PANGO),y) +LIBGDIPLUS_CONF_OPTS += --with-pango +LIBGDIPLUS_DEPENDENCIES += pango +endif + +ifeq ($(BR2_PACKAGE_LIBEXIF),y) +LIBGDIPLUS_CONF_OPTS += --with-libexif +LIBGDIPLUS_DEPENDENCIES += libexif +else +LIBGDIPLUS_CONF_OPTS += --without-libexif +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +LIBGDIPLUS_CONF_OPTS += --with-libjpeg=$(STAGING_DIR)/usr +LIBGDIPLUS_DEPENDENCIES += jpeg +else +LIBGDIPLUS_CONF_OPTS += --without-libjpeg +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +LIBGDIPLUS_CONF_OPTS += --with-libtiff=$(STAGING_DIR)/usr +LIBGDIPLUS_DEPENDENCIES += tiff +else +LIBGDIPLUS_CONF_OPTS += --without-libtiff +endif + +$(eval $(autotools-package)) diff --git a/package/libgee/Config.in b/package/libgee/Config.in new file mode 100644 index 00000000..cb33ec9e --- /dev/null +++ b/package/libgee/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBGEE + bool "libgee" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + select BR2_PACKAGE_LIBGLIB2 + help + Libgee is an utility library providing GObject-based + interfaces and classes for commonly used data structures. + + https://wiki.gnome.org/Projects/Libgee + +comment "libgee needs a toolchain w/ wchar, threads, gcc >= 4.9" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/libgee/libgee.hash b/package/libgee/libgee.hash new file mode 100644 index 00000000..f733bf34 --- /dev/null +++ b/package/libgee/libgee.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/libgee/0.20/libgee-0.20.6.sha256sum +sha256 1bf834f5e10d60cc6124d74ed3c1dd38da646787fbf7872220b8b4068e476d4d libgee-0.20.6.tar.xz + +# Hash for license file: +sha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a COPYING diff --git a/package/libgee/libgee.mk b/package/libgee/libgee.mk new file mode 100644 index 00000000..36eddef1 --- /dev/null +++ b/package/libgee/libgee.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# libgee +# +################################################################################ + +LIBGEE_VERSION_MAJOR = 0.20 +LIBGEE_VERSION = $(LIBGEE_VERSION_MAJOR).6 +LIBGEE_SITE = https://download.gnome.org/sources/libgee/$(LIBGEE_VERSION_MAJOR) +LIBGEE_SOURCE = libgee-$(LIBGEE_VERSION).tar.xz +LIBGEE_DEPENDENCIES = host-pkgconf host-vala libglib2 +LIBGEE_INSTALL_STAGING = YES +LIBGEE_LICENSE = LGPL-2.1+ +LIBGEE_LICENSE_FILES = COPYING +LIBGEE_CPE_ID_VENDOR = gnome + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +LIBGEE_CONF_OPTS += --enable-introspection +LIBGEE_DEPENDENCIES += gobject-introspection +else +LIBGEE_CONF_OPTS += --disable-introspection +endif + +$(eval $(autotools-package)) diff --git a/package/libgeos/Config.in b/package/libgeos/Config.in new file mode 100644 index 00000000..76cbb9bd --- /dev/null +++ b/package/libgeos/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_LIBGEOS + bool "libgeos" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14 + help + GEOS (Geometry Engine - Open Source) is a C++ port of the + JTS Topology Suite (JTS). It aims to contain the complete + functionality of JTS in C++. This includes all the OpenGIS + Simple Features for SQL spatial predicate functions and + spatial operators, as well as specific JTS enhanced functions. + + https://trac.osgeo.org/geos + +comment "libgeos needs a toolchain w/ C++, wchar, gcc >= 4.9, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/libgeos/libgeos.hash b/package/libgeos/libgeos.hash new file mode 100644 index 00000000..362f1c10 --- /dev/null +++ b/package/libgeos/libgeos.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 34c7770bf0090ee88488af98767d08e779f124fa33437e0aabec8abd4609fec6 geos-3.12.2.tar.bz2 +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/libgeos/libgeos.mk b/package/libgeos/libgeos.mk new file mode 100644 index 00000000..05b74b60 --- /dev/null +++ b/package/libgeos/libgeos.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# libgeos +# +################################################################################ + +LIBGEOS_VERSION = 3.12.2 +LIBGEOS_SITE = http://download.osgeo.org/geos +LIBGEOS_SOURCE = geos-$(LIBGEOS_VERSION).tar.bz2 +LIBGEOS_LICENSE = LGPL-2.1 +LIBGEOS_LICENSE_FILES = COPYING +LIBGEOS_INSTALL_STAGING = YES +LIBGEOS_CONFIG_SCRIPTS = geos-config +LIBGEOS_CONF_OPTS = -DBUILD_BENCHMARKS=OFF + +LIBGEOS_CXXFLAGS = $(TARGET_CXXCFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y) +LIBGEOS_CXXFLAGS += -O0 +endif + +ifeq ($(BR2_or1k),y) +LIBGEOS_CXXFLAGS += -mcmodel=large +endif + +LIBGEOS_CONF_OPTS += -DCMAKE_CXX_FLAGS="$(LIBGEOS_CXXFLAGS)" + +$(eval $(cmake-package)) diff --git a/package/libgeotiff/Config.in b/package/libgeotiff/Config.in new file mode 100644 index 00000000..f07c9943 --- /dev/null +++ b/package/libgeotiff/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LIBGEOTIFF + bool "libgeotiff" + depends on BR2_INSTALL_LIBSTDCPP # proj + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # proj + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # proj + depends on BR2_USE_WCHAR # proj + select BR2_PACKAGE_PROJ + select BR2_PACKAGE_TIFF + help + Libgeotiff is an open source library normally hosted on top of + libtiff for reading, and writing GeoTIFF information tags. + + https://github.com/OSGeo/libgeotiff + +comment "libgeotiff needs a toolchain w/ C++, gcc >= 4.7, NPTL, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_USE_WCHAR diff --git a/package/libgeotiff/libgeotiff.hash b/package/libgeotiff/libgeotiff.hash new file mode 100644 index 00000000..3165994b --- /dev/null +++ b/package/libgeotiff/libgeotiff.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 ba23a3a35980ed3de916e125c739251f8e3266be07540200125a307d7cf5a704 libgeotiff-1.7.3.tar.gz +sha256 a822a731a7ac4ba7d8f18fa0dc29db2e68a5dcfc315b46e4a4c8956720d55d93 LICENSE diff --git a/package/libgeotiff/libgeotiff.mk b/package/libgeotiff/libgeotiff.mk new file mode 100644 index 00000000..126d61cb --- /dev/null +++ b/package/libgeotiff/libgeotiff.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# libgeotiff +# +################################################################################ + +LIBGEOTIFF_VERSION = 1.7.3 +LIBGEOTIFF_SITE = http://download.osgeo.org/geotiff/libgeotiff +LIBGEOTIFF_LICENSE = MIT, public domain +LIBGEOTIFF_LICENSE_FILES = LICENSE +LIBGEOTIFF_DEPENDENCIES = proj tiff host-pkgconf +LIBGEOTIFF_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LIBGEOTIFF_DEPENDENCIES += zlib +LIBGEOTIFF_CONF_OPTS += --with-zlib +else +LIBGEOTIFF_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +LIBGEOTIFF_DEPENDENCIES += jpeg +LIBGEOTIFF_CONF_OPTS += --with-jpeg +else +LIBGEOTIFF_CONF_OPTS += --without-jpeg +endif + +$(eval $(autotools-package)) diff --git a/package/libgit2/Config.in b/package/libgit2/Config.in new file mode 100644 index 00000000..5d28f054 --- /dev/null +++ b/package/libgit2/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_LIBGIT2 + bool "libgit2" + depends on !BR2_STATIC_LIBS # libhttpparser + select BR2_PACKAGE_LIBHTTPPARSER + select BR2_PACKAGE_ZLIB + help + libgit2 is a portable, pure C implementation of the Git core + methods provided as a linkable library with a solid API, + allowing to build Git functionality into your application. + + https://github.com/libgit2/libgit2 + +comment "libgit2 needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +if BR2_PACKAGE_LIBGIT2 + +config BR2_PACKAGE_LIBGIT2_CLI + bool "enable command line interface (git2_cli)" + help + Enable a command-line interface for libgit2. + It aims to be git-compatible. + +endif diff --git a/package/libgit2/libgit2.hash b/package/libgit2/libgit2.hash new file mode 100644 index 00000000..c02a149a --- /dev/null +++ b/package/libgit2/libgit2.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 8c1eaf0cf07cba0e9021920bfba9502140220786ed5d8a8ec6c7ad9174522f8e libgit2-1.8.1.tar.gz +sha256 e3712465634e97cfd850822a4eb5ac7d2f8a10f753189366d5a2060046f28288 COPYING diff --git a/package/libgit2/libgit2.mk b/package/libgit2/libgit2.mk new file mode 100644 index 00000000..e817a591 --- /dev/null +++ b/package/libgit2/libgit2.mk @@ -0,0 +1,71 @@ +################################################################################ +# +# libgit2 +# +################################################################################ + +LIBGIT2_VERSION = 1.8.1 +LIBGIT2_SITE = $(call github,libgit2,libgit2,v$(LIBGIT2_VERSION)) +LIBGIT2_LICENSE = \ + GPL-2.0 with linking exception, \ + MIT (sha1), \ + BSD-3-Clause (sha256), \ + wildmatch license (wildmatch), \ + CC0-1.0 (xoroshiro256), \ + BSD-2-Clause (basename_r), \ + LGPL-2.1+ (libxdiff) +LIBGIT2_LICENSE_FILES = COPYING +LIBGIT2_CPE_ID_VALID = YES +LIBGIT2_INSTALL_STAGING = YES + +LIBGIT2_CONF_OPTS = \ + -DUSE_GSSAPI=OFF \ + -DUSE_ICONV=ON \ + -DREGEX_BACKEND=regcomp \ + -DUSE_HTTP_PARSER=http-parser \ + -DUSE_NTLMCLIENT=OFF \ + -DUSE_XDIFF=builtin \ + -DUSE_THREADS=$(if $(BR2_TOOLCHAIN_HAS_THREADS),ON,OFF) + +LIBGIT2_SUPPORTS_IN_SOURCE_BUILD = NO + +LIBGIT2_DEPENDENCIES = zlib libhttpparser + +# If libiconv is available (for !locale toolchains), then we can use +# it for iconv support. Note that USE_ICONV=ON is still correct even +# without libiconv because (1) most toolchain have iconv support +# without libiconv and (2) even if USE_ICONV=ON but iconv support is +# not available, libgit2 simply avoids using iconv. +ifeq ($(BR2_PACKAGE_LIBICONV),y) +LIBGIT2_DEPENDENCIES += libiconv +endif + +ifeq ($(BR2_PACKAGE_LIBSSH2),y) +LIBGIT2_DEPENDENCIES += libssh2 +LIBGIT2_CONF_OPTS += -DUSE_SSH=libssh2 +else ifeq ($(BR2_PACKAGE_OPENSSH_CLIENT),y) +LIBGIT2_CONF_OPTS += -DUSE_SSH=exec +else +LIBGIT2_CONF_OPTS += -DUSE_SSH=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBGIT2_DEPENDENCIES += openssl +LIBGIT2_CONF_OPTS += -DUSE_HTTPS=OpenSSL +else +LIBGIT2_CONF_OPTS += -DUSE_HTTPS=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBGIT2_CLI),y) +LIBGIT2_CONF_OPTS += -DBUILD_CLI=ON +else +LIBGIT2_CONF_OPTS += -DBUILD_CLI=OFF +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +LIBGIT2_CONF_OPTS += \ + -DCMAKE_EXE_LINKER_FLAGS=-latomic \ + -DCMAKE_SHARED_LINKER_FLAGS=-latomic +endif + +$(eval $(cmake-package)) diff --git a/package/libglade/Config.in b/package/libglade/Config.in new file mode 100644 index 00000000..8d0d26f1 --- /dev/null +++ b/package/libglade/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBGLADE + bool "libglade" + depends on BR2_PACKAGE_LIBGTK2 + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_AT_SPI2_CORE + select BR2_PACKAGE_LIBXML2 + help + Libglade allows you to load glade interface files in a program + at runtime. It doesn't require GLADE to be used, but GLADE is + by far the easiest way to create the interface files. + + https://download.gnome.org/sources/libglade/ + +comment "libglade needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_LIBGTK2 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libglade/libglade.hash b/package/libglade/libglade.hash new file mode 100644 index 00000000..b04087e2 --- /dev/null +++ b/package/libglade/libglade.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/libglade/2.6/libglade-2.6.4.sha256sum +sha256 64361e7647839d36ed8336d992fd210d3e8139882269bed47dc4674980165dec libglade-2.6.4.tar.bz2 + +# Hash for license file: +sha256 94b03f1a60a7fd5007149530626a895a6ef5a8b9342abfd56860c5f3956f5d23 COPYING diff --git a/package/libglade/libglade.mk b/package/libglade/libglade.mk new file mode 100644 index 00000000..af73d8bd --- /dev/null +++ b/package/libglade/libglade.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# libglade +# +################################################################################ + +LIBGLADE_VERSION_MAJOR = 2.6 +LIBGLADE_VERSION = $(LIBGLADE_VERSION_MAJOR).4 +LIBGLADE_SOURCE = libglade-$(LIBGLADE_VERSION).tar.bz2 +LIBGLADE_SITE = https://download.gnome.org/sources/libglade/$(LIBGLADE_VERSION_MAJOR) +LIBGLADE_INSTALL_STAGING = YES +LIBGLADE_DEPENDENCIES = host-pkgconf libglib2 libgtk2 at-spi2-core libxml2 +LIBGLADE_LICENSE = LGPL-2.0+ +LIBGLADE_LICENSE_FILES = COPYING + +define LIBGLADE_INSTALL_FIX + rm -rf $(TARGET_DIR)/usr/share/xml/libglade \ + $(TARGET_DIR)/usr/bin/libglade-convert +endef + +LIBGLADE_POST_INSTALL_TARGET_HOOKS += LIBGLADE_INSTALL_FIX + +$(eval $(autotools-package)) diff --git a/package/libglew/Config.in b/package/libglew/Config.in new file mode 100644 index 00000000..1d28c018 --- /dev/null +++ b/package/libglew/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBGLEW + bool "libglew" + depends on BR2_PACKAGE_XORG7 + depends on BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXI + select BR2_PACKAGE_XLIB_LIBXMU + help + The OpenGL Extension Wrangler Library (GLEW) is a + cross-platform C/C++ extension loading library. GLEW provides + efficient run-time mechanisms for determining which OpenGL + extensions are supported on the target platform. OpenGL core + and extension functionality is exposed in a single header + file. + + https://github.com/nigels-com/glew + +comment "libglew depends on X.org and needs an OpenGL backend" + depends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_HAS_LIBGL diff --git a/package/libglew/libglew.hash b/package/libglew/libglew.hash new file mode 100644 index 00000000..29e63fa3 --- /dev/null +++ b/package/libglew/libglew.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 d4fc82893cfb00109578d0a1a2337fb8ca335b3ceccf97b97e5cc7f08e4353e1 glew-2.2.0.tgz +sha256 8991cd11befec7c6a63662700f03c0cc42e864b6e77c7e70b80297c951a7f0ff LICENSE.txt diff --git a/package/libglew/libglew.mk b/package/libglew/libglew.mk new file mode 100644 index 00000000..c9c49e69 --- /dev/null +++ b/package/libglew/libglew.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# libglew +# +################################################################################ + +LIBGLEW_VERSION = 2.2.0 +LIBGLEW_SOURCE = glew-$(LIBGLEW_VERSION).tgz +LIBGLEW_SITE = https://github.com/nigels-com/glew/releases/download/glew-$(LIBGLEW_VERSION) +LIBGLEW_LICENSE = BSD-3-Clause, MIT +LIBGLEW_LICENSE_FILES = LICENSE.txt +LIBGLEW_INSTALL_STAGING = YES +LIBGLEW_DEPENDENCIES = libgl xlib_libX11 xlib_libXext xlib_libXi xlib_libXmu + +# using $TARGET_CONFIGURE_OPTS breaks compilation +define LIBGLEW_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + GLEW_NO_GLU="-DGLEW_NO_GLU" \ + GLEW_DEST="/usr" LIBDIR="/usr/lib" \ + AR="$(TARGET_AR)" CC="$(TARGET_CC)" \ + LD="$(TARGET_CC)" STRIP="$(TARGET_STRIP)" \ + POPT="$(TARGET_CFLAGS)" LDFLAGS.EXTRA="$(TARGET_LDFLAGS)" +endef + +define LIBGLEW_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + GLEW_NO_GLU="-DGLEW_NO_GLU" \ + GLEW_DEST="$(STAGING_DIR)/usr" LIBDIR="$(STAGING_DIR)/usr/lib" \ + $(TARGET_CONFIGURE_OPTS) install +endef + +define LIBGLEW_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + GLEW_NO_GLU="-DGLEW_NO_GLU" \ + GLEW_DEST="$(TARGET_DIR)/usr" LIBDIR="$(TARGET_DIR)/usr/lib" \ + $(TARGET_CONFIGURE_OPTS) install +endef + +$(eval $(generic-package)) diff --git a/package/libglfw/0001-Wayland-Remove-extra-cmake-modules-dependency.patch b/package/libglfw/0001-Wayland-Remove-extra-cmake-modules-dependency.patch new file mode 100644 index 00000000..ffa1d13f --- /dev/null +++ b/package/libglfw/0001-Wayland-Remove-extra-cmake-modules-dependency.patch @@ -0,0 +1,125 @@ +From 8ebf1067390948d03330a5a0c814e5f7f860e678 Mon Sep 17 00:00:00 2001 +From: Joel Winarske +Date: Mon, 28 Sep 2020 22:23:02 -0700 +Subject: [PATCH] Wayland: Remove extra-cmake-modules dependency + +Fixes #1774. + +[Retrieved (and backported) from: +https://github.com/glfw/glfw/commit/2747e47393cbca2d09db56223e735bd94b21e2eb] +Signed-off-by: Fabrice Fontaine +[Dario: make the patch to be applied with fuzz factor 0 dropping all Hunks] +Signed-off-by: Dario Binacchi +--- + CMakeLists.txt | 16 ++++++------ + src/CMakeLists.txt | 62 ++++++++++++++++++++++++++++------------------ + 2 files changed, 45 insertions(+), 33 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 75069161fc36..b315eaa15305 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -249,20 +249,18 @@ endif() + # Use Wayland for window creation + #-------------------------------------------------------------------- + if (_GLFW_WAYLAND) +- find_package(ECM REQUIRED NO_MODULE) +- list(APPEND CMAKE_MODULE_PATH "${ECM_MODULE_PATH}") + +- find_package(Wayland REQUIRED Client Cursor Egl) +- find_package(WaylandScanner REQUIRED) +- find_package(WaylandProtocols 1.15 REQUIRED) ++ include(FindPkgConfig) ++ pkg_check_modules(Wayland REQUIRED ++ wayland-client>=0.2.7 ++ wayland-cursor>=0.2.7 ++ wayland-egl>=0.2.7 ++ xkbcommon) + + list(APPEND glfw_PKG_DEPS "wayland-client") + + list(APPEND glfw_INCLUDE_DIRS "${Wayland_INCLUDE_DIRS}") +- list(APPEND glfw_LIBRARIES "${Wayland_LIBRARIES}" "${CMAKE_THREAD_LIBS_INIT}") +- +- find_package(XKBCommon REQUIRED) +- list(APPEND glfw_INCLUDE_DIRS "${XKBCOMMON_INCLUDE_DIRS}") ++ list(APPEND glfw_LIBRARIES "${Wayland_LINK_LIBRARIES}" "${CMAKE_THREAD_LIBS_INIT}") + + include(CheckIncludeFiles) + include(CheckFunctionExists) +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index b6dd86c54512..29be6515ae58 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -40,30 +40,44 @@ elseif (_GLFW_WAYLAND) + posix_time.c posix_thread.c xkb_unicode.c + egl_context.c osmesa_context.c) + +- ecm_add_wayland_client_protocol(glfw_SOURCES +- PROTOCOL +- "${WAYLAND_PROTOCOLS_PKGDATADIR}/stable/xdg-shell/xdg-shell.xml" +- BASENAME xdg-shell) +- ecm_add_wayland_client_protocol(glfw_SOURCES +- PROTOCOL +- "${WAYLAND_PROTOCOLS_PKGDATADIR}/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml" +- BASENAME xdg-decoration) +- ecm_add_wayland_client_protocol(glfw_SOURCES +- PROTOCOL +- "${WAYLAND_PROTOCOLS_PKGDATADIR}/stable/viewporter/viewporter.xml" +- BASENAME viewporter) +- ecm_add_wayland_client_protocol(glfw_SOURCES +- PROTOCOL +- "${WAYLAND_PROTOCOLS_PKGDATADIR}/unstable/relative-pointer/relative-pointer-unstable-v1.xml" +- BASENAME relative-pointer-unstable-v1) +- ecm_add_wayland_client_protocol(glfw_SOURCES +- PROTOCOL +- "${WAYLAND_PROTOCOLS_PKGDATADIR}/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml" +- BASENAME pointer-constraints-unstable-v1) +- ecm_add_wayland_client_protocol(glfw_SOURCES +- PROTOCOL +- "${WAYLAND_PROTOCOLS_PKGDATADIR}/unstable/idle-inhibit/idle-inhibit-unstable-v1.xml" +- BASENAME idle-inhibit-unstable-v1) ++ find_program(WAYLAND_SCANNER_EXECUTABLE NAMES wayland-scanner) ++ pkg_check_modules(WAYLAND_PROTOCOLS REQUIRED wayland-protocols>=1.15) ++ pkg_get_variable(WAYLAND_PROTOCOLS_BASE wayland-protocols pkgdatadir) ++ ++ macro(wayland_generate protocol_file output_file) ++ add_custom_command(OUTPUT ${output_file}.h ++ COMMAND ${WAYLAND_SCANNER_EXECUTABLE} client-header ++ < ${protocol_file} > ${output_file}.h ++ DEPENDS ${protocol_file}) ++ list(APPEND glfw_SOURCES ${output_file}.h) ++ ++ add_custom_command(OUTPUT ${output_file}.c ++ COMMAND ${WAYLAND_SCANNER_EXECUTABLE} private-code ++ < ${protocol_file} > ${output_file}.c ++ DEPENDS ${protocol_file}) ++ list(APPEND glfw_SOURCES ${output_file}.c) ++ endmacro() ++ ++ set(GLFW_WAYLAND_PROTOCOL_SOURCES) ++ wayland_generate( ++ ${WAYLAND_PROTOCOLS_BASE}/stable/xdg-shell/xdg-shell.xml ++ ${CMAKE_BINARY_DIR}/src/wayland-xdg-shell-client-protocol) ++ wayland_generate( ++ ${WAYLAND_PROTOCOLS_BASE}/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml ++ ${CMAKE_BINARY_DIR}/src/wayland-xdg-decoration-client-protocol) ++ wayland_generate( ++ ${WAYLAND_PROTOCOLS_BASE}/stable/viewporter/viewporter.xml ++ ${CMAKE_BINARY_DIR}/src/wayland-viewporter-client-protocol) ++ wayland_generate( ++ ${WAYLAND_PROTOCOLS_BASE}/unstable/relative-pointer/relative-pointer-unstable-v1.xml ++ ${CMAKE_BINARY_DIR}/src/wayland-relative-pointer-unstable-v1-client-protocol) ++ wayland_generate( ++ ${WAYLAND_PROTOCOLS_BASE}/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml ++ ${CMAKE_BINARY_DIR}/src/wayland-pointer-constraints-unstable-v1-client-protocol) ++ wayland_generate( ++ ${WAYLAND_PROTOCOLS_BASE}/unstable/idle-inhibit/idle-inhibit-unstable-v1.xml ++ ${CMAKE_BINARY_DIR}/src/wayland-idle-inhibit-unstable-v1-client-protocol) ++ + elseif (_GLFW_OSMESA) + set(glfw_HEADERS ${common_HEADERS} null_platform.h null_joystick.h + posix_time.h posix_thread.h osmesa_context.h) +-- +2.43.0 + diff --git a/package/libglfw/0002-src-CMakeLists.txt-allow-override-of-wayland-pkgdata.patch b/package/libglfw/0002-src-CMakeLists.txt-allow-override-of-wayland-pkgdata.patch new file mode 100644 index 00000000..268b1248 --- /dev/null +++ b/package/libglfw/0002-src-CMakeLists.txt-allow-override-of-wayland-pkgdata.patch @@ -0,0 +1,34 @@ +From a2c88988b6cfe4023fe78f13519b56a8ac9f568b Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 4 Mar 2022 17:59:19 +0100 +Subject: [PATCH] src/CMakeLists.txt: allow override of wayland pkgdatadir + +Allow the user to override WAYLAND_{PROTOCOLS_BASE,CLIENT_PKGDATADIR} +(needed when cross-compiling) + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/glfw/glfw/pull/2053 +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + src/CMakeLists.txt | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 29be6515ae58..1767b3c8ad8f 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -42,7 +42,9 @@ elseif (_GLFW_WAYLAND) + + find_program(WAYLAND_SCANNER_EXECUTABLE NAMES wayland-scanner) + pkg_check_modules(WAYLAND_PROTOCOLS REQUIRED wayland-protocols>=1.15) +- pkg_get_variable(WAYLAND_PROTOCOLS_BASE wayland-protocols pkgdatadir) ++ if (NOT WAYLAND_PROTOCOLS_BASE) ++ pkg_get_variable(WAYLAND_PROTOCOLS_BASE wayland-protocols pkgdatadir) ++ endif() + + macro(wayland_generate protocol_file output_file) + add_custom_command(OUTPUT ${output_file}.h +-- +2.43.0 + diff --git a/package/libglfw/Config.in b/package/libglfw/Config.in new file mode 100644 index 00000000..e5e96036 --- /dev/null +++ b/package/libglfw/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBGLFW + bool "libglfw" + depends on BR2_PACKAGE_XORG7 || BR2_PACKAGE_WAYLAND + depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES + select BR2_PACKAGE_LIBXKBCOMMON if BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_WAYLAND_PROTOCOLS if BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_XLIB_LIBXCURSOR if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXI if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXINERAMA if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXRANDR if BR2_PACKAGE_XORG7 + help + GLFW is an Open Source, multi-platform library for creating + windows with OpenGL contexts and receiving input and events. + + http://www.glfw.org + +comment "libglfw depends on X.org or Wayland and an OpenGL or GLES backend" + depends on !(BR2_PACKAGE_XORG7 || BR2_PACKAGE_WAYLAND) + depends on !(BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES) diff --git a/package/libglfw/libglfw.hash b/package/libglfw/libglfw.hash new file mode 100644 index 00000000..9d38946f --- /dev/null +++ b/package/libglfw/libglfw.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 f30f42e05f11e5fc62483e513b0488d5bceeab7d9c5da0ffe2252ad81816c713 libglfw-3.3.8.tar.gz +sha256 149704059b5d0bf551637e50042dd4de9c2cae921021f6636298911e3a5f9462 LICENSE.md diff --git a/package/libglfw/libglfw.mk b/package/libglfw/libglfw.mk new file mode 100644 index 00000000..f5d254ee --- /dev/null +++ b/package/libglfw/libglfw.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# libglfw +# +################################################################################ + +LIBGLFW_VERSION = 3.3.8 +LIBGLFW_SITE = $(call github,glfw,glfw,$(LIBGLFW_VERSION)) +LIBGLFW_INSTALL_STAGING = YES +LIBGLFW_LICENSE = Zlib +LIBGLFW_LICENSE_FILES = LICENSE.md + +LIBGLFW_CONF_OPTS += \ + -DGLFW_BUILD_EXAMPLES=OFF \ + -DGLFW_BUILD_TESTS=OFF \ + -DGLFW_BUILD_DOCS=OFF + +ifeq ($(BR2_PACKAGE_XORG7),y) +LIBGLFW_DEPENDENCIES += xlib_libXcursor xlib_libXext \ + xlib_libXi xlib_libXinerama xlib_libXrandr +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +LIBGLFW_DEPENDENCIES += libgl +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y) +LIBGLFW_DEPENDENCIES += libgles +endif + +ifeq ($(BR2_PACKAGE_WAYLAND),y) +LIBGLFW_DEPENDENCIES += libxkbcommon wayland wayland-protocols +# Override pkg-config pkgdatadir variable, it needs the prefix +LIBGLFW_CONF_OPTS += \ + -DGLFW_USE_WAYLAND=1 \ + -DWAYLAND_PROTOCOLS_BASE=$(STAGING_DIR)/usr/share/wayland-protocols +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXXF86VM),y) +LIBGLFW_DEPENDENCIES += xlib_libXxf86vm +endif + +$(eval $(cmake-package)) diff --git a/package/libglib2/0001-meson.build-add-girdir-to-gio-2.0.pc-and-glib-2.0.pc.patch b/package/libglib2/0001-meson.build-add-girdir-to-gio-2.0.pc-and-glib-2.0.pc.patch new file mode 100644 index 00000000..8f876711 --- /dev/null +++ b/package/libglib2/0001-meson.build-add-girdir-to-gio-2.0.pc-and-glib-2.0.pc.patch @@ -0,0 +1,51 @@ +From 03e9cae3f3a7e2bbd5110f1ce2739601571bc024 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 12 Nov 2021 18:01:05 +0100 +Subject: [PATCH] meson.build: add girdir to gio-2.0.pc and glib-2.0.pc + +Add girdir to gio-2.0.pc and glib-2.0.pc to fix the following build +failure with atk or libnice: + +/home/giuliobenetti/autobuild/run/instance-1/output-1/host/riscv32-buildroot-linux-gnu/sysroot/usr/bin/g-ir-compiler atk/Atk-1.0.gir --output atk/Atk-1.0.typelib --includedir=/usr/share/gir-1.0 +Could not find GIR file 'GObject-2.0.gir'; check XDG_DATA_DIRS or use --includedir + +Fixes: + - http://autobuild.buildroot.org/results/2716929db638977e6bf665352a08bd580e1dd0ae + - http://autobuild.buildroot.org/results/3088ef32b03e0bb984291b1227b187f1ff816eb7 + +Signed-off-by: Fabrice Fontaine +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +Upstream: Never submitted +--- + gio/meson.build | 1 + + glib/meson.build | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/gio/meson.build b/gio/meson.build +index 462606f3b56c..e6b736167b8d 100644 +--- a/gio/meson.build ++++ b/gio/meson.build +@@ -880,6 +880,7 @@ pkg.generate(libgio, + variables : ['datadir=' + join_paths('${prefix}', get_option('datadir')), + 'schemasdir=' + join_paths('${datadir}', schemas_subdir), + 'bindir=' + join_paths('${prefix}', get_option('bindir')), ++ 'girdir=' + join_paths('${libdir}', '../share/gir-1.0'), + 'giomoduledir=' + pkgconfig_giomodulesdir, + 'gio=' + join_paths('${bindir}', 'gio'), + 'gio_querymodules=@0@'.format(pkgconfig_multiarch_bindir / 'gio-querymodules'), +diff --git a/glib/meson.build b/glib/meson.build +index da76fc005e46..cde2edb197c7 100644 +--- a/glib/meson.build ++++ b/glib/meson.build +@@ -441,6 +441,7 @@ pkg.generate(libglib, + subdirs : ['glib-2.0'], + extra_cflags : ['-I${libdir}/glib-2.0/include'] + win32_cflags, + variables : ['bindir=' + join_paths('${prefix}', get_option('bindir')), ++ 'girdir=' + join_paths('${libdir}', '../share/gir-1.0'), + 'glib_genmarshal=' + join_paths('${bindir}', 'glib-genmarshal'), + 'gobject_query=' + join_paths('${bindir}', 'gobject-query'), + 'glib_mkenums=' + join_paths('${bindir}', 'glib-mkenums')], +-- +2.43.0 + diff --git a/package/libglib2/0002-Fix-error-format-in-gio-gunixconnection.c-part-2.patch b/package/libglib2/0002-Fix-error-format-in-gio-gunixconnection.c-part-2.patch new file mode 100644 index 00000000..6075bacb --- /dev/null +++ b/package/libglib2/0002-Fix-error-format-in-gio-gunixconnection.c-part-2.patch @@ -0,0 +1,93 @@ +From 4ae8606b6f80f9764e1f0a82cea7e23c8af487ae Mon Sep 17 00:00:00 2001 +From: James Knight +Date: Thu, 20 Apr 2023 23:41:32 -0400 +Subject: [PATCH] Fix error format in gio/gunixconnection.c (part 2) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Update a series of error messages to use `g_set_error_literal` instead +of `g_set_error`. This should prevent `format-nonliteral` compiler +issues when `-Werror` is configured: + + ../gio/gunixconnection.c: In function ‘g_unix_connection_receive_fd’: + ../gio/gunixconnection.c:183:9: error: format not a string literal, argument types not checked [-Werror=format-nonliteral] + 183 | nscm); + | ^~~~ + ../gio/gunixconnection.c:217:20: error: format not a string literal, argument types not checked [-Werror=format-nonliteral] + 217 | nfd); + | ^~~ + ../gio/gunixconnection.c: In function ‘g_unix_connection_receive_credentials’: + ../gio/gunixconnection.c:601:24: error: format not a string literal, argument types not checked [-Werror=format-nonliteral] + 601 | nscm); + | ^~~~ + +This is similar to a previous change [1] made to `gunixconnection.c`. + +[1]: 44b3d5d80445234041f6c59feb89645f7102c3a4 + +Signed-off-by: James Knight +Upstream: backport from upstream https://gitlab.gnome.org/GNOME/glib/-/commit/4ae8606b6f80f9764e1f0a82cea7e23c8af487ae +--- + gio/gunixconnection.c | 31 ++++++++++++++----------------- + 1 file changed, 14 insertions(+), 17 deletions(-) + +diff --git a/gio/gunixconnection.c b/gio/gunixconnection.c +index b3f2b1c04b0abdf7136918585ae4cea8970a88bb..c012fcbfe00b69e9da609c7b626229db98e931ac 100644 +--- a/gio/gunixconnection.c ++++ b/gio/gunixconnection.c +@@ -176,11 +176,10 @@ g_unix_connection_receive_fd (GUnixConnection *connection, + { + gint i; + +- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, +- ngettext("Expecting 1 control message, got %d", +- "Expecting 1 control message, got %d", +- nscm), +- nscm); ++ g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, ++ ngettext ("Expecting 1 control message, got %d", ++ "Expecting 1 control message, got %d", ++ nscm)); + + for (i = 0; i < nscm; i++) + g_object_unref (scms[i]); +@@ -210,11 +209,10 @@ g_unix_connection_receive_fd (GUnixConnection *connection, + { + gint i; + +- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, +- ngettext("Expecting one fd, but got %d\n", +- "Expecting one fd, but got %d\n", +- nfd), +- nfd); ++ g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, ++ ngettext ("Expecting one fd, but got %d\n", ++ "Expecting one fd, but got %d\n", ++ nfd)); + + for (i = 0; i < nfd; i++) + close (fds[i]); +@@ -592,13 +590,12 @@ g_unix_connection_receive_credentials (GUnixConnection *connection, + { + if (nscm != 1) + { +- g_set_error (error, +- G_IO_ERROR, +- G_IO_ERROR_FAILED, +- ngettext("Expecting 1 control message, got %d", +- "Expecting 1 control message, got %d", +- nscm), +- nscm); ++ g_set_error_literal (error, ++ G_IO_ERROR, ++ G_IO_ERROR_FAILED, ++ ngettext ("Expecting 1 control message, got %d", ++ "Expecting 1 control message, got %d", ++ nscm)); + goto out; + } + +-- +2.39.1.windows.1 + diff --git a/package/libglib2/0003-meson-wrap-html-documentation-generation-with-gtk_do.patch b/package/libglib2/0003-meson-wrap-html-documentation-generation-with-gtk_do.patch new file mode 100644 index 00000000..0fa15ad1 --- /dev/null +++ b/package/libglib2/0003-meson-wrap-html-documentation-generation-with-gtk_do.patch @@ -0,0 +1,96 @@ +From 0fa17ec3c7152cf0e1cbf965acf1426ac203bb1d Mon Sep 17 00:00:00 2001 +From: James Knight +Date: Thu, 27 Apr 2023 20:23:30 -0400 +Subject: [PATCH] meson: wrap html documentation generation with gtk_doc option + +By default, if a host environment has the `rst2html5` application +available, builds will automatically perform some HTML documentation +generation from the documentation's glib reference content (e.g. +creating `gvariant-specification-1.0.html`). The creation of this +documentation is not required for all use cases. + +This commit tweaks the building of the HTML-based GLIB specification +document to be guarded by `gtk_doc`. + +Signed-off-by: James Knight +Upstream: https://gitlab.gnome.org/GNOME/glib/-/commit/0fa17ec3c7152cf0e1cbf965acf1426ac203bb1d +[yann.morin.1998@free.fr: backport from upstream] +Signed-off-by: Yann E. MORIN +--- + docs/reference/glib/meson.build | 58 +++++++++++++++++---------------- + 1 file changed, 30 insertions(+), 28 deletions(-) + +diff --git a/docs/reference/glib/meson.build b/docs/reference/glib/meson.build +index 114de49da..3cfff2f0b 100644 +--- a/docs/reference/glib/meson.build ++++ b/docs/reference/glib/meson.build +@@ -113,35 +113,37 @@ if get_option('man') + endforeach + endif + +-# GVariant specification is currently standalone +-rst2html5 = find_program('rst2html5', 'rst2html5.py', required: false) ++if get_option('gtk_doc') ++ # GVariant specification is currently standalone ++ rst2html5 = find_program('rst2html5', 'rst2html5.py', required: false) + +-if rst2html5.found() +- spec_path = glib_datadir / 'doc' / 'glib-2.0' ++ if rst2html5.found() ++ spec_path = glib_datadir / 'doc' / 'glib-2.0' + +- figures = files( +- 'gvariant-byte-boundaries.svg', +- 'gvariant-integer-and-string-structure.svg', +- 'gvariant-integer-array.svg', +- 'gvariant-string-array.svg', +- ) ++ figures = files( ++ 'gvariant-byte-boundaries.svg', ++ 'gvariant-integer-and-string-structure.svg', ++ 'gvariant-integer-array.svg', ++ 'gvariant-string-array.svg', ++ ) + +- custom_target('gvariant-specification-1.0', +- input: 'gvariant-specification-1.0.rst', +- output: 'gvariant-specification-1.0.html', +- command: [ +- rst2html5, +- '@INPUT@', +- ], +- capture: true, +- install: true, +- install_dir: spec_path, +- install_tag: 'doc', +- depend_files: figures, +- ) ++ custom_target('gvariant-specification-1.0', ++ input: 'gvariant-specification-1.0.rst', ++ output: 'gvariant-specification-1.0.html', ++ command: [ ++ rst2html5, ++ '@INPUT@', ++ ], ++ capture: true, ++ install: true, ++ install_dir: spec_path, ++ install_tag: 'doc', ++ depend_files: figures, ++ ) + +- install_data(figures, +- install_dir : spec_path, +- install_tag : 'doc', +- ) +-endif +\ No newline at end of file ++ install_data(figures, ++ install_dir : spec_path, ++ install_tag : 'doc', ++ ) ++ endif ++endif +-- +2.25.1 + diff --git a/package/libglib2/0004-meson-Fix-detection-of-a-system-provided-proxy-libin.patch b/package/libglib2/0004-meson-Fix-detection-of-a-system-provided-proxy-libin.patch new file mode 100644 index 00000000..57404705 --- /dev/null +++ b/package/libglib2/0004-meson-Fix-detection-of-a-system-provided-proxy-libin.patch @@ -0,0 +1,53 @@ +From 2ca9f53327308e85e376bcbef7f8259a6331a453 Mon Sep 17 00:00:00 2001 +From: Nirbheek Chauhan +Date: Thu, 8 Sep 2022 02:36:33 +0530 +Subject: [PATCH] meson: Fix detection of a system-provided proxy-libintl + +proxy-libintl defines ngettext() as a define in the header that points +to the actual symbol in the library which is g_libintl_ngettext(). +Same with bind_textdomain_codeset(). + +Upstream: https://gitlab.gnome.org/GNOME/glib/-/commit/32249a22fc39319651e7c23442d37ec837f05764 +Signed-off-by: Thomas Devoogdt +--- + meson.build | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/meson.build b/meson.build +index 0cbc9689f..de0bee5a3 100644 +--- a/meson.build ++++ b/meson.build +@@ -2089,6 +2089,7 @@ libz_dep = dependency('zlib') + # FIXME: glib-gettext.m4 has much more checks to detect broken/uncompatible + # implementations. This could be extended if issues are found in some platforms. + libintl_deps = [] ++libintl_prefix = '#include ' + libintl = dependency('intl', required: false, allow_fallback: false) + if libintl.found() + # libintl supports different threading APIs, which may not +@@ -2100,11 +2101,11 @@ if libintl.found() + # + # Meson's builtin dependency lookup as of 0.60.0 doesn't check for + # pthread, so we do this manually here. +- if cc.has_function('ngettext', dependencies : libintl) ++ if cc.has_function('ngettext', dependencies : libintl, prefix: libintl_prefix) + libintl_deps += [libintl] + else + libintl_pthread = cc.find_library('pthread', required : false) +- if libintl_pthread.found() and cc.has_function('ngettext', dependencies : [libintl, libintl_pthread]) ++ if libintl_pthread.found() and cc.has_function('ngettext', dependencies : [libintl, libintl_pthread], prefix: libintl_prefix) + libintl_deps += [libintl, libintl_pthread] + else + libintl = disabler() +@@ -2113,7 +2114,7 @@ if libintl.found() + endif + + if libintl.found() +- have_bind_textdomain_codeset = cc.has_function('bind_textdomain_codeset', dependencies: libintl_deps) ++ have_bind_textdomain_codeset = cc.has_function('bind_textdomain_codeset', dependencies: libintl_deps, prefix: libintl_prefix) + else + libintl = dependency('intl', allow_fallback: true) + assert(libintl.type_name() == 'internal') +-- +2.34.1 + diff --git a/package/libglib2/0005-meson-try-iconv-in-libintl-lookup.patch b/package/libglib2/0005-meson-try-iconv-in-libintl-lookup.patch new file mode 100644 index 00000000..a342ee95 --- /dev/null +++ b/package/libglib2/0005-meson-try-iconv-in-libintl-lookup.patch @@ -0,0 +1,53 @@ +From fe7f54d4f339b7948c961b60729f620f2eaec716 Mon Sep 17 00:00:00 2001 +From: Jan200101 +Date: Tue, 23 May 2023 23:42:37 +0200 +Subject: [PATCH] meson: try iconv in libintl lookup +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This was originally removed in !2734 but still appears to be required for +some MinGW setups, such as the `x86_64-w64-mingw32.static` target in +[mxe](https://github.com/mxe/mxe). + +Currently, this configuration fails the libintl internal assert on line +2128, as on this platform `ngettext()` is only found inside libiconv. + +This commit will look up iconv potentially twice, once as `libiconv` and +potentially once as `libintl_iconv`. This is what the code did before +!2734 landed, so it’s known to work reliably on a number of platforms. + +Upstream: https://gitlab.gnome.org/GNOME/glib/-/commit/a497d5be122f193dcf8679334308333bbbc14a71 +Signed-off-by: Thomas Devoogdt +--- + meson.build | 13 +++++++++---- + 1 file changed, 9 insertions(+), 4 deletions(-) + +diff --git a/meson.build b/meson.build +index de0bee5a3..653f9eddf 100644 +--- a/meson.build ++++ b/meson.build +@@ -2104,11 +2104,16 @@ if libintl.found() + if cc.has_function('ngettext', dependencies : libintl, prefix: libintl_prefix) + libintl_deps += [libintl] + else +- libintl_pthread = cc.find_library('pthread', required : false) +- if libintl_pthread.found() and cc.has_function('ngettext', dependencies : [libintl, libintl_pthread], prefix: libintl_prefix) +- libintl_deps += [libintl, libintl_pthread] ++ libintl_iconv = cc.find_library('iconv', required : false) ++ if libintl_iconv.found() and cc.has_function('ngettext', dependencies : [libintl, libintl_iconv]) ++ libintl_deps += [libintl, libintl_iconv] + else +- libintl = disabler() ++ libintl_pthread = cc.find_library('pthread', required : false) ++ if libintl_pthread.found() and cc.has_function('ngettext', dependencies : [libintl, libintl_pthread], prefix: libintl_prefix) ++ libintl_deps += [libintl, libintl_pthread] ++ else ++ libintl = disabler() ++ endif + endif + endif + endif +-- +2.34.1 + diff --git a/package/libglib2/0006-link-with-latomic-when-needed.patch b/package/libglib2/0006-link-with-latomic-when-needed.patch new file mode 100644 index 00000000..3b5a0710 --- /dev/null +++ b/package/libglib2/0006-link-with-latomic-when-needed.patch @@ -0,0 +1,52 @@ +From 4e6dc4dee0e1c6407113597180d9616b4f275f94 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 2 May 2024 14:02:17 +0200 +Subject: [PATCH] link with -latomic when needed + +Some architecture such as sparc and some flavors of arm needs -latomic +to avoid the following build failure: + +gthread-posix.c:(.text+0xda8): undefined reference to `__atomic_compare_exchange_4' + +Signed-off-by: Fabrice Fontaine +Upstream: https://gitlab.gnome.org/GNOME/glib/-/commit/4e6dc4dee0e1c6407113597180d9616b4f275f94 +--- + glib/meson.build | 1 + + meson.build | 9 +++++++++ + 2 files changed, 10 insertions(+) + +diff --git a/glib/meson.build b/glib/meson.build +index 24cbb664d4..b2dd569e1e 100644 +--- a/glib/meson.build ++++ b/glib/meson.build +@@ -419,6 +419,7 @@ libglib = library('glib-2.0', + include_directories : configinc, + link_with: [charset_lib, gnulib_lib], + dependencies : [ ++ atomic_dep, + gnulib_libm_dependency, + libiconv, + libintl_deps, +diff --git a/meson.build b/meson.build +index 46c5aa200a..8b42940558 100644 +--- a/meson.build ++++ b/meson.build +@@ -2233,6 +2233,15 @@ libffi_dep = dependency('libffi', version : '>= 3.0.0') + + libz_dep = dependency('zlib') + ++libatomic_test_code = ''' ++ int main (int argc, char ** argv) { ++ return 0; ++ }''' ++atomic_dep = [] ++if cc.links(libatomic_test_code, args : '-latomic', name : 'check for -latomic') ++ atomic_dep = cc.find_library('atomic') ++endif ++ + # First check in libc, fallback to libintl, and as last chance build + # proxy-libintl subproject. + # FIXME: glib-gettext.m4 has much more checks to detect broken/uncompatible +-- +2.44.0 + diff --git a/package/libglib2/Config.in b/package/libglib2/Config.in new file mode 100644 index 00000000..077d7d66 --- /dev/null +++ b/package/libglib2/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBGLIB2 + bool "libglib2" + depends on BR2_USE_WCHAR # gettext + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_LIBFFI + select BR2_PACKAGE_PCRE2 + select BR2_PACKAGE_ZLIB + help + Low-level core library that forms the basis of GTK+ and GNOME. + + http://www.gtk.org/ + +comment "libglib2 needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libglib2/libglib2.hash b/package/libglib2/libglib2.hash new file mode 100644 index 00000000..07ed7635 --- /dev/null +++ b/package/libglib2/libglib2.hash @@ -0,0 +1,4 @@ +# https://download.gnome.org/sources/glib/2.76/glib-2.76.1.sha256sum +sha256 43dc0f6a126958f5b454136c4398eab420249c16171a769784486e25f2fda19f glib-2.76.1.tar.xz +# License files, locally calculated +sha256 fa6f36630bb1e0c571d34b2bbdf188d08495c9dbf58f28cac112f303fc1f58fb COPYING diff --git a/package/libglib2/libglib2.mk b/package/libglib2/libglib2.mk new file mode 100644 index 00000000..bffc565f --- /dev/null +++ b/package/libglib2/libglib2.mk @@ -0,0 +1,140 @@ +################################################################################ +# +# libglib2 +# +################################################################################ + +LIBGLIB2_VERSION_MAJOR = 2.76 +LIBGLIB2_VERSION = $(LIBGLIB2_VERSION_MAJOR).1 +LIBGLIB2_SOURCE = glib-$(LIBGLIB2_VERSION).tar.xz +LIBGLIB2_SITE = https://download.gnome.org/sources/glib/$(LIBGLIB2_VERSION_MAJOR) +LIBGLIB2_LICENSE = LGPL-2.1+ +LIBGLIB2_LICENSE_FILES = COPYING +LIBGLIB2_CPE_ID_VENDOR = gnome +LIBGLIB2_CPE_ID_PRODUCT = glib +LIBGLIB2_INSTALL_STAGING = YES + +LIBGLIB2_CFLAGS = $(TARGET_CFLAGS) +LIBGLIB2_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) + +# glib/valgrind.h contains inline asm not compatible with thumb1 +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +LIBGLIB2_CFLAGS += -marm +endif + +HOST_LIBGLIB2_CONF_OPTS = \ + -Ddtrace=false \ + -Dglib_debug=disabled \ + -Dlibelf=disabled \ + -Dselinux=disabled \ + -Dsystemtap=false \ + -Dxattr=false \ + -Dtests=false \ + -Doss_fuzz=disabled + +LIBGLIB2_DEPENDENCIES = \ + host-pkgconf host-libglib2 \ + libffi pcre2 zlib $(TARGET_NLS_DEPENDENCIES) + +HOST_LIBGLIB2_DEPENDENCIES = \ + host-gettext \ + host-libffi \ + host-pcre2 \ + host-pkgconf \ + host-util-linux \ + host-zlib + +# We explicitly specify a giomodule-dir to avoid having a value +# containing ${libdir} in gio-2.0.pc. Indeed, a value depending on +# ${libdir} would be prefixed by the sysroot by pkg-config, causing a +# bogus installation path once combined with $(DESTDIR). +LIBGLIB2_CONF_OPTS = \ + -Dglib_debug=disabled \ + -Dlibelf=disabled \ + -Dgio_module_dir=/usr/lib/gio/modules \ + -Dtests=false \ + -Doss_fuzz=disabled + +LIBGLIB2_MESON_EXTRA_PROPERTIES = \ + have_c99_vsnprintf=true \ + have_c99_snprintf=true \ + have_unix98_printf=true + +ifeq ($(BR2_PACKAGE_ELFUTILS),y) +LIBGLIB2_DEPENDENCIES += elfutils +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +LIBGLIB2_DEPENDENCIES += libiconv +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +LIBGLIB2_CONF_OPTS += -Dselinux=enabled -Dxattr=true +LIBGLIB2_DEPENDENCIES += libselinux +else +LIBGLIB2_CONF_OPTS += -Dselinux=disabled -Dxattr=false +endif + +# Purge gdb-related files +ifneq ($(BR2_PACKAGE_GDB),y) +define LIBGLIB2_REMOVE_GDB_FILES + rm -rf $(TARGET_DIR)/usr/share/glib-2.0/gdb +endef +endif + +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBMOUNT),y) +LIBGLIB2_CONF_OPTS += -Dlibmount=enabled +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBS),y) +LIBGLIB2_DEPENDENCIES += util-linux-libs +else +LIBGLIB2_DEPENDENCIES += util-linux +endif +else +LIBGLIB2_CONF_OPTS += -Dlibmount=disabled +endif + +# Purge useless binaries from target +define LIBGLIB2_REMOVE_DEV_FILES + rm -rf $(TARGET_DIR)/usr/lib/glib-2.0 + rm -rf $(addprefix $(TARGET_DIR)/usr/share/glib-2.0/,codegen gettext) + rm -f $(addprefix $(TARGET_DIR)/usr/bin/,gdbus-codegen glib-compile-schemas glib-compile-resources glib-genmarshal glib-gettextize glib-mkenums gobject-query gtester gtester-report) + $(LIBGLIB2_REMOVE_GDB_FILES) +endef + +LIBGLIB2_POST_INSTALL_TARGET_HOOKS += LIBGLIB2_REMOVE_DEV_FILES + +# Newer versions of libglib2 prefix glib-genmarshal, gobject-query, +# glib-mkenums, glib_compile_schemas, glib_compile_resources and gdbus-codegen +# with ${bindir}. Unfortunately, this will resolve to the host systems /bin/ +# directory, which will cause compilation issues if the host does not have these +# programs. By removing the ${bindir}/ prefix, these programs are resolved in +# PATH instead. +define LIBGLIB2_REMOVE_BINDIR_PREFIX_FROM_PC_FILE + $(SED) 's%$${bindir}/%%g' $(addprefix $(STAGING_DIR)/usr/lib/pkgconfig/, glib-2.0.pc gio-2.0.pc) +endef +LIBGLIB2_POST_INSTALL_TARGET_HOOKS += LIBGLIB2_REMOVE_BINDIR_PREFIX_FROM_PC_FILE + +# Remove schema sources/DTDs, we use staging ones to compile them. +# Do so at target finalization since other packages install additional +# ones and we want to deal with it in a single place. +define LIBGLIB2_REMOVE_TARGET_SCHEMAS + rm -f $(TARGET_DIR)/usr/share/glib-2.0/schemas/*.xml \ + $(TARGET_DIR)/usr/share/glib-2.0/schemas/*.dtd +endef + +# Compile schemas at target finalization since other packages install +# them as well, and better do it in a central place. +# It's used at run time so it doesn't matter defering it. +define LIBGLIB2_COMPILE_SCHEMAS + $(HOST_DIR)/bin/glib-compile-schemas \ + $(STAGING_DIR)/usr/share/glib-2.0/schemas \ + --targetdir=$(TARGET_DIR)/usr/share/glib-2.0/schemas +endef + +LIBGLIB2_TARGET_FINALIZE_HOOKS += LIBGLIB2_REMOVE_TARGET_SCHEMAS +LIBGLIB2_TARGET_FINALIZE_HOOKS += LIBGLIB2_COMPILE_SCHEMAS + +$(eval $(meson-package)) +$(eval $(host-meson-package)) + +LIBGLIB2_HOST_BINARY = $(HOST_DIR)/bin/glib-genmarshal diff --git a/package/libglob/Config.in b/package/libglob/Config.in new file mode 100644 index 00000000..7ae2bfd2 --- /dev/null +++ b/package/libglob/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBGLOB + bool "libglob" + help + OpenBSD implementation of glob(3). + + https://github.com/void-linux/libglob diff --git a/package/libglob/libglob.hash b/package/libglob/libglob.hash new file mode 100644 index 00000000..2d905368 --- /dev/null +++ b/package/libglob/libglob.hash @@ -0,0 +1,3 @@ +# Locally calculated: +sha256 4f1b204dad065689941c64828a92441fb316c9c7539b39525fa728125da65e22 libglob-1.0.tar.gz +sha256 4cd4bac6ef90d4a91ee6e52df30f241045fb1a27fb53541ef4a9f8e47e6103ca LICENSE diff --git a/package/libglob/libglob.mk b/package/libglob/libglob.mk new file mode 100644 index 00000000..52da3996 --- /dev/null +++ b/package/libglob/libglob.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# libglob +# +################################################################################ + +LIBGLOB_VERSION = 1.0 +LIBGLOB_SITE = $(call github,void-linux,libglob,$(LIBGLOB_VERSION)) +LIBGLOB_LICENSE = BSD-3-Clause +LIBGLOB_LICENSE_FILES = LICENSE +LIBGLOB_INSTALL_STAGING = YES + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +LIBGLOB_MAKE_TARGETS += libglob.so +# $1: destination directory +define LIBGLOB_INSTALL_SHARED + $(INSTALL) -m 0755 -D $(@D)/libglob.so.0.0.0 \ + $(1)/usr/lib/libglob.so.0.0.0 + ln -sf libglob.so.0.0.0 $(1)/usr/lib/libglob.so.0 + ln -sf libglob.so.0.0.0 $(1)/usr/lib/libglob.so +endef +endif + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +LIBGLOB_MAKE_TARGETS += libglob.a +# $1: destination directory +define LIBGLOB_INSTALL_STATIC + $(INSTALL) -m 0644 -D $(@D)/libglob.a $(1)/usr/lib/libglob.a +endef +endif + +define LIBGLOB_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(LIBGLOB_MAKE_TARGETS) +endef + +define LIBGLOB_INSTALL_STAGING_CMDS + $(INSTALL) -m 0644 -D $(@D)/glob.h \ + $(STAGING_DIR)/usr/include/libglob/glob.h + $(call LIBGLOB_INSTALL_SHARED,$(STAGING_DIR)) + $(call LIBGLOB_INSTALL_STATIC,$(STAGING_DIR)) +endef + +define LIBGLOB_INSTALL_TARGET_CMDS + $(call LIBGLOB_INSTALL_SHARED,$(TARGET_DIR)) +endef + +$(eval $(generic-package)) diff --git a/package/libglu/Config.in b/package/libglu/Config.in new file mode 100644 index 00000000..de8e1efb --- /dev/null +++ b/package/libglu/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBGLU + bool "libglu" + depends on BR2_PACKAGE_HAS_LIBGL + help + Mesa OpenGL Utility library + + http://cgit.freedesktop.org/mesa/glu/ + +comment "libglu needs an OpenGL backend" + depends on !BR2_PACKAGE_HAS_LIBGL diff --git a/package/libglu/libglu.hash b/package/libglu/libglu.hash new file mode 100644 index 00000000..17d018ac --- /dev/null +++ b/package/libglu/libglu.hash @@ -0,0 +1,5 @@ +# From https://lists.freedesktop.org/archives/mesa-announce/2023-July/000725.html +sha256 bd43fe12f374b1192eb15fe20e45ff456b9bc26ab57f0eee919f96ca0f8a330f glu-9.0.3.tar.xz +sha512 b2781059c0e176192c3fc0d7244645020937a463311171efddb9f35fb94ee43faabcf627fa7f429d48fceaf6dd9c5adb69c86c7a21ec4ea490f4ab143d52e3ba glu-9.0.3.tar.xz +# locally computed +sha256 3a9992ccc9d672cfdd07ea862431d943a992d04836570c638a733bf15ec62c54 include/GL/glu.h diff --git a/package/libglu/libglu.mk b/package/libglu/libglu.mk new file mode 100644 index 00000000..b3018788 --- /dev/null +++ b/package/libglu/libglu.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libglu +# +################################################################################ + +LIBGLU_VERSION = 9.0.3 +LIBGLU_SITE = https://mesa.freedesktop.org/archive/glu +LIBGLU_SOURCE = glu-$(LIBGLU_VERSION).tar.xz +LIBGLU_LICENSE = SGI-B-2.0 +LIBGLU_LICENSE_FILES = include/GL/glu.h +LIBGLU_INSTALL_STAGING = YES +LIBGLU_DEPENDENCIES = libgl host-pkgconf +LIBGLU_CONF_OPTS = -Dgl_provider=gl + +$(eval $(meson-package)) diff --git a/package/libglvnd/Config.in b/package/libglvnd/Config.in new file mode 100644 index 00000000..f471e289 --- /dev/null +++ b/package/libglvnd/Config.in @@ -0,0 +1,51 @@ +config BR2_PACKAGE_LIBGLVND + bool "libglvnd" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # __sync_*_4 intrisics + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_TOOLCHAIN_HAS_THREADS + help + The GL Vendor-Neutral Dispatch library + + libglvnd is a vendor-neutral dispatch layer for arbitrating + OpenGL API calls between multiple vendors. It allows multiple + drivers from different vendors to coexist on the same + filesystem, and determines which vendor to dispatch each API + call to at runtime. + + Both GLX and EGL are supported, in any combination with OpenGL + and OpenGL ES. + +if BR2_PACKAGE_LIBGLVND + +# The following symbols should be selected by the libglvnd-aware +# GL/EGL/GLES providers. +config BR2_PACKAGE_LIBGLVND_DISPATCH_GL + bool + depends on BR2_PACKAGE_XORG7 # libx11, libXext, xorgproto + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XORGPROTO + select BR2_PACKAGE_HAS_LIBGL + +config BR2_PACKAGE_LIBGLVND_DISPATCH_EGL + bool + select BR2_PACKAGE_HAS_LIBEGL + +config BR2_PACKAGE_LIBGLVND_DISPATCH_GLES + bool + select BR2_PACKAGE_HAS_LIBGLES + +config BR2_PACKAGE_PROVIDES_LIBGL + default "libglvnd" if BR2_PACKAGE_LIBGLVND_DISPATCH_GL + +config BR2_PACKAGE_PROVIDES_LIBEGL + default "libglvnd" if BR2_PACKAGE_LIBGLVND_DISPATCH_EGL + +config BR2_PACKAGE_PROVIDES_LIBGLES + default "libglvnd" if BR2_PACKAGE_LIBGLVND_DISPATCH_GLES + +endif + +comment "libglvnd needs a toolchain w/ dynamic library, threads" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libglvnd/libglvnd.hash b/package/libglvnd/libglvnd.hash new file mode 100644 index 00000000..e463a8de --- /dev/null +++ b/package/libglvnd/libglvnd.hash @@ -0,0 +1,7 @@ +# Locally computed +sha256 c4a884503d2412dc1fa209613aa8a77193aeb7065b823fe1775dc8b6f3e45211 libglvnd-1.4.0.tar.gz + +# Locally computed hashes for license files +sha256 f84a3eca98cc5bdf5318741124c38c5e877f856df8c7e229ee5065e5c61038c2 README.md +sha256 e9b9aac8421b6d29176c6f23f6f7a907194245e35ef99ace10839734961cfaa2 src/util/uthash/LICENSE +sha256 f6f207863675ca5a5128fd120b9aef4f4bbab73ffa57e5f771ccffc8e3cc56b7 src/util/cJSON/LICENSE diff --git a/package/libglvnd/libglvnd.mk b/package/libglvnd/libglvnd.mk new file mode 100644 index 00000000..95ac19dd --- /dev/null +++ b/package/libglvnd/libglvnd.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# libglvnd +# +################################################################################ + +LIBGLVND_VERSION = 1.4.0 +LIBGLVND_SITE = https://gitlab.freedesktop.org/glvnd/libglvnd/uploads/ca5bf4295beb39bb324f692c481ac8a1 + +LIBGLVND_LICENSE = \ + libglvnd license, \ + Apache-2.0 (Khronos headers), \ + MIT (Xorg; mesa; cJSON), \ + BSD-1=Clause (uthash) + +LIBGLVND_LICENSE_FILES = \ + README.md \ + src/util/uthash/LICENSE \ + src/util/cJSON/LICENSE + +LIBGLVND_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) +LIBGLVND_DEPENDENCIES += xlib_libX11 +LIBGLVND_CONF_OPTS += -Dx11=enabled +else +LIBGLVND_CONF_OPTS += -Dx11=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBGLVND_DISPATCH_GL),y) +LIBGLVND_DEPENDENCIES += xlib_libXext xorgproto +LIBGLVND_CONF_OPTS += -Dglx=enabled +LIBGLVND_PROVIDES += libgl +else +LIBGLVND_CONF_OPTS += -Dglx=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBGLVND_DISPATCH_EGL),y) +LIBGLVND_CONF_OPTS += -Degl=true +LIBGLVND_PROVIDES += libegl +else +LIBGLVND_CONF_OPTS += -Degl=false +endif + +ifeq ($(BR2_PACKAGE_LIBGLVND_DISPATCH_GLES),y) +LIBGLVND_CONF_OPTS += -Dgles1=true -Dgles2=true +LIBGLVND_PROVIDES += libgles +else +LIBGLVND_CONF_OPTS += -Dgles1=false -Dgles2=false +endif + +$(eval $(meson-package)) diff --git a/package/libgpg-error/Config.in b/package/libgpg-error/Config.in new file mode 100644 index 00000000..a0ee7ec5 --- /dev/null +++ b/package/libgpg-error/Config.in @@ -0,0 +1,64 @@ +config BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS + bool + # see src/syscfg/ + default y if \ + BR2_aarch64 || BR2_aarch64_be || \ + BR2_arm || BR2_armeb || \ + BR2_i386 || BR2_mips || \ + BR2_mipsel || BR2_mips64 || \ + BR2_mips64el || BR2_m68k || \ + BR2_nios2 || BR2_or1k || \ + BR2_powerpc || BR2_powerpc64 || \ + BR2_powerpc64le || BR2_RISCV_64 || \ + BR2_RISCV_32 || BR2_s390x || \ + BR2_sh4 || BR2_sh4eb || \ + BR2_sh4a || BR2_sh4aeb || \ + BR2_sparc || BR2_sparc64 || \ + BR2_x86_64 + depends on BR2_USE_MMU # fork() + +config BR2_PACKAGE_LIBGPG_ERROR + bool "libgpg-error" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS + help + Libgpg-error is a small library with error codes and + descriptions shared by most GnuPG related software. + + https://www.gnupg.org/related_software/libgpg-error + +config BR2_PACKAGE_LIBGPG_ERROR_SYSCFG + string + default "aarch64-unknown-linux-gnu" \ + if BR2_aarch64 || BR2_aarch64_be + default "arm-unknown-linux-gnueabi" \ + if BR2_arm || BR2_armeb + default "i686-pc-linux-gnu" \ + if BR2_i386 + default "mips-unknown-linux-gnu" \ + if BR2_mips || BR2_mipsel + default "mips64el-unknown-linux-gnuabi64" \ + if BR2_mips64 || BR2_mips64el + default "m68k-unknown-linux-gnu" \ + if BR2_m68k + default "nios2-unknown-linux-gnu" \ + if BR2_nios2 + default "or1k-unknown-linux-gnu" \ + if BR2_or1k + default "powerpc-unknown-linux-gnu" \ + if BR2_powerpc + default "powerpc64-unknown-linux-gnu" \ + if BR2_powerpc64 || BR2_powerpc64le + default "riscv32-unknown-linux-gnu" \ + if BR2_RISCV_32 + default "riscv64-unknown-linux-gnu" \ + if BR2_RISCV_64 + default "s390x-unknown-linux-gnu" \ + if BR2_s390x + default "sh4-unknown-linux-gnu" \ + if BR2_sh4 || BR2_sh4eb || BR2_sh4a || BR2_sh4aeb + default "sparc-unknown-linux-gnu" \ + if BR2_sparc + default "sparc64-unknown-linux-gnu" \ + if BR2_sparc64 + default "x86_64-unknown-linux-gnu" \ + if BR2_x86_64 diff --git a/package/libgpg-error/libgpg-error.hash b/package/libgpg-error/libgpg-error.hash new file mode 100644 index 00000000..be520258 --- /dev/null +++ b/package/libgpg-error/libgpg-error.hash @@ -0,0 +1,7 @@ +# From https://www.gnupg.org/download/integrity_check.html +sha1 6790fc3d6e7bbd7576654b43971bbe15e953ccc4 libgpg-error-1.50.tar.bz2 +sha256 69405349e0a633e444a28c5b35ce8f14484684518a508dc48a089992fe93e20a libgpg-error-1.50.tar.bz2 + +# Locally calculated +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING.LIB diff --git a/package/libgpg-error/libgpg-error.mk b/package/libgpg-error/libgpg-error.mk new file mode 100644 index 00000000..8dff6a61 --- /dev/null +++ b/package/libgpg-error/libgpg-error.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# libgpg-error +# +################################################################################ + +LIBGPG_ERROR_VERSION = 1.50 +LIBGPG_ERROR_SITE = https://www.gnupg.org/ftp/gcrypt/libgpg-error +LIBGPG_ERROR_SOURCE = libgpg-error-$(LIBGPG_ERROR_VERSION).tar.bz2 +LIBGPG_ERROR_LICENSE = GPL-2.0+, LGPL-2.1+ +LIBGPG_ERROR_LICENSE_FILES = COPYING COPYING.LIB +LIBGPG_ERROR_CPE_ID_VENDOR = gnupg +LIBGPG_ERROR_INSTALL_STAGING = YES +LIBGPG_ERROR_CONFIG_SCRIPTS = gpg-error-config +LIBGPG_ERROR_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) +LIBGPG_ERROR_CONF_OPTS = \ + cross_compiling=yes \ + --host=$(BR2_PACKAGE_LIBGPG_ERROR_SYSCFG) \ + --enable-install-gpg-error-config \ + --disable-tests \ + --disable-languages + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +LIBGPG_ERROR_CONF_OPTS += --enable-threads +else +LIBGPG_ERROR_CONF_OPTS += --disable-threads +endif + +HOST_LIBGPG_ERROR_CONF_OPTS = \ + --enable-threads \ + --enable-install-gpg-error-config \ + --disable-tests + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libgpgme/Config.in b/package/libgpgme/Config.in new file mode 100644 index 00000000..16ce27d0 --- /dev/null +++ b/package/libgpgme/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBGPGME + bool "libgpgme" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error + depends on BR2_USE_MMU # libassuan + select BR2_PACKAGE_GNUPG2 if BR2_PACKAGE_GNUPG2_DEPENDS && !BR2_PACKAGE_GNUPG # runtime + select BR2_PACKAGE_GNUPG if !BR2_PACKAGE_GNUPG2_DEPENDS # runtime + select BR2_PACKAGE_LIBGPG_ERROR + select BR2_PACKAGE_LIBASSUAN + help + GnuPG Made Easy (GPGME) is a library designed to make access + to GnuPG easier for applications. + + http://www.gnupg.org/related_software/gpgme/ diff --git a/package/libgpgme/libgpgme.hash b/package/libgpgme/libgpgme.hash new file mode 100644 index 00000000..64099df4 --- /dev/null +++ b/package/libgpgme/libgpgme.hash @@ -0,0 +1,5 @@ +# From https://www.gnupg.org/download/integrity_check.html +sha1 b3a938939a9fb2182684aa9ba094c8e8ecd6167b gpgme-1.23.2.tar.bz2 +sha256 9499e8b1f33cccb6815527a1bc16049d35a6198a6c5fae0185f2bd561bce5224 gpgme-1.23.2.tar.bz2 +# Locally calculated +sha256 ca0061fc1381a3ab242310e4b3f56389f28e3d460eb2fd822ed7a21c6f030532 COPYING.LESSER diff --git a/package/libgpgme/libgpgme.mk b/package/libgpgme/libgpgme.mk new file mode 100644 index 00000000..635aea49 --- /dev/null +++ b/package/libgpgme/libgpgme.mk @@ -0,0 +1,68 @@ +################################################################################ +# +# libgpgme +# +################################################################################ + +LIBGPGME_VERSION = 1.23.2 +LIBGPGME_SITE = https://gnupg.org/ftp/gcrypt/gpgme +LIBGPGME_SOURCE = gpgme-$(LIBGPGME_VERSION).tar.bz2 +LIBGPGME_LICENSE = LGPL-2.1+ +LIBGPGME_LICENSE_FILES = COPYING.LESSER +LIBGPGME_CPE_ID_VENDOR = gnupg +LIBGPGME_CPE_ID_PRODUCT = gpgme +LIBGPGME_INSTALL_STAGING = YES +LIBGPGME_DEPENDENCIES = libassuan libgpg-error +LIBGPGME_CONFIG_SCRIPTS = gpgme-config + +LIBGPGME_LANGUAGE_BINDINGS = cl +# C++ bindings require a C++11 capable gcc, and -Wsuggest-override support +ifeq ($(BR2_INSTALL_LIBSTDCPP)$(BR2_TOOLCHAIN_GCC_AT_LEAST_5),yy) +LIBGPGME_LANGUAGE_BINDINGS += cpp +endif + +LIBGPGME_CONF_OPTS = \ + --with-gpg-error-prefix=$(STAGING_DIR)/usr \ + --with-libassuan-prefix=$(STAGING_DIR)/usr \ + --disable-gpgsm-test \ + --disable-gpgconf-test \ + --disable-g13-test \ + --disable-gpg-test \ + --enable-languages=$(subst $(space),$(comma),$(LIBGPGME_LANGUAGE_BINDINGS)) + +# Force the path to "gpgrt-config" (from the libgpg-error package) to +# avoid using the one on host, if present. +LIBGPGME_CONF_ENV += GPGRT_CONFIG=$(STAGING_DIR)/usr/bin/gpgrt-config + +# Handle argp-standalone or it errors out during build +ifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y) +# musl libc does not define error_t in errno.h, but argp.h does. +# Assume we have error_t to avoid collision with the argp.h error_t. +LIBGPGME_CONF_ENV += LIBS="-largp" ac_cv_type_error_t=yes +LIBGPGME_DEPENDENCIES += argp-standalone +endif + +# MIPS N64 (re)introduced getdents64 in kernel version 3.10 +ifeq ($(BR2_MIPS_NABI64)x$(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10),yx) +LIBGPGME_CONF_OPTS += --disable-linux-getdents +endif + +HOST_LIBGPGME_DEPENDENCIES = host-libassuan host-libgpg-error + +# C++ bindings require a C++11 capable gcc, and -Wsuggest-override support +# Let's assume the host toolchain always has C++ +HOST_LIBGPGME_LANGUAGE_BINDINGS = \ + cl \ + $(if $(BR2_HOST_GCC_AT_LEAST_5),cpp) + +HOST_LIBGPGME_CONF_OPTS = \ + --with-gpg-error-prefix=$(HOST_DIR) \ + --with-libassuan-prefix=$(HOST_DIR) \ + --disable-gpgsm-test \ + --disable-gpgconf-test \ + --disable-g13-test \ + --disable-gpg-test \ + --enable-languages=$(subst $(space),$(comma),$(HOST_LIBGPGME_LANGUAGE_BINDINGS)) + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libgphoto2/Config.in b/package/libgphoto2/Config.in new file mode 100644 index 00000000..184ca206 --- /dev/null +++ b/package/libgphoto2/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBGPHOTO2 + bool "libgphoto2" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBTOOL + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBXML2 + help + libgphoto2 is the core library designed to allow access to + digital camera by external programs. + + http://gphoto.org/proj/libgphoto2/ + +comment "libgphoto needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/libgphoto2/libgphoto2.hash b/package/libgphoto2/libgphoto2.hash new file mode 100644 index 00000000..af52b47d --- /dev/null +++ b/package/libgphoto2/libgphoto2.hash @@ -0,0 +1,3 @@ +# Locally calculated hash +sha256 a7253bd18c6ef65352150ac36a668f883a5ad2634eb6455b3ca9aa6ac98d0073 libgphoto2-2.5.27.tar.xz +sha256 ebc385a0b1d477be5177ed6d9129557aa59a3ad0f26ebe7dd97ee942a0fb68ee COPYING diff --git a/package/libgphoto2/libgphoto2.mk b/package/libgphoto2/libgphoto2.mk new file mode 100644 index 00000000..c1d5352c --- /dev/null +++ b/package/libgphoto2/libgphoto2.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# libgphoto2 +# +################################################################################ + +LIBGPHOTO2_VERSION = 2.5.27 +LIBGPHOTO2_SOURCE = libgphoto2-$(LIBGPHOTO2_VERSION).tar.xz +LIBGPHOTO2_SITE = https://github.com/gphoto/libgphoto2/releases/download/v$(LIBGPHOTO2_VERSION) +LIBGPHOTO2_LICENSE = LGPL-2.1+, GPL-2.0 (adc65), GPL-2.0+ (some camlibs), \ + LGPL-2.0 (sipix), LGPL-3.0+ (pentax), BSD-3-Clause (ax203/tinyjpeg) +# There is a single license file for the LGPL-2.1, no license files +# for other licenses +LIBGPHOTO2_LICENSE_FILES = COPYING +LIBGPHOTO2_INSTALL_STAGING = YES + +LIBGPHOTO2_DEPENDENCIES = libxml2 libusb libtool host-pkgconf + +LIBGPHOTO2_CONF_ENV = udevscriptdir=/lib/udev +LIBGPHOTO2_CONF_OPTS += --without-rpmbuild --disable-gp2ddb --disable-internal-docs + +ifeq ($(BR2_PACKAGE_LIBUSB_COMPAT),y) +# libusb-compat is not actually used, but it is detected, so add it +# here to guarantee reproducible builds +LIBGPHOTO2_DEPENDENCIES += libusb-compat +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +LIBGPHOTO2_DEPENDENCIES += libcurl +LIBGPHOTO2_CONF_OPTS += --with-libcurl=auto +else +LIBGPHOTO2_CONF_OPTS += --with-libcurl=no +endif + +ifeq ($(BR2_PACKAGE_LIBEXIF),y) +LIBGPHOTO2_DEPENDENCIES += libexif +LIBGPHOTO2_CONF_OPTS += --with-libexif=auto +else +LIBGPHOTO2_CONF_OPTS += --with-libexif=no +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +LIBGPHOTO2_DEPENDENCIES += jpeg +LIBGPHOTO2_CONF_OPTS += --with-jpeg +else +LIBGPHOTO2_CONF_OPTS += --without-jpeg +endif + +ifeq ($(BR2_PACKAGE_GD),y) +LIBGPHOTO2_DEPENDENCIES += gd +LIBGPHOTO2_CONF_OPTS += --with-gdlib=auto +else +LIBGPHOTO2_CONF_OPTS += --with-gdlib=no +endif + +ifeq ($(BR2_PACKAGE_LOCKDEV),y) +LIBGPHOTO2_DEPENDENCIES += lockdev +endif + +$(eval $(autotools-package)) diff --git a/package/libgpiod/0001-build-add-a-configure-switch-for-building-examples.patch b/package/libgpiod/0001-build-add-a-configure-switch-for-building-examples.patch new file mode 100644 index 00000000..f1a853a6 --- /dev/null +++ b/package/libgpiod/0001-build-add-a-configure-switch-for-building-examples.patch @@ -0,0 +1,91 @@ +From 5e9e7223a3633ee82b557d21b1f18aa15becd450 Mon Sep 17 00:00:00 2001 +From: Bartosz Golaszewski +Date: Mon, 7 Dec 2020 20:38:30 +0100 +Subject: build: add a configure switch for building examples + +Example code for bindings is currently always built if bindings are +enabled. Make it conditional with a new configure switch. + +Signed-off-by: Bartosz Golaszewski +Reviewed-by: Andy Shevchenko +[Retrieved from: +https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/commit/?id=5e9e7223a3633ee82b557d21b1f18aa15becd450] +Signed-off-by: Fabrice Fontaine +--- + bindings/cxx/Makefile.am | 8 +++++++- + bindings/python/Makefile.am | 10 ++++++++-- + configure.ac | 6 ++++++ + 3 files changed, 21 insertions(+), 3 deletions(-) + +diff --git a/bindings/cxx/Makefile.am b/bindings/cxx/Makefile.am +index 5c40ceb..87463b0 100644 +--- a/bindings/cxx/Makefile.am ++++ b/bindings/cxx/Makefile.am +@@ -18,10 +18,16 @@ include_HEADERS = gpiod.hpp + pkgconfigdir = $(libdir)/pkgconfig + pkgconfig_DATA = libgpiodcxx.pc + +-SUBDIRS = . examples ++SUBDIRS = . + + if WITH_TESTS + + SUBDIRS += tests + + endif ++ ++if WITH_EXAMPLES ++ ++SUBDIRS += examples ++ ++endif +diff --git a/bindings/python/Makefile.am b/bindings/python/Makefile.am +index 124f152..5403bcb 100644 +--- a/bindings/python/Makefile.am ++++ b/bindings/python/Makefile.am +@@ -6,8 +6,6 @@ + # Copyright (C) 2017-2018 Bartosz Golaszewski + # + +-SUBDIRS = . examples +- + pyexec_LTLIBRARIES = gpiod.la + + gpiod_la_SOURCES = gpiodmodule.c +@@ -17,8 +15,16 @@ gpiod_la_CFLAGS += -Wall -Wextra -g -std=gnu89 $(PYTHON_CPPFLAGS) + gpiod_la_LDFLAGS = -module -avoid-version + gpiod_la_LIBADD = $(top_builddir)/lib/libgpiod.la $(PYTHON_LIBS) + ++SUBDIRS = . ++ + if WITH_TESTS + + SUBDIRS += tests + + endif ++ ++if WITH_EXAMPLES ++ ++SUBDIRS += examples ++ ++endif +diff --git a/configure.ac b/configure.ac +index 57c99a8..90a6324 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -164,6 +164,12 @@ then + fi + fi + ++AC_ARG_ENABLE([examples], ++ [AS_HELP_STRING([--enable-examples], [enable building code examples[default=no]])], ++ [if test "x$enableval" = xyes; then with_examples=true; fi], ++ [with_examples=false]) ++AM_CONDITIONAL([WITH_EXAMPLES], [test "x$with_examples" = xtrue]) ++ + AC_ARG_ENABLE([bindings-cxx], + [AC_HELP_STRING([--enable-bindings-cxx], + [enable C++ bindings [default=no]])], +-- +cgit 1.2.3-1.el7 + diff --git a/package/libgpiod/Config.in b/package/libgpiod/Config.in new file mode 100644 index 00000000..293eef6c --- /dev/null +++ b/package/libgpiod/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBGPIOD + bool "libgpiod" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8 + help + This is a C library that abstracts the GPIO character + device operations on linux. + + https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/ + +if BR2_PACKAGE_LIBGPIOD + +config BR2_PACKAGE_LIBGPIOD_TOOLS + bool "install tools" + help + Include a set of command-line tools for managing GPIOs. + +endif + +comment "libgpiod needs kernel headers >= 4.8" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8 diff --git a/package/libgpiod/libgpiod.hash b/package/libgpiod/libgpiod.hash new file mode 100644 index 00000000..6647b77c --- /dev/null +++ b/package/libgpiod/libgpiod.hash @@ -0,0 +1,4 @@ +# From https://www.kernel.org/pub/software/libs/libgpiod/sha256sums.asc +sha256 7b146e12f28fbca3df7557f176eb778c5ccf952ca464698dba8a61b2e1e3f9b5 libgpiod-1.6.4.tar.xz +# Hash for license file +sha256 ce64d5f7b49ea6d80fdb6d4cdee6839d1a94274f7493dc797c3b55b65ec8e9ed COPYING diff --git a/package/libgpiod/libgpiod.mk b/package/libgpiod/libgpiod.mk new file mode 100644 index 00000000..e7ff1556 --- /dev/null +++ b/package/libgpiod/libgpiod.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# libgpiod +# +################################################################################ + +# Be careful when bumping versions. +# Dependency on kernel header versions may change. +LIBGPIOD_VERSION = 1.6.4 +LIBGPIOD_SOURCE = libgpiod-$(LIBGPIOD_VERSION).tar.xz +LIBGPIOD_SITE = https://www.kernel.org/pub/software/libs/libgpiod +LIBGPIOD_LICENSE = LGPL-2.1+ +LIBGPIOD_LICENSE_FILES = COPYING +LIBGPIOD_INSTALL_STAGING = YES +LIBGPIOD_DEPENDENCIES = host-pkgconf host-autoconf-archive +# We're patching configure.ac +LIBGPIOD_AUTORECONF = YES +LIBGPIOD_AUTORECONF_OPTS = --include=$(HOST_DIR)/share/autoconf-archive +LIBGPIOD_CONF_OPTS = --disable-tests --disable-examples + +ifeq ($(BR2_PACKAGE_LIBGPIOD_TOOLS),y) +LIBGPIOD_CONF_OPTS += --enable-tools +else +LIBGPIOD_CONF_OPTS += --disable-tools +endif + +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +LIBGPIOD_CONF_OPTS += --enable-bindings-cxx +else +LIBGPIOD_CONF_OPTS += --disable-bindings-cxx +endif + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +LIBGPIOD_CONF_OPTS += --enable-bindings-python +LIBGPIOD_DEPENDENCIES += python3 +LIBGPIOD_CONF_ENV += \ + PYTHON=$(HOST_DIR)/bin/python3 \ + PYTHON_CPPFLAGS="`$(STAGING_DIR)/usr/bin/python3-config --includes`" \ + PYTHON_LIBS="`$(STAGING_DIR)/usr/bin/python3-config --ldflags`" +else +LIBGPIOD_CONF_OPTS += --disable-bindings-python +endif + +$(eval $(autotools-package)) diff --git a/package/libgpiod2/Config.in b/package/libgpiod2/Config.in new file mode 100644 index 00000000..5a13bfc3 --- /dev/null +++ b/package/libgpiod2/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_LIBGPIOD2 + bool "libgpiod2" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10 + depends on !BR2_PACKAGE_LIBGPIOD + help + This is a C library that abstracts the GPIO character + device operations on linux. + + This package is the continuation of the libgpiod package + for versions 2.0 and above. + + Note that a kernel of 5.10 or above is required for the + ioctls to work. + + https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/ + +if BR2_PACKAGE_LIBGPIOD2 + +config BR2_PACKAGE_LIBGPIOD2_TOOLS + bool "install tools" + help + Include a set of command-line tools for managing GPIOs. + +endif + +comment "libgpiod2 needs kernel headers >= 5.10" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10 + +comment "libgpiod2 is incompatible with libgpiod" + depends on BR2_PACKAGE_LIBGPIOD diff --git a/package/libgpiod2/libgpiod2.hash b/package/libgpiod2/libgpiod2.hash new file mode 100644 index 00000000..3b498f0e --- /dev/null +++ b/package/libgpiod2/libgpiod2.hash @@ -0,0 +1,4 @@ +# From https://www.kernel.org/pub/software/libs/libgpiod/sha256sums.asc +sha256 2be4c0b03e995d236c0e476e14aeb475d7b431dd1439609b6d65c540f91eaf58 libgpiod-2.1.3.tar.xz +# Hash for license file +sha256 f646ad5159efb51c1130a4b43c31f0759750b1e254d2acf510f368ee2e2085c3 COPYING diff --git a/package/libgpiod2/libgpiod2.mk b/package/libgpiod2/libgpiod2.mk new file mode 100644 index 00000000..142289cb --- /dev/null +++ b/package/libgpiod2/libgpiod2.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# libgpiod2 +# +################################################################################ + +# Be careful when bumping versions. +# Dependency on kernel header versions may change. +LIBGPIOD2_VERSION = 2.1.3 +LIBGPIOD2_SOURCE = libgpiod-$(LIBGPIOD2_VERSION).tar.xz +LIBGPIOD2_SITE = https://www.kernel.org/pub/software/libs/libgpiod +LIBGPIOD2_LICENSE = LGPL-2.1+ +LIBGPIOD2_LICENSE_FILES = COPYING +LIBGPIOD2_INSTALL_STAGING = YES +LIBGPIOD2_DEPENDENCIES = host-pkgconf +LIBGPIOD2_CONF_OPTS = \ + --disable-bindings-python \ + --disable-examples \ + --disable-tests + +ifeq ($(BR2_PACKAGE_LIBGPIOD2_TOOLS),y) +LIBGPIOD2_CONF_OPTS += --enable-tools +else +LIBGPIOD2_CONF_OPTS += --disable-tools +endif + +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +LIBGPIOD2_CONF_OPTS += --enable-bindings-cxx +else +LIBGPIOD2_CONF_OPTS += --disable-bindings-cxx +endif + +$(eval $(autotools-package)) diff --git a/package/libgsasl/Config.in b/package/libgsasl/Config.in new file mode 100644 index 00000000..228f8823 --- /dev/null +++ b/package/libgsasl/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBGSASL + bool "libgsasl" + depends on BR2_USE_WCHAR + help + Simple Authentication and Security Layer framework Library. + GNU SASL is an implementation of the Simple Authentication and + Security Layer framework and a few common SASL mechanisms. + SASL is used by network servers (e.g., IMAP, SMTP) to request + authentication from clients, and in clients to authenticate + against servers. + + http://www.gnu.org/software/gsasl + +comment "libgsasl needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/package/libgsasl/libgsasl.hash b/package/libgsasl/libgsasl.hash new file mode 100644 index 00000000..75e5a317 --- /dev/null +++ b/package/libgsasl/libgsasl.hash @@ -0,0 +1,11 @@ +# From https://lists.gnu.org/archive/html/help-gsasl/2021-01/msg00007.html +sha1 a16ff428bbf28fcfa681c7edd2cd2bb087bcc4e7 libgsasl-1.10.0.tar.gz +sha224 20b37757fccb6a0f8b4c6fcb28f51a3b4b8a4b1fdb4736da07707a0b libgsasl-1.10.0.tar.gz + +# Locally calculated after checking pgp signature +sha256 f1b553384dedbd87478449775546a358d6f5140c15cccc8fb574136fdc77329f libgsasl-1.10.0.tar.gz + +# Hash for license files: +sha256 26e99818ca6ce79d8b2c461fabc72dc6e03483e6b0fd9692dcb07ab1b09bbac7 README +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/libgsasl/libgsasl.mk b/package/libgsasl/libgsasl.mk new file mode 100644 index 00000000..b1981dea --- /dev/null +++ b/package/libgsasl/libgsasl.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# libgsasl +# +################################################################################ + +LIBGSASL_VERSION = 1.10.0 +LIBGSASL_SITE = $(BR2_GNU_MIRROR)/gsasl +LIBGSASL_LICENSE = LGPL-2.1+ (library), GPL-3.0+ (programs) +LIBGSASL_LICENSE_FILES = README COPYING.LIB COPYING +LIBGSASL_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +LIBGSASL_CONF_OPTS += --with-libgcrypt-prefix=$(STAGING_DIR)/usr +LIBGSASL_DEPENDENCIES += libgcrypt +else +LIBGSASL_CONF_OPTS += --without-libgcrypt +endif + +ifeq ($(BR2_PACKAGE_LIBIDN),y) +LIBGSASL_CONF_OPTS += --with-libidn-prefix=$(STAGING_DIR)/usr +LIBGSASL_DEPENDENCIES += libidn +else +LIBGSASL_CONF_OPTS += --without-stringprep +endif + +$(eval $(autotools-package)) diff --git a/package/libgsm/0001-Misc-fixes-from-Archlinux.patch b/package/libgsm/0001-Misc-fixes-from-Archlinux.patch new file mode 100644 index 00000000..6702a920 --- /dev/null +++ b/package/libgsm/0001-Misc-fixes-from-Archlinux.patch @@ -0,0 +1,147 @@ +From ef88ee98855008cd8c8de807a12917a556e2ce7d Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Fri, 28 Jul 2017 08:18:22 -0400 +Subject: [PATCH] Misc fixes from Archlinux + +Patch from: + https://git.archlinux.org/svntogit/packages.git/plain/gsm/trunk/gsm.patch + +Signed-off-by: "Yann E. MORIN" +Signed-off-by: Adam Duskett +Refresh for 1.0.17 +[Fabrice: refresh for 1.0.22] +Signed-off-by: Fabrice Fontaine +Signed-off-by: Julien Olivain +[Julien: regenerate with git format-patch for 1.0.22, +as Fabrice refresh is incomplete for applying with fuzz 0] +--- + Makefile | 49 ++++++++++++++++++++++++------------------------- + 1 file changed, 24 insertions(+), 25 deletions(-) + +diff --git a/Makefile b/Makefile +index 2ad5e5d..2cb0b06 100644 +--- a/Makefile ++++ b/Makefile +@@ -44,7 +44,7 @@ WAV49 = -DWAV49 + # CCFLAGS = -c -O + + CC = gcc -ansi -pedantic +-CCFLAGS = -c -O2 -DNeedFunctionPrototypes=1 -Wall -Wno-comment ++CCFLAGS = -c -O2 -fPIC -DNeedFunctionPrototypes=1 -Wall -Wno-comment + + LD = $(CC) + +@@ -96,7 +96,7 @@ TOAST_INSTALL_MAN = $(TOAST_INSTALL_ROOT)/man/man1 + # Other tools + + SHELL = /bin/sh +-LN = ln ++LN = ln -s -f + BASENAME = basename + AR = ar + ARFLAGS = cr +@@ -139,7 +139,7 @@ LFLAGS = $(LDFLAGS) $(LDINC) + + # Targets + +-LIBGSM = $(LIB)/libgsm.a ++LIBGSMSO = $(LIB)/libgsm.so + + TOAST = $(BIN)/toast + UNTOAST = $(BIN)/untoast +@@ -257,7 +257,7 @@ STUFF = ChangeLog \ + # Install targets + + GSM_INSTALL_TARGETS = \ +- $(GSM_INSTALL_LIB)/libgsm.a \ ++ $(GSM_INSTALL_LIB)/libgsm.so \ + $(GSM_INSTALL_INC)/gsm.h \ + $(GSM_INSTALL_MAN)/gsm.3 \ + $(GSM_INSTALL_MAN)/gsm_explode.3 \ +@@ -279,7 +279,7 @@ TOAST_INSTALL_TARGETS = \ + + # Target rules + +-all: $(LIBGSM) $(TOAST) $(TCAT) $(UNTOAST) ++all: $(LIBGSMSO) $(TOAST) $(TCAT) $(UNTOAST) + @-echo $(ROOT): Done. + + tst: $(TST)/lin2cod $(TST)/cod2lin $(TOAST) $(TST)/test-result +@@ -299,24 +299,23 @@ install: toastinstall gsminstall + + # The basic API: libgsm + +-$(LIBGSM): $(LIB) $(GSM_OBJECTS) +- -rm $(RMFLAGS) $(LIBGSM) +- $(AR) $(ARFLAGS) $(LIBGSM) $(GSM_OBJECTS) +- $(RANLIB) $(LIBGSM) +- ++$(LIBGSMSO): $(LIB) $(GSM_OBJECTS) ++ $(LD) -shared -Wl,-soname,libgsm.so.1 -o $@.1.0.13 $(GSM_OBJECTS) ++ $(LN) libgsm.so.1.0.13 $(LIBGSMSO).1 ++ $(LN) libgsm.so.1.0.13 $(LIBGSMSO) + + # Toast, Untoast and Tcat -- the compress-like frontends to gsm. + +-$(TOAST): $(BIN) $(TOAST_OBJECTS) $(LIBGSM) +- $(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSM) $(LDLIB) ++$(TOAST): $(BIN) $(TOAST_OBJECTS) $(LIBGSMSO) ++ $(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSMSO) $(LDLIB) + + $(UNTOAST): $(BIN) $(TOAST) + -rm $(RMFLAGS) $(UNTOAST) +- $(LN) $(TOAST) $(UNTOAST) ++ $(LN) toast $(UNTOAST) + + $(TCAT): $(BIN) $(TOAST) + -rm $(RMFLAGS) $(TCAT) +- $(LN) $(TOAST) $(TCAT) ++ $(LN) toast $(TCAT) + + + # The local bin and lib directories +@@ -425,7 +424,7 @@ semi-clean: + -print | xargs rm $(RMFLAGS) + + clean: semi-clean +- -rm $(RMFLAGS) $(LIBGSM) $(ADDTST)/add \ ++ -rm $(RMFLAGS) $(LIBGSMSO)* $(ADDTST)/add \ + $(TOAST) $(TCAT) $(UNTOAST) \ + $(ROOT)/gsm-1.0.tar.gz + +@@ -473,22 +472,22 @@ $(ADDTST)/add: $(ADDTST)/add_test.o + $(TST)/test-result: $(TST)/lin2cod $(TST)/cod2lin $(TOAST) $(TST)/run + ( cd $(TST); ./run ) + +-$(TST)/lin2txt: $(TST)/lin2txt.o $(LIBGSM) ++$(TST)/lin2txt: $(TST)/lin2txt.o $(LIBGSMSO) + $(LD) $(LFLAGS) -o $(TST)/lin2txt \ +- $(TST)/lin2txt.o $(LIBGSM) $(LDLIB) ++ $(TST)/lin2txt.o $(LIBGSMSO) $(LDLIB) + +-$(TST)/lin2cod: $(TST)/lin2cod.o $(LIBGSM) ++$(TST)/lin2cod: $(TST)/lin2cod.o $(LIBGSMSO) + $(LD) $(LFLAGS) -o $(TST)/lin2cod \ +- $(TST)/lin2cod.o $(LIBGSM) $(LDLIB) ++ $(TST)/lin2cod.o $(LIBGSMSO) $(LDLIB) + +-$(TST)/gsm2cod: $(TST)/gsm2cod.o $(LIBGSM) ++$(TST)/gsm2cod: $(TST)/gsm2cod.o $(LIBGSMSO) + $(LD) $(LFLAGS) -o $(TST)/gsm2cod \ +- $(TST)/gsm2cod.o $(LIBGSM) $(LDLIB) ++ $(TST)/gsm2cod.o $(LIBGSMSO) $(LDLIB) + +-$(TST)/cod2txt: $(TST)/cod2txt.o $(LIBGSM) ++$(TST)/cod2txt: $(TST)/cod2txt.o $(LIBGSMSO) + $(LD) $(LFLAGS) -o $(TST)/cod2txt \ +- $(TST)/cod2txt.o $(LIBGSM) $(LDLIB) ++ $(TST)/cod2txt.o $(LIBGSMSO) $(LDLIB) + +-$(TST)/cod2lin: $(TST)/cod2lin.o $(LIBGSM) ++$(TST)/cod2lin: $(TST)/cod2lin.o $(LIBGSMSO) + $(LD) $(LFLAGS) -o $(TST)/cod2lin \ +- $(TST)/cod2lin.o $(LIBGSM) $(LDLIB) ++ $(TST)/cod2lin.o $(LIBGSMSO) $(LDLIB) +-- +2.45.2 + diff --git a/package/libgsm/Config.in b/package/libgsm/Config.in new file mode 100644 index 00000000..c6edefe6 --- /dev/null +++ b/package/libgsm/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBGSM + bool "libgsm" + depends on !BR2_STATIC_LIBS + help + Shared libraries for GSM 06.10 lossy speech compression. + + http://www.quut.com/gsm + +comment "libgsm needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/libgsm/libgsm.hash b/package/libgsm/libgsm.hash new file mode 100644 index 00000000..b3a47021 --- /dev/null +++ b/package/libgsm/libgsm.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 f0072e91f6bb85a878b2f6dbf4a0b7c850c4deb8049d554c65340b3bf69df0ac gsm-1.0.22.tar.gz +sha256 81c68a3374937ed9b5e4929c709e81a2c4b35b5d1f450ecf8c473e2daea46ff6 COPYRIGHT diff --git a/package/libgsm/libgsm.mk b/package/libgsm/libgsm.mk new file mode 100644 index 00000000..1c7b860e --- /dev/null +++ b/package/libgsm/libgsm.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# libgsm +# +################################################################################ + +LIBGSM_VERSION = 1.0.22 +LIBGSM_SOURCE = gsm-$(LIBGSM_VERSION).tar.gz +LIBGSM_SITE = http://www.quut.com/gsm +LIBGSM_LICENSE = gsm +LIBGSM_LICENSE_FILES = COPYRIGHT +LIBGSM_INSTALL_STAGING = YES + +define LIBGSM_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC=$(TARGET_CC) -C $(@D) +endef + +# Install targets are not safe for parallel jobs. However, since there's +# just only a bunch of files to install, just do it manually. Note that, +# even though the package version is '1.0.16', the solib is generated as +# '1.0.13' and its SONAME is just '1'. +# +# For staging, we install all the .so symlinks, and the header. +define LIBGSM_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0644 $(@D)/inc/gsm.h $(STAGING_DIR)/usr/include/gsm.h + $(INSTALL) -D -m 0644 $(@D)/lib/libgsm.so.1.0.13 $(STAGING_DIR)/usr/lib/libgsm.so.1.0.13 + ln -sf libgsm.so.1.0.13 $(STAGING_DIR)/usr/lib/libgsm.so.1 + ln -sf libgsm.so.1.0.13 $(STAGING_DIR)/usr/lib/libgsm.so +endef + +# Install targets are not safe for parallel jobs. However, since there's +# just only a bunch of files to install, just do it manually. Note that, +# even though the package version is '1.0.16', the solib is versioned as +# '1.0.13' and its SONAME is just versioned with '1'. +# +# For target, we just need the library to be installed as its SONAME, and +# the programs. +define LIBGSM_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0644 $(@D)/lib/libgsm.so.1.0.13 $(TARGET_DIR)/usr/lib/libgsm.so.1 + $(INSTALL) -D -m 0755 $(@D)/bin/toast $(TARGET_DIR)/usr/bin/toast + $(INSTALL) -D -m 0755 $(@D)/bin/tcat $(TARGET_DIR)/usr/bin/tcat + $(INSTALL) -D -m 0755 $(@D)/bin/untoast $(TARGET_DIR)/usr/bin/untoast +endef + +$(eval $(generic-package)) diff --git a/package/libgta/Config.in b/package/libgta/Config.in new file mode 100644 index 00000000..f66d83c9 --- /dev/null +++ b/package/libgta/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBGTA + bool "libgta" + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_XZ + help + Libgta is a portable library that implements the Generic + Tagged Array (GTA) file format. + + https://marlam.de/gta diff --git a/package/libgta/libgta.hash b/package/libgta/libgta.hash new file mode 100644 index 00000000..49ac51d3 --- /dev/null +++ b/package/libgta/libgta.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 d445667e145f755f0bc34ac89b63a6bfdce1eea943f87ee7a3f23dc0dcede8b1 libgta-1.2.1.tar.xz +sha256 36b6d3fa47916943fd5fec313c584784946047ec1337a78b440e5992cb595f89 COPYING diff --git a/package/libgta/libgta.mk b/package/libgta/libgta.mk new file mode 100644 index 00000000..9b19f42d --- /dev/null +++ b/package/libgta/libgta.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# libgta +# +################################################################################ + +LIBGTA_VERSION = 1.2.1 +LIBGTA_SITE = https://marlam.de/gta/releases +LIBGTA_SOURCE = libgta-$(LIBGTA_VERSION).tar.xz +LIBGTA_INSTALL_STAGING = YES +LIBGTA_DEPENDENCIES = host-pkgconf bzip2 xz zlib +LIBGTA_LICENSE = LGPL-2.1+ +LIBGTA_LICENSE_FILES = COPYING + +LIBGTA_CONF_OPTS += -DGTA_BUILD_DOCUMENTATION=OFF + +ifeq ($(BR2_STATIC_LIBS),) +LIBGTA_CONF_OPTS += -DGTA_BUILD_SHARED_LIB=ON +else +LIBGTA_CONF_OPTS += -DGTA_BUILD_SHARED_LIB=OFF +endif + +ifeq ($(BR2_SHARED_LIBS),) +LIBGTA_CONF_OPTS += -DGTA_BUILD_STATIC_LIB=ON +else +LIBGTA_CONF_OPTS += -DGTA_BUILD_STATIC_LIB=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/libgtk2/0001-reduce-dependencies.patch b/package/libgtk2/0001-reduce-dependencies.patch new file mode 100644 index 00000000..3250cae4 --- /dev/null +++ b/package/libgtk2/0001-reduce-dependencies.patch @@ -0,0 +1,117 @@ +Hack the configure.in file to add a "none" gdktarget which removes +dependencies on graphic backends such as X.org or DirectFB. Gtk does +not fully build in this mode, but it builds sufficiently to build the +host tools that are needed to build the target Gtk. + +Changes: + Ported to 2.24.18 + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Spenser Gilliland +--- +Index: libgtk2-2.24.18/configure.ac +=================================================================== +--- libgtk2-2.24.18.orig/configure.ac 2013-05-13 07:02:44.000000000 -0500 ++++ libgtk2-2.24.18/configure.ac 2013-05-27 02:12:09.947030335 -0500 +@@ -258,12 +258,12 @@ + gdktarget=x11 + fi + +-AC_ARG_WITH(gdktarget, [ --with-gdktarget=[[x11/win32/quartz/directfb]] select non-default GDK target], ++AC_ARG_WITH(gdktarget, [ --with-gdktarget=[[x11/win32/quartz/directfb/none]] select non-default GDK target], + gdktarget=$with_gdktarget) + + AC_SUBST(gdktarget) + case $gdktarget in +- x11|win32|quartz|directfb) ;; ++ x11|win32|quartz|directfb|none) ;; + *) AC_MSG_ERROR([Invalid target for GDK: use x11, quartz, directfb or win32.]);; + esac + +@@ -372,11 +373,15 @@ + ## annoying to construct + PKG_CHECK_MODULES(BASE_DEPENDENCIES, + [glib-2.0 >= glib_required_version dnl +- atk >= atk_required_version dnl +- pango >= pango_required_version dnl +- cairo >= cairo_required_version dnl + gdk-pixbuf-2.0 >= gdk_pixbuf_required_version]) + ++if test "x$gdktarget" != "xnone"; then ++ PKG_CHECK_MODULES(BASE_DEPENDENCIES, ++ [atk >= atk_required_version dnl ++ pango >= pango_required_version dnl ++ cairo >= cairo_required_version]) ++fi ++ + ## In addition to checking that cairo is present, we also need to + ## check that the correct cairo backend is there. E.g. if the GDK + ## target is win32 we need the cairo-win32 backend and so on. +@@ -387,8 +392,11 @@ + if test "x$cairo_backend" = "xx11"; then + cairo_backend=xlib + fi +-PKG_CHECK_MODULES(CAIRO_BACKEND, +- [cairo-$cairo_backend >= cairo_required_version]) ++ ++if test "x$gdktarget" != "xnone"; then ++ PKG_CHECK_MODULES(CAIRO_BACKEND, ++ [cairo-$cairo_backend >= cairo_required_version]) ++fi + + PKG_CHECK_MODULES(GMODULE, [gmodule-2.0]) + +@@ -1279,6 +1287,7 @@ + AM_CONDITIONAL(USE_DIRECTFB, false) + fi + ++if test "x$gdktarget" != "xnone"; then + + # Check for Pango flags + +@@ -1324,6 +1333,8 @@ + GDK_PACKAGES="$PANGO_PACKAGES gio-2.0 gdk-pixbuf-2.0 cairo-$cairo_backend" + fi + ++fi # gdktarget != none ++ + GDK_DEP_LIBS="$GDK_EXTRA_LIBS `$PKG_CONFIG --libs $GDK_PACKAGES` $MATH_LIB" + GDK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PACKAGES` $GDK_EXTRA_CFLAGS" + # +@@ -1341,6 +1352,7 @@ + AC_SUBST(GDK_DEP_LIBS) + AC_SUBST(GDK_DEP_CFLAGS) + ++if test "x$gdktarget" != "xnone"; then + + ######################################## + # Check for Accessibility Toolkit flags +@@ -1372,6 +1384,10 @@ + fi + + GTK_PACKAGES="atk cairo gdk-pixbuf-2.0 gio-2.0" ++else # gdktarget != none ++GTK_PACKAGES="gdk-pixbuf-2.0" ++fi # gdktarget != none ++ + if test "x$gdktarget" = "xx11"; then + GTK_PACKAGES="$GTK_PACKAGES pangoft2" + fi +@@ -1533,6 +1549,8 @@ + gtk_save_cppflags="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $GTK_DEP_CFLAGS $GDK_DEP_CFLAGS" + ++if test "x$gdktarget" != "xnone"; then ++ + AC_CHECK_HEADER(cairo-pdf.h,,AC_MSG_ERROR([ + *** Can't find cairo-pdf.h. You must build Cairo with the pdf + *** backend enabled.])) +@@ -1547,6 +1565,8 @@ + *** svg backend enabled.])) + fi + ++fi # gdktarget != none ++ + CPPFLAGS="$gtk_save_cppflags" + + diff --git a/package/libgtk2/Config.in b/package/libgtk2/Config.in new file mode 100644 index 00000000..f8821ba2 --- /dev/null +++ b/package/libgtk2/Config.in @@ -0,0 +1,42 @@ +config BR2_PACKAGE_LIBGTK2 + bool "libgtk2" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + depends on BR2_INSTALL_LIBSTDCPP # pango + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # pango -> harfbuzz + select BR2_PACKAGE_AT_SPI2_CORE + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_CAIRO_PNG + select BR2_PACKAGE_CAIRO_ZLIB + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_PANGO + select BR2_PACKAGE_GDK_PIXBUF + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXRENDER + help + The GTK+ version 2 graphical user interface library + + http://www.gtk.org/ + +if BR2_PACKAGE_LIBGTK2 + +config BR2_PACKAGE_LIBGTK2_DEMO + bool "Install libgtk2 demo program" + help + The GTK+ source base contains a gtk-demo program. This + option allows to install this program to the target. + +endif + +comment "libgtk2 needs a toolchain w/ wchar, threads, C++, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_PACKAGE_XORG7 + depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libgtk2/libgtk2.hash b/package/libgtk2/libgtk2.hash new file mode 100644 index 00000000..7b9a46b6 --- /dev/null +++ b/package/libgtk2/libgtk2.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/gtk+/2.24/gtk+-2.24.33.sha256sum +sha256 ac2ac757f5942d318a311a54b0c80b5ef295f299c2a73c632f6bfb1ff49cc6da gtk+-2.24.33.tar.xz + +# Hash for license file: +sha256 d245807f90032872d1438d741ed21e2490e1175dc8aa3afa5ddb6c8e529b58e5 COPYING diff --git a/package/libgtk2/libgtk2.mk b/package/libgtk2/libgtk2.mk new file mode 100644 index 00000000..608c263e --- /dev/null +++ b/package/libgtk2/libgtk2.mk @@ -0,0 +1,139 @@ +################################################################################ +# +# libgtk2 +# +################################################################################ + +LIBGTK2_VERSION_MAJOR = 2.24 +LIBGTK2_VERSION = $(LIBGTK2_VERSION_MAJOR).33 +LIBGTK2_SOURCE = gtk+-$(LIBGTK2_VERSION).tar.xz +LIBGTK2_SITE = https://download.gnome.org/sources/gtk+/$(LIBGTK2_VERSION_MAJOR) +LIBGTK2_INSTALL_STAGING = YES +LIBGTK2_LICENSE = LGPL-2.0+ +LIBGTK2_LICENSE_FILES = COPYING +LIBGTK2_CPE_ID_VENDOR = gnome +LIBGTK2_CPE_ID_PRODUCT = gtk +# For 0001-reduce-dependencies.patch +LIBGTK2_AUTORECONF = YES + +LIBGTK2_CONF_ENV = \ + ac_cv_path_GTK_UPDATE_ICON_CACHE=$(HOST_DIR)/bin/gtk-update-icon-cache \ + ac_cv_path_GDK_PIXBUF_CSOURCE=$(HOST_DIR)/bin/gdk-pixbuf-csource \ + DB2HTML=false + +LIBGTK2_CONF_OPTS = --disable-glibtest --enable-explicit-deps=no + +LIBGTK2_DEPENDENCIES = host-pkgconf host-libgtk2 libglib2 cairo pango at-spi2-core \ + gdk-pixbuf $(TARGET_NLS_DEPENDENCIES) + +LIBGTK2_MAKE_OPTS = LIBS=$(TARGET_NLS_LIBS) + +# Xorg dependencies +LIBGTK2_CONF_OPTS += \ + --with-x \ + --x-includes=$(STAGING_DIR)/usr/include/X11 \ + --x-libraries=$(STAGING_DIR)/usr/lib \ + --with-gdktarget=x11 +LIBGTK2_DEPENDENCIES += \ + fontconfig xlib_libX11 xlib_libXext xlib_libXrender + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +LIBGTK2_CONF_OPTS += --enable-introspection +LIBGTK2_DEPENDENCIES += gobject-introspection +else +LIBGTK2_CONF_OPTS += --disable-introspection +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +LIBGTK2_CONF_OPTS += --enable-xinerama +LIBGTK2_DEPENDENCIES += xlib_libXinerama +else +LIBGTK2_CONF_OPTS += --disable-xinerama +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXI),y) +LIBGTK2_CONF_OPTS += --with-xinput=yes +LIBGTK2_DEPENDENCIES += xlib_libXi +else +LIBGTK2_CONF_OPTS += --with-xinput=no +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) +LIBGTK2_DEPENDENCIES += xlib_libXrandr +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y) +LIBGTK2_DEPENDENCIES += xlib_libXcursor +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y) +LIBGTK2_DEPENDENCIES += xlib_libXfixes +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),y) +LIBGTK2_DEPENDENCIES += xlib_libXcomposite +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXDAMAGE),y) +LIBGTK2_DEPENDENCIES += xlib_libXdamage +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +LIBGTK2_DEPENDENCIES += libpng +else +LIBGTK2_CONF_OPTS += --without-libpng +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +LIBGTK2_DEPENDENCIES += jpeg +else +LIBGTK2_CONF_OPTS += --without-libjpeg +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +LIBGTK2_DEPENDENCIES += tiff +else +LIBGTK2_CONF_OPTS += --without-libtiff +endif + +ifeq ($(BR2_PACKAGE_CUPS),y) +LIBGTK2_CONF_OPTS += CUPS_CONFIG="$(STAGING_DIR)/usr/bin/cups-config" +LIBGTK2_DEPENDENCIES += cups +else +LIBGTK2_CONF_OPTS += --disable-cups +endif + +ifeq ($(BR2_PACKAGE_LIBGTK2_DEMO),) +define LIBGTK2_POST_INSTALL_TWEAKS + rm -rf $(TARGET_DIR)/usr/share/gtk-2.0/demo $(TARGET_DIR)/usr/bin/gtk-demo +endef + +LIBGTK2_POST_INSTALL_TARGET_HOOKS += LIBGTK2_POST_INSTALL_TWEAKS +endif + +# We do not build a full version of libgtk2 for the host, because that +# requires compiling Cairo, Pango, ATK and X.org for the +# host. Therefore, we patch it to remove dependencies, and we hack the +# build to only build gdk-pixbuf-from-source and +# gtk-update-icon-cache, which are the host tools needed to build Gtk +# for the target. + +HOST_LIBGTK2_DEPENDENCIES = host-libglib2 host-libpng host-gdk-pixbuf +HOST_LIBGTK2_CONF_OPTS = \ + --disable-static \ + --disable-glibtest \ + --without-libtiff \ + --without-libjpeg \ + --with-gdktarget=none \ + --disable-cups + +define HOST_LIBGTK2_BUILD_CMDS + $(HOST_MAKE_ENV) make -C $(@D)/gtk gtk-update-icon-cache +endef + +define HOST_LIBGTK2_INSTALL_CMDS + cp $(@D)/gtk/gtk-update-icon-cache $(HOST_DIR)/bin +endef + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libgtk3/0001-Remove-Gdk-dependency-from-gtk-encode-symbolic-svg.patch b/package/libgtk3/0001-Remove-Gdk-dependency-from-gtk-encode-symbolic-svg.patch new file mode 100644 index 00000000..cea4259b --- /dev/null +++ b/package/libgtk3/0001-Remove-Gdk-dependency-from-gtk-encode-symbolic-svg.patch @@ -0,0 +1,105 @@ +From 4d09ff324419fe4e671233044e424378da53969b Mon Sep 17 00:00:00 2001 +From: Jussi Kukkonen +Date: Tue, 9 Jun 2015 14:20:30 +0300 +Subject: [PATCH] Remove Gdk-dependency from gtk-encode-symbolic-svg + +Building gtk-encode-symbolic-svg without building Gdk is useful +as only the icon tools are needed on the native build: this makes +native build much faster and requires much less dependencies. + +Upstream-Status: Pending + +Signed-off-by: Jussi Kukkonen +Signed-off-by: Gustavo Zacarias +--- +Patch status: taken from yocto, upstream pending + + gtk/encodesymbolic.c | 36 ++++++++++-------------------------- + 1 file changed, 10 insertions(+), 26 deletions(-) + +diff --git a/gtk/encodesymbolic.c b/gtk/encodesymbolic.c +index 9f7d015..1f07563 100644 +--- a/gtk/encodesymbolic.c ++++ b/gtk/encodesymbolic.c +@@ -19,7 +19,6 @@ + + #include + #include +-#include + #include + + #ifdef HAVE_UNISTD_H +@@ -43,30 +42,18 @@ static GdkPixbuf * + load_symbolic_svg (char *file_data, gsize file_len, + int width, + int height, +- const GdkRGBA *fg, +- const GdkRGBA *success_color, +- const GdkRGBA *warning_color, +- const GdkRGBA *error_color, ++ const char *css_fg, ++ const char *css_success, ++ const char *css_warning, ++ const char *css_error, + GError **error) + { + GInputStream *stream; + GdkPixbuf *pixbuf; +- gchar *css_fg; +- gchar *css_success; +- gchar *css_warning; +- gchar *css_error; + gchar *data; + gchar *svg_width, *svg_height; + gchar *escaped_file_data; + +- css_fg = gdk_rgba_to_string (fg); +- +- css_success = css_warning = css_error = NULL; +- +- css_warning = gdk_rgba_to_string (warning_color); +- css_error = gdk_rgba_to_string (error_color); +- css_success = gdk_rgba_to_string (success_color); +- + /* Fetch size from the original icon */ + stream = g_memory_input_stream_new_from_data (file_data, file_len, NULL); + pixbuf = gdk_pixbuf_new_from_stream (stream, NULL, error); +@@ -105,10 +92,6 @@ load_symbolic_svg (char *file_data, gsize file_len, + "", + NULL); + g_free (escaped_file_data); +- g_free (css_fg); +- g_free (css_warning); +- g_free (css_error); +- g_free (css_success); + g_free (svg_width); + g_free (svg_height); + +@@ -167,7 +150,8 @@ make_symbolic_pixbuf (char *file, + GError **error) + + { +- GdkRGBA r = { 1,0,0,1}, g = {0,1,0,1}; ++ const char r[] = "rgba(255,0,0,1)"; ++ const char g[] = "rgba(0,255,0,1)"; + GdkPixbuf *loaded; + GdkPixbuf *pixbuf; + int plane; +@@ -196,10 +180,10 @@ make_symbolic_pixbuf (char *file, + * the "rest", as all color fractions should add up to 1. + */ + loaded = load_symbolic_svg (file_data, file_len, width, height, +- &g, +- plane == 0 ? &r : &g, +- plane == 1 ? &r : &g, +- plane == 2 ? &r : &g, ++ g, ++ plane == 0 ? r : g, ++ plane == 1 ? r : g, ++ plane == 2 ? r : g, + error); + if (loaded == NULL) + return NULL; +-- +2.1.4 + diff --git a/package/libgtk3/Config.in b/package/libgtk3/Config.in new file mode 100644 index 00000000..52ee50db --- /dev/null +++ b/package/libgtk3/Config.in @@ -0,0 +1,110 @@ +comment "libgtk3 needs a toolchain w/ wchar, threads, C++, gcc >= 4.9" + depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_TOOLCHAIN_HAS_THREADS + +comment "libgtk3 needs an OpenGL or an OpenGL-EGL backend" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_PACKAGE_HAS_LIBEGL && \ + !BR2_PACKAGE_HAS_LIBGL + +config BR2_PACKAGE_LIBGTK3 + bool "libgtk3" + depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS # host-libgtk3 -> host-librsvg + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + depends on BR2_INSTALL_LIBSTDCPP # pango + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # pango -> harfbuzz + depends on BR2_PACKAGE_HAS_LIBEGL || \ + BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_AT_SPI2_CORE + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_CAIRO_PNG + select BR2_PACKAGE_CAIRO_ZLIB + select BR2_PACKAGE_LIBEPOXY + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_PANGO + select BR2_PACKAGE_GDK_PIXBUF + # At least one backend is required + select BR2_PACKAGE_LIBGTK3_BROADWAY if \ + !(BR2_PACKAGE_LIBGTK3_X11 || BR2_PACKAGE_LIBGTK3_WAYLAND) + help + The GTK+ version 3 graphical user interface library + + https://www.gtk.org/ + +if BR2_PACKAGE_LIBGTK3 + +config BR2_PACKAGE_LIBGTK3_BROADWAY + bool "Broadway GDK backend" + default y + help + This enables the Broadway backend for GDK, which provides + support for displaying GTK+ applications in a web browser, + using HTML5 and web sockets. + + For example, to run gtk3-demo on a target which IP address is + 192.168.0.1 and use it from a web browser, execute the + following commands: + + $ broadwayd -a 192.168.0.1 -p 8080 :2 & + $ export GDK_BACKEND=broadway + $ export BROADWAY_DISPLAY=:2 + $ gtk3-demo + + Then open a web browser at address http://192.168.0.1:8080. + Javascript and web sockets should be enabled. + +comment "Wayland GDK backend needs an OpenGL EGL backend provided by mesa3d w/ headers >= 3.17" + depends on !BR2_PACKAGE_MESA3D_OPENGL_EGL || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 + +config BR2_PACKAGE_LIBGTK3_WAYLAND + bool "Wayland GDK backend" + default y + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 + select BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_WAYLAND_PROTOCOLS + select BR2_PACKAGE_LIBXKBCOMMON + help + This enables the Wayland backend for GDK. + +comment "X11 GDK backend needs an OpenGL provider" + depends on !BR2_PACKAGE_HAS_LIBGL + +config BR2_PACKAGE_LIBGTK3_X11 + bool "X11 GDK backend" + default y + depends on BR2_PACKAGE_XORG7 + depends on BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XLIB_LIBXI + help + This enables the X11 backend for GDK. + +config BR2_PACKAGE_LIBGTK3_DEMO + bool "Install libgtk3 demo program" + select BR2_PACKAGE_SHARED_MIME_INFO + select BR2_PACKAGE_HICOLOR_ICON_THEME + help + The GTK+ source base contains a demo program. This + option allows to install this program to the target. + +config BR2_PACKAGE_LIBGTK3_TESTS + bool "Install libgtk3 tests" + help + The GTK+ source base contains tests. This option + allows to install them to the target. + +endif diff --git a/package/libgtk3/libgtk3.hash b/package/libgtk3/libgtk3.hash new file mode 100644 index 00000000..6a682a74 --- /dev/null +++ b/package/libgtk3/libgtk3.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/gtk+/3.24/gtk+-3.24.43.sha256sum +sha256 7e04f0648515034b806b74ae5d774d87cffb1a2a96c468cb5be476d51bf2f3c7 gtk+-3.24.43.tar.xz + +# Hash for license file: +sha256 b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c COPYING diff --git a/package/libgtk3/libgtk3.mk b/package/libgtk3/libgtk3.mk new file mode 100644 index 00000000..d6d7c64a --- /dev/null +++ b/package/libgtk3/libgtk3.mk @@ -0,0 +1,156 @@ +################################################################################ +# +# libgtk3 +# +################################################################################ + +LIBGTK3_VERSION_MAJOR = 3.24 +LIBGTK3_VERSION = $(LIBGTK3_VERSION_MAJOR).43 +LIBGTK3_SOURCE = gtk+-$(LIBGTK3_VERSION).tar.xz +LIBGTK3_SITE = https://download.gnome.org/sources/gtk+/$(LIBGTK3_VERSION_MAJOR) +LIBGTK3_LICENSE = LGPL-2.0+ +LIBGTK3_LICENSE_FILES = COPYING +LIBGTK3_CPE_ID_VENDOR = gnome +LIBGTK3_CPE_ID_PRODUCT = gtk +LIBGTK3_INSTALL_STAGING = YES + +LIBGTK3_DEPENDENCIES = host-pkgconf host-libgtk3 at-spi2-core libglib2 cairo pango \ + gdk-pixbuf libepoxy $(TARGET_NLS_DEPENDENCIES) + +ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) +LIBGTK3_DEPENDENCIES += fontconfig xlib_libX11 xlib_libXext xlib_libXrandr xlib_libXrender xlib_libXi +LIBGTK3_CONF_OPTS += -Dx11_backend=true +else +LIBGTK3_CONF_OPTS += -Dx11_backend=false +endif + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +LIBGTK3_CONF_OPTS += -Dintrospection=true +LIBGTK3_DEPENDENCIES += gobject-introspection +else +LIBGTK3_CONF_OPTS += -Dintrospection=false +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3_WAYLAND),y) +LIBGTK3_DEPENDENCIES += wayland wayland-protocols libxkbcommon +LIBGTK3_CONF_OPTS += -Dwayland_backend=true +else +LIBGTK3_CONF_OPTS += -Dwayland_backend=false +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3_BROADWAY),y) +LIBGTK3_CONF_OPTS += -Dbroadway_backend=true +else +LIBGTK3_CONF_OPTS += -Dbroadway_backend=false +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +LIBGTK3_CONF_OPTS += -Dxinerama=yes +LIBGTK3_DEPENDENCIES += xlib_libXinerama +else +LIBGTK3_CONF_OPTS += -Dxinerama=no +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y) +LIBGTK3_DEPENDENCIES += xlib_libXcursor +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y) +LIBGTK3_DEPENDENCIES += xlib_libXfixes +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),y) +LIBGTK3_DEPENDENCIES += xlib_libXcomposite +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXDAMAGE),y) +LIBGTK3_DEPENDENCIES += xlib_libXdamage +endif + +ifeq ($(BR2_PACKAGE_CUPS),y) +LIBGTK3_CONF_OPTS += -Dprint_backends=file,cups +LIBGTK3_DEPENDENCIES += cups +else +LIBGTK3_CONF_OPTS += -Dprint_backends=auto +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3_DEMO),y) +LIBGTK3_CONF_OPTS += -Ddemos=true -Dexamples=true +LIBGTK3_DEPENDENCIES += hicolor-icon-theme shared-mime-info +else +LIBGTK3_CONF_OPTS += -Ddemos=false -Dexamples=false +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3_TESTS),y) +LIBGTK3_CONF_OPTS += -Dtests=true -Dinstalled_tests=true +else +LIBGTK3_CONF_OPTS += -Dtests=false -Dinstalled_tests=false +endif + +define LIBGTK3_COMPILE_GLIB_SCHEMAS + $(HOST_DIR)/bin/glib-compile-schemas \ + $(TARGET_DIR)/usr/share/glib-2.0/schemas +endef + +LIBGTK3_POST_INSTALL_TARGET_HOOKS += LIBGTK3_COMPILE_GLIB_SCHEMAS + +# gtk+ >= 3.10 can build a native version of gtk-update-icon-cache if +# --enable-gtk2-dependency=no is set when invoking './configure'. +# +# Unfortunately, if the target toolchain is based on uClibc, the macro +# AM_GLIB_GNU_GETTEXT will detect the libintl built for the target and +# will add '-lintl' to the default list of libraries for the linker (used +# for both native and target builds). +# +# But no native version of libintl is available (the functions are +# provided by glibc). So gtk-update-icon-cache will not build. +# +# As a workaround, we build gtk-update-icon-cache on our own, set +# --enable-gtk2-dependency=yes and force './configure' to use our version. + +HOST_LIBGTK3_DEPENDENCIES = \ + host-libglib2 \ + host-libpng \ + host-gdk-pixbuf \ + host-pkgconf \ + host-librsvg + +HOST_LIBGTK3_CFLAGS = \ + `$(HOST_MAKE_ENV) $(PKG_CONFIG_HOST_BINARY) --cflags --libs gdk-pixbuf-2.0` \ + `$(HOST_MAKE_ENV) $(PKG_CONFIG_HOST_BINARY) --cflags --libs gio-2.0` + +define HOST_LIBGTK3_CONFIGURE_CMDS + echo "#define GETTEXT_PACKAGE \"gtk30\"" >> $(@D)/gtk/config.h + echo "#define HAVE_UNISTD_H 1" >> $(@D)/gtk/config.h + echo "#define HAVE_FTW_H 1" >> $(@D)/gtk/config.h +endef + +define HOST_LIBGTK3_BUILD_CMDS + $(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS) \ + $(@D)/gtk/updateiconcache.c \ + $(HOST_LIBGTK3_CFLAGS) \ + -o $(@D)/gtk/gtk-update-icon-cache + $(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS) \ + $(@D)/gtk/encodesymbolic.c \ + $(HOST_LIBGTK3_CFLAGS) \ + -o $(@D)/gtk/gtk-encode-symbolic-svg +endef + +define HOST_LIBGTK3_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/gtk/gtk-update-icon-cache \ + $(HOST_DIR)/bin/gtk-update-icon-cache + $(INSTALL) -D -m 0755 $(@D)/gtk/gtk-encode-symbolic-svg \ + $(HOST_DIR)/bin/gtk-encode-symbolic-svg +endef + +# Create icon-theme.cache for each of the icon directories/themes +# It's not strictly necessary but speeds up lookups +define LIBGTK3_UPDATE_ICON_CACHE + [ ! -d $(TARGET_DIR)/usr/share/icons ] || \ + find $(TARGET_DIR)/usr/share/icons -maxdepth 1 -mindepth 1 -type d \ + -exec $(HOST_DIR)/bin/gtk-update-icon-cache {} \; +endef +LIBGTK3_TARGET_FINALIZE_HOOKS += LIBGTK3_UPDATE_ICON_CACHE + +$(eval $(meson-package)) +$(eval $(host-generic-package)) diff --git a/package/libgtk4/Config.in b/package/libgtk4/Config.in new file mode 100644 index 00000000..af7f57b8 --- /dev/null +++ b/package/libgtk4/Config.in @@ -0,0 +1,102 @@ +comment "libgtk4 needs a toolchain w/ wchar, threads, C++, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_TOOLCHAIN_HAS_THREADS + +comment "libgtk4 needs an OpenGL(ES) EGL backend" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_PACKAGE_HAS_LIBEGL + +config BR2_PACKAGE_LIBGTK4 + bool "libgtk4" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + depends on BR2_INSTALL_LIBSTDCPP # pango + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # pango -> harfbuzz + # Even in the case of X11/OpenGL, libgtk4 needs epoxy built + # with EGL support, see + # https://gitlab.gnome.org/GNOME/gtk/-/issues/6866. + depends on BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_GDK_PIXBUF + select BR2_PACKAGE_GRAPHENE + select BR2_PACKAGE_LIBEPOXY + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_PANGO + select BR2_PACKAGE_TIFF + # At least one backend is required + select BR2_PACKAGE_LIBGTK4_BROADWAY if \ + !(BR2_PACKAGE_LIBGTK4_X11 || BR2_PACKAGE_LIBGTK4_WAYLAND) + help + The GTK version 4 graphical user interface library + + https://www.gtk.org/ + +if BR2_PACKAGE_LIBGTK4 + +config BR2_PACKAGE_LIBGTK4_BROADWAY + bool "Broadway GDK backend" + default y + help + This enables the Broadway backend for GDK, which provides + support for displaying GTK+ applications in a web browser, + using HTML5 and web sockets. + + For example, to run gtk4-demo on a target which IP address is + 192.168.0.1 and use it from a web browser, execute the + following commands: + + $ broadwayd -a 192.168.0.1 -p 8080 :2 & + $ export GDK_BACKEND=broadway + $ export BROADWAY_DISPLAY=:2 + $ gtk4-demo + + Then open a web browser at address http://192.168.0.1:8080. + Javascript and web sockets should be enabled. + +config BR2_PACKAGE_LIBGTK4_WAYLAND + bool "Wayland GDK backend" + default y + select BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_WAYLAND_PROTOCOLS + select BR2_PACKAGE_LIBXKBCOMMON + help + This enables the Wayland backend for GDK. + +comment "X11 GDK backend needs an OpenGL provider" + depends on !BR2_PACKAGE_HAS_LIBGL + +config BR2_PACKAGE_LIBGTK4_X11 + bool "X11 GDK backend" + default y + depends on BR2_PACKAGE_XORG7 + depends on BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_XLIB_LIBXCURSOR + select BR2_PACKAGE_XLIB_LIBXI + select BR2_PACKAGE_XLIB_LIBXINERAMA + help + This enables the X11 backend for GDK. + +config BR2_PACKAGE_LIBGTK4_GSTREAMER + bool "gstreamer support" + select BR2_PACKAGE_GSTREAMER1 + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL + select BR2_PACKAGE_GST1_PLUGINS_BAD + help + Enable gstreamer support. + +config BR2_PACKAGE_LIBGTK4_DEMO + bool "Install libgtk4 demo/example programs" + select BR2_PACKAGE_SHARED_MIME_INFO + select BR2_PACKAGE_HICOLOR_ICON_THEME + help + The GTK source base contains demo/exmaple programs. + This option allows to install them to the target. + +endif diff --git a/package/libgtk4/libgtk4.hash b/package/libgtk4/libgtk4.hash new file mode 100644 index 00000000..efb944f2 --- /dev/null +++ b/package/libgtk4/libgtk4.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/gtk/4.12/gtk-4.12.4.sha256sum +sha256 ba67c6498e5599f928edafb9e08a320adfaa50ab2f0da6fc6ab2252fc2d57520 gtk-4.12.4.tar.xz + +# Hash for license file: +sha256 b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c COPYING diff --git a/package/libgtk4/libgtk4.mk b/package/libgtk4/libgtk4.mk new file mode 100644 index 00000000..48bfc80c --- /dev/null +++ b/package/libgtk4/libgtk4.mk @@ -0,0 +1,130 @@ +################################################################################ +# +# libgtk4 +# +################################################################################ + +LIBGTK4_VERSION_MAJOR = 4.12 +LIBGTK4_VERSION = $(LIBGTK4_VERSION_MAJOR).4 +LIBGTK4_SOURCE = gtk-$(LIBGTK4_VERSION).tar.xz +LIBGTK4_SITE = https://download.gnome.org/sources/gtk/$(LIBGTK4_VERSION_MAJOR) +LIBGTK4_LICENSE = LGPL-2.0+ +LIBGTK4_LICENSE_FILES = COPYING +LIBGTK4_CPE_ID_VENDOR = gnome +LIBGTK4_CPE_ID_PRODUCT = gtk +LIBGTK4_INSTALL_STAGING = YES + +LIBGTK4_DEPENDENCIES = \ + host-pkgconf \ + host-libgtk4 \ + gdk-pixbuf \ + graphene \ + libepoxy \ + libglib2 \ + pango \ + $(TARGET_NLS_DEPENDENCIES) + +LIBGTK4_CONF_OPTS = \ + -Dbuild-tests=false \ + -Dbuild-testsuite=false \ + -Dmedia-ffmpeg=disabled \ + -Dprint-cpdb=disabled \ + -Dvulkan=disabled \ + -Dcloudproviders=disabled \ + -Dsysprof=disabled \ + -Dtracker=disabled \ + -Dcolord=disabled \ + -Dintrospection=disabled \ + -Ddocumentation=false \ + -Dscreenshots=false \ + -Dman-pages=false + +ifeq ($(BR2_PACKAGE_LIBGTK4_X11),y) +LIBGTK4_DEPENDENCIES += xlib_libXcursor xlib_libXi xlib_libXinerama +LIBGTK4_CONF_OPTS += -Dx11-backend=true +else +LIBGTK4_CONF_OPTS += -Dx11-backend=false +endif + +ifeq ($(BR2_PACKAGE_LIBGTK4_WAYLAND),y) +LIBGTK4_DEPENDENCIES += wayland wayland-protocols libxkbcommon +LIBGTK4_CONF_OPTS += -Dwayland-backend=true +else +LIBGTK4_CONF_OPTS += -Dwayland-backend=false +endif + +ifeq ($(BR2_PACKAGE_LIBGTK4_BROADWAY),y) +LIBGTK4_CONF_OPTS += -Dbroadway-backend=true +else +LIBGTK4_CONF_OPTS += -Dbroadway-backend=false +endif + +ifeq ($(BR2_PACKAGE_LIBGTK4_GSTREAMER),y) +LIBGTK4_CONF_OPTS += -Dmedia-gstreamer=enabled +LIBGTK4_DEPENDENCIES += gstreamer1 gst1-plugins-base gst1-plugins-bad +else +LIBGTK4_CONF_OPTS += -Dmedia-gstreamer=disabled +endif + +ifeq ($(BR2_PACKAGE_CUPS),y) +LIBGTK4_CONF_OPTS += -Dprint-cups=enabled +LIBGTK4_DEPENDENCIES += cups +else +LIBGTK4_CONF_OPTS += -Dprint-cups=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBGTK4_DEMO),y) +LIBGTK4_CONF_OPTS += -Dbuild-demos=true -Dbuild-examples=true +LIBGTK4_DEPENDENCIES += hicolor-icon-theme shared-mime-info +else +LIBGTK4_CONF_OPTS += -Dbuild-demos=false -Dbuild-examples=false +endif + +define LIBGTK4_COMPILE_GLIB_SCHEMAS + $(HOST_DIR)/bin/glib-compile-schemas \ + $(TARGET_DIR)/usr/share/glib-2.0/schemas +endef +LIBGTK4_POST_INSTALL_TARGET_HOOKS += LIBGTK4_COMPILE_GLIB_SCHEMAS + +# here, we build a native gtk4-update-icon-cache as host-libgtk4 + +HOST_LIBGTK4_DEPENDENCIES = \ + host-gdk-pixbuf \ + host-libglib2 \ + host-pkgconf + +HOST_LIBGTK4_CFLAGS = \ + -I $(@D)/gtk \ + `$(HOST_MAKE_ENV) $(PKG_CONFIG_HOST_BINARY) --cflags --libs gdk-pixbuf-2.0` + +define HOST_LIBGTK4_CONFIGURE_CMDS + echo "#define BUILD_TOOLS 1" >> $(@D)/gtk/config.h + echo "#define GETTEXT_PACKAGE \"gtk40\"" >> $(@D)/gtk/config.h + echo "#define GTK_LOCALEDIR \"/usr/share/locale\"" >> $(@D)/gtk/config.h + echo "#define HAVE_UNISTD_H 1" >> $(@D)/gtk/config.h + echo "#define HAVE_FTW_H 1" >> $(@D)/gtk/config.h +endef + +define HOST_LIBGTK4_BUILD_CMDS + $(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS) \ + $(@D)/tools/updateiconcache.c $(@D)/gtk/gtkiconcachevalidator.c\ + $(HOST_LIBGTK4_CFLAGS) \ + -o $(@D)/tools/gtk4-update-icon-cache +endef + +define HOST_LIBGTK4_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/tools/gtk4-update-icon-cache \ + $(HOST_DIR)/bin/gtk4-update-icon-cache +endef + +# Create icon-theme.cache for each of the icon directories/themes +# It's not strictly necessary but speeds up lookups +define LIBGTK4_UPDATE_ICON_CACHE + [ ! -d $(TARGET_DIR)/usr/share/icons ] || \ + find $(TARGET_DIR)/usr/share/icons -maxdepth 1 -mindepth 1 -type d \ + -exec $(HOST_DIR)/bin/gtk-update-icon-cache {} \; +endef +LIBGTK4_TARGET_FINALIZE_HOOKS += LIBGTK4_UPDATE_ICON_CACHE + +$(eval $(meson-package)) +$(eval $(host-generic-package)) diff --git a/package/libgudev/Config.in b/package/libgudev/Config.in new file mode 100644 index 00000000..21606ac4 --- /dev/null +++ b/package/libgudev/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_LIBGUDEV + bool "libgudev" + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_USE_WCHAR # gettext + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBGLIB2 + help + This library provides GObject bindings for libudev. It was + originally part of udev-extras, then udev, then systemd. + It's now a project on its own. Required for building some + programs that use udev, when using systemd. + + https://wiki.gnome.org/Projects/libgudev + +comment "libgudev needs udev /dev handling and a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_PACKAGE_HAS_UDEV diff --git a/package/libgudev/libgudev.hash b/package/libgudev/libgudev.hash new file mode 100644 index 00000000..90f27a02 --- /dev/null +++ b/package/libgudev/libgudev.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/libgudev/237/libgudev-237.sha256sum +sha256 0d06b21170d20c93e4f0534dbb9b0a8b4f1119ffb00b4031aaeb5b9148b686aa libgudev-237.tar.xz + +# Hash for license file: +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/libgudev/libgudev.mk b/package/libgudev/libgudev.mk new file mode 100644 index 00000000..ef0bd997 --- /dev/null +++ b/package/libgudev/libgudev.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# libgudev +# +################################################################################ + +LIBGUDEV_VERSION = 237 +LIBGUDEV_SOURCE = libgudev-$(LIBGUDEV_VERSION).tar.xz +LIBGUDEV_SITE = https://download.gnome.org/sources/libgudev/$(LIBGUDEV_VERSION) +LIBGUDEV_INSTALL_STAGING = YES +LIBGUDEV_DEPENDENCIES = host-pkgconf udev libglib2 +LIBGUDEV_LICENSE = LGPL-2.1+ +LIBGUDEV_LICENSE_FILES = COPYING +LIBGUDEV_CONF_OPTS = -Dtests=disabled -Dvapi=disabled + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +LIBGUDEV_CONF_OPTS += -Dintrospection=enabled +LIBGUDEV_DEPENDENCIES += gobject-introspection +else +LIBGUDEV_CONF_OPTS += -Dintrospection=disabled +endif + +$(eval $(meson-package)) diff --git a/package/libhdhomerun/0001-dont-strip.patch b/package/libhdhomerun/0001-dont-strip.patch new file mode 100644 index 00000000..17a9ff49 --- /dev/null +++ b/package/libhdhomerun/0001-dont-strip.patch @@ -0,0 +1,18 @@ +Disable strip in Makefile. + +Patch downloaded from Gentoo: +https://gitweb.gentoo.org/repo/gentoo.git/tree/media-libs/libhdhomerun/files/dont-strip.patch + +Signed-off-by: Bernd Kuhls + +diff -Nur libhdhomerun/Makefile libhdhomerun.fix/Makefile +--- libhdhomerun/Makefile 2012-08-30 15:46:27.000000000 -0500 ++++ libhdhomerun.fix/Makefile 2013-03-24 14:47:08.740937164 -0500 +@@ -42,7 +42,6 @@ + + hdhomerun_config$(BINEXT) : hdhomerun_config.c $(LIBSRCS) + $(CC) $(CFLAGS) $+ $(LDFLAGS) -o $@ +- $(STRIP) $@ + + libhdhomerun$(LIBEXT) : $(LIBSRCS) + $(CC) $(CFLAGS) -fPIC -DDLL_EXPORT $(SHARED) $+ $(LDFLAGS) -o $@ diff --git a/package/libhdhomerun/Config.in b/package/libhdhomerun/Config.in new file mode 100644 index 00000000..9425c1b1 --- /dev/null +++ b/package/libhdhomerun/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBHDHOMERUN + bool "libhdhomerun" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + HDHomeRun is a network-attached digital television tuner + box, produced by the company SiliconDust USA, Inc. + + http://www.silicondust.com + +comment "libhdhomerun needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/libhdhomerun/libhdhomerun.hash b/package/libhdhomerun/libhdhomerun.hash new file mode 100644 index 00000000..66edd6a0 --- /dev/null +++ b/package/libhdhomerun/libhdhomerun.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 deaf463bbcc3eefa72f97199efb6213f7b0e2c8e91f1b3d2cbf52056a8715d15 libhdhomerun_20210624.tgz +sha256 9b872a8a070b8ad329c4bd380fb1bf0000f564c75023ec8e1e6803f15364b9e9 LICENSE diff --git a/package/libhdhomerun/libhdhomerun.mk b/package/libhdhomerun/libhdhomerun.mk new file mode 100644 index 00000000..4bc584e6 --- /dev/null +++ b/package/libhdhomerun/libhdhomerun.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# libhdhomerun +# +################################################################################ + +LIBHDHOMERUN_VERSION = 20210624 +LIBHDHOMERUN_SOURCE = libhdhomerun_$(LIBHDHOMERUN_VERSION).tgz +LIBHDHOMERUN_SITE = http://download.silicondust.com/hdhomerun +LIBHDHOMERUN_LICENSE = LGPL-2.1+ +LIBHDHOMERUN_LICENSE_FILES = LICENSE +LIBHDHOMERUN_INSTALL_STAGING = YES + +define LIBHDHOMERUN_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) \ + CROSS_COMPILE="$(TARGET_CROSS)" -C $(@D) +endef + +define LIBHDHOMERUN_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0755 $(@D)/libhdhomerun.so \ + $(STAGING_DIR)/usr/lib/libhdhomerun.so + mkdir -p $(STAGING_DIR)/usr/include/libhdhomerun/ + $(INSTALL) -m 0644 $(@D)/*.h \ + $(STAGING_DIR)/usr/include/libhdhomerun/ +endef + +define LIBHDHOMERUN_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/libhdhomerun.so \ + $(TARGET_DIR)/usr/lib/libhdhomerun.so +endef + +$(eval $(generic-package)) diff --git a/package/libheif/Config.in b/package/libheif/Config.in new file mode 100644 index 00000000..1452cf27 --- /dev/null +++ b/package/libheif/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBHEIF + bool "libheif" + depends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_30730 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + help + libheif is an HEIF and AVIF file format decoder and encoder. + + https://github.com/strukturag/libheif + +comment "libheif needs a toolchain w/ C++, gcc >= 4.8" + depends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_30730 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 diff --git a/package/libheif/libheif.hash b/package/libheif/libheif.hash new file mode 100644 index 00000000..ed1a083d --- /dev/null +++ b/package/libheif/libheif.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 8702564b0f288707ea72b260b3bf4ba9bf7abfa7dac01353def3a86acd6bbb76 libheif-1.18.1.tar.gz +sha256 b2eb4f6588b005bebac44cfb2dfd23f6a16c5ca9b8a619a315158b0215a917a3 COPYING diff --git a/package/libheif/libheif.mk b/package/libheif/libheif.mk new file mode 100644 index 00000000..e2c3a328 --- /dev/null +++ b/package/libheif/libheif.mk @@ -0,0 +1,88 @@ +################################################################################ +# +# libheif +# +################################################################################ + +LIBHEIF_VERSION = 1.18.1 +LIBHEIF_SITE = https://github.com/strukturag/libheif/releases/download/v$(LIBHEIF_VERSION) +LIBHEIF_LICENSE = LGPL-3.0+ +LIBHEIF_LICENSE_FILES = COPYING +LIBHEIF_CPE_ID_VENDOR = struktur +LIBHEIF_INSTALL_STAGING = YES +LIBHEIF_CONF_OPTS = \ + -DCMAKE_CXX_FLAGS="-std=c++11" \ + -DENABLE_PLUGIN_LOADING=OFF \ + -DWITH_AOM_DECODER=OFF \ + -DWITH_AOM_ENCODER=OFF \ + -DWITH_DEFLATE_HEADER_COMPRESSION=OFF \ + -DWITH_EXAMPLES=OFF \ + -DWITH_GDK_PIXBUF=OFF \ + -DWITH_LIBSHARPYUV=OFF \ + -DWITH_RAV1E=OFF \ + -DWITH_REDUCED_VISIBILITY=ON \ + -DWITH_SvtEnc=OFF + +ifeq ($(BR2_PACKAGE_DAV1D),y) +LIBHEIF_CONF_OPTS += -DWITH_DAV1D=ON +LIBHEIF_DEPENDENCIES += dav1d +else +LIBHEIF_CONF_OPTS += -DWITH_DAV1D=OFF +endif + +ifeq ($(BR2_PACKAGE_FFMPEG),y) +LIBHEIF_CONF_OPTS += -DWITH_FFMPEG_DECODER=ON +LIBHEIF_DEPENDENCIES += ffmpeg +else +LIBHEIF_CONF_OPTS += -DWITH_FFMPEG_DECODER=OFF +endif + +ifeq ($(BR2_PACKAGE_KVAZAAR),y) +LIBHEIF_CONF_OPTS += -DWITH_KVAZAAR=ON +LIBHEIF_DEPENDENCIES += kvazaar +else +LIBHEIF_CONF_OPTS += -DWITH_KVAZAAR=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBDE265),y) +LIBHEIF_CONF_OPTS += -DWITH_LIBDE265=ON +LIBHEIF_DEPENDENCIES += libde265 +else +LIBHEIF_CONF_OPTS += -DWITH_LIBDE265=OFF +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +LIBHEIF_CONF_OPTS += -DWITH_JPEG_DECODER=ON -DWITH_JPEG_ENCODER=ON +LIBHEIF_DEPENDENCIES += jpeg +else +LIBHEIF_CONF_OPTS += -DWITH_JPEG_DECODER=OFF -DWITH_JPEG_ENCODER=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENJPEG),y) +LIBHEIF_CONF_OPTS += -DWITH_OpenJPEG_DECODER=ON -DWITH_OpenJPEG_ENCODER=ON +LIBHEIF_DEPENDENCIES += openjpeg +else +LIBHEIF_CONF_OPTS += -DWITH_OpenJPEG_DECODER=OFF -DWITH_OpenJPEG_ENCODER=OFF +endif + +ifeq ($(BR2_PACKAGE_X265),y) +LIBHEIF_CONF_OPTS += -DWITH_X265=ON +LIBHEIF_DEPENDENCIES += x265 +else +LIBHEIF_CONF_OPTS += -DWITH_X265=OFF +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +LIBHEIF_CONF_OPTS += -DENABLE_MULTITHREADING_SUPPORT=ON +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_64735),y) +LIBHEIF_CONF_OPTS += -DENABLE_PARALLEL_TILE_DECODING=OFF +else +LIBHEIF_CONF_OPTS += -DENABLE_PARALLEL_TILE_DECODING=ON +endif +else +LIBHEIF_CONF_OPTS += \ + -DENABLE_MULTITHREADING_SUPPORT=OFF \ + -DENABLE_PARALLEL_TILE_DECODING=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/libhid/0001-dont-fiddle-with-debug-flags.patch b/package/libhid/0001-dont-fiddle-with-debug-flags.patch new file mode 100644 index 00000000..44a17287 --- /dev/null +++ b/package/libhid/0001-dont-fiddle-with-debug-flags.patch @@ -0,0 +1,19 @@ +MD_CONF_DEBUGGING changes CFLAGS and CXXFLAGS with a horrible magic so disable +it to prevent compilation errors. + +downloaded from +http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-libs/libhid/files/libhid-0.2.16-gentoo.patch?revision=1.1&view=markup + +Signed-off-by: Bernd Kuhls + +diff -uNr libhid-0.2.16.org/configure.ac libhid-0.2.16/configure.ac +--- libhid-0.2.16.org/configure.ac 2007-04-01 22:32:10.000000000 +0200 ++++ libhid-0.2.16/configure.ac 2014-10-19 21:31:00.550091947 +0200 +@@ -78,7 +78,6 @@ + AC_C_BIGENDIAN + AC_C_STRINGIZE + +-MD_CONF_DEBUGGING + MD_CONF_COMPILER + AM_CONDITIONAL(OS_LINUX, test "$MD_OS" = "linux") + AM_CONDITIONAL(OS_BSD, test "$MD_OS" = "bsd") diff --git a/package/libhid/0002-no-newline-in-ldflags.patch b/package/libhid/0002-no-newline-in-ldflags.patch new file mode 100644 index 00000000..df845ee1 --- /dev/null +++ b/package/libhid/0002-no-newline-in-ldflags.patch @@ -0,0 +1,22 @@ +Fix improper usage of macro that introduces a wrong newline + +The MD_CONF_FLAGS() macro was used with a final newline that +introduces an invalid newline in the middle of the macro expansion +when defining LDFLAGS. + +Signed-off-by: Thomas Petazzoni + +Index: libhid-0.2.16/configure.ac +=================================================================== +--- libhid-0.2.16.orig/configure.ac 2007-04-01 22:32:10.000000000 +0200 ++++ libhid-0.2.16/configure.ac 2012-12-12 20:24:03.000000000 +0100 +@@ -102,8 +102,7 @@ + [], + [$OS_CFLAGS $LIBUSB_CFLAGS], + [], +- [$OS_LDFLAGS $LIBUSB_LIBS] +-) ++ [$OS_LDFLAGS $LIBUSB_LIBS]) + + MD_CONF_DB2MAN + diff --git a/package/libhid/0003-uclinux.patch b/package/libhid/0003-uclinux.patch new file mode 100644 index 00000000..9f4502ad --- /dev/null +++ b/package/libhid/0003-uclinux.patch @@ -0,0 +1,29 @@ +Good old 'uclinux is also linux' + +Signed-off-by: Gustavo Zacarias +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi + +diff -Nura libhid-0.2.16.orig/configure.ac libhid-0.2.16/configure.ac +--- libhid-0.2.16.orig/configure.ac 2014-06-22 09:35:50.277261742 -0300 ++++ libhid-0.2.16/configure.ac 2014-06-22 09:36:10.688951947 -0300 +@@ -79,6 +79,7 @@ + AC_C_STRINGIZE + + MD_CONF_COMPILER ++AM_CONDITIONAL(OS_LINUX, test "$MD_OS" = "uclinux") + AM_CONDITIONAL(OS_LINUX, test "$MD_OS" = "linux") + AM_CONDITIONAL(OS_BSD, test "$MD_OS" = "bsd") + AM_CONDITIONAL(OS_SOLARIS, test "$MD_OS" = "solaris") +diff -Nura libhid-0.2.16.orig/m4/md_check_os.m4 libhid-0.2.16/m4/md_check_os.m4 +--- libhid-0.2.16.orig/m4/md_check_os.m4 2014-06-22 09:35:50.275261675 -0300 ++++ libhid-0.2.16/m4/md_check_os.m4 2014-06-22 09:46:17.651475891 -0300 +@@ -3,7 +3,7 @@ + AC_CANONICAL_HOST + AC_MSG_CHECKING(for target OS) + case $host in +- *-linux*) ++ *-linux*|*-uclinux*) + AC_DEFINE(OS_LINUX, [], [define to 1 if building for Linux]) + AC_SUBST(OS_LINUX) + MD_OS=linux diff --git a/package/libhid/Config.in b/package/libhid/Config.in new file mode 100644 index 00000000..abf338fd --- /dev/null +++ b/package/libhid/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBHID + bool "libhid" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + help + Userspace library for accessing USB HID devices + + https://directory.fsf.org/wiki/Libhid + +comment "libhid needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/libhid/libhid.hash b/package/libhid/libhid.hash new file mode 100644 index 00000000..933ba22a --- /dev/null +++ b/package/libhid/libhid.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 f6809ab3b9c907cbb05ceba9ee6ca23a705f85fd71588518e14b3a7d9f2550e5 libhid-0.2.16.tar.gz +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/package/libhid/libhid.mk b/package/libhid/libhid.mk new file mode 100644 index 00000000..b2e890c3 --- /dev/null +++ b/package/libhid/libhid.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# libhid +# +################################################################################ + +LIBHID_VERSION = 0.2.16 +LIBHID_SITE = http://sources.buildroot.net +LIBHID_DEPENDENCIES = libusb-compat libusb +LIBHID_INSTALL_STAGING = YES +LIBHID_AUTORECONF = YES +LIBHID_LICENSE = GPL-2.0 +LIBHID_LICENSE_FILES = COPYING +# configure runs libusb-config for cflags/ldflags. Ensure it picks up +# the target version +LIBHID_CONF_ENV = PATH=$(STAGING_DIR)/usr/bin:$(BR_PATH) +LIBHID_CONF_OPTS = \ + --disable-swig \ + --disable-werror \ + --without-doxygen \ + --disable-package-config + +$(eval $(autotools-package)) diff --git a/package/libhtp/Config.in b/package/libhtp/Config.in new file mode 100644 index 00000000..98b9e2ad --- /dev/null +++ b/package/libhtp/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBHTP + bool "libhtp" + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_ZLIB + help + LibHTP is a security-aware parser for the HTTP protocol and + the related bits and pieces. + + https://github.com/OISF/libhtp diff --git a/package/libhtp/libhtp.hash b/package/libhtp/libhtp.hash new file mode 100644 index 00000000..1809bc93 --- /dev/null +++ b/package/libhtp/libhtp.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 7f0719732fd0c82f9915e3df27e31548798590ad624fbad24f58b50885248ab8 libhtp-0.5.48.tar.gz +sha256 87c93904e5434c81622ea690c2b90097b9f162aaa92a96542649a157dbf98d15 LICENSE diff --git a/package/libhtp/libhtp.mk b/package/libhtp/libhtp.mk new file mode 100644 index 00000000..8735f593 --- /dev/null +++ b/package/libhtp/libhtp.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# libhtp +# +################################################################################ + +LIBHTP_VERSION = 0.5.48 +LIBHTP_SITE = $(call github,OISF,libhtp,$(LIBHTP_VERSION)) +LIBHTP_LICENSE = BSD-3-Clause +LIBHTP_LICENSE_FILES = LICENSE +LIBHTP_CPE_ID_VENDOR = oisf +LIBHTP_DEPENDENCIES = \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) \ + zlib +LIBHTP_INSTALL_STAGING = YES +# From git +LIBHTP_AUTORECONF = YES + +# Let our gcc/wrapper handle SSP +LIBHTP_CONF_ENV = NO_STACK_PROTECTOR=true + +$(eval $(autotools-package)) diff --git a/package/libhttpparser/Config.in b/package/libhttpparser/Config.in new file mode 100644 index 00000000..43563049 --- /dev/null +++ b/package/libhttpparser/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBHTTPPARSER + bool "libhttpparser" + depends on !BR2_STATIC_LIBS + help + This is a parser for HTTP messages written in C. It + parses both requests and responses. The parser is + designed to be used in performance HTTP applications. + It does not make any syscalls nor allocations, it does + not buffer data, it can be interrupted at anytime. + Depending on your architecture, it only requires about + 40 bytes of data per message stream (in a web server + that is per connection). + + https://github.com/nodejs/http-parser + +comment "libhttpparser needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/libhttpparser/libhttpparser.hash b/package/libhttpparser/libhttpparser.hash new file mode 100644 index 00000000..6ab63e82 --- /dev/null +++ b/package/libhttpparser/libhttpparser.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 467b9e30fd0979ee301065e70f637d525c28193449e1b13fbcb1b1fab3ad224f libhttpparser-2.9.4.tar.gz +sha256 79e6ba8b687cb54786207342b9b6fcee0ac10218453ed9009b84d949b2233cc0 LICENSE-MIT diff --git a/package/libhttpparser/libhttpparser.mk b/package/libhttpparser/libhttpparser.mk new file mode 100644 index 00000000..5cf7f773 --- /dev/null +++ b/package/libhttpparser/libhttpparser.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# libhttpparser +# +################################################################################ + +LIBHTTPPARSER_VERSION = 2.9.4 +LIBHTTPPARSER_SITE = $(call github,nodejs,http-parser,v$(LIBHTTPPARSER_VERSION)) +LIBHTTPPARSER_INSTALL_STAGING = YES +LIBHTTPPARSER_LICENSE = MIT +LIBHTTPPARSER_LICENSE_FILES = LICENSE-MIT + +define LIBHTTPPARSER_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) library package +endef + +define LIBHTTPPARSER_INSTALL_STAGING_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) PREFIX=$(STAGING_DIR)/usr install + $(INSTALL) -D -m 0644 $(@D)/libhttp_parser.a $(STAGING_DIR)/usr/lib/libhttp_parser.a +endef + +define LIBHTTPPARSER_INSTALL_TARGET_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) PREFIX=$(TARGET_DIR)/usr install +endef + +define HOST_LIBHTTPPARSER_BUILD_CMDS + $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) library package +endef + +define HOST_LIBHTTPPARSER_INSTALL_CMDS + $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) PREFIX=$(HOST_DIR) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/libhttpserver/Config.in b/package/libhttpserver/Config.in new file mode 100644 index 00000000..3120059a --- /dev/null +++ b/package/libhttpserver/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBHTTPSERVER + bool "libhttpserver" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBMICROHTTPD + help + libhttpserver is a C++ library for building high performance + RESTfuls web servers. libhttpserver is built upon + libmicrohttpd to provide a simple API for developers to + create HTTP services in C++. + + https://github.com/etr/libhttpserver + +comment "libhttpserver needs a toolchain w/ C++, threads, gcc >= 7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 diff --git a/package/libhttpserver/libhttpserver.hash b/package/libhttpserver/libhttpserver.hash new file mode 100644 index 00000000..03ebdc4a --- /dev/null +++ b/package/libhttpserver/libhttpserver.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 b108769ed68d72c58961c517ab16c3a64e4efdc4c45687723bb45bb9e04c5193 libhttpserver-0.19.0.tar.gz +sha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a COPYING.LESSER diff --git a/package/libhttpserver/libhttpserver.mk b/package/libhttpserver/libhttpserver.mk new file mode 100644 index 00000000..54774e76 --- /dev/null +++ b/package/libhttpserver/libhttpserver.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# libhttpserver +# +################################################################################ + +LIBHTTPSERVER_VERSION = 0.19.0 +LIBHTTPSERVER_SITE = $(call github,etr,libhttpserver,$(LIBHTTPSERVER_VERSION)) +LIBHTTPSERVER_LICENSE = LGPL-2.1+ +LIBHTTPSERVER_LICENSE_FILES = COPYING.LESSER +LIBHTTPSERVER_INSTALL_STAGING = YES +LIBHTTPSERVER_CONF_OPTS = \ + --disable-examples \ + --enable-same-directory-build +LIBHTTPSERVER_AUTORECONF = YES +LIBHTTPSERVER_DEPENDENCIES = libmicrohttpd + +$(eval $(autotools-package)) diff --git a/package/libiberty/libiberty.hash b/package/libiberty/libiberty.hash new file mode 120000 index 00000000..e0655d3a --- /dev/null +++ b/package/libiberty/libiberty.hash @@ -0,0 +1 @@ +../binutils/binutils.hash \ No newline at end of file diff --git a/package/libiberty/libiberty.mk b/package/libiberty/libiberty.mk new file mode 100644 index 00000000..ac6afc44 --- /dev/null +++ b/package/libiberty/libiberty.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# libiberty +# +################################################################################ + +LIBIBERTY_VERSION = 2.41 +LIBIBERTY_SOURCE = binutils-$(LIBIBERTY_VERSION).tar.xz +LIBIBERTY_SITE = $(BR2_GNU_MIRROR)/binutils +HOST_LIBIBERTY_DL_SUBDIR = binutils + +# We're only building libiberty here, not the full binutils suite +LIBIBERTY_LICENSE = LGPL-2.1+ +LIBIBERTY_LICENSE_FILES = COPYING.LIB + +LIBIBERTY_SUBDIR = libiberty + +# We explicitly disable multilib, as we do in binutils. +# By default, libiberty installs nothing, so we must force it. +HOST_LIBIBERTY_CONF_OPTS = \ + --disable-multilib \ + --enable-install-libiberty + +# Some packages (e.g. host-gdb) will pick this library and build shared +# objects with it. But libiberty does not honour the --enable-shared and +# --disable-static flags; it only ever builds a static library no matter +# what. So we must force -fPIC in build flags. +HOST_LIBIBERTY_CONF_ENV = \ + CFLAGS="$(HOST_CFLAGS) -fPIC" \ + LDFLAGS="$(HOST_LDFLAGS) -fPIC" + +$(eval $(host-autotools-package)) diff --git a/package/libical/0001-no-tests.patch b/package/libical/0001-no-tests.patch new file mode 100644 index 00000000..324c04f6 --- /dev/null +++ b/package/libical/0001-no-tests.patch @@ -0,0 +1,19 @@ +Disable tests to avoid MMU dependency due to fork. + +Fixes +CMakeFiles/regression.dir/regression.c.o: In function `_test_file_locks': +/home/br/br4/output/build/libical-v1.0.1/src/test/regression.c:(.text+0x96d8): undefined reference to `_fork' + +Signed-off-by: Bernd Kuhls + +diff -uNr libical-1.0.1.org/src/CMakeLists.txt libical-1.0.1/src/CMakeLists.txt +--- libical-1.0.1.org/src/CMakeLists.txt 2014-10-09 17:07:05.000000000 +0200 ++++ libical-1.0.1/src/CMakeLists.txt 2015-04-25 17:41:22.657345548 +0200 +@@ -1,7 +1,6 @@ + add_subdirectory(libical) + add_subdirectory(libicalss) + add_subdirectory(libicalvcal) +-add_subdirectory(test) + + if(MSVC) + install(FILES diff --git a/package/libical/0002-icaltypes-c-icalreqstattype_from_string-copy-the-reqstattype.patch b/package/libical/0002-icaltypes-c-icalreqstattype_from_string-copy-the-reqstattype.patch new file mode 100644 index 00000000..0d74835e --- /dev/null +++ b/package/libical/0002-icaltypes-c-icalreqstattype_from_string-copy-the-reqstattype.patch @@ -0,0 +1,27 @@ +From 6b9438d746cec6e4e632d78c5244f4be6314d1c9 Mon Sep 17 00:00:00 2001 +From: Allen Winter +Date: Sun, 28 May 2017 12:51:10 -0400 +Subject: [PATCH] icaltypes.c - icalreqstattype_from_string(), copy the + reqstattype's debug string into its own memory in the ring buffer. + +Issue#253 +Signed-off-by: Fabrice Fontaine +[Retrieved (and backported) from: +https://github.com/libical/libical/commit/6b9438d746cec6e4e632d78c5244f4be6314d1c9] +--- + src/libical/icaltypes.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/libical/icaltypes.c b/src/libical/icaltypes.c +index 70c50d29..85c33545 100644 +--- a/src/libical/icaltypes.c ++++ b/src/libical/icaltypes.c +@@ -140,7 +140,7 @@ struct icalreqstattype icalreqstattype_from_string(const char *str) + + p2 = strchr(p1+1,';'); + if (p2 != 0 && *p2 != 0){ +- stat.debug = p2+1; ++ stat.debug = icalmemory_tmp_copy(p2+1); + } + + return stat; diff --git a/package/libical/Config.in b/package/libical/Config.in new file mode 100644 index 00000000..7c1d4a14 --- /dev/null +++ b/package/libical/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBICAL + bool "libical" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR + select BR2_TARGET_TZ_INFO + help + libical is an Open Source (MPL/LGPL) implementation of the + IETF's iCalendar Calendaring and Scheduling protocols. + + http://libical.github.io/libical + +comment "libical needs a toolchain w/ C++, dynamic library, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + BR2_STATIC_LIBS diff --git a/package/libical/libical.hash b/package/libical/libical.hash new file mode 100644 index 00000000..52046bd8 --- /dev/null +++ b/package/libical/libical.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 089ce3c42d97fbd7a5d4b3c70adbdd82115dd306349c1f5c46a8fb3f8c949592 libical-1.0.1.tar.gz +sha256 c393726f82e6f21df5262110215f6a4382b32046d10afdcfcc49338aa7a191f2 LICENSE diff --git a/package/libical/libical.mk b/package/libical/libical.mk new file mode 100644 index 00000000..992ef513 --- /dev/null +++ b/package/libical/libical.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# libical +# +################################################################################ + +LIBICAL_VERSION = 1.0.1 +LIBICAL_SITE = https://github.com/libical/libical/releases/download/v$(LIBICAL_VERSION) +LIBICAL_INSTALL_STAGING = YES +LIBICAL_LICENSE = MPL-1.0 or LGPL-2.1 +LIBICAL_LICENSE_FILES = LICENSE +LIBICAL_CPE_ID_VALID = YES + +# 0002-icaltypes-c-icalreqstattype_from_string-copy-the-reqstattype.patch +LIBICAL_IGNORE_CVES += CVE-2016-9584 + +# building without this option is broken, it is used by +# Gentoo/alpinelinux as well +LIBICAL_CONF_OPTS = -DSHARED_ONLY=true +# never build time zone info, always use system's tzinfo +LIBICAL_CONF_OPTS += -DUSE_BUILTIN_TZDATA=false + +$(eval $(cmake-package)) diff --git a/package/libiconv/Config.in b/package/libiconv/Config.in new file mode 100644 index 00000000..c08a844b --- /dev/null +++ b/package/libiconv/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_LIBICONV + bool "libiconv" + depends on !BR2_ENABLE_LOCALE + help + unicode conversion library + + http://ftp.gnu.org/pub/gnu/libiconv + +if BR2_PACKAGE_LIBICONV + +config BR2_PACKAGE_LIBICONV_EXTRA_ENCODINGS + bool "extra encodings" + help + Provide support for a few extra encodings: + + European languages + CP{437,737,775,852,853,855,857,858,860,861,863,865,869,1125} + Semitic languages + CP864 + Japanese + EUC-JISX0213, Shift_JISX0213, ISO-2022-JP-3 + Chinese + BIG5-2003 (experimental) + Turkmen + TDS565 + Platform specifics + ATARIST, RISCOS-LATIN1 + +endif diff --git a/package/libiconv/libiconv.hash b/package/libiconv/libiconv.hash new file mode 100644 index 00000000..e3a6125e --- /dev/null +++ b/package/libiconv/libiconv.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +sha256 ccf536620a45458d26ba83887a983b96827001e92a13847b45e4925cc8913178 libiconv-1.15.tar.gz + +# Hash for license files: +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING +sha256 56bdea73b6145ef6ac5259b3da390b981d840c24cb03b8e1cbc678de7ecfa18d COPYING.LIB diff --git a/package/libiconv/libiconv.mk b/package/libiconv/libiconv.mk new file mode 100644 index 00000000..40763a92 --- /dev/null +++ b/package/libiconv/libiconv.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# libiconv +# +################################################################################ + +LIBICONV_VERSION = 1.15 +LIBICONV_SITE = $(BR2_GNU_MIRROR)/libiconv +LIBICONV_INSTALL_STAGING = YES +LIBICONV_LICENSE = GPL-3.0+ (iconv program), LGPL-2.0+ (library) +LIBICONV_LICENSE_FILES = COPYING COPYING.LIB + +ifeq ($(BR2_PACKAGE_LIBICONV_EXTRA_ENCODINGS),y) +LIBICONV_CONF_OPTS += --enable-extra-encodings +endif + +# Don't build the preloadable library, as we don't need it (it's only +# for LD_PRELOAD to replace glibc's iconv, but we never build libiconv +# when glibc is used). And it causes problems for static only builds. +define LIBICONV_DISABLE_PRELOAD + $(SED) '/preload/d' $(@D)/Makefile.in +endef +LIBICONV_PRE_CONFIGURE_HOOKS += LIBICONV_DISABLE_PRELOAD + +$(eval $(autotools-package)) + +# Configurations where the toolchain supports locales and the libiconv +# package is enabled are incorrect, because the toolchain already +# provides libiconv functionality, and having both confuses packages. +ifeq ($(BR2_PACKAGE_LIBICONV)$(BR2_ENABLE_LOCALE),yy) +$(error Libiconv should never be enabled when the toolchain supports locales. Report this failure to Buildroot developers) +endif diff --git a/package/libid3tag/Config.in b/package/libid3tag/Config.in new file mode 100644 index 00000000..869b9f7f --- /dev/null +++ b/package/libid3tag/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBID3TAG + bool "libid3tag" + select BR2_PACKAGE_ZLIB + help + ID3 tag reading library from the MAD project. + + http://www.underbit.com/products/mad/ diff --git a/package/libid3tag/id3tag.pc b/package/libid3tag/id3tag.pc new file mode 100644 index 00000000..63d09eee --- /dev/null +++ b/package/libid3tag/id3tag.pc @@ -0,0 +1,12 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: id3tag +Description: ID3 tag reading library +Version: 0.15.1b +Requires: +Libs: -L${libdir} -lid3tag +Libs.private: -lz +Cflags: -I${includedir} diff --git a/package/libid3tag/libid3tag.hash b/package/libid3tag/libid3tag.hash new file mode 100644 index 00000000..9aa1d002 --- /dev/null +++ b/package/libid3tag/libid3tag.hash @@ -0,0 +1,7 @@ +# From http://snapshot.debian.org/archive/debian/20190310T213528Z/pool/main/libi/libid3tag/libid3tag_0.15.1b-14.dsc +sha256 63da4f6e7997278f8a3fef4c6a372d342f705051d1eeb6a46a86b03610e26151 libid3tag_0.15.1b.orig.tar.gz +sha256 f174cafe02bef25a9ad8cb7f9ce80119147297a7036f50878e85ac0d7ae09c62 libid3tag_0.15.1b-14.debian.tar.xz + +# Hash for license files: +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING +sha256 7f12ad28dc075763e91b91bfa60fad04062380011ddad8f6bac21dd7b1f44367 COPYRIGHT diff --git a/package/libid3tag/libid3tag.mk b/package/libid3tag/libid3tag.mk new file mode 100644 index 00000000..5d7b219b --- /dev/null +++ b/package/libid3tag/libid3tag.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# libid3tag +# +################################################################################ + +LIBID3TAG_VERSION = 0.15.1b +LIBID3TAG_PATCH = libid3tag_$(LIBID3TAG_VERSION)-14.debian.tar.xz +LIBID3TAG_SOURCE = libid3tag_$(LIBID3TAG_VERSION).orig.tar.gz +LIBID3TAG_SITE = \ + http://snapshot.debian.org/archive/debian/20190310T213528Z/pool/main/libi/libid3tag +LIBID3TAG_LICENSE = GPL-2.0+ +LIBID3TAG_LICENSE_FILES = COPYING COPYRIGHT +LIBID3TAG_INSTALL_STAGING = YES +LIBID3TAG_DEPENDENCIES = host-gperf zlib + +# debian/patches/10_utf16.dpatch +LIBID3TAG_IGNORE_CVES += CVE-2004-2779 CVE-2017-11551 + +# debian/patches/11_unknown_encoding.dpatch +LIBID3TAG_IGNORE_CVES += CVE-2017-11550 + +# Force autoreconf to be able to use a more recent libtool script, that +# is able to properly behave in the face of a missing C++ compiler. +LIBID3TAG_AUTORECONF = YES + +define LIBID3TAG_INSTALL_STAGING_PC + $(INSTALL) -D package/libid3tag/id3tag.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/id3tag.pc +endef + +LIBID3TAG_POST_INSTALL_STAGING_HOOKS += LIBID3TAG_INSTALL_STAGING_PC + +$(eval $(autotools-package)) diff --git a/package/libidn/Config.in b/package/libidn/Config.in new file mode 100644 index 00000000..20e0e2b5 --- /dev/null +++ b/package/libidn/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBIDN + bool "libidn" + help + Libidn's purpose is to encode and decode internationalized + domain names. + + http://www.gnu.org/software/libidn/ + +if BR2_PACKAGE_LIBIDN + +config BR2_PACKAGE_LIBIDN_BINARY + bool "idn binary" + help + Install idn command line tool + +endif diff --git a/package/libidn/libidn.hash b/package/libidn/libidn.hash new file mode 100644 index 00000000..65201fdf --- /dev/null +++ b/package/libidn/libidn.hash @@ -0,0 +1,7 @@ +# Locally computed: +sha256 d6c199dcd806e4fe279360cb4b08349a0d39560ed548ffd1ccadda8cdecb4723 libidn-1.42.tar.gz + +# Hash for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYINGv2 +sha256 e6037104443f9a7829b2aa7c5370d0789a7bda3ca65a0b904cdc0c2e285d9195 COPYINGv3 +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 COPYING.LESSERv3 diff --git a/package/libidn/libidn.mk b/package/libidn/libidn.mk new file mode 100644 index 00000000..c7b8b494 --- /dev/null +++ b/package/libidn/libidn.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# libidn +# +################################################################################ + +LIBIDN_VERSION = 1.42 +LIBIDN_SITE = $(BR2_GNU_MIRROR)/libidn +LIBIDN_INSTALL_STAGING = YES +LIBIDN_CONF_ENV = EMACS="no" MAKEINFO=true +LIBIDN_CONF_OPTS = --disable-java --enable-csharp=no +LIBIDN_DEPENDENCIES = host-pkgconf $(TARGET_NLS_DEPENDENCIES) $(if $(BR2_PACKAGE_LIBICONV),libiconv) +LIBIDN_LICENSE = GPL-2.0+, GPL-3.0+, LGPL-3.0+ +LIBIDN_LICENSE_FILES = COPYINGv2 COPYINGv3 COPYING.LESSERv3 +LIBIDN_CPE_ID_VENDOR = gnu + +define LIBIDN_REMOVE_BINARY + rm -f $(TARGET_DIR)/usr/bin/idn +endef + +ifneq ($(BR2_PACKAGE_LIBIDN_BINARY),y) +LIBIDN_POST_INSTALL_TARGET_HOOKS += LIBIDN_REMOVE_BINARY +endif + +define LIBIDN_REMOVE_EMACS_STUFF + rm -rf $(TARGET_DIR)/usr/share/emacs +endef + +LIBIDN_POST_INSTALL_TARGET_HOOKS += LIBIDN_REMOVE_EMACS_STUFF + +$(eval $(autotools-package)) diff --git a/package/libidn2/Config.in b/package/libidn2/Config.in new file mode 100644 index 00000000..38b13789 --- /dev/null +++ b/package/libidn2/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBIDN2 + bool "libidn2" + help + Libidn2 is an implementation of the IDNA2008 + TR46 + specifications (RFC 5890, RFC 5891, RFC 5892, RFC 5893, + TR 46). + + http://www.gnu.org/software/libidn/ + +if BR2_PACKAGE_LIBIDN2 + +config BR2_PACKAGE_LIBIDN2_BINARY + bool "idn2 binary" + help + Install idn2 command line tool + +endif diff --git a/package/libidn2/libidn2.hash b/package/libidn2/libidn2.hash new file mode 100644 index 00000000..3d2a41a0 --- /dev/null +++ b/package/libidn2/libidn2.hash @@ -0,0 +1,8 @@ +# Calculated locally after checking signature +sha256 4c21a791b610b9519b9d0e12b8097bf2f359b12f8dd92647611a929e6bfd7d64 libidn2-2.3.7.tar.gz + +# Hash for license files: +sha256 73483f797a83373fca1b968c11785b98c4fc4803cdc7d3210811ca8b075d6d76 COPYING +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYINGv2 +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 COPYING.LESSERv3 +sha256 01d621eef165cf4d3d3dbb737aa0699178d94c6f18cf87e9dde6db3ca7790f46 COPYING.unicode diff --git a/package/libidn2/libidn2.mk b/package/libidn2/libidn2.mk new file mode 100644 index 00000000..59db3662 --- /dev/null +++ b/package/libidn2/libidn2.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# libidn2 +# +################################################################################ + +LIBIDN2_VERSION = 2.3.7 +LIBIDN2_SITE = $(BR2_GNU_MIRROR)/libidn +LIBIDN2_LICENSE = GPL-2.0+ or LGPL-3.0+ (library) +LIBIDN2_LICENSE_FILES = COPYING COPYINGv2 COPYING.LESSERv3 COPYING.unicode +LIBIDN2_CPE_ID_VENDOR = gnu +LIBIDN2_DEPENDENCIES = \ + host-pkgconf \ + $(TARGET_NLS_DEPENDENCIES) \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) +LIBIDN2_CONF_OPTS = --without-included-libunistring +LIBIDN2_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_LIBUNISTRING),y) +LIBIDN2_DEPENDENCIES += libunistring +LIBIDN2_CONF_OPTS += --with-libunistring-prefix=$(STAGING_DIR)/usr/lib +endif + +ifeq ($(BR2_PACKAGE_LIBIDN2_BINARY),) +define LIBIDN2_REMOVE_BINARY + rm -f $(TARGET_DIR)/usr/bin/idn2 +endef +LIBIDN2_POST_INSTALL_TARGET_HOOKS += LIBIDN2_REMOVE_BINARY +else +LIBIDN2_LICENSE += , GPL-3.0+ (program) +endif + +$(eval $(autotools-package)) diff --git a/package/libiec61850/Config.in b/package/libiec61850/Config.in new file mode 100644 index 00000000..0badc9ba --- /dev/null +++ b/package/libiec61850/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_LIBIEC61850 + bool "libiec61850" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + IEC 61850 is an international standard for + communication systems in Substation Automation Systems + (SAS) and management of Decentralized Energy Resources + (DER). It is seen as one of the communication standards + of the emerging Smart Grid. + + The project libIEC61850 provides a server and client + library for the IEC 61850/MMS, IEC 61850/GOOSE and IEC + 61850-9-2/Sampled Values communication protocols + written in C. It is available under the GPLv3 license. + + http://libiec61850.com + +comment "libiec61850 needs a toolchain w/ C++, threads, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/libiec61850/libiec61850.hash b/package/libiec61850/libiec61850.hash new file mode 100644 index 00000000..be662beb --- /dev/null +++ b/package/libiec61850/libiec61850.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 a0f396a5e2249398f2432bb9698e3aecdb9de11b28e5af68f7fb8b14bc3b2f44 libiec61850-1.5.3.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/libiec61850/libiec61850.mk b/package/libiec61850/libiec61850.mk new file mode 100644 index 00000000..276acce1 --- /dev/null +++ b/package/libiec61850/libiec61850.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# libiec61850 +# +################################################################################ + +LIBIEC61850_VERSION = 1.5.3 +LIBIEC61850_SITE = $(call github,mz-automation,libiec61850,v$(LIBIEC61850_VERSION)) +LIBIEC61850_INSTALL_STAGING = YES +LIBIEC61850_LICENSE = GPL-3.0+ +LIBIEC61850_LICENSE_FILES = COPYING +LIBIEC61850_CPE_ID_VENDOR = mz-automation +LIBIEC61850_CONF_OPTS = -DBUILD_PYTHON_BINDINGS=OFF + +ifeq ($(BR2_PACKAGE_MBEDTLS),y) +LIBIEC61850_DEPENDENCIES += mbedtls +LIBIEC61850_CONF_OPTS += -DCONFIG_USE_EXTERNAL_MBEDTLS_DYNLIB=ON +else +LIBIEC61850_CONF_OPTS += -DCONFIG_USE_EXTERNAL_MBEDTLS_DYNLIB=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/libiio/0001-xml-Fix-compatibility-with-libxml-2-12.patch b/package/libiio/0001-xml-Fix-compatibility-with-libxml-2-12.patch new file mode 100644 index 00000000..56c272aa --- /dev/null +++ b/package/libiio/0001-xml-Fix-compatibility-with-libxml-2-12.patch @@ -0,0 +1,33 @@ +From b1170cacff24cdfd3858edc2285c51cadef11488 Mon Sep 17 00:00:00 2001 +From: Jan Tojnar +Date: Sun, 10 Dec 2023 21:52:05 +0100 +Subject: [PATCH] xml: Fix compatibility with libxml 2.12 + +libxml 2.12.0 reorganized includes, resulting in the following no longer being in scope: + +- XML_PARSE_DTDVALID +- xmlReadMemory +- xmlReadFile +- xmlCleanupParser + +Signed-off-by: Jan Tojnar +(cherry picked from commit bb688d04294dda45e68dfaf13e3bc1187841e52a) + +Upstream: https://github.com/analogdevicesinc/libiio/commit/b1170cacff24cdfd3858edc2285c51cadef11488 +Signed-off-by: Fabrice Fontaine +--- + xml.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/xml.c b/xml.c +index 33f026103..3eaed92b3 100644 +--- a/xml.c ++++ b/xml.c +@@ -10,6 +10,7 @@ + #include "iio-private.h" + + #include ++#include + #include + #include + diff --git a/package/libiio/Config.in b/package/libiio/Config.in new file mode 100644 index 00000000..21c3a3b4 --- /dev/null +++ b/package/libiio/Config.in @@ -0,0 +1,98 @@ +config BR2_PACKAGE_LIBIIO + bool "libiio" + select BR2_PACKAGE_LIBIIO_LOCAL_BACKEND if !BR2_PACKAGE_LIBIIO_XML_BACKEND + help + Libiio is a library to ease the development of software + interfacing Linux Industrial I/O (IIO) devices. + + http://wiki.analog.com/resources/tools-software/linux-software/libiio + +if BR2_PACKAGE_LIBIIO + +config BR2_PACKAGE_LIBIIO_LOCAL_BACKEND + bool "Local backend" + default y + help + Enable the local backend of the library. + +config BR2_PACKAGE_LIBIIO_XML_BACKEND + bool "XML backend" + default y + select BR2_PACKAGE_LIBXML2 + help + Enable the XML backend of the library. + +config BR2_PACKAGE_LIBIIO_NETWORK_BACKEND + bool "Network backend" + default y + select BR2_PACKAGE_LIBIIO_XML_BACKEND + help + Enable the network backend of the library. + +config BR2_PACKAGE_LIBIIO_USB_BACKEND + bool "USB backend" + default y + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBIIO_XML_BACKEND + select BR2_PACKAGE_LIBUSB + help + Enable the USB backend of the library. + +comment "The USB backend needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_LIBIIO_SERIAL_BACKEND + bool "Serial backend" + default y + select BR2_PACKAGE_LIBIIO_XML_BACKEND + select BR2_PACKAGE_LIBSERIALPORT + help + Enable the serial backend of the library. + +config BR2_PACKAGE_LIBIIO_IIOD + bool "IIO Daemon" + default y + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBIIO_LOCAL_BACKEND + help + Install the IIO Daemon. + +config BR2_PACKAGE_LIBIIO_IIOD_USBD + bool "USB support in the IIO Daemon (FunctionFS)" + depends on BR2_PACKAGE_LIBIIO_IIOD + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 # usb_functionfs_descs_head_v2 + select BR2_PACKAGE_LIBAIO + help + Add support for USB through FunctionFS with IIOD. + +comment "USB support in the IIO Daemon requires headers >= 3.18" + depends on BR2_PACKAGE_LIBIIO_IIOD + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 + +comment "IIO Daemon needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_LIBIIO_TESTS + bool "Install test programs" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Install the test programs (iio_info, iio_genxml, iio_readdev). + +comment "IIO test programs need a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_LIBIIO_BINDINGS_CSHARP + bool "Install C# bindings" + depends on BR2_PACKAGE_MONO + help + Install the C# bindings. + +config BR2_PACKAGE_LIBIIO_BINDINGS_PYTHON + bool "Install Python bindings" + depends on BR2_PACKAGE_PYTHON3 + help + Install the Python bindings. + +endif diff --git a/package/libiio/S99iiod b/package/libiio/S99iiod new file mode 100644 index 00000000..df2f7634 --- /dev/null +++ b/package/libiio/S99iiod @@ -0,0 +1,30 @@ +#!/bin/sh + +# Server-side demuxing by default +IIOD_OPTS=-D + +[ -r /etc/default/iiod ] && . /etc/default/iiod + +case "$1" in + start) + echo "Starting IIO Server Daemon" + start-stop-daemon -S -b -q -m -p /var/run/iiod.pid -x /usr/sbin/iiod -- $IIOD_OPTS + exit $? + ;; + + stop) + echo "Stopping IIO Server Daemon" + start-stop-daemon -K -q -p /var/run/iiod.pid 2>/dev/null + exit $? + ;; + + restart) + $0 stop + sleep 1 + $0 start + ;; + + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/package/libiio/libiio.hash b/package/libiio/libiio.hash new file mode 100644 index 00000000..0f024af7 --- /dev/null +++ b/package/libiio/libiio.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 21972599a3c143ab1f98002ad2b3f28f4aff927fde5f677478311cd4e517730c libiio-0.25.tar.gz +sha256 102900208eef27b766380135906d431dba87edaa7ec6aa72e6ebd3dd67f3a97b COPYING.txt diff --git a/package/libiio/libiio.mk b/package/libiio/libiio.mk new file mode 100644 index 00000000..733a0c90 --- /dev/null +++ b/package/libiio/libiio.mk @@ -0,0 +1,108 @@ +################################################################################ +# +# libiio +# +################################################################################ + +LIBIIO_VERSION = 0.25 +LIBIIO_SITE = $(call github,analogdevicesinc,libiio,v$(LIBIIO_VERSION)) +LIBIIO_INSTALL_STAGING = YES +LIBIIO_LICENSE = LGPL-2.1+ +LIBIIO_LICENSE_FILES = COPYING.txt + +LIBIIO_CONF_OPTS = -DENABLE_IPV6=ON \ + -DWITH_LOCAL_BACKEND=$(if $(BR2_PACKAGE_LIBIIO_LOCAL_BACKEND),ON,OFF) \ + -DWITH_NETWORK_BACKEND=$(if $(BR2_PACKAGE_LIBIIO_NETWORK_BACKEND),ON,OFF) \ + -DINSTALL_UDEV_RULE=$(if $(BR2_PACKAGE_HAS_UDEV),ON,OFF) \ + -DWITH_TESTS=$(if $(BR2_PACKAGE_LIBIIO_TESTS),ON,OFF) \ + -DWITH_DOC=OFF + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +LIBIIO_CONF_OPTS += -DNO_THREADS=OFF +else +LIBIIO_CONF_OPTS += -DNO_THREADS=ON +endif + +ifeq ($(BR2_PACKAGE_LIBIIO_XML_BACKEND),y) +LIBIIO_DEPENDENCIES += libxml2 +LIBIIO_CONF_OPTS += -DWITH_XML_BACKEND=ON +else +LIBIIO_CONF_OPTS += -DWITH_XML_BACKEND=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBIIO_USB_BACKEND),y) +LIBIIO_DEPENDENCIES += libusb +LIBIIO_CONF_OPTS += -DWITH_USB_BACKEND=ON +else +LIBIIO_CONF_OPTS += -DWITH_USB_BACKEND=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBIIO_SERIAL_BACKEND),y) +LIBIIO_DEPENDENCIES += libserialport +LIBIIO_CONF_OPTS += -DWITH_SERIAL_BACKEND=ON +else +LIBIIO_CONF_OPTS += -DWITH_SERIAL_BACKEND=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBIIO_IIOD),y) +LIBIIO_DEPENDENCIES += host-flex host-bison +LIBIIO_CONF_OPTS += -DWITH_IIOD=ON +else +LIBIIO_CONF_OPTS += -DWITH_IIOD=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBIIO_IIOD_USBD),y) +LIBIIO_DEPENDENCIES += libaio +LIBIIO_CONF_OPTS += -DWITH_IIOD_USBD=ON +else +LIBIIO_CONF_OPTS += -DWITH_IIOD_USBD=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBAIO),y) +LIBIIO_DEPENDENCIES += libaio +LIBIIO_CONF_OPTS += -DWITH_AIO=ON +else +LIBIIO_CONF_OPTS += -DWITH_AIO=OFF +endif + +ifeq ($(BR2_PACKAGE_AVAHI_LIBAVAHI_CLIENT),y) +LIBIIO_DEPENDENCIES += avahi +LIBIIO_CONF_OPTS += -DHAVE_DNS_SD=ON +else +LIBIIO_CONF_OPTS += -DHAVE_DNS_SD=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBIIO_BINDINGS_PYTHON),y) +LIBIIO_DEPENDENCIES += host-python-setuptools python3 +LIBIIO_CONF_OPTS += \ + -DPYTHON_BINDINGS=ON \ + -DPYTHON_EXECUTABLE=$(HOST_DIR)/bin/python3 +else +LIBIIO_CONF_OPTS += -DPYTHON_BINDINGS=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBIIO_BINDINGS_CSHARP),y) +define LIBIIO_INSTALL_CSHARP_BINDINGS_TO_TARGET + $(HOST_DIR)/bin/gacutil -root $(TARGET_DIR)/usr/lib -i \ + $(TARGET_DIR)/usr/lib/cli/libiio-sharp-$(LIBIIO_VERSION)/libiio-sharp.dll +endef +define LIBIIO_INSTALL_CSHARP_BINDINGS_TO_STAGING + $(HOST_DIR)/bin/gacutil -root $(STAGING_DIR)/usr/lib -i \ + $(STAGING_DIR)/usr/lib/cli/libiio-sharp-$(LIBIIO_VERSION)/libiio-sharp.dll +endef +LIBIIO_POST_INSTALL_TARGET_HOOKS += LIBIIO_INSTALL_CSHARP_BINDINGS_TO_TARGET +LIBIIO_POST_INSTALL_STAGING_HOOKS += LIBIIO_INSTALL_CSHARP_BINDINGS_TO_STAGING +LIBIIO_DEPENDENCIES += mono +LIBIIO_CONF_OPTS += -DCSHARP_BINDINGS=ON +else +LIBIIO_CONF_OPTS += -DCSHARP_BINDINGS=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBIIO_IIOD),y) +define LIBIIO_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/libiio/S99iiod \ + $(TARGET_DIR)/etc/init.d/S99iiod +endef +endif + +$(eval $(cmake-package)) diff --git a/package/libilbc/Config.in b/package/libilbc/Config.in new file mode 100644 index 00000000..89d5db2f --- /dev/null +++ b/package/libilbc/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBILBC + bool "libilbc" + help + iLBC (internet Low Bitrate Codec) is a FREE speech codec + suitable for robust voice communication over IP. + + http://www.webrtc.org/license-rights/ilbc-freeware diff --git a/package/libilbc/libilbc.hash b/package/libilbc/libilbc.hash new file mode 100644 index 00000000..bd0bf89d --- /dev/null +++ b/package/libilbc/libilbc.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 ba11bc22e353887cd7c605a25a5b9bac464f11f8cb103f652e095ae7e0f04f77 libilbc-829b08c7902ceb87a261279fabb36b6d523c6e07-git4.tar.gz +sha256 b7f4cbb4a12cd11a3d1aeda9bd17c99f59b054de4b3ee53045531cd2fa74dd2a gips_iLBClicense.pdf diff --git a/package/libilbc/libilbc.mk b/package/libilbc/libilbc.mk new file mode 100644 index 00000000..06d94eb3 --- /dev/null +++ b/package/libilbc/libilbc.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libilbc +# +################################################################################ + +LIBILBC_VERSION = 829b08c7902ceb87a261279fabb36b6d523c6e07 +LIBILBC_SITE = https://freeswitch.org/stash/scm/sd/libilbc.git +LIBILBC_SITE_METHOD = git +LIBILBC_LICENSE = Global IP Sound iLBC Public License v2.0 +LIBILBC_LICENSE_FILES = gips_iLBClicense.pdf +LIBILBC_AUTORECONF = YES +LIBILBC_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/libimxvpuapi/Config.in b/package/libimxvpuapi/Config.in new file mode 100644 index 00000000..8b8b839c --- /dev/null +++ b/package/libimxvpuapi/Config.in @@ -0,0 +1,16 @@ +comment "libimxvpuapi needs an i.MX platform with VPU support" + depends on BR2_arm + depends on !BR2_PACKAGE_FREESCALE_IMX_HAS_VPU + +config BR2_PACKAGE_LIBIMXVPUAPI + bool "libimxvpuapi" + depends on BR2_arm # Only relevant for i.MX + depends on BR2_PACKAGE_FREESCALE_IMX_HAS_VPU + select BR2_PACKAGE_IMX_VPU + help + This library provides an API for using the iMX6 VPU video + engine. It is an alternative to Freescale's VPU + wrapper. Both the wrapper and this library are layered on + top of imx-vpu, the low-level iMX6 VPU interface. + + https://github.com/Freescale/libimxvpuapi diff --git a/package/libimxvpuapi/libimxvpuapi.hash b/package/libimxvpuapi/libimxvpuapi.hash new file mode 100644 index 00000000..1ab5196c --- /dev/null +++ b/package/libimxvpuapi/libimxvpuapi.hash @@ -0,0 +1,3 @@ +# locally computed hash +sha256 7151e10a24929935bada1d3d87626f17e411575b3a4ac0d86440999ad0100a55 libimxvpuapi-0.10.3.tar.gz +sha256 4bb33cc4cd956b56b779b501f18cae46a9e26f8c8500cca86ed758b8bc5e1788 LICENSE diff --git a/package/libimxvpuapi/libimxvpuapi.mk b/package/libimxvpuapi/libimxvpuapi.mk new file mode 100644 index 00000000..d8f214b9 --- /dev/null +++ b/package/libimxvpuapi/libimxvpuapi.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libimxvpuapi +# +################################################################################ + +LIBIMXVPUAPI_VERSION = 0.10.3 +LIBIMXVPUAPI_SITE = $(call github,Freescale,libimxvpuapi,$(LIBIMXVPUAPI_VERSION)) +LIBIMXVPUAPI_LICENSE = LGPL-2.1+ +LIBIMXVPUAPI_LICENSE_FILES = LICENSE +LIBIMXVPUAPI_DEPENDENCIES = host-pkgconf host-python3 imx-vpu +LIBIMXVPUAPI_INSTALL_STAGING = YES +LIBIMXVPUAPI_NEEDS_EXTERNAL_WAF = YES + +$(eval $(waf-package)) diff --git a/package/libinput/Config.in b/package/libinput/Config.in new file mode 100644 index 00000000..1a8fcc7e --- /dev/null +++ b/package/libinput/Config.in @@ -0,0 +1,39 @@ +config BR2_PACKAGE_LIBINPUT + bool "libinput" + depends on BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_LIBEVDEV + select BR2_PACKAGE_MTDEV + help + libinput is a library to handle input devices in Wayland + compositors and to provide a generic X.Org input driver. + It provides device detection, device handling, input device + event processing and abstraction so minimize the amount of + custom input code compositors need to provide the common + set of functionality that users expect. + + http://freedesktop.org/wiki/Software/libinput/ + +if BR2_PACKAGE_LIBINPUT + +config BR2_PACKAGE_LIBINPUT_PYTHON_TOOLS + bool "install python tools " + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_LIBEVDEV # runtime + select BR2_PACKAGE_PYTHON_PYUDEV # runtime + select BR2_PACKAGE_PYTHON_PYYAML # runtime + help + Install python tools: + libinput-analyze-per-slot-delta, + libinput-analyze-recording, + libinput-analyze-touch-down-state, + libinput-measure-fuzz, + libinput-measure-touchpad-pressure, + libinput-measure-touchpad-size, + libinput-measure-touchpad-tap, + libinput-measure-touch-size, + libinput-replay + +endif + +comment "libinput needs udev /dev management" + depends on !BR2_PACKAGE_HAS_UDEV diff --git a/package/libinput/libinput.hash b/package/libinput/libinput.hash new file mode 100644 index 00000000..2ab56e48 --- /dev/null +++ b/package/libinput/libinput.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 8c582b86c6865aaee2516ee96b299cef60c98e113d1391bbd2683eac08221a07 libinput-1.26.0.tar.bz2 + +# License files +sha256 80de50b2022a840db044c56db804ca3565600a692c0714babface587acc6d1b0 COPYING diff --git a/package/libinput/libinput.mk b/package/libinput/libinput.mk new file mode 100644 index 00000000..3b5070c8 --- /dev/null +++ b/package/libinput/libinput.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# libinput +# +################################################################################ + +LIBINPUT_VERSION = 1.26.0 +LIBINPUT_SOURCE = libinput-$(LIBINPUT_VERSION).tar.bz2 +LIBINPUT_SITE = https://gitlab.freedesktop.org/libinput/libinput/-/archive/$(LIBINPUT_VERSION) +LIBINPUT_DEPENDENCIES = host-pkgconf libevdev mtdev udev +LIBINPUT_INSTALL_STAGING = YES +LIBINPUT_LICENSE = MIT +LIBINPUT_LICENSE_FILES = COPYING +LIBINPUT_CPE_ID_VENDOR = freedesktop +# Tests need fork, so just disable them everywhere. +LIBINPUT_CONF_OPTS = -Dtests=false -Dlibwacom=false -Ddocumentation=false + +ifeq ($(BR2_PACKAGE_LIBGTK3),y) +LIBINPUT_CONF_OPTS += -Ddebug-gui=true +LIBINPUT_DEPENDENCIES += libgtk3 +ifeq ($(BR2_PACKAGE_WAYLAND),y) +LIBINPUT_DEPENDENCIES += wayland +endif +ifeq ($(BR2_PACKAGE_WAYLAND_PROTOCOLS),y) +LIBINPUT_DEPENDENCIES += wayland-protocols +endif +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) +LIBINPUT_DEPENDENCIES += xlib_libX11 +endif +else +LIBINPUT_CONF_OPTS += -Ddebug-gui=false +endif + +ifeq ($(BR2_PACKAGE_LIBINPUT_PYTHON_TOOLS),) +LIBINPUT_PYTHON_TOOLS = libinput-analyze-per-slot-delta \ + libinput-analyze-recording \ + libinput-analyze-touch-down-state \ + libinput-measure-fuzz \ + libinput-measure-touchpad-pressure \ + libinput-measure-touchpad-size \ + libinput-measure-touchpad-tap \ + libinput-measure-touch-size \ + libinput-replay + +define LIBINPUT_REMOVE_UNNEEDED_FILES + $(foreach f,$(LIBINPUT_PYTHON_TOOLS), \ + rm -f $(TARGET_DIR)/usr/libexec/libinput/$(f) + ) +endef +LIBINPUT_POST_INSTALL_TARGET_HOOKS += LIBINPUT_REMOVE_UNNEEDED_FILES +endif + +$(eval $(meson-package)) diff --git a/package/libiqrf/0001-cmake-handle-static-library-and-find-required-thread.patch b/package/libiqrf/0001-cmake-handle-static-library-and-find-required-thread.patch new file mode 100644 index 00000000..7f460c13 --- /dev/null +++ b/package/libiqrf/0001-cmake-handle-static-library-and-find-required-thread.patch @@ -0,0 +1,45 @@ +From 46660112b76664473cc98b8ae6c863fd27c27d2d Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Fri, 29 Aug 2014 23:40:59 +0200 +Subject: [PATCH] cmake: handle static library and find required thread + module + +Signed-off-by: Samuel Martin +--- + CMakeLists.txt | 2 ++ + src/CMakeLists.txt | 4 +++- + 2 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 79f644c..7779a2a 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -6,7 +6,9 @@ enable_testing() + # use local module (for Findlibusb-1.0.cmake) + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/") + ++find_package(Threads REQUIRED) + find_package(libusb-1.0 REQUIRED) ++ + if (NOT LIBUSB_1_FOUND) + message(FATAL_ERROR "libusb-1.0 not installed. (try apt-get install libusb-1.0-0-dev)") + endif (NOT LIBUSB_1_FOUND) +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 149d198..0597ccd 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -18,8 +18,10 @@ set (iqrf_sources + + include_directories ("${LIBUSB_1_INCLUDE_DIRS}") + +-add_library(iqrf SHARED ${iqrf_sources} ${iqrf_headers}) ++add_library(iqrf ${iqrf_sources} ${iqrf_headers}) ++ + target_link_libraries(iqrf ${LIBUSB_1_LIBRARIES}) ++target_link_libraries(iqrf ${CMAKE_THREAD_LIBS_INIT}) + + set_target_properties(iqrf PROPERTIES + VERSION "${iqrf_version_major}.${iqrf_version_minor}" +-- +2.1.0 + diff --git a/package/libiqrf/0002-use-only-c-language.patch b/package/libiqrf/0002-use-only-c-language.patch new file mode 100644 index 00000000..2f1c23c2 --- /dev/null +++ b/package/libiqrf/0002-use-only-c-language.patch @@ -0,0 +1,29 @@ +Use only the C language + +libirqf is written completely in C, but by default, CMake assumes that +both C and C++ are used, and therefore verifies that a C++ compiler is +installed. This may not necessarily be the case for a C-only package +in Buildroot. + +Signed-off-by: Thomas Petazzoni + +Index: b/src/CMakeLists.txt +=================================================================== +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -1,5 +1,3 @@ +-project(iqrf) +- + set (iqrf_version_major 0) + set (iqrf_version_minor 1) + set (iqrf_version_patch 2) +Index: b/CMakeLists.txt +=================================================================== +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,3 +1,5 @@ ++project(iqrf C) ++ + cmake_minimum_required(VERSION 2.8.1) + enable_testing() + diff --git a/package/libiqrf/Config.in b/package/libiqrf/Config.in new file mode 100644 index 00000000..d86a7fd0 --- /dev/null +++ b/package/libiqrf/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBIQRF + bool "libiqrf" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + This library implement specific protocol + which is used for communicating with iqrf devices + (http://iqrf.org) over usb. For usb access is used + libusb library. + + https://github.com/nandra/libiqrf + +comment "libiqrf needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/libiqrf/libiqrf.hash b/package/libiqrf/libiqrf.hash new file mode 100644 index 00000000..df749def --- /dev/null +++ b/package/libiqrf/libiqrf.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 8111031dd9dd6093a1927eb32dd7476fe22cfee9190043aa8e4c88003c104b16 libiqrf-0.1.2.tar.gz +sha256 11e0700d7c23604d86fa1e7c54c7caa778d79eeb0035be8f80b5a552224ef015 src/iqrf.c diff --git a/package/libiqrf/libiqrf.mk b/package/libiqrf/libiqrf.mk new file mode 100644 index 00000000..3f4e3e84 --- /dev/null +++ b/package/libiqrf/libiqrf.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libiqrf +# +################################################################################ + +LIBIQRF_VERSION = 0.1.2 +LIBIQRF_SITE = $(call github,nandra,libiqrf,v$(LIBIQRF_VERSION)) +LIBIQRF_INSTALL_STAGING = YES +LIBIQRF_DEPENDENCIES = libusb +LIBIQRF_LICENSE = LGPL-2.1+ +LIBIQRF_LICENSE_FILES = src/iqrf.c + +$(eval $(cmake-package)) diff --git a/package/libiscsi/Config.in b/package/libiscsi/Config.in new file mode 100644 index 00000000..932f8578 --- /dev/null +++ b/package/libiscsi/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBISCSI + bool "libiscsi" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Libiscsi is a client-side library to implement the iSCSI + protocol that can be used to access resource of an iSCSI + Target. + + The library is fully async with regards to iscsi commands and + scsi tasks, but a sync layer is also provided for ease of use + for simpler applications. + + https://github.com/sahlberg/libiscsi + +comment "libiscsi needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libiscsi/libiscsi.hash b/package/libiscsi/libiscsi.hash new file mode 100644 index 00000000..5caecbc5 --- /dev/null +++ b/package/libiscsi/libiscsi.hash @@ -0,0 +1,5 @@ +# Locally computed: +sha256 6321d802103f2a363d3afd9a5ae772de0b4052c84fe6a301ecb576b34e853caa libiscsi-1.20.0.tar.gz +sha256 88e3eccc48722b2a0eaff456dda94b8e8e123848d01f631969bec8e3c6c6eb85 COPYING +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENCE-GPL-2.txt +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENCE-LGPL-2.1.txt diff --git a/package/libiscsi/libiscsi.mk b/package/libiscsi/libiscsi.mk new file mode 100644 index 00000000..ccee77bf --- /dev/null +++ b/package/libiscsi/libiscsi.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libiscsi +# +################################################################################ + +LIBISCSI_VERSION = 1.20.0 +LIBISCSI_SITE = $(call github,sahlberg,libiscsi,$(LIBISCSI_VERSION)) +LIBISCSI_LICENSE = GPL-2.0+, LGPL-2.1+ +LIBISCSI_LICENSE_FILES = COPYING LICENCE-GPL-2.txt LICENCE-LGPL-2.1.txt +LIBISCSI_INSTALL_STAGING = YES +LIBISCSI_AUTORECONF = YES + +LIBISCSI_CONF_OPTS = --disable-examples --disable-werror --disable-manpages \ + --disable-test-tool --disable-tests + +$(eval $(autotools-package)) diff --git a/package/libite/Config.in b/package/libite/Config.in new file mode 100644 index 00000000..80d29791 --- /dev/null +++ b/package/libite/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBITE + bool "libite" + help + Libite is a lightweight library of frog DNA. It can be used + to fill the gaps in any dinosaur project. It holds useful + functions and macros developed by both Finit and the OpenBSD + project. Most notably the string functions: strlcpy(3), + strlcat(3) and the highly useful *BSD sys/queue.h and + sys/tree.h API's. + + Libite is the frog DNA missing in GNU libc. However, -lite + does not aim to become another GLIB! One noticeable gap in + GLIBC is the missing _SAFE macros in the BSD sys/queue.h API + - highly recommended when traversing lists to delete/free + nodes. + + https://github.com/troglobit/libite diff --git a/package/libite/libite.hash b/package/libite/libite.hash new file mode 100644 index 00000000..3abad09b --- /dev/null +++ b/package/libite/libite.hash @@ -0,0 +1,7 @@ +# Upstream .sha256 from GitHub +sha256 0185c3e76874c5821825deaf17cd45e81ce49aaa424e09de5f3665243c59026b libite-2.6.1.tar.xz + +# Locally calculated +sha256 3a2b964c1772d03ab17b73a389ecce9151e0b190a9247817a2c009b16d356422 LICENSE +sha256 c2882adb51555b836f35babc59f618d9ddceadcaa2d1dc80bbd4699614d2cd14 src/chomp.c +sha256 bff7fa7b74324f13a24d56ebb8b49bc9c63ea01836a1c8b5a6afcbbabed62918 src/pidfile.c diff --git a/package/libite/libite.mk b/package/libite/libite.mk new file mode 100644 index 00000000..e4bd8454 --- /dev/null +++ b/package/libite/libite.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libite +# +################################################################################ + +LIBITE_VERSION = 2.6.1 +LIBITE_SOURCE = libite-$(LIBITE_VERSION).tar.xz +LIBITE_SITE = https://github.com/troglobit/libite/releases/download/v$(LIBITE_VERSION) +LIBITE_LICENSE = MIT, X11, ISC, BSD-2-Clause +LIBITE_LICENSE_FILES = LICENSE src/chomp.c src/pidfile.c +LIBITE_INSTALL_STAGING = YES +LIBITE_CONF_OPTS = --without-symlink --disable-doxygen-doc + +$(eval $(autotools-package)) diff --git a/package/libjcat/Config.in b/package/libjcat/Config.in new file mode 100644 index 00000000..3e3718de --- /dev/null +++ b/package/libjcat/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBJCAT + bool "libjcat" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_JSON_GLIB + select BR2_PACKAGE_LIBGLIB2 + help + Library for reading and writing Jcat files. + + https://github.com/hughsie/libjcat + +comment "libjcat needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libjcat/libjcat.hash b/package/libjcat/libjcat.hash new file mode 100644 index 00000000..b6dc8d2f --- /dev/null +++ b/package/libjcat/libjcat.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a6232aeca3c3fab6dbb3bed06ec3832088b49a4b278a7119558d72be60ce921f libjcat-0.2.1.tar.xz +sha256 20c17d8b8c48a600800dfd14f95d5cb9ff47066a9641ddeab48dc54aec96e331 LICENSE diff --git a/package/libjcat/libjcat.mk b/package/libjcat/libjcat.mk new file mode 100644 index 00000000..c365c191 --- /dev/null +++ b/package/libjcat/libjcat.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# libjcat +# +################################################################################ + +LIBJCAT_VERSION = 0.2.1 +LIBJCAT_SITE = https://github.com/hughsie/libjcat/releases/download/$(LIBJCAT_VERSION) +LIBJCAT_SOURCE = libjcat-$(LIBJCAT_VERSION).tar.xz +LIBJCAT_LICENSE = LGPL-2.1+ +LIBJCAT_LICENSE_FILES = LICENSE +LIBJCAT_INSTALL_STAGING = YES +LIBJCAT_DEPENDENCIES = host-pkgconf json-glib libglib2 $(TARGET_NLS_DEPENDENCIES) + +LIBJCAT_LDFLAGS = $(TARGET_NLS_LIBS) + +LIBJCAT_CONF_OPTS = \ + -Dgtkdoc=false \ + -Dtests=false \ + -Ded25519=false \ + -Dman=false \ + -Dcli=true + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +LIBJCAT_DEPENDENCIES += host-vala gobject-introspection +LIBJCAT_CONF_OPTS += -Dintrospection=true -Dvapi=true +else +LIBJCAT_CONF_OPTS += -Dintrospection=false -Dvapi=false +endif + +ifeq ($(BR2_PACKAGE_LIBGPG_ERROR)$(BR2_PACKAGE_LIBGPGME),yy) +LIBJCAT_DEPENDENCIES += libgpg-error libgpgme +LIBJCAT_CONF_OPTS += -Dgpg=true +else +LIBJCAT_CONF_OPTS += -Dgpg=false +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +LIBJCAT_DEPENDENCIES += gnutls +LIBJCAT_CONF_OPTS += -Dpkcs7=true +else +LIBJCAT_CONF_OPTS += -Dpkcs7=false +endif + +$(eval $(meson-package)) diff --git a/package/libjpeg/libjpeg.hash b/package/libjpeg/libjpeg.hash new file mode 100644 index 00000000..5c223b4e --- /dev/null +++ b/package/libjpeg/libjpeg.hash @@ -0,0 +1,3 @@ +# locally computed hash +sha256 04705c110cb2469caa79fb71fba3d7bf834914706e9641a4589485c1f832565b jpegsrc.v9f.tar.gz +sha256 7c25493a9f64fed34d01445467341bda77bc1cdbeccbe33558659ef173fb9ff2 README diff --git a/package/libjpeg/libjpeg.mk b/package/libjpeg/libjpeg.mk new file mode 100644 index 00000000..2eb64e83 --- /dev/null +++ b/package/libjpeg/libjpeg.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# libjpeg +# +################################################################################ + +LIBJPEG_VERSION = 9f +LIBJPEG_SITE = http://www.ijg.org/files +LIBJPEG_SOURCE = jpegsrc.v$(LIBJPEG_VERSION).tar.gz +LIBJPEG_LICENSE = IJG +LIBJPEG_LICENSE_FILES = README +LIBJPEG_INSTALL_STAGING = YES +LIBJPEG_CPE_ID_VENDOR = ijg +LIBJPEG_PROVIDES = jpeg + +define LIBJPEG_REMOVE_USELESS_TOOLS + rm -f $(addprefix $(TARGET_DIR)/usr/bin/,cjpeg djpeg jpegtran rdjpgcom wrjpgcom) +endef + +LIBJPEG_POST_INSTALL_TARGET_HOOKS += LIBJPEG_REMOVE_USELESS_TOOLS + +define LIBJPEG_INSTALL_STAGING_PC + $(INSTALL) -D -m 0644 package/libjpeg/libjpeg.pc.in \ + $(STAGING_DIR)/usr/lib/pkgconfig/libjpeg.pc + version=`sed -e '/^PACKAGE_VERSION/!d;s/PACKAGE_VERSION = \(.*\)/\1/' $(@D)/Makefile` ; \ + $(SED) "s/@PACKAGE_VERSION@/$${version}/" $(STAGING_DIR)/usr/lib/pkgconfig/libjpeg.pc +endef + +LIBJPEG_POST_INSTALL_STAGING_HOOKS += LIBJPEG_INSTALL_STAGING_PC + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libjpeg/libjpeg.pc.in b/package/libjpeg/libjpeg.pc.in new file mode 100644 index 00000000..59220cac --- /dev/null +++ b/package/libjpeg/libjpeg.pc.in @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=/usr +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: libjpeg +Description: A JPEG codec that provides the libjpeg API +Version: @PACKAGE_VERSION@ +Libs: -L${libdir} -ljpeg +Cflags: -I${includedir} diff --git a/package/libjson/0001-fix-broken-makefile.patch b/package/libjson/0001-fix-broken-makefile.patch new file mode 100644 index 00000000..8ceb0cac --- /dev/null +++ b/package/libjson/0001-fix-broken-makefile.patch @@ -0,0 +1,16 @@ +Fix the broken libjson makefile. + +Signed-off-by: Simon Dawson + +diff -Nurp a/makefile b/makefile +--- a/makefile 2012-05-30 10:15:42.000000000 +0100 ++++ b/makefile 2013-03-27 18:45:34.814670534 +0000 +@@ -170,7 +170,7 @@ include_path = $(prefix)/$(includedi + # Usage check + ifdef CXXFLAGS + ifdef BUILD_TYPE +- $(error CXXFLAGS and BUILD_TYPE are mutually exclusive) ++$(error CXXFLAGS and BUILD_TYPE are mutually exclusive) + endif + endif + diff --git a/package/libjson/Config.in b/package/libjson/Config.in new file mode 100644 index 00000000..50a99311 --- /dev/null +++ b/package/libjson/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBJSON + bool "libjson" + depends on BR2_INSTALL_LIBSTDCPP + help + A JSON reader and writer which is super-efficient and usually + runs circles around other JSON libraries. + + http://sourceforge.net/projects/libjson/ + +comment "libjson needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/libjson/libjson.hash b/package/libjson/libjson.hash new file mode 100644 index 00000000..3d9b26a5 --- /dev/null +++ b/package/libjson/libjson.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 07267a3951038ee2e02d26cc41bf8e275668c38f751240d3e78dc979182e7376 libjson_7.6.1.zip +sha256 bd62d605bef39ab7ae39f6fa333ba513edb93cfcd56c9c966f1d34e31ff7c69b License.txt diff --git a/package/libjson/libjson.mk b/package/libjson/libjson.mk new file mode 100644 index 00000000..73268c9c --- /dev/null +++ b/package/libjson/libjson.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# libjson +# +################################################################################ + +LIBJSON_VERSION = 7.6.1 +LIBJSON_SITE = http://downloads.sourceforge.net/project/libjson +LIBJSON_SOURCE = libjson_$(LIBJSON_VERSION).zip +LIBJSON_INSTALL_STAGING = YES +LIBJSON_LICENSE = BSD-2-Clause +LIBJSON_LICENSE_FILES = License.txt + +LIBJSON_CXXFLAGS = $(TARGET_CFLAGS) -DNDEBUG -std=c++11 + +ifeq ($(BR2_STATIC_LIBS),y) +LIBJSON_MAKE_OPTS += SHARED=0 +else +LIBJSON_MAKE_OPTS += SHARED=1 +LIBJSON_CXXFLAGS += -fPIC +endif + +LIBJSON_MAKE_OPTS += BUILD_TYPE= CXXFLAGS="$(LIBJSON_CXXFLAGS)" + +define LIBJSON_EXTRACT_CMDS + $(UNZIP) -d $(@D) $(LIBJSON_DL_DIR)/$(LIBJSON_SOURCE) + mv $(@D)/libjson/* $(@D) + $(RM) -r $(@D)/libjson + $(SED) '/ldconfig/d' $(@D)/makefile +endef + +define LIBJSON_BUILD_CMDS + mkdir -p $(@D)/Objects_$(if $(BR2_STATIC_LIBS),static,shared) \ + $(@D)/_internal/Source/Dependencies + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + $(LIBJSON_MAKE_OPTS) -C $(@D) +endef + +define LIBJSON_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + $(LIBJSON_MAKE_OPTS) prefix=$(TARGET_DIR)/usr install -C $(@D) +endef + +define LIBJSON_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + $(LIBJSON_MAKE_OPTS) prefix=$(STAGING_DIR)/usr install -C $(@D) +endef + +$(eval $(generic-package)) diff --git a/package/libjwt/Config.in b/package/libjwt/Config.in new file mode 100644 index 00000000..39d1665e --- /dev/null +++ b/package/libjwt/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBJWT + bool "libjwt" + select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_GNUTLS + select BR2_PACKAGE_JANSSON + help + JSON Web Tokens are an open, industry standard RFC 7519 + method for representing claims securely between two parties. + + https://github.com/benmcollins/libjwt diff --git a/package/libjwt/libjwt.hash b/package/libjwt/libjwt.hash new file mode 100644 index 00000000..adc32c3a --- /dev/null +++ b/package/libjwt/libjwt.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 b8b257da9b64ba9075fce3a3f670ae02dee7fc95ab7009a2e1ad60905e3f8d48 libjwt-1.17.0.tar.bz2 +sha256 3f3d9e0024b1921b067d6f7f88deb4a60cbe7a78e76c64e3f1d7fc3b779b9d04 LICENSE diff --git a/package/libjwt/libjwt.mk b/package/libjwt/libjwt.mk new file mode 100644 index 00000000..f143ba4b --- /dev/null +++ b/package/libjwt/libjwt.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# libjwt +# +################################################################################ + +LIBJWT_VERSION = 1.17.0 +LIBJWT_SITE = https://github.com/benmcollins/libjwt/releases/download/v$(LIBJWT_VERSION) +LIBJWT_SOURCE = libjwt-$(LIBJWT_VERSION).tar.bz2 +LIBJWT_DEPENDENCIES = host-pkgconf jansson +LIBJWT_INSTALL_STAGING = YES +LIBJWT_LICENSE = MPL-2.0 +LIBJWT_LICENSE_FILES = LICENSE +LIBJWT_CPE_ID_VENDOR = bencollins +LIBJWT_CPE_ID_PRODUCT = jwt_c_library +LIBJWT_CONF_OPTS = --without-examples + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBJWT_CONF_OPTS += --with-openssl +LIBJWT_DEPENDENCIES += openssl +else +LIBJWT_CONF_OPTS += --without-openssl +LIBJWT_DEPENDENCIES += gnutls +endif + +$(eval $(autotools-package)) diff --git a/package/libjxl/Config.in b/package/libjxl/Config.in new file mode 100644 index 00000000..92356029 --- /dev/null +++ b/package/libjxl/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_LIBJXL + bool "libjxl" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # highway + depends on BR2_TOOLCHAIN_HAS_ATOMIC # highway + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP # highway + # libjxl fail to link statically due to libatomic issue + depends on !BR2_STATIC_LIBS + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_81426 + select BR2_HOST_CMAKE_AT_LEAST_3_19 + select BR2_PACKAGE_BROTLI + select BR2_PACKAGE_HIGHWAY + select BR2_PACKAGE_LCMS2 + help + libjxl is the reference implementation of JPEG XL (encoder + and decoder). + + https://github.com/libjxl/libjxl + +comment "libjxl needs a toolchain with C++, threads, gcc >= 7, dynamic library" + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_81426 + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \ + !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/package/libjxl/libjxl.hash b/package/libjxl/libjxl.hash new file mode 100644 index 00000000..4eaadf95 --- /dev/null +++ b/package/libjxl/libjxl.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 e0191411cfcd927eebe5392d030fe4283fe27ba1685ab7265104936e0b4283a6 libjxl-0.10.3.tar.gz +sha256 8405932022a556380c2d8c272eff154a923feb197233f348ce5f7334fb0a5ede LICENSE +sha256 91915f8ae056a68a3c5bdf05d9f6f78bb6903e27a8ca3a8434c9e4ac87300575 PATENTS diff --git a/package/libjxl/libjxl.mk b/package/libjxl/libjxl.mk new file mode 100644 index 00000000..b7fe3e1b --- /dev/null +++ b/package/libjxl/libjxl.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# libjxl +# +################################################################################ + +LIBJXL_VERSION = 0.10.3 +LIBJXL_SITE = $(call github,libjxl,libjxl,v$(LIBJXL_VERSION)) +LIBJXL_LICENSE = BSD-3-Clause +LIBJXL_LICENSE_FILES = LICENSE PATENTS +LIBJXL_CPE_ID_VALID = YES +LIBJXL_INSTALL_STAGING = YES + +LIBJXL_DEPENDENCIES = \ + brotli \ + lcms2 \ + highway + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +LIBJXL_DEPENDENCIES += libpng +endif + +LIBJXL_CONF_OPTS = \ + -DJPEGXL_BUNDLE_LIBPNG=OFF \ + -DJPEGXL_BUNDLE_SKCMS=OFF \ + -DJPEGXL_ENABLE_BENCHMARK=OFF \ + -DJPEGXL_ENABLE_DOXYGEN=OFF \ + -DJPEGXL_ENABLE_EXAMPLES=OFF \ + -DJPEGXL_ENABLE_JNI=OFF \ + -DJPEGXL_ENABLE_JPEGLI=OFF \ + -DJPEGXL_ENABLE_MANPAGES=OFF \ + -DJPEGXL_ENABLE_OPENEXR=OFF \ + -DJPEGXL_ENABLE_SJPEG=OFF \ + -DJPEGXL_ENABLE_SKCMS=OFF + +ifeq ($(BR2_PACKAGE_JPEG_TURBO),y) +LIBJXL_DEPENDENCIES += jpeg-turbo +LIBJXL_CONF_OPTS += -DCMAKE_DISABLE_FIND_PACKAGE_JPEG=OFF +else +LIBJXL_CONF_OPTS += -DCMAKE_DISABLE_FIND_PACKAGE_JPEG=ON +endif + +$(eval $(cmake-package)) diff --git a/package/libkcapi/Config.in b/package/libkcapi/Config.in new file mode 100644 index 00000000..bf9c9527 --- /dev/null +++ b/package/libkcapi/Config.in @@ -0,0 +1,48 @@ +config BR2_PACKAGE_LIBKCAPI + bool "libkcapi" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + help + Linux Kernel Crypto API userspace interface library + + http://www.chronox.de/libkcapi.html + +if BR2_PACKAGE_LIBKCAPI + +config BR2_PACKAGE_LIBKCAPI_ASYM + bool "build asymmetric ciphers library" + help + Using this library requires the Linux kernel to be patched + with libkcapi Linux kernel patches found in libkcapi + kernel-patches/ directory. + +config BR2_PACKAGE_LIBKCAPI_DGSTAPP + bool "build dgst application" + +config BR2_PACKAGE_LIBKCAPI_ENCAPP + bool "build enc application" + +config BR2_PACKAGE_LIBKCAPI_HASHER + bool "build hasher application" + depends on !BR2_STATIC_LIBS # dlfcn.h + +comment "hasher application needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_LIBKCAPI_KPP + bool "build KPP library" + help + Using this library requires the Linux kernel to be patched + with libkcapi Linux kernel patches found in libkcapi + kernel-patches/ directory. + +config BR2_PACKAGE_LIBKCAPI_RNGAPP + bool "build rng read application" + +config BR2_PACKAGE_LIBKCAPI_SPEED + bool "build speed-test program" + +config BR2_PACKAGE_LIBKCAPI_TEST + bool "build test program" + depends on BR2_USE_MMU # fork() + +endif diff --git a/package/libkcapi/libkcapi.hash b/package/libkcapi/libkcapi.hash new file mode 100644 index 00000000..172b6cbc --- /dev/null +++ b/package/libkcapi/libkcapi.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 15b550c14165a266fa233b485d029d54508da593dfa6d1731ec5d5a285c716e9 libkcapi-1.5.0.tar.xz +sha256 00e0a844d67b190580a9dc5943e555a3d0b2158e21d01a25526762c619979326 COPYING +sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 COPYING.gplv2 +sha256 13aa749a5b0a454917a944ed8fffc530b784f5ead522b1aacaf4ec8aa55a6239 COPYING.bsd diff --git a/package/libkcapi/libkcapi.mk b/package/libkcapi/libkcapi.mk new file mode 100644 index 00000000..7a79dd55 --- /dev/null +++ b/package/libkcapi/libkcapi.mk @@ -0,0 +1,69 @@ +################################################################################ +# +# libkcapi +# +################################################################################ + +LIBKCAPI_VERSION = 1.5.0 +LIBKCAPI_SOURCE = libkcapi-$(LIBKCAPI_VERSION).tar.xz +LIBKCAPI_SITE = http://www.chronox.de/libkcapi/releases/$(LIBKCAPI_VERSION) +LIBKCAPI_AUTORECONF = YES +LIBKCAPI_INSTALL_STAGING = YES +LIBKCAPI_LICENSE = BSD-3-Clause (library), BSD-3-Clause or GPL-2.0 (programs) +LIBKCAPI_LICENSE_FILES = COPYING COPYING.gplv2 COPYING.bsd +LIBKCAPI_CONF_ENV = \ + ac_cv_path_DB2PDF="" \ + ac_cv_path_DB2PS="" \ + ac_cv_path_XMLTO="" +LIBKCAPI_CONF_OPTS = --disable-werror +LIBKCAPI_MAKE_OPTS = CPPFLAGS="$(TARGET_CPPFLAGS)" + +ifeq ($(BR2_PACKAGE_LIBKCAPI_ASYM),y) +LIBKCAPI_CONF_OPTS += --enable-lib-asym +else +LIBKCAPI_CONF_OPTS += --disable-lib-asym +endif + +ifeq ($(BR2_PACKAGE_LIBKCAPI_DGSTAPP),y) +LIBKCAPI_CONF_OPTS += --enable-kcapi-dgstapp +else +LIBKCAPI_CONF_OPTS += --disable-kcapi-dgstapp +endif + +ifeq ($(BR2_PACKAGE_LIBKCAPI_ENCAPP),y) +LIBKCAPI_CONF_OPTS += --enable-kcapi-encapp +else +LIBKCAPI_CONF_OPTS += --disable-kcapi-encapp +endif + +ifeq ($(BR2_PACKAGE_LIBKCAPI_HASHER),y) +LIBKCAPI_CONF_OPTS += --enable-kcapi-hasher +else +LIBKCAPI_CONF_OPTS += --disable-kcapi-hasher +endif + +ifeq ($(BR2_PACKAGE_LIBKCAPI_KPP),y) +LIBKCAPI_CONF_OPTS += --enable-lib-kpp +else +LIBKCAPI_CONF_OPTS += --disable-lib-kpp +endif + +ifeq ($(BR2_PACKAGE_LIBKCAPI_RNGAPP),y) +LIBKCAPI_CONF_OPTS += --enable-kcapi-rngapp +else +LIBKCAPI_CONF_OPTS += --disable-kcapi-rngapp +endif + +ifeq ($(BR2_PACKAGE_LIBKCAPI_SPEED),y) +LIBKCAPI_CONF_OPTS += --enable-kcapi-speed +else +LIBKCAPI_CONF_OPTS += --disable-kcapi-speed +endif + +ifeq ($(BR2_PACKAGE_LIBKCAPI_TEST),y) +LIBKCAPI_CONF_OPTS += --enable-kcapi-test +else +LIBKCAPI_CONF_OPTS += --disable-kcapi-test +endif + +$(eval $(autotools-package)) diff --git a/package/libkrb5/Config.in b/package/libkrb5/Config.in new file mode 100644 index 00000000..3357d4ad --- /dev/null +++ b/package/libkrb5/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_LIBKRB5 + bool "libkrb5" + # needs fork() + depends on BR2_USE_MMU + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4 if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 if BR2_PACKAGE_LIBOPENSSL + help + Kerberos is a system for authenticating users and services + on a network. Kerberos is a trusted third-party service. + That means that there is a third party (the Kerberos server) + that is trusted by all the entities on the network (users + and services, usually called "principals"). This is the MIT + reference implementation of Kerberos V5. + + https://web.mit.edu/kerberos/ + +comment "libkrb5 needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/package/libkrb5/libkrb5.hash b/package/libkrb5/libkrb5.hash new file mode 100644 index 00000000..02c0e339 --- /dev/null +++ b/package/libkrb5/libkrb5.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +sha256 9560941a9d843c0243a71b17a7ac6fe31c7cebb5bce3983db79e52ae7e850491 krb5-1.21.2.tar.gz + +# Hash for license file: +sha256 0d5373486138cb176c063db98274b4c4ab6ef3518c4191360736384b780306c2 NOTICE diff --git a/package/libkrb5/libkrb5.mk b/package/libkrb5/libkrb5.mk new file mode 100644 index 00000000..08bc74eb --- /dev/null +++ b/package/libkrb5/libkrb5.mk @@ -0,0 +1,89 @@ +################################################################################ +# +# libkrb5 +# +################################################################################ + +LIBKRB5_VERSION_MAJOR = 1.21 +LIBKRB5_VERSION = $(LIBKRB5_VERSION_MAJOR).2 +LIBKRB5_SITE = https://web.mit.edu/kerberos/dist/krb5/$(LIBKRB5_VERSION_MAJOR) +LIBKRB5_SOURCE = krb5-$(LIBKRB5_VERSION).tar.gz +LIBKRB5_SUBDIR = src +LIBKRB5_LICENSE = MIT, BSD-2-Clause, BSD-3-Clause, BSD-4-Clause, others +LIBKRB5_LICENSE_FILES = NOTICE +LIBKRB5_CPE_ID_VENDOR = mit +LIBKRB5_CPE_ID_PRODUCT = kerberos_5 +LIBKRB5_DEPENDENCIES = host-bison $(TARGET_NLS_DEPENDENCIES) +LIBKRB5_INSTALL_STAGING = YES + +# The configure script uses AC_TRY_RUN tests to check for those values, +# which doesn't work in a cross-compilation scenario. Therefore, +# we feed the configure script with the correct answer for those tests +LIBKRB5_CONF_ENV = \ + ac_cv_printf_positional=yes \ + ac_cv_func_regcomp=yes \ + krb5_cv_attr_constructor_destructor=yes,yes \ + LIBS=$(TARGET_NLS_LIBS) + +# Never use the host packages +LIBKRB5_CONF_OPTS = \ + --without-system-db \ + --without-system-et \ + --without-system-ss \ + --without-system-verto \ + --without-tcl \ + --disable-rpath + +# libkrb5 has some assembly function that is not present in Thumb mode: +# Error: selected processor does not support `mcr p15,0,r2,c7,c10,5' in Thumb mode +# so, we desactivate Thumb mode +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +LIBKRB5_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -marm" +endif + +# Enabling static and shared at the same time is not supported +ifeq ($(BR2_SHARED_STATIC_LIBS),y) +LIBKRB5_CONF_OPTS += --disable-static +endif + +ifeq ($(BR2_PACKAGE_OPENLDAP),y) +LIBKRB5_CONF_OPTS += --with-ldap +LIBKRB5_DEPENDENCIES += openldap +else +LIBKRB5_CONF_OPTS += --without-ldap +endif + +ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) +LIBKRB5_CONF_OPTS += \ + --enable-pkinit \ + --with-crypto-impl=openssl \ + --with-spake-openssl \ + --with-tls-impl=openssl +LIBKRB5_DEPENDENCIES += openssl +else +LIBKRB5_CONF_OPTS += \ + --disable-pkinit \ + --with-crypto-impl=builtin \ + --without-spake-openssl \ + --without-tls-impl +endif + +ifeq ($(BR2_PACKAGE_LIBEDIT),y) +LIBKRB5_CONF_OPTS += --with-libedit +LIBKRB5_DEPENDENCIES += host-pkgconf libedit +else +LIBKRB5_CONF_OPTS += --without-libedit +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +LIBKRB5_CONF_OPTS += --with-readline +LIBKRB5_DEPENDENCIES += readline +else +LIBKRB5_CONF_OPTS += --without-readline +endif + +ifneq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +LIBKRB5_CONF_OPTS += --disable-thread-support +endif + +$(eval $(autotools-package)) diff --git a/package/libks/0001-CMakeLists.txt-honour-BUILD_TESTING.patch b/package/libks/0001-CMakeLists.txt-honour-BUILD_TESTING.patch new file mode 100644 index 00000000..fbe6cabd --- /dev/null +++ b/package/libks/0001-CMakeLists.txt-honour-BUILD_TESTING.patch @@ -0,0 +1,41 @@ +From c850e04898a9498d447b43bf346365646ff1b19c Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 13 May 2022 23:12:31 +0200 +Subject: [PATCH] CMakeLists.txt: honour BUILD_TESTING + +Allow the user to disable tests through the standard BUILD_TESTING +option: https://cmake.org/cmake/help/latest/module/CTest.html + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/signalwire/libks/pull/125] +--- + CMakeLists.txt | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 5bbac31..37e6bcd 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,5 +1,6 @@ + cmake_minimum_required(VERSION 3.7.2) + ++option(BUILD_TESTING "Build tests" ON) + option(KS_DEBUG_MUTEX "Debug mutexes, only works on linux for now" OFF) + option(KS_DEBUG_SPINLOCK "Debug spinlocks" OFF) + option(KS_DEBUG_POOL "Track pool allocations and provide hooks for rendering them" OFF) +@@ -609,8 +610,10 @@ endif() + #cotire(ks) + + # Add tests +-enable_testing() +-add_subdirectory(tests) ++if (BUILD_TESTING) ++ enable_testing() ++ add_subdirectory(tests) ++endif() + + if (WITH_KS_TEST) + enable_testing() +-- +2.35.1 + diff --git a/package/libks/Config.in b/package/libks/Config.in new file mode 100644 index 00000000..4781d188 --- /dev/null +++ b/package/libks/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBKS + bool "libks" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # pthread_setname_np() + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Foundational support for signalwire C products + + https://github.com/signalwire/libks + +comment "libks needs a toolchain w/ C++, NPTL, dynamic library" + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/package/libks/libks.hash b/package/libks/libks.hash new file mode 100644 index 00000000..de16d0b0 --- /dev/null +++ b/package/libks/libks.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 8525dd943cf970c860cd2596207c7ba6646c9e1f407e350fc0a39b76af75e625 libks-2.0.5.tar.gz +sha256 3aba376a08bf91c95518532e627157f0ee3ab2712d1198463e2b1ac9186dd142 copyright diff --git a/package/libks/libks.mk b/package/libks/libks.mk new file mode 100644 index 00000000..2de6b727 --- /dev/null +++ b/package/libks/libks.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libks +# +################################################################################ + +LIBKS_VERSION = 2.0.5 +LIBKS_SITE = $(call github,signalwire,libks,v$(LIBKS_VERSION)) +LIBKS_LICENSE = MIT +LIBKS_LICENSE_FILES = copyright +LIBKS_INSTALL_STAGING = YES +LIBKS_DEPENDENCIES = openssl util-linux + +$(eval $(cmake-package)) diff --git a/package/libksba/Config.in b/package/libksba/Config.in new file mode 100644 index 00000000..1f25d6db --- /dev/null +++ b/package/libksba/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBKSBA + bool "libksba" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error + select BR2_PACKAGE_LIBGPG_ERROR + help + CMS and X.509 library + + https://www.gnupg.org/related_software/libksba/ diff --git a/package/libksba/libksba.hash b/package/libksba/libksba.hash new file mode 100644 index 00000000..e74cde2c --- /dev/null +++ b/package/libksba/libksba.hash @@ -0,0 +1,10 @@ +# From https://www.gnupg.org/download/integrity_check.html +sha1 1db4222e052656700021a30d517f5aa2f882da4a libksba-1.6.6.tar.bz2 +sha256 5dec033d211559338838c0c4957c73dfdc3ee86f73977d6279640c9cd08ce6a4 libksba-1.6.6.tar.bz2 + +# Hash for license files: +sha256 f9c59ea5a5e1dfdeebcd134e6a594c21eb088cc95f6653ee99ff2e187c105380 AUTHORS +sha256 6197b98c6bf69838c624809c509d84333de1bc847155168c0e84527446a27076 COPYING +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING.GPLv2 +sha256 0abbff814cd00e2b0b6d08395af2b419c1a92026c4b4adacbb65ccda45fa58cf COPYING.GPLv3 +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 COPYING.LGPLv3 diff --git a/package/libksba/libksba.mk b/package/libksba/libksba.mk new file mode 100644 index 00000000..03e45514 --- /dev/null +++ b/package/libksba/libksba.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# libksba +# +################################################################################ + +LIBKSBA_VERSION = 1.6.6 +LIBKSBA_SOURCE = libksba-$(LIBKSBA_VERSION).tar.bz2 +LIBKSBA_SITE = https://gnupg.org/ftp/gcrypt/libksba +LIBKSBA_LICENSE = LGPL-3.0+ or GPL-2.0+ (library, headers), GPL-3.0+ (manual, tests, build system) +LIBKSBA_LICENSE_FILES = AUTHORS COPYING COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv3 +LIBKSBA_CPE_ID_VENDOR = gnupg +LIBKSBA_INSTALL_STAGING = YES +LIBKSBA_DEPENDENCIES = libgpg-error +LIBKSBA_CONF_OPTS = --with-gpg-error-prefix=$(STAGING_DIR)/usr +HOST_LIBKSBA_DEPENDENCIES = host-libgpg-error +HOST_LIBKSBA_CONF_OPTS = --with-gpg-error-prefix=$(HOST_DIR) + +# Force the path to "gpgrt-config" (from the libgpg-error package) to +# avoid using the one on host, if present. +LIBKSBA_CONF_ENV += GPGRT_CONFIG=$(STAGING_DIR)/usr/bin/gpgrt-config +HOST_LIBKSBA_CONF_ENV += GPGRT_CONFIG=$(HOST_DIR)/bin/gpgrt-config + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libldns/Config.in b/package/libldns/Config.in new file mode 100644 index 00000000..696fec97 --- /dev/null +++ b/package/libldns/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBLDNS + bool "libldns" + select BR2_PACKAGE_OPENSSL + help + The goal of ldns is to simplify DNS programming, it supports + recent RFCs like the DNSSEC documents, and allows developers + to easily create software conforming to current RFCs, and + experimental software for current Internet Drafts. + + http://www.nlnetlabs.nl/projects/ldns diff --git a/package/libldns/libldns.hash b/package/libldns/libldns.hash new file mode 100644 index 00000000..ff86ae34 --- /dev/null +++ b/package/libldns/libldns.hash @@ -0,0 +1,7 @@ +# From http://www.nlnetlabs.nl/downloads/ldns/ldns-1.8.3.tar.gz.sha1 +sha1 2796cc49636f68260c9662b60d5a7c9e6eed195c ldns-1.8.3.tar.gz +# From http://www.nlnetlabs.nl/downloads/ldns/ldns-1.8.3.tar.gz.sha256 +sha256 c3f72dd1036b2907e3a56e6acf9dfb2e551256b3c1bbd9787942deeeb70e7860 ldns-1.8.3.tar.gz + +# Hash for license file: +sha256 9e0b1505c358d1a7c79555ee8bd1acbe2985dbc74dd81f3697cebf2161e922e6 LICENSE diff --git a/package/libldns/libldns.mk b/package/libldns/libldns.mk new file mode 100644 index 00000000..d6af6a2b --- /dev/null +++ b/package/libldns/libldns.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# libldns +# +################################################################################ + +LIBLDNS_VERSION = 1.8.3 +LIBLDNS_SOURCE = ldns-$(LIBLDNS_VERSION).tar.gz +LIBLDNS_SITE = http://www.nlnetlabs.nl/downloads/ldns +LIBLDNS_LICENSE = BSD-3-Clause +LIBLDNS_LICENSE_FILES = LICENSE +LIBLDNS_CPE_ID_VENDOR = nlnetlabs +LIBLDNS_CPE_ID_PRODUCT = ldns +LIBLDNS_INSTALL_STAGING = YES +LIBLDNS_DEPENDENCIES = openssl +LIBLDNS_CONF_OPTS = \ + --with-ssl=$(STAGING_DIR)/usr \ + --enable-dane \ + --enable-ecdsa \ + --enable-sha2 \ + --without-examples \ + --without-p5-dns-ldns \ + --without-pyldns \ + --without-pyldnsx + +ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) +LIBLDNS_CONF_OPTS += --enable-dane-verify +else +LIBLDNS_CONF_OPTS += --disable-dane-verify +endif + +ifeq ($(BR2_PACKAGE_LIBOPENSSL_ENGINES),y) +LIBLDNS_CONF_OPTS += --enable-gost +else +LIBLDNS_CONF_OPTS += --disable-gost +endif + +ifeq ($(BR2_STATIC_LIBS),y) +LIBLDNS_DEPENDENCIES += host-pkgconf +# missing -lz breaks configure, add it using pkgconf +LIBLDNS_CONF_ENV += LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs openssl`" +endif + +# the linktest make target fails with static linking, and we are only +# interested in the lib target anyway +LIBLDNS_MAKE_OPTS = lib + +$(eval $(autotools-package)) diff --git a/package/liblinear/0001-build-static-lib.patch b/package/liblinear/0001-build-static-lib.patch new file mode 100644 index 00000000..f3497b76 --- /dev/null +++ b/package/liblinear/0001-build-static-lib.patch @@ -0,0 +1,20 @@ +Makefile: add a rule to build a static library + +Signed-off-by: "Yann E. MORIN" +[Fabrice: update for 2.43] +Signed-off-by: Fabrice Fontaine +diff -durN liblinear-1.96.orig/Makefile liblinear-1.96/Makefile +--- liblinear-1.96.orig/Makefile 2014-11-15 07:50:23.000000000 +0100 ++++ liblinear-1.96/Makefile 2014-12-14 00:23:00.135893956 +0100 +@@ -16,6 +16,11 @@ + fi; \ + $(CXX) $${SHARED_LIB_FLAG} linear.o newton.o blas/blas.a -o liblinear.so.$(SHVER) + ++# Keeping blas/blas.a as a pre-requisite, to ensure all .o files are built ++static-lib: linear.o newton.o blas/blas.a ++ $(AR) rcv liblinear.a linear.o newton.o blas/*.o ++ $(RANLIB) liblinear.a ++ + train: newton.o linear.o train.c blas/blas.a + $(CXX) $(CFLAGS) -o train train.c newton.o linear.o $(LIBS) + diff --git a/package/liblinear/Config.in b/package/liblinear/Config.in new file mode 100644 index 00000000..cabcba05 --- /dev/null +++ b/package/liblinear/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBLINEAR + bool "liblinear" + depends on BR2_INSTALL_LIBSTDCPP + help + liblinear is a linear classifier for data with millions of + instances and features. + + http://www.csie.ntu.edu.tw/~cjlin/liblinear/ + +comment "liblinear needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/liblinear/liblinear.hash b/package/liblinear/liblinear.hash new file mode 100644 index 00000000..6bc72909 --- /dev/null +++ b/package/liblinear/liblinear.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3c64eec45c01943a656baac7aeb8ffd782fe0aea53629aa9f5fdb8eec177c92f liblinear-2.45.tar.gz +sha256 d49b7898fd9ea7c29f0478e8c409ee7c0f621533d5eca7b7912e80391dc564e3 COPYRIGHT diff --git a/package/liblinear/liblinear.mk b/package/liblinear/liblinear.mk new file mode 100644 index 00000000..014f9e2d --- /dev/null +++ b/package/liblinear/liblinear.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# liblinear +# +################################################################################ + +LIBLINEAR_VERSION = 2.45 +LIBLINEAR_SITE = http://www.csie.ntu.edu.tw/~cjlin/liblinear +LIBLINEAR_LICENSE = BSD-3-Clause +LIBLINEAR_LICENSE_FILES = COPYRIGHT +LIBLINEAR_INSTALL_STAGING = YES +LIBLINEAR_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +# $1: destination directory +define LIBLINEAR_INSTALL_SHARED + $(INSTALL) -m 0644 -D $(@D)/liblinear.so.5 $(1)/usr/lib/liblinear.so.5 + ln -sf liblinear.so.5 $(1)/usr/lib/liblinear.so +endef +LIBLINEAR_CFLAGS += -fPIC +endif + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +# $1: destination directory +define LIBLINEAR_INSTALL_STATIC + $(INSTALL) -m 0644 -D $(@D)/liblinear.a $(1)/usr/lib/liblinear.a +endef +endif + +define LIBLINEAR_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) CFLAGS="$(LIBLINEAR_CFLAGS)" -C $(@D) \ + $(if $(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),lib) \ + $(if $(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),static-lib) +endef + +define LIBLINEAR_INSTALL_STAGING_CMDS + $(INSTALL) -m 0644 -D $(@D)/linear.h $(STAGING_DIR)/usr/include/linear.h + $(call LIBLINEAR_INSTALL_SHARED,$(STAGING_DIR)) + $(call LIBLINEAR_INSTALL_STATIC,$(STAGING_DIR)) +endef + +define LIBLINEAR_INSTALL_TARGET_CMDS + $(call LIBLINEAR_INSTALL_SHARED,$(TARGET_DIR)) +endef + +$(eval $(generic-package)) diff --git a/package/libllcp/Config.in b/package/libllcp/Config.in new file mode 100644 index 00000000..5dc5c36a --- /dev/null +++ b/package/libllcp/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBLLCP + bool "libllcp" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBNFC + help + Library extending libnfc with support for Logical Link Control + Protocol. + + https://github.com/nfc-tools/libllcp + +comment "libllcp needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libllcp/libllcp.hash b/package/libllcp/libllcp.hash new file mode 100644 index 00000000..ff946dd3 --- /dev/null +++ b/package/libllcp/libllcp.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 4336533304a11ecb3041d211ccecd7759b7c7aad4f44037721803e2da1094d22 libllcp-05dfa8003433a7070bfd8ae02efdb0203bbf34aa.tar.gz +sha256 9ccf26cfe845e0eb8bb58053e47366e7ab6b697ae010f7650978d4b71b7d1fc1 COPYING diff --git a/package/libllcp/libllcp.mk b/package/libllcp/libllcp.mk new file mode 100644 index 00000000..ad4fca6b --- /dev/null +++ b/package/libllcp/libllcp.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# libllcp +# +################################################################################ + +LIBLLCP_VERSION = 05dfa8003433a7070bfd8ae02efdb0203bbf34aa +LIBLLCP_SITE = $(call github,nfc-tools,libllcp,$(LIBLLCP_VERSION)) +LIBLLCP_DEPENDENCIES = host-pkgconf libnfc +# There's no ./configure in the repository, so we need to autoreconf +LIBLLCP_AUTORECONF = YES +LIBLLCP_INSTALL_STAGING = YES +LIBLLCP_LICENSE = GPL-3.0+ +LIBLLCP_LICENSE_FILES = COPYING +# ensure graphviz isn't used +LIBLLCP_CONF_ENV = ac_cv_path_DOT= + +$(eval $(autotools-package)) diff --git a/package/liblo/0001-Fix-use-after-free-warning-in-server.c.patch b/package/liblo/0001-Fix-use-after-free-warning-in-server.c.patch new file mode 100644 index 00000000..be815a0a --- /dev/null +++ b/package/liblo/0001-Fix-use-after-free-warning-in-server.c.patch @@ -0,0 +1,29 @@ +From 8187a8456c14eeb3af08c86ffa1228823c9ef1c5 Mon Sep 17 00:00:00 2001 +From: Guido Aulisi +Date: Sun, 25 Jun 2023 15:58:30 +0200 +Subject: [PATCH] Fix use-after-free warning in server.c + +That assignment is not necessary before returning + +Upstream: https://sourceforge.net/p/liblo/git/ci/8187a8456c14eeb3af08c86ffa1228823c9ef1c5/ + +Signed-off-by: Bernd Kuhls +--- + src/server.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/server.c b/src/server.c +index ba02d8e..35c9ba5 100644 +--- a/src/server.c ++++ b/src/server.c +@@ -2289,7 +2289,6 @@ int lo_server_del_lo_method(lo_server s, lo_method m) + free((void *) it->path); + free((void *) it->typespec); + free(it); +- it = prev; + return 0; + } + prev = it; +-- +2.39.2 + diff --git a/package/liblo/Config.in b/package/liblo/Config.in new file mode 100644 index 00000000..705ac845 --- /dev/null +++ b/package/liblo/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBLO + bool "liblo" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + liblo is an implementation of the Open Sound Control + protocol for POSIX systems + + http://liblo.sourceforge.net/ + +comment "liblo needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/liblo/liblo.hash b/package/liblo/liblo.hash new file mode 100644 index 00000000..a3d34d79 --- /dev/null +++ b/package/liblo/liblo.hash @@ -0,0 +1,7 @@ +# From http://sourceforge.net/projects/liblo/files/liblo/0.31/ +sha1 d188a62df51e29fa98861daec1db0fdae400410d liblo-0.31.tar.gz +md5 14378c1e74c58e777fbb4fcf33ac5315 liblo-0.31.tar.gz + +# Locally computed +sha256 2b4f446e1220dcd624ecd8405248b08b7601e9a0d87a0b94730c2907dbccc750 liblo-0.31.tar.gz +sha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a COPYING diff --git a/package/liblo/liblo.mk b/package/liblo/liblo.mk new file mode 100644 index 00000000..27dba1f9 --- /dev/null +++ b/package/liblo/liblo.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# liblo +# +################################################################################ + +LIBLO_VERSION = 0.31 +LIBLO_SITE = http://downloads.sourceforge.net/project/liblo/liblo/$(LIBLO_VERSION) + +LIBLO_LICENSE = LGPL-2.1+ +LIBLO_LICENSE_FILES = COPYING +LIBLO_INSTALL_STAGING = YES + +# IPv6 support broken, issue known upstream +LIBLO_CONF_OPTS = --disable-ipv6 + +# Liblo uses atomic builtins, so we need to link with libatomic for +# the architectures who explicitly need libatomic. +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +LIBLO_CONF_ENV += LIBS="-latomic" +endif + +$(eval $(autotools-package)) diff --git a/package/liblockfile/0001-Makefile.in-fix-cross-compilation.patch b/package/liblockfile/0001-Makefile.in-fix-cross-compilation.patch new file mode 100644 index 00000000..bc85694f --- /dev/null +++ b/package/liblockfile/0001-Makefile.in-fix-cross-compilation.patch @@ -0,0 +1,82 @@ +From 7535d990645d867a6e491d16cd2548ea7e54958e Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 5 Apr 2021 16:21:32 +0200 +Subject: [PATCH] Makefile.in: fix cross-compilation + +- Use DESTDIR to install each files instead of prepending prefix with it + as this will result in dotlockfile being wrongly install in $(bindir) +- Use -f when creating symlink to avoid an error if link already exists +- Do not install files with root group as this will break + cross-compilation + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/miquels/liblockfile/pull/11] +--- + Makefile.in | 36 ++++++++++++++++++------------------ + 1 file changed, 18 insertions(+), 18 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 9c74b35..5ce8153 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -10,7 +10,7 @@ CFLAGS = @CFLAGS@ -I. + LDFLAGS = @LDFLAGS@ + CC = @CC@ + +-prefix = $(DESTDIR)@prefix@ ++prefix = @prefix@ + exec_prefix = @exec_prefix@ + bindir = @bindir@ + libdir = @libdir@ +@@ -60,34 +60,34 @@ dlockfile.o: lockfile.c + -c lockfile.c -o dlockfile.o + + install_static: static install_common +- install -d -m 755 -g root -p $(libdir) +- install -m 644 liblockfile.a $(libdir) ++ install -d -m 755 -p $(DESTDIR)$(libdir) ++ install -m 644 liblockfile.a $(DESTDIR)$(libdir) + + install_shared: shared install_static install_common +- install -d -m 755 -g root -p $(libdir) ++ install -d -m 755 -p $(DESTDIR)$(libdir) + install -m 755 liblockfile.so \ +- $(libdir)/liblockfile.so.$(SOVER) +- ln -s liblockfile.so.$(SOVER) $(libdir)/liblockfile.so.$(MAJOR) +- ln -s liblockfile.so.$(SOVER) $(libdir)/liblockfile.so ++ $(DESTDIR)$(libdir)/liblockfile.so.$(SOVER) ++ ln -sf liblockfile.so.$(SOVER) $(DESTDIR)$(libdir)/liblockfile.so.$(MAJOR) ++ ln -sf liblockfile.so.$(SOVER) $(DESTDIR)$(libdir)/liblockfile.so + if test "$(DESTDIR)" = ""; then @LDCONFIG@; fi + + install_common: +- install -d -m 755 -g root -p $(includedir) +- install -d -m 755 -g root -p $(bindir) +- install -d -m 755 -g root -p $(mandir)/man1 +- install -d -m 755 -g root -p $(mandir)/man3 +- install -m 644 lockfile.h maillock.h $(includedir) ++ install -d -m 755 -p $(DESTDIR)$(includedir) ++ install -d -m 755 -p $(DESTDIR)$(bindir) ++ install -d -m 755 -p $(DESTDIR)$(mandir)/man1 ++ install -d -m 755 -p $(DESTDIR)$(mandir)/man3 ++ install -m 644 lockfile.h maillock.h $(DESTDIR)$(includedir) + if [ "$(MAILGROUP)" != "" ]; then\ +- install -g $(MAILGROUP) -m 2755 dotlockfile $(bindir);\ ++ install -g $(MAILGROUP) -m 2755 dotlockfile $(DESTDIR)$(bindir);\ + else \ +- install -g root -m 755 dotlockfile $(bindir); \ ++ install -m 755 dotlockfile $(DESTDIR)$(bindir); \ + fi +- install -m 644 *.1 $(mandir)/man1 +- install -m 644 *.3 $(mandir)/man3 ++ install -m 644 *.1 $(DESTDIR)$(mandir)/man1 ++ install -m 644 *.3 $(DESTDIR)$(mandir)/man3 + + install_nfslib: nfslib +- install -d -m 755 -g root -p $(nfslockdir) +- install -m 755 nfslock.so.$(NFSVER) $(nfslockdir) ++ install -d -m 755 -p $(DESTDIR)$(nfslockdir) ++ install -m 755 nfslock.so.$(NFSVER) $(DESTDIR)$(nfslockdir) + if test "$(DESTDIR)" = ""; then @LDCONFIG@; fi + + test: test-stamp diff --git a/package/liblockfile/Config.in b/package/liblockfile/Config.in new file mode 100644 index 00000000..30bdf462 --- /dev/null +++ b/package/liblockfile/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBLOCKFILE + bool "liblockfile" + depends on BR2_USE_MMU # fork() + help + NFS-safe locking library. + + https://github.com/miquels/liblockfile diff --git a/package/liblockfile/liblockfile.hash b/package/liblockfile/liblockfile.hash new file mode 100644 index 00000000..b78a3b37 --- /dev/null +++ b/package/liblockfile/liblockfile.hash @@ -0,0 +1,6 @@ +# From https://snapshot.debian.org/archive/debian/20210128T210947Z/pool/main/libl/liblockfile/liblockfile_1.17-1.dsc +sha256 6e937f3650afab4aac198f348b89b1ca42edceb17fb6bb0918f642143ccfd15e liblockfile_1.17.orig.tar.gz +# Locally computed +sha256 3d080ab931103a823e6b9b788ccbc3e9d44797bd54546f3feebfd305f90de46a COPYRIGHT +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 licenses/GPL-2 +sha256 b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c licenses/LGPL-2 diff --git a/package/liblockfile/liblockfile.mk b/package/liblockfile/liblockfile.mk new file mode 100644 index 00000000..6535634e --- /dev/null +++ b/package/liblockfile/liblockfile.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# liblockfile +# +################################################################################ + +LIBLOCKFILE_VERSION = 1.17 +LIBLOCKFILE_SOURCE = liblockfile_$(LIBLOCKFILE_VERSION).orig.tar.gz +LIBLOCKFILE_SITE = http://snapshot.debian.org/archive/debian/20210128T210947Z/pool/main/libl/liblockfile + +LIBLOCKFILE_LICENSE = LGPL-2.0+, GPL-2.0+ (dotlockfile) +LIBLOCKFILE_LICENSE_FILES = COPYRIGHT licenses/GPL-2 licenses/LGPL-2 + +# We're patching Makefile.in +LIBLOCKFILE_AUTORECONF = YES +LIBLOCKFILE_INSTALL_STAGING = YES +LIBLOCKFILE_CONF_OPTS = --mandir=/usr/share/man + +$(eval $(autotools-package)) diff --git a/package/liblog4c-localtime/0001-log4c.m4-fix-underquoted-definition-of-AM_PATH_LOG4C.patch b/package/liblog4c-localtime/0001-log4c.m4-fix-underquoted-definition-of-AM_PATH_LOG4C.patch new file mode 100644 index 00000000..5e39b2d4 --- /dev/null +++ b/package/liblog4c-localtime/0001-log4c.m4-fix-underquoted-definition-of-AM_PATH_LOG4C.patch @@ -0,0 +1,34 @@ +From b7290560082e91673431de79e1fa318c9fd90261 Mon Sep 17 00:00:00 2001 +From: Danomi Manchego +Date: Sat, 25 Oct 2014 19:42:38 +0200 +Subject: [PATCH] log4c.m4: fix "underquoted definition of AM_PATH_LOG4C" + warning + +When autoreconfiguring liblog4c-localtime, there is a warning from +autoconf caused by an underquoted definition of AM_PATH_LOG4C. This +patch fixes this warning. + +Submitted upstream: https://github.com/rcmadruga/log4c-localtime/pull/1 + +Signed-off-by: Danomi Manchego +Signed-off-by: Thomas Petazzoni +--- + log4c.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/log4c.m4 b/log4c.m4 +index 551a90d..96424c0 100644 +--- a/log4c.m4 ++++ b/log4c.m4 +@@ -4,7 +4,7 @@ + dnl AM_PATH_LOG4C([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) + dnl Test for LOG4C, and define LOG4C_CFLAGS and LOG4C_LIBS + dnl +-AC_DEFUN(AM_PATH_LOG4C, ++AC_DEFUN([AM_PATH_LOG4C], + [dnl + dnl Get the cflags and libraries from the log4c-config script + dnl +-- +2.0.0 + diff --git a/package/liblog4c-localtime/0002-Fix-linking-error-without-pthread.patch b/package/liblog4c-localtime/0002-Fix-linking-error-without-pthread.patch new file mode 100644 index 00000000..63d35a90 --- /dev/null +++ b/package/liblog4c-localtime/0002-Fix-linking-error-without-pthread.patch @@ -0,0 +1,38 @@ +From 435b28cd90973cc03a533e75e90a46cd9f197dff Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Sat, 25 Oct 2014 19:44:01 +0200 +Subject: [PATCH] Fix linking error without pthread + +The rollingfile functionality only gets built if pthread support is +available, but a call to these functions from log4c_fini() was outside +the #if WITH_ROLLINGFILE conditional, causing linker errors when the +library is used. + +Submitted upstream: https://github.com/rcmadruga/log4c-localtime/pull/1 + +Signed-off-by: Peter Korsgaard +Signed-off-by: Thomas Petazzoni +--- + src/log4c/init.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/log4c/init.c b/src/log4c/init.c +index 99883ea..7dd9eb4 100644 +--- a/src/log4c/init.c ++++ b/src/log4c/init.c +@@ -267,10 +267,12 @@ extern int log4c_fini(void) + log4c_layout_factory = NULL; + } + ++#ifdef WITH_ROLLINGFILE + if (log4c_rollingpolicy_factory) { + sd_factory_delete(log4c_rollingpolicy_factory); + log4c_rollingpolicy_factory = NULL; + } ++#endif + + #ifdef __SD_DEBUG__ + if( getenv("SD_DEBUG")){ +-- +2.0.0 + diff --git a/package/liblog4c-localtime/0003-Fix-debug-mode-build-with-uClibc.patch b/package/liblog4c-localtime/0003-Fix-debug-mode-build-with-uClibc.patch new file mode 100644 index 00000000..f4c13149 --- /dev/null +++ b/package/liblog4c-localtime/0003-Fix-debug-mode-build-with-uClibc.patch @@ -0,0 +1,69 @@ +From acbaee34bcb1881db97969dd2c411446f32ca4cc Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 25 Oct 2014 19:45:33 +0200 +Subject: [PATCH] Fix debug mode build with uClibc + +When --enable-debug is passed, liblog4c-localtime wants to use +. It takes the precaution of testing if __GLIBC__ is +defined. But unfortunately, the uClibc C library pretends to be +compatible with glibc by defining __GLIBC__, but it doesn't provide +mcheck.h. + +To better support this situation, we add an AC_CHECK_HEADERS() check +on mcheck.h, and then use HAVE_MCHECK_H were appropriate. + +Submitted upstream: https://github.com/rcmadruga/log4c-localtime/pull/1 + +Signed-off-by: Thomas Petazzoni +--- + configure.in | 2 +- + src/log4c/init.c | 6 +++--- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/configure.in b/configure.in +index 612ccbe..dbf11e9 100644 +--- a/configure.in ++++ b/configure.in +@@ -115,7 +115,7 @@ AM_CONDITIONAL(TEST, test x$enable_test = xyes) + AC_HEADER_STDC + AC_CHECK_HEADERS([fcntl.h inttypes.h langinfo.h limits.h stddef.h stdint.h \ + stdlib.h string.h sys/time.h syslog.h unistd.h stdarg.h varargs.h getopt.h \ +-pthread.h]) ++pthread.h mcheck.h]) + + # Checks for typedefs, structures, and compiler characteristics. + AC_C_CONST +diff --git a/src/log4c/init.c b/src/log4c/init.c +index 7dd9eb4..4b88210 100644 +--- a/src/log4c/init.c ++++ b/src/log4c/init.c +@@ -35,7 +35,7 @@ static const char version[] = "$Id$"; + #include + #include + +-#if defined(__LOG4C_DEBUG__) && defined(__GLIBC__) ++#if defined(__LOG4C_DEBUG__) && defined(HAVE_MCHECK_H) + #include + #endif + +@@ -100,7 +100,7 @@ extern int log4c_init(void) + sd_debug("log4c_init["); + + /* activate GLIBC allocation debugging */ +-#if defined(__LOG4C_DEBUG__) && defined(__GLIBC__) ++#if defined(__LOG4C_DEBUG__) && defined(HAVE_MCHECK_H) + mtrace(); + #endif + +@@ -280,7 +280,7 @@ extern int log4c_fini(void) + log4c_dump_all_instances(stderr); + } + #endif +-#if defined(__LOG4C_DEBUG__) && defined(__GLIBC__) ++#if defined(__LOG4C_DEBUG__) && defined(HAVE_MCHECK_H) + muntrace(); + #endif + +-- +2.0.0 + diff --git a/package/liblog4c-localtime/0004-Add-AC_CONFIG_MACRO_DIR-to-configure.in.patch b/package/liblog4c-localtime/0004-Add-AC_CONFIG_MACRO_DIR-to-configure.in.patch new file mode 100644 index 00000000..744187ce --- /dev/null +++ b/package/liblog4c-localtime/0004-Add-AC_CONFIG_MACRO_DIR-to-configure.in.patch @@ -0,0 +1,30 @@ +From a2553c203d8b8257dea1d2e2139b220935587144 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 25 Oct 2014 20:03:25 +0200 +Subject: [PATCH] Add AC_CONFIG_MACRO_DIR to configure.in + +Without AC_CONFIG_MACRO_DIR, when autoreconfiguring the package, it +cannot find AM_PATH_EXPAT which is defined in config/expat.m4. + +Submitted upstream: https://github.com/rcmadruga/log4c-localtime/pull/1 + +Signed-off-by: Thomas Petazzoni +--- + configure.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/configure.in b/configure.in +index dbf11e9..769b204 100644 +--- a/configure.in ++++ b/configure.in +@@ -5,6 +5,7 @@ AC_PREREQ(2.57) + AC_INIT + AC_CONFIG_SRCDIR([configure.in]) + AC_CONFIG_AUX_DIR(config) ++AC_CONFIG_MACRO_DIR([config]) + AM_CONFIG_HEADER(src/config.h) + + LOG4C_MAJOR_VERSION=1 +-- +2.0.0 + diff --git a/package/liblog4c-localtime/0005-Fix-C-support.patch b/package/liblog4c-localtime/0005-Fix-C-support.patch new file mode 100644 index 00000000..5e16b4f9 --- /dev/null +++ b/package/liblog4c-localtime/0005-Fix-C-support.patch @@ -0,0 +1,61 @@ +From bdccec4c374a93480a7fd303d15e20810a5d5b7e Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 25 Oct 2014 21:22:40 +0200 +Subject: [PATCH] Fix C++ support + +Autoreconf fails with the following message: + +tests/log4c/Makefile.am: error: C++ source seen but 'CXX' is undefined + +So this commit adds the AC_PROG_CXX macro to configure.in, and ensures +that the C++ test is only built if a C++ compiler is available. + +Submitted upstream: https://github.com/rcmadruga/log4c-localtime/pull/1 + +Signed-off-by: Thomas Petazzoni +--- + configure.in | 3 +++ + tests/log4c/Makefile.am | 6 +++++- + 2 files changed, 8 insertions(+), 1 deletion(-) + +diff --git a/configure.in b/configure.in +index 769b204..ce75800 100644 +--- a/configure.in ++++ b/configure.in +@@ -38,6 +38,7 @@ AC_DEFINE(_GNU_SOURCE,1,"POSIXandGNU extensions") + #. + AC_PROG_YACC + AC_PROG_CC ++AC_PROG_CXX + AC_PROG_CPP + AM_PROG_LEX + AC_PROG_AWK +@@ -47,6 +48,8 @@ AC_PROG_MAKE_SET + AC_PROG_RANLIB + AC_PROG_LIBTOOL + ++AM_CONDITIONAL([USE_CXX], [test "$ac_cv_prog_CXX" != "no"]) ++ + # platform idioms + case "$host" in + *-hp-hpux*) +diff --git a/tests/log4c/Makefile.am b/tests/log4c/Makefile.am +index f647f27..b1b4ed6 100644 +--- a/tests/log4c/Makefile.am ++++ b/tests/log4c/Makefile.am +@@ -3,7 +3,11 @@ INCLUDES = \ + -DSRCDIR="\"$(srcdir)\"" + + noinst_PROGRAMS = test_category test_rc bench bench_fwrite \ +- test_stream2 test_layout_r cpp_compile_test ++ test_stream2 test_layout_r ++ ++if USE_CXX ++noinst_PROGRAMS += cpp_compile_test ++endif + + if WITH_ROLLINGFILE + noinst_PROGRAMS += test_rollingfile_appender test_rollingfile_appender_mt +-- +2.0.0 + diff --git a/package/liblog4c-localtime/Config.in b/package/liblog4c-localtime/Config.in new file mode 100644 index 00000000..fd6cab83 --- /dev/null +++ b/package/liblog4c-localtime/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBLOG4C_LOCALTIME + bool "liblog4c-localtime" + select BR2_PACKAGE_EXPAT + help + Log4c is a library of C for flexible logging to files, syslog + and other destinations. + This version is with localtime patch, to make lib show times + in local timezone. + + https://github.com/rcmadruga/log4c-localtime + http://log4c.sourceforge.net/ diff --git a/package/liblog4c-localtime/liblog4c-localtime.hash b/package/liblog4c-localtime/liblog4c-localtime.hash new file mode 100644 index 00000000..66d15950 --- /dev/null +++ b/package/liblog4c-localtime/liblog4c-localtime.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a1f68d8251509c0171f8bfea42f9e2a5255a4185f7dcbe67f584aa09709b2496 liblog4c-localtime-1.0.tar.gz +sha256 a190dc9c8043755d90f8b0a75fa66b9e42d4af4c980bf5ddc633f0124db3cee7 COPYING diff --git a/package/liblog4c-localtime/liblog4c-localtime.mk b/package/liblog4c-localtime/liblog4c-localtime.mk new file mode 100644 index 00000000..4ec390d7 --- /dev/null +++ b/package/liblog4c-localtime/liblog4c-localtime.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# liblog4c-localtime +# +################################################################################ + +LIBLOG4C_LOCALTIME_VERSION = 1.0 +LIBLOG4C_LOCALTIME_SITE = $(call github,rcmadruga,log4c-localtime,v$(LIBLOG4C_LOCALTIME_VERSION)) +LIBLOG4C_LOCALTIME_INSTALL_STAGING = YES +LIBLOG4C_LOCALTIME_CONF_OPTS = --disable-expattest +LIBLOG4C_LOCALTIME_DEPENDENCIES = expat +LIBLOG4C_LOCALTIME_CONFIG_SCRIPTS = log4c-config +LIBLOG4C_LOCALTIME_LICENSE = LGPL-2.1 +LIBLOG4C_LOCALTIME_LICENSE_FILES = COPYING +LIBLOG4C_LOCALTIME_AUTORECONF = YES + +define LIBLOG4C_LOCALTIME_FIX_CONFIGURE_PERMS + chmod +x $(@D)/configure +endef + +LIBLOG4C_LOCALTIME_PRE_CONFIGURE_HOOKS += LIBLOG4C_LOCALTIME_FIX_CONFIGURE_PERMS + +$(eval $(autotools-package)) diff --git a/package/liblogging/Config.in b/package/liblogging/Config.in new file mode 100644 index 00000000..a39fdf8d --- /dev/null +++ b/package/liblogging/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBLOGGING + bool "liblogging" + help + Liblogging is an easy to use library for + logging. It offers an enhanced replacement + for the syslog() call, but retains its ease of use. + + https://www.rsyslog.com/liblogging/ diff --git a/package/liblogging/liblogging.hash b/package/liblogging/liblogging.hash new file mode 100644 index 00000000..32cab29b --- /dev/null +++ b/package/liblogging/liblogging.hash @@ -0,0 +1,5 @@ +# From http://www.liblogging.org/ +sha256 338c6174e5c8652eaa34f956be3451f7491a4416ab489aef63151f802b00bf93 liblogging-1.0.6.tar.gz + +# Hash for license file: +sha256 a5626f700d3ee92513673b5f43733af5b651d9e7a9157d4bd81ceb9c89ec04b0 COPYING diff --git a/package/liblogging/liblogging.mk b/package/liblogging/liblogging.mk new file mode 100644 index 00000000..24375b56 --- /dev/null +++ b/package/liblogging/liblogging.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# liblogging +# +################################################################################ + +LIBLOGGING_VERSION = 1.0.6 +LIBLOGGING_SITE = http://download.rsyslog.com/liblogging +LIBLOGGING_LICENSE = BSD-2-Clause +LIBLOGGING_LICENSE_FILES = COPYING +LIBLOGGING_CPE_ID_VENDOR = adiscon +LIBLOGGING_INSTALL_STAGING = YES +LIBLOGGING_CONF_OPTS = --enable-cached-man-pages + +ifeq ($(BR2_INIT_SYSTEMD),y) +LIBLOGGING_CONF_OPTS += --enable-journal +LIBLOGGING_DEPENDENCIES += systemd +else +LIBLOGGING_CONF_OPTS += --disable-journal +endif + +$(eval $(autotools-package)) diff --git a/package/libloki/0001-allow-to-install-to-a-specific-location-using-DESTDI.patch b/package/libloki/0001-allow-to-install-to-a-specific-location-using-DESTDI.patch new file mode 100644 index 00000000..d19306fd --- /dev/null +++ b/package/libloki/0001-allow-to-install-to-a-specific-location-using-DESTDI.patch @@ -0,0 +1,65 @@ +From 0b80e8beff68a0570fdc2d9281992060414475c1 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 29 Apr 2017 22:13:54 +0200 +Subject: [PATCH] allow to install to a specific location using DESTDIR + +DESTDIR is the autotools standard variable where to copy +headers, libraries and binaries. It's not the same as "prefix". + +So while installing to Buildroot STAGING directory, use prefix=/usr +and DESTOR=$(STAGING_DIR). + +Signed-off-by: Romain Naour +Sigend-off-by: Corentin GUILLEVIC +--- + include/Makefile | 12 ++++++------ + src/Makefile | 10 +++++----- + 2 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/include/Makefile b/include/Makefile +index 26a8139..a8cf369 100644 +--- a/include/Makefile ++++ b/include/Makefile +@@ -2,10 +2,10 @@ include ../Makefile.common + + .PHONY: install + install: +- mkdir -p $(prefix)/include/loki +- mkdir -p $(prefix)/include/loki/flex +- mkdir -p $(prefix)/include/loki/yasli ++ mkdir -p $(DESTDIR)$(prefix)/include/loki ++ mkdir -p $(DESTDIR)$(prefix)/include/loki/flex ++ mkdir -p $(DESTDIR)$(prefix)/include/loki/yasli + +- install -m 644 loki/*.h $(prefix)/include/loki +- install -m 644 loki/flex/*.h $(prefix)/include/loki/flex +- install -m 644 loki/yasli/*.h $(prefix)/include/loki/yasli ++ install -m 644 loki/*.h $(DESTDIR)$(prefix)/include/loki ++ install -m 644 loki/flex/*.h $(DESTDIR)$(prefix)/include/loki/flex ++ install -m 644 loki/yasli/*.h $(DESTDIR)$(prefix)/include/loki/yasli +diff --git a/src/Makefile b/src/Makefile +index b272929..054285e 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -74,13 +74,13 @@ INSTALL_DATA := $(INSTALL) -m 644 + install: install-static install-shared + + install-static: $(RESULT_DIR)$(STATIC_LIB) +- mkdir -p $(prefix)/lib +- $(INSTALL_DATA) $(RESULT_DIR)$(STATIC_LIB) $(prefix)/lib ++ mkdir -p $(DESTDIR)$(prefix)/lib ++ $(INSTALL_DATA) $(RESULT_DIR)$(STATIC_LIB) $(DESTDIR)$(prefix)/lib + + install-shared: $(RESULT_DIR)$(SHARED_LIB_VERSIONED) +- mkdir -p $(prefix)/lib +- $(INSTALL_DATA) $(RESULT_DIR)$(SHARED_LIB_VERSIONED) $(prefix)/lib +- cd $(prefix)/lib; ln -s $(SHARED_LIB_VERSIONED) $(SHARED_LIB_BASE) ++ mkdir -p $(DESTDIR)$(prefix)/lib ++ $(INSTALL_DATA) $(RESULT_DIR)$(SHARED_LIB_VERSIONED) $(DESTDIR)$(prefix)/lib ++ cd $(DESTDIR)$(prefix)/lib; ln -s $(SHARED_LIB_VERSIONED) $(SHARED_LIB_BASE) + + %.lo : %.cpp + $(CXX) -c $(CXXFLAGS) -fPIC $(CPPFLAGS) -o $@ $< +-- +2.9.3 + diff --git a/package/libloki/0002-use-ln-snf.patch b/package/libloki/0002-use-ln-snf.patch new file mode 100644 index 00000000..5b73d7f9 --- /dev/null +++ b/package/libloki/0002-use-ln-snf.patch @@ -0,0 +1,31 @@ +From 7fcaa080ef3fddb3f7dcfaf2984bc397d7c9e96c Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 29 Apr 2017 22:27:26 +0200 +Subject: [PATCH] use ln -snf + +Otherwise the install step fail due to existing symlink. + +'libloki.so': File exists + +Signed-off-by: Romain Naour +Sigend-off-by: Corentin GUILLEVIC +--- + src/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/Makefile b/src/Makefile +index 054285e..2c169ab 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -80,7 +80,7 @@ install-static: $(RESULT_DIR)$(STATIC_LIB) + install-shared: $(RESULT_DIR)$(SHARED_LIB_VERSIONED) + mkdir -p $(DESTDIR)$(prefix)/lib + $(INSTALL_DATA) $(RESULT_DIR)$(SHARED_LIB_VERSIONED) $(DESTDIR)$(prefix)/lib +- cd $(DESTDIR)$(prefix)/lib; ln -s $(SHARED_LIB_VERSIONED) $(SHARED_LIB_BASE) ++ cd $(DESTDIR)$(prefix)/lib; ln -snf $(SHARED_LIB_VERSIONED) $(SHARED_LIB_BASE) + + %.lo : %.cpp + $(CXX) -c $(CXXFLAGS) -fPIC $(CPPFLAGS) -o $@ $< +-- +2.9.3 + diff --git a/package/libloki/Config.in b/package/libloki/Config.in new file mode 100644 index 00000000..4ce4429a --- /dev/null +++ b/package/libloki/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBLOKI + bool "libloki" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + A C++ library of designs, containing flexible + implementations of common design patterns and idioms. + + http://sourceforge.net/projects/loki-lib + +comment "libloki needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libloki/libloki.hash b/package/libloki/libloki.hash new file mode 100644 index 00000000..ee9c0a55 --- /dev/null +++ b/package/libloki/libloki.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/loki-lib/files/Loki/Loki%200.1.7 +md5 33a24bcbb99fa2ec8fcbbab65649f3f6 loki-0.1.7.tar.bz2 +sha1 006c630217b1e1fd33015dc0597d2d743d8ee4e3 loki-0.1.7.tar.bz2 +# locally computed +sha256 07553754f6be2738559947db69b0718512665bf4a34015fa3a875b6eb1111198 loki-0.1.7.tar.bz2 diff --git a/package/libloki/libloki.mk b/package/libloki/libloki.mk new file mode 100644 index 00000000..07a9372d --- /dev/null +++ b/package/libloki/libloki.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# libloki +# +################################################################################ + +LIBLOKI_VERSION = 0.1.7 +LIBLOKI_SOURCE = loki-$(LIBLOKI_VERSION).tar.bz2 +LIBLOKI_SITE = https://sourceforge.net/projects/loki-lib/files/Loki/Loki%20$(LIBLOKI_VERSION) +LIBLOKI_LICENSE = MIT +LIBLOKI_INSTALL_STAGING = YES + +ifeq ($(BR2_STATIC_LIBS),y) +LIBLOKI_BUILD_TARGETS += build-static +LIBLOKI_INSTALL_TARGETS += install-static +else ifeq ($(BR2_SHARED_LIBS),y) +LIBLOKI_BUILD_TARGETS += build-shared +LIBLOKI_INSTALL_TARGETS += install-shared +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +LIBLOKI_BUILD_TARGETS += build-static build-shared +LIBLOKI_INSTALL_TARGETS += install-static install-shared +endif + +define LIBLOKI_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11" \ + -C $(@D) $(LIBLOKI_BUILD_TARGETS) +endef + +define LIBLOKI_INSTALL_STAGING_CMDS + $(MAKE) -C $(@D)/src DESTDIR=$(STAGING_DIR) $(LIBLOKI_INSTALL_TARGETS) + $(MAKE) -C $(@D)/include DESTDIR=$(STAGING_DIR) install +endef + +define LIBLOKI_INSTALL_TARGET_CMDS + $(MAKE) -C $(@D)/src DESTDIR=$(TARGET_DIR) $(LIBLOKI_INSTALL_TARGETS) +endef + +$(eval $(generic-package)) diff --git a/package/libmad/0001-mips-h-constraint-removal.patch b/package/libmad/0001-mips-h-constraint-removal.patch new file mode 100644 index 00000000..09585871 --- /dev/null +++ b/package/libmad/0001-mips-h-constraint-removal.patch @@ -0,0 +1,72 @@ +http://patchwork.openembedded.org/patch/921/ + +diff -ur libmad-0.15.1b-orig/fixed.h libmad-0.15.1b/fixed.h +--- libmad-0.15.1b-orig/fixed.h 2004-02-17 12:32:03.000000000 +1030 ++++ libmad-0.15.1b/fixed.h 2009-08-05 10:46:30.000000000 +0930 +@@ -299,6 +299,23 @@ + + # elif defined(FPM_MIPS) + ++/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */ ++#if defined (__GNUC__) && defined (__GNUC_MINOR__) ++#define __GNUC_PREREQ(maj, min) \ ++ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) ++#else ++#define __GNUC_PREREQ(maj, min) 0 ++#endif ++ ++#if __GNUC_PREREQ(4,4) ++ typedef unsigned int u64_di_t __attribute__ ((mode (DI))); ++# define MAD_F_MLX(hi, lo, x, y) \ ++ do { \ ++ u64_di_t __ll = (u64_di_t) (x) * (y); \ ++ hi = __ll >> 32; \ ++ lo = __ll; \ ++ } while (0) ++#else + /* + * This MIPS version is fast and accurate; the disposition of the least + * significant bit depends on OPT_ACCURACY via mad_f_scale64(). +@@ -328,6 +345,7 @@ + : "%r" ((x) >> 12), "r" ((y) >> 16)) + # define MAD_F_MLZ(hi, lo) ((mad_fixed_t) (lo)) + # endif ++#endif /* __GNU_PREREQ(4,4) */ + + # if defined(OPT_SPEED) + # define mad_f_scale64(hi, lo) \ +diff -ur libmad-0.15.1b-orig/mad.h libmad-0.15.1b/mad.h +--- libmad-0.15.1b-orig/mad.h 2004-02-17 13:25:44.000000000 +1030 ++++ libmad-0.15.1b/mad.h 2009-08-05 10:42:40.000000000 +0930 +@@ -344,6 +344,23 @@ + + # elif defined(FPM_MIPS) + ++/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */ ++#if defined (__GNUC__) && defined (__GNUC_MINOR__) ++#define __GNUC_PREREQ(maj, min) \ ++ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) ++#else ++#define __GNUC_PREREQ(maj, min) 0 ++#endif ++ ++#if __GNUC_PREREQ(4,4) ++ typedef unsigned int u64_di_t __attribute__ ((mode (DI))); ++# define MAD_F_MLX(hi, lo, x, y) \ ++ do { \ ++ u64_di_t __ll = (u64_di_t) (x) * (y); \ ++ hi = __ll >> 32; \ ++ lo = __ll; \ ++ } while (0) ++#else + /* + * This MIPS version is fast and accurate; the disposition of the least + * significant bit depends on OPT_ACCURACY via mad_f_scale64(). +@@ -373,6 +390,7 @@ + : "%r" ((x) >> 12), "r" ((y) >> 16)) + # define MAD_F_MLZ(hi, lo) ((mad_fixed_t) (lo)) + # endif ++#endif /* __GNU_PREREQ(4,4) */ + + # if defined(OPT_SPEED) + # define mad_f_scale64(hi, lo) \ diff --git a/package/libmad/0002-configure-ac-automake-foreign.patch b/package/libmad/0002-configure-ac-automake-foreign.patch new file mode 100644 index 00000000..828ad0c1 --- /dev/null +++ b/package/libmad/0002-configure-ac-automake-foreign.patch @@ -0,0 +1,16 @@ +configure.ac: don't require GNU-specific files when running automake + +Signed-off-by: Fabrice Fontaine + +diff -ur libmad-0.15.1b-orig/configure.ac libmad-0.15.1b/configure.ac +--- libmad-0.15.1b-orig/configure.ac 2019-01-17 21:24:52.259194527 +0100 ++++ libmad-0.15.1b/configure.ac 2019-01-17 21:25:32.779481058 +0100 +@@ -26,7 +26,7 @@ + + AC_CONFIG_SRCDIR([decoder.h]) + +-AM_INIT_AUTOMAKE ++AM_INIT_AUTOMAKE([foreign]) + + AM_CONFIG_HEADER([config.h]) + diff --git a/package/libmad/0003-drop-GCC-fforce-mem-option.patch b/package/libmad/0003-drop-GCC-fforce-mem-option.patch new file mode 100644 index 00000000..25b685ef --- /dev/null +++ b/package/libmad/0003-drop-GCC-fforce-mem-option.patch @@ -0,0 +1,18 @@ +configure.ac: drop GCC "-fforce-mem" option + +As reported at [1], the option has been removed from version 4.3 of GCC. + +[1] https://ez.analog.com/dsp/software-and-development-tools/linux-blackfin/linux-bug-archive/w/documents/7460/5626-build-lib-mad-fail-at-option--fforce-mem-with-gcc-4-3 +Signed-off-by: Dario Binacchi +Upstream: Dead + +--- libmad-0.15.1b-orig/configure.ac 2024-07-02 14:26:40.657984791 +0200 ++++ libmad-0.15.1b/configure.ac 2024-07-02 14:27:07.098198997 +0200 +@@ -140,7 +140,6 @@ + case "$optimize" in + -O|"-O "*) + optimize="-O" +- optimize="$optimize -fforce-mem" + optimize="$optimize -fforce-addr" + : #x optimize="$optimize -finline-functions" + : #- optimize="$optimize -fstrength-reduce" diff --git a/package/libmad/Config.in b/package/libmad/Config.in new file mode 100644 index 00000000..1d6bdd86 --- /dev/null +++ b/package/libmad/Config.in @@ -0,0 +1,51 @@ +config BR2_PACKAGE_LIBMAD + bool "libmad" + help + High-quality MPEG audio decoder. All computations are + performed with fixed-point integer arithmetic, making it ideal + for systems without a floating-point unit. + + http://www.underbit.com/products/mad/ + +if BR2_PACKAGE_LIBMAD + +choice + prompt "Speed vs. accuracy" + default BR2_PACKAGE_LIBMAD_OPTIMIZATION_DEFAULT + +config BR2_PACKAGE_LIBMAD_OPTIMIZATION_DEFAULT + bool "Default" + help + Keep optimizations balanced between speed and accuracy. + +config BR2_PACKAGE_LIBMAD_OPTIMIZATION_SPEED + bool "Optimize for speed over accuracy" + help + Compromise accuracy for speed. + +config BR2_PACKAGE_LIBMAD_OPTIMIZATION_ACCURACY + bool "Optimize for accuracy over speed" + help + Compromise speed for accuracy. + +endchoice + +config BR2_PACKAGE_LIBMAD_SSO + bool "Subband synthesis optimization" + help + Use the subband synthesis optimization, with reduced accuracy. + +config BR2_PACKAGE_LIBMAD_ASO + bool "Architecture-specific optimizations" + default y + # arm optimization needs classic arm instructions support + depends on !(BR2_arm && !BR2_ARM_CPU_HAS_ARM) + help + Use certain architecture-specific optimizations. + +config BR2_PACKAGE_LIBMAD_STRICT_ISO + bool "Strict ISO/IEC interpretations" + help + Use strict ISO/IEC interpretations. + +endif diff --git a/package/libmad/libmad.hash b/package/libmad/libmad.hash new file mode 100644 index 00000000..2be1a8a3 --- /dev/null +++ b/package/libmad/libmad.hash @@ -0,0 +1,6 @@ +# From http://snapshot.debian.org/archive/debian/20190310T213528Z/pool/main/libm/libmad/libmad_0.15.1b-10.dsc +sha256 bbfac3ed6bfbc2823d3775ebb931087371e142bb0e9bb1bee51a76a6e0078690 libmad_0.15.1b.orig.tar.gz +sha256 dfeabd5d2398bf902660edc31f87ad40600f0aa732b946f864d8ee6bbf56a99c libmad_0.15.1b-10.diff.gz + +# Hash for license file: +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/libmad/libmad.mk b/package/libmad/libmad.mk new file mode 100644 index 00000000..9f3396b1 --- /dev/null +++ b/package/libmad/libmad.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# libmad +# +################################################################################ + +LIBMAD_VERSION = 0.15.1b +LIBMAD_PATCH = libmad_$(LIBMAD_VERSION)-10.diff.gz +LIBMAD_SOURCE = libmad_$(LIBMAD_VERSION).orig.tar.gz +LIBMAD_SITE = \ + http://snapshot.debian.org/archive/debian/20190310T213528Z/pool/main/libm/libmad +LIBMAD_INSTALL_STAGING = YES +LIBMAD_LICENSE = GPL-2.0+ +LIBMAD_LICENSE_FILES = COPYING + +define LIBMAD_APPLY_DEBIAN_PATCHES + if [ -d $(@D)/debian/patches ]; then \ + $(APPLY_PATCHES) $(@D) $(@D)/debian/patches *.patch; \ + fi +endef + +LIBMAD_PRE_PATCH_HOOKS += LIBMAD_APPLY_DEBIAN_PATCHES + +# debian/patches/md_size.diff +LIBMAD_IGNORE_CVES += CVE-2017-8372 CVE-2017-8373 + +# debian/patches/length-check.patch +LIBMAD_IGNORE_CVES += CVE-2017-8374 + +# Force autoreconf to be able to use a more recent libtool script, that +# is able to properly behave in the face of a missing C++ compiler. +LIBMAD_AUTORECONF = YES + +# libmad has some assembly function that is not present in Thumb mode: +# Error: selected processor does not support `smull r6,r7,r3,r1' in Thumb mode +# so, we desactivate Thumb mode +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +LIBMAD_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -marm" +endif + +define LIBMAD_INSTALL_STAGING_PC + $(INSTALL) -D package/libmad/mad.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/mad.pc +endef + +LIBMAD_POST_INSTALL_STAGING_HOOKS += LIBMAD_INSTALL_STAGING_PC + +LIBMAD_CONF_OPTS = \ + --disable-debugging \ + $(if $(BR2_PACKAGE_LIBMAD_OPTIMIZATION_SPEED),--enable-speed) \ + $(if $(BR2_PACKAGE_LIBMAD_OPTIMIZATION_ACCURACY),--enable-accuracy) \ + --$(if $(BR2_PACKAGE_LIBMAD_SSO),enable,disable)-sso \ + --$(if $(BR2_PACKAGE_LIBMAD_ASO),enable,disable)-aso \ + --$(if $(BR2_PACKAGE_LIBMAD_STRICT_ISO),enable,disable)-strict-iso + +$(eval $(autotools-package)) diff --git a/package/libmad/mad.pc b/package/libmad/mad.pc new file mode 100644 index 00000000..14af3886 --- /dev/null +++ b/package/libmad/mad.pc @@ -0,0 +1,11 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: mad +Description: MPEG Audio Decoder +Requires: +Version: 0.15.1b +Libs: -L${libdir} -lmad +Cflags: -I${includedir} diff --git a/package/libmanette/Config.in b/package/libmanette/Config.in new file mode 100644 index 00000000..31fff152 --- /dev/null +++ b/package/libmanette/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBMANETTE + bool "libmanette" + depends on BR2_USE_MMU # libglib2 + depends on BR2_USE_WCHAR # libglib2 -> gettext + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16 + select BR2_PACKAGE_LIBEVDEV + select BR2_PACKAGE_LIBGLIB2 + help + GObject library which provides access to game controllers. + + https://gitlab.gnome.org/GNOME/libmanette + +comment "libmanette needs a toolchain w/ wchar, threads, headers >= 4.16" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16 diff --git a/package/libmanette/libmanette.hash b/package/libmanette/libmanette.hash new file mode 100644 index 00000000..b1da3c19 --- /dev/null +++ b/package/libmanette/libmanette.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/libmanette/0.2/libmanette-0.2.7.sha256sum +sha256 cddd5c02a131072c19c6cde6f2cb2cd57eae7dacb50d14c337efd980baa51a51 libmanette-0.2.7.tar.xz + +# Locally calculated +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/libmanette/libmanette.mk b/package/libmanette/libmanette.mk new file mode 100644 index 00000000..42fb4797 --- /dev/null +++ b/package/libmanette/libmanette.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# libmanette +# +################################################################################ + +LIBMANETTE_VERSION_MAJOR = 0.2 +LIBMANETTE_VERSION = $(LIBMANETTE_VERSION_MAJOR).7 +LIBMANETTE_SOURCE = libmanette-$(LIBMANETTE_VERSION).tar.xz +LIBMANETTE_SITE = https://download.gnome.org/sources/libmanette/$(LIBMANETTE_VERSION_MAJOR) +LIBMANETTE_LICENSE = LGPL-2.1+ +LIBMANETTE_LICENSE_FILES = COPYING +LIBMANETTE_INSTALL_STAGING = YES +LIBMANETTE_DEPENDENCIES = \ + libevdev \ + libglib2 \ + $(TARGET_NLS_DEPENDENCIES) + +LIBMANETTE_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) + +LIBMANETTE_CONF_OPTS = \ + -Ddemos=false \ + -Dbuild-tests=false \ + -Dinstall-tests=false \ + -Ddoc=false \ + -Dvapi=false + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +LIBMANETTE_CONF_OPTS += -Dintrospection=true +LIBMANETTE_DEPENDENCIES += gobject-introspection +else +LIBMANETTE_CONF_OPTS += -Dintrospection=false +endif + +ifeq ($(BR2_PACKAGE_LIBGUDEV),y) +LIBMANETTE_CONF_OPTS += -Dgudev=enabled +LIBMANETTE_DEPENDENCIES += libgudev +else +LIBMANETTE_CONF_OPTS += -Dgudev=disabled +endif + +$(eval $(meson-package)) diff --git a/package/libmatroska/Config.in b/package/libmatroska/Config.in new file mode 100644 index 00000000..4d775c43 --- /dev/null +++ b/package/libmatroska/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBMATROSKA + bool "libmatroska" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14 + select BR2_PACKAGE_LIBEBML + help + Extensible open standard audio/video container format access + library. + + http://matroska.org + +comment "libmatroska needs a toolchain w/ C++, wchar, gcc >= 4.9" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/libmatroska/libmatroska.hash b/package/libmatroska/libmatroska.hash new file mode 100644 index 00000000..a3eb74e8 --- /dev/null +++ b/package/libmatroska/libmatroska.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 572a3033b8d93d48a6a858e514abce4b2f7a946fe1f02cbfeca39bfd703018b3 libmatroska-1.7.1.tar.xz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSE.LGPL diff --git a/package/libmatroska/libmatroska.mk b/package/libmatroska/libmatroska.mk new file mode 100644 index 00000000..6b5f3447 --- /dev/null +++ b/package/libmatroska/libmatroska.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libmatroska +# +################################################################################ + +LIBMATROSKA_VERSION = 1.7.1 +LIBMATROSKA_SOURCE = libmatroska-$(LIBMATROSKA_VERSION).tar.xz +LIBMATROSKA_SITE = http://dl.matroska.org/downloads/libmatroska +LIBMATROSKA_INSTALL_STAGING = YES +LIBMATROSKA_LICENSE = LGPL-2.1+ +LIBMATROSKA_LICENSE_FILES = LICENSE.LGPL +LIBMATROSKA_CPE_ID_VENDOR = matroska +LIBMATROSKA_DEPENDENCIES = libebml host-pkgconf + +$(eval $(cmake-package)) diff --git a/package/libmaxminddb/Config.in b/package/libmaxminddb/Config.in new file mode 100644 index 00000000..1b8061b7 --- /dev/null +++ b/package/libmaxminddb/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LIBMAXMINDDB + bool "libmaxminddb" + help + C library for the MaxMind DB file format + + The libmaxminddb library provides a C library for reading + MaxMind DB files, including the GeoIP2 databases from + MaxMind. This is a custom binary format designed to + facilitate fast lookups of IP addresses while allowing for + great flexibility in the type of data associated with an + address. + + The MaxMind DB format is an open format. The spec is + available at http://maxmind.github.io/MaxMind-DB/. This spec + is licensed under the Creative Commons + Attribution-ShareAlike 3.0 Unported License. + + http://maxmind.github.io/libmaxminddb diff --git a/package/libmaxminddb/libmaxminddb.hash b/package/libmaxminddb/libmaxminddb.hash new file mode 100644 index 00000000..567a428e --- /dev/null +++ b/package/libmaxminddb/libmaxminddb.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 5e6db72df423ae225bfe8897069f6def40faa8931f456b99d79b8b4d664c6671 libmaxminddb-1.10.0.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/libmaxminddb/libmaxminddb.mk b/package/libmaxminddb/libmaxminddb.mk new file mode 100644 index 00000000..84fc3d11 --- /dev/null +++ b/package/libmaxminddb/libmaxminddb.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# libmaxminddb +# +################################################################################ + +LIBMAXMINDDB_VERSION = 1.10.0 +LIBMAXMINDDB_SITE = \ + https://github.com/maxmind/libmaxminddb/releases/download/$(LIBMAXMINDDB_VERSION) +LIBMAXMINDDB_INSTALL_STAGING = YES +LIBMAXMINDDB_LICENSE = Apache-2.0 +LIBMAXMINDDB_LICENSE_FILES = LICENSE +LIBMAXMINDDB_CPE_ID_VENDOR = maxmind +LIBMAXMINDDB_CONF_OPTS = --disable-tests + +# mmdblookup binary depends on pthreads +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +LIBMAXMINDDB_CONF_OPTS += --enable-binaries +else +LIBMAXMINDDB_CONF_OPTS += --disable-binaries +endif + +$(eval $(autotools-package)) diff --git a/package/libmbim/Config.in b/package/libmbim/Config.in new file mode 100644 index 00000000..fd7dbb31 --- /dev/null +++ b/package/libmbim/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBMBIM + bool "libmbim" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + help + libmbim is a glib-based library for talking to WWAN modems and + devices which speak the Mobile Interface Broadband Model + (MBIM) protocol. + + http://www.freedesktop.org/wiki/Software/libmbim/ + +comment "libmbim needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libmbim/libmbim.hash b/package/libmbim/libmbim.hash new file mode 100644 index 00000000..ebc37504 --- /dev/null +++ b/package/libmbim/libmbim.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 cfc729d23b9bf699b23a7ef2f5d732d6eff96234e31fed36b778771a6e3d3ee5 libmbim-1.30.0.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-or-later.txt +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSES/LGPL-2.1-or-later.txt diff --git a/package/libmbim/libmbim.mk b/package/libmbim/libmbim.mk new file mode 100644 index 00000000..717c2396 --- /dev/null +++ b/package/libmbim/libmbim.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# libmbim +# +################################################################################ + +LIBMBIM_VERSION = 1.30.0 +LIBMBIM_SITE = https://gitlab.freedesktop.org/mobile-broadband/libmbim/-/archive/$(LIBMBIM_VERSION) +LIBMBIM_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (programs) +LIBMBIM_LICENSE_FILES = \ + LICENSES/GPL-2.0-or-later.txt LICENSES/LGPL-2.1-or-later.txt +LIBMBIM_CPE_ID_VENDOR = freedesktop +LIBMBIM_INSTALL_STAGING = YES + +LIBMBIM_DEPENDENCIES = libglib2 +LIBMBIM_CONF_OPTS = -Dman=false -Dfuzzer=false + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +LIBMBIM_DEPENDENCIES += gobject-introspection +LIBMBIM_CONF_OPTS += -Dintrospection=true +else +LIBMBIM_CONF_OPTS += -Dintrospection=false +endif + +ifeq ($(BR2_PACKAGE_BASH_COMPLETION),y) +LIBMBIM_DEPENDENCIES += bash-completion +LIBMBIM_CONF_OPTS += -Dbash_completion=true +else +LIBMBIM_CONF_OPTS += -Dbash_completion=false +endif + +$(eval $(meson-package)) diff --git a/package/libmbus/Config.in b/package/libmbus/Config.in new file mode 100644 index 00000000..ae3e85cd --- /dev/null +++ b/package/libmbus/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBMBUS + bool "libmbus" + help + libmbus is a library for communicating with energy metering + devices. It supports TCP and RS232 M-bus gateways. + (M-bus standard: http://www.m-bus.com/) + + http://www.rscada.se/libmbus/ diff --git a/package/libmbus/libmbus.hash b/package/libmbus/libmbus.hash new file mode 100644 index 00000000..493bab58 --- /dev/null +++ b/package/libmbus/libmbus.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 9fca42592da0ba75df66c6f885a4dbfa916d23e65e3d1ce6e38d940d2a2719a4 libmbus-0.8.0.tar.gz +sha256 ea171a4ae443eca7186f564db2c3cc8b84c1ac343f227f92cd52ec6a948f4a74 COPYING diff --git a/package/libmbus/libmbus.mk b/package/libmbus/libmbus.mk new file mode 100644 index 00000000..61f797b5 --- /dev/null +++ b/package/libmbus/libmbus.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# libmbus +# +################################################################################ + +LIBMBUS_VERSION = 0.8.0 +LIBMBUS_SITE = http://www.rscada.se/public-dist +LIBMBUS_INSTALL_STAGING = YES +LIBMBUS_LICENSE = BSD-3-Clause +LIBMBUS_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/libmd/Config.in b/package/libmd/Config.in new file mode 100644 index 00000000..63139ad6 --- /dev/null +++ b/package/libmd/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBMD + bool "libmd" + help + This library provides message digest functions found on BSD + systems either on their libc (NetBSD, OpenBSD) or libmd + (FreeBSD, DragonflyBSD, macOS, Solaris) libraries and lacking + on others like GNU systems. + + https://www.hadrons.org/software/libmd/ diff --git a/package/libmd/libmd.hash b/package/libmd/libmd.hash new file mode 100644 index 00000000..7174b270 --- /dev/null +++ b/package/libmd/libmd.hash @@ -0,0 +1,6 @@ +# From https://archive.hadrons.org/software/libmd/libmd-1.1.0.announce +sha256 1bd6aa42275313af3141c7cf2e5b964e8b1fd488025caf2f971f43b00776b332 libmd-1.1.0.tar.xz +sha512 5d0da3337038e474fae7377bbc646d17214e72dc848a7aadc157f49333ce7b5ac1456e45d13674bd410ea08477c6115fc4282fed6c8e6a0bf63537a418c0df96 libmd-1.1.0.tar.xz + +# Hash for license file +sha256 4365ef6255ad553fce69dd4bc0e093472c5d0e41b8ea493a545cc926ce171aa6 COPYING diff --git a/package/libmd/libmd.mk b/package/libmd/libmd.mk new file mode 100644 index 00000000..8bbebc1b --- /dev/null +++ b/package/libmd/libmd.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libmd +# +################################################################################ + +LIBMD_VERSION = 1.1.0 +LIBMD_SOURCE = libmd-$(LIBMD_VERSION).tar.xz +LIBMD_SITE = https://archive.hadrons.org/software/libmd +LIBMD_LICENSE = BSD-2-Clause, BSD-3-Clause, Beerware, ISC, Public Domain +LIBMD_LICENSE_FILES = COPYING +LIBMD_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/libmdbx/Config.in b/package/libmdbx/Config.in new file mode 100644 index 00000000..a9a4ac45 --- /dev/null +++ b/package/libmdbx/Config.in @@ -0,0 +1,45 @@ +config BR2_PACKAGE_LIBMDBX + bool "libmdbx" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 + help + One of the fastest compact key-value ACID database + without WAL. libmdbx has a specific set of properties + and capabilities, focused on creating unique lightweight + solutions. + + libmdbx surpasses the legendary LMDB in terms of + reliability, features and performance. + + https://libmdbx.dqdkfa.ru + +if BR2_PACKAGE_LIBMDBX + +config BR2_PACKAGE_LIBMDBX_TOOLS + bool "install tools" + help + Install libmdbx tools for checking, dump, restore + and show statistics of databases. + +config BR2_PACKAGE_LIBMDBX_CXX + bool "C++ API" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + help + Enable modern C++11/14/17/20 API for libmdbx. + +comment "libmdbx C++ support needs a toolchain w/ C++11, gcc >= 4.8 w/o bug#64735" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \ + BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + +endif + +comment "libmdbx needs MMU, a toolchain w/ threads, gcc >= 4.4 w/ 4-byte atomics" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HAS_SYNC_4 || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 diff --git a/package/libmdbx/libmdbx.hash b/package/libmdbx/libmdbx.hash new file mode 100644 index 00000000..1dbdef7c --- /dev/null +++ b/package/libmdbx/libmdbx.hash @@ -0,0 +1,5 @@ +# Hashes from: https://libmdbx.dqdkfa.ru/release/SHA256SUMS +sha256 4637e06768a9a8fc7577e6e458e045ad1f9a8baee74996a3c88bc0ad64cbcf67 libmdbx-amalgamated-0.12.10.tar.xz + +# Locally calculated +sha256 310fe25c858a9515fc8c8d7d1f24a67c9496f84a91e0a0e41ea9975b1371e569 LICENSE diff --git a/package/libmdbx/libmdbx.mk b/package/libmdbx/libmdbx.mk new file mode 100644 index 00000000..6e0571ff --- /dev/null +++ b/package/libmdbx/libmdbx.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# libmdbx +# +################################################################################ + +LIBMDBX_VERSION = 0.12.10 +LIBMDBX_SOURCE = libmdbx-amalgamated-$(LIBMDBX_VERSION).tar.xz +LIBMDBX_SITE = https://libmdbx.dqdkfa.ru/release +LIBMDBX_SUPPORTS_IN_SOURCE_BUILD = NO +LIBMDBX_LICENSE = OLDAP-2.8 +LIBMDBX_LICENSE_FILES = LICENSE +LIBMDBX_STRIP_COMPONENTS = 0 +LIBMDBX_INSTALL_STAGING = YES + +# Set CMAKE_BUILD_TYPE to Release to remove -Werror and avoid a build failure +# with glibc < 2.12 +LIBMDBX_CONF_OPTS = \ + -DCMAKE_BUILD_TYPE=Release \ + -DMDBX_INSTALL_MANPAGES=OFF \ + -DBUILD_FOR_NATIVE_CPU=OFF \ + -DMDBX_BUILD_CXX=$(if $(BR2_PACKAGE_LIBMDBX_CXX),ON,OFF) \ + -DMDBX_BUILD_TOOLS=$(if $(BR2_PACKAGE_LIBMDBX_TOOLS),ON,OFF) + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +LIBMDBX_CONF_OPTS += -DMDBX_INSTALL_STATIC=ON +else +LIBMDBX_CONF_OPTS += -DMDBX_INSTALL_STATIC=OFF +endif + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +LIBMDBX_CONF_OPTS += \ + -DMDBX_BUILD_SHARED_LIBRARY=ON \ + -DMDBX_LINK_TOOLS_NONSTATIC=ON +else +LIBMDBX_CONF_OPTS += \ + -DMDBX_BUILD_SHARED_LIBRARY=OFF \ + -DMDBX_LINK_TOOLS_NONSTATIC=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/libmediaart/Config.in b/package/libmediaart/Config.in new file mode 100644 index 00000000..d7973444 --- /dev/null +++ b/package/libmediaart/Config.in @@ -0,0 +1,37 @@ +comment "libmediaart needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_LIBMEDIAART + bool "libmediaart" + depends on BR2_USE_MMU # glib2 + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + select BR2_PACKAGE_LIBGLIB2 + help + Library tasked with managing, extracting and handling media + art caches + + https://github.com/GNOME/libmediaart + +if BR2_PACKAGE_LIBMEDIAART + +choice + prompt "media art backend" + default BR2_PACKAGE_LIBMEDIAART_BACKEND_GDK_PIXBUF + +config BR2_PACKAGE_LIBMEDIAART_BACKEND_GDK_PIXBUF + bool "gdk-pixbuf" + select BR2_PACKAGE_GDK_PIXBUF + +config BR2_PACKAGE_LIBMEDIAART_BACKEND_QT + bool "Qt" + depends on BR2_PACKAGE_QT5 + select BR2_PACKAGE_QT5BASE_GUI + +comment "Qt backend depends on Qt5" + depends on !BR2_PACKAGE_QT5 + +endchoice + +endif # BR2_PACKAGE_LIBMEDIAART diff --git a/package/libmediaart/libmediaart.hash b/package/libmediaart/libmediaart.hash new file mode 100644 index 00000000..34094744 --- /dev/null +++ b/package/libmediaart/libmediaart.hash @@ -0,0 +1,5 @@ +# Hash from: https://download.gnome.org/sources/libmediaart/1.9/libmediaart-1.9.6.sha256sum: +sha256 c3bc5025d7db380587f9c8eb800c611f6b5a16d6b4b78fcff93f62876a677f17 libmediaart-1.9.6.tar.xz + +# Locally computed: +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LESSER diff --git a/package/libmediaart/libmediaart.mk b/package/libmediaart/libmediaart.mk new file mode 100644 index 00000000..d4480dbe --- /dev/null +++ b/package/libmediaart/libmediaart.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# libmediaart +# +################################################################################ + +LIBMEDIAART_VERSION_MAJOR = 1.9 +LIBMEDIAART_VERSION = $(LIBMEDIAART_VERSION_MAJOR).6 +LIBMEDIAART_SOURCE = libmediaart-$(LIBMEDIAART_VERSION).tar.xz +LIBMEDIAART_SITE = \ + https://download.gnome.org/sources/libmediaart/$(LIBMEDIAART_VERSION_MAJOR) +LIBMEDIAART_LICENSE = LGPL-2.1+ +LIBMEDIAART_LICENSE_FILES = COPYING.LESSER +LIBMEDIAART_INSTALL_STAGING = YES +LIBMEDIAART_DEPENDENCIES = libglib2 $(TARGET_NLS_DEPENDENCIES) +LIBMEDIAART_CONF_OPTS = -Dtests=false +LIBMEDIAART_LDFLAGS = $(TARGET_NLS_LIBS) + +ifeq ($(BR2_PACKAGE_LIBMEDIAART_BACKEND_GDK_PIXBUF),y) +LIBMEDIAART_DEPENDENCIES += gdk-pixbuf +LIBMEDIAART_CONF_OPTS += -Dimage_library=gdk-pixbuf +else ifeq ($(BR2_PACKAGE_LIBMEDIAART_BACKEND_QT),y) +# qt5 needs c++11 (since qt-5.7) +LIBMEDIAART_CONF_ENV += CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11" +LIBMEDIAART_DEPENDENCIES += qt5base +LIBMEDIAART_CONF_OPTS += -Dimage_library=qt5 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +LIBMEDIAART_LDFLAGS += -latomic +endif +endif + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +LIBMEDIAART_CONF_OPTS += -Dintrospection=true +LIBMEDIAART_DEPENDENCIES += host-vala gobject-introspection +else +LIBMEDIAART_CONF_OPTS += -Dintrospection=false +endif + +$(eval $(meson-package)) diff --git a/package/libmemcached/Config.in b/package/libmemcached/Config.in new file mode 100644 index 00000000..57c0cb46 --- /dev/null +++ b/package/libmemcached/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBMEMCACHED + bool "libmemcached" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + libMemcached is an open source C/C++ client library and tools + for the memcached server. + It has been designed to be light on memory usage, thread safe, + and provide full access to server side methods. + + https://awesomized.github.io/libmemcached + +comment "libmemcached needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libmemcached/libmemcached.hash b/package/libmemcached/libmemcached.hash new file mode 100644 index 00000000..cb9daa8a --- /dev/null +++ b/package/libmemcached/libmemcached.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 c477e1f6510e1dc698e84f3717ce690a8f65b94c616ecaa62306cce0f5e3116a libmemcached-1.1.4.tar.gz + +# Hash for license file: +sha256 65013ec8b416f28ae838ed3f23ea3ae47e5dbc70fe8492f39338e389a7970fd9 LICENSE diff --git a/package/libmemcached/libmemcached.mk b/package/libmemcached/libmemcached.mk new file mode 100644 index 00000000..b72f127a --- /dev/null +++ b/package/libmemcached/libmemcached.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# libmemcached +# +################################################################################ + +LIBMEMCACHED_VERSION = 1.1.4 +LIBMEMCACHED_SITE = \ + $(call github,awesomized,libmemcached,$(LIBMEMCACHED_VERSION)) +LIBMEMCACHED_CONF_OPTS = -DENABLE_DTRACE=OFF +LIBMEMCACHED_INSTALL_STAGING = YES +LIBMEMCACHED_DEPENDENCIES = host-bison host-flex +LIBMEMCACHED_LICENSE = BSD-3-Clause +LIBMEMCACHED_LICENSE_FILES = LICENSE +LIBMEMCACHED_CPE_ID_VENDOR = awesome + +# Force Release otherwise libraries will be suffixed by -dbg which will raise +# unexpected build failures with packages that use libmemcached (e.g. c-icap) +LIBMEMCACHED_CONF_OPTS += \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) -std=c99" \ + -DCMAKE_SKIP_RPATH=ON + +ifeq ($(BR2_PACKAGE_LIBEVENT),y) +LIBMEMCACHED_DEPENDENCIES += libevent +LIBMEMCACHED_CONF_OPTS += -DENABLE_MEMASLAP=ON +else +LIBMEMCACHED_CONF_OPTS += -DENABLE_MEMASLAP=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBMEMCACHED_DEPENDENCIES += openssl +LIBMEMCACHED_CONF_OPTS += -DENABLE_OPENSSL_CRYPTO=ON +else +LIBMEMCACHED_CONF_OPTS += -DENABLE_OPENSSL_CRYPTO=OFF +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +LIBMEMCACHED_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic +endif + +$(eval $(cmake-package)) diff --git a/package/libmhash/Config.in b/package/libmhash/Config.in new file mode 100644 index 00000000..774ff1b1 --- /dev/null +++ b/package/libmhash/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBMHASH + bool "libmhash" + help + Mhash is a free (under GNU Lesser GPL) library which provides + a uniform interface to a large number of hash algorithms. + These algorithms can be used to compute checksums, message + digests, and other signatures. + + http://mhash.sourceforge.net/ diff --git a/package/libmhash/libmhash.hash b/package/libmhash/libmhash.hash new file mode 100644 index 00000000..06c1fe48 --- /dev/null +++ b/package/libmhash/libmhash.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 56521c52a9033779154432d0ae47ad7198914785265e1f570cee21ab248dfef0 mhash-0.9.9.9.tar.bz2 +sha256 d245807f90032872d1438d741ed21e2490e1175dc8aa3afa5ddb6c8e529b58e5 COPYING diff --git a/package/libmhash/libmhash.mk b/package/libmhash/libmhash.mk new file mode 100644 index 00000000..f2da10e6 --- /dev/null +++ b/package/libmhash/libmhash.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libmhash +# +################################################################################ + +LIBMHASH_VERSION = 0.9.9.9 +LIBMHASH_SITE = http://downloads.sourceforge.net/project/mhash/mhash/$(LIBMHASH_VERSION) +LIBMHASH_SOURCE = mhash-$(LIBMHASH_VERSION).tar.bz2 +LIBMHASH_INSTALL_STAGING = YES +LIBMHASH_LICENSE = LGPL-2.0 +LIBMHASH_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/libmicrohttpd/Config.in b/package/libmicrohttpd/Config.in new file mode 100644 index 00000000..8477ef66 --- /dev/null +++ b/package/libmicrohttpd/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_LIBMICROHTTPD + bool "libmicrohttpd" + help + GNU libmicrohttpd is a small C library that makes it easy to + run an HTTP server as part of another application. + + http://www.gnu.org/software/libmicrohttpd/ + +if BR2_PACKAGE_LIBMICROHTTPD + +config BR2_PACKAGE_LIBMICROHTTPD_SSL + bool "https support" + depends on !BR2_STATIC_LIBS # gnutls + depends on BR2_USE_WCHAR + select BR2_PACKAGE_GNUTLS + help + Enable HTTPS (SSL) support. + +comment "libmicrohttpd https support needs a toolchain w/ wchar, dynamic library" + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS + +endif diff --git a/package/libmicrohttpd/libmicrohttpd.hash b/package/libmicrohttpd/libmicrohttpd.hash new file mode 100644 index 00000000..f1b3f8b7 --- /dev/null +++ b/package/libmicrohttpd/libmicrohttpd.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a89e09fc9b4de34dde19f4fcb4faaa1ce10299b9908db1132bbfa1de47882b94 libmicrohttpd-1.0.1.tar.gz +sha256 7399547209438c93f9b90297954698773d4846cea44cde5ca982c84c45952a3b COPYING diff --git a/package/libmicrohttpd/libmicrohttpd.mk b/package/libmicrohttpd/libmicrohttpd.mk new file mode 100644 index 00000000..6998ffd1 --- /dev/null +++ b/package/libmicrohttpd/libmicrohttpd.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# libmicrohttpd +# +################################################################################ + +LIBMICROHTTPD_VERSION = 1.0.1 +LIBMICROHTTPD_SITE = $(BR2_GNU_MIRROR)/libmicrohttpd +LIBMICROHTTPD_LICENSE_FILES = COPYING +LIBMICROHTTPD_CPE_ID_VENDOR = gnu +LIBMICROHTTPD_INSTALL_STAGING = YES +LIBMICROHTTPD_CONF_OPTS = --disable-curl --disable-examples +LIBMICROHTTPD_CFLAGS = $(TARGET_CFLAGS) -std=c99 + +LIBMICROHTTPD_CONF_ENV += CFLAGS="$(LIBMICROHTTPD_CFLAGS)" + +ifeq ($(BR2_PACKAGE_LIBMICROHTTPD_SSL),y) +LIBMICROHTTPD_LICENSE = LGPL-2.1+ +LIBMICROHTTPD_DEPENDENCIES += host-pkgconf gnutls +LIBMICROHTTPD_CONF_OPTS += --enable-https --with-gnutls=$(STAGING_DIR)/usr +else +LIBMICROHTTPD_LICENSE = LGPL-2.1+ or eCos +LIBMICROHTTPD_CONF_OPTS += --disable-https +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +LIBMICROHTTPD_CONF_OPTS += --with-threads=auto +else +LIBMICROHTTPD_CONF_OPTS += --with-threads=none +endif + +$(eval $(autotools-package)) diff --git a/package/libminiupnpc/Config.in b/package/libminiupnpc/Config.in new file mode 100644 index 00000000..51f4b43b --- /dev/null +++ b/package/libminiupnpc/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBMINIUPNPC + bool "libminiupnpc" + help + The UPnP protocol is supported by most home adsl/cable routers + and Microsoft Windows 2K/XP. The aim of the MiniUPnP project + is to bring a free software solution to support the "Internet + Gateway Device" part of the protocol. + + Miniupnpc aims at the simplest library possible, with the + smallest footprint and no dependencies to other libraries such + as XML parsers or HTTP implementations. All the code is pure + ANSI C. + + http://miniupnp.free.fr diff --git a/package/libminiupnpc/libminiupnpc.hash b/package/libminiupnpc/libminiupnpc.hash new file mode 100644 index 00000000..4f7e7c7a --- /dev/null +++ b/package/libminiupnpc/libminiupnpc.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 b0c3a27056840fd0ec9328a5a9bac3dc5e0ec6d2e8733349cf577b0aa1e70ac1 miniupnpc-2.2.7.tar.gz +sha256 7480ae23b082c05ad9823896163d78f3a96f1beadce51f29c96cf898545c27e5 LICENSE diff --git a/package/libminiupnpc/libminiupnpc.mk b/package/libminiupnpc/libminiupnpc.mk new file mode 100644 index 00000000..3bd4ee6a --- /dev/null +++ b/package/libminiupnpc/libminiupnpc.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# libminiupnpc +# +################################################################################ + +LIBMINIUPNPC_VERSION = 2.2.7 +LIBMINIUPNPC_SOURCE = miniupnpc-$(LIBMINIUPNPC_VERSION).tar.gz +LIBMINIUPNPC_SITE = http://miniupnp.free.fr/files +LIBMINIUPNPC_INSTALL_STAGING = YES +LIBMINIUPNPC_LICENSE = BSD-3-Clause +LIBMINIUPNPC_LICENSE_FILES = LICENSE +LIBMINIUPNPC_CPE_ID_VENDOR = miniupnp_project +LIBMINIUPNPC_CPE_ID_PRODUCT = miniupnpc +LIBMINIUPNPC_CONF_OPTS = -DUPNPC_BUILD_SAMPLE=OFF -DUPNPC_BUILD_TESTS=OFF + +ifeq ($(BR2_STATIC_LIBS),y) +LIBMINIUPNPC_CONF_OPTS += -DUPNPC_BUILD_SHARED=OFF -DUPNPC_BUILD_STATIC=ON +else ifeq ($(BR2_SHARED_LIBS),y) +LIBMINIUPNPC_CONF_OPTS += -DUPNPC_BUILD_SHARED=ON -DUPNPC_BUILD_STATIC=OFF +else +LIBMINIUPNPC_CONF_OPTS += -DUPNPC_BUILD_SHARED=ON -DUPNPC_BUILD_STATIC=ON +endif + +$(eval $(cmake-package)) diff --git a/package/libmms/Config.in b/package/libmms/Config.in new file mode 100644 index 00000000..11df6e51 --- /dev/null +++ b/package/libmms/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LIBMMS + bool "libmms" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + help + LibMMS is a common library for parsing mms:// and mmsh:// + type network streams. These are commonly used to stream + Windows Media Video content over the web. LibMMS itself is + only for receiving MMS stream, it doesn't handle sending at + all. + + http://launchpad.net/libmms + +comment "libmms needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libmms/libmms.hash b/package/libmms/libmms.hash new file mode 100644 index 00000000..f424e3af --- /dev/null +++ b/package/libmms/libmms.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 3c05e05aebcbfcc044d9e8c2d4646cd8359be39a3f0ba8ce4e72a9094bee704f libmms-0.6.4.tar.gz +sha256 d80c9d084ebfb50ea1ed91bfbc2410d6ce542097a32c43b00781b83adcb8c77f COPYING.LIB diff --git a/package/libmms/libmms.mk b/package/libmms/libmms.mk new file mode 100644 index 00000000..1140996c --- /dev/null +++ b/package/libmms/libmms.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libmms +# +################################################################################ + +LIBMMS_VERSION = 0.6.4 +LIBMMS_SITE = http://downloads.sourceforge.net/project/libmms/libmms/$(LIBMMS_VERSION) +LIBMMS_INSTALL_STAGING = YES +LIBMMS_DEPENDENCIES = host-pkgconf libglib2 +LIBMMS_LICENSE = LGPL-2.1+ +LIBMMS_LICENSE_FILES = COPYING.LIB +LIBMMS_CPE_ID_VALID = YES + +$(eval $(autotools-package)) diff --git a/package/libmng/0001-jpeg-9a.patch b/package/libmng/0001-jpeg-9a.patch new file mode 100644 index 00000000..5d651335 --- /dev/null +++ b/package/libmng/0001-jpeg-9a.patch @@ -0,0 +1,22 @@ +Adaptation from gentoo patch for libmng 2.0.3 +See https://bugs.gentoo.org/show_bug.cgi?id=520906 + +Signed-off-by: Gustavo Zacarias + +diff -Nura libmng-2.0.3.orig/libmng_types.h libmng-2.0.3/libmng_types.h +--- libmng-2.0.3.orig/libmng_types.h 2015-09-24 10:32:05.500984924 -0300 ++++ libmng-2.0.3/libmng_types.h 2015-09-24 10:33:11.145254771 -0300 +@@ -200,13 +200,6 @@ + #undef FAR /* possibly defined by zlib or lcms */ + #endif + #define JPEG_INTERNAL_OPTIONS /* for RGB_PIXELSIZE */ +-/* There has been a change in jpeg-9 : */ +-#if !defined(HAVE_BOOLEAN) && !defined(_WIN32) +-#define HAVE_BOOLEAN +-#endif +-#ifndef _WIN32 +-typedef int boolean; +-#endif + /* For jpegsrc.v09a: */ + #include + #include diff --git a/package/libmng/Config.in b/package/libmng/Config.in new file mode 100644 index 00000000..a0bd59c8 --- /dev/null +++ b/package/libmng/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBMNG + bool "libmng" + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_ZLIB + help + The reference library for reading, displaying, writing and + examining Multiple-Image Network Graphics. + + http://sourceforge.net/projects/libmng/ diff --git a/package/libmng/libmng.hash b/package/libmng/libmng.hash new file mode 100644 index 00000000..df078dcf --- /dev/null +++ b/package/libmng/libmng.hash @@ -0,0 +1,6 @@ +# From http://sourceforge.net/projects/libmng/files/libmng-devel/2.0.3/ +md5 e9e899adb1b681b17f14d91e261878c5 libmng-2.0.3.tar.xz +sha1 0f141482ffcef6f8cd4413f945a59310ac2e49af libmng-2.0.3.tar.xz + +# Hash for license file: +sha256 ba280734838eb3f22a85b92a7e62de357d4d4c325029dce723b0cb125c417c35 LICENSE diff --git a/package/libmng/libmng.mk b/package/libmng/libmng.mk new file mode 100644 index 00000000..8ffd74c0 --- /dev/null +++ b/package/libmng/libmng.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# libmng +# +################################################################################ + +LIBMNG_VERSION = 2.0.3 +LIBMNG_SITE = http://downloads.sourceforge.net/project/libmng/libmng-devel/$(LIBMNG_VERSION) +LIBMNG_SOURCE = libmng-$(LIBMNG_VERSION).tar.xz +LIBMNG_DEPENDENCIES = jpeg zlib +LIBMNG_CONF_OPTS = --without-lcms +LIBMNG_INSTALL_STAGING = YES +LIBMNG_LICENSE = libmng license +LIBMNG_LICENSE_FILES = LICENSE + +ifeq ($(BR2_PACKAGE_LCMS2),y) +LIBMNG_DEPENDENCIES += lcms2 +else +LIBMNG_CONF_OPTS += --without-lcms2 +endif + +$(eval $(autotools-package)) diff --git a/package/libmnl/0001-examples-add-rtnl-link-can.patch b/package/libmnl/0001-examples-add-rtnl-link-can.patch new file mode 100644 index 00000000..2bd034d0 --- /dev/null +++ b/package/libmnl/0001-examples-add-rtnl-link-can.patch @@ -0,0 +1,504 @@ +From 80442c4e32cde0b27b471c5c9688ee8488f14bec Mon Sep 17 00:00:00 2001 +From: Dario Binacchi +Date: Thu, 20 Apr 2023 21:21:15 +0200 +Subject: [PATCH] examples: add rtnl-link-can + +I developed this application to test the Linux kernel series referenced below. +I could not use the iproute2 package since the microcontroller is without MMU. + +On suggestion of the Linux CAN subsystem maintainer I decided to upstream it. + +Cc: Marc Kleine-Budde +Link: https://marc.info/?l=linux-netdev&m=167999323611710&w=2 +Signed-off-by: Dario Binacchi +Signed-off-by: Florian Westphal +Upstream: https://git.netfilter.org/libmnl/commit/?id=80442c4e32cde0b27b471c5c9688ee8488f14bec +--- + examples/rtnl/Makefile.am | 4 + + examples/rtnl/rtnl-link-can.c | 452 ++++++++++++++++++++++++++++++++++ + 2 files changed, 456 insertions(+) + create mode 100644 examples/rtnl/rtnl-link-can.c + +diff --git a/examples/rtnl/Makefile.am b/examples/rtnl/Makefile.am +index dd8a77d914b6..5a28e0965926 100644 +--- a/examples/rtnl/Makefile.am ++++ b/examples/rtnl/Makefile.am +@@ -2,6 +2,7 @@ include $(top_srcdir)/Make_global.am + + check_PROGRAMS = rtnl-addr-add \ + rtnl-addr-dump \ ++ rtnl-link-can \ + rtnl-link-dump rtnl-link-dump2 rtnl-link-dump3 \ + rtnl-link-event \ + rtnl-link-set \ +@@ -13,6 +14,9 @@ check_PROGRAMS = rtnl-addr-add \ + rtnl_addr_add_SOURCES = rtnl-addr-add.c + rtnl_addr_add_LDADD = ../../src/libmnl.la + ++rtnl_link_can_SOURCES = rtnl-link-can.c ++rtnl_link_can_LDADD = ../../src/libmnl.la ++ + rtnl_addr_dump_SOURCES = rtnl-addr-dump.c + rtnl_addr_dump_LDADD = ../../src/libmnl.la + +diff --git a/examples/rtnl/rtnl-link-can.c b/examples/rtnl/rtnl-link-can.c +new file mode 100644 +index 000000000000..8ed70d141475 +--- /dev/null ++++ b/examples/rtnl/rtnl-link-can.c +@@ -0,0 +1,452 @@ ++/* This example is placed in the public domain. */ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++ ++static void incomplete_command(void) __attribute__((noreturn)); ++ ++#define NEXT_ARG() \ ++ do { \ ++ if (argc <= 0) incomplete_command(); \ ++ argv++; \ ++ argc--; \ ++ } while (0) ++ ++static void duparg2(const char *key, const char *arg) ++{ ++ fprintf(stderr, ++ "Error: either \"%s\" is duplicate, or \"%s\" is a garbage.\n", ++ key, arg); ++ exit(-1); ++} ++ ++static void incomplete_command(void) ++{ ++ fprintf(stderr, "Command line is not complete. Try option \"help\"\n"); ++ exit(EXIT_FAILURE); ++} ++ ++/* Returns false if 'prefix' is a not empty prefix of 'string'. ++ */ ++static bool matches(const char *prefix, const char *string) ++{ ++ if (!*prefix) ++ return true; ++ ++ while (*string && *prefix == *string) { ++ prefix++; ++ string++; ++ } ++ ++ return !!*prefix; ++} ++ ++static int get_u16(__u16 *val, const char *arg, int base) ++{ ++ unsigned long res; ++ char *ptr; ++ ++ if (!arg || !*arg) ++ return -1; ++ ++ res = strtoul(arg, &ptr, base); ++ ++ /* empty string or trailing non-digits */ ++ if (!ptr || ptr == arg || *ptr) ++ return -1; ++ ++ /* overflow */ ++ if (res == ULONG_MAX && errno == ERANGE) ++ return -1; ++ ++ if (res > 0xFFFFUL) ++ return -1; ++ ++ *val = res; ++ return 0; ++} ++ ++static int get_u32(__u32 *val, const char *arg, int base) ++{ ++ unsigned long res; ++ char *ptr; ++ ++ if (!arg || !*arg) ++ return -1; ++ ++ res = strtoul(arg, &ptr, base); ++ ++ /* empty string or trailing non-digits */ ++ if (!ptr || ptr == arg || *ptr) ++ return -1; ++ ++ /* overflow */ ++ if (res == ULONG_MAX && errno == ERANGE) ++ return -1; ++ ++ /* in case UL > 32 bits */ ++ if (res > 0xFFFFFFFFUL) ++ return -1; ++ ++ *val = res; ++ return 0; ++} ++ ++static int get_float(float *val, const char *arg) ++{ ++ float res; ++ char *ptr; ++ ++ if (!arg || !*arg) ++ return -1; ++ ++ res = strtof(arg, &ptr); ++ if (!ptr || ptr == arg || *ptr) ++ return -1; ++ ++ *val = res; ++ return 0; ++} ++ ++static void set_ctrlmode(char *name, char *arg, ++ struct can_ctrlmode *cm, __u32 flags) ++{ ++ if (strcmp(arg, "on") == 0) { ++ cm->flags |= flags; ++ } else if (strcmp(arg, "off") != 0) { ++ fprintf(stderr, ++ "Error: argument of \"%s\" must be \"on\" or \"off\", not \"%s\"\n", ++ name, arg); ++ exit(EXIT_FAILURE); ++ } ++ ++ cm->mask |= flags; ++} ++ ++static void invarg(const char *msg, const char *arg) ++{ ++ fprintf(stderr, "Error: argument \"%s\" is wrong: %s\n", arg, msg); ++ exit(-1); ++} ++ ++static void print_usage(FILE *f) ++{ ++ fprintf(f, ++ "Usage: ip link set DEVICE type can\n" ++ "\t[ bitrate BITRATE [ sample-point SAMPLE-POINT] ] |\n" ++ "\t[ tq TQ prop-seg PROP_SEG phase-seg1 PHASE-SEG1\n \t phase-seg2 PHASE-SEG2 [ sjw SJW ] ]\n" ++ "\n" ++ "\t[ dbitrate BITRATE [ dsample-point SAMPLE-POINT] ] |\n" ++ "\t[ dtq TQ dprop-seg PROP_SEG dphase-seg1 PHASE-SEG1\n \t dphase-seg2 PHASE-SEG2 [ dsjw SJW ] ]\n" ++ "\n" ++ "\t[ loopback { on | off } ]\n" ++ "\t[ listen-only { on | off } ]\n" ++ "\t[ triple-sampling { on | off } ]\n" ++ "\t[ one-shot { on | off } ]\n" ++ "\t[ berr-reporting { on | off } ]\n" ++ "\t[ fd { on | off } ]\n" ++ "\t[ fd-non-iso { on | off } ]\n" ++ "\t[ presume-ack { on | off } ]\n" ++ "\t[ cc-len8-dlc { on | off } ]\n" ++ "\n" ++ "\t[ restart-ms TIME-MS ]\n" ++ "\t[ restart ]\n" ++ "\n" ++ "\t[ termination { 0..65535 } ]\n" ++ "\n" ++ "\tWhere: BITRATE := { 1..1000000 }\n" ++ "\t SAMPLE-POINT := { 0.000..0.999 }\n" ++ "\t TQ := { NUMBER }\n" ++ "\t PROP-SEG := { 1..8 }\n" ++ "\t PHASE-SEG1 := { 1..8 }\n" ++ "\t PHASE-SEG2 := { 1..8 }\n" ++ "\t SJW := { 1..4 }\n" ++ "\t RESTART-MS := { 0 | NUMBER }\n" ++ ); ++} ++ ++static void usage(void) ++{ ++ print_usage(stderr); ++} ++ ++static int iplink_set_can_parse(int argc, char **argv, struct nlmsghdr *nlh) ++{ ++ struct can_bittiming bt = {}, dbt = {}; ++ struct can_ctrlmode cm = {}; ++ ++ while (argc > 0) { ++ if (matches(*argv, "bitrate") == 0) { ++ NEXT_ARG(); ++ if (get_u32(&bt.bitrate, *argv, 0)) ++ invarg("invalid \"bitrate\" value\n", *argv); ++ } else if (matches(*argv, "sample-point") == 0) { ++ float sp; ++ ++ NEXT_ARG(); ++ if (get_float(&sp, *argv)) ++ invarg("invalid \"sample-point\" value\n", ++ *argv); ++ ++ bt.sample_point = (__u32)(sp * 1000); ++ } else if (matches(*argv, "tq") == 0) { ++ NEXT_ARG(); ++ if (get_u32(&bt.tq, *argv, 0)) ++ invarg("invalid \"tq\" value\n", *argv); ++ } else if (matches(*argv, "prop-seg") == 0) { ++ NEXT_ARG(); ++ if (get_u32(&bt.prop_seg, *argv, 0)) ++ invarg("invalid \"prop-seg\" value\n", *argv); ++ } else if (matches(*argv, "phase-seg1") == 0) { ++ NEXT_ARG(); ++ if (get_u32(&bt.phase_seg1, *argv, 0)) ++ invarg("invalid \"phase-seg1\" value\n", *argv); ++ } else if (matches(*argv, "phase-seg2") == 0) { ++ NEXT_ARG(); ++ if (get_u32(&bt.phase_seg2, *argv, 0)) ++ invarg("invalid \"phase-seg2\" value\n", *argv); ++ } else if (matches(*argv, "sjw") == 0) { ++ NEXT_ARG(); ++ if (get_u32(&bt.sjw, *argv, 0)) ++ invarg("invalid \"sjw\" value\n", *argv); ++ } else if (matches(*argv, "dbitrate") == 0) { ++ NEXT_ARG(); ++ if (get_u32(&dbt.bitrate, *argv, 0)) ++ invarg("invalid \"dbitrate\" value\n", *argv); ++ } else if (matches(*argv, "dsample-point") == 0) { ++ float sp; ++ ++ NEXT_ARG(); ++ if (get_float(&sp, *argv)) ++ invarg("invalid \"dsample-point\" value\n", *argv); ++ dbt.sample_point = (__u32)(sp * 1000); ++ } else if (matches(*argv, "dtq") == 0) { ++ NEXT_ARG(); ++ if (get_u32(&dbt.tq, *argv, 0)) ++ invarg("invalid \"dtq\" value\n", *argv); ++ } else if (matches(*argv, "dprop-seg") == 0) { ++ NEXT_ARG(); ++ if (get_u32(&dbt.prop_seg, *argv, 0)) ++ invarg("invalid \"dprop-seg\" value\n", *argv); ++ } else if (matches(*argv, "dphase-seg1") == 0) { ++ NEXT_ARG(); ++ if (get_u32(&dbt.phase_seg1, *argv, 0)) ++ invarg("invalid \"dphase-seg1\" value\n", *argv); ++ } else if (matches(*argv, "dphase-seg2") == 0) { ++ NEXT_ARG(); ++ if (get_u32(&dbt.phase_seg2, *argv, 0)) ++ invarg("invalid \"dphase-seg2\" value\n", *argv); ++ } else if (matches(*argv, "dsjw") == 0) { ++ NEXT_ARG(); ++ if (get_u32(&dbt.sjw, *argv, 0)) ++ invarg("invalid \"dsjw\" value\n", *argv); ++ } else if (matches(*argv, "loopback") == 0) { ++ NEXT_ARG(); ++ set_ctrlmode("loopback", *argv, &cm, ++ CAN_CTRLMODE_LOOPBACK); ++ } else if (matches(*argv, "listen-only") == 0) { ++ NEXT_ARG(); ++ set_ctrlmode("listen-only", *argv, &cm, ++ CAN_CTRLMODE_LISTENONLY); ++ } else if (matches(*argv, "triple-sampling") == 0) { ++ NEXT_ARG(); ++ set_ctrlmode("triple-sampling", *argv, &cm, ++ CAN_CTRLMODE_3_SAMPLES); ++ } else if (matches(*argv, "one-shot") == 0) { ++ NEXT_ARG(); ++ set_ctrlmode("one-shot", *argv, &cm, ++ CAN_CTRLMODE_ONE_SHOT); ++ } else if (matches(*argv, "berr-reporting") == 0) { ++ NEXT_ARG(); ++ set_ctrlmode("berr-reporting", *argv, &cm, ++ CAN_CTRLMODE_BERR_REPORTING); ++ } else if (matches(*argv, "fd") == 0) { ++ NEXT_ARG(); ++ set_ctrlmode("fd", *argv, &cm, ++ CAN_CTRLMODE_FD); ++ } else if (matches(*argv, "fd-non-iso") == 0) { ++ NEXT_ARG(); ++ set_ctrlmode("fd-non-iso", *argv, &cm, ++ CAN_CTRLMODE_FD_NON_ISO); ++ } else if (matches(*argv, "presume-ack") == 0) { ++ NEXT_ARG(); ++ set_ctrlmode("presume-ack", *argv, &cm, ++ CAN_CTRLMODE_PRESUME_ACK); ++#if defined(CAN_CTRLMODE_CC_LEN8_DLC) ++ } else if (matches(*argv, "cc-len8-dlc") == 0) { ++ NEXT_ARG(); ++ set_ctrlmode("cc-len8-dlc", *argv, &cm, ++ CAN_CTRLMODE_CC_LEN8_DLC); ++#endif ++ } else if (matches(*argv, "restart") == 0) { ++ __u32 val = 1; ++ ++ mnl_attr_put(nlh, IFLA_CAN_RESTART, sizeof(val), &val); ++ } else if (matches(*argv, "restart-ms") == 0) { ++ __u32 val; ++ ++ NEXT_ARG(); ++ if (get_u32(&val, *argv, 0)) ++ invarg("invalid \"restart-ms\" value\n", *argv); ++ ++ mnl_attr_put(nlh, IFLA_CAN_RESTART_MS, sizeof(val), &val); ++ } else if (matches(*argv, "termination") == 0) { ++ __u16 val; ++ ++ NEXT_ARG(); ++ if (get_u16(&val, *argv, 0)) ++ invarg("invalid \"termination\" value\n", ++ *argv); ++ ++ mnl_attr_put(nlh, IFLA_CAN_TERMINATION, sizeof(val), &val); ++ } else { ++ fprintf(stderr, "unknown option \"%s\"\n", *argv); ++ usage(); ++ return -1; ++ } ++ ++ NEXT_ARG(); ++ } ++ ++ if (bt.bitrate || bt.tq) ++ mnl_attr_put(nlh, IFLA_CAN_BITTIMING, sizeof(bt), &bt); ++ ++ if (cm.mask) ++ mnl_attr_put(nlh, IFLA_CAN_CTRLMODE, sizeof(cm), &cm); ++ ++ return 0; ++} ++ ++int main(int argc, char *argv[]) ++{ ++ char buf[MNL_SOCKET_BUFFER_SIZE]; ++ struct mnl_socket *nl; ++ struct nlmsghdr *nlh; ++ struct ifinfomsg *ifm; ++ int ret; ++ unsigned int seq, portid; ++ struct nlattr *linkinfo, *data; ++ const char *signatures[] = { ++ "ip", "link", "set", "" ++ }; ++ char *type = NULL; ++ char *dev = NULL; ++ int i; ++ ++ NEXT_ARG(); ++ for (i = 0; argc > 0 && signatures[i][0];) { ++ if (matches(*argv, signatures[i])) ++ incomplete_command(); ++ ++ NEXT_ARG(); ++ i++; ++ } ++ ++ if (argc == 0) ++ incomplete_command(); ++ ++ nlh = mnl_nlmsg_put_header(buf); ++ nlh->nlmsg_type = RTM_NEWLINK; ++ nlh->nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; ++ nlh->nlmsg_seq = seq = time(NULL); ++ ifm = mnl_nlmsg_put_extra_header(nlh, sizeof(*ifm)); ++ ifm->ifi_family = AF_UNSPEC; ++ ifm->ifi_change = 0; ++ ifm->ifi_flags = 0; ++ ++ while (argc > 0) { ++ if (matches(*argv, "up") == 0) { ++ ifm->ifi_change |= IFF_UP; ++ ifm->ifi_flags |= IFF_UP; ++ } else if (matches(*argv, "down") == 0) { ++ ifm->ifi_change |= IFF_UP; ++ ifm->ifi_flags &= ~IFF_UP; ++ } else if (matches(*argv, "type") == 0) { ++ NEXT_ARG(); ++ type = *argv; ++ NEXT_ARG(); ++ break; ++ } else if (matches(*argv, "help") == 0) { ++ usage(); ++ exit(EXIT_FAILURE); ++ } else { ++ if (matches(*argv, "dev") == 0) ++ NEXT_ARG(); ++ ++ if (dev) ++ duparg2("dev", *argv); ++ ++ dev = *argv; ++ } ++ ++ NEXT_ARG(); ++ } ++ ++ if (dev) ++ mnl_attr_put_str(nlh, IFLA_IFNAME, dev); ++ ++ if (type) { ++ if (matches(type, "can")) { ++ fprintf(stderr, "unknown type \"%s\"\n", type); ++ usage(); ++ exit(EXIT_FAILURE); ++ } ++ ++ linkinfo = mnl_attr_nest_start(nlh, IFLA_LINKINFO); ++ mnl_attr_put_str(nlh, IFLA_INFO_KIND, "can"); ++ data = mnl_attr_nest_start(nlh, IFLA_INFO_DATA); ++ ++ if (iplink_set_can_parse(argc, argv, nlh)) ++ return -1; ++ ++ mnl_attr_nest_end(nlh, data); ++ mnl_attr_nest_end(nlh, linkinfo); ++ } ++ ++ nl = mnl_socket_open(NETLINK_ROUTE); ++ if (nl == NULL) { ++ perror("mnl_socket_open"); ++ exit(EXIT_FAILURE); ++ } ++ ++ if (mnl_socket_bind(nl, 0, MNL_SOCKET_AUTOPID) < 0) { ++ perror("mnl_socket_bind"); ++ exit(EXIT_FAILURE); ++ } ++ ++ portid = mnl_socket_get_portid(nl); ++ ++ mnl_nlmsg_fprintf(stdout, nlh, nlh->nlmsg_len, ++ sizeof(struct ifinfomsg)); ++ ++ if (mnl_socket_sendto(nl, nlh, nlh->nlmsg_len) < 0) { ++ perror("mnl_socket_sendto"); ++ exit(EXIT_FAILURE); ++ } ++ ++ ret = mnl_socket_recvfrom(nl, buf, sizeof(buf)); ++ if (ret == -1) { ++ perror("mnl_socket_recvfrom"); ++ exit(EXIT_FAILURE); ++ } ++ ++ ret = mnl_cb_run(buf, ret, seq, portid, NULL, NULL); ++ if (ret == -1) { ++ perror("mnl_cb_run"); ++ exit(EXIT_FAILURE); ++ } ++ ++ mnl_socket_close(nl); ++ ++ return 0; ++} +-- +2.32.0 + diff --git a/package/libmnl/0002-include-cache-copy-of-can.h-and-can-netlink.h.patch b/package/libmnl/0002-include-cache-copy-of-can.h-and-can-netlink.h.patch new file mode 100644 index 00000000..38948cd6 --- /dev/null +++ b/package/libmnl/0002-include-cache-copy-of-can.h-and-can-netlink.h.patch @@ -0,0 +1,548 @@ +From 46e6d487f9406001318e97d0349bcda07f923908 Mon Sep 17 00:00:00 2001 +From: Dario Binacchi +Date: Sat, 20 May 2023 10:22:52 +0200 +Subject: [PATCH] include: cache copy of can.h and can/netlink.h + +Ensure that rtnl-link-can example compiles in any installation. These +headers are not installed in the system. + +Signed-off-by: Dario Binacchi +Upstream: https://git.netfilter.org/libmnl/commit/?id=0b242d346dddba85384dd784759fe2b77f063e12 +--- + configure.ac | 2 +- + include/linux/Makefile.am | 4 +- + include/linux/can.h | 298 ++++++++++++++++++++++++++++++++++ + include/linux/can/Makefile.am | 1 + + include/linux/can/netlink.h | 185 +++++++++++++++++++++ + 5 files changed, 487 insertions(+), 3 deletions(-) + create mode 100644 include/linux/can.h + create mode 100644 include/linux/can/Makefile.am + create mode 100644 include/linux/can/netlink.h + +diff --git a/configure.ac b/configure.ac +index 314481dae87e..c8a56c6d0550 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -27,7 +27,7 @@ regular_CFLAGS="-Wall -Waggregate-return -Wmissing-declarations \ + -Wformat=2 -pipe" + AC_SUBST([regular_CPPFLAGS]) + AC_SUBST([regular_CFLAGS]) +-AC_CONFIG_FILES([Makefile src/Makefile include/Makefile include/libmnl/Makefile include/linux/Makefile include/linux/netfilter/Makefile examples/Makefile examples/genl/Makefile examples/kobject/Makefile examples/netfilter/Makefile examples/rtnl/Makefile libmnl.pc doxygen.cfg doxygen/Makefile]) ++AC_CONFIG_FILES([Makefile src/Makefile include/Makefile include/libmnl/Makefile include/linux/Makefile include/linux/can/Makefile include/linux/netfilter/Makefile examples/Makefile examples/genl/Makefile examples/kobject/Makefile examples/netfilter/Makefile examples/rtnl/Makefile libmnl.pc doxygen.cfg doxygen/Makefile]) + + AC_ARG_WITH([doxygen], [AS_HELP_STRING([--with-doxygen], + [create doxygen documentation])], +diff --git a/include/linux/Makefile.am b/include/linux/Makefile.am +index 08c600b5fa42..ee0993dae186 100644 +--- a/include/linux/Makefile.am ++++ b/include/linux/Makefile.am +@@ -1,2 +1,2 @@ +-SUBDIRS = netfilter +-noinst_HEADERS = netlink.h socket.h ++SUBDIRS = can netfilter ++noinst_HEADERS = can.h netlink.h socket.h +diff --git a/include/linux/can.h b/include/linux/can.h +new file mode 100644 +index 000000000000..2c6a3ee7d32d +--- /dev/null ++++ b/include/linux/can.h +@@ -0,0 +1,298 @@ ++/* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */ ++/* ++ * linux/can.h ++ * ++ * Definitions for CAN network layer (socket addr / CAN frame / CAN filter) ++ * ++ * Authors: Oliver Hartkopp ++ * Urs Thuermann ++ * Copyright (c) 2002-2007 Volkswagen Group Electronic Research ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. Neither the name of Volkswagen nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * Alternatively, provided that this notice is retained in full, this ++ * software may be distributed under the terms of the GNU General ++ * Public License ("GPL") version 2, in which case the provisions of the ++ * GPL apply INSTEAD OF those given above. ++ * ++ * The provided data structures and external interfaces from this code ++ * are not restricted to be used by modules with a GPL compatible license. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "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 THE COPYRIGHT ++ * OWNER OR CONTRIBUTORS 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. ++ */ ++ ++#ifndef _UAPI_CAN_H ++#define _UAPI_CAN_H ++ ++#include ++#include ++#include /* for offsetof */ ++ ++/* controller area network (CAN) kernel definitions */ ++ ++/* special address description flags for the CAN_ID */ ++#define CAN_EFF_FLAG 0x80000000U /* EFF/SFF is set in the MSB */ ++#define CAN_RTR_FLAG 0x40000000U /* remote transmission request */ ++#define CAN_ERR_FLAG 0x20000000U /* error message frame */ ++ ++/* valid bits in CAN ID for frame formats */ ++#define CAN_SFF_MASK 0x000007FFU /* standard frame format (SFF) */ ++#define CAN_EFF_MASK 0x1FFFFFFFU /* extended frame format (EFF) */ ++#define CAN_ERR_MASK 0x1FFFFFFFU /* omit EFF, RTR, ERR flags */ ++#define CANXL_PRIO_MASK CAN_SFF_MASK /* 11 bit priority mask */ ++ ++/* ++ * Controller Area Network Identifier structure ++ * ++ * bit 0-28 : CAN identifier (11/29 bit) ++ * bit 29 : error message frame flag (0 = data frame, 1 = error message) ++ * bit 30 : remote transmission request flag (1 = rtr frame) ++ * bit 31 : frame format flag (0 = standard 11 bit, 1 = extended 29 bit) ++ */ ++typedef __u32 canid_t; ++ ++#define CAN_SFF_ID_BITS 11 ++#define CAN_EFF_ID_BITS 29 ++#define CANXL_PRIO_BITS CAN_SFF_ID_BITS ++ ++/* ++ * Controller Area Network Error Message Frame Mask structure ++ * ++ * bit 0-28 : error class mask (see include/uapi/linux/can/error.h) ++ * bit 29-31 : set to zero ++ */ ++typedef __u32 can_err_mask_t; ++ ++/* CAN payload length and DLC definitions according to ISO 11898-1 */ ++#define CAN_MAX_DLC 8 ++#define CAN_MAX_RAW_DLC 15 ++#define CAN_MAX_DLEN 8 ++ ++/* CAN FD payload length and DLC definitions according to ISO 11898-7 */ ++#define CANFD_MAX_DLC 15 ++#define CANFD_MAX_DLEN 64 ++ ++/* ++ * CAN XL payload length and DLC definitions according to ISO 11898-1 ++ * CAN XL DLC ranges from 0 .. 2047 => data length from 1 .. 2048 byte ++ */ ++#define CANXL_MIN_DLC 0 ++#define CANXL_MAX_DLC 2047 ++#define CANXL_MAX_DLC_MASK 0x07FF ++#define CANXL_MIN_DLEN 1 ++#define CANXL_MAX_DLEN 2048 ++ ++/** ++ * struct can_frame - Classical CAN frame structure (aka CAN 2.0B) ++ * @can_id: CAN ID of the frame and CAN_*_FLAG flags, see canid_t definition ++ * @len: CAN frame payload length in byte (0 .. 8) ++ * @can_dlc: deprecated name for CAN frame payload length in byte (0 .. 8) ++ * @__pad: padding ++ * @__res0: reserved / padding ++ * @len8_dlc: optional DLC value (9 .. 15) at 8 byte payload length ++ * len8_dlc contains values from 9 .. 15 when the payload length is ++ * 8 bytes but the DLC value (see ISO 11898-1) is greater then 8. ++ * CAN_CTRLMODE_CC_LEN8_DLC flag has to be enabled in CAN driver. ++ * @data: CAN frame payload (up to 8 byte) ++ */ ++struct can_frame { ++ canid_t can_id; /* 32 bit CAN_ID + EFF/RTR/ERR flags */ ++ union { ++ /* CAN frame payload length in byte (0 .. CAN_MAX_DLEN) ++ * was previously named can_dlc so we need to carry that ++ * name for legacy support ++ */ ++ __u8 len; ++ __u8 can_dlc; /* deprecated */ ++ } __attribute__((packed)); /* disable padding added in some ABIs */ ++ __u8 __pad; /* padding */ ++ __u8 __res0; /* reserved / padding */ ++ __u8 len8_dlc; /* optional DLC for 8 byte payload length (9 .. 15) */ ++ __u8 data[CAN_MAX_DLEN] __attribute__((aligned(8))); ++}; ++ ++/* ++ * defined bits for canfd_frame.flags ++ * ++ * The use of struct canfd_frame implies the FD Frame (FDF) bit to ++ * be set in the CAN frame bitstream on the wire. The FDF bit switch turns ++ * the CAN controllers bitstream processor into the CAN FD mode which creates ++ * two new options within the CAN FD frame specification: ++ * ++ * Bit Rate Switch - to indicate a second bitrate is/was used for the payload ++ * Error State Indicator - represents the error state of the transmitting node ++ * ++ * As the CANFD_ESI bit is internally generated by the transmitting CAN ++ * controller only the CANFD_BRS bit is relevant for real CAN controllers when ++ * building a CAN FD frame for transmission. Setting the CANFD_ESI bit can make ++ * sense for virtual CAN interfaces to test applications with echoed frames. ++ * ++ * The struct can_frame and struct canfd_frame intentionally share the same ++ * layout to be able to write CAN frame content into a CAN FD frame structure. ++ * When this is done the former differentiation via CAN_MTU / CANFD_MTU gets ++ * lost. CANFD_FDF allows programmers to mark CAN FD frames in the case of ++ * using struct canfd_frame for mixed CAN / CAN FD content (dual use). ++ * Since the introduction of CAN XL the CANFD_FDF flag is set in all CAN FD ++ * frame structures provided by the CAN subsystem of the Linux kernel. ++ */ ++#define CANFD_BRS 0x01 /* bit rate switch (second bitrate for payload data) */ ++#define CANFD_ESI 0x02 /* error state indicator of the transmitting node */ ++#define CANFD_FDF 0x04 /* mark CAN FD for dual use of struct canfd_frame */ ++ ++/** ++ * struct canfd_frame - CAN flexible data rate frame structure ++ * @can_id: CAN ID of the frame and CAN_*_FLAG flags, see canid_t definition ++ * @len: frame payload length in byte (0 .. CANFD_MAX_DLEN) ++ * @flags: additional flags for CAN FD ++ * @__res0: reserved / padding ++ * @__res1: reserved / padding ++ * @data: CAN FD frame payload (up to CANFD_MAX_DLEN byte) ++ */ ++struct canfd_frame { ++ canid_t can_id; /* 32 bit CAN_ID + EFF/RTR/ERR flags */ ++ __u8 len; /* frame payload length in byte */ ++ __u8 flags; /* additional flags for CAN FD */ ++ __u8 __res0; /* reserved / padding */ ++ __u8 __res1; /* reserved / padding */ ++ __u8 data[CANFD_MAX_DLEN] __attribute__((aligned(8))); ++}; ++ ++/* ++ * defined bits for canxl_frame.flags ++ * ++ * The canxl_frame.flags element contains two bits CANXL_XLF and CANXL_SEC ++ * and shares the relative position of the struct can[fd]_frame.len element. ++ * The CANXL_XLF bit ALWAYS needs to be set to indicate a valid CAN XL frame. ++ * As a side effect setting this bit intentionally breaks the length checks ++ * for Classical CAN and CAN FD frames. ++ * ++ * Undefined bits in canxl_frame.flags are reserved and shall be set to zero. ++ */ ++#define CANXL_XLF 0x80 /* mandatory CAN XL frame flag (must always be set!) */ ++#define CANXL_SEC 0x01 /* Simple Extended Content (security/segmentation) */ ++ ++/** ++ * struct canxl_frame - CAN with e'X'tended frame 'L'ength frame structure ++ * @prio: 11 bit arbitration priority with zero'ed CAN_*_FLAG flags ++ * @flags: additional flags for CAN XL ++ * @sdt: SDU (service data unit) type ++ * @len: frame payload length in byte (CANXL_MIN_DLEN .. CANXL_MAX_DLEN) ++ * @af: acceptance field ++ * @data: CAN XL frame payload (CANXL_MIN_DLEN .. CANXL_MAX_DLEN byte) ++ * ++ * @prio shares the same position as @can_id from struct can[fd]_frame. ++ */ ++struct canxl_frame { ++ canid_t prio; /* 11 bit priority for arbitration (canid_t) */ ++ __u8 flags; /* additional flags for CAN XL */ ++ __u8 sdt; /* SDU (service data unit) type */ ++ __u16 len; /* frame payload length in byte */ ++ __u32 af; /* acceptance field */ ++ __u8 data[CANXL_MAX_DLEN]; ++}; ++ ++#define CAN_MTU (sizeof(struct can_frame)) ++#define CANFD_MTU (sizeof(struct canfd_frame)) ++#define CANXL_MTU (sizeof(struct canxl_frame)) ++#define CANXL_HDR_SIZE (offsetof(struct canxl_frame, data)) ++#define CANXL_MIN_MTU (CANXL_HDR_SIZE + 64) ++#define CANXL_MAX_MTU CANXL_MTU ++ ++/* particular protocols of the protocol family PF_CAN */ ++#define CAN_RAW 1 /* RAW sockets */ ++#define CAN_BCM 2 /* Broadcast Manager */ ++#define CAN_TP16 3 /* VAG Transport Protocol v1.6 */ ++#define CAN_TP20 4 /* VAG Transport Protocol v2.0 */ ++#define CAN_MCNET 5 /* Bosch MCNet */ ++#define CAN_ISOTP 6 /* ISO 15765-2 Transport Protocol */ ++#define CAN_J1939 7 /* SAE J1939 */ ++#define CAN_NPROTO 8 ++ ++#define SOL_CAN_BASE 100 ++ ++/* ++ * This typedef was introduced in Linux v3.1-rc2 ++ * (commit 6602a4b net: Make userland include of netlink.h more sane) ++ * in . It must be duplicated here to make the CAN ++ * headers self-contained. ++ */ ++typedef unsigned short __kernel_sa_family_t; ++ ++/** ++ * struct sockaddr_can - the sockaddr structure for CAN sockets ++ * @can_family: address family number AF_CAN. ++ * @can_ifindex: CAN network interface index. ++ * @can_addr: protocol specific address information ++ */ ++struct sockaddr_can { ++ __kernel_sa_family_t can_family; ++ int can_ifindex; ++ union { ++ /* transport protocol class address information (e.g. ISOTP) */ ++ struct { canid_t rx_id, tx_id; } tp; ++ ++ /* J1939 address information */ ++ struct { ++ /* 8 byte name when using dynamic addressing */ ++ __u64 name; ++ ++ /* pgn: ++ * 8 bit: PS in PDU2 case, else 0 ++ * 8 bit: PF ++ * 1 bit: DP ++ * 1 bit: reserved ++ */ ++ __u32 pgn; ++ ++ /* 1 byte address */ ++ __u8 addr; ++ } j1939; ++ ++ /* reserved for future CAN protocols address information */ ++ } can_addr; ++}; ++ ++/** ++ * struct can_filter - CAN ID based filter in can_register(). ++ * @can_id: relevant bits of CAN ID which are not masked out. ++ * @can_mask: CAN mask (see description) ++ * ++ * Description: ++ * A filter matches, when ++ * ++ * & mask == can_id & mask ++ * ++ * The filter can be inverted (CAN_INV_FILTER bit set in can_id) or it can ++ * filter for error message frames (CAN_ERR_FLAG bit set in mask). ++ */ ++struct can_filter { ++ canid_t can_id; ++ canid_t can_mask; ++}; ++ ++#define CAN_INV_FILTER 0x20000000U /* to be set in can_filter.can_id */ ++#define CAN_RAW_FILTER_MAX 512 /* maximum number of can_filter set via setsockopt() */ ++ ++#endif /* !_UAPI_CAN_H */ +diff --git a/include/linux/can/Makefile.am b/include/linux/can/Makefile.am +new file mode 100644 +index 000000000000..2d0288766894 +--- /dev/null ++++ b/include/linux/can/Makefile.am +@@ -0,0 +1 @@ ++noinst_HEADERS = netlink.h +diff --git a/include/linux/can/netlink.h b/include/linux/can/netlink.h +new file mode 100644 +index 000000000000..02ec32d69474 +--- /dev/null ++++ b/include/linux/can/netlink.h +@@ -0,0 +1,185 @@ ++/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ ++/* ++ * linux/can/netlink.h ++ * ++ * Definitions for the CAN netlink interface ++ * ++ * Copyright (c) 2009 Wolfgang Grandegger ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the version 2 of the GNU General Public License ++ * as published by the Free Software Foundation ++ * ++ * 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. ++ */ ++ ++#ifndef _UAPI_CAN_NETLINK_H ++#define _UAPI_CAN_NETLINK_H ++ ++#include ++ ++/* ++ * CAN bit-timing parameters ++ * ++ * For further information, please read chapter "8 BIT TIMING ++ * REQUIREMENTS" of the "Bosch CAN Specification version 2.0" ++ * at http://www.semiconductors.bosch.de/pdf/can2spec.pdf. ++ */ ++struct can_bittiming { ++ __u32 bitrate; /* Bit-rate in bits/second */ ++ __u32 sample_point; /* Sample point in one-tenth of a percent */ ++ __u32 tq; /* Time quanta (TQ) in nanoseconds */ ++ __u32 prop_seg; /* Propagation segment in TQs */ ++ __u32 phase_seg1; /* Phase buffer segment 1 in TQs */ ++ __u32 phase_seg2; /* Phase buffer segment 2 in TQs */ ++ __u32 sjw; /* Synchronisation jump width in TQs */ ++ __u32 brp; /* Bit-rate prescaler */ ++}; ++ ++/* ++ * CAN hardware-dependent bit-timing constant ++ * ++ * Used for calculating and checking bit-timing parameters ++ */ ++struct can_bittiming_const { ++ char name[16]; /* Name of the CAN controller hardware */ ++ __u32 tseg1_min; /* Time segment 1 = prop_seg + phase_seg1 */ ++ __u32 tseg1_max; ++ __u32 tseg2_min; /* Time segment 2 = phase_seg2 */ ++ __u32 tseg2_max; ++ __u32 sjw_max; /* Synchronisation jump width */ ++ __u32 brp_min; /* Bit-rate prescaler */ ++ __u32 brp_max; ++ __u32 brp_inc; ++}; ++ ++/* ++ * CAN clock parameters ++ */ ++struct can_clock { ++ __u32 freq; /* CAN system clock frequency in Hz */ ++}; ++ ++/* ++ * CAN operational and error states ++ */ ++enum can_state { ++ CAN_STATE_ERROR_ACTIVE = 0, /* RX/TX error count < 96 */ ++ CAN_STATE_ERROR_WARNING, /* RX/TX error count < 128 */ ++ CAN_STATE_ERROR_PASSIVE, /* RX/TX error count < 256 */ ++ CAN_STATE_BUS_OFF, /* RX/TX error count >= 256 */ ++ CAN_STATE_STOPPED, /* Device is stopped */ ++ CAN_STATE_SLEEPING, /* Device is sleeping */ ++ CAN_STATE_MAX ++}; ++ ++/* ++ * CAN bus error counters ++ */ ++struct can_berr_counter { ++ __u16 txerr; ++ __u16 rxerr; ++}; ++ ++/* ++ * CAN controller mode ++ */ ++struct can_ctrlmode { ++ __u32 mask; ++ __u32 flags; ++}; ++ ++#define CAN_CTRLMODE_LOOPBACK 0x01 /* Loopback mode */ ++#define CAN_CTRLMODE_LISTENONLY 0x02 /* Listen-only mode */ ++#define CAN_CTRLMODE_3_SAMPLES 0x04 /* Triple sampling mode */ ++#define CAN_CTRLMODE_ONE_SHOT 0x08 /* One-Shot mode */ ++#define CAN_CTRLMODE_BERR_REPORTING 0x10 /* Bus-error reporting */ ++#define CAN_CTRLMODE_FD 0x20 /* CAN FD mode */ ++#define CAN_CTRLMODE_PRESUME_ACK 0x40 /* Ignore missing CAN ACKs */ ++#define CAN_CTRLMODE_FD_NON_ISO 0x80 /* CAN FD in non-ISO mode */ ++#define CAN_CTRLMODE_CC_LEN8_DLC 0x100 /* Classic CAN DLC option */ ++#define CAN_CTRLMODE_TDC_AUTO 0x200 /* CAN transiver automatically calculates TDCV */ ++#define CAN_CTRLMODE_TDC_MANUAL 0x400 /* TDCV is manually set up by user */ ++ ++/* ++ * CAN device statistics ++ */ ++struct can_device_stats { ++ __u32 bus_error; /* Bus errors */ ++ __u32 error_warning; /* Changes to error warning state */ ++ __u32 error_passive; /* Changes to error passive state */ ++ __u32 bus_off; /* Changes to bus off state */ ++ __u32 arbitration_lost; /* Arbitration lost errors */ ++ __u32 restarts; /* CAN controller re-starts */ ++}; ++ ++/* ++ * CAN netlink interface ++ */ ++enum { ++ IFLA_CAN_UNSPEC, ++ IFLA_CAN_BITTIMING, ++ IFLA_CAN_BITTIMING_CONST, ++ IFLA_CAN_CLOCK, ++ IFLA_CAN_STATE, ++ IFLA_CAN_CTRLMODE, ++ IFLA_CAN_RESTART_MS, ++ IFLA_CAN_RESTART, ++ IFLA_CAN_BERR_COUNTER, ++ IFLA_CAN_DATA_BITTIMING, ++ IFLA_CAN_DATA_BITTIMING_CONST, ++ IFLA_CAN_TERMINATION, ++ IFLA_CAN_TERMINATION_CONST, ++ IFLA_CAN_BITRATE_CONST, ++ IFLA_CAN_DATA_BITRATE_CONST, ++ IFLA_CAN_BITRATE_MAX, ++ IFLA_CAN_TDC, ++ IFLA_CAN_CTRLMODE_EXT, ++ ++ /* add new constants above here */ ++ __IFLA_CAN_MAX, ++ IFLA_CAN_MAX = __IFLA_CAN_MAX - 1 ++}; ++ ++/* ++ * CAN FD Transmitter Delay Compensation (TDC) ++ * ++ * Please refer to struct can_tdc_const and can_tdc in ++ * include/linux/can/bittiming.h for further details. ++ */ ++enum { ++ IFLA_CAN_TDC_UNSPEC, ++ IFLA_CAN_TDC_TDCV_MIN, /* u32 */ ++ IFLA_CAN_TDC_TDCV_MAX, /* u32 */ ++ IFLA_CAN_TDC_TDCO_MIN, /* u32 */ ++ IFLA_CAN_TDC_TDCO_MAX, /* u32 */ ++ IFLA_CAN_TDC_TDCF_MIN, /* u32 */ ++ IFLA_CAN_TDC_TDCF_MAX, /* u32 */ ++ IFLA_CAN_TDC_TDCV, /* u32 */ ++ IFLA_CAN_TDC_TDCO, /* u32 */ ++ IFLA_CAN_TDC_TDCF, /* u32 */ ++ ++ /* add new constants above here */ ++ __IFLA_CAN_TDC, ++ IFLA_CAN_TDC_MAX = __IFLA_CAN_TDC - 1 ++}; ++ ++/* ++ * IFLA_CAN_CTRLMODE_EXT nest: controller mode extended parameters ++ */ ++enum { ++ IFLA_CAN_CTRLMODE_UNSPEC, ++ IFLA_CAN_CTRLMODE_SUPPORTED, /* u32 */ ++ ++ /* add new constants above here */ ++ __IFLA_CAN_CTRLMODE, ++ IFLA_CAN_CTRLMODE_MAX = __IFLA_CAN_CTRLMODE - 1 ++}; ++ ++/* u16 termination range: 1..65535 Ohms */ ++#define CAN_TERMINATION_DISABLED 0 ++ ++#endif /* !_UAPI_CAN_NETLINK_H */ +-- +2.32.0 + diff --git a/package/libmnl/Config.in b/package/libmnl/Config.in new file mode 100644 index 00000000..b4a41957 --- /dev/null +++ b/package/libmnl/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBMNL + bool "libmnl" + help + libmnl is a minimalistic user-space library oriented + to Netlink developers. + + http://netfilter.org/projects/libmnl/ + +if BR2_PACKAGE_LIBMNL + +config BR2_PACKAGE_LIBMNL_EXAMPLES + bool "install examples" + help + Install binary examples. + +endif diff --git a/package/libmnl/libmnl.hash b/package/libmnl/libmnl.hash new file mode 100644 index 00000000..e2db46f0 --- /dev/null +++ b/package/libmnl/libmnl.hash @@ -0,0 +1,5 @@ +# From https://netfilter.org/projects/libmnl/files/libmnl-1.0.5.tar.bz2.sha256sum +sha256 274b9b919ef3152bfb3da3a13c950dd60d6e2bcd54230ffeca298d03b40d0525 libmnl-1.0.5.tar.bz2 + +# Locally calculated +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/libmnl/libmnl.mk b/package/libmnl/libmnl.mk new file mode 100644 index 00000000..3bd3a03c --- /dev/null +++ b/package/libmnl/libmnl.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# libmnl +# +################################################################################ + +LIBMNL_VERSION = 1.0.5 +LIBMNL_SOURCE = libmnl-$(LIBMNL_VERSION).tar.bz2 +LIBMNL_SITE = https://netfilter.org/projects/libmnl/files +LIBMNL_INSTALL_STAGING = YES +LIBMNL_LICENSE = LGPL-2.1+ +LIBMNL_LICENSE_FILES = COPYING +LIBMNL_CPE_ID_VENDOR = netfilter +# 0001-examples-add-rtnl-link-can.patch patches Makefile.am +# 0002-include-cache-copy-of-can.h-and-can-netlink.h.patch patches configure.ac +LIBMNL_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_LIBMNL_EXAMPLES),y) +define LIBMNL_EXAMPLES_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) check -C $(@D) +endef +LIBMNL_POST_BUILD_HOOKS += LIBMNL_EXAMPLES_BUILD_CMDS + +LIBMNL_EXAMPLES_INSTALL_TARGETS = \ + $(addprefix examples/genl/, genl-family-get genl-group-events) \ + $(addprefix examples/kobject/, kobject-event) \ + $(addprefix examples/netfilter/, nfct-create-batch \ + nfct-daemon nfct-dump nfct-event nf-log \ + nf-queue) \ + $(addprefix examples/rtnl/, rtnl-addr-add rtnl-addr-dump \ + rtnl-link-can rtnl-link-dump rtnl-link-dump2 rtnl-link-dump3 \ + rtnl-link-event rtnl-link-set rtnl-neigh-dump \ + rtnl-route-add rtnl-route-dump rtnl-route-event) + +define LIBMNL_EXAMPLES_INSTALL_TARGET_CMDS + $(foreach t,$(LIBMNL_EXAMPLES_INSTALL_TARGETS), \ + $(INSTALL) -D -m 0755 $(@D)/$(t) \ + $(TARGET_DIR)/usr/bin/$(notdir $(t))$(sep)) +endef +LIBMNL_POST_INSTALL_TARGET_HOOKS += LIBMNL_EXAMPLES_INSTALL_TARGET_CMDS +endif + +$(eval $(autotools-package)) diff --git a/package/libmodbus/Config.in b/package/libmodbus/Config.in new file mode 100644 index 00000000..2e93fa4b --- /dev/null +++ b/package/libmodbus/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBMODBUS + bool "libmodbus" + help + libmodbus is a free software library to send/receive data + according to the Modbus protocol. This library is written in C + and supports RTU (serial) and TCP (Ethernet) communications. + + https://libmodbus.org diff --git a/package/libmodbus/libmodbus.hash b/package/libmodbus/libmodbus.hash new file mode 100644 index 00000000..a7b7e583 --- /dev/null +++ b/package/libmodbus/libmodbus.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 899be4e25ab7fe5799d43f9567510d6f063d2e8f56136dd726b6fd976f9b2253 libmodbus-3.1.10.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LESSER diff --git a/package/libmodbus/libmodbus.mk b/package/libmodbus/libmodbus.mk new file mode 100644 index 00000000..2fffa1e0 --- /dev/null +++ b/package/libmodbus/libmodbus.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libmodbus +# +################################################################################ + +LIBMODBUS_VERSION = 3.1.10 +LIBMODBUS_SITE = https://github.com/stephane/libmodbus/releases/download/v$(LIBMODBUS_VERSION) +LIBMODBUS_LICENSE = LGPL-2.1+ +LIBMODBUS_LICENSE_FILES = COPYING.LESSER +LIBMODBUS_CPE_ID_VENDOR = libmodbus +LIBMODBUS_INSTALL_STAGING = YES +LIBMODBUS_CONF_OPTS = --disable-tests + +$(eval $(autotools-package)) diff --git a/package/libmodplug/0001-fix-cctype-ub.patch b/package/libmodplug/0001-fix-cctype-ub.patch new file mode 100644 index 00000000..c75919b6 --- /dev/null +++ b/package/libmodplug/0001-fix-cctype-ub.patch @@ -0,0 +1,957 @@ +From dc6d5994b4912cb00d0d183b400edfd656d6530c Mon Sep 17 00:00:00 2001 +From: Gleb Mazovetskiy +Date: Wed, 21 Dec 2022 11:44:27 +0000 +Subject: [PATCH] Fix UB when calling cctype functions + +Calling cctype functions, such as isspace, with negative values +is undefined behaviour. + +While glibc allows it, it crashes on uClibc compiled without +`UCLIBC_HAS_CTYPE_SIGNED`. + +Fixes the undefined behaviour by casting all arguments to +cctype functions to `unsigned char`. + +Upstream: https://github.com/Konstanty/libmodplug/pull/92 +Signed-off-by: Gleb Mazovetskiy +--- + src/load_abc.cpp | 284 +++++++++++++++++++++++------------------------ + src/load_mid.cpp | 2 +- + src/load_pat.cpp | 30 ++--- + 3 files changed, 158 insertions(+), 158 deletions(-) + +diff --git a/src/load_abc.cpp b/src/load_abc.cpp +index b45f972f..8444bd87 100644 +--- a/src/load_abc.cpp ++++ b/src/load_abc.cpp +@@ -260,13 +260,13 @@ static uint32_t abc_pattracktime(ABCHANDLE *h, uint32_t tracktime); + static int abc_patno(ABCHANDLE *h, uint32_t tracktime); + + +-static int abc_isvalidchar(char c) { ++static int abc_isvalidchar(unsigned char c) { + return(isalpha(c) || isdigit(c) || isspace(c) || c == '%' || c == ':'); + } + #if 0 + static const char *abc_skipspace(const char *p) + { +- while (*p && isspace(*p)) ++ while (*p && isspace(static_cast(*p))) + p++; + return p; + } +@@ -275,7 +275,7 @@ static const char *abc_skipspace(const char *p) + static void abc_extractkeyvalue(char *key, size_t key_max, + char *value, size_t value_max, const char *src) + { +- while (*src && isspace(*src)) ++ while (*src && isspace(static_cast(*src))) + src++; + + size_t key_size; +@@ -286,17 +286,17 @@ static void abc_extractkeyvalue(char *key, size_t key_max, + } + key[key_size++] = *src++; + } +- while (key_size > 0 && isspace(key[key_size - 1])) ++ while (key_size > 0 && isspace(static_cast(key[key_size - 1]))) + key_size--; + key[key_size] = '\0'; + +- while (*src && isspace(*src)) ++ while (*src && isspace(static_cast(*src))) + src++; + + size_t value_size; + for (value_size = 0; value_size < value_max - 1 && *src;) + value[value_size++] = *src++; +- while (value_size > 0 && isspace(value[value_size - 1])) ++ while (value_size > 0 && isspace(static_cast(value[value_size - 1]))) + value_size--; + value[value_size] = '\0'; + +@@ -359,7 +359,7 @@ static void abc_dumptracks(ABCHANDLE *h, const char *p) + nn[0] = "CCCDDEFFGGAABccddeffggaabb"[e->par[chordnote]]; + nn[1] = "b # # # # # # # # # # #"[e->par[chordnote]]; + nn[2] = '\0'; +- if( isspace(nn[1]) ) nn[1] = '\0'; ++ if( isspace(static_cast(nn[1])) ) nn[1] = '\0'; + printf("CMD %c: gchord %s%s", + (char)(e->cmd), nn, chordname[e->par[chordnum]]); + if( e->par[chordbase] != e->par[chordnote] ) { +@@ -557,7 +557,7 @@ static void abc_new_umacro(ABCHANDLE *h, const char *m) + ABCMACRO *retval, *mp; + char key[256], value[256]; + abc_extractkeyvalue(key, sizeof(key), value, sizeof(value), m); +- if( strlen(key) > 1 || strchr("~HIJKLMNOPQRSTUVWXY",toupper(key[0])) == 0 ) return; ++ if( strlen(key) > 1 || strchr("~HIJKLMNOPQRSTUVWXY",toupper(static_cast(key[0]))) == 0 ) return; + while( char *q = strchr(key, '!') ) + *q = '+'; // translate oldstyle to newstyle + if( !strcmp(key,"+nil+") ) { // delete a macro +@@ -823,7 +823,7 @@ static ABCTRACK *abc_locate_track(ABCHANDLE *h, const char *voice, int pos) + char vc[21]; + int i, trans=0, voiceno=0, instrno = 1, channo = 0; + for( ; *voice == ' '; voice++ ) ; // skip leading spaces +- for( i=0; i+1 < (int) sizeof(vc) && *voice && *voice != ']' && *voice != '%' && !isspace(*voice); voice++ ) // can work with inline voice instructions ++ for( i=0; i+1 < (int) sizeof(vc) && *voice && *voice != ']' && *voice != '%' && !isspace(static_cast(*voice)); voice++ ) // can work with inline voice instructions + vc[i++] = *voice; + vc[i] = '\0'; + prev = NULL; +@@ -1250,32 +1250,32 @@ static int abc_add_noteon(ABCHANDLE *h, int ch, const char *p, uint32_t tracktim + switch(ch) { + case '^': + if( p[0] == '^' ) { +- n = p[1]; ++ n = static_cast(p[1]); + i = 2; + ch = 'x'; + } + else { +- n = p[0]; ++ n = static_cast(p[0]); + i = 1; + } + break; + case '_': + if( p[0] == '_' ) { +- n = p[1]; ++ n = static_cast(p[1]); + i = 2; + ch = 'b'; + } + else { +- n = p[0]; ++ n = static_cast(p[0]); + i = 1; + } + break; + case '=': +- n = p[0]; ++ n = static_cast(p[0]); + i = 1; + break; + default: +- n = ch; ++ n = static_cast(ch); + i = 0; + break; + } +@@ -1332,7 +1332,7 @@ static int abc_add_noteon(ABCHANDLE *h, int ch, const char *p, uint32_t tracktim + } + else + d[note] = 0; // someone has doen ^X3 or something like it... +- while( p[i] && strchr(",'",p[i]) ) { ++ while( p[i] && strchr(",'",static_cast(p[i])) ) { + if( p[i]==',' ) oct--; + else oct++; + i++; +@@ -1381,7 +1381,7 @@ static int abc_add_noteon(ABCHANDLE *h, int ch, const char *p, uint32_t tracktim + } + } + tp->tienote->tiednote = 1; // mark him for the pattern writers +- for( j=i; isdigit(p[j]) || p[j]=='/'; j++ ) ; // look ahead to see if this one is tied too ++ for( j=i; isdigit(static_cast(p[j])) || p[j]=='/'; j++ ) ; // look ahead to see if this one is tied too + if( p[j] != '-' ) // is this note tied too? + tp->tienote = NULL; // if not the tie ends here... + return i; +@@ -1603,7 +1603,7 @@ static int abc_getnumber(const char *p, int *number) + int i,h; + i = 0; + h = 0; +- while( isdigit(p[i]) ) { ++ while( isdigit(static_cast(p[i])) ) { + if (i < 9) + h = 10 * h + p[i] - '0'; + i++; +@@ -1619,7 +1619,7 @@ static int abc_getexpr(const char *p, int *number) + { + int i, term, total; + i = 0; +- while( isspace(p[i]) ) ++ while( isspace(static_cast(p[i])) ) + i++; + if( p[i] == '(' ) { + i += abc_getexpr(p+i+1, number); +@@ -1628,12 +1628,12 @@ static int abc_getexpr(const char *p, int *number) + return i; + } + i += abc_getnumber(p+i, &total); +- while( isspace(p[i]) ) ++ while( isspace(static_cast(p[i])) ) + i++; + while( p[i] == '+' ) { + i += 1 + abc_getexpr(p+i+1, &term); + total += term; +- while( isspace(p[i]) ) ++ while( isspace(static_cast(p[i])) ) + i++; + } + *number = total; +@@ -1649,7 +1649,7 @@ static int abc_notelen(const char *p, int *len, int *div) + h *= 2; + i++; + } +- if( isdigit(p[i]) ) { ++ if( isdigit(static_cast(p[i])) ) { + h /= 2; + i += abc_getnumber(p+i,&k); + } +@@ -1738,7 +1738,7 @@ static int abc_extract_tempo(const char *p, int invoice) + case '=': + break; + default: +- if( isdigit(*q) ) { ++ if( isdigit(static_cast(*q)) ) { + if( state ) { + q+=abc_getnumber(q,&nd1)-1; + state = 0; +@@ -1812,10 +1812,10 @@ static void abc_set_parts(char **d, char *p) + j=0; + k=0; + for( i=0; p[i] && p[i] != '%'; i++ ) { +- if( isupper(p[i]) ) { ++ if( isupper(static_cast(p[i])) ) { + j++; + } +- if( isdigit(p[i]) ) { ++ if( isdigit(static_cast(p[i])) ) { + n=abc_getnumber(p+i, &k); + if( k == 0 ) + k = 1; +@@ -1833,7 +1833,7 @@ static void abc_set_parts(char **d, char *p) + // now copy bytes from p to *d, taking parens and digits in account + j = 0; + for( i=0; p[i] && p[i] != '%' && j < size && i < (int)size; i++ ) { +- if( isdigit(p[i]) || isupper(p[i]) || p[i] == '(' || p[i] == ')' ) { ++ if( isdigit(static_cast(p[i])) || isupper(static_cast(p[i])) || p[i] == '(' || p[i] == ')' ) { + if( p[i] == ')' ) { + for( n=j; n > 0 && q[n-1] != '('; n-- ) ; // find open paren in q + // q[n+1] to q[j] contains the substring that must be repeated +@@ -1856,7 +1856,7 @@ static void abc_set_parts(char **d, char *p) + } + continue; + } +- if( isdigit(p[i]) ) { ++ if( isdigit(static_cast(p[i])) ) { + n = abc_getnumber(p+i,&k); + i += n - 1; + // if nothing is ready to 'repeat', skip it. +@@ -2243,7 +2243,7 @@ static void abc_preprocess(ABCHANDLE *h, ABCMACRO *m) + char *p = s; + for( j=0; jsubst[j]; +- if( a > 'g' && islower(a) ) { ++ if( a > 'g' && islower(static_cast(a)) ) { + b = a - 'n'; + a = "CDEFGABCDEFGABcdefgabcdefgabcdefgab"[i+b+7]; + *p++ = a; +@@ -2339,11 +2339,11 @@ BOOL CSoundFile::TestABC(const BYTE *lpStream, DWORD dwMemLength) + } + if(id[0]=='K' + && id[1]==':' +- && (isalpha(id[2]) || isspace(id[2])) ) return 1; ++ && (isalpha(static_cast(id[2])) || isspace(static_cast(id[2]))) ) return 1; + // disable binary error if have any "tag" + if((id[0]>='A' && id[0]<='Z') + && id[1]==':' +- && (isalpha(id[2]) || isspace(id[2])) ) hasText = 1; ++ && (isalpha(static_cast(id[2])) || isspace(static_cast(id[2]))) ) hasText = 1; + } + return 0; + } +@@ -2367,7 +2367,7 @@ static ABCHANDLE *ABC_Init(void) + retval->barticks = 0; + p = getenv(ABC_ENV_NORANDOMPICK); + if( p ) { +- if( isdigit(*p) ) ++ if( isdigit(static_cast(*p)) ) + retval->pickrandom = atoi(p); + if( *p == '-' ) { + retval->pickrandom = atoi(p+1)-1; // xmms preloads the file +@@ -2652,12 +2652,12 @@ static int ABC_Key(const char *p) + int i,j; + char c[8]; + const char *q; +- while( isspace(*p) ) p++; ++ while( isspace(static_cast(*p)) ) p++; + q = p; + memset(c, 0, 8); + for( i=0; i<8 && *p && *p != ']'; p++ ) { +- if( isspace(*p) ) { +- while( isspace(*p) ) p++; ++ if( isspace(static_cast(*p)) ) { ++ while( isspace(static_cast(*p)) ) p++; + if( strncasecmp(p, "min", 3) && strncasecmp(p, "maj", 3) ) + break; + } +@@ -2687,9 +2687,9 @@ static int ABC_Key(const char *p) + + static char *abc_skip_word(char *p) + { +- while( isspace(*p) ) p++; +- while( *p && !isspace(*p) && *p != ']') p++; +- while( isspace(*p) ) p++; ++ while( isspace(static_cast(*p)) ) p++; ++ while( *p && !isspace(static_cast(*p)) && *p != ']') p++; ++ while( isspace(static_cast(*p)) ) p++; + return p; + } + +@@ -2798,7 +2798,7 @@ static void abc_setup_chordnames() + static int abc_MIDI_getnumber(const char *p) + { + int n; +- while( isspace(*p) ) p++; ++ while( isspace(static_cast(*p)) ) p++; + abc_getnumber(p, &n); + if( n < 0 ) n = 0; + if( n > 127 ) n = 127; +@@ -2808,7 +2808,7 @@ static int abc_MIDI_getnumber(const char *p) + static int abc_MIDI_getprog(const char *p) + { + int n; +- while( isspace(*p) ) p++; ++ while( isspace(static_cast(*p)) ) p++; + abc_getnumber(p, &n); + if( n < 1 ) n = 1; + if( n > 128 ) n = 128; +@@ -2819,32 +2819,32 @@ static int abc_MIDI_getprog(const char *p) + static void abc_MIDI_drone(const char *p, int *gm, int *ptch, int *vol) + { + int i; +- while( isspace(*p) ) p++; ++ while( isspace(static_cast(*p)) ) p++; + p += abc_getnumber(p, &i); + i++; // adjust for 1..128 + if( i>0 && i < 129 ) + *gm = i; + else + *gm = 71; // bassoon +- while( isspace(*p) ) p++; ++ while( isspace(static_cast(*p)) ) p++; + p += abc_getnumber(p, &i); + if( i>0 && i < 127 ) + ptch[0] = i; + else + ptch[0] = 45; +- while( isspace(*p) ) p++; ++ while( isspace(static_cast(*p)) ) p++; + p += abc_getnumber(p, &i); + if( i>0 && i < 127 ) + ptch[1] = i; + else + ptch[1] = 33; +- while( isspace(*p) ) p++; ++ while( isspace(static_cast(*p)) ) p++; + p += abc_getnumber(p, &i); + if( i>0 && i < 127 ) + vol[0] = i; + else + vol[0] = 80; +- while( isspace(*p) ) p++; ++ while( isspace(static_cast(*p)) ) p++; + p += abc_getnumber(p, &i); + if( i>0 && i < 127 ) + vol[1] = i; +@@ -2869,8 +2869,8 @@ static void abc_MIDI_channel(const char *p, ABCTRACK *tp, ABCHANDLE *h) + { + int i1, i2; + i1 = tp? tp->vno: 1; +- for( ; *p && isspace(*p); p++ ) ; +- if( isdigit(*p) ) { ++ for( ; *p && isspace(static_cast(*p)); p++ ) ; ++ if( isdigit(static_cast(*p)) ) { + p += abc_getnumber(p, &i2); + if( i2 >= 1 && i2 <= 16 ) + abc_chan_to_tracks(h, i1, i2); // we start at 1 +@@ -2894,11 +2894,11 @@ static void abc_MIDI_program(const char *p, ABCTRACK *tp, ABCHANDLE *h) + { + int i1, i2; + i1 = tp? tp->vno: 1; +- for( ; *p && isspace(*p); p++ ) ; +- if( isdigit(*p) ) { ++ for( ; *p && isspace(static_cast(*p)); p++ ) ; ++ if( isdigit(static_cast(*p)) ) { + p += abc_getnumber(p, &i2); +- for( ; *p && isspace(*p); p++ ) ; +- if( isdigit(*p) ) { ++ for( ; *p && isspace(static_cast(*p)); p++ ) ; ++ if( isdigit(static_cast(*p)) ) { + i1 = i2; + abc_getnumber(p, &i2); + } +@@ -2919,25 +2919,25 @@ static void abc_mute_voice(ABCHANDLE *h, ABCTRACK *tp, int m) + static void abc_MIDI_voice(const char *p, ABCTRACK *tp, ABCHANDLE *h) + { + int i1, i2; +- for( ; *p && isspace(*p); p++ ) ; ++ for( ; *p && isspace(static_cast(*p)); p++ ) ; + if( strncmp(p,"instrument=",11) && strncmp(p,"mute",4) ) { + tp = abc_locate_track(h, p, 0); +- for( ; *p && !isspace(*p); p++ ) ; +- for( ; *p && isspace(*p); p++ ) ; ++ for( ; *p && !isspace(static_cast(*p)); p++ ) ; ++ for( ; *p && isspace(static_cast(*p)); p++ ) ; + } + i1 = tp? tp->vno: 1; + i2 = 0; +- if( !strncmp(p,"instrument=",11) && isdigit(p[11]) ) { ++ if( !strncmp(p,"instrument=",11) && isdigit(static_cast(p[11])) ) { + p += 11; + p += abc_getnumber(p, &i2); +- for( ; *p && isspace(*p); p++ ) ; +- if( !strncmp(p,"bank=",5) && isdigit(p[5]) ) { +- for( ; *p && !isspace(*p); p++ ) ; +- for( ; *p && isspace(*p); p++ ) ; ++ for( ; *p && isspace(static_cast(*p)); p++ ) ; ++ if( !strncmp(p,"bank=",5) && isdigit(static_cast(p[5])) ) { ++ for( ; *p && !isspace(static_cast(*p)); p++ ) ; ++ for( ; *p && isspace(static_cast(*p)); p++ ) ; + } + } + if( tp ) abc_mute_voice(h,tp,0); +- if( !strncmp(p,"mute",4) && (p[4]=='\0' || p[4]=='%' || isspace(p[4])) ) { ++ if( !strncmp(p,"mute",4) && (p[4]=='\0' || p[4]=='%' || isspace(static_cast(p[4]))) ) { + if( tp ) abc_mute_voice(h,tp,1); + } + abc_instr_to_tracks(h, i1, i2); // starts already at 1 (draft 4.0) +@@ -2949,7 +2949,7 @@ static void abc_MIDI_chordname(const char *p) + char name[20]; + int i; + +- for(; *p && isspace(*p); p++) ++ for(; *p && isspace(static_cast(*p)); p++) + ; + i = 0; + while ((i < 19) && (*p != ' ') && (*p != '\0')) { +@@ -2965,8 +2965,8 @@ static void abc_MIDI_chordname(const char *p) + int notes[6]; + i = 0; + memset(notes, 0, sizeof(notes)); +- while ((i < 6) && isspace(*p)) { +- for(; *p && isspace(*p); p++) ++ while ((i < 6) && isspace(static_cast(*p))) { ++ for(; *p && isspace(static_cast(*p)); p++) + ; + p += abc_getnumber(p, ¬es[i]); + i = i + 1; +@@ -2981,21 +2981,21 @@ static int abc_MIDI_drum(const char *p, ABCHANDLE *h) + { + char *q; + int i, n, m, len; +- while( isspace(*p) ) p++; +- if( !strncmp(p,"on",2) && (isspace(p[2]) || p[2] == '\0') ) return 2; +- if( !strncmp(p,"off",3) && (isspace(p[3]) || p[3] == '\0') ) return 1; ++ while( isspace(static_cast(*p)) ) p++; ++ if( !strncmp(p,"on",2) && (isspace(static_cast(p[2])) || p[2] == '\0') ) return 2; ++ if( !strncmp(p,"off",3) && (isspace(static_cast(p[3])) || p[3] == '\0') ) return 1; + n = 0; len = 0; +- for( q = h->drum; *p && !isspace(*p); p++ ) { ++ for( q = h->drum; *p && !isspace(static_cast(*p)); p++ ) { + if( !strchr("dz0123456789",*p) ) break; + *q++ = *p; len++; +- if( !isdigit(*p) && len < (int)sizeof(h->drum)-1 ) { +- if( !isdigit(p[1]) ) { *q++ = '1'; len ++; } ++ if( !isdigit(static_cast(*p)) && len < (int)sizeof(h->drum)-1 ) { ++ if( !isdigit(static_cast(p[1])) ) { *q++ = '1'; len ++; } + n++; // count the silences too.... + } + if (len >= (int)sizeof(h->drum)-1) { + // consume the rest of the input + // definitely enough "drum last state" stored. +- while ( *p && !isspace(*p) ) p++; ++ while ( *p && !isspace(static_cast(*p)) ) p++; + break; + } + } +@@ -3003,10 +3003,10 @@ static int abc_MIDI_drum(const char *p, ABCHANDLE *h) + q = h->drumins; + for( i = 0; idrum[i*2] == 'd' ) { +- while( *p && isspace(*p) ) p++; +- if( !isdigit(*p) ) { ++ while( *p && isspace(static_cast(*p)) ) p++; ++ if( !isdigit(static_cast(*p)) ) { + m = 0; +- while( *p && !isspace(*p) ) p++; ++ while( *p && !isspace(static_cast(*p)) ) p++; + } + else + p += abc_getnumber(p,&m); +@@ -3017,10 +3017,10 @@ static int abc_MIDI_drum(const char *p, ABCHANDLE *h) + q = h->drumvol; + for( i = 0; idrum[i*2] == 'd' ) { +- while( *p && isspace(*p) ) p++; +- if( !isdigit(*p) ) { ++ while( *p && isspace(static_cast(*p)) ) p++; ++ if( !isdigit(static_cast(*p)) ) { + m = 0; +- while( *p && !isspace(*p) ) p++; ++ while( *p && !isspace(static_cast(*p)) ) p++; + } + else + p += abc_getnumber(p,&m); +@@ -3036,17 +3036,17 @@ static int abc_MIDI_gchord(const char *p, ABCHANDLE *h) + { + char *q; + int len = 0; +- while( isspace(*p) ) p++; +- if( !strncmp(p,"on",2) && (isspace(p[2]) || p[2] == '\0') ) return 2; +- if( !strncmp(p,"off",3) && (isspace(p[3]) || p[3] == '\0') ) return 1; +- for( q = h->gchord; *p && !isspace(*p); p++ ) { ++ while( isspace(static_cast(*p)) ) p++; ++ if( !strncmp(p,"on",2) && (isspace(static_cast(p[2])) || p[2] == '\0') ) return 2; ++ if( !strncmp(p,"off",3) && (isspace(static_cast(p[3])) || p[3] == '\0') ) return 1; ++ for( q = h->gchord; *p && !isspace(static_cast(*p)); p++ ) { + if( !strchr("fbcz0123456789ghijGHIJ",*p) ) break; + *q++ = *p; len++; +- if( !isdigit(*p) && len < (int)sizeof(h->gchord)-1 && !isdigit(p[1]) ) { *q++ = '1'; len ++; } ++ if( !isdigit(static_cast(*p)) && len < (int)sizeof(h->gchord)-1 && !isdigit(static_cast(p[1])) ) { *q++ = '1'; len ++; } + if (len >= (int)sizeof(h->gchord)-1) { + // consume the rest of the input + // definitely enough "drum last state" stored. +- while ( *p && !isspace(*p) ) p++; ++ while ( *p && !isspace(static_cast(*p)) ) p++; + break; + } + } +@@ -3099,7 +3099,7 @@ static void abc_metric_gchord(ABCHANDLE *h, int mlen, int mdiv) + + static void abc_MIDI_legato(const char *p, ABCTRACK *tp) + { +- for( ; *p && isspace(*p); p++ ) ; ++ for( ; *p && isspace(static_cast(*p)); p++ ) ; + if( !strncmp(p,"off",3) ) tp->legato = 0; + else tp->legato = 1; + } +@@ -3130,7 +3130,7 @@ static int abc_drum_steps(const char *dch) + const char *p; + int i=0; + for( p=dch; *p; p++ ) { +- if( isdigit(*p) ) i += *p - '0';; ++ if( isdigit(static_cast(*p)) ) i += *p - '0';; + } + return i; + } +@@ -3185,7 +3185,7 @@ static int abc_gchord_steps(const char *gch) + const char *p; + int i=0; + for( p=gch; *p; p++ ) +- if( isdigit(*p) ) i += *p - '0'; ++ if( isdigit(static_cast(*p)) ) i += *p - '0'; + return i; + } + +@@ -3231,7 +3231,7 @@ static void abc_add_gchord(ABCHANDLE *h, uint32_t tracktime, uint32_t bartime) + stime = (tracktime - etime) * steps; + rtime = 0; + while( rtime < stime ) { +- gnote = h->gchord[2*g]; ++ gnote = static_cast(h->gchord[2*g]); + glen = h->gchord[2*g+1] - '0'; + if( ++g == gsteps ) g = 0; + switch(gnote) { +@@ -3313,7 +3313,7 @@ static void abc_MIDI_beat(ABCHANDLE *h, const char *p) + h->beat[2] = 110; + h->beat[3] = 1; + for( j=0; j<4; j++ ) { +- while( isspace(*p) ) p++; ++ while( isspace(static_cast(*p)) ) p++; + if( *p ) { + p += abc_getnumber(p, &i); + if( i < 0 ) i = 0; +@@ -3336,7 +3336,7 @@ static void abc_MIDI_beat(ABCHANDLE *h, const char *p) + // %%MIDI beatstring fppmpmp + static void abc_MIDI_beatstring(ABCHANDLE *h, const char *p) + { +- while( isspace(*p) ) p++; ++ while( isspace(static_cast(*p)) ) p++; + if( h->beatstring ) _mm_free(h->allochandle, h->beatstring); + if( strlen(p) ) + h->beatstring = DupStr(h->allochandle,p,strlen(p)+1); +@@ -3483,47 +3483,47 @@ static void abc_recalculate_tracktime(ABCHANDLE *h) { + static void abc_MIDI_command(ABCHANDLE *h, char *p, char delim) { + int t; + // interpret some of the possibilitys +- if( !strncmp(p,"bassprog",8) && isspace(p[8]) ) h->abcbassprog = abc_MIDI_getprog(p+8)+1; +- if( !strncmp(p,"bassvol",7) && isspace(p[7]) ) h->abcbassvol = abc_MIDI_getnumber(p+7); +- if( !strncmp(p,"beat",4) && isspace(p[4]) ) abc_MIDI_beat(h, p+4); +- if( !strncmp(p,"beatstring",10) && isspace(p[10]) ) abc_MIDI_beatstring(h, p+4); +- if( !strncmp(p,"chordname",9) && isspace(p[9]) ) abc_MIDI_chordname(p+9); +- if( !strncmp(p,"chordprog",9) && isspace(p[9]) ) h->abcchordprog = abc_MIDI_getprog(p+9)+1; +- if( !strncmp(p,"chordvol",8) && isspace(p[8]) ) h->abcchordvol = abc_MIDI_getnumber(p+8); +- if( !strncmp(p,"drone",5) && isspace(p[5]) ) abc_MIDI_drone(p+5, &h->dronegm, h->dronepitch, h->dronevol); +- if( !strncmp(p,"droneoff",8) && (p[8]=='\0' || p[8]==delim || isspace(p[8])) ) h->droneon = 0; +- if( !strncmp(p,"droneon",7) && (p[7]=='\0' || p[7]==delim || isspace(p[7])) ) h->droneon = 1; ++ if( !strncmp(p,"bassprog",8) && isspace(static_cast(p[8])) ) h->abcbassprog = abc_MIDI_getprog(p+8)+1; ++ if( !strncmp(p,"bassvol",7) && isspace(static_cast(p[7])) ) h->abcbassvol = abc_MIDI_getnumber(p+7); ++ if( !strncmp(p,"beat",4) && isspace(static_cast(p[4])) ) abc_MIDI_beat(h, p+4); ++ if( !strncmp(p,"beatstring",10) && isspace(static_cast(p[10])) ) abc_MIDI_beatstring(h, p+4); ++ if( !strncmp(p,"chordname",9) && isspace(static_cast(p[9])) ) abc_MIDI_chordname(p+9); ++ if( !strncmp(p,"chordprog",9) && isspace(static_cast(p[9])) ) h->abcchordprog = abc_MIDI_getprog(p+9)+1; ++ if( !strncmp(p,"chordvol",8) && isspace(static_cast(p[8])) ) h->abcchordvol = abc_MIDI_getnumber(p+8); ++ if( !strncmp(p,"drone",5) && isspace(static_cast(p[5])) ) abc_MIDI_drone(p+5, &h->dronegm, h->dronepitch, h->dronevol); ++ if( !strncmp(p,"droneoff",8) && (p[8]=='\0' || p[8]==delim || isspace(static_cast(p[8]))) ) h->droneon = 0; ++ if( !strncmp(p,"droneon",7) && (p[7]=='\0' || p[7]==delim || isspace(static_cast(p[7]))) ) h->droneon = 1; + t = h->drumon; +- if( !strncmp(p,"drum",4) && isspace(p[4]) ) { ++ if( !strncmp(p,"drum",4) && isspace(static_cast(p[4])) ) { + h->drumon = abc_MIDI_drum(p+4, h); + if( h->drumon ) --h->drumon; + else h->drumon = t; + } +- if( !strncmp(p,"drumoff",7) && (p[7]=='\0' || p[7]==delim || isspace(p[7])) ) h->drumon = 0; +- if( !strncmp(p,"drumon",6) && (p[6]=='\0' || p[6]==delim || isspace(p[6])) ) h->drumon = 1; ++ if( !strncmp(p,"drumoff",7) && (p[7]=='\0' || p[7]==delim || isspace(static_cast(p[7]))) ) h->drumon = 0; ++ if( !strncmp(p,"drumon",6) && (p[6]=='\0' || p[6]==delim || isspace(static_cast(p[6]))) ) h->drumon = 1; + if( t != h->drumon ) { + if( h->drumon && !h->tpr ) h->tpr = h->track; + if( h->tpr ) abc_add_drum_sync(h, h->tpr, h->tracktime); // don't start drumming from the beginning of time! + if( h->tpr && !h->drumon ) h->tpr = NULL; + } + t = h->gchordon; +- if( !strncmp(p,"gchord",6) && (p[6]=='\0' || p[6]==delim || isspace(p[6])) ) { ++ if( !strncmp(p,"gchord",6) && (p[6]=='\0' || p[6]==delim || isspace(static_cast(p[6]))) ) { + h->gchordon = abc_MIDI_gchord(p+6, h); + if( h->gchordon ) --h->gchordon; + else h->gchordon = t; + } +- if( !strncmp(p,"gchordoff",9) && (p[9]=='\0' || p[9]==delim || isspace(p[9])) ) h->gchordon = 0; +- if( !strncmp(p,"gchordon",8) && (p[8]=='\0' || p[8]==delim || isspace(p[8])) ) h->gchordon = 1; ++ if( !strncmp(p,"gchordoff",9) && (p[9]=='\0' || p[9]==delim || isspace(static_cast(p[9]))) ) h->gchordon = 0; ++ if( !strncmp(p,"gchordon",8) && (p[8]=='\0' || p[8]==delim || isspace(static_cast(p[8]))) ) h->gchordon = 1; + if( t != h->gchordon ) { + if( h->tpc ) abc_add_gchord_syncs(h, h->tpc, h->tracktime); + } +- if( !strncmp(p,"channel",7) && isspace(p[7]) ) ++ if( !strncmp(p,"channel",7) && isspace(static_cast(p[7])) ) + abc_MIDI_channel(p+8, h->tp = abc_check_track(h, h->tp), h); +- if( !strncmp(p,"program",7) && isspace(p[7]) ) ++ if( !strncmp(p,"program",7) && isspace(static_cast(p[7])) ) + abc_MIDI_program(p+8, h->tp = abc_check_track(h, h->tp), h); +- if( !strncmp(p,"voice",5) && isspace(p[5]) ) ++ if( !strncmp(p,"voice",5) && isspace(static_cast(p[5])) ) + abc_MIDI_voice(p+6, h->tp = abc_check_track(h, h->tp), h); +- if( !strncmp(p,"legato",6) && (p[6]=='\0' || p[6]==delim || isspace(p[6])) ) ++ if( !strncmp(p,"legato",6) && (p[6]=='\0' || p[6]==delim || isspace(static_cast(p[6]))) ) + abc_MIDI_legato(p+6, h->tp = abc_check_track(h, h->tp)); + } + +@@ -3548,13 +3548,13 @@ static char *abc_continuated(ABCHANDLE *h, MMFILE *mmf, char *p) { + abc_message("line not properly continued\n%s", p1); + return p1; + } +- while( *pm && isspace(*pm) ) ++pm; ++ while( *pm && isspace(static_cast(*pm)) ) ++pm; + if( !strncmp(pm,"%%",2) ) { +- for( p2 = pm+2; *p2 && isspace(*p2); p2++ ) ; +- if( !strncmp(p2,"MIDI",4) && (p2[4]=='=' || isspace(p2[4])) ) { +- for( p2+=5; *p2 && isspace(*p2); p2++ ) ; ++ for( p2 = pm+2; *p2 && isspace(static_cast(*p2)); p2++ ) ; ++ if( !strncmp(p2,"MIDI",4) && (p2[4]=='=' || isspace(static_cast(p2[4]))) ) { ++ for( p2+=5; *p2 && isspace(static_cast(*p2)); p2++ ) ; + if( *p2 == '=' ) +- for( p2+=1; *p2 && isspace(*p2); p2++ ) ; ++ for( p2+=1; *p2 && isspace(static_cast(*p2)); p2++ ) ; + abc_MIDI_command(h,p2,'%'); + } + continued = 1; +@@ -3685,7 +3685,7 @@ BOOL CSoundFile::ReadABC(const uint8_t *lpStream, DWORD dwMemLength) + abcxcount = 0; + mmfseek(mmfile,0,SEEK_SET); + while ((line=abc_gets(h, mmfile)) != NULL) { +- for( p=line; isspace(*p); p++ ) ; ++ for( p=line; isspace(static_cast(*p)); p++ ) ; + if( !strncmp(p,"X:",2) ) abcxcount++; + } + if( abcxcount == 0 ) +@@ -3699,7 +3699,7 @@ BOOL CSoundFile::ReadABC(const uint8_t *lpStream, DWORD dwMemLength) + mmsp--; + while ((line=abc_gets(h, mmstack[mmsp])) != NULL) { + char blankline[3] = "% "; +- for( p=line; isspace(*p); p++ ) ; ++ for( p=line; isspace(static_cast(*p)); p++ ) ; + switch(abcstate) { + case INSKIPFORX: + if( !strncmp(p,"X:",2) ) { +@@ -3711,7 +3711,7 @@ BOOL CSoundFile::ReadABC(const uint8_t *lpStream, DWORD dwMemLength) + if( !strncmp(p,"X:",2) ) { + abcstate = INHEAD; + memset(m_szNames[0], 0, 32); +- for( p+=2; isspace(*p); p++ ) ; ++ for( p+=2; isspace(static_cast(*p)); p++ ) ; + abcxnumber = atoi(p); + abchornpipe = 0; + h->droneon = 0; +@@ -3792,8 +3792,8 @@ BOOL CSoundFile::ReadABC(const uint8_t *lpStream, DWORD dwMemLength) + break; + } + if( !strncmp(p,"R:",2) ) { +- for( p+=2; isspace(*p); p++ ) ; +- if( !strncmp(p,"hornpipe",8) && (isspace(p[8]) || p[8]=='\0') ) abchornpipe = 1; ++ for( p+=2; isspace(static_cast(*p)); p++ ) ; ++ if( !strncmp(p,"hornpipe",8) && (isspace(static_cast(p[8])) || p[8]=='\0') ) abchornpipe = 1; + else abchornpipe = 0; + break; + } +@@ -3980,8 +3980,8 @@ BOOL CSoundFile::ReadABC(const uint8_t *lpStream, DWORD dwMemLength) + p[1]= '%'; + } + if( !strncmp(p,"%%",2) ) { +- for( p+=2; *p && isspace(*p); p++ ) ; +- if( !strncmp(p,"abc-include",11) && isspace(p[11]) ) { ++ for( p+=2; *p && isspace(static_cast(*p)); p++ ) ; ++ if( !strncmp(p,"abc-include",11) && isspace(static_cast(p[11])) ) { + for( t=12; isspace(p[t]); t++ ) ; + if( p[t] ) { + mmsp++; +@@ -3998,10 +3998,10 @@ BOOL CSoundFile::ReadABC(const uint8_t *lpStream, DWORD dwMemLength) + } + else abc_message("failure: abc-include missing file name, %s", p); + } +- if( !strncmp(p,"MIDI",4) && (p[4]=='=' || isspace(p[4])) && abcstate != INSKIPFORX ) { +- for( p+=5; *p && isspace(*p); p++ ) ; ++ if( !strncmp(p,"MIDI",4) && (p[4]=='=' || isspace(static_cast(p[4]))) && abcstate != INSKIPFORX ) { ++ for( p+=5; *p && isspace(static_cast(*p)); p++ ) ; + if( *p == '=' ) +- for( p+=1; *p && isspace(*p); p++ ) ; ++ for( p+=1; *p && isspace(static_cast(*p)); p++ ) ; + abc_MIDI_command(h,p,'%'); + if( h->tp ) abcnolegato = !h->tp->legato; + if( !abcnolegato ) abcnoslurs = 0; +@@ -4034,7 +4034,7 @@ BOOL CSoundFile::ReadABC(const uint8_t *lpStream, DWORD dwMemLength) + partpat[global_part - 'A'][1] = t; + // give every new coming abcevent the desired part indication + while( p[2]==' ' || p[2]=='.' ) p++; // skip blancs and dots +- if( isupper(p[2]) ) ++ if( isupper(static_cast(p[2])) ) + global_part = p[2]; + else + global_part = ' '; +@@ -4073,7 +4073,7 @@ BOOL CSoundFile::ReadABC(const uint8_t *lpStream, DWORD dwMemLength) + ch0 = ' '; + pp = 0; + while (*p && (ch = *p++) != '\0') { +- if( !pp && isalpha(ch) && *p != ':' ) { // maybe a macro ++ if( !pp && isalpha(static_cast(ch)) && *p != ':' ) { // maybe a macro + for( mp=h->umacro; mp; mp=mp->next ) { + if( ch == mp->name[0] ) { + pp = p; +@@ -4131,8 +4131,8 @@ BOOL CSoundFile::ReadABC(const uint8_t *lpStream, DWORD dwMemLength) + else + partpat[global_part - 'A'][1] = t; + // give every new coming abcevent the desired part indication +- while( isspace(p[2]) || p[2]=='.' ) p++; // skip blancs and dots +- if( isupper(p[2]) ) ++ while( isspace(static_cast(p[2])) || p[2]=='.' ) p++; // skip blancs and dots ++ if( isupper(static_cast(p[2])) ) + global_part = p[2]; + else + global_part = ' '; +@@ -4152,11 +4152,11 @@ BOOL CSoundFile::ReadABC(const uint8_t *lpStream, DWORD dwMemLength) + break; + } + if( !strncmp(p,"I:",2) ) { // interpret some of the possibilitys +- for( p += 2; isspace(*p); p++ ) ; +- if( !strncmp(p,"MIDI",4) && (p[4]=='=' || isspace(p[4])) ) { // interpret some of the possibilitys +- for( p += 4; isspace(*p); p++ ) ; ++ for( p += 2; isspace(static_cast(*p)); p++ ) ; ++ if( !strncmp(p,"MIDI",4) && (p[4]=='=' || isspace(static_cast(p[4]))) ) { // interpret some of the possibilitys ++ for( p += 4; isspace(static_cast(*p)); p++ ) ; + if( *p == '=' ) +- for( p += 1; isspace(*p); p++ ) ; ++ for( p += 1; isspace(static_cast(*p)); p++ ) ; + abc_MIDI_command(h, p, ']'); + if( h->tp ) abcnolegato = !h->tp->legato; + if( !abcnolegato ) abcnoslurs = 0; +@@ -4235,7 +4235,7 @@ BOOL CSoundFile::ReadABC(const uint8_t *lpStream, DWORD dwMemLength) + notelen *= cnotelen; + notediv *= cnotediv; + tupletr = abc_tuplet(¬elen, ¬ediv, tupletp, tupletq, tupletr); +- while( isspace(*p) ) p++; // allow spacing in broken rithm notation ++ while( isspace(static_cast(*p)) ) p++; // allow spacing in broken rithm notation + p += abc_brokenrithm(p, ¬elen, ¬ediv, &brokenrithm, abchornpipe); + thistime = notelen_notediv_to_ticks(h->speed, notelen*snotelen, notediv*snotediv); + if( abcfermata ) { +@@ -4278,7 +4278,7 @@ BOOL CSoundFile::ReadABC(const uint8_t *lpStream, DWORD dwMemLength) + if( abceffoper != 255 ) abceffect = none; + break; + } +- if( isdigit(*p) ) { // different endings in repeats [i,j,n-r,s,... ++ if( isdigit(static_cast(*p)) ) { // different endings in repeats [i,j,n-r,s,... + h->tp = abc_check_track(h, h->tp); + abc_add_partbreak(h, h->tp, h->tracktime); + p += abc_getnumber(p, ¬elen); +@@ -4304,7 +4304,7 @@ BOOL CSoundFile::ReadABC(const uint8_t *lpStream, DWORD dwMemLength) + break; + case '(': // slurs follow or some tuplet (duplet, triplet etc.) + abcto = 0; +- if( isdigit(*p) ) { ++ if( isdigit(static_cast(*p)) ) { + p += abc_getnumber(p,&tupletp); + tupletr = tupletp; // ABC draft 2.0 (4.13): if r is not given it defaults to p + switch( tupletp ) { // ABC draft 2.0 (4.13): q defaults depending on p and time signature +@@ -4323,10 +4323,10 @@ BOOL CSoundFile::ReadABC(const uint8_t *lpStream, DWORD dwMemLength) + } + if( *p==':' ) { + p++; +- if( isdigit(*p) ) p += abc_getnumber(p,&tupletq); ++ if( isdigit(static_cast(*p)) ) p += abc_getnumber(p,&tupletq); + if( *p==':' ) { + p++; +- if( isdigit(*p) ) p += abc_getnumber(p,&tupletr); ++ if( isdigit(static_cast(*p)) ) p += abc_getnumber(p,&tupletr); + } + } + } +@@ -4375,7 +4375,7 @@ BOOL CSoundFile::ReadABC(const uint8_t *lpStream, DWORD dwMemLength) + sprintf(barsig, "%s%s", sig[abckey], sig[abckey]); // reset the key signature + bartime = h->tracktime; + if( h->tp && h->tp->vpos ) h->tp = abc_locate_track(h, h->tp->v, 0); // reset from voice overlay +- if( isdigit(*p) ) { // different endings in repeats |i,j,n-r,s,... ++ if( isdigit(static_cast(*p)) ) { // different endings in repeats |i,j,n-r,s,... + h->tp = abc_check_track(h, h->tp); + abc_add_partbreak(h, h->tp, h->tracktime); + p += abc_getnumber(p, ¬elen); +@@ -4426,7 +4426,7 @@ BOOL CSoundFile::ReadABC(const uint8_t *lpStream, DWORD dwMemLength) + } + break; + case '"': // chord notation +- if( !strchr("_^<>@", *p) && !isdigit(*p) ) { // if it's not a annotation string ++ if( !strchr("_^<>@", *p) && !isdigit(static_cast(*p)) ) { // if it's not a annotation string + h->tp = abc_check_track(h, h->tp); + if( !h->tpc ) h->tpc = abc_locate_track(h, h->tp->v, 0); + if( h->tp == h->tpc ) abc_add_chord(p, h, h->tpc, h->tracktime); // only do chords for one voice +@@ -4443,8 +4443,8 @@ BOOL CSoundFile::ReadABC(const uint8_t *lpStream, DWORD dwMemLength) + abcto = -1; + } + else +- if( !isspace(*p) ) abcto = 0; +- if( !strncasecmp(p,"to",2) && (isspace(p[2]) || p[2] == '"') ) abcto = 1; ++ if( !isspace(static_cast(*p)) ) abcto = 0; ++ if( !strncasecmp(p,"to",2) && (isspace(static_cast(p[2])) || p[2] == '"') ) abcto = 1; + } + if( !ch ) abcstate = INSKIPFORQUOTE; + break; +@@ -4665,7 +4665,7 @@ BOOL CSoundFile::ReadABC(const uint8_t *lpStream, DWORD dwMemLength) + h->tp->tienote = h->tp->tail; + } + tupletr = abc_tuplet(¬elen, ¬ediv, tupletp, tupletq, tupletr); +- while( isspace(*p) ) p++; // allow spacing in broken rithm notation ++ while( isspace(static_cast(*p)) ) p++; // allow spacing in broken rithm notation + p += abc_brokenrithm(p, ¬elen, ¬ediv, &brokenrithm, abchornpipe); + thistime = notelen_notediv_to_ticks(h->speed, notelen*snotelen, notediv*snotediv); + if( abcfermata ) { +@@ -4699,7 +4699,7 @@ BOOL CSoundFile::ReadABC(const uint8_t *lpStream, DWORD dwMemLength) + abc_track_clear_tiednote(h); + p += abc_notelen(p, ¬elen, ¬ediv); + tupletr = abc_tuplet(¬elen, ¬ediv, tupletp, tupletq, tupletr); +- while( isspace(*p) ) p++; // allow spacing in broken rithm notation ++ while( isspace(static_cast(*p)) ) p++; // allow spacing in broken rithm notation + p += abc_brokenrithm(p, ¬elen, ¬ediv, &brokenrithm, abchornpipe); + thistime = notelen_notediv_to_ticks(h->speed, notelen*snotelen, notediv*snotediv); + if( abcfermata ) { +@@ -4752,7 +4752,7 @@ BOOL CSoundFile::ReadABC(const uint8_t *lpStream, DWORD dwMemLength) + abcarpeggio = 0; + break; + } +- if( isalpha(ch) && *p==':' ) { ++ if( isalpha(static_cast(ch)) && *p==':' ) { + // some unprocessed field line? + while( *p ) p++; // skip it + break; +diff --git a/src/load_mid.cpp b/src/load_mid.cpp +index fe02f5e4..749b5d0c 100644 +--- a/src/load_mid.cpp ++++ b/src/load_mid.cpp +@@ -1198,7 +1198,7 @@ BOOL CSoundFile::ReadMID(const BYTE *lpStream, DWORD dwMemLength) + if (h->miditracks == 0) goto ErrorCleanup; + + p = (BYTE *)getenv(ENV_MMMID_SPEED); +- if( p && isdigit(*p) && p[0] != '0' && p[1] == '\0' ) { ++ if( p && isdigit(static_cast(*p)) && p[0] != '0' && p[1] == '\0' ) { + // transform speed + t = *p - '0'; + h->speed *= t; +diff --git a/src/load_pat.cpp b/src/load_pat.cpp +index fe787311..dfa640e5 100644 +--- a/src/load_pat.cpp ++++ b/src/load_pat.cpp +@@ -392,31 +392,31 @@ void pat_init_patnames(void) + _mm_fgets(mmcfg, line, PATH_MAX); + while( !_mm_feof(mmcfg) ) { + p = line; +- while ( isspace(*p) ) p ++; +- if( isdigit(p[0]) ) { ++ while ( isspace(static_cast(*p)) ) p ++; ++ if( isdigit(static_cast(p[0])) ) { + // get pat number + i = atoi(p); +- while ( isdigit(*p) ) p ++; +- while ( isspace(*p) ) p ++; ++ while ( isdigit(static_cast(*p)) ) p ++; ++ while ( isspace(static_cast(*p)) ) p ++; + // get pat file name + if( *p && i < MAXSMP && i >= 0 && *p != '#' ) { + q = isdrumset ? midipat[pat_gm_drumnr(i)-1] : midipat[i]; + pfnlen = 0; +- while( *p && !isspace(*p) && *p != '#' && pfnlen < 128 ) { ++ while( *p && !isspace(static_cast(*p)) && *p != '#' && pfnlen < 128 ) { + pfnlen ++; + *q++ = *p++; + } +- if( isblank(*p) && *(p+1) != '#' && pfnlen < 128 ) { ++ if( isblank(static_cast(*p)) && *(p+1) != '#' && pfnlen < 128 ) { + *q++ = ':'; pfnlen ++; +- while( isspace(*p) ) { +- while( isspace(*p) ) p++; ++ while( isspace(static_cast(*p)) ) { ++ while( isspace(static_cast(*p)) ) p++; + if ( *p == '#' ) { // comment + +- } else while( *p && !isspace(*p) && pfnlen < 128 ) { ++ } else while( *p && !isspace(static_cast(*p)) && pfnlen < 128 ) { + pfnlen ++; + *q++ = *p++; + } +- if( isspace(*p) ) { *q++ = ' '; pfnlen++; } ++ if( isspace(static_cast(*p)) ) { *q++ = ' '; pfnlen++; } + } + } + *q++ = '\0'; +@@ -429,11 +429,11 @@ void pat_init_patnames(void) + } + else if( !strncmp(p,"dir",3) ) { + p += 3; +- while ( isspace(*p) ) p ++; ++ while ( isspace(static_cast(*p)) ) p ++; + q = p + strlen(p); + if(q > p) { + --q; +- while ( q > p && isspace(*q) ) *(q--) = 0; ++ while ( q > p && isspace(static_cast(*q)) ) *(q--) = 0; + strncpy(pathforpat, p, PATH_MAX - 1); + pathforpat[PATH_MAX - 1] = 0; + } +@@ -441,9 +441,9 @@ void pat_init_patnames(void) + else if( !strncmp(p,"source",6) && nsources < 5 ) { + q = cfgsources[nsources]; + p += 6; +- while ( isspace(*p) ) p ++; ++ while ( isspace(static_cast(*p)) ) p ++; + pfnlen = 0; +- while ( *p && *p != '#' && !isspace(*p) && pfnlen < 128 ) { ++ while ( *p && *p != '#' && !isspace(static_cast(*p)) && pfnlen < 128 ) { + pfnlen ++; + *q++ = *p++; + } +@@ -857,7 +857,7 @@ static void PAT_ReadPatterns(MODCOMMAND *pattern[], WORD psize[], PATHANDLE *h, + i = tt2 - 16 * ((h->samples - 1 - ch) & 3); + if( tt1 < i ) { + t = t % 64; +- if( isalpha(tune[t]) ) { ++ if( isalpha(static_cast(tune[t])) ) { + n = pat_modnote(pat_note(tune[t])); + ins = ch + 1; + vol = 40; diff --git a/package/libmodplug/Config.in b/package/libmodplug/Config.in new file mode 100644 index 00000000..cfc774a5 --- /dev/null +++ b/package/libmodplug/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBMODPLUG + bool "libmodplug" + depends on BR2_INSTALL_LIBSTDCPP + help + MOD music file decoder + + http://modplug-xmms.sourceforge.net/ + +comment "libmodplug needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/libmodplug/libmodplug.hash b/package/libmodplug/libmodplug.hash new file mode 100644 index 00000000..8aaf500a --- /dev/null +++ b/package/libmodplug/libmodplug.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 d145910ca10c3ecab0019d45be7e31ea6be1d1ee951ef0e1f747c9752d20f043 libmodplug-d1b97ed0020bc620a059d3675d1854b40bd2608d.tar.gz +sha256 49942e7b3b175f549e751feb08b5270ca6f6c5fb7a1be9f9517db275ec32c92e COPYING diff --git a/package/libmodplug/libmodplug.mk b/package/libmodplug/libmodplug.mk new file mode 100644 index 00000000..c5d2463f --- /dev/null +++ b/package/libmodplug/libmodplug.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libmodplug +# +################################################################################ + +LIBMODPLUG_VERSION = d1b97ed0020bc620a059d3675d1854b40bd2608d +LIBMODPLUG_SITE = $(call github,Konstanty,libmodplug,$(LIBMODPLUG_VERSION)) +LIBMODPLUG_INSTALL_STAGING = YES +LIBMODPLUG_LICENSE = Public Domain +LIBMODPLUG_LICENSE_FILES = COPYING +LIBMODPLUG_CPE_ID_VENDOR = konstanty_bialkowski +# Our version is actually newer than this, but having this allows to +# not have reports about CVEs for versions older than 0.8.9.0. +LIBMODPLUG_CPE_ID_VERSION = 0.8.9.0 + +$(eval $(cmake-package)) diff --git a/package/libmodsecurity/0001-configure.ac-drop-usage-of-git-at-configure-time.patch b/package/libmodsecurity/0001-configure.ac-drop-usage-of-git-at-configure-time.patch new file mode 100644 index 00000000..6853b19c --- /dev/null +++ b/package/libmodsecurity/0001-configure.ac-drop-usage-of-git-at-configure-time.patch @@ -0,0 +1,80 @@ +From d242b011a8f0d84781bbf7667a44a12646903ca4 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 1 Aug 2021 23:21:35 +0200 +Subject: [PATCH] configure.ac: drop usage of git at configure time + +The usage of git is only to print some messages at configure time, +which is not very useful, and causes a significant number of warning +when regenerating the configure script. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Frank Vanbever +--- + configure.ac | 23 ----------------------- + 1 file changed, 23 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 66d6f4f2..746b1fb4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3,7 +3,6 @@ + + # Get the hash of the last commit, to be used if it is not an + # official release. +-AC_DEFUN([MSC_GIT_HASH], m4_esyscmd_s(git log -1 --format="%h" --abbrev-commit)) + AC_DEFUN([MSC_MAJOR], m4_esyscmd_s(cat headers/modsecurity/modsecurity.h | grep "define MODSECURITY_MAJOR " | awk {'print $3'} | sed 's/\"//g')) + AC_DEFUN([MSC_MINOR], m4_esyscmd_s(cat headers/modsecurity/modsecurity.h | grep "define MODSECURITY_MINOR " | awk {'print $3'} | sed 's/\"//g')) + AC_DEFUN([MSC_PATCHLEVEL], m4_esyscmd_s(cat headers/modsecurity/modsecurity.h | grep "define MODSECURITY_PATCHLEVEL " | awk {'print $3'} | sed 's/\"//g')) +@@ -25,9 +24,6 @@ m4_define([msc_version], + m4_define([msc_version_with_patchlevel], + [msc_version_major.msc_version_minor.msc_version_patchlevel]) + +-m4_define([msc_version_git], +- [m4_esyscmd_s(git describe)]) +- + m4_define([msc_version_info], + [msc_version_c_plus_a:msc_version_patchlevel:msc_version_minor]) + +@@ -73,11 +69,6 @@ AC_MSG_ERROR([\ + + ]) + fi +-# Libinjection version +-AC_DEFUN([LIBINJECTION_VERSION], m4_esyscmd_s(cd "others/libinjection" && git describe && cd ../..)) +- +-# SecLang test version +-AC_DEFUN([SECLANG_TEST_VERSION], m4_esyscmd_s(cd "test/test-cases/secrules-language-tests" && git log -1 --format="%h" --abbrev-commit && cd ../../..)) + + + # Check for yajl +@@ -224,10 +215,6 @@ AC_SUBST([MSC_VERSION_WITH_PATCHLEVEL]) + MSC_VERSION=msc_version + AC_SUBST([MSC_VERSION]) + +-MSC_GIT_VERSION=msc_version_git +-AC_SUBST([MSC_GIT_VERSION]) +- +- + AC_ARG_ENABLE(debug-logs, + [AS_HELP_STRING([--disable-debug-logs],[Turn off the SecDebugLog feature])], + +@@ -419,16 +406,6 @@ AC_OUTPUT + + + # Print a fancy summary +-echo " " +-echo " " +-echo "ModSecurity - ${MSC_GIT_VERSION} for $PLATFORM" +-echo " " +-echo " Mandatory dependencies" +-AS_ECHO_N(" + libInjection ....") +-echo LIBINJECTION_VERSION +-AS_ECHO_N(" + SecLang tests ....") +-echo SECLANG_TEST_VERSION +- + echo " " + echo " Optional dependencies" + +-- +2.39.2 + diff --git a/package/libmodsecurity/0002-modsecurity.pc.in-add-lstdc.patch b/package/libmodsecurity/0002-modsecurity.pc.in-add-lstdc.patch new file mode 100644 index 00000000..9e0b672c --- /dev/null +++ b/package/libmodsecurity/0002-modsecurity.pc.in-add-lstdc.patch @@ -0,0 +1,33 @@ +From 4129643d657b5d0cce83f9ec4ca27289fd69ec43 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 26 Jul 2021 00:24:57 +0200 +Subject: [PATCH] modsecurity.pc.in: add -lstdc++ + +Add -lstdc++ to Libs.Private to avoid the following static build failure +with nginx: + +/home/buildroot/autobuild/instance-2/output-1/host/lib/gcc/xtensa-buildroot-linux-uclibc/10.3.0/../../../../xtensa-buildroot-linux-uclibc/bin/ld: /home/buildroot/autobuild/instance-2/output-1/host/bin/../xtensa-buildroot-linux-uclibc/sysroot/usr/lib/libmodsecurity.a(libmodsecurity_la-transaction.o): in function `std::basic_streambuf >::sbumpc() [clone .isra.0]': +transaction.cc:(.text+0x40): undefined reference to `std::__cxx11::basic_string, std::allocator >::_M_dispose()' + +Fixes: + - http://autobuild.buildroot.org/results/e5a9eb8448980f1c5cafe97180b7d1f48ddf02ca + +Signed-off-by: Fabrice Fontaine +Signed-off-by: Frank Vanbever +--- + modsecurity.pc.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modsecurity.pc.in b/modsecurity.pc.in +index 96cdf5ca..7c895ddc 100644 +--- a/modsecurity.pc.in ++++ b/modsecurity.pc.in +@@ -8,4 +8,4 @@ Description: ModSecurity API + Version: @MSC_VERSION_WITH_PATCHLEVEL@ + Cflags: -I@includedir@ + Libs: -L@libdir@ -lmodsecurity +-Libs.private: @CURL_LDADD@ @GEOIP_LDADD@ @MAXMIND_LDADD@ @GLOBAL_LDADD@ @LIBXML2_LDADD@ @LMDB_LDADD@ @LUA_LDADD@ @PCRE_LDADD@ @SSDEEP_LDADD@ @YAJL_LDADD@ ++Libs.private: @CURL_LDADD@ @GEOIP_LDADD@ @MAXMIND_LDADD@ @GLOBAL_LDADD@ @LIBXML2_LDADD@ @LMDB_LDADD@ @LUA_LDADD@ @PCRE_LDADD@ @SSDEEP_LDADD@ @YAJL_LDADD@ -lstdc++ +-- +2.39.2 + diff --git a/package/libmodsecurity/Config.in b/package/libmodsecurity/Config.in new file mode 100644 index 00000000..da14b216 --- /dev/null +++ b/package/libmodsecurity/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_LIBMODSECURITY + bool "libmodsecurity" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + # libmodsecurity embeds several mbedtls source files, causing + # various issues when static linking and other dependencies of + # libmodsecurity in turn use mbedtls + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_PCRE2 + help + Libmodsecurity is one component of the ModSecurity + v3 project. The library codebase serves as an + interface to ModSecurity Connectors taking in web + traffic and applying traditional ModSecurity + processing. In general, it provides the capability + to load/interpret rules written in the ModSecurity + SecRules format and apply them to HTTP content + provided by your application via Connectors. + + https://github.com/owasp-modsecurity/ModSecurity + +comment "libmodsecurity needs a toolchain w/ C++, threads, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/libmodsecurity/libmodsecurity.hash b/package/libmodsecurity/libmodsecurity.hash new file mode 100644 index 00000000..2221a8a3 --- /dev/null +++ b/package/libmodsecurity/libmodsecurity.hash @@ -0,0 +1,5 @@ +# From https://github.com/owasp-modsecurity/ModSecurity/releases/download/v3.0.12/modsecurity-v3.0.12.tar.gz.sha256 +sha256 a36118401641feef376bb469bf468abf94b7948844976a188a6fccb53390b11f modsecurity-v3.0.12.tar.gz + +# Localy calculated +sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE diff --git a/package/libmodsecurity/libmodsecurity.mk b/package/libmodsecurity/libmodsecurity.mk new file mode 100644 index 00000000..d8c10b98 --- /dev/null +++ b/package/libmodsecurity/libmodsecurity.mk @@ -0,0 +1,66 @@ +################################################################################ +# +# libmodsecurity +# +################################################################################ + +LIBMODSECURITY_VERSION = 3.0.12 +LIBMODSECURITY_SOURCE = modsecurity-v$(LIBMODSECURITY_VERSION).tar.gz +LIBMODSECURITY_SITE = https://github.com/owasp-modsecurity/ModSecurity/releases/download/v$(LIBMODSECURITY_VERSION) +LIBMODSECURITY_INSTALL_STAGING = YES +LIBMODSECURITY_LICENSE = Apache-2.0 +LIBMODSECURITY_LICENSE_FILES = LICENSE +LIBMODSECURITY_CPE_ID_VENDOR = trustwave +LIBMODSECURITY_CPE_ID_PRODUCT = modsecurity +# We're patching configure.ac +LIBMODSECURITY_AUTORECONF = YES + +LIBMODSECURITY_DEPENDENCIES = pcre2 +LIBMODSECURITY_CONF_OPTS = \ + --without-pcre \ + --with-pcre2="$(STAGING_DIR)/usr" \ + --disable-examples \ + --without-lmdb \ + --without-ssdeep \ + --without-lua \ + --without-yajl + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +LIBMODSECURITY_DEPENDENCIES += libxml2 +LIBMODSECURITY_CONF_OPTS += --with-libxml="$(STAGING_DIR)/usr/bin/xml2-config" +else +LIBMODSECURITY_CONF_OPTS += --without-libxml +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +LIBMODSECURITY_DEPENDENCIES += libcurl +LIBMODSECURITY_CONF_OPTS += --with-curl="$(STAGING_DIR)/usr/bin/curl-config" +else +LIBMODSECURITY_CONF_OPTS += --without-curl +endif + +ifeq ($(BR2_PACKAGE_GEOIP),y) +LIBMODSECURITY_DEPENDENCIES += geoip +LIBMODSECURITY_CONF_OPTS += --with-geoip +else +LIBMODSECURITY_CONF_OPTS += --without-geoip +endif + +ifeq ($(BR2_PACKAGE_LIBMAXMINDDB),y) +LIBMODSECURITY_DEPENDENCIES += libmaxminddb +LIBMODSECURITY_CONF_OPTS += --with-maxmind +else +LIBMODSECURITY_CONF_OPTS += --without-maxmind +endif + +LIBMODSECURITY_CXXFLAGS = $(TARGET_CXXFLAGS) + +# m68k_cf can't use -fPIC that libmodsecurity forces to use, so we need +# to disable it to avoid a build failure. +ifeq ($(BR2_m68k_cf),y) +LIBMODSECURITY_CXXFLAGS += -fno-PIC +endif + +LIBMODSECURITY_CONF_OPTS += CXXFLAGS="$(LIBMODSECURITY_CXXFLAGS)" + +$(eval $(autotools-package)) diff --git a/package/libmpdclient/Config.in b/package/libmpdclient/Config.in new file mode 100644 index 00000000..ba0df56e --- /dev/null +++ b/package/libmpdclient/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBMPDCLIENT + bool "libmpdclient" + help + A stable, documented, asynchronous API library for interfacing + MPD in the C, C++ & Objective C languages. + + http://www.musicpd.org/libs/libmpdclient/ diff --git a/package/libmpdclient/libmpdclient.hash b/package/libmpdclient/libmpdclient.hash new file mode 100644 index 00000000..626c3834 --- /dev/null +++ b/package/libmpdclient/libmpdclient.hash @@ -0,0 +1,6 @@ +# Verified against http://www.musicpd.org/download/libmpdclient/2/libmpdclient-2.22.tar.xz.sig, sha256 locally computed +sha256 eac15b82b5ba5ed0648af580221eb74657394f7fe768e966d9e9ebb27435429f libmpdclient-2.22.tar.xz + +# Hash for license files: +sha256 fd38b2c053c0cce46d9c5ef3545a6e34d157a240ba99c9b8dca5d37a8147da6c LICENSES/BSD-2-Clause.txt +sha256 e11af671c491efac2f94c1d752bea92f4308ca2450c7d11e582e4b48c40e4de1 LICENSES/BSD-3-Clause.txt diff --git a/package/libmpdclient/libmpdclient.mk b/package/libmpdclient/libmpdclient.mk new file mode 100644 index 00000000..371bc20d --- /dev/null +++ b/package/libmpdclient/libmpdclient.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libmpdclient +# +################################################################################ + +LIBMPDCLIENT_VERSION_MAJOR = 2 +LIBMPDCLIENT_VERSION = $(LIBMPDCLIENT_VERSION_MAJOR).22 +LIBMPDCLIENT_SOURCE = libmpdclient-$(LIBMPDCLIENT_VERSION).tar.xz +LIBMPDCLIENT_SITE = http://www.musicpd.org/download/libmpdclient/$(LIBMPDCLIENT_VERSION_MAJOR) +LIBMPDCLIENT_INSTALL_STAGING = YES +LIBMPDCLIENT_LICENSE = BSD-2-Clause, BSD-3-Clause +LIBMPDCLIENT_LICENSE_FILES = \ + LICENSES/BSD-2-Clause.txt LICENSES/BSD-3-Clause.txt + +$(eval $(meson-package)) diff --git a/package/libmpeg2/0001-altivec.patch b/package/libmpeg2/0001-altivec.patch new file mode 100644 index 00000000..4928a62e --- /dev/null +++ b/package/libmpeg2/0001-altivec.patch @@ -0,0 +1,23 @@ +[PATCH] fix altivec.h detection + +Patch from Gentoo: + +http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/media-libs/libmpeg2/files/libmpeg2-0.5.1-altivec.patch?revision=1.1&view=markup + +Signed-off-by: Peter Korsgaard +--- a/configure.ac.bak 2010-05-25 17:12:14.756245990 +0000 ++++ b/configure.ac 2010-05-25 17:11:51.629581723 +0000 +@@ -79,11 +79,10 @@ + CFLAGS="$OPT_CFLAGS $TRY_CFLAGS $CFLAGS" + AC_MSG_CHECKING([if is needed]) + AC_TRY_COMPILE([], +- [typedef vector int t; +- vec_ld(0, (unsigned char *)0);], ++ [vector int t; t = vec_add(t,t);], + [have_altivec=yes; AC_MSG_RESULT(no)], + [AC_TRY_COMPILE([#include ], +- [typedef vector int t; vec_ld(0, (unsigned char *)0);], ++ [vector int t; t = vec_add(t,t);], + [AC_DEFINE([HAVE_ALTIVEC_H],, + [Define to 1 if you have the header.]) + have_altivec=yes; AC_MSG_RESULT(yes)], diff --git a/package/libmpeg2/0002-armv4l.patch b/package/libmpeg2/0002-armv4l.patch new file mode 100644 index 00000000..70d45ef9 --- /dev/null +++ b/package/libmpeg2/0002-armv4l.patch @@ -0,0 +1,24 @@ +Patch taken from gentoo. + +Signed-off-by: Gustavo Zacarias + +diff -urNp libmpeg2.orig/libmpeg2/motion_comp_arm_s.S libmpeg2/libmpeg2/motion_comp_arm_s.S +--- libmpeg2.orig/libmpeg2/motion_comp_arm_s.S 2008-07-09 21:16:05.000000000 +0200 ++++ libmpeg2/libmpeg2/motion_comp_arm_s.S 2009-11-20 19:55:22.000000000 +0100 +@@ -19,6 +19,16 @@ + @ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + ++@ Data preload is supported only by ARM V5TE and above ++ ++#if (defined (__ARM_ARCH_2__) || defined (__ARM_ARCH_3__) \ ++ || defined (__ARM_ARCH_3M__) || defined (__ARM_ARCH_4__) \ ++ || defined (__ARM_ARCH_4T__) || defined (__ARM_ARCH_5__) \ ++ || defined (__ARM_ARCH_5T__)) ++.macro pld reg ++.endm ++#endif ++ + .text + + @ ---------------------------------------------------------------- diff --git a/package/libmpeg2/0003-fix-arm-detection.patch b/package/libmpeg2/0003-fix-arm-detection.patch new file mode 100644 index 00000000..69ec4547 --- /dev/null +++ b/package/libmpeg2/0003-fix-arm-detection.patch @@ -0,0 +1,39 @@ +Improve the ARM detection to work on Thumb-only architecture + +The ARM-specific assembly code doesn't build on Thumb-only +architectures such as ARMv7-M, but the configure script assumes that +if the host tuple is arm*, then it can build and use the ARM optimized +code. + +This patch improves the configure.ac detection logic, by building one +of the instruction of the optimized assembly code, and using this to +decide whether or not the optimizations should be enabled. + +Signed-off-by: Thomas Petazzoni + +Index: b/configure.ac +=================================================================== +--- a/configure.ac ++++ b/configure.ac +@@ -101,8 +101,10 @@ + alpha*) + AC_DEFINE([ARCH_ALPHA],,[alpha architecture]);; + arm*) +- arm_conditional=: +- AC_DEFINE([ARCH_ARM],,[ARM architecture]);; ++ AC_TRY_LINK([], [asm(".syntax divided\nstmfd sp!,{r4-r11,lr}")], ++ [AC_DEFINE([ARCH_ARM],,[ARM architecture]) ++ use_arm_optimization=yes], ++ [use_arm_optimization=no]) + esac + elif test x"$CC" = x"tendracc"; then + dnl TenDRA portability checking compiler +@@ -122,7 +124,7 @@ + esac + fi + +-AM_CONDITIONAL(ARCH_ARM, ${arm_conditional}) ++AM_CONDITIONAL(ARCH_ARM, test "${use_arm_optimization}" = "yes") + + dnl Checks for libtool - this must be done after we set cflags + AC_LIBTOOL_WIN32_DLL diff --git a/package/libmpeg2/0004-fix-sparc.patch b/package/libmpeg2/0004-fix-sparc.patch new file mode 100644 index 00000000..d876b668 --- /dev/null +++ b/package/libmpeg2/0004-fix-sparc.patch @@ -0,0 +1,16 @@ +Do not use sparcv9 optimization flags for sparcv8 builds + +Signed-off-by: Waldemar Brodkorb + +diff -Nur libmpeg2-0.5.1.orig/configure.ac libmpeg2-0.5.1/configure.ac +--- libmpeg2-0.5.1.orig/configure.ac 2008-07-18 16:30:17.000000000 +0200 ++++ libmpeg2-0.5.1/configure.ac 2017-04-26 21:09:15.780838339 +0200 +@@ -95,7 +95,7 @@ + break + fi + done;; +- sparc-* | sparc64-*) ++ sparc64-*) + AC_DEFINE([ARCH_SPARC],,[sparc architecture]) + TRY_CFLAGS="$OPT_CFLAGS -mcpu=ultrasparc -mvis" + AC_TRY_CFLAGS([$TRY_CFLAGS $CFLAGS],[OPT_CFLAGS="$TRY_CFLAGS"]);; diff --git a/package/libmpeg2/Config.in b/package/libmpeg2/Config.in new file mode 100644 index 00000000..6d7ff678 --- /dev/null +++ b/package/libmpeg2/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBMPEG2 + bool "libmpeg2" + help + MPEG1/MPEG2 video decoder library + + http://libmpeg2.sourceforge.net/ + +if BR2_PACKAGE_LIBMPEG2 + +config BR2_PACKAGE_LIBMPEG2_BINS + bool "mpeg2 binaries" + help + Install mpeg2dec, corrupt_mpeg2 and extract_mpeg2 programs as + well. + +endif diff --git a/package/libmpeg2/libmpeg2.hash b/package/libmpeg2/libmpeg2.hash new file mode 100644 index 00000000..615d0ea6 --- /dev/null +++ b/package/libmpeg2/libmpeg2.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 dee22e893cb5fc2b2b6ebd60b88478ab8556cb3b93f9a0d7ce8f3b61851871d4 libmpeg2-0.5.1.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/libmpeg2/libmpeg2.mk b/package/libmpeg2/libmpeg2.mk new file mode 100644 index 00000000..db9b2f8b --- /dev/null +++ b/package/libmpeg2/libmpeg2.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# libmpeg2 +# +################################################################################ + +LIBMPEG2_VERSION = 0.5.1 +LIBMPEG2_SITE = http://libmpeg2.sourceforge.net/files +LIBMPEG2_LICENSE = GPL-2.0+ +LIBMPEG2_LICENSE_FILES = COPYING +LIBMPEG2_INSTALL_STAGING = YES +LIBMPEG2_AUTORECONF = YES +LIBMPEG2_CONF_OPTS = --without-x --disable-directx + +ifeq ($(BR2_PACKAGE_SDL),y) +LIBMPEG2_CONF_ENV += ac_cv_prog_SDLCONFIG=$(STAGING_DIR)/usr/bin/sdl-config +LIBMPEG2_CONF_OPTS += --enable-sdl +LIBMPEG2_DEPENDENCIES += sdl +else +LIBMPEG2_CONF_OPTS += --disable-sdl +endif + +ifneq ($(BR2_PACKAGE_LIBMPEG2_BINS),y) +define LIBMPEG2_REMOVE_BINS + rm -f $(addprefix $(TARGET_DIR)/usr/bin/,\ + mpeg2dec corrupt_mpeg2 extract_mpeg2) +endef + +LIBMPEG2_POST_INSTALL_TARGET_HOOKS += LIBMPEG2_REMOVE_BINS +endif + +$(eval $(autotools-package)) diff --git a/package/libmspack/Config.in b/package/libmspack/Config.in new file mode 100644 index 00000000..e2b1a905 --- /dev/null +++ b/package/libmspack/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBMSPACK + bool "libmspack" + help + libmspack is a portable library for some loosely related + Microsoft compression formats + + https://www.cabextract.org.uk/libmspack diff --git a/package/libmspack/libmspack.hash b/package/libmspack/libmspack.hash new file mode 100644 index 00000000..9e97063f --- /dev/null +++ b/package/libmspack/libmspack.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 bac862dee6e0fc10d92c70212441d9f8ad9b0222edc9a708c3ead4adb1b24a8e libmspack-0.10.1alpha.tar.gz +sha256 a190dc9c8043755d90f8b0a75fa66b9e42d4af4c980bf5ddc633f0124db3cee7 COPYING.LIB diff --git a/package/libmspack/libmspack.mk b/package/libmspack/libmspack.mk new file mode 100644 index 00000000..f806192e --- /dev/null +++ b/package/libmspack/libmspack.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# libmspack +# +################################################################################ + +LIBMSPACK_VERSION_MAJOR = 0.10.1 +LIBMSPACK_VERSION_MINOR = alpha +LIBMSPACK_VERSION = $(LIBMSPACK_VERSION_MAJOR)$(LIBMSPACK_VERSION_MINOR) +LIBMSPACK_SITE = https://www.cabextract.org.uk/libmspack +LIBMSPACK_LICENSE = LGPL-2.1 +LIBMSPACK_LICENSE_FILES = COPYING.LIB +LIBMSPACK_CPE_ID_VENDOR = kyzer +LIBMSPACK_CPE_ID_VERSION = $(LIBMSPACK_VERSION_MAJOR) +LIBMSPACK_CPE_ID_UPDATE = $(LIBMSPACK_VERSION_MINOR) +LIBMSPACK_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/libnatpmp/Config.in b/package/libnatpmp/Config.in new file mode 100644 index 00000000..879e5ee1 --- /dev/null +++ b/package/libnatpmp/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBNATPMP + bool "libnatpmp" + depends on !BR2_BINFMT_FLAT + depends on !BR2_STATIC_LIBS + help + libnatpmp is an attempt to make a portable and fully compliant + implementation of the NAT-PMP protocol for the client side. It + is based on non blocking sockets and all calls of the API are + asynchronous. It is therefore very easy to integrate the + NAT-PMP code to any event driven code. + + http://miniupnp.free.fr/libnatpmp.html + +comment "libnatpmp needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + depends on !BR2_BINFMT_FLAT diff --git a/package/libnatpmp/libnatpmp.hash b/package/libnatpmp/libnatpmp.hash new file mode 100644 index 00000000..7bdd784b --- /dev/null +++ b/package/libnatpmp/libnatpmp.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 0684ed2c8406437e7519a1bd20ea83780db871b3a3a5d752311ba3e889dbfc70 libnatpmp-20230423.tar.gz +sha256 7184f1e2114b518440962e7de67f0b9d5faa3789ba1f1a7ff33159bd26834b06 LICENSE diff --git a/package/libnatpmp/libnatpmp.mk b/package/libnatpmp/libnatpmp.mk new file mode 100644 index 00000000..99d46d81 --- /dev/null +++ b/package/libnatpmp/libnatpmp.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# libnatpmp +# +################################################################################ + +LIBNATPMP_VERSION = 20230423 +LIBNATPMP_SITE = http://miniupnp.free.fr/files +LIBNATPMP_INSTALL_STAGING = YES +LIBNATPMP_LICENSE = BSD-3-Clause +LIBNATPMP_LICENSE_FILES = LICENSE + +define LIBNATPMP_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + CC="$(TARGET_CC)" +endef + +define LIBNATPMP_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + PREFIX=$(STAGING_DIR) \ + HEADERS='natpmp_declspec.h natpmp.h' \ + $(TARGET_CONFIGURE_OPTS) install +endef + +define LIBNATPMP_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + PREFIX=$(TARGET_DIR) \ + $(TARGET_CONFIGURE_OPTS) install +endef + +$(eval $(generic-package)) diff --git a/package/libndp/Config.in b/package/libndp/Config.in new file mode 100644 index 00000000..6639bb5e --- /dev/null +++ b/package/libndp/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBNDP + bool "libndp" + help + This package contains a library which provides a wrapper + for IPv6 Neighbor Discovery Protocol. It also provides a tool + named ndptool for sending and receiving NDP messages. + + https://github.com/jpirko/libndp diff --git a/package/libndp/libndp.hash b/package/libndp/libndp.hash new file mode 100644 index 00000000..389e0ba5 --- /dev/null +++ b/package/libndp/libndp.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c3ea76e253def89869651686a827da75b56896fe94fabd87d8c14b1d4588fd05 libndp-1.8.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/libndp/libndp.mk b/package/libndp/libndp.mk new file mode 100644 index 00000000..db1de7b8 --- /dev/null +++ b/package/libndp/libndp.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libndp +# +################################################################################ + +LIBNDP_VERSION = 1.8 +LIBNDP_SITE = $(call github,jpirko,libndp,v$(LIBNDP_VERSION)) +LIBNDP_LICENSE = LGPL-2.1+ +LIBNDP_LICENSE_FILES = COPYING +LIBNDP_CPE_ID_VENDOR = libndp +LIBNDP_AUTORECONF = YES +LIBNDP_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/libnet/Config.in b/package/libnet/Config.in new file mode 100644 index 00000000..135f97e9 --- /dev/null +++ b/package/libnet/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBNET + bool "libnet" + help + libnet provides a portable framework for low-level network + packet construction. + + https://github.com/libnet/libnet diff --git a/package/libnet/libnet.hash b/package/libnet/libnet.hash new file mode 100644 index 00000000..eafe6ec3 --- /dev/null +++ b/package/libnet/libnet.hash @@ -0,0 +1,5 @@ +# From https://github.com/libnet/libnet/releases/ +sha256 ad1e2dd9b500c58ee462acd839d0a0ea9a2b9248a1287840bc601e774fb6b28f libnet-1.3.tar.gz + +# Locally computed +sha256 a06f600f67f239898d85f083aeed82ce6015b1c57599ab1def00fb68787ef388 LICENSE diff --git a/package/libnet/libnet.mk b/package/libnet/libnet.mk new file mode 100644 index 00000000..3bc9e30d --- /dev/null +++ b/package/libnet/libnet.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# libnet +# +################################################################################ + +LIBNET_VERSION = 1.3 +LIBNET_SITE = \ + https://github.com/libnet/libnet/releases/download/v$(LIBNET_VERSION) +LIBNET_INSTALL_STAGING = YES +# PF_PACKET is always available on Linux +LIBNET_CONF_OPTS = \ + libnet_cv_have_packet_socket=yes \ + --disable-doxygen-doc +LIBNET_LICENSE = BSD-2-Clause, BSD-3-Clause +LIBNET_LICENSE_FILES = LICENSE +LIBNET_CPE_ID_VALID = YES +LIBNET_CONFIG_SCRIPTS = libnet-config + +$(eval $(autotools-package)) diff --git a/package/libnetconf2/Config.in b/package/libnetconf2/Config.in new file mode 100644 index 00000000..34934325 --- /dev/null +++ b/package/libnetconf2/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LIBNETCONF2 + bool "libnetconf2" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libyang + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_LIBYANG + help + libnetconf2 is a NETCONF library in C intended for building + NETCONF clients and servers. + + https://github.com/CESNET/libnetconf2 + +comment "libnetconf2 needs a toolchain w/ threads, dynamic libraray" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libnetconf2/libnetconf2.hash b/package/libnetconf2/libnetconf2.hash new file mode 100644 index 00000000..675c76a5 --- /dev/null +++ b/package/libnetconf2/libnetconf2.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 72e9a6461fadbd22f0cf0d23ba68d62b297c8f564f7f2bee069748fb67fc3a24 libnetconf2-2.1.28.tar.gz +sha256 bd962ab457c8a8cb8faaaa36c11484680f3c9a47dbc336507817ae8935384064 LICENSE diff --git a/package/libnetconf2/libnetconf2.mk b/package/libnetconf2/libnetconf2.mk new file mode 100644 index 00000000..88163926 --- /dev/null +++ b/package/libnetconf2/libnetconf2.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# libnetconf2 +# +################################################################################ + +LIBNETCONF2_VERSION = 2.1.28 +LIBNETCONF2_SITE = $(call github,CESNET,libnetconf2,v$(LIBNETCONF2_VERSION)) +LIBNETCONF2_INSTALL_STAGING = YES +LIBNETCONF2_LICENSE = BSD-3-Clause +LIBNETCONF2_LICENSE_FILES = LICENSE +LIBNETCONF2_DEPENDENCIES = libyang +HOST_LIBNETCONF2_DEPENDENCIES = host-libyang + +LIBNETCONF2_CONF_OPTS = \ + -DENABLE_TESTS=OFF \ + -DENABLE_VALGRIND_TESTS=OFF + +ifeq ($(BR2_PACKAGE_LIBSSH_SERVER), y) +LIBNETCONF2_CONF_OPTS += -DENABLE_SSH=ON +LIBNETCONF2_DEPENDENCIES += libssh +else +LIBNETCONF2_CONF_OPTS += -DENABLE_SSH=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBOPENSSL), y) +LIBNETCONF2_CONF_OPTS += -DENABLE_TLS=ON +LIBNETCONF2_DEPENDENCIES += openssl +else +LIBNETCONF2_CONF_OPTS += -DENABLE_TLS=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +LIBNETCONF2_DEPENDENCIES += libxcrypt +endif + +HOST_LIBNETCONF2_CONF_OPTS = \ + -DENABLE_TESTS=OFF \ + -DENABLE_VALGRIND_TESTS=OFF \ + -DENABLE_SSH=OFF \ + -DENABLE_TLS=OFF + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/libnetfilter_acct/Config.in b/package/libnetfilter_acct/Config.in new file mode 100644 index 00000000..614af27f --- /dev/null +++ b/package/libnetfilter_acct/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBNETFILTER_ACCT + bool "libnetfilter_acct" + select BR2_PACKAGE_LIBMNL + help + libnetfilter_acct is the userspace library providing interface + to extended accounting infrastructure. + + https://www.netfilter.org/projects/libnetfilter_acct/ diff --git a/package/libnetfilter_acct/libnetfilter_acct.hash b/package/libnetfilter_acct/libnetfilter_acct.hash new file mode 100644 index 00000000..da9e1a32 --- /dev/null +++ b/package/libnetfilter_acct/libnetfilter_acct.hash @@ -0,0 +1,6 @@ +# From https://www.netfilter.org/projects/libnetfilter_acct/files/libnetfilter_acct-1.0.3.tar.bz2.{md5sum,sha1sum} +md5 814b2972b2f5c740ff87510bc109168b libnetfilter_acct-1.0.3.tar.bz2 +sha1 4b9073e4aa989b0f000c8da1ab01b22fceed52b2 libnetfilter_acct-1.0.3.tar.bz2 + +# Hash for license file: +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/libnetfilter_acct/libnetfilter_acct.mk b/package/libnetfilter_acct/libnetfilter_acct.mk new file mode 100644 index 00000000..6763ad27 --- /dev/null +++ b/package/libnetfilter_acct/libnetfilter_acct.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libnetfilter_acct +# +################################################################################ + +LIBNETFILTER_ACCT_VERSION = 1.0.3 +LIBNETFILTER_ACCT_SOURCE = libnetfilter_acct-$(LIBNETFILTER_ACCT_VERSION).tar.bz2 +LIBNETFILTER_ACCT_SITE = https://www.netfilter.org/projects/libnetfilter_acct/files +LIBNETFILTER_ACCT_INSTALL_STAGING = YES +LIBNETFILTER_ACCT_DEPENDENCIES = host-pkgconf libmnl +LIBNETFILTER_ACCT_LICENSE = LGPL-2.1+ +LIBNETFILTER_ACCT_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/libnetfilter_conntrack/0001-conntrack-fix-build-with-kernel-5-15-and-musl.patch b/package/libnetfilter_conntrack/0001-conntrack-fix-build-with-kernel-5-15-and-musl.patch new file mode 100644 index 00000000..9e965941 --- /dev/null +++ b/package/libnetfilter_conntrack/0001-conntrack-fix-build-with-kernel-5-15-and-musl.patch @@ -0,0 +1,60 @@ +From 21ee35dde73aec5eba35290587d479218c6dd824 Mon Sep 17 00:00:00 2001 +From: Robert Marko +Date: Thu, 24 Feb 2022 15:01:11 +0100 +Subject: conntrack: fix build with kernel 5.15 and musl + +Currently, with kernel 5.15 headers and musl building is failing with +redefinition errors due to a conflict between the kernel and musl headers. + +Musl is able to suppres the conflicting kernel header definitions if they +are included after the standard libc ones, however since ICMP definitions +were moved into a separate internal header to avoid duplication this has +stopped working and is breaking the builds. + +It seems that the issue is that which contains the UAPI +suppression defines is included in the internal.h header and not in the +proto.h which actually includes the kernel ICMP headers and thus UAPI +supression defines are not present. + +Solve this by moving the include before the ICMP kernel +includes in the proto.h + +Fixes: bc1cb4b11403 ("conntrack: Move icmp request>reply type mapping to common file") +Signed-off-by: Robert Marko +Signed-off-by: Florian Westphal + +[Retrieved from: +https://git.netfilter.org/libnetfilter_conntrack/commit/?id=21ee35dde73aec5eba35290587d479218c6dd824] +Signed-off-by: Fabrice Fontaine +--- + include/internal/internal.h | 1 - + include/internal/proto.h | 1 + + 2 files changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/internal/internal.h b/include/internal/internal.h +index 2ef8a90..7cd7c44 100644 +--- a/include/internal/internal.h ++++ b/include/internal/internal.h +@@ -14,7 +14,6 @@ + #include + #include + #include +-#include + + #include + #include +diff --git a/include/internal/proto.h b/include/internal/proto.h +index 40e7bfe..60a5f4e 100644 +--- a/include/internal/proto.h ++++ b/include/internal/proto.h +@@ -2,6 +2,7 @@ + #define _NFCT_PROTO_H_ + + #include ++#include + #include + #include + +-- +cgit v1.2.3 + diff --git a/package/libnetfilter_conntrack/Config.in b/package/libnetfilter_conntrack/Config.in new file mode 100644 index 00000000..f9a407ff --- /dev/null +++ b/package/libnetfilter_conntrack/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBNETFILTER_CONNTRACK + bool "libnetfilter_conntrack" + select BR2_PACKAGE_LIBMNL + select BR2_PACKAGE_LIBNFNETLINK + help + libnetfilter_conntrack is a userspace library providing + a programming interface (API) to the in-kernel + connection tracking state table. + + http://www.netfilter.org/projects/libnetfilter_conntrack/ diff --git a/package/libnetfilter_conntrack/libnetfilter_conntrack.hash b/package/libnetfilter_conntrack/libnetfilter_conntrack.hash new file mode 100644 index 00000000..205eecf1 --- /dev/null +++ b/package/libnetfilter_conntrack/libnetfilter_conntrack.hash @@ -0,0 +1,5 @@ +# From https://www.netfilter.org/pub/libnetfilter_conntrack/libnetfilter_conntrack-1.0.9.tar.bz2.sha256sum +sha256 67bd9df49fe34e8b82144f6dfb93b320f384a8ea59727e92ff8d18b5f4b579a8 libnetfilter_conntrack-1.0.9.tar.bz2 + +# Hash for license file: +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING diff --git a/package/libnetfilter_conntrack/libnetfilter_conntrack.mk b/package/libnetfilter_conntrack/libnetfilter_conntrack.mk new file mode 100644 index 00000000..e10bdd02 --- /dev/null +++ b/package/libnetfilter_conntrack/libnetfilter_conntrack.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libnetfilter_conntrack +# +################################################################################ + +LIBNETFILTER_CONNTRACK_VERSION = 1.0.9 +LIBNETFILTER_CONNTRACK_SOURCE = libnetfilter_conntrack-$(LIBNETFILTER_CONNTRACK_VERSION).tar.bz2 +LIBNETFILTER_CONNTRACK_SITE = http://www.netfilter.org/projects/libnetfilter_conntrack/files +LIBNETFILTER_CONNTRACK_INSTALL_STAGING = YES +LIBNETFILTER_CONNTRACK_DEPENDENCIES = host-pkgconf libnfnetlink libmnl +LIBNETFILTER_CONNTRACK_LICENSE = GPL-2.0+ +LIBNETFILTER_CONNTRACK_LICENSE_FILES = COPYING +LIBNETFILTER_CONNTRACK_CPE_ID_VENDOR = netfilter + +$(eval $(autotools-package)) diff --git a/package/libnetfilter_cthelper/Config.in b/package/libnetfilter_cthelper/Config.in new file mode 100644 index 00000000..8d9b1dd4 --- /dev/null +++ b/package/libnetfilter_cthelper/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBNETFILTER_CTHELPER + bool "libnetfilter_cthelper" + select BR2_PACKAGE_LIBMNL + help + libnetfilter_cthelper is the userspace library that provides + the programming interface to the user-space helper + infrastructure available since Linux kernel 3.6. + + http://www.netfilter.org/projects/libnetfilter_cthelper/ diff --git a/package/libnetfilter_cthelper/libnetfilter_cthelper.hash b/package/libnetfilter_cthelper/libnetfilter_cthelper.hash new file mode 100644 index 00000000..93b9f8da --- /dev/null +++ b/package/libnetfilter_cthelper/libnetfilter_cthelper.hash @@ -0,0 +1,5 @@ +# From http://ftp.netfilter.org/pub/libnetfilter_cthelper/libnetfilter_cthelper-1.0.1.tar.bz2.sha256sum +sha256 14073d5487233897355d3ff04ddc1c8d03cc5ba8d2356236aa88161a9f2dc912 libnetfilter_cthelper-1.0.1.tar.bz2 + +# Hash for license file: +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING diff --git a/package/libnetfilter_cthelper/libnetfilter_cthelper.mk b/package/libnetfilter_cthelper/libnetfilter_cthelper.mk new file mode 100644 index 00000000..e0bbbab8 --- /dev/null +++ b/package/libnetfilter_cthelper/libnetfilter_cthelper.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libnetfilter_cthelper +# +################################################################################ + +LIBNETFILTER_CTHELPER_VERSION = 1.0.1 +LIBNETFILTER_CTHELPER_SOURCE = libnetfilter_cthelper-$(LIBNETFILTER_CTHELPER_VERSION).tar.bz2 +LIBNETFILTER_CTHELPER_SITE = http://www.netfilter.org/projects/libnetfilter_cthelper/files +LIBNETFILTER_CTHELPER_INSTALL_STAGING = YES +LIBNETFILTER_CTHELPER_DEPENDENCIES = host-pkgconf libmnl +LIBNETFILTER_CTHELPER_LICENSE = GPL-2.0+ +LIBNETFILTER_CTHELPER_LICENSE_FILES = COPYING +LIBNETFILTER_CTHELPER_CPE_ID_VENDOR = netfilter + +$(eval $(autotools-package)) diff --git a/package/libnetfilter_cttimeout/Config.in b/package/libnetfilter_cttimeout/Config.in new file mode 100644 index 00000000..333919be --- /dev/null +++ b/package/libnetfilter_cttimeout/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT + bool "libnetfilter_cttimeout" + select BR2_PACKAGE_LIBMNL + help + libnetfilter_cttimeout is the userspace library that provides + the programming interface to the fine-grain + connection tracking timeout infrastructure. + + http://www.netfilter.org/projects/libnetfilter_cttimeout/ diff --git a/package/libnetfilter_cttimeout/libnetfilter_cttimeout.hash b/package/libnetfilter_cttimeout/libnetfilter_cttimeout.hash new file mode 100644 index 00000000..81d54dd6 --- /dev/null +++ b/package/libnetfilter_cttimeout/libnetfilter_cttimeout.hash @@ -0,0 +1,5 @@ +# From http://ftp.netfilter.org/pub/libnetfilter_cttimeout/libnetfilter_cttimeout-1.0.1.tar.bz2.sha256sum +sha256 0b59da2f3204e1c80cb85d1f6d72285fc07b01a2f5678abf5dccfbbefd650325 libnetfilter_cttimeout-1.0.1.tar.bz2 + +# Hash for license file: +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING diff --git a/package/libnetfilter_cttimeout/libnetfilter_cttimeout.mk b/package/libnetfilter_cttimeout/libnetfilter_cttimeout.mk new file mode 100644 index 00000000..dcdf34c7 --- /dev/null +++ b/package/libnetfilter_cttimeout/libnetfilter_cttimeout.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libnetfilter_cttimeout +# +################################################################################ + +LIBNETFILTER_CTTIMEOUT_VERSION = 1.0.1 +LIBNETFILTER_CTTIMEOUT_SOURCE = libnetfilter_cttimeout-$(LIBNETFILTER_CTTIMEOUT_VERSION).tar.bz2 +LIBNETFILTER_CTTIMEOUT_SITE = http://www.netfilter.org/projects/libnetfilter_cttimeout/files +LIBNETFILTER_CTTIMEOUT_INSTALL_STAGING = YES +LIBNETFILTER_CTTIMEOUT_DEPENDENCIES = host-pkgconf libmnl +LIBNETFILTER_CTTIMEOUT_LICENSE = GPL-2.0+ +LIBNETFILTER_CTTIMEOUT_LICENSE_FILES = COPYING +LIBNETFILTER_CTTIMEOUT_CPE_ID_VENDOR = netfilter + +$(eval $(autotools-package)) diff --git a/package/libnetfilter_log/Config.in b/package/libnetfilter_log/Config.in new file mode 100644 index 00000000..66e1b170 --- /dev/null +++ b/package/libnetfilter_log/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBNETFILTER_LOG + bool "libnetfilter_log" + select BR2_PACKAGE_LIBMNL + select BR2_PACKAGE_LIBNFNETLINK + help + libnetfilter_log is a userspace library providing interface + to packets that have been logged by the kernel packet filter. + + https://www.netfilter.org/projects/libnetfilter_log/ diff --git a/package/libnetfilter_log/libnetfilter_log.hash b/package/libnetfilter_log/libnetfilter_log.hash new file mode 100644 index 00000000..1e3cea0a --- /dev/null +++ b/package/libnetfilter_log/libnetfilter_log.hash @@ -0,0 +1,5 @@ +# From https://www.netfilter.org/projects/libnetfilter_log/files/libnetfilter_log-1.0.2.tar.bz2.sha256sum +sha256 e3f408575614d849e4726b45e90c7ebb0e6744b04859555a9ce6ec40744ffeea libnetfilter_log-1.0.2.tar.bz2 + +# Hash for license file: +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING diff --git a/package/libnetfilter_log/libnetfilter_log.mk b/package/libnetfilter_log/libnetfilter_log.mk new file mode 100644 index 00000000..9b01f819 --- /dev/null +++ b/package/libnetfilter_log/libnetfilter_log.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libnetfilter_log +# +################################################################################ + +LIBNETFILTER_LOG_VERSION = 1.0.2 +LIBNETFILTER_LOG_SOURCE = libnetfilter_log-$(LIBNETFILTER_LOG_VERSION).tar.bz2 +LIBNETFILTER_LOG_SITE = https://www.netfilter.org/projects/libnetfilter_log/files +LIBNETFILTER_LOG_INSTALL_STAGING = YES +LIBNETFILTER_LOG_DEPENDENCIES = host-pkgconf libmnl libnfnetlink +LIBNETFILTER_LOG_LICENSE = GPL-2.0+ +LIBNETFILTER_LOG_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/libnetfilter_queue/Config.in b/package/libnetfilter_queue/Config.in new file mode 100644 index 00000000..e93e8ea3 --- /dev/null +++ b/package/libnetfilter_queue/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBNETFILTER_QUEUE + bool "libnetfilter_queue" + select BR2_PACKAGE_LIBNFNETLINK + select BR2_PACKAGE_LIBMNL + help + libnetfilter_queue is the userspace library that provides + the programming interface to the fine-grain + connection tracking timeout infrastructure. + + http://www.netfilter.org/projects/libnetfilter_queue/ diff --git a/package/libnetfilter_queue/libnetfilter_queue.hash b/package/libnetfilter_queue/libnetfilter_queue.hash new file mode 100644 index 00000000..098205c9 --- /dev/null +++ b/package/libnetfilter_queue/libnetfilter_queue.hash @@ -0,0 +1,5 @@ +# From http://netfilter.org/pub/libnetfilter_queue/libnetfilter_queue-1.0.5.tar.bz2.sha256sum +sha256 f9ff3c11305d6e03d81405957bdc11aea18e0d315c3e3f48da53a24ba251b9f5 libnetfilter_queue-1.0.5.tar.bz2 + +# Hash for license file: +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING diff --git a/package/libnetfilter_queue/libnetfilter_queue.mk b/package/libnetfilter_queue/libnetfilter_queue.mk new file mode 100644 index 00000000..6cd35bae --- /dev/null +++ b/package/libnetfilter_queue/libnetfilter_queue.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libnetfilter_queue +# +################################################################################ + +LIBNETFILTER_QUEUE_VERSION = 1.0.5 +LIBNETFILTER_QUEUE_SOURCE = libnetfilter_queue-$(LIBNETFILTER_QUEUE_VERSION).tar.bz2 +LIBNETFILTER_QUEUE_SITE = http://www.netfilter.org/projects/libnetfilter_queue/files +LIBNETFILTER_QUEUE_INSTALL_STAGING = YES +LIBNETFILTER_QUEUE_DEPENDENCIES = host-pkgconf libnfnetlink libmnl +LIBNETFILTER_QUEUE_AUTORECONF = YES +LIBNETFILTER_QUEUE_LICENSE = GPL-2.0+ +LIBNETFILTER_QUEUE_LICENSE_FILES = COPYING +LIBNETFILTER_QUEUE_CPE_ID_VENDOR = netfilter + +$(eval $(autotools-package)) diff --git a/package/libnfc/0001-autotools-make-example-build-optional.patch b/package/libnfc/0001-autotools-make-example-build-optional.patch new file mode 100644 index 00000000..ce01de74 --- /dev/null +++ b/package/libnfc/0001-autotools-make-example-build-optional.patch @@ -0,0 +1,69 @@ +From 874d9605aa9cd028aed149c2dd1bb410856477fb Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 21 Jun 2020 23:28:37 +0200 +Subject: [PATCH] autotools: make example build optional + +This patch makes example build optional for autotools build system. + +In order to keep the former behavior, example build is enabled by default. + +Signed-off-by: Samuel Martin +[Retrieved (and slightly updated to remove CMakeLists.txt) from: +https://git.buildroot.net/buildroot/tree/package/libnfc/0001-build-systems-make-example-build-optional.patch] +Signed-off-by: Fabrice Fontaine +[Retrieved from: +https://github.com/nfc-tools/libnfc/commit/874d9605aa9cd028aed149c2dd1bb410856477fb] +--- + Makefile.am | 8 +++++++- + configure.ac | 11 +++++++++++ + 2 files changed, 18 insertions(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index d2f6fc8e..516ebee2 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -2,7 +2,13 @@ ACLOCAL_AMFLAGS = -I m4 + + AM_CFLAGS = $(LIBNFC_CFLAGS) + +-SUBDIRS = libnfc utils examples include contrib cmake test ++SUBDIRS = libnfc utils ++ ++if EXAMPLE_ENABLED ++SUBDIRS += examples ++endif ++ ++SUBDIRS += include contrib cmake test + + pkgconfigdir = $(libdir)/pkgconfig + pkgconfig_DATA = libnfc.pc +diff --git a/configure.ac b/configure.ac +index 280a6d08..46b65d33 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -157,6 +157,14 @@ then + fi + AM_CONDITIONAL(DOC_ENABLED, [test x"$enable_doc" = xyes]) + ++# Example build (default: yes) ++AC_ARG_ENABLE([example],AS_HELP_STRING([--enable-example],[Enable example build.]),[enable_example=$enableval],[enable_example="yes"]) ++ ++AC_MSG_CHECKING(for example build) ++AC_MSG_RESULT($enable_example) ++ ++AM_CONDITIONAL(EXAMPLE_ENABLED, [test x"$enable_example" = xyes]) ++ + # Dependencies + PKG_CONFIG_REQUIRES="" + +@@ -175,7 +183,10 @@ if test x$ac_cv_with_cutter = xyes -a x$ac_cv_use_cutter = xno; then + fi + AM_CONDITIONAL([WITH_CUTTER], [test "$ac_cv_use_cutter" != "no"]) + ++if test x"$enable_example" = "xyes" ++then + AC_CHECK_READLINE ++fi + + # Help us to write great code ;-) + CFLAGS="$CFLAGS -Wall -pedantic -Wextra" diff --git a/package/libnfc/Config.in b/package/libnfc/Config.in new file mode 100644 index 00000000..3686f570 --- /dev/null +++ b/package/libnfc/Config.in @@ -0,0 +1,83 @@ +config BR2_PACKAGE_LIBNFC + bool "libnfc" + help + Public platform independent Near Field Communication (NFC) + library. + + http://www.libnfc.org/ + +if BR2_PACKAGE_LIBNFC + +config BR2_PACKAGE_LIBNFC_ACR122_PCSC + bool "acr122_pcsc driver" + depends on BR2_TOOLCHAIN_HAS_THREADS # pcsc-lite + depends on BR2_USE_MMU # pcsc-lite + depends on !BR2_STATIC_LIBS # pcsc-lite + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # pcsc-lite + select BR2_PACKAGE_PCSC_LITE + help + support for acr112_pcsc driver + +comment "acr122_pcsc driver needs a toolchain w/ threads, dynamic library, gcc >= 4.9" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_LIBNFC_ACR122_USB + bool "acr122_usb driver" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + help + support for acr122_usb driver + +comment "acr122_usb driver needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_LIBNFC_ACR122S + bool "acr122s driver" + help + support for acr122s driver + +config BR2_PACKAGE_LIBNFC_ARYGON + bool "arygon driver" + default y + help + support for arygon driver + +config BR2_PACKAGE_LIBNFC_PN532_I2C + bool "pn532_i2c driver" + help + support for pn532_i2c driver + +config BR2_PACKAGE_LIBNFC_PN532_SPI + bool "pn532_spi driver" + help + support for pn532_spi driver + +config BR2_PACKAGE_LIBNFC_PN532_UART + bool "pn532_uart driver" + help + support for pn532_uart driver + +config BR2_PACKAGE_LIBNFC_PN53X_USB + bool "pn53x_usb driver" + default y + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + help + support for pn53x_usb driver + +comment "pn53x_usb driver needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_LIBNFC_EXAMPLES + bool "build libnfc examples" + select BR2_PACKAGE_READLINE + +endif diff --git a/package/libnfc/libnfc.hash b/package/libnfc/libnfc.hash new file mode 100644 index 00000000..8a346cbf --- /dev/null +++ b/package/libnfc/libnfc.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 6d9ad31c86408711f0a60f05b1933101c7497683c2e0d8917d1611a3feba3dd5 libnfc-1.8.0.tar.bz2 +sha256 9ccf26cfe845e0eb8bb58053e47366e7ab6b697ae010f7650978d4b71b7d1fc1 COPYING diff --git a/package/libnfc/libnfc.mk b/package/libnfc/libnfc.mk new file mode 100644 index 00000000..19715633 --- /dev/null +++ b/package/libnfc/libnfc.mk @@ -0,0 +1,63 @@ +################################################################################ +# +# libnfc +# +################################################################################ + +LIBNFC_VERSION = 1.8.0 +LIBNFC_SOURCE = libnfc-$(LIBNFC_VERSION).tar.bz2 +LIBNFC_SITE = https://github.com/nfc-tools/libnfc/releases/download/libnfc-$(LIBNFC_VERSION) +LIBNFC_LICENSE = LGPL-3.0+ +LIBNFC_LICENSE_FILES = COPYING +LIBNFC_AUTORECONF = YES +LIBNFC_INSTALL_STAGING = YES + +LIBNFC_DEPENDENCIES = host-pkgconf + +# N.B. The acr122 driver requires pcsc-lite. +ifeq ($(BR2_PACKAGE_LIBNFC_ACR122_PCSC),y) +LIBNFC_DRIVER_LIST += acr122_pcsc +LIBNFC_DEPENDENCIES += pcsc-lite +endif + +ifeq ($(BR2_PACKAGE_LIBNFC_ACR122_USB),y) +LIBNFC_DRIVER_LIST += acr122_usb +LIBNFC_DEPENDENCIES += libusb libusb-compat +endif + +ifeq ($(BR2_PACKAGE_LIBNFC_ACR122S),y) +LIBNFC_DRIVER_LIST += acr122s +endif + +ifeq ($(BR2_PACKAGE_LIBNFC_ARYGON),y) +LIBNFC_DRIVER_LIST += arygon +endif + +ifeq ($(BR2_PACKAGE_LIBNFC_PN532_I2C),y) +LIBNFC_DRIVER_LIST += pn532_i2c +endif + +ifeq ($(BR2_PACKAGE_LIBNFC_PN532_SPI),y) +LIBNFC_DRIVER_LIST += pn532_spi +endif + +ifeq ($(BR2_PACKAGE_LIBNFC_PN532_UART),y) +LIBNFC_DRIVER_LIST += pn532_uart +endif + +ifeq ($(BR2_PACKAGE_LIBNFC_PN53X_USB),y) +LIBNFC_DRIVER_LIST += pn53x_usb +LIBNFC_DEPENDENCIES += libusb libusb-compat +endif + +LIBNFC_CONF_OPTS = \ + --with-drivers=$(subst $(space),$(comma),$(strip $(LIBNFC_DRIVER_LIST))) + +ifeq ($(BR2_PACKAGE_LIBNFC_EXAMPLES),y) +LIBNFC_CONF_OPTS += --enable-example +LIBNFC_DEPENDENCIES += readline +else +LIBNFC_CONF_OPTS += --disable-example +endif + +$(eval $(autotools-package)) diff --git a/package/libnfnetlink/Config.in b/package/libnfnetlink/Config.in new file mode 100644 index 00000000..fa247c59 --- /dev/null +++ b/package/libnfnetlink/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBNFNETLINK + bool "libnfnetlink" + help + libnfnetlink is the low-level library for netfilter related + kernel/userspace communication. + It provides a generic messaging infrastructure for in-kernel + netfilter subsystems (such as nfnetlink_log, nfnetlink_queue, + nfnetlink_conntrack) and their respective users + and/or management tools in userspace. + + http://www.netfilter.org/projects/libnfnetlink/ diff --git a/package/libnfnetlink/libnfnetlink.hash b/package/libnfnetlink/libnfnetlink.hash new file mode 100644 index 00000000..63708f8f --- /dev/null +++ b/package/libnfnetlink/libnfnetlink.hash @@ -0,0 +1,5 @@ +# From http://ftp.netfilter.org/pub/libnfnetlink/libnfnetlink-1.0.2.tar.bz2.sha256sum +sha256 b064c7c3d426efb4786e60a8e6859b82ee2f2c5e49ffeea640cfe4fe33cbc376 libnfnetlink-1.0.2.tar.bz2 + +# Hash for license file: +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING diff --git a/package/libnfnetlink/libnfnetlink.mk b/package/libnfnetlink/libnfnetlink.mk new file mode 100644 index 00000000..85a717b8 --- /dev/null +++ b/package/libnfnetlink/libnfnetlink.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libnfnetlink +# +################################################################################ + +LIBNFNETLINK_VERSION = 1.0.2 +LIBNFNETLINK_SOURCE = libnfnetlink-$(LIBNFNETLINK_VERSION).tar.bz2 +LIBNFNETLINK_SITE = http://www.netfilter.org/projects/libnfnetlink/files +LIBNFNETLINK_INSTALL_STAGING = YES +LIBNFNETLINK_LICENSE = GPL-2.0 +LIBNFNETLINK_LICENSE_FILES = COPYING +LIBNFNETLINK_CPE_ID_VENDOR = netfilter + +$(eval $(autotools-package)) diff --git a/package/libnfs/0001-Fix-include-sys-time.h.patch b/package/libnfs/0001-Fix-include-sys-time.h.patch new file mode 100644 index 00000000..03193d6d --- /dev/null +++ b/package/libnfs/0001-Fix-include-sys-time.h.patch @@ -0,0 +1,44 @@ +From 9df082012cba1dc32d83e5e8b0bdc0892f250058 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Mon, 5 Nov 2018 00:43:07 +0100 +Subject: [PATCH] Fix include sys/time.h +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +POSIX says `struct timeval` is defined if is included. + +Instead of the mess that is currently done based on the system on which +the stuff is being compiled, include it unconditionally. + +Upstream: https://github.com/sahlberg/libnfs/issues/272 + +Signed-off-by: Jörg Krause +[Fabrice: update for 5.0.2] +Signed-off-by: Fabrice Fontaine +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + include/nfsc/libnfs.h | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/include/nfsc/libnfs.h b/include/nfsc/libnfs.h +index 09dcf1c..b6db58c 100755 +--- a/include/nfsc/libnfs.h ++++ b/include/nfsc/libnfs.h +@@ -28,12 +28,7 @@ + #endif + + #include +-#if defined(__ANDROID__) || defined(AROS) || defined(__PPU__) \ +- || ( defined(__APPLE__) && defined(__MACH__) ) || defined(__FreeBSD__) || defined(__OpenBSD__) + #include +-#else +-#include +-#endif + + #ifdef __cplusplus + extern "C" { +-- +2.19.1 + diff --git a/package/libnfs/0002-utils-nfs-stat.c-include-time.h.patch b/package/libnfs/0002-utils-nfs-stat.c-include-time.h.patch new file mode 100644 index 00000000..649d8452 --- /dev/null +++ b/package/libnfs/0002-utils-nfs-stat.c-include-time.h.patch @@ -0,0 +1,39 @@ +From 034205b6b3acd64f9c75010d8da27e2c9f1bc82f Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 21 Jul 2024 18:04:05 +0200 +Subject: [PATCH] utils/nfs-stat.c: include time.h + +Include time.h to fix the following build failure with gcc >= 14 which +enables -Werror=implicit-function-declaration +(https://gcc.gnu.org/gcc-14/porting_to.html): + +nfs-stat.c: In function 'main': +nfs-stat.c:287:30: error: implicit declaration of function 'ctime' [-Wimplicit-function-declaration] + 287 | printf("Access: %s", ctime( (const time_t *) &st.nfs_atime)); + | ^~~~~ +nfs-stat.c:177:1: note: 'ctime' is defined in header ''; this is probably fixable by adding '#include ' + 176 | #include + +++ |+#include + 177 | char *uid_to_name(int uid) + +Fixes: + - http://autobuild.buildroot.org/results/73c3828a4e5d275ca0dfdd5b314494e2b00393c8 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/sahlberg/libnfs/commit/39e1ae0206fb519c551b48b0e6de57f3e764e886 +--- + utils/nfs-stat.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/utils/nfs-stat.c b/utils/nfs-stat.c +index 17ddb311..0ec33544 100644 +--- a/utils/nfs-stat.c ++++ b/utils/nfs-stat.c +@@ -50,6 +50,7 @@ WSADATA wsaData; + #include + #include + #include ++#include + #include "libnfs.h" + #include "libnfs-raw.h" + #include "libnfs-raw-mount.h" diff --git a/package/libnfs/Config.in b/package/libnfs/Config.in new file mode 100644 index 00000000..2a1ef03c --- /dev/null +++ b/package/libnfs/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBNFS + bool "libnfs" + depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC || BR2_TOOLCHAIN_HAS_THREADS # libtirpc + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + help + nfs userspace implementation. + + http://github.com/sahlberg/libnfs + +comment "libnfs needs a toolchain w/ threads" + depends on !(BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_HAS_NATIVE_RPC) diff --git a/package/libnfs/libnfs.hash b/package/libnfs/libnfs.hash new file mode 100644 index 00000000..c5e5197c --- /dev/null +++ b/package/libnfs/libnfs.hash @@ -0,0 +1,6 @@ +# Locally calculated +sha256 d945cb4f4c8f82ee1f3640893a168810f794a28e1010bb007ec5add345e9df3e libnfs-5.0.3.tar.gz +sha256 edd960c0142b8ada98b43b6396b78f4e557b0bc70ac601a51e397ad04070e2c5 COPYING +sha256 d9406ced95457941032aa11d04623b8ab71f2827a3395ebef137aec475be35b1 LICENCE-BSD.txt +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENCE-LGPL-2.1.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENCE-GPL-3.txt diff --git a/package/libnfs/libnfs.mk b/package/libnfs/libnfs.mk new file mode 100644 index 00000000..e5e302a4 --- /dev/null +++ b/package/libnfs/libnfs.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# libnfs +# +################################################################################ + +LIBNFS_VERSION = 5.0.3 +LIBNFS_SITE = $(call github,sahlberg,libnfs,libnfs-$(LIBNFS_VERSION)) +LIBNFS_INSTALL_STAGING = YES +LIBNFS_AUTORECONF = YES +LIBNFS_LICENSE = LGPL-2.1+ (library), BSD-2-Clause (protocol, .x files), GPL-3.0+ (examples) +LIBNFS_LICENSE_FILES = COPYING LICENCE-BSD.txt LICENCE-LGPL-2.1.txt LICENCE-GPL-3.txt +LIBNFS_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +LIBNFS_DEPENDENCIES += libtirpc +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +LIBNFS_CONF_OPTS += --enable-pthread +else +LIBNFS_CONF_OPTS += --disable-pthread +endif + +$(eval $(autotools-package)) diff --git a/package/libnftnl/Config.in b/package/libnftnl/Config.in new file mode 100644 index 00000000..0d17751e --- /dev/null +++ b/package/libnftnl/Config.in @@ -0,0 +1,15 @@ +comment "libnftnl needs a toolchain w/ headers >= 3.12" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + +config BR2_PACKAGE_LIBNFTNL + bool "libnftnl" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + select BR2_PACKAGE_LIBMNL + help + libnftnl is a userspace library providing a low-level + netlink programming interface (API) to the in-kernel + nf_tables subsystem. The library libnftnl has been + previously known as libnftables. This library is + currently used by nftables. + + http://netfilter.org/projects/libnftnl/index.html diff --git a/package/libnftnl/libnftnl.hash b/package/libnftnl/libnftnl.hash new file mode 100644 index 00000000..5d1aad15 --- /dev/null +++ b/package/libnftnl/libnftnl.hash @@ -0,0 +1,8 @@ +# From http://www.netfilter.org/projects/libnftnl/downloads.html +# Checked pgp signature: +# https://www.netfilter.org/projects/libnftnl/files/libnftnl-1.2.6.tar.xz.sig +# with key: +# https://www.netfilter.org/files/coreteam-gpg-key-0xD55D978A8A1420E4.txt +sha256 ceeaea2cd92147da19f13a35a7f1a4bc2767ff897e838e4b479cf54b59c777f4 libnftnl-1.2.6.tar.xz +# Locally computed: +sha256 98193898c663001eff2fdcfb676e210c13042bc1a05e8d570c363efa396f8e24 COPYING diff --git a/package/libnftnl/libnftnl.mk b/package/libnftnl/libnftnl.mk new file mode 100644 index 00000000..18be55a1 --- /dev/null +++ b/package/libnftnl/libnftnl.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libnftnl +# +################################################################################ + +LIBNFTNL_VERSION = 1.2.6 +LIBNFTNL_SITE = https://netfilter.org/projects/libnftnl/files +LIBNFTNL_SOURCE = libnftnl-$(LIBNFTNL_VERSION).tar.xz +LIBNFTNL_LICENSE = GPL-2.0+ +LIBNFTNL_LICENSE_FILES = COPYING +LIBNFTNL_INSTALL_STAGING = YES +LIBNFTNL_DEPENDENCIES = host-pkgconf libmnl + +$(eval $(autotools-package)) diff --git a/package/libnice/Config.in b/package/libnice/Config.in new file mode 100644 index 00000000..1f62c0b5 --- /dev/null +++ b/package/libnice/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_LIBNICE + bool "libnice" + depends on !BR2_STATIC_LIBS # gnutls + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_GNUTLS + select BR2_PACKAGE_LIBGLIB2 + help + Libnice is an implementation of the IETF's Interactive + Connectivity Establishment (ICE) standard (RFC 5245) and the + Session Traversal Utilities for NAT (STUN) standard (RFC + 5389). + + It provides a GLib-based library, libnice and a Glib-free + library, libstun as well as GStreamer elements. + + http://nice.freedesktop.org/wiki/ + +comment "libnice 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/package/libnice/libnice.hash b/package/libnice/libnice.hash new file mode 100644 index 00000000..cf6d825f --- /dev/null +++ b/package/libnice/libnice.hash @@ -0,0 +1,7 @@ +# Locally computed after checking pgp signature +sha256 72e73a2acf20f59093e21d5601606e405873503eb35f346fa621de23e99b3b39 libnice-0.1.21.tar.gz + +# Hash for license files: +sha256 9246b2ee8b1db30cf03d5d9719ad8bb5edce1cadc85f8cfef319c23d24d950b5 COPYING +sha256 3b3c75ae6c663c4f93987647eb5463d33dc1602a1aded3ac479773f2c3928e3a COPYING.MPL +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING.LGPL diff --git a/package/libnice/libnice.mk b/package/libnice/libnice.mk new file mode 100644 index 00000000..56ee35e4 --- /dev/null +++ b/package/libnice/libnice.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# libnice +# +################################################################################ + +LIBNICE_VERSION = 0.1.21 +LIBNICE_SITE = https://libnice.freedesktop.org/releases +LIBNICE_LICENSE = MPL-1.1 or LGPL-2.1 +LIBNICE_LICENSE_FILES = COPYING COPYING.MPL COPYING.LGPL +LIBNICE_DEPENDENCIES = libglib2 host-pkgconf +LIBNICE_INSTALL_STAGING = YES +LIBNICE_CONF_OPTS = \ + -Dexamples=disabled \ + -Dtests=disabled + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +LIBNICE_CONF_OPTS += -Dcrypto-library=gnutls +LIBNICE_DEPENDENCIES += gnutls +else +LIBNICE_CONF_OPTS += -Dcrypto-library=openssl +LIBNICE_DEPENDENCIES += openssl +endif + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +LIBNICE_CONF_OPTS += -Dintrospection=enabled +LIBNICE_DEPENDENCIES += gobject-introspection +else +LIBNICE_CONF_OPTS += -Dintrospection=disabled +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y) +LIBNICE_CONF_OPTS += -Dgstreamer=enabled +LIBNICE_DEPENDENCIES += gst1-plugins-base +else +LIBNICE_CONF_OPTS += -Dgstreamer=disabled +endif + +$(eval $(meson-package)) diff --git a/package/libnids/0001-libpcap-use-pkg-config.patch b/package/libnids/0001-libpcap-use-pkg-config.patch new file mode 100644 index 00000000..8f8df478 --- /dev/null +++ b/package/libnids/0001-libpcap-use-pkg-config.patch @@ -0,0 +1,48 @@ +configure.in: use pkg-config for libpcap detection + +The detection of libpcap was based in ${prefix}, which doesn't make +sense in a cross-compilation context and can cause host leakage into +the target build. + +So instead, let's use pkg-config to detect libpcap, since it is anyway +already use in this configure.in to detect libglib. + +Signed-off-by: Thomas Petazzoni + +Index: b/configure.in +=================================================================== +--- a/configure.in ++++ b/configure.in +@@ -75,25 +75,13 @@ + fi + ;; + esac ], +-[ if test -f ${prefix}/include/pcap.h; then +- PCAP_CFLAGS="-I${prefix}/include" +- PCAPLIB="-L${exec_prefix}/lib -lpcap" +- elif test -f /usr/include/pcap/pcap.h; then +- PCAP_CFLAGS="-I/usr/include/pcap" +- PCAPLIB="-lpcap" +- else +- TMP=$LIBS +- LIBS="-lpcap $LIBS" +- AC_TRY_LINK([#include ], pcap_open_offline("",""), +- LIBPCAP_FOUND=1,LIBPCAP_FOUND=0) +- LIBS=$TMP +- if test $LIBPCAP_FOUND = 1 ; then +- PCAPLIB="-lpcap" +- else +- AC_ERROR(libpcap not found) +- fi +- fi +- AC_MSG_RESULT(yes) ] ++[ ++ PKG_PROG_PKG_CONFIG ++ PKG_CHECK_MODULES(LIBPCAP, libpcap) ++ AC_MSG_RESULT(yes) ++ PCAP_CFLAGS=${LIBPCAP_CFLAGS} ++ PCAPLIB=${LIBPCAP_LIBS} ++] + ) + AC_SUBST(PCAP_CFLAGS) + AC_SUBST(PCAPLIB) diff --git a/package/libnids/Config.in b/package/libnids/Config.in new file mode 100644 index 00000000..30528f4d --- /dev/null +++ b/package/libnids/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBNIDS + bool "libnids" + select BR2_PACKAGE_LIBPCAP + help + Libnids is an implementation of an E-component of Network + Intrusion Detection System. + + libnids watches all local network traffic, and provides + convenient information on them to perform further analysis. + + Libnids offers IP defragmentation, TCP stream assembly, TCP + port scan detection. + + http://libnids.sourceforge.net/ diff --git a/package/libnids/libnids.hash b/package/libnids/libnids.hash new file mode 100644 index 00000000..e51dbf15 --- /dev/null +++ b/package/libnids/libnids.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3f3e9f99a83cd37bc74af83d415c5e3a7505f5b190dfaf456b0849e0054f6733 libnids-1.26.tar.gz +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING diff --git a/package/libnids/libnids.mk b/package/libnids/libnids.mk new file mode 100644 index 00000000..712630ba --- /dev/null +++ b/package/libnids/libnids.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# libnids +# +################################################################################ + +LIBNIDS_VERSION = 1.26 +LIBNIDS_SITE = $(call github,MITRECND,libnids,$(LIBNIDS_VERSION)) +LIBNIDS_LICENSE = GPL-2.0 +LIBNIDS_LICENSE_FILES = COPYING +LIBNIDS_CPE_ID_VALID = YES +LIBNIDS_INSTALL_STAGING = YES +LIBNIDS_DEPENDENCIES = host-pkgconf libpcap +LIBNIDS_AUTORECONF = YES + +# disable libnet if not available +# Tests in configure.in expect --with-libnet=$build_dir +# not an installation patch like in our context. +# We use with-libnet=yes to skip the unusual paths tests. +# But 'LNETLIB' gets left out, so we need to define it ourselves. +ifeq ($(BR2_PACKAGE_LIBNET),y) +LIBNIDS_DEPENDENCIES += libnet +LIBNIDS_CONF_OPTS += --enable-libnet --with-libnet=yes LNETLIB=-lnet +else +LIBNIDS_CONF_OPTS += --disable-libnet +endif + +# disable libglib2 if not available +# The test in configure.in is flawed: passing --enable-libglib would also +# disable it. Only when neither is passed will the autodetection test be +# executed. +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +LIBNIDS_DEPENDENCIES += libglib2 +else +LIBNIDS_CONF_OPTS += --disable-libglib +endif + +# hand-written Makefile.in, not using automake, needs a custom +# variable for the installation path. +LIBNIDS_INSTALL_STAGING_OPTS = install_prefix=$(STAGING_DIR) install +LIBNIDS_INSTALL_TARGET_OPTS = install_prefix=$(TARGET_DIR) install + +$(eval $(autotools-package)) diff --git a/package/libnl/0001-Add-musl-workaround-to-the-libc-compat.h-copy.patch b/package/libnl/0001-Add-musl-workaround-to-the-libc-compat.h-copy.patch new file mode 100644 index 00000000..227769da --- /dev/null +++ b/package/libnl/0001-Add-musl-workaround-to-the-libc-compat.h-copy.patch @@ -0,0 +1,38 @@ +From 5c984c942e2f9dca4a8380ed782519d9cb0f554d Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Sun, 12 Mar 2017 08:52:20 +0200 +Subject: [PATCH] Add musl workaround to the libc-compat.h copy + +The libc-compat.h kernel header uses glibc specific macros to solve conflicts +with libc provided headers. This patch makes libc-compat.h work also for musl +libc. + +Future rebase note: when upstream updates libc-compat.h some additional macro +definitions will be needed. See the Buildroot iproute2 patch +package/iproute2/0001-Add-the-musl-workaround-to-the-libc-compat.h-copy.patch. + +Signed-off-by: Baruch Siach +Upstream: libc-compat.h is a local copy of a kernel headers. A proper + musl fix must go to the kernel first. +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + include/linux-private/linux/libc-compat.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/linux-private/linux/libc-compat.h b/include/linux-private/linux/libc-compat.h +index a1599911e7a9..f6df7193b8b4 100644 +--- a/include/linux-private/linux/libc-compat.h ++++ b/include/linux-private/linux/libc-compat.h +@@ -50,7 +50,7 @@ + #define _LIBC_COMPAT_H + + /* We have included glibc headers... */ +-#if defined(__GLIBC__) ++#if 1 + + /* Coordinate with glibc net/if.h header. */ + #if defined(_NET_IF_H) && defined(__USE_MISC) +-- +2.43.0 + diff --git a/package/libnl/Config.in b/package/libnl/Config.in new file mode 100644 index 00000000..1e29f574 --- /dev/null +++ b/package/libnl/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_LIBNL + bool "libnl" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + A library for applications dealing with netlink socket. + + https://github.com/thom311/libnl + +if BR2_PACKAGE_LIBNL + +config BR2_PACKAGE_LIBNL_TOOLS + bool "install tools" + # uses + depends on !BR2_STATIC_LIBS + help + Install binary tools. + +comment "libnl tools needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS +endif + +comment "libnl needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libnl/libnl.hash b/package/libnl/libnl.hash new file mode 100644 index 00000000..77d77814 --- /dev/null +++ b/package/libnl/libnl.hash @@ -0,0 +1,4 @@ +# From https://github.com/thom311/libnl/releases/download/libnl3_9_0/libnl-3.9.0.tar.gz.sha256sum +sha256 aed507004d728a5cf11eab48ca4bf9e6e1874444e33939b9d3dfed25018ee9bb libnl-3.9.0.tar.gz +# Locally calculated +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/libnl/libnl.mk b/package/libnl/libnl.mk new file mode 100644 index 00000000..6f50fd6a --- /dev/null +++ b/package/libnl/libnl.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# libnl +# +################################################################################ + +LIBNL_VERSION = 3.9.0 +LIBNL_SITE = https://github.com/thom311/libnl/releases/download/libnl$(subst .,_,$(LIBNL_VERSION)) +LIBNL_LICENSE = LGPL-2.1+ +LIBNL_LICENSE_FILES = COPYING +LIBNL_CPE_ID_VALID = YES + +LIBNL_INSTALL_STAGING = YES +LIBNL_DEPENDENCIES = host-bison host-flex host-pkgconf + +ifeq ($(BR2_PACKAGE_LIBNL_TOOLS),y) +LIBNL_CONF_OPTS += --enable-cli +else +LIBNL_CONF_OPTS += --disable-cli +endif + +ifeq ($(BR2_PACKAGE_CHECK),y) +LIBNL_DEPENDENCIES += check +LIBNL_CONF_OPTS += --enable-unit-tests +else +LIBNL_CONF_OPTS += --disable-unit-tests +endif + +$(eval $(autotools-package)) diff --git a/package/libnpth/0001-Fix-INSERT_EXPOSE_RWLOCK_API-for-musl-C-library.patch b/package/libnpth/0001-Fix-INSERT_EXPOSE_RWLOCK_API-for-musl-C-library.patch new file mode 100644 index 00000000..bc5ed70a --- /dev/null +++ b/package/libnpth/0001-Fix-INSERT_EXPOSE_RWLOCK_API-for-musl-C-library.patch @@ -0,0 +1,37 @@ +From 417abd56fd7bf45cd4948414050615cb1ad59134 Mon Sep 17 00:00:00 2001 +From: NIIBE Yutaka +Date: Fri, 1 Mar 2024 13:53:52 +0900 +Subject: [PATCH] Fix INSERT_EXPOSE_RWLOCK_API for musl C library. + +* configure.ac: Add a case for musl system. + +-- + +GnuPG-bug-id: 5664 +Signed-off-by: NIIBE Yutaka + +Upstream: https://git.gnupg.org/cgi-bin/gitweb.cgi?p=npth.git;a=commit;h=417abd56fd7bf45cd4948414050615cb1ad59134 +Signed-off-by: Fabrice Fontaine +--- + configure.ac | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index c1091b1..576a26e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -381,7 +381,10 @@ fi + AC_SUBST(INSERT_NO_RWLOCK) + + case "${host}" in +- *-*-linux*|*-*-gnu*) ++ *-*-linux-musl*) ++ INSERT_EXPOSE_RWLOCK_API="1" ++ ;; ++ *-*-linux-gnu*|*-*-gnu*) + INSERT_EXPOSE_RWLOCK_API="defined(__USE_UNIX98) || defined(__USE_XOPEN2K)" + ;; + *) +-- +2.30.2 + diff --git a/package/libnpth/0002-Return-a-run-time-error-if-npth_rwlock_timedrdlock-is-not-supported.patch b/package/libnpth/0002-Return-a-run-time-error-if-npth_rwlock_timedrdlock-is-not-supported.patch new file mode 100644 index 00000000..0d9b38e4 --- /dev/null +++ b/package/libnpth/0002-Return-a-run-time-error-if-npth_rwlock_timedrdlock-is-not-supported.patch @@ -0,0 +1,51 @@ +From 01f03a91c9bd63910995aeef412beb3ca6dc9a67 Mon Sep 17 00:00:00 2001 +From: NIIBE Yutaka +Date: Tue, 7 May 2024 13:45:47 +0900 +Subject: [PATCH] Return a run-time error if npth_rwlock_timedrdlock is not + supported. + +* src/npth.c (npth_rwlock_timedrdlock): Return ENOSYS if not +supported. +(npth_rwlock_timedwrlock): Use HAVE_PTHREAD_RWLOCK_TRYWRLOCK. + +-- + +GnuPG-bug-id: 7109 +Fixed-commit: 363c370bd35dd0bb4e5636b2d4f06ea88c658794 +Signed-off-by: NIIBE Yutaka + +Upstream: https://git.gnupg.org/cgi-bin/gitweb.cgi?p=npth.git;a=commit;h=01f03a91c9bd63910995aeef412beb3ca6dc9a67 +Signed-off-by: Fabrice Fontaine +--- + src/npth.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/npth.c b/src/npth.c +index c0ff8da..f02540c 100644 +--- a/src/npth.c ++++ b/src/npth.c +@@ -488,9 +488,11 @@ npth_rwlock_timedrdlock (npth_rwlock_t *rwlock, const struct timespec *abstime) + ENTER(); + #if HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK + err = pthread_rwlock_timedrdlock (rwlock, abstime); +-#else ++#elif HAVE_PTHREAD_RWLOCK_TRYRDLOCK + err = busy_wait_for ((trylock_func_t) pthread_rwlock_tryrdlock, rwlock, + abstime); ++#else ++ err = ENOSYS; + #endif + LEAVE(); + return err; +@@ -533,7 +535,7 @@ npth_rwlock_timedwrlock (npth_rwlock_t *rwlock, const struct timespec *abstime) + ENTER(); + #if HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK + err = pthread_rwlock_timedwrlock (rwlock, abstime); +-#elif HAVE_PTHREAD_RWLOCK_TRYRDLOCK ++#elif HAVE_PTHREAD_RWLOCK_TRYWRLOCK + err = busy_wait_for ((trylock_func_t) pthread_rwlock_trywrlock, rwlock, + abstime); + #else +-- +2.30.2 + diff --git a/package/libnpth/0003-Fix-previous-commit.patch b/package/libnpth/0003-Fix-previous-commit.patch new file mode 100644 index 00000000..5f3ce06b --- /dev/null +++ b/package/libnpth/0003-Fix-previous-commit.patch @@ -0,0 +1,39 @@ +From 75c68399ef3bbb5d024f2a60474a7214fa479016 Mon Sep 17 00:00:00 2001 +From: NIIBE Yutaka +Date: Mon, 13 May 2024 11:13:23 +0900 +Subject: [PATCH] Fix previous commit. + +Signed-off-by: NIIBE Yutaka + +Upstream: https://git.gnupg.org/cgi-bin/gitweb.cgi?p=npth.git;a=commit;h=75c68399ef3bbb5d024f2a60474a7214fa479016 +Signed-off-by: Fabrice Fontaine +--- + src/npth.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/src/npth.c b/src/npth.c +index f02540c..8dced17 100644 +--- a/src/npth.c ++++ b/src/npth.c +@@ -178,6 +178,18 @@ static int initialized_or_any_threads; + typedef int (*trylock_func_t) (void *); + + #ifndef HAVE_PTHREAD_MUTEX_TIMEDLOCK ++#define REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION 1 ++#endif ++ ++#if !HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK && HAVE_PTHREAD_RWLOCK_TRYRDLOCK ++#define REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION 1 ++#endif ++ ++#if !HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK && HAVE_PTHREAD_RWLOCK_TRYWRLOCK ++#define REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION 1 ++#endif ++ ++#if REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION + static int + busy_wait_for (trylock_func_t trylock, void *lock, + const struct timespec *abstime) +-- +2.30.2 + diff --git a/package/libnpth/Config.in b/package/libnpth/Config.in new file mode 100644 index 00000000..71f9fcb3 --- /dev/null +++ b/package/libnpth/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBNPTH + bool "libnpth" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + help + nPth is a library to provide the GNU Pth API and thus a + non-preemptive threads implementation. + + https://www.gnupg.org/related_software/npth/index.html + +comment "libnpth needs a toolchain w/ threads support" + depends on !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/package/libnpth/libnpth.hash b/package/libnpth/libnpth.hash new file mode 100644 index 00000000..a140a23f --- /dev/null +++ b/package/libnpth/libnpth.hash @@ -0,0 +1,6 @@ +# From https://www.gnupg.org/download/integrity_check.html +sha1 a9f7adc1b1f6707071d29bfb3338c28b995ca1ce npth-1.7.tar.bz2 +sha256 8589f56937b75ce33b28d312fccbf302b3b71ec3f3945fde6aaa74027914ad05 npth-1.7.tar.bz2 + +# Hash for license file: +sha256 ce64d5f7b49ea6d80fdb6d4cdee6839d1a94274f7493dc797c3b55b65ec8e9ed COPYING.LIB diff --git a/package/libnpth/libnpth.mk b/package/libnpth/libnpth.mk new file mode 100644 index 00000000..634da6ed --- /dev/null +++ b/package/libnpth/libnpth.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# libnpth +# +################################################################################ + +LIBNPTH_VERSION = 1.7 +LIBNPTH_SOURCE = npth-$(LIBNPTH_VERSION).tar.bz2 +LIBNPTH_SITE = https://www.gnupg.org/ftp/gcrypt/npth +LIBNPTH_LICENSE = LGPL-2.0+ +LIBNPTH_LICENSE_FILES = COPYING.LIB +LIBNPTH_INSTALL_STAGING = YES +# 0001-Fix-INSERT_EXPOSE_RWLOCK_API-for-musl-C-library.patch +LIBNPTH_AUTORECONF = YES +LIBNPTH_CONF_OPTS = --disable-tests +HOST_LIBNPTH_CONF_OPTS = --disable-tests + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libnpupnp/Config.in b/package/libnpupnp/Config.in new file mode 100644 index 00000000..cea5bd5c --- /dev/null +++ b/package/libnpupnp/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LIBNPUPNP + bool "libnpupnp" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBMICROHTTPD + help + npupnp (new pupnp or not pupnp ?) is an UPnP library derived + from the venerable pupnp (https://github.com/pupnp/pupnp), + based on its 1.6.x branch (around 1.6.25). + + https://www.lesbonscomptes.com/upmpdcli/libnpupnp.html + +comment "libnpupnp needs a toolchain w/ C++, threads, gcc >= 4.9" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/libnpupnp/libnpupnp.hash b/package/libnpupnp/libnpupnp.hash new file mode 100644 index 00000000..15ee26c6 --- /dev/null +++ b/package/libnpupnp/libnpupnp.hash @@ -0,0 +1,5 @@ +# Hash from: http://www.lesbonscomptes.com/upmpdcli/downloads/libnpupnp-4.2.2.tar.gz.sha256 +sha256 cb3968773d30e2bfc765547df514fdc8927b9a37ecccca2e260ee8b612e756bc libnpupnp-4.2.2.tar.gz + +# Hash for license file: +sha256 c8b99423cad48bb44e2cf52a496361404290865eac259a82da6d1e4331ececb3 COPYING diff --git a/package/libnpupnp/libnpupnp.mk b/package/libnpupnp/libnpupnp.mk new file mode 100644 index 00000000..d7192ec3 --- /dev/null +++ b/package/libnpupnp/libnpupnp.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libnpupnp +# +################################################################################ + +LIBNPUPNP_VERSION = 4.2.2 +LIBNPUPNP_SITE = http://www.lesbonscomptes.com/upmpdcli/downloads +LIBNPUPNP_LICENSE = BSD-3-Clause +LIBNPUPNP_LICENSE_FILES = COPYING +LIBNPUPNP_INSTALL_STAGING = YES +LIBNPUPNP_DEPENDENCIES = expat libcurl libmicrohttpd + +$(eval $(autotools-package)) diff --git a/package/libnspr/Config.in b/package/libnspr/Config.in new file mode 100644 index 00000000..c1be7151 --- /dev/null +++ b/package/libnspr/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT + def_bool y + +if BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT + +config BR2_PACKAGE_LIBNSPR + bool "libnspr" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + NSPR is the Netscape Portable Runtime library which provides + a platform-neutral API for system level and libc like + functions. The library is used by the Mozilla project as well + as others. + + http://www.mozilla.org/projects/nspr/ + +comment "libnspr needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +endif diff --git a/package/libnspr/libnspr.hash b/package/libnspr/libnspr.hash new file mode 100644 index 00000000..c5691356 --- /dev/null +++ b/package/libnspr/libnspr.hash @@ -0,0 +1,4 @@ +# From https://ftp.mozilla.org/pub/nspr/releases/v4.35/src/SHA256SUMS +sha256 7ea3297ea5969b5d25a5dd8d47f2443cda88e9ee746301f6e1e1426f8a6abc8f nspr-4.35.tar.gz +# Locally calculated +sha256 fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85 nspr/LICENSE diff --git a/package/libnspr/libnspr.mk b/package/libnspr/libnspr.mk new file mode 100644 index 00000000..e891aa48 --- /dev/null +++ b/package/libnspr/libnspr.mk @@ -0,0 +1,57 @@ +################################################################################ +# +# libnspr +# +################################################################################ + +LIBNSPR_VERSION = 4.35 +LIBNSPR_SOURCE = nspr-$(LIBNSPR_VERSION).tar.gz +LIBNSPR_SITE = https://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v$(LIBNSPR_VERSION)/src +LIBNSPR_SUBDIR = nspr +LIBNSPR_INSTALL_STAGING = YES +LIBNSPR_CONFIG_SCRIPTS = nspr-config +LIBNSPR_LICENSE = MPL-2.0 +LIBNSPR_LICENSE_FILES = nspr/LICENSE +LIBNSPR_CPE_ID_VENDOR = mozilla +LIBNSPR_CPE_ID_PRODUCT = netscape_portable_runtime + +# Set the host CFLAGS and LDFLAGS so NSPR does not guess wrongly +LIBNSPR_CONF_ENV = \ + HOST_CFLAGS="-g -O2" \ + HOST_LDFLAGS="-lc" +# NSPR mixes up --build and --host +LIBNSPR_CONF_OPTS = --host=$(GNU_HOST_NAME) +LIBNSPR_CONF_OPTS += --$(if $(BR2_ARCH_IS_64),en,dis)able-64bit + +# ./nspr/pr/include/md/_linux.h tests only __GLIBC__ version to detect +# c-library features, list musl features here for now (taken from +# Alpine Linux). +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +LIBNSPR_CFLAGS += \ + -D_PR_POLL_AVAILABLE \ + -D_PR_HAVE_OFF64_T \ + -D_PR_INET6 \ + -D_PR_HAVE_INET_NTOP \ + -D_PR_HAVE_GETHOSTBYNAME2 \ + -D_PR_HAVE_GETADDRINFO \ + -D_PR_INET6_PROBE +endif + +LIBNSPR_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) $(LIBNSPR_CFLAGS)" + +ifeq ($(BR2_STATIC_LIBS),y) +LIBNSPR_MAKE_OPTS = SHARED_LIBRARY= +LIBNSPR_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) SHARED_LIBRARY= install +LIBNSPR_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) SHARED_LIBRARY= install +endif + +ifeq ($(BR2_SHARED_LIBS),y) +LIBNSPR_MAKE_OPTS = LIBRARY= +LIBNSPR_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) LIBRARY= install +LIBNSPR_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) LIBRARY= install +endif + +HOST_LIBNSPR_CONF_OPTS += --$(if $(filter %64,$(HOSTARCH)),en,dis)able-64bit + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libnss/0001-Bug-1801182-Allow-overriding-OS_ARCH-OS_TEST-and-OS_.patch b/package/libnss/0001-Bug-1801182-Allow-overriding-OS_ARCH-OS_TEST-and-OS_.patch new file mode 100644 index 00000000..7b3abea3 --- /dev/null +++ b/package/libnss/0001-Bug-1801182-Allow-overriding-OS_ARCH-OS_TEST-and-OS_.patch @@ -0,0 +1,45 @@ +From a1a5f3afea2ee59bdbb7a74eb2d7f82b635dbd1a Mon Sep 17 00:00:00 2001 +From: Giulio Benetti +Date: Thu, 17 Nov 2022 20:38:48 +0100 +Subject: [PATCH] Bug 1801182 - Allow overriding OS_ARCH, OS_TEST and + OS_RELEASE in Makefile + +Starting from Make 4.3.91 simple expanded variables can't be safely +overriden via command line anymore, so let's use conditional expanded +variables to override OS_ARCH, OS_TEST and OS_RELEASE. + +Signed-off-by: Giulio Benetti +[Upstream status: https://bugzilla.mozilla.org/show_bug.cgi?id=1801182] +--- + nss/coreconf/arch.mk | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/nss/coreconf/arch.mk b/nss/coreconf/arch.mk +index 17e9faeac..85aac9341 100644 +--- a/nss/coreconf/arch.mk ++++ b/nss/coreconf/arch.mk +@@ -20,17 +20,17 @@ + # Macros for getting the OS architecture + # + +-OS_ARCH := $(subst /,_,$(shell uname -s)) ++OS_ARCH ?= $(subst /,_,$(shell uname -s)) + + # + # Attempt to differentiate between sparc and x86 Solaris + # + +-OS_TEST := $(shell uname -m) ++OS_TEST ?= $(shell uname -m) + ifeq ($(OS_TEST),i86pc) +- OS_RELEASE := $(shell uname -r)_$(OS_TEST) ++ OS_RELEASE ?= $(shell uname -r)_$(OS_TEST) + else +- OS_RELEASE := $(shell uname -r) ++ OS_RELEASE ?= $(shell uname -r) + endif + + +-- +2.34.1 + diff --git a/package/libnss/Config.in b/package/libnss/Config.in new file mode 100644 index 00000000..2dd01972 --- /dev/null +++ b/package/libnss/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_LIBNSS + bool "libnss" + depends on BR2_TOOLCHAIN_HAS_THREADS # libnspr + depends on BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT # libnspr + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBNSPR + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_ZLIB + help + Network Security Services (NSS) is a set of libraries designed + to support development of security-enabled client and server + applications. Applications built with NSS can support SSL v2 + and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, + and X.509 v3 certificates. + + http://www.mozilla.org/projects/security/pki/nss/ + +if BR2_PACKAGE_LIBNSS + +config BR2_PACKAGE_LIBNSS_ARCH + string + default "aarch64" if BR2_aarch64_be + default "ppc" if BR2_powerpc + default "ppc64" if BR2_powerpc64 + default "ppc64le" if BR2_powerpc64le + default BR2_ARCH + +endif + +comment "libnss needs a toolchain w/ threads, dynamic library" + depends on BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/libnss/libnss.hash b/package/libnss/libnss.hash new file mode 100644 index 00000000..1370b6ad --- /dev/null +++ b/package/libnss/libnss.hash @@ -0,0 +1,4 @@ +# From https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_103_RTM/src/SHA256SUMS +sha256 7b4ab657f772dc7520c46e8d481940b292dcfc6a4c90150a7c26672384cee962 nss-3.103.tar.gz +# Locally calculated +sha256 a20c1a32d1f8102432360b42e932869f7c11c7cdbacf9cac554c422132af47f4 nss/COPYING diff --git a/package/libnss/libnss.mk b/package/libnss/libnss.mk new file mode 100644 index 00000000..4c620a60 --- /dev/null +++ b/package/libnss/libnss.mk @@ -0,0 +1,177 @@ +################################################################################ +# +# libnss +# +################################################################################ + +LIBNSS_VERSION = 3.103 +LIBNSS_SOURCE = nss-$(LIBNSS_VERSION).tar.gz +LIBNSS_SITE = https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_$(subst .,_,$(LIBNSS_VERSION))_RTM/src +LIBNSS_DISTDIR = dist +LIBNSS_INSTALL_STAGING = YES +LIBNSS_DEPENDENCIES = libnspr sqlite zlib +LIBNSS_LICENSE = MPL-2.0 +LIBNSS_LICENSE_FILES = nss/COPYING +LIBNSS_CPE_ID_VENDOR = mozilla +LIBNSS_CPE_ID_PRODUCT = nss + +# Don't parallel build if make version = 4.3 +ifneq ($(filter $(RUNNING_MAKE_VERSION),4.3),) +LIBNSS_MAKE = $(MAKE1) +else +LIBNSS_MAKE = $(MAKE) +endif + +LIBNSS_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85862),y) +LIBNSS_CFLAGS += -O0 +endif + +# Need to pass down TARGET_CFLAGS and TARGET_LDFLAGS +define LIBNSS_FIXUP_LINUX_MK + echo 'OS_CFLAGS += $(LIBNSS_CFLAGS)' >> $(@D)/nss/coreconf/Linux.mk + echo 'LDFLAGS += $(TARGET_LDFLAGS)' >> $(@D)/nss/coreconf/Linux.mk +endef + +LIBNSS_PRE_CONFIGURE_HOOKS += LIBNSS_FIXUP_LINUX_MK + +# --gc-sections triggers binutils ld segfault +# https://sourceware.org/bugzilla/show_bug.cgi?id=21180 +ifeq ($(BR2_microblaze),y) +define LIBNSS_DROP_GC_SECTIONS + sed -i 's:-Wl,--gc-sections::g' $(@D)/nss/coreconf/Linux.mk +endef + +LIBNSS_PRE_CONFIGURE_HOOKS += LIBNSS_DROP_GC_SECTIONS +endif + +LIBNSS_BUILD_VARS = \ + MOZILLA_CLIENT=1 \ + NSPR_INCLUDE_DIR=$(STAGING_DIR)/usr/include/nspr \ + NSPR_LIB_DIR=$(STAGING_DIR)/usr/lib \ + NS_USE_GCC=1 \ + NSS_DISABLE_GTESTS=1 \ + NSS_USE_SYSTEM_SQLITE=1 \ + NATIVE_CC="$(HOSTCC)" \ + OS_ARCH="Linux" \ + OS_RELEASE="2.6" \ + OS_TEST=$(BR2_PACKAGE_LIBNSS_ARCH) \ + NSS_ENABLE_WERROR=0 + +ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),) +# Disable Altivec if not supported +LIBNSS_BUILD_VARS += NSS_DISABLE_ALTIVEC=1 +endif + +ifeq ($(BR2_POWERPC_CPU_HAS_VSX),) +# Disable VSX if not supported +LIBNSS_BUILD_VARS += NSS_DISABLE_CRYPTO_VSX=1 +endif + +ifeq ($(BR2_ARM_CPU_HAS_NEON),) +# Disable arm32-neon if neon is not supported +LIBNSS_BUILD_VARS += NSS_DISABLE_ARM32_NEON=1 +endif + +ifeq ($(BR2_ARCH_IS_64),y) +# MIPS64 n32 is treated as a 32-bit architecture by libnss. +# See: https://bugzilla.mozilla.org/show_bug.cgi?id=1010730 +ifeq ($(BR2_MIPS_NABI32),) +LIBNSS_BUILD_VARS += USE_64=1 +endif +endif + +define LIBNSS_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(LIBNSS_MAKE) -C $(@D)/nss coreconf \ + SOURCE_MD_DIR=$(@D)/$(LIBNSS_DISTDIR) \ + DIST=$(@D)/$(LIBNSS_DISTDIR) \ + CHECKLOC= \ + $(LIBNSS_BUILD_VARS) + $(TARGET_CONFIGURE_OPTS) $(LIBNSS_MAKE) -C $(@D)/nss lib/dbm all \ + SOURCE_MD_DIR=$(@D)/$(LIBNSS_DISTDIR) \ + DIST=$(@D)/$(LIBNSS_DISTDIR) \ + CHECKLOC= \ + $(LIBNSS_BUILD_VARS) \ + NATIVE_FLAGS="$(HOST_CFLAGS) -DLINUX" \ + NATIVE_LDFLAGS="$(HOST_LDFLAGS)" +endef + +define LIBNSS_INSTALL_STAGING_CMDS + $(INSTALL) -m 755 -t $(STAGING_DIR)/usr/lib/ \ + $(@D)/$(LIBNSS_DISTDIR)/lib/*.so + $(INSTALL) -m 755 -d $(STAGING_DIR)/usr/include/nss + $(INSTALL) -m 644 -t $(STAGING_DIR)/usr/include/nss \ + $(@D)/$(LIBNSS_DISTDIR)/public/nss/* + $(INSTALL) -m 755 -t $(STAGING_DIR)/usr/lib/ \ + $(@D)/$(LIBNSS_DISTDIR)/lib/*.a + $(INSTALL) -D -m 0644 $(TOPDIR)/package/libnss/nss.pc.in \ + $(STAGING_DIR)/usr/lib/pkgconfig/nss.pc + $(SED) 's/@VERSION@/$(LIBNSS_VERSION)/g;' \ + $(STAGING_DIR)/usr/lib/pkgconfig/nss.pc +endef + +define LIBNSS_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/lib/ \ + $(@D)/$(LIBNSS_DISTDIR)/lib/*.so + $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/include/nss + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/include/nss \ + $(@D)/$(LIBNSS_DISTDIR)/public/nss/* + $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/lib/ \ + $(@D)/$(LIBNSS_DISTDIR)/lib/*.a + $(INSTALL) -D -m 0644 $(TOPDIR)/package/libnss/nss.pc.in \ + $(TARGET_DIR)/usr/lib/pkgconfig/nss.pc + $(INSTALL) -D -m 755 $(@D)/$(LIBNSS_DISTDIR)/bin/certutil \ + $(TARGET_DIR)/usr/bin/certutil + $(SED) 's/@VERSION@/$(LIBNSS_VERSION)/g;' \ + $(TARGET_DIR)/usr/lib/pkgconfig/nss.pc +endef + +HOST_LIBNSS_BUILD_VARS = \ + MOZILLA_CLIENT=1 \ + NSPR_INCLUDE_DIR=$(HOST_DIR)/include/nspr \ + NSPR_LIB_DIR=$(HOST_DIR)/lib \ + NS_USE_GCC=1 \ + NSS_DISABLE_GTESTS=1 \ + NSS_USE_SYSTEM_SQLITE=1 \ + SQLITE_INCLUDE_DIR=$(HOST_DIR)/include \ + ZLIB_INCLUDE_DIR=$(HOST_DIR)/include \ + NSS_ENABLE_WERROR=0 + +HOST_LIBNSS_DEPENDENCIES = host-libnspr host-sqlite host-zlib + +ifneq ($(filter %64,$(HOSTARCH)),) +HOST_LIBNSS_BUILD_VARS += USE_64=1 +endif + +define HOST_LIBNSS_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(LIBNSS_MAKE) -C $(@D)/nss coreconf \ + SOURCE_MD_DIR=$(@D)/$(LIBNSS_DISTDIR) \ + DIST=$(@D)/$(LIBNSS_DISTDIR) \ + CHECKLOC= \ + $(HOST_LIBNSS_BUILD_VARS) + $(HOST_CONFIGURE_OPTS) $(LIBNSS_MAKE) -C $(@D)/nss lib/dbm all \ + SOURCE_MD_DIR=$(@D)/$(LIBNSS_DISTDIR) \ + DIST=$(@D)/$(LIBNSS_DISTDIR) \ + CHECKLOC= \ + $(HOST_LIBNSS_BUILD_VARS) +endef + +define HOST_LIBNSS_INSTALL_CMDS + $(INSTALL) -m 755 -t $(HOST_DIR)/lib/ \ + $(@D)/$(LIBNSS_DISTDIR)/lib/*.so + $(INSTALL) -m 755 -d $(HOST_DIR)/include/nss + $(INSTALL) -m 644 -t $(HOST_DIR)/include/nss \ + $(@D)/$(LIBNSS_DISTDIR)/public/nss/* + $(INSTALL) -m 755 -t $(HOST_DIR)/lib/ \ + $(@D)/$(LIBNSS_DISTDIR)/lib/*.a + $(INSTALL) -D -m 0644 $(TOPDIR)/package/libnss/nss.pc.in \ + $(HOST_DIR)/lib/pkgconfig/nss.pc + $(SED) 's/@VERSION@/$(LIBNSS_VERSION)/g;' \ + $(HOST_DIR)/lib/pkgconfig/nss.pc + $(SED) '/^prefix/s,=.*,=$(HOST_DIR),g;' \ + $(HOST_DIR)/lib/pkgconfig/nss.pc +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/libnss/nss.pc.in b/package/libnss/nss.pc.in new file mode 100644 index 00000000..e27783f6 --- /dev/null +++ b/package/libnss/nss.pc.in @@ -0,0 +1,11 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include/nss + +Name: NSS +Description: Mozilla Network Security Services +Version: @VERSION@ +Requires: nspr +Libs: -L${libdir} -lnss3 -lnssutil3 -lsmime3 -lssl3 +Cflags: -I${includedir} diff --git a/package/libnvme/Config.in b/package/libnvme/Config.in new file mode 100644 index 00000000..bf169f4a --- /dev/null +++ b/package/libnvme/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBNVME + bool "libnvme" + depends on BR2_USE_MMU # malloc_usable_size() + help + libnvme provides type definitions for NVMe specification + and utilities for nvme devices handling in Linux. + + https://github.com/linux-nvme/libnvme diff --git a/package/libnvme/libnvme.hash b/package/libnvme/libnvme.hash new file mode 100644 index 00000000..99c63388 --- /dev/null +++ b/package/libnvme/libnvme.hash @@ -0,0 +1,3 @@ +# Locally calculated sha256 checksums +sha256 455867060d2b7563eab59fe21779dff469d98465028997178c7efbe4b8763206 libnvme-1.9.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/libnvme/libnvme.mk b/package/libnvme/libnvme.mk new file mode 100644 index 00000000..da8707db --- /dev/null +++ b/package/libnvme/libnvme.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# libnvme +# +################################################################################ + +LIBNVME_VERSION = 1.9 +LIBNVME_SITE = $(call github,linux-nvme,libnvme,v$(LIBNVME_VERSION)) +LIBNVME_LICENSE = LGPL-2.1 +LIBNVME_LICENSE_FILES = COPYING +LIBNVME_INSTALL_STAGING = YES + +LIBNVME_CONF_OPTS += \ + -Dtests=false + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +LIBNVME_DEPENDENCIES += python3 host-swig +LIBNVME_CONF_OPTS += -Dpython=enabled +else +LIBNVME_CONF_OPTS += -Dpython=disabled +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBNVME_DEPENDENCIES += openssl +LIBNVME_CONF_OPTS += -Dopenssl=enabled +else +LIBNVME_CONF_OPTS += -Dopenssl=disabled +endif + +ifeq ($(BR2_PACKAGE_JSON_C),y) +LIBNVME_DEPENDENCIES += json-c +LIBNVME_CONF_OPTS += -Djson-c=enabled +else +LIBNVME_CONF_OPTS += -Djson-c=disabled +endif + +ifeq ($(BR2_PACKAGE_KEYUTILS),y) +LIBNVME_DEPENDENCIES += keyutils +LIBNVME_CONF_OPTS += -Dkeyutils=enabled +else +LIBNVME_CONF_OPTS += -Dkeyutils=disabled +endif + +$(eval $(meson-package)) diff --git a/package/liboauth/0001-Fixes-build-issue-with-OpenSSL-1.1.0.patch b/package/liboauth/0001-Fixes-build-issue-with-OpenSSL-1.1.0.patch new file mode 100644 index 00000000..945307bb --- /dev/null +++ b/package/liboauth/0001-Fixes-build-issue-with-OpenSSL-1.1.0.patch @@ -0,0 +1,156 @@ +From 5f1c949b1703367f7f06454fcff650bdb7bac840 Mon Sep 17 00:00:00 2001 +From: DJ Lucas +Date: Sun, 9 Sep 2018 15:46:15 +0200 +Subject: [PATCH] Fixes build issue with OpenSSL-1.1.0 + +Downloaded from +http://www.linuxfromscratch.org/patches/blfs/svn/liboauth-1.0.3-openssl-1.1.0-2.patch + +Patch was sent upstream: https://github.com/x42/liboauth/issues/9 + +Signed-off-by: Bernd Kuhls +--- + src/hash.c | 65 ++++++++++++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 44 insertions(+), 21 deletions(-) + +diff --git a/src/hash.c b/src/hash.c +index 17ff5c8..b7958f7 100644 +--- a/src/hash.c ++++ b/src/hash.c +@@ -362,6 +362,11 @@ looser: + #include "oauth.h" // base64 encode fn's. + #include + ++#if OPENSSL_VERSION_NUMBER < 0x10100000 ++#define EVP_MD_CTX_new EVP_MD_CTX_create ++#define EVP_MD_CTX_free EVP_MD_CTX_destroy ++#endif ++ + char *oauth_sign_hmac_sha1 (const char *m, const char *k) { + return(oauth_sign_hmac_sha1_raw (m, strlen(m), k, strlen(k))); + } +@@ -386,7 +391,7 @@ char *oauth_sign_rsa_sha1 (const char *m, const char *k) { + unsigned char *sig = NULL; + unsigned char *passphrase = NULL; + unsigned int len=0; +- EVP_MD_CTX md_ctx; ++ EVP_MD_CTX *md_ctx; + + EVP_PKEY *pkey; + BIO *in; +@@ -399,24 +404,31 @@ char *oauth_sign_rsa_sha1 (const char *m, const char *k) { + return xstrdup("liboauth/OpenSSL: can not read private key"); + } + ++ md_ctx = EVP_MD_CTX_new(); ++ if (md_ctx == NULL) { ++ return xstrdup("liboauth/OpenSSL: failed to allocate EVP_MD_CTX"); ++ } ++ + len = EVP_PKEY_size(pkey); + sig = (unsigned char*)xmalloc((len+1)*sizeof(char)); + +- EVP_SignInit(&md_ctx, EVP_sha1()); +- EVP_SignUpdate(&md_ctx, m, strlen(m)); +- if (EVP_SignFinal (&md_ctx, sig, &len, pkey)) { ++ EVP_SignInit(md_ctx, EVP_sha1()); ++ EVP_SignUpdate(md_ctx, m, strlen(m)); ++ if (EVP_SignFinal (md_ctx, sig, &len, pkey)) { + char *tmp; + sig[len] = '\0'; + tmp = oauth_encode_base64(len,sig); + OPENSSL_free(sig); + EVP_PKEY_free(pkey); ++ EVP_MD_CTX_free(md_ctx); + return tmp; + } ++ EVP_MD_CTX_free(md_ctx); + return xstrdup("liboauth/OpenSSL: rsa-sha1 signing failed"); + } + + int oauth_verify_rsa_sha1 (const char *m, const char *c, const char *s) { +- EVP_MD_CTX md_ctx; ++ EVP_MD_CTX *md_ctx; + EVP_PKEY *pkey; + BIO *in; + X509 *cert = NULL; +@@ -437,13 +449,18 @@ int oauth_verify_rsa_sha1 (const char *m, const char *c, const char *s) { + return -2; + } + ++ md_ctx = EVP_MD_CTX_new(); ++ if (md_ctx == NULL) { ++ return -2; ++ } ++ + b64d= (unsigned char*) xmalloc(sizeof(char)*strlen(s)); + slen = oauth_decode_base64(b64d, s); + +- EVP_VerifyInit(&md_ctx, EVP_sha1()); +- EVP_VerifyUpdate(&md_ctx, m, strlen(m)); +- err = EVP_VerifyFinal(&md_ctx, b64d, slen, pkey); +- EVP_MD_CTX_cleanup(&md_ctx); ++ EVP_VerifyInit(md_ctx, EVP_sha1()); ++ EVP_VerifyUpdate(md_ctx, m, strlen(m)); ++ err = EVP_VerifyFinal(md_ctx, b64d, slen, pkey); ++ EVP_MD_CTX_free(pkey); + EVP_PKEY_free(pkey); + xfree(b64d); + return (err); +@@ -455,35 +472,41 @@ int oauth_verify_rsa_sha1 (const char *m, const char *c, const char *s) { + */ + char *oauth_body_hash_file(char *filename) { + unsigned char fb[BUFSIZ]; +- EVP_MD_CTX ctx; ++ EVP_MD_CTX *ctx; + size_t len=0; + unsigned char *md; + FILE *F= fopen(filename, "r"); + if (!F) return NULL; + +- EVP_MD_CTX_init(&ctx); +- EVP_DigestInit(&ctx,EVP_sha1()); ++ ctx = EVP_MD_CTX_new(); ++ if (ctx == NULL) { ++ return xstrdup("liboauth/OpenSSL: failed to allocate EVP_MD_CTX"); ++ } ++ EVP_DigestInit(ctx,EVP_sha1()); + while (!feof(F) && (len=fread(fb,sizeof(char),BUFSIZ, F))>0) { +- EVP_DigestUpdate(&ctx, fb, len); ++ EVP_DigestUpdate(ctx, fb, len); + } + fclose(F); + len=0; + md=(unsigned char*) xcalloc(EVP_MD_size(EVP_sha1()),sizeof(unsigned char)); +- EVP_DigestFinal(&ctx, md,(unsigned int*) &len); +- EVP_MD_CTX_cleanup(&ctx); ++ EVP_DigestFinal(ctx, md,(unsigned int*) &len); ++ EVP_MD_CTX_free(ctx); + return oauth_body_hash_encode(len, md); + } + + char *oauth_body_hash_data(size_t length, const char *data) { +- EVP_MD_CTX ctx; ++ EVP_MD_CTX *ctx; + size_t len=0; + unsigned char *md; + md=(unsigned char*) xcalloc(EVP_MD_size(EVP_sha1()),sizeof(unsigned char)); +- EVP_MD_CTX_init(&ctx); +- EVP_DigestInit(&ctx,EVP_sha1()); +- EVP_DigestUpdate(&ctx, data, length); +- EVP_DigestFinal(&ctx, md,(unsigned int*) &len); +- EVP_MD_CTX_cleanup(&ctx); ++ ctx = EVP_MD_CTX_new(); ++ if (ctx == NULL) { ++ return xstrdup("liboauth/OpenSSL: failed to allocate EVP_MD_CTX"); ++ } ++ EVP_DigestInit(ctx,EVP_sha1()); ++ EVP_DigestUpdate(ctx, data, length); ++ EVP_DigestFinal(ctx, md,(unsigned int*) &len); ++ EVP_MD_CTX_free(ctx); + return oauth_body_hash_encode(len, md); + } + +-- +2.14.4 + diff --git a/package/liboauth/Config.in b/package/liboauth/Config.in new file mode 100644 index 00000000..4ed0efa6 --- /dev/null +++ b/package/liboauth/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBOAUTH + bool "liboauth" + select BR2_PACKAGE_OPENSSL + help + liboauth is a collection of c functions implementing the oAuth + Core 1.0 Rev A standard API. liboauth provides basic functions + to escape and encode parameters according to oAuth specs and + offers high-level functions to sign requests or verify + signatures. + + http://liboauth.sourceforge.net/ diff --git a/package/liboauth/liboauth.hash b/package/liboauth/liboauth.hash new file mode 100644 index 00000000..5fa0353d --- /dev/null +++ b/package/liboauth/liboauth.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 0df60157b052f0e774ade8a8bac59d6e8d4b464058cc55f9208d72e41156811f liboauth-1.0.3.tar.gz +sha256 c30608672733bf3abd2ccf6f3206be8d91b7ee58b007b2fdbcfbc61c655e7fb7 COPYING.MIT diff --git a/package/liboauth/liboauth.mk b/package/liboauth/liboauth.mk new file mode 100644 index 00000000..bd54330d --- /dev/null +++ b/package/liboauth/liboauth.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# liboauth +# +################################################################################ + +LIBOAUTH_VERSION = 1.0.3 +LIBOAUTH_SITE = http://downloads.sourceforge.net/project/liboauth +LIBOAUTH_INSTALL_STAGING = YES +LIBOAUTH_DEPENDENCIES += host-pkgconf openssl +LIBOAUTH_LICENSE = MIT +LIBOAUTH_LICENSE_FILES = COPYING.MIT + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +LIBOAUTH_DEPENDENCIES += libcurl +else +LIBOAUTH_CONF_OPTS += --disable-libcurl +endif + +$(eval $(autotools-package)) diff --git a/package/libodb-boost/Config.in b/package/libodb-boost/Config.in new file mode 100644 index 00000000..ada87738 --- /dev/null +++ b/package/libodb-boost/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBODB_BOOST + bool "libodb-boost" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_BOOST + select BR2_PACKAGE_LIBODB + help + This package contains the common ODB runtime library. Every + application that includes code generated by the ODB compiler + will need to link to this library. + + https://www.codesynthesis.com/products/odb/ + +comment "libodb-boost needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_BOOST diff --git a/package/libodb-boost/libodb-boost.hash b/package/libodb-boost/libodb-boost.hash new file mode 100644 index 00000000..622067c3 --- /dev/null +++ b/package/libodb-boost/libodb-boost.hash @@ -0,0 +1,6 @@ +# From https://www.codesynthesis.com/projects/libcutl/ +sha1 f813702b2856732e199ae34e3393b8cecff878ef libodb-boost-2.4.0.tar.bz2 + +# Locally computed +sha256 b41bd4aaa3f3c9563cfa41bae19bda1bbcc3652e4430b4ebb1819eef2ffcadf4 libodb-boost-2.4.0.tar.bz2 +sha256 841105a470fc283851c63941510ffd403c726d1910b688f7df95914ab8b1b5a3 LICENSE diff --git a/package/libodb-boost/libodb-boost.mk b/package/libodb-boost/libodb-boost.mk new file mode 100644 index 00000000..996759a0 --- /dev/null +++ b/package/libodb-boost/libodb-boost.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# libodb-boost +# +################################################################################ + +LIBODB_BOOST_VERSION_MAJOR = 2.4 +LIBODB_BOOST_VERSION = $(LIBODB_BOOST_VERSION_MAJOR).0 +LIBODB_BOOST_SOURCE = libodb-boost-$(LIBODB_BOOST_VERSION).tar.bz2 +LIBODB_BOOST_SITE = https://www.codesynthesis.com/download/odb/$(LIBODB_BOOST_VERSION_MAJOR) +LIBODB_BOOST_INSTALL_STAGING = YES +LIBODB_BOOST_LICENSE = GPL-2.0 +LIBODB_BOOST_LICENSE_FILES = LICENSE +LIBODB_BOOST_DEPENDENCIES = boost libodb +HOST_LIBODB_BOOST_DEPENDENCIES = host-boost host-libodb +LIBODB_BOOST_CONF_ENV = CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11" +HOST_LIBODB_BOOST_CONF_ENV = CXXFLAGS="$(HOST_CXXFLAGS) -std=c++11" + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libodb-mysql/0001-fix-syntax-issue-while-checking-ldflags.patch b/package/libodb-mysql/0001-fix-syntax-issue-while-checking-ldflags.patch new file mode 100644 index 00000000..a4ef3cc1 --- /dev/null +++ b/package/libodb-mysql/0001-fix-syntax-issue-while-checking-ldflags.patch @@ -0,0 +1,35 @@ +From 3af12d8d0f749751e487955c24260049e7a8eec6 Mon Sep 17 00:00:00 2001 +From: Kamel Bouhara +Date: Wed, 13 May 2020 16:58:22 +0200 +Subject: [PATCH] fix syntax issue while checking ldflags + +Signed-off-by: Kamel Bouhara +--- + configure | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure b/configure +index def5883..2d783f6 100755 +--- a/configure ++++ b/configure +@@ -17574,7 +17574,7 @@ libmysqlclient_paths="none /usr/lib/mysql /usr/lib64/mysql" + + for path in $libmysqlclient_paths; do + +-if test x"path" != xnone; then ++if test x"$path" != xnone; then + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -L$path" + fi +@@ -17753,7 +17753,7 @@ if test x"$libmysqlclient_found" = xyes; then + break; + fi + +-if test x"path" != xnone; then ++if test x"$path" != xnone; then + LDFLAGS="$save_LDFLAGS" + fi + +-- +2.26.2 + diff --git a/package/libodb-mysql/0002-mariadb-FTBFS-fix.patch b/package/libodb-mysql/0002-mariadb-FTBFS-fix.patch new file mode 100644 index 00000000..01caaafd --- /dev/null +++ b/package/libodb-mysql/0002-mariadb-FTBFS-fix.patch @@ -0,0 +1,51 @@ +From 552474a477989d0d3514f126b8e314dccc27878c Mon Sep 17 00:00:00 2001 +From: Kamel Bouhara +Date: Wed, 1 Jul 2020 08:58:24 +0200 +Subject: [PATCH] mariadb FTBFS fix + +From: https://sources.debian.org/patches/libodb-mysql/2.4.0-4/mariadb_FTBFS_fix.patch/ + +Description: fix FTBFS with recent MariaDB versions +Don't include internal an header, only the main one. +Bug-Debian: https://bugs.debian.org/919374 +Forwarded: no +Author: Laszlo Boszormenyi (GCS) + +Signed-off-by: Kamel Bouhara +--- + odb/mysql/mysql-types.hxx | 4 ++-- + odb/mysql/version.hxx | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/odb/mysql/mysql-types.hxx b/odb/mysql/mysql-types.hxx +index 1254ccd..0e8f9a8 100644 +--- a/odb/mysql/mysql-types.hxx ++++ b/odb/mysql/mysql-types.hxx +@@ -11,9 +11,9 @@ typedef char my_bool; + typedef struct st_mysql_bind MYSQL_BIND; + + #ifdef LIBODB_MYSQL_INCLUDE_SHORT +-# include ++# include + #else +-# include ++# include + #endif + + #endif // ODB_MYSQL_MYSQL_TYPES_HXX +diff --git a/odb/mysql/version.hxx b/odb/mysql/version.hxx +index 05b4ba5..e711c2e 100644 +--- a/odb/mysql/version.hxx ++++ b/odb/mysql/version.hxx +@@ -12,7 +12,7 @@ + #ifdef LIBODB_MYSQL_INCLUDE_SHORT + # include + #else +-# include ++# include + #endif + + #include +-- +2.26.2 + diff --git a/package/libodb-mysql/Config.in b/package/libodb-mysql/Config.in new file mode 100644 index 00000000..5645ccbb --- /dev/null +++ b/package/libodb-mysql/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBODB_MYSQL + bool "libodb-mysql" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_MARIADB + select BR2_PACKAGE_LIBODB + help + This package contains the MySQL ODB runtime library. Every + application that includes code generated for the MySQL + database will need to link to this library. + + https://www.codesynthesis.com/products/odb/ + +comment "libodb-mysql needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_MARIADB diff --git a/package/libodb-mysql/libodb-mysql.hash b/package/libodb-mysql/libodb-mysql.hash new file mode 100644 index 00000000..c8204a3f --- /dev/null +++ b/package/libodb-mysql/libodb-mysql.hash @@ -0,0 +1,4 @@ +sha1 2021a67577354f1d6bed50c0b257c1920760eda7 libodb-mysql-2.4.0.tar.bz2 + +sha256 ce2fcdb6ab4a02fc0aff263a891c56949fa41b89e65d7a40d8b656d3ebf0d9bc libodb-mysql-2.4.0.tar.bz2 +sha256 841105a470fc283851c63941510ffd403c726d1910b688f7df95914ab8b1b5a3 LICENSE diff --git a/package/libodb-mysql/libodb-mysql.mk b/package/libodb-mysql/libodb-mysql.mk new file mode 100644 index 00000000..427224df --- /dev/null +++ b/package/libodb-mysql/libodb-mysql.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# libodb-mysql +# +################################################################################ + +LIBODB_MYSQL_VERSION_MAJOR = 2.4 +LIBODB_MYSQL_VERSION = $(LIBODB_MYSQL_VERSION_MAJOR).0 +LIBODB_MYSQL_SOURCE = libodb-mysql-$(LIBODB_MYSQL_VERSION).tar.bz2 +LIBODB_MYSQL_SITE = https://www.codesynthesis.com/download/odb/$(LIBODB_MYSQL_VERSION_MAJOR) +LIBODB_MYSQL_INSTALL_STAGING = YES +LIBODB_MYSQL_LICENSE = GPL-2.0 +LIBODB_MYSQL_LICENSE_FILES = LICENSE +LIBODB_MYSQL_DEPENDENCIES = libodb mariadb +LIBODB_MYSQL_CONF_ENV = \ + CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11" \ + LIBS=`$(STAGING_DIR)/usr/bin/mysql_config --libs` + +$(eval $(autotools-package)) diff --git a/package/libodb-pgsql/Config.in b/package/libodb-pgsql/Config.in new file mode 100644 index 00000000..2ff63d88 --- /dev/null +++ b/package/libodb-pgsql/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBODB_PGSQL + bool "libodb-pgsql" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_POSTGRESQL + select BR2_PACKAGE_LIBODB + help + This package contains the PostgreSQL ODB runtime library. + Every application that includes code generated for the + PostgreSQL database will need to link to this library. + + https://www.codesynthesis.com/products/odb/ + +comment "libodb-pgsql needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_POSTGRESQL diff --git a/package/libodb-pgsql/libodb-pgsql.hash b/package/libodb-pgsql/libodb-pgsql.hash new file mode 100644 index 00000000..609b3e90 --- /dev/null +++ b/package/libodb-pgsql/libodb-pgsql.hash @@ -0,0 +1,6 @@ +# From https://www.codesynthesis.com/download/odb/2.4/libodb-pgsql-2.4.0.tar.bz2.sha1 +sha1 4628d5e296da01dbaf8658fd402b4f709f30ea2d libodb-pgsql-2.4.0.tar.bz2 + +# Locally Computed +sha256 778a4d38bd1161e1f0b368815514c3335da20c7584e3d07613526dcce53523bc libodb-pgsql-2.4.0.tar.bz2 +sha256 841105a470fc283851c63941510ffd403c726d1910b688f7df95914ab8b1b5a3 LICENSE diff --git a/package/libodb-pgsql/libodb-pgsql.mk b/package/libodb-pgsql/libodb-pgsql.mk new file mode 100644 index 00000000..01411688 --- /dev/null +++ b/package/libodb-pgsql/libodb-pgsql.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libodb-pgsql +# +################################################################################ + +LIBODB_PGSQL_VERSION_MAJOR = 2.4 +LIBODB_PGSQL_VERSION = $(LIBODB_PGSQL_VERSION_MAJOR).0 +LIBODB_PGSQL_SOURCE = libodb-pgsql-$(LIBODB_PGSQL_VERSION).tar.bz2 +LIBODB_PGSQL_SITE = https://www.codesynthesis.com/download/odb/$(LIBODB_PGSQL_VERSION_MAJOR) +LIBODB_PGSQL_LICENSE = GPL-2.0 +LIBODB_PGSQL_LICENSE_FILES = LICENSE +LIBODB_PGSQL_INSTALL_STAGING = YES +LIBODB_PGSQL_DEPENDENCIES = postgresql libodb +LIBODB_PGSQL_CONF_ENV = CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11" + +$(eval $(autotools-package)) diff --git a/package/libodb/Config.in b/package/libodb/Config.in new file mode 100644 index 00000000..8312f473 --- /dev/null +++ b/package/libodb/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBODB + bool "libodb" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + help + This package contains the common ODB runtime library. Every + application that includes code generated by the ODB compiler + will need to link to this library. + + https://www.codesynthesis.com/products/odb/ + +comment "libodb needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libodb/libodb.hash b/package/libodb/libodb.hash new file mode 100644 index 00000000..7db7f969 --- /dev/null +++ b/package/libodb/libodb.hash @@ -0,0 +1,6 @@ +# From https://www.codesynthesis.com/projects/libcutl/ +sha1 42bd2a8023e338e004711e755eb30bd122b844a6 libodb-2.4.0.tar.bz2 + +# Locally Computed +sha256 66a1bb4e8bb6ef60cc79334f8028c4d4de98d87f2ff6f8123b4cfb7751ce0007 libodb-2.4.0.tar.bz2 +sha256 841105a470fc283851c63941510ffd403c726d1910b688f7df95914ab8b1b5a3 LICENSE diff --git a/package/libodb/libodb.mk b/package/libodb/libodb.mk new file mode 100644 index 00000000..b25e8ac5 --- /dev/null +++ b/package/libodb/libodb.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# libodb +# +################################################################################ + +LIBODB_VERSION_MAJOR = 2.4 +LIBODB_VERSION = $(LIBODB_VERSION_MAJOR).0 +LIBODB_SOURCE = libodb-$(LIBODB_VERSION).tar.bz2 +LIBODB_SITE = https://www.codesynthesis.com/download/odb/$(LIBODB_VERSION_MAJOR) +LIBODB_INSTALL_STAGING = YES +LIBODB_LICENSE = GPL-2.0 +LIBODB_LICENSE_FILES = LICENSE +LIBODB_CONF_ENV = CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11" +HOST_LIBODB_CONF_ENV = CXXFLAGS="$(HOST_CXXFLAGS) -std=c++11" + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libogg/Config.in b/package/libogg/Config.in new file mode 100644 index 00000000..48c62063 --- /dev/null +++ b/package/libogg/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBOGG + bool "libogg" + help + Ogg is a multimedia container format, and the native file + and stream format for the Xiph.org multimedia codecs. As + with all Xiph.org technology is it an open format free for + anyone to use. + + https://xiph.org/ogg/ diff --git a/package/libogg/libogg.hash b/package/libogg/libogg.hash new file mode 100644 index 00000000..9727c1cf --- /dev/null +++ b/package/libogg/libogg.hash @@ -0,0 +1,5 @@ +# From https://www.xiph.org/downloads/ +sha256 c4d91be36fc8e54deae7575241e03f4211eb102afb3fc0775fbbc1b740016705 libogg-1.3.5.tar.xz + +# Hash for license file: +sha256 d2ab5758336489da61c12cc5bb757da5339c4ae9001f9bb0562b4370249af814 COPYING diff --git a/package/libogg/libogg.mk b/package/libogg/libogg.mk new file mode 100644 index 00000000..49f9c7b6 --- /dev/null +++ b/package/libogg/libogg.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libogg +# +################################################################################ + +LIBOGG_VERSION = 1.3.5 +LIBOGG_SOURCE = libogg-$(LIBOGG_VERSION).tar.xz +LIBOGG_SITE = http://downloads.xiph.org/releases/ogg +LIBOGG_LICENSE = BSD-3-Clause +LIBOGG_LICENSE_FILES = COPYING + +LIBOGG_INSTALL_STAGING = YES +LIBOGG_DEPENDENCIES = host-pkgconf + +$(eval $(autotools-package)) diff --git a/package/libolm/Config.in b/package/libolm/Config.in new file mode 100644 index 00000000..a863216d --- /dev/null +++ b/package/libolm/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBOLM + bool "libolm" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + help + libolm is an implementation of the Double Ratchet + cryptographic ratchet in C++ + + https://gitlab.matrix.org/matrix-org/olm + +comment "libolm needs a toolchain w/ C++, gcc >= 4.8" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 diff --git a/package/libolm/libolm.hash b/package/libolm/libolm.hash new file mode 100644 index 00000000..a95115d2 --- /dev/null +++ b/package/libolm/libolm.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 1e90f9891009965fd064be747616da46b232086fe270b77605ec9bda34272a68 olm-3.2.16.tar.gz +sha256 0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594 LICENSE diff --git a/package/libolm/libolm.mk b/package/libolm/libolm.mk new file mode 100644 index 00000000..5c8bcd1f --- /dev/null +++ b/package/libolm/libolm.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# libolm +# +################################################################################ + +LIBOLM_VERSION = 3.2.16 +LIBOLM_SOURCE = olm-$(LIBOLM_VERSION).tar.gz +LIBOLM_SITE = https://gitlab.matrix.org/matrix-org/olm/-/archive/$(LIBOLM_VERSION) +LIBOLM_LICENSE = Apache-2.0 +LIBOLM_LICENSE_FILES = LICENSE +LIBOLM_CPE_ID_VENDOR = matrix +LIBOLM_CPE_ID_PRODUCT = olm +LIBOLM_INSTALL_STAGING = YES + +LIBOLM_CONF_OPTS = -DOLM_TESTS=OFF + +$(eval $(cmake-package)) diff --git a/package/libopenaptx/Config.in b/package/libopenaptx/Config.in new file mode 100644 index 00000000..46ff08a2 --- /dev/null +++ b/package/libopenaptx/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBOPENAPTX + bool "libopenaptx" + # unconditionallly builds a shared lib + depends on !BR2_STATIC_LIBS + help + This is Open Source implementation of Audio Processing + Technology codec (aptX) originally derived from ffmpeg 4.0 + project and licensed under GPLv3+. This codec is mainly used + in Bluetooth A2DP profile. + + https://github.com/pali/libopenaptx + +comment "libopenaptx needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/libopenaptx/libopenaptx.hash b/package/libopenaptx/libopenaptx.hash new file mode 100644 index 00000000..fca603d9 --- /dev/null +++ b/package/libopenaptx/libopenaptx.hash @@ -0,0 +1,3 @@ +# Locally calculated: +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING +sha256 a19b3b642def6f86441b73dd4efda6e6f13d49e7e2d6e5e91cc7eb464ebb505a libopenaptx-0.2.1.tar.gz diff --git a/package/libopenaptx/libopenaptx.mk b/package/libopenaptx/libopenaptx.mk new file mode 100644 index 00000000..c2f5fa23 --- /dev/null +++ b/package/libopenaptx/libopenaptx.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# libopenaptx +# +################################################################################ + +LIBOPENAPTX_VERSION = 0.2.1 +LIBOPENAPTX_SITE = $(call github,pali,libopenaptx,$(LIBOPENAPTX_VERSION)) +LIBOPENAPTX_LICENSE = GPL-3.0+ +LIBOPENAPTX_LICENSE_FILES = COPYING +LIBOPENAPTX_INSTALL_STAGING = YES + +define LIBOPENAPTX_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define LIBOPENAPTX_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \ + DESTDIR=$(TARGET_DIR) \ + PREFIX=/usr install +endef + +define LIBOPENAPTX_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \ + DESTDIR=$(STAGING_DIR) \ + PREFIX=/usr install +endef + +$(eval $(generic-package)) diff --git a/package/libopenh264/Config.in b/package/libopenh264/Config.in new file mode 100644 index 00000000..2b77578a --- /dev/null +++ b/package/libopenh264/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_LIBOPENH264_ARCH_SUPPORTS + bool + default y if BR2_arm || BR2_armeb || BR2_aarch64 || BR2_i386 || \ + BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el || \ + BR2_x86_64 + +config BR2_PACKAGE_LIBOPENH264 + bool "libopenh264" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_LIBOPENH264_ARCH_SUPPORTS + help + OpenH264 is a codec library which supports H.264 encoding and + decoding. + + http://www.openh264.org + +comment "libopenh264 needs a toolchain w/ C++, dynamic library, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS + depends on BR2_PACKAGE_LIBOPENH264_ARCH_SUPPORTS diff --git a/package/libopenh264/libopenh264.hash b/package/libopenh264/libopenh264.hash new file mode 100644 index 00000000..fe98b777 --- /dev/null +++ b/package/libopenh264/libopenh264.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a44d1ccc348a790f9a272bba2d1c2eb9a9bbd0302e4e9b655d709e1c32f92691 libopenh264-2.4.0.tar.gz +sha256 dd5c1c9668512530fa5a96e4c29ac4033d70a7eeb0eed7a42fddb6dd794ebdbb LICENSE diff --git a/package/libopenh264/libopenh264.mk b/package/libopenh264/libopenh264.mk new file mode 100644 index 00000000..478c29d7 --- /dev/null +++ b/package/libopenh264/libopenh264.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# libopenh264 +# +################################################################################ + +LIBOPENH264_VERSION = 2.4.0 +LIBOPENH264_SITE = $(call github,cisco,openh264,v$(LIBOPENH264_VERSION)) +LIBOPENH264_LICENSE = BSD-2-Clause +LIBOPENH264_LICENSE_FILES = LICENSE +LIBOPENH264_CPE_ID_VENDOR = cisco +LIBOPENH264_CPE_ID_PRODUCT = openh264 +LIBOPENH264_INSTALL_STAGING = YES + +ifeq ($(BR2_aarch64),y) +LIBOPENH264_ARCH = aarch64 +else ifeq ($(BR2_arm)$(BR2_armeb),y) +LIBOPENH264_ARCH = arm +else ifeq ($(BR2_i386),y) +LIBOPENH264_ARCH = x86 +LIBOPENH264_DEPENDENCIES += host-nasm +else ifeq ($(BR2_mips)$(BR2_mipsel),y) +LIBOPENH264_ARCH = mips +else ifeq ($(BR2_mips64)$(BR2_mips64el),y) +LIBOPENH264_ARCH = mips64 +else ifeq ($(BR2_x86_64),y) +LIBOPENH264_ARCH = x86_64 +LIBOPENH264_DEPENDENCIES += host-nasm +endif + +# ENABLE64BIT is really only used for x86-64, other 64 bits +# architecture don't need it. +LIBOPENH264_MAKE_OPTS = \ + ARCH=$(LIBOPENH264_ARCH) \ + ENABLE64BIT=$(if $(BR2_x86_64),Yes,No) \ + USE_STACK_PROTECTOR=No + +define LIBOPENH264_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(LIBOPENH264_MAKE_OPTS) +endef + +define LIBOPENH264_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(LIBOPENH264_MAKE_OPTS) \ + DESTDIR=$(STAGING_DIR) PREFIX=/usr install +endef + +define LIBOPENH264_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(LIBOPENH264_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) PREFIX=/usr install +endef + +$(eval $(generic-package)) diff --git a/package/libopenmpt/Config.in b/package/libopenmpt/Config.in new file mode 100644 index 00000000..43a58029 --- /dev/null +++ b/package/libopenmpt/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_LIBOPENMPT + bool "libopenmpt" + # See: https://lib.openmpt.org/doc/dependencies.html + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 + depends on BR2_TOOLCHAIN_HAS_THREADS + help + libopenmpt is a cross-platform C++ and C library to decode + tracked music files (modules) into a raw PCM audio stream. + + openmpt123 is a cross-platform command-line or terminal + based module file player. + + https://lib.openmpt.org/libopenmpt + +if BR2_PACKAGE_LIBOPENMPT + +config BR2_PACKAGE_LIBOPENMPT_OPENMPT123 + bool "openmpt123" + help + Install the openmpt123 command line tool. + +endif + +comment "libopenmpt needs a toolchain w/ threads, C++, gcc >= 7" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \ + !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libopenmpt/libopenmpt.hash b/package/libopenmpt/libopenmpt.hash new file mode 100644 index 00000000..cc551980 --- /dev/null +++ b/package/libopenmpt/libopenmpt.hash @@ -0,0 +1,3 @@ +# computed locally +sha256 0386e918d75d797e79d5b14edd0847165d8b359e9811ef57652c0a356a2dfcf4 libopenmpt-0.7.9+release.autotools.tar.gz +sha256 e3d7e76c6b441ddd9fff0a397e7b5e055a11678bd7c3b246a0ce13e352eb15e8 LICENSE diff --git a/package/libopenmpt/libopenmpt.mk b/package/libopenmpt/libopenmpt.mk new file mode 100644 index 00000000..aff67f69 --- /dev/null +++ b/package/libopenmpt/libopenmpt.mk @@ -0,0 +1,93 @@ +################################################################################ +# +# libopenmpt +# +################################################################################ + +LIBOPENMPT_VERSION = 0.7.9 +LIBOPENMPT_SITE = https://lib.openmpt.org/files/libopenmpt/src +LIBOPENMPT_SOURCE = libopenmpt-$(LIBOPENMPT_VERSION)+release.autotools.tar.gz +LIBOPENMPT_LICENSE = BSD-3-Clause +LIBOPENMPT_LICENSE_FILES = LICENSE +LIBOPENMPT_CPE_ID_VENDOR = openmpt +LIBOPENMPT_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_LIBOPENMPT_OPENMPT123),y) +LIBOPENMPT_CONF_OPTS += --enable-openmpt123 +else +LIBOPENMPT_CONF_OPTS += --disable-openmpt123 +endif + +ifeq ($(BR2_PACKAGE_FLAC),y) +LIBOPENMPT_CONF_OPTS += --with-flac +LIBOPENMPT_DEPENDENCIES += flac +else +LIBOPENMPT_CONF_OPTS += --without-flac +endif + +ifeq ($(BR2_PACKAGE_LIBOGG),y) +LIBOPENMPT_CONF_OPTS += --with-ogg +LIBOPENMPT_DEPENDENCIES += libogg +else +LIBOPENMPT_CONF_OPTS += --without-ogg +endif + +ifeq ($(BR2_PACKAGE_LIBSNDFILE),y) +LIBOPENMPT_CONF_OPTS += --with-sndfile +LIBOPENMPT_DEPENDENCIES += libsndfile +else +LIBOPENMPT_CONF_OPTS += --without-sndfile +endif + +ifeq ($(BR2_PACKAGE_LIBVORBIS),y) +LIBOPENMPT_CONF_OPTS += --with-vorbis --with-vorbisfile +LIBOPENMPT_DEPENDENCIES += libvorbis +else +LIBOPENMPT_CONF_OPTS += --without-vorbis --without-vorbisfile +endif + +ifeq ($(BR2_PACKAGE_MPG123),y) +LIBOPENMPT_CONF_OPTS += --with-mpg123 +LIBOPENMPT_DEPENDENCIES += mpg123 +else +LIBOPENMPT_CONF_OPTS += --without-mpg123 +endif + +ifeq ($(BR2_PACKAGE_PORTAUDIO),y) +LIBOPENMPT_CONF_OPTS += --with-portaudio +LIBOPENMPT_DEPENDENCIES += portaudio +else +LIBOPENMPT_CONF_OPTS += --without-portaudio +endif + +ifeq ($(BR2_PACKAGE_PORTAUDIO_CXX),y) +LIBOPENMPT_CONF_OPTS += --with-portaudiocpp +# No need to add portaudio dependency, because this config already +# depends on BR2_PACKAGE_PORTAUDIO. So the dependency has already been +# added in the previous block. +else +LIBOPENMPT_CONF_OPTS += --without-portaudiocpp +endif + +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +LIBOPENMPT_CONF_OPTS += --with-pulseaudio +LIBOPENMPT_DEPENDENCIES += pulseaudio +else +LIBOPENMPT_CONF_OPTS += --without-pulseaudio +endif + +ifeq ($(BR2_PACKAGE_SDL2),y) +LIBOPENMPT_CONF_OPTS += --with-sdl2 +LIBOPENMPT_DEPENDENCIES += sdl2 +else +LIBOPENMPT_CONF_OPTS += --without-sdl2 +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LIBOPENMPT_CONF_OPTS += --with-zlib +LIBOPENMPT_DEPENDENCIES += zlib +else +LIBOPENMPT_CONF_OPTS += --without-zlib +endif + +$(eval $(autotools-package)) diff --git a/package/libopenssl/0001-Reproducible-build-do-not-leak-compiler-path.patch b/package/libopenssl/0001-Reproducible-build-do-not-leak-compiler-path.patch new file mode 100644 index 00000000..9353c1ae --- /dev/null +++ b/package/libopenssl/0001-Reproducible-build-do-not-leak-compiler-path.patch @@ -0,0 +1,29 @@ +From b70be8c65365a8fc564226360d45adbbb29fc0af Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Tue, 24 Oct 2017 16:58:32 +0200 +Subject: [PATCH] Reproducible build: do not leak compiler path + +Signed-off-by: Peter Seiderer + +[Rebased on openssl-1.1.1.a] +Signed-off-by: Peter Seiderer +--- + crypto/build.info | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/crypto/build.info b/crypto/build.info +index 2c619c6..49ca6ab 100644 +--- a/crypto/build.info ++++ b/crypto/build.info +@@ -115,7 +115,7 @@ EXTRA= ../ms/uplink-x86.pl ../ms/uplink.c ../ms/applink.c \ + + DEPEND[info.o]=buildinf.h + DEPEND[cversion.o]=buildinf.h +-GENERATE[buildinf.h]=../util/mkbuildinf.pl "$(CC) $(LIB_CFLAGS) $(CPPFLAGS_Q)" "$(PLATFORM)" ++GENERATE[buildinf.h]=../util/mkbuildinf.pl "$$(basename $(CC)) $(LIB_CFLAGS) $(CPPFLAGS_Q)" "$(PLATFORM)" + + GENERATE[uplink-x86.S]=../ms/uplink-x86.pl + GENERATE[uplink-x86_64.s]=../ms/uplink-x86_64.pl +-- +2.20.1 + diff --git a/package/libopenssl/0002-Configure-use-ELFv2-ABI-on-some-ppc64-big-endian-sys.patch b/package/libopenssl/0002-Configure-use-ELFv2-ABI-on-some-ppc64-big-endian-sys.patch new file mode 100644 index 00000000..629d9c26 --- /dev/null +++ b/package/libopenssl/0002-Configure-use-ELFv2-ABI-on-some-ppc64-big-endian-sys.patch @@ -0,0 +1,37 @@ +From b57cc2e4ee21babacbffc243626de72c248068ea Mon Sep 17 00:00:00 2001 +From: Andy Polyakov +Date: Sun, 5 May 2019 18:30:55 +0200 +Subject: [PATCH] Configure: use ELFv2 ABI on some ppc64 big endian systems + +If _CALL_ELF is defined to be 2, it's an ELFv2 system. +Conditionally switch to the v2 perlasm scheme. + +Reviewed-by: Paul Dale +Reviewed-by: Richard Levitte +(Merged from https://github.com/openssl/openssl/pull/8883) +[vfazio: fixup for 1.1.1d] +Signed-off-by: Vincent Fazio +[rebased on openssl-1.1.1i] +Signed-off-by: Bernd Kuhls +--- + Configure | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Configure b/Configure +index 5a699836f3..f9152b1702 100755 +--- a/Configure ++++ b/Configure +@@ -1549,6 +1549,10 @@ unless ($disabled{asm}) { + } + } + ++if ($target eq "linux-ppc64" && !$disabled{asm}) { ++ $target{perlasm_scheme} = "linux64v2" if ($predefined_C{_CALL_ELF} == 2); ++} ++ + # Check for makedepend capabilities. + if (!$disabled{makedepend}) { + # If the attribute makedep_scheme is defined, then we assume that the +-- +2.25.0 + diff --git a/package/libopenssl/0003-Revert-Fix-static-builds.patch b/package/libopenssl/0003-Revert-Fix-static-builds.patch new file mode 100644 index 00000000..b4b78c97 --- /dev/null +++ b/package/libopenssl/0003-Revert-Fix-static-builds.patch @@ -0,0 +1,45 @@ +From a048522f64dbbe90cf77aea0c3f47cccdad50742 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Fri, 21 Jul 2023 19:30:40 +0200 +Subject: [PATCH] Revert "Fix -static builds" + +This reverts commit cfd7225fbb9507b2e443a494459bdaab5236d29d. + +Upstream: https://github.com/openssl/openssl/issues/14574#issuecomment-817209126 + +Signed-off-by: Bernd Kuhls +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + Configure | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/Configure b/Configure +index 2a5e58805c3b..0e8c1ce5cc74 100755 +--- a/Configure ++++ b/Configure +@@ -1466,10 +1466,6 @@ if ($config{prefix} && !$config{CROSS_COMPILE}) { + unless file_name_is_absolute($config{prefix}); + } + +-if (grep { $_ =~ /(?:^|\s)-static(?:\s|$)/ } @{$config{LDFLAGS}}) { +- disable('static', 'pic', 'threads'); +-} +- + # Allow overriding the build file name + $config{build_file} = env('BUILDFILE') || $target{build_file} || "Makefile"; + +@@ -1764,6 +1760,10 @@ if ($strict_warnings) + } + } + ++if (grep { $_ =~ /(?:^|\s)-static(?:\s|$)/ } @{$config{LDFLAGS}}) { ++ disable('static', 'pic', 'threads'); ++} ++ + $config{CFLAGS} = [ map { $_ eq '--ossl-strict-warnings' + ? @strict_warnings_collection + : ( $_ ) } +-- +2.43.0 + diff --git a/package/libopenssl/Config.in b/package/libopenssl/Config.in new file mode 100644 index 00000000..0c8db52e --- /dev/null +++ b/package/libopenssl/Config.in @@ -0,0 +1,136 @@ +if BR2_PACKAGE_LIBOPENSSL + +# 4xx PowerPC cores seem to have trouble with openssl's ASM +# optimizations +config BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH_LINUX_PPC + bool + default y if BR2_powerpc + depends on !BR2_powerpc_401 + depends on !BR2_powerpc_403 + depends on !BR2_powerpc_405 + depends on !BR2_powerpc_405fp + depends on !BR2_powerpc_440 + depends on !BR2_powerpc_440fp + +config BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH + string + # Doesn't work for thumb-only (Cortex-M?) + default "linux-armv4" if BR2_ARM_CPU_HAS_ARM + default "linux-aarch64" if BR2_aarch64 + default "linux-ppc" if BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH_LINUX_PPC + default "linux-ppc64" if BR2_powerpc64 + default "linux-ppc64le" if BR2_powerpc64le + default "linux-x86" if BR2_i386 && !BR2_TOOLCHAIN_HAS_LIBATOMIC + default "linux-x86-latomic" if BR2_i386 && BR2_TOOLCHAIN_HAS_LIBATOMIC + default "linux-x86_64" if BR2_x86_64 + default "linux64-riscv64" if BR2_riscv && BR2_ARCH_IS_64 + default "linux32-riscv32" if BR2_riscv && !BR2_ARCH_IS_64 + default "linux64-s390x" if BR2_s390x + # no-asm is needed with generic architectures such as + # linux-generic{32,64}, see + # https://github.com/openssl/openssl/issues/9839 + default "linux-generic64 no-asm" if BR2_ARCH_IS_64 && !BR2_MIPS_NABI32 + default "linux-latomic no-asm" if BR2_TOOLCHAIN_HAS_LIBATOMIC + default "linux-generic32 no-asm" + +config BR2_PACKAGE_LIBOPENSSL_BIN + bool "openssl binary" + help + Install the openssl binary and the associated helper scripts + to the target file system. This is a command line tool for + doing various cryptographic stuff. + +config BR2_PACKAGE_LIBOPENSSL_ENGINES + bool "openssl additional engines" + help + Install additional encryption engine libraries. + +config BR2_PACKAGE_LIBOPENSSL_ENABLE_CHACHA + bool "enable CHACHA" + default y + +config BR2_PACKAGE_LIBOPENSSL_ENABLE_RC2 + bool "enable RC2" + default y + +config BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 + bool "enable RC4" + default y + +config BR2_PACKAGE_LIBOPENSSL_ENABLE_MD2 + bool "enable MD2" + default y + +config BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4 + bool "enable MD4" + default y + +config BR2_PACKAGE_LIBOPENSSL_ENABLE_MDC2 + bool "enable MDC2" + default y + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES + +config BR2_PACKAGE_LIBOPENSSL_ENABLE_BLAKE2 + bool "enable BLAKE2" + default y + +config BR2_PACKAGE_LIBOPENSSL_ENABLE_IDEA + bool "enable IDEA" + default y + +config BR2_PACKAGE_LIBOPENSSL_ENABLE_SEED + bool "enable SEED" + default y + +config BR2_PACKAGE_LIBOPENSSL_ENABLE_DES + bool "enable DES" + default y + +config BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 + bool "enable RMD160" + default y + +config BR2_PACKAGE_LIBOPENSSL_ENABLE_WHIRLPOOL + bool "enable WHIRLPOOL" + default y + +config BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH + bool "enable BLOWFISH" + default y + +config BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL + bool "enable SSL" + default y + +config BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL3 + bool "enable SSL3" + default y + +config BR2_PACKAGE_LIBOPENSSL_ENABLE_WEAK_SSL + bool "enable WEAK_SSL" + default y + +config BR2_PACKAGE_LIBOPENSSL_ENABLE_PSK + bool "enable mode PSK" + default y + +config BR2_PACKAGE_LIBOPENSSL_ENABLE_CAST + bool "enable mode CAST" + default y + +config BR2_PACKAGE_LIBOPENSSL_UNSECURE + bool "enable unit test, debug, backtrace" + default y + help + Enable unit-test crypto-mdebug-backtrace + crypto-mdebug autoerrinit mode. + +config BR2_PACKAGE_LIBOPENSSL_DYNAMIC_ENGINE + bool "enable dynamic engine" + default y + +config BR2_PACKAGE_LIBOPENSSL_ENABLE_COMP + bool "enable compression" + default y + +endif # BR2_PACKAGE_LIBOPENSSL diff --git a/package/libopenssl/libopenssl.hash b/package/libopenssl/libopenssl.hash new file mode 100644 index 00000000..52fce1eb --- /dev/null +++ b/package/libopenssl/libopenssl.hash @@ -0,0 +1,5 @@ +# From https://github.com/openssl/openssl/releases/download/openssl-3.3.2/openssl-3.3.2.tar.gz.sha256 +sha256 2e8a40b01979afe8be0bbfb3de5dc1c6709fedb46d6c89c10da114ab5fc3d281 openssl-3.3.2.tar.gz + +# License files +sha256 7d5450cb2d142651b8afa315b5f238efc805dad827d91ba367d8516bc9d49e7a LICENSE.txt diff --git a/package/libopenssl/libopenssl.mk b/package/libopenssl/libopenssl.mk new file mode 100644 index 00000000..82b924c5 --- /dev/null +++ b/package/libopenssl/libopenssl.mk @@ -0,0 +1,169 @@ +################################################################################ +# +# libopenssl +# +################################################################################ + +LIBOPENSSL_VERSION = 3.3.2 +LIBOPENSSL_SITE = https://github.com/openssl/openssl/releases/download/openssl-$(LIBOPENSSL_VERSION) +LIBOPENSSL_SOURCE = openssl-$(LIBOPENSSL_VERSION).tar.gz +LIBOPENSSL_LICENSE = Apache-2.0 +LIBOPENSSL_LICENSE_FILES = LICENSE.txt +LIBOPENSSL_INSTALL_STAGING = YES +LIBOPENSSL_DEPENDENCIES = zlib +HOST_LIBOPENSSL_DEPENDENCIES = host-zlib +LIBOPENSSL_TARGET_ARCH = $(call qstrip,$(BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH)) +LIBOPENSSL_CFLAGS = $(TARGET_CFLAGS) +LIBOPENSSL_PROVIDES = openssl +LIBOPENSSL_CPE_ID_VENDOR = $(LIBOPENSSL_PROVIDES) +LIBOPENSSL_CPE_ID_PRODUCT = $(LIBOPENSSL_PROVIDES) + +ifeq ($(BR2_m68k_cf),y) +# relocation truncated to fit: R_68K_GOT16O +LIBOPENSSL_CFLAGS += -mxgot +# resolves an assembler "out of range error" with blake2 and sha512 algorithms +LIBOPENSSL_CFLAGS += -DOPENSSL_SMALL_FOOTPRINT +endif + +ifeq ($(BR2_USE_MMU),) +LIBOPENSSL_CFLAGS += -DHAVE_FORK=0 -DHAVE_MADVISE=0 +endif + +ifeq ($(BR2_PACKAGE_CRYPTODEV_LINUX),y) +LIBOPENSSL_DEPENDENCIES += cryptodev-linux +endif + +# fixes the following build failures: +# +# - musl +# ./libcrypto.so: undefined reference to `getcontext' +# ./libcrypto.so: undefined reference to `setcontext' +# ./libcrypto.so: undefined reference to `makecontext' +# +# - uclibc: +# crypto/async/arch/../arch/async_posix.h:32:5: error: unknown type name 'ucontext_t' +# + +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +LIBOPENSSL_CFLAGS += -DOPENSSL_NO_ASYNC +endif +ifeq ($(BR2_TOOLCHAIN_HAS_UCONTEXT),) +LIBOPENSSL_CFLAGS += -DOPENSSL_NO_ASYNC +endif + +define HOST_LIBOPENSSL_CONFIGURE_CMDS + cd $(@D); \ + $(HOST_CONFIGURE_OPTS) \ + ./config \ + --prefix=$(HOST_DIR) \ + --openssldir=$(HOST_DIR)/etc/ssl \ + no-docs \ + no-tests \ + no-fuzz-libfuzzer \ + no-fuzz-afl \ + shared \ + zlib-dynamic +endef + +define LIBOPENSSL_CONFIGURE_CMDS + cd $(@D); \ + $(TARGET_CONFIGURE_ARGS) \ + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(LIBOPENSSL_CFLAGS)" \ + ./Configure \ + $(LIBOPENSSL_TARGET_ARCH) \ + --prefix=/usr \ + --openssldir=/etc/ssl \ + $(if $(BR2_TOOLCHAIN_HAS_THREADS),threads,no-threads) \ + $(if $(BR2_STATIC_LIBS),no-shared,shared) \ + $(if $(BR2_PACKAGE_CRYPTODEV_LINUX),enable-devcryptoeng) \ + no-rc5 \ + enable-camellia \ + no-docs \ + no-tests \ + no-fuzz-libfuzzer \ + no-fuzz-afl \ + no-afalgeng \ + $(if $(BR2_PACKAGE_LIBOPENSSL_BIN),,no-apps) \ + $(if $(BR2_PACKAGE_LIBOPENSSL_ENGINES),,no-engine) \ + $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_CHACHA),,no-chacha) \ + $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_RC2),,no-rc2) \ + $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4),,no-rc4) \ + $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_MD2),,no-md2) \ + $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4),,no-md4) \ + $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_MDC2),,no-mdc2) \ + $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_BLAKE2),,no-blake2) \ + $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_IDEA),,no-idea) \ + $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_SEED),,no-seed) \ + $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_DES),,no-des) \ + $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160),,no-rmd160) \ + $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_WHIRLPOOL),,no-whirlpool) \ + $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH),,no-bf) \ + $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL),,no-ssl) \ + $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL3),,no-ssl3) \ + $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_WEAK_SSL),,no-weak-ssl-ciphers) \ + $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_PSK),,no-psk) \ + $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_CAST),,no-cast) \ + $(if $(BR2_PACKAGE_LIBOPENSSL_UNSECURE),,no-unit-test no-crypto-mdebug no-autoerrinit) \ + $(if $(BR2_PACKAGE_LIBOPENSSL_DYNAMIC_ENGINE),,no-dynamic-engine ) \ + $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_COMP),,no-comp) \ + $(if $(BR2_STATIC_LIBS),zlib,zlib-dynamic) \ + $(if $(BR2_STATIC_LIBS),no-dso) +endef + +# libdl is not available in a static build, and this is not implied by no-dso +ifeq ($(BR2_STATIC_LIBS),y) +define LIBOPENSSL_FIXUP_STATIC_MAKEFILE + $(SED) 's#-ldl##g' $(@D)/Makefile +endef +LIBOPENSSL_POST_CONFIGURE_HOOKS += LIBOPENSSL_FIXUP_STATIC_MAKEFILE +endif + +define HOST_LIBOPENSSL_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define LIBOPENSSL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define LIBOPENSSL_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +define HOST_LIBOPENSSL_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install +endef + +define LIBOPENSSL_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install + $(RM) -rf $(TARGET_DIR)/usr/lib/ssl + $(RM) -f $(TARGET_DIR)/usr/bin/c_rehash +endef + +# libdl has no business in a static build +ifeq ($(BR2_STATIC_LIBS),y) +define LIBOPENSSL_FIXUP_STATIC_PKGCONFIG + $(SED) 's#-ldl##' $(STAGING_DIR)/usr/lib/pkgconfig/libcrypto.pc + $(SED) 's#-ldl##' $(STAGING_DIR)/usr/lib/pkgconfig/libssl.pc + $(SED) 's#-ldl##' $(STAGING_DIR)/usr/lib/pkgconfig/openssl.pc +endef +LIBOPENSSL_POST_INSTALL_STAGING_HOOKS += LIBOPENSSL_FIXUP_STATIC_PKGCONFIG +endif + +ifeq ($(BR2_PACKAGE_PERL),) +define LIBOPENSSL_REMOVE_PERL_SCRIPTS + $(RM) -f $(TARGET_DIR)/etc/ssl/misc/{CA.pl,tsget} +endef +LIBOPENSSL_POST_INSTALL_TARGET_HOOKS += LIBOPENSSL_REMOVE_PERL_SCRIPTS +endif + +ifeq ($(BR2_PACKAGE_LIBOPENSSL_ENGINES),) +define LIBOPENSSL_REMOVE_LIBOPENSSL_ENGINES + $(RM) -rf $(TARGET_DIR)/usr/lib/engines-3 +endef +LIBOPENSSL_POST_INSTALL_TARGET_HOOKS += LIBOPENSSL_REMOVE_LIBOPENSSL_ENGINES +endif + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/liboping/0001-fix-utf8-support.patch b/package/liboping/0001-fix-utf8-support.patch new file mode 100644 index 00000000..0697ad5c --- /dev/null +++ b/package/liboping/0001-fix-utf8-support.patch @@ -0,0 +1,35 @@ +From dfbdd324769f542b6b89499c1b7f0f4322100bc6 Mon Sep 17 00:00:00 2001 +From: wfaulk +Date: Wed, 7 Aug 2019 18:57:43 -0400 +Subject: [PATCH] fix utf8 support + +in oping.c:923 in has_utf8() the #if HAVE_NCURSESW_NCURSES_H is +wrong. in consequence of this hist_symbols_utf8 is not used and the +the graph type prettyping is not realy pretty. the name of the header +file is curses.h see also oping.c:85 or the third changelog entry from +1997/05/31 + +https://github.com/octo/liboping/issues/36 + +[Upstream: https://github.com/octo/liboping/pull/49/commits/a313923ec12d11daa8e70497c6b7b5d50965821b] +Signed-off-by: Peter Seiderer +--- + src/oping.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/oping.c b/src/oping.c +index 87ca81a..62dbb67 100644 +--- a/src/oping.c ++++ b/src/oping.c +@@ -903,7 +903,7 @@ static void time_calc (struct timespec *ts_dest, /* {{{ */ + #if USE_NCURSES + static _Bool has_utf8() /* {{{ */ + { +-# if HAVE_NCURSESW_NCURSES_H ++# if HAVE_NCURSESW_CURSES_H + if (!opt_utf8) + { + /* Automatically determine */ +-- +2.25.1 + diff --git a/package/liboping/0002-Open-raw-sockets-when-adding-hosts-not-when-doing-th.patch b/package/liboping/0002-Open-raw-sockets-when-adding-hosts-not-when-doing-th.patch new file mode 100644 index 00000000..4f3eea62 --- /dev/null +++ b/package/liboping/0002-Open-raw-sockets-when-adding-hosts-not-when-doing-th.patch @@ -0,0 +1,91 @@ +From ac878566eb935fd3ebfb804e6bd9e1690d4a65e3 Mon Sep 17 00:00:00 2001 +From: Tollef Fog Heen +Date: Tue, 20 Mar 2018 22:40:32 +0100 +Subject: [PATCH] Open raw sockets when adding hosts, not when doing the + pinging + +This allows this to run as non-root again, without this, oping will +have dropped privileges before trying to ping, which then fails to +open the necessary raw sockets. + +Fixes: #34 + +[Upstream: https://github.com/octo/liboping/pull/35/commits/a88c51f38dafa1fba9118045176754bec05d3c94] +Signed-off-by: Peter Seiderer +--- + src/liboping.c | 48 +++++++++++++++++------------------------------- + 1 file changed, 17 insertions(+), 31 deletions(-) + +diff --git a/src/liboping.c b/src/liboping.c +index 39b0041..f98e810 100644 +--- a/src/liboping.c ++++ b/src/liboping.c +@@ -1344,41 +1344,10 @@ int ping_send (pingobj_t *obj) + struct timeval nowtime; + struct timeval timeout; + +- _Bool need_ipv4_socket = 0; +- _Bool need_ipv6_socket = 0; +- + for (ptr = obj->head; ptr != NULL; ptr = ptr->next) + { + ptr->latency = -1.0; + ptr->recv_ttl = -1; +- +- if (ptr->addrfamily == AF_INET) +- need_ipv4_socket = 1; +- else if (ptr->addrfamily == AF_INET6) +- need_ipv6_socket = 1; +- } +- +- if (!need_ipv4_socket && !need_ipv6_socket) +- { +- ping_set_error (obj, "ping_send", "No hosts to ping"); +- return (-1); +- } +- +- if (need_ipv4_socket && obj->fd4 == -1) +- { +- obj->fd4 = ping_open_socket(obj, AF_INET); +- if (obj->fd4 == -1) +- return (-1); +- ping_set_ttl (obj, obj->ttl); +- ping_set_qos (obj, obj->qos); +- } +- if (need_ipv6_socket && obj->fd6 == -1) +- { +- obj->fd6 = ping_open_socket(obj, AF_INET6); +- if (obj->fd6 == -1) +- return (-1); +- ping_set_ttl (obj, obj->ttl); +- ping_set_qos (obj, obj->qos); + } + + if (gettimeofday (&nowtime, NULL) == -1) +@@ -1698,6 +1667,23 @@ int ping_host_add (pingobj_t *obj, const char *host) + ph->table_next = obj->table[ph->ident % PING_TABLE_LEN]; + obj->table[ph->ident % PING_TABLE_LEN] = ph; + ++ if (ph->addrfamily == AF_INET && obj->fd4 == -1) ++ { ++ obj->fd4 = ping_open_socket(obj, AF_INET); ++ if (obj->fd4 == -1) ++ return (-1); ++ ping_set_ttl (obj, obj->ttl); ++ ping_set_qos (obj, obj->qos); ++ } ++ if (ph->addrfamily == AF_INET6 && obj->fd6 == -1) ++ { ++ obj->fd6 = ping_open_socket(obj, AF_INET6); ++ if (obj->fd6 == -1) ++ return (-1); ++ ping_set_ttl (obj, obj->ttl); ++ ping_set_qos (obj, obj->qos); ++ } ++ + return (0); + } /* int ping_host_add */ + +-- +2.25.1 + diff --git a/package/liboping/0003-Fix-compile-break-with-GCC-7-buffer-overflow-with-snprintf.patch b/package/liboping/0003-Fix-compile-break-with-GCC-7-buffer-overflow-with-snprintf.patch new file mode 100644 index 00000000..546f1591 --- /dev/null +++ b/package/liboping/0003-Fix-compile-break-with-GCC-7-buffer-overflow-with-snprintf.patch @@ -0,0 +1,28 @@ +From 0ad9ee080a7cd8037c341067cc67a84e32e69fea Mon Sep 17 00:00:00 2001 +From: Maurice Smulders +Date: Thu, 30 Dec 2021 10:45:42 -0700 +Subject: [PATCH] Fix compile break with GCC 7+ - buffer overflow with snprintf + +[Retrieved from: +https://github.com/octo/liboping/pull/64/commits/0ad9ee080a7cd8037c341067cc67a84e32e69fea] +Signed-off-by: Fabrice Fontaine +--- + src/liboping.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/liboping.c b/src/liboping.c +index bf9e059..9fd8f53 100644 +--- a/src/liboping.c ++++ b/src/liboping.c +@@ -203,8 +203,11 @@ static char *sstrerror (int errnum, char *buf, size_t buflen) + static void ping_set_error (pingobj_t *obj, const char *function, + const char *message) + { ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wformat-truncation" + snprintf (obj->errmsg, sizeof (obj->errmsg), + "%s: %s", function, message); ++#pragma GCC diagnostic pop + obj->errmsg[sizeof (obj->errmsg) - 1] = 0; + } + diff --git a/package/liboping/0004-Fix-compile-error-on-GCC-7.patch b/package/liboping/0004-Fix-compile-error-on-GCC-7.patch new file mode 100644 index 00000000..38355be4 --- /dev/null +++ b/package/liboping/0004-Fix-compile-error-on-GCC-7.patch @@ -0,0 +1,32 @@ +From 3d685bdb1a6c655bce6d36cfd96e084be07cd2b1 Mon Sep 17 00:00:00 2001 +From: Maurice Smulders +Date: Tue, 4 Jan 2022 12:49:36 -0700 +Subject: [PATCH] Fix compile error on GCC < 7 + +[Retrieved from: +https://github.com/octo/liboping/pull/64/commits/3d685bdb1a6c655bce6d36cfd96e084be07cd2b1] +Signed-off-by: Fabrice Fontaine +--- + src/liboping.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/liboping.c b/src/liboping.c +index 9fd8f53..1ccf609 100644 +--- a/src/liboping.c ++++ b/src/liboping.c +@@ -203,11 +203,15 @@ static char *sstrerror (int errnum, char *buf, size_t buflen) + static void ping_set_error (pingobj_t *obj, const char *function, + const char *message) + { ++#if __GNUC__ >= 7 + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wformat-truncation" ++#endif + snprintf (obj->errmsg, sizeof (obj->errmsg), + "%s: %s", function, message); ++#if __GNUC__ >= 7 + #pragma GCC diagnostic pop ++#endif + obj->errmsg[sizeof (obj->errmsg) - 1] = 0; + } + diff --git a/package/liboping/0005-src-oping.c-always-use-s-style-format-for-printf-sty.patch b/package/liboping/0005-src-oping.c-always-use-s-style-format-for-printf-sty.patch new file mode 100644 index 00000000..3b68feea --- /dev/null +++ b/package/liboping/0005-src-oping.c-always-use-s-style-format-for-printf-sty.patch @@ -0,0 +1,59 @@ +From 670834fd8fbd2533ea25ca83065800e924116579 Mon Sep 17 00:00:00 2001 +From: Sergei Trofimovich +Date: Mon, 15 Nov 2021 08:05:43 +0000 +Subject: [PATCH] src/oping.c: always use "%s"-style format for + printf()-style functions + +`ncuses-6.3` added printf-style function attributes and now makes +it easier to catch cases when user input is used in palce of format +string when built with CFLAGS=-Werror=format-security: + + oping.c:1265:41: error: format not a string literal and no format arguments [-Werror=format-security] + 1265 | hist_symbols_utf8[index]); + | ^~~~~~~~~~~~~~~~~ + +Let's wrap all the missing places with "%s" format. + +Downloaded from upstream PR https://github.com/octo/liboping/pull/61 + +Signed-off-by: Bernd Kuhls +[Bernd: rebased for liboping version 1.10.0] +--- + src/oping.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +diff --git a/src/oping.c b/src/oping.c +index c087c80..af4a0cb 100644 +--- a/src/oping.c ++++ b/src/oping.c +@@ -1156,7 +1156,7 @@ static int update_graph_prettyping (ping_context_t *ctx, /* {{{ */ + wattron (ctx->window, COLOR_PAIR(color)); + + if (has_utf8()) +- mvwprintw (ctx->window, /* y = */ 3, /* x = */ x + 2, symbol); ++ mvwprintw (ctx->window, /* y = */ 3, /* x = */ x + 2, "%s", symbol); + else + mvwaddch (ctx->window, /* y = */ 3, /* x = */ x + 2, symbolc); + +@@ -1262,7 +1262,7 @@ static int update_graph_histogram (ping_context_t *ctx) /* {{{ */ + mvwaddch (ctx->window, /* y = */ 3, /* x = */ x + 2, ' '); + else if (has_utf8 ()) + mvwprintw (ctx->window, /* y = */ 3, /* x = */ x + 2, +- hist_symbols_utf8[index]); ++ "%s", hist_symbols_utf8[index]); + else + mvwaddch (ctx->window, /* y = */ 3, /* x = */ x + 2, + hist_symbols_acs[index] | A_ALTCHARSET); +@@ -1639,8 +1639,7 @@ static void update_host_hook (pingobj_iter_t *iter, /* {{{ */ + + HOST_PRINTF ("%zu bytes from %s (%s): icmp_seq=%u ttl=%i ", + data_len, context->host, context->addr, +- sequence, recv_ttl, +- format_qos (recv_qos, recv_qos_str, sizeof (recv_qos_str))); ++ sequence, recv_ttl); + if ((recv_qos != 0) || (opt_send_qos != 0)) + { + HOST_PRINTF ("qos=%s ", +-- +2.34.1 + diff --git a/package/liboping/Config.in b/package/liboping/Config.in new file mode 100644 index 00000000..1d2de318 --- /dev/null +++ b/package/liboping/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBOPING + bool "liboping" + help + liboping is a C library to generate ICMP echo requests, + better known as "ping packets". + + http://noping.cc/ diff --git a/package/liboping/liboping.hash b/package/liboping/liboping.hash new file mode 100644 index 00000000..7042ed9c --- /dev/null +++ b/package/liboping/liboping.hash @@ -0,0 +1,5 @@ +# From http://noping.cc/#download +sha256 eb38aa93f93e8ab282d97e2582fbaea88b3f889a08cbc9dbf20059c3779d5cd8 liboping-1.10.0.tar.bz2 + +# Hash for license file: +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/liboping/liboping.mk b/package/liboping/liboping.mk new file mode 100644 index 00000000..a4541cb3 --- /dev/null +++ b/package/liboping/liboping.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# liboping +# +################################################################################ + +LIBOPING_VERSION = 1.10.0 +LIBOPING_SITE = http://noping.cc/files +LIBOPING_SOURCE = liboping-$(LIBOPING_VERSION).tar.bz2 +LIBOPING_INSTALL_STAGING = YES +LIBOPING_CONF_OPTS = --without-perl-bindings +LIBOPING_LICENSE = LGPL-2.1+, GPL-2.0 +LIBOPING_LICENSE_FILES = COPYING +LIBOPING_CPE_ID_VENDOR = noping + +ifeq ($(BR2_PACKAGE_NCURSES),y) +LIBOPING_DEPENDENCIES += ncurses +LIBOPING_CONF_OPTS += --with-ncurses +else +LIBOPING_CONF_OPTS += --without-ncurses +endif + +$(eval $(autotools-package)) diff --git a/package/libopusenc/Config.in b/package/libopusenc/Config.in new file mode 100644 index 00000000..4b29f9b8 --- /dev/null +++ b/package/libopusenc/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBOPUSENC + bool "libopusenc" + select BR2_PACKAGE_OPUS + help + The libopusenc library provides a high-level API for + encoding opus audio files and live streams. + + http://opus-codec.org diff --git a/package/libopusenc/libopusenc.hash b/package/libopusenc/libopusenc.hash new file mode 100644 index 00000000..bdb4cf8f --- /dev/null +++ b/package/libopusenc/libopusenc.hash @@ -0,0 +1,3 @@ +# From http://downloads.xiph.org/releases/opus/SHA256SUMS.txt +sha256 8298db61a8d3d63e41c1a80705baa8ce9ff3f50452ea7ec1c19a564fe106cbb9 libopusenc-0.2.1.tar.gz +sha256 93b17ab56b8230127fea532be0dcb4e6d71e66ab5e8ce5d6ae8785d7288b164f COPYING diff --git a/package/libopusenc/libopusenc.mk b/package/libopusenc/libopusenc.mk new file mode 100644 index 00000000..3b4dc0e7 --- /dev/null +++ b/package/libopusenc/libopusenc.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libopusenc +# +################################################################################ + +LIBOPUSENC_VERSION = 0.2.1 +LIBOPUSENC_SITE = https://downloads.xiph.org/releases/opus +LIBOPUSENC_LICENSE = BSD-3-Clause +LIBOPUSENC_LICENSE_FILES = COPYING +LIBOPUSENC_INSTALL_STAGING = YES +LIBOPUSENC_DEPENDENCIES = host-pkgconf opus + +LIBOPUSENC_CONF_OPTS = --disable-examples + +$(eval $(autotools-package)) diff --git a/package/libosip2/Config.in b/package/libosip2/Config.in new file mode 100644 index 00000000..5b1d3d26 --- /dev/null +++ b/package/libosip2/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBOSIP2 + bool "libosip2" + help + GNU SIP (Session Initiation Protocol) + This library aims to provide multimedia and telecom software + developers an easy and powerful interface to initiate and + control SIP based sessions in their applications. + SIP is a open standard replacement from IETF for H323. + + http://www.gnu.org/software/osip/ diff --git a/package/libosip2/libosip2.hash b/package/libosip2/libosip2.hash new file mode 100644 index 00000000..a563f0c4 --- /dev/null +++ b/package/libosip2/libosip2.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +sha256 fe82fe841608266ac15a5c1118216da00c554d5006e2875a8ac3752b1e6adc79 libosip2-5.3.1.tar.gz + +# Hash for license file: +sha256 8d9e95ed0e48df46dc758eb0d86df611f771eab4eed94bebb77dca87f1c897de COPYING diff --git a/package/libosip2/libosip2.mk b/package/libosip2/libosip2.mk new file mode 100644 index 00000000..618d98a8 --- /dev/null +++ b/package/libosip2/libosip2.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# libosip2 +# +################################################################################ + +LIBOSIP2_VERSION = 5.3.1 +LIBOSIP2_SITE = $(BR2_GNU_MIRROR)/osip +LIBOSIP2_INSTALL_STAGING = YES +LIBOSIP2_LICENSE = LGPL-2.1+ +LIBOSIP2_LICENSE_FILES = COPYING +LIBOSIP2_CPE_ID_VENDOR = gnu +LIBOSIP2_CPE_ID_PRODUCT = osip + +ifeq ($(BR2_arc),y) +# toolchain __arc__ define conflicts with libosip2 source +LIBOSIP2_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -U__arc__" +endif + +LIBOSIP2_CONF_OPTS = \ + --enable-mt=$(if $(BR2_TOOLCHAIN_HAS_THREADS),yes,no) + +$(eval $(autotools-package)) diff --git a/package/libosmium/Config.in b/package/libosmium/Config.in new file mode 100644 index 00000000..825e2b7e --- /dev/null +++ b/package/libosmium/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LIBOSMIUM + bool "libosmium" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS # boost + depends on BR2_USE_WCHAR # boost + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_PROTOZERO + select BR2_PACKAGE_LZ4 + help + A fast and flexible C++ library for working with OpenStreetMap + data. Libosmium works on Linux, macOS and Windows. + + https://osmcode.org/libosmium/ + +comment "libosmium needs a toolchain w/ C++, wchar, threads, gcc >= 4.7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libosmium/libosmium.hash b/package/libosmium/libosmium.hash new file mode 100644 index 00000000..37bcdd26 --- /dev/null +++ b/package/libosmium/libosmium.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3d3e0873c6aaabb3b2ef4283896bebf233334891a7a49f4712af30ca6ed72477 libosmium-2.20.0.tar.gz +sha256 c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566 LICENSE diff --git a/package/libosmium/libosmium.mk b/package/libosmium/libosmium.mk new file mode 100644 index 00000000..c39e7d01 --- /dev/null +++ b/package/libosmium/libosmium.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# libosmium +# +################################################################################ + +LIBOSMIUM_VERSION = 2.20.0 +LIBOSMIUM_SITE = $(call github,osmcode,libosmium,v$(LIBOSMIUM_VERSION)) +LIBOSMIUM_LICENSE = BSL-1.0 +LIBOSMIUM_LICENSE_FILES = LICENSE +LIBOSMIUM_INSTALL_STAGING = YES +LIBOSMIUM_DEPENDENCIES = boost protozero lz4 + +ifeq ($(BR2_PACKAGE_BZIP2),y) +LIBOSMIUM_DEPENDENCIES += bzip2 +endif + +ifeq ($(BR2_PACKAGE_EXPAT),y) +LIBOSMIUM_DEPENDENCIES += expat +endif + +ifeq ($(BR2_PACKAGE_LIBGEOS),y) +LIBOSMIUM_DEPENDENCIES += libgeos +endif + +ifeq ($(BR2_PACKAGE_PROJ),y) +LIBOSMIUM_DEPENDENCIES += proj +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LIBOSMIUM_DEPENDENCIES += zlib +endif + +ifeq ($(BR2_PACKAGE_GDAL),y) +LIBOSMIUM_DEPENDENCIES += gdal +endif + +$(eval $(cmake-package)) diff --git a/package/libostree/Config.in b/package/libostree/Config.in new file mode 100644 index 00000000..49eed651 --- /dev/null +++ b/package/libostree/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_LIBOSTREE + bool "libostree" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpgme, libgpg-error + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_USE_MMU # e2fsprogs, libglib2, libgpgme + # doesn't build with musl due to lack of TEMP_FAILURE_RETRY() + depends on !BR2_TOOLCHAIN_USES_MUSL + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8 # loop_config + select BR2_PACKAGE_E2FSPROGS + select BR2_PACKAGE_LIBARCHIVE if BR2_s390x + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBGPG_ERROR + select BR2_PACKAGE_LIBGPGME + select BR2_PACKAGE_XZ + help + OSTree is an upgrade system for Linux-based operating + systems. + + https://ostree.readthedocs.io/en/latest/ + +comment "libostree needs a uClibc or glibc toolchain w/ threads, dynamic library, wchar, headers >= 5.8" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \ + || !BR2_USE_WCHAR || BR2_TOOLCHAIN_USES_MUSL || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8 + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS + depends on BR2_USE_MMU diff --git a/package/libostree/libostree.hash b/package/libostree/libostree.hash new file mode 100644 index 00000000..d4645c59 --- /dev/null +++ b/package/libostree/libostree.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b6fffc267188e40d60755e6d7f2be65831795baa53b0fd9dd6c6809c7e54796d libostree-2023.8.tar.xz +sha256 b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c COPYING diff --git a/package/libostree/libostree.mk b/package/libostree/libostree.mk new file mode 100644 index 00000000..a737dc04 --- /dev/null +++ b/package/libostree/libostree.mk @@ -0,0 +1,92 @@ +################################################################################ +# +# libostree +# +################################################################################ + +LIBOSTREE_VERSION = 2023.8 +LIBOSTREE_SOURCE = libostree-$(LIBOSTREE_VERSION).tar.xz +LIBOSTREE_SITE = https://github.com/ostreedev/ostree/releases/download/v$(LIBOSTREE_VERSION) + +LIBOSTREE_LICENSE = LGPL-2.0+ +LIBOSTREE_LICENSE_FILES = COPYING +LIBOSTREE_DEPENDENCIES = e2fsprogs host-bison host-pkgconf libglib2 libgpg-error libgpgme xz +LIBOSTREE_INSTALL_STAGING = YES + +LIBOSTREE_CONF_ENV = \ + GPG_ERROR_CONFIG=$(STAGING_DIR)/usr/bin/gpg-error-config +LIBOSTREE_CONF_OPTS += \ + --with-gpgme-prefix=$(STAGING_DIR)/usr \ + --without-soup \ + --disable-gtk-doc \ + --disable-gtk-doc-html \ + --disable-gtk-doc-pdf \ + --disable-man + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +LIBOSTREE_DEPENDENCIES += gobject-introspection +LIBOSTREE_CONF_OPTS += --enable-introspection +LIBOSTREE_MAKE_OPTS = INTROSPECTION_SCANNER_ENV= +else +LIBOSTREE_CONF_OPTS += --disable-introspection +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBOSTREE_CONF_OPTS += --with-openssl +LIBOSTREE_DEPENDENCIES += openssl +else +LIBOSTREE_CONF_OPTS += --without-openssl +endif + +ifeq ($(BR2_PACKAGE_AVAHI_LIBAVAHI_CLIENT),y) +LIBOSTREE_CONF_OPTS += --with-avahi +LIBOSTREE_DEPENDENCIES += avahi +else +LIBOSTREE_CONF_OPTS += --without-avahi +endif + +# cURL support depends on libsoup3 +ifeq ($(BR2_PACKAGE_LIBSOUP3),y) +LIBOSTREE_CONF_OPTS += --with-soup3 +LIBOSTREE_DEPENDENCIES += libsoup3 +ifeq ($(BR2_PACKAGE_LIBCURL),y) +LIBOSTREE_CONF_OPTS += --with-curl +LIBOSTREE_DEPENDENCIES += libcurl +else +LIBOSTREE_CONF_OPTS += --without-curl +endif +else +LIBOSTREE_CONF_OPTS += --without-soup3 --without-curl +endif + +ifeq ($(BR2_PACKAGE_LIBARCHIVE),y) +LIBOSTREE_CONF_OPTS += --with-libarchive +LIBOSTREE_DEPENDENCIES += libarchive +else +LIBOSTREE_CONF_OPTS += --without-libarchive +endif + +ifeq ($(BR2_PACKAGE_LIBFUSE),y) +LIBOSTREE_CONF_OPTS += --enable-rofiles-fuse +LIBOSTREE_DEPENDENCIES += libfuse +else +LIBOSTREE_CONF_OPTS += --disable-rofiles-fuse +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +LIBOSTREE_CONF_OPTS += --with-selinux +LIBOSTREE_DEPENDENCIES += libselinux +else +LIBOSTREE_CONF_OPTS += --without-selinux +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +LIBOSTREE_CONF_OPTS += \ + --with-libsystemd \ + --with-systemdsystemunitdir=/usr/lib/systemd/system +LIBOSTREE_DEPENDENCIES += systemd +else +LIBOSTREE_CONF_OPTS += --without-libsystemd +endif + +$(eval $(autotools-package)) diff --git a/package/libp11/0001-src-p11_attr.c-fix-build-with-gcc-4.8.patch b/package/libp11/0001-src-p11_attr.c-fix-build-with-gcc-4.8.patch new file mode 100644 index 00000000..60fc16d9 --- /dev/null +++ b/package/libp11/0001-src-p11_attr.c-fix-build-with-gcc-4.8.patch @@ -0,0 +1,42 @@ +From ba44b87318ed89e489fa3ce0a5d66002afa2bd6c Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 12 Aug 2022 11:54:54 +0200 +Subject: [PATCH] src/p11_attr.c: fix build with gcc 4.8 + +Fix the following build failure with gcc 4.8 raised since version 0.4.12 +and +https://github.com/OpenSC/libp11/commit/639a4b6463278c0119a2ec60b261da3e5330fb33: + +p11_attr.c: In function 'pkcs11_zap_attrs': +p11_attr.c:167:2: error: 'for' loop initial declarations are only allowed in C99 mode + for (unsigned i = 0; i < 32; i++) { + ^ +p11_attr.c:167:2: note: use option -std=c99 or -std=gnu99 to compile your code + +Fixes: + - http://autobuild.buildroot.org/results/4391020fb5738cc8c26dc53783a6228bbf76473a + +Signed-off-by: Fabrice Fontaine +[Retrieved from: +https://github.com/OpenSC/libp11/commit/ba44b87318ed89e489fa3ce0a5d66002afa2bd6c] +--- + src/p11_attr.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/p11_attr.c b/src/p11_attr.c +index d49456ff..d425241a 100644 +--- a/src/p11_attr.c ++++ b/src/p11_attr.c +@@ -162,9 +162,11 @@ void pkcs11_addattr_obj(PKCS11_TEMPLATE *tmpl, int type, pkcs11_i2d_fn enc, void + + void pkcs11_zap_attrs(PKCS11_TEMPLATE *tmpl) + { ++ unsigned int i; ++ + if (!tmpl->allocated) + return; +- for (unsigned i = 0; i < 32; i++) { ++ for (i = 0; i < 32; i++) { + if (tmpl->allocated & (1<attrs[i].pValue); + } diff --git a/package/libp11/Config.in b/package/libp11/Config.in new file mode 100644 index 00000000..3bf13a60 --- /dev/null +++ b/package/libp11/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBP11 + bool "libp11" + depends on !BR2_STATIC_LIBS # dlopen + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBOPENSSL_ENGINES + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + help + OpenSSL engine for PKCS#11 modules. Part of the OpenSC + project. + + https://github.com/OpenSC/OpenSC/wiki + +comment "libp11 needs a toolchain w/ dynamic library, threads" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libp11/Config.in.host b/package/libp11/Config.in.host new file mode 100644 index 00000000..8da081f8 --- /dev/null +++ b/package/libp11/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_LIBP11 + bool "host libp11" + help + OpenSSL engine for PKCS#11 modules. Part of the OpenSC + project. + + https://github.com/OpenSC/OpenSC/wiki diff --git a/package/libp11/libp11.hash b/package/libp11/libp11.hash new file mode 100644 index 00000000..0e42bdd4 --- /dev/null +++ b/package/libp11/libp11.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 1e1a2533b3fcc45fde4da64c9c00261b1047f14c3f911377ebd1b147b3321cfd libp11-0.4.12.tar.gz +sha256 d80c9d084ebfb50ea1ed91bfbc2410d6ce542097a32c43b00781b83adcb8c77f COPYING diff --git a/package/libp11/libp11.mk b/package/libp11/libp11.mk new file mode 100644 index 00000000..cd4ed342 --- /dev/null +++ b/package/libp11/libp11.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# libp11 +# +################################################################################ + +LIBP11_VERSION = 0.4.12 +LIBP11_SITE = https://github.com/OpenSC/libp11/releases/download/libp11-$(LIBP11_VERSION) +LIBP11_DEPENDENCIES = openssl host-pkgconf +LIBP11_INSTALL_STAGING = YES +LIBP11_LICENSE = LGPL-2.1+ +LIBP11_LICENSE_FILES = COPYING + +# pkg-config returns a libcrypto enginesdir prefixed with the sysroot, +# so let's rip it out. +LIBP11_CONF_OPTS = \ + --with-enginesdir=`$(PKG_CONFIG_HOST_BINARY) --variable enginesdir libcrypto | xargs readlink -f | sed 's%^$(STAGING_DIR)%%'` + +ifeq ($(BR2_PACKAGE_P11_KIT),y) +LIBP11_CONF_OPTS += --with-pkcs11-module=/usr/lib/p11-kit-proxy.so +endif + +HOST_LIBP11_DEPENDENCIES = host-pkgconf host-openssl + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libpagekite/Config.in b/package/libpagekite/Config.in new file mode 100644 index 00000000..0ecf4f97 --- /dev/null +++ b/package/libpagekite/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_LIBPAGEKITE + bool "libpagekite" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBEV + select BR2_PACKAGE_OPENSSL + help + PageKite is a protocol for dynamic, tunneled reverse proxying + of arbitrary TCP byte streams. It is particularly well suited + for making a HTTP server on a device without a public IP + address visible to the wider Internet, but can also be used + for a variety of other things, including SSH access. + + libpagekite is a tight, fast implementation of the PageKite + protocol in C, suitable for high-performance or embedded + applications. + + In addition to the libpagekite library, this package installs + the pagekitec, sshkite and httpkite tools. + + https://pagekite.net + https://github.com/pagekite/libpagekite + +comment "libpagekite needs a toolchain with threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libpagekite/libpagekite.hash b/package/libpagekite/libpagekite.hash new file mode 100644 index 00000000..2c2e5c9b --- /dev/null +++ b/package/libpagekite/libpagekite.hash @@ -0,0 +1,7 @@ +# Locally calculated +sha256 db835d49becebc00d462f2f47aefc1f1d3a4e0e096487cb3b4248134185df715 libpagekite-0.91.201110.tar.gz + +# License files, locally calculated +sha256 ba443b9c9d4273d06aae3e147e9ad1ec199cc9c23455f486a039536d47f57eed doc/COPYING.md +sha256 4a271d0bb6bb6e0bac880efddb46da73e6df3dcf0d9ca08a945a232f8ab882ef doc/LICENSE-2.0.txt +sha256 8e0f770cabe772d67d36469f6bf413afd2dcfa6ac37acfc65f770cf3a134106d doc/AGPLv3.txt diff --git a/package/libpagekite/libpagekite.mk b/package/libpagekite/libpagekite.mk new file mode 100644 index 00000000..bb235ba1 --- /dev/null +++ b/package/libpagekite/libpagekite.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# libpagekite +# +################################################################################ + +LIBPAGEKITE_VERSION = 0.91.201110 +LIBPAGEKITE_SITE = $(call github,pagekite,libpagekite,v$(LIBPAGEKITE_VERSION)) + +# pkrelay is AGPL-3.0+ but is not built +LIBPAGEKITE_LICENSE = Apache-2.0 or AGPL-3.0+ +LIBPAGEKITE_LICENSE_FILES = doc/COPYING.md doc/LICENSE-2.0.txt doc/AGPLv3.txt + +LIBPAGEKITE_DEPENDENCIES = host-pkgconf libev openssl +LIBPAGEKITE_INSTALL_STAGING = YES + +# Sources from git, no configure included +LIBPAGEKITE_AUTORECONF = YES + +LIBPAGEKITE_CONF_OPTS = \ + --with-openssl \ + --without-tests \ + --with-os-libev \ + --without-java \ + --without-agpl-relay \ + --without-ds-logfmt + +$(eval $(autotools-package)) diff --git a/package/libpam-nfc/Config.in b/package/libpam-nfc/Config.in new file mode 100644 index 00000000..ce3a3eeb --- /dev/null +++ b/package/libpam-nfc/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBPAM_NFC + bool "libpam-nfc" + select BR2_PACKAGE_LIBNFC + help + NFC-based PAM authentification module. + + https://github.com/nfc-tools/pam_nfc diff --git a/package/libpam-nfc/libpam-nfc.hash b/package/libpam-nfc/libpam-nfc.hash new file mode 100644 index 00000000..543db869 --- /dev/null +++ b/package/libpam-nfc/libpam-nfc.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 042049cecaacd9274f444d69f756b9499eb2d2436136f576eef375531ac25157 libpam-nfc-64a8b30ba2cfd634342ded8c096c7cfc5c8fa22a.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/libpam-nfc/libpam-nfc.mk b/package/libpam-nfc/libpam-nfc.mk new file mode 100644 index 00000000..7cf0a51e --- /dev/null +++ b/package/libpam-nfc/libpam-nfc.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# libpam-nfc +# +################################################################################ + +LIBPAM_NFC_VERSION = 64a8b30ba2cfd634342ded8c096c7cfc5c8fa22a +LIBPAM_NFC_SITE = $(call github,nfc-tools,pam_nfc,$(LIBPAM_NFC_VERSION)) +LIBPAM_NFC_LICENSE = GPL-2.0 +LIBPAM_NFC_LICENSE_FILES = COPYING +LIBPAM_NFC_DEPENDENCIES = linux-pam libnfc +# Fetching from github, we need to generate the configure script +LIBPAM_NFC_AUTORECONF = YES +LIBPAM_NFC_INSTALL_STAGING = YES + +LIBPAM_NFC_CONF_OPTS = \ + --with-pam-dir=/lib/security + +# libpam breaks with parallel build, but is very fast to build. +LIBPAM_NFC_MAKE = $(MAKE1) + +$(eval $(autotools-package)) diff --git a/package/libpam-radius-auth/Config.in b/package/libpam-radius-auth/Config.in new file mode 100644 index 00000000..a0dec148 --- /dev/null +++ b/package/libpam-radius-auth/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBPAM_RADIUS_AUTH + bool "libpam-radius-auth" + help + This is the PAM to RADIUS authentication module. It allows + any PAM-capable machine to become a RADIUS client for + authentication and accounting requests. You will need a + RADIUS server to perform the actual authentication. + + http://freeradius.org/pam_radius_auth/ diff --git a/package/libpam-radius-auth/libpam-radius-auth.hash b/package/libpam-radius-auth/libpam-radius-auth.hash new file mode 100644 index 00000000..63f3f1e4 --- /dev/null +++ b/package/libpam-radius-auth/libpam-radius-auth.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking PGP signature +sha256 798dc358e7a143163e103bd38c4101645b2e93d82aa0ec63d32c0cb929d9c65c libpam-radius-auth-2.0.0.tar.gz + +# Hash for license file: +sha256 67f82e045cf7acfef853ea0f426575a8359161a0a325e19f02b529a87c4b6c34 LICENSE diff --git a/package/libpam-radius-auth/libpam-radius-auth.mk b/package/libpam-radius-auth/libpam-radius-auth.mk new file mode 100644 index 00000000..9519aad7 --- /dev/null +++ b/package/libpam-radius-auth/libpam-radius-auth.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# libpam-radius-auth +# +################################################################################ + +LIBPAM_RADIUS_AUTH_VERSION = 2.0.0 +LIBPAM_RADIUS_AUTH_SITE = $(call github,FreeRADIUS,pam_radius,release_$(subst .,_,$(LIBPAM_RADIUS_AUTH_VERSION))) +LIBPAM_RADIUS_AUTH_DEPENDENCIES = linux-pam +LIBPAM_RADIUS_AUTH_INSTALL_STAGING = YES +LIBPAM_RADIUS_AUTH_LICENSE = GPL-2.0+ +LIBPAM_RADIUS_AUTH_LICENSE_FILES = LICENSE +# While autoconf is used for configuration, the Makefile is +# hand-written, so we need to pass CC, LD, CFLAGS at build time. +LIBPAM_RADIUS_AUTH_MAKE_ENV = $(TARGET_CONFIGURE_OPTS) + +define LIBPAM_RADIUS_AUTH_INSTALL_STAGING_CMDS + mkdir -p $(STAGING_DIR)/lib/security/ + cp -dpfr $(@D)/pam_radius_auth.so* $(STAGING_DIR)/lib/security/ +endef + +define LIBPAM_RADIUS_AUTH_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/lib/security/ + cp -dpfr $(@D)/pam_radius_auth.so* $(TARGET_DIR)/lib/security/ +endef + +$(eval $(autotools-package)) diff --git a/package/libpam-tacplus/0001-Remove-conflicting-man-flag.patch b/package/libpam-tacplus/0001-Remove-conflicting-man-flag.patch new file mode 100644 index 00000000..a832366c --- /dev/null +++ b/package/libpam-tacplus/0001-Remove-conflicting-man-flag.patch @@ -0,0 +1,23 @@ +From 104044848ffb0a283e1f1bf3466693fa4af450e9 Mon Sep 17 00:00:00 2001 +From: Pawel Krawczyk +Date: Mon, 7 Nov 2022 22:10:52 +0000 +Subject: [PATCH] Remove conflicting man flag + +Upstream: https://github.com/kravietz/pam_tacplus/commit/104044848ffb0a283e1f1bf3466693fa4af450e9 +Signed-off-by: Fabrice Fontaine +--- + Makefile.am | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index a481d7a..ef2b92b 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -15,7 +15,6 @@ bin_PROGRAMS = tacc + tacc_SOURCES = tacc.c + tacc_LDADD = libtac.la $(LTLIBINTL) $(LIB_CRYPTO) $(LIB_GETRANDOM) + tacc_CFLAGS = $(AM_CFLAGS) -I $(top_srcdir)/libtac/include @rt_debug_defines@ -I $(top_srcdir)/lib +-dist_man_MANS = tacc.1 + man1_MANS = tacc.1 + + lib_LTLIBRARIES = libtac.la diff --git a/package/libpam-tacplus/0002-fix-disable-werror.patch b/package/libpam-tacplus/0002-fix-disable-werror.patch new file mode 100644 index 00000000..0f42fafc --- /dev/null +++ b/package/libpam-tacplus/0002-fix-disable-werror.patch @@ -0,0 +1,62 @@ +From d6c6f043a08483b32bddcbc8cadec1d8edbe092d Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 6 Nov 2023 18:09:20 +0100 +Subject: [PATCH] fix --disable-werror + +-Werror is unconditionally set since version 1.6.2 and +https://github.com/kravietz/pam_tacplus/commit/649e6f2efb2f3278c55d4c9704bb48cb9f74cb73 +resulting in the following build failure: + +In file included from /home/thomas/autobuild/instance-0/output-1/host/mips-buildroot-linux-gnu/sysroot/usr/include/bits/libc-header-start.h:33, + from /home/thomas/autobuild/instance-0/output-1/host/mips-buildroot-linux-gnu/sysroot/usr/include/stdlib.h:26, + from ./lib/stdlib.h:36, + from ./libtac/include/libtac.h:35, + from support.h:25, + from support.c:28: +/home/thomas/autobuild/instance-0/output-1/host/mips-buildroot-linux-gnu/sysroot/usr/include/features.h:413:4: error: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Werror=cpp] + 413 | # warning _FORTIFY_SOURCE requires compiling with optimization (-O) + | ^~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/9b5ece5d01eac8a760ed9ca331a902d1c47387a7 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/kravietz/pam_tacplus/pull/204 +--- + Makefile.am | 6 +++++- + configure.ac | 2 +- + 2 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 04417e7..1255a9b 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -9,7 +9,11 @@ + ACLOCAL_AMFLAGS = -I config -I m4 + SUBDIRS = lib + AUTOMAKE_OPTIONS = subdir-objects +-AM_CFLAGS = -Wall -Wextra -Werror ++AM_CFLAGS = -Wall -Wextra ++ ++if ENABLE_WERROR ++AM_CFLAGS += -Werror ++endif + + bin_PROGRAMS = tacc + tacc_SOURCES = tacc.c +diff --git a/configure.ac b/configure.ac +index 6914561..5cadca2 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -16,7 +16,7 @@ See the included file: LICENSE for copyright information. + ]) + AC_INIT([pam_tacplus],[1.7.0],[https://github.com/kravietz/pam_tacplus/issues/],[pam_tacplus],[https://github.com/kravietz/pam_tacplus/]) + AC_CONFIG_AUX_DIR(config) +-AM_INIT_AUTOMAKE([foreign -Wall -Werror]) ++AM_INIT_AUTOMAKE([foreign -Wall]) + AC_CONFIG_SRCDIR([pam_tacplus.c]) + AC_CONFIG_HEADERS([config.h]) + AC_CONFIG_MACRO_DIR([config]) +-- +2.42.0 + diff --git a/package/libpam-tacplus/Config.in b/package/libpam-tacplus/Config.in new file mode 100644 index 00000000..97e54a8f --- /dev/null +++ b/package/libpam-tacplus/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBPAM_TACPLUS + bool "libpam-tacplus" + help + TACACS+ protocol client library and PAM module in C. This + PAM module support authentication, authorization (account + management) and accounting (session management)performed + using TACACS+ protocol designed by Cisco. + + https://github.com/kravietz/pam_tacplus diff --git a/package/libpam-tacplus/libpam-tacplus.hash b/package/libpam-tacplus/libpam-tacplus.hash new file mode 100644 index 00000000..fc1db9fe --- /dev/null +++ b/package/libpam-tacplus/libpam-tacplus.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 cf00e27b687c1fafe4b2cf35e648116e99e9c9832718a0d3b479bcf43370adf4 pam_tacplus-1.7.0.tar.gz +sha256 b2b961f07e97c4fb78074276da304ea36b85dc299aae5efb79080cedaea3d5ac COPYING diff --git a/package/libpam-tacplus/libpam-tacplus.mk b/package/libpam-tacplus/libpam-tacplus.mk new file mode 100644 index 00000000..df4d62a0 --- /dev/null +++ b/package/libpam-tacplus/libpam-tacplus.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# libpam-tacplus +# +################################################################################ + +LIBPAM_TACPLUS_VERSION = 1.7.0 +LIBPAM_TACPLUS_SOURCE = pam_tacplus-$(LIBPAM_TACPLUS_VERSION).tar.gz +LIBPAM_TACPLUS_SITE = https://github.com/kravietz/pam_tacplus/releases/download/v$(LIBPAM_TACPLUS_VERSION) +LIBPAM_TACPLUS_LICENSE = GPL-2.0+ +LIBPAM_TACPLUS_LICENSE_FILES = COPYING +LIBPAM_TACPLUS_CPE_ID_VENDOR = pam_tacplus_project +LIBPAM_TACPLUS_CPE_ID_PRODUCT = pam_tacplus +LIBPAM_TACPLUS_DEPENDENCIES = \ + linux-pam \ + $(if $(BR2_PACKAGE_OPENSSL),openssl) +# We're patching Makefile.am +LIBPAM_TACPLUS_AUTORECONF = YES +LIBPAM_TACPLUS_INSTALL_STAGING = YES +LIBPAM_TACPLUS_CONF_OPTS = --disable-am-ldcflags --disable-werror + +$(eval $(autotools-package)) diff --git a/package/libpcap/Config.in b/package/libpcap/Config.in new file mode 100644 index 00000000..7ffac64c --- /dev/null +++ b/package/libpcap/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBPCAP + bool "libpcap" + select BR2_PACKAGE_BLUEZ5_UTILS_HEADERS if BR2_PACKAGE_BLUEZ5_UTILS + help + A system-independent library for user-level network packet + capture. + + https://www.tcpdump.org/ diff --git a/package/libpcap/libpcap.hash b/package/libpcap/libpcap.hash new file mode 100644 index 00000000..34339c12 --- /dev/null +++ b/package/libpcap/libpcap.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +# https://www.tcpdump.org/release/libpcap-1.10.4.tar.gz.sig +sha256 ed19a0383fad72e3ad435fd239d7cd80d64916b87269550159d20e47160ebe5f libpcap-1.10.4.tar.gz + +# Hash for license file: +sha256 8a54594d257e14a5260ac770f1633516cb51e3fc28c40136ce2697014eda7afd LICENSE diff --git a/package/libpcap/libpcap.mk b/package/libpcap/libpcap.mk new file mode 100644 index 00000000..3d05590d --- /dev/null +++ b/package/libpcap/libpcap.mk @@ -0,0 +1,65 @@ +################################################################################ +# +# libpcap +# +################################################################################ + +LIBPCAP_VERSION = 1.10.4 +LIBPCAP_SITE = https://www.tcpdump.org/release +LIBPCAP_LICENSE = BSD-3-Clause +LIBPCAP_LICENSE_FILES = LICENSE +LIBPCAP_CPE_ID_VENDOR = tcpdump +LIBPCAP_INSTALL_STAGING = YES +LIBPCAP_DEPENDENCIES = host-flex host-bison host-pkgconf +HOST_LIBPCAP_DEPENDENCIES = host-flex host-bison host-pkgconf + +# ac_cv_prog_cc_c99 is required for BR2_USE_WCHAR=n because the C99 test +# provided by autoconf relies on wchar_t. +LIBPCAP_CONF_ENV = \ + ac_cv_header_linux_wireless_h=yes \ + ac_cv_prog_cc_c99=-std=gnu99 \ + CFLAGS="$(LIBPCAP_CFLAGS)" +LIBPCAP_CFLAGS = $(TARGET_CFLAGS) +LIBPCAP_CONF_OPTS = --disable-yydebug --with-pcap=linux --without-dag \ + --without-dpdk +# Disable dbus to break recursive dependencies +LIBPCAP_CONF_OPTS += --disable-dbus +HOST_LIBPCAP_CONF_OPTS = \ + --disable-bluetooth \ + --disable-dbus \ + --disable-yydebug \ + --with-pcap=linux \ + --without-dag \ + --without-libnl +LIBPCAP_CONFIG_SCRIPTS = pcap-config + +# Omit -rpath from pcap-config output +define LIBPCAP_CONFIG_REMOVE_RPATH + $(SED) 's/^V_RPATH_OPT=.*/V_RPATH_OPT=""/g' $(@D)/pcap-config +endef +LIBPCAP_POST_BUILD_HOOKS = LIBPCAP_CONFIG_REMOVE_RPATH + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_HEADERS),y) +LIBPCAP_DEPENDENCIES += bluez5_utils-headers +else +LIBPCAP_CONF_OPTS += --disable-bluetooth +endif + +ifeq ($(BR2_PACKAGE_LIBNL),y) +LIBPCAP_DEPENDENCIES += libnl +LIBPCAP_CONF_OPTS += --with-libnl +else +LIBPCAP_CONF_OPTS += --without-libnl +endif + +# microblaze/sparc/sparc64 need -fPIC instead of -fpic +ifeq ($(BR2_microblaze)$(BR2_sparc)$(BR2_sparc64),y) +LIBPCAP_CFLAGS += -fPIC +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_104028),y) +LIBPCAP_CFLAGS += -O2 +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libpciaccess/Config.in b/package/libpciaccess/Config.in new file mode 100644 index 00000000..1f5d5e6b --- /dev/null +++ b/package/libpciaccess/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBPCIACCESS + bool "libpciaccess" + help + X.Org libpciaccess + + Generic PCI access library + + https://gitlab.freedesktop.org/xorg/lib/libpciaccess diff --git a/package/libpciaccess/libpciaccess.hash b/package/libpciaccess/libpciaccess.hash new file mode 100644 index 00000000..e50aacc8 --- /dev/null +++ b/package/libpciaccess/libpciaccess.hash @@ -0,0 +1,4 @@ +# From https://lists.x.org/archives/xorg-announce/2024-March/003483.html +sha512 ef27999446e735df2331e94219ee3dafe9198a2472bb452f63ef9c9c446d5431f9e231e224cfabdeba1402974a5a0064546f9abced4d1770f994f5fc0c2b3310 libpciaccess-0.18.1.tar.xz +# Hash for license file: +sha256 f33f360f8905940dac01aa21597fe8a6727ca6f4ffa43b380e2116fd0666aa8a COPYING diff --git a/package/libpciaccess/libpciaccess.mk b/package/libpciaccess/libpciaccess.mk new file mode 100644 index 00000000..cd35b270 --- /dev/null +++ b/package/libpciaccess/libpciaccess.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# libpciaccess +# +################################################################################ + +LIBPCIACCESS_VERSION = 0.18.1 +LIBPCIACCESS_SOURCE = libpciaccess-$(LIBPCIACCESS_VERSION).tar.xz +LIBPCIACCESS_SITE = http://xorg.freedesktop.org/releases/individual/lib +LIBPCIACCESS_LICENSE = MIT +LIBPCIACCESS_LICENSE_FILES = COPYING +LIBPCIACCESS_INSTALL_STAGING = YES +LIBPCIACCESS_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LIBPCIACCESS_CONF_OPTS += -Dzlib=enabled +LIBPCIACCESS_DEPENDENCIES += zlib +else +LIBPCIACCESS_CONF_OPTS += -Dzlib=disabled +endif + +$(eval $(meson-package)) diff --git a/package/libpeas/Config.in b/package/libpeas/Config.in new file mode 100644 index 00000000..430e668e --- /dev/null +++ b/package/libpeas/Config.in @@ -0,0 +1,45 @@ +config BR2_PACKAGE_LIBPEAS + bool "libpeas" + depends on BR2_USE_MMU # gobject-introspection + depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # gobject-introspection + depends on BR2_HOST_GCC_AT_LEAST_8 # gobject-introspection -> host-qemu + depends on BR2_TOOLCHAIN_USES_GLIBC # gobject-introspection + depends on BR2_PACKAGE_PYTHON3 # gobject-introspection + select BR2_PACKAGE_GOBJECT_INTROSPECTION + select BR2_PACKAGE_LIBGLIB2 + help + libpeas is a gobject-based plugins engine, and is targetted at + giving every application the chance to assume its own + extensibility. It also has a set of features including, but + not limited to: + - multiple extension points + - On demand (lazy) programming language support for C, + Python and Lua + - Simplicity of the API + + https://wiki.gnome.org/Projects/Libpeas + +if BR2_PACKAGE_LIBPEAS + +config BR2_PACKAGE_LIBPEAS_WIDGETS + bool "widgets" + depends on BR2_PACKAGE_LIBGTK3 + help + Build GTK+ widgetry + +comment "widget support needs libgtk3" + depends on !BR2_PACKAGE_LIBGTK3 + +endif + +comment "libpeas needs python3" + depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_PYTHON3 + +comment "libpeas needs a glibc toolchain, gcc >= 4.9, host gcc >= 8" + depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_HOST_GCC_AT_LEAST_8 diff --git a/package/libpeas/libpeas.hash b/package/libpeas/libpeas.hash new file mode 100644 index 00000000..f69fd294 --- /dev/null +++ b/package/libpeas/libpeas.hash @@ -0,0 +1,4 @@ +# From https://download.gnome.org/sources/libpeas/1.32/libpeas-1.32.0.sha256sum +sha256 d625520fa02e8977029b246ae439bc218968965f1e82d612208b713f1dcc3d0e libpeas-1.32.0.tar.xz +# Locally calculated +sha256 592987e8510228d546540b84a22444bde98e48d03078d3b2eefcd889bec5ce8c COPYING diff --git a/package/libpeas/libpeas.mk b/package/libpeas/libpeas.mk new file mode 100644 index 00000000..3d2e7945 --- /dev/null +++ b/package/libpeas/libpeas.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# libpeas +# +################################################################################ + +LIBPEAS_VERSION_MAJOR = 1.32 +LIBPEAS_VERSION = $(LIBPEAS_VERSION_MAJOR).0 +LIBPEAS_SOURCE = libpeas-$(LIBPEAS_VERSION).tar.xz +LIBPEAS_SITE = https://download.gnome.org/sources/libpeas/$(LIBPEAS_VERSION_MAJOR) +LIBPEAS_LICENSE = LGPL-2.1+ +LIBPEAS_LICENSE_FILES = COPYING +LIBPEAS_CPE_ID_VENDOR = gnome +LIBPEAS_INSTALL_STAGING = YES +LIBPEAS_DEPENDENCIES = \ + host-libglib2 \ + host-pkgconf \ + gobject-introspection \ + libglib2 \ + $(TARGET_NLS_DEPENDENCIES) + +LIBPEAS_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) + +LIBPEAS_CONF_OPTS = \ + -Ddemos=false \ + -Dglade_catalog=false \ + -Dgtk_doc=false \ + -Dintrospection=true \ + -Dlua51=false \ + -Dpython2=false \ + -Dpython3=false \ + -Dvapi=false + +ifeq ($(BR2_PACKAGE_LIBPEAS_WIDGETS),y) +LIBPEAS_DEPENDENCIES += libgtk3 +LIBPEAS_CONF_OPTS += -Dwidgetry=true +else +LIBPEAS_CONF_OPTS += -Dwidgetry=false +endif + +$(eval $(meson-package)) diff --git a/package/libpfm4/Config.in b/package/libpfm4/Config.in new file mode 100644 index 00000000..441c6dee --- /dev/null +++ b/package/libpfm4/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBPFM4 + bool "libpfm4" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + help + A helper library to help encode Performance Events to use with + Operating system kernels performance monitoring interfaces. + + http://perfmon2.sourceforge.net/ + +comment "libpfm4 needs a toolchain w/ NPTL" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/package/libpfm4/libpfm4.hash b/package/libpfm4/libpfm4.hash new file mode 100644 index 00000000..80dc66c6 --- /dev/null +++ b/package/libpfm4/libpfm4.hash @@ -0,0 +1,6 @@ +# From http://sourceforge.net/projects/perfmon2/files/libpfm4/: +sha1 bcb52090f02bc7bcb5ac066494cd55bbd5084e65 libpfm-4.13.0.tar.gz +md5 673aaf0613f8fd1d886b4c5867c2fef1 libpfm-4.13.0.tar.gz +# Locally calculated +sha256 d18b97764c755528c1051d376e33545d0eb60c6ebf85680436813fa5b04cc3d1 libpfm-4.13.0.tar.gz +sha256 beef323d68fc5db9c67b20e8e9de7ccde371d20cdbcdd686804055b18b926d90 COPYING diff --git a/package/libpfm4/libpfm4.mk b/package/libpfm4/libpfm4.mk new file mode 100644 index 00000000..1a18a31c --- /dev/null +++ b/package/libpfm4/libpfm4.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# libpfm4 +# +################################################################################ + +LIBPFM4_VERSION = 4.13.0 +LIBPFM4_SOURCE = libpfm-$(LIBPFM4_VERSION).tar.gz +LIBPFM4_SITE = http://downloads.sourceforge.net/project/perfmon2/libpfm4 +LIBPFM4_LICENSE = libpfm4 license +LIBPFM4_LICENSE_FILES = COPYING +LIBPFM4_INSTALL_STAGING = YES + +LIBPFM4_FLAGS = SYS=Linux ARCH=$(BR2_ARCH) \ + CC="$(TARGET_CC)" LDCONFIG=true \ + CONFIG_PFMLIB_SHARED=$(if $(BR2_STATIC_LIBS),n,y) \ + DBG= \ + EXAMPLE_DIRS= + +define LIBPFM4_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBPFM4_FLAGS) +endef + +define LIBPFM4_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBPFM4_FLAGS) PREFIX=$(STAGING_DIR)/usr install +endef + +define LIBPFM4_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBPFM4_FLAGS) PREFIX=$(TARGET_DIR)/usr install +endef + +$(eval $(generic-package)) diff --git a/package/libphidget/Config.in b/package/libphidget/Config.in new file mode 100644 index 00000000..ab1e3e31 --- /dev/null +++ b/package/libphidget/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_LIBPHIDGET + bool "libphidget" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBUSB + help + The libphidget library provides an API for controlling + Phidgets USB devices. The library translates API function + calls to libusb function calls to control attached Phidgets + devices that provide GPIO's, DAC's, accelerometers, servo + motors, and other capabilities either singly or on combo + devices. + + To use libphidget for controlling locally attached devices you + need to set up the userspace USB device tree /dev/bus/usb. See + file udev/99-phidgets.rules. + + The libphidget library also contains an API for sending + commands to a local or remote phidgetwebservice using HTTP. + The phidgetwebservice then translates HTTP requests to + libphidget API function calls to control locally attached + Phidgets devices. + + http://phidgets.com/ + +comment "libphidget needs a toolchain w/ threads, dynamic library, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/libphidget/libphidget.hash b/package/libphidget/libphidget.hash new file mode 100644 index 00000000..9789f786 --- /dev/null +++ b/package/libphidget/libphidget.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 0e789912700228808519cf5c41e19f9b761da635c6bb676b147897936b23851f libphidget_2.1.9.20190409.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/libphidget/libphidget.mk b/package/libphidget/libphidget.mk new file mode 100644 index 00000000..f7d471f9 --- /dev/null +++ b/package/libphidget/libphidget.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libphidget +# +################################################################################ + +LIBPHIDGET_VERSION = 2.1.9.20190409 +LIBPHIDGET_SOURCE = libphidget_$(LIBPHIDGET_VERSION).tar.gz +LIBPHIDGET_SITE = https://www.phidgets.com/downloads/phidget21/libraries/linux/libphidget +LIBPHIDGET_DEPENDENCIES = libusb +LIBPHIDGET_CONF_OPTS = --disable-ldconfig +LIBPHIDGET_INSTALL_STAGING = YES +LIBPHIDGET_LICENSE = LGPL-3.0 +LIBPHIDGET_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/libpjsip/Config.in b/package/libpjsip/Config.in new file mode 100644 index 00000000..980fada3 --- /dev/null +++ b/package/libpjsip/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBPJSIP + bool "libpjsip" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + PJSIP is a free and open source multimedia communication + library written in C language implementing standard based + protocols such as: SIP, SDP, RTP, STUN, TURN, and ICE. + + http://www.pjsip.org + +comment "libpjsip needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libpjsip/libpjsip.hash b/package/libpjsip/libpjsip.hash new file mode 100644 index 00000000..d72e1090 --- /dev/null +++ b/package/libpjsip/libpjsip.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 5805c1171acab4af9684d7ad096dcb92f71fc42809852144e97e1413468c9981 pjproject-2.14.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/libpjsip/libpjsip.mk b/package/libpjsip/libpjsip.mk new file mode 100644 index 00000000..8169e0dc --- /dev/null +++ b/package/libpjsip/libpjsip.mk @@ -0,0 +1,183 @@ +################################################################################ +# +# libpjsip +# +################################################################################ + +LIBPJSIP_VERSION = 2.14 +LIBPJSIP_SOURCE = pjproject-$(LIBPJSIP_VERSION).tar.gz +LIBPJSIP_SITE = $(call github,pjsip,pjproject,$(LIBPJSIP_VERSION)) + +LIBPJSIP_LICENSE = GPL-2.0+ +LIBPJSIP_LICENSE_FILES = COPYING +LIBPJSIP_CPE_ID_VENDOR = teluu +LIBPJSIP_CPE_ID_PRODUCT = pjsip +LIBPJSIP_INSTALL_STAGING = YES +LIBPJSIP_MAKE = $(MAKE1) + +LIBPJSIP_CFLAGS = $(TARGET_CFLAGS) -DPJ_HAS_IPV6=1 + +# relocation truncated to fit: R_68K_GOT16O +ifeq ($(BR2_m68k_cf),y) +LIBPJSIP_CFLAGS += -mxgot +endif + +LIBPJSIP_CONF_ENV = \ + LD="$(TARGET_CC)" \ + CFLAGS="$(LIBPJSIP_CFLAGS)" + +LIBPJSIP_CONF_OPTS = \ + --disable-resample \ + --disable-g7221-codec \ + --disable-ilbc-codec \ + --disable-libwebrtc \ + --disable-ext-sound \ + --disable-g711-codec \ + --disable-l16-codec \ + --disable-g722-codec \ + --disable-ipp \ + --disable-silk + +# Note: aconfigure.ac is broken: --enable-epoll or --disable-epoll will +# both enable it. But that's OK, epoll is better than the alternative, +# so we want to use it. +LIBPJSIP_CONF_OPTS += --enable-epoll + +ifeq ($(BR2_PACKAGE_ALSA_LIB_MIXER),y) +LIBPJSIP_DEPENDENCIES += alsa-lib +LIBPJSIP_CONF_OPTS += --enable-sound +else +LIBPJSIP_CONF_OPTS += --disable-sound +endif + +ifeq ($(BR2_PACKAGE_BCG729),y) +LIBPJSIP_DEPENDENCIES += bcg729 +LIBPJSIP_CONF_OPTS += --with-bcg729=$(STAGING_DIR)/usr +else +LIBPJSIP_CONF_OPTS += --disable-bcg729 +endif + +ifeq ($(BR2_PACKAGE_FFMPEG),y) +LIBPJSIP_DEPENDENCIES += ffmpeg +LIBPJSIP_CONF_OPTS += --with-ffmpeg=$(STAGING_DIR)/usr +else +LIBPJSIP_CONF_OPTS += --disable-ffmpeg +endif + +ifeq ($(BR2_PACKAGE_LIBGSM),y) +LIBPJSIP_CONF_OPTS += \ + --enable-gsm-codec \ + --with-external-gsm +LIBPJSIP_DEPENDENCIES += libgsm +else +LIBPJSIP_CONF_OPTS += \ + --disable-gsm-codec +endif + +ifeq ($(BR2_PACKAGE_LIBOPENH264),y) +LIBPJSIP_DEPENDENCIES += libopenh264 +LIBPJSIP_CONF_OPTS += --with-openh264=$(STAGING_DIR)/usr +else +LIBPJSIP_CONF_OPTS += --disable-openh264 +endif + +ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) +LIBPJSIP_DEPENDENCIES += libopenssl +LIBPJSIP_CONF_OPTS += --with-ssl=$(STAGING_DIR)/usr +else ifeq ($(BR2_PACKAGE_GNUTLS),y) +LIBPJSIP_DEPENDENCIES += gnutls +LIBPJSIP_CONF_OPTS += --with-gnutls=$(STAGING_DIR)/usr +else +LIBPJSIP_CONF_OPTS += --disable-ssl +endif + +ifeq ($(BR2_PACKAGE_LIBSAMPLERATE),y) +LIBPJSIP_DEPENDENCIES += libsamplerate +LIBPJSIP_CONF_OPTS += --enable-libsamplerate +else +LIBPJSIP_CONF_OPTS += --disable-libsamplerate +endif + +ifeq ($(BR2_PACKAGE_LIBSRTP),y) +LIBPJSIP_DEPENDENCIES += libsrtp +LIBPJSIP_CONF_OPTS += \ + --enable-libsrtp \ + --with-external-srtp +else +LIBPJSIP_CONF_OPTS += --disable-libsrtp +endif + +ifeq ($(BR2_PACKAGE_LIBUPNP),y) +LIBPJSIP_DEPENDENCIES += libupnp +LIBPJSIP_CONF_OPTS += --with-upnp=$(STAGING_DIR)/usr +else +LIBPJSIP_CONF_OPTS += --disable-upnp +endif + +ifeq ($(BR2_PACKAGE_LIBV4L),y) +# --enable-v4l2 is broken (check for libv4l2 will be omitted) +LIBPJSIP_DEPENDENCIES += libv4l +else +LIBPJSIP_CONF_OPTS += --disable-v4l2 +endif + +ifeq ($(BR2_PACKAGE_LIBYUV),y) +LIBPJSIP_DEPENDENCIES += libyuv +LIBPJSIP_CONF_OPTS += \ + --enable-libyuv \ + --with-external-yuv +else +LIBPJSIP_CONF_OPTS += --disable-libyuv +endif + +ifeq ($(BR2_PACKAGE_OPENCORE_AMR),y) +LIBPJSIP_DEPENDENCIES += opencore-amr +LIBPJSIP_CONF_OPTS += --with-opencore-amr=$(STAGING_DIR)/usr +else +LIBPJSIP_CONF_OPTS += --disable-opencore-amr +endif + +ifeq ($(BR2_PACKAGE_OPUS),y) +LIBPJSIP_DEPENDENCIES += opus +LIBPJSIP_CONF_OPTS += --with-opus=$(STAGING_DIR)/usr +else +LIBPJSIP_CONF_OPTS += --disable-opus +endif + +ifeq ($(BR2_PACKAGE_PORTAUDIO),y) +LIBPJSIP_DEPENDENCIES += portaudio +LIBPJSIP_CONF_OPTS += --with-external-pa +else +LIBPJSIP_CONF_OPTS += --without-external-pa +endif + +ifeq ($(BR2_PACKAGE_SDL2),y) +LIBPJSIP_DEPENDENCIES += sdl2 +LIBPJSIP_CONF_OPTS += --with-sdl=$(STAGING_DIR)/usr +else +LIBPJSIP_CONF_OPTS += --disable-sdl +endif + +ifeq ($(BR2_PACKAGE_SPEEX)$(BR2_PACKAGE_SPEEXDSP),yy) +LIBPJSIP_CONF_OPTS += \ + --enable-speex-aec \ + --enable-speex-codec \ + --with-external-speex +LIBPJSIP_DEPENDENCIES += speex speexdsp +else +LIBPJSIP_CONF_OPTS += \ + --disable-speex-aec \ + --disable-speex-codec +endif + +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y) +LIBPJSIP_DEPENDENCIES += util-linux +LIBPJSIP_CONF_OPTS += --enable-libuuid +else +LIBPJSIP_CONF_OPTS += --disable-libuuid +endif + +# disable build of test binaries +LIBPJSIP_MAKE_OPTS = lib + +$(eval $(autotools-package)) diff --git a/package/libplatform/0001-cmake-require-c-11-as-the-minimum-standard.patch b/package/libplatform/0001-cmake-require-c-11-as-the-minimum-standard.patch new file mode 100644 index 00000000..b880a319 --- /dev/null +++ b/package/libplatform/0001-cmake-require-c-11-as-the-minimum-standard.patch @@ -0,0 +1,26 @@ +From ad9fcceb6267e737316b616551b7aac3cf676481 Mon Sep 17 00:00:00 2001 +From: Lukas Rusak +Date: Fri, 2 Oct 2020 15:31:36 -0700 +Subject: [PATCH] [cmake] require c++11 as the minimum standard + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/Pulse-Eight/platform/pull/46] +--- + CMakeLists.txt | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 7144b0b..e9112f9 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -3,6 +3,10 @@ project(p8-platform) + cmake_minimum_required(VERSION 2.8.9) + enable_language(CXX) + ++set(CMAKE_CXX_STANDARD 11) ++set(CMAKE_CXX_STANDARD_REQUIRED YES) ++set(CMAKE_CXX_EXTENSIONS NO) ++ + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}) + + find_package(Threads REQUIRED) diff --git a/package/libplatform/Config.in b/package/libplatform/Config.in new file mode 100644 index 00000000..ade6baf2 --- /dev/null +++ b/package/libplatform/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBPLATFORM + bool + help + Platform support library used by libCEC and binary add-ons for + Kodi + + https://github.com/Pulse-Eight/platform diff --git a/package/libplatform/libplatform.hash b/package/libplatform/libplatform.hash new file mode 100644 index 00000000..283b435b --- /dev/null +++ b/package/libplatform/libplatform.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 ebee46c76b86b40b703fa913465f5004fa3166eeb6a4794c58fc8a5c25702931 libplatform-a7cd0d5780ed80a4e70480d1650749f29e8a1fb2.tar.gz +sha256 80fc66febbb2393c9d518e3eefa4ad9aae15a9b6a84174c0e443ea79eeea5131 src/os.h diff --git a/package/libplatform/libplatform.mk b/package/libplatform/libplatform.mk new file mode 100644 index 00000000..90192369 --- /dev/null +++ b/package/libplatform/libplatform.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# libplatform +# +################################################################################ + +LIBPLATFORM_VERSION = a7cd0d5780ed80a4e70480d1650749f29e8a1fb2 +LIBPLATFORM_SITE = $(call github,Pulse-Eight,platform,$(LIBPLATFORM_VERSION)) +LIBPLATFORM_LICENSE = GPL-2.0+ +LIBPLATFORM_LICENSE_FILES = src/os.h +LIBPLATFORM_INSTALL_STAGING = YES + +$(eval $(cmake-package)) diff --git a/package/libplist/Config.in b/package/libplist/Config.in new file mode 100644 index 00000000..5a246b4e --- /dev/null +++ b/package/libplist/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBPLIST + bool "libplist" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + libplist is a client for manipulating Apple Property List + (.plist) files + + http://www.libimobiledevice.org/ + +comment "libplist needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libplist/libplist.hash b/package/libplist/libplist.hash new file mode 100644 index 00000000..9bc79bf3 --- /dev/null +++ b/package/libplist/libplist.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3f5868ae15b117320c1ff5e71be53d29469d4696c4085f89db1975705781a7cd libplist-2.4.0.tar.bz2 +sha256 7619c753cac95d4740220223bde48a032606fcaccde5e546f9bc444c81ab356d COPYING diff --git a/package/libplist/libplist.mk b/package/libplist/libplist.mk new file mode 100644 index 00000000..0b8a6945 --- /dev/null +++ b/package/libplist/libplist.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# libplist +# +################################################################################ + +LIBPLIST_VERSION = 2.4.0 +LIBPLIST_SOURCE = libplist-$(LIBPLIST_VERSION).tar.bz2 +LIBPLIST_SITE = https://github.com/libimobiledevice/libplist/releases/download/$(LIBPLIST_VERSION) +LIBPLIST_INSTALL_STAGING = YES +LIBPLIST_LICENSE = LGPL-2.1+ +LIBPLIST_LICENSE_FILES = COPYING +LIBPLIST_CPE_ID_VENDOR = libimobiledevice + +# Disable building Python bindings, because it requires host-cython, which +# is not packaged in Buildroot at all. +LIBPLIST_CONF_OPTS = --without-cython + +$(eval $(autotools-package)) diff --git a/package/libpng/Config.in b/package/libpng/Config.in new file mode 100644 index 00000000..b0a36460 --- /dev/null +++ b/package/libpng/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBPNG + bool "libpng" + select BR2_PACKAGE_ZLIB + help + Library for handling PNG (Portable Network Graphics) + images. + + http://www.libpng.org/ diff --git a/package/libpng/libpng.hash b/package/libpng/libpng.hash new file mode 100644 index 00000000..356c0e3e --- /dev/null +++ b/package/libpng/libpng.hash @@ -0,0 +1,4 @@ +# From https://sourceforge.net/p/png-mng/mailman/message/58741099/ +sha256 6a5ca0652392a2d7c9db2ae5b40210843c0bbc081cbd410825ab00cc59f14a6c libpng-1.6.43.tar.xz +# Locally computed: +sha256 7317e078e2d3b5d7ba5a6159e650945153262b44b76f6700f8e9edb261c5143e LICENSE diff --git a/package/libpng/libpng.mk b/package/libpng/libpng.mk new file mode 100644 index 00000000..af38afde --- /dev/null +++ b/package/libpng/libpng.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# libpng +# +################################################################################ + +LIBPNG_VERSION = 1.6.43 +LIBPNG_SERIES = 16 +LIBPNG_SOURCE = libpng-$(LIBPNG_VERSION).tar.xz +LIBPNG_SITE = http://downloads.sourceforge.net/project/libpng/libpng$(LIBPNG_SERIES)/$(LIBPNG_VERSION) +LIBPNG_LICENSE = Libpng-2.0 +LIBPNG_LICENSE_FILES = LICENSE +LIBPNG_CPE_ID_VENDOR = libpng +LIBPNG_INSTALL_STAGING = YES +LIBPNG_DEPENDENCIES = host-pkgconf zlib +HOST_LIBPNG_DEPENDENCIES = host-pkgconf host-zlib +LIBPNG_CONFIG_SCRIPTS = libpng$(LIBPNG_SERIES)-config libpng-config +LIBPNG_CONF_OPTS = --disable-tools + +ifeq ($(BR2_ARM_CPU_HAS_NEON)$(BR2_aarch64),y) +LIBPNG_CONF_OPTS += --enable-arm-neon +else +LIBPNG_CONF_OPTS += --disable-arm-neon +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE2),y) +LIBPNG_CONF_OPTS += --enable-intel-sse +else +LIBPNG_CONF_OPTS += --disable-intel-sse +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libpqxx/Config.in b/package/libpqxx/Config.in new file mode 100644 index 00000000..845692ea --- /dev/null +++ b/package/libpqxx/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBPQXX + bool "libpqxx" + depends on BR2_PACKAGE_POSTGRESQL + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_9 # C++17/charconv + depends on BR2_INSTALL_LIBSTDCPP + help + libpqxx is the official C++ client API for PostgreSQL, the + enterprise-strength open-source relational database. + + http://pqxx.org/development/libpqxx/ + +comment "libpqxx needs toolchain w/ C++, gcc >= 9, threads" + depends on BR2_PACKAGE_POSTGRESQL + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_9 || \ + !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libpqxx/libpqxx.hash b/package/libpqxx/libpqxx.hash new file mode 100644 index 00000000..7e13e741 --- /dev/null +++ b/package/libpqxx/libpqxx.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 e37d5774c39f6c802e32d7f418e88b8e530404fb54758516e884fc0ebdee6da4 libpqxx-7.9.2.tar.gz +sha256 3dd057a614dd24688aafc38d4c41111140e17147cfd94f314a80af30879641b2 COPYING diff --git a/package/libpqxx/libpqxx.mk b/package/libpqxx/libpqxx.mk new file mode 100644 index 00000000..c69b7726 --- /dev/null +++ b/package/libpqxx/libpqxx.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# libpqxx +# +################################################################################ + +LIBPQXX_VERSION = 7.9.2 +LIBPQXX_SITE = $(call github,jtv,libpqxx,$(LIBPQXX_VERSION)) +LIBPQXX_INSTALL_STAGING = YES +LIBPQXX_DEPENDENCIES = postgresql +LIBPQXX_LICENSE = BSD-3-Clause +LIBPQXX_LICENSE_FILES = COPYING + +LIBPQXX_CONF_ENV = \ + ac_cv_path_PG_CONFIG=$(STAGING_DIR)/usr/bin/pg_config \ + CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++17" + +$(eval $(autotools-package)) diff --git a/package/libpri/Config.in b/package/libpri/Config.in new file mode 100644 index 00000000..0684d2ac --- /dev/null +++ b/package/libpri/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_LIBPRI + bool "libpri" + depends on BR2_USE_MMU # fork() + depends on BR2_LINUX_KERNEL + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_DAHDI_LINUX + select BR2_PACKAGE_DAHDI_TOOLS + help + libpri is an open source library that encapsulates the + protocols used to communicate over ISDN Primary Rate + Interfaces (T1, E1, J1). + + http://www.asterisk.org/downloads/libpri + +comment "libpri needs a Linux kernel to be built" + depends on BR2_USE_MMU + depends on !BR2_LINUX_KERNEL + +comment "libpri needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libpri/libpri.hash b/package/libpri/libpri.hash new file mode 100644 index 00000000..77985df9 --- /dev/null +++ b/package/libpri/libpri.hash @@ -0,0 +1,7 @@ +# sha1 and sha256 from http://downloads.asterisk.org/pub/telephony/libpri/releases/ +sha1 8440007477ebf131020afb00f57672b108b4db2c libpri-1.6.0.tar.gz +sha256 7225ea7ec334a115f9dc08e71f55589c38cb4e00b13964cd2f08cc4e6123e3f6 libpri-1.6.0.tar.gz + +# License files, locally calculated +sha256 fa5fc1d1eec39532ea517518eeefd7b6e3c14341a55e5880a0e2a49eee47a5b7 LICENSE +sha256 53b8b3aea4faec23fd9dbd4936044aca80c9b00343e6e58ee3303cec19512b33 README diff --git a/package/libpri/libpri.mk b/package/libpri/libpri.mk new file mode 100644 index 00000000..48a10192 --- /dev/null +++ b/package/libpri/libpri.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# libpri +# +################################################################################ + +LIBPRI_VERSION = 1.6.0 +LIBPRI_SITE = http://downloads.asterisk.org/pub/telephony/libpri/releases + +LIBPRI_LICENSE = GPL-2.0 with OpenH323 exception +LIBPRI_LICENSE_FILES = LICENSE README + +LIBPRI_DEPENDENCIES = dahdi-linux dahdi-tools +LIBPRI_INSTALL_STAGING = YES + +# The Makefile default rule will always try to generate both libraries. +# So we need to explicitly build only what we can. +ifneq ($(BR2_SHARED_LIBS),y) +LIBPRI_LIBS = libpri.a +LIBPRI_UTILS += pritest rosetest testprilib +define LIBPRI_INSTALL_A + $(INSTALL) -D -m 0644 $(@D)/libpri.a $(1)/usr/lib/libpri.a +endef +endif + +ifneq ($(BR2_STATIC_LIBS),y) +LIBPRI_LIBS += libpri.so.1.4 +LIBPRI_UTILS += pridump +define LIBPRI_INSTALL_SO + $(INSTALL) -D -m 0644 $(@D)/libpri.so.1.4 $(1)/usr/lib/libpri.so.1.4 + ln -sf libpri.so.1.4 $(1)/usr/lib/libpri.so +endef +endif + +define LIBPRI_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) -fPIC" -C $(@D) \ + $(LIBPRI_LIBS) $(LIBPRI_UTILS) +endef + +define LIBPRI_INSTALL_STAGING_CMDS + $(call LIBPRI_INSTALL_A,$(STAGING_DIR)) + $(call LIBPRI_INSTALL_SO,$(STAGING_DIR)) + $(INSTALL) -D -m 0644 $(@D)/libpri.h $(STAGING_DIR)/usr/include/libpri.h +endef + +define LIBPRI_INSTALL_TARGET_CMDS + $(foreach u,$(LIBPRI_UTILS),\ + $(INSTALL) -D -m 0755 $(@D)/$(u) $(TARGET_DIR)/usr/sbin/$(u)$(sep)) + $(call LIBPRI_INSTALL_SO,$(TARGET_DIR)) +endef + +$(eval $(generic-package)) diff --git a/package/libpsl/Config.in b/package/libpsl/Config.in new file mode 100644 index 00000000..7b02d961 --- /dev/null +++ b/package/libpsl/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBPSL + bool "libpsl" + depends on BR2_USE_WCHAR # libunistring, icu + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_LIBIDN2 if !BR2_PACKAGE_ICU && !BR2_PACKAGE_LIBIDN + select BR2_PACKAGE_LIBUNISTRING if !BR2_PACKAGE_ICU + help + C library to handle the Public Suffix List of TLDs. + + https://github.com/rockdaboot/libpsl + +comment "libpsl needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/package/libpsl/libpsl.hash b/package/libpsl/libpsl.hash new file mode 100644 index 00000000..caf760c4 --- /dev/null +++ b/package/libpsl/libpsl.hash @@ -0,0 +1,6 @@ +# Locally generated +sha256 1dcc9ceae8b128f3c0b3f654decd0e1e891afc6ff81098f227ef260449dae208 libpsl-0.21.5.tar.gz + +# Hashes for license files: +sha256 322392e6001b2b3b0fca705dc9f11f26e12441188ecde50eb1d22909980b2925 COPYING +sha256 1d7f52747a9169751cdf2641a8299c0098e9ecdf9429296ffd55bdb14c9ed5b3 src/LICENSE.chromium diff --git a/package/libpsl/libpsl.mk b/package/libpsl/libpsl.mk new file mode 100644 index 00000000..d1a12f86 --- /dev/null +++ b/package/libpsl/libpsl.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# libpsl +# +################################################################################ + +LIBPSL_VERSION = 0.21.5 +LIBPSL_SITE = https://github.com/rockdaboot/libpsl/releases/download/$(LIBPSL_VERSION) +LIBPSL_LICENSE = MIT, BSD-3-Clause +LIBPSL_LICENSE_FILES = COPYING src/LICENSE.chromium +LIBPSL_CONF_OPTS = -Dbuiltin=true +LIBPSL_DEPENDENCIES = host-pkgconf +LIBPSL_INSTALL_STAGING = YES + +ifeq ($(BR2_ENABLE_LOCALE),) +LIBPSL_DEPENDENCIES += libiconv +endif + +# The order of checks is the same as done by libpsl when configured. +ifeq ($(BR2_PACKAGE_LIBIDN2)$(BR2_PACKAGE_LIBUNISTRING),yy) +LIBPSL_CONF_OPTS += -Druntime=libidn2 +LIBPSL_DEPENDENCIES += libidn2 libunistring +else ifeq ($(BR2_PACKAGE_ICU),y) +LIBPSL_CONF_OPTS += -Druntime=libicu +LIBPSL_DEPENDENCIES += icu +else +LIBPSL_CONF_OPTS += -Druntime=libidn +LIBPSL_DEPENDENCIES += libidn libunistring +endif + +$(eval $(meson-package)) diff --git a/package/libpthread-stubs/Config.in b/package/libpthread-stubs/Config.in new file mode 100644 index 00000000..a4ce1cb0 --- /dev/null +++ b/package/libpthread-stubs/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBPTHREAD_STUBS + bool "libpthread-stubs" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + This library provides weak aliases for pthread functions not + provided in libc or otherwise available by default. + + http://xcb.freedesktop.org/ + +comment "libpthread-stubs needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libpthread-stubs/libpthread-stubs.hash b/package/libpthread-stubs/libpthread-stubs.hash new file mode 100644 index 00000000..63393b01 --- /dev/null +++ b/package/libpthread-stubs/libpthread-stubs.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-July/003410.html +sha256 59da566decceba7c2a7970a4a03b48d9905f1262ff94410a649224e33d2442bc libpthread-stubs-0.5.tar.xz +sha512 a24f7c40dcaf5f6ca0085972117fed5ad0851f6fc1972fdab799d27236afaaa4f7baa93e40532f93984d313d94456819aaf4ec8f8d1bbb2e5c4fc76c31891d82 libpthread-stubs-0.5.tar.xz +# Locally computed +sha256 78c20706e799f2b8f445e71d3d2ade6ba23b3388fd6cbeed7d71796623febde8 COPYING diff --git a/package/libpthread-stubs/libpthread-stubs.mk b/package/libpthread-stubs/libpthread-stubs.mk new file mode 100644 index 00000000..151e6ead --- /dev/null +++ b/package/libpthread-stubs/libpthread-stubs.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# libpthread-stubs +# +################################################################################ + +LIBPTHREAD_STUBS_VERSION = 0.5 +LIBPTHREAD_STUBS_SOURCE = libpthread-stubs-$(LIBPTHREAD_STUBS_VERSION).tar.xz +LIBPTHREAD_STUBS_SITE = http://xcb.freedesktop.org/dist +LIBPTHREAD_STUBS_LICENSE = MIT +LIBPTHREAD_STUBS_LICENSE_FILES = COPYING + +LIBPTHREAD_STUBS_INSTALL_STAGING = YES + +ifeq ($(BR2_STATIC_LIBS),y) +LIBPTHREAD_STUBS_CONF_ENV += LDFLAGS="$(TARGET_LDFLAGS) -pthread" +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libpthsem/0001-fix-build-on-linux-3.x-host.patch b/package/libpthsem/0001-fix-build-on-linux-3.x-host.patch new file mode 100644 index 00000000..21fff4e7 --- /dev/null +++ b/package/libpthsem/0001-fix-build-on-linux-3.x-host.patch @@ -0,0 +1,28 @@ +From 2d0450bfa3fb7003098da1a7fe24c3ae140912dc Mon Sep 17 00:00:00 2001 +From: Gregory Hermant +Date: Mon, 22 Oct 2012 15:11:53 +0200 +Subject: [PATCH] pthsem build on Linux 3.x host + + +Signed-off-by: Michael Markstaller +Signed-off-by: Gregory Hermant +--- + acinclude.m4 | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/acinclude.m4 b/acinclude.m4 +index 03b42de..fea9bc8 100644 +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -892,6 +892,8 @@ case $PLATFORM in + case "x`uname -r`" in + changequote(, )dnl + x2.[23456789]* ) ;; ++changequote(, )dnl ++ x3.* ) ;; + changequote([, ]) + * ) braindead=yes ;; + esac +-- +1.7.9.5 + diff --git a/package/libpthsem/0002-acinclude.m4-fix-build-with-autoconf-2.72.patch b/package/libpthsem/0002-acinclude.m4-fix-build-with-autoconf-2.72.patch new file mode 100644 index 00000000..0c66482c --- /dev/null +++ b/package/libpthsem/0002-acinclude.m4-fix-build-with-autoconf-2.72.patch @@ -0,0 +1,36 @@ +From 3ec1a1c22142c547bc7f44622291bf0abdc322f1 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 25 Feb 2024 14:33:02 +0100 +Subject: [PATCH] acinclude.m4: fix build with autoconf >= 2.72 + +Move fi statement where it belongs to fix the following build failure +with autoconf >= 2.72: + +checking for stack setup via makecontext... ./configure: line 15863: syntax error near unexpected token `;;' + +Fixes: + - http://autobuild.buildroot.org/results/013e0d3f72582ce3675f65786c014518682d703b + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/linknx/pthsem/pull/1 +--- + acinclude.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/acinclude.m4 b/acinclude.m4 +index 03b42de..d74889f 100644 +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -1426,8 +1426,8 @@ ac_cv_stacksetup_$1='guessed:(skaddr),(sksize)' + ]) + dnl # restore original compile environment + CFLAGS="$OCFLAGS" +-])dnl + fi ++])dnl + dnl # extract result ingredients of single cached result value + type=`echo $ac_cv_stacksetup_$1 | sed -e 's;:.*$;;'` + addr=`echo $ac_cv_stacksetup_$1 | sed -e 's;^.*:;;' -e 's;,.*$;;'` +-- +2.43.0 + diff --git a/package/libpthsem/Config.in b/package/libpthsem/Config.in new file mode 100644 index 00000000..c2856c52 --- /dev/null +++ b/package/libpthsem/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LIBPTHSEM + bool "libpthsem" + depends on BR2_USE_MMU # fork() + help + GNU pth is a user mode multi threading library. pthsem is an + extend version, with support for semaphores added. + + http://www.auto.tuwien.ac.at/~mkoegler/pth/ + +if BR2_PACKAGE_LIBPTHSEM + +config BR2_PACKAGE_LIBPTHSEM_COMPAT + bool "libpth compatibility" + help + This option enables the compatibility with the original + libpth library. + +endif diff --git a/package/libpthsem/libpthsem.hash b/package/libpthsem/libpthsem.hash new file mode 100644 index 00000000..9da4b882 --- /dev/null +++ b/package/libpthsem/libpthsem.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 4024cafdd5d4bce2b1778a6be5491222c3f6e7ef1e43971264c451c0012c5c01 pthsem_2.0.8.tar.gz +sha256 f1b95d3728077d1a3efe7fc17928b1953b1224f6caf9c528e30e570158b7520d COPYING diff --git a/package/libpthsem/libpthsem.mk b/package/libpthsem/libpthsem.mk new file mode 100644 index 00000000..dfe25af3 --- /dev/null +++ b/package/libpthsem/libpthsem.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# libpthsem +# +################################################################################ + +LIBPTHSEM_VERSION = 2.0.8 +LIBPTHSEM_SOURCE = pthsem_$(LIBPTHSEM_VERSION).tar.gz +LIBPTHSEM_SITE = http://www.auto.tuwien.ac.at/~mkoegler/pth +LIBPTHSEM_LICENSE = LGPL-2.1+ +LIBPTHSEM_LICENSE_FILES = COPYING +LIBPTHSEM_AUTORECONF = YES +LIBPTHSEM_INSTALL_STAGING = YES +LIBPTHSEM_CONFIG_SCRIPTS = pthsem-config + +# Force the setjmp/longjmp detection, because the test being done in +# the AC_CHECK_SJLJ macro is not cross-compilation safe: it checks the +# running kernel with 'uname -r', and checks the C library version by +# looking at /usr/include/features.h. In terms of kernel version, it +# assumes any version later than 2.2.x is fine, except that it doesn't +# recognize 4.x as a valid kernel version, recognizing such systems as +# "braindead" and therefore falling back to the 'sjljlx' value for +# ac_cv_check_sjlj. In terms of C library version, it wants +# __GLIBC_MINOR to be at least 1. Since both conditions are true for +# all Buildroot systems, we can simply force the setjmp/longjmp +# detection to ssjlj. +LIBPTHSEM_CONF_ENV += \ + ac_cv_check_sjlj=ssjlj + +ifeq ($(BR2_PACKAGE_LIBPTHSEM_COMPAT),y) +LIBPTHSEM_CONF_OPTS += --enable-compat +LIBPTHSEM_CONFIG_SCRIPTS += pth-config +else +LIBPTHSEM_CONF_OPTS += --disable-compat +endif + +$(eval $(autotools-package)) diff --git a/package/libpwquality/0001-Use-setuptools-instead-of-distutils.patch b/package/libpwquality/0001-Use-setuptools-instead-of-distutils.patch new file mode 100644 index 00000000..4d4e4c8f --- /dev/null +++ b/package/libpwquality/0001-Use-setuptools-instead-of-distutils.patch @@ -0,0 +1,78 @@ +From 7b5e0f0097faebdcc6a8b783237bbba7a983147a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= +Date: Fri, 31 Mar 2023 14:52:19 +0200 +Subject: [PATCH] Use setuptools instead of distutils + +distutils is removed from Python 3.12+: +https://peps.python.org/pep-0632/ + +Upstream: https://github.com/libpwquality/libpwquality/commit/7b5e0f0097faebdcc6a8b783237bbba7a983147a +Signed-off-by: Fabrice Fontaine +--- + libpwquality.spec.in | 11 ++--------- + python/Makefile.am | 2 +- + python/setup.py.in | 6 +++--- + 3 files changed, 6 insertions(+), 13 deletions(-) + +diff --git a/libpwquality.spec.in b/libpwquality.spec.in +index 70a6f53..0809126 100644 +--- a/libpwquality.spec.in ++++ b/libpwquality.spec.in +@@ -33,9 +33,11 @@ BuildRequires: gettext + BuildRequires: pam-devel + %if %{with python2} + BuildRequires: python2-devel ++BuildRequires: python2-setuptools + %endif + %if %{with python3} + BuildRequires: python3-devel ++BuildRequires: python3-setuptools + %endif + + URL: https://github.com/libpwquality/libpwquality/ +@@ -103,15 +105,6 @@ cp -a . %{py3dir} + pushd %{py3dir} + %endif + %if %{with python3} +-# setuptools >= 60 changes the environment to use its bundled copy of distutils +-# by default, not the Python-bundled one. To run the Python's standard library +-# distutils, the environment variable must be set. +-# Although technically setuptools is not needed for this package, if it's +-# pulled by another package, it changes the environment and consequently, +-# the build fails. This was reported in: +-# https://github.com/pypa/setuptools/issues/3143 +-export SETUPTOOLS_USE_DISTUTILS=stdlib +- + %configure \ + --with-securedir=%{_moduledir} \ + --with-pythonsitedir=%{python3_sitearch} \ +diff --git a/python/Makefile.am b/python/Makefile.am +index 1d00c0c..6e51744 100644 +--- a/python/Makefile.am ++++ b/python/Makefile.am +@@ -14,7 +14,7 @@ all-local: + CFLAGS="${CFLAGS} -fno-strict-aliasing" @PYTHONBINARY@ setup.py build --build-base py$(PYTHONREV) + + install-exec-local: +- CFLAGS="${CFLAGS} -fno-strict-aliasing" @PYTHONBINARY@ setup.py build --build-base py$(PYTHONREV) install --prefix=${DESTDIR}${prefix} ++ CFLAGS="${CFLAGS} -fno-strict-aliasing" @PYTHONBINARY@ setup.py build --build-base py$(PYTHONREV) install --root ${DESTDIR} --prefix=${prefix} + + clean-local: + rm -rf py$(PYTHONREV) +diff --git a/python/setup.py.in b/python/setup.py.in +index a741b91..f934c50 100755 +--- a/python/setup.py.in ++++ b/python/setup.py.in +@@ -6,9 +6,9 @@ + + import os + +-from distutils.core import setup, Extension +-from distutils.command.build_ext import build_ext as _build_ext +-from distutils.command.sdist import sdist as _sdist ++from setuptools import setup, Extension ++from setuptools.command.build_ext import build_ext as _build_ext ++from setuptools.command.sdist import sdist as _sdist + + def genconstants(headerfile, outputfile): + hf = open(headerfile, 'r') diff --git a/package/libpwquality/Config.in b/package/libpwquality/Config.in new file mode 100644 index 00000000..23e15157 --- /dev/null +++ b/package/libpwquality/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBPWQUALITY + bool "libpwquality" + select BR2_PACKAGE_CRACKLIB + help + This is a library for password quality checks and generation + of random passwords that pass the checks. This library uses + the cracklib and cracklib dictionaries to perform some of + the checks. + + https://github.com/libpwquality/libpwquality + +if BR2_PACKAGE_LIBPWQUALITY + +config BR2_PACKAGE_LIBPWQUALITY_TOOLS + bool "install tools" + help + Install libpwquality command line tools generating/checking + passwords. + +endif diff --git a/package/libpwquality/libpwquality.hash b/package/libpwquality/libpwquality.hash new file mode 100644 index 00000000..e64fb4bf --- /dev/null +++ b/package/libpwquality/libpwquality.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 6fcf18b75d305d99d04d2e42982ed5b787a081af2842220ed63287a2d6a10988 libpwquality-1.4.5.tar.bz2 +sha256 aa44d09f651bf99b56253187c7778a240740c767d28453ab7fdc9804c842baee COPYING diff --git a/package/libpwquality/libpwquality.mk b/package/libpwquality/libpwquality.mk new file mode 100644 index 00000000..ba62cdfb --- /dev/null +++ b/package/libpwquality/libpwquality.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# libpwquality +# +################################################################################ + +LIBPWQUALITY_VERSION = 1.4.5 +LIBPWQUALITY_SOURCE = libpwquality-$(LIBPWQUALITY_VERSION).tar.bz2 +LIBPWQUALITY_SITE = https://github.com/libpwquality/libpwquality/releases/download/libpwquality-$(LIBPWQUALITY_VERSION) +LIBPWQUALITY_LICENSE = BSD-3-Clause or GPL-2.0+ +LIBPWQUALITY_INSTALL_STAGING = YES +LIBPWQUALITY_DEPENDENCIES = cracklib +LIBPWQUALITY_LICENSE_FILES = COPYING +# We're patching python/Makefile.am +LIBPWQUALITY_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +LIBPWQUALITY_CONF_OPTS += --enable-python-bindings +LIBPWQUALITY_DEPENDENCIES += python3 host-python-setuptools +LIBPWQUALITY_MAKE_ENV += $(PKG_PYTHON_SETUPTOOLS_ENV) +else +LIBPWQUALITY_CONF_OPTS += --disable-python-bindings +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +LIBPWQUALITY_CONF_OPTS += --enable-pam --with-securedir=/lib/security +LIBPWQUALITY_DEPENDENCIES += linux-pam +else +LIBPWQUALITY_CONF_OPTS += --disable-pam +endif + +# Static link with cracklib requires -lz if zlib is enabled +ifeq ($(BR2_STATIC_LIBS)$(BR2_PACKAGE_ZLIB),yy) +LIBPWQUALITY_CONF_ENV += LIBS="-lz" +endif + +ifeq ($(BR2_PACKAGE_LIBPWQUALITY_TOOLS),) +define LIBPWQUALITY_REMOVE_TOOLS + rm -f $(TARGET_DIR)/usr/bin/pwmake + rm -f $(TARGET_DIR)/usr/bin/pwscore +endef + +LIBPWQUALITY_POST_INSTALL_TARGET_HOOKS += LIBPWQUALITY_REMOVE_TOOLS +endif + +$(eval $(autotools-package)) diff --git a/package/libqb/Config.in b/package/libqb/Config.in new file mode 100644 index 00000000..e481835d --- /dev/null +++ b/package/libqb/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBQB + bool "libqb" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBXML2 + help + Library for client-server applications + + https://github.com/ClusterLabs/libqb + +comment "libqb needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/libqb/libqb.hash b/package/libqb/libqb.hash new file mode 100644 index 00000000..f7006ff1 --- /dev/null +++ b/package/libqb/libqb.hash @@ -0,0 +1,5 @@ +# From https://github.com/ClusterLabs/libqb/releases/download/v2.0.8/libqb-2.0.8.sha256 +sha256 b42531fc20b8ac02f4c6d0a4dc49f7c4a1eef09bdb13af5f6927b7fc49522ee6 libqb-2.0.8.tar.xz + +# Locally calculated +sha256 00a89b0d18aacd4114decf79122db87bf35bddaf2bc50e383c9c9f4c263390b2 COPYING diff --git a/package/libqb/libqb.mk b/package/libqb/libqb.mk new file mode 100644 index 00000000..11b5788b --- /dev/null +++ b/package/libqb/libqb.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# libqb +# +################################################################################ + +LIBQB_VERSION = 2.0.8 +LIBQB_SOURCE = libqb-$(LIBQB_VERSION).tar.xz +LIBQB_SITE = \ + https://github.com/ClusterLabs/libqb/releases/download/v$(LIBQB_VERSION) +LIBQB_LICENSE = LGPL-2.1+ +LIBQB_LICENSE_FILES = COPYING +LIBQB_CPE_ID_VENDOR = clusterlabs +LIBQB_INSTALL_STAGING = YES +LIBQB_CONF_OPTS = --disable-tests +LIBQB_DEPENDENCIES = libxml2 + +# ac_cv_prog_cc_c99 is required for BR2_USE_WCHAR=n because the C99 test +# provided by autoconf relies on wchar_t. +LIBQB_CONF_ENV = ac_cv_prog_cc_c99=-std=gnu99 + +$(eval $(autotools-package)) diff --git a/package/libqmi/Config.in b/package/libqmi/Config.in new file mode 100644 index 00000000..f1d111b7 --- /dev/null +++ b/package/libqmi/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBQMI + bool "libqmi" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + help + libqmi is a glib-based library for talking to WWAN modems and + devices which speak the Qualcomm MSM Interface (QMI) protocol. + + http://www.freedesktop.org/wiki/Software/libqmi/ + +comment "libqmi needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libqmi/libqmi.hash b/package/libqmi/libqmi.hash new file mode 100644 index 00000000..7937f989 --- /dev/null +++ b/package/libqmi/libqmi.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB +sha256 8690d25b4d110b6df28b31da0a8bf16c7e966d31abcfeeb854f2753451e7a400 libqmi-1.34.0.tar.gz diff --git a/package/libqmi/libqmi.mk b/package/libqmi/libqmi.mk new file mode 100644 index 00000000..524333fe --- /dev/null +++ b/package/libqmi/libqmi.mk @@ -0,0 +1,65 @@ +################################################################################ +# +# libqmi +# +################################################################################ + +LIBQMI_VERSION = 1.34.0 +LIBQMI_SITE = https://gitlab.freedesktop.org/mobile-broadband/libqmi/-/archive/$(LIBQMI_VERSION) +LIBQMI_LICENSE = LGPL-2.0+ (library), GPL-2.0+ (programs) +LIBQMI_LICENSE_FILES = COPYING COPYING.LIB +LIBQMI_CPE_ID_VALID = YES +LIBQMI_INSTALL_STAGING = YES + +LIBQMI_DEPENDENCIES = libglib2 +LIBQMI_CONF_OPTS = -Dman=false -Dfuzzer=false + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +LIBQMI_DEPENDENCIES += gobject-introspection +LIBQMI_CONF_OPTS += -Dintrospection=true +else +LIBQMI_CONF_OPTS += -Dintrospection=false +endif + +# if libgudev available, request udev support for a better +# qmi-firmware-update experience +ifeq ($(BR2_PACKAGE_LIBGUDEV),y) +LIBQMI_DEPENDENCIES += libgudev +LIBQMI_CONF_OPTS += -Dudev=true +else +LIBQMI_CONF_OPTS += -Dudev=false +endif + +# if libmbim available, request QMI-over-MBIM support +ifeq ($(BR2_PACKAGE_LIBMBIM),y) +LIBQMI_DEPENDENCIES += libmbim +LIBQMI_CONF_OPTS += -Dmbim_qmux=true +else +LIBQMI_CONF_OPTS += -Dmbim_qmux=false +endif + +# if libqrtr-glib available, enable support for QMI over QRTR +ifeq ($(BR2_PACKAGE_LIBQRTR_GLIB),y) +LIBQMI_DEPENDENCIES += libqrtr-glib +LIBQMI_CONF_OPTS += -Dqrtr=true +else +LIBQMI_CONF_OPTS += -Dqrtr=false +endif + +# if ModemManager available, enable MM runtime check in +# qmi-firmware-update (note that we don't need to build-depend on +# anything else) +ifeq ($(BR2_PACKAGE_MODEM_MANAGER),y) +LIBQMI_CONF_OPTS += -Dmm_runtime_check=true +else +LIBQMI_CONF_OPTS += -Dmm_runtime_check=false +endif + +ifeq ($(BR2_PACKAGE_BASH_COMPLETION),y) +LIBQMI_DEPENDENCIES += bash-completion +LIBQMI_CONF_OPTS += -Dbash_completion=true +else +LIBQMI_CONF_OPTS += -Dbash_completion=false +endif + +$(eval $(meson-package)) diff --git a/package/libqrencode/Config.in b/package/libqrencode/Config.in new file mode 100644 index 00000000..b8666262 --- /dev/null +++ b/package/libqrencode/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBQRENCODE + bool "libqrencode" + help + libqrencode is a C library for encoding data in a QR Code + symbol, a kind of 2D symbology that can be scanned by handy + terminals such as a mobile phone with CCD. The capacity of + QR Code is up to 7000 digits or 4000 characters, and is + highly robust. + + http://fukuchi.org/works/qrencode/index.html + +if BR2_PACKAGE_LIBQRENCODE + +config BR2_PACKAGE_LIBQRENCODE_TOOLS + bool "libqrencode tools" + select BR2_PACKAGE_LIBPNG + help + Build command-line tools + +endif #BR2_PACKAGE_LIBQRENCODE diff --git a/package/libqrencode/libqrencode.hash b/package/libqrencode/libqrencode.hash new file mode 100644 index 00000000..ffcc5373 --- /dev/null +++ b/package/libqrencode/libqrencode.hash @@ -0,0 +1,5 @@ +# From http://fukuchi.org/works/qrencode/qrencode-4.1.1.tar.gz.sha +sha512 209bb656ae3f391b03c7b3ceb03e34f7320b0105babf48b619e7a299528b8828449e0e7696f0b5db0d99170a81709d0518e34835229a748701e7df784e58a9ce qrencode-4.1.1.tar.gz + +# Hash for license file: +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING diff --git a/package/libqrencode/libqrencode.mk b/package/libqrencode/libqrencode.mk new file mode 100644 index 00000000..0062a96a --- /dev/null +++ b/package/libqrencode/libqrencode.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# libqrencode +# +################################################################################ + +LIBQRENCODE_VERSION = 4.1.1 +LIBQRENCODE_SOURCE = qrencode-$(LIBQRENCODE_VERSION).tar.gz +LIBQRENCODE_SITE = http://fukuchi.org/works/qrencode +LIBQRENCODE_DEPENDENCIES = host-pkgconf +LIBQRENCODE_INSTALL_STAGING = YES +LIBQRENCODE_LICENSE = LGPL-2.1+ +LIBQRENCODE_LICENSE_FILES = COPYING + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +LIBQRENCODE_CONF_ENV += LIBS='-pthread' +else +LIBQRENCODE_CONF_OPTS += --disable-thread-safety +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +LIBQRENCODE_CONF_OPTS += --with-png +LIBQRENCODE_DEPENDENCIES += libpng +else +LIBQRENCODE_CONF_OPTS += --without-png +endif + +ifeq ($(BR2_PACKAGE_LIBQRENCODE_TOOLS),y) +LIBQRENCODE_CONF_OPTS += --with-tools=yes +else +LIBQRENCODE_CONF_OPTS += --with-tools=no +endif + +$(eval $(autotools-package)) diff --git a/package/libqrtr-glib/0001-src-libqrtr-lib-meson.build-fix-static-build.patch b/package/libqrtr-glib/0001-src-libqrtr-lib-meson.build-fix-static-build.patch new file mode 100644 index 00000000..8c0db7be --- /dev/null +++ b/package/libqrtr-glib/0001-src-libqrtr-lib-meson.build-fix-static-build.patch @@ -0,0 +1,36 @@ +From dd9d68259c1fb79bcf40fcdf6aa1e6026edec9b2 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 9 Feb 2024 21:16:39 +0100 +Subject: [PATCH] src/libqrtr-lib/meson.build: fix static build + +Replace shared_library by library to avoid the following static build +failure: + +[5/5] Linking target src/libqrtr-glib/libqrtr-glib.so.0.0.0 +FAILED: src/libqrtr-glib/libqrtr-glib.so.0.0.0 + +Fixes: + - http://autobuild.buildroot.org/results/e0442e97279a07f33a14ec52840f98b7ec0fe32d + +Signed-off-by: Fabrice Fontaine +Upstream: https://gitlab.freedesktop.org/mobile-broadband/libqrtr-glib/-/merge_requests/24 +--- + src/libqrtr-glib/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/libqrtr-glib/meson.build b/src/libqrtr-glib/meson.build +index bbdd869..0cddcc7 100644 +--- a/src/libqrtr-glib/meson.build ++++ b/src/libqrtr-glib/meson.build +@@ -39,7 +39,7 @@ c_flags = [ + '-DLIBEXEC_PATH="@0@"'.format(qrtr_prefix / qrtr_libexecdir), + ] + +-libqrtr_glib = shared_library( ++libqrtr_glib = library( + libname, + version: qrtr_glib_version, + sources: sources + [version_header], +-- +2.43.0 + diff --git a/package/libqrtr-glib/Config.in b/package/libqrtr-glib/Config.in new file mode 100644 index 00000000..ad4fd776 --- /dev/null +++ b/package/libqrtr-glib/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBQRTR_GLIB + bool "libqrtr-glib" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 # da7653f0faab + select BR2_PACKAGE_LIBGLIB2 + help + Qualcomm IPC Router protocol helper library. + Optional dependency for libqmi >= 1.28.0. + + https://www.freedesktop.org/software/libqmi/libqrtr-glib/latest/ + +comment "libqrtr-glib needs a toolchain w/ wchar, threads, headers >= 4.15" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 diff --git a/package/libqrtr-glib/libqrtr-glib.hash b/package/libqrtr-glib/libqrtr-glib.hash new file mode 100644 index 00000000..38543f7d --- /dev/null +++ b/package/libqrtr-glib/libqrtr-glib.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 c5cdf5ea91cbd2cf2758b2896064c7b1dfe7156063267df905f957ac69b6b763 libqrtr-glib-1.2.2.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSES/LGPL-2.1-or-later.txt diff --git a/package/libqrtr-glib/libqrtr-glib.mk b/package/libqrtr-glib/libqrtr-glib.mk new file mode 100644 index 00000000..c3df76dc --- /dev/null +++ b/package/libqrtr-glib/libqrtr-glib.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# libqrtr-glib +# +################################################################################ + +LIBQRTR_GLIB_VERSION = 1.2.2 +LIBQRTR_GLIB_SITE = https://gitlab.freedesktop.org/mobile-broadband/libqrtr-glib/-/archive/$(LIBQRTR_GLIB_VERSION) +LIBQRTR_GLIB_LICENSE = LGPL-2.1+ +LIBQRTR_GLIB_LICENSE_FILES = LICENSES/LGPL-2.1-or-later.txt +LIBQRTR_GLIB_INSTALL_STAGING = YES +LIBQRTR_GLIB_DEPENDENCIES = libglib2 + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +LIBQRTR_GLIB_CONF_OPTS += -Dintrospection=true +LIBQRTR_GLIB_DEPENDENCIES += gobject-introspection +else +LIBQRTR_GLIB_CONF_OPTS += -Dintrospection=false +endif + +# disable gtkdocize +LIBQRTR_GLIB_CONF_OPTS += -Dgtk_doc=false + +$(eval $(meson-package)) diff --git a/package/libraw/Config.in b/package/libraw/Config.in new file mode 100644 index 00000000..631123c2 --- /dev/null +++ b/package/libraw/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBRAW + bool "libraw" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_INSTALL_LIBSTDCPP + help + libraw is a raw image manipulation library + + http://www.libraw.org/ + +comment "libraw needs a toolchain w/ C++" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/libraw/libraw.hash b/package/libraw/libraw.hash new file mode 100644 index 00000000..838c598d --- /dev/null +++ b/package/libraw/libraw.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 fe7288013206854baf6e4417d0fb63ba4ed7227bf36fff021992671c2dd34b03 LibRaw-0.21.2.tar.gz +sha256 eea173a556abac0370461e57e12aab266894ea6be3874c2be05fd87871f75449 LICENSE.LGPL +sha256 0e3098d2d54a12434715f6679ea408d57da5e8d613c385c58ecc6fe5d30cc81f LICENSE.CDDL +sha256 7d6650cef6cf892abe95e55a6bda1e1c42f221fd411b807deb2fc0b805b868d4 README.md diff --git a/package/libraw/libraw.mk b/package/libraw/libraw.mk new file mode 100644 index 00000000..211b67f9 --- /dev/null +++ b/package/libraw/libraw.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# libraw +# +################################################################################ + +LIBRAW_VERSION = 0.21.2 +LIBRAW_SOURCE = LibRaw-$(LIBRAW_VERSION).tar.gz +LIBRAW_SITE = http://www.libraw.org/data +LIBRAW_INSTALL_STAGING = YES +LIBRAW_CONF_OPTS += \ + --disable-examples \ + --disable-openmp +LIBRAW_LICENSE = LGPL-2.1 or CDDL-1.0 +LIBRAW_LICENSE_FILES = LICENSE.LGPL LICENSE.CDDL README.md +LIBRAW_CPE_ID_VENDOR = libraw +LIBRAW_DEPENDENCIES = host-pkgconf +LIBRAW_CXXFLAGS = $(TARGET_CXXFLAGS) +LIBRAW_CONF_ENV = CXXFLAGS="$(LIBRAW_CXXFLAGS)" + +ifeq ($(BR2_PACKAGE_JASPER),y) +LIBRAW_CONF_OPTS += --enable-jasper +LIBRAW_DEPENDENCIES += jasper +# glibc prior to 2.18 only defines constants such as SIZE_MAX or +# INT_FAST32_MAX for C++ code if __STDC_LIMIT_MACROS is defined +LIBRAW_CXXFLAGS += -D__STDC_LIMIT_MACROS +else +LIBRAW_CONF_OPTS += --disable-jasper +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +LIBRAW_CONF_OPTS += --enable-jpeg +LIBRAW_DEPENDENCIES += jpeg +else +LIBRAW_CONF_OPTS += --disable-jpeg +endif + +ifeq ($(BR2_PACKAGE_LCMS2),y) +LIBRAW_CONF_OPTS += --enable-lcms +LIBRAW_DEPENDENCIES += lcms2 host-pkgconf +else +LIBRAW_CONF_OPTS += --disable-lcms +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LIBRAW_CONF_OPTS += --enable-zlib +LIBRAW_DEPENDENCIES += zlib +else +LIBRAW_CONF_OPTS += --disable-zlib +endif + +$(eval $(autotools-package)) diff --git a/package/libraw1394/Config.in b/package/libraw1394/Config.in new file mode 100644 index 00000000..7a64959a --- /dev/null +++ b/package/libraw1394/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBRAW1394 + bool "libraw1394" + help + libraw1394 provides direct access to the IEEE 1394 bus through + the Linux 1394 subsystem's raw1394 user space interface. + + http://sourceforge.net/projects/libraw1394/ diff --git a/package/libraw1394/libraw1394.hash b/package/libraw1394/libraw1394.hash new file mode 100644 index 00000000..a69686f5 --- /dev/null +++ b/package/libraw1394/libraw1394.hash @@ -0,0 +1,4 @@ +# From https://www.kernel.org/pub/linux/libs/ieee1394/sha256sums.asc +sha256 03ccc69761d22c7deb1127fc301010dd13e70e44bb7134b8ff0d07590259a55e libraw1394-2.1.2.tar.xz +# Locally computed +sha256 5bbcbb737e60fe9deba08ecbd00920cfcc3403ba2e534c64fdeea49d6bb87509 COPYING.LIB diff --git a/package/libraw1394/libraw1394.mk b/package/libraw1394/libraw1394.mk new file mode 100644 index 00000000..7aa4a3ae --- /dev/null +++ b/package/libraw1394/libraw1394.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libraw1394 +# +################################################################################ + +LIBRAW1394_VERSION = 2.1.2 +LIBRAW1394_SOURCE = libraw1394-$(LIBRAW1394_VERSION).tar.xz +LIBRAW1394_SITE = $(BR2_KERNEL_MIRROR)/linux/libs/ieee1394 +LIBRAW1394_INSTALL_STAGING = YES +LIBRAW1394_LICENSE = LGPL-2.1+ +LIBRAW1394_LICENSE_FILES = COPYING.LIB + +$(eval $(autotools-package)) diff --git a/package/librelp/Config.in b/package/librelp/Config.in new file mode 100644 index 00000000..f1744bb6 --- /dev/null +++ b/package/librelp/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBRELP + bool "librelp" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBOPENSSL_ENGINES if BR2_PACKAGE_LIBOPENSSL + help + Reliable Event Logging Protocol library + + https://www.rsyslog.com/librelp/ + +comment "librelp needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/librelp/librelp.hash b/package/librelp/librelp.hash new file mode 100644 index 00000000..8dcc5025 --- /dev/null +++ b/package/librelp/librelp.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 7719b5f31e07cbb9872289ad32b787c613b5355d407982a0a2c4d69938457fd6 librelp-1.11.0.tar.gz +sha256 1ed76f935566e93e3c3c0d9f8fad22eb6d8bbe406e2eb8470a4a2764d9fd9685 COPYING diff --git a/package/librelp/librelp.mk b/package/librelp/librelp.mk new file mode 100644 index 00000000..cf2e391f --- /dev/null +++ b/package/librelp/librelp.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# librelp +# +################################################################################ + +LIBRELP_VERSION = 1.11.0 +LIBRELP_SITE = http://download.rsyslog.com/librelp +LIBRELP_LICENSE = GPL-3.0+ +LIBRELP_LICENSE_FILES = COPYING +LIBRELP_CPE_ID_VENDOR = rsyslog +LIBRELP_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +LIBRELP_DEPENDENCIES += gnutls host-pkgconf +LIBRELP_CONF_OPTS += --enable-tls +else +LIBRELP_CONF_OPTS += --disable-tls +endif + +ifeq ($(BR2_PACKAGE_HAS_OPENSSL),y) +LIBRELP_DEPENDENCIES += openssl host-pkgconf +LIBRELP_CONF_OPTS += --enable-tls-openssl +else +LIBRELP_CONF_OPTS += --disable-tls-openssl +endif + +$(eval $(autotools-package)) diff --git a/package/libreplaygain/Config.in b/package/libreplaygain/Config.in new file mode 100644 index 00000000..d0045b2f --- /dev/null +++ b/package/libreplaygain/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBREPLAYGAIN + bool "libreplaygain" + help + Replay Gain library from Musepack + + http://www.musepack.net/ diff --git a/package/libreplaygain/libreplaygain.hash b/package/libreplaygain/libreplaygain.hash new file mode 100644 index 00000000..0f7bc987 --- /dev/null +++ b/package/libreplaygain/libreplaygain.hash @@ -0,0 +1,6 @@ +# From https://www.musepack.net/index.php?pg=src +md5 e27b3b1249b7fbae92d656d9e3d26633 libreplaygain_r475.tar.gz +# Calculated based on the hash above +sha256 8258bf785547ac2cda43bb195e07522f0a3682f55abe97753c974609ec232482 libreplaygain_r475.tar.gz +# Locally computed +sha256 511e7b63ce6530b93932d19da3471a6672586339bc131b2699ad4e9b0ee6c9bb src/gain_analysis.c diff --git a/package/libreplaygain/libreplaygain.mk b/package/libreplaygain/libreplaygain.mk new file mode 100644 index 00000000..129eb90d --- /dev/null +++ b/package/libreplaygain/libreplaygain.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libreplaygain +# +################################################################################ + +LIBREPLAYGAIN_VERSION = 475 +LIBREPLAYGAIN_SITE = http://files.musepack.net/source +LIBREPLAYGAIN_SOURCE = libreplaygain_r$(LIBREPLAYGAIN_VERSION).tar.gz +# upstream doesn't ship configure +LIBREPLAYGAIN_AUTORECONF = YES +LIBREPLAYGAIN_INSTALL_STAGING = YES +LIBREPLAYGAIN_LICENSE = LGPL-2.1+ +LIBREPLAYGAIN_LICENSE_FILES = src/gain_analysis.c + +$(eval $(autotools-package)) diff --git a/package/libressl/0001-always-expose-SSL_OP_NO_TLSv1_3.patch b/package/libressl/0001-always-expose-SSL_OP_NO_TLSv1_3.patch new file mode 100644 index 00000000..48f3fa16 --- /dev/null +++ b/package/libressl/0001-always-expose-SSL_OP_NO_TLSv1_3.patch @@ -0,0 +1,37 @@ +always expose SSL_OP_NO_TLSv1_3 + +like in OpenSSL, see https://github.com/openssl/openssl/blob/master/include/openssl/ssl.h.in#L399 + +like SSL_OP_NO_DTLSv1_2, see commit "Expose various DTLSv1.2 specific functions and defines" + +this change fixes the compilation of vsftpd 3.0.4 & 3.0.5, which fails with the following error: +``` +ssl.c: In function 'ssl_init': +ssl.c:98:18: error: 'SSL_OP_NO_TLSv1_3' undeclared (first use in this function); did you mean 'SSL_OP_NO_TLSv1_1'? +``` + +Signed-off-by: Francois Perrad +Fetched from: https://github.com/libressl-portable/openbsd/pull/124 +--- + include/openssl/ssl.h | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h +index 46f24b2ea..4048a6e63 100644 +--- a/include/openssl/ssl.h ++++ b/include/openssl/ssl.h +@@ -412,11 +412,7 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, + #define SSL_OP_NO_TLSv1 0x04000000L + #define SSL_OP_NO_TLSv1_2 0x08000000L + #define SSL_OP_NO_TLSv1_1 0x10000000L +- +-#if defined(LIBRESSL_HAS_TLS1_3) || defined(LIBRESSL_INTERNAL) + #define SSL_OP_NO_TLSv1_3 0x20000000L +-#endif +- + #define SSL_OP_NO_DTLSv1 0x40000000L + #define SSL_OP_NO_DTLSv1_2 0x80000000L + +-- +2.30.2 + diff --git a/package/libressl/0002-CMakeLists-txt-Fix-HOST-variable-for-ppc64.patch b/package/libressl/0002-CMakeLists-txt-Fix-HOST-variable-for-ppc64.patch new file mode 100644 index 00000000..8da8feda --- /dev/null +++ b/package/libressl/0002-CMakeLists-txt-Fix-HOST-variable-for-ppc64.patch @@ -0,0 +1,26 @@ +From e6c7de3f03c51fbdcf5ad88bf12fe9e128521f0d Mon Sep 17 00:00:00 2001 +From: OPNA2608 +Date: Fri, 19 Jul 2024 11:41:46 +0200 +Subject: [PATCH] CMakeLists.txt: Fix HOST variable for ppc64 + +The code here defined HOST_PPC64, but the rest of the build system expects HOST_POWERPC64. + +Upstream: https://github.com/libressl/portable/commit/e6c7de3f03c51fbdcf5ad88bf12fe9e128521f0d +Signed-off-by: Fabrice Fontaine +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index c496ad97b5..670aa9a1a0 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -373,7 +373,7 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips") + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "powerpc") + set(HOST_POWERPC true) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64") +- set(HOST_PPC64 true) ++ set(HOST_POWERPC64 true) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "riscv64") + set(HOST_RISCV64 true) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "sparc64") diff --git a/package/libressl/Config.in b/package/libressl/Config.in new file mode 100644 index 00000000..600829cb --- /dev/null +++ b/package/libressl/Config.in @@ -0,0 +1,9 @@ +if BR2_PACKAGE_LIBRESSL + +config BR2_PACKAGE_LIBRESSL_BIN + bool "openssl binary" + help + Install the openssl binary to the target file system. This is + a command line tool for doing various cryptographic stuff. + +endif diff --git a/package/libressl/libressl.hash b/package/libressl/libressl.hash new file mode 100644 index 00000000..692dce28 --- /dev/null +++ b/package/libressl/libressl.hash @@ -0,0 +1,4 @@ +# From https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/SHA256 +sha256 7b031dac64a59eb6ee3304f7ffb75dad33ab8c9d279c847f92c89fb846068f97 libressl-3.9.2.tar.gz +# Locally computed +sha256 5c63613f008f16a9c0025c096bbd736cecf720494d121b5c5203e0ec6e5955b1 COPYING diff --git a/package/libressl/libressl.mk b/package/libressl/libressl.mk new file mode 100644 index 00000000..7e92ea3a --- /dev/null +++ b/package/libressl/libressl.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# libressl +# +################################################################################ + +LIBRESSL_VERSION = 3.9.2 +LIBRESSL_SITE = https://ftp.openbsd.org/pub/OpenBSD/LibreSSL +LIBRESSL_LICENSE = ISC (new additions), OpenSSL or SSLeay (original OpenSSL code) +LIBRESSL_LICENSE_FILES = COPYING +LIBRESSL_CPE_ID_VENDOR = openbsd +LIBRESSL_INSTALL_STAGING = YES +LIBRESSL_CONF_OPTS = -DLIBRESSL_TESTS=OFF -DOPENSSLDIR="/etc/ssl" + +# Otherwise fails to build with undefined reference to +# `bn_mul_add_words' +ifeq ($(BR2_powerpc)$(BR2_mips64)$(BR2_mips64el),y) +LIBRESSL_CONF_OPTS += -DENABLE_ASM=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBRESSL_BIN),) +define LIBRESSL_REMOVE_BIN + $(RM) -f $(TARGET_DIR)/usr/bin/openssl +endef +LIBRESSL_POST_INSTALL_TARGET_HOOKS += LIBRESSL_REMOVE_BIN +endif + +$(eval $(cmake-package)) diff --git a/package/libroxml/0001-src-roxml_mem.h-add-missing-extern.patch b/package/libroxml/0001-src-roxml_mem.h-add-missing-extern.patch new file mode 100644 index 00000000..6f63d7b5 --- /dev/null +++ b/package/libroxml/0001-src-roxml_mem.h-add-missing-extern.patch @@ -0,0 +1,37 @@ +From b16f6813011519ce247b0af9a4b78486daefad54 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 26 Aug 2020 22:54:50 +0200 +Subject: [PATCH] src/roxml_mem.h: add missing extern + +Add missing extern to head_cell otherwise the build with gcc 10 (with +-fno-common being default) will fail on: + +/bin/bash ./libtool --tag=CC --mode=link /home/peko/autobuild/instance-0/output-1/host/bin/arm-buildroot-linux-gnueabihf-gcc -DIGNORE_EMPTY_TEXT_NODES -DCONFIG_XML_CONTENT -DCONFIG_XML_NAV -DCONFIG_XML_BUFF -DCONFIG_XML_COMMIT -DCONFIG_XML_EDIT -DCONFIG_XML_FILE -DCONFIG_XML_XPATH -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -pthread -version-info 0:0:0 -o libroxml.la -rpath /usr/lib src/libroxml_la-roxml_core.lo src/libroxml_la-roxml_parser.lo src/libroxml_la-roxml_buff.lo src/libroxml_la-roxml_nav.lo src/libroxml_la-roxml_content.lo src/libroxml_la-roxml_mem.lo src/libroxml_la-roxml_stub.lo src/libroxml_la-roxml_commit.lo src/libroxml_la-roxml_edit.lo src/libroxml_la-roxml_file.lo src/libroxml_la-roxml_xpath.lo -pthread +libtool: link: /home/peko/autobuild/instance-0/output-1/host/bin/arm-buildroot-linux-gnueabihf-gcc -shared -fPIC -DPIC src/.libs/libroxml_la-roxml_core.o src/.libs/libroxml_la-roxml_parser.o src/.libs/libroxml_la-roxml_buff.o src/.libs/libroxml_la-roxml_nav.o src/.libs/libroxml_la-roxml_content.o src/.libs/libroxml_la-roxml_mem.o src/.libs/libroxml_la-roxml_stub.o src/.libs/libroxml_la-roxml_commit.o src/.libs/libroxml_la-roxml_edit.o src/.libs/libroxml_la-roxml_file.o src/.libs/libroxml_la-roxml_xpath.o -O2 -pthread -pthread -pthread -Wl,-soname -Wl,libroxml.so.0 -o .libs/libroxml.so.0.0.0 +/home/peko/autobuild/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: src/.libs/libroxml_la-roxml_mem.o:(.data+0x0): multiple definition of `head_cell'; src/.libs/libroxml_la-roxml_content.o:(.bss+0x0): first defined here + +Fixes: + - http://autobuild.buildroot.org/results/b6ac3664d61ad826515b57c4d057b6f001b5167d + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/blunderer/libroxml/pull/79] +--- + src/roxml_mem.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/roxml_mem.h b/src/roxml_mem.h +index aff6137..34a5070 100644 +--- a/src/roxml_mem.h ++++ b/src/roxml_mem.h +@@ -14,7 +14,7 @@ + + #include "roxml_internal.h" + +-memory_cell_t head_cell; ++extern memory_cell_t head_cell; + + /** \brief alloc memory function + * +-- +2.28.0 + diff --git a/package/libroxml/Config.in b/package/libroxml/Config.in new file mode 100644 index 00000000..2fcf2f2a --- /dev/null +++ b/package/libroxml/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBROXML + bool "roxml" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + libroxml is a light and powerful xml parsing library with + xpath handling. Roxml is a binary using libroxml to explore + xml file from shell scripts. + + http://www.libroxml.net + +comment "libroxml needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libroxml/libroxml.hash b/package/libroxml/libroxml.hash new file mode 100644 index 00000000..547f82b6 --- /dev/null +++ b/package/libroxml/libroxml.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 ed6d68d1bceabf98e5e76907411e2e4d93b2dbd48479ab41dede851f59dad6a3 libroxml-3.0.2.tar.gz +sha256 fe11466c265ad0a6c3896ea113af9403c0a8372b1fdd78712db64f0f1bac6387 License.txt diff --git a/package/libroxml/libroxml.mk b/package/libroxml/libroxml.mk new file mode 100644 index 00000000..7e2488ae --- /dev/null +++ b/package/libroxml/libroxml.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# libroxml +# +################################################################################ + +LIBROXML_VERSION = 3.0.2 +LIBROXML_SITE = http://download.libroxml.net/pool/v3.x +LIBROXML_INSTALL_STAGING = YES +LIBROXML_LICENSE = LGPL-2.1+ with static link exception +LIBROXML_LICENSE_FILES = License.txt + +LIBROXML_CONF_OPTS = --disable-silent-rules + +# libroxml forgets to compile/link with -pthread, even though it uses +# thread functions breaking static linking +LIBROXML_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -pthread" LIBS="-pthread" + +$(eval $(autotools-package)) diff --git a/package/librsvg/0001-gdk-pixbuf-loader-Makefile.am-set-GDK_PIXBUF_MODULED.patch b/package/librsvg/0001-gdk-pixbuf-loader-Makefile.am-set-GDK_PIXBUF_MODULED.patch new file mode 100644 index 00000000..761ff926 --- /dev/null +++ b/package/librsvg/0001-gdk-pixbuf-loader-Makefile.am-set-GDK_PIXBUF_MODULED.patch @@ -0,0 +1,41 @@ +From 2c472bf55289ccbd7f305aa3e98d6fd70be4e3ab Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 19 Feb 2022 12:02:10 +0100 +Subject: [PATCH] gdk-pixbuf-loader/Makefile.am: set GDK_PIXBUF_MODULEDIR + +Set GDK_PIXBUF_MODULEDIR to gdk_pixbuf_moduledir before calling +gdk-pixbuf-query-loaders to build a correct gdk_pixbuf_cache_file and +gdk-pixbuf.loaders on 'exotic' systems + +Signed-off-by: Fabrice Fontaine +[Upstream status: +https://gitlab.gnome.org/GNOME/librsvg/-/merge_requests/668] +--- + gdk-pixbuf-loader/Makefile.am | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/gdk-pixbuf-loader/Makefile.am b/gdk-pixbuf-loader/Makefile.am +index c3493736..de1f9641 100644 +--- a/gdk-pixbuf-loader/Makefile.am ++++ b/gdk-pixbuf-loader/Makefile.am +@@ -49,7 +49,7 @@ rsvg_loader_LDADD = \ + EXTRA_rsvg_loader_DEPENDENCIES = libpixbufloader-svg.la gdk-pixbuf-loaders + + gdk-pixbuf-loaders: Makefile +- $(AM_V_GEN) ( $(GDK_PIXBUF_QUERYLOADERS) ./libpixbufloader-svg.la && $(GDK_PIXBUF_QUERYLOADERS)) > gdk-pixbuf.loaders 2>/dev/null ++ $(AM_V_GEN) ( $(GDK_PIXBUF_QUERYLOADERS) ./libpixbufloader-svg.la && GDK_PIXBUF_MODULEDIR=$(gdk_pixbuf_moduledir) $(GDK_PIXBUF_QUERYLOADERS)) > gdk-pixbuf.loaders 2>/dev/null + + if CROSS_COMPILING + RUN_QUERY_LOADER_TEST=false +@@ -68,7 +68,7 @@ endif + install-data-hook: + @if $(RUN_QUERY_LOADER_TEST) ; then \ + $(mkinstalldirs) $(DESTDIR)$(gdk_pixbuf_binarydir) ; \ +- $(GDK_PIXBUF_QUERYLOADERS) > $(DESTDIR)$(gdk_pixbuf_cache_file) ; \ ++ GDK_PIXBUF_MODULEDIR=$(gdk_pixbuf_moduledir) $(GDK_PIXBUF_QUERYLOADERS) > $(DESTDIR)$(gdk_pixbuf_cache_file) ; \ + else \ + echo "***" ; \ + echo "*** Warning: loaders.cache not built" ; \ +-- +2.34.1 + diff --git a/package/librsvg/Config.in b/package/librsvg/Config.in new file mode 100644 index 00000000..d74359df --- /dev/null +++ b/package/librsvg/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_LIBRSVG + bool "librsvg" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + depends on BR2_INSTALL_LIBSTDCPP # pango + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # pango -> harfbuzz + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_CAIRO_PNG + select BR2_PACKAGE_CAIRO_ZLIB + select BR2_PACKAGE_GDK_PIXBUF + select BR2_PACKAGE_HOST_RUSTC + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_PANGO + help + The rsvg library is an efficient renderer for Scalable + Vector Graphics (SVG) pictures. + + https://wiki.gnome.org/Projects/LibRsvg + +comment "librsvg needs a toolchain w/ wchar, threads, C++, gcc >= 4.9" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_INSTALL_LIBSTDCPP diff --git a/package/librsvg/librsvg.hash b/package/librsvg/librsvg.hash new file mode 100644 index 00000000..4eab8cdf --- /dev/null +++ b/package/librsvg/librsvg.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/librsvg/2.50/librsvg-2.50.9.sha256sum +sha256 518905fffa879b6c7f3db1aae961cf31333e0eadc7b4cdd4f531707868c54b53 librsvg-2.50.9.tar.xz + +# Locally computed +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB diff --git a/package/librsvg/librsvg.mk b/package/librsvg/librsvg.mk new file mode 100644 index 00000000..81a66678 --- /dev/null +++ b/package/librsvg/librsvg.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# librsvg +# +################################################################################ + +LIBRSVG_VERSION_MAJOR = 2.50 +LIBRSVG_VERSION = $(LIBRSVG_VERSION_MAJOR).9 +LIBRSVG_SITE = https://download.gnome.org/sources/librsvg/$(LIBRSVG_VERSION_MAJOR) +LIBRSVG_SOURCE = librsvg-$(LIBRSVG_VERSION).tar.xz +LIBRSVG_INSTALL_STAGING = YES +LIBRSVG_CONF_ENV = \ + LIBS=$(TARGET_NLS_LIBS) \ + RUST_TARGET=$(RUSTC_TARGET_NAME) +LIBRSVG_CONF_OPTS = --disable-pixbuf-loader --disable-tools +HOST_LIBRSVG_CONF_OPTS = --enable-introspection=no +LIBRSVG_DEPENDENCIES = cairo host-gdk-pixbuf gdk-pixbuf host-rustc libglib2 libxml2 pango \ + $(TARGET_NLS_DEPENDENCIES) +HOST_LIBRSVG_DEPENDENCIES = host-cairo host-gdk-pixbuf host-libglib2 host-libxml2 host-pango host-rustc +LIBRSVG_LICENSE = LGPL-2.1+ +LIBRSVG_LICENSE_FILES = COPYING.LIB +LIBRSVG_CPE_ID_VENDOR = gnome +# We're patching gdk-pixbuf-loader/Makefile.am +LIBRSVG_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +LIBRSVG_CONF_OPTS += --enable-introspection +LIBRSVG_DEPENDENCIES += gobject-introspection +else +LIBRSVG_CONF_OPTS += --disable-introspection +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/librsync/Config.in b/package/librsync/Config.in new file mode 100644 index 00000000..652f0cb2 --- /dev/null +++ b/package/librsync/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBRSYNC + bool "librsync" + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_POPT + help + librsync implements the rolling-checksum algorithm of + remote file synchronization that was popularized by the + rsync utility and is used in rproxy. + + https://github.com/librsync/librsync diff --git a/package/librsync/librsync.hash b/package/librsync/librsync.hash new file mode 100644 index 00000000..7fc7395a --- /dev/null +++ b/package/librsync/librsync.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 a0dedf9fff66d8e29e7c25d23c1f42beda2089fb4eac1b36e6acd8a29edfbd1f librsync-2.3.4.tar.gz +sha256 5bbcbb737e60fe9deba08ecbd00920cfcc3403ba2e534c64fdeea49d6bb87509 COPYING diff --git a/package/librsync/librsync.mk b/package/librsync/librsync.mk new file mode 100644 index 00000000..26c003be --- /dev/null +++ b/package/librsync/librsync.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# librsync +# +################################################################################ + +LIBRSYNC_VERSION = 2.3.4 +LIBRSYNC_SITE = https://github.com/librsync/librsync/releases/download/v$(LIBRSYNC_VERSION) +LIBRSYNC_LICENSE = LGPL-2.1+ +LIBRSYNC_LICENSE_FILES = COPYING +LIBRSYNC_CPE_ID_VALID = YES +LIBRSYNC_INSTALL_STAGING = YES +LIBRSYNC_DEPENDENCIES = host-pkgconf zlib bzip2 popt + +$(eval $(cmake-package)) diff --git a/package/librtas/Config.in b/package/librtas/Config.in new file mode 100644 index 00000000..2f8219ee --- /dev/null +++ b/package/librtas/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBRTAS + bool "librtas" + depends on BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + help + The librtas package provides an interface for Run-Time + Abstraction Services (RTAS) calls on PAPR platforms. + The libraries allow users to examine and manipulate hardware, + and parse RTAS events. + + http://librtas.sourceforge.net/ diff --git a/package/librtas/librtas.hash b/package/librtas/librtas.hash new file mode 100644 index 00000000..6f8628cc --- /dev/null +++ b/package/librtas/librtas.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 b4928b300350c12618563a051be01189275853fd8eacaac509c9aa1460991ec4 librtas-2.0.5.tar.gz +sha256 592987e8510228d546540b84a22444bde98e48d03078d3b2eefcd889bec5ce8c COPYING.LESSER diff --git a/package/librtas/librtas.mk b/package/librtas/librtas.mk new file mode 100644 index 00000000..804d6de1 --- /dev/null +++ b/package/librtas/librtas.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# librtas +# +################################################################################ + +LIBRTAS_VERSION = 2.0.5 +LIBRTAS_SITE = $(call github,ibm-power-utilities,librtas,v$(LIBRTAS_VERSION)) +LIBRTAS_LICENSE = LGPL-2.1+ +LIBRTAS_LICENSE_FILES = COPYING.LESSER +LIBRTAS_INSTALL_STAGING = YES +# From git +LIBRTAS_AUTORECONF = YES +LIBRTAS_DEPENDENCIES = host-pkgconf + +$(eval $(autotools-package)) diff --git a/package/librtlsdr/0001-Makefile.am-respect-DESTDIR-with-install-udev-rules.patch b/package/librtlsdr/0001-Makefile.am-respect-DESTDIR-with-install-udev-rules.patch new file mode 100644 index 00000000..1aec8166 --- /dev/null +++ b/package/librtlsdr/0001-Makefile.am-respect-DESTDIR-with-install-udev-rules.patch @@ -0,0 +1,31 @@ +From 082c9e4cb6c8f96aa59dd3d03b0288752518fad7 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 19 Feb 2022 22:29:45 +0100 +Subject: [PATCH] Makefile.am: respect $(DESTDIR) with install-udev-rules + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/steve-m/librtlsdr/pull/67] +--- + Makefile.am | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 65b2f21..6b8691a 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -14,10 +14,10 @@ dist-hook: + echo $(VERSION) > $(distdir)/.tarball-version + + install-udev-rules: +- $(INSTALL_DATA) rtl-sdr.rules /etc/udev/rules.d ++ $(INSTALL_DATA) rtl-sdr.rules $(DESTDIR)/etc/udev/rules.d + + uninstall-udev-rules: +- rm -rf /etc/udev/rules.d/rtl-sdr.rules ++ rm -rf $(DESTDIR)/etc/udev/rules.d/rtl-sdr.rules + + EXTRA_DIST = git-version-gen .version + +-- +2.34.1 + diff --git a/package/librtlsdr/Config.in b/package/librtlsdr/Config.in new file mode 100644 index 00000000..2f22c5b1 --- /dev/null +++ b/package/librtlsdr/Config.in @@ -0,0 +1,34 @@ +config BR2_PACKAGE_LIBRTLSDR + bool "librtlsdr" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + Library and command line programs for accessing + RTL2832U SDR dongles. + + http://sdr.osmocom.org/trac/wiki/rtl-sdr/ + +if BR2_PACKAGE_LIBRTLSDR + +config BR2_PACKAGE_LIBRTLSDR_DETACH_DRIVER + bool "Detach kernel driver" + default y + help + Enable this option if you would like librtlsdr to + automatically detach any kernel driver associated to the + RTL2832U USB device on startup if one is loaded. + +config BR2_PACKAGE_LIBRTLSDR_ZEROCOPY + bool "Enable usbfs zero-copy support" + default y + help + This option allows to use kernel usbfs mmap instead + of buffers in userspace. If you experiment crash with + kernel < 5.6, disable this option. + +endif + +comment "librtlsdr needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/librtlsdr/librtlsdr.hash b/package/librtlsdr/librtlsdr.hash new file mode 100644 index 00000000..e4b0871d --- /dev/null +++ b/package/librtlsdr/librtlsdr.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 f09ff5ba2fa1780071321ba22885b9d1a16ac9d4b944a97e39b6921960439301 librtlsdr-ed0317e6a58c098874ac58b769cf2e609c18d9a5.tar.gz +# License file, locally calculated +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/librtlsdr/librtlsdr.mk b/package/librtlsdr/librtlsdr.mk new file mode 100644 index 00000000..908be158 --- /dev/null +++ b/package/librtlsdr/librtlsdr.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# librtlsdr +# +################################################################################ + +LIBRTLSDR_VERSION = ed0317e6a58c098874ac58b769cf2e609c18d9a5 +LIBRTLSDR_SITE = $(call github,steve-m,librtlsdr,$(LIBRTLSDR_VERSION)) +LIBRTLSDR_LICENSE = GPL-2.0+ +LIBRTLSDR_LICENSE_FILES = COPYING +LIBRTLSDR_INSTALL_STAGING = YES +# From git +LIBRTLSDR_AUTORECONF = YES +LIBRTLSDR_DEPENDENCIES = host-pkgconf libusb +LIBRTLSDR_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +LIBRTLSDR_INSTALL_TARGET_OPTS += install-udev-rules +endif + +ifeq ($(BR2_PACKAGE_LIBRTLSDR_DETACH_DRIVER),y) +LIBRTLSDR_CONF_OPTS += --enable-driver-detach +else +LIBRTLSDR_CONF_OPTS += --disable-driver-detach +endif + +ifeq ($(BR2_PACKAGE_LIBRTLSDR_ZEROCOPY),y) +LIBRTLSDR_CONF_OPTS += --enable-zerocopy +else +LIBRTLSDR_CONF_OPTS += --disable-zerocopy +endif + +$(eval $(autotools-package)) diff --git a/package/libsamplerate/Config.in b/package/libsamplerate/Config.in new file mode 100644 index 00000000..5cce287f --- /dev/null +++ b/package/libsamplerate/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBSAMPLERATE + bool "libsamplerate" + help + Secret Rabbit Code (aka libsamplerate) is a Sample Rate + Converter for audio. One example of where such a thing would + be useful is converting audio from the CD sample rate of + 44.1kHz to the 48kHz sample rate used by DAT players. + + http://libsndfile.github.io/libsamplerate/ diff --git a/package/libsamplerate/libsamplerate.hash b/package/libsamplerate/libsamplerate.hash new file mode 100644 index 00000000..c5e22ba5 --- /dev/null +++ b/package/libsamplerate/libsamplerate.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 3258da280511d24b49d6b08615bbe824d0cacc9842b0e4caf11c52cf2b043893 libsamplerate-0.2.2.tar.xz +# Locally computed +sha256 2c1f76ce2effdddb425018405d5690c0b1ab4e6976e35296b0a6db65c5e1a55d COPYING diff --git a/package/libsamplerate/libsamplerate.mk b/package/libsamplerate/libsamplerate.mk new file mode 100644 index 00000000..0ac3c424 --- /dev/null +++ b/package/libsamplerate/libsamplerate.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# libsamplerate +# +################################################################################ + +LIBSAMPLERATE_VERSION = 0.2.2 +LIBSAMPLERATE_SOURCE = libsamplerate-$(LIBSAMPLERATE_VERSION).tar.xz +LIBSAMPLERATE_SITE = https://github.com/libsndfile/libsamplerate/releases/download/$(LIBSAMPLERATE_VERSION) +LIBSAMPLERATE_INSTALL_STAGING = YES +LIBSAMPLERATE_DEPENDENCIES = host-pkgconf +# sndfile is only used for examples and tests so it doesn't make sense +# to support it as an optional dependency +LIBSAMPLERATE_CONF_OPTS = \ + --disable-fftw \ + --disable-sndfile \ + --program-transform-name='' +LIBSAMPLERATE_LICENSE = BSD-2-Clause +LIBSAMPLERATE_LICENSE_FILES = COPYING +LIBSAMPLERATE_CPE_ID_VALID = YES + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +LIBSAMPLERATE_DEPENDENCIES += alsa-lib +LIBSAMPLERATE_CONF_OPTS += --enable-alsa +else +LIBSAMPLERATE_CONF_OPTS += --disable-alsa +endif + +$(eval $(autotools-package)) diff --git a/package/libscrypt/Config.in b/package/libscrypt/Config.in new file mode 100644 index 00000000..b467fd6e --- /dev/null +++ b/package/libscrypt/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBSCRYPT + bool "libscrypt" + # Unconditionally builds a shared library + depends on !BR2_STATIC_LIBS + help + This is a library that implements the secure password + hashing function "scrypt". + + http://www.lolware.net/libscrypt.html + +comment "libscrypt needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/libscrypt/libscrypt.hash b/package/libscrypt/libscrypt.hash new file mode 100644 index 00000000..fcdc4bbe --- /dev/null +++ b/package/libscrypt/libscrypt.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a2d30ea16e6d288772791de68be56153965fe4fd4bcd787777618b8048708936 libscrypt-1.22.tar.gz +sha256 aacbfd9e19e5b38ea09616cebf0751ef0cc7b6a19ea0fd78f4b0598b2c503394 LICENSE diff --git a/package/libscrypt/libscrypt.mk b/package/libscrypt/libscrypt.mk new file mode 100644 index 00000000..193c963f --- /dev/null +++ b/package/libscrypt/libscrypt.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# libscrypt +# +################################################################################ + +LIBSCRYPT_VERSION = 1.22 +LIBSCRYPT_SITE = $(call github,technion,libscrypt,v$(LIBSCRYPT_VERSION)) +LIBSCRYPT_LICENSE = BSD-2-Clause +LIBSCRYPT_LICENSE_FILES = LICENSE +LIBSCRYPT_INSTALL_STAGING = YES + +LIBSCRYPT_MAKE_OPTS = \ + CC=$(TARGET_CC) \ + CFLAGS_EXTRA="$(TARGET_CFLAGS)" \ + LDFLAGS_EXTRA="$(TARGET_LDFLAGS)" \ + PREFIX=/usr + +define LIBSCRYPT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBSCRYPT_MAKE_OPTS) +endef + +define LIBSCRYPT_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBSCRYPT_MAKE_OPTS) \ + DESTDIR=$(STAGING_DIR) install +endef + +define LIBSCRYPT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBSCRYPT_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/libseccomp/Config.in b/package/libseccomp/Config.in new file mode 100644 index 00000000..7de91c07 --- /dev/null +++ b/package/libseccomp/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS + bool + default y if BR2_aarch64 + default y if BR2_arm || BR2_armeb + default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + default y if BR2_i386 || BR2_x86_64 + default y if BR2_powerpc64 || BR2_powerpc + default y if BR2_RISCV_64 + default y if BR2_s390x + +config BR2_PACKAGE_LIBSECCOMP + bool "libseccomp" + depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 + help + High level interface to the Linux Kernel's seccomp filter + + The libseccomp library provides an easy to use, platform + independent, interface to the Linux Kernel's syscall filtering + mechanism: seccomp. The libseccomp API is designed to abstract + away the underlying BPF based syscall filter language and + present a more conventional function-call based filtering + interface that should be familiar to, and easily adopted by + application developers. + + https://github.com/seccomp/libseccomp + +comment "libseccomp needs a toolchain w/ headers >= 3.17" + depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 diff --git a/package/libseccomp/libseccomp.hash b/package/libseccomp/libseccomp.hash new file mode 100644 index 00000000..b80efd68 --- /dev/null +++ b/package/libseccomp/libseccomp.hash @@ -0,0 +1,4 @@ +# From https://github.com/seccomp/libseccomp/releases/tag/v2.5.5 +sha256 248a2c8a4d9b9858aa6baf52712c34afefcf9c9e94b76dce02c1c9aa25fb3375 libseccomp-2.5.5.tar.gz +# Locally calculated +sha256 102900208eef27b766380135906d431dba87edaa7ec6aa72e6ebd3dd67f3a97b LICENSE diff --git a/package/libseccomp/libseccomp.mk b/package/libseccomp/libseccomp.mk new file mode 100644 index 00000000..10d57bb7 --- /dev/null +++ b/package/libseccomp/libseccomp.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libseccomp +# +################################################################################ + +LIBSECCOMP_VERSION = 2.5.5 +LIBSECCOMP_SITE = https://github.com/seccomp/libseccomp/releases/download/v$(LIBSECCOMP_VERSION) +LIBSECCOMP_LICENSE = LGPL-2.1 +LIBSECCOMP_LICENSE_FILES = LICENSE +LIBSECCOMP_CPE_ID_VALID = YES +LIBSECCOMP_INSTALL_STAGING = YES +LIBSECCOMP_DEPENDENCIES = host-gperf + +$(eval $(autotools-package)) diff --git a/package/libsecret/Config.in b/package/libsecret/Config.in new file mode 100644 index 00000000..04a3e46f --- /dev/null +++ b/package/libsecret/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBSECRET + bool "libsecret" + depends on BR2_USE_WCHAR # gettext dep in libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + help + libsecret is a library for storing and retrieving passwords + and other secrets. It communicates with the "Secret Service" + using DBus. gnome-keyring and ksecretservice are both + implementations of a Secret Service. + + https://wiki.gnome.org/Projects/Libsecret + +comment "libsecret needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libsecret/libsecret.hash b/package/libsecret/libsecret.hash new file mode 100644 index 00000000..4eb3d9b9 --- /dev/null +++ b/package/libsecret/libsecret.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/libsecret/0.20/libsecret-0.20.5.sha256sum +sha256 3fb3ce340fcd7db54d87c893e69bfc2b1f6e4d4b279065ffe66dac9f0fd12b4d libsecret-0.20.5.tar.xz + +# Hash for license file: +sha256 a1a33180d02960ab1c5de36cf20b1a2f0fe9888d83826ad263da5db52f1b183b COPYING diff --git a/package/libsecret/libsecret.mk b/package/libsecret/libsecret.mk new file mode 100644 index 00000000..e98c6613 --- /dev/null +++ b/package/libsecret/libsecret.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# libsecret +# +################################################################################ + +LIBSECRET_VERSION_MAJOR = 0.20 +LIBSECRET_VERSION = $(LIBSECRET_VERSION_MAJOR).5 +LIBSECRET_SITE = https://download.gnome.org/sources/libsecret/$(LIBSECRET_VERSION_MAJOR) +LIBSECRET_SOURCE = libsecret-$(LIBSECRET_VERSION).tar.xz +LIBSECRET_INSTALL_STAGING = YES +LIBSECRET_DEPENDENCIES = libglib2 $(TARGET_NLS_DEPENDENCIES) +LIBSECRET_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) +LIBSECRET_CONF_OPTS = \ + -Dgtk_doc=false \ + -Dmanpage=false \ + -Dvapi=false +LIBSECRET_LICENSE = LGPL-2.1+ +LIBSECRET_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_BASH_COMPLETION),y) +LIBSECRET_CONF_OPTS += -Dbash_completion=enabled +LIBSECRET_DEPENDENCIES += bash-completion +else +LIBSECRET_CONF_OPTS += -Dbash_completion=disabled +endif + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +LIBSECRET_CONF_OPTS += -Dintrospection=true +LIBSECRET_DEPENDENCIES += gobject-introspection +else +LIBSECRET_CONF_OPTS += -Dintrospection=false +endif + +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +LIBSECRET_DEPENDENCIES += libgcrypt +LIBSECRET_CONF_OPTS += -Dgcrypt=true +else +LIBSECRET_CONF_OPTS += -Dgcrypt=false +endif + +ifeq ($(BR2_PACKAGE_TPM2_TSS),y) +LIBSECRET_CONF_OPTS += -Dtpm2=true +LIBSECRET_DEPENDENCIES += tpm2-tss +else +LIBSECRET_CONF_OPTS += -Dtpm2=false +endif + +$(eval $(meson-package)) diff --git a/package/libselinux/0001-Do-not-use-PYCEXT-and-rely-on-the-installed-file-nam.patch b/package/libselinux/0001-Do-not-use-PYCEXT-and-rely-on-the-installed-file-nam.patch new file mode 100644 index 00000000..3bdb1d0f --- /dev/null +++ b/package/libselinux/0001-Do-not-use-PYCEXT-and-rely-on-the-installed-file-nam.patch @@ -0,0 +1,50 @@ +From c26495025ab1a2597e5433b67a3bf793d3ce1e08 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 25 Oct 2019 13:37:14 +0200 +Subject: [PATCH] Do not use PYCEXT, and rely on the installed file name + +PYCEXT is computed by asking the Python intrepreter what is the +file extension used for native Python modules. + +Unfortunately, when cross-compiling, the host Python doesn't give the +proper result: it gives the result matching the build machine, and not +the target machine. Due to this, the symlink has an incorrect name, +and doesn't point to the .so file that was actually built/installed. + +To address this and keep things simple, this patch just changes the ln +invocation to rely on the name of the _selinux*.so Python module that +was installed. + +Signed-off-by: Antoine Tenart +[Refreshed for 3.1] +Signed-off-by: Thomas Petazzoni +[Refreshed for 3.5] +Signed-off-by: Adam Duskett +--- + src/Makefile | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/src/Makefile b/src/Makefile +index 190016e2af34..7ee22fd35da3 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -15,7 +15,6 @@ INCLUDEDIR ?= $(PREFIX)/include + PYINC ?= $(shell $(PKG_CONFIG) --cflags $(PYPREFIX)) + PYLIBS ?= $(shell $(PKG_CONFIG) --libs $(PYPREFIX)) + PYTHONLIBDIR ?= $(shell $(PYTHON) -c "import sysconfig; print(sysconfig.get_path('platlib', vars={'platbase': '$(PREFIX)', 'base': '$(PREFIX)'}))") +-PYCEXT ?= $(shell $(PYTHON) -c 'import importlib.machinery;print(importlib.machinery.EXTENSION_SUFFIXES[0])') + RUBYINC ?= $(shell $(RUBY) -e 'puts "-I" + RbConfig::CONFIG["rubyarchhdrdir"] + " -I" + RbConfig::CONFIG["rubyhdrdir"]') + RUBYLIBS ?= $(shell $(RUBY) -e 'puts "-L" + RbConfig::CONFIG["libdir"] + " -L" + RbConfig::CONFIG["archlibdir"] + " " + RbConfig::CONFIG["LIBRUBYARG_SHARED"]') + RUBYINSTALL ?= $(shell $(RUBY) -e 'puts RbConfig::CONFIG["vendorarchdir"]') +@@ -193,7 +192,7 @@ install: all + install-pywrap: pywrap + CFLAGS="$(CPPFLAGS) $(CFLAGS) $(SWIG_CFLAGS)" $(PYTHON) -m pip install --prefix=$(PREFIX) `test -n "$(DESTDIR)" && echo --root $(DESTDIR) --ignore-installed --no-deps` $(PYTHON_SETUP_ARGS) . + install -m 644 $(SWIGPYOUT) $(DESTDIR)$(PYTHONLIBDIR)/selinux/__init__.py +- ln -sf --relative $(DESTDIR)$(PYTHONLIBDIR)/selinux/_selinux$(PYCEXT) $(DESTDIR)$(PYTHONLIBDIR)/_selinux$(PYCEXT) ++ ln -sf --relative $(DESTDIR)$(PYTHONLIBDIR)/selinux/_selinux*.so $(DESTDIR)$(PYTHONLIBDIR)/ + + install-rubywrap: rubywrap + test -d $(DESTDIR)$(RUBYINSTALL) || install -m 755 -d $(DESTDIR)$(RUBYINSTALL) +-- +2.26.2 + diff --git a/package/libselinux/0002-libselinux-src-se_linux_internal.c-include-stdint.h.patch b/package/libselinux/0002-libselinux-src-se_linux_internal.c-include-stdint.h.patch new file mode 100644 index 00000000..a626370a --- /dev/null +++ b/package/libselinux/0002-libselinux-src-se_linux_internal.c-include-stdint.h.patch @@ -0,0 +1,45 @@ +From f6143706e2fc0f1ae16cb3667722deb9cc51c244 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 11 May 2024 08:09:38 +0200 +Subject: [PATCH] libselinux/src/se_linux_internal.c: include stdint.h + +Include stdint.h to avoid the following uclibc build failure raised +since version 3.6 and +https://github.com/SELinuxProject/selinux/commit/cb8289c2b237e5f66e4a7608ecc6c68abeaeaf55: + +selinux_internal.c: In function 'reallocarray': +selinux_internal.c:25:29: error: 'SIZE_MAX' undeclared (first use in this function) + 25 | if (size && nmemb > SIZE_MAX / size) { + | ^~~~~~~~ +selinux_internal.c:6:1: note: 'SIZE_MAX' is defined in header ''; did you forget to '#include '? + 5 | #include + +++ |+#include + 6 | +selinux_internal.c:25:29: note: each undeclared identifier is reported only once for each function it appears in + 25 | if (size && nmemb > SIZE_MAX / size) { + | ^~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/7e627744beaa4f7fdfd488dfacbaafc074a999f7 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/SELinuxProject/selinux/pull/435 +--- + libselinux/src/selinux_internal.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/selinux_internal.c b/src/selinux_internal.c +index 06852359..f6385908 100644 +--- a/src/selinux_internal.c ++++ b/src/selinux_internal.c +@@ -1,6 +1,7 @@ + #include "selinux_internal.h" + + #include ++#include + #include + #include + +-- +2.43.0 + diff --git a/package/libselinux/Config.in b/package/libselinux/Config.in new file mode 100644 index 00000000..bc40e32a --- /dev/null +++ b/package/libselinux/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_LIBSELINUX + bool "libselinux" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # libsepol + select BR2_PACKAGE_LIBSEPOL + select BR2_PACKAGE_PCRE2 + select BR2_PACKAGE_MUSL_FTS if !BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_PYTHON_SETUPTOOLS if BR2_PACKAGE_PYTHON3 + help + libselinux is the runtime SELinux library that provides + interfaces (e.g. library functions for the SELinux kernel + APIs like getcon(), other support functions like + getseuserbyname()) to SELinux-aware applications. libselinux + may use the shared libsepol to manipulate the binary policy + if necessary (e.g. to downgrade the policy format to an + older version supported by the kernel) when loading policy. + + http://selinuxproject.org/page/Main_Page + +comment "libselinux needs a toolchain w/ threads, dynamic library, gcc >= 5" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 diff --git a/package/libselinux/libselinux.hash b/package/libselinux/libselinux.hash new file mode 100644 index 00000000..4e0a2ca3 --- /dev/null +++ b/package/libselinux/libselinux.hash @@ -0,0 +1,5 @@ +# From: https://github.com/SELinuxProject/selinux/wiki/Releases +sha256 ba4e0ef34b270e7672a5e5f1b523fe2beab3a40bb33d9389f4ad3a8728f21b52 libselinux-3.6.tar.gz + +# Hash for license file +sha256 86657b4c0fe868d7cbd977cb04c63b6c667e08fa51595a7bc846ad4bed8fc364 LICENSE diff --git a/package/libselinux/libselinux.mk b/package/libselinux/libselinux.mk new file mode 100644 index 00000000..f07498d7 --- /dev/null +++ b/package/libselinux/libselinux.mk @@ -0,0 +1,140 @@ +################################################################################ +# +# libselinux +# +################################################################################ + +LIBSELINUX_VERSION = 3.6 +LIBSELINUX_SITE = https://github.com/SELinuxProject/selinux/releases/download/$(LIBSELINUX_VERSION) +LIBSELINUX_LICENSE = Public Domain +LIBSELINUX_LICENSE_FILES = LICENSE +LIBSELINUX_CPE_ID_VENDOR = selinuxproject + +LIBSELINUX_DEPENDENCIES = \ + $(BR2_COREUTILS_HOST_DEPENDENCY) host-pkgconf libsepol pcre2 + +LIBSELINUX_INSTALL_STAGING = YES + +# Set SHLIBDIR to /usr/lib so it has the same value than LIBDIR, as a result +# we won't have to use a relative path in 0002-revert-ln-relative.patch +LIBSELINUX_MAKE_OPTS = \ + $(TARGET_CONFIGURE_OPTS) \ + ARCH=$(NORMALIZED_ARCH) \ + SHLIBDIR=/usr/lib \ + USE_PCRE2=y + +LIBSELINUX_MAKE_INSTALL_TARGETS = install + +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),) +LIBSELINUX_DEPENDENCIES += musl-fts +LIBSELINUX_MAKE_OPTS += FTS_LDLIBS=-lfts +endif + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +LIBSELINUX_DEPENDENCIES += \ + python3 \ + python-setuptools \ + host-python-pip \ + host-swig + +LIBSELINUX_MAKE_OPTS += \ + $(PKG_PYTHON_SETUPTOOLS_ENV) \ + PYTHON=python$(PYTHON3_VERSION_MAJOR) + +LIBSELINUX_MAKE_INSTALL_TARGETS += install-pywrap + +# dependencies are broken and result in file truncation errors at link +# time if the Python bindings are built through the same make +# invocation as the rest of the library. +define LIBSELINUX_BUILD_PYTHON_BINDINGS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + $(LIBSELINUX_MAKE_OPTS) swigify pywrap +endef +endif # python3 + +define LIBSELINUX_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + $(LIBSELINUX_MAKE_OPTS) all + $(LIBSELINUX_BUILD_PYTHON_BINDINGS) +endef + +define LIBSELINUX_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + $(LIBSELINUX_MAKE_OPTS) DESTDIR=$(STAGING_DIR) \ + $(LIBSELINUX_MAKE_INSTALL_TARGETS) +endef + +define LIBSELINUX_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + $(LIBSELINUX_MAKE_OPTS) DESTDIR=$(TARGET_DIR) \ + $(LIBSELINUX_MAKE_INSTALL_TARGETS) + if ! grep -q "selinuxfs" $(TARGET_DIR)/etc/fstab; then \ + echo "none /sys/fs/selinux selinuxfs noauto 0 0" >> $(TARGET_DIR)/etc/fstab ; fi +endef + +HOST_LIBSELINUX_DEPENDENCIES = \ + host-pkgconf \ + host-libsepol \ + host-pcre2 \ + host-swig \ + host-python3 \ + host-python-pip \ + host-python-setuptools + +HOST_LIBSELINUX_MAKE_OPTS = \ + $(HOST_CONFIGURE_OPTS) \ + PREFIX=$(HOST_DIR) \ + SHLIBDIR=$(HOST_DIR)/lib \ + $(HOST_PKG_PYTHON_SETUPTOOLS_ENV) \ + PYTHON=python$(PYTHON3_VERSION_MAJOR) \ + USE_PCRE2=y + +define HOST_LIBSELINUX_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE1) -C $(@D) \ + $(HOST_LIBSELINUX_MAKE_OPTS) all + # Generate python interface wrapper + $(HOST_MAKE_ENV) $(MAKE1) -C $(@D) \ + $(HOST_LIBSELINUX_MAKE_OPTS) swigify pywrap +endef + +define HOST_LIBSELINUX_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) \ + $(HOST_LIBSELINUX_MAKE_OPTS) install + # Install python interface wrapper + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) \ + $(HOST_LIBSELINUX_MAKE_OPTS) install-pywrap +endef + +define LIBSELINUX_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_AUDIT) + $(call KCONFIG_ENABLE_OPT,CONFIG_DEFAULT_SECURITY_SELINUX) + $(call KCONFIG_ENABLE_OPT,CONFIG_INET) + $(call KCONFIG_ENABLE_OPT,CONFIG_NET) + $(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY) + $(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY_NETWORK) + $(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY_SELINUX) + $(call KCONFIG_SET_OPT,CONFIG_LSM,"selinux") + $(if $(BR2_TARGET_ROOTFS_EROFS), + $(call KCONFIG_ENABLE_OPT,CONFIG_EROFS_FS_XATTR) + $(call KCONFIG_ENABLE_OPT,CONFIG_EROFS_FS_SECURITY)) + $(if $(BR2_TARGET_ROOTFS_EXT2), + $(call KCONFIG_ENABLE_OPT,CONFIG_EXT2_FS_XATTR) + $(call KCONFIG_ENABLE_OPT,CONFIG_EXT2_FS_SECURITY)) + $(if $(BR2_TARGET_ROOTFS_EXT2_3), + $(call KCONFIG_ENABLE_OPT,CONFIG_EXT3_FS_SECURITY)) + $(if $(BR2_TARGET_ROOTFS_EXT2_4), + $(call KCONFIG_ENABLE_OPT,CONFIG_EXT4_FS_SECURITY)) + $(if $(BR2_TARGET_ROOTFS_F2FS), + $(call KCONFIG_ENABLE_OPT,CONFIG_F2FS_FS_XATTR) + $(call KCONFIG_ENABLE_OPT,CONFIG_F2FS_FS_SECURITY)) + $(if $(BR2_TARGET_ROOTFS_JFFS2), + $(call KCONFIG_ENABLE_OPT,CONFIG_JFS_SECURITY)) + $(if $(BR2_TARGET_ROOTFS_SQUASHFS), + $(call KCONFIG_ENABLE_OPT,CONFIG_SQUASHFS_XATTR)) + $(if $(BR2_TARGET_ROOTFS_UBIFS), + $(call KCONFIG_ENABLE_OPT,CONFIG_UBIFS_FS_XATTR) + $(call KCONFIG_ENABLE_OPT,CONFIG_UBIFS_FS_SECURITY)) +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/libsemanage/Config.in b/package/libsemanage/Config.in new file mode 100644 index 00000000..5103df3f --- /dev/null +++ b/package/libsemanage/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_LIBSEMANAGE + bool "libsemanage" + depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # libselinux -> libsepol + select BR2_PACKAGE_AUDIT + select BR2_PACKAGE_LIBSELINUX + select BR2_PACKAGE_BZIP2 + help + libsemanage is the policy management library. It uses + libsepol for binary policy manipulation and libselinux for + interacting with the SELinux system. It also exec's helper + programs for loading policy and for checking whether the + file_contexts configuration is valid (load_policy and + setfiles from policycoreutils) presently, although this may + change at least for the bootstrapping case (for rpm). + + http://selinuxproject.org/page/Main_Page + +comment "libsemanage needs a toolchain w/ threads, dynamic library, gcc >= 5" + depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 diff --git a/package/libsemanage/libsemanage.hash b/package/libsemanage/libsemanage.hash new file mode 100644 index 00000000..862e49f5 --- /dev/null +++ b/package/libsemanage/libsemanage.hash @@ -0,0 +1,5 @@ +# From: https://github.com/SELinuxProject/selinux/wiki/Releases +sha256 41138f46222439e1242f27c1587e95cf54a059259aaf1681db642cc30c4e0d60 libsemanage-3.6.tar.gz + +# Hash for license file +sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 LICENSE diff --git a/package/libsemanage/libsemanage.mk b/package/libsemanage/libsemanage.mk new file mode 100644 index 00000000..7742e706 --- /dev/null +++ b/package/libsemanage/libsemanage.mk @@ -0,0 +1,58 @@ +################################################################################ +# +# libsemanage +# +################################################################################ + +LIBSEMANAGE_VERSION = 3.6 +LIBSEMANAGE_SITE = https://github.com/SELinuxProject/selinux/releases/download/$(LIBSEMANAGE_VERSION) +LIBSEMANAGE_LICENSE = LGPL-2.1+ +LIBSEMANAGE_LICENSE_FILES = LICENSE +LIBSEMANAGE_DEPENDENCIES = host-bison host-flex audit libselinux bzip2 +LIBSEMANAGE_CPE_ID_VENDOR = selinuxproject +LIBSEMANAGE_INSTALL_STAGING = YES + +LIBSEMANAGE_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) + +define LIBSEMANAGE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBSEMANAGE_MAKE_OPTS) all +endef + +define LIBSEMANAGE_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBSEMANAGE_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install +endef + +define LIBSEMANAGE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBSEMANAGE_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install +endef + +HOST_LIBSEMANAGE_DEPENDENCIES = \ + host-bison \ + host-audit \ + host-libsepol \ + host-libselinux \ + host-bzip2 \ + host-swig \ + host-python3 + +HOST_LIBSEMANAGE_MAKE_OPTS += \ + $(HOST_CONFIGURE_OPTS) \ + PREFIX=$(HOST_DIR) \ + SWIG_LIB="$(HOST_DIR)/share/swig/$(SWIG_VERSION)/" \ + DEFAULT_SEMANAGE_CONF_LOCATION=$(HOST_DIR)/etc/selinux/semanage.conf \ + PYINC="-I$(HOST_DIR)/include/python$(PYTHON3_VERSION_MAJOR)/" \ + PYTHONLIBDIR="$(HOST_DIR)/lib/python$(PYTHON3_VERSION_MAJOR)/" \ + PYLIBVER="python$(PYTHON3_VERSION_MAJOR)" + +define HOST_LIBSEMANAGE_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_LIBSEMANAGE_MAKE_OPTS) all + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_LIBSEMANAGE_MAKE_OPTS) swigify pywrap +endef + +define HOST_LIBSEMANAGE_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_LIBSEMANAGE_MAKE_OPTS) install + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_LIBSEMANAGE_MAKE_OPTS) install-pywrap +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/libsepol/0001-support-static-only.patch b/package/libsepol/0001-support-static-only.patch new file mode 100644 index 00000000..b3eb608f --- /dev/null +++ b/package/libsepol/0001-support-static-only.patch @@ -0,0 +1,47 @@ +From 2140db697c7f1da2a0a3f7bbcb14c1a0dade84e5 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Mon, 9 Oct 2017 16:28:12 -0400 +Subject: [PATCH] Add support for static-only build + +Instead of unconditionally building shared libraries, this patch +improves the libsepol build system with a "STATIC" variable, which +when defined to some non-empty value, will disable the build of shared +libraries. It allows to support cases where the target architecture +does not have support for shared libraries. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Adam Duskett +Signed-off-by: Fabrice Fontaine +[Update for 2.8] +--- + src/Makefile | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +diff -durNw libsepol-2.7.orig/src/Makefile libsepol-2.7/src/Makefile +--- libsepol-2.7.orig/src/Makefile 2018-01-15 21:07:51.285183415 +0100 ++++ libsepol-2.7/src/Makefile 2018-01-15 21:08:56.515182717 +0100 +@@ -39,7 +39,12 @@ + LN=gln + endif + +-all: $(LIBA) $(LIBSO) $(LIBPC) ++ALL_TARGETS = $(LIBA) $(LIBPC) ++ifeq ($(STATIC),) ++ALL_TARGETS += $(LIBSO) ++endif ++ ++all: $(ALL_TARGETS) + + + $(LIBA): $(OBJS) +@@ -81,8 +86,10 @@ + install: all + test -d $(DESTDIR)$(LIBDIR) || install -m 755 -d $(DESTDIR)$(LIBDIR) + install -m 644 $(LIBA) $(DESTDIR)$(LIBDIR) ++ifeq ($(STATIC),) + test -d $(DESTDIR)$(SHLIBDIR) || install -m 755 -d $(DESTDIR)$(SHLIBDIR) + install -m 755 $(LIBSO) $(DESTDIR)$(SHLIBDIR) ++endif + test -d $(DESTDIR)$(LIBDIR)/pkgconfig || install -m 755 -d $(DESTDIR)$(LIBDIR)/pkgconfig + install -m 644 $(LIBPC) $(DESTDIR)$(LIBDIR)/pkgconfig + $(LN) -sf --relative $(DESTDIR)$(SHLIBDIR)/$(LIBSO) $(DESTDIR)$(LIBDIR)/$(TARGET) diff --git a/package/libsepol/Config.in b/package/libsepol/Config.in new file mode 100644 index 00000000..5dfd1a41 --- /dev/null +++ b/package/libsepol/Config.in @@ -0,0 +1,40 @@ +config BR2_PACKAGE_LIBSEPOL + bool "libsepol" + depends on BR2_TOOLCHAIN_HAS_THREADS # pthread + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 + help + Libsepol is the binary policy manipulation library. It doesn't + depend upon or use any of the other SELinux components. + + http://selinuxproject.org/page/Main_Page + +if BR2_PACKAGE_LIBSEPOL + +config BR2_PACKAGE_LIBSEPOL_POLICY_VERSION + int "Policy version" + default 33 if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8 + default 32 if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5 + default 31 if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13 + default 30 if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3 + default 29 if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 + default 28 if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5 + default 25 + help + The maximum SELinux policy version your kernel supports. + + Here's a handy table to help you choose: + kernel version SElinux policy max version + < 2.6.x 25 + >= 2.6 < 3.5 26 + >= 3.5 < 3.14 28 (27 and 28 were added at the same time) + >= 3.14 < 4.3 29 + >= 4.3 < 4.13 30 + >= 4.13 < 5.5 31 + >= 5.5 < 5.8 32 + >= 5.8 33 + +endif + +comment "libsepol needs a toolchain w/ threads, gcc >= 5" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 diff --git a/package/libsepol/libsepol.hash b/package/libsepol/libsepol.hash new file mode 100644 index 00000000..1369d820 --- /dev/null +++ b/package/libsepol/libsepol.hash @@ -0,0 +1,5 @@ +# From: https://github.com/SELinuxProject/selinux/wiki/Releases +sha256 c9dc585ea94903d784d597c861cd5dce6459168f95e22b31a0eab1cdd800975a libsepol-3.6.tar.gz + +# Hash for license file +sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 LICENSE diff --git a/package/libsepol/libsepol.mk b/package/libsepol/libsepol.mk new file mode 100644 index 00000000..6361cc66 --- /dev/null +++ b/package/libsepol/libsepol.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# libsepol +# +################################################################################ + +LIBSEPOL_VERSION = 3.6 +LIBSEPOL_SITE = https://github.com/SELinuxProject/selinux/releases/download/$(LIBSEPOL_VERSION) +LIBSEPOL_LICENSE = LGPL-2.1+ +LIBSEPOL_LICENSE_FILES = LICENSE +LIBSEPOL_CPE_ID_VENDOR = selinuxproject + +LIBSEPOL_INSTALL_STAGING = YES +LIBSEPOL_DEPENDENCIES = host-flex +HOST_LIBSEPOL_DEPENDENCIES = $(BR2_COREUTILS_HOST_DEPENDENCY) host-flex + +LIBSEPOL_MAKE_FLAGS = $(TARGET_CONFIGURE_OPTS) + +ifeq ($(BR2_STATIC_LIBS),y) +LIBSEPOL_MAKE_FLAGS += STATIC=1 +endif + +define LIBSEPOL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBSEPOL_MAKE_FLAGS) +endef + +# Set SHLIBDIR to /usr/lib so it has the same value than LIBDIR, as a result +# we won't have to use a relative path in 0002-revert-ln-relative.patch +define LIBSEPOL_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install $(LIBSEPOL_MAKE_FLAGS) \ + DESTDIR=$(STAGING_DIR) SHLIBDIR=/usr/lib +endef + +define LIBSEPOL_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install $(LIBSEPOL_MAKE_FLAGS) \ + DESTDIR=$(TARGET_DIR) SHLIBDIR=/usr/lib +endef + +HOST_LIBSEPOL_MAKE_ENV = \ + $(HOST_MAKE_ENV) \ + PREFIX=$(HOST_DIR) \ + SHLIBDIR=$(HOST_DIR)/lib + +define HOST_LIBSEPOL_BUILD_CMDS + $(HOST_LIBSEPOL_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_CONFIGURE_OPTS) +endef + +define HOST_LIBSEPOL_INSTALL_CMDS + $(HOST_LIBSEPOL_MAKE_ENV) $(MAKE) -C $(@D) install $(HOST_CONFIGURE_OPTS) +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/libserial/0001-SerialPort.cpp-fix-build-when-size_t-is-an-unsigned-.patch b/package/libserial/0001-SerialPort.cpp-fix-build-when-size_t-is-an-unsigned-.patch new file mode 100644 index 00000000..a01da53a --- /dev/null +++ b/package/libserial/0001-SerialPort.cpp-fix-build-when-size_t-is-an-unsigned-.patch @@ -0,0 +1,39 @@ +From 2e4cf095afdcf843e93d1bdea9dbd961558f09bd Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 13 Jan 2019 21:01:19 +0100 +Subject: [PATCH] SerialPort.cpp: fix build when size_t is an unsigned int + +size_t can be defined as an unsigned int instead of long unsigned int so +replace 1UL to (size_t)1 when calling max function + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/crayzeewulf/libserial/pull/126] +--- + src/SerialPort.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/SerialPort.cpp b/src/SerialPort.cpp +index e354fcb..75e762e 100644 +--- a/src/SerialPort.cpp ++++ b/src/SerialPort.cpp +@@ -2208,7 +2208,7 @@ namespace LibSerial + + // Local variables. + size_t number_of_bytes_read = 0 ; +- size_t number_of_bytes_remaining = std::max(numberOfBytes, 1UL) ; ++ size_t number_of_bytes_remaining = std::max(numberOfBytes, (size_t)1) ; + size_t maximum_number_of_bytes = dataBuffer.max_size() ; + + // Clear the data buffer and reserve enough space in the buffer to store the incoming data. +@@ -2302,7 +2302,7 @@ namespace LibSerial + + // Local variables. + size_t number_of_bytes_read = 0 ; +- size_t number_of_bytes_remaining = std::max(numberOfBytes, 1UL) ; ++ size_t number_of_bytes_remaining = std::max(numberOfBytes, (size_t)1) ; + size_t maximum_number_of_bytes = dataString.max_size() ; + + // Clear the data buffer and reserve enough space in the buffer to store the incoming data. +-- +2.14.1 + diff --git a/package/libserial/0002-SerialPort.cpp-don-t-use-high-baudrates-when-not-ava.patch b/package/libserial/0002-SerialPort.cpp-don-t-use-high-baudrates-when-not-ava.patch new file mode 100644 index 00000000..4f97f598 --- /dev/null +++ b/package/libserial/0002-SerialPort.cpp-don-t-use-high-baudrates-when-not-ava.patch @@ -0,0 +1,53 @@ +From fc0f031563146b91d255c752a61624f6dd3c14d4 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 15 Jan 2019 08:33:27 +0100 +Subject: [PATCH] SerialPort.cpp: don't use high baudrates when not available + +On certain architectures (namely Sparc), the maximum baud rate exposed +by the kernel headers is B2000000. Therefore, the current libserial +code doesn't build for the Sparc and Sparc64 architectures due to +this. + +In order to address this problem, this patch tests the value of +__MAX_BAUD. If it's higher than B2000000 then we assume we're on an +architecture that supports all baud rates up to B4000000. Otherwise, +we simply don't support the baud rates above B2000000. + +Fixes build failures such as: + +SerialPort.cpp: In member function 'int LibSerial::SerialPort::Implementation::GetBitRate(const LibSerial::BaudRate&) const': +SerialPort.cpp:1226:14: error: 'BAUD_2000000' is not a member of 'LibSerial::BaudRate' + case BaudRate::BAUD_2000000: + +Fixes: + - http://autobuild.buildroot.org/results/63ba95b6786464fa8e75af64593010df84530079 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/crayzeewulf/libserial/pull/127] +--- + src/SerialPort.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/SerialPort.cpp b/src/SerialPort.cpp +index e3240eb..18daac0 100644 +--- a/src/SerialPort.cpp ++++ b/src/SerialPort.cpp +@@ -1223,6 +1223,7 @@ namespace LibSerial + baud_rate_as_int = 1500000 ; + break ; + ++#if __MAX_BAUD > B2000000 + case BaudRate::BAUD_2000000: + baud_rate_as_int = 2000000 ; + break ; +@@ -1242,6 +1243,7 @@ namespace LibSerial + case BaudRate::BAUD_4000000: + baud_rate_as_int = 4000000 ; + break ; ++#endif /* __MAX_BAUD */ + default: + // If an incorrect baud rate was specified, throw an exception. + throw std::runtime_error(ERR_MSG_INVALID_BAUD_RATE) ; +-- +2.14.1 + diff --git a/package/libserial/0003-Add-missing-cstdint-header-for-uint8_t-type.patch b/package/libserial/0003-Add-missing-cstdint-header-for-uint8_t-type.patch new file mode 100644 index 00000000..caf02d84 --- /dev/null +++ b/package/libserial/0003-Add-missing-cstdint-header-for-uint8_t-type.patch @@ -0,0 +1,28 @@ +From b4ae3313fb313b6acb7f701d898f834133f5bd53 Mon Sep 17 00:00:00 2001 +From: Jussi +Date: Mon, 3 Jul 2023 15:59:07 +0300 +Subject: [PATCH] Add missing cstdint header for uint8_t type +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: 8bit + +Upstream: https://github.com/crayzeewulf/libserial/commit/3b50bc2b7464ed527d1709b5c7ba86688e6aa3ec +Signed-off-by: Peter Seiderer +--- + src/libserial/SerialPortConstants.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/libserial/SerialPortConstants.h b/src/libserial/SerialPortConstants.h +index 4f05bd5..88dca0b 100644 +--- a/src/libserial/SerialPortConstants.h ++++ b/src/libserial/SerialPortConstants.h +@@ -33,6 +33,7 @@ + + #pragma once + ++#include + #include + #include + #include +-- +2.41.0 + diff --git a/package/libserial/Config.in b/package/libserial/Config.in new file mode 100644 index 00000000..d54ae4d8 --- /dev/null +++ b/package/libserial/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBSERIAL + bool "libserial" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14 + depends on BR2_TOOLCHAIN_HAS_THREADS # boost + depends on BR2_USE_WCHAR # boost + select BR2_PACKAGE_BOOST + help + Simplified serial port programming in C++ under POSIX + operating systems. + + http://libserial.sourceforge.net/ + +comment "libserial needs a toolchain w/ C++, gcc >= 5, threads, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/package/libserial/libserial.hash b/package/libserial/libserial.hash new file mode 100644 index 00000000..87744904 --- /dev/null +++ b/package/libserial/libserial.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 063142d6bfe08898316e9a6055f2ddeedef56de06f7cfc8dcdfecc6efabf4bdd libserial-1.0.0.tar.gz +sha256 c42fdfe17c192cfdb900e22d40ef246db1b473f99165e405eda62b41be27f4bf LICENSE.txt diff --git a/package/libserial/libserial.mk b/package/libserial/libserial.mk new file mode 100644 index 00000000..bac0382b --- /dev/null +++ b/package/libserial/libserial.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# libserial +# +################################################################################ + +LIBSERIAL_VERSION = 1.0.0 +LIBSERIAL_SITE = $(call github,crayzeewulf,libserial,v$(LIBSERIAL_VERSION)) +LIBSERIAL_INSTALL_STAGING = YES +LIBSERIAL_LICENSE = BSD-3-Clause +LIBSERIAL_LICENSE_FILES = LICENSE.txt +LIBSERIAL_DEPENDENCIES = boost +# From git +LIBSERIAL_AUTORECONF = YES + +LIBSERIAL_CONF_ENV = ac_cv_prog_DOCBOOK2PDF=no +LIBSERIAL_CONF_OPTS = \ + --disable-tests \ + --without-python + +$(eval $(autotools-package)) diff --git a/package/libserialport/0001-uclinux-detection.patch b/package/libserialport/0001-uclinux-detection.patch new file mode 100644 index 00000000..7d7199c1 --- /dev/null +++ b/package/libserialport/0001-uclinux-detection.patch @@ -0,0 +1,26 @@ +From faab9aa5879fab93556b7a3a6f24070eeb3cbf15 Mon Sep 17 00:00:00 2001 +From: Paul Cercueil +Date: Mon, 29 Aug 2016 11:11:01 +0200 +Subject: [PATCH] Fix Linux files not compiled in with a toolchain for ucLinux + +Signed-off-by: Paul Cercueil +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index f6b66e8..de6f5b9 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -74,7 +74,7 @@ AC_DEFINE_UNQUOTED([SP_LIB_VERSION_REVISION], [$SP_LIB_VERSION_REVISION], [.]) + AC_DEFINE_UNQUOTED([SP_LIB_VERSION_AGE], [$SP_LIB_VERSION_AGE], [.]) + AC_DEFINE_UNQUOTED([SP_LIB_VERSION_STRING], ["$SP_LIB_VERSION"], [.]) + +-AM_CONDITIONAL([LINUX], [test -z "${host_os##linux*}"]) ++AM_CONDITIONAL([LINUX], [test -z "${host_os##linux*}" || test -z "${host_os##uclinux*}"]) + AM_CONDITIONAL([WIN32], [test -z "${host_os##mingw*}" || test -z "${host_os##cygwin*}"]) + AM_CONDITIONAL([MACOSX], [test -z "${host_os##darwin*}"]) + AM_CONDITIONAL([FREEBSD], [test -z "${host_os##freebsd*}"]) +-- +2.8.1 + diff --git a/package/libserialport/Config.in b/package/libserialport/Config.in new file mode 100644 index 00000000..d8218309 --- /dev/null +++ b/package/libserialport/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBSERIALPORT + bool "libserialport" + help + Libserialport is a minimal, cross-platform shared + library written in C that is intended to take care + of the OS-specific details when writing software + that uses serial ports. + + http://sigrok.org/wiki/Libserialport diff --git a/package/libserialport/libserialport.hash b/package/libserialport/libserialport.hash new file mode 100644 index 00000000..39f0c8f1 --- /dev/null +++ b/package/libserialport/libserialport.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 4a2af9d9c3ff488e92fb75b4ba38b35bcf9b8a66df04773eba2a7bbf1fa7529d libserialport-0.1.1.tar.gz +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 COPYING diff --git a/package/libserialport/libserialport.mk b/package/libserialport/libserialport.mk new file mode 100644 index 00000000..84d7a531 --- /dev/null +++ b/package/libserialport/libserialport.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libserialport +# +################################################################################ + +LIBSERIALPORT_VERSION = 0.1.1 +LIBSERIALPORT_SITE = http://sigrok.org/download/source/libserialport +LIBSERIALPORT_LICENSE = LGPL-3.0+ +LIBSERIALPORT_LICENSE_FILES = COPYING +LIBSERIALPORT_INSTALL_STAGING = YES +LIBSERIALPORT_DEPENDENCIES = host-pkgconf +LIBSERIALPORT_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/libsexy/Config.in b/package/libsexy/Config.in new file mode 100644 index 00000000..a2a2cc82 --- /dev/null +++ b/package/libsexy/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBSEXY + bool "libsexy" + depends on BR2_PACKAGE_LIBGTK2 + select BR2_PACKAGE_LIBXML2 + help + libsexy is a collection of GTK+ widgets that extend the + functionality of such standard widgets as GtkEntry and + GtkLabel by subclassing them and working around the + limitations of the widgets. + + https://blog.chipx86.com/tag/libsexy/ diff --git a/package/libsexy/libsexy.hash b/package/libsexy/libsexy.hash new file mode 100644 index 00000000..6f47e8ba --- /dev/null +++ b/package/libsexy/libsexy.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 8c4101a8cda5fccbba85ba1a15f46f2cf75deaa8b3c525ce5b135b9e1a8fe49e libsexy-0.1.11.tar.gz +sha256 a190dc9c8043755d90f8b0a75fa66b9e42d4af4c980bf5ddc633f0124db3cee7 COPYING diff --git a/package/libsexy/libsexy.mk b/package/libsexy/libsexy.mk new file mode 100644 index 00000000..b0792641 --- /dev/null +++ b/package/libsexy/libsexy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libsexy +# +################################################################################ + +LIBSEXY_VERSION = 0.1.11 +LIBSEXY_SITE = http://releases.chipx86.com/libsexy/libsexy +LIBSEXY_DEPENDENCIES = libgtk2 libxml2 +LIBSEXY_INSTALL_STAGING = YES +LIBSEXY_LICENSE = LGPL-2.1+ +LIBSEXY_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/libsha1/Config.in b/package/libsha1/Config.in new file mode 100644 index 00000000..5467a6c4 --- /dev/null +++ b/package/libsha1/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBSHA1 + bool "libsha1" + help + libsha1 is a tiny library providing SHA1 implementation, + created for facilitating X server compilation on devices + when larger libraries containing SHA1 implementations + (OpenSSL, Mozilla NSS) are not needed. + + https://github.com/dottedmag/libsha1 diff --git a/package/libsha1/libsha1.hash b/package/libsha1/libsha1.hash new file mode 100644 index 00000000..e896a2f5 --- /dev/null +++ b/package/libsha1/libsha1.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 ef4c75007ac41c3dc09e0225943c789ba2b9c632a6cd7b548e0519477ac2f768 libsha1-0.3.tar.gz +sha256 4c387926596bfeacc5b72ebeb96ab36c299a07568e18592c727a6c11dd512c20 COPYING diff --git a/package/libsha1/libsha1.mk b/package/libsha1/libsha1.mk new file mode 100644 index 00000000..4d80f3aa --- /dev/null +++ b/package/libsha1/libsha1.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# libsha1 +# +################################################################################ + +LIBSHA1_VERSION = 0.3 +LIBSHA1_SITE = $(call github,dottedmag,libsha1,$(LIBSHA1_VERSION)) +LIBSHA1_LICENSE = BSD-3-Clause or GPL +LIBSHA1_LICENSE_FILES = COPYING + +LIBSHA1_INSTALL_STAGING = YES + +# We're getting the source code from GitHub, so there is no generated +# configure script in the tarball. +LIBSHA1_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/libshairplay/Config.in b/package/libshairplay/Config.in new file mode 100644 index 00000000..1cfbdfe4 --- /dev/null +++ b/package/libshairplay/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBSHAIRPLAY + bool "libshairplay" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # avahi + depends on !BR2_STATIC_LIBS # avahi + select BR2_PACKAGE_AVAHI + select BR2_PACKAGE_AVAHI_DAEMON + select BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY # runtime + help + libshairplay is a client library that emulates an airplay + server. + + https://github.com/juhovh/shairplay + +comment "libshairplay needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/libshairplay/libshairplay.hash b/package/libshairplay/libshairplay.hash new file mode 100644 index 00000000..9b12b5a5 --- /dev/null +++ b/package/libshairplay/libshairplay.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 49ac0e0470ec6367f720c7b79a09165138f57b60f5949a2d9c38be5823d13294 libshairplay-ce80e005908f41d0e6fde1c4a21e9cb8ee54007b.tar.gz +sha256 0ac7d61c52aff5717c02250ca0adf0ef35019e2c0838a3479b8fce597aea6fde LICENSE diff --git a/package/libshairplay/libshairplay.mk b/package/libshairplay/libshairplay.mk new file mode 100644 index 00000000..4b2883cd --- /dev/null +++ b/package/libshairplay/libshairplay.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libshairplay +# +################################################################################ + +LIBSHAIRPLAY_VERSION = ce80e005908f41d0e6fde1c4a21e9cb8ee54007b +LIBSHAIRPLAY_SITE = $(call github,juhovh,shairplay,$(LIBSHAIRPLAY_VERSION)) +LIBSHAIRPLAY_INSTALL_STAGING = YES +LIBSHAIRPLAY_AUTORECONF = YES +LIBSHAIRPLAY_LICENSE = MIT, BSD-3-Clause, LGPL-2.1+ +LIBSHAIRPLAY_LICENSE_FILES = LICENSE +LIBSHAIRPLAY_DEPENDENCIES = host-pkgconf $(if $(BR2_PACKAGE_LIBAO),libao) + +$(eval $(autotools-package)) diff --git a/package/libshdata/0001-backend-Add-missing-include-files.patch b/package/libshdata/0001-backend-Add-missing-include-files.patch new file mode 100644 index 00000000..78c9e669 --- /dev/null +++ b/package/libshdata/0001-backend-Add-missing-include-files.patch @@ -0,0 +1,47 @@ +From 3eaf11bd957555674f5993435ef79dd4717ce890 Mon Sep 17 00:00:00 2001 +From: Herve Codina +Date: Tue, 26 Oct 2021 08:45:10 +0200 +Subject: [PATCH] backend: Add missing include files + +With some libc library (musl), shd_dev_mem.c and shd_shm.c do not +compile. Indeed, open() needs (Cf. man open). + +This patch fixes the compilation issue adding this +include file. + +This patch was submitted upstream. +https://github.com/Parrot-Developers/libshdata/issues/1 + +Signed-off-by: Herve Codina +--- + src/backend/shd_dev_mem.c | 1 + + src/backend/shd_shm.c | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/src/backend/shd_dev_mem.c b/src/backend/shd_dev_mem.c +index 14573c1..a65f052 100644 +--- a/src/backend/shd_dev_mem.c ++++ b/src/backend/shd_dev_mem.c +@@ -33,6 +33,7 @@ + #include + #include + #include /* For ftruncate */ ++#include /* For open */ + #include /* for flock */ + #include /* For shm and PROT flags */ + #include +diff --git a/src/backend/shd_shm.c b/src/backend/shd_shm.c +index 117bf01..1e5a38c 100644 +--- a/src/backend/shd_shm.c ++++ b/src/backend/shd_shm.c +@@ -35,6 +35,7 @@ + #include + #include + #include /* For ftruncate */ ++#include /* For open */ + #include /* For NAME_MAX macro */ + #include /* for flock */ + #include /* For shm and PROT flags */ +-- +2.31.1 + diff --git a/package/libshdata/0002-examples-stress_test-Fix-build-with-musl-libc.patch b/package/libshdata/0002-examples-stress_test-Fix-build-with-musl-libc.patch new file mode 100644 index 00000000..c2a8e5f2 --- /dev/null +++ b/package/libshdata/0002-examples-stress_test-Fix-build-with-musl-libc.patch @@ -0,0 +1,37 @@ +From ddded7337812a2797d31f276624da98932d8e17f Mon Sep 17 00:00:00 2001 +From: Herve Codina +Date: Sun, 9 Jan 2022 14:59:27 +0100 +Subject: [PATCH] examples/stress_test: Fix build with musl libc + +The musl C library uses sched_priority instead of +__sched_priority as GNU libc and uClibc do. +Use sched_priority instead. + +This does not break compilation with GNU libc and uClibc +because they both define in sched.h: + #define sched_priority __sched_priority + +This patch was submitted upstream. +https://github.com/Parrot-Developers/libshdata/issues/3 + +Signed-off-by: Herve Codina +--- + examples/stress_test.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/examples/stress_test.c b/examples/stress_test.c +index a859115..cfb5418 100644 +--- a/examples/stress_test.c ++++ b/examples/stress_test.c +@@ -617,7 +617,7 @@ static void launch_test(int timer_fd, struct test_setup *setup) + if (ret < 0) + ULOGI("Error setting the timer : %s", strerror(errno)); + struct sched_param sched_params; +- sched_params.__sched_priority = sched_get_priority_max(SCHED_RR); ++ sched_params.sched_priority = sched_get_priority_max(SCHED_RR); + + pid_t pid = fork(); + +-- +2.33.1 + diff --git a/package/libshdata/Config.in b/package/libshdata/Config.in new file mode 100644 index 00000000..b2c24c94 --- /dev/null +++ b/package/libshdata/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_LIBSHDATA + bool "libshdata" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_TOOLCHAIN_HAS_ATOMIC # libfutils + depends on BR2_INSTALL_LIBSTDCPP # libfutils + depends on BR2_TOOLCHAIN_HAS_THREADS # libfutils + select BR2_PACKAGE_LIBFUTILS + select BR2_PACKAGE_ULOG + help + This library provides lock free shared-memory tools + + https://github.com/Parrot-Developers/libshdata + +if BR2_PACKAGE_LIBSHDATA + +config BR2_PACKAGE_LIBSHDATA_STRESS + bool "libshdata-stress binary" + depends on !BR2_STATIC_LIBS + help + Install libshdata-stress binary as well + +comment "libshdata-stress needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +endif + +comment "libshdata needs a toolchain w/ C++, threads" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libshdata/libshdata.hash b/package/libshdata/libshdata.hash new file mode 100644 index 00000000..880404cf --- /dev/null +++ b/package/libshdata/libshdata.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 1ae83ac73c2b5b17c726067737b8d446b99f190e16fe6198eb464368796ecce3 libshdata-d9ec4bdba834d8f3daf6bf9aa6da374bc462961f.tar.gz +sha256 eca11a1c62fae8d64a1247d93271375baecff8396141d7ff8d89671ee7e3ed0d COPYING diff --git a/package/libshdata/libshdata.mk b/package/libshdata/libshdata.mk new file mode 100644 index 00000000..2e600359 --- /dev/null +++ b/package/libshdata/libshdata.mk @@ -0,0 +1,68 @@ +################################################################################ +# +# libshdata +# +################################################################################ + +LIBSHDATA_VERSION = d9ec4bdba834d8f3daf6bf9aa6da374bc462961f +LIBSHDATA_SITE = $(call github,Parrot-Developers,libshdata,$(LIBSHDATA_VERSION)) +LIBSHDATA_LICENSE = BSD-3-Clause +LIBSHDATA_LICENSE_FILES = COPYING +LIBSHDATA_DEPENDENCIES = libfutils ulog host-alchemy +LIBSHDATA_INSTALL_STAGING = YES + +LIBSHDATA_TARGETS = libshdata +ifeq ($(BR2_PACKAGE_LIBSHDATA_STRESS),y) +LIBSHDATA_TARGETS += libshdata-stress +endif + +LIBSHDATA_TARGET_ENV = \ + $(ALCHEMY_TARGET_ENV) \ + ALCHEMY_TARGET_SDK_DIRS="$(ALCHEMY_SDK_BASEDIR)/libfutils $(ALCHEMY_SDK_BASEDIR)/ulog" + +define LIBSHDATA_BUILD_CMDS + $(LIBSHDATA_TARGET_ENV) $(ALCHEMY_MAKE) $(LIBSHDATA_TARGETS) +endef + +ifeq ($(BR2_SHARED_LIBS),) +define LIBSHDATA_INSTALL_STATIC_LIBS + $(INSTALL) -D -m 644 $(@D)/alchemy-out/staging/usr/lib/libshdata.a \ + $(STAGING_DIR)/usr/lib/libshdata.a +endef +endif + +ifeq ($(BR2_STATIC_LIBS),) +# $(1): destination directory: target or staging +define LIBSHDATA_INSTALL_SHARED_LIBS + mkdir -p $(1)/usr/lib/ + $(INSTALL) -m 644 $(@D)/alchemy-out/staging/usr/lib/libshdata.so* \ + $(1)/usr/lib/ +endef +endif + +ifeq ($(BR2_PACKAGE_LIBSHDATA_STRESS),y) +define LIBSHDATA_INSTALL_BIN + $(INSTALL) -D -m 755 $(@D)/alchemy-out/staging/usr/bin/libshdata-stress \ + $(TARGET_DIR)/usr/bin/libshdata-stress +endef +endif + +define LIBSHDATA_INSTALL_TARGET_CMDS + $(LIBSHDATA_INSTALL_BIN) + $(call LIBSHDATA_INSTALL_SHARED_LIBS, $(TARGET_DIR)) +endef + +# Even in dynamic libraries only, libshdata-section-lookup is only built as +# a static lib (include $(BUILD_STATIC_LIBRARY) in atom.mk) and it is needed +# for libshdata usage. +define LIBSHDATA_INSTALL_STAGING_CMDS + mkdir -p $(STAGING_DIR)/usr/include/ + $(INSTALL) -m 644 $(@D)/include/* $(STAGING_DIR)/usr/include/ + $(INSTALL) -D -m 644 $(@D)/alchemy-out/staging/usr/lib/libshdata-section-lookup.a \ + $(STAGING_DIR)/usr/lib/libshdata-section-lookup.a + $(LIBSHDATA_INSTALL_STATIC_LIBS) + $(call LIBSHDATA_INSTALL_SHARED_LIBS, $(STAGING_DIR)) + $(call ALCHEMY_INSTALL_LIB_SDK_FILE, libshdata, libshdata.so, libfutils libulog) +endef + +$(eval $(generic-package)) diff --git a/package/libshout/Config.in b/package/libshout/Config.in new file mode 100644 index 00000000..6a7560b3 --- /dev/null +++ b/package/libshout/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBSHOUT + bool "libshout" + select BR2_PACKAGE_LIBOGG + help + Libshout is a library for communicating with and sending data + to an icecast server. It handles the socket connection, the + timing of the data, and prevents bad data from getting to the + icecast server. + + http://icecast.org/download/ diff --git a/package/libshout/libshout.hash b/package/libshout/libshout.hash new file mode 100644 index 00000000..d562b523 --- /dev/null +++ b/package/libshout/libshout.hash @@ -0,0 +1,8 @@ +# From https://ftp.osuosl.org/pub/xiph/releases/libshout/SHA512SUMS +sha512 e8478cdbf9a27674c16a7b620d1576f2e31a47262b8e29b314d0f46d4e5be24b9a29790b7b226f48939bc34cacf5734fae0aa5686c7ed5879cdbd827ff8e0339 libshout-2.4.6.tar.gz + +# From https://ftp.osuosl.org/pub/xiph/releases/libshout/SHA256SUMS +sha256 39cbd4f0efdfddc9755d88217e47f8f2d7108fa767f9d58a2ba26a16d8f7c910 libshout-2.4.6.tar.gz + +# Hash for license file +sha256 7a4436f9ec37603356791c87de3bc444989befd2682d29efb3d97604e04c1852 COPYING diff --git a/package/libshout/libshout.mk b/package/libshout/libshout.mk new file mode 100644 index 00000000..be637867 --- /dev/null +++ b/package/libshout/libshout.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# libshout +# +################################################################################ + +LIBSHOUT_VERSION = 2.4.6 +LIBSHOUT_SITE = https://downloads.xiph.org/releases/libshout +LIBSHOUT_LICENSE = LGPL-2.0+ +LIBSHOUT_LICENSE_FILES = COPYING +LIBSHOUT_INSTALL_STAGING = YES +LIBSHOUT_DEPENDENCIES = host-pkgconf libogg +LIBSHOUT_CONF_OPTS = \ + --disable-examples \ + --disable-tools + +ifeq ($(BR2_PACKAGE_LIBTHEORA),y) +LIBSHOUT_CONF_OPTS += --enable-theora +LIBSHOUT_DEPENDENCIES += libtheora +else +LIBSHOUT_CONF_OPTS += --disable-theora +endif + +ifeq ($(BR2_PACKAGE_LIBVORBIS),y) +LIBSHOUT_CONF_OPTS += --enable-vorbis +LIBSHOUT_DEPENDENCIES += libvorbis +else +LIBSHOUT_CONF_OPTS += --disable-vorbis +endif + +ifeq ($(BR2_PACKAGE_SPEEX),y) +LIBSHOUT_CONF_OPTS += --enable-speex +LIBSHOUT_DEPENDENCIES += speex +else +LIBSHOUT_CONF_OPTS += --disable-speex +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBSHOUT_CONF_OPTS += --with-openssl +LIBSHOUT_DEPENDENCIES += openssl +else +LIBSHOUT_CONF_OPTS += --without-openssl +endif + +$(eval $(autotools-package)) diff --git a/package/libsidplay2/0001-sidplay2-libs-2.1.1.patch b/package/libsidplay2/0001-sidplay2-libs-2.1.1.patch new file mode 100644 index 00000000..7c6813bb --- /dev/null +++ b/package/libsidplay2/0001-sidplay2-libs-2.1.1.patch @@ -0,0 +1,227 @@ +From 38493fceb39ac33e12c9c69d78f5584413b479f4 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Wed, 1 Mar 2017 10:03:40 +0100 +Subject: [PATCH] Various fixes to compile libsidplay2 with newer gcc compilers + +Downloaded from +http://tsubasa.googlecode.com/svn/trunk/tsubasa/sidplay2-libs/sidplay2-libs-2.1.1.diff + +Signed-off-by: Bernd Kuhls +[Thomas: adjusted to avoid the need to autoreconf, which doesn't work +properly on this package.] +Signed-off-by: Thomas Petazzoni +--- + builders/hardsid-builder/src/hardsid-builder.cpp | 1 + + builders/resid-builder/src/resid-builder.cpp | 1 + + builders/resid-builder/src/resid.cpp | 1 + + configure | 2 +- + libsidplay/configure | 5 +++-- + libsidplay/include/sidplay/SmartPtr.h | 28 ++++++++++++------------ + libsidplay/include/sidplay/sidendian.h | 18 +++++++++------ + libsidutils/include/sidplay/utils/SidUsage.h | 2 +- + 8 files changed, 33 insertions(+), 25 deletions(-) + +diff --git a/builders/hardsid-builder/src/hardsid-builder.cpp b/builders/hardsid-builder/src/hardsid-builder.cpp +index f54d0a9..9375e40 100644 +--- a/builders/hardsid-builder/src/hardsid-builder.cpp ++++ b/builders/hardsid-builder/src/hardsid-builder.cpp +@@ -47,6 +47,7 @@ + ***************************************************************************/ + + #include ++#include + #include "config.h" + + #ifdef HAVE_EXCEPTIONS +diff --git a/builders/resid-builder/src/resid-builder.cpp b/builders/resid-builder/src/resid-builder.cpp +index e6e4eaa..4c7650f 100644 +--- a/builders/resid-builder/src/resid-builder.cpp ++++ b/builders/resid-builder/src/resid-builder.cpp +@@ -37,6 +37,7 @@ + ***************************************************************************/ + + #include ++#include + + #include "config.h" + #ifdef HAVE_EXCEPTIONS +diff --git a/builders/resid-builder/src/resid.cpp b/builders/resid-builder/src/resid.cpp +index 8c27850..d3123c5 100644 +--- a/builders/resid-builder/src/resid.cpp ++++ b/builders/resid-builder/src/resid.cpp +@@ -16,6 +16,7 @@ + * * + ***************************************************************************/ + ++#include + #include "config.h" + + #ifdef HAVE_EXCEPTIONS +diff --git a/configure b/configure +index 1200eaf..77948b4 100755 +--- a/configure ++++ b/configure +@@ -1227,7 +1227,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + + #Variables + pwd=`pwd` +-builders='${libdir}'/sidplay/builders ++builders='${libdir}'/ + ac_configure_args="$ac_configure_args --disable-library-checks" + + ac_aux_dir= +diff --git a/libsidplay/configure b/libsidplay/configure +index 05a8ea6..3d93956 100755 +--- a/libsidplay/configure ++++ b/libsidplay/configure +@@ -23466,8 +23466,9 @@ _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include +- #include ++#include ++ #include ++ using namespace std; + int + main () + { +diff --git a/libsidplay/include/sidplay/SmartPtr.h b/libsidplay/include/sidplay/SmartPtr.h +index c0cbb1a..15efd10 100644 +--- a/libsidplay/include/sidplay/SmartPtr.h ++++ b/libsidplay/include/sidplay/SmartPtr.h +@@ -17,16 +17,16 @@ class SmartPtrBase_sidtt + doFree = bufOwner; + if ( bufferLen >= 1 ) + { +- pBufCurrent = ( bufBegin = buffer ); +- bufEnd = bufBegin + bufferLen; +- bufLen = bufferLen; +- status = true; ++ this->pBufCurrent = ( this->bufBegin = buffer ); ++ this->bufEnd = this->bufBegin + bufferLen; ++ this->bufLen = bufferLen; ++ this->status = true; + } + else + { +- pBufCurrent = ( bufBegin = ( bufEnd = 0 )); +- bufLen = 0; +- status = false; ++ this->pBufCurrent = ( this->bufBegin = ( this->bufEnd = 0 )); ++ this->bufLen = 0; ++ this->status = false; + } + } + +@@ -211,16 +211,16 @@ class SmartPtr_sidtt : public SmartPtrBase_sidtt + { + if ( bufferLen >= 1 ) + { +- pBufCurrent = ( bufBegin = buffer ); +- bufEnd = bufBegin + bufferLen; +- bufLen = bufferLen; +- status = true; ++ this->pBufCurrent = ( this->bufBegin = buffer ); ++ this->bufEnd = this->bufBegin + bufferLen; ++ this->bufLen = bufferLen; ++ this->status = true; + } + else + { +- pBufCurrent = bufBegin = bufEnd = 0; +- bufLen = 0; +- status = false; ++ this->pBufCurrent = this->bufBegin = this->bufEnd = 0; ++ this->bufLen = 0; ++ this->status = false; + } + } + }; +diff --git a/libsidplay/include/sidplay/sidendian.h b/libsidplay/include/sidplay/sidendian.h +index 9fa8582..6115282 100644 +--- a/libsidplay/include/sidplay/sidendian.h ++++ b/libsidplay/include/sidplay/sidendian.h +@@ -16,6 +16,10 @@ + ***************************************************************************/ + /*************************************************************************** + * $Log: sidendian.h,v $ ++ * Revision 1.6 2005/11/20 11:02:06 s_a_white ++ * Work around for bug in gcc 4 (optimiser breaks if variable never has a ++ * direct assignment). ++ * + * Revision 1.5 2001/07/03 22:44:13 s_a_white + * Added endian_16 to convert a 16 bit value to an array of 8s. + * +@@ -141,7 +145,7 @@ inline void endian_16swap8 (uint_least16_t &word) + // Convert high-byte and low-byte to 16-bit word. + inline uint_least16_t endian_16 (uint8_t hi, uint8_t lo) + { +- uint_least16_t word; ++ uint_least16_t word = 0; + endian_16lo8 (word, lo); + endian_16hi8 (word, hi); + return word; +@@ -165,7 +169,7 @@ inline void endian_16 (uint8_t ptr[2], uint_least16_t word) + + inline void endian_16 (char ptr[2], uint_least16_t word) + { +- endian_16 ((uint8_t *) ptr, word); ++ endian_16 ((uint8_t *) ptr, word); + } + + // Convert high-byte and low-byte to 16-bit little endian word. +@@ -334,7 +338,7 @@ inline void endian_32swap16 (uint_least32_t &dword) + // Swap word endian. + inline void endian_32swap8 (uint_least32_t &dword) + { +- uint_least16_t lo, hi; ++ uint_least16_t lo = 0, hi = 0; + lo = endian_32lo16 (dword); + hi = endian_32hi16 (dword); + endian_16swap8 (lo); +@@ -346,8 +350,8 @@ inline void endian_32swap8 (uint_least32_t &dword) + // Convert high-byte and low-byte to 32-bit word. + inline uint_least32_t endian_32 (uint8_t hihi, uint8_t hilo, uint8_t hi, uint8_t lo) + { +- uint_least32_t dword; +- uint_least16_t word; ++ uint_least32_t dword = 0; ++ uint_least16_t word = 0; + endian_32lo8 (dword, lo); + endian_32hi8 (dword, hi); + endian_16lo8 (word, hilo); +@@ -374,7 +378,7 @@ inline void endian_little32 (uint8_t ptr[4], uint_least32_t dword) + defined(SID_WORDS_LITTLEENDIAN) + *((uint_least32_t *) ptr) = dword; + #else +- uint_least16_t word; ++ uint_least16_t word = 0; + ptr[0] = endian_32lo8 (dword); + ptr[1] = endian_32hi8 (dword); + word = endian_32hi16 (dword); +@@ -401,7 +405,7 @@ inline void endian_big32 (uint8_t ptr[4], uint_least32_t dword) + defined(SID_WORDS_BIGENDIAN) + *((uint_least32_t *) ptr) = dword; + #else +- uint_least16_t word; ++ uint_least16_t word = 0; + word = endian_32hi16 (dword); + ptr[1] = endian_16lo8 (word); + ptr[0] = endian_16hi8 (word); +diff --git a/libsidutils/include/sidplay/utils/SidUsage.h b/libsidutils/include/sidplay/utils/SidUsage.h +index 2afb0f3..0496eea 100755 +--- a/libsidutils/include/sidplay/utils/SidUsage.h ++++ b/libsidutils/include/sidplay/utils/SidUsage.h +@@ -33,7 +33,7 @@ struct sid2_usage_t: public sid_usage_t + uint_least16_t length; // usage scan length + + // Copy common parts of basic usage to extended usage. +- sid2_usage_t &sid2_usage_t::operator= (const sid_usage_t &usage) ++ sid2_usage_t &operator= (const sid_usage_t &usage) + { + *((sid_usage_t *) this) = usage; + return *this; +-- +2.7.4 + diff --git a/package/libsidplay2/0002-pkg-config.patch b/package/libsidplay2/0002-pkg-config.patch new file mode 100644 index 00000000..ce37e942 --- /dev/null +++ b/package/libsidplay2/0002-pkg-config.patch @@ -0,0 +1,25 @@ +Include correct libdir in pkgconfig files + +Downloaded from +https://sources.debian.net/src/sidplay-libs/2.1.1-14/debian/patches/pkg-config.patch/ + +Signed-off-by: Bernd Kuhls + +--- sidplay-libs-2.1.1.orig/libsidplay/unix/libsidplay2.pc.in ++++ sidplay-libs-2.1.1/libsidplay/unix/libsidplay2.pc.in +@@ -7,5 +7,5 @@ builders=@builders@ + Name: @PACKAGE@ + Description: C64 cycle exact stereo sidplayer library. + Version: @VERSION@ +-Libs: ${libdir}/libsidplay2.la ++Libs: -L${libdir} -lsidplay2 + Cflags: -DHAVE_UNIX -I${includedir} +--- sidplay-libs-2.1.1.orig/libsidutils/unix/libsidutils.pc.in ++++ sidplay-libs-2.1.1/libsidutils/unix/libsidutils.pc.in +@@ -6,5 +6,5 @@ includedir=@includedir@ + Name: @PACKAGE@ + Description: Utils for supporting the libsidplay2 library. + Version: @VERSION@ +-Libs: ${libdir}/libsidutils.la ++Libs: -L${libdir} -lsidutils + Cflags: -DHAVE_UNIX -I${includedir} diff --git a/package/libsidplay2/0003-gcc6.patch b/package/libsidplay2/0003-gcc6.patch new file mode 100644 index 00000000..53601f6d --- /dev/null +++ b/package/libsidplay2/0003-gcc6.patch @@ -0,0 +1,44 @@ +Fix build with gcc6 + +gcc6 triggers an error during build: + +xsid.cpp:101:1: error: narrowing conversion of ''\200'' from 'char' to 'int8_t {aka signed char}' inside { } [-Wnarrowing] + }; + ^ +xsid.cpp:101:1: error: narrowing conversion of ''\224'' from 'char' to 'int8_t {aka signed char}' inside { } [-Wnarrowing] +xsid.cpp:101:1: error: narrowing conversion of ''\251'' from 'char' to 'int8_t {aka signed char}' inside { } [-Wnarrowing] +xsid.cpp:101:1: error: narrowing conversion of ''\274'' from 'char' to 'int8_t {aka signed char}' inside { } [-Wnarrowing] +xsid.cpp:101:1: error: narrowing conversion of ''\316'' from 'char' to 'int8_t {aka signed char}' inside { } [-Wnarrowing] +xsid.cpp:101:1: error: narrowing conversion of ''\341'' from 'char' to 'int8_t {aka signed char}' inside { } [-Wnarrowing] +xsid.cpp:101:1: error: narrowing conversion of ''\362'' from 'char' to 'int8_t {aka signed char}' inside { } [-Wnarrowing] + +To fix the problem change the array type from int8_t to char as proposed +by Khem Raj: +http://lists.busybox.net/pipermail/buildroot/2016-August/169540.html + +Signed-off-by: Bernd Kuhls + +diff -uNr sidplay-libs-2.1.1.org/libsidplay/src/xsid/xsid.cpp sidplay-libs-2.1.1/libsidplay/src/xsid/xsid.cpp +--- sidplay-libs-2.1.1.org/libsidplay/src/xsid/xsid.cpp 2004-06-14 22:08:02.000000000 +0200 ++++ sidplay-libs-2.1.1/libsidplay/src/xsid/xsid.cpp 2016-08-12 18:10:20.000000000 +0200 +@@ -94,7 +94,7 @@ + '\x08', '\x19', '\x2a', '\x3b', '\x4c', '\x5d', '\x6e', '\x7f' + }; + */ +-const int8_t XSID::sampleConvertTable[16] = ++const char XSID::sampleConvertTable[16] = + { + '\x80', '\x94', '\xa9', '\xbc', '\xce', '\xe1', '\xf2', '\x03', + '\x1b', '\x2a', '\x3b', '\x49', '\x58', '\x66', '\x73', '\x7f' +diff -uNr sidplay-libs-2.1.1.org/libsidplay/src/xsid/xsid.h sidplay-libs-2.1.1/libsidplay/src/xsid/xsid.h +--- sidplay-libs-2.1.1.org/libsidplay/src/xsid/xsid.h 2004-06-14 22:08:02.000000000 +0200 ++++ sidplay-libs-2.1.1/libsidplay/src/xsid/xsid.h 2016-08-12 18:11:01.000000000 +0200 +@@ -238,7 +238,7 @@ + uint8_t sidData0x18; + bool _sidSamples; + int8_t sampleOffset; +- static const int8_t sampleConvertTable[16]; ++ static const char sampleConvertTable[16]; + bool wasRunning; + + private: diff --git a/package/libsidplay2/Config.in b/package/libsidplay2/Config.in new file mode 100644 index 00000000..1bbe49ba --- /dev/null +++ b/package/libsidplay2/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBSIDPLAY2 + bool "libsidplay2" + depends on BR2_INSTALL_LIBSTDCPP + help + Sidplay 2 is the second in the Sidplay series originally + developed by Michael Schwendt. This version is written by + Simon White and is cycle accurate for improved sound + reproduction. Sidplay 2 is capable of playing all C64 mono and + stereo file formats. + + http://sourceforge.net/projects/sidplay2 + +comment "libsidplay2 needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/libsidplay2/libsidplay2.hash b/package/libsidplay2/libsidplay2.hash new file mode 100644 index 00000000..b6ba26d6 --- /dev/null +++ b/package/libsidplay2/libsidplay2.hash @@ -0,0 +1,4 @@ +# From http://sourceforge.net/projects/sidplay2/files/sidplay2/sidplay-libs-2.1.1/ +sha1 8af6350866edc30b0d331e075fa97292f6f645a5 sidplay-libs-2.1.1.tar.gz +# Locally computed +sha256 b8a2f73f743dc1a51aff23f1aacbca4b868564db52496fa3c0caba755bfd1eaf libsidplay/COPYING diff --git a/package/libsidplay2/libsidplay2.mk b/package/libsidplay2/libsidplay2.mk new file mode 100644 index 00000000..20af7726 --- /dev/null +++ b/package/libsidplay2/libsidplay2.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libsidplay2 +# +################################################################################ + +LIBSIDPLAY2_VERSION = 2.1.1 +LIBSIDPLAY2_SOURCE = sidplay-libs-$(LIBSIDPLAY2_VERSION).tar.gz +LIBSIDPLAY2_SITE = http://downloads.sourceforge.net/project/sidplay2/sidplay2/sidplay-libs-$(LIBSIDPLAY2_VERSION) +LIBSIDPLAY2_LICENSE = GPL-2.0+ +LIBSIDPLAY2_LICENSE_FILES = libsidplay/COPYING +LIBSIDPLAY2_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/libsigc/Config.in b/package/libsigc/Config.in new file mode 100644 index 00000000..4bea5965 --- /dev/null +++ b/package/libsigc/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBSIGC + bool "libsigc++ (latest)" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17 + depends on BR2_INSTALL_LIBSTDCPP + help + libsigc++ implements a typesafe callback system for standard + C++. It allows you to define signals and to connect those + signals to any callback function, either global or a member + function, regardless of whether it is static or virtual. + + https://libsigcplusplus.github.io/libsigcplusplus/ + +comment "libsigc++ needs a toolchain w/ C++, gcc >= 7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_7 diff --git a/package/libsigc/libsigc.hash b/package/libsigc/libsigc.hash new file mode 100644 index 00000000..6becfb19 --- /dev/null +++ b/package/libsigc/libsigc.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/libsigc++/3.4/libsigc++-3.4.0.sha256sum +sha256 02e2630ffb5ce93cd52c38423521dfe7063328863a6e96d41d765a6116b8707e libsigc++-3.4.0.tar.xz + +# Locally calculated +sha256 97628afebc60f026f5c2b25d7491c46a5c4ee61f693e7cfa07fbd2c03605979b COPYING diff --git a/package/libsigc/libsigc.mk b/package/libsigc/libsigc.mk new file mode 100644 index 00000000..c054575e --- /dev/null +++ b/package/libsigc/libsigc.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# libsigc +# +################################################################################ + +LIBSIGC_VERSION_MAJOR = 3.4 +LIBSIGC_VERSION = $(LIBSIGC_VERSION_MAJOR).0 +LIBSIGC_SOURCE = libsigc++-$(LIBSIGC_VERSION).tar.xz +LIBSIGC_SITE = https://download.gnome.org/sources/libsigc++/$(LIBSIGC_VERSION_MAJOR) +LIBSIGC_INSTALL_STAGING = YES +LIBSIGC_LICENSE = LGPL-3.0+ +LIBSIGC_LICENSE_FILES = COPYING +LIBSIGC_CONF_OPTS = \ + -Dbuild-examples=false \ + -Dbuild-tests=false \ + -Dvalidation=false + +$(eval $(meson-package)) diff --git a/package/libsigc2/Config.in b/package/libsigc2/Config.in new file mode 100644 index 00000000..e302e27a --- /dev/null +++ b/package/libsigc2/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBSIGC2 + bool "libsigc++ (2.x.x)" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + depends on BR2_INSTALL_LIBSTDCPP + help + libsigc++ implements a typesafe callback system for standard + C++. It allows you to define signals and to connect those + signals to any callback function, either global or a member + function, regardless of whether it is static or virtual. + + This is the last version before the API and ABI change + introduced in 3.0.0 which requires C++17. + + https://libsigcplusplus.github.io/libsigcplusplus/ + +comment "libsigc++ (2.x.x) needs a toolchain w/ C++, gcc >= 4.9" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/libsigc2/libsigc2.hash b/package/libsigc2/libsigc2.hash new file mode 100644 index 00000000..48112135 --- /dev/null +++ b/package/libsigc2/libsigc2.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/libsigc++/2.12/libsigc++-2.12.0.sha256sum +sha256 1c466d2e64b34f9b118976eb21b138c37ed124d0f61497df2a90ce6c3d9fa3b5 libsigc++-2.12.0.tar.xz + +# Locally calculated +sha256 5bbcbb737e60fe9deba08ecbd00920cfcc3403ba2e534c64fdeea49d6bb87509 COPYING diff --git a/package/libsigc2/libsigc2.mk b/package/libsigc2/libsigc2.mk new file mode 100644 index 00000000..845d03ba --- /dev/null +++ b/package/libsigc2/libsigc2.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# libsigc2 +# +################################################################################ + +LIBSIGC2_VERSION_MAJOR = 2.12 +LIBSIGC2_VERSION = $(LIBSIGC2_VERSION_MAJOR).0 +LIBSIGC2_SOURCE = libsigc++-$(LIBSIGC2_VERSION).tar.xz +LIBSIGC2_SITE = https://download.gnome.org/sources/libsigc++/$(LIBSIGC2_VERSION_MAJOR) +LIBSIGC2_INSTALL_STAGING = YES +LIBSIGC2_LICENSE = LGPL-2.1+ +LIBSIGC2_LICENSE_FILES = COPYING +LIBSIGC2_CONF_OPTS = \ + -Dbuild-examples=false \ + -Dbuild-tests=false \ + -Dvalidation=false + +$(eval $(meson-package)) diff --git a/package/libsigrok/0001-Support-glibmm-2.68.patch b/package/libsigrok/0001-Support-glibmm-2.68.patch new file mode 100644 index 00000000..14d14ec4 --- /dev/null +++ b/package/libsigrok/0001-Support-glibmm-2.68.patch @@ -0,0 +1,129 @@ +From 31ad5ec50ec0c9cc7a92f009925c5f58aecdcce1 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 30 Dec 2021 14:58:11 +0100 +Subject: [PATCH] Support glibmm 2.68 + +Support glibmm 2.68 which has been released one year ago and is the +first stable release in the glibmm-2.68 ABI series: +https://gitlab.gnome.org/GNOME/glibmm/-/blob/2.68.2/NEWS + +As TimeVal is not available with glibmm 2.68, use DateTime which is +available since version 2.26 + +Signed-off-by: Fabrice Fontaine +[Upstream status: +https://sourceforge.net/p/sigrok/mailman/message/37410614] +--- + README | 2 +- + bindings/cxx/classes.cpp | 13 ++++++------- + bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp | 4 ++-- + bindings/cxx/libsigrokcxx.pc.in | 2 +- + configure.ac | 7 ++++++- + 5 files changed, 16 insertions(+), 12 deletions(-) + +diff --git a/README b/README +index 768c8ca2..2515f059 100644 +--- a/README ++++ b/README +@@ -63,7 +63,7 @@ Requirements for the C++ bindings: + - doxygen (required for building the bindings, not only for C++ API docs!) + - graphviz (optional, only needed for the C++ API docs) + - Python (2 or 3) executable (development files are not needed) +- - glibmm-2.4 (>= 2.32.0) ++ - glibmm-2.4 (>= 2.32.0) or glibmm-2.68 (>= 2.68.0) + + Requirements for the Python bindings: + +diff --git a/bindings/cxx/classes.cpp b/bindings/cxx/classes.cpp +index f9f79273..de600d03 100644 +--- a/bindings/cxx/classes.cpp ++++ b/bindings/cxx/classes.cpp +@@ -287,12 +287,12 @@ shared_ptr Context::create_user_device( + default_delete{}}; + } + +-shared_ptr Context::create_header_packet(Glib::TimeVal start_time) ++shared_ptr Context::create_header_packet(Glib::DateTime start_time) + { + auto header = g_new(struct sr_datafeed_header, 1); + header->feed_version = 1; +- header->starttime.tv_sec = start_time.tv_sec; +- header->starttime.tv_usec = start_time.tv_usec; ++ header->starttime.tv_sec = start_time.to_unix(); ++ header->starttime.tv_usec = start_time.get_microsecond(); + auto packet = g_new(struct sr_datafeed_packet, 1); + packet->type = SR_DF_HEADER; + packet->payload = header; +@@ -1154,11 +1154,10 @@ int Header::feed_version() const + return _structure->feed_version; + } + +-Glib::TimeVal Header::start_time() const ++Glib::DateTime Header::start_time() const + { +- return Glib::TimeVal( +- _structure->starttime.tv_sec, +- _structure->starttime.tv_usec); ++ Glib::DateTime time = Glib::DateTime::create_now_utc(_structure->starttime.tv_sec); ++ return time.add_seconds(_structure->starttime.tv_usec / 1.0e6); + } + + Meta::Meta(const struct sr_datafeed_meta *structure) : +diff --git a/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp b/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp +index 97e54e17..d090c379 100644 +--- a/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp ++++ b/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp +@@ -274,7 +274,7 @@ public: + std::shared_ptr create_user_device( + std::string vendor, std::string model, std::string version); + /** Create a header packet. */ +- std::shared_ptr create_header_packet(Glib::TimeVal start_time); ++ std::shared_ptr create_header_packet(Glib::DateTime start_time); + /** Create a meta packet. */ + std::shared_ptr create_meta_packet( + std::map config); +@@ -711,7 +711,7 @@ public: + /* Feed version number. */ + int feed_version() const; + /* Start time of this session. */ +- Glib::TimeVal start_time() const; ++ Glib::DateTime start_time() const; + private: + explicit Header(const struct sr_datafeed_header *structure); + ~Header(); +diff --git a/bindings/cxx/libsigrokcxx.pc.in b/bindings/cxx/libsigrokcxx.pc.in +index 10a92f2d..7d2723fc 100644 +--- a/bindings/cxx/libsigrokcxx.pc.in ++++ b/bindings/cxx/libsigrokcxx.pc.in +@@ -6,7 +6,7 @@ includedir=@includedir@ + Name: libsigrokcxx + Description: C++ bindings for libsigrok + URL: http://www.sigrok.org +-Requires: libsigrok glibmm-2.4 ++Requires: libsigrok @SR_GLIBMM_REQUIRES@ + Version: @SR_PACKAGE_VERSION@ + Libs: -L${libdir} -lsigrokcxx + Libs.private: -lm +diff --git a/configure.ac b/configure.ac +index 424b0002..d70575b7 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -407,9 +407,14 @@ AS_IF([test "x$HAVE_CXX11" != x1], + [SR_APPEND([sr_cxx_missing], [', '], ['C++11'])]) + + # The C++ bindings need glibmm. +-SR_PKG_CHECK([glibmm], [SR_PKGLIBS_CXX], [glibmm-2.4 >= 2.32.0]) ++SR_GLIBMM_REQUIRES=glibmm-2.4 ++SR_PKG_CHECK([glibmm], [SR_PKGLIBS_CXX], [$SR_GLIBMM_REQUIRES >= 2.32.0]) ++AS_IF([test "x$sr_have_glibmm" != xyes], ++ [SR_GLIBMM_REQUIRES=glibmm-2.68 ++ SR_PKG_CHECK([glibmm], [SR_PKGLIBS_CXX], [$SR_GLIBMM_REQUIRES >= 2.68.0])]) + AS_IF([test "x$sr_have_glibmm" != xyes], + [SR_APPEND([sr_cxx_missing], [', '], [glibmm])]) ++AC_SUBST(SR_GLIBMM_REQUIRES) + + # The C++ bindings use Doxygen to parse libsigrok symbols. + AC_CHECK_PROG([HAVE_DOXYGEN], [doxygen], [yes], [no]) +-- +2.34.1 + diff --git a/package/libsigrok/Config.in b/package/libsigrok/Config.in new file mode 100644 index 00000000..151c4322 --- /dev/null +++ b/package/libsigrok/Config.in @@ -0,0 +1,46 @@ +config BR2_PACKAGE_LIBSIGROK + bool "libsigrok" + # libglib2 + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU + depends on BR2_ENABLE_LOCALE + depends on !BR2_STATIC_LIBS # libzip + # std=c11 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + select BR2_PACKAGE_LIBZIP + select BR2_PACKAGE_LIBGLIB2 + help + Libsigrok is a shared library written in C, which provides + the basic hardware access drivers for logic analyzers and + other supported devices, as well as input/output file format + support. + + This library is a part of the sigrok software suite. + + http://sigrok.org/wiki/Libsigrok + +if BR2_PACKAGE_LIBSIGROK + +config BR2_PACKAGE_LIBSIGROKCXX + bool "build C++ bindings" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # glibmm -> libsigc + depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-doxygen + select BR2_PACKAGE_GLIBMM + select BR2_PACKAGE_HOST_DOXYGEN + help + Build libsigrok C++ bindings as well. + +comment "C++ bindings need a toolchain w/ C++, gcc >= 7, host gcc >= 4.9" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \ + !BR2_HOST_GCC_AT_LEAST_4_9 + +endif + +comment "libsigrok needs a toolchain w/ wchar, locale, threads, dynamic library, gcc >= 4.7" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || BR2_STATIC_LIBS \ + || !BR2_ENABLE_LOCALE diff --git a/package/libsigrok/libsigrok.hash b/package/libsigrok/libsigrok.hash new file mode 100644 index 00000000..0c47ef49 --- /dev/null +++ b/package/libsigrok/libsigrok.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 4d341f90b6220d3e8cb251dacf726c41165285612248f2c52d15df4590a1ce3c libsigrok-0.5.2.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/libsigrok/libsigrok.mk b/package/libsigrok/libsigrok.mk new file mode 100644 index 00000000..639ee4dc --- /dev/null +++ b/package/libsigrok/libsigrok.mk @@ -0,0 +1,68 @@ +################################################################################ +# +# libsigrok +# +################################################################################ + +LIBSIGROK_VERSION = 0.5.2 +LIBSIGROK_SITE = http://sigrok.org/download/source/libsigrok +LIBSIGROK_LICENSE = GPL-3.0+ +LIBSIGROK_LICENSE_FILES = COPYING +LIBSIGROK_INSTALL_STAGING = YES +LIBSIGROK_DEPENDENCIES = libglib2 libzip host-pkgconf +LIBSIGROK_CONF_OPTS = --disable-java --disable-python +# We're patching configure.ac +LIBSIGROK_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y) +LIBSIGROK_CONF_OPTS += --with-libbluez +LIBSIGROK_DEPENDENCIES += bluez5_utils +else +LIBSIGROK_CONF_OPTS += --without-libbluez +endif + +ifeq ($(BR2_PACKAGE_HIDAPI),y) +LIBSIGROK_CONF_OPTS += --with-libhidapi +LIBSIGROK_DEPENDENCIES += hidapi +else +LIBSIGROK_CONF_OPTS += --without-libhidapi +endif + +ifeq ($(BR2_PACKAGE_LIBSERIALPORT),y) +LIBSIGROK_CONF_OPTS += --with-libserialport +LIBSIGROK_DEPENDENCIES += libserialport +else +LIBSIGROK_CONF_OPTS += --without-libserialport +endif + +ifeq ($(BR2_PACKAGE_LIBFTDI1),y) +LIBSIGROK_CONF_OPTS += --with-libftdi +LIBSIGROK_DEPENDENCIES += libftdi1 +else +LIBSIGROK_CONF_OPTS += --without-libftdi +endif + +ifeq ($(BR2_PACKAGE_LIBUSB),y) +LIBSIGROK_CONF_OPTS += --with-libusb +LIBSIGROK_DEPENDENCIES += libusb +else +LIBSIGROK_CONF_OPTS += --without-libusb +endif + +ifeq ($(BR2_PACKAGE_GLIBMM),y) +LIBSIGROK_DEPENDENCIES += glibmm +endif + +ifeq ($(BR2_PACKAGE_LIBSIGROKCXX),y) +LIBSIGROK_CONF_ENV = CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++17" +LIBSIGROK_CONF_OPTS += --enable-cxx +# host-doxygen is used by C++ bindings to parse libsigrok symbols +LIBSIGROK_DEPENDENCIES += \ + glibmm \ + host-doxygen \ + host-python3 +else +LIBSIGROK_CONF_OPTS += --disable-cxx +endif + +$(eval $(autotools-package)) diff --git a/package/libsigrokdecode/0001-configure-ac-Add-support-for-Python-3-9.patch b/package/libsigrokdecode/0001-configure-ac-Add-support-for-Python-3-9.patch new file mode 100644 index 00000000..804e931d --- /dev/null +++ b/package/libsigrokdecode/0001-configure-ac-Add-support-for-Python-3-9.patch @@ -0,0 +1,28 @@ +From 9b0ad5177bd692f7556a4756bdbd2da81d9c34ce Mon Sep 17 00:00:00 2001 +From: =?utf8?q?Dan=20Hor=C3=A1k?= +Date: Tue, 4 Aug 2020 09:19:44 +0200 +Subject: [PATCH] configure.ac: Add support for Python 3.9. + +[Retrieved from: +https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=commit;h=9b0ad5177bd692f7556a4756bdbd2da81d9c34ce] +Signed-off-by: Fabrice Fontaine +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index f9958b3..2917cb3 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -100,7 +100,7 @@ SR_PKG_CHECK_SUMMARY([srd_pkglibs_summary]) + # first, since usually only that variant will add "-lpython3.8". + # https://docs.python.org/3/whatsnew/3.8.html#debug-build-uses-the-same-abi-as-release-build + SR_PKG_CHECK([python3], [SRD_PKGLIBS], +- [python-3.8-embed], [python-3.8 >= 3.8], [python-3.7 >= 3.7], [python-3.6 >= 3.6], [python-3.5 >= 3.5], [python-3.4 >= 3.4], [python-3.3 >= 3.3], [python-3.2 >= 3.2], [python3 >= 3.2]) ++ [python-3.9-embed], [python-3.8-embed], [python-3.8 >= 3.8], [python-3.7 >= 3.7], [python-3.6 >= 3.6], [python-3.5 >= 3.5], [python-3.4 >= 3.4], [python-3.3 >= 3.3], [python-3.2 >= 3.2], [python3 >= 3.2]) + AS_IF([test "x$sr_have_python3" = xno], + [AC_MSG_ERROR([Cannot find Python 3 development headers.])]) + +-- +2.24.0.rc2 + diff --git a/package/libsigrokdecode/0002-configure-Add-python-3-10-support.patch b/package/libsigrokdecode/0002-configure-Add-python-3-10-support.patch new file mode 100644 index 00000000..53acb659 --- /dev/null +++ b/package/libsigrokdecode/0002-configure-Add-python-3-10-support.patch @@ -0,0 +1,28 @@ +From c4c10b89396fe21a622b8c38dd5815a496b007bf Mon Sep 17 00:00:00 2001 +From: Soeren Apel +Date: Mon, 20 Dec 2021 19:36:39 +0100 +Subject: [PATCH] configure: Add python 3.10 support + +[Retrieved from: +https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=commitdiff;h=c4c10b89396fe21a622b8c38dd5815a496b007bf +Signed-off-by: Fabrice Fontaine +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 2917cb3..b8841f8 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -100,7 +100,7 @@ SR_PKG_CHECK_SUMMARY([srd_pkglibs_summary]) + # first, since usually only that variant will add "-lpython3.8". + # https://docs.python.org/3/whatsnew/3.8.html#debug-build-uses-the-same-abi-as-release-build + SR_PKG_CHECK([python3], [SRD_PKGLIBS], +- [python-3.9-embed], [python-3.8-embed], [python-3.8 >= 3.8], [python-3.7 >= 3.7], [python-3.6 >= 3.6], [python-3.5 >= 3.5], [python-3.4 >= 3.4], [python-3.3 >= 3.3], [python-3.2 >= 3.2], [python3 >= 3.2]) ++ [python-3.10-embed], [python-3.9-embed], [python-3.8-embed], [python-3.8 >= 3.8], [python-3.7 >= 3.7], [python-3.6 >= 3.6], [python-3.5 >= 3.5], [python-3.4 >= 3.4], [python-3.3 >= 3.3], [python-3.2 >= 3.2], [python3 >= 3.2]) + AS_IF([test "x$sr_have_python3" = xno], + [AC_MSG_ERROR([Cannot find Python 3 development headers.])]) + +-- +2.24.0.rc2 + diff --git a/package/libsigrokdecode/0003-configure-ac-Use-python3-embed-pc-as-a-fallback.patch b/package/libsigrokdecode/0003-configure-ac-Use-python3-embed-pc-as-a-fallback.patch new file mode 100644 index 00000000..8e9c6f00 --- /dev/null +++ b/package/libsigrokdecode/0003-configure-ac-Use-python3-embed-pc-as-a-fallback.patch @@ -0,0 +1,30 @@ +From a6a5e2c8b0e9ecf5d69d0c237c8e8b717b82b36f Mon Sep 17 00:00:00 2001 +From: Evangelos Foutras +Date: Thu, 3 Dec 2020 19:17:00 +0200 +Subject: [PATCH] configure.ac: Use python3-embed.pc as a fallback + +This provides some future-proofing against newer Python versions. + +[Retrieved from: +https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=commit;h=a6a5e2c8b0e9ecf5d69d0c237c8e8b717b82b36f] +Signed-off-by: Fabrice Fontaine +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index b8841f8..c1314bb 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -100,7 +100,7 @@ SR_PKG_CHECK_SUMMARY([srd_pkglibs_summary]) + # first, since usually only that variant will add "-lpython3.8". + # https://docs.python.org/3/whatsnew/3.8.html#debug-build-uses-the-same-abi-as-release-build + SR_PKG_CHECK([python3], [SRD_PKGLIBS], +- [python-3.10-embed], [python-3.9-embed], [python-3.8-embed], [python-3.8 >= 3.8], [python-3.7 >= 3.7], [python-3.6 >= 3.6], [python-3.5 >= 3.5], [python-3.4 >= 3.4], [python-3.3 >= 3.3], [python-3.2 >= 3.2], [python3 >= 3.2]) ++ [python-3.10-embed], [python-3.9-embed], [python-3.8-embed], [python3-embed], [python-3.8 >= 3.8], [python-3.7 >= 3.7], [python-3.6 >= 3.6], [python-3.5 >= 3.5], [python-3.4 >= 3.4], [python-3.3 >= 3.3], [python-3.2 >= 3.2], [python3 >= 3.2]) + AS_IF([test "x$sr_have_python3" = xno], + [AC_MSG_ERROR([Cannot find Python 3 development headers.])]) + +-- +2.30.2 + diff --git a/package/libsigrokdecode/Config.in b/package/libsigrokdecode/Config.in new file mode 100644 index 00000000..b58c8a2a --- /dev/null +++ b/package/libsigrokdecode/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_LIBSIGROKDECODE + bool "libsigrokdecode" + depends on BR2_USE_WCHAR # libglib2/python3 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2/python3 + depends on BR2_USE_MMU # libglib2/python3 + depends on !BR2_STATIC_LIBS # python3 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_PYTHON3 + help + Libsigrokdecode is a shared library written in C, which + provides (streaming) protocol decoding functionality. Say + yes here if you want to add this functionality to your + buildroot-generated sigrok suite. + + This library is a part of the sigrok software suite. + + http://sigrok.org/wiki/Libsigrokdecode + +comment "libsigrokdecode 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/package/libsigrokdecode/libsigrokdecode.hash b/package/libsigrokdecode/libsigrokdecode.hash new file mode 100644 index 00000000..a00a662f --- /dev/null +++ b/package/libsigrokdecode/libsigrokdecode.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 c50814aa6743cd8c4e88c84a0cdd8889d883c3be122289be90c63d7d67883fc0 libsigrokdecode-0.5.3.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/libsigrokdecode/libsigrokdecode.mk b/package/libsigrokdecode/libsigrokdecode.mk new file mode 100644 index 00000000..18f2cbfe --- /dev/null +++ b/package/libsigrokdecode/libsigrokdecode.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libsigrokdecode +# +################################################################################ + +LIBSIGROKDECODE_VERSION = 0.5.3 +LIBSIGROKDECODE_SITE = http://sigrok.org/download/source/libsigrokdecode +LIBSIGROKDECODE_LICENSE = GPL-3.0+ +LIBSIGROKDECODE_LICENSE_FILES = COPYING +LIBSIGROKDECODE_INSTALL_STAGING = YES +LIBSIGROKDECODE_DEPENDENCIES = host-pkgconf libglib2 python3 +# We're patching configure.ac +LIBSIGROKDECODE_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/libsigsegv/0001-Add-support-for-Linux-PowerPC-32-bit-with-musl-libc.patch b/package/libsigsegv/0001-Add-support-for-Linux-PowerPC-32-bit-with-musl-libc.patch new file mode 100644 index 00000000..dcc2f7c9 --- /dev/null +++ b/package/libsigsegv/0001-Add-support-for-Linux-PowerPC-32-bit-with-musl-libc.patch @@ -0,0 +1,114 @@ +From a6ff69873110c0a8ba6f7fd90532dbc11224828c Mon Sep 17 00:00:00 2001 +From: Bruno Haible +Date: Sun, 13 Mar 2022 15:04:06 +0100 +Subject: [PATCH] Add support for Linux/PowerPC (32-bit) with musl libc. + +Reported by Khem Raj in +. + +* autogen.sh: Copy also musl.m4. +* configure.ac: Invoke gl_MUSL_LIBC. +* src/fault-linux-powerpc.h (SIGSEGV_FAULT_STACKPOINTER): In the 32-bit +case, handle musl libc differently. +* NEWS: Mention it. + +Upstream: https://git.savannah.gnu.org/gitweb/?p=libsigsegv.git;a=commit;h=a6ff69873110c0a8ba6f7fd90532dbc11224828c +Signed-off-by: Fabrice Fontaine +--- + ChangeLog | 11 +++++++++++ + NEWS | 4 ++++ + autogen.sh | 3 ++- + configure.ac | 2 ++ + src/fault-linux-powerpc.h | 27 ++++++++++++++++++++++----- + 5 files changed, 41 insertions(+), 6 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index c52b227..7c0a8fa 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,14 @@ ++2022-03-13 Bruno Haible ++ ++ Add support for Linux/PowerPC (32-bit) with musl libc. ++ Reported by Khem Raj in ++ . ++ * autogen.sh: Copy also musl.m4. ++ * configure.ac: Invoke gl_MUSL_LIBC. ++ * src/fault-linux-powerpc.h (SIGSEGV_FAULT_STACKPOINTER): In the 32-bit ++ case, handle musl libc differently. ++ * NEWS: Mention it. ++ + 2022-01-07 Bruno Haible + + Prepare for version 2.14. +diff --git a/NEWS b/NEWS +index 4d012f8..82cc0f4 100644 +--- a/NEWS ++++ b/NEWS +@@ -1,3 +1,7 @@ ++New in 2.15: ++ ++* Added support for Linux/PowerPC (32-bit) with musl libc. ++ + New in 2.14: + + * Added support for 64-bit Cygwin. +diff --git a/configure.ac b/configure.ac +index e87f13b..164786f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -75,6 +75,8 @@ AC_MSG_RESULT([$sv_cv_host]) + PLATFORM="$sv_cv_host" + AC_SUBST([PLATFORM]) + ++gl_MUSL_LIBC ++ + dnl ========================== Done with PLATFORM ========================== + + +diff --git a/src/fault-linux-powerpc.h b/src/fault-linux-powerpc.h +index cba6ea7..b3f922a 100644 +--- a/src/fault-linux-powerpc.h ++++ b/src/fault-linux-powerpc.h +@@ -1,5 +1,5 @@ + /* Fault handler information. Linux/PowerPC version when it supports POSIX. +- Copyright (C) 2002, 2009, 2017 Bruno Haible ++ Copyright (C) 2002, 2009, 2017, 2022 Bruno Haible + + 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 +@@ -28,10 +28,27 @@ + #if defined(__powerpc64__) || defined(_ARCH_PPC64) /* 64-bit */ + # define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.gp_regs[1] + #else /* 32-bit */ +-/* both should be equivalent */ +-# if 0 +-# define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.regs->gpr[1] ++# if MUSL_LIBC ++/* musl libc has a different structure of ucontext_t in ++ musl/arch/powerpc/bits/signal.h. */ ++/* The glibc comments say: ++ "Different versions of the kernel have stored the registers on signal ++ delivery at different offsets from the ucontext struct. Programs should ++ thus use the uc_mcontext.uc_regs pointer to find where the registers are ++ actually stored." */ ++# if 0 ++# define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.gregs[1] ++# else ++# define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_regs->gregs[1] ++# endif + # else +-# define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.uc_regs->gregs[1] ++/* Assume the structure of ucontext_t in ++ glibc/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h. */ ++/* Because of the union, both definitions should be equivalent. */ ++# if 0 ++# define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.regs->gpr[1] ++# else ++# define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.uc_regs->gregs[1] ++# endif + # endif + #endif +-- +2.17.1 + diff --git a/package/libsigsegv/0002-add-musl.m4.patch b/package/libsigsegv/0002-add-musl.m4.patch new file mode 100644 index 00000000..d6f06d84 --- /dev/null +++ b/package/libsigsegv/0002-add-musl.m4.patch @@ -0,0 +1,47 @@ +From a9b07220b986500cfee7777a543494d360964306 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 2 Jan 2024 21:39:24 +0100 +Subject: [PATCH] add musl.m4 + +Add musl.m4 (retrieved from +https://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob;f=m4/musl.m4;h=34d2c1ff22a148eeb76936410ac497d68b228f59;hb=HEAD) + +musl.m4 is needed for gl_MUSL_LIBC since +https://git.savannah.gnu.org/gitweb/?p=libsigsegv.git;a=commit;h=a6ff69873110c0a8ba6f7fd90532dbc11224828c + +Signed-off-by: Fabrice Fontaine +Upstream: sent to Bruno Haible +--- + m4/musl.m4 | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + create mode 100644 m4/musl.m4 + +diff --git a/m4/musl.m4 b/m4/musl.m4 +new file mode 100644 +index 0000000..34d2c1f +--- /dev/null ++++ b/m4/musl.m4 +@@ -0,0 +1,20 @@ ++# musl.m4 serial 4 ++dnl Copyright (C) 2019-2024 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++ ++# Test for musl libc, despite the musl libc authors don't like it ++# ++# . ++# From Bruno Haible. ++ ++AC_DEFUN_ONCE([gl_MUSL_LIBC], ++[ ++ AC_REQUIRE([AC_CANONICAL_HOST]) ++ case "$host_os" in ++ *-musl* | midipix*) ++ AC_DEFINE([MUSL_LIBC], [1], [Define to 1 on musl libc.]) ++ ;; ++ esac ++]) +-- +2.43.0 + diff --git a/package/libsigsegv/Config.in b/package/libsigsegv/Config.in new file mode 100644 index 00000000..8e89ff5a --- /dev/null +++ b/package/libsigsegv/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBSIGSEGV_ARCH_SUPPORTS + bool + default y if BR2_TOOLCHAIN_HAS_UCONTEXT + +config BR2_PACKAGE_LIBSIGSEGV + bool "libsigsegv" + depends on BR2_PACKAGE_LIBSIGSEGV_ARCH_SUPPORTS + help + Library for handling page faults in user mode. + + http://www.gnu.org/software/libsigsegv/ diff --git a/package/libsigsegv/libsigsegv.hash b/package/libsigsegv/libsigsegv.hash new file mode 100644 index 00000000..13978da3 --- /dev/null +++ b/package/libsigsegv/libsigsegv.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +# https://ftp.gnu.org/gnu/libsigsegv/libsigsegv-2.14.tar.gz.sig +sha256 cdac3941803364cf81a908499beb79c200ead60b6b5b40cad124fd1e06caa295 libsigsegv-2.14.tar.gz +# Locally calculated +sha256 8f2983e9a940367f48999881c14775db725ee643bce1e2f1ba195eb629a33cde COPYING diff --git a/package/libsigsegv/libsigsegv.mk b/package/libsigsegv/libsigsegv.mk new file mode 100644 index 00000000..0d5875aa --- /dev/null +++ b/package/libsigsegv/libsigsegv.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libsigsegv +# +################################################################################ + +LIBSIGSEGV_VERSION = 2.14 +LIBSIGSEGV_SITE = $(BR2_GNU_MIRROR)/libsigsegv +LIBSIGSEGV_INSTALL_STAGING = YES +LIBSIGSEGV_CONF_ENV = sv_cv_fault_posix=yes +LIBSIGSEGV_LICENSE = GPL-2.0+ +LIBSIGSEGV_LICENSE_FILES = COPYING +# We're patching configure.ac +LIBSIGSEGV_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/libsilk/Config.in b/package/libsilk/Config.in new file mode 100644 index 00000000..10fe03ad --- /dev/null +++ b/package/libsilk/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBSILK + bool "libsilk" + help + SILK is an audio compression format and audio codec. + + http://tools.ietf.org/html/draft-vos-silk-01 diff --git a/package/libsilk/libsilk.hash b/package/libsilk/libsilk.hash new file mode 100644 index 00000000..3ed7eac4 --- /dev/null +++ b/package/libsilk/libsilk.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 1b2d44790e841f0707b06fa10af798fa97a326ad4a6a3395b12be1231ed6f9a3 libsilk-4268a02240c35c6055b0f237c46b09b2dcf79e45-git4.tar.gz +sha256 62a5963f034024665641f4a9888b208f1e39aa7e29e87c9634fdcf07d3073baf COPYING diff --git a/package/libsilk/libsilk.mk b/package/libsilk/libsilk.mk new file mode 100644 index 00000000..eba70852 --- /dev/null +++ b/package/libsilk/libsilk.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libsilk +# +################################################################################ + +LIBSILK_VERSION = 4268a02240c35c6055b0f237c46b09b2dcf79e45 +# we use the FreeSwitch fork because it contains pkgconf support +LIBSILK_SITE = https://freeswitch.org/stash/scm/sd/libsilk.git +LIBSILK_SITE_METHOD = git +LIBSILK_LICENSE = BSD-3-Clause +LIBSILK_LICENSE_FILES = COPYING +LIBSILK_AUTORECONF = YES +LIBSILK_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/libsndfile/Config.in b/package/libsndfile/Config.in new file mode 100644 index 00000000..4ccf9376 --- /dev/null +++ b/package/libsndfile/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBSNDFILE + bool "libsndfile" + help + Libsndfile is a C library for reading and writing files + containing sampled sound (such as MS Windows WAV and the + Apple/SGI AIFF format) through one standard library interface. + + http://www.mega-nerd.com/libsndfile/ diff --git a/package/libsndfile/libsndfile.hash b/package/libsndfile/libsndfile.hash new file mode 100644 index 00000000..94d6f963 --- /dev/null +++ b/package/libsndfile/libsndfile.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 3799ca9924d3125038880367bf1468e53a1b7e3686a934f098b7e1d286cdb80e libsndfile-1.2.2.tar.xz +# Locally calculated +sha256 ad01ea5cd2755f6048383c8d54c88459cd6fcb17757c5c8892f8c5ea060f6140 COPYING diff --git a/package/libsndfile/libsndfile.mk b/package/libsndfile/libsndfile.mk new file mode 100644 index 00000000..dc23d94c --- /dev/null +++ b/package/libsndfile/libsndfile.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# libsndfile +# +################################################################################ + +LIBSNDFILE_VERSION = 1.2.2 +LIBSNDFILE_SOURCE = libsndfile-$(LIBSNDFILE_VERSION).tar.xz +LIBSNDFILE_SITE = https://github.com/libsndfile/libsndfile/releases/download/$(LIBSNDFILE_VERSION) +LIBSNDFILE_INSTALL_STAGING = YES +LIBSNDFILE_LICENSE = LGPL-2.1+ +LIBSNDFILE_LICENSE_FILES = COPYING +LIBSNDFILE_CPE_ID_VALID = YES +LIBSNDFILE_DEPENDENCIES = host-pkgconf + +LIBSNDFILE_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' +LIBSNDFILE_CONF_OPTS = \ + --disable-sqlite \ + --disable-alsa \ + --disable-full-suite + +ifeq ($(BR2_PACKAGE_FLAC)$(BR2_PACKAGE_LIBVORBIS)$(BR2_PACKAGE_OPUS),yyy) +LIBSNDFILE_DEPENDENCIES += flac host-pkgconf libvorbis opus +LIBSNDFILE_CONF_OPTS += --enable-external-libs +else +LIBSNDFILE_CONF_OPTS += --disable-external-libs +endif + +$(eval $(autotools-package)) diff --git a/package/libsoc/Config.in b/package/libsoc/Config.in new file mode 100644 index 00000000..2aaeb1fe --- /dev/null +++ b/package/libsoc/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBSOC + bool "libsoc" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + libsoc is a C library for interfacing with common SoC + peripherals through generic kernel interfaces + + https://github.com/jackmitch/libsoc + +comment "libsoc needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libsoc/libsoc.hash b/package/libsoc/libsoc.hash new file mode 100644 index 00000000..2e7c8295 --- /dev/null +++ b/package/libsoc/libsoc.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 8df626bde365b94a805e1c323104c63a7429ec64c9df815cd1d9b9c4b317e066 libsoc-0.8.2.tar.gz +sha256 782dafc98788c358fb20e530c8fde3186cdb60f5e18fe6d348fe84ee9f65ddb0 LICENCE diff --git a/package/libsoc/libsoc.mk b/package/libsoc/libsoc.mk new file mode 100644 index 00000000..95753b8b --- /dev/null +++ b/package/libsoc/libsoc.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# libsoc +# +################################################################################ + +LIBSOC_VERSION = 0.8.2 +LIBSOC_SITE = $(call github,jackmitch,libsoc,$(LIBSOC_VERSION)) +LIBSOC_LICENSE = LGPL-2.1 +LIBSOC_LICENSE_FILES = LICENCE +LIBSOC_AUTORECONF = YES +LIBSOC_INSTALL_STAGING = YES +LIBSOC_DEPENDENCIES = host-pkgconf + +# Install Python 3 bindings +ifeq ($(BR2_PACKAGE_PYTHON3),y) +LIBSOC_DEPENDENCIES += python3 +LIBSOC_CONF_OPTS += --enable-python=3 +else +LIBSOC_CONF_OPTS += --disable-python +endif + +$(eval $(autotools-package)) diff --git a/package/libsocketcan/Config.in b/package/libsocketcan/Config.in new file mode 100644 index 00000000..97903db7 --- /dev/null +++ b/package/libsocketcan/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBSOCKETCAN + bool "libsocketcan" + help + SocketCAN library to control CAN devices from C code. + + http://git.pengutronix.de/?p=tools/libsocketcan.git;a=summary diff --git a/package/libsocketcan/libsocketcan.hash b/package/libsocketcan/libsocketcan.hash new file mode 100644 index 00000000..c2ad2355 --- /dev/null +++ b/package/libsocketcan/libsocketcan.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 be8280124707701935e6294d366e2474158b758fa4b2e3cae571d5b256d2fe34 libsocketcan-0.0.12.tar.bz2 +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSE diff --git a/package/libsocketcan/libsocketcan.mk b/package/libsocketcan/libsocketcan.mk new file mode 100644 index 00000000..0261b33c --- /dev/null +++ b/package/libsocketcan/libsocketcan.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libsocketcan +# +################################################################################ + +LIBSOCKETCAN_VERSION = 0.0.12 +LIBSOCKETCAN_SITE = http://www.pengutronix.de/software/libsocketcan/download +LIBSOCKETCAN_SOURCE = libsocketcan-$(LIBSOCKETCAN_VERSION).tar.bz2 +LIBSOCKETCAN_INSTALL_STAGING = YES +LIBSOCKETCAN_LICENSE = LGPL-2.1+ +LIBSOCKETCAN_LICENSE_FILES = LICENSE + +$(eval $(autotools-package)) diff --git a/package/libsodium/Config.in b/package/libsodium/Config.in new file mode 100644 index 00000000..518b0532 --- /dev/null +++ b/package/libsodium/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LIBSODIUM + bool "libsodium" + help + A modern and easy-to-use crypto library. + + http://libsodium.org/ + +if BR2_PACKAGE_LIBSODIUM + +config BR2_PACKAGE_LIBSODIUM_FULL + bool "all functions" + default y + help + Build all seldom used and obsolete functions. Without + this option, only the minimal set of normally used + functions is built. + +endif diff --git a/package/libsodium/libsodium.hash b/package/libsodium/libsodium.hash new file mode 100644 index 00000000..37c1a620 --- /dev/null +++ b/package/libsodium/libsodium.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking Minisign signature +# https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz.minisig +sha256 6f504490b342a4f8a4c4a02fc9b866cbef8622d5df4e5452b46be121e46636c1 libsodium-1.0.18.tar.gz +sha256 dea1855c9809f3faf22aa4a1fba20ec8af5a5587f23115012e5b98279cedc4af LICENSE diff --git a/package/libsodium/libsodium.mk b/package/libsodium/libsodium.mk new file mode 100644 index 00000000..a8e0f791 --- /dev/null +++ b/package/libsodium/libsodium.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# libsodium +# +################################################################################ + +LIBSODIUM_VERSION = 1.0.18 +LIBSODIUM_SITE = https://download.libsodium.org/libsodium/releases +LIBSODIUM_LICENSE = ISC +LIBSODIUM_LICENSE_FILES = LICENSE +LIBSODIUM_INSTALL_STAGING = YES + +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) +LIBSODIUM_CONF_OPTS += --disable-pie +endif + +ifeq ($(BR2_PACKAGE_LIBSODIUM_FULL),y) +LIBSODIUM_CONF_OPTS += --disable-minimal +else +LIBSODIUM_CONF_OPTS += --enable-minimal +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libsolv/Config.in b/package/libsolv/Config.in new file mode 100644 index 00000000..1415d2bc --- /dev/null +++ b/package/libsolv/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBSOLV + bool "libsolv" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_ZLIB + help + A free package dependency solver using a satisfiability + algorithm. + + https://github.com/openSUSE/libsolv diff --git a/package/libsolv/libsolv.hash b/package/libsolv/libsolv.hash new file mode 100644 index 00000000..b18a682c --- /dev/null +++ b/package/libsolv/libsolv.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b382bba4196b19c36eb34e0ef02546c0b922be601c6f73390c9ab643895b656a libsolv-0.7.25.tar.gz +sha256 57f15acfb29fbef7749779e096a5885c60b716633e34484a21bb717554c0198f LICENSE.BSD diff --git a/package/libsolv/libsolv.mk b/package/libsolv/libsolv.mk new file mode 100644 index 00000000..2a9f1bf2 --- /dev/null +++ b/package/libsolv/libsolv.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# libsolv +# +################################################################################ + +LIBSOLV_VERSION = 0.7.25 +LIBSOLV_SITE = $(call github,openSUSE,libsolv,$(LIBSOLV_VERSION)) +LIBSOLV_LICENSE = BSD-3-Clause +LIBSOLV_LICENSE_FILES = LICENSE.BSD +LIBSOLV_CPE_ID_VENDOR = opensuse +LIBSOLV_INSTALL_STAGING = YES +LIBSOLV_DEPENDENCIES = zlib + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +LIBSOLV_CONF_OPTS += -DENABLE_STATIC=ON +else +LIBSOLV_CONF_OPTS += -DENABLE_STATIC=OFF +endif + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +LIBSOLV_CONF_OPTS += -DDISABLE_SHARED=OFF +else +LIBSOLV_CONF_OPTS += -DDISABLE_SHARED=ON +endif + +$(eval $(cmake-package)) diff --git a/package/libsoundtouch/Config.in b/package/libsoundtouch/Config.in new file mode 100644 index 00000000..fdbc0757 --- /dev/null +++ b/package/libsoundtouch/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBSOUNDTOUCH + bool "libsoundtouch" + depends on BR2_INSTALL_LIBSTDCPP + help + SoundTouch is an open-source audio processing library for + changing the Tempo, Pitch and Playback Rates of audio streams + or audio files. + + http://www.surina.net/soundtouch + +comment "libsoundtouch needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/libsoundtouch/libsoundtouch.hash b/package/libsoundtouch/libsoundtouch.hash new file mode 100644 index 00000000..9de72521 --- /dev/null +++ b/package/libsoundtouch/libsoundtouch.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 6900996607258496ce126924a19fe9d598af9d892cf3f33d1e4daaa9b42ae0b1 soundtouch-2.3.1.tar.gz +sha256 84c6d82dc7de80f5b73f231edfd3ddc5b53513908117452bfa37ea36bb4b7e0a COPYING.TXT diff --git a/package/libsoundtouch/libsoundtouch.mk b/package/libsoundtouch/libsoundtouch.mk new file mode 100644 index 00000000..c372c32a --- /dev/null +++ b/package/libsoundtouch/libsoundtouch.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libsoundtouch +# +################################################################################ + +LIBSOUNDTOUCH_VERSION = 2.3.1 +LIBSOUNDTOUCH_SOURCE = soundtouch-$(LIBSOUNDTOUCH_VERSION).tar.gz +LIBSOUNDTOUCH_SITE = https://www.surina.net/soundtouch +LIBSOUNDTOUCH_LICENSE = LGPL-2.1+ +LIBSOUNDTOUCH_LICENSE_FILES = COPYING.TXT +LIBSOUNDTOUCH_AUTORECONF = YES +LIBSOUNDTOUCH_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/libsoup/0001-meson.build-set-c_std-to-gnu99.patch b/package/libsoup/0001-meson.build-set-c_std-to-gnu99.patch new file mode 100644 index 00000000..a999f596 --- /dev/null +++ b/package/libsoup/0001-meson.build-set-c_std-to-gnu99.patch @@ -0,0 +1,40 @@ +From 5c3d431bdb094c59997f2a23e31e83f815ab667c Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 1 Jul 2021 22:09:23 +0200 +Subject: [PATCH] meson.build: set c_std to gnu99 + +Set c_std to gnu99 to avoid the following build failure with gcc 4.8: + +In file included from /tmp/instance-0/output-1/host/arm-buildroot-linux-gnueabi/sysroot/usr/include/resolv.h:65:0, + from /tmp/instance-0/output-1/host/arm-buildroot-linux-gnueabi/sysroot/usr/include/glib-2.0/gio/gnetworking.h:40, + from ../libsoup/soup-address.c:14: +/tmp/instance-0/output-1/host/arm-buildroot-linux-gnueabi/sysroot/usr/include/arpa/nameser.h:115:2: error: unknown type name 'u_char' + const u_char *_msg, *_eom; + ^ + +Fixes: + - http://autobuild.buildroot.org/results/56b9cb987e25b99d6fed16c537552f47c3376f21 + +Signed-off-by: Fabrice Fontaine +[Upstream status: +https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/241] +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 4dfd8c15..a5ebc63a 100644 +--- a/meson.build ++++ b/meson.build +@@ -2,7 +2,7 @@ project('libsoup', 'c', + version: '2.74.3', + meson_version : '>=0.50', + license : 'LGPL2', +- default_options : 'c_std=c99') ++ default_options : 'c_std=gnu99') + + gnome = import('gnome') + +-- +2.30.2 + diff --git a/package/libsoup/0002-libsoup-soup-xmlrpc-soup-xmlrpc-old-add-missing-libx.patch b/package/libsoup/0002-libsoup-soup-xmlrpc-soup-xmlrpc-old-add-missing-libx.patch new file mode 100644 index 00000000..cceff2d2 --- /dev/null +++ b/package/libsoup/0002-libsoup-soup-xmlrpc-soup-xmlrpc-old-add-missing-libx.patch @@ -0,0 +1,47 @@ +From 8a21b58b45edbf11d9041f884bb9c42e6440104c Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 26 Dec 2023 14:38:58 +0100 +Subject: [PATCH] libsoup/{soup-xmlrpc,soup-xmlrpc-old}: add missing + include + +Since libxml2 2.12.1, including is needed to get the +prototype of xmlParseMemory(), causing a build breakage of libsoup +with a recent version of libxml2. + +Upstream: Not Applicable +[libsoup2 is not maintained upstream, and libsoup3 no longer contains +the XMLRPC code. We are keepin libsoup2 in Buildroot for compatibility +with packages that haven't moved to libsoup3 yet.] +Signed-off-by: Thomas Petazzoni +--- + libsoup/soup-xmlrpc-old.c | 1 + + libsoup/soup-xmlrpc.c | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/libsoup/soup-xmlrpc-old.c b/libsoup/soup-xmlrpc-old.c +index c57086b6..dd51de53 100644 +--- a/libsoup/soup-xmlrpc-old.c ++++ b/libsoup/soup-xmlrpc-old.c +@@ -12,6 +12,7 @@ + #include + + #include ++#include + + #include "soup-xmlrpc-old.h" + #include "soup.h" +diff --git a/libsoup/soup-xmlrpc.c b/libsoup/soup-xmlrpc.c +index 42dcda9c..b0132d26 100644 +--- a/libsoup/soup-xmlrpc.c ++++ b/libsoup/soup-xmlrpc.c +@@ -18,6 +18,7 @@ + #include + #include + #include ++#include + #include "soup-xmlrpc.h" + #include "soup.h" + +-- +2.43.0 + diff --git a/package/libsoup/Config.in b/package/libsoup/Config.in new file mode 100644 index 00000000..02e8e8b5 --- /dev/null +++ b/package/libsoup/Config.in @@ -0,0 +1,39 @@ +config BR2_PACKAGE_LIBSOUP + bool "libsoup" + depends on BR2_USE_WCHAR # glib2, gnutls and libpsl + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBPSL + select BR2_PACKAGE_SQLITE + help + libsoup is an HTTP client/server library. It uses GObject + and the GLib main loop, to integrate well with GNOME + applications. + + https://wiki.gnome.org/Projects/libsoup + +if BR2_PACKAGE_LIBSOUP + +config BR2_PACKAGE_LIBSOUP_GNOME + bool "libsoup-gnome" + help + Build libsoup-gnome library. + +config BR2_PACKAGE_LIBSOUP_SSL + bool "https support" + depends on !BR2_STATIC_LIBS # glib-networking, gnutls + select BR2_PACKAGE_GLIB_NETWORKING # runtime + select BR2_PACKAGE_GNUTLS # runtime + help + Enable HTTPS (SSL) support. + +comment "libsoup https support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +endif + +comment "libsoup needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libsoup/libsoup.hash b/package/libsoup/libsoup.hash new file mode 100644 index 00000000..5f687068 --- /dev/null +++ b/package/libsoup/libsoup.hash @@ -0,0 +1,4 @@ +# From https://download.gnome.org/sources/libsoup/2.74/libsoup-2.74.3.sha256sum +sha256 e4b77c41cfc4c8c5a035fcdc320c7bc6cfb75ef7c5a034153df1413fa1d92f13 libsoup-2.74.3.tar.xz +# Locally calculated +sha256 b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c COPYING diff --git a/package/libsoup/libsoup.mk b/package/libsoup/libsoup.mk new file mode 100644 index 00000000..81bf42ca --- /dev/null +++ b/package/libsoup/libsoup.mk @@ -0,0 +1,64 @@ +################################################################################ +# +# libsoup +# +################################################################################ + +LIBSOUP_VERSION_MAJOR = 2.74 +LIBSOUP_VERSION = $(LIBSOUP_VERSION_MAJOR).3 +LIBSOUP_SOURCE = libsoup-$(LIBSOUP_VERSION).tar.xz +LIBSOUP_SITE = https://download.gnome.org/sources/libsoup/$(LIBSOUP_VERSION_MAJOR) +LIBSOUP_LICENSE = LGPL-2.0+ +LIBSOUP_LICENSE_FILES = COPYING +LIBSOUP_CPE_ID_VENDOR = gnome +LIBSOUP_INSTALL_STAGING = YES +LIBSOUP_DEPENDENCIES = \ + host-intltool \ + host-libglib2 \ + host-pkgconf \ + libglib2 \ + libpsl \ + libxml2 \ + sqlite \ + $(TARGET_NLS_DEPENDENCIES) + +LIBSOUP_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) + +LIBSOUP_CONF_OPTS = \ + -Dgtk_doc=false \ + -Dntlm=disabled \ + -Dsysprof=disabled \ + -Dtests=false \ + -Dtls_check=false \ + -Dvapi=disabled + +ifeq ($(BR2_PACKAGE_BROTLI),y) +LIBSOUP_CONF_OPTS += -Dbrotli=enabled +LIBSOUP_DEPENDENCIES += brotli +else +LIBSOUP_CONF_OPTS += -Dbrotli=disabled +endif + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +LIBSOUP_CONF_OPTS += -Dintrospection=enabled +LIBSOUP_DEPENDENCIES += gobject-introspection +else +LIBSOUP_CONF_OPTS += -Dintrospection=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBKRB5),y) +LIBSOUP_CONF_OPTS += \ + -Dgssapi=enabled \ + -Dkrb5_config=$(STAGING_DIR)/usr/bin/krb5-config +LIBSOUP_DEPENDENCIES += libkrb5 +else +LIBSOUP_CONF_OPTS += -Dgssapi=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBSOUP_GNOME),y) +LIBSOUP_CONF_OPTS += -Dgnome=true +else +LIBSOUP_CONF_OPTS += -Dgnome=false +endif + +$(eval $(meson-package)) diff --git a/package/libsoup3/Config.in b/package/libsoup3/Config.in new file mode 100644 index 00000000..504cc3bd --- /dev/null +++ b/package/libsoup3/Config.in @@ -0,0 +1,34 @@ +config BR2_PACKAGE_LIBSOUP3 + bool "libsoup3" + depends on BR2_USE_WCHAR # glib2, libpsl + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBPSL + select BR2_PACKAGE_NGHTTP2 + select BR2_PACKAGE_SQLITE + help + libsoup3 is an HTTP client/server library. It uses GObject + and the GLib main loop, to integrate well with GNOME + applications. + + https://wiki.gnome.org/Projects/libsoup + +if BR2_PACKAGE_LIBSOUP3 + +config BR2_PACKAGE_LIBSOUP3_SSL + bool "https support" + depends on !BR2_STATIC_LIBS # glib-networking, gnutls + select BR2_PACKAGE_GLIB_NETWORKING # runtime + select BR2_PACKAGE_GNUTLS # runtime + help + Enable HTTPS (SSL) support. + +comment "libsoup3 https support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +endif + +comment "libsoup3 needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libsoup3/libsoup3.hash b/package/libsoup3/libsoup3.hash new file mode 100644 index 00000000..139771a1 --- /dev/null +++ b/package/libsoup3/libsoup3.hash @@ -0,0 +1,4 @@ +# From https://download.gnome.org/sources/libsoup/3.5/libsoup-3.5.1.sha256sum +sha256 c1d7cfb89832d35c271f37d544f2cfe21fa60ae9faad4a7ac58996ae4031f7ba libsoup-3.5.1.tar.xz +# Locally calculated +sha256 b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c COPYING diff --git a/package/libsoup3/libsoup3.mk b/package/libsoup3/libsoup3.mk new file mode 100644 index 00000000..bc3ae4d0 --- /dev/null +++ b/package/libsoup3/libsoup3.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# libsoup3 +# +################################################################################ + +LIBSOUP3_VERSION_MAJOR = 3.5 +LIBSOUP3_VERSION = $(LIBSOUP3_VERSION_MAJOR).1 +LIBSOUP3_SOURCE = libsoup-$(LIBSOUP3_VERSION).tar.xz +LIBSOUP3_SITE = https://download.gnome.org/sources/libsoup/$(LIBSOUP3_VERSION_MAJOR) +LIBSOUP3_LICENSE = LGPL-2.0+ +LIBSOUP3_LICENSE_FILES = COPYING +LIBSOUP3_CPE_ID_VENDOR = gnome +LIBSOUP3_INSTALL_STAGING = YES +LIBSOUP3_DEPENDENCIES = \ + host-intltool \ + host-libglib2 \ + host-pkgconf \ + libglib2 \ + libpsl \ + nghttp2 \ + sqlite \ + $(TARGET_NLS_DEPENDENCIES) + +LIBSOUP3_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) + +LIBSOUP3_CONF_OPTS = \ + -Dntlm=disabled \ + -Dsysprof=disabled \ + -Dtests=false \ + -Dtls_check=false + +ifeq ($(BR2_PACKAGE_BROTLI),y) +LIBSOUP3_CONF_OPTS += -Dbrotli=enabled +LIBSOUP3_DEPENDENCIES += brotli +else +LIBSOUP3_CONF_OPTS += -Dbrotli=disabled +endif + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +LIBSOUP3_CONF_OPTS += -Dintrospection=enabled -Dvapi=enabled +LIBSOUP3_DEPENDENCIES += host-vala gobject-introspection +else +LIBSOUP3_CONF_OPTS += -Dintrospection=disabled -Dvapi=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBKRB5),y) +LIBSOUP3_CONF_OPTS += \ + -Dgssapi=enabled \ + -Dkrb5_config=$(STAGING_DIR)/usr/bin/krb5-config +LIBSOUP3_DEPENDENCIES += libkrb5 +else +LIBSOUP3_CONF_OPTS += -Dgssapi=disabled +endif + +$(eval $(meson-package)) diff --git a/package/libsoxr/0001-Add-Libs.private-for-static-linking.patch b/package/libsoxr/0001-Add-Libs.private-for-static-linking.patch new file mode 100644 index 00000000..be96c6e6 --- /dev/null +++ b/package/libsoxr/0001-Add-Libs.private-for-static-linking.patch @@ -0,0 +1,43 @@ +From 7d2d1039f303b6322ecb72eebae39b699fd28d19 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Fri, 22 Feb 2019 01:31:11 +0100 +Subject: [PATCH] Add Libs.private in soxr.pc.in for static linking +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +If libsoxr is build statically against libavutil other applications +needs to know that they must link with `-lavutil` when building in a +static context. + +Signed-off-by: Jörg Krause +--- + CMakeLists.txt | 1 + + src/soxr.pc.in | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index ee48f6c..714bd4d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -139,6 +139,7 @@ if (WITH_AVFFT OR (CMAKE_SYSTEM_PROCESSOR MATCHES "^arm" AND SIMD32_FOUND AND WI + if (AVUTIL_FOUND) + include_directories (${AVUTIL_INCLUDE_DIRS}) + set (LIBS ${LIBS} ${AVUTIL_LIBRARIES}) ++ set (PKGCONF_LIBS_PRIV ${PKGCONF_LIBS_PRIV} -lavutil) + endif () + endif () + +diff --git a/src/soxr.pc.in b/src/soxr.pc.in +index 69d225b..6c530a6 100644 +--- a/src/soxr.pc.in ++++ b/src/soxr.pc.in +@@ -2,4 +2,5 @@ Name: ${PROJECT_NAME} + Description: ${DESCRIPTION_SUMMARY} + Version: ${PROJECT_VERSION} + Libs: -L${LIB_INSTALL_DIR} -l${PROJECT_NAME} ++Libs.private: ${PKGCONF_LIBS_PRIV} + Cflags: -I${INCLUDE_INSTALL_DIR} +-- +2.20.1 + diff --git a/package/libsoxr/Config.in b/package/libsoxr/Config.in new file mode 100644 index 00000000..ae1ea102 --- /dev/null +++ b/package/libsoxr/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBSOXR + bool "libsoxr" + help + The SoX Resampler library `libsoxr' performs one-dimensional + sample-rate conversion. It may be used, for example, to + resample PCM-encoded audio. + + It aims to give fast and high quality results for any constant + (rational or irrational) resampling ratio. Phase-response, + preserved bandwidth, aliasing, and rejection level parameters + are all configurable; alternatively, simple `preset' + configurations may be selected. An experimental, variable-rate + resampling mode of operation is also included. + + http://sourceforge.net/projects/soxr/ diff --git a/package/libsoxr/libsoxr.hash b/package/libsoxr/libsoxr.hash new file mode 100644 index 00000000..1ea0c3ac --- /dev/null +++ b/package/libsoxr/libsoxr.hash @@ -0,0 +1,7 @@ +# From http://sourceforge.net/projects/soxr/files/ +sha1 32ea46b1a8c0c15f835422892d02fce8286aec3c soxr-0.1.3-Source.tar.xz +md5 3f16f4dcb35b471682d4321eda6f6c08 soxr-0.1.3-Source.tar.xz +# Locally calculated +sha256 b111c15fdc8c029989330ff559184198c161100a59312f5dc19ddeb9b5a15889 soxr-0.1.3-Source.tar.xz +sha256 dc98676341fdcd29d9f279c9679d6a75288785b174ded8d1b2e316c366166135 LICENCE +sha256 f2f118b9029ec1871b953639ecc46651b2fc7b62e295e6cf3ef2ac4c9a058b33 COPYING.LGPL diff --git a/package/libsoxr/libsoxr.mk b/package/libsoxr/libsoxr.mk new file mode 100644 index 00000000..b34962c4 --- /dev/null +++ b/package/libsoxr/libsoxr.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# libsoxr +# +################################################################################ + +LIBSOXR_VERSION = 0.1.3 +LIBSOXR_SOURCE = soxr-$(LIBSOXR_VERSION)-Source.tar.xz +LIBSOXR_SITE = http://downloads.sourceforge.net/project/soxr +LIBSOXR_LICENSE = LGPL-2.1+ +LIBSOXR_LICENSE_FILES = LICENCE COPYING.LGPL +LIBSOXR_INSTALL_STAGING = YES +LIBSOXR_CONF_OPTS = -DWITH_OPENMP=OFF + +ifeq ($(call qstrip,$(BR2_ENDIAN)),BIG) +LIBSOXR_CONF_OPTS += -DHAVE_WORDS_BIGENDIAN=1 +else +LIBSOXR_CONF_OPTS += -DHAVE_WORDS_BIGENDIAN=0 +endif + +ifeq ($(BR2_PACKAGE_FFMPEG),y) +LIBSOXR_DEPENDENCIES += ffmpeg +endif + +$(eval $(cmake-package)) diff --git a/package/libspatialindex/0001-allow-building-static-libs.patch b/package/libspatialindex/0001-allow-building-static-libs.patch new file mode 100644 index 00000000..09435cc1 --- /dev/null +++ b/package/libspatialindex/0001-allow-building-static-libs.patch @@ -0,0 +1,32 @@ +From caee28d84685071da3ff3a4ea57ff0b6ae64fc87 Mon Sep 17 00:00:00 2001 +From: SpaceIm <30052553+SpaceIm@users.noreply.github.com> +Date: Sat, 28 Mar 2020 19:08:40 +0100 +Subject: [PATCH] allow building static libs (#183) + +Signed-off-by: Fabrice Fontaine +[Retrieved from: +https://github.com/libspatialindex/libspatialindex/commit/caee28d84685071da3ff3a4ea57ff0b6ae64fc87] +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index c34ee8d..3bfac51 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -43,7 +43,6 @@ SET(SIDX_VERSION_MINOR "9") + SET(SIDX_VERSION_PATCH "3") + SET(SIDX_LIB_VERSION "6.1.1") + SET(SIDX_LIB_SOVERSION "6") +-SET(BUILD_SHARED_LIBS ON) + + + set(SIDX_VERSION_STRING "${SIDX_VERSION_MAJOR}.${SIDX_VERSION_MINOR}.${SIDX_VERSION_PATCH}") +@@ -52,6 +51,7 @@ set(SIDX_VERSION_STRING "${SIDX_VERSION_MAJOR}.${SIDX_VERSION_MINOR}.${SIDX_VERS + # libspatialindex general cmake options + #------------------------------------------------------------------------------ + ++option(BUILD_SHARED_LIBS "Build shared libraries" ON) + option(SIDX_BUILD_TESTS "Enables integrated test suites" OFF) + + diff --git a/package/libspatialindex/0002-CMakeLists.txt-fix-CMAKE_BUILD_TYPE.patch b/package/libspatialindex/0002-CMakeLists.txt-fix-CMAKE_BUILD_TYPE.patch new file mode 100644 index 00000000..fe94020f --- /dev/null +++ b/package/libspatialindex/0002-CMakeLists.txt-fix-CMAKE_BUILD_TYPE.patch @@ -0,0 +1,30 @@ +From 26d417b9f981cf9a6df42d89fd297539b96180cb Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 24 Apr 2020 18:03:31 +0200 +Subject: [PATCH] CMakeLists.txt: fix CMAKE_BUILD_TYPE (#188) + +The user is unable to override CMAKE_BUILD_TYPE since version 1.9.1 and +https://github.com/libspatialindex/libspatialindex/commit/e3bcccf38d9f100b59ccf29f7e1cfa174969decd + +Signed-off-by: Fabrice Fontaine +[Retrieved from: +https://github.com/libspatialindex/libspatialindex/commit/26d417b9f981cf9a6df42d89fd297539b96180cb] +--- + CMakeLists.txt | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 191ac72..84676a2 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -93,8 +93,10 @@ INCLUDE (CheckIncludeFiles) + + # note we default to RelWithDebInfo mode + if(NOT MSVC_IDE) ++ if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING + "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel" FORCE) ++ endif() + message(STATUS "Setting libspatialindex build type - ${CMAKE_BUILD_TYPE}") + endif() + diff --git a/package/libspatialindex/Config.in b/package/libspatialindex/Config.in new file mode 100644 index 00000000..e9d925dc --- /dev/null +++ b/package/libspatialindex/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_LIBSPATIALINDEX + bool "libspatialindex" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11 + help + The purpose of libspatialindex is to provide: + + * An extensible framework that will support robust spatial + indexing methods. + + * Support for sophisticated spatial queries. Range, point + location, nearest neighbor and k-nearest neighbor as well + as parametric queries (defined by spatial constraints) + should be easy to deploy and run. + + * Easy to use interfaces for inserting, deleting and updating + information. + + * Wide variety of customization capabilities. Basic index and + storage characteristics like the page size, node capacity, + minimum fan-out, splitting algorithm, etc. should be easy + to customize. + + * Index persistence. Internal memory and external memory + structures should be supported. Clustered and non-clustered + indices should be easy to be persisted. + + https://libspatialindex.github.io + +comment "libspatialindex needs a toolchain w/ C++, gcc >= 4.7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 diff --git a/package/libspatialindex/libspatialindex.hash b/package/libspatialindex/libspatialindex.hash new file mode 100644 index 00000000..ca679db9 --- /dev/null +++ b/package/libspatialindex/libspatialindex.hash @@ -0,0 +1,5 @@ +# From https://github.com/libspatialindex/libspatialindex/releases/download/1.9.3/spatialindex-src-1.9.3.tar.bz2.sha512sum +sha512 7922807a2f7026542a014d3d7943da5410429b291cf469267ffea5b8075eab2a94e68b6c013425615d221b930fd319c403f3bf43404c9b1d2c92d0e2baae3066 spatialindex-src-1.9.3.tar.bz2 + +# Hash for license file +sha256 b63ebfaca9d7ce582580f3e11acabc9d2e37c46ce234533f7fa8a6c7278898a0 COPYING diff --git a/package/libspatialindex/libspatialindex.mk b/package/libspatialindex/libspatialindex.mk new file mode 100644 index 00000000..0ff313d8 --- /dev/null +++ b/package/libspatialindex/libspatialindex.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# libspatialindex +# +################################################################################ + +LIBSPATIALINDEX_VERSION = 1.9.3 +LIBSPATIALINDEX_SITE = \ + https://github.com/libspatialindex/libspatialindex/releases/download/$(LIBSPATIALINDEX_VERSION) +LIBSPATIALINDEX_SOURCE = spatialindex-src-$(LIBSPATIALINDEX_VERSION).tar.bz2 +LIBSPATIALINDEX_INSTALL_STAGING = YES +LIBSPATIALINDEX_LICENSE = MIT +LIBSPATIALINDEX_LICENSE_FILES = COPYING + +LIBSPATIALINDEX_CXXFLAGS = $(TARGET_CXXFLAGS) +LIBSPATIALINDEX_CONF_OPTS = \ + -DSIDX_BUILD_TESTS=OFF \ + -DCMAKE_CXX_FLAGS="$(LIBSPATIALINDEX_CXXFLAGS)" + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y) +LIBSPATIALINDEX_CXXFLAGS += -O0 +endif + +$(eval $(cmake-package)) diff --git a/package/libspdm/Config.in b/package/libspdm/Config.in new file mode 100644 index 00000000..56c55f9c --- /dev/null +++ b/package/libspdm/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_LIBSPDM_CPU_FAMILY + string + # OpenSSL doesn't support "arc" (BR2_arcle || BR2_arceb), "arm" + # (if BR2_arm || BR2_armeb) or "riscv32"/"riscv6" + # (BR2_riscv && BR2_RISCV_32/BR2_RISCV_64). So we don't + # support those here + default "aarch64" if BR2_aarch64 || BR2_aarch64_be + default "ia32" if BR2_i386 + default "x64" if BR2_x86_64 + +config BR2_PACKAGE_LIBSPDM_ARCH_SUPPORTS + bool + default y if BR2_PACKAGE_LIBSPDM_CPU_FAMILY != "" + +config BR2_PACKAGE_LIBSPDM + bool "libspdm" + depends on BR2_PACKAGE_LIBSPDM_ARCH_SUPPORTS + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + help + libspdm is a sample implementation that follows + the DMTF SPDM specifications + + https://github.com/DMTF/libspdm diff --git a/package/libspdm/libspdm.hash b/package/libspdm/libspdm.hash new file mode 100644 index 00000000..93a8d933 --- /dev/null +++ b/package/libspdm/libspdm.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 44f967aeb0c481676affe59069615252854bc0c072368ce4b26b6809a54daff5 libspdm-3.4.0.tar.gz +sha256 c6ffa7e6889e63893078cb21b89594070183f7e2cf5b4ea01a4fb23eac59ed32 LICENSE.md diff --git a/package/libspdm/libspdm.mk b/package/libspdm/libspdm.mk new file mode 100644 index 00000000..e86a79ed --- /dev/null +++ b/package/libspdm/libspdm.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# libspdm +# +################################################################################ + +LIBSPDM_VERSION = 3.4.0 +LIBSPDM_SITE = $(call github,DMTF,libspdm,$(LIBSPDM_VERSION)) +LIBSPDM_LICENSE = BSD-3-Clause +LIBSPDM_LICENSE_FILES = LICENSE.md +LIBSPDM_CPE_ID_VENDOR = dmtf + +LIBSPDM_INSTALL_STAGING = YES +LIBSPDM_INSTALL_TARGET = NO + +LIBSPDM_DEPENDENCIES = openssl + +LIBSPDM_TARGET_CPU_FAMILY = $(call qstrip,$(BR2_PACKAGE_LIBSPDM_CPU_FAMILY)) + +LIBSPDM_CFLAGS = \ + $(TARGET_CFLAGS) \ + -DLIBSPDM_ENABLE_CAPABILITY_EVENT_CAP=0 \ + -DLIBSPDM_ENABLE_CAPABILITY_MEL_CAP=0 + +LIBSPDM_CONF_OPTS = \ + -DARCH=$(LIBSPDM_TARGET_CPU_FAMILY) \ + -DTOOLCHAIN=NONE \ + -DTARGET=Release \ + -DCRYPTO=openssl \ + -DENABLE_BINARY_BUILD=1 \ + -DCOMPILED_LIBCRYPTO_PATH=/usr/lib/ \ + -DCOMPILED_LIBSSL_PATH=/usr/lib/ \ + -DDISABLE_TESTS=1 \ + -DDISABLE_EDDSA=1 \ + -DLINK_FLAGS=$(STAGING_DIR) \ + -DCMAKE_C_FLAGS="$(LIBSPDM_CFLAGS)" + +define LIBSPDM_INSTALL_STAGING_CMDS + mkdir -p $(STAGING_DIR)/usr/lib + cp -dpfr $(@D)/lib/* $(STAGING_DIR)/usr/lib/ + + mkdir -p $(STAGING_DIR)/usr/include/libspdm/ + cp -dpfr $(@D)/include/* $(STAGING_DIR)/usr/include/libspdm/ + + mkdir -p $(STAGING_DIR)/usr/include/libspdm/os_stub/spdm_crypt_ext_lib + cp -dpfr $(@D)/os_stub/spdm_crypt_ext_lib/*.h \ + $(STAGING_DIR)/usr/include/libspdm/os_stub/spdm_crypt_ext_lib/ +endef + +$(eval $(cmake-package)) diff --git a/package/libsquish/0001-Makefile-add-f-option-for-ln-to-remove-existing-dest.patch b/package/libsquish/0001-Makefile-add-f-option-for-ln-to-remove-existing-dest.patch new file mode 100644 index 00000000..ab9e64f0 --- /dev/null +++ b/package/libsquish/0001-Makefile-add-f-option-for-ln-to-remove-existing-dest.patch @@ -0,0 +1,32 @@ +From 1e541293ac19c49f886220b64de6006c5c700144 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 12 Jan 2019 12:50:54 +0100 +Subject: [PATCH] Makefile: add -f option for ln to remove existing destination + files + +While reinstalling the library, all symlinks are present. +Ask ln to remove them with -f. + +Signed-off-by: Romain Naour +--- + Makefile | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index fd7d6c8..2683819 100644 +--- a/Makefile ++++ b/Makefile +@@ -25,8 +25,8 @@ install: $(LIB) $(LIBA) libsquish.pc + $(INSTALL_FILE) $(LIBA) $(INSTALL_DIR)/$(LIB_PATH) + ifneq ($(USE_SHARED),0) + $(INSTALL_FILE) $(LIB) $(INSTALL_DIR)/$(LIB_PATH) +- ln -s $(LIB) $(INSTALL_DIR)/$(LIB_PATH)/$(SOLIB) +- ln -s $(LIB) $(INSTALL_DIR)/$(LIB_PATH)/libsquish.so ++ ln -sf $(LIB) $(INSTALL_DIR)/$(LIB_PATH)/$(SOLIB) ++ ln -sf $(LIB) $(INSTALL_DIR)/$(LIB_PATH)/libsquish.so + $(INSTALL_DIRECTORY) $(INSTALL_DIR)/$(LIB_PATH)/pkgconfig + $(INSTALL_FILE) libsquish.pc $(INSTALL_DIR)/$(LIB_PATH)/pkgconfig + endif +-- +2.14.5 + diff --git a/package/libsquish/Config.in b/package/libsquish/Config.in new file mode 100644 index 00000000..e93e97e5 --- /dev/null +++ b/package/libsquish/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBSQUISH + bool "libsquish" + depends on BR2_INSTALL_LIBSTDCPP + help + The libSquish library compresses images with the DXT standard + (also known as S3TC). This standard is mainly used by OpenGL + and DirectX for the lossy compression of RGBA textures. + + http://sourceforge.net/projects/libsquish + +comment "libsquish needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/libsquish/libsquish.hash b/package/libsquish/libsquish.hash new file mode 100644 index 00000000..e4229a90 --- /dev/null +++ b/package/libsquish/libsquish.hash @@ -0,0 +1,5 @@ +# From http://sourceforge.net/projects/libsquish/files +sha1 51844b9a8bc815a27e2cc0ffbede5fee3ef75110 libsquish-1.15.tgz +md5 c02645800131e55b519ff8dbe7284f93 libsquish-1.15.tgz +# Locally calculated +sha256 a6b8c383bf3ab28460d6507484d605dd722e03971606f0cd3032a3af682b63a5 LICENSE.txt diff --git a/package/libsquish/libsquish.mk b/package/libsquish/libsquish.mk new file mode 100644 index 00000000..75d2cbd1 --- /dev/null +++ b/package/libsquish/libsquish.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# libsquish +# +################################################################################ + +LIBSQUISH_VERSION = 1.15 +LIBSQUISH_SOURCE = libsquish-$(LIBSQUISH_VERSION).tgz +LIBSQUISH_SITE = http://downloads.sourceforge.net/project/libsquish +LIBSQUISH_INSTALL_STAGING = YES +LIBSQUISH_STRIP_COMPONENTS = 0 +LIBSQUISH_LICENSE = MIT +LIBSQUISH_LICENSE_FILES = LICENSE.txt + +ifeq ($(BR2_STATIC_LIBS),y) +LIBSQUISH_MAKE_ENV = USE_SHARED=0 +else +LIBSQUISH_MAKE_ENV = USE_SHARED=1 +endif + +define LIBSQUISH_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(LIBSQUISH_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define LIBSQUISH_INSTALL_STAGING_CMDS + mkdir -p $(STAGING_DIR)/usr/include + mkdir -p $(STAGING_DIR)/usr/lib + $(TARGET_CONFIGURE_OPTS) $(LIBSQUISH_MAKE_ENV) $(MAKE) -C $(@D) \ + install PREFIX=/usr INSTALL_DIR=$(STAGING_DIR)/usr + $(INSTALL) -D -m 644 $(@D)/libsquish.pc $(STAGING_DIR)/usr/lib/pkgconfig/libsquish.pc +endef + +define LIBSQUISH_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/include + mkdir -p $(TARGET_DIR)/usr/lib + $(TARGET_CONFIGURE_OPTS) $(LIBSQUISH_MAKE_ENV) $(MAKE) -C $(@D) \ + install PREFIX=/usr INSTALL_DIR=$(TARGET_DIR)/usr +endef + +$(eval $(generic-package)) diff --git a/package/libsrtp/Config.in b/package/libsrtp/Config.in new file mode 100644 index 00000000..ce37712f --- /dev/null +++ b/package/libsrtp/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBSRTP + bool "libsrtp" + help + This package provides an implementation of the Secure + Real-time Transport Protocol (SRTP), the Universal Security + Transform (UST), and a supporting cryptographic kernel. + + https://github.com/cisco/libsrtp diff --git a/package/libsrtp/libsrtp.hash b/package/libsrtp/libsrtp.hash new file mode 100644 index 00000000..95daf0d7 --- /dev/null +++ b/package/libsrtp/libsrtp.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 bf641aa654861be10570bfc137d1441283822418e9757dc71ebb69a6cf84ea6b libsrtp-2.6.0.tar.gz +sha256 8e19d42a1eec9561f3f347253ddf2e385c55f392f025bb0fd41b88dbf38db5ae LICENSE diff --git a/package/libsrtp/libsrtp.mk b/package/libsrtp/libsrtp.mk new file mode 100644 index 00000000..269c1ae3 --- /dev/null +++ b/package/libsrtp/libsrtp.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# libsrtp +# +################################################################################ + +LIBSRTP_VERSION = 2.6.0 +LIBSRTP_SITE = $(call github,cisco,libsrtp,v$(LIBSRTP_VERSION)) +LIBSRTP_INSTALL_STAGING = YES +LIBSRTP_LICENSE = BSD-3-Clause +LIBSRTP_LICENSE_FILES = LICENSE +LIBSRTP_CPE_ID_VENDOR = cisco + +ifeq ($(BR2_STATIC_LIBS),y) +LIBSRTP_MAKE_OPTS = libsrtp2.a +else ifeq ($(BR2_SHARED_LIBS),y) +LIBSRTP_MAKE_OPTS = shared_library +else +LIBSRTP_MAKE_OPTS = libsrtp2.a shared_library +endif + +LIBSRTP_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBSRTP_DEPENDENCIES += openssl +LIBSRTP_CONF_OPTS += --disable-nss --enable-openssl +else ifeq ($(BR2_PACKAGE_LIBNSS),y) +LIBSRTP_DEPENDENCIES += libnss +LIBSRTP_CONF_OPTS += --enable-nss --disable-openssl +else +LIBSRTP_CONF_OPTS += --disable-nss --disable-openssl +endif + +$(eval $(autotools-package)) diff --git a/package/libss7/Config.in b/package/libss7/Config.in new file mode 100644 index 00000000..d8bcf11c --- /dev/null +++ b/package/libss7/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_LIBSS7 + bool "libss7" + depends on BR2_USE_MMU # dahdi-tools <- perl + depends on BR2_LINUX_KERNEL + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_DAHDI_LINUX + select BR2_PACKAGE_DAHDI_TOOLS + help + libss7 is an open source library that encapsulates the + protocols used to communicate using Signaling System 7 + over ISDN (T1, E1). + + http://www.asterisk.org/downloads/libss7 + +comment "libss7 needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +comment "libss7 needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libss7/libss7.hash b/package/libss7/libss7.hash new file mode 100644 index 00000000..442422fc --- /dev/null +++ b/package/libss7/libss7.hash @@ -0,0 +1,6 @@ +# Hashes from http://downloads.asterisk.org/pub/telephony/libss7/releases/ +sha1 301fd3eff4387db6407cbc72c3fec9aed5bc3860 libss7-2.0.1.tar.gz +sha256 091f1c14dcf13a094021334218cde363041816fa5b5037caee38719e4e6891c7 libss7-2.0.1.tar.gz + +# License file, locally calculated +sha256 fa5fc1d1eec39532ea517518eeefd7b6e3c14341a55e5880a0e2a49eee47a5b7 LICENSE diff --git a/package/libss7/libss7.mk b/package/libss7/libss7.mk new file mode 100644 index 00000000..faa147c7 --- /dev/null +++ b/package/libss7/libss7.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# libss7 +# +################################################################################ + +LIBSS7_VERSION = 2.0.1 +LIBSS7_SITE = http://downloads.asterisk.org/pub/telephony/libss7/releases + +LIBSS7_LICENSE = GPL-2.0 +LIBSS7_LICENSE_FILES = LICENSE + +LIBSS7_DEPENDENCIES = dahdi-linux dahdi-tools +LIBSS7_INSTALL_STAGING = YES + +# The Makefile default rule will always try to generate both libraries. +# So we need to explicitly build only what we can. +ifneq ($(BR2_SHARED_LIBS),y) +LIBSS7_LIBS = libss7.a +define LIBSS7_INSTALL_A + $(INSTALL) -D -m 0644 $(@D)/libss7.a $(1)/usr/lib/libss7.a +endef +endif + +ifneq ($(BR2_STATIC_LIBS),y) +LIBSS7_LIBS += libss7.so.2.0 +define LIBSS7_INSTALL_SO + $(INSTALL) -D -m 0644 $(@D)/libss7.so.2.0 $(1)/usr/lib/libss7.so.2.0 + ln -sf libss7.so.2.0 $(1)/usr/lib/libss7.so +endef +endif + +# The Makefile erroneously looks for host headers to decide what utilities +# to build, and thus misses the test utilities. So we explicitly build them +# as they can be useful to validate that the hardware does work. +LIBSS7_UTILS = parser_debug ss7test ss7linktest + +define LIBSS7_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) -fPIC" -C $(@D) \ + $(LIBSS7_LIBS) $(LIBSS7_UTILS) +endef + +define LIBSS7_INSTALL_STAGING_CMDS + $(call LIBSS7_INSTALL_A,$(STAGING_DIR)) + $(call LIBSS7_INSTALL_SO,$(STAGING_DIR)) + $(INSTALL) -D -m 0644 $(@D)/libss7.h $(STAGING_DIR)/usr/include/libss7.h +endef + +define LIBSS7_INSTALL_TARGET_CMDS + $(foreach u,$(LIBSS7_UTILS),\ + $(INSTALL) -D -m 0755 $(@D)/$(u) $(TARGET_DIR)/usr/sbin/$(u)$(sep)) + $(call LIBSS7_INSTALL_SO,$(TARGET_DIR)) +endef + +$(eval $(generic-package)) diff --git a/package/libssh/Config.in b/package/libssh/Config.in new file mode 100644 index 00000000..eaec7544 --- /dev/null +++ b/package/libssh/Config.in @@ -0,0 +1,47 @@ +config BR2_PACKAGE_LIBSSH + bool "libssh" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_OPENSSL if !(BR2_PACKAGE_MBEDTLS || BR2_PACKAGE_LIBGCRYPT) + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + help + libssh is a multiplatform C library implementing the SSHv2 + and SSHv1 protocol on client and server side. With libssh, + you can remotely execute programs, transfer files, use a + secure and transparent tunnel for your remote applications. + + http://www.libssh.org/ + +if BR2_PACKAGE_LIBSSH + +config BR2_PACKAGE_LIBSSH_SERVER + bool "server" + help + Enable libssh server support + +choice + prompt "Crypto Backend" + help + Select crypto library to be used in libssh. + +config BR2_PACKAGE_LIBSSH_MBEDTLS + bool "mbedtls" + depends on BR2_PACKAGE_MBEDTLS + +config BR2_PACKAGE_LIBSSH_LIBGCRYPT + bool "gcrypt" + depends on BR2_PACKAGE_LIBGCRYPT + +config BR2_PACKAGE_LIBSSH_OPENSSL + bool "openssl" + depends on BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENGINES + +endchoice + +endif + +comment "libssh needs a toolchain w/ dynamic library, threads" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libssh/libssh.hash b/package/libssh/libssh.hash new file mode 100644 index 00000000..e5eba219 --- /dev/null +++ b/package/libssh/libssh.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +# https://www.libssh.org/files/0.10/libssh-0.10.6.tar.xz.asc +# with key 8DFF53E18F2ABC8D8F3C92237EE0FC4DCC014E3D +sha256 1861d498f5b6f1741b6abc73e608478491edcf9c9d4b6630eef6e74596de9dc1 libssh-0.10.6.tar.xz +sha256 1656186e951db1c010a8485481fa94587f7e53a26d24976bef97945ad0c4df5a COPYING diff --git a/package/libssh/libssh.mk b/package/libssh/libssh.mk new file mode 100644 index 00000000..8b995c35 --- /dev/null +++ b/package/libssh/libssh.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# libssh +# +################################################################################ + +LIBSSH_VERSION_MAJOR = 0.10 +LIBSSH_VERSION = $(LIBSSH_VERSION_MAJOR).6 +LIBSSH_SOURCE = libssh-$(LIBSSH_VERSION).tar.xz +LIBSSH_SITE = https://www.libssh.org/files/$(LIBSSH_VERSION_MAJOR) +LIBSSH_LICENSE = LGPL-2.1 +LIBSSH_LICENSE_FILES = COPYING +LIBSSH_CPE_ID_VENDOR = libssh +LIBSSH_INSTALL_STAGING = YES +LIBSSH_SUPPORTS_IN_SOURCE_BUILD = NO +LIBSSH_CONF_OPTS = \ + -DWITH_STACK_PROTECTOR=OFF \ + -DWITH_EXAMPLES=OFF + +# Not part of any release +# https://www.libssh.org/2023/07/14/cve-2023-3603-potential-null-dereference-in-libsshs-sftp-server/ +LIBSSH_IGNORE_CVES += CVE-2023-3603 + +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +LIBSSH_CONF_OPTS += -DWITH_STACK_CLASH_PROTECTION=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBSSH_SERVER),y) +LIBSSH_CONF_OPTS += -DWITH_SERVER=ON +else +LIBSSH_CONF_OPTS += -DWITH_SERVER=OFF +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LIBSSH_CONF_OPTS += -DWITH_ZLIB=ON +LIBSSH_DEPENDENCIES += zlib +else +LIBSSH_CONF_OPTS += -DWITH_ZLIB=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBSSH_MBEDTLS),y) +LIBSSH_CONF_OPTS += -DWITH_MBEDTLS=ON +LIBSSH_DEPENDENCIES += mbedtls +else ifeq ($(BR2_PACKAGE_LIBSSH_LIBGCRYPT),y) +LIBSSH_CONF_OPTS += -DWITH_GCRYPT=ON +LIBSSH_DEPENDENCIES += libgcrypt +else ifeq ($(BR2_PACKAGE_LIBSSH_OPENSSL),y) +LIBSSH_DEPENDENCIES += openssl +endif + +$(eval $(cmake-package)) diff --git a/package/libssh2/0001-mbedtls-use-more-size_t-to-sync-up-with-crypto-h.patch b/package/libssh2/0001-mbedtls-use-more-size_t-to-sync-up-with-crypto-h.patch new file mode 100644 index 00000000..3cac1338 --- /dev/null +++ b/package/libssh2/0001-mbedtls-use-more-size_t-to-sync-up-with-crypto-h.patch @@ -0,0 +1,106 @@ +From 1153ebdeba563ac657b525edd6bf6da68b1fe5e2 Mon Sep 17 00:00:00 2001 +From: Viktor Szakats +Date: Tue, 30 May 2023 17:28:03 +0000 +Subject: [PATCH] mbedtls: use more `size_t` to sync up with `crypto.h` + +Ref: 5a96f494ee0b00282afb2db2e091246fc5e1774a #846 #879 + +Fixes #1053 +Closes #1054 + +Upstream: https://github.com/libssh2/libssh2/commit/1153ebdeba563ac657b525edd6bf6da68b1fe5e2 + +Signed-off-by: Bernd Kuhls +--- + src/mbedtls.c | 14 ++++++++------ + src/mbedtls.h | 13 ++++++------- + 2 files changed, 14 insertions(+), 13 deletions(-) + +diff --git a/src/mbedtls.c b/src/mbedtls.c +index e387cdb19..cd14a4bd8 100644 +--- a/src/mbedtls.c ++++ b/src/mbedtls.c +@@ -186,7 +186,7 @@ _libssh2_mbedtls_cipher_dtor(_libssh2_cipher_ctx *ctx) + int + _libssh2_mbedtls_hash_init(mbedtls_md_context_t *ctx, + mbedtls_md_type_t mdtype, +- const unsigned char *key, unsigned long keylen) ++ const unsigned char *key, size_t keylen) + { + const mbedtls_md_info_t *md_info; + int ret, hmac; +@@ -221,7 +221,7 @@ _libssh2_mbedtls_hash_final(mbedtls_md_context_t *ctx, unsigned char *hash) + } + + int +-_libssh2_mbedtls_hash(const unsigned char *data, unsigned long datalen, ++_libssh2_mbedtls_hash(const unsigned char *data, size_t datalen, + mbedtls_md_type_t mdtype, unsigned char *hash) + { + const mbedtls_md_info_t *md_info; +@@ -497,8 +497,9 @@ int + _libssh2_mbedtls_rsa_sha2_verify(libssh2_rsa_ctx * rsactx, + size_t hash_len, + const unsigned char *sig, +- unsigned long sig_len, +- const unsigned char *m, unsigned long m_len) ++ size_t sig_len, ++ const unsigned char *m, ++ size_t m_len) + { + int ret; + int md_type; +@@ -548,8 +549,9 @@ _libssh2_mbedtls_rsa_sha2_verify(libssh2_rsa_ctx * rsactx, + int + _libssh2_mbedtls_rsa_sha1_verify(libssh2_rsa_ctx * rsactx, + const unsigned char *sig, +- unsigned long sig_len, +- const unsigned char *m, unsigned long m_len) ++ size_t sig_len, ++ const unsigned char *m, ++ size_t m_len) + { + return _libssh2_mbedtls_rsa_sha2_verify(rsactx, SHA_DIGEST_LENGTH, + sig, sig_len, m, m_len); +diff --git a/src/mbedtls.h b/src/mbedtls.h +index d9592f721..03484da17 100644 +--- a/src/mbedtls.h ++++ b/src/mbedtls.h +@@ -478,12 +478,12 @@ _libssh2_mbedtls_cipher_dtor(_libssh2_cipher_ctx *ctx); + int + _libssh2_mbedtls_hash_init(mbedtls_md_context_t *ctx, + mbedtls_md_type_t mdtype, +- const unsigned char *key, unsigned long keylen); ++ const unsigned char *key, size_t keylen); + + int + _libssh2_mbedtls_hash_final(mbedtls_md_context_t *ctx, unsigned char *hash); + int +-_libssh2_mbedtls_hash(const unsigned char *data, unsigned long datalen, ++_libssh2_mbedtls_hash(const unsigned char *data, size_t datalen, + mbedtls_md_type_t mdtype, unsigned char *hash); + + _libssh2_bn * +@@ -526,9 +526,8 @@ _libssh2_mbedtls_rsa_new_private_frommemory(libssh2_rsa_ctx **rsa, + int + _libssh2_mbedtls_rsa_sha1_verify(libssh2_rsa_ctx *rsa, + const unsigned char *sig, +- unsigned long sig_len, +- const unsigned char *m, +- unsigned long m_len); ++ size_t sig_len, ++ const unsigned char *m, size_t m_len); + int + _libssh2_mbedtls_rsa_sha1_sign(LIBSSH2_SESSION *session, + libssh2_rsa_ctx *rsa, +@@ -540,8 +539,8 @@ int + _libssh2_mbedtls_rsa_sha2_verify(libssh2_rsa_ctx * rsactx, + size_t hash_len, + const unsigned char *sig, +- unsigned long sig_len, +- const unsigned char *m, unsigned long m_len); ++ size_t sig_len, ++ const unsigned char *m, size_t m_len); + int + _libssh2_mbedtls_rsa_sha2_sign(LIBSSH2_SESSION *session, + libssh2_rsa_ctx *rsa, diff --git a/package/libssh2/0002-src-add-strict-KEX-to-fix-CVE-2023-48795-Terrapin-Attack.patch b/package/libssh2/0002-src-add-strict-KEX-to-fix-CVE-2023-48795-Terrapin-Attack.patch new file mode 100644 index 00000000..81877194 --- /dev/null +++ b/package/libssh2/0002-src-add-strict-KEX-to-fix-CVE-2023-48795-Terrapin-Attack.patch @@ -0,0 +1,467 @@ +From 3a80751dce7b7d98b9d9006fb37213a1e4af7ac5 Mon Sep 17 00:00:00 2001 +From: Michael Buckley +Date: Thu, 30 Nov 2023 15:08:02 -0800 +Subject: [PATCH] src: add 'strict KEX' to fix CVE-2023-48795 "Terrapin Attack" + +Refs: +https://terrapin-attack.com/ +https://seclists.org/oss-sec/2023/q4/292 +https://osv.dev/list?ecosystem=&q=CVE-2023-48795 +https://github.com/advisories/GHSA-45x7-px36-x8w8 +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-48795 + +Fixes #1290 +Closes #1291 + +Upstream: https://github.com/libssh2/libssh2/commit/d34d9258b8420b19ec3f97b4cc5bf7aa7d98e35a +Signed-off-by: Fabrice Fontaine +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + src/kex.c | 63 +++++++++++++++++++++++------------ + src/libssh2_priv.h | 18 +++++++--- + src/packet.c | 83 +++++++++++++++++++++++++++++++++++++++++++--- + src/packet.h | 2 +- + src/session.c | 3 ++ + src/transport.c | 12 ++++++- + 6 files changed, 149 insertions(+), 32 deletions(-) + +diff --git a/src/kex.c b/src/kex.c +index d4034a0a953e..b4b748cac4ee 100644 +--- a/src/kex.c ++++ b/src/kex.c +@@ -3037,6 +3037,13 @@ kex_method_extension_negotiation = { + 0, + }; + ++static const LIBSSH2_KEX_METHOD ++kex_method_strict_client_extension = { ++ "kex-strict-c-v00@openssh.com", ++ NULL, ++ 0, ++}; ++ + static const LIBSSH2_KEX_METHOD *libssh2_kex_methods[] = { + #if LIBSSH2_ED25519 + &kex_method_ssh_curve25519_sha256, +@@ -3055,6 +3062,7 @@ static const LIBSSH2_KEX_METHOD *libssh2_kex_methods[] = { + &kex_method_diffie_helman_group1_sha1, + &kex_method_diffie_helman_group_exchange_sha1, + &kex_method_extension_negotiation, ++ &kex_method_strict_client_extension, + NULL + }; + +@@ -3307,13 +3315,13 @@ static int kexinit(LIBSSH2_SESSION * session) + return 0; + } + +-/* kex_agree_instr ++/* _libssh2_kex_agree_instr + * Kex specific variant of strstr() + * Needle must be preceded by BOL or ',', and followed by ',' or EOL + */ +-static unsigned char * +-kex_agree_instr(unsigned char *haystack, size_t haystack_len, +- const unsigned char *needle, size_t needle_len) ++unsigned char * ++_libssh2_kex_agree_instr(unsigned char *haystack, size_t haystack_len, ++ const unsigned char *needle, size_t needle_len) + { + unsigned char *s; + unsigned char *end_haystack; +@@ -3398,7 +3406,7 @@ static int kex_agree_hostkey(LIBSSH2_SESSION * session, + while(s && *s) { + unsigned char *p = (unsigned char *) strchr((char *) s, ','); + size_t method_len = (p ? (size_t)(p - s) : strlen((char *) s)); +- if(kex_agree_instr(hostkey, hostkey_len, s, method_len)) { ++ if(_libssh2_kex_agree_instr(hostkey, hostkey_len, s, method_len)) { + const LIBSSH2_HOSTKEY_METHOD *method = + (const LIBSSH2_HOSTKEY_METHOD *) + kex_get_method_by_name((char *) s, method_len, +@@ -3432,9 +3440,9 @@ static int kex_agree_hostkey(LIBSSH2_SESSION * session, + } + + while(hostkeyp && (*hostkeyp) && (*hostkeyp)->name) { +- s = kex_agree_instr(hostkey, hostkey_len, +- (unsigned char *) (*hostkeyp)->name, +- strlen((*hostkeyp)->name)); ++ s = _libssh2_kex_agree_instr(hostkey, hostkey_len, ++ (unsigned char *) (*hostkeyp)->name, ++ strlen((*hostkeyp)->name)); + if(s) { + /* So far so good, but does it suit our purposes? (Encrypting vs + Signing) */ +@@ -3468,6 +3476,12 @@ static int kex_agree_kex_hostkey(LIBSSH2_SESSION * session, unsigned char *kex, + { + const LIBSSH2_KEX_METHOD **kexp = libssh2_kex_methods; + unsigned char *s; ++ const unsigned char *strict = ++ (unsigned char *)"kex-strict-s-v00@openssh.com"; ++ ++ if(_libssh2_kex_agree_instr(kex, kex_len, strict, 28)) { ++ session->kex_strict = 1; ++ } + + if(session->kex_prefs) { + s = (unsigned char *) session->kex_prefs; +@@ -3475,7 +3489,7 @@ static int kex_agree_kex_hostkey(LIBSSH2_SESSION * session, unsigned char *kex, + while(s && *s) { + unsigned char *q, *p = (unsigned char *) strchr((char *) s, ','); + size_t method_len = (p ? (size_t)(p - s) : strlen((char *) s)); +- q = kex_agree_instr(kex, kex_len, s, method_len); ++ q = _libssh2_kex_agree_instr(kex, kex_len, s, method_len); + if(q) { + const LIBSSH2_KEX_METHOD *method = (const LIBSSH2_KEX_METHOD *) + kex_get_method_by_name((char *) s, method_len, +@@ -3509,9 +3523,9 @@ static int kex_agree_kex_hostkey(LIBSSH2_SESSION * session, unsigned char *kex, + } + + while(*kexp && (*kexp)->name) { +- s = kex_agree_instr(kex, kex_len, +- (unsigned char *) (*kexp)->name, +- strlen((*kexp)->name)); ++ s = _libssh2_kex_agree_instr(kex, kex_len, ++ (unsigned char *) (*kexp)->name, ++ strlen((*kexp)->name)); + if(s) { + /* We've agreed on a key exchange method, + * Can we agree on a hostkey that works with this kex? +@@ -3555,7 +3569,7 @@ static int kex_agree_crypt(LIBSSH2_SESSION * session, + unsigned char *p = (unsigned char *) strchr((char *) s, ','); + size_t method_len = (p ? (size_t)(p - s) : strlen((char *) s)); + +- if(kex_agree_instr(crypt, crypt_len, s, method_len)) { ++ if(_libssh2_kex_agree_instr(crypt, crypt_len, s, method_len)) { + const LIBSSH2_CRYPT_METHOD *method = + (const LIBSSH2_CRYPT_METHOD *) + kex_get_method_by_name((char *) s, method_len, +@@ -3577,9 +3591,9 @@ static int kex_agree_crypt(LIBSSH2_SESSION * session, + } + + while(*cryptp && (*cryptp)->name) { +- s = kex_agree_instr(crypt, crypt_len, +- (unsigned char *) (*cryptp)->name, +- strlen((*cryptp)->name)); ++ s = _libssh2_kex_agree_instr(crypt, crypt_len, ++ (unsigned char *) (*cryptp)->name, ++ strlen((*cryptp)->name)); + if(s) { + endpoint->crypt = *cryptp; + return 0; +@@ -3619,7 +3633,7 @@ static int kex_agree_mac(LIBSSH2_SESSION * session, + unsigned char *p = (unsigned char *) strchr((char *) s, ','); + size_t method_len = (p ? (size_t)(p - s) : strlen((char *) s)); + +- if(kex_agree_instr(mac, mac_len, s, method_len)) { ++ if(_libssh2_kex_agree_instr(mac, mac_len, s, method_len)) { + const LIBSSH2_MAC_METHOD *method = (const LIBSSH2_MAC_METHOD *) + kex_get_method_by_name((char *) s, method_len, + (const LIBSSH2_COMMON_METHOD **) +@@ -3640,8 +3654,9 @@ static int kex_agree_mac(LIBSSH2_SESSION * session, + } + + while(*macp && (*macp)->name) { +- s = kex_agree_instr(mac, mac_len, (unsigned char *) (*macp)->name, +- strlen((*macp)->name)); ++ s = _libssh2_kex_agree_instr(mac, mac_len, ++ (unsigned char *) (*macp)->name, ++ strlen((*macp)->name)); + if(s) { + endpoint->mac = *macp; + return 0; +@@ -3672,7 +3687,7 @@ static int kex_agree_comp(LIBSSH2_SESSION *session, + unsigned char *p = (unsigned char *) strchr((char *) s, ','); + size_t method_len = (p ? (size_t)(p - s) : strlen((char *) s)); + +- if(kex_agree_instr(comp, comp_len, s, method_len)) { ++ if(_libssh2_kex_agree_instr(comp, comp_len, s, method_len)) { + const LIBSSH2_COMP_METHOD *method = + (const LIBSSH2_COMP_METHOD *) + kex_get_method_by_name((char *) s, method_len, +@@ -3694,8 +3709,9 @@ static int kex_agree_comp(LIBSSH2_SESSION *session, + } + + while(*compp && (*compp)->name) { +- s = kex_agree_instr(comp, comp_len, (unsigned char *) (*compp)->name, +- strlen((*compp)->name)); ++ s = _libssh2_kex_agree_instr(comp, comp_len, ++ (unsigned char *) (*compp)->name, ++ strlen((*compp)->name)); + if(s) { + endpoint->comp = *compp; + return 0; +@@ -3876,6 +3892,7 @@ _libssh2_kex_exchange(LIBSSH2_SESSION * session, int reexchange, + session->local.kexinit = key_state->oldlocal; + session->local.kexinit_len = key_state->oldlocal_len; + key_state->state = libssh2_NB_state_idle; ++ session->state &= ~LIBSSH2_STATE_INITIAL_KEX; + session->state &= ~LIBSSH2_STATE_KEX_ACTIVE; + session->state &= ~LIBSSH2_STATE_EXCHANGING_KEYS; + return -1; +@@ -3901,6 +3918,7 @@ _libssh2_kex_exchange(LIBSSH2_SESSION * session, int reexchange, + session->local.kexinit = key_state->oldlocal; + session->local.kexinit_len = key_state->oldlocal_len; + key_state->state = libssh2_NB_state_idle; ++ session->state &= ~LIBSSH2_STATE_INITIAL_KEX; + session->state &= ~LIBSSH2_STATE_KEX_ACTIVE; + session->state &= ~LIBSSH2_STATE_EXCHANGING_KEYS; + return -1; +@@ -3949,6 +3967,7 @@ _libssh2_kex_exchange(LIBSSH2_SESSION * session, int reexchange, + session->remote.kexinit = NULL; + } + ++ session->state &= ~LIBSSH2_STATE_INITIAL_KEX; + session->state &= ~LIBSSH2_STATE_KEX_ACTIVE; + session->state &= ~LIBSSH2_STATE_EXCHANGING_KEYS; + +diff --git a/src/libssh2_priv.h b/src/libssh2_priv.h +index 82c3afe250b0..ee1d8b5c2b9b 100644 +--- a/src/libssh2_priv.h ++++ b/src/libssh2_priv.h +@@ -699,6 +699,9 @@ struct _LIBSSH2_SESSION + /* key signing algorithm preferences -- NULL yields server order */ + char *sign_algo_prefs; + ++ /* Whether to use the OpenSSH Strict KEX extension */ ++ int kex_strict; ++ + /* (remote as source of data -- packet_read ) */ + libssh2_endpoint_data remote; + +@@ -870,6 +873,7 @@ struct _LIBSSH2_SESSION + int fullpacket_macstate; + size_t fullpacket_payload_len; + int fullpacket_packet_type; ++ uint32_t fullpacket_required_type; + + /* State variables used in libssh2_sftp_init() */ + libssh2_nonblocking_states sftpInit_state; +@@ -910,10 +914,11 @@ struct _LIBSSH2_SESSION + }; + + /* session.state bits */ +-#define LIBSSH2_STATE_EXCHANGING_KEYS 0x00000001 +-#define LIBSSH2_STATE_NEWKEYS 0x00000002 +-#define LIBSSH2_STATE_AUTHENTICATED 0x00000004 +-#define LIBSSH2_STATE_KEX_ACTIVE 0x00000008 ++#define LIBSSH2_STATE_INITIAL_KEX 0x00000001 ++#define LIBSSH2_STATE_EXCHANGING_KEYS 0x00000002 ++#define LIBSSH2_STATE_NEWKEYS 0x00000004 ++#define LIBSSH2_STATE_AUTHENTICATED 0x00000008 ++#define LIBSSH2_STATE_KEX_ACTIVE 0x00000010 + + /* session.flag helpers */ + #ifdef MSG_NOSIGNAL +@@ -1144,6 +1149,11 @@ ssize_t _libssh2_send(libssh2_socket_t socket, const void *buffer, + int _libssh2_kex_exchange(LIBSSH2_SESSION * session, int reexchange, + key_exchange_state_t * state); + ++unsigned char *_libssh2_kex_agree_instr(unsigned char *haystack, ++ size_t haystack_len, ++ const unsigned char *needle, ++ size_t needle_len); ++ + /* Let crypt.c/hostkey.c expose their method structs */ + const LIBSSH2_CRYPT_METHOD **libssh2_crypt_methods(void); + const LIBSSH2_HOSTKEY_METHOD **libssh2_hostkey_methods(void); +diff --git a/src/packet.c b/src/packet.c +index b5b41981a108..35d4d39eff87 100644 +--- a/src/packet.c ++++ b/src/packet.c +@@ -605,14 +605,13 @@ authagent_exit: + * layer when it has received a packet. + * + * The input pointer 'data' is pointing to allocated data that this function +- * is asked to deal with so on failure OR success, it must be freed fine. +- * The only exception is when the return code is LIBSSH2_ERROR_EAGAIN. ++ * will be freed unless return the code is LIBSSH2_ERROR_EAGAIN. + * + * This function will always be called with 'datalen' greater than zero. + */ + int + _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data, +- size_t datalen, int macstate) ++ size_t datalen, int macstate, uint32_t seq) + { + int rc = 0; + unsigned char *message = NULL; +@@ -657,6 +656,70 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data, + break; + } + ++ if(session->state & LIBSSH2_STATE_INITIAL_KEX) { ++ if(msg == SSH_MSG_KEXINIT) { ++ if(!session->kex_strict) { ++ if(datalen < 17) { ++ LIBSSH2_FREE(session, data); ++ session->packAdd_state = libssh2_NB_state_idle; ++ return _libssh2_error(session, ++ LIBSSH2_ERROR_BUFFER_TOO_SMALL, ++ "Data too short extracting kex"); ++ } ++ else { ++ const unsigned char *strict = ++ (unsigned char *)"kex-strict-s-v00@openssh.com"; ++ struct string_buf buf; ++ unsigned char *algs = NULL; ++ size_t algs_len = 0; ++ ++ buf.data = (unsigned char *)data; ++ buf.dataptr = buf.data; ++ buf.len = datalen; ++ buf.dataptr += 17; /* advance past type and cookie */ ++ ++ if(_libssh2_get_string(&buf, &algs, &algs_len)) { ++ LIBSSH2_FREE(session, data); ++ session->packAdd_state = libssh2_NB_state_idle; ++ return _libssh2_error(session, ++ LIBSSH2_ERROR_BUFFER_TOO_SMALL, ++ "Algs too short"); ++ } ++ ++ if(algs_len == 0 || ++ _libssh2_kex_agree_instr(algs, algs_len, strict, 28)) { ++ session->kex_strict = 1; ++ } ++ } ++ } ++ ++ if(session->kex_strict && seq) { ++ LIBSSH2_FREE(session, data); ++ session->socket_state = LIBSSH2_SOCKET_DISCONNECTED; ++ session->packAdd_state = libssh2_NB_state_idle; ++ libssh2_session_disconnect(session, "strict KEX violation: " ++ "KEXINIT was not the first packet"); ++ ++ return _libssh2_error(session, LIBSSH2_ERROR_SOCKET_DISCONNECT, ++ "strict KEX violation: " ++ "KEXINIT was not the first packet"); ++ } ++ } ++ ++ if(session->kex_strict && session->fullpacket_required_type && ++ session->fullpacket_required_type != msg) { ++ LIBSSH2_FREE(session, data); ++ session->socket_state = LIBSSH2_SOCKET_DISCONNECTED; ++ session->packAdd_state = libssh2_NB_state_idle; ++ libssh2_session_disconnect(session, "strict KEX violation: " ++ "unexpected packet type"); ++ ++ return _libssh2_error(session, LIBSSH2_ERROR_SOCKET_DISCONNECT, ++ "strict KEX violation: " ++ "unexpected packet type"); ++ } ++ } ++ + if(session->packAdd_state == libssh2_NB_state_allocated) { + /* A couple exceptions to the packet adding rule: */ + switch(msg) { +@@ -1341,6 +1404,15 @@ _libssh2_packet_ask(LIBSSH2_SESSION * session, unsigned char packet_type, + + return 0; + } ++ else if(session->kex_strict && ++ (session->state & LIBSSH2_STATE_INITIAL_KEX)) { ++ libssh2_session_disconnect(session, "strict KEX violation: " ++ "unexpected packet type"); ++ ++ return _libssh2_error(session, LIBSSH2_ERROR_SOCKET_DISCONNECT, ++ "strict KEX violation: " ++ "unexpected packet type"); ++ } + packet = _libssh2_list_next(&packet->node); + } + return -1; +@@ -1402,7 +1474,10 @@ _libssh2_packet_require(LIBSSH2_SESSION * session, unsigned char packet_type, + } + + while(session->socket_state == LIBSSH2_SOCKET_CONNECTED) { +- int ret = _libssh2_transport_read(session); ++ int ret; ++ session->fullpacket_required_type = packet_type; ++ ret = _libssh2_transport_read(session); ++ session->fullpacket_required_type = 0; + if(ret == LIBSSH2_ERROR_EAGAIN) + return ret; + else if(ret < 0) { +diff --git a/src/packet.h b/src/packet.h +index 79018bcf1d55..6ea100a5cfb3 100644 +--- a/src/packet.h ++++ b/src/packet.h +@@ -71,6 +71,6 @@ int _libssh2_packet_burn(LIBSSH2_SESSION * session, + int _libssh2_packet_write(LIBSSH2_SESSION * session, unsigned char *data, + unsigned long data_len); + int _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data, +- size_t datalen, int macstate); ++ size_t datalen, int macstate, uint32_t seq); + + #endif /* __LIBSSH2_PACKET_H */ +diff --git a/src/session.c b/src/session.c +index a4d602bad002..f4bafb57b2a6 100644 +--- a/src/session.c ++++ b/src/session.c +@@ -464,6 +464,8 @@ libssh2_session_init_ex(LIBSSH2_ALLOC_FUNC((*my_alloc)), + session->abstract = abstract; + session->api_timeout = 0; /* timeout-free API by default */ + session->api_block_mode = 1; /* blocking API by default */ ++ session->state = LIBSSH2_STATE_INITIAL_KEX; ++ session->fullpacket_required_type = 0; + session->packet_read_timeout = LIBSSH2_DEFAULT_READ_TIMEOUT; + session->flag.quote_paths = 1; /* default behavior is to quote paths + for the scp subsystem */ +@@ -1186,6 +1188,7 @@ libssh2_session_disconnect_ex(LIBSSH2_SESSION *session, int reason, + const char *desc, const char *lang) + { + int rc; ++ session->state &= ~LIBSSH2_STATE_INITIAL_KEX; + session->state &= ~LIBSSH2_STATE_EXCHANGING_KEYS; + BLOCK_ADJUST(rc, session, + session_disconnect(session, reason, desc, lang)); +diff --git a/src/transport.c b/src/transport.c +index 6d902d3372b4..3b30ff848726 100644 +--- a/src/transport.c ++++ b/src/transport.c +@@ -187,6 +187,7 @@ fullpacket(LIBSSH2_SESSION * session, int encrypted /* 1 or 0 */ ) + struct transportpacket *p = &session->packet; + int rc; + int compressed; ++ uint32_t seq = session->remote.seqno; + + if(session->fullpacket_state == libssh2_NB_state_idle) { + session->fullpacket_macstate = LIBSSH2_MAC_CONFIRMED; +@@ -318,7 +319,7 @@ fullpacket(LIBSSH2_SESSION * session, int encrypted /* 1 or 0 */ ) + if(session->fullpacket_state == libssh2_NB_state_created) { + rc = _libssh2_packet_add(session, p->payload, + session->fullpacket_payload_len, +- session->fullpacket_macstate); ++ session->fullpacket_macstate, seq); + if(rc == LIBSSH2_ERROR_EAGAIN) + return rc; + if(rc) { +@@ -329,6 +330,11 @@ fullpacket(LIBSSH2_SESSION * session, int encrypted /* 1 or 0 */ ) + + session->fullpacket_state = libssh2_NB_state_idle; + ++ if(session->kex_strict && ++ session->fullpacket_packet_type == SSH_MSG_NEWKEYS) { ++ session->remote.seqno = 0; ++ } ++ + return session->fullpacket_packet_type; + } + +@@ -1091,6 +1097,10 @@ int _libssh2_transport_send(LIBSSH2_SESSION *session, + + session->local.seqno++; + ++ if(session->kex_strict && data[0] == SSH_MSG_NEWKEYS) { ++ session->local.seqno = 0; ++ } ++ + ret = LIBSSH2_SEND(session, p->outbuf, total_length, + LIBSSH2_SOCKET_SEND_FLAGS(session)); + if(ret < 0) +-- +2.43.0 + diff --git a/package/libssh2/Config.in b/package/libssh2/Config.in new file mode 100644 index 00000000..ce2dd303 --- /dev/null +++ b/package/libssh2/Config.in @@ -0,0 +1,33 @@ +config BR2_PACKAGE_LIBSSH2 + bool "libssh2" + select BR2_PACKAGE_OPENSSL if !(BR2_PACKAGE_MBEDTLS || BR2_PACKAGE_LIBGCRYPT) + help + libssh2 is a client-side C library implementing the SSH2 + protocol as defined by Internet Drafts: SECSH-TRANS(22), + SECSH-USERAUTH(25), SECSH-CONNECTION(23), SECSH-ARCH(20), + SECSH-FILEXFER(06)*, SECSH-DHGEX(04), and SECSH-NUMBERS(10) + + http://www.libssh2.org/ + +if BR2_PACKAGE_LIBSSH2 + +choice + prompt "Crypto Backend" + help + Select crypto library to be used in libssh2. + +config BR2_PACKAGE_LIBSSH2_MBEDTLS + bool "mbedtls" + depends on BR2_PACKAGE_MBEDTLS + +config BR2_PACKAGE_LIBSSH2_LIBGCRYPT + bool "gcrypt" + depends on BR2_PACKAGE_LIBGCRYPT + +config BR2_PACKAGE_LIBSSH2_OPENSSL + bool "openssl" + depends on BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 if BR2_PACKAGE_LIBOPENSSL + +endchoice +endif diff --git a/package/libssh2/libssh2.hash b/package/libssh2/libssh2.hash new file mode 100644 index 00000000..b5bc571f --- /dev/null +++ b/package/libssh2/libssh2.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a488a22625296342ddae862de1d59633e6d446eff8417398e06674a49be3d7c2 libssh2-1.11.0.tar.xz +sha256 fda5e2522c58ba1f31c9f2044747616457466f4aebec16ade4af86e3a16a8e02 COPYING diff --git a/package/libssh2/libssh2.mk b/package/libssh2/libssh2.mk new file mode 100644 index 00000000..b2c07cbf --- /dev/null +++ b/package/libssh2/libssh2.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# libssh2 +# +################################################################################ + +LIBSSH2_VERSION = 1.11.0 +LIBSSH2_SOURCE= libssh2-$(LIBSSH2_VERSION).tar.xz +LIBSSH2_SITE = https://www.libssh2.org/download +LIBSSH2_LICENSE = BSD +LIBSSH2_LICENSE_FILES = COPYING +LIBSSH2_CPE_ID_VENDOR = libssh2 +LIBSSH2_INSTALL_STAGING = YES +LIBSSH2_CONF_OPTS = --disable-examples-build --disable-rpath + +# 0002-src-add-strict-KEX-to-fix-CVE-2023-48795-Terrapin-Attack.patch +LIBSSH2_IGNORE_CVES += CVE-2023-48795 + +ifeq ($(BR2_PACKAGE_LIBSSH2_MBEDTLS),y) +LIBSSH2_DEPENDENCIES += mbedtls +LIBSSH2_CONF_OPTS += --with-libmbedcrypto-prefix=$(STAGING_DIR)/usr \ + --with-crypto=mbedtls +else ifeq ($(BR2_PACKAGE_LIBSSH2_LIBGCRYPT),y) +LIBSSH2_DEPENDENCIES += libgcrypt +LIBSSH2_CONF_OPTS += --with-libgcrypt-prefix=$(STAGING_DIR)/usr \ + --with-crypto=libgcrypt +# configure.ac forgets to link to dependent libraries of gcrypt breaking static +# linking +LIBSSH2_CONF_ENV += LIBS="`$(STAGING_DIR)/usr/bin/libgcrypt-config --libs`" +else ifeq ($(BR2_PACKAGE_LIBSSH2_OPENSSL),y) +LIBSSH2_DEPENDENCIES += host-pkgconf openssl +LIBSSH2_CONF_OPTS += --with-libssl-prefix=$(STAGING_DIR)/usr \ + --with-crypto=openssl +# configure.ac forgets to link to dependent libraries of openssl breaking static +# linking +LIBSSH2_CONF_ENV += LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl` +endif + +# Add zlib support if enabled +ifeq ($(BR2_PACKAGE_ZLIB),y) +LIBSSH2_DEPENDENCIES += zlib +LIBSSH2_CONF_OPTS += --with-libz \ + --with-libz-prefix=$(STAGING_DIR)/usr +else +LIBSSH2_CONF_OPTS += --without-libz +endif + +HOST_LIBSSH2_DEPENDENCIES += host-openssl +HOST_LIBSSH2_CONF_OPTS += --with-openssl \ + --with-libssl-prefix=$(HOST_DIR) \ + --without-libgcrypt + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libstrophe/Config.in b/package/libstrophe/Config.in new file mode 100644 index 00000000..6ddc70b9 --- /dev/null +++ b/package/libstrophe/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBSTROPHE + bool "libstrophe" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_GNUTLS + select BR2_PACKAGE_LIBXML2 if !BR2_PACKAGE_EXPAT + help + libstrophe is a lightweight XMPP client library written in C. + It has minimal dependencies and is configurable for various + environments. It runs well on both Linux, Unix, and Windows + based platforms. + + https://github.com/strophe/libstrophe + +comment "libstrophe needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libstrophe/libstrophe.hash b/package/libstrophe/libstrophe.hash new file mode 100644 index 00000000..ec5a5598 --- /dev/null +++ b/package/libstrophe/libstrophe.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 86c0abd348ae66feb40b6886f2c7f04525f1d5b20a48c10d4db4ed532dc63f22 libstrophe-0.13.1.tar.xz +sha256 82476f36ffd5e895a176013c0812166ba7b7d99f3d536fc7f5ed2e33e9f74a08 MIT-LICENSE.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 GPL-LICENSE.txt diff --git a/package/libstrophe/libstrophe.mk b/package/libstrophe/libstrophe.mk new file mode 100644 index 00000000..42d582fe --- /dev/null +++ b/package/libstrophe/libstrophe.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# libstrophe +# +################################################################################ + +LIBSTROPHE_VERSION = 0.13.1 +LIBSTROPHE_SOURCE = libstrophe-$(LIBSTROPHE_VERSION).tar.xz +LIBSTROPHE_SITE = https://github.com/strophe/libstrophe/releases/download/$(LIBSTROPHE_VERSION) +LIBSTROPHE_DEPENDENCIES = host-pkgconf +LIBSTROPHE_LICENSE = MIT or GPL-3.0 +LIBSTROPHE_LICENSE_FILES = MIT-LICENSE.txt GPL-LICENSE.txt +LIBSTROPHE_INSTALL_STAGING = YES +LIBSTROPHE_CONF_OPTS = --disable-examples + +ifeq ($(BR2_PACKAGE_C_ARES),y) +LIBSTROPHE_CONF_OPTS += --enable-cares +LIBSTROPHE_DEPENDENCIES += c-ares +else +LIBSTROPHE_CONF_OPTS += --disable-cares +endif + +ifeq ($(BR2_PACKAGE_EXPAT),y) +LIBSTROPHE_CONF_OPTS += --without-libxml2 +LIBSTROPHE_DEPENDENCIES += expat +else +LIBSTROPHE_CONF_OPTS += --with-libxml2 +LIBSTROPHE_DEPENDENCIES += libxml2 +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBSTROPHE_CONF_OPTS += --with-tls --without-gnutls +LIBSTROPHE_DEPENDENCIES += openssl +else +LIBSTROPHE_CONF_OPTS += --with-gnutls --without-tls +LIBSTROPHE_DEPENDENCIES += gnutls +endif + +$(eval $(autotools-package)) diff --git a/package/libsvg-cairo/Config.in b/package/libsvg-cairo/Config.in new file mode 100644 index 00000000..4602e93c --- /dev/null +++ b/package/libsvg-cairo/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBSVG_CAIRO + bool "libsvg-cairo" + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_CAIRO_PNG + select BR2_PACKAGE_LIBSVG + help + Libsvg-cairo provides the ability to render SVG content from + files or buffers. All rendering is performed using the cairo + rendering library. + + http://cairographics.org diff --git a/package/libsvg-cairo/libsvg-cairo.hash b/package/libsvg-cairo/libsvg-cairo.hash new file mode 100644 index 00000000..d9cfbffa --- /dev/null +++ b/package/libsvg-cairo/libsvg-cairo.hash @@ -0,0 +1,6 @@ +# From http://cairographics.org/snapshots/libsvg-cairo-0.1.6.tar.gz.md5 +md5 d79da7b3a60ad8c8e4b902c9b3563047 libsvg-cairo-0.1.6.tar.gz + +# Locally calculated +sha256 a380be6a78ec2938100ce904363815a94068fca372c666b8cc82aa8711a0215c libsvg-cairo-0.1.6.tar.gz +sha256 d80c9d084ebfb50ea1ed91bfbc2410d6ce542097a32c43b00781b83adcb8c77f COPYING diff --git a/package/libsvg-cairo/libsvg-cairo.mk b/package/libsvg-cairo/libsvg-cairo.mk new file mode 100644 index 00000000..f7a105e0 --- /dev/null +++ b/package/libsvg-cairo/libsvg-cairo.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libsvg-cairo +# +################################################################################ + +LIBSVG_CAIRO_VERSION = 0.1.6 +LIBSVG_CAIRO_SITE = http://cairographics.org/snapshots +LIBSVG_CAIRO_DEPENDENCIES = cairo libsvg +LIBSVG_CAIRO_INSTALL_STAGING = YES +LIBSVG_CAIRO_LICENSE = LGPL-2.1+ +LIBSVG_CAIRO_LICENSE_FILES = COPYING + +LIBSVG_CAIRO_CONF_OPTS = --without-x + +$(eval $(autotools-package)) diff --git a/package/libsvg/0001-fix-expat-static-declaration.patch b/package/libsvg/0001-fix-expat-static-declaration.patch new file mode 100644 index 00000000..1086785d --- /dev/null +++ b/package/libsvg/0001-fix-expat-static-declaration.patch @@ -0,0 +1,36 @@ +Newer expat versions use different declarations of the following functions: + +static void _svg_parser_sax_start_element (); +static void _svg_parser_sax_end_element (); +static void _svg_parser_sax_characters (); + +We need to patch the libsvg source to not follow into a build error like + "static declaration of 'foo' follows non-static declaration" +and use the functions from the expat library instead from the libsvg source. + +Patch based on +http://oe-lite.org/redmine/projects/xorg/repository/revisions/c4df7951e846e1be718f37f2455696a1d0861f3d/entry/recipes/cairo/libsvg-0.1.4/gcc4_and_expat.patch + +Signed-off-by: Carsten Schoenert +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi + +diff -bur libsvg-0.1.4~orig/src/svg_parser_expat.c libsvg-0.1.4/src/svg_parser_expat.c +--- libsvg-0.1.4~orig/src/svg_parser_expat.c 2005-02-14 11:26:26.000000000 -0600 ++++ libsvg-0.1.4/src/svg_parser_expat.c 2006-02-10 21:58:20.000000000 -0600 +@@ -30,6 +30,7 @@ + #include "svgint.h" + #include "svg_hash.h" + ++#ifndef LIBSVG_EXPAT + static void + _svg_parser_sax_start_element (void *closure, + const XML_Char *name, +@@ -43,6 +44,7 @@ + _svg_parser_sax_characters (void *closure, + const XML_Char *ch, + int len); ++#endif + + static void + _svg_parser_sax_warning (void *closure, diff --git a/package/libsvg/0002-Fix-undefined-symbol-png_set_gray_1_2_4_to_8.patch b/package/libsvg/0002-Fix-undefined-symbol-png_set_gray_1_2_4_to_8.patch new file mode 100644 index 00000000..d0bbeab0 --- /dev/null +++ b/package/libsvg/0002-Fix-undefined-symbol-png_set_gray_1_2_4_to_8.patch @@ -0,0 +1,32 @@ +From 213e5749947fad08d985eda8d06839efedda78ef Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Thu, 5 Mar 2015 21:42:52 +0100 +Subject: [PATCH] Fix undefined symbol png_set_gray_1_2_4_to_8 + +Since libpng-1.4.0 the function png_set_gray_1_2_4_to_8() was +removed, the replacement function is called +png_set_expand_gray_1_2_4_to_8() (see [1]). + +[1] http://libpng.sourceforge.net/ANNOUNCE-1.4.0.txt + +Signed-off-by: Peter Seiderer +--- + src/svg_image.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/svg_image.c b/src/svg_image.c +index cd8a95a..f256943 100755 +--- a/src/svg_image.c ++++ b/src/svg_image.c +@@ -271,7 +271,7 @@ _svg_image_read_png (const char *filename, + + /* expand gray bit depth if needed */ + if (color_type == PNG_COLOR_TYPE_GRAY && depth < 8) +- png_set_gray_1_2_4_to_8 (png); ++ png_set_expand_gray_1_2_4_to_8 (png); + + /* transform transparency to alpha */ + if (png_get_valid(png, info, PNG_INFO_tRNS)) +-- +2.1.4 + diff --git a/package/libsvg/Config.in b/package/libsvg/Config.in new file mode 100644 index 00000000..741ef10c --- /dev/null +++ b/package/libsvg/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBSVG + bool "libsvg" + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBXML2 if !BR2_PACKAGE_EXPAT + help + Libsvg provides a parser for SVG content in files or buffers. + Libsvg does not do any rendering, but instead provides a + function-based interface that can be used by various rendering + engines. + + http://cairographics.org/snapshots/ diff --git a/package/libsvg/libsvg.hash b/package/libsvg/libsvg.hash new file mode 100644 index 00000000..4a9d42a6 --- /dev/null +++ b/package/libsvg/libsvg.hash @@ -0,0 +1,6 @@ +# From http://cairographics.org/snapshots/libsvg-0.1.4.tar.gz.md5 +md5 ce0715e3013f78506795fba16e8455d3 libsvg-0.1.4.tar.gz + +# Locally calculated +sha256 4c3bf9292e676a72b12338691be64d0f38cd7f2ea5e8b67fbbf45f1ed404bc8f libsvg-0.1.4.tar.gz +sha256 d245807f90032872d1438d741ed21e2490e1175dc8aa3afa5ddb6c8e529b58e5 COPYING diff --git a/package/libsvg/libsvg.mk b/package/libsvg/libsvg.mk new file mode 100644 index 00000000..45d730db --- /dev/null +++ b/package/libsvg/libsvg.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# libsvg +# +################################################################################ + +LIBSVG_VERSION = 0.1.4 +LIBSVG_SITE = http://cairographics.org/snapshots +LIBSVG_DEPENDENCIES = host-pkgconf libpng jpeg +LIBSVG_INSTALL_STAGING = YES +LIBSVG_LICENSE = LGPL-2.0+ +LIBSVG_LICENSE_FILES = COPYING + +# libsvg needs at last a XML parser +ifeq ($(BR2_PACKAGE_EXPAT),y) +LIBSVG_CONF_OPTS += --with-expat +LIBSVG_DEPENDENCIES += expat +else +LIBSVG_CONF_OPTS += --with-libxml2 +LIBSVG_DEPENDENCIES += libxml2 +endif + +$(eval $(autotools-package)) diff --git a/package/libsvgtiny/0001-disable-debug-printfs.patch b/package/libsvgtiny/0001-disable-debug-printfs.patch new file mode 100644 index 00000000..72ed21cc --- /dev/null +++ b/package/libsvgtiny/0001-disable-debug-printfs.patch @@ -0,0 +1,125 @@ +svntiny: svntiny_gradient.c: only print debugging if GRADIENT_DEBUG is enabled + +Signed-off-by: Peter Korsgaard +--- + src/svgtiny_gradient.c | 23 ++++++++++++++++++++++- + 1 file changed, 22 insertions(+), 1 deletion(-) + +Index: libsvgtiny/src/svgtiny_gradient.c +=================================================================== +--- libsvgtiny.orig/src/svgtiny_gradient.c ++++ libsvgtiny/src/svgtiny_gradient.c +@@ -30,8 +30,9 @@ void svgtiny_find_gradient(const char *i + { + xmlNode *gradient; + ++#ifdef GRADIENT_DEBUG + fprintf(stderr, "svgtiny_find_gradient: id \"%s\"\n", id); +- ++#endif + state->linear_gradient_stop_count = 0; + state->gradient_x1 = "0%"; + state->gradient_y1 = "0%"; +@@ -47,13 +48,17 @@ void svgtiny_find_gradient(const char *i + + gradient = svgtiny_find_element_by_id( + (xmlNode *) state->document, id); ++#ifdef GRADIENT_DEBUG + fprintf(stderr, "gradient %p\n", (void *) gradient); ++#endif + if (!gradient) { + fprintf(stderr, "gradient \"%s\" not found\n", id); + return; + } + ++#ifdef GRADIENT_DEBUG + fprintf(stderr, "gradient name \"%s\"\n", gradient->name); ++#endif + if (strcmp((const char *) gradient->name, "linearGradient") == 0) { + svgtiny_parse_linear_gradient(gradient, state); + } +@@ -98,8 +103,10 @@ svgtiny_code svgtiny_parse_linear_gradie + return svgtiny_OUT_OF_MEMORY; + svgtiny_parse_transform(s, &a, &b, &c, &d, &e, &f); + free(s); ++#ifdef GRADIENT_DEBUG + fprintf(stderr, "transform %g %g %g %g %g %g\n", + a, b, c, d, e, f); ++#endif + state->gradient_transform.a = a; + state->gradient_transform.b = b; + state->gradient_transform.c = c; +@@ -143,7 +150,9 @@ svgtiny_code svgtiny_parse_linear_gradie + } + + if (offset != -1 && color != svgtiny_TRANSPARENT) { ++#ifdef GRADIENT_DEBUG + fprintf(stderr, "stop %g %x\n", offset, color); ++#endif + state->gradient_stop[i].offset = offset; + state->gradient_stop[i].color = color; + i++; +@@ -220,9 +229,11 @@ svgtiny_code svgtiny_add_path_linear_gra + #endif + + /* compute gradient vector */ ++#ifdef GRADIENT_DEBUG + fprintf(stderr, "x1 %s, y1 %s, x2 %s, y2 %s\n", + state->gradient_x1, state->gradient_y1, + state->gradient_x2, state->gradient_y2); ++#endif + if (!state->gradient_user_space_on_use) { + gradient_x0 = object_x0 + + svgtiny_parse_length(state->gradient_x1, +@@ -297,9 +308,11 @@ svgtiny_code svgtiny_add_path_linear_gra + + /* invert gradient transform for applying to vertices */ + svgtiny_invert_matrix(&state->gradient_transform.a, trans); ++#ifdef GRADIENT_DEBUG + fprintf(stderr, "inverse transform %g %g %g %g %g %g\n", + trans[0], trans[1], trans[2], trans[3], + trans[4], trans[5]); ++#endif + + /* compute points on the path for triangle vertices */ + /* r, r0, r1 are distance along gradient vector */ +@@ -372,8 +385,10 @@ svgtiny_code svgtiny_add_path_linear_gra + steps = ceilf(fabsf(r1 - r0) / 0.05); + if (steps == 0) + steps = 1; ++#ifdef GRADIENT_DEBUG + fprintf(stderr, "r0 %g, r1 %g, steps %i\n", + r0, r1, steps); ++#endif + + /* loop through intermediate points */ + for (z = 1; z != steps; z++) { +@@ -398,7 +413,9 @@ svgtiny_code svgtiny_add_path_linear_gra + r = ((x_trans - gradient_x0) * gradient_dx + + (y_trans - gradient_y0) * gradient_dy) / + gradient_norm_squared; ++#ifdef GRADIENT_DEBUG + fprintf(stderr, "(%g %g [%g]) ", x, y, r); ++#endif + point = svgtiny_list_push(pts); + if (!point) { + svgtiny_list_free(pts); +@@ -412,14 +429,18 @@ svgtiny_code svgtiny_add_path_linear_gra + min_pt = svgtiny_list_size(pts) - 1; + } + } ++#ifdef GRADIENT_DEBUG + fprintf(stderr, "\n"); ++#endif + + /* next segment start point is this segment end point */ + x0 = x1; + y0 = y1; + } ++#ifdef GRADIENT_DEBUG + fprintf(stderr, "pts size %i, min_pt %i, min_r %.3f\n", + svgtiny_list_size(pts), min_pt, min_r); ++#endif + + /* render triangles */ + stop_count = state->linear_gradient_stop_count; diff --git a/package/libsvgtiny/0002-Remove-Werror.patch b/package/libsvgtiny/0002-Remove-Werror.patch new file mode 100644 index 00000000..c8b0c0b9 --- /dev/null +++ b/package/libsvgtiny/0002-Remove-Werror.patch @@ -0,0 +1,44 @@ +Remove -Werror from Makefile + +glibc-2.20 includes some changes to the include/features.h file +introduced by this commit: + + https://sourceware.org/git/?p=glibc.git;a=commit;h=ade40b10ff5fa59a318cf55b9d8414b758e8df78 + +Those changes make libsvgtiny fail because some warnings are thrown and +the build system is using the -Werror option. We disable this to be able +to build it, or otherwise we will see errors like this one: + +GPERF: src/colors.gperf +COMPILE: build-Linux-Linux-release-lib-static/src_colors.c +In file included from +/br/output/host/usr/mipsel-buildroot-linux-gnu/sysroot/usr/include/string.h:25:0, + from src/colors.gperf:16: +/br/output/host/usr/mipsel-buildroot-linux-gnu/sysroot/usr/include/features.h:148:3: +error: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use +_DEFAULT_SOURCE" [-Werror=cpp] + +and this one: + +In file included from src/colors.gperf:18:0: +/home/ldap/vriera/work/mips-buildroots/mips32/output/build/libsvgtiny-12121/src/svgtiny_internal.h:71:0: +error: "strndup" redefined [-Werror] + +Signed-off-by: Vicente Olivert Riera + +diff -rup a/Makefile b/Makefile +--- a/Makefile 2010-01-03 23:37:39.000000000 +0000 ++++ b/Makefile 2014-12-11 11:35:37.241903884 +0000 +@@ -13,12 +13,6 @@ TESTRUNNER := $(ECHO) + WARNFLAGS := -Wall -W -Wundef -Wpointer-arith -Wcast-align \ + -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes \ + -Wmissing-declarations -Wnested-externs -pedantic +-# BeOS/Haiku/AmigaOS4 standard library headers create warnings +-ifneq ($(TARGET),beos) +- ifneq ($(TARGET),AmigaOS) +- WARNFLAGS := $(WARNFLAGS) -Werror +- endif +-endif + CFLAGS := -D_BSD_SOURCE -I$(CURDIR)/include/ \ + -I$(CURDIR)/src $(WARNFLAGS) $(CFLAGS) + ifneq ($(GCCVER),2) diff --git a/package/libsvgtiny/0003-Hopefully-silence-warnings-about-inlines-and-non-inlines-calling-one.patch b/package/libsvgtiny/0003-Hopefully-silence-warnings-about-inlines-and-non-inlines-calling-one.patch new file mode 100644 index 00000000..9285477d --- /dev/null +++ b/package/libsvgtiny/0003-Hopefully-silence-warnings-about-inlines-and-non-inlines-calling-one.patch @@ -0,0 +1,36 @@ +From 21b4836ac9d6c6725590a925daa5d17eda9843e9 Mon Sep 17 00:00:00 2001 +From: Daniel Silverstone +Date: Sat, 26 Apr 2014 16:24:54 +0100 +Subject: Hopefully silence warnings about inlines and non inlines calling one + another. + +[Retrieved from: +https://source.netsurf-browser.org/libsvgtiny.git/commit/src?id=21b4836ac9d6c6725590a925daa5d17eda9843e9] +Signed-off-by: Fabrice Fontaine +--- + src/colors.gperf | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/src/colors.gperf b/src/colors.gperf +index 89152d2..96d5b9e 100644 +--- a/src/colors.gperf ++++ b/src/colors.gperf +@@ -16,6 +16,15 @@ + #include + #include "svgtiny.h" + #include "svgtiny_internal.h" ++ ++/* This unusual define shennanigan is to try and prevent the gperf ++ * generated function from being inlined. This is pointless given ++ * it (a) is in a separate .c file and (b) has external linkage. ++ */ ++#ifdef __inline ++#undef __inline ++#define __inline ++#endif + %} + + struct svgtiny_named_color; +-- +cgit v1.2.1 + diff --git a/package/libsvgtiny/0004-Build-Include-gperf-generated-code-directly.patch b/package/libsvgtiny/0004-Build-Include-gperf-generated-code-directly.patch new file mode 100644 index 00000000..b5443e99 --- /dev/null +++ b/package/libsvgtiny/0004-Build-Include-gperf-generated-code-directly.patch @@ -0,0 +1,99 @@ +From 4390f1c84e8fee51fc22468821e6fc158e783053 Mon Sep 17 00:00:00 2001 +From: Michael Drake +Date: Thu, 20 Apr 2017 10:51:07 +0100 +Subject: Build: Include gperf-generated code directly. + +Previously we built the generated code separatly and then linked to +it. However, this caused problems with certain compilers and gperf +versions. This change includes the generated code directly in +svgtiny.c instead, which is the only place its used. + +[Retrieved from: +https://source.netsurf-browser.org/libsvgtiny.git/commit/src?id=4390f1c84e8fee51fc22468821e6fc158e783053] +Signed-off-by: Fabrice Fontaine +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + src/Makefile | 13 +++++++------ + src/colors.gperf | 8 -------- + src/svgtiny.c | 3 +++ + src/svgtiny_internal.h | 5 ----- + 4 files changed, 10 insertions(+), 19 deletions(-) + +(limited to 'src') + +diff --git a/src/Makefile b/src/Makefile +index a979720..fb8a72f 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -1,13 +1,14 @@ + # Sources + DIR_SOURCES := svgtiny.c svgtiny_gradient.c svgtiny_list.c + +-SOURCES := $(SOURCES) $(BUILDDIR)/src_colors.c ++SOURCES := $(SOURCES) + +-$(BUILDDIR)/src_colors.c: src/colors.gperf ++$(DIR)autogenerated_colors.c: src/colors.gperf + $(VQ)$(ECHO) " GPERF: $<" +- $(Q)gperf --output-file=$@.tmp $< +-# Hack for GCC 4.2 compatibility (gperf 3.0.4 solves this properly) +- $(Q)$(SED) -e 's/#ifdef __GNUC_STDC_INLINE__/#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__/' $@.tmp >$@ +- $(Q)$(RM) $@.tmp ++ $(Q)gperf --output-file=$@ $< ++ ++PRE_TARGETS := $(DIR)autogenerated_colors.c ++ ++CLEAN_ITEMS := $(DIR)autogenerated_colors.c + + include build/makefiles/Makefile.subdir +diff --git a/src/colors.gperf b/src/colors.gperf +index 96d5b9e..a836787 100644 +--- a/src/colors.gperf ++++ b/src/colors.gperf +@@ -17,14 +17,6 @@ + #include "svgtiny.h" + #include "svgtiny_internal.h" + +-/* This unusual define shennanigan is to try and prevent the gperf +- * generated function from being inlined. This is pointless given +- * it (a) is in a separate .c file and (b) has external linkage. +- */ +-#ifdef __inline +-#undef __inline +-#define __inline +-#endif + %} + + struct svgtiny_named_color; +diff --git a/src/svgtiny.c b/src/svgtiny.c +index 4661a58..bbefb88 100644 +--- a/src/svgtiny.c ++++ b/src/svgtiny.c +@@ -17,6 +17,9 @@ + #include "svgtiny.h" + #include "svgtiny_internal.h" + ++/* Source file generated by `gperf`. */ ++#include "autogenerated_colors.c" ++ + #ifndef M_PI + #define M_PI 3.14159265358979323846 + #endif +diff --git a/src/svgtiny_internal.h b/src/svgtiny_internal.h +index 158d230..6bf5d64 100644 +--- a/src/svgtiny_internal.h ++++ b/src/svgtiny_internal.h +@@ -87,9 +87,4 @@ + void *svgtiny_list_push(struct svgtiny_list *list); + void svgtiny_list_free(struct svgtiny_list *list); + +-/* colors.gperf */ +-const struct svgtiny_named_color * +- svgtiny_color_lookup(register const char *str, +- register unsigned int len); +- + #endif +-- +cgit v1.2.1 + diff --git a/package/libsvgtiny/Config.in b/package/libsvgtiny/Config.in new file mode 100644 index 00000000..836dec21 --- /dev/null +++ b/package/libsvgtiny/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBSVGTINY + bool "libsvgtiny" + select BR2_PACKAGE_LIBXML2 + help + Libsvgtiny is an implementation of SVG Tiny, written in C. + It is currently in development for use with NetSurf and is + intended to be suitable for use in other projects too. + + http://www.netsurf-browser.org/projects/libsvgtiny/ diff --git a/package/libsvgtiny/libsvgtiny.hash b/package/libsvgtiny/libsvgtiny.hash new file mode 100644 index 00000000..55f4093e --- /dev/null +++ b/package/libsvgtiny/libsvgtiny.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 758641d339b324a76294ef08e323faa2cefb557793f437c08af7deb3b73a453e libsvgtiny-ea9d99fc8b231c22d06168135e181d61f4eb2f06-git4.tar.gz +sha256 92b965c77be71661cae51425a6b40a5ca274f44cc13c723c90fb471a9a26a828 README diff --git a/package/libsvgtiny/libsvgtiny.mk b/package/libsvgtiny/libsvgtiny.mk new file mode 100644 index 00000000..55ce4327 --- /dev/null +++ b/package/libsvgtiny/libsvgtiny.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# libsvgtiny +# +################################################################################ + +LIBSVGTINY_SITE = http://git.netsurf-browser.org/libsvgtiny.git +LIBSVGTINY_SITE_METHOD = git +LIBSVGTINY_VERSION = ea9d99fc8b231c22d06168135e181d61f4eb2f06 +LIBSVGTINY_INSTALL_STAGING = YES +LIBSVGTINY_DEPENDENCIES = \ + libxml2 host-gperf host-pkgconf host-netsurf-buildsystem +LIBSVGTINY_LICENSE = MIT +LIBSVGTINY_LICENSE_FILES = README + +# The libsvgtiny build system cannot build both the shared and static +# libraries. So when the Buildroot configuration requests to build +# both the shared and static variants, we build only the shared one. +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +LIBSVGTINY_COMPONENT_TYPE = lib-shared +else +LIBSVGTINY_COMPONENT_TYPE = lib-static +endif + +define LIBSVGTINY_CONFIGURE_CMDS + ln -sf $(HOST_DIR)/share/netsurf-buildsystem $(@D)/build +endef + +# Use $(MAKE1) since parallel build fails +define LIBSVGTINY_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D) PREFIX=/usr \ + COMPONENT_TYPE=$(LIBSVGTINY_COMPONENT_TYPE) +endef + +define LIBSVGTINY_INSTALL_STAGING_CMDS + $(TARGET_CONFIGURE_OPTS) \ + $(MAKE1) -C $(@D) PREFIX=/usr DESTDIR=$(STAGING_DIR) \ + COMPONENT_TYPE=$(LIBSVGTINY_COMPONENT_TYPE) install +endef + +define LIBSVGTINY_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) \ + $(MAKE1) -C $(@D) PREFIX=/usr DESTDIR=$(TARGET_DIR) \ + COMPONENT_TYPE=$(LIBSVGTINY_COMPONENT_TYPE) install +endef + +$(eval $(generic-package)) diff --git a/package/libsysfs/Config.in b/package/libsysfs/Config.in new file mode 100644 index 00000000..076490ec --- /dev/null +++ b/package/libsysfs/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBSYSFS + bool "libsysfs" + help + These are a set of utilities built upon sysfs, a filesystem in + Linux 2.6 kernels that exposes a system's device tree. + + https://github.com/linux-ras/sysfsutils diff --git a/package/libsysfs/libsysfs.hash b/package/libsysfs/libsysfs.hash new file mode 100644 index 00000000..3d2d03fc --- /dev/null +++ b/package/libsysfs/libsysfs.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 f7f669d27c997d3eb3f3e014b4c0aa1aa4d07ce4d6f9e41fa835240f2bf38810 libsysfs-2.1.1.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 cmd/GPL +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 lib/LGPL diff --git a/package/libsysfs/libsysfs.mk b/package/libsysfs/libsysfs.mk new file mode 100644 index 00000000..94de9e43 --- /dev/null +++ b/package/libsysfs/libsysfs.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libsysfs +# +################################################################################ + +LIBSYSFS_VERSION = 2.1.1 +LIBSYSFS_SITE = $(call github,linux-ras,sysfsutils,v$(LIBSYSFS_VERSION)) +LIBSYSFS_INSTALL_STAGING = YES +LIBSYSFS_LICENSE = GPL-2.0 (utilities), LGPL-2.1+ (library) +LIBSYSFS_LICENSE_FILES = cmd/GPL lib/LGPL +LIBSYSFS_CPE_ID_VENDOR = sysfsutils_project +LIBSYSFS_CPE_ID_PRODUCT = sysfsutils +# From git +LIBSYSFS_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/libtalloc/0001-buildtools-wafsamba-add-disable-stack-protector-opti.patch b/package/libtalloc/0001-buildtools-wafsamba-add-disable-stack-protector-opti.patch new file mode 100644 index 00000000..839479a3 --- /dev/null +++ b/package/libtalloc/0001-buildtools-wafsamba-add-disable-stack-protector-opti.patch @@ -0,0 +1,116 @@ +From 5885ed8e6db7648e6842d9811aace7edc4e8aba7 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 20 Apr 2022 11:16:52 +0200 +Subject: [PATCH] buildtools/wafsamba: add --disable-stack-protector option + +Allow the user to disable stack-protector through +--disable-stack-protector to avoid the following build failure with +libtalloc on embedded toolchains which don't support stack-protector: + +/home/autobuild/autobuild/instance-5/output-1/host/lib/gcc/i686-buildroot-linux-musl/9.4.0/../../../../i686-buildroot-linux-musl/bin/ld: talloc.c.5.o: in function `_vasprintf_tc': +talloc.c:(.text+0x427d): undefined reference to `__stack_chk_fail_local' + +This build failure is raised since +https://gitlab.com/ffontaine/samba/-/commit/38e97f8b52e85bdfcf2d74a4fb3c848fa46ba371 +because stack-protector is enabled on libtalloc despite the fact that +libssp is not available: + +Checking if compiler accepts -fstack-protector-strong : yes + +Fixes: + - http://autobuild.buildroot.org/results/e221bde25c7622db99761d0adcd56663296beb15 + +Signed-off-by: Fabrice Fontaine +[Upstream status: +https://gitlab.com/samba-team/samba/-/merge_requests/2493] +--- + buildtools/wafsamba/samba_autoconf.py | 49 ++++++++++++++------------- + buildtools/wafsamba/wscript | 3 ++ + 2 files changed, 28 insertions(+), 24 deletions(-) + +diff --git a/buildtools/wafsamba/samba_autoconf.py b/buildtools/wafsamba/samba_autoconf.py +index 78927d85193..23a995e1c34 100644 +--- a/buildtools/wafsamba/samba_autoconf.py ++++ b/buildtools/wafsamba/samba_autoconf.py +@@ -703,9 +703,28 @@ def SAMBA_CONFIG_H(conf, path=None): + if not IN_LAUNCH_DIR(conf): + return + +- # we need to build real code that can't be optimized away to test +- stack_protect_list = ['-fstack-protector-strong', '-fstack-protector'] +- for stack_protect_flag in stack_protect_list: ++ if not Options.options.disable_stack_protector: ++ # we need to build real code that can't be optimized away to test ++ stack_protect_list = ['-fstack-protector-strong', '-fstack-protector'] ++ for stack_protect_flag in stack_protect_list: ++ flag_supported = conf.check(fragment=''' ++ #include ++ ++ int main(void) ++ { ++ char t[100000]; ++ while (fgets(t, sizeof(t), stdin)); ++ return 0; ++ } ++ ''', ++ execute=0, ++ cflags=[ '-Werror', '-Wp,-D_FORTIFY_SOURCE=2', stack_protect_flag], ++ mandatory=False, ++ msg='Checking if compiler accepts %s' % (stack_protect_flag)) ++ if flag_supported: ++ conf.ADD_CFLAGS('%s' % (stack_protect_flag)) ++ break ++ + flag_supported = conf.check(fragment=''' + #include + +@@ -717,29 +736,11 @@ def SAMBA_CONFIG_H(conf, path=None): + } + ''', + execute=0, +- cflags=[ '-Werror', '-Wp,-D_FORTIFY_SOURCE=2', stack_protect_flag], ++ cflags=[ '-Werror', '-fstack-clash-protection'], + mandatory=False, +- msg='Checking if compiler accepts %s' % (stack_protect_flag)) ++ msg='Checking if compiler accepts -fstack-clash-protection') + if flag_supported: +- conf.ADD_CFLAGS('%s' % (stack_protect_flag)) +- break +- +- flag_supported = conf.check(fragment=''' +- #include +- +- int main(void) +- { +- char t[100000]; +- while (fgets(t, sizeof(t), stdin)); +- return 0; +- } +- ''', +- execute=0, +- cflags=[ '-Werror', '-fstack-clash-protection'], +- mandatory=False, +- msg='Checking if compiler accepts -fstack-clash-protection') +- if flag_supported: +- conf.ADD_CFLAGS('-fstack-clash-protection') ++ conf.ADD_CFLAGS('-fstack-clash-protection') + + if Options.options.debug: + conf.ADD_CFLAGS('-g', testflags=True) +diff --git a/buildtools/wafsamba/wscript b/buildtools/wafsamba/wscript +index 8729b0829da..d75bb3b1c0c 100644 +--- a/buildtools/wafsamba/wscript ++++ b/buildtools/wafsamba/wscript +@@ -165,6 +165,9 @@ Currently the only tested value is 'smbtorture,smbd/smbd' for Samba'''), + gr.add_option('--disable-warnings-as-errors', + help=("Do not treat all warnings as errors (disable -Werror)"), + action="store_true", dest='disable_warnings_as_errors', default=False) ++ gr.add_option('--disable-stack-protector', ++ help=("Disable stack-protector"), ++ action="store_true", dest='disable_stack_protector', default=False) + opt.add_option('--enable-coverage', + help=("enable options necessary for code coverage " + "reporting on selftest (default=no)"), +-- +2.35.1 + diff --git a/package/libtalloc/Config.in b/package/libtalloc/Config.in new file mode 100644 index 00000000..849becf1 --- /dev/null +++ b/package/libtalloc/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBTALLOC + bool "libtalloc" + depends on BR2_USE_MMU + depends on !BR2_STATIC_LIBS + help + talloc is a hierarchical, reference counted memory pool + system with destructors. It is the core memory allocator + used in Samba. + + https://talloc.samba.org/talloc/doc/html/index.html + +comment "libtalloc needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/package/libtalloc/libtalloc-cache.txt b/package/libtalloc/libtalloc-cache.txt new file mode 100644 index 00000000..a2b44857 --- /dev/null +++ b/package/libtalloc/libtalloc-cache.txt @@ -0,0 +1,42 @@ +Checking simple C program: OK +rpath library support: OK +-Wl,--version-script support: OK +Checking getconf LFS_CFLAGS: NO +Checking for large file support without additional flags: OK +Checking for -D_LARGE_FILES: OK +Checking correct behavior of strtoll: NO +Checking for working strptime: OK +Checking for C99 vsnprintf: OK +Checking for HAVE_SHARED_MMAP: OK +Checking for HAVE_MREMAP: OK +Checking for HAVE_INCOHERENT_MMAP: NO +Checking for HAVE_SECURE_MKSTEMP: OK +Checking for HAVE_IFACE_GETIFADDRS: OK +Checking for kernel change notify support: OK +Checking for Linux kernel oplocks: OK +Checking for kernel share modes: OK +Checking if can we convert from CP850 to UCS-2LE: OK +Checking if can we convert from UTF-8 to UCS-2LE: OK +Checking whether we can use Linux thread-specific credentials with 32-bit system calls: OK +Checking whether we can use Linux thread-specific credentials: OK +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 +Checking for ftruncate extend: OK +vfs_fileid checking for statfs() and struct statfs.f_fsid: OK +getcwd takes a NULL argument: OK +Checking uname sysname type: "Linux" +Checking uname release type: "5.4.0" +Checking uname version type: "#1 Tue Oct 1 00:00:00 UTC 2020" +Checking value of NSIG: "65" +Checking value of _NSIG: "65" +Checking value of SIGRTMAX: "64" +Checking value of SIGRTMIN: "34" +Checking errno of iconv for illegal multibyte sequence: "0" +checking for clnt_create(): OK +Checking for a 64-bit host to support lmdb: NO diff --git a/package/libtalloc/libtalloc.hash b/package/libtalloc/libtalloc.hash new file mode 100644 index 00000000..55775838 --- /dev/null +++ b/package/libtalloc/libtalloc.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 85ecf9e465e20f98f9950a52e9a411e14320bc555fa257d87697b7e7a9b1d8a6 talloc-2.4.2.tar.gz +sha256 e01fb092aaed2b431be26674e2b791c77fb5984537c29b514e957582c6b31465 talloc.h diff --git a/package/libtalloc/libtalloc.mk b/package/libtalloc/libtalloc.mk new file mode 100644 index 00000000..676076b8 --- /dev/null +++ b/package/libtalloc/libtalloc.mk @@ -0,0 +1,58 @@ +################################################################################ +# +# libtalloc +# +################################################################################ + +LIBTALLOC_VERSION = 2.4.2 +LIBTALLOC_SOURCE = talloc-$(LIBTALLOC_VERSION).tar.gz +LIBTALLOC_SITE = https://www.samba.org/ftp/talloc +LIBTALLOC_LICENSE = LGPL-3.0+ +LIBTALLOC_LICENSE_FILES = talloc.h +LIBTALLOC_INSTALL_STAGING = YES + +# libtalloc is extracted from the samba source tree, and that has a workaround +# that requires PYTHONHASHSEED to be set, and to be set to 1. +# See https://gitlab.com/samba-team/samba/-/commit/420bbb1d92fd2a28725b53f425ba3d214831b660 +LIBTALLOC_CONF_ENV = PYTHONHASHSEED=1 +LIBTALLOC_MAKE_ENV = PYTHONHASHSEED=1 + +# --with-libiconv= is unconditionally passed, even if libiconv is not +# present. Indeed, waf will search for libiconv by default in +# /usr/local. Because of a bug in some waf python script, /usr/local +# is then used in many subsequent and unrelated checks, which +# ultimately causes a failure when BR2_COMPILER_PARANOID_UNSAFE_PATH +# is set. However no need to set libiconv as a dependency of +# libtalloc since it's optional. +LIBTALLOC_CONF_OPTS += --cross-compile \ + --cross-answers=$(@D)/cache.txt \ + --disable-stack-protector \ + --hostcc=gcc \ + --with-libiconv=$(STAGING_DIR)/usr + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +LIBTALLOC_DEPENDENCIES += libtirpc host-pkgconf +endif + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +LIBTALLOC_DEPENDENCIES += host-python3 python3 +LIBTALLOC_CONF_ENV += \ + PYTHON="$(HOST_DIR)/bin/python3" \ + PYTHON_CONFIG="$(STAGING_DIR)/usr/bin/python3-config" +# There isn't any --enable-python configuration option +else +LIBTALLOC_CONF_OPTS += --disable-python +endif + +LIBTALLOC_WAF = ./buildtools/bin/waf + +# like samba4, libtalloc uses the waf build system which requires a +# proper answers file to configure package before build +define LIBTALLOC_POPULATE_WAF_CACHE + $(INSTALL) -m 0644 package/libtalloc/libtalloc-cache.txt $(@D)/cache.txt + echo 'Checking uname machine type: $(BR2_ARCH)' >> $(@D)/cache.txt +endef + +LIBTALLOC_PRE_CONFIGURE_HOOKS += LIBTALLOC_POPULATE_WAF_CACHE + +$(eval $(waf-package)) diff --git a/package/libtasn1/Config.in b/package/libtasn1/Config.in new file mode 100644 index 00000000..181fc698 --- /dev/null +++ b/package/libtasn1/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBTASN1 + bool "libtasn1" + help + ASN.1 library + + http://www.gnu.org/software/libtasn1 diff --git a/package/libtasn1/libtasn1.hash b/package/libtasn1/libtasn1.hash new file mode 100644 index 00000000..4bcb6a3f --- /dev/null +++ b/package/libtasn1/libtasn1.hash @@ -0,0 +1,7 @@ +# Locally calculated after checking pgp signature +# https://ftp.gnu.org/gnu/libtasn1/libtasn1-4.19.0.tar.gz.sig +sha256 1613f0ac1cf484d6ec0ce3b8c06d56263cc7242f1c23b30d82d23de345a63f7a libtasn1-4.19.0.tar.gz +# Locally calculated +sha256 7446831f659f7ebfd8d497acc7f05dfa8e31c6cb6ba1b45df33d4895ab80f5a6 COPYING +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 doc/COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 doc/COPYING.LESSER diff --git a/package/libtasn1/libtasn1.mk b/package/libtasn1/libtasn1.mk new file mode 100644 index 00000000..3af1bcdc --- /dev/null +++ b/package/libtasn1/libtasn1.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# libtasn1 +# +################################################################################ + +LIBTASN1_VERSION = 4.19.0 +LIBTASN1_SITE = $(BR2_GNU_MIRROR)/libtasn1 +LIBTASN1_DEPENDENCIES = host-bison host-pkgconf +LIBTASN1_LICENSE = GPL-3.0+ (tests, tools), LGPL-2.1+ (library) +LIBTASN1_LICENSE_FILES = COPYING doc/COPYING doc/COPYING.LESSER +LIBTASN1_CPE_ID_VENDOR = gnu +LIBTASN1_INSTALL_STAGING = YES + +# 'missing' fallback logic botched so disable it completely +LIBTASN1_CONF_ENV = MAKEINFO="true" + +LIBTASN1_CONF_OPTS = CFLAGS="$(TARGET_CFLAGS) -std=gnu99" + +LIBTASN1_PROGS = asn1Coding asn1Decoding asn1Parser + +# We only need the library +define LIBTASN1_REMOVE_PROGS + $(RM) $(addprefix $(TARGET_DIR)/usr/bin/,$(LIBTASN1_PROGS)) +endef +LIBTASN1_POST_INSTALL_TARGET_HOOKS += LIBTASN1_REMOVE_PROGS + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libteam/Config.in b/package/libteam/Config.in new file mode 100644 index 00000000..aa566a6c --- /dev/null +++ b/package/libteam/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_LIBTEAM + bool "libteam" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # libnl-tools + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_JANSSON + select BR2_PACKAGE_LIBDAEMON + select BR2_PACKAGE_LIBNL + select BR2_PACKAGE_LIBNL_TOOLS + help + The purpose of the Team driver is to provide a mechanism to + team multiple NICs (ports) into one logical one (teamdev) at + L2 layer. The process is called "channel bonding", "Ethernet + bonding", "channel teaming", "link aggregation", etc. + + Team tries to provide similar functionality as the bonding + driver, however architecturally it is quite different. Team is + modular, userspace driven, very lean and efficient, and it + does have some distinct advantages over bonding. The way Team + is configured differs dramatically from the way bonding is. + + If building the kernel with Buildroot, basic team support is + automatically enabled, but you will still need to enable the + modes you need, e.g. activebackup or loadbalance (e.g. with a + config fragment or a custom config). + + https://github.com/jpirko/libteam + +comment "libteam needs MMU and a toolchain w/ dynamic library and threads" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libteam/libteam.hash b/package/libteam/libteam.hash new file mode 100644 index 00000000..da41c397 --- /dev/null +++ b/package/libteam/libteam.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 7ad90555db8aecdcaf002f543d330408501600edf7065e0ca398fce9b1e64820 libteam-1.32.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/libteam/libteam.mk b/package/libteam/libteam.mk new file mode 100644 index 00000000..59eb4c50 --- /dev/null +++ b/package/libteam/libteam.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# libteam +# +################################################################################ + +LIBTEAM_VERSION = 1.32 +LIBTEAM_SITE = $(call github,jpirko,libteam,v$(LIBTEAM_VERSION)) +LIBTEAM_LICENSE = LGPL-2.1+ +LIBTEAM_LICENSE_FILES = COPYING +LIBTEAM_DEPENDENCIES = host-pkgconf jansson libdaemon libnl +LIBTEAM_AUTORECONF = YES +LIBTEAM_INSTALL_STAGING = YES + +# Note: this enables basic team support, use a custom kernel config, or +# fragment, to enable team modes, e.g. activebackup or loadbalance +define LIBTEAM_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_NETDEVICES) + $(call KCONFIG_ENABLE_OPT,CONFIG_NET_CORE) + $(call KCONFIG_ENABLE_OPT,CONFIG_NET_TEAM) + $(call KCONFIG_ENABLE_OPT,CONFIG_NET_TEAM_MODE_ROUNDROBIN) +endef + +$(eval $(autotools-package)) diff --git a/package/libtelnet/0001-fix-compilation-without-zlib.patch b/package/libtelnet/0001-fix-compilation-without-zlib.patch new file mode 100644 index 00000000..6b793e8f --- /dev/null +++ b/package/libtelnet/0001-fix-compilation-without-zlib.patch @@ -0,0 +1,42 @@ +From 1670ca128118be1d914fc89223e94c4cff1bbf03 Mon Sep 17 00:00:00 2001 +From: Jan Heylen +Date: Wed, 25 Oct 2017 06:45:49 +0200 +Subject: [PATCH] Fix compilation without zlib + +libtelnet source code uses '#if defived(HAVE_ZLIB)' as conditional flag for +optional compression support. But the configure(.ac) script does not play well +with this: it will define 'HAVE_ZLIB' to either 1 (zlib present) or 0 +(zlib not present). For the C preprocessor, both cases mean 'defined'. + +As a result, compilation will fail when trying to include zlib.h, which is +missing. + +Signed-off-by: Jan Heylen +Signed-off-by: Thomas De Schampheleire +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Upstream-status: upstream has changed to cmake iso autotools (but not yet +released) [1] and a pull request exists to fix several issues with that, +including correct handling of zlib detection [2]. + +[1] https://github.com/seanmiddleditch/libtelnet/commit/4860d10da44929554895c0ef83274f38de68e958 +[2] https://github.com/seanmiddleditch/libtelnet/pull/54 + +diff --git a/configure.ac b/configure.ac +index 021b48f..c4dac8b 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -33,7 +33,7 @@ AC_HEADER_STDC + PKG_CHECK_MODULES([zlib], + [zlib], + [AC_DEFINE([HAVE_ZLIB], [1], [Define to 1 if you have zlib.])], +- [AC_DEFINE([HAVE_ZLIB], [0], [Define to 1 if you have zlib.])]) ++ [AC_MSG_NOTICE([not enabling zlib support])]) + + # Checks for header files. + +-- +2.7.4 + diff --git a/package/libtelnet/Config.in b/package/libtelnet/Config.in new file mode 100644 index 00000000..59456a32 --- /dev/null +++ b/package/libtelnet/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBTELNET + bool "libtelnet" + help + libtelnet provides safe and correct handling of the core + TELNET protocol. In addition to the base TELNET protocol, + libtelnet also implements the Q method of TELNET option + negotiation. libtelnet can be used for writing servers, + clients, or proxies. + + https://github.com/seanmiddleditch/libtelnet diff --git a/package/libtelnet/libtelnet.hash b/package/libtelnet/libtelnet.hash new file mode 100644 index 00000000..e64cc5fa --- /dev/null +++ b/package/libtelnet/libtelnet.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 d2f01a9dc0cc01777844b6d27f0f836dad9a4b9a32a31c7bbde0762480262f25 libtelnet-0.23.tar.gz +sha256 b1faf309467bc1d0aab9b42d6e86a614e78f8fe3580e289966b5b9f9a8f94d99 COPYING diff --git a/package/libtelnet/libtelnet.mk b/package/libtelnet/libtelnet.mk new file mode 100644 index 00000000..863d7a61 --- /dev/null +++ b/package/libtelnet/libtelnet.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# libtelnet +# +################################################################################ + +LIBTELNET_VERSION = 0.23 +LIBTELNET_SITE = https://github.com/seanmiddleditch/libtelnet/releases/download/$(LIBTELNET_VERSION) +LIBTELNET_INSTALL_STAGING = YES +LIBTELNET_CONF_OPTS = --disable-util +LIBTELNET_DEPENDENCIES = host-pkgconf +LIBTELNET_LICENSE = Public domain +LIBTELNET_LICENSE_FILES = COPYING + +# for 0001-fix-compilation-without-zlib.patch +LIBTELNET_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/libtheora/0001-link-libtheoradec.patch b/package/libtheora/0001-link-libtheoradec.patch new file mode 100644 index 00000000..c38d32bb --- /dev/null +++ b/package/libtheora/0001-link-libtheoradec.patch @@ -0,0 +1,21 @@ +libtheoraenc.so needs to be linked to libtheoradec.so in order to avoid + +symbol 'th_comment_query_count': can't resolve symbol in lib '/usr/lib/libtheoraenc.so.1' + +when starting Freeswitch. + +Patch downloaded from +http://www.sisyphus.ru/en/srpm/Sisyphus/libtheora/patches/0 + +Signed-off-by: Bernd Kuhls + +--- libtheora/lib/Makefile.am ++++ libtheora/lib/Makefile.am +@@ -153,6 +153,7 @@ libtheoraenc_la_SOURCES = \ + libtheoraenc_la_LDFLAGS = \ + -version-info @THENC_LIB_CURRENT@:@THENC_LIB_REVISION@:@THENC_LIB_AGE@ \ + @THEORAENC_LDFLAGS@ $(OGG_LIBS) ++libtheoraenc_la_LIBADD = libtheoradec.la + + libtheora_la_SOURCES = \ + $(decoder_sources) \ diff --git a/package/libtheora/0002-fix-autoreconf.patch b/package/libtheora/0002-fix-autoreconf.patch new file mode 100644 index 00000000..27fc379a --- /dev/null +++ b/package/libtheora/0002-fix-autoreconf.patch @@ -0,0 +1,46 @@ +Fix broken autoreconf + +Upstream: https://git.xiph.org/?p=theora.git;a=commitdiff;h=28cc6dbd9b2a141df94f60993256a5fca368fa54 + +Signed-off-by: Bernd Kuhls +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi + + +From: Tim Terriberry +Date: Fri, 20 May 2011 20:41:50 +0000 (+0000) +Subject: Make autoreconf -i -f work. +X-Git-Url: https://git.xiph.org/?p=theora.git;a=commitdiff_plain;h=28cc6dbd9b2a141df94f60993256a5fca368fa54 + +Make autoreconf -i -f work. + +Patch from David Schleef. + +svn path=/trunk/theora/; revision=17990 +--- + +diff --git a/Makefile.am b/Makefile.am +index 89fd753..1783857 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -2,5 +2,7 @@ + AUTOMAKE_OPTIONS = foreign 1.6 dist-zip dist-bzip2 + ++ACLOCAL_AMFLAGS=-I m4 ++ + if THEORA_ENABLE_EXAMPLES + EXAMPLES_DIR = examples + else +diff --git a/configure.ac b/configure.ac +index 1cbec1a..456b603 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -61,7 +61,7 @@ AC_LIBTOOL_WIN32_DLL + AM_PROG_LIBTOOL + + dnl Add parameters for aclocal +-AC_SUBST(ACLOCAL_AMFLAGS, "-I m4") ++AC_CONFIG_MACRO_DIR([m4]) + + dnl Check for doxygen + AC_CHECK_PROG(HAVE_DOXYGEN, doxygen, true, false) diff --git a/package/libtheora/Config.in b/package/libtheora/Config.in new file mode 100644 index 00000000..eee9e9b1 --- /dev/null +++ b/package/libtheora/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBTHEORA + bool "libtheora" + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_LIBVORBIS + help + A library for the free and open video compression format + "Theora" from the Xiph.org Foundation. + + http://www.theora.org/ diff --git a/package/libtheora/libtheora.hash b/package/libtheora/libtheora.hash new file mode 100644 index 00000000..42ffa050 --- /dev/null +++ b/package/libtheora/libtheora.hash @@ -0,0 +1,6 @@ +# From http://downloads.xiph.org/releases/theora/SHA256SUMS +sha256 f36da409947aa2b3dcc6af0a8c2e3144bc19db2ed547d64e9171c59c66561c61 libtheora-1.1.1.tar.xz + +# Locally calculated +sha256 8417fad7da775735564e209484a2e011e0fa201e94f01fdbee6e4977e478e6fc COPYING +sha256 654a0238f789f4435c4818f50005b141d013c5a09a31d861efc1d0d67ba975a4 LICENSE diff --git a/package/libtheora/libtheora.mk b/package/libtheora/libtheora.mk new file mode 100644 index 00000000..f408e6cc --- /dev/null +++ b/package/libtheora/libtheora.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# libtheora +# +################################################################################ + +LIBTHEORA_VERSION = 1.1.1 +LIBTHEORA_SOURCE = libtheora-$(LIBTHEORA_VERSION).tar.xz +LIBTHEORA_SITE = http://downloads.xiph.org/releases/theora +LIBTHEORA_INSTALL_STAGING = YES +# We're patching Makefile.am +LIBTHEORA_AUTORECONF = YES +LIBTHEORA_LICENSE = BSD-3-Clause +LIBTHEORA_LICENSE_FILES = COPYING LICENSE + +LIBTHEORA_CONF_OPTS = \ + --disable-oggtest \ + --disable-vorbistest \ + --disable-sdltest \ + --disable-examples \ + --disable-spec + +LIBTHEORA_DEPENDENCIES = libogg libvorbis host-pkgconf + +$(eval $(autotools-package)) diff --git a/package/libtirpc/Config.in b/package/libtirpc/Config.in new file mode 100644 index 00000000..31f1636e --- /dev/null +++ b/package/libtirpc/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_LIBTIRPC + bool "libtirpc" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Libtirpc is a port of Sun's Transport-Independent RPC + library to Linux. + + http://sourceforge.net/projects/libtirpc/ + +config BR2_PACKAGE_LIBTIRPC_GSS + bool "gss" + depends on BR2_USE_MMU # libkrb5 + depends on !BR2_STATIC_LIBS # libkrb5 + depends on BR2_PACKAGE_LIBTIRPC + select BR2_PACKAGE_LIBKRB5 + help + Enable GSSAPI support + +comment "libtirpc needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +comment "libtirpc gss support needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS + depends on BR2_PACKAGE_LIBTIRPC diff --git a/package/libtirpc/libtirpc.hash b/package/libtirpc/libtirpc.hash new file mode 100644 index 00000000..40e59f9b --- /dev/null +++ b/package/libtirpc/libtirpc.hash @@ -0,0 +1,5 @@ +# From sourceforge's info on download page: +sha1 63c800f81f823254d2706637bab551dec176b99b libtirpc-1.3.4.tar.bz2 +# Locally computed +sha256 1e0b0c7231c5fa122e06c0609a76723664d068b0dba3b8219b63e6340b347860 libtirpc-1.3.4.tar.bz2 +sha256 17cf6098f95bdbb269f0bbc68e76c88fe20487ca7ec53f454923ab4256ecd2e7 COPYING diff --git a/package/libtirpc/libtirpc.mk b/package/libtirpc/libtirpc.mk new file mode 100644 index 00000000..04196f2f --- /dev/null +++ b/package/libtirpc/libtirpc.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# libtirpc +# +################################################################################ + +LIBTIRPC_VERSION = 1.3.4 +LIBTIRPC_SOURCE = libtirpc-$(LIBTIRPC_VERSION).tar.bz2 +LIBTIRPC_SITE = http://downloads.sourceforge.net/project/libtirpc/libtirpc/$(LIBTIRPC_VERSION) +LIBTIRPC_LICENSE = BSD-3-Clause +LIBTIRPC_LICENSE_FILES = COPYING +LIBTIRPC_CPE_ID_VALID = YES + +LIBTIRPC_INSTALL_STAGING = YES + +# getrpcby{number,name} are only provided if 'GQ' is defined +LIBTIRPC_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -DGQ" + +ifeq ($(BR2_PACKAGE_LIBTIRPC_GSS),y) +LIBTIRPC_CONF_ENV += KRB5_CONFIG=$(STAGING_DIR)/usr/bin/krb5-config +LIBTIRPC_CONF_OPTS += --enable-gssapi +LIBTIRPC_DEPENDENCIES += libkrb5 +else +LIBTIRPC_CONF_OPTS += --disable-gssapi +endif +HOST_LIBTIRPC_CONF_OPTS = --disable-gssapi + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libtomcrypt/0001-fix-CVE-2019-17362.patch b/package/libtomcrypt/0001-fix-CVE-2019-17362.patch new file mode 100644 index 00000000..91e21458 --- /dev/null +++ b/package/libtomcrypt/0001-fix-CVE-2019-17362.patch @@ -0,0 +1,29 @@ +From 25c26a3b7a9ad8192ccc923e15cf62bf0108ef94 Mon Sep 17 00:00:00 2001 +From: werew +Date: Thu, 3 Oct 2019 19:57:10 +0200 +Subject: [PATCH] Fixes #507 + +Fix a vulnerability in der_decode_utf8_string as specified here: +https://github.com/libtom/libtomcrypt/issues/507 + +[for import into Buildroot] +Signed-off-by: Thomas De Schampheleire + + +--- + src/pk/asn1/der/utf8/der_decode_utf8_string.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/pk/asn1/der/utf8/der_decode_utf8_string.c b/src/pk/asn1/der/utf8/der_decode_utf8_string.c +index 94555b99f..d3ed82bea 100644 +--- a/src/pk/asn1/der/utf8/der_decode_utf8_string.c ++++ b/src/pk/asn1/der/utf8/der_decode_utf8_string.c +@@ -65,7 +65,7 @@ int der_decode_utf8_string(const unsigned char *in, unsigned long inlen, + /* count number of bytes */ + for (z = 0; (tmp & 0x80) && (z <= 4); z++, tmp = (tmp << 1) & 0xFF); + +- if (z > 4 || (x + (z - 1) > inlen)) { ++ if (z == 1 || z > 4 || (x + (z - 1) > inlen)) { + return CRYPT_INVALID_PACKET; + } + diff --git a/package/libtomcrypt/Config.in b/package/libtomcrypt/Config.in new file mode 100644 index 00000000..2459cd21 --- /dev/null +++ b/package/libtomcrypt/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBTOMCRYPT + bool "libtomcrypt" + select BR2_PACKAGE_LIBTOMMATH + help + LibTomCrypt is a fairly comprehensive, modular and portable + cryptographic toolkit that provides developers with a vast + array of well known published block ciphers, one-way hash + functions, chaining modes, pseudo-random number generators, + public key cryptography and a plethora of other routines. + + https://www.libtom.net diff --git a/package/libtomcrypt/libtomcrypt.hash b/package/libtomcrypt/libtomcrypt.hash new file mode 100644 index 00000000..3820f8d7 --- /dev/null +++ b/package/libtomcrypt/libtomcrypt.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 96ad4c3b8336050993c5bc2cf6c057484f2b0f9f763448151567fbab5e767b84 crypt-1.18.2.tar.xz + +# Hash for license file: +sha256 8f196cb13afd271f5e267fd29543fc454596382ad580e7592709492843996ac8 LICENSE diff --git a/package/libtomcrypt/libtomcrypt.mk b/package/libtomcrypt/libtomcrypt.mk new file mode 100644 index 00000000..fa2a5850 --- /dev/null +++ b/package/libtomcrypt/libtomcrypt.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# libtomcrypt +# +################################################################################ + +LIBTOMCRYPT_VERSION = 1.18.2 +LIBTOMCRYPT_SITE = https://github.com/libtom/libtomcrypt/releases/download/v$(LIBTOMCRYPT_VERSION) +LIBTOMCRYPT_SOURCE = crypt-$(LIBTOMCRYPT_VERSION).tar.xz +LIBTOMCRYPT_LICENSE = WTFPL +LIBTOMCRYPT_LICENSE_FILES = LICENSE +LIBTOMCRYPT_CPE_ID_VENDOR = libtom +LIBTOMCRYPT_INSTALL_STAGING = YES +LIBTOMCRYPT_INSTALL_TARGET = NO # only static library +LIBTOMCRYPT_DEPENDENCIES = libtommath + +# 0001-fix-CVE-2019-17362.patch +LIBTOMCRYPT_IGNORE_CVES += CVE-2019-17362 + +LIBTOMCRYPT_CFLAGS = -I./src/headers $(TARGET_CFLAGS) -DLTC_SOURCE -DLTM_DESC + +ifeq ($(BR2_STATIC_LIBS),) +LIBTOMCRYPT_CFLAGS += -fPIC +endif + +define LIBTOMCRYPT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) -f makefile.unix $(TARGET_CONFIGURE_OPTS) CFLAGS="$(LIBTOMCRYPT_CFLAGS)" +endef + +define LIBTOMCRYPT_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) -f makefile.unix \ + DESTDIR="$(STAGING_DIR)" PREFIX=/usr install +endef + +$(eval $(generic-package)) diff --git a/package/libtommath/0001-Build-test-bn_mp_set_double-c-on-more-platforms.patch b/package/libtommath/0001-Build-test-bn_mp_set_double-c-on-more-platforms.patch new file mode 100644 index 00000000..1cf411b3 --- /dev/null +++ b/package/libtommath/0001-Build-test-bn_mp_set_double-c-on-more-platforms.patch @@ -0,0 +1,44 @@ +From 4e90f3185aea9160c28f3eaec5625b67fc0f67db Mon Sep 17 00:00:00 2001 +From: Daniel Green +Date: Sun, 9 Feb 2020 11:06:53 -0500 +Subject: [PATCH] Build+test bn_mp_set_double.c on more platforms + +Not all platforms/environments/architectures that support enough of +IEEE 754 for the purposes of mp_set_double() actually support enough +to legitimately define __STDC_IEC_559__, so only relying on that is +too strict. Fixes https://github.com/libtom/libtommath/issues/159 + +Signed-off-by: Fabrice Fontaine +[Retrieved (and backported) from: +https://github.com/libtom/libtommath/commit/4e90f3185aea9160c28f3eaec5625b67fc0f67db] +--- + demo/test.c | 2 +- + bn_mp_set_double.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/demo/test.c b/demo/test.c +index 998f14b3..f719709d 100644 +--- a/demo/test.c ++++ b/demo/test.c +@@ -625,7 +625,7 @@ static int test_mp_invmod(void) + + } + +-#if defined(__STDC_IEC_559__) || defined(__GCC_IEC_559) ++#if defined(__STDC_IEC_559__) || defined(__GCC_IEC_559) || defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64) || defined(__i386__) || defined(_M_X86) || defined(__aarch64__) || defined(__arm__) + static int test_mp_set_double(void) + { + int i; +diff --git a/mp_set_double.c b/mp_set_double.c +index 78550c8f..cdc644d9 100644 +--- a/bn_mp_set_double.c ++++ b/bn_mp_set_double.c +@@ -3,7 +3,7 @@ + /* LibTomMath, multiple-precision integer library -- Tom St Denis */ + /* SPDX-License-Identifier: Unlicense */ + +-#if defined(__STDC_IEC_559__) || defined(__GCC_IEC_559) ++#if defined(__STDC_IEC_559__) || defined(__GCC_IEC_559) || defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64) || defined(__i386__) || defined(_M_X86) || defined(__aarch64__) || defined(__arm__) + mp_err mp_set_double(mp_int *a, double b) + { + uint64_t frac; diff --git a/package/libtommath/Config.in b/package/libtommath/Config.in new file mode 100644 index 00000000..7447fb9e --- /dev/null +++ b/package/libtommath/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBTOMMATH + bool "libtommath" + help + LibTomMath is a free open source portable number theoretic + multiple-precision integer library written entirely in C. + + https://www.libtom.net diff --git a/package/libtommath/libtommath.hash b/package/libtommath/libtommath.hash new file mode 100644 index 00000000..4ce6057e --- /dev/null +++ b/package/libtommath/libtommath.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 296272d93435991308eb73607600c034b558807a07e829e751142e65ccfa9d08 ltm-1.3.0.tar.xz + +# Hashes for license files: +sha256 2fa64b163659f41965c9815882a8296d3d03ff546b76153e11445f9bdecf955a LICENSE diff --git a/package/libtommath/libtommath.mk b/package/libtommath/libtommath.mk new file mode 100644 index 00000000..66b25864 --- /dev/null +++ b/package/libtommath/libtommath.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# libtommath +# +################################################################################ + +LIBTOMMATH_VERSION = 1.3.0 +LIBTOMMATH_SITE = https://github.com/libtom/libtommath/releases/download/v$(LIBTOMMATH_VERSION) +LIBTOMMATH_SOURCE = ltm-$(LIBTOMMATH_VERSION).tar.xz +LIBTOMMATH_LICENSE = Unlicense +LIBTOMMATH_LICENSE_FILES = LICENSE +LIBTOMMATH_CPE_ID_VENDOR = libtom +LIBTOMMATH_INSTALL_STAGING = YES +LIBTOMMATH_INSTALL_TARGET = NO # only static library + +define LIBTOMMATH_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) CFLAGS="-I./ -fPIC $(TARGET_CFLAGS)" +endef + +define LIBTOMMATH_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(STAGING_DIR)" PREFIX=/usr install +endef + +$(eval $(generic-package)) diff --git a/package/libtool/Config.in b/package/libtool/Config.in new file mode 100644 index 00000000..8192c770 --- /dev/null +++ b/package/libtool/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBTOOL + bool "libtool" + help + Library that hides the complexity of using shared/static + libraries on different platforms behind a consistent, portable + interface. + + http://www.gnu.org/software/libtool/ diff --git a/package/libtool/libtool.hash b/package/libtool/libtool.hash new file mode 100644 index 00000000..8deaf4fb --- /dev/null +++ b/package/libtool/libtool.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +sha256 7c87a8c2c8c0fc9cd5019e402bed4292462d00a718a7cd5f11218153bf28b26f libtool-2.4.6.tar.xz +# License files, locally calculated +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 libltdl/COPYING.LIB diff --git a/package/libtool/libtool.mk b/package/libtool/libtool.mk new file mode 100644 index 00000000..6342e70a --- /dev/null +++ b/package/libtool/libtool.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# libtool +# +################################################################################ + +LIBTOOL_VERSION = 2.4.6 +LIBTOOL_SOURCE = libtool-$(LIBTOOL_VERSION).tar.xz +LIBTOOL_SITE = $(BR2_GNU_MIRROR)/libtool +LIBTOOL_CPE_ID_VENDOR = gnu + +# For the target variant, we only want to build/install libltdl +LIBTOOL_SUBDIR = libltdl +HOST_LIBTOOL_SUBDIR = . + +LIBTOOL_INSTALL_STAGING = YES + +LIBTOOL_CONF_OPTS = --enable-ltdl-install + +LIBTOOL_DEPENDENCIES = host-m4 +HOST_LIBTOOL_DEPENDENCIES = host-m4 + +LIBTOOL_LICENSE = LGPL-2.1+ +LIBTOOL_LICENSE_FILES = $(LIBTOOL_SUBDIR)/COPYING.LIB +HOST_LIBTOOL_LICENSE = GPL-2.0+ (libtool), LGPL-2.1+ (libltdl) +HOST_LIBTOOL_LICENSE_FILES = COPYING $(LIBTOOL_SUBDIR)/COPYING.LIB + +HOST_LIBTOOL_CONF_ENV = MAKEINFO=true +HOST_LIBTOOL_LIBTOOL_PATCH = NO + +# We have a patch that affects libtool.m4, which triggers an autoreconf +# in the build step. Normally we would set AUTORECONF = YES, but this +# doesn't work for host-libtool because that creates a circular +# dependency. Instead, touch the generated files so autoreconf is not +# triggered in the build step. Note that aclocal.m4 has to be touched +# first since the rest depends on it. Note that we don't need the changes +# in libtool.m4 in our configure script, because we're not actually +# running it on the target. +# For the target, we would normally be able to use AUTORECONF, but it +# fails on libltdl/Makefile.inc. Rather than trying to fix that failure, +# just use the same hack as on the host. +define LIBTOOL_AVOID_AUTORECONF_HOOK + find $(@D) -name aclocal.m4 -exec touch '{}' \; + find $(@D) -name config-h.in -exec touch '{}' \; + find $(@D) -name configure -exec touch '{}' \; + find $(@D) -name Makefile.in -exec touch '{}' \; +endef +LIBTOOL_PRE_CONFIGURE_HOOKS += LIBTOOL_AVOID_AUTORECONF_HOOK +HOST_LIBTOOL_PRE_CONFIGURE_HOOKS += LIBTOOL_AVOID_AUTORECONF_HOOK + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) + +# variables used by other packages +LIBTOOL = $(HOST_DIR)/bin/libtool +LIBTOOLIZE = $(HOST_DIR)/bin/libtoolize diff --git a/package/libtorrent-rasterbar/Config.in b/package/libtorrent-rasterbar/Config.in new file mode 100644 index 00000000..459edc1b --- /dev/null +++ b/package/libtorrent-rasterbar/Config.in @@ -0,0 +1,25 @@ +comment "libtorrent-rasterbar needs a toolchain w/ C++, threads, wchar, gcc >= 4.9" + depends on BR2_TOOLCHAIN_SUPPORTS_VARIADIC_MI_THUNK + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_USE_WCHAR || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +comment "libtorrent-rasterbar needs exception_ptr" + depends on BR2_TOOLCHAIN_SUPPORTS_VARIADIC_MI_THUNK + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + +config BR2_PACKAGE_LIBTORRENT_RASTERBAR + bool "libtorrent-rasterbar" + depends on BR2_INSTALL_LIBSTDCPP # boost + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS # boost + depends on BR2_TOOLCHAIN_SUPPORTS_VARIADIC_MI_THUNK + depends on BR2_USE_WCHAR # boost + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_SYSTEM + help + libtorrent is a feature complete C++ bittorrent implementation + focusing on efficiency and scalability. + + https://www.libtorrent.org/ diff --git a/package/libtorrent-rasterbar/libtorrent-rasterbar.hash b/package/libtorrent-rasterbar/libtorrent-rasterbar.hash new file mode 100644 index 00000000..b1abe85d --- /dev/null +++ b/package/libtorrent-rasterbar/libtorrent-rasterbar.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 eee8e99548dc5eb5e643e49db9202f4f97112c032dba883dfdc8144af5b6e40e libtorrent-rasterbar-1.2.19.tar.gz +sha256 f3a5dd1558cce616b12edad521427ec8976ce2bb0af33f7f359cfa648bf55ad8 COPYING diff --git a/package/libtorrent-rasterbar/libtorrent-rasterbar.mk b/package/libtorrent-rasterbar/libtorrent-rasterbar.mk new file mode 100644 index 00000000..6b497bbe --- /dev/null +++ b/package/libtorrent-rasterbar/libtorrent-rasterbar.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# libtorrent-rasterbar +# +################################################################################ + +LIBTORRENT_RASTERBAR_VERSION = 1.2.19 +LIBTORRENT_RASTERBAR_SITE = \ + https://github.com/arvidn/libtorrent/releases/download/v$(LIBTORRENT_RASTERBAR_VERSION) +LIBTORRENT_RASTERBAR_LICENSE = BSD-3-Clause +LIBTORRENT_RASTERBAR_LICENSE_FILES = COPYING +LIBTORRENT_RASTERBAR_CPE_ID_VENDOR = libtorrent +LIBTORRENT_RASTERBAR_CPE_ID_PRODUCT = libtorrent +LIBTORRENT_RASTERBAR_DEPENDENCIES = host-pkgconf boost +LIBTORRENT_RASTERBAR_INSTALL_STAGING = YES +LIBTORRENT_RASTERBAR_CONF_OPTS = \ + --with-boost-libdir=$(STAGING_DIR)/usr/lib \ + --disable-invariant-checks +LIBTORRENT_RASTERBAR_CXXFLAGS = $(TARGET_CXXFLAGS) -std=c++11 + +# Internal error, aborting at dwarf2cfi.c:2802 in connect_traces +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58864 +ifeq ($(BR2_m68k_cf),y) +LIBTORRENT_RASTERBAR_CXXFLAGS += -fno-defer-pop +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +LIBTORRENT_RASTERBAR_CXXFLAGS += -O0 +endif + +LIBTORRENT_RASTERBAR_CONF_OPTS += CXXFLAGS="$(LIBTORRENT_RASTERBAR_CXXFLAGS)" + +ifeq ($(BR2_ENABLE_LOCALE)$(BR2_PACKAGE_LIBICONV),y) +LIBTORRENT_RASTERBAR_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBICONV),libiconv) +LIBTORRENT_RASTERBAR_CONF_OPTS += --with-libiconv +else +LIBTORRENT_RASTERBAR_CONF_OPTS += --without-libiconv +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBTORRENT_RASTERBAR_DEPENDENCIES += openssl +LIBTORRENT_RASTERBAR_CONF_OPTS += --enable-encryption +else +LIBTORRENT_RASTERBAR_CONF_OPTS += --disable-encryption +endif + +$(eval $(autotools-package)) diff --git a/package/libtorrent/0001-libtorrent.pc.in-add-Libs.Private.patch b/package/libtorrent/0001-libtorrent.pc.in-add-Libs.Private.patch new file mode 100644 index 00000000..7d363d29 --- /dev/null +++ b/package/libtorrent/0001-libtorrent.pc.in-add-Libs.Private.patch @@ -0,0 +1,30 @@ +From a86219e725441eb87321fa3e24531dafa54ee674 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 20 Oct 2019 20:23:19 +0200 +Subject: [PATCH] libtorrent.pc.in: add Libs.Private + +Add Libs.Private: -lz so applications that want to link statically with +libtorrent (such as rtorrent) will know that they must link with -lz + +Fixes: + - http://autobuild.buildroot.org/results/075598e1699c2ac20a4dfbcb5695bbb7343f9a86 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/rakshasa/libtorrent/pull/202] +--- + libtorrent.pc.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libtorrent.pc.in b/libtorrent.pc.in +index cf6612bc..6108f7e9 100644 +--- a/libtorrent.pc.in ++++ b/libtorrent.pc.in +@@ -7,4 +7,5 @@ Name: libtorrent + Description: A BitTorrent library + Version: @VERSION@ + Libs: -L${libdir} -ltorrent ++Libs.Private: -lz + Cflags: -I${includedir} +-- +2.23.0 + diff --git a/package/libtorrent/Config.in b/package/libtorrent/Config.in new file mode 100644 index 00000000..de6487a7 --- /dev/null +++ b/package/libtorrent/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBTORRENT + bool "libtorrent" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HAS_SYNC_1 && BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 if BR2_PACKAGE_LIBOPENSSL + help + BitTorrent library written in C++ for *nix + + https://github.com/rakshasa/libtorrent + +comment "libtorrent needs a toolchain w/ C++, threads" + depends on BR2_TOOLCHAIN_HAS_SYNC_1 && BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libtorrent/libtorrent.hash b/package/libtorrent/libtorrent.hash new file mode 100644 index 00000000..5c755c8b --- /dev/null +++ b/package/libtorrent/libtorrent.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 ed115a28f4ae8cfcd33b94a597c076ca74fd549867a26e4fac9505c27288e983 libtorrent-0.13.8.tar.gz +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING diff --git a/package/libtorrent/libtorrent.mk b/package/libtorrent/libtorrent.mk new file mode 100644 index 00000000..b966a727 --- /dev/null +++ b/package/libtorrent/libtorrent.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# libtorrent +# +################################################################################ + +LIBTORRENT_VERSION = 0.13.8 +LIBTORRENT_SITE = http://rtorrent.net/downloads +LIBTORRENT_DEPENDENCIES = host-pkgconf zlib +LIBTORRENT_CONF_OPTS = --enable-aligned \ + --disable-instrumentation \ + --with-zlib=$(STAGING_DIR)/usr +LIBTORRENT_INSTALL_STAGING = YES +LIBTORRENT_LICENSE = GPL-2.0 +LIBTORRENT_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_LIBEXECINFO),y) +LIBTORRENT_CONF_ENV += LDFLAGS="$(TARGET_LDFLAGS) -lexecinfo" +LIBTORRENT_DEPENDENCIES += libexecinfo +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBTORRENT_CONF_OPTS += --enable-openssl +LIBTORRENT_DEPENDENCIES += openssl +else +LIBTORRENT_CONF_OPTS += --disable-openssl +endif + +$(eval $(autotools-package)) diff --git a/package/libtpl/Config.in b/package/libtpl/Config.in new file mode 100644 index 00000000..0286e033 --- /dev/null +++ b/package/libtpl/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBTPL + bool "libtpl" + help + Easily store and retrieve binary data in C + + http://troydhanson.github.io/tpl/ diff --git a/package/libtpl/libtpl.hash b/package/libtpl/libtpl.hash new file mode 100644 index 00000000..74ca68fb --- /dev/null +++ b/package/libtpl/libtpl.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 0b3750bf62f56be4c42f83c89d8449b24f1c5f1605a104801d70f2f3c06fb2ff libtpl-1.6.1.tar.gz +sha256 8554ddb5779f1ad2f3ea6db1d0df622e63fca11f44bfc3c8b3c207ea0482c746 LICENSE diff --git a/package/libtpl/libtpl.mk b/package/libtpl/libtpl.mk new file mode 100644 index 00000000..ead87a6b --- /dev/null +++ b/package/libtpl/libtpl.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# libtpl +# +################################################################################ + +LIBTPL_VERSION = 1.6.1 +LIBTPL_SITE = $(call github,troydhanson,tpl,v$(LIBTPL_VERSION)) +LIBTPL_INSTALL_STAGING = YES +LIBTPL_LICENSE = BSD-like +LIBTPL_LICENSE_FILES = LICENSE + +LIBTPL_AUTORECONF = YES + +define LIBTPL_CREATE_MISSING_FILES + touch $(@D)/NEWS $(@D)/AUTHORS $(@D)/ChangeLog $(@D)/COPYING +endef +LIBTPL_POST_EXTRACT_HOOKS += LIBTPL_CREATE_MISSING_FILES + +$(eval $(autotools-package)) diff --git a/package/libtpms/libtpms.hash b/package/libtpms/libtpms.hash new file mode 100644 index 00000000..1026aaa4 --- /dev/null +++ b/package/libtpms/libtpms.hash @@ -0,0 +1,2 @@ +sha256 2807466f1563ebe45fdd12dd26e501e8a0c4fbb99c7c428fbb508789efd221c0 libtpms-0.9.6.tar.gz +sha256 82f1e6bae374bb6a9d4f4596767fd33e499718d560de140fd9f3d402cc5e41fb LICENSE diff --git a/package/libtpms/libtpms.mk b/package/libtpms/libtpms.mk new file mode 100644 index 00000000..19d7cef8 --- /dev/null +++ b/package/libtpms/libtpms.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# libtpms +# +################################################################################ + +LIBTPMS_VERSION = 0.9.6 +LIBTPMS_SITE = $(call github,stefanberger,libtpms,v$(LIBTPMS_VERSION)) +LIBTPMS_LICENSE = BSD-4-Clause +LIBTPMS_LICENSE_FILES = LICENSE +LIBTPMS_INSTALL_STAGING = YES + +# Required because a plain Git clone is used: +HOST_LIBTPMS_AUTORECONF = YES +HOST_LIBTPMS_DEPENDENCIES = host-pkgconf host-openssl +HOST_LIBTPMS_CONF_OPTS = --with-openssl -with-tpm2 + +$(eval $(host-autotools-package)) diff --git a/package/libtraceevent/Config.in b/package/libtraceevent/Config.in new file mode 100644 index 00000000..28a5b325 --- /dev/null +++ b/package/libtraceevent/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBTRACEEVENT + bool "libtraceevent" + depends on !BR2_STATIC_LIBS # dlfcn.h + help + libtraceevent is a library that interfaces with the ftrace + subsystem in the linux kernel. + It used to be bundled directly in the trace-cmd + tool, but it was eventually extracted so that it can be used + by multiple other tools and libraries, such as libtracefs and + rtla. + + https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/ + +comment "libtraceevent needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/libtraceevent/libtraceevent.hash b/package/libtraceevent/libtraceevent.hash new file mode 100644 index 00000000..d59e0a91 --- /dev/null +++ b/package/libtraceevent/libtraceevent.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 233d88adf5bae6b4511980f0f6314f348326b55fdb3dc9c4212c810e1ab06789 libtraceevent-1.8.3.tar.gz +sha256 f6b78c087c3ebdf0f3c13415070dd480a3f35d8fc76f3d02180a407c1c812f79 LICENSES/GPL-2.0 +sha256 0b9a4febcdee6de55872501d5c1a8f5d8b0d1650cd4d5351995ceb22e889f8ca LICENSES/LGPL-2.1 diff --git a/package/libtraceevent/libtraceevent.mk b/package/libtraceevent/libtraceevent.mk new file mode 100644 index 00000000..35e1152d --- /dev/null +++ b/package/libtraceevent/libtraceevent.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libtraceevent +# +################################################################################ + +LIBTRACEEVENT_VERSION = 1.8.3 +LIBTRACEEVENT_SITE = https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/snapshot +LIBTRACEEVENT_LICENSE = GPL-2.0, LGPL-2.1 +LIBTRACEEVENT_LICENSE_FILES = LICENSES/GPL-2.0 LICENSES/LGPL-2.1 + +LIBTRACEEVENT_INSTALL_STAGING = YES + +LIBTRACEEVENT_CONF_OPTS = \ + -Ddoc=false + +$(eval $(meson-package)) diff --git a/package/libtracefs/Config.in b/package/libtracefs/Config.in new file mode 100644 index 00000000..a46bbe0b --- /dev/null +++ b/package/libtracefs/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBTRACEFS + bool "libtracefs" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS # libtraceevent + select BR2_PACKAGE_LIBTRACEEVENT + help + libtracefs is used to easily interface with the ftrace + interface through the tracefs virtual filesystem. + + https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/ + +comment "libtracefs needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/libtracefs/libtracefs.hash b/package/libtracefs/libtracefs.hash new file mode 100644 index 00000000..e728e643 --- /dev/null +++ b/package/libtracefs/libtracefs.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 d295aa20d711c313a9e229dbd15ba14026f0c1a50d57ae8b0823cc561b23745f libtracefs-1.8.1.tar.gz +sha256 f6b78c087c3ebdf0f3c13415070dd480a3f35d8fc76f3d02180a407c1c812f79 LICENSES/GPL-2.0 +sha256 0b9a4febcdee6de55872501d5c1a8f5d8b0d1650cd4d5351995ceb22e889f8ca LICENSES/LGPL-2.1 diff --git a/package/libtracefs/libtracefs.mk b/package/libtracefs/libtracefs.mk new file mode 100644 index 00000000..86baa5d9 --- /dev/null +++ b/package/libtracefs/libtracefs.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# libtracefs +# +################################################################################ + +LIBTRACEFS_VERSION = 1.8.1 +LIBTRACEFS_SITE = https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/snapshot +LIBTRACEFS_INSTALL_STAGING = YES +LIBTRACEFS_LICENSE = GPL-2.0, LGPL-2.1 +LIBTRACEFS_LICENSE_FILES = LICENSES/GPL-2.0 LICENSES/LGPL-2.1 + +LIBTRACEFS_DEPENDENCIES = host-bison host-flex host-pkgconf libtraceevent + +LIBTRACEFS_CONF_OPTS = \ + -Ddoc=false \ + -Dsamples=false + +$(eval $(meson-package)) diff --git a/package/libubootenv/0001-src-CMakeLists.txt-do-not-force-the-build-of-a-share.patch b/package/libubootenv/0001-src-CMakeLists.txt-do-not-force-the-build-of-a-share.patch new file mode 100644 index 00000000..9c5438f3 --- /dev/null +++ b/package/libubootenv/0001-src-CMakeLists.txt-do-not-force-the-build-of-a-share.patch @@ -0,0 +1,54 @@ +From 5448ca9d92f7fa197060323a82a5f060ce7c31e7 Mon Sep 17 00:00:00 2001 +From: Pierre-Jean Texier +Date: Wed, 22 May 2019 10:26:27 +0200 +Subject: [PATCH] src/CMakeLists.txt: do not force the build of a shared + library + +By definition, projects using CMake which can build either static or shared +libraries use a BUILD_SHARED_LIBS flag to allow selecting between both. +So, let CMake rely on the standard BUILD_SHARED_LIBS variable to decide +whether a static or shared library should be built. + +however, we can control the behaviour as follows: + + $. cmake -DBUILD_SHARED_LIBS=OFF ... + + $. cmake -DBUILS_SHARED_LIBS=ON ... + +With Yocto/OE, just add the following option into the libubootenv recipe : + +EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON" + +Signed-off-by: Pierre-Jean Texier +[Upstream status: http://patchwork.ozlabs.org/patch/1103437/] +--- + src/CMakeLists.txt | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 4b71bc5..0b515f4 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -15,17 +15,15 @@ SET(include_HEADERS + + include(GNUInstallDirs) # for the CMAKE_INSTALL_LIBDIR variable + +-add_library(ubootenv SHARED ${libubootenv_SOURCES} ${include_HEADERS}) ++add_library(ubootenv ${libubootenv_SOURCES} ${include_HEADERS}) + SET_TARGET_PROPERTIES(ubootenv PROPERTIES VERSION ${VERSION} SOVERSION ${SOVERSION}) + +-ADD_LIBRARY(ubootenv_static STATIC ${libubootenv_SOURCES} ${include_HEADERS}) +-SET_TARGET_PROPERTIES(ubootenv_static PROPERTIES OUTPUT_NAME ubootenv) + add_executable(fw_printenv fw_printenv.c) + target_link_libraries(ubootenv z yaml) + target_link_libraries(fw_printenv ubootenv) + add_custom_target(fw_setenv ALL ${CMAKE_COMMAND} -E create_symlink fw_printenv fw_setenv) + +-install (TARGETS ubootenv ubootenv_static DESTINATION ${CMAKE_INSTALL_LIBDIR}) ++install (TARGETS ubootenv DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install (FILES libuboot.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + install (TARGETS fw_printenv DESTINATION ${CMAKE_INSTALL_BINDIR}) + install (PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/fw_setenv DESTINATION ${CMAKE_INSTALL_BINDIR}) +-- +2.30.2 + diff --git a/package/libubootenv/Config.in b/package/libubootenv/Config.in new file mode 100644 index 00000000..5258ed78 --- /dev/null +++ b/package/libubootenv/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBUBOOTENV + bool "libubootenv" + select BR2_PACKAGE_LIBYAML + select BR2_PACKAGE_ZLIB + help + libubootenv is a library that provides a hardware independent + way to access to U-Boot environment. + + The package provides the fw_printenv / fw_setenv utilities, + new tools build from the library and not from U-Boot. + + https://github.com/sbabic/libubootenv/ diff --git a/package/libubootenv/libubootenv.hash b/package/libubootenv/libubootenv.hash new file mode 100644 index 00000000..887ad684 --- /dev/null +++ b/package/libubootenv/libubootenv.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 dc27ddcb377e259d898256e90449bc3128437660cacc33dc75f6630d3e52c44e libubootenv-0.3.5.tar.gz +sha256 0558101984550fa84d1d13c2af11d116c20079d2be58711e8d99cadce7009192 LICENSES/CC0-1.0.txt +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSES/LGPL-2.1-or-later.txt +sha256 89807acf2309bd285f033404ee78581602f3cd9b819a16ac2f0e5f60ff4a473e LICENSES/MIT.txt diff --git a/package/libubootenv/libubootenv.mk b/package/libubootenv/libubootenv.mk new file mode 100644 index 00000000..e5f5e9b1 --- /dev/null +++ b/package/libubootenv/libubootenv.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libubootenv +# +################################################################################ + +LIBUBOOTENV_VERSION = 0.3.5 +LIBUBOOTENV_SITE = $(call github,sbabic,libubootenv,v$(LIBUBOOTENV_VERSION)) +LIBUBOOTENV_LICENSE = LGPL-2.1+, MIT, CC0-1.0 +LIBUBOOTENV_LICENSE_FILES = LICENSES/CC0-1.0.txt \ + LICENSES/LGPL-2.1-or-later.txt \ + LICENSES/MIT.txt + +LIBUBOOTENV_INSTALL_STAGING = YES +LIBUBOOTENV_DEPENDENCIES = libyaml zlib + +$(eval $(cmake-package)) diff --git a/package/libubox/Config.in b/package/libubox/Config.in new file mode 100644 index 00000000..1f0b691e --- /dev/null +++ b/package/libubox/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBUBOX + bool "libubox" + depends on !BR2_STATIC_LIBS + help + This library originates from the OpenWrt project to + handle the configuration file infrastructure, but can + also be used for the same purposes in projects other + than OpenWrt. + + https://openwrt.org/docs/techref/libubox + +comment "libubox needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/libubox/libubox.hash b/package/libubox/libubox.hash new file mode 100644 index 00000000..7738caf2 --- /dev/null +++ b/package/libubox/libubox.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 918acc85199117ef109f2a204020f6fe4d5a1724a09888f45b70b6474345d6fe libubox-75a3b870cace1171faf57bd55e5a9a2f1564f757-git4.tar.gz diff --git a/package/libubox/libubox.mk b/package/libubox/libubox.mk new file mode 100644 index 00000000..d6da078c --- /dev/null +++ b/package/libubox/libubox.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# libubox +# +################################################################################ + +LIBUBOX_VERSION = 75a3b870cace1171faf57bd55e5a9a2f1564f757 +LIBUBOX_SITE = https://git.openwrt.org/project/libubox.git +LIBUBOX_SITE_METHOD = git +LIBUBOX_LICENSE = ISC, BSD-3-Clause +LIBUBOX_INSTALL_STAGING = YES +LIBUBOX_DEPENDENCIES = $(if $(BR2_PACKAGE_JSON_C),json-c) + +ifeq ($(BR2_USE_MMU)$(BR2_PACKAGE_LUA_5_1),yy) +LIBUBOX_DEPENDENCIES += lua +LIBUBOX_CONF_OPTS += -DBUILD_LUA=ON \ + -DLUAPATH=/usr/lib/lua/5.1 \ + -DLUA_CFLAGS=-I$(STAGING_DIR)/usr/include +else +LIBUBOX_CONF_OPTS += -DBUILD_LUA=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/libuci/Config.in b/package/libuci/Config.in new file mode 100644 index 00000000..f94d7dc3 --- /dev/null +++ b/package/libuci/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBUCI + bool "libuci" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBUBOX + help + This library originates from the OpenWrt project to + handle the configuration file infrastructure, but can + also be used for the same purposes in projects other + than OpenWrt. + + This package will also install CLI tool uci. + + https://openwrt.org/docs/techref/uci + +comment "libuci needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/libuci/libuci.hash b/package/libuci/libuci.hash new file mode 100644 index 00000000..cc043203 --- /dev/null +++ b/package/libuci/libuci.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 d095dc7ff4714e33aa18ef3ea5d30f525a202d6997d7b13bd952da53818988d6 libuci-4b3db1179747b6a6779029407984bacef851325c-git4.tar.gz +sha256 39e1cc18a36172fb80d9b37f0af77d78ae935bd8a020978a7895d9e76a24e112 cli.c +sha256 69d4eea4de19d27014f3d6ed723081b4039700bfd73cd0a5e39e2c4f19a58c66 libuci.c diff --git a/package/libuci/libuci.mk b/package/libuci/libuci.mk new file mode 100644 index 00000000..81e87aa5 --- /dev/null +++ b/package/libuci/libuci.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# libuci +# +################################################################################ + +LIBUCI_VERSION = 4b3db1179747b6a6779029407984bacef851325c +LIBUCI_SITE = https://git.openwrt.org/project/uci.git +LIBUCI_SITE_METHOD = git +LIBUCI_LICENSE = LGPL-2.1, GPL-2.0 (tools) +LIBUCI_LICENSE_FILES = cli.c libuci.c +LIBUCI_CPE_ID_VENDOR = openwrt +LIBUCI_INSTALL_STAGING = YES +LIBUCI_DEPENDENCIES = libubox + +# Fixed in commit 19e29ffc15dbd958e8e6a648ee0982c68353516f, older than LIBUCI_VERSION +LIBUCI_IGNORE_CVES += CVE-2019-15513 + +ifeq ($(BR2_PACKAGE_LUA_5_1),y) +LIBUCI_DEPENDENCIES += lua +LIBUCI_CONF_OPTS += -DBUILD_LUA=ON \ + -DLUAPATH=/usr/lib/lua/5.1 \ + -DLUA_CFLAGS=-I$(STAGING_DIR)/usr/include +LIBUCI_LICENSE += , GPL-2.0 (lua bindings) +else +LIBUCI_CONF_OPTS += -DBUILD_LUA=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/libucl/Config.in b/package/libucl/Config.in new file mode 100644 index 00000000..a94701e1 --- /dev/null +++ b/package/libucl/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBUCL + bool "libucl" + help + Universal configuration library parser + + Libucl is a parser and C API to parse and generate ucl + objects. Libucl consist of several groups of functions: + parser, emitting, conversion, generation, iteration, + validation, and utility. These functions can be used to work + with several formats: JSON, compact JSON, configuration + (nginx like), and YAML. Libucl has clear design that should + be very convenient for reading and writing and makes for an + ideal parser with high performance. + + https://github.com/vstakhov/libucl diff --git a/package/libucl/libucl.hash b/package/libucl/libucl.hash new file mode 100644 index 00000000..4ad166dc --- /dev/null +++ b/package/libucl/libucl.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 d95a0e2151cc167a0f3e51864fea4e8977a0f4c473faa805269a347f7fb4e165 libucl-0.8.2.tar.gz +sha256 1bf976835764c1d827e07472a0a75adb098682df56681878af05fc0db7439b03 COPYING diff --git a/package/libucl/libucl.mk b/package/libucl/libucl.mk new file mode 100644 index 00000000..bf5e368f --- /dev/null +++ b/package/libucl/libucl.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# libucl +# +################################################################################ + +LIBUCL_VERSION = 0.8.2 +LIBUCL_SITE = $(call github,vstakhov,libucl,$(LIBUCL_VERSION)) +LIBUCL_INSTALL_STAGING = YES +LIBUCL_AUTORECONF = YES +LIBUCL_LICENSE = BSD-2-Clause +LIBUCL_LICENSE_FILES = COPYING +LIBUCL_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +LIBUCL_DEPENDENCIES += libcurl +LIBUCL_CONF_OPTS += --enable-urls +else +LIBUCL_CONF_OPTS += --disable-urls +endif + +$(eval $(autotools-package)) diff --git a/package/libucontext/Config.in b/package/libucontext/Config.in new file mode 100644 index 00000000..84a6e89f --- /dev/null +++ b/package/libucontext/Config.in @@ -0,0 +1,33 @@ +config BR2_PACKAGE_LIBUCONTEXT_ARCH_SUPPORTS + bool + default y if BR2_aarch64 + default y if BR2_aarch64_be + default y if BR2_arm + default y if BR2_armeb + default y if BR2_m68k + default y if BR2_mips + default y if BR2_mipsel + default y if BR2_mips64 + default y if BR2_mips64el + default y if BR2_or1k + default y if BR2_powerpc + default y if BR2_powerpc64 + default y if BR2_powerpc64le + default y if BR2_riscv && BR2_RISCV_32 + default y if BR2_riscv && BR2_RISCV_64 + default y if BR2_s390x + default y if BR2_sh4 + default y if BR2_sh4eb + default y if BR2_sh4a + default y if BR2_sh4aeb + default y if BR2_i386 + default y if BR2_x86_64 + depends on BR2_TOOLCHAIN_USES_MUSL + +config BR2_PACKAGE_LIBUCONTEXT + bool "libucontext" + depends on BR2_PACKAGE_LIBUCONTEXT_ARCH_SUPPORTS + help + Ucontext implementation featuring glibc-compatible ABI. + + https://github.com/kaniini/libucontext diff --git a/package/libucontext/libucontext.hash b/package/libucontext/libucontext.hash new file mode 100644 index 00000000..a8e1e23e --- /dev/null +++ b/package/libucontext/libucontext.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 937fba9d0beebd7cf957b79979b19fe3a29bb9c4bfd25e869477d7154bbf8fd3 libucontext-1.2.tar.gz +# License files, locally calculated +sha256 ecf4be354bbb6ccebdf150d1a8f2b3caeb10cf7c8a580f278a30799372f9e037 LICENSE diff --git a/package/libucontext/libucontext.mk b/package/libucontext/libucontext.mk new file mode 100644 index 00000000..75c4f9b9 --- /dev/null +++ b/package/libucontext/libucontext.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libucontext +# +################################################################################ + +LIBUCONTEXT_VERSION = 1.2 +LIBUCONTEXT_SITE = $(call github,kaniini,libucontext,libucontext-$(LIBUCONTEXT_VERSION)) +LIBUCONTEXT_LICENSE = ISC +LIBUCONTEXT_LICENSE_FILES = LICENSE +LIBUCONTEXT_INSTALL_STAGING = YES + +LIBUCONTEXT_CONF_OPTS = \ + -Dfreestanding=false \ + -Dexport_unprefixed=true + +$(eval $(meson-package)) diff --git a/package/libudfread/Config.in b/package/libudfread/Config.in new file mode 100644 index 00000000..c1f3f23a --- /dev/null +++ b/package/libudfread/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBUDFREAD + bool "libudfread" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_THREADS + help + UDF reader + + https://code.videolan.org/videolan/libudfread + +comment "libudfread needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_SYNC_4 && !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libudfread/libudfread.hash b/package/libudfread/libudfread.hash new file mode 100644 index 00000000..332b472d --- /dev/null +++ b/package/libudfread/libudfread.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 cd062016d78902da53a34c4d536479dbb70b2a05116354d46ead4d0c498ed375 libudfread-1.1.2.tar.bz2 +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/libudfread/libudfread.mk b/package/libudfread/libudfread.mk new file mode 100644 index 00000000..55d4fb8e --- /dev/null +++ b/package/libudfread/libudfread.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libudfread +# +################################################################################ + +LIBUDFREAD_VERSION = 1.1.2 +LIBUDFREAD_SOURCE = libudfread-$(LIBUDFREAD_VERSION).tar.bz2 +LIBUDFREAD_SITE = https://code.videolan.org/videolan/libudfread/-/archive/$(LIBUDFREAD_VERSION) +LIBUDFREAD_AUTORECONF = YES +LIBUDFREAD_INSTALL_STAGING = YES +LIBUDFREAD_LICENSE = LGPL-2.1+ +LIBUDFREAD_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/libuecc/Config.in b/package/libuecc/Config.in new file mode 100644 index 00000000..b7cd0450 --- /dev/null +++ b/package/libuecc/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBUECC + bool "libuecc" + depends on !BR2_STATIC_LIBS + help + Very small Elliptic Curve Cryptography library + + http://git.universe-factory.net/libuecc + +comment "libuecc needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/libuecc/libuecc.hash b/package/libuecc/libuecc.hash new file mode 100644 index 00000000..7ac5860c --- /dev/null +++ b/package/libuecc/libuecc.hash @@ -0,0 +1,3 @@ +# computed locally +sha256 465a6584c991c13fddf36700328c44fee9a3baff9025fb5f232b34d003d715e0 libuecc-7.tar.gz +sha256 ec4d9fcc3a37a7998a9ea4decf38f4c0c91a44fd05bb17638c52fe16f2b12e23 COPYRIGHT diff --git a/package/libuecc/libuecc.mk b/package/libuecc/libuecc.mk new file mode 100644 index 00000000..6251edb6 --- /dev/null +++ b/package/libuecc/libuecc.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# libuecc +# +################################################################################ + +LIBUECC_VERSION = 7 +LIBUECC_SITE = $(call github,neocturne,libuecc,v$(LIBUECC_VERSION)) +LIBUECC_LICENSE = BSD-2-Clause +LIBUECC_LICENSE_FILES = COPYRIGHT +LIBUECC_INSTALL_STAGING = YES + +$(eval $(cmake-package)) diff --git a/package/libuev/Config.in b/package/libuev/Config.in new file mode 100644 index 00000000..bb50099c --- /dev/null +++ b/package/libuev/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBUEV + bool "libuev" + help + Simple event loop for Linux. + + https://github.com/troglobit/libuev diff --git a/package/libuev/libuev.hash b/package/libuev/libuev.hash new file mode 100644 index 00000000..1b5a9fa7 --- /dev/null +++ b/package/libuev/libuev.hash @@ -0,0 +1,4 @@ +# From https://github.com/troglobit/libuev/releases/download/v2.4.1/libuev-2.4.1.tar.xz.sha256 +sha256 1d171c572ca48ddd6763f76c54e77d021d4ca7beb007610f7c1fec903511977b libuev-2.4.1.tar.xz +# License files +sha256 387d0d8e2aabf187751c8f1ebb9a4abaecaa7e0e05fead27f408193a0f0f17dd LICENSE diff --git a/package/libuev/libuev.mk b/package/libuev/libuev.mk new file mode 100644 index 00000000..432c3624 --- /dev/null +++ b/package/libuev/libuev.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libuev +# +################################################################################ + +LIBUEV_VERSION = 2.4.1 +LIBUEV_SOURCE = libuev-$(LIBUEV_VERSION).tar.xz +LIBUEV_SITE = https://github.com/troglobit/libuev/releases/download/v$(LIBUEV_VERSION) +LIBUEV_LICENSE = MIT +LIBUEV_LICENSE_FILES = LICENSE +LIBUEV_INSTALL_STAGING = YES +LIBUEV_CONF_OPTS = --disable-examples + +$(eval $(autotools-package)) diff --git a/package/libuhttpd/0001-add-compatibility-for-wolfssl-5-0.patch b/package/libuhttpd/0001-add-compatibility-for-wolfssl-5-0.patch new file mode 100644 index 00000000..7da7199e --- /dev/null +++ b/package/libuhttpd/0001-add-compatibility-for-wolfssl-5-0.patch @@ -0,0 +1,30 @@ +From 73aa4ef762b2de67bc8c7c260bd36b34fdb91e63 Mon Sep 17 00:00:00 2001 +From: "Sergey V. Lobanov" +Date: Mon, 3 Jan 2022 19:36:52 +0300 +Subject: [PATCH] add compatibility for wolfssl >= 5.0 + +NTRU support has been removed in wolfssl 5.0 so it is required to +mask NTRU specific code if wolfssl >= 5.0 + +Signed-off-by: Sergey V. Lobanov +[Retrieved from: +https://github.com/zhaojh329/ssl/commit/73aa4ef762b2de67bc8c7c260bd36b34fdb91e63] +Signed-off-by: Fabrice Fontaine +--- + openssl.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/ssl/openssl.c b/src/ssl/openssl.c +index 5a49267..278bab5 100644 +--- a/src/ssl/openssl.c ++++ b/src/ssl/openssl.c +@@ -336,7 +336,9 @@ static bool handle_wolfssl_asn_error(void *ssl, int r, + case ASN_SIG_HASH_E: + case ASN_SIG_KEY_E: + case ASN_DH_KEY_E: ++#if LIBWOLFSSL_VERSION_HEX < 0x05000000 + case ASN_NTRU_KEY_E: ++#endif + case ASN_CRIT_EXT_E: + case ASN_ALT_NAME_E: + case ASN_NO_PEM_HEADER: diff --git a/package/libuhttpd/0002-compatibility-for-openssl-3.0.patch b/package/libuhttpd/0002-compatibility-for-openssl-3.0.patch new file mode 100644 index 00000000..484d472b --- /dev/null +++ b/package/libuhttpd/0002-compatibility-for-openssl-3.0.patch @@ -0,0 +1,31 @@ +From d93e6426ec1d8c019bd302e4599f3b91ba95fb3b Mon Sep 17 00:00:00 2001 +From: Jianhui Zhao +Date: Fri, 29 Apr 2022 23:47:31 +0800 +Subject: [PATCH] compatibility for openssl >= 3.0 + +Signed-off-by: Jianhui Zhao + +Upstream: https://github.com/zhaojh329/ssl/commit/d93e6426ec1d8c019bd302e4599f3b91ba95fb3b + +Signed-off-by: Bernd Kuhls +--- + openssl.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/openssl.c b/openssl.c +index 278bab5..2169db1 100644 +--- a/src/ssl/openssl.c ++++ b/src/ssl/openssl.c +@@ -139,8 +139,11 @@ const char *ssl_last_error_string(char *buf, int len) + + if (ssl_err_code == SSL_ERROR_SSL) { + int used; +- ++#if OPENSSL_VERSION_MAJOR < 3 + ssl_err_code = ERR_peek_error_line_data(&file, &line, &data, &flags); ++#else ++ ssl_err_code = ERR_peek_error_all(&file, &line, NULL, &data, &flags); ++#endif + ERR_error_string_n(ssl_err_code, buf, len); + + used = strlen(buf); diff --git a/package/libuhttpd/0003-CMakeLists.txt-add-BUILD_WERROR-option.patch b/package/libuhttpd/0003-CMakeLists.txt-add-BUILD_WERROR-option.patch new file mode 100644 index 00000000..2e87014e --- /dev/null +++ b/package/libuhttpd/0003-CMakeLists.txt-add-BUILD_WERROR-option.patch @@ -0,0 +1,30 @@ +From c0f2260d8b7e435bce765e7ac91d51f1b349b87b Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 10 Mar 2024 13:43:12 +0100 +Subject: [PATCH] CMakeLists.txt: add BUILD_WERROR option + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/zhaojh329/libuhttpd/commit/c0f2260d8b7e435bce765e7ac91d51f1b349b87b +--- + CMakeLists.txt | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 6fb9651..6719e5f 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -7,7 +7,13 @@ include(CheckLibraryExists) + list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules/") + + add_definitions(-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64) +-add_compile_options(-O -Wall -Werror --std=gnu99) ++add_compile_options(-O -Wall --std=gnu99) ++ ++option(BUILD_WERROR "Build with -Werror" ON) ++ ++if(BUILD_WERROR) ++ add_compile_options(-Werror) ++endif() + + option(BUILD_STATIC "Build static library" OFF) + diff --git a/package/libuhttpd/Config.in b/package/libuhttpd/Config.in new file mode 100644 index 00000000..d89f4541 --- /dev/null +++ b/package/libuhttpd/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBUHTTPD + bool "libuhttpd" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + select BR2_PACKAGE_LIBEV + select BR2_PACKAGE_WOLFSSL_ALL if BR2_PACKAGE_WOLFSSL && \ + !BR2_STATIC_LIBS + help + A lightweight and fully asynchronous HTTP server + library based on libev + + https://github.com/zhaojh329/libuhttpd + +comment "libuhttpd needs a toolchain w/ gcc >= 4.9" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/libuhttpd/libuhttpd.hash b/package/libuhttpd/libuhttpd.hash new file mode 100644 index 00000000..e4fde4eb --- /dev/null +++ b/package/libuhttpd/libuhttpd.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 512d4abfced0ec916d985d3d1eac7528e6676eecae6aca27fdaf313374e29f16 libuhttpd-3.14.1.tar.gz +sha256 99efed4bbc0b62f96f999ef23399e38234fb91651af734fd389a52b033a85b55 LICENSE diff --git a/package/libuhttpd/libuhttpd.mk b/package/libuhttpd/libuhttpd.mk new file mode 100644 index 00000000..78e0f42b --- /dev/null +++ b/package/libuhttpd/libuhttpd.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# libuhttpd +# +################################################################################ + +LIBUHTTPD_VERSION = 3.14.1 +LIBUHTTPD_SITE = https://github.com/zhaojh329/libuhttpd/releases/download/v$(LIBUHTTPD_VERSION) +LIBUHTTPD_LICENSE = MIT +LIBUHTTPD_LICENSE_FILES = LICENSE +LIBUHTTPD_INSTALL_STAGING = YES +LIBUHTTPD_DEPENDENCIES = libev +LIBUHTTPD_CONF_OPTS = -DBUILD_WERROR=OFF + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBUHTTPD_DEPENDENCIES += openssl +LIBUHTTPD_CONF_OPTS += \ + -DSSL_SUPPORT=ON \ + -DUSE_MBEDTLS=OFF \ + -DUSE_OPENSSL=ON \ + -DUSE_WOLFSSL=OFF +else ifeq ($(BR2_PACKAGE_WOLFSSL_ALL),y) +LIBUHTTPD_DEPENDENCIES += wolfssl +LIBUHTTPD_CONF_OPTS += \ + -DSSL_SUPPORT=ON \ + -DUSE_MBEDTLS=OFF \ + -DUSE_OPENSSL=OFF \ + -DUSE_WOLFSSL=ON +else ifeq ($(BR2_PACKAGE_MBEDTLS),y) +LIBUHTTPD_DEPENDENCIES += mbedtls +LIBUHTTPD_CONF_OPTS += \ + -DSSL_SUPPORT=ON \ + -DUSE_MBEDTLS=ON \ + -DUSE_OPENSSL=OFF \ + -DUSE_WOLFSSL=OFF +else +LIBUHTTPD_CONF_OPTS += \ + -DSSL_SUPPORT=OFF +endif + +# BUILD_STATIC builds *only* the static lib, which is not what we want for +# BR2_SHARED_STATIC. +ifeq ($(BR2_STATIC_LIBS),y) +LIBUHTTPD_CONF_OPTS += -DBUILD_STATIC=ON +else +LIBUHTTPD_CONF_OPTS += -DBUILD_STATIC=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/libuio/0001-configure.ac-set-automake-strictness-to-foreign.patch b/package/libuio/0001-configure.ac-set-automake-strictness-to-foreign.patch new file mode 100644 index 00000000..1ce91f01 --- /dev/null +++ b/package/libuio/0001-configure.ac-set-automake-strictness-to-foreign.patch @@ -0,0 +1,31 @@ +From 546e07b2405455c03b7eb0d392c331e189913bc4 Mon Sep 17 00:00:00 2001 +From: Vincent Fazio +Date: Tue, 31 Jan 2023 19:06:29 -0600 +Subject: [PATCH] configure.ac: set automake strictness to foreign + +libuio does not conform to the GNU's strict layout requirements. [1] + +Set the strictness to foreign to account for this. + +[1] https://www.gnu.org/software/automake/manual/html_node/Strictness.html + +Signed-off-by: Vincent Fazio +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 101abd3..ef46171 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1,6 +1,6 @@ + dnl Every other copy of the package version number gets its value from here + AC_INIT(libuio, 0.2.8, https://github.com/linutronix/libuio/issues) +-AM_INIT_AUTOMAKE ++AM_INIT_AUTOMAKE([foreign]) + + AM_CONFIG_HEADER(config.h) + +-- +2.25.1 + diff --git a/package/libuio/Config.in b/package/libuio/Config.in new file mode 100644 index 00000000..97be1e3d --- /dev/null +++ b/package/libuio/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBUIO + bool "libuio" + select BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL + help + libuio is a light-weight C programming library to handle UIO + (Userspace I/O) device discovery and binding task. + + http://github.com/Linutronix/libuio diff --git a/package/libuio/libuio.hash b/package/libuio/libuio.hash new file mode 100644 index 00000000..48904a94 --- /dev/null +++ b/package/libuio/libuio.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 cb6d2ed1c6c7fd8e0e4a9cb1d81bd88f3af37bd239fdf8966b3cb3671ff6db86 libuio-6ef3d8d096a641686bfdd112035aa04aa16fe81a.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/libuio/libuio.mk b/package/libuio/libuio.mk new file mode 100644 index 00000000..d5019af5 --- /dev/null +++ b/package/libuio/libuio.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# libuio +# +################################################################################ + +LIBUIO_VERSION = 6ef3d8d096a641686bfdd112035aa04aa16fe81a +LIBUIO_SITE = $(call github,Linutronix,libuio,$(LIBUIO_VERSION)) +LIBUIO_LICENSE = LGPL-2.1 (library), GPL-2.0 (programs) +LIBUIO_LICENSE_FILES = COPYING +LIBUIO_CONF_OPTS = --with-glib=no --without-werror +LIBUIO_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) host-pkgconf +LIBUIO_LIBS = $(TARGET_NLS_LIBS) +LIBUIO_INSTALL_STAGING = YES + +# Fetched from github, no pre-generated configure script provided +LIBUIO_AUTOPOINT = YES +LIBUIO_AUTORECONF = YES + +# Avoid build issue when makeinfo is missing +LIBUIO_CONF_ENV += MAKEINFO=true + +ifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y) +LIBUIO_DEPENDENCIES += argp-standalone +LIBUIO_LIBS += -largp +endif + +LIBUIO_CONF_ENV += LIBS="$(LIBUIO_LIBS)" + +$(eval $(autotools-package)) diff --git a/package/libunibreak/Config.in b/package/libunibreak/Config.in new file mode 100644 index 00000000..101d621f --- /dev/null +++ b/package/libunibreak/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBUNIBREAK + bool "libunibreak" + help + libunibreak is an implementation of the line breaking and word + breaking algorithms as described in Unicode Standard Annex 14 + and Unicode Standard Annex 29. + + https://github.com/adah1972/libunibreak diff --git a/package/libunibreak/libunibreak.hash b/package/libunibreak/libunibreak.hash new file mode 100644 index 00000000..bb85f21c --- /dev/null +++ b/package/libunibreak/libunibreak.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 dd1a92d4c5646aa0e457ff41d89812ec5243863be6c20bbcb5ee380f3dd78377 libunibreak-5.1.tar.gz +sha256 0c57e2ec42ece17791a75d2f9b2f8e0663181be008667a507f765b3ef22522db LICENCE diff --git a/package/libunibreak/libunibreak.mk b/package/libunibreak/libunibreak.mk new file mode 100644 index 00000000..fa52116c --- /dev/null +++ b/package/libunibreak/libunibreak.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# libunibreak +# +################################################################################ + +LIBUNIBREAK_VERSION = 5.1 +LIBUNIBREAK_SITE = https://github.com/adah1972/libunibreak/releases/download/libunibreak_$(subst .,_,$(LIBUNIBREAK_VERSION)) +LIBUNIBREAK_INSTALL_STAGING = YES +LIBUNIBREAK_LICENSE = Zlib +LIBUNIBREAK_LICENSE_FILES = LICENCE + +$(eval $(autotools-package)) diff --git a/package/libunistring/Config.in b/package/libunistring/Config.in new file mode 100644 index 00000000..88fc6580 --- /dev/null +++ b/package/libunistring/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBUNISTRING + bool "libunistring" + depends on BR2_USE_WCHAR + help + The libunistring library provides functions for manipulating + Unicode strings and for manipulating C strings according to + the Unicode standard. + + http://www.gnu.org/software/libunistring/ + +comment "libunistring needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/package/libunistring/libunistring.hash b/package/libunistring/libunistring.hash new file mode 100644 index 00000000..256fb651 --- /dev/null +++ b/package/libunistring/libunistring.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +# https://ftp.gnu.org/gnu/libunistring/libunistring-1.2.tar.xz.sig +sha256 632bd65ed74a881ca8a0309a1001c428bd1cbd5cd7ddbf8cedcd2e65f4dcdc44 libunistring-1.2.tar.xz +# Locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING +sha256 a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c COPYING.LIB diff --git a/package/libunistring/libunistring.mk b/package/libunistring/libunistring.mk new file mode 100644 index 00000000..05bdec71 --- /dev/null +++ b/package/libunistring/libunistring.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libunistring +# +################################################################################ + +LIBUNISTRING_VERSION = 1.2 +LIBUNISTRING_SITE = $(BR2_GNU_MIRROR)/libunistring +LIBUNISTRING_SOURCE = libunistring-$(LIBUNISTRING_VERSION).tar.xz +LIBUNISTRING_INSTALL_STAGING = YES +LIBUNISTRING_LICENSE = LGPL-3.0+ or GPL-2.0 +LIBUNISTRING_LICENSE_FILES = COPYING COPYING.LIB +LIBUNISTRING_CPE_ID_VENDOR = gnu + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libunwind/Config.in b/package/libunwind/Config.in new file mode 100644 index 00000000..08f7f879 --- /dev/null +++ b/package/libunwind/Config.in @@ -0,0 +1,55 @@ +config BR2_PACKAGE_LIBUNWIND_MUSL_CONTEXT_REQUIRED + bool + default y + depends on !BR2_ARM_CPU_HAS_ARM + depends on !BR2_aarch64 + depends on !BR2_aarch64_be + depends on !BR2_mips + depends on !BR2_mipsel + depends on !BR2_mips64 + depends on !BR2_mips64el + depends on !BR2_riscv + depends on !BR2_x86_64 + depends on BR2_TOOLCHAIN_USES_MUSL + +# libunwind is only available for a certain subset of the +# architectures (as visible in the list of architectures supported +# with the glibc C library below). +# +# In addition to this, on some architectures libunwind requires the +# *context() function from the C library, which are only available on +# certain architectures in uClibc, and not available at all on +# musl. But on some other architectures, libunwind works without using +# the *context() functions, which allows it to be built with musl. +config BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS + bool + default y if BR2_TOOLCHAIN_USES_GLIBC && \ + (BR2_ARM_CPU_HAS_ARM || BR2_aarch64 || BR2_mips || BR2_mipsel || \ + BR2_mips64 || BR2_mips64el || BR2_powerpc || BR2_sh || \ + BR2_i386 || BR2_x86_64) + default y if BR2_TOOLCHAIN_USES_UCLIBC && \ + (BR2_ARM_CPU_HAS_ARM || BR2_mips || BR2_mipsel || \ + BR2_mips64 || BR2_mips64el || BR2_x86_64) + default y if BR2_TOOLCHAIN_USES_MUSL && \ + (!BR2_PACKAGE_LIBUNWIND_MUSL_CONTEXT_REQUIRED || \ + BR2_PACKAGE_LIBUCONTEXT_ARCH_SUPPORTS) + +config BR2_PACKAGE_LIBUNWIND + bool "libunwind" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C11 atomics + # forcefully links against libgcc_s, only available in dynamic + # linking configurations + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBUCONTEXT if BR2_TOOLCHAIN_USES_MUSL && \ + BR2_PACKAGE_LIBUNWIND_MUSL_CONTEXT_REQUIRED + help + C API to determine the call-chain of a program. + + http://www.nongnu.org/libunwind/index.html + +comment "libunwind needs a toolchain w/ threads, dynamic library, gcc >= 4.9" + depends on BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/libunwind/libunwind.hash b/package/libunwind/libunwind.hash new file mode 100644 index 00000000..512cc7b9 --- /dev/null +++ b/package/libunwind/libunwind.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +sha256 ddf0e32dd5fafe5283198d37e4bf9decf7ba1770b6e7e006c33e6df79e6a6157 libunwind-1.8.1.tar.gz + +# Hash for license file +sha256 6a0dbbdaec2b3136b7bf045586f4212bdf74e7af688bf9dfe9154607cf5ec156 COPYING diff --git a/package/libunwind/libunwind.mk b/package/libunwind/libunwind.mk new file mode 100644 index 00000000..3eb3b483 --- /dev/null +++ b/package/libunwind/libunwind.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# libunwind +# +################################################################################ + +LIBUNWIND_VERSION = 1.8.1 +LIBUNWIND_SITE = https://github.com/libunwind/libunwind/releases/download/v$(LIBUNWIND_VERSION) +LIBUNWIND_INSTALL_STAGING = YES +LIBUNWIND_LICENSE_FILES = COPYING +LIBUNWIND_LICENSE = MIT +LIBUNWIND_CPE_ID_VALID = YES + +LIBUNWIND_CONF_OPTS = \ + --disable-tests \ + $(if $(BR2_INSTALL_LIBSTDCPP),--enable-cxx-exceptions,--disable-cxx-exceptions) + +ifeq ($(BR2_PACKAGE_LIBUCONTEXT),y) +LIBUNWIND_DEPENDENCIES += libucontext +LIBUNWIND_CONF_OPTS += LIBS=-lucontext +endif + +$(eval $(autotools-package)) diff --git a/package/libupnp/Config.in b/package/libupnp/Config.in new file mode 100644 index 00000000..7c6c3760 --- /dev/null +++ b/package/libupnp/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBUPNP + bool "libupnp" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + The portable SDK for UPnP(tm) Devices (libupnp) provides + developers with an API and open source code for building + control points, devices, and bridges that are compliant with + Version 1.0 of the Universal Plug and Play Device Architecture + Specification + + http://pupnp.sourceforge.net/ + +comment "libupnp needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libupnp/libupnp.hash b/package/libupnp/libupnp.hash new file mode 100644 index 00000000..86437a73 --- /dev/null +++ b/package/libupnp/libupnp.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 b6423c573b758d09539f5e6c4712c1a9fd35dccf835f81d99473d50a50ad49b0 libupnp-1.14.19.tar.bz2 +sha256 c8b99423cad48bb44e2cf52a496361404290865eac259a82da6d1e4331ececb3 COPYING diff --git a/package/libupnp/libupnp.mk b/package/libupnp/libupnp.mk new file mode 100644 index 00000000..cd148d14 --- /dev/null +++ b/package/libupnp/libupnp.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# libupnp +# +################################################################################ + +LIBUPNP_VERSION = 1.14.19 +LIBUPNP_SOURCE = libupnp-$(LIBUPNP_VERSION).tar.bz2 +LIBUPNP_SITE = \ + http://downloads.sourceforge.net/project/pupnp/release-$(LIBUPNP_VERSION) +LIBUPNP_CONF_ENV = ac_cv_lib_compat_ftime=no +LIBUPNP_INSTALL_STAGING = YES +LIBUPNP_LICENSE = BSD-3-Clause +LIBUPNP_LICENSE_FILES = COPYING +LIBUPNP_CPE_ID_VALID = YES +LIBUPNP_DEPENDENCIES = host-pkgconf + +# Bind the internal miniserver socket with reuseaddr to allow clean restarts. +LIBUPNP_CONF_OPTS += \ + --disable-samples \ + --enable-reuseaddr + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBUPNP_CONF_OPTS += --enable-open-ssl +LIBUPNP_DEPENDENCIES += openssl +else +LIBUPNP_CONF_OPTS += --disable-open-ssl +endif + +$(eval $(autotools-package)) diff --git a/package/libupnpp/Config.in b/package/libupnpp/Config.in new file mode 100644 index 00000000..41afa930 --- /dev/null +++ b/package/libupnpp/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBUPNPP + bool "libupnpp" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # libnpupnp + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBNPUPNP + help + The libupnpp C++ library wraps libupnp for easier use by + upmpdcli and upplay. + + http://www.lesbonscomptes.com/upmpdcli/ + +comment "libupnpp needs a toolchain w/ C++, threads, gcc >= 4.9" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/libupnpp/libupnpp.hash b/package/libupnpp/libupnpp.hash new file mode 100644 index 00000000..5bc282f2 --- /dev/null +++ b/package/libupnpp/libupnpp.hash @@ -0,0 +1,5 @@ +# Hash from: http://www.lesbonscomptes.com/upmpdcli/downloads/libupnpp-0.21.0.tar.gz.sha256 +sha256 e43dbe5020ed25152aaec71b325dd80498e72038da5aeb50ed7dd51e213cd903 libupnpp-0.21.0.tar.gz + +# Hash for license file: +sha256 00a89b0d18aacd4114decf79122db87bf35bddaf2bc50e383c9c9f4c263390b2 COPYING diff --git a/package/libupnpp/libupnpp.mk b/package/libupnpp/libupnpp.mk new file mode 100644 index 00000000..fc76a43a --- /dev/null +++ b/package/libupnpp/libupnpp.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libupnpp +# +################################################################################ + +LIBUPNPP_VERSION = 0.21.0 +LIBUPNPP_SITE = http://www.lesbonscomptes.com/upmpdcli/downloads +LIBUPNPP_LICENSE = LGPL-2.1+ +LIBUPNPP_LICENSE_FILES = COPYING +LIBUPNPP_INSTALL_STAGING = YES +LIBUPNPP_DEPENDENCIES = host-pkgconf expat libcurl libnpupnp + +$(eval $(autotools-package)) diff --git a/package/liburcu/0001-Only-blacklist-ARM-gcc-4.8.0-and-4.8.1.patch b/package/liburcu/0001-Only-blacklist-ARM-gcc-4.8.0-and-4.8.1.patch new file mode 100644 index 00000000..554c4aba --- /dev/null +++ b/package/liburcu/0001-Only-blacklist-ARM-gcc-4.8.0-and-4.8.1.patch @@ -0,0 +1,42 @@ +From 54d8fe7ae40902d6d38e670f4024092f53c14e1f Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sat, 8 Mar 2014 13:19:14 +0100 +Subject: [PATCH] Only blacklist ARM gcc 4.8.0 and 4.8.1 + +Since many ARM toolchain providers include the bug fix for PR58854 in +their latest releases based on gcc-4.8.2, then only blacklist gcc 4.8.0 +and 4.8.1. + +Signed-off-by: Samuel Martin +[Fabrice: update for 0.13.0] +Signed-off-by: Fabrice Fontaine +--- + urcu/compiler.h | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/include/urcu/arch/arm.h b/include/urcu/arch/arm.h +index 1e30903..56115f1 100644 +--- a/include/urcu/arch/arm.h ++++ b/include/urcu/arch/arm.h +@@ -118,10 +118,17 @@ + */ + + /* ++ * Official gcc releases from 4.8.0 to 4.8.2 have the following bug, ++ * however, many arm toolchain providers have the included the fix for ++ * their latest 4.8.2 releases. ++ * So, we only blacklist gcc 4.8.0 and 4.8.1. ++ * Unfortunately, this bug is not easy to test, so we rely on the ++ * knowledge of the user on its compiler. ++ * + * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58854 + */ + #ifdef URCU_GCC_VERSION +-# if URCU_GCC_VERSION >= 40800 && URCU_GCC_VERSION <= 40802 ++# if URCU_GCC_VERSION >= 40800 && URCU_GCC_VERSION <= 40801 + # error Your gcc version produces clobbered frame accesses + # endif + #endif +-- +1.9.0 + diff --git a/package/liburcu/Config.in b/package/liburcu/Config.in new file mode 100644 index 00000000..5e8fd606 --- /dev/null +++ b/package/liburcu/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS + bool + default y + depends on BR2_arm || BR2_armeb || BR2_aarch64 || BR2_aarch64_be || \ + BR2_i386 || BR2_mips || BR2_mips64 || BR2_mipsel || \ + BR2_mips64el || BR2_nios2 || BR2_powerpc || BR2_powerpc64 || \ + BR2_powerpc64le || BR2_riscv || BR2_sparc64 || BR2_s390x || BR2_x86_64 + depends on BR2_USE_MMU # fork() in test + +config BR2_PACKAGE_LIBURCU + bool "liburcu" + depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + help + Userspace implementation of the Read-Copy-Update (RCU) + synchronization mechanism. This library is mainly used by + the LTTng tracing infrastructure, but can be used for other + purposes as well. + + On ARM, because of bug: + http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58854 + liburcu cannot be built using gcc 4.8.0, 4.8.1 or 4.8.2 + without the following bug fix: + http://gcc.gnu.org/viewcvs/gcc?view=revision&revision=204665 + + http://lttng.org/urcu + +comment "liburcu needs a toolchain w/ threads, C++" + depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_INSTALL_LIBSTDCPP diff --git a/package/liburcu/liburcu.hash b/package/liburcu/liburcu.hash new file mode 100644 index 00000000..a78b196e --- /dev/null +++ b/package/liburcu/liburcu.hash @@ -0,0 +1,8 @@ +# http://www.lttng.org/files/urcu/userspace-rcu-0.14.0.tar.bz2.sha256 +sha256 ca43bf261d4d392cff20dfae440836603bf009fce24fdc9b2697d837a2239d4f userspace-rcu-0.14.0.tar.bz2 + +# Hash for license files +sha256 36b6d3fa47916943fd5fec313c584784946047ec1337a78b440e5992cb595f89 lgpl-2.1.txt +sha256 8ef8121eddd2fc0779d94331a1d0f1ead9c796343d845e564cd8c8c4ae3d6f6e lgpl-relicensing.txt +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 gpl-2.0.txt +sha256 e8c070cb093be4b2eaf938a5f1c11621163b2d9cfa2790460cf925d81e442fa7 LICENSE diff --git a/package/liburcu/liburcu.mk b/package/liburcu/liburcu.mk new file mode 100644 index 00000000..bb5e2c0e --- /dev/null +++ b/package/liburcu/liburcu.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# liburcu +# +################################################################################ + +LIBURCU_VERSION = 0.14.0 +LIBURCU_SITE = http://lttng.org/files/urcu +LIBURCU_SOURCE = userspace-rcu-$(LIBURCU_VERSION).tar.bz2 +LIBURCU_LICENSE = LGPL-2.1+ (library), MIT-like (few source files listed in LICENSE), GPL-2.0+ (test), GPL-3.0 (few *.m4 files) +LIBURCU_LICENSE_FILES = lgpl-2.1.txt lgpl-relicensing.txt gpl-2.0.txt LICENSE + +LIBURCU_INSTALL_STAGING = YES + +# ac_cv_prog_cc_c99 is required for BR2_USE_WCHAR=n because the C99 test +# provided by autoconf relies on wchar_t. +LIBURCU_CONF_ENV = ac_cv_prog_cc_c99=-std=gnu99 + +$(eval $(autotools-package)) diff --git a/package/liburing/0001-liburing.pc.in-add-D_GNU_SOuRCE-to-Cflags.patch b/package/liburing/0001-liburing.pc.in-add-D_GNU_SOuRCE-to-Cflags.patch new file mode 100644 index 00000000..8fec4015 --- /dev/null +++ b/package/liburing/0001-liburing.pc.in-add-D_GNU_SOuRCE-to-Cflags.patch @@ -0,0 +1,38 @@ +From 9485c21f8f36a78a754ccba3c4ce30867af9655d Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 26 Jul 2024 09:13:16 +0200 +Subject: [PATCH] liburing.pc.in: add -D_GNU_SOuRCE to Cflags + +Add -D_GNU_SOURCE to Cflags to avoid the following musl build failure +with applications using liburing (e.g. libdex) raised since version 2.6 +and c427ed678f39fd144d784f2e970bd8c52f425e14 which reverted +c34070e08199491fe9653617364f4aea9b9b22be: + +In file included from ../src/dex-uring-aio-backend.c:29: +/home/autobuild/autobuild/instance-7/output-1/host/mips-buildroot-linux-musl/sysroot/usr/include/liburing.h:224:39: error: unknown type name 'cpu_set_t' + 224 | const cpu_set_t *mask); + | ^~~~~~~~~ +/home/autobuild/autobuild/instance-7/output-1/host/mips-buildroot-linux-musl/sysroot/usr/include/liburing.h:1212:48: error: unknown type name 'loff_t'; did you mean 'off_t'? + 1212 | int fd, loff_t len) + | ^~~~~~ + | off_t + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/axboe/liburing/commit/9485c21f8f36a78a754ccba3c4ce30867af9655d +--- + liburing.pc.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/liburing.pc.in b/liburing.pc.in +index 2c879b2..790c22e 100644 +--- a/liburing.pc.in ++++ b/liburing.pc.in +@@ -9,4 +9,4 @@ Description: io_uring library + URL: https://git.kernel.dk/cgit/liburing/ + + Libs: -L${libdir} -luring +-Cflags: -I${includedir} ++Cflags: -I${includedir} -D_GNU_SOURCE +-- +2.43.0 + diff --git a/package/liburing/Config.in b/package/liburing/Config.in new file mode 100644 index 00000000..fc13f1c1 --- /dev/null +++ b/package/liburing/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBURING + bool "liburing" + depends on BR2_USE_MMU # madvise() + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C11/stdatomic.h + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1 + help + This is the io_uring library, liburing. liburing provides + helpers to setup and teardown io_uring instances, and also a + simplified interface for applications that don't need (or + want) to deal with the full kernel side implementation. + + https://git.kernel.dk/cgit/liburing + +comment "liburing needs a toolchain w/ gcc >= 4.9, headers >= 5.1" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1 diff --git a/package/liburing/liburing.hash b/package/liburing/liburing.hash new file mode 100644 index 00000000..f06dd187 --- /dev/null +++ b/package/liburing/liburing.hash @@ -0,0 +1,8 @@ +# Locally calculated +sha256 78bcc0dc0d004a238d8b5f597adbb4ec74926352a3983b872db7f0efdb72565d liburing-2.6.tar.bz2 + +# Hash for license files +sha256 592987e8510228d546540b84a22444bde98e48d03078d3b2eefcd889bec5ce8c COPYING +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING.GPL +sha256 2ec12f7934cdfce25ff72b0557738989d79fc7a496d1cf9b2d3f9464fd61edbe LICENSE +sha256 b0731ca09e6f4718d456a989d32b6c61bf27e5d4bab6ca31e409d75c5120d19e README diff --git a/package/liburing/liburing.mk b/package/liburing/liburing.mk new file mode 100644 index 00000000..fc3993b3 --- /dev/null +++ b/package/liburing/liburing.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# liburing +# +################################################################################ + +LIBURING_VERSION = 2.6 +LIBURING_SOURCE = liburing-$(LIBURING_VERSION).tar.bz2 +LIBURING_SITE = https://git.kernel.dk/cgit/liburing/snapshot +LIBURING_LICENSE = (GPL-2.0 with exceptions and LGPL-2.1+) or MIT +LIBURING_LICENSE_FILES = COPYING COPYING.GPL LICENSE README +LIBURING_INSTALL_STAGING = YES + +define LIBURING_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_IO_URING) +endef + +ifeq ($(BR2_STATIC_LIBS),y) +LIBURING_MAKE_OPTS += ENABLE_SHARED=0 +else +LIBURING_MAKE_OPTS += ENABLE_SHARED=1 +endif + +define LIBURING_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure) +endef + +define LIBURING_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(LIBURING_MAKE_OPTS) -C $(@D)/src +endef + +define LIBURING_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(LIBURING_MAKE_OPTS) -C $(@D) \ + DESTDIR=$(STAGING_DIR) install +endef + +define LIBURING_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(LIBURING_MAKE_OPTS) -C $(@D) \ + DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/liburiparser/Config.in b/package/liburiparser/Config.in new file mode 100644 index 00000000..b39e3907 --- /dev/null +++ b/package/liburiparser/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBURIPARSER + bool "liburiparser" + help + uriparser is a strictly RFC 3986 compliant URI parsing and + handling library written in C. + + https://uriparser.github.io diff --git a/package/liburiparser/liburiparser.hash b/package/liburiparser/liburiparser.hash new file mode 100644 index 00000000..f2e33178 --- /dev/null +++ b/package/liburiparser/liburiparser.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1d71c054837ea32a31e462bce5a1af272379ecf511e33448e88100b87ff73b2e uriparser-0.9.8.tar.xz +sha256 287f09e6546a9610f949f89e8fb937cacfeabd7bfaa8c8a0c18312193bf04ad3 COPYING diff --git a/package/liburiparser/liburiparser.mk b/package/liburiparser/liburiparser.mk new file mode 100644 index 00000000..b0ba8c38 --- /dev/null +++ b/package/liburiparser/liburiparser.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# liburiparser +# +################################################################################ + +LIBURIPARSER_VERSION = 0.9.8 +LIBURIPARSER_SOURCE = uriparser-$(LIBURIPARSER_VERSION).tar.xz +LIBURIPARSER_SITE = https://github.com/uriparser/uriparser/releases/download/uriparser-$(LIBURIPARSER_VERSION) +LIBURIPARSER_LICENSE = BSD-3-Clause +LIBURIPARSER_LICENSE_FILES = COPYING +LIBURIPARSER_CPE_ID_VENDOR = uriparser_project +LIBURIPARSER_CPE_ID_PRODUCT = uriparser +LIBURIPARSER_INSTALL_STAGING = YES +LIBURIPARSER_CONF_OPTS = -DURIPARSER_BUILD_DOCS=OFF -DURIPARSER_BUILD_TESTS=OFF + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +LIBURIPARSER_CONF_OPTS += -DBUILD_SHARED_LIBS=ON +else +LIBURIPARSER_CONF_OPTS += -DBUILD_SHARED_LIBS=OFF +endif + +ifeq ($(BR2_USE_WCHAR),) +LIBURIPARSER_CONF_OPTS += -DURIPARSER_BUILD_WCHAR_T=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/libusb-compat/Config.in b/package/libusb-compat/Config.in new file mode 100644 index 00000000..076d7b8d --- /dev/null +++ b/package/libusb-compat/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBUSB_COMPAT + bool "libusb-compat" + depends on BR2_PACKAGE_LIBUSB + help + libusb-0.1 compatibility layer for libusb-1.0. + + http://libusb.info/ diff --git a/package/libusb-compat/libusb-compat.hash b/package/libusb-compat/libusb-compat.hash new file mode 100644 index 00000000..b22fa543 --- /dev/null +++ b/package/libusb-compat/libusb-compat.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 d199c173fd3cd9d27c7f4bb6608befc7eb761984e6664da7d9d4386ff66fe6fc libusb-compat-0.1.8.tar.gz +sha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a COPYING diff --git a/package/libusb-compat/libusb-compat.mk b/package/libusb-compat/libusb-compat.mk new file mode 100644 index 00000000..b54dbded --- /dev/null +++ b/package/libusb-compat/libusb-compat.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# libusb-compat +# +################################################################################ + +LIBUSB_COMPAT_VERSION_MAJOR = 0.1 +LIBUSB_COMPAT_VERSION = $(LIBUSB_COMPAT_VERSION_MAJOR).8 +LIBUSB_COMPAT_SITE = https://github.com/libusb/libusb-compat-0.1/releases/download/v$(LIBUSB_COMPAT_VERSION) +LIBUSB_COMPAT_DEPENDENCIES = host-pkgconf libusb +HOST_LIBUSB_COMPAT_DEPENDENCIES = host-pkgconf host-libusb +LIBUSB_COMPAT_INSTALL_STAGING = YES +LIBUSB_COMPAT_CONFIG_SCRIPTS = libusb-config +LIBUSB_COMPAT_LICENSE = LGPL-2.1+ +LIBUSB_COMPAT_LICENSE_FILES = COPYING + +ifeq ($(BR2_STATIC_LIBS),) +LIBUSB_COMPAT_CONF_ENV += \ + LIBUSB_1_0_SONAME=`LC_ALL=C readelf -d $(STAGING_DIR)/usr/lib/libusb-1.0.so \ + |sed -r -e '/\(SONAME\)/!d; s/.*\[(.+)\]$$/\1/'` +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libusb/Config.in b/package/libusb/Config.in new file mode 100644 index 00000000..5a04ac12 --- /dev/null +++ b/package/libusb/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_LIBUSB + bool "libusb" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # _Thread_local + help + Userspace library for accessing USB devices + + http://libusb.info/ + +if BR2_PACKAGE_LIBUSB + +config BR2_PACKAGE_LIBUSB_EXAMPLES + bool "build libusb examples" + +endif + +comment "libusb needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/libusb/libusb.hash b/package/libusb/libusb.hash new file mode 100644 index 00000000..8ca68f03 --- /dev/null +++ b/package/libusb/libusb.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 ffaa41d741a8a3bee244ac8e54a72ea05bf2879663c098c82fc5757853441575 libusb-1.0.27.tar.bz2 +sha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a COPYING diff --git a/package/libusb/libusb.mk b/package/libusb/libusb.mk new file mode 100644 index 00000000..15649a2a --- /dev/null +++ b/package/libusb/libusb.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# libusb +# +################################################################################ + +LIBUSB_VERSION_MAJOR = 1.0 +LIBUSB_VERSION = $(LIBUSB_VERSION_MAJOR).27 +LIBUSB_SOURCE = libusb-$(LIBUSB_VERSION).tar.bz2 +LIBUSB_SITE = https://github.com/libusb/libusb/releases/download/v$(LIBUSB_VERSION) +LIBUSB_LICENSE = LGPL-2.1+ +LIBUSB_LICENSE_FILES = COPYING +LIBUSB_CPE_ID_VENDOR = libusb +LIBUSB_DEPENDENCIES = host-pkgconf +LIBUSB_INSTALL_STAGING = YES + +# Avoid the discovery of udev for the host variant +HOST_LIBUSB_CONF_OPTS = --disable-udev +HOST_LIBUSB_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +LIBUSB_DEPENDENCIES += udev +else +LIBUSB_CONF_OPTS += --disable-udev +endif + +ifeq ($(BR2_PACKAGE_LIBUSB_EXAMPLES),y) +LIBUSB_CONF_OPTS += --enable-examples-build +define LIBUSB_INSTALL_TARGET_EXAMPLES + $(foreach example,listdevs xusb fxload hotplugtest testlibusb dpfp dpfp_threaded sam3u_benchmark, + $(INSTALL) -D -m0755 $(@D)/examples/$(example) $(TARGET_DIR)/usr/bin/$(example) + ) +endef +LIBUSB_POST_INSTALL_TARGET_HOOKS += LIBUSB_INSTALL_TARGET_EXAMPLES +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libusbgx/Config.in b/package/libusbgx/Config.in new file mode 100644 index 00000000..09a2b8f1 --- /dev/null +++ b/package/libusbgx/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBUSBGX + bool "libusbgx" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBCONFIG + help + libusbgx is a C library encapsulating the kernel USB + gadget-configfs userspace API functionality. + + https://github.com/linux-usb-gadgets/libusbgx + +comment "libusbgx needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libusbgx/libusbgx.hash b/package/libusbgx/libusbgx.hash new file mode 100644 index 00000000..b1825897 --- /dev/null +++ b/package/libusbgx/libusbgx.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 d0b483d8b190a75a1f9b52d6db229de5580c78b201077361a524cf32c5aad517 libusbgx-a5bfa81017a9b2064bc449cf74f5f9d106445f62.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPL diff --git a/package/libusbgx/libusbgx.mk b/package/libusbgx/libusbgx.mk new file mode 100644 index 00000000..03e8dff6 --- /dev/null +++ b/package/libusbgx/libusbgx.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libusbgx +# +################################################################################ + +LIBUSBGX_VERSION = a5bfa81017a9b2064bc449cf74f5f9d106445f62 +LIBUSBGX_SITE = $(call github,linux-usb-gadgets,libusbgx,$(LIBUSBGX_VERSION)) +LIBUSBGX_LICENSE = GPL-2.0+ (examples), LGPL-2.1+ (library) +LIBUSBGX_LICENSE_FILES = COPYING COPYING.LGPL +LIBUSBGX_DEPENDENCIES = host-pkgconf libconfig +LIBUSBGX_AUTORECONF = YES +LIBUSBGX_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/libutempter/0001-force-symlink-creation.patch b/package/libutempter/0001-force-symlink-creation.patch new file mode 100644 index 00000000..c30928af --- /dev/null +++ b/package/libutempter/0001-force-symlink-creation.patch @@ -0,0 +1,36 @@ +From 13e0a4ca67d860bc8f1e3b2ad6a3926758d76b47 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Wed, 22 Nov 2023 14:09:13 -0700 +Subject: [PATCH] force symlink creation + +Force symlink creation to avoid errors when reinstalling + +Upstream: https://github.com/altlinux/libutempter/pull/5 +Signed-off-by: Adam Duskett +--- + Makefile | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/Makefile b/Makefile +index 8c90121..1cfc627 100644 +--- a/Makefile ++++ b/Makefile +@@ -83,12 +83,12 @@ install: + $(INSTALL) -p -m644 $(PROJECT).h $(DESTDIR)$(includedir)/ + $(INSTALL) -p -m755 $(SHAREDLIB) $(DESTDIR)$(libdir)/$(SHAREDLIB).$(VERSION) + $(INSTALL) -p -m644 $(STATICLIB) $(DESTDIR)$(libdir)/ +- ln -s $(SHAREDLIB).$(VERSION) $(DESTDIR)$(libdir)/$(SONAME) +- ln -s $(SONAME) $(DESTDIR)$(libdir)/$(SHAREDLIB) ++ ln -sf $(SHAREDLIB).$(VERSION) $(DESTDIR)$(libdir)/$(SONAME) ++ ln -sf $(SONAME) $(DESTDIR)$(libdir)/$(SHAREDLIB) + $(INSTALL) -p -m644 $(PROJECT).3 $(DESTDIR)$(man3dir)/ + for n in lib$(PROJECT) utempter_add_record utempter_remove_record \ + utempter_remove_added_record utempter_set_helper; do \ +- ln -s $(PROJECT).3 $(DESTDIR)$(man3dir)/$$n.3; \ ++ ln -sf $(PROJECT).3 $(DESTDIR)$(man3dir)/$$n.3; \ + done + + clean: +-- +2.42.0 + diff --git a/package/libutempter/Config.in b/package/libutempter/Config.in new file mode 100644 index 00000000..5b79c1e4 --- /dev/null +++ b/package/libutempter/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBUTEMPTER + bool "libutempter" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 + depends on !BR2_STATIC_LIBS + help + The libutempter library provides interface for terminal + emulators such as screen and xterm to record user + sessions to utmp and wtmp files. + + http://ftp.altlinux.org/pub/people/ldv/utempter/ + +comment "libutempter needs a toolchain w/ headers >= 4.14, dynamic library" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 || BR2_STATIC_LIBS diff --git a/package/libutempter/libutempter.hash b/package/libutempter/libutempter.hash new file mode 100644 index 00000000..53a6c6db --- /dev/null +++ b/package/libutempter/libutempter.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 967fef372f391de501843ad87570c6cf5dabd9651f00f1783090fbc12b2a34cb libutempter-1.2.1.tar.gz +sha256 ce64d5f7b49ea6d80fdb6d4cdee6839d1a94274f7493dc797c3b55b65ec8e9ed COPYING diff --git a/package/libutempter/libutempter.mk b/package/libutempter/libutempter.mk new file mode 100644 index 00000000..aad98126 --- /dev/null +++ b/package/libutempter/libutempter.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# libutempter +# +################################################################################ + +LIBUTEMPTER_VERSION = 1.2.1 +LIBUTEMPTER_SITE = ftp.altlinux.org/pub/people/ldv/utempter +LIBUTEMPTER_INSTALL_STAGING = YES +LIBUTEMPTER_LICENSE = LGPL-2.1+ +LIBUTEMPTER_LICENSE_FILES = COPYING + +define LIBUTEMPTER_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + COMPILE_PIE= LINK_PIE= +endef + +define LIBUTEMPTER_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \ + $(MAKE) DESTDIR=$(STAGING_DIR) PREFIX=/usr -C $(@D)/ install +endef + +define LIBUTEMPTER_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \ + $(MAKE) DESTDIR=$(TARGET_DIR) PREFIX=/usr -C $(@D)/ install +endef + +$(eval $(generic-package)) diff --git a/package/libutp/Config.in b/package/libutp/Config.in new file mode 100644 index 00000000..63829131 --- /dev/null +++ b/package/libutp/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBUTP + bool "libutp" + depends on BR2_INSTALL_LIBSTDCPP + help + uTorrent Transport Protocol library + + https://github.com/bittorrent/libutp + +comment "libutp support needs a toolchain with C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/libutp/libutp.hash b/package/libutp/libutp.hash new file mode 100644 index 00000000..0312f426 --- /dev/null +++ b/package/libutp/libutp.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 d856fde68828d52eb39df40e15ad5dc4efaa9a51d4121bcbfbe47fed2163d20a libutp-c95738b1a6644b919e5b64d3ea9736cfc5894e0b.tar.gz +sha256 73b400bf61dde52223dae1642205ca187f1a6b24a508dcce52bf386c27a0e58c LICENSE diff --git a/package/libutp/libutp.mk b/package/libutp/libutp.mk new file mode 100644 index 00000000..df061755 --- /dev/null +++ b/package/libutp/libutp.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libutp +# +################################################################################ + +LIBUTP_VERSION = c95738b1a6644b919e5b64d3ea9736cfc5894e0b +LIBUTP_SITE = $(call github,transmission,libutp,$(LIBUTP_VERSION)) +LIBUTP_LICENSE = MIT +LIBUTP_LICENSE_FILES = LICENSE +LIBUTP_INSTALL_STAGING = YES +LIBUTP_CONF_OPTS = -DLIBUTP_ENABLE_WERROR=OFF + +$(eval $(cmake-package)) diff --git a/package/libuv/Config.in b/package/libuv/Config.in new file mode 100644 index 00000000..e23b2c5f --- /dev/null +++ b/package/libuv/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LIBUV + bool "libuv" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # pthread_barrier_* + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C11/stdatomic.h + help + libuv is a multi-platform support library with a focus + on asynchronous I/O. + + https://github.com/libuv/libuv + +comment "libuv needs a toolchain w/ NPTL, dynamic library, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 diff --git a/package/libuv/libuv.hash b/package/libuv/libuv.hash new file mode 100644 index 00000000..2ca8f64a --- /dev/null +++ b/package/libuv/libuv.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 c593139feb9061699fdd2f7fde47bb6c1ca77761ae9ec04f052083f1ef46c13b libuv-v1.48.0-dist.tar.gz +sha256 16de0c32b265cb7d46a6d3bd614f259dd4d693a5e26b3407b04aae8d73041f0c LICENSE +sha256 262c44bd2cdba037e6d2a82fba15f5800d292bc993a6f5d6b6ea487744d02836 LICENSE-extra diff --git a/package/libuv/libuv.mk b/package/libuv/libuv.mk new file mode 100644 index 00000000..5f96e98a --- /dev/null +++ b/package/libuv/libuv.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# libuv +# +################################################################################ + +# When bumping libuv, check if a new version of uvw is available +# and bump it too. +LIBUV_VERSION = 1.48.0 +LIBUV_SOURCE = libuv-v$(LIBUV_VERSION)-dist.tar.gz +LIBUV_SITE = https://dist.libuv.org/dist/v$(LIBUV_VERSION) +LIBUV_DEPENDENCIES = host-pkgconf +LIBUV_INSTALL_STAGING = YES +LIBUV_LICENSE = BSD-2-Clause, BSD-3-Clause, ISC, MIT +LIBUV_LICENSE_FILES = LICENSE LICENSE-extra +LIBUV_CPE_ID_VENDOR = libuv + +$(eval $(autotools-package)) diff --git a/package/libuwsc/0001-CMakeLists.txt-add-BUILD_EXAMPLE.patch b/package/libuwsc/0001-CMakeLists.txt-add-BUILD_EXAMPLE.patch new file mode 100644 index 00000000..87f343a9 --- /dev/null +++ b/package/libuwsc/0001-CMakeLists.txt-add-BUILD_EXAMPLE.patch @@ -0,0 +1,34 @@ +From bb71b21eb9407479ad729b3c858b0fc350fae335 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 21 Feb 2021 19:39:59 +0100 +Subject: [PATCH] CMakeLists.txt: add BUILD_EXAMPLE + +Allow the user to disable example + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/zhaojh329/libuwsc/commit/bb71b21eb9407479ad729b3c858b0fc350fae335 +Signed-off-by: Yann E. MORIN +--- + CMakeLists.txt | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 110d933..c52ab79 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -2,7 +2,11 @@ cmake_minimum_required(VERSION 2.8) + + project(libuwsc C) + ++option(BUILD_EXAMPLE "Build example" ON) ++ + list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules/") + + add_subdirectory(src) +-add_subdirectory(example) ++if(BUILD_EXAMPLE) ++ add_subdirectory(example) ++endif() +-- +2.25.1 + diff --git a/package/libuwsc/0002-fix-bad-indentation.patch b/package/libuwsc/0002-fix-bad-indentation.patch new file mode 100644 index 00000000..77cae92c --- /dev/null +++ b/package/libuwsc/0002-fix-bad-indentation.patch @@ -0,0 +1,26 @@ +From 8cb416140741a596235b8acc46b2b119b13ebfab Mon Sep 17 00:00:00 2001 +From: Rosen Penev +Date: Tue, 6 Jul 2021 21:01:52 -0700 +Subject: [PATCH] fix bad indentation + +Fixes error with GCC11. + +Upstream: https://github.com/zhaojh329/libuwsc/commit/8cb416140741a596235b8acc46b2b119b13ebfab +Signed-off-by: Fabrice Fontaine +--- + src/lua/uwsc_lua.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/lua/uwsc_lua.c b/src/lua/uwsc_lua.c +index de6932e..84689fe 100644 +--- a/src/lua/uwsc_lua.c ++++ b/src/lua/uwsc_lua.c +@@ -178,7 +178,7 @@ static int uwsc_lua_on(lua_State *L) + else + luaL_argcheck(L, false, 2, "available event name: open message error close"); + +- return 0; ++ return 0; + } + + static int __uwsc_lua_send(lua_State *L, int op) diff --git a/package/libuwsc/0003-src-ssl.c-fix-wolfssl-build.patch b/package/libuwsc/0003-src-ssl.c-fix-wolfssl-build.patch new file mode 100644 index 00000000..4c652a63 --- /dev/null +++ b/package/libuwsc/0003-src-ssl.c-fix-wolfssl-build.patch @@ -0,0 +1,37 @@ +From 1c3579e99163a13d622c3ef44088c23d5eea306d Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 14 Jan 2024 16:44:13 +0100 +Subject: [PATCH] src/ssl.c: fix wolfssl build + +wolfssl/options.h must also be included by clients to avoid the +following build failure because OPENSSL_ALL won't be defined: + +/home/autobuild/autobuild/instance-6/output-1/build/libuwsc-3.3.5/src/ssl.c:62:5: error: unknown type name 'SSL_CTX' + 62 | SSL_CTX *ctx; + | ^~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/edc49cce5b1f456d980841f4c315e7cd784b1561 + +Signed-off-by: Fabrice Fontaine +Upstream: N/A (already fixed by +https://github.com/zhaojh329/ssl/commit/c40ebcd7b4277321acbbd4b00b4b10fd363c7a97) +--- + src/ssl.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/ssl.c b/src/ssl.c +index 3640022..6a3d250 100644 +--- a/src/ssl.c ++++ b/src/ssl.c +@@ -54,6 +54,7 @@ struct uwsc_ssl_ctx { + #include + #elif UWSC_HAVE_WOLFSSL + #define WC_NO_HARDEN ++#include + #include + #include + #endif +-- +2.43.0 + diff --git a/package/libuwsc/Config.in b/package/libuwsc/Config.in new file mode 100644 index 00000000..ae99b6d2 --- /dev/null +++ b/package/libuwsc/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBUWSC + bool "libuwsc" + select BR2_PACKAGE_LIBEV + help + A Lightweight and fully asynchronous WebSocket client + library based on libev. + + https://github.com/zhaojh329/libuwsc diff --git a/package/libuwsc/libuwsc.hash b/package/libuwsc/libuwsc.hash new file mode 100644 index 00000000..f99dfb4c --- /dev/null +++ b/package/libuwsc/libuwsc.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a06b7324671e181ffe3165e93e6f94c7ac1380f69e32a52e80c8da7016acd60d libuwsc-3.3.5.tar.gz +sha256 99efed4bbc0b62f96f999ef23399e38234fb91651af734fd389a52b033a85b55 LICENSE diff --git a/package/libuwsc/libuwsc.mk b/package/libuwsc/libuwsc.mk new file mode 100644 index 00000000..051ea411 --- /dev/null +++ b/package/libuwsc/libuwsc.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# libuwsc +# +################################################################################ + +LIBUWSC_VERSION = 3.3.5 +LIBUWSC_SITE = https://github.com/zhaojh329/libuwsc/releases/download/v$(LIBUWSC_VERSION) +LIBUWSC_LICENSE = MIT +LIBUWSC_LICENSE_FILES = LICENSE +LIBUWSC_INSTALL_STAGING = YES +LIBUWSC_DEPENDENCIES = libev + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBUWSC_DEPENDENCIES += openssl +LIBUWSC_CONF_OPTS += \ + -DUWSC_SSL_SUPPORT=ON \ + -DUWSC_USE_MBEDTLS=OFF \ + -DUWSC_USE_OPENSSL=ON \ + -DUWSC_USE_WOLFSSL=OFF +else ifeq ($(BR2_PACKAGE_WOLFSSL_ALL),y) +LIBUWSC_DEPENDENCIES += wolfssl +LIBUWSC_CONF_OPTS += \ + -DUWSC_SSL_SUPPORT=ON \ + -DUWSC_USE_MBEDTLS=OFF \ + -DUWSC_USE_OPENSSL=OFF \ + -DUWSC_USE_WOLFSSL=ON +else ifeq ($(BR2_PACKAGE_MBEDTLS),y) +LIBUWSC_DEPENDENCIES += mbedtls +LIBUWSC_CONF_OPTS += \ + -DUWSC_SSL_SUPPORT=ON \ + -DUWSC_USE_MBEDTLS=ON \ + -DUWSC_USE_OPENSSL=OFF \ + -DUWSC_USE_WOLFSSL=OFF +else +LIBUWSC_CONF_OPTS += -DUWSC_SSL_SUPPORT=OFF +endif + +ifeq ($(BR2_PACKAGE_LUA):$(BR2_STATIC_LIBS),y:) +LIBUWSC_DEPENDENCIES += lua +LIBUWSC_CONF_OPTS += -DUWSC_LUA_SUPPORT=ON +else +LIBUWSC_CONF_OPTS += -DUWSC_LUA_SUPPORT=OFF +endif + +# BUILD_SHARED_LIBS is handled in pkg-cmake.mk as it is a generic cmake variable +ifeq ($(BR2_SHARED_STATIC_LIBS),y) +LIBUWSC_CONF_OPTS += -DBUILD_STATIC_LIBS=ON +else ifeq ($(BR2_SHARED_LIBS),y) +LIBUWSC_CONF_OPTS += -DBUILD_STATIC_LIBS=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/libv4l/Config.in b/package/libv4l/Config.in new file mode 100644 index 00000000..c88f280c --- /dev/null +++ b/package/libv4l/Config.in @@ -0,0 +1,46 @@ +config BR2_PACKAGE_LIBV4L + bool "libv4l" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 # media headers + select BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + libv4l is a collection of libraries which adds a thin + abstraction layer on top of video4linux2 devices. libv4l + consists of 3 different libraries: libv4lconvert, libv4l1 and + libv4l2. + + http://linuxtv.org/wiki/index.php/V4l-utils + +if BR2_PACKAGE_LIBV4L + +comment "libv4l JPEG support not enabled" + depends on !BR2_PACKAGE_JPEG + +config BR2_PACKAGE_LIBV4L_UTILS + bool "v4l-utils tools" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + help + v4l-utils is a collection of various video4linux and DVB + utilities. + Enable this if you want to build the following tools: + - cx18-ctl + - dvb-fe-tool, dvbv5-zap, dvbv5-scan, dvb-format-convert + - decode_tm6000 + - ir-keytable + - media-ctl + - v4l2-compliance + - v4l2-ctl, cx18-ctl, ivtv-ctl + - v4l2-sysfs-path + - rds-ctl + - qv4l2 (if Qt is enabled) + +comment "v4l-utils tools needs a toolchain w/ C++11" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +endif + +comment "libv4l needs a toolchain w/ threads, C++ and headers >= 3.0" + depends on !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 diff --git a/package/libv4l/libv4l.hash b/package/libv4l/libv4l.hash new file mode 100644 index 00000000..4f694de3 --- /dev/null +++ b/package/libv4l/libv4l.hash @@ -0,0 +1,9 @@ +# Locally calculated after checking signature +# https://linuxtv.org/downloads/v4l-utils/v4l-utils-1.20.0.tar.bz2.asc +# with key 05D0169C26E41593418129DF199A64FADFB500FF +sha256 cbb7fe8a6307f5ce533a05cded70bb93c3ba06395ab9b6d007eb53b75d805f5b v4l-utils-1.24.1.tar.bz2 + +# Locally calculated +sha256 391e4da1c54a422a78d83be7bf84b2dfb8bacdd8ad256fa4374e128655584a8a COPYING +sha256 5a7f623a50e384aaf6d2ced068339ddf93d0a50d3a0ecbe86f125b07804ecc78 COPYING.libv4l +sha256 34229b5aadfb768d0d083987cba54203a920904a3ec8320823c6125b9831acd1 lib/libv4l1/libv4l1-kernelcode-license.txt diff --git a/package/libv4l/libv4l.mk b/package/libv4l/libv4l.mk new file mode 100644 index 00000000..1142a744 --- /dev/null +++ b/package/libv4l/libv4l.mk @@ -0,0 +1,88 @@ +################################################################################ +# +# libv4l +# +################################################################################ + +LIBV4L_VERSION = 1.24.1 +LIBV4L_SOURCE = v4l-utils-$(LIBV4L_VERSION).tar.bz2 +LIBV4L_SITE = https://linuxtv.org/downloads/v4l-utils +LIBV4L_INSTALL_STAGING = YES +LIBV4L_DEPENDENCIES = host-pkgconf +LIBV4L_CONF_OPTS = --disable-doxygen-doc --disable-qvidcap --disable-v4l2-tracer +# needed to get utils/qv4l link flags right +LIBV4L_AUTORECONF = YES +# add host-gettext for AM_ICONV macro +LIBV4L_DEPENDENCIES += host-gettext + +# fix uclibc-ng configure/compile +LIBV4L_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' + +# v4l-utils components have different licences, see v4l-utils.spec for details +LIBV4L_LICENSE = GPL-2.0+ (utilities), LGPL-2.1+ (libraries) +LIBV4L_LICENSE_FILES = COPYING COPYING.libv4l lib/libv4l1/libv4l1-kernelcode-license.txt + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +LIBV4L_DEPENDENCIES += alsa-lib +endif + +ifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y) +LIBV4L_DEPENDENCIES += argp-standalone $(TARGET_NLS_DEPENDENCIES) +LIBV4L_CONF_ENV += LIBS=$(TARGET_NLS_LIBS) +endif + +LIBV4L_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBICONV),libiconv) + +ifeq ($(BR2_PACKAGE_JPEG),y) +LIBV4L_DEPENDENCIES += jpeg +LIBV4L_CONF_OPTS += --with-jpeg +else +LIBV4L_CONF_OPTS += --without-jpeg +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +LIBV4L_DEPENDENCIES += libgl +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +LIBV4L_CONF_OPTS += --with-libudev --with-udevdir=/usr/lib/udev +LIBV4L_DEPENDENCIES += udev +else +LIBV4L_CONF_OPTS += --without-libudev +endif + +ifeq ($(BR2_PACKAGE_LIBGLU),y) +LIBV4L_DEPENDENCIES += libglu +endif + +ifeq ($(BR2_PACKAGE_LIBV4L_UTILS),y) +LIBV4L_CONF_OPTS += --enable-v4l-utils +LIBV4L_DEPENDENCIES += $(TARGET_NLS_DEPENDENCIES) + +# v4l2-ctl needs c++11, use gnu++11 for typeof support +LIBV4L_CONF_ENV += CXXFLAGS="$(TARGET_CXXFLAGS) -std=gnu++11" + +# IR BPF decoder support needs toolchain with linux-headers >= 3.18 +# libelf and clang support +LIBV4L_CONF_OPTS += --disable-bpf + +ifeq ($(BR2_PACKAGE_QT5BASE)$(BR2_PACKAGE_QT5BASE_GUI)$(BR2_PACKAGE_QT5BASE_WIDGETS),yyy) +LIBV4L_CONF_OPTS += --enable-qv4l2 +LIBV4L_DEPENDENCIES += qt5base +# protect against host version detection of moc-qt5/rcc-qt5/uic-qt5 +LIBV4L_CONF_ENV += \ + ac_cv_prog_MOC=$(HOST_DIR)/bin/moc \ + ac_cv_prog_RCC=$(HOST_DIR)/bin/rcc \ + ac_cv_prog_UIC=$(HOST_DIR)/bin/uic +else +LIBV4L_CONF_OPTS += --disable-qv4l2 +endif +else +LIBV4L_CONF_OPTS += --disable-v4l-utils +endif + +ifeq ($(BR2_PACKAGE_SDL2_IMAGE),y) +LIBV4L_DEPENDENCIES += sdl2_image +endif + +$(eval $(autotools-package)) diff --git a/package/libva-intel-driver/Config.in b/package/libva-intel-driver/Config.in new file mode 100644 index 00000000..53c5b366 --- /dev/null +++ b/package/libva-intel-driver/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_LIBVA_INTEL_DRIVER + bool "libva-intel-driver" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm/libpthread-stubs + depends on !BR2_STATIC_LIBS # libva + select BR2_PACKAGE_LIBVA + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_LIBDRM_INTEL + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXFIXES if BR2_PACKAGE_XORG7 + help + VA-API back-end driver for Intel graphics chips + + https://01.org/vaapi + +comment "libva intel driver needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + depends on BR2_i386 || BR2_x86_64 diff --git a/package/libva-intel-driver/libva-intel-driver.hash b/package/libva-intel-driver/libva-intel-driver.hash new file mode 100644 index 00000000..4bf82774 --- /dev/null +++ b/package/libva-intel-driver/libva-intel-driver.hash @@ -0,0 +1,5 @@ +# From https://github.com/intel/intel-vaapi-driver/releases +sha1 c998e06f13238c6419bb38ede9a13e453312737b intel-vaapi-driver-2.4.1.tar.bz2 +# Locally computed +sha256 0081fce08eb3a83f7d99c3b853c8fdfa0af437b8f5b0fb7c66faeb83bcbe0c19 intel-vaapi-driver-2.4.1.tar.bz2 +sha256 c86a782ee845b52472dae9b9d79fb915d333628ac0efe49cdce63644814931de COPYING diff --git a/package/libva-intel-driver/libva-intel-driver.mk b/package/libva-intel-driver/libva-intel-driver.mk new file mode 100644 index 00000000..ad801dc9 --- /dev/null +++ b/package/libva-intel-driver/libva-intel-driver.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# libva-intel-driver +# +################################################################################ + +LIBVA_INTEL_DRIVER_VERSION = 2.4.1 +LIBVA_INTEL_DRIVER_SOURCE = intel-vaapi-driver-$(LIBVA_INTEL_DRIVER_VERSION).tar.bz2 +LIBVA_INTEL_DRIVER_SITE = \ + https://github.com/intel/intel-vaapi-driver/releases/download/$(LIBVA_INTEL_DRIVER_VERSION) +LIBVA_INTEL_DRIVER_LICENSE = MIT +LIBVA_INTEL_DRIVER_LICENSE_FILES = COPYING +LIBVA_INTEL_DRIVER_DEPENDENCIES = host-pkgconf libdrm libva + +ifeq ($(BR2_PACKAGE_XORG7),y) +LIBVA_INTEL_DRIVER_DEPENDENCIES += xlib_libX11 xlib_libXext xlib_libXfixes +LIBVA_INTEL_DRIVER_CONF_OPTS += --enable-x11 +else +LIBVA_INTEL_DRIVER_CONF_OPTS += --disable-x11 +endif + +ifeq ($(BR2_PACKAGE_WAYLAND),y) +LIBVA_INTEL_DRIVER_DEPENDENCIES += wayland +LIBVA_INTEL_DRIVER_CONF_OPTS += --enable-wayland +else +LIBVA_INTEL_DRIVER_CONF_OPTS += --disable-wayland +endif + +$(eval $(autotools-package)) diff --git a/package/libva-utils/Config.in b/package/libva-utils/Config.in new file mode 100644 index 00000000..597419f7 --- /dev/null +++ b/package/libva-utils/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBVA_UTILS + bool "libva-utils" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS # libva + depends on BR2_TOOLCHAIN_HAS_THREADS # libva + select BR2_PACKAGE_LIBVA + help + Libva-utils is a collection of tests for VA-API (Video + Acceleration API) + + https://01.org/vaapi + +comment "libva-utils needs a toolchain w/ C++, threads, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || \ + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libva-utils/libva-utils.hash b/package/libva-utils/libva-utils.hash new file mode 100644 index 00000000..04978181 --- /dev/null +++ b/package/libva-utils/libva-utils.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 7b57615c130427ec134bb5d2b80af516ce5bb19a40e89b1dab46a0d59760d96c libva-utils-2.22.0.tar.gz +sha256 c6220c9f87832c27abcb8a32eafdd2823e13ce146b3ea63d5deae2a76798ef50 COPYING diff --git a/package/libva-utils/libva-utils.mk b/package/libva-utils/libva-utils.mk new file mode 100644 index 00000000..0536f022 --- /dev/null +++ b/package/libva-utils/libva-utils.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# libva-utils +# +################################################################################ + +LIBVA_UTILS_VERSION = 2.22.0 +LIBVA_UTILS_SITE = $(call github,intel,libva-utils,$(LIBVA_UTILS_VERSION)) +LIBVA_UTILS_LICENSE = MIT +LIBVA_UTILS_LICENSE_FILES = COPYING +LIBVA_UTILS_DEPENDENCIES = host-pkgconf libva + +$(eval $(meson-package)) diff --git a/package/libva/Config.in b/package/libva/Config.in new file mode 100644 index 00000000..e4e351f9 --- /dev/null +++ b/package/libva/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_LIBVA + bool "libva" + depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm/libpthread-stubs + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXFIXES if BR2_PACKAGE_XORG7 + help + The main motivation for VA-API (Video Acceleration API) is to + enable hardware accelerated video decode/encode at various + entry-points (VLD, IDCT, Motion Compensation etc.) for the + prevailing coding standards today (MPEG-2, MPEG-4 ASP/H.263, + MPEG-4 AVC/H.264, and VC-1/VMW3). + + https://01.org/vaapi + +comment "libva needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/libva/libva.hash b/package/libva/libva.hash new file mode 100644 index 00000000..b1358b99 --- /dev/null +++ b/package/libva/libva.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 467c418c2640a178c6baad5be2e00d569842123763b80507721ab87eb7af8735 libva-2.22.0.tar.gz +sha256 c86a782ee845b52472dae9b9d79fb915d333628ac0efe49cdce63644814931de COPYING diff --git a/package/libva/libva.mk b/package/libva/libva.mk new file mode 100644 index 00000000..46f42afb --- /dev/null +++ b/package/libva/libva.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# libva +# +################################################################################ + +LIBVA_VERSION = 2.22.0 +LIBVA_SITE = $(call github,intel,libva,$(LIBVA_VERSION)) +LIBVA_LICENSE = MIT +LIBVA_LICENSE_FILES = COPYING +LIBVA_INSTALL_STAGING = YES +LIBVA_DEPENDENCIES = host-pkgconf libdrm +LIBVA_CFLAGS = $(TARGET_CFLAGS) -std=gnu99 + +# libdrm is a hard-dependency +LIBVA_CONF_OPTS = \ + -Ddisable_drm=false \ + -Ddriverdir="/usr/lib/va" + +ifeq ($(BR2_PACKAGE_XORG7),y) +LIBVA_DEPENDENCIES += xlib_libX11 xlib_libXext xlib_libXfixes +LIBVA_CONF_OPTS += -Dwith_x11=yes +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +LIBVA_DEPENDENCIES += libgl +LIBVA_CONF_OPTS += -Dwith_glx=yes +endif +else +LIBVA_CONF_OPTS += -Dwith_glx=no -Dwith_x11=no +endif + +ifeq ($(BR2_PACKAGE_WAYLAND),y) +LIBVA_DEPENDENCIES += wayland +LIBVA_CONF_OPTS += -Dwith_wayland=yes +else +LIBVA_CONF_OPTS += -Dwith_wayland=no +endif + +$(eval $(meson-package)) diff --git a/package/libvdpau/Config.in b/package/libvdpau/Config.in new file mode 100644 index 00000000..b5430abb --- /dev/null +++ b/package/libvdpau/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBVDPAU + bool "libvdpau" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + help + VDPAU is the Video Decode and Presentation API for UNIX. + It provides an interface to video decode acceleration and + presentation hardware present in modern GPUs. + + http://freedesktop.org/wiki/Software/VDPAU + +comment "libvdpau needs a toolchain w/ threads, C++" + depends on BR2_PACKAGE_XORG7 + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP diff --git a/package/libvdpau/libvdpau.hash b/package/libvdpau/libvdpau.hash new file mode 100644 index 00000000..ac974902 --- /dev/null +++ b/package/libvdpau/libvdpau.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 a5d50a42b8c288febc07151ab643ac8de06a18446965c7241f89b4e810821913 libvdpau-1.5.tar.bz2 +# Locally computed +sha256 ce4af7294872ff07f6e82ae5f1f5eba926215b1e2fb6d55d64759de082458d61 COPYING diff --git a/package/libvdpau/libvdpau.mk b/package/libvdpau/libvdpau.mk new file mode 100644 index 00000000..67ffdf17 --- /dev/null +++ b/package/libvdpau/libvdpau.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# libvdpau +# +################################################################################ + +LIBVDPAU_VERSION = 1.5 +LIBVDPAU_SOURCE = libvdpau-$(LIBVDPAU_VERSION).tar.bz2 +LIBVDPAU_SITE = \ + https://gitlab.freedesktop.org/vdpau/libvdpau/-/archive/$(LIBVDPAU_VERSION) +LIBVDPAU_LICENSE = MIT +LIBVDPAU_LICENSE_FILES = COPYING +LIBVDPAU_INSTALL_STAGING = YES + +LIBVDPAU_DEPENDENCIES = host-pkgconf xlib_libX11 xlib_libXext + +LIBVDPAU_CONF_OPTS = \ + -Ddocumentation=false \ + -Dmoduledir=/usr/lib/vdpau + +ifeq ($(BR2_PACKAGE_XORGPROTO),y) +LIBVDPAU_DEPENDENCIES += xorgproto +LIBVDPAU_CONF_OPTS += -Ddri2=true +else +LIBVDPAU_CONF_OPTS += -Ddri2=false +endif + +$(eval $(meson-package)) diff --git a/package/libvips/Config.in b/package/libvips/Config.in new file mode 100644 index 00000000..70d01f0e --- /dev/null +++ b/package/libvips/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_LIBVIPS + bool "libvips" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # fork() + # C++ support is required to build libvips + # https://github.com/jcupitt/libvips/issues/231 + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_LIBGLIB2 + help + libvips is a 2D image processing library. Compared to + similar libraries, libvips runs quickly and uses little + memory. + + http://www.vips.ecs.soton.ac.uk/ + +comment "libvips needs a toolchain w/ wchar, threads, C++" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_INSTALL_LIBSTDCPP diff --git a/package/libvips/libvips.hash b/package/libvips/libvips.hash new file mode 100644 index 00000000..1ba242d1 --- /dev/null +++ b/package/libvips/libvips.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2468088d958e0e2de1be2991ff8940bf45664a826c0dad12342e1804e2805a6e vips-8.10.6.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/libvips/libvips.mk b/package/libvips/libvips.mk new file mode 100644 index 00000000..8eb1f096 --- /dev/null +++ b/package/libvips/libvips.mk @@ -0,0 +1,156 @@ +################################################################################ +# +# libvips +# +################################################################################ + +LIBVIPS_VERSION = 8.10.6 +LIBVIPS_SOURCE = vips-$(LIBVIPS_VERSION).tar.gz +LIBVIPS_SITE = https://github.com/libvips/libvips/releases/download/v$(LIBVIPS_VERSION) +LIBVIPS_LICENSE = LGPL-2.1+ +LIBVIPS_LICENSE_FILES = COPYING +LIBVIPS_CPE_ID_VENDOR = libvips + +# Sparc64 compile fails, for all optimization levels except -O0. To +# fix the problem, use -O0 with no optimization instead. Bug reported +# upstream at https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69038. +ifeq ($(BR2_sparc64),y) +LIBVIPS_CXXFLAGS += -O0 +endif + +LIBVIPS_CONF_ENV += CXXFLAGS="$(TARGET_CXXFLAGS) $(LIBVIPS_CXXFLAGS)" \ + LIBS=$(TARGET_NLS_LIBS) + +LIBVIPS_CONF_OPTS = \ + --without-dmalloc \ + --without-gsf \ + --without-OpenEXR \ + --without-openslide \ + --without-cfitsio \ + --without-pangoft2 \ + --without-x +LIBVIPS_INSTALL_STAGING = YES +LIBVIPS_DEPENDENCIES = \ + host-pkgconf expat libglib2 \ + $(TARGET_NLS_DEPENDENCIES) + +ifeq ($(BR2_PACKAGE_GIFLIB),y) +LIBVIPS_CONF_OPTS += --with-giflib +LIBVIPS_DEPENDENCIES += giflib +else +LIBVIPS_CONF_OPTS += --without-giflib +endif + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +LIBVIPS_CONF_OPTS += --enable-introspection +LIBVIPS_DEPENDENCIES += gobject-introspection +else +LIBVIPS_CONF_OPTS += --disable-introspection +endif + +ifeq ($(BR2_PACKAGE_IMAGEMAGICK),y) +LIBVIPS_CONF_OPTS += \ + --with-magick \ + --with-magickpackage=MagickCore +LIBVIPS_DEPENDENCIES += imagemagick +else ifeq ($(BR2_PACKAGE_GRAPHICSMAGICK),y) +LIBVIPS_CONF_OPTS += \ + --with-magick \ + --with-magickpackage=GraphicsMagick +LIBVIPS_DEPENDENCIES += graphicsmagick +else +LIBVIPS_CONF_OPTS += --without-magick +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +LIBVIPS_CONF_OPTS += --with-jpeg +LIBVIPS_DEPENDENCIES += jpeg +else +LIBVIPS_CONF_OPTS += --without-jpeg +endif + +ifeq ($(BR2_PACKAGE_LCMS2),y) +LIBVIPS_CONF_OPTS += --with-lcms +LIBVIPS_DEPENDENCIES += lcms2 +else +LIBVIPS_CONF_OPTS += --without-lcms +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +LIBVIPS_CONF_OPTS += --with-png +LIBVIPS_DEPENDENCIES += libpng +else +LIBVIPS_CONF_OPTS += --without-png +endif + +ifeq ($(BR2_PACKAGE_LIBRSVG),y) +LIBVIPS_CONF_OPTS += --with-rsvg +LIBVIPS_DEPENDENCIES += librsvg +else +LIBVIPS_CONF_OPTS += --without-rsvg +endif + +ifeq ($(BR2_PACKAGE_MATIO),y) +LIBVIPS_CONF_OPTS += --with-matio +LIBVIPS_DEPENDENCIES += matio +else +LIBVIPS_CONF_OPTS += --without-matio +endif + +ifeq ($(BR2_PACKAGE_ORC),y) +LIBVIPS_CONF_OPTS += --with-orc +LIBVIPS_DEPENDENCIES += orc +else +LIBVIPS_CONF_OPTS += --without-orc +endif + +ifeq ($(BR2_PACKAGE_POPPLER),y) +LIBVIPS_CONF_OPTS += --with-poppler +LIBVIPS_DEPENDENCIES += poppler +else +LIBVIPS_CONF_OPTS += --without-poppler +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +LIBVIPS_CONF_OPTS += --with-tiff +LIBVIPS_DEPENDENCIES += tiff +else +LIBVIPS_CONF_OPTS += --without-tiff +endif + +ifeq ($(BR2_PACKAGE_FFTW_DOUBLE),y) +LIBVIPS_CONF_OPTS += --with-fftw +LIBVIPS_DEPENDENCIES += fftw-double +else +LIBVIPS_CONF_OPTS += --without-fftw +endif + +ifeq ($(BR2_PACKAGE_LIBEXIF),y) +LIBVIPS_CONF_OPTS += --with-libexif +LIBVIPS_DEPENDENCIES += libexif +else +LIBVIPS_CONF_OPTS += --without-libexif +endif + +ifeq ($(BR2_PACKAGE_LIBHEIF),y) +LIBVIPS_CONF_OPTS += --with-heif +LIBVIPS_DEPENDENCIES += libheif +else +LIBVIPS_CONF_OPTS += --without-heif +endif + +ifeq ($(BR2_PACKAGE_WEBP_DEMUX)$(BR2_PACKAGE_WEBP_MUX),yy) +LIBVIPS_CONF_OPTS += --with-libwebp +LIBVIPS_DEPENDENCIES += webp +else +LIBVIPS_CONF_OPTS += --without-libwebp +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LIBVIPS_CONF_OPTS += --with-zlib +LIBVIPS_DEPENDENCIES += zlib +else +LIBVIPS_CONF_OPTS += --without-zlib +endif + +$(eval $(autotools-package)) diff --git a/package/libvirt/90-kvm.rules b/package/libvirt/90-kvm.rules new file mode 100644 index 00000000..5145c27e --- /dev/null +++ b/package/libvirt/90-kvm.rules @@ -0,0 +1 @@ +KERNEL=="kvm", OWNER="root", GROUP="kvm", MODE="0660" diff --git a/package/libvirt/Config.in b/package/libvirt/Config.in new file mode 100644 index 00000000..3f4fc70e --- /dev/null +++ b/package/libvirt/Config.in @@ -0,0 +1,98 @@ +config BR2_PACKAGE_LIBVIRT_ARCH_SUPPORTS + bool + default y if BR2_aarch64 + default y if BR2_i386 + default y if BR2_x86_64 + depends on BR2_USE_MMU # fork() + +comment "libvirt needs udev /dev management, a toolchain w/ threads, dynamic library, wchar, kernel headers >= 3.12 (4.11 for AArch64)" + depends on BR2_PACKAGE_LIBVIRT_ARCH_SUPPORTS + depends on !BR2_PACKAGE_HAS_UDEV || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \ + !(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 && \ + (BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 || !BR2_aarch64)) + +config BR2_PACKAGE_LIBVIRT + bool "libvirt" + depends on BR2_PACKAGE_LIBVIRT_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 || !BR2_aarch64 + depends on BR2_PACKAGE_HAS_UDEV + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + select BR2_PACKAGE_GNUTLS + # configure: You must install the pciaccess module to build with udev + select BR2_PACKAGE_LIBPCIACCESS + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBTIRPC + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_ZLIB + # run-time dependencies + select BR2_PACKAGE_CGROUPFS_MOUNT if !BR2_INIT_SYSTEMD + help + Libvirt is collection of software that provides a convenient + way to manage virtual machines and other virtualization + functionality, such as storage and network interface + management. These software pieces include an API library, a + daemon (libvirtd), and a command line utility (virsh). + + https://libvirt.org/ + +if BR2_PACKAGE_LIBVIRT + +config BR2_PACKAGE_LIBVIRT_DAEMON + bool "libvirtd" + default y + depends on BR2_INSTALL_LIBSTDCPP # nmap + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_DNSMASQ + select BR2_PACKAGE_EBTABLES + select BR2_PACKAGE_IPTABLES + select BR2_PACKAGE_IPROUTE2 + # These are required because there is no way to unequivocally select a modern netcat + select BR2_PACKAGE_NMAP if !BR2_PACKAGE_NETCAT_OPENBSD + select BR2_PACKAGE_NMAP_NCAT if !BR2_PACKAGE_NETCAT_OPENBSD + select BR2_PACKAGE_RADVD + help + Build the libvirt daemon (libvirtd) otherwise build only the + utility programs. + +comment "libvirtd needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +# Stateful drivers are useful only when building the daemon. +if BR2_PACKAGE_LIBVIRT_DAEMON + +config BR2_PACKAGE_LIBVIRT_QEMU + bool "qemu" + depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS # libseccomp + depends on BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # qemu + select BR2_PACKAGE_HWDATA # libpciaccess + select BR2_PACKAGE_HWDATA_PCI_IDS # libpciaccess + select BR2_PACKAGE_LIBSECCOMP + select BR2_PACKAGE_QEMU + select BR2_PACKAGE_QEMU_SYSTEM + select BR2_PACKAGE_YAJL + help + QEMU/KVM support + +comment "qemu needs a toolchain with gcc >= 8" + depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS + depends on BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_8 + +config BR2_PACKAGE_LIBVIRT_LXC + bool "lxc" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # lxc + select BR2_PACKAGE_LXC + help + Linux Container support + +comment "lxc needs a toolchain w/ gcc >= 4.7" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + +endif + +endif diff --git a/package/libvirt/S91virtlogd b/package/libvirt/S91virtlogd new file mode 100644 index 00000000..03d17b5d --- /dev/null +++ b/package/libvirt/S91virtlogd @@ -0,0 +1,65 @@ +#!/bin/sh + +DAEMON="virtlogd" +EXECFILE="/usr/sbin/$DAEMON" +PIDFILE="/var/run/$DAEMON.pid" + +VIRTLOGD_ARGS="" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -p "$PIDFILE" -x "$EXECFILE" \ + -- -d $VIRTLOGD_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" -x "$EXECFILE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +# On receipt of SIGUSR1 virtlogd will re-exec() its binary, while maintaining +# all current logs and clients. This allows for live upgrades of the virtlogd +# service. +reload() { + printf 'Reloading %s: ' "$DAEMON" + start-stop-daemon -K -s USR1 -q -p "$PIDFILE" -x "$EXECFILE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +case "$1" in + start|stop|restart|reload) + "$1";; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/libvirt/S92libvirtd b/package/libvirt/S92libvirtd new file mode 100644 index 00000000..736519f3 --- /dev/null +++ b/package/libvirt/S92libvirtd @@ -0,0 +1,132 @@ +#!/bin/sh + +DAEMON="libvirtd" +EXECFILE="/usr/sbin/$DAEMON" +PIDFILE="/var/run/$DAEMON.pid" + +LIBVIRTD_ARGS="" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +trap 'rm -f "$TMP_MODULE_LIST" "$TMP_PIDFILE_LIST"' EXIT + +is_alive() { + [ -e "$1" ] \ + && exe="/proc/$(cat "$1" 2>/dev/null)/exe" \ + && [ -s "$exe" ] \ + && [ "$(readlink -f "$exe")" = "$2" ] +} + +load_modules() { + printf 'Loading kernel modules: ' + kver="$(uname -r)" + TMP_MODULE_LIST="$(mktemp -q)" || { + echo 'FAIL creating temporary modules list' + exit 1 + } + [ -d "/lib/modules/$kver/kernel/drivers/net" ] && \ + find "/lib/modules/$kver/kernel/drivers/net" \ + -name "tun.ko*" >> "$TMP_MODULE_LIST" + [ -d "/lib/modules/$kver/kernel/drivers/vhost" ] && \ + find "/lib/modules/$kver/kernel/drivers/vhost" \ + -name "vhost?net.ko*" >> "$TMP_MODULE_LIST" + [ -d "/lib/modules/$kver/kernel/drivers/net" ] && \ + find "/lib/modules/$kver/kernel/drivers/vfio" \ + -name "*.ko*" >> "$TMP_MODULE_LIST" + while read -r f; do + m="$(basename "${f%.ko*}")" + if modprobe -q "$m"; then + printf '%s ' "$m" + else + echo "FAIL on $m" + exit 1 + fi + done < "$TMP_MODULE_LIST" + echo "OK" +} + +# +# If libvirtd dies it leves behind one stale dnsmasq per virtual network that +# must be killed before starting libvirtd again. +# +rm_stale_dnsmasq() { + [ -d /var/run/libvirt/network ] || return 0 + TMP_PIDFILE_LIST="$(mktemp -q)" || { + echo "Could not create temporary pidfile list" + exit 1 + } + find /var/run/libvirt/network -name '*.pid' > "$TMP_PIDFILE_LIST" + while read -r pidfile; do + if is_alive "$pidfile" /usr/sbin/dnsmasq; then + start-stop-daemon -K -q -p "$pidfile" -x /usr/sbin/dnsmasq + status=$? + if [ "$status" -ne 0 ]; then + echo "Could not stop stale dnsmasq daemons" + exit 1 + fi + rm -f "$pidfile" + fi + done < "$TMP_PIDFILE_LIST" +} + +start() { + if is_alive "$PIDFILE" "$EXECFILE"; then + # libvirtd is already running. Leave it alone. + printf 'Starting %s: FAIL\n' "$DAEMON" + return 1 + fi + rm_stale_dnsmasq + load_modules + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -p "$PIDFILE" -x "$EXECFILE" \ + -- -d $LIBVIRTD_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" -x "$EXECFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm_stale_dnsmasq + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +# On receipt of SIGHUP libvirtd will reload its configuration. +reload() { + printf 'Reloading %s: ' "$DAEMON" + start-stop-daemon -K -s HUP -q -p "$PIDFILE" -x "$EXECFILE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +case "$1" in + start|stop|restart|reload) + "$1";; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/libvirt/libvirt.hash b/package/libvirt/libvirt.hash new file mode 100644 index 00000000..de9ebff5 --- /dev/null +++ b/package/libvirt/libvirt.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 cb318014af097327928c6e3d72922e3be02a3e6401247b2aa52d9ab8e0b480f9 libvirt-7.10.0.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/libvirt/libvirt.mk b/package/libvirt/libvirt.mk new file mode 100644 index 00000000..1dc61a75 --- /dev/null +++ b/package/libvirt/libvirt.mk @@ -0,0 +1,322 @@ +################################################################################ +# +# libvirt +# +################################################################################ + +LIBVIRT_VERSION = 7.10.0 +LIBVIRT_SITE = https://libvirt.org/sources +LIBVIRT_SOURCE = libvirt-$(LIBVIRT_VERSION).tar.xz +LIBVIRT_LICENSE = LGPL-2.1+ +LIBVIRT_LICENSE_FILES = COPYING +LIBVIRT_CPE_ID_VENDOR = redhat +LIBVIRT_INSTALL_STAGING = YES +LIBVIRT_DEPENDENCIES = \ + host-libxslt \ + host-nfs-utils \ + host-pkgconf \ + host-python-docutils \ + gnutls \ + libglib2 \ + libpciaccess \ + libtirpc \ + libxml2 \ + udev \ + zlib \ + $(TARGET_NLS_DEPENDENCIES) + +LIBVIRT_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) + +LIBVIRT_CONF_ENV += \ + CFLAGS="$(TARGET_CFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`" \ + LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`" + +LIBVIRT_CONF_OPTS = \ + -Drpath=disabled \ + -Dapparmor=disabled \ + -Ddocs=disabled \ + -Ddriver_bhyve=disabled \ + -Ddriver_ch=disabled \ + -Ddriver_esx=disabled \ + -Ddriver_hyperv=disabled \ + -Ddriver_libxl=disabled \ + -Ddriver_openvz=disabled \ + -Ddriver_remote=enabled \ + -Ddriver_secrets=enabled \ + -Ddriver_test=disabled \ + -Ddriver_vbox=disabled \ + -Ddriver_vmware=disabled \ + -Ddriver_vz=disabled \ + -Ddtrace=disabled \ + -Dexpensive_tests=disabled \ + -Dfirewalld=disabled \ + -Dfirewalld_zone=disabled \ + -Dglusterfs=disabled \ + -Dhost_validate=enabled \ + -Dinit_script=$(if $(BR2_INIT_SYSTEMD),systemd,none) \ + -Dlogin_shell=disabled \ + -Dnetcf=disabled \ + -Dnls=$(if $(BR2_SYSTEM_ENABLE_NLS),enabled,disabled) \ + -Dnumad=disabled \ + -Dopenwsman=disabled \ + -Dpciaccess=enabled \ + -Dpm_utils=disabled \ + -Dsanlock=disabled \ + -Dsasl=disabled \ + -Dsecdriver_apparmor=disabled \ + -Dstorage_iscsi=disabled \ + -Dstorage_iscsi_direct=disabled \ + -Dstorage_mpath=disabled \ + -Dsysctl_config=enabled \ + -Dtest_coverage=false \ + -Dtests=disabled \ + -Dudev=enabled \ + -Dwireshark_dissector=disabled + +# warning_level should only drive the level of warnings during the +# compilation of C code. However, libvirt misuses that to also +# enable SSP when warning_level == 2 +# Force warning_level=1 to disable SSP, and let our toolchain wrapper +# handle it. +LIBVIRT_CONF_OPTS += -Dwarning_level=1 + +ifeq ($(BR2_PACKAGE_ATTR),y) +LIBVIRT_CONF_OPTS += -Dattr=enabled +LIBVIRT_DEPENDENCIES += attr +else +LIBVIRT_CONF_OPTS += -Dattr=disabled +endif + +ifeq ($(BR2_PACKAGE_AUDIT),y) +LIBVIRT_CONF_OPTS += -Daudit=enabled +LIBVIRT_DEPENDENCIES += audit +else +LIBVIRT_CONF_OPTS += -Daudit=disabled +endif + +ifeq ($(BR2_PACKAGE_BASH_COMPLETION),y) +LIBVIRT_CONF_OPTS += -Dbash_completion=enabled +LIBVIRT_DEPENDENCIES += bash-completion +else +LIBVIRT_CONF_OPTS += -Dbash_completion=disabled +endif + +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBBLKID),y) +LIBVIRT_CONF_OPTS += -Dblkid=enabled +LIBVIRT_DEPENDENCIES += util-linux +else +LIBVIRT_CONF_OPTS += -Dblkid=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBCAP_NG),y) +LIBVIRT_CONF_OPTS += -Dcapng=enabled +LIBVIRT_DEPENDENCIES += libcap-ng +else +LIBVIRT_CONF_OPTS += -Dcapng=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +LIBVIRT_CONF_OPTS += -Dcurl=enabled +LIBVIRT_DEPENDENCIES += libcurl +else +LIBVIRT_CONF_OPTS += -Dcurl=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBFUSE),y) +LIBVIRT_CONF_OPTS += -Dfuse=enabled +LIBVIRT_DEPENDENCIES += libfuse +else +LIBVIRT_CONF_OPTS += -Dfuse=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBISCSI),y) +LIBVIRT_CONF_OPTS += -Dlibiscsi=enabled +LIBVIRT_DEPENDENCIES += libiscsi +else +LIBVIRT_CONF_OPTS += -Dlibiscsi=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBNL),y) +LIBVIRT_CONF_OPTS += -Dlibnl=enabled +LIBVIRT_DEPENDENCIES += libnl +else +LIBVIRT_CONF_OPTS += -Dlibnl=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBPCAP),y) +LIBVIRT_CONF_OPTS += -Dlibpcap=enabled +LIBVIRT_DEPENDENCIES += libpcap +else +LIBVIRT_CONF_OPTS += -Dlibpcap=disabled +endif + +ifeq ($(BR2_PACKAGE_NUMACTL),y) +LIBVIRT_CONF_OPTS += -Dnumactl=enabled +LIBVIRT_DEPENDENCIES += numactl +else +LIBVIRT_CONF_OPTS += -Dnumactl=disabled +endif + +ifeq ($(BR2_PACKAGE_POLKIT),y) +LIBVIRT_CONF_OPTS += -Dpolkit=enabled +LIBVIRT_DEPENDENCIES += polkit +else +LIBVIRT_CONF_OPTS += -Dpolkit=disabled +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +LIBVIRT_CONF_OPTS += -Dreadline=enabled +LIBVIRT_DEPENDENCIES += readline +else +LIBVIRT_CONF_OPTS += -Dreadline=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +LIBVIRT_CONF_OPTS += -Dselinux=enabled -Dsecdriver_selinux=enabled \ + -Dselinux_mount=/sys/fs/selinux +LIBVIRT_DEPENDENCIES += libselinux +else +LIBVIRT_CONF_OPTS += -Dselinux=disabled -Dsecdriver_selinux=disabled +endif + +ifeq ($(BR2_PACKAGE_LVM2_STANDARD_INSTALL),y) +LIBVIRT_CONF_OPTS += -Dstorage_lvm=enabled +LIBVIRT_DEPENDENCIES += host-lvm2 lvm2 +else +LIBVIRT_CONF_OPTS += -Dstorage_lvm=disabled +endif + +ifeq ($(BR2_PACKAGE_YAJL),y) +LIBVIRT_CONF_OPTS += -Dyajl=enabled +LIBVIRT_DEPENDENCIES += yajl +else +LIBVIRT_CONF_OPTS += -Dyajl=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBVIRT_DAEMON),y) +# Network is used by daemon, only +LIBVIRT_CONF_OPTS += \ + -Ddriver_interface=enabled \ + -Ddriver_libvirtd=enabled \ + -Ddriver_network=enabled + +ifeq ($(BR2_PACKAGE_LIBSSH),y) +LIBVIRT_CONF_OPTS += -Dlibssh=enabled +LIBVIRT_DEPENDENCIES += libssh +else +LIBVIRT_CONF_OPTS += -Dlibssh=disabled +endif + +# Can't build nss plugin without network or yajl +ifeq ($(BR2_PACKAGE_LIBNSS)$(BR2_PACKAGE_YAJL),yy) +LIBVIRT_CONF_OPTS += -Dnss=enabled +LIBVIRT_DEPENDENCIES += libnss +else +LIBVIRT_CONF_OPTS += -Dnss=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBSSH2),y) +LIBVIRT_CONF_OPTS += -Dlibssh2=enabled +LIBVIRT_DEPENDENCIES += libssh2 +else +LIBVIRT_CONF_OPTS += -Dlibssh2=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBVIRT_LXC),y) +LIBVIRT_CONF_OPTS += -Dlogin_shell=enabled -Ddriver_lxc=enabled +LIBVIRT_DEPENDENCIES += lxc +else +LIBVIRT_CONF_OPTS += -Dlogin_shell=disabled -Ddriver_lxc=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBVIRT_QEMU),y) +LIBVIRT_CONF_OPTS += -Ddriver_qemu=enabled -Dqemu_user=qemu -Dqemu_group=kvm +else +LIBVIRT_CONF_OPTS += -Ddriver_qemu=disabled -Dqemu_user=no -Dqemu_group=no +endif + +else # BR2_PACKAGE_LIBVIRT_DAEMON + +LIBVIRT_CONF_OPTS += \ + -Ddriver_interface=disabled \ + -Ddriver_libvirtd=disabled \ + -Ddriver_network=disabled + +endif + +define LIBVIRT_INSTALL_UDEV_RULES + $(INSTALL) -D -m 644 package/libvirt/90-kvm.rules \ + $(TARGET_DIR)/etc/udev/rules.d/90-kvm.rules +endef +LIBVIRT_POST_INSTALL_TARGET_HOOKS += LIBVIRT_INSTALL_UDEV_RULES + +# Adjust directory ownerships and permissions. Notice /var/log is a symlink to +# /tmp in the default sysvinit skeleton, so some directories may disappear at +# run-time. Set the permissions anyway, since they are valid for the default +# systemd skeleton. +define LIBVIRT_PERMISSIONS + /etc/libvirt d 700 root root - - - - - + /etc/libvirt/nwfilter d 700 root root - - - - - + /var/lib/libvirt d 755 root root - - - - - + /var/lib/libvirt/boot d 711 root root - - - - - + /var/lib/libvirt/dnsmasq d 755 root root - - - - - + /var/lib/libvirt/filesystems d 711 root root - - - - - + /var/lib/libvirt/images d 711 root root - - - - - + /var/lib/libvirt/network d 700 root root - - - - - + /var/lib/libvirt/qemu d 751 qemu kvm - - - - - + /var/lib/libvirt/qemu/autostart d 700 root root - - - - - + /var/lib/libvirt/qemu/networks d 700 root root - - - - - + /var/lib/libvirt/qemu/networks/autostart d 700 root root - - - - - + /var/lib/libvirt/qemu/channel d 755 qemu kvm - - - - - + /var/lib/libvirt/qemu/channel/target d 755 qemu kvm - - - - - + /var/lib/libvirt/qemu/dump d 755 qemu kvm - - - - - + /var/lib/libvirt/qemu/nvram d 755 qemu kvm - - - - - + /var/lib/libvirt/qemu/save d 755 qemu kvm - - - - - + /var/lib/libvirt/qemu/snapshot d 755 qemu kvm - - - - - + /var/lib/libvirt/secrets d 700 root root - - - - - + /var/lib/libvirt/storage d 755 root root - - - - - + /var/lib/libvirt/storage/autostart d 755 root root - - - - - + /var/cache/libvirt d 711 root root - - - - - + /var/cache/libvirt/lxc d 750 root root - - - - - + /var/cache/libvirt/qemu d 750 qemu kvm - - - - - + /var/cache/libvirt/qemu/capabilities d 755 root root - - - - - + /var/log/libvirt d 700 root root - - - - - + /var/log/libvirt/lxc d 750 root root - - - - - + /var/log/libvirt/qemu d 750 root root - - - - - + /var/log/swtpm d 755 root root - - - - - + /var/log/swtpm/libvirt d 755 root root - - - - - + /var/log/swtpm/libvirt/qemu d 711 root root - - - - - +endef + +# libvirt may need to create persistent files (e.g. VM definitions) in these +# directories. Move them to /var/lib because /etc may be on a read-only or +# volatile (initramfs) filesystem. We could tweak the code to change these +# paths but the patch would be large and would break compatibility with +# ordinary installations and with the documentation. +define LIBVIRT_CREATE_SYMLINKS + $(INSTALL) -m 700 -d $(TARGET_DIR)/etc/libvirt + $(INSTALL) -m 755 -d $(TARGET_DIR)/var/lib/libvirt + $(INSTALL) -m 751 -d $(TARGET_DIR)/var/lib/libvirt/qemu + $(INSTALL) -m 700 -d $(TARGET_DIR)/var/lib/libvirt/secrets + $(INSTALL) -m 755 -d $(TARGET_DIR)/var/lib/libvirt/storage + ln -s -f ../../var/lib/libvirt/qemu $(TARGET_DIR)/etc/libvirt/ + ln -s -f ../../var/lib/libvirt/secrets $(TARGET_DIR)/etc/libvirt/ + ln -s -f ../../var/lib/libvirt/storage $(TARGET_DIR)/etc/libvirt/ +endef + +LIBVIRT_PRE_INSTALL_TARGET_HOOKS += LIBVIRT_CREATE_SYMLINKS + +ifeq ($(BR2_PACKAGE_LIBVIRT_QEMU),y) +define LIBVIRT_USERS + qemu -1 kvm -1 * - - - Libvirt qemu/kvm daemon +endef +endif + +ifeq ($(BR2_PACKAGE_LIBVIRT_DAEMON),y) +define LIBVIRT_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/libvirt/S91virtlogd $(TARGET_DIR)/etc/init.d/S91virtlogd + $(INSTALL) -D -m 0755 package/libvirt/S92libvirtd $(TARGET_DIR)/etc/init.d/S92libvirtd +endef +endif + +$(eval $(meson-package)) diff --git a/package/libvncserver/Config.in b/package/libvncserver/Config.in new file mode 100644 index 00000000..f2848945 --- /dev/null +++ b/package/libvncserver/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_LIBVNCSERVER + bool "libvncserver" + depends on BR2_USE_MMU # VNCommand.c uses fork() + # binutils issue (bad expression) + depends on !BR2_nios2 + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LZO + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + help + libvncserver is a VNC server/client library. + + https://libvnc.github.io/ + +if BR2_PACKAGE_LIBVNCSERVER + +config BR2_PACKAGE_LIBVNCSERVER_TIGHTPNG + bool "TightPNG encoding support" + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBPNG + help + TightPNG encoding speeds up HTML5 based VNC clients like + noVNC. + + http://wiki.qemu.org/VNC_Tight_PNG + +endif + +comment "libvncserver needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on !BR2_nios2 + depends on BR2_STATIC_LIBS diff --git a/package/libvncserver/libvncserver.hash b/package/libvncserver/libvncserver.hash new file mode 100644 index 00000000..225c42e4 --- /dev/null +++ b/package/libvncserver/libvncserver.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 83104e4f7e28b02f8bf6b010d69b626fae591f887e949816305daebae527c9a5 LibVNCServer-0.9.14.tar.gz +sha256 4d23c8c814e5baf007d854f01d8502e77dc56a41144934e003fb32c4e052d20f COPYING diff --git a/package/libvncserver/libvncserver.mk b/package/libvncserver/libvncserver.mk new file mode 100644 index 00000000..082f838f --- /dev/null +++ b/package/libvncserver/libvncserver.mk @@ -0,0 +1,81 @@ +################################################################################ +# +# libvncserver +# +################################################################################ + +LIBVNCSERVER_VERSION = 0.9.14 +LIBVNCSERVER_SOURCE = LibVNCServer-$(LIBVNCSERVER_VERSION).tar.gz +LIBVNCSERVER_SITE = https://github.com/LibVNC/libvncserver/archive +LIBVNCSERVER_LICENSE = GPL-2.0+ +LIBVNCSERVER_LICENSE_FILES = COPYING +LIBVNCSERVER_CPE_ID_VALID = YES +LIBVNCSERVER_INSTALL_STAGING = YES +LIBVNCSERVER_DEPENDENCIES = host-pkgconf lzo +LIBVNCSERVER_CONF_OPTS = -DWITH_LZO=ON + +# only used for examples +LIBVNCSERVER_CONF_OPTS += \ + -DWITH_EXAMPLES=OFF \ + -DWITH_FFMPEG=OFF \ + -DWITH_GTK=OFF \ + -DWITH_SDL=OFF \ + -DWITH_TESTS=OFF + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +LIBVNCSERVER_CONF_OPTS += -DWITH_THREADS=ON +else +LIBVNCSERVER_CONF_OPTS += -DWITH_THREADS=OFF +endif + +# openssl supports needs NPTL thread support +ifeq ($(BR2_PACKAGE_OPENSSL)$(BR2_TOOLCHAIN_HAS_THREADS_NPTL),yy) +LIBVNCSERVER_CONF_OPTS += -DWITH_OPENSSL=ON +LIBVNCSERVER_DEPENDENCIES += openssl +else +LIBVNCSERVER_CONF_OPTS += -DWITH_OPENSSL=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +LIBVNCSERVER_CONF_OPTS += -DWITH_GCRYPT=ON +LIBVNCSERVER_DEPENDENCIES += libgcrypt +else +LIBVNCSERVER_CONF_OPTS += -DWITH_GCRYPT=OFF +endif + +ifeq ($(BR2_PACKAGE_GNUTLS)$(BR2_PACKAGE_LIBGCRYPT),yy) +LIBVNCSERVER_CONF_OPTS += -DWITH_GNUTLS=ON +LIBVNCSERVER_DEPENDENCIES += gnutls +else +LIBVNCSERVER_CONF_OPTS += -DWITH_GNUTLS=OFF +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +LIBVNCSERVER_CONF_OPTS += -DWITH_JPEG=ON +LIBVNCSERVER_DEPENDENCIES += jpeg +else +LIBVNCSERVER_CONF_OPTS += -DWITH_JPEG=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +LIBVNCSERVER_CONF_OPTS += -DWITH_PNG=ON +LIBVNCSERVER_DEPENDENCIES += libpng +else +LIBVNCSERVER_CONF_OPTS += -DWITH_PNG=OFF +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +LIBVNCSERVER_CONF_OPTS += -DWITH_SYSTEMD=ON +LIBVNCSERVER_DEPENDENCIES += systemd +else +LIBVNCSERVER_CONF_OPTS += -DWITH_SYSTEMD=OFF +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LIBVNCSERVER_CONF_OPTS += -DWITH_ZLIB=ON +LIBVNCSERVER_DEPENDENCIES += zlib +else +LIBVNCSERVER_CONF_OPTS += -DWITH_ZLIB=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/libvorbis/Config.in b/package/libvorbis/Config.in new file mode 100644 index 00000000..1b7cd6c3 --- /dev/null +++ b/package/libvorbis/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBVORBIS + bool "libvorbis" + select BR2_PACKAGE_LIBOGG + help + Library for the Vorbis open source audio decoder + Ogg Vorbis is a fully open, non-proprietary, + patent-and-royalty-free, general-purpose compressed audio + format for mid to high quality (8kHz-48.0kHz, 16+ bit, + polyphonic) audio and music at fixed and variable bitrates + from 16 to 128 kbps/channel. + + This places Vorbis in the same competitive class as audio + representations such as MPEG-4 (AAC), and similar to, but + higher performance than MPEG-1/2 audio layer 3, MPEG-4 audio + (TwinVQ), WMA and PAC. + + https://xiph.org/vorbis/ diff --git a/package/libvorbis/libvorbis.hash b/package/libvorbis/libvorbis.hash new file mode 100644 index 00000000..2e44ba33 --- /dev/null +++ b/package/libvorbis/libvorbis.hash @@ -0,0 +1,4 @@ +# From http://www.xiph.org/downloads/ +sha256 b33cc4934322bcbf6efcbacf49e3ca01aadbea4114ec9589d1b1e9d20f72954b libvorbis-1.3.7.tar.xz +# License files, locally calculated +sha256 ec1815db59fcd302846df949d7424876cb2e2dc5ed1606c5fb0b36787b1cf43a COPYING diff --git a/package/libvorbis/libvorbis.mk b/package/libvorbis/libvorbis.mk new file mode 100644 index 00000000..c1baa185 --- /dev/null +++ b/package/libvorbis/libvorbis.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libvorbis +# +################################################################################ + +LIBVORBIS_VERSION = 1.3.7 +LIBVORBIS_SOURCE = libvorbis-$(LIBVORBIS_VERSION).tar.xz +LIBVORBIS_SITE = https://downloads.xiph.org/releases/vorbis +LIBVORBIS_INSTALL_STAGING = YES +LIBVORBIS_CONF_OPTS = --disable-oggtest +LIBVORBIS_DEPENDENCIES = host-pkgconf libogg +LIBVORBIS_LICENSE = BSD-3-Clause +LIBVORBIS_LICENSE_FILES = COPYING +LIBVORBIS_CPE_ID_VENDOR = xiph.org + +$(eval $(autotools-package)) diff --git a/package/libvpl/0001-Don-t-force-fstack-protector.patch b/package/libvpl/0001-Don-t-force-fstack-protector.patch new file mode 100644 index 00000000..14948e28 --- /dev/null +++ b/package/libvpl/0001-Don-t-force-fstack-protector.patch @@ -0,0 +1,32 @@ +From 682a9eabc71c2e33ebbbba2e75d0ba7caa08c7c8 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Mon, 8 May 2023 20:03:22 +0200 +Subject: [PATCH] Don't force -fstack-protector + +This allows the environment to decide whether SSP should be used or +not, for example to support toolchains that don't have SSP support. + +Upstream: Not applicable + +Signed-off-by: Bernd Kuhls +--- + cmake/CompileOptions.cmake | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/cmake/CompileOptions.cmake b/cmake/CompileOptions.cmake +index 9923f1c..5b24622 100644 +--- a/cmake/CompileOptions.cmake ++++ b/cmake/CompileOptions.cmake +@@ -54,9 +54,6 @@ else() + add_definitions("-D_FORTIFY_SOURCE=2") + endif() + endif() +- if(NOT MINGW) +- add_compile_options("-fstack-protector-strong") +- endif() + if(NOT MINGW) + add_link_options("-Wl,-z,relro,-z,now,-z,noexecstack") + endif() +-- +2.39.2 + diff --git a/package/libvpl/Config.in b/package/libvpl/Config.in new file mode 100644 index 00000000..b9e9a20f --- /dev/null +++ b/package/libvpl/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_LIBVPL_ARCH_SUPPORTS + bool + default y if BR2_ARCH_IS_64 + default y if BR2_arm + +config BR2_PACKAGE_LIBVPL + bool "libvpl" + depends on BR2_PACKAGE_LIBVPL_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_WAYLAND_PROTOCOLS if BR2_PACKAGE_WAYLAND + # libva support needs a libdrm with intel driver + select BR2_PACKAGE_LIBDRM_INTEL if BR2_PACKAGE_LIBVA && \ + (BR2_i386 || BR2_x86_64) && \ + BR2_PACKAGE_LIBDRM_HAS_ATOMIC + select BR2_PACKAGE_LIBXCB if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + help + oneAPI Video Processing Library (oneVPL) dispatcher, + tools, and examples + + https://github.com/oneapi-src/oneVPL + +comment "libvpl needs a toolchain w/ dynamic library, gcc >= 7, C++, threads" + depends on BR2_PACKAGE_LIBVPL_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \ + !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libvpl/libvpl.hash b/package/libvpl/libvpl.hash new file mode 100644 index 00000000..16034437 --- /dev/null +++ b/package/libvpl/libvpl.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 efc19e5a8544704100f814753eb5e09e85a68e3386508b164042c1f1f761bae8 libvpl-2.12.0.tar.gz +sha256 bf1cfac2e2792b6e1e995ce103d70796aecaf2ec7e4c5fe5474f7acec7b4a677 LICENSE diff --git a/package/libvpl/libvpl.mk b/package/libvpl/libvpl.mk new file mode 100644 index 00000000..25e8730c --- /dev/null +++ b/package/libvpl/libvpl.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# libvpl +# +################################################################################ + +LIBVPL_VERSION = 2.12.0 +LIBVPL_SITE = $(call github,intel,libvpl,v$(LIBVPL_VERSION)) +LIBVPL_LICENSE = MIT +LIBVPL_LICENSE_FILES = LICENSE +LIBVPL_INSTALL_STAGING = YES +LIBVPL_DEPENDENCIES = host-pkgconf + +LIBVPL_CONF_OPTS = \ + -DBUILD_TOOLS=OFF \ + -DINSTALL_EXAMPLE_CODE=OFF + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +LIBVPL_CONF_OPTS += \ + -DCMAKE_CXX_FLAGS="-latomic" +endif + +ifeq ($(BR2_PACKAGE_LIBVA),y) +LIBVPL_CONF_OPTS += -DENABLE_VA=ON +LIBVPL_DEPENDENCIES += libva +else +LIBVPL_CONF_OPTS += -DENABLE_VA=OFF +endif + +ifeq ($(BR2_PACKAGE_WAYLAND),y) +LIBVPL_CONF_OPTS += -DENABLE_WAYLAND=ON +LIBVPL_DEPENDENCIES += wayland wayland-protocols +else +LIBVPL_CONF_OPTS += -DENABLE_WAYLAND=OFF +endif + +ifeq ($(BR2_PACKAGE_XORG7),y) +LIBVPL_CONF_OPTS += -DENABLE_X11=ON +LIBVPL_DEPENDENCIES += libxcb xlib_libX11 +else +LIBVPL_CONF_OPTS += -DENABLE_X11=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/libvpx/0001-vpx_mem-vpx_mem.h-Fix-compilation-with-uClibc.patch b/package/libvpx/0001-vpx_mem-vpx_mem.h-Fix-compilation-with-uClibc.patch new file mode 100644 index 00000000..12960a62 --- /dev/null +++ b/package/libvpx/0001-vpx_mem-vpx_mem.h-Fix-compilation-with-uClibc.patch @@ -0,0 +1,30 @@ +From 90845a3a263e0f37b9c756c0b01377b9d1a225c9 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sun, 31 Jul 2016 10:37:05 +0200 +Subject: [PATCH] vpx_mem/vpx_mem.h: do not include + +The header does not exist in most C libraries, and including +it causes build failures. + +Signed-off-by: Bernd Kuhls +--- + vpx_mem/vpx_mem.h | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/vpx_mem/vpx_mem.h b/vpx_mem/vpx_mem.h +index c14f288..82df745 100644 +--- a/vpx_mem/vpx_mem.h ++++ b/vpx_mem/vpx_mem.h +@@ -12,9 +12,6 @@ + #define VPX_VPX_MEM_VPX_MEM_H_ + + #include "vpx_config.h" +-#if defined(__uClinux__) +-#include +-#endif + + #include + #include +-- +2.8.1 + diff --git a/package/libvpx/Config.in b/package/libvpx/Config.in new file mode 100644 index 00000000..6b0400c0 --- /dev/null +++ b/package/libvpx/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBVPX + bool "libvpx" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + A high-quality, open video format that's freely available to + everyone. Supports the VP8 and VP9 formats. + + http://webmproject.org + +comment "libvpx needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libvpx/libvpx.hash b/package/libvpx/libvpx.hash new file mode 100644 index 00000000..7cda8cc2 --- /dev/null +++ b/package/libvpx/libvpx.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 00dae80465567272abd077f59355f95ac91d7809a2d3006f9ace2637dd429d14 libvpx-1.13.1.tar.gz +sha256 8267348d5af1262c11d1a08de2f5afc77457755f1ac658627dd9acf71011d615 LICENSE +sha256 cc3273e0694ea5896145e0677699b53471b03ea43021ddc50e7923fbb9f5023c PATENTS diff --git a/package/libvpx/libvpx.mk b/package/libvpx/libvpx.mk new file mode 100644 index 00000000..9092ca6a --- /dev/null +++ b/package/libvpx/libvpx.mk @@ -0,0 +1,58 @@ +################################################################################ +# +# libvpx +# +################################################################################ + +LIBVPX_VERSION = 1.13.1 +LIBVPX_SITE = $(call github,webmproject,libvpx,v$(LIBVPX_VERSION)) +LIBVPX_LICENSE = BSD-3-Clause +LIBVPX_LICENSE_FILES = LICENSE PATENTS +LIBVPX_CPE_ID_VENDOR = webmproject +LIBVPX_INSTALL_STAGING = YES + +# ld is being used with cc options. therefore, pretend ld is cc. +LIBVPX_CONF_ENV = \ + LD="$(TARGET_CC)" \ + CROSS=$(GNU_TARGET_NAME) + +LIBVPX_CONF_OPTS = \ + --disable-examples \ + --disable-docs \ + --disable-unit-tests + +# vp8/ratectrl_rtc.cc vp9/ratectrl_rtc.cc +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +LIBVPX_CONF_OPTS += --enable-vp8-encoder --enable-vp9-encoder +else +LIBVPX_CONF_OPTS += --disable-vp8-encoder --disable-vp9-encoder +endif + +# This is not a true autotools package. It is based on the ffmpeg build system +define LIBVPX_CONFIGURE_CMDS + (cd $(LIBVPX_SRCDIR) && rm -rf config.cache && \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + $(LIBVPX_CONF_ENV) \ + ./configure \ + --target=generic-gnu \ + --enable-pic \ + --prefix=/usr \ + $(SHARED_STATIC_LIBS_OPTS) \ + $(LIBVPX_CONF_OPTS) \ + ) +endef + +define LIBVPX_BUILD_CMDS + $(TARGET_MAKE_ENV) $(LIBVPX_MAKE_ENV) $(MAKE) -C $(@D) all +endef + +define LIBVPX_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(LIBVPX_MAKE_ENV) $(MAKE) DESTDIR="$(STAGING_DIR)" -C $(@D) install +endef + +define LIBVPX_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(LIBVPX_MAKE_ENV) $(MAKE) DESTDIR="$(TARGET_DIR)" -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/libwebsock/0001-Switch-to-use-pkg-config-to-detect-libevent-and-open.patch b/package/libwebsock/0001-Switch-to-use-pkg-config-to-detect-libevent-and-open.patch new file mode 100644 index 00000000..ea3fd007 --- /dev/null +++ b/package/libwebsock/0001-Switch-to-use-pkg-config-to-detect-libevent-and-open.patch @@ -0,0 +1,81 @@ +From a6c35dbab5a2a75c176e031122ee64152e50e5d3 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 1 Jan 2015 12:23:43 +0100 +Subject: [PATCH] Switch to use pkg-config to detect libevent and openssl + +Switching to pkg-config fixes a number of problems when detecting the +libraries. For example the detection of libpthread was failing, +because libevent_threads was added to LIBS before libevent itself, +causing the libpthread test to fail due to missing symbols. pkg-config +is anyway nowadays the preferred way for detecting libraries. It also +has the benefit of working properly in static library situations. + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 36 ++++++++++++------------------------ + 1 file changed, 12 insertions(+), 24 deletions(-) + +diff --git a/configure.ac b/configure.ac +index d4109ce..fc1cadc 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -27,35 +27,20 @@ AC_FUNC_MALLOC + AC_FUNC_REALLOC + AC_CHECK_FUNCS([memset socket strstr]) + +-AC_CHECK_HEADERS([event2/thread.h], [ +- LIBS="-levent_pthreads ${LIBS}" +- ], [ +- echo "libevent_pthreads required, failing" +- exit -1 +- ]) +-AC_CHECK_LIB(pthread, pthread_create, [LIBS="-lpthread ${LIBS}"], [ ++AC_CHECK_LIB(pthread, pthread_create, [PTHREAD_LIBS="-lpthread"], [ + echo "pthreads required, failing" + exit -1 + ]) +-AC_CHECK_LIB(event, event_base_dispatch, [], [ +- echo "libevent required, failing" +- exit -1 +- ]) ++ ++PKG_CHECK_MODULES([EVENT], [libevent]) ++PKG_CHECK_MODULES([EVENT_PTHREAD], [libevent_pthreads]) + + AS_IF([test "x$with_ssl" != "xno"], + [ +- AC_CHECK_LIB([ssl], [SSL_CTX_new], +- [ +- LIBS="-lssl ${LIBS}" +- AC_CHECK_LIB([event_openssl], [bufferevent_openssl_socket_new], [ +- LIBS="-levent_openssl ${LIBS}" +- have_ssl=yes +- ], [have_ssl=no]) +- ], +- [have_ssl=no]) +- ], +- [have_ssl=no]) +- ++ PKG_CHECK_MODULES([SSL], [openssl], [have_ssl=yes], [have_ssl=no]) ++ AS_IF([test "x${have_ssl}" = "xyes"], ++ [PKG_CHECK_MODULES([EVENT_OPENSSL], [libevent_openssl], [have_ssl=yes], [have_ssl=no])])]) ++ + AS_IF([test "x$have_ssl" = "xyes"], + [ + AC_DEFINE([WEBSOCK_HAVE_SSL], [1], [Define if building SSL support]) +@@ -63,8 +48,11 @@ AS_IF([test "x$have_ssl" = "xyes"], + [AS_IF([test "x$with_ssl" = "xyes"], + [AC_MSG_ERROR([SSL support requested but not found]) + ])]) +- ++ + AM_CONDITIONAL([HAVE_SSL], [test "x$have_ssl" = "xyes"]) ++ ++LIBS="${EVENT_LIBS} ${EVENT_PTHREAD_LIBS} ${PTHREAD_LIBS} ${SSL_LIBS} ${EVENT_OPENSSL_LIBS}" ++ + AC_DEFINE_UNQUOTED([WEBSOCK_PACKAGE_VERSION], ["$PACKAGE_VERSION"], [libwebsock version]) + AC_DEFINE_UNQUOTED([WEBSOCK_PACKAGE_STRING], ["$PACKAGE_STRING"], [libwebsock package string]) + AC_DEFINE_UNQUOTED([WEBSOCK_PACKAGE_NAME], ["$PACKAGE_NAME"], [libwebsock package name]) +-- +2.1.0 + diff --git a/package/libwebsock/0002-fix-ssl.patch b/package/libwebsock/0002-fix-ssl.patch new file mode 100644 index 00000000..f5775387 --- /dev/null +++ b/package/libwebsock/0002-fix-ssl.patch @@ -0,0 +1,21 @@ +config: fix SSL detection + +The @WEBSOCK_HAVE_SSL@ is replaced at configure time with either a 1 or 0. +The rest of the code is simply checking to see if WEBSOCK_HAVE_SSL is +defined at all. Using a #undef WEBSOCK_HAVE_SSL will cause configure +to either comment it out or change the line to +"#define WEBSOCK_HAVE_SSL 1". + +Signed-off-by: Clayton Shotwell + +diff -durN a/src/websock_config.h.in b/src/websock_config.h.in +--- a/src/websock_config.h.in ++++ b/src/websock_config.h.in +@@ -4,6 +4,6 @@ + #define WEBSOCK_PACKAGE_STRING @WEBSOCK_PACKAGE_STRING@ + #define WEBSOCK_PACKAGE_VERSION @WEBSOCK_PACKAGE_VERSION@ + #define WEBSOCK_PACKAGE_NAME @WEBSOCK_PACKAGE_NAME@ +-#define WEBSOCK_HAVE_SSL @WEBSOCK_HAVE_SSL@ ++#undef WEBSOCK_HAVE_SSL + + #endif diff --git a/package/libwebsock/0003-fix-incorrect-inline.patch b/package/libwebsock/0003-fix-incorrect-inline.patch new file mode 100644 index 00000000..043df45b --- /dev/null +++ b/package/libwebsock/0003-fix-incorrect-inline.patch @@ -0,0 +1,66 @@ +utf: do not define decode() to be inline + +Currently, decode() is prototyped in utf.h, its body is in utf.c and it +is called from util.c. + +However, decode() is defined to be inline, which can not work since, +when compiling util.c, the body of decode() is out-of-scope for that +compilation unit. + +Furthermore, decode() uses a utf8d, which is a static defined in utf.c . +So utf8d is not visible when compiling util.c either. + +This means that the definition of decode() along with utf8d is basically +wrong, and is now failing with gcc-5.x, with warnings like so: + + libtool: compile: /home/ymorin/dev/buildroot/O/host/usr/bin/arm-linux-gcc -DHAVE_CONFIG_H -I. -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -Wmissing-prototypes -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -c utf.c -fPIC -DPIC -o .libs/libwebsock_la-utf.o + utf.c:36:12: warning: ‘utf8d’ is static but used in inline function ‘decode’ which is not static + *state = utf8d[256 + *state*16 + type]; + ^ + utf.c:30:19: warning: ‘utf8d’ is static but used in inline function ‘decode’ which is not static + uint32_t type = utf8d[byte]; + ^ + libtool: compile: /home/ymorin/dev/buildroot/O/host/usr/bin/arm-linux-gcc -DHAVE_CONFIG_H -I. -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -Wmissing-prototypes -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -c util.c -fPIC -DPIC -o .libs/libwebsock_la-util.o + In file included from websock.h:73:0, + from util.c:20: + utf.h:25:17: warning: inline function ‘decode’ declared but never defined + uint32_t inline decode(uint32_t *state, uint32_t *codep, uint32_t byte); + ^ + +This results in decode() to be omitted from libwebsock.so, and thus link +failures when another program wants to link with -lwebsock. + +The simplest solution is to not inline decode() at all. + +Signed-off-by: "Yann E. MORIN" + +--- +Note: an alternative would be to move both decode() and utf8d into +decode.h nad ditch decode.c if decode really must be inline. This is +left as an execise for an interested party. But since upstream hasn't +seen a single commit in more than a year now... :-( + +diff -durN a/src/utf.c b/src/utf.c +--- a/src/utf.c 2014-07-15 01:43:20.000000000 +0200 ++++ b/src/utf.c 2015-08-22 22:29:38.667393786 +0200 +@@ -24,7 +24,7 @@ + 1,3,1,1,1,1,1,3,1,3,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1, // s7..s8 + }; + +-uint32_t inline ++uint32_t + decode(uint32_t* state, uint32_t* codep, uint32_t byte) + { + uint32_t type = utf8d[byte]; +diff -durN a/src/utf.h b/src/utf.h +--- a/src/utf.h 2014-07-15 01:43:20.000000000 +0200 ++++ b/src/utf.h 2015-08-22 22:29:10.439227396 +0200 +@@ -22,7 +22,7 @@ + + #include + +-uint32_t inline decode(uint32_t *state, uint32_t *codep, uint32_t byte); ++uint32_t decode(uint32_t *state, uint32_t *codep, uint32_t byte); + + + #endif /* UTF_H_ */ diff --git a/package/libwebsock/Config.in b/package/libwebsock/Config.in new file mode 100644 index 00000000..14651cf4 --- /dev/null +++ b/package/libwebsock/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBWEBSOCK + bool "libwebsock" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBEVENT + help + C library for easy WebSockets servers. + + This library allows a developer to quickly develop WebSocket + servers by focusing on the actual logic of your WebSocket + implementation instead of the details of the WebSocket + protocol or even specifics of C sockets. + + https://github.com/payden/libwebsock + +comment "libwebsock needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libwebsock/libwebsock.hash b/package/libwebsock/libwebsock.hash new file mode 100644 index 00000000..43f0935a --- /dev/null +++ b/package/libwebsock/libwebsock.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 34cf8376446e2371c9af47394043a30dc16af7ed5437d56bc6135c5dfda9ed22 libwebsock-3c1615eeadb0b582b63851073bfe3e5132f31ebc.tar.gz +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 COPYING.lesser diff --git a/package/libwebsock/libwebsock.mk b/package/libwebsock/libwebsock.mk new file mode 100644 index 00000000..df3af3b0 --- /dev/null +++ b/package/libwebsock/libwebsock.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# libwebsock +# +################################################################################ + +LIBWEBSOCK_VERSION = 3c1615eeadb0b582b63851073bfe3e5132f31ebc +LIBWEBSOCK_SITE = $(call github,payden,libwebsock,$(LIBWEBSOCK_VERSION)) +LIBWEBSOCK_DEPENDENCIES = libevent host-pkgconf +LIBWEBSOCK_AUTORECONF = YES +LIBWEBSOCK_INSTALL_STAGING = YES +LIBWEBSOCK_LICENSE = LGPL-3.0 +LIBWEBSOCK_LICENSE_FILES = COPYING.lesser + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBWEBSOCK_DEPENDENCIES += openssl +LIBWEBSOCK_CONF_OPTS += --with-ssl +else +LIBWEBSOCK_CONF_OPTS += --without-ssl +endif + +$(eval $(autotools-package)) diff --git a/package/libwebsockets/0001-lib-tls-CMakeLists.txt-fix-build-with-pkg-config.patch b/package/libwebsockets/0001-lib-tls-CMakeLists.txt-fix-build-with-pkg-config.patch new file mode 100644 index 00000000..94d643e1 --- /dev/null +++ b/package/libwebsockets/0001-lib-tls-CMakeLists.txt-fix-build-with-pkg-config.patch @@ -0,0 +1,47 @@ +From 786ec9231e402cd4e7621483be6f1837de724e3c Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 26 Dec 2023 22:38:18 +0100 +Subject: [PATCH] lib/tls/CMakeLists.txt: fix build with pkg-config + +Fix the following wolfssl build failure raised since +https://github.com/warmcat/libwebsockets/commit/079726c4b252e795b208209752077c1ae4504b5b: + +-- Checking for one of the modules 'wolfssl' +CMake Error at lib/tls/CMakeLists.txt:79 (message): + You must set LWS_WOLFSSL_LIBRARIES and LWS_WOLFSSL_INCLUDE_DIRS when + LWS_WITH_WOLFSSL is turned on. + +Fixes: + - http://autobuild.buildroot.org/results/fe062b9f0b330e71309334d7605d64ea73761b59 + +Upstream: https://github.com/warmcat/libwebsockets/commit/f18fc2316f9743624ced9ba934595f7b9ba8cd05 +Signed-off-by: Fabrice Fontaine +--- + lib/tls/CMakeLists.txt | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/lib/tls/CMakeLists.txt b/lib/tls/CMakeLists.txt +index 80b46203..230b0d29 100644 +--- a/lib/tls/CMakeLists.txt ++++ b/lib/tls/CMakeLists.txt +@@ -72,12 +72,16 @@ if (LWS_WITH_SSL AND LWS_WITH_WOLFSSL) + include (FindPkgConfig) + PKG_SEARCH_MODULE(LWS_WOLFSSL wolfssl) + +- if (NOT WOLFSSL_FOUND) ++ if (NOT LWS_WOLFSSL_FOUND) + if (LWS_WITH_CYASSL) + message(FATAL_ERROR "You must set LWS_CYASSL_LIBRARIES and LWS_CYASSL_INCLUDE_DIRS when LWS_WITH_CYASSL is turned on.") + else() + message(FATAL_ERROR "You must set LWS_WOLFSSL_LIBRARIES and LWS_WOLFSSL_INCLUDE_DIRS when LWS_WITH_WOLFSSL is turned on.") + endif() ++ else() ++ set(WOLFSSL_LIBRARIES ${LWS_WOLFSSL_LIBRARIES}) ++ set(WOLFSSL_INCLUDE_DIRS ${LWS_WOLFSSL_INCLUDE_DIRS}) ++ set(WOLFSSL_FOUND 1) + endif() + else() + set(WOLFSSL_LIBRARIES ${LWS_WOLFSSL_LIBRARIES}) +-- +2.43.0 + diff --git a/package/libwebsockets/Config.in b/package/libwebsockets/Config.in new file mode 100644 index 00000000..05c13264 --- /dev/null +++ b/package/libwebsockets/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_LIBWEBSOCKETS + bool "libwebsockets" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_ZLIB + help + Libwebsockets is a lightweight pure C library built to use + minimal CPU and memory resources, and provide fast throughput + in both directions. + + https://libwebsockets.org/ + +if BR2_PACKAGE_LIBWEBSOCKETS + +config BR2_PACKAGE_LIBWEBSOCKETS_EXT_POLL + bool "enable external poll loop support" + default y # legacy, was previously always enabled + help + Enable external poll loop support code. This was + unconditionally compiled in for library versions + prior to 3.2.0. + +endif + +comment "libwebsockets needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/libwebsockets/libwebsockets.hash b/package/libwebsockets/libwebsockets.hash new file mode 100644 index 00000000..01e7c7bf --- /dev/null +++ b/package/libwebsockets/libwebsockets.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 6fd33527b410a37ebc91bb64ca51bdabab12b076bc99d153d7c5dd405e4bdf90 libwebsockets-4.3.3.tar.gz +sha256 2b5dd8030691f3d1870a040f085c37e45d9ab9c684a7f1284f5f379c1e829b28 LICENSE diff --git a/package/libwebsockets/libwebsockets.mk b/package/libwebsockets/libwebsockets.mk new file mode 100644 index 00000000..c00c44ca --- /dev/null +++ b/package/libwebsockets/libwebsockets.mk @@ -0,0 +1,101 @@ +################################################################################ +# +# libwebsockets +# +################################################################################ + +LIBWEBSOCKETS_VERSION = 4.3.3 +LIBWEBSOCKETS_SITE = $(call github,warmcat,libwebsockets,v$(LIBWEBSOCKETS_VERSION)) +LIBWEBSOCKETS_LICENSE = MIT with exceptions +LIBWEBSOCKETS_LICENSE_FILES = LICENSE +LIBWEBSOCKETS_DEPENDENCIES = zlib +LIBWEBSOCKETS_INSTALL_STAGING = YES +LIBWEBSOCKETS_CONF_OPTS = \ + -DDISABLE_WERROR=ON \ + -DLWS_WITHOUT_TESTAPPS=ON \ + -DLWS_IPV6=ON \ + -DLWS_UNIX_SOCK=ON \ + -DLWS_WITHOUT_EXTENSIONS=OFF + +# If LWS_MAX_SMP=1, then there is no code related to pthreads compiled +# in the library. If unset, LWS_MAX_SMP defaults to 32 and a small +# amount of pthread mutex code is built into the library. +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),) +LIBWEBSOCKETS_CONF_OPTS += \ + -DLWS_MAX_SMP=1 \ + -DLWS_WITH_SYS_SMD=OFF +else +LIBWEBSOCKETS_CONF_OPTS += \ + -DLWS_MAX_SMP= \ + -DLWS_WITH_SYS_SMD=ON +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBWEBSOCKETS_DEPENDENCIES += openssl host-openssl +LIBWEBSOCKETS_CONF_OPTS += \ + -DLWS_WITH_SSL=ON \ + -DLWS_WITH_MBEDTLS=OFF \ + -DLWS_WITH_WOLFSSL=OFF +else ifeq ($(BR2_PACKAGE_MBEDTLS),y) +LIBWEBSOCKETS_DEPENDENCIES += mbedtls +LIBWEBSOCKETS_CONF_OPTS += \ + -DLWS_WITH_SSL=ON \ + -DLWS_WITH_MBEDTLS=ON \ + -DLWS_WITH_WOLFSSL=OFF +else ifeq ($(BR2_PACKAGE_WOLFSSL_ALL),y) +LIBWEBSOCKETS_DEPENDENCIES += host-pkgconf wolfssl +LIBWEBSOCKETS_CONF_OPTS += \ + -DLWS_WITH_SSL=ON \ + -DLWS_WITH_MBEDTLS=OFF \ + -DLWS_WITH_WOLFSSL=ON +else +LIBWEBSOCKETS_CONF_OPTS += \ + -DLWS_WITH_SSL=OFF \ + -DLWS_WITH_MBEDTLS=OFF \ + -DLWS_WITH_WOLFSSL=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBEV),y) +LIBWEBSOCKETS_DEPENDENCIES += libev +LIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_LIBEV=ON +else +LIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_LIBEV=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBEVENT),y) +LIBWEBSOCKETS_DEPENDENCIES += libevent +LIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_LIBEVENT=ON +else +LIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_LIBEVENT=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +LIBWEBSOCKETS_DEPENDENCIES += libglib2 +LIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_GLIB=ON +else +LIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_GLIB=OFF +endif + +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBMOUNT),y) +LIBWEBSOCKETS_DEPENDENCIES += util-linux +LIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_FSMOUNT=ON +else +LIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_FSMOUNT=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBUV),y) +LIBWEBSOCKETS_DEPENDENCIES += libuv +LIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_LIBUV=ON +else +LIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_LIBUV=OFF +endif + +ifeq ($(BR2_SHARED_LIBS),y) +LIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_STATIC=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBWEBSOCKETS_EXT_POLL),y) +LIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_EXTERNAL_POLL=ON +endif + +$(eval $(cmake-package)) diff --git a/package/libwpe/Config.in b/package/libwpe/Config.in new file mode 100644 index 00000000..c11c8539 --- /dev/null +++ b/package/libwpe/Config.in @@ -0,0 +1,13 @@ +comment "libwpe needs a toolchain w/ C++, dynamic library and an OpenEGL-capable backend" + depends on !BR2_PACKAGE_HAS_LIBEGL || !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS + +config BR2_PACKAGE_LIBWPE + bool "libwpe" + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_LIBXKBCOMMON + help + Base library for the WPE WebKit port. + + https://wpewebkit.org/ diff --git a/package/libwpe/libwpe.hash b/package/libwpe/libwpe.hash new file mode 100644 index 00000000..2a2ee3c2 --- /dev/null +++ b/package/libwpe/libwpe.hash @@ -0,0 +1,7 @@ +# From https://wpewebkit.org/releases/libwpe-1.16.0.tar.xz.sums +md5 9779115aaa7e67abe642777394e7bfa2 libwpe-1.16.0.tar.xz +sha1 ea574e09b5d47461a5579a24006488419474d136 libwpe-1.16.0.tar.xz +sha256 c7f3a3c6b3d006790d486dc7cceda2b6d2e329de07f33bc47dfc53f00f334b2a libwpe-1.16.0.tar.xz + +# Hashes for license files: +sha256 35bef295cedbbf179eaee14328002587a0e7dc08ebf3f15ea080a6f2815f0d7b COPYING diff --git a/package/libwpe/libwpe.mk b/package/libwpe/libwpe.mk new file mode 100644 index 00000000..de49cedf --- /dev/null +++ b/package/libwpe/libwpe.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# libwpe +# +################################################################################ + +# The middle number is even for stable releases, odd for development ones. +LIBWPE_VERSION = 1.16.0 +LIBWPE_SITE = https://wpewebkit.org/releases +LIBWPE_SOURCE = libwpe-$(LIBWPE_VERSION).tar.xz +LIBWPE_INSTALL_STAGING = YES +LIBWPE_LICENSE = BSD-2-Clause +LIBWPE_LICENSE_FILES = COPYING +LIBWPE_DEPENDENCIES = libegl libxkbcommon + +LIBWPE_CFLAGS = $(TARGET_CFLAGS) +LIBWPE_CXXFLAGS = $(TARGET_CXXFLAGS) + +# Workaround for https://github.com/raspberrypi/userland/issues/316 +ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) +LIBWPE_CFLAGS += -D_GNU_SOURCE +LIBWPE_CXXFLAGS += -D_GNU_SOURCE +endif + +$(eval $(meson-package)) diff --git a/package/libxcrypt/Config.in b/package/libxcrypt/Config.in new file mode 100644 index 00000000..57ae8f67 --- /dev/null +++ b/package/libxcrypt/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBXCRYPT + bool "libxcrypt" + help + libxcrypt is a modern library for one-way hashing + of passwords. It supports a wide variety of both + modern and historical hashing methods: + yescrypt, gost-yescrypt, scrypt, bcrypt, sha512crypt, + sha256crypt, md5crypt, SunMD5, sha1crypt, NT, + bsdicrypt, bigcrypt, and descrypt. + + https://github.com/besser82/libxcrypt diff --git a/package/libxcrypt/libxcrypt.hash b/package/libxcrypt/libxcrypt.hash new file mode 100644 index 00000000..9bcf1190 --- /dev/null +++ b/package/libxcrypt/libxcrypt.hash @@ -0,0 +1,6 @@ +# From https://github.com/besser82/libxcrypt/releases/download/v4.4.36/libxcrypt-4.4.36.tar.xz.sha256sum +sha256 e5e1f4caee0a01de2aee26e3138807d6d3ca2b8e67287966d1fefd65e1fd8943 libxcrypt-4.4.36.tar.xz + +# Locally calculated +sha256 f9b48b0bc67a92b752780710aa774cf08b62ec2ebaa3f4aebd00069fba6effd2 LICENSING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB diff --git a/package/libxcrypt/libxcrypt.mk b/package/libxcrypt/libxcrypt.mk new file mode 100644 index 00000000..d39186ee --- /dev/null +++ b/package/libxcrypt/libxcrypt.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# libxcrypt +# +################################################################################ + +LIBXCRYPT_VERSION = 4.4.36 +LIBXCRYPT_SITE = https://github.com/besser82/libxcrypt/releases/download/v$(LIBXCRYPT_VERSION) +LIBXCRYPT_SOURCE = libxcrypt-$(LIBXCRYPT_VERSION).tar.xz +LIBXCRYPT_LICENSE = LGPL-2.1+ +LIBXCRYPT_LICENSE_FILES = LICENSING COPYING.LIB +LIBXCRYPT_INSTALL_STAGING = YES + +# Some warnings turn into errors with some sensitive compilers +LIBXCRYPT_CONF_OPTS = --disable-werror +HOST_LIBXCRYPT_CONF_OPTS = --disable-werror + +# Disable obsolete and unsecure API +LIBXCRYPT_CONF_OPTS += --disable-obsolete_api +HOST_LIBXCRYPT_CONF_OPTS += --disable-obsolete_api + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libxkbcommon/Config.in b/package/libxkbcommon/Config.in new file mode 100644 index 00000000..c7fe188a --- /dev/null +++ b/package/libxkbcommon/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_LIBXKBCOMMON + bool "libxkbcommon" + select BR2_PACKAGE_LIBXCB if BR2_PACKAGE_XORG7 + help + xkbcommon is a keymap compiler and support library which + processes a reduced subset of keymaps as defined by the XKB + specification. + + https://xkbcommon.org + +if BR2_PACKAGE_LIBXKBCOMMON + +config BR2_PACKAGE_LIBXKBCOMMON_TOOLS + bool "tools" + select BR2_PACKAGE_WAYLAND_PROTOCOLS if BR2_PACKAGE_WAYLAND + help + Tools: xkbcli, xkbcli-compile-keymap, xkbcli-how-to-type, + xkbcli-interactive-evdev, xkbcli-interactive-x11, + xkbcli-interactive-wayland + +endif diff --git a/package/libxkbcommon/libxkbcommon.hash b/package/libxkbcommon/libxkbcommon.hash new file mode 100644 index 00000000..fff2b7a9 --- /dev/null +++ b/package/libxkbcommon/libxkbcommon.hash @@ -0,0 +1,5 @@ +# From https://lists.freedesktop.org/archives/wayland-devel/2022-February/042104.html +sha256 106cec5263f9100a7e79b5f7220f889bc78e7d7ffc55d2b6fdb1efefb8024031 libxkbcommon-1.4.0.tar.xz + +# License file: +sha256 086caee279449369d41c1157911ec7696e707b93feba7280de757d3c470b2dfb LICENSE diff --git a/package/libxkbcommon/libxkbcommon.mk b/package/libxkbcommon/libxkbcommon.mk new file mode 100644 index 00000000..882791b9 --- /dev/null +++ b/package/libxkbcommon/libxkbcommon.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# libxkbcommon +# +################################################################################ + +LIBXKBCOMMON_VERSION = 1.4.0 +LIBXKBCOMMON_SITE = https://xkbcommon.org/download +LIBXKBCOMMON_SOURCE = libxkbcommon-$(LIBXKBCOMMON_VERSION).tar.xz +LIBXKBCOMMON_LICENSE = MIT/X11 +LIBXKBCOMMON_LICENSE_FILES = LICENSE +LIBXKBCOMMON_CPE_ID_VENDOR = xkbcommon +LIBXKBCOMMON_INSTALL_STAGING = YES +LIBXKBCOMMON_DEPENDENCIES = host-bison host-flex +LIBXKBCOMMON_CONF_OPTS = \ + -Denable-docs=false \ + -Denable-xkbregistry=false + +ifeq ($(BR2_PACKAGE_XORG7),y) +LIBXKBCOMMON_CONF_OPTS += -Denable-x11=true +LIBXKBCOMMON_DEPENDENCIES += libxcb +else +LIBXKBCOMMON_CONF_OPTS += -Denable-x11=false +endif + +ifeq ($(BR2_PACKAGE_LIBXKBCOMMON_TOOLS),y) +LIBXKBCOMMON_CONF_OPTS += -Denable-tools=true +else +LIBXKBCOMMON_CONF_OPTS += -Denable-tools=false +endif + +ifeq ($(BR2_PACKAGE_LIBXKBCOMMON_TOOLS)$(BR2_PACKAGE_WAYLAND),yy) +LIBXKBCOMMON_CONF_OPTS += -Denable-wayland=true +LIBXKBCOMMON_DEPENDENCIES += wayland wayland-protocols +else +LIBXKBCOMMON_CONF_OPTS += -Denable-wayland=false +endif + +$(eval $(meson-package)) diff --git a/package/libxml-parser-perl/libxml-parser-perl.hash b/package/libxml-parser-perl/libxml-parser-perl.hash new file mode 100644 index 00000000..4b913865 --- /dev/null +++ b/package/libxml-parser-perl/libxml-parser-perl.hash @@ -0,0 +1,3 @@ +# locally computed hash +sha256 ad4aae643ec784f489b956abe952432871a622d4e2b5c619e8855accbfc4d1d8 XML-Parser-2.47.tar.gz +sha256 3bedfe79fbad08a2b50e1b2b6123e40c68b58b1988d53763b63b6fd295bb0f90 README diff --git a/package/libxml-parser-perl/libxml-parser-perl.mk b/package/libxml-parser-perl/libxml-parser-perl.mk new file mode 100644 index 00000000..06bbd3b1 --- /dev/null +++ b/package/libxml-parser-perl/libxml-parser-perl.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# libxml-parser-perl +# +################################################################################ + +LIBXML_PARSER_PERL_VERSION = 2.47 +LIBXML_PARSER_PERL_SOURCE = XML-Parser-$(LIBXML_PARSER_PERL_VERSION).tar.gz +LIBXML_PARSER_PERL_SITE = $(BR2_CPAN_MIRROR)/authors/id/T/TO/TODDR +HOST_LIBXML_PARSER_PERL_DEPENDENCIES = host-expat +LIBXML_PARSER_PERL_LICENSE = Artistic or GPL-1.0+ +LIBXML_PARSER_PERL_LICENSE_FILES = README +LIBXML_PARSER_PERL_RUN_PERL = `which perl` + +HOST_LIBXML_PARSER_PERL_CONFIGURE_OPTS = \ + $(HOST_CONFIGURE_OPTS) \ + LD="$(HOSTCC)" + +define HOST_LIBXML_PARSER_PERL_CONFIGURE_CMDS + (cd $(@D) ; \ + $(HOST_LIBXML_PARSER_PERL_CONFIGURE_OPTS) \ + $(LIBXML_PARSER_PERL_RUN_PERL) Makefile.PL \ + PREFIX=$(HOST_DIR) \ + EXPATLIBPATH=$(HOST_DIR)/lib \ + EXPATINCPATH=$(HOST_DIR)/include \ + INSTALLDIRS=site \ + INSTALLSITELIB=$(HOST_DIR)/lib/perl \ + INSTALLSITEARCH=$(HOST_DIR)/lib/perl \ + ) +endef + +define HOST_LIBXML_PARSER_PERL_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_LIBXML_PARSER_PERL_CONFIGURE_OPTS) -C $(@D) +endef + +define HOST_LIBXML_PARSER_PERL_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install +endef + +$(eval $(host-generic-package)) diff --git a/package/libxml2/Config.in b/package/libxml2/Config.in new file mode 100644 index 00000000..ebd63fe5 --- /dev/null +++ b/package/libxml2/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBXML2 + bool "libxml2" + help + XML C Parser + + http://xmlsoft.org/ diff --git a/package/libxml2/libxml2.hash b/package/libxml2/libxml2.hash new file mode 100644 index 00000000..7b9ffc5d --- /dev/null +++ b/package/libxml2/libxml2.hash @@ -0,0 +1,4 @@ +# From https://download.gnome.org/sources/libxml2/2.13/libxml2-2.13.3.sha256sum +sha256 0805d7c180cf09caad71666c7a458a74f041561a532902454da5047d83948138 libxml2-2.13.3.tar.xz +# License files, locally calculated +sha256 c99aae1afe013e50b8b3701e089222b351258043c3025b64053a233fd25b4be7 Copyright diff --git a/package/libxml2/libxml2.mk b/package/libxml2/libxml2.mk new file mode 100644 index 00000000..068ce157 --- /dev/null +++ b/package/libxml2/libxml2.mk @@ -0,0 +1,82 @@ +################################################################################ +# +# libxml2 +# +################################################################################ + +LIBXML2_VERSION_MAJOR = 2.13 +LIBXML2_VERSION = $(LIBXML2_VERSION_MAJOR).3 +LIBXML2_SOURCE = libxml2-$(LIBXML2_VERSION).tar.xz +LIBXML2_SITE = \ + https://download.gnome.org/sources/libxml2/$(LIBXML2_VERSION_MAJOR) +LIBXML2_INSTALL_STAGING = YES +LIBXML2_LICENSE = MIT +LIBXML2_LICENSE_FILES = Copyright +LIBXML2_CPE_ID_VENDOR = xmlsoft +LIBXML2_CONFIG_SCRIPTS = xml2-config + +# relocation truncated to fit: R_68K_GOT16O +ifeq ($(BR2_m68k_cf),y) +LIBXML2_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -mxgot" +endif + +LIBXML2_CONF_OPTS = --with-http --with-gnu-ld --without-debug + +HOST_LIBXML2_DEPENDENCIES = host-pkgconf +LIBXML2_DEPENDENCIES = host-pkgconf + +HOST_LIBXML2_CONF_OPTS = --without-zlib --without-lzma + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +LIBXML2_DEPENDENCIES += python3 +LIBXML2_CONF_OPTS += --with-python +else +LIBXML2_CONF_OPTS += --without-python +endif + +ifeq ($(BR2_PACKAGE_HOST_PYTHON3),y) +HOST_LIBXML2_DEPENDENCIES += host-python3 +HOST_LIBXML2_CONF_OPTS += --with-python +else +HOST_LIBXML2_CONF_OPTS += --without-python +endif + +ifeq ($(BR2_PACKAGE_ICU),y) +LIBXML2_DEPENDENCIES += icu +LIBXML2_CONF_OPTS += --with-icu +else +LIBXML2_CONF_OPTS += --without-icu +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LIBXML2_DEPENDENCIES += zlib +LIBXML2_CONF_OPTS += --with-zlib=$(STAGING_DIR)/usr +else +LIBXML2_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +LIBXML2_DEPENDENCIES += xz +LIBXML2_CONF_OPTS += --with-lzma +else +LIBXML2_CONF_OPTS += --without-lzma +endif + +LIBXML2_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBICONV),libiconv) + +ifeq ($(BR2_ENABLE_LOCALE)$(BR2_PACKAGE_LIBICONV),y) +LIBXML2_CONF_OPTS += --with-iconv +else +LIBXML2_CONF_OPTS += --without-iconv +endif + +define LIBXML2_CLEANUP_XML2CONF + rm -f $(TARGET_DIR)/usr/lib/xml2Conf.sh +endef +LIBXML2_POST_INSTALL_TARGET_HOOKS += LIBXML2_CLEANUP_XML2CONF + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) + +# libxml2 for the host +LIBXML2_HOST_BINARY = $(HOST_DIR)/bin/xmllint diff --git a/package/libxmlb/Config.in b/package/libxmlb/Config.in new file mode 100644 index 00000000..c582b14f --- /dev/null +++ b/package/libxmlb/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBXMLB + bool "libxmlb" + depends on !BR2_STATIC_LIBS # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + depends on BR2_USE_WCHAR # glib2 + select BR2_PACKAGE_LIBGLIB2 + help + The libxmlb library takes XML source, and converts it + to a structured binary representation with a deduplicated + string table where the strings have the NULs included. + + https://github.com/hughsie/libxmlb + +comment "libxmlb 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/package/libxmlb/libxmlb.hash b/package/libxmlb/libxmlb.hash new file mode 100644 index 00000000..0f91486a --- /dev/null +++ b/package/libxmlb/libxmlb.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 7050a3e43c4e1f53020cfbdfcb6fd5dc664c6c240faceb5ae3c8830423918262 libxmlb-0.3.19.tar.gz +sha256 20c17d8b8c48a600800dfd14f95d5cb9ff47066a9641ddeab48dc54aec96e331 LICENSE diff --git a/package/libxmlb/libxmlb.mk b/package/libxmlb/libxmlb.mk new file mode 100644 index 00000000..1d5d339e --- /dev/null +++ b/package/libxmlb/libxmlb.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# libxmlb +# +################################################################################ + +LIBXMLB_VERSION = 0.3.19 +LIBXMLB_SITE = $(call github,hughsie,libxmlb,$(LIBXMLB_VERSION)) +LIBXMLB_LICENSE = LGPL-2.1+ +LIBXMLB_LICENSE_FILES = LICENSE +LIBXMLB_INSTALL_STAGING = YES +LIBXMLB_DEPENDENCIES = libglib2 +LIBXMLB_CONF_OPTS = -Dgtkdoc=false -Dtests=false + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +LIBXMLB_CONF_OPTS += -Dintrospection=true +LIBXMLB_DEPENDENCIES += gobject-introspection +else +LIBXMLB_CONF_OPTS += -Dintrospection=false +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +LIBXMLB_DEPENDENCIES += zstd +LIBXMLB_CONF_OPTS += -Dzstd=enabled +else +LIBXMLB_CONF_OPTS += -Dzstd=disabled +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +LIBXMLB_DEPENDENCIES += xz +LIBXMLB_CONF_OPTS += -Dlzma=enabled +else +LIBXMLB_CONF_OPTS += -Dlzma=disabled +endif + +$(eval $(meson-package)) diff --git a/package/libxmlpp/Config.in b/package/libxmlpp/Config.in new file mode 100644 index 00000000..0b48e108 --- /dev/null +++ b/package/libxmlpp/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LIBXMLPP + bool "libxml++" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # glibmm -> libsigc + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR # glibmm -> libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glibmm -> libglib2 + depends on BR2_USE_MMU # glibmm -> libglib2 + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_GLIBMM + help + libxml++ is a C++ wrapper for the libxml XML parser library. + + https://libxmlplusplus.github.io/libxmlplusplus/ + +comment "libxml++ needs a toolchain w/ C++, wchar, threads, gcc >= 7" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || !BR2_USE_WCHAR \ + ||!BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU diff --git a/package/libxmlpp/libxmlpp.hash b/package/libxmlpp/libxmlpp.hash new file mode 100644 index 00000000..84084b1e --- /dev/null +++ b/package/libxmlpp/libxmlpp.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/libxml++/5.2/libxml++-5.2.0.sha256sum +sha256 e41b8eae55210511585ae638615f00db7f982c0edea94699865f582daf03b44f libxml++-5.2.0.tar.xz + +# Hash for license file +sha256 a190dc9c8043755d90f8b0a75fa66b9e42d4af4c980bf5ddc633f0124db3cee7 COPYING diff --git a/package/libxmlpp/libxmlpp.mk b/package/libxmlpp/libxmlpp.mk new file mode 100644 index 00000000..e8fbb75b --- /dev/null +++ b/package/libxmlpp/libxmlpp.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# libxmlpp +# +################################################################################ + +LIBXMLPP_VERSION_MAJOR = 5.2 +LIBXMLPP_VERSION = $(LIBXMLPP_VERSION_MAJOR).0 +LIBXMLPP_LICENSE = LGPL-2.1 (library), LGPL-2.0+ (examples) +LIBXMLPP_LICENSE_FILES = COPYING +LIBXMLPP_SOURCE = libxml++-$(LIBXMLPP_VERSION).tar.xz +LIBXMLPP_SITE = https://download.gnome.org/sources/libxml++/$(LIBXMLPP_VERSION_MAJOR) +LIBXMLPP_INSTALL_STAGING = YES +LIBXMLPP_DEPENDENCIES = libxml2 glibmm host-pkgconf +LIBXMLPP_CONF_OPTS = \ + -Dbuild-examples=false \ + -Dbuild-tests=false \ + -Dvalidation=false + +$(eval $(meson-package)) diff --git a/package/libxmlrpc/Config.in b/package/libxmlrpc/Config.in new file mode 100644 index 00000000..33d51232 --- /dev/null +++ b/package/libxmlrpc/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_LIBXMLRPC + bool "libxmlrpc" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBCURL + help + XML-RPC is a quick-and-easy way to make procedure calls over + the Internet. It converts the procedure call into an XML + document, sends it to a remote server using HTTP, and gets + back the response as XML. + + http://xmlrpc-c.sourceforge.net/ + +if BR2_PACKAGE_LIBXMLRPC + +config BR2_PACKAGE_LIBXMLRPC_TOOLS_XMLRPC + bool "install cli tool" + depends on !BR2_STATIC_LIBS + help + Command line tool xmlrpc. + +comment "cli tool needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +endif # BR2_PACKAGE_LIBXMLRPC + +comment "libxmlrpc needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libxmlrpc/libxmlrpc.hash b/package/libxmlrpc/libxmlrpc.hash new file mode 100644 index 00000000..b9167ca5 --- /dev/null +++ b/package/libxmlrpc/libxmlrpc.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 7265be1a181e57106707b5278daf64b2a717b8a2a9e6ec8992d8c8084e64eaa2 libxmlrpc-r3176-svn5.tar.gz +sha256 db7a6d3f187b218c3534010a83424c6bcdef88e6a0b6b1aa3a8762238bd642e6 doc/COPYING diff --git a/package/libxmlrpc/libxmlrpc.mk b/package/libxmlrpc/libxmlrpc.mk new file mode 100644 index 00000000..dd09fa8f --- /dev/null +++ b/package/libxmlrpc/libxmlrpc.mk @@ -0,0 +1,68 @@ +################################################################################ +# +# libxmlrpc +# +################################################################################ + +# 1.60.01 (code/advanced@r3176) +LIBXMLRPC_VERSION = r3176 +LIBXMLRPC_SITE = https://svn.code.sf.net/p/xmlrpc-c/code/advanced +LIBXMLRPC_SITE_METHOD = svn +LIBXMLRPC_LICENSE = BSD-3-Clause (xml-rpc main code and abyss web server), BSD like (lib/expat), Python 1.5.2 license (parts of xmlrpc_base64.c) +LIBXMLRPC_LICENSE_FILES = doc/COPYING +LIBXMLRPC_INSTALL_STAGING = YES +LIBXMLRPC_DEPENDENCIES = libcurl host-autoconf +LIBXMLRPC_CONFIG_SCRIPTS = xmlrpc-c-config +LIBXMLRPC_MAKE = $(MAKE1) + +# Using autoconf, not automake, so we cannot use AUTORECONF = YES. +define LIBXMLRPC_RUN_AUTOCONF + cd $(@D); $(AUTOCONF) +endef + +LIBXMLRPC_PRE_CONFIGURE_HOOKS += LIBXMLRPC_RUN_AUTOCONF + +LIBXMLRPC_CONF_OPTS = \ + $(if $(BR2_USE_WCHAR),,ac_cv_header_wchar_h=no) \ + $(if $(BR2_INSTALL_LIBSTDCPP),,--disable-cplusplus) \ + have_curl_config=$(STAGING_DIR)/usr/bin/curl-config \ + CURL_CONFIG=$(STAGING_DIR)/usr/bin/curl-config + +# Our package uses autoconf, but not automake, so we need to pass +# those variables at compile time as well. +LIBXMLRPC_MAKE_OPTS = \ + CC_FOR_BUILD="$(HOSTCC)" \ + LD_FOR_BUILD="$(HOSTLD)" \ + CFLAGS_FOR_BUILD="$(HOST_CFLAGS)" \ + LDFLAGS_FOR_BUILD="$(HOST_LDFLAGS)" + +ifeq ($(BR2_STATIC_LIBS),y) +LIBXMLRPC_STATIC_OPTS = SHARED_LIB_TYPE=NONE MUST_BUILD_SHLIB=N +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBXMLRPC_DEPENDENCIES += host-pkgconf openssl +LIBXMLRPC_CONF_OPTS += --enable-abyss-openssl +else +LIBXMLRPC_CONF_OPTS += --disable-abyss-openssl +endif + +LIBXMLRPC_MAKE_OPTS += $(LIBXMLRPC_STATIC_OPTS) +LIBXMLRPC_INSTALL_STAGING_OPTS = $(LIBXMLRPC_STATIC_OPTS) \ + DESTDIR=$(STAGING_DIR) install +LIBXMLRPC_INSTALL_TARGET_OPTS = $(LIBXMLRPC_STATIC_OPTS) \ + DESTDIR=$(TARGET_DIR) install + +ifeq ($(BR2_PACKAGE_LIBXMLRPC_TOOLS_XMLRPC),y) +define LIBXMLRPC_TOOLS_XMLRPC_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(LIBXMLRPC_MAKE_OPTS) -C $(@D)/tools/xmlrpc +endef +LIBXMLRPC_POST_BUILD_HOOKS += LIBXMLRPC_TOOLS_XMLRPC_BUILD_CMDS +define LIBXMLRPC_TOOLS_XMLRPC_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(LIBXMLRPC_MAKE_OPTS) -C $(@D)/tools/xmlrpc \ + DESTDIR=$(TARGET_DIR) install +endef +LIBXMLRPC_POST_INSTALL_TARGET_HOOKS += LIBXMLRPC_TOOLS_XMLRPC_INSTALL_TARGET_CMDS +endif + +$(eval $(autotools-package)) diff --git a/package/libxslt/Config.in b/package/libxslt/Config.in new file mode 100644 index 00000000..643bce2a --- /dev/null +++ b/package/libxslt/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBXSLT + bool "libxslt" + select BR2_PACKAGE_LIBXML2 + help + Install the xslt library which is used + to transform XML files to other XML files. + + XSLT is designed for use as part of XSL, + which is a stylesheet language for XML. + In addition to XSLT, XSL includes an XML vocabulary + for specifying formatting. + XSL specifies the styling of an XML document by using XSLT + to describe how the document is transformed into another + XML document that uses the formatting vocabulary. + + https://gitlab.gnome.org/GNOME/libxslt/-/wikis/home diff --git a/package/libxslt/libxslt.hash b/package/libxslt/libxslt.hash new file mode 100644 index 00000000..dd67940c --- /dev/null +++ b/package/libxslt/libxslt.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/libxslt/1.1/libxslt-1.1.42.sha256sum +sha256 85ca62cac0d41fc77d3f6033da9df6fd73d20ea2fc18b0a3609ffb4110e1baeb libxslt-1.1.42.tar.xz + +# Hash for license file: +sha256 7e48e290b6bfccc2ec1b297023a1d77f2fd87417f71fbb9f50aabef40a851819 COPYING diff --git a/package/libxslt/libxslt.mk b/package/libxslt/libxslt.mk new file mode 100644 index 00000000..b5bb22f9 --- /dev/null +++ b/package/libxslt/libxslt.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# libxslt +# +################################################################################ + +LIBXSLT_VERSION = 1.1.42 +LIBXSLT_SOURCE = libxslt-$(LIBXSLT_VERSION).tar.xz +LIBXSLT_SITE = https://download.gnome.org/sources/libxslt/1.1 +LIBXSLT_INSTALL_STAGING = YES +LIBXSLT_LICENSE = MIT +LIBXSLT_LICENSE_FILES = COPYING +LIBXSLT_CPE_ID_VENDOR = xmlsoft + +LIBXSLT_CONF_OPTS = \ + --with-gnu-ld \ + --without-debug \ + --without-python \ + --with-libxml-prefix=$(STAGING_DIR)/usr +LIBXSLT_CONFIG_SCRIPTS = xslt-config +LIBXSLT_DEPENDENCIES = host-pkgconf libxml2 + +# If we have enabled libgcrypt then use it, else disable crypto support. +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +LIBXSLT_DEPENDENCIES += libgcrypt +LIBXSLT_CONF_ENV += LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config +else +LIBXSLT_CONF_OPTS += --without-crypto +endif + +HOST_LIBXSLT_CONF_OPTS = --without-debug --without-python --without-crypto + +HOST_LIBXSLT_DEPENDENCIES = host-pkgconf host-libxml2 + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libyaml/Config.in b/package/libyaml/Config.in new file mode 100644 index 00000000..00a48b20 --- /dev/null +++ b/package/libyaml/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBYAML + bool "libyaml" + help + LibYAML is a YAML 1.1 parser and emitter written in C. + + http://pyyaml.org/wiki/LibYAML diff --git a/package/libyaml/libyaml.hash b/package/libyaml/libyaml.hash new file mode 100644 index 00000000..0de9e527 --- /dev/null +++ b/package/libyaml/libyaml.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c642ae9b75fee120b2d96c712538bd2cf283228d2337df2cf2988e3c02678ef4 yaml-0.2.5.tar.gz +sha256 c40112449f254b9753045925248313e9270efa36d226b22d82d4cc6c43c57f29 License diff --git a/package/libyaml/libyaml.mk b/package/libyaml/libyaml.mk new file mode 100644 index 00000000..cf3d44ca --- /dev/null +++ b/package/libyaml/libyaml.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libyaml +# +################################################################################ + +LIBYAML_VERSION = 0.2.5 +LIBYAML_SOURCE = yaml-$(LIBYAML_VERSION).tar.gz +LIBYAML_SITE = http://pyyaml.org/download/libyaml +LIBYAML_INSTALL_STAGING = YES +LIBYAML_LICENSE = MIT +LIBYAML_LICENSE_FILES = License +LIBYAML_CPE_ID_VENDOR = pyyaml + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/libyang/Config.in b/package/libyang/Config.in new file mode 100644 index 00000000..d08f8fd4 --- /dev/null +++ b/package/libyang/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBYANG + bool "libyang" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # __sync_*_4 intrinsics + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_PCRE2 + help + Libyang is YANG data modeling language parser and toolkit + written (and providing API) in C. + + https://github.com/CESNET/libyang + +comment "libyang needs a toolchain w/ threads, dynamic library" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/libyang/libyang.hash b/package/libyang/libyang.hash new file mode 100644 index 00000000..e03278ad --- /dev/null +++ b/package/libyang/libyang.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 77a0aaaeb3df720aeb70d6896e32e2c2be099d48df73e3cfb52567051af3e44b libyang-2.1.148.tar.gz +sha256 0b7ec43747d211a1e49c53588b0822062947bab6bdcc95238578beab34cba5bb LICENSE diff --git a/package/libyang/libyang.mk b/package/libyang/libyang.mk new file mode 100644 index 00000000..fca0cd63 --- /dev/null +++ b/package/libyang/libyang.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# libyang +# +################################################################################ + +LIBYANG_VERSION = 2.1.148 +LIBYANG_SITE = $(call github,CESNET,libyang,v$(LIBYANG_VERSION)) +LIBYANG_LICENSE = BSD-3-Clause +LIBYANG_LICENSE_FILES = LICENSE +LIBYANG_INSTALL_STAGING = YES +LIBYANG_CPE_ID_VENDOR = cesnet +LIBYANG_SUPPORTS_IN_SOURCE_BUILD = NO +LIBYANG_DEPENDENCIES = pcre2 +HOST_LIBYANG_DEPENDENCIES = host-pcre2 + +LIBYANG_CONF_OPTS = \ + -DENABLE_TESTS=OFF \ + -DENABLE_VALGRIND_TESTS=OFF + +HOST_LIBYANG_CONF_OPTS = \ + -DENABLE_TESTS=OFF \ + -DENABLE_VALGRIND_TESTS=OFF + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/libyuv/0001-i386-sse2.patch b/package/libyuv/0001-i386-sse2.patch new file mode 100644 index 00000000..2380bbc9 --- /dev/null +++ b/package/libyuv/0001-i386-sse2.patch @@ -0,0 +1,16 @@ +Fix compilation on non-sse2 platforms + +Signed-off-by: Bernd Kuhls + +diff -uNr libyuv-1411.org/include/libyuv/scale_row.h libyuv-1411/include/libyuv/scale_row.h +--- libyuv-1411.org/include/libyuv/scale_row.h 2015-05-22 23:39:21.000000000 +0200 ++++ libyuv-1411/include/libyuv/scale_row.h 2015-05-25 12:35:17.000000000 +0200 +@@ -55,7 +55,7 @@ + + // The following are available on all x86 platforms: + #if !defined(LIBYUV_DISABLE_X86) && \ +- (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__)) ++ (defined(_M_IX86) || defined(__x86_64__) || (defined(__i386__) && defined(__SSE2__))) + #define HAS_FIXEDDIV1_X86 + #define HAS_FIXEDDIV_X86 + #define HAS_SCALEADDROW_SSE2 diff --git a/package/libyuv/Config.in b/package/libyuv/Config.in new file mode 100644 index 00000000..355ceb0f --- /dev/null +++ b/package/libyuv/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBYUV + bool "libyuv" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + help + libyuv is an open source project that includes YUV scaling + and conversion functionality. + + https://chromium.googlesource.com/libyuv/libyuv/ + +comment "libyuv needs a toolchain w/ C++, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS diff --git a/package/libyuv/libyuv.hash b/package/libyuv/libyuv.hash new file mode 100644 index 00000000..095da4e6 --- /dev/null +++ b/package/libyuv/libyuv.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 e27c9d73ca502361d0e532065e790e41a958ae0369f1edfa4d296d33317653b1 libyuv-413a8d8041f1cc5a350a47c0d81cc721e64f9fd0-git4.tar.gz +sha256 2b2cc1180c7e6988328ad2033b04b80117419db9c4c584918bbb3cfec7e9364f LICENSE diff --git a/package/libyuv/libyuv.mk b/package/libyuv/libyuv.mk new file mode 100644 index 00000000..b3843cec --- /dev/null +++ b/package/libyuv/libyuv.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libyuv +# +################################################################################ + +LIBYUV_VERSION = 413a8d8041f1cc5a350a47c0d81cc721e64f9fd0 +LIBYUV_SITE = https://chromium.googlesource.com/libyuv/libyuv +LIBYUV_SITE_METHOD = git +LIBYUV_LICENSE = BSD-3-Clause +LIBYUV_LICENSE_FILES = LICENSE +LIBYUV_INSTALL_STAGING = YES +LIBYUV_DEPENDENCIES = $(if $(BR2_PACKAGE_JPEG),jpeg) + +$(eval $(cmake-package)) diff --git a/package/libzenoh-c/Config.in b/package/libzenoh-c/Config.in new file mode 100644 index 00000000..c0028bec --- /dev/null +++ b/package/libzenoh-c/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_LIBZENOH_C_ARCH_SUPPORTS + bool + default y if BR2_aarch64 + default y if BR2_arm + default y if BR2_x86_64 + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + +config BR2_PACKAGE_LIBZENOH_C + bool "libzenoh-c" + depends on BR2_PACKAGE_LIBZENOH_C_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_HOST_RUSTC + help + This package provides a C binding based on the main + Zenoh implementation written in Rust. + + https://github.com/eclipse-zenoh/zenoh-c + +comment "libzenoh-c needs a glibc toolchain" + depends on BR2_PACKAGE_LIBZENOH_C_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_USES_GLIBC diff --git a/package/libzenoh-c/libzenoh-c.hash b/package/libzenoh-c/libzenoh-c.hash new file mode 100644 index 00000000..66bb5282 --- /dev/null +++ b/package/libzenoh-c/libzenoh-c.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 cf8ca9382a17564ceedadf8fe574cd7c73440cd298d2adfbe88fa452427f8526 libzenoh-c-0.11.0-cargo2.tar.gz +sha256 01a44774f7b1a453595c7c6d7f7308284ba6a1059dc49e14dad6647e1d44a338 LICENSE diff --git a/package/libzenoh-c/libzenoh-c.mk b/package/libzenoh-c/libzenoh-c.mk new file mode 100644 index 00000000..f07206f4 --- /dev/null +++ b/package/libzenoh-c/libzenoh-c.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# libzenoh-c +# +################################################################################ + +# This 0.11.0 version is really newer than 0.11.0.3, so please don't +# update 0.11.0.3 even if release-monitoring.org claims it's a newer +# version. +LIBZENOH_C_VERSION = 0.11.0 +LIBZENOH_C_SITE = $(call github,eclipse-zenoh,zenoh-c,$(LIBZENOH_C_VERSION)) +LIBZENOH_C_LICENSE = Apache-2.0 or EPL-2.0 +LIBZENOH_C_LICENSE_FILES = LICENSE +LIBZENOH_C_INSTALL_STAGING = YES + +ifeq ($(BR2_ENABLE_DEBUG),y) +LIBZENOH_C_LIB_LOCATION = $(@D)/target/$(RUSTC_TARGET_NAME)/debug +else +LIBZENOH_C_LIB_LOCATION = $(@D)/target/$(RUSTC_TARGET_NAME)/release +endif + +define LIBZENOH_C_INSTALL_FILES + $(INSTALL) -D -m 644 \ + $(LIBZENOH_C_LIB_LOCATION)/libzenohc.so \ + $(1)/usr/lib/libzenohc.so +endef + +# This package does not provide any binaries or examples, and the +# cargo infra does not provide any possibility to disable the --bins +# option in cargo install step, we have to override the +# INSTALL_STAGING_CMDS and the INSTALL_TARGET_CMDS macros. + +define LIBZENOH_C_INSTALL_TARGET_CMDS + $(call LIBZENOH_C_INSTALL_FILES,$(TARGET_DIR)) +endef + +define LIBZENOH_C_INSTALL_STAGING_CMDS + $(call LIBZENOH_C_INSTALL_FILES,$(STAGING_DIR)) + mkdir -p $(STAGING_DIR)/usr/include/ + cp -dpfr $(@D)/include/* $(STAGING_DIR)/usr/include/ +endef + +$(eval $(cargo-package)) diff --git a/package/libzenoh-pico/Config.in b/package/libzenoh-pico/Config.in new file mode 100644 index 00000000..9dbb260c --- /dev/null +++ b/package/libzenoh-pico/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LIBZENOH_PICO + bool "libzenoh-pico" + # upstream hardcodes using asm("nop"), which is bogus and + # doesn't work on or1k + depends on !BR2_or1k + depends on BR2_TOOLCHAIN_HAS_THREADS + help + zenoh-pico is the Eclipse zenoh implementation that targets + constrained devices and offers a native C API. It is fully + compatible with its main Rust Zenoh implementation, + providing a lightweight implementation of most + functionalities. + + https://github.com/eclipse-zenoh/zenoh-pico + +comment "libzenoh-pico needs a toolchain w/ threads" + depends on !BR2_or1k + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libzenoh-pico/libzenoh-pico.hash b/package/libzenoh-pico/libzenoh-pico.hash new file mode 100644 index 00000000..3e017b79 --- /dev/null +++ b/package/libzenoh-pico/libzenoh-pico.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 db1eca9d84ca581731cf1f3f88aca785d58fb2b1972f2f07d09a0cf022ee02f9 libzenoh-pico-0.11.0.tar.gz +sha256 d386df32cf327bbb25abe894277d3d7e0f447bafc59f4ad362615b0136f30db5 LICENSE diff --git a/package/libzenoh-pico/libzenoh-pico.mk b/package/libzenoh-pico/libzenoh-pico.mk new file mode 100644 index 00000000..9f91926f --- /dev/null +++ b/package/libzenoh-pico/libzenoh-pico.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libzenoh-pico +# +################################################################################ + +# This 0.11.0 version is really newer than 0.11.0.3, so please don't +# update 0.11.0.3 even if release-monitoring.org claims it's a newer +# version. +LIBZENOH_PICO_VERSION = 0.11.0 +LIBZENOH_PICO_SITE = $(call github,eclipse-zenoh,zenoh-pico,$(LIBZENOH_PICO_VERSION)) +LIBZENOH_PICO_LICENSE = Apache-2.0 or EPL-2.0 +LIBZENOH_PICO_LICENSE_FILES = LICENSE +LIBZENOH_PICO_SUPPORTS_IN_SOURCE_BUILD = NO +LIBZENOH_PICO_INSTALL_STAGING = YES + +$(eval $(cmake-package)) diff --git a/package/libzip/Config.in b/package/libzip/Config.in new file mode 100644 index 00000000..a603d9ab --- /dev/null +++ b/package/libzip/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBZIP + bool "libzip" + depends on !BR2_STATIC_LIBS # dlsym() + select BR2_PACKAGE_MUSL_FTS if !BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_ZLIB + help + C library for reading, creating, and modifying zip archives. + This package also contains zipcmp, ziptorrent and zipmerge + utilities. + + https://libzip.org/ + +comment "libzip needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/libzip/libzip.hash b/package/libzip/libzip.hash new file mode 100644 index 00000000..93dcb490 --- /dev/null +++ b/package/libzip/libzip.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 dc3c8d5b4c8bbd09626864f6bcf93de701540f761d76b85d7c7d710f4bd90318 libzip-1.10.1.tar.xz +sha256 01c022eca6d566e2e8792fd0f091a28653b2a608319922bcd4de91c49d1438e1 LICENSE diff --git a/package/libzip/libzip.mk b/package/libzip/libzip.mk new file mode 100644 index 00000000..cf85bfa8 --- /dev/null +++ b/package/libzip/libzip.mk @@ -0,0 +1,65 @@ +################################################################################ +# +# libzip +# +################################################################################ + +LIBZIP_VERSION = 1.10.1 +LIBZIP_SITE = https://libzip.org/download +LIBZIP_SOURCE = libzip-$(LIBZIP_VERSION).tar.xz +LIBZIP_LICENSE = BSD-3-Clause +LIBZIP_LICENSE_FILES = LICENSE +LIBZIP_CPE_ID_VENDOR = libzip +LIBZIP_INSTALL_STAGING = YES +LIBZIP_DEPENDENCIES = zlib +HOST_LIBZIP_DEPENDENCIES = host-zlib + +ifeq ($(BR2_PACKAGE_BZIP2),y) +LIBZIP_DEPENDENCIES += bzip2 +LIBZIP_CONF_OPTS += -DENABLE_BZIP2=ON +else +LIBZIP_CONF_OPTS += -DENABLE_BZIP2=OFF +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +LIBZIP_DEPENDENCIES += gnutls +LIBZIP_CONF_OPTS += -DENABLE_GNUTLS=ON +else +LIBZIP_CONF_OPTS += -DENABLE_GNUTLS=OFF +endif + +ifeq ($(BR2_PACKAGE_MBEDTLS),y) +LIBZIP_DEPENDENCIES += mbedtls +LIBZIP_CONF_OPTS += -DENABLE_MBEDTLS=ON +else +LIBZIP_CONF_OPTS += -DENABLE_MBEDTLS=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBZIP_DEPENDENCIES += openssl +LIBZIP_CONF_OPTS += -DENABLE_OPENSSL=ON +else +LIBZIP_CONF_OPTS += -DENABLE_OPENSSL=OFF +endif + +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),) +LIBZIP_DEPENDENCIES += musl-fts +LIBZIP_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-lfts +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +LIBZIP_DEPENDENCIES += xz +LIBZIP_CONF_OPTS += -DENABLE_LZMA=ON +else +LIBZIP_CONF_OPTS += -DENABLE_LZMA=OFF +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +LIBZIP_DEPENDENCIES += zstd +LIBZIP_CONF_OPTS += -DENABLE_ZSTD=ON +else +LIBZIP_CONF_OPTS += -DENABLE_ZSTD=OFF +endif + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/libzlib/libzlib.hash b/package/libzlib/libzlib.hash new file mode 100644 index 00000000..cbd93138 --- /dev/null +++ b/package/libzlib/libzlib.hash @@ -0,0 +1,4 @@ +# From http://www.zlib.net/ +sha256 38ef96b8dfe510d42707d9c781877914792541133e1870841463bfa73f883e32 zlib-1.3.1.tar.xz +# License files, locally calculated +sha256 845efc77857d485d91fb3e0b884aaa929368c717ae8186b66fe1ed2495753243 LICENSE diff --git a/package/libzlib/libzlib.mk b/package/libzlib/libzlib.mk new file mode 100644 index 00000000..bc5092d9 --- /dev/null +++ b/package/libzlib/libzlib.mk @@ -0,0 +1,80 @@ +################################################################################ +# +# libzlib +# +################################################################################ + +LIBZLIB_VERSION = 1.3.1 +LIBZLIB_SOURCE = zlib-$(LIBZLIB_VERSION).tar.xz +LIBZLIB_SITE = https://www.zlib.net +LIBZLIB_LICENSE = Zlib +LIBZLIB_LICENSE_FILES = LICENSE +LIBZLIB_INSTALL_STAGING = YES +LIBZLIB_PROVIDES = zlib +LIBZLIB_CPE_ID_VENDOR = zlib +LIBZLIB_CPE_ID_PRODUCT = zlib + +# It is not possible to build only a shared version of zlib, so we build both +# shared and static, unless we only want the static libs, and we eventually +# selectively remove what we do not want +ifeq ($(BR2_STATIC_LIBS),y) +LIBZLIB_PIC = +LIBZLIB_SHARED = --static +else +LIBZLIB_PIC = -fPIC +LIBZLIB_SHARED = --shared +endif + +define LIBZLIB_CONFIGURE_CMDS + (cd $(@D); rm -rf config.cache; \ + $(TARGET_CONFIGURE_ARGS) \ + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) $(LIBZLIB_PIC)" \ + ./configure \ + $(LIBZLIB_SHARED) \ + --prefix=/usr \ + ) +endef + +define HOST_LIBZLIB_CONFIGURE_CMDS + (cd $(@D); rm -rf config.cache; \ + $(HOST_CONFIGURE_ARGS) \ + $(HOST_CONFIGURE_OPTS) \ + ./configure \ + --prefix="$(HOST_DIR)" \ + --sysconfdir="$(HOST_DIR)/etc" \ + ) +endef + +define LIBZLIB_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) +endef + +define HOST_LIBZLIB_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE1) -C $(@D) +endef + +define LIBZLIB_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR=$(STAGING_DIR) LDCONFIG=true install +endef + +define LIBZLIB_INSTALL_TARGET_CMDS + $(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 +# time to build other packages, and it is anyway removed later before +# assembling the filesystem images anyway. +ifeq ($(BR2_SHARED_LIBS),y) +define LIBZLIB_RM_STATIC_STAGING + rm -f $(STAGING_DIR)/usr/lib/libz.a +endef +LIBZLIB_POST_INSTALL_STAGING_HOOKS += LIBZLIB_RM_STATIC_STAGING +endif + +define HOST_LIBZLIB_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE1) -C $(@D) LDCONFIG=true install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/lightning/0001-mips-Fix-build-on-MIPS64-with-n32-ABI.patch b/package/lightning/0001-mips-Fix-build-on-MIPS64-with-n32-ABI.patch new file mode 100644 index 00000000..19582d14 --- /dev/null +++ b/package/lightning/0001-mips-Fix-build-on-MIPS64-with-n32-ABI.patch @@ -0,0 +1,133 @@ +From 66a9a994c03d65fc37d701a60b26506bede49ae1 Mon Sep 17 00:00:00 2001 +From: Paul Cercueil +Date: Sun, 2 Jun 2024 22:35:24 +0200 +Subject: [PATCH] mips: Fix build on MIPS64 with n32 ABI + +The build on MIPS64 with n32 ABI was broken for a few reasons. + +- The _movi_d_w() functions had a different prototype in jit_mips-fpu.c + than in lightning.c; +- The movi_d_w() was still provided by lightning.c even though + jit_mips-fpu.c provides its own version; +- The "ww" opcodes were allowed, which was probably not meant to happen. + +Fixes a build issue reported by Buildroot: +http://autobuild.buildroot.net/results/27123bf0ddc84599bceb02ac987327817d498659/ + +Signed-off-by: Paul Cercueil +Upstream: http://git.savannah.gnu.org/cgit/lightning.git/commit/?id=778d326740f9893c398f959b419629935b613099 +--- + lib/jit_mips-fpu.c | 4 ++-- + lib/jit_mips.c | 3 +-- + lib/lightning.c | 43 +++++++++++++++++++++---------------------- + 3 files changed, 24 insertions(+), 26 deletions(-) + +diff --git a/lib/jit_mips-fpu.c b/lib/jit_mips-fpu.c +index 61db30e..8ad97e9 100644 +--- a/lib/jit_mips-fpu.c ++++ b/lib/jit_mips-fpu.c +@@ -349,7 +349,7 @@ static void _movi_f(jit_state_t*,jit_int32_t,jit_float32_t*); + # define movi64(r0, i0) _movi64(_jit, r0, i0) + static void _movi64(jit_state_t*,jit_int32_t,jit_int64_t); + # define movi_d_w(r0, i0) _movi_d_w(_jit, r0, i0) +-static void _movi_d_w(jit_state_t*,jit_int32_t,jit_int64_t); ++static void _movi_d_w(jit_state_t*,jit_int32_t,jit_float64_t); + # elif __WORDSIZE == 64 + # define movi64(r0, i0) movi(r0, i0) + # endif +@@ -1152,7 +1152,7 @@ _movi64(jit_state_t *_jit, jit_int32_t r0, jit_int64_t i0) + } + + static void +-_movi_d_w(jit_state_t *_jit, jit_int32_t r0, jit_int64_t i0) ++_movi_d_w(jit_state_t *_jit, jit_int32_t r0, jit_float64_t i0) + { + union { + jit_int64_t l; +diff --git a/lib/jit_mips.c b/lib/jit_mips.c +index 4fb6c34..6eb41a0 100644 +--- a/lib/jit_mips.c ++++ b/lib/jit_mips.c +@@ -2184,8 +2184,7 @@ _emit_code(jit_state_t *_jit) + case jit_code_movi_w_d: + movi_w_d(rn(node->u.w), node->v.w); + break; +-#endif +-#if __WORDSIZE == 32 ++#else + case jit_code_movr_ww_d: + movr_ww_d(rn(node->u.w), rn(node->v.w), rn(node->w.w)); + break; +diff --git a/lib/lightning.c b/lib/lightning.c +index b40d35b..2c10928 100644 +--- a/lib/lightning.c ++++ b/lib/lightning.c +@@ -4331,12 +4331,12 @@ static void _htoni_ul(jit_state_t*, jit_int32_t, jit_word_t); + #endif + # define movi_f_w(r0, i0) _movi_f_w(_jit, r0, i0) + static void _movi_f_w(jit_state_t*, jit_int32_t, jit_float32_t); +-#if __WORDSIZE == 32 && !(defined(__mips__) && NEW_ABI) +-# define movi_d_ww(r0, r1, i0) _movi_d_ww(_jit, r0, r1, i0) +-static void _movi_d_ww(jit_state_t*, jit_int32_t, jit_int32_t, jit_float64_t); +-#else ++#if __WORDSIZE == 64 + # define movi_d_w(r0, i0) _movi_d_w(_jit, r0, i0) + static void _movi_d_w(jit_state_t*, jit_int32_t, jit_float64_t); ++#elif !(defined(__mips__) && NEW_ABI) ++# define movi_d_ww(r0, r1, i0) _movi_d_ww(_jit, r0, r1, i0) ++static void _movi_d_ww(jit_state_t*, jit_int32_t, jit_int32_t, jit_float64_t); + #endif + #define cloi(r0, i0) _cloi(_jit, r0, i0) + static void _cloi(jit_state_t*, jit_int32_t, jit_word_t); +@@ -4803,7 +4803,23 @@ _movi_f_w(jit_state_t *_jit, jit_int32_t r0, jit_float32_t i0) + movi(r0, data.i); + } + +-#if __WORDSIZE == 32 && !(defined(__mips__) && NEW_ABI) ++#if __WORDSIZE == 64 ++static void ++_movi_d_w(jit_state_t *_jit, jit_int32_t r0, jit_float64_t i0) ++{ ++ union { ++ jit_int64_t l; ++ jit_float64_t d; ++ } data; ++ data.d = i0; ++# if defined(__ia64__) ++ /* Should be used only in this case (with out0 == 120) */ ++ if (r0 >= 120) ++ r0 = _jitc->rout + (r0 - 120); ++# endif ++ movi(r0, data.l); ++} ++#elif !(defined(__mips__) && NEW_ABI) + static void + _movi_d_ww(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_float64_t i0) + { +@@ -4821,23 +4837,6 @@ _movi_d_ww(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_float64_t i0) + movi(r0, data.i[1]); + # endif + } +- +-#else +-static void +-_movi_d_w(jit_state_t *_jit, jit_int32_t r0, jit_float64_t i0) +-{ +- union { +- jit_int64_t l; +- jit_float64_t d; +- } data; +- data.d = i0; +-# if defined(__ia64__) +- /* Should be used only in this case (with out0 == 120) */ +- if (r0 >= 120) +- r0 = _jitc->rout + (r0 - 120); +-# endif +- movi(r0, data.l); +-} + #endif + + void +-- +2.43.0 + diff --git a/package/lightning/Config.in b/package/lightning/Config.in new file mode 100644 index 00000000..e42730ad --- /dev/null +++ b/package/lightning/Config.in @@ -0,0 +1,35 @@ +comment "lightning needs a toolchain w/ dynamic library, threads" + depends on BR2_sparc || BR2_i386 || BR2_x86_64 || BR2_mips || \ + BR2_mipsel || BR2_arm || BR2_powerpc || BR2_RISCV_64 || \ + BR2_mips64 || BR2_mips64el + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_LIGHTNING + bool "lightning" + depends on BR2_sparc || BR2_i386 || BR2_x86_64 || BR2_mips || \ + BR2_mipsel || BR2_arm || BR2_powerpc || BR2_RISCV_64 || \ + BR2_mips64 || BR2_mips64el + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + help + GNU lightning is a library that generates + assembly language code at run-time. + + https://www.gnu.org/software/lightning/ + +if BR2_PACKAGE_LIGHTNING + +config BR2_PACKAGE_LIGHTNING_DISASSEMBLER + bool "enable disassembler" + depends on !BR2_nios2 # binutils + depends on BR2_USE_WCHAR # binutils + select BR2_PACKAGE_BINUTILS + select BR2_PACKAGE_ZLIB + help + Enable the GNU lightning disassembler. + +comment "lightning disassembler needs a toolchain w/ wchar" + depends on !BR2_nios2 + depends on !BR2_USE_WCHAR + +endif diff --git a/package/lightning/lightning.hash b/package/lightning/lightning.hash new file mode 100644 index 00000000..76ad5e4c --- /dev/null +++ b/package/lightning/lightning.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 c045c7a33a00affbfeb11066fa502c03992e474a62ba95977aad06dbc14c6829 lightning-2.2.3.tar.gz +sha256 a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c COPYING.LESSER diff --git a/package/lightning/lightning.mk b/package/lightning/lightning.mk new file mode 100644 index 00000000..08e38839 --- /dev/null +++ b/package/lightning/lightning.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# lightning +# +################################################################################ + +LIGHTNING_VERSION = 2.2.3 +LIGHTNING_SITE = $(BR2_GNU_MIRROR)/lightning +LIGHTNING_LICENSE = LGPL-3.0+ +LIGHTNING_LICENSE_FILES = COPYING.LESSER +LIGHTNING_INSTALL_STAGING = YES +LIGHTNING_CPE_ID_VENDOR = gnu + +ifeq ($(BR2_PACKAGE_LIGHTNING_DISASSEMBLER),y) +LIGHTNING_DEPENDENCIES += binutils zlib +LIGHTNING_CONF_OPTS += --enable-disassembler +endif + +$(eval $(autotools-package)) diff --git a/package/lighttpd/0001-Modify-the-default-lighttpd-configuration-file-to-ha.patch b/package/lighttpd/0001-Modify-the-default-lighttpd-configuration-file-to-ha.patch new file mode 100644 index 00000000..2eab2a84 --- /dev/null +++ b/package/lighttpd/0001-Modify-the-default-lighttpd-configuration-file-to-ha.patch @@ -0,0 +1,91 @@ +From d9e1c9c4a95797c812dd4906ecbbc532ae459364 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Mon, 13 Dec 2021 22:07:17 +0100 +Subject: [PATCH] Modify the default lighttpd configuration file to have one a + starting conf + + * Changed the log path to /var/log and logs filenames + * Disable IPv6 (Dropped since 1.4.68) + * Do not setuid to a user that doesn't exist on the system + * Change the network backend to writev since linux-sendfile fails on buildroot + +Signed-off-by: Maxime Ripard +Signed-off-by: Simon Dawson +[Gustavo: update for 1.4.37] +Signed-off-by: Gustavo Zacarias +[Thomas: update for 1.4.69 - drop server.use-ipv6] +Signed-off-by: Thomas Devoogdt +--- + doc/config/conf.d/access_log.conf | 2 +- + doc/config/lighttpd.conf | 14 +++++++------- + 2 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/doc/config/conf.d/access_log.conf b/doc/config/conf.d/access_log.conf +index e685d437..92cff4f0 100644 +--- a/doc/config/conf.d/access_log.conf ++++ b/doc/config/conf.d/access_log.conf +@@ -9,7 +9,7 @@ server.modules += ( "mod_accesslog" ) + ## + ## Default access log. + ## +-accesslog.filename = log_root + "/access.log" ++accesslog.filename = log_root + "/lighttpd-access.log" + + ## + ## The default format produces CLF compatible output. +diff --git a/doc/config/lighttpd.conf b/doc/config/lighttpd.conf +index d45a284d..4e926d5a 100644 +--- a/doc/config/lighttpd.conf ++++ b/doc/config/lighttpd.conf +@@ -13,8 +13,8 @@ + ## if you add a variable here. Add the corresponding variable in the + ## chroot example as well. + ## +-var.log_root = "/var/log/lighttpd" +-var.server_root = "/srv/www" ++var.log_root = "/var/log" ++var.server_root = "/var/www" + var.state_dir = "/run" + var.home_dir = "/var/lib/lighttpd" + var.conf_dir = "/etc/lighttpd" +@@ -97,8 +97,8 @@ server.port = 80 + ## Run as a different username/groupname. + ## This requires root permissions during startup. + ## +-server.username = "lighttpd" +-server.groupname = "lighttpd" ++server.username = "www-data" ++server.groupname = "www-data" + + ## + ## Enable lighttpd to serve requests on sockets received from systemd +@@ -114,7 +114,7 @@ server.groupname = "lighttpd" + ## + ## Document root + ## +-server.document-root = server_root + "/htdocs" ++server.document-root = server_root + + ## + ## The value for the "Server:" response field. +@@ -140,7 +140,7 @@ server.pid-file = state_dir + "/lighttpd.pid" + ## + ## Path to the error log file + ## +-server.errorlog = log_root + "/error.log" ++server.errorlog = log_root + "/lighttpd-error.log" + + ## + ## If you want to log to syslog you have to unset the +@@ -187,7 +187,7 @@ include conf_dir + "/conf.d/debug.conf" + ## and write(). Every modern OS provides its own syscall to help network + ## servers transfer files as fast as possible + ## +-#server.network-backend = "sendfile" ++server.network-backend = "writev" + + ## + ## As lighttpd is a single-threaded server, its main resource limit is +-- +2.39.0 + diff --git a/package/lighttpd/Config.in b/package/lighttpd/Config.in new file mode 100644 index 00000000..66532d7d --- /dev/null +++ b/package/lighttpd/Config.in @@ -0,0 +1,128 @@ +comment "lighttpd needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_LIGHTTPD + bool "lighttpd" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_XXHASH + help + lighttpd a secure, fast, compliant and very flexible + web-server which has been optimized for high-performance + environments. It has a very low memory footprint compared to + other webservers and takes care of cpu-load. Its advanced + feature-set (FastCGI, CGI, Auth, Output-Compression, + URL-Rewriting and many more) make lighttpd the perfect + webserver-software for every server that is suffering load + problems. + + https://www.lighttpd.net/ + +if BR2_PACKAGE_LIGHTTPD + +config BR2_PACKAGE_LIGHTTPD_BROTLI + bool "brotli support" + select BR2_PACKAGE_BROTLI + help + Enable brotli support for lighttpd mod_deflate. + +config BR2_PACKAGE_LIGHTTPD_BZIP2 + bool "bzip2 support" + select BR2_PACKAGE_BZIP2 + help + Enable bzip2 support for lighttpd mod_deflate. + +config BR2_PACKAGE_LIGHTTPD_KRB5 + bool "krb5 support" + select BR2_PACKAGE_LIBKRB5 + help + Enable Kerberos5 support for lighttpd mod_auth. + +config BR2_PACKAGE_LIGHTTPD_LDAP + bool "ldap support" + depends on BR2_USE_WCHAR # openldap + select BR2_PACKAGE_OPENLDAP + help + Enable LDAP support for lighttpd mod_auth mod_vhostdb_ldap. + +comment "ldap support needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +config BR2_PACKAGE_LIGHTTPD_LUA + bool "lua support" + depends on BR2_PACKAGE_LUA + help + Enable Lua support. Needed to support mod_magnet + +config BR2_PACKAGE_LIGHTTPD_MAXMINDDB + bool "maxminddb support" + select BR2_PACKAGE_LIBMAXMINDDB + help + Enable MaxMind GeoIP2 support. Needed to support mod_maxminddb + +config BR2_PACKAGE_LIGHTTPD_MYSQL + bool "mysql support" + depends on BR2_PACKAGE_MARIADB + help + Enable mysql support for lighttpd mod_vhostdb_mysql. + +comment "mysql support needs mariadb" + depends on !BR2_PACKAGE_MARIADB + +config BR2_PACKAGE_LIGHTTPD_OPENSSL + bool "openssl support" + select BR2_PACKAGE_OPENSSL + help + Enable OpenSSL support for lighttpd. + +config BR2_PACKAGE_LIGHTTPD_PAM + bool "pam authentication support" + default y + depends on BR2_PACKAGE_LINUX_PAM + help + Enable PAM authentication support for lighttpd. + +config BR2_PACKAGE_LIGHTTPD_PCRE + bool "pcre support" + select BR2_PACKAGE_PCRE2 + help + Enable PCRE support. Needed to support mod_rewrite + +config BR2_PACKAGE_LIGHTTPD_PGSQL + bool "pgsql support" + depends on BR2_USE_MMU # postgresql + depends on BR2_USE_WCHAR # postgresql + depends on !BR2_OPTIMIZE_FAST # postgresql + select BR2_PACKAGE_POSTGRESQL + help + Enable postgres support for lighttpd mod_vhostdb_pgsql. + +comment "pgsql support needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR + +comment "pgsql support can't be built with Optimize for fast" + depends on BR2_OPTIMIZE_FAST + +config BR2_PACKAGE_LIGHTTPD_WEBDAV + bool "webdav support" + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_SQLITE + help + Enable webdav support. Needed to support mod_webdav + +config BR2_PACKAGE_LIGHTTPD_ZLIB + bool "zlib support" + select BR2_PACKAGE_ZLIB + help + Enable zlib support for lighttpd mod_deflate. + +config BR2_PACKAGE_LIGHTTPD_ZSTD + bool "zstd support" + select BR2_PACKAGE_ZSTD + help + Enable zstd support for lighttpd mod_deflate. + +endif diff --git a/package/lighttpd/S50lighttpd b/package/lighttpd/S50lighttpd new file mode 100644 index 00000000..b3518cd2 --- /dev/null +++ b/package/lighttpd/S50lighttpd @@ -0,0 +1,43 @@ +#!/bin/sh +# +# Starts lighttpd. +# +NAME=lighttpd +DAEMON=/usr/sbin/$NAME +PID_FILE="/var/run/$NAME.pid" +CONF_FILE="/etc/$NAME/$NAME.conf" + +[ -r /etc/default/$NAME ] && . /etc/default/$NAME + +start() { + printf "Starting lighttpd: " + start-stop-daemon -S -q -p $PID_FILE --exec $DAEMON -- -f $CONF_FILE + echo "OK" +} +stop() { + printf "Stopping lighttpd: " + start-stop-daemon -K -q -p $PID_FILE + echo "OK" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? + diff --git a/package/lighttpd/lighttpd.hash b/package/lighttpd/lighttpd.hash new file mode 100644 index 00000000..c5545150 --- /dev/null +++ b/package/lighttpd/lighttpd.hash @@ -0,0 +1,6 @@ +# From https://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.76.sha512sum +sha512 940f00f2d84e3424c389108d09756a0af41db3559474135b6c502deccd08ad051b5184f3f7907436384964d2b05045e27dca463af98c889cee69b0ae6e202782 lighttpd-1.4.76.tar.xz +# From https://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.76.sha256sum +sha256 8cbf4296e373cfd0cedfe9d978760b5b05c58fdc4048b4e2bcaf0a61ac8f5011 lighttpd-1.4.76.tar.xz +# Locally calculated +sha256 5c98cad2fbaf5c5e2562bcbab401a7c557c1bb1bac9914ecc63730925052fb13 COPYING diff --git a/package/lighttpd/lighttpd.mk b/package/lighttpd/lighttpd.mk new file mode 100644 index 00000000..b54f5dd2 --- /dev/null +++ b/package/lighttpd/lighttpd.mk @@ -0,0 +1,172 @@ +################################################################################ +# +# lighttpd +# +################################################################################ + +LIGHTTPD_VERSION_MAJOR = 1.4 +LIGHTTPD_VERSION = $(LIGHTTPD_VERSION_MAJOR).76 +LIGHTTPD_SOURCE = lighttpd-$(LIGHTTPD_VERSION).tar.xz +LIGHTTPD_SITE = http://download.lighttpd.net/lighttpd/releases-$(LIGHTTPD_VERSION_MAJOR).x +LIGHTTPD_LICENSE = BSD-3-Clause +LIGHTTPD_LICENSE_FILES = COPYING +LIGHTTPD_CPE_ID_VENDOR = lighttpd +LIGHTTPD_DEPENDENCIES = host-pkgconf xxhash +LIGHTTPD_CONF_OPTS = \ + -Dwith_dbi=disabled \ + -Dwith_fam=disabled \ + -Dwith_gnutls=false \ + -Dwith_libev=disabled \ + -Dwith_libunwind=disabled \ + -Dwith_mbedtls=false \ + -Dwith_nettle=false \ + -Dwith_nss=false \ + -Dwith_pcre=disabled \ + -Dwith_sasl=disabled \ + -Dwith_wolfssl=false \ + -Dwith_xattr=false \ + -Dwith_xxhash=enabled \ + -Dbuild_extra_warnings=false \ + -Dbuild_static=false \ + -Dmoduledir=lib/lighttpd + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +LIGHTTPD_DEPENDENCIES += libxcrypt +endif + +ifeq ($(BR2_PACKAGE_LIGHTTPD_BROTLI),y) +LIGHTTPD_DEPENDENCIES += brotli +LIGHTTPD_CONF_OPTS += -Dwith_brotli=enabled +else +LIGHTTPD_CONF_OPTS += -Dwith_brotli=disabled +endif + +ifeq ($(BR2_PACKAGE_LIGHTTPD_BZIP2),y) +LIGHTTPD_DEPENDENCIES += bzip2 +LIGHTTPD_CONF_OPTS += -Dwith_bzip=enabled +else +LIGHTTPD_CONF_OPTS += -Dwith_bzip=disabled +endif + +ifeq ($(BR2_PACKAGE_LIGHTTPD_KRB5),y) +LIGHTTPD_DEPENDENCIES += libkrb5 +LIGHTTPD_CONF_OPTS += -Dwith_krb5=enabled +else +LIGHTTPD_CONF_OPTS += -Dwith_krb5=disabled +endif + +ifeq ($(BR2_PACKAGE_LIGHTTPD_LDAP),y) +LIGHTTPD_DEPENDENCIES += openldap +LIGHTTPD_CONF_OPTS += -Dwith_ldap=enabled +else +LIGHTTPD_CONF_OPTS += -Dwith_ldap=disabled +endif + +ifeq ($(BR2_PACKAGE_LIGHTTPD_LUA),y) +LIGHTTPD_DEPENDENCIES += lua +LIGHTTPD_CONF_OPTS += -Dwith_lua=true +else +LIGHTTPD_CONF_OPTS += -Dwith_lua=false +endif + +ifeq ($(BR2_PACKAGE_LIGHTTPD_MAXMINDDB),y) +LIGHTTPD_DEPENDENCIES += libmaxminddb +LIGHTTPD_CONF_OPTS += -Dwith_maxminddb=enabled +else +LIGHTTPD_CONF_OPTS += -Dwith_maxminddb=disabled +endif + +ifeq ($(BR2_PACKAGE_LIGHTTPD_MYSQL),y) +LIGHTTPD_DEPENDENCIES += mariadb +LIGHTTPD_CONF_OPTS += -Dwith_mysql=enabled +else +LIGHTTPD_CONF_OPTS += -Dwith_mysql=disabled +endif + +ifeq ($(BR2_PACKAGE_LIGHTTPD_OPENSSL),y) +LIGHTTPD_DEPENDENCIES += openssl +LIGHTTPD_CONF_OPTS += -Dwith_openssl=true +else +LIGHTTPD_CONF_OPTS += -Dwith_openssl=false +endif + +ifeq ($(BR2_PACKAGE_LIGHTTPD_PAM),y) +LIGHTTPD_DEPENDENCIES += linux-pam +LIGHTTPD_CONF_OPTS += -Dwith_pam=enabled +else +LIGHTTPD_CONF_OPTS += -Dwith_pam=disabled +endif + +ifeq ($(BR2_PACKAGE_LIGHTTPD_PCRE),y) +LIGHTTPD_DEPENDENCIES += pcre2 +LIGHTTPD_CONF_OPTS += -Dwith_pcre2=true +else +LIGHTTPD_CONF_OPTS += -Dwith_pcre2=false +endif + +ifeq ($(BR2_PACKAGE_LIGHTTPD_PGSQL),y) +LIGHTTPD_DEPENDENCIES += postgresql +LIGHTTPD_CONF_OPTS += -Dwith_pgsql=enabled +else +LIGHTTPD_CONF_OPTS += -Dwith_pgsql=disabled +endif + +ifeq ($(BR2_PACKAGE_LIGHTTPD_WEBDAV),y) +LIGHTTPD_DEPENDENCIES += libxml2 sqlite +LIGHTTPD_CONF_OPTS += -Dwith_webdav_props=enabled +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y) +LIGHTTPD_CONF_OPTS += -Dwith_webdav_locks=enabled +LIGHTTPD_DEPENDENCIES += util-linux +else +LIGHTTPD_CONF_OPTS += -Dwith_webdav_locks=disabled +endif +else +LIGHTTPD_CONF_OPTS += -Dwith_webdav_props=disabled -Dwith_webdav_locks=disabled +endif + +ifeq ($(BR2_PACKAGE_LIGHTTPD_ZLIB),y) +LIGHTTPD_DEPENDENCIES += zlib +LIGHTTPD_CONF_OPTS += -Dwith_zlib=enabled +else +LIGHTTPD_CONF_OPTS += -Dwith_zlib=disabled +endif + +ifeq ($(BR2_PACKAGE_LIGHTTPD_ZSTD),y) +LIGHTTPD_DEPENDENCIES += zstd +LIGHTTPD_CONF_OPTS += -Dwith_zstd=enabled +else +LIGHTTPD_CONF_OPTS += -Dwith_zstd=disabled +endif + +define LIGHTTPD_INSTALL_CONFIG + $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/lighttpd/conf.d + $(INSTALL) -d -m 0755 $(TARGET_DIR)/var/www + $(INSTALL) -D -m 0644 $(@D)/doc/config/lighttpd.conf \ + $(TARGET_DIR)/etc/lighttpd/lighttpd.conf + $(INSTALL) -D -m 0644 $(@D)/doc/config/modules.conf \ + $(TARGET_DIR)/etc/lighttpd/modules.conf + $(INSTALL) -D -m 0644 $(@D)/doc/config/conf.d/access_log.conf \ + $(TARGET_DIR)/etc/lighttpd/conf.d/access_log.conf + $(INSTALL) -D -m 0644 $(@D)/doc/config/conf.d/debug.conf \ + $(TARGET_DIR)/etc/lighttpd/conf.d/debug.conf + $(INSTALL) -D -m 0644 $(@D)/doc/config/conf.d/dirlisting.conf \ + $(TARGET_DIR)/etc/lighttpd/conf.d/dirlisting.conf + $(INSTALL) -D -m 0644 $(@D)/doc/config/conf.d/mime.conf \ + $(TARGET_DIR)/etc/lighttpd/conf.d/mime.conf +endef + +LIGHTTPD_POST_INSTALL_TARGET_HOOKS += LIGHTTPD_INSTALL_CONFIG + +define LIGHTTPD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/lighttpd/S50lighttpd \ + $(TARGET_DIR)/etc/init.d/S50lighttpd +endef + +define LIGHTTPD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(@D)/doc/systemd/lighttpd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/lighttpd.service + $(INSTALL) -D -m 644 package/lighttpd/lighttpd_tmpfiles.conf \ + $(TARGET_DIR)/usr/lib/tmpfiles.d/lighttpd.conf +endef + +$(eval $(meson-package)) diff --git a/package/lighttpd/lighttpd_tmpfiles.conf b/package/lighttpd/lighttpd_tmpfiles.conf new file mode 100644 index 00000000..a24f3f7f --- /dev/null +++ b/package/lighttpd/lighttpd_tmpfiles.conf @@ -0,0 +1,2 @@ +f /var/log/lighttpd-access.log 0640 www-data www-data - +f /var/log/lighttpd-error.log 0640 www-data www-data - diff --git a/package/lilv/Config.in b/package/lilv/Config.in new file mode 100644 index 00000000..08d54bcf --- /dev/null +++ b/package/lilv/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LILV + bool "lilv" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LV2 + select BR2_PACKAGE_SERD + select BR2_PACKAGE_SORD + select BR2_PACKAGE_SRATOM + help + Lilv is a C library to make the use of LV2 plugins as simple + as possible for applications. + + https://drobilla.net/software/lilv.html + +comment "lilv needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/lilv/lilv.hash b/package/lilv/lilv.hash new file mode 100644 index 00000000..afa20fc0 --- /dev/null +++ b/package/lilv/lilv.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking signature +# https://download.drobilla.net/lilv-0.24.12.tar.bz2.asc +sha256 26a37790890c9c1f838203b47f5b2320334fe92c02a4d26ebbe2669dbd769061 lilv-0.24.12.tar.bz2 +sha256 e06562d6bcf0341b2ac2ad0f0ca36801d2ebf388d5ef297011625e4c36e963f0 COPYING diff --git a/package/lilv/lilv.mk b/package/lilv/lilv.mk new file mode 100644 index 00000000..5f9186e6 --- /dev/null +++ b/package/lilv/lilv.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# lilv +# +################################################################################ + +LILV_VERSION = 0.24.12 +LILV_SITE = https://download.drobilla.net +LILV_SOURCE = lilv-$(LILV_VERSION).tar.bz2 +LILV_LICENSE = ISC +LILV_LICENSE_FILES = COPYING +LILV_DEPENDENCIES = host-pkgconf lv2 serd sord sratom +LILV_INSTALL_STAGING = YES + +LILV_CONF_OPTS += \ + --dyn-manifest \ + --no-bash-completion \ + --no-coverage + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +LILV_DEPENDENCIES += python3 +else +LILV_CONF_OPTS += --no-bindings +endif + +ifeq ($(BR2_PACKAGE_LIBSNDFILE),y) +LILV_DEPENDENCIES += libsndfile +endif + +$(eval $(waf-package)) diff --git a/package/linenoise/Config.in b/package/linenoise/Config.in new file mode 100644 index 00000000..8e4ab91d --- /dev/null +++ b/package/linenoise/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LINENOISE + bool "linenoise" + help + A small self-contained alternative to readline and libedit + + https://github.com/antirez/linenoise diff --git a/package/linenoise/linenoise.hash b/package/linenoise/linenoise.hash new file mode 100644 index 00000000..9a1436eb --- /dev/null +++ b/package/linenoise/linenoise.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1086f82fbf30b0618b1953b05d33db62c68fc7ce49391ce1374192f776fde72d linenoise-97d2850af13c339369093b78abe5265845d78220.tar.gz +sha256 efe1692aa5b869edaa0ac88f95eb0276c1125304ffc636a299db3ebbab47f62b LICENSE diff --git a/package/linenoise/linenoise.mk b/package/linenoise/linenoise.mk new file mode 100644 index 00000000..fd2c4c70 --- /dev/null +++ b/package/linenoise/linenoise.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# linenoise +# +################################################################################ + +LINENOISE_VERSION = 97d2850af13c339369093b78abe5265845d78220 +LINENOISE_SITE = $(call github,antirez,linenoise,$(LINENOISE_VERSION)) +LINENOISE_LICENSE = BSD-2-Clause +LINENOISE_LICENSE_FILES = LICENSE +LINENOISE_INSTALL_STAGING = YES +# Static library only, nothing to install on target +LINENOISE_INSTALL_TARGET = NO + +define LINENOISE_BUILD_CMDS + cd $(@D); $(TARGET_CC) $(TARGET_CFLAGS) -c linenoise.c + cd $(@D); $(TARGET_AR) rcu liblinenoise.a linenoise.o + cd $(@D); $(TARGET_CC) $(TARGET_LDFLAGS) -o linenoise_example example.c -L. -llinenoise +endef + +define LINENOISE_INSTALL_STAGING_CMDS + $(INSTALL) -m 644 -D $(@D)/linenoise.h \ + $(STAGING_DIR)/usr/include/linenoise.h + $(INSTALL) -m 644 -D $(@D)/liblinenoise.a \ + $(STAGING_DIR)/usr/lib/liblinenoise.a + $(INSTALL) -m 755 -D $(@D)/linenoise_example \ + $(STAGING_DIR)/usr/bin/linenoise_example +endef + +$(eval $(generic-package)) diff --git a/package/linknx/0001-configure-ac-tweak-CPPUNIT-conditional.patch b/package/linknx/0001-configure-ac-tweak-CPPUNIT-conditional.patch new file mode 100644 index 00000000..733e2927 --- /dev/null +++ b/package/linknx/0001-configure-ac-tweak-CPPUNIT-conditional.patch @@ -0,0 +1,47 @@ +From 8e7da14647dada5eee8f583b0814bffb31d1b91e Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 21 Apr 2019 23:17:34 +0200 +Subject: [PATCH] configure.ac: tweak CPPUNIT conditional + +Following review of buildroot's patch +(http://patchwork.ozlabs.org/patch/1088520), tweak CPPUNIT to move call +to AM_CONDITIONAL outside condition + +Signed-off-by: Fabrice Fontaine +[Retrieved from: +https://github.com/linknx/linknx/commit/8e7da14647dada5eee8f583b0814bffb31d1b91e] +--- + configure.ac | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 51d8ae66..4d9d8efa 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -135,22 +135,20 @@ if test x"$WITH_CPPUNIT" != xno; then + AC_DEFINE([HAVE_CPPUNIT], [1], [cppunit]) + AC_SUBST(CPPUNIT_CFLAGS) + AC_SUBST(CPPUNIT_LIBS) +- AM_CONDITIONAL(CPPUNIT, true) ++ found_cppunit=yes + ],[ + AC_MSG_RESULT([no]) +- AM_CONDITIONAL(CPPUNIT, false) + ]) + else + PKG_CHECK_MODULES(CPPUNIT, $CPPUNITPC >= 1.9.6, [ + AC_DEFINE([HAVE_CPPUNIT], [1], [cppunit]) + AC_SUBST(CPPUNIT_CFLAGS) + AC_SUBST(CPPUNIT_LIBS) +- AM_CONDITIONAL([CPPUNIT], true) +- ],[AM_CONDITIONAL([CPPUNIT], false)]) ++ found_cppunit=yes ++ ]) + fi +-else +- AM_CONDITIONAL([CPPUNIT], false) + fi ++AM_CONDITIONAL([CPPUNIT], [test x"$found_cppunit" = xyes]) + + dnl ######################################################################### + dnl Check if using log4cpp diff --git a/package/linknx/0002-src-Makefile.am-fix-linking-with-log4cpp.patch b/package/linknx/0002-src-Makefile.am-fix-linking-with-log4cpp.patch new file mode 100644 index 00000000..4f1a8e43 --- /dev/null +++ b/package/linknx/0002-src-Makefile.am-fix-linking-with-log4cpp.patch @@ -0,0 +1,37 @@ +From 048b9ae8f3c07be217f1738c35ab995ab6394453 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 8 Mar 2020 10:02:07 +0100 +Subject: [PATCH] src/Makefile.am: fix linking with log4cpp + +linknx fails to build with log4cpp because LOG4CPP_CFLAGS (which +contains -pthread) is added to AM_CPPFLAGS (which is not used at link +time) instead of AM_CXXFLAGS: + +/home/buildroot/autobuild/instance-0/output/host/bin/mipsel-linux-g++ -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -o linknx linknx.o logger.o ruleserver.o objectcontroller.o eibclient.o threads.o timermanager.o persistentstorage.o xmlserver.o smsgateway.o emailgateway.o knxconnection.o services.o suncalc.o luacondition.o ioport.o ../ticpp/libticpp.a -L/home/buildroot/autobuild/instance-0/output/host/mipsel-buildroot-linux-gnu/sysroot/usr/bin/../../usr/lib -lpthsem -L/home/buildroot/autobuild/instance-0/output/host/bin/../mipsel-buildroot-linux-gnu/sysroot/usr/lib -llog4cpp -lm +/home/buildroot/autobuild/instance-0/output/host/mipsel-buildroot-linux-gnu/sysroot/usr/bin/../../usr/lib/liblog4cpp.so: undefined reference to `pthread_key_create' + +So move LOG4CPP_CFLAGS to AM_CXXFLAGS + +Fixes: + - http://autobuild.buildroot.org/results/1863f8f27041bc15ca68e786ba3b8e4764c40574 + +Signed-off-by: Fabrice Fontaine +[Retrieved from: +https://github.com/linknx/linknx/commit/048b9ae8f3c07be217f1738c35ab995ab6394453] +--- + src/Makefile.am | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/Makefile.am b/src/Makefile.am +index 6e0dc03b..5065c248 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -6,6 +6,7 @@ else + B64_CFLAGS= + B64_LIBS= + endif +-AM_CPPFLAGS=-I$(top_srcdir)/include -I$(top_srcdir)/ticpp $(B64_CFLAGS) $(PTH_CPPFLAGS) $(LIBCURL_CPPFLAGS) $(LOG4CPP_CFLAGS) $(LUA_CFLAGS) $(MYSQL_CFLAGS) $(ESMTP_CFLAGS) ++AM_CPPFLAGS=-I$(top_srcdir)/include -I$(top_srcdir)/ticpp $(B64_CFLAGS) $(PTH_CPPFLAGS) $(LIBCURL_CPPFLAGS) $(LUA_CFLAGS) $(MYSQL_CFLAGS) $(ESMTP_CFLAGS) ++AM_CXXFLAGS=$(LOG4CPP_CFLAGS) + linknx_LDADD=$(top_srcdir)/ticpp/libticpp.a $(LIBICONV) $(B64_LIBS) $(PTH_LDFLAGS) $(PTH_LIBS) $(LIBCURL) $(LOG4CPP_LIBS) $(LUA_LIBS) $(MYSQL_LIBS) $(ESMTP_LIBS) -lm + linknx_SOURCES=linknx.cpp logger.cpp ruleserver.cpp objectcontroller.cpp eibclient.c threads.cpp timermanager.cpp persistentstorage.cpp xmlserver.cpp smsgateway.cpp emailgateway.cpp knxconnection.cpp services.cpp suncalc.cpp luacondition.cpp ioport.cpp ruleserver.h objectcontroller.h threads.h timermanager.h persistentstorage.h xmlserver.h smsgateway.h emailgateway.h knxconnection.h services.h suncalc.h luacondition.h ioport.h logger.h diff --git a/package/linknx/Config.in b/package/linknx/Config.in new file mode 100644 index 00000000..3b62ce2f --- /dev/null +++ b/package/linknx/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LINKNX + bool "linknx" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # libpthsem + select BR2_PACKAGE_LIBPTHSEM + select BR2_PACKAGE_ARGP_STANDALONE \ + if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Linknx is an automation platform providing high level + functionalities to EIB/KNX installation. + + http://linknx.sourceforge.net/ + https://github.com/linknx/linknx + +comment "linknx needs a toolchain w/ C++" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/linknx/linknx.hash b/package/linknx/linknx.hash new file mode 100644 index 00000000..86ec5228 --- /dev/null +++ b/package/linknx/linknx.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 00c53776c2e871295459ede922402d8ad0208367d2364781fdb92ddafad94d3d linknx-0.0.1.38.tar.gz +sha256 c03cea027b4b40e4402fabd08557736727ec3d5bc54ad64ab6472de432198cad LICENSE diff --git a/package/linknx/linknx.mk b/package/linknx/linknx.mk new file mode 100644 index 00000000..683e0c49 --- /dev/null +++ b/package/linknx/linknx.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# linknx +# +################################################################################ + +LINKNX_VERSION = 0.0.1.38 +LINKNX_SITE = $(call github,linknx,linknx,$(LINKNX_VERSION)) +LINKNX_LICENSE = GPL-2.0+ +LINKNX_LICENSE_FILES = LICENSE +LINKNX_INSTALL_STAGING = YES +# We're patching configure.ac +LINKNX_AUTORECONF = YES +LINKNX_CONF_OPTS = \ + --without-cppunit \ + --without-pth-test \ + --with-pth=$(STAGING_DIR)/usr \ + --disable-smtp + +# add host-gettext for AM_ICONV macro +LINKNX_DEPENDENCIES = \ + host-gettext \ + host-pkgconf \ + libpthsem \ + $(if $(BR2_PACKAGE_ARGP_STANDALONE),argp-standalone) \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) \ + $(TARGET_NLS_DEPENDENCIES) + +LINKNX_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +LINKNX_CONF_OPTS += --with-libcurl=$(STAGING_DIR)/usr +LINKNX_DEPENDENCIES += libcurl +else +LINKNX_CONF_OPTS += --without-libcurl +endif + +ifeq ($(BR2_PACKAGE_LOG4CPP),y) +LINKNX_CONF_OPTS += --with-log4cpp +LINKNX_DEPENDENCIES += log4cpp +else +LINKNX_CONF_OPTS += --without-log4cpp +endif + +ifeq ($(BR2_PACKAGE_LUA),y) +LINKNX_CONF_OPTS += --with-lua +LINKNX_DEPENDENCIES += lua +else +LINKNX_CONF_OPTS += --without-lua +endif + +ifeq ($(BR2_PACKAGE_MARIADB),y) +LINKNX_CONF_OPTS += --with-mysql=$(STAGING_DIR)/usr +LINKNX_DEPENDENCIES += mariadb +else +LINKNX_CONF_OPTS += --without-mysql +endif + +$(eval $(autotools-package)) diff --git a/package/links/Config.in b/package/links/Config.in new file mode 100644 index 00000000..cc2389c9 --- /dev/null +++ b/package/links/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_LINKS + bool "links" + depends on BR2_USE_MMU # fork() + help + Graphics and text mode WWW browser (kind of like lynx). + + http://links.twibright.com/ + +if BR2_PACKAGE_LINKS + +config BR2_PACKAGE_LINKS_GRAPHICS + bool "use graphics" + depends on BR2_PACKAGE_GPM || BR2_PACKAGE_DIRECTFB || BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXT if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_LIBPNG + help + Enable graphics output for framebuffer, DirectFB or X11. + Framebuffer output requires GPM (console mouse). + Otherwise links will be text-mode only. + +comment "links graphics needs GPM, DirectFB or X11" + depends on !BR2_PACKAGE_GPM && !BR2_PACKAGE_DIRECTFB && !BR2_PACKAGE_XORG7 + +endif diff --git a/package/links/links.hash b/package/links/links.hash new file mode 100644 index 00000000..36a4b905 --- /dev/null +++ b/package/links/links.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 22aa96c0b38e1a6f8f7ed9d7a4167a47fc37246097759ef6059ecf8f9ead7998 links-2.29.tar.bz2 +sha256 92deeb70791366630095d4e0714fe37d6e2bd5db0e6ef498ebb8de328f45b253 COPYING diff --git a/package/links/links.mk b/package/links/links.mk new file mode 100644 index 00000000..30a26b27 --- /dev/null +++ b/package/links/links.mk @@ -0,0 +1,101 @@ +################################################################################ +# +# links +# +################################################################################ + +LINKS_VERSION = 2.29 +LINKS_SOURCE = links-$(LINKS_VERSION).tar.bz2 +LINKS_SITE = http://links.twibright.com/download +LINKS_DEPENDENCIES = host-pkgconf +LINKS_LICENSE = GPL-2.0+ +LINKS_LICENSE_FILES = COPYING +LINKS_CPE_ID_VENDOR = twibright + +ifeq ($(BR2_PACKAGE_LINKS_GRAPHICS),y) +LINKS_CONF_OPTS += --enable-graphics +LINKS_DEPENDENCIES += libpng +ifeq ($(BR2_PACKAGE_XLIB_LIBXT),y) +LINKS_CONF_OPTS += \ + --with-x \ + --x-includes=$(STAGING_DIR)/usr/include \ + --x-libraries=$(STAGING_DIR)/usr/lib +LINKS_DEPENDENCIES += xlib_libXt +else +LINKS_CONF_OPTS += --without-x +endif +ifeq ($(BR2_PACKAGE_DIRECTFB),y) +LINKS_CONF_ENV = ac_cv_path_DIRECTFB_CONFIG=$(STAGING_DIR)/usr/bin/directfb-config +ifeq ($(BR2_STATIC_LIBS),y) +LINKS_CONF_ENV += LIBS=-lstdc++ +endif +LINKS_CONF_OPTS += --with-directfb +LINKS_DEPENDENCIES += directfb +else +LINKS_CONF_OPTS += --without-directfb +endif +ifeq ($(BR2_PACKAGE_JPEG),y) +LINKS_CONF_OPTS += --with-libjpeg +LINKS_DEPENDENCIES += jpeg +else +LINKS_CONF_OPTS += --without-libjpeg +endif +ifeq ($(BR2_PACKAGE_LIBRSVG),y) +LINKS_CONF_OPTS += --with-librsvg +LINKS_DEPENDENCIES += librsvg +else +LINKS_CONF_OPTS += --without-librsvg +endif +ifeq ($(BR2_PACKAGE_TIFF),y) +LINKS_CONF_OPTS += --with-libtiff +LINKS_DEPENDENCIES += tiff +else +LINKS_CONF_OPTS += --without-libtiff +endif +else +LINKS_CONF_OPTS += --disable-graphics +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +LINKS_CONF_OPTS += --with-bzip2 +LINKS_DEPENDENCIES += bzip2 +else +LINKS_CONF_OPTS += --without-bzip2 +endif + +ifeq ($(BR2_PACKAGE_GPM),y) +LINKS_CONF_OPTS += --with-gpm +LINKS_DEPENDENCIES += gpm +else +LINKS_CONF_OPTS += --without-gpm +endif + +ifeq ($(BR2_PACKAGE_LIBEVENT),y) +LINKS_CONF_OPTS += --with-libevent +LINKS_DEPENDENCIES += libevent +else +LINKS_CONF_OPTS += --without-libevent +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LINKS_CONF_OPTS += --with-ssl --enable-ssl-pkgconfig +LINKS_DEPENDENCIES += openssl +else +LINKS_CONF_OPTS += --without-ssl +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +LINKS_CONF_OPTS += --with-lzma +LINKS_DEPENDENCIES += xz +else +LINKS_CONF_OPTS += --without-lzma +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LINKS_CONF_OPTS += --with-zlib +LINKS_DEPENDENCIES += zlib +else +LINKS_CONF_OPTS += --without-zlib +endif + +$(eval $(autotools-package)) diff --git a/package/linphone/0001-src-core-paths-paths.cpp-fix-powerpc-build.patch b/package/linphone/0001-src-core-paths-paths.cpp-fix-powerpc-build.patch new file mode 100644 index 00000000..1655fa59 --- /dev/null +++ b/package/linphone/0001-src-core-paths-paths.cpp-fix-powerpc-build.patch @@ -0,0 +1,35 @@ +From d5d528e7562f358b9564e64cea0678020c51479a Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 15 Mar 2020 18:56:19 +0100 +Subject: [PATCH] src/core/paths/paths.cpp: fix powerpc build + +Fix the following build failure on powerpc: + +/home/test/autobuild/run/instance-2/output-1/build/linphone-4.3.1/src/core/paths/paths.cpp:32:3: error: #error "Unsupported system." + #error "Unsupported system." + ^~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/d90bca02c2771df8dfbf39892d529fb5f9069656 + +Signed-off-by: Fabrice Fontaine +--- + src/core/paths/paths.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/core/paths/paths.cpp b/src/core/paths/paths.cpp +index 0442282fe..2c6508a51 100644 +--- a/src/core/paths/paths.cpp ++++ b/src/core/paths/paths.cpp +@@ -26,7 +26,7 @@ + #include "paths-android.h" + #elif defined(_WIN32) + #include "paths-windows.h" +-#elif defined(__linux) ++#elif defined(__linux) || defined(__linux__) + #include "paths-linux.h" + #else + #error "Unsupported system." +-- +2.25.1 + diff --git a/package/linphone/Config.in b/package/linphone/Config.in new file mode 100644 index 00000000..3fe25c16 --- /dev/null +++ b/package/linphone/Config.in @@ -0,0 +1,41 @@ +config BR2_PACKAGE_LINPHONE + bool "linphone" + depends on BR2_USE_MMU + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS # belle-sip, mediastreamer + depends on BR2_TOOLCHAIN_HAS_THREADS # belr, belle-sip, mediastreamer + # belr, belle-sip, mediastreamer + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + depends on BR2_USE_WCHAR # belle-sip + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # mediastreamer + select BR2_PACKAGE_BELLE_SIP + select BR2_PACKAGE_BELR + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_MEDIASTREAMER + select BR2_PACKAGE_SQLITE + help + Linphone is an internet phone or Voice Over IP phone (VoIP). + + With linphone you can communicate freely with people over + the internet, with voice, video, and text instant messaging. + Linphone makes use of the SIP protocol, an open standard + for internet telephony. You can use Linphone with any SIP + VoIP operator, including our free SIP audio/video service. + linphone is free-software (or open-source), you can download + and redistribute it freely. + Linphone is available for desktop computers: Linux, Windows, + MacOSX, and for mobile phones: Android, iPhone, Blackberry. + + Linphone support in Buildroot is limited to the commandline + client, linphonec, and video support is not enabled. + + http://www.linphone.org/ + +comment "linphone needs a toolchain w/ threads, C++, dynamic library, wchar, gcc >= 5" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +comment "linphone needs a toolchain not affected by GCC bug 64735" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/linphone/linphone.hash b/package/linphone/linphone.hash new file mode 100644 index 00000000..6d456ac9 --- /dev/null +++ b/package/linphone/linphone.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 9956f6785a787041328da000cee5fcc1e41d6f17956ffe5e0402fac0f9a9676b linphone-4.4.8.tar.gz +# Locally computed +sha256 1b3782ccad7b8614100cda30d3faf42fc39f2e97932908c543005053b654ca68 LICENSE.txt diff --git a/package/linphone/linphone.mk b/package/linphone/linphone.mk new file mode 100644 index 00000000..bb79e2f7 --- /dev/null +++ b/package/linphone/linphone.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# linphone +# +################################################################################ + +LINPHONE_VERSION = 4.4.8 +LINPHONE_SITE = \ + https://gitlab.linphone.org/BC/public/liblinphone/-/archive/$(LINPHONE_VERSION) +LINPHONE_CONF_OPTS = \ + -DENABLE_ADVANCED_IM=OFF \ + -DENABLE_CXX_WRAPPER=OFF \ + -DENABLE_DB_STORAGE=OFF \ + -DENABLE_LIME=OFF \ + -DENABLE_LIME_X3DH=OFF \ + -DENABLE_STRICT=OFF \ + -DENABLE_TOOLS=OFF \ + -DENABLE_TUTORIALS=OFF \ + -DENABLE_UNIT_TESTS=OFF \ + -DENABLE_VCARD=OFF \ + -DENABLE_VIDEO=OFF \ + -DGIT_EXECUTABLE=OFF +LINPHONE_INSTALL_STAGING = YES +LINPHONE_DEPENDENCIES = \ + belle-sip \ + belr \ + libxml2 \ + mediastreamer \ + sqlite \ + $(if $(BR2_PACKAGE_ZLIB),zlib) +LINPHONE_LICENSE = GPL-3.0+ +LINPHONE_LICENSE_FILES = LICENSE.txt + +ifeq ($(BR2_STATIC_LIBS),y) +LINPHONE_CONF_OPTS += -DENABLE_STATIC=ON -DENABLE_SHARED=OFF +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +LINPHONE_CONF_OPTS += -DENABLE_STATIC=ON -DENABLE_SHARED=ON +else ifeq ($(BR2_SHARED_LIBS),y) +LINPHONE_CONF_OPTS += -DENABLE_STATIC=OFF -DENABLE_SHARED=ON +endif + +$(eval $(cmake-package)) diff --git a/package/linux-backports/Config.in b/package/linux-backports/Config.in new file mode 100644 index 00000000..a434d004 --- /dev/null +++ b/package/linux-backports/Config.in @@ -0,0 +1,65 @@ +comment "linux-backports needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_LINUX_BACKPORTS + bool "linux-backports" + depends on BR2_LINUX_KERNEL + help + The linux-backports package includes many Linux drivers from + recent kernels, backported to older ones. + + https://backports.wiki.kernel.org + +if BR2_PACKAGE_LINUX_BACKPORTS + +choice + prompt "Linux Backports version" + default BR2_PACKAGE_LINUX_BACKPORTS_5_15_X + help + Select the highest version that supports your kernel version. + +config BR2_PACKAGE_LINUX_BACKPORTS_5_15_X + bool "5.15.x (for kernels back to 4.4)" + +config BR2_PACKAGE_LINUX_BACKPORTS_5_10_X + bool "5.10.x (for kernels back to 3.10)" + +endchoice + +choice + prompt "Linux kernel driver backports configuration" + default BR2_PACKAGE_LINUX_BACKPORTS_USE_DEFCONFIG + +config BR2_PACKAGE_LINUX_BACKPORTS_USE_DEFCONFIG + bool "Using an in-tree defconfig file" + +config BR2_PACKAGE_LINUX_BACKPORTS_USE_CUSTOM_CONFIG + bool "Using a custom (def)config file" + +endchoice + +config BR2_PACKAGE_LINUX_BACKPORTS_DEFCONFIG + string "Defconfig name" + depends on BR2_PACKAGE_LINUX_BACKPORTS_USE_DEFCONFIG + help + Name of the backports defconfig file to use, without the + leading defconfig-. The defconfig is located in defconfigs/ + directory in the backports tree. + +config BR2_PACKAGE_LINUX_BACKPORTS_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_PACKAGE_LINUX_BACKPORTS_USE_CUSTOM_CONFIG + help + Path to the backports configuration file + + Note: this can be a defconfig file or a complete .config + file, which can later be saved back with make + linux-update-(def)config. + +config BR2_PACKAGE_LINUX_BACKPORTS_CONFIG_FRAGMENT_FILES + string "Additional configuration fragment files" + help + A space-separated list of configuration fragment files, that + will be merged to the main linux-backports configuration file. + +endif # BR2_PACKAGE_LINUX_BACKPORTS diff --git a/package/linux-backports/linux-backports.hash b/package/linux-backports/linux-backports.hash new file mode 100644 index 00000000..ce4278df --- /dev/null +++ b/package/linux-backports/linux-backports.hash @@ -0,0 +1,8 @@ +# From: https://www.kernel.org/pub/linux/kernel/projects/backports/stable/v5.10.110/sha256sums.asc +sha256 3d958154080c059adaf26512430fd1a8888d65a2228e5e70e48d028201e148b1 backports-5.10.110-1.tar.xz +# From: https://www.kernel.org/pub/linux/kernel/projects/backports/stable/v5.15.58/sha256sums.asc +sha256 a3c2a2b7bbaf8943c65fd72f4e7d7ad5e205aeae28b26c835f9d8afa0f9810bf backports-5.15.58-1.tar.xz +# Locally computed +sha256 fb5a425bd3b3cd6071a3a9aff9909a859e7c1158d54d32e07658398cd67eb6a0 COPYING +sha256 8e378ab93586eb55135d3bc119cce787f7324f48394777d00c34fa3d0be3303f LICENSES/exceptions/Linux-syscall-note +sha256 f6b78c087c3ebdf0f3c13415070dd480a3f35d8fc76f3d02180a407c1c812f79 LICENSES/preferred/GPL-2.0 diff --git a/package/linux-backports/linux-backports.mk b/package/linux-backports/linux-backports.mk new file mode 100644 index 00000000..8513a844 --- /dev/null +++ b/package/linux-backports/linux-backports.mk @@ -0,0 +1,134 @@ +################################################################################ +# +# linux-backports +# +################################################################################ + +ifeq ($(BR2_PACKAGE_LINUX_BACKPORTS_5_10_X),y) +LINUX_BACKPORTS_VERSION_MAJOR = 5.10.110 +LINUX_BACKPORTS_MINIMAL_KVER_MAJOR = 3 +LINUX_BACKPORTS_MINIMAL_KVER_MINOR = 10 +else +# use default the latest version as default +LINUX_BACKPORTS_VERSION_MAJOR = 5.15.58 +LINUX_BACKPORTS_MINIMAL_KVER_MAJOR = 4 +LINUX_BACKPORTS_MINIMAL_KVER_MINOR = 4 +endif + +LINUX_BACKPORTS_VERSION = $(LINUX_BACKPORTS_VERSION_MAJOR)-1 +LINUX_BACKPORTS_SOURCE = backports-$(LINUX_BACKPORTS_VERSION).tar.xz +LINUX_BACKPORTS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/projects/backports/stable/v$(LINUX_BACKPORTS_VERSION_MAJOR) +LINUX_BACKPORTS_LICENSE = GPL-2.0 +LINUX_BACKPORTS_LICENSE_FILES = \ + COPYING \ + LICENSES/exceptions/Linux-syscall-note \ + LICENSES/preferred/GPL-2.0 + +# flex and bison are needed to generate kconfig parser. We use the +# same logic as the linux kernel (we add host dependencies only if +# host does not have them). See linux/linux.mk and +# support/dependencies/check-host-bison-flex.mk. +LINUX_BACKPORTS_DEPENDENCIES = \ + $(BR2_BISON_HOST_DEPENDENCY) \ + $(BR2_FLEX_HOST_DEPENDENCY) + +ifeq ($(BR2_PACKAGE_LINUX_BACKPORTS_USE_DEFCONFIG),y) +LINUX_BACKPORTS_KCONFIG_FILE = $(LINUX_BACKPORTS_DIR)/defconfigs/$(call qstrip,$(BR2_PACKAGE_LINUX_BACKPORTS_DEFCONFIG)) +else ifeq ($(BR2_PACKAGE_LINUX_BACKPORTS_USE_CUSTOM_CONFIG),y) +LINUX_BACKPORTS_KCONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_LINUX_BACKPORTS_CUSTOM_CONFIG_FILE)) +endif + +LINUX_BACKPORTS_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_PACKAGE_LINUX_BACKPORTS_CONFIG_FRAGMENT_FILES)) +LINUX_BACKPORTS_KCONFIG_OPTS = $(LINUX_BACKPORTS_MAKE_OPTS) + +# linux-backports' build system expects the config options to be present +# in the environment, and it is so when using their custom buildsystem, +# because they are set in the main Makefile, which then calls a second +# Makefile. +# +# In our case, we do not use that first Makefile. So, we parse the +# .config file, filter-out comment lines and put the rest as command +# line variables. +# +# LINUX_BACKPORTS_MAKE_OPTS is used by the kconfig-package infra, while +# LINUX_BACKPORTS_MODULE_MAKE_OPTS is used by the kernel-module infra. +# +LINUX_BACKPORTS_MAKE_OPTS = \ + LEX=flex \ + YACC=bison \ + BACKPORT_DIR=$(@D) \ + KLIB_BUILD=$(LINUX_DIR) \ + KLIB=$(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED) \ + INSTALL_MOD_DIR=backports \ + `sed -r -e '/^\#/d;' $(@D)/.config` + +LINUX_BACKPORTS_MODULE_MAKE_OPTS = $(LINUX_BACKPORTS_MAKE_OPTS) + +# This file is not automatically generated by 'oldconfig' that we use in +# the kconfig-package infrastructure. In the linux buildsystem, it is +# generated by running silentoldconfig, but that's not the case for +# linux-backports: it uses a hand-crafted rule to generate that file. +define LINUX_BACKPORTS_KCONFIG_FIXUP_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LINUX_BACKPORTS_MAKE_OPTS) backport-include/backport/autoconf.h +endef + +# Checks to give errors that the user can understand +ifeq ($(BR_BUILDING),y) + +ifeq ($(BR2_PACKAGE_LINUX_BACKPORTS_USE_DEFCONFIG),y) +ifeq ($(call qstrip,$(BR2_PACKAGE_LINUX_BACKPORTS_DEFCONFIG)),) +$(error No linux-backports defconfig name specified, check your BR2_PACKAGE_LINUX_BACKPORTS_DEFCONFIG setting) +endif +endif + +ifeq ($(BR2_PACKAGE_LINUX_BACKPORTS_USE_CUSTOM_CONFIG),y) +ifeq ($(call qstrip,$(BR2_PACKAGE_LINUX_BACKPORTS_CUSTOM_CONFIG_FILE)),) +$(error No linux-backports configuration file specified, check your BR2_PACKAGE_LINUX_BACKPORTS_CUSTOM_CONFIG_FILE setting) +endif +endif + +endif # BR_BUILDING + +$(eval $(kernel-module)) +$(eval $(kconfig-package)) + +# linux-backports' own .config file needs options from the kernel's own +# .config file. The dependencies handling in the infrastructure does not +# allow to express this kind of dependencies. Besides, linux.mk might +# not have been parsed yet, so the Linux build dir LINUX_DIR is not yet +# known. Thus, we use a "secondary expansion" so the rule is re-evaluated +# after all Makefiles are parsed, and thus at that time we will have the +# LINUX_DIR variable set to the proper value. Moreover, since linux-4.19, +# the kernel's build system internally touches its .config file, so we +# can't use it as a stamp file. We use the LINUX_KCONFIG_STAMP_DOTCONFIG +# instead. +# +# Furthermore, we want to check the kernel version is compatible with +# linux-backports. To avoid overriding linux-backports' +# KCONFIG_STAMP_DOTCONFIG rule defined in the kconfig-package infra, we +# use an intermediate stamp-file. +# +# Finally, it must also come after the call to kconfig-package, so we get +# LINUX_BACKPORTS_DIR properly defined (because the target part of the +# rule is not re-evaluated). +# +$(LINUX_BACKPORTS_DIR)/$(LINUX_BACKPORTS_KCONFIG_STAMP_DOTCONFIG): $(LINUX_BACKPORTS_DIR)/.stamp_check_kernel_version + +.SECONDEXPANSION: +$(LINUX_BACKPORTS_DIR)/.stamp_check_kernel_version: $$(LINUX_DIR)/$$(LINUX_KCONFIG_STAMP_DOTCONFIG) + $(Q)KVER=$(LINUX_VERSION_PROBED); \ + MIN_KVER_MAJOR=$(LINUX_BACKPORTS_MINIMAL_KVER_MAJOR); \ + MIN_KVER_MINOR=$(LINUX_BACKPORTS_MINIMAL_KVER_MINOR); \ + KVER_MAJOR=`echo $${KVER} | sed 's/^\([0-9]*\)\..*/\1/'`; \ + KVER_MINOR=`echo $${KVER} | sed 's/^[0-9]*\.\([0-9]*\).*/\1/'`; \ + if [ $${KVER_MAJOR} -lt $(LINUX_BACKPORTS_MINIMAL_KVER_MAJOR) \ + -o \( $${KVER_MAJOR} -eq $(LINUX_BACKPORTS_MINIMAL_KVER_MAJOR) \ + -a $${KVER_MINOR} -lt $(LINUX_BACKPORTS_MINIMAL_KVER_MINOR) \ + \) ]; then \ + printf "Linux version '%s' is too old for linux-backports (needs %s.%s or later)\n" \ + "$${KVER}" \ + "$(LINUX_BACKPORTS_MINIMAL_KVER_MAJOR)" \ + "$(LINUX_BACKPORTS_MINIMAL_KVER_MINOR)"; \ + exit 1; \ + fi + $(Q)touch $(@) diff --git a/package/linux-firmware/Config.in b/package/linux-firmware/Config.in new file mode 100644 index 00000000..651ca450 --- /dev/null +++ b/package/linux-firmware/Config.in @@ -0,0 +1,709 @@ +config BR2_PACKAGE_LINUX_FIRMWARE + bool "linux-firmware" + help + This package provides various binary firmware files (closed + binary blobs) for such devices like LAN, WLAN cards etc. + + https://git.kernel.org/?p=linux/kernel/git/firmware/linux-firmware.git + +if BR2_PACKAGE_LINUX_FIRMWARE + +menu "Audio firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_INTEL_SST_DSP + bool "Intel SST DSP" + help + Firmware files for Intel Baytrail SST DSP audio. + +endmenu # Audio + +menu "Video firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_AMDGPU + bool "AMD GPU video card firmware" + help + Firmware files for AMD GPU video cards. + +config BR2_PACKAGE_LINUX_FIRMWARE_I915 + bool "Intel i915 video card firmware" + help + Firmware files for the Intel i915 video cards. + +config BR2_PACKAGE_LINUX_FIRMWARE_RADEON + bool "AMD Radeon video card firmware" + help + Firmware files for AMD Radeon video cards. + +config BR2_PACKAGE_LINUX_FIRMWARE_QCOM_VENUS + bool "Qualcomm Venus video codec accelerator" + help + Firmware files for Qualcomm Venus video codec accelerator + +config BR2_PACKAGE_LINUX_FIRMWARE_QCOM_ADRENO + bool "Qualcomm Adreno GPU firmware" + help + Firmware files for Qualcomm Adreno GPU firmware + +config BR2_PACKAGE_LINUX_FIRMWARE_MFC_V8 + bool "Samsung MFC video encoder/decoder v8 firmware" + help + Firmware files for Samsung MFC video encoder/decoder driver v8 + +endmenu # Video + +menu "Bluetooth firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_AMLOGIC + bool "Amlogic SOC Bluetooth" + help + Firmware files for Conexant Amlogic SOC bluetooth support. + +config BR2_PACKAGE_LINUX_FIRMWARE_IBT + bool "Intel Wireless Bluetooth" + help + Firmware files for Intel 3160/7260/7265/8260/8265 Wireless + bluetooth support. + +config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7650 + bool "MediaTek MT7650" + help + Firmware files for MediaTek MT7650 bluetooth support + +config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7921_BT + bool "MediaTek MT7921" + help + Firmware files for MediaTek MT7921 bluetooth support + +config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7922_BT + bool "MediaTek MT7922" + help + Firmware files for MediaTek MT7922 bluetooth support + +config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7925_BT + bool "MediaTek MT7925" + help + Firmware files for MediaTek MT7925 bluetooth support + +config BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174A_BT + bool "Qualcomm Atheros Rome 6174A Bluetooth" + help + Firmware files for QCA Rome 6174A bluetooth support. + +config BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_9377_BT + bool "Qualcomm Atheros QCA9377 Bluetooth" + help + Firmware files for QCA9377 bluetooth support. + +config BR2_PACKAGE_LINUX_FIRMWARE_AR3011 + bool "Qualcomm Atheros 3011" + help + Firmware files for Atheros bluetooth chipset AR3011. + +config BR2_PACKAGE_LINUX_FIRMWARE_AR3012_USB + bool "Qualcomm Atheros 3012 (USB)" + help + Firmware files for Atheros bluetooth chipset AR3012 on USB. + +config BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX_BT + bool "Realtek 87xx Bluetooth" + help + Realtek 8723a/8723b/8723bs/8723d/8723ds/8761a + +config BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX_BT + bool "Realtek 88xx Bluetooth" + help + Firmware files for Realtek Bluetooth modules 88xx. + +config BR2_PACKAGE_LINUX_FIRMWARE_TI_CC2560 + bool "TI CC2560" + help + Firmware files for Bluetooth modules CC2560 and CC2560A + +endmenu # Bluetooth + +menu "WiFi firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6002 + bool "Atheros 6002" + help + Firmware files for the Atheros AR6002 chip + +config BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6003 + bool "Atheros 6003" + help + Firmware files for the Atheros AR6003 chip + +config BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6004 + bool "Atheros 6004" + help + Firmware files for the Atheros AR6004 chip + +config BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010 + bool "Atheros 7010" + help + Firmware files for the Atheros 7010 module + +config BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170 + bool "Atheros 9170" + help + Firmware files for the Atheros 9170 module + +config BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271 + bool "Atheros 9271" + help + Firmware files for the Atheros 9271 module + +config BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_10K_QCA9377 + bool "Atheros 10k (QCA9377)" + help + Firmware files for the Atheros QCA9377 module + +config BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_10K_QCA998X + bool "Atheros 10k (QCA998X)" + help + Firmware files for the Atheros QCA988X module + +config BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX + bool "Broadcom BRCM bcm43xx" + select BR2_PACKAGE_LINUX_FIRMWARE_CYPRESS_CYW43XX + help + Firmware files for the Broadcom bcm43xx SoftMAC and FullMAC. + +config BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX + bool "Broadcom BRCM bcm43xxx" + select BR2_PACKAGE_LINUX_FIRMWARE_CYPRESS_CYW43XXX + help + Firmware files for the Broadcom bcm43xxx, SoftMAC and FullMAC. + +config BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM4366B1 + bool "Broadcom 4366b1" + help + Firmware file for the Broadcom 4366b1 FullMAC chip. + +config BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM4366C0 + bool "Broadcom 4366c0" + help + Firmware file for the Broadcom 4366c0 FullMAC chip. + +config BR2_PACKAGE_LINUX_FIRMWARE_CYPRESS_CYW43XX + bool "Cypress CY cyw43xx" + help + Firmware files for the Cypress cyw43xx FullMAC. + +config BR2_PACKAGE_LINUX_FIRMWARE_CYPRESS_CYW43XXX + bool "Cypress CY cyw43xxx" + help + Firmware files for the Cypress cyw43xxx FullMAC. + +config BR2_PACKAGE_LINUX_FIRMWARE_CYPRESS_CYW54XXX + bool "Cypress CY cyw54xxx" + help + Firmware files for the Cypress cyw54xxx FullMAC. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_100 + bool "Intel iwlwifi 100" + help + Firmware files for the Intel Wifi 100 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_105 + bool "Intel iwlwifi 105" + help + Firmware files for the Intel Wifi 105 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_135 + bool "Intel iwlwifi 135" + help + Firmware files for the Intel Wifi 135 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_1000 + bool "Intel iwlwifi 1000" + help + Firmware files for the Intel Wifi 1000 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_2000 + bool "Intel iwlwifi 2000" + help + Firmware files for the Intel Wifi 2000 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_2030 + bool "Intel iwlwifi 2030" + help + Firmware files for the Intel Wifi 2030 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_22000 + bool "Intel iwlwifi 22000" + help + Firmware files for the Intel Wifi 22000 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_22260 + bool "Intel iwlwifi 22260" + help + Firmware files for the Intel Wifi 22260 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160 + bool "Intel iwlwifi 3160" + help + Firmware files for the Intel Wifi 3160 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168 + bool "Intel iwlwifi 3168" + help + Firmware files for the Intel Wifi 3168 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3945 + bool "Intel iwlwifi 3945" + help + Firmware files for the Intel Wifi 3945 devices supported by + the iwl3945 kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_4965 + bool "Intel iwlwifi 4965" + help + Firmware files for the Intel Wifi 4965 devices supported by + the iwl4965 kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000 + bool "Intel iwlwifi 5000" + help + Firmware files for the Intel Wifi 5000 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A + bool "Intel iwlwifi 6000G2A" + help + Firmware files for the Intel Wifi 6000G2A devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B + bool "Intel iwlwifi 6000G2B" + help + Firmware files for the Intel Wifi 6000G2B devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260 + bool "Intel iwlwifi 7260" + help + Firmware files for the Intel Wifi 7260 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265 + bool "Intel iwlwifi 7265" + help + Firmware files for the Intel Wifi 7265 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D + bool "Intel iwlwifi 7265D" + # needed for old kernel versions, where the non-D and D + # firmwares were the same + select BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265 + help + Firmware files for the Intel Wifi 7265D devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C + bool "Intel iwlwifi 8000C" + help + Firmware files for the Intel Wifi 8000C devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265 + bool "Intel iwlwifi 8265" + help + Firmware files for the Intel Wifi 8265 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_9XXX + bool "Intel iwlwifi 9xxx" + help + Firmware files for the Intel Wifi 9xxx devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6E + bool "Intel iwlwifi 6/6E" + help + Firmware files for the Intel Wi-Fi 6 and Wi-Fi 6E devices + supported by the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_QUZ + bool "Intel iwlwifi QuZ" + help + Firmware files for the Intel Wifi QuZ devices (used in NUC10) + supported by the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V8 + bool "Libertas SD 8686 v8" + help + Firmware files (version 8) for the Marvell SD8686 module + +config BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V9 + bool "Libertas SD 8686 v9" + help + Firmware files (version 9) for the Marvell SD8686 module + +config BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8688 + bool "Libertas SD 8688" + help + Firmware files for the Marvell SD8688 module + +config BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_USB8388_V9 + bool "Libertas USB 8388 v9" + help + Firmware files (version 9) for the Marvell USB8388 module + +config BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_USB8388_OLPC + bool "Libertas USB 8388 OLPC" + help + Firmware files (OLPC mesh capable version) for the Marvell + USB8388 module. + +config BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_USB_THINFIRM + bool "Libertas USB Thin Firmware" + help + Firmware files (soft MAC) for the Marvell USB modules + +config BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8787 + bool "Marvell Wifi-Ex 8787 SDIO" + help + Firmware files for the Marvell Wifi-Ex 8787 module on SDIO. + +config BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8797 + bool "Marvell Wifi-Ex 8797 SDIO" + help + Firmware files for the Marvell Wifi-Ex 8797 module on SDIO. + +config BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8797 + bool "Marvell Wifi-Ex 8797 USB" + help + Firmware files for the Marvell Wifi-Ex 8797 module on USB. + +config BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8801 + bool "Marvell Wifi-Ex 8801 USB" + help + Firmware files for the Marvell Wifi-Ex 8801 module on USB. + +config BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8887 + bool "Marvell Wifi-Ex 8887 SDIO" + help + Firmware files for the Marvell Wifi-Ex 8887 module on SDIO. + +config BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8897 + bool "Marvell Wifi-Ex 8897 SDIO" + help + Firmware files for the Marvell Wifi-Ex 8897 module on SDIO. + +config BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8897 + bool "Marvell Wifi-Ex 8897 USB" + help + Firmware files for the Marvell Wifi-Ex 8897 module on USB. + +config BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_PCIE8897 + bool "Marvell Wifi-Ex 8897 PCI-E" + help + Firmware files for the Marvell Wifi-Ex 8897 module on PCI-E. + +config BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_PCIEUART8997 + bool "Marvell Wifi-Ex 8997 PCI-E/UART" + help + Firmware files for the Marvell Wifi-Ex 8997 module on + PCI-E/UART. + +config BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_PCIEUSB8997 + bool "Marvell Wifi-Ex 8997 PCI-E/USB" + help + Firmware files for the Marvell Wifi-Ex 8997 module on + PCI-E/USB. + +config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U + bool "MediaTek MT7601U" + help + MediaTek MT7601U + +config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7610E + bool "MediaTek MT7610E" + help + MediaTek MT7610E + +config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT76X2E + bool "MediaTek MT76x2e" + help + MediaTek MT76x2e + +config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7921 + bool "MediaTek MT7921" + help + MediaTek MT7921 + +config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7922 + bool "MediaTek MT7922" + help + MediaTek MT7922 + +config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7925 + bool "MediaTek MT7925" + help + MediaTek MT7925 + +config BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174 + bool "Qualcomm Atheros 6174" + help + Firmware files for the Qualcomm Atheros QCA6174 chip + +config BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61 + bool "Ralink rt2501/rt61" + help + Ralink rt2501/rt61 + +config BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73 + bool "Ralink rt73" + help + Ralink rt73 + +config BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX + bool "Ralink rt27xx/rt28xx/rt30xx" + help + Ralink rt27xx/rt28xx/rt30xx + +config BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX + bool "Realtek 81xx" + help + Realtek 8188/8192 + +config BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX + bool "Realtek 87xx" + help + Realtek 8712/8723/8723be + +config BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX + bool "Realtek 88xx" + help + Realtek rtl8821ae + +config BR2_PACKAGE_LINUX_FIRMWARE_RTL_RTW88 + bool "Realtek rtw88" + help + Firmware images supported by Realtek's wireless + driver rtw88 (802.11n/ac chipsets). + +config BR2_PACKAGE_LINUX_FIRMWARE_RTL_RTW89 + bool "Realtek rtw89" + help + Firmware images supported by Realtek's wireless + driver rtw89 (802.11ax chipsets). + +config BR2_PACKAGE_LINUX_FIRMWARE_REDPINE_RS9113 + bool "Redpine rs9113" + help + Firmware files for WLAN and Bluetooth modules rs9113 + +config BR2_PACKAGE_LINUX_FIRMWARE_REDPINE_RS9116 + bool "Redpine rs9116" + help + Firmware files for WLAN and Bluetooth modules rs9116 + +config BR2_PACKAGE_LINUX_FIRMWARE_TI_WL127X + bool "TI wl127x" + help + Firmware files for WLAN and Bluetooth modules wl1271 and + wl1273 + +config BR2_PACKAGE_LINUX_FIRMWARE_TI_WL128X + bool "TI wl128x" + help + Firmware files for WLAN and Bluetooth modules wl128x + +config BR2_PACKAGE_LINUX_FIRMWARE_TI_WL18XX + bool "TI wl18xx" + help + Firmware files for WLAN and Bluetooth modules wl18xx + +config BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_WIL6210 + bool "Qualcomm Atheros wil6210" + help + Firmware files for Qualcomm Atheros 11ad family of chips + +endmenu + +menu "Ethernet firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_BROADCOM_TIGON3 + bool "Broadcom NetXtreme/Tigon3" + help + Firmware files for Broadcom Tigon3 ethernet cards + (tigon) + +config BR2_PACKAGE_LINUX_FIRMWARE_BNX2 + bool "Broadcom NetXtremeII" + help + Firmware files for Broadcom NetXtreme ethernet cards (bnx2) + +config BR2_PACKAGE_LINUX_FIRMWARE_BNX2X + bool "Broadcom NetXtremeII 10Gb" + help + Firmware files for Broadcom NetXtreme 10Gb ethernet cards + (bnx2x) + +config BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4 + bool "Chelsio T4" + help + Firmware files for Chelsio T4 1Gb and 10Gb ethernet cards + (cxgb4) + +config BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T5 + bool "Chelsio T5" + help + Firmware files for Chelsio T5 1Gb and 10Gb ethernet cards + (cxgb4) + +config BR2_PACKAGE_LINUX_FIRMWARE_INTEL_E100 + bool "Intel e100 825xx" + help + Firmware files for Intel 825xx handled by driver e100 + (e100) + +config BR2_PACKAGE_LINUX_FIRMWARE_INTEL_ICE + bool "Intel Ethernet 800 Series" + help + Firmware files for Intel Ethernet 800 Series Network Adapters + (ice) + +config BR2_PACKAGE_LINUX_FIRMWARE_MARVELL_PRESTERA + bool "Marvell Prestera" + help + Firmware files for Marvell Prestera ethernet cards + +config BR2_PACKAGE_LINUX_FIRMWARE_MICROCHIP_VSC85XX_PHY + bool "Microchip VSC85xx PHYs" + help + Firmware files for Microchip/Microsemi VSC85xx networking + PHYs (VSC8504, VSC8552, VSC8572, VSC8574, VSC856X, VSC8575, + VSC8582 and VSC8584) + +config BR2_PACKAGE_LINUX_FIRMWARE_QLOGIC_4X + bool "QLogic FastLinQ 4xxxx" + help + Firmware files for QLogic FastLinQ 4xxxx ethernet devices + (qede) + +config BR2_PACKAGE_LINUX_FIRMWARE_RTL_815X + bool "Realtek 8152/8153/8156 USB Ethernet Adapaters" + help + Firmware files for Realtek 8152/8153/8156 based USB Ethernet + adapters. + +config BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169 + bool "Realtek 8169" + help + Firmware files for Realtek 8169 gigabit ethernet cards + +endmenu + +menu "DVB firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_AS102 + bool "Abilis Systems as102" + help + Firmware file for Abilis Systems single DVB-T receiver as102 + +config BR2_PACKAGE_LINUX_FIRMWARE_DIB0700 + bool "DiBcom dib0700" + help + Firmware file for dib0700-based USB DVB tuner driver + +config BR2_PACKAGE_LINUX_FIRMWARE_ITETECH_IT9135 + bool "ITEtech it9135" + help + Firmware files for ITEtech it9135 (Ax and Bx) DVB-T USB tuner + +config BR2_PACKAGE_LINUX_FIRMWARE_H5_DRXK + bool "Terratec H5 DRX-K" + help + Firmware file for Terratec H5 DRX-K based DVB tuner driver + +config BR2_PACKAGE_LINUX_FIRMWARE_XCx000 + bool "Xceive/Cresta xc4000/xc5000/xc500c" + help + Firmware file for xc4000/xc5000/xc5000c based DVB tuner driver + +endmenu + +menu "Fibre Channel Adapter Firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_QLOGIC_2XXX + bool "QLogic 2xxx Fibre Channel Adapters" + help + Firmware files for ql2xxx adapters + +endmenu + +menu "Intel QuickAssist Firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_QAT_DH895XCC + bool "Support for DH895xCC" + help + Firmware files for Intel DH895xCC devices + +config BR2_PACKAGE_LINUX_FIRMWARE_QAT_C3XXX + bool "Support for C3XXX" + help + Firmware files for Intel C3XXX devices + +config BR2_PACKAGE_LINUX_FIRMWARE_QAT_C62X + bool "Support for C62X" + help + Firmware files for Intel C62X devices + +endmenu + +menu "USB to Serial Firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI + bool "USB TI 3410/5052 Serial Firmware" + help + Firmware files for TI 3410/5052 + +endmenu + +menu "V4L Firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_CX231XX + bool "Conexant Cx23100/101/102 USB broadcast A/V decoder" + help + Firmware files for Conexant Cx23100/101/102 USB broadcast + A/V decoder needed by the Linux CX231XX driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_CX23885 + bool "Conexant Cx23885/7/8 PCIe broadcast A/V decoder" + help + Firmware files for Conexant Cx23885/7/8 PCIe broadcast + A/V decoder needed by the Linux CX23885 driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_INTEL_ATOMISP + bool "Intel AtomISP v2" + help + Firmware files for Intel AtomISP v2 (also know as IPU2) + needed by the Linux AtomISP v2 driver. + +endmenu + +menu "GPU Firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_ARM_MALI_CSF + bool "Arm Mali CSF firmware" + help + Firmware files for Arm Mali 10th generation GPU + needed by the linux panthor kernel driver. + +endmenu + +endif diff --git a/package/linux-firmware/linux-firmware.hash b/package/linux-firmware/linux-firmware.hash new file mode 100644 index 00000000..73df66e6 --- /dev/null +++ b/package/linux-firmware/linux-firmware.hash @@ -0,0 +1,45 @@ +# From https://mirrors.edge.kernel.org/pub/linux/kernel/firmware/sha256sums.asc +sha256 719662d2e8644c097f9a0bfb6e4c97280f8b2943e7bd9b47f77cf039412f5b14 linux-firmware-20240709.tar.xz + +# Hash for license files +sha256 8116433f4004fc0c24d72b3d9e497808b724aa0e5e1cd63fc1bf66b715b1e2e9 LICENCE.Abilis +sha256 572872598565dc3513470de971a32bf9db301f47afeef3636345eadae33b2eee LICENSE.amdgpu +sha256 2d6062d63b91eb750bf741498691604f75184b9fee97608ec537cd09bd6a42b4 LICENCE.Marvell +sha256 802b7014b26c606cf6248ae8b0ab1ce6d2d1b0db236d38dd269e676cd70710f2 LICENCE.atheros_firmware +sha256 3b5eb392b2d9d8c46d6aae26d06c187e5ea3029b12d13bc2b8deb8b3ce6bfa53 ath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt +sha256 631065703055d11b099477c508508f20a80b202aad548a7726564bfa59a96c91 ath10k/QCA6174/hw2.1/notice_ath10k_firmware-5.txt +sha256 8ce5c6ea0542bf4aac31fc3ae16a39792ad22d0eae4543063fac56fb3380f021 ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt +sha256 b16056fc91b82a0e3e8de8f86c2dac98201aa9dc3cbd33e8d38f1b087fcec30d LICENCE.broadcom_bcm43xx +sha256 a5777f9e80aca0603b0648454de996168b1c530322550ccda94d6d78bcf6c061 LICENCE.chelsio_firmware +sha256 ae0db6cc4db33941148df0f67de53e76a77b1b5a46b3165edb7040aa2750015f LICENCE.cypress +sha256 60fbc9cccb455e1a3306c97db942d6f24fa93664be61d54c497637e6d0e2ae83 LICENCE.fw_sst_0f28 +sha256 5181b0b51efc79d5acb2c9bb92042878fdbad97a92114d4ab5e32e2b5b52fce4 LICENCE.ibt_firmware +sha256 8c45a83562a69f7ac4207e4cb5c0063af2e545791b3947bc81dc82305481c15c LICENSE.ice_enhanced +sha256 0e0c11073ba3c832097da38e0905da36b8a3526f219407977b13b71c6675be7d LICENCE.it913x +sha256 646957007887aed50d56c1f4fd9c6ef760d5b96d0a03577bda3492206dba1d05 LICENSE.ivsc +sha256 16d5040c7cf851fc693b7542e20870935b99802533ea1bfd231c377a2305e5c5 LICENCE.iwlwifi_firmware +sha256 ebedc86d1767186a66dcb59ce8dcb97c5fd9ac10de2adaacad226714e4712f6d LICENCE.mali_csffw +sha256 2d6062d63b91eb750bf741498691604f75184b9fee97608ec537cd09bd6a42b4 LICENCE.Marvell +sha256 a90d3f66704d85889945fec5525ea77622549da83aced1aac99828383f8f1805 LICENCE.mediatek +sha256 0fc67bd715b3395f3f2af464781910e9e69c4ba23da304352229b42dc9e986c3 LICENCE.microchip +sha256 59ae206c89108905ebdc9ad4c9336526bd2c0d50fbf988c21e8c2a82719d42a4 LICENCE.moxa +sha256 0bd9f7cae3cf72b12a63359a725ccbb76ddbd6831372695a9162144329800dd0 LICENCE.qat_firmware +sha256 4071a11d878dbc0ac6d9e71203d03b151638f9d7a8bc47a54c3cb964100d5822 LICENCE.qla2xxx +sha256 d7bec70668ddd4aae8fb4aa32870e54b49fcdb0b9b007aa9f54b53a1ac7461bd LICENCE.ralink-firmware.txt +sha256 8568352b57f3574f9d5b2753cdb7c6e5eb2b79e82fbb9c9ba6566947467ef508 LICENCE.ralink_a_mediatek_company_firmware +sha256 a61351665b4f264f6c631364f85b907d8f8f41f8b369533ef4021765f9f3b62e LICENCE.rtlwifi_firmware.txt +sha256 190fdf103278cd69f489dc0d1d4da81d9a36af8b5baea336567fcb1df51a1973 LICENCE.ti-connectivity +sha256 8ea9f4aee5f53ad877041ff089e8c95d34d615ce19a3111e5e1ea70d990ed7ff LICENCE.xc4000 +sha256 30ec8a66503dc73f83937564ae70ca23aa03259e64727ff4195b5b6f695e782f LICENCE.xc5000 +sha256 f8822049f32fef2e90a197bd8cf259f476db75d549456bdca8567616a9c07ace LICENCE.xc5000c +sha256 a064cbf83e10d72579d236a1e36032681adb8e442943ff75b57020a82992a5ed LICENSE.QualcommAtheros_ar3k +sha256 337a55102138d7baa143ee4a4c6c91693e0113fece35d380b2a12109e8c23b3f LICENSE.QualcommAtheros_ath10k +sha256 8c4f2bd742da678336ca582ac46ee203d75d77ce928797caed032ee0e3a2c7dd LICENSE.amlogic +sha256 630fd46c95d3ac6544590c2265ba7348fbc930fb386261a1c04dcd9f403645b8 LICENSE.dib0700 +sha256 8542aeabf2761935122d693561e16766ce1bcc2b0d003204f9040b7d6d929f2e LICENSE.i915 +sha256 be904cd28cb292b80cdb6cf412ab0d9159d431671e987ad433c1f62e0988a9bc LICENSE.qcom +sha256 fc6223d4bfe9f2f9e2eddc44b9fe5721d0caf49f01cb08d602906add686d8c6f LICENSE.radeon +sha256 2bdd2e716f05d9737d3f9a20f9a3a3c0caee0e866100ddb0673f1178e42f92b9 LICENSE.sdma_firmware +sha256 416a9ad4b5232b6fbfc47cfadc14e338eb0c4351a59e6ee862c0f336f55c403e WHENCE +sha256 fa43e1b9a13b341a07adca9dbe73d0f9072d7966fdfe811c01f0dd2872d7309a qcom/NOTICE.txt +sha256 bef9c828e84f21e7835b4de7daf954a327e1ff777871b58e116039b684c0d604 LICENCE.e100 diff --git a/package/linux-firmware/linux-firmware.mk b/package/linux-firmware/linux-firmware.mk new file mode 100644 index 00000000..e40eab8d --- /dev/null +++ b/package/linux-firmware/linux-firmware.mk @@ -0,0 +1,968 @@ +################################################################################ +# +# linux-firmware +# +################################################################################ + +LINUX_FIRMWARE_VERSION = 20240709 +LINUX_FIRMWARE_SOURCE = linux-firmware-$(LINUX_FIRMWARE_VERSION).tar.xz +LINUX_FIRMWARE_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/firmware +LINUX_FIRMWARE_INSTALL_IMAGES = YES + +# Intel SST DSP +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_INTEL_SST_DSP),y) +LINUX_FIRMWARE_FILES += intel/fw_sst_0f28.bin-48kHz_i2s_master +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.fw_sst_0f28 +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_AMDGPU),y) +LINUX_FIRMWARE_DIRS += amdgpu +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.amdgpu +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_I915),y) +LINUX_FIRMWARE_DIRS += i915 +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.i915 +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RADEON),y) +LINUX_FIRMWARE_DIRS += radeon +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.radeon +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QCOM_VENUS),y) +LINUX_FIRMWARE_DIRS += qcom/venus-1.8 qcom/venus-4.2 +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.qcom qcom/NOTICE.txt +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QCOM_ADRENO),y) +LINUX_FIRMWARE_FILES += qcom/a* +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.qcom qcom/NOTICE.txt +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MFC_V8),y) +LINUX_FIRMWARE_FILES += \ + s5p-mfc.fw \ + s5p-mfc-v6.fw \ + s5p-mfc-v6-v2.fw \ + s5p-mfc-v7.fw \ + s5p-mfc-v8.fw +# No license file; the license is in the file WHENCE +# which is installed unconditionally +endif + +# Amlogic SoC Bluetooth +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_AMLOGIC),y) +LINUX_FIRMWARE_FILES += amlogic/*.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.amlogic +endif + +# Intel Wireless Bluetooth +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IBT),y) +LINUX_FIRMWARE_FILES += intel/ibt-* +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ibt_firmware +endif + +# Qualcomm Atheros Rome 6174A Bluetooth +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174A_BT),y) +LINUX_FIRMWARE_FILES += qca/rampatch_usb_00000302.bin qca/nvm_usb_00000302.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.qcom +endif + +# Qualcomm Atheros QCA9377 Bluetooth +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_9377_BT),y) +LINUX_FIRMWARE_FILES += qca/rampatch_00230302.bin qca/nvm_00230302.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.qcom +endif + +# Realtek 87xx Bluetooth +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX_BT),y) +LINUX_FIRMWARE_FILES += \ + rtl_bt/rtl8723a_fw.bin rtl_bt/rtl8723b_fw.bin \ + rtl_bt/rtl8723bs_config-OBDA8723.bin \ + rtl_bt/rtl8723bs_fw.bin rtl_bt/rtl8723d_config.bin \ + rtl_bt/rtl8723d_fw.bin rtl_bt/rtl8761a_fw.bin \ + rtl_bt/rtl8761b_fw.bin rtl_bt/rtl8761b_config.bin \ + rtl_bt/rtl8761bu_fw.bin rtl_bt/rtl8761bu_config.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt +endif + +# Realtek 88xx Bluetooth +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX_BT),y) +LINUX_FIRMWARE_FILES += \ + rtl_bt/rtl88*.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt +endif + +# rt2501/rt61 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61),y) +LINUX_FIRMWARE_FILES += rt2561.bin rt2561s.bin rt2661.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ralink-firmware.txt +endif + +# rt73 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73),y) +LINUX_FIRMWARE_FILES += rt73.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ralink-firmware.txt +endif + +# rt2xx +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX),y) +LINUX_FIRMWARE_FILES += rt2860.bin rt2870.bin rt3071.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ralink-firmware.txt +endif + +# rtl81xx +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX),y) +LINUX_FIRMWARE_FILES += \ + rtlwifi/rtl8192cfw.bin \ + rtlwifi/rtl8192cfwU.bin \ + rtlwifi/rtl8192cfwU_B.bin \ + rtlwifi/rtl8192cufw.bin \ + rtlwifi/rtl8192defw.bin \ + rtlwifi/rtl8192sefw.bin \ + rtlwifi/rtl8188efw.bin \ + rtlwifi/rtl8188eufw.bin \ + rtlwifi/rtl8188fufw.bin \ + rtlwifi/rtl8192cufw_A.bin \ + rtlwifi/rtl8192cufw_B.bin \ + rtlwifi/rtl8192cufw_TMSC.bin \ + rtlwifi/rtl8192eu_ap_wowlan.bin \ + rtlwifi/rtl8192eu_nic.bin \ + rtlwifi/rtl8192eu_wowlan.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt +endif + +# rtl87xx +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX),y) +LINUX_FIRMWARE_FILES += \ + rtlwifi/rtl8712u.bin \ + rtlwifi/rtl8723fw.bin \ + rtlwifi/rtl8723fw_B.bin \ + rtlwifi/rtl8723befw.bin \ + rtlwifi/rtl8723aufw_A.bin \ + rtlwifi/rtl8723aufw_B.bin \ + rtlwifi/rtl8723aufw_B_NoBT.bin \ + rtlwifi/rtl8723befw.bin \ + rtlwifi/rtl8723bs_bt.bin \ + rtlwifi/rtl8723bu_ap_wowlan.bin \ + rtlwifi/rtl8723bu_nic.bin \ + rtlwifi/rtl8723bu_wowlan.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt +endif + +# rtl88xx +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX),y) +LINUX_FIRMWARE_FILES += \ + rtlwifi/rtl8821aefw.bin \ + rtlwifi/rtl8821aefw_wowlan.bin \ + rtlwifi/rtl8821aefw_29.bin rtlwifi/rtl8822befw.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt +endif + +# rtw88 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_RTW88),y) +LINUX_FIRMWARE_FILES += \ + rtw88/rtw*.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt +endif + +# rtw89 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_RTW89),y) +LINUX_FIRMWARE_FILES += \ + rtw89/rtw*.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt +endif + +# ar3011 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_AR3011),y) +LINUX_FIRMWARE_FILES += ath3k-1.fw +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware +endif + +# ar3012 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_AR3012_USB),y) +LINUX_FIRMWARE_FILES += \ + ar3k/AthrBT_0x01020001.dfu \ + ar3k/ramps_0x01020001_26.dfu \ + ar3k/AthrBT_0x01020200.dfu \ + ar3k/ramps_0x01020200_26.dfu \ + ar3k/ramps_0x01020200_40.dfu \ + ar3k/AthrBT_0x31010000.dfu \ + ar3k/ramps_0x31010000_40.dfu \ + ar3k/AthrBT_0x11020000.dfu \ + ar3k/ramps_0x11020000_40.dfu \ + ar3k/ramps_0x01020201_26.dfu \ + ar3k/ramps_0x01020201_40.dfu \ + ar3k/AthrBT_0x41020000.dfu \ + ar3k/ramps_0x41020000_40.dfu \ + ar3k/AthrBT_0x11020100.dfu \ + ar3k/ramps_0x11020100_40.dfu \ + ar3k/AthrBT_0x31010100.dfu \ + ar3k/ramps_0x31010100_40.dfu \ + ar3k/AthrBT_0x01020201.dfu +LINUX_FIRMWARE_ALL_LICENSE_FILES += \ + LICENCE.atheros_firmware LICENSE.QualcommAtheros_ar3k +endif + +# ar6002 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6002),y) +LINUX_FIRMWARE_FILES += ath6k/AR6002 +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware +endif + +# ar6003 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6003),y) +LINUX_FIRMWARE_FILES += ath6k/AR6003 +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware +endif + +# ar6004 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6004),y) +LINUX_FIRMWARE_FILES += ath6k/AR6004 +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware +endif + +# ar7010 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010),y) +LINUX_FIRMWARE_FILES += ar7010.fw ar7010_1_1.fw htc_7010.fw ath9k_htc/htc_7010-1.4.0.fw +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware +endif + +# ar9170 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170),y) +LINUX_FIRMWARE_FILES += ar9170-1.fw ar9170-2.fw carl9170-1.fw +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware +endif + +# ar9271 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271),y) +LINUX_FIRMWARE_FILES += ar9271.fw htc_9271.fw ath9k_htc/htc_9271-1.4.0.fw +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware +endif + +# ath10k +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_10K_QCA9377),y) +LINUX_FIRMWARE_FILES += ath10k/QCA9377/hw1.0/board-2.bin \ + ath10k/QCA9377/hw1.0/board.bin \ + ath10k/QCA9377/hw1.0/firmware-5.bin \ + ath10k/QCA9377/hw1.0/firmware-6.bin \ + ath10k/QCA9377/hw1.0/firmware-sdio-5.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_10K_QCA998X),y) +LINUX_FIRMWARE_FILES += ath10k/QCA988X/hw2.0/board.bin \ + ath10k/QCA988X/hw2.0/firmware-4.bin \ + ath10k/QCA988X/hw2.0/firmware-5.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware +endif + +# sd8686 v8 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V8),y) +LINUX_FIRMWARE_FILES += libertas/sd8686_v8.bin libertas/sd8686_v8_helper.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# sd8686 v9 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V9),y) +LINUX_FIRMWARE_FILES += libertas/sd8686_v9.bin libertas/sd8686_v9_helper.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# sd8688 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8688),y) +LINUX_FIRMWARE_FILES += mrvl/sd8688.bin mrvl/sd8688_helper.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# usb8388 v9 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_USB8388_V9),y) +LINUX_FIRMWARE_FILES += libertas/usb8388_v9.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# usb8388 olpc +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_USB8388_OLPC),y) +LINUX_FIRMWARE_FILES += libertas/usb8388_olpc.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# lbtf usb +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_USB_THINFIRM),y) +LINUX_FIRMWARE_FILES += lbtf_usb.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# sd8787 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8787),y) +LINUX_FIRMWARE_FILES += mrvl/sd8787_uapsta.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# sd8797 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8797),y) +LINUX_FIRMWARE_FILES += mrvl/sd8797_uapsta.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# usb8797 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8797),y) +LINUX_FIRMWARE_FILES += mrvl/usb8797_uapsta.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# usb8801 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8801),y) +LINUX_FIRMWARE_FILES += mrvl/usb8801_uapsta.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# sd8887 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8887),y) +LINUX_FIRMWARE_FILES += mrvl/sd8887_uapsta.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# sd8897 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8897),y) +LINUX_FIRMWARE_FILES += mrvl/sd8897_uapsta.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# usb8897 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8897),y) +LINUX_FIRMWARE_FILES += mrvl/usb8897_uapsta.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# pcie8897 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_PCIE8897),y) +LINUX_FIRMWARE_FILES += mrvl/pcie8897_uapsta.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# pcieuart8997 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_PCIEUART8997),y) +LINUX_FIRMWARE_FILES += mrvl/pcieuart8997_combo_v4.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# pcieusb8997 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_PCIEUSB8997),y) +LINUX_FIRMWARE_FILES += mrvl/pcieusb8997_combo_v4.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# MT7601 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U),y) +LINUX_FIRMWARE_FILES += mediatek/mt7601u.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ralink_a_mediatek_company_firmware +endif + +# MT7610 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7610E),y) +LINUX_FIRMWARE_FILES += mediatek/mt7610e.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ralink_a_mediatek_company_firmware +endif + +# MT7650 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7650),y) +LINUX_FIRMWARE_FILES += mediatek/mt7650.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ralink_a_mediatek_company_firmware +endif + +# MT76x2e +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT76X2E),y) +LINUX_FIRMWARE_FILES += mediatek/mt7662.bin mediatek/mt7662_rom_patch.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ralink_a_mediatek_company_firmware +endif + +# MT7921 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7921),y) +LINUX_FIRMWARE_FILES += mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin \ + mediatek/WIFI_RAM_CODE_MT7961_1.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mediatek +endif + +# Mediatek MT7921 Bluetooth +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7921_BT),y) +LINUX_FIRMWARE_FILES += mediatek/BT_RAM_CODE_MT7961_1_2_hdr.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mediatek +endif + +# MT7922 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7922),y) +LINUX_FIRMWARE_FILES += mediatek/WIFI_MT7922_patch_mcu_1_1_hdr.bin \ + mediatek/WIFI_RAM_CODE_MT7922_1.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mediatek +endif + +# Mediatek MT7922 Bluetooth +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7922_BT),y) +LINUX_FIRMWARE_FILES += mediatek/BT_RAM_CODE_MT7922_1_1_hdr.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mediatek +endif + +# MT7925 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7925),y) +LINUX_FIRMWARE_FILES += \ + mediatek/mt7925/WIFI_MT7925_PATCH_MCU_1_1_hdr.bin \ + mediatek/mt7925/WIFI_RAM_CODE_MT7925_1_1.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mediatek +endif + +# Mediatek MT7925 Bluetooth +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7925_BT),y) +LINUX_FIRMWARE_FILES += mediatek/mt7925/BT_RAM_CODE_MT7925_1_1_hdr.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mediatek +endif + +# qca6174 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174),y) +LINUX_FIRMWARE_FILES += ath10k/QCA6174 +LINUX_FIRMWARE_ALL_LICENSE_FILES += \ + LICENSE.QualcommAtheros_ath10k \ + ath10k/QCA6174/hw2.1/notice_ath10k_firmware-5.txt \ + ath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt \ + ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt +endif + +# CC2560(A) +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_TI_CC2560),y) +LINUX_FIRMWARE_FILES += \ + ti-connectivity/TIInit_6.2.31.bts \ + ti-connectivity/TIInit_6.6.15.bts +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ti-connectivity +endif + +# wl127x +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_TI_WL127X),y) +LINUX_FIRMWARE_FILES += \ + ti-connectivity/wl1271-fw-2.bin \ + ti-connectivity/wl1271-fw-ap.bin \ + ti-connectivity/wl1271-fw.bin \ + ti-connectivity/wl127x-fw-3.bin \ + ti-connectivity/wl127x-fw-plt-3.bin \ + ti-connectivity/wl127x-nvs.bin \ + ti-connectivity/wl127x-fw-4-mr.bin \ + ti-connectivity/wl127x-fw-4-plt.bin \ + ti-connectivity/wl127x-fw-4-sr.bin \ + ti-connectivity/wl127x-fw-5-mr.bin \ + ti-connectivity/wl127x-fw-5-plt.bin \ + ti-connectivity/wl127x-fw-5-sr.bin \ + ti-connectivity/TIInit_7.2.31.bts +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ti-connectivity +endif + +# wl128x +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_TI_WL128X),y) +LINUX_FIRMWARE_FILES += \ + ti-connectivity/wl128x-fw-3.bin \ + ti-connectivity/wl128x-fw-ap.bin \ + ti-connectivity/wl128x-fw-plt-3.bin \ + ti-connectivity/wl128x-fw.bin \ + ti-connectivity/wl128x-nvs.bin \ + ti-connectivity/wl127x-nvs.bin \ + ti-connectivity/wl128x-fw-4-mr.bin \ + ti-connectivity/wl128x-fw-4-plt.bin \ + ti-connectivity/wl128x-fw-4-sr.bin \ + ti-connectivity/wl128x-fw-5-mr.bin \ + ti-connectivity/wl128x-fw-5-plt.bin \ + ti-connectivity/wl128x-fw-5-sr.bin \ + ti-connectivity/TIInit_7.2.31.bts +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ti-connectivity +endif + +# wl18xx +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_TI_WL18XX),y) +LINUX_FIRMWARE_FILES += \ + ti-connectivity/wl18xx-fw.bin \ + ti-connectivity/wl18xx-fw-2.bin \ + ti-connectivity/wl18xx-fw-3.bin \ + ti-connectivity/wl18xx-fw-4.bin \ + ti-connectivity/wl127x-nvs.bin \ + ti-connectivity/TIInit_7.2.31.bts +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ti-connectivity +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_WIL6210),y) +LINUX_FIRMWARE_FILES += wil6210.* +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.QualcommAtheros_ath10k +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_100),y) +LINUX_FIRMWARE_FILES += iwlwifi-100-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_105),y) +LINUX_FIRMWARE_FILES += iwlwifi-105-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_135),y) +LINUX_FIRMWARE_FILES += iwlwifi-135-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_1000),y) +LINUX_FIRMWARE_FILES += iwlwifi-1000-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_2000),y) +LINUX_FIRMWARE_FILES += iwlwifi-2000-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_2030),y) +LINUX_FIRMWARE_FILES += iwlwifi-2030-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_22000),y) +LINUX_FIRMWARE_FILES += iwlwifi-QuZ-*.ucode iwlwifi-Qu-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_22260),y) +LINUX_FIRMWARE_FILES += iwlwifi-cc-a0-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160),y) +LINUX_FIRMWARE_FILES += iwlwifi-3160-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168),y) +LINUX_FIRMWARE_FILES += iwlwifi-3168-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3945),y) +LINUX_FIRMWARE_FILES += iwlwifi-3945-2.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_4965),y) +LINUX_FIRMWARE_FILES += iwlwifi-4965-2.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +# iwlwifi 5000. Multiple files are available (iwlwifi-5000-1.ucode, +# iwlwifi-5000-2.ucode, iwlwifi-5000-5.ucode), corresponding to +# different versions of the firmware API. For now, we only install the +# most recent one. +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000),y) +LINUX_FIRMWARE_FILES += iwlwifi-5000-5.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A),y) +LINUX_FIRMWARE_FILES += iwlwifi-6000g2a-6.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B),y) +LINUX_FIRMWARE_FILES += iwlwifi-6000g2b-6.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260),y) +LINUX_FIRMWARE_FILES += iwlwifi-7260-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265),y) +LINUX_FIRMWARE_FILES += iwlwifi-7265-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D),y) +LINUX_FIRMWARE_FILES += iwlwifi-7265D-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C),y) +LINUX_FIRMWARE_FILES += iwlwifi-8000C-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265),y) +LINUX_FIRMWARE_FILES += iwlwifi-8265-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_9XXX),y) +LINUX_FIRMWARE_FILES += iwlwifi-9???-*.ucode +LINUX_FIRMWARE_FILES += iwlwifi-so-a0-jf-b0*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6E),y) +LINUX_FIRMWARE_FILES += iwlwifi-so-a0-gf-a0*.{ucode,pnvm} +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_QUZ),y) +LINUX_FIRMWARE_FILES += iwlwifi-QuZ-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_BROADCOM_TIGON3),y) +LINUX_FIRMWARE_FILES += tigon/* +# No license file; the license is in the file WHENCE +# which is installed unconditionally +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_BNX2),y) +LINUX_FIRMWARE_FILES += bnx2/* +# No license file; the license is in the file WHENCE +# which is installed unconditionally +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_BNX2X),y) +LINUX_FIRMWARE_FILES += bnx2x/* +# No license file; the license is in the file WHENCE +# which is installed unconditionally +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4),y) +LINUX_FIRMWARE_FILES += cxgb4/t4fw*.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.chelsio_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T5),y) +LINUX_FIRMWARE_FILES += cxgb4/t5fw*.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.chelsio_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_INTEL_E100),y) +LINUX_FIRMWARE_FILES += e100/*.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.e100 +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_INTEL_ICE),y) +LINUX_FIRMWARE_FILES += intel/ice/ddp/*.pkg +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.ice_enhanced +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MICROCHIP_VSC85XX_PHY),y) +LINUX_FIRMWARE_FILES += microchip/mscc_vsc85*.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.microchip +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QLOGIC_4X),y) +LINUX_FIRMWARE_FILES += \ + qed/qed_init_values_zipped-*.bin +# No license file; the license is in the file WHENCE +# which is installed unconditionally +endif + +# rtl815x +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_815X),y) +LINUX_FIRMWARE_FILES += \ + rtl_nic/rtl8153a-2.fw \ + rtl_nic/rtl8153a-3.fw \ + rtl_nic/rtl8153a-4.fw \ + rtl_nic/rtl8153b-2.fw \ + rtl_nic/rtl8153c-1.fw \ + rtl_nic/rtl8156a-2.fw \ + rtl_nic/rtl8156b-2.fw +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169),y) +LINUX_FIRMWARE_FILES += \ + rtl_nic/rtl8105e-1.fw \ + rtl_nic/rtl8106e-1.fw \ + rtl_nic/rtl8106e-2.fw \ + rtl_nic/rtl8107e-1.fw \ + rtl_nic/rtl8107e-2.fw \ + rtl_nic/rtl8125a-3.fw \ + rtl_nic/rtl8125b-2.fw \ + rtl_nic/rtl8168d-1.fw \ + rtl_nic/rtl8168d-2.fw \ + rtl_nic/rtl8168e-1.fw \ + rtl_nic/rtl8168e-2.fw \ + rtl_nic/rtl8168e-3.fw \ + rtl_nic/rtl8168f-1.fw \ + rtl_nic/rtl8168f-2.fw \ + rtl_nic/rtl8168fp-3.fw \ + rtl_nic/rtl8168g-2.fw \ + rtl_nic/rtl8168g-3.fw \ + rtl_nic/rtl8168h-1.fw \ + rtl_nic/rtl8168h-2.fw \ + rtl_nic/rtl8402-1.fw \ + rtl_nic/rtl8411-1.fw \ + rtl_nic/rtl8411-2.fw +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MARVELL_PRESTERA),y) +LINUX_FIRMWARE_FILES += \ + mrvl/prestera/mvsw_prestera_fw*.img +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_XCx000),y) +LINUX_FIRMWARE_FILES += \ + dvb-fe-xc4000-1.4.1.fw \ + dvb-fe-xc5000-1.6.114.fw \ + dvb-fe-xc5000c-4.1.30.7.fw +LINUX_FIRMWARE_ALL_LICENSE_FILES += \ + LICENCE.xc4000 \ + LICENCE.xc5000 \ + LICENCE.xc5000c +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_AS102),y) +LINUX_FIRMWARE_FILES += as102_data1_st.hex as102_data2_st.hex +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Abilis +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_DIB0700),y) +LINUX_FIRMWARE_FILES += dvb-usb-dib0700-1.20.fw +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.dib0700 +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ITETECH_IT9135),y) +LINUX_FIRMWARE_FILES += dvb-usb-it9135-01.fw dvb-usb-it9135-02.fw +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.it913x +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_H5_DRXK),y) +LINUX_FIRMWARE_FILES += dvb-usb-terratec-h5-drxk.fw +# No license file; the license is in the file WHENCE +# which is installed unconditionally +endif + +# brcm43xx +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX),y) +LINUX_FIRMWARE_FILES += \ + brcm/bcm4329-fullmac-4.bin \ + brcm/brcmfmac4329-sdio.bin \ + brcm/brcmfmac4330-sdio.bin \ + brcm/brcmfmac4334-sdio.bin \ + brcm/brcmfmac4335-sdio.bin \ + brcm/brcmfmac4350c2-pcie.bin \ + brcm/brcmfmac4350-pcie.bin \ + brcm/brcmfmac4358-pcie.bin \ + brcm/brcmfmac4371-pcie.bin \ + brcm/brcmfmac4373.bin \ + brcm/brcmfmac4330-sdio.Prowise-PT301.txt \ + brcm/brcmfmac4356-pcie.gpd-win-pocket.txt \ + brcm/brcmfmac4356-sdio.AP6356S.txt +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.broadcom_bcm43xx +endif + +# brcm43xxx +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX),y) +LINUX_FIRMWARE_FILES += \ + brcm/brcmfmac43143.bin \ + brcm/brcmfmac43143-sdio.bin \ + brcm/brcmfmac43236b.bin \ + brcm/brcmfmac43241b0-sdio.bin \ + brcm/brcmfmac43241b4-sdio.bin \ + brcm/brcmfmac43241b5-sdio.bin \ + brcm/brcmfmac43242a.bin \ + brcm/brcmfmac43430a0-sdio.bin \ + brcm/brcmfmac43569.bin \ + brcm/brcmfmac43602-pcie.ap.bin \ + brcm/brcmfmac43602-pcie.bin \ + brcm/brcmfmac43340-sdio.meegopad-t08.txt \ + brcm/brcmfmac43340-sdio.pov-tab-p1006w-data.txt \ + brcm/brcmfmac43340-sdio.predia-basic.txt \ + brcm/brcmfmac43362-sdio.cubietech,cubietruck.txt \ + brcm/brcmfmac43430a0-sdio.ilife-S806.txt \ + brcm/brcmfmac43430a0-sdio.jumper-ezpad-mini3.txt \ + brcm/brcmfmac43430-sdio.AP6212.txt \ + brcm/brcmfmac43430-sdio.Hampoo-D2D3_Vi8A1.txt \ + brcm/brcmfmac43430-sdio.MUR1DX.txt \ + brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.txt \ + brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt \ + brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.broadcom_bcm43xx +endif + +# brcm4366b1 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM4366B1),y) +LINUX_FIRMWARE_FILES += brcm/brcmfmac4366b-pcie.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.broadcom_bcm43xx +endif + +# brcm4366c0 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM4366C0),y) +LINUX_FIRMWARE_FILES += brcm/brcmfmac4366c-pcie.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.broadcom_bcm43xx +endif + +# cyfmac43xx +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_CYPRESS_CYW43XX),y) +LINUX_FIRMWARE_FILES += \ + cypress/cyfmac4339-sdio.bin \ + cypress/cyfmac4354-sdio.bin \ + cypress/cyfmac4354-sdio.clm_blob \ + cypress/cyfmac4356-pcie.bin \ + cypress/cyfmac4356-pcie.clm_blob \ + cypress/cyfmac4356-sdio.bin \ + cypress/cyfmac4356-sdio.clm_blob \ + cypress/cyfmac4373-sdio.bin \ + cypress/cyfmac4373-sdio.clm_blob +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.cypress +endif + +# cyfmac43xxx +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_CYPRESS_CYW43XXX),y) +LINUX_FIRMWARE_FILES += \ + cypress/cyfmac43012-sdio.bin \ + cypress/cyfmac43012-sdio.clm_blob \ + cypress/cyfmac43340-sdio.bin \ + cypress/cyfmac43362-sdio.bin \ + cypress/cyfmac43430-sdio.bin \ + cypress/cyfmac43430-sdio.clm_blob \ + cypress/cyfmac43455-sdio.bin \ + cypress/cyfmac43455-sdio.clm_blob \ + cypress/cyfmac43570-pcie.bin \ + cypress/cyfmac43570-pcie.clm_blob +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.cypress +endif + +# cyfmac54xxx +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_CYPRESS_CYW54XXX),y) +LINUX_FIRMWARE_FILES += \ + cypress/cyfmac54591-pcie.bin \ + cypress/cyfmac54591-pcie.clm_blob +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.cypress +endif + +# ql2xxx +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QLOGIC_2XXX),y) +LINUX_FIRMWARE_FILES += \ + ql2100_fw.bin ql2200_fw.bin ql2300_fw.bin ql2322_fw.bin \ + ql2400_fw.bin ql2500_fw.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.qla2xxx +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_REDPINE_RS9113),y) +LINUX_FIRMWARE_FILES += \ + rsi/rs9113_ap_bt_dual_mode.rps \ + rsi/rs9113_wlan_bt_dual_mode.rps \ + rsi/rs9113_wlan_qspi.rps +# No license file; the license is in the file WHENCE +# which is installed unconditionally +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_REDPINE_RS9116),y) +LINUX_FIRMWARE_FILES += \ + rsi/rs9116_wlan.rps \ + rsi/rs9116_wlan_bt_classic.rps +# No license file; the license is in the file WHENCE +# which is installed unconditionally +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QAT_DH895XCC),y) +LINUX_FIRMWARE_FILES += qat_895xcc.bin qat_895xcc_mmp.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.qat_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QAT_C3XXX),y) +LINUX_FIRMWARE_FILES += qat_c3xxx.bin qat_c3xxx_mmp.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.qat_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QAT_C62X),y) +LINUX_FIRMWARE_FILES += qat_c62x.bin qat_c62x_mmp.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.qat_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI),y) +LINUX_FIRMWARE_FILES += ti_3410.fw ti_5052.fw \ + mts_cdma.fw mts_gsm.fw mts_edge.fw mts_mt9234mu.fw mts_mt9234zba.fw \ + moxa/moxa-1110.fw moxa/moxa-1130.fw moxa/moxa-1131.fw \ + moxa/moxa-1150.fw moxa/moxa-1151.fw +# Some firmware's license is in the file WHENCE +# which is installed unconditionally +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.moxa +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_CX231XX),y) +LINUX_FIRMWARE_FILES += v4l-cx231xx-avcore-01.fw +# No license file; the license is in the file WHENCE +# which is installed unconditionally +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_CX23885),y) +LINUX_FIRMWARE_FILES += v4l-cx23885-avcore-01.fw +# No license file; the license is in the file WHENCE +# which is installed unconditionally +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_INTEL_ATOMISP),y) +LINUX_FIRMWARE_FILES += intel/ipu/shisp_2400b0_v21.bin +LINUX_FIRMWARE_FILES += intel/ipu/shisp_2401a0_v21.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.ivsc +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ARM_MALI_CSF),y) +LINUX_FIRMWARE_FILES += arm/mali/arch*/mali_csffw.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mali_csffw +endif + +ifneq ($(LINUX_FIRMWARE_FILES)$(LINUX_FIRMWARE_DIRS),) + +define LINUX_FIRMWARE_BUILD_CMDS + cd $(@D) && \ + $(TAR) cf br-firmware.tar $(sort $(LINUX_FIRMWARE_FILES) $(LINUX_FIRMWARE_DIRS)) +endef + +# Most firmware files are under a proprietary license, so no need to +# repeat it for every selections above. Those firmwares that have more +# lax licensing terms may still add them on a per-case basis. +LINUX_FIRMWARE_LICENSE += Proprietary + +# This file contains some licensing information about all the firmware +# files found in the linux-firmware package, so we always add it, even +# for firmwares that have their own licensing terms. +LINUX_FIRMWARE_ALL_LICENSE_FILES += WHENCE + +# Some license files may be listed more than once, so we have to remove +# duplicates +LINUX_FIRMWARE_LICENSE_FILES = $(sort $(LINUX_FIRMWARE_ALL_LICENSE_FILES)) + +# Some firmware are distributed as a symlink, for drivers to load them using a +# defined name other than the real one. Since 9cfefbd7fbda ("Remove duplicate +# symlinks") those symlink aren't distributed in linux-firmware but are created +# automatically by its copy-firmware.sh script during the installation, which +# parses the WHENCE file where symlinks are described. We follow the same logic +# here, adding symlink only for firmwares installed in the target directory. +# +# For testing the presence of firmwares in the target directory we first make +# sure we canonicalize the pointed-to file, to cover the symlinks of the form +# a/foo -> ../b/foo where a/ (the directory where to put the symlink) does +# not yet exist. +define LINUX_FIRMWARE_INSTALL_FW + mkdir -p $(1) + $(TAR) xf $(@D)/br-firmware.tar -C $(1) + cd $(1) ; \ + sed -r -e '/^Link: (.+) -> (.+)$$/!d; s//\1 \2/' $(@D)/WHENCE | \ + while read f d; do \ + if test -f $$(readlink -m $$(dirname "$$f")/$$d); then \ + mkdir -p $$(dirname "$$f") || exit 1; \ + ln -sf $$d "$$f" || exit 1; \ + fi ; \ + done +endef + +endif # LINUX_FIRMWARE_FILES || LINUX_FIRMWARE_DIRS + +define LINUX_FIRMWARE_INSTALL_TARGET_CMDS + $(call LINUX_FIRMWARE_INSTALL_FW, $(TARGET_DIR)/lib/firmware) +endef + +define LINUX_FIRMWARE_INSTALL_IMAGES_CMDS + $(call LINUX_FIRMWARE_INSTALL_FW, $(BINARIES_DIR)) +endef + +$(eval $(generic-package)) diff --git a/package/linux-fusion/0001-fix-for-linux-4-and-above.patch b/package/linux-fusion/0001-fix-for-linux-4-and-above.patch new file mode 100644 index 00000000..689d9bf1 --- /dev/null +++ b/package/linux-fusion/0001-fix-for-linux-4-and-above.patch @@ -0,0 +1,25 @@ +Fix build for linux >= 4.x + +Instead of relying on testing for '3' as the linux kernel major verison, +check that it is 2.x to include the proper Makefile, otherwise forcibly +include the .26 Makefile, that is good for 3.x and 4.x too. + +Signed-off-by: "Yann E. MORIN" + +diff -durN linux-fusion-9.0.2.orig/Makefile linux-fusion-9.0.2/Makefile +--- linux-fusion-9.0.2.orig/Makefile 2013-07-15 11:58:03.000000000 +0200 ++++ linux-fusion-9.0.2/Makefile 2015-06-06 19:03:04.059842652 +0200 +@@ -62,10 +62,10 @@ + CPPFLAGS += -DHAVE_LINUX_CONFIG_H + endif + +-ifeq ($(K_VERSION),3) +- KMAKEFILE = Makefile-2.6 +-else ++ifeq ($(K_VERSION),2) + KMAKEFILE = Makefile-2.$(K_PATCHLEVEL) ++else ++ KMAKEFILE = Makefile-2.6 + endif + + check-version = $(shell expr \( $(K_VERSION) \* 65536 + $(K_PATCHLEVEL) \* 256 + $(K_SUBLEVEL) \) \>= \( $(1) \* 65536 + $(2) \* 256 + $(3) \)) diff --git a/package/linux-fusion/0002-Fix-mismatched-conversion-spec-and-value-in-printk.patch b/package/linux-fusion/0002-Fix-mismatched-conversion-spec-and-value-in-printk.patch new file mode 100644 index 00000000..a3f8bb78 --- /dev/null +++ b/package/linux-fusion/0002-Fix-mismatched-conversion-spec-and-value-in-printk.patch @@ -0,0 +1,29 @@ +From debb9cafe9b7cc2b286399ecc8e3210480061c70 Mon Sep 17 00:00:00 2001 +From: Marc Gonzalez +Date: Mon, 11 Jan 2016 15:42:16 +0100 +Subject: [PATCH] Fix mismatched conversion spec and value in printk + +linux/drivers/char/fusion/fusiondev.c:775:38: warning: +format '%ld' expects argument of type 'long int', but argument 7 has type 'int' + +Subtracting two pointers yields a ptrdiff_t value, and ptrdiff_t is not +necessarily an alias for long int. Cast the value to long int. + +Signed-off-by: Marc Gonzalez +--- + linux/drivers/char/fusion/fusiondev.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/linux/drivers/char/fusion/fusiondev.c b/linux/drivers/char/fusion/fusiondev.c +index 7003407f7e1e..dfb5f8ecb81a 100644 +--- a/linux/drivers/char/fusion/fusiondev.c ++++ b/linux/drivers/char/fusion/fusiondev.c +@@ -775,7 +775,7 @@ call_ioctl(FusionDev * dev, Fusionee * fusionee, + printk( KERN_ERR "fusion: FUSION_CALL_EXECUTE3 with errorneous call (failed on previous ioctl call), " + "call id %d, flags 0x%08x, arg %d, length %u, serial %u, %ld\n", + execute3.call_id, execute3.flags, execute3.call_arg, execute3.length, execute3.ret_length, +- (execute3_bin - (FusionCallExecute3 *) arg) ); ++ (long int)(execute3_bin - (FusionCallExecute3 *) arg) ); + return -EIO; + } + diff --git a/package/linux-fusion/0003-Fix-fusion-Unknown-symbol-tasklist_lock-err-0.patch b/package/linux-fusion/0003-Fix-fusion-Unknown-symbol-tasklist_lock-err-0.patch new file mode 100644 index 00000000..b14ec9d9 --- /dev/null +++ b/package/linux-fusion/0003-Fix-fusion-Unknown-symbol-tasklist_lock-err-0.patch @@ -0,0 +1,38 @@ +From 9fcd5003c0363af140a06aba94e62c9e1ea0381e Mon Sep 17 00:00:00 2001 +From: Marc Gonzalez +Date: Mon, 11 Jan 2016 16:45:30 +0100 +Subject: [PATCH] Fix fusion: Unknown symbol tasklist_lock (err 0) + +Commit 28f6569ab7d0 renamed TREE_PREEMPT_RCU to PREEMPT_RCU in 3.19 +As a result, the code incorrectly falls back to using tasklist_lock +(which was made private in 2.6.18) + +Always use rcu_read_lock on modern kernels. + +Signed-off-by: Marc Gonzalez +--- + linux/drivers/char/fusion/fusionee.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/linux/drivers/char/fusion/fusionee.c b/linux/drivers/char/fusion/fusionee.c +index ef067f5bc831..70cd0a665f98 100644 +--- a/linux/drivers/char/fusion/fusionee.c ++++ b/linux/drivers/char/fusion/fusionee.c +@@ -925,7 +925,7 @@ fusionee_kill(FusionDev * dev, + if (f != fusionee && (!target || target == f->id)) { + struct task_struct *p; + +-#if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU) || defined(CONFIG_TINY_RCU) || defined(rcu_read_lock) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) + rcu_read_lock(); + #else + read_lock(&tasklist_lock); +@@ -946,7 +946,7 @@ fusionee_kill(FusionDev * dev, + } + } + +-#if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU) || defined(CONFIG_TINY_RCU) || defined(rcu_read_unlock) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) + rcu_read_unlock(); + #else + read_unlock(&tasklist_lock); diff --git a/package/linux-fusion/0004-Port-one-one_udp.c-to-Linux-4.1.patch b/package/linux-fusion/0004-Port-one-one_udp.c-to-Linux-4.1.patch new file mode 100644 index 00000000..3ee4dac4 --- /dev/null +++ b/package/linux-fusion/0004-Port-one-one_udp.c-to-Linux-4.1.patch @@ -0,0 +1,118 @@ +From be288b60278c78eccfd347aacf4d3dd8771215a9 Mon Sep 17 00:00:00 2001 +From: Marc Gonzalez +Date: Tue, 12 Jan 2016 14:01:42 +0100 +Subject: [PATCH] Port one/one_udp.c to Linux 4.1 + +Kernel commit c0371da6047a replaced msg_iov and msg_iovlen with msg_iter +in struct msghdr since 3.19 + +one/one_udp.c: In function 'ksocket_send_iov': +one/one_udp.c:186:9: error: 'struct msghdr' has no member named 'msg_iov' +one/one_udp.c:187:9: error: 'struct msghdr' has no member named 'msg_iovlen' + +one/one_udp.c: In function 'ksocket_receive': +one/one_udp.c:221:9: error: 'struct msghdr' has no member named 'msg_iov' +one/one_udp.c:222:9: error: 'struct msghdr' has no member named 'msg_iovlen' + +The iov_iter interface +https://lwn.net/Articles/625077/ + +Kernel commit d8725c86aeba dropped the len parameter in sock_sendmsg +since 4.1 + +one/one_udp.c: In function 'ksocket_send_iov': +one/one_udp.c:192:13: error: too many arguments to function 'sock_sendmsg' + +Signed-off-by: Marc Gonzalez + +Kernel commit 2da62906b1e29 dropped the size parameter in sock_recvmsg +since 4.7 + +In function 'ksocket_receive' +one/one_udp.c:235:13: error: too many arguments to function 'sock_recvmsg' + +Signed-off-by: Matthew Shyu +--- + one/one_udp.c | 34 +++++++++++++++++++--------------- + 1 file changed, 19 insertions(+), 15 deletions(-) + +diff --git a/one/one_udp.c b/one/one_udp.c +index 26b9e6a..9b59529 100644 +--- a/one/one_udp.c ++++ b/one/one_udp.c +@@ -161,7 +161,7 @@ ksocket_send_iov( struct socket *sock, + const struct iovec *iov, + size_t iov_count ) + { +- struct msghdr msg; ++ struct msghdr msg = { addr, sizeof *addr }; + mm_segment_t oldfs; + int size = 0; + size_t len = 0; +@@ -178,18 +178,20 @@ ksocket_send_iov( struct socket *sock, + for (i=0; i= 4.9" + depends on BR2_USE_MMU + depends on !BR2_ENABLE_LOCALE || !BR2_USE_WCHAR \ + || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/linux-pam/linux-pam.hash b/package/linux-pam/linux-pam.hash new file mode 100644 index 00000000..353613e6 --- /dev/null +++ b/package/linux-pam/linux-pam.hash @@ -0,0 +1,6 @@ +# Locally computed hashes after checking signature at +# https://github.com/linux-pam/linux-pam/releases/download/v1.6.1/Linux-PAM-1.6.1.tar.xz.asc +# signed with the key 8C6BFD92EE0F42EDF91A6A736D1A7F052E5924BB +sha256 f8923c740159052d719dbfc2a2f81942d68dd34fcaf61c706a02c9b80feeef8e Linux-PAM-1.6.1.tar.xz +# Locally computed +sha256 133d98e7a2ab3ffd330b4debb0bfc10fea21e4b2b5a5b09de2e924293be5ff08 Copyright diff --git a/package/linux-pam/linux-pam.mk b/package/linux-pam/linux-pam.mk new file mode 100644 index 00000000..1433eb00 --- /dev/null +++ b/package/linux-pam/linux-pam.mk @@ -0,0 +1,74 @@ +################################################################################ +# +# linux-pam +# +################################################################################ + +LINUX_PAM_VERSION = 1.6.1 +LINUX_PAM_SOURCE = Linux-PAM-$(LINUX_PAM_VERSION).tar.xz +LINUX_PAM_SITE = https://github.com/linux-pam/linux-pam/releases/download/v$(LINUX_PAM_VERSION) +LINUX_PAM_INSTALL_STAGING = YES +LINUX_PAM_CONF_OPTS = \ + --disable-prelude \ + --disable-isadir \ + --disable-nis \ + --disable-db \ + --disable-regenerate-docu \ + --enable-securedir=/lib/security \ + --libdir=/lib +LINUX_PAM_DEPENDENCIES = flex host-flex host-pkgconf \ + $(if $(BR2_PACKAGE_LIBXCRYPT),libxcrypt) \ + $(TARGET_NLS_DEPENDENCIES) +LINUX_PAM_LICENSE = BSD-3-Clause +LINUX_PAM_LICENSE_FILES = Copyright +LINUX_PAM_LIBS = $(TARGET_NLS_LIBS) +LINUX_PAM_MAKE_OPTS += LIBS="$(LINUX_PAM_LIBS)" +LINUX_PAM_CPE_ID_VENDOR = linux-pam + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +LINUX_PAM_LIBS += -latomic +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +LINUX_PAM_CONF_OPTS += --enable-selinux +LINUX_PAM_DEPENDENCIES += libselinux +define LINUX_PAM_SELINUX_PAMFILE_TWEAK + $(SED) 's/^# \(.*pam_selinux.so.*\)$$/\1/' \ + $(TARGET_DIR)/etc/pam.d/login +endef +else +LINUX_PAM_CONF_OPTS += --disable-selinux +endif + +ifeq ($(BR2_PACKAGE_AUDIT),y) +LINUX_PAM_CONF_OPTS += --enable-audit +LINUX_PAM_DEPENDENCIES += audit +else +LINUX_PAM_CONF_OPTS += --disable-audit +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LINUX_PAM_CONF_OPTS += --enable-openssl +LINUX_PAM_DEPENDENCIES += openssl +else +LINUX_PAM_CONF_OPTS += --disable-openssl +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM_LASTLOG),y) +LINUX_PAM_CONF_OPTS += --enable-lastlog +else +LINUX_PAM_CONF_OPTS += --disable-lastlog +endif + +# Install default pam config (deny everything except login) +define LINUX_PAM_INSTALL_CONFIG + $(INSTALL) -m 0644 -D package/linux-pam/login.pam \ + $(TARGET_DIR)/etc/pam.d/login + $(INSTALL) -m 0644 -D package/linux-pam/other.pam \ + $(TARGET_DIR)/etc/pam.d/other + $(LINUX_PAM_SELINUX_PAMFILE_TWEAK) +endef + +LINUX_PAM_POST_INSTALL_TARGET_HOOKS += LINUX_PAM_INSTALL_CONFIG + +$(eval $(autotools-package)) diff --git a/package/linux-pam/login.pam b/package/linux-pam/login.pam new file mode 100644 index 00000000..5df7db62 --- /dev/null +++ b/package/linux-pam/login.pam @@ -0,0 +1,12 @@ +auth required pam_unix.so nullok + +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/package/linux-pam/other.pam b/package/linux-pam/other.pam new file mode 100644 index 00000000..a198aa2a --- /dev/null +++ b/package/linux-pam/other.pam @@ -0,0 +1,7 @@ +auth required pam_deny.so + +account required pam_deny.so + +password required pam_deny.so + +session required pam_deny.so diff --git a/package/linux-serial-test/Config.in b/package/linux-serial-test/Config.in new file mode 100644 index 00000000..9ba4badc --- /dev/null +++ b/package/linux-serial-test/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LINUX_SERIAL_TEST + bool "linux-serial-test" + help + Serial port test utility. + + https://github.com/cbrake/linux-serial-test diff --git a/package/linux-serial-test/linux-serial-test.hash b/package/linux-serial-test/linux-serial-test.hash new file mode 100644 index 00000000..38b98a61 --- /dev/null +++ b/package/linux-serial-test/linux-serial-test.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 bd612ad9c10cb8090765487d5e2969be09dd0d024e7215dc764e770fbb5cc9e0 linux-serial-test-bf865c37ccf9cbb1826ada61037c036dc1990b7b.tar.gz +sha256 a2a6760c2c6fa779a635e4a7ad00f668862ebcadb2a8a57d16662543e103e08c LICENSES/MIT diff --git a/package/linux-serial-test/linux-serial-test.mk b/package/linux-serial-test/linux-serial-test.mk new file mode 100644 index 00000000..ccb39280 --- /dev/null +++ b/package/linux-serial-test/linux-serial-test.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# linux-serial-test +# +################################################################################ + +LINUX_SERIAL_TEST_VERSION = bf865c37ccf9cbb1826ada61037c036dc1990b7b +LINUX_SERIAL_TEST_SITE = $(call github,cbrake,linux-serial-test,$(LINUX_SERIAL_TEST_VERSION)) +LINUX_SERIAL_TEST_LICENSE = MIT +LINUX_SERIAL_TEST_LICENSE_FILES = LICENSES/MIT + +$(eval $(cmake-package)) diff --git a/package/linux-syscall-support/Config.in b/package/linux-syscall-support/Config.in new file mode 100644 index 00000000..323dfbd3 --- /dev/null +++ b/package/linux-syscall-support/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LINUX_SYSCALL_SUPPORT + bool "linux-syscall-support (lss)" + help + This project provides a header file that can be included into + your application whenever you need to make direct system + calls. + + https://chromium.googlesource.com/linux-syscall-support/ diff --git a/package/linux-syscall-support/linux-syscall-support.hash b/package/linux-syscall-support/linux-syscall-support.hash new file mode 100644 index 00000000..398bc75a --- /dev/null +++ b/package/linux-syscall-support/linux-syscall-support.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 32691765be505df5ca26bc3d0cc0a90da286b804e1ecb945b6bea5ead652b04b linux-syscall-support-e1e7b0ad8ee99a875b272c8e33e308472e897660-git4.tar.gz +sha256 c180f12840c00224cceed7139192018d2c7e6061db4ce4310b8626f7ad10bf26 LICENSE diff --git a/package/linux-syscall-support/linux-syscall-support.mk b/package/linux-syscall-support/linux-syscall-support.mk new file mode 100644 index 00000000..a4cadf03 --- /dev/null +++ b/package/linux-syscall-support/linux-syscall-support.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# linux-syscall-support +# +################################################################################ + +# Use the same version that the one used by Google-breakpad (see DEPS file) +LINUX_SYSCALL_SUPPORT_VERSION = e1e7b0ad8ee99a875b272c8e33e308472e897660 +LINUX_SYSCALL_SUPPORT_SITE = https://chromium.googlesource.com/linux-syscall-support +LINUX_SYSCALL_SUPPORT_SITE_METHOD = git +LINUX_SYSCALL_SUPPORT_LICENSE = BSD-3-Clause +LINUX_SYSCALL_SUPPORT_LICENSE_FILES = LICENSE + +# Provide only one header file. +LINUX_SYSCALL_SUPPORT_INSTALL_TARGET = NO +LINUX_SYSCALL_SUPPORT_INSTALL_STAGING = YES + +define LINUX_SYSCALL_SUPPORT_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0644 $(@D)/linux_syscall_support.h \ + $(STAGING_DIR)/usr/include/linux_syscall_support.h +endef + +define HOST_LINUX_SYSCALL_SUPPORT_INSTALL_CMDS + $(INSTALL) -D -m 0644 $(@D)/linux_syscall_support.h \ + $(HOST_DIR)/include/linux_syscall_support.h +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/linux-tools/Config.in b/package/linux-tools/Config.in new file mode 100644 index 00000000..5a38f6da --- /dev/null +++ b/package/linux-tools/Config.in @@ -0,0 +1,259 @@ +menu "Linux Kernel Tools" + +# No prompt, this is sourced by linux/Config.in as this +# is no real package and really belongs to the kernel. +config BR2_PACKAGE_LINUX_TOOLS + bool + +config BR2_PACKAGE_LINUX_TOOLS_CPUPOWER + bool "cpupower" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LINUX_TOOLS + select BR2_PACKAGE_PCIUTILS + help + cpupower is a collection of tools to examine and tune power + saving related features of your processor. + +comment "cpupower needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_LINUX_TOOLS_GPIO + bool "gpio" + select BR2_PACKAGE_LINUX_TOOLS + help + gpio is a collection of tools to get information about, + control and monitor gpios present on system. + + These tools use new gpio ABI which will deprecate sysfs gpio + interface in the future. + + These tools are available only from kernel version 4.8. + +config BR2_PACKAGE_LINUX_TOOLS_IIO + bool "iio" + select BR2_PACKAGE_LINUX_TOOLS + help + iio is a collection of tools to get information about, + control and monitor iio devices present on system. + + These tools are available only from kernel version 4.7. + +config BR2_PACKAGE_LINUX_TOOLS_MM + bool "mm" + select BR2_PACKAGE_LINUX_TOOLS + help + mm is a toolset for testing/monitoring/tracing vm/pages/slabs + objects. + + - page_owner_sort: userspace helper to sort the output of + /sys/kernel/debug/page_owner, which helps to know who + allocates the page from kernel context + + - slabinfo: the tool which gets reports about slabs, for + example show empty slabs, modify of slab debug options at + runtime, display all information about a slabcache + + - page-types: a handy tool for querying page flags + + These tools are available only from kernel version 3.4. + +config BR2_PACKAGE_LINUX_TOOLS_PCI + bool "pci" + select BR2_PACKAGE_LINUX_TOOLS + help + pcitest is a tool for testing capabilities related to a + PCI Endpoint (only works with specific Endpoints). + + These tools are available only from kernel version 4.20. + +comment "perf needs a toolchain w/ dynamic library, threads" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_LINUX_TOOLS_PERF + bool "perf" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LINUX_TOOLS + help + perf (sometimes "Perf Events" or perf tools, originally + "Performance Counters for Linux") - is a performance + analyzing tool in Linux, available from kernel version + 2.6.31. User-space controlling utility, called 'perf' has + git-like interface with subcommands. It is capable of + statistical profiling of entire system (both kernel and user + code), single CPU or severals threads. + + This will build and install the userspace 'perf' + command. + + Your kernel must have CONFIG_PERF_EVENTS enabled to use perf + profiling. Buildroot automatically enables this in the kernel + configuration. + + https://perf.wiki.kernel.org/ + +if BR2_PACKAGE_LINUX_TOOLS_PERF + +config BR2_PACKAGE_LINUX_TOOLS_PERF_SCRIPTS + bool "enable installation of perf scripts" + help + Enable the installation of the perf scripts under + /usr/libexec/perf-core/ which is necessary for running "perf + tests" + +config BR2_PACKAGE_LINUX_TOOLS_PERF_TUI + bool "enable perf TUI" + depends on BR2_USE_MMU # slang + select BR2_PACKAGE_SLANG + help + Enable the TUI interface for perf which requires a TTY and + enables zooming into DSOs and threads as well as other + features. + +config BR2_PACKAGE_LINUX_TOOLS_PERF_NEEDS_HOST_PYTHON3 + bool "perf need python3 to build" + select BR2_PACKAGE_HOST_PYTHON3 + help + Starting with linux 6.0, parts of the perf source code + is generated by running a python3 script. + +endif + +config BR2_PACKAGE_LINUX_TOOLS_RTLA + bool "rtla" + depends on BR2_TOOLCHAIN_HAS_THREADS # libtracefs + depends on !BR2_STATIC_LIBS # libtracefs + select BR2_PACKAGE_LINUX_TOOLS + select BR2_PACKAGE_LIBTRACEFS + help + These tracers allow performing latency analysis, for which the + rtla tool provides wrapper commands to visualize and extract + latency traces and reports. + + rtla includes three tracers, which have been introduced in + different kernel versions: + - Linux 5.19 introduced the osnoise and timerlat tracers, + - Linux 6.3 introduced the hwnoise tracer + + osnoise and timerlat are always installed, while hwnoise is + installed if your kernel is recent enough. + + Note: rtla in kernels before 5.19 had additional dependencies, + not available in Buildroot, so only rtla in kernels 5.19 + onwards is actually supported in Buildroot. + +comment "rtla needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +config BR2_PACKAGE_LINUX_TOOLS_SELFTESTS + bool"selftests" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash + depends on BR2_USE_MMU # bash + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 # util-linux schedutils + select BR2_PACKAGE_LINUX_TOOLS + select BR2_PACKAGE_BASH # runtime + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_NCURSES_TARGET_PROGS # runtime (tput) + select BR2_PACKAGE_KMOD + select BR2_PACKAGE_KMOD_TOOLS # runtime (modprobe -n) + select BR2_PACKAGE_POPT + select BR2_PACKAGE_LIBCAP_NG + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_SCHEDUTILS # runtime (taskset) + select BR2_PACKAGE_OPENSSL if BR2_x86_64 + help + Build and install (to /usr/lib/kselftests) kernel selftests. + + Use of this option implies you know the process of using and + compiling the kernel selftests. The Makefile to build and + install these is very noisy and may appear to cause your + build to fail for strange reasons. + + This is very much a use at your risk option and may not work + for every setup or every architecture. + +comment "selftests needs BR2_PACKAGE_BUSYBOX_SHOW_OTHERS and a toolchain w/ dynamic library and headers >= 3.14" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_BUSYBOX_SHOW_OTHERS || \ + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 + +config BR2_PACKAGE_LINUX_TOOLS_USBTOOLS + bool "USB test programs" + select BR2_PACKAGE_LINUX_TOOLS + help + Build and install the USB test tools. + + These tools exist since Linux 2.6.35, but Buildroot can build + them only with kernel versions 5.9 and later. + +if BR2_PACKAGE_LINUX_TOOLS_USBTOOLS + +config BR2_PACKAGE_LINUX_TOOLS_USBTOOLS_TESTUSB + bool "testusb" + help + testusb issues ioctls to perform the tests implemented by the + kernel driver. It can generate a variety of transfer + patterns. + + See http://www.linux-usb.org/usbtest/ + +config BR2_PACKAGE_LINUX_TOOLS_USBTOOLS_FFSTEST + bool "ffs-test" + help + User mode filesystem api for usb composite function +endif + +config BR2_PACKAGE_LINUX_TOOLS_TMON + bool "tmon" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LINUX_TOOLS + select BR2_PACKAGE_NCURSES + help + tmon is a terminal-based tool (using curses) that allows the + user to access thermal information about the system. + +comment "tmon needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_LINUX_TOOLS_HV + bool "hv" + depends on BR2_i386 || BR2_x86_64 + select BR2_PACKAGE_LINUX_TOOLS + select BR2_PACKAGE_LINUX_TOOLS_HV_KVP_DAEMON if !BR2_PACKAGE_LINUX_TOOLS_HV_HAS_ONE + help + Microsoft HyperV integration services + + Relevant kernel configuration options: CONFIG_HYPERV, + CONFIG_HYPERV_UTILS. + +if BR2_PACKAGE_LINUX_TOOLS_HV + +config BR2_PACKAGE_LINUX_TOOLS_HV_HAS_ONE + bool + +config BR2_PACKAGE_LINUX_TOOLS_HV_KVP_DAEMON + bool "hypervkvpd (hv_kvp_daemon)" + help + HyperV uses hypervkvpd (Key/Value Pair daemon) to retrieve + status information from your virtualized guest OS + +config BR2_PACKAGE_LINUX_TOOLS_HV_FCOPY_DAEMON + bool "hypervfcopyd (hv_fcopy_daemon)" + select BR2_PACKAGE_LINUX_TOOLS_HV_HAS_ONE + help + HyperV uses hypervfcopyd (File Copy daemon) to easily transfer + files to and from your virtualized guest OS + +config BR2_PACKAGE_LINUX_TOOLS_HV_VSS_DAEMON + bool "hypervvssd (hv_vss_daemon)" + select BR2_PACKAGE_LINUX_TOOLS_HV_HAS_ONE + help + HyperV uses hypervvssd (Volume Snapshot Service daemon) to + freeze your filesystems during snapshots and backups + +endif # BR2_PACKAGE_LINUX_TOOLS_HV + +endmenu diff --git a/package/linux-tools/S10hyperv b/package/linux-tools/S10hyperv new file mode 100644 index 00000000..be9ed2c5 --- /dev/null +++ b/package/linux-tools/S10hyperv @@ -0,0 +1,70 @@ +#!/bin/sh + +PROGS="@PROGS@" +PIDDIR="/var/run" +DAEMON="hyperv" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +# only continue if we are in a HyperV platform +[ -e "/sys/bus/vmbus" ] || exit 0 + +start_one() { + printf 'Starting %s: ' "$1" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -b -m -S -q -p "$PIDDIR/$1.pid" -x "/usr/sbin/$1" -- -n + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return $status +} + +start() { + # shellcheck disable=SC2086 # we need the word splitting + for prog in ${PROGS}; do + start_one "${prog}" || ret=$? + done + return "$ret" +} + +stop_one() { + printf 'Stopping %s: ' "$1" + start-stop-daemon -K -q -p "$PIDDIR/$1.pid" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDDIR/$1.pid" + echo "OK" + else + echo "FAIL" + fi + return $status +} + +stop() { + # shellcheck disable=SC2086 # we need the word splitting + for prog in ${PROGS}; do + stop_one "${prog}" || ret=$? + done + return "$ret" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/linux-tools/hypervfcopyd.service b/package/linux-tools/hypervfcopyd.service new file mode 100644 index 00000000..c43fc1bc --- /dev/null +++ b/package/linux-tools/hypervfcopyd.service @@ -0,0 +1,11 @@ +[Unit] +Description=HyperV FCopy daemon +After=syslog.target +ConditionVirtualization=microsoft + +[Service] +Type=simple +ExecStart=/usr/sbin/hypervfcopyd -n + +[Install] +WantedBy=multi-user.target diff --git a/package/linux-tools/hypervkvpd.service b/package/linux-tools/hypervkvpd.service new file mode 100644 index 00000000..6ed63027 --- /dev/null +++ b/package/linux-tools/hypervkvpd.service @@ -0,0 +1,11 @@ +[Unit] +Description=HyperV KVP daemon +After=syslog.target +ConditionVirtualization=microsoft + +[Service] +Type=simple +ExecStart=/usr/sbin/hypervkvpd -n + +[Install] +WantedBy=multi-user.target diff --git a/package/linux-tools/hypervvssd.service b/package/linux-tools/hypervvssd.service new file mode 100644 index 00000000..3fd80029 --- /dev/null +++ b/package/linux-tools/hypervvssd.service @@ -0,0 +1,11 @@ +[Unit] +Description=HyperV VSS daemon +After=syslog.target +ConditionVirtualization=microsoft + +[Service] +Type=simple +ExecStart=/usr/sbin/hypervvssd -n + +[Install] +WantedBy=multi-user.target diff --git a/package/linux-tools/linux-tool-cpupower.mk.in b/package/linux-tools/linux-tool-cpupower.mk.in new file mode 100644 index 00000000..2a2d3e01 --- /dev/null +++ b/package/linux-tools/linux-tool-cpupower.mk.in @@ -0,0 +1,41 @@ +################################################################################ +# +# cpupower +# +################################################################################ + +LINUX_TOOLS += cpupower + +CPUPOWER_DEPENDENCIES = pciutils $(TARGET_NLS_DEPENDENCIES) + +CPUPOWER_MAKE_OPTS = CROSS=$(TARGET_CROSS) \ + CPUFREQ_BENCH=false \ + NLS=false \ + LDFLAGS=$(TARGET_NLS_LIBS) \ + DEBUG=false + +define CPUPOWER_BUILD_CMDS + $(Q)if test ! -f $(LINUX_DIR)/tools/power/cpupower/Makefile ; then \ + echo "Your kernel version is too old and does not have the cpupower tool." ; \ + echo "At least kernel 3.4 must be used." ; \ + exit 1 ; \ + fi + + $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \ + $(CPUPOWER_MAKE_OPTS) \ + cpupower +endef + +define CPUPOWER_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \ + $(CPUPOWER_MAKE_OPTS) \ + DESTDIR=$(STAGING_DIR) \ + cpupower_install +endef + +define CPUPOWER_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \ + $(CPUPOWER_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) \ + cpupower_install +endef diff --git a/package/linux-tools/linux-tool-gpio.mk.in b/package/linux-tools/linux-tool-gpio.mk.in new file mode 100644 index 00000000..e825db1b --- /dev/null +++ b/package/linux-tools/linux-tool-gpio.mk.in @@ -0,0 +1,28 @@ +################################################################################ +# +# gpio +# +################################################################################ + +LINUX_TOOLS += gpio + +GPIO_MAKE_OPTS = $(LINUX_MAKE_FLAGS) LDFLAGS="$(TARGET_LDFLAGS)" + +define GPIO_BUILD_CMDS + $(Q)if ! grep install $(LINUX_DIR)/tools/gpio/Makefile >/dev/null 2>&1 ; then \ + echo "Your kernel version is too old and does not have the gpio tools." ; \ + echo "At least kernel 4.8 must be used." ; \ + exit 1 ; \ + fi + + $(TARGET_MAKE_ENV) $(MAKE1) -C $(LINUX_DIR)/tools \ + $(GPIO_MAKE_OPTS) \ + gpio +endef + +define GPIO_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(LINUX_DIR)/tools \ + $(GPIO_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) \ + gpio_install +endef diff --git a/package/linux-tools/linux-tool-hv.mk.in b/package/linux-tools/linux-tool-hv.mk.in new file mode 100644 index 00000000..e638fecf --- /dev/null +++ b/package/linux-tools/linux-tool-hv.mk.in @@ -0,0 +1,61 @@ +################################################################################ +# +# hv_fcopy_daemon +# +################################################################################ + +LINUX_TOOLS += hv + +# The programs to build, as known by the kernel: +HV_PROGS_$(BR2_PACKAGE_LINUX_TOOLS_HV_KVP_DAEMON) += hv_kvp_daemon +HV_PROGS_$(BR2_PACKAGE_LINUX_TOOLS_HV_FCOPY_DAEMON) += hv_fcopy_daemon +HV_PROGS_$(BR2_PACKAGE_LINUX_TOOLS_HV_VSS_DAEMON) += hv_vss_daemon + +# Give each tools the name most distros install them as: +HV_hv_kvp_daemon = hypervkvpd +HV_hv_fcopy_daemon = hypervfcopyd +HV_hv_vss_daemon = hypervvssd + +HV_MAKE_OPTS = CC="$(TARGET_CC)" CFLAGS="$(filter-out -g%,$(TARGET_CFLAGS))" + +define HV_BUILD_CMDS + $(Q)for prog in $(HV_PROGS_y); do \ + if test ! -f $(LINUX_DIR)/tools/hv/$${prog}.c ; then \ + printf "Your kernel version is too old and does not have the HyperV %s tool." "$${prog}" ; \ + exit 1 ; \ + fi; \ + done + + $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools/hv \ + $(HV_MAKE_OPTS) \ + $(HV_PROGS_y) +endef + +ifeq ($(BR2_PACKAGE_LINUX_TOOLS_HV_KVP_DAEMON),y) +define HV_KVP_HELPER + @mkdir -p $(TARGET_DIR)/usr/libexec/hypervkvpd + $(Q)ln -sf /bin/true $(TARGET_DIR)/usr/libexec/hypervkvpd/hv_set_ifconfig +endef +endif + +define HV_INSTALL_TARGET_CMDS + $(foreach prog,$(HV_PROGS_y), \ + $(INSTALL) -m 0755 -D $(LINUX_DIR)/tools/hv/$(prog) \ + $(TARGET_DIR)/usr/sbin/$(HV_$(prog)) + ) + $(HV_KVP_HELPER) +endef + +define HV_INSTALL_INIT_SYSTEMD + $(foreach prog,$(HV_PROGS_y), \ + $(INSTALL) -m 0644 -D package/linux-tools/$(HV_$(prog)).service \ + $(TARGET_DIR)/usr/lib/systemd/system/$(HV_$(prog)).service + ) +endef + +define HV_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/linux-tools/S10hyperv \ + $(TARGET_DIR)/etc/init.d/S10hyperv + $(SED) 's/@PROGS@/$(foreach prog,$(HV_PROGS_y),$(HV_$(prog)))/' \ + $(TARGET_DIR)/etc/init.d/S10hyperv +endef diff --git a/package/linux-tools/linux-tool-iio.mk.in b/package/linux-tools/linux-tool-iio.mk.in new file mode 100644 index 00000000..27ab0ed7 --- /dev/null +++ b/package/linux-tools/linux-tool-iio.mk.in @@ -0,0 +1,29 @@ +################################################################################ +# +# iio +# +################################################################################ + +LINUX_TOOLS += iio + +IIO_MAKE_OPTS = $(LINUX_MAKE_FLAGS) LDFLAGS="$(TARGET_LDFLAGS)" + +define IIO_BUILD_CMDS + $(Q)if ! grep install $(LINUX_DIR)/tools/iio/Makefile >/dev/null 2>&1 ; then \ + echo "Your kernel version is too old and does not have install section in the iio tools." ; \ + echo "At least kernel 4.7 must be used." ; \ + exit 1 ; \ + fi + + $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools/iio \ + $(IIO_MAKE_OPTS) +endef + +# DESTDIR used since kernel version 4.14 +define IIO_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools/iio \ + $(IIO_MAKE_OPTS) \ + INSTALL_ROOT=$(TARGET_DIR) \ + DESTDIR=$(TARGET_DIR) \ + install +endef diff --git a/package/linux-tools/linux-tool-mm.mk.in b/package/linux-tools/linux-tool-mm.mk.in new file mode 100644 index 00000000..b2ec090f --- /dev/null +++ b/package/linux-tools/linux-tool-mm.mk.in @@ -0,0 +1,37 @@ +################################################################################ +# +# mm +# +################################################################################ + +LINUX_TOOLS += mm + +define MM_BUILD_CMDS + $(Q)if test -f $(LINUX_DIR)/tools/vm/Makefile ; then \ + MM_SUBDIR=vm; \ + elif test -f $(LINUX_DIR)/tools/mm/Makefile ; then \ + MM_SUBDIR=mm; \ + else \ + echo "Your kernel version is too old and does not have the mm tool." ; \ + echo "At least kernel 3.4 must be used." ; \ + exit 1 ; \ + fi ; \ + $(TARGET_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR)/tools \ + $(MM_MAKE_OPTS) $${MM_SUBDIR} +endef + +# For install no need to recheck both cases: we know at least one +# exists, because that was checked at build time already; we just +# need to find which of the two: if not one, then the other. +define MM_INSTALL_TARGET_CMDS + $(Q)if test -f $(LINUX_DIR)/tools/vm/Makefile ; then \ + MM_SUBDIR=vm; \ + else \ + MM_SUBDIR=mm; \ + fi ; \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \ + $(LINUX_MAKE_FLAGS) \ + INSTALL_ROOT=$(TARGET_DIR) \ + DESTDIR=$(TARGET_DIR) \ + $${MM_SUBDIR}_install +endef diff --git a/package/linux-tools/linux-tool-pci.mk.in b/package/linux-tools/linux-tool-pci.mk.in new file mode 100644 index 00000000..17246f5d --- /dev/null +++ b/package/linux-tools/linux-tool-pci.mk.in @@ -0,0 +1,27 @@ +################################################################################ +# +# pci +# +################################################################################ + +LINUX_TOOLS += pci + +PCI_MAKE_OPTS = $(LINUX_MAKE_FLAGS) LDFLAGS="$(TARGET_LDFLAGS)" + +define PCI_BUILD_CMDS + $(Q)if ! grep install $(LINUX_DIR)/tools/pci/Makefile >/dev/null 2>&1 ; then \ + echo "Your kernel version is too old and does not have install section in the pci tools." ; \ + echo "At least kernel 4.20 must be used." ; \ + exit 1 ; \ + fi + + $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools/pci \ + $(PCI_MAKE_OPTS) +endef + +define PCI_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools/pci \ + $(PCI_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) \ + install +endef diff --git a/package/linux-tools/linux-tool-perf.mk.in b/package/linux-tools/linux-tool-perf.mk.in new file mode 100644 index 00000000..65aba2e9 --- /dev/null +++ b/package/linux-tools/linux-tool-perf.mk.in @@ -0,0 +1,194 @@ +################################################################################ +# +# perf +# +################################################################################ + +LINUX_TOOLS += perf + +PERF_DEPENDENCIES = host-flex host-bison + +ifeq ($(BR2_PACKAGE_LINUX_TOOLS_PERF_NEEDS_HOST_PYTHON3),y) +PERF_DEPENDENCIES += host-python3 +endif + +ifeq ($(NORMALIZED_ARCH),x86_64) +PERF_ARCH=x86 +else +PERF_ARCH=$(NORMALIZED_ARCH) +endif + +PERF_MAKE_FLAGS = \ + $(LINUX_MAKE_FLAGS) \ + JOBS=$(PARALLEL_JOBS) \ + ARCH=$(PERF_ARCH) \ + DESTDIR=$(TARGET_DIR) \ + prefix=/usr \ + NO_GTK2=1 \ + NO_LIBPERL=1 \ + NO_LIBPYTHON=1 \ + NO_LIBBIONIC=1 \ + NO_LIBTRACEEVENT=1 + +# We need to pass an argument to ld for setting the emulation when +# building for MIPS architecture, otherwise the default one will always +# be used and the compilation for most variants will fail. +ifeq ($(BR2_mips),y) +PERF_MAKE_FLAGS += LD="$(TARGET_LD) -m elf32btsmip" +else ifeq ($(BR2_mipsel),y) +PERF_MAKE_FLAGS += LD="$(TARGET_LD) -m elf32ltsmip" +else ifeq ($(BR2_mips64),y) +ifeq ($(BR2_MIPS_NABI32),y) +PERF_MAKE_FLAGS += LD="$(TARGET_LD) -m elf32btsmipn32" +else +PERF_MAKE_FLAGS += LD="$(TARGET_LD) -m elf64btsmip" +endif +else ifeq ($(BR2_mips64el),y) +ifeq ($(BR2_MIPS_NABI32),y) +PERF_MAKE_FLAGS += LD="$(TARGET_LD) -m elf32ltsmipn32" +else +PERF_MAKE_FLAGS += LD="$(TARGET_LD) -m elf64ltsmip" +endif +endif + +# The call to backtrace() function fails for ARC, because for some +# reason the unwinder from libgcc returns early. Thus the usage of +# backtrace() should be disabled in perf explicitly: at build time +# backtrace() appears to be available, but it fails at runtime: the +# backtrace will contain only several functions from the top of stack, +# instead of the complete backtrace. +ifeq ($(BR2_arc),y) +PERF_MAKE_FLAGS += NO_BACKTRACE=1 +endif + +ifeq ($(BR2_PACKAGE_LINUX_TOOLS_PERF_TUI),y) +PERF_DEPENDENCIES += slang +else +PERF_MAKE_FLAGS += NO_NEWT=1 NO_SLANG=1 +endif + +ifeq ($(BR2_PACKAGE_AUDIT),y) +PERF_DEPENDENCIES += audit +else +PERF_MAKE_FLAGS += NO_LIBAUDIT=1 +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +PERF_DEPENDENCIES += zstd +endif + +ifeq ($(BR2_PACKAGE_LIBUNWIND),y) +PERF_DEPENDENCIES += libunwind +else +PERF_MAKE_FLAGS += NO_LIBUNWIND=1 +endif + +ifeq ($(BR2_PACKAGE_NUMACTL),y) +PERF_DEPENDENCIES += numactl +else +PERF_MAKE_FLAGS += NO_LIBNUMA=1 +endif + +ifeq ($(BR2_PACKAGE_ELFUTILS),y) +PERF_DEPENDENCIES += elfutils +else +PERF_MAKE_FLAGS += NO_LIBELF=1 NO_DWARF=1 +endif + +ifeq ($(BR2_PACKAGE_BINUTILS),y) +PERF_DEPENDENCIES += binutils +else +PERF_MAKE_FLAGS += NO_DEMANGLE=1 +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +PERF_DEPENDENCIES += openssl +else +PERF_MAKE_FLAGS += NO_LIBCRYPTO=1 +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +PERF_DEPENDENCIES += zlib +else +PERF_MAKE_FLAGS += NO_ZLIB=1 +endif + +# lzma is provided by xz +ifeq ($(BR2_PACKAGE_XZ),y) +PERF_DEPENDENCIES += xz +else +PERF_MAKE_FLAGS += NO_LZMA=1 +endif + +ifeq ($(BR2_PACKAGE_OPENCSD),y) +PERF_DEPENDENCIES += opencsd +PERF_MAKE_FLAGS += CORESIGHT=1 +# There is no "else CORESIGHT=0" case, because "perf" Makefile uses +# bare "ifdef CORESIGHT" constructs. +endif + +# We really do not want to build the perf documentation, because it +# has stringent requirement on the documentation generation tools, +# like xmlto and asciidoc), which may be lagging behind on some +# distributions. +# We name it 'GNUmakefile' so that GNU make will use it instead of +# the existing 'Makefile'. +define PERF_DISABLE_DOCUMENTATION + if [ -f $(LINUX_DIR)/tools/perf/Documentation/Makefile ]; then \ + printf "%%:\n\t@:\n" >$(LINUX_DIR)/tools/perf/Documentation/GNUmakefile; \ + fi +endef +LINUX_TOOLS_POST_PATCH_HOOKS += PERF_DISABLE_DOCUMENTATION + +# O must be redefined here to overwrite the one used by Buildroot for +# out of tree build. We build perf in $(LINUX_DIR)/tools/perf/ and not just +# $(LINUX_DIR) so that it isn't built in the root directory of the kernel +# sources. +define PERF_BUILD_CMDS + $(Q)if test ! -f $(LINUX_DIR)/tools/perf/Makefile ; then \ + echo "Your kernel version is too old and does not have the perf tool." ; \ + echo "At least kernel 2.6.31 must be used." ; \ + exit 1 ; \ + fi + $(Q)if test "$(BR2_PACKAGE_ELFUTILS)" = "" ; then \ + if ! grep -q NO_LIBELF $(LINUX_DIR)/tools/perf/Makefile* ; then \ + if ! test -r $(LINUX_DIR)/tools/perf/config/Makefile ; then \ + echo "The perf tool in your kernel cannot be built without libelf." ; \ + echo "Either upgrade your kernel to >= 3.7, or enable the elfutils package." ; \ + exit 1 ; \ + fi \ + fi \ + fi + $(Q)if test "$(BR2_PACKAGE_LINUX_TOOLS_PERF_TUI)" = "y" ; then \ + if ! grep -q NO_SLANG $(LINUX_DIR)/tools/perf/Makefile* ; then \ + echo "The perf tool in your kernel cannot be build with the TUI." ; \ + echo "Either upgrade your kernel to >= 3.10, or disable the TUI." ; \ + exit 1 ; \ + fi \ + fi + $(TARGET_MAKE_ENV) $(MAKE1) $(PERF_MAKE_FLAGS) \ + -C $(LINUX_DIR)/tools/perf O=$(LINUX_DIR)/tools/perf/ +endef + +# After installation, we remove the Perl and Python scripts from the +# target unless BR2_PACKAGE_LINUX_TOOLS_PERF_SCRIPTS is enabled +ifeq ($(BR2_PACKAGE_LINUX_TOOLS_PERF_SCRIPTS),) +define PERF_INSTALL_REMOVE_SCRIPTS + $(RM) -r $(TARGET_DIR)/usr/libexec/perf-core/scripts/ + $(RM) -r $(TARGET_DIR)/usr/libexec/perf-core/tests/ +endef + +LINUX_TOOLS_BIN_ARCH_EXCLUDE += \ + /usr/libexec/perf-core/tests/pe-file.exe \ + /usr/libexec/perf-core/tests/pe-file.exe.debug +endif + +define PERF_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) $(PERF_MAKE_FLAGS) \ + -C $(LINUX_DIR)/tools/perf O=$(LINUX_DIR)/tools/perf/ install + $(PERF_INSTALL_REMOVE_SCRIPTS) +endef + +define PERF_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_PERF_EVENTS) +endef diff --git a/package/linux-tools/linux-tool-rtla.mk.in b/package/linux-tools/linux-tool-rtla.mk.in new file mode 100644 index 00000000..449371dd --- /dev/null +++ b/package/linux-tools/linux-tool-rtla.mk.in @@ -0,0 +1,52 @@ +################################################################################ +# +# rtla +# +################################################################################ + +LINUX_TOOLS += rtla + +RTLA_DEPENDENCIES = host-pkgconf libtracefs +RTLA_MAKE_OPTS = $(LINUX_MAKE_FLAGS) \ + CC=$(TARGET_CC) \ + EXTRA_CFLAGS="-D_GNU_SOURCE" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + PKG_CONFIG_PATH=$(STAGING_DIR)/usr/lib/pkgconfig + +ifeq ($(BR2_TOOLCHAIN_HAS_SSP),) +define RTLA_DISABLE_STACK_PROTECTOR + $(SED) 's/-fstack-protector.* //' $(LINUX_DIR)/tools/tracing/rtla/Makefile +endef +endif + +define RTLA_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_FTRACE) + $(call KCONFIG_ENABLE_OPT,CONFIG_TIMERLAT_TRACER) + $(call KCONFIG_ENABLE_OPT,CONFIG_HIST_TRIGGERS) +endef + +define RTLA_BUILD_CMDS + $(Q)if ! grep install $(LINUX_DIR)/tools/tracing/rtla/Makefile >/dev/null 2>&1 ; then \ + echo "Your kernel version is too old and does not implement the rtla tool." ; \ + echo "At least kernel 5.19 must be used." ; \ + exit 1 ; \ + fi + $(RTLA_DISABLE_STACK_PROTECTOR) + $(TARGET_MAKE_ENV) $(MAKE) $(RTLA_MAKE_OPTS) \ + -C $(LINUX_DIR)/tools/tracing rtla +endef + +# make rtla_install build and install by default documentation using rst2man +# but it's not available in Buildroot and we don't want manual files in target +# folder so let's simply install the resulting rtla binary and create symlinks +# like Linux does in its tools/tracing/rtla/Makefile +define RTLA_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(LINUX_DIR)/tools/tracing/rtla/rtla $(TARGET_DIR)/usr/bin + ln -sf rtla $(TARGET_DIR)/usr/bin/osnoise + ln -sf rtla $(TARGET_DIR)/usr/bin/timerlat + + # Check if hwnoise is provided or not + if grep -q hwnoise $(LINUX_DIR)/tools/tracing/rtla/Makefile; then \ + ln -sf rtla $(TARGET_DIR)/usr/bin/hwnoise ; \ + fi +endef diff --git a/package/linux-tools/linux-tool-selftests.mk.in b/package/linux-tools/linux-tool-selftests.mk.in new file mode 100644 index 00000000..0bcc47af --- /dev/null +++ b/package/linux-tools/linux-tool-selftests.mk.in @@ -0,0 +1,50 @@ +################################################################################ +# +# selftests +# +################################################################################ + +LINUX_TOOLS += selftests + +ifeq ($(NORMALIZED_ARCH),x86_64) +SELFTESTS_ARCH=x86 +else +ifeq ($(NORMALIZED_ARCH),i386) +SELFTESTS_ARCH=x86 +else +SELFTESTS_ARCH=$(NORMALIZED_ARCH) +endif +endif + +SELFTESTS_DEPENDENCIES = \ + libcap-ng \ + popt \ + $(if $(BR2_PACKAGE_OPENSSL),openssl) + +SELFTESTS_MAKE_FLAGS = \ + $(LINUX_MAKE_FLAGS) \ + ARCH=$(SELFTESTS_ARCH) \ + KHDR_DIR=$(LINUX_DIR)/usr/include + +# O must be redefined here to overwrite the one used by Buildroot for +# out of tree build. We build the selftests in $(LINUX_DIR)/tools/selftests and +# not just $(LINUX_DIR) so that it isn't built in the root directory of the kernel +# sources. +# +# The headers_install step here is important as some kernel selftests use a +# hardcoded CFLAGS to find kernel headers e.g: +# CFLAGS += -I../../../../usr/include/ +# The headers_install target will install the kernel headers locally inside +# the Linux build dir +define SELFTESTS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(LINUX_DIR) $(SELFTESTS_MAKE_FLAGS) \ + headers_install + $(TARGET_MAKE_ENV) $(MAKE1) -C $(LINUX_DIR)/tools/testing/selftests \ + $(SELFTESTS_MAKE_FLAGS) O=$(LINUX_DIR)/tools/testing/selftests +endef + +define SELFTESTS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(LINUX_DIR)/tools/testing/selftests \ + $(SELFTESTS_MAKE_FLAGS) O=$(LINUX_DIR)/tools/testing/selftests \ + INSTALL_PATH=$(TARGET_DIR)/usr/lib/kselftests install +endef diff --git a/package/linux-tools/linux-tool-tmon.mk.in b/package/linux-tools/linux-tool-tmon.mk.in new file mode 100644 index 00000000..56c328c5 --- /dev/null +++ b/package/linux-tools/linux-tool-tmon.mk.in @@ -0,0 +1,38 @@ +################################################################################ +# +# tmon +# +################################################################################ + +LINUX_TOOLS += tmon + +TMON_DEPENDENCIES = host-pkgconf ncurses +TMON_MAKE_OPTS = $(LINUX_MAKE_FLAGS) \ + CC=$(TARGET_CC) \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + PKG_CONFIG_PATH=$(STAGING_DIR)/usr/lib/pkgconfig + +ifeq ($(BR2_TOOLCHAIN_HAS_SSP),) +define TMON_DISABLE_STACK_PROTECTOR + $(SED) 's%-fstack-protector%%' $(LINUX_DIR)/tools/thermal/tmon/Makefile +endef +endif + +define TMON_BUILD_CMDS + $(Q)if ! grep install $(LINUX_DIR)/tools/thermal/tmon/Makefile >/dev/null 2>&1 ; then \ + echo "Your kernel version is too old and does not have the tmon tool." ; \ + echo "At least kernel 3.13 must be used." ; \ + exit 1 ; \ + fi + $(TMON_DISABLE_STACK_PROTECTOR) + $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \ + $(TMON_MAKE_OPTS) \ + tmon +endef + +define TMON_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \ + $(TMON_MAKE_OPTS) \ + INSTALL_ROOT=$(TARGET_DIR) \ + tmon_install +endef diff --git a/package/linux-tools/linux-tool-usbtools.mk.in b/package/linux-tools/linux-tool-usbtools.mk.in new file mode 100644 index 00000000..797758ad --- /dev/null +++ b/package/linux-tools/linux-tool-usbtools.mk.in @@ -0,0 +1,34 @@ +################################################################################ +# +# usbtools +# +################################################################################ + +LINUX_TOOLS += usbtools + +USBTOOLS_MAKE_OPTS = $(LINUX_MAKE_FLAGS) LDFLAGS="$(TARGET_LDFLAGS)" + +LINUX_TOOLS_USBTOOLS_LIST = \ + $(if $(BR2_PACKAGE_LINUX_TOOLS_USBTOOLS_TESTUSB),testusb) \ + $(if $(BR2_PACKAGE_LINUX_TOOLS_USBTOOLS_FFSTEST),ffs-test) + +define USBTOOLS_BUILD_CMDS + $(Q)if ! grep install $(LINUX_DIR)/tools/usb/Makefile >/dev/null 2>&1 ; then \ + echo "Your kernel version is too old to build the USB tools." ; \ + echo "At least kernel 5.9 must be used." ; \ + exit 1 ; \ + fi + + $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools/usb \ + ALL_TARGETS="$(LINUX_TOOLS_USBTOOLS_LIST)" \ + $(USBTOOLS_MAKE_OPTS) \ + all +endef + +define USBTOOLS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools/usb \ + ALL_TARGETS="$(LINUX_TOOLS_USBTOOLS_LIST)" \ + $(USBTOOLS_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) \ + install +endef diff --git a/package/linux-tools/linux-tools.mk b/package/linux-tools/linux-tools.mk new file mode 100644 index 00000000..81b1fbc1 --- /dev/null +++ b/package/linux-tools/linux-tools.mk @@ -0,0 +1,74 @@ +################################################################################ +# +# linux-tools +# +################################################################################ + +# Vampirising sources from the kernel tree, so no source nor site specified. +# Instead, we directly build in the sources of the linux package. We can do +# that, because we're not building in the same location and the same files. +# +# So, all tools refer to $(LINUX_DIR) instead of $(@D). + +# Note: we need individual tools makefiles to be included *before* we build +# the list of build and install hooks below to guarantee that each tool has +# a chance to register itself once, and only once. Therefore, the makefiles +# are named linux-tool-*.mk.in, so they won't be picked up by the top-level +# Makefile, but can be included here, guaranteeing the single inclusion and +# the proper ordering. + +include $(sort $(wildcard package/linux-tools/*.mk.in)) + +# We only need the kernel to be extracted, not actually built +LINUX_TOOLS_PATCH_DEPENDENCIES = linux + +# Install Linux kernel tools in the staging directory since some tools +# may install shared libraries and headers (e.g. cpupower). +LINUX_TOOLS_INSTALL_STAGING = YES + +LINUX_TOOLS_DEPENDENCIES += $(foreach tool,$(LINUX_TOOLS),\ + $(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\ + $($(call UPPERCASE,$(tool))_DEPENDENCIES))) + +LINUX_TOOLS_POST_BUILD_HOOKS += $(foreach tool,$(LINUX_TOOLS),\ + $(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\ + $(call UPPERCASE,$(tool))_BUILD_CMDS)) + +LINUX_TOOLS_POST_INSTALL_STAGING_HOOKS += $(foreach tool,$(LINUX_TOOLS),\ + $(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\ + $(call UPPERCASE,$(tool))_INSTALL_STAGING_CMDS)) + +LINUX_TOOLS_POST_INSTALL_TARGET_HOOKS += $(foreach tool,$(LINUX_TOOLS),\ + $(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\ + $(call UPPERCASE,$(tool))_INSTALL_TARGET_CMDS)) + +define LINUX_TOOLS_LINUX_CONFIG_FIXUPS + $(foreach tool,$(LINUX_TOOLS),\ + $(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\ + $($(call UPPERCASE,$(tool))_LINUX_CONFIG_FIXUPS)) + ) +endef + +define LINUX_TOOLS_INSTALL_INIT_SYSTEMD + $(foreach tool,$(LINUX_TOOLS),\ + $(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\ + $($(call UPPERCASE,$(tool))_INSTALL_INIT_SYSTEMD)) + ) +endef + +define LINUX_TOOLS_INSTALL_INIT_SYSV + $(foreach tool,$(LINUX_TOOLS),\ + $(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\ + $($(call UPPERCASE,$(tool))_INSTALL_INIT_SYSV)) + ) +endef + +define LINUX_TOOLS_INSTALL_INIT_OPENRC + $(foreach tool,$(LINUX_TOOLS),\ + $(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\ + $(or $($(call UPPERCASE,$(tool))_INSTALL_INIT_OPENRC),\ + $($(call UPPERCASE,$(tool))_INSTALL_INIT_SYSV))) + ) +endef + +$(eval $(generic-package)) diff --git a/package/linux-zigbee/0001-test-serial-Remove-test-serial.patch b/package/linux-zigbee/0001-test-serial-Remove-test-serial.patch new file mode 100644 index 00000000..8cd9d754 --- /dev/null +++ b/package/linux-zigbee/0001-test-serial-Remove-test-serial.patch @@ -0,0 +1,54 @@ +From 98187a5238939edc889fdaad93b00628b55d1e08 Mon Sep 17 00:00:00 2001 +From: Maxime Hadjinlian +Date: Sat, 3 May 2014 19:43:20 +0200 +Subject: [PATCH] test-serial: Remove test-serial + +This folders only contains python tests scripts which would force us to +enable a dependency to host-python which seems kind of silly since +theses are only tests scripts. + +Signed-off-by: Maxime Hadjinlian +--- + Makefile.am | 2 +- + configure.ac | 6 ------ + 2 files changed, 1 insertion(+), 7 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 265f0d7..e7bb1a1 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -2,7 +2,7 @@ include $(top_srcdir)/Makefile.common + + ACLOCAL_AMFLAGS = -I m4 + +-SUBDIRS = lib addrdb src tests test-serial ++SUBDIRS = lib addrdb src tests + + include_HEADERS = include/ieee802154.h include/nl802154.h + noinst_HEADERS = include/libcommon.h include/addrdb.h include/logging.h +diff --git a/configure.ac b/configure.ac +index 17658af..506b289 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -77,11 +77,6 @@ AC_PROG_LIBTOOL + AM_PROG_LEX + AC_PROG_YACC + AC_SUBST(LIBTOOL_DEPS) +-# Currently the scripts works with python2.x only +-# Check for this at first +-AC_PATH_PROG(PYTHON, python2 python2.7 python2.6 python2.5 python) +-AM_PATH_PYTHON(,, [:]) +-py_CHECK_MAJOR_VERSION([PYTHON_VERSION], [2]) + AM_MISSING_PROG(HELP2MAN, help2man, $missing_dir) + + # Checks for libraries. +@@ -135,6 +130,5 @@ AC_CONFIG_FILES([ + addrdb/Makefile + src/Makefile + tests/Makefile +- test-serial/Makefile + ]) + AC_OUTPUT +-- +1.9.2 + diff --git a/package/linux-zigbee/0002-addrdb-coord-config-parse.y-add-missing-time.h-inclu.patch b/package/linux-zigbee/0002-addrdb-coord-config-parse.y-add-missing-time.h-inclu.patch new file mode 100644 index 00000000..0ce4381c --- /dev/null +++ b/package/linux-zigbee/0002-addrdb-coord-config-parse.y-add-missing-time.h-inclu.patch @@ -0,0 +1,43 @@ +From 8cc60d618f81f2eeaa926cd60ed9b55ee6cda6ea Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 8 Aug 2016 15:42:46 +0200 +Subject: [PATCH] addrdb/coord-config-parse.y: add missing include +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The %union definition uses the time_t structure. In order to use this +structure, the header has to be included. Otherwise, the build +breaks with some C libraries, such as musl: + +In file included from coord-config-lex.l:23:0: +coord-config-parse.y:107:2: error: unknown type name ‘time_t’ + time_t timestamp; + ^ + +This patch includes using the '%code requires' directive of +Yacc. + +Signed-off-by: Thomas Petazzoni +--- + addrdb/coord-config-parse.y | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/addrdb/coord-config-parse.y b/addrdb/coord-config-parse.y +index 2e10a88..85ee058 100644 +--- a/addrdb/coord-config-parse.y ++++ b/addrdb/coord-config-parse.y +@@ -102,6 +102,10 @@ + + %} + ++%code requires { ++#include ++} ++ + %union { + unsigned long number; + time_t timestamp; +-- +2.7.4 + diff --git a/package/linux-zigbee/Config.in b/package/linux-zigbee/Config.in new file mode 100644 index 00000000..ff2b0f7c --- /dev/null +++ b/package/linux-zigbee/Config.in @@ -0,0 +1,55 @@ +comment "linux-zigbee needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU + +config BR2_PACKAGE_LINUX_ZIGBEE + bool "linux-zigbee" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_LIBNL + help + IEEE 802.15.4 is a standard for communication in small + low-rate wireless personal area networks (WPAN). While + 802.15.4 is a MAC- and PHY- layer standard only, several + common protocols commonly sit on top of it such as ZigBee, + MiWi, and 6LoWPAN. The goal of this project is to create an + implementation of 802.15.4 and several of the protocols + which run on top of it (primarily 6LoWPAN) for Linux. + + It's worth noting that the name linux-zigbee is somewhat of + a misnomer. While this project was originally started to + create a ZigBee implementation for Linux, licensing + restrictions put in place by the ZigBee Alliance make it + impossible for an implementation of ZigBee to ever become + part of the Linux kernel. Once this licensing issue was + discovered, this project's primary focus shifted to IEEE + 802.15.4 and 6LoWPAN. Other higher-layer standards may be + added at a future time. + + The 802.15.4 stack contains kernel components, which are + part of the mainline Linux kernel, and userspace components, + available in this package. + + http://sourceforge.net/apps/trac/linux-zigbee/ + +if BR2_PACKAGE_LINUX_ZIGBEE + +config BR2_PACKAGE_LINUX_ZIGBEE_TESTS + bool "tests programs" + help + Enable this option to install the Linux-ZigBee test programs + to the target. + +config BR2_PACKAGE_LINUX_ZIGBEE_OLD_KERNEL_COMPAT + bool "compatibility with older kernels" + help + Enable this option to get compatibility of the Linux-ZigBee + userspace tools with old kernels. Recent kernels know the + 802.15.4 line discipline as N_IEEE802154 with the value 25, + but some older kernels had it with the values 22 or 19. + +config BR2_PACKAGE_LINUX_ZIGBEE_LEASEFILE + string "path for persistent lease storage" + default "/var/run/izcoordinator.leases" + +endif diff --git a/package/linux-zigbee/linux-zigbee.hash b/package/linux-zigbee/linux-zigbee.hash new file mode 100644 index 00000000..232c1cb4 --- /dev/null +++ b/package/linux-zigbee/linux-zigbee.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 92fbefdf18d45147c2b78ca2ce2d899d4d1da5a3391a4ff6c51a5b14c6d6f87c lowpan-tools-0.3.1.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/linux-zigbee/linux-zigbee.mk b/package/linux-zigbee/linux-zigbee.mk new file mode 100644 index 00000000..53089e16 --- /dev/null +++ b/package/linux-zigbee/linux-zigbee.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# linux-zigbee +# +################################################################################ + +LINUX_ZIGBEE_VERSION = 0.3.1 +LINUX_ZIGBEE_SOURCE = lowpan-tools-$(LINUX_ZIGBEE_VERSION).tar.gz +LINUX_ZIGBEE_SITE = \ + http://downloads.sourceforge.net/project/linux-zigbee/linux-zigbee-sources/$(LINUX_ZIGBEE_VERSION) +LINUX_ZIGBEE_LICENSE = GPL-2.0 +LINUX_ZIGBEE_LICENSE_FILES = COPYING +LINUX_ZIGBEE_DEPENDENCIES = libnl host-pkgconf host-flex host-bison + +# We patch configure.ac/Makefile.am +LINUX_ZIGBEE_AUTORECONF = YES + +LINUX_ZIGBEE_CONF_OPTS = \ + --disable-manpages \ + --disable-werror \ + --with-leasefile="$(call qstrip,$(BR2_PACKAGE_LINUX_ZIGBEE_LEASEFILE))" + +ifeq ($(BR2_PACKAGE_LINUX_ZIGBEE_TESTS),y) +LINUX_ZIGBEE_CONF_OPTS += --with-zbtestdir='/usr/sbin/' +else +LINUX_ZIGBEE_CONF_OPTS += --with-zbtestdir='' +endif + +ifeq ($(BR2_PACKAGE_LINUX_ZIGBEE_OLD_KERNEL_COMPAT),y) +LINUX_ZIGBEE_CONF_OPTS += --enable-kernel-compat +endif + +$(eval $(autotools-package)) diff --git a/package/linuxconsoletools/Config.in b/package/linuxconsoletools/Config.in new file mode 100644 index 00000000..614099fd --- /dev/null +++ b/package/linuxconsoletools/Config.in @@ -0,0 +1,40 @@ +config BR2_PACKAGE_LINUXCONSOLETOOLS + bool "linuxconsoletools" + select BR2_PACKAGE_LINUXCONSOLETOOLS_INPUTATTACH if \ + !BR2_PACKAGE_LINUXCONSOLETOOLS_JOYSTICK && \ + !BR2_PACKAGE_LINUXCONSOLETOOLS_FORCEFEEDBACK + help + Linuxconsoletools contains the inputattach utility + to attach legacy serial devices to the Linux kernel + input layer and joystick utilities to calibrate and + test joysticks and joypads. + + http://sf.net/projects/linuxconsole/ + +if BR2_PACKAGE_LINUXCONSOLETOOLS + +config BR2_PACKAGE_LINUXCONSOLETOOLS_INPUTATTACH + bool "inputattach" + default y + help + The inputattach utility attaches legacy serial devices + to the Linux kernel input layer. + +config BR2_PACKAGE_LINUXCONSOLETOOLS_JOYSTICK + bool "joystick utilities" + help + Joystick utilities (jstest, jscal, jscal-store, + jscal-restore, evdev-joystick). + +config BR2_PACKAGE_LINUXCONSOLETOOLS_FORCEFEEDBACK + bool "force-feedback utilities" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_SDL2 + help + Build force-feedback driver utilities (fftest, + ffmvforce, ffset, ffcfstress). + +comment "force-feedback utilities need a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +endif diff --git a/package/linuxconsoletools/linuxconsoletools.hash b/package/linuxconsoletools/linuxconsoletools.hash new file mode 100644 index 00000000..8e4099f1 --- /dev/null +++ b/package/linuxconsoletools/linuxconsoletools.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 4da29745c782b7db18f5f37c49e77bf163121dd3761e2fc7636fa0cbf35c2456 linuxconsoletools-1.8.1.tar.bz2 +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/linuxconsoletools/linuxconsoletools.mk b/package/linuxconsoletools/linuxconsoletools.mk new file mode 100644 index 00000000..a97618c8 --- /dev/null +++ b/package/linuxconsoletools/linuxconsoletools.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# linuxconsoletools +# +################################################################################ + +LINUXCONSOLETOOLS_VERSION = 1.8.1 +LINUXCONSOLETOOLS_SOURCE = linuxconsoletools-$(LINUXCONSOLETOOLS_VERSION).tar.bz2 +LINUXCONSOLETOOLS_SITE = https://downloads.sourceforge.net/project/linuxconsole +LINUXCONSOLETOOLS_LICENSE = GPL-2.0+ +LINUXCONSOLETOOLS_LICENSE_FILES = COPYING + +ifneq ($(BR2_PACKAGE_LINUXCONSOLETOOLS_INPUTATTACH),y) +LINUXCONSOLETOOLS_MAKE_OPTS += DISABLE_INPUTATTACH=1 +endif + +ifneq ($(BR2_PACKAGE_LINUXCONSOLETOOLS_JOYSTICK),y) +LINUXCONSOLETOOLS_MAKE_OPTS += DISABLE_JOYSTICK=1 +endif + +ifneq ($(BR2_PACKAGE_LINUXCONSOLETOOLS_FORCEFEEDBACK),y) +LINUXCONSOLETOOLS_MAKE_OPTS += DISABLE_FORCEFEEDBACK=1 +else +LINUXCONSOLETOOLS_MAKE_OPTS += CFLAGS="$(TARGET_CFLAGS) -std=gnu99" +LINUXCONSOLETOOLS_DEPENDENCIES += sdl2 host-pkgconf +endif + +define LINUXCONSOLETOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(LINUXCONSOLETOOLS_MAKE_OPTS) +endef + +define LINUXCONSOLETOOLS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(LINUXCONSOLETOOLS_MAKE_OPTS) \ + DESTDIR="$(TARGET_DIR)" \ + PREFIX=/usr \ + install +endef + +$(eval $(generic-package)) diff --git a/package/linuxptp/Config.in b/package/linuxptp/Config.in new file mode 100644 index 00000000..c88b7a06 --- /dev/null +++ b/package/linuxptp/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LINUXPTP + bool "linuxptp" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + The Linux PTP Project is the Precision Time Protocol + implementation according to IEEE standard 1588 for Linux. + + The dual design goals are to provide a robust implementation + of the standard and to use the most relevant and modern + Application Programming Interfaces (API) offered by the + Linux kernel. Supporting legacy APIs and other platforms is + not a goal. + + http://linuxptp.sourceforge.net/ + +comment "linuxptp needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/linuxptp/S65ptp4l b/package/linuxptp/S65ptp4l new file mode 100644 index 00000000..1b9e3c93 --- /dev/null +++ b/package/linuxptp/S65ptp4l @@ -0,0 +1,57 @@ +#!/bin/sh +# +# Start linuxptp +# + +DAEMON="ptp4l" + +PIDFILE="/var/run/$DAEMON.pid" + +PTP4L_ARGS="-f /etc/linuxptp.cfg" + +# shellcheck source=/dev/null +[ -r "/etc/default/ptp4l" ] && . "/etc/default/ptp4l" + +start() { + printf "Starting linuxptp daemon: " + start-stop-daemon -S -b -q -m -p $PIDFILE \ + -x /usr/sbin/$DAEMON -- $PTP4L_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return $status +} + +stop() { + printf "Stopping linuxptp daemon: " + start-stop-daemon -K -q -p $PIDFILE + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return $status +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/package/linuxptp/S66phc2sys b/package/linuxptp/S66phc2sys new file mode 100644 index 00000000..fd1ec59b --- /dev/null +++ b/package/linuxptp/S66phc2sys @@ -0,0 +1,57 @@ +#!/bin/sh +# +# Start linuxptp +# + +DAEMON="phc2sys" + +PIDFILE="/var/run/$DAEMON.pid" + +PHC2SYS_ARGS="-a -r -S 1.0" + +# shellcheck source=/dev/null +[ -r "/etc/default/phc2sys" ] && . "/etc/default/phc2sys" + +start() { + printf "Starting linuxptp system clock synchronization: " + start-stop-daemon -S -b -q -m -p $PIDFILE \ + -x /usr/sbin/$DAEMON -- $PHC2SYS_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return $status +} + +stop() { + printf "Stopping linuxptp system clock synchronization: " + start-stop-daemon -K -q -p $PIDFILE + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return $status +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/package/linuxptp/linuxptp.cfg b/package/linuxptp/linuxptp.cfg new file mode 100644 index 00000000..f9d02e8d --- /dev/null +++ b/package/linuxptp/linuxptp.cfg @@ -0,0 +1,19 @@ +# LinuxPTP configuration file for synchronizing the system clock to +# a remote PTP master in slave-only mode. +# +# By default synchronize time in slave-only mode using UDP and hardware time +# stamps on eth0. If the difference to master is >1.0 second correct by +# stepping the clock instead of adjusting the frequency. +# +# If you change the configuration don't forget to update the phc2sys +# parameters accordingly in linuxptp-system-clock.service (systemd) +# or the linuxptp SysV init script. + +[global] +slaveOnly 1 +delay_mechanism Auto +network_transport UDPv4 +time_stamping hardware +step_threshold 1.0 + +[eth0] diff --git a/package/linuxptp/linuxptp.hash b/package/linuxptp/linuxptp.hash new file mode 100644 index 00000000..1d5c590e --- /dev/null +++ b/package/linuxptp/linuxptp.hash @@ -0,0 +1,5 @@ +# Locally computed: +sha256 70e38e5d2764e0217443da6f14e8846fe401a472293ac138d8419c07a665447a linuxptp-4.2.tgz + +# Hash for license file: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/linuxptp/linuxptp.mk b/package/linuxptp/linuxptp.mk new file mode 100644 index 00000000..eea41f0b --- /dev/null +++ b/package/linuxptp/linuxptp.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# linuxptp +# +################################################################################ + +LINUXPTP_VERSION = 4.2 +LINUXPTP_SOURCE = linuxptp-$(LINUXPTP_VERSION).tgz +LINUXPTP_SITE = http://downloads.sourceforge.net/linuxptp +LINUXPTP_LICENSE = GPL-2.0+ +LINUXPTP_LICENSE_FILES = COPYING +LINUXPTP_CPE_ID_VALID = YES + +LINUXPTP_MAKE_ENV = \ + $(TARGET_MAKE_ENV) \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + KBUILD_OUTPUT=$(STAGING_DIR) + +LINUXPTP_MAKE_OPTS = \ + prefix=/usr \ + EXTRA_CFLAGS="$(TARGET_CFLAGS)" \ + EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" + +define LINUXPTP_BUILD_CMDS + $(LINUXPTP_MAKE_ENV) $(MAKE) $(LINUXPTP_MAKE_OPTS) -C $(@D) all +endef + +define LINUXPTP_INSTALL_TARGET_CMDS + $(LINUXPTP_MAKE_ENV) $(MAKE) $(LINUXPTP_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) -C $(@D) install + + $(INSTALL) -D -m 644 $(LINUXPTP_PKGDIR)/linuxptp.cfg \ + $(TARGET_DIR)/etc/linuxptp.cfg +endef + +define LINUXPTP_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D $(LINUXPTP_PKGDIR)/S65ptp4l \ + $(TARGET_DIR)/etc/init.d/S65ptp4l + $(INSTALL) -m 755 -D $(LINUXPTP_PKGDIR)/S66phc2sys \ + $(TARGET_DIR)/etc/init.d/S66phc2sys +endef + +define LINUXPTP_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(LINUXPTP_PKGDIR)/ptp4l.service \ + $(TARGET_DIR)/usr/lib/systemd/system/ptp4l.service + $(INSTALL) -D -m 644 $(LINUXPTP_PKGDIR)/phc2sys.service \ + $(TARGET_DIR)/usr/lib/systemd/system/phc2sys.service +endef + +$(eval $(generic-package)) diff --git a/package/linuxptp/phc2sys.service b/package/linuxptp/phc2sys.service new file mode 100644 index 00000000..63b0ca23 --- /dev/null +++ b/package/linuxptp/phc2sys.service @@ -0,0 +1,10 @@ +[Unit] +Description=Precision Time Protocol system clock synchronization +After=ptp4l.service + +[Service] +ExecStart=/usr/sbin/phc2sys -s /dev/ptp0 -c CLOCK_REALTIME -w -S 1.0 +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/linuxptp/ptp4l.service b/package/linuxptp/ptp4l.service new file mode 100644 index 00000000..07f0b68f --- /dev/null +++ b/package/linuxptp/ptp4l.service @@ -0,0 +1,13 @@ +[Unit] +Description=Precision Time Protocol daemon +After=syslog.target network.target +Before=time-sync.target +Wants=time-sync.target +Wants=phc2sys.service + +[Service] +ExecStart=/usr/sbin/ptp4l -f /etc/linuxptp.cfg +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/liquid-dsp/Config.in b/package/liquid-dsp/Config.in new file mode 100644 index 00000000..59ee7edb --- /dev/null +++ b/package/liquid-dsp/Config.in @@ -0,0 +1,24 @@ +comment "liquid-dsp requires a glibc or musl toolchain w/ dynamic library" + depends on !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) || BR2_STATIC_LIBS + +config BR2_PACKAGE_LIQUID_DSP + bool "liquid-dsp" + depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL + depends on !BR2_STATIC_LIBS + help + Liquid-DSP is a free and open-source signal processing + library for software-defined radios written in C. Its + purpose is to provide a set of extensible DSP modules that + do no rely on external dependencies or cumbersome + frameworks. + + http://liquidsdr.org/ + +if BR2_PACKAGE_LIQUID_DSP + +config BR2_PACKAGE_LIQUID_DSP_FAST + bool "optimize for speed over accuracy" + help + Optimize for speed over accuracy. + +endif diff --git a/package/liquid-dsp/liquid-dsp.hash b/package/liquid-dsp/liquid-dsp.hash new file mode 100644 index 00000000..4e18f3ca --- /dev/null +++ b/package/liquid-dsp/liquid-dsp.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 6ee6a5dfb48e047b118cf613c0b9f43e34356a5667a77a72a55371d2c8c53bf5 liquid-dsp-1.6.0.tar.gz +sha256 4df7126196efba1283deb99e3269418dde4ab0ad1fde80a55051153451eb4df2 LICENSE diff --git a/package/liquid-dsp/liquid-dsp.mk b/package/liquid-dsp/liquid-dsp.mk new file mode 100644 index 00000000..ce4cd5a7 --- /dev/null +++ b/package/liquid-dsp/liquid-dsp.mk @@ -0,0 +1,68 @@ +################################################################################ +# +# liquid-dsp +# +################################################################################ + +LIQUID_DSP_VERSION = 1.6.0 +LIQUID_DSP_SITE = $(call github,jgaeddert,liquid-dsp,v$(LIQUID_DSP_VERSION)) +LIQUID_DSP_LICENSE = MIT +LIQUID_DSP_LICENSE_FILES = LICENSE +LIQUID_DSP_INSTALL_STAGING = YES +LIQUID_DSP_AUTORECONF = YES + +LIQUID_DSP_CONF_ENV = \ + ax_cv_have_mmx_ext=$(if $(BR2_X86_CPU_HAS_MMX),yes,no) \ + ax_cv_have_mmx_cpu_ext=$(if $(BR2_X86_CPU_HAS_MMX),yes,no) \ + ax_cv_have_sse_ext=$(if $(BR2_X86_CPU_HAS_SSE),yes,no) \ + ax_cv_have_sse_cpu_ext=$(if $(BR2_X86_CPU_HAS_SSE),yes,no) \ + ax_cv_have_sse2_ext=$(if $(BR2_X86_CPU_HAS_SSE2),yes,no) \ + ax_cv_have_sse2_cpu_ext=$(if $(BR2_X86_CPU_HAS_SSE2),yes,no) \ + ax_cv_have_sse3_ext=$(if $(BR2_X86_CPU_HAS_SSE3),yes,no) \ + ax_cv_have_sse3_cpu_ext=$(if $(BR2_X86_CPU_HAS_SSE3),yes,no) \ + ax_cv_have_ssse3_ext=$(if $(BR2_X86_CPU_HAS_SSSE3),yes,no) \ + ax_cv_have_ssse3_cpu_ext=$(if $(BR2_X86_CPU_HAS_SSSE3),yes,no) \ + ax_cv_have_sse41_ext=$(if $(BR2_X86_CPU_HAS_SSE4),yes,no) \ + ax_cv_have_sse41_cpu_ext=$(if $(BR2_X86_CPU_HAS_SSE4),yes,no) \ + ax_cv_have_sse42_ext=$(if $(BR2_X86_CPU_HAS_SSE42),yes,no) \ + ax_cv_have_sse42_cpu_ext=$(if $(BR2_X86_CPU_HAS_SSE42),yes,no) \ + ax_cv_have_avx_ext=$(if $(BR2_X86_CPU_HAS_AVX),yes,no) \ + ax_cv_have_avx_cpu_ext=$(if $(BR2_X86_CPU_HAS_AVX),yes,no) \ + ax_cv_have_avx2_ext=$(if $(BR2_X86_CPU_HAS_AVX2),yes,no) \ + ax_cv_have_avx2_cpu_ext=$(if $(BR2_X86_CPU_HAS_AVX2),yes,no) + +LIQUID_DSP_CFLAGS = $(TARGET_CFLAGS) +LIQUID_DSP_LDFLAGS = $(TARGET_LDFLAGS) + +# Speed over accuracy trade off +ifeq ($(BR2_PACKAGE_LIQUID_DSP_FAST),y) +LIQUID_DSP_CFLAGS += -ffast-math +endif + +# use FFTW instead of built-in FFT +ifeq ($(BR2_PACKAGE_FFTW_SINGLE),y) +LIQUID_DSP_LDFLAGS += -lfftw3f +LIQUID_DSP_DEPENDENCIES += fftw-single +endif + +# disable altivec, it has build issues +ifeq ($(BR2_powerpc)$(BR2_powerpc64)$(BR2_powerpc64le),y) +LIQUID_DSP_SIMDOVERRIDE = y +endif + +# Upstream expects NEON on all ARM CPUs by default +ifeq ($(BR2_arm):$(BR2_ARM_FPU_NEON),y:) +LIQUID_DSP_SIMDOVERRIDE = y +endif + +ifeq ($(LIQUID_DSP_SIMDOVERRIDE),y) +LIQUID_DSP_CONF_OPTS += --enable-simdoverride +# Do not add an else-clause to pass --disable-simdoverride, as it is +# non-functional, and behaves as --enable-simdoverride +endif + +LIQUID_DSP_CONF_OPTS += \ + CFLAGS="$(LIQUID_DSP_CFLAGS)" \ + LDFLAGS="$(LIQUID_DSP_LDFLAGS)" + +$(eval $(autotools-package)) diff --git a/package/lirc-tools/0001-plugins-devinput.c-fix-build-with-musl-1.2.0.patch b/package/lirc-tools/0001-plugins-devinput.c-fix-build-with-musl-1.2.0.patch new file mode 100644 index 00000000..e4c02cf4 --- /dev/null +++ b/package/lirc-tools/0001-plugins-devinput.c-fix-build-with-musl-1.2.0.patch @@ -0,0 +1,42 @@ +From 74909db0342c7aff29e15972c9928f3bef56d5a6 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 21 Apr 2020 12:14:13 +0200 +Subject: [PATCH] plugins/devinput.c: fix build with musl 1.2.0 + +time element is deprecated on new input_event structure in kernel's +input.h [1] + +[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f + +Signed-off-by: Fabrice Fontaine +--- + plugins/devinput.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/plugins/devinput.c b/plugins/devinput.c +index 77828b44..e5a52e42 100644 +--- a/plugins/devinput.c ++++ b/plugins/devinput.c +@@ -51,6 +51,10 @@ + #define LONG(x) ((x) / BITS_PER_LONG) + #define test_bit(bit, array) ((array[LONG(bit)] >> OFF(bit)) & 1) + ++#ifndef input_event_sec ++#define input_event_sec time.tv_sec ++#define input_event_usec time.tv_usec ++#endif + + static const logchannel_t logchannel = LOG_DRIVER; + +@@ -458,7 +462,7 @@ char* devinput_rec(struct ir_remote* remotes) + return 0; + } + +- log_trace("time %ld.%06ld type %d code %d value %d", event.time.tv_sec, event.time.tv_usec, event.type, ++ log_trace("time %ld.%06ld type %d code %d value %d", event.input_event_sec, event.input_event_usec, event.type, + event.code, event.value); + + value = (unsigned)event.value; +-- +2.25.1 + diff --git a/package/lirc-tools/0002-configure-add-disable-doc-option.patch b/package/lirc-tools/0002-configure-add-disable-doc-option.patch new file mode 100644 index 00000000..fab485ff --- /dev/null +++ b/package/lirc-tools/0002-configure-add-disable-doc-option.patch @@ -0,0 +1,52 @@ +From e9d5cbc01e3c0d6a31e2dba2f224b7f3dd21db37 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 23 Oct 2022 16:10:50 +0200 +Subject: [PATCH] configure: add --disable-doc option + +Allow the user to disable documentation through --disable-doc + +Signed-off-by: Fabrice Fontaine +--- + Makefile.am | 6 +++++- + configure.ac | 8 ++++++++ + 2 files changed, 13 insertions(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 6718af13..58a321d8 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -45,7 +45,11 @@ if WITH_SYSTEMDSYSTEMUNITDIR + SYSTEMD_DIR = systemd + endif + +-SUBDIRS = lib daemons tools plugins configs doc $(SYSTEMD_DIR) ++if HAVE_DOC ++ DOC_DIR = doc ++endif ++ ++SUBDIRS = lib daemons tools plugins configs $(DOC_DIR) $(SYSTEMD_DIR) + + if INSTALL_ETC + +diff --git a/configure.ac b/configure.ac +index d28c6732..f3384c95 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -486,6 +486,14 @@ AC_ARG_VAR(SETUPTOOLS_ENV, + ) + + ++AC_ARG_ENABLE(doc, ++ [ --enable-doc Build and install documentation (default=yes)], ++ [ enable_doc="${enableval}" ], ++ [ enable_doc=yes] ++) ++AM_CONDITIONAL([HAVE_DOC], [test x$enable_doc = xyes]) ++ ++ + suffix=$(echo "$VERSION" | sed 's/.*-//') + AM_CONDITIONAL(DEVEL, [test x$suffix = xdevel]) + +-- +2.35.1 + diff --git a/package/lirc-tools/Config.in b/package/lirc-tools/Config.in new file mode 100644 index 00000000..6eaf8288 --- /dev/null +++ b/package/lirc-tools/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_LIRC_TOOLS + bool "lirc-tools" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + # dlopen() + depends on !BR2_STATIC_LIBS + help + LIRC is a package that supports receiving and sending IR + signals of the most common IR remote controls. It contains a + daemon that decodes and sends IR signals, a mouse daemon + that translates IR signals to mouse movements and a couple + of user programs that allow to control your computer with a + remote control. + + It requires the kernel LIRC interface driver, make sure to + enable the kernel drivers to support your hardware. + + http://www.lirc.org/ + +comment "lirc-tools needs a toolchain w/ threads, dynamic library, C++" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \ + || !BR2_INSTALL_LIBSTDCPP diff --git a/package/lirc-tools/S25lircd b/package/lirc-tools/S25lircd new file mode 100644 index 00000000..7a0ec2f6 --- /dev/null +++ b/package/lirc-tools/S25lircd @@ -0,0 +1,38 @@ +#!/bin/sh +# +# Start lirc +# +# Support for remotes - Add remotes to /etc/lirc/lircd.conf.d/ +# + +start() { + printf "Starting lirc: " + mkdir -p /var/run/lirc + ln -sf /var/run/lirc/lircd /dev/lircd + start-stop-daemon -b -S -q -m -p /var/run/lirc.pid --exec /usr/sbin/lircd -- -n -O /etc/lirc/lirc_options.conf + echo "OK" +} + +stop() { + printf "Stopping lirc: " + start-stop-daemon -K -q -p /var/run/lirc.pid + echo "OK" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/package/lirc-tools/lirc-tools.hash b/package/lirc-tools/lirc-tools.hash new file mode 100644 index 00000000..4808508c --- /dev/null +++ b/package/lirc-tools/lirc-tools.hash @@ -0,0 +1,6 @@ +# hash from https://sourceforge.net/projects/lirc/files/LIRC/0.10.2/ +sha1 02092890205891b6de5a699294485a1eedba46c5 lirc-0.10.2.tar.bz2 +md5 cb96cfb0af8067c0062e2f5a100f426a lirc-0.10.2.tar.bz2 +# Locally computed +sha256 3d44ec8274881cf262f160805641f0827ffcc20ade0d85e7e6f3b90e0d3d222a lirc-0.10.2.tar.bz2 +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/lirc-tools/lirc-tools.mk b/package/lirc-tools/lirc-tools.mk new file mode 100644 index 00000000..a3ad6bd5 --- /dev/null +++ b/package/lirc-tools/lirc-tools.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# lirc-tools +# +################################################################################ + +LIRC_TOOLS_VERSION = 0.10.2 +LIRC_TOOLS_SOURCE = lirc-$(LIRC_TOOLS_VERSION).tar.bz2 +LIRC_TOOLS_SITE = http://downloads.sourceforge.net/project/lirc/LIRC/$(LIRC_TOOLS_VERSION) +LIRC_TOOLS_LICENSE = GPL-2.0+ +LIRC_TOOLS_LICENSE_FILES = COPYING +LIRC_TOOLS_SELINUX_MODULES = lircd +LIRC_TOOLS_DEPENDENCIES = host-libxslt host-pkgconf host-python3 +LIRC_TOOLS_INSTALL_STAGING = YES +# Patching configure.ac and Makefile.am +LIRC_TOOLS_AUTORECONF = YES + +LIRC_TOOLS_CONF_ENV = XSLTPROC=yes HAVE_WORKING_POLL=yes +LIRC_TOOLS_CONF_OPTS = --without-x --enable-devinput --enable-uinput + +ifeq ($(BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4),y) +LIRC_TOOLS_CONF_ENV += \ + DEVINPUT_HEADER=$(STAGING_DIR)/usr/include/linux/input-event-codes.h +else +LIRC_TOOLS_CONF_ENV += \ + DEVINPUT_HEADER=$(STAGING_DIR)/usr/include/linux/input.h +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +LIRC_TOOLS_DEPENDENCIES += udev +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +LIRC_TOOLS_DEPENDENCIES += alsa-lib +endif + +ifeq ($(BR2_PACKAGE_LIBUSB_COMPAT),y) +LIRC_TOOLS_DEPENDENCIES += libusb-compat +endif + +ifeq ($(BR2_PACKAGE_PORTAUDIO),y) +LIRC_TOOLS_DEPENDENCIES += portaudio +endif + +ifeq ($(BR2_PACKAGE_LIBFTDI1),y) +LIRC_TOOLS_DEPENDENCIES += libftdi1 +endif + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +LIRC_TOOLS_DEPENDENCIES += python3 host-python-setuptools +LIRC_TOOLS_MAKE_ENV += \ + CC="$(TARGET_CC)" \ + SETUPTOOLS_ENV='$(PKG_PYTHON_SETUPTOOLS_ENV)' +endif + +define LIRC_TOOLS_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/lirc-tools/S25lircd \ + $(TARGET_DIR)/etc/init.d/S25lircd +endef + +$(eval $(autotools-package)) diff --git a/package/lite/0001-dfbspy-stat.patch b/package/lite/0001-dfbspy-stat.patch new file mode 100644 index 00000000..5ca73691 --- /dev/null +++ b/package/lite/0001-dfbspy-stat.patch @@ -0,0 +1,53 @@ +From upstream git (git://git.directfb.org/git/directfb/libs/LiTE.git) + +From ffe0ce78327a63ddb1265328ea9b5b03acdca019 Mon Sep 17 00:00:00 2001 +From: Denis Oliver Kropp +Date: Fri, 1 Apr 2011 20:20:26 +0200 +Subject: [PATCH] dfbspy: Build fix for dfbspy example. + +--- + examples/dfbspy.c | 20 ++++++++++---------- + 1 files changed, 10 insertions(+), 10 deletions(-) + +diff --git a/examples/dfbspy.c b/examples/dfbspy.c +index 5f36f0b..c7f9725 100644 +--- a/examples/dfbspy.c ++++ b/examples/dfbspy.c +@@ -89,9 +89,9 @@ read_stat( FusionStat *stat, int world ) + + /**************************************************************************************************/ + +-#define CALC(x) stat.x = (int)(((s.x - last_stat.x) * 1000 / (float) diff) + 0.5f) ++#define CALC(x) stats.x = (int)(((s.x - last_stat.x) * 1000 / (float) diff) + 0.5f) + +-static FusionStat last_stat, stat; ++static FusionStat last_stat, stats; + static long long last_millis; + + static int +@@ -145,14 +145,14 @@ static const struct { + void (*update)( LiteLabel *label, void *ctx ); + void *ctx; + } list[] = { +- { "lease/purchase", update_number, &stat.lease_purchase }, +- { "cede", update_number, &stat.cede }, +- { "attach", update_number, &stat.attach }, +- { "detach", update_number, &stat.detach }, +- { "ref up", update_number, &stat.ref_up }, +- { "ref down", update_number, &stat.ref_down }, +- { "prevail/swoop", update_number, &stat.prevail_swoop }, +- { "dismiss", update_number, &stat.dismiss } ++ { "lease/purchase", update_number, &stats.lease_purchase }, ++ { "cede", update_number, &stats.cede }, ++ { "attach", update_number, &stats.attach }, ++ { "detach", update_number, &stats.detach }, ++ { "ref up", update_number, &stats.ref_up }, ++ { "ref down", update_number, &stats.ref_down }, ++ { "prevail/swoop", update_number, &stats.prevail_swoop }, ++ { "dismiss", update_number, &stats.dismiss } + }; + + #define NUM_LIST (sizeof(list)/sizeof(list[0])) +-- +1.7.6.3 + diff --git a/package/lite/0002-no-tests.patch b/package/lite/0002-no-tests.patch new file mode 100644 index 00000000..3a471865 --- /dev/null +++ b/package/lite/0002-no-tests.patch @@ -0,0 +1,11 @@ +--- a/Makefile.in.orig 2008-07-07 13:07:12.000000000 +0200 ++++ b/Makefile.in 2008-07-07 13:07:05.000000000 +0200 +@@ -202,7 +202,7 @@ + target_vendor = @target_vendor@ + top_builddir = @top_builddir@ + top_srcdir = @top_srcdir@ +-SUBDIRS = data fonts lite leck examples tests ++SUBDIRS = data fonts lite leck examples + EXTRA_DIST = TODO lite.pc.in leck.pc.in + pkgconfigdir = $(libdir)/pkgconfig + pkgconfig_DATA = lite.pc leck.pc diff --git a/package/lite/0003-pkg-config.patch b/package/lite/0003-pkg-config.patch new file mode 100644 index 00000000..cdd24162 --- /dev/null +++ b/package/lite/0003-pkg-config.patch @@ -0,0 +1,22 @@ +From 7982cccbb6ad58f3802bb266467290200d130a48 Mon Sep 17 00:00:00 2001 +From: Ville Syrjala +Date: Sat, 27 Nov 2010 01:14:25 +0200 +Subject: [PATCH] Too many '\' characters in the .pc file + +--- + lite.pc.in | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/lite.pc.in b/lite.pc.in +index 48eb969..3a21eaa 100644 +--- a/lite.pc.in ++++ b/lite.pc.in +@@ -9,4 +9,4 @@ Description: "LiTE" is a Toolkit Engine + Requires: directfb >= @DFB_REQUIRED_VERSION@ + Version: @VERSION@ + Libs: -L${libdir} -llite +-Cflags: -I${includedir} -DLITEFONTDIR=\\\"@LITEFONTDIR@\\\" ++Cflags: -I${includedir} -DLITEFONTDIR=\"@LITEFONTDIR@\" +-- +1.7.1 + diff --git a/package/lite/Config.in b/package/lite/Config.in new file mode 100644 index 00000000..62cd21e5 --- /dev/null +++ b/package/lite/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LITE + bool "LiTE (toolbox engine)" + depends on BR2_PACKAGE_DIRECTFB + help + LiTE stands for LiTE is a Toolbox Engine. + Its role is to facilitate the functions of DirectFB so that a + toolbox could be written on top of DirectFB with less effort. + As such LiTE has abstractions for the underlying graphics and + event systems. + + See http://www.directfb.org/wiki/index.php/LiTE:Architecture diff --git a/package/lite/lite.hash b/package/lite/lite.hash new file mode 100644 index 00000000..13a494b7 --- /dev/null +++ b/package/lite/lite.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1b784cf595c3d5313e3705db210119f77d48826dbc7fcf6328af83a1270c2264 LiTE-0.8.10.tar.gz +sha256 512d2d21b6b3384ba64781abb0208a1b87740bc31e2df48e2b206ddb7e4d5779 COPYING diff --git a/package/lite/lite.mk b/package/lite/lite.mk new file mode 100644 index 00000000..ddb55d46 --- /dev/null +++ b/package/lite/lite.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# lite +# +################################################################################ + +LITE_VERSION = 0.8.10 +LITE_SOURCE = LiTE-$(LITE_VERSION).tar.gz +LITE_SITE = http://www.directfb.org/downloads/Libs +LITE_INSTALL_STAGING = YES +LITE_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) LDFLAGS=-L$(STAGING_DIR)/usr/lib install +LITE_CONF_ENV = DFB_CFLAGS=-I$(STAGING_DIR)/usr/include/directfb +LITE_DEPENDENCIES = directfb +LITE_LICENSE = LGPL-2.1+ +LITE_LICENSE_FILES = COPYING + +define LITE_FINALIZE_INSTALL + $(INSTALL) -d $(TARGET_DIR)/usr/share/LiTE/examples/ + $(INSTALL) -d $(TARGET_DIR)/usr/share/fonts/truetype/ + $(INSTALL) -m0644 $(@D)/data/*.png $(TARGET_DIR)/usr/share/LiTE/ + $(INSTALL) -m0644 $(@D)/examples/*.png $(TARGET_DIR)/usr/share/LiTE/examples/ + $(INSTALL) -m0644 $(@D)/fonts/*.ttf $(TARGET_DIR)/usr/share/fonts/truetype/ +endef + +LITE_POST_INSTALL_TARGET_HOOKS += LITE_FINALIZE_INSTALL + +$(eval $(autotools-package)) diff --git a/package/live555/0001-Add-a-pkg-config-file-for-the-shared-libraries.patch b/package/live555/0001-Add-a-pkg-config-file-for-the-shared-libraries.patch new file mode 100644 index 00000000..a2ae1c18 --- /dev/null +++ b/package/live555/0001-Add-a-pkg-config-file-for-the-shared-libraries.patch @@ -0,0 +1,66 @@ +From: Benjamin Drung +Date: Sat, 16 Sep 2017 11:22:03 +0200 +Subject: Add a pkg-config file for the shared libraries + +This patch was downloaded from Debian +https://sources.debian.org/src/liblivemedia/2018.08.05-1/debian/patches/0002-Add-a-pkg-config-file-for-the-shared-libraries.patch/ + +The local/ part of PREXIX and LIBDIR was removed to fit into buildroot. + +A similar version of this patch is part of the vlc source repo: +http://git.videolan.org/?p=vlc.git;a=blob;f=contrib/src/live555/add-pkgconfig-file.patch;hb=HEAD + +Upstream status: Rejected +http://lists.live555.com/pipermail/live-devel/2013-January/016374.html +http://lists.live555.com/pipermail/live-devel/2013-January/016375.html + +Signed-off-by: Bernd Kuhls +--- + Makefile.head | 3 +++ + Makefile.tail | 7 ++++++- + live555.pc.in | 9 +++++++++ + 3 files changed, 18 insertions(+), 1 deletion(-) + create mode 100644 live555.pc.in + +diff --git a/Makefile.head b/Makefile.head +index 458c54c..1571037 100644 +--- a/Makefile.head ++++ b/Makefile.head +@@ -1 +1,4 @@ ++PREFIX = /usr ++LIBDIR = /usr/lib ++VERSION = $(shell grep LIVEMEDIA_LIBRARY_VERSION_STRING liveMedia/include/liveMedia_version.hh | sed 's/.*"\([^"]*\)".*/\1/') + ##### Change the following for your environment: +diff --git a/Makefile.tail b/Makefile.tail +index fc594ea..a20a527 100644 +--- a/Makefile.tail ++++ b/Makefile.tail +@@ -22,7 +22,12 @@ all: + @echo + @echo "For more information about this source code (including your obligations under the LGPL), please see our FAQ at http://live555.com/liveMedia/faq.html" + +-install: ++install_shared_libraries: ++ install -d $(DESTDIR)$(LIBDIR)/pkgconfig ++ sed "s#@PREFIX@#$(PREFIX)#;s#@LIBDIR@#$(LIBDIR)#;s#@VERSION@#$(VERSION)#" live555.pc.in > $(DESTDIR)$(LIBDIR)/pkgconfig/live555.pc ++ chmod 644 $(DESTDIR)$(LIBDIR)/pkgconfig/live555.pc ++ ++install: $(INSTALL2) + cd $(LIVEMEDIA_DIR) ; $(MAKE) install + cd $(GROUPSOCK_DIR) ; $(MAKE) install + cd $(USAGE_ENVIRONMENT_DIR) ; $(MAKE) install +diff --git a/live555.pc.in b/live555.pc.in +new file mode 100644 +index 0000000..3736944 +--- /dev/null ++++ b/live555.pc.in +@@ -0,0 +1,9 @@ ++prefix=@PREFIX@ ++libdir=@LIBDIR@ ++includedir=${prefix}/include ++ ++Name: live555 ++Description: multimedia RTSP streaming library ++Version: @VERSION@ ++Cflags: -I${includedir}/liveMedia -I${includedir}/groupsock -I${includedir}/BasicUsageEnvironment -I${includedir}/UsageEnvironment ++Libs: -L${libdir} -lliveMedia -lgroupsock -lBasicUsageEnvironment -lUsageEnvironment diff --git a/package/live555/Config.in b/package/live555/Config.in new file mode 100644 index 00000000..dbd9dfd3 --- /dev/null +++ b/package/live555/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIVE555 + bool "live555" + depends on BR2_INSTALL_LIBSTDCPP + help + LIVE555 Streaming Media forms a set of C++ libraries for + multimedia streaming, using open standard protocols + (RTP/RTCP, RTSP, SIP). + + http://www.live555.com/liveMedia/ + +comment "live555 needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/live555/live555.hash b/package/live555/live555.hash new file mode 100644 index 00000000..d4fa93d0 --- /dev/null +++ b/package/live555/live555.hash @@ -0,0 +1,5 @@ +# From http://www.live555.com/liveMedia/public/live555-latest-md5.txt +md5 3c1992b0e9b871bcad7491a3da541781 live.2021.05.03.tar.gz +# Locally generated +sha256 ae73241f9cc4ab740d60737c0438d62a7635af3822de5d84acf275793de42029 live.2021.05.03.tar.gz +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 COPYING.LESSER diff --git a/package/live555/live555.mk b/package/live555/live555.mk new file mode 100644 index 00000000..56ed7057 --- /dev/null +++ b/package/live555/live555.mk @@ -0,0 +1,74 @@ +################################################################################ +# +# live555 +# +################################################################################ + +LIVE555_VERSION = 2021.05.03 +LIVE555_SOURCE = live.$(LIVE555_VERSION).tar.gz +LIVE555_SITE = http://www.live555.com/liveMedia/public +# There is a COPYING file with the GPL-3.0 license text, but none of +# the source files appear to be released under GPL-3.0, and the +# project web site says it's licensed under the LGPL: +# http://live555.com/liveMedia/faq.html#copyright-and-license +LIVE555_LICENSE = LGPL-3.0+ +LIVE555_LICENSE_FILES = COPYING.LESSER +LIVE555_CPE_ID_VENDOR = live555 +LIVE555_CPE_ID_PRODUCT = streaming_media +LIVE555_INSTALL_STAGING = YES + +LIVE555_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_STATIC_LIBS),y) +LIVE555_CONFIG_TARGET = linux +LIVE555_LIBRARY_LINK = $(TARGET_AR) cr +else +LIVE555_CONFIG_TARGET = linux-with-shared-libraries +LIVE555_LIBRARY_LINK = $(TARGET_CC) -o +LIVE555_CFLAGS += -fPIC +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIVE555_DEPENDENCIES += host-pkgconf openssl +LIVE555_CONSOLE_LIBS = `$(PKG_CONFIG_HOST_BINARY) --libs openssl` +# passed to ar for static linking, which gets confused by -L +ifneq ($(BR2_STATIC_LIBS),y) +LIVE555_LIVEMEDIA_LIBS = $(LIVE555_CONSOLE_LIBS) +endif +else +LIVE555_CFLAGS += -DNO_OPENSSL +endif + +ifneq ($(BR2_ENABLE_LOCALE),y) +LIVE555_CFLAGS += -DLOCALE_NOT_USED +endif + +define LIVE555_CONFIGURE_CMDS + echo 'COMPILE_OPTS = $$(INCLUDES) -I. -DSOCKLEN_T=socklen_t $(LIVE555_CFLAGS)' >> $(@D)/config.$(LIVE555_CONFIG_TARGET) + echo 'C_COMPILER = $(TARGET_CC)' >> $(@D)/config.$(LIVE555_CONFIG_TARGET) + echo 'CPLUSPLUS_COMPILER = $(TARGET_CXX)' >> $(@D)/config.$(LIVE555_CONFIG_TARGET) + + echo 'LINK = $(TARGET_CXX) -o' >> $(@D)/config.$(LIVE555_CONFIG_TARGET) + echo 'LINK_OPTS = -L. $(TARGET_LDFLAGS)' >> $(@D)/config.$(LIVE555_CONFIG_TARGET) + echo 'PREFIX = /usr' >> $(@D)/config.$(LIVE555_CONFIG_TARGET) + # Must have a whitespace at the end of LIBRARY_LINK, otherwise static link + # fails + echo 'LIBRARY_LINK = $(LIVE555_LIBRARY_LINK) ' >> $(@D)/config.$(LIVE555_CONFIG_TARGET) + echo 'LIBS_FOR_CONSOLE_APPLICATION = $(LIVE555_CONSOLE_LIBS)' >> $(@D)/config.$(LIVE555_CONFIG_TARGET) + echo 'LIBS_FOR_LIVEMEDIA_LIB = $(LIVE555_LIVEMEDIA_LIBS)' >> $(@D)/config.$(LIVE555_CONFIG_TARGET) + (cd $(@D); ./genMakefiles $(LIVE555_CONFIG_TARGET)) +endef + +define LIVE555_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) all +endef + +define LIVE555_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(STAGING_DIR) -C $(@D) install +endef + +define LIVE555_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) PREFIX=/usr -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/ljlinenoise/Config.in b/package/ljlinenoise/Config.in new file mode 100644 index 00000000..964183f1 --- /dev/null +++ b/package/ljlinenoise/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LJLINENOISE + bool "ljlinenoise" + # ljsyscall is specifically for LuaJIT, not Lua. + depends on BR2_PACKAGE_LUAJIT + select BR2_PACKAGE_LJSYSCALL # runtime + help + ljlinenoise is a pure LuaJIT port of linenoise, + a small alternative to readline and libedit. + + https://fperrad.frama.io/ljlinenoise/ + +comment "ljlinenoise needs LuaJIT" + depends on !BR2_PACKAGE_LUAJIT diff --git a/package/ljlinenoise/ljlinenoise.hash b/package/ljlinenoise/ljlinenoise.hash new file mode 100644 index 00000000..a9e9c6d5 --- /dev/null +++ b/package/ljlinenoise/ljlinenoise.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 7a6c4142b0096106f498d7ee4bea5bf5086c076d1f071893441b8e5c0665fb47 ljlinenoise-0.1.3-1.src.rock +sha256 9b17730cb34ea591fb39688e70bd2be9c13d11b9db1c813b4ae68e3da9b7093e ljlinenoise-0.1.3/COPYRIGHT diff --git a/package/ljlinenoise/ljlinenoise.mk b/package/ljlinenoise/ljlinenoise.mk new file mode 100644 index 00000000..f021d938 --- /dev/null +++ b/package/ljlinenoise/ljlinenoise.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# ljlinenoise +# +################################################################################ + +LJLINENOISE_VERSION = 0.1.3-1 +LJLINENOISE_LICENSE = MIT +LJLINENOISE_LICENSE_FILES = $(LJLINENOISE_SUBDIR)/COPYRIGHT + +$(eval $(luarocks-package)) diff --git a/package/ljsyscall/Config.in b/package/ljsyscall/Config.in new file mode 100644 index 00000000..313f24df --- /dev/null +++ b/package/ljsyscall/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LJSYSCALL + bool "ljsyscall" + # ljsyscall is specifically for LuaJIT, not Lua. + depends on BR2_PACKAGE_LUAJIT + help + An FFI implementation of the Linux and NetBSD kernel ABIs for + LuaJIT. + + http://www.myriabit.com/ljsyscall/ + +comment "ljsyscall needs LuaJIT" + depends on !BR2_PACKAGE_LUAJIT diff --git a/package/ljsyscall/ljsyscall.hash b/package/ljsyscall/ljsyscall.hash new file mode 100644 index 00000000..e9aba33d --- /dev/null +++ b/package/ljsyscall/ljsyscall.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 6e29503609bd966fed33dec1a1571b36bbdbc37bf1a828af6722ed0ead192ff1 ljsyscall-0.12.tar.gz +sha256 c8e21d8e74afbe26c2c8e69b42327d3b48e602117f9ef7b22c31ddca6f46b1f2 COPYRIGHT diff --git a/package/ljsyscall/ljsyscall.mk b/package/ljsyscall/ljsyscall.mk new file mode 100644 index 00000000..b847739a --- /dev/null +++ b/package/ljsyscall/ljsyscall.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# ljsyscall +# +################################################################################ + +LJSYSCALL_VERSION = 0.12 +LJSYSCALL_SITE = $(call github,justincormack,ljsyscall,v$(LJSYSCALL_VERSION)) +LJSYSCALL_LICENSE = MIT +LJSYSCALL_LICENSE_FILES = COPYRIGHT + +# dispatch all architectures of LuaJIT +ifeq ($(BR2_i386),y) +LJSYSCALL_ARCH = x86 +else ifeq ($(BR2_x86_64),y) +LJSYSCALL_ARCH = x64 +else ifeq ($(BR2_powerpc),y) +LJSYSCALL_ARCH = ppc +else ifeq ($(BR2_arm)$(BR2_armeb),y) +LJSYSCALL_ARCH = arm +else ifeq ($(BR2_aarch64)$(BR2_aarch64_be),y) +LJSYSCALL_ARCH = arm64 +else ifeq ($(BR2_mips)$(BR2_mipsel),y) +LJSYSCALL_ARCH = mips +else +LJSYSCALL_ARCH = $(BR2_ARCH) +endif + +LJSYSCALL_TARGET_DIR = $(TARGET_DIR)/usr/share/lua/$(LUAINTERPRETER_ABIVER) + +define LJSYSCALL_INSTALL_TARGET_CMDS + $(INSTALL) -d $(LJSYSCALL_TARGET_DIR)/syscall + $(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/ $(@D)/syscall.lua + $(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/syscall $(@D)/syscall/*.lua + + $(INSTALL) -d $(LJSYSCALL_TARGET_DIR)/syscall/linux/$(LJSYSCALL_ARCH) + $(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/syscall/linux/ $(@D)/syscall/linux/*.lua + $(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/syscall/linux/$(LJSYSCALL_ARCH) $(@D)/syscall/linux/$(LJSYSCALL_ARCH)/*.lua + + $(INSTALL) -d $(LJSYSCALL_TARGET_DIR)/syscall/shared + $(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/syscall/shared/ $(@D)/syscall/shared/*.lua +endef + +$(eval $(generic-package)) diff --git a/package/lksctp-tools/Config.in b/package/lksctp-tools/Config.in new file mode 100644 index 00000000..9c95ef5e --- /dev/null +++ b/package/lksctp-tools/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LKSCTP_TOOLS + bool "lksctp-tools" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS # dlopen() + help + The lksctp-tools project provides a Linux user space library + for SCTP (libsctp) including C language header files + (netinet/sctp.h) for accessing SCTP specific application + programming interfaces not provided by the standard sockets, + and also some helper utilities around SCTP. + + http://lksctp.sourceforge.net/ + +comment "lksctp-tools needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/lksctp-tools/lksctp-tools.hash b/package/lksctp-tools/lksctp-tools.hash new file mode 100644 index 00000000..b3a1f59d --- /dev/null +++ b/package/lksctp-tools/lksctp-tools.hash @@ -0,0 +1,6 @@ +# From https://sourceforge.net/projects/lksctp/files/lksctp-tools/ +md5 0fbb288c9f9625b88d3ab21c9ed9f011 lksctp-tools-1.0.19.tar.gz +sha1 d410a596485c38464177a38ae7c7081444e6589e lksctp-tools-1.0.19.tar.gz +# Locally computed +sha256 dee5f35e583183abb9212938643ecb2d858fd89e2e286f4b1d903f65d49d6c76 COPYING.lib +sha256 cc2a6651c315b233ebc110b49ea3c6452eff9a28f8bc051ffd2bb92a8dcfa3d2 COPYING diff --git a/package/lksctp-tools/lksctp-tools.mk b/package/lksctp-tools/lksctp-tools.mk new file mode 100644 index 00000000..af86a285 --- /dev/null +++ b/package/lksctp-tools/lksctp-tools.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# lksctp-tools +# +################################################################################ + +LKSCTP_TOOLS_VERSION = 1.0.19 +LKSCTP_TOOLS_SITE = $(call github,sctp,lksctp-tools,v$(LKSCTP_TOOLS_VERSION)) +LKSCTP_TOOLS_INSTALL_STAGING = YES +# configure not shipped +LKSCTP_TOOLS_AUTORECONF = YES +LKSCTP_TOOLS_LICENSE = LGPL-2.1 (library), GPL-2.0+ (programs) +LKSCTP_TOOLS_LICENSE_FILES = COPYING.lib COPYING +LKSCTP_TOOLS_CONF_OPTS = --disable-tests + +# Cleanup installed target source code +define LKSCTP_TOOLS_CLEANUP_TARGET + rm -rf $(TARGET_DIR)/usr/share/lksctp-tools +endef +LKSCTP_TOOLS_POST_INSTALL_TARGET_HOOKS += LKSCTP_TOOLS_CLEANUP_TARGET + +$(eval $(autotools-package)) diff --git a/package/lldpd/Config.in b/package/lldpd/Config.in new file mode 100644 index 00000000..3e044698 --- /dev/null +++ b/package/lldpd/Config.in @@ -0,0 +1,73 @@ +config BR2_PACKAGE_LLDPD + bool "lldpd" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBEVENT + help + lldpd is a 802.1ab implementation (LLDP) to help you locate + neighbors of all your equipments. + + LLDP allows you to know exactly on which port is a server + (and reciprocally). + + LLDP is an industry standard protocol designed to supplant + proprietary Link-Layer protocols such as EDP or CDP. The + goal of LLDP is to provide an inter-vendor compatible + mechanism to deliver Link-Layer notifications to adjacent + network devices. + + lldpd is an ISC-licensed implementation of LLDP for various + Unixes. It also supports some proprietary protocols. + + https://lldpd.github.io/ + +if BR2_PACKAGE_LLDPD + +config BR2_PACKAGE_LLDPD_CDP + bool "CDP" + default y + help + Enable Cisco Discovery Protocol + +config BR2_PACKAGE_LLDPD_FDP + bool "FDP" + default y + help + Enable Foundry Discovery Protocol + +config BR2_PACKAGE_LLDPD_EDP + bool "EDP" + default y + help + Enable Extreme Discovery Protocol + +config BR2_PACKAGE_LLDPD_SONMP + bool "SONMP" + default y + help + Enable SynOptics Network Management + +config BR2_PACKAGE_LLDPD_LLDPMED + bool "LLDP-MED" + default y + help + Enable LLDP-MED extension + +config BR2_PACKAGE_LLDPD_DOT1 + bool "DOT1" + default y + help + Enable Dot1 extension (VLAN stuff) + +config BR2_PACKAGE_LLDPD_DOT3 + bool "DOT3" + default y + help + Enable Dot3 extension (PHY stuff) + +config BR2_PACKAGE_LLDPD_CUSTOM_TLV + bool "Custom TLV" + default y + help + Enable Custom TLV support + +endif diff --git a/package/lldpd/S60lldpd b/package/lldpd/S60lldpd new file mode 100644 index 00000000..3dfa6c1a --- /dev/null +++ b/package/lldpd/S60lldpd @@ -0,0 +1,25 @@ +#!/bin/sh +# +# Controls lldpd. +# + +case $1 in + start) + printf "Starting lldpd: " + start-stop-daemon -S -q -p /var/run/lldpd.pid --exec /usr/sbin/lldpd + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping lldpd: " + start-stop-daemon -K -q -p /var/run/lldpd.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 + ;; +esac diff --git a/package/lldpd/lldpd.hash b/package/lldpd/lldpd.hash new file mode 100644 index 00000000..e798e2be --- /dev/null +++ b/package/lldpd/lldpd.hash @@ -0,0 +1,5 @@ +# Locally computed after checking gpg key +# https://media.luffy.cx/files/lldpd/lldpd-1.0.17.tar.gz.gpg +# using key AEF2348766F371C689A7360095A42FE8353525F9 +sha256 9343177f145d2bca66ef03d59528079d3f1663c624b1e2b9d08268efdc6127ce lldpd-1.0.17.tar.gz +sha256 0e96a5aea65f16e2239231ce4ab90497f8bc3bb8fe6abe9299aade4726ff7c8d LICENSE diff --git a/package/lldpd/lldpd.mk b/package/lldpd/lldpd.mk new file mode 100644 index 00000000..34e1c8c2 --- /dev/null +++ b/package/lldpd/lldpd.mk @@ -0,0 +1,69 @@ +################################################################################ +# +# lldpd +# +################################################################################ + +LLDPD_VERSION = 1.0.17 +LLDPD_SITE = https://media.luffy.cx/files/lldpd +LLDPD_DEPENDENCIES = \ + $(if $(BR2_PACKAGE_CHECK),check) \ + host-pkgconf \ + $(if $(BR2_PACKAGE_LIBCAP),libcap) \ + libevent \ + $(if $(BR2_PACKAGE_VALGRIND),valgrind) +LLDPD_LICENSE = ISC +LLDPD_LICENSE_FILES = LICENSE +LLDPD_CPE_ID_VALID = YES + +# Detection of c99 support in configure fails without WCHAR. To enable +# automatic detection of c99 support by configure, we need to enable +# WCHAR in toolchain. But actually we do not need WCHAR at lldpd +# runtime. So requesting WCHAR in toolchain just for automatic detection +# will be overkill. To solve this, explicitly -specify c99 here. +LLDPD_CONF_ENV = ac_cv_prog_cc_c99=-std=gnu99 + +LLDPD_CONF_OPTS = \ + --without-embedded-libevent \ + --without-seccomp \ + --without-libbsd \ + --disable-hardening \ + --disable-privsep \ + $(if $(BR2_PACKAGE_LLDPD_CDP),--enable-cdp,--disable-cdp) \ + $(if $(BR2_PACKAGE_LLDPD_FDP),--enable-fdp,--disable-fdp) \ + $(if $(BR2_PACKAGE_LLDPD_EDP),--enable-edp,--disable-edp) \ + $(if $(BR2_PACKAGE_LLDPD_SONMP),--enable-sonmp,--disable-sonmp) \ + $(if $(BR2_PACKAGE_LLDPD_LLDPMED),--enable-lldpmed,--disable-lldpmed) \ + $(if $(BR2_PACKAGE_LLDPD_DOT1),--enable-dot1,--disable-dot1) \ + $(if $(BR2_PACKAGE_LLDPD_DOT3),--enable-dot3,--disable-dot3) \ + $(if $(BR2_PACKAGE_LLDPD_CUSTOM_TLV),--enable-custom,--disable-custom) + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +LLDPD_CONF_OPTS += --with-xml +LLDPD_DEPENDENCIES += libxml2 +else +LLDPD_CONF_OPTS += --without-xml +endif + +ifeq ($(BR2_PACKAGE_NETSNMP),y) +LLDPD_CONF_OPTS += --with-snmp +LLDPD_DEPENDENCIES += netsnmp +LLDPD_CONF_ENV += \ + ac_cv_path_NETSNMP_CONFIG=$(STAGING_DIR)/usr/bin/net-snmp-config +else +LLDPD_CONF_OPTS += --without-snmp +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +LLDPD_CONF_OPTS += --with-readline +LLDPD_DEPENDENCIES += readline +else +LLDPD_CONF_OPTS += --without-readline +endif + +define LLDPD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/lldpd/S60lldpd \ + $(TARGET_DIR)/etc/init.d/S60lldpd +endef + +$(eval $(autotools-package)) diff --git a/package/llvm-project/clang/0001-lib-Driver-ToolChains-Gnu-Use-GCC_INSTALL_PREFIX-in-.patch b/package/llvm-project/clang/0001-lib-Driver-ToolChains-Gnu-Use-GCC_INSTALL_PREFIX-in-.patch new file mode 100644 index 00000000..ffdd5d18 --- /dev/null +++ b/package/llvm-project/clang/0001-lib-Driver-ToolChains-Gnu-Use-GCC_INSTALL_PREFIX-in-.patch @@ -0,0 +1,78 @@ +From fe21cede3939a435d62efbd5799547fab6af1b0a Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Mon, 5 Aug 2019 16:06:48 +0200 +Subject: [PATCH] lib/Driver/ToolChains/Gnu: Use GCC_INSTALL_PREFIX in the set + of prefixes for searching the gcc toolchain + +By default, the Gnu Toolchains driver is looking at the parent +directory while looking for the gcc toolchain when clang is installed +at "D.InstalledDir" + +But this doesn't work with Buildroot since the external +toolchain is installed in host/opt/ext-toolchain and the sysroot is +moved to host/-buildroot-linux-gnu/sysroot/ directory. + +We tried by setting GCC_INSTALL_PREFIX in clang.mk for host-clang +but it doesn't work since we already provide a sysroot [1]. + +Help the Gnu Toolchains driver by using GCC_INSTALL_PREFIX path. + +Since we want to be able to relocate the clang toolchain, +allow to use a relative path with GCC_INSTALL_PREFIX. + +Buildroot will provide such relative path by using: +HOST_CLANG_CONF_OPTS += -DGCC_INSTALL_PREFIX:PATH=`realpath --relative-to=$(HOST_DIR)/bin/ $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)` + +Doing so allow to use clang without providing additional search +paths with -B option on the clang's command line. + +[1] https://reviews.llvm.org/D49244 +[2] http://lists.busybox.net/pipermail/buildroot/2019-August/256204.html + +Signed-off-by: Romain Naour +Signed-off-by: Matthew Weber +--- +Pending, access to llvm mailing lists to submit it is pending. They +seem to be having issues with their listserv. +--- + lib/Driver/ToolChains/Gnu.cpp | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +diff --git a/lib/Driver/ToolChains/Gnu.cpp b/lib/Driver/ToolChains/Gnu.cpp +index 2ad45097dc..90d6b5b748 100644 +--- a/lib/Driver/ToolChains/Gnu.cpp ++++ b/lib/Driver/ToolChains/Gnu.cpp +@@ -1725,6 +1725,8 @@ void Generic_GCC::GCCInstallationDetector::init( + + Prefixes.push_back(std::string(GCCToolchainDir)); + } else { ++ StringRef GccIinstallPrefix = GCC_INSTALL_PREFIX; ++ + // If we have a SysRoot, try that first. + if (!D.SysRoot.empty()) { + Prefixes.push_back(D.SysRoot); +@@ -1734,6 +1736,21 @@ void Generic_GCC::GCCInstallationDetector::init( + // Then look for gcc installed alongside clang. + Prefixes.push_back(D.InstalledDir + "/.."); + ++ // Use GCC_INSTALL_PREFIX if provided by the buildsystem. ++ if (!GccIinstallPrefix.empty()) ++ { ++ if (llvm::sys::path::is_relative(GccIinstallPrefix)) ++ { ++ // Use a relative path to gcc from clang install path. ++ Prefixes.push_back(D.InstalledDir + "/" + GccIinstallPrefix.str()); ++ } ++ else ++ { ++ // Hardcode the absolute path provided by GCC_INSTALL_PREFIX. ++ Prefixes.push_back(GCC_INSTALL_PREFIX); ++ } ++ } ++ + // Next, look for prefix(es) that correspond to distribution-supplied gcc + // installations. + if (D.SysRoot.empty()) { +-- +2.20.1 + diff --git a/package/llvm-project/clang/Config.in b/package/llvm-project/clang/Config.in new file mode 100644 index 00000000..2e238887 --- /dev/null +++ b/package/llvm-project/clang/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_CLANG + bool "clang" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::shared_future + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR # std::wstring + depends on BR2_HOST_GCC_AT_LEAST_7 + select BR2_PACKAGE_LLVM + help + Clang is a C/C++, Objective C/C++ and OpenCL C front-end + for the LLVM compiler. + + http://clang.llvm.org + +comment "clang needs a toolchain w/ wchar, threads, C++, gcc >= 7, dynamic library, host gcc >= 7" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 \ + || BR2_STATIC_LIBS || !BR2_USE_WCHAR \ + || !BR2_HOST_GCC_AT_LEAST_7 + +comment "clang needs a toolchain not affected by GCC bug 64735" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/llvm-project/clang/clang.hash b/package/llvm-project/clang/clang.hash new file mode 100644 index 00000000..52c755cf --- /dev/null +++ b/package/llvm-project/clang/clang.hash @@ -0,0 +1,3 @@ +# locally calculated +sha256 96036052694e703d159c995bda203b59d1ff185c6879189b9eba837726e1738c clang-15.0.3.src.tar.xz +sha256 ebcd9bbf783a73d05c53ba4d586b8d5813dcdf3bbec50265860ccc885e606f47 LICENSE.TXT diff --git a/package/llvm-project/clang/clang.mk b/package/llvm-project/clang/clang.mk new file mode 100644 index 00000000..0bafd646 --- /dev/null +++ b/package/llvm-project/clang/clang.mk @@ -0,0 +1,137 @@ +################################################################################ +# +# clang +# +################################################################################ + +CLANG_VERSION_MAJOR = $(LLVM_PROJECT_VERSION_MAJOR) +CLANG_VERSION = $(LLVM_PROJECT_VERSION) +CLANG_SITE = $(LLVM_PROJECT_SITE) +CLANG_SOURCE = clang-$(CLANG_VERSION).src.tar.xz +CLANG_LICENSE = Apache-2.0 with exceptions +CLANG_LICENSE_FILES = LICENSE.TXT +CLANG_CPE_ID_VENDOR = llvm +CLANG_SUPPORTS_IN_SOURCE_BUILD = NO +CLANG_INSTALL_STAGING = YES + +HOST_CLANG_DEPENDENCIES = host-llvm host-libxml2 +CLANG_DEPENDENCIES = llvm host-clang + +# This option is needed, otherwise multiple shared libs +# (libclangAST.so, libclangBasic.so, libclangFrontend.so, etc.) will +# be generated. As a final shared lib containing all these components +# (libclang.so) is also generated, this resulted in the following +# error when trying to use tools that use libclang: +# $ CommandLine Error: Option 'track-memory' registered more than once! +# $ LLVM ERROR: inconsistency in registered CommandLine options +# By setting BUILD_SHARED_LIBS to OFF, we generate multiple static +# libraries (the same way as host's clang build) and finally +# libclang.so to be installed on the target. +HOST_CLANG_CONF_OPTS += -DBUILD_SHARED_LIBS=OFF +CLANG_CONF_OPTS += -DBUILD_SHARED_LIBS=OFF + +# Default is Debug build, which requires considerably more disk space +# and build time. Release build is selected for host and target +# because the linker can run out of memory in Debug mode. +HOST_CLANG_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release +CLANG_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release + +CLANG_CONF_OPTS += -DCMAKE_CROSSCOMPILING=1 + +# We need to build tools because libclang is a tool +HOST_CLANG_CONF_OPTS += -DCLANG_BUILD_TOOLS=ON +CLANG_CONF_OPTS += -DCLANG_BUILD_TOOLS=ON + +HOST_CLANG_CONF_OPTS += \ + -DCLANG_BUILD_EXAMPLES=OFF \ + -DCLANG_INCLUDE_DOCS=OFF \ + -DCLANG_INCLUDE_TESTS=OFF + +CLANG_CONF_OPTS += \ + -DCLANG_BUILD_EXAMPLES=OFF \ + -DCLANG_INCLUDE_DOCS=OFF \ + -DCLANG_INCLUDE_TESTS=OFF + +HOST_CLANG_CONF_OPTS += -DLLVM_DIR=$(HOST_DIR)/lib/cmake/llvm \ + -DCLANG_DEFAULT_LINKER=$(TARGET_LD) +CLANG_CONF_OPTS += -DLLVM_DIR=$(STAGING_DIR)/usr/lib/cmake/llvm \ + -DCMAKE_MODULE_PATH=$(HOST_DIR)/lib/cmake/llvm \ + -DCLANG_TABLEGEN:FILEPATH=$(HOST_DIR)/bin/clang-tblgen \ + -DLLVM_TABLEGEN_EXE:FILEPATH=$(HOST_DIR)/bin/llvm-tblgen + +# Clang can't be used as compiler on the target since there are no +# development files (headers) and other build tools. So remove clang +# binaries and some other unnecessary files from target. +CLANG_FILES_TO_REMOVE = \ + /usr/bin/clang* \ + /usr/bin/c-index-test \ + /usr/bin/git-clang-format \ + /usr/bin/scan-build \ + /usr/bin/scan-view \ + /usr/libexec/c++-analyzer \ + /usr/libexec/ccc-analyzer \ + /usr/share/clang \ + /usr/share/opt-viewer \ + /usr/share/scan-build \ + /usr/share/scan-view \ + /usr/share/man/man1/scan-build.1 \ + /usr/lib/clang + +define CLANG_CLEANUP_TARGET + rm -rf $(addprefix $(TARGET_DIR),$(CLANG_FILES_TO_REMOVE)) +endef +CLANG_POST_INSTALL_TARGET_HOOKS += CLANG_CLEANUP_TARGET + +# clang-tblgen is not installed by default, however it is necessary +# for cross-compiling clang +define HOST_CLANG_INSTALL_CLANG_TBLGEN + $(INSTALL) -D -m 0755 $(HOST_CLANG_BUILDDIR)/bin/clang-tblgen \ + $(HOST_DIR)/bin/clang-tblgen +endef +HOST_CLANG_POST_INSTALL_HOOKS = HOST_CLANG_INSTALL_CLANG_TBLGEN + +# This option must be enabled to link libclang dynamically against libLLVM.so +HOST_CLANG_CONF_OPTS += -DLLVM_LINK_LLVM_DYLIB=ON +CLANG_CONF_OPTS += -DLLVM_LINK_LLVM_DYLIB=ON + +# Prevent clang binaries from linking against LLVM static libs +HOST_CLANG_CONF_OPTS += -DLLVM_DYLIB_COMPONENTS=all +CLANG_CONF_OPTS += -DLLVM_DYLIB_COMPONENTS=all + +# Help host-clang to find our external toolchain, use a relative path from the clang +# installation directory to the external toolchain installation directory in order to +# not hardcode the toolchain absolute path. +ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y) +HOST_CLANG_CONF_OPTS += -DGCC_INSTALL_PREFIX:PATH=`realpath --relative-to=$(HOST_DIR)/bin/ $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)` +endif + +define HOST_CLANG_INSTALL_WRAPPER_AND_SIMPLE_SYMLINKS + $(Q)cd $(HOST_DIR)/bin; \ + rm -f clang-$(CLANG_VERSION_MAJOR).br_real; \ + mv clang-$(CLANG_VERSION_MAJOR) clang-$(CLANG_VERSION_MAJOR).br_real; \ + ln -sf toolchain-wrapper-clang clang-$(CLANG_VERSION_MAJOR); \ + for i in clang clang++ clang-cl clang-cpp; do \ + ln -snf toolchain-wrapper-clang $$i; \ + ln -snf clang-$(CLANG_VERSION_MAJOR).br_real $$i.br_real; \ + done +endef + +define HOST_CLANG_TOOLCHAIN_WRAPPER_BUILD + $(HOSTCC) $(HOST_CFLAGS) $(TOOLCHAIN_WRAPPER_ARGS) \ + -s -Wl,--hash-style=$(TOOLCHAIN_WRAPPER_HASH_STYLE) \ + toolchain/toolchain-wrapper.c \ + -o $(@D)/toolchain-wrapper-clang +endef + +define HOST_CLANG_TOOLCHAIN_WRAPPER_INSTALL + $(INSTALL) -D -m 0755 $(@D)/toolchain-wrapper-clang \ + $(HOST_DIR)/bin/toolchain-wrapper-clang +endef + +HOST_CLANG_TOOLCHAIN_WRAPPER_ARGS += -DBR_CROSS_PATH_SUFFIX='".br_real"' +HOST_CLANG_POST_BUILD_HOOKS += HOST_CLANG_TOOLCHAIN_WRAPPER_BUILD +HOST_CLANG_POST_INSTALL_HOOKS += HOST_CLANG_TOOLCHAIN_WRAPPER_INSTALL +HOST_CLANG_POST_INSTALL_HOOKS += HOST_CLANG_INSTALL_WRAPPER_AND_SIMPLE_SYMLINKS + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/llvm-project/compiler-rt/Config.in b/package/llvm-project/compiler-rt/Config.in new file mode 100644 index 00000000..10f5d796 --- /dev/null +++ b/package/llvm-project/compiler-rt/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_COMPILER_RT + bool "compiler-rt" + depends on BR2_PACKAGE_LLVM + depends on BR2_TOOLCHAIN_USES_GLIBC # asan lib requires + depends on BR2_HOST_GCC_AT_LEAST_7 # host-clang + select BR2_PACKAGE_LIBXCRYPT + help + A collection of runtime libraries primarily used by clang and + llvm to provide builtins, sanitizer runtimes, and profiling + at runtime. + + https://compiler-rt.llvm.org/ + +comment "compiler-rt requires llvm to be enabled, a glibc toolchain, host gcc >= 7" + depends on !BR2_PACKAGE_LLVM + depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_HOST_GCC_AT_LEAST_7 diff --git a/package/llvm-project/compiler-rt/compiler-rt.hash b/package/llvm-project/compiler-rt/compiler-rt.hash new file mode 100644 index 00000000..fe4e9816 --- /dev/null +++ b/package/llvm-project/compiler-rt/compiler-rt.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 db958eee92d1571d8b7f76c1be8513817f1a888dcf6ced88aca871acfb0eeddd compiler-rt-15.0.3.src.tar.xz +sha256 1a8f1058753f1ba890de984e48f0242a3a5c29a6a8f2ed9fd813f36985387e8d LICENSE.TXT diff --git a/package/llvm-project/compiler-rt/compiler-rt.mk b/package/llvm-project/compiler-rt/compiler-rt.mk new file mode 100644 index 00000000..d4bc4d30 --- /dev/null +++ b/package/llvm-project/compiler-rt/compiler-rt.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# compiler-rt +# +################################################################################ + +COMPILER_RT_VERSION = $(LLVM_PROJECT_VERSION) +COMPILER_RT_SOURCE = compiler-rt-$(COMPILER_RT_VERSION).src.tar.xz +COMPILER_RT_SITE = $(LLVM_PROJECT_SITE) +COMPILER_RT_LICENSE = NCSA MIT +COMPILER_RT_LICENSE_FILES = LICENSE.TXT +COMPILER_RT_CPE_ID_VENDOR = llvm +COMPILER_RT_DEPENDENCIES = host-clang libxcrypt llvm +COMPILER_RT_SUPPORTS_IN_SOURCE_BUILD = NO + +COMPILER_RT_INSTALL_STAGING = YES +COMPILER_RT_INSTALL_TARGET = NO + +COMPILER_RT_CONF_OPTS=-DCOMPILER_RT_STANDALONE_BUILD=OFF \ + -DCOMPILER_RT_STANDALONE_BUILD=ON \ + -DCOMPILER_RT_DEFAULT_TARGET_TRIPLE=$(GNU_TARGET_NAME) \ + -DLLVM_CONFIG_PATH=$(HOST_DIR)/bin/llvm-config \ + -DCMAKE_MODULE_PATH=$(HOST_DIR)/lib/cmake/llvm + +# The installation of the target runtime libraries defaults to DESTDIR, however +# host-clang resources directory needs a link so Clang can find the runtime +# libraries in the same location they would be if built as part of the Clang +# build. The "resources" directory is loosely documented and seems to be +# assumed, as compiler-rt is usually build at the same time as Clang and not +# standalone. +define COMPILER_RT_SETUP_RUNTIME_LIBS + mkdir -p $(HOST_DIR)/lib/clang/$(HOST_CLANG_VERSION)/lib + ln -sf ../../../../$(GNU_TARGET_NAME)/sysroot/usr/lib/linux $(HOST_DIR)/lib/clang/$(HOST_CLANG_VERSION)/lib/linux + ln -sf ../../../../$(GNU_TARGET_NAME)/sysroot/usr/share $(HOST_DIR)/lib/clang/$(HOST_CLANG_VERSION)/share +endef +COMPILER_RT_POST_INSTALL_STAGING_HOOKS += COMPILER_RT_SETUP_RUNTIME_LIBS + +$(eval $(cmake-package)) diff --git a/package/llvm-project/libclc/0001-support-out-of-tree-build.patch b/package/llvm-project/libclc/0001-support-out-of-tree-build.patch new file mode 100644 index 00000000..de7207be --- /dev/null +++ b/package/llvm-project/libclc/0001-support-out-of-tree-build.patch @@ -0,0 +1,71 @@ +From 495491e9d53bfb184c15753b5187e4bb55b19511 Mon Sep 17 00:00:00 2001 +From: Matt Weber +Date: Tue, 9 Mar 2021 15:55:17 -0600 +Subject: [PATCH] support out of tree build + +(1) The package has a prepare_builtins tool which is built +but not placed in the path for later use in the build. This +fix allows the later build steps to use the binary in-place. + +(2) With cmake, find_file() when used for non-host builds is +limited by CMAKE_FIND_ROOT_PATH* scope. + +In $(HOST_DIR)/share/buildroot/toolchainfile.cmake we set the +following target settings for CMAKE_FIND_ROOT_PATH* which +limit the scope. +set(CMAKE_FIND_ROOT_PATH "${RELOCATED_HOST_DIR}/aarch64-buildroot-linux-gnu/sysroot") +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + + +Signed-off-by: Matthew Weber +--- + CMakeLists.txt | 2 +- + cmake/CMakeDetermineCLCCompiler.cmake | 4 ++++ + cmake/CMakeDetermineLLAsmCompiler.cmake | 4 ++++ + 3 files changed, 9 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 9472f19..a784519 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -279,7 +279,7 @@ foreach( t ${LIBCLC_TARGETS_TO_BUILD} ) + + # Add prepare target + add_custom_command( OUTPUT "${obj_suffix}" +- COMMAND prepare_builtins -o ++ COMMAND ./prepare_builtins -o + "${obj_suffix}" + "builtins.opt.${obj_suffix}" + DEPENDS "opt.${obj_suffix}" +diff --git a/cmake/CMakeDetermineCLCCompiler.cmake b/cmake/CMakeDetermineCLCCompiler.cmake +index 94d85d9..5de6a48 100644 +--- a/cmake/CMakeDetermineCLCCompiler.cmake ++++ b/cmake/CMakeDetermineCLCCompiler.cmake +@@ -12,7 +12,7 @@ mark_as_advanced(CMAKE_CLC_ARCHIVE) + + set(CMAKE_CLC_COMPILER_ENV_VAR "CLC_COMPILER") + set(CMAKE_CLC_ARCHIVE_ENV_VAR "CLC_LINKER") +-find_file(clc_comp_in CMakeCLCCompiler.cmake.in PATHS ${CMAKE_ROOT}/Modules ${CMAKE_MODULE_PATH}) ++set(clc_comp_in "${CMAKE_MODULE_PATH}/CMakeCLCCompiler.cmake.in" ) + # configure all variables set in this file + configure_file(${clc_comp_in} ${CMAKE_PLATFORM_INFO_DIR}/CMakeCLCCompiler.cmake @ONLY) + mark_as_advanced(clc_comp_in) +diff --git a/cmake/CMakeDetermineLLAsmCompiler.cmake b/cmake/CMakeDetermineLLAsmCompiler.cmake +index 1c424c7..dd3bfb6 100644 +--- a/cmake/CMakeDetermineLLAsmCompiler.cmake ++++ b/cmake/CMakeDetermineLLAsmCompiler.cmake +@@ -18,7 +18,7 @@ mark_as_advanced(CMAKE_LLAsm_ARCHIVE) + set(CMAKE_LLAsm_PREPROCESSOR_ENV_VAR "LL_PREPROCESSOR") + set(CMAKE_LLAsm_COMPILER_ENV_VAR "LL_ASSEMBLER") + set(CMAKE_LLAsm_ARCHIVE_ENV_VAR "LL_LINKER") +-find_file(ll_comp_in CMakeLLAsmCompiler.cmake.in PATHS ${CMAKE_ROOT}/Modules ${CMAKE_MODULE_PATH}) ++set(ll_comp_in "${CMAKE_MODULE_PATH}/CMakeLLAsmCompiler.cmake.in" ) + # configure all variables set in this file + configure_file(${ll_comp_in} ${CMAKE_PLATFORM_INFO_DIR}/CMakeLLAsmCompiler.cmake @ONLY) + mark_as_advanced(ll_comp_in) +-- +2.17.1 + diff --git a/package/llvm-project/libclc/Config.in b/package/llvm-project/libclc/Config.in new file mode 100644 index 00000000..85eb8885 --- /dev/null +++ b/package/llvm-project/libclc/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBCLC + bool "libclc" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on BR2_HOST_GCC_AT_LEAST_7 # host-llvm + help + libclc is an open source, BSD licensed implementation of + the library requirements of the OpenCL C programming language, + as specified by the OpenCL 1.1 Specification. + + http://libclc.llvm.org/ + +comment "libclc needs host gcc >= 7" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on !BR2_HOST_GCC_AT_LEAST_7 diff --git a/package/llvm-project/libclc/libclc.hash b/package/llvm-project/libclc/libclc.hash new file mode 100644 index 00000000..7140884f --- /dev/null +++ b/package/llvm-project/libclc/libclc.hash @@ -0,0 +1,3 @@ +# locally calculated +sha256 07e8a2b31e07a8cc8a976a6bfd87797d2543d5a9530f449755bf5119acbdbe8e libclc-15.0.3.src.tar.xz +sha256 3c536c052db9afd997809e38785c9f2a9e54e2892330fa7c5b438e18a7413479 LICENSE.TXT diff --git a/package/llvm-project/libclc/libclc.mk b/package/llvm-project/libclc/libclc.mk new file mode 100644 index 00000000..9f303d6d --- /dev/null +++ b/package/llvm-project/libclc/libclc.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# libclc +# +################################################################################ + +LIBCLC_VERSION = $(LLVM_PROJECT_VERSION) +LIBCLC_SITE = $(LLVM_PROJECT_SITE) +LIBCLC_SOURCE = libclc-$(LIBCLC_VERSION).src.tar.xz +LIBCLC_LICENSE = Apache-2.0 with exceptions or MIT +LIBCLC_LICENSE_FILES = LICENSE.TXT + +LIBCLC_DEPENDENCIES = host-clang host-llvm host-spirv-llvm-translator +LIBCLC_INSTALL_STAGING = YES + +# CMAKE_*_COMPILER_FORCED=ON skips testing the tools and assumes +# llvm-config provided values +# +# CMAKE_*_COMPILER has to be set to the host compiler to build a host +# 'prepare_builtins' tool used during the build process +# +# The headers are installed in /usr/share and not /usr/include, +# because they are needed at runtime on the target to build the OpenCL +# kernels. +LIBCLC_CONF_OPTS = \ + -DCMAKE_SYSROOT="" \ + -DCMAKE_C_COMPILER_FORCED=ON \ + -DCMAKE_CXX_COMPILER_FORCED=ON \ + -DCMAKE_CLC_COMPILER_FORCED=ON \ + -DCMAKE_LLAsm_COMPILER_FORCED=ON \ + -DCMAKE_INSTALL_DATADIR="share" \ + -DCMAKE_FIND_ROOT_PATH="$(HOST_DIR)" \ + -DCMAKE_C_FLAGS="$(HOST_CFLAGS)" \ + -DCMAKE_CXX_FLAGS="$(HOST_CXXFLAGS)" \ + -DCMAKE_EXE_LINKER_FLAGS="$(HOST_LDFLAGS)" \ + -DCMAKE_SHARED_LINKER_FLAGS="$(HOST_LDFLAGS)" \ + -DCMAKE_MODULE_LINKER_FLAGS="$(HOST_LDFLAGS)" \ + -DCMAKE_C_COMPILER="$(CMAKE_HOST_C_COMPILER)" \ + -DCMAKE_CXX_COMPILER="$(CMAKE_HOST_CXX_COMPILER)" \ + -DLLVM_CONFIG="$(HOST_DIR)/bin/llvm-config" + +$(eval $(cmake-package)) diff --git a/package/llvm-project/lld/Config.in.host b/package/llvm-project/lld/Config.in.host new file mode 100644 index 00000000..3bed364a --- /dev/null +++ b/package/llvm-project/lld/Config.in.host @@ -0,0 +1,15 @@ +config BR2_PACKAGE_HOST_LLD + bool "host lld" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS # llvm + depends on BR2_HOST_GCC_AT_LEAST_7 # host-llvm + help + LLD is a linker from the LLVM project that is a drop-in + replacement for system linkers, and runs much faster than + them. It also provides features that are useful for + toolchain developers. + + https://lld.llvm.org/ + +comment "host lld needs host gcc >= 7" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on !BR2_HOST_GCC_AT_LEAST_7 diff --git a/package/llvm-project/lld/lld.hash b/package/llvm-project/lld/lld.hash new file mode 100644 index 00000000..2d2598db --- /dev/null +++ b/package/llvm-project/lld/lld.hash @@ -0,0 +1,3 @@ +# locally calculated +sha256 cd5d0894a74b957ce78d62212c1df0b3876a7297593aaece6b0512285e3b8732 lld-15.0.3.src.tar.xz +sha256 f7891568956e34643eb6a0db1462db30820d40d7266e2a78063f2fe233ece5a0 LICENSE.TXT diff --git a/package/llvm-project/lld/lld.mk b/package/llvm-project/lld/lld.mk new file mode 100644 index 00000000..539dd0bd --- /dev/null +++ b/package/llvm-project/lld/lld.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# lld +# +################################################################################ + +LLD_VERSION = $(LLVM_PROJECT_VERSION) +LLD_SITE = $(LLVM_PROJECT_SITE) +LLD_SOURCE = lld-$(LLD_VERSION).src.tar.xz +LLD_LICENSE = Apache-2.0 with exceptions +LLD_LICENSE_FILES = LICENSE.TXT +LLD_SUPPORTS_IN_SOURCE_BUILD = NO +HOST_LLD_DEPENDENCIES = host-llvm host-llvm-libunwind + +# build as static libs as is done in llvm & clang +HOST_LLD_CONF_OPTS += -DBUILD_SHARED_LIBS=OFF + +# GCC looks for tools in a different path from LLD's default installation path +define HOST_LLD_CREATE_SYMLINKS + mkdir -p $(HOST_DIR)/$(GNU_TARGET_NAME)/bin + ln -sf $(HOST_DIR)/bin/lld $(HOST_DIR)/$(GNU_TARGET_NAME)/bin/lld + ln -sf $(HOST_DIR)/bin/lld $(HOST_DIR)/$(GNU_TARGET_NAME)/bin/ld.lld +endef + +HOST_LLD_POST_INSTALL_HOOKS += HOST_LLD_CREATE_SYMLINKS + +$(eval $(host-cmake-package)) diff --git a/package/llvm-project/llvm-cmake/llvm-cmake.hash b/package/llvm-project/llvm-cmake/llvm-cmake.hash new file mode 100644 index 00000000..862c5d92 --- /dev/null +++ b/package/llvm-project/llvm-cmake/llvm-cmake.hash @@ -0,0 +1,2 @@ +# locally calculated +sha256 21cf3f52c53dc8b8972122ae35a5c18de09c7df693b48b5cd8553c3e3fed090d cmake-15.0.3.src.tar.xz diff --git a/package/llvm-project/llvm-cmake/llvm-cmake.mk b/package/llvm-project/llvm-cmake/llvm-cmake.mk new file mode 100644 index 00000000..33b6ba83 --- /dev/null +++ b/package/llvm-project/llvm-cmake/llvm-cmake.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# llvm-cmake +# +################################################################################ + +LLVM_CMAKE_VERSION = $(LLVM_PROJECT_VERSION) +LLVM_CMAKE_SITE = $(LLVM_PROJECT_SITE) +LLVM_CMAKE_SOURCE = cmake-$(LLVM_CMAKE_VERSION).src.tar.xz +LLVM_CMAKE_LICENSE = Apache-2.0 with exceptions + +define HOST_LLVM_CMAKE_INSTALL_CMDS + mkdir -p $(HOST_DIR)/lib/cmake/llvm + cp -Rv $(@D)/Modules/* $(HOST_DIR)/lib/cmake/llvm +endef + +$(eval $(host-generic-package)) diff --git a/package/llvm-project/llvm-libunwind/llvm-libunwind.hash b/package/llvm-project/llvm-libunwind/llvm-libunwind.hash new file mode 100644 index 00000000..86775f5d --- /dev/null +++ b/package/llvm-project/llvm-libunwind/llvm-libunwind.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 0ab6e07bf05359e242e9ea80e4089b819914867fa997a715e324e584bcfdf114 libunwind-15.0.3.src.tar.xz +sha256 b5efebcaca80879234098e52d1725e6d9eb8fb96a19fce625d39184b705f7b6d LICENSE.TXT diff --git a/package/llvm-project/llvm-libunwind/llvm-libunwind.mk b/package/llvm-project/llvm-libunwind/llvm-libunwind.mk new file mode 100644 index 00000000..b293c7cc --- /dev/null +++ b/package/llvm-project/llvm-libunwind/llvm-libunwind.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# llvm-libunwind +# +################################################################################ + +LLVM_LIBUNWIND_VERSION = $(LLVM_PROJECT_VERSION) +LLVM_LIBUNWIND_SITE = $(LLVM_PROJECT_SITE) +LLVM_LIBUNWIND_SOURCE = libunwind-$(LLVM_LIBUNWIND_VERSION).src.tar.xz +LLVM_LIBUNWIND_LICENSE = Apache-2.0 with exceptions +LLVM_LIBUNWIND_LICENSE_FILES = LICENSE.TXT +LLVM_LIBUNWIND_SUPPORTS_IN_SOURCE_BUILD = NO + +HOST_LLVM_LIBUNWIND_DEPENDENCIES = host-llvm-cmake +HOST_LLVM_LIBUNWIND_CONF_OPTS += \ + -DCMAKE_MODULE_PATH="$(HOST_DIR)/lib/cmake/llvm" \ + -DLIBUNWIND_INSTALL_HEADERS=ON + +$(eval $(host-cmake-package)) diff --git a/package/llvm-project/llvm-project.mk b/package/llvm-project/llvm-project.mk new file mode 100644 index 00000000..5859ff7c --- /dev/null +++ b/package/llvm-project/llvm-project.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# llvm-project +# +################################################################################ + +LLVM_PROJECT_VERSION_MAJOR = 15 +LLVM_PROJECT_VERSION = $(LLVM_PROJECT_VERSION_MAJOR).0.3 +LLVM_PROJECT_SITE = https://github.com/llvm/llvm-project/releases/download/llvmorg-$(LLVM_PROJECT_VERSION) + +include $(sort $(wildcard package/llvm-project/*/*.mk)) diff --git a/package/llvm-project/llvm/Config.in b/package/llvm-project/llvm/Config.in new file mode 100644 index 00000000..4ee84b3b --- /dev/null +++ b/package/llvm-project/llvm/Config.in @@ -0,0 +1,77 @@ +config BR2_PACKAGE_LLVM_ARCH_SUPPORTS + bool + default y if BR2_i386 + default y if BR2_x86_64 + default y if BR2_aarch64 + default y if BR2_arm || BR2_armeb + default y if BR2_riscv + +config BR2_PACKAGE_LLVM_TARGET_ARCH + string + default "AArch64" if BR2_aarch64 + default "ARM" if BR2_arm || BR2_armeb + default "X86" if BR2_i386 || BR2_x86_64 + default "riscv32" if BR2_riscv && !BR2_ARCH_IS_64 + default "riscv64" if BR2_riscv && BR2_ARCH_IS_64 + +config BR2_PACKAGE_LLVM + bool "llvm" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::shared_future + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR # std::wstring + depends on BR2_HOST_GCC_AT_LEAST_7 # host-llvm + help + The LLVM Project is a collection of modular and reusable + compiler and toolchain technologies. + + http://llvm.org + +if BR2_PACKAGE_LLVM + +config BR2_PACKAGE_LLVM_AMDGPU + bool "AMDGPU backend" + help + Build AMDGPU target. Select this option if you are going + to install mesa3d with llvm and use Gallium Radeon driver. + +config BR2_PACKAGE_LLVM_RTTI + bool "enable rtti" + help + Build LLVM with run-time type information. LLVM can be built + without rtti, but turning it off changes the ABI of C++ + programs. + + This features is needed to build the Gallium Nouveau driver + or the Clover OpenCL state tracker when llvm support is + enabled. + + https://llvm.org/docs/HowToSetUpLLVMStyleRTTI.html + +config BR2_PACKAGE_LLVM_BPF + bool "BPF backend" + help + Build BPF target. Select this option if you are going + to install bcc on the target. + +config BR2_PACKAGE_LLVM_DUMP + bool "enable dump" + help + Build LLVM with dump functions even when assertions are + disabled. + +endif + +comment "llvm needs a toolchain w/ wchar, threads, C++, gcc >= 7, dynamic library, host gcc >= 7" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 \ + || BR2_STATIC_LIBS || !BR2_USE_WCHAR \ + || !BR2_HOST_GCC_AT_LEAST_7 + +comment "llvm needs a toolchain not affected by GCC bug 64735" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/llvm-project/llvm/llvm.hash b/package/llvm-project/llvm/llvm.hash new file mode 100644 index 00000000..df9aa884 --- /dev/null +++ b/package/llvm-project/llvm/llvm.hash @@ -0,0 +1,3 @@ +# locally calculated +sha256 c39aec729662416dcbf0bfe53a9786b34e7d93d02908a0779a2f6d83ad0a4a27 llvm-15.0.3.src.tar.xz +sha256 8d85c1057d742e597985c7d4e6320b015a9139385cff4cbae06ffc0ebe89afee LICENSE.TXT diff --git a/package/llvm-project/llvm/llvm.mk b/package/llvm-project/llvm/llvm.mk new file mode 100644 index 00000000..b0515474 --- /dev/null +++ b/package/llvm-project/llvm/llvm.mk @@ -0,0 +1,317 @@ +################################################################################ +# +# llvm +# +################################################################################ + +LLVM_VERSION = $(LLVM_PROJECT_VERSION) +LLVM_SITE = $(LLVM_PROJECT_SITE) +LLVM_SOURCE = llvm-$(LLVM_VERSION).src.tar.xz +LLVM_LICENSE = Apache-2.0 with exceptions +LLVM_LICENSE_FILES = LICENSE.TXT +LLVM_CPE_ID_VENDOR = llvm +LLVM_SUPPORTS_IN_SOURCE_BUILD = NO +LLVM_INSTALL_STAGING = YES + +HOST_LLVM_DEPENDENCIES = host-python3 host-llvm-cmake +LLVM_DEPENDENCIES = host-llvm + +# Path to cmake modules from host-llvm-cmake +HOST_LLVM_CONF_OPTS += -DCMAKE_MODULE_PATH=$(HOST_DIR)/lib/cmake/llvm +LLVM_CONF_OPTS += -DCMAKE_MODULE_PATH=$(HOST_DIR)/lib/cmake/llvm + +# Don't build clang libcxx libcxxabi lldb compiler-rt lld polly as llvm subprojects +# This flag assumes that projects are checked out side-by-side and not nested +HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_PROJECTS="" +LLVM_CONF_OPTS += -DLLVM_ENABLE_PROJECTS="" + +HOST_LLVM_CONF_OPTS += -DLLVM_CCACHE_BUILD=$(if $(BR2_CCACHE),ON,OFF) +LLVM_CONF_OPTS += -DLLVM_CCACHE_BUILD=$(if $(BR2_CCACHE),ON,OFF) + +# This option prevents AddLLVM.cmake from adding $ORIGIN/../lib to +# binaries. Otherwise, llvm-config (host variant installed in STAGING) +# will try to use target's libc. +HOST_LLVM_CONF_OPTS += -DCMAKE_INSTALL_RPATH="$(HOST_DIR)/lib" + +# Get target architecture +LLVM_TARGET_ARCH = $(call qstrip,$(BR2_PACKAGE_LLVM_TARGET_ARCH)) + +# Build backend for target architecture. This include backends like +# AMDGPU. We need to special case RISCV. +ifneq ($(filter riscv%,$(LLVM_TARGET_ARCH)),) +LLVM_TARGETS_TO_BUILD = RISCV +else +LLVM_TARGETS_TO_BUILD = $(LLVM_TARGET_ARCH) +endif +HOST_LLVM_CONF_OPTS += -DLLVM_TARGETS_TO_BUILD="$(subst $(space),;,$(LLVM_TARGETS_TO_BUILD))" +LLVM_CONF_OPTS += -DLLVM_TARGETS_TO_BUILD="$(subst $(space),;,$(LLVM_TARGETS_TO_BUILD))" + +# LLVM target to use for native code generation. This is required for JIT generation. +# It must be set to LLVM_TARGET_ARCH for host and target, otherwise we get +# "No available targets are compatible for this triple" with llvmpipe when host +# and target architectures are different. +HOST_LLVM_CONF_OPTS += -DLLVM_TARGET_ARCH=$(LLVM_TARGET_ARCH) +LLVM_CONF_OPTS += -DLLVM_TARGET_ARCH=$(LLVM_TARGET_ARCH) + +# Build AMDGPU backend +# We need to build AMDGPU backend for both host and target because +# llvm-config --targets built (host variant installed in STAGING) will +# output only $(LLVM_TARGET_ARCH) if not, and mesa3d won't build as +# it thinks AMDGPU backend is not installed on the target. +ifeq ($(BR2_PACKAGE_LLVM_AMDGPU),y) +LLVM_TARGETS_TO_BUILD += AMDGPU +endif + +# Build BPF backend +ifeq ($(BR2_PACKAGE_LLVM_BPF),y) +LLVM_TARGETS_TO_BUILD += BPF +endif + +# Use native llvm-tblgen from host-llvm (needed for cross-compilation) +LLVM_CONF_OPTS += -DLLVM_TABLEGEN=$(HOST_DIR)/bin/llvm-tblgen + +# Use native llvm-config from host-llvm (needed for cross-compilation) +LLVM_CONF_OPTS += -DLLVM_CONFIG_PATH=$(HOST_DIR)/bin/llvm-config + +# BUILD_SHARED_LIBS has a misleading name. It is in fact an option for +# LLVM developers to build all LLVM libraries as separate shared libraries. +# For normal use of LLVM, it is recommended to build a single +# shared library, which is achieved by BUILD_SHARED_LIBS=OFF and +# LLVM_BUILD_LLVM_DYLIB=ON. +HOST_LLVM_CONF_OPTS += -DBUILD_SHARED_LIBS=OFF +LLVM_CONF_OPTS += -DBUILD_SHARED_LIBS=OFF + +# Generate libLLVM.so. This library contains a default set of LLVM components +# that can be overwritten with "LLVM_DYLIB_COMPONENTS". The default contains +# most of LLVM and is defined in "tools/llvm-shlib/CMakelists.txt". +HOST_LLVM_CONF_OPTS += -DLLVM_BUILD_LLVM_DYLIB=ON +LLVM_CONF_OPTS += -DLLVM_BUILD_LLVM_DYLIB=ON + +# LLVM_BUILD_LLVM_DYLIB to ON. We need to enable this option for the +# host as llvm-config for the host will be used in STAGING_DIR by packages +# linking against libLLVM and if this option is not selected, then llvm-config +# does not work properly. For example, it assumes that LLVM is built statically +# and cannot find libLLVM.so. +HOST_LLVM_CONF_OPTS += -DLLVM_LINK_LLVM_DYLIB=ON +LLVM_CONF_OPTS += -DLLVM_LINK_LLVM_DYLIB=ON + +LLVM_CONF_OPTS += -DCMAKE_CROSSCOMPILING=1 + +# Disabled for the host since no host-libedit. +# Fall back to "Simple fgets-based implementation" of llvm line editor. +HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_LIBEDIT=OFF +LLVM_CONF_OPTS += -DLLVM_ENABLE_LIBEDIT=OFF + +# We want to install llvm libraries and modules. +HOST_LLVM_CONF_OPTS += -DLLVM_INSTALL_TOOLCHAIN_ONLY=OFF +LLVM_CONF_OPTS += -DLLVM_INSTALL_TOOLCHAIN_ONLY=OFF + +# We build from a release archive without vcs files. +HOST_LLVM_CONF_OPTS += -DLLVM_APPEND_VC_REV=OFF +LLVM_CONF_OPTS += -DLLVM_APPEND_VC_REV=OFF + +# No backtrace package in Buildroot. +# https://documentation.backtrace.io +HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_BACKTRACES=OFF +LLVM_CONF_OPTS += -DLLVM_ENABLE_BACKTRACES=OFF + +# Enable signal handlers overrides support. +HOST_LLVM_CONF_OPTS += -DENABLE_CRASH_OVERRIDES=ON +LLVM_CONF_OPTS += -DENABLE_CRASH_OVERRIDES=ON + +# Disable ffi for now. +HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_FFI=OFF +LLVM_CONF_OPTS += -DLLVM_ENABLE_FFI=OFF + +# Disable terminfo database (needs ncurses libtinfo.so) +HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_TERMINFO=OFF +LLVM_CONF_OPTS += -DLLVM_ENABLE_TERMINFO=OFF + +# Enable thread support +HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_THREADS=ON +LLVM_CONF_OPTS += -DLLVM_ENABLE_THREADS=ON + +# Enable optional host-zlib support for LLVM Machine Code (llvm-mc) to add +# compression/uncompression capabilities. +# Not needed on the target. +HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_ZLIB=ON +HOST_LLVM_DEPENDENCIES += host-zlib +LLVM_CONF_OPTS += -DLLVM_ENABLE_ZLIB=OFF + +# libxml2 can be disabled as it is used for LLVM Windows builds where COFF +# files include manifest info +HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_LIBXML2=OFF +LLVM_CONF_OPTS += -DLLVM_ENABLE_LIBXML2=OFF + +# Disable optional Z3Prover since there is no such package in Buildroot. +HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_Z3_SOLVER=OFF +LLVM_CONF_OPTS += -DLLVM_ENABLE_Z3_SOLVER=OFF + +# We don't use llvm for static only build, so enable PIC +HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_PIC=ON +LLVM_CONF_OPTS += -DLLVM_ENABLE_PIC=ON + +# Default is Debug build, which requires considerably more disk space and +# build time. Release build is selected for host and target because the linker +# can run out of memory in Debug mode. +HOST_LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release +LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release + +# Compile llvm with the C++14 (ISO C++ 2014 standard). +HOST_LLVM_CONF_OPTS += -DCMAKE_CXX_STANDARD=14 +LLVM_CONF_OPTS += -DCMAKE_CXX_STANDARD=14 + +# Disabled, requires sys/ndir.h header +# Disable debug in module +HOST_LLVM_CONF_OPTS += \ + -DLLVM_ENABLE_MODULES=OFF \ + -DLLVM_ENABLE_MODULE_DEBUGGING=OFF +LLVM_CONF_OPTS += \ + -DLLVM_ENABLE_MODULES=OFF \ + -DLLVM_ENABLE_MODULE_DEBUGGING=OFF + +# Don't change the standard library to libc++. +HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_LIBCXX=OFF +LLVM_CONF_OPTS += -DLLVM_ENABLE_LIBCXX=OFF + +# Don't use lld as a linker. +HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_LLD=OFF +LLVM_CONF_OPTS += -DLLVM_ENABLE_LLD=OFF + +# Generate code for the target. LLVM selects a target by looking at the +# toolchain tuple +HOST_LLVM_CONF_OPTS += -DLLVM_DEFAULT_TARGET_TRIPLE=$(GNU_TARGET_NAME) +LLVM_CONF_OPTS += -DLLVM_DEFAULT_TARGET_TRIPLE=$(GNU_TARGET_NAME) + +# LLVM_HOST_TRIPLE has a misleading name, it is in fact the triple of the +# system where llvm is going to run on. We need to specify triple for native +# code generation on the target. +# This solves "No available targets are compatible for this triple" with llvmpipe +LLVM_CONF_OPTS += -DLLVM_HOST_TRIPLE=$(GNU_TARGET_NAME) + +# Building the Go and OCaml bindings is yet unsupported. +HOST_LLVM_CONF_OPTS += \ + -DLLVM_ENABLE_BINDINGS=OFF + +# Builds a release host tablegen that gets used during the LLVM build. +HOST_LLVM_CONF_OPTS += -DLLVM_OPTIMIZED_TABLEGEN=ON + +# Keep llvm utility binaries for the host. llvm-tblgen is built anyway as +# CMakeLists.txt has add_subdirectory(utils/TableGen) unconditionally. +HOST_LLVM_CONF_OPTS += \ + -DLLVM_BUILD_UTILS=ON \ + -DLLVM_INCLUDE_UTILS=ON \ + -DLLVM_INSTALL_UTILS=ON +LLVM_CONF_OPTS += \ + -DLLVM_BUILD_UTILS=OFF \ + -DLLVM_INCLUDE_UTILS=OFF \ + -DLLVM_INSTALL_UTILS=OFF + +HOST_LLVM_CONF_OPTS += \ + -DLLVM_INCLUDE_TOOLS=ON \ + -DLLVM_BUILD_TOOLS=ON + +# We need to activate LLVM_INCLUDE_TOOLS, otherwise it does not generate +# libLLVM.so +LLVM_CONF_OPTS += \ + -DLLVM_INCLUDE_TOOLS=ON + +ifeq ($(BR2_PACKAGE_LLVM_RTTI),y) +HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_RTTI=ON +LLVM_CONF_OPTS += -DLLVM_ENABLE_RTTI=ON +else +HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_RTTI=OFF +LLVM_CONF_OPTS += -DLLVM_ENABLE_RTTI=OFF +endif + +HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_DUMP=OFF +ifeq ($(BR2_PACKAGE_LLVM_DUMP),y) +LLVM_CONF_OPTS += -DLLVM_ENABLE_DUMP=ON +else +LLVM_CONF_OPTS += -DLLVM_ENABLE_DUMP=OFF +endif + +# Compiler-rt not in the source tree. +# llvm runtime libraries are not in the source tree. +# Polly is not in the source tree. +HOST_LLVM_CONF_OPTS += \ + -DLLVM_BUILD_EXTERNAL_COMPILER_RT=OFF \ + -DLLVM_BUILD_RUNTIME=OFF \ + -DLLVM_INCLUDE_RUNTIMES=OFF +LLVM_CONF_OPTS += \ + -DLLVM_BUILD_EXTERNAL_COMPILER_RT=OFF \ + -DLLVM_BUILD_RUNTIME=OFF \ + -DLLVM_INCLUDE_RUNTIMES=OFF + +HOST_LLVM_CONF_OPTS += \ + -DLLVM_ENABLE_WARNINGS=ON \ + -DLLVM_ENABLE_PEDANTIC=ON \ + -DLLVM_ENABLE_WERROR=OFF +LLVM_CONF_OPTS += \ + -DLLVM_ENABLE_WARNINGS=ON \ + -DLLVM_ENABLE_PEDANTIC=ON \ + -DLLVM_ENABLE_WERROR=OFF + +HOST_LLVM_CONF_OPTS += \ + -DLLVM_BUILD_EXAMPLES=OFF \ + -DLLVM_BUILD_DOCS=OFF \ + -DLLVM_BUILD_TESTS=OFF \ + -DLLVM_ENABLE_DOXYGEN=OFF \ + -DLLVM_ENABLE_OCAMLDOC=OFF \ + -DLLVM_ENABLE_SPHINX=OFF \ + -DLLVM_INCLUDE_EXAMPLES=OFF \ + -DLLVM_INCLUDE_DOCS=OFF \ + -DLLVM_INCLUDE_GO_TESTS=OFF \ + -DLLVM_INCLUDE_TESTS=OFF \ + -DLLVM_INCLUDE_BENCHMARKS=OFF +LLVM_CONF_OPTS += \ + -DLLVM_BUILD_EXAMPLES=OFF \ + -DLLVM_BUILD_DOCS=OFF \ + -DLLVM_BUILD_TESTS=OFF \ + -DLLVM_ENABLE_DOXYGEN=OFF \ + -DLLVM_ENABLE_OCAMLDOC=OFF \ + -DLLVM_ENABLE_SPHINX=OFF \ + -DLLVM_INCLUDE_EXAMPLES=OFF \ + -DLLVM_INCLUDE_DOCS=OFF \ + -DLLVM_INCLUDE_GO_TESTS=OFF \ + -DLLVM_INCLUDE_TESTS=OFF \ + -DLLVM_INCLUDE_BENCHMARKS=OFF + +# Copy llvm-config (host variant) to STAGING_DIR +# llvm-config (host variant) returns include and lib directories +# for the host if it's installed in host/bin: +# output/host/bin/llvm-config --includedir +# output/host/include +# When installed in STAGING_DIR, llvm-config returns include and lib +# directories from STAGING_DIR. +# output/staging/usr/bin/llvm-config --includedir +# output/staging/usr/include +define LLVM_COPY_LLVM_CONFIG_TO_STAGING_DIR + $(INSTALL) -D -m 0755 $(HOST_DIR)/bin/llvm-config \ + $(STAGING_DIR)/usr/bin/llvm-config +endef +HOST_LLVM_POST_INSTALL_HOOKS = LLVM_COPY_LLVM_CONFIG_TO_STAGING_DIR + +# The llvm-symbolizer binary is used by the Compiler-RT Fuzzer +# and AddressSanitizer tools on the target for stack traces. +# If we set -DLLVM_BUILD_TOOLS=ON this will also install the llvm-config +# target binary to STAGING_DIR, which means we can no longer run it. +# Therefore, overwrite it again with the host llvm-config. +ifeq ($(BR2_PACKAGE_COMPILER_RT),y) +LLVM_CONF_OPTS += \ + -DLLVM_BUILD_TOOLS=ON +LLVM_POST_INSTALL_STAGING_HOOKS = LLVM_COPY_LLVM_CONFIG_TO_STAGING_DIR +else +LLVM_CONF_OPTS += \ + -DLLVM_BUILD_TOOLS=OFF +endif + +# By default llvm-tblgen is built and installed on the target but it is +# not necessary. Also erase LLVMHello.so from /usr/lib +define LLVM_DELETE_LLVM_TBLGEN_TARGET + rm -f $(TARGET_DIR)/usr/bin/llvm-tblgen $(TARGET_DIR)/usr/lib/LLVMHello.so +endef +LLVM_POST_INSTALL_TARGET_HOOKS = LLVM_DELETE_LLVM_TBLGEN_TARGET + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/lm-sensors/0001-static-build.patch b/package/lm-sensors/0001-static-build.patch new file mode 100644 index 00000000..63edd44f --- /dev/null +++ b/package/lm-sensors/0001-static-build.patch @@ -0,0 +1,81 @@ +Add support for static only build + +This patch adds support for a BUILD_SHARED_LIB variable that allows to +enable/disable the build of the shared library, in order to support +static-only builds. + +Signed-off-by: Thomas Petazzoni + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -85,6 +85,9 @@ + # Build and install static library + BUILD_STATIC_LIB := 1 + ++# Build and install shared library ++BUILD_SHARED_LIB := 1 ++ + # Set these to add preprocessor or compiler flags, or use + # environment variables + # CFLAGS := +Index: b/lib/Module.mk +=================================================================== +--- a/lib/Module.mk ++++ b/lib/Module.mk +@@ -43,8 +43,14 @@ + LIBSTLIBNAME := libsensors.a + LIBSHSONAME := libsensors.so.$(LIBMAINVER) + ++ifeq ($(BUILD_SHARED_LIB),1) + LIBTARGETS := $(MODULE_DIR)/$(LIBSHLIBNAME) \ + $(MODULE_DIR)/$(LIBSHSONAME) $(MODULE_DIR)/$(LIBSHBASENAME) ++LIBDEP_FOR_PROGS := $(LIBSHBASENAME) ++else ++LIBDEP_FOR_PROGS := $(LIBSTLIBNAME) ++endif ++ + ifeq ($(BUILD_STATIC_LIB),1) + LIBTARGETS += $(MODULE_DIR)/$(LIBSTLIBNAME) + endif +@@ -131,9 +137,11 @@ + ifeq ($(BUILD_STATIC_LIB),1) + $(INSTALL) -m 644 $(LIB_DIR)/$(LIBSTLIBNAME) $(DESTDIR)$(LIBDIR) + endif ++ifeq ($(BUILD_SHARED_LIB),1) + $(INSTALL) -m 755 $(LIB_DIR)/$(LIBSHLIBNAME) $(DESTDIR)$(LIBDIR) + $(LN) $(LIBSHLIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBSHSONAME) + $(LN) $(LIBSHSONAME) $(DESTDIR)$(LIBDIR)/$(LIBSHBASENAME) ++endif + @if [ -z "$(DESTDIR)" -a "$(LIBDIR)" != "/usr/lib" -a "$(LIBDIR)" != "/lib" ] ; then \ + if [ -e "/usr/lib/$(LIBSHSONAME)" -o -e "/usr/lib/$(LIBSHBASENAME)" ] ; then \ + echo '******************************************************************************' ; \ +Index: b/prog/sensord/Module.mk +=================================================================== +--- a/prog/sensord/Module.mk ++++ b/prog/sensord/Module.mk +@@ -41,7 +41,7 @@ + REMOVESENSORDBIN := $(patsubst $(MODULE_DIR)/%,$(DESTDIR)$(SBINDIR)/%,$(PROGSENSORDTARGETS)) + REMOVESENSORDMAN := $(patsubst $(MODULE_DIR)/%,$(DESTDIR)$(PROGSENSORDMAN8DIR)/%,$(PROGSENSORDMAN8FILES)) + +-$(PROGSENSORDTARGETS): $(PROGSENSORDSOURCES:.c=.ro) lib/$(LIBSHBASENAME) ++$(PROGSENSORDTARGETS): $(PROGSENSORDSOURCES:.c=.ro) lib/$(LIBDEP_FOR_PROGS) + $(CC) $(EXLDFLAGS) -o $@ $(PROGSENSORDSOURCES:.c=.ro) -Llib -lsensors -lrrd + + all-prog-sensord: $(PROGSENSORDTARGETS) +Index: b/prog/sensors/Module.mk +=================================================================== +--- a/prog/sensors/Module.mk ++++ b/prog/sensors/Module.mk +@@ -39,8 +39,8 @@ + + LIBICONV := $(shell if /sbin/ldconfig -p | grep -q '/libiconv\.so$$' ; then echo \-liconv; else echo; fi) + +-$(PROGSENSORSTARGETS): $(PROGSENSORSSOURCES:.c=.ro) lib/$(LIBSHBASENAME) +- $(CC) $(EXLDFLAGS) -o $@ $(PROGSENSORSSOURCES:.c=.ro) $(LIBICONV) -Llib -lsensors ++$(PROGSENSORSTARGETS): $(PROGSENSORSSOURCES:.c=.ro) lib/$(LIBDEP_FOR_PROGS) ++ $(CC) $(EXLDFLAGS) -o $@ $(PROGSENSORSSOURCES:.c=.ro) $(LIBICONV) -Llib -lsensors -lm + + all-prog-sensors: $(PROGSENSORSTARGETS) + user :: all-prog-sensors diff --git a/package/lm-sensors/0002-no-host-ldconfig.patch b/package/lm-sensors/0002-no-host-ldconfig.patch new file mode 100644 index 00000000..51f7f6af --- /dev/null +++ b/package/lm-sensors/0002-no-host-ldconfig.patch @@ -0,0 +1,29 @@ +Remove usage of host ldconfig + +To know whether the libiconv library is available, lm-sensors is using +the host ldconfig, which is obviously wrong in cross-compilation. + +Moreover, the lm-sensors program making use of the iconv_*() API +already does it when __UCLIBC__ is *not* defined. In this case, the +iconv_*() functions are already part of the C library, so there is no +need to link against a separate library. Therefore, this patch simply +removes the libiconv handling. + +Signed-off-by: Thomas Petazzoni + +Index: b/prog/sensors/Module.mk +=================================================================== +--- a/prog/sensors/Module.mk ++++ b/prog/sensors/Module.mk +@@ -37,10 +37,8 @@ + REMOVESENSORSBIN := $(patsubst $(MODULE_DIR)/%,$(DESTDIR)$(BINDIR)/%,$(PROGSENSORSTARGETS)) + REMOVESENSORSMAN := $(patsubst $(MODULE_DIR)/%,$(DESTDIR)$(PROGSENSORSMAN1DIR)/%,$(PROGSENSORSMAN1FILES)) + +-LIBICONV := $(shell if /sbin/ldconfig -p | grep -q '/libiconv\.so$$' ; then echo \-liconv; else echo; fi) +- + $(PROGSENSORSTARGETS): $(PROGSENSORSSOURCES:.c=.ro) lib/$(LIBDEP_FOR_PROGS) +- $(CC) $(EXLDFLAGS) -o $@ $(PROGSENSORSSOURCES:.c=.ro) $(LIBICONV) -Llib -lsensors -lm ++ $(CC) $(EXLDFLAGS) -o $@ $(PROGSENSORSSOURCES:.c=.ro) -Llib -lsensors -lm + + all-prog-sensors: $(PROGSENSORSTARGETS) + user :: all-prog-sensors diff --git a/package/lm-sensors/Config.in b/package/lm-sensors/Config.in new file mode 100644 index 00000000..a2e02759 --- /dev/null +++ b/package/lm-sensors/Config.in @@ -0,0 +1,57 @@ +config BR2_PACKAGE_LM_SENSORS + bool "lm-sensors" + help + Lm-sensors is a hardware health monitoring package for + Linux. It allows you to access information from + temperature, voltage, and fan speed sensors. It + works with most newer systems. + + https://hwmon.wiki.kernel.org + +if BR2_PACKAGE_LM_SENSORS +comment "lm-sensors tools" + +config BR2_PACKAGE_LM_SENSORS_SENSORS + bool "sensors" + default y + help + Sensors is used to show the current readings of all sensor + chips. + +config BR2_PACKAGE_LM_SENSORS_FANCONTROL + bool "fancontrol" + help + Script for temperature driven fan control + +config BR2_PACKAGE_LM_SENSORS_ISADUMP + bool "isadump" + depends on BR2_i386 || BR2_x86_64 + help + Isadump is a small helper program to examine registers + visible through the ISA bus. + +config BR2_PACKAGE_LM_SENSORS_ISASET + bool "isaset" + depends on BR2_i386 || BR2_x86_64 + help + Isaset is a small helper program to set register visible + through the ISA bus. + +config BR2_PACKAGE_LM_SENSORS_PWMCONFIG + bool "pwmconfig" + help + Pwmconfig searches your sensors for pulse width modulation + (PWM) controls, and tests each one to see if it controls a fan + on your motherboard. + +config BR2_PACKAGE_LM_SENSORS_SENSORS_DETECT + bool "sensors-detect" + depends on BR2_PACKAGE_PERL + help + Sensors-detect is an interactive program for detecting + available hardware monitoring chips. + +comment "sensors-detect needs perl" + depends on !BR2_PACKAGE_PERL + +endif diff --git a/package/lm-sensors/lm-sensors.hash b/package/lm-sensors/lm-sensors.hash new file mode 100644 index 00000000..c9410433 --- /dev/null +++ b/package/lm-sensors/lm-sensors.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 0591f9fa0339f0d15e75326d0365871c2d4e2ed8aa1ff759b3a55d3734b7d197 lm-sensors-3.6.0.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPL diff --git a/package/lm-sensors/lm-sensors.mk b/package/lm-sensors/lm-sensors.mk new file mode 100644 index 00000000..1bf27fc2 --- /dev/null +++ b/package/lm-sensors/lm-sensors.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# lm-sensors +# +################################################################################ + +LM_SENSORS_VERSION = 3.6.0 +LM_SENSORS_SITE = \ + $(call github,lm-sensors,lm-sensors,V$(subst .,-,$(LM_SENSORS_VERSION))) +LM_SENSORS_INSTALL_STAGING = YES +LM_SENSORS_DEPENDENCIES = host-bison host-flex +LM_SENSORS_LICENSE = LGPL-2.1+ (libsensors), GPL-2.0+ (programs) +LM_SENSORS_LICENSE_FILES = COPYING.LGPL COPYING + +LM_SENSORS_BINS_ = bin/sensors-conf-convert +LM_SENSORS_BINS_$(BR2_PACKAGE_LM_SENSORS_SENSORS) += bin/sensors +LM_SENSORS_BINS_$(BR2_PACKAGE_LM_SENSORS_FANCONTROL) += sbin/fancontrol +LM_SENSORS_BINS_$(BR2_PACKAGE_LM_SENSORS_ISADUMP) += sbin/isadump +LM_SENSORS_BINS_$(BR2_PACKAGE_LM_SENSORS_ISASET) += sbin/isaset +LM_SENSORS_BINS_$(BR2_PACKAGE_LM_SENSORS_PWMCONFIG) += sbin/pwmconfig +LM_SENSORS_BINS_$(BR2_PACKAGE_LM_SENSORS_SENSORS_DETECT) += sbin/sensors-detect + +LM_SENSORS_MAKE_OPTS = \ + $(TARGET_CONFIGURE_OPTS) \ + PREFIX=/usr + +ifeq ($(BR2_STATIC_LIBS),y) +LM_SENSORS_MAKE_OPTS += BUILD_SHARED_LIB=0 EXLDFLAGS=-static +else +LM_SENSORS_MAKE_OPTS += BUILD_SHARED_LIB=1 +endif + +ifeq ($(BR2_SHARED_LIBS),y) +LM_SENSORS_MAKE_OPTS += BUILD_STATIC_LIB=0 +else +LM_SENSORS_MAKE_OPTS += BUILD_STATIC_LIB=1 +endif + +define LM_SENSORS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(LM_SENSORS_MAKE_OPTS) -C $(@D) +endef + +define LM_SENSORS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LM_SENSORS_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install + rm -f $(addprefix $(STAGING_DIR)/usr/,$(LM_SENSORS_BINS_) $(LM_SENSORS_BINS_y)) +endef + +define LM_SENSORS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LM_SENSORS_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install + rm -f $(addprefix $(TARGET_DIR)/usr/,$(LM_SENSORS_BINS_)) +endef + +$(eval $(generic-package)) diff --git a/package/lmbench/0001-scripts-build-use-bin-bash-as-shell.patch b/package/lmbench/0001-scripts-build-use-bin-bash-as-shell.patch new file mode 100644 index 00000000..b7e1dc64 --- /dev/null +++ b/package/lmbench/0001-scripts-build-use-bin-bash-as-shell.patch @@ -0,0 +1,28 @@ +From 02a538c2b4b54b41d23dbd7668714ea4d2016131 Mon Sep 17 00:00:00 2001 +From: Markus Mayer +Date: Thu, 13 Jun 2019 12:27:04 -0700 +Subject: [PATCH] scripts/build: use /bin/bash as shell + +scripts/build makes use of the "+=" operator which is not supported by +/bin/sh. We switch to /bin/bash in order to avoid errors of the form + + ../scripts/build: 21: ../scripts/build: LDLIBS+= -lm: not found + +Signed-off-by: Markus Mayer +--- + scripts/build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/scripts/build b/scripts/build +index 34a1371d0056..60b755cd2320 100755 +--- a/scripts/build ++++ b/scripts/build +@@ -1,4 +1,4 @@ +-#!/bin/sh ++#!/bin/bash + + CC=${CC-`../scripts/compiler`} + MAKE=${MAKE-`../scripts/make`} +-- +2.17.1 + diff --git a/package/lmbench/0002-src-Makefile-add-lmbench-to-list-of-executables.patch b/package/lmbench/0002-src-Makefile-add-lmbench-to-list-of-executables.patch new file mode 100644 index 00000000..f5067a6b --- /dev/null +++ b/package/lmbench/0002-src-Makefile-add-lmbench-to-list-of-executables.patch @@ -0,0 +1,29 @@ +From c158a02561c64d0cd236f86db24cc20d0378eb72 Mon Sep 17 00:00:00 2001 +From: Markus Mayer +Date: Thu, 13 Jun 2019 12:28:54 -0700 +Subject: [PATCH] src/Makefile: add lmbench to list of executables + +We want to install the lmbench script along with the other executables, +so we add it to the appropriate list. + +Signed-off-by: Markus Mayer +--- + src/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/Makefile b/src/Makefile +index 4962815b5fe7..70dbc6794898 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -98,7 +98,7 @@ EXES = $O/bw_file_rd $O/bw_mem $O/bw_mmap_rd $O/bw_pipe $O/bw_tcp \ + $O/lat_select $O/lat_pipe $O/lat_rpc $O/lat_syscall $O/lat_tcp \ + $O/lat_udp $O/lat_mmap $O/mhz $O/lat_proc $O/lat_pagefault \ + $O/lat_connect $O/lat_fs $O/lat_sig $O/lat_mem_rd $O/lat_ctx \ +- $O/lat_sem \ ++ $O/lat_sem $O/lmbench \ + $O/memsize $O/lat_unix $O/lmdd $O/timing_o $O/enough \ + $O/msleep $O/loop_o $O/lat_fifo $O/lmhttp $O/lat_http \ + $O/lat_fcntl $O/disk $O/lat_unix_connect $O/flushdisk \ +-- +2.17.1 + diff --git a/package/lmbench/0003-TOO_LONG-100-usec-to-prevent-memsize-from-timingout-.patch b/package/lmbench/0003-TOO_LONG-100-usec-to-prevent-memsize-from-timingout-.patch new file mode 100644 index 00000000..6c3e7370 --- /dev/null +++ b/package/lmbench/0003-TOO_LONG-100-usec-to-prevent-memsize-from-timingout-.patch @@ -0,0 +1,28 @@ +From d85b61666aa2728f68b69d02bfb162c432df709f Mon Sep 17 00:00:00 2001 +From: vgupta +Date: Sat, 3 Mar 2012 10:02:24 +0000 +Subject: [PATCH] TOO_LONG 100 usec to prevent memsize from timingout @80Mhz + +git-svn-id: http://sjvm-subversion02.internal.synopsys.com/svn/OSS/ARC_Linux/tests/lmbench-3.0-a9@157318 4eed8e25-bc12-0410-818a-f70ee6866280 + +Signed-off-by: Vineet Gupta +--- + src/memsize.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/memsize.c b/src/memsize.c +index eb25a0924872..b333cf8cbd32 100644 +--- a/src/memsize.c ++++ b/src/memsize.c +@@ -15,7 +15,7 @@ char *id = "$Id$\n"; + #define CHK(x) if ((x) == -1) { perror("x"); exit(1); } + + #ifndef TOO_LONG +-#define TOO_LONG 10 /* usecs */ ++#define TOO_LONG 100 /* usecs */ + #endif + + int alarm_triggered = 0; +-- +2.25.1 + diff --git a/package/lmbench/0004-Fix-garbage-pointer-for-lat_rpc-S-localhost.patch b/package/lmbench/0004-Fix-garbage-pointer-for-lat_rpc-S-localhost.patch new file mode 100644 index 00000000..619ec386 --- /dev/null +++ b/package/lmbench/0004-Fix-garbage-pointer-for-lat_rpc-S-localhost.patch @@ -0,0 +1,25 @@ +From 3830453a06269912d2772fe8c31bae44f27bb131 Mon Sep 17 00:00:00 2001 +From: Vineet Gupta +Date: Fri, 8 May 2015 11:35:58 +0530 +Subject: [PATCH] Fix garbage pointer for lat_rpc -S localhost + +Signed-off-by: Vineet Gupta +--- + src/lat_rpc.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/lat_rpc.c b/src/lat_rpc.c +index 9c021926d761..ff4380ff38f3 100644 +--- a/src/lat_rpc.c ++++ b/src/lat_rpc.c +@@ -101,6 +101,7 @@ main(int ac, char **av) + char *usage = "-s\n OR [-p ] [-P parallel] [-W ] [-N ] serverhost\n OR -S serverhost\n"; + + state.msize = 1; ++ state.server = NULL; + + while (( c = getopt(ac, av, "sS:m:p:P:W:N:")) != EOF) { + switch(c) { +-- +2.25.1 + diff --git a/package/lmbench/Config.in b/package/lmbench/Config.in new file mode 100644 index 00000000..33778e4d --- /dev/null +++ b/package/lmbench/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LMBENCH + bool "lmbench" + depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC || BR2_TOOLCHAIN_HAS_THREADS # libtirpc + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + help + LMbench is a suite of simple, portable, + ANSI/C microbenchmarks for UNIX/POSIX. + + http://sourceforge.net/projects/lmbench/ + +comment "lmbench needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !(BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_HAS_NATIVE_RPC) diff --git a/package/lmbench/lmbench.hash b/package/lmbench/lmbench.hash new file mode 100644 index 00000000..25c150f4 --- /dev/null +++ b/package/lmbench/lmbench.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 cbd5777d15f44eab7666dcac418054c3c09df99826961a397d9acf43d8a2a551 lmbench-3.0-a9.tgz +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING +sha256 3be7a155efa448db90071a95fbf81796f8f90edf9204f0463cfd23402dc90a72 COPYING-2 diff --git a/package/lmbench/lmbench.mk b/package/lmbench/lmbench.mk new file mode 100644 index 00000000..b0f99ff1 --- /dev/null +++ b/package/lmbench/lmbench.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# lmbench +# +################################################################################ + +LMBENCH_VERSION = 3.0-a9 +LMBENCH_SOURCE = lmbench-$(LMBENCH_VERSION).tgz +LMBENCH_SITE = http://downloads.sourceforge.net/project/lmbench/development/lmbench-$(LMBENCH_VERSION) +LMBENCH_LICENSE = lmbench license (based on GPL-2.0) +LMBENCH_LICENSE_FILES = COPYING COPYING-2 + +LMBENCH_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +LMBENCH_DEPENDENCIES += host-pkgconf libtirpc +LMBENCH_CFLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc` +LMBENCH_LDLIBS = `$(PKG_CONFIG_HOST_BINARY) --libs libtirpc` +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_101915),y) +LMBENCH_CFLAGS += -O0 +endif + +LMBENCH_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK + +define LMBENCH_CONFIGURE_CMDS + sed -i 's/CFLAGS=/CFLAGS+=/g' $(@D)/src/Makefile + sed -i 's/LDLIBS=/LDLIBS+=/g' $(@D)/scripts/build + sed -i '/cd .*doc/d' $(@D)/src/Makefile + sed -i '/include/d' $(@D)/src/Makefile + touch $@ +endef + +# Note: there is a second stage 'make' invocation from the 'scripts/build' +# script. So the variables override below don't take direct effect in +# src/Makefile. +define LMBENCH_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CFLAGS="$(LMBENCH_CFLAGS)" LDLIBS="$(LMBENCH_LDLIBS)" OS=$(ARCH) CC="$(TARGET_CC)" -C $(@D)/src +endef + +define LMBENCH_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CFLAGS="$(TARGET_CFLAGS)" OS=$(ARCH) CC="$(TARGET_CC)" BASE=$(TARGET_DIR)/usr -C $(@D)/src install +endef + +$(eval $(generic-package)) diff --git a/package/lmdb/Config.in b/package/lmdb/Config.in new file mode 100644 index 00000000..f4ae9f31 --- /dev/null +++ b/package/lmdb/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LMDB + bool "lmdb" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + OpenLDAP Lightning Memory-Mapped Database + + LMDB is compact, fast, powerful, and robust and implements + a simplified variant of the BerkeleyDB (BDB) API. + + https://symas.com/lmdb/ + +comment "lmdb needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/lmdb/lmdb.hash b/package/lmdb/lmdb.hash new file mode 100644 index 00000000..d72c66aa --- /dev/null +++ b/package/lmdb/lmdb.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 dd70a8c67807b3b8532b3e987b0a4e998962ecc28643e1af5ec77696b081c9b0 lmdb-0.9.31.tar.gz +sha256 310fe25c858a9515fc8c8d7d1f24a67c9496f84a91e0a0e41ea9975b1371e569 libraries/liblmdb/LICENSE diff --git a/package/lmdb/lmdb.mk b/package/lmdb/lmdb.mk new file mode 100644 index 00000000..86d72e1a --- /dev/null +++ b/package/lmdb/lmdb.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# lmdb +# +################################################################################ + +LMDB_VERSION = 0.9.31 +LMDB_SITE = $(call github,LMDB,lmdb,LMDB_$(LMDB_VERSION)) +LMDB_LICENSE = OLDAP-2.8 +LMDB_LICENSE_FILES = libraries/liblmdb/LICENSE +LMDB_INSTALL_STAGING = YES + +ifeq ($(BR2_STATIC_LIBS),y) +LMDB_ILBIBS += liblmdb.a +else ifeq ($(BR2_SHARED_LIBS),y) +LMDB_ILBIBS += liblmdb.so +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +LMDB_ILBIBS += liblmdb.a liblmdb.so +endif + +LMDB_MAKE_OPTS += \ + AR="$(TARGET_AR)" \ + CC="$(TARGET_CC)" \ + ILIBS="$(LMDB_ILBIBS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + OPT="" \ + XCFLAGS="$(TARGET_CFLAGS)" + +define LMDB_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libraries/liblmdb $(LMDB_MAKE_OPTS) +endef + +define LMDB_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libraries/liblmdb \ + $(LMDB_MAKE_OPTS) \ + DESTDIR="$(STAGING_DIR)" \ + prefix=/usr \ + install +endef + +define LMDB_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libraries/liblmdb \ + $(LMDB_MAKE_OPTS) \ + DESTDIR="$(TARGET_DIR)" \ + prefix=/usr \ + install +endef + +$(eval $(generic-package)) diff --git a/package/localedef/0001-HACK-only-build-and-install-localedef.patch b/package/localedef/0001-HACK-only-build-and-install-localedef.patch new file mode 100644 index 00000000..a65c896e --- /dev/null +++ b/package/localedef/0001-HACK-only-build-and-install-localedef.patch @@ -0,0 +1,74 @@ +From bd5a87ea4a0cc0ba393a16bbeb166903e4085e8b Mon Sep 17 00:00:00 2001 +From: Michael Olbrich +Date: Mon, 21 May 2018 16:45:02 +0200 +Subject: [PATCH] HACK: only build and install localedef + +Signed-off-by: Michael Olbrich + +Upstream: https://git.pengutronix.de/cgit/ptxdist/plain/patches/localedef-glibc-2.27/0001-HACK-only-build-and-install-localedef.patch?id=47116f66f411d4dadfce42c2fdd6d41b351ccfd4 +Signed-off-by: Peter Seiderer +[Romain: rebase on 2.38] +Signed-off-by: Romain Naour +[yann.morin.1998@free.fr: rebase for 2.39] +Signed-off-by: Yann E. MORIN +--- + Rules | 14 ++++++++++---- + locale/Makefile | 6 +++--- + 2 files changed, 13 insertions(+), 7 deletions(-) + +diff --git a/Rules b/Rules +index 279ae490ac..1321956be6 100644 +--- a/Rules ++++ b/Rules +@@ -221,10 +221,16 @@ binaries-shared-notests = $(filter-out $(binaries-pie) $(binaries-static), \ + $(binaries-all-notests)) + + ifneq "$(strip $(binaries-shared-notests))" "" +-$(addprefix $(objpfx),$(binaries-shared-notests)): %: %.o \ +- $(sort $(filter $(common-objpfx)lib%,$(link-libc))) \ +- $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit) +- $(+link) ++$(addprefix $(objpfx),$(binaries-shared-notests)): %: %.o ++ $(CC) -o $@ \ ++ $(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \ ++ $(combreloc-LDFLAGS) $(relro-LDFLAGS) $(hashstyle-LDFLAGS) \ ++ $(filter-out $(addprefix $(csu-objpfx),start.o \ ++ $(start-installed-name))\ ++ $(+preinit) \ ++ $(link-extra-libs) \ ++ $(common-objpfx)libc% $(+postinit),$^) \ ++ $(link-extra-libs) + endif + + ifneq "$(strip $(binaries-shared-tests))" "" +diff --git a/locale/Makefile b/locale/Makefile +index d7036b0855..68afdddc7f 100644 +--- a/locale/Makefile ++++ b/locale/Makefile +@@ -76,7 +76,6 @@ + xlocale \ + # aux + others = \ +- locale \ + localedef \ + # others + #others-static = \ +@@ -84,7 +83,6 @@ + # locale \ + # # others-static + install-bin = \ +- locale \ + localedef \ + # install-bin + extra-objs = \ +@@ -96,7 +94,6 @@ + generated += C-translit.h + before-compile += $(objpfx)C-translit.h + +-extra-libs = libBrokenLocale + extra-libs-others = $(extra-libs) + + libBrokenLocale-routines = broken_cur_max +-- +2.41.0 + diff --git a/package/localedef/0002-relax-dependency-on-GCC-to-4.8-and-binutils-to-2.24.patch b/package/localedef/0002-relax-dependency-on-GCC-to-4.8-and-binutils-to-2.24.patch new file mode 100644 index 00000000..1aecc244 --- /dev/null +++ b/package/localedef/0002-relax-dependency-on-GCC-to-4.8-and-binutils-to-2.24.patch @@ -0,0 +1,61 @@ +From add730a680075ed611797b9ea771bf977667a7de Mon Sep 17 00:00:00 2001 +From: Matt Weber +Date: Thu, 6 Feb 2020 14:36:21 -0600 +Subject: [PATCH] relax dependency on GCC to 4.8 and binutils to 2.24 + +The glibc package has been updating the toolchain version +dependency since 2.28.x. The dependencies don't currently +apply to the localedef build of the package, so this +patchset relaxes the restriction such that builds can still +occur on older host machines. + +Here's a related post from 2018 for a similar patchset. +http://lists.busybox.net/pipermail/buildroot/2018-December/237949.html + +Timeline of relevant commits that adjust the dependency upstream. +GCC 4.9+ + https://sourceware.org/git/?p=glibc.git;a=commit;h=4add86749a31f302674599b69d2eea691d69341a +Binutils 2.25+ + https://sourceware.org/git/?p=glibc.git;a=commit;h=073e8fa7739ed453d6854b834f290c263a6cdb9f + https://sourceware.org/git/?p=glibc.git;a=commit;h=b4396163aa8666f970aaf43eaca25f3a92b18c1b +GCC 5+ + https://sourceware.org/git/?p=glibc.git;a=commit;h=192963be49678b48f60218f1f794991cdd9fe472 +GCC 6.2+ + https://sourceware.org/git/?p=glibc.git;a=commit;h=4dcbbc3b28aaeafe23e1a30db84055aa6f6fa987 + +Signed-off-by: Matthew Weber +[yann.morin.1998@free.fr: update for 2.37] +Signed-off-by: Yann E. MORIN +[Romain: rebase on 2.38] +Signed-off-by: Romain Naour +[yann.morin.1998@free.fr: rebase for 2.39] +Signed-off-by: Yann E. MORIN +--- + configure | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure b/configure +index 4ef387146d..4c6f91117d 100755 +--- a/configure ++++ b/configure +@@ -5157,7 +5157,7 @@ printf %s "checking version of $LD... " >&6; } + ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; +- 2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*) ++ 2.1[0-9][0-9]*|2.2[4-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + +@@ -5599,7 +5599,7 @@ int + main (void) + { + +-#if !defined __GNUC__ || __GNUC__ < 6 || (__GNUC__ == 6 && __GNUC_MINOR__ < 2) ++#if !defined __GNUC__ || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8) + #error insufficient compiler + #endif + ; +-- +2.41.0 + diff --git a/package/localedef/0003-HACK-keep-_ISOC2X_SOURCE-undefined-to-build-localede.patch b/package/localedef/0003-HACK-keep-_ISOC2X_SOURCE-undefined-to-build-localede.patch new file mode 100644 index 00000000..741bd7b4 --- /dev/null +++ b/package/localedef/0003-HACK-keep-_ISOC2X_SOURCE-undefined-to-build-localede.patch @@ -0,0 +1,32 @@ +From babfa64585bef6c53c1d399a1c244aea89437c9e Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 9 Sep 2023 23:58:50 +0200 +Subject: [PATCH] HACK: keep _ISOC2X_SOURCE undefined to build localedef with + old glibc + +Fixes: +host-localedef-2.38-13-g92201f16cbcfd9eafe314ef6654be2ea7ba25675/build/locale/ld-ctype.o: in function `ctype_read': +ld-ctype.c:(.text+0x6cef): undefined reference to `__isoc23_strtoul' + +Upstream: Not applicable + +Signed-off-by: Romain Naour +--- + include/features.h | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/include/features.h b/include/features.h +index 7c51b4a2e4..f385370d18 100644 +--- a/include/features.h ++++ b/include/features.h +@@ -207,7 +207,6 @@ + # undef _ISOC11_SOURCE + # define _ISOC11_SOURCE 1 + # undef _ISOC2X_SOURCE +-# define _ISOC2X_SOURCE 1 + # undef _POSIX_SOURCE + # define _POSIX_SOURCE 1 + # undef _POSIX_C_SOURCE +-- +2.41.0 + diff --git a/package/localedef/localedef.hash b/package/localedef/localedef.hash new file mode 120000 index 00000000..86320aa5 --- /dev/null +++ b/package/localedef/localedef.hash @@ -0,0 +1 @@ +../glibc/glibc.hash \ No newline at end of file diff --git a/package/localedef/localedef.mk b/package/localedef/localedef.mk new file mode 100644 index 00000000..6940900f --- /dev/null +++ b/package/localedef/localedef.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# localedef +# +################################################################################ + +# Use the same VERSION and SITE as target glibc +# As in glibc.mk, generate version string using: +# git describe --match 'glibc-*' --abbrev=40 origin/release/MAJOR.MINOR/master | cut -d '-' -f 2- +LOCALEDEF_VERSION = 2.39-74-g198632a05f6c7b9ab67d3331d8caace9ceabb685 +LOCALEDEF_SOURCE = glibc-$(LOCALEDEF_VERSION).tar.gz +LOCALEDEF_SITE = $(call github,bminor,glibc,$(LOCALEDEF_VERSION)) +HOST_LOCALEDEF_DL_SUBDIR = glibc + +HOST_LOCALEDEF_DEPENDENCIES = \ + $(BR2_MAKE_HOST_DEPENDENCY) \ + $(BR2_PYTHON3_HOST_DEPENDENCY) \ + host-bison \ + host-gawk + +HOST_LOCALEDEF_CONF_ENV += ac_cv_prog_MAKE="$(BR2_MAKE)" + +# Even though we use the autotools-package infrastructure, we have to override +# the default configure commands for since we have to build out-of-tree, but we +# can't use the same 'symbolic link to configure' used with the gcc packages. +define HOST_LOCALEDEF_CONFIGURE_CMDS + mkdir -p $(@D)/build + # Do the configuration + (cd $(@D)/build; \ + $(HOST_LOCALEDEF_CONF_ENV) \ + $(HOST_CONFIGURE_OPTS) \ + $(SHELL) $(@D)/configure \ + libc_cv_forced_unwind=yes \ + libc_cv_ssp=no \ + --target=$(GNU_HOST_NAME) \ + --host=$(GNU_HOST_NAME) \ + --build=$(GNU_HOST_NAME) \ + --prefix=/usr \ + --with-pkgversion="Buildroot" \ + --without-cvs \ + --disable-profile \ + --without-gd \ + --enable-obsolete-rpc) +endef + +define HOST_LOCALEDEF_BUILD_CMDS + $(HOST_MAKE_ENV) $(BR2_MAKE1) $(HOST_LOCALEDEF_MAKE_OPTS) \ + -C $(@D)/build locale/others +endef + +# The makefile does not implement an install target for localedef +define HOST_LOCALEDEF_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/build/locale/localedef $(HOST_DIR)/bin/localedef +endef + +$(eval $(host-autotools-package)) diff --git a/package/lockdev/0001-Makefile-install-static-library-and-headers-separate.patch b/package/lockdev/0001-Makefile-install-static-library-and-headers-separate.patch new file mode 100644 index 00000000..d5a498a1 --- /dev/null +++ b/package/lockdev/0001-Makefile-install-static-library-and-headers-separate.patch @@ -0,0 +1,44 @@ +From 0dcd2368c3e23a5cc1cc4a979d9c241ed9302236 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 4 Jan 2015 16:06:07 +0100 +Subject: [PATCH] Makefile: install static library and headers separately + +Signed-off-by: Romain Naour +--- + Makefile | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +diff --git a/Makefile b/Makefile +index e27dcbd..ecf52d1 100644 +--- a/Makefile ++++ b/Makefile +@@ -45,12 +45,10 @@ perl-lib: static + cd LockDev && make OPTIMIZE="-O2 -g -Wall" + cd LockDev && make test + +-.PHONY: install install_dev install_dbg install_doc install_run +-install: install_dev install_dbg install_doc install_run ++.PHONY: install install_dev install_dbg install_doc install_run install_static ++install: install_dev install_dbg install_doc install_run install_static + +-install_dev: ${static} src/lockdev.h +- install -m755 -d ${libdir} +- install -m644 ${static} ${libdir} ++install_dev: src/lockdev.h + install -m755 -d ${incdir} + install -m644 src/lockdev.h ${incdir} + install -m644 src/ttylock.h ${incdir} +@@ -69,6 +67,10 @@ install_doc: docs/lockdev.3 + install -m755 -d ${mandir}/man3 + install -m644 docs/lockdev.3 ${mandir}/man3 + ++install_static: ${static} ++ install -m755 -d ${libdir} ++ install -m644 ${static} ${libdir} ++ + install_run: ${shared} + install -m755 -d ${libdir} + install -m644 ${shared} ${libdir} +-- +1.9.3 + diff --git a/package/lockdev/Config.in b/package/lockdev/Config.in new file mode 100644 index 00000000..4b386f4a --- /dev/null +++ b/package/lockdev/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LOCKDEV + bool "lockdev" + help + Library for locking devices. + + No upstream site, primary site is Debian. diff --git a/package/lockdev/lockdev.hash b/package/lockdev/lockdev.hash new file mode 100644 index 00000000..e32466df --- /dev/null +++ b/package/lockdev/lockdev.hash @@ -0,0 +1,5 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/l/lockdev/lockdev_1.0.3-1.6.dsc +sha256 ccae635d7ac3fdd50897eceb250872b3d9a191d298f213e7f0c836910d869f82 lockdev_1.0.3.orig.tar.gz +sha256 a5405c6ee5e97e45eeb1c81330a7e9f444a58bda5e6771fa30007516c115007e lockdev_1.0.3-1.6.diff.gz +# Locally calculated +sha256 5bbcbb737e60fe9deba08ecbd00920cfcc3403ba2e534c64fdeea49d6bb87509 LICENSE diff --git a/package/lockdev/lockdev.mk b/package/lockdev/lockdev.mk new file mode 100644 index 00000000..e491b132 --- /dev/null +++ b/package/lockdev/lockdev.mk @@ -0,0 +1,58 @@ +################################################################################ +# +# lockdev +# +################################################################################ + +LOCKDEV_VERSION_MAJOR = 1 +LOCKDEV_VERSION = $(LOCKDEV_VERSION_MAJOR).0.3 +LOCKDEV_SOURCE = lockdev_$(LOCKDEV_VERSION).orig.tar.gz +LOCKDEV_PATCH = lockdev_$(LOCKDEV_VERSION)-1.6.diff.gz +LOCKDEV_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/l/lockdev +LOCKDEV_LICENSE = LGPL-2.1 +LOCKDEV_LICENSE_FILES = LICENSE +LOCKDEV_INSTALL_STAGING = YES + +ifeq ($(BR2_STATIC_LIBS),y) +LOCKDEV_BUILD_ARGS = static +LOCKDEV_INSTALL_ARGS = install_static +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +LOCKDEV_BUILD_ARGS = static shared +LOCKDEV_INSTALL_ARGS = install_run install_static +else # BR2_SHARED_LIBS +LOCKDEV_BUILD_ARGS = shared +LOCKDEV_INSTALL_ARGS = install_run +endif + +# Make the code believe we are using a C library compatible with +# glibc, which for the purpose of lockdev is actually true. +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +LOCKDEV_BUILD_ARGS += CFLAGS="$(TARGET_CFLAGS) -D__GNU_LIBRARY__" +endif + +ifeq ($(BR2_SHARED_STATIC_LIBS)$(BR2_SHARED_LIBS),y) +define LOCKDEV_CREATE_LINKS_STAGING + ln -sf liblockdev.$(LOCKDEV_VERSION).so $(STAGING_DIR)/usr/lib/liblockdev.so + ln -sf liblockdev.$(LOCKDEV_VERSION).so $(STAGING_DIR)/usr/lib/liblockdev.so.$(LOCKDEV_VERSION_MAJOR) +endef + +define LOCKDEV_CREATE_LINKS_TARGET + ln -sf liblockdev.$(LOCKDEV_VERSION).so $(TARGET_DIR)/usr/lib/liblockdev.so.$(LOCKDEV_VERSION_MAJOR) +endef +endif + +define LOCKDEV_BUILD_CMDS + $(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D) $(LOCKDEV_BUILD_ARGS) +endef + +define LOCKDEV_INSTALL_STAGING_CMDS + $(MAKE1) basedir=$(STAGING_DIR)/usr -C $(@D) $(LOCKDEV_INSTALL_ARGS) install_dev + $(LOCKDEV_CREATE_LINKS_STAGING) +endef + +define LOCKDEV_INSTALL_TARGET_CMDS + $(MAKE1) basedir=$(TARGET_DIR)/usr -C $(@D) $(LOCKDEV_INSTALL_ARGS) + $(LOCKDEV_CREATE_LINKS_TARGET) +endef + +$(eval $(generic-package)) diff --git a/package/lockfile-progs/0001-sus3v-legacy.patch b/package/lockfile-progs/0001-sus3v-legacy.patch new file mode 100644 index 00000000..8cf552ef --- /dev/null +++ b/package/lockfile-progs/0001-sus3v-legacy.patch @@ -0,0 +1,11 @@ +--- /lockfile-progs.orig.c 2007-10-11 10:32:09.000000000 -0300 ++++ /lockfile-progs.c 2007-10-11 10:32:28.000000000 -0300 +@@ -93,7 +93,7 @@ + { NULL, 0, NULL, 0 } + }; + +- char *cmd_name = rindex(argv[0], '/'); ++ char *cmd_name = strrchr(argv[0], '/'); + int mail_cmd_p = 0; + + if(cmd_name != NULL) { diff --git a/package/lockfile-progs/Config.in b/package/lockfile-progs/Config.in new file mode 100644 index 00000000..b9dbca96 --- /dev/null +++ b/package/lockfile-progs/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LOCKFILE_PROGS + bool "lockfile programs" + depends on BR2_USE_MMU # liblockfile + select BR2_PACKAGE_LIBLOCKFILE + help + Build lockfile utility programs. diff --git a/package/lockfile-progs/lockfile-progs.hash b/package/lockfile-progs/lockfile-progs.hash new file mode 100644 index 00000000..bf318350 --- /dev/null +++ b/package/lockfile-progs/lockfile-progs.hash @@ -0,0 +1,5 @@ +# From https://snapshot.debian.org/archive/debian/20210903T205304Z/pool/main/l/lockfile-progs/lockfile-progs_0.1.19.dsc +sha256 2c5704b01c8f474f82921780e4592a927b2bf6a6d7616354a6c5d7cd5664857e lockfile-progs_0.1.19.tar.gz + +# Hash for license file +sha256 dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa COPYING diff --git a/package/lockfile-progs/lockfile-progs.mk b/package/lockfile-progs/lockfile-progs.mk new file mode 100644 index 00000000..6045aa71 --- /dev/null +++ b/package/lockfile-progs/lockfile-progs.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# lockfile-progs +# +################################################################################ + +LOCKFILE_PROGS_VERSION = 0.1.19 +LOCKFILE_PROGS_SOURCE = lockfile-progs_$(LOCKFILE_PROGS_VERSION).tar.gz +LOCKFILE_PROGS_SITE = http://snapshot.debian.org/archive/debian/20210903T205304Z/pool/main/l/lockfile-progs +LOCKFILE_PROGS_DEPENDENCIES = liblockfile +LOCKFILE_PROGS_LICENSE = GPL-2.0 +LOCKFILE_PROGS_LICENSE_FILES = COPYING + +LOCKFILE_PROGS_BINS = \ + $(addprefix lockfile-,check create remove touch) \ + $(addprefix mail-,lock touchlock unlock) + +define LOCKFILE_PROGS_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define LOCKFILE_PROGS_INSTALL_TARGET_CMDS + for i in $(LOCKFILE_PROGS_BINS); do \ + $(INSTALL) -D -m 755 $(@D)/bin/$$i $(TARGET_DIR)/usr/bin/$$i || exit 1; \ + done +endef + +$(eval $(generic-package)) diff --git a/package/log4cplus/Config.in b/package/log4cplus/Config.in new file mode 100644 index 00000000..cd5476a0 --- /dev/null +++ b/package/log4cplus/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_LOG4CPLUS + bool "log4cplus" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::future + help + log4cplus is a simple to use C++ logging API providing + thread-safe, flexible, and arbitrarily granular control + over log management and configuration. It is modelled + after the Java log4j API. + + http://sourceforge.net/projects/log4cplus + +comment "log4cplus needs a toolchain w/ C++, wchar, threads, gcc >= 4.8" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +comment "log4cplus needs a toolchain not affected by GCC bug 64735" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/log4cplus/log4cplus.hash b/package/log4cplus/log4cplus.hash new file mode 100644 index 00000000..1779b309 --- /dev/null +++ b/package/log4cplus/log4cplus.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 d84ac8b1c46645122fbf72691f8eacef68c71b587403ee833bd9a252e06d46cc log4cplus-2.1.0.tar.xz +sha256 91d7e42ff80e74c4c94e5ad353375fa0358cd0abbf43f5fe957097cdbd4e2c4d LICENSE diff --git a/package/log4cplus/log4cplus.mk b/package/log4cplus/log4cplus.mk new file mode 100644 index 00000000..28eb4ed8 --- /dev/null +++ b/package/log4cplus/log4cplus.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# log4cplus +# +################################################################################ + +LOG4CPLUS_VERSION = 2.1.0 +LOG4CPLUS_SOURCE = log4cplus-$(LOG4CPLUS_VERSION).tar.xz +LOG4CPLUS_SITE = http://downloads.sourceforge.net/project/log4cplus/log4cplus-stable/$(LOG4CPLUS_VERSION) +LOG4CPLUS_LICENSE = Apache-2.0, BSD-2-Clause, BSD-like (threadpool) +LOG4CPLUS_LICENSE_FILES = LICENSE +LOG4CPLUS_INSTALL_STAGING = YES + +ifeq ($(BR2_ENABLE_LTO),y) +LOG4CPLUS_CONF_OPTS += --enable-lto +else +LOG4CPLUS_CONF_OPTS += --disable-lto +endif + +ifeq ($(BR2_PACKAGE_QT5BASE),y) +LOG4CPLUS_DEPENDENCIES += host-pkgconf qt5base +LOG4CPLUS_CONF_OPTS += --with-qt5 +else +LOG4CPLUS_CONF_OPTS += --without-qt5 +endif + +$(eval $(autotools-package)) diff --git a/package/log4cpp/Config.in b/package/log4cpp/Config.in new file mode 100644 index 00000000..090bf565 --- /dev/null +++ b/package/log4cpp/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LOG4CPP + bool "log4cpp" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Log4cpp is library of C++ classes for flexible logging to + files, syslog, IDSA and other destinations. It is modeled + after the Log4j Java library, staying as close to their API + as is reasonable. + + http://log4cpp.sourceforge.net/ + +comment "log4cpp needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/log4cpp/log4cpp.hash b/package/log4cpp/log4cpp.hash new file mode 100644 index 00000000..20b5ade3 --- /dev/null +++ b/package/log4cpp/log4cpp.hash @@ -0,0 +1,6 @@ +# From http://sourceforge.net/projects/log4cpp/files/log4cpp-1.1.x%20%28new%29/log4cpp-1.1/ +md5 d56ef8240014528c354da5b7e93015ca log4cpp-1.1.4.tar.gz +sha1 b32e6ec981a5d75864e1097525e1f502cc242d17 log4cpp-1.1.4.tar.gz +# Locally computed +sha256 696113659e426540625274a8b251052cc04306d8ee5c42a0c7639f39ca90c9d6 log4cpp-1.1.4.tar.gz +sha256 a190dc9c8043755d90f8b0a75fa66b9e42d4af4c980bf5ddc633f0124db3cee7 log4cpp/COPYING diff --git a/package/log4cpp/log4cpp.mk b/package/log4cpp/log4cpp.mk new file mode 100644 index 00000000..53c97e55 --- /dev/null +++ b/package/log4cpp/log4cpp.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# log4cpp +# +################################################################################ + +LOG4CPP_VERSION_MAJOR = 1.1 +LOG4CPP_VERSION = $(LOG4CPP_VERSION_MAJOR).4 +LOG4CPP_SITE = http://downloads.sourceforge.net/project/log4cpp/log4cpp-1.1.x%20%28new%29/log4cpp-$(LOG4CPP_VERSION_MAJOR) +LOG4CPP_SUBDIR = log4cpp +# The "or later" is indicated in the HTML documentation +LOG4CPP_LICENSE = LGPL-2.1+ +LOG4CPP_LICENSE_FILES = log4cpp/COPYING +LOG4CPP_INSTALL_STAGING = YES +LOG4CPP_CONF_OPTS = --enable-doxygen=no --enable-dot=no + +# The default _CONFIG_SCRIPTS handling does not apply +define LOG4CPP_STAGING_CONFIG_SCRIPT_FIXUP + $(SED) 's,prefix="/usr",prefix="$(STAGING_DIR)/usr",' \ + -e 's,exec_prefix="/usr",prefix="$(STAGING_DIR)/usr",' \ + $(STAGING_DIR)/usr/bin/log4cpp-config +endef + +LOG4CPP_POST_INSTALL_STAGING_HOOKS += LOG4CPP_STAGING_CONFIG_SCRIPT_FIXUP + +define LOG4CPP_TARGET_CONFIG_SCRIPT_REMOVE + $(RM) $(TARGET_DIR)/usr/bin/log4cpp-config +endef + +LOG4CPP_POST_INSTALL_TARGET_HOOKS += LOG4CPP_TARGET_CONFIG_SCRIPT_REMOVE + +$(eval $(autotools-package)) diff --git a/package/log4cxx/Config.in b/package/log4cxx/Config.in new file mode 100644 index 00000000..27a5f069 --- /dev/null +++ b/package/log4cxx/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_LOG4CXX + bool "log4cxx" + # apr really needs shared library support + depends on !BR2_STATIC_LIBS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # apr + depends on BR2_USE_WCHAR || BR2_TOOLCHAIN_GCC_AT_LEAST_7 # boost + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS || BR2_TOOLCHAIN_GCC_AT_LEAST_7 # boost-thread + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 || BR2_TOOLCHAIN_GCC_AT_LEAST_7 # boost-thread + select BR2_PACKAGE_APR + select BR2_PACKAGE_APR_UTIL + select BR2_PACKAGE_BOOST if !BR2_TOOLCHAIN_GCC_AT_LEAST_7 + select BR2_PACKAGE_BOOST_ATOMIC if !BR2_TOOLCHAIN_GCC_AT_LEAST_7 + select BR2_PACKAGE_BOOST_CHRONO if !BR2_TOOLCHAIN_GCC_AT_LEAST_7 + select BR2_PACKAGE_BOOST_DATE_TIME if !BR2_TOOLCHAIN_GCC_AT_LEAST_7 + select BR2_PACKAGE_BOOST_THREAD if !BR2_TOOLCHAIN_GCC_AT_LEAST_7 + help + Apache log4cxx is a logging framework for C++ patterned + after Apache log4j. + + https://logging.apache.org/log4cxx/ + +comment "log4cxx needs a toolchain w/ C++, threads, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS + depends on BR2_USE_MMU + +comment "log4cxx needs a toolchain w/ wchar or gcc >= 7" + depends on !(BR2_USE_WCHAR || BR2_TOOLCHAIN_GCC_AT_LEAST_7) + depends on BR2_USE_MMU + +comment "log4cxx needs a toolchain not affected by GCC bug 64735" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7 + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/log4cxx/log4cxx.hash b/package/log4cxx/log4cxx.hash new file mode 100644 index 00000000..728d49ee --- /dev/null +++ b/package/log4cxx/log4cxx.hash @@ -0,0 +1,4 @@ +# From https://www.apache.org/dist/logging/log4cxx/1.1.0/apache-log4cxx-1.1.0.tar.gz.sha512 +sha512 66a66eab933a6afd0779e3f73f65afa4fb82481208b591fd7c7c86ded805f50abcd9cdf954bdb49e1e7f5198e6c1c4fff8a7e180ff5fff9491f1946e9ba6fe2b apache-log4cxx-1.1.0.tar.gz +# Locally computed +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/log4cxx/log4cxx.mk b/package/log4cxx/log4cxx.mk new file mode 100644 index 00000000..8024c96d --- /dev/null +++ b/package/log4cxx/log4cxx.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# log4cxx +# +################################################################################ + +LOG4CXX_VERSION = 1.1.0 +LOG4CXX_SITE = https://archive.apache.org/dist/logging/log4cxx/$(LOG4CXX_VERSION) +LOG4CXX_SOURCE = apache-log4cxx-$(LOG4CXX_VERSION).tar.gz +LOG4CXX_INSTALL_STAGING = YES +LOG4CXX_LICENSE = Apache-2.0 +LOG4CXX_LICENSE_FILES = LICENSE +LOG4CXX_CPE_ID_VENDOR = apache + +LOG4CXX_CONF_OPTS = \ + -DAPR_CONFIG_EXECUTABLE=$(STAGING_DIR)/usr/bin/apr-1-config \ + -DAPR_UTIL_CONFIG_EXECUTABLE=$(STAGING_DIR)/usr/bin/apu-1-config + +LOG4CXX_DEPENDENCIES = apr apr-util + +ifeq ($(BR2_PACKAGE_BOOST),y) +LOG4CXX_DEPENDENCIES += boost +endif + +ifeq ($(BR2_PACKAGE_LIBESMTP),y) +LOG4CXX_CONF_OPTS += -DLOG4CXX_ENABLE_LIBESMTP=ON +LOG4CXX_DEPENDENCIES += libesmtp +else +LOG4CXX_CONF_OPTS += -DLOG4CXX_ENABLE_LIBESMTP=OFF +endif + +ifeq ($(BR2_PACKAGE_UNIXODBC),y) +LOG4CXX_CONF_OPTS += -DLOG4CXX_ENABLE_ODBC=ON +LOG4CXX_DEPENDENCIES += unixodbc +else +LOG4CXX_CONF_OPTS += -DLOG4CXX_ENABLE_ODBC=OFF +endif + +ifeq ($(BR2_USE_WCHAR),y) +LOG4CXX_CONF_OPTS += -DLOG4CXX_WCHAR_T=ON +else +LOG4CXX_CONF_OPTS += -DLOG4CXX_WCHAR_T=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/log4qt/Config.in b/package/log4qt/Config.in new file mode 100644 index 00000000..25cc6f07 --- /dev/null +++ b/package/log4qt/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LOG4QT + bool "log4qt" + depends on BR2_PACKAGE_QT5 + help + Log4Qt is a C++ port of the Apache Software Foundation + Log4j package using the Qt Framework. It is intended to be + used by open source and commercial Qt projects. + + https://github.com/MEONMedical/Log4Qt + +comment "log4qt needs qt5" + depends on !BR2_PACKAGE_QT5 diff --git a/package/log4qt/log4qt.hash b/package/log4qt/log4qt.hash new file mode 100644 index 00000000..757bab1a --- /dev/null +++ b/package/log4qt/log4qt.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 ff17b794ca7d5290a150a53f6272e6a30a7f4d942aa58298a8328bf10a65858a log4qt-1.5.1.tar.gz +sha256 c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08 LICENSE diff --git a/package/log4qt/log4qt.mk b/package/log4qt/log4qt.mk new file mode 100644 index 00000000..7144d33e --- /dev/null +++ b/package/log4qt/log4qt.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# log4qt +# +################################################################################ + +LOG4QT_VERSION = 1.5.1 +LOG4QT_SITE = $(call github,MEONMedical,Log4Qt,v$(LOG4QT_VERSION)) +LOG4QT_DEPENDENCIES = qt5base +LOG4QT_LICENSE = Apache-2.0 +LOG4QT_LICENSE_FILES = LICENSE +LOG4QT_INSTALL_STAGING = YES + +# Uses __atomic_fetch_add_4 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +LOG4QT_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_SQLITE_QT)$(BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM),y) +LOG4QT_CONF_OPTS += -DBUILD_WITH_DB_LOGGING=ON +else +LOG4QT_CONF_OPTS += -DBUILD_WITH_DB_LOGGING=OFF +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_NETWORK),y) +LOG4QT_CONF_OPTS += -DBUILD_WITH_TELNET_LOGGING=ON +else +LOG4QT_CONF_OPTS += -DBUILD_WITH_TELNET_LOGGING=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/logrotate/Config.in b/package/logrotate/Config.in new file mode 100644 index 00000000..eea9ec2a --- /dev/null +++ b/package/logrotate/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LOGROTATE + bool "logrotate" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_POPT + help + A simple program to rotate logs. + + https://github.com/logrotate/logrotate + +comment "logrotate needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR diff --git a/package/logrotate/logrotate.conf b/package/logrotate/logrotate.conf new file mode 100644 index 00000000..6d829dc9 --- /dev/null +++ b/package/logrotate/logrotate.conf @@ -0,0 +1,14 @@ +compress + +include /etc/logrotate.d + +/var/log/messages /var/log/auth.log /var/log/user.log { + rotate 7 + daily + delaycompress + missingok + sharedscripts + postrotate + /usr/bin/killall -HUP syslogd + endscript +} diff --git a/package/logrotate/logrotate.hash b/package/logrotate/logrotate.hash new file mode 100644 index 00000000..cc466a6f --- /dev/null +++ b/package/logrotate/logrotate.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 8fa12015e3b8415c121fc9c0ca53aa872f7b0702f543afda7e32b6c4900f6516 logrotate-3.21.0.tar.xz diff --git a/package/logrotate/logrotate.mk b/package/logrotate/logrotate.mk new file mode 100644 index 00000000..3fed1b95 --- /dev/null +++ b/package/logrotate/logrotate.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# logrotate +# +################################################################################ + +LOGROTATE_VERSION = 3.21.0 +LOGROTATE_SOURCE = logrotate-$(LOGROTATE_VERSION).tar.xz +LOGROTATE_SITE = https://github.com/logrotate/logrotate/releases/download/$(LOGROTATE_VERSION) +LOGROTATE_LICENSE = GPL-2.0+ +LOGROTATE_LICENSE_FILES = COPYING +LOGROTATE_CPE_ID_VALID = YES +LOGROTATE_DEPENDENCIES = popt host-pkgconf +LOGROTATE_SELINUX_MODULES = logrotate +LOGROTATE_CONF_ENV = LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs popt`" + +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 +LOGROTATE_CONF_OPTS += --with-acl +else +LOGROTATE_CONF_OPTS += --without-acl +endif + +define LOGROTATE_INSTALL_TARGET_CONF + $(INSTALL) -m 0644 package/logrotate/logrotate.conf $(TARGET_DIR)/etc/logrotate.conf + $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/logrotate.d +endef +LOGROTATE_POST_INSTALL_TARGET_HOOKS += LOGROTATE_INSTALL_TARGET_CONF + +$(eval $(autotools-package)) diff --git a/package/logsurfer/Config.in b/package/logsurfer/Config.in new file mode 100644 index 00000000..43e2f519 --- /dev/null +++ b/package/logsurfer/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LOGSURFER + bool "logsurfer" + depends on BR2_USE_MMU # fork() + help + Logsurfer is a program for monitoring system logs in + real-time, and reporting on the occurrence of events. + + http://www.crypt.gen.nz/logsurfer/ diff --git a/package/logsurfer/logsurfer.hash b/package/logsurfer/logsurfer.hash new file mode 100644 index 00000000..8e9f5c95 --- /dev/null +++ b/package/logsurfer/logsurfer.hash @@ -0,0 +1,3 @@ +# From https://www.crypt.gen.nz/logsurfer/ +md5 4c26a74d813ccf766117c95c644aa601 logsurfer-1.8.tar.gz +sha256 74a36e8530a884031b4ae2344a46b9aaa07a1ee36d143802f6b64f817c5bd1af logsurfer-1.8.tar.gz diff --git a/package/logsurfer/logsurfer.mk b/package/logsurfer/logsurfer.mk new file mode 100644 index 00000000..8eb9dc8f --- /dev/null +++ b/package/logsurfer/logsurfer.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# logsurfer +# +################################################################################ + +LOGSURFER_VERSION = 1.8 +LOGSURFER_SITE = http://downloads.sourceforge.net/project/logsurfer/logsurfer/logsurfer-$(LOGSURFER_VERSION) + +define LOGSURFER_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/src/logsurfer \ + $(TARGET_DIR)/usr/bin/logsurfer +endef + +$(eval $(autotools-package)) diff --git a/package/lpc3250loader/Config.in.host b/package/lpc3250loader/Config.in.host new file mode 100644 index 00000000..946820a5 --- /dev/null +++ b/package/lpc3250loader/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_LPC3250LOADER + bool "host lpc3250loader" + help + lpc3250loader is a tool to load/burn programs (in particular + kickstart and S1L) on an LPC3250 platform. + + https://github.com/alexandrebelloni/lpc3250loader diff --git a/package/lpc3250loader/lpc3250loader.hash b/package/lpc3250loader/lpc3250loader.hash new file mode 100644 index 00000000..9a27863b --- /dev/null +++ b/package/lpc3250loader/lpc3250loader.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 267de7541c92e5b007b93c660a41188976d531a3757f4ffd9b7142d3994da7d1 lpc3250loader-1.0.tar.gz +sha256 9a817497240e8e92f09ccfec7568a74673dc30ec008b541c8706663677b4e7a9 LPC3250loader.py diff --git a/package/lpc3250loader/lpc3250loader.mk b/package/lpc3250loader/lpc3250loader.mk new file mode 100644 index 00000000..ee153fef --- /dev/null +++ b/package/lpc3250loader/lpc3250loader.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# lpc3250loader +# +################################################################################ + +HOST_LPC3250LOADER_VERSION = 1.0 +HOST_LPC3250LOADER_SITE = $(call github,alexandrebelloni,lpc3250loader,$(HOST_LPC3250LOADER_VERSION)) +LPC3250LOADER_LICENSE = GPL-2.0+ +LPC3250LOADER_LICENSE_FILES = LPC3250loader.py + +define HOST_LPC3250LOADER_INSTALL_CMDS + $(INSTALL) -m 0755 -D $(@D)/LPC3250loader.py \ + $(HOST_DIR)/bin/LPC3250loader.py +endef + +$(eval $(host-generic-package)) diff --git a/package/lpeg/Config.in b/package/lpeg/Config.in new file mode 100644 index 00000000..0a7ea47d --- /dev/null +++ b/package/lpeg/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LPEG + bool "lpeg" + help + LPeg is a new pattern-matching library for Lua, + based on Parsing Expression Grammars (PEGs). + + http://www.inf.puc-rio.br/~roberto/lpeg.html diff --git a/package/lpeg/lpeg.hash b/package/lpeg/lpeg.hash new file mode 100644 index 00000000..1dbd522b --- /dev/null +++ b/package/lpeg/lpeg.hash @@ -0,0 +1,4 @@ +# computed by luarocks/buildroot +sha256 6637fcf4d3ddef7be490a2f0155bd2dcd053272d1bb78c015498709ef9fa75dd lpeg-1.1.0-1.src.rock +# computed locally +sha256 3f4f8a7997d9e0d9d0fca6d2b9877a5714251fff056783dd71288413b0abcf36 lpeg-1.1.0/lpeg.html diff --git a/package/lpeg/lpeg.mk b/package/lpeg/lpeg.mk new file mode 100644 index 00000000..35fadb57 --- /dev/null +++ b/package/lpeg/lpeg.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# lpeg +# +################################################################################ + +LPEG_VERSION = 1.1.0-1 +LPEG_LICENSE = MIT +LPEG_LICENSE_FILES = $(LPEG_SUBDIR)/lpeg.html + +$(eval $(luarocks-package)) diff --git a/package/lpty/Config.in b/package/lpty/Config.in new file mode 100644 index 00000000..ee2d4c20 --- /dev/null +++ b/package/lpty/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LPTY + bool "lpty" + help + A simple facility for lua to control other programs via + PTYs. + + http://www.tset.de/lpty/ diff --git a/package/lpty/lpty.hash b/package/lpty/lpty.hash new file mode 100644 index 00000000..1fe88107 --- /dev/null +++ b/package/lpty/lpty.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 cf263ece9b50a78a7fb2277e3546fbbf0bf6858f41821932d92f2e3d8a065091 lpty-1.0.1-1.src.rock +sha256 c5a128a73cad5f6e111ebd8f4a9fa3500562c57912972eb15627db9610d43dec lpty-1.0.1-1/doc/LICENSE diff --git a/package/lpty/lpty.mk b/package/lpty/lpty.mk new file mode 100644 index 00000000..5a691256 --- /dev/null +++ b/package/lpty/lpty.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lpty +# +################################################################################ + +LPTY_VERSION = 1.0.1-1 +LPTY_SUBDIR = lpty-$(LPTY_VERSION) +LPTY_LICENSE = MIT +LPTY_LICENSE_FILES = $(LPTY_SUBDIR)/doc/LICENSE + +$(eval $(luarocks-package)) diff --git a/package/lrandom/Config.in b/package/lrandom/Config.in new file mode 100644 index 00000000..a8a0a837 --- /dev/null +++ b/package/lrandom/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LRANDOM + bool "lrandom" + help + A library for generating random numbers + based on the Mersenne Twister + + http://www.tecgraf.puc-rio.br/~lhf/ftp/lua/#lrandom diff --git a/package/lrandom/lrandom.hash b/package/lrandom/lrandom.hash new file mode 100644 index 00000000..fc6c81d4 --- /dev/null +++ b/package/lrandom/lrandom.hash @@ -0,0 +1,2 @@ +# computed by luarocks/buildroot +sha256 9b77af41202feb38b09cb4a99cd49680ea9dbc9df3e640f801be378dd286eab8 lrandom-20180729-1.src.rock diff --git a/package/lrandom/lrandom.mk b/package/lrandom/lrandom.mk new file mode 100644 index 00000000..c78e15ff --- /dev/null +++ b/package/lrandom/lrandom.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# lrandom +# +################################################################################ + +LRANDOM_VERSION = 20180729-1 +LRANDOM_SUBDIR = lrandom-100 +LRANDOM_LICENSE = MIT + +$(eval $(luarocks-package)) diff --git a/package/lrzip/Config.in b/package/lrzip/Config.in new file mode 100644 index 00000000..87009479 --- /dev/null +++ b/package/lrzip/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_LRZIP + bool "lrzip" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_LZ4 + select BR2_PACKAGE_LZO + select BR2_PACKAGE_BZIP2 + help + A compression utility that excels at compressing large files + (usually > 10-50 MB). Larger files and/or more free RAM means + that the utility will be able to more effectively compress + your files (ie: faster / smaller size), especially if the + filesize(s) exceed 100 MB. You can either choose to optimise + for speed (fast compression / decompression) or size, + but not both. + + https://github.com/ckolivas/lrzip + +comment "lrzip needs a toolchain w/ wchar, threads, C++" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_INSTALL_LIBSTDCPP diff --git a/package/lrzip/lrzip.hash b/package/lrzip/lrzip.hash new file mode 100644 index 00000000..cb03ff07 --- /dev/null +++ b/package/lrzip/lrzip.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 48bd8decb097c1596c9b3777959cd3e332819434ed77a2823e65aa436f1602f9 lrzip-0.651.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/lrzip/lrzip.mk b/package/lrzip/lrzip.mk new file mode 100644 index 00000000..03756964 --- /dev/null +++ b/package/lrzip/lrzip.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# lrzip +# +################################################################################ + +LRZIP_VERSION = 0.651 +LRZIP_SOURCE = lrzip-$(LRZIP_VERSION).tar.xz +LRZIP_SITE = http://ck.kolivas.org/apps/lrzip +LRZIP_LICENSE = GPL-2.0+ +LRZIP_LICENSE_FILES = COPYING +LRZIP_CPE_ID_VENDOR = long_range_zip_project +LRZIP_CPE_ID_PRODUCT = long_range_zip +LRZIP_DEPENDENCIES = zlib lz4 lzo bzip2 + +ifeq ($(BR2_i386)$(BR2_x86_64),y) +LRZIP_DEPENDENCIES += host-nasm +LRZIP_CONF_OPTS += --enable-asm +else +LRZIP_CONF_OPTS += --disable-asm +endif + +$(eval $(autotools-package)) diff --git a/package/lrzsz/Config.in b/package/lrzsz/Config.in new file mode 100644 index 00000000..1b5da148 --- /dev/null +++ b/package/lrzsz/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LRZSZ + bool "lrzsz" + # It could technically build in a static-only environment, but + # it unconditionally redefines the error() and error_at_line() + # functions, which clashes with the definition from + # uClibc. Since the autotools packaging dates back from 1998, + # lots of work is needed to fix it, and do some proper tests + # on the availability of such functions. + depends on !BR2_STATIC_LIBS + help + Portable and fast implementation of the X/Y/Zmodem protocols. + + http://www.ohse.de/uwe/software/lrzsz.html + +comment "lrzsz needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/lrzsz/lrzsz.hash b/package/lrzsz/lrzsz.hash new file mode 100644 index 00000000..cd8dd6f4 --- /dev/null +++ b/package/lrzsz/lrzsz.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c28b36b14bddb014d9e9c97c52459852f97bd405f89113f30bee45ed92728ff1 lrzsz-0.12.20.tar.gz +sha256 dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa COPYING diff --git a/package/lrzsz/lrzsz.mk b/package/lrzsz/lrzsz.mk new file mode 100644 index 00000000..7247a4bd --- /dev/null +++ b/package/lrzsz/lrzsz.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# lrzsz +# +################################################################################ + +LRZSZ_VERSION = 0.12.20 +LRZSZ_SITE = http://www.ohse.de/uwe/releases +LRZSZ_CONF_OPTS = --disable-timesync +LRZSZ_LICENSE = GPL-2.0+ +LRZSZ_LICENSE_FILES = COPYING +LRZSZ_CPE_ID_VALID = YES +LRZSZ_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) +LRZSZ_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) + +define LRZSZ_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/src/lrz $(TARGET_DIR)/usr/bin/rz + $(INSTALL) -m 0755 -D $(@D)/src/lsz $(TARGET_DIR)/usr/bin/sz + ln -sf rz $(TARGET_DIR)/usr/bin/lrz + ln -sf sz $(TARGET_DIR)/usr/bin/lsz + ln -sf rz $(TARGET_DIR)/usr/bin/rb + ln -sf sz $(TARGET_DIR)/usr/bin/sb + ln -sf rz $(TARGET_DIR)/usr/bin/rx + ln -sf sz $(TARGET_DIR)/usr/bin/sx +endef + +$(eval $(autotools-package)) diff --git a/package/lshw/0001-solve-Compile-error-when-g-version-is-less-than-5.patch b/package/lshw/0001-solve-Compile-error-when-g-version-is-less-than-5.patch new file mode 100644 index 00000000..f15c8bc5 --- /dev/null +++ b/package/lshw/0001-solve-Compile-error-when-g-version-is-less-than-5.patch @@ -0,0 +1,65 @@ +From 383c80bf486f806438bb11a9c9a9567407cd47ab Mon Sep 17 00:00:00 2001 +From: "E.V.Acacia" <624758472@qq.com> +Date: Fri, 3 Sep 2021 14:19:37 +0800 +Subject: [PATCH] solve: Compile error when gcc version is less than 5 + +[Retrieved from: +https://github.com/lyonel/lshw/pull/70/commits/383c80bf486f806438bb11a9c9a9567407cd47ab] +Signed-off-by: Fabrice Fontaine +--- + src/core/cpuinfo.cc | 8 ++++---- + src/core/hw.cc | 2 +- + src/core/spd.cc | 4 ++-- + 3 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/src/core/cpuinfo.cc b/src/core/cpuinfo.cc +index 9e41a421..ed1c4164 100644 +--- a/src/core/cpuinfo.cc ++++ b/src/core/cpuinfo.cc +@@ -465,13 +465,13 @@ string value) + if (id == "model name") + cpu->setProduct(value); + if (id == "microcode") +- cpu->setConfig(id, stoll(value, NULL, 0)); ++ cpu->setConfig(id, strtoll(value.c_str(), NULL, 0)); + if (id == "cpu family") +- cpu->addHint(id, stoll(value, NULL, 0)); ++ cpu->addHint(id, strtoll(value.c_str(), NULL, 0)); + if (id == "model") +- cpu->addHint(id, stoll(value, NULL, 0)); ++ cpu->addHint(id, strtoll(value.c_str(), NULL, 0)); + if (id == "stepping") +- cpu->addHint(id, stoll(value, NULL, 0)); ++ cpu->addHint(id, strtoll(value.c_str(), NULL, 0)); + + family = cpu->getHint("cpu family"); + model = cpu->getHint("model"); +diff --git a/src/core/hw.cc b/src/core/hw.cc +index 1c1dad46..b266a863 100644 +--- a/src/core/hw.cc ++++ b/src/core/hw.cc +@@ -2459,7 +2459,7 @@ long long value::asInteger() const + switch(This->type) + { + case hw::text: +- return stoll(This->s, NULL, 0); ++ return strtoll(This->s.c_str(), NULL, 0); + case hw::integer: + return This->ll; + case hw::boolean: +diff --git a/src/core/spd.cc b/src/core/spd.cc +index a304d061..2ad66b82 100644 +--- a/src/core/spd.cc ++++ b/src/core/spd.cc +@@ -195,9 +195,9 @@ static bool scan_eeproms(hwNode & memory) + { + if (scan_eeprom(memory, namelist[i]->d_name)) + current_bank++; +- free(namelist[i]); ++ delete(namelist[i]); + } +- free(namelist); ++ delete(namelist); + + return true; + } diff --git a/package/lshw/Config.in b/package/lshw/Config.in new file mode 100644 index 00000000..fb557aac --- /dev/null +++ b/package/lshw/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LSHW + bool "lshw" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + select BR2_PACKAGE_HWDATA # runtime + select BR2_PACKAGE_HWDATA_PCI_IDS + select BR2_PACKAGE_HWDATA_PNP_IDS + select BR2_PACKAGE_HWDATA_USB_IDS + help + lshw (Hardware Lister) is a small tool to provide + detailed information on the hardware configuration of the + machine. + + http://ezix.org/project/wiki/HardwareLiSter + +comment "lshw needs a toolchain w/ C++, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR diff --git a/package/lshw/lshw.hash b/package/lshw/lshw.hash new file mode 100644 index 00000000..5626d713 --- /dev/null +++ b/package/lshw/lshw.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c62c89d4b3305d897bd644524bbc816c1793c41c9fea10381b75f9d5b074e056 lshw-d76afbaaf40e953243da921844cddff8185324f3.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/lshw/lshw.mk b/package/lshw/lshw.mk new file mode 100644 index 00000000..86c8f356 --- /dev/null +++ b/package/lshw/lshw.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# lshw +# +################################################################################ + +LSHW_VERSION = d76afbaaf40e953243da921844cddff8185324f3 +LSHW_SITE = $(call github,lyonel,lshw,$(LSHW_VERSION)) +LSHW_LICENSE = GPL-2.0 +LSHW_LICENSE_FILES = COPYING + +LSHW_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) + +LSHW_MAKE_OPTS = \ + CC="$(TARGET_CC)" \ + CXX="$(TARGET_CXX)" \ + AR="$(TARGET_AR)" \ + LANGUAGES= \ + RPM_OPT_FLAGS="$(TARGET_CFLAGS)" + +LSHW_MAKE_ENV = \ + $(TARGET_MAKE_ENV) \ + LIBS=$(TARGET_NLS_LIBS) + +ifeq ($(BR2_PACKAGE_SQLITE),y) +LSHW_DEPENDENCIES += host-pkgconf sqlite +LSHW_MAKE_OPTS += SQLITE=1 +else +LSHW_MAKE_OPTS += SQLITE=0 +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LSHW_DEPENDENCIES += host-pkgconf zlib +LSHW_MAKE_OPTS += ZLIB=1 +else +LSHW_MAKE_OPTS += ZLIB=0 +endif + +define LSHW_BUILD_CMDS + $(LSHW_MAKE_ENV) $(MAKE) -C $(@D)/src \ + $(LSHW_MAKE_OPTS) \ + all +endef + +define LSHW_INSTALL_TARGET_CMDS + $(LSHW_MAKE_ENV) $(MAKE) -C $(@D)/src \ + $(LSHW_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) \ + install + $(RM) -rf $(TARGET_DIR)/usr/share/lshw +endef + +$(eval $(generic-package)) diff --git a/package/lsof/Config.in b/package/lsof/Config.in new file mode 100644 index 00000000..48ceb39a --- /dev/null +++ b/package/lsof/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LSOF + bool "lsof" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + lsof (LiSt Open Files) + The lsof tool lists information about files opened by + processes. + + https://github.com/lsof-org/lsof diff --git a/package/lsof/lsof.hash b/package/lsof/lsof.hash new file mode 100644 index 00000000..90d8aede --- /dev/null +++ b/package/lsof/lsof.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b9c56468b927d9691ab168c0b1e9f8f1f835694a35ff898c549d383bd8d09bd4 lsof-4.99.3.tar.gz +sha256 225222ff9bf38abc2cef7205e9b05c60935efa9ec28d1fd01e503c9316088718 COPYING diff --git a/package/lsof/lsof.mk b/package/lsof/lsof.mk new file mode 100644 index 00000000..cb4e987b --- /dev/null +++ b/package/lsof/lsof.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# lsof +# +################################################################################ + +LSOF_VERSION = 4.99.3 +LSOF_SITE = $(call github,lsof-org,lsof,$(LSOF_VERSION)) +LSOF_LICENSE = lsof license +LSOF_LICENSE_FILES = COPYING +LSOF_CPE_ID_VALID = YES + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +LSOF_DEPENDENCIES += libtirpc +endif + +ifeq ($(BR2_USE_WCHAR),) +define LSOF_CONFIGURE_WCHAR_FIXUPS + $(SED) 's,^#[[:space:]]*define HASWIDECHAR.*,#undef HASWIDECHAR,' \ + $(@D)/machine.h +endef +endif + +ifeq ($(BR2_ENABLE_LOCALE),) +define LSOF_CONFIGURE_LOCALE_FIXUPS + $(SED) 's,^#[[:space:]]*define HASSETLOCALE.*,#undef HASSETLOCALE,' \ + $(@D)/machine.h +endef +endif + +define LSOF_CONFIGURE_CMDS + (cd $(@D) ; \ + echo n | $(TARGET_CONFIGURE_OPTS) DEBUG="$(TARGET_CFLAGS)" \ + LSOF_AR="$(TARGET_AR) cr" LSOF_CC="$(TARGET_CC)" \ + LSOF_INCLUDE="$(STAGING_DIR)/usr/include" \ + LINUX_CLIB=-DGLIBCV=2 LSOF_CFGL="$(TARGET_LDFLAGS)" \ + ./Configure linux) + $(LSOF_CONFIGURE_WCHAR_FIXUPS) + $(LSOF_CONFIGURE_LOCALE_FIXUPS) +endef + +define LSOF_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define LSOF_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/lsof $(TARGET_DIR)/usr/bin/lsof +endef + +$(eval $(generic-package)) diff --git a/package/lsqlite3/Config.in b/package/lsqlite3/Config.in new file mode 100644 index 00000000..932657e5 --- /dev/null +++ b/package/lsqlite3/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LSQLITE3 + bool "lsqlite3" + select BR2_PACKAGE_SQLITE + help + A binding for Lua to the SQLite3 database library. + + http://lua.sqlite.org/ diff --git a/package/lsqlite3/lsqlite3.hash b/package/lsqlite3/lsqlite3.hash new file mode 100644 index 00000000..48ae2fce --- /dev/null +++ b/package/lsqlite3/lsqlite3.hash @@ -0,0 +1,2 @@ +# computed by luarocks/buildroot +sha256 fdae3c03390ab4e4b7db3a13d09b79ffe19318739b752d17914adcdb3d2ef9ff lsqlite3-0.9.5-1.src.rock diff --git a/package/lsqlite3/lsqlite3.mk b/package/lsqlite3/lsqlite3.mk new file mode 100644 index 00000000..bbf6a1db --- /dev/null +++ b/package/lsqlite3/lsqlite3.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lsqlite3 +# +################################################################################ + +LSQLITE3_VERSION = 0.9.5-1 +LSQLITE3_SUBDIR = lsqlite3_fsl09y +LSQLITE3_LICENSE = MIT +LSQLITE3_DEPENDENCIES = sqlite + +$(eval $(luarocks-package)) diff --git a/package/lsscsi/Config.in b/package/lsscsi/Config.in new file mode 100644 index 00000000..1c856863 --- /dev/null +++ b/package/lsscsi/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LSSCSI + bool "lsscsi" + help + lsscsi - list SCSI devices (or hosts) and their attributes + + http://sg.danny.cz/scsi/lsscsi.html diff --git a/package/lsscsi/lsscsi.hash b/package/lsscsi/lsscsi.hash new file mode 100644 index 00000000..d2df6005 --- /dev/null +++ b/package/lsscsi/lsscsi.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 0a800e9e94dca2ab702d65d72777ae8cae078e3d74d0bcbed64ba0849e8029a1 lsscsi-0.32.tgz +sha256 dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa COPYING diff --git a/package/lsscsi/lsscsi.mk b/package/lsscsi/lsscsi.mk new file mode 100644 index 00000000..716b6b74 --- /dev/null +++ b/package/lsscsi/lsscsi.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# lsscsi +# +################################################################################ + +LSSCSI_VERSION = 0.32 +LSSCSI_SOURCE = lsscsi-$(LSSCSI_VERSION).tgz +LSSCSI_SITE = http://sg.danny.cz/scsi +LSSCSI_LICENSE = GPL-2.0+ +LSSCSI_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/lsuio/Config.in b/package/lsuio/Config.in new file mode 100644 index 00000000..675a318c --- /dev/null +++ b/package/lsuio/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LSUIO + bool "lsuio" + help + list available userspace I/O (UIO) devices + + http://www.osadl.org/UIO.uio.0.html diff --git a/package/lsuio/lsuio.hash b/package/lsuio/lsuio.hash new file mode 100644 index 00000000..2df6d074 --- /dev/null +++ b/package/lsuio/lsuio.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c88b3850248b2d3419e025abd7b9b0991c8bd33a2d4983f9608408a29900bfb5 lsuio-0.2.0.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/lsuio/lsuio.mk b/package/lsuio/lsuio.mk new file mode 100644 index 00000000..193de15a --- /dev/null +++ b/package/lsuio/lsuio.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lsuio +# +################################################################################ + +LSUIO_VERSION = 0.2.0 +LSUIO_SITE = http://www.osadl.org/projects/downloads/UIO/user +LSUIO_LICENSE = GPL-2.0 +LSUIO_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/ltp-testsuite/Config.in b/package/ltp-testsuite/Config.in new file mode 100644 index 00000000..b42082e2 --- /dev/null +++ b/package/ltp-testsuite/Config.in @@ -0,0 +1,43 @@ +config BR2_PACKAGE_LTP_TESTSUITE_ARCH_SUPPORTS + bool + # Needs __sync*() built-ins for 4-byte data, except on a few + # architectures for which a specific implementation is + # provided in ltp-testsuite + default y if BR2_TOOLCHAIN_HAS_SYNC_4 + default y if BR2_arc + # does not build on nios2, cachectl.h issue + depends on !BR2_nios2 + +config BR2_PACKAGE_LTP_TESTSUITE + bool "ltp-testsuite" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on !BR2_TOOLCHAIN_USES_MUSL || BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11 + depends on BR2_PACKAGE_LTP_TESTSUITE_ARCH_SUPPORTS + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_PACKAGE_MUSL_FTS if !BR2_TOOLCHAIN_USES_GLIBC + help + The Linux Test Project provides a huge testsuite for Linux. + + http://linux-test-project.github.io + +if BR2_PACKAGE_LTP_TESTSUITE + +config BR2_PACKAGE_LTP_TESTSUITE_OPEN_POSIX + bool "Open POSIX testsuite" + default y + help + Test suite for POSIX compliance. Included with the LTP. + +config BR2_PACKAGE_LTP_TESTSUITE_REALTIME + bool "Realtime testsuite" + default y + help + Test suite for realtime kernels. Included with the LTP. + +endif + +comment "ltp-testsuite needs a toolchain w/ NPTL" + depends on BR2_PACKAGE_LTP_TESTSUITE_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/package/ltp-testsuite/ltp-testsuite.hash b/package/ltp-testsuite/ltp-testsuite.hash new file mode 100644 index 00000000..03aa5861 --- /dev/null +++ b/package/ltp-testsuite/ltp-testsuite.hash @@ -0,0 +1,4 @@ +# From: https://github.com/linux-test-project/ltp/releases/download/20240524/ltp-full-20240524.tar.xz.sha256 +sha256 2b7c07bb281b7ec49981eeb06c4b66f147b103977254632678d384034f6e9663 ltp-full-20240524.tar.xz +# Locally computed +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/ltp-testsuite/ltp-testsuite.mk b/package/ltp-testsuite/ltp-testsuite.mk new file mode 100644 index 00000000..bbeb80c7 --- /dev/null +++ b/package/ltp-testsuite/ltp-testsuite.mk @@ -0,0 +1,96 @@ +################################################################################ +# +# ltp-testsuite +# +################################################################################ + +LTP_TESTSUITE_VERSION = 20240524 +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 = GPL-2.0, GPL-2.0+ +LTP_TESTSUITE_LICENSE_FILES = COPYING + +LTP_TESTSUITE_CONF_OPTS += --disable-metadata + +ifeq ($(BR2_PACKAGE_LTP_TESTSUITE_OPEN_POSIX),y) +LTP_TESTSUITE_CONF_OPTS += --with-open-posix-testsuite +endif + +ifeq ($(BR2_PACKAGE_LTP_TESTSUITE_REALTIME),y) +LTP_TESTSUITE_CONF_OPTS += --with-realtime-testsuite +endif + +ifeq ($(BR2_LINUX_KERNEL),y) +LTP_TESTSUITE_DEPENDENCIES += linux +LTP_TESTSUITE_MAKE_ENV += $(LINUX_MAKE_FLAGS) +LTP_TESTSUITE_CONF_OPTS += --with-linux-dir=$(LINUX_DIR) +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 +else +LTP_TESTSUITE_CONF_ENV += ac_cv_lib_cap_cap_compare=no +endif + +# No explicit enable/disable options +ifeq ($(BR2_PACKAGE_NUMACTL),y) +LTP_TESTSUITE_DEPENDENCIES += numactl +else +LTP_TESTSUITE_CONF_ENV += have_numa_headers=no +endif + +LTP_TESTSUITE_CFLAGS = $(TARGET_CFLAGS) +LTP_TESTSUITE_LIBS = + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +LTP_TESTSUITE_DEPENDENCIES += libtirpc host-pkgconf +LTP_TESTSUITE_CFLAGS += "`$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`" +LTP_TESTSUITE_LIBS += "`$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`" +endif + +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),) +LTP_TESTSUITE_DEPENDENCIES += musl-fts +LTP_TESTSUITE_LIBS += -lfts +endif + +LTP_TESTSUITE_CONF_ENV += \ + CFLAGS="$(LTP_TESTSUITE_CFLAGS)" \ + LIBS="$(LTP_TESTSUITE_LIBS)" \ + SYSROOT="$(STAGING_DIR)" + +LTP_TESTSUITE_MAKE_ENV += \ + HOST_CFLAGS="$(HOST_CFLAGS)" \ + HOST_LDFLAGS="$(HOST_LDFLAGS)" + +# uclibc: bessel support normally not enabled +LTP_TESTSUITE_UNSUPPORTED_TEST_CASES_$(BR2_TOOLCHAIN_USES_UCLIBC) += \ + testcases/misc/math/float/bessel/ \ + testcases/misc/math/float/float_bessel.c + +LTP_TESTSUITE_UNSUPPORTED_TEST_CASES_$(BR2_TOOLCHAIN_USES_MUSL) += \ + testcases/kernel/syscalls/fmtmsg/fmtmsg01.c \ + testcases/kernel/syscalls/rt_tgsigqueueinfo/rt_tgsigqueueinfo01.c \ + testcases/kernel/syscalls/timer_create/timer_create01.c \ + testcases/kernel/syscalls/timer_create/timer_create03.c + +# ldd command build system tries to build a shared library unconditionally. +LTP_TESTSUITE_UNSUPPORTED_TEST_CASES_$(BR2_STATIC_LIBS) += \ + testcases/commands/ldd + +define LTP_TESTSUITE_REMOVE_UNSUPPORTED_TESTCASES + $(foreach f,$(LTP_TESTSUITE_UNSUPPORTED_TEST_CASES_y), + rm -rf $(@D)/$(f) + ) +endef + +LTP_TESTSUITE_POST_PATCH_HOOKS += LTP_TESTSUITE_REMOVE_UNSUPPORTED_TESTCASES + +$(eval $(autotools-package)) diff --git a/package/ltrace/0001-arm-plt.patch b/package/ltrace/0001-arm-plt.patch new file mode 100644 index 00000000..f130ce84 --- /dev/null +++ b/package/ltrace/0001-arm-plt.patch @@ -0,0 +1,30 @@ +From 04377d28135e351c8d096c4392a493e937416815 Mon Sep 17 00:00:00 2001 +From: Alexandre Belloni +Date: Thu, 24 Jul 2014 23:15:20 +0200 +Subject: [PATCH] Allow building with uclibc toolchains + +Unfortunately, uclicbc doesn't define SHT_ARM_ATTRIBUTES in elf.h + +Signed-off-by: Alexandre Belloni +--- + sysdeps/linux-gnu/arm/plt.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/sysdeps/linux-gnu/arm/plt.c b/sysdeps/linux-gnu/arm/plt.c +index 9e9e37f0c5b0..a0a5795eb9cb 100644 +--- a/sysdeps/linux-gnu/arm/plt.c ++++ b/sysdeps/linux-gnu/arm/plt.c +@@ -28,6 +28,10 @@ + #include "library.h" + #include "ltrace-elf.h" + ++#ifndef SHT_ARM_ATTRIBUTES ++#define SHT_ARM_ATTRIBUTES 0x70000003 ++#endif ++ + static int + get_hardfp(uint64_t abi_vfp_args) + { +-- +1.9.1 + diff --git a/package/ltrace/0002-sparc-add-missing-library.h-include.patch b/package/ltrace/0002-sparc-add-missing-library.h-include.patch new file mode 100644 index 00000000..01f1f2ed --- /dev/null +++ b/package/ltrace/0002-sparc-add-missing-library.h-include.patch @@ -0,0 +1,36 @@ +From 4e58f53b7886420d002e5919f279acd6d7c4afd1 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 22 Dec 2015 21:47:45 +0100 +Subject: [PATCH] sparc: add missing library.h include +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes the following build failure on sparc: + +plt.c: In function ‘sym2addr’: +plt.c:33:12: error: dereferencing pointer to incomplete type + return sym->enter_addr; + ^ +plt.c:34:1: warning: control reaches end of non-void function [-Wreturn-type] + +Signed-off-by: Thomas Petazzoni +--- + sysdeps/linux-gnu/sparc/plt.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sysdeps/linux-gnu/sparc/plt.c b/sysdeps/linux-gnu/sparc/plt.c +index 3d2e589..959eed1 100644 +--- a/sysdeps/linux-gnu/sparc/plt.c ++++ b/sysdeps/linux-gnu/sparc/plt.c +@@ -21,6 +21,7 @@ + #include + #include "proc.h" + #include "common.h" ++#include "library.h" + + GElf_Addr + arch_plt_sym_val(struct ltelf *lte, size_t ndx, GElf_Rela * rela) { +-- +2.6.4 + diff --git a/package/ltrace/0003-configure.ac-fix-autoreconf-with-autoconf-2.70.patch b/package/ltrace/0003-configure.ac-fix-autoreconf-with-autoconf-2.70.patch new file mode 100644 index 00000000..efe993ec --- /dev/null +++ b/package/ltrace/0003-configure.ac-fix-autoreconf-with-autoconf-2.70.patch @@ -0,0 +1,35 @@ +From b8d5d086489ff20339e221323a60c140a9820e67 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 9 Oct 2021 09:39:52 +0200 +Subject: [PATCH] configure.ac: fix autoreconf with autoconf >= 2.70 + +Drop AC_CONFIG_AUX_DIR to avoid the following build failure with +autoconf >= 2.70: + +autoreconf: error: cannot create config/autoconf: No such file or directory + +Fixes: + - http://autobuild.buildroot.org/results/433599039d6e1ee301465f9867e169c121a0646f + +Signed-off-by: Fabrice Fontaine +[Upstream status: not sent as upstream is unmaintained: +https://gitlab.com/cespedes/ltrace/-/issues/8] +--- + configure.ac | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index b9c39fa..486589b 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -28,7 +28,6 @@ AC_INIT([ltrace],[0.7.91],[ltrace-devel@lists.alioth.debian.org], + AC_CONFIG_HEADERS([config.h]) + AC_CONFIG_SRCDIR(libltrace.c) + AC_CONFIG_MACRO_DIR([config/m4]) +-AC_CONFIG_AUX_DIR([config/autoconf]) + AC_CANONICAL_BUILD + AC_CANONICAL_HOST + +-- +2.33.0 + diff --git a/package/ltrace/Config.in b/package/ltrace/Config.in new file mode 100644 index 00000000..21d381db --- /dev/null +++ b/package/ltrace/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_LTRACE_ARCH_SUPPORTS + bool + default y if BR2_aarch64 + default y if BR2_arm + default y if BR2_i386 + default y if BR2_mips + default y if BR2_mipsel + default y if BR2_powerpc + default y if BR2_sparc + default y if BR2_x86_64 + default y if BR2_xtensa + +config BR2_PACKAGE_LTRACE + bool "ltrace" + depends on BR2_USE_WCHAR # elfutils + depends on !BR2_STATIC_LIBS # elfutils + depends on BR2_TOOLCHAIN_HAS_THREADS # elfutils + depends on BR2_PACKAGE_LTRACE_ARCH_SUPPORTS + select BR2_PACKAGE_ELFUTILS + help + Debugging program which runs a specified command until it + exits. While the command is executing, ltrace intercepts and + records the dynamic library calls which are called by the + executed process and the signals received by that process. + + http://ltrace.org + +comment "ltrace needs a toolchain w/ wchar, dynamic library, threads" + depends on BR2_PACKAGE_LTRACE_ARCH_SUPPORTS + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/ltrace/ltrace.hash b/package/ltrace/ltrace.hash new file mode 100644 index 00000000..a677ed35 --- /dev/null +++ b/package/ltrace/ltrace.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 4aecf69e4a33331aed1e50ce4907e73a98cbccc4835febc3473863474304d547 ltrace-82c66409c7a93ca6ad2e4563ef030dfb7e6df4d4.tar.gz +sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 COPYING diff --git a/package/ltrace/ltrace.mk b/package/ltrace/ltrace.mk new file mode 100644 index 00000000..b3bd90da --- /dev/null +++ b/package/ltrace/ltrace.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# ltrace +# +################################################################################ + +# This github version has some extra fixes on top of https://ltrace.org/ +# in particular the following commit to avoid a crash: +# 192e0a6 void struct members are now ignored +LTRACE_VERSION = 82c66409c7a93ca6ad2e4563ef030dfb7e6df4d4 +LTRACE_SITE = $(call github,dkogan,ltrace,$(LTRACE_VERSION)) +LTRACE_DEPENDENCIES = elfutils +LTRACE_CONF_OPTS = --disable-werror +LTRACE_LICENSE = GPL-2.0 +LTRACE_LICENSE_FILES = COPYING +LTRACE_AUTORECONF = YES + +# ltrace can use libunwind only if libc has backtrace() support +# We don't normally do so for uClibc and we can't know if it's external +# Also ltrace with libunwind support is broken for MIPS so we disable it +ifeq ($(BR2_PACKAGE_LIBUNWIND),y) +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC)$(BR2_mips)$(BR2_mipsel),) +# --with-elfutils only selects unwinding support backend. elfutils is a +# mandatory dependency regardless. +LTRACE_CONF_OPTS += --with-libunwind=yes --with-elfutils=no +LTRACE_DEPENDENCIES += libunwind +else +LTRACE_CONF_OPTS += --with-libunwind=no +endif +endif + +$(eval $(autotools-package)) diff --git a/package/ltris/Config.in b/package/ltris/Config.in new file mode 100644 index 00000000..7d9dc04a --- /dev/null +++ b/package/ltris/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_LTRIS + bool "LTris" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_SDL + help + LTris is a tetris clone, using SDL. It optionally requires + SDL_mixer for audio support. A display with minimum 640x480 + resolution and a keyboard are recommended. + + http://lgames.sourceforge.net/index.php?project=LTris + +if BR2_PACKAGE_LTRIS + +config BR2_PACKAGE_LTRIS_AUDIO + bool "audio support" + default y + select BR2_PACKAGE_SDL_MIXER + help + Activates audio support in LTris. Will add SDL_mixer. + +endif diff --git a/package/ltris/ltris.hash b/package/ltris/ltris.hash new file mode 100644 index 00000000..3b2043a2 --- /dev/null +++ b/package/ltris/ltris.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 ff28c55a18c61f28a86ba7f30f13222dfed0f7fbeb492acd95c97de9c659cec9 ltris-1.3.2.tar.gz +sha256 67f82e045cf7acfef853ea0f426575a8359161a0a325e19f02b529a87c4b6c34 COPYING diff --git a/package/ltris/ltris.mk b/package/ltris/ltris.mk new file mode 100644 index 00000000..6ebaa742 --- /dev/null +++ b/package/ltris/ltris.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# ltris +# +################################################################################ + +LTRIS_SITE = http://downloads.sourceforge.net/lgames/ltris +LTRIS_VERSION = 1.3.2 +LTRIS_LICENSE = GPL-2.0+ +LTRIS_LICENSE_FILES = COPYING + +LTRIS_DEPENDENCIES = sdl $(TARGET_NLS_DEPENDENCIES) +LTRIS_LIBS = $(TARGET_NLS_LIBS) + +LTRIS_CONF_ENV = \ + SDL_CONFIG="$(STAGING_DIR)/usr/bin/sdl-config" \ + LIBS="$(LTRIS_LIBS)" + +ifeq ($(BR2_PACKAGE_LTRIS_AUDIO),y) +LTRIS_DEPENDENCIES += sdl_mixer host-pkgconf +# configure script does NOT use pkg-config to figure out how to link +# with sdl_mixer, breaking static linking as sdl_mixer can use libmad +LTRIS_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs SDL_mixer` +endif + +$(eval $(autotools-package)) diff --git a/package/lttng-babeltrace/0001-tests-lib-Makefile.am-remove-unneeded-static-flag.patch b/package/lttng-babeltrace/0001-tests-lib-Makefile.am-remove-unneeded-static-flag.patch new file mode 100644 index 00000000..b903d872 --- /dev/null +++ b/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/package/lttng-babeltrace/0002-configure.ac-fix-popt-static-build.patch b/package/lttng-babeltrace/0002-configure.ac-fix-popt-static-build.patch new file mode 100644 index 00000000..896c6747 --- /dev/null +++ b/package/lttng-babeltrace/0002-configure.ac-fix-popt-static-build.patch @@ -0,0 +1,48 @@ +From 35076fd4592ca23136ff5eacdf8eaebc926e0224 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 23 Feb 2023 13:04:08 +0100 +Subject: [PATCH] configure.ac: fix popt static build + +Fix the following popt static build failure: + +configure:18149: checking for poptGetContext in -lpopt +configure:18172: /home/buildroot/autobuild/instance-2/output-1/host/bin/m68k-buildroot-linux-uclibc-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -g0 -static -I/home/buildroot/autobuild/instance-2/output-1/host/bin/../m68k-buildroot-linux-uclibc/sysroot/usr/include/uuid -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -static conftest.c -lpopt -L/home/buildroot/autobuild/instance-2/output-1/host/bin/../m68k-buildroot-linux-uclibc/sysroot/usr/lib -luuid >&5 +/home/buildroot/autobuild/instance-2/output-1/host/lib/gcc/m68k-buildroot-linux-uclibc/10.4.0/../../../../m68k-buildroot-linux-uclibc/bin/ld: /home/buildroot/autobuild/instance-2/output-1/host/bin/../m68k-buildroot-linux-uclibc/sysroot/usr/lib/libpopt.a(poptint.o): in function `POPT_fprintf': +poptint.c:(.text+0x28a): undefined reference to `libiconv_open' + +[...] + +checking for poptGetContext in -lpopt... no +configure: error: Cannot find popt. + +Fixes: + - http://autobuild.buildroot.org/results/4f465fe15664b1f9df3f26c331dc550852972f2f + +Signed-off-by: Fabrice Fontaine +[Upstream status: not upstreamable as popt has been removed with +https://github.com/efficios/babeltrace/commit/916d0d910ad5407bc7826505aa05b277f5739a34] +--- + configure.ac | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index a17c23c3..8f700d3e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -223,8 +223,11 @@ AC_CHECK_LIB([c], [faccessat], + ] + ) + +-AC_CHECK_LIB([popt], [poptGetContext], [], +- [AC_MSG_ERROR([Cannot find popt.])] ++PKG_CHECK_MODULES([POPT], [popt], [LIBS="${POPT_LIBS} ${LIBS}"], ++[ ++ AC_CHECK_LIB([popt], [poptGetContext], [], ++ [AC_MSG_ERROR([Cannot find popt.])]) ++] + ) + + # For Python +-- +2.39.1 + diff --git a/package/lttng-babeltrace/Config.in b/package/lttng-babeltrace/Config.in new file mode 100644 index 00000000..ba6b5543 --- /dev/null +++ b/package/lttng-babeltrace/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_LTTNG_BABELTRACE + bool "lttng-babeltrace" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_POPT + 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. + + 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. + + 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 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/lttng-babeltrace/Config.in.host b/package/lttng-babeltrace/Config.in.host new file mode 100644 index 00000000..71b9c7d9 --- /dev/null +++ b/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/package/lttng-babeltrace/lttng-babeltrace.hash b/package/lttng-babeltrace/lttng-babeltrace.hash new file mode 100644 index 00000000..9bf327fc --- /dev/null +++ b/package/lttng-babeltrace/lttng-babeltrace.hash @@ -0,0 +1,7 @@ +# From http://www.efficios.com/files/babeltrace/babeltrace-1.5.7.tar.bz2.sha256 +sha256 215331e025ffd39c665a34231b9429180e48aca78f79fb972d0bf1322d2b807b babeltrace-1.5.7.tar.bz2 + +# Hash for license files +sha256 2f801b7c2494850c3d91da820eb230502dc0192c9d0db024db37ec08d0be1434 mit-license.txt +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 gpl-2.0.txt +sha256 12d4222ac628fe4092cba8ed90bc5227a4dedd0b94973273cecbc393325bf1c2 LICENSE diff --git a/package/lttng-babeltrace/lttng-babeltrace.mk b/package/lttng-babeltrace/lttng-babeltrace.mk new file mode 100644 index 00000000..363d7f5b --- /dev/null +++ b/package/lttng-babeltrace/lttng-babeltrace.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# lttng-babeltrace +# +################################################################################ + +LTTNG_BABELTRACE_SITE = http://www.efficios.com/files/babeltrace +LTTNG_BABELTRACE_VERSION = 1.5.7 +LTTNG_BABELTRACE_SOURCE = babeltrace-$(LTTNG_BABELTRACE_VERSION).tar.bz2 +LTTNG_BABELTRACE_LICENSE = MIT, LGPL-2.1 (include/babeltrace/list.h), GPL-2.0 (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-elfutils +HOST_LTTNG_BABELTRACE_CONF_OPTS += --enable-debug-info + +# We're patching tests/lib/Makefile.am +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/package/lttng-libust/0001-configure.ac-add-disable-tests.patch b/package/lttng-libust/0001-configure.ac-add-disable-tests.patch new file mode 100644 index 00000000..bb962000 --- /dev/null +++ b/package/lttng-libust/0001-configure.ac-add-disable-tests.patch @@ -0,0 +1,59 @@ +From a1f8509283ad29b5144bda6f6dba9f5eb7165adc Mon Sep 17 00:00:00 2001 +From: Norbert Lange +Date: Thu, 23 Dec 2021 21:56:46 +0100 +Subject: [PATCH] configure.ac: add --disable-tests + +Add configure option to disable tests. +Upstream is not likely to accept it, see lttng-tools package. + +Signed-off-by: Norbert Lange +--- + Makefile.am | 5 ++++- + configure.ac | 6 ++++++ + 2 files changed, 10 insertions(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 9ab93ccd..8a1c1dca 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -7,9 +7,12 @@ SUBDIRS = \ + src \ + tools \ + doc \ +- tests \ + extras + ++if ENABLE_TESTS ++SUBDIRS += tests ++endif ++ + dist_doc_DATA = \ + ChangeLog \ + LICENSE \ +diff --git a/configure.ac b/configure.ac +index b6254228..fe5f2700 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -360,6 +360,11 @@ AE_FEATURE([python-agent],[build the LTTng UST Python agent]) + AE_FEATURE_DEFAULT_ENABLE + AE_FEATURE([examples],[Do not build and install examples]) + ++# Build the tests ++# Enabled by default ++AE_FEATURE_DEFAULT_ENABLE ++AE_FEATURE([tests],[Do not build tests]) ++ + # Man pages + # Enabled by default + AE_FEATURE_DEFAULT_ENABLE +@@ -525,6 +530,7 @@ AC_DEFINE([LTTNG_UST_CTL_LIB_SONAME_MAJOR], [ust_ctl_lib_version_current], [Majo + ## ## + + AM_CONDITIONAL([ENABLE_EXAMPLES], AE_IS_FEATURE_ENABLED([examples])) ++AM_CONDITIONAL([ENABLE_TESTS], AE_IS_FEATURE_ENABLED([tests])) + AM_CONDITIONAL([ENABLE_GEN_TP_EXAMPLES], [test "x$PYTHON" != "x"]) + AM_CONDITIONAL([ENABLE_JAVA_AGENT], AE_IS_FEATURE_ENABLED([java-agent-jul]) || AE_IS_FEATURE_ENABLED([java-agent-log4j])) + AM_CONDITIONAL([ENABLE_JAVA_AGENT_WITH_JUL], AE_IS_FEATURE_ENABLED([java-agent-jul])) +-- +2.34.1 + diff --git a/package/lttng-libust/Config.in b/package/lttng-libust/Config.in new file mode 100644 index 00000000..88e1164f --- /dev/null +++ b/package/lttng-libust/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_LTTNG_LIBUST + bool "lttng-libust" + 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 + depends on !BR2_STATIC_LIBS + depends on BR2_INSTALL_LIBSTDCPP # liburcu + select BR2_PACKAGE_LIBURCU + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Userspace tracing library for the LTTng 2.x tracing + infrastructure. It allows userspace programs to create + custom trace events that are integrated with all other + events gathered by LTTng. + + http://lttng.org + +comment "lttng-libust needs a toolchain w/ dynamic library, wchar, threads, C++" + depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP diff --git a/package/lttng-libust/lttng-libust.hash b/package/lttng-libust/lttng-libust.hash new file mode 100644 index 00000000..42f2b372 --- /dev/null +++ b/package/lttng-libust/lttng-libust.hash @@ -0,0 +1,9 @@ +# From https://lttng.org/files/lttng-ust/lttng-ust-2.13.2.tar.bz2.sha256 +sha256 5667bf0269e1e62e2d9cb974c456ff86e0401bd7aa3bfc8d5fdb97233249eddc lttng-ust-2.13.1.tar.bz2 + +# Hash for license files +sha256 5b52242fd2045d62dd664c8358137b46c1e08efdba674c91cbfc06585efe1ce7 LICENSE +sha256 f206ce02ddf94d03120b58381064702729a0e6cbb03cafc84dc0e434ce5689fa LICENSES/BSD-3-Clause +sha256 6841c85b94f9dab319356e3aaf9e969fcedad51d3aaadf665bf86f34f4186b62 LICENSES/GPL-2.0 +sha256 d72921266bc8452a8789f8a04a82755373990d00b7e0b0f1a8edb8f854e94d1c LICENSES/LGPL-2.1 +sha256 323c587d0ccf10e376f8bf9a7f31fb4ca6078105194b42e0b1e0ee2bc9bde71f LICENSES/MIT diff --git a/package/lttng-libust/lttng-libust.mk b/package/lttng-libust/lttng-libust.mk new file mode 100644 index 00000000..7ead2805 --- /dev/null +++ b/package/lttng-libust/lttng-libust.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# lttng-libust +# +################################################################################ + +LTTNG_LIBUST_SITE = http://lttng.org/files/lttng-ust +LTTNG_LIBUST_VERSION = 2.13.1 +LTTNG_LIBUST_SOURCE = lttng-ust-$(LTTNG_LIBUST_VERSION).tar.bz2 +LTTNG_LIBUST_LICENSE = LGPL-2.1, MIT (system headers), GPL-2.0 (liblttng-ust-ctl/ustctl.c used by lttng-sessiond), BSD-3-Clause (snprintf) +LTTNG_LIBUST_LICENSE_FILES = LICENSE LICENSES/BSD-3-Clause LICENSES/GPL-2.0 LICENSES/LGPL-2.1 LICENSES/MIT +LTTNG_LIBUST_INSTALL_STAGING = YES +LTTNG_LIBUST_DEPENDENCIES = liburcu util-linux +LTTNG_LIBUST_CONF_OPTS = \ + --disable-man-pages \ + --disable-examples \ + --disable-tests \ + --with-lttng-system-rundir=/run/lttng +LTTNG_LIBUST_AUTORECONF = YES +# https://www.mail-archive.com/lttng-dev@lists.lttng.org/msg12950.html +LTTNG_LIBUST_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -DUATOMIC_NO_LINK_ERROR" + +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 + +ifeq ($(BR2_PACKAGE_NUMACTL),y) +LTTNG_LIBUST_DEPENDENCIES += numactl +LTTNG_LIBUST_CONF_OPTS += --enable-numa +else +LTTNG_LIBUST_CONF_OPTS += --disable-numa +endif + +$(eval $(autotools-package)) diff --git a/package/lttng-modules/Config.in b/package/lttng-modules/Config.in new file mode 100644 index 00000000..cb565841 --- /dev/null +++ b/package/lttng-modules/Config.in @@ -0,0 +1,43 @@ +config BR2_PACKAGE_LTTNG_MODULES + bool "lttng-modules" + depends on BR2_LINUX_KERNEL + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 + help + Linux kernel modules for the LTTng 2.x kernel tracing + infrastructure. + + Make sure your target kernel has the following config + options enabled: + + * CONFIG_MODULES: loadable module support (not strictly + required when built into the kernel) + * CONFIG_KALLSYMS: this is necessary until the few + required missing symbols are exported to GPL + modules from mainline + * CONFIG_HIGH_RES_TIMERS: needed for LTTng 2.x + clock source + * CONFIG_TRACEPOINTS: kernel tracepoint instrumentation + (enabled as a side-effect of any of the + perf/ftrace/blktrace instrumentation features) + * CONFIG_KPROBES (5.7+): use kallsyms for kernel 5.7 and + newer. + + The following kernel configuration options will + affect the features available from LTTng: + + * CONFIG_HAVE_SYSCALL_TRACEPOINTS: system call tracing + * CONFIG_PERF_EVENTS: performance counters + * CONFIG_EVENT_TRACING: needed to allow block layer tracing + * CONFIG_KPROBES: dynamic probes + * CONFIG_KRETPROBES: dynamic function entry/return probes + * CONFIG_KALLSYMS_ALL: state dump of mapping between block + device number and name + + http://lttng.org + +comment "lttng-modules needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +comment "lttng-modules needs a toolchain w/ headers >= 3.0" + depends on BR2_LINUX_KERNEL + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 diff --git a/package/lttng-modules/lttng-modules.hash b/package/lttng-modules/lttng-modules.hash new file mode 100644 index 00000000..b14b4888 --- /dev/null +++ b/package/lttng-modules/lttng-modules.hash @@ -0,0 +1,8 @@ +# From https://lttng.org/files/lttng-modules/lttng-modules-2.13.10.tar.bz2.sha256 +sha256 13abfb1ac870711f0d0adfa88e53b17deb2e3052173715a260a6ef14aa45b0a7 lttng-modules-2.13.10.tar.bz2 + +# Hash for license files +sha256 d72921266bc8452a8789f8a04a82755373990d00b7e0b0f1a8edb8f854e94d1c LICENSES/LGPL-2.1 +sha256 6841c85b94f9dab319356e3aaf9e969fcedad51d3aaadf665bf86f34f4186b62 LICENSES/GPL-2.0 +sha256 323c587d0ccf10e376f8bf9a7f31fb4ca6078105194b42e0b1e0ee2bc9bde71f LICENSES/MIT +sha256 0133d3c505f176845d7a8b4dcfe006ac615832c43c41e76fe3b365191bafca92 LICENSE diff --git a/package/lttng-modules/lttng-modules.mk b/package/lttng-modules/lttng-modules.mk new file mode 100644 index 00000000..d6f1e411 --- /dev/null +++ b/package/lttng-modules/lttng-modules.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# lttng-modules +# +################################################################################ + +LTTNG_MODULES_VERSION = 2.13.10 +LTTNG_MODULES_SITE = http://lttng.org/files/lttng-modules +LTTNG_MODULES_SOURCE = lttng-modules-$(LTTNG_MODULES_VERSION).tar.bz2 +LTTNG_MODULES_LICENSE = LGPL-2.1/GPL-2.0 (kernel modules), MIT (lib/bitfield.h, lib/prio_heap/*) +LTTNG_MODULES_LICENSE_FILES = \ + LICENSES/LGPL-2.1 LICENSES/GPL-2.0 LICENSES/MIT LICENSE +LTTNG_MODULES_MODULE_MAKE_OPTS = CONFIG_LTTNG=m CONFIG_LTTNG_CLOCK_PLUGIN_TEST=m + +define LTTNG_MODULES_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_KPROBES) + $(call KCONFIG_ENABLE_OPT,CONFIG_FTRACE) +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/lttng-tools/0001-configure.ac-add-disable-tests.patch b/package/lttng-tools/0001-configure.ac-add-disable-tests.patch new file mode 100644 index 00000000..4bc9239c --- /dev/null +++ b/package/lttng-tools/0001-configure.ac-add-disable-tests.patch @@ -0,0 +1,37 @@ +From 8c3a5d0921090e2fc3c4e2561509d23eb9ffa6dd Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 2 Apr 2021 21:07:07 +0200 +Subject: [PATCH] configure.ac: add --disable-tests + +Allow the user to explicitly disable tests + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/lttng/lttng-tools/pull/162] +--- + configure.ac | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 04f9cef4..372cdf3d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -862,6 +862,8 @@ AC_ARG_ENABLE([bin-lttng-sessiond], AS_HELP_STRING([--disable-bin-lttng-sessiond + [Disable the build of lttng-sessiond binaries])) + AC_ARG_ENABLE([extras], AS_HELP_STRING([--disable-extras], + [Disable the build of the extra components])) ++AC_ARG_ENABLE([tests], AS_HELP_STRING([--disable-tests], ++ [Disable the build of the test components])) + + + build_lib_consumer=no +@@ -1013,6 +1015,7 @@ AM_CONDITIONAL([BUILD_BIN_LTTNG_SESSIOND], [test x$enable_bin_lttng_sessiond != + + # Export the tests and extras build conditions. + AS_IF([\ ++test "x$enable_tests" != "xno" && \ + test "x$enable_bin_lttng" != "xno" && \ + test "x$enable_bin_lttng_consumerd" != "xno" && \ + test "x$enable_bin_lttng_crash" != "xno" && \ +-- +2.30.2 + diff --git a/package/lttng-tools/Config.in b/package/lttng-tools/Config.in new file mode 100644 index 00000000..5750c5c4 --- /dev/null +++ b/package/lttng-tools/Config.in @@ -0,0 +1,34 @@ +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_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS # uses dlfcn + depends on BR2_INSTALL_LIBSTDCPP # liburcu + select BR2_PACKAGE_LIBURCU + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_POPT + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Userspace utilities for the LTTng 2.x tracing + infrastructure. + + Those utilities are required on the target system to start + and stop tracing sessions. Analysis of the trace can be done + on the host machine using the babeltrace utility. This + utility is automatically built by Buildroot in + $(O)/host/bin/babeltrace, as a dependency of + lttng-tools. However, there is also a lttng-babeltrace + package for the target, if babeltrace on the target is + interesting. + + If userspace tracing is desired, you need to enable + lttng-libust. + + http://lttng.org + +comment "lttng-tools needs a toolchain w/ threads, dynamic library, C++" + depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_INSTALL_LIBSTDCPP diff --git a/package/lttng-tools/lttng-tools.hash b/package/lttng-tools/lttng-tools.hash new file mode 100644 index 00000000..b48904d0 --- /dev/null +++ b/package/lttng-tools/lttng-tools.hash @@ -0,0 +1,10 @@ +# From https://lttng.org/files/lttng-tools/lttng-tools-2.13.8.tar.bz2.sha256 +sha256 b1e959579b260790930b20f3c7aa7cefb8a40e0de80d4a777c2bf78c6b353dc1 lttng-tools-2.13.8.tar.bz2 + +# Locally computed +sha256 068e55c7dbe597400199aee75ac5e71bdb2ca88c4c9a4cfa8e1fbc61f933eda5 LICENSE +sha256 6313108c23efffa36948f8b2cff1560a5935373b527b0e1a837cc77e6ed1bacd LICENSES/BSD-2-Clause +sha256 7a83b1aeb460458db9a4bd521d7f237c45b1650f6e60ea5ffc71e49472454de3 LICENSES/BSD-3-Clause +sha256 6841c85b94f9dab319356e3aaf9e969fcedad51d3aaadf665bf86f34f4186b62 LICENSES/GPL-2.0 +sha256 d72921266bc8452a8789f8a04a82755373990d00b7e0b0f1a8edb8f854e94d1c LICENSES/LGPL-2.1 +sha256 323c587d0ccf10e376f8bf9a7f31fb4ca6078105194b42e0b1e0ee2bc9bde71f LICENSES/MIT diff --git a/package/lttng-tools/lttng-tools.mk b/package/lttng-tools/lttng-tools.mk new file mode 100644 index 00000000..add1f12a --- /dev/null +++ b/package/lttng-tools/lttng-tools.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# lttng-tools +# +################################################################################ + +LTTNG_TOOLS_VERSION = 2.13.8 +LTTNG_TOOLS_SITE = https://lttng.org/files/lttng-tools +LTTNG_TOOLS_SOURCE = lttng-tools-$(LTTNG_TOOLS_VERSION).tar.bz2 +LTTNG_TOOLS_INSTALL_STAGING = YES +LTTNG_TOOLS_LICENSE = GPL-2.0, LGPL-2.1 (include/lttng/*, src/lib/lttng-ctl/*) +LTTNG_TOOLS_LICENSE_FILES = LICENSE $(addprefix LICENSES/,BSD-2-Clause BSD-3-Clause GPL-2.0 LGPL-2.1 MIT) +LTTNG_TOOLS_DEPENDENCIES = liburcu libxml2 popt util-linux +# We're patching configure.ac +LTTNG_TOOLS_AUTORECONF = YES +LTTNG_TOOLS_CONF_OPTS = \ + --disable-man-pages \ + --disable-tests \ + --with-lttng-system-rundir=/run/lttng + +ifeq ($(BR2_PACKAGE_LTTNG_LIBUST),y) +LTTNG_TOOLS_CONF_OPTS += --with-lttng-ust +LTTNG_TOOLS_DEPENDENCIES += lttng-libust +else +LTTNG_TOOLS_CONF_OPTS += --without-lttng-ust +endif + +$(eval $(autotools-package)) diff --git a/package/lua-ansicolors/Config.in b/package/lua-ansicolors/Config.in new file mode 100644 index 00000000..33ffdde7 --- /dev/null +++ b/package/lua-ansicolors/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LUA_ANSICOLORS + bool "lua-ansicolors" + help + Library for color Manipulation. + + https://github.com/kikito/ansicolors.lua diff --git a/package/lua-ansicolors/lua-ansicolors.hash b/package/lua-ansicolors/lua-ansicolors.hash new file mode 100644 index 00000000..53208afa --- /dev/null +++ b/package/lua-ansicolors/lua-ansicolors.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 df6126501af3b9b944019164a08aed91377d82e6845c24432769140f12c815d6 ansicolors-1.0.2-3.src.rock +sha256 cf2980c520ea89935bbe8a5415c5e0ff2606ffc7a89d6854796d856fa066c48e ansicolors.lua-1.0.2/COPYING diff --git a/package/lua-ansicolors/lua-ansicolors.mk b/package/lua-ansicolors/lua-ansicolors.mk new file mode 100644 index 00000000..5879b66e --- /dev/null +++ b/package/lua-ansicolors/lua-ansicolors.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# lua-ansicolors +# +################################################################################ + +LUA_ANSICOLORS_VERSION_UPSTREAM = 1.0.2 +LUA_ANSICOLORS_VERSION = $(LUA_ANSICOLORS_VERSION_UPSTREAM)-3 +LUA_ANSICOLORS_NAME_UPSTREAM = ansicolors +LUA_ANSICOLORS_SUBDIR = ansicolors.lua-$(LUA_ANSICOLORS_VERSION_UPSTREAM) +LUA_ANSICOLORS_LICENSE = MIT +LUA_ANSICOLORS_LICENSE_FILES = $(LUA_ANSICOLORS_SUBDIR)/COPYING + +$(eval $(luarocks-package)) diff --git a/package/lua-argon2/Config.in b/package/lua-argon2/Config.in new file mode 100644 index 00000000..98bdd881 --- /dev/null +++ b/package/lua-argon2/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LUA_ARGON2 + bool "lua-argon2" + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # libargon2 + select BR2_PACKAGE_LIBARGON2 + help + Lua C binding for the Argon2 password hashing algorithm. + + https://github.com/thibaultcha/lua-argon2 + +comment "lua-argon2 needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/package/lua-argon2/lua-argon2.hash b/package/lua-argon2/lua-argon2.hash new file mode 100644 index 00000000..cb3404d3 --- /dev/null +++ b/package/lua-argon2/lua-argon2.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 d109c6e8e93cd9e27e8738567a998a2763d56252cc1abca1f0f2ac36ef8ce0f4 lua-argon2-3.0.1.tar.gz diff --git a/package/lua-argon2/lua-argon2.mk b/package/lua-argon2/lua-argon2.mk new file mode 100644 index 00000000..6f787a90 --- /dev/null +++ b/package/lua-argon2/lua-argon2.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# lua-argon2 +# +################################################################################ + +LUA_ARGON2_VERSION = 3.0.1 +LUA_ARGON2_SITE = $(call github,thibaultcha,lua-argon2,$(LUA_ARGON2_VERSION)) +LUA_ARGON2_LICENSE = MIT +LUA_ARGON2_DEPENDENCIES = luainterpreter libargon2 + +define LUA_ARGON2_BUILD_CMDS + $(MAKE) -C $(@D) \ + CC=$(TARGET_CC) \ + CFLAGS="$(TARGET_CFLAGS) -fPIC" \ + PREFIX="$(STAGING_DIR)/usr" +endef + +define LUA_ARGON2_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -D $(@D)/argon2.so $(TARGET_DIR)/usr/lib/lua/$(LUAINTERPRETER_ABIVER)/argon2.so +endef + +$(eval $(generic-package)) diff --git a/package/lua-argparse/Config.in b/package/lua-argparse/Config.in new file mode 100644 index 00000000..503a001c --- /dev/null +++ b/package/lua-argparse/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LUA_ARGPARSE + bool "lua-argparse" + help + A feature-rich command-line argument parser. + + https://github.com/luarocks/argparse diff --git a/package/lua-argparse/lua-argparse.hash b/package/lua-argparse/lua-argparse.hash new file mode 100644 index 00000000..c573ba57 --- /dev/null +++ b/package/lua-argparse/lua-argparse.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 ea30d0643586a20aeb6349ca8cb7db63aefc21d9aa007c7b7168a7c564817879 argparse-0.7.1-1.src.rock +sha256 9a918f21485b2a4529c901491d9101392f03586d65ad5b024a4445ebc1dc37b4 argparse-0.7.1/LICENSE diff --git a/package/lua-argparse/lua-argparse.mk b/package/lua-argparse/lua-argparse.mk new file mode 100644 index 00000000..77f6550f --- /dev/null +++ b/package/lua-argparse/lua-argparse.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lua-argparse +# +################################################################################ + +LUA_ARGPARSE_VERSION = 0.7.1-1 +LUA_ARGPARSE_NAME_UPSTREAM = argparse +LUA_ARGPARSE_LICENSE = MIT +LUA_ARGPARSE_LICENSE_FILES = $(LUA_ARGPARSE_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/package/lua-augeas/Config.in b/package/lua-augeas/Config.in new file mode 100644 index 00000000..6470033e --- /dev/null +++ b/package/lua-augeas/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LUA_AUGEAS + bool "lua-augeas" + depends on !BR2_arc # augeas + depends on BR2_USE_WCHAR # augeas + select BR2_PACKAGE_AUGEAS + help + Lua binding for augeas library + + https://github.com/ncopa/lua-augeas + +comment "lua-augeas needs a toolchain w/ wchar" + depends on !BR2_arc + depends on !BR2_USE_WCHAR diff --git a/package/lua-augeas/lua-augeas.hash b/package/lua-augeas/lua-augeas.hash new file mode 100644 index 00000000..07a6a676 --- /dev/null +++ b/package/lua-augeas/lua-augeas.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 694fe887eebac27b558c9695042405f70a86382e92916094e7ba5f411673fbc1 lua-augeas-a6eace5116d1a711218a7c9086a4e3c4db88ee57.tar.gz +sha256 1f5c5ee5da981332b7f73cc5a59af660b03104279e2aa21b6b86890430c3eff0 COPYRIGHT diff --git a/package/lua-augeas/lua-augeas.mk b/package/lua-augeas/lua-augeas.mk new file mode 100644 index 00000000..930cf49b --- /dev/null +++ b/package/lua-augeas/lua-augeas.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# lua-augeas +# +################################################################################ + +LUA_AUGEAS_VERSION = a6eace5116d1a711218a7c9086a4e3c4db88ee57 +LUA_AUGEAS_SITE = $(call github,ncopa,lua-augeas,$(LUA_AUGEAS_VERSION)) +LUA_AUGEAS_LICENSE = MIT +LUA_AUGEAS_LICENSE_FILES = COPYRIGHT +LUA_AUGEAS_DEPENDENCIES = luainterpreter augeas host-pkgconf + +# LDFLAGS=$(LDFLAGS) is present to pass LDFLAGS from environment to the command +# line. With LDFLAGS set in the command line, related ordinary asignment present +# in the makefile are ignored and so lua-augeas makefile cannot not add '-L/lib' +# to this value. +LUA_AUGEAS_CONF_OPTS= \ + PKGCONFIG="$(PKG_CONFIG_HOST_BINARY)" \ + LDFLAGS="$(LDFLAGS)" \ + LUA_VERSION="$(LUAINTERPRETER_ABIVER)" \ + INSTALL_CMOD="/usr/lib/lua/$(LUAINTERPRETER_ABIVER)" + +define LUA_AUGEAS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(LUA_AUGEAS_CONF_OPTS) all +endef + +define LUA_AUGEAS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(LUA_AUGEAS_CONF_OPTS) DESTDIR="$(TARGET_DIR)" install +endef + +$(eval $(generic-package)) diff --git a/package/lua-basexx/Config.in b/package/lua-basexx/Config.in new file mode 100644 index 00000000..2f3bb1de --- /dev/null +++ b/package/lua-basexx/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LUA_BASEXX + bool "lua-basexx" + help + A Lua library which provides base2(bitfield), base16(hex), + base32(crockford/rfc), base64(rfc/url), base85(z85) decoding + and encoding. + + https://github.com/aiq/basexx diff --git a/package/lua-basexx/lua-basexx.hash b/package/lua-basexx/lua-basexx.hash new file mode 100644 index 00000000..447ec60b --- /dev/null +++ b/package/lua-basexx/lua-basexx.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 3f6a7134a518676d73a9ba80437487de9a7d482e54859a96c0c5d8b381b0a8c6 basexx-0.4.1-1.src.rock +sha256 a1826a43c9e04f9e9b2e5d26d636c656812483bcd513618eec9d72cee69d446b basexx-0.4.1/LICENSE diff --git a/package/lua-basexx/lua-basexx.mk b/package/lua-basexx/lua-basexx.mk new file mode 100644 index 00000000..22b5a377 --- /dev/null +++ b/package/lua-basexx/lua-basexx.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lua-basexx +# +################################################################################ + +LUA_BASEXX_VERSION = 0.4.1-1 +LUA_BASEXX_NAME_UPSTREAM = basexx +LUA_BASEXX_LICENSE = MIT +LUA_BASEXX_LICENSE_FILES = $(LUA_BASEXX_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/package/lua-binaryheap/Config.in b/package/lua-binaryheap/Config.in new file mode 100644 index 00000000..fa0b304a --- /dev/null +++ b/package/lua-binaryheap/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LUA_BINARYHEAP + bool "lua-binaryheap" + help + Binary heap implementation in pure Lua. + + https://github.com/Tieske/binaryheap.lua diff --git a/package/lua-binaryheap/lua-binaryheap.hash b/package/lua-binaryheap/lua-binaryheap.hash new file mode 100644 index 00000000..dd5036b4 --- /dev/null +++ b/package/lua-binaryheap/lua-binaryheap.hash @@ -0,0 +1,2 @@ +# computed by luarocks/buildroot +sha256 ecce14dedfa7a1938aa2383c83036b98461876934f169384a2cec6bb46462d87 binaryheap-0.4-1.src.rock diff --git a/package/lua-binaryheap/lua-binaryheap.mk b/package/lua-binaryheap/lua-binaryheap.mk new file mode 100644 index 00000000..56958e6f --- /dev/null +++ b/package/lua-binaryheap/lua-binaryheap.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lua-binaryheap +# +################################################################################ + +LUA_BINARYHEAP_VERSION = 0.4-1 +LUA_BINARYHEAP_NAME_UPSTREAM = binaryheap +LUA_BINARYHEAP_SUBDIR = binaryheap.lua-version_0v4 +LUA_BINARYHEAP_LICENSE = MIT + +$(eval $(luarocks-package)) diff --git a/package/lua-bit32/Config.in b/package/lua-bit32/Config.in new file mode 100644 index 00000000..f896940d --- /dev/null +++ b/package/lua-bit32/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LUA_BIT32 + bool "lua-bit32" + help + bit32 is the native Lua 5.2 bit manipulation library, in the + version from Lua 5.3; it is compatible with Lua 5.1, 5.2 and + 5.3. + + http://www.lua.org/manual/5.2/manual.html#6.7 diff --git a/package/lua-bit32/lua-bit32.hash b/package/lua-bit32/lua-bit32.hash new file mode 100644 index 00000000..90bc2c19 --- /dev/null +++ b/package/lua-bit32/lua-bit32.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 0e273427f2b877270f9cec5642ebe2670242926ba9638d4e6df7e4e1263ca12c bit32-5.3.5.1-1.src.rock +sha256 1b24f475812c979684fb3469f6faccbdc7c33c9d39421728aa0d78deda5a89a5 lua-compat-5.3-0.10/LICENSE diff --git a/package/lua-bit32/lua-bit32.mk b/package/lua-bit32/lua-bit32.mk new file mode 100644 index 00000000..0fa5048d --- /dev/null +++ b/package/lua-bit32/lua-bit32.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# lua-bit32 +# +################################################################################ + +LUA_BIT32_VERSION = 5.3.5.1-1 +LUA_BIT32_NAME_UPSTREAM = bit32 +LUA_BIT32_SUBDIR = lua-compat-5.3-0.10 +LUA_BIT32_LICENSE = MIT +LUA_BIT32_LICENSE_FILES = $(LUA_BIT32_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/package/lua-cffi/0001-src-platform.hh-fix-or1k-build.patch b/package/lua-cffi/0001-src-platform.hh-fix-or1k-build.patch new file mode 100644 index 00000000..35d023df --- /dev/null +++ b/package/lua-cffi/0001-src-platform.hh-fix-or1k-build.patch @@ -0,0 +1,39 @@ +From 2294e61b057215bf089b1d1c482a5dcbcad6b414 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 23 May 2024 17:50:18 +0200 +Subject: [PATCH] src/platform.hh: fix or1k build + +Fix the following or1k build failure raised since version 0.2.2 and +https://github.com/q66/cffi-lua/commit/27755f61e4c625dff951302bade4ad07e3609ca5: + +In file included from /home/buildroot/autobuild/run/instance-0/output-1/host/or1k-buildroot-linux-uclibc/sysroot/usr/include/lua.hpp:6, + from ../src/lua.hh:23, + from ../src/parser.hh:4, + from ../src/ffilib.cc:7: +../src/ffilib.cc: In static member function 'static void ffi_module::setup(lua_State*)': +../src/ffilib.cc:1616:28: error: expected ')' before 'FFI_ARCH_NAME' + 1616 | lua_pushliteral(L, FFI_ARCH_NAME); + | ^~~~~~~~~~~~~ + +Fixes: 27755f61e4c625dff951302bade4ad07e3609ca5 + - http://autobuild.buildroot.org/results/4e14753732c5b6fe8ba9ecc4050ffb35f471c428 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/q66/cffi-lua/commit/2294e61b057215bf089b1d1c482a5dcbcad6b414 +--- + src/platform.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/platform.hh b/src/platform.hh +index 84e0a89..dab1e76 100644 +--- a/src/platform.hh ++++ b/src/platform.hh +@@ -192,7 +192,7 @@ + # endif + #elif defined(__OR1K__) + # define FFI_ARCH FFI_ARCH_OR1K +-# define FFO_ARCH_NAME "or1k" ++# define FFI_ARCH_NAME "or1k" + #elif defined(__riscv) || defined(__riscv__) + # if __riscv_xlen == 32 + # define FFI_ARCH FFI_ARCH_RV32 diff --git a/package/lua-cffi/Config.in b/package/lua-cffi/Config.in new file mode 100644 index 00000000..ceef16ee --- /dev/null +++ b/package/lua-cffi/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LUA_CFFI + bool "lua-cffi" + depends on BR2_TOOLCHAIN_HAS_THREADS # libffi + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LIBFFI + help + This is a portable C FFI for Lua, based on libffi and aiming + to be mostly compatible with LuaJIT FFI, but written from + scratch. + + https://github.com/q66/cffi-lua + +comment "lua-cffi needs a toolchain w/ C++, gcc >= 4.8, threads" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \ + !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/lua-cffi/lua-cffi.hash b/package/lua-cffi/lua-cffi.hash new file mode 100644 index 00000000..318f60fe --- /dev/null +++ b/package/lua-cffi/lua-cffi.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 1d2577a62a843e5e6db35af1b58300d279b4df58eccef5e823441501f960d388 lua-cffi-0.2.3.tar.gz +sha256 f5653a4d5864a3920ea1e07dacfd646067314be647598f0acaaf685beaa2e396 COPYING.md diff --git a/package/lua-cffi/lua-cffi.mk b/package/lua-cffi/lua-cffi.mk new file mode 100644 index 00000000..f0127b33 --- /dev/null +++ b/package/lua-cffi/lua-cffi.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# lua-cffi +# +################################################################################ + +LUA_CFFI_VERSION = 0.2.3 +LUA_CFFI_SITE = $(call github,q66,cffi-lua,v$(LUA_CFFI_VERSION)) +LUA_CFFI_LICENSE = MIT +LUA_CFFI_LICENSE_FILES = COPYING.md + +LUA_CFFI_DEPENDENCIES = libffi + +ifeq ($(BR2_PACKAGE_LUA),y) +LUA_CFFI_DEPENDENCIES += lua +LUA_CFFI_CONF_OPTS += -Dlua_version=$(LUAINTERPRETER_ABIVER) +else ifeq ($(BR2_PACKAGE_LUAJIT),y) +LUA_CFFI_DEPENDENCIES += luajit +LUA_CFFI_CONF_OPTS += -Dlua_version=luajit +endif + +$(eval $(meson-package)) diff --git a/package/lua-cjson/Config.in b/package/lua-cjson/Config.in new file mode 100644 index 00000000..1c153fa4 --- /dev/null +++ b/package/lua-cjson/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LUA_CJSON + bool "lua-cjson" + help + The Lua CJSON module provides JSON support for Lua. + It features: + - Fast, standards compliant encoding/parsing routines + - Full support for JSON with UTF-8, including decoding + surrogate pairs + - Optional run-time support for common exceptions to the JSON + specification (infinity, NaN, ...) + - No dependencies on other libraries + + (C-module) + + https://www.kyne.com.au/~mark/software/lua-cjson.php diff --git a/package/lua-cjson/lua-cjson.hash b/package/lua-cjson/lua-cjson.hash new file mode 100644 index 00000000..5ddc07bc --- /dev/null +++ b/package/lua-cjson/lua-cjson.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 02dea368d07753647c75bd9e6660dd4d06ff7d09956d90d5afc4c3f5b78ed187 lua-cjson-2.1.0.10-1.src.rock +sha256 9576e82ef5013fbe80b3bd446a7d9ddd47328baa2186c31d3d885e2a9a8cd31e lua-cjson/LICENSE diff --git a/package/lua-cjson/lua-cjson.mk b/package/lua-cjson/lua-cjson.mk new file mode 100644 index 00000000..e08d2300 --- /dev/null +++ b/package/lua-cjson/lua-cjson.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lua-cjson +# +################################################################################ + +LUA_CJSON_VERSION = 2.1.0.10-1 +LUA_CJSON_SUBDIR = lua-cjson +LUA_CJSON_LICENSE = MIT +LUA_CJSON_LICENSE_FILES = $(LUA_CJSON_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/package/lua-coat/Config.in b/package/lua-coat/Config.in new file mode 100644 index 00000000..f34f6b97 --- /dev/null +++ b/package/lua-coat/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LUA_COAT + bool "lua-coat" + help + Yet Another Lua Object-Oriented Model. + + https://fperrad.frama.io/lua-Coat/ diff --git a/package/lua-coat/lua-coat.hash b/package/lua-coat/lua-coat.hash new file mode 100644 index 00000000..f2e79d69 --- /dev/null +++ b/package/lua-coat/lua-coat.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 24d0e894d743f46c09a282e4dd272d2a6004557608b618c1c9d9f464dd65af02 lua-coat-0.9.2-1.src.rock +sha256 81b5f657812ccfd63f19c9af1389b5fe6b26f079a4841c5d074940c47bf7cb1e lua-Coat-0.9.2/COPYRIGHT diff --git a/package/lua-coat/lua-coat.mk b/package/lua-coat/lua-coat.mk new file mode 100644 index 00000000..6555e66c --- /dev/null +++ b/package/lua-coat/lua-coat.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lua-coat +# +################################################################################ + +LUA_COAT_VERSION = 0.9.2-1 +LUA_COAT_NAME_UPSTREAM = lua-Coat +LUA_COAT_LICENSE = MIT +LUA_COAT_LICENSE_FILES = $(LUA_COAT_SUBDIR)/COPYRIGHT + +$(eval $(luarocks-package)) diff --git a/package/lua-coatpersistent/Config.in b/package/lua-coatpersistent/Config.in new file mode 100644 index 00000000..4e8e6432 --- /dev/null +++ b/package/lua-coatpersistent/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LUA_COATPERSISTENT + bool "lua-coatpersistent" + depends on BR2_PACKAGE_LSQLITE3 || BR2_PACKAGE_LUASQL_SQLITE3 + select BR2_PACKAGE_DADO # runtime + select BR2_PACKAGE_LUA_COAT # runtime + help + An ORM for lua-Coat. + + https://fperrad.frama.io/lua-CoatPersistent/ + +comment "lua-coatpersistent needs lsqlite3 or luasql-sqlite3" + depends on !BR2_PACKAGE_LSQLITE3 && !BR2_PACKAGE_LUASQL_SQLITE3 diff --git a/package/lua-coatpersistent/lua-coatpersistent.hash b/package/lua-coatpersistent/lua-coatpersistent.hash new file mode 100644 index 00000000..0dae3dca --- /dev/null +++ b/package/lua-coatpersistent/lua-coatpersistent.hash @@ -0,0 +1,4 @@ +# computed by luarocks/buildroot +sha256 e718ee36a17312108f266e8412f840db150afd89e8587d36e685673fff65f142 lua-coatpersistent-lsqlite3-0.2.2-1.src.rock +sha256 5d36d6a8b413a2d56a466a45314291a0265c514a179e741b3fc95f4dd901abe6 lua-coatpersistent-luasql-0.2.2-1.src.rock +sha256 f8ed30644056ceff4315e694a1c1af4af4f08ec0adabae353ab8f3f5289ffbf3 lua-CoatPersistent-0.2.2/COPYRIGHT diff --git a/package/lua-coatpersistent/lua-coatpersistent.mk b/package/lua-coatpersistent/lua-coatpersistent.mk new file mode 100644 index 00000000..68c60838 --- /dev/null +++ b/package/lua-coatpersistent/lua-coatpersistent.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# lua-coatpersistent +# +################################################################################ + +LUA_COATPERSISTENT_VERSION_UPSTREAM = 0.2.2 +ifeq ($(BR2_PACKAGE_LSQLITE3),y) +LUA_COATPERSISTENT_VERSION = lsqlite3-$(LUA_COATPERSISTENT_VERSION_UPSTREAM)-1 +else +LUA_COATPERSISTENT_VERSION = luasql-$(LUA_COATPERSISTENT_VERSION_UPSTREAM)-1 +endif +LUA_COATPERSISTENT_SUBDIR = lua-CoatPersistent-$(LUA_COATPERSISTENT_VERSION_UPSTREAM) +LUA_COATPERSISTENT_LICENSE = MIT +LUA_COATPERSISTENT_LICENSE_FILES = $(LUA_COATPERSISTENT_SUBDIR)/COPYRIGHT + +$(eval $(luarocks-package)) diff --git a/package/lua-codegen/Config.in b/package/lua-codegen/Config.in new file mode 100644 index 00000000..fbcf5ca4 --- /dev/null +++ b/package/lua-codegen/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LUA_CODEGEN + bool "lua-codegen" + help + A template engine. + + https://fperrad.frama.io/lua-CodeGen diff --git a/package/lua-codegen/lua-codegen.hash b/package/lua-codegen/lua-codegen.hash new file mode 100644 index 00000000..2fd466ac --- /dev/null +++ b/package/lua-codegen/lua-codegen.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 c09126d7f5d0fa9c867ee9108eb5961dab111320ee35e5f842317f6058e922ec lua-codegen-0.3.3-1.src.rock +sha256 f09265c450c3a59558ecc552ea4ba61e5a74dec995738eec545d121718833a80 lua-CodeGen-0.3.3/COPYRIGHT diff --git a/package/lua-codegen/lua-codegen.mk b/package/lua-codegen/lua-codegen.mk new file mode 100644 index 00000000..caa9008e --- /dev/null +++ b/package/lua-codegen/lua-codegen.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lua-codegen +# +################################################################################ + +LUA_CODEGEN_VERSION = 0.3.3-1 +LUA_CODEGEN_NAME_UPSTREAM = lua-CodeGen +LUA_CODEGEN_LICENSE = MIT +LUA_CODEGEN_LICENSE_FILES = $(LUA_CODEGEN_SUBDIR)/COPYRIGHT + +$(eval $(luarocks-package)) diff --git a/package/lua-compat53/Config.in b/package/lua-compat53/Config.in new file mode 100644 index 00000000..695c1392 --- /dev/null +++ b/package/lua-compat53/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LUA_COMPAT53 + bool "lua-compat53" + depends on BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1 + help + Compatibility module providing Lua-5.3-style APIs for Lua 5.2 + and 5.1. + + https://github.com/lunarmodules/lua-compat-5.3 diff --git a/package/lua-compat53/lua-compat53.hash b/package/lua-compat53/lua-compat53.hash new file mode 100644 index 00000000..1930063f --- /dev/null +++ b/package/lua-compat53/lua-compat53.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 bff8e597384776de7c139bee7d6a6f2c05c3eb7315d08733473fa986720cec60 compat53-0.12-1.src.rock +sha256 870cdff7e4db4c2e84a335b2b9e242b9f963830550026e2057a5885e945982e5 lua-compat-5.3-0.12/LICENSE diff --git a/package/lua-compat53/lua-compat53.mk b/package/lua-compat53/lua-compat53.mk new file mode 100644 index 00000000..12ac5c01 --- /dev/null +++ b/package/lua-compat53/lua-compat53.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# lua-compat53 +# +################################################################################ + +LUA_COMPAT53_VERSION_UPSTREAM = 0.12 +LUA_COMPAT53_VERSION = $(LUA_COMPAT53_VERSION_UPSTREAM)-1 +LUA_COMPAT53_NAME_UPSTREAM = compat53 +LUA_COMPAT53_SUBDIR = lua-compat-5.3-$(LUA_COMPAT53_VERSION_UPSTREAM) +LUA_COMPAT53_LICENSE = MIT +LUA_COMPAT53_LICENSE_FILES = $(LUA_COMPAT53_SUBDIR)/LICENSE +LUA_COMPAT53_INSTALL_STAGING = YES + +define LUA_COMPAT53_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0644 $(@D)/$(LUA_COMPAT53_SUBDIR)/c-api/compat-5.3.c \ + $(STAGING_DIR)/usr/include/compat-5.3.c + $(INSTALL) -D -m 0644 $(@D)/$(LUA_COMPAT53_SUBDIR)/c-api/compat-5.3.h \ + $(STAGING_DIR)/usr/include/compat-5.3.h +endef + +$(eval $(luarocks-package)) diff --git a/package/lua-conciseserialization/Config.in b/package/lua-conciseserialization/Config.in new file mode 100644 index 00000000..b6601470 --- /dev/null +++ b/package/lua-conciseserialization/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LUA_CONCISESERIALIZATION + bool "lua-conciseserialization" + help + a pure Lua implementation of CBOR / RFC8949. + + https://fperrad.frama.io/lua-ConciseSerialization/ diff --git a/package/lua-conciseserialization/lua-conciseserialization.hash b/package/lua-conciseserialization/lua-conciseserialization.hash new file mode 100644 index 00000000..30ae4536 --- /dev/null +++ b/package/lua-conciseserialization/lua-conciseserialization.hash @@ -0,0 +1,4 @@ +# computed by luarocks/buildroot +sha256 1dd7a5bd17349ad78e93b36f05739e4323a8fda8cd66dee423bdd5a21a0c4453 lua-conciseserialization-0.2.4-1.src.rock +sha256 7988a3ab9ea3d8c536387c4e7931b1703fa02f7011771569ed56641fa1a0c78c lua-conciseserialization-lua53-0.2.4-1.src.rock +sha256 23ddf0d4a4dbc0667eeb919ceb7cc0a5b527af6cb51b286b78fa42f350de2130 lua-ConciseSerialization-0.2.4/COPYRIGHT diff --git a/package/lua-conciseserialization/lua-conciseserialization.mk b/package/lua-conciseserialization/lua-conciseserialization.mk new file mode 100644 index 00000000..a777a4ba --- /dev/null +++ b/package/lua-conciseserialization/lua-conciseserialization.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# lua-conciseserialization +# +################################################################################ + +LUA_CONCISESERIALIZATION_VERSION_UPSTREAM = 0.2.4 +LUA_CONCISESERIALIZATION_VERSION = $(LUA_CONCISESERIALIZATION_VERSION_UPSTREAM)-1 +ifeq ($(BR2_PACKAGE_LUA_5_3)$(BR2_PACKAGE_LUA_5_4),y) +LUA_CONCISESERIALIZATION_NAME_UPSTREAM = lua-ConciseSerialization-lua53 +else +LUA_CONCISESERIALIZATION_NAME_UPSTREAM = lua-ConciseSerialization +endif +LUA_CONCISESERIALIZATION_SUBDIR = lua-ConciseSerialization-$(LUA_CONCISESERIALIZATION_VERSION_UPSTREAM) +LUA_CONCISESERIALIZATION_LICENSE = MIT +LUA_CONCISESERIALIZATION_LICENSE_FILES = $(LUA_CONCISESERIALIZATION_SUBDIR)/COPYRIGHT + +$(eval $(luarocks-package)) diff --git a/package/lua-cqueues/Config.in b/package/lua-cqueues/Config.in new file mode 100644 index 00000000..a8c38950 --- /dev/null +++ b/package/lua-cqueues/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LUA_CQUEUES + bool "lua-cqueues" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + help + Continuation Queues: Embeddable asynchronous networking, + threading, and notification framework for Lua on Unix. + + http://25thandclement.com/~william/projects/cqueues.html + +comment "lua-cqueues needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/lua-cqueues/lua-cqueues.hash b/package/lua-cqueues/lua-cqueues.hash new file mode 100644 index 00000000..5803a60d --- /dev/null +++ b/package/lua-cqueues/lua-cqueues.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 9e112edd246da5cfca264314b70325a0b63665cb87a00e45ee3ae4f194000d52 lua-cqueues-20200726.tar.gz +sha256 5f4b1f94047790eadf8fd0f9a8e3bd2895bea4c9a2c0f8bf7cd8c8e57caa5219 LICENSE diff --git a/package/lua-cqueues/lua-cqueues.mk b/package/lua-cqueues/lua-cqueues.mk new file mode 100644 index 00000000..6d842eca --- /dev/null +++ b/package/lua-cqueues/lua-cqueues.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# lua-cqueues +# +################################################################################ + +LUA_CQUEUES_VERSION = 20200726 +LUA_CQUEUES_SITE = $(call github,wahern,cqueues,rel-$(LUA_CQUEUES_VERSION)) +LUA_CQUEUES_LICENSE = MIT +LUA_CQUEUES_LICENSE_FILES = LICENSE +LUA_CQUEUES_DEPENDENCIES = luainterpreter openssl host-m4 + +LUA_CQUEUES_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y) +LUA_CQUEUES_CFLAGS += -O0 +endif + +define LUA_CQUEUES_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(LUA_CQUEUES_CFLAGS)" -C $(@D) \ + prefix="$(STAGING_DIR)/usr" all$(LUAINTERPRETER_ABIVER) +endef + +define LUA_CQUEUES_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + DESTDIR="$(TARGET_DIR)" prefix=/usr install$(LUAINTERPRETER_ABIVER) +endef + +$(eval $(generic-package)) diff --git a/package/lua-csnappy/Config.in b/package/lua-csnappy/Config.in new file mode 100644 index 00000000..fb00a130 --- /dev/null +++ b/package/lua-csnappy/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUA_CSNAPPY + bool "lua-csnappy" + help + lua-csnappy is a binding of the csnappy library + which implements the Google's Snappy (de)compressor. + + https://fperrad.frama.io/lua-csnappy/ diff --git a/package/lua-csnappy/lua-csnappy.hash b/package/lua-csnappy/lua-csnappy.hash new file mode 100644 index 00000000..dd3c0c32 --- /dev/null +++ b/package/lua-csnappy/lua-csnappy.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 4fc373ba714cb8b428e9971f1725d82de6a43dfea361a0b7894e4762238dc95c lua-csnappy-0.1.5-1.src.rock +sha256 8865da757dbc6fe3c8cee4d88bdfd82c1e0e789974a4d0d52db75a985025c1f0 lua-csnappy-0.1.5/COPYRIGHT diff --git a/package/lua-csnappy/lua-csnappy.mk b/package/lua-csnappy/lua-csnappy.mk new file mode 100644 index 00000000..cba0a060 --- /dev/null +++ b/package/lua-csnappy/lua-csnappy.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# lua-csnappy +# +################################################################################ + +LUA_CSNAPPY_VERSION = 0.1.5-1 +LUA_CSNAPPY_LICENSE = BSD-3-Clause +LUA_CSNAPPY_LICENSE_FILES = $(LUA_CSNAPPY_SUBDIR)/COPYRIGHT + +$(eval $(luarocks-package)) diff --git a/package/lua-curl/Config.in b/package/lua-curl/Config.in new file mode 100644 index 00000000..88cdaf10 --- /dev/null +++ b/package/lua-curl/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUA_CURL + bool "lua-curl" + select BR2_PACKAGE_LIBCURL + help + Lua binding to libcurl. + + https://lua-curl.github.io/ diff --git a/package/lua-curl/lua-curl.hash b/package/lua-curl/lua-curl.hash new file mode 100644 index 00000000..32f0506b --- /dev/null +++ b/package/lua-curl/lua-curl.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 6b2cc48621fac3cb7c1669705475e67a6932829ba46efb9ac5864604848f8ea2 lua-curl-0.3.13-1.src.rock +sha256 0f92f4c4665aadffb023de44b16022282040fe4409d5cd3148f1812dec30cdff Lua-cURLv3-0.3.13/LICENSE diff --git a/package/lua-curl/lua-curl.mk b/package/lua-curl/lua-curl.mk new file mode 100644 index 00000000..2120d33a --- /dev/null +++ b/package/lua-curl/lua-curl.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# lua-curl +# +################################################################################ + +LUA_CURL_VERSION_UPSTREAM = 0.3.13 +LUA_CURL_VERSION = $(LUA_CURL_VERSION_UPSTREAM)-1 +LUA_CURL_SUBDIR = Lua-cURLv3-$(LUA_CURL_VERSION_UPSTREAM) +LUA_CURL_LICENSE = MIT +LUA_CURL_LICENSE_FILES = $(LUA_CURL_SUBDIR)/LICENSE +LUA_CURL_DEPENDENCIES = libcurl + +$(eval $(luarocks-package)) diff --git a/package/lua-datafile/Config.in b/package/lua-datafile/Config.in new file mode 100644 index 00000000..e65406ed --- /dev/null +++ b/package/lua-datafile/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUA_DATAFILE + bool "lua-datafile" + help + datafile is a library for avoiding hardcoded paths + when loading resource files in Lua modules. + + https://github.com/hishamhm/datafile diff --git a/package/lua-datafile/lua-datafile.hash b/package/lua-datafile/lua-datafile.hash new file mode 100644 index 00000000..2e993bc8 --- /dev/null +++ b/package/lua-datafile/lua-datafile.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 13cb4816f459e71c525f256dbf197a516deb0f6b9ad98a9a0dc0aafe0d415194 datafile-0.10-1.src.rock +sha256 0443ddabab14f69d4c5e2641860343784a0ccbe5ae7a3743f20de9a13991da66 datafile/LICENSE diff --git a/package/lua-datafile/lua-datafile.mk b/package/lua-datafile/lua-datafile.mk new file mode 100644 index 00000000..943ed9b8 --- /dev/null +++ b/package/lua-datafile/lua-datafile.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# lua-datafile +# +################################################################################ + +LUA_DATAFILE_VERSION = 0.10-1 +LUA_DATAFILE_NAME_UPSTREAM = datafile +LUA_DATAFILE_SUBDIR = datafile +LUA_DATAFILE_LICENSE = MIT +LUA_DATAFILE_LICENSE_FILES = $(LUA_DATAFILE_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/package/lua-dkjson/Config.in b/package/lua-dkjson/Config.in new file mode 100644 index 00000000..e550fdfb --- /dev/null +++ b/package/lua-dkjson/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LUA_DKJSON + bool "lua-dkjson" + help + David Kolf's JSON module for Lua. + + dkjson is written in Lua without any dependencies, but + when LPeg is available dkjson can use it to speed up decoding. + + http://dkolf.de/dkjson-lua/ diff --git a/package/lua-dkjson/lua-dkjson.hash b/package/lua-dkjson/lua-dkjson.hash new file mode 100644 index 00000000..710879da --- /dev/null +++ b/package/lua-dkjson/lua-dkjson.hash @@ -0,0 +1,5 @@ +# computed by luarocks/buildroot +sha256 3d8de09cd43a60a005ac769ee1cedc515952c892d63cba9ac925ed02afc98091 dkjson-2.8-1.src.rock + +# locally computed +sha256 9c60064047b0f41092ee714d205b4b915f1da147fdf9afc4b3ee7bcf028a2238 dkjson-2.8/readme.txt diff --git a/package/lua-dkjson/lua-dkjson.mk b/package/lua-dkjson/lua-dkjson.mk new file mode 100644 index 00000000..a148fea8 --- /dev/null +++ b/package/lua-dkjson/lua-dkjson.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lua-dkjson +# +################################################################################ + +LUA_DKJSON_VERSION = 2.8-1 +LUA_DKJSON_NAME_UPSTREAM = dkjson +LUA_DKJSON_LICENSE = MIT +LUA_DKJSON_LICENSE_FILES = $(LUA_DKJSON_SUBDIR)/readme.txt + +$(eval $(luarocks-package)) diff --git a/package/lua-ev/Config.in b/package/lua-ev/Config.in new file mode 100644 index 00000000..1e89c270 --- /dev/null +++ b/package/lua-ev/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUA_EV + bool "lua-ev" + select BR2_PACKAGE_LIBEV + help + Get access to the libev library from Lua. + + https://github.com/brimworks/lua-ev diff --git a/package/lua-ev/lua-ev.hash b/package/lua-ev/lua-ev.hash new file mode 100644 index 00000000..278f5f8f --- /dev/null +++ b/package/lua-ev/lua-ev.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 26ac116722a241bf59daf5315ce0ffe751c1babea9a146ffc0a389f1af3facca lua-ev-1.5.tar.gz +sha256 3b6f8a25e3443c8be61fc7a91e1d27b5514d489bb3ea5986eace6fe1531aabcc README diff --git a/package/lua-ev/lua-ev.mk b/package/lua-ev/lua-ev.mk new file mode 100644 index 00000000..eec07894 --- /dev/null +++ b/package/lua-ev/lua-ev.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# lua-ev +# +################################################################################ + +LUA_EV_VERSION = 1.5 +LUA_EV_SITE = $(call github,brimworks,lua-ev,v$(LUA_EV_VERSION)) +LUA_EV_DEPENDENCIES = luainterpreter libev +LUA_EV_LICENSE = MIT +LUA_EV_LICENSE_FILES = README +LUA_EV_CONF_OPTS = -DINSTALL_CMOD="/usr/lib/lua/$(LUAINTERPRETER_ABIVER)" + +$(eval $(cmake-package)) diff --git a/package/lua-fifo/Config.in b/package/lua-fifo/Config.in new file mode 100644 index 00000000..5715b6bd --- /dev/null +++ b/package/lua-fifo/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LUA_FIFO + bool "lua-fifo" + help + A lua library/'class' that implements a FIFO. + + https://github.com/daurnimator/fifo.lua diff --git a/package/lua-fifo/lua-fifo.hash b/package/lua-fifo/lua-fifo.hash new file mode 100644 index 00000000..61b4e984 --- /dev/null +++ b/package/lua-fifo/lua-fifo.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 53dea24ad658614a0254dcb10296a1a0fc5357315ada5724d6362f54c32b4c20 fifo-0.2-0.src.rock +sha256 8b4423dd4f55a69da1454b7a48346a54fd5b6e0408b38fde25cd29c0922962b6 fifo.lua-0.2/LICENSE diff --git a/package/lua-fifo/lua-fifo.mk b/package/lua-fifo/lua-fifo.mk new file mode 100644 index 00000000..8b15fc1f --- /dev/null +++ b/package/lua-fifo/lua-fifo.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# lua-fifo +# +################################################################################ + +LUA_FIFO_VERSION_UPSTREAM = 0.2 +LUA_FIFO_VERSION = $(LUA_FIFO_VERSION_UPSTREAM)-0 +LUA_FIFO_NAME_UPSTREAM = fifo +LUA_FIFO_SUBDIR = fifo.lua-$(LUA_FIFO_VERSION_UPSTREAM) +LUA_FIFO_LICENSE = MIT +LUA_FIFO_LICENSE_FILES = $(LUA_FIFO_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/package/lua-flu/Config.in b/package/lua-flu/Config.in new file mode 100644 index 00000000..9b55ce5a --- /dev/null +++ b/package/lua-flu/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_LUA_FLU + bool "lua-flu" + depends on !BR2_STATIC_LIBS # libfuse + depends on BR2_TOOLCHAIN_HAS_THREADS # libfuse + depends on BR2_USE_MMU # libfuse + depends on !BR2_PACKAGE_LUA_5_4 + select BR2_PACKAGE_ATTR + select BR2_PACKAGE_LIBFUSE + help + Flu is a Lua binding for FUSE, which is a library allowing + creation of filesystem drivers run in userspace. Flu is a high + level binding, using basic Lua types rather than userdata + whenever possible. + + http://piratery.net/flu/ + +comment "lua-flu needs a toolchain w/ threads, dynamic library, Lua <= 5.3" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || BR2_PACKAGE_LUA_5_4 diff --git a/package/lua-flu/lua-flu.hash b/package/lua-flu/lua-flu.hash new file mode 100644 index 00000000..28ffd012 --- /dev/null +++ b/package/lua-flu/lua-flu.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 221ba8f8d3abbf12d5fc217dbb965605391892eb314eff1cd9c7beca90fe9887 flu-20181218-1.src.rock +sha256 409f7c274eb26874a382241d675a360ba6b2659742c5941e680d71a41dd35913 doub-flu-63f077a988cd/doc/LICENSE.txt diff --git a/package/lua-flu/lua-flu.mk b/package/lua-flu/lua-flu.mk new file mode 100644 index 00000000..4c7b7654 --- /dev/null +++ b/package/lua-flu/lua-flu.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# lua-flu +# +################################################################################ + +LUA_FLU_VERSION = 20181218-1 +LUA_FLU_NAME_UPSTREAM = Flu +LUA_FLU_SUBDIR = doub-flu-63f077a988cd +LUA_FLU_LICENSE = MIT +LUA_FLU_LICENSE_FILES = $(LUA_FLU_SUBDIR)/doc/LICENSE.txt +LUA_FLU_DEPENDENCIES = attr libfuse + +$(eval $(luarocks-package)) diff --git a/package/lua-gd/0001-Protect-declaration-of-LgdImageCreateFromPng-with-GD.patch b/package/lua-gd/0001-Protect-declaration-of-LgdImageCreateFromPng-with-GD.patch new file mode 100644 index 00000000..17a1fe50 --- /dev/null +++ b/package/lua-gd/0001-Protect-declaration-of-LgdImageCreateFromPng-with-GD.patch @@ -0,0 +1,34 @@ +From 78afd1c5f1ceaed05b78ac42c297d87a493295fd Mon Sep 17 00:00:00 2001 +From: spacewander +Date: Tue, 31 Oct 2017 15:48:30 +0800 +Subject: [PATCH] Protect declaration of LgdImageCreateFromPng* with GD_PNG + feature test macro + +If GD_PNG is false, neither LgdImageCreateFromPng nor +LgdImageCreateFromPngPtr would be implemented. We should avoid declaring +them too. + +Fetch from: https://github.com/ittner/lua-gd/pull/8 +Signed-off-by: Francois Perrad +--- + luagd.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/luagd.c b/luagd.c +index 9730ff7..98bc03e 100644 +--- a/luagd.c ++++ b/luagd.c +@@ -2168,8 +2168,10 @@ static const luaL_Reg LgdFunctions[] = + { "createFromGif", LgdImageCreateFromGif }, + { "createFromGifStr", LgdImageCreateFromGifPtr }, + #endif ++#ifdef GD_PNG + { "createFromPng", LgdImageCreateFromPng }, + { "createFromPngStr", LgdImageCreateFromPngPtr }, ++#endif + { "createFromGd", LgdImageCreateFromGd }, + { "createFromGdStr", LgdImageCreateFromGdPtr }, + { "createFromGd2", LgdImageCreateFromGd2 }, +-- +2.17.1 + diff --git a/package/lua-gd/Config.in b/package/lua-gd/Config.in new file mode 100644 index 00000000..dd21bba4 --- /dev/null +++ b/package/lua-gd/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUA_GD + bool "lua-gd" + select BR2_PACKAGE_GD + help + GD (graphics library) bindings for Lua. + + https://ittner.github.io/lua-gd/ diff --git a/package/lua-gd/lua-gd.hash b/package/lua-gd/lua-gd.hash new file mode 100644 index 00000000..512573b4 --- /dev/null +++ b/package/lua-gd/lua-gd.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 928fa036b37595d773db1999c9ff43195c4290f0722298fa5b0c3e619c678525 lua-gd-2ce8e478a8591afd71e607506bc8c64b161bbd30.tar.gz +sha256 b0ca41d88ddb0ca785436d37b08b8f413055755eb6bfd3ea0a6ff3214303aa43 COPYING diff --git a/package/lua-gd/lua-gd.mk b/package/lua-gd/lua-gd.mk new file mode 100644 index 00000000..099df31f --- /dev/null +++ b/package/lua-gd/lua-gd.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# lua-gd +# +################################################################################ + +LUA_GD_VERSION = 2ce8e478a8591afd71e607506bc8c64b161bbd30 +LUA_GD_SITE = $(call github,ittner,lua-gd,$(LUA_GD_VERSION)) +LUA_GD_LICENSE = MIT +LUA_GD_LICENSE_FILES = COPYING +LUA_GD_DEPENDENCIES = luainterpreter gd + +ifeq ($(BR2_PACKAGE_FONTCONFIG),y) +LUA_GD_FEATURES += -DGD_FONTCONFIG +endif + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +LUA_GD_FEATURES += -DGD_FREETYPE +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +LUA_GD_FEATURES += -DGD_JPEG +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +LUA_GD_FEATURES += -DGD_PNG +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXPM),y) +LUA_GD_FEATURES += -DGD_XPM +endif + +# VERSION follows the scheme described on https://ittner.github.io/lua-gd/manual.html#intro, +# the current version of the binding is 3. +define LUA_GD_BUILD_CMDS + $(MAKE) -C $(@D) gd.so \ + GDFEATURES="$(LUA_GD_FEATURES)" \ + CC=$(TARGET_CC) \ + CFLAGS="$(TARGET_CFLAGS) -fPIC -DVERSION=\\\"$(GD_VERSION)r3\\\"" \ + LFLAGS="-shared -lgd" +endef + +define LUA_GD_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -D $(@D)/gd.so $(TARGET_DIR)/usr/lib/lua/$(LUAINTERPRETER_ABIVER)/gd.so +endef + +$(eval $(generic-package)) diff --git a/package/lua-http/0001-http-h1_stream-handle-EOF-when-body_read_type-length.patch b/package/lua-http/0001-http-h1_stream-handle-EOF-when-body_read_type-length.patch new file mode 100644 index 00000000..fdbf5243 --- /dev/null +++ b/package/lua-http/0001-http-h1_stream-handle-EOF-when-body_read_type-length.patch @@ -0,0 +1,71 @@ +From ddab2835c583d45dec62680ca8d3cbde55e0bae6 Mon Sep 17 00:00:00 2001 +From: daurnimator +Date: Tue, 22 Aug 2023 23:30:20 +1000 +Subject: [PATCH] http/h1_stream: handle EOF when `body_read_type==length` + +If a client closes the connection before sending the expected number of bytes +then return `EPIPE`. +This fixes a potential infinite draining loop when trying to trying to +`:shutdown()` a stream. + +Upstream: https://github.com/daurnimator/lua-http/commit/ddab2835c583d45dec62680ca8d3cbde55e0bae6 +Signed-off-by: Francois Perrad +--- + http/h1_stream.lua | 2 ++ + spec/h1_stream_spec.lua | 27 +++++++++++++++++++++++++++ + 2 files changed, 29 insertions(+) + +diff --git a/lua-http-0.4/http/h1_stream.lua b/lua-http-0.4/http/h1_stream.lua +index b2469a1..b0ca821 100644 +--- a/lua-http-0.4/http/h1_stream.lua ++++ b/lua-http-0.4/http/h1_stream.lua +@@ -861,6 +861,8 @@ function stream_methods:read_next_chunk(timeout) + if chunk ~= nil then + self.body_read_left = length_n - #chunk + end_stream = (self.body_read_left == 0) ++ elseif err == nil then ++ return nil, ce.strerror(ce.EPIPE), ce.EPIPE + end + elseif length_n == 0 then + chunk = "" +diff --git a/lua-http-0.4/spec/h1_stream_spec.lua b/lua-http-0.4/spec/h1_stream_spec.lua +index f9cfea9..1303f94 100644 +--- a/lua-http-0.4/spec/h1_stream_spec.lua ++++ b/lua-http-0.4/spec/h1_stream_spec.lua +@@ -295,6 +295,33 @@ describe("http1 stream", function() + server:close() + client:close() + end) ++ it("Doesn't hang when a content-length delimited stream is closed", function() ++ local server, client = new_pair(1.1) ++ local cq = cqueues.new() ++ cq:wrap(function() ++ local stream = client:new_stream() ++ local headers = new_headers() ++ headers:append(":method", "GET") ++ headers:append(":scheme", "http") ++ headers:append(":authority", "myauthority") ++ headers:append(":path", "/a") ++ assert(stream:write_headers(headers, true)) ++ end) ++ cq:wrap(function() ++ local stream = server:get_next_incoming_stream() ++ assert(stream:get_headers()) ++ local res_headers = new_headers() ++ res_headers:append(":status", "200") ++ res_headers:append("content-length", "100") ++ assert(stream:write_headers(res_headers, false)) ++ assert(stream:write_chunk("foo", false)) ++ assert(stream:shutdown()) ++ end) ++ assert_loop(cq, TEST_TIMEOUT) ++ assert.truthy(cq:empty()) ++ server:close() ++ client:close() ++ end) + it("allows pipelining", function() + local server, client = new_pair(1.1) + local cq = cqueues.new() +-- +2.40.1 + diff --git a/package/lua-http/Config.in b/package/lua-http/Config.in new file mode 100644 index 00000000..e4d359ad --- /dev/null +++ b/package/lua-http/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_LUA_HTTP + bool "lua-http" + depends on BR2_TOOLCHAIN_HAS_THREADS # luaossl & lua-cqueues + select BR2_PACKAGE_LPEG # runtime + select BR2_PACKAGE_LUA_BASEXX # runtime + select BR2_PACKAGE_LUA_BINARYHEAP # runtime + select BR2_PACKAGE_LUA_COMPAT53 if BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1 # runtime + select BR2_PACKAGE_LUA_CQUEUES # runtime + select BR2_PACKAGE_LUA_FIFO # runtime + select BR2_PACKAGE_LUA_LPEG_PATTERNS # runtime + select BR2_PACKAGE_LUABITOP if BR2_PACKAGE_LUA_5_1 # runtime + select BR2_PACKAGE_LUAOSSL # runtime + help + HTTP library for Lua. + + https://github.com/daurnimator/lua-http + +comment "lua-http needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/lua-http/lua-http.hash b/package/lua-http/lua-http.hash new file mode 100644 index 00000000..0f928489 --- /dev/null +++ b/package/lua-http/lua-http.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 dbe1b29ff89fb937059e4398c9a628361d97d856acc87fd8cd85cb9340cde328 http-0.4-0.src.rock +sha256 1b486781068bcfd373f8c54f8d78eeab76d900bdf32e589e8330a4c563c2874b lua-http-0.4/LICENSE.md diff --git a/package/lua-http/lua-http.mk b/package/lua-http/lua-http.mk new file mode 100644 index 00000000..34387c12 --- /dev/null +++ b/package/lua-http/lua-http.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# lua-http +# +################################################################################ + +LUA_HTTP_VERSION_UPSTREAM = 0.4 +LUA_HTTP_VERSION = $(LUA_HTTP_VERSION_UPSTREAM)-0 +LUA_HTTP_NAME_UPSTREAM = http +LUA_HTTP_SUBDIR = lua-http-$(LUA_HTTP_VERSION_UPSTREAM) +LUA_HTTP_LICENSE = MIT +LUA_HTTP_LICENSE_FILES = $(LUA_HTTP_SUBDIR)/LICENSE.md +LUA_HTTP_CPE_ID_VERSION = $(LUA_HTTP_VERSION_UPSTREAM) +LUA_HTTP_CPE_ID_VENDOR = daurnimator + +# 0001-http-h1_stream-handle-EOF-when-body_read_type-length.patch +LUA_HTTP_IGNORE_CVES += CVE-2023-4540 + +$(eval $(luarocks-package)) diff --git a/package/lua-iconv/Config.in b/package/lua-iconv/Config.in new file mode 100644 index 00000000..e76019d6 --- /dev/null +++ b/package/lua-iconv/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUA_ICONV + bool "lua-iconv" + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Lua binding to the POSIX 'iconv' library + + http://ittner.github.io/lua-iconv/ diff --git a/package/lua-iconv/lua-iconv.hash b/package/lua-iconv/lua-iconv.hash new file mode 100644 index 00000000..b28ce0b3 --- /dev/null +++ b/package/lua-iconv/lua-iconv.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 fb66e785e15376c2d2817f1f1b27d10272b877eacc998c727a10f081a7d768fa lua-iconv-7-1.src.rock +sha256 30227b9571827f3dfcdeb3830594fc415459d64ad7271e9954178d3ef58a9bd4 lua-iconv-7/COPYING diff --git a/package/lua-iconv/lua-iconv.mk b/package/lua-iconv/lua-iconv.mk new file mode 100644 index 00000000..ea8e0dd8 --- /dev/null +++ b/package/lua-iconv/lua-iconv.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lua-iconv +# +################################################################################ + +LUA_ICONV_VERSION = 7-1 +LUA_ICONV_LICENSE = MIT +LUA_ICONV_LICENSE_FILES = $(LUA_ICONV_SUBDIR)/COPYING +LUA_ICONV_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv) + +$(eval $(luarocks-package)) diff --git a/package/lua-inotify/Config.in b/package/lua-inotify/Config.in new file mode 100644 index 00000000..2b0c943c --- /dev/null +++ b/package/lua-inotify/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LUA_INOTIFY + bool "lua-inotify" + help + Inotify bindings for Lua. + + http://hoelz.ro/projects/linotify diff --git a/package/lua-inotify/lua-inotify.hash b/package/lua-inotify/lua-inotify.hash new file mode 100644 index 00000000..3ec4ea9b --- /dev/null +++ b/package/lua-inotify/lua-inotify.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 9164b5777b132d7e1e073478d8837a526262991c57e32d75d517100f533eb436 inotify-0.5-1.src.rock +sha256 b02158adb3c7763e1183a9386672f4f037bfeaab0cb0c73d684f34f3ea1993d8 linotify-0.5/COPYRIGHT diff --git a/package/lua-inotify/lua-inotify.mk b/package/lua-inotify/lua-inotify.mk new file mode 100644 index 00000000..dde7fc0f --- /dev/null +++ b/package/lua-inotify/lua-inotify.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# lua-inotify +# +################################################################################ + +LUA_INOTIFY_VERSION_UPSTREAM = 0.5 +LUA_INOTIFY_VERSION = $(LUA_INOTIFY_VERSION_UPSTREAM)-1 +LUA_INOTIFY_NAME_UPSTREAM = inotify +LUA_INOTIFY_SUBDIR = linotify-$(LUA_INOTIFY_VERSION_UPSTREAM) +LUA_INOTIFY_LICENSE = MIT +LUA_INOTIFY_LICENSE_FILES = $(LUA_INOTIFY_SUBDIR)/COPYRIGHT + +$(eval $(luarocks-package)) diff --git a/package/lua-lgdbm/Config.in b/package/lua-lgdbm/Config.in new file mode 100644 index 00000000..5d8636af --- /dev/null +++ b/package/lua-lgdbm/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LUA_LGDBM + bool "lua-lgdbm" + depends on BR2_USE_MMU # gdbm + depends on BR2_USE_WCHAR #gdbm + depends on BR2_PACKAGE_LUA_5_3 || BR2_PACKAGE_LUA_5_4 + select BR2_PACKAGE_GDBM + help + A database library for Lua using GDBM. + + http://www.tecgraf.puc-rio.br/~lhf/ftp/lua/#lgdbm + +comment "lua-lgdbm needs needs a toolchain with wchar, Lua >= 5.3" + depends on !BR2_USE_MMU + depends on !(BR2_PACKAGE_LUA_5_3 || BR2_PACKAGE_LUA_5_4) \ + || !BR2_USE_WCHAR diff --git a/package/lua-lgdbm/lua-lgdbm.hash b/package/lua-lgdbm/lua-lgdbm.hash new file mode 100644 index 00000000..06f22f15 --- /dev/null +++ b/package/lua-lgdbm/lua-lgdbm.hash @@ -0,0 +1,2 @@ +# computed by luarocks/buildroot +sha256 8cb7e25254b1c9889894654f6cf26d09f2c2ee10fe966f45152eb5deb0a24f9b lgdbm-20211118.52-0.src.rock diff --git a/package/lua-lgdbm/lua-lgdbm.mk b/package/lua-lgdbm/lua-lgdbm.mk new file mode 100644 index 00000000..35ca9c93 --- /dev/null +++ b/package/lua-lgdbm/lua-lgdbm.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# lua-lgdbm +# +################################################################################ + +LUA_LGDBM_VERSION = 20211118.52-0 +LUA_LGDBM_NAME_UPSTREAM = lgdbm +LUA_LGDBM_SUBDIR = gdbm +LUA_LGDBM_LICENSE = Public Domain +LUA_LGDBM_DEPENDENCIES = gdbm + +$(eval $(luarocks-package)) diff --git a/package/lua-lightningmdb/Config.in b/package/lua-lightningmdb/Config.in new file mode 100644 index 00000000..cd08cfbe --- /dev/null +++ b/package/lua-lightningmdb/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LUA_LIGHTNINGMDB + bool "lua-lightningmdb" + depends on !BR2_PACKAGE_LUAJIT + depends on BR2_TOOLCHAIN_HAS_THREADS # lmdb + select BR2_PACKAGE_LMDB + help + A thin wrapper around OpenLDAP Lightning Memory-Mapped + Database (LMDB). + + https://github.com/shmul/lightningmdb + +comment "lua-lightningmdb needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/lua-lightningmdb/lua-lightningmdb.hash b/package/lua-lightningmdb/lua-lightningmdb.hash new file mode 100644 index 00000000..49ac7ea0 --- /dev/null +++ b/package/lua-lightningmdb/lua-lightningmdb.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 d836709e8a1374eb8913f0e9787bb3f0fc4d49b29e01112691b619f7d1355f8c lightningmdb-0.9.22.1-1.src.rock +sha256 3d0562e11bc52bf45a735e1d60c6f8522886927a8bcfbe7dee219a61ec30b07a lightningmdb-0.9.22.1-1/LICENSE diff --git a/package/lua-lightningmdb/lua-lightningmdb.mk b/package/lua-lightningmdb/lua-lightningmdb.mk new file mode 100644 index 00000000..f70cbc4b --- /dev/null +++ b/package/lua-lightningmdb/lua-lightningmdb.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# lua-lightningmdb +# +################################################################################ + +LUA_LIGHTNINGMDB_VERSION = 0.9.22.1-1 +LUA_LIGHTNINGMDB_NAME_UPSTREAM = Lightningmdb +LUA_LIGHTNINGMDB_SUBDIR = lightningmdb-$(LUA_LIGHTNINGMDB_VERSION) +LUA_LIGHTNINGMDB_LICENSE = MIT +LUA_LIGHTNINGMDB_LICENSE_FILES = $(LUA_LIGHTNINGMDB_SUBDIR)/LICENSE +LUA_LIGHTNINGMDB_DEPENDENCIES = lmdb + +$(eval $(luarocks-package)) diff --git a/package/lua-livr-extra/Config.in b/package/lua-livr-extra/Config.in new file mode 100644 index 00000000..08506229 --- /dev/null +++ b/package/lua-livr-extra/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUA_LIVR_EXTRA + bool "lua-livr-extra" + select BR2_PACKAGE_LUA_LIVR # runtime + help + more LIVR rules. + + https://fperrad.frama.io/lua-LIVR-extra diff --git a/package/lua-livr-extra/lua-livr-extra.hash b/package/lua-livr-extra/lua-livr-extra.hash new file mode 100644 index 00000000..28f71e4f --- /dev/null +++ b/package/lua-livr-extra/lua-livr-extra.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 3033526912977b3c618090c9f6e610d8dca596d423c9d09446c3507f2cc1f879 lua-livr-extra-0.3.0-1.src.rock +sha256 94306dda50b3db0017b5d4fc31de4b82658153fed00a579f8b53abba43182c8c lua-LIVR-extra-0.3.0/COPYRIGHT diff --git a/package/lua-livr-extra/lua-livr-extra.mk b/package/lua-livr-extra/lua-livr-extra.mk new file mode 100644 index 00000000..c86da937 --- /dev/null +++ b/package/lua-livr-extra/lua-livr-extra.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lua-livr-extra +# +################################################################################ + +LUA_LIVR_EXTRA_VERSION = 0.3.0-1 +LUA_LIVR_EXTRA_NAME_UPSTREAM = lua-LIVR-extra +LUA_LIVR_EXTRA_LICENSE = MIT +LUA_LIVR_EXTRA_LICENSE_FILES = $(LUA_LIVR_EXTRA_SUBDIR)/COPYRIGHT + +$(eval $(luarocks-package)) diff --git a/package/lua-livr/Config.in b/package/lua-livr/Config.in new file mode 100644 index 00000000..76fd1c75 --- /dev/null +++ b/package/lua-livr/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUA_LIVR + bool "lua-livr" + help + Lightweight validator supporting Language Independent + Validation Rules Specification (LIVR). + + https://fperrad.frama.io/lua-LIVR diff --git a/package/lua-livr/lua-livr.hash b/package/lua-livr/lua-livr.hash new file mode 100644 index 00000000..50e4d3c6 --- /dev/null +++ b/package/lua-livr/lua-livr.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 7f00fc561c5913bb53a21ec21f060118d9795c65a0d7a37903e311bdedcfff2a lua-livr-0.4.0-1.src.rock +sha256 6840bae0e48c559cc6aa765d7744d920f8a05f608c4d1223fde8e6b8e7c48c5d lua-LIVR-0.4.0/COPYRIGHT diff --git a/package/lua-livr/lua-livr.mk b/package/lua-livr/lua-livr.mk new file mode 100644 index 00000000..56600c80 --- /dev/null +++ b/package/lua-livr/lua-livr.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lua-livr +# +################################################################################ + +LUA_LIVR_VERSION = 0.4.0-1 +LUA_LIVR_NAME_UPSTREAM = lua-LIVR +LUA_LIVR_LICENSE = MIT +LUA_LIVR_LICENSE_FILES = $(LUA_LIVR_SUBDIR)/COPYRIGHT + +$(eval $(luarocks-package)) diff --git a/package/lua-lpeg-patterns/Config.in b/package/lua-lpeg-patterns/Config.in new file mode 100644 index 00000000..08c063a0 --- /dev/null +++ b/package/lua-lpeg-patterns/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUA_LPEG_PATTERNS + bool "lua-lpeg-patterns" + select BR2_PACKAGE_LPEG # runtime + help + a collection of LPEG patterns. + + https://github.com/daurnimator/lpeg_patterns diff --git a/package/lua-lpeg-patterns/lua-lpeg-patterns.hash b/package/lua-lpeg-patterns/lua-lpeg-patterns.hash new file mode 100644 index 00000000..012d7035 --- /dev/null +++ b/package/lua-lpeg-patterns/lua-lpeg-patterns.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 0e6d33543689e83911e2cb47965752e00412cbdfca888812ccbde9ec95259c56 lpeg_patterns-0.5-0.src.rock +sha256 5b0346f2b2432e5f05e8e4ad31503cf84ddf802dacde9e8c3e529efaa4be3348 lpeg_patterns-0.5/LICENSE.md diff --git a/package/lua-lpeg-patterns/lua-lpeg-patterns.mk b/package/lua-lpeg-patterns/lua-lpeg-patterns.mk new file mode 100644 index 00000000..290af8c1 --- /dev/null +++ b/package/lua-lpeg-patterns/lua-lpeg-patterns.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# lua-lpeg-patterns +# +################################################################################ + +LUA_LPEG_PATTERNS_VERSION = 0.5-0 +LUA_LPEG_PATTERNS_NAME_UPSTREAM = lpeg_patterns +LUA_LPEG_PATTERNS_ROCKSPEC = $(LUA_LPEG_PATTERNS_NAME_UPSTREAM)-$(LUA_LPEG_PATTERNS_VERSION).rockspec +LUA_LPEG_PATTERNS_SOURCE = $(LUA_LPEG_PATTERNS_NAME_UPSTREAM)-$(LUA_LPEG_PATTERNS_VERSION).src.rock +LUA_LPEG_PATTERNS_LICENSE = MIT +LUA_LPEG_PATTERNS_LICENSE_FILES = $(LUA_LPEG_PATTERNS_SUBDIR)/LICENSE.md + +$(eval $(luarocks-package)) diff --git a/package/lua-lsdbus/Config.in b/package/lua-lsdbus/Config.in new file mode 100644 index 00000000..f4eda20d --- /dev/null +++ b/package/lua-lsdbus/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LUA_LSDBUS + bool "lua-lsdbus" + depends on BR2_PACKAGE_SYSTEMD + select BR2_PACKAGE_MXML + select BR2_PACKAGE_LUA_COMPAT53 if BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1 + help + Lua D-Bus bindings based on sd-bus and sd-event + + https://github.com/kmarkus/lsdbus + +comment "lua-lsdbus needs systemd" + depends on !BR2_PACKAGE_SYSTEMD diff --git a/package/lua-lsdbus/lua-lsdbus.hash b/package/lua-lsdbus/lua-lsdbus.hash new file mode 100644 index 00000000..93a086f1 --- /dev/null +++ b/package/lua-lsdbus/lua-lsdbus.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 9a967720736b0f6ff9b3f527846de28aaf74f58775af6358c13c31c0ac37b832 lua-lsdbus-ca7509b41a26b4a3c9b9d2c523be090bdbcc89fe.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/lua-lsdbus/lua-lsdbus.mk b/package/lua-lsdbus/lua-lsdbus.mk new file mode 100644 index 00000000..865a5f8f --- /dev/null +++ b/package/lua-lsdbus/lua-lsdbus.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# lua-lsdbus +# +################################################################################ + +LUA_LSDBUS_VERSION = ca7509b41a26b4a3c9b9d2c523be090bdbcc89fe +LUA_LSDBUS_SITE = $(call github,kmarkus,lsdbus,$(LUA_LSDBUS_VERSION)) +LUA_LSDBUS_DEPENDENCIES = luainterpreter mxml systemd +LUA_LSDBUS_LICENSE = LGPL-2.1 +LUA_LSDBUS_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_LUA_COMPAT53),y) +LUA_LSDBUS_DEPENDENCIES += lua-compat53 +endif + +$(eval $(cmake-package)) diff --git a/package/lua-lunitx/Config.in b/package/lua-lunitx/Config.in new file mode 100644 index 00000000..ea900e63 --- /dev/null +++ b/package/lua-lunitx/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LUA_LUNITX + bool "lua-lunitx" + help + Lunitx is a unit testing framework for lua, written in lua. + + https://github.com/dcurrie/lunit diff --git a/package/lua-lunitx/lua-lunitx.hash b/package/lua-lunitx/lua-lunitx.hash new file mode 100644 index 00000000..8bb9c154 --- /dev/null +++ b/package/lua-lunitx/lua-lunitx.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 2299facf4977f9b663e1ad402098139116a87a693c3df66e1f6b89e2cf47646f lunitx-0.8-1.src.rock +sha256 3fcfcd6010d73bc2b22505b6a91779022a82661809a3e4e0a0bdd7b3463def8f lunit/LICENSE diff --git a/package/lua-lunitx/lua-lunitx.mk b/package/lua-lunitx/lua-lunitx.mk new file mode 100644 index 00000000..e12cf072 --- /dev/null +++ b/package/lua-lunitx/lua-lunitx.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# lua-lunitx +# +################################################################################ + +LUA_LUNITX_VERSION = 0.8-1 +LUA_LUNITX_NAME_UPSTREAM = lunitx +LUA_LUNITX_SUBDIR = lunit +LUA_LUNITX_LICENSE = MIT +LUA_LUNITX_LICENSE_FILES = $(LUA_LUNITX_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/package/lua-lunix/0001-remove-link-with-librt.patch b/package/lua-lunix/0001-remove-link-with-librt.patch new file mode 100644 index 00000000..2650e911 --- /dev/null +++ b/package/lua-lunix/0001-remove-link-with-librt.patch @@ -0,0 +1,36 @@ +From aeaff83b9ae42547b8728edac000f3d41d5e44aa Mon Sep 17 00:00:00 2001 +From: Francois Perrad +Date: Sat, 17 Jul 2021 13:21:38 +0200 +Subject: [PATCH] remove link with librt + +librt is not available with musl + +Signed-off-by: Francois Perrad +--- + lunix-rel-20220331/lunix-20220331-1.rockspec | 10 ---------- + 1 file changed, 10 deletions(-) + +diff --git a/lunix-rel-20220331/lunix-20220331-1.rockspec b/lunix-rel-20220331/lunix-20220331-1.rockspec +index 741179d..76cafeb 100644 +--- a/lunix-rel-20220331/lunix-20220331-1.rockspec ++++ b/lunix-rel-20220331/lunix-20220331-1.rockspec +@@ -26,16 +26,6 @@ build = { + }; + }; + platforms = { +- linux = { +- modules = { +- ["unix"] = { +- libraries = { +- -- glibc <= 2.17 needs to link with librt +- "rt"; +- }; +- }; +- }; +- }; + osx = { + modules = { + ["unix"] = { +-- +2.30.2 + diff --git a/package/lua-lunix/Config.in b/package/lua-lunix/Config.in new file mode 100644 index 00000000..ca9325a1 --- /dev/null +++ b/package/lua-lunix/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LUA_LUNIX + bool "lua-lunix" + help + lunix is a bindings library module to common Unix system APIs. + + http://25thandclement.com/~william/projects/lunix.html diff --git a/package/lua-lunix/lua-lunix.hash b/package/lua-lunix/lua-lunix.hash new file mode 100644 index 00000000..911f475b --- /dev/null +++ b/package/lua-lunix/lua-lunix.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 eb13e89e1dfcc82aec3915ed4185f3a2a9205ec3e98a991b13cc39d7f389c427 lunix-20220331-1.src.rock +sha256 9b74be104d59caa45bf3321ebe771f9cc7874209261a93f1cf971ceca44fbe03 lunix-rel-20220331/LICENSE diff --git a/package/lua-lunix/lua-lunix.mk b/package/lua-lunix/lua-lunix.mk new file mode 100644 index 00000000..f3c159cb --- /dev/null +++ b/package/lua-lunix/lua-lunix.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# lua-lunix +# +################################################################################ + +LUA_LUNIX_VERSION_UPSTREAM = 20220331 +LUA_LUNIX_VERSION = $(LUA_LUNIX_VERSION_UPSTREAM)-1 +LUA_LUNIX_NAME_UPSTREAM = lunix +LUA_LUNIX_SUBDIR = lunix-rel-$(LUA_LUNIX_VERSION_UPSTREAM) +LUA_LUNIX_LICENSE = MIT +LUA_LUNIX_LICENSE_FILES = $(LUA_LUNIX_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/package/lua-lyaml/Config.in b/package/lua-lyaml/Config.in new file mode 100644 index 00000000..ef2d3823 --- /dev/null +++ b/package/lua-lyaml/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LUA_LYAML + bool "lua-lyaml" + select BR2_PACKAGE_LIBYAML + help + This is a Lua binding for the fast libYAML C library for + converting between `%YAML 1.1` and Lua tables, with a + flexible Lua language API to load and save YAML documents. + + http://github.com/gvvaughan/lyaml diff --git a/package/lua-lyaml/lua-lyaml.hash b/package/lua-lyaml/lua-lyaml.hash new file mode 100644 index 00000000..a8599bc3 --- /dev/null +++ b/package/lua-lyaml/lua-lyaml.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 c6169f516ff2a8da96d55aa3a087e718edf7bceb2f1cae2def4e65cd2b41ac2d lua-lyaml-6.2.8.tar.gz +sha256 796d267e51d61652c55694d21108e7352e98b1ed489ab7516acc07102157e08d LICENSE diff --git a/package/lua-lyaml/lua-lyaml.mk b/package/lua-lyaml/lua-lyaml.mk new file mode 100644 index 00000000..00a868ec --- /dev/null +++ b/package/lua-lyaml/lua-lyaml.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# lua-lyaml +# +################################################################################ + +LUA_LYAML_VERSION = 6.2.8 +LUA_LYAML_NAME_UPSTREAM = lyaml +LUA_LYAML_SITE = $(call github,gvvaughan,$(LUA_LYAML_NAME_UPSTREAM),v$(LUA_LYAML_VERSION)) +LUA_LYAML_LICENSE = MIT +LUA_LYAML_LICENSE_FILES = LICENSE +LUA_LYAML_DEPENDENCIES = libyaml luainterpreter host-lua + +define LUA_LYAML_BUILD_CMDS + (cd $(@D); \ + $(LUA_RUN) build-aux/luke \ + version="'$(LUA_LYAML_VERSION)'" \ + CC="$(TARGET_CC)" \ + CFLAGS="$(TARGET_CFLAGS)" \ + LUA_INCDIR=$(STAGING_DIR)/usr/include \ + YAML_DIR=$(STAGING_DIR)/usr \ + ) +endef + +define LUA_LYAML_INSTALL_TARGET_CMDS + (cd $(@D); \ + $(LUA_RUN) build-aux/luke install \ + INST_LIBDIR="$(TARGET_DIR)/usr/lib/lua/$(LUAINTERPRETER_ABIVER)" \ + INST_LUADIR="$(TARGET_DIR)/usr/share/lua/$(LUAINTERPRETER_ABIVER)" \ + ) +endef + +$(eval $(generic-package)) diff --git a/package/lua-markdown/Config.in b/package/lua-markdown/Config.in new file mode 100644 index 00000000..c53dc460 --- /dev/null +++ b/package/lua-markdown/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUA_MARKDOWN + bool "lua-markdown" + help + A pure-lua implementation of the Markdown text-to-html + markup system. + + https://github.com/mpeterv/markdown diff --git a/package/lua-markdown/lua-markdown.hash b/package/lua-markdown/lua-markdown.hash new file mode 100644 index 00000000..9f58e4cf --- /dev/null +++ b/package/lua-markdown/lua-markdown.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 bed84231bb48322f8e614b4392181c52c36bc71340f9273e0c3bd72dc922bc07 markdown-0.33-1.src.rock +sha256 c13c5634db49d16c87f164ce0b79fb7e1b313c8b66818ebf1c970747a429b39b markdown/LICENSE diff --git a/package/lua-markdown/lua-markdown.mk b/package/lua-markdown/lua-markdown.mk new file mode 100644 index 00000000..d35f8be8 --- /dev/null +++ b/package/lua-markdown/lua-markdown.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# lua-markdown +# +################################################################################ + +LUA_MARKDOWN_VERSION = 0.33-1 +LUA_MARKDOWN_NAME_UPSTREAM = Markdown +LUA_MARKDOWN_SUBDIR = markdown +LUA_MARKDOWN_LICENSE = MIT +LUA_MARKDOWN_LICENSE_FILES = $(LUA_MARKDOWN_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/package/lua-messagepack/Config.in b/package/lua-messagepack/Config.in new file mode 100644 index 00000000..7ec098f9 --- /dev/null +++ b/package/lua-messagepack/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUA_MESSAGEPACK + bool "lua-messagepack" + help + A pure Lua implementation of the MessagePack serialization + format. + + https://fperrad.frama.io/lua-MessagePack/ diff --git a/package/lua-messagepack/lua-messagepack.hash b/package/lua-messagepack/lua-messagepack.hash new file mode 100644 index 00000000..f61a3513 --- /dev/null +++ b/package/lua-messagepack/lua-messagepack.hash @@ -0,0 +1,4 @@ +# computed by luarocks/buildroot +sha256 86e5aedc94342f1447b3cac26dfacc69f05b0827221cd5e44d3b623087b16f37 lua-messagepack-0.5.4-1.src.rock +sha256 3ed7ac22e50b06e63f91a16ad6457381af7317f1bccd778f104a4513c1cc118b lua-messagepack-lua53-0.5.4-1.src.rock +sha256 1dbe8e7da2d71088d4759da33a42eda89f5be90d1a9c0b823360a270d6628ed8 lua-MessagePack-0.5.4/COPYRIGHT diff --git a/package/lua-messagepack/lua-messagepack.mk b/package/lua-messagepack/lua-messagepack.mk new file mode 100644 index 00000000..7e5ab006 --- /dev/null +++ b/package/lua-messagepack/lua-messagepack.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# lua-messagepack +# +################################################################################ + +LUA_MESSAGEPACK_VERSION_UPSTREAM = 0.5.4 +LUA_MESSAGEPACK_VERSION = $(LUA_MESSAGEPACK_VERSION_UPSTREAM)-1 +ifeq ($(BR2_PACKAGE_LUA_5_3)$(BR2_PACKAGE_LUA_5_4),y) +LUA_MESSAGEPACK_NAME_UPSTREAM = lua-MessagePack-lua53 +else +LUA_MESSAGEPACK_NAME_UPSTREAM = lua-MessagePack +endif +LUA_MESSAGEPACK_SUBDIR = lua-MessagePack-$(LUA_MESSAGEPACK_VERSION_UPSTREAM) +LUA_MESSAGEPACK_LICENSE = MIT +LUA_MESSAGEPACK_LICENSE_FILES = $(LUA_MESSAGEPACK_SUBDIR)/COPYRIGHT + +$(eval $(luarocks-package)) diff --git a/package/lua-mqtt/Config.in b/package/lua-mqtt/Config.in new file mode 100644 index 00000000..b7133190 --- /dev/null +++ b/package/lua-mqtt/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LUA_MQTT + bool "lua-mqtt" + depends on BR2_PACKAGE_LUA_5_3 || BR2_PACKAGE_LUA_5_4 + help + client library for MQTT 3.1.1 & 5. + + https://fperrad.frama.io/lua-mqtt + +comment "lua-mqtt needs a Lua >= 5.3" + depends on !BR2_PACKAGE_LUA_5_3 + depends on !BR2_PACKAGE_LUA_5_4 diff --git a/package/lua-mqtt/lua-mqtt.hash b/package/lua-mqtt/lua-mqtt.hash new file mode 100644 index 00000000..287a583f --- /dev/null +++ b/package/lua-mqtt/lua-mqtt.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 fe2dba2c6d99c0099f5dceeb8063e06348c3fc492e8d2f8f35d49197e8a36985 lua-mqtt-0.3.2-1.src.rock +sha256 3db678c27de7ac8811e5e926b1d67923a07c2abe85a28387e6af96d0f654d0b5 lua-mqtt-0.3.2/COPYRIGHT diff --git a/package/lua-mqtt/lua-mqtt.mk b/package/lua-mqtt/lua-mqtt.mk new file mode 100644 index 00000000..03d28853 --- /dev/null +++ b/package/lua-mqtt/lua-mqtt.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# lua-mqtt +# +################################################################################ + +LUA_MQTT_VERSION = 0.3.2-1 +LUA_MQTT_LICENSE = MIT +LUA_MQTT_LICENSE_FILES = $(LUA_MQTT_SUBDIR)/COPYRIGHT + +$(eval $(luarocks-package)) diff --git a/package/lua-msgpack-native/Config.in b/package/lua-msgpack-native/Config.in new file mode 100644 index 00000000..8af508dd --- /dev/null +++ b/package/lua-msgpack-native/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LUA_MSGPACK_NATIVE + bool "lua-msgpack-native" + depends on BR2_PACKAGE_LUA_5_1 || BR2_PACKAGE_LUAJIT + help + This is a native, C language implementation of msgpack + (http://msgpack.org) library/protocol for Lua language + + https://github.com/kengonakajima/lua-msgpack-native + +comment "lua-msgpack-native needs Lua 5.1 or LuaJIT" + depends on !BR2_PACKAGE_LUA_5_1 + depends on !BR2_PACKAGE_LUAJIT diff --git a/package/lua-msgpack-native/lua-msgpack-native.hash b/package/lua-msgpack-native/lua-msgpack-native.hash new file mode 100644 index 00000000..2a49e9f3 --- /dev/null +++ b/package/lua-msgpack-native/lua-msgpack-native.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 025cf91d509fa3985869d18ef9b8eaeb875ff3c9fcf6467beeed6eab3bb35c93 lua-msgpack-native-41a91b994c70389dc9daa1a15678741d8ec41749.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/lua-msgpack-native/lua-msgpack-native.mk b/package/lua-msgpack-native/lua-msgpack-native.mk new file mode 100644 index 00000000..4a7e672c --- /dev/null +++ b/package/lua-msgpack-native/lua-msgpack-native.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# lua-msgpack-native +# +################################################################################ + +LUA_MSGPACK_NATIVE_VERSION = 41a91b994c70389dc9daa1a15678741d8ec41749 +LUA_MSGPACK_NATIVE_SITE = $(call github,kengonakajima,lua-msgpack-native,$(LUA_MSGPACK_NATIVE_VERSION)) +LUA_MSGPACK_NATIVE_DEPENDENCIES = luainterpreter +LUA_MSGPACK_NATIVE_LICENSE = Apache-2.0 +LUA_MSGPACK_NATIVE_LICENSE_FILES = LICENSE.txt + +# lua-msgpack-native uses the old Lua 5.0 API with luaL_reg, but it is +# no longer provided by LuaJit 2.1, so we have to alias luaL_reg to +# luaL_Reg. +define LUA_MSGPACK_NATIVE_BUILD_CMDS + $(TARGET_CC) $(TARGET_CFLAGS) -DluaL_reg=luaL_Reg -fPIC \ + -shared -o $(@D)/msgpack.so $(@D)/mp.c +endef + +define LUA_MSGPACK_NATIVE_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -D $(@D)/msgpack.so \ + $(TARGET_DIR)/usr/lib/lua/$(LUAINTERPRETER_ABIVER)/msgpack.so +endef + +$(eval $(generic-package)) diff --git a/package/lua-periphery/Config.in b/package/lua-periphery/Config.in new file mode 100644 index 00000000..e40abd71 --- /dev/null +++ b/package/lua-periphery/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUA_PERIPHERY + bool "lua-periphery" + help + A library for GPIO, SPI, I2C, MMIO, and Serial peripheral I/O + interface access in userspace Linux with Lua. + + https://github.com/vsergeev/lua-periphery diff --git a/package/lua-periphery/lua-periphery.hash b/package/lua-periphery/lua-periphery.hash new file mode 100644 index 00000000..d1331a48 --- /dev/null +++ b/package/lua-periphery/lua-periphery.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 ff8a4d08f02356586fadfe47f01859ba28539cc42013836f79a032bf4ccc78b3 lua-periphery-1.1.1-1.src.rock +sha256 7c60847b46f718e9651d1eca2f56bf6be09608cf08d130446a521eb8288c98e1 lua-periphery/LICENSE diff --git a/package/lua-periphery/lua-periphery.mk b/package/lua-periphery/lua-periphery.mk new file mode 100644 index 00000000..af5abe70 --- /dev/null +++ b/package/lua-periphery/lua-periphery.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lua-periphery +# +################################################################################ + +LUA_PERIPHERY_VERSION = 1.1.1-1 +LUA_PERIPHERY_SUBDIR = lua-periphery +LUA_PERIPHERY_LICENSE = MIT +LUA_PERIPHERY_LICENSE_FILES = $(LUA_PERIPHERY_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/package/lua-resty-http/Config.in b/package/lua-resty-http/Config.in new file mode 100644 index 00000000..7f90b51b --- /dev/null +++ b/package/lua-resty-http/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LUA_RESTY_HTTP + bool "lua-resty-http" + help + Lua HTTP client cosocket driver for OpenResty / ngx_lua. + + https://github.com/ledgetech/lua-resty-http diff --git a/package/lua-resty-http/lua-resty-http.hash b/package/lua-resty-http/lua-resty-http.hash new file mode 100644 index 00000000..19547e6c --- /dev/null +++ b/package/lua-resty-http/lua-resty-http.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 df913a055ddc2f029017602732c7a497225f4e0df1bcc6858e13f9f4d9524184 lua-resty-http-0.15-0.src.rock +sha256 407e4b1412d8afa317dc703a1d318866c3de87d78899402125cbd90548c6057d lua-resty-http/LICENSE diff --git a/package/lua-resty-http/lua-resty-http.mk b/package/lua-resty-http/lua-resty-http.mk new file mode 100644 index 00000000..61f33c2b --- /dev/null +++ b/package/lua-resty-http/lua-resty-http.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lua-resty-http +# +################################################################################ + +LUA_RESTY_HTTP_VERSION = 0.15-0 +LUA_RESTY_HTTP_SUBDIR = lua-resty-http +LUA_RESTY_HTTP_LICENSE = BSD-2-Clause +LUA_RESTY_HTTP_LICENSE_FILES = $(LUA_RESTY_HTTP_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/package/lua-rotas/Config.in b/package/lua-rotas/Config.in new file mode 100644 index 00000000..565efce9 --- /dev/null +++ b/package/lua-rotas/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LUA_ROTAS + bool "lua-rotas" + help + a web server router. + + https://fperrad.frama.io/lua-Rotas diff --git a/package/lua-rotas/lua-rotas.hash b/package/lua-rotas/lua-rotas.hash new file mode 100644 index 00000000..eccff442 --- /dev/null +++ b/package/lua-rotas/lua-rotas.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 90ed9305b68f49f2293a3a547b7ec7c290be5bcc1afbae87e2e860eb3b04f18b lua-rotas-0.3.1-1.src.rock +sha256 1112307622ef36ed8ee3e8ddb15ed294e699a9db45f6251d89343534388ec3dd lua-Rotas-0.3.1/COPYRIGHT diff --git a/package/lua-rotas/lua-rotas.mk b/package/lua-rotas/lua-rotas.mk new file mode 100644 index 00000000..1f99dbaf --- /dev/null +++ b/package/lua-rotas/lua-rotas.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lua-rotas +# +################################################################################ + +LUA_ROTAS_VERSION = 0.3.1-1 +LUA_ROTAS_NAME_UPSTREAM = lua-Rotas +LUA_ROTAS_LICENSE = MIT +LUA_ROTAS_LICENSE_FILES = $(LUA_ROTAS_SUBDIR)/COPYRIGHT + +$(eval $(luarocks-package)) diff --git a/package/lua-sailor/Config.in b/package/lua-sailor/Config.in new file mode 100644 index 00000000..c973c876 --- /dev/null +++ b/package/lua-sailor/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LUA_SAILOR + bool "lua-sailor" + select BR2_PACKAGE_CGILUA # runtime + select BR2_PACKAGE_LBASE64 # runtime + select BR2_PACKAGE_LUA_DATAFILE # runtime + select BR2_PACKAGE_LUA_VALUA # runtime + select BR2_PACKAGE_LUAFILESYSTEM # runtime + select BR2_PACKAGE_WSAPI_XAVANTE # runtime + select BR2_PACKAGE_XAVANTE # runtime + help + Sailor is a web framework written in Lua that follows the MVC + design pattern. + + http://sailorproject.org/ diff --git a/package/lua-sailor/lua-sailor.hash b/package/lua-sailor/lua-sailor.hash new file mode 100644 index 00000000..36aa8897 --- /dev/null +++ b/package/lua-sailor/lua-sailor.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 4f7f43a7cf6c62712a521ebaf5f53aaf230039c7fb06480ae168c3aa036120bf sailor-0.5-4.src.rock +sha256 3a19bc44e1a653b39bcb1b91cc8058ac6b1cd1caf7e6cef93517fd559b189065 sailor/LICENSE diff --git a/package/lua-sailor/lua-sailor.mk b/package/lua-sailor/lua-sailor.mk new file mode 100644 index 00000000..f88e0359 --- /dev/null +++ b/package/lua-sailor/lua-sailor.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# lua-sailor +# +################################################################################ + +LUA_SAILOR_VERSION = 0.5-4 +LUA_SAILOR_NAME_UPSTREAM = Sailor +LUA_SAILOR_SUBDIR = sailor +LUA_SAILOR_LICENSE = MIT +LUA_SAILOR_LICENSE_FILES = $(LUA_SAILOR_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/package/lua-sdl2/0001-Do-not-reference-host-directory-for-headers.patch b/package/lua-sdl2/0001-Do-not-reference-host-directory-for-headers.patch new file mode 100644 index 00000000..f4b06e0b --- /dev/null +++ b/package/lua-sdl2/0001-Do-not-reference-host-directory-for-headers.patch @@ -0,0 +1,29 @@ +From 07309a49ad6c3e18c8c84fe54f1fdb9e103c4cc5 Mon Sep 17 00:00:00 2001 +From: Francois Perrad +Date: Sun, 22 Oct 2017 13:00:01 +0200 +Subject: [PATCH] Do not reference host directory for headers + +Signed-off-by: Francois Perrad +--- + cmake/FindSDL2.cmake | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/cmake/FindSDL2.cmake b/cmake/FindSDL2.cmake +index 5cf4115..5e17919 100644 +--- a/cmake/FindSDL2.cmake ++++ b/cmake/FindSDL2.cmake +@@ -73,11 +73,6 @@ find_path(SDL2_INCLUDE_DIR SDL.h + PATH_SUFFIXES include/SDL2 include + ) + +-# On FreeBSD SDL depends on libiconv and SDL_stdinc.h includes iconv.h, which is +-# located in ${LOCALBASE}/include. Append {LOCALBASE}/include to +-# the SDL_INCLUDE_DIR, thus allow to build SDL apps out of box. +-list(APPEND SDL2_INCLUDE_DIR /usr/local/include) +- + find_library(SDL_LIBRARY_TEMP + NAMES SDL2 SDL2-2.0 + HINTS +-- +2.13.6 + diff --git a/package/lua-sdl2/0002-CMakeLists-do-not-require-C.patch b/package/lua-sdl2/0002-CMakeLists-do-not-require-C.patch new file mode 100644 index 00000000..eb03ca58 --- /dev/null +++ b/package/lua-sdl2/0002-CMakeLists-do-not-require-C.patch @@ -0,0 +1,58 @@ +From 5732174debfe027f7620af55c283060201f0ad03 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 2 Nov 2017 22:54:51 +0100 +Subject: [PATCH] CMakeLists: do not require C++ + +The project doesn't use C++, so don't let CMake check for a C++ +compiler by explicitly specifying that this is a C-only project. + +Submitted-upstream: https://github.com/Tangent128/luasdl2/pull/69 +Signed-off-by: Thomas Petazzoni +--- + common/CMakeLists.txt | 2 +- + examples/CMakeLists.txt | 2 +- + tutorials/CMakeLists.txt | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt +index 9e19709..8cfb748 100644 +--- a/common/CMakeLists.txt ++++ b/common/CMakeLists.txt +@@ -15,7 +15,7 @@ + # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +-project(common) ++project(common C) + + set( + SOURCES +diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt +index 572b3b7..4e3af4d 100644 +--- a/examples/CMakeLists.txt ++++ b/examples/CMakeLists.txt +@@ -16,7 +16,7 @@ + # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + # + +-project(examples) ++project(examples C) + + # Option to enable / disable examples installation + option(WITH_DOCS "Installation of documentation and examples" On) +diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt +index adefbc9..6ec069e 100644 +--- a/tutorials/CMakeLists.txt ++++ b/tutorials/CMakeLists.txt +@@ -16,7 +16,7 @@ + # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + # + +-project(tutorials) ++project(tutorials C) + + # Option to enable / disable examples installation + option(WITH_DOCS "Installation of tutorials" On) +-- +2.13.6 + diff --git a/package/lua-sdl2/Config.in b/package/lua-sdl2/Config.in new file mode 100644 index 00000000..d0c1b91e --- /dev/null +++ b/package/lua-sdl2/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LUA_SDL2 + bool "lua-sdl2" + depends on !BR2_STATIC_LIBS + depends on !BR2_PACKAGE_LUA_5_4 + select BR2_PACKAGE_SDL2 + help + Lua-SDL2 is a pure C binding of SDL2 to Lua 5.1, Lua 5.2, + Lua 5.3, and LuaJIT. + + https://github.com/Tangent128/luasdl2 + +comment "lua-sdl2 needs a toolchain w/ dynamic library, Lua <= 5.3" + depends on BR2_STATIC_LIBS || BR2_PACKAGE_LUA_5_4 diff --git a/package/lua-sdl2/lua-sdl2.hash b/package/lua-sdl2/lua-sdl2.hash new file mode 100644 index 00000000..e3680a92 --- /dev/null +++ b/package/lua-sdl2/lua-sdl2.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 cee7875106062fbc00cf8acb3b2738e336e2327df73ede011968cb060c094bfb lua-sdl2-2.0.5-6.0.tar.gz +sha256 4f56a5b6943a8ff9611a39e7d4d88dba9ad314dcdf56c62a1425798a6e624494 LICENSE diff --git a/package/lua-sdl2/lua-sdl2.mk b/package/lua-sdl2/lua-sdl2.mk new file mode 100644 index 00000000..43fa2668 --- /dev/null +++ b/package/lua-sdl2/lua-sdl2.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# lua-sdl2 +# +################################################################################ + +LUA_SDL2_VERSION = 2.0.5-6.0 +LUA_SDL2_SITE = $(call github,Tangent128,luasdl2,v$(LUA_SDL2_VERSION)) +LUA_SDL2_LICENSE = ISC +LUA_SDL2_LICENSE_FILES = LICENSE +LUA_SDL2_DEPENDENCIES = luainterpreter sdl2 + +ifeq ($(BR2_PACKAGE_LUAJIT),y) +LUA_SDL2_LUAVER = JIT +else ifeq ($(BR2_PACKAGE_LUA_5_3),y) +LUA_SDL2_LUAVER = 53 +else +LUA_SDL2_LUAVER = 51 +endif + +LUA_SDL2_CONF_OPTS += -DWITH_LUAVER=$(LUA_SDL2_LUAVER) -DLUA_INCLUDE_DIR=$(STAGING_DIR)/usr/include + +ifeq ($(BR2_PACKAGE_SDL2_IMAGE),y) +LUA_SDL2_DEPENDENCIES += sdl2_image +else +LUA_SDL2_CONF_OPTS += -DWITH_IMAGE=Off +endif + +ifeq ($(BR2_PACKAGE_SDL2_MIXER),y) +LUA_SDL2_DEPENDENCIES += sdl2_mixer +else +LUA_SDL2_CONF_OPTS += -DWITH_MIXER=Off +endif + +ifeq ($(BR2_PACKAGE_SDL2_NET),y) +LUA_SDL2_DEPENDENCIES += sdl2_net +else +LUA_SDL2_CONF_OPTS += -DWITH_NET=Off +endif + +ifeq ($(BR2_PACKAGE_SDL2_TTF),y) +LUA_SDL2_DEPENDENCIES += sdl2_ttf +else +LUA_SDL2_CONF_OPTS += -DWITH_TTF=Off +endif + +$(eval $(cmake-package)) diff --git a/package/lua-silva/Config.in b/package/lua-silva/Config.in new file mode 100644 index 00000000..1ddc3fad --- /dev/null +++ b/package/lua-silva/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LUA_SILVA + bool "lua-silva" + help + your string matcher expert. + + https://fperrad.frama.io/lua-Silva diff --git a/package/lua-silva/lua-silva.hash b/package/lua-silva/lua-silva.hash new file mode 100644 index 00000000..aa63d6ef --- /dev/null +++ b/package/lua-silva/lua-silva.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 f06ceb2bfbd73b192459455fb8983c4a4ad6f1b895fe5513651a3308865c389c lua-silva-0.2.1-1.src.rock +sha256 e0c12da9671784c2f51e7db81bf98014365da94bfde81de3e88f2addd683c4be lua-Silva-0.2.1/COPYRIGHT diff --git a/package/lua-silva/lua-silva.mk b/package/lua-silva/lua-silva.mk new file mode 100644 index 00000000..4cbd53d4 --- /dev/null +++ b/package/lua-silva/lua-silva.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lua-silva +# +################################################################################ + +LUA_SILVA_VERSION = 0.2.1-1 +LUA_SILVA_NAME_UPSTREAM = lua-Silva +LUA_SILVA_LICENSE = MIT +LUA_SILVA_LICENSE_FILES = $(LUA_SILVA_SUBDIR)/COPYRIGHT + +$(eval $(luarocks-package)) diff --git a/package/lua-std-debug/Config.in b/package/lua-std-debug/Config.in new file mode 100644 index 00000000..948f2427 --- /dev/null +++ b/package/lua-std-debug/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUA_STD_DEBUG + bool "lua-std-debug" + help + Manage an overall debug state, and associated hint + substates. + + http://lua-stdlib.github.io/_debug diff --git a/package/lua-std-debug/lua-std-debug.hash b/package/lua-std-debug/lua-std-debug.hash new file mode 100644 index 00000000..8e4bc69f --- /dev/null +++ b/package/lua-std-debug/lua-std-debug.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 7f6b84283d4b78dafee17e7765dd5f1f8e75c3314169977f4dda0e7873616ce2 std._debug-1.0.1-1.src.rock +sha256 034abdbbe9a13899c813509776d1e04af81bc58c2982b704c8b3663549504a31 _debug-1.0.1/LICENSE.md diff --git a/package/lua-std-debug/lua-std-debug.mk b/package/lua-std-debug/lua-std-debug.mk new file mode 100644 index 00000000..e044d6cb --- /dev/null +++ b/package/lua-std-debug/lua-std-debug.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# lua-std-debug +# +################################################################################ + +LUA_STD_DEBUG_VERSION_UPSTREAM = 1.0.1 +LUA_STD_DEBUG_VERSION = $(LUA_STD_DEBUG_VERSION_UPSTREAM)-1 +LUA_STD_DEBUG_NAME_UPSTREAM = std._debug +LUA_STD_DEBUG_SUBDIR = _debug-$(LUA_STD_DEBUG_VERSION_UPSTREAM) +LUA_STD_DEBUG_ROCKSPEC = $(LUA_STD_DEBUG_NAME_UPSTREAM)-$(LUA_STD_DEBUG_VERSION).rockspec +LUA_STD_DEBUG_SOURCE = $(LUA_STD_DEBUG_NAME_UPSTREAM)-$(LUA_STD_DEBUG_VERSION).src.rock +LUA_STD_DEBUG_LICENSE = MIT +LUA_STD_DEBUG_LICENSE_FILES = $(LUA_STD_DEBUG_SUBDIR)/LICENSE.md + +$(eval $(luarocks-package)) diff --git a/package/lua-std-normalize/Config.in b/package/lua-std-normalize/Config.in new file mode 100644 index 00000000..35d0a113 --- /dev/null +++ b/package/lua-std-normalize/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LUA_STD_NORMALIZE + bool "lua-std-normalize" + select BR2_PACKAGE_LUA_STD_DEBUG # runtime + help + This module can inject deterministic versions of core Lua + functions that do not behave identically across all + supported Lua implementations into your module's lexical + environment. Each function is as thin and fast a version as + is possible in each Lua implementation, evaluating to the + Lua C implementation with no overhead when semantics allow. + + https://lua-stdlib.github.io/normalize diff --git a/package/lua-std-normalize/lua-std-normalize.hash b/package/lua-std-normalize/lua-std-normalize.hash new file mode 100644 index 00000000..41a91f1e --- /dev/null +++ b/package/lua-std-normalize/lua-std-normalize.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 3a040b6ca43297367c527e12c1aab37acab86289f9415ffb130544c48b17f802 std.normalize-2.0.3-1.src.rock +sha256 9c9094f0cea86c2c62b893e59a78d5eaed69df0d7da24e122ef9753baeef0f04 normalize-2.0.3/LICENSE.md diff --git a/package/lua-std-normalize/lua-std-normalize.mk b/package/lua-std-normalize/lua-std-normalize.mk new file mode 100644 index 00000000..0eb215bf --- /dev/null +++ b/package/lua-std-normalize/lua-std-normalize.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# lua-std-normalize +# +################################################################################ + +LUA_STD_NORMALIZE_VERSION_UPSTREAM = 2.0.3 +LUA_STD_NORMALIZE_VERSION = $(LUA_STD_NORMALIZE_VERSION_UPSTREAM)-1 +LUA_STD_NORMALIZE_NAME_UPSTREAM = std.normalize +LUA_STD_NORMALIZE_SUBDIR = normalize-$(LUA_STD_NORMALIZE_VERSION_UPSTREAM) +LUA_STD_NORMALIZE_LICENSE = MIT +LUA_STD_NORMALIZE_LICENSE_FILES = $(LUA_STD_NORMALIZE_SUBDIR)/LICENSE.md + +$(eval $(luarocks-package)) diff --git a/package/lua-stdlib/Config.in b/package/lua-stdlib/Config.in new file mode 100644 index 00000000..1843826c --- /dev/null +++ b/package/lua-stdlib/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LUA_STDLIB + bool "lua-stdlib" + help + lua-stdlib is a library of modules for common programming + tasks, including list, table and functional operations, + objects, pickling, pretty-printing and command-line option + parsing. + + https://github.com/lua-stdlib/lua-stdlib/ diff --git a/package/lua-stdlib/lua-stdlib.hash b/package/lua-stdlib/lua-stdlib.hash new file mode 100644 index 00000000..c6c7c656 --- /dev/null +++ b/package/lua-stdlib/lua-stdlib.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 67eadaccbb2b6037ea70129f9616da49eaeeaf1477652a8e2cc77740286531cf stdlib-41.2.2-1.src.rock +sha256 d3177e0cd97e6ef7c459aa2c6a85f53d9b4ff091f7f296d4ed8bfaf713b6fea2 lua-stdlib-release-v41.2.2/COPYING diff --git a/package/lua-stdlib/lua-stdlib.mk b/package/lua-stdlib/lua-stdlib.mk new file mode 100644 index 00000000..bf90116e --- /dev/null +++ b/package/lua-stdlib/lua-stdlib.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# lua-stdlib +# +################################################################################ + +LUA_STDLIB_VERSION_UPSTREAM = 41.2.2 +LUA_STDLIB_VERSION = $(LUA_STDLIB_VERSION_UPSTREAM)-1 +LUA_STDLIB_NAME_UPSTREAM = stdlib +LUA_STDLIB_SUBDIR = lua-stdlib-release-v$(LUA_STDLIB_VERSION_UPSTREAM) +LUA_STDLIB_LICENSE = MIT +LUA_STDLIB_LICENSE_FILES = $(LUA_STDLIB_SUBDIR)/COPYING + +$(eval $(luarocks-package)) diff --git a/package/lua-testmore/Config.in b/package/lua-testmore/Config.in new file mode 100644 index 00000000..3cbed384 --- /dev/null +++ b/package/lua-testmore/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LUA_TESTMORE + bool "lua-testmore" + help + an Unit Testing Framework. + + https://fperrad.frama.io/lua-TestMore/ diff --git a/package/lua-testmore/lua-testmore.hash b/package/lua-testmore/lua-testmore.hash new file mode 100644 index 00000000..634b95c6 --- /dev/null +++ b/package/lua-testmore/lua-testmore.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 acef148e10e312f262d9390c3cdbb9fdd3d5541f0dbeb4c35b8c37fbf95cb52f lua-testmore-0.3.7-1.src.rock +sha256 7cb577fd111373b813a9ec47e43c30cb318b771290e0b60e780b6a710116888d lua-TestMore-0.3.7/COPYRIGHT diff --git a/package/lua-testmore/lua-testmore.mk b/package/lua-testmore/lua-testmore.mk new file mode 100644 index 00000000..aaf2c130 --- /dev/null +++ b/package/lua-testmore/lua-testmore.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lua-testmore +# +################################################################################ + +LUA_TESTMORE_VERSION = 0.3.7-1 +LUA_TESTMORE_NAME_UPSTREAM = lua-TestMore +LUA_TESTMORE_LICENSE = MIT +LUA_TESTMORE_LICENSE_FILES = $(LUA_TESTMORE_SUBDIR)/COPYRIGHT + +$(eval $(luarocks-package)) diff --git a/package/lua-ubjson/Config.in b/package/lua-ubjson/Config.in new file mode 100644 index 00000000..88ed2c7c --- /dev/null +++ b/package/lua-ubjson/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUA_UBJSON + bool "lua-ubjson" + select BR2_PACKAGE_LUA_COMPAT53 if BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1 # runtime + help + a pure Lua implementation of UBJSON. + + https://fperrad.frama.io/lua-ubjson/ diff --git a/package/lua-ubjson/lua-ubjson.hash b/package/lua-ubjson/lua-ubjson.hash new file mode 100644 index 00000000..6db046ec --- /dev/null +++ b/package/lua-ubjson/lua-ubjson.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 6605a6a0ca5f6cb8ec1aac14840adcdc6b359f5d8666fb3d224510e8d73c43b9 lua-ubjson-0.1.0-1.src.rock +sha256 c85f6b3d47bcde28fd15bc7e361cdc5ec6b580819f4a891e29cf89513abbadd2 lua-ubjson-0.1.0/COPYRIGHT diff --git a/package/lua-ubjson/lua-ubjson.mk b/package/lua-ubjson/lua-ubjson.mk new file mode 100644 index 00000000..93e66319 --- /dev/null +++ b/package/lua-ubjson/lua-ubjson.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# lua-ubjson +# +################################################################################ + +LUA_UBJSON_VERSION = 0.1.0-1 +LUA_UBJSON_LICENSE = MIT +LUA_UBJSON_LICENSE_FILES = $(LUA_UBJSON_SUBDIR)/COPYRIGHT + +$(eval $(luarocks-package)) diff --git a/package/lua-utf8/Config.in b/package/lua-utf8/Config.in new file mode 100644 index 00000000..5815936d --- /dev/null +++ b/package/lua-utf8/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUA_UTF8 + bool "lua-utf8" + help + This module adds UTF-8 support to Lua. + It's compatible with Lua "string" module. + + https://github.com/starwing/luautf8 diff --git a/package/lua-utf8/lua-utf8.hash b/package/lua-utf8/lua-utf8.hash new file mode 100644 index 00000000..b4d455ce --- /dev/null +++ b/package/lua-utf8/lua-utf8.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 68bd8e3c3e20f98fceb9e20d5a7a50168202c22eb45b87eff3247a0608f465ae luautf8-0.1.5-2.src.rock +sha256 74506285923bcc3e58aaca1b774db26461021783d02b2dc26bafcaa02ef7a00b luautf8-0.1.5/LICENSE diff --git a/package/lua-utf8/lua-utf8.mk b/package/lua-utf8/lua-utf8.mk new file mode 100644 index 00000000..33c34a4e --- /dev/null +++ b/package/lua-utf8/lua-utf8.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lua-utf8 +# +################################################################################ + +LUA_UTF8_VERSION = 0.1.5-2 +LUA_UTF8_NAME_UPSTREAM = luautf8 +LUA_UTF8_LICENSE = MIT +LUA_UTF8_LICENSE_FILES = $(LUA_UTF8_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/package/lua-valua/Config.in b/package/lua-valua/Config.in new file mode 100644 index 00000000..96b37965 --- /dev/null +++ b/package/lua-valua/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LUA_VALUA + bool "lua-valua" + help + This module provides tools for validating values, very useful + in forms, but also usable elsewhere. It works in appended + chains. Create a new validation object and start chaining + your test functions. + + https://github.com/sailorproject/valua diff --git a/package/lua-valua/lua-valua.hash b/package/lua-valua/lua-valua.hash new file mode 100644 index 00000000..d4b1d475 --- /dev/null +++ b/package/lua-valua/lua-valua.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 bff39692fd2ac3590fd814aa1b1ca33e5d5971092955309aa8424b02b88ce1a3 valua-0.3-1.src.rock +sha256 3444c2e739c88e41e327c6cd15e4a50fea8988570642bad6e6a43d50a7f7961f valua/LICENSE diff --git a/package/lua-valua/lua-valua.mk b/package/lua-valua/lua-valua.mk new file mode 100644 index 00000000..8cb0bf52 --- /dev/null +++ b/package/lua-valua/lua-valua.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# lua-valua +# +################################################################################ + +LUA_VALUA_VERSION = 0.3-1 +LUA_VALUA_NAME_UPSTREAM = valua +LUA_VALUA_SUBDIR = valua +LUA_VALUA_LICENSE = MIT +LUA_VALUA_LICENSE_FILES = $(LUA_VALUA_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/package/lua-zlib/Config.in b/package/lua-zlib/Config.in new file mode 100644 index 00000000..ffdb4a8e --- /dev/null +++ b/package/lua-zlib/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LUA_ZLIB + bool "lua-zlib" + select BR2_PACKAGE_ZLIB + help + Simple streaming interface to zlib for Lua. + Consists of two functions: inflate and deflate. + Both functions return "stream functions" (takes a buffer + of input and returns a buffer of output). + + https://github.com/brimworks/lua-zlib diff --git a/package/lua-zlib/lua-zlib.hash b/package/lua-zlib/lua-zlib.hash new file mode 100644 index 00000000..cef29efb --- /dev/null +++ b/package/lua-zlib/lua-zlib.hash @@ -0,0 +1,2 @@ +# computed by luarocks/buildroot +sha256 42436ba2b78c9a2d515d6da59ceb12cdea7f84c9ce3c859d91addb42badd4061 lua-zlib-1.2-0.src.rock diff --git a/package/lua-zlib/lua-zlib.mk b/package/lua-zlib/lua-zlib.mk new file mode 100644 index 00000000..23e2a8ae --- /dev/null +++ b/package/lua-zlib/lua-zlib.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lua-zlib +# +################################################################################ + +LUA_ZLIB_VERSION = 1.2-0 +LUA_ZLIB_SUBDIR = lua-zlib +LUA_ZLIB_LICENSE = MIT +LUA_ZLIB_DEPENDENCIES = zlib + +$(eval $(luarocks-package)) diff --git a/package/lua/5.1.5/0001-root-path.patch b/package/lua/5.1.5/0001-root-path.patch new file mode 100644 index 00000000..41de4ba2 --- /dev/null +++ b/package/lua/5.1.5/0001-root-path.patch @@ -0,0 +1,31 @@ +Adjust installation location to /usr. + +Upstream: N/A specific for Buildroot build +Signed-off-by: Francois Perrad + +Index: b/etc/lua.pc +=================================================================== +--- a/etc/lua.pc ++++ b/etc/lua.pc +@@ -8,7 +8,7 @@ + R= 5.1.5 + + # grep '^INSTALL_.*=' ../Makefile | sed 's/INSTALL_TOP/prefix/' +-prefix= /usr/local ++prefix= /usr + INSTALL_BIN= ${prefix}/bin + INSTALL_INC= ${prefix}/include + INSTALL_LIB= ${prefix}/lib +Index: b/src/luaconf.h +=================================================================== +--- a/src/luaconf.h ++++ b/src/luaconf.h +@@ -94,7 +94,7 @@ + ".\\?.dll;" LUA_CDIR"?.dll;" LUA_CDIR"loadall.dll" + + #else +-#define LUA_ROOT "/usr/local/" ++#define LUA_ROOT "/usr/" + #define LUA_LDIR LUA_ROOT "share/lua/5.1/" + #define LUA_CDIR LUA_ROOT "lib/lua/5.1/" + #define LUA_PATH_DEFAULT \ diff --git a/package/lua/5.1.5/0002-shared-libs-for-lua.patch b/package/lua/5.1.5/0002-shared-libs-for-lua.patch new file mode 100644 index 00000000..5ae0756c --- /dev/null +++ b/package/lua/5.1.5/0002-shared-libs-for-lua.patch @@ -0,0 +1,79 @@ +Add the compilation of a shared library. +Compile the lua binary with the shared library. +And install the shared library. +The variable BUILDMODE allows to switch between static and dynamic mode. + +Upstream: N/A specific for Buildroot build +Signed-off-by: Francois Perrad + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -44,6 +44,7 @@ + TO_BIN= lua luac + TO_INC= lua.h luaconf.h lualib.h lauxlib.h ../etc/lua.hpp + TO_LIB= liblua.a ++TO_SOLIB = liblua.so.$(R) + TO_MAN= lua.1 luac.1 + + # Lua version and release. +@@ -61,6 +62,8 @@ + install: dummy + cd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_MAN) $(INSTALL_LMOD) $(INSTALL_CMOD) + cd src && $(INSTALL_EXEC) $(TO_BIN) $(INSTALL_BIN) ++ test -f src/$(TO_SOLIB) && cd src && $(INSTALL_EXEC) $(TO_SOLIB) $(INSTALL_LIB) || : ++ test -f src/$(TO_SOLIB) && ln -sf $(TO_SOLIB) $(INSTALL_LIB)/liblua.so || : + cd src && $(INSTALL_DATA) $(TO_INC) $(INSTALL_INC) + cd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB) + cd doc && $(INSTALL_DATA) $(TO_MAN) $(INSTALL_MAN) +Index: b/src/Makefile +=================================================================== +--- a/src/Makefile ++++ b/src/Makefile +@@ -23,6 +23,7 @@ + PLATS= aix ansi bsd freebsd generic linux macosx mingw posix solaris + + LUA_A= liblua.a ++LUA_SO= liblua.so + CORE_O= lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o \ + lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o \ + lundump.o lvm.o lzio.o +@@ -36,8 +37,13 @@ + LUAC_O= luac.o print.o + + ALL_O= $(CORE_O) $(LIB_O) $(LUA_O) $(LUAC_O) ++ifneq (dynamic,$(BUILDMODE)) + ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) ++else ++ALL_T= $(LUA_A) $(LUA_SO) $(LUA_T) $(LUAC_T) ++endif + ALL_A= $(LUA_A) ++ALL_SO= $(LUA_SO) + + default: $(PLAT) + +@@ -47,12 +53,23 @@ + + a: $(ALL_A) + ++so: $(ALL_SO) ++ + $(LUA_A): $(CORE_O) $(LIB_O) + $(AR) $@ $(CORE_O) $(LIB_O) # DLL needs all object files + $(RANLIB) $@ + ++$(LUA_SO): $(CORE_O) $(LIB_O) ++ $(CC) -o $@.$(PKG_VERSION) -shared -Wl,-soname="$@.$(PKG_VERSION)" $? ++ ln -fs $@.$(PKG_VERSION) $@ ++ ++ifneq (dynamic,$(BUILDMODE)) + $(LUA_T): $(LUA_O) $(LUA_A) + $(CC) -o $@ $(MYLDFLAGS) $(LUA_O) $(LUA_A) $(LIBS) ++else ++$(LUA_T): $(LUA_O) $(LUA_SO) ++ $(CC) -o $@ -L. $(MYLDFLAGS) $(LUA_O) -llua $(LIBS) ++endif + + $(LUAC_T): $(LUAC_O) $(LUA_A) + $(CC) -o $@ $(MYLDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS) diff --git a/package/lua/5.1.5/0011-linenoise.patch b/package/lua/5.1.5/0011-linenoise.patch new file mode 100644 index 00000000..c0ab200b --- /dev/null +++ b/package/lua/5.1.5/0011-linenoise.patch @@ -0,0 +1,23 @@ +Add support of linenoise (replace readline) + +Upstream: http://lua-users.org/lists/lua-l/2010-03/msg00879.html +Signed-off-by: Francois Perrad + +Index: b/src/luaconf.h +=================================================================== +--- a/src/luaconf.h ++++ b/src/luaconf.h +@@ -279,6 +279,13 @@ + if (lua_strlen(L,idx) > 0) /* non-empty line? */ \ + add_history(lua_tostring(L, idx)); /* add it to history */ + #define lua_freeline(L,b) ((void)L, free(b)) ++#elif defined(LUA_USE_LINENOISE) ++#include ++#define lua_readline(L,b,p) ((void)L, ((b)=linenoise(p)) != NULL) ++#define lua_saveline(L,idx) \ ++ if (lua_strlen(L,idx) > 0) /* non-empty line? */ \ ++ linenoiseHistoryAdd(lua_tostring(L, idx)); /* add it to history */ ++#define lua_freeline(L,b) ((void)L, free(b)) + #else + #define lua_readline(L,b,p) \ + ((void)L, fputs(p, stdout), fflush(stdout), /* show prompt */ \ diff --git a/package/lua/5.1.5/0012-fix-reader-at-eoz.patch b/package/lua/5.1.5/0012-fix-reader-at-eoz.patch new file mode 100644 index 00000000..fd92147e --- /dev/null +++ b/package/lua/5.1.5/0012-fix-reader-at-eoz.patch @@ -0,0 +1,45 @@ +When loading a file, Lua may call the reader function again after it returned end of input. + +Upstream: https://www.lua.org/bugs.html#5.1.5-2 +Signed-off-by: Francois Perrad + +Index: b/src/lzio.c +=================================================================== +--- a/src/lzio.c ++++ b/src/lzio.c +@@ -22,10 +22,14 @@ + size_t size; + lua_State *L = z->L; + const char *buff; ++ if (z->eoz) return EOZ; + lua_unlock(L); + buff = z->reader(L, z->data, &size); + lua_lock(L); +- if (buff == NULL || size == 0) return EOZ; ++ if (buff == NULL || size == 0) { ++ z->eoz = 1; /* avoid calling reader function next time */ ++ return EOZ; ++ } + z->n = size - 1; + z->p = buff; + return char2int(*(z->p++)); +@@ -51,6 +55,7 @@ + z->data = data; + z->n = 0; + z->p = NULL; ++ z->eoz = 0; + } + + +Index: b/src/lzio.h +=================================================================== +--- a/src/lzio.h ++++ b/src/lzio.h +@@ -59,6 +59,7 @@ + lua_Reader reader; + void* data; /* additional data */ + lua_State *L; /* Lua state (for reader) */ ++ int eoz; /* true if reader has no more data */ + }; + + diff --git a/package/lua/5.1.5/lua.hash b/package/lua/5.1.5/lua.hash new file mode 100644 index 00000000..22ff8b7d --- /dev/null +++ b/package/lua/5.1.5/lua.hash @@ -0,0 +1,6 @@ +# Hashes from: http://www.lua.org/ftp/ +md5 2e115fe26e435e33b0d5c022e4490567 lua-5.1.5.tar.gz +sha1 b3882111ad02ecc6b972f8c1241647905cb2e3fc lua-5.1.5.tar.gz + +# Locally computed +sha256 ee5e3e82af1e1b543c4f216e399d7c8cfee797711913f349e385101c4ae60a79 COPYRIGHT diff --git a/package/lua/5.3.6/0001-root-path.patch b/package/lua/5.3.6/0001-root-path.patch new file mode 100644 index 00000000..b41df3ec --- /dev/null +++ b/package/lua/5.3.6/0001-root-path.patch @@ -0,0 +1,18 @@ +Adjust installation location to /usr. + +Upstream: N/A specific for Buildroot build +Signed-off-by: Francois Perrad + +Index: b/src/luaconf.h +=================================================================== +--- a/src/luaconf.h ++++ b/src/luaconf.h +@@ -200,7 +200,7 @@ + + #else /* }{ */ + +-#define LUA_ROOT "/usr/local/" ++#define LUA_ROOT "/usr/" + #define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR "/" + #define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR "/" + #define LUA_PATH_DEFAULT \ diff --git a/package/lua/5.3.6/0002-shared-libs-for-lua.patch b/package/lua/5.3.6/0002-shared-libs-for-lua.patch new file mode 100644 index 00000000..08210074 --- /dev/null +++ b/package/lua/5.3.6/0002-shared-libs-for-lua.patch @@ -0,0 +1,79 @@ +Add the compilation of a shared library. +Compile the lua binary with the shared library. +And install the shared library. +The variable BUILDMODE allows to switch between static and dynamic mode. + +Upstream: N/A specific for Buildroot build +Signed-off-by: Francois Perrad + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -42,6 +42,7 @@ + TO_BIN= lua luac + TO_INC= lua.h luaconf.h lualib.h lauxlib.h lua.hpp + TO_LIB= liblua.a ++TO_SOLIB = liblua.so.$(R) + TO_MAN= lua.1 luac.1 + + # Lua version and release. +@@ -60,6 +61,8 @@ + install: dummy + cd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_MAN) $(INSTALL_LMOD) $(INSTALL_CMOD) + cd src && $(INSTALL_EXEC) $(TO_BIN) $(INSTALL_BIN) ++ test -f src/$(TO_SOLIB) && cd src && $(INSTALL_EXEC) $(TO_SOLIB) $(INSTALL_LIB) || : ++ test -f src/$(TO_SOLIB) && ln -sf $(TO_SOLIB) $(INSTALL_LIB)/liblua.so || : + cd src && $(INSTALL_DATA) $(TO_INC) $(INSTALL_INC) + cd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB) + cd doc && $(INSTALL_DATA) $(TO_MAN) $(INSTALL_MAN) +Index: b/src/Makefile +=================================================================== +--- a/src/Makefile ++++ b/src/Makefile +@@ -29,6 +29,7 @@ + PLATS= aix bsd c89 freebsd generic linux macosx mingw posix solaris + + LUA_A= liblua.a ++LUA_SO= liblua.so + CORE_O= lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o \ + lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o \ + ltm.o lundump.o lvm.o lzio.o +@@ -43,8 +44,13 @@ + LUAC_O= luac.o + + ALL_O= $(BASE_O) $(LUA_O) $(LUAC_O) ++ifneq (dynamic,$(BUILDMODE)) + ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) ++else ++ALL_T= $(LUA_A) $(LUA_SO) $(LUA_T) $(LUAC_T) ++endif + ALL_A= $(LUA_A) ++ALL_SO= $(LUA_SO) + + # Targets start here. + default: $(PLAT) +@@ -55,12 +61,23 @@ + + a: $(ALL_A) + ++so: $(ALL_SO) ++ + $(LUA_A): $(BASE_O) + $(AR) $@ $(BASE_O) + $(RANLIB) $@ + ++$(LUA_SO): $(CORE_O) $(LIB_O) ++ $(CC) -o $@.$(PKG_VERSION) -shared -Wl,-soname="$@.$(PKG_VERSION)" $? ++ ln -fs $@.$(PKG_VERSION) $@ ++ ++ifneq (dynamic,$(BUILDMODE)) + $(LUA_T): $(LUA_O) $(LUA_A) + $(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS) ++else ++$(LUA_T): $(LUA_O) $(LUA_SO) ++ $(CC) -o $@ -L. $(LDFLAGS) $(LUA_O) -llua $(LIBS) ++endif + + $(LUAC_T): $(LUAC_O) $(LUA_A) + $(CC) -o $@ $(LDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS) diff --git a/package/lua/5.3.6/0003-linenoise.patch b/package/lua/5.3.6/0003-linenoise.patch new file mode 100644 index 00000000..495177c3 --- /dev/null +++ b/package/lua/5.3.6/0003-linenoise.patch @@ -0,0 +1,23 @@ +Add support of linenoise (replace readline) + +Upstream: http://lua-users.org/lists/lua-l/2010-03/msg00879.html +Signed-off-by: Francois Perrad + +Index: b/src/lua.c +=================================================================== +--- a/src/lua.c ++++ b/src/lua.c +@@ -85,6 +85,13 @@ + #define lua_saveline(L,line) ((void)L, add_history(line)) + #define lua_freeline(L,b) ((void)L, free(b)) + ++#elif defined(LUA_USE_LINENOISE) ++ ++#include ++#define lua_readline(L,b,p) ((void)L, ((b)=linenoise(p)) != NULL) ++#define lua_saveline(L,line) ((void)L, linenoiseHistoryAdd(line)) ++#define lua_freeline(L,b) ((void)L, free(b)) ++ + #else /* }{ */ + + #define lua_readline(L,b,p) \ diff --git a/package/lua/5.3.6/lua.hash b/package/lua/5.3.6/lua.hash new file mode 100644 index 00000000..74849b31 --- /dev/null +++ b/package/lua/5.3.6/lua.hash @@ -0,0 +1,6 @@ +# Hashes from: http://www.lua.org/ftp/ +md5 83f23dbd5230140a3770d5f54076948d lua-5.3.6.tar.gz +sha1 f27d20d6c81292149bc4308525a9d6733c224fa5 lua-5.3.6.tar.gz + +# Locally computed +sha256 2ddff2161e0c4487d744943565538743c0721485873092f6809d072a983b06ef doc/readme.html diff --git a/package/lua/5.4.7/0001-root-path.patch b/package/lua/5.4.7/0001-root-path.patch new file mode 100644 index 00000000..cec9066e --- /dev/null +++ b/package/lua/5.4.7/0001-root-path.patch @@ -0,0 +1,18 @@ +Adjust installation location to /usr. + +Upstream: N/A specific for Buildroot build +Signed-off-by: Francois Perrad + +Index: b/src/luaconf.h +=================================================================== +--- a/src/luaconf.h ++++ b/src/luaconf.h +@@ -223,7 +223,7 @@ + + #else /* }{ */ + +-#define LUA_ROOT "/usr/local/" ++#define LUA_ROOT "/usr/" + #define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR "/" + #define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR "/" + diff --git a/package/lua/5.4.7/0002-shared-libs-for-lua.patch b/package/lua/5.4.7/0002-shared-libs-for-lua.patch new file mode 100644 index 00000000..61159609 --- /dev/null +++ b/package/lua/5.4.7/0002-shared-libs-for-lua.patch @@ -0,0 +1,79 @@ +Add the compilation of a shared library. +Compile the lua binary with the shared library. +And install the shared library. +The variable BUILDMODE allows to switch between static and dynamic mode. + +Upstream: N/A specific for Buildroot build +Signed-off-by: Francois Perrad + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -42,6 +42,7 @@ + TO_BIN= lua luac + TO_INC= lua.h luaconf.h lualib.h lauxlib.h lua.hpp + TO_LIB= liblua.a ++TO_SOLIB = liblua.so.$(R) + TO_MAN= lua.1 luac.1 + + # Lua version and release. +@@ -57,6 +58,8 @@ + install: dummy + cd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_MAN) $(INSTALL_LMOD) $(INSTALL_CMOD) + cd src && $(INSTALL_EXEC) $(TO_BIN) $(INSTALL_BIN) ++ test -f src/$(TO_SOLIB) && cd src && $(INSTALL_EXEC) $(TO_SOLIB) $(INSTALL_LIB) || : ++ test -f src/$(TO_SOLIB) && ln -sf $(TO_SOLIB) $(INSTALL_LIB)/liblua.so || : + cd src && $(INSTALL_DATA) $(TO_INC) $(INSTALL_INC) + cd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB) + cd doc && $(INSTALL_DATA) $(TO_MAN) $(INSTALL_MAN) +Index: b/src/Makefile +=================================================================== +--- a/src/Makefile ++++ b/src/Makefile +@@ -33,6 +33,7 @@ + PLATS= guess aix bsd c89 freebsd generic ios linux linux-readline macosx mingw posix solaris + + LUA_A= liblua.a ++LUA_SO= liblua.so + CORE_O= lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o + LIB_O= lauxlib.o lbaselib.o lcorolib.o ldblib.o liolib.o lmathlib.o loadlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o linit.o + BASE_O= $(CORE_O) $(LIB_O) $(MYOBJS) +@@ -44,8 +45,13 @@ + LUAC_O= luac.o + + ALL_O= $(BASE_O) $(LUA_O) $(LUAC_O) ++ifneq (dynamic,$(BUILDMODE)) + ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) ++else ++ALL_T= $(LUA_A) $(LUA_SO) $(LUA_T) $(LUAC_T) ++endif + ALL_A= $(LUA_A) ++ALL_SO= $(LUA_SO) + + # Targets start here. + default: $(PLAT) +@@ -56,12 +62,23 @@ + + a: $(ALL_A) + ++so: $(ALL_SO) ++ + $(LUA_A): $(BASE_O) + $(AR) $@ $(BASE_O) + $(RANLIB) $@ + ++$(LUA_SO): $(CORE_O) $(LIB_O) ++ $(CC) -o $@.$(PKG_VERSION) -shared -Wl,-soname="$@.$(PKG_VERSION)" $? ++ ln -fs $@.$(PKG_VERSION) $@ ++ ++ifneq (dynamic,$(BUILDMODE)) + $(LUA_T): $(LUA_O) $(LUA_A) + $(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS) ++else ++$(LUA_T): $(LUA_O) $(LUA_SO) ++ $(CC) -o $@ -L. $(LDFLAGS) $(LUA_O) -llua $(LIBS) ++endif + + $(LUAC_T): $(LUAC_O) $(LUA_A) + $(CC) -o $@ $(LDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS) diff --git a/package/lua/5.4.7/0003-linenoise.patch b/package/lua/5.4.7/0003-linenoise.patch new file mode 100644 index 00000000..a82c8801 --- /dev/null +++ b/package/lua/5.4.7/0003-linenoise.patch @@ -0,0 +1,24 @@ +Add support of linenoise (replace readline) + +Upstream: http://lua-users.org/lists/lua-l/2010-03/msg00879.html +Signed-off-by: Francois Perrad + +Index: b/src/lua.c +=================================================================== +--- a/src/lua.c ++++ b/src/lua.c +@@ -447,6 +447,14 @@ + #define lua_saveline(L,line) ((void)L, add_history(line)) + #define lua_freeline(L,b) ((void)L, free(b)) + ++#elif defined(LUA_USE_LINENOISE) ++ ++#include ++#define lua_initreadline(L) ((void)L) ++#define lua_readline(L,b,p) ((void)L, ((b)=linenoise(p)) != NULL) ++#define lua_saveline(L,line) ((void)L, linenoiseHistoryAdd(line)) ++#define lua_freeline(L,b) ((void)L, free(b)) ++ + #else /* }{ */ + + #define lua_initreadline(L) ((void)L) diff --git a/package/lua/5.4.7/lua.hash b/package/lua/5.4.7/lua.hash new file mode 100644 index 00000000..d67fdcf6 --- /dev/null +++ b/package/lua/5.4.7/lua.hash @@ -0,0 +1,5 @@ +# Hashes from: https://www.lua.org/ftp/ +sha256 9fbf5e28ef86c69858f6d3d34eccc32e911c1a28b4120ff3e84aaa70cfbf1e30 lua-5.4.7.tar.gz + +# Locally computed +sha256 33a975a766520bc54de2d71e45442e504effa0519e331e31ee3fc46eca4f98bd doc/readme.html diff --git a/package/lua/Config.in b/package/lua/Config.in new file mode 100644 index 00000000..888c34b2 --- /dev/null +++ b/package/lua/Config.in @@ -0,0 +1,87 @@ +config BR2_PACKAGE_LUA + bool "lua" + select BR2_PACKAGE_HAS_LUAINTERPRETER + help + Lua is a powerful, fast, light-weight, embeddable scripting + language. + + http://www.lua.org/ + +if BR2_PACKAGE_LUA + +config BR2_PACKAGE_PROVIDES_LUAINTERPRETER + default "lua" + +choice + prompt "Lua Version" + default BR2_PACKAGE_LUA_5_3 if BR2_PACKAGE_LUA_5_2 # legacy + default BR2_PACKAGE_LUA_5_4 + help + Select the version of Lua API/ABI you wish to use. + +config BR2_PACKAGE_LUA_5_1 + bool "Lua 5.1.x" + select BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1 + select BR2_PACKAGE_LUA_CVT_N2S + select BR2_PACKAGE_LUA_CVT_S2N + +config BR2_PACKAGE_LUA_5_3 + bool "Lua 5.3.x" + select BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_3 + +config BR2_PACKAGE_LUA_5_4 + bool "Lua 5.4.x" + select BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_4 + +endchoice + +if BR2_PACKAGE_LUA_5_3 || BR2_PACKAGE_LUA_5_4 +config BR2_PACKAGE_LUA_32BITS + bool "Use 32 bit numbers" + default y if !BR2_ARCH_IS_64 + help + Use a 32 bit data type for numbers / integers instead of the + default 64 bit type. This option is particularly attractive + for small machines and embedded systems. + +endif + +config BR2_PACKAGE_LUA_CVT_N2S + bool "automatic coercion from number to string" + default y # legacy + help + If unsure, say y, this is the default behavior of the Lua + interpreter. See LUA_NOCVTN2S in luaconf.h + +config BR2_PACKAGE_LUA_CVT_S2N + bool "automatic coercion from string to number" + default y # legacy + help + If unsure, say y, this is the default behavior of the Lua + interpreter. See LUA_NOCVTN2S in luaconf.h + +choice + prompt "Lua command-line editing" + default BR2_PACKAGE_LUA_EDITING_NONE + +config BR2_PACKAGE_LUA_EDITING_NONE + bool "none" + help + None. + +config BR2_PACKAGE_LUA_READLINE + bool "readline support" + select BR2_PACKAGE_READLINE + select BR2_PACKAGE_NCURSES + help + Enables command-line editing in the Lua interpreter. + +config BR2_PACKAGE_LUA_LINENOISE + bool "linenoise support" + select BR2_PACKAGE_LINENOISE + help + Enables command-line editing in the Lua interpreter. + +endchoice + +endif diff --git a/package/lua/lua.mk b/package/lua/lua.mk new file mode 100644 index 00000000..15772dbd --- /dev/null +++ b/package/lua/lua.mk @@ -0,0 +1,121 @@ +################################################################################ +# +# lua +# +################################################################################ + +ifeq ($(BR2_PACKAGE_LUA_5_4),y) +LUA_VERSION = 5.4.7 +else ifeq ($(BR2_PACKAGE_LUA_5_3),y) +LUA_VERSION = 5.3.6 +else +LUA_VERSION = 5.1.5 +endif +LUA_SITE = https://www.lua.org/ftp +LUA_INSTALL_STAGING = YES +LUA_LICENSE = MIT +ifeq ($(BR2_PACKAGE_LUA_5_3)$(BR2_PACKAGE_LUA_5_4),y) +LUA_LICENSE_FILES = doc/readme.html +else +LUA_LICENSE_FILES = COPYRIGHT +endif +LUA_CPE_ID_VENDOR = lua + +LUA_PROVIDES = luainterpreter + +LUA_CFLAGS = -Wall -fPIC -DLUA_USE_POSIX + +ifeq ($(BR2_PACKAGE_LUA_5_4),y) +LUA_CFLAGS += -DLUA_COMPAT_5_3 +else ifeq ($(BR2_PACKAGE_LUA_5_3),y) +LUA_CFLAGS += -DLUA_COMPAT_5_2 +endif + +ifeq ($(BR2_PACKAGE_LUA_CVT_N2S),) +LUA_CFLAGS += -DLUA_NOCVTN2S +endif + +ifeq ($(BR2_PACKAGE_LUA_CVT_S2N),) +LUA_CFLAGS += -DLUA_NOCVTS2N +endif + +ifeq ($(BR2_STATIC_LIBS),y) +LUA_BUILDMODE = static +else +LUA_BUILDMODE = dynamic +LUA_CFLAGS += -DLUA_USE_DLOPEN +LUA_MYLIBS += -ldl +endif + +ifeq ($(BR2_PACKAGE_LUA_READLINE),y) +LUA_DEPENDENCIES += readline ncurses +LUA_MYLIBS += -lreadline -lhistory -lncurses +LUA_CFLAGS += -DLUA_USE_READLINE +else +ifeq ($(BR2_PACKAGE_LUA_LINENOISE),y) +LUA_DEPENDENCIES += linenoise +LUA_MYLIBS += -llinenoise +LUA_CFLAGS += -DLUA_USE_LINENOISE +endif +endif + +ifeq ($(BR2_PACKAGE_LUA_32BITS),y) +define LUA_32BITS_LUACONF + $(SED) 's/\/\* #define LUA_32BITS \*\//#define LUA_32BITS/' $(@D)/src/luaconf.h +endef + +LUA_POST_PATCH_HOOKS += LUA_32BITS_LUACONF +endif + +define HOST_LUA_LUACONF + $(SED) 's|#define LUA_ROOT.*|#define LUA_ROOT "$(HOST_DIR)/"|' $(@D)/src/luaconf.h +endef +HOST_LUA_POST_PATCH_HOOKS += HOST_LUA_LUACONF + +HOST_LUA_CFLAGS = -Wall -fPIC -DLUA_USE_DLOPEN -DLUA_USE_POSIX +ifeq ($(BR2_PACKAGE_LUA_5_3),y) +HOST_LUA_CFLAGS += -DLUA_COMPAT_5_2 +endif +HOST_LUA_MYLIBS = -ldl + +define LUA_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + CC="$(TARGET_CC)" RANLIB="$(TARGET_RANLIB)" \ + CFLAGS="$(TARGET_CFLAGS) $(LUA_CFLAGS)" \ + MYLIBS="$(LUA_MYLIBS)" AR="$(TARGET_CROSS)ar rcu" \ + MYLDFLAGS="$(TARGET_LDFLAGS)" \ + BUILDMODE=$(LUA_BUILDMODE) \ + PKG_VERSION=$(LUA_VERSION) -C $(@D)/src all + sed -e "s/@VERSION@/$(LUA_VERSION)/;s/@ABI@/$(LUAINTERPRETER_ABIVER)/;s/@MYLIBS@/$(LUA_MYLIBS)/" \ + package/lua/lua.pc.in > $(@D)/lua.pc +endef + +define HOST_LUA_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) \ + CFLAGS="$(HOST_LUA_CFLAGS)" \ + MYLDFLAGS="$(HOST_LDFLAGS)" \ + MYLIBS="$(HOST_LUA_MYLIBS)" \ + BUILDMODE=dynamic \ + PKG_VERSION=$(LUA_VERSION) -C $(@D)/src all + sed -e "s/@VERSION@/$(LUA_VERSION)/;s/@ABI@/$(LUAINTERPRETER_ABIVER)/;s/@MYLIBS@/$(HOST_LUA_MYLIBS)/" \ + package/lua/lua.pc.in > $(@D)/lua.pc +endef + +define LUA_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) INSTALL_TOP="$(STAGING_DIR)/usr" -C $(@D) install + $(INSTALL) -m 0644 -D $(@D)/lua.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/lua.pc +endef + +define LUA_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) INSTALL_TOP="$(TARGET_DIR)/usr" -C $(@D) install +endef + +define HOST_LUA_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) INSTALL_TOP="$(HOST_DIR)" -C $(@D) install + $(INSTALL) -m 0644 -D $(@D)/lua.pc \ + $(HOST_DIR)/lib/pkgconfig/lua.pc +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/lua/lua.pc.in b/package/lua/lua.pc.in new file mode 100644 index 00000000..0a61d5e6 --- /dev/null +++ b/package/lua/lua.pc.in @@ -0,0 +1,26 @@ +# lua.pc -- pkg-config data for Lua + +V= @ABI@ +R= @VERSION@ + +prefix= /usr +INSTALL_BIN= ${prefix}/bin +INSTALL_INC= ${prefix}/include +INSTALL_LIB= ${prefix}/lib +INSTALL_MAN= ${prefix}/man/man1 +INSTALL_LMOD= ${prefix}/share/lua/${V} +INSTALL_CMOD= ${prefix}/lib/lua/${V} + +# canonical vars +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: Lua +Description: An Extensible Extension Language +Version: ${R} +Requires: +Libs: -L${libdir} -llua -lm @MYLIBS@ +Cflags: -I${includedir} + +# (end of lua.pc) diff --git a/package/luabitop/Config.in b/package/luabitop/Config.in new file mode 100644 index 00000000..656b1c73 --- /dev/null +++ b/package/luabitop/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LUABITOP + bool "luabitop" + depends on BR2_PACKAGE_LUA_5_1 + help + Lua BitOp is a C extension module for Lua 5.1/5.2 which adds + bitwise operations on numbers. + + http://bitop.luajit.org + +comment "luabitop needs Lua 5.1" + depends on !BR2_PACKAGE_LUA_5_1 diff --git a/package/luabitop/luabitop.hash b/package/luabitop/luabitop.hash new file mode 100644 index 00000000..02757a6b --- /dev/null +++ b/package/luabitop/luabitop.hash @@ -0,0 +1,4 @@ +# computed by luarocks/buildroot +sha256 fc7a8065a57462ee13bed7f95b0ab13f94ecd1bf846108c61ccf2c75548af26e luabitop-1.0.2-1.src.rock +# Locally calcuated +sha256 25e331120d0c2f95fa2ac6e439ca920f0a4362c366a4c7382d843113743a3ba5 LuaBitOp-1.0.2/README diff --git a/package/luabitop/luabitop.mk b/package/luabitop/luabitop.mk new file mode 100644 index 00000000..a36a2fea --- /dev/null +++ b/package/luabitop/luabitop.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# luabitop +# +################################################################################ + +LUABITOP_VERSION = 1.0.2-1 +LUABITOP_NAME_UPSTREAM = LuaBitOp +LUABITOP_LICENSE = MIT +LUABITOP_LICENSE_FILES = $(LUABITOP_SUBDIR)/README + +$(eval $(luarocks-package)) diff --git a/package/luadbi-sqlite3/Config.in b/package/luadbi-sqlite3/Config.in new file mode 100644 index 00000000..600c5526 --- /dev/null +++ b/package/luadbi-sqlite3/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LUADBI_SQLITE3 + bool "luadbi-sqlite3" + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_LUADBI # runtime + help + LuaDBI is a database interface library for Lua. + And this is the SQLite3 backend. + + https://github.com/mwild1/luadbi diff --git a/package/luadbi-sqlite3/luadbi-sqlite3.hash b/package/luadbi-sqlite3/luadbi-sqlite3.hash new file mode 100644 index 00000000..4096fbb2 --- /dev/null +++ b/package/luadbi-sqlite3/luadbi-sqlite3.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 c5b043db43941a3c6e43d3e3699236846ed6d03a6c4cb12fa1a497f965138d9f luadbi-sqlite3-0.7.2-1.src.rock +sha256 988d73cc2e56f972e8177091e084855fc2904d0fafcfe5c4e02864f25ce2b928 luadbi/COPYING diff --git a/package/luadbi-sqlite3/luadbi-sqlite3.mk b/package/luadbi-sqlite3/luadbi-sqlite3.mk new file mode 100644 index 00000000..4ae2b5cf --- /dev/null +++ b/package/luadbi-sqlite3/luadbi-sqlite3.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# luadbi-sqlite3 +# +################################################################################ + +LUADBI_SQLITE3_VERSION = 0.7.2-1 +LUADBI_SQLITE3_SUBDIR = luadbi +LUADBI_SQLITE3_LICENSE = MIT +LUADBI_SQLITE3_LICENSE_FILES = $(LUADBI_SQLITE3_SUBDIR)/COPYING +LUADBI_SQLITE3_DEPENDENCIES = sqlite + +$(eval $(luarocks-package)) diff --git a/package/luadbi/Config.in b/package/luadbi/Config.in new file mode 100644 index 00000000..2e290585 --- /dev/null +++ b/package/luadbi/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LUADBI + bool "luadbi" + help + LuaDBI is a database interface library for Lua. + It is designed to provide a RDBMS agnostic API for handling + database operations. LuaDBI also provides support for + prepared statement handles, placeholders and bind parameters + for all database operations. + + https://github.com/mwild1/luadbi diff --git a/package/luadbi/luadbi.hash b/package/luadbi/luadbi.hash new file mode 100644 index 00000000..e142f5e6 --- /dev/null +++ b/package/luadbi/luadbi.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 9ebbbaf4ea1f48628341e9ff3c1de10a57200c02453734f41b8016b0fc7b4956 luadbi-0.7.2-1.src.rock +sha256 988d73cc2e56f972e8177091e084855fc2904d0fafcfe5c4e02864f25ce2b928 luadbi/COPYING diff --git a/package/luadbi/luadbi.mk b/package/luadbi/luadbi.mk new file mode 100644 index 00000000..fbae6b31 --- /dev/null +++ b/package/luadbi/luadbi.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# luadbi +# +################################################################################ + +LUADBI_VERSION = 0.7.2-1 +LUADBI_SUBDIR = luadbi +LUADBI_LICENSE = MIT +LUADBI_LICENSE_FILES = $(LUADBI_SUBDIR)/COPYING + +$(eval $(luarocks-package)) diff --git a/package/luaexpat/Config.in b/package/luaexpat/Config.in new file mode 100644 index 00000000..25b06746 --- /dev/null +++ b/package/luaexpat/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUAEXPAT + bool "luaexpat" + select BR2_PACKAGE_EXPAT + help + LuaExpat is a SAX XML parser based on the Expat library. + + https://lunarmodules.github.io/luaexpat diff --git a/package/luaexpat/luaexpat.hash b/package/luaexpat/luaexpat.hash new file mode 100644 index 00000000..621293a0 --- /dev/null +++ b/package/luaexpat/luaexpat.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 eb7abc4cc39dd50eecb30896686bac84e66fd3c0774d0749b391e7ac5d222f45 luaexpat-1.5.1-1.src.rock +sha256 7e6a727e5b57cca713a2f2633f05d7e0cc1e261cc6a7613bbe266e625b2f14da luaexpat/LICENSE diff --git a/package/luaexpat/luaexpat.mk b/package/luaexpat/luaexpat.mk new file mode 100644 index 00000000..73675a8e --- /dev/null +++ b/package/luaexpat/luaexpat.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# luaexpat +# +################################################################################ + +LUAEXPAT_VERSION = 1.5.1-1 +LUAEXPAT_SUBDIR = luaexpat +LUAEXPAT_LICENSE = MIT +LUAEXPAT_LICENSE_FILES = $(LUAEXPAT_SUBDIR)/LICENSE +LUAEXPAT_DEPENDENCIES = expat + +$(eval $(luarocks-package)) diff --git a/package/luaexpatutils/Config.in b/package/luaexpatutils/Config.in new file mode 100644 index 00000000..28a7b095 --- /dev/null +++ b/package/luaexpatutils/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LUAEXPATUTILS + bool "luaexpatutils" + select BR2_PACKAGE_LUAEXPAT + help + lxp.doc is a module that provides useful features for working + with XML formats in LOM format as used by the LuaExpat project + from Kepler. + + https://github.com/stevedonovan/LuaExpatUtils diff --git a/package/luaexpatutils/luaexpatutils.hash b/package/luaexpatutils/luaexpatutils.hash new file mode 100644 index 00000000..8b6befc9 --- /dev/null +++ b/package/luaexpatutils/luaexpatutils.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9b50bef94a6ddb6e6d4fffd5392f5c53d15e1a048966b559c4f8eda5e84d4517 luaexpatutils-88c228365b084224c911d34aff06002634b38b50.tar.gz diff --git a/package/luaexpatutils/luaexpatutils.mk b/package/luaexpatutils/luaexpatutils.mk new file mode 100644 index 00000000..9bfc6547 --- /dev/null +++ b/package/luaexpatutils/luaexpatutils.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# luaexpatutils +# +################################################################################ + +LUAEXPATUTILS_VERSION = 88c228365b084224c911d34aff06002634b38b50 +LUAEXPATUTILS_SITE = $(call github,stevedonovan,LuaExpatUtils,$(LUAEXPATUTILS_VERSION)) +LUAEXPATUTILS_LICENSE = Public Domain +LUAEXPATUTILS_DEPENDENCIES = luaexpat + +define LUAEXPATUTILS_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/lua/doc.lua \ + $(TARGET_DIR)/usr/share/lua/$(LUAINTERPRETER_ABIVER)/lxp/doc.lua +endef + +$(eval $(generic-package)) diff --git a/package/luafilesystem/Config.in b/package/luafilesystem/Config.in new file mode 100644 index 00000000..7c130f8d --- /dev/null +++ b/package/luafilesystem/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUAFILESYSTEM + bool "luafilesystem" + help + LuaFileSystem offers a portable way to access + the underlying directory structure and file attributes. + + http://keplerproject.github.com/luafilesystem/ diff --git a/package/luafilesystem/luafilesystem.hash b/package/luafilesystem/luafilesystem.hash new file mode 100644 index 00000000..cbe38294 --- /dev/null +++ b/package/luafilesystem/luafilesystem.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 576270a55752894254c2cba0d49d73595d37ec4ea8a75e557fdae7aff80e19cf luafilesystem-1.8.0-1.src.rock +sha256 beb2c9eed6466d572c3888028a77421206053a3c023429cbd69e5015badba842 luafilesystem/LICENSE diff --git a/package/luafilesystem/luafilesystem.mk b/package/luafilesystem/luafilesystem.mk new file mode 100644 index 00000000..b8b07176 --- /dev/null +++ b/package/luafilesystem/luafilesystem.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# luafilesystem +# +################################################################################ + +LUAFILESYSTEM_VERSION = 1.8.0-1 +LUAFILESYSTEM_SUBDIR = luafilesystem +LUAFILESYSTEM_LICENSE = MIT +LUAFILESYSTEM_LICENSE_FILES = $(LUAFILESYSTEM_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/package/luainterpreter/Config.in b/package/luainterpreter/Config.in new file mode 100644 index 00000000..873fb345 --- /dev/null +++ b/package/luainterpreter/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_HAS_LUAINTERPRETER + bool + +config BR2_PACKAGE_PROVIDES_LUAINTERPRETER + string + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + +config BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION + string + default "5.1" if BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1 + default "5.3" if BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_3 + default "5.4" if BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_4 + +config BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1 + bool + +config BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_3 + bool + +config BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_4 + bool + +config BR2_PACKAGE_PROVIDES_HOST_LUAINTERPRETER + string + default "host-lua" diff --git a/package/luainterpreter/luainterpreter.mk b/package/luainterpreter/luainterpreter.mk new file mode 100644 index 00000000..9d9f85a5 --- /dev/null +++ b/package/luainterpreter/luainterpreter.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# luainterpreter +# +################################################################################ + +LUAINTERPRETER_ABIVER = $(call qstrip,$(BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION)) + +# Lua packages often install documentation, clean that up globally +define LUAINTERPRETER_REMOVE_DOC + rm -rf $(TARGET_DIR)/usr/share/lua/$(LUAINTERPRETER_ABIVER)/doc +endef + +LUAINTERPRETER_TARGET_FINALIZE_HOOKS += LUAINTERPRETER_REMOVE_DOC + +$(eval $(virtual-package)) +$(eval $(host-virtual-package)) + +LUA_RUN = $(HOST_DIR)/bin/lua diff --git a/package/luajit/0001-no-bin-symlink.patch b/package/luajit/0001-no-bin-symlink.patch new file mode 100644 index 00000000..ea0e5bf8 --- /dev/null +++ b/package/luajit/0001-no-bin-symlink.patch @@ -0,0 +1,26 @@ +Do not use a symlink for the binary, simply name it luajit + +Signed-off-by: Thomas Petazzoni + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -50,8 +50,7 @@ + INSTALL_MAN= $(INSTALL_SHARE)/man/man1 + INSTALL_PKGCONFIG= $(INSTALL_LIB)/pkgconfig + +-INSTALL_TNAME= luajit-$(VERSION) +-INSTALL_TSYMNAME= luajit ++INSTALL_TNAME= luajit + INSTALL_ANAME= libluajit-$(ABIVER).a + INSTALL_SOSHORT1= libluajit-$(ABIVER).so + INSTALL_SOSHORT2= libluajit-$(ABIVER).so.$(MAJVER) +@@ -66,7 +65,6 @@ + INSTALL_SHORT1= $(INSTALL_LIB)/$(INSTALL_SOSHORT1) + INSTALL_SHORT2= $(INSTALL_LIB)/$(INSTALL_SOSHORT2) + INSTALL_T= $(INSTALL_BIN)/$(INSTALL_TNAME) +-INSTALL_TSYM= $(INSTALL_BIN)/$(INSTALL_TSYMNAME) + INSTALL_PC= $(INSTALL_PKGCONFIG)/$(INSTALL_PCNAME) + + INSTALL_DIRS= $(INSTALL_BIN) $(INSTALL_LIB) $(INSTALL_INC) $(INSTALL_MAN) \ diff --git a/package/luajit/0002-install-inc.patch b/package/luajit/0002-install-inc.patch new file mode 100644 index 00000000..163a5d36 --- /dev/null +++ b/package/luajit/0002-install-inc.patch @@ -0,0 +1,17 @@ +Install includes like lua's ones + +Signed-off-by: Francois Perrad + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -38,7 +38,7 @@ + INSTALL_BIN= $(DPREFIX)/bin + INSTALL_LIB= $(DPREFIX)/$(MULTILIB) + INSTALL_SHARE= $(DPREFIX)/share +-INSTALL_DEFINC= $(DPREFIX)/include/luajit-$(MMVERSION) ++INSTALL_DEFINC= $(DPREFIX)/include + INSTALL_INC= $(INSTALL_DEFINC) + + INSTALL_LJLIBD= $(INSTALL_SHARE)/luajit-$(MMVERSION) diff --git a/package/luajit/Config.in b/package/luajit/Config.in new file mode 100644 index 00000000..31e9e024 --- /dev/null +++ b/package/luajit/Config.in @@ -0,0 +1,49 @@ +config BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS + bool + default y if BR2_arm || BR2_aarch64 || BR2_aarch64_be + default y if BR2_i386 || BR2_x86_64 + default y if (BR2_mips || BR2_mipsel) && !BR2_MIPS_SOFT_FLOAT \ + && !BR2_MIPS_CPU_MIPS32R6 && !BR2_MIPS_CPU_MIPS64R6 + default y if BR2_powerpc + # -m32 flag is used for 32bit builds and host-luajit has + # limited architecture support + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + # Building for 64-bit target requires a 64-bit host + depends on !BR2_ARCH_IS_64 || BR2_HOSTARCH = "x86_64" + +config BR2_PACKAGE_LUAJIT + bool "luajit" + depends on !BR2_STATIC_LIBS # dlopen + # Luajit conflicts with the regular lua package + depends on !BR2_PACKAGE_LUA + # Luajit is only available for some target architectures, and + # has some complexity wrt 32/64. See luajit.mk for details. + depends on BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS + # luajit.mk uses the "-m32" compiler option to build 32bit + # binaries, so check if that option is supported. See + # luajit.mk for details. + select BR2_PACKAGE_HAS_LUAINTERPRETER + select BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1 + select BR2_HOSTARCH_NEEDS_IA32_COMPILER if !BR2_ARCH_IS_64 + help + LuaJIT implements the full set of language features defined + by Lua 5.1. The virtual machine (VM) is API- and + ABI-compatible to the standard Lua interpreter and can be + deployed as a drop-in replacement. + + https://luajit.org/luajit.html + +if BR2_PACKAGE_LUAJIT + +config BR2_PACKAGE_PROVIDES_LUAINTERPRETER + default "luajit" + +config BR2_PACKAGE_LUAJIT_COMPAT52 + bool "Lua 5.2 compatibility" + help + Compile with Lua 5.2 compatibility. + +endif + +comment "luajit needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/luajit/luajit.hash b/package/luajit/luajit.hash new file mode 100644 index 00000000..54ae3f99 --- /dev/null +++ b/package/luajit/luajit.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 346b028d9ba85e04b7e23a43cc51ec076574d2efc0d271d4355141b0145cd6e0 luajit-04dca7911ea255f37be799c18d74c305b921c1a6.tar.gz + +# Locally calculated +sha256 1130331ac861a4b4520e9c8ad0814efdc6f1e79ea55ea9c460c73733d13ccb5f COPYRIGHT diff --git a/package/luajit/luajit.mk b/package/luajit/luajit.mk new file mode 100644 index 00000000..951206b8 --- /dev/null +++ b/package/luajit/luajit.mk @@ -0,0 +1,81 @@ +################################################################################ +# +# luajit +# +################################################################################ + +LUAJIT_VERSION = 04dca7911ea255f37be799c18d74c305b921c1a6 +LUAJIT_SITE = $(call github,LuaJIT,LuaJIT,$(LUAJIT_VERSION)) +LUAJIT_LICENSE = MIT +LUAJIT_LICENSE_FILES = COPYRIGHT +LUAJIT_CPE_ID_VENDOR = luajit + +LUAJIT_INSTALL_STAGING = YES + +LUAJIT_PROVIDES = luainterpreter + +ifeq ($(BR2_PACKAGE_LUAJIT_COMPAT52),y) +LUAJIT_XCFLAGS += -DLUAJIT_ENABLE_LUA52COMPAT +endif + +# The luajit build procedure requires the host compiler to have the +# same bitness as the target compiler. Therefore, on a x86 build +# machine, we can't build luajit for x86_64, which is checked in +# Config.in. When the target is a 32 bits target, we pass -m32 to +# ensure that even on 64 bits build machines, a compiler of the same +# bitness is used. Of course, this assumes that the 32 bits multilib +# libraries are installed. +ifeq ($(BR2_ARCH_IS_64),y) +LUAJIT_HOST_CC = $(HOSTCC) +# There is no LUAJIT_ENABLE_GC64 option. +else +LUAJIT_HOST_CC = $(HOSTCC) -m32 +LUAJIT_XCFLAGS += -DLUAJIT_DISABLE_GC64 +endif + +# We unfortunately can't use TARGET_CONFIGURE_OPTS, because the luajit +# build system uses non conventional variable names. +define LUAJIT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) PREFIX="/usr" \ + STATIC_CC="$(TARGET_CC)" \ + DYNAMIC_CC="$(TARGET_CC) -fPIC" \ + TARGET_LD="$(TARGET_CC)" \ + TARGET_AR="$(TARGET_AR) rcus" \ + TARGET_STRIP=true \ + TARGET_CFLAGS="$(TARGET_CFLAGS)" \ + TARGET_LDFLAGS="$(TARGET_LDFLAGS)" \ + HOST_CC="$(LUAJIT_HOST_CC)" \ + HOST_CFLAGS="$(HOST_CFLAGS)" \ + HOST_LDFLAGS="$(HOST_LDFLAGS)" \ + BUILDMODE=dynamic \ + XCFLAGS="$(LUAJIT_XCFLAGS)" \ + -C $(@D) amalg +endef + +define LUAJIT_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) PREFIX="/usr" DESTDIR="$(STAGING_DIR)" LDCONFIG=true -C $(@D) install +endef + +define LUAJIT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) PREFIX="/usr" DESTDIR="$(TARGET_DIR)" LDCONFIG=true -C $(@D) install +endef + +define LUAJIT_INSTALL_SYMLINK + ln -fs luajit $(TARGET_DIR)/usr/bin/lua +endef +LUAJIT_POST_INSTALL_TARGET_HOOKS += LUAJIT_INSTALL_SYMLINK + +# host-efl package needs host-luajit to be linked dynamically. +define HOST_LUAJIT_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) PREFIX="$(HOST_DIR)" BUILDMODE=dynamic \ + TARGET_LDFLAGS="$(HOST_LDFLAGS)" \ + XCFLAGS="$(LUAJIT_XCFLAGS)" \ + -C $(@D) amalg +endef + +define HOST_LUAJIT_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) PREFIX="$(HOST_DIR)" LDCONFIG=true -C $(@D) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/luajson/Config.in b/package/luajson/Config.in new file mode 100644 index 00000000..c9321bb7 --- /dev/null +++ b/package/luajson/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LUAJSON + bool "luajson" + select BR2_PACKAGE_LPEG # runtime + help + LuaJSON is a customizable JSON decoder/encoder + using LPEG for parsing. + + http://github.com/harningt/luajson diff --git a/package/luajson/luajson.hash b/package/luajson/luajson.hash new file mode 100644 index 00000000..ea779994 --- /dev/null +++ b/package/luajson/luajson.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 28a5928cf2e4fd79fa9a9aceaef5ebf1dccb1146489b7de4c2726f561700f01c luajson-1.3.4-1.src.rock +sha256 87565fca189b70f2e119b2a99e5e92a7aaab9f2eb05228b56b88e6c2e2f98bcd luajson/LICENSE diff --git a/package/luajson/luajson.mk b/package/luajson/luajson.mk new file mode 100644 index 00000000..81a9f811 --- /dev/null +++ b/package/luajson/luajson.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# luajson +# +################################################################################ + +LUAJSON_VERSION = 1.3.4-1 +LUAJSON_SUBDIR = luajson +LUAJSON_LICENSE = MIT +LUAJSON_LICENSE_FILES = $(LUAJSON_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/package/lualdap/Config.in b/package/lualdap/Config.in new file mode 100644 index 00000000..5ef89728 --- /dev/null +++ b/package/lualdap/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LUALDAP + bool "lualdap" + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR # openldap + depends on BR2_USE_MMU # openldap + select BR2_PACKAGE_OPENLDAP + help + LuaLDAP is a simple interface from Lua to an LDAP client, + in fact it is a bind to OpenLDAP client. + + https://lualdap.github.io/lualdap/ + +comment "lualdap needs a toolchain w/ wchar, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS diff --git a/package/lualdap/lualdap.hash b/package/lualdap/lualdap.hash new file mode 100644 index 00000000..62d8d20a --- /dev/null +++ b/package/lualdap/lualdap.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 865b915a3ff16b9663b76a77e89ec54a5028ccfe95e85ad704efbaa144a608f8 lualdap-1.4.0-1.src.rock +sha256 b9b75da18d1e1147ec47bff508ffdce831da07dc371891b9057cf1c422660af4 lualdap/docs/license.md diff --git a/package/lualdap/lualdap.mk b/package/lualdap/lualdap.mk new file mode 100644 index 00000000..a6fc612b --- /dev/null +++ b/package/lualdap/lualdap.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# lualdap +# +################################################################################ + +LUALDAP_VERSION = 1.4.0-1 +LUALDAP_SUBDIR = lualdap +LUALDAP_LICENSE = MIT +LUALDAP_LICENSE_FILES = $(LUALDAP_SUBDIR)/docs/license.md +LUALDAP_DEPENDENCIES = openldap + +$(eval $(luarocks-package)) diff --git a/package/lualogging/Config.in b/package/lualogging/Config.in new file mode 100644 index 00000000..b12b9514 --- /dev/null +++ b/package/lualogging/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LUALOGGING + bool "lualogging" + help + LuaLogging provides a simple API to use logging features in + Lua. Its design was based on log4j. LuaLogging currently + supports, through the use of appenders, console, file, rolling + file, email, socket and SQL outputs. + + https://lunarmodules.github.io/lualogging/ diff --git a/package/lualogging/lualogging.hash b/package/lualogging/lualogging.hash new file mode 100644 index 00000000..af1ee105 --- /dev/null +++ b/package/lualogging/lualogging.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 7bc2dcd13dbe85e48de50f05000b391e467a54d537b44ed856c1f7ad29c3549a lualogging-1.8.2-1.src.rock +sha256 9740a719a5e4ee280e65f42e3624354c3c4464e61d94de33efca9d7072d31092 lualogging/COPYRIGHT diff --git a/package/lualogging/lualogging.mk b/package/lualogging/lualogging.mk new file mode 100644 index 00000000..c7969fb7 --- /dev/null +++ b/package/lualogging/lualogging.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lualogging +# +################################################################################ + +LUALOGGING_VERSION = 1.8.2-1 +LUALOGGING_SUBDIR = lualogging +LUALOGGING_LICENSE = MIT +LUALOGGING_LICENSE_FILES = $(LUALOGGING_SUBDIR)/COPYRIGHT + +$(eval $(luarocks-package)) diff --git a/package/luaossl/Config.in b/package/luaossl/Config.in new file mode 100644 index 00000000..f84c59f2 --- /dev/null +++ b/package/luaossl/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_LUAOSSL + bool "luaossl" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + help + luaossl is a comprehensive binding to OpenSSL for Lua 5.1, + 5.2, and later. + + It includes support for certificate and key management, + key generation, signature verification, and deep bindings + to the distinguished name, alternative name, and X.509v3 + extension interfaces. It also binds OpenSSL's bignum, message + digest, HMAC, cipher, and CSPRNG interfaces. + + http://25thandclement.com/~william/projects/luaossl.html + +comment "luaossl needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/luaossl/luaossl.hash b/package/luaossl/luaossl.hash new file mode 100644 index 00000000..bf08fbd5 --- /dev/null +++ b/package/luaossl/luaossl.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 d711c86f433def90f63cb6747fe0bebaac604b868de6a9a35e4da2bb4e0967be luaossl-20220711-0.src.rock +sha256 7bd585fba3ae52943e0915e4c8ca049acde9f1e5cea101ef6b294427c8f0ee7d luaossl-rel-20220711/LICENSE diff --git a/package/luaossl/luaossl.mk b/package/luaossl/luaossl.mk new file mode 100644 index 00000000..a6283a52 --- /dev/null +++ b/package/luaossl/luaossl.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# luaossl +# +################################################################################ + +LUAOSSL_VERSION_UPSTREAM = 20220711 +LUAOSSL_VERSION = $(LUAOSSL_VERSION_UPSTREAM)-0 +LUAOSSL_SUBDIR = luaossl-rel-$(LUAOSSL_VERSION_UPSTREAM) +LUAOSSL_LICENSE = MIT +LUAOSSL_LICENSE_FILES = $(LUAOSSL_SUBDIR)/LICENSE +LUAOSSL_DEPENDENCIES = openssl + +$(eval $(luarocks-package)) diff --git a/package/luaposix/Config.in b/package/luaposix/Config.in new file mode 100644 index 00000000..bd210574 --- /dev/null +++ b/package/luaposix/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LUAPOSIX + bool "luaposix" + # "bit32" is included in Lua 5.2+. luajit has an equivalent + # "bit" module, but since it has a different name, luaposix + # doesn't find it. + select BR2_PACKAGE_LUA_BIT32 if BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1 # runtime + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + This is a POSIX binding for LuaJIT, Lua 5.1 through 5.4; + like most libraries it simply binds to C APIs on the + underlying system, so it won't work on non-POSIX systems. + However, it does try to detect the level of POSIX conformance + of the underlying system and bind only available APIs. + + https://github.com/luaposix/luaposix diff --git a/package/luaposix/luaposix.hash b/package/luaposix/luaposix.hash new file mode 100644 index 00000000..d54395c2 --- /dev/null +++ b/package/luaposix/luaposix.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 44e5087cd3c47058f9934b90c0017e4cf870b71619f99707dd433074622debb1 luaposix-36.2.1.tar.gz +sha256 ea0fdaae50b0d31a81c2c99f4354264783c71043fd40522feaa40eecc069599b LICENSE diff --git a/package/luaposix/luaposix.mk b/package/luaposix/luaposix.mk new file mode 100644 index 00000000..c5d98fbb --- /dev/null +++ b/package/luaposix/luaposix.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# luaposix +# +################################################################################ + +LUAPOSIX_VERSION = 36.2.1 +LUAPOSIX_SITE = $(call github,luaposix,luaposix,v$(LUAPOSIX_VERSION)) +LUAPOSIX_LICENSE = MIT +LUAPOSIX_LICENSE_FILES = LICENSE +LUAPOSIX_DEPENDENCIES = luainterpreter host-lua + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +LUAPOSIX_DEPENDENCIES += libxcrypt +endif + +define LUAPOSIX_BUILD_CMDS + (cd $(@D); \ + $(LUA_RUN) build-aux/luke \ + CC="$(TARGET_CC)" \ + CFLAGS="$(TARGET_CFLAGS)" \ + LUA_INCDIR=$(STAGING_DIR)/usr/include \ + ) +endef + +define LUAPOSIX_INSTALL_TARGET_CMDS + (cd $(@D); \ + $(LUA_RUN) build-aux/luke install \ + INST_LIBDIR="$(TARGET_DIR)/usr/lib/lua/$(LUAINTERPRETER_ABIVER)" \ + INST_LUADIR="$(TARGET_DIR)/usr/share/lua/$(LUAINTERPRETER_ABIVER)" \ + ) +endef + +$(eval $(generic-package)) diff --git a/package/luarocks/buildroot.lua b/package/luarocks/buildroot.lua new file mode 100644 index 00000000..2b523586 --- /dev/null +++ b/package/luarocks/buildroot.lua @@ -0,0 +1,414 @@ + +--- Module implementing the LuaRocks "buildroot" command. +local buildroot = {} + +local dir = require("luarocks.dir") +local fs = require("luarocks.fs") +local util = require("luarocks.util") +local queries = require("luarocks.queries") +local search = require("luarocks.search") +local download = require("luarocks.download") +local fetch = require("luarocks.fetch") + +function buildroot.add_to_parser(parser) + local cmd = parser:command("buildroot", [[ +This addon generates Buildroot package files of a rock. +First argument is the name of a rock, the second argument is optional +and needed when Buildroot uses another name (usually prefixed by lua-). +Files are generated with the source content of the rock and more +especially the rockspec. So, the rock is downloaded and unpacked. +]], util.see_also()) + :summary("generate buildroot package files of a rock.") + + cmd:argument("rockname", "the name of a rock to be fetched and unpacked.") + cmd:argument("brname", "the name used by Buildroot.") + :args("?") +end + +local function brname (name) + return name:upper():gsub('-', '_') +end + +local function brlicense (license) + if license:match('MIT/X') then + return 'MIT' + end + return license +end + +local function wrap (txt, max) + local lines = {} + local line = '' + for word in txt:gmatch('(%S+)') do + if line:len() + word:len() > max - 1 then + lines[#lines+1] = line + line = '' + end + if line == '' then + line = word + else + line = line .. ' ' .. word + end + end + lines[#lines+1] = line + return lines +end + +local function has_c_files (rockspec) + for _, mod in pairs(rockspec.build.modules or {}) do + if type(mod) == 'string' then + if mod:match'%.c$' then + return true + end + elseif type(mod) == 'table' then + local sources = mod.sources + if type(sources) == 'string' and sources:match'%.c$' then + return true + end + for _, src in ipairs(sources or mod) do + if src:match'%.c$' then + return true + end + end + end + end + return false +end + +local function get_main_modules (rockspec) + local t = {} + for name in pairs(rockspec.build.modules or {}) do + if not name:match('%.') then + t[#t+1] = name + end + end + if #t == 0 then + for name in pairs(rockspec.build.modules or {}) do + t[#t+1] = name + end + end + if #t == 0 then + t[#t+1] = rockspec.package:gsub('%-', '') + end + table.sort(t) + return t +end + +local function get_external_dependencies (rockspec) + local t = {} + for k in pairs(rockspec.external_dependencies or {}) do + k = k:lower() + if fs.is_dir('package/' .. k) then + t[#t+1] = k + else + t[#t+1] = 'lib' .. k + if not fs.is_dir('package/lib' .. k) then + util.printout('unkwown external dependency: ' .. k) + end + end + end + table.sort(t) + return t +end + +local function get_dependencies (rockspec) + local t = {} + for i = 1, #rockspec.dependencies do + local dep = tostring(rockspec.dependencies[i]):match('^(%S+)') + if dep ~= 'lua' then + dep = dep:gsub('_', '-') + if fs.is_dir('package/lua-' .. dep) then + t[#t+1] = 'lua-' .. dep + else + t[#t+1] = dep + if not fs.is_dir('package/' .. dep) then + util.printout('unkwown dependency: ' .. dep) + end + end + end + end + table.sort(t) + return t +end + +function get_digest (file) + local absname = fs.absolute_name(file) + local pipe = io.popen('sha256sum ' .. fs.Q(absname)) + local line = pipe:read('*l') + pipe:close() + local computed = line and line:match('(' .. ('%x'):rep(64) .. ')') + if computed then + return computed + else + return nil, "Failed to compute SHA256 hash for file " .. absname + end +end + +local function generate_config (rockspec, lcname) + local ucname = brname(lcname) + local only_luajit = rockspec.package:match('^lj') + local summary = rockspec.description.summary + if not summary then + summary = '???' + elseif not summary:match('%.%s*$') then + summary = summary:gsub('%s*$', '.') + end + local homepage = rockspec.description.homepage or '???' + local external_dependencies = get_external_dependencies(rockspec) + local dependencies = get_dependencies(rockspec) + local fname = 'package/' .. lcname .. '/Config.in' + local f = assert(io.open(fname, 'w')) + util.printout('write ' .. fname) + f:write('config BR2_PACKAGE_' .. ucname .. '\n') + f:write('\tbool "' .. lcname .. '"\n') + if only_luajit then + f:write('\tdepends on BR2_PACKAGE_LUAJIT\n') + end + for i = 1, #external_dependencies do + f:write('\tselect BR2_PACKAGE_' .. brname(external_dependencies[i]) .. '\n') + end + for i = 1, #dependencies do + f:write('\tselect BR2_PACKAGE_' .. brname(dependencies[i]) .. ' # runtime\n') + end + f:write('\thelp\n') + f:write('\t ' .. table.concat(wrap(summary, 62), '\n\t ') .. '\n') + f:write('\n\t ' .. homepage .. '\n') + if only_luajit then + f:write('\ncomment "' .. lcname .. ' needs LuaJIT"\n') + f:write('\tdepends on !BR2_PACKAGE_LUAJIT\n') + end + f:close() +end + +local function generate_mk (rockspec, lcname, licenses) + local function escape (s) + return s:gsub('-', '%%-'):gsub('%.', '%%.') + end + + local ucname = brname(lcname) + local need_name_upstream = false + local need_version_upstream = false + local name_upstream = rockspec.package + local version = rockspec.version + local version_upstream = version:match('^([^-]+)-') + local revision = version:match('-(%d+)$') + local license = rockspec.description.license + local subdir = rockspec.source.dir + if subdir then + local root = subdir:match('^(.-)-' .. escape(version) .. '$') + if root then + subdir = root .. '-$(' .. ucname .. '_VERSION)' + end + root = subdir:match('^(.--[Vv])' .. escape(version_upstream) .. '$') + if root then + need_version_upstream = true + subdir = root .. '$(' .. ucname .. '_VERSION_UPSTREAM)' + end + root = subdir:match('^(.-)-' .. escape(version_upstream) .. '$') + if root then + if root == lcname then + subdir = nil + elseif root == name_upstream then + subdir = nil + need_name_upstream = true + else + need_version_upstream = true + subdir = root .. '-$(' .. ucname .. '_VERSION_UPSTREAM)' + end + end + end + local external_dependencies = get_external_dependencies(rockspec) + local fname = 'package/' .. lcname .. '/' .. lcname .. '.mk' + local f = assert(io.open(fname, 'w')) + util.printout('write ' .. fname) + f:write('################################################################################\n') + f:write('#\n') + f:write('# ' .. lcname .. '\n') + f:write('#\n') + f:write('################################################################################\n') + f:write('\n') + if need_version_upstream then + f:write(ucname .. '_VERSION_UPSTREAM = ' .. version_upstream .. '\n') + f:write(ucname .. '_VERSION = $(' .. ucname .. '_VERSION_UPSTREAM)-' .. revision .. '\n') + else + f:write(ucname .. '_VERSION = ' .. version .. '\n') + end + if lcname ~= name_upstream:lower() or need_name_upstream then + f:write(ucname .. '_NAME_UPSTREAM = ' .. name_upstream .. '\n') + end + if subdir then + f:write(ucname .. '_SUBDIR = ' .. subdir .. '\n') + end + if license then + f:write(ucname .. '_LICENSE = ' .. brlicense(license) .. '\n') + end + if #licenses == 1 then + f:write(ucname .. '_LICENSE_FILES = $(' .. ucname .. '_SUBDIR)/' .. licenses[1] .. '\n') + elseif #licenses > 1 then + f:write(ucname .. '_LICENSE_FILES =') + for i = 1, #licenses do + local file = licenses[i] + f:write(' \\\n\t$(' .. ucname .. '_SUBDIR)/' .. file) + end + f:write('\n') + end + if #external_dependencies > 0 then + f:write(ucname .. '_DEPENDENCIES = ' .. table.concat(external_dependencies, ' ') .. '\n') + end + f:write('\n$(eval $(luarocks-package))\n') + f:close() +end + +local function generate_hash (rockspec, lcname, rock_file, licenses, digest) + local subdir = rockspec.source.dir + local fname = 'package/' .. lcname .. '/' .. lcname .. '.hash' + local f = assert(io.open(fname, 'w')) + util.printout('write ' .. fname) + f:write('# computed by luarocks/buildroot\n') + f:write('sha256 ' .. digest[rock_file] .. ' ' .. rock_file .. '\n') + for i = 1, #licenses do + local file = licenses[i] + f:write('sha256 ' .. digest[file] .. ' ' .. subdir .. '/' .. file .. '\n') + end + f:close() +end + +local function generate_test (rockspec, lcname) + local ucname = brname(lcname) + local classname = rockspec.package:gsub('%-', ''):gsub('%.', '') + classname = classname:sub(1, 1):upper() .. classname:sub(2) + local modnames = get_main_modules(rockspec) + local fname = 'support/testing/tests/package/test_' .. ucname:lower() .. '.py' + local f = assert(io.open(fname, 'w')) + util.printout('write ' .. fname) + f:write('from tests.package.test_lua import TestLuaBase\n') + f:write('\n') + f:write('\n') + f:write('class TestLua' .. classname .. '(TestLuaBase):\n') + f:write(' config = TestLuaBase.config + \\\n') + f:write(' """\n') + f:write(' BR2_PACKAGE_LUA=y\n') + f:write(' BR2_PACKAGE_' .. ucname .. '=y\n') + f:write(' """\n') + f:write('\n') + f:write(' def test_run(self):\n') + f:write(' self.login()\n') + for i = 1, #modnames do + f:write(' self.module_test("' .. modnames[i] .. '")\n') + end + f:write('\n') + f:write('\n') + f:write('class TestLuajit' .. classname .. '(TestLuaBase):\n') + f:write(' config = TestLuaBase.config + \\\n') + f:write(' """\n') + f:write(' BR2_PACKAGE_LUAJIT=y\n') + f:write(' BR2_PACKAGE_' .. ucname .. '=y\n') + f:write(' """\n') + f:write('\n') + f:write(' def test_run(self):\n') + f:write(' self.login()\n') + for i = 1, #modnames do + f:write(' self.module_test("' .. modnames[i] .. '")\n') + end + f:close() +end + +--- Driver function for the "buildroot" command. +-- @return boolean: true if successful +function buildroot.command(args) + local rockname = assert(args.rockname) + local fsname = args.brname or rockname + + local query = queries.new(rockname:lower(), nil, nil, false, 'src') + local url, err = search.find_suitable_rock(query) + if not url then + return nil, "Could not find a result named " .. tostring(query) .. ": " .. err + end + local rock_file = dir.base_name(url) + + local temp_dir, err = fs.make_temp_dir(rockname) + if not temp_dir then + return nil, "Failed creating temporary dir: " .. err + end + local ok, err = fs.change_dir(temp_dir) + if not ok then return nil, err end + + ok = fs.download(url, rock_file, true) + if not ok then + return nil, "Failed downloading " .. url + end + + local digest = {} + digest[rock_file], err = get_digest(rock_file) + if not digest[rock_file] then return nil, err end + ok, err = fs.unzip(rock_file) + if not ok then return nil, err end + + local rockspec_file = rock_file:gsub('%.src%.rock$', '.rockspec') + local rockspec, err = fetch.load_rockspec(rockspec_file) + if not rockspec then + return nil, "Error loading rockspec: " .. err + end + if rockspec.source.file then + rockspec.source.dir = rockspec.source.dir or dir.deduce_base_dir(rockspec.source.file) + ok, err = fs.unpack_archive(rockspec.source.file) + if not ok then return nil, err end + else + rockspec.source.dir = rockspec.source.dir or '.' + end + + if rockspec.source.dir ~= '.' then + fs.copy(rockspec.local_abs_filename, rockspec.source.dir, 'read') + end + + local build_type = rockspec.build.type + if build_type ~= 'none' and build_type ~= 'builtin' and build_type ~= 'module' then + util.printout('[' .. rockspec.package .. "] build_type '" .. build_type .. "' not supported") + end + + local licenses = {} + ok, err = fs.change_dir(rockspec.source.dir) + if not ok then return nil, err end + local files = fs.find() + for i = 1, #files do + local v = files[i] + if v == 'COPYING' + or v == 'COPYRIGHT' + or v:match('^LICENSE') then + licenses[#licenses+1] = v + digest[v], err = get_digest(v) + if not digest[v] then return nil, err end + end + end + if #licenses == 0 then + for i = 1, #files do + local v = files[i] + if v:match('^docs?/LICENSE') + or v:match('^docs?/license') + or v:match('^doc/us/license') then + licenses[#licenses+1] = v + digest[v], err = get_digest(v) + if not digest[v] then return nil, err end + end + end + end + fs.pop_dir() + table.sort(licenses) + + fs.pop_dir() + ok, err = fs.make_dir('package/' .. fsname:lower()) + if not ok then return nil, err end + + generate_config(rockspec, fsname:lower()) + generate_mk(rockspec, fsname:lower(), licenses) + generate_hash(rockspec, fsname:lower(), rock_file, licenses, digest) + if has_c_files(rockspec) then + ok, err = fs.make_dir('support/testing/tests/package') + if not ok then return nil, err end + generate_test(rockspec, fsname:lower()) + end + + return true +end + +return buildroot diff --git a/package/luarocks/luarocks.hash b/package/luarocks/luarocks.hash new file mode 100644 index 00000000..15a44f9d --- /dev/null +++ b/package/luarocks/luarocks.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c3fb3d960dffb2b2fe9de7e3cb004dc4d0b34bb3d342578af84f84325c669102 luarocks-3.11.1.tar.gz +sha256 660773f53ed17cd0d8be7d67168c25e8cc664a506788c7b5971192bdd2994a9d COPYING diff --git a/package/luarocks/luarocks.mk b/package/luarocks/luarocks.mk new file mode 100644 index 00000000..cf5f966c --- /dev/null +++ b/package/luarocks/luarocks.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# luarocks +# +################################################################################ + +LUAROCKS_VERSION = 3.11.1 +LUAROCKS_SITE = https://luarocks.org/releases +LUAROCKS_LICENSE = MIT +LUAROCKS_LICENSE_FILES = COPYING + +HOST_LUAROCKS_DEPENDENCIES = host-luainterpreter + +LUAROCKS_CONFIG_DIR = $(HOST_DIR)/etc +LUAROCKS_CONFIG_FILE_DEFAULT = $(LUAROCKS_CONFIG_DIR)/luarocks/config-$(LUAINTERPRETER_ABIVER).lua +LUAROCKS_CONFIG_FILE = $(LUAROCKS_CONFIG_DIR)/luarocks/config.lua +HOST_LUAROCKS_CONFIG_FILE = $(LUAROCKS_CONFIG_DIR)/luarocks/host-config.lua + +define LUAROCKS_ADDON_EXTRACT + $(INSTALL) -D -m 0644 package/luarocks/buildroot.lua $(@D)/src/luarocks/cmd/external/buildroot.lua +endef +HOST_LUAROCKS_POST_EXTRACT_HOOKS += LUAROCKS_ADDON_EXTRACT + +HOST_LUAROCKS_CONF_OPTS = \ + --prefix=$(HOST_DIR) \ + --sysconfdir=$(LUAROCKS_CONFIG_DIR) \ + --with-lua=$(HOST_DIR) + +define HOST_LUAROCKS_CONFIGURE_CMDS + cd $(@D) && ./configure $(HOST_LUAROCKS_CONF_OPTS) +endef + +define HOST_LUAROCKS_INSTALL_CMDS + rm -f $(LUAROCKS_CONFIG_FILE_DEFAULT) + $(MAKE1) -C $(@D) install + cp $(LUAROCKS_CONFIG_FILE_DEFAULT) $(LUAROCKS_CONFIG_FILE) + echo "-- BR cross-compilation" >> $(LUAROCKS_CONFIG_FILE) + echo "gcc_rpath = false" >> $(LUAROCKS_CONFIG_FILE) + echo "wrap_bin_scripts = false" >> $(LUAROCKS_CONFIG_FILE) + cp $(LUAROCKS_CONFIG_FILE_DEFAULT) $(HOST_LUAROCKS_CONFIG_FILE) + rm -f $(LUAROCKS_CONFIG_FILE_DEFAULT) +endef + +$(eval $(host-generic-package)) + +define LUAROCKS_FINALIZE_TARGET + rm -rf $(TARGET_DIR)/usr/lib/luarocks +endef + +# 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/package/luasec/Config.in b/package/luasec/Config.in new file mode 100644 index 00000000..d22fd57a --- /dev/null +++ b/package/luasec/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LUASEC + bool "luasec" + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LUASOCKET # runtime + help + A binding for OpenSSL library to provide TLS/SSL communication + over LuaSocket. + + https://github.com/brunoos/luasec/wiki diff --git a/package/luasec/luasec.hash b/package/luasec/luasec.hash new file mode 100644 index 00000000..0fb9996d --- /dev/null +++ b/package/luasec/luasec.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 f93bf9927bd34a5d4f897f4488b285a12bee89c0e7d54b3b36dfcbf43a7ad4e5 luasec-1.3.2-1.src.rock +sha256 a3eab8badfcce959ae0c50be4ce460b547785dba61e6dcc6a1dbb8f800a18563 luasec/LICENSE diff --git a/package/luasec/luasec.mk b/package/luasec/luasec.mk new file mode 100644 index 00000000..6e338a7b --- /dev/null +++ b/package/luasec/luasec.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# luasec +# +################################################################################ + +LUASEC_VERSION = 1.3.2-1 +LUASEC_SUBDIR = luasec +LUASEC_LICENSE = MIT +LUASEC_LICENSE_FILES = $(LUASEC_SUBDIR)/LICENSE +LUASEC_DEPENDENCIES = openssl + +$(eval $(luarocks-package)) diff --git a/package/luasocket/Config.in b/package/luasocket/Config.in new file mode 100644 index 00000000..5ad00f5c --- /dev/null +++ b/package/luasocket/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LUASOCKET + bool "luasocket" + help + LuaSocket is the most comprehensive networking support library + for the Lua language. + It provides easy access to TCP, UDP, DNS, SMTP, + FTP, HTTP, MIME and much more. + + https://github.com/lunarmodules/luasocket diff --git a/package/luasocket/luasocket.hash b/package/luasocket/luasocket.hash new file mode 100644 index 00000000..bfbc06f3 --- /dev/null +++ b/package/luasocket/luasocket.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 f4a207f50a3f99ad65def8e29c54ac9aac668b216476f7fae3fae92413398ed2 luasocket-3.1.0-1.src.rock +sha256 224afe42d0738eaaeb57ab289466a1c4e77091591e69dbcef2dbb385589f2f41 luasocket/LICENSE diff --git a/package/luasocket/luasocket.mk b/package/luasocket/luasocket.mk new file mode 100644 index 00000000..be360a33 --- /dev/null +++ b/package/luasocket/luasocket.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# luasocket +# +################################################################################ + +LUASOCKET_VERSION = 3.1.0-1 +LUASOCKET_SUBDIR = luasocket +LUASOCKET_LICENSE = MIT +LUASOCKET_LICENSE_FILES = $(LUASOCKET_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/package/luasql-sqlite3/Config.in b/package/luasql-sqlite3/Config.in new file mode 100644 index 00000000..3a1fc6ba --- /dev/null +++ b/package/luasql-sqlite3/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUASQL_SQLITE3 + bool "luasql-sqlite3" + select BR2_PACKAGE_SQLITE + help + LuaSQL is a simple interface from Lua to a DBMS. + + http://keplerproject.github.io/luasql/ diff --git a/package/luasql-sqlite3/luasql-sqlite3.hash b/package/luasql-sqlite3/luasql-sqlite3.hash new file mode 100644 index 00000000..f8c73765 --- /dev/null +++ b/package/luasql-sqlite3/luasql-sqlite3.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 502faabc5e06c1d7c1ddb9a0550eb19220020c86b9f1e26a2cc2001e1343b35d luasql-sqlite3-2.4.0-1.src.rock +sha256 c8bb3a3947379addb89412e578d0aae95ca37dc6e48a17e128f40e512d10b025 luasql/doc/us/license.html diff --git a/package/luasql-sqlite3/luasql-sqlite3.mk b/package/luasql-sqlite3/luasql-sqlite3.mk new file mode 100644 index 00000000..69fc956c --- /dev/null +++ b/package/luasql-sqlite3/luasql-sqlite3.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# luasql-sqlite3 +# +################################################################################ + +LUASQL_SQLITE3_VERSION = 2.4.0-1 +LUASQL_SQLITE3_SUBDIR = luasql +LUASQL_SQLITE3_LICENSE = MIT +LUASQL_SQLITE3_LICENSE_FILES = $(LUASQL_SQLITE3_SUBDIR)/doc/us/license.html +LUASQL_SQLITE3_DEPENDENCIES = sqlite + +$(eval $(luarocks-package)) diff --git a/package/luasyslog/0001-remove-AX_LUA_LIBS.patch b/package/luasyslog/0001-remove-AX_LUA_LIBS.patch new file mode 100644 index 00000000..23569ff5 --- /dev/null +++ b/package/luasyslog/0001-remove-AX_LUA_LIBS.patch @@ -0,0 +1,27 @@ +From 84296c5eae651b45ebfa233199b7ddc009a5dad3 Mon Sep 17 00:00:00 2001 +From: Francois Perrad +Date: Fri, 21 Jun 2019 14:58:54 +0200 +Subject: [PATCH] remove AX_LUA_LIBS + +AX_LUA_LIBS fails with LuaJIT + +Signed-off-by: Francois Perrad +--- + configure.ac | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 9ac6c95..d7fc518 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -32,7 +32,6 @@ AC_PATH_PROG([LUAROCKS], [luarocks], [:]) + AX_PROG_LUA([5.1],[6.0]) + + dnl Check for libraries +-AX_LUA_LIBS + + dnl Check for functions + AC_HEADER_STDC +-- +2.20.1 + diff --git a/package/luasyslog/0002-build-ax_lua.m4-fix-cross-compilation.patch b/package/luasyslog/0002-build-ax_lua.m4-fix-cross-compilation.patch new file mode 100644 index 00000000..ac7c1d97 --- /dev/null +++ b/package/luasyslog/0002-build-ax_lua.m4-fix-cross-compilation.patch @@ -0,0 +1,45 @@ +From aed16d13d881492e8558f9da21be2dffc4ab2c33 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 4 Sep 2021 17:23:58 +0200 +Subject: [PATCH] build/ax_lua.m4: fix cross-compilation + +Don't try to "find" and "fix" the script and module directories when +cross-compiling as this will give unexpected results such as using +${prefix}/lfs/hdd_v1/rc-buildroot-test/scripts/instance-0/output-1/host/usr/share/lua/5.3 +instead of +${prefix}/share/lua/5.3 +if the host machine root directory is /usr + +Fixes: + - http://autobuild.buildroot.org/results/09fa6dd9844d6d4694801ec59434dad7a56bf290 + +Signed-off-by: Fabrice Fontaine +--- + build/ax_lua.m4 | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/build/ax_lua.m4 b/build/ax_lua.m4 +index 23ca774..7c25cfd 100644 +--- a/build/ax_lua.m4 ++++ b/build/ax_lua.m4 +@@ -291,7 +291,7 @@ AC_DEFUN([AX_PROG_LUA], + + dnl Try to find a path with the prefix. + _AX_LUA_FND_PRFX_PTH([$LUA], [$ax_lua_prefix], [package.path]) +- AS_IF([test "x$ax_lua_prefixed_path" != 'x'], ++ AS_IF([test "x$ax_lua_prefixed_path" != 'x' && test "x$cross_compiling" != 'xyes'], + [ dnl Fix the prefix. + _ax_strip_prefix=`echo "$ax_lua_prefix" | sed 's|.|.|g'` + ax_cv_lua_luadir=`echo "$ax_lua_prefixed_path" | \ +@@ -318,7 +318,7 @@ AC_DEFUN([AX_PROG_LUA], + dnl Try to find a path with the prefix. + _AX_LUA_FND_PRFX_PTH([$LUA], + [$ax_lua_exec_prefix], [package.cpathd]) +- AS_IF([test "x$ax_lua_prefixed_path" != 'x'], ++ AS_IF([test "x$ax_lua_prefixed_path" != 'x' && test "x$cross_compiling" != 'xyes'], + [ dnl Fix the prefix. + _ax_strip_prefix=`echo "$ax_lua_exec_prefix" | sed 's|.|.|g'` + ax_cv_lua_luaexecdir=`echo "$ax_lua_prefixed_path" | \ +-- +2.32.0 + diff --git a/package/luasyslog/Config.in b/package/luasyslog/Config.in new file mode 100644 index 00000000..ca098cb4 --- /dev/null +++ b/package/luasyslog/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUASYSLOG + bool "luasyslog" + select BR2_PACKAGE_LUALOGGING # runtime + help + syslog appender for LuaLogging. + + https://github.com/ntd/luasyslog diff --git a/package/luasyslog/luasyslog.hash b/package/luasyslog/luasyslog.hash new file mode 100644 index 00000000..1e2a5dde --- /dev/null +++ b/package/luasyslog/luasyslog.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 b1b19ca142130f93c3f8f2e85303ff50cc6f4ed4aa52b8569176ae56e3dc3f43 luasyslog-2.2.1.tar.gz +sha256 833457938f5155e65dabda12a5c9d4b6fd7fb92dd7ead584c1c30cfb0c84adf4 COPYING diff --git a/package/luasyslog/luasyslog.mk b/package/luasyslog/luasyslog.mk new file mode 100644 index 00000000..972d4c5a --- /dev/null +++ b/package/luasyslog/luasyslog.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# luasyslog +# +################################################################################ + +LUASYSLOG_VERSION = 2.2.1 +LUASYSLOG_SITE = $(call github,ntd,luasyslog,$(LUASYSLOG_VERSION)) +LUASYSLOG_DEPENDENCIES = host-luarocks luainterpreter +LUASYSLOG_LICENSE = MIT +LUASYSLOG_LICENSE_FILES = COPYING +# fetching from github +# 0001-remove-AX_LUA_LIBS.patch touches configure.ac +LUASYSLOG_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/lugaru/0001-ImageIO-fix-invalid-conversion.patch b/package/lugaru/0001-ImageIO-fix-invalid-conversion.patch new file mode 100644 index 00000000..6096477c --- /dev/null +++ b/package/lugaru/0001-ImageIO-fix-invalid-conversion.patch @@ -0,0 +1,35 @@ +From 73e56ba8e91b6bae59220e6f25c1b7c15817edb5 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 12 Feb 2017 21:17:44 +0100 +Subject: [PATCH] ImageIO: fix invalid conversion + +Fixes: +Source/Utils/ImageIO.cpp:125:27: error: invalid conversion from 'int' to 'boolean' [-fpermissive] + cinfo.quantize_colors = 0; + ^ + +quantize_colors type is bool, so it must be initialized to TRUE or FALSE. + +Patch status: upsteam + +Signed-off-by: Romain Naour +--- + Source/Utils/ImageIO.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Source/Utils/ImageIO.cpp b/Source/Utils/ImageIO.cpp +index 706c201..c19a63e 100644 +--- a/Source/Utils/ImageIO.cpp ++++ b/Source/Utils/ImageIO.cpp +@@ -122,7 +122,7 @@ static bool load_jpg(const char* file_name, ImageRec& tex) + (void)jpeg_read_header(&cinfo, TRUE); + + cinfo.out_color_space = JCS_RGB; +- cinfo.quantize_colors = 0; ++ cinfo.quantize_colors = FALSE; + (void)jpeg_calc_output_dimensions(&cinfo); + (void)jpeg_start_decompress(&cinfo); + +-- +2.9.3 + diff --git a/package/lugaru/0002-Fix-mismatched-usage-length-build-fail-on-g.patch b/package/lugaru/0002-Fix-mismatched-usage-length-build-fail-on-g.patch new file mode 100644 index 00000000..9c362a98 --- /dev/null +++ b/package/lugaru/0002-Fix-mismatched-usage-length-build-fail-on-g.patch @@ -0,0 +1,58 @@ +From 5a0c9f6358169b447840acdb721250ce932cb180 Mon Sep 17 00:00:00 2001 +From: Martin Erik Werner +Date: Wed, 8 Mar 2017 22:51:16 +0100 +Subject: [PATCH] Fix mismatched usage length, build fail on g++ +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The length of const option::Descriptor usage[] is intended to be +inferred based on the initialisation in Source/main.cpp, however, the +extern declaration in Source/Game.hpp hard-codes it to 13. + +Remove the hard-coded 13 in the extern declaration, in favour of the +inferred length. + +This also fixes the follwoing build failure with g++ (Debian 4.9.2-10) +4.9.2: +(...)/Source/main.cpp:602:5: error: uninitialized const member ‘option::Descriptor::index’ + }; + ^ +(...)/Source/main.cpp:602:5: warning: missing initializer for member ‘option::Descriptor::index’ [-Wmissing-field-initializers] +(...)/Source/main.cpp:602:5: error: uninitialized const member ‘option::Descriptor::type’ +(...)/Source/main.cpp:602:5: warning: missing initializer for member ‘option::Descriptor::type’ [-Wmissing-field-initializers] +(...)/Source/main.cpp:602:5: error: uninitialized const member ‘option::Descriptor::shortopt’ +(...)/Source/main.cpp:602:5: warning: missing initializer for member ‘option::Descriptor::shortopt’ [-Wmissing-field-initializers] +(...)/Source/main.cpp:602:5: error: uninitialized const member ‘option::Descriptor::longopt’ +(...)/Source/main.cpp:602:5: warning: missing initializer for member ‘option::Descriptor::longopt’ [-Wmissing-field-initializers] +(...)/Source/main.cpp:602:5: error: uninitialized const member ‘option::Descriptor::check_arg’ +(...)/Source/main.cpp:602:5: warning: missing initializer for member ‘option::Descriptor::check_arg’ [-Wmissing-field-initializers] +(...)/Source/main.cpp:602:5: warning: missing initializer for member ‘option::Descriptor::help’ [-Wmissing-field-initializers] +CMakeFiles/lugaru.dir/build.make:54: recipe for target 'CMakeFiles/lugaru.dir/Source/main.cpp.o' failed + +Signed-off-by: Martin Erik Werner + +[Romain: backport to v1.2] +Signed-off-by: Romain Naour + +(cherry picked from commit dd685fe9080c2853422d8272792691358ea07dfc) +--- + Source/Game.hpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Source/Game.hpp b/Source/Game.hpp +index 51232cc..9bb6adb 100644 +--- a/Source/Game.hpp ++++ b/Source/Game.hpp +@@ -234,7 +234,7 @@ enum optionIndex + /* Number of options + 1 */ + const int commandLineOptionsNumber = 10; + +-extern const option::Descriptor usage[13]; ++extern const option::Descriptor usage[]; + + extern option::Option commandLineOptions[commandLineOptionsNumber]; + extern option::Option* commandLineOptionsBuffer; +-- +2.9.4 + diff --git a/package/lugaru/Config.in b/package/lugaru/Config.in new file mode 100644 index 00000000..4454ebcd --- /dev/null +++ b/package/lugaru/Config.in @@ -0,0 +1,38 @@ +config BR2_PACKAGE_LUGARU + bool "lugaru" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_HAS_LIBGL # libglu + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on BR2_PACKAGE_XORG7 # SDL2 OpenGL (GLX) + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # openal + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # openal + depends on BR2_USE_MMU # SDL2 OpenGL (GLX) + depends on !BR2_STATIC_LIBS # SDL2 + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBGLU # GL/glu.h + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_LIBVORBIS + select BR2_PACKAGE_OPENAL + select BR2_PACKAGE_SDL2 + select BR2_PACKAGE_SDL2_OPENGL + select BR2_PACKAGE_ZLIB + help + Lugaru (pronounced Loo-GAH-roo) is a cross-platform + third-person action game. The main character, Turner, is an + anthropomorphic rebel bunny rabbit with impressive combat + skills. In his quest to find those responsible for + slaughtering his village, he uncovers a far-reaching + conspiracy involving the corrupt leaders of the rabbit + republic and the starving wolves from a nearby den. Turner + takes it upon himself to fight against their plot and save + his fellow rabbits from slavery. + + https://osslugaru.gitlab.io/ + +comment "lugaru needs X11 and a toolchain w/ C++, OpenGL backend, gcc >= 4.9, NPTL, dynamic library" + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_PACKAGE_HAS_LIBGL || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + BR2_STATIC_LIBS diff --git a/package/lugaru/lugaru.hash b/package/lugaru/lugaru.hash new file mode 100644 index 00000000..a08edb46 --- /dev/null +++ b/package/lugaru/lugaru.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 f3ea477caf78911c69939fbdc163f9f6517c7ef2267e716a0e050be1a166ef97 lugaru-1.2.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING.txt +sha256 df020520630390de59394235a90a17c5d52d3b80ef76e2edf6d0690cd8b7fd7c CONTENT-LICENSE.txt diff --git a/package/lugaru/lugaru.mk b/package/lugaru/lugaru.mk new file mode 100644 index 00000000..53797f40 --- /dev/null +++ b/package/lugaru/lugaru.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# lugaru +# +################################################################################ + +LUGARU_VERSION = 1.2 +LUGARU_SITE = https://bitbucket.org/osslugaru/lugaru/downloads +LUGARU_SOURCE = lugaru-$(LUGARU_VERSION).tar.xz + +LUGARU_LICENSE = GPL-2.0+, CC-BY-SA-3.0 (Wolfire and Slib assets), \ + CC-BY-SA-4.0 (OSS Lugaru, Jendraz and Philtron R. assets) +LUGARU_LICENSE_FILES = COPYING.txt CONTENT-LICENSE.txt + +LUGARU_DEPENDENCIES = host-pkgconf jpeg libgl libglu libpng libvorbis \ + openal sdl2 zlib + +# Avoid incompatible posix_memalign declaration on x86 and x86_64 with +# musl. +# https://gcc.gnu.org/ml/gcc-patches/2015-05/msg01425.html +ifeq ($(BR2_TOOLCHAIN_USES_MUSL):$(BR2_i386)$(BR2_x86_64),y:y) +define LUGARU_REMOVE_PEDANTIC + $(SED) 's% -pedantic%%' $(@D)/CMakeLists.txt +endef +LUGARU_POST_PATCH_HOOKS += LUGARU_REMOVE_PEDANTIC +endif + +LUGARU_CONF_OPTS = -DSYSTEM_INSTALL=ON + +$(eval $(cmake-package)) diff --git a/package/luksmeta/Config.in b/package/luksmeta/Config.in new file mode 100644 index 00000000..ddc9b6f3 --- /dev/null +++ b/package/luksmeta/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LUKSMETA + bool "luksmeta" + depends on BR2_TOOLCHAIN_HAS_THREADS # cryptsetup -> lvm2 + depends on BR2_USE_MMU # cryptsetup -> lvm2 + depends on !BR2_STATIC_LIBS # cryptsetup -> lvm2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # cryptsetup -> json-c + select BR2_PACKAGE_CRYPTSETUP + help + LUKSMeta is a simple library and utility for storing + metadata in the LUKSv1 header. + + https://github.com/latchset/luksmeta + +comment "luksmeta needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/luksmeta/luksmeta.hash b/package/luksmeta/luksmeta.hash new file mode 100644 index 00000000..b367f29a --- /dev/null +++ b/package/luksmeta/luksmeta.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2ca0c35b551b331ba1444fc9d36e8c48ff8cae53dd4e6155b028e8904edc202a luksmeta-9.tar.bz2 +sha256 4b72eb6b5a336cd3ec837cc2d6347c23bf7574168db6b4802267700b93021abf COPYING diff --git a/package/luksmeta/luksmeta.mk b/package/luksmeta/luksmeta.mk new file mode 100644 index 00000000..129713ae --- /dev/null +++ b/package/luksmeta/luksmeta.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# luksmeta +# +################################################################################ + +LUKSMETA_VERSION = 9 +LUKSMETA_SOURCE = luksmeta-$(LUKSMETA_VERSION).tar.bz2 +LUKSMETA_SITE = https://github.com/latchset/luksmeta/releases/download/v$(LUKSMETA_VERSION) +LUKSMETA_LICENSE = LGPL-2.1+ +LUKSMETA_LICENSE_FILES = COPYING +LUKSMETA_DEPENDENCIES = host-pkgconf cryptsetup +LUKSMETA_CONF_ENV = ac_cv_prog_A2X="" +LUKSMETA_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/lutok/Config.in b/package/lutok/Config.in new file mode 100644 index 00000000..abeaa401 --- /dev/null +++ b/package/lutok/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LUTOK + bool "lutok" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_PACKAGE_LUAJIT + help + Lutok is a lightweight C++ API library for Lua. + + https://github.com/jmmv/lutok + +comment "lutok needs a toolchain w/ C++ and full Lua" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_PACKAGE_LUAJIT diff --git a/package/lutok/lutok.hash b/package/lutok/lutok.hash new file mode 100644 index 00000000..5ae9b1f4 --- /dev/null +++ b/package/lutok/lutok.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 2cec51efa0c8d65ace8b21eaa08384b77abc5087b46e785f78de1c21fb754cd5 lutok-0.4.tar.gz +sha256 9343913f8ef8a91ceaf148fdcdb70bb8a45b9df9dac2ef71308053dcb312ade9 COPYING diff --git a/package/lutok/lutok.mk b/package/lutok/lutok.mk new file mode 100644 index 00000000..41abddb0 --- /dev/null +++ b/package/lutok/lutok.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# lutok +# +################################################################################ + +LUTOK_VERSION = 0.4 +LUTOK_SITE = https://github.com/jmmv/lutok/releases/download/lutok-$(LUTOK_VERSION) +LUTOK_INSTALL_STAGING = YES +LUTOK_DEPENDENCIES = host-pkgconf lua +# --without-atf disables the atf-based lutok tests +LUTOK_CONF_OPTS = --without-doxygen --without-atf +LUTOK_LICENSE = BSD-3-Clause +LUTOK_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/luv/Config.in b/package/luv/Config.in new file mode 100644 index 00000000..d6aff8b6 --- /dev/null +++ b/package/luv/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LUV + bool "luv" + 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 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libuv + select BR2_PACKAGE_LIBUV + help + libuv bindings for LuaJIT and Lua. + + https://github.com/luvit/luv + +comment "luv needs a toolchain w/ NPTL, dynamic library, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 diff --git a/package/luv/luv.hash b/package/luv/luv.hash new file mode 100644 index 00000000..4cdb9172 --- /dev/null +++ b/package/luv/luv.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 567a6f3dcdcf8a9b54ddc57ffef89d1e950d72832b85ee81c8c83a9d4e0e9de2 luv-1.43.0-0.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/luv/luv.mk b/package/luv/luv.mk new file mode 100644 index 00000000..36fcdc74 --- /dev/null +++ b/package/luv/luv.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# luv +# +################################################################################ + +LUV_VERSION = 1.43.0-0 +LUV_SITE = https://github.com/luvit/luv/releases/download/$(LUV_VERSION) +LUV_LICENSE = Apache-2.0 +LUV_LICENSE_FILES = LICENSE.txt +LUV_DEPENDENCIES = libuv +LUV_INSTALL_STAGING = YES + +LUV_CONF_OPTS += \ + -DBUILD_MODULE=OFF \ + -DWITH_SHARED_LIBUV=ON \ + -DLUA_BUILD_TYPE=System + +ifeq ($(BR2_PACKAGE_LUAJIT),y) +LUV_DEPENDENCIES += luajit +LUV_CONF_OPTS += \ + -DWITH_LUA_ENGINE=LuaJIT +else +LUV_DEPENDENCIES += lua +LUV_CONF_OPTS += \ + -DWITH_LUA_ENGINE=Lua +endif + +$(eval $(cmake-package)) diff --git a/package/luvi/Config.in b/package/luvi/Config.in new file mode 100644 index 00000000..19d3307f --- /dev/null +++ b/package/luvi/Config.in @@ -0,0 +1,37 @@ +config BR2_PACKAGE_LUVI + bool "luvi" + 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 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libuv + select BR2_PACKAGE_LIBUV + select BR2_PACKAGE_LUV + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENGINES if BR2_PACKAGE_LIBOPENSSL + help + A project in-between luv and luvit. The goal of this is to + make building luvit and derivatives much easier. + + luvi extends LuaJIT with asynchronous I/O and several optional + modules to run Lua applications and build self-contained + binaries on systems that don't have a compiler. + + The luvi core can be extended with several Lua modules by + adding its bundled Lua binding libraries. + To get the Lua module... + * 'rex' select PCRE (BR2_PACKAGE_PCRE) + * 'ssl' select OpenSSL (BR2_PACKAGE_OPENSSL) + * 'zlib' select zlib (BR2_PACKAGE_ZLIB) + + https://github.com/luvit/luvi + +comment "luvi needs a toolchain w/ NPTL, dynamic library, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + +comment "luvi needs LuaJIT" + depends on !BR2_PACKAGE_LUAJIT diff --git a/package/luvi/luvi.hash b/package/luvi/luvi.hash new file mode 100644 index 00000000..3518a2dc --- /dev/null +++ b/package/luvi/luvi.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 4be4468d01657100967a9c696f503aa3c30de6f23af39050c1aae909fbf0aaf2 luvi-src-v2.14.0.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/luvi/luvi.mk b/package/luvi/luvi.mk new file mode 100644 index 00000000..ebd1066c --- /dev/null +++ b/package/luvi/luvi.mk @@ -0,0 +1,71 @@ +################################################################################ +# +# luvi +# +################################################################################ + +LUVI_VERSION = 2.14.0 +LUVI_SOURCE = luvi-src-v$(LUVI_VERSION).tar.gz +LUVI_SITE = https://github.com/luvit/luvi/releases/download/v$(LUVI_VERSION) +LUVI_LICENSE = Apache-2.0 +LUVI_LICENSE_FILES = LICENSE.txt +LUVI_DEPENDENCIES = libuv luajit luv host-luajit host-pkgconf + +# Dispatch all architectures of LuaJIT +ifeq ($(BR2_i386),y) +LUVI_TARGET_ARCH = x86 +else ifeq ($(BR2_x86_64),y) +LUVI_TARGET_ARCH = x64 +else ifeq ($(BR2_powerpc),y) +LUVI_TARGET_ARCH = ppc +else ifeq ($(BR2_arm)$(BR2_armeb),y) +LUVI_TARGET_ARCH = arm +else ifeq ($(BR2_aarch64),y) +LUVI_TARGET_ARCH = arm64 +else ifeq ($(BR2_aarch64_be),y) +LUVI_TARGET_ARCH = arm64be +else ifeq ($(BR2_mips),y) +LUVI_TARGET_ARCH = mips +else ifeq ($(BR2_mipsel),y) +LUVI_TARGET_ARCH = mipsel +else +LUVI_TARGET_ARCH = $(BR2_ARCH) +endif + +# LUAJIT_VERSION and the luajit installation path may not use the +# same value. Use the value from luajit.pc file. +LUVI_LUAJIT_MAJVER = `$(PKG_CONFIG_HOST_BINARY) --variable=majver luajit` +LUVI_LUAJIT_MINVER = `$(PKG_CONFIG_HOST_BINARY) --variable=minver luajit` + +# Bundled lua bindings have to be linked statically into the luvi executable +LUVI_CONF_OPTS = \ + -DBUILD_SHARED_LIBS=OFF \ + -DWithSharedLibluv=ON \ + -DTARGET_ARCH=$(LUVI_TARGET_ARCH) \ + -DLUA_PATH=$(HOST_DIR)/share/luajit-$(LUVI_LUAJIT_MAJVER).$(LUVI_LUAJIT_MINVER)/?.lua + +# Add "rex" module (PCRE via bundled lrexlib) +ifeq ($(BR2_PACKAGE_PCRE),y) +LUVI_DEPENDENCIES += pcre +LUVI_CONF_OPTS += -DWithPCRE=ON -DWithSharedPCRE=ON +else +LUVI_CONF_OPTS += -DWithPCRE=OFF -DWithSharedPCRE=OFF +endif + +# Add "ssl" module (via bundled lua-openssl) +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LUVI_DEPENDENCIES += openssl +LUVI_CONF_OPTS += -DWithOpenSSL=ON -DWithOpenSSLASM=ON -DWithSharedOpenSSL=ON +else +LUVI_CONF_OPTS += -DWithOpenSSL=OFF -DWithOpenSSLASM=OFF -DWithSharedOpenSSL=OFF +endif + +# Add "zlib" module (via bundled lua-zlib) +ifeq ($(BR2_PACKAGE_ZLIB),y) +LUVI_DEPENDENCIES += zlib +LUVI_CONF_OPTS += -DWithZLIB=ON -DWithSharedZLIB=ON +else +LUVI_CONF_OPTS += -DWithZLIB=OFF -DWithSharedZLIB=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/lv2/Config.in b/package/lv2/Config.in new file mode 100644 index 00000000..aeeb6d04 --- /dev/null +++ b/package/lv2/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LV2 + bool "lv2" + help + LV2 is a plugin standard for audio systems. It defines + a minimal yet extensible C API for plugin code and a + format for plugin "bundles". + + https://lv2plug.in/ diff --git a/package/lv2/lv2.hash b/package/lv2/lv2.hash new file mode 100644 index 00000000..08149588 --- /dev/null +++ b/package/lv2/lv2.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking signature +# https://lv2plug.in/spec/lv2-1.18.10.tar.xz.sig +sha256 78c51bcf21b54e58bb6329accbb4dae03b2ed79b520f9a01e734bd9de530953f lv2-1.18.10.tar.xz +sha256 1e6bb175e193608b767ff25a4ed68b82c4db599491cf0d2694435cf60e9a4841 COPYING diff --git a/package/lv2/lv2.mk b/package/lv2/lv2.mk new file mode 100644 index 00000000..2dde9b90 --- /dev/null +++ b/package/lv2/lv2.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# lv2 +# +################################################################################ + +LV2_VERSION = 1.18.10 +LV2_SITE = https://lv2plug.in/spec +LV2_SOURCE = lv2-$(LV2_VERSION).tar.xz +LV2_LICENSE = ISC +LV2_LICENSE_FILES = COPYING +LV2_DEPENDENCIES = host-pkgconf +LV2_INSTALL_STAGING = YES + +LV2_CONF_OPTS += \ + -Ddocs=disabled \ + -Dtests=disabled + +ifeq ($(BR2_PACKAGE_CAIRO),y) +LV2_DEPENDENCIES += cairo +endif + +ifeq ($(BR2_PACKAGE_LIBSNDFILE),y) +LV2_DEPENDENCIES += libsndfile +endif + +ifeq ($(BR2_PACKAGE_LIBGTK2),y) +LV2_DEPENDENCIES += libgtk2 +endif + +ifeq ($(BR2_STATIC_LIBS),y) +LV2_CONF_OPTS += -Dplugins=disabled +endif + +$(eval $(meson-package)) diff --git a/package/lvm2/0001-cmdline-use-freopen-to-reopen-standard-streams.patch b/package/lvm2/0001-cmdline-use-freopen-to-reopen-standard-streams.patch new file mode 100644 index 00000000..8d0be403 --- /dev/null +++ b/package/lvm2/0001-cmdline-use-freopen-to-reopen-standard-streams.patch @@ -0,0 +1,68 @@ +From 7c74ad9c349e381decc84c218112ea8e7bcc0b9c Mon Sep 17 00:00:00 2001 +From: Simon Rowe +Date: Thu, 23 Mar 2023 09:57:59 +0000 +Subject: [PATCH] cmdline: use freopen() to reopen standard streams + +In glibc stdin, stdout & stderr are variables that can be assigned to +(https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html) +however this not necessarily true of other C libraries. + +The gentoo musl porting notes +(https://wiki.gentoo.org/wiki/Musl_porting_notes) +recommend the substitution of + + stdX = fopen(...) + +with + + freopen(..., stdX) + +Taken from: https://github.com/gentoo/gentoo/blob/master/sys-fs/lvm2/files/lvm2-2.03.14-r1-fopen-to-freopen.patch +Signed-off-by: Simon Rowe +--- + tools/lvmcmdline.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c +index 1e12bedca..534368575 100644 +--- a/tools/lvmcmdline.c ++++ b/tools/lvmcmdline.c +@@ -3384,7 +3384,11 @@ static int _check_standard_fds(void) + int err = is_valid_fd(STDERR_FILENO); + + if (!is_valid_fd(STDIN_FILENO) && ++#ifdef __GLIBC__ + !(stdin = fopen(_PATH_DEVNULL, "r"))) { ++#else ++ !freopen(_PATH_DEVNULL, "r", stdin)) { ++#endif + if (err) + perror("stdin stream open"); + else +@@ -3394,7 +3398,11 @@ static int _check_standard_fds(void) + } + + if (!is_valid_fd(STDOUT_FILENO) && ++#ifdef __GLIBC__ + !(stdout = fopen(_PATH_DEVNULL, "w"))) { ++#else ++ !freopen(_PATH_DEVNULL, "w", stdout)) { ++#endif + if (err) + perror("stdout stream open"); + /* else no stdout */ +@@ -3402,7 +3410,11 @@ static int _check_standard_fds(void) + } + + if (!is_valid_fd(STDERR_FILENO) && ++#ifdef __GLIBC__ + !(stderr = fopen(_PATH_DEVNULL, "w"))) { ++#else ++ !freopen(_PATH_DEVNULL, "w", stderr)) { ++#endif + printf("stderr stream open: %s\n", + strerror(errno)); + return 0; +-- +2.22.3 + diff --git a/package/lvm2/0002-log-use-freopen-to-reopen-standard-streams.patch b/package/lvm2/0002-log-use-freopen-to-reopen-standard-streams.patch new file mode 100644 index 00000000..0b57fb6f --- /dev/null +++ b/package/lvm2/0002-log-use-freopen-to-reopen-standard-streams.patch @@ -0,0 +1,44 @@ +From 6d6b953cf7d2b8d06e7b0363b1b06cb2e902aa0f Mon Sep 17 00:00:00 2001 +From: Simon Rowe +Date: Thu, 23 Mar 2023 10:07:02 +0000 +Subject: [PATCH] log: use freopen() to reopen standard streams + +In glibc stdin, stdout & stderr are variables that can be assigned to +(https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html) +however this not necessarily true of other C libraries. + +The gentoo musl porting notes +(https://wiki.gentoo.org/wiki/Musl_porting_notes) +recommend the substitution of + + stdX = fopen(...) + +with + + freopen(..., stdX) + +Taken from: https://github.com/gentoo/gentoo/blob/master/sys-fs/lvm2/files/lvm2-2.03.14-freopen_n2.patch +Signed-off-by: Simon Rowe +--- + lib/log/log.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/lib/log/log.c b/lib/log/log.c +index 7b4d537b3..5f62c048c 100644 +--- a/lib/log/log.c ++++ b/lib/log/log.c +@@ -208,7 +208,11 @@ int reopen_standard_stream(FILE **stream, const char *mode) + + _check_and_replace_standard_log_streams(old_stream, new_stream); + ++#ifdef __GLIBC__ + *stream = new_stream; ++#else ++ freopen(NULL, mode, *stream); ++#endif + return 1; + } + +-- +2.22.3 + diff --git a/package/lvm2/Config.in b/package/lvm2/Config.in new file mode 100644 index 00000000..ddb398d1 --- /dev/null +++ b/package/lvm2/Config.in @@ -0,0 +1,38 @@ +config BR2_PACKAGE_LVM2 + bool "lvm2 & device mapper" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # needs fork() + depends on !BR2_STATIC_LIBS # It fails to build statically + help + This is LVM2, the rewrite of The Linux Logical Volume Manager. + LVM supports enterprise level volume management of disk and + disk subsystems by grouping arbitrary disks into volume + groups. The total capacity of volume groups can be allocated + to logical volumes, which are accessed as regular block + devices. + + The Linux Kernel Device Mapper is the LVM + (Linux Logical Volume Management) Team's implementation of a + minimalistic kernel-space driver that handles volume + management, while keeping knowledge of the underlying device + layout in user-space. This makes it useful for not only LVM, + but EVMS, software raid, and other drivers that create + "virtual" block devices. + + http://www.sourceware.org/lvm2/ + +if BR2_PACKAGE_LVM2 + +config BR2_PACKAGE_LVM2_STANDARD_INSTALL + bool "standard install instead of only dmsetup" + default y + select BR2_PACKAGE_LIBAIO + help + Install the standard suite of lvm2 programs. When this option + is not set, only dmsetup is installed. + +endif + +comment "lvm2 needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/lvm2/lvm2.hash b/package/lvm2/lvm2.hash new file mode 100644 index 00000000..74c5f4f1 --- /dev/null +++ b/package/lvm2/lvm2.hash @@ -0,0 +1,5 @@ +# From https://sourceware.org/ftp/lvm2/sha512.sum +sha512 293430a80c7f599d14e77610456d0f44cac8164e6159cd0e2e287462278a89787e289fdb4d481eb8fd6b5eea07a6535c41cb7fdc3deee83df7fea9bf77dcbdaa LVM2.2.03.23.tgz +# Locally computed sha256 checksums +sha256 e76fbcd2fb97cf202da330301327754d2db5c58b5b4bebd3a8a749393e7603d1 COPYING +sha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a COPYING.LIB diff --git a/package/lvm2/lvm2.mk b/package/lvm2/lvm2.mk new file mode 100644 index 00000000..4fcfddb1 --- /dev/null +++ b/package/lvm2/lvm2.mk @@ -0,0 +1,85 @@ +################################################################################ +# +# lvm2 +# +################################################################################ + +LVM2_VERSION = 2.03.23 +LVM2_SOURCE = LVM2.$(LVM2_VERSION).tgz +LVM2_SITE = https://sourceware.org/ftp/lvm2 +LVM2_INSTALL_STAGING = YES +LVM2_LICENSE = GPL-2.0, LGPL-2.1 +LVM2_LICENSE_FILES = COPYING COPYING.LIB +LVM2_CPE_ID_VENDOR = redhat +# parallel build issues +LVM2_MAKE = $(MAKE1) + +# Make sure that binaries and libraries are installed with write +# permissions for the owner. We disable NLS because it's broken, and +# the package anyway doesn't provide any translation files. +LVM2_CONF_OPTS += \ + --enable-write_install \ + --enable-pkgconfig \ + --enable-cmdlib \ + --enable-dmeventd \ + --disable-nls \ + --with-symvers=no + +LVM2_DEPENDENCIES += host-pkgconf + +# LVM2 uses autoconf, but not automake, and the build system does not +# take into account the toolchain passed at configure time. +LVM2_MAKE_ENV = $(TARGET_CONFIGURE_OPTS) + +# package/readline is GPL-3.0+, so not license compatible +LVM2_CONF_OPTS += --disable-readline + +LVM2_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) +LVM2_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +LVM2_CONF_OPTS += --enable-udev_rules +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +LVM2_CONF_OPTS += --enable-selinux +LVM2_DEPENDENCIES += libselinux +else +LVM2_CONF_OPTS += --disable-selinux +endif + +ifeq ($(BR2_PACKAGE_LVM2_STANDARD_INSTALL),y) +LVM2_DEPENDENCIES += libaio +LVM2_INSTALL_STAGING_OPTS += install +LVM2_INSTALL_TARGET_OPTS += install +ifeq ($(BR2_INIT_SYSTEMD),y) +LVM2_INSTALL_TARGET_OPTS += install_systemd_units install_systemd_generators +endif +else +LVM2_MAKE_OPTS = device-mapper +LVM2_INSTALL_STAGING_OPTS += install_device-mapper +LVM2_INSTALL_TARGET_OPTS += install_device-mapper +endif + +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) +LVM2_CONF_ENV += ac_cv_flag_HAVE_PIE=no +endif + +HOST_LVM2_DEPENDENCIES = host-pkgconf host-libaio +HOST_LVM2_CONF_OPTS = \ + --enable-write_install \ + --enable-pkgconfig \ + --disable-cmdlib \ + --disable-dmeventd \ + --disable-fsadm \ + --disable-readline \ + --disable-selinux \ + --with-confdir=$(HOST_DIR)/etc + +define LVM2_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_MD) + $(call KCONFIG_ENABLE_OPT,CONFIG_BLK_DEV_DM) +endef + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/lxc/0001-src-lxc-syscall_numbers.h-drop-define-1.patch b/package/lxc/0001-src-lxc-syscall_numbers.h-drop-define-1.patch new file mode 100644 index 00000000..d6eb7476 --- /dev/null +++ b/package/lxc/0001-src-lxc-syscall_numbers.h-drop-define-1.patch @@ -0,0 +1,138 @@ +From 964740d28c9a0da52a75d579d7fdfa53df67e925 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 30 Mar 2024 16:50:46 +0100 +Subject: [PATCH] src/lxc/syscall_numbers.h: drop define -1 + +Drop "#define -1" to avoid the following m68k build failure with gcc 12: + +In file included from ../src/lxc/syscall_wrappers.h:19, + from ../src/lxc/mount_utils.h:15, + from ../src/lxc/conf.h:24, + from ../src/lxc/log.h:19, + from ../src/lxc/storage/btrfs.c:20: +../src/lxc/syscall_numbers.h:423:25: error: macro names must be identifiers + 423 | #define -1 + | ^ + +Fixes: + - http://autobuild.buildroot.org/results/f40a517eba86838b11b4b1d6a8a05b8233a3394d + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/lxc/lxc/commit/82fe01821cd5cb8548598d7d93b07d6ef3f6b604 +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + src/lxc/syscall_numbers.h | 13 ------------- + 1 file changed, 13 deletions(-) + +diff --git a/src/lxc/syscall_numbers.h b/src/lxc/syscall_numbers.h +index ae5fdd0641c6..5dc1259fef1c 100644 +--- a/src/lxc/syscall_numbers.h ++++ b/src/lxc/syscall_numbers.h +@@ -51,7 +51,6 @@ + #define __NR_keyctl 5241 + #endif + #else +- #define -1 + #warning "__NR_keyctl not defined for your architecture" + #endif + #endif +@@ -88,7 +87,6 @@ + #define __NR_memfd_create 5314 + #endif + #else +- #define -1 + #warning "__NR_memfd_create not defined for your architecture" + #endif + #endif +@@ -123,7 +121,6 @@ + #define __NR_pivot_root 5151 + #endif + #else +- #define -1 + #warning "__NR_pivot_root not defined for your architecture" + #endif + #endif +@@ -158,7 +155,6 @@ + #define __NR_setns 5303 + #endif + #else +- #define -1 + #warning "__NR_setns not defined for your architecture" + #endif + #endif +@@ -193,7 +189,6 @@ + #define __NR_sethostname 5165 + #endif + #else +- #define -1 + #warning "__NR_sethostname not defined for your architecture" + #endif + #endif +@@ -260,7 +255,6 @@ + #define __NR_signalfd4 5283 + #endif + #else +- #define -1 + #warning "__NR_signalfd4 not defined for your architecture" + #endif + #endif +@@ -295,7 +289,6 @@ + #define __NR_unshare 5262 + #endif + #else +- #define -1 + #warning "__NR_unshare not defined for your architecture" + #endif + #endif +@@ -330,7 +323,6 @@ + #define __NR_bpf 5315 + #endif + #else +- #define -1 + #warning "__NR_bpf not defined for your architecture" + #endif + #endif +@@ -365,7 +357,6 @@ + #define __NR_faccessat 5259 + #endif + #else +- #define -1 + #warning "__NR_faccessat not defined for your architecture" + #endif + #endif +@@ -420,7 +411,6 @@ + #define __NR_seccomp 5312 + #endif + #else +- #define -1 + #warning "__NR_seccomp not defined for your architecture" + #endif + #endif +@@ -455,7 +445,6 @@ + #define __NR_gettid 5178 + #endif + #else +- #define -1 + #warning "__NR_gettid not defined for your architecture" + #endif + #endif +@@ -494,7 +483,6 @@ + #define __NR_execveat 5316 + #endif + #else +- #define -1 + #warning "__NR_execveat not defined for your architecture" + #endif + #endif +@@ -733,7 +721,6 @@ + #define __NR_personality (132 + 5000) + #endif + #else +- #define -1 + #warning "__NR_personality not defined for your architecture" + #endif + #endif +-- +2.43.0 + diff --git a/package/lxc/Config.in b/package/lxc/Config.in new file mode 100644 index 00000000..a3f9be0c --- /dev/null +++ b/package/lxc/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_LXC + bool "lxc" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + # build system forcefully builds a shared library + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 # setns() system call + depends on !BR2_TOOLCHAIN_USES_UCLIBC # no fexecve + help + Linux Containers (LXC), provides the ability to group and + isolate of a set of processes in a jail by virtualizing and + accounting the kernel resources. It is similar to + Linux-Vserver or Openvz. + + https://linuxcontainers.org/ + +comment "lxc needs a glibc or musl toolchain w/ threads, headers >= 3.0, dynamic library, gcc >= 4.7" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 \ + || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 \ + || BR2_STATIC_LIBS \ + || BR2_TOOLCHAIN_USES_UCLIBC diff --git a/package/lxc/lxc.hash b/package/lxc/lxc.hash new file mode 100644 index 00000000..8b3365dd --- /dev/null +++ b/package/lxc/lxc.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 2693a4c654dcfdafb3aa95c262051d8122afa1b6f5cef1920221ebbdee934d07 lxc-5.0.3.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 LICENSE.GPL2 +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSE.LGPL2.1 diff --git a/package/lxc/lxc.mk b/package/lxc/lxc.mk new file mode 100644 index 00000000..b2afb978 --- /dev/null +++ b/package/lxc/lxc.mk @@ -0,0 +1,81 @@ +################################################################################ +# +# lxc +# +################################################################################ + +LXC_VERSION = 5.0.3 +LXC_SITE = https://linuxcontainers.org/downloads/lxc +LXC_LICENSE = GPL-2.0 (some tools), LGPL-2.1+ +LXC_LICENSE_FILES = LICENSE.GPL2 LICENSE.LGPL2.1 +LXC_CPE_ID_VENDOR = linuxcontainers +LXC_DEPENDENCIES = host-pkgconf +LXC_INSTALL_STAGING = YES + +LXC_CONF_OPTS = \ + -Dapparmor=false \ + -Dexamples=false \ + -Dman=false + +ifeq ($(BR2_PACKAGE_BASH_COMPLETION),y) +LXC_DEPENDENCIES += bash-completion +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +LXC_CONF_OPTS += -Dcapabilities=true +LXC_DEPENDENCIES += libcap +else +LXC_CONF_OPTS += -Dcapabilities=false +endif + +ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) +LXC_CONF_OPTS += -Dseccomp=true +LXC_DEPENDENCIES += libseccomp +else +LXC_CONF_OPTS += -Dseccomp=false +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +LXC_CONF_OPTS += -Dselinux=true +LXC_DEPENDENCIES += libselinux +else +LXC_CONF_OPTS += -Dselinux=false +endif + +ifeq ($(BR2_PACKAGE_LIBURING),y) +LXC_CONF_OPTS += -Dio-uring-event-loop=true +LXC_DEPENDENCIES += liburing +else +LXC_CONF_OPTS += -Dio-uring-event-loop=false +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +LXC_CONF_OPTS += -Dpam-cgroup=true +LXC_DEPENDENCIES += linux-pam +else +LXC_CONF_OPTS += -Dpam-cgroup=false +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LXC_CONF_OPTS += -Dopenssl=true +LXC_DEPENDENCIES += openssl +else +LXC_CONF_OPTS += -Dopenssl=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +LXC_CONF_OPTS += -Dsd-bus=enabled +LXC_DEPENDENCIES += systemd +else +LXC_CONF_OPTS += -Dsd-bus=disabled +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +LXC_CONF_OPTS += -Dinit-script=systemd +else ifeq ($(BR2_INIT_SYSV),y) +LXC_CONF_OPTS += -Dinit-script=sysvinit +else +LXC_CONF_OPTS += -Dinit-script= +endif + +$(eval $(meson-package)) diff --git a/package/lynx/Config.in b/package/lynx/Config.in new file mode 100644 index 00000000..a338f836 --- /dev/null +++ b/package/lynx/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LYNX + bool "lynx" + depends on BR2_USE_MMU + select BR2_PACKAGE_SLANG if !BR2_PACKAGE_NCURSES + select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_GNUTLS + help + The Text Web-Browser. + + http://lynx.invisible-island.net/ diff --git a/package/lynx/lynx.hash b/package/lynx/lynx.hash new file mode 100644 index 00000000..d9a0fc42 --- /dev/null +++ b/package/lynx/lynx.hash @@ -0,0 +1,3 @@ +# Locally calculated: +sha256 7374b89936d991669e101f4e97f2c9592036e1e8cdaa7bafc259a77ab6fb07ce lynx2.9.2.tar.bz2 +sha256 8406a30ff3134ec23cf752d1ceda92ddaabbe41b4f2dc07ea3cfa139de12d6d6 COPYING diff --git a/package/lynx/lynx.mk b/package/lynx/lynx.mk new file mode 100644 index 00000000..4f23b689 --- /dev/null +++ b/package/lynx/lynx.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# lynx +# +################################################################################ + +LYNX_VERSION = 2.9.2 +LYNX_SOURCE = lynx$(LYNX_VERSION).tar.bz2 +LYNX_SITE = https://invisible-mirror.net/archives/lynx/tarballs +LYNX_LICENSE = GPL-2.0 +LYNX_LICENSE_FILES = COPYING +LYNX_CPE_ID_VALID = YES + +LYNX_DEPENDENCIES = host-pkgconf $(TARGET_NLS_DEPENDENCIES) + +ifeq ($(BR2_REPRODUCIBLE),y) +# configuration info leaks build paths +LYNX_CONF_OPTS += --disable-config-info +# disable build timestamp +LYNX_CFLAGS += -DNO_BUILDSTAMP +endif + +ifeq ($(BR2_PACKAGE_NCURSES),y) +LYNX_DEPENDENCIES += ncurses +LYNX_CONF_OPTS += --with-screen=ncurses$(if $(BR2_PACKAGE_NCURSES_WCHAR),w) +else ifeq ($(BR2_PACKAGE_SLANG),y) +LYNX_DEPENDENCIES += slang +LYNX_CONF_OPTS += --with-screen=slang +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LYNX_DEPENDENCIES += openssl +LYNX_CONF_OPTS += --with-ssl=$(STAGING_DIR)/usr +LYNX_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs openssl` +else ifeq ($(BR2_PACKAGE_GNUTLS),y) +LYNX_DEPENDENCIES += gnutls +LYNX_CONF_OPTS += --with-gnutls +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LYNX_DEPENDENCIES += zlib +LYNX_CONF_OPTS += --with-zlib +else +LYNX_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_LIBIDN),y) +LYNX_DEPENDENCIES += libidn +LYNX_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs libidn` +endif + +LYNX_CONF_ENV = \ + LDFLAGS="$(TARGET_LDFLAGS) $(LYNX_LIBS)" \ + CFLAGS="$(TARGET_CFLAGS) $(LYNX_CFLAGS)" + +$(eval $(autotools-package)) diff --git a/package/lz4/0001-build-Support-BUILD_SHARED-no.patch b/package/lz4/0001-build-Support-BUILD_SHARED-no.patch new file mode 100644 index 00000000..d2d8639a --- /dev/null +++ b/package/lz4/0001-build-Support-BUILD_SHARED-no.patch @@ -0,0 +1,42 @@ +From 5ccbd38277989ae6a728171d59ae03bad6f2f4d5 Mon Sep 17 00:00:00 2001 +From: Fotis Xenakis +Date: Tue, 13 Sep 2022 20:09:36 +0300 +Subject: [PATCH] build: Support BUILD_SHARED=no + +Since e585a438c714652e866a59371b287f52aa4d2dc3, the BUILD_SHARED +Makefile variable only takes effect for the install target (i.e. the +shared libraries always built). This restores the original behaviour. + +[Retrieved from: +https://github.com/lz4/lz4/commit/5ccbd38277989ae6a728171d59ae03bad6f2f4d5] +Signed-off-by: Fabrice Fontaine +--- + lib/Makefile | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/lib/Makefile b/lib/Makefile +index 06503cb2a..ee262c0df 100644 +--- a/lib/Makefile ++++ b/lib/Makefile +@@ -112,17 +112,21 @@ liblz4-dll.o: liblz4-dll.rc + $(WINDRES) -i liblz4-dll.rc -o liblz4-dll.o + + $(LIBLZ4): $(SRCFILES) liblz4-dll.o ++ifeq ($(BUILD_SHARED),yes) + @echo compiling dynamic library $(LIBVER) + $(CC) $(FLAGS) -DLZ4_DLL_EXPORT=1 -shared $^ -o dll/$@.dll -Wl,--out-implib,dll/$(LIBLZ4_EXP) ++endif + + else # not windows + + $(LIBLZ4): $(SRCFILES) ++ifeq ($(BUILD_SHARED),yes) + @echo compiling dynamic library $(LIBVER) + $(CC) $(FLAGS) -shared $^ -fPIC -fvisibility=hidden $(SONAME_FLAGS) -o $@ + @echo creating versioned links + $(LN_SF) $@ liblz4.$(SHARED_EXT_MAJOR) + $(LN_SF) $@ liblz4.$(SHARED_EXT) ++endif + + endif + diff --git a/package/lz4/Config.in b/package/lz4/Config.in new file mode 100644 index 00000000..06a4e93d --- /dev/null +++ b/package/lz4/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_LZ4 + bool "lz4" + help + LZ4 is a very fast lossless compression algorithm, providing + compression speed at 400 MB/s per core, scalable with + multi-cores CPU. It also features an extremely fast decoder, + with speed in multiple GB/s per core, typically reaching RAM + speed limits on multi-core systems. + + http://www.lz4.org/ + +if BR2_PACKAGE_LZ4 + +config BR2_PACKAGE_LZ4_PROGS + bool "install programs" + help + lz4, lz4c, unlz4 and lz4cat binaries + +endif diff --git a/package/lz4/lz4.hash b/package/lz4/lz4.hash new file mode 100644 index 00000000..04bd118c --- /dev/null +++ b/package/lz4/lz4.hash @@ -0,0 +1,4 @@ +# sha256 locally computed +sha256 0b0e3aa07c8c063ddf40b082bdf7e37a1562bda40a0ff5272957f3e987e0e54b lz4-1.9.4.tar.gz +sha256 8b58c446121a109ccf32edc094bba3010a3d85e4ee3702950db55e4d3e87736c lib/LICENSE +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 programs/COPYING diff --git a/package/lz4/lz4.mk b/package/lz4/lz4.mk new file mode 100644 index 00000000..202dc172 --- /dev/null +++ b/package/lz4/lz4.mk @@ -0,0 +1,58 @@ +################################################################################ +# +# lz4 +# +################################################################################ + +LZ4_VERSION = 1.9.4 +LZ4_SITE = $(call github,lz4,lz4,v$(LZ4_VERSION)) +LZ4_INSTALL_STAGING = YES +LZ4_LICENSE = BSD-2-Clause (library), GPL-2.0+ (programs) +LZ4_LICENSE_FILES = lib/LICENSE programs/COPYING +LZ4_CPE_ID_VALID = YES + +ifeq ($(BR2_STATIC_LIBS),y) +LZ4_MAKE_OPTS += BUILD_SHARED=no +else ifeq ($(BR2_SHARED_LIBS),y) +LZ4_MAKE_OPTS += BUILD_STATIC=no +endif + +define HOST_LZ4_BUILD_CMDS + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) lib + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) lz4 +endef + +define HOST_LZ4_INSTALL_CMDS + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) PREFIX=$(HOST_DIR) \ + install -C $(@D) +endef + +LZ4_DIRS = lib + +ifeq ($(BR2_PACKAGE_LZ4_PROGS),y) +LZ4_DIRS += programs +endif + +define LZ4_BUILD_CMDS + $(foreach dir,$(LZ4_DIRS),\ + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(LZ4_MAKE_OPTS) \ + -C $(@D)/$(dir) + ) +endef + +define LZ4_INSTALL_STAGING_CMDS + $(foreach dir,$(LZ4_DIRS),\ + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) DESTDIR=$(STAGING_DIR) \ + PREFIX=/usr $(LZ4_MAKE_OPTS) -C $(@D)/$(dir) install + ) +endef + +define LZ4_INSTALL_TARGET_CMDS + $(foreach dir,$(LZ4_DIRS),\ + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) DESTDIR=$(TARGET_DIR) \ + PREFIX=/usr $(LZ4_MAKE_OPTS) -C $(@D)/$(dir) install + ) +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/lzip/Config.in b/package/lzip/Config.in new file mode 100644 index 00000000..c07ef8d6 --- /dev/null +++ b/package/lzip/Config.in @@ -0,0 +1,15 @@ +comment "lzip needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_LZIP + bool "lzip" + depends on BR2_INSTALL_LIBSTDCPP + help + Lzip is a lossless data compressor with a user interface + similar to the one of gzip or bzip2. + Lzip is about as fast as gzip, compresses most files more than + bzip2, and is better than both from a data recovery + perspective. Lzip is a clean implementation of the LZMA + algorithm. + + https://www.nongnu.org/lzip/lzip.html diff --git a/package/lzip/lzip.hash b/package/lzip/lzip.hash new file mode 100644 index 00000000..48ee8175 --- /dev/null +++ b/package/lzip/lzip.hash @@ -0,0 +1,4 @@ +# From https://lists.nongnu.org/archive/html/lzip-bug/2022-02/msg00000.html +sha256 4792c047ddf15ef29d55ba8e68a1a21e0cb7692d87ecdf7204419864582f280d lzip-1.23.tar.gz +# Locally calculated +sha256 3d77c1a58fbde5ddba612d1fe09965e20a3804953eca12e8c1892298bb8a5eef COPYING diff --git a/package/lzip/lzip.mk b/package/lzip/lzip.mk new file mode 100644 index 00000000..9e09e578 --- /dev/null +++ b/package/lzip/lzip.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# lzip +# +################################################################################ + +LZIP_VERSION = 1.23 +LZIP_SITE = http://download.savannah.gnu.org/releases/lzip +LZIP_LICENSE = GPL-2.0+ +LZIP_LICENSE_FILES = COPYING + +# The package is a dependency to ccache so ccache cannot be a dependency +HOST_LZIP_ADD_CCACHE_DEPENDENCY = NO + +define LZIP_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) ./configure --prefix=/usr \ + $(TARGET_CONFIGURE_OPTS) ) +endef + +define HOST_LZIP_CONFIGURE_CMDS + (cd $(@D); $(HOST_MAKE_ENV) ./configure --prefix=$(HOST_DIR) \ + $(HOST_CONFIGURE_OPTS) CC="$(HOSTCC_NOCCACHE)" CXX="$(HOSTCXX_NOCCACHE)") +endef + +define LZIP_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_LZIP_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define LZIP_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +define HOST_LZIP_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install +endef + +# It's not autotools-based +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/lzlib/Config.in b/package/lzlib/Config.in new file mode 100644 index 00000000..59a2e6d5 --- /dev/null +++ b/package/lzlib/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LZLIB + bool "lzlib" + depends on BR2_PACKAGE_LUA + select BR2_PACKAGE_ZLIB + help + This package provides a library to access zlib library + functions and also to read/write gzip files using an + interface similar to the base io package. + + https://github.com/LuaDist/lzlib diff --git a/package/lzlib/lzlib.hash b/package/lzlib/lzlib.hash new file mode 100644 index 00000000..4bb4c52c --- /dev/null +++ b/package/lzlib/lzlib.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 cbb0cac5825e940b4ea2f31a336d2aaf6db39847d456920afd8e443804420dbb lzlib-0.4.3.tar.gz +sha256 f817d4a37077e94e9adf379f46ba5cc0b68775d7add2bbd5b2ca68ba140ad5bb lzlib.c diff --git a/package/lzlib/lzlib.mk b/package/lzlib/lzlib.mk new file mode 100644 index 00000000..74624d50 --- /dev/null +++ b/package/lzlib/lzlib.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# lzlib +# +################################################################################ + +LZLIB_VERSION = 0.4.3 +LZLIB_SITE = $(call github,LuaDist,lzlib,$(LZLIB_VERSION)) +LZLIB_DEPENDENCIES = lua zlib +LZLIB_LICENSE = MIT +LZLIB_LICENSE_FILES = lzlib.c +LZLIB_CONF_OPTS = -DINSTALL_CMOD="/usr/lib/lua/$(LUAINTERPRETER_ABIVER)" \ + -DINSTALL_LMOD="/usr/share/lua/$(LUAINTERPRETER_ABIVER)" + +$(eval $(cmake-package)) diff --git a/package/lzma-alone/Config.in.host b/package/lzma-alone/Config.in.host new file mode 100644 index 00000000..053b8696 --- /dev/null +++ b/package/lzma-alone/Config.in.host @@ -0,0 +1,18 @@ +config BR2_PACKAGE_HOST_LZMA_ALONE + bool "host lzma-alone" + help + LZMA has two well-known command-line tools: + 1. lzma from LZMA SDK + 2. lzma from XZ Utils (previously LZMA Utils) + + This package provides the former one which: + 1. Gives more control over compression parameters + 2. Gets named lzma_alone to allow coexistence + + This tool may be used to prepare firmwares for bootloaders + with limited LZMA support. + E.g. Broadcom's CFE bootloader for MIPS BCM47xx devices is + known to fail to boot images using LZMA compression with + dictionary. + + https://www.7-zip.org/sdk.html diff --git a/package/lzma-alone/lzma-alone.hash b/package/lzma-alone/lzma-alone.hash new file mode 100644 index 00000000..33901d16 --- /dev/null +++ b/package/lzma-alone/lzma-alone.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/ +sha1 fbe4d6c02202d65fae75c2db0e3cdc542ca41e6d lzma922.tar.bz2 +# Locally computed +sha256 9aade84f229fb25f7aef39d8866b375fe6d35a9e18098d7cd86a99e294902944 lzma922.tar.bz2 +sha256 65cd2f7b76266889cbdcec55ab8ce6e845beabb5f450d58287439b25666e3b6a lzma.txt diff --git a/package/lzma-alone/lzma-alone.mk b/package/lzma-alone/lzma-alone.mk new file mode 100644 index 00000000..2ed6c2c7 --- /dev/null +++ b/package/lzma-alone/lzma-alone.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# lzma-alone +# +################################################################################ + +LZMA_ALONE_VERSION = 9.22 +LZMA_ALONE_SITE = https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK +LZMA_ALONE_SOURCE = lzma922.tar.bz2 +LZMA_ALONE_STRIP_COMPONENTS = 0 +LZMA_ALONE_LICENSE = Public Domain +LZMA_ALONE_LICENSE_FILES = lzma.txt + +define HOST_LZMA_ALONE_BUILD_CMDS + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) \ + -C $(@D)/C/Util/Lzma -f makefile.gcc + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) \ + -C $(@D)/CPP/7zip/Bundles/LzmaCon -f makefile.gcc +endef + +define HOST_LZMA_ALONE_INSTALL_CMDS + $(INSTALL) -D -m 0755 \ + $(@D)/CPP/7zip/Bundles/LzmaCon/lzma \ + $(HOST_DIR)/bin/lzma_alone +endef + +$(eval $(host-generic-package)) diff --git a/package/lzma/0001-Remove-static-from-LDFLAGS.patch b/package/lzma/0001-Remove-static-from-LDFLAGS.patch new file mode 100644 index 00000000..9a33e44b --- /dev/null +++ b/package/lzma/0001-Remove-static-from-LDFLAGS.patch @@ -0,0 +1,68 @@ +From 1b33f6d13e5c25a2500ee312068c08a3d3811a5f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Vincent=20Stehl=C3=A9?= +Date: Wed, 3 Dec 2014 21:32:02 +0100 +Subject: [PATCH] Remove -static from LDFLAGS +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Buildroot does not enable static libraries by default for host builds. Having +-static hardcoded in the LDFLAGS breaks the build, so remove it. + +Signed-off-by: Vincent Stehlé +--- + src/lzmadec/Makefile.am | 1 - + src/lzmadec/Makefile.in | 1 - + src/lzmainfo/Makefile.am | 1 - + src/lzmainfo/Makefile.in | 1 - + 4 files changed, 4 deletions(-) + +diff --git a/src/lzmadec/Makefile.am b/src/lzmadec/Makefile.am +index 7322b2a..13edec8 100644 +--- a/src/lzmadec/Makefile.am ++++ b/src/lzmadec/Makefile.am +@@ -2,6 +2,5 @@ bin_PROGRAMS = lzmadec + lzmadec_SOURCES = lzmadec.c + lzmadec_LDADD = @top_builddir@/src/liblzmadec/liblzmadec.la + AM_CPPFLAGS = -I@top_srcdir@/src/liblzmadec +-AM_LDFLAGS = -static + + dist_man_MANS = lzmadec.1 +diff --git a/src/lzmadec/Makefile.in b/src/lzmadec/Makefile.in +index 5af9240..4ed1de1 100644 +--- a/src/lzmadec/Makefile.in ++++ b/src/lzmadec/Makefile.in +@@ -185,7 +185,6 @@ top_srcdir = @top_srcdir@ + lzmadec_SOURCES = lzmadec.c + lzmadec_LDADD = @top_builddir@/src/liblzmadec/liblzmadec.la + AM_CPPFLAGS = -I@top_srcdir@/src/liblzmadec +-AM_LDFLAGS = -static + dist_man_MANS = lzmadec.1 + all: all-am + +diff --git a/src/lzmainfo/Makefile.am b/src/lzmainfo/Makefile.am +index b5b01ec..e280bff 100644 +--- a/src/lzmainfo/Makefile.am ++++ b/src/lzmainfo/Makefile.am +@@ -2,6 +2,5 @@ bin_PROGRAMS = lzmainfo + lzmainfo_SOURCES = lzmainfo.c + lzmainfo_LDADD = @top_builddir@/src/liblzmadec/liblzmadec.la + AM_CPPFLAGS = -I@top_srcdir@/src/liblzmadec +-AM_LDFLAGS = -static + + dist_man_MANS = lzmainfo.1 +diff --git a/src/lzmainfo/Makefile.in b/src/lzmainfo/Makefile.in +index 6a2127a..f1f3441 100644 +--- a/src/lzmainfo/Makefile.in ++++ b/src/lzmainfo/Makefile.in +@@ -185,7 +185,6 @@ top_srcdir = @top_srcdir@ + lzmainfo_SOURCES = lzmainfo.c + lzmainfo_LDADD = @top_builddir@/src/liblzmadec/liblzmadec.la + AM_CPPFLAGS = -I@top_srcdir@/src/liblzmadec +-AM_LDFLAGS = -static + dist_man_MANS = lzmainfo.1 + all: all-am + +-- +2.1.3 + diff --git a/package/lzma/lzma.hash b/package/lzma/lzma.hash new file mode 100644 index 00000000..940c40e6 --- /dev/null +++ b/package/lzma/lzma.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 02aa57f995d15b7acb7c2496d88a39fb0124ea00bf027cc61dd24eddb5942dff lzma-4.32.7.tar.xz +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING.GPLv2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING.GPLv3 +sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 COPYING.LGPLv2.1 diff --git a/package/lzma/lzma.mk b/package/lzma/lzma.mk new file mode 100644 index 00000000..095382d1 --- /dev/null +++ b/package/lzma/lzma.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# lzma +# +################################################################################ + +LZMA_VERSION = 4.32.7 +LZMA_SOURCE = lzma-$(LZMA_VERSION).tar.xz +LZMA_SITE = http://tukaani.org/lzma +LZMA_LICENSE = LGPL-2.1+ (lzmadec library, lzmainfo, LzmaDecode), GPL-2.0+ (lzma program, lzgrep and lzmore scripts), GPL-3.0+ (tests) +LZMA_LICENSE_FILES = COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv2.1 + +$(eval $(host-autotools-package)) + +LZMA = $(HOST_DIR)/bin/lzma diff --git a/package/lzo/Config.in b/package/lzo/Config.in new file mode 100644 index 00000000..1b6f80bd --- /dev/null +++ b/package/lzo/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LZO + bool "lzo" + help + Portable lossless data compression library written in ANSI C. + + http://www.oberhumer.com/opensource/lzo/ diff --git a/package/lzo/lzo.hash b/package/lzo/lzo.hash new file mode 100644 index 00000000..6eb9c505 --- /dev/null +++ b/package/lzo/lzo.hash @@ -0,0 +1,5 @@ +# From http://www.oberhumer.com/opensource/lzo/ +sha1 4924676a9bae5db58ef129dc1cebce3baa3c4b5d lzo-2.10.tar.gz +# Locally computed +sha256 c0f892943208266f9b6543b3ae308fab6284c5c90e627931446fb49b4221a072 lzo-2.10.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/lzo/lzo.mk b/package/lzo/lzo.mk new file mode 100644 index 00000000..76c00615 --- /dev/null +++ b/package/lzo/lzo.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# lzo +# +################################################################################ + +LZO_VERSION = 2.10 +LZO_SITE = http://www.oberhumer.com/opensource/lzo/download +LZO_LICENSE = GPL-2.0+ +LZO_LICENSE_FILES = COPYING +LZO_CPE_ID_VALID = YES +LZO_INSTALL_STAGING = YES +LZO_SUPPORTS_IN_SOURCE_BUILD = NO + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +LZO_CONF_OPTS += -DENABLE_SHARED=ON +else +LZO_CONF_OPTS += -DENABLE_SHARED=OFF +endif + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +LZO_CONF_OPTS += -DENABLE_STATIC=ON +else +LZO_CONF_OPTS += -DENABLE_STATIC=OFF +endif + +HOST_LZO_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=OFF + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/lzop/0001-allow-overriding-modification-time.patch b/package/lzop/0001-allow-overriding-modification-time.patch new file mode 100644 index 00000000..5ffc64cd --- /dev/null +++ b/package/lzop/0001-allow-overriding-modification-time.patch @@ -0,0 +1,42 @@ +From: =?UTF-8?q?Florian=20B=C3=A4uerle?= +Date: Thu, 25 Oct 2018 17:26:30 +0200 +Subject: [PATCH] allow overriding modification time + +This patch allows to set the mtime of the lzop archive to +$SOURCE_DATE_EPOCH, required for reproducible build. It was submitted to +pengutronix by florian Bäuerle in october 2018. + +https://git.pengutronix.de/cgit/ptxdist/tree/patches/lzop-1.04/0002-allow-overriding-modification-time.patch + +Signed-off-by: Casey Reeves +--- + src/lzop.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/src/lzop.c b/src/lzop.c +index a540ad9c4d33..c2f877d16f92 100644 +--- a/src/lzop.c ++++ b/src/lzop.c +@@ -712,6 +712,7 @@ void init_compress_header(header_t *h, const file_t *fip, const file_t *fop) + assert(opt_method > 0); + assert(opt_level > 0); + assert(fip->st.st_mode == 0 || S_ISREG(fip->st.st_mode)); ++ const char *source_date_epoch = getenv("SOURCE_DATE_EPOCH"); + + memset(h,0,sizeof(header_t)); + +@@ -748,7 +749,13 @@ void init_compress_header(header_t *h, const file_t *fip, const file_t *fop) + + h->mode = fix_mode_for_header(fip->st.st_mode); + +- if (fip->st.st_mtime > 0) ++ if (source_date_epoch) ++ { ++ time_t mtime = strtoul(source_date_epoch, NULL, 0); ++ h->mtime_low = (lzo_uint32) (mtime); ++ h->mtime_high = (lzo_uint32) ((mtime >> 16) >> 16); ++ } ++ else if (fip->st.st_mtime > 0) + { + h->mtime_low = (lzo_uint32) (fip->st.st_mtime); + h->mtime_high = (lzo_uint32) ((fip->st.st_mtime >> 16) >> 16); diff --git a/package/lzop/Config.in b/package/lzop/Config.in new file mode 100644 index 00000000..236f21d3 --- /dev/null +++ b/package/lzop/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LZOP + bool "lzop" + select BR2_PACKAGE_LZO + help + lzop is a file compressor which is very similar to gzip. + lzop uses the LZO data compression library for compression + services. + + http://www.lzop.org/ diff --git a/package/lzop/lzop.hash b/package/lzop/lzop.hash new file mode 100644 index 00000000..8cf31d16 --- /dev/null +++ b/package/lzop/lzop.hash @@ -0,0 +1,4 @@ +# From http://www.lzop.org +sha256 7e72b62a8a60aff5200a047eea0773a8fb205caf7acbe1774d95147f305a2f41 lzop-1.04.tar.gz +# Locally calculated +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/lzop/lzop.mk b/package/lzop/lzop.mk new file mode 100644 index 00000000..d32d2d1d --- /dev/null +++ b/package/lzop/lzop.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# lzop +# +################################################################################ + +LZOP_VERSION = 1.04 +LZOP_SITE = http://www.lzop.org/download +LZOP_LICENSE = GPL-2.0+ +LZOP_LICENSE_FILES = COPYING +LZOP_DEPENDENCIES = lzo +HOST_LZOP_DEPENDENCIES = host-lzo + +# lzop uses libtool 2.4.2.418, which is right between 2.4.2 and +# 2.4.4. While our patch for 2.4 is also supposed to work up to and +# including 2.4.2.x, it does not work for libtool 2.4.2.418, which +# requires the patch for 2.4.4. So we disable the libtool patching +# from autotools-package and do our own. +LZOP_LIBTOOL_PATCH = NO + +define LZOP_LIBTOOL_FIXUP + patch -i support/libtool/buildroot-libtool-v2.4.4.patch $(@D)/autoconf/ltmain.sh +endef +LZOP_POST_PATCH_HOOKS += LZOP_LIBTOOL_FIXUP +HOST_LZOP_POST_PATCH_HOOKS += LZOP_LIBTOOL_FIXUP + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) + +LZOP = $(HOST_DIR)/bin/lzop diff --git a/package/m4/m4.hash b/package/m4/m4.hash new file mode 100644 index 00000000..a81f4fab --- /dev/null +++ b/package/m4/m4.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 63aede5c6d33b6d9b13511cd0be2cac046f2e70fd0a07aa9573a04a82783af96 m4-1.4.19.tar.xz +# License files, locally calculated +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 COPYING diff --git a/package/m4/m4.mk b/package/m4/m4.mk new file mode 100644 index 00000000..39ad898b --- /dev/null +++ b/package/m4/m4.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# m4 +# +################################################################################ + +M4_VERSION = 1.4.19 +M4_SOURCE = m4-$(M4_VERSION).tar.xz +M4_SITE = $(BR2_GNU_MIRROR)/m4 +M4_LICENSE = GPL-3.0+ +M4_LICENSE_FILES = COPYING + +$(eval $(host-autotools-package)) diff --git a/package/macchanger/0001-Fix-missing-include-for-caddr_t.patch b/package/macchanger/0001-Fix-missing-include-for-caddr_t.patch new file mode 100644 index 00000000..cf5ade8c --- /dev/null +++ b/package/macchanger/0001-Fix-missing-include-for-caddr_t.patch @@ -0,0 +1,35 @@ +From 4eeb901b7aadb167e44f476fd665f7fedf491e51 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Fri, 6 May 2016 09:28:36 +0200 +Subject: [PATCH] Fix missing include for caddr_t +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +caddr_t is defined in . This header file must be included to fix +build with the musl C library: + +netinfo.c: In function 'mc_net_info_get_permanent_mac': +netinfo.c:116:28: error: 'caddr_t' undeclared (first use in this function) + req.ifr_data = (caddr_t)epa; + +Signed-off-by: Jörg Krause +--- + src/netinfo.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/netinfo.c b/src/netinfo.c +index 3525123..1aa3293 100644 +--- a/src/netinfo.c ++++ b/src/netinfo.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + + #include + #include +-- +2.8.2 + diff --git a/package/macchanger/Config.in b/package/macchanger/Config.in new file mode 100644 index 00000000..e1a03e12 --- /dev/null +++ b/package/macchanger/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_MACCHANGER + bool "macchanger" + help + A GNU/Linux utility for viewing/manipulating the MAC address + of network interfaces + + http://www.gnu.org/software/macchanger diff --git a/package/macchanger/macchanger.hash b/package/macchanger/macchanger.hash new file mode 100644 index 00000000..dbcfa6cf --- /dev/null +++ b/package/macchanger/macchanger.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 dae2717c270fd5f62d790dbf80c19793c651b1b26b62c101b82d5fdf25a845bf macchanger-1.7.0.tar.gz +# Locally computed +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/macchanger/macchanger.mk b/package/macchanger/macchanger.mk new file mode 100644 index 00000000..f2cbce49 --- /dev/null +++ b/package/macchanger/macchanger.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# macchanger +# +################################################################################ + +MACCHANGER_VERSION = 1.7.0 +MACCHANGER_SITE = https://github.com/alobbs/macchanger/releases/download/$(MACCHANGER_VERSION) +MACCHANGER_LICENSE = GPL-2.0+ +MACCHANGER_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/madplay/0001-switch-to-new-alsa-api.patch b/package/madplay/0001-switch-to-new-alsa-api.patch new file mode 100644 index 00000000..60d7bd37 --- /dev/null +++ b/package/madplay/0001-switch-to-new-alsa-api.patch @@ -0,0 +1,173 @@ +Switch madplay to the new API. This is done thanks to a patch written +by Micha Nelissen and available at +http://article.gmane.org/gmane.comp.audio.mad.devel/729. + +--- madplay-0.15.2b/audio_alsa.c 2008-10-18 15:10:16.000000000 +0200 ++++ madplay-0.15.2b/audio_alsa.c.new 2008-10-18 15:03:27.000000000 +0200 +@@ -28,31 +28,30 @@ + + #include + +-#define ALSA_PCM_OLD_HW_PARAMS_API +-#define ALSA_PCM_OLD_SW_PARAMS_API + #include + + #include + + #include "audio.h" + +-char *buf = NULL; +-int paused = 0; ++#define BUFFER_TIME_MAX 500000 + +-int rate = -1; +-int channels = -1; +-int bitdepth = -1; +-int sample_size = -1; +- +-int buffer_time = 500000; +-int period_time = 100000; +-char *defaultdev = "plughw:0,0"; ++unsigned char *buf = NULL; ++int paused = 0; ++ ++unsigned int rate = 0; ++unsigned int channels = -1; ++unsigned int bitdepth = -1; ++unsigned int sample_size = -1; ++ ++unsigned int buffer_time; ++unsigned int period_time; ++char *defaultdev = "plughw:0,0"; + + snd_pcm_hw_params_t *alsa_hwparams; + snd_pcm_sw_params_t *alsa_swparams; + +-snd_pcm_sframes_t buffer_size; +-snd_pcm_sframes_t period_size; ++snd_pcm_uframes_t buffer_size; + + snd_pcm_format_t alsa_format = -1; + snd_pcm_access_t alsa_access = SND_PCM_ACCESS_MMAP_INTERLEAVED; +@@ -66,14 +65,20 @@ + snd_pcm_hw_params_t *params, + snd_pcm_access_t access) + { +- int err, dir; +- ++ int err; ++ + /* choose all parameters */ + err = snd_pcm_hw_params_any(handle,params); + if (err < 0) { + printf("Access type not available for playback: %s\n", snd_strerror(err)); + return err; + } ++ /* set the access type */ ++ err = snd_pcm_hw_params_set_access(handle, params, alsa_access); ++ if (err < 0) { ++ printf("Sample format not available for playback: %s\n", snd_strerror(err)); ++ return err; ++ } + /* set the sample format */ + err = snd_pcm_hw_params_set_format(handle, params, alsa_format); + if (err < 0) { +@@ -87,29 +92,38 @@ + return err; + } + /* set the stream rate */ +- err = snd_pcm_hw_params_set_rate_near(handle, params, rate, 0); ++ err = snd_pcm_hw_params_set_rate(handle, params, rate, 0); + if (err < 0) { + printf("Rate %iHz not available for playback: %s\n", rate, snd_strerror(err)); + return err; + } +- if (err != rate) { +- printf("Rate doesn't match (requested %iHz, get %iHz)\n", rate, err); +- return -EINVAL; +- } ++ err = snd_pcm_hw_params_get_buffer_time_max(params, &buffer_time, NULL); ++ if (err < 0) { ++ printf("Unable to retrieve buffer time: %s\n", snd_strerror(err)); ++ return err; ++ } ++ if (buffer_time > BUFFER_TIME_MAX) ++ buffer_time = BUFFER_TIME_MAX; + /* set buffer time */ +- err = snd_pcm_hw_params_set_buffer_time_near(handle, params, buffer_time, &dir); ++ err = snd_pcm_hw_params_set_buffer_time_near(handle, params, &buffer_time, 0); + if (err < 0) { + printf("Unable to set buffer time %i for playback: %s\n", buffer_time, snd_strerror(err)); + return err; + } +- buffer_size = snd_pcm_hw_params_get_buffer_size(params); ++ if (period_time * 4 > buffer_time) ++ period_time = buffer_time / 4; + /* set period time */ +- err = snd_pcm_hw_params_set_period_time_near(handle, params, period_time, &dir); ++ err = snd_pcm_hw_params_set_period_time_near(handle, params, &period_time, NULL); + if (err < 0) { + printf("Unable to set period time %i for playback: %s\n", period_time, snd_strerror(err)); + return err; + } +- period_size = snd_pcm_hw_params_get_period_size(params, &dir); ++ /* retrieve buffer size */ ++ err = snd_pcm_hw_params_get_buffer_size(params, &buffer_size); ++ if (err < 0) { ++ printf("Unable to retrieve buffer size: %s\n", snd_strerror(err)); ++ return err; ++ } + /* write the parameters to device */ + err = snd_pcm_hw_params(handle, params); + if (err < 0) { +@@ -123,6 +137,7 @@ + int set_swparams(snd_pcm_t *handle, + snd_pcm_sw_params_t *params) + { ++ unsigned int start_threshold; + int err; + + /* get current swparams */ +@@ -136,13 +151,7 @@ + if (err < 0) { + printf("Unable to set start threshold mode for playback: %s\n", snd_strerror(err)); + return err; +- } +- /* allow transfer when at least period_size samples can be processed */ +- err = snd_pcm_sw_params_set_avail_min(handle, params, period_size); +- if (err < 0) { +- printf("Unable to set avail min for playback: %s\n", snd_strerror(err)); +- return err; +- } ++ } + /* align all transfers to 1 samples */ + err = snd_pcm_sw_params_set_xfer_align(handle, params, 1); + if (err < 0) { +@@ -190,7 +199,7 @@ + rate = config->speed; + + if ( bitdepth == 0 ) +- config->precision = bitdepth = 32; ++ config->precision = bitdepth = 16; + + switch (bitdepth) + { +@@ -241,7 +250,7 @@ + return -1; + } + +- buf = malloc(buffer_size); ++ buf = malloc(buffer_size * sample_size); + if (buf == NULL) { + audio_error="unable to allocate output buffer table"; + return -1; +@@ -279,7 +288,7 @@ + int play(struct audio_play *play) + { + int err, len; +- char *ptr; ++ unsigned char *ptr; + + ptr = buf; + len = play->nsamples; + diff --git a/package/madplay/0002-configure-ac-automake-foreign.patch b/package/madplay/0002-configure-ac-automake-foreign.patch new file mode 100644 index 00000000..38d16309 --- /dev/null +++ b/package/madplay/0002-configure-ac-automake-foreign.patch @@ -0,0 +1,16 @@ +configure.ac: don't require GNU-specific files when running automake + +Signed-off-by: Fabrice Fontaine + +diff -durN madplay-0.15.2b-orig/configure.ac madplay-0.15.2b/configure.ac +--- madplay-0.15.2b-orig/configure.ac 2019-02-14 21:34:01.507212449 +0100 ++++ madplay-0.15.2b/configure.ac 2019-02-14 21:34:23.439336353 +0100 +@@ -26,7 +26,7 @@ + + AC_CONFIG_SRCDIR([madplay.c]) + +-AM_INIT_AUTOMAKE ++AM_INIT_AUTOMAKE([foreign]) + + AM_CONFIG_HEADER([config.h]) + diff --git a/package/madplay/0003-configure-ac-use-pkg-config-to-find-id3tag.patch b/package/madplay/0003-configure-ac-use-pkg-config-to-find-id3tag.patch new file mode 100644 index 00000000..47645edd --- /dev/null +++ b/package/madplay/0003-configure-ac-use-pkg-config-to-find-id3tag.patch @@ -0,0 +1,23 @@ +configure.ac: use pkg-config to find id3tag + +Signed-off-by: Fabrice Fontaine + +diff -durN madplay-0.15.2b-orig/configure.ac madplay-0.15.2b/configure.ac +--- madplay-0.15.2b-orig/configure.ac 2019-02-14 21:34:01.507212449 +0100 ++++ madplay-0.15.2b/configure.ac 2019-02-15 23:24:00.079876087 +0100 +@@ -182,12 +182,13 @@ + *** environment variable to specify its installed location, e.g. -L.]) + ]) + +-AC_CHECK_LIB(id3tag, id3_tag_parse, :, [ ++PKG_CHECK_MODULES(ID3TAG, id3tag, [ ++ CFLAGS="$CFLAGS $ID3TAG_CFLAGS" LIBS="$LIBS $ID3TAG_LIBS"], [ + AC_MSG_ERROR([libid3tag was not found + *** You must first install libid3tag before you can build this package. + *** If libid3tag is already installed, you may need to use the LDFLAGS + *** environment variable to specify its installed location, e.g. -L.]) +-], [-lz]) ++]) + + AC_FUNC_VPRINTF + AC_CHECK_FUNCS(madvise localeconv) diff --git a/package/madplay/0004-configure-ac-call-AM_MKINSTALLDIRS.patch b/package/madplay/0004-configure-ac-call-AM_MKINSTALLDIRS.patch new file mode 100644 index 00000000..7d3fb8dd --- /dev/null +++ b/package/madplay/0004-configure-ac-call-AM_MKINSTALLDIRS.patch @@ -0,0 +1,23 @@ +configure.ac: call AM_MKINSTALLDIRS to substitute @MKINSTALLDIRS@ + +MKINSTALLDIRS is obsolete and doesn't get automatically called. + +Force call AM_MKINSTALLDIRS() macro to substitute every @MKINSTALLDIRS@ +occurence in *.in files. + +Signed-off-by: Giulio Benetti + +diff -urpN madplay-0.15.2b.orig/configure.ac madplay-0.15.2b/configure.ac +--- madplay-0.15.2b.orig/configure.ac 2019-04-16 12:06:03.781018755 +0200 ++++ madplay-0.15.2b/configure.ac 2019-04-16 12:07:48.399162610 +0200 +@@ -146,6 +146,10 @@ ALL_LINGUAS="en es fr hr no" + AM_GNU_GETTEXT([use-libtool]) + AM_GNU_GETTEXT_VERSION(0.14.1) + ++dnl Substitute MKINSTALLDIRS ++ ++AM_MKINSTALLDIRS() ++ + dnl Checks for header files. + + AC_HEADER_STDC diff --git a/package/madplay/Config.in b/package/madplay/Config.in new file mode 100644 index 00000000..a3373057 --- /dev/null +++ b/package/madplay/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_MADPLAY + bool "madplay" + select BR2_PACKAGE_LIBMAD + select BR2_PACKAGE_LIBID3TAG + help + Command-line front-end to libmad, a high-quality MPEG audio + decoder. It currently supports MPEG-1 and the MPEG-2 + extension to lower sampling frequencies, as well as the de + facto MPEG 2.5 format. All three audio layers - Layer I, + Layer II, and Layer III (i.e. MP3) - are fully implemented. + + http://www.underbit.com/products/mad/ + +if BR2_PACKAGE_MADPLAY + +config BR2_PACKAGE_MADPLAY_ALSA + bool + default y + depends on BR2_PACKAGE_ALSA_LIB + +endif diff --git a/package/madplay/madplay.hash b/package/madplay/madplay.hash new file mode 100644 index 00000000..22770297 --- /dev/null +++ b/package/madplay/madplay.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 5a79c7516ff7560dffc6a14399a389432bc619c905b13d3b73da22fa65acede0 madplay-0.15.2b.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING +sha256 915bfd70548f31d11f9b4ffb21f343d1196af96c79d6aaac5663ea46c39dd3a3 COPYRIGHT diff --git a/package/madplay/madplay.mk b/package/madplay/madplay.mk new file mode 100644 index 00000000..91ee44ab --- /dev/null +++ b/package/madplay/madplay.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# madplay +# +################################################################################ + +MADPLAY_VERSION = 0.15.2b +MADPLAY_SITE = http://downloads.sourceforge.net/project/mad/madplay/$(MADPLAY_VERSION) +MADPLAY_LICENSE = GPL-2.0+ +MADPLAY_LICENSE_FILES = COPYING COPYRIGHT +MADPLAY_DEPENDENCIES = host-pkgconf libmad libid3tag $(TARGET_NLS_DEPENDENCIES) + +# Force autoreconf to be able to use a more recent libtool script, that +# is able to properly behave in the face of a missing C++ compiler. +# Also 0003-configure-ac-use-pkg-config-to-find-id3tag.patch +MADPLAY_AUTORECONF = YES + +# madplay uses libmad which has some assembly function that is not present in +# Thumb mode: +# Error: selected processor does not support `smull r8,r9,r2,r4' in Thumb mode +# so, we desactivate Thumb mode +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +MADPLAY_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -marm" +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) +MADPLAY_CONF_OPTS += --with-alsa +MADPLAY_DEPENDENCIES += alsa-lib +MADPLAY_CONF_ENV += LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs alsa`" +endif + +$(eval $(autotools-package)) diff --git a/package/make/Config.in b/package/make/Config.in new file mode 100644 index 00000000..e8aa912f --- /dev/null +++ b/package/make/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_MAKE + bool "make" + depends on BR2_USE_MMU # fork() + help + A tool which controls the generation of executables and other + non-source files of a program from the program's source files. + + While Buildroot no longer supports building a toolchain for + the target, we keep a make package that is for example + useful to run the uClibc test suite on the target. + + http://www.gnu.org/software/make/ diff --git a/package/make/make.hash b/package/make/make.hash new file mode 100644 index 00000000..07d91e7b --- /dev/null +++ b/package/make/make.hash @@ -0,0 +1,6 @@ +# From https://lists.gnu.org/archive/html/info-gnu/2023-02/msg00011.html +md5 c8b13b7477e812d4213a9b88ff0ff1d6 make-4.4.1.tar.lz +# Locally calculated after checking signature +sha256 8814ba072182b605d156d7589c19a43b89fc58ea479b9355146160946f8cf6e9 make-4.4.1.tar.lz +# Locally computed +sha256 e79e9c8a0c85d735ff98185918ec94ed7d175efc377012787aebcf3b80f0d90b COPYING diff --git a/package/make/make.mk b/package/make/make.mk new file mode 100644 index 00000000..e194e158 --- /dev/null +++ b/package/make/make.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# make +# +################################################################################ + +MAKE_VERSION = 4.4.1 +MAKE_SOURCE = make-$(MAKE_VERSION).tar.lz +MAKE_SITE = $(BR2_GNU_MIRROR)/make +MAKE_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) host-pkgconf +MAKE_LICENSE = GPL-3.0+ +MAKE_LICENSE_FILES = COPYING +MAKE_CPE_ID_VENDOR = gnu + +MAKE_CONF_OPTS = --without-guile + +# Disable the 'load' operation for static builds since it needs dlopen +ifeq ($(BR2_STATIC_LIBS),y) +MAKE_CONF_OPTS += --disable-load +endif + +HOST_MAKE_DEPENDENCIES = host-pkgconf +HOST_MAKE_CONF_OPTS = --without-guile + +# Configure host-make binary to be 'host-make' to ensure it isn't +# accidently used by packages when they invoke recursive / sub-make. +HOST_MAKE_CONF_OPTS += --program-prefix=host- + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/makedevs/README.adoc b/package/makedevs/README.adoc new file mode 120000 index 00000000..d62887a7 --- /dev/null +++ b/package/makedevs/README.adoc @@ -0,0 +1 @@ +../../docs/manual/makedev-syntax.adoc \ No newline at end of file diff --git a/package/makedevs/makedevs.c b/package/makedevs/makedevs.c new file mode 100644 index 00000000..a5c9c7d6 --- /dev/null +++ b/package/makedevs/makedevs.c @@ -0,0 +1,650 @@ +/* vi: set sw=4 ts=4: */ +/* + * This program 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 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 Library 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. + * + */ + +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef __APPLE__ +#include /* major() and minor() */ +#endif +#include +#ifdef EXTENDED_ATTRIBUTES +#include +#endif /* EXTENDED_ATTRIBUTES */ + +const char *bb_applet_name; +uid_t recursive_uid; +gid_t recursive_gid; +unsigned int recursive_mode; +#define PASSWD_PATH "etc/passwd" /* MUST be relative */ +#define GROUP_PATH "etc/group" /* MUST be relative */ + +void bb_verror_msg(const char *s, va_list p) +{ + fflush(stdout); + fprintf(stderr, "%s: ", bb_applet_name); + vfprintf(stderr, s, p); +} + +void bb_error_msg(const char *s, ...) +{ + va_list p; + + va_start(p, s); + bb_verror_msg(s, p); + va_end(p); + putc('\n', stderr); +} + +void bb_error_msg_and_die(const char *s, ...) +{ + va_list p; + + va_start(p, s); + bb_verror_msg(s, p); + va_end(p); + putc('\n', stderr); + exit(1); +} + +void bb_vperror_msg(const char *s, va_list p) +{ + int err=errno; + if(s == 0) s = ""; + bb_verror_msg(s, p); + if (*s) s = ": "; + fprintf(stderr, "%s%s\n", s, strerror(err)); +} + +void bb_perror_msg(const char *s, ...) +{ + va_list p; + + va_start(p, s); + bb_vperror_msg(s, p); + va_end(p); +} + +void bb_perror_msg_and_die(const char *s, ...) +{ + va_list p; + + va_start(p, s); + bb_vperror_msg(s, p); + va_end(p); + exit(1); +} + +FILE *bb_xfopen(const char *path, const char *mode) +{ + FILE *fp; + if ((fp = fopen(path, mode)) == NULL) + bb_perror_msg_and_die("%s", path); + return fp; +} + +enum { + FILEUTILS_PRESERVE_STATUS = 1, + FILEUTILS_DEREFERENCE = 2, + FILEUTILS_RECUR = 4, + FILEUTILS_FORCE = 8, + FILEUTILS_INTERACTIVE = 16 +}; +int bb_make_directory (char *path, long mode, int flags) +{ + mode_t mask; + const char *fail_msg; + char *s = path; + char c; + struct stat st; + + mask = umask(0); + if (mode == -1) { + umask(mask); + mode = (S_IXUSR | S_IXGRP | S_IXOTH | + S_IWUSR | S_IWGRP | S_IWOTH | + S_IRUSR | S_IRGRP | S_IROTH) & ~mask; + } else { + umask(mask & ~0300); + } + + do { + c = 0; + + if (flags & FILEUTILS_RECUR) { /* Get the parent. */ + /* Bypass leading non-'/'s and then subsequent '/'s. */ + while (*s) { + if (*s == '/') { + do { + ++s; + } while (*s == '/'); + c = *s; /* Save the current char */ + *s = 0; /* and replace it with nul. */ + break; + } + ++s; + } + } + + if (mkdir(path, 0777) < 0) { + /* If we failed for any other reason than the directory + * already exists, output a diagnostic and return -1.*/ + if ((errno != EEXIST && errno != EISDIR) + || !(flags & FILEUTILS_RECUR) + || (stat(path, &st) < 0 || !S_ISDIR(st.st_mode))) { + fail_msg = "create"; + umask(mask); + break; + } + /* Since the directory exists, don't attempt to change + * permissions if it was the full target. Note that + * this is not an error conditon. */ + if (!c) { + umask(mask); + return 0; + } + } + + if (!c) { + /* Done. If necessary, updated perms on the newly + * created directory. Failure to update here _is_ + * an error.*/ + umask(mask); + if ((mode != -1) && (chmod(path, mode) < 0)){ + fail_msg = "set permissions of"; + break; + } + return 0; + } + + /* Remove any inserted nul from the path (recursive mode). */ + *s = c; + + } while (1); + + bb_perror_msg ("Cannot %s directory `%s'", fail_msg, path); + return -1; +} + +const char * const bb_msg_memory_exhausted = "memory exhausted"; + +void *xmalloc(size_t size) +{ + void *ptr = malloc(size); + if (ptr == NULL && size != 0) + bb_error_msg_and_die(bb_msg_memory_exhausted); + return ptr; +} + +void *xcalloc(size_t nmemb, size_t size) +{ + void *ptr = calloc(nmemb, size); + if (ptr == NULL && nmemb != 0 && size != 0) + bb_error_msg_and_die(bb_msg_memory_exhausted); + return ptr; +} + +void *xrealloc(void *ptr, size_t size) +{ + ptr = realloc(ptr, size); + if (ptr == NULL && size != 0) + bb_error_msg_and_die(bb_msg_memory_exhausted); + return ptr; +} + +char *private_get_line_from_file(FILE *file, int c) +{ +#define GROWBY (80) /* how large we will grow strings by */ + + int ch; + int idx = 0; + char *linebuf = NULL; + int linebufsz = 0; + + while ((ch = getc(file)) != EOF) { + /* grow the line buffer as necessary */ + if (idx > linebufsz - 2) { + linebuf = xrealloc(linebuf, linebufsz += GROWBY); + } + linebuf[idx++] = (char)ch; + if (!ch) return linebuf; + if (c<2 && ch == '\n') { + if (c) { + --idx; + } + break; + } + } + if (linebuf) { + if (ferror(file)) { + free(linebuf); + return NULL; + } + linebuf[idx] = 0; + } + return linebuf; +} + +char *bb_get_chomped_line_from_file(FILE *file) +{ + return private_get_line_from_file(file, 1); +} + +long my_getpwnam(const char *name) +{ + struct passwd *myuser; + FILE *stream; + + stream = bb_xfopen(PASSWD_PATH, "r"); + while(1) { + errno = 0; + myuser = fgetpwent(stream); + if (myuser == NULL) + bb_error_msg_and_die("unknown user name: %s", name); + if (errno) + bb_perror_msg_and_die("fgetpwent"); + if (!strcmp(name, myuser->pw_name)) + break; + } + fclose(stream); + + return myuser->pw_uid; +} + +long my_getgrnam(const char *name) +{ + struct group *mygroup; + FILE *stream; + + stream = bb_xfopen(GROUP_PATH, "r"); + while(1) { + errno = 0; + mygroup = fgetgrent(stream); + if (mygroup == NULL) + bb_error_msg_and_die("unknown group name: %s", name); + if (errno) + bb_perror_msg_and_die("fgetgrent"); + if (!strcmp(name, mygroup->gr_name)) + break; + } + fclose(stream); + + return mygroup->gr_gid; +} + +unsigned long get_ug_id(const char *s, long (*my_getxxnam)(const char *)) +{ + unsigned long r; + char *p; + + r = strtoul(s, &p, 10); + if (*p || (s == p)) { + r = my_getxxnam(s); + } + + return r; +} + +char * last_char_is(const char *s, int c) +{ + char *sret = (char *)s; + if (sret) { + sret = strrchr(sret, c); + if(sret != NULL && *(sret+1) != 0) + sret = NULL; + } + return sret; +} + +void bb_xasprintf(char **string_ptr, const char *format, ...) +{ + va_list p; + int r; + + va_start(p, format); + r = vasprintf(string_ptr, format, p); + va_end(p); + + if (r < 0) { + bb_perror_msg_and_die("bb_xasprintf"); + } +} + +char *concat_path_file(const char *path, const char *filename) +{ + char *outbuf; + char *lc; + + if (!path) + path = ""; + lc = last_char_is(path, '/'); + while (*filename == '/') + filename++; + bb_xasprintf(&outbuf, "%s%s%s", path, (lc==NULL ? "/" : ""), filename); + + return outbuf; +} + +#ifdef EXTENDED_ATTRIBUTES +int bb_set_xattr(const char *fpath, const char *xattr) +{ + cap_t cap, cap_file, cap_new; + char *cap_file_text, *cap_new_text; + ssize_t length; + + cap = cap_from_text(xattr); + if (cap == NULL) + bb_perror_msg_and_die("cap_from_text failed for %s", xattr); + + cap_file = cap_get_file(fpath); + if (cap_file == NULL) { + /* if no capability was set before, we initialize cap_file */ + if (errno != ENODATA) + bb_perror_msg_and_die("cap_get_file failed on %s", fpath); + + cap_file = cap_init(); + if (!cap_file) + bb_perror_msg_and_die("cap_init failed"); + } + + if ((cap_file_text = cap_to_text(cap_file, &length)) == NULL) + bb_perror_msg_and_die("cap_to_name failed on %s", fpath); + + bb_xasprintf(&cap_new_text, "%s %s", cap_file_text, xattr); + + if ((cap_new = cap_from_text(cap_new_text)) == NULL) + bb_perror_msg_and_die("cap_from_text failed on %s", cap_new_text); + + if (cap_set_file(fpath, cap_new) == -1) + bb_perror_msg_and_die("cap_set_file failed for %s (xattr = %s)", fpath, xattr); + + cap_free(cap); + cap_free(cap_file); + cap_free(cap_file_text); + cap_free(cap_new); + cap_free(cap_new_text); + + return 0; +} +#endif /* EXTENDED_ATTRIBUTES */ + +void bb_show_usage(void) +{ + fprintf(stderr, "%s: [-d device_table] rootdir\n\n", bb_applet_name); + fprintf(stderr, "Creates a batch of special files as specified in a device table.\n"); + fprintf(stderr, "Device table entries take the form of:\n"); + fprintf(stderr, "name type mode user group major minor start increment count\n\n"); + fprintf(stderr, "Where name is the file name, type can be one of:\n"); + fprintf(stderr, " f A regular file\n"); + fprintf(stderr, " d Directory\n"); + fprintf(stderr, " r Directory recursively\n"); + fprintf(stderr, " c Character special device file\n"); + fprintf(stderr, " b Block special device file\n"); + fprintf(stderr, " p Fifo (named pipe)\n"); + fprintf(stderr, "uid is the user id for the target file, gid is the group id for the\n"); + fprintf(stderr, "target file. The rest of the entries (major, minor, etc) apply to\n"); + fprintf(stderr, "to device special files. A '-' may be used for blank entries.\n\n"); + fprintf(stderr, "For example:\n"); + fprintf(stderr, " \n"); + fprintf(stderr, "/dev d 755 0 0 - - - - -\n"); + fprintf(stderr, "/dev/console c 666 0 0 5 1 - - -\n"); + fprintf(stderr, "/dev/null c 666 0 0 1 3 0 0 -\n"); + fprintf(stderr, "/dev/zero c 666 0 0 1 5 0 0 -\n"); + fprintf(stderr, "/dev/hda b 640 0 0 3 0 0 0 -\n"); + fprintf(stderr, "/dev/hda b 640 0 0 3 1 1 1 15\n"); + fprintf(stderr, "/dev/rtp b 640 0 0 250 0 0 1 5\n"); + fprintf(stderr, "/dev/gps b 640 0 0 251 0 1 1 5\n"); + fprintf(stderr, "/dev/uio b 640 0 0 252 0 1 2 5\n"); + fprintf(stderr, "/dev/uio b 640 0 0 252 1 6 2 5\n\n"); + fprintf(stderr, "Will Produce:\n"); + fprintf(stderr, "/dev\n"); + fprintf(stderr, "/dev/console\n"); + fprintf(stderr, "/dev/null\n"); + fprintf(stderr, "/dev/zero\n"); + fprintf(stderr, "/dev/hda\n"); + fprintf(stderr, "/dev/hda[1-15] with minor numbers [1-15]\n"); + fprintf(stderr, "/dev/rtp[0-4] with minor numbers [0-4]\n"); + fprintf(stderr, "/dev/gps[1-5] with minor numbers [0-4]\n"); + fprintf(stderr, "/dev/uio[1-5] with minor numbers 0,2,4,6,8\n"); + fprintf(stderr, "/dev/uio[6-10] with minor numbers 1,3,5,7,9\n"); + exit(1); +} + +int bb_recursive(const char *fpath, const struct stat *sb, + int tflag, struct FTW *ftwbuf){ + + if (lchown(fpath, recursive_uid, recursive_gid) == -1) { + bb_perror_msg("chown failed for %s", fpath); + return -1; + } + + /* chmod() is optional, also skip if dangling symlink */ + if (recursive_mode == -1 || (tflag == FTW_SL && !access(fpath, F_OK))) + return 0; + + if (chmod(fpath, recursive_mode) < 0) { + bb_perror_msg("chmod failed for %s", fpath); + return -1; + } + + return 0; +} + +int main(int argc, char **argv) +{ + int opt; + FILE *table = stdin; + char *rootdir = NULL; + char *full_name = NULL; + char *line = NULL; + int linenum = 0; + int ret = EXIT_SUCCESS; + + bb_applet_name = basename(argv[0]); + + while ((opt = getopt(argc, argv, "d:")) != -1) { + switch(opt) { + case 'd': + table = bb_xfopen((line=optarg), "r"); + break; + default: + bb_show_usage(); + } + } + + if (optind >= argc || (rootdir=argv[optind])==NULL) { + bb_error_msg_and_die("root directory not speficied"); + } + + if (chdir(rootdir) != 0) { + bb_perror_msg_and_die("Couldnt chdir to %s", rootdir); + } + + umask(0); + + printf("rootdir=%s\n", rootdir); + if (line) { + printf("table='%s'\n", line); + } else { + printf("table=\n"); + } + + while ((line = bb_get_chomped_line_from_file(table))) { + char type; + unsigned int mode = 0755; + unsigned int major = 0; + unsigned int minor = 0; + unsigned int count = 0; + unsigned int increment = 0; + unsigned int start = 0; + char xattr[255]; + char name[4096]; + char user[41]; + char group[41]; + uid_t uid; + gid_t gid; + + linenum++; + + if (1 == sscanf(line, " |xattr %254s", xattr)) { +#ifdef EXTENDED_ATTRIBUTES + if (!full_name) + bb_error_msg_and_die("line %d should be after a file\n", linenum); + + if (bb_set_xattr(full_name, xattr) < 0) + bb_error_msg_and_die("can't set cap %s on file %s\n", xattr, full_name); +#else + bb_error_msg_and_die("line %d not supported: '%s'\nDid you forget to enable " + "BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES?\n", + linenum, line); +#endif /* EXTENDED_ATTRIBUTES */ + continue; + } + + if ((2 > sscanf(line, "%4095s %c %o %40s %40s %u %u %u %u %u", name, + &type, &mode, user, group, &major, + &minor, &start, &increment, &count)) || + ((major | minor | start | count | increment) > 0xfffff)) + { + if (*line=='\0' || *line=='#' || isspace(*line)) + continue; + bb_error_msg("line %d invalid: '%s'\n", linenum, line); + ret = EXIT_FAILURE; + continue; + } + if (name[0] == '#') { + continue; + } + if (*group) { + gid = get_ug_id(group, my_getgrnam); + } else { + gid = getgid(); + } + if (*user) { + uid = get_ug_id(user, my_getpwnam); + } else { + uid = getuid(); + } + + /* + * free previous full name + * we don't de-allocate full_name at the end of the parsing, + * because we may need it if the next line is an xattr. + */ + free(full_name); + full_name = concat_path_file(rootdir, name); + + if (type == 'd') { + bb_make_directory(full_name, mode | S_IFDIR, FILEUTILS_RECUR); + if (chown(full_name, uid, gid) == -1) { + bb_perror_msg("line %d: chown failed for %s", linenum, full_name); + ret = EXIT_FAILURE; + goto loop; + } + if ((mode != -1) && (chmod(full_name, mode) < 0)){ + bb_perror_msg("line %d: chmod failed for %s", linenum, full_name); + ret = EXIT_FAILURE; + goto loop; + } + } else if (type == 'f' || type == 'F') { + struct stat st; + if ((stat(full_name, &st) < 0 || !S_ISREG(st.st_mode))) { + if (type == 'F') { + continue; /*Ignore optional files*/ + } + bb_perror_msg("line %d: regular file '%s' does not exist", linenum, full_name); + ret = EXIT_FAILURE; + goto loop; + } + if (chown(full_name, uid, gid) == -1) { + bb_perror_msg("line %d: chown failed for %s", linenum, full_name); + ret = EXIT_FAILURE; + goto loop; + } + if ((mode != -1) && (chmod(full_name, mode) < 0)){ + bb_perror_msg("line %d: chmod failed for %s", linenum, full_name); + ret = EXIT_FAILURE; + goto loop; + } + } else if (type == 'r') { + recursive_uid = uid; + recursive_gid = gid; + recursive_mode = mode; + if (nftw(full_name, bb_recursive, 20, FTW_MOUNT | FTW_PHYS) < 0) { + bb_perror_msg("line %d: recursive failed for %s", linenum, full_name); + ret = EXIT_FAILURE; + goto loop; + } + } else + { + dev_t rdev; + unsigned i; + char *full_name_inc; + + if (type == 'p') { + mode |= S_IFIFO; + } + else if (type == 'c') { + mode |= S_IFCHR; + } + else if (type == 'b') { + mode |= S_IFBLK; + } else { + bb_error_msg("line %d: Unsupported file type %c", linenum, type); + ret = EXIT_FAILURE; + goto loop; + } + + 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 (lchown(full_name_inc, uid, gid) < 0) { + bb_perror_msg("line %d: can't chown %s", linenum, full_name_inc); + ret = EXIT_FAILURE; + } 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); + } + fclose(table); + + return ret; +} diff --git a/package/makedevs/makedevs.mk b/package/makedevs/makedevs.mk new file mode 100644 index 00000000..9b0f4461 --- /dev/null +++ b/package/makedevs/makedevs.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# makedevs +# +################################################################################ + +MAKEDEVS_LICENSE = GPL-2.0 + +HOST_MAKEDEVS_CFLAGS = $(HOST_CFLAGS) +HOST_MAKEDEVS_LDFLAGS = $(HOST_LDFLAGS) + +ifeq ($(BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES),y) +HOST_MAKEDEVS_DEPENDENCIES += host-libcap +HOST_MAKEDEVS_CFLAGS += -DEXTENDED_ATTRIBUTES +HOST_MAKEDEVS_LDFLAGS += -lcap +endif + +define HOST_MAKEDEVS_EXTRACT_CMDS + cp $(HOST_MAKEDEVS_PKGDIR)/makedevs.c $(@D) +endef + +define HOST_MAKEDEVS_BUILD_CMDS + $(HOSTCC) $(HOST_MAKEDEVS_CFLAGS) $(@D)/makedevs.c \ + -o $(@D)/makedevs $(HOST_MAKEDEVS_LDFLAGS) +endef + +define HOST_MAKEDEVS_INSTALL_CMDS + $(INSTALL) -D -m 755 $(@D)/makedevs $(HOST_DIR)/bin/makedevs +endef + +$(eval $(host-generic-package)) diff --git a/package/makedumpfile/0001-PATCH-Define-PN_XNUM-if-missing.patch b/package/makedumpfile/0001-PATCH-Define-PN_XNUM-if-missing.patch new file mode 100644 index 00000000..162e893c --- /dev/null +++ b/package/makedumpfile/0001-PATCH-Define-PN_XNUM-if-missing.patch @@ -0,0 +1,25 @@ +From: Petr Tesarik +Subject: [PATCH] Define PN_XNUM if missing +Upstream: never, build fix for old distros + +Older elfutils did not define this constant. + +Signed-off-by: Petr Tesarik +Signed-off-by: Alexander Egorenkov +--- + elf_info.h | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/elf_info.h ++++ b/elf_info.h +@@ -19,6 +19,10 @@ + #include + #include + ++#ifndef PN_XNUM ++#define PN_XNUM 0xffff ++#endif ++ + #define KEXEC_CORE_NOTE_NAME "CORE" + #define KEXEC_CORE_NOTE_NAME_BYTES sizeof(KEXEC_CORE_NOTE_NAME) + diff --git a/package/makedumpfile/0002-Handle-__mips64.patch b/package/makedumpfile/0002-Handle-__mips64.patch new file mode 100644 index 00000000..fd3fdbbb --- /dev/null +++ b/package/makedumpfile/0002-Handle-__mips64.patch @@ -0,0 +1,69 @@ +From a5779893ee087409b2d1fe391ead102defe0f00b Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 2 Nov 2022 13:00:00 +0100 +Subject: [PATCH] Handle __mips64 + +Handle __mips64 as __mips64__ to avoid the following build failure: + +makedumpfile.c: In function 'is_kvaddr': +makedumpfile.c:1613:39: error: 'KVBASE' undeclared (first use in this function) + return (addr >= (unsigned long long)(KVBASE)); + ^~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/94824fa8baa8edb99a5ca245e5561e0c4e430638 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/makedumpfile/makedumpfile/pull/11] +--- + arch/mips64.c | 2 +- + makedumpfile.h | 6 +++--- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/arch/mips64.c b/arch/mips64.c +index ab45b6e..fd987b0 100644 +--- a/arch/mips64.c ++++ b/arch/mips64.c +@@ -16,7 +16,7 @@ + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +-#ifdef __mips64__ ++#if defined(__mips64__) || defined(__mips64) + + #include "../print_info.h" + #include "../elf_info.h" +diff --git a/makedumpfile.h b/makedumpfile.h +index 70a1a91..3842f9c 100644 +--- a/makedumpfile.h ++++ b/makedumpfile.h +@@ -963,7 +963,7 @@ typedef unsigned long pgd_t; + + #endif /* sparc64 */ + +-#ifdef __mips64__ /* mips64 */ ++#if defined(__mips64__) || defined(__mips64) /* mips64 */ + #define KVBASE PAGE_OFFSET + + #ifndef _XKPHYS_START_ADDR +@@ -1204,7 +1204,7 @@ unsigned long long vaddr_to_paddr_sparc64(unsigned long vaddr); + #define arch_crashkernel_mem_size() stub_false() + #endif /* sparc64 */ + +-#ifdef __mips64__ /* mips64 */ ++#if defined(__mips64__) || defined(__mips64) /* mips64 */ + int get_phys_base_mips64(void); + int get_machdep_info_mips64(void); + int get_versiondep_info_mips64(void); +@@ -2364,7 +2364,7 @@ int get_xen_info_ia64(void); + #define get_xen_info_arch(X) FALSE + #endif /* sparc64 */ + +-#ifdef __mips64__ /* mips64 */ ++#if defined(__mips64__) || defined(__mips64) /* mips64 */ + #define kvtop_xen(X) FALSE + #define get_xen_basic_info_arch(X) FALSE + #define get_xen_info_arch(X) FALSE +-- +2.35.1 + diff --git a/package/makedumpfile/Config.in b/package/makedumpfile/Config.in new file mode 100644 index 00000000..325a31d7 --- /dev/null +++ b/package/makedumpfile/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_MAKEDUMPFILE_ARCH_SUPPORTS + bool + default y if BR2_aarch64 || BR2_aarch64_be + default y if BR2_arm || BR2_armeb + default y if BR2_i386 || BR2_x86_64 + default y if BR2_mips64 || BR2_mips64el + default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + default y if BR2_s390x + default y if BR2_sparc64 + +comment "makedumpfile needs a toolchain w/ wchar, dynamic library, threads" + depends on BR2_PACKAGE_MAKEDUMPFILE_ARCH_SUPPORTS + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_MAKEDUMPFILE + bool "makedumpfile" + depends on BR2_PACKAGE_MAKEDUMPFILE_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS # dlopen + depends on BR2_USE_WCHAR + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_ELFUTILS + select BR2_PACKAGE_XZ + select BR2_PACKAGE_ZLIB + help + Makes a small dumpfile of kdump. + + https://github.com/makedumpfile/makedumpfile diff --git a/package/makedumpfile/makedumpfile.hash b/package/makedumpfile/makedumpfile.hash new file mode 100644 index 00000000..9083ced4 --- /dev/null +++ b/package/makedumpfile/makedumpfile.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 0c53f1e5e11e75e4896197df795bee63b3d46b8821fbc3368f7a240861b543b5 makedumpfile-1.7.5.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/makedumpfile/makedumpfile.mk b/package/makedumpfile/makedumpfile.mk new file mode 100644 index 00000000..5fa13319 --- /dev/null +++ b/package/makedumpfile/makedumpfile.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# makedumpfile +# +################################################################################ + +MAKEDUMPFILE_VERSION = 1.7.5 +MAKEDUMPFILE_SITE = https://github.com/makedumpfile/makedumpfile/releases/download/$(MAKEDUMPFILE_VERSION) +MAKEDUMPFILE_DEPENDENCIES = bzip2 elfutils xz zlib +MAKEDUMPFILE_LICENSE = GPL-2.0 +MAKEDUMPFILE_LICENSE_FILES = COPYING + +ifeq ($(BR2_powerpc),y) +MAKEDUMPFILE_TARGET = powerpc32 +else +MAKEDUMPFILE_TARGET = $(BR2_ARCH) +endif + +MAKEDUMPFILE_MAKE_OPTS = \ + CROSS= \ + TARGET=$(MAKEDUMPFILE_TARGET) \ + LINKTYPE=dynamic + +ifeq ($(BR2_PACKAGE_LZO),y) +MAKEDUMPFILE_DEPENDENCIES += lzo +MAKEDUMPFILE_MAKE_OPTS += USELZO=on +endif + +ifeq ($(BR2_PACKAGE_SNAPPY),y) +MAKEDUMPFILE_DEPENDENCIES += snappy +MAKEDUMPFILE_MAKE_OPTS += USESNAPPY=on +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +MAKEDUMPFILE_DEPENDENCIES += zstd +MAKEDUMPFILE_MAKE_OPTS += USEZSTD=on +endif + +define MAKEDUMPFILE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(MAKEDUMPFILE_MAKE_OPTS) +endef + +define MAKEDUMPFILE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install \ + DESTDIR="$(TARGET_DIR)" +endef + +$(eval $(generic-package)) diff --git a/package/mali-driver/Config.in b/package/mali-driver/Config.in new file mode 100644 index 00000000..4c1a96d0 --- /dev/null +++ b/package/mali-driver/Config.in @@ -0,0 +1,15 @@ +comment "mali-driver needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_MALI_DRIVER + bool "mali-driver" + depends on BR2_aarch64 || BR2_arm + depends on BR2_LINUX_KERNEL + help + This package builds and installs the Linux kernel driver for + the Mali Midgard/Bifrost GPU, compatible with recent Linux + kernels (>= 5.4). Note that it should be installed together + with the corresponding userspace OpenGL libraries, which are + usually provided as binaries only by hardware vendors. + + mali-driver requires a Linux kernel >= 5.4. diff --git a/package/mali-driver/mali-driver.hash b/package/mali-driver/mali-driver.hash new file mode 100644 index 00000000..ddde56b5 --- /dev/null +++ b/package/mali-driver/mali-driver.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3111757a411ba216a4b8e3d88c29eb3be3182a7f0d5f8b9cfe10f85ec6693bc9 mali-driver-d40c57d81c9cf4bc6fefeaf47153fde8eed19ef2.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/mali-driver/mali-driver.mk b/package/mali-driver/mali-driver.mk new file mode 100644 index 00000000..fa5a8d94 --- /dev/null +++ b/package/mali-driver/mali-driver.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# mali-driver +# +################################################################################ + +MALI_DRIVER_VERSION = d40c57d81c9cf4bc6fefeaf47153fde8eed19ef2 +MALI_DRIVER_SITE = $(call github,bootlin,mali-driver,$(MALI_DRIVER_VERSION)) +MALI_DRIVER_DEPENDENCIES = linux +MALI_DRIVER_LICENSE = GPL-2.0 +MALI_DRIVER_LICENSE_FILES = LICENSE +MALI_DRIVER_MODULE_SUBDIRS = r8p0/drivers/gpu/arm/midgard + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/mali-t76x/Config.in b/package/mali-t76x/Config.in new file mode 100644 index 00000000..2533f100 --- /dev/null +++ b/package/mali-t76x/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_MALI_T76X + bool "mali-t76x" + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_ARM_EABIHF + depends on BR2_arm + select BR2_PACKAGE_MESA3D_HEADERS + select BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_HAS_LIBGLES + help + Install the binary user-space components for the ARM Mali + Midgard T76X GPU. This package requires a kernel with the + ARM Mali Midgard GPU Kernel Drivers enabled. + + http://malideveloper.arm.com/resources/drivers/ + +if BR2_PACKAGE_MALI_T76X + +config BR2_PACKAGE_PROVIDES_LIBEGL + default "mali-t76x" + +config BR2_PACKAGE_PROVIDES_LIBGLES + default "mali-t76x" + +endif + +comment "mali-t76x needs a glibc toolchain with armhf enabled" + depends on BR2_arm + depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_ARM_EABIHF diff --git a/package/mali-t76x/egl.pc b/package/mali-t76x/egl.pc new file mode 100644 index 00000000..3de3c3ff --- /dev/null +++ b/package/mali-t76x/egl.pc @@ -0,0 +1,11 @@ +prefix=/usr/ +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: egl +Description: ARM Mali implementation of EGL +Version: 1.5 +Requires: +Libs: -L${libdir} -lEGL -lGLESv2 +Cflags: -I${includedir} -DEGL_NO_X11 diff --git a/package/mali-t76x/glesv2.pc b/package/mali-t76x/glesv2.pc new file mode 100644 index 00000000..6521a386 --- /dev/null +++ b/package/mali-t76x/glesv2.pc @@ -0,0 +1,11 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: glesv2 +Description: ARM Mali implementation of OpenGL ESv2 +Version: 2.0 +Requires: +Libs: -L${libdir} -lGLESv2 -lGLESv1_CM +Cflags: -I${includedir} -DEGL_NO_X11 diff --git a/package/mali-t76x/mali-t76x.hash b/package/mali-t76x/mali-t76x.hash new file mode 100644 index 00000000..a754b980 --- /dev/null +++ b/package/mali-t76x/mali-t76x.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 5a0b00438edc8066b374481d3332a43c07ec2bd3bc73265983a968970f754902 mali-t76x_r5p0-06rel0_linux_1+fbdev.tar.gz diff --git a/package/mali-t76x/mali-t76x.mk b/package/mali-t76x/mali-t76x.mk new file mode 100644 index 00000000..387685c0 --- /dev/null +++ b/package/mali-t76x/mali-t76x.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# mali-t76x +# +################################################################################ + +MALI_T76X_VERSION = r5p0-06rel0 +MALI_T76X_SOURCE = mali-t76x_$(MALI_T76X_VERSION)_linux_1+fbdev.tar.gz +MALI_T76X_SITE = http://malideveloper.arm.com/downloads/drivers/binary/$(MALI_T76X_VERSION) +MALI_T76X_DEPENDENCIES = mesa3d-headers +MALI_T76X_INSTALL_STAGING = YES +MALI_T76X_PROVIDES = libegl libgles + +define MALI_T76X_INSTALL_STAGING_CMDS + $(INSTALL) -m 755 $(@D)/*.so $(STAGING_DIR)/usr/lib/ + + $(INSTALL) -D -m 0644 package/mali-t76x/egl.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/egl.pc + $(INSTALL) -D -m 0644 package/mali-t76x/glesv2.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/glesv2.pc +endef + +define MALI_T76X_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 $(@D)/*.so $(TARGET_DIR)/usr/lib/ +endef + +$(eval $(generic-package)) diff --git a/package/mariadb/0001-add-extra-check-for-librt.patch b/package/mariadb/0001-add-extra-check-for-librt.patch new file mode 100644 index 00000000..6e3fc702 --- /dev/null +++ b/package/mariadb/0001-add-extra-check-for-librt.patch @@ -0,0 +1,33 @@ +From 960c74ec60962f707bd41724edaa2640c0324400 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 + +https://jira.mariadb.org/browse/MDEV-10841 + +Signed-off-by: Ryan Coe +[Rebased on mariadb-10.3.30] +Signed-off-by: Peter Seiderer +[Rebased on mariadb-10.3.36] +Signed-off-by: Fabrice Fontaine +--- + configure.cmake | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/configure.cmake b/configure.cmake +index 1b85c31b..4a1cd847 100644 +--- a/configure.cmake ++++ b/configure.cmake +@@ -134,6 +134,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() + MY_SEARCH_LIBS(backtrace_symbols_fd execinfo LIBEXECINFO) + + set(THREADS_PREFER_PTHREAD_FLAG ON) +-- +2.32.0 + diff --git a/package/mariadb/0002-MDEV-34206-compile-failure-fmt-use-incompatible-with.patch b/package/mariadb/0002-MDEV-34206-compile-failure-fmt-use-incompatible-with.patch new file mode 100644 index 00000000..b6c8807f --- /dev/null +++ b/package/mariadb/0002-MDEV-34206-compile-failure-fmt-use-incompatible-with.patch @@ -0,0 +1,35 @@ +From 69935c10b95fc7f7a2e1c3ed02831958e1a9b6a4 Mon Sep 17 00:00:00 2001 +From: Daniel Black +Date: Wed, 22 May 2024 17:43:17 +1000 +Subject: [PATCH] MDEV-34206 compile failure: fmt use incompatible with + libfmt-10.2.[2]+ + +Upstream libfmt commit https://github.com/fmtlib/fmt/commit/d70729215fba1d54862e407b626abf86ddf409bf +now requires the format function to be const. + +Adjust the function prototype so it is const and can compile.a + +Signed-off-by: Daniel Black +[Julien: add SoB line with the original patch author name] +Upstream: https://github.com/MariaDB/server/commit/4375245d5d9f01cabb6e3fd6c637535e724eae38 +Signed-off-by: Julien Olivain +--- + sql/item_strfunc.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc +index 4bbf36ec1cf..2ad8a9b3ce5 100644 +--- a/sql/item_strfunc.cc ++++ b/sql/item_strfunc.cc +@@ -1392,7 +1392,7 @@ bool Item_func_sformat::fix_length_and_dec(THD *thd) + namespace fmt { + template <> struct formatter: formatter { + template +- auto format(String c, FormatContext& ctx) -> decltype(ctx.out()) { ++ auto format(String c, FormatContext& ctx) const -> decltype(ctx.out()) { + string_view name = { c.ptr(), c.length() }; + return formatter::format(name, ctx); + }; +-- +2.46.0 + diff --git a/package/mariadb/Config.in b/package/mariadb/Config.in new file mode 100644 index 00000000..acedd1da --- /dev/null +++ b/package/mariadb/Config.in @@ -0,0 +1,41 @@ +config BR2_PACKAGE_MARIADB + bool "mariadb" + depends on BR2_INSTALL_LIBSTDCPP # fmt + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HAS_ATOMIC || BR2_TOOLCHAIN_HAS_SYNC_8 + depends on BR2_USE_WCHAR # fmt + select BR2_PACKAGE_LIBAIO + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_FMT + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_PCRE2 + 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/ + +comment "mariadb needs a toolchain w/ dynamic library, C++, threads, wchar" + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_ATOMIC || BR2_TOOLCHAIN_HAS_SYNC_8 + +if BR2_PACKAGE_MARIADB + +config BR2_PACKAGE_MARIADB_SERVER + bool "mariadb server" + help + Install the mariadb server on the target. + +config BR2_PACKAGE_MARIADB_SERVER_EMBEDDED + bool "mariadb embedded server" + depends on BR2_PACKAGE_MARIADB_SERVER + help + Install the mariadb embedded server on the target. + +endif diff --git a/package/mariadb/S97mysqld b/package/mariadb/S97mysqld new file mode 100644 index 00000000..54594a9e --- /dev/null +++ b/package/mariadb/S97mysqld @@ -0,0 +1,85 @@ +#!/bin/sh +# +# mysql +# + +MYSQL_LIB="/var/lib/mysql" +MYSQL_RUN="/run/mysql" +MYSQL_PIDFILE="$MYSQL_RUN/mysqld.pid" +MYSQL_LOG="/var/log/mysql" +MYSQL_LOGFILE="$MYSQL_LOG/mysqld.log" +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() { + # stderr is redirected to prevent a warning + # if mysql lib directory doesn't exist + if [ `ls -1 $MYSQL_LIB 2> /dev/null | wc -l` = 0 ] ; then + printf "Creating mysql system tables ... " + $MYSQL_BIN/mysql_install_db --basedir=/usr \ + --datadir=$MYSQL_LIB > /dev/null 2>&1 + if [ $? != 0 ]; then + echo "FAIL" + exit 1 + fi + chown -R mysql:mysql $MYSQL_LIB + 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 + + # Also create logging directory as user mysql. + install -d -o mysql -g root -m 0755 $MYSQL_LOG + + # We don't use start-stop-daemon because mysqld has its own + # wrapper script. + printf "Starting mysql ... " + $MYSQL_BIN/mysqld_safe --pid-file=$MYSQL_PIDFILE --user=mysql \ + --log-error=$MYSQL_LOGFILE > /dev/null 2>&1 & + wait_for_ready + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping mysql ... " + if [ -f $MYSQL_PIDFILE ]; then + kill `cat $MYSQL_PIDFILE` > /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/package/mariadb/mariadb.hash b/package/mariadb/mariadb.hash new file mode 100644 index 00000000..fd73cca4 --- /dev/null +++ b/package/mariadb/mariadb.hash @@ -0,0 +1,6 @@ +# From https://downloads.mariadb.org/mariadb/10.11.6 +sha512 3d77f7be4a26d5a36af56150a5f8ed5e21adeed9bc8ea1bd694e47a25a571bd73468eada7c96e0dfe5a6c81bef625abf71a56d228cf43a738e555e3c0d824a6a mariadb-10.11.6.tar.gz + +# Hash for license files +sha256 2b278a3a2f20696113a7c57c4f3e6a5cdb9a25f2a827e72e0c089a2f805ff91a README.md +sha256 240a15a1d0f34d3abca462cdb7e5fb89470967563f16b0e71169e51c1e74cf2b COPYING diff --git a/package/mariadb/mariadb.mk b/package/mariadb/mariadb.mk new file mode 100644 index 00000000..1dcf6568 --- /dev/null +++ b/package/mariadb/mariadb.mk @@ -0,0 +1,171 @@ +################################################################################ +# +# mariadb +# +################################################################################ + +MARIADB_VERSION = 10.11.6 +MARIADB_SITE = https://downloads.mariadb.org/interstitial/mariadb-$(MARIADB_VERSION)/source +MARIADB_LICENSE = GPL-2.0 (server), GPL-2.0 with FLOSS exception (GPL client library), LGPL-2.0 (LGPL client library) +# Tarball no longer contains LGPL license text +# https://jira.mariadb.org/browse/MDEV-12297 +MARIADB_LICENSE_FILES = README.md COPYING +MARIADB_CPE_ID_VENDOR = mariadb +MARIADB_SELINUX_MODULES = mysql +MARIADB_INSTALL_STAGING = YES +MARIADB_CONFIG_SCRIPTS = mysql_config + +MARIADB_DEPENDENCIES = \ + host-mariadb \ + fmt \ + ncurses \ + openssl \ + pcre2 \ + zlib \ + libaio \ + libxml2 + +MARIADB_CONF_OPTS += \ + -DWITH_LIBFMT=system \ + -DWITH_PCRE=system + +# use bundled GPL-2.0+ licensed readline as package/readline is GPL-3.0+ +MARIADB_CONF_OPTS += -DWITH_READLINE=ON + +# 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 + +# RocksDB fails to build in some configurations with the following build error: +# ./output/build/mariadb-10.2.17/storage/rocksdb/rocksdb/utilities/backupable/backupable_db.cc:327:38: +# error: field 'result' has incomplete type 'std::promise' +# std::promise result; +# +# To work around the issue, we disable RocksDB +MARIADB_CONF_OPTS += -DWITHOUT_ROCKSDB=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_LIBRESSL),y) +MARIADB_CONF_OPTS += \ + -DLIBRESSL_RESULT=ON \ + -DLIBRESSL_RESULT__TRYRUN_OUTPUT="LibreSSL $(LIBRESSL_VERSION)" +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +MARIADB_DEPENDENCIES += systemd +MARIADB_CONF_OPTS += -DWITH_SYSTEMD=yes +else +MARIADB_CONF_OPTS += -DWITH_SYSTEMD=no +endif + +ifeq ($(BR2_PACKAGE_MARIADB_SERVER),y) +ifeq ($(BR2_PACKAGE_MARIADB_SERVER_EMBEDDED),y) +MARIADB_CONF_OPTS += -DWITH_EMBEDDED_SERVER=ON +else +MARIADB_CONF_OPTS += -DWITH_EMBEDDED_SERVER=OFF +endif +else +MARIADB_CONF_OPTS += -DWITHOUT_SERVER=ON +endif + +MARIADB_CXXFLAGS = $(TARGET_CXXFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +MARIADB_CXXFLAGS += -latomic +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y) +MARIADB_CXXFLAGS += -O0 +endif + +MARIADB_CONF_OPTS += \ + -DCMAKE_CXX_FLAGS="$(MARIADB_CXXFLAGS)" \ + -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) + +HOST_MARIADB_DEPENDENCIES = host-openssl +HOST_MARIADB_CONF_OPTS += -DWITH_SSL=system + +# 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 +endef +endif + +# We don't need mysql_config or mariadb_config on the target as it's +# only useful in staging. We also don't need the test suite on the target. +define MARIADB_POST_INSTALL + mkdir -p $(TARGET_DIR)/var/lib/mysql + $(RM) $(TARGET_DIR)/usr/bin/mysql_config + $(RM) $(TARGET_DIR)/usr/bin/mariadb_config + $(RM) -r $(TARGET_DIR)/usr/share/mysql/test +endef + +MARIADB_POST_INSTALL_TARGET_HOOKS += MARIADB_POST_INSTALL + +# overwrite cross-compiled mariadb_config executable by an native one +define MARIADB_POST_STAGING_INSTALL + $(HOSTCC) -I$(@D)/libmariadb/include \ + -o $(STAGING_DIR)/usr/bin/mariadb_config \ + $(@D)/libmariadb/mariadb_config/mariadb_config.c +endef +MARIADB_POST_INSTALL_STAGING_HOOKS += MARIADB_POST_STAGING_INSTALL + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/mariadb/mysqld.service b/package/mariadb/mysqld.service new file mode 100644 index 00000000..9433e146 --- /dev/null +++ b/package/mariadb/mysqld.service @@ -0,0 +1,16 @@ +[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' +ExecStartPre=!install -d -o mysql -g root -m 0755 /var/log/mysql +ExecStart=/usr/bin/mysqld_safe --log-error=/var/log/mysql/mysqld.log +Restart=always +User=mysql +RuntimeDirectory=mysql +RuntimeDirectoryMode=0755 +Type=notify +NotifyAccess=all + +[Install] +WantedBy=multi-user.target diff --git a/package/matchbox-common/Config.in b/package/matchbox-common/Config.in new file mode 100644 index 00000000..3717a551 --- /dev/null +++ b/package/matchbox-common/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_MATCHBOX_COMMON + bool "matchbox-common" + depends on BR2_PACKAGE_MATCHBOX_PANEL || BR2_PACKAGE_MATCHBOX_DESKTOP + select BR2_PACKAGE_MATCHBOX_LIB + help + Common desktop folders and matchbox-session script. + + http://git.yoctoproject.org/cgit/cgit.cgi/matchbox-common/ + +config BR2_PACKAGE_MATCHBOX_COMMON_PDA + bool "PDA style app folder" + depends on BR2_PACKAGE_MATCHBOX_COMMON diff --git a/package/matchbox-common/matchbox-common.hash b/package/matchbox-common/matchbox-common.hash new file mode 100644 index 00000000..683354b8 --- /dev/null +++ b/package/matchbox-common/matchbox-common.hash @@ -0,0 +1,4 @@ +# From http://downloads.yoctoproject.org/releases/matchbox/matchbox-common/0.9/matchbox-common-0.9.1.tar.bz2.md5 +md5 8e8ba0ee170a9ac78fdc583b00ccf76b matchbox-common-0.9.1.tar.bz2 +# Locally computed +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/matchbox-common/matchbox-common.mk b/package/matchbox-common/matchbox-common.mk new file mode 100644 index 00000000..fd54c27e --- /dev/null +++ b/package/matchbox-common/matchbox-common.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# matchbox-common +# +################################################################################ + +MATCHBOX_COMMON_VERSION_MAJOR = 0.9 +MATCHBOX_COMMON_VERSION = $(MATCHBOX_COMMON_VERSION_MAJOR).1 +MATCHBOX_COMMON_SOURCE = matchbox-common-$(MATCHBOX_COMMON_VERSION).tar.bz2 +MATCHBOX_COMMON_SITE = http://downloads.yoctoproject.org/releases/matchbox/matchbox-common/$(MATCHBOX_COMMON_VERSION_MAJOR) +MATCHBOX_COMMON_LICENSE = GPL-2.0+ +MATCHBOX_COMMON_LICENSE_FILES = COPYING +MATCHBOX_COMMON_DEPENDENCIES = matchbox-lib + +ifeq ($(strip $(BR2_PACKAGE_MATCHBOX_COMMON_PDA)),y) +MATCHBOX_COMMON_CONF_OPTS += --enable-pda-folders +else +MATCHBOX_COMMON_CONF_OPTS += --disable-pda-folders +endif + +$(eval $(autotools-package)) diff --git a/package/matchbox-desktop/Config.in b/package/matchbox-desktop/Config.in new file mode 100644 index 00000000..9d3e522a --- /dev/null +++ b/package/matchbox-desktop/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_MATCHBOX_DESKTOP + bool "matchbox-desktop" + select BR2_PACKAGE_MATCHBOX_LIB + select BR2_PACKAGE_ZLIB + help + A PDA style application launcher or 'item browser'. + + http://git.yoctoproject.org/cgit/cgit.cgi/matchbox-desktop diff --git a/package/matchbox-desktop/matchbox-desktop.hash b/package/matchbox-desktop/matchbox-desktop.hash new file mode 100644 index 00000000..61e8b863 --- /dev/null +++ b/package/matchbox-desktop/matchbox-desktop.hash @@ -0,0 +1,4 @@ +# From http://downloads.yoctoproject.org/releases/matchbox/matchbox-desktop/0.9/matchbox-desktop-0.9.1.tar.bz2.md5 +md5 3335a30b1a1aacfb39f23b505254765c matchbox-desktop-0.9.1.tar.bz2 +# Locally computed +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/matchbox-desktop/matchbox-desktop.mk b/package/matchbox-desktop/matchbox-desktop.mk new file mode 100644 index 00000000..9054dd80 --- /dev/null +++ b/package/matchbox-desktop/matchbox-desktop.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# matchbox-desktop +# +################################################################################ + +MATCHBOX_DESKTOP_VERSION_MAJOR = 0.9 +MATCHBOX_DESKTOP_VERSION = $(MATCHBOX_DESKTOP_VERSION_MAJOR).1 +MATCHBOX_DESKTOP_SOURCE = matchbox-desktop-$(MATCHBOX_DESKTOP_VERSION).tar.bz2 +MATCHBOX_DESKTOP_SITE = http://downloads.yoctoproject.org/releases/matchbox/matchbox-desktop/$(MATCHBOX_DESKTOP_VERSION_MAJOR) +MATCHBOX_DESKTOP_LICENSE = GPL-2.0+ +MATCHBOX_DESKTOP_LICENSE_FILES = COPYING +MATCHBOX_DESKTOP_DEPENDENCIES = matchbox-lib zlib + +# The bundled configure script does not properly replace LIBADD_DL, so +# we force an autoreconf even if we don't have any patches touching +# configure.ac/Makefile.am. +MATCHBOX_DESKTOP_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_STARTUP_NOTIFICATION),y) +MATCHBOX_DESKTOP_CONF_OPTS += --enable-startup-notification +MATCHBOX_DESKTOP_DEPENDENCIES += startup-notification +else +MATCHBOX_DESKTOP_CONF_OPTS += --disable-startup-notification +endif + +$(eval $(autotools-package)) diff --git a/package/matchbox-fakekey/Config.in b/package/matchbox-fakekey/Config.in new file mode 100644 index 00000000..0a8f6281 --- /dev/null +++ b/package/matchbox-fakekey/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_MATCHBOX_FAKEKEY + bool "matchbox-fakekey" + select BR2_PACKAGE_MATCHBOX_LIB + select BR2_PACKAGE_XLIB_LIBXTST + help + Library for simulating key press events under X11. + + http://git.yoctoproject.org/cgit/cgit.cgi/libfakekey/ diff --git a/package/matchbox-fakekey/matchbox-fakekey.hash b/package/matchbox-fakekey/matchbox-fakekey.hash new file mode 100644 index 00000000..3627b139 --- /dev/null +++ b/package/matchbox-fakekey/matchbox-fakekey.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 4e2fdc9bc20df469d53885c40e104122140131e06d4c184902070ec0b0f2ca9f libfakekey-0.3.tar.bz2 +sha256 3271662131760e9b30dd92495a0ea0b598fc457798cc67948947365299dd607d src/libfakekey.c diff --git a/package/matchbox-fakekey/matchbox-fakekey.mk b/package/matchbox-fakekey/matchbox-fakekey.mk new file mode 100644 index 00000000..99921ef8 --- /dev/null +++ b/package/matchbox-fakekey/matchbox-fakekey.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# matchbox-fakekey +# +################################################################################ + +MATCHBOX_FAKEKEY_VERSION = 0.3 +MATCHBOX_FAKEKEY_SOURCE = libfakekey-$(MATCHBOX_FAKEKEY_VERSION).tar.bz2 +MATCHBOX_FAKEKEY_SITE = \ + http://git.yoctoproject.org/cgit/cgit.cgi/libfakekey/snapshot +MATCHBOX_FAKEKEY_LICENSE = GPL-2.0+ +MATCHBOX_FAKEKEY_LICENSE_FILES = src/libfakekey.c +# From git +MATCHBOX_FAKEKEY_AUTORECONF = YES +MATCHBOX_FAKEKEY_INSTALL_STAGING = YES +MATCHBOX_FAKEKEY_DEPENDENCIES = matchbox-lib xlib_libXtst +MATCHBOX_FAKEKEY_CONF_OPTS = --enable-expat + +define MATCHBOX_FAKEKEY_POST_CONFIGURE_FIXES + $(SED) 's:^SUBDIRS = fakekey src tests.*:SUBDIRS = fakekey src:g' \ + $(@D)/Makefile +endef + +MATCHBOX_FAKEKEY_POST_CONFIGURE_HOOKS += MATCHBOX_FAKEKEY_POST_CONFIGURE_FIXES + +$(eval $(autotools-package)) diff --git a/package/matchbox-keyboard/Config.in b/package/matchbox-keyboard/Config.in new file mode 100644 index 00000000..3d7a9d20 --- /dev/null +++ b/package/matchbox-keyboard/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_MATCHBOX_KEYBOARD + bool "matchbox-keyboard" + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_XLIB_LIBXTST + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XLIB_LIBXFT if !BR2_PACKAGE_CAIRO + select BR2_PACKAGE_MATCHBOX_FAKEKEY + select BR2_PACKAGE_MATCHBOX_LIB + help + Virtual Keyboard + + http://git.yoctoproject.org/cgit/cgit.cgi/matchbox-keyboard/ diff --git a/package/matchbox-keyboard/matchbox-keyboard.hash b/package/matchbox-keyboard/matchbox-keyboard.hash new file mode 100644 index 00000000..43ace650 --- /dev/null +++ b/package/matchbox-keyboard/matchbox-keyboard.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 44fc6dc6075090d6f8e43f8667cf8a85bed59b7221a5ee81843454c66e352790 matchbox-keyboard-0.1.1.tar.bz2 +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING +sha256 bba6fd8976fa5c669ddc1378a3d8d49a74263d4d39efb9a90cefb3583a813ecc applet/applet.c diff --git a/package/matchbox-keyboard/matchbox-keyboard.mk b/package/matchbox-keyboard/matchbox-keyboard.mk new file mode 100644 index 00000000..a1e3c615 --- /dev/null +++ b/package/matchbox-keyboard/matchbox-keyboard.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# matchbox-keyboard +# +################################################################################ + +MATCHBOX_KEYBOARD_VERSION = 0.1.1 +MATCHBOX_KEYBOARD_SOURCE = matchbox-keyboard-$(MATCHBOX_KEYBOARD_VERSION).tar.bz2 +MATCHBOX_KEYBOARD_SITE = \ + http://git.yoctoproject.org/cgit/cgit.cgi/matchbox-keyboard/snapshot +MATCHBOX_KEYBOARD_LICENSE = LGPL-2.1, GPL-2.0+ (applet.c) +MATCHBOX_KEYBOARD_LICENSE_FILES = COPYING applet/applet.c +MATCHBOX_KEYBOARD_DEPENDENCIES = \ + host-pkgconf matchbox-lib matchbox-fakekey expat libpng xlib_libXrender +# From git +MATCHBOX_KEYBOARD_AUTORECONF = YES + +define MATCHBOX_KEYBOARD_POST_INSTALL_FIXES + $(INSTALL) -D -m 0755 package/matchbox-keyboard/mb-applet-kbd-wrapper.sh \ + $(TARGET_DIR)/usr/bin/mb-applet-kbd-wrapper.sh +endef + +MATCHBOX_KEYBOARD_POST_INSTALL_TARGET_HOOKS += MATCHBOX_KEYBOARD_POST_INSTALL_FIXES + +ifeq ($(BR2_PACKAGE_CAIRO),y) +MATCHBOX_KEYBOARD_CONF_OPTS += --enable-cairo +MATCHBOX_KEYBOARD_DEPENDENCIES += cairo +else +MATCHBOX_KEYBOARD_CONF_OPTS += --disable-cairo +MATCHBOX_KEYBOARD_DEPENDENCIES += xlib_libXft +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3),y) +MATCHBOX_KEYBOARD_CONF_OPTS += --enable-gtk3-im +MATCHBOX_KEYBOARD_DEPENDENCIES += libgtk3 +else +MATCHBOX_KEYBOARD_CONF_OPTS += --disable-gtk3-im +endif + +$(eval $(autotools-package)) diff --git a/package/matchbox-keyboard/mb-applet-kbd-wrapper.sh b/package/matchbox-keyboard/mb-applet-kbd-wrapper.sh new file mode 100644 index 00000000..be202b5d --- /dev/null +++ b/package/matchbox-keyboard/mb-applet-kbd-wrapper.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# + +killall matchbox-keyboard +if [ ! $? -eq 0 ] +then + matchbox-keyboard & +fi diff --git a/package/matchbox-lib/0001-index-is-legacy.patch b/package/matchbox-lib/0001-index-is-legacy.patch new file mode 100644 index 00000000..b486fb18 --- /dev/null +++ b/package/matchbox-lib/0001-index-is-legacy.patch @@ -0,0 +1,35 @@ +index() is a legacy function, not implemented in some uClibc +configurations. + +Signed-off-by: Thomas Petazzoni +--- + libmb/mbexp.c | 2 +- + libmb/mbmenu.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +Index: libmatchbox-1.9/libmb/mbexp.c +=================================================================== +--- libmatchbox-1.9.orig/libmb/mbexp.c ++++ libmatchbox-1.9/libmb/mbexp.c +@@ -492,7 +492,7 @@ + + /* get the family */ + +- if (index(spec, ',') != NULL || index(spec, '-') != NULL) ++ if (strchr(spec, ',') != NULL || strchr(spec, '-') != NULL) + has_comma_delim = True; + + while (!got_family) { +Index: libmatchbox-1.9/libmb/mbmenu.c +=================================================================== +--- libmatchbox-1.9.orig/libmb/mbmenu.c ++++ libmatchbox-1.9/libmb/mbmenu.c +@@ -433,7 +433,7 @@ + { + s = p; + found = NULL; +- while(index("/\0", *p) == NULL) p++; ++ while(strchr("/\0", *p) == NULL) p++; + if (*p != '\0') { *p = '\0'; p++; }; + + item = current->items; diff --git a/package/matchbox-lib/Config.in b/package/matchbox-lib/Config.in new file mode 100644 index 00000000..98cdae73 --- /dev/null +++ b/package/matchbox-lib/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_MATCHBOX_LIB + bool "matchbox-lib" + select BR2_PACKAGE_XLIB_LIBXEXT + help + Matchbox common functionality library. + + http://git.yoctoproject.org/cgit/cgit.cgi/libmatchbox diff --git a/package/matchbox-lib/matchbox-lib.hash b/package/matchbox-lib/matchbox-lib.hash new file mode 100644 index 00000000..8144c102 --- /dev/null +++ b/package/matchbox-lib/matchbox-lib.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 5c7795e46c24d848a2b960f3b994911165d95e5d5731e39105ee0d808d2373eb libmatchbox-1.12.tar.bz2 +sha256 a190dc9c8043755d90f8b0a75fa66b9e42d4af4c980bf5ddc633f0124db3cee7 COPYING diff --git a/package/matchbox-lib/matchbox-lib.mk b/package/matchbox-lib/matchbox-lib.mk new file mode 100644 index 00000000..00ca4a0d --- /dev/null +++ b/package/matchbox-lib/matchbox-lib.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# matchbox-lib +# +################################################################################ + +MATCHBOX_LIB_VERSION = 1.12 +MATCHBOX_LIB_SOURCE = libmatchbox-$(MATCHBOX_LIB_VERSION).tar.bz2 +MATCHBOX_LIB_SITE = http://git.yoctoproject.org/cgit/cgit.cgi/libmatchbox/snapshot +MATCHBOX_LIB_LICENSE = LGPL-2.1+ +MATCHBOX_LIB_LICENSE_FILES = COPYING +# From git +MATCHBOX_LIB_AUTORECONF = YES +MATCHBOX_LIB_INSTALL_STAGING = YES +MATCHBOX_LIB_DEPENDENCIES = host-pkgconf xlib_libXext +MATCHBOX_LIB_CONF_OPTS = --disable-doxygen-docs +MATCHBOX_LIB_CONF_ENV = LIBS="-lX11" + +define MATCHBOX_LIB_POST_INSTALL_FIXES + $(SED) 's:-I$(STAGING_DIR)/:-I/:g' \ + -e 's:-I/usr/include\( \|$$\)::g' \ + $(STAGING_DIR)/usr/lib/pkgconfig/libmb.pc +endef + +MATCHBOX_LIB_POST_INSTALL_STAGING_HOOKS += MATCHBOX_LIB_POST_INSTALL_FIXES + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),y) +ifeq ($(BR2_PACKAGE_XLIB_LIBXPM),y) +MATCHBOX_LIB_DEPENDENCIES += xlib_libXpm +endif +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +MATCHBOX_LIB_CONF_OPTS += --enable-jpeg +MATCHBOX_LIB_DEPENDENCIES += jpeg +else +MATCHBOX_LIB_CONF_OPTS += --disable-jpeg +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +MATCHBOX_LIB_CONF_OPTS += --enable-png +MATCHBOX_LIB_DEPENDENCIES += libpng +else +MATCHBOX_LIB_CONF_OPTS += --disable-png +endif + +ifeq ($(BR2_PACKAGE_PANGO)$(BR2_PACKAGE_XLIB_LIBXFT)$(BR2_PACKAGE_XLIB_LIBXRENDER),yyy) +MATCHBOX_LIB_CONF_OPTS += --enable-pango +MATCHBOX_LIB_DEPENDENCIES += pango +else +MATCHBOX_LIB_CONF_OPTS += --disable-pango +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFT),y) +MATCHBOX_LIB_CONF_OPTS += --enable-xft +MATCHBOX_LIB_DEPENDENCIES += xlib_libXft +else +MATCHBOX_LIB_CONF_OPTS += --disable-xft +endif + +$(eval $(autotools-package)) diff --git a/package/matchbox-panel/0001-index-is-legacy.patch b/package/matchbox-panel/0001-index-is-legacy.patch new file mode 100644 index 00000000..925c326e --- /dev/null +++ b/package/matchbox-panel/0001-index-is-legacy.patch @@ -0,0 +1,20 @@ +Replace the legacy index() with strchr() + +Signed-off-by: Thomas Petazzoni +--- + applets/mb-applet-menu-launcher.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: matchbox-panel-0.9.3/applets/mb-applet-menu-launcher.c +=================================================================== +--- matchbox-panel-0.9.3.orig/applets/mb-applet-menu-launcher.c ++++ matchbox-panel-0.9.3/applets/mb-applet-menu-launcher.c +@@ -280,7 +280,7 @@ + DBG("\tkey %s ", key); + if (*(++p) == '"') { p++; tc = sc; } /* skip "'s */ + val = p; +- while(index(tc,*p) == NULL) ++ while(strchr(tc,*p) == NULL) + { + if (*p == '\\' && *(p+1) == '"') p++; /* skip \" */ + p++; diff --git a/package/matchbox-panel/0002-mb-applet-wireless.patch b/package/matchbox-panel/0002-mb-applet-wireless.patch new file mode 100644 index 00000000..93633b36 --- /dev/null +++ b/package/matchbox-panel/0002-mb-applet-wireless.patch @@ -0,0 +1,34 @@ +mb-applet-wireless: fix undefined reference to `log' and `lrint' + +mb-applet-wireless.o: In function `update_wireless': +.. matchbox-panel-0.9.3/applets/mb-applet-wireless.c:143: undefined reference to `log' +.. matchbox-panel-0.9.3/applets/mb-applet-wireless.c:143: undefined reference to `lrint' + +Signed-off-by: Jean-Paul Etienne +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +[arnout: add description and Signed-off-by] +--- +diff -rup matchbox-panel-0.9.3.orig/applets/Makefile.in matchbox-panel-0.9.3/applets/Makefile.in +--- matchbox-panel-0.9.3.orig/applets/Makefile.in 2015-01-23 00:16:47.594850985 +0100 ++++ matchbox-panel-0.9.3/applets/Makefile.in 2015-01-23 00:15:18.458694947 +0100 +@@ -198,7 +198,7 @@ WANT_SMALL_ICONS_FALSE = @WANT_SMALL_ICO + WANT_SMALL_ICONS_TRUE = @WANT_SMALL_ICONS_TRUE@ + WANT_WIFI_FALSE = @WANT_WIFI_FALSE@ + WANT_WIFI_TRUE = @WANT_WIFI_TRUE@ +-WIRELESS_LIBS = @WIRELESS_LIBS@ ++WIRELESS_LIBS = @WIRELESS_LIBS@ -lm + XGETTEXT = @XGETTEXT@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_STRIP = @ac_ct_STRIP@ +diff -rup matchbox-panel-0.9.3.orig/applets/mb-applet-wireless.c matchbox-panel-0.9.3/applets/mb-applet-wireless.c +--- matchbox-panel-0.9.3.orig/applets/mb-applet-wireless.c 2015-01-23 00:16:31.531822865 +0100 ++++ matchbox-panel-0.9.3/applets/mb-applet-wireless.c 2015-01-23 00:03:43.067563827 +0100 +@@ -50,6 +50,8 @@ + + #endif + ++#include ++ + #ifdef MB_HAVE_PNG + #define IMG_EXT "png" + #else diff --git a/package/matchbox-panel/0003-mb-applet-battery.patch b/package/matchbox-panel/0003-mb-applet-battery.patch new file mode 100644 index 00000000..585eb391 --- /dev/null +++ b/package/matchbox-panel/0003-mb-applet-battery.patch @@ -0,0 +1,21 @@ +mb-applet-battery: don't declare line_parse as static + +Fix this build failure: + mb-applet-battery.c: In function 'read_apm': + mb-applet-battery.c:181:2: error: invalid storage class for function 'line_parse' + +Reported-by: Arnout Vandecappelle +Signed-off-by: "Yann E. MORIN" + +diff -durN matchbox-panel-0.9.3.orig/applets/mb-applet-battery.c matchbox-panel-0.9.3/applets/mb-applet-battery.c +--- matchbox-panel-0.9.3.orig/applets/mb-applet-battery.c 2006-02-07 23:27:24.000000000 +0100 ++++ matchbox-panel-0.9.3/applets/mb-applet-battery.c 2015-05-02 17:13:00.843578796 +0200 +@@ -177,7 +177,7 @@ + unsigned long present_rate; + }; + +- static int ++ int + line_parse(char *line, struct entry *e) + { + char *ptr; diff --git a/package/matchbox-panel/Config.in b/package/matchbox-panel/Config.in new file mode 100644 index 00000000..1fc38336 --- /dev/null +++ b/package/matchbox-panel/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_MATCHBOX_PANEL + bool "matchbox-panel" + select BR2_PACKAGE_MATCHBOX_LIB + help + A flexible always present 'window bar' for holding + application launchers. + + http://git.yoctoproject.org/cgit/cgit.cgi/matchbox-panel/ diff --git a/package/matchbox-panel/matchbox-panel.hash b/package/matchbox-panel/matchbox-panel.hash new file mode 100644 index 00000000..9b4f985b --- /dev/null +++ b/package/matchbox-panel/matchbox-panel.hash @@ -0,0 +1,4 @@ +# From http://downloads.yoctoproject.org/releases/matchbox/matchbox-panel/0.9/matchbox-panel-0.9.3.tar.bz2.md5 +md5 56d1807636f3919e22e51896ab7ccd2e matchbox-panel-0.9.3.tar.bz2 +# Locally computed +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/matchbox-panel/matchbox-panel.mk b/package/matchbox-panel/matchbox-panel.mk new file mode 100644 index 00000000..aaa72368 --- /dev/null +++ b/package/matchbox-panel/matchbox-panel.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# matchbox-panel +# +################################################################################ + +MATCHBOX_PANEL_VERSION_MAJOR = 0.9 +MATCHBOX_PANEL_VERSION = $(MATCHBOX_PANEL_VERSION_MAJOR).3 +MATCHBOX_PANEL_SOURCE = matchbox-panel-$(MATCHBOX_PANEL_VERSION).tar.bz2 +MATCHBOX_PANEL_SITE = http://downloads.yoctoproject.org/releases/matchbox/matchbox-panel/$(MATCHBOX_PANEL_VERSION_MAJOR) +MATCHBOX_PANEL_LICENSE = GPL-2.0+ +MATCHBOX_PANEL_LICENSE_FILES = COPYING +MATCHBOX_PANEL_DEPENDENCIES = matchbox-lib $(TARGET_NLS_DEPENDENCIES) +MATCHBOX_PANEL_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) +MATCHBOX_PANEL_CONF_OPTS = --enable-expat --enable-dnotify + +ifeq ($(BR2_PACKAGE_MATCHBOX_STARTUP_MONITOR),y) +MATCHBOX_PANEL_CONF_OPTS += --enable-startup-notification +MATCHBOX_PANEL_DEPENDENCIES += matchbox-startup-monitor +else +MATCHBOX_PANEL_CONF_OPTS += --disable-startup-notification +endif + +# Using ACPI is only possible on x86 (32- or 64-bit) or AArch64 +ifeq ($(BR2_aarch64)$(BR2_i386)$(BR2_x86_64),y) +MATCHBOX_PANEL_CONF_OPTS += --enable-acpi-linux +else +MATCHBOX_PANEL_CONF_OPTS += --disable-acpi-linux +endif + +ifeq ($(BR2_PACKAGE_WIRELESS_TOOLS_LIB),y) +MATCHBOX_PANEL_DEPENDENCIES += wireless_tools +endif + +$(eval $(autotools-package)) diff --git a/package/matchbox-startup-monitor/0001-true-false.patch b/package/matchbox-startup-monitor/0001-true-false.patch new file mode 100644 index 00000000..c92a0776 --- /dev/null +++ b/package/matchbox-startup-monitor/0001-true-false.patch @@ -0,0 +1,21 @@ +mbmonitor uses TRUE / FALSE without defining them + +Signed-off-by: Peter Korsgaard +--- + mbmonitor.c | 3 +++ + 1 file changed, 3 insertions(+) + +Index: mb-applet-startup-monitor-0.1/mbmonitor.c +=================================================================== +--- mb-applet-startup-monitor-0.1.orig/mbmonitor.c ++++ mb-applet-startup-monitor-0.1/mbmonitor.c +@@ -43,6 +43,9 @@ + #define POLLTIME 10 + #define HOURGLASS_N_FRAMES 8 + ++#define FALSE 0 ++#define TRUE 1 ++ + typedef struct LaunchList LaunchList; + + struct LaunchList diff --git a/package/matchbox-startup-monitor/Config.in b/package/matchbox-startup-monitor/Config.in new file mode 100644 index 00000000..be2fab4c --- /dev/null +++ b/package/matchbox-startup-monitor/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_MATCHBOX_STARTUP_MONITOR + bool "matchbox-startup-monitor" + select BR2_PACKAGE_MATCHBOX_LIB + select BR2_PACKAGE_STARTUP_NOTIFICATION + help + Matchbox Panel Startup Monitor Applet. + + http://git.yoctoproject.org/cgit.cgi/mb-applet-startup-monitor/ diff --git a/package/matchbox-startup-monitor/matchbox-startup-monitor.hash b/package/matchbox-startup-monitor/matchbox-startup-monitor.hash new file mode 100644 index 00000000..ec312a62 --- /dev/null +++ b/package/matchbox-startup-monitor/matchbox-startup-monitor.hash @@ -0,0 +1,4 @@ +# From http://downloads.yoctoproject.org/releases/matchbox/mb-applet-startup-monitor/0.1/mb-applet-startup-monitor-0.1.tar.bz2.md5 +md5 ea4b3c1ebee3f731b77a2d4bf8e9aa3c mb-applet-startup-monitor-0.1.tar.bz2 +# Locally computed +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/matchbox-startup-monitor/matchbox-startup-monitor.mk b/package/matchbox-startup-monitor/matchbox-startup-monitor.mk new file mode 100644 index 00000000..cd2ae416 --- /dev/null +++ b/package/matchbox-startup-monitor/matchbox-startup-monitor.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# matchbox-startup-monitor +# +################################################################################ + +MATCHBOX_STARTUP_MONITOR_VERSION = 0.1 +MATCHBOX_STARTUP_MONITOR_SOURCE = mb-applet-startup-monitor-$(MATCHBOX_STARTUP_MONITOR_VERSION).tar.bz2 +MATCHBOX_STARTUP_MONITOR_SITE = http://downloads.yoctoproject.org/releases/matchbox/mb-applet-startup-monitor/$(MATCHBOX_STARTUP_MONITOR_VERSION) +MATCHBOX_STARTUP_MONITOR_LICENSE = GPL-2.0+ +MATCHBOX_STARTUP_MONITOR_LICENSE_FILES = COPYING +MATCHBOX_STARTUP_MONITOR_DEPENDENCIES = matchbox-lib startup-notification + +# Obsolete constructs in the archaic configure.ac generated an outworn +# configure script that incorrectly searches a C++ compiler. Regenerate +# the autoconf machinery to avoid failures without a C++ compiler. +MATCHBOX_STARTUP_MONITOR_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/matchbox/0001-defaulttheme.patch b/package/matchbox/0001-defaulttheme.patch new file mode 100644 index 00000000..b4da6640 --- /dev/null +++ b/package/matchbox/0001-defaulttheme.patch @@ -0,0 +1,47 @@ +[PATCH] fix mbtheme build issue when png support is disabled + +DEFAULTTHEME{,NAME} is not defined when png support is disabled, leading +to compile errors in mbtheme.c: + +mbtheme.c: In function 'show_parse_error': +mbtheme.c:2422:28: error: 'DEFAULTTHEME' undeclared (first use in this function) +mbtheme.c:2422:28: note: each undeclared identifier is reported only once for each function it appears in +mbtheme.c: In function 'mbtheme_init': +mbtheme.c:2448:30: error: 'DEFAULTTHEME' undeclared (first use in this function) +mbtheme.c:2470:25: error: 'DEFAULTTHEMENAME' undeclared (first use in this function) + +Fix it by unconditionally defining them as the values used are the same +in png / !png cases anyway. + +Signed-off-by: Peter Korsgaard +--- + src/structs.h | 9 --------- + 1 file changed, 9 deletions(-) + +Index: matchbox-window-manager-1.2/src/structs.h +=================================================================== +--- matchbox-window-manager-1.2.orig/src/structs.h ++++ matchbox-window-manager-1.2/src/structs.h +@@ -81,8 +81,6 @@ + + #define GENERIC_ICON PKGDATADIR "/mbnoapp.xpm" + +-#ifdef MB_HAVE_PNG +- + #define DEFAULT_THEME DATADIR "/themes/Default/matchbox/theme.xml" + + #define DEFAULTTHEME DATADIR "/themes/Default/matchbox/theme.xml" +@@ -91,13 +89,6 @@ + + #define DEFAULTTHEMENAME "Default" + +-#else +- +-#define DEFAULT_THEME DATADIR "/themes/Default/matchbox/theme.xml" +-#define DEFAULT_THEME_NAME "Default" +- +-#endif +- + #define CONFDEFAULTS PKGDATADIR "/defaults" + + /* Simple Macros */ diff --git a/package/matchbox/0002-src-Fix-build-with-gcc-10.patch b/package/matchbox/0002-src-Fix-build-with-gcc-10.patch new file mode 100644 index 00000000..1556c6be --- /dev/null +++ b/package/matchbox/0002-src-Fix-build-with-gcc-10.patch @@ -0,0 +1,47 @@ +From 844f61069896fe3f549ab425d731c061028f697c Mon Sep 17 00:00:00 2001 +From: Adrian Bunk +Date: Tue, 12 May 2020 09:44:05 +0300 +Subject: src: Fix build with gcc 10 + +gcc 10 enables -fno-common by default which fails without these typedefs + +Signed-off-by: Adrian Bunk +Signed-off-by: Richard Purdie + +[Retrieved from: +http://git.yoctoproject.org/cgit/cgit.cgi/matchbox-window-manager/commit/?id=844f61069896fe3f549ab425d731c061028f697c] +Signed-off-by: Fabrice Fontaine +--- + src/mbtheme.h | 2 +- + src/structs.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/mbtheme.h b/src/mbtheme.h +index aa9a7c5..ad03bde 100644 +--- a/src/mbtheme.h ++++ b/src/mbtheme.h +@@ -46,7 +46,7 @@ typedef struct _mb_theme_param + + } MBThemeParam; + +-enum { ++typedef enum { + LAYER_GRADIENT_HORIZ = 1, + LAYER_GRADIENT_VERT, + LAYER_LABEL, +diff --git a/src/structs.h b/src/structs.h +index 24985e7..8f53e72 100644 +--- a/src/structs.h ++++ b/src/structs.h +@@ -148,7 +148,7 @@ + + /* Atoms, if you change these check ewmh_init() first */ + +-enum { ++typedef enum { + WM_STATE = 0, + WM_CHANGE_STATE, + WM_PROTOCOLS, +-- +cgit v1.2.2-1-g5e49 + diff --git a/package/matchbox/Config.in b/package/matchbox/Config.in new file mode 100644 index 00000000..9d212902 --- /dev/null +++ b/package/matchbox/Config.in @@ -0,0 +1,35 @@ +menuconfig BR2_PACKAGE_MATCHBOX + bool "matchbox" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_MATCHBOX_LIB + help + Matchbox is an Open Source base environment for the X Window + System running on non-desktop embedded platforms such as + handhelds, set-top boxes, kiosks and anything else for which + screen space, input mechanisms or system resources are + limited. + + https://www.yoctoproject.org/tools-resources/projects/matchbox + +if BR2_PACKAGE_MATCHBOX + +config BR2_PACKAGE_MATCHBOX_SM + bool "session manager" + select BR2_PACKAGE_XLIB_LIBSM + help + Enable support for the Session Manager. + +comment "matchbox utilities" + +source "package/matchbox-common/Config.in" +source "package/matchbox-desktop/Config.in" +source "package/matchbox-fakekey/Config.in" +source "package/matchbox-keyboard/Config.in" +source "package/matchbox-lib/Config.in" +source "package/matchbox-panel/Config.in" +source "package/matchbox-startup-monitor/Config.in" + +endif diff --git a/package/matchbox/matchbox.hash b/package/matchbox/matchbox.hash new file mode 100644 index 00000000..fdb8f7d1 --- /dev/null +++ b/package/matchbox/matchbox.hash @@ -0,0 +1,6 @@ +# From http://downloads.yoctoproject.org/releases/matchbox/matchbox-window-manager/1.2/matchbox-window-manager-1.2.tar.bz2.md5 +md5 3e158dcf57823b55c926d95b245500fb matchbox-window-manager-1.2.tar.bz2 + +# Locally computed +sha256 81a23a4af797cf350759fd5ac738797015a66dd5dba2f3d9f3c6908506c1ceff matchbox-window-manager-1.2.tar.bz2 +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/package/matchbox/matchbox.mk b/package/matchbox/matchbox.mk new file mode 100644 index 00000000..4d30a42c --- /dev/null +++ b/package/matchbox/matchbox.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# matchbox +# +################################################################################ + +MATCHBOX_VERSION = 1.2 +MATCHBOX_SOURCE = matchbox-window-manager-$(MATCHBOX_VERSION).tar.bz2 +MATCHBOX_SITE = http://downloads.yoctoproject.org/releases/matchbox/matchbox-window-manager/$(MATCHBOX_VERSION) +MATCHBOX_LICENSE = GPL-2.0+ +MATCHBOX_LICENSE_FILES = COPYING + +MATCHBOX_DEPENDENCIES = expat matchbox-lib +MATCHBOX_CONF_OPTS = \ + --enable-expat \ + --disable-gconf \ + --disable-composite \ + --disable-standalone \ + --disable-standalone-xft + +# Workaround bug in configure script +MATCHBOX_CONF_ENV = expat=yes + +ifeq ($(BR2_PACKAGE_STARTUP_NOTIFICATION),y) +MATCHBOX_CONF_OPTS += --enable-startup-notification +MATCHBOX_DEPENDENCIES += startup-notification +else +MATCHBOX_CONF_OPTS += --disable-startup-notification +endif + +ifeq ($(BR2_PACKAGE_MATCHBOX_SM),y) +MATCHBOX_CONF_OPTS += --enable-session +MATCHBOX_DEPENDENCIES += xlib_libSM +else +MATCHBOX_CONF_OPTS += --disable-session +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y) +MATCHBOX_DEPENDENCIES += xlib_libXcursor +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y) +MATCHBOX_DEPENDENCIES += xlib_libXfixes +endif + +$(eval $(autotools-package)) diff --git a/package/matio/Config.in b/package/matio/Config.in new file mode 100644 index 00000000..9e2ea680 --- /dev/null +++ b/package/matio/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_MATIO + bool "matio" + select BR2_PACKAGE_ZLIB + help + matio is an C library for reading and writing MATLAB MAT + files. + + https://sourceforge.net/projects/matio diff --git a/package/matio/matio.hash b/package/matio/matio.hash new file mode 100644 index 00000000..976e9f03 --- /dev/null +++ b/package/matio/matio.hash @@ -0,0 +1,4 @@ +# From https://sourceforge.net/projects/matio/files/matio/1.5.26/ +sha512 725f5287a1bb9367828ede5071da82892327fb8edd51f5a21d1370614d9ea81034c3bb4d16c87e80dc9e800086800ce14e3c4ad636255ea45b7741453e6cbb4c matio-1.5.26.tar.xz +# Locally computed +sha256 b3da766592f242fd5cdd4dfd15ac5e6119e88fd6844c3c0e7acb8ad3178280a3 COPYING diff --git a/package/matio/matio.mk b/package/matio/matio.mk new file mode 100644 index 00000000..dc9be2ac --- /dev/null +++ b/package/matio/matio.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# matio +# +################################################################################ + +MATIO_VERSION = 1.5.26 +MATIO_SOURCE = matio-$(MATIO_VERSION).tar.xz +MATIO_SITE = \ + https://downloads.sourceforge.net/project/matio/matio/$(MATIO_VERSION) +MATIO_LICENSE = BSD-2-Clause +MATIO_LICENSE_FILES = COPYING +MATIO_CPE_ID_VALID = YES +MATIO_DEPENDENCIES = zlib +MATIO_INSTALL_STAGING = YES + +# va_copy() +MATIO_CONF_ENV = ac_cv_va_copy=yes + +MATIO_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_99410),y) +MATIO_CFLAGS += -O0 +endif + +MATIO_CONF_ENV += CFLAGS="$(MATIO_CFLAGS)" + +# mat73 require hdf5 (not available), extented-sparse take 2KB +MATIO_CONF_OPTS = --disable-mat73 --enable-extended-sparse + +$(eval $(autotools-package)) diff --git a/package/mawk/Config.in b/package/mawk/Config.in new file mode 100644 index 00000000..80118b3f --- /dev/null +++ b/package/mawk/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_MAWK + bool "mawk" + help + Interpreter for the AWK Programming Language. + + http://invisible-island.net/mawk/mawk.html diff --git a/package/mawk/mawk.hash b/package/mawk/mawk.hash new file mode 100644 index 00000000..31a74cab --- /dev/null +++ b/package/mawk/mawk.hash @@ -0,0 +1,2 @@ +sha256 a8e319a83744b1f1fb6988dfa189d61887f866e9140cc9a49eb003b2b0655e88 mawk-1.3.4-20240123.tgz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/mawk/mawk.mk b/package/mawk/mawk.mk new file mode 100644 index 00000000..9aadf6d9 --- /dev/null +++ b/package/mawk/mawk.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# mawk +# +################################################################################ + +MAWK_VERSION = 1.3.4-20240123 +MAWK_SITE = https://invisible-mirror.net/archives/mawk +MAWK_SOURCE = mawk-$(MAWK_VERSION).tgz +MAWK_LICENSE = GPL-2.0 +MAWK_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/mbedtls/Config.in b/package/mbedtls/Config.in new file mode 100644 index 00000000..abbe3356 --- /dev/null +++ b/package/mbedtls/Config.in @@ -0,0 +1,38 @@ +config BR2_PACKAGE_MBEDTLS + bool "mbedtls" + help + mbed TLS (formerly known as PolarSSL) makes it trivially easy + for developers to include cryptographic and SSL/TLS + capabilities in their (embedded) products, facilitating this + functionality with a minimal coding footprint. + + https://tls.mbed.org/ + +if BR2_PACKAGE_MBEDTLS + +config BR2_PACKAGE_MBEDTLS_PROGRAMS + bool "mbedtls programs" + depends on BR2_USE_MMU # fork() + help + 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. + +config BR2_PACKAGE_MBEDTLS_DTLS_SRTP + bool "enable DTLS-SRTP support" + help + Enable support for negotiation of DTLS-SRTP (RFC 5764) + through the use_srtp extension. + +endif diff --git a/package/mbedtls/mbedtls.hash b/package/mbedtls/mbedtls.hash new file mode 100644 index 00000000..5466b0e7 --- /dev/null +++ b/package/mbedtls/mbedtls.hash @@ -0,0 +1,4 @@ +# From https://github.com/ARMmbed/mbedtls/releases/tag/v2.28.8: +sha256 241c68402cef653e586be3ce28d57da24598eb0df13fcdea9d99bfce58717132 mbedtls-2.28.8.tar.bz2 +# Locally calculated +sha256 9b405ef4c89342f5eae1dd828882f931747f71001cfba7d114801039b52ad09b LICENSE diff --git a/package/mbedtls/mbedtls.mk b/package/mbedtls/mbedtls.mk new file mode 100644 index 00000000..9757b8b0 --- /dev/null +++ b/package/mbedtls/mbedtls.mk @@ -0,0 +1,84 @@ +################################################################################ +# +# mbedtls +# +################################################################################ + +MBEDTLS_VERSION = 2.28.8 +MBEDTLS_SITE = https://github.com/Mbed-TLS/mbedtls/releases/download/v$(MBEDTLS_VERSION) +MBEDTLS_SOURCE = mbedtls-$(MBEDTLS_VERSION).tar.bz2 +MBEDTLS_CONF_OPTS = \ + -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) -std=c99" \ + -DENABLE_PROGRAMS=$(if $(BR2_PACKAGE_MBEDTLS_PROGRAMS),ON,OFF) \ + -DENABLE_TESTING=OFF \ + -DMBEDTLS_FATAL_WARNINGS=OFF +MBEDTLS_INSTALL_STAGING = YES +MBEDTLS_LICENSE = Apache-2.0 or GPL-2.0+ +MBEDTLS_LICENSE_FILES = LICENSE +MBEDTLS_CPE_ID_VENDOR = arm +MBEDTLS_CPE_ID_PRODUCT = mbed_tls + +# This is mandatory for hiawatha +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +define MBEDTLS_ENABLE_THREADING + $(SED) "s://#define MBEDTLS_THREADING_C:#define MBEDTLS_THREADING_C:" \ + $(@D)/include/mbedtls/config.h + $(SED) "s://#define MBEDTLS_THREADING_PTHREAD:#define MBEDTLS_THREADING_PTHREAD:" \ + $(@D)/include/mbedtls/config.h +endef +MBEDTLS_PRE_CONFIGURE_HOOKS += MBEDTLS_ENABLE_THREADING +ifeq ($(BR2_STATIC_LIBS),y) +MBEDTLS_CONF_OPTS += -DLINK_WITH_PTHREAD=ON +endif +endif + +ifeq ($(BR2_STATIC_LIBS),y) +MBEDTLS_CONF_OPTS += \ + -DUSE_SHARED_MBEDTLS_LIBRARY=OFF -DUSE_STATIC_MBEDTLS_LIBRARY=ON +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +MBEDTLS_CONF_OPTS += \ + -DUSE_SHARED_MBEDTLS_LIBRARY=ON -DUSE_STATIC_MBEDTLS_LIBRARY=ON +else ifeq ($(BR2_SHARED_LIBS),y) +MBEDTLS_CONF_OPTS += \ + -DUSE_SHARED_MBEDTLS_LIBRARY=ON -DUSE_STATIC_MBEDTLS_LIBRARY=OFF +endif + +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_PRE_CONFIGURE_HOOKS += MBEDTLS_ENABLE_ZLIB +else +MBEDTLS_CONF_OPTS += -DENABLE_ZLIB_SUPPORT=OFF +endif + +define MBEDTLS_DISABLE_ASM + $(SED) '/^#define MBEDTLS_AESNI_C/d' \ + $(@D)/include/mbedtls/config.h + $(SED) '/^#define MBEDTLS_HAVE_ASM/d' \ + $(@D)/include/mbedtls/config.h + $(SED) '/^#define MBEDTLS_PADLOCK_C/d' \ + $(@D)/include/mbedtls/config.h +endef + +# ARM in thumb mode breaks debugging with asm optimizations +# Microblaze asm optimizations are broken in general +# 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_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6),y) +MBEDTLS_POST_CONFIGURE_HOOKS += MBEDTLS_DISABLE_ASM +endif + +ifeq ($(BR2_PACKAGE_MBEDTLS_DTLS_SRTP),y) +define MBEDTLS_ENABLE_DTLS_SRTP + $(SED) "s://#define MBEDTLS_SSL_DTLS_SRTP:#define MBEDTLS_SSL_DTLS_SRTP:" \ + $(@D)/include/mbedtls/config.h +endef +MBEDTLS_PRE_CONFIGURE_HOOKS += MBEDTLS_ENABLE_DTLS_SRTP +endif + +$(eval $(cmake-package)) diff --git a/package/mbpfan/Config.in b/package/mbpfan/Config.in new file mode 100644 index 00000000..231faa2b --- /dev/null +++ b/package/mbpfan/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_MBPFAN + bool "mbpfan" + depends on BR2_USE_MMU + help + Mbpfan is a daemon for MacBook laptops which monitors the + CPU temperature with the coretemp module, and sets the fan + speeds with the applesmc module. + + https://github.com/linux-on-mac/mbpfan diff --git a/package/mbpfan/mbpfan.hash b/package/mbpfan/mbpfan.hash new file mode 100644 index 00000000..5b67744a --- /dev/null +++ b/package/mbpfan/mbpfan.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 e1cdcffaba52be215ae40a8568949190866d500d6ae2a1e96b71ab5372f3580b mbpfan-2.4.0.tar.gz +sha256 589ed823e9a84c56feb95ac58e7cf384626b9cbf4fda2a907bc36e103de1bad2 COPYING diff --git a/package/mbpfan/mbpfan.mk b/package/mbpfan/mbpfan.mk new file mode 100644 index 00000000..0ac161b3 --- /dev/null +++ b/package/mbpfan/mbpfan.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# mbpfan +# +################################################################################ + +MBPFAN_VERSION = 2.4.0 +MBPFAN_SITE = $(call github,linux-on-mac,mbpfan,v$(MBPFAN_VERSION)) +MBPFAN_LICENSE = GPL-3.0+ +MBPFAN_LICENSE_FILES = COPYING + +define MBPFAN_BUILD_CMDS + $(TARGET_MAKE_ENV) CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + $(MAKE) CC="$(TARGET_CC)" -C $(@D) +endef + +define MBPFAN_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0644 $(@D)/mbpfan.conf \ + $(TARGET_DIR)/etc/mbpfan.conf + $(INSTALL) -m 0755 $(@D)/bin/mbpfan $(TARGET_DIR)/usr/sbin/mbpfan +endef + +define MBPFAN_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(@D)/mbpfan.service \ + $(TARGET_DIR)/usr/lib/systemd/system/mbpfan.service +endef + +$(eval $(generic-package)) diff --git a/package/mbpoll/0001-CMakeLists.txt-Add-LANGUAGES-option-to-project-varia.patch b/package/mbpoll/0001-CMakeLists.txt-Add-LANGUAGES-option-to-project-varia.patch new file mode 100644 index 00000000..8c9d1a56 --- /dev/null +++ b/package/mbpoll/0001-CMakeLists.txt-Add-LANGUAGES-option-to-project-varia.patch @@ -0,0 +1,30 @@ +From 97a2c39fea591509ac1f8a31598b7555b63b8d55 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sun, 30 Jul 2023 08:45:58 +0200 +Subject: [PATCH] CMakeLists.txt: Add LANGUAGES option to project variable + +Fixes build with toolchains without c++. + +Upstream: https://github.com/epsilonrt/mbpoll/pull/71 + +Signed-off-by: Bernd Kuhls +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 6daa039..11dcd05 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -3,7 +3,7 @@ + cmake_minimum_required(VERSION 2.9) + + # Workspace name +-project(mbpoll) ++project(mbpoll LANGUAGES C) + + # This setting is useful for providing JSON file used by CodeLite for code completion + set(CMAKE_EXPORT_COMPILE_COMMANDS 1) +-- +2.39.2 + diff --git a/package/mbpoll/Config.in b/package/mbpoll/Config.in new file mode 100644 index 00000000..3617e9fa --- /dev/null +++ b/package/mbpoll/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_MBPOLL + bool "mbpoll" + select BR2_PACKAGE_LIBMODBUS + help + mbpoll is a command line utility to communicate with ModBus + slave (RTU or TCP). + + https://github.com/epsilonrt/mbpoll diff --git a/package/mbpoll/mbpoll.hash b/package/mbpoll/mbpoll.hash new file mode 100644 index 00000000..ad96d5ef --- /dev/null +++ b/package/mbpoll/mbpoll.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 7d960cd4459b5f7c2412abc51aba93a20b6114fd75d1de412b1e540cfb63bfec mbpoll-1.5.2.tar.gz +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 COPYING diff --git a/package/mbpoll/mbpoll.mk b/package/mbpoll/mbpoll.mk new file mode 100644 index 00000000..e35fbbe5 --- /dev/null +++ b/package/mbpoll/mbpoll.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# mbpoll +# +################################################################################ + +MBPOLL_VERSION = 1.5.2 +MBPOLL_SITE = $(call github,epsilonrt,mbpoll,v$(MBPOLL_VERSION)) +MBPOLL_DEPENDENCIES = host-pkgconf libmodbus +MBPOLL_LICENSE = GPL-3.0+ +MBPOLL_LICENSE_FILES = COPYING +MBPOLL_CONF_OPTS = -DGIT_EXECUTABLE=/bin/false + +$(eval $(cmake-package)) diff --git a/package/mbuffer/Config.in b/package/mbuffer/Config.in new file mode 100644 index 00000000..2c0b24d1 --- /dev/null +++ b/package/mbuffer/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_MBUFFER + bool "mbuffer" + depends on !BR2_STATIC_LIBS # dlopen() + depends on BR2_TOOLCHAIN_HAS_THREADS + help + mbuffer is a tool for buffering data streams with a large set + of unique features. + + http://www.maier-komor.de/mbuffer.html + +comment "mbuffer needs a toolchain w/ dynamic library, threads" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/mbuffer/mbuffer.hash b/package/mbuffer/mbuffer.hash new file mode 100644 index 00000000..8f7b8dd0 --- /dev/null +++ b/package/mbuffer/mbuffer.hash @@ -0,0 +1,8 @@ +# From http://www.maier-komor.de/mbuffer.html +md5 90e183efeec2812e2413e97b65600acc mbuffer-20220418.tgz + +# Locally computed after checking signature upstream +sha256 6e5801f9f5ff11445d1d03028b5a03cd08af5408697b7f94c427833228a300c7 mbuffer-20220418.tgz + +# Hash for license file +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE diff --git a/package/mbuffer/mbuffer.mk b/package/mbuffer/mbuffer.mk new file mode 100644 index 00000000..6381d97e --- /dev/null +++ b/package/mbuffer/mbuffer.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# mbuffer +# +################################################################################ + +MBUFFER_VERSION = 20220418 +MBUFFER_SOURCE = mbuffer-$(MBUFFER_VERSION).tgz +MBUFFER_SITE = http://www.maier-komor.de/software/mbuffer +MBUFFER_LICENSE = GPL-3.0+ +MBUFFER_LICENSE_FILES = LICENSE +MBUFFER_CONF_OPTS = --disable-debug + +# we don't need tests & co. so we specify a target +# so that the others don't get built, e.g idev.so +MBUFFER_MAKE_OPTS += mbuffer + +$(eval $(autotools-package)) diff --git a/package/mbw/Config.in b/package/mbw/Config.in new file mode 100644 index 00000000..e4f56c83 --- /dev/null +++ b/package/mbw/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_MBW + bool "mbw" + help + MBW is a memory bandwidth benchmarking tool. + MBW determines the "copy" memory bandwidth available + to userspace programs. + + https://github.com/raas/mbw diff --git a/package/mbw/mbw.hash b/package/mbw/mbw.hash new file mode 100644 index 00000000..d58d7a5d --- /dev/null +++ b/package/mbw/mbw.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 557f670e13ff663086fe239e4184d8ca6154b004bd5fde2b0a748e5aa543c87f mbw-2.0.tar.gz +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 LICENSE diff --git a/package/mbw/mbw.mk b/package/mbw/mbw.mk new file mode 100644 index 00000000..04d6ea34 --- /dev/null +++ b/package/mbw/mbw.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# mbw +# +################################################################################ + +MBW_VERSION = 2.0 +MBW_SITE = $(call github,raas,mbw,v$(MBW_VERSION)) +MBW_LICENSE = GPL-3.0+ +MBW_LICENSE_FILES = LICENSE + +$(eval $(cmake-package)) diff --git a/package/mc/Config.in b/package/mc/Config.in new file mode 100644 index 00000000..ac512116 --- /dev/null +++ b/package/mc/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_MC + bool "mc" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2, slang + select BR2_PACKAGE_LIBGLIB2 + # mc prefers slang, but can use ncurses too + select BR2_PACKAGE_SLANG if !BR2_PACKAGE_NCURSES + select BR2_PACKAGE_NCURSES_WCHAR if BR2_PACKAGE_NCURSES + help + GNU Midnight Commander is a visual file manager, licensed + under GNU General Public License. It can use either SLang + (preferred) or ncurses for screen handling; if neither is + enabled SLang will be automatically chosen. + + https://www.midnight-commander.org + +comment "mc needs a toolchain w/ threads, wchar" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR + depends on BR2_USE_MMU diff --git a/package/mc/mc.hash b/package/mc/mc.hash new file mode 100644 index 00000000..84ea4b2a --- /dev/null +++ b/package/mc/mc.hash @@ -0,0 +1,4 @@ +# Hash from http://ftp.midnight-commander.org/mc-4.8.31.sha256 +sha256 24191cf8667675b8e31fc4a9d18a0a65bdc0598c2c5c4ea092494cd13ab4ab1a mc-4.8.31.tar.xz +# sha256 locally computed: +sha256 5576bbec76296e1c8e081f7037ebd01bdada388635f58d844a2f20d37bbe4284 COPYING diff --git a/package/mc/mc.mk b/package/mc/mc.mk new file mode 100644 index 00000000..a6c3e0bc --- /dev/null +++ b/package/mc/mc.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# mc +# +################################################################################ + +MC_VERSION = 4.8.31 +MC_SOURCE = mc-$(MC_VERSION).tar.xz +MC_SITE = http://ftp.midnight-commander.org +MC_LICENSE = GPL-3.0+ +MC_LICENSE_FILES = COPYING +MC_DEPENDENCIES = libglib2 host-pkgconf $(TARGET_NLS_DEPENDENCIES) +MC_CONF_ENV = \ + CFLAGS="$(TARGET_CFLAGS) -std=c99" \ + LIBS=$(TARGET_NLS_LIBS) + +ifeq ($(BR2_PACKAGE_GPM),y) +MC_CONF_OPTS += --with-gpm-mouse +MC_DEPENDENCIES += gpm +else +MC_CONF_OPTS += --without-gpm-mouse +endif + +ifeq ($(BR2_PACKAGE_LIBSSH2),y) +MC_CONF_OPTS += --enable-vfs-sftp +MC_DEPENDENCIES += libssh2 +else +MC_CONF_OPTS += --disable-vfs-sftp +endif + +# mc prefers slang, so use that if enabled, otherwise +# fallback to using ncurses. +# Either or both will be enabled, but we prefer slang. +ifeq ($(BR2_PACKAGE_SLANG),y) +MC_DEPENDENCIES += slang +MC_CONF_OPTS += --with-screen=slang +else +MC_DEPENDENCIES += ncurses +MC_CONF_OPTS += --with-screen=ncurses +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) +MC_CONF_OPTS += --with-x +MC_DEPENDENCIES += xlib_libX11 +else +MC_CONF_OPTS += --without-x +endif + +$(eval $(autotools-package)) diff --git a/package/mcelog/Config.in b/package/mcelog/Config.in new file mode 100644 index 00000000..55ebb7c8 --- /dev/null +++ b/package/mcelog/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_MCELOG + bool "mcelog" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_USE_MMU # fork() + help + mcelog processes machine checks (in particular memory and + CPU hardware errors) on modern x86 Linux systems. + + http://www.mcelog.org/ diff --git a/package/mcelog/mcelog.hash b/package/mcelog/mcelog.hash new file mode 100644 index 00000000..a82d6f2e --- /dev/null +++ b/package/mcelog/mcelog.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 52ad2771a8dc8e30b44a52864620cf1be1fce81f9ae83c4652a9e2d010b1a533 mcelog-194.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/mcelog/mcelog.mk b/package/mcelog/mcelog.mk new file mode 100644 index 00000000..5cd00cc3 --- /dev/null +++ b/package/mcelog/mcelog.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# mcelog +# +################################################################################ + +MCELOG_VERSION = 194 +MCELOG_SITE = $(call github,andikleen,mcelog,v$(MCELOG_VERSION)) +MCELOG_LICENSE = GPL-2.0 +MCELOG_LICENSE_FILES = LICENSE +MCELOG_SELINUX_MODULES = mcelog + +define MCELOG_BUILD_CMDS + echo "$(MCELOG_VERSION)" > $(@D)/.os_version + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all +endef + +define MCELOG_INSTALL_TARGET_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) DESTDIR=$(TARGET_DIR) install-nodoc +endef + +define MCELOG_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(@D)/mcelog.service \ + $(TARGET_DIR)/usr/lib/systemd/system/mcelog.service +endef + +$(eval $(generic-package)) diff --git a/package/mdadm/0001-udev-c-Do-not-require-libudev-h-if-DNO_LIBUDEV.patch b/package/mdadm/0001-udev-c-Do-not-require-libudev-h-if-DNO_LIBUDEV.patch new file mode 100644 index 00000000..5c3d6e03 --- /dev/null +++ b/package/mdadm/0001-udev-c-Do-not-require-libudev-h-if-DNO_LIBUDEV.patch @@ -0,0 +1,34 @@ +From 1750758c7ff526e3560433f6235e5cfa35cf646a Mon Sep 17 00:00:00 2001 +From: Mariusz Tkaczyk +Date: Wed, 6 Mar 2024 15:50:55 +0100 +Subject: udev.c: Do not require libudev.h if DNO_LIBUDEV + +libudev may not be presented at all, do not require it. + +Reported-by: Boian Bonev +Signed-off-by: Mariusz Tkaczyk + +Upstream: https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=1750758c7ff526e3560433f6235e5cfa35cf646a +Signed-off-by: Fabrice Fontaine +--- + udev.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/udev.c b/udev.c +index bc4722b0..066e6ab1 100644 +--- a/udev.c ++++ b/udev.c +@@ -26,7 +26,10 @@ + #include + #include + #include ++ ++#ifndef NO_LIBUDEV + #include ++#endif + + static char *unblock_path; + +-- +cgit 1.2.3-korg + diff --git a/package/mdadm/0002-util-c-add-limits-h-include-for-NAME_MAX-definition.patch b/package/mdadm/0002-util-c-add-limits-h-include-for-NAME_MAX-definition.patch new file mode 100644 index 00000000..ceaf7f92 --- /dev/null +++ b/package/mdadm/0002-util-c-add-limits-h-include-for-NAME_MAX-definition.patch @@ -0,0 +1,32 @@ +From 8bda86099089b44129ef6206764f9de47a45f0db Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin +Date: Tue, 12 Mar 2024 11:01:50 +0100 +Subject: util.c: add limits.h include for NAME_MAX definition + +Add limits.h include for NAME_MAX definition. + +Signed-off-by: Alexander Kanavin +Signed-off-by: Mariusz Tkaczyk + +Upstream: https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=8bda86099089b44129ef6206764f9de47a45f0db +Signed-off-by: Fabrice Fontaine +--- + util.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/util.c b/util.c +index 05ad3343..49a9c6e2 100644 +--- a/util.c ++++ b/util.c +@@ -36,7 +36,7 @@ + #include + #include + #include +- ++#include + + /* + * following taken from linux/blkpg.h because they aren't +-- +cgit 1.2.3-korg + diff --git a/package/mdadm/0003-Create.c-fix-uclibc-build.patch b/package/mdadm/0003-Create.c-fix-uclibc-build.patch new file mode 100644 index 00000000..c8399be0 --- /dev/null +++ b/package/mdadm/0003-Create.c-fix-uclibc-build.patch @@ -0,0 +1,42 @@ +From 52bead95d2957437c691891fcdc49bd6afccdd49 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 12 Apr 2024 18:45:13 +0200 +Subject: Create.c: fix uclibc build + +Define FALLOC_FL_ZERO_RANGE if needed as FALLOC_FL_ZERO_RANGE is only +defined for aarch64 on uclibc-ng resulting in the following or1k build +failure since commit 577fd10486d8d1472a6b559066f344ac30a3a391: + +Create.c: In function 'write_zeroes_fork': +Create.c:155:35: error: 'FALLOC_FL_ZERO_RANGE' undeclared (first use in this function) + 155 | if (fallocate(fd, FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE, + | ^~~~~~~~~~~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/0e04bcdb591ca5642053e1f7e31384f06581e989 + +Signed-off-by: Fabrice Fontaine +Signed-off-by: Mariusz Tkaczyk +Upstream: https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=52bead95d2957437c691891fcdc49bd6afccdd49 +--- + Create.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Create.c b/Create.c +index 4397ff49..d94253b1 100644 +--- a/Create.c ++++ b/Create.c +@@ -32,6 +32,10 @@ + #include + #include + ++#ifndef FALLOC_FL_ZERO_RANGE ++#define FALLOC_FL_ZERO_RANGE 16 ++#endif ++ + static int round_size_and_verify(unsigned long long *size, int chunk) + { + if (*size == 0) +-- +cgit 1.2.3-korg + diff --git a/package/mdadm/0004-Makefile-Move-pie-to-LDFLAGS.patch b/package/mdadm/0004-Makefile-Move-pie-to-LDFLAGS.patch new file mode 100644 index 00000000..4d46d582 --- /dev/null +++ b/package/mdadm/0004-Makefile-Move-pie-to-LDFLAGS.patch @@ -0,0 +1,40 @@ +From 893a55831e5abbcd15b171db66fa1f389fb61506 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 7 May 2024 19:32:16 +0200 +Subject: Makefile: Move -pie to LDFLAGS + +Move -pie from LDLIBS to LDFLAGS and make LDFLAGS configurable to allow +the user to drop it by setting their own LDFLAGS (e.g. PIE could be +enabled or disabled by the buildsystem such as buildroot). + +Suggested-by: Mariusz Tkaczyk +Signed-off-by: Fabrice Fontaine +Signed-off-by: Mariusz Tkaczyk + +Upstream: https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=893a55831e5abbcd15b171db66fa1f389fb61506 +--- + Makefile | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index 7c221a89..adac7905 100644 +--- a/Makefile ++++ b/Makefile +@@ -132,12 +132,12 @@ CFLAGS += -DUSE_PTHREADS + MON_LDFLAGS += -pthread + endif + +-LDFLAGS = -Wl,-z,now,-z,noexecstack ++LDFLAGS ?= -pie -Wl,-z,now,-z,noexecstack + + # If you want a static binary, you might uncomment these + # LDFLAGS += -static + # STRIP = -s +-LDLIBS = -ldl -pie ++LDLIBS = -ldl + + # To explicitly disable libudev, set -DNO_LIBUDEV in CXFLAGS + ifeq (, $(findstring -DNO_LIBUDEV, $(CXFLAGS))) +-- +cgit 1.2.3-korg + diff --git a/package/mdadm/Config.in b/package/mdadm/Config.in new file mode 100644 index 00000000..8c6bb08a --- /dev/null +++ b/package/mdadm/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_MDADM + bool "mdadm" + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_USE_MMU # fork() + help + Utility for managing Linux Software RAID arrays. + + https://raid.wiki.kernel.org/index.php/A_guide_to_mdadm + +comment "mdadm needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + depends on BR2_USE_MMU diff --git a/package/mdadm/mdadm.hash b/package/mdadm/mdadm.hash new file mode 100644 index 00000000..84bae1ae --- /dev/null +++ b/package/mdadm/mdadm.hash @@ -0,0 +1,4 @@ +# From https://www.kernel.org/pub/linux/utils/raid/mdadm/sha256sums.asc +sha256 416727ae1f1080ea6e3090cea36dd076826fc369151e36ab736557ba92196f9f mdadm-4.3.tar.xz +# Locally calculated +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/mdadm/mdadm.mk b/package/mdadm/mdadm.mk new file mode 100644 index 00000000..421f06d6 --- /dev/null +++ b/package/mdadm/mdadm.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# mdadm +# +################################################################################ + +MDADM_VERSION = 4.3 +MDADM_SOURCE = mdadm-$(MDADM_VERSION).tar.xz +MDADM_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/raid/mdadm +MDADM_LICENSE = GPL-2.0+ +MDADM_LICENSE_FILES = COPYING +MDADM_CPE_ID_VALID = YES + +MDADM_CXFLAGS = $(TARGET_CFLAGS) + +MDADM_BUILD_OPTS = \ + CC=$(TARGET_CC) \ + COROSYNC=-DNO_COROSYNC \ + DLM=-DNO_DLM \ + CWFLAGS="" \ + CXFLAGS="$(MDADM_CXFLAGS)" \ + CPPFLAGS="$(TARGET_CPPFLAGS) -DBINDIR=\\\"/sbin\\\"" \ + CHECK_RUN_DIR=0 \ + LDFLAGS="$(TARGET_LDFLAGS)" + +MDADM_INSTALL_TARGET_OPTS = install-bin + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),) +MDADM_BUILD_OPTS += USE_PTHREADS= +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +MDADM_DEPENDENCIES += udev +MDADM_INSTALL_TARGET_OPTS += install-udev +else +MDADM_CXFLAGS += -DNO_LIBUDEV +endif + +define MDADM_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(MDADM_BUILD_OPTS) mdadm mdmon +endef + +define MDADM_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) $(MDADM_INSTALL_TARGET_OPTS) +endef + +$(eval $(generic-package)) diff --git a/package/mdevd/Config.in b/package/mdevd/Config.in new file mode 100644 index 00000000..04609403 --- /dev/null +++ b/package/mdevd/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_MDEVD + bool "mdevd" + depends on BR2_USE_MMU # skalibs + select BR2_PACKAGE_SKALIBS + help + mdevd is a small daemon managing kernel hotplug events, + similarly to udevd. + + http://skarnet.org/software/mdevd/ diff --git a/package/mdevd/mdevd.hash b/package/mdevd/mdevd.hash new file mode 100644 index 00000000..0151b03b --- /dev/null +++ b/package/mdevd/mdevd.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 7358ce530b6b9befb715e48190981e9b69a12cca858519e6d2e4b46eab7e2470 mdevd-0.1.6.4.tar.gz +sha256 701e0e7d93a5da6421f69bed2136d4c64fd4bc17f35221297838a3ad9ba6050e COPYING diff --git a/package/mdevd/mdevd.mk b/package/mdevd/mdevd.mk new file mode 100644 index 00000000..a1d9e17c --- /dev/null +++ b/package/mdevd/mdevd.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# mdevd +# +################################################################################ + +MDEVD_VERSION = 0.1.6.4 +MDEVD_SITE = https://skarnet.org/software/mdevd +MDEVD_LICENSE = ISC +MDEVD_LICENSE_FILES = COPYING +MDEVD_INSTALL_STAGING = YES +MDEVD_DEPENDENCIES = skalibs + +MDEVD_CONF_OPTS = \ + --prefix=/ \ + --with-sysdeps=$(STAGING_DIR)/lib/skalibs/sysdeps \ + --with-include=$(STAGING_DIR)/include \ + --with-dynlib=$(STAGING_DIR)/lib \ + --with-lib=$(STAGING_DIR)/lib/skalibs \ + $(if $(BR2_STATIC_LIBS),,--disable-allstatic) \ + $(SHARED_STATIC_LIBS_OPTS) + +define MDEVD_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(MDEVD_CONF_OPTS)) +endef + +define MDEVD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define MDEVD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +define MDEVD_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/mdio-tools/Config.in b/package/mdio-tools/Config.in new file mode 100644 index 00000000..790c9c53 --- /dev/null +++ b/package/mdio-tools/Config.in @@ -0,0 +1,19 @@ +comment "mdio-tools needs a Linux kernel to be built" + depends on BR2_USE_MMU + depends on !BR2_LINUX_KERNEL + +comment "mdio-tools needs a toolchain w/ headers >= 5.1" + depends on BR2_USE_MMU + depends on BR2_LINUX_KERNEL + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1 + +config BR2_PACKAGE_MDIO_TOOLS + bool "mdio-tools" + depends on BR2_USE_MMU # fork() + depends on BR2_LINUX_KERNEL + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1 + select BR2_PACKAGE_LIBMNL + help + Low-level debug tools for MDIO devices. + + https://github.com/wkz/mdio-tools diff --git a/package/mdio-tools/mdio-tools.hash b/package/mdio-tools/mdio-tools.hash new file mode 100644 index 00000000..19172e2c --- /dev/null +++ b/package/mdio-tools/mdio-tools.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 652353ba153fdd8b1d58ded4b90d0639536d705aa5923018e27ea0b78aa8e4fb mdio-tools-1.3.1.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/mdio-tools/mdio-tools.mk b/package/mdio-tools/mdio-tools.mk new file mode 100644 index 00000000..b42ea41c --- /dev/null +++ b/package/mdio-tools/mdio-tools.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# mdio-tools +# +################################################################################ + +MDIO_TOOLS_VERSION = 1.3.1 +MDIO_TOOLS_SITE = https://github.com/wkz/mdio-tools/releases/download/$(MDIO_TOOLS_VERSION) +MDIO_TOOLS_LICENSE = GPL-2.0 +MDIO_TOOLS_LICENSE_FILES = COPYING +MDIO_TOOLS_DEPENDENCIES = host-pkgconf libmnl + +MDIO_TOOLS_MODULE_SUBDIRS = kernel + +define MDIO_TOOLS_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_NET) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETDEVICES) + $(call KCONFIG_ENABLE_OPT,CONFIG_MDIO_DEVICE) +endef + +$(eval $(kernel-module)) +$(eval $(autotools-package)) diff --git a/package/mdnsd/Config.in b/package/mdnsd/Config.in new file mode 100644 index 00000000..c83c0905 --- /dev/null +++ b/package/mdnsd/Config.in @@ -0,0 +1,49 @@ +config BR2_PACKAGE_MDNSD + bool "mdnsd" + depends on BR2_USE_MMU # fork() + help + Small mDNS-SD daemon for advertising services and device + discovery, similar to Avahi and Bonjour. + + By default, mdnsd runs on all interfaces that support + multicast. It reads services to announce from + /etc/mdns.d/*.service, a few common services are included + below. To override the defaults, e.g., path to services, + TTL of multicast frames, or the default interface, set + MDNSD_ARGS in /etc/default/mdnsd + + Note: currently no NSS integration with GLIBC. + + https://github.com/troglobit/mdnsd + +if BR2_PACKAGE_MDNSD + +config BR2_PACKAGE_MDNSD_MQUERY + bool "mquery" + help + Scan a LAN for mDNS capable devices, or query specific + records, similar to the mdns-scan tool. Useful for + verifying multicast connectivity or locating neighbors with + link-local address. + +comment "Services to advertise" + +config BR2_PACKAGE_MDNSD_FTP_SERVICE + bool "FTP service" + +config BR2_PACKAGE_MDNSD_HTTP_SERVICE + bool "HTTP service" + +config BR2_PACKAGE_MDNSD_IPP_SERVICE + bool "IPP service" + +config BR2_PACKAGE_MDNSD_PRINTER_SERVICE + bool "Printer service" + +config BR2_PACKAGE_MDNSD_SSH_SERVICE + bool "SSH service" + default y if BR2_PACKAGE_DROPBEAR + default y if BR2_PACKAGE_OPENSSH + default y if BR2_PACKAGE_LIBSSH_SERVER + +endif diff --git a/package/mdnsd/S50mdnsd b/package/mdnsd/S50mdnsd new file mode 100644 index 00000000..1c2b7180 --- /dev/null +++ b/package/mdnsd/S50mdnsd @@ -0,0 +1,51 @@ +#!/bin/sh + +DAEMON=mdnsd +MDNSD=/usr/sbin/$DAEMON +PIDFILE=/var/run/$DAEMON.pid +CFGFILE=/etc/default/$DAEMON + +MDNSD_ARGS="" + +# Read configuration variable file if it is present +# shellcheck source=/dev/null +[ -r "$CFGFILE" ] && . "$CFGFILE" + +# shellcheck disable=SC2086 +start() { + [ -n "$1" ] || printf 'Starting %s: ' "$DAEMON" + start-stop-daemon -S -q -p "$PIDFILE" -x "$MDNSD" -- $MDNSD_ARGS +} + +stop() { + [ -n "$1" ] || printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" -x "$MDNSD" +} + +restart() { + printf 'Restarting %s: ' "$DAEMON" + stop silent + start silent +} + +# SIGHUP reloads /etc/mdns.d/*.service +reload() { + printf 'Reloading %s: ' "$DAEMON" + start-stop-daemon -K -s HUP -q -p "$PIDFILE" -x "$MDNSD" +} + +case "$1" in + start|stop|restart|reload) + if "$1"; then + echo "OK" + else + echo "FAIL" + fi + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 + ;; +esac + +exit $? diff --git a/package/mdnsd/ftp.service b/package/mdnsd/ftp.service new file mode 100644 index 00000000..200a379e --- /dev/null +++ b/package/mdnsd/ftp.service @@ -0,0 +1,2 @@ +type _ftp._tcp +port 21 diff --git a/package/mdnsd/http.service b/package/mdnsd/http.service new file mode 100644 index 00000000..7a40d240 --- /dev/null +++ b/package/mdnsd/http.service @@ -0,0 +1,2 @@ +type _http._tcp +port 80 diff --git a/package/mdnsd/ipp.service b/package/mdnsd/ipp.service new file mode 100644 index 00000000..0d43e780 --- /dev/null +++ b/package/mdnsd/ipp.service @@ -0,0 +1,2 @@ +type _ipp._tcp +port 631 diff --git a/package/mdnsd/mdnsd.hash b/package/mdnsd/mdnsd.hash new file mode 100644 index 00000000..6ab06767 --- /dev/null +++ b/package/mdnsd/mdnsd.hash @@ -0,0 +1,5 @@ +# Upstream sha256 from GitHub +sha256 1af8742ab82a0af88d99d0b15508358ad4305879ab039631bea889138f5c87e8 mdnsd-0.12.tar.gz + +# Locally computed +sha256 2969546227b58ce1b431cc4c36c9a9b45d604e6b94fb8b787ea5d3696f3eee3b LICENSE diff --git a/package/mdnsd/mdnsd.mk b/package/mdnsd/mdnsd.mk new file mode 100644 index 00000000..f5a5fb93 --- /dev/null +++ b/package/mdnsd/mdnsd.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# mdnsd +# +################################################################################ + +MDNSD_VERSION = 0.12 +MDNSD_SITE = https://github.com/troglobit/mdnsd/releases/download/v$(MDNSD_VERSION) +MDNSD_LICENSE = BSD-3-Clause +MDNSD_LICENSE_FILES = LICENSE +MDNSD_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_MDNSD_MQUERY),y) +MDNSD_CONF_OPTS += --with-mquery +else +MDNSD_CONF_OPTS += --without-mquery +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +MDNSD_DEPENDENCIES += systemd +MDNSD_CONF_OPTS += --with-systemd +else +MDNSD_CONF_OPTS += --without-systemd +endif + +MDNSD_SERVICES_$(BR2_PACKAGE_MDNSD_FTP_SERVICE) += ftp +MDNSD_SERVICES_$(BR2_PACKAGE_MDNSD_HTTP_SERVICE) += http +MDNSD_SERVICES_$(BR2_PACKAGE_MDNSD_IPP_SERVICE) += ipp +MDNSD_SERVICES_$(BR2_PACKAGE_MDNSD_PRINTER_SERVICE) += printer +MDNSD_SERVICES_$(BR2_PACKAGE_MDNSD_SSH_SERVICE) += ssh + +define MDNSD_INSTALL_SERVICES + $(foreach service,$(MDNSD_SERVICES_y),\ + $(INSTALL) -D -m 0644 package/mdnsd/$(service).service \ + $(TARGET_DIR)/etc/mdns.d/$(service).service + ) +endef +MDNSD_POST_INSTALL_TARGET_HOOKS += MDNSD_INSTALL_SERVICES + +define MDNSD_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/mdnsd/S50mdnsd \ + $(TARGET_DIR)/etc/init.d/S50mdnsd +endef + +define MDNSD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(@D)/mdnsd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/mdnsd.service +endef + +$(eval $(autotools-package)) diff --git a/package/mdnsd/printer.service b/package/mdnsd/printer.service new file mode 100644 index 00000000..cd322954 --- /dev/null +++ b/package/mdnsd/printer.service @@ -0,0 +1,2 @@ +type _printer._tcp +port 515 diff --git a/package/mdnsd/ssh.service b/package/mdnsd/ssh.service new file mode 100644 index 00000000..596d20ba --- /dev/null +++ b/package/mdnsd/ssh.service @@ -0,0 +1,2 @@ +type _ssh._tcp +port 22 diff --git a/package/mediastreamer/0001-src-videofilters-nowebcam.c-fix-build-without-ffmpeg.patch b/package/mediastreamer/0001-src-videofilters-nowebcam.c-fix-build-without-ffmpeg.patch new file mode 100644 index 00000000..8e7812c3 --- /dev/null +++ b/package/mediastreamer/0001-src-videofilters-nowebcam.c-fix-build-without-ffmpeg.patch @@ -0,0 +1,55 @@ +From 342f59f1603f759b6dd90754f8dba14d08947f55 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 27 Feb 2020 16:18:35 +0100 +Subject: [PATCH] src/videofilters/nowebcam.c: fix build without ffmpeg or jpeg + +jpeg2yuv is only defined if ffmpeg or turbojpeg is available + +Signed-off-by: Fabrice Fontaine +--- + CMakeLists.txt | 3 +++ + src/videofilters/nowebcam.c | 4 ++++ + 2 files changed, 7 insertions(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0efc1a5f..6668db2b 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -336,7 +336,10 @@ if(ENABLE_JPEG) + if(NOT TURBOJPEG_FOUND) + message(WARNING "Could not find libturbo-jpeg, mediastreamer2 will be compiled without LibJpeg-Turbo") + set(ENABLE_JPEG OFF CACHE BOOL "Enable JPEG support" FORCE) ++ add_definitions(-DNO_JPEG) + endif() ++else() ++ add_definitions(-DNO_JPEG) + endif() + if(ENABLE_QRCODE) + find_package(Zxing) +diff --git a/src/videofilters/nowebcam.c b/src/videofilters/nowebcam.c +index a2344dcd..afb0d7b1 100644 +--- a/src/videofilters/nowebcam.c ++++ b/src/videofilters/nowebcam.c +@@ -107,7 +107,9 @@ static mblk_t *_ms_load_jpeg_as_yuv(const char *jpgpath, MSVideoSize *reqsize) { + if (err != st_sizel) { + ms_error("Could not read as much as wanted !"); + } ++#if !(defined(NO_FFMPEG) && defined(NO_JPEG)) + m = jpeg2yuv(jpgbuf, st_sizel, reqsize); ++#endif + ms_free(jpgbuf); + if (m == NULL) { + CloseHandle(fd); +@@ -140,7 +142,9 @@ static mblk_t *_ms_load_jpeg_as_yuv(const char *jpgpath, MSVideoSize *reqsize) { + if (err != statbuf.st_size) { + ms_error("Could not read as much as wanted: %i<>%li !", err, (long)statbuf.st_size); + } ++#if !(defined(NO_FFMPEG) && defined(NO_JPEG)) + m = jpeg2yuv(jpgbuf,statbuf.st_size,reqsize); ++#endif + ms_free(jpgbuf); + if (m == NULL) { + close(fd); +-- +2.25.0 + diff --git a/package/mediastreamer/0002-Use-AV_INPUT_BUFFER_PADDING_SIZE-to-determine-paddin.patch b/package/mediastreamer/0002-Use-AV_INPUT_BUFFER_PADDING_SIZE-to-determine-paddin.patch new file mode 100644 index 00000000..9fd3fda2 --- /dev/null +++ b/package/mediastreamer/0002-Use-AV_INPUT_BUFFER_PADDING_SIZE-to-determine-paddin.patch @@ -0,0 +1,46 @@ +From 84b1919124884232e0fa30b30458470db27c73fc Mon Sep 17 00:00:00 2001 +From: James Cowgill +Date: Sat, 18 Aug 2018 12:56:38 +0200 +Subject: [PATCH] Use AV_INPUT_BUFFER_PADDING_SIZE to determine padding + size + +Hardcoding the value for FF_INPUT_BUFFER_PADDING_SIZE is not safe +because upstream FFmpeg might change it (as they did in FFmpeg 4.0). + +Instead, use FFmpeg's AV_INPUT_BUFFER_PADDING_SIZE if available and +only hardcode a value if FFmpeg is disabled (in which case the value +doesn't particularly matter anyway). For compatibility with older +FFmpeg versions, define AV_INPUT_BUFFER_PADDING_SIZE if hasn't been +defined yet. + +Downloaded from +https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=901735 + +Signed-off-by: Bernd Kuhls +[Fabrice: updated for 4.3.1] +Signed-off-by: Fabrice Fontaine +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + src/utils/ffmpeg-priv.h | 4 ++++ + src/videofilters/nowebcam.c | 4 ++-- + 2 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/src/utils/ffmpeg-priv.h b/src/utils/ffmpeg-priv.h +index c0745a9a..d59ea0e1 100644 +--- a/src/utils/ffmpeg-priv.h ++++ b/src/utils/ffmpeg-priv.h +@@ -115,6 +115,10 @@ + extern "C" { + #endif + ++#ifndef AV_INPUT_BUFFER_PADDING_SIZE ++#define AV_INPUT_BUFFER_PADDING_SIZE FF_INPUT_BUFFER_PADDING_SIZE ++#endif ++ + #ifndef HAVE_FUN_avcodec_encode_video2 + int avcodec_encode_video2 (AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr); + #endif +-- +2.18.0 + diff --git a/package/mediastreamer/Config.in b/package/mediastreamer/Config.in new file mode 100644 index 00000000..e776b60d --- /dev/null +++ b/package/mediastreamer/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_MEDIASTREAMER + bool "mediastreamer" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS # ortp + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # ortp + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14 + select BR2_PACKAGE_ALSA_LIB_MIXER if BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_PCM if BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_MBEDTLS + select BR2_PACKAGE_ORTP + help + Mediastreamer is a powerful and lightweighted streaming + engine specialized for voice/video telephony applications. + + It is the library that is responsible for all the receiving + and sending of multimedia streams in linphone, including + voice/video capture, encoding and decoding, and rendering. + + http://www.linphone.org/technical-corner/mediastreamer2 + +comment "mediastreamer needs a toolchain w/ threads, C++, dynamic library, gcc >= 5" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +comment "mediastreamer needs a toolchain not affected by GCC bug 64735" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/mediastreamer/mediastreamer.hash b/package/mediastreamer/mediastreamer.hash new file mode 100644 index 00000000..dfa469d8 --- /dev/null +++ b/package/mediastreamer/mediastreamer.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 64bdfe9dd6bfa64b492b21a45ad4bb36d67626a7f3b3ab2084a708864f129e84 mediastreamer-4.4.8.tar.gz +sha256 1b3782ccad7b8614100cda30d3faf42fc39f2e97932908c543005053b654ca68 LICENSE.txt diff --git a/package/mediastreamer/mediastreamer.mk b/package/mediastreamer/mediastreamer.mk new file mode 100644 index 00000000..febbb7b3 --- /dev/null +++ b/package/mediastreamer/mediastreamer.mk @@ -0,0 +1,179 @@ +################################################################################ +# +# mediastreamer +# +################################################################################ + +MEDIASTREAMER_VERSION = 4.4.8 +MEDIASTREAMER_SITE = \ + https://gitlab.linphone.org/BC/public/mediastreamer2/-/archive/$(MEDIASTREAMER_VERSION) +MEDIASTREAMER_LICENSE = GPL-3.0+ +MEDIASTREAMER_LICENSE_FILES = LICENSE.txt +MEDIASTREAMER_INSTALL_STAGING = YES +MEDIASTREAMER_DEPENDENCIES = ortp +MEDIASTREAMER_CONF_OPTS = \ + -DENABLE_DOC=OFF \ + -DENABLE_GL=OFF \ + -DENABLE_GLX=OFF \ + -DENABLE_MKV=OFF \ + -DENABLE_SOUND=OFF \ + -DENABLE_STRICT=OFF \ + -DENABLE_TOOLS=OFF \ + -DENABLE_UNIT_TESTS=OFF \ + -DENABLE_ZRTP=OFF + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +MEDIASTREAMER_CONF_OPTS += \ + -DENABLE_ALSA=ON \ + -DENABLE_SOUND=ON +MEDIASTREAMER_DEPENDENCIES += alsa-lib +else +MEDIASTREAMER_CONF_OPTS += -DENABLE_ALSA=OFF +endif + +ifeq ($(BR2_PACKAGE_BCG729),y) +MEDIASTREAMER_CONF_OPTS += -DENABLE_G729=ON +MEDIASTREAMER_DEPENDENCIES += bcg729 +else +MEDIASTREAMER_CONF_OPTS += -DENABLE_G729=OFF +endif + +ifeq ($(BR2_PACKAGE_JPEG_TURBO),y) +MEDIASTREAMER_CONF_OPTS += -DENABLE_JPEG=ON +MEDIASTREAMER_DEPENDENCIES += jpeg +else +MEDIASTREAMER_CONF_OPTS += -DENABLE_JPEG=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBGSM),y) +MEDIASTREAMER_CONF_OPTS += -DENABLE_GSM=ON +MEDIASTREAMER_DEPENDENCIES += libgsm +else +MEDIASTREAMER_CONF_OPTS += -DENABLE_GSM=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBPCAP),y) +MEDIASTREAMER_CONF_OPTS += -DENABLE_PCAP=ON +MEDIASTREAMER_DEPENDENCIES += libpcap +else +MEDIASTREAMER_CONF_OPTS += -DENABLE_PCAP=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBSRTP),y) +MEDIASTREAMER_CONF_OPTS += -DENABLE_SRTP=ON +MEDIASTREAMER_DEPENDENCIES += libsrtp +else +MEDIASTREAMER_CONF_OPTS += -DENABLE_SRTP=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBVPX),y) +MEDIASTREAMER_CONF_OPTS += -DENABLE_VPX=ON +MEDIASTREAMER_DEPENDENCIES += libvpx +else +MEDIASTREAMER_CONF_OPTS += -DENABLE_VPX=OFF +endif + +ifeq ($(BR2_PACKAGE_OPUS),y) +MEDIASTREAMER_CONF_OPTS += -DENABLE_OPUS=ON +MEDIASTREAMER_DEPENDENCIES += opus +else +MEDIASTREAMER_CONF_OPTS += -DENABLE_OPUS=OFF +endif + +# portaudio backend needs speexdsp as well +ifeq ($(BR2_PACKAGE_PORTAUDIO)$(BR2_PACKAGE_SPEEXDSP),yy) +MEDIASTREAMER_CONF_OPTS += \ + -DENABLE_PORTAUDIO=ON \ + -DENABLE_SOUND=ON +MEDIASTREAMER_DEPENDENCIES += portaudio +else +MEDIASTREAMER_CONF_OPTS += -DENABLE_PORTAUDIO=OFF +endif + +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +MEDIASTREAMER_CONF_OPTS += \ + -DENABLE_PULSEAUDIO=ON \ + -DENABLE_SOUND=ON +MEDIASTREAMER_DEPENDENCIES += pulseaudio +else +MEDIASTREAMER_CONF_OPTS += -DENABLE_PULSEAUDIO=OFF +endif + +ifeq ($(BR2_PACKAGE_SPEEX),y) +MEDIASTREAMER_CONF_OPTS += -DENABLE_SPEEX_CODEC=ON +MEDIASTREAMER_DEPENDENCIES += speex +else +MEDIASTREAMER_CONF_OPTS += -DENABLE_SPEEX_CODEC=OFF +endif + +ifeq ($(BR2_PACKAGE_SPEEXDSP),y) +MEDIASTREAMER_CONF_OPTS += -DENABLE_SPEEX_DSP=ON +MEDIASTREAMER_DEPENDENCIES += speexdsp +else +MEDIASTREAMER_CONF_OPTS += -DENABLE_SPEEX_DSP=OFF +endif + +ifeq ($(BR2_PACKAGE_SPEEX)$(BR2_PACKAGE_SPEEXDSP),yy) +MEDIASTREAMER_CONF_OPTS += -DENABLE_RESAMPLE=ON +else +MEDIASTREAMER_CONF_OPTS += -DENABLE_RESAMPLE=OFF +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_SWSCALE),y) +MEDIASTREAMER_CONF_OPTS += -DENABLE_FFMPEG=ON +MEDIASTREAMER_DEPENDENCIES += ffmpeg +else +MEDIASTREAMER_CONF_OPTS += -DENABLE_FFMPEG=OFF +endif + +ifeq ($(BR2_PACKAGE_SDL),y) +MEDIASTREAMER_CONF_OPTS += -DENABLE_SDL=ON +MEDIASTREAMER_DEPENDENCIES += sdl +else +MEDIASTREAMER_CONF_OPTS += -DENABLE_SDL=OFF +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) +MEDIASTREAMER_CONF_OPTS += -DENABLE_X11=ON +MEDIASTREAMER_DEPENDENCIES += xlib_libX11 +else +MEDIASTREAMER_CONF_OPTS += -DENABLE_X11=OFF +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXV),y) +MEDIASTREAMER_CONF_OPTS += -DENABLE_XV=ON +MEDIASTREAMER_DEPENDENCIES += xlib_libXv +else +MEDIASTREAMER_CONF_OPTS += -DENABLE_XV=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBTHEORA),y) +MEDIASTREAMER_CONF_OPTS += -DENABLE_THEORA=ON +MEDIASTREAMER_DEPENDENCIES += libtheora +else +MEDIASTREAMER_CONF_OPTS += -DENABLE_THEORA=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBV4L),y) +MEDIASTREAMER_CONF_OPTS += -DENABLE_V4L=ON +MEDIASTREAMER_DEPENDENCIES += libv4l +else +MEDIASTREAMER_CONF_OPTS += -DENABLE_V4L=OFF +endif + +ifeq ($(BR2_PACKAGE_ZXING_CPP),y) +MEDIASTREAMER_CONF_OPTS += -DENABLE_QRCODE=ON +MEDIASTREAMER_DEPENDENCIES += zxing-cpp +else +MEDIASTREAMER_CONF_OPTS += -DENABLE_QRCODE=OFF +endif + +ifeq ($(BR2_STATIC_LIBS),y) +MEDIASTREAMER_CONF_OPTS += -DENABLE_SHARED=OFF -DENABLE_STATIC=ON +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +MEDIASTREAMER_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=ON +else ifeq ($(BR2_SHARED_LIBS),y) +MEDIASTREAMER_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/memcached/0001-logger.c-initialize-rport.patch b/package/memcached/0001-logger.c-initialize-rport.patch new file mode 100644 index 00000000..002a6896 --- /dev/null +++ b/package/memcached/0001-logger.c-initialize-rport.patch @@ -0,0 +1,55 @@ +From b3431c4fcaf65e66fda80ef89b79ff3da1912b4f Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 25 Dec 2021 20:05:29 +0100 +Subject: [PATCH] logger.c: initialize rport + +Fix the following build failure raised since version 1.6.11 and +https://github.com/memcached/memcached/commit/617d7cd64d04698b76fee74882627690017e20ad: + +logger.c: In function '_logger_parse_cce': +logger.c:297:13: error: 'rport' may be used uninitialized in this function [-Werror=maybe-uninitialized] + 297 | total = snprintf(scratch, LOGGER_PARSE_SCRATCH, + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 298 | "ts=%d.%d gid=%llu type=conn_close rip=%s rport=%hu transport=%s reason=%s cfd=%d\n", + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 299 | (int) e->tv.tv_sec, (int) e->tv.tv_usec, (unsigned long long) e->gid, + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 300 | rip, rport, transport_map[le->transport], + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 301 | reason_map[le->reason], le->sfd); + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/7a46ac38d10b1859034017e0294961daa8f48dd2 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/memcached/memcached/pull/1077 +--- + logger.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/logger.c b/logger.c +index 667f3c7..394adae 100644 +--- a/logger.c ++++ b/logger.c +@@ -269,7 +269,7 @@ static int _logger_parse_extw(logentry *e, char *scratch) { + + static int _logger_parse_cne(logentry *e, char *scratch) { + int total; +- unsigned short rport; ++ unsigned short rport = 0; + char rip[64]; + struct logentry_conn_event *le = (struct logentry_conn_event *) e->data; + const char * const transport_map[] = { "local", "tcp", "udp" }; +@@ -286,7 +286,7 @@ static int _logger_parse_cne(logentry *e, char *scratch) { + + static int _logger_parse_cce(logentry *e, char *scratch) { + int total; +- unsigned short rport; ++ unsigned short rport = 0; + char rip[64]; + struct logentry_conn_event *le = (struct logentry_conn_event *) e->data; + const char * const transport_map[] = { "local", "tcp", "udp" }; +-- +2.33.0 + diff --git a/package/memcached/0002-fix-build-on-uclibc-ng.patch b/package/memcached/0002-fix-build-on-uclibc-ng.patch new file mode 100644 index 00000000..a5af7a2a --- /dev/null +++ b/package/memcached/0002-fix-build-on-uclibc-ng.patch @@ -0,0 +1,64 @@ +From c84e5e55e0e9e793849f721d30979242ed6a6ee3 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 1 Oct 2023 14:12:38 +0200 +Subject: [PATCH] fix build on uclibc-ng + +Fix the following build failure with uclibc-ng raised since version +1.6.18 and +https://github.com/memcached/memcached/commit/875371a75cbf1f92350de2d1fa0fae4a35ed572b: + +/home/buildroot/autobuild/instance-2/output-1/host/lib/gcc/arc-buildroot-linux-uclibc/10.2.0/../../../../arc-buildroot-linux-uclibc/bin/ld: memcached-thread.o: in function `thread_setname': +thread.c:(.text+0xea2): undefined reference to `pthread_setname_np' + +Fixes: + - http://autobuild.buildroot.org/results/e856d381f5ec7d2727f21c8bd46dacb456984416 + +Signed-off-by: Fabrice Fontaine +Upstream: unsent yet (waiting feedback on first patch) +--- + configure.ac | 1 + + extstore.c | 2 +- + thread.c | 2 +- + 3 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index d94f6fb..5ec5088 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -686,6 +686,7 @@ AC_CHECK_FUNCS(clock_gettime) + AC_CHECK_FUNCS(preadv) + AC_CHECK_FUNCS(pread) + AC_CHECK_FUNCS(eventfd) ++AC_CHECK_FUNCS([pthread_setname_np],[AC_DEFINE(HAVE_PTHREAD_SETNAME_NP, 1, [Define to 1 if support pthread_setname_np])]) + AC_CHECK_FUNCS([accept4], [AC_DEFINE(HAVE_ACCEPT4, 1, [Define to 1 if support accept4])]) + AC_CHECK_FUNCS([getopt_long], [AC_DEFINE(HAVE_GETOPT_LONG, 1, [Define to 1 if support getopt_long])]) + +diff --git a/extstore.c b/extstore.c +index b079465..f6a6180 100644 +--- a/extstore.c ++++ b/extstore.c +@@ -119,7 +119,7 @@ struct store_engine { + #define THR_NAME_MAXLEN 16 + static void thread_setname(pthread_t thread, const char *name) { + assert(strlen(name) < THR_NAME_MAXLEN); +-#if defined(__linux__) ++#if defined(__linux__) && defined(HAVE_PTHREAD_SETNAME_NP) + pthread_setname_np(thread, name); + #endif + } +diff --git a/thread.c b/thread.c +index ee120fa..76651c2 100644 +--- a/thread.c ++++ b/thread.c +@@ -635,7 +635,7 @@ static void thread_libevent_process(evutil_socket_t fd, short which, void *arg) + #define THR_NAME_MAXLEN 16 + void thread_setname(pthread_t thread, const char *name) { + assert(strlen(name) < THR_NAME_MAXLEN); +-#if defined(__linux__) ++#if defined(__linux__) && defined(HAVE_PTHREAD_SETNAME_NP) + pthread_setname_np(thread, name); + #endif + } +-- +2.40.1 + diff --git a/package/memcached/Config.in b/package/memcached/Config.in new file mode 100644 index 00000000..93bf02d6 --- /dev/null +++ b/package/memcached/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_MEMCACHED + bool "memcached" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBEVENT + help + Memcached is an in-memory key-value store for small chunks + of arbitrary data (strings, objects) from results of + database calls, API calls, or page rendering. + + http://www.memcached.org/ + +comment "memcached needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/package/memcached/memcached.hash b/package/memcached/memcached.hash new file mode 100644 index 00000000..bd2072df --- /dev/null +++ b/package/memcached/memcached.hash @@ -0,0 +1,6 @@ +# From http://www.memcached.org/files/memcached-1.6.22.tar.gz.sha1 +sha1 7a691f390d59616dbebfc9e2e4942d499c39a338 memcached-1.6.22.tar.gz + +# Locally computed +sha256 34783a90a4ccf74c4107085fd92b688749d23b276cfdad9f04e4f725a05d1ca7 memcached-1.6.22.tar.gz +sha256 bc887c4ad8051fe690ace9528fe37a2e0bb362e6d963331d82e845ca9b585a0c COPYING diff --git a/package/memcached/memcached.mk b/package/memcached/memcached.mk new file mode 100644 index 00000000..05ae69eb --- /dev/null +++ b/package/memcached/memcached.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# memcached +# +################################################################################ + +MEMCACHED_VERSION = 1.6.22 +MEMCACHED_SITE = http://www.memcached.org/files +MEMCACHED_DEPENDENCIES = libevent +MEMCACHED_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' +MEMCACHED_CONF_OPTS = --disable-coverage --disable-werror +MEMCACHED_LICENSE = BSD-3-Clause +MEMCACHED_LICENSE_FILES = COPYING +MEMCACHED_CPE_ID_VENDOR = memcached +MEMCACHED_SELINUX_MODULES = memcached +# We're patching configure.ac +MEMCACHED_AUTORECONF = YES + +ifeq ($(BR2_ENDIAN),"BIG") +MEMCACHED_CONF_ENV += ac_cv_c_endian=big +else +MEMCACHED_CONF_ENV += ac_cv_c_endian=little +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +MEMCACHED_CONF_OPTS += --enable-tls +MEMCACHED_DEPENDENCIES += host-pkgconf openssl +else +MEMCACHED_CONF_OPTS += --disable-tls +endif + +ifeq ($(BR2_STATIC_LIBS),) +MEMCACHED_CONF_OPTS += --disable-static +endif + +$(eval $(autotools-package)) diff --git a/package/memstat/0001-PATH_MAX.patch b/package/memstat/0001-PATH_MAX.patch new file mode 100644 index 00000000..14ca6a00 --- /dev/null +++ b/package/memstat/0001-PATH_MAX.patch @@ -0,0 +1,16 @@ +Add missing #include for PATH_MAX + +Signed-off-by: Maarten ter Huurne +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi + +--- memstat-0.8.org/memstat.c 2009-06-08 14:38:05.000000000 +0200 ++++ memstat-0.8/memstat.c 2014-09-12 03:55:43.096035374 +0200 +@@ -19,6 +19,7 @@ + #include + #include + #include ++#include + + /* blacklist devices that just map physical memory */ + char *blacklist[] = { diff --git a/package/memstat/Config.in b/package/memstat/Config.in new file mode 100644 index 00000000..b7906124 --- /dev/null +++ b/package/memstat/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_MEMSTAT + bool "memstat" + help + Memstat lists all the processes, executables, and shared + libraries that are using up virtual memory. It's helpful to + see how the shared memory is used and which 'old' libs are + loaded. + + http://sourceforge.net/projects/memstattool diff --git a/package/memstat/memstat.hash b/package/memstat/memstat.hash new file mode 100644 index 00000000..6aa2c543 --- /dev/null +++ b/package/memstat/memstat.hash @@ -0,0 +1,4 @@ +# From http://sourceforge.net/projects/memstattool/files/ +sha1 26071dbc30a2796c0503c7d8060a548ca36f8df9 memstat_1.0.tar.gz +# Locally computed +sha256 5e5db2a2fab637bbbc5d2400141fcb9f1b4b55540d025c2dc54378dc497cb524 debian/copyright diff --git a/package/memstat/memstat.mk b/package/memstat/memstat.mk new file mode 100644 index 00000000..e11b4ae6 --- /dev/null +++ b/package/memstat/memstat.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# memstat +# +################################################################################ + +MEMSTAT_VERSION = 1.0 +MEMSTAT_SITE = http://downloads.sourceforge.net/project/memstattool +MEMSTAT_SOURCE = memstat_$(MEMSTAT_VERSION).tar.gz +MEMSTAT_LICENSE = GPL +MEMSTAT_LICENSE_FILES = debian/copyright + +define MEMSTAT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_LD)" CFLAGS="$(TARGET_CFLAGS)" \ + -C $(@D) memstat +endef + +define MEMSTAT_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/memstat.conf -m 0644 \ + $(TARGET_DIR)/etc/memstat.conf + $(INSTALL) -D $(@D)/memstat $(TARGET_DIR)/usr/bin/memstat +endef + +$(eval $(generic-package)) diff --git a/package/memtest86/Config.in b/package/memtest86/Config.in new file mode 100644 index 00000000..c9a8cf74 --- /dev/null +++ b/package/memtest86/Config.in @@ -0,0 +1,48 @@ +config BR2_PACKAGE_MEMTEST86 + bool "memtest86" + depends on BR2_i386 || BR2_x86_64 + help + Memtest86+ is a bootable standalone memory test program. + + Buildroot does not support packages with a '+' sign in their + name, which explains why it is named memtest86 and not + memtest86+. + + Memtest86+ is a utility designed to test whether your memory + is in working order. It repeatedly writes an enormous amount + of different patterns to all memory locations and reads them + back again and verifies whether the result of the read is the + same as what was written to memory. + + Memtest86+ will only work on 32-bit or 64-bit x86 targets. It + boots and autodetects hardware. Refer README.md for boot + options. + + It can be loaded and run either directly by a PC BIOS (legacy + or UEFI) or via an intermediate bootloader that supports the + Linux 16-bit, 32-bit, 64-bit, or EFI handover boot protocol. + + It can be added to the grub2 boot menu by adding the following + lines to the bottom of grub.cfg + + Example for legacy BIOS using the Linux 16-bit boot protocol, + with built-in support for USB keyboards or running on a serial + line: + + menuentry "Start Memtest86+ (USB keyboards)" { + linux16 /boot/memtest.bin keyboard=both + } + menuentry "Start Memtest86+ (serial line)" { + linux16 /boot/memtest.bin console=ttyS0,115200 + } + + Or for UEFI BIOS using the Linux 32-bit or 64-bit boot + protocols, using USB keyboard: + + menuentry "Start Memtest86+ (USB keyboards)" { + linux /EFI/BOOT/memtest.efi keyboard=both + } + + Other boot loaders will have similar requirements. + + http://www.memtest.org diff --git a/package/memtest86/memtest86.hash b/package/memtest86/memtest86.hash new file mode 100644 index 00000000..695e6a23 --- /dev/null +++ b/package/memtest86/memtest86.hash @@ -0,0 +1,3 @@ +# locally computed using sha256sum +sha256 463b2db66128e45c96be76136272e2ee940f1319804b1b88cc2ef04edccd01d8 memtest86-6.20.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/memtest86/memtest86.mk b/package/memtest86/memtest86.mk new file mode 100644 index 00000000..c0f85755 --- /dev/null +++ b/package/memtest86/memtest86.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# memtest86 +# +################################################################################ + +MEMTEST86_VERSION = 6.20 +MEMTEST86_SITE = $(call github,memtest86plus,memtest86plus,v$(MEMTEST86_VERSION)) +MEMTEST86_LICENSE = GPL-2.0 +MEMTEST86_LICENSE_FILES = LICENSE +MEMTEST86_INSTALL_IMAGES = YES +MEMTEST86_INSTALL_TARGET = NO + +ifeq ($(BR2_i386),y) +MEMTEST86_BUILD_DIR = build32 +else +ifeq ($(BR2_x86_64),y) +MEMTEST86_BUILD_DIR = build64 +endif +endif + +define MEMTEST86_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/$(MEMTEST86_BUILD_DIR) +endef + +define MEMTEST86_INSTALL_IMAGES_CMDS + $(foreach ext, bin efi, \ + $(INSTALL) -m 0755 -D $(@D)/$(MEMTEST86_BUILD_DIR)/memtest.$(ext) \ + $(BINARIES_DIR)/memtest.$(ext) + ) +endef + +$(eval $(generic-package)) diff --git a/package/memtester/Config.in b/package/memtester/Config.in new file mode 100644 index 00000000..b9887726 --- /dev/null +++ b/package/memtester/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_MEMTESTER + bool "memtester" + help + A userspace utility for testing the memory subsystem for + faults. + + http://pyropus.ca/software/memtester/ diff --git a/package/memtester/memtester.hash b/package/memtester/memtester.hash new file mode 100644 index 00000000..6e5d156f --- /dev/null +++ b/package/memtester/memtester.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 1c5fc2382576c084b314cfd334d127a66c20bd63892cac9f445bc1d8b4ca5a47 memtester-4.5.1.tar.gz +sha256 dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa COPYING diff --git a/package/memtester/memtester.mk b/package/memtester/memtester.mk new file mode 100644 index 00000000..347a158b --- /dev/null +++ b/package/memtester/memtester.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# memtester +# +################################################################################ + +MEMTESTER_VERSION = 4.5.1 +MEMTESTER_SITE = http://pyropus.ca/software/memtester/old-versions +MEMTESTER_LICENSE = GPL-2.0 +MEMTESTER_LICENSE_FILES = COPYING +MEMTESTER_CPE_ID_VENDOR = pryopus + +MEMTESTER_TARGET_INSTALL_OPTS = INSTALLPATH=$(TARGET_DIR)/usr + +define MEMTESTER_BUILD_CMDS + $(SED) "s%^cc%$(TARGET_CC) $(TARGET_CFLAGS)%" $(@D)/conf-cc + $(SED) "s%^cc%$(TARGET_CC) $(TARGET_LDFLAGS)%" $(@D)/conf-ld + $(MAKE) -C $(@D) +endef + +define MEMTESTER_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(MEMTESTER_TARGET_INSTALL_OPTS) -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/memtool/Config.in b/package/memtool/Config.in new file mode 100644 index 00000000..63099d0d --- /dev/null +++ b/package/memtool/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_MEMTOOL + bool "memtool" + help + Development tool to modify memory mapped registers. + + memtool allows one to read and write memory mapped registers + via /dev/mem. The commands are inspired by the respective + commands of the barebox bootloader. This is handy during + driver development to inspect and modify register + settings. It can also be used to modify regular files and + character devices (e.g. to paint to /dev/fb0). + + http://www.pengutronix.de/software/memtool/index_en.html diff --git a/package/memtool/memtool.hash b/package/memtool/memtool.hash new file mode 100644 index 00000000..da4880bd --- /dev/null +++ b/package/memtool/memtool.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 87cb7175266ff3a00a9c1f541c4c6c93693ffbe8dcc0d97a60d13c45ff860900 memtool-2018.03.0.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/memtool/memtool.mk b/package/memtool/memtool.mk new file mode 100644 index 00000000..75e37831 --- /dev/null +++ b/package/memtool/memtool.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# memtool +# +################################################################################ + +MEMTOOL_VERSION = 2018.03.0 +MEMTOOL_SITE = http://public.pengutronix.de/software/memtool +MEMTOOL_SOURCE = memtool-$(MEMTOOL_VERSION).tar.xz +MEMTOOL_LICENSE = GPL-2.0 +MEMTOOL_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/mender-artifact/Config.in.host b/package/mender-artifact/Config.in.host new file mode 100644 index 00000000..39353b23 --- /dev/null +++ b/package/mender-artifact/Config.in.host @@ -0,0 +1,19 @@ +config BR2_PACKAGE_HOST_MENDER_ARTIFACT + bool "host mender-artifact" + depends on BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_GO + help + The mender-artifact tool is a CLI implementation of the + Mender artifacts library. + + A Mender artifact can be recognized by its .mender suffix. + Mender artifacts can contain binaries, metadata, checksums, + signatures and scripts that are used during a deployment. + The artifact format acts as a wrapper, and uses the tar + format to bundle several files into one. + + In its simplest form, an artifact contains just a rootfs + image, along with its checksum, id and device type + compatibility. + + https://github.com/mendersoftware/mender-artifact diff --git a/package/mender-artifact/mender-artifact.hash b/package/mender-artifact/mender-artifact.hash new file mode 100644 index 00000000..9d77f068 --- /dev/null +++ b/package/mender-artifact/mender-artifact.hash @@ -0,0 +1,95 @@ +# Locally computed: +sha256 d3ed68d8637195ff35de97b12c8fa148cebffb1ee0fd0d43909ec1643c0c296a mender-artifact-3.8.0-go2.tar.gz +sha256 b8462a14975e30fb0dff14ed50e7563e833ccce13c2aa93f95386ffe877ed673 LIC_FILES_CHKSUM.sha256 + +# License hash extracted from LIC_FILES_CHKSUM.sha256 using the +# following command: +# +# sed '/^[A-Za-z0-9_]/s/^/sha256 /' LIC_FILES_CHKSUM.sha256 + +# Apache 2.0 licenses. +sha256 1033348db7606a7e61b6484f293847cf8d7a35766efebb97e304d4bd5d7f3f6b LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 vendor/github.com/minio/sha256-simd/LICENSE +sha256 8f5d89b47d7a05a199b77b7e0f362dad391d451ebda4ef48ba11c50c071564c7 vendor/github.com/mendersoftware/progressbar/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 vendor/google.golang.org/genproto/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 vendor/google.golang.org/grpc/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 vendor/google.golang.org/appengine/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 vendor/cloud.google.com/go/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 vendor/cloud.google.com/go/kms/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 vendor/cloud.google.com/go/iam/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 vendor/cloud.google.com/go/compute/LICENSE +sha256 58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd vendor/go.opencensus.io/LICENSE +sha256 73ba74dfaa520b49a401b5d21459a8523a146f3b7518a833eea5efa85130bf68 vendor/github.com/golang/groupcache/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 vendor/gopkg.in/square/go-jose.v2/LICENSE +sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 vendor/github.com/oklog/run/LICENSE + +# +# BSD 2 Clause licenses. +sha256 8d427fd87bc9579ea368fde3d49f9ca22eac857f91a9dec7e3004bdfab7dee86 vendor/github.com/pkg/errors/LICENSE +# +# BSD 3 Clause licenses. +sha256 2eb550be6801c1ea434feba53bf6d12e7c71c90253e0a9de4a4f46cf88b56477 vendor/github.com/pmezard/go-difflib/LICENSE +sha256 2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067 vendor/golang.org/x/sys/LICENSE +sha256 87640bc4df2ceb1559f268a3db1ba859ab780f7ba5b1b4545173d4680a3d918b vendor/github.com/remyoudompheng/go-liblzma/LICENSE +sha256 0d9e582ee4bff57bf1189c9e514e6da7ce277f9cd3bc2d488b22fbb39a6d87cf vendor/github.com/klauspost/compress/LICENSE +sha256 75e1ca97a84a9da6051dee0114333388216f2c4a5a028296b882ff3d57274735 vendor/github.com/russross/blackfriday/v2/LICENSE.txt +sha256 17b5d209ba8f9684257ecfcff87df6ceda6194143a8fbd074f29727cff6f0c40 vendor/github.com/google/go-cmp/LICENSE +sha256 2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067 vendor/golang.org/x/net/LICENSE +sha256 2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067 vendor/golang.org/x/oauth2/LICENSE +sha256 2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067 vendor/golang.org/x/text/LICENSE +sha256 2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067 vendor/golang.org/x/crypto/LICENSE +sha256 2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067 vendor/golang.org/x/time/LICENSE +sha256 110244b02140866ee37d17fa7449436a377ec3b85a481fbb208f4c87964382de vendor/google.golang.org/api/LICENSE +sha256 fc0a2f71df4e8f047902da53d1f85301be43e0f360fc167057a2d04658ed2ba9 vendor/google.golang.org/api/internal/third_party/uritemplates/LICENSE +sha256 4835612df0098ca95f8e7d9e3bffcb02358d435dbb38057c844c99d7f725eb20 vendor/google.golang.org/protobuf/LICENSE +sha256 8778a9fc1eaffb03ab873caae251df2d224f6b5502be8777d3cd573a4dd43903 vendor/github.com/golang/protobuf/LICENSE +sha256 b95218cd9607855a6536384c0262922b30a0c2bf56e4ced790240f3a3bac4722 vendor/github.com/googleapis/gax-go/v2/LICENSE +sha256 f69f157b0be75da373605dbc8bbf142e8924ee82d8f44f11bcaf351335bf98cf vendor/github.com/golang/snappy/LICENSE +sha256 dd26a7abddd02e2d0aba97805b31f248ef7835d9e10da289b22e3b8ab78b324d vendor/gopkg.in/square/go-jose.v2/json/LICENSE +sha256 6a358d2540ca14048f02d366f23787c0a480157e58f058113f0e27168dd4e447 vendor/github.com/pierrec/lz4/LICENSE +# +# ISC licenses. +sha256 1b93a317849ee09d3d7e4f1d20c2b78ddb230b4becb12d7c224c927b9d470251 vendor/github.com/davecgh/go-spew/LICENSE +# +# MIT licenses. +sha256 f8e536c1c7b695810427095dc85f5f80d44ff7c10535e8a9486cf393e2599189 vendor/github.com/stretchr/testify/LICENSE +sha256 da277af11b85227490377fbcac6afccc68be560c4fff36ac05ca62de55345fd7 vendor/github.com/urfave/cli/LICENSE +sha256 51a0c9ec7f8b7634181b8d4c03e5b5d204ac21d6e72f46c313973424664b2e6b vendor/github.com/sirupsen/logrus/LICENSE +sha256 6d2de1cde19c4d2bd8bcd9aaa1d581f4cfa3db9cf71896140330eaa2f2687685 vendor/github.com/klauspost/pgzip/LICENSE +sha256 a55959c4e3e8917bfa857359bb641115336276a6cc97408fd8197e079fb18470 vendor/github.com/cpuguy83/go-md2man/v2/LICENSE.md +sha256 c8024e31c1de453fea90f22a221968835cc7af9d520274a2576c9ec9976055b0 vendor/github.com/shurcooL/sanitized_anchor_name/LICENSE +sha256 d18f6323b71b0b768bb5e9616e36da390fbd39369a81807cca352de4e4e6aa0b vendor/gopkg.in/yaml.v3/LICENSE +sha256 08eab1118c80885fa1fa6a6dd7303f65a379fcb3733e063d20d1bbc2c76e6fa1 vendor/github.com/mattn/go-isatty/LICENSE +sha256 5d966570d7a442d4e969892860a914e542c97f262c873baee8f0aa48e1f40212 vendor/github.com/klauspost/cpuid/v2/LICENSE +sha256 edbb5a4d165ac69376c765b551c0662ff42bea87e1f1eda85f42ac90c34b09d0 vendor/go.uber.org/atomic/LICENSE.txt +sha256 22adc4abdece712a737573672f082fd61ac2b21df878efb87ffcff4354a07f26 vendor/github.com/mitchellh/go-homedir/LICENSE +sha256 f48b778b7fccb6650f915cf4527c941a9578f8876a2911d035c4e44641a916be vendor/github.com/mitchellh/go-testing-interface/LICENSE +sha256 22adc4abdece712a737573672f082fd61ac2b21df878efb87ffcff4354a07f26 vendor/github.com/mitchellh/mapstructure/LICENSE +sha256 3c377fad2e5ae1d7081c7c2f16da867a87cca1d1f5f1aa7ed0b8a16bb553142a vendor/github.com/mitchellh/copystructure/LICENSE +sha256 22adc4abdece712a737573672f082fd61ac2b21df878efb87ffcff4354a07f26 vendor/github.com/mitchellh/reflectwalk/LICENSE +sha256 38049e50b486f5394e40b786388f4a006401996e46c7c1cd18925afe7c3b4e34 vendor/github.com/ryanuber/go-glob/LICENSE +sha256 88a2379b3ca34bf5c57127aff9dcb802bbb60ece0805cdbda65b3bd115f971d9 vendor/github.com/mattn/go-colorable/LICENSE +sha256 de95ed802d2f90e3c72cb3c9a927cca5f2aec234a3ef1250232db0f8178b2d93 vendor/github.com/fatih/color/LICENSE.md +sha256 831892cd31b9eef0311bb1de9014527ef5d3592eed7add1f9f829510d2065e62 vendor/github.com/armon/go-radix/LICENSE +sha256 d0bb61dd59b6d59021893751bdd1205ee88c8206dcabd6b4c68d35b94ee19750 vendor/github.com/armon/go-metrics/LICENSE +sha256 5c0476add4c38b55d0ed5ac11b85e00c38f26e1caee20dfe3ab58190103d1fbc vendor/github.com/cenkalti/backoff/v3/LICENSE +sha256 b8ce983c0e0b1410115d42b65d5471b3666a8d4f4334a52f29f457a39a71b463 vendor/github.com/hashicorp/go-hclog/LICENSE +# +# MPL-2.0 licenses. +sha256 60222c28c1a7f6a92c7df98e5c5f4459e624e6e285e0b9b94467af5f6ab3343d vendor/github.com/hashicorp/go-secure-stdlib/strutil/LICENSE +sha256 60222c28c1a7f6a92c7df98e5c5f4459e624e6e285e0b9b94467af5f6ab3343d vendor/github.com/hashicorp/go-secure-stdlib/parseutil/LICENSE +sha256 bef1747eda88b9ed46e94830b0d978c3499dad5dfe38d364971760881901dadd vendor/github.com/hashicorp/errwrap/LICENSE +sha256 bef1747eda88b9ed46e94830b0d978c3499dad5dfe38d364971760881901dadd vendor/github.com/hashicorp/hcl/LICENSE +sha256 60222c28c1a7f6a92c7df98e5c5f4459e624e6e285e0b9b94467af5f6ab3343d vendor/github.com/hashicorp/go-cleanhttp/LICENSE +sha256 bef1747eda88b9ed46e94830b0d978c3499dad5dfe38d364971760881901dadd vendor/github.com/hashicorp/go-version/LICENSE +sha256 60222c28c1a7f6a92c7df98e5c5f4459e624e6e285e0b9b94467af5f6ab3343d vendor/github.com/hashicorp/go-rootcerts/LICENSE +sha256 60222c28c1a7f6a92c7df98e5c5f4459e624e6e285e0b9b94467af5f6ab3343d vendor/github.com/hashicorp/go-retryablehttp/LICENSE +sha256 60222c28c1a7f6a92c7df98e5c5f4459e624e6e285e0b9b94467af5f6ab3343d vendor/github.com/hashicorp/go-uuid/LICENSE +sha256 a830016911a348a54e89bd54f2f8b0d8fffdeac20aecfba8e36ebbf38a03f5ff vendor/github.com/hashicorp/go-plugin/LICENSE +sha256 1f256ecad192880510e84ad60474eab7589218784b9a50bc7ceee34c2b91f1d5 vendor/github.com/hashicorp/go-sockaddr/LICENSE +sha256 60222c28c1a7f6a92c7df98e5c5f4459e624e6e285e0b9b94467af5f6ab3343d vendor/github.com/hashicorp/vault/sdk/LICENSE +sha256 60222c28c1a7f6a92c7df98e5c5f4459e624e6e285e0b9b94467af5f6ab3343d vendor/github.com/hashicorp/vault/api/LICENSE +sha256 812e9d96e900a093ae4d1d3f22c5f82f568a0a0461c3007a99d00573d41c5461 vendor/github.com/hashicorp/yamux/LICENSE +sha256 60222c28c1a7f6a92c7df98e5c5f4459e624e6e285e0b9b94467af5f6ab3343d vendor/github.com/hashicorp/go-immutable-radix/LICENSE +sha256 a830016911a348a54e89bd54f2f8b0d8fffdeac20aecfba8e36ebbf38a03f5ff vendor/github.com/hashicorp/go-multierror/LICENSE +sha256 af175b9d96ee93c21a036152e1b905b0b95304d4ae8c2c921c7609100ba8df7e vendor/github.com/hashicorp/golang-lru/LICENSE diff --git a/package/mender-artifact/mender-artifact.mk b/package/mender-artifact/mender-artifact.mk new file mode 100644 index 00000000..6ade624a --- /dev/null +++ b/package/mender-artifact/mender-artifact.mk @@ -0,0 +1,94 @@ +################################################################################ +# +# host-mender-artifact +# +################################################################################ + +HOST_MENDER_ARTIFACT_VERSION = 3.8.0 +HOST_MENDER_ARTIFACT_SITE = $(call github,mendersoftware,mender-artifact,$(HOST_MENDER_ARTIFACT_VERSION)) +HOST_MENDER_ARTIFACT_LICENSE = Apache2.0, BSD-2-Clause, BSD-3-Clause, ISC, MIT, MPL-2.0 +HOST_MENDER_ARTIFACT_LICENSE_FILES = \ + LICENSE \ + LIC_FILES_CHKSUM.sha256 \ + vendor/github.com/minio/sha256-simd/LICENSE \ + vendor/github.com/mendersoftware/progressbar/LICENSE \ + vendor/google.golang.org/genproto/LICENSE \ + vendor/google.golang.org/grpc/LICENSE \ + vendor/google.golang.org/appengine/LICENSE \ + vendor/cloud.google.com/go/LICENSE \ + vendor/cloud.google.com/go/kms/LICENSE \ + vendor/cloud.google.com/go/iam/LICENSE \ + vendor/cloud.google.com/go/compute/LICENSE \ + vendor/go.opencensus.io/LICENSE \ + vendor/github.com/golang/groupcache/LICENSE \ + vendor/gopkg.in/square/go-jose.v2/LICENSE \ + vendor/github.com/oklog/run/LICENSE \ + vendor/github.com/pkg/errors/LICENSE \ + vendor/github.com/pmezard/go-difflib/LICENSE \ + vendor/golang.org/x/sys/LICENSE \ + vendor/github.com/remyoudompheng/go-liblzma/LICENSE \ + vendor/github.com/klauspost/compress/LICENSE \ + vendor/github.com/russross/blackfriday/v2/LICENSE.txt \ + vendor/github.com/google/go-cmp/LICENSE \ + vendor/golang.org/x/net/LICENSE \ + vendor/golang.org/x/oauth2/LICENSE \ + vendor/golang.org/x/text/LICENSE \ + vendor/golang.org/x/crypto/LICENSE \ + vendor/golang.org/x/time/LICENSE \ + vendor/google.golang.org/api/LICENSE \ + vendor/google.golang.org/api/internal/third_party/uritemplates/LICENSE \ + vendor/google.golang.org/protobuf/LICENSE \ + vendor/github.com/golang/protobuf/LICENSE \ + vendor/github.com/googleapis/gax-go/v2/LICENSE \ + vendor/github.com/golang/snappy/LICENSE \ + vendor/gopkg.in/square/go-jose.v2/json/LICENSE \ + vendor/github.com/pierrec/lz4/LICENSE \ + vendor/github.com/davecgh/go-spew/LICENSE \ + vendor/github.com/stretchr/testify/LICENSE \ + vendor/github.com/urfave/cli/LICENSE \ + vendor/github.com/sirupsen/logrus/LICENSE \ + vendor/github.com/klauspost/pgzip/LICENSE \ + vendor/github.com/cpuguy83/go-md2man/v2/LICENSE.md \ + vendor/github.com/shurcooL/sanitized_anchor_name/LICENSE \ + vendor/gopkg.in/yaml.v3/LICENSE \ + vendor/github.com/mattn/go-isatty/LICENSE \ + vendor/github.com/klauspost/cpuid/v2/LICENSE \ + vendor/go.uber.org/atomic/LICENSE.txt \ + vendor/github.com/mitchellh/go-homedir/LICENSE \ + vendor/github.com/mitchellh/go-testing-interface/LICENSE \ + vendor/github.com/mitchellh/mapstructure/LICENSE \ + vendor/github.com/mitchellh/copystructure/LICENSE \ + vendor/github.com/mitchellh/reflectwalk/LICENSE \ + vendor/github.com/ryanuber/go-glob/LICENSE \ + vendor/github.com/mattn/go-colorable/LICENSE \ + vendor/github.com/fatih/color/LICENSE.md \ + vendor/github.com/armon/go-radix/LICENSE \ + vendor/github.com/armon/go-metrics/LICENSE \ + vendor/github.com/cenkalti/backoff/v3/LICENSE \ + vendor/github.com/hashicorp/go-hclog/LICENSE \ + vendor/github.com/hashicorp/go-secure-stdlib/strutil/LICENSE \ + vendor/github.com/hashicorp/go-secure-stdlib/parseutil/LICENSE \ + vendor/github.com/hashicorp/errwrap/LICENSE \ + vendor/github.com/hashicorp/hcl/LICENSE \ + vendor/github.com/hashicorp/go-cleanhttp/LICENSE \ + vendor/github.com/hashicorp/go-version/LICENSE \ + vendor/github.com/hashicorp/go-rootcerts/LICENSE \ + vendor/github.com/hashicorp/go-retryablehttp/LICENSE \ + vendor/github.com/hashicorp/go-uuid/LICENSE \ + vendor/github.com/hashicorp/go-plugin/LICENSE \ + vendor/github.com/hashicorp/go-sockaddr/LICENSE \ + vendor/github.com/hashicorp/vault/sdk/LICENSE \ + vendor/github.com/hashicorp/vault/api/LICENSE \ + vendor/github.com/hashicorp/yamux/LICENSE \ + vendor/github.com/hashicorp/go-immutable-radix/LICENSE \ + vendor/github.com/hashicorp/go-multierror/LICENSE \ + vendor/github.com/hashicorp/golang-lru/LICENSE + +HOST_MENDER_ARTIFACT_DEPENDENCIES = host-xz + +HOST_MENDER_ARTIFACT_LDFLAGS = -X github.com/mendersoftware/mender-artifact/cli.Version=$(HOST_MENDER_ARTIFACT_VERSION) + +HOST_MENDER_ARTIFACT_BIN_NAME = mender-artifact +HOST_MENDER_ARTIFACT_INSTALL_BINS = $(HOST_MENDER_ARTIFACT_BIN_NAME) + +$(eval $(host-golang-package)) diff --git a/package/mender-connect/Config.in b/package/mender-connect/Config.in new file mode 100644 index 00000000..d478e468 --- /dev/null +++ b/package/mender-connect/Config.in @@ -0,0 +1,34 @@ +config BR2_PACKAGE_MENDER_CONNECT + bool "mender-connect" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2, mender + depends on BR2_USE_WCHAR # libglib2 -> gettext + depends on BR2_USE_MMU # dbus -> fork() + select BR2_PACKAGE_DBUS # runtime + select BR2_PACKAGE_HOST_GO + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_MENDER # runtime + select BR2_PACKAGE_OPENSSL + help + mender-connect is a daemon responsible for handling + bidirectional (websocket) communication with the Mender + server. The daemon is responsible for implementing a range of + troubleshooting features to the device as well as several + enhancement to the mender-client. + + Mender Connect is loosely coupled with the Mender Client. The + main information passed between mender-client and + mender-connect is the device authorization status. Since only + accepted devices can interact with the Mender Server, the + Mender Client passes over DBus the authorization token which + Mender Connect uses to establish a Websocket connection to the + server. + + https://github.com/mendersoftware/mender-connect + +comment "mender-connect needs a toolchain w/ threads, wchar" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/package/mender-connect/S43mender-connect b/package/mender-connect/S43mender-connect new file mode 100644 index 00000000..4cc21510 --- /dev/null +++ b/package/mender-connect/S43mender-connect @@ -0,0 +1,53 @@ +#!/bin/sh +DAEMON="mender-connect" +DAEMON_PATH="/usr/bin/mender-connect" +PIDFILE="/var/run/${DAEMON}.pid" + +MENDER_CONNECT_ARGS="" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "${DAEMON}" + umask 077 + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -bmSqp "$PIDFILE" -x ${DAEMON_PATH} \ + -- -daemon ${DAEMON_ARGS} + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "${DAEMON}" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/mender-connect/mender-connect.hash b/package/mender-connect/mender-connect.hash new file mode 100644 index 00000000..33ad9991 --- /dev/null +++ b/package/mender-connect/mender-connect.hash @@ -0,0 +1,34 @@ +# Locally computed: +sha256 96b81bb4c72eb8c1756febb94101c0dea5a6d4884591824e61a5f2509cd9ca9b mender-connect-2.1.0-go2.tar.gz +sha256 78b3954421ec6499c3f9735b96d52288574ae80c747416a52548d7f526f26e8c LIC_FILES_CHKSUM.sha256 + +# Vendor licenses +# Generated with sed '/^[A-Za-z0-9_]/s/^/sha256 /' LIC_FILES_CHKSUM.sha256 + +# +# Apache-2.0 +sha256 1033348db7606a7e61b6484f293847cf8d7a35766efebb97e304d4bd5d7f3f6b LICENSE +sha256 3eb823230e5d112e1bd032ccc82ae765cf676d0d6d46a1a1daa2d658b3005b67 vendor/github.com/mendersoftware/go-lib-micro/LICENSE +# +# BSD-2-Clause +sha256 2be1b548b0387ca8948e1bb9434e709126904d15f622cc2d0d8e7f186e4d122d vendor/github.com/gorilla/websocket/LICENSE +sha256 8d427fd87bc9579ea368fde3d49f9ca22eac857f91a9dec7e3004bdfab7dee86 vendor/github.com/pkg/errors/LICENSE +sha256 1530185dd39cdde7cb2f786a7a5fcf8bc34368b6ae73c15e72bafe88fd80b9a2 vendor/github.com/vmihailenco/msgpack/v5/LICENSE +sha256 0f02aac22084ef463aa5f42f566feeec6aa4c99653519744a8c25cb079da5b5d vendor/github.com/vmihailenco/tagparser/v2/LICENSE +# +# BSD-3-Clause +sha256 2eb550be6801c1ea434feba53bf6d12e7c71c90253e0a9de4a4f46cf88b56477 vendor/github.com/pmezard/go-difflib/LICENSE +sha256 2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067 vendor/golang.org/x/sys/LICENSE +# +# ISC +sha256 1b93a317849ee09d3d7e4f1d20c2b78ddb230b4becb12d7c224c927b9d470251 vendor/github.com/davecgh/go-spew/LICENSE +# +# MIT +sha256 a2a1cea59d9c2d71908082f516f86bb560abf857646ecf69d70c121ead14aef4 vendor/github.com/creack/pty/LICENSE +sha256 caa932df46551b53643952fe03b351d55db97be73b5393b986dcf6b05d3c416a vendor/github.com/go-ozzo/ozzo-validation/v4/LICENSE +sha256 92a328e1d5f3269b42e2ce32b4494eafdb3132f204a911c5c95cf3d8465490e4 vendor/github.com/satori/go.uuid/LICENSE +sha256 51a0c9ec7f8b7634181b8d4c03e5b5d204ac21d6e72f46c313973424664b2e6b vendor/github.com/sirupsen/logrus/LICENSE +sha256 b2663894033a05fd80261176cd8da1d72546e25842d5c1abcc852ca23b6b61b0 vendor/github.com/stretchr/objx/LICENSE +sha256 f8e536c1c7b695810427095dc85f5f80d44ff7c10535e8a9486cf393e2599189 vendor/github.com/stretchr/testify/LICENSE +sha256 da277af11b85227490377fbcac6afccc68be560c4fff36ac05ca62de55345fd7 vendor/github.com/urfave/cli/v2/LICENSE +sha256 d18f6323b71b0b768bb5e9616e36da390fbd39369a81807cca352de4e4e6aa0b vendor/gopkg.in/yaml.v3/LICENSE diff --git a/package/mender-connect/mender-connect.mk b/package/mender-connect/mender-connect.mk new file mode 100644 index 00000000..36ddd5f7 --- /dev/null +++ b/package/mender-connect/mender-connect.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# mender-connect +# +################################################################################ + +MENDER_CONNECT_VERSION = 2.1.0 +MENDER_CONNECT_SITE = $(call github,mendersoftware,mender-connect,$(MENDER_CONNECT_VERSION)) +MENDER_CONNECT_LICENSE = Apache-2.0, BSD-2-Clause, BSD-3-Clause, ISC, MIT + +# Vendor license paths generated with: +# awk '{print $2}' LIC_FILES_CHKSUM.sha256 | grep vendor +MENDER_CONNECT_LICENSE_FILES = \ + LIC_FILES_CHKSUM.sha256 \ + LICENSE \ + vendor/github.com/mendersoftware/go-lib-micro/LICENSE \ + vendor/github.com/gorilla/websocket/LICENSE \ + vendor/github.com/pkg/errors/LICENSE \ + vendor/github.com/vmihailenco/msgpack/v5/LICENSE \ + vendor/github.com/vmihailenco/tagparser/v2/LICENSE \ + vendor/github.com/pmezard/go-difflib/LICENSE \ + vendor/golang.org/x/sys/LICENSE \ + vendor/github.com/davecgh/go-spew/LICENSE \ + vendor/github.com/creack/pty/LICENSE \ + vendor/github.com/go-ozzo/ozzo-validation/v4/LICENSE \ + vendor/github.com/satori/go.uuid/LICENSE \ + vendor/github.com/sirupsen/logrus/LICENSE \ + vendor/github.com/stretchr/objx/LICENSE \ + vendor/github.com/stretchr/testify/LICENSE \ + vendor/github.com/urfave/cli/v2/LICENSE \ + vendor/gopkg.in/yaml.v3/LICENSE + +MENDER_CONNECT_DEPENDENCIES = \ + dbus \ + libglib2 \ + mender \ + openssl + +MENDER_CONNECT_LDFLAGS = -X github.com/mendersoftware/mender-connect/config.Version=$(MENDER_CONNECT_VERSION) + +define MENDER_CONNECT_INSTALL_CONFIG_FILES + $(INSTALL) -d -m 755 $(TARGET_DIR)/etc/mender + + $(INSTALL) -D -m 0644 $(@D)/examples/mender-connect.conf \ + $(TARGET_DIR)/etc/mender/mender-connect.conf +endef +MENDER_CONNECT_POST_INSTALL_TARGET_HOOKS += MENDER_CONNECT_INSTALL_CONFIG_FILES + +define MENDER_CONNECT_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(@D)/support/mender-connect.service \ + $(TARGET_DIR)/usr/lib/systemd/system/mender-connect.service +endef + +define MENDER_CONNECT_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 $(MENDER_CONNECT_PKGDIR)/S43mender-connect \ + $(TARGET_DIR)/etc/init.d/S43mender-connect +endef + +$(eval $(golang-package)) diff --git a/package/mender-grubenv/Config.in b/package/mender-grubenv/Config.in new file mode 100644 index 00000000..f27eb09e --- /dev/null +++ b/package/mender-grubenv/Config.in @@ -0,0 +1,41 @@ +config BR2_PACKAGE_MENDER_GRUBENV + bool "mender-grubenv" + depends on BR2_TARGET_GRUB2_ARCH_SUPPORTS + depends on BR2_PACKAGE_MENDER # runtime + depends on BR2_TARGET_GRUB2 + depends on !(BR2_TARGET_GRUB2_HAS_LEGACY_BOOT && BR2_TARGET_GRUB2_HAS_EFI_BOOT) + help + Contains the boot scripts and tools used by Mender to + integrate with the GRUB bootloader. + + The following Grub modules must be selected for this package: + loadenv hashsum echo halt gcry_sha256 test regexp + + https://github.com/mendersoftware/grub-mender-grubenv + +if BR2_PACKAGE_MENDER_GRUBENV + +config BR2_PACKAGE_MENDER_GRUBENV_DEFINES + string "path to grubenv defines" + help + Specify a path to the mender grubenv defines file. + If no path is specified, the example file in the source + directory will be used. + + The example file in the source directory sets the following: + mender_rootfsa_part=2 + mender_rootfsb_part=3 + mender_kernel_root_base=/dev/mmcblk0p + mender_grub_storage_device=hd0 + kernel_imagetype=bzImage + +endif + +comment "mender-grubenv needs a grub2 bootloader" + depends on BR2_TARGET_GRUB2_ARCH_SUPPORTS + depends on BR2_PACKAGE_MENDER + depends on !BR2_TARGET_GRUB2 + +comment "mender-grubenv does not support both legacy and EFI grub2 bootloaders at the same time" + depends on BR2_PACKAGE_MENDER + depends on BR2_TARGET_GRUB2_HAS_LEGACY_BOOT && BR2_TARGET_GRUB2_HAS_EFI_BOOT diff --git a/package/mender-grubenv/mender-grubenv.hash b/package/mender-grubenv/mender-grubenv.hash new file mode 100644 index 00000000..193bff07 --- /dev/null +++ b/package/mender-grubenv/mender-grubenv.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 b7a08eb3d996afb38c1a4f7c51b7eb44aec6197ff713ce75e4f39d5b448cfc82 mender-grubenv-2ac898f5924d5870f8394ad8ecd3ef1ab1422e3b.tar.gz +sha256 1033348db7606a7e61b6484f293847cf8d7a35766efebb97e304d4bd5d7f3f6b LICENSE diff --git a/package/mender-grubenv/mender-grubenv.mk b/package/mender-grubenv/mender-grubenv.mk new file mode 100644 index 00000000..8679ad92 --- /dev/null +++ b/package/mender-grubenv/mender-grubenv.mk @@ -0,0 +1,94 @@ +################################################################################ +# +# mender-grubenv +# +################################################################################ + +MENDER_GRUBENV_VERSION = 2ac898f5924d5870f8394ad8ecd3ef1ab1422e3b +MENDER_GRUBENV_SITE = $(call github,mendersoftware,grub-mender-grubenv,$(MENDER_GRUBENV_VERSION)) +MENDER_GRUBENV_LICENSE = Apache-2.0 +MENDER_GRUBENV_LICENSE_FILES = LICENSE +# Grub2 must be built first so this package can overwrite the config files +# provided by grub. +MENDER_GRUBENV_DEPENDENCIES = grub2 +MENDER_GRUBENV_INSTALL_IMAGES = YES + +MENDER_GRUBENV_MAKE_ENV = \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_MAKE_ENV) + +MENDER_GRUBENV_DEFINES = \ + $(or $(call qstrip,$(BR2_PACKAGE_MENDER_GRUBENV_DEFINES)),\ + $(@D)/mender_grubenv_defines.example) + +# These grub modules must be built in for the grub scripts to work properly. +# Without them, the system will not boot. +MENDER_GRUBENV_MANDATORY_MODULES = loadenv hashsum echo halt gcry_sha256 test regexp + +ifeq ($(BR2_TARGET_GRUB2_HAS_LEGACY_BOOT),y) +MENDER_GRUBENV_MODULES_MISSING_PC = \ + $(filter-out $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_MODULES_PC)),\ + $(MENDER_GRUBENV_MANDATORY_MODULES)) + +MENDER_GRUBENV_MAKE_ENV += BOOT_DIR=/boot/grub + +define MENDER_GRUBENV_INSTALL_I386_CFG + mkdir -p $(BINARIES_DIR)/boot-part/grub + cp -dpfr $(@D)/mender_grub.cfg \ + $(TARGET_DIR)/boot/grub/grub.cfg + cp -dpfr $(TARGET_DIR)/boot/grub/grub.cfg \ + $(TARGET_DIR)/boot/grub/grub-mender-grubenv \ + $(BINARIES_DIR)/boot-part/ +endef +endif # BR2_TARGET_GRUB2_HAS_LEGACY_BOOT + +ifeq ($(BR2_TARGET_GRUB2_HAS_EFI_BOOT),y) +MENDER_GRUBENV_MODULES_MISSING_EFI = \ + $(filter-out $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI)),\ + $(MENDER_GRUBENV_MANDATORY_MODULES)) + +MENDER_GRUBENV_MAKE_ENV += BOOT_DIR=/boot/EFI/BOOT + +define MENDER_GRUBENV_INSTALL_EFI_CFG + mkdir -p $(BINARIES_DIR)/efi-part/EFI/BOOT + cp -dpfr $(@D)/mender_grub.cfg \ + $(TARGET_DIR)/boot/EFI/BOOT/grub.cfg + cp -dpfr $(TARGET_DIR)/boot/EFI/BOOT/grub.cfg \ + $(BINARIES_DIR)/efi-part/EFI/BOOT + cp -dpfr $(TARGET_DIR)/boot/EFI/BOOT/grub-mender-grubenv \ + $(BINARIES_DIR)/efi-part/ +endef +endif # BR2_TARGET_GRUB2_HAS_EFI_BOOT + +ifeq ($(BR2_PACKAGE_MENDER_GRUBENV)$(BR_BUILDING),yy) +ifneq ($(MENDER_GRUBENV_MODULES_MISSING_EFI),) +$(error The following missing grub2 efi modules must be enabled for mender-grubenv \ + to work: $(MENDER_GRUBENV_MODULES_MISSING_EFI)) +endif +ifneq ($(MENDER_GRUBENV_MODULES_MISSING_PC),) +$(error The following missing grub2 pc modules must be enabled for mender-grubenv \ + to work: $(MENDER_GRUBENV_MODULES_MISSING_PC)) +endif +endif + +define MENDER_GRUBENV_CONFIGURE_CMDS + $(INSTALL) -m 0644 $(MENDER_GRUBENV_DEFINES) $(@D)/mender_grubenv_defines +endef + +define MENDER_GRUBENV_BUILD_CMDS + $(MENDER_GRUBENV_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define MENDER_GRUBENV_INSTALL_TARGET_CMDS + $(MENDER_GRUBENV_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) \ + install install-boot-env + # The grub-mender-grubenv-* utilities use this file to function. + echo 'ENV_DIR=/boot/grub-mender-grubenv' > $(TARGET_DIR)/etc/mender_grubenv.config +endef + +define MENDER_GRUBENV_INSTALL_IMAGES_CMDS + $(MENDER_GRUBENV_INSTALL_I386_CFG) + $(MENDER_GRUBENV_INSTALL_EFI_CFG) +endef + +$(eval $(generic-package)) diff --git a/package/mender/Config.in b/package/mender/Config.in new file mode 100644 index 00000000..c9b9d0b7 --- /dev/null +++ b/package/mender/Config.in @@ -0,0 +1,45 @@ +config BR2_PACKAGE_MENDER + bool "mender" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_HOST_GO + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENGINES + select BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4 + select BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 + help + Mender is an open source over-the-air (OTA) software updater + for embedded Linux devices. Mender comprises a client + running at the embedded device, as well as a server that + manages deployments across many devices. + + Notes: + For systems using uboot as the bootloader: + - uboot must have the mender uboot patches applied. + - uboot-tools must be selected. + - fw_printenv must be functional on the device. + The Mender Uboot patches are at: + https://github.com/mendersoftware/meta-mender/ + + For more information on Manual U-Boot integration, see: + https://docs.mender.io/2.6/system-updates-yocto-project/board-integration/bootloader-support/u-boot/manual-u-boot-integration + + For systems using Grub2 as the bootloader: + - Mender depends on the mender-grubenv package. + - The mender-grubenv package provides a fw_printenv script, + which is not compatible with the uboot-tools fw_printenv + script. + + The mender project recommends using uboot to load Grub2 as a + secondary bootloader whenever possible. Using Grub2 as a + secondary bootloader prevents users from porting the patches + for uboot to each new device. + + https://github.com/mendersoftware/mender + +comment "mender needs a toolchain w/ threads" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/mender/S42mender b/package/mender/S42mender new file mode 100644 index 00000000..0f2077d0 --- /dev/null +++ b/package/mender/S42mender @@ -0,0 +1,60 @@ +#!/bin/sh +# +# Starts mender service. +# +DAEMON="mender" +DAEMON_PATH="/usr/bin/mender" +PIDFILE="/var/run/${DAEMON}.pid" +DAEMON_ARGS="daemon" + +start() { + # If /var/lib/mender is a symlink to /var/run/mender, and + # - the filesystem is RO (i.e. we can not rm the symlink), + # create the directory pointed to by the symlink. + # - the filesystem is RW (i.e. we can rm the symlink), + # replace the symlink with an actual directory + if [ -L /var/lib/mender ] && [ "$(readlink /var/lib/mender)" = "/var/run/mender" ] + then + if rm -f /var/lib/mender >/dev/null 2>&1; then + mkdir -p /var/lib/mender + else + echo "No persistent location to store mender data. Data will be lost" + echo "at reboot. Are you sure this is what you want to do?" + mkdir -p "$(readlink /var/lib/mender)" + fi + fi + + printf "Starting mender service: " + umask 077 + start-stop-daemon -bmSqp "$PIDFILE" -x ${DAEMON_PATH} -- ${DAEMON_ARGS} + status=$? + [ "${status}" = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping mender service: " + start-stop-daemon -Kqp "$PIDFILE" + status=$? + [ "${status}" = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|reload|restart}" + exit 1 +esac + +exit $? diff --git a/package/mender/artifact_info b/package/mender/artifact_info new file mode 100644 index 00000000..1c84b088 --- /dev/null +++ b/package/mender/artifact_info @@ -0,0 +1 @@ +artifact_name=BUILDROOT_ARTIFACT diff --git a/package/mender/device_type b/package/mender/device_type new file mode 100644 index 00000000..a097ef2b --- /dev/null +++ b/package/mender/device_type @@ -0,0 +1 @@ +device_type=BUILDROOT_DEVICE diff --git a/package/mender/mender-client.service b/package/mender/mender-client.service new file mode 100644 index 00000000..5539a56f --- /dev/null +++ b/package/mender/mender-client.service @@ -0,0 +1,24 @@ +[Unit] +Description=Mender OTA update service +After=systemd-resolved.service + +[Service] +Type=idle +User=root +Group=root +ExecStartPre=/bin/sh -c '\ +if [ -L /var/lib/mender \ + -a "$(readlink /var/lib/mender)" = "/var/run/mender" ]; then \ + if rm -f /var/lib/mender >/dev/null 2>&1; then \ + mkdir -p /var/lib/mender; \ + else \ + echo "No persistent location to store mender data. Data will be lost" \ + echo "at reboot. Are you sure this is what you want to do?"; \ + mkdir -p "$(readlink /var/lib/mender)"; \ + fi; \ +fi' +ExecStart=/usr/bin/mender daemon +Restart=on-abort + +[Install] +WantedBy=multi-user.target diff --git a/package/mender/mender.conf b/package/mender/mender.conf new file mode 100644 index 00000000..f89118ac --- /dev/null +++ b/package/mender/mender.conf @@ -0,0 +1,10 @@ +{ + "InventoryPollIntervalSeconds": 1800, + "UpdatePollIntervalSeconds": 1800, + "RetryPollIntervalSeconds": 300, + "RootfsPartA": "/dev/mmcblk0p2", + "RootfsPartB": "/dev/mmcblk0p3", + "ServerCertificate": "/etc/mender/server.crt", + "ServerURL": "https://docker.mender.io", + "TenantToken": "dummy" +} diff --git a/package/mender/mender.hash b/package/mender/mender.hash new file mode 100644 index 00000000..118cce9d --- /dev/null +++ b/package/mender/mender.hash @@ -0,0 +1,45 @@ +# Locally computed: +sha256 8a149b11b990beb7620b372023eec28df63cee6a1aa4132e88ecef554f080f72 mender-3.4.0-go2.tar.gz + +# Vendor licenses +# Generated with sed '/^[A-Za-z0-9_]/s/^/sha256 /' LIC_FILES_CHKSUM.sha256 + +# Apache-2.0 license. +sha256 1033348db7606a7e61b6484f293847cf8d7a35766efebb97e304d4bd5d7f3f6b LICENSE +sha256 1033348db7606a7e61b6484f293847cf8d7a35766efebb97e304d4bd5d7f3f6b vendor/github.com/mendersoftware/mender-artifact/LICENSE +sha256 73ba74dfaa520b49a401b5d21459a8523a146f3b7518a833eea5efa85130bf68 vendor/github.com/mendersoftware/openssl/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 vendor/github.com/minio/sha256-simd/LICENSE +sha256 8f5d89b47d7a05a199b77b7e0f362dad391d451ebda4ef48ba11c50c071564c7 vendor/github.com/mendersoftware/progressbar/LICENSE +# +# BSD 2 Clause license. +sha256 8d427fd87bc9579ea368fde3d49f9ca22eac857f91a9dec7e3004bdfab7dee86 vendor/github.com/pkg/errors/LICENSE +sha256 e4646a82a976369d7ae8f6ed5c11d35dc0af18433a8ccc24c85b459ad8b95128 vendor/github.com/godbus/dbus/LICENSE +sha256 2be1b548b0387ca8948e1bb9434e709126904d15f622cc2d0d8e7f186e4d122d vendor/github.com/gorilla/websocket/LICENSE +# +# BSD 3 Clause license. +sha256 0d9e582ee4bff57bf1189c9e514e6da7ce277f9cd3bc2d488b22fbb39a6d87cf vendor/github.com/klauspost/compress/LICENSE +sha256 2eb550be6801c1ea434feba53bf6d12e7c71c90253e0a9de4a4f46cf88b56477 vendor/github.com/pmezard/go-difflib/LICENSE +sha256 2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067 vendor/golang.org/x/sys/LICENSE +sha256 0634b008cee55ca01f0888d2f5aba2d34e66c3f52c31a4e16a5d5d33d0c2a03e vendor/github.com/bmatsuo/lmdb-go/LICENSE.md +sha256 87640bc4df2ceb1559f268a3db1ba859ab780f7ba5b1b4545173d4680a3d918b vendor/github.com/remyoudompheng/go-liblzma/LICENSE +sha256 2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067 vendor/golang.org/x/term/LICENSE +# +# ISC license. +sha256 1b93a317849ee09d3d7e4f1d20c2b78ddb230b4becb12d7c224c927b9d470251 vendor/github.com/davecgh/go-spew/LICENSE +# +# MIT license. +sha256 6d2de1cde19c4d2bd8bcd9aaa1d581f4cfa3db9cf71896140330eaa2f2687685 vendor/github.com/klauspost/pgzip/LICENSE +sha256 5d966570d7a442d4e969892860a914e542c97f262c873baee8f0aa48e1f40212 vendor/github.com/klauspost/cpuid/v2/LICENSE +sha256 51a0c9ec7f8b7634181b8d4c03e5b5d204ac21d6e72f46c313973424664b2e6b vendor/github.com/sirupsen/logrus/LICENSE +sha256 f8e536c1c7b695810427095dc85f5f80d44ff7c10535e8a9486cf393e2599189 vendor/github.com/stretchr/testify/LICENSE +sha256 ffa15bdce332058a03a1d923910864fb6e58bf6df66a0e3914284725b327183e vendor/github.com/ungerik/go-sysfs/LICENSE +sha256 da277af11b85227490377fbcac6afccc68be560c4fff36ac05ca62de55345fd7 vendor/github.com/urfave/cli/v2/LICENSE +sha256 b2663894033a05fd80261176cd8da1d72546e25842d5c1abcc852ca23b6b61b0 vendor/github.com/stretchr/objx/LICENSE +sha256 d18f6323b71b0b768bb5e9616e36da390fbd39369a81807cca352de4e4e6aa0b vendor/gopkg.in/yaml.v3/LICENSE +sha256 08eab1118c80885fa1fa6a6dd7303f65a379fcb3733e063d20d1bbc2c76e6fa1 vendor/github.com/mattn/go-isatty/LICENSE +# +# OpenLDAP Public License +sha256 310fe25c858a9515fc8c8d7d1f24a67c9496f84a91e0a0e41ea9975b1371e569 vendor/github.com/bmatsuo/lmdb-go/LICENSE.mdb.md + +# sha256 of all the vendor licenses combined +sha256 93d9db9b43097b174e362ac8f398aa9a37fcdde2974d0567b62bd6d1e0d22037 LIC_FILES_CHKSUM.sha256 diff --git a/package/mender/mender.mk b/package/mender/mender.mk new file mode 100644 index 00000000..ee139824 --- /dev/null +++ b/package/mender/mender.mk @@ -0,0 +1,115 @@ +################################################################################ +# +# mender +# +################################################################################ + +MENDER_VERSION = 3.4.0 +MENDER_SITE = $(call github,mendersoftware,mender,$(MENDER_VERSION)) +MENDER_LICENSE = Apache-2.0, BSD-2-Clause, BSD-3-Clause, ISC, MIT, OLDAP-2.8 +MENDER_CPE_ID_VENDOR = northern.tech + +# Vendor license paths generated with: +# awk '{print $2}' LIC_FILES_CHKSUM.sha256 | grep vendor +MENDER_LICENSE_FILES = \ + LICENSE \ + LIC_FILES_CHKSUM.sha256 \ + vendor/github.com/mendersoftware/mender-artifact/LICENSE \ + vendor/github.com/mendersoftware/openssl/LICENSE \ + vendor/github.com/minio/sha256-simd/LICENSE \ + vendor/github.com/mendersoftware/progressbar/LICENSE \ + vendor/github.com/pkg/errors/LICENSE \ + vendor/github.com/godbus/dbus/LICENSE \ + vendor/github.com/gorilla/websocket/LICENSE \ + vendor/github.com/klauspost/compress/LICENSE \ + vendor/github.com/pmezard/go-difflib/LICENSE \ + vendor/golang.org/x/sys/LICENSE \ + vendor/github.com/bmatsuo/lmdb-go/LICENSE.md \ + vendor/github.com/remyoudompheng/go-liblzma/LICENSE \ + vendor/golang.org/x/term/LICENSE \ + vendor/github.com/davecgh/go-spew/LICENSE \ + vendor/github.com/klauspost/pgzip/LICENSE \ + vendor/github.com/klauspost/cpuid/v2/LICENSE \ + vendor/github.com/sirupsen/logrus/LICENSE \ + vendor/github.com/stretchr/testify/LICENSE \ + vendor/github.com/ungerik/go-sysfs/LICENSE \ + vendor/github.com/urfave/cli/v2/LICENSE \ + vendor/github.com/stretchr/objx/LICENSE \ + vendor/gopkg.in/yaml.v3/LICENSE \ + vendor/github.com/mattn/go-isatty/LICENSE \ + vendor/github.com/bmatsuo/lmdb-go/LICENSE.mdb.md + +MENDER_DEPENDENCIES = host-pkgconf openssl + +MENDER_LDFLAGS = -X github.com/mendersoftware/mender/conf.Version=$(MENDER_VERSION) + +MENDER_UPDATE_MODULES_FILES = \ + directory \ + script \ + single-file \ + $(if $(BR2_PACKAGE_DOCKER_CLI),docker) \ + $(if $(BR2_PACKAGE_RPM),rpm) + +define MENDER_INSTALL_CONFIG_FILES + $(INSTALL) -d -m 755 $(TARGET_DIR)/etc/mender/scripts + echo -n "3" > $(TARGET_DIR)/etc/mender/scripts/version + + $(INSTALL) -D -m 0644 $(MENDER_PKGDIR)/mender.conf \ + $(TARGET_DIR)/etc/mender/mender.conf + $(INSTALL) -D -m 0644 $(MENDER_PKGDIR)/server.crt \ + $(TARGET_DIR)/etc/mender/server.crt + + $(INSTALL) -D -m 0755 $(@D)/support/mender-device-identity \ + $(TARGET_DIR)/usr/share/mender/identity/mender-device-identity + $(foreach f,bootloader-integration hostinfo network os rootfs-type, \ + $(INSTALL) -D -m 0755 $(@D)/support/mender-inventory-$(f) \ + $(TARGET_DIR)/usr/share/mender/inventory/mender-inventory-$(f) + ) + + $(INSTALL) -D -m 0755 $(MENDER_PKGDIR)/artifact_info \ + $(TARGET_DIR)/etc/mender/artifact_info + + $(INSTALL) -D -m 0755 $(MENDER_PKGDIR)/device_type \ + $(TARGET_DIR)/etc/mender/device_type + + mkdir -p $(TARGET_DIR)/var/lib + ln -snf /var/run/mender $(TARGET_DIR)/var/lib/mender + $(foreach f,$(MENDER_UPDATE_MODULES_FILES), \ + $(INSTALL) -D -m 0755 $(@D)/support/modules/$(notdir $(f)) \ + $(TARGET_DIR)/usr/share/mender/modules/v3/$(notdir $(f)) + ) +endef + +MENDER_POST_INSTALL_TARGET_HOOKS += MENDER_INSTALL_CONFIG_FILES + +ifeq ($(BR2_PACKAGE_XZ),y) +MENDER_DEPENDENCIES += xz +else +MENDER_TAGS += nolzma +endif + +ifeq ($(BR2_PACKAGE_DBUS)$(BR2_PACKAGE_LIBGLIB2),yy) +MENDER_DEPENDENCIES += libglib2 +define MENDER_INSTALL_DBUS_AUTHENTICATION_MANAGER_CONF + $(INSTALL) -D -m 0755 $(@D)/support/dbus/io.mender.AuthenticationManager.conf \ + $(TARGET_DIR)/etc/dbus-1/system.d/io.mender.AuthenticationManager.conf + + $(INSTALL) -D -m 0755 $(@D)/support/dbus/io.mender.UpdateManager.conf \ + $(TARGET_DIR)/etc/dbus-1/system.d/io.mender.UpdateManager.conf +endef +MENDER_POST_INSTALL_TARGET_HOOKS += MENDER_INSTALL_DBUS_AUTHENTICATION_MANAGER_CONF +else +MENDER_TAGS += nodbus +endif + +define MENDER_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(MENDER_PKGDIR)/mender-client.service \ + $(TARGET_DIR)/usr/lib/systemd/system/mender-client.service +endef + +define MENDER_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 $(MENDER_PKGDIR)/S42mender \ + $(TARGET_DIR)/etc/init.d/S42mender +endef + +$(eval $(golang-package)) diff --git a/package/mender/readme.txt b/package/mender/readme.txt new file mode 100644 index 00000000..c884524a --- /dev/null +++ b/package/mender/readme.txt @@ -0,0 +1,154 @@ +=== Notes on using Mender on Buildroot +====================================== + +Mender is an open source over-the-air (OTA) software updater for +embedded Linux devices. Mender comprises a client running at the +embedded device, as well as a server that manages deployments across +many devices. There is also various tooling around the Mender project, +such as 'mender-artifact' which is used to create Mender Artifacts +that are compatible with the Mender client and server. + +Mender aims to address this challenge with a robust and easy to use +updater for embedded Linux devices, which is open source and available +to anyone. + +Robustness is ensured with atomic image-based deployments using a dual +A/B rootfs partition layout. This makes it always possible to roll +back to a working state, even when losing power at any time during the +update process. + +The official documentation is a good resource to get an in depth +understanding of how Mender works: + + https://docs.mender.io + +In Buildroot the following packages are provided: + +- BR2_PACKAGE_MENDER + - This will install the client on target rootfs +- BR2_PACKAGE_HOST_MENDER_ARTIFACT + - This will install the 'mender-artifact' tool in host rootfs. + +To fully utilize atomic image-based deployments using the A/B update +strategy, additional integration is required in the bootloader. This +integration is board specific. + +Currently supported bootloaders are GRUB and U-boot, and for reference +integrations please visit: + + https://github.com/mendersoftware/buildroot-mender + +Default configurations files +---------------------------- + +Buildroot comes with a default configuration and there a couple of +files that need your attention: + +- /etc/mender/mender.conf + - main configuration file for the Mender client + - https://docs.mender.io/client-configuration/configuration-file/configuration-options + +- /etc/mender/artifact_info + - The name of the image or update that will be built. This is what the + device will report that it is running, and different updates must have + different names + +- /var/lib/mender/device_type + - A string that defines the type of device + +Mender server configuration +--------------------------- + +The Mender server can be setup in different ways, and how you +configure the Mender client differs slightly depending on which server +environment is used. + +- Mender demo environment + +This is if you have followed the Getting started documentation where +you launch a Mender server locally and to configure your environment +to connect to this local server you need to provide the IP address of +the server on the local network. + +By default the demo environment will connect to 'docker.mender.io' and +'s3.docker.mender.io' and we need to make sure that these are resolved +to the local IP address of the running server by adding the following +entry to '/etc/hosts' + + docker.mender.io s3.docker.mender.io + +This is required because the communication between client and server +is utilizing TLS and the provided demo server certificate (server.crt) +is only valid for 'docker.mender.io' and 's3.docker.mender.io' +domains. + +- Hosted Mender + +To authenticate the Mender client with the Hosted Mender server you +need a tenant token. + +To get your tenant token: + +- log in to https://hosted.mender.io +- click your email at the top right and then “My organization” +- press the “COPY TO CLIPBOARD” +- assign content of clipboard to TenantToken + +Example mender.conf options for Hosted Mender: + + { + ... + "ServerURL": "https://hosted.mender.io", + "TenantToken": "" + ... + } + + +Creating Mender Artifacts +------------------------- + +To create Mender Artifacts based on Buildroot build output you must +include BR2_PACKAGE_HOST_MENDER_ARTIFACT in your configuration, and +then you would typically create the Mender Artifact in a post image +script (BR2_ROOTFS_POST_IMAGE_SCRIPT). Below is an example of such a +script: + + #!/bin/sh + + set -e + set -x + + device_type=$(cat ${TARGET_DIR}/var/lib/mender/device_type | sed 's/[^=]*=//') + artifact_name=$(cat ${TARGET_DIR}/etc/mender/artifact_info | sed 's/[^=]*=//') + + if [ -z "${device_type}" ] || [ -z "${artifact_name}" ]; then + echo "missing files required by Mender" + exit 1 + fi + + ${HOST_DIR}/usr/bin/mender-artifact write rootfs-image \ + --update ${BINARIES_DIR}/rootfs.ext4 \ + --output-path ${BINARIES_DIR}/${artifact_name}.mender \ + --artifact-name ${artifact_name} \ + --device-type ${device_type} + +As you can see some properties are extracted from target rootfs, and +this is because these values are used for compatibility checks, +meaning that the information must be present in both rootfs and in +Mender Artifact meta data. + +- device_type - must be an exact match between rootfs and Mender + Artifact meta-data to apply update. You can set an + array of devices here as well, e.g if your image is + compatible with multiple hardware revisions + +- artifact_name - must be an exact match between rootfs and Mender + Artifact meta-data to apply update. + +Configuring Mender with certificates +------------------------------------ + +Mender uses TLS to communicate with the management server, and if you +use a CA-signed certificate on the server, you must include +BR2_PACKAGE_CA_CERTIFICATES in your configuration to authenticate TLS +connections. diff --git a/package/mender/server.crt b/package/mender/server.crt new file mode 100644 index 00000000..79a57e15 --- /dev/null +++ b/package/mender/server.crt @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIBfTCCASOgAwIBAgIJAJOS76a0qWuZMAoGCCqGSM49BAMCMBsxGTAXBgNVBAMM +EGRvY2tlci5tZW5kZXIuaW8wHhcNMTYxMjE0MTk1MjQ2WhcNMjYxMjEyMTk1MjQ2 +WjAbMRkwFwYDVQQDDBBkb2NrZXIubWVuZGVyLmlvMFkwEwYHKoZIzj0CAQYIKoZI +zj0DAQcDQgAE7AVYis6MWGPGQYU1/tlLEnskRifDIhvkRb8Y4nQPekRkLkiBYYT3 +iJ46wHrnejbHaLstU9GRdKWOmOuU6HGdO6NQME4wHQYDVR0OBBYEFGOIU4q++Vz8 +9HuT1jg9V+wFeJcyMB8GA1UdIwQYMBaAFGOIU4q++Vz89HuT1jg9V+wFeJcyMAwG +A1UdEwQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIhAPLnEeWPNeN7eDCEYRitBfyO +X1yf2kzOm4ohBE5GY9gzAiBCq7HOSkzQDkelmQCCCpGXf/UwYNgQJjSoeGfk0j1a +TQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIBhDCCASmgAwIBAgIJALQrf4QDot4IMAoGCCqGSM49BAMCMB4xHDAaBgNVBAMM +E3MzLmRvY2tlci5tZW5kZXIuaW8wHhcNMTYxMjE0MTk1MjQ2WhcNMjYxMjEyMTk1 +MjQ2WjAeMRwwGgYDVQQDDBNzMy5kb2NrZXIubWVuZGVyLmlvMFkwEwYHKoZIzj0C +AQYIKoZIzj0DAQcDQgAEEc/Y3T+l3DvINePkpvVZORMIdHVs29jgsl48ia7z/NRX +HlKtKxVGJyFN5Y7sBZeLgBYH3F4Bo3KfmxI7ad0tI6NQME4wHQYDVR0OBBYEFIUm +cip00QZYpe4ULflbGNJan+Y9MB8GA1UdIwQYMBaAFIUmcip00QZYpe4ULflbGNJa +n+Y9MAwGA1UdEwQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhANHij9VZBDHOUPaC +pFiagnWnYL2HBR72W1xTKQbrLLTXAiEAvpwA4HzSnGmLd3010+jqQuMRHArN5WaX +h0fy7niBbIQ= +-----END CERTIFICATE----- diff --git a/package/menu-cache/0001-Support-gcc10-compilation.patch b/package/menu-cache/0001-Support-gcc10-compilation.patch new file mode 100644 index 00000000..5ef5d177 --- /dev/null +++ b/package/menu-cache/0001-Support-gcc10-compilation.patch @@ -0,0 +1,109 @@ +From 1ce739649b4d66339a03fc0ec9ee7a2f7c141780 Mon Sep 17 00:00:00 2001 +From: Mamoru TASAKA +Date: Fri, 24 Jan 2020 13:33:00 +0900 +Subject: [PATCH] Support gcc10 compilation + +gcc10 now defaults to -fno-common, and with gcc10 menu-cache compilation fails like + +/bin/ld: menu-merge.o:menu-cache-gen/menu-tags.h:167: multiple definition of `DirDirs'; main.o:menu-cache-gen/menu-tags.h:167: first defined here +/bin/ld: menu-merge.o:menu-cache-gen/menu-tags.h:164: multiple definition of `AppDirs'; main.o:menu-cache-gen/menu-tags.h:164: first defined here +/bin/ld: menu-merge.o:menu-cache-gen/menu-tags.h:52: multiple definition of `menuTag_Layout'; main.o:menu-cache-gen/menu-tags.h:52: first defined here +.... + +This patch fixes compilation with gcc10: properly declaring variables in header with "extern", and also removing some unneeded variables in header files. + +[Retrieved from: +https://github.com/lxde/menu-cache/pull/19/commits/1ce739649b4d66339a03fc0ec9ee7a2f7c141780] +Signed-off-by: Fabrice Fontaine +--- + menu-cache-gen/menu-tags.h | 55 ++++++++++++-------------------------- + 1 file changed, 17 insertions(+), 38 deletions(-) + +diff --git a/menu-cache-gen/menu-tags.h b/menu-cache-gen/menu-tags.h +index f3fd7d3..f71c0bc 100644 +--- a/menu-cache-gen/menu-tags.h ++++ b/menu-cache-gen/menu-tags.h +@@ -22,38 +22,17 @@ + #include + #include + +-FmXmlFileTag menuTag_Menu; +-FmXmlFileTag menuTag_AppDir; +-FmXmlFileTag menuTag_DefaultAppDirs; +-FmXmlFileTag menuTag_DirectoryDir; +-FmXmlFileTag menuTag_DefaultDirectoryDirs; +-FmXmlFileTag menuTag_Include; +-FmXmlFileTag menuTag_Exclude; +-FmXmlFileTag menuTag_Filename; +-FmXmlFileTag menuTag_Or; +-FmXmlFileTag menuTag_And; +-FmXmlFileTag menuTag_Not; +-FmXmlFileTag menuTag_Category; +-FmXmlFileTag menuTag_MergeFile; +-FmXmlFileTag menuTag_MergeDir; +-FmXmlFileTag menuTag_DefaultMergeDirs; +-FmXmlFileTag menuTag_Directory; +-FmXmlFileTag menuTag_Name; +-FmXmlFileTag menuTag_Deleted; +-FmXmlFileTag menuTag_NotDeleted; +-FmXmlFileTag menuTag_OnlyUnallocated; +-FmXmlFileTag menuTag_NotOnlyUnallocated; +-FmXmlFileTag menuTag_All; +-FmXmlFileTag menuTag_LegacyDir; +-FmXmlFileTag menuTag_KDELegacyDirs; +-FmXmlFileTag menuTag_Move; +-FmXmlFileTag menuTag_Old; +-FmXmlFileTag menuTag_New; +-FmXmlFileTag menuTag_Layout; +-FmXmlFileTag menuTag_DefaultLayout; +-FmXmlFileTag menuTag_Menuname; +-FmXmlFileTag menuTag_Separator; +-FmXmlFileTag menuTag_Merge; ++extern FmXmlFileTag menuTag_AppDir; ++extern FmXmlFileTag menuTag_DirectoryDir; ++extern FmXmlFileTag menuTag_Include; ++extern FmXmlFileTag menuTag_Exclude; ++extern FmXmlFileTag menuTag_Filename; ++extern FmXmlFileTag menuTag_Or; ++extern FmXmlFileTag menuTag_And; ++extern FmXmlFileTag menuTag_Not; ++extern FmXmlFileTag menuTag_Category; ++extern FmXmlFileTag menuTag_All; ++extern FmXmlFileTag menuTag_LegacyDir; + + typedef enum { + MERGE_NONE, /* starting value */ +@@ -152,19 +131,19 @@ typedef struct { + } MenuRule; + + /* requested language(s) */ +-char **languages; ++extern char **languages; + + /* list of menu files to monitor */ +-GSList *MenuFiles; ++extern GSList *MenuFiles; + + /* list of menu dirs to monitor */ +-GSList *MenuDirs; ++extern GSList *MenuDirs; + + /* list of available app dirs */ +-GSList *AppDirs; ++extern GSList *AppDirs; + + /* list of available dir dirs */ +-GSList *DirDirs; ++extern GSList *DirDirs; + + /* parse and merge menu files */ + MenuMenu *get_merged_menu(const char *file, FmXmlFile **xmlfile, GError **error); +@@ -177,7 +156,7 @@ gboolean save_menu_cache(MenuMenu *layout, const char *menuname, const char *fil + void _free_layout_items(GList *data); + + /* verbosity level */ +-gint verbose; ++extern gint verbose; + + #define DBG if (verbose) g_debug + #define VDBG if (verbose > 1) g_debug diff --git a/package/menu-cache/Config.in b/package/menu-cache/Config.in new file mode 100644 index 00000000..e61ca447 --- /dev/null +++ b/package/menu-cache/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_MENU_CACHE + bool "menu-cache" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBFM_EXTRA + help + Small library from LXDE project used for application menu + integration + + http://wiki.lxde.org/ + +comment "menu-cache needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/menu-cache/menu-cache.hash b/package/menu-cache/menu-cache.hash new file mode 100644 index 00000000..f3ced3e8 --- /dev/null +++ b/package/menu-cache/menu-cache.hash @@ -0,0 +1,6 @@ +# From https://sourceforge.net/projects/lxde/files/menu-cache/1.1/ +md5 99999a0bca48b980105208760c8fd893 menu-cache-1.1.0.tar.xz +sha1 01e6035aa1fe76d7047bdec235254aa5ce17394a menu-cache-1.1.0.tar.xz + +# Hash for license file: +sha256 7459fbad62653e4061dbfde3b0cad7c72777838beb10d2d11d969fac6226e7de COPYING diff --git a/package/menu-cache/menu-cache.mk b/package/menu-cache/menu-cache.mk new file mode 100644 index 00000000..c2b8c3b7 --- /dev/null +++ b/package/menu-cache/menu-cache.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# menu-cache +# +################################################################################ + +MENU_CACHE_VERSION_MAJOR = 1.1 +MENU_CACHE_VERSION = $(MENU_CACHE_VERSION_MAJOR).0 +MENU_CACHE_SOURCE = menu-cache-$(MENU_CACHE_VERSION).tar.xz +MENU_CACHE_SITE = http://sourceforge.net/projects/lxde/files/menu-cache/$(MENU_CACHE_VERSION_MAJOR) +MENU_CACHE_DEPENDENCIES = libfm-extra libglib2 +MENU_CACHE_LICENSE = LGPL-2.1 +MENU_CACHE_LICENSE_FILES = COPYING +MENU_CACHE_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/mesa3d-demos/0001-demos-makes-opengl-an-optional-component.patch b/package/mesa3d-demos/0001-demos-makes-opengl-an-optional-component.patch new file mode 100644 index 00000000..72bf7271 --- /dev/null +++ b/package/mesa3d-demos/0001-demos-makes-opengl-an-optional-component.patch @@ -0,0 +1,112 @@ +From 5b45f98255b74589015d5cb0d8ca31d7169c9f34 Mon Sep 17 00:00:00 2001 +From: Julien Olivain +Date: Fri, 16 Sep 2022 22:30:59 +0200 +Subject: [PATCH] demos: makes opengl an optional component + +This patch is a port of [1] for the new meson build system. + +matrix-code from es2gears has been moved to util in version 9.0.0 [2] +so now es2gears is linked with mesa3d-demo libutil (idep_util). +But at the same time the dependency on glu (dep_glu) has been added +to libutil [3]. dep_glu requires opengl (FULL_GL) to build. + +In order to keep the es2gears for egl only builds we have to +split the libutil files list to build readtex.c and showbuffer.c +only if opengl is available. + +Add back dep_glu since it's used in util's meson. + +Fixes: +https://gitlab.com/buildroot.org/buildroot/-/jobs/4936948236 +https://gitlab.com/buildroot.org/buildroot/-/jobs/4936948042 + +[1]. +https://git.busybox.net/buildroot/tree/package/mesa3d-demos/0001-demos-makes-opengl-an-optional-component.patch?h=2022.08 +[2] https://gitlab.freedesktop.org/mesa/demos/-/commit/c33e2f731c2eab86bbad7b6a028f8a90ea40a00c +[3] https://gitlab.freedesktop.org/mesa/demos/-/commit/ef24aae22978d4d357340074ca9a1c04d9cf81e6 + +Signed-off-by: Julien Olivain +[Bernd: rebased for version 9.0.0] +Signed-off-by: Bernd Kuhls +[Romain: fix egl only builds in util] +Signed-off-by: Romain Naour +--- + meson.build | 5 ++++- + meson_options.txt | 1 + + src/egl/meson.build | 5 ++++- + src/util/meson.build | 12 +++++++++--- + 4 files changed, 18 insertions(+), 5 deletions(-) + +diff --git a/meson.build b/meson.build +index 3e39b5a2..f27e1a18 100644 +--- a/meson.build ++++ b/meson.build +@@ -39,7 +39,10 @@ add_project_arguments( + dep_m = cc.find_library('m', required : false) + dep_winmm = cc.find_library('winmm', required : false) + +-dep_gl = dependency('gl') ++dep_gl = dependency('gl', required : get_option('gl')) ++if not dep_gl.found() ++ add_project_arguments('-DEGL_NO_X11=1', language: 'c') ++endif + + dep_epoll = dependency('epoll-shim', required : false) + dep_gles1 = dependency('glesv1_cm', required : get_option('gles1')) +diff --git a/meson_options.txt b/meson_options.txt +index 832b916a..c954a710 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -1,5 +1,6 @@ + option('with-glut', type : 'string') + option('egl', type : 'feature') ++option('gl', type : 'feature') + option('gles1', type : 'feature') + option('gles2', type : 'feature') + option('glut', type : 'feature') +diff --git a/src/egl/meson.build b/src/egl/meson.build +index d1846921..42bf8ecd 100644 +--- a/src/egl/meson.build ++++ b/src/egl/meson.build +@@ -19,7 +19,10 @@ + # SOFTWARE. + + subdir('eglut') +-subdir('opengl') ++ ++if dep_gl.found() ++ subdir('opengl') ++endif + + if dep_gles1.found() + subdir('opengles1') +diff --git a/src/util/meson.build b/src/util/meson.build +index b4fe614f..4420f28a 100644 +--- a/src/util/meson.build ++++ b/src/util/meson.build +@@ -22,13 +22,19 @@ inc_util = include_directories('.') + + files_libutil = files( + 'glinfo_common.c', +- 'readtex.c', +- 'showbuffer.c', + 'trackball.c', + 'matrix.c', + ) + +-_deps = [dep_glu, dep_m] ++_deps = [dep_m] ++if dep_gl.found() ++ files_libutil += files( ++ 'readtex.c', ++ 'showbuffer.c', ++ ) ++ _deps += dep_glu ++endif ++ + if dep_glut.found() + files_libutil += files('shaderutil.c') + _deps += dep_glut +-- +2.41.0 + diff --git a/package/mesa3d-demos/0002-meson-fix-glx-detection-without-glvnd.patch b/package/mesa3d-demos/0002-meson-fix-glx-detection-without-glvnd.patch new file mode 100644 index 00000000..37a60efd --- /dev/null +++ b/package/mesa3d-demos/0002-meson-fix-glx-detection-without-glvnd.patch @@ -0,0 +1,47 @@ +From e16117fc92688d76a042ad2c590c77d5a987a4ac Mon Sep 17 00:00:00 2001 +From: Erik Faye-Lund +Date: Fri, 24 Mar 2023 13:31:58 +0100 +Subject: [PATCH] meson: fix glx-detection without glvnd + +When build without GLVND, Mesa provides GLX as a part of libGL, just +like XQuartz does on MacOS. There's nothing really macOS specific about +this fallback, so let's drop the condition. + +And just for good measure, let's add in dep_gl as a dependency for +the header-check here, in case some one decides to install libGL outside +of the default include directory. + +Fixes: 34300551 ("meson: explicitly check for glx dependency") +Closes: https://gitlab.freedesktop.org/mesa/demos/-/issues/36 +Reviewed-by: Hoe Hao Cheng + +Upstream: https://gitlab.freedesktop.org/mesa/demos/-/commit/e16117fc92688d76a042ad2c590c77d5a987a4ac + +Signed-off-by: Bernd Kuhls +--- + meson.build | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/meson.build b/meson.build +index c1853f94..bc3278e1 100644 +--- a/meson.build ++++ b/meson.build +@@ -99,10 +99,11 @@ if not dep_glu.found() and host_machine.system() != 'darwin' + endif + + dep_glx = dependency('glx', required: false, disabler : true) +-if not dep_glx.found() and host_machine.system() == 'darwin' +- # xquartz doesn't have a glx.pc, but it does have the header. And all the +- # symbols reside in libGL, so let's just use that. +- if cc.check_header('GL/glx.h', dependencies: dep_x11) ++if not dep_glx.found() ++ # Both Mesa build without GLVND and XQuartz lacks a glx.pc, but does ++ # provide the header. And all the symbols reside in libGL, so let's ++ # just use that. ++ if cc.check_header('GL/glx.h', dependencies: [dep_x11, dep_gl]) + dep_glx = dep_gl + endif + endif +-- +GitLab + diff --git a/package/mesa3d-demos/Config.in b/package/mesa3d-demos/Config.in new file mode 100644 index 00000000..1761494c --- /dev/null +++ b/package/mesa3d-demos/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_MESA3D_DEMOS + bool "mesa3d-demos" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES \ + || BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBOPENVG + select BR2_PACKAGE_LIBGLEW if BR2_PACKAGE_XORG7 && BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_LIBGLU if BR2_PACKAGE_XORG7 && BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 && BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 && BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_LIBXKBCOMMON if BR2_PACKAGE_WAYLAND + help + OpenGL demos from the Mesa 3D project. + + http://mesa3d.org + +comment "mesa3d-demos needs a toolchain with C++" + depends on !BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES \ + || BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBOPENVG diff --git a/package/mesa3d-demos/mesa3d-demos.hash b/package/mesa3d-demos/mesa3d-demos.hash new file mode 100644 index 00000000..cdf9adb3 --- /dev/null +++ b/package/mesa3d-demos/mesa3d-demos.hash @@ -0,0 +1,3 @@ +# From https://lists.freedesktop.org/archives/mesa-announce/2023-March/000711.html +sha256 3046a3d26a7b051af7ebdd257a5f23bfeb160cad6ed952329cdff1e9f1ed496b mesa-demos-9.0.0.tar.xz +sha512 af33ef72a521416e39d93370b2b4ccb768f08084c9e4c0aa62868210d9465c858e5cb8e5d23952295a3073946f609eb8723ee60b39dd9fb6696c4e45aafbb2c1 mesa-demos-9.0.0.tar.xz diff --git a/package/mesa3d-demos/mesa3d-demos.mk b/package/mesa3d-demos/mesa3d-demos.mk new file mode 100644 index 00000000..8acba927 --- /dev/null +++ b/package/mesa3d-demos/mesa3d-demos.mk @@ -0,0 +1,72 @@ +################################################################################ +# +# mesa3d-demos +# +################################################################################ + +MESA3D_DEMOS_VERSION = 9.0.0 +MESA3D_DEMOS_SOURCE = mesa-demos-$(MESA3D_DEMOS_VERSION).tar.xz +MESA3D_DEMOS_SITE = https://archive.mesa3d.org/demos +MESA3D_DEMOS_DEPENDENCIES = host-pkgconf +MESA3D_DEMOS_LICENSE = MIT + +MESA3D_DEMOS_CONF_OPTS += \ + -Dgles1=disabled + +ifeq ($(BR2_PACKAGE_XORG7)$(BR2_PACKAGE_HAS_LIBGL),yy) +MESA3D_DEMOS_DEPENDENCIES += libgl libglew libglu xlib_libX11 xlib_libXext +MESA3D_DEMOS_CONF_OPTS += -Dgl=enabled -Dx11=enabled +else +MESA3D_DEMOS_CONF_OPTS += -Dgl=disabled -Dx11=disabled +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBEGL),y) +MESA3D_DEMOS_DEPENDENCIES += libegl +MESA3D_DEMOS_CONF_OPTS += -Degl=enabled +else +MESA3D_DEMOS_CONF_OPTS += -Degl=disabled +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y) +MESA3D_DEMOS_DEPENDENCIES += libgles +MESA3D_DEMOS_CONF_OPTS += -Dgles2=enabled +else +MESA3D_DEMOS_CONF_OPTS += -Dgles2=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBDRM),y) +MESA3D_DEMOS_DEPENDENCIES += libdrm +MESA3D_DEMOS_CONF_OPTS += -Dlibdrm=enabled +else +MESA3D_DEMOS_CONF_OPTS += -Dlibdrm=disabled +endif + +ifeq ($(BR2_PACKAGE_MESA3D_GBM),y) +# Meson search for gbm, but has no option to enable/disable it. See: +# https://gitlab.freedesktop.org/mesa/demos/-/blob/mesa-demos-8.5.0/meson.build#L88 +# We still add the dependency, if needed, to make sure it will always +# be detected. +MESA3D_DEMOS_DEPENDENCIES += mesa3d +endif + +ifeq ($(BR2_PACKAGE_LIBFREEGLUT),y) +MESA3D_DEMOS_DEPENDENCIES += libfreeglut +MESA3D_DEMOS_CONF_OPTS += -Dwith-glut=$(STAGING_DIR)/usr +# osmesa support depends on glut +ifeq ($(BR2_PACKAGE_MESA3D_OSMESA_GALLIUM),y) +MESA3D_DEMOS_CONF_OPTS += -Dosmesa=enabled +else +MESA3D_DEMOS_CONF_OPTS += -Dosmesa=disabled +endif +else +MESA3D_DEMOS_CONF_OPTS += -Dosmesa=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBDECOR)$(BR2_PACKAGE_WAYLAND),yy) +MESA3D_DEMOS_DEPENDENCIES += libdecor libxkbcommon wayland +MESA3D_DEMOS_CONF_OPTS += -Dwayland=enabled +else +MESA3D_DEMOS_CONF_OPTS += -Dwayland=disabled +endif + +$(eval $(meson-package)) diff --git a/package/mesa3d-headers/Config.in b/package/mesa3d-headers/Config.in new file mode 100644 index 00000000..c4efab67 --- /dev/null +++ b/package/mesa3d-headers/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_MESA3D_HEADERS + bool + help + Mesa 3D, an open-source implementation of the OpenGL + specification. + + This package only installs headers needed by other packages. + + http://mesa3d.org diff --git a/package/mesa3d-headers/dri.pc b/package/mesa3d-headers/dri.pc new file mode 100644 index 00000000..bd9a33b6 --- /dev/null +++ b/package/mesa3d-headers/dri.pc @@ -0,0 +1,10 @@ +prefix=/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +dridriverdir=/usr/lib/dri + +Name: dri +Description: Direct Rendering Infrastructure +Version: @VERSION@ +Cflags: -I${includedir} diff --git a/package/mesa3d-headers/mesa3d-headers.hash b/package/mesa3d-headers/mesa3d-headers.hash new file mode 120000 index 00000000..137d0bea --- /dev/null +++ b/package/mesa3d-headers/mesa3d-headers.hash @@ -0,0 +1 @@ +../mesa3d/mesa3d.hash \ No newline at end of file diff --git a/package/mesa3d-headers/mesa3d-headers.mk b/package/mesa3d-headers/mesa3d-headers.mk new file mode 100644 index 00000000..33c60b28 --- /dev/null +++ b/package/mesa3d-headers/mesa3d-headers.mk @@ -0,0 +1,77 @@ +################################################################################ +# +# mesa3d-headers +# +################################################################################ + +# mesa3d-headers is inherently incompatible with mesa3d, so error out +# if both are enabled. +ifeq ($(BR_BUILDING)$(BR2_PACKAGE_MESA3D)$(BR2_PACKAGE_MESA3D_HEADERS),yyy) +$(error mesa3d-headers enabled, but mesa3d enabled too) +endif + +# Not possible to directly refer to mesa3d variables, because of +# first/second expansion trickery... +MESA3D_HEADERS_VERSION = 24.0.9 +MESA3D_HEADERS_SOURCE = mesa-$(MESA3D_HEADERS_VERSION).tar.xz +MESA3D_HEADERS_SITE = https://archive.mesa3d.org +MESA3D_HEADERS_DL_SUBDIR = mesa3d +MESA3D_HEADERS_LICENSE = MIT, SGI, Khronos +MESA3D_HEADERS_LICENSE_FILES = docs/license.rst +MESA3D_HEADERS_CPE_ID_VENDOR = mesa3d +MESA3D_HEADERS_CPE_ID_PRODUCT = mesa + +# Only installs header files +MESA3D_HEADERS_INSTALL_STAGING = YES +MESA3D_HEADERS_INSTALL_TARGET = NO + +MESA3D_HEADERS_DIRS = KHR + +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) + +MESA3D_HEADERS_DIRS += GL + +ifeq ($(BR2_PACKAGE_XORG7),y) + +# Not using $(SED) because we do not want to work in-place, and $(SED) +# contains -i. +define MESA3D_HEADERS_BUILD_DRI_PC + sed -e 's:@VERSION@:$(MESA3D_HEADERS_VERSION):' \ + $(MESA3D_HEADERS_PKGDIR)/dri.pc \ + >$(@D)/src/gallium/frontends/dri/dri.pc +endef + +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/gallium/frontends/dri/dri.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/dri.pc +endef + +endif # Xorg + +endif # OpenGL + +ifeq ($(BR2_PACKAGE_HAS_LIBEGL),y) +MESA3D_HEADERS_DIRS += EGL +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y) +MESA3D_HEADERS_DIRS += GLES GLES2 +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBOPENCL),y) +MESA3D_HEADERS_DIRS += CL +endif + +define MESA3D_HEADERS_BUILD_CMDS + $(MESA3D_HEADERS_BUILD_DRI_PC) +endef + +define MESA3D_HEADERS_INSTALL_STAGING_CMDS + $(foreach d,$(MESA3D_HEADERS_DIRS),\ + cp -dpfr $(@D)/include/$(d) $(STAGING_DIR)/usr/include/ || exit 1$(sep)) + $(MESA3D_HEADERS_INSTALL_DRI_PC) +endef + +$(eval $(generic-package)) diff --git a/package/mesa3d/0001-meson-Set-proper-value-for-LIBCLC_INCLUDEDIR.patch b/package/mesa3d/0001-meson-Set-proper-value-for-LIBCLC_INCLUDEDIR.patch new file mode 100644 index 00000000..e3c70c3f --- /dev/null +++ b/package/mesa3d/0001-meson-Set-proper-value-for-LIBCLC_INCLUDEDIR.patch @@ -0,0 +1,41 @@ +From 7b46756a99aca7f27a45c3b99460f088570f6f53 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Wed, 17 Apr 2019 23:07:42 +0200 +Subject: [PATCH] meson: Set proper value for LIBCLC_INCLUDEDIR + +LIBCLC_INCLUDEDIR is the location where mesa3d OpenCL implementation +will look for OpenCL "headers" on the target, when building the OpenCL +kernels. + +The value returned by pkg-config for includedir is relevant when +cross-compiling, on the build machine. But in this specific case, we +really need a value that is valid on the target. + +Those headers are installed by the libclc package in /usr/share so +that they are not removed by Buildroot target-finalize logic. + +Based on the patch for autotools provided by Valentin Korenblit. + +Signed-off-by: Romain Naour +Signed-off-by: Bernd Kuhls +[rebased for 20.2.0 & 20.3.0] +--- + src/gallium/frontends/clover/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/gallium/frontends/clover/meson.build b/src/gallium/frontends/clover/meson.build +index 62ac5f5278d..ecdeb39669c 100644 +--- a/src/gallium/frontends/clover/meson.build ++++ b/src/gallium/frontends/clover/meson.build +@@ -27,7 +27,7 @@ + '-DCL_USE_DEPRECATED_OPENCL_2_0_APIS', + '-DCL_USE_DEPRECATED_OPENCL_2_1_APIS', + '-DCL_USE_DEPRECATED_OPENCL_2_2_APIS', +- '-DLIBCLC_INCLUDEDIR="@0@/"'.format(dep_clc.get_variable(pkgconfig : 'includedir')), ++ '-DLIBCLC_INCLUDEDIR="/usr/share"', + '-DLIBCLC_LIBEXECDIR="@0@/"'.format(dep_clc.get_variable(pkgconfig : 'libexecdir')) + ] + clover_spirv_cpp_args = [] +-- +2.20.1 + diff --git a/package/mesa3d/0002-vc4-add-meson-option-to-disable-optional-neon-suppor.patch b/package/mesa3d/0002-vc4-add-meson-option-to-disable-optional-neon-suppor.patch new file mode 100644 index 00000000..f3919478 --- /dev/null +++ b/package/mesa3d/0002-vc4-add-meson-option-to-disable-optional-neon-suppor.patch @@ -0,0 +1,86 @@ +From f719e942dde0a46a9ff0080001cb3466012ffcc0 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Mon, 9 Mar 2020 13:01:14 +0100 +Subject: [PATCH] vc4: add meson option to disable optional neon support + +Not all toolchains are able to compile the runtime +optional vc4 neon support, so add an meson option +to force disabling it at compile time. + +Upstream: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4114 +Signed-off-by: Peter Seiderer +Signed-off-by: Bernd Kuhls +[rebased for 20.2.0, 20.3.0, 21.1.0, 23.1.0 & 23.2.0] +Signed-off-by: Peter Seiderer +[fix syntax error after previous rebases] +--- + meson_options.txt | 7 +++++++ + src/gallium/drivers/vc4/meson.build | 4 ++-- + src/gallium/drivers/vc4/vc4_tiling.h | 4 ++-- + 3 files changed, 11 insertions(+), 4 deletions(-) + +diff --git a/meson_options.txt b/meson_options.txt +index 8e0bf2a..1cf0e07 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -124,6 +124,13 @@ option( + description : 'enable gallium va frontend.', + ) + ++option( ++ 'gallium-vc4-neon', ++ type : 'feature', ++ deprecated: {'true': 'enabled', 'false': 'disabled'}, ++ description : 'enable gallium vc4 optional neon support.', ++) ++ + option( + 'va-libs-path', + type : 'string', +diff --git a/src/gallium/drivers/vc4/meson.build b/src/gallium/drivers/vc4/meson.build +index 84da951..7f950de 100644 +--- a/src/gallium/drivers/vc4/meson.build ++++ b/src/gallium/drivers/vc4/meson.build +@@ -84,7 +84,7 @@ files_libvc4 = files( + vc4_c_args = [] + + libvc4_neon = [] +-if host_machine.cpu_family() == 'arm' ++if host_machine.cpu_family() == 'arm' and not get_option('gallium-vc4-neon').disabled() + libvc4_neon = static_library( + 'vc4_neon', + 'vc4_tiling_lt_neon.c', +@@ -93,7 +93,7 @@ if host_machine.cpu_family() == 'arm' + ], + c_args : '-mfpu=neon', + ) +- vc4_c_args += '-DUSE_ARM_ASM' ++ vc4_c_args += '-DVC4_TILING_LT_NEON' + endif + + if dep_simpenrose.found() +diff --git a/src/gallium/drivers/vc4/vc4_tiling.h b/src/gallium/drivers/vc4/vc4_tiling.h +index 5afe329..919b299 100644 +--- a/src/gallium/drivers/vc4/vc4_tiling.h ++++ b/src/gallium/drivers/vc4/vc4_tiling.h +@@ -89,7 +89,7 @@ vc4_load_lt_image(void *dst, uint32_t dst_stride, + void *src, uint32_t src_stride, + int cpp, const struct pipe_box *box) + { +-#ifdef USE_ARM_ASM ++#ifdef VC4_TILING_LT_NEON + if (util_get_cpu_caps()->has_neon) { + vc4_load_lt_image_neon(dst, dst_stride, src, src_stride, + cpp, box); +@@ -105,7 +105,7 @@ vc4_store_lt_image(void *dst, uint32_t dst_stride, + void *src, uint32_t src_stride, + int cpp, const struct pipe_box *box) + { +-#ifdef USE_ARM_ASM ++#ifdef VC4_TILING_LT_NEON + if (util_get_cpu_caps()->has_neon) { + vc4_store_lt_image_neon(dst, dst_stride, src, src_stride, + cpp, box); +-- +2.41.0 + diff --git a/package/mesa3d/0003-src-util-rand_xor-Include-stddef.h-to-fix-build-erro.patch b/package/mesa3d/0003-src-util-rand_xor-Include-stddef.h-to-fix-build-erro.patch new file mode 100644 index 00000000..e30cb97a --- /dev/null +++ b/package/mesa3d/0003-src-util-rand_xor-Include-stddef.h-to-fix-build-erro.patch @@ -0,0 +1,39 @@ +From fdc8b5a205e2116408aeb9fd305e57f656e2e89d Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sun, 9 Aug 2020 17:06:26 +0200 +Subject: [PATCH] src/util/rand_xor: Include stddef.h to fix build error +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes + +In file included from ../src/util/rand_xor.c:29: +output/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:27:35: + error: unknown type name ‘size_t’ + extern int getrandom(void *__buf, size_t count, unsigned int flags) + +seen with gcc version 8.3.0 (Buildroot 2020.02) and uClibc. + +Upstream: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6248 + +Signed-off-by: Bernd Kuhls +--- + src/util/rand_xor.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/util/rand_xor.c b/src/util/rand_xor.c +index 81b64f1ea71..fcb481487fa 100644 +--- a/src/util/rand_xor.c ++++ b/src/util/rand_xor.c +@@ -25,6 +25,7 @@ + #include "detect_os.h" + + #if !DETECT_OS_WINDOWS ++#include + #if defined(HAVE_GETRANDOM) + #include + #endif +-- +2.27.0 + diff --git a/package/mesa3d/0004-Fix-uClibc-build.patch b/package/mesa3d/0004-Fix-uClibc-build.patch new file mode 100644 index 00000000..faa86b0d --- /dev/null +++ b/package/mesa3d/0004-Fix-uClibc-build.patch @@ -0,0 +1,72 @@ +From 09ce52fe375a6fc1ccf51b6b691aaa2c3f53fbd5 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Fri, 3 Jun 2022 16:26:03 +0200 +Subject: [PATCH] Fix uClibc build +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes build errors with uClibc and gcc-9.3.0: + +../src/gallium/drivers/lima/lima_texture.c:47:15: error: expected + declaration specifiers or ‘...’ before ‘__builtin_offsetof’ + 47 | static_assert(offsetof(lima_tex_desc, va) == 24, + "lima_tex_desc->va offset isn't 24"); + +../src/egl/main/egldisplay.c: In function ‘_eglGetNativePlatformFromEnv’: + ../src/egl/main/egldisplay.c:101:4: error: implicit declaration of + function ‘static_assert’ [-Werror=implicit-function-declaration] 101 | + static_assert(ARRAY_SIZE(egl_platforms) == _EGL_NUM_PLATFORMS, + +../src/util/macros.h:74:4: error: implicit declaration of function + ‘static_assert’ [-Werror=implicit-function-declaration] + 74 | static_assert(cond, #cond); \ + | ^~~~~~~~~~~~~ + +Upstream: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13898 + +Signed-off-by: Bernd Kuhls +[rebased for 23.2.0] +Signed-off-by: Bernd Kuhls +--- + src/util/compiler.h | 10 ++++++++++ + src/util/macros.h | 1 + + 2 files changed, 11 insertions(+) + +diff --git a/src/util/compiler.h b/src/util/compiler.h +index d184ad455af..b5c56807acc 100644 +--- a/src/util/compiler.h ++++ b/src/util/compiler.h +@@ -35,6 +35,17 @@ + + + #include ++ ++/* ++ * C11 static_assert() macro ++ * assert.h only defines that name for C11 and above ++ */ ++#if !defined(__cplusplus) ++#ifndef static_assert ++#define static_assert _Static_assert ++#endif ++#endif ++ + #include + #include + #include +diff --git a/src/util/macros.h b/src/util/macros.h +index 22b18303826..8f73ee72693 100644 +--- a/src/util/macros.h ++++ b/src/util/macros.h +@@ -31,6 +31,7 @@ + #include + #include + #include ++#include "util/compiler.h" + + #ifdef _GAMING_XBOX + #define strdup _strdup +-- +2.34.1 + diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in new file mode 100644 index 00000000..7761b0a6 --- /dev/null +++ b/package/mesa3d/Config.in @@ -0,0 +1,394 @@ +menuconfig BR2_PACKAGE_MESA3D + bool "mesa3d" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_SYNC_1 + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_WAYLAND_PROTOCOLS if BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_ZLIB + help + Mesa 3D, an open-source implementation of the OpenGL + specification. + + http://mesa3d.org + +if BR2_PACKAGE_MESA3D + +# Some Gallium driver needs libelf when built with LLVM support +config BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS + bool + +config BR2_PACKAGE_MESA3D_LLVM + bool "llvm support" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::shared_future + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR # std::wstring + depends on BR2_HOST_GCC_AT_LEAST_7 # host-llvm + select BR2_PACKAGE_LLVM + +comment "llvm support needs a toolchain w/ wchar, threads, C++, gcc >= 7, dynamic library, host gcc >= 7" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 \ + || BR2_STATIC_LIBS || !BR2_USE_WCHAR \ + || !BR2_HOST_GCC_AT_LEAST_7 + +comment "llvm support needs a toolchain not affected by GCC bug 64735" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + +# clang and libclc dependencies are satisfied by +# BR2_PACKAGE_MESA3D_LLVM +config BR2_PACKAGE_MESA3D_OPENCL + bool "OpenCL support" + depends on BR2_PACKAGE_MESA3D_LLVM + depends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600 || \ + BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI + select BR2_PACKAGE_LLVM_RTTI + select BR2_PACKAGE_CLANG + select BR2_PACKAGE_LIBCLC + select BR2_PACKAGE_HAS_LIBOPENCL + +# inform the .mk file of gallium or vulkan driver selection +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + bool + select BR2_PACKAGE_MESA3D_DRIVER + +config BR2_PACKAGE_MESA3D_VULKAN_DRIVER + bool + select BR2_PACKAGE_MESA3D_DRIVER + +config BR2_PACKAGE_MESA3D_DRIVER + bool + select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7 + +# Gallium xa state tracker. +# Quote from mesa3d meson.build: "XA state tracker requires at least +# one of the following gallium drivers: nouveau, freedreno, i915, svga. +config BR2_PACKAGE_MESA3D_NEEDS_XA + bool + +# OpenGL GLX and Gallium VDPAU both needs X11 +config BR2_PACKAGE_MESA3D_NEEDS_X11 + bool + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_LIBXCB + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXDAMAGE + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXFIXES + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_XLIB_LIBXXF86VM + select BR2_PACKAGE_XORGPROTO + +comment "Gallium drivers" + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS + bool "Gallium crocus driver" + depends on BR2_i386 || BR2_x86_64 + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + help + Mesa driver for gen4-7 Intel GPUs. + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV + bool "Gallium Etnaviv driver" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + select BR2_PACKAGE_LIBDRM_ETNAVIV + help + Mesa driver for Vivante GPUs. + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_FREEDRENO + bool "Gallium freedreno driver" + depends on BR2_arm || BR2_aarch64 || BR2_aarch64_be # libdrm-freedreno + # libdrm's freedreno option depends on LIBDRM_HAS_ATOMIC. Propagating + # that dependency here causes a circular dependency that Kconfig + # can't see is just spurious. However, that dependency is about + # the toolchain having sync4 primitives, which is always a given + # for arm/aarch64. + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + select BR2_PACKAGE_LIBDRM_FREEDRENO + help + Mesa driver for Freedreno GPUs. + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_I915 + bool "Gallium i915 driver" + depends on BR2_i386 || BR2_x86_64 + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + select BR2_PACKAGE_LIBDRM_INTEL + help + Support for i915-based Intel GPUs. + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_IRIS + bool "Gallium iris driver" + depends on BR2_i386 || BR2_x86_64 + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + help + Mesa driver for iris-based Intel GPUs. + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_LIMA + bool "Gallium lima driver" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + help + Mesa driver for ARM Mali Utgard GPUs. + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU + bool "Gallium nouveau driver" + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + select BR2_PACKAGE_LIBDRM_NOUVEAU + select BR2_PACKAGE_MESA3D_NEEDS_XA + select BR2_PACKAGE_LLVM_RTTI if BR2_PACKAGE_MESA3D_LLVM + help + Supports all Nvidia GPUs. + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_PANFROST + bool "Gallium panfrost driver" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + help + Mesa driver for ARM Mali Midgard and Bifrost GPUs. + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R300 + bool "Gallium Radeon R300 driver" + depends on BR2_i386 || BR2_x86_64 + # lbdrm's radeon option depends on LIBDRM_HAS_ATOMIC. Propagating + # that dependency here causes a circular dependency that Kconfig + # can't see is just spurious. However, that dependency is about + # the toolchain having sync4 primitives, which is always a given + # for x86. + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + select BR2_PACKAGE_LIBDRM_RADEON + help + Driver for ATI/AMD Radeon R300/R400/R500 GPUs. + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600 + bool "Gallium Radeon R600 driver" + depends on BR2_i386 || BR2_x86_64 + depends on !BR2_PACKAGE_MESA3D_LLVM || \ + (BR2_PACKAGE_MESA3D_LLVM && (BR2_TOOLCHAIN_USES_UCLIBC || \ + BR2_TOOLCHAIN_USES_GLIBC)) # elfutils + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + select BR2_PACKAGE_LIBDRM_RADEON + select BR2_PACKAGE_LLVM_AMDGPU if BR2_PACKAGE_MESA3D_LLVM + select BR2_PACKAGE_ELFUTILS if BR2_PACKAGE_MESA3D_LLVM + select BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS if BR2_PACKAGE_MESA3D_LLVM + help + Driver for ATI/AMD Radeon R600/R700/HD5000/HD6000 GPUs. + +# R600 needs libelf when Mesa3D is built with LLVM support +# musl is not currently compatible with elfutils +comment "R600 driver needs a uClibc or glibc toolchain when llvm is enabled" + depends on BR2_PACKAGE_MESA3D_LLVM + depends on !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC) + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI + bool "Gallium Radeon SI driver" + depends on BR2_USE_MMU # libdrm + depends on BR2_i386 || BR2_x86_64 + depends on BR2_PACKAGE_MESA3D_LLVM + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + select BR2_PACKAGE_LIBDRM_AMDGPU + select BR2_PACKAGE_LIBDRM_RADEON + select BR2_PACKAGE_LLVM_AMDGPU + select BR2_PACKAGE_ELFUTILS + select BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS + help + Driver for ATI/AMD Radeon HD7000/HD8000/Rx200 GPUs. + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SVGA + bool "Gallium vmware svga driver" + depends on BR2_i386 || BR2_x86_64 + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + select BR2_PACKAGE_LIBDRM_VMWGFX + select BR2_PACKAGE_MESA3D_NEEDS_XA + help + This is a virtual GPU driver for VMWare virtual machines. + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST + bool "Gallium swrast driver" + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + help + This is a software opengl implementation using the Gallium3D + infrastructure. + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_TEGRA + bool "Gallium tegra driver" + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU + select BR2_PACKAGE_LIBDRM_NOUVEAU + select BR2_PACKAGE_MESA3D_NEEDS_XA + help + Adds support for Nvidia Tegra GPUs, requires nouveau. + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D + bool "Gallium v3d driver" + depends on (BR2_arm && BR2_ARM_CPU_HAS_NEON) || BR2_aarch64 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4 # runtime + select BR2_PACKAGE_MESA3D_OPENGL_EGL + help + Driver for Broadcom VC6 (rpi4) GPUs (needs vc4). + + It requires a kernel 4.18+ with DRM V3D support enabled: + + - CONFIG_DRM_V3D + - CONFIG_DRM_VC4 + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4 + bool "Gallium vc4 driver" + depends on (BR2_arm && BR2_ARM_CPU_HAS_NEON) || BR2_aarch64 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + select BR2_PACKAGE_LIBDRM_VC4 + select BR2_PACKAGE_MESA3D_OPENGL_EGL + help + Driver for Broadcom VC4 (rpi2/3) GPUs. + It requires a vanilla 4.5+ kernel with drm vc4 (open) support. + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VIRGL + bool "Gallium virgl driver" + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + select BR2_PACKAGE_MESA3D_OPENGL_EGL + help + virgl is the 3D acceleration backend for the virtio-gpu + shipping with qemu. + +config BR2_PACKAGE_MESA3D_VDPAU + bool "Gallium VDPAU state tracker" + depends on BR2_PACKAGE_XORG7 + depends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU \ + || BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600 \ + || BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI + select BR2_PACKAGE_MESA3D_NEEDS_X11 + select BR2_PACKAGE_LIBVDPAU + help + VDPAU state tracker (needs r300, r600, radeonsi or nouveau + gallium drivers). + +comment "Gallium VDPAU state tracker needs X.org and gallium drivers r600, radeonsi or nouveau" + depends on !BR2_PACKAGE_XORG7 || \ + !(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU \ + || BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600 \ + || BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI) + +comment "Vulkan drivers" + +config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_BROADCOM + bool "Vulkan broadcom driver" + depends on BR2_arm || BR2_aarch64 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # dri3/libxshmfence + select BR2_PACKAGE_MESA3D_VULKAN_DRIVER + help + Vulkan broadcom driver. + +config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL + bool "Vulkan Intel driver" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # memfd.h + depends on BR2_TOOLCHAIN_USES_GLIBC # ifunc, static_assert + select BR2_PACKAGE_MESA3D_VULKAN_DRIVER + help + Vulkan driver for Intel hardware from Ivy Bridge onward. + +comment "intel vulkan needs a glibc toolchain w/ headers >= 3.17" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 || \ + !BR2_TOOLCHAIN_USES_GLIBC + +config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_SWRAST + bool "Vulkan swrast driver" + depends on BR2_PACKAGE_MESA3D_LLVM + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST + select BR2_PACKAGE_MESA3D_VULKAN_DRIVER + help + Vulkan swrast driver. + +comment "Off-screen Rendering" + +config BR2_PACKAGE_MESA3D_OSMESA_GALLIUM + bool "OSMesa (Gallium) library" + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST + help + The OSMesa API provides functions for off-screen rendering. + +if BR2_PACKAGE_MESA3D_DRIVER + +comment "OpenGL API Support" + +config BR2_PACKAGE_MESA3D_GBM + bool "gbm" + depends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER && \ + BR2_PACKAGE_MESA3D_OPENGL_EGL + select BR2_PACKAGE_HAS_LIBGBM + select BR2_PACKAGE_LIBGBM_HAS_FEATURE_FORMAT_MODIFIER_PLANE_COUNT + select BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF + help + Enable Generic Buffer Management (gbm) + +comment "gbm support needs a gallium driver w/ EGL support." + depends on !(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER && BR2_PACKAGE_MESA3D_OPENGL_EGL) + +config BR2_PACKAGE_MESA3D_OPENGL_GLX + bool "OpenGL GLX" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_HAS_LIBGL if !BR2_PACKAGE_LIBGLVND + select BR2_PACKAGE_LIBGLVND_DISPATCH_GL if BR2_PACKAGE_LIBGLVND + select BR2_PACKAGE_MESA3D_NEEDS_X11 + help + Enable GLX graphic acceleration (OpenGL + X11). + +comment "OpenGL GLX support needs X11" + depends on !BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_MESA3D_OPENGL_EGL + bool "OpenGL EGL" + depends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + select BR2_PACKAGE_HAS_LIBEGL if !BR2_PACKAGE_LIBGLVND + select BR2_PACKAGE_LIBGLVND_DISPATCH_EGL if BR2_PACKAGE_LIBGLVND + select BR2_PACKAGE_MESA3D_GBM + help + Use the Khronos EGL APIs. EGL is a window manager for OpenGL + applications similar to GLX, for X, and WGL, for Windows. + +config BR2_PACKAGE_MESA3D_OPENGL_ES + bool "OpenGL ES" + select BR2_PACKAGE_HAS_LIBGLES if !BR2_PACKAGE_LIBGLVND + select BR2_PACKAGE_LIBGLVND_DISPATCH_GLES if BR2_PACKAGE_LIBGLVND + help + Use the Khronos OpenGL ES APIs. This is commonly used on + embedded systems and represents a subset of the OpenGL API. + +endif # BR2_PACKAGE_MESA3D_DRIVER + +config BR2_PACKAGE_PROVIDES_LIBGBM + default "mesa3d" if BR2_PACKAGE_MESA3D_GBM + +config BR2_PACKAGE_PROVIDES_LIBGL + default "mesa3d" if BR2_PACKAGE_MESA3D_OPENGL_GLX && !BR2_PACKAGE_LIBGLVND + +config BR2_PACKAGE_PROVIDES_LIBEGL + default "mesa3d" if BR2_PACKAGE_MESA3D_OPENGL_EGL && !BR2_PACKAGE_LIBGLVND + +config BR2_PACKAGE_PROVIDES_LIBGLES + default "mesa3d" if BR2_PACKAGE_MESA3D_OPENGL_ES && !BR2_PACKAGE_LIBGLVND + +config BR2_PACKAGE_PROVIDES_LIBOPENCL + default "mesa3d" if BR2_PACKAGE_MESA3D_OPENCL + +endif # BR2_PACKAGE_MESA3D + +comment "mesa3d needs a toolchain w/ gcc >=8, C++, NPTL, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_8 + depends on BR2_TOOLCHAIN_HAS_SYNC_1 diff --git a/package/mesa3d/mesa3d.hash b/package/mesa3d/mesa3d.hash new file mode 100644 index 00000000..d506d398 --- /dev/null +++ b/package/mesa3d/mesa3d.hash @@ -0,0 +1,5 @@ +# From https://lists.freedesktop.org/archives/mesa-announce/2024-June/000764.html +sha256 51aa686ca4060e38711a9e8f60c8f1efaa516baf411946ed7f2c265cd582ca4c mesa-24.0.9.tar.xz +sha512 de2ee6c9df1fc106ee10befe0a76be1e9cfe83d65dbdb83bad6d8d7cfaa085232fb115293a1a790b37b50b1fe14bd58aafbcfe5a15e953b5901a7105d57569a5 mesa-24.0.9.tar.xz +# License +sha256 a00275a53178e2645fb65be99a785c110513446a5071ff2c698ed260ad917d75 docs/license.rst diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk new file mode 100644 index 00000000..ce460c44 --- /dev/null +++ b/package/mesa3d/mesa3d.mk @@ -0,0 +1,262 @@ +################################################################################ +# +# mesa3d +# +################################################################################ + +# When updating the version, please also update mesa3d-headers +MESA3D_VERSION = 24.0.9 +MESA3D_SOURCE = mesa-$(MESA3D_VERSION).tar.xz +MESA3D_SITE = https://archive.mesa3d.org +MESA3D_LICENSE = MIT, SGI, Khronos +MESA3D_LICENSE_FILES = docs/license.rst +MESA3D_CPE_ID_VENDOR = mesa3d +MESA3D_CPE_ID_PRODUCT = mesa + +MESA3D_INSTALL_STAGING = YES + +MESA3D_PROVIDES = + +MESA3D_DEPENDENCIES = \ + host-bison \ + host-flex \ + host-python-mako \ + expat \ + libdrm \ + zlib + +MESA3D_CONF_OPTS = \ + -Dgallium-omx=disabled \ + -Dpower8=disabled + +ifeq ($(BR2_PACKAGE_MESA3D_DRIVER)$(BR2_PACKAGE_XORG7),yy) +MESA3D_CONF_OPTS += -Ddri3=enabled +MESA3D_DEPENDENCIES += xlib_libxshmfence +else +MESA3D_CONF_OPTS += -Ddri3=disabled +endif + +ifeq ($(BR2_PACKAGE_MESA3D_LLVM),y) +MESA3D_DEPENDENCIES += host-llvm llvm +MESA3D_MESON_EXTRA_BINARIES += llvm-config='$(STAGING_DIR)/usr/bin/llvm-config' +MESA3D_CONF_OPTS += -Dllvm=enabled +ifeq ($(BR2_PACKAGE_LLVM_RTTI),y) +MESA3D_CONF_OPTS += -Dcpp_rtti=true +else +MESA3D_CONF_OPTS += -Dcpp_rtti=false +endif +else +# Avoid automatic search of llvm-config +MESA3D_CONF_OPTS += -Dllvm=disabled +endif + +# Disable opencl-icd: OpenCL lib will be named libOpenCL instead of +# libMesaOpenCL and CL headers are installed +ifeq ($(BR2_PACKAGE_MESA3D_OPENCL),y) +MESA3D_PROVIDES += libopencl +MESA3D_DEPENDENCIES += clang libclc +MESA3D_CONF_OPTS += -Dgallium-opencl=standalone +else +MESA3D_CONF_OPTS += -Dgallium-opencl=disabled +endif + +ifeq ($(BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS),y) +MESA3D_DEPENDENCIES += elfutils +endif + +ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_GLX),y) +# Disable-mangling not yet supported by meson build system. +# glx: +# dri : dri based GLX requires at least one DRI driver || dri based GLX requires shared-glapi +# xlib : xlib conflicts with any dri driver +# Always enable glx-direct; without it, many GLX applications don't work. +MESA3D_CONF_OPTS += \ + -Dglx=dri \ + -Dglx-direct=true +ifeq ($(BR2_PACKAGE_MESA3D_NEEDS_XA),y) +MESA3D_CONF_OPTS += -Dgallium-xa=enabled +else +MESA3D_CONF_OPTS += -Dgallium-xa=disabled +endif +else +MESA3D_CONF_OPTS += \ + -Dglx=disabled \ + -Dgallium-xa=disabled +endif + +ifeq ($(BR2_ARM_CPU_HAS_NEON),y) +MESA3D_CONF_OPTS += -Dgallium-vc4-neon=auto +else +MESA3D_CONF_OPTS += -Dgallium-vc4-neon=disabled +endif + +# Drivers + +#Gallium Drivers +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS) += crocus +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV) += etnaviv +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_FREEDRENO) += freedreno +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_I915) += i915 +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_IRIS) += iris +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_LIMA) += lima +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU) += nouveau +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_PANFROST) += panfrost +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R300) += r300 +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600) += r600 +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI) += radeonsi +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SVGA) += svga +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST) += swrast +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_TEGRA) += tegra +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D) += v3d +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4) += vc4 +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VIRGL) += virgl +# Vulkan Drivers +MESA3D_VULKAN_DRIVERS-$(BR2_PACKAGE_MESA3D_VULKAN_DRIVER_BROADCOM) += broadcom +MESA3D_VULKAN_DRIVERS-$(BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL) += intel +MESA3D_VULKAN_DRIVERS-$(BR2_PACKAGE_MESA3D_VULKAN_DRIVER_SWRAST) += swrast + +ifeq ($(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER),) +MESA3D_CONF_OPTS += \ + -Dgallium-drivers= \ + -Dgallium-extra-hud=false +else +MESA3D_CONF_OPTS += \ + -Dshared-glapi=enabled \ + -Dgallium-drivers=$(subst $(space),$(comma),$(MESA3D_GALLIUM_DRIVERS-y)) \ + -Dgallium-extra-hud=true +endif + +ifeq ($(BR2_PACKAGE_MESA3D_VULKAN_DRIVER),) +MESA3D_CONF_OPTS += \ + -Dvulkan-drivers= +else +MESA3D_DEPENDENCIES += host-python-glslang +MESA3D_CONF_OPTS += \ + -Dvulkan-drivers=$(subst $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y)) +endif + +# APIs + +ifeq ($(BR2_PACKAGE_MESA3D_OSMESA_GALLIUM),y) +MESA3D_CONF_OPTS += -Dosmesa=true +else +MESA3D_CONF_OPTS += -Dosmesa=false +endif + +# Always enable OpenGL: +# - Building OpenGL ES without OpenGL is not supported, so always keep opengl enabled. +MESA3D_CONF_OPTS += -Dopengl=true + +# libva and mesa3d have a circular dependency +# we do not need libva support in mesa3d, therefore disable this option +MESA3D_CONF_OPTS += -Dgallium-va=disabled + +# libGL is only provided for a full xorg stack, without libglvnd +ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_GLX),y) +MESA3D_PROVIDES += $(if $(BR2_PACKAGE_LIBGLVND),,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_NEEDS_X11),y) +MESA3D_DEPENDENCIES += \ + xlib_libX11 \ + xlib_libXext \ + xlib_libXdamage \ + xlib_libXfixes \ + xlib_libXrandr \ + xlib_libXxf86vm \ + xorgproto \ + libxcb +MESA3D_PLATFORMS += x11 +endif +ifeq ($(BR2_PACKAGE_WAYLAND),y) +MESA3D_DEPENDENCIES += wayland wayland-protocols +MESA3D_PLATFORMS += wayland +endif + +MESA3D_CONF_OPTS += \ + -Dplatforms=$(subst $(space),$(comma),$(MESA3D_PLATFORMS)) + +ifeq ($(BR2_PACKAGE_MESA3D_GBM),y) +MESA3D_CONF_OPTS += \ + -Dgbm=enabled +else +MESA3D_CONF_OPTS += \ + -Dgbm=disabled +endif + +ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL),y) +MESA3D_PROVIDES += $(if $(BR2_PACKAGE_LIBGLVND),,libegl) +MESA3D_CONF_OPTS += \ + -Degl=enabled +else +MESA3D_CONF_OPTS += \ + -Degl=disabled +endif + +ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_ES),y) +MESA3D_PROVIDES += $(if $(BR2_PACKAGE_LIBGLVND),,libgles) +MESA3D_CONF_OPTS += -Dgles1=enabled -Dgles2=enabled +else +MESA3D_CONF_OPTS += -Dgles1=disabled -Dgles2=disabled +endif + +ifeq ($(BR2_PACKAGE_VALGRIND),y) +MESA3D_CONF_OPTS += -Dvalgrind=enabled +MESA3D_DEPENDENCIES += valgrind +else +MESA3D_CONF_OPTS += -Dvalgrind=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBUNWIND),y) +MESA3D_CONF_OPTS += -Dlibunwind=enabled +MESA3D_DEPENDENCIES += libunwind +else +MESA3D_CONF_OPTS += -Dlibunwind=disabled +endif + +ifeq ($(BR2_PACKAGE_MESA3D_VDPAU),y) +MESA3D_DEPENDENCIES += libvdpau +MESA3D_CONF_OPTS += -Dgallium-vdpau=enabled +else +MESA3D_CONF_OPTS += -Dgallium-vdpau=disabled +endif + +ifeq ($(BR2_PACKAGE_LM_SENSORS),y) +MESA3D_CONF_OPTS += -Dlmsensors=enabled +MESA3D_DEPENDENCIES += lm-sensors +else +MESA3D_CONF_OPTS += -Dlmsensors=disabled +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +MESA3D_CONF_OPTS += -Dzstd=enabled +MESA3D_DEPENDENCIES += zstd +else +MESA3D_CONF_OPTS += -Dzstd=disabled +endif + +MESA3D_CFLAGS = $(TARGET_CFLAGS) + +# m68k needs 32-bit offsets in switch tables to build +ifeq ($(BR2_m68k),y) +MESA3D_CFLAGS += -mlong-jump-table-offsets +endif + +ifeq ($(BR2_PACKAGE_LIBGLVND),y) +ifneq ($(BR2_PACKAGE_MESA3D_OPENGL_GLX)$(BR2_PACKAGE_MESA3D_OPENGL_EGL),) +MESA3D_DEPENDENCIES += libglvnd +MESA3D_CONF_OPTS += -Dglvnd=true +else +MESA3D_CONF_OPTS += -Dglvnd=false +endif +else +MESA3D_CONF_OPTS += -Dglvnd=false +endif + +$(eval $(meson-package)) diff --git a/package/meson-tools/0001-amlbootenc-gxl-remove-non-std-C-convention-in-for.patch b/package/meson-tools/0001-amlbootenc-gxl-remove-non-std-C-convention-in-for.patch new file mode 100644 index 00000000..243c59b5 --- /dev/null +++ b/package/meson-tools/0001-amlbootenc-gxl-remove-non-std-C-convention-in-for.patch @@ -0,0 +1,50 @@ +From 7c5475187d1bdf861360ffd8bc1aaea84a341db3 Mon Sep 17 00:00:00 2001 +From: Dagg Stompler +Date: Fri, 11 Sep 2020 12:28:52 +0300 +Subject: [PATCH] amlbootenc-gxl: remove non std C convention in for + +not all compilers have c99 or gnu99 enabled, so try not to use a +non std C convention in for call loops + +Signed-off-by: Dagg Stompler +--- + amlbootenc-gxl.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/amlbootenc-gxl.c b/amlbootenc-gxl.c +index 3695e13..233563d 100644 +--- a/amlbootenc-gxl.c ++++ b/amlbootenc-gxl.c +@@ -51,6 +51,7 @@ static int boot_enc(const char *input, const char *output) + ._unknown3 = 0x02000000, + .sig2 = AMLOGIC_C_SIGNATURE, + }; ++ int i; + + assert(sizeof(hdr) == 0x100); + +@@ -130,10 +131,10 @@ static int boot_enc(const char *input, const char *output) + memcpy(hdr.iv, (uint8_t[]){ 0x14, 0x82, 0x5b, 0x1b, 0x10, 0xc1, 0x49, 0x0d, 0x8f, 0x13, 0x0a, 0x99, 0x15, 0x50, 0x1d, 0x37 }, 16); + } + #else +- for (int i = 0; i < sizeof(hdr.key); i++) { ++ for (i = 0; i < sizeof(hdr.key); i++) { + hdr.key[i] = rand(); + } +- for (int i = 0; i < sizeof(hdr.iv); i++) { ++ for (i = 0; i < sizeof(hdr.iv); i++) { + hdr.iv[i] = rand(); + } + #endif +@@ -151,7 +152,7 @@ static int boot_enc(const char *input, const char *output) + AES_cbc_encrypt(src_buf, buf + hdr.first_offset, hdr.block_size, &aes_key, iv, AES_ENCRYPT); + SHA256_Update(&sha256_ctx, buf + hdr.first_offset, hdr.block_size); + +- for (int i = 1; i < hdr.payload_size / hdr.block_size; i++) { ++ for (i = 1; i < hdr.payload_size / hdr.block_size; i++) { + memset(src_buf, 0, hdr.block_size); + fread(src_buf, 1, hdr.block_size, fin); + AES_cbc_encrypt(src_buf, buf + hdr.data_offset + (i - 1) * hdr.block_size, hdr.block_size, &aes_key, iv, AES_ENCRYPT); +-- +2.28.0 + diff --git a/package/meson-tools/Config.in.host b/package/meson-tools/Config.in.host new file mode 100644 index 00000000..677b206b --- /dev/null +++ b/package/meson-tools/Config.in.host @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HOST_MESON_TOOLS + bool "host meson-tools" + help + meson-tools is a collection of tools for use with the + Amlogic Meson family of ARM based SoCs. It allows management + of signatures which are required for booting amlogic based + boards with u-boot. + + https://github.com/afaerber/meson-tools diff --git a/package/meson-tools/meson-tools.hash b/package/meson-tools/meson-tools.hash new file mode 100644 index 00000000..7b2c0d2f --- /dev/null +++ b/package/meson-tools/meson-tools.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 10d707b2f741df03ff5000f2a82c6f577036ce1cd34d9278b22b92cb616b6fce meson-tools-0a02e2d34413f4bf9b15946352bc8c8ee13a5843.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/meson-tools/meson-tools.mk b/package/meson-tools/meson-tools.mk new file mode 100644 index 00000000..037faf3e --- /dev/null +++ b/package/meson-tools/meson-tools.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# meson-tools +# +################################################################################ + +HOST_MESON_TOOLS_VERSION = 0a02e2d34413f4bf9b15946352bc8c8ee13a5843 +HOST_MESON_TOOLS_SITE = $(call github,afaerber,meson-tools,$(HOST_MESON_TOOLS_VERSION)) +HOST_MESON_TOOLS_LICENSE = GPL-2.0+ +HOST_MESON_TOOLS_LICENSE_FILES = COPYING +HOST_MESON_TOOLS_DEPENDENCIES = host-openssl + +HOST_MESON_TOOLS_PROGS = amlbootsig unamlbootsig amlinfo + +define HOST_MESON_TOOLS_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_CONFIGURE_OPTS) \ + LDFLAGS="$(HOST_LDFLAGS) -lssl -lcrypto" +endef + +define HOST_MESON_TOOLS_INSTALL_CMDS + $(foreach f,$(HOST_MESON_TOOLS_PROGS), \ + $(INSTALL) -D -m 0755 $(@D)/$(f) $(HOST_DIR)/bin/$(f) + ) +endef + +$(eval $(host-generic-package)) diff --git a/package/meson/0001-Prefer-ext-static-libs-when-default-library-static.patch b/package/meson/0001-Prefer-ext-static-libs-when-default-library-static.patch new file mode 100644 index 00000000..9cedcd09 --- /dev/null +++ b/package/meson/0001-Prefer-ext-static-libs-when-default-library-static.patch @@ -0,0 +1,47 @@ +From c1359a49b61016031287d62f44a363cb76242c91 Mon Sep 17 00:00:00 2001 +From: Matt Weber +Date: Sat, 26 Oct 2019 09:17:29 -0500 +Subject: [PATCH] Prefer ext static libs when --default-library=static + +This patch adds a case in the library pattern logic to prefer static +libraries when the Meson Core option for "default_library" is set to +solely static. + +The existing library search order makes sense for cases of shared and +shared / static mixed. However if using a prebuilt cross-toolchain, +they usually provide both a static and shared version of sysroot +libraries. This presents a problem in a complete static build where +there won't be shared libraries at runtime and during build time there +are failures like "ld: attempted static link of dynamic object". + +Bug: +https://github.com/mesonbuild/meson/issues/6108 + +Fixes: +http://autobuild.buildroot.net/results/db1740b4777f436324218c52bc7b08e5c21b667d/ +http://autobuild.buildroot.net/results/c17/c17bbb12d9deadd64a441b36e324cfbbe8aba5be/ + +Signed-off-by: Matthew Weber +[Updated for 0.57.1 - get_builtin_option() vs. get_option(OptionKey())] +Signed-off-by: Peter Seiderer +--- + mesonbuild/compilers/mixins/clike.py | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/mesonbuild/compilers/mixins/clike.py b/mesonbuild/compilers/mixins/clike.py +index 09ad837b1..b7f6b9f22 100644 +--- a/mesonbuild/compilers/mixins/clike.py ++++ b/mesonbuild/compilers/mixins/clike.py +@@ -978,6 +978,9 @@ class CLikeCompiler(Compiler): + elif env.machines[self.for_machine].is_cygwin(): + shlibext = ['dll', 'dll.a'] + prefixes = ['cyg'] + prefixes ++ elif env.coredata.get_option(OptionKey('default_library')) == 'static': ++ # Linux/BSDs ++ shlibext = ['a'] + else: + # Linux/BSDs + shlibext = ['so'] +-- +2.25.1 + diff --git a/package/meson/0002-mesonbuild-dependencies-base.py-add-pkg_config_stati.patch b/package/meson/0002-mesonbuild-dependencies-base.py-add-pkg_config_stati.patch new file mode 100644 index 00000000..8b95dc75 --- /dev/null +++ b/package/meson/0002-mesonbuild-dependencies-base.py-add-pkg_config_stati.patch @@ -0,0 +1,45 @@ +From 59934e2116e025ecfe23baf6febc4a0eb85f60cd Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 15 Feb 2020 15:13:59 +0100 +Subject: [PATCH] mesonbuild/dependencies/base.py: add pkg_config_static + +Allow the user to always call pkg-config with --static thanks to a +pkg_config_static property. This will allow to fix static build failures +with libglib2: + +FAILED: gio/gio +/home/naourr/work/instance-0/output-1/host/bin/arm-linux-gcc -o gio/gio 'gio/6ae6c9e@@gio@exe/gio-tool.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-cat.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-copy.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-info.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-list.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-mime.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-mkdir.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-monitor.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-mount.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-move.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-open.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-rename.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-remove.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-save.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-set.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-trash.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-tree.c.o' -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -static -Wl,--start-group gio/libgio-2.0.a glib/libglib-2.0.a gobject/libgobject-2.0.a gmodule/libgmodule-2.0.a -pthread /home/naourr/work/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libz.a /home/naourr/work/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libmount.a /home/naourr/work/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libpcre.a -lm /home/naourr/work/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libffi.a -Wl,--end-group '-Wl,-rpath,$ORIGIN/:$ORIGIN/../glib:$ORIGIN/../gobject:$ORIGIN/../gmodule' -Wl,-rpath-link,/home/naourr/work/instance-0/output-1/build/libglib2-2.62.4/build/gio -Wl,-rpath-link,/home/naourr/work/instance-0/output-1/build/libglib2-2.62.4/build/glib -Wl,-rpath-link,/home/naourr/work/instance-0/output-1/build/libglib2-2.62.4/build/gobject -Wl,-rpath-link,/home/naourr/work/instance-0/output-1/build/libglib2-2.62.4/build/gmodule +/home/naourr/work/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/8.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: /home/naourr/work/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libmount.a(la-fs.o): in function `__mnt_fs_set_source_ptr': +fs.c:(.text+0x5ec): undefined reference to `blkid_parse_tag_string' + +Fixes: + - http://autobuild.buildroot.org/results/0d36952def63cb69628697fa6408aeb6ce10cb5b + +Signed-off-by: Fabrice Fontaine +[Romain: Fix if condition, pkg_config_static is a string not a boolean] +Signed-off-by: Romain Naour +[Rebased on 0.57.1] +Signed-off-by: Peter Seiderer +[rebased on 1.3.0] +Signed-off-by: Antoine Coutant +--- + mesonbuild/dependencies/pkgconfig.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mesonbuild/dependencies/pkgconfig.py b/mesonbuild/dependencies/pkgconfig.py +index e86206b88..94888657d 100644 +--- a/mesonbuild/dependencies/pkgconfig.py ++++ b/mesonbuild/dependencies/pkgconfig.py +@@ -169,7 +169,8 @@ class PkgConfigCLI(PkgConfigInterface): + env['PKG_CONFIG_ALLOW_SYSTEM_LIBS'] = '1' + args: T.List[str] = [] + args += self._define_variable_args(define_variable) +- if static: ++ if static or \ ++ (self.env.properties[self.for_machine].get('pkg_config_static', None) == 'true'): + args.append('--static') + args += ['--libs', name] + ret, out, err = self._call_pkgbin(args, env=env) +-- +2.25.1 + diff --git a/package/meson/meson.hash b/package/meson/meson.hash new file mode 100644 index 00000000..150fd6d1 --- /dev/null +++ b/package/meson/meson.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +# https://github.com/mesonbuild/meson/releases/download/1.3.1/meson-1.3.1.tar.gz.asc +sha256 6020568bdede1643d4fb41e28215be38eff5d52da28ac7d125457c59e0032ad7 meson-1.3.1.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 COPYING diff --git a/package/meson/meson.mk b/package/meson/meson.mk new file mode 100644 index 00000000..467569d2 --- /dev/null +++ b/package/meson/meson.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# meson +# +################################################################################ + +MESON_VERSION = 1.3.1 +MESON_SITE = https://github.com/mesonbuild/meson/releases/download/$(MESON_VERSION) +MESON_LICENSE = Apache-2.0 +MESON_LICENSE_FILES = COPYING +MESON_SETUP_TYPE = setuptools + +HOST_MESON_DEPENDENCIES = host-ninja + +# Avoid interpreter shebang longer than 128 chars +define HOST_MESON_SET_INTERPRETER + $(SED) '1s:.*:#!/usr/bin/env python3:' $(HOST_DIR)/bin/meson +endef +HOST_MESON_POST_INSTALL_HOOKS += HOST_MESON_SET_INTERPRETER + +$(eval $(host-python-package)) diff --git a/package/metacity/0001-add-libm-reference.patch b/package/metacity/0001-add-libm-reference.patch new file mode 100644 index 00000000..62850172 --- /dev/null +++ b/package/metacity/0001-add-libm-reference.patch @@ -0,0 +1,51 @@ +Upstream fix to link metacity itself against libm + +The upstream fix is modified to also include the changes on the +configure script directly, so that autoreconfiguring is not +needed. Autoreconfiguring cannot be done easily on metacity, due to +missing AM_GCONF_SOURCE_2 and AM_NLS macros. + +http://git.gnome.org/browse/metacity/commit/configure.in?id=9cb0b6ff520ea69bdff6c328a21787202aee1bcc + +Signed-off-by: Thomas Petazzoni + +From 9cb0b6ff520ea69bdff6c328a21787202aee1bcc Mon Sep 17 00:00:00 2001 +From: Götz Waschk +Date: Wed, 22 Oct 2008 12:08:48 +0000 +Subject: add libm reference. Closes #557357. + +2008-10-22 Götz Waschk + + * configure.in: add libm reference. Closes #557357. + + +svn path=/trunk/; revision=3984 +--- +(limited to 'configure.in') + +Index: b/configure.in +=================================================================== +--- a/configure.in ++++ b/configure.in +@@ -413,7 +413,7 @@ + AC_DEFINE(HAVE_XSYNC, , [Have the Xsync extension library]) + fi + +-METACITY_LIBS="$METACITY_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" ++METACITY_LIBS="$METACITY_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm" + METACITY_MESSAGE_LIBS="$METACITY_MESSAGE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" + METACITY_WINDOW_DEMO_LIBS="$METACITY_WINDOW_DEMO_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" + METACITY_PROPS_LIBS="$METACITY_PROPS_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" +Index: b/configure +=================================================================== +--- a/configure ++++ b/configure +@@ -29509,7 +29509,7 @@ + + fi + +-METACITY_LIBS="$METACITY_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" ++METACITY_LIBS="$METACITY_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm" + METACITY_MESSAGE_LIBS="$METACITY_MESSAGE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" + METACITY_WINDOW_DEMO_LIBS="$METACITY_WINDOW_DEMO_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" + METACITY_PROPS_LIBS="$METACITY_PROPS_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" diff --git a/package/metacity/0002-gconf.patch b/package/metacity/0002-gconf.patch new file mode 100644 index 00000000..939ef7ef --- /dev/null +++ b/package/metacity/0002-gconf.patch @@ -0,0 +1,30 @@ +[PATCH] fix build with --disable-gconf + +src/core/prefs.c still contain a call to gconf_client_set_bool() when +built with --disable-gconf, breaking the build. + +Signed-off-by: Peter Korsgaard +--- + src/core/prefs.c | 2 ++ + 1 file changed, 2 insertions(+) + +Index: metacity-2.25.1/src/core/prefs.c +=================================================================== +--- metacity-2.25.1.orig/src/core/prefs.c ++++ metacity-2.25.1/src/core/prefs.c +@@ -2949,6 +2949,7 @@ + void + meta_prefs_set_compositing_manager (gboolean whether) + { ++#if HAVE_GCONF + GError *err = NULL; + + gconf_client_set_bool (default_client, +@@ -2962,6 +2963,7 @@ + err->message); + g_error_free (err); + } ++#endif + } + + #ifndef HAVE_GCONF diff --git a/package/metacity/0003-mag-add-libm-reference.patch b/package/metacity/0003-mag-add-libm-reference.patch new file mode 100644 index 00000000..d47d8075 --- /dev/null +++ b/package/metacity/0003-mag-add-libm-reference.patch @@ -0,0 +1,45 @@ +Upstream patch to fix link against libm + +The upstream patch is modified to also include the necessary +Makefile.in, which avoids the need for autoreconfiguring the +package. Autoreconfiguring the package unfortunately doesn't work, due +to AM_GCONF_SOURCE_2 and AM_NLS macros being missing. + +http://git.gnome.org/browse/metacity/commit/src/tools/Makefile.am?id=13d0d52eb885598885b6ff4b73c795c8f29c2a6b + +Signed-off-by: Thomas Petazzoni + +From 13d0d52eb885598885b6ff4b73c795c8f29c2a6b Mon Sep 17 00:00:00 2001 +From: Matthias Clasen +Date: Sun, 02 May 2010 14:50:42 +0000 +Subject: fails to link with pedantic linkers + +--- +(limited to 'src/tools/Makefile.am') + +Index: b/src/tools/Makefile.am +=================================================================== +--- a/src/tools/Makefile.am ++++ b/src/tools/Makefile.am +@@ -26,7 +26,7 @@ + + metacity_message_LDADD= @METACITY_MESSAGE_LIBS@ + metacity_window_demo_LDADD= @METACITY_WINDOW_DEMO_LIBS@ +-metacity_mag_LDADD= @METACITY_WINDOW_DEMO_LIBS@ ++metacity_mag_LDADD= @METACITY_WINDOW_DEMO_LIBS@ -lm + metacity_grayscale_LDADD = @METACITY_WINDOW_DEMO_LIBS@ + + EXTRA_DIST=$(icon_DATA) +Index: b/src/tools/Makefile.in +=================================================================== +--- a/src/tools/Makefile.in ++++ b/src/tools/Makefile.in +@@ -281,7 +281,7 @@ + + metacity_message_LDADD = @METACITY_MESSAGE_LIBS@ + metacity_window_demo_LDADD = @METACITY_WINDOW_DEMO_LIBS@ +-metacity_mag_LDADD = @METACITY_WINDOW_DEMO_LIBS@ ++metacity_mag_LDADD = @METACITY_WINDOW_DEMO_LIBS@ -lm + metacity_grayscale_LDADD = @METACITY_WINDOW_DEMO_LIBS@ + EXTRA_DIST = $(icon_DATA) + all: all-am diff --git a/package/metacity/Config.in b/package/metacity/Config.in new file mode 100644 index 00000000..fc106a26 --- /dev/null +++ b/package/metacity/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_METACITY + bool "metacity" + depends on BR2_PACKAGE_LIBGTK2 + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + # Metacity configure.ac pretends it can be built without + # Composite, but in reality, it doesn't build. + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE + select BR2_PACKAGE_XLIB_LIBXFIXES + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XLIB_LIBXDAMAGE + # We do not directly depend on Xft, but they are needed to get + # Xft support in Pango, which we require. + select BR2_PACKAGE_XLIB_LIBXFT + help + Metacity is a window manager for the X Window System. + + https://wiki.gnome.org/Projects/Metacity diff --git a/package/metacity/Xsession b/package/metacity/Xsession new file mode 100755 index 00000000..7225921a --- /dev/null +++ b/package/metacity/Xsession @@ -0,0 +1,6 @@ +#!/bin/sh +export GDK_USE_XFT=1 +export LANG="en_US.UTF-8" +export LC_ALL="en_US.UTF-8" +/usr/bin/X11/rxvt -bg black -fg gray90 & +exec /bin/metacity diff --git a/package/metacity/metacity.hash b/package/metacity/metacity.hash new file mode 100644 index 00000000..2aca0990 --- /dev/null +++ b/package/metacity/metacity.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/metacity/2.25/metacity-2.25.1.sha256sum +sha256 fb2ede4ac02d7da08d3c3323fb76afaf945c8cccc07cb2d3a4b7f44fb49f1c47 metacity-2.25.1.tar.bz2 + +# Locally computed +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/metacity/metacity.mk b/package/metacity/metacity.mk new file mode 100644 index 00000000..57566583 --- /dev/null +++ b/package/metacity/metacity.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# metacity +# +################################################################################ + +# newer versions need libcanberra-gtk and gnome-doc-utils +METACITY_VERSION_MAJOR = 2.25 +METACITY_VERSION = $(METACITY_VERSION_MAJOR).1 +METACITY_SOURCE = metacity-$(METACITY_VERSION).tar.bz2 +METACITY_SITE = https://download.gnome.org/sources/metacity/$(METACITY_VERSION_MAJOR) +METACITY_LICENSE = GPL-2.0+ +METACITY_LICENSE_FILES = COPYING + +METACITY_CONF_OPTS = \ + --x-includes=$(STAGING_DIR)/usr/include/X11 \ + --x-libraries=$(STAGING_DIR)/usr/lib \ + --disable-glibtest \ + --disable-gconf \ + --disable-sm \ + --disable-startup-notification + +METACITY_DEPENDENCIES = libgtk2 \ + xlib_libX11 \ + host-libxml-parser-perl \ + xlib_libXcomposite \ + xlib_libXfixes \ + xlib_libXrender \ + xlib_libXdamage \ + $(TARGET_NLS_DEPENDENCIES) + +METACITY_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y) +METACITY_DEPENDENCIES += xlib_libXcursor +endif + +define METACITY_INSTALL_XSESSION + $(INSTALL) -D package/metacity/Xsession $(TARGET_DIR)/etc/X11/Xsession +endef + +METACITY_POST_INSTALL_TARGET_HOOKS += METACITY_INSTALL_XSESSION + +$(eval $(autotools-package)) diff --git a/package/mfgtools/0001-lnx_def.h-fix-conflicting-declaration-of-__time64_t.patch b/package/mfgtools/0001-lnx_def.h-fix-conflicting-declaration-of-__time64_t.patch new file mode 100644 index 00000000..7d0d3974 --- /dev/null +++ b/package/mfgtools/0001-lnx_def.h-fix-conflicting-declaration-of-__time64_t.patch @@ -0,0 +1,27 @@ +From 1af7bc09451e0b779f7bfb0dcc58ffb3abe9c584 Mon Sep 17 00:00:00 2001 +From: Gary Bisson +Date: Tue, 11 Feb 2020 15:30:12 +0100 +Subject: [PATCH] lnx_def.h: fix conflicting declaration of __time64_t + +Signed-off-by: Gary Bisson +--- + MfgToolLib/lnx_def.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/MfgToolLib/lnx_def.h b/MfgToolLib/lnx_def.h +index c6869dd..a38bb99 100644 +--- a/MfgToolLib/lnx_def.h ++++ b/MfgToolLib/lnx_def.h +@@ -124,7 +124,9 @@ typedef unsigned long * ULONG_PTR; + typedef char * LPOLESTR; + typedef void * HDEVINFO; + typedef unsigned long long ULONGLONG; ++#ifndef __time64_t + typedef long long __time64_t; ++#endif + typedef long long __int64; + typedef unsigned long DWORD_PTR; + typedef unsigned int UINT; +-- +2.25.0 + diff --git a/package/mfgtools/Config.in.host b/package/mfgtools/Config.in.host new file mode 100644 index 00000000..f1e7ab58 --- /dev/null +++ b/package/mfgtools/Config.in.host @@ -0,0 +1,15 @@ +config BR2_PACKAGE_HOST_MFGTOOLS + bool "host mfgtools" + depends on BR2_arm + depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb + 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 + +comment "host mfgtools needs a toolchain w/ host gcc >= 4.9" + depends on BR2_arm + depends on !BR2_HOST_GCC_AT_LEAST_4_9 diff --git a/package/mfgtools/mfgtools.hash b/package/mfgtools/mfgtools.hash new file mode 100644 index 00000000..0b215f52 --- /dev/null +++ b/package/mfgtools/mfgtools.hash @@ -0,0 +1,4 @@ +# locally computed +sha256 055d71227d18883d6e8bc9e854c076015f9a7749820a94272e19071bf0b25c89 mfgtools-0.02.tar.gz +sha256 2655559a6bb1179eae514f5c7166f4ede4f2453efa9cf4dc3c045cab5d57dede LICENSE +sha256 0963b6e5086bf454265b0f57821a02b681d1211e40ad74c310231cb4d94815c9 README.txt diff --git a/package/mfgtools/mfgtools.mk b/package/mfgtools/mfgtools.mk new file mode 100644 index 00000000..3de93936 --- /dev/null +++ b/package/mfgtools/mfgtools.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# mfgtools +# +################################################################################ + +MFGTOOLS_VERSION = 0.02 +MFGTOOLS_SITE = $(call github,NXPmicro,mfgtools,v$(MFGTOOLS_VERSION)) +MFGTOOLS_SUBDIR = MfgToolLib +MFGTOOLS_LICENSE = BSD-3-Clause or CPOL +MFGTOOLS_LICENSE_FILES = LICENSE README.txt +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)/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)/lib/libMfgToolLib.so + $(INSTALL) -D -m 755 $(@D)/TestPrgm/mfgtoolcli \ + $(HOST_DIR)/bin/mfgtoolcli +endef + +$(eval $(host-cmake-package)) diff --git a/package/mfgtools/readme.txt b/package/mfgtools/readme.txt new file mode 100644 index 00000000..320e6ec4 --- /dev/null +++ b/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/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/package/mfoc/Config.in b/package/mfoc/Config.in new file mode 100644 index 00000000..1267cf04 --- /dev/null +++ b/package/mfoc/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_MFOC + bool "mfoc" + select BR2_PACKAGE_LIBNFC + help + Mifare Classic Offline Cracker + + https://github.com/nfc-tools/mfoc diff --git a/package/mfoc/mfoc.hash b/package/mfoc/mfoc.hash new file mode 100644 index 00000000..2358bfd3 --- /dev/null +++ b/package/mfoc/mfoc.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 2dfd8ffa4a8b357807680d190a91c8cf3db54b4211a781edc1108af401dbaad7 mfoc-0.10.7.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/mfoc/mfoc.mk b/package/mfoc/mfoc.mk new file mode 100644 index 00000000..c4a78521 --- /dev/null +++ b/package/mfoc/mfoc.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# mfoc +# +################################################################################ + +MFOC_VERSION = 0.10.7 +MFOC_SITE = $(call github,nfc-tools,mfoc,mfoc-$(MFOC_VERSION)) +MFOC_LICENSE = GPL-2.0 +MFOC_LICENSE_FILES = COPYING +MFOC_DEPENDENCIES = libnfc +# Fetching from github, we need to generate the configure script +MFOC_AUTORECONF = YES +MFOC_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/mg/Config.in b/package/mg/Config.in new file mode 100644 index 00000000..11e5bdb2 --- /dev/null +++ b/package/mg/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_MG + bool "mg" + depends on BR2_USE_MMU # fork() + help + Emacs-like text editor (130 kiB) + + Mg is a MicroEMACS clone with the goal of being compatible + with GNU Emacs, because there should never be any reason to + learn more than one Emacs flavor. + + Unlike many other editors it does not require ncurses, only a + standard C library, making it suitable for really small and + embedded systems. + + This version is based on mg2a from OpenBSD, with more features + and, in particular, no requirement on ncurses or termcap. + + https://github.com/troglobit/mg/ diff --git a/package/mg/mg.hash b/package/mg/mg.hash new file mode 100644 index 00000000..6a3e3465 --- /dev/null +++ b/package/mg/mg.hash @@ -0,0 +1,4 @@ +# From https://github.com/troglobit/mg/releases/tag/v3.7 +sha256 05101360d2194392da0950e8b6f18d067d8af0fd2f572461ba4d4e7b4ccbb4c1 mg-3.7.tar.gz +# Locally computed: +sha256 7e12e5df4bae12cb21581ba157ced20e1986a0508dd10d0e8a4ab9a4cf94e85c UNLICENSE diff --git a/package/mg/mg.mk b/package/mg/mg.mk new file mode 100644 index 00000000..59f1d1e3 --- /dev/null +++ b/package/mg/mg.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# mg +# +################################################################################ + +MG_VERSION = 3.7 +MG_SITE = https://github.com/troglobit/mg/releases/download/v$(MG_VERSION) +MG_LICENSE = Public Domain +MG_LICENSE_FILES = UNLICENSE + +ifeq ($(BR2_PACKAGE_NCURSES),y) +MG_DEPENDENCIES += ncurses +MG_CONF_OPTS += --with-curses +else +MG_CONF_OPTS += --without-curses +endif + +$(eval $(autotools-package)) diff --git a/package/mhz/Config.in b/package/mhz/Config.in new file mode 100644 index 00000000..2f4af502 --- /dev/null +++ b/package/mhz/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_MHZ + bool "mhz" + help + CPU frequency measurement utility. + + https://github.com/wtarreau/mhz.git diff --git a/package/mhz/mhz.hash b/package/mhz/mhz.hash new file mode 100644 index 00000000..c399c4b5 --- /dev/null +++ b/package/mhz/mhz.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c4b49dc719846220b96ac6060f15dd917316189cbbd2e0896b1b5e796e063ede mhz-11aac2399780a1f7ea9f007b14af0464797d5cf1.tar.gz +sha256 9449d373cad921620bb8f1e4f7b39f957e263163ded159c1efc8de27f8997099 LICENSE diff --git a/package/mhz/mhz.mk b/package/mhz/mhz.mk new file mode 100644 index 00000000..025a5c6b --- /dev/null +++ b/package/mhz/mhz.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# mhz +# +################################################################################ + +MHZ_VERSION = 11aac2399780a1f7ea9f007b14af0464797d5cf1 +MHZ_SITE = $(call github,wtarreau,mhz,$(MHZ_VERSION)) +MHZ_LICENSE = MIT +MHZ_LICENSE_FILES = LICENSE + +define MHZ_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define MHZ_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/mhz $(TARGET_DIR)/usr/bin/mhz +endef + +$(eval $(generic-package)) diff --git a/package/microchip-hss-payload-generator/Config.in.host b/package/microchip-hss-payload-generator/Config.in.host new file mode 100644 index 00000000..38e11bd0 --- /dev/null +++ b/package/microchip-hss-payload-generator/Config.in.host @@ -0,0 +1,11 @@ +config BR2_PACKAGE_HOST_MICROCHIP_HSS_PAYLOAD_GENERATOR + bool "host microchip-hss-payload-generator" + help + Microchip PolarFire SoC Payload Generator. This tool creates + a formatted payload image for the HSS zero-stage bootloader + on PolarFire SoC, given a configuration file and a set of + ELF binaries. The configuration file is used to map the ELF + binaries or binary blobs to the individual application harts + (U54s). + + https://github.com/polarfire-soc/hart-software-services.git diff --git a/package/microchip-hss-payload-generator/microchip-hss-payload-generator.hash b/package/microchip-hss-payload-generator/microchip-hss-payload-generator.hash new file mode 100644 index 00000000..006e3f4a --- /dev/null +++ b/package/microchip-hss-payload-generator/microchip-hss-payload-generator.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 667138e1b2376dcad8fb43b925bc9f24ba1ab59049550e276821c3b2f07ec6e6 microchip-hss-payload-generator-2024.06.tar.gz +sha256 0b67b1d44bcad078580fc5d8e9580a48a9466b769db58aeb1631d4c5ef97e08a tools/hss-payload-generator/LICENSE.md diff --git a/package/microchip-hss-payload-generator/microchip-hss-payload-generator.mk b/package/microchip-hss-payload-generator/microchip-hss-payload-generator.mk new file mode 100644 index 00000000..af1faa8a --- /dev/null +++ b/package/microchip-hss-payload-generator/microchip-hss-payload-generator.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# microchip-hss-payload-generator +# +################################################################################ + +HOST_MICROCHIP_HSS_PAYLOAD_GENERATOR_VERSION = 2024.06 +HOST_MICROCHIP_HSS_PAYLOAD_GENERATOR_SITE = $(call github,polarfire-soc,hart-software-services,v$(HOST_MICROCHIP_HSS_PAYLOAD_GENERATOR_VERSION)) +# Some parts of the repository are under different licenses, but we +# are only building/installing the code in +# tools/hss-payload-generator/. +HOST_MICROCHIP_HSS_PAYLOAD_GENERATOR_LICENSE = MIT or GPL-2.0+ +HOST_MICROCHIP_HSS_PAYLOAD_GENERATOR_LICENSE_FILES = tools/hss-payload-generator/LICENSE.md +HOST_MICROCHIP_HSS_PAYLOAD_GENERATOR_DEPENDENCIES = host-elfutils host-libyaml host-openssl + +define HOST_MICROCHIP_HSS_PAYLOAD_GENERATOR_BUILD_CMDS + $(MAKE) -C $(@D)/tools/hss-payload-generator \ + HOST_INCLUDES="$(HOST_CPPFLAGS)" \ + LDFLAGS="$(HOST_LDFLAGS)" +endef + +define HOST_MICROCHIP_HSS_PAYLOAD_GENERATOR_INSTALL_CMDS + $(INSTALL) -D -m 755 \ + $(@D)/tools/hss-payload-generator/hss-payload-generator \ + $(HOST_DIR)/bin/hss-payload-generator +endef + +$(eval $(host-generic-package)) diff --git a/package/micropython/0001-py-nlrthumb-Make-non-Thumb2-long-jump-workaround-opt.patch b/package/micropython/0001-py-nlrthumb-Make-non-Thumb2-long-jump-workaround-opt.patch new file mode 100644 index 00000000..b0579104 --- /dev/null +++ b/package/micropython/0001-py-nlrthumb-Make-non-Thumb2-long-jump-workaround-opt.patch @@ -0,0 +1,130 @@ +From 7b050b366b7dacfb43779c51702a892d8f1873d0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=2E=20Neusch=C3=A4fer?= +Date: Sun, 2 Apr 2023 19:58:42 +0200 +Subject: [PATCH] py/nlrthumb: Make non-Thumb2 long-jump workaround opt-in. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Although the original motivation given for the workaround[1] is correct, +nlr.o and nlrthumb.o are linked with a small enough distance that the +problem does not occur, and the workaround isn't necessary. The distance +between the b instruction and its target (nlr_push_tail) is just 64 +bytes[2], well within the ±2046 byte range addressable by an +unconditional branch instruction in Thumb mode. + +The workaround induces a relocation in the text section (textrel), which +isn't supported everywhere, notably not on musl-libc[3], where it causes +a crash on start-up. With the workaround removed, micropython works on an +ARMv5T Linux system built with musl-libc. + +This commit changes nlrthumb.c to use a direct jump by default, but +leaves the long jump workaround as an option for those cases where it's +actually needed. + +[1]: commit dd376a239dc4f47b0ee7866810fcda151f3cf6dd + +Author: Damien George +Date: Fri Sep 1 15:25:29 2017 +1000 + + py/nlrthumb: Get working again on standard Thumb arch (ie not Thumb2). + + "b" on Thumb might not be long enough for the jump to nlr_push_tail so + it must be done indirectly. + +[2]: Excerpt from objdump -d micropython: + +000095c4 : + 95c4: b510 push {r4, lr} + 95c6: 0004 movs r4, r0 + 95c8: f02d fd42 bl 37050 + 95cc: 6943 ldr r3, [r0, #20] + 95ce: 6023 str r3, [r4, #0] + 95d0: 6144 str r4, [r0, #20] + 95d2: 2000 movs r0, #0 + 95d4: bd10 pop {r4, pc} + +000095d6 : + 95d6: b510 push {r4, lr} + 95d8: f02d fd3a bl 37050 + 95dc: 6943 ldr r3, [r0, #20] + 95de: 681b ldr r3, [r3, #0] + 95e0: 6143 str r3, [r0, #20] + 95e2: bd10 pop {r4, pc} + +000095e4 : + 95e4: 60c4 str r4, [r0, #12] + 95e6: 6105 str r5, [r0, #16] + 95e8: 6146 str r6, [r0, #20] + 95ea: 6187 str r7, [r0, #24] + 95ec: 4641 mov r1, r8 + 95ee: 61c1 str r1, [r0, #28] + 95f0: 4649 mov r1, r9 + 95f2: 6201 str r1, [r0, #32] + 95f4: 4651 mov r1, sl + 95f6: 6241 str r1, [r0, #36] @ 0x24 + 95f8: 4659 mov r1, fp + 95fa: 6281 str r1, [r0, #40] @ 0x28 + 95fc: 4669 mov r1, sp + 95fe: 62c1 str r1, [r0, #44] @ 0x2c + 9600: 4671 mov r1, lr + 9602: 6081 str r1, [r0, #8] + 9604: e7de b.n 95c4 + +[3]: https://www.openwall.com/lists/musl/2020/09/25/4 + +Signed-off-by: J. Neuschäfer +Upstream: https://github.com/micropython/micropython/commit/7b050b366b7dacfb43779c51702a892d8f1873d0 +--- + py/mpconfig.h | 6 ++++++ + py/nlrthumb.c | 10 +++++++++- + 2 files changed, 15 insertions(+), 1 deletion(-) + +diff --git a/py/mpconfig.h b/py/mpconfig.h +index af2480266..1aa3e0699 100644 +--- a/py/mpconfig.h ++++ b/py/mpconfig.h +@@ -587,6 +587,12 @@ + /*****************************************************************************/ + /* Python internal features */ + ++// Use a special long jump in nlrthumb.c, which may be necessary if nlr.o and ++// nlrthumb.o are linked far apart from each other. ++#ifndef MICROPY_NLR_THUMB_USE_LONG_JUMP ++#define MICROPY_NLR_THUMB_USE_LONG_JUMP (0) ++#endif ++ + // Whether to enable import of external modules + // When disabled, only importing of built-in modules is supported + // When enabled, a port must implement mp_import_stat (among other things) +diff --git a/py/nlrthumb.c b/py/nlrthumb.c +index a22c5df5b..e7b24f242 100644 +--- a/py/nlrthumb.c ++++ b/py/nlrthumb.c +@@ -38,6 +38,14 @@ + + __attribute__((naked)) unsigned int nlr_push(nlr_buf_t *nlr) { + ++ // If you get a linker error here, indicating that a relocation doesn't ++ // fit, try the following (in that order): ++ // ++ // 1. Ensure that nlr.o nlrthumb.o are linked closely together, i.e. ++ // there aren't too many other files between them in the linker list ++ // (PY_CORE_O_BASENAME in py/py.mk) ++ // 2. Set -DMICROPY_NLR_THUMB_USE_LONG_JUMP=1 during the build ++ // + __asm volatile ( + "str r4, [r0, #12] \n" // store r4 into nlr_buf + "str r5, [r0, #16] \n" // store r5 into nlr_buf +@@ -71,7 +79,7 @@ __attribute__((naked)) unsigned int nlr_push(nlr_buf_t *nlr) { + "str lr, [r0, #8] \n" // store lr into nlr_buf + #endif + +- #if !defined(__thumb2__) ++ #if MICROPY_NLR_THUMB_USE_LONG_JUMP + "ldr r1, nlr_push_tail_var \n" + "bx r1 \n" // do the rest in C + ".align 2 \n" +-- +2.43.0 + diff --git a/package/micropython/Config.in b/package/micropython/Config.in new file mode 100644 index 00000000..f532b3bd --- /dev/null +++ b/package/micropython/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_MICROPYTHON + bool "micropython" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + MicroPython is a lean and fast implementation of the Python + 3 programming language that is optimised to run on a + microcontroller. + + https://micropython.org + +if BR2_PACKAGE_MICROPYTHON + +config BR2_PACKAGE_MICROPYTHON_LIB + bool "micropython-lib" + select BR2_PACKAGE_PCRE2 # runtime + help + Core Python libraries ported to MicroPython. + +endif # BR2_PACKAGE_MICROPYTHON + +comment "micropython needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/micropython/collect_micropython_lib.py b/package/micropython/collect_micropython_lib.py new file mode 100755 index 00000000..8dce7833 --- /dev/null +++ b/package/micropython/collect_micropython_lib.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python3 + +""" +Sometime after v1.9.3, micropython-lib's directory structure was cleaned up and +enhanced with manifest files. + +Though cleaner, it means it cannot be directly copied into the target. +This script is during build process to perform that conversion. + +It makes use of manifestfile.py, which is normally located in micropython's +tool directory. + +It also depends on the micropython-lib that is cloned in lib/micropython-lib +during build. +""" + +import argparse +import manifestfile +import os +import shutil + + +def get_library_name_type(manifest_path: str) -> tuple[str, bool]: + split = manifest_path.split("/") + return (split[-2], "unix-ffi" in split) # -1: "manifest.py", -2: library name + + +def get_all_libraries(mpy_lib_dir: str): + # reuse manifestfile module capabilities to scan the micropython-lib directory + + collected_list = manifestfile.ManifestFile( + manifestfile.MODE_FREEZE, {"MPY_LIB_DIR": mpy_lib_dir} + ) + collected_list.freeze(mpy_lib_dir) + + for file in collected_list.files(): + if file.target_path.endswith("manifest.py"): + yield get_library_name_type(file.full_path) + + +def copy_file(src: str, target: str, destination: str): + s = target.split("/") + s.pop() + d = f"{destination}/{'/'.join(s)}" + os.makedirs(d, exist_ok=True) + shutil.copy(src, f"{destination}/{target}") + + +def copy_libraries(manifest, destination: str): + for f in manifest.files(): + copy_file(f.full_path, f.target_path, destination) + + +def process_cmdline_args(): + parser = argparse.ArgumentParser( + description="Prepare micropython-lib to be installed" + ) + parser.add_argument("micropython", help="Path to micropython source directory") + parser.add_argument("destination", help="Destination directory") + + args = parser.parse_args() + return os.path.abspath(args.micropython), os.path.abspath(args.destination) + + +def main(): + micropython_dir, destination_dir = process_cmdline_args() + mpy_lib_dir = f"{micropython_dir}/lib/micropython-lib" + + manifest = manifestfile.ManifestFile( + manifestfile.MODE_FREEZE, {"MPY_LIB_DIR": mpy_lib_dir} + ) + + for library, is_ffi in get_all_libraries(mpy_lib_dir): + manifest.require(library, unix_ffi=is_ffi) + + copy_libraries(manifest, destination_dir) + + +main() diff --git a/package/micropython/micropython.hash b/package/micropython/micropython.hash new file mode 100644 index 00000000..43551866 --- /dev/null +++ b/package/micropython/micropython.hash @@ -0,0 +1,3 @@ +#locally computed +sha256 a042764f0b6f6d92b267454c5bd5afcb83fc3900119f2583672aac571e661924 micropython-1.22.0.tar.xz +sha256 d9e0e0395867c899090e150213bc2b417e970c17355a8d48300089875b3c8037 LICENSE diff --git a/package/micropython/micropython.mk b/package/micropython/micropython.mk new file mode 100644 index 00000000..125a0edc --- /dev/null +++ b/package/micropython/micropython.mk @@ -0,0 +1,76 @@ +################################################################################ +# +# micropython +# +################################################################################ + +MICROPYTHON_VERSION = 1.22.0 +MICROPYTHON_SITE = https://micropython.org/resources/source +MICROPYTHON_SOURCE = micropython-$(MICROPYTHON_VERSION).tar.xz +# Micropython has a lot of code copied from other projects, and also a number +# of submodules for various libs. However, we don't even clone the submodules, +# and most of the copied code is not used in the unix build. +MICROPYTHON_LICENSE = MIT, BSD-1-Clause, BSD-3-Clause, Zlib +MICROPYTHON_LICENSE_FILES = LICENSE +MICROPYTHON_DEPENDENCIES = host-python3 +MICROPYTHON_CPE_ID_VENDOR = micropython + +# Use fallback implementation for exception handling on architectures that don't +# have explicit support. +ifeq ($(BR2_i386)$(BR2_x86_64)$(BR2_arm)$(BR2_armeb),) +MICROPYTHON_CFLAGS = -DMICROPY_GCREGS_SETJMP=1 +endif + +# xtensa has problems with nlr_push, use setjmp based implementation instead +ifeq ($(BR2_xtensa),y) +MICROPYTHON_CFLAGS = -DMICROPY_NLR_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 \ + MICROPY_PY_USSL=0 \ + CROSS_COMPILE=$(TARGET_CROSS) \ + CFLAGS_EXTRA=$(MICROPYTHON_CFLAGS) \ + LDFLAGS_EXTRA="$(TARGET_LDFLAGS)" \ + CWARN= + +ifeq ($(BR2_PACKAGE_LIBFFI),y) +MICROPYTHON_DEPENDENCIES += host-pkgconf libffi +MICROPYTHON_MAKE_OPTS += MICROPY_PY_FFI=1 +else +MICROPYTHON_MAKE_OPTS += MICROPY_PY_FFI=0 +endif + +define MICROPYTHON_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/mpy-cross + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/ports/unix \ + $(MICROPYTHON_MAKE_OPTS) +endef + +define MICROPYTHON_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/ports/unix \ + $(MICROPYTHON_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) \ + PREFIX=/usr \ + install +endef + +ifeq ($(BR2_PACKAGE_MICROPYTHON_LIB),y) +define MICROPYTHON_COLLECT_LIBS + $(EXTRA_ENV) PYTHONPATH=$(@D)/tools \ + package/micropython/collect_micropython_lib.py \ + $(@D) $(@D)/.built_pylib +endef + +define MICROPYTHON_INSTALL_LIBS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/lib/micropython + cp -a $(@D)/.built_pylib/* $(TARGET_DIR)/usr/lib/micropython +endef + +MICROPYTHON_POST_BUILD_HOOKS += MICROPYTHON_COLLECT_LIBS +MICROPYTHON_POST_INSTALL_TARGET_HOOKS += MICROPYTHON_INSTALL_LIBS +endif + +$(eval $(generic-package)) diff --git a/package/mii-diag/0001-strchr.patch b/package/mii-diag/0001-strchr.patch new file mode 100644 index 00000000..fcfeb3c7 --- /dev/null +++ b/package/mii-diag/0001-strchr.patch @@ -0,0 +1,23 @@ +Use the strrchr() function instead of the deprecated rindex() +function. + +--- mii-diag-2.11.orig/mii-diag.c.orig 2008-06-25 11:08:52.000000000 +1000 ++++ mii-diag-2.11.orig/mii-diag.c 2005-03-27 03:56:33.000000000 +1000 +@@ -174,7 +174,7 @@ + { + int c, errflag = 0; + char **spp, *ifname; +- char *progname = rindex(argv[0], '/') ? rindex(argv[0], '/')+1 : argv[0]; ++ char *progname = strrchr(argv[0], '/') ? strrchr(argv[0], '/')+1 : argv[0]; + + while ((c = getopt_long(argc, argv, shortopts, longopts, 0)) != EOF) + switch (c) { +@@ -310,7 +310,7 @@ + str = endstr+1; + else { + fprintf(stderr, "Invalid driver parameter '%s'.\n", str); +- str = index(str, ','); ++ str = strchr(str, ','); + } + } else if (endstr[0] == ',') { + data32[i] = newval; diff --git a/package/mii-diag/Config.in b/package/mii-diag/Config.in new file mode 100644 index 00000000..37f3647b --- /dev/null +++ b/package/mii-diag/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_MII_DIAG + bool "mii-diag" + help + mii-diag allows you to manipulate the MII registers of + network cards. + + https://launchpad.net/ubuntu/+source/mii-diag diff --git a/package/mii-diag/mii-diag.hash b/package/mii-diag/mii-diag.hash new file mode 100644 index 00000000..2af3f960 --- /dev/null +++ b/package/mii-diag/mii-diag.hash @@ -0,0 +1,4 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/m/mii-diag/mii-diag_2.11-3.dsc +sha256 c690e87e6010607593c1cc2ccd5c481eb3be179387220ad445d8ab83d73ad41c mii-diag_2.11.orig.tar.gz +sha256 b49fd3e7c0c446a949c3ca246cc441824d7ef5a61530f884756a82b0b2997190 mii-diag_2.11-3.diff.gz +sha256 c83cf866874d6171fbea4e3786370483beb6d2898ac2ea91123b144effec7fcb mii-diag.c diff --git a/package/mii-diag/mii-diag.mk b/package/mii-diag/mii-diag.mk new file mode 100644 index 00000000..a7c64832 --- /dev/null +++ b/package/mii-diag/mii-diag.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# mii-diag +# +################################################################################ + +MII_DIAG_VERSION = 2.11 +MII_DIAG_SOURCE = mii-diag_$(MII_DIAG_VERSION).orig.tar.gz +MII_DIAG_PATCH = mii-diag_$(MII_DIAG_VERSION)-3.diff.gz +MII_DIAG_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/m/mii-diag +MII_DIAG_LICENSE = GPL # No version specified +MII_DIAG_LICENSE_FILES = mii-diag.c +MII_DIAG_CPE_ID_VENDOR = debian + +MII_DIAG_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) + +define MII_DIAG_DEBIAN_PATCHES + if [ -d $(@D)/debian/patches ]; then \ + $(APPLY_PATCHES) $(@D) $(@D)/debian/patches \*.patch; \ + fi +endef + +MII_DIAG_POST_PATCH_HOOKS = MII_DIAG_DEBIAN_PATCHES + +define MII_DIAG_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(MII_DIAG_MAKE_OPTS) -C $(@D) mii-diag +endef + +define MII_DIAG_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install-mii-diag +endef + +$(eval $(generic-package)) diff --git a/package/mimic/0001-Fix-linking-on-gcc-10.2.0-or-newer.patch b/package/mimic/0001-Fix-linking-on-gcc-10.2.0-or-newer.patch new file mode 100644 index 00000000..ea02bf58 --- /dev/null +++ b/package/mimic/0001-Fix-linking-on-gcc-10.2.0-or-newer.patch @@ -0,0 +1,27 @@ +From 77b36eaeb2c38eba571b8db7e9bb0fd507774e6d Mon Sep 17 00:00:00 2001 +From: Kris Gesling +Date: Tue, 11 May 2021 09:15:22 +0930 +Subject: [PATCH] Fix linking on gcc 10.2.0 or newer + +Co-authored-by: MichaelSabal + +[Retrieved from: +https://github.com/MycroftAI/mimic1/commit/77b36eaeb2c38eba571b8db7e9bb0fd507774e6d] +Signed-off-by: Fabrice Fontaine +--- + lang/cmu_indic_lang/cmu_indic_lang.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lang/cmu_indic_lang/cmu_indic_lang.h b/lang/cmu_indic_lang/cmu_indic_lang.h +index 75ee46c..83e2afa 100644 +--- a/lang/cmu_indic_lang/cmu_indic_lang.h ++++ b/lang/cmu_indic_lang/cmu_indic_lang.h +@@ -51,7 +51,7 @@ void cmu_indic_lang_init(cst_voice *v); + extern const cst_phoneset cmu_indic_phoneset; + extern const cst_cart cmu_indic_phrasing_cart; + +-const cst_regex * const cst_rx_not_indic; ++extern const cst_regex * const cst_rx_not_indic; + + #ifdef __cplusplus + } /* extern "C" */ diff --git a/package/mimic/Config.in b/package/mimic/Config.in new file mode 100644 index 00000000..79641d37 --- /dev/null +++ b/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/package/mimic/mimic.hash b/package/mimic/mimic.hash new file mode 100644 index 00000000..10780d41 --- /dev/null +++ b/package/mimic/mimic.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 725003c9972d5b67c49d5ea6a89cb26b63414ff2c7adbbaf9200cf9eb55f80eb mimic-1.1.0.tar.gz +sha256 c423c1c6d260091d80ee4c00f386a10fea39963a3f1530f2c245f15dd20324ee COPYING diff --git a/package/mimic/mimic.mk b/package/mimic/mimic.mk new file mode 100644 index 00000000..2d246561 --- /dev/null +++ b/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/package/minetest-game/Config.in b/package/minetest-game/Config.in new file mode 100644 index 00000000..cf92ea52 --- /dev/null +++ b/package/minetest-game/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_MINETEST_GAME + bool "minetest-game" + depends on BR2_PACKAGE_MINETEST + help + The main subgame for the Minetest engine. + + https://github.com/minetest/minetest_game diff --git a/package/minetest-game/minetest-game.hash b/package/minetest-game/minetest-game.hash new file mode 100644 index 00000000..629871ed --- /dev/null +++ b/package/minetest-game/minetest-game.hash @@ -0,0 +1,38 @@ +# Locally calculated +sha256 5dc857003d24bb489f126865fcd6bf0d9c0cb146ca4c1c733570699d15abd0e3 minetest-game-5.6.1.tar.gz + +sha256 f8a254e8d5f6b3ca3873f990986e86c864f943aa5dc9bf56808c5f4bfa509db0 LICENSE.txt +sha256 ed2afed388c470e08edc1104e4ff6d12b68a32a76b8c52d760a99d4d2d7716f3 mods/beds/license.txt +sha256 559749ba0d269b768e1b85bdac0f8b7a0cf100ecb3edd0df8529fe57cd4bfc0d mods/binoculars/license.txt +sha256 9e9dbe5236ba70d0337f9879b988c19c6a7b0c902eed202f775200b8bee6980d mods/boats/license.txt +sha256 e642798b595fb41901ae695326da9a167b0bd6b4055edec2396672f5f01bb16c mods/bones/license.txt +sha256 baf438bc48b7da1b8fc03d37d134473e1c1f33ffe2e926fa650e6d0c64872785 mods/bucket/license.txt +sha256 01370a00e7b2157a07ee21fa4dac9cc108c7449442f612a3e55cfe18b5b03c2b mods/butterflies/license.txt +sha256 6196d390ee0b6331766219aa82f31613fffb62476c03cf960190ab8c232b8822 mods/carts/license.txt +sha256 b6c3aca8da2f6c272fe431740dda0a349cff419f1f72e55c6de677379fc04169 mods/creative/license.txt +sha256 f78424e0872260d3f3af98e74faf1bbe6b9387cd5464b7ae931d1fc1cc93223c mods/default/license.txt +sha256 c0c652890fc80af8eefedbcfe1cd0d16b13b14cd1c7105c9c2bc9abe8cf1620c mods/doors/license.txt +sha256 33d0b8726dd27c8f0c96d6dfd611e0e980bbdbb8075fac7476d055518319ec1c mods/dungeon_loot/license.txt +sha256 011ebc82e96df3b825777e7531cb5d34cfce1f6ca27b7d3c80793c033d7c4f4e mods/dye/license.txt +sha256 29a05b102726b9a3115f7ec06d5188dac7b1c005d8cf1c4d6dc2d5544405a45c mods/env_sounds/license.txt +sha256 bdb104cdbe72a27407ade35144a8d1d52dd60c3ca626b5a87555b9d5d5c8af98 mods/farming/license.txt +sha256 61f826be9adee70ef0e37f3bf4891fecc4b027a21637b32981b98220723d6f37 mods/fire/license.txt +sha256 01370a00e7b2157a07ee21fa4dac9cc108c7449442f612a3e55cfe18b5b03c2b mods/fireflies/license.txt +sha256 d92ac36a0235f4c02f8cfe2137d7d632bd53374c44ead97f20c152dddf475837 mods/flowers/license.txt +sha256 ffbac006d197fcb8e36e9cdda638053ac80eef4e6446bbe36cb94bd28f54ba0b mods/game_commands/license.txt +sha256 857f64cd62c13e27f25363584342fe049885b16c6b2392f1ebd7c3a7fb6ca436 mods/give_initial_stuff/license.txt +sha256 aca908299369e2187ae9107e5e870721ea0dcb699a470fec1fd7fabce4bcbcdf mods/keys/license.txt +sha256 dcbab8d7dc4137789958d19471807b37447fd303bced310d7d76d901eefca8ff mods/map/license.txt +sha256 babdfff9fe0cc4a3d4346b5388129d4ba79e50b517c82ca37cfdfd78086b83aa mods/mtg_craftguide/license.txt +sha256 88385cd60d15c4fb4856c3c4c551c76c30958268c5c1160c1aa4e520c037a623 mods/player_api/license.txt +sha256 0066e63d682d54a014ad3359794365a1abb87562d2b1e5e32093976d88c295b4 mods/screwdriver/license.txt +sha256 b903866d052774e4127952690ce62ca26aa5bc4c2ddd48fceae501fa0d24ed74 mods/sethome/license.txt +sha256 478b9944a446b4d88496d10736ddcd8ad5a3ca52f8b75f747315583d4012cb3c mods/sfinv/license.txt +sha256 e361fc900d9203859391d35c38c3284c91600d23c1617076c641ff7e9fe10b15 mods/spawn/license.txt +sha256 eab4c0cb318bb83c13362047a5a0fc5cb650a4e561ceb5a9124e5a1253cbc21a mods/stairs/license.txt +sha256 e8593deed04ed4199ce9303db900f32276e0b629fd7f0089074d13370c12d00a mods/tnt/license.txt +sha256 a0814bccd28157a160049efeac03864ff4c4dd6a34bc9cfcd3cc62de66fb156a mods/vessels/license.txt +sha256 e9ebf1b4b170e64a0ea6e246edd03689aeb859d6560b8372a8081c004b30cb65 mods/walls/license.txt +sha256 84f4ed8b688ab385eb9d5b482eb35c26cd7a45e065ed93ff6ad477d29ff3c708 mods/weather/license.txt +sha256 551b19e2c8b18c143301e090a1ceb5dc5d4ca243cad846de179d693439910816 mods/wool/license.txt +sha256 c71155c9a68a5242223c5f814c1b9b1270492729b0ff0add770b6418bccf17c9 mods/xpanes/license.txt diff --git a/package/minetest-game/minetest-game.mk b/package/minetest-game/minetest-game.mk new file mode 100644 index 00000000..ec8d5bff --- /dev/null +++ b/package/minetest-game/minetest-game.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# minetest_game +# +################################################################################ + +MINETEST_GAME_VERSION = 5.6.1 +MINETEST_GAME_SITE = $(call github,minetest,minetest_game,$(MINETEST_GAME_VERSION)) +MINETEST_GAME_LICENSE = LGPL-2.1+ (code), CC-BY-SA-2.0, CC-BY-SA-3.0, \ + CC-BY-SA-4.0, MIT, CC0 1.0, CC-BY-2.0 (mods) +MINETEST_GAME_LICENSE_FILES = LICENSE.txt \ + mods/beds/license.txt \ + mods/binoculars/license.txt \ + mods/boats/license.txt \ + mods/bones/license.txt \ + mods/bucket/license.txt \ + mods/butterflies/license.txt \ + mods/carts/license.txt \ + mods/creative/license.txt \ + mods/default/license.txt \ + mods/doors/license.txt \ + mods/dungeon_loot/license.txt \ + mods/dye/license.txt \ + mods/env_sounds/license.txt \ + mods/farming/license.txt \ + mods/fire/license.txt \ + mods/fireflies/license.txt \ + mods/flowers/license.txt \ + mods/game_commands/license.txt \ + mods/give_initial_stuff/license.txt \ + mods/keys/license.txt \ + mods/map/license.txt \ + mods/mtg_craftguide/license.txt \ + mods/player_api/license.txt \ + mods/screwdriver/license.txt \ + mods/sethome/license.txt \ + mods/sfinv/license.txt \ + mods/spawn/license.txt \ + mods/stairs/license.txt \ + mods/tnt/license.txt \ + mods/vessels/license.txt \ + mods/walls/license.txt \ + mods/weather/license.txt \ + mods/wool/license.txt \ + mods/xpanes/license.txt + +define MINETEST_GAME_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/share/minetest/games/minetest_game + cp -dpfr $(@D)/* $(TARGET_DIR)/usr/share/minetest/games/minetest_game +endef + +$(eval $(generic-package)) diff --git a/package/minetest/Config.in b/package/minetest/Config.in new file mode 100644 index 00000000..4e139ac3 --- /dev/null +++ b/package/minetest/Config.in @@ -0,0 +1,65 @@ +config BR2_PACKAGE_MINETEST + bool "minetest" + depends on BR2_INSTALL_LIBSTDCPP # irrlichtMt (bundled) + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_XORG7 # irrlichtMt (bundled) + depends on BR2_PACKAGE_HAS_LIBGL # irrlichtMt (bundled) + depends on BR2_PACKAGE_LUAJIT + select BR2_PACKAGE_GMP + select BR2_PACKAGE_JSONCPP + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_ZSTD + # At least one option must be enabled + select BR2_PACKAGE_MINETEST_CLIENT if !BR2_PACKAGE_MINETEST_SERVER + help + Minetest is a near-infinite-world block sandbox game and a + game engine, inspired by InfiniMiner, Minecraft, and the + like. + + http://www.minetest.net + +if BR2_PACKAGE_MINETEST + +config BR2_PACKAGE_MINETEST_CLIENT + bool "minetest client" + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_XLIB_LIBXI + help + Build Minetest client. + +config BR2_PACKAGE_MINETEST_SERVER + bool "minetest server" + help + Build Minetest server. + +config BR2_PACKAGE_MINETEST_SOUND + bool "enable sound" + depends on BR2_PACKAGE_MINETEST_CLIENT + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # openal + select BR2_PACKAGE_LIBVORBIS + select BR2_PACKAGE_OPENAL + +comment "sound support needs a toolchain w/ threads NPTL" + depends on BR2_PACKAGE_MINETEST_CLIENT + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL + +endif + +comment "minetest needs a toolchain w/ C++, gcc >= 5.1, threads" + depends on BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_5 \ + || !BR2_TOOLCHAIN_HAS_THREADS + +comment "minetest needs X11 and an OpenGL provider" + depends on (BR2_INSTALL_LIBSTDCPP \ + && BR2_TOOLCHAIN_GCC_AT_LEAST_5 \ + && BR2_TOOLCHAIN_HAS_THREADS) + depends on !BR2_PACKAGE_HAS_LIBGL || !BR2_PACKAGE_XORG7 diff --git a/package/minetest/minetest.hash b/package/minetest/minetest.hash new file mode 100644 index 00000000..ec67d413 --- /dev/null +++ b/package/minetest/minetest.hash @@ -0,0 +1,6 @@ +# Locally calculated +sha256 1440603e19dca70e2691e86a74c822ee2c4a36fceee32b2d85ae74772149e9a3 minetest-5.6.1.tar.gz +sha256 27594242da8c7cc1e5ef45922e1dfdd130c37d77719b5d927359eb47992051e0 irrlicht-1.9.0mt8.tar.gz + +sha256 b38c8d428ceddf8e9b49dca63610c74499d952895d756b7eab5f5d4cef2954f6 LICENSE.txt +sha256 ca38f1ba4ab901111f6eee50009bd46dbd866e6beb98d592d843f7c162d73409 lib/irrlichtmt/doc/irrlicht-license.txt diff --git a/package/minetest/minetest.mk b/package/minetest/minetest.mk new file mode 100644 index 00000000..3904bd68 --- /dev/null +++ b/package/minetest/minetest.mk @@ -0,0 +1,100 @@ +################################################################################ +# +# minetest +# +################################################################################ + +MINETEST_VERSION = 5.6.1 +MINETEST_SITE = $(call github,minetest,minetest,$(MINETEST_VERSION)) +MINETEST_LICENSE = LGPL-2.1+ (code), CC-BY-SA-3.0 (textures and sounds), Zlib (irrlicht) +MINETEST_LICENSE_FILES = LICENSE.txt lib/irrlichtmt/doc/irrlicht-license.txt +MINETEST_CPE_ID_VENDOR = minetest + +MINETEST_DEPENDENCIES = gmp jsoncpp luajit sqlite zlib zstd + +MINETEST_IRRLICHTMT_VERSION = 1.9.0mt8 +MINETEST_EXTRA_DOWNLOADS = $(call github,minetest,irrlicht,$(MINETEST_IRRLICHTMT_VERSION))/irrlicht-$(MINETEST_IRRLICHTMT_VERSION).tar.gz + +define MINETEST_IRRLICHTMT_EXTRACT + mkdir -p $(@D)/lib + $(foreach f, $(notdir $(MINETEST_EXTRA_DOWNLOADS)), \ + $(call suitable-extractor,$(f)) $(MINETEST_DL_DIR)/$(f) | \ + $(TAR) -C $(@D)/lib $(TAR_OPTIONS) - + ) + ln -sf irrlicht-$(MINETEST_IRRLICHTMT_VERSION) $(@D)/lib/irrlichtmt +endef +MINETEST_POST_EXTRACT_HOOKS += MINETEST_IRRLICHTMT_EXTRACT + +MINETEST_CONF_OPTS = \ + -DDEFAULT_RUN_IN_PLACE=OFF \ + -DENABLE_GLES=OFF \ + -DENABLE_LUAJIT=ON \ + -DENABLE_CURSES=OFF \ + -DAPPLY_LOCALE_BLACKLIST=OFF \ + -DENABLE_SYSTEM_GMP=ON \ + -DENABLE_SYSTEM_JSONCPP=ON \ + -DBUILD_UNITTESTS=OFF + +ifeq ($(BR2_PACKAGE_MINETEST_CLIENT),y) +MINETEST_DEPENDENCIES += bzip2 freetype jpeg libgl libpng xlib_libXi +MINETEST_CONF_OPTS += -DBUILD_CLIENT=ON +else +MINETEST_CONF_OPTS += -DBUILD_CLIENT=OFF +endif + +ifeq ($(BR2_PACKAGE_MINETEST_SERVER),y) +MINETEST_CONF_OPTS += -DBUILD_SERVER=ON +else +MINETEST_CONF_OPTS += -DBUILD_SERVER=OFF +endif + +ifeq ($(BR2_PACKAGE_MINETEST_SOUND),y) +MINETEST_DEPENDENCIES += libvorbis openal +MINETEST_CONF_OPTS += -DENABLE_SOUND=ON +else +MINETEST_CONF_OPTS += -DENABLE_SOUND=OFF +endif + +ifeq ($(BR2_PACKAGE_HIREDIS),y) +MINETEST_DEPENDENCIES += hiredis +MINETEST_CONF_OPTS += -DENABLE_REDIS=ON +else +MINETEST_CONF_OPTS += -DENABLE_REDIS=OFF +endif + +ifeq ($(BR2_PACKAGE_LEVELDB),y) +MINETEST_DEPENDENCIES += leveldb +MINETEST_CONF_OPTS += -DENABLE_LEVELDB=ON +else +MINETEST_CONF_OPTS += -DENABLE_LEVELDB=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +MINETEST_DEPENDENCIES += libcurl +MINETEST_CONF_OPTS += -DENABLE_CURL=ON +else +MINETEST_CONF_OPTS += -DENABLE_CURL=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBSPATIALINDEX),y) +MINETEST_DEPENDENCIES += libspatialindex +MINETEST_CONF_OPTS += -DENABLE_SPATIAL=ON +else +MINETEST_CONF_OPTS += -DENABLE_SPATIAL=OFF +endif + +ifeq ($(BR2_PACKAGE_POSTGRESQL),y) +MINETEST_DEPENDENCIES += postgresql +MINETEST_CONF_OPTS += -DENABLE_POSTGRESQL=ON +else +MINETEST_CONF_OPTS += -DENABLE_POSTGRESQL=OFF +endif + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +MINETEST_DEPENDENCIES += $(TARGET_NLS_DEPENDENCIES) +MINETEST_CONF_OPTS += -DENABLE_GETTEXT=ON +else +MINETEST_CONF_OPTS += -DENABLE_GETTEXT=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/mini-snmpd/0001-linux.c-fix-musl-build.patch b/package/mini-snmpd/0001-linux.c-fix-musl-build.patch new file mode 100644 index 00000000..8e8bb090 --- /dev/null +++ b/package/mini-snmpd/0001-linux.c-fix-musl-build.patch @@ -0,0 +1,46 @@ +From 73fa408f51ec25121075aaccac9c9db1c68567cd Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 12 Mar 2020 10:02:18 +0100 +Subject: [PATCH] linux.c: fix musl build + +Remove include on linux/if_link.h to avoid the following build failure +with musl: + +In file included from /home/buildroot/autobuild/instance-2/output-1/host/i586-buildroot-linux-musl/sysroot/usr/include/linux/kernel.h:4, + from /home/buildroot/autobuild/instance-2/output-1/host/i586-buildroot-linux-musl/sysroot/usr/include/linux/netlink.h:4, + from /home/buildroot/autobuild/instance-2/output-1/host/i586-buildroot-linux-musl/sysroot/usr/include/linux/if_link.h:5, + from linux.c:21: +/home/buildroot/autobuild/instance-2/output-1/host/i586-buildroot-linux-musl/sysroot/usr/include/linux/sysinfo.h:7:8: error: redefinition of 'struct sysinfo' + struct sysinfo { + ^~~~~~~ +In file included from linux.c:19: +/home/buildroot/autobuild/instance-2/output-1/host/i586-buildroot-linux-musl/sysroot/usr/include/sys/sysinfo.h:10:8: note: originally defined here + struct sysinfo { + ^~~~~~~ + CC mini_snmpd-globals.o + +Fixes: + - http://autobuild.buildroot.org/results/6903a0f685076b4a2c2824de6158da40e9e712d8 + +Signed-off-by: Fabrice Fontaine +[Retrieved from: +https://github.com/troglobit/mini-snmpd/commit/73fa408f51ec25121075aaccac9c9db1c68567cd] +--- + linux.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/linux.c b/linux.c +index a657912..86a7085 100644 +--- a/linux.c ++++ b/linux.c +@@ -18,7 +18,6 @@ + #include + #include + #include +-#include + #include + #include + #include +-- +2.25.1 + diff --git a/package/mini-snmpd/Config.in b/package/mini-snmpd/Config.in new file mode 100644 index 00000000..1f61cddb --- /dev/null +++ b/package/mini-snmpd/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_MINI_SNMPD + bool "mini-snmpd" + help + Mini SNMPd is a minimal implementation targeted at small or + embedded UNIX systems with limited resources + + http://troglobit.com/mini-snmpd.html diff --git a/package/mini-snmpd/mini-snmpd b/package/mini-snmpd/mini-snmpd new file mode 100644 index 00000000..0ca9901d --- /dev/null +++ b/package/mini-snmpd/mini-snmpd @@ -0,0 +1,2 @@ +# Require client authentication, thus SNMP version 2c +EXTRA_PARAMS=-a diff --git a/package/mini-snmpd/mini-snmpd.hash b/package/mini-snmpd/mini-snmpd.hash new file mode 100644 index 00000000..fee76c07 --- /dev/null +++ b/package/mini-snmpd/mini-snmpd.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 de00c475a3c70c56f3ee97cd683cb71009d3521d60b1f589c5a91b4671ede9f3 mini-snmpd-1.6.tar.gz +sha256 8a43b895972a24567297f44f35dab0f5f9ed3b7db6dac0bf6094075b27ab9d56 COPYING diff --git a/package/mini-snmpd/mini-snmpd.mk b/package/mini-snmpd/mini-snmpd.mk new file mode 100644 index 00000000..1f6e5c19 --- /dev/null +++ b/package/mini-snmpd/mini-snmpd.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# mini-snmpd +# +################################################################################ + +MINI_SNMPD_VERSION = 1.6 +MINI_SNMPD_SITE = $(call github,troglobit,mini-snmpd,v$(MINI_SNMPD_VERSION)) +MINI_SNMPD_LICENSE = GPL-2.0 +MINI_SNMPD_LICENSE_FILES = COPYING +MINI_SNMPD_CPE_ID_VENDOR = minisnmpd_project +MINI_SNMPD_CPE_ID_PRODUCT = minisnmpd +MINI_SNMPD_AUTORECONF = YES +MINI_SNMPD_DEPENDENCIES = host-pkgconf + +define MINI_SNMPD_INSTALL_ETC_DEFAULT + $(INSTALL) -D -m 644 package/mini-snmpd/mini-snmpd \ + $(TARGET_DIR)/etc/default/mini-snmpd +endef + +MINI_SNMPD_POST_INSTALL_TARGET_HOOKS += MINI_SNMPD_INSTALL_ETC_DEFAULT + +$(eval $(autotools-package)) diff --git a/package/minicom/Config.in b/package/minicom/Config.in new file mode 100644 index 00000000..efc4f1b7 --- /dev/null +++ b/package/minicom/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_MINICOM + bool "minicom" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_NCURSES + help + Minicom is a menu driven communications program. It emulates + ANSI and VT102 terminals. It has a dialing directory and auto + zmodem download. + + https://salsa.debian.org/minicom-team/minicom + +comment "minicom needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR diff --git a/package/minicom/minicom.hash b/package/minicom/minicom.hash new file mode 100644 index 00000000..dd104502 --- /dev/null +++ b/package/minicom/minicom.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 9efbb6458140e5a0de445613f0e76bcf12cbf7a9892b2f53e075c2e7beaba86c minicom-2.9.tar.bz2 +sha256 cf80a758014eefbf068afffe3d462fc34ff4f528527524d8e100329c42094e15 COPYING diff --git a/package/minicom/minicom.mk b/package/minicom/minicom.mk new file mode 100644 index 00000000..8bc57174 --- /dev/null +++ b/package/minicom/minicom.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# minicom +# +################################################################################ + +MINICOM_VERSION = 2.9 +MINICOM_SOURCE = minicom-$(MINICOM_VERSION).tar.bz2 +MINICOM_SITE = \ + https://salsa.debian.org/minicom-team/minicom/-/archive/$(MINICOM_VERSION) +MINICOM_LICENSE = GPL-2.0+ +MINICOM_LICENSE_FILES = COPYING +MINICOM_CPE_ID_VALID = YES + +MINICOM_DEPENDENCIES = ncurses $(if $(BR2_ENABLE_LOCALE),,libiconv) \ + $(TARGET_NLS_DEPENDENCIES) host-pkgconf + +MINICOM_CONF_OPTS = \ + --enable-dfl-port=/dev/ttyS1 \ + --enable-lock-dir=/var/lock + +$(eval $(autotools-package)) diff --git a/package/minidlna/Config.in b/package/minidlna/Config.in new file mode 100644 index 00000000..0083c9d8 --- /dev/null +++ b/package/minidlna/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_MINIDLNA + bool "minidlna" + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR # flac + depends on BR2_USE_MMU # fork + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + select BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_FLAC + select BR2_PACKAGE_LIBVORBIS # selects libogg + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_LIBID3TAG # selects zlib + select BR2_PACKAGE_LIBEXIF + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_SQLITE + help + MiniDLNA (aka ReadyDLNA) is server software with the aim of + being fully compliant with DLNA/UPnP-AV clients. + + http://minidlna.sourceforge.net/ + +comment "minidlna needs a toolchain w/ dynamic library, threads, wchar" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \ + BR2_STATIC_LIBS diff --git a/package/minidlna/S60minidlnad b/package/minidlna/S60minidlnad new file mode 100644 index 00000000..9b158afd --- /dev/null +++ b/package/minidlna/S60minidlnad @@ -0,0 +1,43 @@ +#!/bin/sh +# +# minidlnad Starts minidlnad. +# + +start() { + printf "Starting minidlna: " + umask 077 + start-stop-daemon -S -q -p /var/run/minidlna/minidlna.pid \ + --exec /usr/sbin/minidlnad -- "$@" + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping minidlna: " + start-stop-daemon -K -q -p /var/run/minidlna/minidlna.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + # Sleep needed for minidlna to restart properly + sleep 1 + start "$@" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + force-reload) + restart -R + ;; + *) + echo "Usage: $0 {start|stop|restart|force-reload}" + exit 1 +esac + +exit $? diff --git a/package/minidlna/minidlna.hash b/package/minidlna/minidlna.hash new file mode 100644 index 00000000..b78dd5b4 --- /dev/null +++ b/package/minidlna/minidlna.hash @@ -0,0 +1,6 @@ +# From https://sourceforge.net/projects/minidlna/files/minidlna/1.3.3/ +sha1 2d42028d2ca5ae04affdb96cb414314867e179ea minidlna-1.3.3.tar.gz +# Locally computed +sha256 39026c6d4a139b9180192d1c37225aa3376fdf4f1a74d7debbdbb693d996afa4 minidlna-1.3.3.tar.gz +sha256 79146b7f558e56510b9a714ff75318c05ab93aeccfd6597497b9bce212cf92ea COPYING +sha256 94876d7886116e176e702b4902bd9f19731a6883db5f229ac2a7058a22aa6529 LICENCE.miniupnpd diff --git a/package/minidlna/minidlna.mk b/package/minidlna/minidlna.mk new file mode 100644 index 00000000..1609695e --- /dev/null +++ b/package/minidlna/minidlna.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# minidlna +# +################################################################################ + +MINIDLNA_VERSION = 1.3.3 +MINIDLNA_SITE = https://downloads.sourceforge.net/project/minidlna/minidlna/$(MINIDLNA_VERSION) +MINIDLNA_LICENSE = GPL-2.0, BSD-3-Clause +MINIDLNA_LICENSE_FILES = COPYING LICENCE.miniupnpd +MINIDLNA_CPE_ID_VENDOR = readymedia_project +MINIDLNA_CPE_ID_PRODUCT = readymedia +MINIDLNA_SELINUX_MODULES = minidlna + +MINIDLNA_DEPENDENCIES = \ + $(TARGET_NLS_DEPENDENCIES) \ + ffmpeg flac libvorbis libogg libid3tag libexif jpeg sqlite \ + host-xutil_makedepend + +MINIDLNA_CONF_OPTS = \ + --disable-static + +define MINIDLNA_INSTALL_CONF + $(INSTALL) -D -m 644 $(@D)/minidlna.conf $(TARGET_DIR)/etc/minidlna.conf +endef + +MINIDLNA_POST_INSTALL_TARGET_HOOKS += MINIDLNA_INSTALL_CONF + +define MINIDLNA_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/minidlna/S60minidlnad \ + $(TARGET_DIR)/etc/init.d/S60minidlnad +endef + +define MINIDLNA_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/minidlna/minidlnad.service \ + $(TARGET_DIR)/usr/lib/systemd/system/minidlnad.service +endef + +$(eval $(autotools-package)) diff --git a/package/minidlna/minidlnad.service b/package/minidlna/minidlnad.service new file mode 100644 index 00000000..4e968d38 --- /dev/null +++ b/package/minidlna/minidlnad.service @@ -0,0 +1,11 @@ +[Unit] +Description=minidlna server +After=network.target + +[Service] +Type=forking +ExecStart=/usr/sbin/minidlnad +PIDFile=/run/minidlna/minidlna.pid + +[Install] +WantedBy=multi-user.target diff --git a/package/minimodem/Config.in b/package/minimodem/Config.in new file mode 100644 index 00000000..7d4efb69 --- /dev/null +++ b/package/minimodem/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_MINIMODEM + bool "minimodem" + select BR2_PACKAGE_FFTW + select BR2_PACKAGE_FFTW_SINGLE + select BR2_PACKAGE_LIBSNDFILE if !BR2_PACKAGE_ALSA_LIB_PCM && !BR2_PACKAGE_PULSEAUDIO + help + Minimodem is a command-line program which decodes (or + generates) audio modem tones at any specified baud rate, + using various framing protocols. It acts a general-purpose + software FSK modem, and includes support for various + standard FSK protocols such as Bell103, Bell202, RTTY, + TTY/TDD NOAA SAME, and Caller-ID. + + http://www.whence.com/minimodem/ diff --git a/package/minimodem/minimodem.hash b/package/minimodem/minimodem.hash new file mode 100644 index 00000000..82c3de53 --- /dev/null +++ b/package/minimodem/minimodem.hash @@ -0,0 +1,2 @@ +sha256 f8cca4db8e3f284d67f843054d6bb4d88a3db5e77b26192410e41e9a06f4378e minimodem-0.24.tar.gz +sha256 c298178753129680ef6d3112f0f8b61acc405c86c1997dfe59735257988f8b33 COPYING diff --git a/package/minimodem/minimodem.mk b/package/minimodem/minimodem.mk new file mode 100644 index 00000000..9b9ee158 --- /dev/null +++ b/package/minimodem/minimodem.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# minimodem +# +################################################################################ + +MINIMODEM_VERSION = 0.24 +MINIMODEM_SITE = http://www.whence.com/minimodem +MINIMODEM_LICENSE = GPL-3.0+ +MINIMODEM_LICENSE_FILES = COPYING + +MINIMODEM_DEPENDENCIES = fftw-single host-pkgconf + +ifeq ($(BR2_PACKAGE_ALSA_LIB_PCM),y) +MINIMODEM_DEPENDENCIES += alsa-lib +MINIMODEM_CONF_OPTS += --with-alsa +else +MINIMODEM_CONF_OPTS += --without-alsa +endif + +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +MINIMODEM_DEPENDENCIES += pulseaudio +MINIMODEM_CONF_OPTS += --with-pulseaudio +else +MINIMODEM_CONF_OPTS += --without-pulseaudio +endif + +ifeq ($(BR2_PACKAGE_LIBSNDFILE),y) +MINIMODEM_DEPENDENCIES += libsndfile +MINIMODEM_CONF_OPTS += --with-sndfile +else +MINIMODEM_CONF_OPTS += --without-sndfile +endif + +$(eval $(autotools-package)) diff --git a/package/minisign/Config.in b/package/minisign/Config.in new file mode 100644 index 00000000..a2111779 --- /dev/null +++ b/package/minisign/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_MINISIGN + bool "minisign" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBSODIUM + select BR2_PACKAGE_LIBSODIUM_FULL + help + Minisign is a dead simple tool to sign files and verify + signatures. + + https://github.com/jedisct1/minisign + +comment "minisign needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/minisign/Config.in.host b/package/minisign/Config.in.host new file mode 100644 index 00000000..99a89b7c --- /dev/null +++ b/package/minisign/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_MINISIGN + bool "host minisign" + help + Minisign is a dead simple tool to sign files and verify + signatures. + + https://github.com/jedisct1/minisign diff --git a/package/minisign/minisign.hash b/package/minisign/minisign.hash new file mode 100644 index 00000000..12cde42a --- /dev/null +++ b/package/minisign/minisign.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 74c2c78a1cd51a43a6c98f46a4eabefbc8668074ca9aa14115544276b663fc55 minisign-0.11.tar.gz +sha256 d775d155cbf31638714c31c6f990f9fdc5f07998d91e42d1bf15483bd2d1706b LICENSE diff --git a/package/minisign/minisign.mk b/package/minisign/minisign.mk new file mode 100644 index 00000000..7cdce597 --- /dev/null +++ b/package/minisign/minisign.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# minisign +# +################################################################################ + +MINISIGN_VERSION = 0.11 +MINISIGN_SITE = $(call github,jedisct1,minisign,$(MINISIGN_VERSION)) +MINISIGN_LICENSE = ISC +MINISIGN_LICENSE_FILES = LICENSE +MINISIGN_DEPENDENCIES = libsodium +HOST_MINISIGN_DEPENDENCIES = host-libsodium +MINISIGN_CONF_OPTS = -DCMAKE_STRIP="" + +ifeq ($(BR2_STATIC_LIBS),y) +MINISIGN_CONF_OPTS += -DBUILD_STATIC_EXECUTABLES=1 +endif + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/minissdpd/Config.in b/package/minissdpd/Config.in new file mode 100644 index 00000000..226cff0a --- /dev/null +++ b/package/minissdpd/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_MINISSDPD + bool "minissdpd" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBNFNETLINK + help + SSDP managing daemon. Designed to work with miniupnpc, + miniupnpd, minidlna, etc. + + http://miniupnp.free.fr/ diff --git a/package/minissdpd/S50minissdpd b/package/minissdpd/S50minissdpd new file mode 100644 index 00000000..6235e06b --- /dev/null +++ b/package/minissdpd/S50minissdpd @@ -0,0 +1,47 @@ +#!/bin/sh + +NAME=minissdpd +PIDFILE=/var/run/$NAME.pid +DAEMON=/usr/sbin/$NAME +CFGFILE=/etc/default/$NAME + +IFACE=eth0 + +# Read configuration variable file if it is present +if [ -f $CFGFILE ]; then + . $CFGFILE +fi + +DAEMON_ARGS="-i $IFACE" + +start() { + printf "Starting $NAME: " + start-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON -- $DAEMON_ARGS + [ $? = 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}" + exit 1 +esac + +exit $? diff --git a/package/minissdpd/minissdpd.hash b/package/minissdpd/minissdpd.hash new file mode 100644 index 00000000..bc1db5f2 --- /dev/null +++ b/package/minissdpd/minissdpd.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 f4c2dea6a472e0a5cc9dca2dc4c1fc36ba5538eacf8d793825293251725546bd minissdpd-1.6.0.tar.gz +sha256 a0f853256954f388ce4fab5faaef6a1f5bcd5e682c3c7c70b07b7130e932a021 LICENSE diff --git a/package/minissdpd/minissdpd.mk b/package/minissdpd/minissdpd.mk new file mode 100644 index 00000000..4f594cb5 --- /dev/null +++ b/package/minissdpd/minissdpd.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# minissdpd +# +################################################################################ + +MINISSDPD_VERSION = 1.6.0 +MINISSDPD_SITE = http://miniupnp.free.fr/files +MINISSDPD_LICENSE = BSD-3-Clause +MINISSDPD_LICENSE_FILES = LICENSE +MINISSDPD_CPE_ID_VENDOR = miniupnp_project +MINISSDPD_SELINUX_MODULES = minissdpd +MINISSDPD_DEPENDENCIES = libnfnetlink + +define MINISSDPD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE" \ + -C $(@D) +endef + +define MINISSDPD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + DESTDIR=$(TARGET_DIR) install +endef + +# Use dedicated init scripts for systemV and systemd instead of using +# minissdpd.init.d.script as it is not compatible with buildroot init system +define MINISSDPD_INSTALL_INIT_SYSV + $(RM) $(TARGET_DIR)/etc/init.d/minissdpd + $(INSTALL) -D -m 0755 package/minissdpd/S50minissdpd \ + $(TARGET_DIR)/etc/init.d/S50minissdpd +endef + +define MINISSDPD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/minissdpd/minissdpd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/minissdpd.service +endef + +$(eval $(generic-package)) diff --git a/package/minissdpd/minissdpd.service b/package/minissdpd/minissdpd.service new file mode 100644 index 00000000..59ed9c86 --- /dev/null +++ b/package/minissdpd/minissdpd.service @@ -0,0 +1,12 @@ +[Unit] +Description=SSDP managing daemon +After=network.target + +[Service] +Environment="IFACE=eth0" +EnvironmentFile=/etc/default/minissdpd +ExecStart=/usr/sbin/minissdpd -i $IFACE +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/minizip-zlib/Config.in b/package/minizip-zlib/Config.in new file mode 100644 index 00000000..fe9b337a --- /dev/null +++ b/package/minizip-zlib/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_MINIZIP_ZLIB + bool "minizip-zlib" + select BR2_PACKAGE_ZLIB + help + Legacy minizip provided in contrib/minizip of zlib. + + https://www.winimage.com/zLibDll/minizip.html diff --git a/package/minizip-zlib/minizip-zlib.hash b/package/minizip-zlib/minizip-zlib.hash new file mode 100644 index 00000000..cbd93138 --- /dev/null +++ b/package/minizip-zlib/minizip-zlib.hash @@ -0,0 +1,4 @@ +# From http://www.zlib.net/ +sha256 38ef96b8dfe510d42707d9c781877914792541133e1870841463bfa73f883e32 zlib-1.3.1.tar.xz +# License files, locally calculated +sha256 845efc77857d485d91fb3e0b884aaa929368c717ae8186b66fe1ed2495753243 LICENSE diff --git a/package/minizip-zlib/minizip-zlib.mk b/package/minizip-zlib/minizip-zlib.mk new file mode 100644 index 00000000..6d4a2d2e --- /dev/null +++ b/package/minizip-zlib/minizip-zlib.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# minizip-zlib +# +################################################################################ + +MINIZIP_ZLIB_VERSION = 1.3.1 +MINIZIP_ZLIB_SOURCE = zlib-$(MINIZIP_ZLIB_VERSION).tar.xz +MINIZIP_ZLIB_SITE = http://www.zlib.net +MINIZIP_ZLIB_LICENSE = Zlib +MINIZIP_ZLIB_LICENSE_FILES = LICENSE +MINIZIP_ZLIB_INSTALL_STAGING = YES +MINIZIP_ZLIB_SUBDIR = contrib/minizip +# configure is not shipped in contrib/minizip +MINIZIP_ZLIB_AUTORECONF = YES +MINIZIP_ZLIB_DEPENDENCIES = zlib +# demos must be disabled to avoid a conflict with BR2_PACKAGE_MINIZIP_DEMOS +MINIZIP_ZLIB_CONF_OPTS = --disable-demos + +$(eval $(autotools-package)) diff --git a/package/minizip/Config.in b/package/minizip/Config.in new file mode 100644 index 00000000..98eb4dec --- /dev/null +++ b/package/minizip/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_MINIZIP + bool "minizip" + depends on BR2_USE_WCHAR + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Enables to extract files from a .zip archive file. + It is compatible with PKZip 2.04g, WinZip, InfoZip, + MimarSinan Codex Suite 2002 tools, and compatible sofware. + + https://github.com/zlib-ng/minizip-ng + +config BR2_PACKAGE_MINIZIP_DEMOS + bool "minizip" + depends on BR2_PACKAGE_MINIZIP + help + Enable minizip binary tool. + +comment "minizip needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/package/minizip/minizip.hash b/package/minizip/minizip.hash new file mode 100644 index 00000000..b21a8490 --- /dev/null +++ b/package/minizip/minizip.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 e39a736d4f55c22fa548e68225b2e92bc22aedd9ab90d002b0c5851e3a7bdace minizip-4.0.3.tar.gz +sha256 675181c03fc1302a1c8554c00f7be9bb420c5dbc9dcc2013433cec144413de03 LICENSE diff --git a/package/minizip/minizip.mk b/package/minizip/minizip.mk new file mode 100644 index 00000000..819b33b7 --- /dev/null +++ b/package/minizip/minizip.mk @@ -0,0 +1,75 @@ +################################################################################ +# +# minizip +# +################################################################################ + +MINIZIP_VERSION = 4.0.3 +MINIZIP_SITE = $(call github,zlib-ng,minizip-ng,$(MINIZIP_VERSION)) +MINIZIP_DEPENDENCIES = host-pkgconf +MINIZIP_INSTALL_STAGING = YES +MINIZIP_CONF_OPTS = \ + $(if $(BR2_PACKAGE_MINIZIP_DEMOS),-DMZ_BUILD_TEST=ON) \ + -DMZ_COMPAT=OFF \ + -DMZ_FETCH_LIBS=OFF +MINIZIP_LICENSE = Zlib +MINIZIP_LICENSE_FILES = LICENSE +MINIZIP_CPE_ID_VENDOR = zlib-ng +MINIZIP_CPE_ID_PRODUCT = minizip-ng + +ifeq ($(BR2_PACKAGE_BZIP2),y) +MINIZIP_DEPENDENCIES += bzip2 +MINIZIP_CONF_OPTS += -DMZ_BZIP2=ON +else +MINIZIP_CONF_OPTS += -DMZ_BZIP2=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +MINIZIP_DEPENDENCIES += libiconv +MINIZIP_CONF_OPTS += -DMZ_ICONV=ON +else +MINIZIP_CONF_OPTS += -DMZ_ICONV=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBBSD),y) +MINIZIP_DEPENDENCIES += libbsd +MINIZIP_CONF_OPTS += -DMZ_LIBBSD=ON +else +MINIZIP_CONF_OPTS += -DMZ_LIBBSD=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +MINIZIP_DEPENDENCIES += openssl +MINIZIP_CONF_OPTS += \ + -DMZ_OPENSSL=ON \ + -DMZ_PKCRYPT=ON \ + -DMZ_WZAES=ON +else +MINIZIP_CONF_OPTS += \ + -DMZ_OPENSSL=OFF \ + -DMZ_PKCRYPT=OFF \ + -DMZ_WZAES=OFF +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +MINIZIP_DEPENDENCIES += xz +MINIZIP_CONF_OPTS += -DMZ_LZMA=ON +else +MINIZIP_CONF_OPTS += -DMZ_LZMA=OFF +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +MINIZIP_DEPENDENCIES += zlib +MINIZIP_CONF_OPTS += -DMZ_ZLIB=ON +else +MINIZIP_CONF_OPTS += -DMZ_ZLIB=OFF +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +MINIZIP_DEPENDENCIES += zstd +MINIZIP_CONF_OPTS += -DMZ_ZSTD=ON +else +MINIZIP_CONF_OPTS += -DMZ_ZSTD=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/miraclecast/Config.in b/package/miraclecast/Config.in new file mode 100644 index 00000000..57bd57a9 --- /dev/null +++ b/package/miraclecast/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_MIRACLECAST + bool "miraclecast" + depends on BR2_PACKAGE_SYSTEMD + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_GSTREAMER1 + select BR2_PACKAGE_READLINE + help + The MiracleCast project provides software to connect external + monitors to your system via Wifi. It is compatible to the + Wifi-Display specification also known as Miracast. MiracleCast + implements the Display-Source as well as Display-Sink side. + + https://github.com/albfan/miraclecast + +comment "miraclecast needs systemd and a glibc toolchain w/ threads and wchar" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_PACKAGE_SYSTEMD diff --git a/package/miraclecast/miraclecast.hash b/package/miraclecast/miraclecast.hash new file mode 100644 index 00000000..1ec0b27f --- /dev/null +++ b/package/miraclecast/miraclecast.hash @@ -0,0 +1,6 @@ +# Locally calculated +sha256 e11440f782519663db367285dd54b53eb5feb78682dac42bd90230222de9f0fd miraclecast-c94be167c85c6ec8badd7ac79e3dea2e0b73225c.tar.gz +sha256 66bdcc8bcbd1d5ee336c4c8e8749ea538e17b0c0e22b0f705025deb1e912a6d3 COPYING +sha256 8e136a0e16783d79792e6a57a1422a40acea2e18affb5e2cecb858382f8b0a6c LICENSE_gdhcp +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 LICENSE_htable +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSE_lgpl diff --git a/package/miraclecast/miraclecast.mk b/package/miraclecast/miraclecast.mk new file mode 100644 index 00000000..f75191b2 --- /dev/null +++ b/package/miraclecast/miraclecast.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# miraclecast +# +################################################################################ + +MIRACLECAST_VERSION = c94be167c85c6ec8badd7ac79e3dea2e0b73225c +MIRACLECAST_SITE = $(call github,albfan,miraclecast,$(MIRACLECAST_VERSION)) +MIRACLECAST_LICENSE = LGPL-2.1+, GPL-2.0 (gdhcp) +MIRACLECAST_LICENSE_FILES = COPYING LICENSE_gdhcp LICENSE_htable LICENSE_lgpl +MIRACLECAST_DEPENDENCIES = host-pkgconf systemd gstreamer1 \ + readline libglib2 +# Straight out the repository, no ./configure +MIRACLECAST_AUTORECONF = YES + +define MIRACLECAST_INSTALL_DBUS_POLICY + $(INSTALL) -m 0644 -D \ + $(@D)/res/org.freedesktop.miracle.conf \ + $(TARGET_DIR)/etc/dbus-1/system.d/org.freedesktop.miracle.conf +endef +MIRACLECAST_POST_INSTALL_TARGET_HOOKS += MIRACLECAST_INSTALL_DBUS_POLICY + +$(eval $(autotools-package)) diff --git a/package/mjpegtools/Config.in b/package/mjpegtools/Config.in new file mode 100644 index 00000000..968f9e7d --- /dev/null +++ b/package/mjpegtools/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_MJPEGTOOLS + bool "mjpegtools" + depends on BR2_USE_MMU # fork + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_JPEG + help + The mjpegtools programs are a set of tools + that can do recording of videos and playback, + simple cut-and-paste editing and the MPEG + compression of audio and video under Linux. + + http://mjpeg.sourceforge.net + +config BR2_PACKAGE_MJPEGTOOLS_SIMD_SUPPORT + bool + default y if BR2_X86_CPU_HAS_MMX + default y if BR2_POWERPC_CPU_HAS_ALTIVEC + +comment "mjpegtools needs a toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/mjpegtools/mjpegtools.hash b/package/mjpegtools/mjpegtools.hash new file mode 100644 index 00000000..8d74907b --- /dev/null +++ b/package/mjpegtools/mjpegtools.hash @@ -0,0 +1,6 @@ +# From http://sourceforge.net/projects/mjpeg/files/mjpegtools/2.2.1/ +md5 168e0131c0b8a2e31df7a73eb602fc32 mjpegtools-2.2.1.tar.gz +sha1 26e980912cd06f31033964acbc4b8d1932788bfc mjpegtools-2.2.1.tar.gz +# Locally computed +sha256 b180536d7d9960b05e0023a197b00dcb100929a49aab71d19d55f4a1b210f49a mjpegtools-2.2.1.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/mjpegtools/mjpegtools.mk b/package/mjpegtools/mjpegtools.mk new file mode 100644 index 00000000..8d6c4755 --- /dev/null +++ b/package/mjpegtools/mjpegtools.mk @@ -0,0 +1,63 @@ +################################################################################ +# +# mjpegtools +# +################################################################################ + +MJPEGTOOLS_VERSION = 2.2.1 +MJPEGTOOLS_SITE = http://sourceforge.net/projects/mjpeg/files/mjpegtools/$(MJPEGTOOLS_VERSION) +MJPEGTOOLS_DEPENDENCIES = host-pkgconf jpeg +MJPEGTOOLS_INSTALL_STAGING = YES +MJPEGTOOLS_LICENSE = GPL-2.0+ +MJPEGTOOLS_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_MJPEGTOOLS_SIMD_SUPPORT),y) +MJPEGTOOLS_CONF_OPTS += --enable-simd-accel +else +MJPEGTOOLS_CONF_OPTS += --disable-simd-accel +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +MJPEGTOOLS_CONF_OPTS += --with-libpng +MJPEGTOOLS_DEPENDENCIES += libpng +else +MJPEGTOOLS_CONF_OPTS += --without-libpng +endif + +# expects X11 backend in sdl +ifeq ($(BR2_PACKAGE_SDL_X11),y) +MJPEGTOOLS_CONF_OPTS += --with-libsdl +MJPEGTOOLS_DEPENDENCIES += sdl +else +MJPEGTOOLS_CONF_OPTS += --without-libsdl +endif + +ifeq ($(BR2_PACKAGE_SDL_GFX),y) +MJPEGTOOLS_CONF_OPTS += --with-sdlgfx +MJPEGTOOLS_DEPENDENCIES += sdl_gfx +else +MJPEGTOOLS_CONF_OPTS += --without-sdlgfx +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) +MJPEGTOOLS_CONF_OPTS += --with-x +MJPEGTOOLS_DEPENDENCIES += xlib_libX11 +else +MJPEGTOOLS_CONF_OPTS += --without-x +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXXF86DGA),y) +MJPEGTOOLS_CONF_OPTS += --with-dga +MJPEGTOOLS_DEPENDENCIES += xlib_libXxf86dga +else +MJPEGTOOLS_CONF_OPTS += --without-dga +endif + +ifeq ($(BR2_PACKAGE_LIBGTK2),y) +MJPEGTOOLS_CONF_OPTS += --with-gtk +MJPEGTOOLS_DEPENDENCIES += libgtk2 +else +MJPEGTOOLS_CONF_OPTS += --without-gtk +endif + +$(eval $(autotools-package)) diff --git a/package/mjpg-streamer/0001-Export-all-symbols-of-mjpg_streamer-binary.patch b/package/mjpg-streamer/0001-Export-all-symbols-of-mjpg_streamer-binary.patch new file mode 100644 index 00000000..771ee838 --- /dev/null +++ b/package/mjpg-streamer/0001-Export-all-symbols-of-mjpg_streamer-binary.patch @@ -0,0 +1,33 @@ +From fbde1593948ae95f287b2167d0bec5b27948cc01 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 6 Aug 2024 17:04:55 +0200 +Subject: [PATCH] Export all symbols of mjpg_streamer binary + +Fixes runtime error with stripped binary + + dlopen: /usr/lib/mjpg-streamer/input_uvc.so: undefined symbol: resolutions_help + +Source: http://lists.busybox.net/pipermail/buildroot/2024-August/759732.html + +Upstream: https://github.com/jacksonliam/mjpg-streamer/pull/401 + +Signed-off-by: Bernd Kuhls +--- + mjpg-streamer-experimental/CMakeLists.txt | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/mjpg-streamer-experimental/CMakeLists.txt b/mjpg-streamer-experimental/CMakeLists.txt +index cf26620..3ff12cd 100644 +--- a/mjpg-streamer-experimental/CMakeLists.txt ++++ b/mjpg-streamer-experimental/CMakeLists.txt +@@ -92,6 +92,7 @@ set (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) + add_executable(mjpg_streamer mjpg_streamer.c + utils.c) + ++set_property(TARGET mjpg_streamer PROPERTY ENABLE_EXPORTS ON) + target_link_libraries(mjpg_streamer pthread dl) + install(TARGETS mjpg_streamer DESTINATION bin) + +-- +2.39.2 + diff --git a/package/mjpg-streamer/Config.in b/package/mjpg-streamer/Config.in new file mode 100644 index 00000000..59f4208c --- /dev/null +++ b/package/mjpg-streamer/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_MJPG_STREAMER + bool "mjpg-streamer" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 # V4L2_EVENT_SOURCE_CHANGE + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # plugins need dlopen() + select BR2_PACKAGE_JPEG + help + MJPG-streamer takes JPGs from Linux-UVC compatible webcams, + filesystem or other input plugins and streams them as + M-JPEG via HTTP to webbrowsers, VLC and other software. + + https://github.com/jacksonliam/mjpg-streamer + +comment "mjpg-streamer needs a toolchain w/ threads, headers >= 3.16, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 || BR2_STATIC_LIBS diff --git a/package/mjpg-streamer/mjpg-streamer.hash b/package/mjpg-streamer/mjpg-streamer.hash new file mode 100644 index 00000000..164c9b21 --- /dev/null +++ b/package/mjpg-streamer/mjpg-streamer.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 5b427b07c03c2c0468cc782daf1510d315141170246828fcbb7c07f927879973 mjpg-streamer-5a6e0a2db163e6ae9461552b59079870d0959340.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 mjpg-streamer-experimental/LICENSE diff --git a/package/mjpg-streamer/mjpg-streamer.mk b/package/mjpg-streamer/mjpg-streamer.mk new file mode 100644 index 00000000..46f3f501 --- /dev/null +++ b/package/mjpg-streamer/mjpg-streamer.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# mjpg-streamer +# +################################################################################ + +MJPG_STREAMER_VERSION = 5a6e0a2db163e6ae9461552b59079870d0959340 +MJPG_STREAMER_SITE = $(call github,jacksonliam,mjpg-streamer,$(MJPG_STREAMER_VERSION)) +MJPG_STREAMER_SUBDIR = mjpg-streamer-experimental +MJPG_STREAMER_LICENSE = GPL-2.0+ +MJPG_STREAMER_LICENSE_FILES = $(MJPG_STREAMER_SUBDIR)/LICENSE +MJPG_STREAMER_DEPENDENCIES = jpeg + +ifeq ($(BR2_PACKAGE_LIBGPHOTO2),y) +MJPG_STREAMER_CONF_OPTS += -DPLUGIN_INPUT_PTP2=ON +MJPG_STREAMER_DEPENDENCIES += host-pkgconf libgphoto2 +else +MJPG_STREAMER_CONF_OPTS += -DPLUGIN_INPUT_PTP2=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBV4L),y) +MJPG_STREAMER_DEPENDENCIES += libv4l +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_LIB_HIGHGUI)$(BR2_PACKAGE_OPENCV3_LIB_IMGPROC)$(BR2_PACKAGE_OPENCV3_LIB_VIDEOIO),yyy) +MJPG_STREAMER_CONF_OPTS += \ + -DPLUGIN_INPUT_OPENCV=ON \ + -DPLUGIN_CVFILTER_CPP=OFF \ + -DPLUGIN_CVFILTER_PY=OFF +MJPG_STREAMER_DEPENDENCIES += host-pkgconf opencv3 +else +MJPG_STREAMER_CONF_OPTS += -DPLUGIN_INPUT_OPENCV=OFF +endif + +ifeq ($(BR2_PACKAGE_PROTOBUF_C)$(BR2_PACKAGE_ZEROMQ),yy) +MJPG_STREAMER_CONF_OPTS += -DPLUGIN_OUTPUT_ZMQSERVER=ON +MJPG_STREAMER_DEPENDENCIES += host-pkgconf protobuf-c zeromq +else +MJPG_STREAMER_CONF_OPTS += -DPLUGIN_OUTPUT_ZMQSERVER=OFF +endif + +ifeq ($(BR2_PACKAGE_SDL),y) +MJPG_STREAMER_CONF_OPTS += -DPLUGIN_OUTPUT_VIEWER=ON +MJPG_STREAMER_DEPENDENCIES += host-pkgconf sdl +else +MJPG_STREAMER_CONF_OPTS += -DPLUGIN_OUTPUT_VIEWER=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/mkpasswd/Config.in.host b/package/mkpasswd/Config.in.host new file mode 100644 index 00000000..93774bdf --- /dev/null +++ b/package/mkpasswd/Config.in.host @@ -0,0 +1,2 @@ +config BR2_PACKAGE_HOST_MKPASSWD + bool "host mkpasswd" diff --git a/package/mkpasswd/config.h b/package/mkpasswd/config.h new file mode 100644 index 00000000..f3450741 --- /dev/null +++ b/package/mkpasswd/config.h @@ -0,0 +1,95 @@ +/* Program version */ +#define VERSION "5.0.26" + +/* Configurable features */ + +/* Always hide legal disclaimers */ +#undef ALWAYS_HIDE_DISCL + +/* Default server */ +#define DEFAULTSERVER "whois.arin.net" + +/* Configuration file */ +/* +#define CONFIG_FILE "/etc/whois.conf" +*/ + + +/* autoconf in cpp macros */ +#ifdef linux +# define ENABLE_NLS +#endif + +#ifdef __FreeBSD__ +/* which versions? */ +# define HAVE_GETOPT_LONG +# define HAVE_GETADDRINFO +# define ENABLE_NLS +# ifndef LOCALEDIR +# define LOCALEDIR "/usr/local/share/locale" +# endif +#endif + +/* needs unistd.h */ +#if defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 200112L +# define HAVE_GETADDRINFO +# define HAVE_REGEXEC +#endif + +#if defined __APPLE__ && defined __MACH__ +# define HAVE_GETOPT_LONG +# define HAVE_GETADDRINFO +#endif + +#if defined __GLIBC__ +# define HAVE_GETOPT_LONG +# if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 +# define HAVE_GETADDRINFO +# endif +# if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 7 +# define HAVE_SHA_CRYPT +# endif +#endif + +/* Unknown versions of Solaris */ +#if defined __SVR4 && defined __sun +# define HAVE_SHA_CRYPT +# define HAVE_SOLARIS_CRYPT_GENSALT +#endif + +/* FIXME: which systems lack this? */ +#define HAVE_GETTIMEOFDAY +/* FIXME: disabled because it does not parse addresses with a netmask length. + * The code using it needs to be either fixed or removed. +#define HAVE_INET_PTON +*/ + +/* + * Please send patches to correctly ignore old releases which lack a RNG + * and add more systems which have one. + */ +#ifdef RANDOM_DEVICE +#elif defined __GLIBC__ \ + || defined __FreeBSD__ || defined __NetBSD__ || defined __OpenBSD__ \ + /* AIX >= 5.2? */ \ + || defined _AIX52 \ + /* HP-UX >= B.11.11.09? */ \ + || defined __hpux \ + /* OS X: */ \ + || (defined __APPLE__ && defined __MACH__) \ + /* Solaris >= 9 (this is >= 7): */ \ + || (defined __SVR4 && defined __sun && defined SUSv2) \ + /* Tru64 UNIX >= 5.1B? */ \ + || defined __osf +# define RANDOM_DEVICE "/dev/urandom" +#endif + +#ifdef ENABLE_NLS +# ifndef NLS_CAT_NAME +# define NLS_CAT_NAME "whois" +# endif +# ifndef LOCALEDIR +# define LOCALEDIR "/usr/share/locale" +# endif +#endif + diff --git a/package/mkpasswd/mkpasswd.c b/package/mkpasswd/mkpasswd.c new file mode 100644 index 00000000..ae859406 --- /dev/null +++ b/package/mkpasswd/mkpasswd.c @@ -0,0 +1,466 @@ +/* + * Copyright (C) 2001-2008 Marco d'Itri + * + * 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 + */ + +/* for crypt, snprintf and strcasecmp */ +#define _XOPEN_SOURCE +/* + * _BSD_SOURCE is deprecated as of GLIBC 2.20; _DEFAULT_SOURCE should be used + * instead. (https://lwn.net/Articles/611162/) + */ +#define _DEFAULT_SOURCE +#define _BSD_SOURCE + +/* System library */ +#include +#include +#include +#include "config.h" +#ifdef HAVE_GETOPT_LONG +#include +#endif +#include +#include +#include +#include +#ifdef HAVE_XCRYPT +#include +#include +#endif +#ifdef HAVE_LINUX_CRYPT_GENSALT +#define _OW_SOURCE +#include +#endif +#ifdef HAVE_GETTIMEOFDAY +#include +#endif + +/* glibc without crypt() */ +#ifndef _XOPEN_CRYPT +#include +#endif + +/* Application-specific */ +#include "utils.h" + +/* Global variables */ +#ifdef HAVE_GETOPT_LONG +static const struct option longopts[] = { + {"method", optional_argument, NULL, 'm'}, + /* for backward compatibility with versions < 4.7.25 (< 20080321): */ + {"hash", optional_argument, NULL, 'H'}, + {"help", no_argument, NULL, 'h'}, + {"password-fd", required_argument, NULL, 'P'}, + {"stdin", no_argument, NULL, 's'}, + {"salt", required_argument, NULL, 'S'}, + {"rounds", required_argument, NULL, 'R'}, + {"version", no_argument, NULL, 'V'}, + {NULL, 0, NULL, 0 } +}; +#else +extern char *optarg; +extern int optind; +#endif + +static const char valid_salts[] = "abcdefghijklmnopqrstuvwxyz" +"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./"; + +struct crypt_method { + const char *method; /* short name used by the command line option */ + const char *prefix; /* salt prefix */ + const unsigned int minlen; /* minimum salt length */ + const unsigned int maxlen; /* maximum salt length */ + const unsigned int rounds; /* supports a variable number of rounds */ + const char *desc; /* long description for the methods list */ +}; + +static const struct crypt_method methods[] = { + /* method prefix minlen, maxlen rounds description */ + { "des", "", 2, 2, 0, + N_("standard 56 bit DES-based crypt(3)") }, + { "md5", "$1$", 8, 8, 0, "MD5" }, +#if defined OpenBSD || defined FreeBSD || (defined __SVR4 && defined __sun) + { "bf", "$2a$", 22, 22, 1, "Blowfish" }, +#endif +#if defined HAVE_LINUX_CRYPT_GENSALT + { "bf", "$2a$", 22, 22, 1, "Blowfish, system-specific on 8-bit chars" }, + /* algorithm 2y fixes CVE-2011-2483 */ + { "bfy", "$2y$", 22, 22, 1, "Blowfish, correct handling of 8-bit chars" }, +#endif +#if defined FreeBSD + { "nt", "$3$", 0, 0, 0, "NT-Hash" }, +#endif +#if defined HAVE_SHA_CRYPT + /* http://people.redhat.com/drepper/SHA-crypt.txt */ + { "sha-256", "$5$", 8, 16, 1, "SHA-256" }, + { "sha-512", "$6$", 8, 16, 1, "SHA-512" }, +#endif + /* http://www.crypticide.com/dropsafe/article/1389 */ + /* + * Actually the maximum salt length is arbitrary, but Solaris by default + * always uses 8 characters: + * http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/ \ + * usr/src/lib/crypt_modules/sunmd5/sunmd5.c#crypt_gensalt_impl + */ +#if defined __SVR4 && defined __sun + { "sunmd5", "$md5$", 8, 8, 1, "SunMD5" }, +#endif + { NULL, NULL, 0, 0, 0, NULL } +}; + +void generate_salt(char *const buf, const unsigned int len); +void *get_random_bytes(const int len); +void display_help(int error); +void display_version(void); +void display_methods(void); + +int main(int argc, char *argv[]) +{ + int ch, i; + int password_fd = -1; + unsigned int salt_minlen = 0; + unsigned int salt_maxlen = 0; + unsigned int rounds_support = 0; + const char *salt_prefix = NULL; + const char *salt_arg = NULL; + unsigned int rounds = 0; + char *salt = NULL; + char rounds_str[30]; + char *password = NULL; + +#ifdef ENABLE_NLS + setlocale(LC_ALL, ""); + bindtextdomain(NLS_CAT_NAME, LOCALEDIR); + textdomain(NLS_CAT_NAME); +#endif + + /* prepend options from environment */ + argv = merge_args(getenv("MKPASSWD_OPTIONS"), argv, &argc); + + while ((ch = GETOPT_LONGISH(argc, argv, "hH:m:5P:R:sS:V", longopts, 0)) + > 0) { + switch (ch) { + case '5': + optarg = (char *) "md5"; + /* fall through */ + case 'm': + case 'H': + if (!optarg || strcaseeq("help", optarg)) { + display_methods(); + exit(0); + } + for (i = 0; methods[i].method != NULL; i++) + if (strcaseeq(methods[i].method, optarg)) { + salt_prefix = methods[i].prefix; + salt_minlen = methods[i].minlen; + salt_maxlen = methods[i].maxlen; + rounds_support = methods[i].rounds; + break; + } + if (!salt_prefix) { + fprintf(stderr, _("Invalid method '%s'.\n"), optarg); + exit(1); + } + break; + case 'P': + { + char *p; + password_fd = strtol(optarg, &p, 10); + if (p == NULL || *p != '\0' || password_fd < 0) { + fprintf(stderr, _("Invalid number '%s'.\n"), optarg); + exit(1); + } + } + break; + case 'R': + { + char *p; + rounds = strtol(optarg, &p, 10); + if (p == NULL || *p != '\0' || rounds < 0) { + fprintf(stderr, _("Invalid number '%s'.\n"), optarg); + exit(1); + } + } + break; + case 's': + password_fd = 0; + break; + case 'S': + salt_arg = optarg; + break; + case 'V': + display_version(); + exit(0); + case 'h': + display_help(EXIT_SUCCESS); + default: + fprintf(stderr, _("Try '%s --help' for more information.\n"), + argv[0]); + exit(1); + } + } + argc -= optind; + argv += optind; + + if (argc == 2 && !salt_arg) { + password = argv[0]; + salt_arg = argv[1]; + } else if (argc == 1) { + password = argv[0]; + } else if (argc == 0) { + } else { + display_help(EXIT_FAILURE); + } + + /* default: DES password */ + if (!salt_prefix) { + salt_minlen = methods[0].minlen; + salt_maxlen = methods[0].maxlen; + salt_prefix = methods[0].prefix; + } + + if (streq(salt_prefix, "$2a$") || streq(salt_prefix, "$2y$")) { + /* OpenBSD Blowfish and derivatives */ + if (rounds <= 5) + rounds = 5; + /* actually for 2a/2y it is the logarithm of the number of rounds */ + snprintf(rounds_str, sizeof(rounds_str), "%02u$", rounds); + } else if (rounds_support && rounds) + snprintf(rounds_str, sizeof(rounds_str), "rounds=%u$", rounds); + else + rounds_str[0] = '\0'; + + if (salt_arg) { + unsigned int c = strlen(salt_arg); + if (c < salt_minlen || c > salt_maxlen) { + if (salt_minlen == salt_maxlen) + fprintf(stderr, ngettext( + "Wrong salt length: %d byte when %d expected.\n", + "Wrong salt length: %d bytes when %d expected.\n", c), + c, salt_maxlen); + else + fprintf(stderr, ngettext( + "Wrong salt length: %d byte when %d <= n <= %d" + " expected.\n", + "Wrong salt length: %d bytes when %d <= n <= %d" + " expected.\n", c), + c, salt_minlen, salt_maxlen); + exit(1); + } + while (c-- > 0) { + if (strchr(valid_salts, salt_arg[c]) == NULL) { + fprintf(stderr, _("Illegal salt character '%c'.\n"), + salt_arg[c]); + exit(1); + } + } + + salt = NOFAIL(malloc(strlen(salt_prefix) + strlen(rounds_str) + + strlen(salt_arg) + 1)); + *salt = '\0'; + strcat(salt, salt_prefix); + strcat(salt, rounds_str); + strcat(salt, salt_arg); + } else { +#ifdef HAVE_SOLARIS_CRYPT_GENSALT +#error "This code path is untested on Solaris. Please send a patch." + salt = crypt_gensalt(salt_prefix, NULL); + if (!salt) + perror(stderr, "crypt_gensalt"); +#elif defined HAVE_LINUX_CRYPT_GENSALT + void *entropy = get_random_bytes(64); + + salt = crypt_gensalt(salt_prefix, rounds, entropy, 64); + if (!salt) { + fprintf(stderr, "crypt_gensalt failed.\n"); + exit(2); + } + free(entropy); +#else + unsigned int salt_len = salt_maxlen; + + if (salt_minlen != salt_maxlen) { /* salt length can vary */ + srand(time(NULL) + getpid()); + salt_len = rand() % (salt_maxlen - salt_minlen + 1) + salt_minlen; + } + + salt = NOFAIL(malloc(strlen(salt_prefix) + strlen(rounds_str) + + salt_len + 1)); + *salt = '\0'; + strcat(salt, salt_prefix); + strcat(salt, rounds_str); + generate_salt(salt + strlen(salt), salt_len); +#endif + } + + if (password) { + } else if (password_fd != -1) { + FILE *fp; + char *p; + + if (isatty(password_fd)) + fprintf(stderr, _("Password: ")); + password = NOFAIL(malloc(128)); + fp = fdopen(password_fd, "r"); + if (!fp) { + perror("fdopen"); + exit(2); + } + if (!fgets(password, 128, fp)) { + perror("fgets"); + exit(2); + } + + p = strpbrk(password, "\n\r"); + if (p) + *p = '\0'; + } else { + password = getpass(_("Password: ")); + if (!password) { + perror("getpass"); + exit(2); + } + } + + { + const char *result; + result = crypt(password, salt); + /* xcrypt returns "*0" on errors */ + if (!result || result[0] == '*') { + fprintf(stderr, "crypt failed.\n"); + exit(2); + } + /* yes, using strlen(salt_prefix) on salt. It's not + * documented whether crypt_gensalt may change the prefix */ + if (!strneq(result, salt, strlen(salt_prefix))) { + fprintf(stderr, _("Method not supported by crypt(3).\n")); + exit(2); + } + printf("%s\n", result); + } + + exit(0); +} + +#ifdef RANDOM_DEVICE +void* get_random_bytes(const int count) +{ + char *buf; + int fd; + + buf = NOFAIL(malloc(count)); + fd = open(RANDOM_DEVICE, O_RDONLY); + if (fd < 0) { + perror("open(" RANDOM_DEVICE ")"); + exit(2); + } + if (read(fd, buf, count) != count) { + if (count < 0) + perror("read(" RANDOM_DEVICE ")"); + else + fprintf(stderr, "Short read of %s.\n", RANDOM_DEVICE); + exit(2); + } + close(fd); + + return buf; +} +#endif + +#ifdef RANDOM_DEVICE + +void generate_salt(char *const buf, const unsigned int len) +{ + unsigned int i; + + unsigned char *entropy = get_random_bytes(len * sizeof(unsigned char)); + for (i = 0; i < len; i++) + buf[i] = valid_salts[entropy[i] % (sizeof valid_salts - 1)]; + buf[i] = '\0'; +} + +#else /* RANDOM_DEVICE */ + +void generate_salt(char *const buf, const unsigned int len) +{ + unsigned int i; + +# ifdef HAVE_GETTIMEOFDAY + struct timeval tv; + + gettimeofday(&tv, NULL); + srand(tv.tv_sec ^ tv.tv_usec); + +# else /* HAVE_GETTIMEOFDAY */ +# warning "This system lacks a strong enough random numbers generator!" + + /* + * The possible values of time over one year are 31536000, which is + * two orders of magnitude less than the allowed entropy range (2^32). + */ + srand(time(NULL) + getpid()); + +# endif /* HAVE_GETTIMEOFDAY */ + + for (i = 0; i < len; i++) + buf[i] = valid_salts[rand() % (sizeof valid_salts - 1)]; + buf[i] = '\0'; +} + +#endif /* RANDOM_DEVICE */ + +void display_help(int error) +{ + fprintf((EXIT_SUCCESS == error) ? stdout : stderr, + _("Usage: mkpasswd [OPTIONS]... [PASSWORD [SALT]]\n" + "Crypts the PASSWORD using crypt(3).\n\n")); + fprintf(stderr, _( +" -m, --method=TYPE select method TYPE\n" +" -5 like --method=md5\n" +" -S, --salt=SALT use the specified SALT\n" +" -R, --rounds=NUMBER use the specified NUMBER of rounds\n" +" -P, --password-fd=NUM read the password from file descriptor NUM\n" +" instead of /dev/tty\n" +" -s, --stdin like --password-fd=0\n" +" -h, --help display this help and exit\n" +" -V, --version output version information and exit\n" +"\n" +"If PASSWORD is missing then it is asked interactively.\n" +"If no SALT is specified, a random one is generated.\n" +"If TYPE is 'help', available methods are printed.\n" +"\n" +"Report bugs to %s.\n"), ""); + exit(error); +} + +void display_version(void) +{ + printf("mkpasswd %s\n\n", VERSION); + puts("Copyright (C) 2001-2008 Marco d'Itri\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."); +} + +void display_methods(void) +{ + unsigned int i; + + printf(_("Available methods:\n")); + for (i = 0; methods[i].method != NULL; i++) + printf("%s\t%s\n", methods[i].method, methods[i].desc); +} + diff --git a/package/mkpasswd/mkpasswd.mk b/package/mkpasswd/mkpasswd.mk new file mode 100644 index 00000000..c1117ef6 --- /dev/null +++ b/package/mkpasswd/mkpasswd.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# mkpasswd +# +################################################################################ + +# source included in buildroot, taken from +# https://github.com/rfc1036/whois/blob/master/ +# at revision 5a0f08500fa51608b6d3b73ee338be38c692eadb +HOST_MKPASSWD_LICENSE = GPL-2.0+ + +define HOST_MKPASSWD_EXTRACT_CMDS + cp $(HOST_MKPASSWD_PKGDIR)/*.c $(HOST_MKPASSWD_PKGDIR)/*.h $(@D) +endef + +define HOST_MKPASSWD_BUILD_CMDS + $(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS) \ + $(@D)/mkpasswd.c $(@D)/utils.c \ + -o $(@D)/mkpasswd -lcrypt +endef + +define HOST_MKPASSWD_INSTALL_CMDS + $(INSTALL) -D -m 755 $(@D)/mkpasswd $(HOST_DIR)/bin/mkpasswd +endef + +$(eval $(host-generic-package)) + +MKPASSWD = $(HOST_DIR)/bin/mkpasswd diff --git a/package/mkpasswd/utils.c b/package/mkpasswd/utils.c new file mode 100644 index 00000000..254bf2ac --- /dev/null +++ b/package/mkpasswd/utils.c @@ -0,0 +1,96 @@ +/* + * Copyright 1999-2008 by Marco d'Itri . + * + * do_nofail and merge_args come from the module-init-tools package. + * Copyright 2001 by Rusty Russell. + * Copyright 2002, 2003 by Rusty Russell, IBM Corporation. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +/* for strdup */ +#define _XOPEN_SOURCE 500 + +/* System library */ +#include +#include +#include +#include +#include + +/* Application-specific */ +#include "utils.h" + +void *do_nofail(void *ptr, const char *file, const int line) +{ + if (ptr) + return ptr; + + err_quit("Memory allocation failure at %s:%d.", file, line); +} + +/* Prepend options from a string. */ +char **merge_args(char *args, char *argv[], int *argc) +{ + char *arg, *argstring; + char **newargs = NULL; + unsigned int i, num_env = 0; + + if (!args) + return argv; + + argstring = NOFAIL(strdup(args)); + for (arg = strtok(argstring, " "); arg; arg = strtok(NULL, " ")) { + num_env++; + newargs = NOFAIL(realloc(newargs, + sizeof(newargs[0]) * (num_env + *argc + 1))); + newargs[num_env] = arg; + } + + if (!newargs) + return argv; + + /* Append commandline args */ + newargs[0] = argv[0]; + for (i = 1; i <= *argc; i++) + newargs[num_env + i] = argv[i]; + + *argc += num_env; + return newargs; +} + +/* Error routines */ +void err_sys(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + fprintf(stderr, ": %s\n", strerror(errno)); + va_end(ap); + exit(2); +} + +void err_quit(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + fputs("\n", stderr); + va_end(ap); + exit(2); +} + diff --git a/package/mkpasswd/utils.h b/package/mkpasswd/utils.h new file mode 100644 index 00000000..0f226aee --- /dev/null +++ b/package/mkpasswd/utils.h @@ -0,0 +1,56 @@ +#ifndef WHOIS_UTILS_H +#define WHOIS_UTILS_H + +/* Convenience macros */ +#define streq(a, b) (strcmp(a, b) == 0) +#define strcaseeq(a, b) (strcasecmp(a, b) == 0) +#define strneq(a, b, n) (strncmp(a, b, n) == 0) +#define strncaseeq(a, b, n) (strncasecmp(a, b, n) == 0) + +#define NOFAIL(ptr) do_nofail((ptr), __FILE__, __LINE__) + +/* Portability macros */ +#ifdef __GNUC__ +# define NORETURN __attribute__((noreturn)) +#else +# define NORETURN +#endif + +#ifndef AI_IDN +# define AI_IDN 0 +#endif + +#ifndef AI_ADDRCONFIG +# define AI_ADDRCONFIG 0 +#endif + +#ifdef HAVE_GETOPT_LONG +# define GETOPT_LONGISH(c, v, o, l, i) getopt_long(c, v, o, l, i) +#else +# define GETOPT_LONGISH(c, v, o, l, i) getopt(c, v, o) +#endif + +#ifdef ENABLE_NLS +# include +# include +# define _(a) (gettext(a)) +# ifdef gettext_noop +# define N_(a) gettext_noop(a) +# else +# define N_(a) (a) +# endif +#else +# define _(a) (a) +# define N_(a) (a) +# define ngettext(a, b, c) ((c==1) ? (a) : (b)) +#endif + + +/* Prototypes */ +void *do_nofail(void *ptr, const char *file, const int line); +char **merge_args(char *args, char *argv[], int *argc); + +void err_quit(const char *fmt, ...) NORETURN; +void err_sys(const char *fmt, ...) NORETURN; + +#endif diff --git a/package/mkpimage/mkpimage.c b/package/mkpimage/mkpimage.c new file mode 100644 index 00000000..d7fe1b1b --- /dev/null +++ b/package/mkpimage/mkpimage.c @@ -0,0 +1,376 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define VALIDATION_WORD 0x31305341 + +#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; + +struct socfpga_header { + uint8_t validation_word[4]; + uint8_t version; + uint8_t flags; + 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[] = { + 0xea00007e, /* b 0x200 */ + 0xeafffffe, /* 1: b 1b */ + 0xeafffffe, /* 1: b 1b */ + 0xeafffffe, /* 1: b 1b */ + 0xeafffffe, /* 1: b 1b */ + 0xeafffffe, /* 1: b 1b */ + 0xeafffffe, /* 1: b 1b */ + 0xeafffffe, /* 1: b 1b */ + 0x65726162, /* 'bare' */ + 0x00786f62, /* 'box\0' */ + 0x00000000, /* padding */ + 0x00000000, /* padding */ + 0x00000000, /* padding */ + 0x00000000, /* padding */ + 0x00000000, /* padding */ + 0x00000000, /* padding */ + 0x00000000, /* socfpga header */ + 0x00000000, /* socfpga header */ + 0x00000000, /* socfpga header */ + 0xea00006b, /* entry. b 0x200 (offset may be adjusted) */ +}; + +static int read_full(int fd, void *buf, size_t size) +{ + size_t insize = size; + int now; + int total = 0; + + while (size) { + now = read(fd, buf, size); + if (now == 0) + return total; + if (now < 0) + return now; + total += now; + size -= now; + buf += now; + } + + return insize; +} + +static int write_full(int fd, void *buf, size_t size) +{ + size_t insize = size; + int now; + + while (size) { + now = write(fd, buf, size); + if (now <= 0) + return now; + size -= now; + buf += now; + } + + return insize; +} + +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, + 0x4593e01e, 0x4152fda9, 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75, + 0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, + 0x709f7b7a, 0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039, + 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58, 0xbaea46ef, + 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d, + 0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, 0xc7361b4c, 0xc3f706fb, + 0xceb42022, 0xca753d95, 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, + 0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0, + 0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072, + 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x018aeb13, 0x054bf6a4, + 0x0808d07d, 0x0cc9cdca, 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde, + 0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08, + 0x571d7dd1, 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba, + 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b, 0xbb60adfc, + 0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6, + 0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, 0xe0b41de7, 0xe4750050, + 0xe9362689, 0xedf73b3e, 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, + 0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34, + 0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637, + 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, 0x4f040d56, 0x4bc510e1, + 0x46863638, 0x42472b8f, 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53, + 0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, + 0x3f9b762c, 0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff, + 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e, 0xf5ee4bb9, + 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b, + 0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, + 0xcda1f604, 0xc960ebb3, 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, + 0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71, + 0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3, + 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, 0x4e8ee645, 0x4a4ffbf2, + 0x470cdd2b, 0x43cdc09c, 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8, + 0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e, + 0x18197087, 0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec, + 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d, 0x2056cd3a, + 0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0, + 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, 0xe3a1cbc1, 0xe760d676, + 0xea23f0af, 0xeee2ed18, 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, + 0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662, + 0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668, + 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4 +}; + +uint32_t crc32(uint32_t crc, void *_buf, int length) +{ + uint8_t *buf = _buf; + + while (length--) + crc = crc << 8 ^ crc_table[(crc >> 24 ^ *(buf++)) & 0xff]; + + return crc; +} + +/* 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; + void *entry; + uint8_t *bufp, *sumendp; + uint32_t *crc; + unsigned checksum; + + 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 = version; + header->flags = 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 (bufp = (uint8_t*)header; bufp < sumendp; bufp++) + checksum += *bufp; + + 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); + + *crc = crc32(0xffffffff, buf, size - sizeof(uint32_t)); + *crc ^= 0xffffffff; + + return 0; +} + +static void usage(const char *prgname) +{ + fprintf(stderr, "usage: %s [-hb] [-v version] -o \n", prgname); +} + +int main(int argc, char *argv[]) +{ + int opt, ret; + const char *outfile = NULL, *infile; + struct stat s; + void *buf; + int fd; + int max_image_size, min_image_size = 80; + int addsize = 0, pad; + unsigned int version = 0; + + 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; + addsize = 512; + break; + case 'h': + usage(argv[0]); + exit(0); + case 'o': + 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 || !outfile) { + usage(argv[0]); + exit(1); + } + infile = argv[optind]; + + ret = stat(infile, &s); + if (ret) { + perror("stat"); + exit(1); + } + + if (s.st_size < min_image_size) { + fprintf(stderr, "input image too small. Minimum is %d bytes\n", + min_image_size); + exit(1); + } + + if (s.st_size > max_image_size) { + fprintf(stderr, "input image too big. Maximum is %d bytes, got %ld bytes\n", + max_image_size, s.st_size); + exit(1); + } + + fd = open(infile, O_RDONLY); + if (fd == -1) { + perror("open infile"); + exit(1); + } + + pad = s.st_size & 0x3; + if (pad) + pad = 4 - pad; + + buf = calloc(s.st_size + 4 + addsize + pad, 1); + if (!buf) { + perror("malloc"); + exit(1); + } + + ret = read_full(fd, buf + addsize, s.st_size); + if (ret < 0) { + perror("read infile"); + exit(1); + } + + close(fd); + + if (add_barebox_header) { + memcpy(buf, bb_header, sizeof(bb_header)); + } + + ret = add_socfpga_header(buf, s.st_size + 4 + addsize + pad, addsize, + version); + if (ret) + exit(1); + + fd = open(outfile, O_WRONLY | O_CREAT | O_TRUNC, 0644); + if (fd < 0) { + perror("open outfile"); + exit(1); + } + + ret = write_full(fd, buf, s.st_size + 4 + addsize + pad); + if (ret < 0) { + perror("write outfile"); + exit(1); + } + + exit(0); +} diff --git a/package/mkpimage/mkpimage.mk b/package/mkpimage/mkpimage.mk new file mode 100644 index 00000000..71500f00 --- /dev/null +++ b/package/mkpimage/mkpimage.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# mkpimage +# +################################################################################ + +HOST_MKPIMAGE_LICENSE = GPL-2.0 + +# 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_EXTRACT_CMDS + cp $(HOST_MKPIMAGE_PKGDIR)/mkpimage.c $(@D) +endef + +define HOST_MKPIMAGE_BUILD_CMDS + $(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS) \ + $(@D)/mkpimage.c -o $(@D)/mkpimage +endef + +define HOST_MKPIMAGE_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/mkpimage $(HOST_DIR)/bin/mkpimage +endef + +$(eval $(host-generic-package)) diff --git a/package/mksh/Config.in b/package/mksh/Config.in new file mode 100644 index 00000000..94f0d78a --- /dev/null +++ b/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://www.mirbsd.org/mksh.htm diff --git a/package/mksh/mksh.hash b/package/mksh/mksh.hash new file mode 100644 index 00000000..d81deccb --- /dev/null +++ b/package/mksh/mksh.hash @@ -0,0 +1,4 @@ +# From http://www.mirbsd.org/mksh.htm#build +sha256 77ae1665a337f1c48c61d6b961db3e52119b38e58884d1c89684af31f87bc506 mksh-R59c.tgz +# Locally computed +sha256 abf44a61ec777c98f8ae7e08e4fe25fe258e0c470215e2eeb22816f6bae72c80 mksh.1 diff --git a/package/mksh/mksh.mk b/package/mksh/mksh.mk new file mode 100644 index 00000000..c4818e86 --- /dev/null +++ b/package/mksh/mksh.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# mksh +# +################################################################################ + +MKSH_VERSION = 59c +MKSH_SOURCE = mksh-R$(MKSH_VERSION).tgz +MKSH_SITE = http://www.mirbsd.org/MirOS/dist/mir/mksh +# For MirOS License see http://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 + +# Add /bin/mksh to /etc/shells otherwise some login tools like dropbear +# can reject the user connection. See man shells. +define MKSH_ADD_MKSH_TO_SHELLS + grep -qsE '^/bin/mksh$$' $(TARGET_DIR)/etc/shells \ + || echo "/bin/mksh" >> $(TARGET_DIR)/etc/shells +endef +MKSH_TARGET_FINALIZE_HOOKS += MKSH_ADD_MKSH_TO_SHELLS + +$(eval $(generic-package)) diff --git a/package/mmc-utils/Config.in b/package/mmc-utils/Config.in new file mode 100644 index 00000000..d938b5de --- /dev/null +++ b/package/mmc-utils/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_MMC_UTILS + bool "mmc-utils" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4 + help + MMC utils + + https://git.kernel.org/pub/scm/utils/mmc/mmc-utils.git + +if BR2_PACKAGE_MMC_UTILS + +config BR2_PACKAGE_MMC_UTILS_ENABLE_DANGEROUS_COMMANDS + bool "Enable dangerous commands" + help + Enable support for dangerous commands in mmc-utils. mmc-utils + considers turning on permanent write protection on a device a + "dangerous command" and doesn't offer it by default. + +endif + +comment "mmc-utils needs a toolchain w/ headers >= 4.4" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4 diff --git a/package/mmc-utils/mmc-utils.hash b/package/mmc-utils/mmc-utils.hash new file mode 100644 index 00000000..fec7533d --- /dev/null +++ b/package/mmc-utils/mmc-utils.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 4547b5f0f8a43857dcfb516b8b9c987d07febfecbe3d27987f43064db46ca8f9 mmc-utils-e1281d4de9166b7254ba30bb58f9191fc2c9e7fb-git4.tar.gz +sha256 4207d81122a02555f78c5a11b61c83a331ee03dc933e1ef9dd932ef9b434d12d README diff --git a/package/mmc-utils/mmc-utils.mk b/package/mmc-utils/mmc-utils.mk new file mode 100644 index 00000000..48c347d8 --- /dev/null +++ b/package/mmc-utils/mmc-utils.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# mmc-utils +# +################################################################################ + +MMC_UTILS_VERSION = e1281d4de9166b7254ba30bb58f9191fc2c9e7fb +MMC_UTILS_SITE = https://git.kernel.org/pub/scm/utils/mmc/mmc-utils.git +MMC_UTILS_SITE_METHOD = git +MMC_UTILS_LICENSE = GPL-2.0 +MMC_UTILS_LICENSE_FILES = README + +MMC_UTILS_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_PACKAGE_MMC_UTILS_ENABLE_DANGEROUS_COMMANDS),y) +MMC_UTILS_CFLAGS += -DDANGEROUS_COMMANDS_ENABLED +endif + +# override AM_CFLAGS as the project Makefile uses it to pass +# -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2, and the latter conflicts +# with the _FORTIFY_SOURCE that we pass when hardening options are +# enabled. Starting from commit: +# https://git.kernel.org/pub/scm/utils/mmc/mmc-utils.git/commit/?id=958227890690290ee766aaad1b92f3413f67048c +# they use AM_CFLAGS to set VERSION to first 6 digit of git SHA1, so +# let's do this here otherwise it won't be automatically set and build +# will fail +define MMC_UTILS_BUILD_CMDS + $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(MMC_UTILS_CFLAGS)" \ + AM_CFLAGS='-DVERSION=\"$(shell echo $(MMC_UTILS_VERSION) | head -c 6)\"' +endef + +define MMC_UTILS_INSTALL_TARGET_CMDS + $(MAKE) -C $(@D) prefix=/usr DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/moarvm/Config.in b/package/moarvm/Config.in new file mode 100644 index 00000000..6972a5f8 --- /dev/null +++ b/package/moarvm/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_MOARVM + bool "moarvm" + 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 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libuv + select BR2_PACKAGE_LIBUV + select BR2_PACKAGE_LIBTOMMATH + select BR2_PACKAGE_LIBATOMIC_OPS + # dyncall does not work on riscv + select BR2_PACKAGE_LIBFFI if BR2_riscv + select BR2_PACKAGE_ZSTD + 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/ NPTL, dynamic library, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_USE_MMU + depends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 diff --git a/package/moarvm/moarvm.hash b/package/moarvm/moarvm.hash new file mode 100644 index 00000000..3b0e0d62 --- /dev/null +++ b/package/moarvm/moarvm.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 24ecedd1220e215742cbfa9228797812f6f281ba87bf5dc58e8caac0c0d404d0 MoarVM-2024.06.tar.gz +sha256 c53c6b96081b0a5b9b2fb4d0133d55c20e5e00e4c127ade62f03434ee7b3d2de Artistic2.txt diff --git a/package/moarvm/moarvm.mk b/package/moarvm/moarvm.mk new file mode 100644 index 00000000..12540407 --- /dev/null +++ b/package/moarvm/moarvm.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# moarvm +# +################################################################################ + +MOARVM_VERSION = 2024.06 +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-pkgconf libuv libtommath libatomic_ops zstd + +MOARVM_CONF_OPTS = \ + --build=$(GNU_HOST_NAME) \ + --host=$(GNU_TARGET_NAME) \ + --ar="$(TARGET_AR)" \ + --cc="$(TARGET_CC)" \ + --ld="$(TARGET_CC)" \ + --prefix="/usr" \ + --pkgconfig=$(PKG_CONFIG_HOST_BINARY) \ + --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); $(TARGET_MAKE_ENV) perl Configure.pl $(MOARVM_CONF_OPTS)) +endef + +define MOARVM_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define MOARVM_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +define MOARVM_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/mobile-broadband-provider-info/Config.in b/package/mobile-broadband-provider-info/Config.in new file mode 100644 index 00000000..dda71056 --- /dev/null +++ b/package/mobile-broadband-provider-info/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO + bool "mobile-broadband-provider-info" + help + Mobile broadband provider database. + + http://live.gnome.org/NetworkManager/MobileBroadband/ServiceProviders diff --git a/package/mobile-broadband-provider-info/mobile-broadband-provider-info.hash b/package/mobile-broadband-provider-info/mobile-broadband-provider-info.hash new file mode 100644 index 00000000..c965f5c7 --- /dev/null +++ b/package/mobile-broadband-provider-info/mobile-broadband-provider-info.hash @@ -0,0 +1,4 @@ +# https://download.gnome.org/sources/mobile-broadband-provider-info/20221107/mobile-broadband-provider-info-20221107.sha256sum +sha256 d93392566c347a96eed95da8c66a5da0dd94f4115cfb3a305ff2682c64cfd810 mobile-broadband-provider-info-20221107.tar.xz +# Locally computed +sha256 3d510b215a33087b9ceb9592da21575ea1f9f98bd4d983a38e65fe851a552174 COPYING diff --git a/package/mobile-broadband-provider-info/mobile-broadband-provider-info.mk b/package/mobile-broadband-provider-info/mobile-broadband-provider-info.mk new file mode 100644 index 00000000..27448449 --- /dev/null +++ b/package/mobile-broadband-provider-info/mobile-broadband-provider-info.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# mobile-broadband-provider-info +# +################################################################################ + +MOBILE_BROADBAND_PROVIDER_INFO_VERSION = 20221107 +MOBILE_BROADBAND_PROVIDER_INFO_SITE = https://download.gnome.org/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 +MOBILE_BROADBAND_PROVIDER_INFO_LICENSE_FILES = COPYING +MOBILE_BROADBAND_PROVIDER_INFO_INSTALL_STAGING = YES +MOBILE_BROADBAND_PROVIDER_INFO_DEPENDENCIES = host-pkgconf host-libxslt + +$(eval $(autotools-package)) diff --git a/package/moby-buildkit/Config.in b/package/moby-buildkit/Config.in new file mode 100644 index 00000000..1a0b5990 --- /dev/null +++ b/package/moby-buildkit/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_MOBY_BUILDKIT + bool "moby-buildkit" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_TOOLCHAIN_USES_UCLIBC + depends on BR2_USE_MMU + select BR2_PACKAGE_CGROUPFS_MOUNT if !BR2_PACKAGE_SYSTEMD # runtime dependency + select BR2_PACKAGE_HOST_GO + help + BuildKit is a toolkit for converting source code to build + artifacts in an efficient, expressive and repeatable manner. + + https://github.com/moby/buildkit + +comment "moby-buildkit needs a glibc or musl toolchain w/ threads" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_UCLIBC + depends on BR2_USE_MMU diff --git a/package/moby-buildkit/Config.in.host b/package/moby-buildkit/Config.in.host new file mode 100644 index 00000000..d4eb0d74 --- /dev/null +++ b/package/moby-buildkit/Config.in.host @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HOST_MOBY_BUILDKIT + bool "host moby-buildkit" + depends on BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_GO + help + BuildKit is a toolkit for converting source code to build + artifacts in an efficient expressive and repeatable manner. + + https://github.com/moby/buildkit diff --git a/package/moby-buildkit/moby-buildkit.hash b/package/moby-buildkit/moby-buildkit.hash new file mode 100644 index 00000000..6b4fe165 --- /dev/null +++ b/package/moby-buildkit/moby-buildkit.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1efa1c54b299c463c1b039d3df8ba1c68e70fe4de608fd14653fcebf9f27837b moby-buildkit-0.11.6-go2.tar.gz +sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE diff --git a/package/moby-buildkit/moby-buildkit.mk b/package/moby-buildkit/moby-buildkit.mk new file mode 100644 index 00000000..91560c1e --- /dev/null +++ b/package/moby-buildkit/moby-buildkit.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# moby-buildkit +# +################################################################################ + +MOBY_BUILDKIT_VERSION = 0.11.6 +MOBY_BUILDKIT_SITE = $(call github,moby,buildkit,v$(MOBY_BUILDKIT_VERSION)) +MOBY_BUILDKIT_LICENSE = Apache-2.0 +MOBY_BUILDKIT_LICENSE_FILES = LICENSE + +MOBY_BUILDKIT_GOMOD = github.com/moby/buildkit + +MOBY_BUILDKIT_TAGS = cgo +MOBY_BUILDKIT_BUILD_TARGETS = cmd/buildctl cmd/buildkitd + +MOBY_BUILDKIT_LDFLAGS = \ + -X $(MOBY_BUILDKIT_GOMOD)/version.Version="$(MOBY_BUILDKIT_VERSION)" + +MOBY_BUILDKIT_INSTALL_BINS = $(notdir $(MOBY_BUILDKIT_BUILD_TARGETS)) + +HOST_MOBY_BUILDKIT_TAGS = cgo +HOST_MOBY_BUILDKIT_BUILD_TARGETS = cmd/buildctl cmd/buildkitd + +HOST_MOBY_BUILDKIT_INSTALL_BINS = $(notdir $(HOST_MOBY_BUILDKIT_BUILD_TARGETS)) + +$(eval $(golang-package)) +$(eval $(host-golang-package)) diff --git a/package/modem-manager/Config.in b/package/modem-manager/Config.in new file mode 100644 index 00000000..6990996a --- /dev/null +++ b/package/modem-manager/Config.in @@ -0,0 +1,46 @@ +config BR2_PACKAGE_MODEM_MANAGER + bool "modem-manager" + depends on BR2_USE_WCHAR # libglib2 and gnutls + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2 + depends on BR2_USE_MMU # dbus + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBGUDEV if BR2_PACKAGE_HAS_UDEV + help + ModemManager is a DBus-activated daemon which controls mobile + broadband (2G/3G/4G) devices and connections. + + http://www.freedesktop.org/wiki/Software/ModemManager/ + +if BR2_PACKAGE_MODEM_MANAGER + +config BR2_PACKAGE_MODEM_MANAGER_LIBMBIM + bool "MBIM support" + select BR2_PACKAGE_LIBMBIM + help + This option enables support for MBIM protocol + +config BR2_PACKAGE_MODEM_MANAGER_LIBQMI + bool "QMI support" + select BR2_PACKAGE_LIBQMI + help + This option enables support for QMI protocol + +config BR2_PACKAGE_MODEM_MANAGER_LIBQRTR + bool "QRTR support" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 # libqrtr-glib + select BR2_PACKAGE_LIBQRTR_GLIB + select BR2_PACKAGE_MODEM_MANAGER_LIBQMI + help + This option enables support for QRTR protocol + +comment "QRTR support needs a toolchain w/ headers >= 4.15" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 + +endif + +comment "modemmanager needs a toolchain w/ wchar, threads, dynamic library" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS + depends on BR2_USE_MMU diff --git a/package/modem-manager/S44modem-manager b/package/modem-manager/S44modem-manager new file mode 100644 index 00000000..416c1e2e --- /dev/null +++ b/package/modem-manager/S44modem-manager @@ -0,0 +1,43 @@ +#!/bin/sh +# +# Starts ModemManager +# + +# Allow a few customizations from a config file +test -r /etc/default/ModemManager && . /etc/default/ModemManager + +PIDFILE=/var/run/ModemManager.pid + +start() { + printf "Starting ModemManager: " + umask 077 + start-stop-daemon -S -q -b -m -p $PIDFILE \ + --exec /usr/sbin/ModemManager -- $MODEMMANAGER_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping ModemManager: " + start-stop-daemon -K -q -p $PIDFILE + [ $? = 0 ] && { echo "OK"; rm -f $PIDFILE; } || 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 $ret diff --git a/package/modem-manager/modem-manager.hash b/package/modem-manager/modem-manager.hash new file mode 100644 index 00000000..fa81acd9 --- /dev/null +++ b/package/modem-manager/modem-manager.hash @@ -0,0 +1,4 @@ +#Locally calculated +sha256 6c8f8720737a3788e394c700f36236278c9de09d76069a079e6f1daaf08b2768 ModemManager-1.22.0.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB diff --git a/package/modem-manager/modem-manager.mk b/package/modem-manager/modem-manager.mk new file mode 100644 index 00000000..495dbcd2 --- /dev/null +++ b/package/modem-manager/modem-manager.mk @@ -0,0 +1,90 @@ +################################################################################ +# +# modem-manager +# +################################################################################ + +MODEM_MANAGER_VERSION = 1.22.0 +MODEM_MANAGER_SOURCE = ModemManager-$(MODEM_MANAGER_VERSION).tar.gz +MODEM_MANAGER_SITE = https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/archive/$(MODEM_MANAGER_VERSION) +MODEM_MANAGER_LICENSE = GPL-2.0+ (programs, plugins), LGPL-2.0+ (libmm-glib) +MODEM_MANAGER_LICENSE_FILES = COPYING COPYING.LIB +MODEM_MANAGER_SELINUX_MODULES = modemmanager +MODEM_MANAGER_DEPENDENCIES = host-pkgconf dbus libglib2 $(TARGET_NLS_DEPENDENCIES) host-libxslt +MODEM_MANAGER_INSTALL_STAGING = YES +MODEM_MANAGER_CONF_OPTS = \ + -Dbuiltin_plugins=false \ + -Dfuzzer=false \ + -Dman=false \ + -Dpowerd_suspend_resume=false \ + -Dtests=false \ + -Dudevdir=/usr/lib/udev + +ifeq ($(BR2_PACKAGE_LIBGUDEV),y) +MODEM_MANAGER_DEPENDENCIES += libgudev +MODEM_MANAGER_CONF_OPTS += -Dudev=true +else +MODEM_MANAGER_CONF_OPTS += -Dudev=false +endif + +ifeq ($(BR2_PACKAGE_MODEM_MANAGER_LIBQMI),y) +MODEM_MANAGER_DEPENDENCIES += libqmi +MODEM_MANAGER_CONF_OPTS += -Dqmi=true +else +MODEM_MANAGER_CONF_OPTS += -Dqmi=false +endif + +ifeq ($(BR2_PACKAGE_MODEM_MANAGER_LIBMBIM),y) +MODEM_MANAGER_DEPENDENCIES += libmbim +MODEM_MANAGER_CONF_OPTS += -Dmbim=true +else +MODEM_MANAGER_CONF_OPTS += -Dmbim=false +endif + +ifeq ($(BR2_PACKAGE_MODEM_MANAGER_LIBQRTR),y) +MODEM_MANAGER_DEPENDENCIES += libqrtr-glib +MODEM_MANAGER_CONF_OPTS += -Dqrtr=true +else +MODEM_MANAGER_CONF_OPTS += -Dqrtr=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +MODEM_MANAGER_DEPENDENCIES += systemd +MODEM_MANAGER_CONF_OPTS += \ + -Dsystemd_journal=true \ + -Dsystemd_suspend_resume=true \ + -Dsystemdsystemunitdir=/usr/lib/systemd/system +else +MODEM_MANAGER_CONF_OPTS += \ + -Dsystemd_journal=false \ + -Dsystemd_suspend_resume=false \ + -Dsystemdsystemunitdir=no +endif + +ifeq ($(BR2_PACKAGE_POLKIT),y) +MODEM_MANAGER_DEPENDENCIES += polkit +MODEM_MANAGER_CONF_OPTS += -Dpolkit=strict +else +MODEM_MANAGER_CONF_OPTS += -Dpolkit=no +endif + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +MODEM_MANAGER_DEPENDENCIES += gobject-introspection +MODEM_MANAGER_CONF_OPTS += -Dintrospection=true +else +MODEM_MANAGER_CONF_OPTS += -Dintrospection=false +endif + +ifeq ($(BR2_PACKAGE_BASH_COMPLETION),y) +MODEM_MANAGER_DEPENDENCIES += bash-completion +MODEM_MANAGER_CONF_OPTS += -Dbash_completion=true +else +MODEM_MANAGER_CONF_OPTS += -Dbash_completion=false +endif + +define MODEM_MANAGER_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/modem-manager/S44modem-manager \ + $(TARGET_DIR)/etc/init.d/S44modem-manager +endef + +$(eval $(meson-package)) diff --git a/package/modplugtools/Config.in b/package/modplugtools/Config.in new file mode 100644 index 00000000..33acad63 --- /dev/null +++ b/package/modplugtools/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_MODPLUGTOOLS + bool "modplugtools" + depends on BR2_INSTALL_LIBSTDCPP # libmodplug + select BR2_PACKAGE_LIBAO + select BR2_PACKAGE_LIBMODPLUG + help + This installs the 'modplug123' command line tool to play + music files in the tracker formats supported by libmodplug: + MOD, S3M, XM etc. Audio output is handled by libao. + + http://modplug-xmms.sourceforge.net/ + +comment "modplugtools needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/modplugtools/modplugtools.hash b/package/modplugtools/modplugtools.hash new file mode 100644 index 00000000..848d6403 --- /dev/null +++ b/package/modplugtools/modplugtools.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 0122d44ea0513b928cf9d463acc886d08a2664579aa96ddeeb270d5c81193a4e modplugtools-0.5.3.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/modplugtools/modplugtools.mk b/package/modplugtools/modplugtools.mk new file mode 100644 index 00000000..59a2a522 --- /dev/null +++ b/package/modplugtools/modplugtools.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# modplugtools +# +################################################################################ + +MODPLUGTOOLS_VERSION = 0.5.3 +MODPLUGTOOLS_SITE = http://downloads.sourceforge.net/project/modplug-xmms/modplug-tools +MODPLUGTOOLS_LICENSE = GPL-3.0 +MODPLUGTOOLS_LICENSE_FILES = COPYING + +MODPLUGTOOLS_DEPENDENCIES = libao libmodplug + +# Only build the 'mp123' subdir, which contains 'modplug123' that plays through +# various backends via libao. This excludes the 'mpplay' subdir, which contains +# 'modplugplay' that can play only through the deprecated OSS interface. +MODPLUGTOOLS_MAKE_OPTS = SUBDIRS=mp123 +MODPLUGTOOLS_INSTALL_TARGET_OPTS = SUBDIRS=mp123 DESTDIR=$(TARGET_DIR) install + +$(eval $(autotools-package)) diff --git a/package/modsecurity2/Config.in b/package/modsecurity2/Config.in new file mode 100644 index 00000000..fb1bfc96 --- /dev/null +++ b/package/modsecurity2/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_MODSECURITY2 + bool "modsecurity2" + depends on BR2_PACKAGE_APACHE + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_PCRE2 + help + ModSecurity is an open source, cross-platform web application + firewall (WAF) module. Known as the "Swiss Army Knife" of + WAFs, it enables web application defenders to gain visibility + into HTTP(S) traffic and provides a power rules language and + API to implement advanced protections. + + https://github.com/SpiderLabs/ModSecurity diff --git a/package/modsecurity2/modsecurity2.hash b/package/modsecurity2/modsecurity2.hash new file mode 100644 index 00000000..2c77ffd8 --- /dev/null +++ b/package/modsecurity2/modsecurity2.hash @@ -0,0 +1,5 @@ +# From https://github.com/SpiderLabs/ModSecurity/releases/download/v2.9.7/modsecurity-2.9.7.tar.gz.sha256 +sha256 2a28fcfccfef21581486f98d8d5fe0397499749b8380f60ec7bb1c08478e1839 modsecurity-2.9.7.tar.gz + +# Locally computed +sha256 2c564f5a67e49e74c80e5a7dcacd1904e7408f1fd6a95218b38c04f012d94cb9 LICENSE diff --git a/package/modsecurity2/modsecurity2.mk b/package/modsecurity2/modsecurity2.mk new file mode 100644 index 00000000..88bbf3bb --- /dev/null +++ b/package/modsecurity2/modsecurity2.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# modsecurity2 +# +################################################################################ + +MODSECURITY2_VERSION = 2.9.7 +MODSECURITY2_SOURCE = modsecurity-$(MODSECURITY2_VERSION).tar.gz +MODSECURITY2_SITE = https://github.com/SpiderLabs/ModSecurity/releases/download/v$(MODSECURITY2_VERSION) +MODSECURITY2_LICENSE = Apache-2.0 +MODSECURITY2_LICENSE_FILES = LICENSE +MODSECURITY2_CPE_ID_VENDOR = trustwave +MODSECURITY2_CPE_ID_PRODUCT = modsecurity +MODSECURITY2_INSTALL_STAGING = YES +MODSECURITY2_DEPENDENCIES = host-pkgconf apache libxml2 pcre2 + +MODSECURITY2_CONF_OPTS = \ + --with-pcre2=$(STAGING_DIR)/usr/bin/pcre2-config \ + --with-apr=$(STAGING_DIR)/usr/bin/apr-1-config \ + --with-apu=$(STAGING_DIR)/usr/bin/apu-1-config \ + --with-apxs=$(STAGING_DIR)/usr/bin/apxs \ + --without-curl \ + --without-lua \ + --without-pcre \ + --without-yajl \ + --without-ssdeep + +$(eval $(autotools-package)) diff --git a/package/mokutil/Config.in b/package/mokutil/Config.in new file mode 100644 index 00000000..8895b66d --- /dev/null +++ b/package/mokutil/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_MOKUTIL + bool "mokutil" + # We're not selecting shim, but this package only makes sense + # on architectures on which shim is supported + depends on BR2_PACKAGE_SHIM_ARCH_SUPPORTS + depends on BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS + depends on BR2_USE_MMU # keyutils + depends on !BR2_STATIC_LIBS # efivar, keyutils + depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS # efivar + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # efivar + depends on BR2_TOOLCHAIN_HAS_THREADS # efivar + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 # efivar + select BR2_PACKAGE_EFIVAR + select BR2_PACKAGE_KEYUTILS + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + help + mokutil is a tool to import or delete the machines owner + keys (MOK) stored in the database of shim. + + "shim" is the first stage bootloader to support UEFI Secure + Boot. See also the "shim" package in the bootloaders + section. + + https://github.com/lcp/mokutil + +comment "mokutil needs a toolchain w/ dynamic library, threads, gcc >= 4.9, headers >= 3.12" + depends on BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS + depends on BR2_PACKAGE_SHIM_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || \ + BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 diff --git a/package/mokutil/mokutil.hash b/package/mokutil/mokutil.hash new file mode 100644 index 00000000..4eb8414d --- /dev/null +++ b/package/mokutil/mokutil.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 839d677c4fc9805f1565703ca32863e4652692c53da66a88ae9b9e30676f9e17 mokutil-0.7.2.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/mokutil/mokutil.mk b/package/mokutil/mokutil.mk new file mode 100644 index 00000000..de379991 --- /dev/null +++ b/package/mokutil/mokutil.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# mokutil +# +################################################################################ + +MOKUTIL_VERSION = 0.7.2 +MOKUTIL_SITE = $(call github,lcp,mokutil,$(MOKUTIL_VERSION)) +MOKUTIL_LICENSE = GPL-3.0+ +MOKUTIL_LICENSE_FILES = COPYING +MOKUTIL_AUTORECONF = YES + +MOKUTIL_DEPENDENCIES = \ + efivar \ + host-pkgconf \ + keyutils \ + $(if $(BR2_PACKAGE_LIBXCRYPT),libxcrypt) \ + openssl + +$(eval $(autotools-package)) diff --git a/package/mongodb/0001-ssl_manager.cpp-fix-build-with-gcc-7-and-fpermissive.patch b/package/mongodb/0001-ssl_manager.cpp-fix-build-with-gcc-7-and-fpermissive.patch new file mode 100644 index 00000000..b4b17466 --- /dev/null +++ b/package/mongodb/0001-ssl_manager.cpp-fix-build-with-gcc-7-and-fpermissive.patch @@ -0,0 +1,55 @@ +From 362be06fc16a5ad0f9e9aa90cc763c5242e8e35c Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 9 Feb 2019 12:41:45 +0100 +Subject: [PATCH] ssl_manager.cpp: fix build with gcc 7 and -fpermissive + +Change prototype of DERToken::parse function from +parse(ConstDataRange cdr, size_t* outLength); +to parse(ConstDataRange cdr, uint64_t* outLength); + +Otherwise, we got the following error: + +src/mongo/util/net/ssl_manager.cpp: In static member function 'static mongo::StatusWith mongo::{anonymous}::DERToken::parse(mongo::ConstDataRange, size_t*)': +src/mongo/util/net/ssl_manager.cpp:575:79: error: invalid conversion from 'size_t* {aka unsigned int*}' to 'long unsigned int*' [-fpermissive] + if (mongoUnsignedAddOverflow64(tagAndLengthByteCount, derLength, outLength) || + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/mongodb/mongo/pull/1296] +--- + src/mongo/util/net/ssl_manager.cpp | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/mongo/util/net/ssl_manager.cpp b/src/mongo/util/net/ssl_manager.cpp +index b93ebe84a4..3511eb5d99 100644 +--- a/src/mongo/util/net/ssl_manager.cpp ++++ b/src/mongo/util/net/ssl_manager.cpp +@@ -782,7 +782,7 @@ public: + * + * Returns a DERToken which consists of the (tag, length, value) tuple. + */ +- static StatusWith parse(ConstDataRange cdr, size_t* outLength); ++ static StatusWith parse(ConstDataRange cdr, uint64_t* outLength); + + private: + DERType _type{DERType::EndOfContent}; +@@ -799,7 +799,7 @@ struct DataType::Handler { + size_t length, + size_t* advanced, + std::ptrdiff_t debug_offset) { +- size_t outLength; ++ uint64_t outLength; + + auto swPair = DERToken::parse(ConstDataRange(ptr, length), &outLength); + +@@ -844,7 +844,7 @@ StatusWith readDERString(ConstDataRangeCursor& cdc) { + } + + +-StatusWith DERToken::parse(ConstDataRange cdr, size_t* outLength) { ++StatusWith DERToken::parse(ConstDataRange cdr, uint64_t* outLength) { + const size_t kTagLength = 1; + const size_t kTagLengthAndInitialLengthByteLength = kTagLength + 1; + +-- +2.14.1 + diff --git a/package/mongodb/0002-src-mongo-db-exec-plan_stats.h-fix-build-with-gcc-11.patch b/package/mongodb/0002-src-mongo-db-exec-plan_stats.h-fix-build-with-gcc-11.patch new file mode 100644 index 00000000..e96a6525 --- /dev/null +++ b/package/mongodb/0002-src-mongo-db-exec-plan_stats.h-fix-build-with-gcc-11.patch @@ -0,0 +1,44 @@ +From 0941e560850d54160c24778fa66b605714fd5012 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 9 Aug 2021 21:18:50 +0200 +Subject: [PATCH] src/mongo/db/exec/plan_stats.h: fix build with gcc + 11 + +Fix the following build failure with gcc 11: + +In file included from src/mongo/db/query/plan_cache.h:36, + from src/mongo/db/catalog/collection_info_cache.h:33, + from src/mongo/db/catalog/collection.h:42, + from src/mongo/db/exec/requires_collection_stage.h:32, + from src/mongo/db/exec/delete.h:32, + from src/mongo/db/query/internal_plans.h:33, + from src/mongo/db/query/internal_plans.cpp:32: +src/mongo/db/exec/plan_stats.h:214:10: error: 'optional' in namespace 'std' does not name a template type + 214 | std::optional replanReason; + | ^~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/8c0875fa413923504515a83d8b679366418c2444 + +Signed-off-by: Fabrice Fontaine +[Upstream status: already fixed by +https://github.com/mongodb/mongo/commit/e78b2bf6eaa0c43bd76dbb841add167b443d2bb0] +--- + src/mongo/db/exec/plan_stats.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/mongo/db/exec/plan_stats.h b/src/mongo/db/exec/plan_stats.h +index 43053e27be..813e4edc9e 100644 +--- a/src/mongo/db/exec/plan_stats.h ++++ b/src/mongo/db/exec/plan_stats.h +@@ -31,6 +31,7 @@ + + #include + #include ++#include + #include + #include + +-- +2.30.2 + diff --git a/package/mongodb/Config.in b/package/mongodb/Config.in new file mode 100644 index 00000000..1ea42825 --- /dev/null +++ b/package/mongodb/Config.in @@ -0,0 +1,42 @@ +# from https://docs.mongodb.com/manual/installation/#supported-platforms +config BR2_PACKAGE_MONGODB_ARCH_SUPPORTS + bool + # ARM needs LDREX/STREX, so ARMv6+ + default y if BR2_arm && !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV5 + default y if BR2_aarch64 || BR2_x86_64 + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-filesystem + +config BR2_PACKAGE_MONGODB + bool "mongodb" + depends on BR2_PACKAGE_MONGODB_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_USES_GLIBC # needs glibc malloc_usable_size + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17 + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_BOOST_IOSTREAMS + select BR2_PACKAGE_BOOST_PROGRAM_OPTIONS + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_PCRE + select BR2_PACKAGE_PCRE_UTF # runtime + select BR2_PACKAGE_SNAPPY + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_YAML_CPP + select BR2_PACKAGE_ZLIB + help + MongoDB is a cross-platform document-oriented database + (NoSQL). + + It uses JSON-like documents with dynamic schemas (BSON), + making the integration of data in certain types of + applications easier and faster. + + https://www.mongodb.org/ + +comment "mongodb needs a glibc toolchain w/ wchar, threads, C++, gcc >= 7" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 + depends on BR2_PACKAGE_MONGODB_ARCH_SUPPORTS diff --git a/package/mongodb/mongodb.hash b/package/mongodb/mongodb.hash new file mode 100644 index 00000000..02da8ad4 --- /dev/null +++ b/package/mongodb/mongodb.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 5bbb9567cc1f358ac7d9f37d9fe749862728bdf9f742d1dfc5e35a8b6c2985ba mongodb-src-r4.2.18.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 APACHE-2.0.txt +sha256 09d99ca61eb07873d5334077acba22c33e7f7d0a9fa08c92734e0ac8430d6e27 LICENSE-Community.txt diff --git a/package/mongodb/mongodb.mk b/package/mongodb/mongodb.mk new file mode 100644 index 00000000..9f6c7d31 --- /dev/null +++ b/package/mongodb/mongodb.mk @@ -0,0 +1,104 @@ +################################################################################ +# +# mongodb +# +################################################################################ + +MONGODB_VERSION = 4.2.18 +MONGODB_SITE = https://fastdl.mongodb.org/src +MONGODB_SOURCE = mongodb-src-r$(MONGODB_VERSION).tar.gz + +MONGODB_LICENSE = Apache-2.0 (drivers), SSPL (database) +MONGODB_LICENSE_FILES = APACHE-2.0.txt LICENSE-Community.txt + +MONGODB_CPE_ID_VENDOR = mongodb +MONGODB_SELINUX_MODULES = mongodb + +MONGODB_DEPENDENCIES = \ + boost \ + host-python-cheetah \ + host-python-psutil \ + host-python-pyyaml \ + host-python-regex \ + host-python-requests \ + host-scons \ + pcre \ + snappy \ + sqlite \ + yaml-cpp \ + zlib + +MONGODB_SCONS_TARGETS = mongod mongos + +MONGODB_SCONS_ENV = CC="$(TARGET_CC)" CXX="$(TARGET_CXX)" \ + -j"$(PARALLEL_JOBS)" + +MONGODB_SCONS_OPTS = \ + --disable-minimum-compiler-version-enforcement \ + --disable-warnings-as-errors \ + --use-system-boost \ + --use-system-pcre \ + --use-system-snappy \ + --use-system-sqlite \ + --use-system-yaml \ + --use-system-zlib + +# need to pass mongo version when not building from git repo +MONGODB_SCONS_OPTS += MONGO_VERSION=$(MONGODB_VERSION)- + +# WiredTiger database storage engine only supported on 64 bits +ifeq ($(BR2_ARCH_IS_64),y) +MONGODB_SCONS_OPTS += --wiredtiger=on +else +MONGODB_SCONS_OPTS += --wiredtiger=off +endif + +# JavaScript scripting engine and tcmalloc supported only on +# x86/x86-64 systems. Mongo target is a shell interface that +# depends on the javascript engine, so it will also only be +# built on x86/x86-64 systems. +ifeq ($(BR2_i386)$(BR2_x86_64),y) +MONGODB_SCONS_OPTS += --js-engine=mozjs --allocator=tcmalloc +MONGODB_SCONS_TARGETS += mongo +else +MONGODB_SCONS_OPTS += --js-engine=none --allocator=system +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +MONGODB_DEPENDENCIES += libcurl +MONGODB_SCONS_OPTS += \ + --enable-free-mon=on \ + --enable-http-client=on +else +MONGODB_SCONS_OPTS += \ + --enable-free-mon=off \ + --enable-http-client=off +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +MONGODB_DEPENDENCIES += openssl +MONGODB_SCONS_OPTS += \ + --ssl=on \ + --ssl-provider=openssl +else +MONGODB_SCONS_OPTS += --ssl=off +endif + +define MONGODB_BUILD_CMDS + (cd $(@D); \ + $(SCONS) \ + $(MONGODB_SCONS_ENV) \ + $(MONGODB_SCONS_OPTS) \ + $(MONGODB_SCONS_TARGETS)) +endef + +define MONGODB_INSTALL_TARGET_CMDS + (cd $(@D); \ + $(SCONS) \ + $(MONGODB_SCONS_ENV) \ + $(MONGODB_SCONS_OPTS) \ + --prefix=$(TARGET_DIR)/usr \ + install) +endef + +$(eval $(generic-package)) diff --git a/package/mongoose/Config.in b/package/mongoose/Config.in new file mode 100644 index 00000000..22b385d4 --- /dev/null +++ b/package/mongoose/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_MONGOOSE + bool "mongoose" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + help + Mongoose is an embedded networking library, which can turn + anything into a web server + + https://github.com/cesanta/mongoose + +comment "mongoose needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/mongoose/mongoose.hash b/package/mongoose/mongoose.hash new file mode 100644 index 00000000..8874ba41 --- /dev/null +++ b/package/mongoose/mongoose.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 7c4aecf92f7f27f1cbb2cbda3c185c385f2b7af84f6bd7c0ce31b84742b15691 mongoose-7.14.tar.gz +sha256 7e2bc5dabbc27b431a530540161ba860906f12109d4b84b1e4bc8879f1afc3bc LICENSE diff --git a/package/mongoose/mongoose.mk b/package/mongoose/mongoose.mk new file mode 100644 index 00000000..d2cd4545 --- /dev/null +++ b/package/mongoose/mongoose.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# mongoose +# +################################################################################ + +MONGOOSE_VERSION = 7.14 +MONGOOSE_SITE = $(call github,cesanta,mongoose,$(MONGOOSE_VERSION)) +MONGOOSE_LICENSE = GPL-2.0 +MONGOOSE_LICENSE_FILES = LICENSE +MONGOOSE_CPE_ID_VENDOR = cesenta +MONGOOSE_INSTALL_STAGING = YES +# static library +MONGOOSE_INSTALL_TARGET = NO + +MONGOOSE_CFLAGS = $(TARGET_CFLAGS) -std=gnu99 + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +MONGOOSE_DEPENDENCIES += openssl +MONGOOSE_CFLAGS += -DMG_ENABLE_OPENSSL=1 +else ifeq ($(BR2_PACKAGE_MBEDTLS),y) +MONGOOSE_DEPENDENCIES += mbedtls +MONGOOSE_CFLAGS += -DMG_ENABLE_MBEDTLS=1 +endif + +define MONGOOSE_BUILD_CMDS + $(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 + $(INSTALL) -D -m 644 $(@D)/libmongoose.a \ + $(STAGING_DIR)/usr/lib/libmongoose.a + $(INSTALL) -D -m 644 $(@D)/mongoose.h \ + $(STAGING_DIR)/usr/include/mongoose.h +endef + +$(eval $(generic-package)) diff --git a/package/mongrel2/0001-Do-not-run-tests.patch b/package/mongrel2/0001-Do-not-run-tests.patch new file mode 100644 index 00000000..3b72aef3 --- /dev/null +++ b/package/mongrel2/0001-Do-not-run-tests.patch @@ -0,0 +1,45 @@ +From 3cbef2195533f357c8a80c2840108662461273b7 Mon Sep 17 00:00:00 2001 +From: Lionel Orry +Date: Wed, 27 Mar 2013 14:48:19 +0100 +Subject: [PATCH] Do not run tests. + +This patch is specific to cross-compiled environments and avoids running +the tests on the host. It is not meant to be applied upstream. + +Signed-off-by: Lionel Orry +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + Makefile | 2 +- + tools/m2sh/Makefile | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index 7dc4089..ca72630 100644 +--- a/Makefile ++++ b/Makefile +@@ -18,7 +18,7 @@ + TESTS=$(patsubst %.c,%,${TEST_SRC}) + MAKEOPTS=OPTFLAGS="${CFLAGS} ${NOEXTCFLAGS} ${OPTFLAGS}" LDFLAGS="${LDFLAGS}" LIBS="${LIBS}" DESTDIR="${DESTDIR}" PREFIX="${PREFIX}" + +-all: bin/mongrel2 tests m2sh procer ++all: bin/mongrel2 m2sh procer filters config_modules + + ${OBJECTS_NOEXT}: CFLAGS += ${NOEXTCFLAGS} + ${OBJECTS}: | builddirs +diff --git a/tools/m2sh/Makefile b/tools/m2sh/Makefile +index b50d8a0..334e4da 100644 +--- a/tools/m2sh/Makefile ++++ b/tools/m2sh/Makefile +@@ -12,7 +12,7 @@ + + $(RAGEL_OBJECTS): CFLAGS += -Wno-unused-const-variable -Wimplicit-fallthrough=0 -Wno-unused-parameter + +-all: ../lemon/lemon tests build/m2sh ++all: ../lemon/lemon build/m2sh + + dev: CFLAGS=-g -Wall -Wextra -Isrc -I../../src $(OPTFLAGS) + dev: all +-- +1.8.1.4 + diff --git a/package/mongrel2/0002-Fix-Makefiles-for-cross-compilation.patch b/package/mongrel2/0002-Fix-Makefiles-for-cross-compilation.patch new file mode 100644 index 00000000..1961f128 --- /dev/null +++ b/package/mongrel2/0002-Fix-Makefiles-for-cross-compilation.patch @@ -0,0 +1,78 @@ +From 298356c44a7df2b34c4e307c531d2010e2cb4b79 Mon Sep 17 00:00:00 2001 +From: Lionel Orry +Date: Wed, 27 Mar 2013 15:56:56 +0100 +Subject: [PATCH] Fix Makefiles for cross-compilation + +The CFLAGS handling in mongrel2 is really messy and it is hard to make +it behave correctly with cross-compiling environments. This patch +restricts the Makefiles syntax to GNU Make, but help cross-compiling. + +This is not meant to be applied upstream. + +Signed-off-by: Lionel Orry +[Fabrice: refresh for 1.12.2] +Signed-off-by: Fabrice Fontaine +--- + Makefile | 2 +- + tools/config_modules/Makefile | 2 +- + tools/filters/Makefile | 2 +- + tools/m2sh/Makefile | 2 +- + tools/procer/Makefile | 2 +- + 5 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/Makefile b/Makefile +index 4e89c33..2f549a8 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,5 +1,5 @@ + CFLAGS?=-g -O2 +-CFLAGS += -Wall -Wextra -Wno-implicit-fallthrough -Wno-unused-const-variable -I./src -DNDEBUG -D_FILE_OFFSET_BITS=64 -pthread ++override CFLAGS += -Wall -Wextra -Wno-implicit-fallthrough -Wno-unused-const-variable -I./src -DNDEBUG -D_FILE_OFFSET_BITS=64 -pthread + CFLAGS += ${OPTFLAGS} + LIBS+=-lzmq -ldl -lsqlite3 -lmbedtls -lmbedx509 -lmbedcrypto + PREFIX?=/usr/local +diff --git a/tools/config_modules/Makefile b/tools/config_modules/Makefile +index c2680d1..ada3169 100644 +--- a/tools/config_modules/Makefile ++++ b/tools/config_modules/Makefile +@@ -1,5 +1,5 @@ + PREFIX?=/usr/local +-CFLAGS=-I../../src -I../../src/mbedtls/include $(OPTFLAGS) -fPIC -shared -nostartfiles -L../../build ++override CFLAGS=-I../../src -I../../src/mbedtls/include $(OPTFLAGS) -fPIC -shared -nostartfiles -L../../build + LDFLAGS=$(OPTLIBS) + + MONGO_SRC = mongo-c-driver/src/bson.c \ +diff --git a/tools/filters/Makefile b/tools/filters/Makefile +index 6505ad5..a968ef6 100644 +--- a/tools/filters/Makefile ++++ b/tools/filters/Makefile +@@ -1,5 +1,5 @@ + PREFIX?=/usr/local +-CFLAGS=-I../../src -I../../src/mbedtls/include $(OPTFLAGS) -g -fPIC -shared -nostartfiles -L../../build ++override CFLAGS=-I../../src -I../../src/mbedtls/include $(OPTFLAGS) -g -fPIC -shared -nostartfiles -L../../build + LDFLAGS=$(OPTLIBS) + + all: null.so rewrite.so sendfile.so +diff --git a/tools/m2sh/Makefile b/tools/m2sh/Makefile +index b50d8a0..cc00062 100644 +--- a/tools/m2sh/Makefile ++++ b/tools/m2sh/Makefile +@@ -1,4 +1,4 @@ +-CFLAGS=-DNDEBUG -DNO_LINENOS -pthread -g -I../../src -Isrc -Wall $(OPTFLAGS) ++override CFLAGS=-DNDEBUG -DNO_LINENOS -pthread -g -I../../src -Isrc -Wall $(OPTFLAGS) + LIBS=-lzmq -lsqlite3 ../../build/libm2.a $(OPTLIBS) + + PREFIX?=/usr/local +diff --git a/tools/procer/Makefile b/tools/procer/Makefile +index bb9aa31..d377f7f 100644 +--- a/tools/procer/Makefile ++++ b/tools/procer/Makefile +@@ -1,4 +1,4 @@ +-CFLAGS=-DNDEBUG -pthread -g -I../../src -Wall $(OPTFLAGS) ++override CFLAGS=-DNDEBUG -pthread -g -I../../src -Wall $(OPTFLAGS) + PREFIX?=/usr/local + LIBS?=-lzmq + SOURCES=$(wildcard *.c) +-- +2.27.0 + diff --git a/package/mongrel2/0003-fix-build-with-gcc-4.8.patch b/package/mongrel2/0003-fix-build-with-gcc-4.8.patch new file mode 100644 index 00000000..996cd324 --- /dev/null +++ b/package/mongrel2/0003-fix-build-with-gcc-4.8.patch @@ -0,0 +1,62 @@ +From cc2dd3995dc9a9e6f0e705e11e791f3f3c7d7326 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 18 Jan 2022 22:41:36 +0100 +Subject: [PATCH] fix build with gcc 4.8 + +Drop "-Wno-unused-const-variable -Wimplicit-fallthrough=0" as +"-Wno-implicit-fallthrough -Wno-unused-const-variable" is already set in +CFLAGS. This will avoid the following build failure with gcc 4.8 raised +since version 1.13.0 and +https://github.com/mongrel2/mongrel2/commit/725209578599bd7784753d86aee34f6441ff78a5: + +arm-none-linux-gnueabi-gcc: error: unrecognized command line option '-Wimplicit-fallthrough=0' + +Fixes: + - http://autobuild.buildroot.org/results/de324b733e09057c87352220069fe65f6e535eb8 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/mongrel2/mongrel2/pull/354 +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + Makefile | 1 - + tools/m2sh/Makefile | 4 ++-- + 2 files changed, 2 insertions(+), 3 deletions(-) + +diff --git a/Makefile b/Makefile +index f6627ed..fb8d028 100644 +--- a/Makefile ++++ b/Makefile +@@ -22,7 +22,6 @@ all: bin/mongrel2 tests m2sh procer + + ${OBJECTS_NOEXT}: CFLAGS += ${NOEXTCFLAGS} + ${OBJECTS}: | builddirs +-$(RAGEL_OBJECTS): CFLAGS += -Wno-unused-const-variable -Wimplicit-fallthrough=0 + + .PHONY: builddirs + builddirs: +diff --git a/tools/m2sh/Makefile b/tools/m2sh/Makefile +index 83e7ae4..86364af 100644 +--- a/tools/m2sh/Makefile ++++ b/tools/m2sh/Makefile +@@ -10,7 +10,7 @@ + LIB_OBJ=$(filter-out src/m2sh.o,${OBJECTS}) + RAGEL_OBJECTS=src/lexer.o src/cli.o + +-$(RAGEL_OBJECTS): CFLAGS += -Wno-unused-const-variable -Wimplicit-fallthrough=0 -Wno-unused-parameter ++$(RAGEL_OBJECTS): CFLAGS += -Wno-unused-parameter + + all: ../lemon/lemon build/m2sh + +@@ -20,7 +20,7 @@ + install: build/m2sh + install build/m2sh ${DESTDIR}${PREFIX}/bin + +-src/parser.o: CFLAGS += -Wno-unused-const-variable -Wno-unused-parameter ++src/parser.o: CFLAGS += -Wno-unused-parameter + + build/libm2sh.a: ${LIB_OBJ} + mkdir -p build +-- +2.34.1 + diff --git a/package/mongrel2/Config.in b/package/mongrel2/Config.in new file mode 100644 index 00000000..60fee6f9 --- /dev/null +++ b/package/mongrel2/Config.in @@ -0,0 +1,33 @@ +# mongrel2 uses {get,make,swap}context() functions, which are +# available in glibc for all architectures and in uClibc only for a +# subset of the architectures +config BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS + bool + default y if BR2_TOOLCHAIN_USES_GLIBC + 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, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS + +config BR2_PACKAGE_MONGREL2 + bool "mongrel2" + depends on BR2_INSTALL_LIBSTDCPP # zeromq + depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq + depends on !BR2_STATIC_LIBS # uses dlopen() + depends on BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS + select BR2_PACKAGE_MBEDTLS + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_ZEROMQ + help + Mongrel2 is an application, language, and network architecture + agnostic web server that focuses on web applications using + modern browser technologies. + + Mongrel2 supports 17 languages and platforms, HTTP, Flash + sockets, WebSockets, Long Polling, and many ways to deploy + and hack on it. + + http://www.mongrel2.org diff --git a/package/mongrel2/mongrel2.hash b/package/mongrel2/mongrel2.hash new file mode 100644 index 00000000..f4f094ea --- /dev/null +++ b/package/mongrel2/mongrel2.hash @@ -0,0 +1,6 @@ +# From https://mongrel2.org +sha1 6057f9cbfae41e2cdef1e0f715df3c1a4d3a1884 mongrel2-v1.13.0.tar.bz2 + +# Locally computed +sha256 b6f1f50c9f65b605342d8792b1cc8a1c151105339030313b9825b6a68d400c10 mongrel2-v1.13.0.tar.bz2 +sha256 eb6e2a2baa637d06f6aa762886fbc8939934eb5fdb0b3a5b3882f2a61e9a4357 LICENSE diff --git a/package/mongrel2/mongrel2.mk b/package/mongrel2/mongrel2.mk new file mode 100644 index 00000000..07914ad0 --- /dev/null +++ b/package/mongrel2/mongrel2.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# mongrel2 +# +################################################################################ + +MONGREL2_VERSION = 1.13.0 +MONGREL2_SOURCE = mongrel2-v$(MONGREL2_VERSION).tar.bz2 +# Do not use the github helper here, the generated tarball is *NOT* the same +# as the one uploaded by upstream for the release. +MONGREL2_SITE = https://github.com/mongrel2/mongrel2/releases/download/v$(MONGREL2_VERSION) +MONGREL2_LICENSE = BSD-3-Clause +MONGREL2_LICENSE_FILES = LICENSE +MONGREL2_DEPENDENCIES = mbedtls sqlite zeromq + +define MONGREL2_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + PREFIX=/usr all +endef + +define MONGREL2_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + PREFIX=/usr DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/monit/0001-no-force-static.patch b/package/monit/0001-no-force-static.patch new file mode 100644 index 00000000..4634a951 --- /dev/null +++ b/package/monit/0001-no-force-static.patch @@ -0,0 +1,22 @@ +Do not force building a statically-linked binary + +Statically-linked binary do not work well with glibc, because it +still dlopen()s the NSS libraries. + +Reported-by: Peter Kümmel +Signed-off-by: "Yann E. MORIN" +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi + +diff -durN monit-5.7.orig/Makefile.am monit-5.7/Makefile.am +--- monit-5.7.orig/Makefile.am 2014-02-20 09:00:42.000000000 +0100 ++++ monit-5.7/Makefile.am 2014-09-05 12:49:43.711104001 +0200 +@@ -97,7 +97,7 @@ + src/statistics/Statistics.c + + monit_LDADD = libmonit/libmonit.la +-monit_LDFLAGS = -static $(EXTLDFLAGS) ++monit_LDFLAGS = $(EXTLDFLAGS) + + man_MANS = monit.1 + diff --git a/package/monit/0002-configure.ac-fixes-missing-config-macro-dir.patch b/package/monit/0002-configure.ac-fixes-missing-config-macro-dir.patch new file mode 100644 index 00000000..31b20b3c --- /dev/null +++ b/package/monit/0002-configure.ac-fixes-missing-config-macro-dir.patch @@ -0,0 +1,46 @@ +From 2c06ecdc02de75a9e7e1e30e9c3d7d3a64269b7c Mon Sep 17 00:00:00 2001 +From: Jens Maus +Date: Fri, 22 Sep 2023 21:32:18 +0200 +Subject: [PATCH] configure.ac: fixes missing config macro dir + +This adds the config dir to the AC_CONFIG_MACRO_DIRS in configure.ac +so that m4 macros are properly loaded upon autoreconf use. + +Upstream: N/A (specific to buildroot) +Signed-off-by: Jens Maus +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + configure.ac | 2 +- + libmonit/configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 3c3d30a2..f4c5ea07 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -8,7 +8,7 @@ + # Example: 5.0_beta2 + AC_INIT([monit], [5.33.0], [monit-general@nongnu.org]) + AC_CONFIG_AUX_DIR(config) +-AC_CONFIG_MACRO_DIR([m4]) ++AC_CONFIG_MACRO_DIRS([m4 config]) + AM_INIT_AUTOMAKE + AC_CONFIG_SRCDIR([src/monit.c]) + AC_CONFIG_SUBDIRS([libmonit]) +diff --git a/libmonit/configure.ac b/libmonit/configure.ac +index d4cd0789..5366444a 100644 +--- a/libmonit/configure.ac ++++ b/libmonit/configure.ac +@@ -4,7 +4,7 @@ AC_PREREQ([2.53]) + + AC_INIT([libmonit], [1.0], [monit-dev@tildeslash.com]) + AC_CONFIG_AUX_DIR(config) +-AC_CONFIG_MACRO_DIR([m4]) ++AC_CONFIG_MACRO_DIRS([m4 config]) + AM_INIT_AUTOMAKE + AC_CONFIG_SRCDIR([src]) + +-- +2.34.1 + diff --git a/package/monit/Config.in b/package/monit/Config.in new file mode 100644 index 00000000..d177fe18 --- /dev/null +++ b/package/monit/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_MONIT + bool "monit" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + Monit is a free open source utility for managing and + monitoring, processes, programs, files, directories and + filesystems on a UNIX system. Monit conducts automatic + maintenance and repair and can execute meaningful causal + actions in error situations. + + http://mmonit.com/monit/ + +comment "monit needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/monit/monit.hash b/package/monit/monit.hash new file mode 100644 index 00000000..1d9feca5 --- /dev/null +++ b/package/monit/monit.hash @@ -0,0 +1,4 @@ +# From https://mmonit.com/monit/dist/monit-5.33.0.tar.gz.sha256 +sha256 1ace889c0183473a9d70160df6533bb6e1338dc1354f5928507803e1e2a863b5 monit-5.33.0.tar.gz +# Locally computed +sha256 d5a4f52b1a5e1e7fe14e01a76aac8b08dc6bbea15466058f271456c97aac1ada COPYING diff --git a/package/monit/monit.mk b/package/monit/monit.mk new file mode 100644 index 00000000..e3a4fac9 --- /dev/null +++ b/package/monit/monit.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# monit +# +################################################################################ + +MONIT_VERSION = 5.33.0 +MONIT_SITE = http://mmonit.com/monit/dist +MONIT_LICENSE = AGPL-3.0 with OpenSSL exception +MONIT_LICENSE_FILES = COPYING +MONIT_CPE_ID_VENDOR = mmonit +MONIT_SELINUX_MODULES = monit + +# Touching Makefile.am: +# 0001-configure.ac-fixes-missing-config-macro-dir.patch touches configure.ac +MONIT_AUTORECONF = YES + +MONIT_CONF_ENV = \ + libmonit_cv_setjmp_available=yes \ + libmonit_cv_vsnprintf_c99_conformant=yes \ + ax_cv_check_cflags___fstack_protector_all=$(if $(BR2_TOOLCHAIN_HAS_SSP),yes,no) \ + ac_cv_ipv6=yes + +MONIT_CONF_OPTS += \ + --without-pam \ + --with-largefiles + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +MONIT_DEPENDENCIES += libxcrypt +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +MONIT_CONF_ENV += LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl` +ifeq ($(BR2_STATIC_LIBS),y) +MONIT_CONF_OPTS += --with-ssl-static=$(STAGING_DIR)/usr +else +MONIT_CONF_OPTS += --with-ssl --with-ssl-dir=$(STAGING_DIR)/usr +endif +MONIT_DEPENDENCIES += host-pkgconf openssl +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/package/mono-gtksharp3/0001-Fixes-MONO_PROFILE_ENTER_LEAVE-undeclared.patch b/package/mono-gtksharp3/0001-Fixes-MONO_PROFILE_ENTER_LEAVE-undeclared.patch new file mode 100644 index 00000000..6596849a --- /dev/null +++ b/package/mono-gtksharp3/0001-Fixes-MONO_PROFILE_ENTER_LEAVE-undeclared.patch @@ -0,0 +1,28 @@ +From c1b9bd4214b78dc426bc6e6a07c23a8ab4ab50ea Mon Sep 17 00:00:00 2001 +From: Jordi Mas +Date: Tue, 12 Mar 2019 12:24:19 +0100 +Subject: [PATCH] Fixes MONO_PROFILE_ENTER_LEAVE undeclared when compiling with + newer versions of Mono (#266) + +Signed-off-by: Fabrice Fontaine +[Retrieved from: +https://github.com/mono/gtk-sharp/commit/c1b9bd4214b78dc426bc6e6a07c23a8ab4ab50ea] +--- + gtk/gui-thread-check/profiler/gui-thread-check.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/gtk/gui-thread-check/profiler/gui-thread-check.c b/gtk/gui-thread-check/profiler/gui-thread-check.c +index 11838e3b0..9f45fe6b2 100644 +--- a/gtk/gui-thread-check/profiler/gui-thread-check.c ++++ b/gtk/gui-thread-check/profiler/gui-thread-check.c +@@ -86,6 +86,10 @@ simple_method_enter (MonoProfiler *prof, MonoMethod *method) + } + } + ++#ifndef MONO_PROFILE_ENTER_LEAVE ++#define MONO_PROFILE_ENTER_LEAVE (1 << 12) ++#endif ++ + void + mono_profiler_startup (const char *desc) + { diff --git a/package/mono-gtksharp3/0002-Mono-compilation-error-branch.patch b/package/mono-gtksharp3/0002-Mono-compilation-error-branch.patch new file mode 100644 index 00000000..0d52401b --- /dev/null +++ b/package/mono-gtksharp3/0002-Mono-compilation-error-branch.patch @@ -0,0 +1,25 @@ +From fe18352a4bc9f0cf3b6cf63b8cc03c5d6e41863b Mon Sep 17 00:00:00 2001 +From: plprevost +Date: Wed, 12 May 2021 16:46:16 +0200 +Subject: [PATCH] refs issue:#298 Fix mono compilation errors + +[Retrieved from: +https://github.com/mono/gtk-sharp/pull/299/commits/fe18352a4bc9f0cf3b6cf63b8cc03c5d6e41863b] +Signed-off-by: Fabrice Fontaine +--- + sample/test/TestRange.cs | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sample/test/TestRange.cs b/sample/test/TestRange.cs +index 82fb81105..8727c9a77 100644 +--- a/sample/test/TestRange.cs ++++ b/sample/test/TestRange.cs +@@ -8,7 +8,7 @@ + + using System; + +-using Gtk; ++using Gtk; using Range = Gtk.Range; + + namespace WidgetViewer { + diff --git a/package/mono-gtksharp3/Config.in b/package/mono-gtksharp3/Config.in new file mode 100644 index 00000000..570b62c3 --- /dev/null +++ b/package/mono-gtksharp3/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_MONO_GTKSHARP3 + bool "gtk# 3" + depends on BR2_PACKAGE_LIBGTK3 + help + Gtk# is a .NET language binding for the GTK+ toolkit. + This package provides version 3 of the bindings. + + http://www.mono-project.com/docs/gui/gtksharp/ diff --git a/package/mono-gtksharp3/mono-gtksharp3.hash b/package/mono-gtksharp3/mono-gtksharp3.hash new file mode 100644 index 00000000..706d9851 --- /dev/null +++ b/package/mono-gtksharp3/mono-gtksharp3.hash @@ -0,0 +1,5 @@ +# sha256 from https://download.gnome.org/sources/gtk-sharp/2.99/gtk-sharp-2.99.3.sha256sum +sha256 6440f571416267ae0cb5698071d087b31e3084693fa2c829b1db37ca7ea2c3a2 gtk-sharp-2.99.3.tar.xz + +# Locally computed +sha256 4b96eca92e6964e89c2faf6a810c9a0214daf6be651fa848fdfbb8cef80c04b1 COPYING diff --git a/package/mono-gtksharp3/mono-gtksharp3.mk b/package/mono-gtksharp3/mono-gtksharp3.mk new file mode 100644 index 00000000..27fcda94 --- /dev/null +++ b/package/mono-gtksharp3/mono-gtksharp3.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# gtksharp3 +# +################################################################################ + +MONO_GTKSHARP3_VERSION_MAJOR = 2.99 +MONO_GTKSHARP3_VERSION = $(MONO_GTKSHARP3_VERSION_MAJOR).3 +MONO_GTKSHARP3_SITE = https://download.gnome.org/sources/gtk-sharp/$(MONO_GTKSHARP3_VERSION_MAJOR) +MONO_GTKSHARP3_SOURCE = gtk-sharp-$(MONO_GTKSHARP3_VERSION).tar.xz +MONO_GTKSHARP3_LICENSE = LGPL-2.0, MIT (cairo) +MONO_GTKSHARP3_LICENSE_FILES = COPYING +MONO_GTKSHARP3_INSTALL_STAGING = YES +MONO_GTKSHARP3_DEPENDENCIES = mono libgtk3 +MONO_GTKSHARP3_CONF_OPTS += CSC=$(HOST_DIR)/bin/mcs + +$(eval $(autotools-package)) diff --git a/package/mono/0001-Fix-linkage-with-a-system-libatomic_ops-shared-library.patch b/package/mono/0001-Fix-linkage-with-a-system-libatomic_ops-shared-library.patch new file mode 100644 index 00000000..66d4d8e1 --- /dev/null +++ b/package/mono/0001-Fix-linkage-with-a-system-libatomic_ops-shared-library.patch @@ -0,0 +1,52 @@ +From 02a44ee1df8176c72e75fd706d1a8f063d3196d5 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 5 Nov 2018 22:50:40 +0100 +Subject: Fix linkage with a system libatomic_ops shared library + +Issue #247 (bdwgc). + +When bdwgc is linked with the external libatomic_ops, bdw-gc.pc must +contain the needed dynamic libraries (such as -latomic_ops) otherwise +build of applications could fail on the link stage on some hosts: +* libgc.so: undefined reference to 'AO_fetch_compare_and_swap_emulation' +* libgc.so: undefined reference to 'AO_store_full_emulation' + +So, this commit sets ATOMIC_OPS_LIBS to "-latomic_ops" when a system +atomic_ops library is used and uses ATOMIC_OPS_LIBS in bdw-gc.pc.in. + +* bdw-gc.pc.in (Libs): Add @ATOMIC_OPS_LIBS@. +* configure.ac [$with_libatomic_ops!=no && $with_libatomic_ops!=none +&& $THREADS!=none] (ATOMIC_OPS_LIBS): Set to -latomic_ops; do AC_SUBST. + +Fix is cherry-picked from bdwgc upstream + +Link to original commit https://github.com/ivmai/bdwgc/commit/02a44ee1df8176c72e75fd706d1a8f063d3196d5?branch=02a44ee1df8176c72e75fd706d1a8f063d3196d5&diff=unified + +Signed-off-by: Illia Bitkov + +diff --git a/external/bdwgc/bdw-gc.pc.in b/external/bdwgc/bdw-gc.pc.in +index ef4c2341..a32e7598 100644 +--- a/external/bdwgc/bdw-gc.pc.in ++++ b/external/bdwgc/bdw-gc.pc.in +@@ -6,5 +6,5 @@ includedir=@includedir@ + Name: Boehm-Demers-Weiser Conservative Garbage Collector + Description: A garbage collector for C and C++ + Version: @PACKAGE_VERSION@ +-Libs: -L${libdir} -lgc ++Libs: -L${libdir} @ATOMIC_OPS_LIBS@ -lgc + Cflags: -I${includedir} +diff --git a/external/bdwgc/configure.ac b/external/bdwgc/configure.ac +index 21abe8fa..9ffe81de 100644 +--- a/external/bdwgc/configure.ac ++++ b/external/bdwgc/configure.ac +@@ -1081,7 +1081,9 @@ AS_IF([test x"$with_libatomic_ops" = xno \ + AC_MSG_CHECKING([which libatomic_ops to use]) + AS_IF([test x"$with_libatomic_ops" != xno], + [ AS_IF([test x"$with_libatomic_ops" != xnone -a x"$THREADS" != xnone], +- [ AC_MSG_RESULT([external]) ], ++ [ AC_MSG_RESULT([external]) ++ ATOMIC_OPS_LIBS="-latomic_ops" ++ AC_SUBST([ATOMIC_OPS_LIBS]) ], + [ AC_MSG_RESULT([none]) + AS_IF([test x"$THREADS" != xnone], + [ AC_DEFINE([GC_BUILTIN_ATOMIC], [1], diff --git a/package/mono/0002-Ongoing-work-on-the-cmake-build.patch b/package/mono/0002-Ongoing-work-on-the-cmake-build.patch new file mode 100644 index 00000000..afe618f1 --- /dev/null +++ b/package/mono/0002-Ongoing-work-on-the-cmake-build.patch @@ -0,0 +1,34 @@ +From 17650f7e0f571287bb14bb9b4fbde7b91d842bb4 Mon Sep 17 00:00:00 2001 +From: monojenkins +Date: Thu, 24 Sep 2020 12:17:34 -0400 +Subject: [PATCH] Ongoing work on the cmake build. (#20428) + +* Fix some warnings. +* Avoid creating netcore/config.make. +* Fix CPU_COUNT test. +* Add missing source file. + +Co-authored-by: vargaz + +[Retrieved (and updated to keep only update of icall.c) from: +https://github.com/mono/mono/commit/17650f7e0f571287bb14bb9b4fbde7b91d842bb4] +Signed-off-by: Fabrice Fontaine +--- + mono/metadata/CMakeLists.txt | 1 + + mono/metadata/icall.c | 2 +- + mono/mini/CMakeLists.txt | 5 +++++ + 3 files changed, 7 insertions(+), 1 deletion(-) + +diff --git a/mono/metadata/icall.c b/mono/metadata/icall.c +index fa991bc72e57..f2c003ac1ff1 100644 +--- a/mono/metadata/icall.c ++++ b/mono/metadata/icall.c +@@ -9605,7 +9605,7 @@ mono_create_icall_signatures (void) + int n; + while ((n = sig->param_count)) { + --sig->param_count; // remove ret +- gsize_a *types = (gsize*)(sig + 1); ++ gsize_a *types = (gsize_a*)(sig + 1); + for (int i = 0; i < n; ++i) { + gsize index = *types++; + g_assert (index < G_N_ELEMENTS (lookup)); diff --git a/package/mono/Config.in b/package/mono/Config.in new file mode 100644 index 00000000..0152df82 --- /dev/null +++ b/package/mono/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_HOST_MONO_ARCH_SUPPORTS + bool + default y if BR2_HOSTARCH = "x86_64" + default y if BR2_HOSTARCH = "x86" + +config BR2_PACKAGE_MONO_ARCH_SUPPORTS + bool + default y if (BR2_aarch64 || BR2_arm || BR2_armeb || \ + BR2_i386 || BR2_powerpc || BR2_x86_64) + depends on BR2_PACKAGE_HOST_MONO_ARCH_SUPPORTS + depends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS + +config BR2_PACKAGE_MONO + bool "mono" + depends on BR2_PACKAGE_MONO_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # pthread_getattr_np() + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBATOMIC_OPS + help + An open source, cross-platform, implementation of C# + and the CLR that is binary compatible with Microsoft.NET. + + http://download.mono-project.com/sources/mono/ + +comment "mono needs a toolchain w/ C++, NPTL, dynamic library" + depends on BR2_PACKAGE_MONO_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS diff --git a/package/mono/mono.hash b/package/mono/mono.hash new file mode 100644 index 00000000..1010f6d0 --- /dev/null +++ b/package/mono/mono.hash @@ -0,0 +1,5 @@ +# sha256 locally computed +sha256 57366a6ab4f3b5ecf111d48548031615b3a100db87c679fc006e8c8a4efd9424 mono-6.12.0.182.tar.xz +sha256 923c7053ad0d430cd9b0b69a0ccf3abb7170a1ce50ecbf01915b565a35823d10 LICENSE +sha256 fc488f3ec9f36856bea8cce5cdde1449176341ef93a3962b691970f8981799f4 mcs/COPYING +sha256 2c3c3ef532828bcd42bb3127349625a25291ff5ae7e6f8d42e0fe9b5be836a99 external/Newtonsoft.Json/Tools/7-zip/copying.txt diff --git a/package/mono/mono.mk b/package/mono/mono.mk new file mode 100644 index 00000000..aead85ba --- /dev/null +++ b/package/mono/mono.mk @@ -0,0 +1,67 @@ +################################################################################ +# +# mono +# +################################################################################ + +MONO_VERSION = 6.12.0.182 +MONO_SITE = http://download.mono-project.com/sources/mono +MONO_SOURCE = mono-$(MONO_VERSION).tar.xz +MONO_SELINUX_MODULES = mono +MONO_LICENSE = GPL-2.0 or MIT (compiler, tools), MIT (libs) or commercial +MONO_LICENSE_FILES = LICENSE mcs/COPYING \ + external/Newtonsoft.Json/Tools/7-zip/copying.txt +MONO_CPE_ID_VENDOR = mono-project +MONO_INSTALL_STAGING = YES + +## Mono native + +# patching configure.ac +MONO_AUTORECONF = YES + +MONO_COMMON_CONF_OPTS = --with-mcs-docs=no \ + --with-ikvm-native=no \ + --enable-minimal=profiler,debug \ + --enable-static \ + --disable-btls \ + --disable-system-aot + +# Disable managed code (mcs folder) from building +MONO_CONF_OPTS = $(MONO_COMMON_CONF_OPTS) --disable-mcs-build + +# The libraries have been built by the host-mono build. Since they are +# architecture-independent, we simply copy them to the target. +define MONO_INSTALL_LIBS + rsync -av --exclude=*.so --exclude=*.mdb \ + $(HOST_DIR)/lib/mono $(TARGET_DIR)/usr/lib/ +endef + +MONO_POST_INSTALL_TARGET_HOOKS += MONO_INSTALL_LIBS + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +MONO_DEPENDENCIES += libiconv +endif + +MONO_DEPENDENCIES += \ + host-mono \ + $(if $(BR2_PACKAGE_LIBUNWIND),libunwind) \ + libatomic_ops + +## Mono managed + +HOST_MONO_CONF_OPTS = $(MONO_COMMON_CONF_OPTS) --disable-libraries + +# ensure monolite is used +HOST_MONO_MAKE_OPTS += EXTERNAL_MCS=false + +HOST_MONO_DEPENDENCIES = host-monolite host-gettext host-python3 + +define HOST_MONO_SETUP_MONOLITE + rm -rf $(@D)/mcs/class/lib/monolite + (cd $(@D)/mcs/class/lib; ln -s $(HOST_DIR)/lib/monolite monolite) +endef + +HOST_MONO_POST_CONFIGURE_HOOKS += HOST_MONO_SETUP_MONOLITE + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/monolite/monolite.hash b/package/monolite/monolite.hash new file mode 100644 index 00000000..e72ccfbf --- /dev/null +++ b/package/monolite/monolite.hash @@ -0,0 +1,2 @@ +# sha256 locally computed +sha256 0ac314f75ca2bc4455785f12ceb50da89b6dac90162f9f46afbbb988a8752d4b monolite-linux-1A5E0066-58DC-428A-B21C-0AD6CDAE2789-latest.tar.gz diff --git a/package/monolite/monolite.mk b/package/monolite/monolite.mk new file mode 100644 index 00000000..b0042aab --- /dev/null +++ b/package/monolite/monolite.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# monolite +# +################################################################################ + +MONOLITE_VERSION = 1A5E0066-58DC-428A-B21C-0AD6CDAE2789 +MONOLITE_SITE = http://download.mono-project.com/monolite +MONOLITE_SOURCE = monolite-linux-$(MONOLITE_VERSION)-latest.tar.gz +MONOLITE_LICENSE = LGPL-2.0 or commercial + +define HOST_MONOLITE_INSTALL_CMDS + mkdir -p $(HOST_DIR)/lib/monolite-linux/$(MONOLITE_VERSION) + cp -r $(@D)/* $(HOST_DIR)/lib/monolite-linux/$(MONOLITE_VERSION) +endef + +$(eval $(host-generic-package)) diff --git a/package/mosh/Config.in b/package/mosh/Config.in new file mode 100644 index 00000000..5b90358c --- /dev/null +++ b/package/mosh/Config.in @@ -0,0 +1,34 @@ +comment "mosh needs a toolchain w/ C++, threads, dynamic library, wchar, gcc >= 4.8" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP \ + || BR2_STATIC_LIBS || !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + +config BR2_PACKAGE_MOSH + bool "mosh" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP # protobuf + depends on BR2_TOOLCHAIN_HAS_THREADS # protobuf + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # protobuf + depends on !BR2_STATIC_LIBS # protobuf + depends on BR2_USE_WCHAR + select BR2_PACKAGE_PROTOBUF + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_NETTLE if !BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + # runtime dependency + select BR2_PACKAGE_OPENSSH if !BR2_PACKAGE_DROPBEAR_CLIENT + help + Remote terminal application that supports intermittent + connectivity, allows roaming, and provides speculative local + echo and line editing of user keystrokes. + + Mosh requires that the remote machine has a locale setting + matching the one on the client. + + When using mosh with dropbear on a remote machine, the + client needs mosh with a version above 1.3.0 and the + --no-ssh-pty option needs to be passed when starting the + connection. + + https://mosh.org diff --git a/package/mosh/mosh.hash b/package/mosh/mosh.hash new file mode 100644 index 00000000..6c1d0e7a --- /dev/null +++ b/package/mosh/mosh.hash @@ -0,0 +1,5 @@ +# From https://mailman.mit.edu/pipermail/mosh-users/2017-July/000357.html +sha256 872e4b134e5df29c8933dff12350785054d2fd2839b5ae6b5587b14db1465ddd mosh-1.4.0.tar.gz +# Locally calculcated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING +sha256 8042495ddc8d99b883335d53552554eccf825fc1f0ba487d0f8e6656baaa8199 COPYING.iOS diff --git a/package/mosh/mosh.mk b/package/mosh/mosh.mk new file mode 100644 index 00000000..c938f707 --- /dev/null +++ b/package/mosh/mosh.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# mosh +# +################################################################################ + +MOSH_VERSION = 1.4.0 +MOSH_SITE = https://mosh.org +MOSH_DEPENDENCIES = zlib ncurses protobuf host-pkgconf +MOSH_LICENSE = GPL-3.0+ with exception +MOSH_LICENSE_FILES = COPYING COPYING.iOS + +# protobuf needs c++11 (since 3.6.0) +MOSH_CONF_ENV += CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11" + +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. +ifeq ($(BR2_TOOLCHAIN_HAS_SSP),) +MOSH_CONF_ENV += \ + ax_cv_check_cflags__Werror___fstack_protector_all=no \ + ax_cv_check_cxxflags__Werror___fstack_protector_all=no +endif + +$(eval $(autotools-package)) diff --git a/package/mosquitto/Config.in b/package/mosquitto/Config.in new file mode 100644 index 00000000..8bedf2ad --- /dev/null +++ b/package/mosquitto/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_MOSQUITTO + bool "mosquitto" + help + Eclipse Mosquitto is an open source (EPL/EDL licensed) message + broker that implements the MQTT protocol versions 5.0, 3.1.1 + and 3.1. Mosquitto is lightweight and is suitable for use on + all devices from low power single board computers to full + servers. + + The MQTT protocol provides a lightweight method of carrying + out messaging using a publish/subscribe model. This makes it + suitable for Internet of Things messaging such as with low + power sensors or mobile devices such as phones, + embedded computers or microcontrollers. + + The Mosquitto project also provides a C library for + implementing MQTT clients, and the very popular mosquitto_pub + and mosquitto_sub command line MQTT clients. + + https://mosquitto.org/ + +config BR2_PACKAGE_MOSQUITTO_BROKER + bool "install the mosquitto broker" + default y + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # include + depends on BR2_PACKAGE_MOSQUITTO + select BR2_PACKAGE_LIBWEBSOCKETS_EXT_POLL if BR2_PACKAGE_LIBWEBSOCKETS + help + Build and install the mosquitto broker onto target. + +comment "mosquitto broker needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS + depends on BR2_PACKAGE_MOSQUITTO diff --git a/package/mosquitto/Config.in.host b/package/mosquitto/Config.in.host new file mode 100644 index 00000000..39e287ee --- /dev/null +++ b/package/mosquitto/Config.in.host @@ -0,0 +1,4 @@ +config BR2_PACKAGE_HOST_MOSQUITTO + bool "host mosquitto (mosquitto_passwd)" + help + Only installs mosquitto_passwd. diff --git a/package/mosquitto/S50mosquitto b/package/mosquitto/S50mosquitto new file mode 100644 index 00000000..5241a071 --- /dev/null +++ b/package/mosquitto/S50mosquitto @@ -0,0 +1,35 @@ +#!/bin/sh + +start() { + printf "Starting mosquitto: " + start-stop-daemon -S -q -m -b -p /var/run/mosquitto.pid \ + --exec /usr/sbin/mosquitto \ + -- -c /etc/mosquitto/mosquitto.conf + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping mosquitto: " + start-stop-daemon -K -q -p /var/run/mosquitto.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/package/mosquitto/mosquitto.hash b/package/mosquitto/mosquitto.hash new file mode 100644 index 00000000..453c1934 --- /dev/null +++ b/package/mosquitto/mosquitto.hash @@ -0,0 +1,8 @@ +# Locally calculated after checking gpg signature +# from https://mosquitto.org/files/source/mosquitto-2.0.18.tar.gz.asc +sha256 d665fe7d0032881b1371a47f34169ee4edab67903b2cd2b4c083822823f4448a mosquitto-2.0.18.tar.gz + +# License files +sha256 d3c4ccace4e5d3cc89d34cf2a0bc85b8596bfc0a32b815d0d77f9b7c41b5350c LICENSE.txt +sha256 8c349f80764d0648e645f41ef23772a70c995a0924b5235f735f4a3d09df127c epl-v20 +sha256 86fc4a3f97cb769c04e8da557036c1066eb8bb22b2d0a5dd31464990fe84047c edl-v10 diff --git a/package/mosquitto/mosquitto.mk b/package/mosquitto/mosquitto.mk new file mode 100644 index 00000000..6b249c37 --- /dev/null +++ b/package/mosquitto/mosquitto.mk @@ -0,0 +1,151 @@ +################################################################################ +# +# mosquitto +# +################################################################################ + +MOSQUITTO_VERSION = 2.0.18 +MOSQUITTO_SITE = https://mosquitto.org/files/source +MOSQUITTO_LICENSE = EPL-2.0 or EDLv1.0 +MOSQUITTO_LICENSE_FILES = LICENSE.txt epl-v20 edl-v10 +MOSQUITTO_CPE_ID_VENDOR = eclipse +MOSQUITTO_INSTALL_STAGING = YES + +MOSQUITTO_MAKE_OPTS = \ + CLIENT_STATIC_LDADD="$(MOSQUITTO_STATIC_LIBS)" \ + UNAME=Linux \ + STRIP=true \ + prefix=/usr \ + WITH_WRAP=no \ + WITH_DOCS=no + +ifeq ($(BR2_SHARED_LIBS),y) +MOSQUITTO_MAKE_OPTS += WITH_STATIC_LIBRARIES=no +else +MOSQUITTO_MAKE_OPTS += WITH_STATIC_LIBRARIES=yes +endif + +ifeq ($(BR2_STATIC_LIBS),y) +MOSQUITTO_MAKE_OPTS += WITH_SHARED_LIBRARIES=no +else +MOSQUITTO_MAKE_OPTS += WITH_SHARED_LIBRARIES=yes +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +MOSQUITTO_MAKE_OPTS += WITH_SYSTEMD=yes +MOSQUITTO_DEPENDENCIES += systemd +endif + +# adns uses getaddrinfo_a +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y) +MOSQUITTO_MAKE_OPTS += WITH_ADNS=yes +else +MOSQUITTO_MAKE_OPTS += WITH_ADNS=no +endif + +# threaded API uses pthread_setname_np +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS_NPTL),y) +MOSQUITTO_MAKE_OPTS += WITH_THREADING=yes +else +MOSQUITTO_MAKE_OPTS += WITH_THREADING=no +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +MOSQUITTO_DEPENDENCIES += host-pkgconf openssl +MOSQUITTO_MAKE_OPTS += WITH_TLS=yes +MOSQUITTO_STATIC_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs openssl` +else +MOSQUITTO_MAKE_OPTS += WITH_TLS=no +endif + +ifeq ($(BR2_PACKAGE_CJSON),y) +MOSQUITTO_DEPENDENCIES += cjson +MOSQUITTO_MAKE_OPTS += WITH_CJSON=yes +MOSQUITTO_STATIC_LIBS += -lcjson +else +MOSQUITTO_MAKE_OPTS += WITH_CJSON=no +endif + +ifeq ($(BR2_PACKAGE_C_ARES),y) +MOSQUITTO_DEPENDENCIES += c-ares +MOSQUITTO_MAKE_OPTS += WITH_SRV=yes +else +MOSQUITTO_MAKE_OPTS += WITH_SRV=no +endif + +ifeq ($(BR2_PACKAGE_LIBWEBSOCKETS),y) +MOSQUITTO_DEPENDENCIES += libwebsockets +MOSQUITTO_MAKE_OPTS += WITH_WEBSOCKETS=yes +else +MOSQUITTO_MAKE_OPTS += WITH_WEBSOCKETS=no +endif + +# C++ support is only used to create a wrapper library +ifneq ($(BR2_INSTALL_LIBSTDCPP),y) +define MOSQUITTO_DISABLE_CPP + $(SED) '/-C cpp/d' $(@D)/lib/Makefile +endef + +MOSQUITTO_POST_PATCH_HOOKS += MOSQUITTO_DISABLE_CPP +endif + +MOSQUITTO_MAKE_DIRS = lib client +ifeq ($(BR2_PACKAGE_MOSQUITTO_BROKER),y) +MOSQUITTO_MAKE_DIRS += src apps/mosquitto_ctrl apps/mosquitto_passwd +endif + +define MOSQUITTO_BUILD_CMDS + $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) DIRS="$(MOSQUITTO_MAKE_DIRS)" \ + $(MOSQUITTO_MAKE_OPTS) +endef + +define MOSQUITTO_INSTALL_STAGING_CMDS + $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) DIRS="$(MOSQUITTO_MAKE_DIRS)" \ + $(MOSQUITTO_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install +endef + +define MOSQUITTO_INSTALL_TARGET_CMDS + $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) DIRS="$(MOSQUITTO_MAKE_DIRS)" \ + $(MOSQUITTO_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install + rm -f $(TARGET_DIR)/etc/mosquitto/*.example + $(INSTALL) -D -m 0644 $(@D)/mosquitto.conf \ + $(TARGET_DIR)/etc/mosquitto/mosquitto.conf +endef + +ifeq ($(BR2_PACKAGE_MOSQUITTO_BROKER),y) +define MOSQUITTO_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/mosquitto/S50mosquitto \ + $(TARGET_DIR)/etc/init.d/S50mosquitto +endef + +define MOSQUITTO_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(@D)/service/systemd/mosquitto.service.notify \ + $(TARGET_DIR)/usr/lib/systemd/system/mosquitto.service +endef + +define MOSQUITTO_USERS + mosquitto -1 mosquitto -1 * - - - Mosquitto user +endef +endif + +HOST_MOSQUITTO_DEPENDENCIES = host-pkgconf host-openssl + +HOST_MOSQUITTO_MAKE_OPTS = \ + $(HOST_CONFIGURE_OPTS) \ + UNAME=Linux \ + STRIP=true \ + prefix=$(HOST_DIR) \ + WITH_WRAP=no \ + WITH_DOCS=no \ + WITH_TLS=yes + +define HOST_MOSQUITTO_BUILD_CMDS + $(MAKE) -C $(@D)/apps/mosquitto_passwd $(HOST_MOSQUITTO_MAKE_OPTS) +endef + +define HOST_MOSQUITTO_INSTALL_CMDS + $(MAKE) -C $(@D)/apps/mosquitto_passwd $(HOST_MOSQUITTO_MAKE_OPTS) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/most/Config.in b/package/most/Config.in new file mode 100644 index 00000000..194d2bd3 --- /dev/null +++ b/package/most/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_MOST + bool "most" + depends on BR2_USE_MMU # slang + select BR2_PACKAGE_SLANG + help + most is a powerful pager, including features like multi + document support, hex view and unpack on-the-fly. + + Note: this program depends on the slang library which is + rather large to be used just for this pager. + + https://www.jedsoft.org/most/ diff --git a/package/most/most.hash b/package/most/most.hash new file mode 100644 index 00000000..ec9da9ad --- /dev/null +++ b/package/most/most.hash @@ -0,0 +1,6 @@ +# From https://www.jedsoft.org/releases/most/ +sha1 322073ee6e8c45ce084f4fccd08d3f026aa1f66d most-5.2.0.tar.gz +# Locally computed +sha256 9455aeb8f826fa8385c850dc22bf0f22cf9069b3c3423fba4bf2c6f6226d9903 most-5.2.0.tar.gz +sha256 1b2a567f289f66a143c56353e7b3d4fa5862514a5e3c5cfdf8b02ee5e5aaa953 COPYING +sha256 3d8f860532c9f202db9300375fb29a1e7b32f538c6033e7013266ad55317fc3e COPYRIGHT diff --git a/package/most/most.mk b/package/most/most.mk new file mode 100644 index 00000000..24627c04 --- /dev/null +++ b/package/most/most.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# most +# +################################################################################ + +MOST_SITE = http://www.jedsoft.org/releases/most +MOST_VERSION = 5.2.0 +MOST_LICENSE = GPL-2.0+ +MOST_LICENSE_FILES = COPYING COPYRIGHT +MOST_DEPENDENCIES = slang + +MOST_CONF_OPTS = --with-slang=$(STAGING_DIR)/usr +MOST_MAKE = $(MAKE1) + +define MOST_REMOVE_LOCAL_SLANG_CHECK + $(SED) 's/ slangversion / /g' $(@D)/src/Makefile.in +endef +MOST_POST_PATCH_HOOKS += MOST_REMOVE_LOCAL_SLANG_CHECK + +define MOST_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/src/objs/most $(TARGET_DIR)/usr/bin/most +endef + +$(eval $(autotools-package)) diff --git a/package/motion/Config.in b/package/motion/Config.in new file mode 100644 index 00000000..7a2e5dbe --- /dev/null +++ b/package/motion/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_MOTION + bool "motion" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBMICROHTTPD + 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/package/motion/S99motion b/package/motion/S99motion new file mode 100644 index 00000000..36bfc238 --- /dev/null +++ b/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/package/motion/motion.hash b/package/motion/motion.hash new file mode 100644 index 00000000..e8bbfbcb --- /dev/null +++ b/package/motion/motion.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 9268df31a5ebeaf8daca4747cdcd01c86e223625b6f971e9bcec98edf35ec06f motion-4.6.0.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/motion/motion.mk b/package/motion/motion.mk new file mode 100644 index 00000000..ff5e2c14 --- /dev/null +++ b/package/motion/motion.mk @@ -0,0 +1,72 @@ +################################################################################ +# +# motion +# +################################################################################ + +MOTION_VERSION = 4.6.0 +MOTION_SITE = $(call github,Motion-Project,motion,release-$(MOTION_VERSION)) +MOTION_LICENSE = GPL-2.0 +MOTION_LICENSE_FILES = LICENSE +MOTION_CPE_ID_VALID = YES +MOTION_DEPENDENCIES = host-pkgconf jpeg libmicrohttpd $(TARGET_NLS_DEPENDENCIES) +# From git +MOTION_AUTORECONF = YES +MOTION_AUTOPOINT = YES + +MOTION_CONF_OPTS += --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_MARIADB),y) +MOTION_DEPENDENCIES += mariadb +MOTION_CONF_OPTS += --with-mysql +else +MOTION_CONF_OPTS += --without-mysql +endif + +ifeq ($(BR2_PACKAGE_POSTGRESQL),y) +MOTION_DEPENDENCIES += postgresql +MOTION_CONF_OPTS += --with-pgsql +else +MOTION_CONF_OPTS += --without-pgsql +endif + +ifeq ($(BR2_PACKAGE_SQLITE),y) +MOTION_DEPENDENCIES += sqlite +MOTION_CONF_OPTS += --with-sqlite3 +else +MOTION_CONF_OPTS += --without-sqlite3 +endif + +ifeq ($(BR2_PACKAGE_WEBP_MUX),y) +MOTION_DEPENDENCIES += webp +MOTION_CONF_OPTS += --with-webp +else +MOTION_CONF_OPTS += --without-webp +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)/data/motion-dist.conf \ + $(TARGET_DIR)/etc/motion/motion.conf + $(INSTALL) -D -m 0755 $(@D)/src/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 +endef + +$(eval $(autotools-package)) diff --git a/package/motion/motion.service b/package/motion/motion.service new file mode 100644 index 00000000..c788cd64 --- /dev/null +++ b/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/package/mp4v2/Config.in b/package/mp4v2/Config.in new file mode 100644 index 00000000..705a8c9d --- /dev/null +++ b/package/mp4v2/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_MP4V2 + bool "mp4v2" + depends on BR2_INSTALL_LIBSTDCPP + help + The MP4v2 library provides functions to read, create, and + modify mp4 files. + + https://mp4v2.org/ + +if BR2_PACKAGE_MP4V2 + +config BR2_PACKAGE_MP4V2_UTIL + bool "Install mp4 command line tools" + help + Enable to install the mp4 command line tools mp4art, + mp4chaps, mp4extract, mp4info, mp4subtitle, mp4tags, and + mp4trackdump. + +endif + +comment "mp4v2 needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/mp4v2/mp4v2.hash b/package/mp4v2/mp4v2.hash new file mode 100644 index 00000000..4605ee6b --- /dev/null +++ b/package/mp4v2/mp4v2.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 033185c17bf3c5fdd94020c95f8325be2e5356558e3913c3d6547a85dd61f7f1 mp4v2-2.1.3.tar.bz2 +sha256 7187891a4c39ee9e7ec70c71fc7dc8b8ed02c6f56ae1ffc017a34ac66dca5390 COPYING diff --git a/package/mp4v2/mp4v2.mk b/package/mp4v2/mp4v2.mk new file mode 100644 index 00000000..ae777cdc --- /dev/null +++ b/package/mp4v2/mp4v2.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# mp4v2 +# +################################################################################ + +MP4V2_VERSION = 2.1.3 +MP4V2_SITE = \ + https://github.com/enzo1982/mp4v2/releases/download/v$(MP4V2_VERSION) +MP4V2_SOURCE = mp4v2-$(MP4V2_VERSION).tar.bz2 +MP4V2_INSTALL_STAGING = YES +MP4V2_LICENSE = MPL-1.1 +MP4V2_LICENSE_FILES = COPYING + +# help2man expects to be able to run utilities on the build machine to +# grab --help output which doesn't work when cross compiling, so +# disable it +MP4V2_CONF_ENV = ac_cv_prog_FOUND_HELP2MAN=no + +ifeq ($(BR2_PACKAGE_MP4V2_UTIL),y) +MP4V2_CONF_OPTS += --enable-util +else +MP4V2_CONF_OPTS += --disable-util +endif + +$(eval $(autotools-package)) diff --git a/package/mpc/Config.in b/package/mpc/Config.in new file mode 100644 index 00000000..83770133 --- /dev/null +++ b/package/mpc/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_MPC + bool "mpc" + select BR2_PACKAGE_MPFR + select BR2_PACKAGE_GMP + help + Mpc is a C library for the arithmetic of complex numbers with + arbitrarily high precision and correct rounding of the result. + It is built upon and follows the same principles as Mpfr. + + http://www.multiprecision.org/ diff --git a/package/mpc/mpc.hash b/package/mpc/mpc.hash new file mode 100644 index 00000000..f69a5b66 --- /dev/null +++ b/package/mpc/mpc.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 ab642492f5cf882b74aa0cb730cd410a81edcdbec895183ce930e706c1c759b8 mpc-1.3.1.tar.gz +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 COPYING.LESSER diff --git a/package/mpc/mpc.mk b/package/mpc/mpc.mk new file mode 100644 index 00000000..467bed4d --- /dev/null +++ b/package/mpc/mpc.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# mpc +# +################################################################################ + +MPC_VERSION = 1.3.1 +MPC_SITE = $(BR2_GNU_MIRROR)/mpc +MPC_LICENSE = LGPL-3.0+ +MPC_LICENSE_FILES = COPYING.LESSER +MPC_INSTALL_STAGING = YES +MPC_DEPENDENCIES = gmp mpfr +HOST_MPC_DEPENDENCIES = host-gmp host-mpfr + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/mpd-mpc/Config.in b/package/mpd-mpc/Config.in new file mode 100644 index 00000000..1debc839 --- /dev/null +++ b/package/mpd-mpc/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_MPD_MPC + bool "mpd-mpc" + select BR2_PACKAGE_LIBMPDCLIENT + help + A minimalist command line interface to MPD. + + http://www.musicpd.org/clients/mpc/ diff --git a/package/mpd-mpc/mpd-mpc.hash b/package/mpd-mpc/mpd-mpc.hash new file mode 100644 index 00000000..0ccda3c7 --- /dev/null +++ b/package/mpd-mpc/mpd-mpc.hash @@ -0,0 +1,3 @@ +# Locally calculated after checking pgp signature +sha256 382959c3bfa2765b5346232438650491b822a16607ff5699178aa1386e3878d4 mpc-0.35.tar.xz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/mpd-mpc/mpd-mpc.mk b/package/mpd-mpc/mpd-mpc.mk new file mode 100644 index 00000000..a58423b4 --- /dev/null +++ b/package/mpd-mpc/mpd-mpc.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# mpd-mpc +# +################################################################################ + +MPD_MPC_VERSION_MAJOR = 0 +MPD_MPC_VERSION = $(MPD_MPC_VERSION_MAJOR).35 +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 = GPL-2.0+ +MPD_MPC_LICENSE_FILES = COPYING +MPD_MPC_DEPENDENCIES = host-pkgconf libmpdclient +MPD_MPC_CONF_OPTS = -Ddocumentation=disabled + +$(eval $(meson-package)) diff --git a/package/mpd/0001-src-event-meson.build-add-atomic-dependency-for-spar.patch b/package/mpd/0001-src-event-meson.build-add-atomic-dependency-for-spar.patch new file mode 100644 index 00000000..390cf125 --- /dev/null +++ b/package/mpd/0001-src-event-meson.build-add-atomic-dependency-for-spar.patch @@ -0,0 +1,39 @@ +From cb190801706da046823c74f89472af83ff947ce1 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 17 Aug 2019 22:25:06 +0200 +Subject: [PATCH] src/event/meson.build: add atomic dependency for sparc + +Linking with libatomic is needed on sparc otherwise build fails on: +/usr/lfs/v0/rc-buildroot-test/scripts/instance-0/output/host/opt/ext-toolchain/bin/../lib/gcc/sparc-buildroot-linux-uclibc/7.4.0/../../../../sparc-buildroot-linux-uclibc/bin/ld: src/event/libevent.a(MaskMonitor.cxx.o): undefined reference to symbol '__atomic_fetch_or_4@@LIBATOMIC_1.0' + +Fixes: + - http://autobuild.buildroot.org/results/7a9fdb7e323892fb6ed85a2441054303e889c089 + +Signed-off-by: Fabrice Fontaine +[Upstream status: not sent (the same kind of patch for ncmpc was +refused: https://github.com/MusicPlayerDaemon/ncmpc/pull/45)] +--- + src/event/meson.build | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/event/meson.build b/src/event/meson.build +index bc13bbcd2..88370c03a 100644 +--- a/src/event/meson.build ++++ b/src/event/meson.build +@@ -47,9 +47,13 @@ event = declare_dependency( + ], + ) + ++# Needed on sparc ++atomic_dep = c_compiler.find_library('atomic', required: false) ++ + event_dep = declare_dependency( + link_with: event, + dependencies: [ ++ atomic_dep, + thread_dep, + net_dep, + system_dep, +-- +2.20.1 + diff --git a/package/mpd/0002-lib-fmt-support-build-with-libfmt-11.0.0.patch b/package/mpd/0002-lib-fmt-support-build-with-libfmt-11.0.0.patch new file mode 100644 index 00000000..e0a361fe --- /dev/null +++ b/package/mpd/0002-lib-fmt-support-build-with-libfmt-11.0.0.patch @@ -0,0 +1,93 @@ +From 1402869715e3efca87942d79c3173a6b21a6925d Mon Sep 17 00:00:00 2001 +From: Rudi Heitbaum +Date: Fri, 5 Jul 2024 14:27:45 +0000 +Subject: [PATCH] lib/fmt: support build with libfmt-11.0.0 + +Upstream libfmt commit fmtlib/fmt@d707292 +now requires the format function to be const. + +Adjust the function prototype so it is const and can compile. + +Signed-off-by: Rudi Heitbaum + +Context: https://github.com/MusicPlayerDaemon/MPD/issues/2071 +Pull request: https://github.com/MusicPlayerDaemon/MPD/pull/2069 + +Fixes: http://autobuild.buildroot.net/results/73514ea76a5960f59b4c50e2074571b10e4682d4 +Fixes: http://autobuild.buildroot.net/results/a58ddbdfe35bd19021e65db0b8b8cc4c1c884d51 + +Rebase for mpd-0.23.15 + +Upstream: https://github.com/MusicPlayerDaemon/MPD/commit/3648475f871c33daa9e598c102a16e5a1a4d4dfc +Signed-off-by: Andreas Ziegler +--- + src/lib/ffmpeg/LibFmt.hxx | 2 +- + src/lib/fmt/AudioFormatFormatter.hxx | 4 ++-- + src/lib/fmt/ExceptionFormatter.hxx | 2 +- + src/lib/fmt/PathFormatter.hxx | 2 +- + 4 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/lib/ffmpeg/LibFmt.hxx b/src/lib/ffmpeg/LibFmt.hxx +index aa068711f..dee83ed2d 100644 +--- a/src/lib/ffmpeg/LibFmt.hxx ++++ b/src/lib/ffmpeg/LibFmt.hxx +@@ -29,7 +29,7 @@ + struct fmt::formatter : formatter + { + template +- auto format(const AVSampleFormat format, FormatContext &ctx) { ++ auto format(const AVSampleFormat format, FormatContext &ctx) const { + const char *name = av_get_sample_fmt_name(format); + if (name == nullptr) + name = "?"; +diff --git a/src/lib/fmt/AudioFormatFormatter.hxx b/src/lib/fmt/AudioFormatFormatter.hxx +index e0ffb6216..8da98efd4 100644 +--- a/src/lib/fmt/AudioFormatFormatter.hxx ++++ b/src/lib/fmt/AudioFormatFormatter.hxx +@@ -39,7 +39,7 @@ + struct fmt::formatter : formatter + { + template +- auto format(const SampleFormat format, FormatContext &ctx) { ++ auto format(const SampleFormat format, FormatContext &ctx) const { + return formatter::format(sample_format_to_string(format), + ctx); + } +@@ -49,7 +49,7 @@ + struct fmt::formatter : formatter + { + template +- auto format(const AudioFormat &af, FormatContext &ctx) { ++ auto format(const AudioFormat &af, FormatContext &ctx) const { + return formatter::format(ToString(af).c_str(), + ctx); + } +diff --git a/src/lib/fmt/ExceptionFormatter.hxx b/src/lib/fmt/ExceptionFormatter.hxx +index 3f342df67..f08b3bb22 100644 +--- a/src/lib/fmt/ExceptionFormatter.hxx ++++ b/src/lib/fmt/ExceptionFormatter.hxx +@@ -38,7 +38,7 @@ + struct fmt::formatter : formatter + { + template +- auto format(std::exception_ptr e, FormatContext &ctx) { ++ auto format(std::exception_ptr e, FormatContext &ctx) const { + return formatter::format(GetFullMessage(e), ctx); + } + }; +diff --git a/src/lib/fmt/PathFormatter.hxx b/src/lib/fmt/PathFormatter.hxx +index e5ae89dec..add06df81 100644 +--- a/src/lib/fmt/PathFormatter.hxx ++++ b/src/lib/fmt/PathFormatter.hxx +@@ -29,7 +29,7 @@ + struct fmt::formatter : formatter + { + template +- auto format(Path path, FormatContext &ctx) { ++ auto format(Path path, FormatContext &ctx) const { + return formatter::format(path.ToUTF8(), ctx); + } + }; +-- +2.43.0 + diff --git a/package/mpd/Config.in b/package/mpd/Config.in new file mode 100644 index 00000000..902a3da7 --- /dev/null +++ b/package/mpd/Config.in @@ -0,0 +1,444 @@ +menuconfig BR2_PACKAGE_MPD + bool "mpd" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR # boost + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # C++17 + depends on BR2_HOST_GCC_AT_LEAST_8 # C++17 + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_FMT + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + MPD is a flexible, powerful, server-side application + for playing music. Through plugins and libraries + it can play a variety of sound files while being + controlled by its network protocol. + + https://www.musicpd.org + +if BR2_PACKAGE_MPD + +comment "Archive plugins" + +config BR2_PACKAGE_MPD_BZIP2 + bool "bzip2" + select BR2_PACKAGE_BZIP2 + help + Enable bzip2 archive support. + +config BR2_PACKAGE_MPD_SQLITE + bool "sqlite" + select BR2_PACKAGE_SQLITE + help + Enable sqlite database support. + If you don't use sqlite it will use an ASCII database. + +config BR2_PACKAGE_MPD_ZZIP + bool "zzip" + select BR2_PACKAGE_ZZIPLIB + help + Enable ZIP archive support. + +comment "Commercial services" + +config BR2_PACKAGE_MPD_QOBUZ + bool "qobuz" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS + select BR2_PACKAGE_MPD_CURL + select BR2_PACKAGE_LIBGCRYPT + select BR2_PACKAGE_YAJL + help + Play songs from the commercial streaming service Qobuz. + +config BR2_PACKAGE_MPD_SOUNDCLOUD + bool "soundcloud" + select BR2_PACKAGE_MPD_CURL + select BR2_PACKAGE_YAJL + help + Enable soundcloud.com playlist support. + +comment "Converter plugins" + +config BR2_PACKAGE_MPD_LIBSAMPLERATE + bool "libsamplerate" + select BR2_PACKAGE_LIBSAMPLERATE + help + Enable libsamplerate input support. + Select this for software sample rate conversion. + +config BR2_PACKAGE_MPD_LIBSOXR + bool "libsoxr" + select BR2_PACKAGE_LIBSOXR + help + Enable libsoxr resampler support. + The SoX Resampler library performs software sample-rate + conversion. + +comment "Decoder plugins" + +config BR2_PACKAGE_MPD_DSD + bool "dsd" + help + Enable Digital Speech Decoder (DSD) support to play audio + files encoded in a digital speech format. + +config BR2_PACKAGE_MPD_FAAD2 + bool "faad2" + select BR2_PACKAGE_FAAD2 + help + Enable faad2 input support. + Select this if you want to play back MP4/AAC files. + +config BR2_PACKAGE_MPD_FFMPEG + bool "ffmpeg" + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + select BR2_PACKAGE_FFMPEG + help + Enable ffmpeg input support. + Select this if you want to play back files supported by + ffmpeg. + +config BR2_PACKAGE_MPD_FLAC + bool "flac" + select BR2_PACKAGE_FLAC + help + Enable flac input/streaming support. + Select this if you want to play back FLAC files. + +config BR2_PACKAGE_MPD_FLUIDSYNTH + bool "fluidsynth" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_FLUIDSYNTH + help + Enable fluidsynth MIDI decoder support. + +comment "fluidsynth support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_MPD_LIBSNDFILE + bool "libsndfile" + select BR2_PACKAGE_LIBSNDFILE + help + Enable libsndfile input/streaming support. + Select this if you want to play back WAV files. + +config BR2_PACKAGE_MPD_MAD + bool "mad" + default y + select BR2_PACKAGE_MPD_ID3TAG + select BR2_PACKAGE_LIBMAD + help + Enable mad input support. + Select this if you want to play back MP3 files. + +config BR2_PACKAGE_MPD_MODPLUG + bool "modplug" + select BR2_PACKAGE_LIBMODPLUG + help + Enable Modplug decoder support. + +config BR2_PACKAGE_MPD_MPG123 + bool "mpg123" + select BR2_PACKAGE_MPD_ID3TAG + select BR2_PACKAGE_MPG123 + help + Enable mpg123 input support. + Select this if you want to play back MP3 files. + +config BR2_PACKAGE_MPD_MUSEPACK + bool "musepack" + select BR2_PACKAGE_LIBCUEFILE + select BR2_PACKAGE_LIBREPLAYGAIN + select BR2_PACKAGE_MUSEPACK + help + Enable musepack input support. + Select this if you want to play back MPC files. + +config BR2_PACKAGE_MPD_OPUS + bool "opus" + select BR2_PACKAGE_OPUS + select BR2_PACKAGE_LIBOGG + help + Enable opus input support. + Select this if you want to play back OPUS encoded files. + +config BR2_PACKAGE_MPD_SIDPLAY + bool "sidplay" + select BR2_PACKAGE_LIBSIDPLAY2 + help + Enable C64 SID support. + +config BR2_PACKAGE_MPD_TREMOR + bool "tremor" + depends on !BR2_PACKAGE_MPD_VORBIS + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_TREMOR + help + Enable vorbis input support. + Select this if you want to play back OGG files on softfloat + targets. + +config BR2_PACKAGE_MPD_VORBIS + bool "vorbis" + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_LIBVORBIS + help + Enable vorbis input/streaming support. + Select this if you want to play back OGG files on hardfloat + targets. + +config BR2_PACKAGE_MPD_WAVPACK + bool "wavpack" + select BR2_PACKAGE_WAVPACK + help + Enable wavpack input support. + Select this if you want to play back WV files. + +comment "Encoder plugins" + +config BR2_PACKAGE_MPD_LAME + bool "lame" + select BR2_PACKAGE_LAME + help + Enable lame (mp3) encoding support. + +config BR2_PACKAGE_MPD_TWOLAME + bool "twolame" + select BR2_PACKAGE_TWOLAME + help + Enable TwoLAME mp2 encoding. + +comment "Input plugins" + +config BR2_PACKAGE_MPD_CDIO_PARANOIA + bool "cdio-paranoia" + select BR2_PACKAGE_LIBCDIO_PARANOIA + help + Enable cdio-paranoia support. + +config BR2_PACKAGE_MPD_CURL + bool "curl" + select BR2_PACKAGE_LIBCURL + help + Enable curl streaming (http) support. + +config BR2_PACKAGE_MPD_LIBMMS + bool "mms" + select BR2_PACKAGE_LIBMMS + help + Enable MMS support. + +config BR2_PACKAGE_MPD_LIBNFS + bool "nfs" + # libnfs -> libtirpc + depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC || BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBNFS + help + Enable Network File System (NFS) support. + +comment "nfs support needs a toolchain w/ threads support" + depends on !(BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_HAS_NATIVE_RPC) + +comment "samba support needs a glibc toolchain w/ dynamic library, RPC" + depends on !BR2_nios2 + depends on !BR2_TOOLCHAIN_USES_GLIBC || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_NATIVE_RPC + +config BR2_PACKAGE_MPD_LIBSMBCLIENT + bool "samba" + depends on !BR2_nios2 # samba + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_SAMBA4 + help + Enable Samba support. + +comment "Output plugins" + +config BR2_PACKAGE_MPD_ALSA + bool "alsa" + default y + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_PCM + select BR2_PACKAGE_ALSA_LIB_MIXER + help + Enable alsa output support. + +config BR2_PACKAGE_MPD_AO + bool "ao" + select BR2_PACKAGE_LIBAO + help + Enable libao output support. + +config BR2_PACKAGE_MPD_HTTPD_OUTPUT + bool "httpd output" + help + Enable httpd output support. + +config BR2_PACKAGE_MPD_JACK2 + bool "jack2" + depends on !BR2_STATIC_LIBS # jack2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_JACK2 + help + Enable jack output support. + +comment "jack support needs a toolchain w/ dynamic library" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_MPD_OPENAL + bool "openal" + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_PACKAGE_OPENAL + help + Enable OpenAL output support. + +comment "openal support needs a toolchain w/ NPTL" + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL + +config BR2_PACKAGE_MPD_OSS + bool "oss" + help + Enable OSS (Open Sound System) output support. + +config BR2_PACKAGE_MPD_PULSEAUDIO + bool "pulseaudio" + depends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU + select BR2_PACKAGE_PULSEAUDIO + help + Enable pulseaudio output support. + +comment "pulseaudio support needs a toolchain w/ threads, wchar, dynamic library" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || !BR2_USE_WCHAR + +config BR2_PACKAGE_MPD_SHOUTCAST + bool "shoutcast" + select BR2_PACKAGE_LIBSHOUT + help + Enable shoutcast streaming output support. + +comment "Miscellaneous plugins" + +config BR2_PACKAGE_MPD_AVAHI_SUPPORT + bool "avahi (zeroconf) support" + depends on !BR2_STATIC_LIBS # avahi + select BR2_PACKAGE_AVAHI + select BR2_PACKAGE_AVAHI_DAEMON + select BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY + help + Enable Avahi (zeroconf) support. + Select this for multicast DNS/DNS-SD service discovery + support. This allows MPD to publish service information on a + local network. + +comment "avahi support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_MPD_IO_URING + bool "io_uring" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1 + select BR2_PACKAGE_LIBURING + help + Asynchronous I/O using kernel io_uring subsystem + +comment "io_uring support needs a toolchain w/ headers >= 5.1" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1 + +config BR2_PACKAGE_MPD_LIBMPDCLIENT + bool "libmpdclient" + select BR2_PACKAGE_LIBMPDCLIENT + help + Enable libmpdclient support. + +config BR2_PACKAGE_MPD_NEIGHBOR_DISCOVERY_SUPPORT + bool "neighbor discovery support" + depends on BR2_PACKAGE_MPD_LIBSMBCLIENT || !BR2_PACKAGE_MPD_UPNP_DISABLED + help + Enable support for neighbor discovery. + This option can be used in conjunction with the smbclient + plugin to provide a list of SMB/CIFS servers or with the + UPnP plugin to provide a list of UPnP servers on the local + network. The neighbor plugin needs configuration in + mpd.conf. For further information take a look at the MPD + documentation. + +config BR2_PACKAGE_MPD_TCP + bool "tcp sockets" + default y + help + Enable MPD to listen on tcp sockets. + + You want this on if MPD and the client(s) work + on different machines (the usual scenario). + +choice + prompt "UPnP" + default BR2_PACKAGE_MPD_UPNP_PUPNP if BR2_PACKAGE_MPD_UPNP # legacy + default BR2_PACKAGE_MPD_UPNP_DISABLED + help + Enable MPD to access a UPnP based media server. + + For further information, see + https://www.lesbonscomptes.com/upmpdcli/pages/upmpdcli-or-mpdupnp.html + +config BR2_PACKAGE_MPD_UPNP_PUPNP + bool "pupnp" + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_LIBUPNP + select BR2_PACKAGE_MPD_CURL + help + Provides UPnP database access through libupnp + (the legacy Portable SDK for UPnP devices). + + Introduces least additional dependencies. + +config BR2_PACKAGE_MPD_UPNP_NPUPNP + bool "npupnp" + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_LIBNPUPNP + select BR2_PACKAGE_MPD_CURL + help + Provides UPnP database access through libnpupnp + (a C++ reimplementation of the Portable UPnP library). + + This implementation is more modern, but also brings + additional features not needed in this context, thus + consuming more space. + +config BR2_PACKAGE_MPD_UPNP_DISABLED + bool "disabled" + help + No UPnP client functionality. + +endchoice + +comment "Tag plugins" + +config BR2_PACKAGE_MPD_ID3TAG + bool "id3tag" + select BR2_PACKAGE_LIBID3TAG + help + Enable ID3 support. + +endif + +comment "mpd needs a toolchain w/ C++, threads, wchar, gcc >= 8, host gcc >= 8" + 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_8 || \ + !BR2_HOST_GCC_AT_LEAST_8 diff --git a/package/mpd/S95mpd b/package/mpd/S95mpd new file mode 100644 index 00000000..ac971e04 --- /dev/null +++ b/package/mpd/S95mpd @@ -0,0 +1,61 @@ +#!/bin/sh +# +# S95mpd Starts Music Player daemon. +# +# shellcheck disable=SC2317 # functions are called via variable + +DAEMON="mpd" +PIDFILE="/var/run/$DAEMON.pid" + +# Sanity checks +[ -f /etc/$DAEMON.conf ] || exit 0 + +start() { + printf "Starting %s: " "$DAEMON" + start-stop-daemon --start --pidfile "$PIDFILE" \ + --exec "/usr/bin/$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf "Stopping %s: " "$DAEMON" + start-stop-daemon --stop --pidfile "$PIDFILE" \ + --exec "/usr/bin/$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + # $DAEMON deletes its PID file on exit, wait for it to be gone + while [ -f "$PIDFILE" ]; do + sleep 0.1 + done + return "$status" +} + +restart() { + stop + start +} + +reload() { + restart +} + +case "$1" in + start|stop|reload|restart) + "$1" + ;; + *) + echo "Usage: $0 {start|stop|reload|restart}" + exit 1 +esac + +exit $? diff --git a/package/mpd/mpd.conf b/package/mpd/mpd.conf new file mode 100644 index 00000000..5956b75e --- /dev/null +++ b/package/mpd/mpd.conf @@ -0,0 +1,32 @@ +# +# Sample configuration file for mpd +# This is a minimal configuration, see the manpage for more options +# + +# Directory where the music is stored +music_directory "/var/lib/mpd/music" + +# Directory where user-made playlists are stored (RW) +playlist_directory "/var/lib/mpd/playlists" + +# Database file (RW) +db_file "/var/lib/mpd/database" + +# Log file (RW) +log_file "/var/log/mpd.log" + +# Process ID file (RW) +pid_file "/var/run/mpd.pid" + +# State file (RW) +state_file "/var/lib/mpd/state" + +# User id to run the daemon as +#user "nobody" + +# TCP socket binding +bind_to_address "any" +#bind_to_address "localhost" + +# Unix socket to listen on +bind_to_address "/var/lib/mpd/socket" diff --git a/package/mpd/mpd.hash b/package/mpd/mpd.hash new file mode 100644 index 00000000..fe3d449c --- /dev/null +++ b/package/mpd/mpd.hash @@ -0,0 +1,3 @@ +# Locally calculated after checking pgp signature +sha256 550132239ad1acf82ccf8905b56cc13dc2c81a4489b96fba7731b3049907661a mpd-0.23.15.tar.xz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/mpd/mpd.mk b/package/mpd/mpd.mk new file mode 100644 index 00000000..e320ad9d --- /dev/null +++ b/package/mpd/mpd.mk @@ -0,0 +1,367 @@ +################################################################################ +# +# mpd +# +################################################################################ + +MPD_VERSION_MAJOR = 0.23 +MPD_VERSION = $(MPD_VERSION_MAJOR).15 +MPD_SOURCE = mpd-$(MPD_VERSION).tar.xz +MPD_SITE = https://www.musicpd.org/download/mpd/$(MPD_VERSION_MAJOR) +MPD_DEPENDENCIES = host-pkgconf boost fmt +MPD_LICENSE = GPL-2.0+ +MPD_LICENSE_FILES = COPYING +# these refer to the FreeBSD PPP daemon +MPD_IGNORE_CVES = CVE-2020-7465 CVE-2020-7466 +MPD_SELINUX_MODULES = mpd +MPD_CONF_OPTS = \ + -Daudiofile=disabled \ + -Ddocumentation=disabled \ + -Dopenmpt=disabled \ + -Dpipewire=disabled \ + -Dsnapcast=false + +# Zeroconf support depends on libdns_sd from avahi. +ifeq ($(BR2_PACKAGE_MPD_AVAHI_SUPPORT),y) +MPD_DEPENDENCIES += avahi +MPD_CONF_OPTS += -Dzeroconf=avahi +else +MPD_CONF_OPTS += -Dzeroconf=disabled +endif + +ifeq ($(BR2_PACKAGE_EXPAT),y) +MPD_DEPENDENCIES += expat +MPD_CONF_OPTS += -Dexpat=enabled +else +MPD_CONF_OPTS += -Dexpat=disabled +endif + +# MPD prefers libicu for utf8 collation instead of libglib2. +ifeq ($(BR2_PACKAGE_ICU),y) +MPD_DEPENDENCIES += icu +MPD_CONF_OPTS += -Dicu=enabled +else +MPD_CONF_OPTS += -Dicu=disabled +endif + +ifeq ($(BR2_PACKAGE_YAJL),y) +MPD_DEPENDENCIES += yajl +MPD_CONF_OPTS += -Dyajl=enabled +else +MPD_CONF_OPTS += -Dyajl=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_ALSA),y) +MPD_DEPENDENCIES += alsa-lib +MPD_CONF_OPTS += -Dalsa=enabled +else +MPD_CONF_OPTS += -Dalsa=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_AO),y) +MPD_DEPENDENCIES += libao +MPD_CONF_OPTS += -Dao=enabled +else +MPD_CONF_OPTS += -Dao=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_BZIP2),y) +MPD_DEPENDENCIES += bzip2 +MPD_CONF_OPTS += -Dbzip2=enabled +else +MPD_CONF_OPTS += -Dbzip2=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_CDIO_PARANOIA),y) +MPD_DEPENDENCIES += libcdio-paranoia +MPD_CONF_OPTS += -Dcdio_paranoia=enabled +else +MPD_CONF_OPTS += -Dcdio_paranoia=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_CURL),y) +MPD_DEPENDENCIES += libcurl +MPD_CONF_OPTS += -Dcurl=enabled +else +MPD_CONF_OPTS += -Dcurl=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_DSD),y) +MPD_CONF_OPTS += -Ddsd=true +else +MPD_CONF_OPTS += -Ddsd=false +endif + +ifeq ($(BR2_PACKAGE_MPD_FAAD2),y) +MPD_DEPENDENCIES += faad2 +MPD_CONF_OPTS += -Dfaad=enabled +else +MPD_CONF_OPTS += -Dfaad=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_FFMPEG),y) +MPD_DEPENDENCIES += ffmpeg +MPD_CONF_OPTS += -Dffmpeg=enabled +else +MPD_CONF_OPTS += -Dffmpeg=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_FLAC),y) +MPD_DEPENDENCIES += flac +MPD_CONF_OPTS += -Dflac=enabled +else +MPD_CONF_OPTS += -Dflac=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_FLUIDSYNTH),y) +MPD_DEPENDENCIES += fluidsynth +MPD_CONF_OPTS += -Dfluidsynth=enabled +else +MPD_CONF_OPTS += -Dfluidsynth=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_HTTPD_OUTPUT),y) +MPD_CONF_OPTS += -Dhttpd=true +else +MPD_CONF_OPTS += -Dhttpd=false +endif + +ifeq ($(BR2_PACKAGE_MPD_ID3TAG),y) +MPD_DEPENDENCIES += libid3tag +MPD_CONF_OPTS += -Did3tag=enabled +else +MPD_CONF_OPTS += -Did3tag=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_IO_URING),y) +MPD_DEPENDENCIES += liburing +MPD_CONF_OPTS += -Dio_uring=enabled +else +MPD_CONF_OPTS += -Dio_uring=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_JACK2),y) +MPD_DEPENDENCIES += jack2 +MPD_CONF_OPTS += -Djack=enabled +else +MPD_CONF_OPTS += -Djack=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_LAME),y) +MPD_DEPENDENCIES += lame +MPD_CONF_OPTS += -Dlame=enabled +else +MPD_CONF_OPTS += -Dlame=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_LIBMPDCLIENT),y) +MPD_DEPENDENCIES += libmpdclient +MPD_CONF_OPTS += -Dlibmpdclient=enabled +else +MPD_CONF_OPTS += -Dlibmpdclient=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_LIBMMS),y) +MPD_DEPENDENCIES += libmms +MPD_CONF_OPTS += -Dmms=enabled +else +MPD_CONF_OPTS += -Dmms=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_LIBNFS),y) +MPD_DEPENDENCIES += libnfs +MPD_CONF_OPTS += -Dnfs=enabled +else +MPD_CONF_OPTS += -Dnfs=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_LIBSMBCLIENT),y) +MPD_DEPENDENCIES += samba4 +MPD_CONF_OPTS += -Dsmbclient=enabled +else +MPD_CONF_OPTS += -Dsmbclient=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_LIBSAMPLERATE),y) +MPD_DEPENDENCIES += libsamplerate +MPD_CONF_OPTS += -Dlibsamplerate=enabled +else +MPD_CONF_OPTS += -Dlibsamplerate=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_LIBSNDFILE),y) +MPD_DEPENDENCIES += libsndfile +MPD_CONF_OPTS += -Dsndfile=enabled +else +MPD_CONF_OPTS += -Dsndfile=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_LIBSOXR),y) +MPD_DEPENDENCIES += libsoxr +MPD_CONF_OPTS += -Dsoxr=enabled +else +MPD_CONF_OPTS += -Dsoxr=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_MAD),y) +MPD_DEPENDENCIES += libmad +MPD_CONF_OPTS += -Dmad=enabled +else +MPD_CONF_OPTS += -Dmad=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_MODPLUG),y) +MPD_DEPENDENCIES += libmodplug +MPD_CONF_OPTS += -Dmodplug=enabled +else +MPD_CONF_OPTS += -Dmodplug=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_MPG123),y) +MPD_DEPENDENCIES += mpg123 +MPD_CONF_OPTS += -Dmpg123=enabled +else +MPD_CONF_OPTS += -Dmpg123=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_MUSEPACK),y) +MPD_DEPENDENCIES += musepack +MPD_CONF_OPTS += -Dmpcdec=enabled +else +MPD_CONF_OPTS += -Dmpcdec=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_NEIGHBOR_DISCOVERY_SUPPORT),y) +MPD_CONF_OPTS += -Dneighbor=true +else +MPD_CONF_OPTS += -Dneighbor=false +endif + +ifeq ($(BR2_PACKAGE_MPD_OPENAL),y) +MPD_DEPENDENCIES += openal +MPD_CONF_OPTS += -Dopenal=enabled +else +MPD_CONF_OPTS += -Dopenal=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_OPUS),y) +MPD_DEPENDENCIES += opus libogg +MPD_CONF_OPTS += -Dopus=enabled +else +MPD_CONF_OPTS += -Dopus=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_OSS),y) +MPD_CONF_OPTS += -Doss=enabled +else +MPD_CONF_OPTS += -Doss=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_PULSEAUDIO),y) +MPD_DEPENDENCIES += pulseaudio +MPD_CONF_OPTS += -Dpulse=enabled +else +MPD_CONF_OPTS += -Dpulse=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_QOBUZ),y) +MPD_DEPENDENCIES += libgcrypt +MPD_CONF_OPTS += -Dqobuz=enabled +else +MPD_CONF_OPTS += -Dqobuz=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_SHOUTCAST),y) +MPD_DEPENDENCIES += libshout +MPD_CONF_OPTS += -Dshout=enabled +else +MPD_CONF_OPTS += -Dshout=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_SIDPLAY),y) +MPD_DEPENDENCIES += libsidplay2 +MPD_CONF_OPTS += -Dsidplay=enabled +else +MPD_CONF_OPTS += -Dsidplay=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_SOUNDCLOUD),y) +MPD_CONF_OPTS += -Dsoundcloud=enabled +else +MPD_CONF_OPTS += -Dsoundcloud=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_SQLITE),y) +MPD_DEPENDENCIES += sqlite +MPD_CONF_OPTS += -Dsqlite=enabled +else +MPD_CONF_OPTS += -Dsqlite=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_TCP),y) +MPD_CONF_OPTS += -Dtcp=true +else +MPD_CONF_OPTS += -Dtcp=false +endif + +ifeq ($(BR2_PACKAGE_MPD_TREMOR),y) +MPD_DEPENDENCIES += tremor +MPD_CONF_OPTS += -Dtremor=enabled +else +MPD_CONF_OPTS += -Dtremor=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_TWOLAME),y) +MPD_DEPENDENCIES += twolame +MPD_CONF_OPTS += -Dtwolame=enabled +else +MPD_CONF_OPTS += -Dtwolame=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_UPNP_PUPNP),y) +MPD_DEPENDENCIES += \ + libupnp +MPD_CONF_OPTS += -Dupnp=pupnp +else ifeq ($(BR2_PACKAGE_MPD_UPNP_NPUPNP),y) +MPD_DEPENDENCIES += \ + libnpupnp +MPD_CONF_OPTS += -Dupnp=npupnp +else ifeq ($(BR2_PACKAGE_MPD_UPNP_DISABLED),y) +MPD_CONF_OPTS += -Dupnp=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_VORBIS),y) +MPD_DEPENDENCIES += libvorbis +MPD_CONF_OPTS += -Dvorbis=enabled -Dvorbisenc=enabled +else +MPD_CONF_OPTS += -Dvorbis=disabled -Dvorbisenc=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_WAVPACK),y) +MPD_DEPENDENCIES += wavpack +MPD_CONF_OPTS += -Dwavpack=enabled +else +MPD_CONF_OPTS += -Dwavpack=disabled +endif + +ifeq ($(BR2_PACKAGE_MPD_ZZIP),y) +MPD_DEPENDENCIES += zziplib +MPD_CONF_OPTS += -Dzzip=enabled +else +MPD_CONF_OPTS += -Dzzip=disabled +endif + +define MPD_INSTALL_EXTRA_FILES + $(INSTALL) -m 0644 -D package/mpd/mpd.conf $(TARGET_DIR)/etc/mpd.conf + mkdir -p $(TARGET_DIR)/var/lib/mpd/music + mkdir -p $(TARGET_DIR)/var/lib/mpd/playlists +endef + +MPD_POST_INSTALL_TARGET_HOOKS += MPD_INSTALL_EXTRA_FILES + +define MPD_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/mpd/S95mpd \ + $(TARGET_DIR)/etc/init.d/S95mpd +endef + +$(eval $(meson-package)) diff --git a/package/mpdecimal/Config.in b/package/mpdecimal/Config.in new file mode 100644 index 00000000..929d4151 --- /dev/null +++ b/package/mpdecimal/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_MPDECIMAL + bool "mpdecimal" + help + mpdecimal is a package for correctly-rounded arbitrary + precision decimal floating point arithmetic. Starting from + version 2.4, mpdecimal includes only the libmpdec + library. Further mpdecimal development will focus + exclusively on libmpdec. + + http://www.bytereef.org/mpdecimal/ diff --git a/package/mpdecimal/mpdecimal.hash b/package/mpdecimal/mpdecimal.hash new file mode 100644 index 00000000..81150c75 --- /dev/null +++ b/package/mpdecimal/mpdecimal.hash @@ -0,0 +1,4 @@ +# From http://www.bytereef.org/mpdecimal/download.html +sha256 9f9cd4c041f99b5c49ffb7b59d9f12d95b683d88585608aa56a6307667b2b21f mpdecimal-2.5.1.tar.gz +# Locally computed +sha256 b07528d8b1dbf1e2d2741052996f0876e23342ce2d30d0effa39c5457716c25a LICENSE.txt diff --git a/package/mpdecimal/mpdecimal.mk b/package/mpdecimal/mpdecimal.mk new file mode 100644 index 00000000..aa322df3 --- /dev/null +++ b/package/mpdecimal/mpdecimal.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# mpdecimal +# +################################################################################ + +MPDECIMAL_SITE = http://www.bytereef.org/software/mpdecimal/releases +MPDECIMAL_VERSION = 2.5.1 +MPDECIMAL_INSTALL_STAGING = YES +MPDECIMAL_LICENSE = BSD-2-Clause +MPDECIMAL_LICENSE_FILES = LICENSE.txt +MPDECIMAL_CONF_OPTS = LD="$(TARGET_CC)" + +# threads are only needed for tests +MPDECIMAL_MAKE_OPTS = MPD_PTHREAD= + +# On i386, by default, mpdecimal tries to uses which is not +# available in musl/uclibc. So in this case, we tell mpdecimal to use +# the generic 32 bits code, which is anyway the one used on ARM, +# PowerPC, etc. +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),) +ifeq ($(BR2_i386),y) +MPDECIMAL_CONF_ENV += MACHINE=ansi32 +endif +endif + +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +MPDECIMAL_CONF_OPTS += --enable-cxx +else +MPDECIMAL_CONF_OPTS += --disable-cxx +endif + +$(eval $(autotools-package)) diff --git a/package/mpfr/Config.in b/package/mpfr/Config.in new file mode 100644 index 00000000..e02511f8 --- /dev/null +++ b/package/mpfr/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_MPFR + bool "mpfr" + select BR2_PACKAGE_GMP + help + C library for multiple-precision floating-point computations + with exact rounding. + + http://www.mpfr.org/ diff --git a/package/mpfr/mpfr.hash b/package/mpfr/mpfr.hash new file mode 100644 index 00000000..4b0d14c9 --- /dev/null +++ b/package/mpfr/mpfr.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 ffd195bd567dbaffc3b98b23fd00aad0537680c9896171e44fe3ff79e28ac33d mpfr-4.1.1.tar.xz + +# Hash for license file +sha256 e3a994d82e644b03a792a930f574002658412f62407f5fee083f2555c5f23118 COPYING.LESSER diff --git a/package/mpfr/mpfr.mk b/package/mpfr/mpfr.mk new file mode 100644 index 00000000..c0c8c046 --- /dev/null +++ b/package/mpfr/mpfr.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# mpfr +# +################################################################################ + +MPFR_VERSION = 4.1.1 +MPFR_SITE = http://www.mpfr.org/mpfr-$(MPFR_VERSION) +MPFR_SOURCE = mpfr-$(MPFR_VERSION).tar.xz +MPFR_LICENSE = LGPL-3.0+ +MPFR_LICENSE_FILES = COPYING.LESSER +MPFR_CPE_ID_VENDOR = mpfr +MPFR_CPE_ID_PRODUCT = gnu_mpfr +MPFR_INSTALL_STAGING = YES +MPFR_DEPENDENCIES = gmp +HOST_MPFR_DEPENDENCIES = host-gmp +MPFR_MAKE_OPTS = RANLIB=$(TARGET_RANLIB) + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/mpg123/Config.in b/package/mpg123/Config.in new file mode 100644 index 00000000..73ca1c74 --- /dev/null +++ b/package/mpg123/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_MPG123 + bool "mpg123" + depends on BR2_USE_MMU # fork - in the application + help + Fast, free and portable MPEG audio player for Unix. It + supports MPEG 1.0/2.0 layers 1, 2 and 3. + + http://www.mpg123.de/ diff --git a/package/mpg123/mpg123.hash b/package/mpg123/mpg123.hash new file mode 100644 index 00000000..5a83f295 --- /dev/null +++ b/package/mpg123/mpg123.hash @@ -0,0 +1,6 @@ +# From https://sourceforge.net/projects/mpg123/files/mpg123/1.32.6/ +sha1 886c8c5f100caccfb4fefabc1c75ff6e2a834128 mpg123-1.32.6.tar.bz2 +# Locally calculated +sha256 ccdd1d0abc31d73d8b435fc658c79049d0a905b30669b6a42a03ad169dc609e6 mpg123-1.32.6.tar.bz2 +# License file +sha256 c22482728a634a8dfdb4ff72a96d4c1ed64cd8f3e79335c401751ac591609366 COPYING diff --git a/package/mpg123/mpg123.mk b/package/mpg123/mpg123.mk new file mode 100644 index 00000000..af036132 --- /dev/null +++ b/package/mpg123/mpg123.mk @@ -0,0 +1,91 @@ +################################################################################ +# +# mpg123 +# +################################################################################ + +MPG123_VERSION = 1.32.6 +MPG123_SOURCE = mpg123-$(MPG123_VERSION).tar.bz2 +MPG123_SITE = https://downloads.sourceforge.net/project/mpg123/mpg123/$(MPG123_VERSION) +MPG123_INSTALL_STAGING = YES +MPG123_LICENSE = LGPL-2.1 +MPG123_LICENSE_FILES = COPYING +MPG123_CPE_ID_VENDOR = mpg123 +MPG123_DEPENDENCIES = host-pkgconf + +# mpg123 has some assembly function that is not present in Thumb mode: +# Error: selected processor does not support `smull r3,ip,r2,r10' in Thumb mode +# so, we desactivate Thumb mode +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +MPG123_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -marm" +endif + +MPG123_CPU = $(if $(BR2_SOFT_FLOAT),generic_nofpu,generic_fpu) + +ifeq ($(BR2_aarch64),y) +MPG123_CPU = aarch64 +endif + +ifeq ($(BR2_arm),y) +ifeq ($(or $(BR2_ARM_CPU_HAS_NEON),$(BR2_ARM_CPU_HAS_VFPV2)),y) +MPG123_CPU = arm_fpu +else +MPG123_CPU = arm_nofpu +endif +endif + +ifeq ($(BR2_i386),y) +MPG123_CPU = x86 +endif + +ifeq ($(BR2_powerpc),y) +ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y) +MPG123_CPU = altivec +endif +ifeq ($(BR2_SOFT_FLOAT),y) +MPG123_CPU = ppc_nofpu +endif +endif # powerpc + +ifeq ($(BR2_x86_64),y) +MPG123_CPU = x86-64 +endif + +MPG123_CONF_OPTS += --with-cpu=$(MPG123_CPU) + +MPG123_AUDIO = dummy oss + +ifeq ($(BR2_PACKAGE_PORTAUDIO),y) +MPG123_AUDIO += portaudio +MPG123_CONF_OPTS += --with-default-audio=portaudio +MPG123_DEPENDENCIES += portaudio +# configure script does NOT use pkg-config to figure out how to link +# with portaudio, breaking static linking as portaudio uses pthreads +MPG123_CONF_ENV += LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs portaudio-2.0`" +endif + +ifeq ($(BR2_PACKAGE_SDL),y) +MPG123_AUDIO += sdl +MPG123_CONF_OPTS += --with-default-audio=sdl +MPG123_DEPENDENCIES += sdl +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +MPG123_AUDIO += alsa +MPG123_CONF_OPTS += --with-default-audio=alsa +MPG123_DEPENDENCIES += alsa-lib +# configure script does NOT use pkg-config to figure out how to link +# with alsa, breaking static linking as alsa uses pthreads +MPG123_CONF_ENV += LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs alsa`" +endif + +MPG123_CONF_OPTS += --with-audio=$(subst $(space),$(comma),$(MPG123_AUDIO)) + +# output modules are loaded with dlopen() +ifeq ($(BR2_STATIC_LIBS),y) +MPG123_CONF_OPTS += --disable-modules +else +MPG123_CONF_OPTS += --enable-modules +endif + +$(eval $(autotools-package)) diff --git a/package/mpir/0001-mpn-arm-udiv.asm-workaround-binutils-bug-14887.patch b/package/mpir/0001-mpn-arm-udiv.asm-workaround-binutils-bug-14887.patch new file mode 100644 index 00000000..6a6f467d --- /dev/null +++ b/package/mpir/0001-mpn-arm-udiv.asm-workaround-binutils-bug-14887.patch @@ -0,0 +1,40 @@ +From d858ce52d1971cb4e8500b0ebc0472fdae4686ec Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 7 May 2017 23:12:04 +0200 +Subject: [PATCH] mpn/arm/udiv.asm: workaround binutils bug #14887 + +Old binutils versions are affected by bug #14887, +https://sourceware.org/bugzilla/show_bug.cgi?id=14887, which causes a +build failure when a register specification is surrounded by +whitespaces. Removing those whitespaces works around the issue. + +Signed-off-by: Thomas Petazzoni +--- + mpn/arm/udiv.asm | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/mpn/arm/udiv.asm b/mpn/arm/udiv.asm +index 25197a6..ed11eb3 100644 +--- a/mpn/arm/udiv.asm ++++ b/mpn/arm/udiv.asm +@@ -50,7 +50,7 @@ L(oop): divstep(n1,n0,d) + teq r12, #0 + bne L(oop) + +- str n1, [ rem_ptr ] C store remainder ++ str n1, [rem_ptr] C store remainder + adc r0, n0, n0 C quotient: add last carry from divstep + mov pc, lr + +@@ -89,7 +89,7 @@ L(oop2): + addcs n0, n0, #1 C adjust quotient + + L(_even_divisor): +- str n1, [ rem_ptr ] C store remainder ++ str n1, [rem_ptr] C store remainder + mov r0, n0 C quotient + ldmfd sp!, { r8, pc } + EPILOGUE(mpn_udiv_qrnnd) +-- +2.7.4 + diff --git a/package/mpir/0002-Fix-configure-failures-with-Xcode12.patch b/package/mpir/0002-Fix-configure-failures-with-Xcode12.patch new file mode 100644 index 00000000..453515f9 --- /dev/null +++ b/package/mpir/0002-Fix-configure-failures-with-Xcode12.patch @@ -0,0 +1,116 @@ +From bbc43ca6ae0bec4f64e69c9cd4c967005d6470eb Mon Sep 17 00:00:00 2001 +From: Mitchell Blank Jr +Date: Mon, 21 Dec 2020 12:05:19 +0000 +Subject: [PATCH] Fix configure failures with Xcode12 + +Changes are needed becuase Xcode12 includes a default of +-Werror,-Wimplicit-function-declaration which means that +even something like calling "exit(0);" is a compile failure +if you haven't done a "#include " first (as C99 +requires, but most other compilers will just warn about) + +I don't know if the "long long reliability test 2" test which +tries to provoke a crash on a particular gcc 3.3 build still +does what it was originally intended to do with my change. +Of course, I doubt anyone has tried to use that compiler in +years. + +Fixes #290 + +Upstream: https://github.com/wbhart/mpir/commit/bbc43ca6ae0bec4f64e69c9cd4c967005d6470eb +Signed-off-by: Fabrice Fontaine +--- + acinclude.m4 | 24 +++++++++++++----------- + 1 file changed, 13 insertions(+), 11 deletions(-) + +diff --git a/acinclude.m4 b/acinclude.m4 +index 91c35bc23..620a629ef 100644 +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -589,9 +589,9 @@ extern + #endif + __inline__ t1 e(t2 rp,t2 up,int n,t1 v0) + {t1 c,x,r;int i;if(v0){c=1;for(i=1;iconftest.c <conftest.c < + int + main () + { +- exit(0); ++ return 0; + } + double d; + double diff --git a/package/mpir/Config.in b/package/mpir/Config.in new file mode 100644 index 00000000..da4cc9f4 --- /dev/null +++ b/package/mpir/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_MPIR + bool "mpir" + select BR2_PACKAGE_GMP + help + MPIR is a highly optimised library for bignum arithmetic + forked from the GMP bignum library. + + http://www.mpir.org/ diff --git a/package/mpir/mpir.hash b/package/mpir/mpir.hash new file mode 100644 index 00000000..71d0c19d --- /dev/null +++ b/package/mpir/mpir.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 52f63459cf3f9478859de29e00357f004050ead70b45913f2c2269d9708675bb mpir-3.0.0.tar.bz2 +sha256 9ccf26cfe845e0eb8bb58053e47366e7ab6b697ae010f7650978d4b71b7d1fc1 COPYING.LIB diff --git a/package/mpir/mpir.mk b/package/mpir/mpir.mk new file mode 100644 index 00000000..46cd35e4 --- /dev/null +++ b/package/mpir/mpir.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# mpir +# +################################################################################ + +MPIR_VERSION = 3.0.0 +MPIR_SITE = http://www.mpir.org +MPIR_SOURCE = mpir-$(MPIR_VERSION).tar.bz2 +MPIR_LICENSE = LGPL-3.0+ +MPIR_LICENSE_FILES = COPYING.LIB +MPIR_INSTALL_STAGING = YES +MPIR_DEPENDENCIES = gmp host-yasm +# 0002-Fix-configure-failures-with-Xcode12.patch +MPIR_AUTORECONF = YES + +ifeq ($(BR2_MIPS_NABI32),y) +MPIR_CONF_OPTS += ABI=n32 +endif + +ifeq ($(BR2_MIPS_NABI64),y) +MPIR_CONF_OPTS += ABI=64 +endif + +# The optimized ARM assembly code uses ARM-only (i.e not Thumb1/2 +# compatible) instructions. +ifeq ($(BR2_arm)$(BR2_armeb):$(BR2_ARM_CPU_HAS_ARM),y:) +MPIR_CONF_ENV += MPN_PATH="generic" +endif + +# Optimized mips32/mips64 code not suitable for mips32r6/mips64r6 +ifeq ($(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6),y) +MPIR_CONF_ENV += MPN_PATH="generic" +endif + +# Optimized powerpc64 code is not suitable for powerpc64le +ifeq ($(BR2_powerpc64le),y) +MPIR_CONF_ENV += MPN_PATH="generic" +endif + +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +MPIR_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -marm" +endif + +$(eval $(autotools-package)) diff --git a/package/mpv/0001-fix-powerpc64-altivec.patch b/package/mpv/0001-fix-powerpc64-altivec.patch new file mode 100644 index 00000000..45983fec --- /dev/null +++ b/package/mpv/0001-fix-powerpc64-altivec.patch @@ -0,0 +1,32 @@ +Subject: [PATCH] Work around bool type redefinition by altivec + +On powerpc64le, the SDL header may include altivec.h and this +(combined with -std=c99) will cause a compile failure due to bool +being redefined as a vector type. + +Adjust the compiler flags to add -std=gnu99 (which is compatible with +altivec) when using gcc. The generic flag '-std=c99' is left in place for other +compilers (in the gcc case it is overridden by the (later) gnu flag). + +Signed-off-by: Sam Bobroff +--- + 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/package/mpv/Config.in b/package/mpv/Config.in new file mode 100644 index 00000000..5c32f593 --- /dev/null +++ b/package/mpv/Config.in @@ -0,0 +1,44 @@ +config BR2_PACKAGE_MPV_SUPPORTS_VAAPI + bool + default y if BR2_PACKAGE_LIBDRM && BR2_PACKAGE_MESA3D_OPENGL_EGL + default y if BR2_PACKAGE_WAYLAND + default y if BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_MPV + bool "mpv" + depends on BR2_INSTALL_LIBSTDCPP # libass + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libass + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C11/stdatomic.h + depends on BR2_TOOLCHAIN_HAS_ATOMIC + select BR2_PACKAGE_ALSA_LIB_MIXER if BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_PCM if BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_FFMPEG_SWSCALE + select BR2_PACKAGE_LIBASS + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_WAYLAND_PROTOCOLS if BR2_PACKAGE_WAYLAND + # Select xkbcommon for wayland to avoid being mysterious + select BR2_PACKAGE_LIBXKBCOMMON if BR2_PACKAGE_WAYLAND + # Select all necessary X11 dependencies if X.org is enabled + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXINERAMA if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXPRESENT if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXSCRNSAVER if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXRANDR if BR2_PACKAGE_XORG7 + help + mpv is a fork of mplayer2 and MPlayer. It shares some features + with the former projects while introducing many more. + + https://mpv.io/ + +comment "mpv needs a toolchain w/ C++, NPTL, gcc >= 4.9" + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/mpv/mpv.hash b/package/mpv/mpv.hash new file mode 100644 index 00000000..a0901561 --- /dev/null +++ b/package/mpv/mpv.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 41df981b7b84e33a2ef4478aaf81d6f4f5c8b9cd2c0d337ac142fc20b387d1a9 mpv-0.35.1.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL diff --git a/package/mpv/mpv.mk b/package/mpv/mpv.mk new file mode 100644 index 00000000..cf370911 --- /dev/null +++ b/package/mpv/mpv.mk @@ -0,0 +1,230 @@ +################################################################################ +# +# mpv +# +################################################################################ + +MPV_VERSION = 0.35.1 +MPV_SITE = $(call github,mpv-player,mpv,v$(MPV_VERSION)) +MPV_DEPENDENCIES = \ + host-pkgconf ffmpeg libass zlib \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) +MPV_LICENSE = GPL-2.0+ +MPV_LICENSE_FILES = LICENSE.GPL +MPV_CPE_ID_VENDOR = mpv +MPV_INSTALL_STAGING = YES + +MPV_NEEDS_EXTERNAL_WAF = YES + +# Some of these options need testing and/or tweaks +MPV_CONF_OPTS = \ + --prefix=/usr \ + --disable-android \ + --disable-caca \ + --disable-cocoa \ + --disable-coreaudio \ + --disable-cuda-hwaccel \ + --disable-opensles \ + --disable-rubberband \ + --disable-uchardet \ + --disable-vapoursynth + +ifeq ($(BR2_REPRODUCIBLE),y) +MPV_CONF_OPTS += --disable-build-date +endif + +ifeq ($(BR2_STATIC_LIBS),y) +MPV_CONF_OPTS += --disable-libmpv-shared --enable-libmpv-static +else +MPV_CONF_OPTS += --enable-libmpv-shared --disable-libmpv-static +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +MPV_CONF_OPTS += --enable-alsa +MPV_DEPENDENCIES += alsa-lib +else +MPV_CONF_OPTS += --disable-alsa +endif + +ifeq ($(BR2_PACKAGE_MESA3D_GBM),y) +MPV_CONF_OPTS += --enable-gbm +MPV_DEPENDENCIES += mesa3d +ifeq ($(BR2_PACKAGE_LIBDRM),y) +MPV_CONF_OPTS += --enable-egl-drm +else +MPV_CONF_OPTS += --disable-egl-drm +endif +else +MPV_CONF_OPTS += --disable-gbm --disable-egl-drm +endif + +# jack support +# It also requires 64-bit sync intrinsics +ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_8)$(BR2_PACKAGE_JACK2),yy) +MPV_CONF_OPTS += --enable-jack +MPV_DEPENDENCIES += jack2 +else +MPV_CONF_OPTS += --disable-jack +endif + +# jpeg support +ifeq ($(BR2_PACKAGE_JPEG),y) +MPV_CONF_OPTS += --enable-jpeg +MPV_DEPENDENCIES += jpeg +else +MPV_CONF_OPTS += --disable-jpeg +endif + +# lcms2 support +ifeq ($(BR2_PACKAGE_LCMS2),y) +MPV_CONF_OPTS += --enable-lcms2 +MPV_DEPENDENCIES += lcms2 +else +MPV_CONF_OPTS += --disable-lcms2 +endif + +# libarchive support +ifeq ($(BR2_PACKAGE_LIBARCHIVE),y) +MPV_CONF_OPTS += --enable-libarchive +MPV_DEPENDENCIES += libarchive +else +MPV_CONF_OPTS += --disable-libarchive +endif + +# bluray support +ifeq ($(BR2_PACKAGE_LIBBLURAY),y) +MPV_CONF_OPTS += --enable-libbluray +MPV_DEPENDENCIES += libbluray +else +MPV_CONF_OPTS += --disable-libbluray +endif + +# libcdio-paranoia +ifeq ($(BR2_PACKAGE_LIBCDIO_PARANOIA),y) +MPV_CONF_OPTS += --enable-cdda +MPV_DEPENDENCIES += libcdio-paranoia +else +MPV_CONF_OPTS += --disable-cdda +endif + +# libdvdnav +ifeq ($(BR2_PACKAGE_LIBDVDNAV),y) +MPV_CONF_OPTS += --enable-dvdnav +MPV_DEPENDENCIES += libdvdnav +else +MPV_CONF_OPTS += --disable-dvdnav +endif + +# libdrm +ifeq ($(BR2_PACKAGE_LIBDRM),y) +MPV_CONF_OPTS += --enable-drm +MPV_DEPENDENCIES += libdrm +else +MPV_CONF_OPTS += --disable-drm +endif + +# libvdpau +ifeq ($(BR2_PACKAGE_LIBVDPAU),y) +MPV_CONF_OPTS += --enable-vdpau +MPV_DEPENDENCIES += libvdpau +else +MPV_CONF_OPTS += --disable-vdpau +endif + +# LUA support, only for lua51/lua52/luajit +# This enables the controller (OSD) together with libass +ifeq ($(BR2_PACKAGE_LUA_5_1)$(BR2_PACKAGE_LUAJIT),y) +MPV_CONF_OPTS += --enable-lua +MPV_DEPENDENCIES += luainterpreter +else +MPV_CONF_OPTS += --disable-lua +endif + +# OpenGL support +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +MPV_CONF_OPTS += --enable-gl +MPV_DEPENDENCIES += libgl +else ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y) +MPV_CONF_OPTS += --enable-gl +MPV_DEPENDENCIES += libgles +else ifeq ($(BR2_PACKAGE_HAS_LIBEGL),y) +MPV_CONF_OPTS += --enable-gl +MPV_DEPENDENCIES += libegl +else +MPV_CONF_OPTS += --disable-gl +endif + +# pulseaudio support +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +MPV_CONF_OPTS += --enable-pulse +MPV_DEPENDENCIES += pulseaudio +else +MPV_CONF_OPTS += --disable-pulse +endif + +# SDL support +# Sdl2 requires 64-bit sync intrinsics +ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_8)$(BR2_PACKAGE_SDL2),yy) +MPV_CONF_OPTS += --enable-sdl2 +MPV_DEPENDENCIES += sdl2 +else +MPV_CONF_OPTS += --disable-sdl2 +endif + +# Raspberry Pi support +ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) +MPV_CONF_OPTS += --enable-rpi --enable-gl +MPV_DEPENDENCIES += rpi-userland +else +MPV_CONF_OPTS += --disable-rpi +endif + +# va-api support +ifeq ($(BR2_PACKAGE_LIBVA)$(BR2_PACKAGE_MPV_SUPPORTS_VAAPI),yy) +MPV_CONF_OPTS += --enable-vaapi +MPV_DEPENDENCIES += libva +ifeq ($(BR2_PACKAGE_LIBDRM)$(BR2_PACKAGE_MESA3D_OPENGL_EGL),yy) +MPV_CONF_OPTS += --enable-vaapi-drm +else +MPV_CONF_OPTS += --disable-vaapi-drm +endif +else +MPV_CONF_OPTS += --disable-vaapi --disable-vaapi-drm +endif + +# wayland support +ifeq ($(BR2_PACKAGE_WAYLAND),y) +MPV_CONF_OPTS += --enable-wayland +MPV_DEPENDENCIES += libxkbcommon wayland wayland-protocols +else +MPV_CONF_OPTS += --disable-wayland +endif + +# Base X11 support. Config.in ensures that if BR2_PACKAGE_XORG7 is +# enabled, xlib_libX11, xlib_libXext, xlib_libXinerama, +# xlib_libXrandr, xlib_libXScrnSaver. +ifeq ($(BR2_PACKAGE_XORG7),y) +MPV_CONF_OPTS += --enable-x11 +MPV_DEPENDENCIES += \ + xlib_libX11 \ + xlib_libXext \ + xlib_libXinerama \ + xlib_libXpresent \ + xlib_libXrandr \ + xlib_libXScrnSaver +# XVideo +ifeq ($(BR2_PACKAGE_XLIB_LIBXV),y) +MPV_CONF_OPTS += --enable-xv +MPV_DEPENDENCIES += xlib_libXv +else +MPV_CONF_OPTS += --disable-xv +endif +else +MPV_CONF_OPTS += --disable-x11 +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +MPV_CONF_ENV += LDFLAGS="$(TARGET_LDFLAGS) -latomic" +endif + +$(eval $(waf-package)) diff --git a/package/mraa/0001-include-Declare-gVERSION-global-as-extern.patch b/package/mraa/0001-include-Declare-gVERSION-global-as-extern.patch new file mode 100644 index 00000000..110c020a --- /dev/null +++ b/package/mraa/0001-include-Declare-gVERSION-global-as-extern.patch @@ -0,0 +1,30 @@ +From aaa0a5cd4e401bde4fb3691dd4e6c70a5c61e031 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= +Date: Mon, 13 Apr 2020 20:12:11 +0200 +Subject: [PATCH] include: Declare gVERSION global as 'extern'. + +Fixes build with '-fno-common'. + +Signed-off-by: Thomas Ingleby +[Retrieved from: +https://github.com/eclipse/mraa/commit/aaa0a5cd4e401bde4fb3691dd4e6c70a5c61e031] +Signed-off-by: Fabrice Fontaine +--- + include/version.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/include/version.h b/include/version.h +index 47366ef6f..3a567a1d5 100644 +--- a/include/version.h ++++ b/include/version.h +@@ -11,8 +11,8 @@ + extern "C" { + #endif + +-const char* gVERSION; +-const char* gVERSION_SHORT; ++extern const char* gVERSION; ++extern const char* gVERSION_SHORT; + + #ifdef __cplusplus + } diff --git a/package/mraa/0002-mraa-Use-posix-basename.patch b/package/mraa/0002-mraa-Use-posix-basename.patch new file mode 100644 index 00000000..3c5c99f0 --- /dev/null +++ b/package/mraa/0002-mraa-Use-posix-basename.patch @@ -0,0 +1,45 @@ +From 47c3850cddd63cebd9dc48e411963314449118f1 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sun, 31 Dec 2023 19:16:35 -0800 +Subject: [PATCH] mraa: Use posix basename + +Musl has removed the declaration from string.h [1] which exposes the +problem especially with clang-17+ compiler where implicit function +declaration is flagged as error. Use posix basename and make a copy of +string to operate on to emulate GNU basename behaviour. + +[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7 + +Signed-off-by: Khem Raj + +Upstream: https://github.com/eclipse/mraa/commit/47c3850cddd63cebd9dc48e411963314449118f1 +Signed-off-by: Fabrice Fontaine +--- + src/mraa.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/mraa.c b/src/mraa.c +index 653ea1fa7..b556d0455 100644 +--- a/src/mraa.c ++++ b/src/mraa.c +@@ -12,6 +12,7 @@ + #endif + + #include ++#include + #include + #include + #include +@@ -341,9 +342,11 @@ static int + mraa_count_iio_devices(const char* path, const struct stat* sb, int flag, struct FTW* ftwb) + { + // we are only interested in files with specific names +- if (fnmatch(IIO_DEVICE_WILDCARD, basename(path), 0) == 0) { ++ char* tmp = strdup(path); ++ if (fnmatch(IIO_DEVICE_WILDCARD, basename(tmp), 0) == 0) { + num_iio_devices++; + } ++ free(tmp); + return 0; + } + diff --git a/package/mraa/Config.in b/package/mraa/Config.in new file mode 100644 index 00000000..c845fe9f --- /dev/null +++ b/package/mraa/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_MRAA_ARCH_SUPPORTS + bool + default y if BR2_aarch64 || BR2_aarch64_be + default y if BR2_arm || BR2_armeb + default y if BR2_i386 || BR2_x86_64 + default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + +config BR2_PACKAGE_MRAA + bool "mraa" + depends on BR2_PACKAGE_MRAA_ARCH_SUPPORTS + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + help + mraa is a C/C++ library with bindings to javascript & python + to interface with the IO on Galileo, Edison & other + platforms, with a structured and sane API where port + names/numbering matches the board that you are on. + + http://iotdk.intel.com/docs/master/mraa + +comment "mraa needs a toolchain w/ threads, dynamic library" + depends on BR2_PACKAGE_MRAA_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/mraa/mraa.hash b/package/mraa/mraa.hash new file mode 100644 index 00000000..321b6409 --- /dev/null +++ b/package/mraa/mraa.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 076669bee8423ffef3065735b293a329020be86630fea457174dbfcc67a0554a mraa-2.2.0.tar.gz +sha256 fac52622ed3badd86b34857b21777ab90296d6ccbc2ac0fd457c09fdeefa9ef1 COPYING diff --git a/package/mraa/mraa.mk b/package/mraa/mraa.mk new file mode 100644 index 00000000..47178a42 --- /dev/null +++ b/package/mraa/mraa.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# mraa +# +################################################################################ + +MRAA_VERSION = 2.2.0 +MRAA_SITE = $(call github,eclipse,mraa,v$(MRAA_VERSION)) +MRAA_LICENSE = MIT +MRAA_LICENSE_FILES = COPYING +MRAA_INSTALL_STAGING = YES + +ifeq ($(BR2_i386),y) +MRAA_ARCH = i386 +else ifeq ($(BR2_x86_64),y) +MRAA_ARCH = x86_64 +else ifeq ($(BR2_arm)$(BR2_armeb),y) +MRAA_ARCH = arm +else ifeq ($(BR2_aarch64)$(BR2_aarch64_be),y) +MRAA_ARCH = aarch64 +else ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el),y) +MRAA_ARCH = mips +endif + +# USBPLAT only makes sense with FTDI4222, which requires the ftd2xx library, +# which doesn't exist in buildroot +# Disable C++ as it is used only by FTDI4222 and tests +MRAA_CONF_OPTS += \ + -DBUILDARCH=$(MRAA_ARCH) \ + -DBUILDCPP=OFF \ + -DBUILDSWIG=OFF \ + -DUSBPLAT=OFF \ + -DFTDI4222=OFF \ + -DENABLEEXAMPLES=OFF \ + -DBUILDTESTS=OFF + +ifeq ($(BR2_PACKAGE_JSON_C),y) +MRAA_CONF_OPTS += -DJSONPLAT=ON +MRAA_DEPENDENCIES += json-c +else +MRAA_CONF_OPTS += -DJSONPLAT=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/mrouted/Config.in b/package/mrouted/Config.in new file mode 100644 index 00000000..95b4fb38 --- /dev/null +++ b/package/mrouted/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_MROUTED + bool "mrouted" + depends on BR2_USE_MMU # fork() + help + An implementation of the DVMRP multicast routing protocol. + Unlike PIM a DVMRP router has a distance vector protocol (like + RIP) built-in to figure out the reverse-path to the multicast + source. This package comes with mrouted and mroutectl. Where + the latter is used to query status and control operation. + + Note: at least two interfaces with MULTICAST flag is requried. + + http://github.com/troglobit/mrouted diff --git a/package/mrouted/S41mrouted b/package/mrouted/S41mrouted new file mode 100755 index 00000000..7dca2582 --- /dev/null +++ b/package/mrouted/S41mrouted @@ -0,0 +1,62 @@ +#!/bin/sh + +DAEMON="mrouted" +PIDFILE="/var/run/$DAEMON.pid" + +MROUTED_ARGS="-w 30" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -p "$PIDFILE" -x "/sbin/$DAEMON" \ + -- $MROUTED_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +# SIGHUP makes mrouted reload its configuration +reload() { + printf 'Reloading %s: ' "$DAEMON" + start-stop-daemon -K -s HUP -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +case "$1" in + start|stop|restart|reload) + "$1";; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/mrouted/mrouted.hash b/package/mrouted/mrouted.hash new file mode 100644 index 00000000..7516a132 --- /dev/null +++ b/package/mrouted/mrouted.hash @@ -0,0 +1,5 @@ +# From https://github.com/troglobit/mrouted/releases/ +sha256 99e1a1ca45e4e6c05b3cf379fd59a239aeabd9512656114528ad5e172d3c8ba8 mrouted-4.5.tar.gz + +# Locally calculated +sha256 834f45ed282fd010f354ecc0a50538af519a1cfcc4d2866de3be06982fa9ed29 LICENSE diff --git a/package/mrouted/mrouted.mk b/package/mrouted/mrouted.mk new file mode 100644 index 00000000..0d2071c4 --- /dev/null +++ b/package/mrouted/mrouted.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# mrouted +# +################################################################################ + +MROUTED_VERSION = 4.5 +MROUTED_SITE = \ + https://github.com/troglobit/mrouted/releases/download/$(MROUTED_VERSION) +MROUTED_DEPENDENCIES = host-bison +MROUTED_LICENSE = BSD-3-Clause +MROUTED_LICENSE_FILES = LICENSE +MROUTED_CPE_ID_VENDOR = troglobit + +define MROUTED_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/mrouted/S41mrouted \ + $(TARGET_DIR)/etc/init.d/S41mrouted +endef + +define MROUTED_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/var/lib/misc/ + $(INSTALL) -D -m 644 $(@D)/mrouted.service \ + $(TARGET_DIR)/usr/lib/systemd/system/mrouted.service +endef + +# We will asume that CONFIG_NET and CONFIG_INET are already +# set in the kernel configuration provided by the user. +define MROUTED_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_MULTICAST) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_MROUTE) +endef + +$(eval $(autotools-package)) diff --git a/package/mrp/Config.in b/package/mrp/Config.in new file mode 100644 index 00000000..ac42fa47 --- /dev/null +++ b/package/mrp/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_MRP + bool "mrp" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 + select BR2_PACKAGE_LIBEV + select BR2_PACKAGE_LIBMNL + select BR2_PACKAGE_LIBNL + select BR2_PACKAGE_CFM + help + This is the userspace application that configures the kernel + to run MRP protocol. The userspace application is made of 2 + applications, one daemon and a client. + + https://github.com/microchip-ung/mrp + +comment "mrp needs a toolchain w/ threads, kernel headers >= 5.0" + depends on !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 diff --git a/package/mrp/S65mrp b/package/mrp/S65mrp new file mode 100644 index 00000000..0ce1f80f --- /dev/null +++ b/package/mrp/S65mrp @@ -0,0 +1,55 @@ +#!/bin/sh +# +# Start mrp +# + +DAEMON="mrp_server" + +PIDFILE="/var/run/$DAEMON.pid" + +# shellcheck source=/dev/null +[ -r "/etc/default/mrp_server" ] && . "/etc/default/mrp_server" + +start() { + printf "Starting mrp daemon: " + start-stop-daemon -S -b -q -m -p $PIDFILE \ + -x /usr/bin/$DAEMON + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return $status +} + +stop() { + printf "Stopping mrp daemon: " + start-stop-daemon -K -q -p $PIDFILE + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return $status +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/package/mrp/mrp.hash b/package/mrp/mrp.hash new file mode 100644 index 00000000..47cf4618 --- /dev/null +++ b/package/mrp/mrp.hash @@ -0,0 +1,3 @@ +# locally calculated +sha256 2b960d14c861b4e0332f411440b41a9c1c06ecce8ed6197944a74b1c8279c1cc mrp-1.2.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/mrp/mrp.mk b/package/mrp/mrp.mk new file mode 100644 index 00000000..213afbcd --- /dev/null +++ b/package/mrp/mrp.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# mrp +# +################################################################################ + +MRP_VERSION = 1.2 +MRP_SITE = $(call github,microchip-ung,mrp,v$(MRP_VERSION)) +MRP_DEPENDENCIES = libev libmnl libnl cfm +MRP_LICENSE = GPL-2.0 +MRP_LICENSE_FILES = LICENSE + +define MRP_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D $(MRP_PKGDIR)/S65mrp \ + $(TARGET_DIR)/etc/init.d/S65mrp +endef + +define MRP_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(MRP_PKGDIR)/mrp.service \ + $(TARGET_DIR)/usr/lib/systemd/system/mrp.service +endef + +$(eval $(cmake-package)) diff --git a/package/mrp/mrp.service b/package/mrp/mrp.service new file mode 100644 index 00000000..05006a70 --- /dev/null +++ b/package/mrp/mrp.service @@ -0,0 +1,10 @@ +[Unit] +Description=Media Redundancy Protocol +After=network.target + +[Service] +ExecStart=/usr/bin/mrp +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/msgpack/Config.in b/package/msgpack/Config.in new file mode 100644 index 00000000..b7ae35a0 --- /dev/null +++ b/package/msgpack/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_MSGPACK + bool "msgpack" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + help + MessagePack is an efficient binary serialization format. + + It lets you exchange data among multiple languages like JSON + but it's faster and smaller. + + http://msgpack.org/ + +comment "msgpack needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_SYNC_4 diff --git a/package/msgpack/msgpack.hash b/package/msgpack/msgpack.hash new file mode 100644 index 00000000..5d432ba0 --- /dev/null +++ b/package/msgpack/msgpack.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 6e114d12a5ddb8cb11f669f83f32246e484a8addd0ce93f274996f1941c1f07b msgpack-3.3.0.tar.gz +sha256 664550b43996452a5a2c7471bb0ff77185a58c69ccafa60f983dc4c162e1ee22 COPYING +sha256 c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566 LICENSE_1_0.txt diff --git a/package/msgpack/msgpack.mk b/package/msgpack/msgpack.mk new file mode 100644 index 00000000..996b5a2f --- /dev/null +++ b/package/msgpack/msgpack.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# msgpack +# +################################################################################ + +MSGPACK_VERSION = 3.3.0 +MSGPACK_SITE = https://github.com/msgpack/msgpack-c/releases/download/cpp-$(MSGPACK_VERSION) +MSGPACK_LICENSE = BSL-1.0 +MSGPACK_LICENSE_FILES = COPYING LICENSE_1_0.txt +MSGPACK_INSTALL_STAGING = YES +MSGPACK_CONF_OPTS = -DMSGPACK_BUILD_EXAMPLES=OFF -DMSGPACK_BUILD_TESTS=OFF + +ifeq ($(BR2_STATIC_LIBS),y) +MSGPACK_CONF_OPTS += -DMSGPACK_ENABLE_SHARED=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/msmtp/Config.in b/package/msmtp/Config.in new file mode 100644 index 00000000..c83525d5 --- /dev/null +++ b/package/msmtp/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_MSMTP + bool "msmtp" + help + msmtp is an SMTP client. In the default mode, it transmits a + mail to an SMTP server (for example at a free mail provider) + which takes care of further delivery. + + https://marlam.de/msmtp/ diff --git a/package/msmtp/msmtp.hash b/package/msmtp/msmtp.hash new file mode 100644 index 00000000..ba4ef027 --- /dev/null +++ b/package/msmtp/msmtp.hash @@ -0,0 +1,7 @@ +# Locally calculated after checking signature +# https://marlam.de/msmtp/releases/msmtp-1.8.25.tar.xz.sig +# with key 2F61B4828BBA779AECB3F32703A2A4AB1E32FD34 +sha256 2dfe1dbbb397d26fe0b0b6b2e9cd2efdf9d72dd42d18e70d7f363ada2652d738 msmtp-1.8.25.tar.xz + +# Hash for license file: +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/msmtp/msmtp.mk b/package/msmtp/msmtp.mk new file mode 100644 index 00000000..b964970b --- /dev/null +++ b/package/msmtp/msmtp.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# msmtp +# +################################################################################ + +MSMTP_VERSION = 1.8.25 +MSMTP_SITE = https://marlam.de/msmtp/releases +MSMTP_SOURCE = msmtp-$(MSMTP_VERSION).tar.xz +MSMTP_DEPENDENCIES = host-pkgconf +MSMTP_CONF_OPTS = --disable-gai-idn +MSMTP_LICENSE = GPL-3.0+ +MSMTP_LICENSE_FILES = COPYING +MSMTP_CPE_ID_VENDOR = marlam + +# msmtpd needs fork +ifeq ($(BR2_USE_MMU),y) +MSMTP_CONF_OPTS += --with-msmtpd +else +MSMTP_CONF_OPTS += --without-msmtpd +endif + +ifeq ($(BR2_PACKAGE_LIBGSASL),y) +MSMTP_CONF_OPTS += --with-libgsasl +MSMTP_DEPENDENCIES += libgsasl +else +MSMTP_CONF_OPTS += --without-libgsasl +endif + +ifeq ($(BR2_PACKAGE_LIBIDN2),y) +MSMTP_CONF_OPTS += --with-libidn +MSMTP_DEPENDENCIES += libidn2 +else +MSMTP_CONF_OPTS += --without-libidn +endif + +ifeq ($(BR2_PACKAGE_LIBSECRET),y) +MSMTP_CONF_OPTS += --with-libsecret +MSMTP_DEPENDENCIES += libsecret +else +MSMTP_CONF_OPTS += --without-libsecret +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +MSMTP_CONF_OPTS += --with-tls=gnutls +MSMTP_DEPENDENCIES += gnutls +else ifeq ($(BR2_PACKAGE_OPENSSL),y) +MSMTP_CONF_OPTS += --with-tls=openssl +MSMTP_DEPENDENCIES += openssl +else +MSMTP_CONF_OPTS += --with-tls=no +endif + +$(eval $(autotools-package)) diff --git a/package/msr-tools/Config.in b/package/msr-tools/Config.in new file mode 100644 index 00000000..dde19f78 --- /dev/null +++ b/package/msr-tools/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_MSR_TOOLS + bool "msr-tools" + depends on BR2_i386 || BR2_x86_64 + help + The MSR Tools project provides utilities to access x86 + processor MSRs and CPU ID directly. + + Those tools access the hardware through the + /dev/cpu//msr and /dev/cpu//cpuid devices. This + necessitates msr and cpuid support in the kernel, which + means you need a kernel compiled with configuration options + CONFIG_X86_CPUID and CONFIG_X86_MSR enabled. + + https://01.org/msr-tools diff --git a/package/msr-tools/msr-tools.hash b/package/msr-tools/msr-tools.hash new file mode 100644 index 00000000..51ec1c79 --- /dev/null +++ b/package/msr-tools/msr-tools.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 9b87245ee091a798184e447066e9e0d7709b7c81f5e6ad55f2b958c1aa50c4a3 msr-tools-1.3.tar.gz +sha256 98398b08cd0dab9a04115b049758d4a7917af3c74389a4576d26c8a240d38a73 cpuid.c diff --git a/package/msr-tools/msr-tools.mk b/package/msr-tools/msr-tools.mk new file mode 100644 index 00000000..bfe1a07a --- /dev/null +++ b/package/msr-tools/msr-tools.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# msr-tools +# +################################################################################ + +MSR_TOOLS_VERSION = 1.3 +MSR_TOOLS_SITE = $(call github,01org,msr-tools,msr-tools-$(MSR_TOOLS_VERSION)) +MSR_TOOLS_LICENSE = GPL-2.0 +MSR_TOOLS_LICENSE_FILES = cpuid.c + +define MSR_TOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define MSR_TOOLS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) install \ + sbindir="$(TARGET_DIR)/usr/sbin" +endef + +$(eval $(generic-package)) diff --git a/package/mstpd/0001-bridge-stp.in-support-different-versions-of-pidof-13.patch b/package/mstpd/0001-bridge-stp.in-support-different-versions-of-pidof-13.patch new file mode 100644 index 00000000..daa59113 --- /dev/null +++ b/package/mstpd/0001-bridge-stp.in-support-different-versions-of-pidof-13.patch @@ -0,0 +1,48 @@ +From 181c453fc1a00573e19f14960dcc54ad84beea7c Mon Sep 17 00:00:00 2001 +From: colin-foster-in-advantage +Date: Tue, 12 Jul 2022 23:01:09 -0700 +Subject: [PATCH] bridge-stp.in: support different versions of pidof (#137) + +* bridge-stp.in: support different versions of pidof + +Busybox uses a version of pdiof that doesn't support the -c option. As +such, this renders mstpd non-functional on any Busybox system. + +Just use the standard form of pidof to detect any running instances of mstpd. + +Signed-off-by: Colin Foster +--- + bridge-stp.in | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/bridge-stp.in b/bridge-stp.in +index 47cbe79..3807873 100755 +--- a/bridge-stp.in ++++ b/bridge-stp.in +@@ -139,7 +139,7 @@ case "$action" in + fi + + # Start mstpd if necessary. +- if ! pidof -c -s mstpd >/dev/null; then ++ if ! pidof -s mstpd >/dev/null; then + if [ "$MANAGE_MSTPD" != 'y' ]; then + errmsg 'mstpd is not running' + exit 3 +@@ -212,12 +212,12 @@ case "$action" in + done + + # Kill mstpd, since no bridges are currently using it. +- kill $(pidof -c mstpd) ++ kill $(pidof mstpd) + ;; + restart|restart_config) + if [ "$action" = 'restart' ]; then + # Kill mstpd. +- pids="$(pidof -c mstpd)" ; Err=$? ++ pids="$(pidof mstpd)" ; Err=$? + if [ $Err -eq 0 ]; then + echo 'Stopping mstpd ...' + kill $pids +-- +2.25.1 + diff --git a/package/mstpd/Config.in b/package/mstpd/Config.in new file mode 100644 index 00000000..5fe58597 --- /dev/null +++ b/package/mstpd/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_MSTPD + bool "mstpd" + help + Multiple Spanning Tree Protocol Daemon. + This package provides a user-space daemon which replaces + the STP handling that is built into the Linux kernel Ethernet + bridge and adds support for RSTP and PVST+. + + https://github.com/mstpd/mstpd diff --git a/package/mstpd/mstpd.hash b/package/mstpd/mstpd.hash new file mode 100644 index 00000000..64e946d6 --- /dev/null +++ b/package/mstpd/mstpd.hash @@ -0,0 +1,5 @@ +# locally computed +sha256 91a1862548b5b509caa2e96e5fb9912bc98d4d58cc98e99a577824735756c14d mstpd-0.0.9.tar.gz +sha256 03d1ff4ca189d54322562cb2891888768af719d2c73ceafa5f1ca96133dffeb2 mstpd-0.1.0.tar.gz +sha256 c38aee9e3c8c4d5d594ff548a1be05453023016d6286931f6512db215ec1fd42 LICENSE +sha256 c5cfd44652276184374adf454150d436ce958ce50acc4ef9ccb3605a5ca7a9d3 hmac_md5.c diff --git a/package/mstpd/mstpd.mk b/package/mstpd/mstpd.mk new file mode 100644 index 00000000..07c41af8 --- /dev/null +++ b/package/mstpd/mstpd.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# mstpd +# +################################################################################ + +MSTPD_VERSION = 0.1.0 +MSTPD_SITE = $(call github,mstpd,mstpd,$(MSTPD_VERSION)) +MSTPD_AUTORECONF = YES +MSTPD_LICENSE = GPL-2.0, RSA Data Security (md5) +MSTPD_LICENSE_FILES = LICENSE hmac_md5.c + +# The Linux kernel requires mstp binaries to be installed into /sbin, +# not /usr/sbin. +MSTPD_CONF_OPTS = --sbindir=/sbin + +$(eval $(autotools-package)) diff --git a/package/mtd/Config.in b/package/mtd/Config.in new file mode 100644 index 00000000..0c95e3cc --- /dev/null +++ b/package/mtd/Config.in @@ -0,0 +1,225 @@ +config BR2_PACKAGE_MTD + bool "mtd, jffs2 and ubi/ubifs tools" + help + Build mtd, jffs2 and ubi/ubifs tools + + http://www.linux-mtd.infradead.org/ + +if BR2_PACKAGE_MTD + +# The two hidden options below match mtd configure script options +# --enable-jffs and --enable-ubifs + +config BR2_PACKAGE_MTD_JFFS_UTILS + bool + +config BR2_PACKAGE_MTD_UBIFS_UTILS + bool + select BR2_PACKAGE_LIBOPENSSL_ENGINES if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + +comment "MTD tools selection" + +config BR2_PACKAGE_MTD_DOCFDISK + bool "docfdisk" + +config BR2_PACKAGE_MTD_DOC_LOADBIOS + bool "doc_loadbios" + +config BR2_PACKAGE_MTD_FLASHCP + bool "flashcp" + default y + +config BR2_PACKAGE_MTD_FLASH_ERASE + bool "flash_erase" + default y + +config BR2_PACKAGE_MTD_FLASH_LOCK + bool "flash_lock" + default y + +config BR2_PACKAGE_MTD_FLASH_OTP_DUMP + bool "flash_otp_dump" + +config BR2_PACKAGE_MTD_FLASH_OTP_INFO + bool "flash_otp_info" + +config BR2_PACKAGE_MTD_FLASH_OTP_LOCK + bool "flash_otp_lock" + +config BR2_PACKAGE_MTD_FLASH_OTP_WRITE + bool "flash_otp_write" + +config BR2_PACKAGE_MTD_FLASH_OTP_ERASE + bool "flash_otp_erase" + +config BR2_PACKAGE_MTD_FLASH_UNLOCK + bool "flash_unlock" + default y + +config BR2_PACKAGE_MTD_FTL_CHECK + bool "ftl_check" + +config BR2_PACKAGE_MTD_FTL_FORMAT + bool "ftl_format" + +config BR2_PACKAGE_MTD_JFFS2DUMP + bool "jffs2dump" + select BR2_PACKAGE_MTD_JFFS_UTILS + +config BR2_PACKAGE_MTD_LSMTD + bool "lsmtd" + +config BR2_PACKAGE_MTD_MKFSJFFS2 + bool "mkfs.jffs2" + select BR2_PACKAGE_MTD_JFFS_UTILS + +config BR2_PACKAGE_MTD_MKFSUBIFS + bool "mkfs.ubifs" + select BR2_PACKAGE_MTD_UBIFS_UTILS + +config BR2_PACKAGE_MTD_MTD_DEBUG + bool "mtd_debug" + default y + +config BR2_PACKAGE_MTD_MTDPART + bool "mtdpart" + +config BR2_PACKAGE_MTD_NANDDUMP + bool "nanddump" + default y + +config BR2_PACKAGE_MTD_NANDTEST + bool "nandtest" + default y + +config BR2_PACKAGE_MTD_NANDWRITE + bool "nandwrite" + default y + +config BR2_PACKAGE_MTD_NANDFLIPBITS + bool "nandflipbits" + +config BR2_PACKAGE_MTD_NFTLDUMP + bool "nftldump" + +config BR2_PACKAGE_MTD_NFTL_FORMAT + bool "nftl_format" + +config BR2_PACKAGE_MTD_RECV_IMAGE + bool "recv_image" + +config BR2_PACKAGE_MTD_RFDDUMP + bool "rfddump" + +config BR2_PACKAGE_MTD_RFDFORMAT + bool "rfdformat" + +config BR2_PACKAGE_MTD_SERVE_IMAGE + bool "serve_image" + +config BR2_PACKAGE_MTD_SUMTOOL + bool "sumtool" + select BR2_PACKAGE_MTD_JFFS_UTILS + +config BR2_PACKAGE_MTD_MTDINFO + bool "mtdinfo" + default y + +config BR2_PACKAGE_MTD_UBIATTACH + bool "ubiattach" + default y + +config BR2_PACKAGE_MTD_UBICRC32 + bool "ubicrc32" + default y + +config BR2_PACKAGE_MTD_UBIDETACH + bool "ubidetach" + default y + +config BR2_PACKAGE_MTD_UBIFORMAT + bool "ubiformat" + default y + +config BR2_PACKAGE_MTD_UBIHEALTHD + bool "ubihealthd" + default y + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # getrandom() + +comment "ubihealthd needs a toolchain w/ headers >= 3.17" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 + +config BR2_PACKAGE_MTD_UBIMKVOL + bool "ubimkvol" + default y + +config BR2_PACKAGE_MTD_UBINFO + bool "ubinfo" + default y + +config BR2_PACKAGE_MTD_UBINIZE + bool "ubinize" + default y + +config BR2_PACKAGE_MTD_UBIRENAME + bool "ubirename" + default y + +config BR2_PACKAGE_MTD_UBIRMVOL + bool "ubirmvol" + default y + +config BR2_PACKAGE_MTD_UBIRSVOL + bool "ubirsvol" + default y + +config BR2_PACKAGE_MTD_UBIUPDATEVOL + bool "ubiupdatevol" + default y + +config BR2_PACKAGE_MTD_UBIBLOCK + bool "ubiblock" + default y + +config BR2_PACKAGE_MTD_TESTS + bool "MTD test tools" + depends on BR2_USE_MMU # fork() in fstests + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Build and install tools for testing MTD devices and drivers. + +if BR2_PACKAGE_MTD_TESTS + +config BR2_PACKAGE_MTD_FLASH_READTEST + bool "flash_readtest" + +config BR2_PACKAGE_MTD_FLASH_SPEED + bool "flash_speed" + +config BR2_PACKAGE_MTD_FLASH_STRESS + bool "flash_stress" + +config BR2_PACKAGE_MTD_FLASH_TORTURE + bool "flash_torture" + +config BR2_PACKAGE_MTD_INTEGCK + bool "integck" + +config BR2_PACKAGE_MTD_NANDBITERRS + bool "nandbiterrs" + +config BR2_PACKAGE_MTD_NANDPAGETEST + bool "nandpagetest" + +config BR2_PACKAGE_MTD_NANDSUBPAGETEST + bool "nandsubpagetest" + +endif + +comment "MTD test tools need a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS + +endif diff --git a/package/mtd/Config.in.host b/package/mtd/Config.in.host new file mode 100644 index 00000000..37522661 --- /dev/null +++ b/package/mtd/Config.in.host @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HOST_MTD + bool "host mtd, jffs2 and ubi/ubifs tools" + help + Build mtd, jffs2 and ubi/ubifs tools + + http://www.linux-mtd.infradead.org/ diff --git a/package/mtd/mtd.hash b/package/mtd/mtd.hash new file mode 100644 index 00000000..1efb06f4 --- /dev/null +++ b/package/mtd/mtd.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +# https://infraroot.at/pub/mtd/mtd-utils-2.2.0.tar.bz2.asc +sha256 250d082f67375ca8451b5fcfc9a23a53ced3ebebd8312c288daf2507bbab1324 mtd-utils-2.2.0.tar.bz2 +sha256 dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa COPYING diff --git a/package/mtd/mtd.mk b/package/mtd/mtd.mk new file mode 100644 index 00000000..d3444c88 --- /dev/null +++ b/package/mtd/mtd.mk @@ -0,0 +1,168 @@ +################################################################################ +# +# mtd +# +################################################################################ + +MTD_VERSION = 2.2.0 +MTD_SOURCE = mtd-utils-$(MTD_VERSION).tar.bz2 +MTD_SITE = https://infraroot.at/pub/mtd +MTD_LICENSE = GPL-2.0 +MTD_LICENSE_FILES = COPYING +MTD_CPE_ID_VENDOR = mtd-utils_project +MTD_CPE_ID_PRODUCT = mtd-utils +MTD_INSTALL_STAGING = YES + +MTD_LDFLAGS = $(TARGET_LDFLAGS) + +ifeq ($(BR2_PACKAGE_LIBEXECINFO),y) +MTD_DEPENDENCIES += libexecinfo +MTD_LDFLAGS += -lexecinfo +endif + +ifeq ($(BR2_PACKAGE_LZO),y) +MTD_DEPENDENCIES += lzo +MTD_CONF_OPTS += --with-lzo +else +MTD_CONF_OPTS += --without-lzo +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +MTD_DEPENDENCIES += host-pkgconf zlib +MTD_CONF_OPTS += --with-zlib +else +MTD_CONF_OPTS += --without-zlib +endif + +MTD_CONF_ENV += LDFLAGS="$(MTD_LDFLAGS)" + +ifeq ($(BR2_PACKAGE_MTD_JFFS_UTILS),y) +MTD_CONF_OPTS += --with-jffs +else +MTD_CONF_OPTS += --without-jffs +endif + +ifeq ($(BR2_PACKAGE_MTD_UBIFS_UTILS),y) +MTD_DEPENDENCIES += util-linux host-pkgconf +MTD_CONF_OPTS += --with-ubifs +# crypto needs linux/hash_info.h +ifeq ($(BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12)$(BR2_PACKAGE_OPENSSL),yy) +MTD_DEPENDENCIES += openssl +MTD_CONF_OPTS += --with-crypto +else +MTD_CONF_OPTS += --without-crypto +endif +ifeq ($(BR2_PACKAGE_ZSTD),y) +MTD_DEPENDENCIES += zstd +MTD_CONF_OPTS += --with-zstd +else +MTD_CONF_OPTS += --without-zstd +endif +else +MTD_CONF_OPTS += --without-ubifs +endif + +ifeq ($(BR2_PACKAGE_MTD_UBIHEALTHD),y) +MTD_CONF_OPTS += --enable-ubihealthd +else +MTD_CONF_OPTS += --disable-ubihealthd +endif + +ifeq ($(BR2_PACKAGE_MTD_TESTS),y) +MTD_CONF_OPTS += --with-tests +else +MTD_CONF_OPTS += --without-tests +endif + +# If extended attributes are required, the acl package must +# also be enabled which will also include the attr package. +ifeq ($(BR2_PACKAGE_ACL),y) +MTD_DEPENDENCIES += acl +MTD_CONF_OPTS += --with-xattr +else +MTD_CONF_OPTS += --without-xattr +endif + +HOST_MTD_DEPENDENCIES = host-acl host-zlib host-lzo host-util-linux host-zstd +HOST_MTD_CONF_OPTS = \ + --with-jffs \ + --with-ubifs \ + --without-crypto \ + --without-tests + +MKFS_JFFS2 = $(HOST_DIR)/sbin/mkfs.jffs2 +SUMTOOL = $(HOST_DIR)/sbin/sumtool + +MTD_TARGETS_$(BR2_PACKAGE_MTD_DOCFDISK) += docfdisk +MTD_TARGETS_$(BR2_PACKAGE_MTD_DOC_LOADBIOS) += doc_loadbios +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASHCP) += flashcp +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_ERASE) += flash_erase +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_LOCK) += flash_lock +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_OTP_DUMP) += flash_otp_dump +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_OTP_INFO) += flash_otp_info +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_OTP_LOCK) += flash_otp_lock +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_OTP_WRITE) += flash_otp_write +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_OTP_ERASE) += flash_otp_erase +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_UNLOCK) += flash_unlock +MTD_TARGETS_$(BR2_PACKAGE_MTD_FTL_CHECK) += ftl_check +MTD_TARGETS_$(BR2_PACKAGE_MTD_FTL_FORMAT) += ftl_format +MTD_TARGETS_$(BR2_PACKAGE_MTD_JFFS2DUMP) += jffs2dump +MTD_TARGETS_$(BR2_PACKAGE_MTD_LSMTD) += lsmtd +MTD_TARGETS_$(BR2_PACKAGE_MTD_MKFSJFFS2) += mkfs.jffs2 +MTD_TARGETS_$(BR2_PACKAGE_MTD_MTD_DEBUG) += mtd_debug +MTD_TARGETS_$(BR2_PACKAGE_MTD_MTDPART) += mtdpart +MTD_TARGETS_$(BR2_PACKAGE_MTD_NANDDUMP) += nanddump +MTD_TARGETS_$(BR2_PACKAGE_MTD_NANDTEST) += nandtest +MTD_TARGETS_$(BR2_PACKAGE_MTD_NANDWRITE) += nandwrite +MTD_TARGETS_$(BR2_PACKAGE_MTD_NFTLDUMP) += nftldump +MTD_TARGETS_$(BR2_PACKAGE_MTD_NFTL_FORMAT) += nftl_format +MTD_TARGETS_$(BR2_PACKAGE_MTD_RECV_IMAGE) += recv_image +MTD_TARGETS_$(BR2_PACKAGE_MTD_RFDDUMP) += rfddump +MTD_TARGETS_$(BR2_PACKAGE_MTD_RFDFORMAT) += rfdformat +MTD_TARGETS_$(BR2_PACKAGE_MTD_SERVE_IMAGE) += serve_image +MTD_TARGETS_$(BR2_PACKAGE_MTD_SUMTOOL) += sumtool +MTD_TARGETS_$(BR2_PACKAGE_MTD_MTDINFO) += mtdinfo +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBIATTACH) += ubiattach +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBICRC32) += ubicrc32 +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBIDETACH) += ubidetach +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBIFORMAT) += ubiformat +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBIHEALTHD) += ubihealthd +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBIMKVOL) += ubimkvol +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBINFO) += ubinfo +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBINIZE) += ubinize +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBIRENAME) += ubirename +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBIRMVOL) += ubirmvol +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBIRSVOL) += ubirsvol +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBIUPDATEVOL) += ubiupdatevol +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBIBLOCK) += ubiblock +MTD_TARGETS_$(BR2_PACKAGE_MTD_MKFSUBIFS) += mkfs.ubifs +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_READTEST) += flash_readtest +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_SPEED) += flash_speed +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_STRESS) += flash_stress +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_TORTURE) += flash_torture +MTD_TARGETS_$(BR2_PACKAGE_MTD_INTEGCK) += integck +MTD_TARGETS_$(BR2_PACKAGE_MTD_NANDBITERRS) += nandbiterrs +MTD_TARGETS_$(BR2_PACKAGE_MTD_NANDPAGETEST) += nandpagetest +MTD_TARGETS_$(BR2_PACKAGE_MTD_NANDSUBPAGETEST) += nandsubpagetest +MTD_TARGETS_$(BR2_PACKAGE_MTD_NANDFLIPBITS) += nandflipbits + +define MTD_INSTALL_TARGET_CMDS + $(foreach f,$(MTD_TARGETS_y), \ + $(INSTALL) -D -m 0755 $(@D)/$(f) $(TARGET_DIR)/usr/sbin/$(notdir $(f)) + ) +endef + +# Those libraries are not installed by "make install", but are needed +# by other packages, such as swupdate. +define MTD_INSTALL_LIBS + $(INSTALL) -D -m 0755 $(@D)/include/libmtd.h $(STAGING_DIR)/usr/include/libmtd.h + $(INSTALL) -D -m 0755 $(@D)/include/libubi.h $(STAGING_DIR)/usr/include/libubi.h + $(INSTALL) -D -m 0755 $(@D)/include/mtd/ubi-media.h $(STAGING_DIR)/usr/include/mtd/ubi-media.h + $(INSTALL) -D -m 0755 $(@D)/libmtd.a $(STAGING_DIR)/usr/lib/libmtd.a + $(INSTALL) -D -m 0755 $(@D)/libubi.a $(STAGING_DIR)/usr/lib/libubi.a +endef + +MTD_POST_INSTALL_STAGING_HOOKS += MTD_INSTALL_LIBS + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/mtdev/Config.in b/package/mtdev/Config.in new file mode 100644 index 00000000..afdd7dca --- /dev/null +++ b/package/mtdev/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_MTDEV + bool "mtdev" + help + The mtdev is a stand-alone library which transforms all + variants of kernel MT events to the slotted type B protocol. + + http://bitmath.org/code/mtdev/ diff --git a/package/mtdev/mtdev.hash b/package/mtdev/mtdev.hash new file mode 100644 index 00000000..355e50ff --- /dev/null +++ b/package/mtdev/mtdev.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 15d7b28da8ac71d8bc8c9287c2045fd174267bc740bec10cfda332dc1204e0e0 mtdev-1.1.6.tar.bz2 +sha256 795bfe74daae59a97d3a0c8ec0ba0f08c243adf94a3aa7981a4136fce31d55b4 COPYING diff --git a/package/mtdev/mtdev.mk b/package/mtdev/mtdev.mk new file mode 100644 index 00000000..71918581 --- /dev/null +++ b/package/mtdev/mtdev.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# mtdev +# +################################################################################ + +MTDEV_VERSION = 1.1.6 +MTDEV_SOURCE = mtdev-$(MTDEV_VERSION).tar.bz2 +MTDEV_SITE = http://bitmath.org/code/mtdev + +MTDEV_LICENSE = MIT +MTDEV_LICENSE_FILES = COPYING +MTDEV_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/mtools/Config.in b/package/mtools/Config.in new file mode 100644 index 00000000..43e14e2c --- /dev/null +++ b/package/mtools/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_MTOOLS + bool "mtools" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + # runtime UTF conversion support + select BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY if BR2_TOOLCHAIN_USES_GLIBC + help + Mtools is a collection of utilities to access MS-DOS disks + from Unix without mounting them. It supports Win'95 style + long file names, OS/2 Xdf disks and 2m disks (store up to + 1992k on a high density 3 1/2 disk). + + http://www.gnu.org/software/mtools/ + +comment "mtools needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + depends on BR2_USE_MMU diff --git a/package/mtools/Config.in.host b/package/mtools/Config.in.host new file mode 100644 index 00000000..42cb6f80 --- /dev/null +++ b/package/mtools/Config.in.host @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HOST_MTOOLS + bool "host mtools" + help + Mtools is a collection of utilities to access MS-DOS disks + from Unix without mounting them. It supports Win'95 style long + file names, OS/2 Xdf disks and 2m disks (store up to 1992k on + a high density 3 1/2 disk). + + http://www.gnu.org/software/mtools/ diff --git a/package/mtools/mtools.hash b/package/mtools/mtools.hash new file mode 100644 index 00000000..412d67a3 --- /dev/null +++ b/package/mtools/mtools.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +sha256 997ffe4125a19de1fd433ed63f128f7d54bc1a5915f3cdb36da6491ef917f217 mtools-4.0.43.tar.lz + +# Locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/mtools/mtools.mk b/package/mtools/mtools.mk new file mode 100644 index 00000000..96d8e43e --- /dev/null +++ b/package/mtools/mtools.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# mtools +# +################################################################################ + +MTOOLS_VERSION = 4.0.43 +MTOOLS_SOURCE = mtools-$(MTOOLS_VERSION).tar.lz +MTOOLS_SITE = $(BR2_GNU_MIRROR)/mtools +MTOOLS_LICENSE = GPL-3.0+ +MTOOLS_LICENSE_FILES = COPYING +MTOOLS_CONF_OPTS = --without-x +# info documentation not needed +MTOOLS_CONF_ENV = \ + ac_cv_func_setpgrp_void=yes \ + ac_cv_lib_bsd_gethostbyname=no \ + ac_cv_lib_bsd_main=no \ + ac_cv_path_INSTALL_INFO= + +HOST_MTOOLS_CONF_ENV = \ + ac_cv_lib_bsd_gethostbyname=no \ + ac_cv_lib_bsd_main=no \ + ac_cv_path_INSTALL_INFO= + +# link with iconv if enabled +ifeq ($(BR2_PACKAGE_LIBICONV),y) +MTOOLS_DEPENDENCIES += libiconv +MTOOLS_CONF_ENV += LIBS=-liconv +endif + +# Package does not build in parallel due to improper make rules +MTOOLS_MAKE = $(MAKE1) + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/mtr/Config.in b/package/mtr/Config.in new file mode 100644 index 00000000..ec83e25c --- /dev/null +++ b/package/mtr/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_MTR + bool "mtr" + depends on BR2_USE_MMU # fork() + help + mtr combines the functionality of the 'traceroute' and 'ping' + programs in a single network diagnostic tool. + + http://www.bitwizard.nl/mtr/ diff --git a/package/mtr/mtr.hash b/package/mtr/mtr.hash new file mode 100644 index 00000000..399799f4 --- /dev/null +++ b/package/mtr/mtr.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 12490fb660ba5fb34df8c06a0f62b4f9cbd11a584fc3f6eceda0a99124e8596f mtr-0.95.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/mtr/mtr.mk b/package/mtr/mtr.mk new file mode 100644 index 00000000..d3e3b1a9 --- /dev/null +++ b/package/mtr/mtr.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# mtr +# +################################################################################ + +MTR_VERSION = 0.95 +MTR_SITE = $(call github,traviscross,mtr,v$(MTR_VERSION)) +MTR_AUTORECONF = YES +MTR_DEPENDENCIES = \ + host-pkgconf \ + $(if $(BR2_PACKAGE_LIBCAP),libcap) +MTR_LICENSE = GPL-2.0 +MTR_LICENSE_FILES = COPYING +MTR_SELINUX_MODULES = netutils + +ifeq ($(BR2_PACKAGE_JANSSON),y) +MTR_CONF_OPTS += --with-jansson +MTR_DEPENDENCIES += jansson +else +MTR_CONF_OPTS += --without-jansson +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3),y) +MTR_CONF_OPTS += --with-gtk +MTR_DEPENDENCIES += libgtk3 +else +MTR_CONF_OPTS += --without-gtk +endif + +ifeq ($(BR2_PACKAGE_NCURSES),y) +MTR_CONF_OPTS += --with-ncurses +MTR_DEPENDENCIES += ncurses +else +MTR_CONF_OPTS += --without-ncurses +endif + +$(eval $(autotools-package)) diff --git a/package/multicat/Config.in b/package/multicat/Config.in new file mode 100644 index 00000000..85f306d5 --- /dev/null +++ b/package/multicat/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_MULTICAT + bool "multicat" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_BITSTREAM + help + Simple and efficient multicast and transport stream + manipulation. + + http://www.videolan.org/projects/multicat.html + +comment "multicat needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/multicat/multicat.hash b/package/multicat/multicat.hash new file mode 100644 index 00000000..63acc15f --- /dev/null +++ b/package/multicat/multicat.hash @@ -0,0 +1,6 @@ +# From https://get.videolan.org/multicat/2.3/multicat-2.3.tar.bz2.md5 +md5 cf4e4bc07d72eda110050d755db14620 multicat-2.3.tar.bz2 +# From https://get.videolan.org/multicat/2.3/multicat-2.3.tar.bz2.sha256 +sha256 2be162e9e8b2e6f6aa7686431f102db6c72c8288bd82dbc67ffed631f4a3361e multicat-2.3.tar.bz2 +# locally calculated +sha256 94f68aec169fb6c9937eade757251714d38a56812be5dbfc3973914a71ad8d2d COPYING diff --git a/package/multicat/multicat.mk b/package/multicat/multicat.mk new file mode 100644 index 00000000..1d31ec86 --- /dev/null +++ b/package/multicat/multicat.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# multicat +# +################################################################################ + +MULTICAT_VERSION = 2.3 +MULTICAT_SOURCE = multicat-$(MULTICAT_VERSION).tar.bz2 +MULTICAT_SITE = https://get.videolan.org/multicat/$(MULTICAT_VERSION) +MULTICAT_LICENSE = GPL-2.0+ +MULTICAT_LICENSE_FILES = COPYING + +MULTICAT_DEPENDENCIES = bitstream + +# Makefile does not use LDFLAGS. Use LDLIBS for that instead. +MULTICAT_MAKE_ENV = $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \ + LDLIBS="$(TARGET_LDFLAGS)" + +define MULTICAT_BUILD_CMDS + $(MULTICAT_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define MULTICAT_INSTALL_TARGET_CMDS + $(MULTICAT_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) PREFIX=/usr install +endef + +$(eval $(generic-package)) diff --git a/package/multipath-tools/Config.in b/package/multipath-tools/Config.in new file mode 100644 index 00000000..bc0f6719 --- /dev/null +++ b/package/multipath-tools/Config.in @@ -0,0 +1,35 @@ +comment "multipath-tools needs udev and a toolchain w/ threads, dynamic library, C++" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_PACKAGE_HAS_UDEV || !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_MULTIPATH_TOOLS + bool "multipath-tools" + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_INSTALL_LIBSTDCPP # liburcu + select BR2_PACKAGE_JSON_C + select BR2_PACKAGE_LIBURCU + select BR2_PACKAGE_LIBAIO + select BR2_PACKAGE_LVM2 + select BR2_PACKAGE_LVM2_STANDARD_INSTALL + select BR2_PACKAGE_READLINE + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBS + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + help + This package provides the following binaries to drive + the Device Mapper multipathing driver: + * multipath - Device mapper target autoconfig. + * multipathd - Multipath daemon. + * mpathpersist - Manages SCSI persistent reservations on + dm multipath devices. + * kpartx - Create device maps from partition tables. + + https://github.com/openSUSE/multipath-tools diff --git a/package/multipath-tools/S60multipathd b/package/multipath-tools/S60multipathd new file mode 100644 index 00000000..ff995e93 --- /dev/null +++ b/package/multipath-tools/S60multipathd @@ -0,0 +1,47 @@ +#!/bin/sh + +DAEMON="multipathd" +PIDFILE="/var/run/$DAEMON.pid" + +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/sbin/$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/multipath-tools/multipath-tools.hash b/package/multipath-tools/multipath-tools.hash new file mode 100644 index 00000000..03b36f00 --- /dev/null +++ b/package/multipath-tools/multipath-tools.hash @@ -0,0 +1,6 @@ +# Locally computed: +sha256 0f8cfe691d54192c7593cd932e3080bcd35d25454ae2ebb4043213b38eec34ab multipath-tools-0.9.8.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0 +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 LICENSES/GPL-3.0 +sha256 b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c LICENSES/LGPL-2.0 +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSES/LGPL-2.1 diff --git a/package/multipath-tools/multipath-tools.mk b/package/multipath-tools/multipath-tools.mk new file mode 100644 index 00000000..7547f02d --- /dev/null +++ b/package/multipath-tools/multipath-tools.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# multipath-tools +# +################################################################################ + +MULTIPATH_TOOLS_VERSION = 0.9.8 +MULTIPATH_TOOLS_SITE = $(call github,opensvc,multipath-tools,$(MULTIPATH_TOOLS_VERSION)) + +MULTIPATH_TOOLS_LICENSE = \ + LGPL-2.0 (default), \ + LGPL-2.1+ (libmpathcmd), \ + GPL-2.0+ (libmultipath), \ + GPL-3.0+ (libdmmp) +MULTIPATH_TOOLS_LICENSE_FILES = \ + LICENSES/GPL-2.0 \ + LICENSES/GPL-3.0 \ + LICENSES/LGPL-2.0 \ + LICENSES/LGPL-2.1 +MULTIPATH_TOOLS_CPE_ID_VENDOR = opensvc + +MULTIPATH_TOOLS_DEPENDENCIES = \ + host-pkgconf \ + json-c \ + liburcu \ + libaio \ + lvm2 \ + readline \ + udev \ + util-linux-libs + +MULTIPATH_TOOLS_MAKE_OPTS = \ + kernel_incdir=$(STAGING_DIR)/usr/include \ + LIB="lib" \ + RUN="run" \ + OPTFLAGS="" \ + STACKPROT="" \ + WARNFLAGS="" + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +MULTIPATH_TOOLS_DEPENDENCIES += systemd +else +MULTIPATH_TOOLS_MAKE_OPTS += SYSTEMD="" +endif + +define MULTIPATH_TOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(MULTIPATH_TOOLS_MAKE_OPTS) +endef + +define MULTIPATH_TOOLS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install \ + $(MULTIPATH_TOOLS_MAKE_OPTS) DESTDIR="$(TARGET_DIR)" +endef + +define MULTIPATH_TOOLS_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/multipath-tools/S60multipathd \ + $(TARGET_DIR)/etc/init.d/S60multipathd +endef + +$(eval $(generic-package)) diff --git a/package/mupdf/Config.in b/package/mupdf/Config.in new file mode 100644 index 00000000..34c5e7d5 --- /dev/null +++ b/package/mupdf/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_MUPDF + bool "mupdf" + depends on BR2_INSTALL_LIBSTDCPP # harfbuzz + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # harfbuzz + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # harfbuzz + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_GUMBO_PARSER + select BR2_PACKAGE_HARFBUZZ + select BR2_PACKAGE_JBIG2DEC + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LCMS2 + select BR2_PACKAGE_OPENJPEG + select BR2_PACKAGE_ZLIB + help + MuPDF is a lightweight PDF, XPS, and E-book viewer. + + https://www.mupdf.com/index.html + +comment "mupdf needs a toolchain w/ C++, gcc >= 4.9" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/mupdf/mupdf.hash b/package/mupdf/mupdf.hash new file mode 100644 index 00000000..580235ee --- /dev/null +++ b/package/mupdf/mupdf.hash @@ -0,0 +1,8 @@ +# From https://mupdf.com/downloads/index.html: +sha1 d79600bccd70ab9d0e8ee19dae4e275f2af95ced mupdf-1.23.9-source.tar.lz + +# Locally computed: +sha256 2c2f89deb9f425ba637dac226191d547f2b40975c4d21a340965f52c001e15c5 mupdf-1.23.9-source.tar.lz + +# Hash for license files: +sha256 57c8ff33c9c0cfc3ef00e650a1cc910d7ee479a8bc509f6c9209a7c2a11399d6 COPYING diff --git a/package/mupdf/mupdf.mk b/package/mupdf/mupdf.mk new file mode 100644 index 00000000..9eecb842 --- /dev/null +++ b/package/mupdf/mupdf.mk @@ -0,0 +1,68 @@ +################################################################################ +# +# mudpf +# +################################################################################ + +# python-pymupdf's version be compatible with mupdf's version +MUPDF_VERSION = 1.23.9 +MUPDF_SOURCE = mupdf-$(MUPDF_VERSION)-source.tar.lz +MUPDF_SITE = https://mupdf.com/downloads/archive +MUPDF_LICENSE = AGPL-3.0+ +MUPDF_LICENSE_FILES = COPYING +MUPDF_CPE_ID_VENDOR = artifex +MUPDF_INSTALL_STAGING = YES +MUPDF_DEPENDENCIES = \ + freetype \ + gumbo-parser \ + harfbuzz \ + host-pkgconf \ + jbig2dec jpeg \ + lcms2 openjpeg \ + zlib + +# mupdf doesn't use CFLAGS and LIBS but XCFLAGS and XLIBS instead. +# with USE_SYSTEM_LIBS it will try to use system libraries instead of the bundled ones. +MUPDF_MAKE_ENV = $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \ + XCFLAGS="$(TARGET_CFLAGS)" \ + XLIBS="$(TARGET_LDFLAGS)" \ + USE_SYSTEM_LIBS=yes + +MUPDF_MAKE_OPTS = \ + HAVE_OBJCOPY=no \ + prefix="/usr" + +ifeq ($(BR2_STATIC_LIBS),y) +MUPDF_MAKE_OPTS += shared=no +else +MUPDF_MAKE_OPTS += shared=yes +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBX11)$(BR2_PACKAGE_XLIB_LIBXEXT),yy) +MUPDF_MAKE_OPTS += HAVE_X11=yes +MUPDF_DEPENDENCIES += xlib_libX11 xlib_libXext +else +MUPDF_MAKE_OPTS += HAVE_X11=no +endif + +ifeq ($(BR2_PACKAGE_LIBFREEGLUT),y) +MUPDF_DEPENDENCIES += libfreeglut +else +MUPDF_MAKE_OPTS += HAVE_GLUT=no +endif + +define MUPDF_BUILD_CMDS + $(MUPDF_MAKE_ENV) $(MAKE) -C $(@D) $(MUPDF_MAKE_OPTS) all +endef + +define MUPDF_INSTALL_STAGING_CMDS + $(MUPDF_MAKE_ENV) $(MAKE) -C $(@D) $(MUPDF_MAKE_OPTS) \ + DESTDIR="$(STAGING_DIR)" install-libs +endef + +define MUPDF_INSTALL_TARGET_CMDS + $(MUPDF_MAKE_ENV) $(MAKE) -C $(@D) $(MUPDF_MAKE_OPTS) \ + DESTDIR="$(TARGET_DIR)" install +endef + +$(eval $(generic-package)) diff --git a/package/murata-cyw-fw/Config.in b/package/murata-cyw-fw/Config.in new file mode 100644 index 00000000..75304775 --- /dev/null +++ b/package/murata-cyw-fw/Config.in @@ -0,0 +1,97 @@ +config BR2_PACKAGE_MURATA_CYW_FW + bool "murata-cyw-fw" + help + Murata Wireless firmware, NVRAM and Bluetooth HCD patch files. + + https://github.com/murata-wireless/cyw-fmac-fw + https://github.com/murata-wireless/cyw-fmac-nvram + https://github.com/murata-wireless/cyw-bt-patch + +if BR2_PACKAGE_MURATA_CYW_FW + +config BR2_PACKAGE_MURATA_CYW_FW_CYW43012 + bool "CYW43012 (1LV)" + help + Murata Wireless CYW43012 (1LV) module firmware files. + +config BR2_PACKAGE_MURATA_CYW_FW_CYW43340 + bool "CYW43340/CYW43341 (1BW)" + help + Murata Wireless CYW43340/CYW43341 (1BW) module firmware files. + +config BR2_PACKAGE_MURATA_CYW_FW_CYW43362 + bool "CYW43362 (SN8000)" + help + Murata Wireless CYW43362 (SN8000) module firmware files. + +config BR2_PACKAGE_MURATA_CYW_FW_CYW4339 + bool "CYW4339 (1CK/ZP)" + help + Murata Wireless CYW4339 (1CK/ZP) module firmware files. + +choice + prompt "CYW4339 module" if BR2_PACKAGE_MURATA_CYW_FW_CYW4339 + +config BR2_PACKAGE_MURATA_CYW_FW_CYW4339_1CK + bool "1CK" + +config BR2_PACKAGE_MURATA_CYW_FW_CYW4339_ZP + bool "ZP" + +endchoice + +config BR2_PACKAGE_MURATA_CYW_FW_CYW43430 + bool "CYW43430/CYW4343W/CYW43364 (1DX/1FX/1LN)" + help + Murata Wireless CYW43430/CYW4343W/CYW43364 (1DX/1FX/1LN) + module firmware files. + +choice + prompt "CYW43430/CYW4343W/CYW43364 module" if BR2_PACKAGE_MURATA_CYW_FW_CYW43430 + +config BR2_PACKAGE_MURATA_CYW_FW_CYW43430_1DX + bool "1DX" + +config BR2_PACKAGE_MURATA_CYW_FW_CYW43430_1FX + bool "1FX" + +config BR2_PACKAGE_MURATA_CYW_FW_CYW43430_1LN + bool "1LN" + +endchoice + +config BR2_PACKAGE_MURATA_CYW_FW_CYW43455 + bool "CYW43455 (1HK/1LC/1MW)" + help + Murata Wireless CYW43455 (1HK/1LC/1MW) module firmware files. + +choice + prompt "CYW43455 module" if BR2_PACKAGE_MURATA_CYW_FW_CYW43455 + +config BR2_PACKAGE_MURATA_CYW_FW_CYW43455_1HK + bool "1HK" + +config BR2_PACKAGE_MURATA_CYW_FW_CYW43455_1LC + bool "1LC" + +config BR2_PACKAGE_MURATA_CYW_FW_CYW43455_1MW + bool "1MW" + +endchoice + +config BR2_PACKAGE_MURATA_CYW_FW_CYW4354 + bool "CYW4354 (1BB)" + help + Murata Wireless CYW4354 (1BB) module firmware files. + +config BR2_PACKAGE_MURATA_CYW_FW_CYW4356 + bool "CYW4356 (1CX)" + help + Murata Wireless CYW4356 (1CX) module firmware files. + +config BR2_PACKAGE_MURATA_CYW_FW_CYW4359 + bool "CYW4359 (1FD)" + help + Murata Wireless CYW4359 (1FD) module firmware files. + +endif diff --git a/package/murata-cyw-fw/murata-cyw-fw.hash b/package/murata-cyw-fw/murata-cyw-fw.hash new file mode 100644 index 00000000..d3c23dca --- /dev/null +++ b/package/murata-cyw-fw/murata-cyw-fw.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 c3ecf357786d6db6f3283c0ea36ec067b1728f801fd8871694aed1502a82e9bc murata-cyw-fw-8d87950bfad28c65926695b7357bd8995b60016a.tar.gz +sha256 03c140ae04f9c2036678262d6457b9c4b4a9ebb523c5e681af6d57b97c11da37 cyw-fmac-nvram-d27f1bf105fa1e5b828e355793b88d4b66188411.tar.gz +sha256 8f23ebb9a262112b62ace1e1bedcdeb00523d9a45e8d48a829d4ca35db4f0280 cyw-bt-patch-748462f0b02ec4aeb500bedd60780ac51c37be31.tar.gz +sha256 3a892759b73e8b459f1a750954b316118b0061fd9d1868d11fa258c104ee7e0c LICENCE.cypress diff --git a/package/murata-cyw-fw/murata-cyw-fw.mk b/package/murata-cyw-fw/murata-cyw-fw.mk new file mode 100644 index 00000000..b99168b8 --- /dev/null +++ b/package/murata-cyw-fw/murata-cyw-fw.mk @@ -0,0 +1,98 @@ +################################################################################ +# +# murata-cyw-fw +# +################################################################################ + +MURATA_CYW_FW_VERSION = 8d87950bfad28c65926695b7357bd8995b60016a +MURATA_CYW_FW_VERSION_NVRAM = d27f1bf105fa1e5b828e355793b88d4b66188411 +MURATA_CYW_FW_VERSION_BT_PATCH = 748462f0b02ec4aeb500bedd60780ac51c37be31 +MURATA_CYW_FW_SITE = $(call github,murata-wireless,cyw-fmac-fw,$(MURATA_CYW_FW_VERSION)) +MURATA_CYW_FW_EXTRA_DOWNLOADS = \ + $(call github,murata-wireless,cyw-fmac-nvram,$(MURATA_CYW_FW_VERSION_NVRAM))/cyw-fmac-nvram-$(MURATA_CYW_FW_VERSION_NVRAM).tar.gz \ + $(call github,murata-wireless,cyw-bt-patch,$(MURATA_CYW_FW_VERSION_BT_PATCH))/cyw-bt-patch-$(MURATA_CYW_FW_VERSION_BT_PATCH).tar.gz +MURATA_CYW_FW_LICENSE = PROPRIETARY +MURATA_CYW_FW_LICENSE_FILES = LICENCE.cypress +MURATA_CYW_FW_REDISTRIBUTE = NO + +define MURATA_CYW_FW_EXTRACT_NVRAM_PATCH + $(foreach tar,$(notdir $(MURATA_CYW_FW_EXTRA_DOWNLOADS)), \ + $(call suitable-extractor,$(tar)) $(MURATA_CYW_FW_DL_DIR)/$(tar) | \ + $(TAR) --strip-components=1 -C $(@D) $(TAR_OPTIONS) - + ) +endef +MURATA_CYW_FW_POST_EXTRACT_HOOKS += MURATA_CYW_FW_EXTRACT_NVRAM_PATCH + +MURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW43012) += \ + brcmfmac43012-sdio.bin \ + brcmfmac43012-sdio.1LV.clm_blob \ + brcmfmac43012-sdio.1LV.txt \ + CYW43012C0.1LV.hcd +MURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW43340) += \ + brcmfmac43340-sdio.bin \ + brcmfmac43340-sdio.1BW.txt \ + CYW43341B0.1BW.hcd +MURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW43362) += \ + brcmfmac43362-sdio.bin \ + brcmfmac43362-sdio.SN8000.txt +MURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW4339) += \ + brcmfmac4339-sdio.bin +MURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW4339_1CK) += \ + brcmfmac4339-sdio.1CK.txt +MURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW4339_ZP) += \ + brcmfmac4339-sdio.ZP.txt \ + CYW4335C0.ZP.hcd +MURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW43430) += \ + brcmfmac43430-sdio.bin +MURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW43430_1DX) += \ + brcmfmac43430-sdio.1DX.clm_blob \ + brcmfmac43430-sdio.1DX.txt \ + CYW43430A1.1DX.hcd +MURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW43430_1FX) += \ + brcmfmac43430-sdio.1FX.clm_blob \ + brcmfmac43430-sdio.1FX.txt +MURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW43430_1LN) += \ + brcmfmac43430-sdio.1LN.clm_blob \ + brcmfmac43430-sdio.1LN.txt +MURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW43455) += \ + brcmfmac43455-sdio.bin +MURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW43455_1HK) += \ + brcmfmac43455-sdio.1HK.clm_blob \ + brcmfmac43455-sdio.1HK.txt +MURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW43455_1LC) += \ + brcmfmac43455-sdio.1LC.clm_blob \ + brcmfmac43455-sdio.1LC.txt +MURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW43455_1MW) += \ + brcmfmac43455-sdio.1MW.clm_blob \ + brcmfmac43455-sdio.1MW.txt \ + CYW4345C0.1MW.hcd +MURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW4354) += \ + brcmfmac4354-sdio.bin \ + brcmfmac4354-sdio.1BB.clm_blob \ + brcmfmac4354-sdio.1BB.txt \ + CYW4350C0.1BB.hcd +MURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW4356) += \ + brcmfmac4356-pcie.bin \ + brcmfmac4356-pcie.1CX.clm_blob \ + brcmfmac4356-pcie.1CX.txt \ + CYW4354A2.1CX.hcd +MURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW4359) += \ + brcmfmac4359-pcie.bin \ + brcmfmac4359-pcie.1FD.clm_blob + +# Helper that assumes filename with model has two dots (CHIP.MODEL.EXT), +# but filename without model has only single dot (CHIP.EXT). +murata-cyw-fw-strip-model = $(shell echo -n $(1) | sed 's/\..*\./\./') + +# Helper that strips model name and renames Bluetooth patch files to the ones +# expected by Linux kernel. +murata-cyw-fw-file-rename = $(call murata-cyw-fw-strip-model,$(patsubst CYW%,BCM%,$(f))) + +define MURATA_CYW_FW_INSTALL_TARGET_CMDS + $(foreach f,$(MURATA_CYW_FW_FILES_y), \ + $(INSTALL) -m 0644 -D $(@D)/$(f) \ + $(TARGET_DIR)/lib/firmware/brcm/$(call murata-cyw-fw-file-rename,$(f)) + ) +endef + +$(eval $(generic-package)) diff --git a/package/musepack/0001-shared.patch b/package/musepack/0001-shared.patch new file mode 100644 index 00000000..d8c788db --- /dev/null +++ b/package/musepack/0001-shared.patch @@ -0,0 +1,24 @@ +Fixup installation of shared mpcdec library. +Based on gentoo patch. + +Signed-off-by: Gustavo Zacarias +--- + +diff -Nura musepack_src_r475.orig/libmpcdec/CMakeLists.txt musepack_src_r475/libmpcdec/CMakeLists.txt +--- musepack_src_r475.orig/libmpcdec/CMakeLists.txt 2010-08-21 12:55:01.000000000 -0300 ++++ musepack_src_r475/libmpcdec/CMakeLists.txt 2011-08-17 15:53:06.126873408 -0300 +@@ -1,7 +1,12 @@ + include_directories(${libmpc_SOURCE_DIR}/include) + if(SHARED) +- add_library(mpcdec SHARED huffman mpc_decoder mpc_reader streaminfo mpc_bits_reader mpc_demux requant synth_filter ${libmpc_SOURCE_DIR}/common/crc32) ++ add_library(mpcdec_shared SHARED huffman mpc_decoder mpc_reader streaminfo mpc_bits_reader mpc_demux requant synth_filter ${libmpc_SOURCE_DIR}/common/crc32) ++ set_target_properties(mpcdec_shared PROPERTIES OUTPUT_NAME mpcdec CLEAN_DIRECT_OUTPUT 1 VERSION 7.0.1 SOVERSION 7) ++ target_link_libraries(mpcdec_shared m) ++ install(TARGETS mpcdec_shared LIBRARY DESTINATION "lib${LIB_SUFFIX}" ARCHIVE DESTINATION "lib${LIB_SUFFIX}") + else(SHARED) + add_library(mpcdec_static STATIC huffman mpc_decoder mpc_reader streaminfo mpc_bits_reader mpc_demux requant synth_filter ${libmpc_SOURCE_DIR}/common/crc32) ++ set_target_properties(mpcdec_static PROPERTIES OUTPUT_NAME mpcdec CLEAN_DIRECT_OUTPUT 1) ++ target_link_libraries(mpcdec_static m) ++ install(TARGETS mpcdec_static LIBRARY DESTINATION "lib${LIB_SUFFIX}" ARCHIVE DESTINATION "lib${LIB_SUFFIX}") + endif(SHARED) +- diff --git a/package/musepack/0002-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch b/package/musepack/0002-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch new file mode 100644 index 00000000..dade23f7 --- /dev/null +++ b/package/musepack/0002-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch @@ -0,0 +1,43 @@ +From d2f01ba6fa2a065156fad686d1849309c661e527 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sun, 31 Aug 2014 12:07:31 +0200 +Subject: [PATCH] cmake: use the standard CMake flag to drive the shared + object build + +If BUILD_SHARED_LIBS is set and SHARED undefined, then drive SHARED with +the BUILD_SHARED_LIBS value. + +Signed-off-by: Samuel Martin +--- + CMakeLists.txt | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index b13f78c..db75510 100755 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -7,11 +7,16 @@ project(libmpc C) + set(CMAKE_VERBOSE_MAKEFILE false) + TEST_BIG_ENDIAN(MPC_ENDIANNESS) + +-if(WIN32) +- option(SHARED "Use shared libmpcdec" OFF) +-else(WIN32) +- option(SHARED "Use shared libmpcdec" ON) +-endif(WIN32) ++# Use the standard CMake flag to drive the shared object build. ++if(DEFINED BUILD_SHARED_LIBS AND NOT DEFINED SHARED) ++ set(SHARED ${BUILD_SHARED_LIBS}) ++else() ++ if(WIN32) ++ option(SHARED "Use shared libmpcdec" OFF) ++ else(WIN32) ++ option(SHARED "Use shared libmpcdec" ON) ++ endif(WIN32) ++endif() + + add_definitions(-DFAST_MATH -DCVD_FASTLOG) + +-- +2.1.0 + diff --git a/package/musepack/0003-include-fpu-control-with-glibc-only.patch b/package/musepack/0003-include-fpu-control-with-glibc-only.patch new file mode 100644 index 00000000..6f501557 --- /dev/null +++ b/package/musepack/0003-include-fpu-control-with-glibc-only.patch @@ -0,0 +1,26 @@ +Include only on glibc systems + +The header provides _FPU_*() macros, which the +Init_FPU() function uses only on i386, and only when they are +defined. Since is not available, this causes a build +failure with C libraries such as musl. By simply including + explicitly on glibc systems, we avoid the build +failure, since mpcenc.c already conditionally uses the +macros only if they are defined. + +Signed-off-by: Bernd Kuhls +[Thomas: better commit log.] +Signed-off-by: Thomas Petazzoni + +diff -uNr musepack_src_r475.org/mpcenc/mpcenc.h musepack_src_r475/mpcenc/mpcenc.h +--- musepack_src_r475.org/mpcenc/mpcenc.h 2009-02-23 19:15:46.000000000 +0100 ++++ musepack_src_r475/mpcenc/mpcenc.h 2016-01-30 09:29:08.000000000 +0100 +@@ -50,7 +51,7 @@ + # include + #endif + +-#if defined __linux__ ++#if defined __GLIBC__ + # include + #elif defined __FreeBSD__ + # include diff --git a/package/musepack/0004-missing-sys-select.patch b/package/musepack/0004-missing-sys-select.patch new file mode 100644 index 00000000..1e3a4b11 --- /dev/null +++ b/package/musepack/0004-missing-sys-select.patch @@ -0,0 +1,21 @@ +Add missing include + +This header is needed when types like fd_set are used. This fixes a +build issue occuring on the musl C library. + +Signed-off-by: Bernd Kuhls +[Thomas: better commit log.] +Signed-off-by: Thomas Petazzoni + +Index: b/mpcenc/mpcenc.h +=================================================================== +--- a/mpcenc/mpcenc.h ++++ b/mpcenc/mpcenc.h +@@ -34,6 +34,7 @@ + //// portable system includes ////////////////////////////////////// + #include + #include ++#include + + //// system dependent system includes ////////////////////////////// + // low level I/O, where are prototypes and constants? diff --git a/package/musepack/0005-fix-build-with-gcc-10.patch b/package/musepack/0005-fix-build-with-gcc-10.patch new file mode 100644 index 00000000..012dbab5 --- /dev/null +++ b/package/musepack/0005-fix-build-with-gcc-10.patch @@ -0,0 +1,30 @@ +fix build with gcc 10 + +Define __Cc, __Dc and Res_bit as extern to avoid the following build +failure with gcc 10 (which defaults to -fno-common): + +/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: CMakeFiles/mpcdec_shared.dir/requant.o:(.rodata+0x0): multiple definition of `__Dc'; CMakeFiles/mpcdec_shared.dir/mpc_decoder.o:(.rodata+0x430): first defined here +/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: CMakeFiles/mpcdec_shared.dir/requant.o:(.rodata+0x28): multiple definition of `__Cc'; CMakeFiles/mpcdec_shared.dir/mpc_decoder.o:(.rodata+0x458): first defined here +/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: CMakeFiles/mpcdec_shared.dir/requant.o:(.rodata+0x74): multiple definition of `Res_bit'; CMakeFiles/mpcdec_shared.dir/mpc_decoder.o:(.rodata+0x4a4): first defined here + +Fixes: + - http://autobuild.buildroot.org/results/9971da8c59484a6a26eb79d6e157461a47855dbf + +Signed-off-by: Fabrice Fontaine + +diff -Naur musepack_src_r475.orig/libmpcdec/requant.h musepack_src_r475/libmpcdec/requant.h +--- musepack_src_r475.orig/libmpcdec/requant.h 2020-09-10 08:31:50.696105246 +0200 ++++ musepack_src_r475/libmpcdec/requant.h 2020-09-10 08:32:52.944106476 +0200 +@@ -47,9 +47,9 @@ + + + /* C O N S T A N T S */ +-const mpc_uint8_t Res_bit [18]; ///< Bits per sample for chosen quantizer +-const MPC_SAMPLE_FORMAT __Cc [1 + 18]; ///< Requantization coefficients +-const mpc_int16_t __Dc [1 + 18]; ///< Requantization offset ++extern const mpc_uint8_t Res_bit [18]; ///< Bits per sample for chosen quantizer ++extern const MPC_SAMPLE_FORMAT __Cc [1 + 18]; ///< Requantization coefficients ++extern const mpc_int16_t __Dc [1 + 18]; ///< Requantization offset + + #define Cc (__Cc + 1) + #define Dc (__Dc + 1) diff --git a/package/musepack/Config.in b/package/musepack/Config.in new file mode 100644 index 00000000..f368764b --- /dev/null +++ b/package/musepack/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_MUSEPACK + bool "musepack" + select BR2_PACKAGE_LIBCUEFILE + select BR2_PACKAGE_LIBREPLAYGAIN + help + Musepack is an audio compression format with a strong + emphasis on high quality. It's not lossless, but it is + designed for transparency, so that you won't be able to hear + differences between the original wave file and the much + smaller MPC file. + + http://www.musepack.net/ diff --git a/package/musepack/musepack.hash b/package/musepack/musepack.hash new file mode 100644 index 00000000..5a03bd26 --- /dev/null +++ b/package/musepack/musepack.hash @@ -0,0 +1,7 @@ +# From https://www.musepack.net/index.php?pg=src +md5 754d67be67f713e54baf70fcfdb2817e musepack_src_r475.tar.gz +# Calculated based on the hash above +sha256 a4b1742f997f83e1056142d556a8c20845ba764b70365ff9ccf2e3f81c427b2b musepack_src_r475.tar.gz +# Locally computed +sha256 141f551d8e4f037b7f6bc9136b7d3116c7ae9ec8da10c4f14c07c6dc34bc9aa5 libmpcdec/COPYING +sha256 0da88639aebbd614151ee52294fa13789f8cd28d9f2e0a56998b89b5c21ddc2b libmpcenc/quant.c diff --git a/package/musepack/musepack.mk b/package/musepack/musepack.mk new file mode 100644 index 00000000..02fe53d4 --- /dev/null +++ b/package/musepack/musepack.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# musepack +# +################################################################################ + +MUSEPACK_VERSION = 475 +MUSEPACK_SITE = http://files.musepack.net/source +MUSEPACK_SOURCE = musepack_src_r$(MUSEPACK_VERSION).tar.gz +MUSEPACK_DEPENDENCIES = libcuefile libreplaygain +MUSEPACK_INSTALL_STAGING = YES +MUSEPACK_BUILD_OPTS = -j1 +MUSEPACK_LICENSE = BSD-3-Clause (*mpcdec), LGPL-2.1+ (*mpcenc) +MUSEPACK_LICENSE_FILES = libmpcdec/COPYING libmpcenc/quant.c + +$(eval $(cmake-package)) diff --git a/package/musl-compat-headers/Config.in b/package/musl-compat-headers/Config.in new file mode 100644 index 00000000..c672f9ca --- /dev/null +++ b/package/musl-compat-headers/Config.in @@ -0,0 +1,2 @@ +config BR2_PACKAGE_MUSL_COMPAT_HEADERS + bool diff --git a/package/musl-compat-headers/cdefs.h b/package/musl-compat-headers/cdefs.h new file mode 100644 index 00000000..6fe7aa43 --- /dev/null +++ b/package/musl-compat-headers/cdefs.h @@ -0,0 +1,51 @@ +/* Copyright (C) 2016 Yann E. MORIN + * + * This file is in the Public Domain. + * + * For jurisdictions in which the Public Domain does not exist + * or it is not otherwise applicable, this file is licensed CC0 + * (Creative Commons Zero). + */ + +/* This file contains definitions for non-standard macros defined by + * glibc, but quite commonly used in packages. + * + * Because they are non-standard, musl does not define those macros. + * It does not provide cdefs.h either. + * + * This file is a compatibility header written from scratch, to be + * installed when the C library is musl. + * + * Not all macros from the glibc's cdefs.h are available, only the + * most commonly used ones. + * + * Please refer to the glibc documentation and source code for + * explanations about those macros. + */ + +#ifndef BUILDROOT_SYS_CDEFS_H +#define BUILDROOT_SYS_CDEFS_H + +/* Function prototypes. */ +#undef __P +#define __P(arg) arg + +/* C declarations in C++ mode. */ +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS +# define __END_DECLS +#endif + +/* Don't throw exceptions in C functions. */ +#ifndef __cplusplus +# define __THROW __attribute__ ((__nothrow__)) +# define __NTH(f) __attribute__ ((__nothrow__)) f +#else +# define __THROW +# define __NTH(f) f +#endif + +#endif /* ifndef BUILDROOT_SYS_CDEFS_H */ diff --git a/package/musl-compat-headers/musl-compat-headers.hash b/package/musl-compat-headers/musl-compat-headers.hash new file mode 100644 index 00000000..626145df --- /dev/null +++ b/package/musl-compat-headers/musl-compat-headers.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c13407edd0e33be73cae72514cb234f8612e1c0e54401c9448daffd3a240158b queue.h?rev=1.70 diff --git a/package/musl-compat-headers/musl-compat-headers.mk b/package/musl-compat-headers/musl-compat-headers.mk new file mode 100644 index 00000000..1cfa8948 --- /dev/null +++ b/package/musl-compat-headers/musl-compat-headers.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# musl-compat-headers +# +################################################################################ + +# No main site, just using extra downloads +MUSL_COMPAT_HEADERS_QUEUE_H = http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/sys/queue.h?rev=1.70 + +MUSL_COMPAT_HEADERS_EXTRA_DOWNLOADS = $(MUSL_COMPAT_HEADERS_QUEUE_H) + +MUSL_COMPAT_HEADERS_LICENSE = BSD-3-Clause, Public Domain or CC0 +MUSL_COMPAT_HEADERS_LICENSE_FILES = queue.h cdefs.h + +MUSL_COMPAT_HEADERS_ADD_TOOLCHAIN_DEPENDENCY = NO + +# Only installs headers +MUSL_COMPAT_HEADERS_INSTALL_TARGET = NO +MUSL_COMPAT_HEADERS_INSTALL_STAGING = YES + +# Copying both headers so legal-info finds them (they are _LICENSE_FILES) +define MUSL_COMPAT_HEADERS_EXTRACT_CMDS + $(INSTALL) -m 0644 -D $(MUSL_COMPAT_HEADERS_DL_DIR)/$(notdir $(MUSL_COMPAT_HEADERS_QUEUE_H)) $(@D)/queue.h + $(INSTALL) -m 0644 -D $(MUSL_COMPAT_HEADERS_PKGDIR)/cdefs.h $(@D)/cdefs.h +endef + +define MUSL_COMPAT_HEADERS_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0644 $(@D)/queue.h \ + $(STAGING_DIR)/usr/include/sys/queue.h + $(INSTALL) -D -m 0644 $(@D)/cdefs.h \ + $(STAGING_DIR)/usr/include/sys/cdefs.h +endef + +$(eval $(generic-package)) diff --git a/package/musl-fts/Config.in b/package/musl-fts/Config.in new file mode 100644 index 00000000..358bf271 --- /dev/null +++ b/package/musl-fts/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_MUSL_FTS + bool "musl-fts" + depends on !BR2_TOOLCHAIN_USES_GLIBC + help + The musl-fts package implements the fts(3) functions + fts_open, fts_read, fts_children, fts_set and fts_close, + which are missing in musl and uClibc-ng C libraries. + + https://github.com/void-linux/musl-fts diff --git a/package/musl-fts/musl-fts.hash b/package/musl-fts/musl-fts.hash new file mode 100644 index 00000000..e1266cfc --- /dev/null +++ b/package/musl-fts/musl-fts.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 49ae567a96dbab22823d045ffebe0d6b14b9b799925e9ca9274d47d26ff482a6 musl-fts-1.2.7.tar.gz +sha256 55af87e4017668f54467a3380e7ebbac5e672d8c763bfe95e6fc882a6fdc4046 COPYING diff --git a/package/musl-fts/musl-fts.mk b/package/musl-fts/musl-fts.mk new file mode 100644 index 00000000..dd7f1f9e --- /dev/null +++ b/package/musl-fts/musl-fts.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# musl-fts +# +################################################################################ + +MUSL_FTS_VERSION = 1.2.7 +MUSL_FTS_SITE = $(call github,void-linux,musl-fts,v$(MUSL_FTS_VERSION)) +MUSL_FTS_AUTORECONF = YES +MUSL_FTS_LICENSE = BSD-3-Clause +MUSL_FTS_LICENSE_FILES = COPYING +# pkg-config needed for autoreconf +MUSL_FTS_DEPENDENCIES = host-pkgconf +MUSL_FTS_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/musl/0001-avoid-kernel-if_ether.h.patch b/package/musl/0001-avoid-kernel-if_ether.h.patch new file mode 100644 index 00000000..8efbcc84 --- /dev/null +++ b/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/package/musl/0002-package-musl-Make-scheduler-functions-Linux-compatib.patch b/package/musl/0002-package-musl-Make-scheduler-functions-Linux-compatib.patch new file mode 100644 index 00000000..7c3acf9f --- /dev/null +++ b/package/musl/0002-package-musl-Make-scheduler-functions-Linux-compatib.patch @@ -0,0 +1,76 @@ +From 407c96fc790d0d11ca9603a2a533216c745b5051 Mon Sep 17 00:00:00 2001 +From: Stefan Nickl +Date: Mon, 13 May 2019 22:33:21 +0200 +Subject: [PATCH] Make scheduler functions Linux-compatible + +Let sched_getscheduler(), sched_setscheduler(), sched_getparam(), +sched_setparam() invoke the Linux syscalls of the same name instead +of returning -ENOSYS. + +Signed-off-by: Stefan Nickl +--- + src/sched/sched_getparam.c | 3 +-- + src/sched/sched_getscheduler.c | 3 +-- + src/sched/sched_setparam.c | 3 +-- + src/sched/sched_setscheduler.c | 3 +-- + 4 files changed, 4 insertions(+), 8 deletions(-) + +diff --git a/src/sched/sched_getparam.c b/src/sched/sched_getparam.c +index 76f10e4..65be107 100644 +--- a/src/sched/sched_getparam.c ++++ b/src/sched/sched_getparam.c +@@ -1,8 +1,7 @@ + #include +-#include + #include "syscall.h" + + int sched_getparam(pid_t pid, struct sched_param *param) + { +- return __syscall_ret(-ENOSYS); ++ return syscall(SYS_sched_getparam, pid, param); + } +diff --git a/src/sched/sched_getscheduler.c b/src/sched/sched_getscheduler.c +index 394e508..4c922f6 100644 +--- a/src/sched/sched_getscheduler.c ++++ b/src/sched/sched_getscheduler.c +@@ -1,8 +1,7 @@ + #include +-#include + #include "syscall.h" + + int sched_getscheduler(pid_t pid) + { +- return __syscall_ret(-ENOSYS); ++ return syscall(SYS_sched_getscheduler, pid); + } +diff --git a/src/sched/sched_setparam.c b/src/sched/sched_setparam.c +index 18623ee..f699faf 100644 +--- a/src/sched/sched_setparam.c ++++ b/src/sched/sched_setparam.c +@@ -1,8 +1,7 @@ + #include +-#include + #include "syscall.h" + + int sched_setparam(pid_t pid, const struct sched_param *param) + { +- return __syscall_ret(-ENOSYS); ++ return syscall(SYS_sched_setparam, pid, param); + } +diff --git a/src/sched/sched_setscheduler.c b/src/sched/sched_setscheduler.c +index 4435f21..e678221 100644 +--- a/src/sched/sched_setscheduler.c ++++ b/src/sched/sched_setscheduler.c +@@ -1,8 +1,7 @@ + #include +-#include + #include "syscall.h" + + int sched_setscheduler(pid_t pid, int sched, const struct sched_param *param) + { +- return __syscall_ret(-ENOSYS); ++ return syscall(SYS_sched_setscheduler, pid, sched, param); + } +-- +2.21.0 + diff --git a/package/musl/Config.in b/package/musl/Config.in new file mode 100644 index 00000000..a6e2af05 --- /dev/null +++ b/package/musl/Config.in @@ -0,0 +1,43 @@ +config BR2_PACKAGE_MUSL_ARCH_SUPPORTS + bool + default y if BR2_aarch64 + default y if BR2_aarch64_be + default y if BR2_arm + default y if BR2_armeb + default y if BR2_i386 + default y if BR2_m68k_m68k + default y if BR2_microblaze + default y if BR2_mips + default y if BR2_mipsel + default y if BR2_mips64 + default y if BR2_mips64el + default y if BR2_or1k + default y if BR2_powerpc + default y if BR2_powerpc64 + default y if BR2_powerpc64le + default y if BR2_riscv + default y if BR2_s390x + default y if BR2_sh + default y if BR2_x86_64 + depends on !BR2_POWERPC_CPU_HAS_SPE # not supported, build breaks + depends on !(BR2_powerpc64 || BR2_powerpc64le) || BR2_POWERPC_CPU_HAS_ALTIVEC + # sh2 nommu is supported by musl, but we don't have support + # for it in Buildroot. + depends on BR2_USE_MMU + +config BR2_PACKAGE_MUSL_SUPPORTS + bool + default y if BR2_PACKAGE_MUSL_ARCH_SUPPORTS + +config BR2_PACKAGE_MUSL + bool + default y + depends on BR2_TOOLCHAIN_USES_MUSL + select BR2_PACKAGE_LINUX_HEADERS + # SSP broken on i386/ppc: http://www.openwall.com/lists/musl/2016/12/04/2 + select BR2_TOOLCHAIN_HAS_SSP if BR2_PACKAGE_HOST_BINUTILS_SUPPORTS_CFI \ + && !(BR2_i386 || BR2_powerpc) + # Compatibility headers: cdefs.h, queue.h + select BR2_PACKAGE_MUSL_COMPAT_HEADERS + help + http://musl.libc.org/ diff --git a/package/musl/musl.hash b/package/musl/musl.hash new file mode 100644 index 00000000..b105320b --- /dev/null +++ b/package/musl/musl.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature from +# http://musl.libc.org/releases/musl-1.2.5.tar.gz.asc +sha256 a9a118bbe84d8764da0ea0d28b3ab3fae8477fc7e4085d90102b8596fc7c75e4 musl-1.2.5.tar.gz +sha256 f9bc4423732350eb0b3f7ed7e91d530298476f8fec0c6c427a1c04ade22655af COPYRIGHT diff --git a/package/musl/musl.mk b/package/musl/musl.mk new file mode 100644 index 00000000..783a103f --- /dev/null +++ b/package/musl/musl.mk @@ -0,0 +1,73 @@ +################################################################################ +# +# musl +# +################################################################################ + +MUSL_VERSION = 1.2.5 +MUSL_SITE = http://musl.libc.org/releases +MUSL_LICENSE = MIT +MUSL_LICENSE_FILES = COPYRIGHT +MUSL_CPE_ID_VENDOR = musl-libc + +# Before musl is configured, we must have the first stage +# cross-compiler and the kernel headers +MUSL_DEPENDENCIES = host-gcc-initial linux-headers + +# 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, +# into the staging directory: +# sys/queue.h: header from NetBSD +# sys/cdefs.h: minimalist header bundled in Buildroot +MUSL_DEPENDENCIES += musl-compat-headers + +# musl is part of the toolchain so disable the toolchain dependency +MUSL_ADD_TOOLCHAIN_DEPENDENCY = NO + +MUSL_INSTALL_STAGING = YES + +# musl does not build with LTO, so explicitly disable it +# when using a compiler that may have support for LTO +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_7),y) +MUSL_EXTRA_CFLAGS += -fno-lto +endif + +# Thumb build is broken, build in ARM mode, since all architectures +# that support Thumb1 also support ARM. +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +MUSL_EXTRA_CFLAGS += -marm +endif + +define MUSL_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(filter-out -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64,$(TARGET_CFLAGS)) $(MUSL_EXTRA_CFLAGS)" \ + CPPFLAGS="$(filter-out -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64,$(TARGET_CPPFLAGS))" \ + ./configure \ + --target=$(GNU_TARGET_NAME) \ + --host=$(GNU_TARGET_NAME) \ + --prefix=/usr \ + --libdir=/lib \ + --disable-gcc-wrapper \ + --enable-static \ + $(if $(BR2_STATIC_LIBS),--disable-shared,--enable-shared)) +endef + +define MUSL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define MUSL_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + DESTDIR=$(STAGING_DIR) install-libs install-tools install-headers + ln -sf libc.so $(STAGING_DIR)/lib/ld-musl* +endef + +define MUSL_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + DESTDIR=$(TARGET_DIR) install-libs + $(RM) $(addprefix $(TARGET_DIR)/lib/,crt1.o crtn.o crti.o rcrt1.o Scrt1.o) + ln -sf libc.so $(TARGET_DIR)/lib/ld-musl* +endef + +$(eval $(generic-package)) diff --git a/package/mutt/Config.in b/package/mutt/Config.in new file mode 100644 index 00000000..d85c1a7f --- /dev/null +++ b/package/mutt/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_MUTT + bool "mutt" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_NCURSES + help + Mutt is a sophisticated text-based Mail User Agent (MUA) + + http://www.mutt.org/ + +if BR2_PACKAGE_MUTT + +config BR2_PACKAGE_MUTT_IMAP + bool "imap" + help + IMAP support + +config BR2_PACKAGE_MUTT_POP3 + bool "pop3" + help + POP3 support + +endif # BR2_PACKAGE_MUTT + +comment "mutt needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR diff --git a/package/mutt/mutt.hash b/package/mutt/mutt.hash new file mode 100644 index 00000000..72c7924e --- /dev/null +++ b/package/mutt/mutt.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 eb23faddc1cc97d867693f3a4a9f30949ad93765ad5b6fdae2797a4001c58efb mutt-2.2.13.tar.gz +sha256 732f24b69a6c71cd8e01e4672bb8e12cc1cbb88a50a4665e6ca4fd95000a57ee GPL diff --git a/package/mutt/mutt.mk b/package/mutt/mutt.mk new file mode 100644 index 00000000..9a6be6d4 --- /dev/null +++ b/package/mutt/mutt.mk @@ -0,0 +1,133 @@ +################################################################################ +# +# mutt +# +################################################################################ + +MUTT_VERSION = 2.2.13 +MUTT_SITE = https://bitbucket.org/mutt/mutt/downloads +MUTT_LICENSE = GPL-2.0+ +MUTT_LICENSE_FILES = GPL +MUTT_CPE_ID_VENDOR = mutt +MUTT_DEPENDENCIES = ncurses +MUTT_CONF_OPTS = --disable-doc --disable-smtp + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +MUTT_CONF_ENV += LIBS=-latomic +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +MUTT_DEPENDENCIES += libiconv +MUTT_CONF_OPTS += --enable-iconv +endif + +# Both options can't be selected at the same time so prefer libidn2 +ifeq ($(BR2_PACKAGE_LIBIDN2),y) +MUTT_DEPENDENCIES += libidn2 +MUTT_CONF_OPTS += --with-idn2 --without-idn +else ifeq ($(BR2_PACKAGE_LIBIDN),y) +MUTT_DEPENDENCIES += libidn +MUTT_CONF_OPTS += --with-idn --without-idn2 +else +MUTT_CONF_OPTS += --without-idn --without-idn2 +endif + +ifeq ($(BR2_PACKAGE_LIBGPGME),y) +MUTT_DEPENDENCIES += libgpgme +MUTT_CONF_OPTS += \ + --enable-gpgme \ + --with-gpgme-prefix=$(STAGING_DIR)/usr + +# Force the path to "gpgrt-config" (from the libgpg-error package) to +# avoid using the one on host, if present. +MUTT_GPGRT_CONFIG = $(STAGING_DIR)/usr/bin/gpgrt-config +ifeq ($(BR2_STATIC_LIBS),y) +MUTT_GPGRT_CONFIG += --static +endif +MUTT_CONF_ENV += GPGRT_CONFIG="$(MUTT_GPGRT_CONFIG)" +else +MUTT_CONF_OPTS += --disable-gpgme +endif + +ifeq ($(BR2_PACKAGE_MUTT_IMAP),y) +MUTT_CONF_OPTS += --enable-imap +else +MUTT_CONF_OPTS += --disable-imap +endif + +ifeq ($(BR2_PACKAGE_MUTT_POP3),y) +MUTT_CONF_OPTS += --enable-pop +else +MUTT_CONF_OPTS += --disable-pop +endif + +# SASL and SSL support are only used by imap or pop3 module +ifneq ($(BR2_PACKAGE_MUTT_IMAP)$(BR2_PACKAGE_MUTT_POP3),) +ifeq ($(BR2_PACKAGE_LIBGSASL),y) +MUTT_DEPENDENCIES += libgsasl +MUTT_CONF_OPTS += --with-gsasl +else +MUTT_CONF_OPTS += --without-gsasl +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +MUTT_DEPENDENCIES += openssl +MUTT_CONF_OPTS += \ + --without-gnutls \ + --with-ssl=$(STAGING_DIR)/usr +else ifeq ($(BR2_PACKAGE_GNUTLS),y) +MUTT_DEPENDENCIES += gnutls +MUTT_CONF_OPTS += \ + --with-gnutls=$(STAGING_DIR)/usr \ + --without-ssl +else +MUTT_CONF_OPTS += \ + --without-gnutls \ + --without-ssl +endif +else +MUTT_CONF_OPTS += \ + --without-gsasl \ + --without-gnutls \ + --without-ssl +endif + +ifeq ($(BR2_PACKAGE_SQLITE),y) +MUTT_DEPENDENCIES += sqlite +MUTT_CONF_OPTS += --with-sqlite3 +else +MUTT_CONF_OPTS += --without-sqlite3 +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +MUTT_DEPENDENCIES += zlib +MUTT_CONF_OPTS += --with-zlib=$(STAGING_DIR)/usr +else +MUTT_CONF_OPTS += --without-zlib +endif + +# Avoid running tests to check for: +# - target system is *BSD +# - C99 conformance (snprintf, vsnprintf) +# - behaviour of the regex library +# - if mail spool directory is world/group writable +# - we have a working libiconv +MUTT_CONF_ENV += \ + mutt_cv_bsdish=no \ + mutt_cv_c99_snprintf=yes \ + mutt_cv_c99_vsnprintf=yes \ + mutt_cv_regex_broken=no \ + mutt_cv_worldwrite=yes \ + mutt_cv_groupwrite=yes \ + mutt_cv_iconv_good=yes \ + mutt_cv_iconv_nontrans=no + +MUTT_CONF_OPTS += --with-mailpath=/var/mail + +define MUTT_VAR_MAIL + mkdir -p $(TARGET_DIR)/var + ln -sf /tmp $(TARGET_DIR)/var/mail +endef +MUTT_POST_INSTALL_TARGET_HOOKS += MUTT_VAR_MAIL + +$(eval $(autotools-package)) diff --git a/package/mxml/Config.in b/package/mxml/Config.in new file mode 100644 index 00000000..d3202b4b --- /dev/null +++ b/package/mxml/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_MXML + bool "Mini-XML" + help + Lightweight XML Library + + http://www.minixml.org diff --git a/package/mxml/mxml.hash b/package/mxml/mxml.hash new file mode 100644 index 00000000..412977df --- /dev/null +++ b/package/mxml/mxml.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 0c663ed1fe393b5619f80101798202eea43534abd7c8aff389022fd8c1dacc32 mxml-3.3.1.tar.gz +sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE +sha256 7dedb0043b0bbed7880bcc9724b3a3dae4d5ab2dce98a7904703109572b626e3 NOTICE diff --git a/package/mxml/mxml.mk b/package/mxml/mxml.mk new file mode 100644 index 00000000..d224cf53 --- /dev/null +++ b/package/mxml/mxml.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# mxml +# +################################################################################ + +MXML_VERSION = 3.3.1 +MXML_SITE = https://github.com/michaelrsweet/mxml/releases/download/v$(MXML_VERSION) +MXML_LICENSE = Apache-2.0 with exceptions +MXML_LICENSE_FILES = LICENSE NOTICE +MXML_CPE_ID_VENDOR = mini-xml_project +MXML_CPE_ID_PRODUCT = mini-xml +MXML_INSTALL_STAGING = YES + +MXML_INSTALL_STAGING_OPTS = DSTROOT=$(STAGING_DIR) install +MXML_INSTALL_TARGET_OPTS = DSTROOT=$(TARGET_DIR) install + +$(eval $(autotools-package)) diff --git a/package/mxsldr/Config.in.host b/package/mxsldr/Config.in.host new file mode 100644 index 00000000..7c49f020 --- /dev/null +++ b/package/mxsldr/Config.in.host @@ -0,0 +1,14 @@ +config BR2_PACKAGE_HOST_MXSLDR + bool "host mxsldr" + depends on BR2_arm || BR2_armeb + depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb + help + This package contains tools to download and execute code on + Freescale i.MX23 and i.MX28 SoC's through the Serial + Download Protocol. + + https://gitlab.denx.de/denx/mxsldr + +comment "host mxsldr needs a toolchain w/ host gcc >= 4.9" + depends on BR2_arm || BR2_armeb + depends on !BR2_HOST_GCC_AT_LEAST_4_9 diff --git a/package/mxsldr/mxsldr.hash b/package/mxsldr/mxsldr.hash new file mode 100644 index 00000000..f5f5ddce --- /dev/null +++ b/package/mxsldr/mxsldr.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 9bc18717c7b0c4a7b11a755ee68cc87355e33473ef762e2b26a8dbf143204660 mxsldr-2793a657ab7a22487d21c1b020957806f8ae8383-git4.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/mxsldr/mxsldr.mk b/package/mxsldr/mxsldr.mk new file mode 100644 index 00000000..2375b9f4 --- /dev/null +++ b/package/mxsldr/mxsldr.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# mxsldr +# +################################################################################ + +MXSLDR_VERSION = 2793a657ab7a22487d21c1b020957806f8ae8383 +MXSLDR_SITE = https://git.denx.de/mxsldr.git +MXSLDR_SITE_METHOD = git +MXSLDR_LICENSE = GPL-2.0+ +MXSLDR_LICENSE_FILES = COPYING +HOST_MXSLDR_DEPENDENCIES = host-libusb host-pkgconf + +define HOST_MXSLDR_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define HOST_MXSLDR_INSTALL_CMDS + $(INSTALL) -m 0755 -D $(@D)/mxsldr $(HOST_DIR)/bin/mxsldr +endef + +$(eval $(host-generic-package)) diff --git a/package/mxt-app/Config.in b/package/mxt-app/Config.in new file mode 100644 index 00000000..96085e7f --- /dev/null +++ b/package/mxt-app/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_MXT_APP + bool "mxt-app" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + mxt-app is a utility for managing Atmel maXTouch touch + controllers and other devices that support Atmel Object Based + Protocol. + + https://github.com/atmel-maxtouch/mxt-app/ + +comment "mxt-app needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/mxt-app/mxt-app.hash b/package/mxt-app/mxt-app.hash new file mode 100644 index 00000000..2f5ea814 --- /dev/null +++ b/package/mxt-app/mxt-app.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 38fdf7954d2184d122f6f1b1493fba1955c0e3c7dfd5196dbc3d536afc9c672a mxt-app-1.38.tar.gz +sha256 3682b125a40a4da00b6ab69bdbd38c25ed4beae69b3fe32458d2e32638477c4c LICENSE diff --git a/package/mxt-app/mxt-app.mk b/package/mxt-app/mxt-app.mk new file mode 100644 index 00000000..4921803e --- /dev/null +++ b/package/mxt-app/mxt-app.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# mxt-app +# +################################################################################ + +MXT_APP_VERSION = 1.38 +MXT_APP_SITE = $(call github,atmel-maxtouch,mxt-app,v$(MXT_APP_VERSION)) +MXT_APP_LICENSE = BSD-2-Clause +MXT_APP_LICENSE_FILES = LICENSE +MXT_APP_DEPENDENCIES = libusb +MXT_APP_INSTALL_STAGING = YES +# From a git tree: no generated autotools files +MXT_APP_AUTORECONF = YES + +ifeq ($(BR2_ENABLE_RUNTIME_DEBUG),y) +MXT_APP_CONF_OPTS += --enable-debug +else +MXT_APP_CONF_OPTS += --disable-debug +endif + +$(eval $(autotools-package)) diff --git a/package/nano/0001-lib-getrandom.c-fix-build-with-uclibc-1.0.35.patch b/package/nano/0001-lib-getrandom.c-fix-build-with-uclibc-1.0.35.patch new file mode 100644 index 00000000..f67f6d34 --- /dev/null +++ b/package/nano/0001-lib-getrandom.c-fix-build-with-uclibc-1.0.35.patch @@ -0,0 +1,46 @@ +From a0594387565e1e6b4a8a8ba04ad13b135cc1f0b5 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 1 Apr 2021 07:49:46 +0200 +Subject: [PATCH] lib/getrandom.c: fix build with uclibc < 1.0.35 + +Fix the following build failure with uclibc < 1.0.35 which is raised +since the addition of getrandom module in +https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=682cc4e678aceff32dea2a84b6e5147bdf5a20a7: + +In file included from ./sys/random.h:40, + from getrandom.c:22: +/home/fabrice/buildroot/output/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:27:35: error: unknown type name 'size_t' + 27 | extern int getrandom(void *__buf, size_t count, unsigned int flags) + | ^~~~~~ +/home/fabrice/buildroot/output/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:8:1: note: 'size_t' is defined in header ''; did you forget to '#include '? + 7 | #include + +++ |+#include + 8 | + +This patch is not upstreamable as it is only a workaround for +uclibc < 1.0.35, upstream uclibc has been patched with +https://github.com/wbx-github/uclibc-ng/commit/00972c02c2b6e0a95d5def4a71bdfb188e091782 + +Fixes: + - http://autobuild.buildroot.org/results/1932c524aa6b6a3337a0fc21b44adaac60972d30 + +Signed-off-by: Fabrice Fontaine +--- + lib/getrandom.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/lib/getrandom.c b/lib/getrandom.c +index 41212fb32..0ad3f9648 100644 +--- a/lib/getrandom.c ++++ b/lib/getrandom.c +@@ -19,6 +19,7 @@ + + #include + ++#include + #include + + #include +-- +2.30.2 + diff --git a/package/nano/Config.in b/package/nano/Config.in new file mode 100644 index 00000000..b0b7a3e7 --- /dev/null +++ b/package/nano/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_NANO + bool "nano" + depends on BR2_USE_WCHAR + # full version uses fork() + select BR2_PACKAGE_NANO_TINY if !BR2_USE_MMU + select BR2_PACKAGE_NCURSES + help + A nice ncurses-based editor. Started out as a clone of pico. + Great editor for new users. + + https://www.nano-editor.org/ + +if BR2_PACKAGE_NANO + +config BR2_PACKAGE_NANO_TINY + bool "optimize for size" + default y + help + Disable all features for the sake of size. + +endif + +comment "nano needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/package/nano/nano.hash b/package/nano/nano.hash new file mode 100644 index 00000000..04e3c629 --- /dev/null +++ b/package/nano/nano.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +# https://www.nano-editor.org/dist/v8/nano-8.1.tar.xz.asc +# using key 168E6F4297BFD7A79AFD4496514BBE2EB8E1961F +sha256 93b3e3e9155ae389fe9ccf9cb7ab380eac29602835ba3077b22f64d0f0cbe8cb nano-8.1.tar.xz +sha256 fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7 COPYING diff --git a/package/nano/nano.mk b/package/nano/nano.mk new file mode 100644 index 00000000..db614feb --- /dev/null +++ b/package/nano/nano.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# nano +# +################################################################################ + +NANO_VERSION_MAJOR = 8 +NANO_VERSION = $(NANO_VERSION_MAJOR).1 +NANO_SITE = https://www.nano-editor.org/dist/v$(NANO_VERSION_MAJOR) +NANO_SOURCE = nano-$(NANO_VERSION).tar.xz +NANO_LICENSE = GPL-3.0+ +NANO_LICENSE_FILES = COPYING +NANO_DEPENDENCIES = ncurses + +ifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y) +NANO_CONF_ENV += ac_cv_prog_NCURSESW_CONFIG=$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS) +else +NANO_CONF_ENV += ac_cv_prog_NCURSESW_CONFIG=false +NANO_MAKE_ENV += CURSES_LIB="-lncurses" +endif + +ifeq ($(BR2_PACKAGE_NANO_TINY),y) +NANO_CONF_OPTS += \ + --enable-tiny \ + --disable-libmagic \ + --disable-color \ + --disable-nanorc +define NANO_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 $(@D)/src/nano $(TARGET_DIR)/usr/bin/nano +endef +else +NANO_CONF_OPTS += --disable-tiny +ifeq ($(BR2_PACKAGE_FILE),y) +NANO_DEPENDENCIES += file +NANO_CONF_OPTS += --enable-libmagic --enable-color --enable-nanorc +else +NANO_CONF_OPTS += --disable-libmagic --disable-color --disable-nanorc +endif # BR2_PACKAGE_FILE +endif # BR2_PACKAGE_NANO_TINY + +$(eval $(autotools-package)) diff --git a/package/nanocom/0001-fix-build-with-gcc-10.patch b/package/nanocom/0001-fix-build-with-gcc-10.patch new file mode 100644 index 00000000..8fcc5465 --- /dev/null +++ b/package/nanocom/0001-fix-build-with-gcc-10.patch @@ -0,0 +1,36 @@ +fix build with gcc 10 + +Define curr_state as extern in nanocom.h to avoid the following build +failure with gcc 10 (which defaults to -fno-common): + +/home/buildroot/autobuild/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: /tmp/ccLQeiek.o:(.bss+0x7c): multiple definition of `curr_state'; /tmp/ccse155z.o:(.bss+0x0): first defined here + +Fixes: + - http://autobuild.buildroot.org/results/4af4710cb9bbb1bc770b9824339dd7dbf8a80b05 + +Signed-off-by: Fabrice Fontaine + +diff -Naurp nanocom-1.0.orig/nanocom.c nanocom-1.0/nanocom.c +--- nanocom-1.0.orig/nanocom.c 2020-09-04 14:50:15.973320870 +0200 ++++ nanocom-1.0/nanocom.c 2020-09-04 14:53:49.429325087 +0200 +@@ -20,6 +20,8 @@ Based upon microcom by Anca and Lucian J + + #include "nanocom.h" + ++state curr_state; ++ + int crnl_mapping; //0 - no mapping, 1 mapping + + char device[MAX_DEVICE_NAME]; /* serial device name */ +diff -Naurp nanocom-1.0.orig/nanocom.h nanocom-1.0/nanocom.h +--- nanocom-1.0.orig/nanocom.h 2020-09-04 14:50:15.973320870 +0200 ++++ nanocom-1.0/nanocom.h 2020-09-04 14:51:12.269321982 +0200 +@@ -73,7 +73,7 @@ typedef struct { + char echo_type; /*r for remote, l for local and n for none*/ + } state; + +-state curr_state; ++extern state curr_state; + + #endif /* NANOCOM_H */ + diff --git a/package/nanocom/Config.in b/package/nanocom/Config.in new file mode 100644 index 00000000..bc0a0586 --- /dev/null +++ b/package/nanocom/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_NANOCOM + bool "nanocom" + help + Nanocom is based upon microcom (http://microcom.port5.com/) + but removes the scripting and logging features while + introducing support for setting local/remote echo, parity + and stop bits. It also follows a more standard command line + style using the getopt function. Internally much of the + code has been rewritten and reformatted, the menu system in + particular is almost entirely different. + + http://nanocom.sourceforge.net/ diff --git a/package/nanocom/nanocom.hash b/package/nanocom/nanocom.hash new file mode 100644 index 00000000..df35a37b --- /dev/null +++ b/package/nanocom/nanocom.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 5cb26e3e232cfc4a7cb16da432db532b775c5ebdb887ac9d39df5632f2c9a5e5 nanocom.tar.gz +sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 COPYING diff --git a/package/nanocom/nanocom.mk b/package/nanocom/nanocom.mk new file mode 100644 index 00000000..7893cc6b --- /dev/null +++ b/package/nanocom/nanocom.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# nanocom +# +################################################################################ + +NANOCOM_VERSION = 1.0 +NANOCOM_SOURCE = nanocom.tar.gz +NANOCOM_SITE = http://downloads.sourceforge.net/project/nanocom/nanocom/v$(NANOCOM_VERSION) +NANOCOM_STRIP_COMPONENTS = 0 +NANOCOM_LICENSE = GPL-2.0+ +NANOCOM_LICENSE_FILES = COPYING + +define NANOCOM_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS)" -C $(@D) +endef + +define NANOCOM_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/nanocom $(TARGET_DIR)/usr/bin/nanocom +endef + +$(eval $(generic-package)) diff --git a/package/nanomsg/Config.in b/package/nanomsg/Config.in new file mode 100644 index 00000000..0cab8b47 --- /dev/null +++ b/package/nanomsg/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_NANOMSG + bool "nanomsg" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + nanomsg is a socket library that provides several common + communication patterns. It aims to make the networking layer + fast, scalable, and easy to use. Implemented in C, it works + on a wide range of operating systems with no further + dependencies. + + http://nanomsg.org/ + +if BR2_PACKAGE_NANOMSG + +config BR2_PACKAGE_NANOMSG_TOOLS + bool "Build nanomsg tools" + help + Build nanomsg tools + +endif + +comment "nanomsg needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/nanomsg/nanomsg.hash b/package/nanomsg/nanomsg.hash new file mode 100644 index 00000000..abf117a5 --- /dev/null +++ b/package/nanomsg/nanomsg.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 6ef7282e833df6a364f3617692ef21e59d5c4878acea4f2d7d36e21c8858de67 nanomsg-1.2.tar.gz + +# Hash for license file: +sha256 4e51f6a04312ea7c5f4f0e92d91b6415c1eeb09bdaf86a6fd11d93499457c07a COPYING diff --git a/package/nanomsg/nanomsg.mk b/package/nanomsg/nanomsg.mk new file mode 100644 index 00000000..e5c576ef --- /dev/null +++ b/package/nanomsg/nanomsg.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# nanomsg +# +################################################################################ + +NANOMSG_VERSION = 1.2 +NANOMSG_SITE = $(call github,nanomsg,nanomsg,$(NANOMSG_VERSION)) +NANOMSG_INSTALL_STAGING = YES +NANOMSG_LICENSE = MIT +NANOMSG_LICENSE_FILES = COPYING +NANOMSG_CONF_OPTS = -DNN_ENABLE_DOC=OFF -DNN_TESTS=OFF + +ifeq ($(BR2_STATIC_LIBS),y) +NANOMSG_CONF_OPTS += -DNN_STATIC_LIB=ON +endif + +ifeq ($(BR2_PACKAGE_NANOMSG_TOOLS),y) +NANOMSG_CONF_OPTS += -DNN_TOOLS=ON +else +NANOMSG_CONF_OPTS += -DNN_TOOLS=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/nasm/nasm.hash b/package/nasm/nasm.hash new file mode 100644 index 00000000..141e141b --- /dev/null +++ b/package/nasm/nasm.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1412a1c760bbd05db026b6c0d1657affd6631cd0a63cddb6f73cc6d4aa616148 nasm-2.16.03.tar.xz +sha256 1563996c52e220e15ef2418e67d39488255aa8c28c89e617074d3afe3ee329e0 LICENSE diff --git a/package/nasm/nasm.mk b/package/nasm/nasm.mk new file mode 100644 index 00000000..e44d265b --- /dev/null +++ b/package/nasm/nasm.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# nasm +# +################################################################################ + +NASM_VERSION = 2.16.03 +NASM_SOURCE = nasm-$(NASM_VERSION).tar.xz +NASM_SITE = https://www.nasm.us/pub/nasm/releasebuilds/$(NASM_VERSION) +NASM_LICENSE = BSD-2-Clause +NASM_LICENSE_FILES = LICENSE +NASM_CPE_ID_VENDOR = nasm +NASM_CPE_ID_PRODUCT = netwide_assembler + +$(eval $(host-autotools-package)) diff --git a/package/nbd/Config.in b/package/nbd/Config.in new file mode 100644 index 00000000..ad9fb5cc --- /dev/null +++ b/package/nbd/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_NBD + bool "nbd" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU + select BR2_PACKAGE_LIBGLIB2 + help + NBD is a set of utilities to configure network block devices, + allowing access to remote block devices over TCP/IP network. + + http://nbd.sf.net/ + +if BR2_PACKAGE_NBD + +config BR2_PACKAGE_NBD_CLIENT + bool "nbd client" + default y + help + The client part of NBD. + +config BR2_PACKAGE_NBD_SERVER + bool "nbd server" + help + The server part of NBD. + +config BR2_PACKAGE_NBD_TRDUMP + bool "nbd trdump" + help + Utility to dump server logs in human-readable form. + +endif + +comment "nbd needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/nbd/nbd.hash b/package/nbd/nbd.hash new file mode 100644 index 00000000..9fe95441 --- /dev/null +++ b/package/nbd/nbd.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 f5c8fd0fcb57b1c926594d0e57f356432ee08678bef1d40d088f0830f0cbdd0a nbd-3.25.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/nbd/nbd.mk b/package/nbd/nbd.mk new file mode 100644 index 00000000..b077e436 --- /dev/null +++ b/package/nbd/nbd.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# nbd +# +################################################################################ + +NBD_VERSION = 3.25 +NBD_SOURCE = nbd-$(NBD_VERSION).tar.xz +NBD_SITE = https://github.com/NetworkBlockDevice/nbd/releases/download/nbd-$(NBD_VERSION) +NBD_CONF_OPTS = --enable-lfs +NBD_DEPENDENCIES = host-bison host-pkgconf libglib2 +NBD_LICENSE = GPL-2.0 +NBD_LICENSE_FILES = COPYING +NBD_CPE_ID_VENDOR = network_block_device_project +NBD_CPE_ID_PRODUCT = network_block_device + +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +# We have linux/falloc.h +# but uClibc lacks fallocate(2) which is a glibc-ism +NBD_CONF_ENV = ac_cv_header_linux_falloc_h=no +endif + +ifneq ($(BR2_PACKAGE_NBD_CLIENT),y) +NBD_TOREMOVE += /usr/sbin/nbd-client +endif +ifneq ($(BR2_PACKAGE_NBD_SERVER),y) +NBD_TOREMOVE += /usr/bin/nbd-server +endif +ifneq ($(BR2_PACKAGE_NBD_TRDUMP),y) +NBD_TOREMOVE += /usr/bin/nbd-trdump +endif + +define NBD_CLEANUP_AFTER_INSTALL + rm -f $(addprefix $(TARGET_DIR), $(NBD_TOREMOVE)) +endef + +NBD_POST_INSTALL_TARGET_HOOKS += NBD_CLEANUP_AFTER_INSTALL + +$(eval $(autotools-package)) diff --git a/package/ncdu/Config.in b/package/ncdu/Config.in new file mode 100644 index 00000000..0e440344 --- /dev/null +++ b/package/ncdu/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_NCDU + bool "ncdu" + depends on BR2_USE_MMU # system() + select BR2_PACKAGE_NCURSES + help + ncdu is a disk usage analyzer with an ncurses interface + + http://dev.yorhel.nl/ncdu diff --git a/package/ncdu/ncdu.hash b/package/ncdu/ncdu.hash new file mode 100644 index 00000000..cfb44b7d --- /dev/null +++ b/package/ncdu/ncdu.hash @@ -0,0 +1,10 @@ +# From https://dev.yorhel.nl/ncdu +# After checking pgp signature from: +# https://dev.yorhel.nl/download/ncdu-1.20.tar.gz.asc +# With key 74460D32B80810EBA9AFA2E962394C698C2739FA +md5 563966db4c3c34d61cc890a85ddedae0 ncdu-1.20.tar.gz +sha1 1a3543cfbbe3e402d6347cf688468327064941b9 ncdu-1.20.tar.gz +sha256 5fe2bb841abe72374bb242dbb93293c4ae053078432d896a7481b2ff10be9572 ncdu-1.20.tar.gz + +# computed locally +sha256 a324e25fe6af7fa45286b34a516b4c5a11544344bc80efb74fc51033b2e76df4 COPYING diff --git a/package/ncdu/ncdu.mk b/package/ncdu/ncdu.mk new file mode 100644 index 00000000..cff824fd --- /dev/null +++ b/package/ncdu/ncdu.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# ncdu +# +################################################################################ + +NCDU_VERSION = 1.20 +NCDU_SITE = http://dev.yorhel.nl/download + +NCDU_DEPENDENCIES = ncurses + +NCDU_LICENSE = MIT +NCDU_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/ncftp/0001-ncftp-3.2.7-fix-gcc14.patch b/package/ncftp/0001-ncftp-3.2.7-fix-gcc14.patch new file mode 100644 index 00000000..e2cda631 --- /dev/null +++ b/package/ncftp/0001-ncftp-3.2.7-fix-gcc14.patch @@ -0,0 +1,19 @@ +fix select arg detection + +Reference: + https://bugs.gentoo.org/921487 + +Upstream: N/A, unresponsive contact email address. + +Signed-off-by: Yegor Yefremov +--- a/autoconf_local/aclocal.m4 ++++ b/autoconf_local/aclocal.m4 +@@ -4196,7 +4196,7 @@ + #include + #endif + #include /* MG: always incl */ +-extern select ($ac_cv_func_select_arg1,$ac_cv_func_select_arg234,$ac_cv_func_select_arg234,$ac_cv_func_select_arg234,$ac_cv_func_select_arg5);],,dnl ++extern int select ($ac_cv_func_select_arg1,$ac_cv_func_select_arg234,$ac_cv_func_select_arg234,$ac_cv_func_select_arg234,$ac_cv_func_select_arg5);],,dnl + [ac_not_found=no ; break 3],ac_not_found=yes) + done + done diff --git a/package/ncftp/0002-ncftp-3.2.7-fix-clang.patch b/package/ncftp/0002-ncftp-3.2.7-fix-clang.patch new file mode 100644 index 00000000..bed10360 --- /dev/null +++ b/package/ncftp/0002-ncftp-3.2.7-fix-clang.patch @@ -0,0 +1,72 @@ +Fix compilation with clang-16 + +aclocal.m4 contains code that no longer compiles: missing headers and missing +return types. + +Reference: + https://gitweb.gentoo.org/repo/gentoo.git/tree/net-ftp/ncftp/files/ncftp-3.2.7-fix-clang.patch + +Upstream: N/A, unresponsive contact email address. + +Signed-off-by: Yegor Yefremov +--- a/autoconf_local/aclocal.m4 ++++ b/autoconf_local/aclocal.m4 +@@ -3057,6 +3057,7 @@ + #include + #include + #include ++#include + ],[ + struct sockaddr_un uaddr; + +@@ -3285,6 +3286,7 @@ + #ifdef HAVE_RESOLV_H + # include + #endif ++#include + ],[ + /* function-body */ + int len; +@@ -3363,6 +3365,7 @@ + #include + #include + ++ int + main(int argc, char **argv) + { + /* Note: don't actually call readline, +@@ -5145,6 +5148,7 @@ + #ifdef HAVE_STDLIB_H + # include + #endif ++#include + + #ifdef HAVE_NCURSES_H + # define NCURSES_OPAQUE 0 +@@ -5176,6 +5180,7 @@ + #endif + + ++int + main(int argc, char **argv) + { + /* Note: don't actually call curses, since it may block; +@@ -6510,7 +6515,6 @@ + #endif + #endif /* MG */ + +-int + int main(void) + { + char *data, *data2, *data3; +@@ -6607,8 +6611,9 @@ + AC_CACHE_CHECK(whether setvbuf arguments are reversed, + ac_cv_func_setvbuf_reversed, + [AC_TRY_RUN([#include ++ $include + /* If setvbuf has the reversed format, exit 0. */ +- main () { ++ int main (void) { + /* This call has the arguments reversed. + A reversed system may check and see that the address of main + is not _IOLBF, _IONBF, or _IOFBF, and return nonzero. */ diff --git a/package/ncftp/Config.in b/package/ncftp/Config.in new file mode 100644 index 00000000..c8870a3d --- /dev/null +++ b/package/ncftp/Config.in @@ -0,0 +1,34 @@ +config BR2_PACKAGE_NCFTP + bool "ncftp" + # fork() + depends on BR2_USE_MMU + help + NcFTP Client (also known as just NcFTP) is a set of FREE + application programs implementing the File Transfer Protocol + (FTP). + + https://www.ncftp.com/ncftp/ + +if BR2_PACKAGE_NCFTP + +config BR2_PACKAGE_NCFTP_GET + bool "ncftpget" + default y + +config BR2_PACKAGE_NCFTP_PUT + bool "ncftpput" + default y + +config BR2_PACKAGE_NCFTP_LS + bool "ncftpls" + default y + +config BR2_PACKAGE_NCFTP_BATCH + bool "ncftpbatch/ncftpspooler" + default y + +config BR2_PACKAGE_NCFTP_BOOKMARKS + bool "ncftpbookmarks" + select BR2_PACKAGE_NCURSES + +endif diff --git a/package/ncftp/ncftp.hash b/package/ncftp/ncftp.hash new file mode 100644 index 00000000..3e390b10 --- /dev/null +++ b/package/ncftp/ncftp.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 d41c5c4d6614a8eae2ed4e4d7ada6b6d3afcc9fb65a4ed9b8711344bef24f7e8 ncftp-3.2.7-src.tar.xz +sha256 4fe2f063d25d79c49712a272ebb68e050c703eed9c66c80108427edfe3285580 doc/LICENSE.txt diff --git a/package/ncftp/ncftp.mk b/package/ncftp/ncftp.mk new file mode 100644 index 00000000..57c3a5d0 --- /dev/null +++ b/package/ncftp/ncftp.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# ncftp +# +################################################################################ + +NCFTP_VERSION = 3.2.7 +NCFTP_SOURCE = ncftp-$(NCFTP_VERSION)-src.tar.xz +NCFTP_SITE = https://www.ncftp.com/public_ftp/ncftp +NCFTP_TARGET_BINS = ncftp +NCFTP_LICENSE = ClArtistic +NCFTP_LICENSE_FILES = doc/LICENSE.txt + +NCFTP_DEPENDENCIES = host-autoconf +NCFTP_CONF_OPTS = --disable-ccdv + +# The bundled configure script is generated by autoconf 2.13 and doesn't +# detect cross-compilation correctly. Therefore, we have to regenerate it. +# We need to pass -I because of the non-standard m4 directory name, and +# none of the other autotools are used, so the below is the easiest. +define NCFTP_RUN_AUTOCONF + (cd $(@D); $(AUTOCONF) -I$(@D)/autoconf_local/) +endef +NCFTP_PRE_CONFIGURE_HOOKS += NCFTP_RUN_AUTOCONF + +ifeq ($(BR2_PACKAGE_NCFTP_GET),y) +NCFTP_TARGET_BINS += ncftpget +endif + +ifeq ($(BR2_PACKAGE_NCFTP_PUT),y) +NCFTP_TARGET_BINS += ncftpput +endif + +ifeq ($(BR2_PACKAGE_NCFTP_LS),y) +NCFTP_TARGET_BINS += ncftpls +endif + +ifeq ($(BR2_PACKAGE_NCFTP_BATCH),y) +NCFTP_TARGET_BINS += ncftpbatch +NCFTP_INSTALL_NCFTP_BATCH = \ + ln -sf /usr/bin/ncftpbatch $(TARGET_DIR)/usr/bin/ncftpspooler +endif + +ifeq ($(BR2_PACKAGE_NCFTP_BOOKMARKS),y) +NCFTP_TARGET_BINS += ncftpbookmarks +NCFTP_DEPENDENCIES += ncurses +endif + +define NCFTP_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 $(addprefix $(NCFTP_DIR)/bin/, $(NCFTP_TARGET_BINS)) $(TARGET_DIR)/usr/bin + $(NCFTP_INSTALL_NCFTP_BATCH) +endef + +$(eval $(autotools-package)) diff --git a/package/ncmpc/0001-meson.build-add-atomic-dependency-for-sparc.patch b/package/ncmpc/0001-meson.build-add-atomic-dependency-for-sparc.patch new file mode 100644 index 00000000..2b726b74 --- /dev/null +++ b/package/ncmpc/0001-meson.build-add-atomic-dependency-for-sparc.patch @@ -0,0 +1,45 @@ +From 72ef4c1c3c11fc05c057f2b40b87de92a573f2eb Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 11 Feb 2019 21:42:01 +0100 +Subject: [PATCH] meson.build: add atomic dependency for sparc + +Linking with libatomic is needed on sparc otherwise build fails on: +ncmpc@exe/src_Main.cxx.o: In function `std::__atomic_base::operator++()': +/home/buildroot/autobuild/instance-1/output/host/opt/ext-toolchain/sparc-buildroot-linux-uclibc/include/c++/6.4.0/bits/atomic_base.h:296: undefined reference to `__atomic_fetch_add_4' + +Fixes: + - http://autobuild.buildroot.org/results/7ac1a07e4f72633d3ec92b79dc5d8c062490abdc + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/MusicPlayerDaemon/ncmpc/pull/45 +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + meson.build | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/meson.build b/meson.build +index fa0eff9408b6..819674cbede4 100644 +--- a/meson.build ++++ b/meson.build +@@ -232,6 +232,9 @@ else + pcre_dep = declare_dependency() + endif + ++# Needed on sparc ++atomic_dep = cc.find_library('atomic', required: false) ++ + inc = include_directories( + 'src', + +@@ -445,6 +448,7 @@ ncmpc = executable('ncmpc', + sources, + include_directories: inc, + dependencies: [ ++ atomic_dep, + thread_dep, + event_dep, + pcre_dep, +-- +2.43.0 + diff --git a/package/ncmpc/Config.in b/package/ncmpc/Config.in new file mode 100644 index 00000000..61c186a4 --- /dev/null +++ b/package/ncmpc/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_NCMPC + bool "ncmpc" + depends on BR2_USE_MMU # fork() + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_10 # C++20 + select BR2_PACKAGE_LIBMPDCLIENT + select BR2_PACKAGE_NCURSES + help + ncmpc is a fully featured MPD client, which runs in a terminal + (using ncurses). Its goal is to provide a keyboard oriented + and consistent interface to MPD, without wasting resources. + + http://www.musicpd.org/clients/ncmpc/ + +comment "ncmpc needs a toolchain w/ C++, wchar, threads, gcc >= 10" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_10 diff --git a/package/ncmpc/ncmpc.hash b/package/ncmpc/ncmpc.hash new file mode 100644 index 00000000..1d288294 --- /dev/null +++ b/package/ncmpc/ncmpc.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +sha256 65bbec0ede9e6bcf62ac647b0c706485beb2bdd5db70ca8d60103f32f162cf29 ncmpc-0.49.tar.xz + +# Hash for license file: +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/ncmpc/ncmpc.mk b/package/ncmpc/ncmpc.mk new file mode 100644 index 00000000..ee75c2a6 --- /dev/null +++ b/package/ncmpc/ncmpc.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# ncmpc +# +################################################################################ + +NCMPC_VERSION_MAJOR = 0 +NCMPC_VERSION = $(NCMPC_VERSION_MAJOR).49 +NCMPC_SOURCE = ncmpc-$(NCMPC_VERSION).tar.xz +NCMPC_SITE = http://www.musicpd.org/download/ncmpc/$(NCMPC_VERSION_MAJOR) +NCMPC_DEPENDENCIES = \ + host-pkgconf \ + libmpdclient \ + ncurses \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) \ + $(TARGET_NLS_DEPENDENCIES) +NCMPC_LICENSE = GPL-2.0+ +NCMPC_LICENSE_FILES = COPYING +NCMPC_CPE_ID_VALID = YES + +NCMPC_CONF_OPTS = \ + -Dcurses=ncurses \ + -Ddocumentation=disabled \ + $(if $(BR2_SYSTEM_ENABLE_NLS),-Dnls=enabled,-Dnls=disabled) + +ifeq ($(BR2_PACKAGE_LIRC_TOOLS),y) +NCMPC_DEPENDENCIES += lirc-tools +NCMPC_CONF_OPTS += -Dlirc=enabled +else +NCMPC_CONF_OPTS += -Dlirc=disabled +endif + +ifeq ($(BR2_PACKAGE_PCRE2),y) +NCMPC_DEPENDENCIES += pcre2 +NCMPC_CONF_OPTS += -Dregex=enabled +else +NCMPC_CONF_OPTS += -Dregex=disabled +endif + +$(eval $(meson-package)) diff --git a/package/ncurses/0001-fix-XOPEN_SOURCE-detection.patch b/package/ncurses/0001-fix-XOPEN_SOURCE-detection.patch new file mode 100644 index 00000000..130ef524 --- /dev/null +++ b/package/ncurses/0001-fix-XOPEN_SOURCE-detection.patch @@ -0,0 +1,17 @@ +Fix detection of XOPEN_SOURCE + +Signed-off-by: Waldemar Brodkorb +Upstream: fixed in latest release, no git/svn/hg + +diff -Nur ncurses-snapshots-6_4_20230603.orig/configure ncurses-snapshots-6_4_20230603/configure +--- ncurses-snapshots-6_4_20230603.orig/configure 2023-06-04 00:07:40.000000000 +0200 ++++ ncurses-snapshots-6_4_20230603/configure 2024-08-14 20:38:03.426905460 +0200 +@@ -10411,7 +10411,7 @@ + cf_xopen_source="-D_SGI_SOURCE" + cf_XOPEN_SOURCE= + ;; +-(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*) ++(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc) + + cf_gnu_xopen_source=$cf_XOPEN_SOURCE + diff --git a/package/ncurses/Config.in b/package/ncurses/Config.in new file mode 100644 index 00000000..c0086cbb --- /dev/null +++ b/package/ncurses/Config.in @@ -0,0 +1,34 @@ +config BR2_PACKAGE_NCURSES + bool "ncurses" + help + The Ncurses (new curses) library is a free software + emulation of curses in System V Release 4.0, and more. + + This package installs only a few vital termcap entries + + https://invisible-island.net/ncurses/ + +if BR2_PACKAGE_NCURSES + +config BR2_PACKAGE_NCURSES_WCHAR + bool "enable wide char support" + depends on BR2_USE_WCHAR + help + Enable wide char & UTF-8 support in ncurses libraries + +config BR2_PACKAGE_NCURSES_TARGET_PROGS + bool "ncurses programs" + help + Include ncurses programs in target (clear, reset, tput, ...) + +config BR2_PACKAGE_NCURSES_ADDITIONAL_TERMINFO + string "additional terminfo files to install" + help + Whitespace separated list of terminfo files to install on the + target. A small number of vital terminfo files are always + installed. This list is in addition to the vital ones. + + The terminfo filenames should have the single letter path + prefix. e.g. t/tmux. + +endif diff --git a/package/ncurses/ncurses.hash b/package/ncurses/ncurses.hash new file mode 100644 index 00000000..b82a7b29 --- /dev/null +++ b/package/ncurses/ncurses.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 b0910671694c2c8377f579eea68477a15d67bd20ddd4b29328cfe15c62c7b3fd ncurses-6.4-20230603.tar.gz +# Locally computed +sha256 0413b2f4ea863194c174673032f0fca84f1ea1ed4eed6476baea68c075a631ce COPYING diff --git a/package/ncurses/ncurses.mk b/package/ncurses/ncurses.mk new file mode 100644 index 00000000..00e1c0d4 --- /dev/null +++ b/package/ncurses/ncurses.mk @@ -0,0 +1,167 @@ +################################################################################ +# +# ncurses +# +################################################################################ + +# When there is no snapshost yet for a new version, set it to the empty string +NCURSES_VERSION_MAJOR = 6.4 +NCURSES_SNAPSHOT_DATE = 20230603 +NCURSES_VERSION = $(NCURSES_VERSION_MAJOR)$(if $(NCURSES_SNAPSHOT_DATE),-$(NCURSES_SNAPSHOT_DATE)) +NCURSES_VERSION_GIT = $(subst .,_,$(subst -,_,$(NCURSES_VERSION))) +NCURSES_SITE = $(call github,ThomasDickey,ncurses-snapshots,v$(NCURSES_VERSION_GIT)) +NCURSES_INSTALL_STAGING = YES +NCURSES_DEPENDENCIES = host-ncurses +NCURSES_LICENSE = MIT with advertising clause +NCURSES_LICENSE_FILES = COPYING +NCURSES_CPE_ID_VENDOR = gnu +NCURSES_CPE_ID_VERSION = $(NCURSES_VERSION_MAJOR)$(if $(NCURSES_SNAPSHOT_DATE),.$(NCURSES_SNAPSHOT_DATE)) +NCURSES_CONFIG_SCRIPTS = ncurses$(NCURSES_LIB_SUFFIX)6-config + +NCURSES_CONF_OPTS = \ + --without-cxx \ + --without-cxx-binding \ + --without-ada \ + --without-tests \ + --disable-big-core \ + --without-profile \ + --disable-rpath \ + --disable-rpath-hack \ + --enable-echo \ + --enable-const \ + --enable-overwrite \ + --enable-pc-files \ + --disable-stripping \ + --with-pkg-config-libdir="/usr/lib/pkgconfig" \ + $(if $(BR2_PACKAGE_NCURSES_TARGET_PROGS),,--without-progs) \ + --without-manpages + +ifeq ($(BR2_STATIC_LIBS),y) +NCURSES_CONF_OPTS += --without-shared --with-normal +else ifeq ($(BR2_SHARED_LIBS),y) +NCURSES_CONF_OPTS += --with-shared --without-normal +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +NCURSES_CONF_OPTS += --with-shared --with-normal +endif + +# configure can't find the soname for libgpm when cross compiling +ifeq ($(BR2_PACKAGE_GPM),y) +NCURSES_CONF_OPTS += --with-gpm=libgpm.so.2 +NCURSES_DEPENDENCIES += gpm +else +NCURSES_CONF_OPTS += --without-gpm +endif + +NCURSES_TERMINFO_FILES = \ + a/ansi \ + d/dumb \ + l/linux \ + p/putty \ + p/putty-256color \ + p/putty-vt100 \ + s/screen \ + s/screen-256color \ + v/vt100 \ + v/vt100-putty \ + v/vt102 \ + v/vt200 \ + v/vt220 \ + x/xterm \ + x/xterm+256color \ + x/xterm-256color \ + x/xterm-color \ + x/xterm-xfree86 \ + $(call qstrip,$(BR2_PACKAGE_NCURSES_ADDITIONAL_TERMINFO)) + +ifeq ($(BR2_PACKAGE_FOOT),y) +NCURSES_TERMINFO_FILES += \ + f/foot \ + f/foot+base \ + f/foot-direct +endif + +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:%=lib%), \ + ln -sf $(lib)$(NCURSES_LIB_SUFFIX).a $(STAGING_DIR)/usr/lib/$(lib).a + ) + ln -sf libncurses$(NCURSES_LIB_SUFFIX).a \ + $(STAGING_DIR)/usr/lib/libcurses.a +endef + +define NCURSES_LINK_LIBS_SHARED + $(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 \ + $(STAGING_DIR)/usr/lib/libcurses.so +endef + +define NCURSES_LINK_PC + $(foreach pc,$(NCURSES_LIBS), \ + ln -sf $(pc)$(NCURSES_LIB_SUFFIX).pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/$(pc).pc + ) +endef + +NCURSES_LINK_STAGING_LIBS = \ + $(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) + +NCURSES_CONF_OPTS += --enable-ext-colors + +NCURSES_POST_INSTALL_STAGING_HOOKS += NCURSES_LINK_STAGING_LIBS +NCURSES_POST_INSTALL_STAGING_HOOKS += NCURSES_LINK_STAGING_PC + +endif # BR2_PACKAGE_NCURSES_WCHAR + +ifneq ($(BR2_ENABLE_DEBUG),y) +NCURSES_CONF_OPTS += --without-debug +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 + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR=$(STAGING_DIR) sources + rm -rf $(@D)/misc/pc-files + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) +endef + +ifeq ($(BR2_PACKAGE_NCURSES_TARGET_PROGS),y) +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_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_POST_INSTALL_TARGET_HOOKS += NCURSES_TARGET_CLEANUP_TERMINFO + +HOST_NCURSES_CONF_ENV = \ + ac_cv_path_LDCONFIG="" + +HOST_NCURSES_CONF_OPTS = \ + --with-shared \ + --without-gpm \ + --without-manpages \ + --without-cxx \ + --without-cxx-binding \ + --without-ada \ + --with-default-terminfo-dir=/usr/share/terminfo \ + --disable-db-install \ + --without-normal + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/ndisc6/Config.in b/package/ndisc6/Config.in new file mode 100644 index 00000000..287dc919 --- /dev/null +++ b/package/ndisc6/Config.in @@ -0,0 +1,52 @@ +config BR2_PACKAGE_NDISC6 + bool "ndisc6 tools" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # c11 + help + NDisc6 is a small collection of useful tools for IPv6 + networking + + http://www.remlab.net/ndisc6/ + +if BR2_PACKAGE_NDISC6 + +config BR2_PACKAGE_NDISC6_NAME2ADDR + bool "name2addr" + help + name2addr perform DNS lookups from scripts. + +config BR2_PACKAGE_NDISC6_NDISC6 + bool "ndisc6" + help + ndisc6 performs ICMPv6 Neighbor Discovery in userland. + +config BR2_PACKAGE_NDISC6_RDISC6 + bool "rdisc6" + help + rdisc6 performs ICMPv6 Router Discovery in userland. + +config BR2_PACKAGE_NDISC6_RDNSSD + bool "rdnssd" + help + IPv6 Recursive DNS Server discovery Daemon. + +config BR2_PACKAGE_NDISC6_RLTRACEROUTE6 + bool "rltraceroute6" + help + rltraceroute6 is an IPv6 traceroute implementation. + +config BR2_PACKAGE_NDISC6_TCPTRACEROUTE6 + bool "tcptraceroute6" + help + tcptraceroute6 is an TCP/IPv6 traceroute implementation. + +config BR2_PACKAGE_NDISC6_TCPSPRAY + bool "tcpspray" + help + TCP/IP bandwidth measurement tool (Discard and Echo client). + +endif + +comment "ndisc6 needs a toolchain w/ gcc >= 4.7" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 diff --git a/package/ndisc6/ndisc6.hash b/package/ndisc6/ndisc6.hash new file mode 100644 index 00000000..550b9fff --- /dev/null +++ b/package/ndisc6/ndisc6.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 edc431d70510d7321a5a39d243de0d0f63846dc9145b3b549c7348cc2bc96609 ndisc6-1.0.7.tar.bz2 +# Locally computed +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/ndisc6/ndisc6.mk b/package/ndisc6/ndisc6.mk new file mode 100644 index 00000000..d797b82e --- /dev/null +++ b/package/ndisc6/ndisc6.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# ndisc6 +# +################################################################################ + +NDISC6_VERSION = 1.0.7 +NDISC6_SOURCE = ndisc6-$(NDISC6_VERSION).tar.bz2 +NDISC6_SITE = http://www.remlab.net/files/ndisc6 +NDISC6_CONF_ENV = CC="$(TARGET_CC) -std=c11" LIBS=$(TARGET_NLS_LIBS) +NDISC6_CONF_OPTS = --disable-rpath --disable-suid-install +NDISC6_LICENSE = GPL-2.0 or GPL-3.0 +NDISC6_LICENSE_FILES = COPYING +NDISC6_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) + +NDISC6_BIN_ += dnssort # perl script +NDISC6_BIN_$(BR2_PACKAGE_NDISC6_NAME2ADDR) += name2addr addr2name +NDISC6_BIN_$(BR2_PACKAGE_NDISC6_TCPSPRAY) += tcpspray tcpspray6 + +NDISC6_SBIN_$(BR2_PACKAGE_NDISC6_NDISC6) += ndisc6 +NDISC6_SBIN_$(BR2_PACKAGE_NDISC6_RDISC6) += rdisc6 +NDISC6_SBIN_$(BR2_PACKAGE_NDISC6_RDNSSD) += rdnssd +NDISC6_SBIN_$(BR2_PACKAGE_NDISC6_RLTRACEROUTE6) += rltraceroute6 tracert6 +NDISC6_SBIN_$(BR2_PACKAGE_NDISC6_TCPTRACEROUTE6) += tcptraceroute6 + +define NDISC6_REMOVE_UNNEEDED + rm -rf $(addprefix $(TARGET_DIR)/usr/bin/,$(NDISC6_BIN_)) \ + $(addprefix $(TARGET_DIR)/usr/sbin/,$(NDISC6_SBIN_)) + $(if $(BR2_PACKAGE_NDISC6_RDNSSD),,\ + rm -rf $(TARGET_DIR)/etc/rdnssd $(TARGET_DIR)/var/run/rdnssd) +endef + +NDISC6_POST_INSTALL_TARGET_HOOKS += NDISC6_REMOVE_UNNEEDED + +$(eval $(autotools-package)) diff --git a/package/ne10/0001-CMakeLists-don-t-hard-code-thumb-code-generation.patch b/package/ne10/0001-CMakeLists-don-t-hard-code-thumb-code-generation.patch new file mode 100644 index 00000000..0aa6fd2b --- /dev/null +++ b/package/ne10/0001-CMakeLists-don-t-hard-code-thumb-code-generation.patch @@ -0,0 +1,30 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Cody Guldner +Date: Tue, 14 Apr 2020 09:12:01 -0500 +Subject: [PATCH] CMakeLists: don't hard code thumb code generation + +Migrating to version 1.2.1 + +Signed-off-by: Baruch Siach +Signed-off-by: Clayton Shotwell +Signed-off-by: Cody Guldner +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index fc2a5e3..25da215 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -135,7 +135,7 @@ if(ANDROID_PLATFORM) + ${CMAKE_C_FLAGS}") + elseif(GNULINUX_PLATFORM) + if(${NE10_TARGET_ARCH} STREQUAL "armv7") +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mthumb-interwork -mthumb -march=armv7-a -mfpu=vfp3 -funsafe-math-optimizations") ++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mthumb-interwork -march=armv7-a -mfpu=vfp3 -funsafe-math-optimizations") + set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS} -mthumb-interwork -mthumb -march=armv7-a -mfpu=neon") + # Turn on asm optimization for Linux on ARM v7. + set(NE10_ASM_OPTIMIZATION on) +-- +2.23.0 + diff --git a/package/ne10/0002-fix-build-without-C.patch b/package/ne10/0002-fix-build-without-C.patch new file mode 100644 index 00000000..9dafffd5 --- /dev/null +++ b/package/ne10/0002-fix-build-without-C.patch @@ -0,0 +1,55 @@ +From f19b109f2a879af7b0753d94a2a312e4039adbed Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 8 May 2022 23:52:36 +0200 +Subject: [PATCH] fix build without C++ + +Fix the following build failure without C++ raised since version 1.2.0 +and +https://github.com/projectNe10/Ne10/commit/20b1896fd6532336e6a46608778bd6e0396dc4dc: + +CMake Error at /nvmedata/autobuild/instance-11/output-1/host/share/cmake-3.18/Modules/CMakeTestCXXCompiler.cmake:59 (message): + The C++ compiler + + "/usr/bin/clang++" + + is not able to compile a simple test program. + +Fixes: + - http://autobuild.buildroot.org/results/a86d09d569babe6b88cb8e5fbb47483772f42aed + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/projectNe10/Ne10/pull/280] +--- + CMakeLists.txt | 2 +- + modules/CMakeLists.txt | 2 ++ + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 40e1b72..10081f8 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -26,7 +26,7 @@ + # + cmake_minimum_required(VERSION 2.6) + +-project(NE10 C CXX ASM) ++project(NE10 C ASM) + + option(NE10_BUILD_SHARED "Build NE10 shared libraries" OFF) + option(NE10_BUILD_STATIC "Build NE10 static libraries" ON) +diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt +index 4f158e9..951527a 100644 +--- a/modules/CMakeLists.txt ++++ b/modules/CMakeLists.txt +@@ -173,6 +173,8 @@ endif(IOS_PLATFORM) + endif() + + if(NE10_ENABLE_DSP) ++ enable_language(CXX) ++ + #enable NE10_init_dsp + add_definitions(-DNE10_ENABLE_DSP) + +-- +2.35.1 + diff --git a/package/ne10/Config.in b/package/ne10/Config.in new file mode 100644 index 00000000..a84ac18c --- /dev/null +++ b/package/ne10/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_NE10_ARCH_SUPPORTS + bool + default y if BR2_aarch64 + default y if BR2_arm && (BR2_ARM_FPU_NEON || BR2_ARM_FPU_NEON_VFPV4) + +config BR2_PACKAGE_NE10 + bool "ne10" + depends on BR2_PACKAGE_NE10_ARCH_SUPPORTS + help + The Ne10 project has been set up to provide a set of common, + useful functions which have been heavily optimized for the + ARM and AArch64 Architecture and provide consistent well + tested behavior that can be easily incorporated into + applications. C interfaces to the functions are provided for + both assembler and NEON implementations. + + http://projectne10.github.io/Ne10/ diff --git a/package/ne10/ne10.hash b/package/ne10/ne10.hash new file mode 100644 index 00000000..cdb6e013 --- /dev/null +++ b/package/ne10/ne10.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 dd1a96610c0692cc80154ae123edd5d25e6e0a3f81d0c16a96425f3ef57b9929 ne10-1.2.1.tar.gz +sha256 eb48041c8e0ad556cf72f2a6eff89c893aa5702bba4e163ca7798cce07e6c55e doc/LICENSE diff --git a/package/ne10/ne10.mk b/package/ne10/ne10.mk new file mode 100644 index 00000000..ce0f7e7b --- /dev/null +++ b/package/ne10/ne10.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# ne10 +# +################################################################################ + +NE10_VERSION = 1.2.1 +NE10_SITE = $(call github,projectNe10,Ne10,v$(NE10_VERSION)) +NE10_LICENSE = BSD-3-Clause or Apache-2.0 +NE10_LICENSE_FILES = doc/LICENSE +NE10_INSTALL_STAGING = YES + +NE10_CONF_OPTS = \ + -DGNULINUX_PLATFORM=ON \ + -DNE10_BUILD_EXAMPLES=OFF \ + -DNE10_BUILD_UNIT_TEST=OFF \ + -DNE10_LINUX_TARGET_ARCH=$(if $(BR2_aarch64),aarch64,armv7) + +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +NE10_CONF_OPTS += -DNE10_ENABLE_DSP=ON +else +NE10_CONF_OPTS += -DNE10_ENABLE_DSP=OFF +endif + +ifeq ($(BR2_STATIC_LIBS),) +NE10_CONF_OPTS += \ + -DNE10_BUILD_SHARED=ON +endif + +# The package does not have any install target, so have to provide +# INSTALL_STAGING_CMDS and INSTALL_TARGET_CMDS. + +ifeq ($(BR2_STATIC_LIBS),) +define NE10_INSTALL_STAGING_SHARED_LIB + cp -dpf $(@D)/modules/libNE10*.so* $(STAGING_DIR)/usr/lib/ +endef +endif + +define NE10_INSTALL_STAGING_CMDS + cp -dpf $(@D)/inc/NE10*h $(STAGING_DIR)/usr/include/ + cp -dpf $(@D)/modules/libNE10.a $(STAGING_DIR)/usr/lib/ + $(NE10_INSTALL_STAGING_SHARED_LIB) +endef + +ifeq ($(BR2_STATIC_LIBS),) +define NE10_INSTALL_TARGET_CMDS + cp -dpf $(@D)/modules/libNE10*.so* $(TARGET_DIR)/usr/lib/ +endef +endif + +$(eval $(cmake-package)) diff --git a/package/neard/Config.in b/package/neard/Config.in new file mode 100644 index 00000000..a60fb3f8 --- /dev/null +++ b/package/neard/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_NEARD + bool "neard" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl, dbus, libglib2 + depends on BR2_USE_MMU # dbus, libglib2 + depends on !BR2_STATIC_LIBS # dlopen + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBNL + help + Near Field Communication (NFC) manager. This userspace + daemon is a part of the NFC stack provided by the Linux NFC + project. + + https://git.kernel.org/pub/scm/network/nfc/neard.git + +if BR2_PACKAGE_NEARD + +config BR2_PACKAGE_NEARD_TOOLS + bool "neard tools" + help + Build and install neard tools. + +endif + +comment "neard needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/neard/S53neard b/package/neard/S53neard new file mode 100644 index 00000000..4fd4e0aa --- /dev/null +++ b/package/neard/S53neard @@ -0,0 +1,29 @@ +#!/bin/sh +# +# Starts neard +# + +NAME=neard + +case "$1" in + start) + printf "Starting $NAME: " + start-stop-daemon -S -q -p /var/run/${NAME}.pid -x /usr/libexec/nfc/neard -- -d '*' + echo "OK" + ;; + stop) + printf "Stopping $NAME: " + start-stop-daemon -K -q -p /var/run/${NAME}.pid + echo "OK" + ;; + restart|reload) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/package/neard/neard.hash b/package/neard/neard.hash new file mode 100644 index 00000000..b739d728 --- /dev/null +++ b/package/neard/neard.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 129bbf69488fdb599d480356765941f111d7799495d0d64095b25e893c4d2be7 neard-0.19.tar.gz +sha256 b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259 COPYING diff --git a/package/neard/neard.mk b/package/neard/neard.mk new file mode 100644 index 00000000..c1804c48 --- /dev/null +++ b/package/neard/neard.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# neard +# +################################################################################ + +NEARD_VERSION = 0.19 +NEARD_SITE = https://git.kernel.org/pub/scm/network/nfc/neard.git/snapshot +NEARD_LICENSE = GPL-2.0 +NEARD_LICENSE_FILES = COPYING + +NEARD_DEPENDENCIES = host-autoconf-archive host-pkgconf dbus libglib2 libnl +# From git +NEARD_AUTORECONF = YES +NEARD_AUTORECONF_OPTS = --include=$(HOST_DIR)/share/autoconf-archive +NEARD_CONF_OPTS = --disable-traces + +# Autoreconf is missing the m4/ directory, which might actually be missing +# iff it was the first argument, but unfortunately we are overriding the +# first include directory above. Thus we need that hook here. +define NEARD_CREATE_M4 + mkdir -p $(@D)/m4 +endef +NEARD_POST_PATCH_HOOKS += NEARD_CREATE_M4 + +ifeq ($(BR2_PACKAGE_NEARD_TOOLS),y) +NEARD_CONF_OPTS += --enable-tools +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +NEARD_CONF_OPTS += --enable-systemd +NEARD_DEPENDENCIES += systemd +else +NEARD_CONF_OPTS += --disable-systemd +endif + +define NEARD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/neard/S53neard \ + $(TARGET_DIR)/etc/init.d/S53neard +endef + +$(eval $(autotools-package)) diff --git a/package/neardal/0001-lib-neardal.h-fix-build-with-gcc-10.patch b/package/neardal/0001-lib-neardal.h-fix-build-with-gcc-10.patch new file mode 100644 index 00000000..c9c45550 --- /dev/null +++ b/package/neardal/0001-lib-neardal.h-fix-build-with-gcc-10.patch @@ -0,0 +1,35 @@ +From 08467411d7dfc2a2b7ede62e5fdc640748ea1db2 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 9 Sep 2020 19:14:52 +0200 +Subject: [PATCH] lib/neardal.h: fix build with gcc 10 + +Define neardal_output_cb as extern to avoid the following build failure +with gcc 10 (which defaults to -fno-common): + +/srv/storage/autobuild/run/instance-2/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: ./.libs/neardal_adapter.o:(.bss+0x0): multiple definition of `neardal_output_cb'; ./.libs/neardal.o:(.bss+0x68): first defined here + +Fixes: + - http://autobuild.buildroot.org/results/7efb100c899b67ffd570f73c202442f95ca5397e + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/connectivity/neardal/pull/10] +--- + lib/neardal.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/neardal.h b/lib/neardal.h +index d1cd18b..3e83595 100644 +--- a/lib/neardal.h ++++ b/lib/neardal.h +@@ -638,7 +638,7 @@ neardal_record *neardal_g_variant_to_record(GVariant *in); + + void neardal_trace(const char *func, FILE *fp, char *fmt, ...) + __attribute__((format(printf, 3, 4))); +-int (*neardal_output_cb)(FILE *fp, const char *fmt, va_list ap); ++extern int (*neardal_output_cb)(FILE *fp, const char *fmt, va_list ap); + + #ifdef __cplusplus + } +-- +2.28.0 + diff --git a/package/neardal/Config.in b/package/neardal/Config.in new file mode 100644 index 00000000..5f33ae49 --- /dev/null +++ b/package/neardal/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_NEARDAL + bool "neardal" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, glib2 + depends on BR2_USE_MMU # dbus + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_DBUS_GLIB + select BR2_PACKAGE_LIBEDIT + help + Provides a simple C API to exchange data with the neard NFC + manager daemon. + + https://github.com/connectivity/neardal + +if BR2_PACKAGE_NEARDAL + +config BR2_PACKAGE_NEARDAL_NCL + bool "ncl tool" + help + Build and install neardal ncl command line interpreter tool. + +endif + +comment "neardal needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/neardal/neardal.hash b/package/neardal/neardal.hash new file mode 100644 index 00000000..daee3f3e --- /dev/null +++ b/package/neardal/neardal.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 dae3c432e619a0d3102c5222d0b8fde74413ae519a64ccaae0fc81d31504aecb neardal-4143d130ed39299bfc59d08d2c7c77dbc7f809e9.tar.gz +sha256 296a87e9098d3f2ce1ef80c73c53399dc2c7412f35d4175c45810ea15ed86406 COPYING diff --git a/package/neardal/neardal.mk b/package/neardal/neardal.mk new file mode 100644 index 00000000..28e2850e --- /dev/null +++ b/package/neardal/neardal.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# neardal +# +################################################################################ + +NEARDAL_VERSION = 4143d130ed39299bfc59d08d2c7c77dbc7f809e9 +NEARDAL_SITE = $(call github,connectivity,neardal,$(NEARDAL_VERSION)) +NEARDAL_INSTALL_STAGING = YES +NEARDAL_LICENSE = LGPL-2.0 +NEARDAL_LICENSE_FILES = COPYING + +NEARDAL_DEPENDENCIES = host-pkgconf dbus dbus-glib libedit +NEARDAL_AUTORECONF = YES + +define NEARDAL_INSTALL_NCL + $(INSTALL) -m 0755 -D $(@D)/ncl/ncl $(TARGET_DIR)/usr/bin/ncl +endef + +ifeq ($(BR2_PACKAGE_NEARDAL_NCL),y) +NEARDAL_POST_INSTALL_TARGET_HOOKS += NEARDAL_INSTALL_NCL +endif + +$(eval $(autotools-package)) diff --git a/package/neofetch/Config.in b/package/neofetch/Config.in new file mode 100644 index 00000000..409466bc --- /dev/null +++ b/package/neofetch/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_NEOFETCH + bool "neofetch" + depends on BR2_USE_MMU # bash + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash + select BR2_PACKAGE_BASH # runtime dependency + help + Neofetch is a bash script to display system information, + including hardware, in a visually pleasing way. + + https://github.com/dylanaraps/neofetch diff --git a/package/neofetch/neofetch.hash b/package/neofetch/neofetch.hash new file mode 100644 index 00000000..09277151 --- /dev/null +++ b/package/neofetch/neofetch.hash @@ -0,0 +1,2 @@ +sha256 58a95e6b714e41efc804eca389a223309169b2def35e57fa934482a6b47c27e7 neofetch-7.1.0.tar.gz +sha256 fc3034b3dd3a08db109949b629210213bba52aa95455cbc5c2fefa2fc1183efe LICENSE.md diff --git a/package/neofetch/neofetch.mk b/package/neofetch/neofetch.mk new file mode 100644 index 00000000..4ea6c27b --- /dev/null +++ b/package/neofetch/neofetch.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# neofetch +# +################################################################################ + +NEOFETCH_VERSION = 7.1.0 +NEOFETCH_SITE = $(call github,dylanaraps,neofetch,$(NEOFETCH_VERSION)) +NEOFETCH_LICENSE = MIT +NEOFETCH_LICENSE_FILES = LICENSE.md + +define NEOFETCH_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/neofetch \ + $(TARGET_DIR)/usr/bin/neofetch +endef + +$(eval $(generic-package)) diff --git a/package/neon-2-sse/Config.in b/package/neon-2-sse/Config.in new file mode 100644 index 00000000..25613c5e --- /dev/null +++ b/package/neon-2-sse/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_NEON_2_SSE + bool "neon-2-sse" + help + The platform independent header allowing to compile any + C/C++ code containing ARM NEON intrinsic functions for + x86 target systems using SIMD up to SSE4 intrinsic + functions. + + https://github.com/intel/ARM_NEON_2_x86_SSE diff --git a/package/neon-2-sse/neon-2-sse.hash b/package/neon-2-sse/neon-2-sse.hash new file mode 100644 index 00000000..f964d2fa --- /dev/null +++ b/package/neon-2-sse/neon-2-sse.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 4567ca8c8cbc8ce0ea3ddb9dc0f158707eb85c631cb400fd7010cd299cdc5377 neon-2-sse-097a5ecacd527d5b5c3006e360fb9cb1c1c48a1f.tar.gz +# License files, locally calculated +sha256 7022f51b439a5915e933ecc270c83e24ca0cb2cceeb08b0132dcd4dbb03ed2dc LICENSE diff --git a/package/neon-2-sse/neon-2-sse.mk b/package/neon-2-sse/neon-2-sse.mk new file mode 100644 index 00000000..ee6f5446 --- /dev/null +++ b/package/neon-2-sse/neon-2-sse.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# neon-2-sse +# +################################################################################ + +NEON_2_SSE_VERSION = 097a5ecacd527d5b5c3006e360fb9cb1c1c48a1f +NEON_2_SSE_SITE = $(call github,intel,ARM_NEON_2_x86_SSE,$(NEON_2_SSE_VERSION)) +NEON_2_SSE_LICENSE = BSD-2-Clause +NEON_2_SSE_LICENSE_FILES = LICENSE +NEON_2_SSE_INSTALL_STAGING = YES +# Only installs a header +NEON_2_SSE_INSTALL_TARGET = NO + +$(eval $(cmake-package)) diff --git a/package/neon/Config.in b/package/neon/Config.in new file mode 100644 index 00000000..45348a7f --- /dev/null +++ b/package/neon/Config.in @@ -0,0 +1,43 @@ +config BR2_PACKAGE_NEON + bool "libneon" + help + HTTP and WebDAV client library, with a C interface. + + https://notroj.github.io/neon/ + +if BR2_PACKAGE_NEON + +config BR2_PACKAGE_NEON_ZLIB + bool "ZLIB support" + select BR2_PACKAGE_ZLIB + help + build with ZLIB support + +config BR2_PACKAGE_NEON_SSL + bool "SSL support" + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4 if BR2_PACKAGE_LIBOPENSSL + help + build with SSL support + +# This is an hidden symbol other packages can select to ensure that +# Neon has XML support, either provided by Expat or libxml2. +config BR2_PACKAGE_NEON_XML + bool + select BR2_PACKAGE_NEON_EXPAT if !BR2_PACKAGE_NEON_LIBXML2 + +config BR2_PACKAGE_NEON_EXPAT + bool "XML support with expat" + depends on !BR2_PACKAGE_NEON_LIBXML2 + select BR2_PACKAGE_EXPAT + help + Enable XML support in neon, using the Expat XML library. + +config BR2_PACKAGE_NEON_LIBXML2 + bool "XML support with libxml2" + select BR2_PACKAGE_LIBXML2 + help + Enable XML support in neon, using the libxml2 XML library. + +endif diff --git a/package/neon/neon.hash b/package/neon/neon.hash new file mode 100644 index 00000000..d773b0f3 --- /dev/null +++ b/package/neon/neon.hash @@ -0,0 +1,6 @@ +# Locally computed +sha256 659a5cc9cea05e6e7864094f1e13a77abbbdbab452f04d751a8c16a9447cf4b8 neon-0.33.0.tar.gz +# Hash for license files +sha256 6c4f5d59a60a66cc970642c0f3799cf03b40a81c9dccbc4a254f20487d143f74 README.md +sha256 d7bf9d064ac3e5840f9dd02422b7eeec4f1fd03f37fadbd043602be5e882304f src/COPYING.LIB +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad test/COPYING diff --git a/package/neon/neon.mk b/package/neon/neon.mk new file mode 100644 index 00000000..e7872df3 --- /dev/null +++ b/package/neon/neon.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# neon +# +################################################################################ + +NEON_VERSION = 0.33.0 +NEON_SITE = https://notroj.github.io/neon +NEON_LICENSE = LGPL-2.0+ (library), GPL-2.0+ (manual and tests) +NEON_LICENSE_FILES = src/COPYING.LIB test/COPYING README.md +NEON_CPE_ID_VENDOR = webdav +NEON_INSTALL_STAGING = YES +NEON_CONF_OPTS = --without-gssapi +NEON_CONFIG_SCRIPTS = neon-config +NEON_DEPENDENCIES = host-pkgconf $(TARGET_NLS_DEPENDENCIES) +NEON_CONF_ENV = ne_cv_libsfor_bindtextdomain=$(TARGET_NLS_LIBS) + +ifeq ($(BR2_PACKAGE_NEON_ZLIB),y) +NEON_CONF_OPTS += --with-zlib=$(STAGING_DIR) +NEON_DEPENDENCIES += zlib +else +NEON_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_NEON_SSL),y) +NEON_CONF_OPTS += --with-ssl +NEON_DEPENDENCIES += openssl +else +NEON_CONF_OPTS += --without-ssl +endif + +ifeq ($(BR2_PACKAGE_NEON_EXPAT),y) +NEON_CONF_OPTS += --with-expat=yes +NEON_DEPENDENCIES += expat +else +NEON_CONF_OPTS += --with-expat=no +endif + +ifeq ($(BR2_PACKAGE_NEON_LIBXML2),y) +NEON_CONF_OPTS += --with-libxml2=yes +NEON_CONF_ENV += ac_cv_prog_XML2_CONFIG=$(STAGING_DIR)/usr/bin/xml2-config +NEON_DEPENDENCIES += libxml2 +else +NEON_CONF_OPTS += --with-libxml2=no +endif + +ifeq ($(BR2_PACKAGE_NEON_EXPAT)$(BR2_PACKAGE_NEON_LIBXML2),) +# webdav needs xml support +NEON_CONF_OPTS += --disable-webdav +endif + +$(eval $(autotools-package)) diff --git a/package/nerdctl/Config.in b/package/nerdctl/Config.in new file mode 100644 index 00000000..062b36ab --- /dev/null +++ b/package/nerdctl/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_NERDCTL + bool "nerdctl" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_TOOLCHAIN_USES_UCLIBC # containerd + depends on BR2_USE_MMU # util-linux + select BR2_PACKAGE_CONTAINERD # runtime + select BR2_PACKAGE_HOST_GO + help + Docker-compatible CLI for containerd, controlling runc. + + https://github.com/containerd/nerdctl + +comment "nerdctl needs a glibc or musl toolchain w/ threads" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_UCLIBC diff --git a/package/nerdctl/nerdctl.hash b/package/nerdctl/nerdctl.hash new file mode 100644 index 00000000..eabb9cf1 --- /dev/null +++ b/package/nerdctl/nerdctl.hash @@ -0,0 +1,3 @@ +# Computed locally +sha256 6037a0ce445d765d4fc411f7ee0a9e5ff616ea5b737e3a6b9a22a857073231e6 nerdctl-1.7.3-go2.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/nerdctl/nerdctl.mk b/package/nerdctl/nerdctl.mk new file mode 100644 index 00000000..66b22df6 --- /dev/null +++ b/package/nerdctl/nerdctl.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# nerdctl +# +################################################################################ + +NERDCTL_VERSION = 1.7.3 +NERDCTL_SITE = $(call github,containerd,nerdctl,v$(NERDCTL_VERSION)) + +NERDCTL_LICENSE = Apache-2.0 +NERDCTL_LICENSE_FILES = LICENSE + +NERDCTL_GOMOD = github.com/containerd/nerdctl + +NERDCTL_LDFLAGS = \ + -X $(NERDCTL_GOMOD)/pkg/version.Version=$(NERDCTL_VERSION) + +NERDCTL_BUILD_TARGETS = cmd/nerdctl + +$(eval $(golang-package)) diff --git a/package/net-tools/Config.in b/package/net-tools/Config.in new file mode 100644 index 00000000..5e24bd1b --- /dev/null +++ b/package/net-tools/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_NET_TOOLS + bool "net-tools" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + A collection of programs that form the base set of the NET-3 + networking distribution for the Linux operating system. + Includes: arp, hostname, ifconfig, netstat, rarp, route, + plipconfig, slattach, mii-tool, iptunnel and ipmaddr. + + http://sourceforge.net/projects/net-tools/ diff --git a/package/net-tools/net-tools.hash b/package/net-tools/net-tools.hash new file mode 100644 index 00000000..fdc30fa2 --- /dev/null +++ b/package/net-tools/net-tools.hash @@ -0,0 +1,6 @@ +# From http://sourceforge.net/projects/net-tools/files/ +sha1 4080baab0486dc882c3b293d5559c27251ae4268 net-tools-2.10.tar.xz +md5 78aae762c95e2d731faf88d482e4cde5 net-tools-2.10.tar.xz +# Locally computed +sha256 b262435a5241e89bfa51c3cabd5133753952f7a7b7b93f32e08cb9d96f580d69 net-tools-2.10.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/net-tools/net-tools.mk b/package/net-tools/net-tools.mk new file mode 100644 index 00000000..0744bf18 --- /dev/null +++ b/package/net-tools/net-tools.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# net-tools +# +################################################################################ + +NET_TOOLS_VERSION = 2.10 +NET_TOOLS_SOURCE = net-tools-$(NET_TOOLS_VERSION).tar.xz +NET_TOOLS_SITE = http://downloads.sourceforge.net/project/net-tools +NET_TOOLS_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) +NET_TOOLS_LICENSE = GPL-2.0+ +NET_TOOLS_LICENSE_FILES = COPYING +NET_TOOLS_CPE_ID_VALID = YES + +define NET_TOOLS_CONFIGURE_CMDS + (cd $(@D); yes "" | ./configure.sh config.in ) +endef + +# Enable I18N when appropiate +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +define NET_TOOLS_ENABLE_I18N + $(SED) 's:I18N 0:I18N 1:' $(@D)/config.h +endef +endif + +# Enable IPv6 +define NET_TOOLS_ENABLE_IPV6 + $(SED) 's:_AFINET6 0:_AFINET6 1:' $(@D)/config.h +endef + +NET_TOOLS_POST_CONFIGURE_HOOKS += NET_TOOLS_ENABLE_I18N NET_TOOLS_ENABLE_IPV6 + +define NET_TOOLS_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) \ + LDFLAGS="$(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)" \ + $(MAKE) -C $(@D) +endef + +# ifconfig & route reside in /sbin for busybox, so ensure we don't end +# up with two versions of those. +define NET_TOOLS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install + mv -f $(TARGET_DIR)/bin/ifconfig $(TARGET_DIR)/sbin/ifconfig + mv -f $(TARGET_DIR)/bin/route $(TARGET_DIR)/sbin/route +endef + +$(eval $(generic-package)) diff --git a/package/netatalk/Config.in b/package/netatalk/Config.in new file mode 100644 index 00000000..225d5891 --- /dev/null +++ b/package/netatalk/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_NETATALK + bool "netatalk" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_BERKELEYDB + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_CAST if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBEVENT + select BR2_PACKAGE_LIBGCRYPT + select BR2_PACKAGE_LIBGPG_ERROR + help + Netatalk can be used to turn a *NIX machine into an + extremely high-performance and reliable file server for + Macintosh computers. + + http://netatalk.sourceforge.net/ + +comment "netatalk needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/netatalk/S50netatalk b/package/netatalk/S50netatalk new file mode 100644 index 00000000..287b20d7 --- /dev/null +++ b/package/netatalk/S50netatalk @@ -0,0 +1,33 @@ +#!/bin/sh +# +# Start netatalk +# + +start() { + echo "Starting Netatalk" + start-stop-daemon -S -q -p /var/run/netatalk.pid --exec /usr/sbin/netatalk +} + +stop(){ + echo "Stopping Netatalk" + start-stop-daemon -K -q -p /var/run/netatalk.pid +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + start + stop + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? + diff --git a/package/netatalk/netatalk.hash b/package/netatalk/netatalk.hash new file mode 100644 index 00000000..9ab5d604 --- /dev/null +++ b/package/netatalk/netatalk.hash @@ -0,0 +1,7 @@ +# From http://sourceforge.net/projects/netatalk/files/netatalk/3.1.18/ +md5 b1caff4e1da534d8ca57d688c7fa3ce1 netatalk-3.1.18.tar.xz +sha1 cbd92c95d04cfd4a9f49977970501a623310c2d9 netatalk-3.1.18.tar.xz +# Locally computed +sha256 3941effcc2c4e0dceecabc763fbb8478a2f2fbe0af4a6314983cfea452df8d47 netatalk-3.1.18.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 7599ae145e53be03a08f8b558b2f2e0c828e1630f1843cc04f41981b8cefcd65 COPYRIGHT diff --git a/package/netatalk/netatalk.mk b/package/netatalk/netatalk.mk new file mode 100644 index 00000000..53cd5387 --- /dev/null +++ b/package/netatalk/netatalk.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# netatalk +# +################################################################################ + +NETATALK_VERSION = 3.1.18 +NETATALK_SITE = http://downloads.sourceforge.net/project/netatalk/netatalk-$(subst .,-,$(NETATALK_VERSION)) +NETATALK_SOURCE = netatalk-$(NETATALK_VERSION).tar.xz +NETATALK_CONFIG_SCRIPTS = netatalk-config +NETATALK_DEPENDENCIES = host-pkgconf openssl berkeleydb libgcrypt libgpg-error \ + libevent +NETATALK_LICENSE = GPL-2.0+, LGPL-3.0+, MIT-like +NETATALK_LICENSE_FILES = COPYING COPYRIGHT +NETATALK_CPE_ID_VENDOR = netatalk + +# Don't run ldconfig! +NETATALK_CONF_ENV += CC="$(TARGET_CC) -std=gnu99" \ + ac_cv_path_NETA_LDCONFIG="" +NETATALK_CONF_OPTS += \ + --with-cnid-cdb-backend \ + --with-bdb=$(STAGING_DIR)/usr \ + --with-ssl-dir=$(STAGING_DIR)/usr \ + --with-libgcrypt-dir=$(STAGING_DIR)/usr \ + --with-shadow \ + --disable-shell-check \ + --without-kerberos \ + --without-pam \ + --with-libevent=no \ + --with-dtrace=no \ + --with-mysql-config=no + +ifeq ($(BR2_PACKAGE_ACL),y) +NETATALK_DEPENDENCIES += acl +else +NETATALK_CONF_OPTS += --with-acls=no +endif + +ifeq ($(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_DBUS),yy) +NETATALK_DEPENDENCIES += avahi +NETATALK_CONF_OPTS += --enable-zeroconf=$(STAGING_DIR)/usr +else +NETATALK_CONF_OPTS += --disable-zeroconf +endif + +ifeq ($(BR2_PACKAGE_CUPS),y) +NETATALK_DEPENDENCIES += cups +NETATALK_CONF_ENV += ac_cv_path_CUPS_CONFIG=$(STAGING_DIR)/usr/bin/cups-config +NETATALK_CONF_OPTS += --enable-cups +else +NETATALK_CONF_OPTS += --disable-cups +endif + +define NETATALK_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/netatalk/S50netatalk \ + $(TARGET_DIR)/etc/init.d/S50netatalk +endef + +$(eval $(autotools-package)) diff --git a/package/netcalc/Config.in b/package/netcalc/Config.in new file mode 100644 index 00000000..897cb872 --- /dev/null +++ b/package/netcalc/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_NETCALC + bool "netcalc" + help + netcalc (40 kiB) is a slimmed down version of sipcalc + using the popular output format of ipcalc. Both IPv4 + and IPv6 are supported. + + https://github.com/troglobit/netcalc/ diff --git a/package/netcalc/netcalc.hash b/package/netcalc/netcalc.hash new file mode 100644 index 00000000..7a9f2000 --- /dev/null +++ b/package/netcalc/netcalc.hash @@ -0,0 +1,5 @@ +# From https://github.com/troglobit/netcalc/releases/tag/v2.1.7 +sha256 7300ceac519dd14a8431d27339359f064eb5d80bdd7307ecb1b1cb1b0ab42969 netcalc-2.1.7.tar.gz + +# Locally computed +sha256 c9462bef0a7f70323f782e10def048ea0bb281d35e93dd0de896ea9805856015 LICENSE diff --git a/package/netcalc/netcalc.mk b/package/netcalc/netcalc.mk new file mode 100644 index 00000000..4d69deee --- /dev/null +++ b/package/netcalc/netcalc.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# netcalc +# +################################################################################ + +NETCALC_VERSION = 2.1.7 +NETCALC_SITE = https://github.com/troglobit/netcalc/releases/download/v$(NETCALC_VERSION) +NETCALC_LICENSE = BSD-3-Clause +NETCALC_LICENSE_FILES = LICENSE +NETCALC_CONF_OPTS = --disable-ipcalc-symlink + +$(eval $(autotools-package)) diff --git a/package/netcat-openbsd/Config.in b/package/netcat-openbsd/Config.in new file mode 100644 index 00000000..beaa8ed4 --- /dev/null +++ b/package/netcat-openbsd/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_NETCAT_OPENBSD + bool "netcat-openbsd" + depends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS + depends on !BR2_STATIC_LIBS # libbsd + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + select BR2_PACKAGE_LIBBSD + help + A simple Unix utility which reads and writes data across + network connections using TCP or UDP protocol. It is + designed to be a reliable "back-end" tool that can be used + directly or easily driven by other programs and scripts. At + the same time it is a feature-rich network debugging and + exploration tool, since it can create almost any kind of + connection you would need and has several interesting + built-in capabilities. + + This package contains the OpenBSD rewrite of netcat, + including support for IPv6, proxies, and Unix sockets. + + https://packages.debian.org/sid/netcat-openbsd + +comment "netcat-openbsd needs a glibc toolchain w/ dynamic library, threads, headers >= 3.12" + depends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/package/netcat-openbsd/netcat-openbsd.hash b/package/netcat-openbsd/netcat-openbsd.hash new file mode 100644 index 00000000..e55dea53 --- /dev/null +++ b/package/netcat-openbsd/netcat-openbsd.hash @@ -0,0 +1,6 @@ +# From http://snapshot.debian.org/archive/debian/20211206T030211Z/pool/main/n/netcat-openbsd/netcat-openbsd_1.218-3.dsc +sha256 a28a5d39abaf481747b1e78b4b50e96d0cdab0ffef289cba156dc11941c64857 netcat-openbsd_1.218.orig.tar.gz +sha256 19229ebc825d12cd805843228c498cc881dcef127a9d680fcfbd8cb2da966161 netcat-openbsd_1.218-3.debian.tar.xz + +# Hash for license file +sha256 acfd1d822ee2e8e0b196c7a369383d0cb9bc131b56c3c95976a32498728fe1e3 netcat.c diff --git a/package/netcat-openbsd/netcat-openbsd.mk b/package/netcat-openbsd/netcat-openbsd.mk new file mode 100644 index 00000000..311f8aa8 --- /dev/null +++ b/package/netcat-openbsd/netcat-openbsd.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# netcat-openbsd +# +################################################################################ + +NETCAT_OPENBSD_VERSION = 1.218 +NETCAT_OPENBSD_SOURCE = netcat-openbsd_$(NETCAT_OPENBSD_VERSION).orig.tar.gz +NETCAT_OPENBSD_PATCH = netcat-openbsd_$(NETCAT_OPENBSD_VERSION)-3.debian.tar.xz +NETCAT_OPENBSD_SITE = http://snapshot.debian.org/archive/debian/20211206T030211Z/pool/main/n/netcat-openbsd +NETCAT_OPENBSD_LICENSE = BSD-3-Clause +NETCAT_OPENBSD_LICENSE_FILES = netcat.c +NETCAT_OPENBSD_DEPENDENCIES = host-pkgconf libbsd + +define NETCAT_OPENBSD_APPLY_DEBIAN_PATCHES + if [ -d $(@D)/debian/patches ]; then \ + $(APPLY_PATCHES) $(@D) $(@D)/debian/patches *.dpatch; \ + fi +endef + +NETCAT_OPENBSD_POST_PATCH_HOOKS += NETCAT_OPENBSD_APPLY_DEBIAN_PATCHES + +define NETCAT_OPENBSD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define NETCAT_OPENBSD_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -D $(@D)/nc $(TARGET_DIR)/usr/bin/nc +endef + +$(eval $(generic-package)) diff --git a/package/netcat/0001-signed-bit-counting.patch b/package/netcat/0001-signed-bit-counting.patch new file mode 100644 index 00000000..e29da311 --- /dev/null +++ b/package/netcat/0001-signed-bit-counting.patch @@ -0,0 +1,30 @@ +# Fix the endian-specific bit-counting code so that it works. +# SF:1068324 "netcat_flag_count() fix" +# http://sourceforge.net/tracker/?func=detail&aid=1205729&group_id=52204&atid=466046 +# SF:1205729 "doen't work on arm linux platform": +# http://sourceforge.net/tracker/?func=detail&aid=1068324&group_id=52204&atid=466046 + +Index: netcat-0.7.1/src/flagset.c +=================================================================== +--- netcat-0.7.1.orig/src/flagset.c 2010-07-19 13:51:46.000000000 +0100 ++++ netcat-0.7.1/src/flagset.c 2010-07-19 13:52:27.000000000 +0100 +@@ -134,7 +134,7 @@ + + int netcat_flag_count(void) + { +- register char c; ++ register unsigned char c; + register int i; + int ret = 0; + +@@ -154,8 +154,8 @@ + Assumed that the bit number 1 is the sign, and that we will shift the + bit 1 (or the bit that takes its place later) until the the most right, + WHY it has to keep the wrong sign? */ +- ret -= (c >> 7); +- c <<= 1; ++ ret += c&1; ++ c>>=1; + } + } + diff --git a/package/netcat/Config.in b/package/netcat/Config.in new file mode 100644 index 00000000..26bc7fa4 --- /dev/null +++ b/package/netcat/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_NETCAT + bool "netcat" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + Netcat is a featured networking utility which reads and + writes data across network connections, using the TCP/IP + protocol. + It is designed to be a reliable "back-end" tool that can be + used directly or easily driven by other programs and + scripts. At the same time, it is a feature-rich network + debugging and exploration tool, since it can create almost + any kind of connection you would need and has several + interesting built-in capabilities. + + http://netcat.sourceforge.net/download.php diff --git a/package/netcat/netcat.hash b/package/netcat/netcat.hash new file mode 100644 index 00000000..d591f3d6 --- /dev/null +++ b/package/netcat/netcat.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 30719c9a4ffbcf15676b8f528233ccc54ee6cba96cb4590975f5fd60c68a066f netcat-0.7.1.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/netcat/netcat.mk b/package/netcat/netcat.mk new file mode 100644 index 00000000..c9d7952e --- /dev/null +++ b/package/netcat/netcat.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# netcat +# +################################################################################ + +NETCAT_VERSION = 0.7.1 +NETCAT_SITE = http://downloads.sourceforge.net/project/netcat/netcat/$(NETCAT_VERSION) +NETCAT_LICENSE = GPL-2.0+ +NETCAT_LICENSE_FILES = COPYING +NETCAT_CPE_ID_VALID = YES + +$(eval $(autotools-package)) diff --git a/package/netdata/Config.in b/package/netdata/Config.in new file mode 100644 index 00000000..d17b5e89 --- /dev/null +++ b/package/netdata/Config.in @@ -0,0 +1,43 @@ +config BR2_PACKAGE_NETDATA + bool "netdata" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # libuv + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libuv + select BR2_PACKAGE_LIBUV + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_ZLIB + help + Netdata is distributed, real-time, performance and health + monitoring for systems and applications. It is a highly + optimized monitoring agent you install on all your systems and + containers. + + https://github.com/netdata/netdata + +if BR2_PACKAGE_NETDATA + +config BR2_PACKAGE_NETDATA_PROMETHEUS + bool "prometheus remote write backend" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP # protobuf, snappy + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # protobuf + select BR2_PACKAGE_PROTOBUF + select BR2_PACKAGE_SNAPPY + help + Enable prometheus remote write backend + +comment "prometheus remote write backend needs a toolchain w/ C++, gcc >= 4.8" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + +endif + +comment "netdata needs a toolchain w/ NPTL, dynamic library, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 diff --git a/package/netdata/S60netdata b/package/netdata/S60netdata new file mode 100644 index 00000000..421f0715 --- /dev/null +++ b/package/netdata/S60netdata @@ -0,0 +1,55 @@ +#!/bin/sh + +DAEMON="netdata" +PIDFILE="/var/run/$DAEMON.pid" + +NETDATA_ARGS="-u root -P $PIDFILE" + +# Create needed directories. +mkdir -p /var/cache/$DAEMON /var/lib/$DAEMON /var/log/$DAEMON + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -p "$PIDFILE" -x "/usr/sbin/$DAEMON" \ + -- $NETDATA_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/netdata/netdata.hash b/package/netdata/netdata.hash new file mode 100644 index 00000000..bc33a8b8 --- /dev/null +++ b/package/netdata/netdata.hash @@ -0,0 +1,5 @@ +# From https://github.com/netdata/netdata/releases/download/v1.33.1/sha256sums.txt +sha256 20ba8695d87187787b27128ac3aab9b09aa29ca6b508c48542e0f7d50ec9322b netdata-v1.33.1.tar.gz + +# Locally calculated +sha256 0e5fd9d833efe9b79f784d1903281554af82d1b4261af67d35455728e5572aa6 LICENSE diff --git a/package/netdata/netdata.mk b/package/netdata/netdata.mk new file mode 100644 index 00000000..4bc573df --- /dev/null +++ b/package/netdata/netdata.mk @@ -0,0 +1,100 @@ +################################################################################ +# +# netdata +# +################################################################################ + +NETDATA_VERSION = 1.33.1 +NETDATA_SOURCE = netdata-v$(NETDATA_VERSION).tar.gz +NETDATA_SITE = \ + https://github.com/netdata/netdata/releases/download/v$(NETDATA_VERSION) +NETDATA_LICENSE = GPL-3.0+ +NETDATA_LICENSE_FILES = LICENSE +NETDATA_CPE_ID_VENDOR = netdata +NETDATA_CONF_OPTS = \ + --disable-cloud \ + --disable-dbengine \ + --disable-ebpf \ + --disable-ml \ + --disable-unit-tests +NETDATA_DEPENDENCIES = libuv util-linux zlib + +# ac_cv_prog_cc_c99 is required for BR2_USE_WCHAR=n because the C99 test +# provided by autoconf relies on wchar_t. +NETDATA_CONF_ENV = ac_cv_prog_cc_c99=-std=gnu99 + +ifeq ($(BR2_ENABLE_LTO),y) +NETDATA_CONF_OPTS += --enable-lto +else +NETDATA_CONF_OPTS += --disable-lto +endif + +ifeq ($(BR2_PACKAGE_CUPS),y) +NETDATA_CONF_OPTS += --enable-plugin-cups +NETDATA_DEPENDENCIES += cups +else +NETDATA_CONF_OPTS += --disable-plugin-cups +endif + +ifeq ($(BR2_PACKAGE_FREEIPMI),y) +NETDATA_CONF_OPTS += --enable-plugin-freeipmi +NETDATA_DEPENDENCIES += freeipmi +else +NETDATA_CONF_OPTS += --disable-plugin-freeipmi +endif + +ifeq ($(BR2_PACKAGE_JSON_C),y) +NETDATA_CONF_OPTS += --enable-jsonc +NETDATA_DEPENDENCIES += json-c +else +NETDATA_CONF_OPTS += --disable-jsonc +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +NETDATA_CONF_OPTS += --with-libcap +NETDATA_DEPENDENCIES += libcap +else +NETDATA_CONF_OPTS += --without-libcap +endif + +ifeq ($(BR2_PACKAGE_LZ4),y) +NETDATA_CONF_OPTS += --enable-compression +NETDATA_DEPENDENCIES += lz4 +else +NETDATA_CONF_OPTS += --disable-compression +endif + +ifeq ($(BR2_PACKAGE_NFACCT),y) +NETDATA_CONF_OPTS += --enable-plugin-nfacct +NETDATA_DEPENDENCIES += nfacct +else +NETDATA_CONF_OPTS += --disable-plugin-nfacct +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +NETDATA_CONF_OPTS += --enable-https +NETDATA_DEPENDENCIES += openssl +else +NETDATA_CONF_OPTS += --disable-https +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +NETDATA_CONF_ENV += LIBS=-latomic +endif + +ifeq ($(BR2_PACKAGE_NETDATA_PROMETHEUS),y) +# Override the result of AC_PATH_PROG([CXX_BINARY], [${CXX}], [no]) +# which fails because CXX is set to the full CXX binary path +NETDATA_CONF_ENV += ac_cv_path_CXX_BINARY=yes +NETDATA_CONF_OPTS += --enable-backend-prometheus-remote-write +NETDATA_DEPENDENCIES += protobuf snappy +else +NETDATA_CONF_OPTS += --disable-backend-prometheus-remote-write +endif + +define NETDATA_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/netdata/S60netdata \ + $(TARGET_DIR)/etc/init.d/S60netdata +endef + +$(eval $(autotools-package)) diff --git a/package/nethogs/Config.in b/package/nethogs/Config.in new file mode 100644 index 00000000..fe5a4cdb --- /dev/null +++ b/package/nethogs/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_NETHOGS + bool "nethogs" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_NCURSES + help + NetHogs is a small 'net top' tool. Instead of breaking the + traffic down per protocol or per subnet, like most tools + do, it groups bandwidth by process. + + https://github.com/raboof/nethogs + +comment "nethogs needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/nethogs/nethogs.hash b/package/nethogs/nethogs.hash new file mode 100644 index 00000000..fd1f2362 --- /dev/null +++ b/package/nethogs/nethogs.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 957d6afcc220dfbba44c819162f44818051c5b4fb793c47ba98294393986617d nethogs-0.8.7.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/nethogs/nethogs.mk b/package/nethogs/nethogs.mk new file mode 100644 index 00000000..98c4f5f0 --- /dev/null +++ b/package/nethogs/nethogs.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# nethogs +# +################################################################################ + +NETHOGS_VERSION = 0.8.7 +NETHOGS_SITE = $(call github,raboof,nethogs,v$(NETHOGS_VERSION)) +NETHOGS_LICENSE = GPL-2.0+ +NETHOGS_LICENSE_FILES = COPYING +NETHOGS_DEPENDENCIES = libpcap ncurses + +define NETHOGS_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) nethogs +endef + +define NETHOGS_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/src/nethogs $(TARGET_DIR)/usr/sbin/nethogs +endef + +$(eval $(generic-package)) diff --git a/package/netifrc/Config.in b/package/netifrc/Config.in new file mode 100644 index 00000000..9347033d --- /dev/null +++ b/package/netifrc/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_NETIFRC + bool "netifrc" + depends on BR2_PACKAGE_OPENRC + help + netifrc is a collection of modules created to configure and + manage network interfaces via individual, per-interface + scripts. + + https://wiki.gentoo.org/wiki/Netifrc + +comment "netifrc needs openrc as init system" + depends on !BR2_PACKAGE_OPENRC diff --git a/package/netifrc/netifrc.hash b/package/netifrc/netifrc.hash new file mode 100644 index 00000000..e92c3940 --- /dev/null +++ b/package/netifrc/netifrc.hash @@ -0,0 +1,3 @@ +# Calculated manually +sha256 ad6578bf0c08eac474fa7b557beda0aed1032bef410a01f0493395cd6568128e netifrc-0.7.3.tar.gz +sha256 da376c9e2244f2a7220767ea4dd88cf423ff5b548e7c2f96b0f3b9dac727748a LICENSE diff --git a/package/netifrc/netifrc.mk b/package/netifrc/netifrc.mk new file mode 100644 index 00000000..dfa1c96b --- /dev/null +++ b/package/netifrc/netifrc.mk @@ -0,0 +1,58 @@ +################################################################################ +# +# netifrc +# +################################################################################ + +NETIFRC_VERSION = 0.7.3 +NETIFRC_SITE = $(call github,gentoo,netifrc,$(NETIFRC_VERSION)) +NETIFRC_LICENSE = BSD-2-Clause +NETIFRC_LICENSE_FILES = LICENSE + +NETIFRC_DEPENDENCIES = openrc + +# set LIBNAME so netifrc puts files in proper directories and sets proper +# paths in installed files. Since in buildroot /lib64 and /lib32 always +# points to /lib, it's safe to hardcode it to "lib" +NETIFRC_MAKE_OPTS = \ + LIBNAME=lib \ + UDEVDIR=/lib/udev \ + LIBEXECDIR=/usr/libexec/netifrc + +define NETIFRC_BUILD_CMDS + $(MAKE) $(NETIFRC_MAKE_OPTS) -C $(@D) +endef + +ifeq ($(BR2_PACKAGE_HAS_UDEV),) +define NETIFRC_REMOVE_UDEV + $(RM) $(TARGET_DIR)/lib/udev/net.sh + $(RM) $(TARGET_DIR)/lib/udev/rules.d/90-network.rules + rmdir --ignore-fail-on-non-empty $(TARGET_DIR)/lib/udev/rules.d + rmdir --ignore-fail-on-non-empty $(TARGET_DIR)/lib/udev +endef +endif # BR2_PACKAGE_HAS_UDEV + +NETIFRC_DHCP_IFACE = $(call qstrip,$(BR2_SYSTEM_DHCP)) +ifneq ($(NETIFRC_DHCP_IFACE),) +NETIFRC_DHCP_CFG = config_$(NETIFRC_DHCP_IFACE)="dhcp" +define NETIFRC_DHCP_SERVICE + ln -sf net.lo $(TARGET_DIR)/etc/init.d/net.$(NETIFRC_DHCP_IFACE) + ln -sf /etc/init.d/net.$(NETIFRC_DHCP_IFACE) \ + $(TARGET_DIR)/etc/runlevels/default/net.$(NETIFRC_DHCP_IFACE) +endef +endif # BR2_SYSTEM_DHCP != "" + +define NETIFRC_NET_CFG + config_lo="127.0.0.1/8" + $(NETIFRC_DHCP_CFG) +endef + +define NETIFRC_INSTALL_TARGET_CMDS + $(MAKE) $(NETIFRC_MAKE_OPTS) DESTDIR=$(TARGET_DIR) -C $(@D) install + $(NETIFRC_REMOVE_UDEV) + $(call PRINTF,$(NETIFRC_NET_CFG)) > $(TARGET_DIR)/etc/conf.d/net + ln -sf /etc/init.d/net.lo $(TARGET_DIR)/etc/runlevels/default/net.lo + $(NETIFRC_DHCP_SERVICE) +endef + +$(eval $(generic-package)) diff --git a/package/netopeer2/Config.in b/package/netopeer2/Config.in new file mode 100644 index 00000000..db31a786 --- /dev/null +++ b/package/netopeer2/Config.in @@ -0,0 +1,36 @@ +comment "netopeer2 needs a toolchain w/ gcc >= 4.8, C++, threads, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +config BR2_PACKAGE_NETOPEER2 + bool "netopeer2" + depends on BR2_USE_MMU # libnetconf2, libssh, sysrepo + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libyang + depends on !BR2_STATIC_LIBS # libnetconf2, libssh, libyang, sysrepo + depends on BR2_INSTALL_LIBSTDCPP # sysrepo + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # sysrepo + select BR2_PACKAGE_LIBNETCONF2 + select BR2_PACKAGE_LIBSSH + select BR2_PACKAGE_LIBSSH_SERVER # For libnetconf2 to have SSH + select BR2_PACKAGE_LIBYANG + select BR2_PACKAGE_OPENSSL # For libnetconf2 to have TLS + select BR2_PACKAGE_SYSREPO + help + Netopeer2 is a set of tools implementing network configuration + tools based on the NETCONF Protocol. + + This is the server part. + + https://github.com/CESNET/Netopeer2 + +if BR2_PACKAGE_NETOPEER2 + +config BR2_PACKAGE_NETOPEER2_CLI + bool "cli" + help + Enable netopeer2 CLI. + +endif diff --git a/package/netopeer2/S52netopeer2 b/package/netopeer2/S52netopeer2 new file mode 100644 index 00000000..cadd6b9f --- /dev/null +++ b/package/netopeer2/S52netopeer2 @@ -0,0 +1,50 @@ +#!/bin/sh + +DAEMON="netopeer2-server" +PIDFILE="/var/run/$DAEMON.pid" + +NETOPEER2_SERVER_ARGS="" + +start() { + printf 'Starting %s: ' "$DAEMON" + + start-stop-daemon -S -q -p $PIDFILE -x "/usr/sbin/$DAEMON" \ + -- $NETOPEER2_SERVER_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p $PIDFILE + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +reload() { + # we do not support real reload .. just restart + restart +} + +case "$1" in + start|stop|restart|reload) + "$1";; + *) + echo "Usage: $0 {start|stop|restart|reload}" +esac diff --git a/package/netopeer2/netopeer2.hash b/package/netopeer2/netopeer2.hash new file mode 100644 index 00000000..6a278fbb --- /dev/null +++ b/package/netopeer2/netopeer2.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2b1daac037f18c303e0c0dc3318ba30196459472e4c59f2f8547ee74d4cdf31d netopeer2-2.1.49.tar.gz +sha256 b46f161fbdcf127d3ef22602e15958c3092fe3294f71a2dc8cdf8f6689cba95b LICENSE diff --git a/package/netopeer2/netopeer2.mk b/package/netopeer2/netopeer2.mk new file mode 100644 index 00000000..47fcd31a --- /dev/null +++ b/package/netopeer2/netopeer2.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# netopeer2 +# +################################################################################ + +NETOPEER2_VERSION = 2.1.49 +NETOPEER2_SITE = $(call github,CESNET,Netopeer2,v$(NETOPEER2_VERSION)) +NETOPEER2_DL_SUBDIR = netopeer2 +NETOPEER2_LICENSE = BSD-3-Clause +NETOPEER2_LICENSE_FILES = LICENSE +NETOPEER2_DEPENDENCIES = libnetconf2 libyang sysrepo host-sysrepo + +ifeq ($(BR2_INIT_SYSTEMD),y) +NETOPEER2_DEPENDENCIES += systemd +endif + +NETOPEER2_CONF_OPTS = \ + -DBUILD_CLI=$(if $(BR2_PACKAGE_NETOPEER2_CLI),ON,OFF) \ + -DENABLE_TESTS=OFF + +# Set a build specific SYSREPO_SHM_PREFIX to ensure we can safely delete the +# files. This also ensures that concurrent parallel builds will not be +# affected mutualy. +NETOPEER2_SYSREPO_SHM_PREFIX = sr_buildroot$(subst /,_,$(CONFIG_DIR))_netopeer2 + +NETOPEER2_MAKE_ENV = \ + SYSREPOCTL_EXECUTABLE=$(HOST_DIR)/bin/sysrepoctl \ + SYSREPO_SHM_PREFIX=$(NETOPEER2_SYSREPO_SHM_PREFIX) + +define NETOPEER2_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/netopeer2/S52netopeer2 \ + $(TARGET_DIR)/etc/init.d/S52netopeer2 +endef + +# The host sysrepo used to install the netopeer2 modules will leave +# its shared memory files lingering about. Clean up in its stead... +# We need to clean up both before and after installation, to catch +# the case of a previous build that failed before we run that hook. +define NETOPEER2_CLEANUP + rm -f /dev/shm/$(NETOPEER2_SYSREPO_SHM_PREFIX)* +endef +NETOPEER2_PRE_INSTALL_TARGET_HOOKS += NETOPEER2_CLEANUP +NETOPEER2_POST_INSTALL_TARGET_HOOKS += NETOPEER2_CLEANUP + +$(eval $(cmake-package)) diff --git a/package/netperf/0001-src-nettest_omni.c-fix-compilation-with-GCC10.patch b/package/netperf/0001-src-nettest_omni.c-fix-compilation-with-GCC10.patch new file mode 100644 index 00000000..261dfe9a --- /dev/null +++ b/package/netperf/0001-src-nettest_omni.c-fix-compilation-with-GCC10.patch @@ -0,0 +1,42 @@ +From b2fd0f324002d0cf52ae905b2a469bf1067f182a Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 5 Sep 2020 14:30:20 +0200 +Subject: [PATCH] src/nettest_omni.c: fix compilation with GCC10 + +GCC10 defaults to -fno-common, which breaks compilation when there are +multiple definitions of implicit "extern" variables. Remove the extra +definitions. + +Fix #42 + +Signed-off-by: Tony Ambardar +[Retrieved from: +https://github.com/openwrt/packages/blob/master/net/netperf/patches/010-gcc10_multiple_definition_fix.patch] +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/HewlettPackard/netperf/pull/48] +--- + src/nettest_omni.c | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/src/nettest_omni.c b/src/nettest_omni.c +index 852eeb1..862088a 100644 +--- a/src/nettest_omni.c ++++ b/src/nettest_omni.c +@@ -458,14 +458,6 @@ static int client_port_max = 65535; + + /* different options for the sockets */ + +-int +- loc_nodelay, /* don't/do use NODELAY locally */ +- rem_nodelay, /* don't/do use NODELAY remotely */ +- loc_sndavoid, /* avoid send copies locally */ +- loc_rcvavoid, /* avoid recv copies locally */ +- rem_sndavoid, /* avoid send copies remotely */ +- rem_rcvavoid; /* avoid recv_copies remotely */ +- + extern int + loc_tcpcork, + rem_tcpcork, +-- +2.28.0 + diff --git a/package/netperf/Config.in b/package/netperf/Config.in new file mode 100644 index 00000000..a935fde5 --- /dev/null +++ b/package/netperf/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_NETPERF + bool "netperf" + help + Network performance benchmark tool + + https://hewlettpackard.github.io/netperf/ diff --git a/package/netperf/netperf.hash b/package/netperf/netperf.hash new file mode 100644 index 00000000..47730855 --- /dev/null +++ b/package/netperf/netperf.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 842af17655835c8be7203808c3393e6cb327a8067f3ed1f1053eb78b4e40375a netperf-2.7.0.tar.bz2 +sha256 dc874b3047b6259336431e813961fb6c5945561c6ad7a732aa8531a3c6b1a9fa COPYING diff --git a/package/netperf/netperf.mk b/package/netperf/netperf.mk new file mode 100644 index 00000000..85f6bce0 --- /dev/null +++ b/package/netperf/netperf.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# netperf +# +################################################################################ + +NETPERF_VERSION = 2.7.0 +NETPERF_SITE = http://sources.buildroot.org/netperf +NETPERF_SOURCE = netperf-$(NETPERF_VERSION).tar.bz2 +# gcc 5+ defaults to gnu99 which breaks netperf +NETPERF_CONF_ENV = \ + ac_cv_func_setpgrp_void=set \ + CFLAGS="$(TARGET_CFLAGS) -std=gnu89" +NETPERF_CONF_OPTS = --enable-demo=yes +NETPERF_LICENSE = netperf license +NETPERF_LICENSE_FILES = COPYING + +define NETPERF_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 $(@D)/src/netperf \ + $(TARGET_DIR)/usr/bin/netperf + $(INSTALL) -m 0755 $(@D)/src/netserver \ + $(TARGET_DIR)/usr/bin/netserver +endef + +$(eval $(autotools-package)) diff --git a/package/netplug/0001-makefile-flags.patch b/package/netplug/0001-makefile-flags.patch new file mode 100644 index 00000000..b2468f8c --- /dev/null +++ b/package/netplug/0001-makefile-flags.patch @@ -0,0 +1,21 @@ +Preserve the cflags settings, because buildroot clobbers them. + +--- a/Makefile 2010-10-05 00:06:38.000000000 -0700 ++++ b/Makefile 2010-10-05 00:15:27.000000000 -0700 +@@ -11,11 +11,14 @@ mandir ?= $(prefix)/usr/share/man + + install_opts := + +-CFLAGS += -Wall -std=gnu99 -DNP_ETC_DIR='"$(etcdir)"' \ ++NETPLUG_CFLAGS += -Wall -std=gnu99 -DNP_ETC_DIR='"$(etcdir)"' \ + -DNP_SCRIPT_DIR='"$(scriptdir)"' -ggdb3 -O3 -DNP_VERSION='"$(version)"' + ++%.o: %.c ++ $(CC) $(NETPLUG_CFLAGS) $(CFLAGS) -c -o $@ $< ++ + netplugd: config.o netlink.o lib.o if_info.o main.o +- $(CC) $(LDFLAGS) -o $@ $^ ++ $(CC) $(LDFLAGS) -o $@ $(NETPLUG_CFLAGS) $^ + + install: + install -d $(install_opts) -m 755 \ diff --git a/package/netplug/0002-add-missing-time-include.patch b/package/netplug/0002-add-missing-time-include.patch new file mode 100644 index 00000000..f204c924 --- /dev/null +++ b/package/netplug/0002-add-missing-time-include.patch @@ -0,0 +1,20 @@ +Add missing include + +netplug.h uses time_t, so it must include . This fixes a build +issue with the musl C library. + +Signed-off-by: Thomas Petazzoni + +Index: b/netplug.h +=================================================================== +--- a/netplug.h ++++ b/netplug.h +@@ -20,7 +20,7 @@ + #ifndef __netplug_h + #define __netplug_h + +- ++#include + #include + #include + #include diff --git a/package/netplug/0003-remove-assert-fail.patch b/package/netplug/0003-remove-assert-fail.patch new file mode 100644 index 00000000..635c462a --- /dev/null +++ b/package/netplug/0003-remove-assert-fail.patch @@ -0,0 +1,51 @@ +Remove __assert_fail() + +The netplug code uses the assert() macro in various places. In glibc +internally, assert() uses a function called __assert_fail() to print a +message and abort. Relying on internal glibc details, netplug +re-defines __assert_fail() in the hope that it will get called instead +of glibc internal version. + +This attempt: + + * Doesn't work with uClibc, which doesn't use any __assert_fail() + function at all. It doesn't fail to build, but it is entirely + useless. + + * Fails to build with musl, which also defines __assert_fail(), but + with a different prototype. + +We simply remove the __assert_fail() implementation, so that the C +library implementation of assert() just does its normal work. The only +functionality lost is that the message is displayed on the standard +output rather than in netplug's logs (and this was only working with +glibc anyway). + +Signed-off-by: Thomas Petazzoni + +Index: b/lib.c +=================================================================== +--- a/lib.c ++++ b/lib.c +@@ -199,21 +199,6 @@ + return x; + } + +- +-void +-__assert_fail(const char *assertion, const char *file, +- unsigned int line, const char *function) +-{ +- do_log(LOG_CRIT, "%s:%u: %s%sAssertion `%s' failed", +- file, line, +- function ? function : "", +- function ? ": " : "", +- assertion); +- +- abort(); +-} +- +- + /* + * Local variables: + * c-file-style: "stroustrup" diff --git a/package/netplug/Config.in b/package/netplug/Config.in new file mode 100644 index 00000000..593c08a9 --- /dev/null +++ b/package/netplug/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_NETPLUG + bool "netplug" + depends on BR2_USE_MMU # fork() + help + A Linux daemon that manages network interfaces in + response to network cables being plugged in and out. + + http://www.red-bean.com/~bos/ diff --git a/package/netplug/S29netplug b/package/netplug/S29netplug new file mode 100644 index 00000000..cef0e6a9 --- /dev/null +++ b/package/netplug/S29netplug @@ -0,0 +1,70 @@ +#!/bin/sh +# +# netplugd This shell script takes care of starting and stopping +# the network plug management daemon. +# +# chkconfig: - 11 89 +# description: netplugd is a daemon for managing non-static network \ +# interfaces. +# processname: netplugd +# pidfile: /var/run/netplugd.pid + +# Copyright 2003 Key Research, Inc. + +# Create needed directories +mkdir -p /var/lock/subsys + +# Source function library. +if [ -f /etc/init.d/functions ]; then + . /etc/init.d/functions +elif [ -f /etc/rc.d/init.d/functions ]; then + . /etc/rc.d/init.d/functions +fi + +# Source networking configuration. +if [ -f /etc/default/network ]; then + . /etc/default/network + + # Check that networking is up. + [ "${NETWORKING}" = "no" ] && exit 0 +elif [ ! -f /etc/network/interfaces ]; then + # No network support + exit 0 +fi + +if [ -f /etc/default/netplugd ]; then + . /etc/default/netplugd +fi + +# See how we were called. +case "$1" in + start) + # Start daemon. + printf "Starting network plug daemon: " + start-stop-daemon -S -q -x /sbin/netplugd -- -p /var/run/netplugd.pid ${NETPLUGDARGS} + RETVAL=$? + echo + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/netplugd + ;; + stop) + # Stop daemon. + printf "Shutting down network plug daemon: " + start-stop-daemon -K -q -p /var/run/netplugd.pid + RETVAL=$? + echo + [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/netplugd + ;; + restart|reload) + $0 stop + $0 start + ;; + condrestart) + [ -f /var/lock/subsys/netplugd ] && $0 restart || : + ;; + *) + echo "Usage: $0 {start|stop|restart}" + RETVAL=1 + ;; +esac + +exit $RETVAL diff --git a/package/netplug/netplug-script b/package/netplug/netplug-script new file mode 100755 index 00000000..1af714d6 --- /dev/null +++ b/package/netplug/netplug-script @@ -0,0 +1,57 @@ +#!/bin/sh +# +# netplug - policy agent for netplugd +# +# Copyright 2003 Key Research, Inc. +# +# This program 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. You are forbidden from +# redistributing or modifying it under the terms of any other license, +# including other versions of the GNU General Public License. +# +# 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. + + +PATH=/usr/bin:/bin:/usr/sbin:/sbin +export PATH + +dev="$1" +action="$2" + +case "$action" in +in) + if [ -x /sbin/ifup ]; then + exec /sbin/ifup $dev + else + echo "Please teach me how to plug in an interface!" 1>&2 + exit 1 + fi + ;; +out) + if [ -x /sbin/ifdown ]; then + # At least on Fedora Core 1, the call to ip addr flush infloops + # /sbin/ifdown $dev && exec /sbin/ip addr flush $dev + exec /sbin/ifdown $dev + else + echo "Please teach me how to unplug an interface!" 1>&2 + exit 1 + fi + ;; +probe) + # exec /sbin/ip link set $dev up >/dev/null 2>&1 + if [ -x /sbin/ifconfig ]; then + exec /sbin/ifconfig $dev up >/dev/null 2>&1 + else + echo "Failed to probe an interface!" 1>&2 + exit 1 + fi + ;; +*) + echo "I have been called with a funny action of '%s'!" 1>&2 + exit 1 + ;; +esac diff --git a/package/netplug/netplug.hash b/package/netplug/netplug.hash new file mode 100644 index 00000000..a0d2317a --- /dev/null +++ b/package/netplug/netplug.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 5180dfd9a7d3d0633a027b0a04f01b45a6a64623813cd48bd54423b90814864e netplug-1.2.9.2.tar.bz2 +sha256 08ce3ddda499d6befdc80161c7cc82e90da05c31eb1047dae41ef531d5170e9b COPYING diff --git a/package/netplug/netplug.mk b/package/netplug/netplug.mk new file mode 100644 index 00000000..b5083120 --- /dev/null +++ b/package/netplug/netplug.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# netplug +# +################################################################################ + +NETPLUG_VERSION = 1.2.9.2 +NETPLUG_SOURCE = netplug-$(NETPLUG_VERSION).tar.bz2 +NETPLUG_SITE = http://www.red-bean.com/~bos/netplug +NETPLUG_LICENSE = GPL-2.0 +NETPLUG_LICENSE_FILES = COPYING + +define NETPLUG_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define NETPLUG_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install +endef + +define NETPLUG_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/netplug/S29netplug \ + $(TARGET_DIR)/etc/init.d/S29netplug +endef + +define NETPLUG_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/netplug/netplug.service \ + $(TARGET_DIR)/usr/lib/systemd/system/netplug.service +endef + +$(eval $(generic-package)) diff --git a/package/netplug/netplug.service b/package/netplug/netplug.service new file mode 100644 index 00000000..017a21f3 --- /dev/null +++ b/package/netplug/netplug.service @@ -0,0 +1,10 @@ +[Unit] +Description=Network cable hotplug management daemon +After=syslog.target network.target + +[Service] +ExecStart=/sbin/netplugd -F +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/netsniff-ng/0001-Detect-libpcap-dependencies-using-pkg-config.patch b/package/netsniff-ng/0001-Detect-libpcap-dependencies-using-pkg-config.patch new file mode 100644 index 00000000..bbcbd2bf --- /dev/null +++ b/package/netsniff-ng/0001-Detect-libpcap-dependencies-using-pkg-config.patch @@ -0,0 +1,51 @@ +From 194ec61843b9598ce90873c812b817c4b96e2e0d Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Thu, 2 Sep 2021 12:56:00 +0300 +Subject: [PATCH] Detect libpcap dependencies using pkg-config + +When building statically the link command line must include all +dependencies of all libraries. libpcap can optionally depend on libnl. +mausezahn can't build statically in this case. + +Use pkg-config in configure and in the link command to construct the +library flags we need to link with libpcap. + +Signed-off-by: Baruch Siach +Signed-off-by: Tobias Klauser +--- +Upstream status: commit 194ec61843b9598ce90873c812b817c4b96e2e0d + + configure | 4 +++- + mausezahn/Makefile | 2 +- + 2 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/configure b/configure +index 510826a798f5..598ae2433a7a 100755 +--- a/configure ++++ b/configure +@@ -588,7 +588,9 @@ int main(void) + } + EOF + +- $CC -o $TMPDIR/pcaptest $TMPDIR/pcaptest.c -lpcap >> config.log 2>&1 ++ $CC -o $TMPDIR/pcaptest $TMPDIR/pcaptest.c \ ++ $($PKG_CONFIG --libs libpcap 2>> config.log) \ ++ >> config.log 2>&1 + if [ ! -x $TMPDIR/pcaptest ] ; then + echo "[NO]" + echo "CONFIG_LIBPCAP=0" >> Config +diff --git a/mausezahn/Makefile b/mausezahn/Makefile +index ca16b6579583..9544565355cc 100644 +--- a/mausezahn/Makefile ++++ b/mausezahn/Makefile +@@ -1,6 +1,6 @@ + mausezahn-libs = -lcli \ + -lnet \ +- -lpcap \ ++ $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKG_CONFIG) --libs libpcap 2> /dev/null ) \ + -lrt \ + -lpthread \ + -lm +-- +2.33.0 + diff --git a/package/netsniff-ng/Config.in b/package/netsniff-ng/Config.in new file mode 100644 index 00000000..489d0b6f --- /dev/null +++ b/package/netsniff-ng/Config.in @@ -0,0 +1,36 @@ +config BR2_PACKAGE_NETSNIFF_NG + bool "netsniff-ng" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # pthread_spin_lock + depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP # liburcu + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_LIBNETFILTER_CONNTRACK + select BR2_PACKAGE_LIBURCU + help + netsniff-ng is a free, performant Linux network analyzer and + networking toolkit. If you will, the Swiss army knife for + network packets. + + http://netsniff-ng.org + +if BR2_PACKAGE_NETSNIFF_NG + +config BR2_PACKAGE_NETSNIFF_NG_MAUSEZAHN + bool "mausezahn" + default y + # Build with uClibc fails due to missing ceill() + depends on !BR2_TOOLCHAIN_USES_UCLIBC + select BR2_PACKAGE_LIBCLI + select BR2_PACKAGE_LIBNET + +comment "mausezahn needs glibc or musl toolchain" + depends on BR2_TOOLCHAIN_USES_UCLIBC + +endif + +comment "netsniff-ng needs a toolchain w/ NPTL, C++, headers >= 3.0" + depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 diff --git a/package/netsniff-ng/netsniff-ng.hash b/package/netsniff-ng/netsniff-ng.hash new file mode 100644 index 00000000..40b015cb --- /dev/null +++ b/package/netsniff-ng/netsniff-ng.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking signature +sha256 77d17d4158faf1d93c7d922a1bd7f093a8b437bd658292c830708540e10894ba netsniff-ng-0.6.8.tar.xz +# Locally computed +sha256 b353349ba51e0d4b59cf2f188f0c285296e154ce8c58954bc5e0dc0282a4db2d README +sha256 8f6d85366f3763557d6ddd0637988b9ba11edef354e3c9302fff4262a235c387 COPYING diff --git a/package/netsniff-ng/netsniff-ng.mk b/package/netsniff-ng/netsniff-ng.mk new file mode 100644 index 00000000..2b5b19b2 --- /dev/null +++ b/package/netsniff-ng/netsniff-ng.mk @@ -0,0 +1,72 @@ +################################################################################ +# +# netsniff-ng +# +################################################################################ + +NETSNIFF_NG_VERSION = 0.6.8 +NETSNIFF_NG_SITE = http://pub.netsniff-ng.org/netsniff-ng +NETSNIFF_NG_SOURCE = netsniff-ng-$(NETSNIFF_NG_VERSION).tar.xz +NETSNIFF_NG_LICENSE = GPL-2.0 +NETSNIFF_NG_LICENSE_FILES = README COPYING +# Prevent netsniff-ng configure script from finding a host installed nacl +NETSNIFF_NG_CONF_ENV = \ + NACL_INC_DIR=/dev/null \ + NACL_LIB_DIR=/dev/null +NETSNIFF_NG_DEPENDENCIES = host-pkgconf libpcap libnetfilter_conntrack liburcu +NETSNIFF_NG_CONF_OPTS = --prefix=$(TARGET_DIR)/usr + +ifeq ($(BR2_PACKAGE_NETSNIFF_NG_MAUSEZAHN),y) +NETSNIFF_NG_DEPENDENCIES += libcli libnet +NETSNIFF_NG_BUILD_MAKE_TARGET = all +NETSNIFF_NG_INSTALL_MAKE_TARGET = install +else +NETSNIFF_NG_BUILD_MAKE_TARGET = allbutmausezahn +NETSNIFF_NG_INSTALL_MAKE_TARGET = install_allbutmausezahn +endif + +ifeq ($(BR2_PACKAGE_GEOIP),y) +NETSNIFF_NG_DEPENDENCIES += geoip +else +NETSNIFF_NG_CONF_OPTS += --disable-geoip +endif + +ifeq ($(BR2_PACKAGE_LIBNL),y) +NETSNIFF_NG_DEPENDENCIES += libnl +else +NETSNIFF_NG_CONF_OPTS += --disable-libnl +endif + +ifeq ($(BR2_PACKAGE_NCURSES),y) +NETSNIFF_NG_DEPENDENCIES += ncurses +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +NETSNIFF_NG_DEPENDENCIES += zlib +else +NETSNIFF_NG_CONF_OPTS += --disable-zlib +endif + +# hand-written configure script and makefile +define NETSNIFF_NG_CONFIGURE_CMDS + (cd $(@D); \ + $(NETSNIFF_NG_CONF_ENV) \ + $(TARGET_CONFIGURE_ARGS) \ + $(TARGET_CONFIGURE_OPTS) \ + ./configure \ + $(NETSNIFF_NG_CONF_OPTS) \ + ) +endef + +define NETSNIFF_NG_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + $(NETSNIFF_NG_BUILD_MAKE_TARGET) +endef + +define NETSNIFF_NG_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + PREFIX=$(TARGET_DIR)/usr ETCDIR=$(TARGET_DIR)/etc \ + -C $(@D) $(NETSNIFF_NG_INSTALL_MAKE_TARGET) +endef + +$(eval $(generic-package)) diff --git a/package/netsnmp/0001-snmp_agent-disallow-SET-with-NULL-varbind.patch b/package/netsnmp/0001-snmp_agent-disallow-SET-with-NULL-varbind.patch new file mode 100644 index 00000000..3a6321d7 --- /dev/null +++ b/package/netsnmp/0001-snmp_agent-disallow-SET-with-NULL-varbind.patch @@ -0,0 +1,72 @@ +From b07627fa67c686b07d1eab123cf3e4887a2a93aa Mon Sep 17 00:00:00 2001 +From: Bill Fenner +Date: Fri, 25 Nov 2022 08:41:24 -0800 +Subject: [PATCH] snmp_agent: disallow SET with NULL varbind + +Upstream: https://github.com/net-snmp/net-snmp/commit/4589352dac3ae111c7621298cf231742209efd9b + +[Thomas: this commit was merged as part of +https://github.com/net-snmp/net-snmp/pull/490/commits, which fixes +https://github.com/net-snmp/net-snmp/issues/474 (CVE-2022-44792) and +https://github.com/net-snmp/net-snmp/issues/475 (CVE-2022-44793). The +other two commits merged as part of this pull request are related to +adding a non-regression test for this, which is not relevant for the +security fix itself.] + +Signed-off-by: Thomas Petazzoni +--- + agent/snmp_agent.c | 32 ++++++++++++++++++++++++++++++++ + 1 file changed, 32 insertions(+) + +diff --git a/agent/snmp_agent.c b/agent/snmp_agent.c +index 867d0c166f..3f678fe2df 100644 +--- a/agent/snmp_agent.c ++++ b/agent/snmp_agent.c +@@ -3719,12 +3719,44 @@ netsnmp_handle_request(netsnmp_agent_session *asp, int status) + return 1; + } + ++static int ++check_set_pdu_for_null_varbind(netsnmp_agent_session *asp) ++{ ++ int i; ++ netsnmp_variable_list *v = NULL; ++ ++ for (i = 1, v = asp->pdu->variables; v != NULL; i++, v = v->next_variable) { ++ if (v->type == ASN_NULL) { ++ /* ++ * Protect SET implementations that do not protect themselves ++ * against wrong type. ++ */ ++ DEBUGMSGTL(("snmp_agent", "disallowing SET with NULL var for varbind %d\n", i)); ++ asp->index = i; ++ return SNMP_ERR_WRONGTYPE; ++ } ++ } ++ return SNMP_ERR_NOERROR; ++} ++ + int + handle_pdu(netsnmp_agent_session *asp) + { + int status, inclusives = 0; + netsnmp_variable_list *v = NULL; + ++#ifndef NETSNMP_NO_WRITE_SUPPORT ++ /* ++ * Check for ASN_NULL in SET request ++ */ ++ if (asp->pdu->command == SNMP_MSG_SET) { ++ status = check_set_pdu_for_null_varbind(asp); ++ if (status != SNMP_ERR_NOERROR) { ++ return status; ++ } ++ } ++#endif /* NETSNMP_NO_WRITE_SUPPORT */ ++ + /* + * for illegal requests, mark all nodes as ASN_NULL + */ +-- +2.41.0 + diff --git a/package/netsnmp/Config.in b/package/netsnmp/Config.in new file mode 100644 index 00000000..dff0f18b --- /dev/null +++ b/package/netsnmp/Config.in @@ -0,0 +1,61 @@ +config BR2_PACKAGE_NETSNMP + bool "netsnmp" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + help + Suite of applications used to implement SNMP v1, SNMP v2c, and + SNMP v3 using both IPv4 and IPv6. + + http://net-snmp.sourceforge.net/ + +if BR2_PACKAGE_NETSNMP + +config BR2_PACKAGE_NETSNMP_SERVER + bool "server" + default y + help + The snmpd server. + +config BR2_PACKAGE_NETSNMP_CLIENTS + bool "clients" + default y + help + The net-snmp clients (snmpget, snmpwalk, etc). + +config BR2_PACKAGE_NETSNMP_ENABLE_MIBS + bool "Install MIB files on target and enable MIB loading code" + default y + help + The net-snmp package contains a selection of MIB files. + Say yes if you want those MIB files installed on the target + and enable the code that parses the MIB files. + +config BR2_PACKAGE_NETSNMP_WITH_MIB_MODULES + string "Build with these MIB modules" + default "host ucd-snmp/dlmod agentx" if !BR2_STATIC_LIBS + default "host agentx" if BR2_STATIC_LIBS + help + Specify which MIB modules to include. + +config BR2_PACKAGE_NETSNMP_WITHOUT_MIB_MODULES + string "Build without these MIB modules" + default "disman/event disman/schedule utilities" + help + Specify which MIB modules to exclude. + +config BR2_PACKAGE_NETSNMP_ENABLE_DEBUGGING + bool "Enable debugging code" + help + By default net-snmp is compiled without debugging support + (--disable-debugging). Enable this options if you need + debugging support, including the ability to log with + DEBUGMSG(), DEBUGMSGTL() and companion macros. + +config BR2_PACKAGE_NETSNMP_OPENSSL_INTERNAL + bool "Enable minimal internal OpenSSL code" + depends on !BR2_PACKAGE_OPENSSL + help + Enable a minimal internal copy of OpenSSL usable for USM + security. It will not enable the usage of SNMP over (D)TLS. + +endif diff --git a/package/netsnmp/S59snmpd b/package/netsnmp/S59snmpd new file mode 100644 index 00000000..aece8966 --- /dev/null +++ b/package/netsnmp/S59snmpd @@ -0,0 +1,104 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: snmpd snmptrapd +# Required-Start: $network $local_fs +# Required-Stop: $network $local_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 6 +# Short-Description: SNMP agents +# Description: NET SNMP (Simple Network Management Protocol) Agents +### END INIT INFO +# +# Author: Jochen Friedrich +# + +export PATH=/sbin:/usr/sbin:/bin:/usr/bin + +# Defaults +export MIBDIRS=/usr/share/snmp/mibs +SNMPDRUN=yes +SNMPDOPTS='-Lsd -Lf /dev/null -p /var/run/snmpd.pid -u snmp -g snmp 127.0.0.1' +TRAPDRUN=no +TRAPDOPTS='-Lsd -p /var/run/snmptrapd.pid' + +# Reads config file (will override defaults above) +[ -r /etc/default/snmpd ] && . /etc/default/snmpd + +ssd_oknodo="-o" + +# Cd to / before starting any daemons. +cd / + +# Create compatibility link to old AgentX socket location +if [ "$SNMPDCOMPAT" = "yes" ]; then + ln -sf /var/agentx/master /var/run/agentx +fi + +start() { + if [ "$SNMPDRUN" = "yes" -a -f /etc/snmp/snmpd.conf ]; then + printf "Starting SNMP daemon: " + start-stop-daemon -q -S -x /usr/sbin/snmpd -- $SNMPDOPTS + [ $? = 0 ] && echo "OK" || echo "FAIL" + fi + + if [ "$TRAPDRUN" = "yes" -a -f /etc/snmp/snmptrapd.conf ]; then + printf "Starting SNMP trap daemon: " + start-stop-daemon -q -S -x /usr/sbin/snmptrapd -- $TRAPDOPTS + [ $? = 0 ] && echo "OK" || echo "FAIL" + fi +} + +stop() { + if [ "$SNMPDRUN" = "yes" -a -f /etc/snmp/snmpd.conf ]; then + printf "Stopping SNMP daemon: " + start-stop-daemon -q -K $ssd_oknodo -x /usr/sbin/snmpd + [ $? = 0 ] && echo "OK" || echo "FAIL" + fi + + if [ "$TRAPDRUN" = "yes" -a -f /etc/snmp/snmptrapd.conf ]; then + printf "Stopping SNMP trap daemon: " + start-stop-daemon -q -K $ssd_oknodo -x /usr/sbin/snmptrapd + [ $? = 0 ] && echo "OK" || echo "FAIL" + fi +} + +reload() { + if [ "$SNMPDRUN" = "yes" -a -f /etc/snmp/snmpd.conf ]; then + printf "Reloading SNMP daemon: " + start-stop-daemon -q -K -s 1 -p /var/run/snmpd.pid -x /usr/sbin/snmpd + [ $? = 0 ] && echo "OK" || echo "FAIL" + fi + + if [ "$TRAPDRUN" = "yes" -a -f /etc/snmp/snmptrapd.conf ]; then + printf "Reloading SNMP trap daemon: " + start-stop-daemon -q -K -s 1 -p /var/run/snmptrapd.pid -x /usr/sbin/snmptrapd + [ $? = 0 ] && echo "OK" || echo "FAIL" + fi +} + +case "$1" in + start) + start + ;; + + stop) + stop + ;; + + restart) + stop + # Allow the daemons time to exit completely. + sleep 2 + start + ;; + + reload|force-reload) + reload + ;; + + *) + echo "Usage: $0 {start|stop|restart|reload|force-reload}" + exit 1 +esac + +exit 0 diff --git a/package/netsnmp/netsnmp.hash b/package/netsnmp/netsnmp.hash new file mode 100644 index 00000000..e1e9d108 --- /dev/null +++ b/package/netsnmp/netsnmp.hash @@ -0,0 +1,7 @@ +# Locally calculated after checking pgp signature at +# https://sourceforge.net/projects/net-snmp/files/net-snmp/5.9.3/net-snmp-5.9.3.tar.gz.asc +# using key D0F8F495DA6160C44EFFBF10F07B9D2DACB19FD6 +sha256 2097f29b7e1bf3f1300b4bae52fa2308d0bb8d5d3998dbe02f9462a413a2ef0a net-snmp-5.9.3.tar.gz + +# Hash for license file +sha256 ed869ea395a1f125819a56676385ab0557a21507764bf56f2943302011381e59 COPYING diff --git a/package/netsnmp/netsnmp.mk b/package/netsnmp/netsnmp.mk new file mode 100644 index 00000000..6575ff1a --- /dev/null +++ b/package/netsnmp/netsnmp.mk @@ -0,0 +1,129 @@ +################################################################################ +# +# netsnmp +# +################################################################################ + +NETSNMP_VERSION = 5.9.3 +NETSNMP_SITE = https://downloads.sourceforge.net/project/net-snmp/net-snmp/$(NETSNMP_VERSION) +NETSNMP_SOURCE = net-snmp-$(NETSNMP_VERSION).tar.gz +NETSNMP_LICENSE = Various BSD-like +NETSNMP_LICENSE_FILES = COPYING +NETSNMP_CPE_ID_VENDOR = net-snmp +NETSNMP_CPE_ID_PRODUCT = $(NETSNMP_CPE_ID_VENDOR) +# 0001-snmp_agent-disallow-SET-with-NULL-varbind.patch +NETSNMP_IGNORE_CVES = \ + CVE-2022-44792 \ + CVE-2022-44793 +NETSNMP_SELINUX_MODULES = snmp +NETSNMP_INSTALL_STAGING = YES +NETSNMP_CONF_ENV = \ + ac_cv_NETSNMP_CAN_USE_SYSCTL=no \ + ac_cv_path_PSPROG=/bin/ps +NETSNMP_CONF_OPTS = \ + --with-persistent-directory=/var/lib/snmp \ + --with-defaults \ + --enable-mini-agent \ + --without-rpm \ + --with-logfile=none \ + --without-kmem-usage \ + --enable-as-needed \ + --without-perl-modules \ + --disable-embedded-perl \ + --disable-perl-cc-checks \ + --disable-scripts \ + --with-default-snmp-version="1" \ + --enable-silent-libtool \ + --enable-mfd-rewrites \ + --with-sys-contact="root@localhost" \ + --with-sys-location="Unknown" \ + --with-mib-modules="$(call qstrip,$(BR2_PACKAGE_NETSNMP_WITH_MIB_MODULES))" \ + --with-out-mib-modules="$(call qstrip,$(BR2_PACKAGE_NETSNMP_WITHOUT_MIB_MODULES))" \ + --disable-manuals +NETSNMP_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) LIB_LDCONFIG_CMD=true install +NETSNMP_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) LIB_LDCONFIG_CMD=true install +NETSNMP_MAKE = $(MAKE1) +NETSNMP_CONFIG_SCRIPTS = net-snmp-config +# We're patching configure.d/config_project_types +NETSNMP_AUTORECONF = YES + +define NETSNMP_USERS + snmp -1 snmp -1 * - - - snmpd user +endef + +ifeq ($(BR2_INIT_SYSTEMD),y) +NETSNMP_CONF_OPTS += --with-systemd +else +NETSNMP_CONF_OPTS += --without-systemd +endif + +ifeq ($(BR2_ENDIAN),"BIG") +NETSNMP_CONF_OPTS += --with-endianness=big +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 += host-pkgconf openssl +NETSNMP_CONF_OPTS += \ + --with-openssl=$(STAGING_DIR)/usr/include/openssl \ + --with-security-modules="tsm,usm" \ + --with-transports="DTLSUDP,TLSTCP" +NETSNMP_CONF_ENV += LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl` +else ifeq ($(BR2_PACKAGE_NETSNMP_OPENSSL_INTERNAL),y) +NETSNMP_CONF_OPTS += --with-openssl=internal +else +NETSNMP_CONF_OPTS += --without-openssl +endif + +# There's no option to forcibly enable or disable it +ifeq ($(BR2_PACKAGE_PCIUTILS),y) +NETSNMP_DEPENDENCIES += pciutils +endif + +# For ucd-snmp/lmsensorsMib +ifeq ($(BR2_PACKAGE_LM_SENSORS),y) +NETSNMP_DEPENDENCIES += lm-sensors +endif + +ifneq ($(BR2_PACKAGE_NETSNMP_ENABLE_MIBS),y) +NETSNMP_CONF_OPTS += --disable-mib-loading +NETSNMP_CONF_OPTS += --disable-mibs +endif + +ifneq ($(BR2_PACKAGE_NETSNMP_ENABLE_DEBUGGING),y) +NETSNMP_CONF_OPTS += --disable-debugging +endif + +ifeq ($(BR2_PACKAGE_NETSNMP_SERVER),y) +NETSNMP_CONF_OPTS += --enable-agent +else +NETSNMP_CONF_OPTS += --disable-agent +endif + +ifeq ($(BR2_PACKAGE_NETSNMP_CLIENTS),y) +NETSNMP_CONF_OPTS += --enable-applications +else +NETSNMP_CONF_OPTS += --disable-applications +endif + +ifeq ($(BR2_PACKAGE_NETSNMP_SERVER),y) +define NETSNMP_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/netsnmp/S59snmpd \ + $(TARGET_DIR)/etc/init.d/S59snmpd +endef +define NETSNMP_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/netsnmp/snmpd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/snmpd.service +endef +endif + +$(eval $(autotools-package)) diff --git a/package/netsnmp/snmpd.service b/package/netsnmp/snmpd.service new file mode 100644 index 00000000..6647b10c --- /dev/null +++ b/package/netsnmp/snmpd.service @@ -0,0 +1,15 @@ +[Unit] +Description=SNMP Daemon +After=network.target +ConditionPathExists=/etc/snmp/snmpd.conf + +[Service] +Type=simple +Environment=MIBDIRS=/usr/share/snmp/mibs +Environment=SNMPDOPTS='-Lsd -Lf /dev/null -p /var/run/snmpd.pid -u snmp -g snmp 127.0.0.1' +EnvironmentFile=-/etc/default/snmpd +PassEnvironment=MIBDIRS +ExecStart=/usr/sbin/snmpd -f $SNMPDOPTS + +[Install] +WantedBy=multi-user.target diff --git a/package/netstat-nat/Config.in b/package/netstat-nat/Config.in new file mode 100644 index 00000000..6afcf89e --- /dev/null +++ b/package/netstat-nat/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_NETSTAT_NAT + bool "netstat-nat" + help + Displays NAT connections + + http://tweegy.nl/projects/netstat-nat/ diff --git a/package/netstat-nat/netstat-nat.hash b/package/netstat-nat/netstat-nat.hash new file mode 100644 index 00000000..7530b8a0 --- /dev/null +++ b/package/netstat-nat/netstat-nat.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 e945faa283a49f33af15de915a949c9273a230fc17154925364c547adab676ca netstat-nat-1.4.10.tar.gz +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING diff --git a/package/netstat-nat/netstat-nat.mk b/package/netstat-nat/netstat-nat.mk new file mode 100644 index 00000000..0d16579a --- /dev/null +++ b/package/netstat-nat/netstat-nat.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# netstat-nat +# +################################################################################ + +NETSTAT_NAT_VERSION = 1.4.10 +NETSTAT_NAT_SITE = http://tweegy.nl/download +NETSTAT_NAT_LICENSE = GPL-2.0+ +NETSTAT_NAT_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/netsurf-buildsystem/netsurf-buildsystem.hash b/package/netsurf-buildsystem/netsurf-buildsystem.hash new file mode 100644 index 00000000..9da8c67a --- /dev/null +++ b/package/netsurf-buildsystem/netsurf-buildsystem.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 b8620c6a95ccf071046cdb8e4e0ca149cdd58d292eb9ee02b3b0d63646466b72 netsurf-buildsystem-7574b41345968b5f7e9ca5875faccb1478ce0555-git4.tar.gz +sha256 b2ddc1d607332423f6cf415b2ac619a1c03dd565facdc39a571282a520929a65 llvm/LICENSE.TXT diff --git a/package/netsurf-buildsystem/netsurf-buildsystem.mk b/package/netsurf-buildsystem/netsurf-buildsystem.mk new file mode 100644 index 00000000..d4efec0e --- /dev/null +++ b/package/netsurf-buildsystem/netsurf-buildsystem.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# netsurf-buildsystem +# +################################################################################ + +NETSURF_BUILDSYSTEM_VERSION = 7574b41345968b5f7e9ca5875faccb1478ce0555 +NETSURF_BUILDSYSTEM_SITE = http://git.netsurf-browser.org/buildsystem.git +NETSURF_BUILDSYSTEM_SITE_METHOD = git +NETSURF_BUILDSYSTEM_LICENSE = MIT, BSD-3-Clause (for llvm/* files) +NETSURF_BUILDSYSTEM_LICENSE_FILES = llvm/LICENSE.TXT + +NETSURF_BUILDSYSTEM_INSTALL_DIR = $(HOST_DIR)/share/netsurf-buildsystem + +define HOST_NETSURF_BUILDSYSTEM_INSTALL_CMDS + mkdir -p $(NETSURF_BUILDSYSTEM_INSTALL_DIR) + cp -dpfr $(@D)/* $(NETSURF_BUILDSYSTEM_INSTALL_DIR) +endef + +$(eval $(host-generic-package)) diff --git a/package/netsurf/0001-avoid-system-perl-dependencies.patch b/package/netsurf/0001-avoid-system-perl-dependencies.patch new file mode 100644 index 00000000..979ddafc --- /dev/null +++ b/package/netsurf/0001-avoid-system-perl-dependencies.patch @@ -0,0 +1,29 @@ +From b42e4b5bfca030965dcfca993a47a6ddaa941287 Mon Sep 17 00:00:00 2001 +From: Francois Perrad +Date: Sun, 25 Nov 2018 18:27:54 +0100 +Subject: [PATCH] avoid system perl dependencies + +this subroutine format is used for android target. +with eval the load of HTML::Entities is deferred. + +Signed-off-by: Francois Perrad +--- + netsurf/utils/split-messages.pl | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/netsurf/utils/split-messages.pl b/netsurf/utils/split-messages.pl +index 4b50dde..e47dded 100644 +--- a/netsurf/utils/split-messages.pl ++++ b/netsurf/utils/split-messages.pl +@@ -311,7 +311,7 @@ TXT + sub footer { qq|| } + sub format + { +- use HTML::Entities qw(encode_entities); ++ eval q|use HTML::Entities qw(encode_entities);|; + my $escaped = encode_entities( $_[1], '<>&"' ); + qq| $escaped\n|; + } +-- +2.17.1 + diff --git a/package/netsurf/0002-do-not-cross-compile-nsgenbind.patch b/package/netsurf/0002-do-not-cross-compile-nsgenbind.patch new file mode 100644 index 00000000..7caad47a --- /dev/null +++ b/package/netsurf/0002-do-not-cross-compile-nsgenbind.patch @@ -0,0 +1,32 @@ +From 2419ad79b25fcc1746178aba609fddbb0aa8c9e0 Mon Sep 17 00:00:00 2001 +From: Francois Perrad +Date: Sat, 1 Dec 2018 16:10:13 +0100 +Subject: [PATCH] build nsgenbind for the build machine + +The nsgenbind tool is meant to be executed on the build machine during +the build, so it should not be built with the cross-compiler, but with +the native compiler. + +Signed-off-by: Francois Perrad +[Fabrice: add quotes around BUILD_CC to fix build with ccache] +Signed-off-by: Fabrice Fontaine +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index f279f01..5698c87 100644 +--- a/Makefile ++++ b/Makefile +@@ -110,7 +110,7 @@ endef + + # prefixed install macro for each host sub target + define do_build_prefix_install +- $(MAKE) install --directory=$1 HOST=$(BUILD) PREFIX=$(TMP_PREFIX) Q=$(Q) DESTDIR= ++ $(MAKE) install --directory=$1 HOST=$(BUILD) CC="$(BUILD_CC)" PREFIX=$(TMP_PREFIX) Q=$(Q) DESTDIR= + + endef + +-- +2.17.1 + diff --git a/package/netsurf/0003-fix-compilation-without-curl.patch b/package/netsurf/0003-fix-compilation-without-curl.patch new file mode 100644 index 00000000..2300ae5f --- /dev/null +++ b/package/netsurf/0003-fix-compilation-without-curl.patch @@ -0,0 +1,27 @@ +From 7d7c59dbfc92fcbcd0eac2c84e0fb98662c4bd71 Mon Sep 17 00:00:00 2001 +From: Francois Perrad +Date: Sat, 8 Dec 2018 09:43:40 +0100 +Subject: [PATCH] fix compilation without curl + +Signed-off-by: Francois Perrad +--- + netsurf/content/fetch.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/netsurf/content/fetch.c b/netsurf/content/fetch.c +index 7665029..0f41c49 100644 +--- a/netsurf/content/fetch.c ++++ b/netsurf/content/fetch.c +@@ -54,7 +54,9 @@ + #include "content/fetchers.h" + #include "content/fetchers/resource.h" + #include "content/fetchers/about.h" ++#ifdef WITH_CURL + #include "content/fetchers/curl.h" ++#endif + #include "content/fetchers/data.h" + #include "content/fetchers/file.h" + #include "javascript/fetcher.h" +-- +2.17.1 + diff --git a/package/netsurf/0004-framebuffer-Fix-internal-font-generated-source-for-GCC-10.patch b/package/netsurf/0004-framebuffer-Fix-internal-font-generated-source-for-GCC-10.patch new file mode 100644 index 00000000..da512645 --- /dev/null +++ b/package/netsurf/0004-framebuffer-Fix-internal-font-generated-source-for-GCC-10.patch @@ -0,0 +1,37 @@ +From 434f6c3fe7d1d2c6a3e6ae6338608a4a4421ab1b Mon Sep 17 00:00:00 2001 +From: Michael Drake +Date: Fri, 13 Nov 2020 11:12:58 +0000 +Subject: framebuffer: Fix internal font generated source for GCC 10. + +[Retrieved (and backported) from: +https://git.netsurf-browser.org/netsurf.git/commit/?id=434f6c3fe7d1d2c6a3e6ae6338608a4a4421ab1b] +Signed-off-by: Fabrice Fontaine +--- + tools/convert_font.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/netsurf/frontends/framebuffer/convert_font.c b/netsurf/frontends/framebuffer/convert_font.c +index 9f5734b71..d22c85920 100644 +--- a/netsurf/frontends/framebuffer/convert_font.c ++++ b/netsurf/frontends/framebuffer/convert_font.c +@@ -290,14 +290,14 @@ static bool generate_font_header(const char *path, struct font_data *data) + + + for (s = 0; s < 4; s++) { +- fprintf(fp, "const uint8_t *%s_section_table;\n", ++ fprintf(fp, "extern const uint8_t *%s_section_table;\n", + var_lables[s]); +- fprintf(fp, "const uint16_t *%s_sections;\n", ++ fprintf(fp, "extern const uint16_t *%s_sections;\n", + var_lables[s]); + + } + +- fprintf(fp, "const uint8_t *font_glyph_data;\n"); ++ fprintf(fp, "extern const uint8_t *font_glyph_data;\n"); + + fprintf(fp, "\n\n"); + +-- +cgit v1.2.1 + diff --git a/package/netsurf/Config.in b/package/netsurf/Config.in new file mode 100644 index 00000000..394befcf --- /dev/null +++ b/package/netsurf/Config.in @@ -0,0 +1,57 @@ +# netsurf mixes up host and target CFLAGS, so it isn't compatible with +# architectures where we pass ABI specific compiler flags (TARGET_ABI) +config BR2_PACKAGE_NETSURF_ARCH_SUPPORTS + bool + default y if !((BR2_arc && BR2_ARC_ATOMIC_EXT) || \ + BR2_powerpc_8540 || BR2_powerpc_8548 || BR2_powerpc_e500mc || \ + BR2_xtensa) + +comment "netsurf needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + depends on BR2_PACKAGE_NETSURF_ARCH_SUPPORTS + +config BR2_PACKAGE_NETSURF + bool "netsurf" + # static linking support is broken beyond repair + depends on !BR2_STATIC_LIBS + depends on BR2_PACKAGE_NETSURF_ARCH_SUPPORTS + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_OPENSSL if BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL if BR2_PACKAGE_LIBCURL + help + NetSurf is a compact graphical web browser which aims for + HTML5, CSS and JavaScript support. + Frontends: GTK (X11), SDL 1.2 (framebuffer) + + http://www.netsurf-browser.org/ + +if BR2_PACKAGE_NETSURF + +choice + prompt "Netsurf frontend" + default BR2_PACKAGE_NETSURF_SDL + +config BR2_PACKAGE_NETSURF_SDL + bool "sdl frontend" + select BR2_PACKAGE_SDL + help + Select SDL 1.2 frontend. + +config BR2_PACKAGE_NETSURF_GTK + bool "gtk2 frontend" + depends on BR2_PACKAGE_LIBGTK2 + help + Select GTK+ 2 frontend. + +config BR2_PACKAGE_NETSURF_GTK3 + bool "gtk3 frontend" + depends on BR2_PACKAGE_LIBGTK3 + help + Select GTK+ 3 frontend. + +endchoice + +endif diff --git a/package/netsurf/netsurf.hash b/package/netsurf/netsurf.hash new file mode 100644 index 00000000..77de5c6d --- /dev/null +++ b/package/netsurf/netsurf.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 495adf6b6614ce36fca6c605f7c321f9cb4a3df838043158122678ce2b3325b7 netsurf-all-3.10.tar.gz +sha256 55c4a7ae3953d720a462e69d1f128a20004933d12538be5314a33f8821675378 netsurf/COPYING diff --git a/package/netsurf/netsurf.mk b/package/netsurf/netsurf.mk new file mode 100644 index 00000000..574c1423 --- /dev/null +++ b/package/netsurf/netsurf.mk @@ -0,0 +1,127 @@ +################################################################################ +# +# netsurf +# +################################################################################ + +NETSURF_VERSION = 3.10 +NETSURF_SOURCE = netsurf-all-$(NETSURF_VERSION).tar.gz +NETSURF_SITE = http://download.netsurf-browser.org/netsurf/releases/source-full +NETSURF_LICENSE = GPL-2.0 +NETSURF_LICENSE_FILES = netsurf/COPYING +NETSURF_CPE_ID_VENDOR = netsurf-browser +# host-vim needed for the xxd utility +NETSURF_DEPENDENCIES = expat jpeg libpng \ + host-bison host-flex host-gperf host-pkgconf host-vim + +# internal duktape doesn't build with BR2_OPTIMIZE_FAST +ifeq ($(BR2_OPTIMIZE_FAST),y) +define NETSURF_DUKTAPE_CONFIGURE_CMDS + echo "override NETSURF_USE_DUKTAPE := NO" >> $(@D)/netsurf/Makefile.config +endef +else +define NETSURF_DUKTAPE_CONFIGURE_CMDS + echo "override NETSURF_USE_DUKTAPE := YES" >> $(@D)/netsurf/Makefile.config +endef +endif + +ifeq ($(BR2_PACKAGE_NETSURF_GTK),y) +NETSURF_DEPENDENCIES += libgtk2 +NETSURF_FRONTEND = gtk2 +endif + +ifeq ($(BR2_PACKAGE_NETSURF_GTK3),y) +NETSURF_DEPENDENCIES += libgtk3 +NETSURF_FRONTEND = gtk3 +endif + +ifeq ($(BR2_PACKAGE_NETSURF_GTK)$(BR2_PACKAGE_NETSURF_GTK3),y) +ifeq ($(BR2_PACKAGE_LIBRSVG),y) +NETSURF_DEPENDENCIES += librsvg +define NETSURF_SVG_CONFIGURE_CMDS + echo "override NETSURF_USE_RSVG := YES" >> $(@D)/netsurf/Makefile.config + echo "override NETSURF_USE_NSSVG := NO" >> $(@D)/netsurf/Makefile.config +endef +endif +endif + +ifeq ($(BR2_PACKAGE_NETSURF_SDL),y) +NETSURF_DEPENDENCIES += sdl host-libpng +NETSURF_FRONTEND = framebuffer +NETSURF_CONFIG = \ + BUILD_CFLAGS='$(HOST_CFLAGS)' \ + BUILD_LDFLAGS='$(HOST_LDFLAGS) -lpng' +ifeq ($(BR2_PACKAGE_FREETYPE),y) +NETSURF_DEPENDENCIES += freetype +define NETSURF_FONTLIB_CONFIGURE_CMDS + echo "override NETSURF_FB_FONTLIB := freetype" >> $(@D)/netsurf/Makefile.config +endef +endif +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +NETSURF_DEPENDENCIES += libiconv +define NETSURF_ICONV_CONFIGURE_CMDS + echo "CFLAGS += -DWITH_ICONV_FILTER" >> $(@D)/libparserutils/Makefile.config.override + echo "override NETSURF_USE_LIBICONV_PLUG := NO" >> $(@D)/netsurf/Makefile.config +endef +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +NETSURF_DEPENDENCIES += libcurl openssl +else +define NETSURF_CURL_CONFIGURE_CMDS + echo "override NETSURF_USE_CURL := NO" >> $(@D)/netsurf/Makefile.config + echo "override NETSURF_USE_OPENSSL := NO" >> $(@D)/netsurf/Makefile.config +endef +endif + +ifeq ($(BR2_PACKAGE_WEBP),y) +NETSURF_DEPENDENCIES += webp +define NETSURF_WEBP_CONFIGURE_CMDS + echo "override NETSURF_USE_WEBP := YES" >> $(@D)/netsurf/Makefile.config +endef +else +define NETSURF_WEBP_CONFIGURE_CMDS + echo "override NETSURF_USE_WEBP := NO" >> $(@D)/netsurf/Makefile.config +endef +endif + +define NETSURF_CONFIGURE_CMDS + $(NETSURF_DUKTAPE_CONFIGURE_CMDS) + $(NETSURF_ICONV_CONFIGURE_CMDS) + $(NETSURF_SVG_CONFIGURE_CMDS) + $(NETSURF_FONTLIB_CONFIGURE_CMDS) + $(NETSURF_CURL_CONFIGURE_CMDS) + $(NETSURF_WEBP_CONFIGURE_CMDS) +endef + +NETSURF_MAKE_ENV = \ + $(TARGET_MAKE_ENV) \ + CFLAGS="$(TARGET_CFLAGS) -I$(@D)/tmpusr/include" \ + LDFLAGS="$(TARGET_LDFLAGS) -L$(@D)/tmpusr/lib" + +NETSURF_MAKE_OPTS = \ + TARGET=$(NETSURF_FRONTEND) \ + BISON="$(HOST_DIR)/bin/bison" \ + FLEX="$(HOST_DIR)/bin/flex" \ + PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ + BUILD_CC="$(HOSTCC)" \ + CC="$(TARGET_CC)" \ + AR="$(TARGET_AR)" \ + TMP_PREFIX=$(@D)/tmpusr \ + NETSURF_CONFIG="$(NETSURF_CONFIG)" \ + PREFIX=/usr + +define NETSURF_BUILD_CMDS + mkdir -p $(@D)/tmpusr + $(NETSURF_MAKE_ENV) $(MAKE) -C $(@D) $(NETSURF_MAKE_OPTS) \ + build +endef + +define NETSURF_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(NETSURF_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/nettle/0001-disable-testsuite-examples.patch b/package/nettle/0001-disable-testsuite-examples.patch new file mode 100644 index 00000000..aa37bcf8 --- /dev/null +++ b/package/nettle/0001-disable-testsuite-examples.patch @@ -0,0 +1,20 @@ +Makefile: disable testsuite and example + +We do not need them in the context of Buildroot. + +Also, they break for a shared-only build (but it's fixed in patch 0001). + +Signed-off-by: "Yann E. MORIN" + +diff -durN nettle-2.7.1.orig/Makefile.in nettle-2.7.1/Makefile.in +--- nettle-2.7.1.orig/Makefile.in 2013-05-28 16:21:54.000000000 +0200 ++++ nettle-2.7.1/Makefile.in 2014-12-12 19:57:12.499805574 +0100 +@@ -19,7 +19,7 @@ + + FAT_TEST_LIST = @FAT_TEST_LIST@ + +-SUBDIRS = tools testsuite examples ++SUBDIRS = tools + + include config.make + diff --git a/package/nettle/Config.in b/package/nettle/Config.in new file mode 100644 index 00000000..92a0e0b5 --- /dev/null +++ b/package/nettle/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_NETTLE + bool "nettle" + select BR2_PACKAGE_GMP + help + Nettle is a cryptographic library that is designed to fit + easily in more or less any context: In crypto toolkits for + object-oriented languages, in applications like LSH or + GNUPG, or even in kernel space + + https://directory.fsf.org/wiki/Nettle diff --git a/package/nettle/nettle.hash b/package/nettle/nettle.hash new file mode 100644 index 00000000..6c2486e2 --- /dev/null +++ b/package/nettle/nettle.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +# https://ftp.gnu.org/gnu/nettle/nettle-3.9.1.tar.gz.sig +sha256 ccfeff981b0ca71bbd6fbcb054f407c60ffb644389a5be80d6716d5b550c6ce3 nettle-3.9.1.tar.gz +# Locally calculated +sha256 a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c COPYING.LESSERv3 +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYINGv2 diff --git a/package/nettle/nettle.mk b/package/nettle/nettle.mk new file mode 100644 index 00000000..20f755cc --- /dev/null +++ b/package/nettle/nettle.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# nettle +# +################################################################################ + +NETTLE_VERSION = 3.9.1 +NETTLE_SITE = https://ftp.gnu.org/gnu/nettle +NETTLE_DEPENDENCIES = host-m4 gmp +NETTLE_INSTALL_STAGING = YES +NETTLE_LICENSE = Dual GPL-2.0+/LGPL-3.0+ +NETTLE_LICENSE_FILES = COPYING.LESSERv3 COPYINGv2 +NETTLE_CPE_ID_VALID = YES +# don't include openssl support for (unused) examples as it has problems +# with static linking +NETTLE_CONF_OPTS = --disable-openssl + +HOST_NETTLE_DEPENDENCIES = host-m4 host-gmp + +# ARM assembly requires v6+ ISA +ifeq ($(BR2_ARM_CPU_ARMV4)$(BR2_ARM_CPU_ARMV5)$(BR2_ARM_CPU_ARMV7M),y) +NETTLE_CONF_OPTS += --disable-assembler +endif + +ifeq ($(BR2_ARM_CPU_HAS_NEON),y) +NETTLE_CONF_OPTS += --enable-arm-neon +else +NETTLE_CONF_OPTS += --disable-arm-neon +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/network-manager-openvpn/Config.in b/package/network-manager-openvpn/Config.in new file mode 100644 index 00000000..557145e9 --- /dev/null +++ b/package/network-manager-openvpn/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_NETWORK_MANAGER_OPENVPN + bool "network-manager-openvpn" + depends on BR2_PACKAGE_NETWORK_MANAGER + depends on BR2_PACKAGE_OPENVPN + help + OpenVPN support for NetworkManager + + https://gitlab.gnome.org/GNOME/NetworkManager-openvpn diff --git a/package/network-manager-openvpn/network-manager-openvpn.hash b/package/network-manager-openvpn/network-manager-openvpn.hash new file mode 100644 index 00000000..59d03fae --- /dev/null +++ b/package/network-manager-openvpn/network-manager-openvpn.hash @@ -0,0 +1,4 @@ +# From https://download.gnome.org/sources/NetworkManager-openvpn/1.11/NetworkManager-openvpn-1.11.0.sha256sum +sha256 2128de06f91b33c13d63cdaa6e178bc1ca57fc770cde3bc7c24891f4d9824501 NetworkManager-openvpn-1.11.0.tar.xz +# Locally computed +sha256 c39e345d992dfba62db265f8c6d6ff1d90c61d92876635ae05adbfa2f45fff46 COPYING diff --git a/package/network-manager-openvpn/network-manager-openvpn.mk b/package/network-manager-openvpn/network-manager-openvpn.mk new file mode 100644 index 00000000..f39edf32 --- /dev/null +++ b/package/network-manager-openvpn/network-manager-openvpn.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# network-manager-openvpn +# +################################################################################ + +NETWORK_MANAGER_OPENVPN_VERSION_MAJOR = 1.11 +NETWORK_MANAGER_OPENVPN_VERSION = $(NETWORK_MANAGER_OPENVPN_VERSION_MAJOR).0 +NETWORK_MANAGER_OPENVPN_SOURCE = NetworkManager-openvpn-$(NETWORK_MANAGER_OPENVPN_VERSION).tar.xz +NETWORK_MANAGER_OPENVPN_SITE = https://download.gnome.org/sources/NetworkManager-openvpn/$(NETWORK_MANAGER_OPENVPN_VERSION_MAJOR) +NETWORK_MANAGER_OPENVPN_DEPENDENCIES = network-manager openvpn +NETWORK_MANAGER_OPENVPN_LICENSE = GPL-2.0+ +NETWORK_MANAGER_OPENVPN_LICENSE_FILES = COPYING + +NETWORK_MANAGER_OPENVPN_CONF_OPTS = \ + --without-gnome + +define NETWORK_MANAGER_OPENVPN_USERS + nm-openvpn -1 nm-openvpn -1 * - - - Openvpn user +endef + +$(eval $(autotools-package)) diff --git a/package/network-manager/Config.in b/package/network-manager/Config.in new file mode 100644 index 00000000..1d9a02c1 --- /dev/null +++ b/package/network-manager/Config.in @@ -0,0 +1,69 @@ +config BR2_PACKAGE_NETWORK_MANAGER + bool "network-manager" + depends on !BR2_STATIC_LIBS # gnutls + depends on BR2_USE_MMU # dbus + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6 + depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_WCHAR # libglib2 + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_GNUTLS if !BR2_PACKAGE_LIBNSS + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBNDP + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + NetworkManager is a set of co-operative tools that make + networking simple and straightforward. Whether WiFi, wired, + 3G, or Bluetooth, NetworkManager allows you to quickly move + from one network to another: once a network has been + configured and joined once, it can be detected and re-joined + automatically the next time it's available. + + http://projects.gnome.org/NetworkManager/ + +if BR2_PACKAGE_NETWORK_MANAGER + +config BR2_PACKAGE_NETWORK_MANAGER_TUI + bool "nmtui support" + select BR2_PACKAGE_NEWT + help + This option enables terminal based UI + +config BR2_PACKAGE_NETWORK_MANAGER_CLI + bool "nmcli support" + select BR2_PACKAGE_READLINE + help + This option enables support for the NetworkManager Command + Line Interface + +config BR2_PACKAGE_NETWORK_MANAGER_MODEM_MANAGER + bool "modem-manager support" + select BR2_PACKAGE_MODEM_MANAGER + select BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO + help + This option enables support for ModemManager + +config BR2_PACKAGE_NETWORK_MANAGER_PPPD + bool "pppd support" + select BR2_PACKAGE_PPPD + help + This option enables support for PPPD daemon + +config BR2_PACKAGE_NETWORK_MANAGER_OVS + bool "OpenVSwitch support" + select BR2_PACKAGE_JANSSON + help + This option enables support for OpenVSwitch +endif + +comment "NetworkManager needs udev /dev management and a glibc or musl toolchain w/ headers >= 4.6, dynamic library, wchar, threads, gcc >= 4.9" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_HAS_UDEV || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6 || \ + !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) || \ + BR2_STATIC_LIBS || \ + !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/network-manager/S45NetworkManager b/package/network-manager/S45NetworkManager new file mode 100644 index 00000000..9f3398a3 --- /dev/null +++ b/package/network-manager/S45NetworkManager @@ -0,0 +1,68 @@ +#!/bin/sh + +DAEMON="NetworkManager" +PIDFILE="/var/run/$DAEMON.pid" + +# shellcheck source=/dev/null +test -r "/etc/default/$DAEMON" && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + [ ! -d "/var/run/$DAEMON" ] && install -d "/var/run/$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon --start --pidfile "$PIDFILE" \ + --exec "/usr/sbin/$DAEMON" \ + -- --pid-file="$PIDFILE" $NETWORKMANAGER_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon --stop --pidfile "$PIDFILE" \ + --exec "/usr/sbin/$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + return "$status" + fi + # NetworkManager deletes its PID file on exit, wait for it to + # be gone + while [ -f "$PIDFILE" ]; do + sleep 0.1 + done + return "$status" +} + +restart() { + stop + start +} + +reload() { + printf 'Reloading %s config: ' "$DAEMON" + start-stop-daemon --stop --signal HUP -q --pidfile "$PIDFILE" \ + --exec "/usr/sbin/$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +case "$1" in + start|stop|restart|reload) + "$1";; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/network-manager/network-manager.hash b/package/network-manager/network-manager.hash new file mode 100644 index 00000000..952b0cea --- /dev/null +++ b/package/network-manager/network-manager.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/NetworkManager/1.46/NetworkManager-1.46.0.sha256sum +sha256 722649e25362693b334371473802a729b0ec9ee283375096905f868808e74068 NetworkManager-1.46.0.tar.xz +# Locally computed +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPL diff --git a/package/network-manager/network-manager.mk b/package/network-manager/network-manager.mk new file mode 100644 index 00000000..3937982c --- /dev/null +++ b/package/network-manager/network-manager.mk @@ -0,0 +1,175 @@ +################################################################################ +# +# network-manager +# +################################################################################ + +NETWORK_MANAGER_VERSION_MAJOR = 1.46 +NETWORK_MANAGER_VERSION = $(NETWORK_MANAGER_VERSION_MAJOR).0 +NETWORK_MANAGER_SOURCE = NetworkManager-$(NETWORK_MANAGER_VERSION).tar.xz +NETWORK_MANAGER_SITE = https://download.gnome.org/sources/NetworkManager/$(NETWORK_MANAGER_VERSION_MAJOR) +NETWORK_MANAGER_INSTALL_STAGING = YES +NETWORK_MANAGER_LICENSE = GPL-2.0+ (app), LGPL-2.1+ (libnm) +NETWORK_MANAGER_LICENSE_FILES = COPYING COPYING.LGPL +NETWORK_MANAGER_CPE_ID_VENDOR = gnome +NETWORK_MANAGER_CPE_ID_PRODUCT = networkmanager +NETWORK_MANAGER_SELINUX_MODULES = networkmanager + +NETWORK_MANAGER_DEPENDENCIES = \ + host-intltool \ + host-libxslt \ + host-pkgconf \ + dbus \ + libglib2 \ + libndp \ + udev \ + util-linux + +NETWORK_MANAGER_CONF_OPTS = \ + -Dintrospection=false \ + -Ddocs=false \ + -Dtests=no \ + -Dqt=false \ + -Diptables=/usr/sbin/iptables \ + -Difupdown=false \ + -Dnm_cloud_setup=false \ + -Dsession_tracking_consolekit=false + +ifeq ($(BR2_PACKAGE_AUDIT),y) +NETWORK_MANAGER_DEPENDENCIES += audit +NETWORK_MANAGER_CONF_OPTS += -Dlibaudit=yes +else +NETWORK_MANAGER_CONF_OPTS += -Dlibaudit=no +endif + +ifeq ($(BR2_PACKAGE_DHCP_CLIENT),y) +NETWORK_MANAGER_CONF_OPTS += -Ddhclient=/sbin/dhclient +endif + +ifeq ($(BR2_PACKAGE_DHCPCD),y) +NETWORK_MANAGER_CONF_OPTS += -Ddhcpcd=/sbin/dhcpcd +endif + +ifeq ($(BR2_PACKAGE_IWD),y) +NETWORK_MANAGER_DEPENDENCIES += iwd +NETWORK_MANAGER_CONF_OPTS += -Diwd=true +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT),y) +NETWORK_MANAGER_CONF_OPTS += -Dconfig_wifi_backend_default=wpa_supplicant +else +NETWORK_MANAGER_CONF_OPTS += -Dconfig_wifi_backend_default=iwd +endif +else +NETWORK_MANAGER_CONF_OPTS += \ + -Diwd=false \ + -Dconfig_wifi_backend_default=wpa_supplicant +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +NETWORK_MANAGER_DEPENDENCIES += libcurl +NETWORK_MANAGER_CONF_OPTS += -Dconcheck=true +else +NETWORK_MANAGER_CONF_OPTS += -Dconcheck=false +endif + +ifeq ($(BR2_PACKAGE_LIBNSS),y) +NETWORK_MANAGER_DEPENDENCIES += libnss +NETWORK_MANAGER_CONF_OPTS += -Dcrypto=nss +else +NETWORK_MANAGER_DEPENDENCIES += gnutls +NETWORK_MANAGER_CONF_OPTS += -Dcrypto=gnutls +endif + +ifeq ($(BR2_PACKAGE_LIBPSL),y) +NETWORK_MANAGER_DEPENDENCIES += libpsl +NETWORK_MANAGER_CONF_OPTS += -Dlibpsl=true +else +NETWORK_MANAGER_CONF_OPTS += -Dlibpsl=false +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +NETWORK_MANAGER_DEPENDENCIES += libselinux +NETWORK_MANAGER_CONF_OPTS += -Dselinux=true +else +NETWORK_MANAGER_CONF_OPTS += -Dselinux=false +endif + +ifeq ($(BR2_PACKAGE_NETWORK_MANAGER_MODEM_MANAGER),y) +NETWORK_MANAGER_DEPENDENCIES += modem-manager mobile-broadband-provider-info +NETWORK_MANAGER_CONF_OPTS += -Dmodem_manager=true +NETWORK_MANAGER_CONF_OPTS += -Dmobile_broadband_provider_info_database=/usr/share/mobile-broadband-provider-info/serviceproviders.xml +else +NETWORK_MANAGER_CONF_OPTS += -Dmodem_manager=false +endif + +ifeq ($(BR2_PACKAGE_NETWORK_MANAGER_OVS),y) +NETWORK_MANAGER_CONF_OPTS += -Dovs=true +NETWORK_MANAGER_DEPENDENCIES += jansson +else +NETWORK_MANAGER_CONF_OPTS += -Dovs=false +endif + +ifeq ($(BR2_PACKAGE_NETWORK_MANAGER_PPPD),y) +NETWORK_MANAGER_DEPENDENCIES += pppd +NETWORK_MANAGER_CONF_OPTS += \ + -Dppp=true \ + -Dpppd=/usr/sbin/pppd \ + -Dpppd_plugin_dir=/usr/lib/pppd/$(PPPD_VERSION) +else +NETWORK_MANAGER_CONF_OPTS += -Dppp=false +endif + +ifeq ($(BR2_PACKAGE_NETWORK_MANAGER_TUI),y) +NETWORK_MANAGER_DEPENDENCIES += newt +NETWORK_MANAGER_CONF_OPTS += -Dnmtui=true +else +NETWORK_MANAGER_CONF_OPTS += -Dnmtui=false +endif + +ifeq ($(BR2_PACKAGE_OFONO),y) +NETWORK_MANAGER_DEPENDENCIES += ofono +NETWORK_MANAGER_CONF_OPTS += -Dofono=true +else +NETWORK_MANAGER_CONF_OPTS += -Dofono=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +NETWORK_MANAGER_DEPENDENCIES += systemd +NETWORK_MANAGER_CONF_OPTS += \ + -Dsystemd_journal=true \ + -Dconfig_logging_backend_default=journal \ + -Dsession_tracking=systemd \ + -Dsuspend_resume=systemd +else +NETWORK_MANAGER_CONF_OPTS += \ + -Dsystemd_journal=false \ + -Dconfig_logging_backend_default=syslog \ + -Dsession_tracking=no \ + -Dsuspend_resume=upower \ + -Dsystemdsystemunitdir=no +endif + +ifeq ($(BR2_PACKAGE_POLKIT),y) +NETWORK_MANAGER_DEPENDENCIES += polkit +NETWORK_MANAGER_CONF_OPTS += -Dpolkit=true +else +NETWORK_MANAGER_CONF_OPTS += -Dpolkit=false +endif + +ifeq ($(BR2_PACKAGE_NETWORK_MANAGER_CLI),y) +NETWORK_MANAGER_DEPENDENCIES += readline +NETWORK_MANAGER_CONF_OPTS += -Dnmcli=true +else +NETWORK_MANAGER_CONF_OPTS += -Dnmcli=false +endif + +define NETWORK_MANAGER_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/network-manager/S45NetworkManager $(TARGET_DIR)/etc/init.d/S45NetworkManager +endef + +define NETWORK_MANAGER_INSTALL_INIT_SYSTEMD + ln -sf /usr/lib/systemd/system/NetworkManager.service \ + $(TARGET_DIR)/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service + +endef + +$(eval $(meson-package)) diff --git a/package/networkd-dispatcher/Config.in b/package/networkd-dispatcher/Config.in new file mode 100644 index 00000000..54b48e4c --- /dev/null +++ b/package/networkd-dispatcher/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_NETWORKD_DISPATCHER + bool "networkd-dispatcher" + depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS # python-gobject -> gobject-introspection + depends on BR2_HOST_GCC_AT_LEAST_8 # python-gobject -> gobject-introspection -> host-qemu + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # python-gobject -> gobject-introspection + depends on BR2_TOOLCHAIN_USES_GLIBC # python-gobject -> gobject-introspection + depends on BR2_PACKAGE_SYSTEMD # runtime + select BR2_PACKAGE_DBUS # dbus-python + select BR2_PACKAGE_DBUS_PYTHON # runtime + select BR2_PACKAGE_PYTHON3 # python-gobject + select BR2_PACKAGE_PYTHON_GOBJECT # runtime + select BR2_PACKAGE_SYSTEMD_NETWORKD # runtime + help + Networkd-dispatcher is a dispatcher daemon for + systemd-networkd connection status changes. + This daemon is similar to NetworkManager-dispatcher, + but is much more limited in the types of events it + supports due to the limited nature of systemd-networkd. + + https://gitlab.com/craftyguy/networkd-dispatcher + +comment "networkd-dispatcher needs a glibc toolchain, gcc >= 4.9, host gcc >= 8" + depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS + depends on BR2_PACKAGE_SYSTEMD + depends on !BR2_HOST_GCC_AT_LEAST_8 || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_TOOLCHAIN_USES_GLIBC diff --git a/package/networkd-dispatcher/networkd-dispatcher.hash b/package/networkd-dispatcher/networkd-dispatcher.hash new file mode 100644 index 00000000..f50dd751 --- /dev/null +++ b/package/networkd-dispatcher/networkd-dispatcher.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 993086fa2dab11ba6b54a121adaccbd4c679ce3c8b3193cfa5c00500c28cbdf9 networkd-dispatcher-2.2.4.tar.bz2 +sha256 589ed823e9a84c56feb95ac58e7cf384626b9cbf4fda2a907bc36e103de1bad2 LICENSE diff --git a/package/networkd-dispatcher/networkd-dispatcher.mk b/package/networkd-dispatcher/networkd-dispatcher.mk new file mode 100644 index 00000000..a3e0319c --- /dev/null +++ b/package/networkd-dispatcher/networkd-dispatcher.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# networkd-dispatcher +# +################################################################################ + +NETWORKD_DISPATCHER_VERSION = 2.2.4 +NETWORKD_DISPATCHER_SOURCE = networkd-dispatcher-$(NETWORKD_DISPATCHER_VERSION).tar.bz2 +NETWORKD_DISPATCHER_SITE = https://gitlab.com/craftyguy/networkd-dispatcher/-/archive/$(NETWORKD_DISPATCHER_VERSION) +NETWORKD_DISPATCHER_LICENSE = GPL-3.0 +NETWORKD_DISPATCHER_LICENSE_FILES = LICENSE + +define NETWORKD_DISPATCHER_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/networkd-dispatcher $(TARGET_DIR)/usr/bin/networkd-dispatcher + mkdir -p $(TARGET_DIR)/etc/networkd-dispatcher/{routable,dormant,no-carrier,off,carrier,degraded,configuring,configured}.d +endef + +define NETWORKD_DISPATCHER_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(@D)/networkd-dispatcher.service \ + $(TARGET_DIR)/usr/lib/systemd/system/networkd-dispatcher.service + $(INSTALL) -D -m 0644 $(@D)/networkd-dispatcher.conf \ + $(TARGET_DIR)/etc/conf.d/networkd-dispatcher.conf +endef + +$(eval $(generic-package)) diff --git a/package/newlib-bare-metal/0001-libgloss-microblaze-fix-read-and-_write-declarati.patch b/package/newlib-bare-metal/0001-libgloss-microblaze-fix-read-and-_write-declarati.patch new file mode 100644 index 00000000..5eacfd32 --- /dev/null +++ b/package/newlib-bare-metal/0001-libgloss-microblaze-fix-read-and-_write-declarati.patch @@ -0,0 +1,40 @@ +From 1ebecb83607e9c0cc44ad1e518169ae03c0f2d26 Mon Sep 17 00:00:00 2001 +From: Neal Frager +Date: Mon, 13 May 2024 07:22:47 +0100 +Subject: [PATCH] libgloss: microblaze: fix read and _write declarations + +This patch resolves the following build error which occurs with gcc 14.1.0: +../../.././libgloss/microblaze/linux-outbyte.c: In function 'outbyte': +../../.././libgloss/microblaze/linux-outbyte.c:3:9: error: implicit declaration of function '_write' [-Wimplicit-function-declaration] + 3 | _write(1, &c, 1); + +Signed-off-by: Neal Frager +Upstream: https://patchwork.sourceware.org/project/newlib/patch/20240513062419.2042278-1-neal.frager@amd.com/ +--- + libgloss/microblaze/linux-inbyte.c | 2 ++ + libgloss/microblaze/linux-outbyte.c | 2 ++ + 2 files changed, 4 insertions(+) + +diff --git a/libgloss/microblaze/linux-inbyte.c b/libgloss/microblaze/linux-inbyte.c +index 58fdf1957..2f8d33871 100644 +--- a/libgloss/microblaze/linux-inbyte.c ++++ b/libgloss/microblaze/linux-inbyte.c +@@ -1,3 +1,5 @@ ++extern int read (int, char *, int); ++ + int inbyte(void) + { + char ch = 0; +diff --git a/libgloss/microblaze/linux-outbyte.c b/libgloss/microblaze/linux-outbyte.c +index 9d7bc4890..46de511f6 100644 +--- a/libgloss/microblaze/linux-outbyte.c ++++ b/libgloss/microblaze/linux-outbyte.c +@@ -1,3 +1,5 @@ ++extern int _write (int, char *, int); ++ + void outbyte (unsigned char c) + { + _write(1, &c, 1); +-- +2.25.1 + diff --git a/package/newlib-bare-metal/Config.in b/package/newlib-bare-metal/Config.in new file mode 100644 index 00000000..1ff3d5d8 --- /dev/null +++ b/package/newlib-bare-metal/Config.in @@ -0,0 +1,2 @@ +config BR2_PACKAGE_NEWLIB_BARE_METAL + bool diff --git a/package/newlib-bare-metal/newlib-bare-metal.hash b/package/newlib-bare-metal/newlib-bare-metal.hash new file mode 100644 index 00000000..82792537 --- /dev/null +++ b/package/newlib-bare-metal/newlib-bare-metal.hash @@ -0,0 +1,8 @@ +# Locally calculated +sha256 0c166a39e1bf0951dfafcd68949fe0e4b6d3658081d6282f39aeefc6310f2f13 newlib-4.4.0.20231231.tar.gz + +# Hashes for license files locally calculated +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING.LIB +sha256 f3b7f3e4426b1fa6f60198dae7adfedd94b77b28db2d108adc0253575011e0ff COPYING.LIBGLOSS +sha256 9a59b4ee3af067045fe0ea78786201c42d54756fe48cbccf44f3dfc398474717 COPYING.NEWLIB diff --git a/package/newlib-bare-metal/newlib-bare-metal.mk b/package/newlib-bare-metal/newlib-bare-metal.mk new file mode 100644 index 00000000..89092eb9 --- /dev/null +++ b/package/newlib-bare-metal/newlib-bare-metal.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# newlib-bare-metal +# +################################################################################ + +NEWLIB_BARE_METAL_VERSION = 4.4.0.20231231 +NEWLIB_BARE_METAL_SITE = https://sourceware.org/ftp/newlib +NEWLIB_BARE_METAL_SOURCE = newlib-$(NEWLIB_BARE_METAL_VERSION).tar.gz +NEWLIB_BARE_METAL_DEPENDENCIES = host-gcc-bare-metal +NEWLIB_BARE_METAL_ADD_TOOLCHAIN_DEPENDENCY = NO +NEWLIB_BARE_METAL_LICENSE = GPL-2.0, GPL-3.0, LGPL-2.1, LGPL-3.0 +NEWLIB_BARE_METAL_LICENSE_FILES = \ + COPYING \ + COPYING.LIB \ + COPYING.LIBGLOSS \ + COPYING.NEWLIB +NEWLIB_BARE_METAL_CPE_ID_VENDOR = newlib_project +NEWLIB_BARE_METAL_CPE_ID_PRODUCT = newlib + +NEWLIB_BARE_METAL_INSTALL_STAGING = YES +NEWLIB_BARE_METAL_INSTALL_TARGET = NO +NEWLIB_BARE_METAL_MAKE_OPTS = MAKEINFO=true + +define NEWLIB_BARE_METAL_CONFIGURE_CMDS + (cd $(@D) && \ + PATH=$(BR_PATH) \ + ./configure \ + --target=$(TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH_TUPLE) \ + --prefix=/usr \ + --enable-newlib-io-c99-formats \ + --enable-newlib-io-long-long \ + --enable-newlib-io-float \ + --enable-newlib-io-long-double \ + --disable-multilib \ + ) +endef + +define NEWLIB_BARE_METAL_BUILD_CMDS + PATH=$(BR_PATH) $(MAKE1) $(NEWLIB_BARE_METAL_MAKE_OPTS) -C $(@D) +endef + +define NEWLIB_BARE_METAL_INSTALL_STAGING_CMDS + PATH=$(BR_PATH) $(MAKE1) -C $(@D) $(NEWLIB_BARE_METAL_MAKE_OPTS) \ + DESTDIR=$(TOOLCHAIN_BARE_METAL_BUILDROOT_SYSROOT) install +endef + +define NEWLIB_BARE_METAL_FIXUP + mv $(TOOLCHAIN_BARE_METAL_BUILDROOT_SYSROOT)/usr/$(TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH_TUPLE)/include \ + $(TOOLCHAIN_BARE_METAL_BUILDROOT_SYSROOT)/usr/include + mv $(TOOLCHAIN_BARE_METAL_BUILDROOT_SYSROOT)/usr/$(TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH_TUPLE)/lib \ + $(TOOLCHAIN_BARE_METAL_BUILDROOT_SYSROOT)/usr/lib +endef +NEWLIB_BARE_METAL_POST_INSTALL_STAGING_HOOKS += NEWLIB_BARE_METAL_FIXUP + +$(eval $(generic-package)) diff --git a/package/newt/Config.in b/package/newt/Config.in new file mode 100644 index 00000000..42a9eca7 --- /dev/null +++ b/package/newt/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_NEWT + bool "newt" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # slang + depends on !BR2_STATIC_LIBS # unconditionally creates .so + select BR2_PACKAGE_SLANG + select BR2_PACKAGE_POPT + help + Programming library for color text mode, widget based user + interfaces. + + http://www.redhat.com/ + +comment "newt needs a toolchain w/ wchar, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS diff --git a/package/newt/newt.hash b/package/newt/newt.hash new file mode 100644 index 00000000..6d5f7c3d --- /dev/null +++ b/package/newt/newt.hash @@ -0,0 +1,5 @@ +# From https://releases.pagure.org/newt/CHECKSUMS +sha256 caa372907b14ececfe298f0d512a62f41d33b290610244a58aed07bbc5ada12a newt-0.52.23.tar.gz +sha512 c845d03946f72a6b46301152d7dc308f71d17b03d255d73d02ea7deb5392e22522dc8504f941fcffe5309c6c10f1b56742dac8585a16b0dc7e0c463f18871dda newt-0.52.23.tar.gz +# Locally calculated +sha256 b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c COPYING diff --git a/package/newt/newt.mk b/package/newt/newt.mk new file mode 100644 index 00000000..3c9efe13 --- /dev/null +++ b/package/newt/newt.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# newt +# +################################################################################ + +NEWT_VERSION = 0.52.23 +NEWT_SITE = https://pagure.io/releases/newt +NEWT_INSTALL_STAGING = YES +NEWT_DEPENDENCIES = popt slang $(TARGET_NLS_DEPENDENCIES) +# Force to use libintl, otherwise it finds gettext functions in the C +# library, and does not link against libintl. +NEWT_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) +NEWT_CONF_OPTS = --without-python --without-tcl +NEWT_LICENSE = GPL-2.0 +NEWT_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/nfacct/Config.in b/package/nfacct/Config.in new file mode 100644 index 00000000..02e7a6db --- /dev/null +++ b/package/nfacct/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_NFACCT + bool "nfacct" + select BR2_PACKAGE_LIBNETFILTER_ACCT + help + nfacct is the command line tool to create/retrieve/delete + netfilter accounting objects. + + https://www.netfilter.org/projects/nfacct/ diff --git a/package/nfacct/nfacct.hash b/package/nfacct/nfacct.hash new file mode 100644 index 00000000..4038ff86 --- /dev/null +++ b/package/nfacct/nfacct.hash @@ -0,0 +1,5 @@ +# From https://www.netfilter.org/projects/nfacct/files/nfacct-1.0.2.tar.bz2.{md5sum,sha1sum} +md5 94faafdaaed85ca9220c5692be8a408e nfacct-1.0.2.tar.bz2 +sha1 17d6576778227ea93c62600d9b18ff4932963c6a nfacct-1.0.2.tar.bz2 +# Locally computed +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING diff --git a/package/nfacct/nfacct.mk b/package/nfacct/nfacct.mk new file mode 100644 index 00000000..0092cb9c --- /dev/null +++ b/package/nfacct/nfacct.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# nfacct +# +################################################################################ + +NFACCT_VERSION = 1.0.2 +NFACCT_SOURCE = nfacct-$(NFACCT_VERSION).tar.bz2 +NFACCT_SITE = https://www.netfilter.org/projects/nfacct/files +NFACCT_DEPENDENCIES = host-pkgconf \ + libnetfilter_acct +NFACCT_LICENSE = GPL-2.0 +NFACCT_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/nfs-utils/0001-reexport-fsidd-reexport-.c-Re-add-missing-includes.patch b/package/nfs-utils/0001-reexport-fsidd-reexport-.c-Re-add-missing-includes.patch new file mode 100644 index 00000000..4f79af45 --- /dev/null +++ b/package/nfs-utils/0001-reexport-fsidd-reexport-.c-Re-add-missing-includes.patch @@ -0,0 +1,44 @@ +From 4710e469cd0f512ac5e2c3c4335d8e21b97f21b0 Mon Sep 17 00:00:00 2001 +From: Petr Vorel +Date: Tue, 5 Dec 2023 20:40:36 +0100 +Subject: [PATCH] reexport/{fsidd,reexport}.c: Re-add missing includes + +Older uClibc-ng requires for close(2), unlink(2) and write(2), + for struct sockaddr_un. + +Fixes: 1a4edb2a ("reexport/fsidd.c: Remove unused headers") +Fixes: bdc79f02 ("support/reexport.c: Remove unused headers") +Signed-off-by: Petr Vorel +Upstream: https://lore.kernel.org/linux-nfs/20231205223543.31443-1-pvorel@suse.cz/ +--- + support/reexport/fsidd.c | 2 ++ + support/reexport/reexport.c | 1 + + 2 files changed, 3 insertions(+) + +diff --git a/support/reexport/fsidd.c b/support/reexport/fsidd.c +index 3e62b3fc..814fb48e 100644 +--- a/support/reexport/fsidd.c ++++ b/support/reexport/fsidd.c +@@ -7,6 +7,8 @@ + #include + #endif + #include ++#include ++#include + + #include "conffile.h" + #include "reexport_backend.h" +diff --git a/support/reexport/reexport.c b/support/reexport/reexport.c +index 78516586..1900b336 100644 +--- a/support/reexport/reexport.c ++++ b/support/reexport/reexport.c +@@ -7,6 +7,7 @@ + #endif + #include + #include ++#include + #include + + #include "nfsd_path.h" +-- +2.43.0 diff --git a/package/nfs-utils/0002-support-backend_sqlite.c-Add-missing-sys-syscall.h.patch b/package/nfs-utils/0002-support-backend_sqlite.c-Add-missing-sys-syscall.h.patch new file mode 100644 index 00000000..88e1a906 --- /dev/null +++ b/package/nfs-utils/0002-support-backend_sqlite.c-Add-missing-sys-syscall.h.patch @@ -0,0 +1,31 @@ +From aee92881ba80cf2ae7381d19f09e7fbeda57974c Mon Sep 17 00:00:00 2001 +From: Petr Vorel +Date: Tue, 5 Dec 2023 23:20:33 +0100 +Subject: [PATCH] support/backend_sqlite.c: Add missing + +This fixes build on systems which actually needs getrandom() +(to get SYS_getrandom). + +Fixes: f92fd6ca ("support/backend_sqlite.c: Add getrandom() fallback") +Fixes: http://autobuild.buildroot.net/results/c5fde6099a8b228a8bdc3154d1e47dfa192e94ed/ +Reported-by: Giulio Benetti +Signed-off-by: Petr Vorel +Upstream: https://lore.kernel.org/linux-nfs/20231205223543.31443-2-pvorel@suse.cz/ +--- + support/reexport/backend_sqlite.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/support/reexport/backend_sqlite.c b/support/reexport/backend_sqlite.c +index 0eb5ea37..54dfe447 100644 +--- a/support/reexport/backend_sqlite.c ++++ b/support/reexport/backend_sqlite.c +@@ -7,6 +7,7 @@ + #include + #include + #include ++#include + #include + + #ifdef HAVE_GETRANDOM +-- +2.43.0 diff --git a/package/nfs-utils/Config.in b/package/nfs-utils/Config.in new file mode 100644 index 00000000..02cc7e78 --- /dev/null +++ b/package/nfs-utils/Config.in @@ -0,0 +1,66 @@ +comment "nfs-utils needs a toolchain w/ threads, headers >= 3.17" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 + +config BR2_PACKAGE_NFS_UTILS + bool "nfs-utils" + depends on BR2_TOOLCHAIN_HAS_THREADS # libtirpc, rpcbind + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # getrandom() + select BR2_PACKAGE_LIBEVENT + select BR2_PACKAGE_LIBTIRPC # IPv6 requires libtirpc + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + The NFS Linux kernel server. + + Supports NFSv3 and optionally NFSv4 (and later). + + http://linux-nfs.org/ + +if BR2_PACKAGE_NFS_UTILS + +config BR2_PACKAGE_NFS_UTILS_NFSV4 + bool "NFSv4/NFSv4.1" + depends on !BR2_STATIC_LIBS # keyutils, lvm2 + select BR2_PACKAGE_KEYUTILS + select BR2_PACKAGE_LVM2 + help + Enable NFSv4/NFSv4.1/NFSv4.2 support + +comment "NFSv4/NFSv4.1 support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_NFS_UTILS_GSS + bool "gss" + depends on BR2_PACKAGE_NFS_UTILS_NFSV4 + select BR2_PACKAGE_LIBTIRPC_GSS + help + Enable GSS support + +config BR2_PACKAGE_NFS_UTILS_RPCDEBUG + bool "rpcdebug" + help + The RPC debugging utility + +config BR2_PACKAGE_NFS_UTILS_RPC_LOCKD + bool "rpc.lockd" + help + NFS lock manager for Linux kernels older than 2.4 + +config BR2_PACKAGE_NFS_UTILS_RPC_NFSD + bool "rpc.nfsd" + default y + select BR2_PACKAGE_RPCBIND # runtime + help + NFS server + +config BR2_PACKAGE_NFS_UTILS_RPC_RQUOTAD + bool "rpc.rquotad" + help + NFS remote quota server + +endif diff --git a/package/nfs-utils/S60nfs b/package/nfs-utils/S60nfs new file mode 100644 index 00000000..4183ff62 --- /dev/null +++ b/package/nfs-utils/S60nfs @@ -0,0 +1,83 @@ +#!/bin/sh +# +# nfs This shell script takes care of starting and stopping +# the NFS services. Stolen from RedHat FC5. + +mkdir -p /var/lock/subsys +mkdir -p /run/nfs/sm +mkdir -p /run/nfs/sm.bak +touch /run/nfs/rmtab + +CFG_FILE=/etc/default/nfsd + +NR_THREADS=2 +if [ -f "${CFG_FILE}" ]; then + . "${CFG_FILE}" +fi + + +start() { + # Start daemons. + printf "Starting NFS statd: " + rpc.statd + [ $? = 0 ] && echo "OK" || echo "FAIL" + touch /var/lock/subsys/nfslock + + printf "Starting NFS services: " + /usr/sbin/exportfs -r + [ $? = 0 ] && echo "OK" || echo "FAIL" + + printf "Starting NFS daemon: " + rpc.nfsd ${NR_THREADS} + [ $? = 0 ] && echo "OK" || echo "FAIL" + + printf "Starting NFS mountd: " + rpc.mountd + [ $? = 0 ] && echo "OK" || echo "FAIL" + touch /var/lock/subsys/nfs +} + +stop() { + # Stop daemons. + printf "Shutting down NFS mountd: " + killall -q rpc.mountd 2>/dev/null + [ $? = 0 ] && echo "OK" || echo "FAIL" + + printf "Shutting down NFS daemon: " + killall -q nfsd 2>/dev/null + [ $? = 0 ] && echo "OK" || echo "FAIL" + + printf "Shutting down NFS services: " + /usr/sbin/exportfs -au + [ $? = 0 ] && echo "OK" || echo "FAIL" + + printf "Stopping NFS statd: " + killall -q rpc.statd 2>/dev/null + [ $? = 0 ] && echo "OK" || echo "FAIL" + rm -f /var/lock/subsys/nfs + rm -f /var/run/rpc.statd.pid + rm -f /var/lock/subsys/nfslock +} + +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + start + ;; + reload) + /usr/sbin/exportfs -r + touch /var/lock/subsys/nfs + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac + +exit 0 diff --git a/package/nfs-utils/nfs-utils.hash b/package/nfs-utils/nfs-utils.hash new file mode 100644 index 00000000..9d74991d --- /dev/null +++ b/package/nfs-utils/nfs-utils.hash @@ -0,0 +1,4 @@ +# From https://www.kernel.org/pub/linux/utils/nfs-utils/2.6.4/sha256sums.asc +sha256 01b3b0fb9c7d0bbabf5114c736542030748c788ec2fd9734744201e9b0a1119d nfs-utils-2.6.4.tar.xz +# Locally computed +sha256 576540abf5e95029ad4ad90e32071385a5e95b2c30708c706116f3eb87b9a3de COPYING diff --git a/package/nfs-utils/nfs-utils.mk b/package/nfs-utils/nfs-utils.mk new file mode 100644 index 00000000..b757e3e5 --- /dev/null +++ b/package/nfs-utils/nfs-utils.mk @@ -0,0 +1,123 @@ +################################################################################ +# +# nfs-utils +# +################################################################################ + +NFS_UTILS_VERSION = 2.6.4 +NFS_UTILS_SOURCE = nfs-utils-$(NFS_UTILS_VERSION).tar.xz +NFS_UTILS_SITE = https://www.kernel.org/pub/linux/utils/nfs-utils/$(NFS_UTILS_VERSION) +NFS_UTILS_LICENSE = GPL-2.0+ +NFS_UTILS_LICENSE_FILES = COPYING +NFS_UTILS_DEPENDENCIES = host-nfs-utils host-pkgconf libevent libtirpc sqlite util-linux +NFS_UTILS_CPE_ID_VENDOR = linux-nfs + +NFS_UTILS_CONF_ENV = knfsd_cv_bsd_signals=no + +NFS_UTILS_CONF_OPTS = \ + --enable-tirpc \ + --enable-ipv6 \ + --without-tcp-wrappers \ + --with-statedir=/run/nfs \ + --with-rpcgen=$(HOST_DIR)/bin/rpcgen + +HOST_NFS_UTILS_DEPENDENCIES = host-pkgconf host-libtirpc host-libevent host-sqlite host-util-linux + +HOST_NFS_UTILS_CONF_OPTS = \ + --enable-tirpc \ + --disable-nfsv4 \ + --disable-nfsv41 \ + --disable-gss \ + --disable-uuid \ + --disable-ipv6 \ + --without-tcp-wrappers \ + --with-statedir=/run/nfs \ + --disable-caps \ + --disable-nfsrahead \ + --without-systemd \ + --with-rpcgen=internal \ + --with-tirpcinclude=$(HOST_DIR)/include/tirpc + +NFS_UTILS_TARGETS_$(BR2_PACKAGE_NFS_UTILS_RPCDEBUG) += usr/sbin/rpcdebug +NFS_UTILS_TARGETS_$(BR2_PACKAGE_NFS_UTILS_RPC_LOCKD) += usr/sbin/rpc.lockd +NFS_UTILS_TARGETS_$(BR2_PACKAGE_NFS_UTILS_RPC_RQUOTAD) += usr/sbin/rpc.rquotad +NFS_UTILS_TARGETS_$(BR2_PACKAGE_NFS_UTILS_RPC_NFSD) += usr/sbin/exportfs \ + usr/sbin/rpc.mountd usr/sbin/rpc.nfsd usr/lib/systemd/system/nfs-server.service \ + usr/sbin/fsidd usr/lib/systemd/system/fsidd.service + +ifeq ($(BR2_PACKAGE_NFS_UTILS_NFSV4),y) +NFS_UTILS_CONF_OPTS += --enable-nfsv4 --enable-nfsv41 +NFS_UTILS_DEPENDENCIES += keyutils lvm2 +else +NFS_UTILS_CONF_OPTS += --disable-nfsv4 --disable-nfsv41 +endif + +ifeq ($(BR2_PACKAGE_NFS_UTILS_GSS),y) +NFS_UTILS_CONF_OPTS += \ + --enable-gss \ + --enable-svcgss \ + --with-krb5=$(STAGING_DIR)/usr +NFS_UTILS_DEPENDENCIES += libkrb5 +else +NFS_UTILS_CONF_OPTS += --disable-gss --disable-svcgss +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +NFS_UTILS_CONF_OPTS += --enable-caps +NFS_UTILS_DEPENDENCIES += libcap +else +NFS_UTILS_CONF_OPTS += --disable-caps +endif + +define NFS_UTILS_INSTALL_FIXUP + cd $(TARGET_DIR) && rm -f $(NFS_UTILS_TARGETS_) + touch $(TARGET_DIR)/etc/exports + $(INSTALL) -D -m 644 \ + $(@D)/utils/mount/nfsmount.conf $(TARGET_DIR)/etc/nfsmount.conf +endef +NFS_UTILS_POST_INSTALL_TARGET_HOOKS += NFS_UTILS_INSTALL_FIXUP + +ifeq ($(BR2_INIT_SYSTEMD),y) +NFS_UTILS_CONF_OPTS += --with-systemd=/usr/lib/systemd/system +NFS_UTILS_DEPENDENCIES += systemd +else +NFS_UTILS_CONF_OPTS += --without-systemd +endif + +ifeq ($(BR2_PACKAGE_NFS_UTILS_RPC_NFSD),y) +define NFS_UTILS_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_NFSD) +endef + +define NFS_UTILS_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/nfs-utils/S60nfs \ + $(TARGET_DIR)/etc/init.d/S60nfs +endef + +endif + +define NFS_UTILS_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0755 package/nfs-utils/nfs-utils_env.sh \ + $(TARGET_DIR)/usr/libexec/nfs-utils/nfs-utils_env.sh + + $(INSTALL) -D -m 0644 package/nfs-utils/nfs-utils_tmpfiles.conf \ + $(TARGET_DIR)/usr/lib/tmpfiles.d/nfs-utils.conf +endef + +define NFS_UTILS_REMOVE_NFSIOSTAT + rm -f $(TARGET_DIR)/usr/sbin/nfsiostat +endef + +# nfsiostat is interpreted python, so remove it unless it's in the target +NFS_UTILS_POST_INSTALL_TARGET_HOOKS += $(if $(BR2_PACKAGE_PYTHON3),,NFS_UTILS_REMOVE_NFSIOSTAT) + +define HOST_NFS_UTILS_BUILD_CMDS + $(MAKE) -C $(@D)/tools/rpcgen +endef + +define HOST_NFS_UTILS_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/tools/rpcgen/rpcgen $(HOST_DIR)/bin/rpcgen +endef + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/nfs-utils/nfs-utils_env.sh b/package/nfs-utils/nfs-utils_env.sh new file mode 100755 index 00000000..82284cef --- /dev/null +++ b/package/nfs-utils/nfs-utils_env.sh @@ -0,0 +1,3 @@ +#!/bin/sh +# This script is empty, it simply needs to exist to make the +# nfs-config.service happy. diff --git a/package/nfs-utils/nfs-utils_tmpfiles.conf b/package/nfs-utils/nfs-utils_tmpfiles.conf new file mode 100644 index 00000000..f87939fe --- /dev/null +++ b/package/nfs-utils/nfs-utils_tmpfiles.conf @@ -0,0 +1,4 @@ +d /run/nfs/sm 0700 root root - +d /run/nfs/sm.bak 0700 root root - +f /run/nfs/rmtab 0644 root root - +f /run/nfs/etab 0644 root root - diff --git a/package/nftables/Config.in b/package/nftables/Config.in new file mode 100644 index 00000000..833a3a38 --- /dev/null +++ b/package/nftables/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_NFTABLES + bool "nftables" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + select BR2_PACKAGE_LIBMNL + select BR2_PACKAGE_LIBNFTNL + help + nftables is the project that aims to replace the existing + {ip,ip6,arp,eb}tables framework. + Basically, this project provides a new packet filtering + framework, a new userspace utility and also a compatibility + layer for {ip,ip6}tables. + + http://www.netfilter.org/projects/nftables/index.html + +# Legacy: this used to be handled in nftables.mk +if BR2_PACKAGE_NFTABLES +source "package/nftables/nftables-python/Config.in" +endif + +comment "nftables needs a toolchain w/ wchar, headers >= 3.12" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 diff --git a/package/nftables/nftables-python/Config.in b/package/nftables/nftables-python/Config.in new file mode 100644 index 00000000..b16e2d0a --- /dev/null +++ b/package/nftables/nftables-python/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_NFTABLES_PYTHON + bool "python bindings" + default y # legacy + depends on BR2_PACKAGE_PYTHON3 diff --git a/package/nftables/nftables-python/nftables-python.hash b/package/nftables/nftables-python/nftables-python.hash new file mode 120000 index 00000000..9ac74580 --- /dev/null +++ b/package/nftables/nftables-python/nftables-python.hash @@ -0,0 +1 @@ +../nftables.hash \ No newline at end of file diff --git a/package/nftables/nftables-python/nftables-python.mk b/package/nftables/nftables-python/nftables-python.mk new file mode 100644 index 00000000..908bacd9 --- /dev/null +++ b/package/nftables/nftables-python/nftables-python.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# nftables-python +# +################################################################################ + +# The following assignments work only because nftables.mk is included before +# this file is. +NFTABLES_PYTHON_VERSION = $(NFTABLES_VERSION) +NFTABLES_PYTHON_SOURCE = $(NFTABLES_SOURCE) +NFTABLES_PYTHON_SITE = $(NFTABLES_SITE) +NFTABLES_PYTHON_LICENSE = $(NFTABLES_LICENSE) +NFTABLES_PYTHON_LICENSE_FILES = $(NFTABLES_LICENSE_FILES) + +# We share the same source code as nftables +NFTABLES_PYTHON_DL_SUBDIR = nftables + +NFTABLES_PYTHON_SUBDIR = py + +NFTABLES_PYTHON_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/nftables/nftables.hash b/package/nftables/nftables.hash new file mode 100644 index 00000000..c5ede113 --- /dev/null +++ b/package/nftables/nftables.hash @@ -0,0 +1,8 @@ +# From https://netfilter.org/projects/nftables/downloads.html +# Checked pgp signature: +# https://netfilter.org/projects/nftables/files/nftables-1.0.8.tar.xz.sig +# with key: +# https://netfilter.org/files/coreteam-gpg-key-0xD55D978A8A1420E4.txt +sha256 9373740de41a82dbc98818e0a46a073faeb8a8d0689fa4fa1a74399c32bf3d50 nftables-1.0.8.tar.xz +# Locally computed: +sha256 4ee1e51baf5f3166712fa0c3e01338c7257e50ddef245d28bb14ad68f6070ba5 COPYING diff --git a/package/nftables/nftables.mk b/package/nftables/nftables.mk new file mode 100644 index 00000000..9cba2433 --- /dev/null +++ b/package/nftables/nftables.mk @@ -0,0 +1,63 @@ +################################################################################ +# +# nftables +# +################################################################################ + +NFTABLES_VERSION = 1.0.8 +NFTABLES_SOURCE = nftables-$(NFTABLES_VERSION).tar.xz +NFTABLES_SITE = https://www.netfilter.org/projects/nftables/files +NFTABLES_DEPENDENCIES = libmnl libnftnl host-pkgconf $(TARGET_NLS_DEPENDENCIES) +NFTABLES_LICENSE = GPL-2.0 +NFTABLES_LICENSE_FILES = COPYING +NFTABLES_INSTALL_STAGING = YES +NFTABLES_SELINUX_MODULES = iptables + +# Python bindings are handled by package nftables-python +NFTABLES_CONF_OPTS = \ + --disable-debug \ + --disable-man-doc \ + --disable-pdf-doc \ + --disable-python + +ifeq ($(BR2_PACKAGE_GMP),y) +NFTABLES_DEPENDENCIES += gmp +NFTABLES_CONF_OPTS += --without-mini-gmp +else +NFTABLES_CONF_OPTS += --with-mini-gmp +endif + +ifeq ($(BR2_PACKAGE_LIBEDIT),y) +NFTABLES_CONF_OPTS += --with-cli=editline +NFTABLES_DEPENDENCIES += libedit +NFTABLES_LIBS += -lncurses +else ifeq ($(BR2_PACKAGE_READLINE),y) +NFTABLES_CONF_OPTS += --with-cli=readline +NFTABLES_DEPENDENCIES += readline +NFTABLES_LIBS += -lncurses +else ifeq ($(BR2_PACKAGE_LINENOISE),y) +NFTABLES_CONF_OPTS += --with-cli=linenoise +NFTABLES_DEPENDENCIES += linenoise +else +NFTABLES_CONF_OPTS += --without-cli +endif + +ifeq ($(BR2_PACKAGE_JANSSON),y) +NFTABLES_DEPENDENCIES += jansson +NFTABLES_CONF_OPTS += --with-json +else +NFTABLES_CONF_OPTS += --without-json +endif + +NFTABLES_CONF_ENV = LIBS="$(NFTABLES_LIBS)" + +define NFTABLES_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_TABLES) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_TABLES_INET) +endef + +$(eval $(autotools-package)) + +# Legacy: we used to handle it in this .mk +include package/nftables/nftables-python/nftables-python.mk diff --git a/package/nghttp2/Config.in b/package/nghttp2/Config.in new file mode 100644 index 00000000..03fe71d0 --- /dev/null +++ b/package/nghttp2/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_NGHTTP2 + bool "nghttp2" + help + nghttp2 is an implementation of HTTP/2 and its header + compression algorithm HPACK in C. + + https://nghttp2.org/ diff --git a/package/nghttp2/nghttp2.hash b/package/nghttp2/nghttp2.hash new file mode 100644 index 00000000..dddf6fe1 --- /dev/null +++ b/package/nghttp2/nghttp2.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 4a68a3040da92fd9872c056d0f6b0cd60de8410de10b578f8ade9ecc14d297e0 nghttp2-1.58.0.tar.xz +sha256 6b94f3abc1aabd0c72a7c7d92a77f79dda7c8a0cb3df839a97890b4116a2de2a COPYING diff --git a/package/nghttp2/nghttp2.mk b/package/nghttp2/nghttp2.mk new file mode 100644 index 00000000..7a05e38f --- /dev/null +++ b/package/nghttp2/nghttp2.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# nghttp2 +# +################################################################################ + +NGHTTP2_VERSION = 1.58.0 +NGHTTP2_SOURCE = nghttp2-$(NGHTTP2_VERSION).tar.xz +NGHTTP2_SITE = https://github.com/nghttp2/nghttp2/releases/download/v$(NGHTTP2_VERSION) +NGHTTP2_LICENSE = MIT +NGHTTP2_LICENSE_FILES = COPYING +NGHTTP2_INSTALL_STAGING = YES +NGHTTP2_CPE_ID_VENDOR = nghttp2 +NGHTTP2_DEPENDENCIES = host-pkgconf +NGHTTP2_CONF_OPTS = --enable-lib-only + +define NGHTTP2_INSTALL_CLEAN_HOOK + # Remove fetch-ocsp-response script unused by library + $(Q)$(RM) -rf $(TARGET_DIR)/usr/share/nghttp2 +endef + +NGHTTP2_POST_INSTALL_TARGET_HOOKS += NGHTTP2_INSTALL_CLEAN_HOOK + +$(eval $(autotools-package)) diff --git a/package/nginx-dav-ext/Config.in b/package/nginx-dav-ext/Config.in new file mode 100644 index 00000000..9e3a0faf --- /dev/null +++ b/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_LIBXSLT + help + NGINX WebDAV missing commands support (PROPFIND & OPTIONS). + + https://github.com/arut/nginx-dav-ext-module diff --git a/package/nginx-dav-ext/nginx-dav-ext.hash b/package/nginx-dav-ext/nginx-dav-ext.hash new file mode 100644 index 00000000..8a146c72 --- /dev/null +++ b/package/nginx-dav-ext/nginx-dav-ext.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 d2499d94d82d4e4eac8425d799e52883131ae86a956524040ff2fd230ef9f859 nginx-dav-ext-3.0.0.tar.gz +sha256 e377bb81e5024682a66438306e8ff9541d843d3831e480aec2f58eb8d83e48de LICENSE diff --git a/package/nginx-dav-ext/nginx-dav-ext.mk b/package/nginx-dav-ext/nginx-dav-ext.mk new file mode 100644 index 00000000..cce527e1 --- /dev/null +++ b/package/nginx-dav-ext/nginx-dav-ext.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# nginx-dav-ext +# +################################################################################ + +NGINX_DAV_EXT_VERSION = 3.0.0 +NGINX_DAV_EXT_SITE = $(call github,arut,nginx-dav-ext-module,v$(NGINX_DAV_EXT_VERSION)) +NGINX_DAV_EXT_LICENSE = BSD-2-Clause +NGINX_DAV_EXT_LICENSE_FILES = LICENSE +NGINX_DAV_EXT_DEPENDENCIES = libxslt + +$(eval $(generic-package)) diff --git a/package/nginx-modsecurity/0001-config-use-pkg-config.patch b/package/nginx-modsecurity/0001-config-use-pkg-config.patch new file mode 100644 index 00000000..3c74fa4b --- /dev/null +++ b/package/nginx-modsecurity/0001-config-use-pkg-config.patch @@ -0,0 +1,29 @@ +From 2907dcd628242eb29920321fb3a744915d11888f Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 26 Jul 2021 08:29:21 +0200 +Subject: [PATCH] config: use pkg-config + +Change to using pkg-config to find the path to modsecurity and its +dependencies. + +Signed-off-by: Fabrice Fontaine +--- + config | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/config b/config +index c6e7467..e20190f 100644 +--- a/config ++++ b/config +@@ -50,7 +50,7 @@ END + else + # auto-discovery + ngx_feature="ModSecurity library" +- ngx_feature_libs="-lmodsecurity" ++ ngx_feature_libs="$(${PKG_CONFIG:=pkg-config} --libs modsecurity)" + + . auto/feature + +-- +2.30.2 + diff --git a/package/nginx-modsecurity/Config.in b/package/nginx-modsecurity/Config.in new file mode 100644 index 00000000..0bbf05fa --- /dev/null +++ b/package/nginx-modsecurity/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_NGINX_MODSECURITY + bool "nginx-modsecurity" + depends on BR2_PACKAGE_NGINX_HTTP + depends on BR2_INSTALL_LIBSTDCPP # libmodsecurity + depends on BR2_TOOLCHAIN_HAS_THREADS # libmodsecurity + depends on !BR2_STATIC_LIBS # libmodsecurity + select BR2_PACKAGE_LIBMODSECURITY + help + The ModSecurity-nginx connector is the connection + point between nginx and libmodsecurity + (ModSecurity v3). + + https://github.com/SpiderLabs/ModSecurity-nginx + +comment "nginx-modsecurity needs a toolchain w/ C++, threads, dynamic library" + depends on BR2_PACKAGE_NGINX_HTTP + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/nginx-modsecurity/nginx-modsecurity.hash b/package/nginx-modsecurity/nginx-modsecurity.hash new file mode 100644 index 00000000..0cd2ee07 --- /dev/null +++ b/package/nginx-modsecurity/nginx-modsecurity.hash @@ -0,0 +1,4 @@ +# From https://github.com/SpiderLabs/ModSecurity-nginx/releases/download/v1.0.3/modsecurity-nginx-v1.0.3.tar.gz.sha256 +sha256 ae811c7208ac029cb7a99d6f63e03d3971797607517187f47620df39c1f78add modsecurity-nginx-v1.0.3.tar.gz +# Localy calculated +sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE diff --git a/package/nginx-modsecurity/nginx-modsecurity.mk b/package/nginx-modsecurity/nginx-modsecurity.mk new file mode 100644 index 00000000..a00c2004 --- /dev/null +++ b/package/nginx-modsecurity/nginx-modsecurity.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# nginx-modsecurity +# +################################################################################ + +NGINX_MODSECURITY_VERSION = 1.0.3 +NGINX_MODSECURITY_SOURCE = modsecurity-nginx-v$(NGINX_MODSECURITY_VERSION).tar.gz +NGINX_MODSECURITY_SITE = https://github.com/SpiderLabs/ModSecurity-nginx/releases/download/v$(NGINX_MODSECURITY_VERSION) +NGINX_MODSECURITY_LICENSE = Apache-2.0 +NGINX_MODSECURITY_LICENSE_FILES = LICENSE +NGINX_MODSECURITY_DEPENDENCIES = libmodsecurity + +$(eval $(generic-package)) diff --git a/package/nginx-naxsi/Config.in b/package/nginx-naxsi/Config.in new file mode 100644 index 00000000..d30d653d --- /dev/null +++ b/package/nginx-naxsi/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_NGINX_NAXSI + bool "nginx-naxsi" + depends on BR2_PACKAGE_NGINX_HTTP + # uses pcre2, so nginx needs to be built with pcre2 support + select BR2_PACKAGE_PCRE2 + help + NAXSI means Nginx Anti XSS & SQL Injection. + + Technically, it is a third party nginx module, available as + a package for many UNIX-like platforms. This module, by + default, reads a small subset of simple (and readable) rules + containing 99% of known patterns involved in website + vulnerabilities. For example, <, | or drop are not supposed + to be part of a URI. + + Being very simple, those patterns may match legitimate + queries, it is the Naxsi's administrator duty to add + specific rules that will whitelist legitimate + behaviours. The administrator can either add whitelists + manually by analyzing nginx's error log, or (recommended) + start the project with an intensive auto-learning phase that + will automatically generate whitelisting rules regarding a + website's behaviour. + + In short, Naxsi behaves like a DROP-by-default firewall, the + only task is to add required ACCEPT rules for the target + website to work properly. + + https://github.com/nbs-system/naxsi diff --git a/package/nginx-naxsi/nginx-naxsi.hash b/package/nginx-naxsi/nginx-naxsi.hash new file mode 100644 index 00000000..a724941b --- /dev/null +++ b/package/nginx-naxsi/nginx-naxsi.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 dbe2177411457f1cba98ee4673ce31876994ad06bdce5ecc0ee66384ef0e420e nginx-naxsi-d714f1636ea49a9a9f4f06dba14aee003e970834.tar.gz +sha256 589ed823e9a84c56feb95ac58e7cf384626b9cbf4fda2a907bc36e103de1bad2 LICENSE +sha256 d0732bc23658db5b9749e3f9cd4fe0f9b3e132b5955adccb08821845fe2a21c8 naxsi_src/ext/libinjection/COPYING diff --git a/package/nginx-naxsi/nginx-naxsi.mk b/package/nginx-naxsi/nginx-naxsi.mk new file mode 100644 index 00000000..84d167a6 --- /dev/null +++ b/package/nginx-naxsi/nginx-naxsi.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# nginx-naxsi +# +################################################################################ + +NGINX_NAXSI_VERSION = d714f1636ea49a9a9f4f06dba14aee003e970834 +NGINX_NAXSI_SITE = $(call github,nbs-system,naxsi,$(NGINX_NAXSI_VERSION)) +NGINX_NAXSI_LICENSE = GPL-3.0, BSD-3-Clause (libinjection) +NGINX_NAXSI_LICENSE_FILES = LICENSE naxsi_src/ext/libinjection/COPYING + +$(eval $(generic-package)) diff --git a/package/nginx-upload/Config.in b/package/nginx-upload/Config.in new file mode 100644 index 00000000..6bc1c3db --- /dev/null +++ b/package/nginx-upload/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_NGINX_UPLOAD + bool "nginx-upload" + depends on BR2_PACKAGE_NGINX_HTTP + select BR2_PACKAGE_OPENSSL + help + A module for nginx web server for handling file uploads + using multipart/form-data encoding (RFC 1867). + + https://github.com/vkholodkov/nginx-upload-module diff --git a/package/nginx-upload/nginx-upload.hash b/package/nginx-upload/nginx-upload.hash new file mode 100644 index 00000000..b1d380eb --- /dev/null +++ b/package/nginx-upload/nginx-upload.hash @@ -0,0 +1,3 @@ +#Locally Computed: +sha256 61ad5bcb67c8f688a4c7a5611311a351049361840b8dfe78be542066f475166e nginx-upload-4423994c7d8fb491d95867f6af968585d949e7a9.tar.gz +sha256 825f9684c427e29fd1ab085d5c421a4cbf96a460f3c58884a42c28bfbac5e544 LICENCE diff --git a/package/nginx-upload/nginx-upload.mk b/package/nginx-upload/nginx-upload.mk new file mode 100644 index 00000000..253ebeb3 --- /dev/null +++ b/package/nginx-upload/nginx-upload.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# nginx-upload +# +################################################################################ + +NGINX_UPLOAD_VERSION = 4423994c7d8fb491d95867f6af968585d949e7a9 +NGINX_UPLOAD_SITE = $(call github,vkholodkov,nginx-upload-module,$(NGINX_UPLOAD_VERSION)) +NGINX_UPLOAD_LICENSE = BSD-3-Clause +NGINX_UPLOAD_LICENSE_FILES = LICENCE +NGINX_UPLOAD_DEPENDENCIES = openssl + +$(eval $(generic-package)) diff --git a/package/nginx/0001-auto-type-sizeof-rework-autotest-to-be-cross-compila.patch b/package/nginx/0001-auto-type-sizeof-rework-autotest-to-be-cross-compila.patch new file mode 100644 index 00000000..332cb85b --- /dev/null +++ b/package/nginx/0001-auto-type-sizeof-rework-autotest-to-be-cross-compila.patch @@ -0,0 +1,89 @@ +From fb158af083e72c9aa0a8dfd4c6965f950192a230 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Tue, 4 Jul 2017 11:09:20 -0400 +Subject: [PATCH] auto/type/sizeof: rework autotest to be cross-compilation + friendly + +Rework the sizeof test to do the checks at compile time instead of at +runtime. This way, it does not break when cross-compiling for a +different CPU architecture. + +Signed-off-by: Samuel Martin + +Refresh for 1.8.0. + +Signed-off-by: Danomi Manchego +[martin@barkynet.com: Updated for 1.10.0] +Signed-off-by: Martin Bark +Signed-off-by: Adam Duskett +Refresh for 1.12.0 +--- + auto/types/sizeof | 37 ++++++++++++++++++++++++++++--------- + 1 file changed, 28 insertions(+), 9 deletions(-) + +diff --git a/auto/types/sizeof b/auto/types/sizeof +index 480d8cf..61dcd2d 100644 +--- a/auto/types/sizeof ++++ b/auto/types/sizeof +@@ -14,7 +14,7 @@ END + + ngx_size= + +-cat << END > $NGX_AUTOTEST.c ++cat << _EOF > $NGX_AUTOTEST.c + + #include + #include +@@ -25,22 +25,41 @@ $NGX_INCLUDE_UNISTD_H + $NGX_INCLUDE_INTTYPES_H + $NGX_INCLUDE_AUTO_CONFIG_H + +-int main(void) { +- printf("%d", (int) sizeof($ngx_type)); ++#if !defined( PASTE) ++#define PASTE2( x, y) x##y ++#define PASTE( x, y) PASTE2( x, y) ++#endif /* PASTE */ ++ ++#define SAY_IF_SIZEOF( typename, type, size) \\ ++ static char PASTE( PASTE( PASTE( sizeof_, typename), _is_), size) \\ ++ [(sizeof(type) == (size)) ? 1 : -1] ++ ++SAY_IF_SIZEOF(TEST_TYPENAME, TEST_TYPE, TEST_SIZE); ++ ++int main(void) ++{ + return 0; + } + +-END ++_EOF + + +-ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \ +- -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs" ++_ngx_typename=`echo "$ngx_type" | sed 's/ /_/g;s/\*/p/'` ++ngx_size="-1" ++ngx_size=`for i in 1 2 4 8 16 ; do \ ++ $CC $CC_TEST_FLAGS $CC_AUX_FLAGS \ ++ -DTEST_TYPENAME="$_ngx_typename" -DTEST_TYPE="$ngx_type" -DTEST_SIZE="$i" \ ++ $NGX_AUTOTEST.c -o $NGX_AUTOTEST \ ++ $NGX_LD_OPT $ngx_feature_libs >/dev/null 2>&1 || continue ;\ ++ echo $i ; break ; done` + +-eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1" ++rm -rf $NGX_AUTOTEST* + ++if test -z $ngx_size ; then ++ ngx_size=-1 ++fi + +-if [ -x $NGX_AUTOTEST ]; then +- ngx_size=`$NGX_AUTOTEST` ++if [ $ngx_size -gt 0 ]; then + echo " $ngx_size bytes" + fi + +-- +2.9.4 + diff --git a/package/nginx/0002-auto-feature-add-mechanism-allowing-to-force-feature.patch b/package/nginx/0002-auto-feature-add-mechanism-allowing-to-force-feature.patch new file mode 100644 index 00000000..13bef5ff --- /dev/null +++ b/package/nginx/0002-auto-feature-add-mechanism-allowing-to-force-feature.patch @@ -0,0 +1,135 @@ +From ef72be22ad6d58e230f75553d80b470b80c3303a Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sun, 4 May 2014 00:40:49 +0200 +Subject: [PATCH] auto/feature: add mechanism allowing to force feature run + test result + +Whenever a feature needs to run a test, the ngx_feature_run_force_result +variable can be set to the desired test result, and thus skip the test. + +Therefore, the generated config.h file will honor these presets. + +This mechanism aims to make easier cross-compilation support. + +Signed-off-by: Samuel Martin +--- + auto/feature | 80 ++++++++++++++++++++++++++++++++++++++++++++---------------- + 1 file changed, 59 insertions(+), 21 deletions(-) + +diff --git a/auto/feature b/auto/feature +index 1145f28..a194b85 100644 +--- a/auto/feature ++++ b/auto/feature +@@ -52,50 +52,88 @@ if [ -x $NGX_AUTOTEST ]; then + case "$ngx_feature_run" in + + yes) +- # /bin/sh is used to intercept "Killed" or "Abort trap" messages +- if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then +- echo " found" ++ if test -n "$ngx_feature_run_force_result" ; then ++ echo " not tested (maybe cross-compiling)" ++ if test -n "$ngx_feature_name" ; then ++ if test "$ngx_feature_run_force_result" = "yes" ; then ++ have=$ngx_have_feature . auto/have ++ fi ++ fi + ngx_found=yes ++ else + +- if test -n "$ngx_feature_name"; then +- have=$ngx_have_feature . auto/have ++ # /bin/sh is used to intercept "Killed" or "Abort trap" messages ++ if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then ++ echo " found" ++ ngx_found=yes ++ ++ if test -n "$ngx_feature_name"; then ++ have=$ngx_have_feature . auto/have ++ fi ++ ++ else ++ echo " found but is not working" + fi + +- else +- echo " found but is not working" + fi + ;; + + value) +- # /bin/sh is used to intercept "Killed" or "Abort trap" messages +- if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then +- echo " found" ++ if test -n "$ngx_feature_run_force_result" ; then ++ echo " not tested (maybe cross-compiling)" ++ cat << END >> $NGX_AUTO_CONFIG_H ++ ++#ifndef $ngx_feature_name ++#define $ngx_feature_name $ngx_feature_run_force_result ++#endif ++ ++END + ngx_found=yes ++ else + +- cat << END >> $NGX_AUTO_CONFIG_H ++ # /bin/sh is used to intercept "Killed" or "Abort trap" messages ++ if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then ++ echo " found" ++ ngx_found=yes ++ ++ cat << END >> $NGX_AUTO_CONFIG_H + + #ifndef $ngx_feature_name + #define $ngx_feature_name `$NGX_AUTOTEST` + #endif + + END +- else +- echo " found but is not working" ++ else ++ echo " found but is not working" ++ fi ++ + fi + ;; + + bug) +- # /bin/sh is used to intercept "Killed" or "Abort trap" messages +- if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then +- echo " not found" +- +- else +- echo " found" ++ if test -n "$ngx_feature_run_force_result" ; then ++ echo " not tested (maybe cross-compiling)" ++ if test -n "$ngx_feature_name"; then ++ if test "$ngx_feature_run_force_result" = "yes" ; then ++ have=$ngx_have_feature . auto/have ++ fi ++ fi + ngx_found=yes ++ else + +- if test -n "$ngx_feature_name"; then +- have=$ngx_have_feature . auto/have ++ # /bin/sh is used to intercept "Killed" or "Abort trap" messages ++ if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then ++ echo " not found" ++ ++ else ++ echo " found" ++ ngx_found=yes ++ ++ if test -n "$ngx_feature_name"; then ++ have=$ngx_have_feature . auto/have ++ fi + fi ++ + fi + ;; + +-- +1.9.2 + diff --git a/package/nginx/0003-auto-set-ngx_feature_run_force_result-for-each-featu.patch b/package/nginx/0003-auto-set-ngx_feature_run_force_result-for-each-featu.patch new file mode 100644 index 00000000..ee7f3e92 --- /dev/null +++ b/package/nginx/0003-auto-set-ngx_feature_run_force_result-for-each-featu.patch @@ -0,0 +1,207 @@ +From 57d9d632be9a9f7e3ac00f9eb10b069afd0b1543 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Thu, 29 May 2014 18:52:10 +0200 +Subject: [PATCH] auto/*: set ngx_feature_run_force_result for each feature + requiring run test + +Each feature requiring a run test has a matching preset variable (called +ngx_force_*) used to set ngx_feature_run_force_result. + +These ngx_force_* variables are passed through the environment at configure +time. + +Signed-off-by: Samuel Martin + +Refresh for 1.8.0. + +Signed-off-by: Danomi Manchego +[rebased against v1.20.1] +Signed-off-by: Adam Duskett +--- + auto/cc/conf | 3 +++ + auto/cc/name | 1 + + auto/lib/libatomic/conf | 1 + + auto/os/darwin | 3 +++ + auto/os/linux | 4 ++++ + auto/unix | 7 +++++++ + 6 files changed, 19 insertions(+) + +diff --git a/auto/cc/conf b/auto/cc/conf +index afbca62b..ad42c800 100644 +--- a/auto/cc/conf ++++ b/auto/cc/conf +@@ -184,6 +184,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then + ngx_feature="gcc builtin atomic operations" + ngx_feature_name=NGX_HAVE_GCC_ATOMIC + ngx_feature_run=yes ++ ngx_feature_run_force_result="$ngx_force_gcc_have_atomic" + ngx_feature_incs= + ngx_feature_path= + ngx_feature_libs= +@@ -205,6 +206,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then + ngx_feature="C99 variadic macros" + ngx_feature_name="NGX_HAVE_C99_VARIADIC_MACROS" + ngx_feature_run=yes ++ ngx_feature_run_force_result="$ngx_force_c99_have_variadic_macros" + ngx_feature_incs="#include + #define var(dummy, ...) sprintf(__VA_ARGS__)" + ngx_feature_path= +@@ -219,6 +221,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then + ngx_feature="gcc variadic macros" + ngx_feature_name="NGX_HAVE_GCC_VARIADIC_MACROS" + ngx_feature_run=yes ++ ngx_feature_run_force_result="$ngx_force_gcc_have_variadic_macros" + ngx_feature_incs="#include + #define var(dummy, args...) sprintf(args)" + ngx_feature_path= +diff --git a/auto/cc/name b/auto/cc/name +index ded93f5b..7c3cb74a 100644 +--- a/auto/cc/name ++++ b/auto/cc/name +@@ -8,6 +8,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then + ngx_feature="C compiler" + ngx_feature_name= + ngx_feature_run=yes ++ ngx_feature_run_force_result="$ngx_force_c_compiler" + ngx_feature_incs= + ngx_feature_path= + ngx_feature_libs= +diff --git a/auto/lib/libatomic/conf b/auto/lib/libatomic/conf +index d1e484ab..37249161 100644 +--- a/auto/lib/libatomic/conf ++++ b/auto/lib/libatomic/conf +@@ -15,6 +15,7 @@ else + ngx_feature="atomic_ops library" + ngx_feature_name=NGX_HAVE_LIBATOMIC + ngx_feature_run=yes ++ ngx_feature_run_force_result="$ngx_force_have_libatomic" + ngx_feature_incs="#define AO_REQUIRE_CAS + #include " + ngx_feature_path= +diff --git a/auto/os/darwin b/auto/os/darwin +index 429468f7..1ed47cca 100644 +--- a/auto/os/darwin ++++ b/auto/os/darwin +@@ -33,6 +33,7 @@ NGX_KQUEUE_CHECKED=YES + ngx_feature="kqueue's EVFILT_TIMER" + ngx_feature_name="NGX_HAVE_TIMER_EVENT" + ngx_feature_run=yes ++ngx_feature_run_force_result="$ngx_force_have_timer_event" + ngx_feature_incs="#include + #include " + ngx_feature_path= +@@ -63,6 +64,7 @@ ngx_feature_test="int kq; + ngx_feature="Darwin 64-bit kqueue millisecond timeout bug" + ngx_feature_name=NGX_DARWIN_KEVENT_BUG + ngx_feature_run=bug ++ngx_feature_run_force_result="$ngx_force_kevent_bug" + ngx_feature_incs="#include + #include " + ngx_feature_path= +@@ -92,6 +94,7 @@ ngx_feature_test="int kq; + ngx_feature="sendfile()" + ngx_feature_name="NGX_HAVE_SENDFILE" + ngx_feature_run=yes ++ngx_feature_run_force_result="$ngx_force_have_sendfile" + ngx_feature_incs="#include + #include + #include +diff --git a/auto/os/linux b/auto/os/linux +index 2c8a9bb8..eb4513ee 100644 +--- a/auto/os/linux ++++ b/auto/os/linux +@@ -37,6 +37,7 @@ fi + ngx_feature="epoll" + ngx_feature_name="NGX_HAVE_EPOLL" + ngx_feature_run=yes ++ngx_feature_run_force_result="$ngx_force_have_epoll" + ngx_feature_incs="#include " + ngx_feature_path= + ngx_feature_libs= +@@ -136,6 +137,7 @@ CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE" + ngx_feature="sendfile()" + ngx_feature_name="NGX_HAVE_SENDFILE" + ngx_feature_run=yes ++ngx_feature_run_force_result="$ngx_force_have_sendfile" + ngx_feature_incs="#include + #include " + ngx_feature_path= +@@ -157,6 +159,7 @@ CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" + ngx_feature="sendfile64()" + ngx_feature_name="NGX_HAVE_SENDFILE64" + ngx_feature_run=yes ++ngx_feature_run_force_result="$ngx_force_have_sendfile64" + ngx_feature_incs="#include + #include " + ngx_feature_path= +@@ -175,6 +178,7 @@ ngx_include="sys/prctl.h"; . auto/include + ngx_feature="prctl(PR_SET_DUMPABLE)" + ngx_feature_name="NGX_HAVE_PR_SET_DUMPABLE" + ngx_feature_run=yes ++ngx_feature_run_force_result="$ngx_force_have_pr_set_dumpable" + ngx_feature_incs="#include " + ngx_feature_path= + ngx_feature_libs= +diff --git a/auto/unix b/auto/unix +index 43d3b25a..3da00537 100644 +--- a/auto/unix ++++ b/auto/unix +@@ -100,6 +100,7 @@ if test -z "$NGX_KQUEUE_CHECKED"; then + ngx_feature="kqueue's EVFILT_TIMER" + ngx_feature_name="NGX_HAVE_TIMER_EVENT" + ngx_feature_run=yes ++ ngx_feature_run_force_result="$ngx_force_have_timer_event" + ngx_feature_incs="#include + #include " + ngx_feature_path= +@@ -722,6 +723,7 @@ if [ $ngx_found = no ]; then + ngx_feature="sys_nerr" + ngx_feature_name="NGX_SYS_NERR" + ngx_feature_run=value ++ ngx_feature_run_force_result="$ngx_force_sys_nerr" + ngx_feature_incs='#include + #include ' + ngx_feature_path= +@@ -737,6 +739,7 @@ if [ $ngx_found = no ]; then + ngx_feature="_sys_nerr" + ngx_feature_name="NGX_SYS_NERR" + ngx_feature_run=value ++ ngx_feature_run_force_result="$ngx_force_sys_nerr" + ngx_feature_incs='#include + #include ' + ngx_feature_path= +@@ -806,6 +809,7 @@ ngx_feature_test="void *p; p = memalign(4096, 4096); + ngx_feature="mmap(MAP_ANON|MAP_SHARED)" + ngx_feature_name="NGX_HAVE_MAP_ANON" + ngx_feature_run=yes ++ngx_feature_run_force_result="$ngx_force_have_map_anon" + ngx_feature_incs="#include " + ngx_feature_path= + ngx_feature_libs= +@@ -819,6 +823,7 @@ ngx_feature_test="void *p; + ngx_feature='mmap("/dev/zero", MAP_SHARED)' + ngx_feature_name="NGX_HAVE_MAP_DEVZERO" + ngx_feature_run=yes ++ngx_feature_run_force_result="$ngx_force_have_map_devzero" + ngx_feature_incs="#include + #include + #include " +@@ -834,6 +839,7 @@ ngx_feature_test='void *p; int fd; + ngx_feature="System V shared memory" + ngx_feature_name="NGX_HAVE_SYSVSHM" + ngx_feature_run=yes ++ngx_feature_run_force_result="$ngx_force_have_sysvshm" + ngx_feature_incs="#include + #include " + ngx_feature_path= +@@ -848,6 +854,7 @@ ngx_feature_test="int id; + ngx_feature="POSIX semaphores" + ngx_feature_name="NGX_HAVE_POSIX_SEM" + ngx_feature_run=yes ++ngx_feature_run_force_result="$ngx_force_have_posix_sem" + ngx_feature_incs="#include " + ngx_feature_path= + ngx_feature_libs= +-- +2.17.1 + diff --git a/package/nginx/0004-auto-lib-libxslt-conf-use-pkg-config.patch b/package/nginx/0004-auto-lib-libxslt-conf-use-pkg-config.patch new file mode 100644 index 00000000..09e708b7 --- /dev/null +++ b/package/nginx/0004-auto-lib-libxslt-conf-use-pkg-config.patch @@ -0,0 +1,34 @@ +From 7783d63c87f94797aa134786214b0a84c000be75 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Thu, 29 May 2014 19:22:27 +0200 +Subject: [PATCH] auto/lib/libxslt/conf: use pkg-config + +Change to using pkg-config to find the path to libxslt and its +dependencies. + +Signed-off-by: Martin Bark +[Peter: updated for 1.15.6] +Signed-off-by: Peter Korsgaard +--- + auto/lib/libxslt/conf | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/auto/lib/libxslt/conf b/auto/lib/libxslt/conf +index 3063ac7c..3209e364 100644 +--- a/auto/lib/libxslt/conf ++++ b/auto/lib/libxslt/conf +@@ -12,8 +12,9 @@ + #include + #include + #include " +- ngx_feature_path="/usr/include/libxml2" +- ngx_feature_libs="-lxml2 -lxslt" ++ ngx_feature_path="$(${PKG_CONFIG:=pkg-config} --cflags-only-I libxslt| ++ sed -re 's/(^|\s)-I\s*(\S+)/\1\2/g')" ++ ngx_feature_libs="$(${PKG_CONFIG:=pkg-config} --libs libxslt)" + ngx_feature_test="xmlParserCtxtPtr ctxt = NULL; + xsltStylesheetPtr sheet = NULL; + xmlDocPtr doc = NULL; +-- +2.11.0 + diff --git a/package/nginx/0005-auto-unix-make-sys_nerr-guessing-cross-friendly.patch b/package/nginx/0005-auto-unix-make-sys_nerr-guessing-cross-friendly.patch new file mode 100644 index 00000000..79fa4970 --- /dev/null +++ b/package/nginx/0005-auto-unix-make-sys_nerr-guessing-cross-friendly.patch @@ -0,0 +1,135 @@ +From 08617a8d29ee22831175697555558fec8f52772c Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sun, 1 Jun 2014 16:05:04 +0200 +Subject: [PATCH] auto/unix: make sys_nerr guessing cross-friendly + +This patch replaces the default sys_nerr runtest with a test done at +buildtime. + +The idea behind this buildtime test is finding the value of the ERR_MAX +macro if defined, or the EHWPOISON (which is currently the last errno) +otherwise. + +Signed-off-by: Samuel Martin + +Refresh for 1.8.0. + +Signed-off-by: Danomi Manchego +[rebased against v1.20.1] +Signed-off-by: Adam Duskett +--- + auto/os/sys_nerr | 78 ++++++++++++++++++++++++++++++++++++++++++++++++ + auto/unix | 8 +++++ + 2 files changed, 86 insertions(+) + create mode 100644 auto/os/sys_nerr + +diff --git a/auto/os/sys_nerr b/auto/os/sys_nerr +new file mode 100644 +index 0000000..8970f5f +--- /dev/null ++++ b/auto/os/sys_nerr +@@ -0,0 +1,78 @@ ++ ++# Copyright (C) Samuel Martin ++ ++ ++echo $ngx_n "checking for sys_nerr value...$ngx_c" ++ ++# sys_nerr guessing is done using a (very) poor (but working) ++# heuristics, by checking for the value of ERR_MAX if defined, or ++# EHWPOISON otherwise. ++ ++cat << END >> $NGX_AUTOCONF_ERR ++ ++---------------------------------------- ++checking for sys_nerr value ++ ++END ++ ++ngx_sys_nerr= ++ ++cat << _EOF > $NGX_AUTOTEST.c ++ ++#include ++#include ++ ++static char sys_nerr_test[ERR_MAX]; ++int main(void) ++{ ++ return 0; ++} ++ ++_EOF ++ ++if $CC $CC_TEST_FLAGS $CC_AUX_FLAGS \ ++ $NGX_AUTOTEST.c -o $NGX_AUTOTEST \ ++ $NGX_LD_OPT $ngx_feature_libs >/dev/null 2>&1 ; then ++ _ngx_max_err_macro=ERR_MAX ++else ++ # the +2 has been empirically found! ++ _ngx_max_err_macro="EHWPOISON + 2" ++fi ++ ++cat << _EOF > $NGX_AUTOTEST.c ++ ++#include ++#include ++ ++static char sys_nerr_test[(TEST_ERR_MAX == $_ngx_max_err_macro) ? 1 : -1]; ++int main(void) ++{ ++ return 0; ++} ++ ++_EOF ++ ++ ++ngx_sys_nerr=`for i in $(seq 0 2000) ; do \ ++ $CC $CC_TEST_FLAGS $CC_AUX_FLAGS \ ++ -DTEST_ERR_MAX="$i" \ ++ $NGX_AUTOTEST.c -o $NGX_AUTOTEST \ ++ $NGX_LD_OPT $ngx_feature_libs >/dev/null 2>&1 || continue ;\ ++ echo $i ; break ; done` ++ ++rm -rf $NGX_AUTOTEST* ++ ++if test -z $ngx_sys_nerr ; then ++ ngx_size=0 ++ ngx_sys_nerr=0 ++fi ++ ++cat << END >> $NGX_AUTO_CONFIG_H ++ ++#ifndef $ngx_feature_name ++#define $ngx_feature_name $ngx_sys_nerr ++#endif ++ ++END ++ ++echo " $ngx_sys_nerr" +diff --git a/auto/unix b/auto/unix +index 7dbf9d1..00a7370 100755 +--- a/auto/unix ++++ b/auto/unix +@@ -744,10 +744,18 @@ if [ $ngx_found = no ]; then + #include ' + ngx_feature_path= + ngx_feature_libs= ++ if false ; then ++ # Disabled because only valid for native build. + ngx_feature_test='printf("%d", _sys_nerr);' + . auto/feature + fi + ++else ++ # Cross-compilation support ++ . auto/os/sys_nerr ++ ++fi ++ + + ngx_feature="localtime_r()" + ngx_feature_name="NGX_HAVE_LOCALTIME_R" +-- +1.9.1 + diff --git a/package/nginx/0006-auto-lib-libgd-conf-use-pkg-config.patch b/package/nginx/0006-auto-lib-libgd-conf-use-pkg-config.patch new file mode 100644 index 00000000..31ccf88f --- /dev/null +++ b/package/nginx/0006-auto-lib-libgd-conf-use-pkg-config.patch @@ -0,0 +1,36 @@ +From 0551f2e5eb4143be0aacc0185cdc4afc9ca80204 Mon Sep 17 00:00:00 2001 +From: Martin Bark +Date: Fri, 6 May 2016 14:48:49 +0100 +Subject: [PATCH] auto/lib/libgd/conf: use pkg-config + +Change to using pkg-config to find the path to libgd and its +dependencies. + +Signed-off-by: Martin Bark +[Peter: updated for 1.15.6] +Signed-off-by: Peter Korsgaard +[Fabrice: use pkg-config instead of gdlib-config] +Signed-off-by: Fabrice Fontaine +--- + auto/lib/libgd/conf | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/auto/lib/libgd/conf b/auto/lib/libgd/conf +index 67863976..1a4379a5 100644 +--- a/auto/lib/libgd/conf ++++ b/auto/lib/libgd/conf +@@ -7,8 +7,9 @@ + ngx_feature_name= + ngx_feature_run=no + ngx_feature_incs="#include " +- ngx_feature_path= +- ngx_feature_libs="-lgd" ++ ngx_feature_path="$(${PKG_CONFIG:=pkg-config} --cflags-only-I gdlib| ++ sed -re 's/(^|\s)-I\s*(\S+)/\1\2/g')" ++ ngx_feature_libs="$(${PKG_CONFIG:=pkg-config} --libs gdlib)" + ngx_feature_test="gdImagePtr img = gdImageCreateFromGifPtr(1, NULL); + (void) img" + . auto/feature +-- +2.11.0 + diff --git a/package/nginx/0007-src-os-unix-ngx_linux_config.h-only-include-dlfcn.h-.patch b/package/nginx/0007-src-os-unix-ngx_linux_config.h-only-include-dlfcn.h-.patch new file mode 100644 index 00000000..c10fcd11 --- /dev/null +++ b/package/nginx/0007-src-os-unix-ngx_linux_config.h-only-include-dlfcn.h-.patch @@ -0,0 +1,33 @@ +From 8dc9dffc1f99ac951865f3135dfb5061a08d1f85 Mon Sep 17 00:00:00 2001 +From: Martin Bark +Date: Fri, 6 May 2016 16:29:17 +0100 +Subject: [PATCH] src/os/unix/ngx_linux_config.h: only include dlfcn.h if + available + +Signed-off-by: Martin Bark +--- + src/os/unix/ngx_linux_config.h | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/os/unix/ngx_linux_config.h b/src/os/unix/ngx_linux_config.h +index 2f6129d..4244086 100644 +--- a/src/os/unix/ngx_linux_config.h ++++ b/src/os/unix/ngx_linux_config.h +@@ -55,10 +55,12 @@ + #include + #include /* uname() */ + +-#include ++#include + + +-#include ++#if (NGX_HAVE_DLOPEN) ++#include ++#endif + + + #if (NGX_HAVE_POSIX_SEM) +-- +2.8.2 + diff --git a/package/nginx/0008-Allow-forcing-of-endianness-for-cross-compilation.patch b/package/nginx/0008-Allow-forcing-of-endianness-for-cross-compilation.patch new file mode 100644 index 00000000..3810412b --- /dev/null +++ b/package/nginx/0008-Allow-forcing-of-endianness-for-cross-compilation.patch @@ -0,0 +1,118 @@ +From 4bd8fe780ff2064f2d4e9c905d8a98dd0f9b6191 Mon Sep 17 00:00:00 2001 +From: Nevo Hed +Date: Mon, 30 Aug 2021 13:28:13 -0400 +Subject: [PATCH] Allow forcing of endianness for cross-compilation + +Upstream-status: Invalid (upstream doesn't support cross-compilation) +See https://trac.nginx.org/nginx/ticket/2240 + +Signed-off-by: Nevo Hed +--- + auto/endianness | 61 ++++++++++++++++++++++++++++++++----------------- + auto/options | 6 +++++ + 2 files changed, 46 insertions(+), 21 deletions(-) + +diff --git a/auto/endianness b/auto/endianness +index 1b552b6b..4b2a3cd7 100644 +--- a/auto/endianness ++++ b/auto/endianness +@@ -26,25 +26,44 @@ int main(void) { + + END + +-ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \ +- -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs" +- +-eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1" +- +-if [ -x $NGX_AUTOTEST ]; then +- if $NGX_AUTOTEST >/dev/null 2>&1; then +- echo " little endian" ++case "${NGX_FORCE_ENDIANNESS}" in ++ little) ++ echo " little endian (forced)" + have=NGX_HAVE_LITTLE_ENDIAN . auto/have +- else +- echo " big endian" +- fi +- +- rm -rf $NGX_AUTOTEST* +- +-else +- rm -rf $NGX_AUTOTEST* +- +- echo +- echo "$0: error: cannot detect system byte ordering" +- exit 1 +-fi ++ ;; ++ ++ big) ++ echo " big endian (forced)" ++ ;; ++ ++ "") ++ ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \ ++ -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs" ++ ++ eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1" ++ ++ if [ -x $NGX_AUTOTEST ]; then ++ if $NGX_AUTOTEST >/dev/null 2>&1; then ++ echo " little endian" ++ have=NGX_HAVE_LITTLE_ENDIAN . auto/have ++ else ++ echo " big endian" ++ fi ++ ++ rm -rf $NGX_AUTOTEST* ++ ++ else ++ rm -rf $NGX_AUTOTEST* ++ ++ echo ++ echo "$0: error: cannot detect system byte ordering" ++ exit 1 ++ fi ++ ;; ++ ++ *) ++ echo ++ echo "$0: error: invalid \"--force-endianness=${NGX_FORCE_ENDIANNESS}\"" ++ exit 1 ++ ;; ++esac +diff --git a/auto/options b/auto/options +index 80be906e..85a06456 100644 +--- a/auto/options ++++ b/auto/options +@@ -17,6 +17,8 @@ NGX_USER= + NGX_GROUP= + NGX_BUILD= + ++NGX_FORCE_ENDIANNESS= ++ + CC=${CC:-cc} + CPP= + NGX_OBJS=objs +@@ -196,6 +198,8 @@ do + --user=*) NGX_USER="$value" ;; + --group=*) NGX_GROUP="$value" ;; + ++ --force-endianness=*) NGX_FORCE_ENDIANNESS="$value" ;; ++ + --crossbuild=*) NGX_PLATFORM="$value" ;; + + --build=*) NGX_BUILD="$value" ;; +@@ -432,6 +436,8 @@ cat << END + --build=NAME set build name + --builddir=DIR set build directory + ++ --force-endianness=| force endianness ++ + --with-select_module enable select module + --without-select_module disable select module + --with-poll_module enable poll module +-- +2.31.1 + diff --git a/package/nginx/Config.in b/package/nginx/Config.in new file mode 100644 index 00000000..1c74f6e1 --- /dev/null +++ b/package/nginx/Config.in @@ -0,0 +1,463 @@ +menuconfig BR2_PACKAGE_NGINX + bool "nginx" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBATOMIC_OPS if BR2_sparc_v8 || BR2_sparc_leon3 + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + nginx is an HTTP and reverse proxy server, as well as a mail + proxy server. + + https://nginx.org/ + +if BR2_PACKAGE_NGINX + +config BR2_PACKAGE_NGINX_FILE_AIO + bool "file AIO support" + # Does not build, because nginx hardcodes using SYS_eventfd, + # but it's available on neither AArch64 nor ARC where only + # eventfd() is available. See + # https://bugs.launchpad.net/linaro-aarch64/+bug/1160013 + depends on !BR2_aarch64 + depends on !BR2_arc + +config BR2_PACKAGE_NGINX_THREADS + bool "thread pool support" + depends on BR2_TOOLCHAIN_HAS_THREADS + +comment "thread pool support needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_NGINX_HTTP + bool "http server" + default y + +if BR2_PACKAGE_NGINX_HTTP + +config BR2_PACKAGE_NGINX_HTTP_CACHE + bool "http cache support" + select BR2_PACKAGE_OPENSSL + +comment "http modules" + +config BR2_PACKAGE_NGINX_HTTP_SSL_MODULE + bool "ngx_http_ssl_module" + select BR2_PACKAGE_OPENSSL + help + Enable ngx_http_ssl_module + +config BR2_PACKAGE_NGINX_HTTP_V2_MODULE + bool "ngx_http_v2_module" + select BR2_PACKAGE_ZLIB + help + Enable ngx_http_spdy_module + +config BR2_PACKAGE_NGINX_HTTP_REALIP_MODULE + bool "ngx_http_realip_module" + help + Enable ngx_http_realip_module + +config BR2_PACKAGE_NGINX_HTTP_ADDITION_MODULE + bool "ngx_http_addition_module" + help + Enable ngx_http_addition_module + +config BR2_PACKAGE_NGINX_HTTP_XSLT_MODULE + bool "ngx_http_xslt_module" + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_LIBXSLT + help + Enable ngx_http_xslt_module + +config BR2_PACKAGE_NGINX_HTTP_IMAGE_FILTER_MODULE + bool "ngx_http_image_filter_module" + select BR2_PACKAGE_GD + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBPNG + help + Enable ngx_http_image_filter_module + +config BR2_PACKAGE_NGINX_HTTP_GEOIP_MODULE + bool "ngx_http_geoip_module" + select BR2_PACKAGE_GEOIP + help + Enable ngx_http_geoip_module + +config BR2_PACKAGE_NGINX_HTTP_SUB_MODULE + bool "ngx_http_sub_module" + help + Enable ngx_http_sub_module + +config BR2_PACKAGE_NGINX_HTTP_DAV_MODULE + bool "ngx_http_dav_module" + help + Enable ngx_http_dav_module + +config BR2_PACKAGE_NGINX_HTTP_FLV_MODULE + bool "ngx_http_flv_module" + help + Enable ngx_http_flv_module + +config BR2_PACKAGE_NGINX_HTTP_MP4_MODULE + bool "ngx_http_mp4_module" + help + Enable ngx_http_mp4_module + +config BR2_PACKAGE_NGINX_HTTP_GUNZIP_MODULE + bool "ngx_http_gunzip_module" + select BR2_PACKAGE_ZLIB + help + Enable ngx_http_gunzip_module + +config BR2_PACKAGE_NGINX_HTTP_GZIP_STATIC_MODULE + bool "ngx_http_gzip_static_module" + select BR2_PACKAGE_ZLIB + help + Enable ngx_http_gzip_static_module + +config BR2_PACKAGE_NGINX_HTTP_AUTH_REQUEST_MODULE + bool "ngx_http_auth_request_module" + help + Enable ngx_http_auth_request_module + +config BR2_PACKAGE_NGINX_HTTP_RANDOM_INDEX_MODULE + bool "ngx_http_random_index_module" + help + Enable ngx_http_random_index_module + +config BR2_PACKAGE_NGINX_HTTP_SECURE_LINK_MODULE + bool "ngx_http_secure_link_module" + select BR2_PACKAGE_OPENSSL + help + Enable ngx_http_secure_link_module + +config BR2_PACKAGE_NGINX_HTTP_DEGRADATION_MODULE + bool "ngx_http_degradation_module" + help + Enable ngx_http_degradation_module + +config BR2_PACKAGE_NGINX_HTTP_SLICE_MODULE + bool "ngx_http_slice_module" + help + Enable ngx_http_slice_module + +config BR2_PACKAGE_NGINX_HTTP_STUB_STATUS_MODULE + bool "ngx_http_stub_status_module" + help + Enable ngx_http_stub_status_module + +config BR2_PACKAGE_NGINX_HTTP_CHARSET_MODULE + bool "ngx_http_charset_module" + default y + help + Enable ngx_http_charset_module + +config BR2_PACKAGE_NGINX_HTTP_GZIP_MODULE + bool "ngx_http_gzip_module" + default y + select BR2_PACKAGE_ZLIB + help + Enable ngx_http_gzip_module + +config BR2_PACKAGE_NGINX_HTTP_SSI_MODULE + bool "ngx_http_ssi_module" + default y + help + Enable ngx_http_ssi_module + +config BR2_PACKAGE_NGINX_HTTP_USERID_MODULE + bool "ngx_http_userid_module" + default y + help + Enable ngx_http_userid_module + +config BR2_PACKAGE_NGINX_HTTP_ACCESS_MODULE + bool "ngx_http_access_module" + default y + help + Enable ngx_http_access_module + +config BR2_PACKAGE_NGINX_HTTP_AUTH_BASIC_MODULE + bool "ngx_http_auth_basic_module" + default y + help + Enable ngx_http_auth_basic_module + +config BR2_PACKAGE_NGINX_HTTP_AUTOINDEX_MODULE + bool "ngx_http_autoindex_module" + default y + help + Enable ngx_http_autoindex_module + +config BR2_PACKAGE_NGINX_HTTP_GEO_MODULE + bool "ngx_http_geo_module" + default y + help + Enable ngx_http_geo_module + +config BR2_PACKAGE_NGINX_HTTP_MAP_MODULE + bool "ngx_http_map_module" + default y + help + Enable ngx_http_map_module + +config BR2_PACKAGE_NGINX_HTTP_SPLIT_CLIENTS_MODULE + bool "ngx_http_split_clients_module" + default y + help + Enable ngx_http_split_clients_module + +config BR2_PACKAGE_NGINX_HTTP_REFERER_MODULE + bool "ngx_http_referer_module" + default y + help + Enable ngx_http_referer_module + +config BR2_PACKAGE_NGINX_HTTP_REWRITE_MODULE + bool "ngx_http_rewrite_module" + default y + select BR2_PACKAGE_PCRE2 + help + Enable ngx_http_rewrite_module + +config BR2_PACKAGE_NGINX_HTTP_PROXY_MODULE + bool "ngx_http_proxy_module" + default y + help + Enable ngx_http_proxy_module + +config BR2_PACKAGE_NGINX_HTTP_FASTCGI_MODULE + bool "ngx_http_fastcgi_module" + default y + help + Enable ngx_http_fastcgi_module + +config BR2_PACKAGE_NGINX_HTTP_UWSGI_MODULE + bool "ngx_http_uwsgi_module" + default y + help + Enable ngx_http_uwsgi_module + +config BR2_PACKAGE_NGINX_HTTP_SCGI_MODULE + bool "ngx_http_scgi_module" + default y + help + Enable ngx_http_scgi_module + +config BR2_PACKAGE_NGINX_HTTP_MEMCACHED_MODULE + bool "ngx_http_memcached_module" + default y + help + Enable ngx_http_memcached_module + +config BR2_PACKAGE_NGINX_HTTP_LIMIT_CONN_MODULE + bool "ngx_http_limit_conn_module" + default y + help + Enable ngx_http_limit_conn_module + +config BR2_PACKAGE_NGINX_HTTP_LIMIT_REQ_MODULE + bool "ngx_http_limit_req_module" + default y + help + Enable ngx_http_limit_req_module + +config BR2_PACKAGE_NGINX_HTTP_EMPTY_GIF_MODULE + bool "ngx_http_empty_gif_module" + default y + help + Enable ngx_http_empty_gif_module + +config BR2_PACKAGE_NGINX_HTTP_BROWSER_MODULE + bool "ngx_http_browser_module" + default y + help + Enable ngx_http_browser_module + +config BR2_PACKAGE_NGINX_HTTP_UPSTREAM_IP_HASH_MODULE + bool "ngx_http_upstream_ip_hash_module" + default y + help + Enable ngx_http_upstream_ip_hash_module + +config BR2_PACKAGE_NGINX_HTTP_UPSTREAM_LEAST_CONN_MODULE + bool "ngx_http_upstream_least_conn_module" + default y + help + Enable ngx_http_upstream_least_conn_module + +config BR2_PACKAGE_NGINX_HTTP_UPSTREAM_KEEPALIVE_MODULE + bool "ngx_http_upstream_keepalive_module" + default y + help + Enable ngx_http_upstream_keepalive_module + +config BR2_PACKAGE_NGINX_HTTP_UPSTREAM_RANDOM_MODULE + bool "ngx_http_upstream_random_module" + default y + help + Enable ngx_http_upstream_random_module + +config BR2_PACKAGE_NGINX_HTTP_UPSTREAM_ZONE_MODULE + bool "ngx_http_upstream_zone_module" + default y + depends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS + select BR2_PACKAGE_LIBATOMIC_OPS + help + Enable ngx_http_upstream_zone_module + +endif #BR2_PACKAGE_NGINX_HTTP + +config BR2_PACKAGE_NGINX_MAIL + bool "mail proxy modules" + +if BR2_PACKAGE_NGINX_MAIL + +config BR2_PACKAGE_NGINX_MAIL_SSL_MODULE + bool "ngx_mail_ssl_module" + select BR2_PACKAGE_OPENSSL + help + Enable ngx_mail_ssl_module + +config BR2_PACKAGE_NGINX_MAIL_POP3_MODULE + bool "ngx_mail_pop3_module" + default y + help + Enable ngx_mail_pop3_module + +config BR2_PACKAGE_NGINX_MAIL_IMAP_MODULE + bool "ngx_mail_imap_module" + default y + help + Enable ngx_mail_imap_module + +config BR2_PACKAGE_NGINX_MAIL_SMTP_MODULE + bool "ngx_mail_smtp_module" + default y + help + Enable ngx_mail_smtp_module + +endif #BR2_PACKAGE_NGINX_MAIL + +config BR2_PACKAGE_NGINX_STREAM + bool "stream proxy modules" + +if BR2_PACKAGE_NGINX_STREAM + +config BR2_PACKAGE_NGINX_STREAM_REALIP_MODULE + bool "ngx_stream_realip_module" + help + Enable ngx_stream_realip_module + +config BR2_PACKAGE_NGINX_STREAM_SET_MODULE + bool "ngx_stream_set_module" + default y + help + Enable ngx_stream_set_module + +config BR2_PACKAGE_NGINX_STREAM_SSL_MODULE + bool "ngx_stream_ssl_module" + select BR2_PACKAGE_OPENSSL + help + Enable ngx_stream_ssl_module + +config BR2_PACKAGE_NGINX_STREAM_GEOIP_MODULE + bool "ngx_stream_geoip_module" + select BR2_PACKAGE_GEOIP + help + Enable ngx_stream_geoip_module + +config BR2_PACKAGE_NGINX_STREAM_SSL_PREREAD_MODULE + bool "ngx_stream_ssl_preread_module" + help + Enable ngx_stream_ssl_preread_module + +config BR2_PACKAGE_NGINX_STREAM_LIMIT_CONN_MODULE + bool "ngx_stream_limit_conn_module" + default y + help + Enable ngx_stream_limit_conn_module + +config BR2_PACKAGE_NGINX_STREAM_ACCESS_MODULE + bool "ngx_stream_access_module" + default y + help + Enable ngx_stream_access_module + +config BR2_PACKAGE_NGINX_STREAM_GEO_MODULE + bool "ngx_stream_geo_module" + default y + help + Enable ngx_stream_geo_module + +config BR2_PACKAGE_NGINX_STREAM_MAP_MODULE + bool "ngx_stream_map_module" + default y + help + Enable ngx_stream_map_module + +config BR2_PACKAGE_NGINX_STREAM_SPLIT_CLIENTS_MODULE + bool "ngx_stream_split_clients_module" + default y + help + Enable ngx_stream_split_clients_module + +config BR2_PACKAGE_NGINX_STREAM_RETURN_MODULE + bool "ngx_stream_return_module" + default y + help + Enable ngx_stream_return_module + +config BR2_PACKAGE_NGINX_STREAM_UPSTREAM_HASH_MODULE + bool "ngx_stream_upstream_hash_module" + default y + help + Enable ngx_stream_upstream_hash_module + +config BR2_PACKAGE_NGINX_STREAM_UPSTREAM_LEAST_CONN_MODULE + bool "ngx_stream_upstream_least_conn_module" + default y + help + Enable ngx_stream_upstream_least_conn_module + +config BR2_PACKAGE_NGINX_STREAM_UPSTREAM_RANDOM_MODULE + bool "ngx_stream_upstream_random_module" + default y + help + Enable ngx_stream_upstream_random_module + +config BR2_PACKAGE_NGINX_STREAM_UPSTREAM_ZONE_MODULE + bool "ngx_stream_upstream_zone_module" + default y + depends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS + select BR2_PACKAGE_LIBATOMIC_OPS + help + Enable ngx_stream_upstream_zone_module + +endif #BR2_PACKAGE_NGINX_STREAM + +config BR2_PACKAGE_NGINX_DEBUG + bool "debug logging" + help + Enable debug logging. The debug level should be set with + the error_log directive. For example + + error_log /var/log/nginx/error.log debug; + +comment "misc. modules" + +config BR2_PACKAGE_NGINX_SELECT_MODULE + bool "ngx_select_module" + help + Enable ngx_select_module + +config BR2_PACKAGE_NGINX_POLL_MODULE + bool "ngx_poll_module" + help + Enable ngx_poll_module + +config BR2_PACKAGE_NGINX_ADD_MODULES + string "additional modules" + help + Space separated list of urls of the additional modules + +endif diff --git a/package/nginx/S50nginx b/package/nginx/S50nginx new file mode 100644 index 00000000..6c243f40 --- /dev/null +++ b/package/nginx/S50nginx @@ -0,0 +1,31 @@ +#!/bin/sh +# +# Start/stop nginx +# + +NGINX=/usr/sbin/nginx +PIDFILE=/var/run/nginx.pid + +case "$1" in + start) + echo "Starting nginx..." + mkdir -p /var/log/nginx /var/cache/nginx + start-stop-daemon -S -x "$NGINX" -p "$PIDFILE" + ;; + stop) + echo "Stopping nginx..." + start-stop-daemon -K -x "$NGINX" -p "$PIDFILE" -o + ;; + reload|force-reload) + echo "Reloading nginx configuration..." + "$NGINX" -s reload + ;; + restart) + "$0" stop + sleep 1 # Prevent race condition: ensure nginx stops before start. + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart|reload|force-reload}" + exit 1 +esac diff --git a/package/nginx/nginx.hash b/package/nginx/nginx.hash new file mode 100644 index 00000000..4cf859da --- /dev/null +++ b/package/nginx/nginx.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 627fe086209bba80a2853a0add9d958d7ebbdffa1a8467a5784c9a6b4f03d738 nginx-1.26.2.tar.gz +# License files, locally calculated +sha256 f19c4caea60247490199c5a6d0134281e3fb20b3d7577e6873c628597f5381d9 LICENSE diff --git a/package/nginx/nginx.logrotate b/package/nginx/nginx.logrotate new file mode 100644 index 00000000..e0fa9ec4 --- /dev/null +++ b/package/nginx/nginx.logrotate @@ -0,0 +1,9 @@ +/var/log/nginx/*log { + missingok + create 640 http log + sharedscripts + compress + postrotate + test ! -r /var/run/nginx.pid || kill -USR1 `cat /var/run/nginx.pid` + endscript +} diff --git a/package/nginx/nginx.mk b/package/nginx/nginx.mk new file mode 100644 index 00000000..d3b042c5 --- /dev/null +++ b/package/nginx/nginx.mk @@ -0,0 +1,327 @@ +################################################################################ +# +# nginx +# +################################################################################ + +NGINX_VERSION = 1.26.2 +NGINX_SITE = https://nginx.org/download +NGINX_LICENSE = BSD-2-Clause +NGINX_LICENSE_FILES = LICENSE +NGINX_CPE_ID_VENDOR = f5 +NGINX_DEPENDENCIES = \ + host-pkgconf \ + $(if $(BR2_PACKAGE_LIBXCRYPT),libxcrypt) + +NGINX_CONF_OPTS = \ + --crossbuild=Linux::$(BR2_ARCH) \ + --with-cc="$(TARGET_CC)" \ + --with-cpp="$(TARGET_CC)" \ + --with-ld-opt="$(TARGET_LDFLAGS)" + +# www-data user and group are used for nginx. Because these user and group +# are already set by buildroot, it is not necessary to redefine them. +# See system/skeleton/etc/passwd +# username: www-data uid: 33 +# groupname: www-data gid: 33 +# +# So, we just need to create the directories used by nginx with the right +# ownership. +define NGINX_PERMISSIONS + /var/lib/nginx d 755 33 33 - - - - - +endef + +# disable external libatomic_ops because its detection fails. +NGINX_CONF_ENV += \ + ngx_force_c_compiler=yes \ + ngx_force_c99_have_variadic_macros=yes \ + ngx_force_gcc_have_variadic_macros=yes \ + ngx_force_gcc_have_atomic=yes \ + ngx_force_have_epoll=yes \ + ngx_force_have_sendfile=yes \ + ngx_force_have_sendfile64=yes \ + ngx_force_have_pr_set_dumpable=yes \ + ngx_force_have_timer_event=yes \ + ngx_force_have_map_anon=yes \ + ngx_force_have_map_devzero=yes \ + ngx_force_have_sysvshm=yes \ + ngx_force_have_posix_sem=yes + +# prefix: nginx root configuration location +NGINX_CONF_OPTS += \ + --force-endianness=$(call qstrip,$(call LOWERCASE,$(BR2_ENDIAN))) \ + --prefix=/usr \ + --conf-path=/etc/nginx/nginx.conf \ + --sbin-path=/usr/sbin/nginx \ + --pid-path=/run/nginx.pid \ + --lock-path=/run/lock/nginx.lock \ + --user=www-data \ + --group=www-data \ + --error-log-path=/var/log/nginx/error.log \ + --http-log-path=/var/log/nginx/access.log \ + --http-client-body-temp-path=/var/cache/nginx/client-body \ + --http-proxy-temp-path=/var/cache/nginx/proxy \ + --http-fastcgi-temp-path=/var/cache/nginx/fastcgi \ + --http-scgi-temp-path=/var/cache/nginx/scgi \ + --http-uwsgi-temp-path=/var/cache/nginx/uwsgi + +NGINX_CONF_OPTS += \ + $(if $(BR2_PACKAGE_NGINX_FILE_AIO),--with-file-aio) \ + $(if $(BR2_PACKAGE_NGINX_THREADS),--with-threads) + +ifeq ($(BR2_PACKAGE_LIBATOMIC_OPS),y) +NGINX_DEPENDENCIES += libatomic_ops +NGINX_CONF_OPTS += --with-libatomic +NGINX_CONF_ENV += ngx_force_have_libatomic=yes +ifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y) +NGINX_CFLAGS += "-DAO_NO_SPARC_V9" +endif +else +NGINX_CONF_ENV += ngx_force_have_libatomic=no +endif + +ifeq ($(BR2_PACKAGE_PCRE2),y) +NGINX_DEPENDENCIES += pcre2 +NGINX_CONF_OPTS += --with-pcre +else +NGINX_CONF_OPTS += --without-pcre +endif + +# modules disabled or not activated because of missing dependencies: +# - google_perftools (googleperftools) +# - http_perl_module (host-perl) +# - pcre-jit (want to rebuild pcre) + +# Notes: +# * Feature/module option are *not* symetric. +# If a feature is on by default, only its --without-xxx option exists; +# if a feature is off by default, only its --with-xxx option exists. +# * The configure script fails if unknown options are passed on the command +# line. + +# misc. modules +NGINX_CONF_OPTS += \ + $(if $(BR2_PACKAGE_NGINX_SELECT_MODULE),--with-select_module,--without-select_module) \ + $(if $(BR2_PACKAGE_NGINX_POLL_MODULE),--with-poll_module,--without-poll_module) + +ifneq ($(BR2_PACKAGE_NGINX_ADD_MODULES),) +NGINX_CONF_OPTS += \ + $(addprefix --add-module=,$(call qstrip,$(BR2_PACKAGE_NGINX_ADD_MODULES))) +endif + +# http server modules +ifeq ($(BR2_PACKAGE_NGINX_HTTP),y) +ifeq ($(BR2_PACKAGE_NGINX_HTTP_CACHE),y) +NGINX_DEPENDENCIES += openssl +else +NGINX_CONF_OPTS += --without-http-cache +endif + +ifeq ($(BR2_PACKAGE_NGINX_HTTP_V2_MODULE),y) +NGINX_DEPENDENCIES += zlib +NGINX_CONF_OPTS += --with-http_v2_module +endif + +ifeq ($(BR2_PACKAGE_NGINX_HTTP_SSL_MODULE),y) +NGINX_DEPENDENCIES += openssl +NGINX_CONF_OPTS += --with-http_ssl_module +endif + +ifeq ($(BR2_PACKAGE_NGINX_HTTP_XSLT_MODULE),y) +NGINX_DEPENDENCIES += libxml2 libxslt +NGINX_CONF_OPTS += --with-http_xslt_module +endif + +ifeq ($(BR2_PACKAGE_NGINX_HTTP_IMAGE_FILTER_MODULE),y) +NGINX_DEPENDENCIES += gd jpeg libpng +NGINX_CONF_OPTS += --with-http_image_filter_module +endif + +ifeq ($(BR2_PACKAGE_NGINX_HTTP_GEOIP_MODULE),y) +NGINX_DEPENDENCIES += geoip +NGINX_CONF_OPTS += --with-http_geoip_module +endif + +ifeq ($(BR2_PACKAGE_NGINX_HTTP_GUNZIP_MODULE),y) +NGINX_DEPENDENCIES += zlib +NGINX_CONF_OPTS += --with-http_gunzip_module +endif + +ifeq ($(BR2_PACKAGE_NGINX_HTTP_GZIP_STATIC_MODULE),y) +NGINX_DEPENDENCIES += zlib +NGINX_CONF_OPTS += --with-http_gzip_static_module +endif + +ifeq ($(BR2_PACKAGE_NGINX_HTTP_SECURE_LINK_MODULE),y) +NGINX_DEPENDENCIES += openssl +NGINX_CONF_OPTS += --with-http_secure_link_module +endif + +ifeq ($(BR2_PACKAGE_NGINX_HTTP_GZIP_MODULE),y) +NGINX_DEPENDENCIES += zlib +else +NGINX_CONF_OPTS += --without-http_gzip_module +endif + +ifeq ($(BR2_PACKAGE_NGINX_HTTP_REWRITE_MODULE),y) +NGINX_DEPENDENCIES += pcre2 +else +NGINX_CONF_OPTS += --without-http_rewrite_module +endif + +NGINX_CONF_OPTS += \ + $(if $(BR2_PACKAGE_NGINX_HTTP_REALIP_MODULE),--with-http_realip_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_ADDITION_MODULE),--with-http_addition_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_SUB_MODULE),--with-http_sub_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_DAV_MODULE),--with-http_dav_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_FLV_MODULE),--with-http_flv_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_MP4_MODULE),--with-http_mp4_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_AUTH_REQUEST_MODULE),--with-http_auth_request_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_RANDOM_INDEX_MODULE),--with-http_random_index_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_DEGRADATION_MODULE),--with-http_degradation_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_SLICE_MODULE),--with-http_slice_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_STUB_STATUS_MODULE),--with-http_stub_status_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_CHARSET_MODULE),,--without-http_charset_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_SSI_MODULE),,--without-http_ssi_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_USERID_MODULE),,--without-http_userid_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_ACCESS_MODULE),,--without-http_access_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_AUTH_BASIC_MODULE),,--without-http_auth_basic_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_AUTOINDEX_MODULE),,--without-http_autoindex_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_GEO_MODULE),,--without-http_geo_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_MAP_MODULE),,--without-http_map_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_SPLIT_CLIENTS_MODULE),,--without-http_split_clients_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_REFERER_MODULE),,--without-http_referer_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_PROXY_MODULE),,--without-http_proxy_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_FASTCGI_MODULE),,--without-http_fastcgi_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_UWSGI_MODULE),,--without-http_uwsgi_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_SCGI_MODULE),,--without-http_scgi_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_MEMCACHED_MODULE),,--without-http_memcached_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_LIMIT_CONN_MODULE),,--without-http_limit_conn_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_LIMIT_REQ_MODULE),,--without-http_limit_req_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_EMPTY_GIF_MODULE),,--without-http_empty_gif_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_BROWSER_MODULE),,--without-http_browser_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_UPSTREAM_IP_HASH_MODULE),,--without-http_upstream_ip_hash_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_UPSTREAM_LEAST_CONN_MODULE),,--without-http_upstream_least_conn_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_UPSTREAM_RANDOM_MODULE),,--without-http_upstream_random_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_UPSTREAM_KEEPALIVE_MODULE),,--without-http_upstream_keepalive_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_UPSTREAM_ZONE_MODULE),,--without-http_upstream_zone_module) + +else # !BR2_PACKAGE_NGINX_HTTP +NGINX_CONF_OPTS += --without-http +endif # BR2_PACKAGE_NGINX_HTTP + +# mail modules +ifeq ($(BR2_PACKAGE_NGINX_MAIL),y) +NGINX_CONF_OPTS += --with-mail + +ifeq ($(BR2_PACKAGE_NGINX_MAIL_SSL_MODULE),y) +NGINX_DEPENDENCIES += openssl +NGINX_CONF_OPTS += --with-mail_ssl_module +endif + +NGINX_CONF_OPTS += \ + $(if $(BR2_PACKAGE_NGINX_MAIL_POP3_MODULE),,--without-mail_pop3_module) \ + $(if $(BR2_PACKAGE_NGINX_MAIL_IMAP_MODULE),,--without-mail_imap_module) \ + $(if $(BR2_PACKAGE_NGINX_MAIL_SMTP_MODULE),,--without-mail_smtp_module) + +endif # BR2_PACKAGE_NGINX_MAIL + +# stream modules +ifeq ($(BR2_PACKAGE_NGINX_STREAM),y) +NGINX_CONF_OPTS += --with-stream + +ifeq ($(BR2_PACKAGE_NGINX_STREAM_REALIP_MODULE),y) +NGINX_CONF_OPTS += --with-stream_realip_module +endif + +ifeq ($(BR2_PACKAGE_NGINX_STREAM_SET_MODULE),) +NGINX_CONF_OPTS += --without-stream_set_module +endif + +ifeq ($(BR2_PACKAGE_NGINX_STREAM_SSL_MODULE),y) +NGINX_DEPENDENCIES += openssl +NGINX_CONF_OPTS += --with-stream_ssl_module +endif + +ifeq ($(BR2_PACKAGE_NGINX_STREAM_GEOIP_MODULE),y) +NGINX_DEPENDENCIES += geoip +NGINX_CONF_OPTS += --with-stream_geoip_module +endif + +ifeq ($(BR2_PACKAGE_NGINX_STREAM_SSL_PREREAD_MODULE),y) +NGINX_CONF_OPTS += --with-stream_ssl_preread_module +endif + +NGINX_CONF_OPTS += \ + $(if $(BR2_PACKAGE_NGINX_STREAM_LIMIT_CONN_MODULE),,--without-stream_limit_conn_module) \ + $(if $(BR2_PACKAGE_NGINX_STREAM_ACCESS_MODULE),,--without-stream_access_module) \ + $(if $(BR2_PACKAGE_NGINX_STREAM_GEO_MODULE),,--without-stream_geo_module) \ + $(if $(BR2_PACKAGE_NGINX_STREAM_MAP_MODULE),,--without-stream_map_module) \ + $(if $(BR2_PACKAGE_NGINX_STREAM_SPLIT_CLIENTS_MODULE),,--without-stream_split_clients_module) \ + $(if $(BR2_PACKAGE_NGINX_STREAM_RETURN_MODULE),,--without-stream_return_module) \ + $(if $(BR2_PACKAGE_NGINX_STREAM_UPSTREAM_HASH_MODULE),,--without-stream_upstream_hash_module) \ + $(if $(BR2_PACKAGE_NGINX_STREAM_UPSTREAM_LEAST_CONN_MODULE),,--without-stream_upstream_least_conn_module) \ + $(if $(BR2_PACKAGE_NGINX_STREAM_UPSTREAM_RANDOM_MODULE),,--without-stream_upstream_random_module) \ + $(if $(BR2_PACKAGE_NGINX_STREAM_UPSTREAM_ZONE_MODULE),,--without-stream_upstream_zone_module) + +endif # BR2_PACKAGE_NGINX_STREAM + +# external modules +ifeq ($(BR2_PACKAGE_NGINX_UPLOAD),y) +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 + +ifeq ($(BR2_PACKAGE_NGINX_MODSECURITY),y) +NGINX_DEPENDENCIES += nginx-modsecurity +NGINX_CONF_OPTS += --add-module=$(NGINX_MODSECURITY_DIR) +endif + +# Debug logging +NGINX_CONF_OPTS += $(if $(BR2_PACKAGE_NGINX_DEBUG),--with-debug) + +define NGINX_DISABLE_WERROR + $(SED) 's/-Werror//g' -i $(@D)/auto/cc/* +endef + +NGINX_PRE_CONFIGURE_HOOKS += NGINX_DISABLE_WERROR + +define NGINX_CONFIGURE_CMDS + cd $(@D) ; $(NGINX_CONF_ENV) \ + PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ + ./configure $(NGINX_CONF_OPTS) \ + --with-cc-opt="$(TARGET_CFLAGS) $(NGINX_CFLAGS)" +endef + +define NGINX_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define NGINX_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install + $(RM) $(TARGET_DIR)/usr/sbin/nginx.old + $(INSTALL) -D -m 0664 package/nginx/nginx.logrotate \ + $(TARGET_DIR)/etc/logrotate.d/nginx +endef + +define NGINX_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/nginx/nginx.service \ + $(TARGET_DIR)/usr/lib/systemd/system/nginx.service +endef + +define NGINX_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/nginx/S50nginx \ + $(TARGET_DIR)/etc/init.d/S50nginx +endef + +$(eval $(generic-package)) diff --git a/package/nginx/nginx.service b/package/nginx/nginx.service new file mode 100644 index 00000000..11ccd622 --- /dev/null +++ b/package/nginx/nginx.service @@ -0,0 +1,17 @@ +[Unit] +Description=A high performance web server and a reverse proxy server +After=syslog.target network.target + +[Service] +Type=forking +LogsDirectory=nginx +CacheDirectory=nginx +PIDFile=/run/nginx.pid +ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;' +ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;' +ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload +ExecStop=/usr/sbin/nginx -s quit +PrivateDevices=yes + +[Install] +WantedBy=multi-user.target diff --git a/package/ngircd/Config.in b/package/ngircd/Config.in new file mode 100644 index 00000000..1e93a570 --- /dev/null +++ b/package/ngircd/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_NGIRCD + bool "ngircd" + depends on BR2_USE_MMU # fork() + help + Next Generation IRC server daemon. + + http://ngircd.barton.de diff --git a/package/ngircd/ngircd.hash b/package/ngircd/ngircd.hash new file mode 100644 index 00000000..e46e8e66 --- /dev/null +++ b/package/ngircd/ngircd.hash @@ -0,0 +1,3 @@ +# Locally calculated after checking pgp signature +sha256 55c16fd26009f6fc6a007df4efac87a02e122f680612cda1ce26e17a18d86254 ngircd-26.1.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/ngircd/ngircd.mk b/package/ngircd/ngircd.mk new file mode 100644 index 00000000..47d8ef22 --- /dev/null +++ b/package/ngircd/ngircd.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# ngircd +# +################################################################################ + +NGIRCD_VERSION = 26.1 +NGIRCD_SOURCE = ngircd-$(NGIRCD_VERSION).tar.xz +NGIRCD_SITE = https://arthur.barton.de/pub/ngircd +NGIRCD_LICENSE = GPL-2.0+ +NGIRCD_LICENSE_FILES = COPYING +NGIRCD_CPE_ID_VENDOR = barton + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +NGIRCD_CONF_OPTS += --with-pam=$(STAGING_DIR)/usr +NGIRCD_DEPENDENCIES += linux-pam +else +NGIRCD_CONF_OPTS += --without-pam +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +NGIRCD_CONF_OPTS += --with-openssl +NGIRCD_DEPENDENCIES += host-pkgconf openssl +else +NGIRCD_CONF_OPTS += --without-openssl +ifeq ($(BR2_PACKAGE_GNUTLS),y) +NGIRCD_CONF_OPTS += --with-gnutls=$(STAGING_DIR)/usr +NGIRCD_DEPENDENCIES += gnutls +else +NGIRCD_CONF_OPTS += --without-gnutls +endif +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +NGIRCD_CONF_OPTS += --with-zlib=$(STAGING_DIR)/usr +NGIRCD_DEPENDENCIES += zlib +else +NGIRCD_CONF_OPTS += --without-zlib +endif + +$(eval $(autotools-package)) diff --git a/package/ngrep/0001-Fix-typo-in-configure-in-when-testing-for-use_pcre.patch b/package/ngrep/0001-Fix-typo-in-configure-in-when-testing-for-use_pcre.patch new file mode 100644 index 00000000..c7f0dec3 --- /dev/null +++ b/package/ngrep/0001-Fix-typo-in-configure-in-when-testing-for-use_pcre.patch @@ -0,0 +1,24 @@ +From b8b1e9751e1d074af0dd77c2554c1b25fd8f7abe Mon Sep 17 00:00:00 2001 +From: Romain Francoise +Date: Mon, 1 Jan 2018 18:00:34 +0100 +Subject: [PATCH] Fix typo in configure.in when testing for use_pcre + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/jpr5/ngrep/commit/b8b1e9751e1d074af0dd77c2554c1b25fd8f7abe +--- + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.in b/configure.in +index cff37e9..06c050a 100644 +--- a/configure.in ++++ b/configure.in +@@ -146,7 +146,7 @@ AC_ARG_ENABLE(pcre, + [ use_pcre="$enableval" ], + [ use_pcre="no" ]) + +-if test use_pcre = yes; then ++if test $use_pcre = yes; then + USE_PCRE="1" + EXTRA_LIBS="$EXTRA_LIBS -lpcre" + else diff --git a/package/ngrep/0002-Check-for-libnet_init-in-configure-in.patch b/package/ngrep/0002-Check-for-libnet_init-in-configure-in.patch new file mode 100644 index 00000000..7fa2e2f3 --- /dev/null +++ b/package/ngrep/0002-Check-for-libnet_init-in-configure-in.patch @@ -0,0 +1,27 @@ +From 0a51c8bc62c7b49b8d67a360daa6b1957256f4f5 Mon Sep 17 00:00:00 2001 +From: Romain Francoise +Date: Mon, 1 Jan 2018 18:01:13 +0100 +Subject: [PATCH] Check for libnet_init in configure.in + +libnet_init_packet was the old libnet 1.0 function which is now long +deprecated. + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/jpr5/ngrep/commit/0a51c8bc62c7b49b8d67a360daa6b1957256f4f5 +--- + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.in b/configure.in +index 06c050a..dbef39b 100644 +--- a/configure.in ++++ b/configure.in +@@ -174,7 +174,7 @@ dnl + AC_ARG_ENABLE(tcpkill, + [ --enable-tcpkill enable connection killing support (default off)], + [ +- AC_CHECK_LIB(net, libnet_init_packet,,echo !!! error: tcpkill feature enabled but no libnet found; exit) ++ AC_CHECK_LIB(net, libnet_init,,echo !!! error: tcpkill feature enabled but no libnet found; exit) + use_tcpkill="$enableval" + ], + [ use_tcpkill="no" ]) diff --git a/package/ngrep/0003-fix-disable-tcpkill.patch b/package/ngrep/0003-fix-disable-tcpkill.patch new file mode 100644 index 00000000..894cd95b --- /dev/null +++ b/package/ngrep/0003-fix-disable-tcpkill.patch @@ -0,0 +1,39 @@ +From e8522284ef326bd9f222e04c4a970ffafa56fba6 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 3 Nov 2018 23:23:36 +0100 +Subject: [PATCH] fix --disable-tcpkill + +If the user uses --disable-tcpkill, build can fail if libnet is not +found on the system. + +To fix this, move AC_CHECK_LIB to found libnet outside AC_ARG_ENABLE + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/jpr5/ngrep/pull/15 +--- + configure.in | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/configure.in b/configure.in +index dbef39b..7c3dd43 100644 +--- a/configure.in ++++ b/configure.in +@@ -173,13 +173,11 @@ dnl + + AC_ARG_ENABLE(tcpkill, + [ --enable-tcpkill enable connection killing support (default off)], +-[ +- AC_CHECK_LIB(net, libnet_init,,echo !!! error: tcpkill feature enabled but no libnet found; exit) +- use_tcpkill="$enableval" +-], ++[ use_tcpkill="$enableval" ], + [ use_tcpkill="no" ]) + + if test $use_tcpkill = yes; then ++ AC_CHECK_LIB(net, libnet_init,,echo !!! error: tcpkill feature enabled but no libnet found; exit) + USE_TCPKILL="1" + EXTRA_OBJS="$EXTRA_OBJS tcpkill.o" + EXTRA_DEFINES="$EXTRA_DEFINES $(libnet-config --defines)" +-- +2.17.1 + diff --git a/package/ngrep/0004-configure.in-use-pkg-config-to-find-libnet.patch b/package/ngrep/0004-configure.in-use-pkg-config-to-find-libnet.patch new file mode 100644 index 00000000..71550da9 --- /dev/null +++ b/package/ngrep/0004-configure.in-use-pkg-config-to-find-libnet.patch @@ -0,0 +1,38 @@ +From 4788988827bf4c0d996d3e1e3b6ac52a23b97941 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 9 Jan 2024 21:15:47 +0100 +Subject: [PATCH] configure.in: use pkg-config to find libnet + +libnet-config is deprecated: +https://github.com/libnet/libnet/commit/1ec4a6e7d1d23811f0a14ecb51e46489a0175727 + +Signed-off-by: Fabrice Fontaine +Upstream: unsent (upstream seems dead, no commit since 5 years +--- + configure.in | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/configure.in b/configure.in +index 7c3dd43..882ff86 100644 +--- a/configure.in ++++ b/configure.in +@@ -176,12 +176,14 @@ AC_ARG_ENABLE(tcpkill, + [ use_tcpkill="$enableval" ], + [ use_tcpkill="no" ]) + ++PKG_PROG_PKG_CONFIG + if test $use_tcpkill = yes; then + AC_CHECK_LIB(net, libnet_init,,echo !!! error: tcpkill feature enabled but no libnet found; exit) + USE_TCPKILL="1" + EXTRA_OBJS="$EXTRA_OBJS tcpkill.o" +- EXTRA_DEFINES="$EXTRA_DEFINES $(libnet-config --defines)" +- EXTRA_LIBS="$EXTRA_LIBS $(libnet-config --libs)" ++ PKG_CHECK_MODULES(LIBNET, libnet) ++ EXTRA_DEFINES="$EXTRA_DEFINES $LIBNET_CFLAGS" ++ EXTRA_LIBS="$EXTRA_LIBS $LIBNET_LIBS" + else + USE_TCPKILL="0" + fi +-- +2.43.0 + diff --git a/package/ngrep/Config.in b/package/ngrep/Config.in new file mode 100644 index 00000000..5f87f2f7 --- /dev/null +++ b/package/ngrep/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_NGREP + bool "ngrep" + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_PCRE + help + Network grep. + + https://github.com/jpr5/ngrep/ diff --git a/package/ngrep/ngrep.hash b/package/ngrep/ngrep.hash new file mode 100644 index 00000000..7dd13b3b --- /dev/null +++ b/package/ngrep/ngrep.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 dc4dbe20991cc36bac5e97e99475e2a1522fd88c59ee2e08f813432c04c5fff3 ngrep-1.47.tar.gz +sha256 d46e593e048e0b9fc803561ed4c283f37a2d5447e4dcfa10cad29b394c2b8b9e LICENSE diff --git a/package/ngrep/ngrep.mk b/package/ngrep/ngrep.mk new file mode 100644 index 00000000..dc69a342 --- /dev/null +++ b/package/ngrep/ngrep.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# ngrep +# +################################################################################ + +NGREP_VERSION = 1.47 +NGREP_SITE = $(call github,jpr5,ngrep,$(subst .,_,V$(NGREP_VERSION))) +NGREP_LICENSE = BSD-4-Clause-like, BSD-3-Clause (tcpkill) +NGREP_LICENSE_FILES = LICENSE +NGREP_INSTALL_STAGING = YES +# We're patching configure.in +NGREP_AUTORECONF = YES + +ifeq ($(BR2_STATIC_LIBS),y) +NGREP_CONF_ENV += LIBS=`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs` +endif + +NGREP_CONF_OPTS = \ + --with-pcap-includes=$(STAGING_DIR)/usr/include/pcap \ + --enable-pcre \ + --disable-dropprivs \ + --disable-pcap-restart + +NGREP_DEPENDENCIES = host-pkgconf libpcap pcre + +ifeq ($(BR2_PACKAGE_LIBNET),y) +NGREP_DEPENDENCIES += libnet +NGREP_CONF_OPTS += --enable-tcpkill +else +NGREP_CONF_OPTS += --disable-tcpkill +endif + +$(eval $(autotools-package)) diff --git a/package/nilfs-utils/0001-nilfs_cleanerd-link-dynamically.patch b/package/nilfs-utils/0001-nilfs_cleanerd-link-dynamically.patch new file mode 100644 index 00000000..ab057b29 --- /dev/null +++ b/package/nilfs-utils/0001-nilfs_cleanerd-link-dynamically.patch @@ -0,0 +1,32 @@ +From 7888f8f24ec08cdfd51929cde4e177396d7504e7 Mon Sep 17 00:00:00 2001 +From: Kurt Van Dijck +Date: Thu, 28 Dec 2017 20:22:00 +0100 +Subject: [PATCH] nilfs_cleanerd: link dynamically + +When nilfs_cleanerd does not run due to shared object problems, +nilfs2 filesystems may run out of space soon. +This logic that justified linking nilfs_cleanerd statically +does IMO not apply to embedded systems built by buildroot. +This commit therefore drops the static linking. + +Signed-off-by: Kurt Van Dijck +--- + sbin/cleanerd/Makefile.am | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/sbin/cleanerd/Makefile.am b/sbin/cleanerd/Makefile.am +index 3a5335d..06f0847 100644 +--- a/sbin/cleanerd/Makefile.am ++++ b/sbin/cleanerd/Makefile.am +@@ -9,8 +9,6 @@ nilfs_cleanerd_SOURCES = cleanerd.c cldconfig.c \ + nilfs_cleanerd_CFLAGS = -Wall + nilfs_cleanerd_CPPFLAGS = -I$(top_srcdir)/include \ + -DSYSCONFDIR=\"$(sysconfdir)\" +-# Use -static option to make nilfs_cleanerd self-contained. +-nilfs_cleanerd_LDFLAGS = -static + + dist_sysconf_DATA = nilfs_cleanerd.conf + +-- +1.8.5.rc3 + diff --git a/package/nilfs-utils/Config.in b/package/nilfs-utils/Config.in new file mode 100644 index 00000000..30d7dba7 --- /dev/null +++ b/package/nilfs-utils/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_NILFS_UTILS + bool "nilfs-utils" + depends on BR2_USE_MMU # util-linux libmount, libblkid + depends on BR2_TOOLCHAIN_HAS_THREADS # sem_open() + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + select BR2_PACKAGE_UTIL_LINUX + help + Tools for creating and managing NILFS2 filesystems. + + https://nilfs.sourceforge.io + +comment "nilfs-utils needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/nilfs-utils/nilfs-utils.hash b/package/nilfs-utils/nilfs-utils.hash new file mode 100644 index 00000000..75024321 --- /dev/null +++ b/package/nilfs-utils/nilfs-utils.hash @@ -0,0 +1,3 @@ +# Locally calculated after checking pgp signature +sha512 8c238f961f429c12674695d2481202c8fac4582d04e838ce7244647b8a9997e38b4dafa280314acb57ae40137711c7678de6aaf65708c110028df97c1c76089e nilfs-utils-2.2.11.tar.bz2 +sha512 4fc92d3998910acb108f81b1aee70a55a572b661a2766d0e57a55e48e2b737eea41415356cbd62593f26aec5797ab9fbb40211d7782b5834b4855ff1ce6ad5f7 COPYING diff --git a/package/nilfs-utils/nilfs-utils.mk b/package/nilfs-utils/nilfs-utils.mk new file mode 100644 index 00000000..1c8b7e24 --- /dev/null +++ b/package/nilfs-utils/nilfs-utils.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# nilfs-utils +# +################################################################################ + +NILFS_UTILS_VERSION = 2.2.11 +NILFS_UTILS_SOURCE = nilfs-utils-$(NILFS_UTILS_VERSION).tar.bz2 +NILFS_UTILS_SITE = https://nilfs.sourceforge.io/download +NILFS_UTILS_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries) +NILFS_UTILS_LICENSE_FILES = COPYING + +# need libuuid, libblkid, libmount +NILFS_UTILS_DEPENDENCIES = util-linux + +# We're patching sbin/cleanerd/Makefile.am +NILFS_UTILS_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +NILFS_UTILS_CONF_OPTS += --with-selinux +NILFS_UTILS_DEPENDENCIES += libselinux +else +NILFS_UTILS_CONF_OPTS += --without-selinux +endif + +$(eval $(autotools-package)) diff --git a/package/ninja/ninja.hash b/package/ninja/ninja.hash new file mode 100644 index 00000000..57c10bb2 --- /dev/null +++ b/package/ninja/ninja.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 7ba84551f5b315b4270dc7c51adef5dff83a2154a3665a6c9744245c122dd0db ninja-1.11.1.g95dee.kitware.jobserver-1.tar.gz +sha256 eb7e9ab9690124c5c9f42bdc81383d886a3dede26345b6ed15bbad7caf81f7ea COPYING diff --git a/package/ninja/ninja.mk b/package/ninja/ninja.mk new file mode 100644 index 00000000..b7bc1a4f --- /dev/null +++ b/package/ninja/ninja.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# ninja +# +################################################################################ + +NINJA_VERSION_MAJOR = 1.11.1 +NINJA_VERSION = $(NINJA_VERSION_MAJOR).g95dee.kitware.jobserver-1 +NINJA_SITE = $(call github,Kitware,ninja,v$(NINJA_VERSION)) +NINJA_LICENSE = Apache-2.0 +NINJA_LICENSE_FILES = COPYING + +define HOST_NINJA_INSTALL_CMDS + $(INSTALL) -m 0755 -D $(@D)/ninja $(HOST_DIR)/bin/ninja +endef + +$(eval $(host-cmake-package)) diff --git a/package/nload/Config.in b/package/nload/Config.in new file mode 100644 index 00000000..c938d8ea --- /dev/null +++ b/package/nload/Config.in @@ -0,0 +1,15 @@ +comment "nload needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_NLOAD + bool "nload" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_NCURSES + help + nload is a console application which monitors network traffic + and bandwidth usage in real time. It visualizes the in- and + outgoing traffic using two graphs and provides additional info + like total amount of transfered data and min/max network + usage. + + http://www.roland-riegel.de/nload/ diff --git a/package/nload/nload.hash b/package/nload/nload.hash new file mode 100644 index 00000000..cf211674 --- /dev/null +++ b/package/nload/nload.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/nload/files/nload/0.7.4/ +md5 3c733c528f244ca5a4f76bf185729c39 nload-0.7.4.tar.gz +sha1 bb0a168c93c588ad4fd5e3a653b3620b79ada1e8 nload-0.7.4.tar.gz +# Locally computed +sha256 67f82e045cf7acfef853ea0f426575a8359161a0a325e19f02b529a87c4b6c34 COPYING diff --git a/package/nload/nload.mk b/package/nload/nload.mk new file mode 100644 index 00000000..80d42a15 --- /dev/null +++ b/package/nload/nload.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# nload +# +################################################################################ + +NLOAD_VERSION = 0.7.4 +NLOAD_SITE = http://www.roland-riegel.de/nload +NLOAD_DEPENDENCIES = ncurses +NLOAD_LICENSE = GPL-2.0+ +NLOAD_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/nmap/0001-libdnet-always-build-a-static-library.patch b/package/nmap/0001-libdnet-always-build-a-static-library.patch new file mode 100644 index 00000000..b34e44e3 --- /dev/null +++ b/package/nmap/0001-libdnet-always-build-a-static-library.patch @@ -0,0 +1,25 @@ +From aeadf40bc0ebbb9fea8de8bc6786a2eccf02fa34 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sat, 29 Jun 2024 16:50:36 +0200 +Subject: [PATCH] libdnet: always build a static library + +Signed-off-by: Yann E. MORIN +[Julien: rebased patch on version 7.95] +Signed-off-by: Julien Olivain +--- + libdnet-stripped/configure.gnu | 3 +++ + 1 file changed, 3 insertions(+) + create mode 100644 libdnet-stripped/configure.gnu + +diff --git a/libdnet-stripped/configure.gnu b/libdnet-stripped/configure.gnu +new file mode 100644 +index 0000000..989fee4 +--- /dev/null ++++ b/libdnet-stripped/configure.gnu +@@ -0,0 +1,3 @@ ++#!/bin/sh ++ ++exec "${0%.gnu}" "${@}" --enable-static --disable-shared +-- +2.45.2 + diff --git a/package/nmap/0002-nping-Crypto.cc-fix-build-with-libressl-3.5.0.patch b/package/nmap/0002-nping-Crypto.cc-fix-build-with-libressl-3.5.0.patch new file mode 100644 index 00000000..700b8585 --- /dev/null +++ b/package/nmap/0002-nping-Crypto.cc-fix-build-with-libressl-3.5.0.patch @@ -0,0 +1,41 @@ +From 0a79771c302bf398150da78cd18b67cb9b67f47a Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 21 May 2022 17:51:37 +0200 +Subject: [PATCH] nping/Crypto.cc: fix build with libressl >= 3.5.0 + +Fix the following build failure with libressl >= 3.5.0: + +Crypto.cc: In static member function 'static int Crypto::aes128_cbc_encrypt(u8*, size_t, u8*, u8*, size_t, u8*)': +Crypto.cc:139:26: error: aggregate 'EVP_CIPHER_CTX ctx' has incomplete type and cannot be defined + 139 | EVP_CIPHER_CTX ctx; + | ^~~ + +Fixes: + - http://autobuild.buildroot.org/results/2e6eebbe2ed8305b88047bc92c19350c1ecada16 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/nmap/nmap/pull/2480 +[Julien: rebased patch on version 7.95] +Signed-off-by: Julien Olivain +--- + nping/Crypto.cc | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/nping/Crypto.cc b/nping/Crypto.cc +index 6f05db6..1d11d55 100755 +--- a/nping/Crypto.cc ++++ b/nping/Crypto.cc +@@ -69,7 +69,9 @@ + #include + #include + +-#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined LIBRESSL_VERSION_NUMBER ++#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && \ ++ ((!defined LIBRESSL_VERSION_NUMBER) || \ ++ (defined LIBRESSL_VERSION_NUMBER && LIBRESSL_VERSION_NUMBER >= 0x30500000L)) + #define HAVE_OPAQUE_EVP_PKEY 1 + #else + #define EVP_MD_CTX_new EVP_MD_CTX_create +-- +2.45.2 + diff --git a/package/nmap/Config.in b/package/nmap/Config.in new file mode 100644 index 00000000..c9fcf977 --- /dev/null +++ b/package/nmap/Config.in @@ -0,0 +1,50 @@ +config BR2_PACKAGE_NMAP + bool "nmap" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBLINEAR + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_NMAP_NMAP \ + if !BR2_PACKAGE_NMAP_NCAT && !BR2_PACKAGE_NMAP_NPING + help + Nmap ("Network Mapper") is a free and open source (license) + utility for network discovery and security auditing. + + http://nmap.org + +if BR2_PACKAGE_NMAP + +config BR2_PACKAGE_NMAP_NCAT + bool "install ncat" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + Ncat is a feature-packed networking utility which reads and + writes data across networks from the command line. Ncat was + written for the Nmap Project as a much-improved + reimplementation of the venerable Netcat. + + A symlink to "nc" is installed if neither netcat or + netcat-openbsd is selected. + +comment "a symlink from ncat to 'nc' will be installed" + depends on BR2_PACKAGE_NMAP_NCAT + depends on !BR2_PACKAGE_NETCAT + depends on !BR2_PACKAGE_NETCAT_OPENBSD + +config BR2_PACKAGE_NMAP_NMAP + bool "install nmap" + select BR2_PACKAGE_PCRE2 + help + This option installs 'nmap' itself. + +config BR2_PACKAGE_NMAP_NPING + bool "install nping" + help + This option installs the 'nping' tool. + +endif + +comment "nmap-nmap needs a toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) diff --git a/package/nmap/nmap.hash b/package/nmap/nmap.hash new file mode 100644 index 00000000..4f6ea207 --- /dev/null +++ b/package/nmap/nmap.hash @@ -0,0 +1,6 @@ +# From https://nmap.org/dist/sigs/nmap-7.95.tar.bz2.digest.txt (lowercase) +sha256 e14ab530e47b5afd88f1c8a2bac7f89cd8fe6b478e22d255c5b9bddb7a1c5778 nmap-7.95.tar.bz2 +sha512 fd95a8bc627a2b8b507353f761dc9fdc8e880a0dd2d75a51b9cb3ec664318796af9bb16a6ff9a1358bd77ad669c2a54e333be630f201f69287692a7d2d41c17e nmap-7.95.tar.bz2 + +# Locally calculated +sha256 9d9a9a763c0e6145172cfe7d8483e23b38ce60b6c79a82e4894242917bdae6d3 LICENSE diff --git a/package/nmap/nmap.mk b/package/nmap/nmap.mk new file mode 100644 index 00000000..077840b1 --- /dev/null +++ b/package/nmap/nmap.mk @@ -0,0 +1,87 @@ +################################################################################ +# +# nmap +# +################################################################################ + +NMAP_VERSION = 7.95 +NMAP_SITE = https://nmap.org/dist +NMAP_SOURCE = nmap-$(NMAP_VERSION).tar.bz2 +NMAP_DEPENDENCIES = liblinear libpcap +NMAP_CONF_OPTS = --without-liblua --without-zenmap \ + --with-libdnet=included +NMAP_LICENSE = nmap license +NMAP_LICENSE_FILES = LICENSE +NMAP_CPE_ID_VENDOR = nmap +NMAP_SELINUX_MODULES = netutils + +# needed by libpcap +NMAP_LIBS_FOR_STATIC_LINK += `$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs` + +ifeq ($(BR2_STATIC_LIBS),y) +NMAP_CONF_ENV += LIBS="$(NMAP_LIBS_FOR_STATIC_LINK)" +endif + +# for 0001-libdnet-wrapper-configure.patch +define NMAP_WRAPPER_EXEC + chmod +x $(@D)/libdnet-stripped/configure.gnu +endef +NMAP_POST_PATCH_HOOKS += NMAP_WRAPPER_EXEC + +ifeq ($(BR2_PACKAGE_LIBSSH2),y) +NMAP_CONF_OPTS += --with-libssh2="$(STAGING_DIR)/usr" +NMAP_DEPENDENCIES += libssh2 +NMAP_LIBS_FOR_STATIC_LINK += `$(PKG_CONFIG_HOST_BINARY) --libs libssh2` +else +NMAP_CONF_OPTS += --without-libssh2 +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +NMAP_CONF_OPTS += --with-openssl="$(STAGING_DIR)/usr" +NMAP_DEPENDENCIES += host-pkgconf openssl +NMAP_LIBS_FOR_STATIC_LINK += `$(PKG_CONFIG_HOST_BINARY) --libs openssl` +else +NMAP_CONF_OPTS += --without-openssl +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +NMAP_CONF_OPTS += --with-libz="$(STAGING_DIR)/usr" +NMAP_DEPENDENCIES += zlib +else +NMAP_CONF_OPTS += --without-libz +endif + +NMAP_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) + +ifeq ($(BR2_PACKAGE_NMAP_NCAT),y) +NMAP_CONF_OPTS += --with-ncat +NMAP_MAKE_OPTS += build-ncat +NMAP_INSTALL_TARGET_OPTS += install-ncat +else +NMAP_CONF_OPTS += --without-ncat +endif + +ifeq ($(BR2_PACKAGE_NMAP_NMAP),y) +NMAP_DEPENDENCIES += pcre2 +NMAP_CONF_OPTS += --with-libpcre="$(STAGING_DIR)/usr" +NMAP_MAKE_OPTS += nmap +NMAP_INSTALL_TARGET_OPTS += install-nmap +endif + +ifeq ($(BR2_PACKAGE_NMAP_NPING),y) +NMAP_CONF_OPTS += --with-nping +NMAP_MAKE_OPTS += build-nping +NMAP_INSTALL_TARGET_OPTS += install-nping +else +NMAP_CONF_OPTS += --without-nping +endif + +# Add a symlink to "nc" if none of the competing netcats is selected +ifeq ($(BR2_PACKAGE_NMAP_NCAT):$(BR2_PACKAGE_NETCAT)$(BR2_PACKAGE_NETCAT_OPENBSD),y:) +define NMAP_INSTALL_NCAT_SYMLINK + ln -fs ncat $(TARGET_DIR)/usr/bin/nc +endef +NMAP_POST_INSTALL_TARGET_HOOKS += NMAP_INSTALL_NCAT_SYMLINK +endif + +$(eval $(autotools-package)) diff --git a/package/nmon/Config.in b/package/nmon/Config.in new file mode 100644 index 00000000..574ced3b --- /dev/null +++ b/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/package/nmon/nmon.hash b/package/nmon/nmon.hash new file mode 100644 index 00000000..fdee8824 --- /dev/null +++ b/package/nmon/nmon.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/nmon/files/ +md5 a294567253cd49ccad66d5f56435ba9d lmon16p.c +sha1 90ec7cd38515323bc0a22ce1a34504e70e8f468f lmon16p.c +# Locally computed +sha256 5dc6045f6725e3249a969918fae69663a1d669162087720babcdb90fce9e6b2a lmon16p.c diff --git a/package/nmon/nmon.mk b/package/nmon/nmon.mk new file mode 100644 index 00000000..4be19b1d --- /dev/null +++ b/package/nmon/nmon.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# nmon +# +################################################################################ + +NMON_VERSION = 16p +NMON_SITE = https://sourceforge.net/projects/nmon/files +NMON_SOURCE = lmon$(NMON_VERSION).c +NMON_LICENSE = GPL-3.0+ +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 $(NMON_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/package/nodejs/Config.in b/package/nodejs/Config.in new file mode 100644 index 00000000..50d13607 --- /dev/null +++ b/package/nodejs/Config.in @@ -0,0 +1,90 @@ +config BR2_PACKAGE_NODEJS_ARCH_SUPPORTS + bool + # On ARM, at least ARMv6+ with VFPv2+ is needed + default y if BR2_arm && !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV5 && BR2_ARM_CPU_HAS_VFPV2 + default y if BR2_aarch64 || BR2_i386 || BR2_x86_64 + # libuv + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORTS + +comment "nodejs needs a toolchain w/ C++, dynamic library, NPTL, gcc >= 10, wchar, host gcc >= 10" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_NODEJS_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + !BR2_HOST_GCC_AT_LEAST_10 || !BR2_TOOLCHAIN_GCC_AT_LEAST_10 || !BR2_USE_WCHAR + +config BR2_PACKAGE_NODEJS + bool "nodejs" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_NODEJS_ARCH_SUPPORTS + depends on BR2_HOST_GCC_AT_LEAST_10 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_10 + depends on BR2_USE_WCHAR + # uses fork() + depends on BR2_USE_MMU + # uses dlopen(). On ARMv5, we could technically support static + # linking, but that's too much of a corner case to support it. + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_NODEJS_SRC + select BR2_PACKAGE_HOST_NODEJS if BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL != "" + select BR2_PACKAGE_HOST_PYTHON3 + select BR2_PACKAGE_HOST_PYTHON3_BZIP2 + select BR2_PACKAGE_HOST_PYTHON3_SSL + select BR2_PACKAGE_HOST_QEMU + select BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE + select BR2_PACKAGE_C_ARES + select BR2_PACKAGE_LIBUV + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_NGHTTP2 + help + Event-driven I/O server-side JavaScript environment based on + V8. + + http://nodejs.org/ + +if BR2_PACKAGE_NODEJS + +config BR2_PACKAGE_NODEJS_NPM + bool "NPM for the target" + select BR2_PACKAGE_OPENSSL + help + NPM is the package manager for the Node JavaScript platform. + Note that enabling NPM on the target also selects OpenSSL + for the target. + + http://www.npmjs.org + + Note that NPM is always built for the buildroot host. + +config BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL + string "Additional modules" + help + List of space-separated nodejs modules to install via npm. + See https://npmjs.org/ to find modules and 'npm help install' + for available installation methods. For repeatable builds, + download and save tgz files or clone git repos for the + components you care about. + + Example: + serialport uglify-js@1.3.4 /my/module/mymodule.tgz \ + git://github.com/someuser/somemodule.git#v1.2 + + This would install the serialport module (at the newest + version), the uglify-js module at 1.3.4, a module from a + filesystem path, and a module from a git repository. + +config BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL_DEPS + string "Additional module dependencies" + help + List of space-separated buildroot recipes which must be + built before your npms can be installed. For example, if in + 'Additional modules' you specified 'node-curl' (see: + https://github.com/jiangmiao/node-curl), you could then + specify 'libcurl' here, to ensure that buildroot builds the + libcurl package, and does so before building your node + modules. + +endif + +source "package/nodejs/nodejs-src/Config.in" diff --git a/package/nodejs/Config.in.host b/package/nodejs/Config.in.host new file mode 100644 index 00000000..a8ab8917 --- /dev/null +++ b/package/nodejs/Config.in.host @@ -0,0 +1,67 @@ +config BR2_PACKAGE_HOST_NODEJS_BIN_ARCH_SUPPORTS + bool + default y if BR2_HOSTARCH = "aarch64" + default y if BR2_HOSTARCH = "arm" + default y if BR2_HOSTARCH = "ppc64le" + default y if BR2_HOSTARCH = "x86_64" + +comment "host nodejs needs a host gcc >= 8" + depends on !BR2_PACKAGE_HOST_NODEJS_BIN_ARCH_SUPPORTS + depends on !BR2_HOST_GCC_AT_LEAST_8 + +config BR2_PACKAGE_HOST_NODEJS + bool "host nodejs" + depends on BR2_PACKAGE_HOST_NODEJS_BIN_ARCH_SUPPORTS || \ + BR2_HOST_GCC_AT_LEAST_8 + help + Event-driven I/O server-side JavaScript environment based on + V8. + + http://nodejs.org/ + +if BR2_PACKAGE_HOST_NODEJS + +choice + prompt "host nodejs variant" + default BR2_PACKAGE_HOST_NODEJS_BIN if BR2_PACKAGE_HOST_NODEJS_BIN_ARCH_SUPPORTS + default BR2_PACKAGE_HOST_NODEJS_SRC + help + Select a nodejs variant - built from source or + pre-built. + +config BR2_PACKAGE_HOST_NODEJS_BIN + bool "pre-built version" + depends on BR2_PACKAGE_HOST_NODEJS_BIN_ARCH_SUPPORTS + +config BR2_PACKAGE_HOST_NODEJS_SRC + bool "compile from source" + depends on BR2_HOST_GCC_AT_LEAST_8 + select BR2_PACKAGE_HOST_PYTHON3 + select BR2_PACKAGE_HOST_PYTHON3_BZIP2 + select BR2_PACKAGE_HOST_PYTHON3_SSL + +comment "host nodejs from source needs a host gcc >= 8" + depends on !BR2_HOST_GCC_AT_LEAST_8 + +endchoice + +config BR2_PACKAGE_HOST_NODEJS_COREPACK + bool "Corepack" + help + Enable Corepack with host nodejs. + + Corepack is a zero-runtime-dependency Node.js script that + acts as a bridge between Node.js projects and the package + managers they are intended to be used with during + development. In practical terms, Corepack will let you use + Yarn and pnpm without having to install them - just like + what currently happens with npm, which is shipped by Node.js + by default. + +endif + +config BR2_PACKAGE_PROVIDES_HOST_NODEJS + string + default "host-nodejs-src" if BR2_PACKAGE_HOST_NODEJS_SRC + # default to host-nodejs-bin so it's used if nothing is set explicitly + default "host-nodejs-bin" if !BR2_PACKAGE_HOST_NODEJS_SRC diff --git a/package/nodejs/nodejs-bin/nodejs-bin.hash b/package/nodejs/nodejs-bin/nodejs-bin.hash new file mode 120000 index 00000000..0c3ac2ce --- /dev/null +++ b/package/nodejs/nodejs-bin/nodejs-bin.hash @@ -0,0 +1 @@ +../nodejs.hash \ No newline at end of file diff --git a/package/nodejs/nodejs-bin/nodejs-bin.mk b/package/nodejs/nodejs-bin/nodejs-bin.mk new file mode 100644 index 00000000..bf603e57 --- /dev/null +++ b/package/nodejs/nodejs-bin/nodejs-bin.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# nodejs-bin +# +################################################################################ + +NODEJS_BIN_VERSION = $(NODEJS_COMMON_VERSION) +NODEJS_BIN_SITE = $(NODEJS_COMMON_SITE) +NODEJS_BIN_SOURCE = node-v$(NODEJS_BIN_VERSION)-linux-$(NODEJS_BIN_ARCH).tar.xz +HOST_NODEJS_BIN_ACTUAL_SOURCE_TARBALL = node-v$(NODEJS_BIN_VERSION).tar.xz +NODEJS_BIN_DL_SUBDIR = nodejs + +NODEJS_BIN_LICENSE = $(NODEJS_LICENSE) +NODEJS_BIN_LICENSE_FILES = $(NODEJS_LICENSE_FILES) +NODEJS_BIN_CPE_ID_VENDOR = $(NODEJS_CPE_ID_VENDOR) +NODEJS_BIN_CPE_ID_PRODUCT = $(NODEJS_CPE_ID_PRODUCT) + +HOST_NODEJS_BIN_PROVIDES = host-nodejs + +ifeq ($(HOSTARCH),aarch64) +NODEJS_BIN_ARCH = arm64 +else ifeq ($(HOSTARCH),arm) +# We assume that if someone does a build on ARM, it will be on an +# ARMv7 machine +NODEJS_BIN_ARCH = armv7l +else ifeq ($(HOSTARCH),ppc64le) +NODEJS_BIN_ARCH = ppc64le +else ifeq ($(HOSTARCH),x86_64) +NODEJS_BIN_ARCH = x64 +endif + +define HOST_NODEJS_BIN_INSTALL_CMDS + rsync -a --exclude=CHANGELOG.md --exclude=LICENSE --exclude=README.md \ + $(@D)/* $(HOST_DIR)/ +endef + +$(eval $(host-generic-package)) diff --git a/package/nodejs/nodejs-src/0001-add-qemu-wrapper-support.patch b/package/nodejs/nodejs-src/0001-add-qemu-wrapper-support.patch new file mode 100644 index 00000000..18f320ec --- /dev/null +++ b/package/nodejs/nodejs-src/0001-add-qemu-wrapper-support.patch @@ -0,0 +1,114 @@ +From 1f6c55d7318e7075169004b4314708f4766ec193 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Mon, 27 Sep 2021 12:55:09 -0700 +Subject: [PATCH] add qemu-wrapper support + +V8's JIT infrastructure requires binaries such as mksnapshot and mkpeephole to +be run in the host during the build. However, these binaries must have the +same bit-width as the target (e.g. a x86_64 host targeting ARMv6 needs to +produce a 32-bit binary). To work around this issue, cross-compile the +binaries for the target and run them on the host with QEMU, much like +gobject-introspection. + +However, for the host-variant we do not want to use a +qemu-wrapper, so add @MAYBE_WRAPPER@ to the needed files and sed the path to +the qemu-wrapper on target builds, and remove @MAYBE_WRAPPER@ entirely on +host-builds. + +[Adam: Update for 20.9.0] +Signed-off-by: Adam Duskett +--- + node.gyp | 6 ++++-- + tools/v8_gypfiles/v8.gyp | 10 +++++----- + 2 files changed, 9 insertions(+), 7 deletions(-) + +diff --git a/node.gyp b/node.gyp +index 97cdbb531d..db5cf51ce6 100644 +--- a/node.gyp ++++ b/node.gyp +@@ -662,7 +662,7 @@ + 'action_name': 'node_mksnapshot', + 'process_outputs_as_sources': 1, + 'inputs': [ +- '<(node_mksnapshot_exec)', ++ @MAYBE_WRAPPER@ '<(node_mksnapshot_exec)', + '<(node_snapshot_main)', + ], + 'outputs': [ +@@ -682,7 +682,7 @@ + 'action_name': 'node_mksnapshot', + 'process_outputs_as_sources': 1, + 'inputs': [ +- '<(node_mksnapshot_exec)', ++ @MAYBE_WRAPPER@ '<(node_mksnapshot_exec)', + ], + 'outputs': [ + '<(SHARED_INTERMEDIATE_DIR)/node_snapshot.cc', +@@ -966,6 +966,7 @@ + 'action_name': 'node_js2c', + 'process_outputs_as_sources': 1, + 'inputs': [ ++ @MAYBE_WRAPPER@ + '<(node_js2c_exec)', + '<@(library_files)', + '<@(deps_files)', +@@ -975,6 +976,7 @@ + '<(SHARED_INTERMEDIATE_DIR)/node_javascript.cc', + ], + 'action': [ ++ @MAYBE_WRAPPER@ + '<(node_js2c_exec)', + '<@(_outputs)', + 'lib', +diff --git a/tools/v8_gypfiles/v8.gyp b/tools/v8_gypfiles/v8.gyp +index 73099a03e4..88ca91efb4 100644 +--- a/tools/v8_gypfiles/v8.gyp ++++ b/tools/v8_gypfiles/v8.gyp +@@ -81,7 +81,7 @@ + { + 'action_name': 'run_torque_action', + 'inputs': [ # Order matters. +- '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)torque<(EXECUTABLE_SUFFIX)', ++ @MAYBE_WRAPPER@ '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)torque<(EXECUTABLE_SUFFIX)', + '<@(torque_files)', + ], + 'outputs': [ +@@ -112,7 +112,7 @@ + '<@(torque_outputs_inc)', + ], + 'action': [ +- '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)torque<(EXECUTABLE_SUFFIX)', ++ @MAYBE_WRAPPER@ '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)torque<(EXECUTABLE_SUFFIX)', + '-o', '<(SHARED_INTERMEDIATE_DIR)/torque-generated', + '-v8-root', '<(V8_ROOT)', + '<@(torque_files_without_v8_root)', +@@ -224,7 +224,7 @@ + { + 'action_name': 'generate_bytecode_builtins_list_action', + 'inputs': [ +- '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)bytecode_builtins_list_generator<(EXECUTABLE_SUFFIX)', ++ @MAYBE_WRAPPER@ '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)bytecode_builtins_list_generator<(EXECUTABLE_SUFFIX)', + ], + 'outputs': [ + '<(generate_bytecode_builtins_list_output)', +@@ -401,7 +401,7 @@ + ], + }, + 'inputs': [ +- '<(mksnapshot_exec)', ++ @MAYBE_WRAPPER@ '<(mksnapshot_exec)', + ], + 'outputs': [ + '<(INTERMEDIATE_DIR)/snapshot.cc', +@@ -1660,7 +1660,7 @@ + { + 'action_name': 'run_gen-regexp-special-case_action', + 'inputs': [ +- '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)gen-regexp-special-case<(EXECUTABLE_SUFFIX)', ++ @MAYBE_WRAPPER@ '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)gen-regexp-special-case<(EXECUTABLE_SUFFIX)', + ], + 'outputs': [ + '<(SHARED_INTERMEDIATE_DIR)/src/regexp/special-case.cc', +-- +2.37.3 + diff --git a/package/nodejs/nodejs-src/0002-check-if-uclibc-has-backtrace-support.patch b/package/nodejs/nodejs-src/0002-check-if-uclibc-has-backtrace-support.patch new file mode 100644 index 00000000..367b9fb8 --- /dev/null +++ b/package/nodejs/nodejs-src/0002-check-if-uclibc-has-backtrace-support.patch @@ -0,0 +1,26 @@ +From f1a15cea9a47d0a9b0ae78fb22fef3a268e355ad Mon Sep 17 00:00:00 2001 +From: Martin Bark +Date: Sat, 4 Mar 2017 20:41:40 +0000 +Subject: [PATCH] check if uclibc has backtrace support + +Signed-off-by: Martin Bark +--- + deps/v8/src/base/debug/stack_trace_posix.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/deps/v8/src/base/debug/stack_trace_posix.cc b/deps/v8/src/base/debug/stack_trace_posix.cc +index 270f1ca4e0..5227e88671 100644 +--- a/deps/v8/src/base/debug/stack_trace_posix.cc ++++ b/deps/v8/src/base/debug/stack_trace_posix.cc +@@ -25,7 +25,7 @@ + #include + #include + +-#if V8_LIBC_GLIBC || V8_LIBC_BSD || V8_LIBC_UCLIBC || V8_OS_SOLARIS ++#if V8_LIBC_GLIBC || V8_LIBC_BSD || ( V8_LIBC_UCLIBC && __UCLIBC_HAS_BACKTRACE__ ) || V8_OS_SOLARIS + #define HAVE_EXECINFO_H 1 + #endif + +-- +2.37.3 + diff --git a/package/nodejs/nodejs-src/0003-include-obj-name-in-shared-intermediate.patch b/package/nodejs/nodejs-src/0003-include-obj-name-in-shared-intermediate.patch new file mode 100644 index 00000000..5b44e6c4 --- /dev/null +++ b/package/nodejs/nodejs-src/0003-include-obj-name-in-shared-intermediate.patch @@ -0,0 +1,42 @@ +From af47d317e5ae12978c1cdc40627008ada144f98b Mon Sep 17 00:00:00 2001 +From: Min RK +Date: Fri, 19 Feb 2021 11:57:04 +0100 +Subject: [PATCH] include obj name in shared intermediate + +avoids duplicate ninja rules for v8 used in host and target + +From: https://github.com/minrk/node/commit/5e533cb943eef68b270f55f0cba02c0ec67c699d +Signed-off-by: Thomas Petazzoni +--- + tools/gyp/pylib/gyp/generator/ninja.py | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/tools/gyp/pylib/gyp/generator/ninja.py b/tools/gyp/pylib/gyp/generator/ninja.py +index 3db3771ac9..2e0a021703 100644 +--- a/tools/gyp/pylib/gyp/generator/ninja.py ++++ b/tools/gyp/pylib/gyp/generator/ninja.py +@@ -42,7 +42,7 @@ generator_default_variables = { + # the start of a string, while $| is used for variables that can appear + # anywhere in a string. + "INTERMEDIATE_DIR": "$!INTERMEDIATE_DIR", +- "SHARED_INTERMEDIATE_DIR": "$!PRODUCT_DIR/gen", ++ "SHARED_INTERMEDIATE_DIR": "$!PRODUCT_DIR/$|OBJ/gen", + "PRODUCT_DIR": "$!PRODUCT_DIR", + "CONFIGURATION_NAME": "$|CONFIGURATION_NAME", + # Special variables that may be used by gyp 'rule' targets. +@@ -285,6 +285,12 @@ class NinjaWriter: + CONFIGURATION_NAME = "$|CONFIGURATION_NAME" + path = path.replace(CONFIGURATION_NAME, self.config_name) + ++ obj = "obj" ++ if self.toolset != "target": ++ obj += "." + self.toolset ++ ++ path = path.replace("$|OBJ", obj) ++ + return path + + def ExpandRuleVariables(self, path, root, dirname, source, ext, name): +-- +2.37.3 + diff --git a/package/nodejs/nodejs-src/0004-lib-internal-modules-cjs-loader.js-adjust-default-pa.patch b/package/nodejs/nodejs-src/0004-lib-internal-modules-cjs-loader.js-adjust-default-pa.patch new file mode 100644 index 00000000..25c26b43 --- /dev/null +++ b/package/nodejs/nodejs-src/0004-lib-internal-modules-cjs-loader.js-adjust-default-pa.patch @@ -0,0 +1,36 @@ +From a31425bdfcb5d695ab25c3d295898326784cffec Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 25 Sep 2022 11:10:06 +0200 +Subject: [PATCH] lib/internal/modules/cjs/loader.js: adjust default path to + search modules + +NPM installs modules in /usr/lib/node_modules/, but by default NodeJS +searches for them only in /usr/lib/node/. We could also set the +NODE_PATH environment variable, but it is more convienient to have +NodeJS configured by default to find modules where they are installed. + +This issue is discussed at +https://stackoverflow.com/questions/15636367/nodejs-require-a-global-module-package. + +Signed-off-by: Thomas Petazzoni +--- + lib/internal/modules/cjs/loader.js | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js +index f1971c40a4..5fe3884156 100644 +--- a/lib/internal/modules/cjs/loader.js ++++ b/lib/internal/modules/cjs/loader.js +@@ -1378,7 +1378,8 @@ Module._initPaths = function() { + path.resolve(process.execPath, '..') : + path.resolve(process.execPath, '..', '..'); + +- const paths = [path.resolve(prefixDir, 'lib', 'node')]; ++ const paths = [path.resolve(prefixDir, 'lib', 'node'), ++ path.resolve(prefixDir, 'lib', 'node_modules')]; + + if (homeDir) { + ArrayPrototypeUnshift(paths, path.resolve(homeDir, '.node_libraries')); +-- +2.37.3 + diff --git a/package/nodejs/nodejs-src/Config.in b/package/nodejs/nodejs-src/Config.in new file mode 100644 index 00000000..90b061f6 --- /dev/null +++ b/package/nodejs/nodejs-src/Config.in @@ -0,0 +1,2 @@ +config BR2_PACKAGE_NODEJS_SRC + bool diff --git a/package/nodejs/nodejs-src/nodejs-src.hash b/package/nodejs/nodejs-src/nodejs-src.hash new file mode 120000 index 00000000..0c3ac2ce --- /dev/null +++ b/package/nodejs/nodejs-src/nodejs-src.hash @@ -0,0 +1 @@ +../nodejs.hash \ No newline at end of file diff --git a/package/nodejs/nodejs-src/nodejs-src.mk b/package/nodejs/nodejs-src/nodejs-src.mk new file mode 100644 index 00000000..8f934202 --- /dev/null +++ b/package/nodejs/nodejs-src/nodejs-src.mk @@ -0,0 +1,269 @@ +################################################################################ +# +# nodejs-src +# +################################################################################ + +NODEJS_SRC_VERSION = $(NODEJS_COMMON_VERSION) +NODEJS_SRC_SOURCE = $(NODEJS_COMMON_SOURCE) +NODEJS_SRC_SITE = $(NODEJS_COMMON_SITE) +NODEJS_SRC_DL_SUBDIR = nodejs + +NODEJS_SRC_LICENSE = $(NODEJS_LICENSE) +NODEJS_SRC_LICENSE_FILES = $(NODEJS_LICENSE_FILES) +NODEJS_SRC_CPE_ID_VENDOR = $(NODEJS_CPE_ID_VENDOR) +NODEJS_SRC_CPE_ID_PRODUCT = $(NODEJS_CPE_ID_PRODUCT) + +HOST_NODEJS_SRC_PROVIDES = host-nodejs + +NODEJS_SRC_DEPENDENCIES = \ + host-ninja \ + host-pkgconf \ + host-python3 \ + host-qemu \ + c-ares \ + libuv \ + nghttp2 \ + zlib \ + $(call qstrip,$(BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL_DEPS)) +HOST_NODEJS_SRC_DEPENDENCIES = \ + host-icu \ + host-libopenssl \ + host-ninja \ + host-pkgconf \ + host-python3 \ + host-zlib +NODEJS_SRC_INSTALL_STAGING = YES + +NODEJS_SRC_CONF_OPTS = \ + --shared-zlib \ + --shared-cares \ + --shared-libuv \ + --shared-nghttp2 \ + --cross-compiling \ + --dest-os=linux \ + --ninja + +HOST_NODEJS_SRC_MAKE_OPTS = \ + $(HOST_CONFIGURE_OPTS) \ + CXXFLAGS="$(HOST_NODEJS_SRC_CXXFLAGS)" \ + LDFLAGS.host="$(HOST_LDFLAGS)" \ + NO_LOAD=cctest.target.mk \ + PATH=$(@D)/bin:$(BR_PATH) \ + JOBS=$(PARALLEL_JOBS) + +NODEJS_SRC_MAKE_OPTS = \ + $(TARGET_CONFIGURE_OPTS) \ + NO_LOAD=cctest.target.mk \ + PATH=$(@D)/bin:$(BR_PATH) \ + LDFLAGS="$(NODEJS_SRC_LDFLAGS)" \ + LD="$(TARGET_CXX)" \ + JOBS=$(PARALLEL_JOBS) + +# nodejs's build system uses python which can be a symlink to an unsupported +# python version (e.g. python 3.10 with nodejs 14.18.1). We work around this by +# forcing host-python3 early in the PATH, via a python->python3 symlink. +define NODEJS_SRC_PYTHON3_SYMLINK + mkdir -p $(@D)/bin + ln -sf $(HOST_DIR)/bin/python3 $(@D)/bin/python +endef +HOST_NODEJS_SRC_PRE_CONFIGURE_HOOKS += NODEJS_SRC_PYTHON3_SYMLINK +NODEJS_SRC_PRE_CONFIGURE_HOOKS += NODEJS_SRC_PYTHON3_SYMLINK + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +NODEJS_SRC_DEPENDENCIES += openssl +NODEJS_SRC_CONF_OPTS += --shared-openssl +else +NODEJS_SRC_CONF_OPTS += --without-ssl +endif + +ifeq ($(BR2_PACKAGE_ICU),y) +NODEJS_SRC_DEPENDENCIES += icu +NODEJS_SRC_CONF_OPTS += --with-intl=system-icu +else +NODEJS_SRC_CONF_OPTS += --with-intl=none +endif + +ifneq ($(BR2_PACKAGE_NODEJS_NPM),y) +NODEJS_SRC_CONF_OPTS += --without-npm +endif + +define HOST_NODEJS_SRC_CONFIGURE_CMDS + cd $(@D); \ + $(HOST_CONFIGURE_OPTS) \ + PATH=$(@D)/bin:$(BR_PATH) \ + PYTHON=$(HOST_DIR)/bin/python3 \ + $(HOST_DIR)/bin/python3 configure.py \ + --prefix=$(HOST_DIR) \ + --shared-openssl \ + --shared-openssl-includes=$(HOST_DIR)/include \ + --shared-openssl-libpath=$(HOST_DIR)/lib \ + --shared-zlib \ + --no-cross-compiling \ + --with-intl=system-icu \ + --ninja +endef + +HOST_NODEJS_SRC_CXXFLAGS = $(HOST_CXXFLAGS) + +define HOST_NODEJS_SRC_BUILD_CMDS + $(HOST_MAKE_ENV) PYTHON=$(HOST_DIR)/bin/python3 \ + $(MAKE) -C $(@D) \ + $(HOST_NODEJS_SRC_MAKE_OPTS) +endef + +ifeq ($(BR2_PACKAGE_HOST_NODEJS_COREPACK),y) +define HOST_NODEJS_SRC_ENABLE_COREPACK + $(COREPACK) enable +endef +endif + +define HOST_NODEJS_SRC_INSTALL_CMDS + $(HOST_MAKE_ENV) PYTHON=$(HOST_DIR)/bin/python3 \ + $(MAKE) -C $(@D) install \ + $(HOST_NODEJS_SRC_MAKE_OPTS) + $(HOST_NODEJS_SRC_ENABLE_COREPACK) +endef + +ifeq ($(BR2_i386),y) +NODEJS_SRC_CPU = ia32 +else ifeq ($(BR2_x86_64),y) +NODEJS_SRC_CPU = x64 +else ifeq ($(BR2_mips),y) +NODEJS_SRC_CPU = mips +else ifeq ($(BR2_mipsel),y) +NODEJS_SRC_CPU = mipsel +else ifeq ($(BR2_arm),y) +NODEJS_SRC_CPU = arm +# V8 needs to know what floating point ABI the target is using. +NODEJS_SRC_ARM_FP = $(GCC_TARGET_FLOAT_ABI) +# it also wants to know which FPU to use, but only has support for +# vfp, vfpv3, vfpv3-d16 and neon. +ifeq ($(BR2_ARM_FPU_VFPV2),y) +NODEJS_SRC_ARM_FPU = vfp +# vfpv4 is a superset of vfpv3 +else ifeq ($(BR2_ARM_FPU_VFPV3)$(BR2_ARM_FPU_VFPV4),y) +NODEJS_SRC_ARM_FPU = vfpv3 +# vfpv4-d16 is a superset of vfpv3-d16 +else ifeq ($(BR2_ARM_FPU_VFPV3D16)$(BR2_ARM_FPU_VFPV4D16),y) +NODEJS_SRC_ARM_FPU = vfpv3-d16 +else ifeq ($(BR2_ARM_FPU_NEON),y) +NODEJS_SRC_ARM_FPU = neon +endif +else ifeq ($(BR2_aarch64),y) +NODEJS_SRC_CPU = arm64 +endif + +# MIPS architecture specific options +ifeq ($(BR2_mips)$(BR2_mipsel),y) +ifeq ($(BR2_MIPS_CPU_MIPS32R6),y) +NODEJS_SRC_MIPS_ARCH_VARIANT = r6 +NODEJS_SRC_MIPS_FPU_MODE = fp64 +else ifeq ($(BR2_MIPS_CPU_MIPS32R2),y) +NODEJS_SRC_MIPS_ARCH_VARIANT = r2 +else ifeq ($(BR2_MIPS_CPU_MIPS32),y) +NODEJS_SRC_MIPS_ARCH_VARIANT = r1 +endif +endif + +NODEJS_SRC_LDFLAGS = $(TARGET_LDFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +NODEJS_SRC_LDFLAGS += -latomic +endif + +# V8's JIT infrastructure requires binaries such as mksnapshot and +# mkpeephole to be run in the host during the build. However, these +# binaries must have the same bit-width as the target (e.g. a x86_64 +# host targeting ARMv6 needs to produce a 32-bit binary). To work around this +# issue, cross-compile the binaries for the target and run them on the +# host with QEMU, much like gobject-introspection. +define NODEJS_SRC_INSTALL_V8_QEMU_WRAPPER + $(INSTALL) -D -m 755 $(NODEJS_SRC_PKGDIR)/v8-qemu-wrapper.in \ + $(@D)/out/Release/v8-qemu-wrapper + $(SED) "s%@QEMU_USER@%$(QEMU_USER)%g" \ + $(@D)/out/Release/v8-qemu-wrapper + $(SED) "s%@TOOLCHAIN_HEADERS_VERSION@%$(BR2_TOOLCHAIN_HEADERS_AT_LEAST)%g" \ + $(@D)/out/Release/v8-qemu-wrapper + $(SED) "s%@QEMU_USERMODE_ARGS@%$(call qstrip,$(BR2_PACKAGE_HOST_QEMU_USER_MODE_ARGS))%g" \ + $(@D)/out/Release/v8-qemu-wrapper +endef +NODEJS_SRC_PRE_CONFIGURE_HOOKS += NODEJS_SRC_INSTALL_V8_QEMU_WRAPPER + +define NODEJS_SRC_WRAPPER_FIXUP + $(SED) "s%@MAYBE_WRAPPER@%'<(PRODUCT_DIR)/v8-qemu-wrapper',%g" $(@D)/node.gyp + $(SED) "s%@MAYBE_WRAPPER@%'<(PRODUCT_DIR)/v8-qemu-wrapper',%g" $(@D)/tools/v8_gypfiles/v8.gyp +endef +NODEJS_SRC_PRE_CONFIGURE_HOOKS += NODEJS_SRC_WRAPPER_FIXUP + +# Do not run the qemu-wrapper for the host build. +define HOST_NODEJS_SRC_WRAPPER_FIXUP + $(SED) "s%@MAYBE_WRAPPER@%%g" $(@D)/node.gyp + $(SED) "s%@MAYBE_WRAPPER@%%g" $(@D)/tools/v8_gypfiles/v8.gyp +endef +HOST_NODEJS_SRC_PRE_CONFIGURE_HOOKS += HOST_NODEJS_SRC_WRAPPER_FIXUP + +define NODEJS_SRC_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_CONFIGURE_OPTS) \ + PATH=$(@D)/bin:$(BR_PATH) \ + LDFLAGS="$(NODEJS_SRC_LDFLAGS)" \ + LD="$(TARGET_CXX)" \ + PYTHON=$(HOST_DIR)/bin/python3 \ + $(HOST_DIR)/bin/python3 configure.py \ + --prefix=/usr \ + --dest-cpu=$(NODEJS_SRC_CPU) \ + $(if $(NODEJS_SRC_ARM_FP),--with-arm-float-abi=$(NODEJS_SRC_ARM_FP)) \ + $(if $(NODEJS_SRC_ARM_FPU),--with-arm-fpu=$(NODEJS_SRC_ARM_FPU)) \ + $(if $(NODEJS_SRC_MIPS_ARCH_VARIANT),--with-mips-arch-variant=$(NODEJS_SRC_MIPS_ARCH_VARIANT)) \ + $(if $(NODEJS_SRC_MIPS_FPU_MODE),--with-mips-fpu-mode=$(NODEJS_SRC_MIPS_FPU_MODE)) \ + $(NODEJS_SRC_CONF_OPTS) \ + ) +endef + +define NODEJS_SRC_BUILD_CMDS + $(TARGET_MAKE_ENV) PYTHON=$(HOST_DIR)/bin/python3 \ + $(MAKE) -C $(@D) \ + $(NODEJS_SRC_MAKE_OPTS) +endef + +# +# Build the list of modules to install. +# +NODEJS_SRC_MODULES_LIST= $(call qstrip,\ + $(BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL)) + +# +# We can only call NPM if there's something to install. +# +ifneq ($(NODEJS_SRC_MODULES_LIST),) +NODEJS_SRC_DEPENDENCIES += host-nodejs +define NODEJS_SRC_INSTALL_MODULES + # If you're having trouble with module installation, adding -d to the + # npm install call below and setting npm_config_rollback=false can both + # help in diagnosing the problem. + $(NPM) install -g $(NODEJS_SRC_MODULES_LIST) +endef + +# Exclude prebuilt binaries with different architectures and OS from check +NODEJS_SRC_BIN_ARCH_EXCLUDE = /usr/lib/node_modules/ +endif + +define NODEJS_SRC_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) PYTHON=$(HOST_DIR)/bin/python3 \ + $(MAKE) -C $(@D) install \ + DESTDIR=$(STAGING_DIR) \ + $(NODEJS_SRC_MAKE_OPTS) +endef + +define NODEJS_SRC_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) PYTHON=$(HOST_DIR)/bin/python3 \ + $(MAKE) -C $(@D) install \ + DESTDIR=$(TARGET_DIR) \ + $(NODEJS_SRC_MAKE_OPTS) + $(NODEJS_SRC_INSTALL_MODULES) +endef + +# node.js configure is a Python script and does not use autotools +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/nodejs/nodejs-src/v8-qemu-wrapper.in b/package/nodejs/nodejs-src/v8-qemu-wrapper.in new file mode 100644 index 00000000..48222d08 --- /dev/null +++ b/package/nodejs/nodejs-src/v8-qemu-wrapper.in @@ -0,0 +1,10 @@ +#!/usr/bin/env sh + +# Pass -r to qemu-user as to trick glibc into not errorings out if the host kernel +# is older than the target kernel. +exec @QEMU_USER@ -r @TOOLCHAIN_HEADERS_VERSION@ \ + @QEMU_USERMODE_ARGS@ \ + -L "${STAGING_DIR}/" \ + -E LD_LIBRARY_PATH="${STAGING_DIR}/lib:${STAGING_DIR}/usr/lib/" \ + "$@" + diff --git a/package/nodejs/nodejs.hash b/package/nodejs/nodejs.hash new file mode 100644 index 00000000..61bda550 --- /dev/null +++ b/package/nodejs/nodejs.hash @@ -0,0 +1,8 @@ +# From https://nodejs.org/dist/v20.15.1/SHASUMS256.txt.asc +sha256 10d47a46ef208b3e4b226e4d595a82659123b22397ed77b7975d989114ec317e node-v20.15.1-linux-arm64.tar.xz +sha256 7bc120efdd8018f6915471b963d9b80adf4ed406d6dc9edb4ae944b85f505c4c node-v20.15.1-linux-armv7l.tar.xz +sha256 b33e684802251397ad62ad3f8a1836267ee8b7723f87f669470018ad0035287b node-v20.15.1-linux-ppc64le.tar.xz +sha256 26700f8d3e78112ad4a2618a9c8e2816e38a49ecf0213ece80e54c38cb02563f node-v20.15.1-linux-x64.tar.xz +sha256 fdd53a5729d936691a2a1151046fb4897721cb8b0fca2af957823a9b40fe0c34 node-v20.15.1.tar.xz +# Locally calculated +sha256 49cd410e0fe6a8879a40d0764092d1e6114cc85fe41d4efed990d028eec25582 LICENSE diff --git a/package/nodejs/nodejs.mk b/package/nodejs/nodejs.mk new file mode 100644 index 00000000..104d2cf2 --- /dev/null +++ b/package/nodejs/nodejs.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# nodejs +# +################################################################################ + +# _VERSION, _SOURCE and _SITE must be kept empty to avoid downloading anything +NODEJS_COMMON_VERSION = 20.15.1 +NODEJS_COMMON_SOURCE = node-v$(NODEJS_COMMON_VERSION).tar.xz +NODEJS_COMMON_SITE = http://nodejs.org/dist/v$(NODEJS_COMMON_VERSION) + +NODEJS_LICENSE = MIT (core code); MIT, Apache and BSD family licenses (Bundled components) +NODEJS_LICENSE_FILES = LICENSE +NODEJS_CPE_ID_VENDOR = nodejs +NODEJS_CPE_ID_PRODUCT = node.js + +NODEJS_BIN_ENV = $(TARGET_CONFIGURE_OPTS) \ + LDFLAGS="$(NODEJS_LDFLAGS)" \ + LD="$(TARGET_CXX)" \ + npm_config_arch=$(NODEJS_CPU) \ + npm_config_target_arch=$(NODEJS_CPU) \ + npm_config_build_from_source=true \ + npm_config_nodedir=$(STAGING_DIR)/usr \ + npm_config_prefix=$(TARGET_DIR)/usr \ + npm_config_cache=$(BUILD_DIR)/.npm-cache + +# Define various packaging tools for other packages to use +NPM = $(NODEJS_BIN_ENV) $(HOST_DIR)/bin/npm +ifeq ($(BR2_PACKAGE_HOST_NODEJS_COREPACK),y) +COREPACK = $(NODEJS_BIN_ENV) $(HOST_DIR)/bin/corepack +PNPM = $(NODEJS_BIN_ENV) $(HOST_DIR)/bin/pnpm +YARN = $(NODEJS_BIN_ENV) $(HOST_DIR)/bin/yarn +endif + +NODEJS_DEPENDENCIES = nodejs-src +$(eval $(generic-package)) +$(eval $(host-virtual-package)) + +include $(sort $(wildcard package/nodejs/*/*.mk)) diff --git a/package/nodm/Config.in b/package/nodm/Config.in new file mode 100644 index 00000000..52fd031b --- /dev/null +++ b/package/nodm/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_NODM + bool "nodm" + depends on BR2_PACKAGE_XORG7 + depends on (BR2_ENABLE_LOCALE && BR2_USE_WCHAR) # linux-pam + depends on !BR2_STATIC_LIBS # linux-pam + depends on BR2_USE_MMU # linux-pam + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # linux-pam + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_LINUX_PAM + help + nodm is a minimal display manager that simply logs in + as a given user and starts an X session, without asking + for username or password. + + For those cases where automatic login is needed (and + does not imply a security issue), nodm is simple to setup, + lightweight, and it should do exactly the right thing. + + https://github.com/spanezz/nodm/ + +comment "nodm needs a toolchain w/ wchar, locale, dynamic library, gcc >= 4.9" + depends on BR2_PACKAGE_XORG7 + depends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \ + || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/nodm/S90nodm b/package/nodm/S90nodm new file mode 100644 index 00000000..a966e839 --- /dev/null +++ b/package/nodm/S90nodm @@ -0,0 +1,49 @@ +#!/bin/sh +# +# Starts nodm +# + +NODM_FIRST_VT=7 +NODM_XSESSION=/etc/X11/Xsession +NODM_OPTIONS= +NODM_X_OPTIONS="-nolisten tcp" +NODM_USER=root +NODM_MIN_SESSION_TIME=60 +NODM_X_TIMEOUT=300 + +[ -r /etc/default/nodm ] && . /etc/default/nodm + +export NODM_XSESSION NODM_X_OPTIONS NODM_USER NODM_MIN_SESSION_TIME NODM_FIRST_VT NODM_X_TIMEOUT + +start() { + printf "Starting nodm: " + start-stop-daemon -S -q -p /var/run/nodm.pid --exec /usr/sbin/nodm -b -m -S -- ${NODM_OPTIONS} + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping nodm: " + start-stop-daemon -K -q -p /var/run/nodm.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + sleep 1 + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/package/nodm/nodm.hash b/package/nodm/nodm.hash new file mode 100644 index 00000000..79f16af7 --- /dev/null +++ b/package/nodm/nodm.hash @@ -0,0 +1,3 @@ +# locally calculated +sha256 ef11667ae82846801a9633df36c20f632cc03319bb1da35f062ac0f950771273 nodm-0.13.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/nodm/nodm.mk b/package/nodm/nodm.mk new file mode 100644 index 00000000..a5afd53b --- /dev/null +++ b/package/nodm/nodm.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# nodm +# +################################################################################ + +NODM_VERSION = 0.13 +NODM_SITE = $(call github,spanezz,nodm,$(NODM_VERSION)) +NODM_LICENSE = GPL-2.0+ +NODM_LICENSE_FILES = COPYING +NODM_AUTORECONF = YES + +NODM_DEPENDENCIES = xlib_libX11 linux-pam + +# help2man doesn't work when cross compiling +define NODM_DISABLE_HELP2MAN + $(SED) 's/help2man/true/' $(@D)/Makefile.am +endef + +NODM_POST_PATCH_HOOKS += NODM_DISABLE_HELP2MAN + +define NODM_INSTALL_PAM + $(INSTALL) -D -m 0644 package/nodm/nodm.pam \ + $(TARGET_DIR)/etc/pam.d/nodm +endef + +NODM_POST_INSTALL_TARGET_HOOKS += NODM_INSTALL_PAM + +define NODM_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/nodm/S90nodm \ + $(TARGET_DIR)/etc/init.d/S90nodm +endef + +$(eval $(autotools-package)) diff --git a/package/nodm/nodm.pam b/package/nodm/nodm.pam new file mode 100644 index 00000000..f2cf4321 --- /dev/null +++ b/package/nodm/nodm.pam @@ -0,0 +1,14 @@ +# Log service and allow promiscuously +# +auth required pam_warn.so +auth required pam_unix.so + +account required pam_warn.so +account required pam_permit.so + +password required pam_warn.so +password required pam_permit.so + +session required pam_warn.so +session required pam_permit.so +session required pam_env.so diff --git a/package/noip/Config.in b/package/noip/Config.in new file mode 100644 index 00000000..aea5deb9 --- /dev/null +++ b/package/noip/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_NOIP + bool "noip" + depends on BR2_USE_MMU # fork() + help + Dynamic DNS update client for no-ip.com + + http://www.no-ip.com/downloads.php diff --git a/package/noip/noip.hash b/package/noip/noip.hash new file mode 100644 index 00000000..79b6309d --- /dev/null +++ b/package/noip/noip.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 82b9bafab96a0c53b21aaef688bf70b3572e26217b5e2072bdb09da3c4a6f593 noip-duc-linux.tar.gz +sha256 5aaf7e9e1790c6e372b6c5dec8c6c4b60504414a8c56f64c3071d281d3c251fa COPYING diff --git a/package/noip/noip.mk b/package/noip/noip.mk new file mode 100644 index 00000000..8b57d824 --- /dev/null +++ b/package/noip/noip.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# noip +# +################################################################################ + +NOIP_VERSION = 2.1.9 +NOIP_SITE = http://www.no-ip.com/client/linux +NOIP_SOURCE = noip-duc-linux.tar.gz +NOIP_LICENSE = GPL-2.0+ +NOIP_LICENSE_FILES = COPYING + +# Pass TARGET_{C,LD}FLAGS through LIBS as noip doesn't rely on implicit +# make rules +define NOIP_BUILD_CMDS + $(SED) "/^#define CONFIG_FILENAME/ s/PREFIX//" $(@D)/noip2.c + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CC="$(TARGET_CC)" \ + LIBS="$(TARGET_CFLAGS) $(TARGET_LDFLAGS)" \ + PREFIX=/usr CONFDIR=/etc +endef + +define NOIP_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/noip2 $(TARGET_DIR)/usr/sbin/noip2 +endef + +$(eval $(generic-package)) diff --git a/package/norm/0001-protolib-drop-linux-version-check.patch b/package/norm/0001-protolib-drop-linux-version-check.patch new file mode 100644 index 00000000..7852a30a --- /dev/null +++ b/package/norm/0001-protolib-drop-linux-version-check.patch @@ -0,0 +1,38 @@ +The char * to unsigned char * change happened for the libnetfilter_queue +1.0.0 release, not the linux headers. +So drop the linux headers version check since it causes more harm than +good by trying the old API when the toolchain uses old linux headers +with a new-enough libnetfilter_queue. + +Signed-off-by: Gustavo Zacarias + +diff -Nura norm-1.5r6.orig/protolib/src/linux/linuxDetour.cpp norm-1.5r6/protolib/src/linux/linuxDetour.cpp +--- norm-1.5r6.orig/protolib/src/linux/linuxDetour.cpp 2016-03-31 10:17:20.674745597 -0300 ++++ norm-1.5r6/protolib/src/linux/linuxDetour.cpp 2016-03-31 10:36:58.923084395 -0300 +@@ -16,8 +16,6 @@ + #include // for ETH_P_IP + #include // for ARPHRD_ETHER + +-#include // for LINUX_VERSION_CODE +- + /** NOTES: + * + * 1) This newer implementation of LinuxDetour uses netfilter_queue +@@ -591,17 +589,7 @@ + + // Finally record packet length and cache pointer to IP packet data + +- // A change to the nfq_get_payload() prototype seemed to kick in around Linux header files +- // version 3.6? (This will probably need to be fine tuned for the right version threshold.) +- +-#define LINUX_VERSION_MAJOR (LINUX_VERSION_CODE/65536) +-#define LINUX_VERSION_MINOR ((LINUX_VERSION_CODE - (LINUX_VERSION_MAJOR*65536)) / 256) +- +-#if ((LINUX_VERSION_MAJOR > 3) || ((LINUX_VERSION_MAJOR == 3) && (LINUX_VERSION_MINOR > 5))) + linuxDetour->nfq_pkt_len = nfq_get_payload(nfqData, (unsigned char**)(&linuxDetour->nfq_pkt_data)); +-#else +- linuxDetour->nfq_pkt_len = nfq_get_payload(nfqData, &linuxDetour->nfq_pkt_data); +-#endif // + return 0; + } // end LinuxDetour::NfqCallback() + diff --git a/package/norm/0002-Use-print-as-function-call-for-Python3-compatibility.patch b/package/norm/0002-Use-print-as-function-call-for-Python3-compatibility.patch new file mode 100644 index 00000000..945a9df4 --- /dev/null +++ b/package/norm/0002-Use-print-as-function-call-for-Python3-compatibility.patch @@ -0,0 +1,29 @@ +From 8c02c2cbc6f07ddaef23e6bf2f6b9a269ed85ff4 Mon Sep 17 00:00:00 2001 +From: Titouan Christophe +Date: Tue, 4 Feb 2020 11:59:07 +0100 +Subject: [PATCH] Use print as function call for Python3 compatibility + +A similar patch has already been applied upstream, in commit +ada15125a1cbb3b1718d6eef78512a36ed327fcc, which will therefore be +available in the next norm release + +Signed-off-by: Titouan Christophe +--- + wscript | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/wscript b/wscript +index 8428899..0fdae96 100644 +--- a/wscript ++++ b/wscript +@@ -32,7 +32,7 @@ for line in vfile.readlines(): + if "#define" == line[0] and "VERSION" == line[1]: + VERSION = line[2].strip('"') + if VERSION is None: +- print "Warning: NORM VERSION not found!?" ++ print("Warning: NORM VERSION not found!?") + + # So you don't need to do ./waf configure if you are just using the defaults + waflib.Configure.autoconfig = True +-- +2.24.1 diff --git a/package/norm/0003-Fix-mixed-tabs-spaces-in-protolib-wscript.patch b/package/norm/0003-Fix-mixed-tabs-spaces-in-protolib-wscript.patch new file mode 100644 index 00000000..e99f292d --- /dev/null +++ b/package/norm/0003-Fix-mixed-tabs-spaces-in-protolib-wscript.patch @@ -0,0 +1,41 @@ +From 0ff75628845d3c86974c31b50ecd60c0b0144c6d Mon Sep 17 00:00:00 2001 +From: Titouan Christophe +Date: Tue, 4 Feb 2020 13:44:27 +0100 +Subject: [PATCH] Fix mixed tabs/spaces in protolib wscript + +This fixes the following error when using waf in Python3: + TabError: inconsistent use of tabs and spaces in indentation + +The upstream file has since diverged, but with similar issues. +[Upstream status: https://github.com/USNavalResearchLaboratory/protolib/pull/6] + +Signed-off-by: Titouan Christophe +--- + protolib/wscript | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/protolib/wscript b/protolib/wscript +index 155a660..97dda93 100644 +--- a/protolib/wscript ++++ b/protolib/wscript +@@ -120,7 +120,7 @@ def configure(ctx): + # Compiler-specific flags + if ctx.options.debug: + #ctx.env.DEFINES_BUILD_PROTOLIB += ['PROTO_DEBUG', 'DEBUG', '_DEBUG'] +- ctx.env.DEFINES_BUILD_PROTOLIB += ['PROTO_DEBUG', 'DEBUG'] ++ ctx.env.DEFINES_BUILD_PROTOLIB += ['PROTO_DEBUG', 'DEBUG'] + else: + ctx.env.DEFINES_BUILD_PROTOLIB += ['NDEBUG', "PROTO_DEBUG"] + +@@ -139,7 +139,7 @@ def configure(ctx): + ctx.env.CFLAGS += ['/Od', '/RTC1', '/ZI'] + else: + ctx.env.CXXFLAGS += ['/Ox', '/DNDEBUG'] +- #ctx.env.CXXFLAGS += ['/Ox', '/DNDEBUG', '/DWINVER=0x0501'] ++ #ctx.env.CXXFLAGS += ['/Ox', '/DNDEBUG', '/DWINVER=0x0501'] + ctx.env.CFLAGS + + def build(ctx): +-- +2.24.1 + diff --git a/package/norm/0004-protolib-wscript-fix-build-with-waf-2.1.0.patch b/package/norm/0004-protolib-wscript-fix-build-with-waf-2.1.0.patch new file mode 100644 index 00000000..827a607f --- /dev/null +++ b/package/norm/0004-protolib-wscript-fix-build-with-waf-2.1.0.patch @@ -0,0 +1,53 @@ +From c35a9dc031cda1406eff7de1f199ad55949b17c6 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 24 Aug 2024 21:28:16 +0200 +Subject: [PATCH] protolib/wscript: fix build with waf >= 2.1.0 + +Replace add_option_group by add_argument_group and add_option by +add_argument to avoid the following build failure with waf 2.1.0 and +https://gitlab.com/ita1024/waf/-/commit/bd5c22d484734f7c1b77e16c91a10c7a44fa6c8a: + + File "/home/autobuild/autobuild/instance-21/output-1/build/norm-1.5.8/protolib/wscript", line 37, in options + bind_opts = ctx.parser.add_option_group('Language Bindings', 'Use during configure step.') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/USNavalResearchLaboratory/protolib/pull/47 +Signed-off-by: Thomas Petazzoni +--- + protolib/wscript | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/protolib/wscript b/protolib/wscript +index 97dda93..97f65f6 100644 +--- a/protolib/wscript ++++ b/protolib/wscript +@@ -34,18 +34,18 @@ def options(ctx): + ctx.load('python') + ctx.load('java') + +- bind_opts = ctx.parser.add_option_group('Language Bindings', 'Use during configure step.') +- bind_opts.add_option('--build-python', action='store_true', ++ bind_opts = ctx.parser.add_argument_group('Language Bindings', 'Use during configure step.') ++ bind_opts.add_argument('--build-python', action='store_true', + help='Build Python bindings [default:false]') +- bind_opts.add_option('--build-java', action='store_true', ++ bind_opts.add_argument('--build-java', action='store_true', + help='Build Java bindings [default:false]') + +- build_opts = ctx.parser.add_option_group('Compile Options', 'Use during build step.') +- build_opts.add_option('--debug', action='store_true', ++ build_opts = ctx.parser.add_argument_group('Compile Options', 'Use during build step.') ++ build_opts.add_argument('--debug', action='store_true', + help='Build in debug mode [default:release]') +- build_opts.add_option('--enable-wx', action='store_true', ++ build_opts.add_argument('--enable-wx', action='store_true', + help='Enable checking for wxWidgets.') +- build_opts.add_option('--enable-static-library', action='store_true', ++ build_opts.add_argument('--enable-static-library', action='store_true', + help='Enable installing static library. [default:false]') + + def configure(ctx): +-- +2.46.0 + diff --git a/package/norm/0005-wscript-fix-build-with-waf-2.1.0.patch b/package/norm/0005-wscript-fix-build-with-waf-2.1.0.patch new file mode 100644 index 00000000..7260beef --- /dev/null +++ b/package/norm/0005-wscript-fix-build-with-waf-2.1.0.patch @@ -0,0 +1,35 @@ +From 9f7a9b72ff5a7313793bba86962f9677970c9b4c Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 27 Jul 2024 20:41:45 +0200 +Subject: [PATCH] wscript: fix build with waf >= 2.1.0 + +Replace add_option_group by add_argument_group to a build failure with +waf 2.1.0 and +https://gitlab.com/ita1024/waf/-/commit/bd5c22d484734f7c1b77e16c91a10c7a44fa6c8a: + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/USNavalResearchLaboratory/norm/pull/86 +[Thomas: small change needed to backport on version 1.5.8] +Signed-off-by: Thomas Petazzoni +--- + wscript | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/wscript b/wscript +index 0fdae96..6a8c22a 100644 +--- a/wscript ++++ b/wscript +@@ -47,8 +47,8 @@ system = platform.system().lower() + + def options(ctx): + ctx.recurse('protolib') +- build_opts = ctx.parser.add_option_group('Compile/install Options', 'Use during build/install step.') +- build_opts.add_option('--enable-static-library', action='store_true', ++ build_opts = ctx.parser.add_argument_group('Compile/install Options', 'Use during build/install step.') ++ build_opts.add_argument('--enable-static-library', action='store_true', + help='Enable building and installing static library. [default:false]') + + +-- +2.46.0 + diff --git a/package/norm/Config.in b/package/norm/Config.in new file mode 100644 index 00000000..49446334 --- /dev/null +++ b/package/norm/Config.in @@ -0,0 +1,15 @@ +comment "norm needs a toolchain w/ C++, threads, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_NORM + bool "norm" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + The NORM protocol is designed to provide end-to-end reliable + transport of bulk data objects or streams over generic IP + multicast routing and forwarding services. + + http://www.nrl.navy.mil/itd/ncs/products/norm diff --git a/package/norm/norm.hash b/package/norm/norm.hash new file mode 100644 index 00000000..ab0930e8 --- /dev/null +++ b/package/norm/norm.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 4480a6ea53fb7ce45b4bc2061d18fbfd46ee9990fc2ed9a9dc303ce4d87888a6 src-norm-with-protolib-1.5.8.tgz +sha256 ba4b7e49b0163d6839830e3f47505696c6eaac77ccd93531831dc837b2160608 LICENSE.TXT diff --git a/package/norm/norm.mk b/package/norm/norm.mk new file mode 100644 index 00000000..a3fa1b4f --- /dev/null +++ b/package/norm/norm.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# norm +# +################################################################################ + +NORM_VERSION = 1.5.8 +NORM_SITE = https://github.com/USNavalResearchLaboratory/norm/releases/download/v$(NORM_VERSION) +NORM_SOURCE = src-norm-with-protolib-$(NORM_VERSION).tgz +NORM_INSTALL_STAGING = YES +NORM_LICENSE = NRL License +NORM_LICENSE_FILES = LICENSE.TXT + +# The bundled waf script is too old for >= python3.11 +NORM_NEEDS_EXTERNAL_WAF = YES + +ifeq ($(BR2_PACKAGE_LIBNETFILTER_QUEUE),y) +NORM_DEPENDENCIES += libnetfilter_queue +endif + +# install target doesn't install headers unfortunately... +define NORM_INSTALL_HEADERS + cp -f $(@D)/include/norm* $(STAGING_DIR)/usr/include +endef +NORM_POST_INSTALL_STAGING_HOOKS += NORM_INSTALL_HEADERS + +$(eval $(waf-package)) diff --git a/package/nss-mdns/Config.in b/package/nss-mdns/Config.in new file mode 100644 index 00000000..017e8003 --- /dev/null +++ b/package/nss-mdns/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_NSS_MDNS + bool "nss-mdns" + # libdaemon->avahi uses fork() + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_PACKAGE_AVAHI_DAEMON + help + nss-mdns is a plugin for the GNU Name Service Switch (NSS) + functionality of the GNU C Library (glibc) providing host + name resolution via Multicast DNS (aka Zeroconf, aka Apple + Rendezvous, aka Apple Bonjour), effectively allowing name + resolution by common Unix/Linux programs in the ad-hoc + mDNS domain .local. + + https://github.com/lathiat/nss-mdns + +comment "nss-mdns needs a glibc toolchain" + depends on BR2_USE_MMU && BR2_PACKAGE_AVAHI_DAEMON + depends on !BR2_TOOLCHAIN_USES_GLIBC diff --git a/package/nss-mdns/nss-mdns.hash b/package/nss-mdns/nss-mdns.hash new file mode 100644 index 00000000..3ab546f9 --- /dev/null +++ b/package/nss-mdns/nss-mdns.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 ddf71453d7a7cdc5921fe53ef387b24fd0c3c49f4dcf94a2a437498596761a21 nss-mdns-0.15.1.tar.gz +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 LICENSE diff --git a/package/nss-mdns/nss-mdns.mk b/package/nss-mdns/nss-mdns.mk new file mode 100644 index 00000000..fd10fd88 --- /dev/null +++ b/package/nss-mdns/nss-mdns.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# nss-mdns +# +################################################################################ + +NSS_MDNS_VERSION = 0.15.1 +NSS_MDNS_SITE = \ + https://github.com/lathiat/nss-mdns/releases/download/v$(NSS_MDNS_VERSION) +NSS_MDNS_LICENSE = LGPL-2.1+ +NSS_MDNS_LICENSE_FILES = LICENSE +NSS_MDNS_CONF_OPTS = --disable-tests + +# add mdns4_minimal / mdns around the dns provider if missing +define NSS_MDNS_INSTALL_CONFIG + $(SED) '/^hosts:/ {/mdns4/! s/dns/mdns4_minimal [NOTFOUND=return] dns mdns4/}' \ + $(TARGET_DIR)/etc/nsswitch.conf +endef + +NSS_MDNS_TARGET_FINALIZE_HOOKS += NSS_MDNS_INSTALL_CONFIG + +$(eval $(autotools-package)) diff --git a/package/nss-myhostname/Config.in b/package/nss-myhostname/Config.in new file mode 100644 index 00000000..bdd9830e --- /dev/null +++ b/package/nss-myhostname/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_NSS_MYHOSTNAME + bool "nss-myhostname" + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on !BR2_PACKAGE_SYSTEMD_MYHOSTNAME + help + Name Service Switch module for resolving the local hostname + + http://0pointer.de/lennart/projects/nss-myhostname + +comment "nss-myhostname needs a glibc toolchain" + depends on !BR2_TOOLCHAIN_USES_GLIBC + depends on !BR2_PACKAGE_SYSTEMD_MYHOSTNAME diff --git a/package/nss-myhostname/nss-myhostname.hash b/package/nss-myhostname/nss-myhostname.hash new file mode 100644 index 00000000..3ea0618a --- /dev/null +++ b/package/nss-myhostname/nss-myhostname.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 2ba744ea8d578d1c57c85884e94a3042ee17843a5294434d3a7f6c4d67e7caf2 nss-myhostname-0.3.tar.gz +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 LICENSE diff --git a/package/nss-myhostname/nss-myhostname.mk b/package/nss-myhostname/nss-myhostname.mk new file mode 100644 index 00000000..b1bdca8e --- /dev/null +++ b/package/nss-myhostname/nss-myhostname.mk @@ -0,0 +1,20 @@ +################################################################################ +# +## nss-myhostname +# +################################################################################ + +NSS_MYHOSTNAME_VERSION = 0.3 +NSS_MYHOSTNAME_SITE = http://0pointer.de/lennart/projects/nss-myhostname +NSS_MYHOSTNAME_LICENSE = LGPL-2.1+ +NSS_MYHOSTNAME_LICENSE_FILES = LICENSE + +# add myhostname after files if missing +define NSS_MYHOSTNAME_SET_NSSWITCH + $(SED) '/^hosts:/ {/myhostname/! s/files/files myhostname/}' \ + $(TARGET_DIR)/etc/nsswitch.conf +endef + +NSS_MYHOSTNAME_TARGET_FINALIZE_HOOKS += NSS_MYHOSTNAME_SET_NSSWITCH + +$(eval $(autotools-package)) diff --git a/package/nss-pam-ldapd/Config.in b/package/nss-pam-ldapd/Config.in new file mode 100644 index 00000000..233f2136 --- /dev/null +++ b/package/nss-pam-ldapd/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_NSS_PAM_LDAPD + bool "nss-pam-ldapd" + depends on BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_OPENLDAP + help + Name Service Switch (NSS) module that allows your LDAP + server to provide user account, group, host name, alias, + netgroup, and basically any other information that you would + normally get from /etc flat files or NIS. It also provides a + Pluggable Authentication Module (PAM) to do authentication + to an LDAP server. + + http://arthurdejong.org/nss-pam-ldapd/ + +if BR2_PACKAGE_NSS_PAM_LDAPD + +config BR2_PACKAGE_NSS_PAM_LDAPD_UTILITIES + bool "nss-pam-ldapd utilities" + help + Build/Install command-line utilities. + +endif + +comment "nss-pam-ldapd needs a glibc toolchain" + depends on !BR2_TOOLCHAIN_USES_GLIBC diff --git a/package/nss-pam-ldapd/S45nslcd b/package/nss-pam-ldapd/S45nslcd new file mode 100644 index 00000000..cd3e4d0f --- /dev/null +++ b/package/nss-pam-ldapd/S45nslcd @@ -0,0 +1,25 @@ +#!/bin/sh + +NAME="nslcd" +DAEMON="/usr/sbin/${NAME}" + +case "$1" in +start) + echo -n "Starting ${NAME}: " + start-stop-daemon -S -x ${DAEMON} + [ $? -eq 0 ] && echo "OK" || echo "FAIL" + ;; +stop) + echo -n "Stopping ${NAME}: " + start-stop-daemon -K -x ${DAEMON} + [ $? -eq 0 ] && echo "OK" || echo "FAIL" + ;; +restart|reload) + $0 stop + $0 start + ;; +*) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac + diff --git a/package/nss-pam-ldapd/nslcd.service b/package/nss-pam-ldapd/nslcd.service new file mode 100644 index 00000000..5a000a8e --- /dev/null +++ b/package/nss-pam-ldapd/nslcd.service @@ -0,0 +1,11 @@ +[Unit] +Description=Naming services LDAP client daemon. +After=syslog.target network.target + +[Service] +Type=forking +PIDFile=/run/nslcd/nslcd.pid +ExecStart=/usr/sbin/nslcd + +[Install] +WantedBy=multi-user.target diff --git a/package/nss-pam-ldapd/nss-pam-ldapd.hash b/package/nss-pam-ldapd/nss-pam-ldapd.hash new file mode 100644 index 00000000..3286f127 --- /dev/null +++ b/package/nss-pam-ldapd/nss-pam-ldapd.hash @@ -0,0 +1,5 @@ +# From https://arthurdejong.org/nss-pam-ldapd/nss-pam-ldapd-0.9.12.tar.gz.md5 +md5 cc30ee0ab91d6c94b7a343ae09b5dc69 nss-pam-ldapd-0.9.12.tar.gz +# Locally computed: +sha256 c6d661e74693cbf531a790631ca93b73f291fb23cc39465b09deb8da2bfb0e14 nss-pam-ldapd-0.9.12.tar.gz +sha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a COPYING diff --git a/package/nss-pam-ldapd/nss-pam-ldapd.mk b/package/nss-pam-ldapd/nss-pam-ldapd.mk new file mode 100644 index 00000000..60f63284 --- /dev/null +++ b/package/nss-pam-ldapd/nss-pam-ldapd.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# nss-pam-ldapd +# +################################################################################ + +NSS_PAM_LDAPD_VERSION = 0.9.12 +NSS_PAM_LDAPD_SITE = http://arthurdejong.org/nss-pam-ldapd +NSS_PAM_LDAPD_LICENSE = LGPL-2.1+ +NSS_PAM_LDAPD_LICENSE_FILES = COPYING +NSS_PAM_LDAPD_INSTALL_STAGING = YES + +NSS_PAM_LDAPD_CONF_OPTS = --disable-sasl +NSS_PAM_LDAPD_DEPENDENCIES = openldap + +ifeq ($(BR2_PACKAGE_NSS_PAM_LDAPD_UTILITIES),y) +NSS_PAM_LDAPD_CONF_OPTS += --enable-utils +else +NSS_PAM_LDAPD_CONF_OPTS += --disable-utils +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +NSS_PAM_LDAPD_CONF_OPTS += --enable-pam +NSS_PAM_LDAPD_DEPENDENCIES += linux-pam +else +NSS_PAM_LDAPD_CONF_OPTS += --disable-pam +endif + +define NSS_PAM_LDAPD_INSTALL_INIT_SYSTEMD + $(INSTALL) -m 644 -D package/nss-pam-ldapd/nslcd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/nslcd.service +endef + +define NSS_PAM_LDAPD_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/nss-pam-ldapd/S45nslcd \ + $(TARGET_DIR)/etc/init.d/S45nslcd +endef + +define NSS_PAM_LDAPD_USERS + nslcd -1 nslcd -1 * - - - nslcd user +endef + +$(eval $(autotools-package)) diff --git a/package/ntfs-3g/Config.in b/package/ntfs-3g/Config.in new file mode 100644 index 00000000..b9f7eafc --- /dev/null +++ b/package/ntfs-3g/Config.in @@ -0,0 +1,36 @@ +config BR2_PACKAGE_NTFS_3G + bool "ntfs-3g" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU + depends on !BR2_STATIC_LIBS + help + The NTFS-3G driver is an open source, freely available + read/write NTFS driver for Linux, FreeBSD, Mac OS X, NetBSD, + and Haiku. It provides safe and fast handling of the Windows + XP, Windows Server 2003, Windows 2000 and Windows Vista file + systems. Most POSIX file system operations are supported, with + the exception of full file ownership and access right support. + + http://www.ntfs-3g.org/ + +if BR2_PACKAGE_NTFS_3G + +config BR2_PACKAGE_NTFS_3G_ENCRYPTED + bool "encrypted volumes" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt + select BR2_PACKAGE_GNUTLS + select BR2_PACKAGE_LIBGCRYPT + help + Enable support for NTFS encrypted volumes. + +config BR2_PACKAGE_NTFS_3G_NTFSPROGS + bool "ntfsprogs" + help + Install NTFS utilities. + +endif + +comment "ntfs-3g 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/package/ntfs-3g/ntfs-3g.hash b/package/ntfs-3g/ntfs-3g.hash new file mode 100644 index 00000000..3fcba6af --- /dev/null +++ b/package/ntfs-3g/ntfs-3g.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 f20e36ee68074b845e3629e6bced4706ad053804cbaf062fbae60738f854170c ntfs-3g_ntfsprogs-2022.10.3.tgz +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING +sha256 d7bf9d064ac3e5840f9dd02422b7eeec4f1fd03f37fadbd043602be5e882304f COPYING.LIB diff --git a/package/ntfs-3g/ntfs-3g.mk b/package/ntfs-3g/ntfs-3g.mk new file mode 100644 index 00000000..62c515d5 --- /dev/null +++ b/package/ntfs-3g/ntfs-3g.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# ntfs-3g +# +################################################################################ + +NTFS_3G_VERSION = 2022.10.3 +NTFS_3G_SOURCE = ntfs-3g_ntfsprogs-$(NTFS_3G_VERSION).tgz +NTFS_3G_SITE = http://tuxera.com/opensource +NTFS_3G_CONF_OPTS = --disable-ldconfig +NTFS_3G_INSTALL_STAGING = YES +NTFS_3G_DEPENDENCIES = host-pkgconf +NTFS_3G_LICENSE = GPL-2.0+, LGPL-2.0+ +NTFS_3G_LICENSE_FILES = COPYING COPYING.LIB +NTFS_3G_CPE_ID_VENDOR = tuxera + +ifeq ($(BR2_PACKAGE_LIBFUSE),y) +NTFS_3G_CONF_OPTS += --with-fuse=external +NTFS_3G_DEPENDENCIES += libfuse +endif + +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y) +NTFS_3G_DEPENDENCIES += util-linux +endif + +ifeq ($(BR2_PACKAGE_NTFS_3G_ENCRYPTED),y) +NTFS_3G_CONF_ENV += LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config +NTFS_3G_CONF_OPTS += --enable-crypto +NTFS_3G_DEPENDENCIES += gnutls libgcrypt +endif + +ifneq ($(BR2_PACKAGE_NTFS_3G_NTFSPROGS),y) +NTFS_3G_CONF_OPTS += --disable-ntfsprogs +endif + +$(eval $(autotools-package)) diff --git a/package/ntp/0001-ntp-syscalls-fallback.patch b/package/ntp/0001-ntp-syscalls-fallback.patch new file mode 100644 index 00000000..46704b9d --- /dev/null +++ b/package/ntp/0001-ntp-syscalls-fallback.patch @@ -0,0 +1,28 @@ +inline ntp syscalls fallback + +Reference: + https://bugs.ntp.org/show_bug.cgi?id=769 + +Signed-off-by: James Knight +--- + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +Index: ntp-4.2.8p17/configure.ac +=================================================================== +--- ntp-4.2.8p17.orig/configure.ac ++++ ntp-4.2.8p17/configure.ac +@@ -1472,11 +1472,11 @@ AC_CACHE_CHECK( + [ntp_cv_var_ntp_syscalls], + [ + ntp_cv_var_ntp_syscalls=no +- case "$ac_cv_func_ntp_adjtime$ac_cv_func_ntp_gettime$ac_cv_func___adjtimex" in ++ case "$ac_cv_func_ntp_adjtime$ac_cv_func_ntp_gettime$ac_cv_func___adjtimex$ac_cv_func_adjtimex" in + yesyes*) + ntp_cv_var_ntp_syscalls=libc + ;; +- *yes) ++ *yesyes | *yesno | *noyes) + ntp_cv_var_ntp_syscalls=inline + ;; + *) diff --git a/package/ntp/0002-fix-pthread-detach-check.patch b/package/ntp/0002-fix-pthread-detach-check.patch new file mode 100644 index 00000000..894b422f --- /dev/null +++ b/package/ntp/0002-fix-pthread-detach-check.patch @@ -0,0 +1,26 @@ +fix pthread_detach check + +Upstream: https://bugs.ntp.org/show_bug.cgi?id=3926 + +Signed-off-by: Yegor Yefremov +--- + sntp/m4/openldap-thread-check.m4 | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +Index: ntp-4.2.8p17/sntp/m4/openldap-thread-check.m4 +=================================================================== +--- ntp-4.2.8p17.orig/sntp/m4/openldap-thread-check.m4 ++++ ntp-4.2.8p17/sntp/m4/openldap-thread-check.m4 +@@ -262,10 +262,8 @@ pthread_rwlock_t rwlock; + dnl save the flags + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + #include +-#ifndef NULL +-#define NULL (void*)0 +-#endif +-]], [[pthread_detach(NULL);]])],[ol_cv_func_pthread_detach=yes],[ol_cv_func_pthread_detach=no]) ++pthread_t thread; ++]], [[pthread_detach(thread);]])],[ol_cv_func_pthread_detach=yes],[ol_cv_func_pthread_detach=no]) + ]) + + if test $ol_cv_func_pthread_detach = no ; then diff --git a/package/ntp/Config.in b/package/ntp/Config.in new file mode 100644 index 00000000..78f008a4 --- /dev/null +++ b/package/ntp/Config.in @@ -0,0 +1,102 @@ +config BR2_PACKAGE_NTP + bool "ntp" + depends on BR2_USE_MMU || BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBEVENT + help + Network Time Protocol suite/programs. + Provides things like ntpd, ntpdate, ntpq, etc... + + http://www.ntp.org/ + +if BR2_PACKAGE_NTP + +config BR2_PACKAGE_NTP_SNTP + bool "sntp" + help + Simple network time protocol program (a replacement + for the ntpdate tool) + + A script is installed as S48sntp which will retrieve and + step the time if there is a large difference before ntpd + takes over the necessary slew adjustments in S49ntp. + +config BR2_PACKAGE_NTP_NTP_KEYGEN + bool "ntp-keygen" + help + Create a NTP host key + +config BR2_PACKAGE_NTP_NTP_SHM_CLK + bool "SHM clock support" + help + Compile ntp with support for a SHM clock attached through + shared memory. + +config BR2_PACKAGE_NTP_NTP_WAIT + bool "ntp-wait" + depends on BR2_PACKAGE_PERL + help + ntp-wait waits until the locally running ntpd is in state 4 + (synchronized). This could be useful at boot time, to delay + the boot sequence until after "ntpd -g" has set the time. + +config BR2_PACKAGE_NTP_NTPD + bool "ntpd" + default y + help + ntpd is the time synchronization daemon keeping your local + system date and time in sync and optionally serving time and + date information on the network via the NTP protocol. + +config BR2_PACKAGE_NTP_NTPD_ATOM_PPS + bool "PPS support" + depends on BR2_PACKAGE_NTP_NTPD + select BR2_PACKAGE_PPS_TOOLS + help + Compile ntpd with the ability to use an ATOM PPS source. + +config BR2_PACKAGE_NTP_NTPDATE + bool "ntpdate" + help + The ntpdate utility program is used to set the local date + and time from an NTP server given as an argument. + +config BR2_PACKAGE_NTP_NTPDC + bool "ntpdc" + help + The ntpdc utility program is used to query an NTP daemon about + its current state and to request changes in that state. + +config BR2_PACKAGE_NTP_NTPQ + bool "ntpq" + help + The ntpq utility program is used to query NTP servers + requesting information about current state and/or changes in + that state. + +config BR2_PACKAGE_NTP_NTPSNMPD + bool "ntpsnmpd" + depends on BR2_USE_MMU # netsnmp fork() + select BR2_PACKAGE_NETSNMP + help + Install ntpsnmpd NTP SNMP MIB agent. + +config BR2_PACKAGE_NTP_NTPTIME + bool "ntptime" + help + The ntptime utility program is used to read and set kernel + time variables. + +config BR2_PACKAGE_NTP_NTPTRACE + bool "ntptrace" + depends on BR2_PACKAGE_PERL + help + ntptrace is a perl script that uses the ntpq utility program + to follow the chain of NTP servers from a given host back to + the primary time source + +config BR2_PACKAGE_NTP_TICKADJ + bool "tickadj" + help + set time-related kernel variables + +endif diff --git a/package/ntp/S48sntp b/package/ntp/S48sntp new file mode 100644 index 00000000..96d8d507 --- /dev/null +++ b/package/ntp/S48sntp @@ -0,0 +1,55 @@ +#!/bin/sh + +DAEMON="sntp" +# sntp uses all the IPs resolved for the hostname (i.e. pool.ntp.org has 4). +# It will try each until they either all timeout or time has been set. Thus +# default to only providing one NTP pool host. +SNTP_SERVERS="pool.ntp.org" +# Step if time delta is greater then 128ms, otherwise slew +SNTP_ARGS="-Ss -M 128" +SNTP_KEY_CACHE="/tmp/kod" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + # Create key cache file to prevents warning that file is missing + touch $SNTP_KEY_CACHE + # shellcheck disable=SC2086 # we need the word splitting + /usr/bin/$DAEMON $SNTP_ARGS -K $SNTP_KEY_CACHE $SNTP_SERVERS + # sntp behavior + # - Does not background + # - Does not infinitely block + # - Time-out w/o network = ~2 sec + # - Time-out w/ network = ~5sec * # of servers + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + echo "Nothing to do, $DAEMON is not a daemon." +} + +restart() { + stop + sleep 1 + start +} + +reload() { + echo "Nothing to do, $DAEMON does not support reload." +} + +case "$1" in + start|stop|restart|reload) + "$1";; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/ntp/S49ntp.in b/package/ntp/S49ntp.in new file mode 100644 index 00000000..11c03b88 --- /dev/null +++ b/package/ntp/S49ntp.in @@ -0,0 +1,56 @@ +#!/bin/sh +# +# Starts Network Time Protocol daemon +# + +DAEMON="ntpd" +PIDFILE="/var/run/$DAEMON.pid" + +NTPD_ARGS="@NTPD_EXTRA_ARGS@ -g" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -p "$PIDFILE" -x "/usr/sbin/$DAEMON" \ + -- $NTPD_ARGS -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/ntp/ntp.hash b/package/ntp/ntp.hash new file mode 100644 index 00000000..44f3486d --- /dev/null +++ b/package/ntp/ntp.hash @@ -0,0 +1,4 @@ +# From https://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2.8p18.tar.gz.sha256 +sha256 cf84c5f3fb1a295284942624d823fffa634144e096cfc4f9969ac98ef5f468e5 ntp-4.2.8p18.tar.gz +# Locally computed +sha256 45b6e5a0a5f0ac4afdd9e23caa2241779e4da463e4dba32a41b4dbd61577b2a3 COPYRIGHT diff --git a/package/ntp/ntp.mk b/package/ntp/ntp.mk new file mode 100644 index 00000000..1a7c7e79 --- /dev/null +++ b/package/ntp/ntp.mk @@ -0,0 +1,136 @@ +################################################################################ +# +# ntp +# +################################################################################ + +NTP_VERSION_MAJOR = 4.2 +NTP_VERSION_MINOR = 8 +NTP_VERSION_POINT = 18 +NTP_VERSION = $(NTP_VERSION_MAJOR).$(NTP_VERSION_MINOR)p$(NTP_VERSION_POINT) +NTP_SITE = https://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-$(NTP_VERSION_MAJOR) +NTP_DEPENDENCIES = host-pkgconf libevent +NTP_LICENSE = NTP +NTP_LICENSE_FILES = COPYRIGHT +NTP_CPE_ID_VENDOR = ntp +NTP_CPE_ID_VERSION = $(NTP_VERSION_MAJOR).$(NTP_VERSION_MINOR) +NTP_CPE_ID_UPDATE = p$(NTP_VERSION_POINT) +NTP_SELINUX_MODULES = ntp +NTP_CONF_ENV = ac_cv_lib_md5_MD5Init=no POSIX_SHELL=/bin/sh +NTP_CONF_OPTS = \ + --with-shared \ + --program-transform-name=s,,, \ + --disable-tickadj \ + --disable-debugging \ + --with-yielding-select=yes \ + --disable-local-libevent + +# 0002-ntp-syscalls-fallback.patch +NTP_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +NTP_CONF_OPTS += --with-crypto --enable-openssl-random +NTP_DEPENDENCIES += openssl +else +NTP_CONF_OPTS += --without-crypto --disable-openssl-random +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_SSP),y) +NTP_CONF_OPTS += --with-hardenfile=linux +else +NTP_CONF_OPTS += --with-hardenfile=default +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +NTP_CONF_OPTS += --enable-linuxcaps +NTP_DEPENDENCIES += libcap +define NTP_USERS + ntp -1 ntp -1 * - - - ntpd user +endef +NTP_DAEMON_EXTRA_ARGS = -u ntp:ntp +else +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) +NTP_CONF_OPTS += \ + --with-net-snmp-config=$(STAGING_DIR)/usr/bin/net-snmp-config +NTP_DEPENDENCIES += netsnmp +else +NTP_CONF_OPTS += --without-ntpsnmpd +endif + +ifeq ($(BR2_PACKAGE_NTP_NTPD_ATOM_PPS),y) +NTP_CONF_OPTS += --enable-ATOM +NTP_DEPENDENCIES += pps-tools +else +NTP_CONF_OPTS += --disable-ATOM +endif + +ifeq ($(BR2_PACKAGE_NTP_NTP_SHM_CLK),y) +NTP_CONF_OPTS += --enable-SHM +else +NTP_CONF_OPTS += --disable-SHM +endif + +ifeq ($(BR2_PACKAGE_NTP_SNTP),y) +NTP_CONF_OPTS += --with-sntp +else +NTP_CONF_OPTS += --without-sntp +endif + +NTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTP_KEYGEN) += util/ntp-keygen +NTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTP_WAIT) += scripts/ntp-wait/ntp-wait +NTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTPDATE) += ntpdate/ntpdate +NTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTPDC) += ntpdc/ntpdc +NTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTPQ) += ntpq/ntpq +NTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTPSNMPD) += ntpsnmpd/ntpsnmpd +NTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTPTIME) += util/ntptime +NTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTPTRACE) += scripts/ntptrace/ntptrace +NTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_SNTP) += sntp/sntp +NTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_TICKADJ) += util/tickadj + +define NTP_INSTALL_TARGET_CMDS + $(if $(BR2_PACKAGE_NTP_NTPD), install -m 755 $(@D)/ntpd/ntpd $(TARGET_DIR)/usr/sbin/ntpd) + test -z "$(NTP_INSTALL_FILES_y)" || install -m 755 $(addprefix $(@D)/,$(NTP_INSTALL_FILES_y)) $(TARGET_DIR)/usr/bin/ + $(INSTALL) -m 644 package/ntp/ntpd.etc.conf $(TARGET_DIR)/etc/ntp.conf +endef + +# This script will step the time if there is a large difference +# before ntpd takes over the necessary slew adjustments +ifeq ($(BR2_PACKAGE_NTP_SNTP),y) +define NTP_INSTALL_INIT_SYSV_SNTP + $(INSTALL) -D -m 755 package/ntp/S48sntp $(TARGET_DIR)/etc/init.d/S48sntp +endef +endif + +ifeq ($(BR2_PACKAGE_NTP_NTPD),y) +define NTP_INSTALL_INIT_SYSV_NTPD + mkdir -p $(TARGET_DIR)/etc/init.d + sed -e 's%@NTPD_EXTRA_ARGS@%$(NTP_DAEMON_EXTRA_ARGS)%g' \ + package/ntp/S49ntp.in \ + > $(TARGET_DIR)/etc/init.d/S49ntp + chmod 0755 $(TARGET_DIR)/etc/init.d/S49ntp +endef + +define NTP_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/usr/lib/systemd/system + sed -e 's%@NTPD_EXTRA_ARGS@%$(NTP_DAEMON_EXTRA_ARGS)%g' \ + package/ntp/ntpd.service.in \ + > $(TARGET_DIR)/usr/lib/systemd/system/ntpd.service +endef +endif + +define NTP_INSTALL_INIT_SYSV + $(NTP_INSTALL_INIT_SYSV_NTPD) + $(NTP_INSTALL_INIT_SYSV_SNTP) +endef + +$(eval $(autotools-package)) diff --git a/package/ntp/ntpd.etc.conf b/package/ntp/ntpd.etc.conf new file mode 100644 index 00000000..c451aa9b --- /dev/null +++ b/package/ntp/ntpd.etc.conf @@ -0,0 +1,10 @@ +server 0.pool.ntp.org iburst +server 1.pool.ntp.org iburst +server 2.pool.ntp.org iburst +server 3.pool.ntp.org iburst + +# Allow only time queries, at a limited rate, sending KoD when in excess. +# Allow all local queries (IPv4, IPv6) +restrict default nomodify nopeer noquery limited kod +restrict 127.0.0.1 +restrict [::1] diff --git a/package/ntp/ntpd.service.in b/package/ntp/ntpd.service.in new file mode 100644 index 00000000..b7db4a28 --- /dev/null +++ b/package/ntp/ntpd.service.in @@ -0,0 +1,15 @@ +[Unit] +Description=Network Time Service +After=network.target + +[Service] +Type=forking +PIDFile=/run/ntpd.pid +# Turn off DNSSEC validation for hostname look-ups, since those need the +# correct time to work, but we likely won't acquire that without NTP. Let's +# break this chicken-and-egg cycle here. +Environment=SYSTEMD_NSS_RESOLVE_VALIDATE=0 +ExecStart=/usr/sbin/ntpd @NTPD_EXTRA_ARGS@ -g -p /run/ntpd.pid + +[Install] +WantedBy=multi-user.target diff --git a/package/ntpsec/0001-wscript-remove-checks-for-bsd-string.h-fixes-host-co.patch b/package/ntpsec/0001-wscript-remove-checks-for-bsd-string.h-fixes-host-co.patch new file mode 100644 index 00000000..d6ac61fc --- /dev/null +++ b/package/ntpsec/0001-wscript-remove-checks-for-bsd-string.h-fixes-host-co.patch @@ -0,0 +1,73 @@ +From 54fbeaa68a59f536819d1cfb2e9204176fbff54b Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Thu, 16 Dec 2021 23:27:35 +0100 +Subject: [PATCH] wscript: remove checks for bsd/string.h, fixes host-compile + failure + +Fixes the following host-compile failure while cross-compiling +in case target libbsd is found: + + [2/2] Compiling build/host/ntpd/ntp_parser.tab.c + In file included from ../../include/ntp.h:15, + from .../build/ntpsec-1_2_1/ntpd/ntp_parser.y:16: + ../../include/ntp_stdlib.h:20:10: fatal error: bsd/string.h: No such file or directory + 20 | #include + | ^~~~~~~~~~~~~~ + compilation terminated. + +Signed-off-by: Peter Seiderer +--- + include/ntp_stdlib.h | 4 ---- + wscript | 14 -------------- + 2 files changed, 18 deletions(-) + +diff --git a/include/ntp_stdlib.h b/include/ntp_stdlib.h +index fe4d78e5c..73d97084f 100644 +--- a/include/ntp_stdlib.h ++++ b/include/ntp_stdlib.h +@@ -16,10 +16,6 @@ + #include "ntp_malloc.h" + #include "ntp_syslog.h" + +-#ifdef HAVE_BSD_STRING_H +-#include +-#endif +- + #ifdef __GNUC__ + #define NTP_PRINTF(fmt, args) __attribute__((__format__(__printf__, fmt, args))) + #else +diff --git a/wscript b/wscript +index 641073f00..aa04b1d1c 100644 +--- a/wscript ++++ b/wscript +@@ -660,19 +660,6 @@ int main(int argc, char **argv) { + prerequisites=ft[1], use=ft[2], + mandatory=ft[3]) + +- # check for BSD versions outside of libc +- if not ctx.get_define("HAVE_STRLCAT"): +- ret = probe_function(ctx, function='strlcat', +- prerequisites=['bsd/string.h']) +- if ret: +- ctx.define("HAVE_STRLCAT", 1, comment="Using bsd/strlcat") +- +- if not ctx.get_define("HAVE_STRLCPY"): +- ret = probe_function(ctx, function='strlcpy', +- prerequisites=['bsd/string.h']) +- if ret: +- ctx.define("HAVE_STRLCPY", 1, comment="Using bsd/strlcpy") +- + # Nobody uses the symbol, but this seems like a good sanity check. + ctx.check_cc(header_name="stdbool.h", mandatory=True, + comment="Sanity check.") +@@ -691,7 +678,6 @@ int main(int argc, char **argv) { + optional_headers = ( + "alloca.h", + ("arpa/nameser.h", ["sys/types.h"]), +- "bsd/string.h", # bsd emulation + ("ifaddrs.h", ["sys/types.h"]), + ("linux/if_addr.h", ["sys/socket.h"]), + ("linux/rtnetlink.h", ["sys/socket.h"]), +-- +2.34.1 + diff --git a/package/ntpsec/0003-disable-PIE-support.patch b/package/ntpsec/0003-disable-PIE-support.patch new file mode 100644 index 00000000..64eb559d --- /dev/null +++ b/package/ntpsec/0003-disable-PIE-support.patch @@ -0,0 +1,26 @@ +From 712675fbd2a736df817fecd7bfb39055946ef85b Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Sun, 13 Aug 2023 13:48:03 +0200 +Subject: [PATCH] disable PIE support + +Signed-off-by: Waldemar Brodkorb +Upstream: N/A Not upstreamable +--- + wscript | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/wscript b/wscript +index 292e3a45b..105c7eac2 100644 +--- a/wscript ++++ b/wscript +@@ -299,7 +299,6 @@ def configure(ctx): + + cc_test_flags = [ + ('PIC', '-fPIC'), +- ('PIE', '-pie -fPIE'), + # this quiets most of macOS warnings on -fpie + ('unused', '-Qunused-arguments'), + # This is a useless warning on any architecture with a barrel +-- +2.39.2 + diff --git a/package/ntpsec/Config.in b/package/ntpsec/Config.in new file mode 100644 index 00000000..3b20daec --- /dev/null +++ b/package/ntpsec/Config.in @@ -0,0 +1,44 @@ +config BR2_PACKAGE_NTPSEC + bool "ntpsec" + depends on BR2_USE_MMU # python3 + depends on BR2_USE_WCHAR # python3 + depends on BR2_TOOLCHAIN_HAS_THREADS # python3 + depends on !BR2_STATIC_LIBS # python3 + select BR2_PACKAGE_LIBCAP + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_PYTHON3 + help + NTPsec project - a secure, hardened, and improved + implementation of Network Time Protocol derived + from NTP Classic, Dave Mills’s original. + + Provides things like ntpd, ntpdate, ntpq, etc... + + https://www.ntpsec.org/ + +if BR2_PACKAGE_NTPSEC + +config BR2_PACKAGE_NTPSEC_CLASSIC_MODE + bool "classic-mode" + help + Enable strict configuration and log-format compatibility + with NTP Classic. + +config BR2_PACKAGE_NTPSEC_NTS + bool "NTS support" + help + Enable Network Time Security (NTS) support. + +config BR2_PACKAGE_NTPSEC_REFCLOCK_ALL + bool "refclock-all" + select BR2_PACKAGE_PPS_TOOLS + help + Enable all refclocks (hardware, sync source and discplined + clocks) + +endif + +comment "ntpsec 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/package/ntpsec/S49ntpd b/package/ntpsec/S49ntpd new file mode 100644 index 00000000..f3db5141 --- /dev/null +++ b/package/ntpsec/S49ntpd @@ -0,0 +1,58 @@ +#!/bin/sh +# +# Starts Network Time Protocol daemon +# + +DAEMON="ntpd" +PIDFILE="/var/run/$DAEMON.pid" + +NTPD_ARGS="-g -u ntp:ntp -s /var/run/ntp" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +mkdir -p /var/run/ntp && chown ntp:ntp /var/run/ntp + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -p "$PIDFILE" -x "/usr/sbin/$DAEMON" \ + -- $NTPD_ARGS -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/ntpsec/ntpd.etc.conf b/package/ntpsec/ntpd.etc.conf new file mode 100644 index 00000000..e0f45c14 --- /dev/null +++ b/package/ntpsec/ntpd.etc.conf @@ -0,0 +1,33 @@ +# +# legacy NTP configuration +# +pool 0.pool.ntp.org iburst +pool 1.pool.ntp.org iburst +pool 2.pool.ntp.org iburst +pool 3.pool.ntp.org iburst + +# +# NTS configuration +# +# Notes: +# - uncomment the following lines to enable NTS support (but +# make sure the initial clock is up-to-date (otherwise the +# NTS certificate validation will fail with 'NTSc: certificate invalid: +# 9=>certificate is not yet valid' as on boards without RTC support) +# and/or keep at least one line from the legacy NTP lines +# - enable BR2_PACKAGE_CA_CERTIFICATES to gain access to the certificate +# files +# +# server time.cloudflare.com nts # Global, anycast +# server nts.ntp.se:4443 nts # Sweden +# server ntpmon.dcs1.biz nts # Singapore +# server ntp1.glypnod.com nts # San Francisco +# server ntp2.glypnod.com nts # London +# +# ca /usr/share/ca-certificates/mozilla + +# Allow only time queries, at a limited rate, sending KoD when in excess. +# Allow all local queries (IPv4, IPv6) +restrict default nomodify nopeer noquery limited kod +restrict 127.0.0.1 +restrict [::1] diff --git a/package/ntpsec/ntpsec.hash b/package/ntpsec/ntpsec.hash new file mode 100644 index 00000000..a3802c11 --- /dev/null +++ b/package/ntpsec/ntpsec.hash @@ -0,0 +1,12 @@ +# Locally calculated +sha256 a9ec4416688a1c1c88833f3f6acc35518e3d63409af372eec010455002b33050 ntpsec-NTPsec_1_2_3.tar.bz2 +sha256 074e6e32c86a4c0ef8b3ed25b721ca23aca83df277cd88106ef7177c354615ff LICENSES/Apache-2.0.txt +sha256 991d8a58e0b4be84a174a9bd333a8ca33807a0c1ce6d23a2e25a21f7ece482d0 LICENSES/Beerware.txt +sha256 899261d6eb6c922cf8f051225411f27b738ba0014be18c2eaf6afbf30d421bb1 LICENSES/BSD-2-Clause.txt +sha256 5fe38d8724c53ff4e69f0a3492a368b4a6719700ac16f706efeb01a45c62f2b5 LICENSES/BSD-3-Clause.txt +sha256 c80d927f03db7212ba43a869a383e249c19b40859ff0d9e2e2f968e4fdcf005f LICENSES/BSD-4-Clause.txt +sha256 9ba9550ad48438d0836ddab3da480b3b69ffa0aac7b7878b5a0039e7ab429411 LICENSES/CC-BY-4.0.txt +sha256 f2ec607f67bb0dd3053b49835b02110d5cd0f8eb6da3aac4dc0b142a6b299be9 LICENSES/ISC.txt +sha256 074415b57c6ba1780483d89e55f40dec3ded96c28aaf47d63c486683ba553e7c LICENSES/MIT.txt +sha256 62fec6cd79721af81b7c12f1a679535235fdd22800ab17653042f024187ff274 LICENSES/NTP.txt +sha256 d3b21470adadd9abd9c6d675378f8c371ac5a4ea6dbec91859e02fadca3c0856 docs/copyright.adoc diff --git a/package/ntpsec/ntpsec.mk b/package/ntpsec/ntpsec.mk new file mode 100644 index 00000000..3acf7745 --- /dev/null +++ b/package/ntpsec/ntpsec.mk @@ -0,0 +1,89 @@ +################################################################################ +# +# ntpsec +# +################################################################################ + +NTPSEC_VERSION = 1.2.3 +NTPSEC_SOURCE = ntpsec-NTPsec_$(subst .,_,$(NTPSEC_VERSION)).tar.bz2 +NTPSEC_SITE = https://gitlab.com/NTPsec/ntpsec/-/archive/NTPsec_$(subst .,_,$(NTPSEC_VERSION)) +NTPSEC_LICENSE = Apache-2.0, \ + Beerware, \ + BSD-2-Clause.txt, \ + BSD-3-Clause.txt, \ + BSD-4-Clause.txt, \ + ISC.txt, \ + MIT.txt, \ + NTP.txt, \ + CC-BY-4.0.txt (docs) +NTPSEC_LICENSE_FILES = \ + LICENSES/Apache-2.0.txt \ + LICENSES/Beerware.txt \ + LICENSES/BSD-2-Clause.txt \ + LICENSES/BSD-3-Clause.txt \ + LICENSES/BSD-4-Clause.txt \ + LICENSES/ISC.txt \ + LICENSES/MIT.txt \ + LICENSES/NTP.txt \ + LICENSES/CC-BY-4.0.txt \ + docs/copyright.adoc + +NTPSEC_CPE_ID_VENDOR = ntpsec + +NTPSEC_DEPENDENCIES = \ + host-bison \ + host-pkgconf \ + python3 \ + libcap \ + openssl + +# CC="$(HOSTCC)" is strange but needed to build some host tools, the +# cross-compiler will properly be used to build target code thanks to +# --cross-compiler +NTPSEC_CONF_OPTS = \ + CC="$(HOSTCC)" \ + CFLAGS="$(HOST_CFLAGS)" \ + PYTHON_CONFIG="$(STAGING_DIR)/usr/bin/python3-config" \ + --libdir=/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/ntp \ + --cross-compiler="$(TARGET_CC)" \ + --cross-cflags="$(TARGET_CFLAGS) -std=gnu99" \ + --cross-ldflags="$(TARGET_LDFLAGS)" \ + --notests \ + --enable-early-droproot \ + --disable-mdns-registration \ + --enable-pylib=ffi \ + --nopyc \ + --nopyo \ + --nopycache \ + --disable-doc \ + --disable-manpage + +ifeq ($(BR2_PACKAGE_NTPSEC_CLASSIC_MODE),y) +NTPSEC_CONF_OPTS += --enable-classic-mode +endif + +# no '--enable-nts' option available +ifeq ($(BR2_PACKAGE_NTPSEC_NTS),) +NTPSEC_CONF_OPTS += --disable-nts +endif + +# refclocks are disabled by default, can only be enabled +ifeq ($(BR2_PACKAGE_NTPSEC_REFCLOCK_ALL),y) +NTPSEC_DEPENDENCIES += pps-tools +NTPSEC_CONF_OPTS += --refclock=all +endif + +define NTPSEC_INSTALL_NTPSEC_CONF + $(INSTALL) -m 644 package/ntpsec/ntpd.etc.conf $(TARGET_DIR)/etc/ntp.conf +endef +NTPSEC_POST_INSTALL_TARGET_HOOKS += NTPSEC_INSTALL_NTPSEC_CONF + +define NTPSEC_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/ntpsec/S49ntpd $(TARGET_DIR)/etc/init.d/S49ntpd +endef + +define NTPSEC_USERS + ntp -1 ntp -1 * - - - ntpd user +endef + +$(eval $(waf-package)) diff --git a/package/numactl/0001-link-with-latomic-if-needed-again.patch b/package/numactl/0001-link-with-latomic-if-needed-again.patch new file mode 100644 index 00000000..54d55656 --- /dev/null +++ b/package/numactl/0001-link-with-latomic-if-needed-again.patch @@ -0,0 +1,41 @@ +From 692abb6d751a41c7f0206771ecd454933750256e Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 2 Nov 2022 13:28:02 +0100 +Subject: [PATCH] link with -latomic if needed (again ...) + +numactl unconditionally uses __atomic_fetch_and but some architectures +(e.g. sparc) needs to link with -latomic to be able to use it. So check +if -latomic is needed and update numa.pc accordingly. + +This linking was made by e0de0d9e981ddb53bdeb4a4b9dc43046c9ff4ff9 but +wrongly reverted by 10c277c20768be9a563f75265bcd7e73954763ad resulting +in the following build failure on sparc or microblaze: + +/nvmedata/autobuild/instance-7/output-1/per-package/numactl/host/bin/../lib/gcc/sparc-buildroot-linux-uclibc/10.4.0/../../../../sparc-buildroot-linux-uclibc/bin/ld: ./.libs/libnuma.a(libnuma.o): in function `numa_police_memory': +libnuma.c:(.text+0xe28): undefined reference to `__atomic_fetch_and_1' + +Fixes: + - http://autobuild.buildroot.org/results/54b7567d804d9abff56f47cd26bae774c1e38669 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/numactl/numactl/pull/144] +--- + configure.ac | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 8510fc5..ebf9917 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -27,6 +27,8 @@ AM_CONDITIONAL([RISCV64], [test x"${target_cpu}" = x"riscv64"]) + + AC_CONFIG_FILES([Makefile]) + ++AC_SEARCH_LIBS([__atomic_fetch_and_1], [atomic]) ++ + # GCC tries to be "helpful" and only issue a warning for unrecognized + # attributes. So we compile the test with Werror, so that if the + # attribute is not recognized the compilation fails +-- +2.35.1 + diff --git a/package/numactl/Config.in b/package/numactl/Config.in new file mode 100644 index 00000000..325a05d6 --- /dev/null +++ b/package/numactl/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_NUMACTL + bool "numactl" + depends on BR2_USE_MMU # madvise() + depends on BR2_TOOLCHAIN_HAS_ATOMIC + help + numactl allows you to run your application on specific cpus + and memory nodes. It does this by supplying a NUMA memory + policy to the operating system before running your program. + + https://github.com/numactl/numactl diff --git a/package/numactl/numactl.hash b/package/numactl/numactl.hash new file mode 100644 index 00000000..757001b7 --- /dev/null +++ b/package/numactl/numactl.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 1b242f893af977a1d31af6ce9d6b8dafdd2d8ec3dc9207f7c2dc0d3446e7c7c8 numactl-2.0.16.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 LICENSE.GPL2 +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSE.LGPL2.1 diff --git a/package/numactl/numactl.mk b/package/numactl/numactl.mk new file mode 100644 index 00000000..157f953c --- /dev/null +++ b/package/numactl/numactl.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# numactl +# +################################################################################ + +NUMACTL_VERSION = 2.0.16 +NUMACTL_SITE = \ + https://github.com/numactl/numactl/releases/download/v$(NUMACTL_VERSION) +NUMACTL_LICENSE = LGPL-2.1 (libnuma), GPL-2.0 (programs) +NUMACTL_LICENSE_FILES = LICENSE.GPL2 LICENSE.LGPL2.1 +NUMACTL_INSTALL_STAGING = YES +# We're patching configure.ac +NUMACTL_AUTORECONF = YES +NUMACTL_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -fPIC" + +$(eval $(autotools-package)) diff --git a/package/nushell/0001-uucore-add-support-for-sparc64.patch b/package/nushell/0001-uucore-add-support-for-sparc64.patch new file mode 100644 index 00000000..ad7e70a5 --- /dev/null +++ b/package/nushell/0001-uucore-add-support-for-sparc64.patch @@ -0,0 +1,59 @@ +From 9f4330f94cc471d880df7d9089ee1105b27fd321 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 6 Jan 2024 10:26:54 +0100 +Subject: [PATCH] uucore: add support for sparc64 + +Add support for sparc64 in uucore to avoid the following build failure +with nushell: + +error[E0308]: mismatched types + --> /home/autobuild/autobuild/instance-7/output-1/build/nushell-0.85.0/VENDOR/uucore/src/lib/features/fs.rs:121:16 + | +111 | pub fn number_of_links(&self) -> u64 { + | --- expected `u64` because of return type +... +121 | return self.0.st_nlink; + | ^^^^^^^^^^^^^^^ expected `u64`, found `u32` + | +help: you can convert a `u32` to a `u64` + | +121 | return self.0.st_nlink.into(); + | +++++++ + +For more information about this error, try `rustc --explain E0308`. +error: could not compile `uucore` (lib) due to previous error + +Fixes: + - http://autobuild.buildroot.org/results/f9f0287a8e39c65895014ca513ed25071f020add + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/uutils/coreutils/commit/d158f1a396d19cc2aed68131b80ec3b7325d108e +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + src/uucore/src/lib/features/fs.rs | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/VENDOR/uucore/src/lib/features/fs.rs b/VENDOR/uucore/src/lib/features/fs.rs +index 20cc9e13d..3b9170bc3 100644 +--- a/VENDOR/uucore/src/lib/features/fs.rs ++++ b/VENDOR/uucore/src/lib/features/fs.rs +@@ -116,6 +116,7 @@ + not(target_os = "freebsd"), + not(target_arch = "aarch64"), + not(target_arch = "riscv64"), ++ not(target_arch = "sparc64"), + target_pointer_width = "64" + ))] + return self.0.st_nlink; +@@ -127,6 +128,7 @@ + target_os = "freebsd", + target_arch = "aarch64", + target_arch = "riscv64", ++ target_arch = "sparc64", + not(target_pointer_width = "64") + ) + ))] +-- +2.43.0 + diff --git a/package/nushell/Config.in b/package/nushell/Config.in new file mode 100644 index 00000000..edb01d2f --- /dev/null +++ b/package/nushell/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_NUSHELL + bool "nushell" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_RUSTC + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_HOST_PKGCONF + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_NCURSES_TARGET_PROGS + help + A new type of shell. + + https://github.com/nushell/nushell diff --git a/package/nushell/nushell.hash b/package/nushell/nushell.hash new file mode 100644 index 00000000..c125a6c6 --- /dev/null +++ b/package/nushell/nushell.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 9175b7e25a93a35c4f2690a63e7c36ac2dc31a9d762f59de01aac8ac1075b02f nushell-0.85.0-cargo2.tar.gz +sha256 2dc1f03f729c21902d869b4d8f8dc528fc730f4c6ad83fc128672bda0ad69196 LICENSE diff --git a/package/nushell/nushell.mk b/package/nushell/nushell.mk new file mode 100644 index 00000000..7b538da4 --- /dev/null +++ b/package/nushell/nushell.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# nushell +# +################################################################################ + +NUSHELL_VERSION = 0.85.0 +NUSHELL_SITE = $(call github,nushell,nushell,$(NUSHELL_VERSION)) +NUSHELL_LICENSE = MIT +NUSHELL_LICENSE_FILES = LICENSE +NUSHELL_DEPENDENCIES = host-pkgconf openssl ncurses + +# 0001-uucore-add-support-for-sparc64.patch +define NUSHELL_PATCH_CHECKSUM_FILE + $(SED) 's/b0390ae7bca8b31f0db289a5d064bba36d45e4d137674e9df2c6ab6256f926f4/f8ce2ad571e1482f6833cb147eafeb724776e7887ebabf339a5f3e79860583cb/' \ + $(@D)/VENDOR/uucore/.cargo-checksum.json +endef +NUSHELL_POST_PATCH_HOOKS += NUSHELL_PATCH_CHECKSUM_FILE + +# Add /usr/bin/nu to /etc/shells as in package/bash/bash.mk +define NUSHELL_ADD_NU_TO_SHELLS + grep -qsE '^/usr/bin/nu$$' $(TARGET_DIR)/etc/shells \ + || echo "/usr/bin/nu" >> $(TARGET_DIR)/etc/shells +endef +NUSHELL_TARGET_FINALIZE_HOOKS += NUSHELL_ADD_NU_TO_SHELLS + +$(eval $(cargo-package)) diff --git a/package/nut/Config.in b/package/nut/Config.in new file mode 100644 index 00000000..0ecd33d5 --- /dev/null +++ b/package/nut/Config.in @@ -0,0 +1,28 @@ +comment "nut needs a toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_NUT + bool "nut" + depends on BR2_USE_MMU # fork() + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Network UPS tools + + The primary goal of the Network UPS Tools (NUT) project is + to provide support for Power Devices, such as + Uninterruptible Power Supplies, Power Distribution Units and + Solar Controllers. + + http://www.networkupstools.org/ + +if BR2_PACKAGE_NUT + +config BR2_PACKAGE_NUT_DRIVERS + string "drivers" + help + Select the individual drivers to enable, in a + comma-separated list. Leave empty for all. + +endif # BR2_PACKAGE_NUT diff --git a/package/nut/nut.hash b/package/nut/nut.hash new file mode 100644 index 00000000..4c962ee9 --- /dev/null +++ b/package/nut/nut.hash @@ -0,0 +1,7 @@ +# From https://github.com/networkupstools/nut/releases/download/v2.8.2/nut-2.8.2.tar.gz.sha256 +sha256 e4b4b0cbe7dd39ba9097be7f7d787bb2fffbe35df64dff53b5fe393d659c597d nut-2.8.2.tar.gz + +# Locally computed +sha256 8a3de48b86daffcbe822dd94e514c8a77fe70f77c9005ffd9dcf1709dbdc80c7 COPYING +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 LICENSE-GPL2 +sha256 fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7 LICENSE-GPL3 diff --git a/package/nut/nut.mk b/package/nut/nut.mk new file mode 100644 index 00000000..93522d01 --- /dev/null +++ b/package/nut/nut.mk @@ -0,0 +1,122 @@ +################################################################################ +# +# nut +# +################################################################################ + +NUT_VERSION = 2.8.2 +NUT_SITE = https://github.com/networkupstools/nut/releases/download/v$(NUT_VERSION) +NUT_LICENSE = GPL-2.0+, GPL-3.0+ (python scripts), GPL/Artistic (perl client) +NUT_LICENSE_FILES = COPYING LICENSE-GPL2 LICENSE-GPL3 +NUT_SELINUX_MODULES = apache nut +NUT_INSTALL_STAGING = YES +NUT_DEPENDENCIES = host-pkgconf + +# Put the PID files in a read-write place (/var/run is a tmpfs) +# since the default location (/var/state/ups) maybe readonly. +NUT_CONF_OPTS = \ + --with-altpidpath=/var/run/upsd \ + --with-dev \ + --without-doc \ + --without-python \ + --without-python2 \ + --with-user=nut \ + --with-group=nut + +NUT_CONF_ENV = \ + ax_cv_check_cflags__Werror__Wno_unknown_warning_option=no \ + ax_cv_check_cxxflags__Werror__Wno_unknown_warning_option=no \ + ac_cv_func_strcasecmp=yes \ + ac_cv_func_strdup=yes \ + ac_cv_func_strncasecmp=yes \ + ax_cv__printf_string_null=yes + +define NUT_USERS + nut -1 nut -1 * - - - NUT user +endef + +ifeq ($(call qstrip,$(BR2_PACKAGE_NUT_DRIVERS)),) +NUT_CONF_OPTS += --with-drivers=auto +else +NUT_CONF_OPTS += --with-drivers=$(BR2_PACKAGE_NUT_DRIVERS) +endif + +ifeq ($(BR2_PACKAGE_AVAHI)$(BR2_PACKAGE_DBUS),yy) +NUT_DEPENDENCIES += avahi dbus +NUT_CONF_OPTS += --with-avahi +else +NUT_CONF_OPTS += --without-avahi +endif + +ifeq ($(BR2_PACKAGE_FREEIPMI),y) +NUT_CONF_OPTS += --with-freeipmi +NUT_DEPENDENCIES += freeipmi +else +NUT_CONF_OPTS += --without-freeipmi +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 +else +NUT_CONF_OPTS += --without-cgi +endif + +# nut-scanner needs libltdl, which is a wrapper around dlopen/dlsym, +# so is not available for static-only builds. +# There is no flag to directly enable/disable nut-scanner, it's done +# via the --enable/disable-libltdl flag. +ifeq ($(BR2_STATIC_LIBS):$(BR2_PACKAGE_LIBTOOL),:y) +NUT_DEPENDENCIES += libtool +NUT_CONF_OPTS += --with-libltdl +else +NUT_CONF_OPTS += --without-libltdl +endif + +ifeq ($(BR2_PACKAGE_LIBUSB),y) +NUT_DEPENDENCIES += libusb +NUT_CONF_OPTS += --with-usb +else ifeq ($(BR2_PACKAGE_LIBUSB_COMPAT),y) +NUT_DEPENDENCIES += libusb-compat +NUT_CONF_OPTS += --with-usb +else +NUT_CONF_OPTS += --without-usb +endif + +ifeq ($(BR2_PACKAGE_NEON_EXPAT)$(BR2_PACKAGE_NEON_LIBXML2),y) +NUT_DEPENDENCIES += neon +NUT_CONF_OPTS += --with-neon +else +NUT_CONF_OPTS += --without-neon +endif + +ifeq ($(BR2_PACKAGE_NETSNMP),y) +NUT_DEPENDENCIES += netsnmp +NUT_CONF_OPTS += \ + --with-snmp \ + --with-net-snmp-config=$(STAGING_DIR)/usr/bin/net-snmp-config +else +NUT_CONF_OPTS += --without-snmp +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +NUT_DEPENDENCIES += openssl +NUT_CONF_OPTS += --with-ssl +else +NUT_CONF_OPTS += --without-ssl +endif + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +NUT_DEPENDENCIES += python3 +NUT_CONF_ENV += nut_cv_PYTHON3_SITE_PACKAGES=/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages +NUT_CONF_OPTS += \ + --with-pynut \ + --with-python3 +else +NUT_CONF_OPTS += \ + --without-pynut \ + --without-python3 +endif + +$(eval $(autotools-package)) diff --git a/package/nuttcp/0001-susv3-legacy.patch b/package/nuttcp/0001-susv3-legacy.patch new file mode 100644 index 00000000..9a215f8a --- /dev/null +++ b/package/nuttcp/0001-susv3-legacy.patch @@ -0,0 +1,264 @@ +[PATCH] Replace susv3 legacy function with modern equivalents + +Signed-off-by: Peter Korsgaard +--- + nuttcp-6.1.2.c | 90 ++++++++++++++++++++++++++++----------------------------- + 1 file changed, 45 insertions(+), 45 deletions(-) + +Index: nuttcp-6.1.2/nuttcp-6.1.2.c +=================================================================== +--- nuttcp-6.1.2.orig/nuttcp-6.1.2.c ++++ nuttcp-6.1.2/nuttcp-6.1.2.c +@@ -1925,11 +1925,11 @@ + if (udp && !haverateopt) + rate = DEFAULT_UDP_RATE; + +- bzero((char *)&frominet, sizeof(frominet)); +- bzero((char *)&clientaddr, sizeof(clientaddr)); ++ memset((char *)&frominet, 0, sizeof(frominet)); ++ memset((char *)&clientaddr, 0, sizeof(clientaddr)); + + #ifdef AF_INET6 +- bzero((char *)&clientaddr6, sizeof(clientaddr6)); ++ memset((char *)&clientaddr6, 0, sizeof(clientaddr6)); + clientscope6 = 0; + #endif + +@@ -1985,7 +1985,7 @@ + } + + while (stream_idx <= nstream) { +- bzero(&hints, sizeof(hints)); ++ memset(&hints, 0, sizeof(hints)); + res[stream_idx] = NULL; + if (explicitaf) hints.ai_family = af; + if ((cp2 = strchr(cp1, '/'))) { +@@ -3013,12 +3013,12 @@ + if ((stream_idx > 0) && skip_data) + break; + +- bzero((char *)&sinme[stream_idx], sizeof(sinme[stream_idx])); +- bzero((char *)&sinhim[stream_idx], sizeof(sinhim[stream_idx])); ++ memset((char *)&sinme[stream_idx], 0, sizeof(sinme[stream_idx])); ++ memset((char *)&sinhim[stream_idx], 0, sizeof(sinhim[stream_idx])); + + #ifdef AF_INET6 +- bzero((char *)&sinme6[stream_idx], sizeof(sinme6[stream_idx])); +- bzero((char *)&sinhim6[stream_idx], sizeof(sinhim6[stream_idx])); ++ memset((char *)&sinme6[stream_idx], 0, sizeof(sinme6[stream_idx])); ++ memset((char *)&sinhim6[stream_idx], 0, sizeof(sinhim6[stream_idx])); + #endif + + if (((trans && !reverse) && (stream_idx > 0)) || +@@ -3028,15 +3028,15 @@ + if (client) { + if (af == AF_INET) { + sinhim[stream_idx].sin_family = af; +- bcopy((char *)&(((struct sockaddr_in *)res[stream_idx]->ai_addr)->sin_addr), +- (char *)&sinhim[stream_idx].sin_addr.s_addr, ++ memcpy((char *)&sinhim[stream_idx].sin_addr.s_addr, ++ (char *)&(((struct sockaddr_in *)res[stream_idx]->ai_addr)->sin_addr), + sizeof(sinhim[stream_idx].sin_addr.s_addr)); + } + #ifdef AF_INET6 + else if (af == AF_INET6) { + sinhim6[stream_idx].sin6_family = af; +- bcopy((char *)&(((struct sockaddr_in6 *)res[stream_idx]->ai_addr)->sin6_addr), +- (char *)&sinhim6[stream_idx].sin6_addr.s6_addr, ++ memcpy((char *)&sinhim6[stream_idx].sin6_addr.s6_addr, ++ (char *)&(((struct sockaddr_in6 *)res[stream_idx]->ai_addr)->sin6_addr), + sizeof(sinhim6[stream_idx].sin6_addr.s6_addr)); + sinhim6[stream_idx].sin6_scope_id = ((struct sockaddr_in6 *)res[stream_idx]->ai_addr)->sin6_scope_id; + } +@@ -3113,8 +3113,8 @@ + * to the multicast group + */ + if (af == AF_INET) { +- bcopy((char *)&sinhim[1].sin_addr.s_addr, +- (char *)&save_sinhim.sin_addr.s_addr, ++ memcpy((char *)&save_sinhim.sin_addr.s_addr, ++ (char *)&sinhim[1].sin_addr.s_addr, + sizeof(struct in_addr)); + if (!client && (irvers >= 50505)) { + struct sockaddr_in peer; +@@ -3124,8 +3124,8 @@ + &peerlen) < 0) { + err("getpeername"); + } +- bcopy((char *)&peer.sin_addr.s_addr, +- (char *)&sinhim[1].sin_addr.s_addr, ++ memcpy((char *)&sinhim[1].sin_addr.s_addr, ++ (char *)&peer.sin_addr.s_addr, + sizeof(struct in_addr)); + } + else { +@@ -3136,8 +3136,8 @@ + &melen) < 0) { + err("getsockname"); + } +- bcopy((char *)&me.sin_addr.s_addr, +- (char *)&sinhim[1].sin_addr.s_addr, ++ memcpy((char *)&sinhim[1].sin_addr.s_addr, ++ (char *)&me.sin_addr.s_addr, + sizeof(struct in_addr)); + } + sinhim[1].sin_addr.s_addr &= +@@ -4197,13 +4197,13 @@ + &melen) < 0) { + err("getsockname"); + } +- bcopy((char *)&me.sin_addr.s_addr, +- (char *)&mc_group.imr_multiaddr.s_addr, ++ memcpy((char *)&mc_group.imr_multiaddr.s_addr, ++ (char *)&me.sin_addr.s_addr, + sizeof(struct in_addr)); + } + else { +- bcopy((char *)&peer.sin_addr.s_addr, +- (char *)&mc_group.imr_multiaddr.s_addr, ++ memcpy((char *)&mc_group.imr_multiaddr.s_addr, ++ (char *)&peer.sin_addr.s_addr, + sizeof(struct in_addr)); + } + mc_group.imr_multiaddr.s_addr &= htonl(0xFFFFFF); +@@ -4330,12 +4330,12 @@ + if(udp) { + strcpy(buf, "BOD0"); + if (multicast) { +- bcopy((char *)&sinhim[1].sin_addr.s_addr, +- (char *)&save_mc.sin_addr.s_addr, +- sizeof(struct in_addr)); +- bcopy((char *)&save_sinhim.sin_addr.s_addr, ++ memcpy((char *)&save_mc.sin_addr.s_addr, + (char *)&sinhim[1].sin_addr.s_addr, + sizeof(struct in_addr)); ++ memcpy((char *)&sinhim[1].sin_addr.s_addr, ++ (char *)&save_sinhim.sin_addr.s_addr, ++ sizeof(struct in_addr)); + } + (void)Nwrite( fd[stream_idx + 1], buf, 4 ); /* rcvr start */ + if (two_bod) { +@@ -4344,8 +4344,8 @@ + (void)Nwrite( fd[stream_idx + 1], buf, 4 ); /* rcvr start */ + } + if (multicast) { +- bcopy((char *)&save_mc.sin_addr.s_addr, +- (char *)&sinhim[1].sin_addr.s_addr, ++ memcpy((char *)&sinhim[1].sin_addr.s_addr, ++ (char *)&save_mc.sin_addr.s_addr, + sizeof(struct in_addr)); + } + if (timeout) +@@ -4361,7 +4361,7 @@ + fflush(stdout); + } + if (udplossinfo) +- bcopy(&nbytes, buf + 24, 8); ++ memcpy(buf + 24, &nbytes, 8); + if (!udp && interval && !(format & NORETRANS) && + ((retransinfo == 1) || + ((retransinfo >= 2) && +@@ -4372,13 +4372,13 @@ + tmp = 0x5254524Eu; /* "RTRN" */ + else + tmp = 0x48525452u; /* "HRTR" */ +- bcopy(&nretrans, buf + 24, 4); +- bcopy(&tmp, buf + 28, 4); ++ memcpy(buf + 24, &nretrans, 4); ++ memcpy(buf + 28, &tmp, 4); + } + else { + send_retrans = 0; + if (!udp) +- bzero(buf + 24, 8); ++ memset(buf + 24, 0, 8); + } + if (nbuf == INT_MAX) + nbuf = ULLONG_MAX; +@@ -4423,12 +4423,12 @@ + nbytes += buflen; + cnt = 0; + if (udplossinfo) +- bcopy(&nbytes, buf + 24, 8); ++ memcpy(buf + 24, &nbytes, 8); + if (send_retrans) { + nretrans = get_retrans( + fd[stream_idx + 1]); + nretrans -= iretrans; +- bcopy(&nretrans, buf + 24, 4); ++ memcpy(buf + 24, &nretrans, 4); + } + stream_idx++; + stream_idx = stream_idx % nstream; +@@ -4523,8 +4523,8 @@ + nbytes += cnt; + if(udp) { + if (multicast) +- bcopy((char *)&save_sinhim.sin_addr.s_addr, +- (char *)&sinhim[1].sin_addr.s_addr, ++ memcpy((char *)&sinhim[1].sin_addr.s_addr, ++ (char *)&save_sinhim.sin_addr.s_addr, + sizeof(struct in_addr)); + strcpy(buf, "EOD0"); + (void)Nwrite( fd[stream_idx + 1], buf, 4 ); /* rcvr end */ +@@ -4532,7 +4532,7 @@ + } else { + first_read = 1; + need_swap = 0; +- bzero(buf + 24, 8); ++ memset(buf + 24, 0, 8); + if (udp) { + ntbytesc = 0; + got_eod0 = 0; +@@ -4584,7 +4584,7 @@ + * goes off right here */ + if (udplossinfo) { + if (first_read) { +- bcopy(buf + 24, &ntbytesc, ++ memcpy(&ntbytesc, buf + 24, + 8); + first_read = 0; + if (ntbytesc > 0x100000000ull) +@@ -4598,7 +4598,7 @@ + } + } + if (!need_swap) +- bcopy(buf + 24, &ntbytesc, ++ memcpy(&ntbytesc, buf + 24, + 8); + else { + cp1 = (char *)&ntbytesc; +@@ -4627,8 +4627,8 @@ + uint32_t tmp; + + first_read = 0; +- bcopy(buf + 24, &nretrans, 4); +- bcopy(buf + 28, &tmp, 4); ++ memcpy(&nretrans, buf + 24, 4); ++ memcpy(&tmp, buf + 28, 4); + if (tmp == 0x5254524Eu) { + /* "RTRN" */ + retransinfo = 1; +@@ -4661,7 +4661,7 @@ + } + if (read_retrans) { + if (!need_swap) +- bcopy(buf + 24, &nretrans, ++ memcpy(&nretrans, buf + 24, + 4); + else { + cp1 = (char *)&nretrans; +@@ -5327,10 +5327,10 @@ + itimer.it_interval.tv_usec = 0; + setitimer(ITIMER_REAL, &itimer, 0); + signal(SIGALRM, SIG_DFL); +- bzero((char *)&frominet, sizeof(frominet)); +- bzero((char *)&clientaddr, sizeof(clientaddr)); ++ memset((char *)&frominet, 0, sizeof(frominet)); ++ memset((char *)&clientaddr, 0, sizeof(clientaddr)); + #ifdef AF_INET6 +- bzero((char *)&clientaddr6, sizeof(clientaddr)); ++ memset((char *)&clientaddr6, 0, sizeof(clientaddr)); + clientscope6 = 0; + #endif + cput = 0.000001; diff --git a/package/nuttcp/Config.in b/package/nuttcp/Config.in new file mode 100644 index 00000000..0b5f0811 --- /dev/null +++ b/package/nuttcp/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_NUTTCP + bool "nuttcp" + depends on BR2_USE_MMU # fork() + help + nuttcp is a TCP/UDP network testing tool, much like iperf + + http://nuttcp.net diff --git a/package/nuttcp/nuttcp.hash b/package/nuttcp/nuttcp.hash new file mode 100644 index 00000000..c7d0148e --- /dev/null +++ b/package/nuttcp/nuttcp.hash @@ -0,0 +1,4 @@ +# From http://lists.freebsd.org/pipermail/freebsd-ports-bugs/2009-August/170685.html +sha256 054e96d9d68fe917df6f25fab15c7755bdd480f6420d7d48d9194a1a52378169 nuttcp-6.1.2.tar.bz2 +# Locally computed +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 LICENSE diff --git a/package/nuttcp/nuttcp.mk b/package/nuttcp/nuttcp.mk new file mode 100644 index 00000000..2636f950 --- /dev/null +++ b/package/nuttcp/nuttcp.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# nuttcp +# +################################################################################ + +NUTTCP_VERSION = 6.1.2 +NUTTCP_SITE = http://nuttcp.net/nuttcp +NUTTCP_SOURCE = nuttcp-$(NUTTCP_VERSION).tar.bz2 +NUTTCP_LICENSE = GPL-2.0 +NUTTCP_LICENSE_FILES = LICENSE + +define NUTTCP_BUILD_CMDS + $(MAKE1) CC="$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS)" \ + -C $(@D) all +endef + +define NUTTCP_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 $(@D)/nuttcp-$(NUTTCP_VERSION) \ + $(TARGET_DIR)/usr/bin/nuttcp +endef + +$(eval $(generic-package)) diff --git a/package/nvidia-driver/0001-use-LDFLAGS.patch b/package/nvidia-driver/0001-use-LDFLAGS.patch new file mode 100644 index 00000000..9ce237f9 --- /dev/null +++ b/package/nvidia-driver/0001-use-LDFLAGS.patch @@ -0,0 +1,50 @@ +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" +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi + +--- +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 +@@ -93,7 +93,7 @@ + always-y += $(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 +@@ -75,7 +75,7 @@ + always-y += $(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/package/nvidia-driver/Config.in b/package/nvidia-driver/Config.in new file mode 100644 index 00000000..e4a9dde0 --- /dev/null +++ b/package/nvidia-driver/Config.in @@ -0,0 +1,92 @@ +comment "nvidia-driver needs a glibc toolchain" + depends on BR2_i386 || BR2_x86_64 + depends on !BR2_TOOLCHAIN_USES_GLIBC + +config BR2_PACKAGE_NVIDIA_DRIVER + bool "nvidia-driver" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_TOOLCHAIN_USES_GLIBC + help + The binary-only driver blob for NVidia cards. + This is the userland part only. + + http://www.nvidia.com/ + +if BR2_PACKAGE_NVIDIA_DRIVER + +comment "nvidia-driver X.org drivers needs a modular Xorg server" + depends on !BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR + +config BR2_PACKAGE_NVIDIA_DRIVER_XORG + bool "X.org drivers" + 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_HAS_LIBGL + select BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_HAS_LIBGLES + +if BR2_PACKAGE_NVIDIA_DRIVER_XORG + +config BR2_PACKAGE_PROVIDES_LIBGL + default "nvidia-driver" + +config BR2_PACKAGE_PROVIDES_LIBEGL + default "nvidia-driver" + +config BR2_PACKAGE_PROVIDES_LIBGLES + default "nvidia-driver" + +config BR2_PACKAGE_NVIDIA_DRIVER_PRIVATE_LIBS + bool "Install private libraries" + help + Two libraries require special agreement with NVidia to + develop code linking to those libraries: libnvidia-ifr.so + and libnvidia-fbc.so (to grab and encode an OpenGL buffer or + an X framebuffer.) + + Say 'y' here if you plan on running a program that uses + those private libraries. + +endif # BR2_PACKAGE_NVIDIA_DRIVER_XORG + +config BR2_PACKAGE_NVIDIA_DRIVER_CUDA + bool "CUDA support" + +if BR2_PACKAGE_NVIDIA_DRIVER_CUDA + +config BR2_PACKAGE_NVIDIA_DRIVER_OPENCL + bool "OpenCL support" + select BR2_PACKAGE_MESA3D_HEADERS + select BR2_PACKAGE_HAS_LIBOPENCL + +config BR2_PACKAGE_PROVIDES_LIBOPENCL + default "nvidia-driver" if BR2_PACKAGE_NVIDIA_DRIVER_OPENCL + +config BR2_PACKAGE_NVIDIA_DRIVER_CUDA_PROGS + bool "CUDA MPS server and control" + help + Say 'y' here if you need to run more than one program + doing CUDA at the same time. The MPS server will be + launched automatically when needed. + +endif # BR2_PACKAGE_NVIDIA_DRIVER_CUDA + +comment "nvidia kernel module needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_NVIDIA_DRIVER_MODULE + bool "nvidia kernel module" + depends on BR2_LINUX_KERNEL + select BR2_LINUX_NEEDS_MODULES # not using kernel-module infra + help + Build the nvidia.ko kernel module. + + If CUDA support (above) is set, and the target is x86_64, then + this will also build the nvidia-uvm.ko kernel module, which + provides Unified Memory access to the GPU and CPU memories for + CUDA programs. + +endif # BR2_PACKAGE_NVIDIA_DRIVER diff --git a/package/nvidia-driver/egl.pc b/package/nvidia-driver/egl.pc new file mode 100644 index 00000000..a5aeace6 --- /dev/null +++ b/package/nvidia-driver/egl.pc @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: egl +Description: Nvidia OpenGL library +Version: 1 +Cflags: -I${includedir} +Libs: -L${libdir} -lEGL diff --git a/package/nvidia-driver/gl.pc b/package/nvidia-driver/gl.pc new file mode 100644 index 00000000..d01f5d69 --- /dev/null +++ b/package/nvidia-driver/gl.pc @@ -0,0 +1,11 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: gl +Description: Nvidia OpenGL library +Version: 10.4.2 +Libs: -L${libdir} -lGL -lm -lXext -lX11 -ldl +Cflags: -I${includedir} -DEGL_NO_X11 +glx_tls: no diff --git a/package/nvidia-driver/nvidia-driver.hash b/package/nvidia-driver/nvidia-driver.hash new file mode 100644 index 00000000..620112e6 --- /dev/null +++ b/package/nvidia-driver/nvidia-driver.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 94e399b459659c12b1344e8c8f4f5eee1ed5915ff459fc8bb831c9e1d44677db NVIDIA-Linux-x86-390.151.run +sha256 6e4fd2258465f5d5527fe80abd46de925a30348b4a84658498a6d75caf42c47c NVIDIA-Linux-x86_64-390.151-no-compat32.run +sha256 bd28b0c5aeeb00eb11d3ec6f6f3449d4b3a40100914258332734a53527997526 LICENSE diff --git a/package/nvidia-driver/nvidia-driver.mk b/package/nvidia-driver/nvidia-driver.mk new file mode 100644 index 00000000..f1217b00 --- /dev/null +++ b/package/nvidia-driver/nvidia-driver.mk @@ -0,0 +1,212 @@ +################################################################################ +# +# nvidia-driver +# +################################################################################ + +NVIDIA_DRIVER_VERSION = 390.151 +NVIDIA_DRIVER_SUFFIX = $(if $(BR2_x86_64),_64) +NVIDIA_DRIVER_SITE = http://download.nvidia.com/XFree86/Linux-x86$(NVIDIA_DRIVER_SUFFIX)/$(NVIDIA_DRIVER_VERSION) +NVIDIA_DRIVER_SOURCE = NVIDIA-Linux-x86$(NVIDIA_DRIVER_SUFFIX)-$(NVIDIA_DRIVER_VERSION)$(if $(BR2_x86_64),-no-compat32).run +NVIDIA_DRIVER_LICENSE = NVIDIA Software License +NVIDIA_DRIVER_LICENSE_FILES = LICENSE +NVIDIA_DRIVER_REDISTRIBUTE = NO +NVIDIA_DRIVER_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_XORG),y) + +# Since nvidia-driver are binary blobs, the below dependencies are not +# strictly speaking build dependencies of nvidia-driver. However, they +# 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_PROVIDES += libgl libegl libgles + +# 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 useful 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.1.0 \ + libGLdispatch.so.0 \ + libEGL_nvidia.so.$(NVIDIA_DRIVER_VERSION) + +NVIDIA_DRIVER_LIBS_GLES = \ + libGLESv1_CM.so.1.2.0 \ + libGLESv2.so.2.1.0 \ + 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.1.0.2 \ + 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):vdpau/ \ + libnvidia-ml.so.$(NVIDIA_DRIVER_VERSION) + +NVIDIA_DRIVER_LIBS += \ + $(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 + $(INSTALL) -D -m 0644 $(@D)/libGL.la $(STAGING_DIR)/usr/lib/libGL.la + $(SED) 's:__GENERATED_BY__:Buildroot:' $(STAGING_DIR)/usr/lib/libGL.la + $(SED) 's:__LIBGL_PATH__:/usr/lib:' $(STAGING_DIR)/usr/lib/libGL.la + $(SED) 's:-L[^[:space:]]\+::' $(STAGING_DIR)/usr/lib/libGL.la + $(INSTALL) -D -m 0644 package/nvidia-driver/gl.pc $(STAGING_DIR)/usr/lib/pkgconfig/gl.pc + $(INSTALL) -D -m 0644 package/nvidia-driver/egl.pc $(STAGING_DIR)/usr/lib/pkgconfig/egl.pc +endef + +# Those libraries are 'private' libraries requiring an agreement with +# NVidia to develop code for those libs. There seems to be no restriction +# on using those libraries (e.g. if the user has such an agreement, or +# wants to run a third-party program developed under such an agreement). +ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_PRIVATE_LIBS),y) +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_LIBS += \ + nvidia_drv.so:xorg/modules/drivers/ \ + libglx.so.$(NVIDIA_DRIVER_VERSION):xorg/modules/extensions/ + +# libglx needs a symlink according to the driver README. It has no SONAME +define NVIDIA_DRIVER_SYMLINK_LIBGLX + ln -sf libglx.so.$(NVIDIA_DRIVER_VERSION) \ + $(TARGET_DIR)/usr/lib/xorg/modules/extensions/libglx.so +endef + +endif # X drivers + +ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_CUDA),y) +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 += \ + libOpenCL.so.1.0.0 \ + libnvidia-opencl.so.$(NVIDIA_DRIVER_VERSION) +NVIDIA_DRIVER_DEPENDENCIES += mesa3d-headers +NVIDIA_DRIVER_PROVIDES += libopencl +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 = \ + IGNORE_CC_MISMATCH=1 \ + 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) $(NVIDIA_DRIVER_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 + +# Helper to install libraries +# $1: library name +# $2: target directory +# +# 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_LIB + $(INSTALL) -D -m 0644 $(@D)/$(1) $(2)$(notdir $(1)) + libsoname="$$( $(TARGET_READELF) -d "$(@D)/$(1)" \ + |sed -r -e '/.*\(SONAME\).*\[(.*)\]$$/!d; s//\1/;' )"; \ + if [ -n "$${libsoname}" -a "$${libsoname}" != "$(notdir $(1))" ]; then \ + ln -sf $(notdir $(1)) $(2)$${libsoname}; \ + fi + baseso=$(firstword $(subst .,$(space),$(notdir $(1)))).so; \ + if [ -n "$${baseso}" -a "$${baseso}" != "$(notdir $(1))" ]; then \ + ln -sf $(notdir $(1)) $(2)$${baseso}; \ + fi +endef + +# Helper to install libraries +# $1: destination directory (target or staging) +define NVIDIA_DRIVER_INSTALL_LIBS + $(foreach lib,$(NVIDIA_DRIVER_LIBS), + $(call NVIDIA_DRIVER_INSTALL_LIB,$(word 1,$(subst :, ,$(lib))), \ + $(1)/usr/lib/$(word 2,$(subst :, ,$(lib)))) + ) +endef + +# For staging, install libraries and development files +define NVIDIA_DRIVER_INSTALL_STAGING_CMDS + $(call NVIDIA_DRIVER_INSTALL_LIBS,$(STAGING_DIR)) + $(NVIDIA_DRIVER_INSTALL_GL_DEV) +endef + +# For target, install libraries and X.org modules +define NVIDIA_DRIVER_INSTALL_TARGET_CMDS + $(call NVIDIA_DRIVER_INSTALL_LIBS,$(TARGET_DIR)) + $(foreach p,$(NVIDIA_DRIVER_PROGS), \ + $(INSTALL) -D -m 0755 $(@D)/$(p) \ + $(TARGET_DIR)/usr/bin/$(p) + ) + $(NVIDIA_DRIVER_SYMLINK_LIBGLX) + $(NVIDIA_DRIVER_INSTALL_KERNEL_MODULE) +endef + +# Due to a conflict with xserver_xorg-server, this needs to be performed when +# finalizing the target filesystem to make sure this version is used. +NVIDIA_DRIVER_TARGET_FINALIZE_HOOKS += NVIDIA_DRIVER_SYMLINK_LIBGLX + +$(eval $(generic-package)) diff --git a/package/nvidia-modprobe/Config.in b/package/nvidia-modprobe/Config.in new file mode 100644 index 00000000..4e287bc7 --- /dev/null +++ b/package/nvidia-modprobe/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_NVIDIA_MODPROBE + bool "nvidia-modprobe" + depends on BR2_USE_MMU # fork() + help + nvidia-modprobe package adds a utility and headers for + probing the NVIDIA hardware at runtime. + + https://github.com/NVIDIA/nvidia-modprobe diff --git a/package/nvidia-modprobe/nvidia-modprobe.hash b/package/nvidia-modprobe/nvidia-modprobe.hash new file mode 100644 index 00000000..10b765e3 --- /dev/null +++ b/package/nvidia-modprobe/nvidia-modprobe.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 396b4102d3075a2dee3024652fae206a1b38ace54b8efb1e2c20757a11ec19f1 nvidia-modprobe-450.57.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/nvidia-modprobe/nvidia-modprobe.mk b/package/nvidia-modprobe/nvidia-modprobe.mk new file mode 100644 index 00000000..75d416b3 --- /dev/null +++ b/package/nvidia-modprobe/nvidia-modprobe.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# nvidia-modprobe +# +################################################################################ + +NVIDIA_MODPROBE_VERSION = 450.57 +NVIDIA_MODPROBE_SITE = $(call github,NVIDIA,nvidia-modprobe,$(NVIDIA_MODPROBE_VERSION)) +NVIDIA_MODPROBE_LICENSE = GPL-2.0 +NVIDIA_MODPROBE_LICENSE_FILES = COPYING + +define NVIDIA_MODPROBE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + OUTPUTDIR=. ./nvidia-modprobe.unstripped +endef + +define NVIDIA_MODPROBE_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 $(@D)/nvidia-modprobe.unstripped \ + $(TARGET_DIR)/usr/bin/nvidia-modprobe +endef + +$(eval $(generic-package)) diff --git a/package/nvidia-persistenced/Config.in b/package/nvidia-persistenced/Config.in new file mode 100644 index 00000000..82303d00 --- /dev/null +++ b/package/nvidia-persistenced/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_NVIDIA_PERSISTENCED + bool "nvidia-persistenced" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_TOOLCHAIN_HAS_THREADS # libtirpc + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + help + NVIDIA driver persistence daemon. + + https://github.com/NVIDIA/nvidia-persistenced + +comment "nvidia-persistenced needs a toolchain w/ threads, dynamic libs" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/nvidia-persistenced/nvidia-persistenced.conf b/package/nvidia-persistenced/nvidia-persistenced.conf new file mode 100644 index 00000000..48f24cfb --- /dev/null +++ b/package/nvidia-persistenced/nvidia-persistenced.conf @@ -0,0 +1 @@ +u nvidia-persistenced - 'NVIDIA Persistence Daemon' diff --git a/package/nvidia-persistenced/nvidia-persistenced.hash b/package/nvidia-persistenced/nvidia-persistenced.hash new file mode 100644 index 00000000..06c71b35 --- /dev/null +++ b/package/nvidia-persistenced/nvidia-persistenced.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 b84fb8eb86127a725d0134a2c64a64e7844e125dece137e7fe8adf8a33cbe817 nvidia-persistenced-515.48.07.tar.gz +sha256 279d814320adc07ca5a4ee101a0b428ddf22a6f3513b8c051f9eb7be47b2e797 COPYING diff --git a/package/nvidia-persistenced/nvidia-persistenced.mk b/package/nvidia-persistenced/nvidia-persistenced.mk new file mode 100644 index 00000000..662d4d43 --- /dev/null +++ b/package/nvidia-persistenced/nvidia-persistenced.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# nvidia-persistenced +# +################################################################################ + +NVIDIA_PERSISTENCED_VERSION = 515.48.07 +NVIDIA_PERSISTENCED_SITE = $(call github,NVIDIA,nvidia-persistenced,$(NVIDIA_PERSISTENCED_VERSION)) +NVIDIA_PERSISTENCED_LICENSE = MIT +NVIDIA_PERSISTENCED_LICENSE_FILES = COPYING + +NVIDIA_PERSISTENCED_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +NVIDIA_PERSISTENCED_DEPENDENCIES += libtirpc +endif + +define NVIDIA_PERSISTENCED_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + OUTPUTDIR=. ./nvidia-persistenced.unstripped +endef + +define NVIDIA_PERSISTENCED_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/nvidia-persistenced.unstripped \ + $(TARGET_DIR)/usr/bin/nvidia-persistenced +endef + +ifeq ($(BR2_PACKAGE_SYSTEMD_SYSUSERS),y) +define NVIDIA_PERSISTENCED_INSTALL_SYSTEMD_SYSUSERS + $(INSTALL) -D -m 0644 $(NVIDIA_PERSISTENCED_PKGDIR)/nvidia-persistenced.conf \ + $(TARGET_DIR)/usr/lib/sysusers.d/nvidia-persistenced.conf +endef +else +define NVIDIA_PERSISTENCED_USERS + nvidia-persistenced -1 nvidia-persistenced -1 * - - - NVIDIA Persistence Daemon +endef +endif + +define NVIDIA_PERSISTENCED_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(@D)/init/systemd/nvidia-persistenced.service.template \ + $(TARGET_DIR)/usr/lib/systemd/system/nvidia-persistenced.service + $(SED) 's/__USER__/nvidia-persistenced/g' \ + $(TARGET_DIR)/usr/lib/systemd/system/nvidia-persistenced.service + $(NVIDIA_PERSISTENCED_INSTALL_SYSTEMD_SYSUSERS) +endef + +$(eval $(generic-package)) diff --git a/package/nvme/Config.in b/package/nvme/Config.in new file mode 100644 index 00000000..dd8655fa --- /dev/null +++ b/package/nvme/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_NVME + bool "nvme" + help + NVME utility, a utility for interacting with standard NVM + Express (optimized PCI Express SSD interface) devices. + + https://github.com/linux-nvme/nvme-cli diff --git a/package/nvme/nvme.hash b/package/nvme/nvme.hash new file mode 100644 index 00000000..a7ce51ca --- /dev/null +++ b/package/nvme/nvme.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 a75270e65a4a7a6add48f748ba216d8f68d78f90f8cb77e88e9753b74d527991 nvme-1.12.tar.gz +sha256 a45d0bb572ed792ed34627a72621834b3ba92aab6e2cc4e04301dee7a728d753 LICENSE diff --git a/package/nvme/nvme.mk b/package/nvme/nvme.mk new file mode 100644 index 00000000..53f9dff7 --- /dev/null +++ b/package/nvme/nvme.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# nvme +# +################################################################################ + +NVME_VERSION = 1.12 +NVME_SITE = $(call github,linux-nvme,nvme-cli,v$(NVME_VERSION)) +NVME_LICENSE = GPL-2.0+ +NVME_LICENSE_FILES = LICENSE + +# Yes, LIBUUID=0 means libuuid support enabled. +# LIBUUID=1 means libuuid support disabled. +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y) +NVME_DEPENDENCIES += util-linux +NVME_MAKE_OPTS += LIBUUID=0 +else +NVME_MAKE_OPTS += LIBUUID=1 +endif + +# Yes, HAVE_SYSTEMD=0 means systemd support enabled. +# HAVE_SYSTEMD=1 means systemd support disabled. +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +NVME_DEPENDENCIES += systemd +NVME_MAKE_OPTS += HAVE_SYSTEMD=0 +else +NVME_MAKE_OPTS += HAVE_SYSTEMD=1 +endif + +define NVME_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) \ + $(NVME_MAKE_OPTS) -C $(@D) +endef + +define NVME_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(NVME_MAKE_OPTS) -C $(@D) \ + DESTDIR=$(TARGET_DIR) PREFIX=/usr install-bin +endef + +$(eval $(generic-package)) diff --git a/package/oatpp/0001-src-oatpp-core-base-Environment.hpp-include-cstdarg.patch b/package/oatpp/0001-src-oatpp-core-base-Environment.hpp-include-cstdarg.patch new file mode 100644 index 00000000..33fa04a2 --- /dev/null +++ b/package/oatpp/0001-src-oatpp-core-base-Environment.hpp-include-cstdarg.patch @@ -0,0 +1,39 @@ +From 6ac376cec5c9573abf3ee3b82e71bd2b7e410dad Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 23 Nov 2023 22:45:56 +0100 +Subject: [PATCH] src/oatpp/core/base/Environment.hpp: include cstdarg + +Include cstdarg to fix the following build failure with uclibc-ng: + +In file included from /home/autobuild/autobuild/instance-4/output-1/build/oatpp-1.3.0/src/oatpp/algorithm/CRC.hpp:28, + from /home/autobuild/autobuild/instance-4/output-1/build/oatpp-1.3.0/src/oatpp/algorithm/CRC.cpp:25: +/home/autobuild/autobuild/instance-4/output-1/build/oatpp-1.3.0/src/oatpp/core/base/Environment.hpp:359:93: error: 'va_list' has not been declared + 359 | static void vlogFormatted(v_uint32 priority, const std::string& tag, const char* message, va_list args); + | ^~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/bcdf7548ff752f936defd111d13c63245ea70cbe + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/oatpp/oatpp/commit/1d11558e2cbbabc0db02a233bf00d651ce5ea758 +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + src/oatpp/core/base/Environment.hpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/oatpp/core/base/Environment.hpp b/src/oatpp/core/base/Environment.hpp +index 984afdf2a7f5..2eb18be3e196 100644 +--- a/src/oatpp/core/base/Environment.hpp ++++ b/src/oatpp/core/base/Environment.hpp +@@ -28,6 +28,7 @@ + + #include "./Config.hpp" + ++#include + #include + #include + #include +-- +2.43.0 + diff --git a/package/oatpp/Config.in b/package/oatpp/Config.in new file mode 100644 index 00000000..a4009e87 --- /dev/null +++ b/package/oatpp/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_OATPP + bool "oatpp" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Oat++ is an open-source C++ web framework for highly scalable + and resource-efficient web applications. It provides all the + necessary components for production-grade development. + + https://oatpp.io/docs/start + +comment "oatpp needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/oatpp/oatpp.hash b/package/oatpp/oatpp.hash new file mode 100644 index 00000000..e6b35d8d --- /dev/null +++ b/package/oatpp/oatpp.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 e1f80fa8fd7a74da6737e7fee1a4db68b4d7085a3f40e7d550752d6ff5714583 oatpp-1.3.0.tar.gz +sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE diff --git a/package/oatpp/oatpp.mk b/package/oatpp/oatpp.mk new file mode 100644 index 00000000..d3f6e1a9 --- /dev/null +++ b/package/oatpp/oatpp.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# oatpp +# +################################################################################ + +OATPP_VERSION = 1.3.0 +OATPP_SITE = $(call github,oatpp,oatpp,$(OATPP_VERSION)) +OATPP_LICENSE = Apache-2.0 +OATPP_LICENSE_FILES = LICENSE +OATPP_CONF_OPTS = -DBUILD_SHARED_LIBS=OFF -DOATPP_BUILD_TESTS=OFF +OATPP_INSTALL_STAGING = YES +# Only builds a static lib and headers +OATPP_INSTALL_TARGET = NO + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS_NPTL),y) +OATPP_CONF_OPTS += -DOATPP_COMPAT_BUILD_NO_SET_AFFINITY=OFF +else +OATPP_CONF_OPTS += -DOATPP_COMPAT_BUILD_NO_SET_AFFINITY=ON +endif + +$(eval $(cmake-package)) diff --git a/package/obsidian-cursors/Config.in b/package/obsidian-cursors/Config.in new file mode 100644 index 00000000..49ec3101 --- /dev/null +++ b/package/obsidian-cursors/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_OBSIDIAN_CURSORS + bool "obsidian-cursors" + help + Obsidian Cursors is a shiny and clean cursor set. + + http://kde-look.org/content/show.php/Obsidian+Cursors?content=73135 diff --git a/package/obsidian-cursors/obsidian-cursors.hash b/package/obsidian-cursors/obsidian-cursors.hash new file mode 100644 index 00000000..a476a0ba --- /dev/null +++ b/package/obsidian-cursors/obsidian-cursors.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 3d38fe875f6feae8b7772e02cfda530fcf669479807915cd2c12c149da17cfb9 73135-Obsidian.tar.bz2 diff --git a/package/obsidian-cursors/obsidian-cursors.mk b/package/obsidian-cursors/obsidian-cursors.mk new file mode 100644 index 00000000..87a8d62f --- /dev/null +++ b/package/obsidian-cursors/obsidian-cursors.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# obsidian-cursors +# +################################################################################ + +OBSIDIAN_CURSORS_VERSION = 1.0 +OBSIDIAN_CURSORS_SITE = http://kde-look.org/CONTENT/content-files +OBSIDIAN_CURSORS_SOURCE = 73135-Obsidian.tar.bz2 +OBSIDIAN_CURSORS_LICENSE = GPL + +define OBSIDIAN_CURSORS_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/share/cursors/xorg-x11/Obsidian + cp -a $(@D)/cursors \ + $(TARGET_DIR)/usr/share/cursors/xorg-x11/Obsidian +endef + +$(eval $(generic-package)) diff --git a/package/ocrad/Config.in b/package/ocrad/Config.in new file mode 100644 index 00000000..b6c4300f --- /dev/null +++ b/package/ocrad/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_OCRAD + bool "ocrad" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LIBPNG + help + GNU Ocrad is an OCR (Optical Character Recognition) program + based on a feature extraction method. + It reads images in pbm (bitmap), pgm (greyscale) or + ppm (color) formats and produces text in byte (8-bit) or + UTF-8 formats. + + http://www.gnu.org/software/ocrad/ + +comment "ocrad needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/ocrad/ocrad.hash b/package/ocrad/ocrad.hash new file mode 100644 index 00000000..736dd6ad --- /dev/null +++ b/package/ocrad/ocrad.hash @@ -0,0 +1,3 @@ +# Locally calculated after checking pgp signature +sha256 11200cc6b0b7ba16884a72dccb58ef694f7aa26cd2b2041e555580f064d2d9e9 ocrad-0.29.tar.lz +sha256 3d77c1a58fbde5ddba612d1fe09965e20a3804953eca12e8c1892298bb8a5eef COPYING diff --git a/package/ocrad/ocrad.mk b/package/ocrad/ocrad.mk new file mode 100644 index 00000000..2452070b --- /dev/null +++ b/package/ocrad/ocrad.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# ocrad +# +################################################################################ + +OCRAD_VERSION = 0.29 +OCRAD_SOURCE = ocrad-$(OCRAD_VERSION).tar.lz +OCRAD_SITE = $(BR2_GNU_MIRROR)/ocrad +OCRAD_LICENSE = GPL-2.0+ +OCRAD_LICENSE_FILES = COPYING +OCRAD_INSTALL_STAGING = YES +OCRAD_DEPENDENCIES = host-pkgconf libpng + +OCRAD_LIBS = `$(PKG_CONFIG_HOST_BINARY) --libs libpng` + +# This is not a true autotools package. +define OCRAD_CONFIGURE_CMDS + cd $(@D) && \ + $(TARGET_MAKE_ENV) \ + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + $(TARGET_CONFIGURE_OPTS) \ + LIBS="$(OCRAD_LIBS)" +endef + +define OCRAD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define OCRAD_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +define OCRAD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/octave/0001-Fix-BLAS-library-integer-size-detection.patch b/package/octave/0001-Fix-BLAS-library-integer-size-detection.patch new file mode 100644 index 00000000..6603295e --- /dev/null +++ b/package/octave/0001-Fix-BLAS-library-integer-size-detection.patch @@ -0,0 +1,40 @@ +From 75b973373ed2e9a7a30f62dfe330299306ecff75 Mon Sep 17 00:00:00 2001 +From: Julien Olivain +Date: Sat, 5 Mar 2022 12:36:09 +0100 +Subject: [PATCH] Fix BLAS library integer size detection + +When cross-compiling, octave ./configure script fails to detect the BLAS +library integer size and fails with the message: + + configure: error: unrecognized BLAS library integer size + +This patch fixes this detection. + +Patch adapted from: +https://github.com/openembedded/meta-openembedded/commit/0ad153f721ef99de585c4452a997a7104f45d71d + +Signed-off-by: Julien Olivain +--- + configure.ac | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 4092e5915d..f4ea2c1987 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -757,6 +757,12 @@ if test $ax_blas_ok = no || test $ax_lapack_ok = no; then + AC_MSG_ERROR([BLAS and LAPACK libraries are required]) + fi + ++if ac_fn_f77_try_run "$LINENO"; then : ++ ax_cv_blas_integer_size=8 ++else ++ ax_cv_blas_integer_size=4 ++fi ++ + case $ax_cv_blas_integer_size in + 4) + HAVE_64_BIT_BLAS=no +-- +2.39.2 + diff --git a/package/octave/Config.in b/package/octave/Config.in new file mode 100644 index 00000000..73e27f65 --- /dev/null +++ b/package/octave/Config.in @@ -0,0 +1,38 @@ +config BR2_PACKAGE_OCTAVE + bool "octave" + depends on BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_TOOLCHAIN_HAS_FORTRAN + # Some Bootlin x86_64 toolchains (like version + # bleeding-edge-2021.11-1) has a file + # "x86_64-buildroot-linux-gnu/lib64/libgfortran.la" including + # a "dependency_libs=" entry with an incorrect absolute path + # to linquadmath.la on the bootlin build host. This breaks + # builds using libtool with libgfortran. Those toolchains are + # used by the "utils/test-pkg" script. + depends on !BR2_TOOLCHAIN_EXTERNAL_BOOTLIN || !BR2_x86_64 + select BR2_PACKAGE_OPENBLAS + select BR2_PACKAGE_PCRE2 + help + GNU Octave is a high-level language, primarily intended for + numerical computations. It provides a convenient command + line interface for solving linear and nonlinear problems + numerically, and for performing other numerical experiments + using a language that is mostly compatible with Matlab. It + may also be used as a batch-oriented language. Octave has + extensive tools for solving common numerical linear algebra + problems, finding the roots of nonlinear equations, + integrating ordinary functions, manipulating polynomials, + and integrating ordinary differential and + differential-algebraic equations. It is easily extensible + and customizable via user-defined functions written in + Octave's own language, or using dynamically loaded modules + written in C++, C, Fortran, or other languages. + + https://www.octave.org/ + +comment "octave needs a toolchain w/ C++ and fortran, gcc >= 4.8" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \ + !BR2_TOOLCHAIN_HAS_FORTRAN diff --git a/package/octave/octave.hash b/package/octave/octave.hash new file mode 100644 index 00000000..d9313734 --- /dev/null +++ b/package/octave/octave.hash @@ -0,0 +1,5 @@ +# Locally computed after checking signature +# https://ftp.gnu.org/gnu/octave/octave-9.2.0.tar.lz.sig +# using key DBD9C84E39FE1AAE99F04446B05F05B75D36644B +sha256 dcb2c098701cfcbc083f07e90e146261d15cdbf5e89c031032422112c89b47da octave-9.2.0.tar.lz +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 COPYING diff --git a/package/octave/octave.mk b/package/octave/octave.mk new file mode 100644 index 00000000..2e2fe0f9 --- /dev/null +++ b/package/octave/octave.mk @@ -0,0 +1,76 @@ +################################################################################ +# +# octave +# +################################################################################ + +OCTAVE_VERSION = 9.2.0 +OCTAVE_SITE = https://ftp.gnu.org/gnu/octave +OCTAVE_SOURCE = octave-$(OCTAVE_VERSION).tar.lz +OCTAVE_LICENSE = GPL-3.0+ +OCTAVE_LICENSE_FILES = COPYING +OCTAVE_AUTORECONF = YES + +OCTAVE_CONF_OPTS = --disable-java + +OCTAVE_DEPENDENCIES = \ + host-gperf \ + host-pkgconf \ + openblas \ + pcre2 + +ifeq ($(BR2_PACKAGE_BZIP2),y) +OCTAVE_CONF_OPTS += --with-bz2 +OCTAVE_DEPENDENCIES += bzip2 +else +OCTAVE_CONF_OPTS += --without-bz2 +endif + +ifeq ($(BR2_PACKAGE_GRAPHICSMAGICK),y) +OCTAVE_CONF_OPTS += --with-magick=GraphicsMagick++ +OCTAVE_DEPENDENCIES += graphicsmagick +else ifeq ($(BR2_PACKAGE_IMAGEMAGICK),y) +OCTAVE_CONF_OPTS += --with-magick=ImageMagick++ +OCTAVE_DEPENDENCIES += imagemagick +else +OCTAVE_CONF_OPTS += --without-magick +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +OCTAVE_CONF_OPTS += --with-curl +OCTAVE_DEPENDENCIES += libcurl +else +OCTAVE_CONF_OPTS += --without-curl +endif + +ifeq ($(BR2_PACKAGE_LIBSNDFILE),y) +OCTAVE_CONF_OPTS += --with-sndfile +OCTAVE_DEPENDENCIES += libsndfile +else +OCTAVE_CONF_OPTS += --without-sndfile +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +OCTAVE_CONF_OPTS += --with-openssl=yes +OCTAVE_DEPENDENCIES += openssl +else +OCTAVE_CONF_OPTS += --without-openssl +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +OCTAVE_CONF_OPTS += \ + --enable-readline \ + --with-libreadline-prefix=$(STAGING_DIR)/usr +OCTAVE_DEPENDENCIES += readline +else +OCTAVE_CONF_OPTS += --disable-readline +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +OCTAVE_CONF_OPTS += --with-z +OCTAVE_DEPENDENCIES += zlib +else +OCTAVE_CONF_OPTS += --without-z +endif + +$(eval $(autotools-package)) diff --git a/package/odb/0001-tm.h-include-in-gcc.hxx-appears-to-be-no-longer-nece.patch b/package/odb/0001-tm.h-include-in-gcc.hxx-appears-to-be-no-longer-nece.patch new file mode 100644 index 00000000..a9366d6f --- /dev/null +++ b/package/odb/0001-tm.h-include-in-gcc.hxx-appears-to-be-no-longer-nece.patch @@ -0,0 +1,30 @@ +From f0bbc17aeed1b636782a4b92e8191d90f310d0a2 Mon Sep 17 00:00:00 2001 +From: Boris Kolpackov +Date: Mon, 1 Jun 2015 19:08:33 +0200 +Subject: [PATCH] include in gcc.hxx appears to be no longer necessary + +On MIPS this file pulls in enum processor which conflicts with +our class processor. + +Upstream: https://git.codesynthesis.com/cgit/odb/odb/commit/?id=f0bbc17aeed1b636782a4b92e8191d90f310d0a2 +Signed-off-by: Kamel Bouhara +--- + odb/gcc.hxx | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/odb/gcc.hxx b/odb/gcc.hxx +index 504b59b..c953047 100644 +--- a/odb/gcc.hxx ++++ b/odb/gcc.hxx +@@ -46,8 +46,6 @@ extern "C" + #include + #include + +-#include +- + #include + #include + +-- +2.26.2 + diff --git a/package/odb/0002-Remove-gratuitous-classes.patch b/package/odb/0002-Remove-gratuitous-classes.patch new file mode 100644 index 00000000..7fd70e8a --- /dev/null +++ b/package/odb/0002-Remove-gratuitous-classes.patch @@ -0,0 +1,444 @@ +From 5486c8c85b9cfb92232518b2fadf6d8ed7b332d5 Mon Sep 17 00:00:00 2001 +From: Boris Kolpackov +Date: Wed, 3 Jun 2015 21:35:43 +0200 +Subject: [PATCH] Remove gratuitous classes + +In the process also get rid of global class processor which conflicts +with enum processor on MIPS. + +Upstream: https://git.codesynthesis.com/cgit/odb/odb/commit/?id=bbc39ffe31c67506b4c03fc56fa3adcb925b6325 +Signed-off-by: Kamel Bouhara +--- + odb/context.hxx | 3 ++- + odb/generator.cxx | 24 ++++++++++++------------ + odb/generator.hxx | 26 ++++++++------------------ + odb/plugin.cxx | 18 +++++++----------- + odb/processor.cxx | 4 ++-- + odb/processor.hxx | 22 ++++++---------------- + odb/relational/validator.cxx | 6 +++--- + odb/relational/validator.hxx | 29 +++++++++-------------------- + odb/validator.cxx | 13 ++++++------- + odb/validator.hxx | 28 +++++++++------------------- + 10 files changed, 64 insertions(+), 109 deletions(-) + +diff --git a/odb/context.hxx b/odb/context.hxx +index 1cf002a..351bc61 100644 +--- a/odb/context.hxx ++++ b/odb/context.hxx +@@ -41,7 +41,8 @@ typedef cutl::re::format regex_format; + + typedef std::vector regex_mapping; + +-// ++// Generic exception thrown to indicate a failure when diagnostics ++// has already been issued (to stderr). + // + class operation_failed {}; + +diff --git a/odb/generator.cxx b/odb/generator.cxx +index e165faf..6aa5151 100644 +--- a/odb/generator.cxx ++++ b/odb/generator.cxx +@@ -58,7 +58,7 @@ namespace + if (!ifs.is_open ()) + { + cerr << "error: unable to open '" << p << "' in read mode" << endl; +- throw generator::failed (); ++ throw generator_failed (); + } + } + +@@ -70,7 +70,7 @@ namespace + if (!ofs.is_open ()) + { + cerr << "error: unable to open '" << p << "' in write mode" << endl; +- throw generator::failed (); ++ throw generator_failed (); + } + } + +@@ -118,7 +118,7 @@ namespace + } + } + +-void generator:: ++void + generate (options const& ops, + features& fts, + semantics::unit& unit, +@@ -259,7 +259,7 @@ generate (options const& ops, + cerr << in_log_path << ": error: wrong database '" << + old_changelog->database () << "', expected '" << db << + "'" << endl; +- throw generator::failed (); ++ throw generator_failed (); + } + + string sn (ops.schema_name ()[db]); +@@ -268,18 +268,18 @@ generate (options const& ops, + cerr << in_log_path << ": error: wrong schema name '" << + old_changelog->schema_name () << "', expected '" << sn << + "'" << endl; +- throw generator::failed (); ++ throw generator_failed (); + } + } + catch (const ios_base::failure& e) + { + cerr << in_log_path << ": read failure" << endl; +- throw failed (); ++ throw generator_failed (); + } + catch (const xml::parsing& e) + { + cerr << e.what () << endl; +- throw failed (); ++ throw generator_failed (); + } + } + +@@ -976,12 +976,12 @@ generate (options const& ops, + catch (const ios_base::failure& e) + { + cerr << out_log_path << ": write failure" << endl; +- throw failed (); ++ throw generator_failed (); + } + catch (const xml::serialization& e) + { + cerr << e.what () << endl; +- throw failed (); ++ throw generator_failed (); + } + } + +@@ -998,18 +998,18 @@ generate (options const& ops, + { + // Code generation failed. Diagnostics has already been issued. + // +- throw failed (); ++ throw generator_failed (); + } + catch (semantics::invalid_path const& e) + { + cerr << "error: '" << e.path () << "' is not a valid filesystem path" + << endl; +- throw failed (); ++ throw generator_failed (); + } + catch (fs::error const&) + { + // Auto-removal of generated files failed. Ignore it. + // +- throw failed (); ++ throw generator_failed (); + } + } +diff --git a/odb/generator.hxx b/odb/generator.hxx +index ce49295..e83d94d 100644 +--- a/odb/generator.hxx ++++ b/odb/generator.hxx +@@ -11,23 +11,13 @@ + #include + #include + +-class generator +-{ +-public: +- class failed {}; +- +- void +- generate (options const&, +- features&, +- semantics::unit&, +- semantics::path const& file, +- std::vector const& inputs); +- +- generator () {} +- +-private: +- generator (generator const&); +- generator& operator= (generator const&); +-}; ++class generator_failed {}; ++ ++void ++generate (options const&, ++ features&, ++ semantics::unit&, ++ semantics::path const& file, ++ std::vector const& inputs); + + #endif // ODB_GENERATOR_HXX +diff --git a/odb/plugin.cxx b/odb/plugin.cxx +index e32f225..51f0cb1 100644 +--- a/odb/plugin.cxx ++++ b/odb/plugin.cxx +@@ -199,27 +199,23 @@ gate_callback (void*, void*) + parser p (*options_, loc_pragmas_, ns_loc_pragmas_, decl_pragmas_); + auto_ptr u (p.parse (global_namespace, file_)); + +- + features f; + + // Validate, pass 1. + // +- validator v; +- v.validate (*options_, f, *u, file_, 1); ++ validate (*options_, f, *u, file_, 1); + + // Process. + // +- processor pr; +- pr.process (*options_, f, *u, file_); ++ process (*options_, f, *u, file_); + + // Validate, pass 2. + // +- v.validate (*options_, f, *u, file_, 2); ++ validate (*options_, f, *u, file_, 2); + + // Generate. + // +- generator g; +- g.generate (*options_, f, *u, file_, inputs_); ++ generate (*options_, f, *u, file_, inputs_); + } + catch (cutl::re::format const& e) + { +@@ -239,19 +235,19 @@ gate_callback (void*, void*) + // + r = 1; + } +- catch (validator::failed const&) ++ catch (validator_failed const&) + { + // Diagnostics has aready been issued. + // + r = 1; + } +- catch (processor::failed const&) ++ catch (processor_failed const&) + { + // Diagnostics has aready been issued. + // + r = 1; + } +- catch (generator::failed const&) ++ catch (generator_failed const&) + { + // Diagnostics has aready been issued. + // +diff --git a/odb/processor.cxx b/odb/processor.cxx +index a808a52..3a2cb1d 100644 +--- a/odb/processor.cxx ++++ b/odb/processor.cxx +@@ -3064,7 +3064,7 @@ namespace + }; + } + +-void processor:: ++void + process (options const& ops, + features& f, + semantics::unit& unit, +@@ -3120,6 +3120,6 @@ process (options const& ops, + { + // Processing failed. Diagnostics has already been issued. + // +- throw failed (); ++ throw processor_failed (); + } + } +diff --git a/odb/processor.hxx b/odb/processor.hxx +index 602b999..e62dd25 100644 +--- a/odb/processor.hxx ++++ b/odb/processor.hxx +@@ -9,22 +9,12 @@ + #include + #include + +-class processor +-{ +-public: +- class failed {}; ++class processor_failed {}; + +- void +- process (options const&, +- features&, +- semantics::unit&, +- semantics::path const&); +- +- processor () {} +- +-private: +- processor (processor const&); +- processor& operator= (processor const&); +-}; ++void ++process (options const&, ++ features&, ++ semantics::unit&, ++ semantics::path const&); + + #endif // ODB_PROCESSOR_HXX +diff --git a/odb/relational/validator.cxx b/odb/relational/validator.cxx +index 1d51c9a..47f089c 100644 +--- a/odb/relational/validator.cxx ++++ b/odb/relational/validator.cxx +@@ -528,7 +528,7 @@ namespace relational + }; + } + +- void validator:: ++ void + validate (options const&, + features&, + semantics::unit& u, +@@ -608,7 +608,7 @@ namespace relational + } + + if (!valid) +- throw failed (); ++ throw operation_failed (); + + if (pass == 1) + { +@@ -636,6 +636,6 @@ namespace relational + } + + if (!valid) +- throw failed (); ++ throw operation_failed (); + } + } +diff --git a/odb/relational/validator.hxx b/odb/relational/validator.hxx +index f0ede53..93360c3 100644 +--- a/odb/relational/validator.hxx ++++ b/odb/relational/validator.hxx +@@ -11,26 +11,15 @@ + + namespace relational + { +- class validator +- { +- public: +- struct failed {}; +- +- // The first pass is performed before processing. The second -- after. +- // +- void +- validate (options const&, +- features&, +- semantics::unit&, +- semantics::path const&, +- unsigned short pass); +- +- validator () {} +- +- private: +- validator (validator const&); +- validator& operator= (validator const&); +- }; ++ // The first pass is performed before processing. The second -- after. ++ // Throws operation_failed to signal a failure. ++ // ++ void ++ validate (options const&, ++ features&, ++ semantics::unit&, ++ semantics::path const&, ++ unsigned short pass); + } + + #endif // ODB_RELATIONAL_VALIDATOR_HXX +diff --git a/odb/validator.cxx b/odb/validator.cxx +index e80f4d8..91d91e5 100644 +--- a/odb/validator.cxx ++++ b/odb/validator.cxx +@@ -1457,7 +1457,7 @@ namespace + }; + } + +-void validator:: ++void + validate (options const& ops, + features& f, + semantics::unit& u, +@@ -1506,7 +1506,7 @@ validate (options const& ops, + } + + if (!valid) +- throw failed (); ++ throw validator_failed (); + + auto_ptr ctx (create_context (cerr, u, ops, f, 0)); + +@@ -1559,7 +1559,7 @@ validate (options const& ops, + } + + if (!valid) +- throw failed (); ++ throw validator_failed (); + + switch (db) + { +@@ -1575,12 +1575,11 @@ validate (options const& ops, + { + try + { +- relational::validator v; +- v.validate (ops, f, u, p, pass); ++ relational::validate (ops, f, u, p, pass); + } +- catch (relational::validator::failed const&) ++ catch (operation_failed const&) + { +- throw failed (); ++ throw validator_failed (); + } + + break; +diff --git a/odb/validator.hxx b/odb/validator.hxx +index f913049..3ffa470 100644 +--- a/odb/validator.hxx ++++ b/odb/validator.hxx +@@ -9,25 +9,15 @@ + #include + #include + +-class validator +-{ +-public: +- struct failed {}; ++class validator_failed {}; + +- // The first pass is performed before processing. The second -- after. +- // +- void +- validate (options const&, +- features&, +- semantics::unit&, +- semantics::path const&, +- unsigned short pass); +- +- validator () {} +- +-private: +- validator (validator const&); +- validator& operator= (validator const&); +-}; ++// The first pass is performed before processing. The second -- after. ++// ++void ++validate (options const&, ++ features&, ++ semantics::unit&, ++ semantics::path const&, ++ unsigned short pass); + + #endif // ODB_VALIDATOR_HXX +-- +2.25.0 + diff --git a/package/odb/0003-Initial-work-to-make-ODB-compatible-with-GCC-6.patch b/package/odb/0003-Initial-work-to-make-ODB-compatible-with-GCC-6.patch new file mode 100644 index 00000000..4c936f44 --- /dev/null +++ b/package/odb/0003-Initial-work-to-make-ODB-compatible-with-GCC-6.patch @@ -0,0 +1,312 @@ +From bf389fd5185143847b1d91aed423e79c322dba51 Mon Sep 17 00:00:00 2001 +From: Boris Kolpackov +Date: Fri, 5 Feb 2016 16:01:42 +0200 +Subject: [PATCH] Initial work to make ODB compatible with GCC 6 + +Upstream: https://git.codesynthesis.com/cgit/odb/odb/commit/?id=511dcf67322ad87fb32f97d1cf7725c129e83898 +Signed-off-by: Kamel Bouhara +--- + odb/cxx-lexer.cxx | 4 ++++ + odb/gcc-fwd.hxx | 23 ++++++++++++++++++++++- + odb/gcc.hxx | 10 ++++++++++ + odb/include.cxx | 31 +++++++++++++++++++++---------- + odb/parser.cxx | 8 ++++---- + odb/plugin.cxx | 29 +++++++++++++++++++++++++++-- + odb/semantics/elements.cxx | 4 ++-- + 7 files changed, 90 insertions(+), 19 deletions(-) + +diff --git a/odb/cxx-lexer.cxx b/odb/cxx-lexer.cxx +index 7029c7e..64df296 100644 +--- a/odb/cxx-lexer.cxx ++++ b/odb/cxx-lexer.cxx +@@ -135,8 +135,12 @@ cpp_error_callback ( + #if BUILDING_GCC_MAJOR > 4 || BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR > 5 + int /*reason*/, // Added in GCC 4.6.0. + #endif ++#if BUILDING_GCC_MAJOR <= 5 + location_t, + unsigned int, ++#else ++ rich_location*, ++#endif + char const* msg, + va_list *ap) + { +diff --git a/odb/gcc-fwd.hxx b/odb/gcc-fwd.hxx +index a120f05..618b106 100644 +--- a/odb/gcc-fwd.hxx ++++ b/odb/gcc-fwd.hxx +@@ -7,6 +7,24 @@ + + #include + ++#if BUILDING_GCC_MAJOR >= 6 ++ ++// If we include here, it pulls in all kinds of GCC trouble that ++// "poisons" standard C/C++ declarations; see safe-ctype.h. So instead we ++// are going to "exclude" safe-ctype.h. To compensate, however, we will ++// include it first thing in gcc.hxx. ++// ++# include ++# define SAFE_CTYPE_H ++# include ++# undef SAFE_CTYPE_H ++# include ++ ++typedef unsigned int source_location; // ++typedef source_location location_t; // ++ ++#else // GCC < 6 ++ + #if BUILDING_GCC_MAJOR > 4 || BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR > 8 + # include // CHAR_BIT + # include +@@ -33,6 +51,9 @@ extern "C" + + typedef unsigned int source_location; // + typedef source_location location_t; // +-} ++ ++} // extern "C" ++ ++#endif + + #endif // ODB_GCC_FWD_HXX +diff --git a/odb/gcc.hxx b/odb/gcc.hxx +index c953047..858d685 100644 +--- a/odb/gcc.hxx ++++ b/odb/gcc.hxx +@@ -7,6 +7,10 @@ + + #include + ++#if BUILDING_GCC_MAJOR >= 6 ++# include // See gcc-fwd.hxx. ++#endif ++ + // GCC header includes to get the plugin and parse tree declarations. + // The order is important and doesn't follow any kind of logic. + // +@@ -145,4 +149,10 @@ gcc_tree_code_name (gcc_tree_code_type tc) {return tree_code_name[tc];} + #define DECL_CHAIN(x) TREE_CHAIN(x) + #endif + ++// In GCC 6, ANON_AGGRNAME_P became anon_aggrname_p(). ++// ++#if BUILDING_GCC_MAJOR < 6 ++# define anon_aggrname_p(X) ANON_AGGRNAME_P(X) ++#endif ++ + #endif // ODB_GCC_HXX +diff --git a/odb/include.cxx b/odb/include.cxx +index c397993..08c93ce 100644 +--- a/odb/include.cxx ++++ b/odb/include.cxx +@@ -30,9 +30,18 @@ namespace + path path_; + }; + ++#if BUILDING_GCC_MAJOR >= 6 ++ typedef line_map_ordinary line_map_type; ++#else ++ typedef line_map line_map_type; ++# ifndef linemap_check_ordinary ++# define linemap_check_ordinary(X) (X) ++# endif ++#endif ++ + struct includes + { +- typedef std::map map_type; ++ typedef std::map map_type; + bool trailing; // Included at the beginning or at the end of the main file. + map_type map; + }; +@@ -144,7 +153,9 @@ namespace + // + if (l > BUILTINS_LOCATION) + { +- line_map const* lm (linemap_lookup (line_table, l)); ++ line_map_type const* lm ( ++ linemap_check_ordinary ( ++ linemap_lookup (line_table, l))); + + if (lm != 0 && !MAIN_FILE_P (lm)) + { +@@ -537,20 +548,20 @@ namespace + // + #if BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR <= 6 + size_t used (line_table->used); +- line_map const* maps (line_table->maps); ++ line_map_type const* maps (line_table->maps); + #else + size_t used (line_table->info_ordinary.used); +- line_map const* maps (line_table->info_ordinary.maps); ++ line_map_type const* maps (line_table->info_ordinary.maps); + #endif + + for (size_t i (0); i < used; ++i) + { +- line_map const* m (maps + i); ++ line_map_type const* m (maps + i); + + if (MAIN_FILE_P (m) || m->reason != LC_ENTER) + continue; + +- line_map const* ifm (INCLUDED_FROM (line_table, m)); ++ line_map_type const* ifm (INCLUDED_FROM (line_table, m)); + + #if BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR <= 6 + path f (m->to_file); +@@ -580,7 +591,7 @@ namespace + for (includes::iterator j (i->second.begin ()); + j != i->second.end (); ++j) + { +- line_map const* lm (j->first); ++ line_map_type const* lm (j->first); + cerr << '\t' << lm->to_file << ":" << LAST_SOURCE_LINE (lm) << endl; + } + */ +@@ -589,13 +600,13 @@ namespace + // it is preferred over all others. Use the first one if there are + // several. + // +- line_map const* main_lm (0); ++ line_map_type const* main_lm (0); + include_directive* main_inc (0); + + for (includes::map_type::iterator j (i->second.map.begin ()); + j != i->second.map.end (); ++j) + { +- line_map const* lm (j->first); ++ line_map_type const* lm (j->first); + + if (MAIN_FILE_P (lm)) + { +@@ -636,7 +647,7 @@ namespace + for (includes::map_type::iterator j (i->second.map.begin ()); + j != i->second.map.end (); ++j) + { +- line_map const* lm (j->first); ++ line_map_type const* lm (j->first); + + #if BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR <= 6 + string f (lm->to_file); +diff --git a/odb/parser.cxx b/odb/parser.cxx +index a8e6a6a..feda9d4 100644 +--- a/odb/parser.cxx ++++ b/odb/parser.cxx +@@ -1044,14 +1044,14 @@ emit_type_decl (tree decl) + // says that in typedef struct {} S; S becomes struct's + // name. + // +- if (ANON_AGGRNAME_P (decl_name)) ++ if (anon_aggrname_p (decl_name)) + { + tree d (TYPE_NAME (t)); + + if (d != NULL_TREE && + !DECL_ARTIFICIAL (d) && + DECL_NAME (d) != NULL_TREE && +- !ANON_AGGRNAME_P (DECL_NAME (d))) ++ !anon_aggrname_p (DECL_NAME (d))) + { + decl = d; + decl_name = DECL_NAME (decl); +@@ -1668,7 +1668,7 @@ create_type (tree t, + ts << "start anon/stub " << gcc_tree_code_name(tc) << " at " + << file << ":" << line << endl; + +- if (d == NULL_TREE || ANON_AGGRNAME_P (DECL_NAME (d))) ++ if (d == NULL_TREE || anon_aggrname_p (DECL_NAME (d))) + { + if (tc == RECORD_TYPE) + r = &emit_class (t, file, line, clmn); +@@ -1765,7 +1765,7 @@ create_type (tree t, + ts << "start anon/stub " << gcc_tree_code_name(tc) << " at " + << file << ":" << line << endl; + +- if (d == NULL_TREE || ANON_AGGRNAME_P (DECL_NAME (d))) ++ if (d == NULL_TREE || anon_aggrname_p (DECL_NAME (d))) + { + r = &emit_enum (t, access, file, line, clmn); + } +diff --git a/odb/plugin.cxx b/odb/plugin.cxx +index 51f0cb1..779faed 100644 +--- a/odb/plugin.cxx ++++ b/odb/plugin.cxx +@@ -45,14 +45,28 @@ path file_; // File being compiled. + paths inputs_; // List of input files in at-once mode or just file_. + + bool (*cpp_error_prev) ( +- cpp_reader*, int, int, location_t, unsigned int, const char*, va_list*); ++ cpp_reader*, ++ int, ++ int, ++#if BUILDING_GCC_MAJOR >= 6 ++ rich_location*, ++#else ++ location_t, ++ unsigned int, ++#endif ++ const char*, ++ va_list*); + + static bool + cpp_error_filter (cpp_reader* r, + int level, + int reason, ++#if BUILDING_GCC_MAJOR >= 6 ++ rich_location* l, ++#else + location_t l, + unsigned int column_override, ++#endif + const char* msg, + va_list* ap) + { +@@ -66,7 +80,18 @@ cpp_error_filter (cpp_reader* r, + if (strstr (msg, "#pragma once") != 0) + return true; + +- return cpp_error_prev (r, level, reason, l, column_override, msg, ap); ++ return cpp_error_prev ( ++ r, ++ level, ++ reason, ++#if BUILDING_GCC_MAJOR >= 6 ++ l, ++#else ++ l, ++ column_override, ++#endif ++ msg, ++ ap); + } + + // A prefix of the _cpp_file struct. This struct is not part of the +diff --git a/odb/semantics/elements.cxx b/odb/semantics/elements.cxx +index 21e3260..399d5e9 100644 +--- a/odb/semantics/elements.cxx ++++ b/odb/semantics/elements.cxx +@@ -59,7 +59,7 @@ namespace semantics + if (tree decl = TYPE_NAME (n)) + name = DECL_NAME (decl); + +- return name != 0 && ANON_AGGRNAME_P (name); ++ return name != 0 && anon_aggrname_p (name); + } + + return true; +@@ -108,7 +108,7 @@ namespace semantics + if (tree decl = TYPE_NAME (type)) + { + name = DECL_NAME (decl); +- if (name != 0 && ANON_AGGRNAME_P (name)) ++ if (name != 0 && anon_aggrname_p (name)) + return true; + + tree s (CP_DECL_CONTEXT (decl)); +-- +2.25.0 + diff --git a/package/odb/0004-Make-compilable-with-GCC-6-in-C-14-mode.patch b/package/odb/0004-Make-compilable-with-GCC-6-in-C-14-mode.patch new file mode 100644 index 00000000..8911590e --- /dev/null +++ b/package/odb/0004-Make-compilable-with-GCC-6-in-C-14-mode.patch @@ -0,0 +1,48 @@ +From 4584b69c45b701c3689d6a974f1ee560a79a243e Mon Sep 17 00:00:00 2001 +From: Boris Kolpackov +Date: Mon, 8 Feb 2016 18:39:21 +0200 +Subject: [PATCH] Make compilable with GCC 6 in C++14 mode + +Upstream: https://git.codesynthesis.com/cgit/odb/odb/commit/?id=61d13eb53ade9f30a64892a901401bda5e42c335 +Signed-off-by: Kamel Bouhara +--- + odb/gcc.hxx | 9 ++++++--- + odb/parser.cxx | 2 ++ + 2 files changed, 8 insertions(+), 3 deletions(-) + +diff --git a/odb/gcc.hxx b/odb/gcc.hxx +index 858d685..a22357d 100644 +--- a/odb/gcc.hxx ++++ b/odb/gcc.hxx +@@ -7,9 +7,12 @@ + + #include + +-#if BUILDING_GCC_MAJOR >= 6 +-# include // See gcc-fwd.hxx. +-#endif ++// Actually, let's keep it out. With it included we can compile in C++98 ++// but not in C++14 (GCC 6 default). ++// ++// #if BUILDING_GCC_MAJOR >= 6 ++// # include // See gcc-fwd.hxx. ++// #endif + + // GCC header includes to get the plugin and parse tree declarations. + // The order is important and doesn't follow any kind of logic. +diff --git a/odb/parser.cxx b/odb/parser.cxx +index feda9d4..a9d22fb 100644 +--- a/odb/parser.cxx ++++ b/odb/parser.cxx +@@ -1831,6 +1831,8 @@ create_type (tree t, + // the array type. In other words, we view it as "constant array" + // rather than "array of constant elements". + // ++ using semantics::array; // vs std::array. ++ + tree bt (TREE_TYPE (t)); + tree bt_mv (TYPE_MAIN_VARIANT (bt)); + type& bt_node (emit_type (bt_mv, access::public_, file, line, clmn)); +-- +2.25.0 + diff --git a/package/odb/0005-Fix-bug-in-GCC-6-input_location-translation.patch b/package/odb/0005-Fix-bug-in-GCC-6-input_location-translation.patch new file mode 100644 index 00000000..af682502 --- /dev/null +++ b/package/odb/0005-Fix-bug-in-GCC-6-input_location-translation.patch @@ -0,0 +1,34 @@ +From 029687831099bf1dcc944517f9e48af1db5b0361 Mon Sep 17 00:00:00 2001 +From: Boris Kolpackov +Date: Fri, 23 Dec 2016 10:18:01 +0200 +Subject: [PATCH] Fix bug in GCC 6 input_location translation + +Upstream: https://git.codesynthesis.com/cgit/odb/odb/commit/?id=ec777147024fde72e4411cc6b1e1e49f4a1d1804 +Signed-off-by: Kamel Bouhara +--- + odb/cxx-lexer.cxx | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/odb/cxx-lexer.cxx b/odb/cxx-lexer.cxx +index 64df296..ae045d9 100644 +--- a/odb/cxx-lexer.cxx ++++ b/odb/cxx-lexer.cxx +@@ -106,7 +106,15 @@ next (string& token, tree* node) + location_t cxx_pragma_lexer:: + location () const + { ++ // Starting from GCC 6 the input location seem to require the same ++ // translation as what we do in real_source_location(). ++ // ++#if BUILDING_GCC_MAJOR >= 6 ++ return linemap_resolve_location ( ++ line_table, input_location, LRK_MACRO_EXPANSION_POINT, 0); ++#else + return input_location; ++#endif + } + + string cxx_pragma_lexer:: +-- +2.25.0 + diff --git a/package/odb/0006-Adapt-to-changes-in-GCC-8.patch b/package/odb/0006-Adapt-to-changes-in-GCC-8.patch new file mode 100644 index 00000000..2f907de6 --- /dev/null +++ b/package/odb/0006-Adapt-to-changes-in-GCC-8.patch @@ -0,0 +1,228 @@ +From aca617685045b1984c19c415a474893407578394 Mon Sep 17 00:00:00 2001 +From: Boris Kolpackov +Date: Tue, 7 Nov 2017 14:58:43 +0200 +Subject: [PATCH] Adapt to changes in GCC 8 + +Upstream: https://git.codesynthesis.com/cgit/odb/odb/commit/?id=356630ced28f3101e8e2d88e3c52f8d3008515c7 +Signed-off-by: Kamel Bouhara +--- + odb/cxx-lexer.cxx | 16 ++++++++++++++-- + odb/parser.cxx | 27 ++++++++++++++++++++++++++- + odb/processor.cxx | 30 ++++++++++++++++++++++-------- + odb/semantics/elements.cxx | 8 ++++++++ + odb/validator.cxx | 10 +++++++++- + 5 files changed, 79 insertions(+), 12 deletions(-) + +diff --git a/odb/cxx-lexer.cxx b/odb/cxx-lexer.cxx +index ae045d9..cfebbb5 100644 +--- a/odb/cxx-lexer.cxx ++++ b/odb/cxx-lexer.cxx +@@ -93,7 +93,13 @@ next (string& token, tree* node) + // See if this is a keyword using the C++ parser machinery and + // the current C++ dialect. + // +- if (*type_ == CPP_NAME && C_IS_RESERVED_WORD (*token_)) ++ if (*type_ == CPP_NAME && ++#if BUILDING_GCC_MAJOR >= 8 ++ IDENTIFIER_KEYWORD_P (*token_) ++#else ++ C_IS_RESERVED_WORD (*token_) ++#endif ++ ) + *type_ = CPP_KEYWORD; + + if (node != 0 && node != token_) +@@ -281,7 +287,13 @@ next (string& token, tree* node) + // + tree id (get_identifier (name)); + +- if (C_IS_RESERVED_WORD (id)) ++ if ( ++#if BUILDING_GCC_MAJOR >= 8 ++ IDENTIFIER_KEYWORD_P (id) ++#else ++ C_IS_RESERVED_WORD (id) ++#endif ++ ) + tt = CPP_KEYWORD; + + if (node != 0) +diff --git a/odb/parser.cxx b/odb/parser.cxx +index a9d22fb..927063b 100644 +--- a/odb/parser.cxx ++++ b/odb/parser.cxx +@@ -889,8 +889,23 @@ collect (tree ns) + + // Traverse namespaces. + // +- for (decl = level->namespaces; decl != NULL_TREE; decl = TREE_CHAIN (decl)) ++ for ( ++#if BUILDING_GCC_MAJOR >= 8 ++ decl = level->names; ++#else ++ decl = level->namespaces; ++#endif ++ decl != NULL_TREE; ++ decl = TREE_CHAIN (decl)) + { ++#if BUILDING_GCC_MAJOR >= 8 ++ // Now namespaces are interleaved with other declarations. In fact, we ++ // could probably collect everything in a single pass. ++ // ++ if (TREE_CODE (decl) != NAMESPACE_DECL) ++ continue; ++#endif ++ + if (!DECL_IS_BUILTIN (decl) || DECL_NAMESPACE_STD_P (decl)) + { + if (trace) +@@ -960,9 +975,15 @@ emit () + // approximation for this namespace origin. Also resolve + // the tree node for this namespace. + // ++#if BUILDING_GCC_MAJOR >= 8 ++ tree tree_node ( ++ get_namespace_binding ( ++ scope_->tree_node (), get_identifier (n.c_str ()))); ++#else + tree tree_node ( + namespace_binding ( + get_identifier (n.c_str ()), scope_->tree_node ())); ++#endif + + namespace_& node (unit_->new_node (f, l, c, tree_node)); + unit_->new_edge (*scope_, node, n); +@@ -2218,7 +2239,11 @@ fq_scope (tree decl) + + // If this is an inline namespace, pretend it doesn't exist. + // ++#if BUILDING_GCC_MAJOR >= 8 ++ if (!is_nested_namespace (prev, scope, true)) ++#else + if (!is_associated_namespace (prev, scope)) ++#endif + { + tree n = DECL_NAME (scope); + +diff --git a/odb/processor.cxx b/odb/processor.cxx +index 3a2cb1d..bea3624 100644 +--- a/odb/processor.cxx ++++ b/odb/processor.cxx +@@ -423,12 +423,17 @@ namespace + + // OVL_* macros work for both FUNCTION_DECL and OVERLOAD. + // +- for (tree o (BASELINK_FUNCTIONS (decl)); +- o != 0; +- o = OVL_NEXT (o)) ++#if BUILDING_GCC_MAJOR >= 8 ++ for (ovl_iterator i (BASELINK_FUNCTIONS (decl)); i; ++i) ++#else ++ for (tree o (BASELINK_FUNCTIONS (decl)); o != 0; o = OVL_NEXT (o)) ++#endif + { ++#if BUILDING_GCC_MAJOR >= 8 ++ tree f (*i); ++#else + tree f (OVL_CURRENT (o)); +- ++#endif + // We are only interested in public non-static member + // functions. Note that TREE_PUBLIC() returns something + // other than what we need. +@@ -530,12 +535,17 @@ namespace + { + // OVL_* macros work for both FUNCTION_DECL and OVERLOAD. + // +- for (tree o (BASELINK_FUNCTIONS (decl)); +- o != 0; +- o = OVL_NEXT (o)) ++#if BUILDING_GCC_MAJOR >= 8 ++ for (ovl_iterator i (BASELINK_FUNCTIONS (decl)); i; ++i) ++#else ++ for (tree o (BASELINK_FUNCTIONS (decl)); o != 0; o = OVL_NEXT (o)) ++#endif + { ++#if BUILDING_GCC_MAJOR >= 8 ++ tree f (*i); ++#else + tree f (OVL_CURRENT (o)); +- ++#endif + // We are only interested in non-static member functions. + // + if (!DECL_NONSTATIC_MEMBER_FUNCTION_P (f)) +@@ -2934,7 +2944,11 @@ namespace + { + tree prev (CP_DECL_CONTEXT (scope)); + ++#if BUILDING_GCC_MAJOR >= 8 ++ if (!is_nested_namespace (prev, scope, true)) ++#else + if (!is_associated_namespace (prev, scope)) ++#endif + break; + + scope = prev; +diff --git a/odb/semantics/elements.cxx b/odb/semantics/elements.cxx +index 399d5e9..4c380d8 100644 +--- a/odb/semantics/elements.cxx ++++ b/odb/semantics/elements.cxx +@@ -126,7 +126,11 @@ namespace semantics + { + tree prev (CP_DECL_CONTEXT (s)); + ++#if BUILDING_GCC_MAJOR >= 8 ++ if (!is_nested_namespace (prev, s, true)) ++#else + if (!is_associated_namespace (prev, s)) ++#endif + break; + + s = prev; +@@ -223,7 +227,11 @@ namespace semantics + { + // Check if this is an inline namespace and skip it if so. + // ++#if BUILDING_GCC_MAJOR >= 8 ++ if (is_nested_namespace (ns, new_ns, true)) ++#else + if (is_associated_namespace (ns, new_ns)) ++#endif + { + // Skip also the following scope operator. Strictly speaking + // there could be none (i.e., this is a name of an inline +diff --git a/odb/validator.cxx b/odb/validator.cxx +index 91d91e5..aac52e4 100644 +--- a/odb/validator.cxx ++++ b/odb/validator.cxx +@@ -520,9 +520,17 @@ namespace + // Figure out if we have a const version of the callback. OVL_* + // macros work for both FUNCTION_DECL and OVERLOAD. + // ++#if BUILDING_GCC_MAJOR >= 8 ++ for (ovl_iterator i (BASELINK_FUNCTIONS (decl)); i; ++i) ++#else + for (tree o (BASELINK_FUNCTIONS (decl)); o != 0; o = OVL_NEXT (o)) ++#endif + { ++#if BUILDING_GCC_MAJOR >= 8 ++ tree f (*i); ++#else + tree f (OVL_CURRENT (o)); ++#endif + if (DECL_CONST_MEMFUNC_P (f)) + { + c.set ("callback-const", true); +@@ -1223,7 +1231,7 @@ namespace + compiler, get_identifier ("has_lt_operator"), false, false); + + if (has_lt_operator_ != error_mark_node) +- has_lt_operator_ = OVL_CURRENT (has_lt_operator_); ++ has_lt_operator_ = OVL_FIRST (has_lt_operator_); + else + { + os << unit.file () << ": error: unable to resolve has_lt_operator " +-- +2.25.0 + diff --git a/package/odb/0007-Switch-to-C-11-get-rid-of-auto_ptr-use.patch b/package/odb/0007-Switch-to-C-11-get-rid-of-auto_ptr-use.patch new file mode 100644 index 00000000..e3fbc21a --- /dev/null +++ b/package/odb/0007-Switch-to-C-11-get-rid-of-auto_ptr-use.patch @@ -0,0 +1,351 @@ +From c5bea9562929c6b55ca208a530ae80033eeb1614 Mon Sep 17 00:00:00 2001 +From: Boris Kolpackov +Date: Tue, 7 Nov 2017 10:37:53 +0200 +Subject: [PATCH] Switch to C++11, get rid of auto_ptr use + +Upstream: https://git.codesynthesis.com/cgit/odb/odb/commit/?id=6e374de9ae2f2978f2fca3390aba4ea3f72bfade +Signed-off-by: Kamel Bouhara +--- + odb/Makefile.am | 5 +++++ + odb/context.cxx | 4 ++-- + odb/context.hxx | 4 ++-- + odb/generator.cxx | 18 +++++++++--------- + odb/options.cli | 4 ++-- + odb/parser.cxx | 14 ++++++++++---- + odb/parser.hxx | 7 ++++--- + odb/plugin.cxx | 10 +++++----- + odb/processor.cxx | 6 +++--- + odb/validator.cxx | 2 +- + 10 files changed, 43 insertions(+), 31 deletions(-) + +diff --git a/odb/Makefile.am b/odb/Makefile.am +index 2f01398..d9e83d7 100644 +--- a/odb/Makefile.am ++++ b/odb/Makefile.am +@@ -9,6 +9,11 @@ plugin_LTLIBRARIES = odb.la + + AM_CPPFLAGS = -I'$(top_builddir)' -I'$(top_srcdir)' + ++# Note: not passed by libtool when linking odb.so. Seems to be harmless for ++# now. ++# ++AM_CXXFLAGS = -std=c++0x ++ + EXTRA_DIST = common-query.hxx common.hxx context.hxx context.ixx cxx-lexer.hxx cxx-token.hxx diagnostics.hxx emitter.hxx features.hxx gcc-fwd.hxx gcc.hxx generate.hxx generator.hxx instance.hxx location.hxx lookup.hxx option-functions.hxx option-parsers.hxx option-types.hxx options.hxx options.ixx parser.hxx pragma.hxx processor.hxx profile.hxx relational/common-query.hxx relational/common.hxx relational/common.txx relational/context.hxx relational/context.ixx relational/generate.hxx relational/header.hxx relational/inline.hxx relational/model.hxx relational/mssql/common.hxx relational/mssql/context.hxx relational/mysql/common.hxx relational/mysql/context.hxx relational/oracle/common.hxx relational/oracle/context.hxx relational/pgsql/common.hxx relational/pgsql/context.hxx relational/processor.hxx relational/schema-source.hxx relational/schema.hxx relational/source.hxx relational/sqlite/common.hxx relational/sqlite/context.hxx relational/validator.hxx semantics.hxx semantics/class-template.hxx semantics/class.hxx semantics/derived.hxx semantics/elements.hxx semantics/elements.ixx semantics/enum.hxx semantics/fundamental.hxx semantics/namespace.hxx semantics/relational.hxx semantics/relational/changelog.hxx semantics/relational/changeset.hxx semantics/relational/column.hxx semantics/relational/deferrable.hxx semantics/relational/elements.hxx semantics/relational/elements.txx semantics/relational/foreign-key.hxx semantics/relational/index.hxx semantics/relational/key.hxx semantics/relational/model.hxx semantics/relational/name.hxx semantics/relational/primary-key.hxx semantics/relational/table.hxx semantics/template.hxx semantics/union-template.hxx semantics/union.hxx semantics/unit.hxx sql-lexer.hxx sql-lexer.ixx sql-token.hxx sql-token.ixx traversal.hxx traversal/class-template.hxx traversal/class.hxx traversal/derived.hxx traversal/elements.hxx traversal/enum.hxx traversal/fundamental.hxx traversal/namespace.hxx traversal/relational.hxx traversal/relational/changelog.hxx traversal/relational/changeset.hxx traversal/relational/column.hxx traversal/relational/elements.hxx traversal/relational/foreign-key.hxx traversal/relational/index.hxx traversal/relational/key.hxx traversal/relational/model.hxx traversal/relational/primary-key.hxx traversal/relational/table.hxx traversal/template.hxx traversal/union-template.hxx traversal/union.hxx traversal/unit.hxx validator.hxx version.hxx options.cli + + # Plugin. +diff --git a/odb/context.cxx b/odb/context.cxx +index d62fa88..87f1c32 100644 +--- a/odb/context.cxx ++++ b/odb/context.cxx +@@ -564,14 +564,14 @@ namespace + }; + } + +-auto_ptr ++unique_ptr + create_context (ostream& os, + semantics::unit& unit, + options const& ops, + features& f, + semantics::relational::model* m) + { +- auto_ptr r; ++ unique_ptr r; + + switch (ops.database ()[0]) + { +diff --git a/odb/context.hxx b/odb/context.hxx +index 351bc61..10de237 100644 +--- a/odb/context.hxx ++++ b/odb/context.hxx +@@ -13,7 +13,7 @@ + #include + #include + #include +-#include // std::auto_ptr ++#include // std::unique_ptr + #include + #include // std::size_t + #include +@@ -1691,7 +1691,7 @@ private: + + // Create concrete database context. + // +-std::auto_ptr ++std::unique_ptr + create_context (std::ostream&, + semantics::unit&, + options const&, +diff --git a/odb/generator.cxx b/odb/generator.cxx +index 6aa5151..266b75f 100644 +--- a/odb/generator.cxx ++++ b/odb/generator.cxx +@@ -4,7 +4,7 @@ + + #include // std::toupper, std::is{alpha,upper,lower} + #include +-#include // std::auto_ptr ++#include // std::unique_ptr + #include + #include + #include +@@ -141,7 +141,7 @@ generate (options const& ops, + + if (gen_schema) + { +- auto_ptr ctx (create_context (cerr, unit, ops, fts, 0)); ++ unique_ptr ctx (create_context (cerr, unit, ops, fts, 0)); + + switch (db) + { +@@ -471,7 +471,7 @@ generate (options const& ops, + // + if (gen_cxx) + { +- auto_ptr ctx ( ++ unique_ptr ctx ( + create_context (hxx, unit, ops, fts, model.get ())); + + sloc_filter sloc (ctx->os); +@@ -581,7 +581,7 @@ generate (options const& ops, + // + if (gen_cxx) + { +- auto_ptr ctx ( ++ unique_ptr ctx ( + create_context (ixx, unit, ops, fts, model.get ())); + + sloc_filter sloc (ctx->os); +@@ -641,7 +641,7 @@ generate (options const& ops, + // + if (gen_cxx && (db != database::common || md == multi_database::dynamic)) + { +- auto_ptr ctx ( ++ unique_ptr ctx ( + create_context (cxx, unit, ops, fts, model.get ())); + + sloc_filter sloc (ctx->os); +@@ -734,7 +734,7 @@ generate (options const& ops, + // + if (gen_sep_schema) + { +- auto_ptr ctx ( ++ unique_ptr ctx ( + create_context (sch, unit, ops, fts, model.get ())); + + sloc_filter sloc (ctx->os); +@@ -799,7 +799,7 @@ generate (options const& ops, + // + if (gen_sql_schema) + { +- auto_ptr ctx ( ++ unique_ptr ctx ( + create_context (sql, unit, ops, fts, model.get ())); + + switch (db) +@@ -865,7 +865,7 @@ generate (options const& ops, + // + { + ofstream& mig (*mig_pre[i]); +- auto_ptr ctx (create_context (mig, unit, ops, fts, 0)); ++ unique_ptr ctx (create_context (mig, unit, ops, fts, 0)); + + switch (db) + { +@@ -908,7 +908,7 @@ generate (options const& ops, + // + { + ofstream& mig (*mig_post[i]); +- auto_ptr ctx (create_context (mig, unit, ops, fts, 0)); ++ unique_ptr ctx (create_context (mig, unit, ops, fts, 0)); + + switch (db) + { +diff --git a/odb/options.cli b/odb/options.cli +index cf278cb..c994975 100644 +--- a/odb/options.cli ++++ b/odb/options.cli +@@ -211,10 +211,10 @@ class options + \cb{db pointer} pragma will use this pointer by default. The value + of this option can be \cb{*} which denotes the raw pointer and is + the default, or qualified name of a smart pointer class template, +- for example, \cb{std::auto_ptr}. In the latter case, the ODB compiler ++ for example, \cb{std::shared_ptr}. In the latter case, the ODB compiler + constructs the object or view pointer by adding a single template + argument of the object or view type to the qualified name, for example +- \cb{std::auto_ptr}. The ODB runtime uses object and view ++ \cb{std::shared_ptr}. The ODB runtime uses object and view + pointers to return, and, in case of objects, pass and cache + dynamically allocated instances of object and view types. + +diff --git a/odb/parser.cxx b/odb/parser.cxx +index 927063b..30e45af 100644 +--- a/odb/parser.cxx ++++ b/odb/parser.cxx +@@ -26,7 +26,7 @@ public: + + impl (options const&, loc_pragmas&, ns_loc_pragmas&, decl_pragmas&); + +- auto_ptr ++ unique_ptr + parse (tree global_scope, path const& main_file); + + private: +@@ -728,10 +728,10 @@ impl (options const& ops, + { + } + +-auto_ptr parser::impl:: ++unique_ptr parser::impl:: + parse (tree global_scope, path const& main_file) + { +- auto_ptr u (new unit (main_file)); ++ unique_ptr u (new unit (main_file)); + u->insert (global_namespace, *u); + process_named_pragmas (global_namespace, *u); + +@@ -2263,6 +2263,12 @@ fq_scope (tree decl) + // parser + // + ++parser:: ++~parser () ++{ ++ // Needs parser::impl definition. ++} ++ + parser:: + parser (options const& ops, + loc_pragmas& lp, +@@ -2272,7 +2278,7 @@ parser (options const& ops, + { + } + +-auto_ptr parser:: ++unique_ptr parser:: + parse (tree global_scope, path const& main_file) + { + return impl_->parse (global_scope, main_file); +diff --git a/odb/parser.hxx b/odb/parser.hxx +index 80e4aa4..648337f 100644 +--- a/odb/parser.hxx ++++ b/odb/parser.hxx +@@ -7,7 +7,7 @@ + + #include + +-#include // std::auto_ptr ++#include // std::unique_ptr + + #include + #include +@@ -18,9 +18,10 @@ class parser + public: + class failed {}; + ++ ~parser (); + parser (options const&, loc_pragmas&, ns_loc_pragmas&, decl_pragmas&); + +- std::auto_ptr ++ std::unique_ptr + parse (tree global_scope, semantics::path const& main_file); + + private: +@@ -31,7 +32,7 @@ private: + + private: + class impl; +- std::auto_ptr impl_; ++ std::unique_ptr impl_; + }; + + #endif // ODB_PARSER_HXX +diff --git a/odb/plugin.cxx b/odb/plugin.cxx +index 779faed..0fac632 100644 +--- a/odb/plugin.cxx ++++ b/odb/plugin.cxx +@@ -8,7 +8,7 @@ + #include // stat + #include // stat + +-#include // std::auto_ptr ++#include // std::unique_ptr + #include + #include + #include // std::strcpy, std::strstr +@@ -39,7 +39,7 @@ using cutl::fs::invalid_path; + typedef vector paths; + + int plugin_is_GPL_compatible; +-auto_ptr options_; ++unique_ptr options_; + paths profile_paths_; + path file_; // File being compiled. + paths inputs_; // List of input files in at-once mode or just file_. +@@ -222,7 +222,7 @@ gate_callback (void*, void*) + // Parse the GCC tree to semantic graph. + // + parser p (*options_, loc_pragmas_, ns_loc_pragmas_, decl_pragmas_); +- auto_ptr u (p.parse (global_namespace, file_)); ++ unique_ptr u (p.parse (global_namespace, file_)); + + features f; + +@@ -377,14 +377,14 @@ plugin_init (plugin_name_args* plugin_info, plugin_gcc_version*) + oi[2].arg = &pd; + + cli::argv_file_scanner scan (argc, &argv[0], oi, 3); +- auto_ptr ops ( ++ unique_ptr ops ( + new options (scan, cli::unknown_mode::fail, cli::unknown_mode::fail)); + + // Process options. + // + process_options (*ops); + +- options_ = ops; ++ options_ = move (ops); + pragma_db_ = db; + pragma_multi_ = options_->multi_database (); + } +diff --git a/odb/processor.cxx b/odb/processor.cxx +index bea3624..c787e0d 100644 +--- a/odb/processor.cxx ++++ b/odb/processor.cxx +@@ -120,8 +120,8 @@ namespace + // both the wrapper type and the wrapped type must be const. + // To see why, consider these possibilities: + // +- // auto_ptr - can modify by setting a new pointer +- // const auto_ptr - can modify by changing the pointed-to value ++ // unique_ptr - can modify by setting a new pointer ++ // const unique_ptr - can modify by changing the pointed-to value + // + if (const_type (m.type ()) && + !(id (m) || version (m) || m.count ("inverse"))) +@@ -3086,7 +3086,7 @@ process (options const& ops, + { + try + { +- auto_ptr ctx (create_context (cerr, unit, ops, f, 0)); ++ unique_ptr ctx (create_context (cerr, unit, ops, f, 0)); + + // Common processing. + // +diff --git a/odb/validator.cxx b/odb/validator.cxx +index aac52e4..196386c 100644 +--- a/odb/validator.cxx ++++ b/odb/validator.cxx +@@ -1516,7 +1516,7 @@ validate (options const& ops, + if (!valid) + throw validator_failed (); + +- auto_ptr ctx (create_context (cerr, u, ops, f, 0)); ++ unique_ptr ctx (create_context (cerr, u, ops, f, 0)); + + if (pass == 1) + { +-- +2.25.0 + diff --git a/package/odb/0008-Fix-GCC-8-adaptation-to-be-compatible-with-previous-.patch b/package/odb/0008-Fix-GCC-8-adaptation-to-be-compatible-with-previous-.patch new file mode 100644 index 00000000..818a95db --- /dev/null +++ b/package/odb/0008-Fix-GCC-8-adaptation-to-be-compatible-with-previous-.patch @@ -0,0 +1,33 @@ +From 8cc165a2f7f945db36a18e462138553a000292cd Mon Sep 17 00:00:00 2001 +From: Boris Kolpackov +Date: Tue, 7 Nov 2017 16:57:35 +0200 +Subject: [PATCH] Fix GCC 8 adaptation to be compatible with previous + versions + +Upstream: https://git.codesynthesis.com/cgit/odb/odb/commit/?id=006bbc5748a8197d7874550cc9186545f1c55ad8 +Signed-off-by: Kamel Bouhara +--- + odb/validator.cxx | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/odb/validator.cxx b/odb/validator.cxx +index 196386c..f0edaaf 100644 +--- a/odb/validator.cxx ++++ b/odb/validator.cxx +@@ -1231,7 +1231,13 @@ namespace + compiler, get_identifier ("has_lt_operator"), false, false); + + if (has_lt_operator_ != error_mark_node) ++ { ++#if BUILDING_GCC_MAJOR >= 8 + has_lt_operator_ = OVL_FIRST (has_lt_operator_); ++#else ++ has_lt_operator_ = OVL_CURRENT (has_lt_operator_); ++#endif ++ } + else + { + os << unit.file () << ": error: unable to resolve has_lt_operator " +-- +2.25.0 + diff --git a/package/odb/0009-Handle-namespace-aliases-when-parsing-GCC-tree.patch b/package/odb/0009-Handle-namespace-aliases-when-parsing-GCC-tree.patch new file mode 100644 index 00000000..dbe2d533 --- /dev/null +++ b/package/odb/0009-Handle-namespace-aliases-when-parsing-GCC-tree.patch @@ -0,0 +1,30 @@ +From 2d37e44753c1e67de4658b6fdf95760432c74ead Mon Sep 17 00:00:00 2001 +From: Boris Kolpackov +Date: Fri, 5 Oct 2018 07:20:18 +0200 +Subject: [PATCH] Handle namespace aliases when parsing GCC tree + +Upstream: https://git.codesynthesis.com/cgit/odb/odb/commit/?id=3a1788234bfaa96ee093b68e9ba02cf7d5bdffe6 +Signed-off-by: Kamel Bouhara +--- + odb/parser.cxx | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/odb/parser.cxx b/odb/parser.cxx +index 30e45af..03bcb01 100644 +--- a/odb/parser.cxx ++++ b/odb/parser.cxx +@@ -906,6 +906,11 @@ collect (tree ns) + continue; + #endif + ++ // Ignore namespace aliases. ++ // ++ if (DECL_NAMESPACE_ALIAS (decl)) ++ continue; ++ + if (!DECL_IS_BUILTIN (decl) || DECL_NAMESPACE_STD_P (decl)) + { + if (trace) +-- +2.25.0 + diff --git a/package/odb/0010-Add-initial-support-for-GCC-9.patch b/package/odb/0010-Add-initial-support-for-GCC-9.patch new file mode 100644 index 00000000..c6c4c0a5 --- /dev/null +++ b/package/odb/0010-Add-initial-support-for-GCC-9.patch @@ -0,0 +1,233 @@ +From cd9a15f42ef35449a8ad480352f9f5495eb37c30 Mon Sep 17 00:00:00 2001 +From: Boris Kolpackov +Date: Fri, 15 Mar 2019 17:37:28 +0200 +Subject: [PATCH] Add initial support for GCC 9 + +Upstream: https://git.codesynthesis.com/cgit/odb/odb/commit/?id=841140bbf13ae2bfaa5978a181718cda0a8edae7 +Signed-off-by: Kamel Bouhara +--- + odb/cxx-lexer.cxx | 33 +++++++++++++++++++++++++++------ + odb/gcc.hxx | 32 ++++++++++++++++++++++++++++++++ + odb/include.cxx | 3 +++ + odb/plugin.cxx | 45 ++++++++++++++++++++++++++++++--------------- + 4 files changed, 92 insertions(+), 21 deletions(-) + +diff --git a/odb/cxx-lexer.cxx b/odb/cxx-lexer.cxx +index cfebbb5..acd13be 100644 +--- a/odb/cxx-lexer.cxx ++++ b/odb/cxx-lexer.cxx +@@ -143,12 +143,20 @@ translate () + // Diagnostics callback. + // + extern "C" bool +-cpp_error_callback ( ++cpp_diagnostic_callback ( + cpp_reader* reader, ++#if BUILDING_GCC_MAJOR >= 9 ++ cpp_diagnostic_level level, ++#else + int level, ++#endif + #if BUILDING_GCC_MAJOR > 4 || BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR > 5 ++#if BUILDING_GCC_MAJOR >= 9 ++ cpp_warning_reason, ++#else + int /*reason*/, // Added in GCC 4.6.0. + #endif ++#endif + #if BUILDING_GCC_MAJOR <= 5 + location_t, + unsigned int, +@@ -185,10 +193,14 @@ cpp_error_callback ( + vfprintf (stderr, msg, *ap); + fprintf (stderr, "\n"); + +- // By resetting the error callback we indicate to cxx_string_lexer +- // that there was an error. ++ // By resetting the callback we indicate to cxx_string_lexer that there ++ // was an error. + // ++#if BUILDING_GCC_MAJOR >= 9 ++ cpp_get_callbacks (reader)->diagnostic = 0; ++#else + cpp_get_callbacks (reader)->error = 0; ++#endif + return true; + } + +@@ -247,7 +259,12 @@ start (string const& data) + // The previous lexing session should have popped the buffer. + // + assert (cpp_get_buffer (reader_) == 0); +- callbacks_->error = &cpp_error_callback; ++ ++#if BUILDING_GCC_MAJOR >= 9 ++ callbacks_->diagnostic = &cpp_diagnostic_callback; ++#else ++ callbacks_->error = &cpp_diagnostic_callback; ++#endif + + data_ = data; + buf_ = data; +@@ -267,10 +284,14 @@ next (string& token, tree* node) + token.clear (); + cpp_token const* t (cpp_get_token (reader_)); + +- // If there was an error, the error callback will be reset to 0. +- // Diagnostics has already been issued. ++ // If there was an error, the callback will be reset to 0. Diagnostics has ++ // already been issued. + // ++#if BUILDING_GCC_MAJOR >= 9 ++ if (callbacks_->diagnostic == 0) ++#else + if (callbacks_->error == 0) ++#endif + throw invalid_input (); + + cpp_ttype tt (t->type); +diff --git a/odb/gcc.hxx b/odb/gcc.hxx +index a22357d..0304192 100644 +--- a/odb/gcc.hxx ++++ b/odb/gcc.hxx +@@ -158,4 +158,36 @@ gcc_tree_code_name (gcc_tree_code_type tc) {return tree_code_name[tc];} + # define anon_aggrname_p(X) ANON_AGGRNAME_P(X) + #endif + ++// In GCC 9: ++// ++// INCLUDED_FROM Became linemap_included_from_linemap(). ++// LAST_SOURCE_LINE Was removed apparently as no longer used. Studying ++// the line-map.h diff from 8.3 suggests that the old ++// implementation should still work. ++// ++#if BUILDING_GCC_MAJOR >= 9 ++ ++inline const line_map_ordinary* ++INCLUDED_FROM (line_maps* set, const line_map_ordinary* map) ++{ ++ return linemap_included_from_linemap (set, map); ++} ++ ++inline source_location ++LAST_SOURCE_LINE_LOCATION (const line_map_ordinary* map) ++{ ++ return (((map[1].start_location - 1 ++ - map->start_location) ++ & ~((1 << map->m_column_and_range_bits) - 1)) ++ + map->start_location); ++} ++ ++inline linenum_type ++LAST_SOURCE_LINE (const line_map_ordinary* map) ++{ ++ return SOURCE_LINE (map, LAST_SOURCE_LINE_LOCATION (map)); ++} ++ ++#endif ++ + #endif // ODB_GCC_HXX +diff --git a/odb/include.cxx b/odb/include.cxx +index 08c93ce..0082f5e 100644 +--- a/odb/include.cxx ++++ b/odb/include.cxx +@@ -584,6 +584,9 @@ namespace + + for (include_map::iterator i (imap.begin ()), e (imap.end ()); i != e; ++i) + { ++ // Note that the LAST_SOURCE_LINE value of a map that includes another ++ // map is the line of that include. ++ + /* + cerr << endl + << i->first << " included from" << endl; +diff --git a/odb/plugin.cxx b/odb/plugin.cxx +index 0fac632..892f27c 100644 +--- a/odb/plugin.cxx ++++ b/odb/plugin.cxx +@@ -44,10 +44,15 @@ paths profile_paths_; + path file_; // File being compiled. + paths inputs_; // List of input files in at-once mode or just file_. + +-bool (*cpp_error_prev) ( ++bool (*cpp_diagnostic_prev) ( + cpp_reader*, ++#if BUILDING_GCC_MAJOR >= 9 ++ cpp_diagnostic_level, ++ cpp_warning_reason, ++#else + int, + int, ++#endif + #if BUILDING_GCC_MAJOR >= 6 + rich_location*, + #else +@@ -58,17 +63,22 @@ bool (*cpp_error_prev) ( + va_list*); + + static bool +-cpp_error_filter (cpp_reader* r, +- int level, +- int reason, ++cpp_diagnostic_filter (cpp_reader* r, ++#if BUILDING_GCC_MAJOR >= 9 ++ cpp_diagnostic_level level, ++ cpp_warning_reason reason, ++#else ++ int level, ++ int reason, ++#endif + #if BUILDING_GCC_MAJOR >= 6 +- rich_location* l, ++ rich_location* l, + #else +- location_t l, +- unsigned int column_override, ++ location_t l, ++ unsigned int column_override, + #endif +- const char* msg, +- va_list* ap) ++ const char* msg, ++ va_list* ap) + { + // #pragma once in the main file. Note that the message that we get is + // potentially translated so we search for the substring (there is +@@ -80,7 +90,7 @@ cpp_error_filter (cpp_reader* r, + if (strstr (msg, "#pragma once") != 0) + return true; + +- return cpp_error_prev ( ++ return cpp_diagnostic_prev ( + r, + level, + reason, +@@ -119,15 +129,20 @@ start_unit_callback (void*, void*) + // + cpp_callbacks* cb (cpp_get_callbacks (parse_in)); + +- if (cb->error == 0) ++#if BUILDING_GCC_MAJOR >= 9 ++ cpp_diagnostic_prev = cb->diagnostic; ++ cb->diagnostic = &cpp_diagnostic_filter; ++#else ++ cpp_diagnostic_prev = cb->error; ++ cb->error = &cpp_diagnostic_filter; ++#endif ++ ++ if (cpp_diagnostic_prev == 0) + { +- cerr << "ice: expected cpp error callback to be set" << endl; ++ cerr << "ice: expected cpp diagnostic callback to be set" << endl; + exit (1); + } + +- cpp_error_prev = cb->error; +- cb->error = &cpp_error_filter; +- + // Set the directory of the main file (stdin) to that of the orginal + // file so that relative inclusion works. Also adjust the path and + // re-stat the file so that #pragma once works. +-- +2.25.0 + diff --git a/package/odb/0011-Adjust-to-changes-in-GCC-10.patch b/package/odb/0011-Adjust-to-changes-in-GCC-10.patch new file mode 100644 index 00000000..0da8b09b --- /dev/null +++ b/package/odb/0011-Adjust-to-changes-in-GCC-10.patch @@ -0,0 +1,97 @@ +From 060bb7eb4d008fbd4a9fa8ef7c5e33c9e483eb52 Mon Sep 17 00:00:00 2001 +From: Boris Kolpackov +Date: Wed, 17 Jun 2020 11:22:11 +0200 +Subject: [PATCH] Adjust to changes in GCC 10 + +Upstream: https://git.codesynthesis.com/cgit/odb/odb/commit/?id=060bb7eb4d008fbd4a9fa8ef7c5e33c9e483eb52 +Signed-off-by: Thomas Petazzoni +--- + odb/gcc.hxx | 7 +++++-- + odb/parser.cxx | 8 ++++---- + odb/semantics/elements.cxx | 4 ++-- + 3 files changed, 11 insertions(+), 8 deletions(-) + +diff --git a/odb/gcc.hxx b/odb/gcc.hxx +index 9b644d7..af0e2a0 100644 +--- a/odb/gcc.hxx ++++ b/odb/gcc.hxx +@@ -151,10 +151,13 @@ gcc_tree_code_name (gcc_tree_code_type tc) {return tree_code_name[tc];} + #define DECL_CHAIN(x) TREE_CHAIN(x) + #endif + +-// In GCC 6, ANON_AGGRNAME_P became anon_aggrname_p(). ++// In GCC 6 ANON_AGGRNAME_P became anon_aggrname_p(). ++// In GCC 10 anon_aggrname_p() became IDENTIFIER_ANON_P. + // + #if BUILDING_GCC_MAJOR < 6 +-# define anon_aggrname_p(X) ANON_AGGRNAME_P(X) ++# define IDENTIFIER_ANON_P(X) ANON_AGGRNAME_P(X) ++#elif BUILDING_GCC_MAJOR < 10 ++# define IDENTIFIER_ANON_P(X) anon_aggrname_p(X) + #endif + + // In GCC 9: +diff --git a/odb/parser.cxx b/odb/parser.cxx +index 69d9b28..58388c9 100644 +--- a/odb/parser.cxx ++++ b/odb/parser.cxx +@@ -1103,14 +1103,14 @@ emit_type_decl (tree decl) + // says that in typedef struct {} S; S becomes struct's + // name. + // +- if (anon_aggrname_p (decl_name)) ++ if (IDENTIFIER_ANON_P (decl_name)) + { + tree d (TYPE_NAME (t)); + + if (d != NULL_TREE && + !DECL_ARTIFICIAL (d) && + DECL_NAME (d) != NULL_TREE && +- !anon_aggrname_p (DECL_NAME (d))) ++ !IDENTIFIER_ANON_P (DECL_NAME (d))) + { + decl = d; + decl_name = DECL_NAME (decl); +@@ -1727,7 +1727,7 @@ create_type (tree t, + ts << "start anon/stub " << gcc_tree_code_name(tc) << " at " + << file << ":" << line << endl; + +- if (d == NULL_TREE || anon_aggrname_p (DECL_NAME (d))) ++ if (d == NULL_TREE || IDENTIFIER_ANON_P (DECL_NAME (d))) + { + if (tc == RECORD_TYPE) + r = &emit_class (t, file, line, clmn); +@@ -1824,7 +1824,7 @@ create_type (tree t, + ts << "start anon/stub " << gcc_tree_code_name(tc) << " at " + << file << ":" << line << endl; + +- if (d == NULL_TREE || anon_aggrname_p (DECL_NAME (d))) ++ if (d == NULL_TREE || IDENTIFIER_ANON_P (DECL_NAME (d))) + { + r = &emit_enum (t, access, file, line, clmn); + } +diff --git a/odb/semantics/elements.cxx b/odb/semantics/elements.cxx +index f937f54..2d266cf 100644 +--- a/odb/semantics/elements.cxx ++++ b/odb/semantics/elements.cxx +@@ -75,7 +75,7 @@ namespace semantics + if (tree decl = TYPE_NAME (n)) + name = DECL_NAME (decl); + +- return name != 0 && anon_aggrname_p (name); ++ return name != 0 && IDENTIFIER_ANON_P (name); + } + + return true; +@@ -124,7 +124,7 @@ namespace semantics + if (tree decl = TYPE_NAME (type)) + { + name = DECL_NAME (decl); +- if (name != 0 && anon_aggrname_p (name)) ++ if (name != 0 && IDENTIFIER_ANON_P (name)) + return true; + + tree s (CP_DECL_CONTEXT (decl)); +-- +2.26.2 + diff --git a/package/odb/0012-Adjust-to-changes-in-GCC-11.patch b/package/odb/0012-Adjust-to-changes-in-GCC-11.patch new file mode 100644 index 00000000..e5601b04 --- /dev/null +++ b/package/odb/0012-Adjust-to-changes-in-GCC-11.patch @@ -0,0 +1,50 @@ +From 5a5656920c6b49902ae0da6a0da84efe6e5a66f0 Mon Sep 17 00:00:00 2001 +From: Boris Kolpackov +Date: Wed, 31 Mar 2021 10:45:21 +0200 +Subject: [PATCH] Adjust to changes in GCC 11 + +Upstream: https://git.codesynthesis.com/cgit/odb/odb/commit/?id=61d80f051293a7449a09081f60f48b8377bfbbad +Signed-off-by: Thomas Petazzoni +--- + odb/gcc.hxx | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +diff --git a/odb/gcc.hxx b/odb/gcc.hxx +index fb6a1bf..d8ad590 100644 +--- a/odb/gcc.hxx ++++ b/odb/gcc.hxx +@@ -164,6 +164,7 @@ gcc_tree_code_name (gcc_tree_code_type tc) {return tree_code_name[tc];} + // In GCC 9: + // + // INCLUDED_FROM Became linemap_included_from_linemap(). ++// + // LAST_SOURCE_LINE Was removed apparently as no longer used. Studying + // the line-map.h diff from 8.3 suggests that the old + // implementation should still work. +@@ -193,4 +194,23 @@ LAST_SOURCE_LINE (const line_map_ordinary* map) + + #endif + ++// In GCC 11: ++// ++// lookup_qualified_name() has a new interface. ++// ++// DECL_IS_BUILTIN became DECL_IS_UNDECLARED_BUILTIN. ++// ++#if BUILDING_GCC_MAJOR >= 11 ++ ++inline tree ++lookup_qualified_name (tree scope, tree name, bool type, bool complain) ++{ ++ return lookup_qualified_name ( ++ scope, name, (type ? LOOK_want::TYPE : LOOK_want::NORMAL), complain); ++} ++ ++#define DECL_IS_BUILTIN(decl) DECL_IS_UNDECLARED_BUILTIN(decl) ++ ++#endif ++ + #endif // ODB_GCC_HXX +-- +2.34.1 + diff --git a/package/odb/0013-Resolve-name-lookup-ambiguity-causing-error-with-GCC.patch b/package/odb/0013-Resolve-name-lookup-ambiguity-causing-error-with-GCC.patch new file mode 100644 index 00000000..fed8b631 --- /dev/null +++ b/package/odb/0013-Resolve-name-lookup-ambiguity-causing-error-with-GCC.patch @@ -0,0 +1,68 @@ +From 60460df2a6d7b43a860a8f8b614c049ec0127ea8 Mon Sep 17 00:00:00 2001 +From: Boris Kolpackov +Date: Wed, 7 Jul 2021 09:26:57 +0200 +Subject: [PATCH] Resolve name lookup ambiguity causing error with GCC 11 + +Upstream: https://git.codesynthesis.com/cgit/odb/odb/commit/?id=47035c0f72efd99a2210cd45db6e42423fb74533 +Signed-off-by: Thomas Petazzoni +--- + odb/relational/header.hxx | 2 ++ + odb/relational/source.hxx | 8 ++++++++ + 2 files changed, 10 insertions(+) + +diff --git a/odb/relational/header.hxx b/odb/relational/header.hxx +index 63dea09..d7f78fa 100644 +--- a/odb/relational/header.hxx ++++ b/odb/relational/header.hxx +@@ -50,6 +50,8 @@ namespace relational + + typedef typename member_base_impl::member_info member_info; + ++ using member_base_impl::container; ++ + virtual bool + pre (member_info& mi) + { +diff --git a/odb/relational/source.hxx b/odb/relational/source.hxx +index 716aa10..7da25fc 100644 +--- a/odb/relational/source.hxx ++++ b/odb/relational/source.hxx +@@ -1360,6 +1360,8 @@ namespace relational + + typedef typename member_base_impl::member_info member_info; + ++ using member_base_impl::container; ++ + virtual bool + pre (member_info& mi) + { +@@ -1744,6 +1746,8 @@ namespace relational + + typedef typename member_base_impl::member_info member_info; + ++ using member_base_impl::container; ++ + virtual bool + pre (member_info& mi) + { +@@ -2007,6 +2011,8 @@ namespace relational + + typedef typename member_base_impl::member_info member_info; + ++ using member_base_impl::container; ++ + virtual void + set_null (member_info&) = 0; + +@@ -2458,6 +2464,8 @@ namespace relational + + typedef typename member_base_impl::member_info member_info; + ++ using member_base_impl::container; ++ + virtual void + get_null (string const& var) const = 0; + +-- +2.34.1 + diff --git a/package/odb/0014-Update-ODB-compiler-plugin-to-work-with-GCC-14.patch b/package/odb/0014-Update-ODB-compiler-plugin-to-work-with-GCC-14.patch new file mode 100644 index 00000000..bcab6c12 --- /dev/null +++ b/package/odb/0014-Update-ODB-compiler-plugin-to-work-with-GCC-14.patch @@ -0,0 +1,66 @@ +From 4bd8af5dbd1f58bf631b4d5af90086f214553157 Mon Sep 17 00:00:00 2001 +From: Boris Kolpackov +Date: Thu, 25 Apr 2024 07:15:47 +0200 +Subject: [PATCH] Update ODB compiler plugin to work with GCC 14 + +Upstream: https://git.codesynthesis.com/cgit/odb/odb/commit/?id=acb0c5194690d2751d2211bf91aec21da2fadc26 +Signed-off-by: Thomas Petazzoni +--- + odb/cxx-lexer.cxx | 4 +++- + odb/processor.cxx | 18 +++++++++++++++--- + 2 files changed, 18 insertions(+), 4 deletions(-) + +diff --git a/odb/cxx-lexer.cxx b/odb/cxx-lexer.cxx +index acd13be6..e283abd5 100644 +--- a/odb/cxx-lexer.cxx ++++ b/odb/cxx-lexer.cxx +@@ -217,7 +217,9 @@ cxx_string_lexer () + linemap_init (&line_map_); + #endif + +-#if BUILDING_GCC_MAJOR > 4 || BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR > 6 ++#if BUILDING_GCC_MAJOR >= 14 ++ line_map_.m_round_alloc_size = ggc_round_alloc_size; ++#elif BUILDING_GCC_MAJOR > 4 || BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR > 6 + line_map_.round_alloc_size = ggc_round_alloc_size; + #endif + +diff --git a/odb/processor.cxx b/odb/processor.cxx +index c787e0d1..8f273545 100644 +--- a/odb/processor.cxx ++++ b/odb/processor.cxx +@@ -438,8 +438,14 @@ namespace + // functions. Note that TREE_PUBLIC() returns something + // other than what we need. + // +- if (!DECL_NONSTATIC_MEMBER_FUNCTION_P (f) || +- TREE_PRIVATE (f) || TREE_PROTECTED (f)) ++ if ( ++#if BUILDING_GCC_MAJOR >= 14 ++ !DECL_OBJECT_MEMBER_FUNCTION_P (f) ++#else ++ !DECL_NONSTATIC_MEMBER_FUNCTION_P (f) ++#endif ++ || TREE_PRIVATE (f) ++ || TREE_PROTECTED (f)) + continue; + + found_type r (k == "get" +@@ -548,7 +554,13 @@ namespace + #endif + // We are only interested in non-static member functions. + // +- if (!DECL_NONSTATIC_MEMBER_FUNCTION_P (f)) ++ if ( ++#if BUILDING_GCC_MAJOR >= 14 ++ !DECL_OBJECT_MEMBER_FUNCTION_P (f) ++#else ++ !DECL_NONSTATIC_MEMBER_FUNCTION_P (f) ++#endif ++ ) + continue; + + if ((k == "get" +-- +2.45.2 + diff --git a/package/odb/Config.in.host b/package/odb/Config.in.host new file mode 100644 index 00000000..e80a141b --- /dev/null +++ b/package/odb/Config.in.host @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HOST_ODB + bool "host-odb" + select BR2_NEEDS_HOST_GCC_PLUGIN_SUPPORT + help + This is a compiler that takes a specially crafted c++ header + file and auto-generates a schema that works with libodb and + the subsequent libodb-database library. + + https://www.codesynthesis.com/products/odb/ diff --git a/package/odb/odb.hash b/package/odb/odb.hash new file mode 100644 index 00000000..36c37458 --- /dev/null +++ b/package/odb/odb.hash @@ -0,0 +1,6 @@ +# From https://www.codesynthesis.com/products/odb/download.xhtml +sha1 810fc02e591429ed19f5a2699d144fb611fb121b odb-2.4.0.tar.bz2 + +# Locally computed +sha256 6785154fa98ea3977c8c2ab38cec16c4aa78c2c2039e80cd2908347b1c1d4198 odb-2.4.0.tar.bz2 +sha256 7983b82cb1f1686ac2b55420ded9c0f348f93dd17bf3e048ae3b25c1da51b80e LICENSE diff --git a/package/odb/odb.mk b/package/odb/odb.mk new file mode 100644 index 00000000..a2340699 --- /dev/null +++ b/package/odb/odb.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# odb +# +################################################################################ + +ODB_VERSION_MAJOR = 2.4 +ODB_VERSION = $(ODB_VERSION_MAJOR).0 +ODB_SOURCE = odb-$(ODB_VERSION).tar.bz2 +ODB_SITE = https://www.codesynthesis.com/download/odb/$(ODB_VERSION_MAJOR) +ODB_LICENSE = GPL-3.0 +ODB_LICENSE_FILES = LICENSE +# host-libodb is not needed to build host-odb, but it is needed to use +# the ODB compiler, as it install header files that are needed at +# runtime by the odb compiler. +HOST_ODB_DEPENDENCIES = host-libcutl host-libodb +ifeq ($(BR2_PACKAGE_LIBODB_BOOST),y) +HOST_ODB_DEPENDENCIES += host-libodb-boost +endif +HOST_ODB_CONF_ENV = CXXFLAGS="$(HOST_CXXFLAGS) -std=c++11" + +# Prevent odb from trying to install the gcc plugin into the hosts +# gcc plugin directory. Instead, this will install the gcc plugin +# into host/libexec/odb +HOST_ODB_CONF_OPTS = --with-gcc-plugin-dir=no + +$(eval $(host-autotools-package)) diff --git a/package/odhcp6c/Config.in b/package/odhcp6c/Config.in new file mode 100644 index 00000000..ca3a2f64 --- /dev/null +++ b/package/odhcp6c/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_ODHCP6C + bool "odhcp6c" + depends on BR2_USE_MMU # fork() + help + odhcp6c is a minimal DHCPv6 and RA-client for use in + embedded Linux systems, especially routers. + + https://git.openwrt.org/project/odhcp6c.git diff --git a/package/odhcp6c/odhcp6c.hash b/package/odhcp6c/odhcp6c.hash new file mode 100644 index 00000000..f1641d71 --- /dev/null +++ b/package/odhcp6c/odhcp6c.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 c5cadd71a72e94df6b664d3e9f0b1eeffa779ba9624ab35b6a93c7172fe378a0 odhcp6c-53f07e90b7f1da6977143a488dd5cb73a33b233b-git4.tar.gz +sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 COPYING diff --git a/package/odhcp6c/odhcp6c.mk b/package/odhcp6c/odhcp6c.mk new file mode 100644 index 00000000..dd3a9d3e --- /dev/null +++ b/package/odhcp6c/odhcp6c.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# odhcp6c +# +################################################################################ + +ODHCP6C_VERSION = 53f07e90b7f1da6977143a488dd5cb73a33b233b +ODHCP6C_SITE = https://git.openwrt.org/project/odhcp6c.git +ODHCP6C_SITE_METHOD = git +ODHCP6C_LICENSE = GPL-2.0 +ODHCP6C_LICENSE_FILES = COPYING + +define ODHCP6C_INSTALL_SCRIPT + $(INSTALL) -m 0755 -D $(@D)/odhcp6c-example-script.sh \ + $(TARGET_DIR)/usr/sbin/odhcp6c-update +endef + +ODHCP6C_POST_INSTALL_TARGET_HOOKS += ODHCP6C_INSTALL_SCRIPT + +ifeq ($(BR2_PACKAGE_LIBUBOX),y) +ODHCP6C_CONF_OPTS += -DUSE_LIBUBOX=1 +ODHCP6C_DEPENDENCIES += libubox +else +ODHCP6C_CONF_OPTS += -DUSE_LIBUBOX=0 +endif + +$(eval $(cmake-package)) diff --git a/package/odhcploc/Config.in b/package/odhcploc/Config.in new file mode 100644 index 00000000..74bf3630 --- /dev/null +++ b/package/odhcploc/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_ODHCPLOC + bool "odhcploc" + help + Open DHCP Locate (ODHCPLoc) is program to locate and + display active DHCP servers on a subnet. + Can be used to scan for rogue DHCP servers. + + http://odhcploc.sourceforge.net/ diff --git a/package/odhcploc/odhcploc.hash b/package/odhcploc/odhcploc.hash new file mode 100644 index 00000000..a1d9a566 --- /dev/null +++ b/package/odhcploc/odhcploc.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 b0360a3aece8a29d131531da7bfc36d57c30c6eed30ff1ea360f7cccea1d62d7 odhcploc-20111021.tar.gz +sha256 092a5b7be2a7ff088be7ec99adf68629509911b66f304b8ea0c835cdc138d544 COPYING diff --git a/package/odhcploc/odhcploc.mk b/package/odhcploc/odhcploc.mk new file mode 100644 index 00000000..bf4227ae --- /dev/null +++ b/package/odhcploc/odhcploc.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# odhcploc +# +################################################################################ + +ODHCPLOC_VERSION = 20111021 +ODHCPLOC_SITE = http://downloads.sourceforge.net/project/odhcploc/$(ODHCPLOC_VERSION) +ODHCPLOC_LICENSE = ISC +ODHCPLOC_LICENSE_FILES = COPYING + +define ODHCPLOC_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all +endef + +define ODHCPLOC_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) PREFIX=/usr DESTDIR=$(TARGET_DIR) -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/odroidc2-firmware/Config.in b/package/odroidc2-firmware/Config.in new file mode 100644 index 00000000..d55003af --- /dev/null +++ b/package/odroidc2-firmware/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_ODROIDC2_FIRMWARE + bool "odroidc2-firmware" + help + This package extracts from + https://github.com/hardkernel/u-boot/tree/odroidc2-v2015.01 + the pre-built firmware files, as well as the host tool + fip_create that are needed to create bootable images for the + Odroid C2 platform. See doc/board/amlogic/odroid-c2.rst in + upstream U-Boot for more details. + + https://github.com/hardkernel/u-boot/tree/odroidc2-v2015.01 diff --git a/package/odroidc2-firmware/odroidc2-firmware.hash b/package/odroidc2-firmware/odroidc2-firmware.hash new file mode 100644 index 00000000..67d046e8 --- /dev/null +++ b/package/odroidc2-firmware/odroidc2-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 a2fba4c6d9332ecc5f04283f370d5c275f35d6cb62dba1f685d011269bacb6d0 odroidc2-firmware-s905_6.0.1_v5.5.tar.gz diff --git a/package/odroidc2-firmware/odroidc2-firmware.mk b/package/odroidc2-firmware/odroidc2-firmware.mk new file mode 100644 index 00000000..acd5ce23 --- /dev/null +++ b/package/odroidc2-firmware/odroidc2-firmware.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# odroidc2-firmware +# +################################################################################ + +ODROIDC2_FIRMWARE_VERSION = s905_6.0.1_v5.5 +ODROIDC2_FIRMWARE_SITE = $(call github,hardkernel,u-boot,$(ODROIDC2_FIRMWARE_VERSION)) +ODROIDC2_FIRMWARE_INSTALL_IMAGES = YES + +define ODROIDC2_FIRMWARE_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) \ + -C $(@D)/tools/fip_create/ +endef + +ODROIDC2_FIRMWARE_FILES = \ + fip/gxb/bl301.bin \ + fip/gxb/bl30.bin \ + fip/gxb/bl31.bin \ + fip/gxb/bl2.package \ + sd_fuse/bl1.bin.hardkernel + +define ODROIDC2_FIRMWARE_INSTALL_IMAGES_CMDS + $(foreach f,$(ODROIDC2_FIRMWARE_FILES), \ + $(INSTALL) -D -m 0644 $(@D)/$(f) $(BINARIES_DIR)/$(notdir $(f)) + ) + $(INSTALL) -D -m0755 $(@D)/tools/fip_create/fip_create \ + $(HOST_DIR)/bin/fip_create +endef + +$(eval $(generic-package)) diff --git a/package/ofono/0001-uclibc-backtrace.patch b/package/ofono/0001-uclibc-backtrace.patch new file mode 100644 index 00000000..3fa24149 --- /dev/null +++ b/package/ofono/0001-uclibc-backtrace.patch @@ -0,0 +1,49 @@ +[PATCH] fix build on uClibc without UCLIBC_HAS_BACKTRACE + +Backtrace support is only used for logging on signal errors, which +isn't really critical, so simply remove backtrace info if not +available in uClibc. + +NOTE: based on patch from Peter Korsgaard + +Signed-off-by: Petr Vorel +--- +--- ofono-1.7.orig/src/log.c ++++ ofono-1.7/src/log.c +@@ -30,7 +30,8 @@ + #include + #include + #include +-#ifdef __GLIBC__ ++#if defined(__GLIBC__) && !(defined(__UCLIBC__) && !defined (__UCLIBC_HAS_BACKTRACE__)) ++#define HAVE_BACKTRACE + #include + #endif + #include +@@ -115,7 +116,7 @@ + va_end(ap); + } + +-#ifdef __GLIBC__ ++#ifdef HAVE_BACKTRACE + static void print_backtrace(unsigned int offset) + { + void *frames[99]; +@@ -312,7 +313,7 @@ + if (detach == FALSE) + option |= LOG_PERROR; + +-#ifdef __GLIBC__ ++#ifdef HAVE_BACKTRACE + signal_setup(signal_handler); + #endif + +@@ -329,7 +330,7 @@ + + closelog(); + +-#ifdef __GLIBC__ ++#ifdef HAVE_BACKTRACE + signal_setup(SIG_DFL); + #endif + diff --git a/package/ofono/Config.in b/package/ofono/Config.in new file mode 100644 index 00000000..c1d0cae4 --- /dev/null +++ b/package/ofono/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_OFONO + bool "ofono" + depends on BR2_USE_WCHAR # gettext, libglib2, ell + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2 + depends on BR2_USE_MMU # dbus, libglib2 + depends on !BR2_STATIC_LIBS # dlopen(), ell + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 # ell + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_ELL + select BR2_PACKAGE_LIBCAP_NG + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO + help + oFono is a free, open source project for mobile telephony + (GSM/UMTS) applications. It uses high-level D-Bus API for + use by telephony applications. It uses 3GPP standard. + + http://ofono.org/ + +comment "ofono needs a toolchain w/ dynamic library, wchar, threads, headers >= 4.12" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 diff --git a/package/ofono/S46ofono b/package/ofono/S46ofono new file mode 100644 index 00000000..7eb2fca3 --- /dev/null +++ b/package/ofono/S46ofono @@ -0,0 +1,22 @@ +#!/bin/sh + +case "$1" in + start) + printf "Starting ofono ... " + start-stop-daemon -S -q -m -b -p /var/run/ofonod.pid --exec /usr/sbin/ofonod -- -n + echo "done." + ;; + stop) + printf "Stopping ofono ..." + start-stop-daemon -K -q -p /var/run/ofonod.pid + echo "done." + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" + ;; +esac diff --git a/package/ofono/ofono.hash b/package/ofono/ofono.hash new file mode 100644 index 00000000..9e2fd413 --- /dev/null +++ b/package/ofono/ofono.hash @@ -0,0 +1,4 @@ +# From https://www.kernel.org/pub/linux/network/ofono/sha256sums.asc +sha256 5e13121c0f885a81ad882db065549ea13477abbcc219f150b38a8d2ac92521de ofono-2.2.tar.xz +# Locally computed +sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 COPYING diff --git a/package/ofono/ofono.mk b/package/ofono/ofono.mk new file mode 100644 index 00000000..1ff43092 --- /dev/null +++ b/package/ofono/ofono.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# ofono +# +################################################################################ + +OFONO_VERSION = 2.2 +OFONO_SOURCE = ofono-$(OFONO_VERSION).tar.xz +OFONO_SITE = $(BR2_KERNEL_MIRROR)/linux/network/ofono +OFONO_LICENSE = GPL-2.0 +OFONO_LICENSE_FILES = COPYING +OFONO_DEPENDENCIES = \ + host-pkgconf \ + dbus \ + ell \ + libcap-ng \ + libglib2 \ + mobile-broadband-provider-info + +OFONO_CONF_OPTS = \ + --enable-external-ell \ + --disable-test \ + --with-dbusconfdir=/etc \ + $(if $(BR2_INIT_SYSTEMD),--with-systemdunitdir=/usr/lib/systemd/system) + +# N.B. Qualcomm QMI modem support requires O_CLOEXEC; so +# make sure that it is defined. +OFONO_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE" + +define OFONO_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/ofono/S46ofono $(TARGET_DIR)/etc/init.d/S46ofono +endef + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +OFONO_CONF_OPTS += --enable-udev +OFONO_DEPENDENCIES += udev +else +OFONO_CONF_OPTS += --disable-udev +endif + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y) +OFONO_CONF_OPTS += --enable-bluetooth +OFONO_DEPENDENCIES += bluez5_utils +else +OFONO_CONF_OPTS += --disable-bluetooth +endif + +$(eval $(autotools-package)) diff --git a/package/ogre/Config.in b/package/ogre/Config.in new file mode 100644 index 00000000..e00d76d9 --- /dev/null +++ b/package/ogre/Config.in @@ -0,0 +1,45 @@ +config BR2_PACKAGE_OGRE + bool "ogre" + depends on BR2_PACKAGE_HAS_LIBGL # libglu + depends on BR2_PACKAGE_XORG7 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU + depends on BR2_USE_WCHAR # use wchar_t + depends on !BR2_arc # libfreeimage + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_LIBFREEIMAGE + select BR2_PACKAGE_PUGIXML + select BR2_PACKAGE_SDL2 + select BR2_PACKAGE_SDL2_OPENGL + select BR2_PACKAGE_SDL2_X11 # use wmInfo.info.x11 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_ZZIPLIB + help + OGRE is a scene-oriented, flexible 3D engine written in C++ + designed to make it easier and more intuitive for developers + to produce games and demos utilising 3D hardware. The class + library abstracts all the details of using the underlying + system libraries like Direct3D and OpenGL and provides an + interface based on world objects and other intuitive classes. + + https://ogrecave.github.io/ogre + +comment "ogre needs X11 and an OpenGL provider" + depends on !BR2_PACKAGE_HAS_LIBGL || !BR2_PACKAGE_XORG7 + depends on BR2_TOOLCHAIN_HAS_THREADS && BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \ + && BR2_INSTALL_LIBSTDCPP && !BR2_STATIC_LIBS && BR2_USE_WCHAR + depends on BR2_USE_MMU + depends on !BR2_arc + +comment "ogre needs a toolchain w/ C++, dynamic library, gcc >= 4.8, threads, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \ + || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_USE_WCHAR + depends on BR2_USE_MMU + depends on !BR2_arc diff --git a/package/ogre/ogre.hash b/package/ogre/ogre.hash new file mode 100644 index 00000000..963c521e --- /dev/null +++ b/package/ogre/ogre.hash @@ -0,0 +1,3 @@ +# sha256 locally computed +sha256 85d80ad2afe5e59b0ee8593f8bedbab8377a6772f21de310717798f6ca96010f ogre-v1.12.12-git4.tar.gz +sha256 82758e8d1d72139904b9b7472ef0f6544413d2871b58540307fdcc20e473e5f8 LICENSE diff --git a/package/ogre/ogre.mk b/package/ogre/ogre.mk new file mode 100644 index 00000000..3fd2fc46 --- /dev/null +++ b/package/ogre/ogre.mk @@ -0,0 +1,57 @@ +################################################################################ +# +# ogre +# +################################################################################ + +OGRE_VERSION = v1.12.12 +OGRE_SITE = https://github.com/OGRECave/ogre +OGRE_SITE_METHOD = git +OGRE_LICENSE = MIT (main library, DeferredShadingMedia samples), Public Domain (samples and plugins) +OGRE_LICENSE_FILES = LICENSE +OGRE_INSTALL_STAGING = YES + +# Download with imgui submodule (https://github.com/ocornut/imgui +OGRE_GIT_SUBMODULES = YES + +OGRE_DEPENDENCIES = host-pkgconf \ + freetype \ + libfreeimage \ + libgl \ + pugixml \ + sdl2 \ + xlib_libX11 \ + xlib_libXaw \ + xlib_libXext \ + xlib_libXrandr \ + zziplib + +OGRE_CFLAGS = $(TARGET_CFLAGS) -DGLEW_NO_GLU +OGRE_CXXFLAGS = $(TARGET_CXXFLAGS) -DGLEW_NO_GLU + +# Unbundle freetype and zziplib. +# Disable java and nvidia cg support. +# Disable imgui overlay to avoid extra download from CMake. +OGRE_CONF_OPTS = -DOGRE_BUILD_DEPENDENCIES=OFF \ + -DOGRE_BUILD_COMPONENT_CSHARP=OFF \ + -DOGRE_BUILD_COMPONENT_JAVA=OFF \ + -DOGRE_BUILD_PLUGIN_CG=OFF \ + -DOGRE_BUILD_COMPONENT_OVERLAY_IMGUI=OFF \ + -DOGRE_INSTALL_DOCS=OFF \ + -DCMAKE_C_FLAGS="$(OGRE_CFLAGS)" \ + -DCMAKE_CXX_FLAGS="$(OGRE_CXXFLAGS)" + +# Enable optional python component if python interpreter is present on the target. +ifeq ($(BR2_PACKAGE_PYTHON3),y) +OGRE_DEPENDENCIES += host-swig host-python3 +OGRE_CONF_OPTS += -DOGRE_BUILD_COMPONENT_PYTHON=ON +else +OGRE_CONF_OPTS += -DOGRE_BUILD_COMPONENT_PYTHON=OFF +endif + +# Uses __atomic_fetch_add_8 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +OGRE_CXXFLAGS += -latomic +endif + +$(eval $(cmake-package)) diff --git a/package/ola/0001-ola-fix-compilation-with-musl-1-2-3.patch b/package/ola/0001-ola-fix-compilation-with-musl-1-2-3.patch new file mode 100644 index 00000000..f236ef09 --- /dev/null +++ b/package/ola/0001-ola-fix-compilation-with-musl-1-2-3.patch @@ -0,0 +1,35 @@ +From eb31017284f9a1c95602a9c06d606df6b558a691 Mon Sep 17 00:00:00 2001 +From: Rosen Penev +Date: Thu, 14 Apr 2022 17:39:32 -0700 +Subject: [PATCH] ola: fix compilation with musl 1.2.3 + +musl 1.2.3 defines NULL as nullptr. cannot use reinterpret_cast with +nullptr. + +Signed-off-by: Rosen Penev +[Retrieved from: +https://github.com/OpenLightingProject/ola/pull/1773/commits/eb31017284f9a1c95602a9c06d606df6b558a691] +Signed-off-by: Fabrice Fontaine +--- + ola/AutoStart.cpp | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/ola/AutoStart.cpp b/ola/AutoStart.cpp +index 89fa51f115..4dbe20d317 100644 +--- a/ola/AutoStart.cpp ++++ b/ola/AutoStart.cpp +@@ -110,11 +110,11 @@ TCPSocket *ConnectToServer(unsigned short port) { + // Try to start the server, we pass --daemon (fork into background) and + // --syslog (log to syslog). + execlp("olad", "olad", "--daemon", "--syslog", +-#ifdef __FreeBSD__ +- reinterpret_cast(0)); ++#if __cplusplus >= 201103L ++ nullptr); + #else + reinterpret_cast(NULL)); +-#endif // __FreeBSD__ ++#endif // __cplusplus >= 201103L + OLA_WARN << "Failed to exec: " << strerror(errno); + _exit(1); + } diff --git a/package/ola/Config.in b/package/ola/Config.in new file mode 100644 index 00000000..dd0be6f3 --- /dev/null +++ b/package/ola/Config.in @@ -0,0 +1,195 @@ +comment "ola needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.8" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \ + || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + +menuconfig BR2_PACKAGE_OLA + bool "ola (open lighting architecture)" + depends on BR2_INSTALL_LIBSTDCPP # protobuf + depends on !BR2_STATIC_LIBS # protobuf + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # protobuf + select BR2_PACKAGE_PROTOBUF + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Open Lighting Architecture provides applications + with a mechanism to send and receive DMX512 & RDM + commands using hardware devices and DMX over IP protocols. + + https://www.openlighting.org/ola/ + +if BR2_PACKAGE_OLA + +comment "bindings and interface" + +config BR2_PACKAGE_OLA_WEB + bool "http interface" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt, libmicrohttpd + select BR2_PACKAGE_LIBMICROHTTPD + help + Build OLA with browser interface. + +config BR2_PACKAGE_OLA_PYTHON_BINDINGS + bool "python bindings" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # protobuf + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_PROTOBUF + help + Build OLA with support for the Python language. + +comment "tests and examples" + +config BR2_PACKAGE_OLA_EXAMPLES + bool "examples" + select BR2_PACKAGE_NCURSES + help + Build 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 + depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_9 # python-numpy + select BR2_PACKAGE_PYTHON_NUMPY + help + Build OLA RDM tests. + +comment "rdm tests needs a glibc or musl toolchain w/ gcc >= 9" + depends on BR2_PACKAGE_OLA_PYTHON_BINDINGS + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_9 || \ + !BR2_TOOLCHAIN_USES_GLIBC && !BR2_TOOLCHAIN_USES_MUSL + +comment "plugin selections" + +config BR2_PACKAGE_OLA_PLUGIN_ARTNET + bool "artnet" + help + Build Artnet plugin for OLA. + +config BR2_PACKAGE_OLA_PLUGIN_DUMMY + bool "dummy" + help + Build Dummy plugin for OLA. + +config BR2_PACKAGE_OLA_PLUGIN_E131 + bool "acn E131" + help + Build ACN E131 plugin for OLA. + +config BR2_PACKAGE_OLA_PLUGIN_ESPNET + bool "espnet" + help + Build EspNet plugin for OLA. + +config BR2_PACKAGE_OLA_PLUGIN_FTDIDMX + bool "ftdidmx" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libftdi1 -> libusb + select BR2_PACKAGE_LIBFTDI1 + help + Build FTDI USB DMX plugin for OLA. + +comment "ftdidmx needs a toolchain w/ gcc >= 4.9" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_OLA_PLUGIN_GPIO + bool "GPIO" + help + Build GPIO plugin for OLA. + +config BR2_PACKAGE_OLA_PLUGIN_KARATE + bool "karate" + help + Build Karate plugin for OLA. + +config BR2_PACKAGE_OLA_PLUGIN_KINET + bool "kinet" + help + Build KiNet plugin for OLA. + +config BR2_PACKAGE_OLA_PLUGIN_MILINT + bool "Milford Instruments" + help + Build Milford Instruments 1-463 plugin for OLA. + +config BR2_PACKAGE_OLA_PLUGIN_OPENDMX + bool "Enttec Open DMX" + help + Build Enttec Open DMX plugin for OLA. + +config BR2_PACKAGE_OLA_PLUGIN_OPENPIXELCONTROL + bool "Open Pixel Control" + help + Build Open Pixel Control (OPC) plugin for OLA. + +config BR2_PACKAGE_OLA_PLUGIN_OSC + bool "osc" + select BR2_PACKAGE_LIBLO + help + Build Open Sound Control (OSC) plugin for OLA. + +config BR2_PACKAGE_OLA_PLUGIN_PATHPORT + bool "pathport" + help + Build Pathport plugin for OLA. + +config BR2_PACKAGE_OLA_PLUGIN_RENARD + bool "renard" + help + Build Renard plugin for OLA. + +config BR2_PACKAGE_OLA_PLUGIN_SANDNET + bool "sandnet" + help + Build SandNet plugin for OLA. + +config BR2_PACKAGE_OLA_PLUGIN_SHOWNET + bool "shownet" + help + Build ShowNet plugin for OLA. + +config BR2_PACKAGE_OLA_PLUGIN_SPI + bool "spi" + help + Build SPI plugin for OLA. + +config BR2_PACKAGE_OLA_PLUGIN_STAGEPROFI + bool "stageprofi" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + Build StageProfi plugin for OLA. + +comment "stageprofi needs a toolchain w/ gcc >= 4.9" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_OLA_PLUGIN_UARTDMX + bool "uartdmx" + help + Build UART Native DMX plugin for OLA. + +config BR2_PACKAGE_OLA_PLUGIN_USBDMX + bool "usbdmx" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + Build USB DMX plugin for OLA. + +comment "usbdmx needs a toolchain w/ gcc >= 4.9" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_OLA_PLUGIN_USBPRO + bool "usbpro" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + Build UsbPro plugin for OLA. + +comment "usbpro needs a toolchain w/ gcc >= 4.9" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +endif diff --git a/package/ola/ola.hash b/package/ola/ola.hash new file mode 100644 index 00000000..a1a5577e --- /dev/null +++ b/package/ola/ola.hash @@ -0,0 +1,8 @@ +# Locally calculated +sha256 44073698c147fe641507398253c2e52ff8dc7eac8606cbf286c29f37939a4ebf ola-0.10.9.tar.gz + +# License files (locally computed) +sha256 e6b95dd336a57abb343e2988ac22b7e21b35c5b86003e6eb9e066ffbeeff9da7 COPYING +sha256 1480a883c87789075ccdead38b8ad9e2d740d6f7eefaaf183f894b50bebd8a25 GPL +sha256 e6b95dd336a57abb343e2988ac22b7e21b35c5b86003e6eb9e066ffbeeff9da7 LGPL +sha256 685ceaf368d37250f69f2861e91a4cbbab069e81af8bf50adce8a498936e02fc LICENCE diff --git a/package/ola/ola.mk b/package/ola/ola.mk new file mode 100644 index 00000000..efaa5b6e --- /dev/null +++ b/package/ola/ola.mk @@ -0,0 +1,232 @@ +################################################################################ +# +# ola +# +################################################################################ + +OLA_VERSION = 0.10.9 +OLA_SITE = https://github.com/OpenLightingProject/ola/releases/download/$(OLA_VERSION) +OLA_LICENSE = LGPL-2.1+ (libola, libolacommon, Python bindings), GPL-2.0+ (libolaserver, olad, Python examples and tests) +OLA_LICENSE_FILES = COPYING GPL LGPL LICENCE +OLA_INSTALL_STAGING = YES +# Bundled Makefile.in don't link correctly, regenerate with recent automake +OLA_AUTORECONF = YES + +# util-linux provides uuid lib +OLA_DEPENDENCIES = protobuf util-linux host-bison host-flex host-ola + +OLA_CONF_OPTS = \ + ac_cv_have_pymod_google_protobuf=yes \ + --disable-fatal-warnings \ + --disable-gcov \ + --disable-ja-rule \ + --disable-java-libs \ + --disable-root-check \ + --disable-tcmalloc \ + --disable-unittests \ + --with-ola-protoc-plugin=$(HOST_DIR)/bin/ola_protoc_plugin + +HOST_OLA_DEPENDENCIES = host-util-linux host-protobuf host-bison host-flex + +# When building the host part, disable as much as possible to speed up +# the configure step and avoid missing host dependencies. +HOST_OLA_CONF_OPTS = \ + --disable-all-plugins \ + --disable-osc \ + --disable-uart \ + --disable-libusb \ + --disable-libftdi \ + --disable-http \ + --disable-examples \ + --disable-unittests \ + --disable-doxygen-html \ + --disable-doxygen-doc \ + --disable-fatal-warnings + +# On the host side, we only need ola_protoc_plugin, so build and install this +# only. +HOST_OLA_MAKE_OPTS = protoc/ola_protoc_plugin +define HOST_OLA_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/protoc/ola_protoc_plugin $(HOST_DIR)/bin/ola_protoc_plugin +endef + +# sets where to find python libs built for target and required by ola +OLA_CONF_ENV = PYTHONPATH=$(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages +OLA_MAKE_ENV = PYTHONPATH=$(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages + +ifeq ($(BR2_PACKAGE_LIBEXECINFO),y) +OLA_DEPENDENCIES += libexecinfo +OLA_CONF_ENV += LDFLAGS="$(TARGET_LDFLAGS) -lexecinfo" +endif + +## OLA Bindings and Interface selections + +ifeq ($(BR2_PACKAGE_OLA_WEB),y) +OLA_CONF_OPTS += --enable-http +OLA_DEPENDENCIES += libmicrohttpd +else +OLA_CONF_OPTS += --disable-http +endif + +ifeq ($(BR2_PACKAGE_OLA_PYTHON_BINDINGS),y) +OLA_CONF_OPTS += --enable-python-libs +OLA_DEPENDENCIES += python3 python-protobuf +else +OLA_CONF_OPTS += --disable-python-libs +endif + +## OLA Examples and Tests + +ifeq ($(BR2_PACKAGE_OLA_EXAMPLES),y) +OLA_CONF_OPTS += --enable-examples +OLA_DEPENDENCIES += ncurses +else +OLA_CONF_OPTS += --disable-examples +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 + +## OLA Plugin selections + +ifeq ($(BR2_PACKAGE_OLA_PLUGIN_ARTNET),y) +OLA_CONF_OPTS += --enable-artnet +else +OLA_CONF_OPTS += --disable-artnet +endif + +ifeq ($(BR2_PACKAGE_OLA_PLUGIN_DUMMY),y) +OLA_CONF_OPTS += --enable-dummy +else +OLA_CONF_OPTS += --disable-dummy +endif + +ifeq ($(BR2_PACKAGE_OLA_PLUGIN_E131),y) +OLA_CONF_OPTS += --enable-e131 +else +OLA_CONF_OPTS += --disable-e131 +endif + +ifeq ($(BR2_PACKAGE_OLA_PLUGIN_ESPNET),y) +OLA_CONF_OPTS += --enable-espnet +else +OLA_CONF_OPTS += --disable-espnet +endif + +ifeq ($(BR2_PACKAGE_OLA_PLUGIN_FTDIDMX),y) +OLA_CONF_OPTS += --enable-ftdidmx +OLA_DEPENDENCIES += libftdi1 +else +OLA_CONF_OPTS += --disable-ftdidmx +endif + +ifeq ($(BR2_PACKAGE_OLA_PLUGIN_GPIO),y) +OLA_CONF_OPTS += --enable-gpio +else +OLA_CONF_OPTS += --disable-gpio +endif + +ifeq ($(BR2_PACKAGE_OLA_PLUGIN_KARATE),y) +OLA_CONF_OPTS += --enable-karate +else +OLA_CONF_OPTS += --disable-karate +endif + +ifeq ($(BR2_PACKAGE_OLA_PLUGIN_KINET),y) +OLA_CONF_OPTS += --enable-kinet +else +OLA_CONF_OPTS += --disable-kinet +endif + +ifeq ($(BR2_PACKAGE_OLA_PLUGIN_MILINT),y) +OLA_CONF_OPTS += --enable-milinst +else +OLA_CONF_OPTS += --disable-milinst +endif + +ifeq ($(BR2_PACKAGE_OLA_PLUGIN_OPENDMX),y) +OLA_CONF_OPTS += --enable-opendmx +else +OLA_CONF_OPTS += --disable-opendmx +endif + +ifeq ($(BR2_PACKAGE_OLA_PLUGIN_OPENPIXELCONTROL),y) +OLA_CONF_OPTS += --enable-openpixelcontrol +else +OLA_CONF_OPTS += --disable-openpixelcontrol +endif + +ifeq ($(BR2_PACKAGE_OLA_PLUGIN_OSC),y) +OLA_CONF_OPTS += --enable-osc +OLA_DEPENDENCIES += liblo +else +OLA_CONF_OPTS += --disable-osc +endif + +ifeq ($(BR2_PACKAGE_OLA_PLUGIN_PATHPORT),y) +OLA_CONF_OPTS += --enable-pathport +else +OLA_CONF_OPTS += --disable-pathport +endif + +ifeq ($(BR2_PACKAGE_OLA_PLUGIN_RENARD),y) +OLA_CONF_OPTS += --enable-renard +else +OLA_CONF_OPTS += --disable-renard +endif + +ifeq ($(BR2_PACKAGE_OLA_PLUGIN_SANDNET),y) +OLA_CONF_OPTS += --enable-sandnet +else +OLA_CONF_OPTS += --disable-sandnet +endif + +ifeq ($(BR2_PACKAGE_OLA_PLUGIN_SHOWNET),y) +OLA_CONF_OPTS += --enable-shownet +else +OLA_CONF_OPTS += --disable-shownet +endif + +ifeq ($(BR2_PACKAGE_OLA_PLUGIN_SPI),y) +OLA_CONF_OPTS += --enable-spi +else +OLA_CONF_OPTS += --disable-spi +endif + +ifeq ($(BR2_PACKAGE_OLA_PLUGIN_STAGEPROFI),y) +OLA_CONF_OPTS += --enable-stageprofi --enable-libusb +OLA_DEPENDENCIES += libusb +else +OLA_CONF_OPTS += --disable-stageprofi +endif + +ifeq ($(BR2_PACKAGE_OLA_PLUGIN_UARTDMX),y) +OLA_CONF_OPTS += --enable-uartdmx +else +OLA_CONF_OPTS += --disable-uartdmx +endif + +ifeq ($(BR2_PACKAGE_OLA_PLUGIN_USBDMX),y) +OLA_CONF_OPTS += --enable-usbdmx --enable-libusb +OLA_DEPENDENCIES += libusb +else +OLA_CONF_OPTS += --disable-usbdmx +endif + +ifeq ($(BR2_PACKAGE_OLA_PLUGIN_USBPRO),y) +OLA_CONF_OPTS += --enable-usbpro --enable-libusb +OLA_DEPENDENCIES += libusb +else +OLA_CONF_OPTS += --disable-usbpro +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/olsr/0001-olsrd-migrate-to-using-bison-3.7.1.patch b/package/olsr/0001-olsrd-migrate-to-using-bison-3.7.1.patch new file mode 100644 index 00000000..c29ecfc5 --- /dev/null +++ b/package/olsr/0001-olsrd-migrate-to-using-bison-3.7.1.patch @@ -0,0 +1,48 @@ +From f31eec323ae65124474664f8a0444f7c035556dd Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 6 Sep 2020 22:31:12 +0200 +Subject: [PATCH] olsrd: migrate to using bison 3.7.1 + +With the upgrade to bison 3.7.1 (openwrt commit 1cf842d) building +olsrd was failing. Now, instead of the contents of header files +being directly inserted into the generated source files, they are +instead included with a #include directive. + +The local.mk has, until now, done some magic with *-tmp files, +which is not longer necessary and even causes builds to fail. + +src/cfgparser/oparse.c:265:10: fatal error: oparse.h-tmp: No such file or directory + #include "oparse.h-tmp" + +Suggested-by: Jo-Philipp Wich +Signed-off-by: Perry Melange +[Retrieved from: +https://github.com/openwrt-routing/packages/commit/5cc8e058850acbc22fe92c5e2b24863efc577971] +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/OLSR/olsrd/pull/87] +--- + src/cfgparser/local.mk | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) + +diff --git a/src/cfgparser/local.mk b/src/cfgparser/local.mk +index e767abfc..56e594e4 100644 +--- a/src/cfgparser/local.mk ++++ b/src/cfgparser/local.mk +@@ -74,12 +74,8 @@ $(C)oparse.c: $(C)oparse.y $(C)olsrd_conf.h $(C)Makefile + ifeq ($(VERBOSE),0) + @echo "[BISON] $@" + endif +- $(MAKECMDPREFIX)$(BISON) -d -o "$@-tmp" "$<" +- $(MAKECMDPREFIX)sed -e 's/register //' \ +- -e '/^#line/s/$(call quote,$@-tmp)/$(call quote,$@)/' \ +- < "$@-tmp" >"$@" +- $(MAKECMDPREFIX)mv "$(subst .c,.h,$@-tmp)" "$(subst .c,.h,$@)" +- $(MAKECMDPREFIX)$(RM) "$@-tmp" "$(subst .c,.h,$@-tmp)" ++ $(MAKECMDPREFIX)$(BISON) -d -o "$@" "$<" ++ $(MAKECMDPREFIX)sed -e 's/register //' "$@" > "$@.o" && mv "$@.o" "$@" + + $(C)oparse.o: CFLAGS := $(filter-out -Wunreachable-code,$(CFLAGS)) + +-- +2.28.0 + diff --git a/package/olsr/0002-lib-pud-Makefile-fix-parallel-build.patch b/package/olsr/0002-lib-pud-Makefile-fix-parallel-build.patch new file mode 100644 index 00000000..b15df240 --- /dev/null +++ b/package/olsr/0002-lib-pud-Makefile-fix-parallel-build.patch @@ -0,0 +1,33 @@ +From 2f9311668dfdeee0453f5fceb27e8c95c065c4b6 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 18 Jan 2020 17:29:56 +0100 +Subject: [PATCH] lib/pud/Makefile: fix parallel build + +nmealib is needed to build olsrd_pud plugin otherwise build fails on: + +[LD] olsrd_pud.so.3.0.0 (nmealib dynamically linked) +/home/fabrice/buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lnmea +wireformat/lib/libOlsrdPudWireFormat.so: file not recognized: File truncated + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/OLSR/olsrd/pull/78] +--- + lib/pud/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/pud/Makefile b/lib/pud/Makefile +index e2524421..28330d92 100644 +--- a/lib/pud/Makefile ++++ b/lib/pud/Makefile +@@ -108,7 +108,7 @@ endif + + default_target: nmealib library $(PLUGIN_FULLNAME) + +-$(PLUGIN_FULLNAME): $(OBJS) version-script.txt ++$(PLUGIN_FULLNAME): $(OBJS) version-script.txt nmealib + ifeq ($(PUD_NMEALIB_STATICALLY_LINKED),) + ifeq ($(VERBOSE),0) + @echo "[LD] $@ (nmealib dynamically linked)" +-- +2.24.1 + diff --git a/package/olsr/0003-pud-adapt-to-API-changes-in-gpsd-3-20.patch b/package/olsr/0003-pud-adapt-to-API-changes-in-gpsd-3-20.patch new file mode 100644 index 00000000..f97798d6 --- /dev/null +++ b/package/olsr/0003-pud-adapt-to-API-changes-in-gpsd-3-20.patch @@ -0,0 +1,105 @@ +From b2dfb6c27fcf4ddae87b0e99492f4bb8472fa39a Mon Sep 17 00:00:00 2001 +From: Eneas U de Queiroz +Date: Thu, 13 Feb 2020 17:26:41 -0300 +Subject: [PATCH] pud: adapt to API changes in gpsd 3.20 + +The timestamp fields were changed from double to struct timespec, and +the geoid separation field was moved to fix.geoid_sep. + +Signed-off-by: Eneas U de Queiroz + +[Retrieved from: +https://github.com/OLSR/olsrd/commit/b2dfb6c27fcf4ddae87b0e99492f4bb8472fa39a] +Signed-off-by: Fabrice Fontaine +--- + lib/pud/src/gpsdclient.c | 36 ++++++++++++++++++++++++++++++++---- + 1 file changed, 32 insertions(+), 4 deletions(-) + +diff --git a/lib/pud/src/gpsdclient.c b/lib/pud/src/gpsdclient.c +index 9e7fb708d..2a7a26eef 100644 +--- a/lib/pud/src/gpsdclient.c ++++ b/lib/pud/src/gpsdclient.c +@@ -79,6 +79,23 @@ static void gpsdError(const char *s) { + syslog(LOG_ERR, "gpsd error: %s", s); + } + ++#if GPSD_API_MAJOR_VERSION >= 9 ++static double time_as_double(struct timespec *ts) { ++ return (ts->tv_sec + ts->tv_nsec * 1e-9); ++} ++ ++static bool is_online(struct gps_data_t *gpsdata) { ++ return !!gpsdata->online.tv_sec; ++} ++#else ++ ++#define time_as_double(x) *(x) ++ ++static bool is_online(struct gps_data_t *gpsdata) { ++ return !!gpsdata->online; ++} ++#endif ++ + /* standard parsing of a GPS data source spec */ + void gpsdParseSourceSpec(char *arg, GpsDaemon *gpsDaemon) { + if (!arg // +@@ -298,8 +315,8 @@ void nmeaInfoFromGpsd(struct gps_data_t *gpsdata, NmeaInfo *info, struct GpsdCon + 8, // + dev->parity, // + dev->stopbits, // +- dev->cycle, // +- dev->mincycle); ++ time_as_double(&dev->cycle), // ++ time_as_double(&dev->mincycle)); + + connectionTracking->devSeen[i] = true; + connectionTracking->dev[i] = *dev; +@@ -367,11 +384,18 @@ void nmeaInfoFromGpsd(struct gps_data_t *gpsdata, NmeaInfo *info, struct GpsdCon + nmeaInfoSetPresent(&info->present, NMEALIB_PRESENT_SMASK); + + /* date & time */ ++#if GPSD_API_MAJOR_VERSION >= 9 ++ if (gpsdata->fix.time.tv_sec > 0) { ++ struct tm *time = gmtime(&gpsdata->fix.time.tv_sec); ++ unsigned int hsec = (unsigned int) (gpsdata->fix.time.tv_nsec / 10000000); ++#else + if (!isNaN(gpsdata->fix.time)) { + double seconds; + double fraction = modf(fabs(gpsdata->fix.time), &seconds); + long sec = lrint(seconds); + struct tm *time = gmtime(&sec); ++ unsigned int hsec = (unsigned int) lrint(fraction * 100); ++#endif + if (time) { + info->utc.year = (unsigned int) time->tm_year + 1900; + info->utc.mon = (unsigned int) time->tm_mon + 1; +@@ -379,7 +403,7 @@ void nmeaInfoFromGpsd(struct gps_data_t *gpsdata, NmeaInfo *info, struct GpsdCon + info->utc.hour = (unsigned int) time->tm_hour; + info->utc.min = (unsigned int) time->tm_min; + info->utc.sec = (unsigned int) time->tm_sec; +- info->utc.hsec = (unsigned int) lrint(fraction * 100); ++ info->utc.hsec = hsec; + + nmeaInfoSetPresent(&info->present, NMEALIB_PRESENT_UTCDATE | NMEALIB_PRESENT_UTCTIME); + } +@@ -387,7 +411,7 @@ void nmeaInfoFromGpsd(struct gps_data_t *gpsdata, NmeaInfo *info, struct GpsdCon + gpsdata->set &= ~TIME_SET; + + /* sig & fix */ +- if (!gpsdata->online) { ++ if (!is_online(gpsdata)) { + gpsdata->fix.mode = MODE_NO_FIX; + } + +@@ -454,7 +478,11 @@ void nmeaInfoFromGpsd(struct gps_data_t *gpsdata, NmeaInfo *info, struct GpsdCon + if ((gpsdata->fix.mode >= MODE_3D) // + && !isNaN(gpsdata->fix.altitude)) { + info->elevation = gpsdata->fix.altitude; ++#if GPSD_API_MAJOR_VERSION >= 9 ++ info->height = gpsdata->fix.geoid_sep; ++#else + info->height = gpsdata->separation; ++#endif + nmeaInfoSetPresent(&info->present, NMEALIB_PRESENT_ELV | NMEALIB_PRESENT_HEIGHT); + } + gpsdata->set &= ~ALTITUDE_SET; diff --git a/package/olsr/0004-pud-adapt-gpsdclient.c-to-new-gpsd-3.21.patch b/package/olsr/0004-pud-adapt-gpsdclient.c-to-new-gpsd-3.21.patch new file mode 100644 index 00000000..80013439 --- /dev/null +++ b/package/olsr/0004-pud-adapt-gpsdclient.c-to-new-gpsd-3.21.patch @@ -0,0 +1,35 @@ +From 2f9ee6079b20fb5d3884472825a40c5c65550fa2 Mon Sep 17 00:00:00 2001 +From: Nick Hainke +Date: Sun, 30 May 2021 19:13:48 +0200 +Subject: [PATCH] pud: adapt gpsdclient.c to new gpsd 3.21 + +As mentioned: +"Move gps_data_t->status to gps_fix_t.status for better fix merging" +https://gitlab.com/gpsd/gpsd/-/commit/29991d6ffeb41ecfc8297db68bb68be0128c8514 + +Signed-off-by: Nick Hainke +Upstream: 79a28cdb4083b66c5d3a5f9c0d70dbdc86c0420c +Signed-off-by: Thomas Petazzoni +--- + lib/pud/src/gpsdclient.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/lib/pud/src/gpsdclient.c b/lib/pud/src/gpsdclient.c +index 2a7a26ee..a2a9cee0 100644 +--- a/lib/pud/src/gpsdclient.c ++++ b/lib/pud/src/gpsdclient.c +@@ -370,7 +370,11 @@ void nmeaInfoFromGpsd(struct gps_data_t *gpsdata, NmeaInfo *info, struct GpsdCon + ); + + gpsdata->set &= ~STATUS_SET; /* always valid */ ++ #if GPSD_API_MAJOR_VERSION >= 10 ++ if (gpsdata->fix.status == STATUS_NO_FIX) { ++ #else + if (gpsdata->status == STATUS_NO_FIX) { ++ #endif + nmeaInfoClear(info); + nmeaTimeSet(&info->utc, &info->present, NULL); + return; +-- +2.31.1 + diff --git a/package/olsr/0005-lib-pud-src-gpsdclient.c-drop-handling-of-gpsdata-fi.patch b/package/olsr/0005-lib-pud-src-gpsdclient.c-drop-handling-of-gpsdata-fi.patch new file mode 100644 index 00000000..7ea3fbad --- /dev/null +++ b/package/olsr/0005-lib-pud-src-gpsdclient.c-drop-handling-of-gpsdata-fi.patch @@ -0,0 +1,49 @@ +From 665051a845464c0f95edb81432104dac39426f79 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 6 Nov 2021 15:50:58 +0100 +Subject: [PATCH] lib/pud/src/gpsdclient.c: drop handling of + gpsdata->fix.status + +Here is an extract of https://gpsd.gitlab.io/gpsd/gpsd_json.html: + +The optional "status" field (aka fix type), is a modifier (adjective) to +mode. It is not a replacement for, or superset of, the "mode" field. It +is almost, but not quite, the same as the NMEA 4.x xxGGA GPS Quality +Indicator Values. Many GNSS receivers do not supply it. Those that do +interpret the specification in various incompatible ways. + +So status field is optional and STATUS_NO_FIX has been explicitly +renamed into STATUS_UNK to avoid confusion with MODE_NO_FIX (which is +already handled by gpsdclient.c) so drop the if block to fix the build +failure with gpsd >= 3.23.1. + +Signed-off-by: Fabrice Fontaine +[Upstream: https://github.com/OLSR/olsrd/commit/665051a845464c0f95edb81432104dac39426f79] +Signed-off-by: Peter Seiderer +--- + lib/pud/src/gpsdclient.c | 9 --------- + 1 file changed, 9 deletions(-) + +diff --git a/lib/pud/src/gpsdclient.c b/lib/pud/src/gpsdclient.c +index a2a9cee0..d448867d 100644 +--- a/lib/pud/src/gpsdclient.c ++++ b/lib/pud/src/gpsdclient.c +@@ -370,15 +370,6 @@ void nmeaInfoFromGpsd(struct gps_data_t *gpsdata, NmeaInfo *info, struct GpsdCon + ); + + gpsdata->set &= ~STATUS_SET; /* always valid */ +- #if GPSD_API_MAJOR_VERSION >= 10 +- if (gpsdata->fix.status == STATUS_NO_FIX) { +- #else +- if (gpsdata->status == STATUS_NO_FIX) { +- #endif +- nmeaInfoClear(info); +- nmeaTimeSet(&info->utc, &info->present, NULL); +- return; +- } + + if (!gpsdata->set) { + return; +-- +2.33.1 + diff --git a/package/olsr/0006-build-patch-for-gpsd-3-25.patch b/package/olsr/0006-build-patch-for-gpsd-3-25.patch new file mode 100644 index 00000000..c82bc1bb --- /dev/null +++ b/package/olsr/0006-build-patch-for-gpsd-3-25.patch @@ -0,0 +1,31 @@ +From 17d583258969c1d182361e0e168b3cad79ef64e6 Mon Sep 17 00:00:00 2001 +From: Rui Chen +Date: Mon, 16 Jan 2023 18:35:32 -0500 +Subject: [PATCH] build: patch for gpsd 3.25 + +Signed-off-by: Rui Chen +[Retrieved from: https://github.com/OLSR/olsrd/pull/119] +Signed-off-by: Fabrice Fontaine +--- + lib/pud/src/gpsdclient.h | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/lib/pud/src/gpsdclient.h b/lib/pud/src/gpsdclient.h +index 061056b12..a51dd2211 100644 +--- a/lib/pud/src/gpsdclient.h ++++ b/lib/pud/src/gpsdclient.h +@@ -60,14 +60,6 @@ struct GpsdConnectionState { + struct devconfig_t dev[MAXUSERDEVS]; + }; + +-/* describe a data source */ +-struct fixsource_t { +- char spec[PATH_MAX]; /* working space, will be modified */ +- char *server; /* pointer into spec field */ +- char *port; /* pointer into spec field */ +- char *device; /* pointer into spec field */ +-}; +- + /** + * The gpsd daemon spec + */ diff --git a/package/olsr/Config.in b/package/olsr/Config.in new file mode 100644 index 00000000..632511fb --- /dev/null +++ b/package/olsr/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_OLSR + bool "olsr" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + # https://github.com/OLSR/olsrd/issues/6 + depends on !BR2_TOOLCHAIN_USES_MUSL || BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 + help + The Optimized Link State Routing protocol (OLSR) is a + routing protocol that is optimised for mobile ad-hoc + networks, sometimes called wireless mesh networks. It is a + proactive link-state routing protocol that floods a full + topology table to all nodes in the network which then + compute optimal forwarding paths locally. + + http://www.olsr.org/ + +comment "olsr needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +comment "olsr needs a musl toolchain w/ headers >= 4.15" + depends on BR2_TOOLCHAIN_USES_MUSL + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 diff --git a/package/olsr/S50olsr b/package/olsr/S50olsr new file mode 100644 index 00000000..fa1324fa --- /dev/null +++ b/package/olsr/S50olsr @@ -0,0 +1,23 @@ +#!/bin/sh + +case "$1" in + start) + printf "Starting oslrd daemon: " + start-stop-daemon -S -q -x /usr/sbin/olsrd -- -d 0 -pidfile /run/olsrd.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping olsrd daemon: " + start-stop-daemon -K -q -p /run/olsrd.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/package/olsr/olsr.hash b/package/olsr/olsr.hash new file mode 100644 index 00000000..c148025b --- /dev/null +++ b/package/olsr/olsr.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 ee9e524224e5d5304dcf61f1dc5485c569da09d382934ff85b233be3e24821a3 olsr-0.9.8.tar.gz +sha256 7dcf1fb93ef105e2708b02603bb6ee443115d4819fbf2c5a3a001b46887acb9a license.txt +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 lib/pud/nmealib/LICENSE diff --git a/package/olsr/olsr.mk b/package/olsr/olsr.mk new file mode 100644 index 00000000..4ad88991 --- /dev/null +++ b/package/olsr/olsr.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# olsr +# +################################################################################ + +OLSR_VERSION = 0.9.8 +OLSR_SITE = $(call github,OLSR,olsrd,v$(OLSR_VERSION)) +OLSR_PLUGINS = arprefresh bmf dot_draw dyn_gw dyn_gw_plain httpinfo jsoninfo \ + mdns nameservice netjson poprouting p2pd pgraph secure txtinfo watchdog +# Doesn't really need quagga but not very useful without it +OLSR_PLUGINS += $(if $(BR2_PACKAGE_QUAGGA),quagga) +OLSR_LICENSE = BSD-3-Clause +OLSR_LICENSE_FILES = license.txt +OLSR_DEPENDENCIES = host-flex host-bison + +OLSR_CFLAGS = $(TARGET_CFLAGS) + +# it needs -fPIC to link on lot of architectures +OLSR_CFLAGS += -fPIC + +ifeq ($(BR2_PACKAGE_GPSD),y) +OLSR_LICENSE += , LGPL-2.1+ (nmealib) +OLSR_LICENSE_FILES += lib/pud/nmealib/LICENSE +OLSR_DEPENDENCIES += gpsd +OLSR_PLUGINS += pud +endif + +define OLSR_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) ARCH=$(NORMALIZED_ARCH) \ + CFLAGS="$(OLSR_CFLAGS)" -C $(@D) olsrd + $(foreach p,$(OLSR_PLUGINS), \ + $(TARGET_CONFIGURE_OPTS) $(MAKE) ARCH=$(NORMALIZED_ARCH) \ + CFLAGS="$(OLSR_CFLAGS)" -C $(@D)/lib/$(p) + ) +endef + +define OLSR_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) \ + prefix="/usr" install_bin + $(foreach p,$(OLSR_PLUGINS), \ + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/lib/$(p) \ + LDCONFIG=/bin/true DESTDIR=$(TARGET_DIR) \ + prefix="/usr" install + ) + $(INSTALL) -D -m 0644 $(@D)/files/olsrd.conf.default.lq \ + $(TARGET_DIR)/etc/olsrd/olsrd.conf +endef + +define OLSR_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/olsr/S50olsr \ + $(TARGET_DIR)/etc/init.d/S50olsr +endef + +define OLSR_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/olsr/olsr.service \ + $(TARGET_DIR)/usr/lib/systemd/system/olsr.service +endef + +$(eval $(generic-package)) diff --git a/package/olsr/olsr.service b/package/olsr/olsr.service new file mode 100644 index 00000000..9ec89303 --- /dev/null +++ b/package/olsr/olsr.service @@ -0,0 +1,10 @@ +[Unit] +Description=Ad-hoc wireless mesh routing daemon +After=network.target + +[Service] +ExecStart=/usr/sbin/olsrd -nofork +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/omap-u-boot-utils/Config.in.host b/package/omap-u-boot-utils/Config.in.host new file mode 100644 index 00000000..1549674f --- /dev/null +++ b/package/omap-u-boot-utils/Config.in.host @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS + bool "host omap-u-boot-utils" + depends on BR2_arm || BR2_armeb + help + U-Boot Utilities for Texas Instrument's OMAP platforms. + This is a set of tools to control U-Boot from scripts, + generate OMAP-specific signed image files and more. + + https://github.com/nmenon/omap-u-boot-utils diff --git a/package/omap-u-boot-utils/omap-u-boot-utils.hash b/package/omap-u-boot-utils/omap-u-boot-utils.hash new file mode 100644 index 00000000..e61bb812 --- /dev/null +++ b/package/omap-u-boot-utils/omap-u-boot-utils.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 f9c2553efeff1289b2b964a266a0b4a03a377f84a14d0599a779f6e3d7b75d5f omap-u-boot-utils-3f07426cddc0be9e24702e7aacc7574ddd7fba28.tar.gz +sha256 1080312c3230fb7dd32fe807ed8c8cd11f4061bf1a2f065b651630bfe30157b2 COPYING diff --git a/package/omap-u-boot-utils/omap-u-boot-utils.mk b/package/omap-u-boot-utils/omap-u-boot-utils.mk new file mode 100644 index 00000000..d68b1300 --- /dev/null +++ b/package/omap-u-boot-utils/omap-u-boot-utils.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# omap-u-boot-utils +# +################################################################################ + +OMAP_U_BOOT_UTILS_VERSION = 3f07426cddc0be9e24702e7aacc7574ddd7fba28 +OMAP_U_BOOT_UTILS_SITE = $(call github,nmenon,omap-u-boot-utils,$(OMAP_U_BOOT_UTILS_VERSION)) +OMAP_U_BOOT_UTILS_LICENSE = GPL-2.0, GPL-2.0+ +OMAP_U_BOOT_UTILS_LICENSE_FILES = COPYING + +define HOST_OMAP_U_BOOT_UTILS_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_OMAP_U_BOOT_UTILS_INSTALL_CMDS + for f in gpsign pserial tagger ucmd ukermit ; do \ + $(INSTALL) -D -m 755 $(@D)/$$f $(HOST_DIR)/bin/$$f ; \ + done +endef + +$(eval $(host-generic-package)) diff --git a/package/omniorb/Config.in b/package/omniorb/Config.in new file mode 100644 index 00000000..4af91a4d --- /dev/null +++ b/package/omniorb/Config.in @@ -0,0 +1,28 @@ + +comment "omniORB needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_OMNIORB + bool "omniorb" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + omniORB is a robust high performance CORBA ORB for C++ and + Python. + omniORB is largely CORBA 2.6 compliant. omniORB is one of + only three ORBs to have been awarded the Open Group's Open + Brand for CORBA. This means that omniORB has been tested and + certified CORBA compliant, to version 2.1 of the CORBA + specification. + + http://omniorb.sourceforge.net/ + +if BR2_PACKAGE_OMNIORB + +config BR2_PACKAGE_OMNIORB_WITH_APPS + bool "Enable Apps and Services" + help + omniORB applications and services disabled by default + embedded system build configuration. + +endif diff --git a/package/omniorb/omniorb.hash b/package/omniorb/omniorb.hash new file mode 100644 index 00000000..36db6719 --- /dev/null +++ b/package/omniorb/omniorb.hash @@ -0,0 +1,8 @@ +# From https://sourceforge.net/projects/omniorb/files/omniORB/omniORB-4.3.1/ +sha1 b6581c9b6a956c1d442c442767b5a58899a09513 omniORB-4.3.1.tar.bz2 +md5 dc3e4467ef3f457025fedcc6403f8f13 omniORB-4.3.1.tar.bz2 + +# Locally generated +sha256 0f42bc3eb737cae680dafa85b3ae3958e9f56a37912c5fb6b875933f8fb7390d omniORB-4.3.1.tar.bz2 +sha256 126647a6ee062fe46f8f3766965dc62e031c0a31238a347e4bc07aab2ac1e2a7 COPYING +sha256 eaf5b13ffd5355da7c0b83074e4b798152ff7086c95c4f3045122a06e2673eb9 COPYING.LIB diff --git a/package/omniorb/omniorb.mk b/package/omniorb/omniorb.mk new file mode 100644 index 00000000..8235fac7 --- /dev/null +++ b/package/omniorb/omniorb.mk @@ -0,0 +1,71 @@ +################################################################################ +# +# omniorb +# +################################################################################ + +OMNIORB_VERSION = 4.3.1 +OMNIORB_SITE = http://downloads.sourceforge.net/project/omniorb/omniORB/omniORB-$(OMNIORB_VERSION) +OMNIORB_SOURCE = omniORB-$(OMNIORB_VERSION).tar.bz2 +OMNIORB_INSTALL_STAGING = YES +OMNIORB_LICENSE = GPL2+, LGPL-2.1+ +OMNIORB_LICENSE_FILES = COPYING COPYING.LIB +OMNIORB_DEPENDENCIES = host-omniorb +HOST_OMNIORB_DEPENDENCIES = host-python3 + +# Defaulting long double support to a safe option for the +# mix of embedded targets, this could later be automated +# based on checking the capability of the cross toolchain +# for "__LONG_DOUBLE_128__". Currently the host and target +# need to match because of the code generation done by the +# host tools during the target compile (ie headers generated +# on host are used in target build). +OMNIORB_CONF_OPTS += --disable-longdouble +HOST_OMNIORB_CONF_OPTS += --disable-longdouble + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +OMNIORB_CONF_OPTS += --with-openssl +OMNIORB_DEPENDENCIES += host-pkgconf openssl +else +OMNIORB_CONF_OPTS += --without-openssl +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +OMNIORB_DEPENDENCIES += zlib +endif + +# The EmbeddedSystem define (set below in OMNIORB_ADJUST_TOOLDIR) +# enables building of just the lib and disables building of +# tools/apps/services. In some cases the apps/services are still +# required. The tools however are host related and should never +# be required on target. +define OMNIORB_ENABLE_EXTRA_APPS + $(SED) 's:SUBDIRS += lib:SUBDIRS += lib appl services:g' $(@D)/src/dir.mk +endef + +ifeq ($(BR2_PACKAGE_OMNIORB_WITH_APPS),y) +OMNIORB_POST_PATCH_HOOKS += OMNIORB_ENABLE_EXTRA_APPS +endif + +ifeq ($(BR2_STATIC_LIBS),y) +define OMNIORB_DISABLE_SHARED + echo "BuildSharedLibrary =" >> $(@D)/mk/beforeauto.mk +endef +OMNIORB_POST_CONFIGURE_HOOKS += OMNIORB_DISABLE_SHARED +endif + +# omniORB is not completely cross-compile friendly and has some +# assumptions where a couple host tools must be built and then +# used by the target build. The host tools generate code from +# the IDL description language, which is then built into the +# cross compiled target OMNIORB application. +define OMNIORB_ADJUST_TOOLDIR + # Point to the host folder to get HOST_OMNIORB tools + $(SED) 's:TOOLBINDIR = $$(TOP)/$$(BINDIR):TOOLBINDIR = $(HOST_DIR)/bin:g' $(@D)/mk/beforeauto.mk + # Disables OMNIORB app/service/tool building + echo "EmbeddedSystem=1" >> $(@D)/mk/beforeauto.mk +endef +OMNIORB_POST_CONFIGURE_HOOKS += OMNIORB_ADJUST_TOOLDIR + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/oniguruma/Config.in b/package/oniguruma/Config.in new file mode 100644 index 00000000..2e8b41c1 --- /dev/null +++ b/package/oniguruma/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_ONIGURUMA + bool "oniguruma" + help + Oniguruma is a modern and flexible regular expressions + library. It encompasses features from different regular + expression implementations that traditionally exist in + different languages. + + https://github.com/kkos/oniguruma diff --git a/package/oniguruma/oniguruma.hash b/package/oniguruma/oniguruma.hash new file mode 100644 index 00000000..ac1d375b --- /dev/null +++ b/package/oniguruma/oniguruma.hash @@ -0,0 +1,4 @@ +# From https://github.com/kkos/oniguruma/releases/download/v6.9.9/onig-6.9.9.tar.gz.sha256 +sha256 60162bd3b9fc6f4886d4c7a07925ffd374167732f55dce8c491bfd9cd818a6cf onig-6.9.9.tar.gz +# Hash for license file +sha256 70ba5469ea0bab6e18a32d7009068f996503168d27be57747e08da34337ff26f COPYING diff --git a/package/oniguruma/oniguruma.mk b/package/oniguruma/oniguruma.mk new file mode 100644 index 00000000..e056048c --- /dev/null +++ b/package/oniguruma/oniguruma.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# oniguruma +# +################################################################################ + +ONIGURUMA_VERSION = 6.9.9 +ONIGURUMA_SITE = \ + https://github.com/kkos/oniguruma/releases/download/v$(ONIGURUMA_VERSION) +ONIGURUMA_SOURCE = onig-$(ONIGURUMA_VERSION).tar.gz +ONIGURUMA_LICENSE = BSD-2-Clause +ONIGURUMA_LICENSE_FILES = COPYING +ONIGURUMA_CPE_ID_VALID = YES +ONIGURUMA_INSTALL_STAGING = YES + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/open-iscsi/0001-usr-idbm.c-fix-musl-build.patch b/package/open-iscsi/0001-usr-idbm.c-fix-musl-build.patch new file mode 100644 index 00000000..5470f305 --- /dev/null +++ b/package/open-iscsi/0001-usr-idbm.c-fix-musl-build.patch @@ -0,0 +1,40 @@ +From dbe342545b7bee42107e09d0da59bb42c50903cb Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 30 Sep 2023 14:54:15 +0200 +Subject: [PATCH] usr/idbm.c: fix musl build + +Fix the following musl build failure raised since version 2.1.9 and +https://github.com/open-iscsi/open-iscsi/commit/7b571d76d6937a78c141630fc38c3c57c532466c: + +../usr/idbm.c: In function 'idbm_rec_write_old': +../usr/idbm.c:2230:27: error: 'GLOB_ONLYDIR' undeclared (first use in this function) + 2230 | rc = glob(portal, GLOB_ONLYDIR, NULL, &globbuf); + | ^~~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/14fc1c139f055b5b1eaa6e04e327863c06176a7b + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/open-iscsi/open-iscsi/commit/11bdc17938ba648c81a853355a6bbddad69a9fc7 +--- + usr/idbm.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/usr/idbm.c b/usr/idbm.c +index ca4a4ec..fbaa132 100644 +--- a/usr/idbm.c ++++ b/usr/idbm.c +@@ -45,6 +45,10 @@ + #include "fw_context.h" + #include "iscsi_err.h" + ++#ifndef GLOB_ONLYDIR ++#define GLOB_ONLYDIR 0x100 ++#endif ++ + #define IDBM_HIDE 0 /* Hide parameter when print. */ + #define IDBM_SHOW 1 /* Show parameter when print. */ + #define IDBM_MASKED 2 /* Show "stars" instead of real value when print */ +-- +2.40.1 + diff --git a/package/open-iscsi/Config.in b/package/open-iscsi/Config.in new file mode 100644 index 00000000..01d83615 --- /dev/null +++ b/package/open-iscsi/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_OPEN_ISCSI + bool "open-iscsi" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS # pthread + depends on !BR2_STATIC_LIBS # kmod + select BR2_PACKAGE_KMOD + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + help + iSCSI tools for Linux. + + https://www.open-iscsi.com + +comment "open-iscsi needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/open-iscsi/open-iscsi.hash b/package/open-iscsi/open-iscsi.hash new file mode 100644 index 00000000..de75cbf1 --- /dev/null +++ b/package/open-iscsi/open-iscsi.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 60e2a1e3058a8af7f702e86a5a0511b05b8754d29d3d2df4e0e301399b5cf70a open-iscsi-2.1.9.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 7e6580de9d99b680697d51ec0c5e88acd9ed329139d181472cc5a592d0684fa5 README +sha256 e3a994d82e644b03a792a930f574002658412f62407f5fee083f2555c5f23118 libopeniscsiusr/COPYING diff --git a/package/open-iscsi/open-iscsi.mk b/package/open-iscsi/open-iscsi.mk new file mode 100644 index 00000000..1266db3d --- /dev/null +++ b/package/open-iscsi/open-iscsi.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# open-iscsi +# +################################################################################ + +OPEN_ISCSI_VERSION = 2.1.9 +OPEN_ISCSI_SITE = $(call github,open-iscsi,open-iscsi,$(OPEN_ISCSI_VERSION)) +OPEN_ISCSI_LICENSE = GPL-2.0+, GPL-3.0+, LGPL-3.0+ +OPEN_ISCSI_LICENSE_FILES = COPYING README libopeniscsiusr/COPYING +OPEN_ISCSI_CPE_ID_VALID = YES +OPEN_ISCSI_DEPENDENCIES = kmod openssl util-linux + +OPEN_ISCSI_CONF_OPTS = -Ddbroot=/var/lib/iscsi + +ifeq ($(BR2_PACKAGE_OPEN_ISNS),y) +OPEN_ISCSI_DEPENDENCIES += open-isns +OPEN_ISCSI_CONF_OPTS += -Disns=enabled +else +OPEN_ISCSI_CONF_OPTS += -Disns=disabled +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +OPEN_ISCSI_DEPENDENCIES += systemd +OPEN_ISCSI_CONF_OPTS += -Dno_systemd=false +else +OPEN_ISCSI_CONF_OPTS += -Dno_systemd=true +endif + +define OPEN_ISCSI_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_SCSI_LOWLEVEL) + $(call KCONFIG_ENABLE_OPT,CONFIG_ISCSI_TCP) +endef + +$(eval $(meson-package)) diff --git a/package/open-isns/Config.in b/package/open-isns/Config.in new file mode 100644 index 00000000..a9bf7bbc --- /dev/null +++ b/package/open-isns/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_OPEN_ISNS + bool "open-isns" + depends on BR2_USE_MMU # fork() + help + iSNS server and client for Linux. + + https://github.com/open-iscsi/open-isns diff --git a/package/open-isns/open-isns.hash b/package/open-isns/open-isns.hash new file mode 100644 index 00000000..653fabaa --- /dev/null +++ b/package/open-isns/open-isns.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 9611344733c0cdf14395f60880950ea4c3c7d6b765565b6493ad3e1afbe216de open-isns-0.102.tar.gz +sha256 00a89b0d18aacd4114decf79122db87bf35bddaf2bc50e383c9c9f4c263390b2 COPYING diff --git a/package/open-isns/open-isns.mk b/package/open-isns/open-isns.mk new file mode 100644 index 00000000..ae8fb415 --- /dev/null +++ b/package/open-isns/open-isns.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# open-isns +# +################################################################################ + +OPEN_ISNS_VERSION = 0.102 +OPEN_ISNS_SITE = $(call github,open-iscsi,open-isns,v$(OPEN_ISNS_VERSION)) +OPEN_ISNS_LICENSE = LGPL-2.1+ +OPEN_ISNS_LICENSE_FILES = COPYING +OPEN_ISNS_INSTALL_STAGING = YES + +OPEN_ISNS_CONF_OPTS = -Dslp=disabled + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +OPEN_ISNS_DEPENDENCIES += openssl +OPEN_ISNS_CONF_OPTS += -Dsecurity=enabled +else +OPEN_ISNS_CONF_OPTS += -Dsecurity=disabled +endif + +ifeq ($(BR2_INIT_SYSTEMD),) +define OPEN_ISNS_REMOVE_SYSTEMD_UNITS + rm $(TARGET_DIR)/usr/lib/systemd/system/isnsd.service + rm $(TARGET_DIR)/usr/lib/systemd/system/isnsd.socket + rmdir --ignore-fail-on-non-empty $(TARGET_DIR)/usr/lib/systemd/system + rmdir --ignore-fail-on-non-empty $(TARGET_DIR)/usr/lib/systemd +endef +OPEN_ISNS_POST_INSTALL_TARGET_HOOKS += OPEN_ISNS_REMOVE_SYSTEMD_UNITS +endif + +$(eval $(meson-package)) diff --git a/package/open-lldp/Config.in b/package/open-lldp/Config.in new file mode 100644 index 00000000..5bf363ef --- /dev/null +++ b/package/open-lldp/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_OPEN_LLDP + bool "open-lldp" + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_LIBCONFIG + select BR2_PACKAGE_LIBNL + select BR2_PACKAGE_READLINE + help + This package contains the Linux user space daemon and + configuration tool for Intel LLDP Agent with Enhanced Ethernet + support for the Data Center. + + https://github.com/intel/openlldp/ + +comment "open-lldp needs a toolchain w/ dynamic library, threads" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/open-lldp/open-lldp.hash b/package/open-lldp/open-lldp.hash new file mode 100644 index 00000000..1fbd8dd0 --- /dev/null +++ b/package/open-lldp/open-lldp.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 13e0890527192a6289e6dac82056c447a1e2624ff93b0b6bbd8a42d15b2cbc8c open-lldp-1.1.tar.gz +sha256 67af5abeb092213cd9c53781503320f635ba28b641e0c3f24d367e8e93a9839b COPYING diff --git a/package/open-lldp/open-lldp.mk b/package/open-lldp/open-lldp.mk new file mode 100644 index 00000000..d42dbcc5 --- /dev/null +++ b/package/open-lldp/open-lldp.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# open-lldp +# +################################################################################ + +OPEN_LLDP_VERSION = 1.1 +OPEN_LLDP_SITE = $(call github,intel,openlldp,v$(OPEN_LLDP_VERSION)) +OPEN_LLDP_DEPENDENCIES = readline libnl libconfig host-pkgconf +OPEN_LLDP_LICENSE = GPL-2.0 +OPEN_LLDP_LICENSE_FILES = COPYING + +# Fetching from git +OPEN_LLDP_AUTORECONF = YES + +ifeq ($(BR2_INIT_SYSTEMD),y) +OPEN_LLDP_DEPENDENCIES += systemd +OPEN_LLDP_CONF_OPTS += --with-systemdsystemunitdir=/usr/lib/systemd/system +endif + +$(eval $(autotools-package)) diff --git a/package/open-plc-utils/0001-Remove-OWNER-and-GROUPS-parameters-to-install.patch b/package/open-plc-utils/0001-Remove-OWNER-and-GROUPS-parameters-to-install.patch new file mode 100644 index 00000000..d3364440 --- /dev/null +++ b/package/open-plc-utils/0001-Remove-OWNER-and-GROUPS-parameters-to-install.patch @@ -0,0 +1,277 @@ +From 1fe7b756365254f7175558e7a89c1d89f95c5e2e Mon Sep 17 00:00:00 2001 +From: Maxime Hadjinlian +Date: Tue, 30 Sep 2014 13:46:59 +0200 +Subject: [PATCH] Remove OWNER and GROUPS parameters to install + +The Install tries to change the owner and groups of the binary. In +Buildroot we don't want that, since fakeroot will do its job when we +finalize the rootfs. + +Signed-off-by: Maxime Hadjinlian +[aduskett@gmail.com: Updated for 32408520fcebe785983a68e39ec83830a3005779] +Signed-off-by: Adam Duskett +--- + docbook/Makefile | 4 ++-- + ether/Makefile | 8 ++++---- + key/Makefile | 8 ++++---- + mdio/Makefile | 8 ++++---- + mme/Makefile | 8 ++++---- + nvm/Makefile | 8 ++++---- + pib/Makefile | 8 ++++---- + plc/Makefile | 8 ++++---- + ram/Makefile | 8 ++++---- + serial/Makefile | 8 ++++---- + slac/Makefile | 8 ++++---- + tools/Makefile | 2 +- + 12 files changed, 43 insertions(+), 43 deletions(-) + +diff --git a/docbook/Makefile b/docbook/Makefile +index d630822..039d62a 100755 +--- a/docbook/Makefile ++++ b/docbook/Makefile +@@ -32,9 +32,9 @@ manuals: + ${SHELL} ../docbook/manuals + scripts: + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${LIBRARY} ++ install -m ${DIR_PERM} -d ${LIBRARY} + install: library +- if [ -d ${LIBRARY} ]; then install -m ${WWW_PERM} -o ${OWNER} -g ${GROUP} *.html *.css *.png ${LIBRARY}; fi ++ if [ -d ${LIBRARY} ]; then install -m ${WWW_PERM} *.html *.css *.png ${LIBRARY}; fi + uninstall: + rm -f ${LIBRARY}/*.c.html ${LIBRARY}/*.h.html ${LIBRARY}/*.1.html + setup: +diff --git a/ether/Makefile b/ether/Makefile +index 89174cb..8256d50 100755 +--- a/ether/Makefile ++++ b/ether/Makefile +@@ -27,13 +27,13 @@ compact: compile + if [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi + if [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN} ++ install -m ${DIR_PERM} -d ${BIN} + scripts: + manuals: +- test -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN} +- install -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN} ++ test -d ${MAN} || install -m ${DIR_PERM} -d ${MAN} ++ install -m ${MAN_PERM} ${PAGES} ${MAN} + install: $(TOOLS) library +- install -m ${SUID_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN} ++ install -m ${SUID_PERM} ${TOOLS} ${BIN} + uninstall: + cd ${BIN}; rm -f ${TOOLS} + cd ${MAN}; rm -f ${PAGES} +diff --git a/key/Makefile b/key/Makefile +index de62a49..78fa200 100755 +--- a/key/Makefile ++++ b/key/Makefile +@@ -28,13 +28,13 @@ compact: compile + if [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi + if [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN} ++ install -m ${DIR_PERM} -d ${BIN} + scripts: + manuals: +- test -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN} +- install -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN} ++ test -d ${MAN} || install -m ${DIR_PERM} -d ${MAN} ++ install -m ${MAN_PERM} ${PAGES} ${MAN} + install: $(TOOLS) +- install -m ${BIN_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN} ++ install -m ${BIN_PERM} ${TOOLS} ${BIN} + uninstall: + cd ${BIN}; rm -f ${TOOLS} + cd ${MAN}; rm -f ${PAGES} +diff --git a/mdio/Makefile b/mdio/Makefile +index 049b08e..3ff4c26 100755 +--- a/mdio/Makefile ++++ b/mdio/Makefile +@@ -27,13 +27,13 @@ compact: compile + if [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi + if [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN} ++ install -m ${DIR_PERM} -d ${BIN} + scripts: + manuals: +- test -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN} +- install -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN} ++ test -d ${MAN} || install -m ${DIR_PERM} -d ${MAN} ++ install -m ${MAN_PERM} ${PAGES} ${MAN} + install: $(TOOLS) library +- install -m ${BIN_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN} ++ install -m ${BIN_PERM} ${TOOLS} ${BIN} + uninstall: + cd ${BIN}; rm -f int6k ${TOOLS} + cd ${MAN}; rm -f int6k ${PAGES} +diff --git a/mme/Makefile b/mme/Makefile +index 0313aea..77a6b96 100755 +--- a/mme/Makefile ++++ b/mme/Makefile +@@ -27,13 +27,13 @@ compact: compile + if [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi + if [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN} ++ install -m ${DIR_PERM} -d ${BIN} + scripts: + manuals: +- test -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN} +- install -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN} ++ test -d ${MAN} || install -m ${DIR_PERM} -d ${MAN} ++ install -m ${MAN_PERM} ${PAGES} ${MAN} + install: $(TOOLS) library +- install -m ${BIN_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN} ++ install -m ${BIN_PERM} ${TOOLS} ${BIN} + uninstall: + cd ${BIN}; rm -f ${TOOLS} + cd ${MAN}; rm -f ${PAGES} +diff --git a/nvm/Makefile b/nvm/Makefile +index 9aa05ec..b468e70 100755 +--- a/nvm/Makefile ++++ b/nvm/Makefile +@@ -28,12 +28,12 @@ compact: compile + if [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi + scripts: + manuals: +- test -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN} +- install -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN} ++ test -d ${MAN} || install -m ${DIR_PERM} -d ${MAN} ++ install -m ${MAN_PERM} ${PAGES} ${MAN} + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN} ++ install -m ${DIR_PERM} -d ${BIN} + install: $(TOOLS) library +- install -m ${BIN_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN} ++ install -m ${BIN_PERM} ${TOOLS} ${BIN} + uninstall: + cd ${BIN}; rm -f ${TOOLS} + cd ${MAN}; rm -f ${PAGES} +diff --git a/pib/Makefile b/pib/Makefile +index 93f0c3b..23195b4 100644 +--- a/pib/Makefile ++++ b/pib/Makefile +@@ -30,12 +30,12 @@ compact: compile + if [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi + scripts: + manuals: +- test -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN} +- install -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN} ++ test -d ${MAN} || install -m ${DIR_PERM} -d ${MAN} ++ install -m ${MAN_PERM} ${PAGES} ${MAN} + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN} ++ install -m ${DIR_PERM} -d ${BIN} + install: $(TOOLS) library +- install -m ${BIN_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN} ++ install -m ${BIN_PERM} ${TOOLS} ${BIN} + uninstall: + cd ${BIN}; rm -f ${TOOLS} + cd ${MAN}; rm -f ${PAGES} +diff --git a/plc/Makefile b/plc/Makefile +index 43d6bd5..9fd4e0a 100644 +--- a/plc/Makefile ++++ b/plc/Makefile +@@ -32,13 +32,13 @@ compact: compile + if [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi + if [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN} ++ install -m ${DIR_PERM} -d ${BIN} + scripts: + manuals: +- test -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN} +- install -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN} ++ test -d ${MAN} || install -m ${DIR_PERM} -d ${MAN} ++ install -m ${MAN_PERM} ${PAGES} ${MAN} + install: $(TOOLS) library +- install -m ${SUID_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN} ++ install -m ${SUID_PERM} ${TOOLS} ${BIN} + uninstall: + cd ${BIN}; rm -f ${TOOLS} + cd ${MAN}; rm -f ${PAGES} +diff --git a/ram/Makefile b/ram/Makefile +index 60b9bb3..c34ddd0 100755 +--- a/ram/Makefile ++++ b/ram/Makefile +@@ -27,13 +27,13 @@ compact: compile + if [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi + if [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN} ++ install -m ${DIR_PERM} -d ${BIN} + scripts: + manuals: +- test -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN} +- install -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN} ++ test -d ${MAN} || install -m ${DIR_PERM} -d ${MAN} ++ install -m ${MAN_PERM} ${PAGES} ${MAN} + install: $(TOOLS) library +- install -m ${BIN_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN} ++ install -m ${BIN_PERM} ${TOOLS} ${BIN} + uninstall: + cd ${BIN}; rm -f ${TOOLS} + cd ${MAN}; rm -f ${PAGES} +diff --git a/serial/Makefile b/serial/Makefile +index c25f1a6..aebbac9 100755 +--- a/serial/Makefile ++++ b/serial/Makefile +@@ -27,13 +27,13 @@ compact: compile + if [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi + if [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN} ++ install -m ${DIR_PERM} -d ${BIN} + scripts: + manuals: +- test -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN} +- install -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN} ++ test -d ${MAN} || install -m ${DIR_PERM} -d ${MAN} ++ install -m ${MAN_PERM} ${PAGES} ${MAN} + install: $(TOOLS) library +- install -m ${BIN_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN} ++ install -m ${BIN_PERM} ${TOOLS} ${BIN} + uninstall: + cd ${BIN}; rm -f int6k ${TOOLS} + cd ${MAN}; rm -f int6k ${PAGES} +diff --git a/slac/Makefile b/slac/Makefile +index bd12db9..1f0b65d 100755 +--- a/slac/Makefile ++++ b/slac/Makefile +@@ -27,13 +27,13 @@ compact: compile + if [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi + if [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN} ++ install -m ${DIR_PERM} -d ${BIN} + scripts: + manuals: +- if [ ! -d ${MAN} ]; then install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN}; fi +- install -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN} ++ if [ ! -d ${MAN} ]; then install -m ${DIR_PERM} -d ${MAN}; fi ++ install -m ${MAN_PERM} ${PAGES} ${MAN} + install: compile library +- install -m ${SUID_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN} ++ install -m ${SUID_PERM} ${TOOLS} ${BIN} + uninstall: + cd ${BIN}; rm -f ${TOOLS} + cd ${MAN}; rm -f ${PAGES} +diff --git a/tools/Makefile b/tools/Makefile +index 1d992cf..a74fd24 100755 +--- a/tools/Makefile ++++ b/tools/Makefile +@@ -27,7 +27,7 @@ compact: compile + if [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi + if [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN} ++ install -m ${DIR_PERM} -d ${BIN} + scripts: + manuals: + # install -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN} +-- +2.26.2 + diff --git a/package/open-plc-utils/Config.in b/package/open-plc-utils/Config.in new file mode 100644 index 00000000..8ae3504c --- /dev/null +++ b/package/open-plc-utils/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_OPEN_PLC_UTILS + bool "open-plc-utils" + depends on BR2_USE_MMU # fork() + help + Open version of the Qualcomm Atheros Powerline Toolkit + + https://github.com/qca/open-plc-utils diff --git a/package/open-plc-utils/open-plc-utils.hash b/package/open-plc-utils/open-plc-utils.hash new file mode 100644 index 00000000..0ab66123 --- /dev/null +++ b/package/open-plc-utils/open-plc-utils.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 4b1b55896939f178321ffe1ec2dc6937ea688d577b3671a5f0edb5c3326dfa3d open-plc-utils-1ba7d5a042e4e8ff6858b08e113eec5dc4e89cf2.tar.gz +sha256 3137c632bbcec5e88b72dc13f4fe06ee184eea364fec8f7494bdfa57672ef921 LICENSE diff --git a/package/open-plc-utils/open-plc-utils.mk b/package/open-plc-utils/open-plc-utils.mk new file mode 100644 index 00000000..086552e0 --- /dev/null +++ b/package/open-plc-utils/open-plc-utils.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# open-plc-utils +# +################################################################################ + +OPEN_PLC_UTILS_VERSION = 1ba7d5a042e4e8ff6858b08e113eec5dc4e89cf2 +OPEN_PLC_UTILS_SITE = $(call github,qca,open-plc-utils,$(OPEN_PLC_UTILS_VERSION)) +OPEN_PLC_UTILS_LICENSE = BSD-3-Clause +OPEN_PLC_UTILS_LICENSE_FILES = LICENSE + +# We unfortunately can't use TARGET_CONFIGURE_OPTS, as it would +# override the package CFLAGS, LDFLAGS and CXXFLAGS definitions. +# +# Yes, we're passing __UCLIBC__ in EXTRA_CFLAGS, as it fixes a build +# issue for non-uClibc toolchains. It is the very crappy solution +# suggested at https://github.com/qca/open-plc-utils/issues/36. +OPEN_PLC_UTILS_MAKE_OPTS = \ + EXTRA_CFLAGS="$(TARGET_CFLAGS) -D__UCLIBC__" \ + EXTRA_CXXFLAGS="$(TARGET_CXXFLAGS)" \ + EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" + +define OPEN_PLC_UTILS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CROSS=$(TARGET_CROSS) \ + $(OPEN_PLC_UTILS_MAKE_OPTS) -C $(@D) +endef + +define OPEN_PLC_UTILS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) ROOTFS=$(TARGET_DIR) \ + BIN="$(TARGET_DIR)/usr/bin" -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/open2300/0001-fix-makefile.patch b/package/open2300/0001-fix-makefile.patch new file mode 100644 index 00000000..c3bb2523 --- /dev/null +++ b/package/open2300/0001-fix-makefile.patch @@ -0,0 +1,52 @@ +From b0a1f12349bee43040a889c7e74873cfb253b9d8 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Thu, 6 Feb 2014 21:42:50 +0100 +Subject: [PATCH] fix makefile + +- allow to extend CFLAGS and CC_LDFLAGS +- remove hard-coded include dirs. and lib. dirs. (which pointed to some + location in the host system) + +Signed-off-by: Samuel Martin +--- + Makefile | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/Makefile b/Makefile +index 92a2cc0..1b54175 100755 +--- a/Makefile ++++ b/Makefile +@@ -37,9 +37,9 @@ MYSQLHISTLOGOBJ = mysqlhistlog2300.o rw2300.o linux2300.o win2300.o + + VERSION = 1.11 + +-CFLAGS = -Wall -O3 -DVERSION=\"$(VERSION)\" +-CC_LDFLAGS = -lm +-CC_WINFLAG = ++override CFLAGS += -Wall -O3 -DVERSION=\"$(VERSION)\" ++override CC_LDFLAGS += -lm ++CC_WINFLAG = + # For Windows - comment the two line above and un-comment the two lines below. + #CC_LDFLAGS = -lm -lwsock32 + #CC_WINFLAG = -mwindows +@@ -80,7 +80,7 @@ xml2300 : $(XMLOBJ) + $(CC) $(CFLAGS) -o $@ $(XMLOBJ) $(CC_LDFLAGS) $(CC_WINFLAG) + + mysql2300: +- $(CC) $(CFLAGS) -o mysql2300 mysql2300.c rw2300.c linux2300.c $(CC_LDFLAGS) $(CC_WINFLAG) -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient ++ $(CC) $(CFLAGS) -o mysql2300 mysql2300.c rw2300.c linux2300.c $(CC_LDFLAGS) $(CC_WINFLAG) + + pgsql2300: $(PGSQLOBJ) + $(CC) $(CFLAGS) -o $@ $(PGSQLOBJ) $(CC_LDFLAGS) $(CC_WINFLAG) -I/usr/include/pgsql -L/usr/lib/pgsql -lpq +@@ -95,7 +95,7 @@ minmax2300: $(MINMAXOBJ) + $(CC) $(CFLAGS) -o $@ $(MINMAXOBJ) $(CC_LDFLAGS) $(CC_WINFLAG) + + mysqlhistlog2300 : +- $(CC) $(CFLAGS) -o mysqlhistlog2300 mysqlhistlog2300.c rw2300.c linux2300.c $(CC_LDFLAGS) $(CC_WINFLAG) -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient ++ $(CC) $(CFLAGS) -o mysqlhistlog2300 mysqlhistlog2300.c rw2300.c linux2300.c $(CC_LDFLAGS) $(CC_WINFLAG) + + + install: +-- +1.8.5.3 + diff --git a/package/open2300/Config.in b/package/open2300/Config.in new file mode 100644 index 00000000..df0a969f --- /dev/null +++ b/package/open2300/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_OPEN2300 + bool "open2300" + help + open2300 reads (and writes) data from a Lacrosse + WS2300/WS2305/WS2310/WS2315 Weather Station + + http://www.lavrsen.dk/foswiki/bin/view/Open2300/WebHome diff --git a/package/open2300/open2300.hash b/package/open2300/open2300.hash new file mode 100644 index 00000000..f8b11506 --- /dev/null +++ b/package/open2300/open2300.hash @@ -0,0 +1,4 @@ +# Localy computed +sha256 ffa7f8d35b16abfbf5e52285cb21f2a7fc6afb901abb40c0c80eef9d23d08aab open2300-f21982e0b1f8321561e5ad1668307fde97700e1b.tar.gz + +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING diff --git a/package/open2300/open2300.mk b/package/open2300/open2300.mk new file mode 100644 index 00000000..74f6d720 --- /dev/null +++ b/package/open2300/open2300.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# open2300 +# +################################################################################ + +OPEN2300_VERSION = f21982e0b1f8321561e5ad1668307fde97700e1b +OPEN2300_SITE = $(call github,wezm,open2300,$(OPEN2300_VERSION)) +OPEN2300_LICENSE = GPL-2.0 +OPEN2300_LICENSE_FILES = COPYING + +OPEN2300_BINS = \ + open2300 dump2300 log2300 fetch2300 wu2300 cw2300 history2300 \ + histlog2300 bin2300 xml2300 light2300 interval2300 minmax2300 +OPEN2300_CFLAGS = $(TARGET_CFLAGS) +OPEN2300_LDFLAGS = $(TARGET_LDFLAGS) + +ifeq ($(BR2_PACKAGE_MARIADB),y) +OPEN2300_DEPENDENCIES += mariadb +OPEN2300_BINS += mysql2300 mysqlhistlog2300 +OPEN2300_CFLAGS += $(shell $(STAGING_DIR)/usr/bin/mysql_config --cflags) +OPEN2300_LDFLAGS += $(shell $(STAGING_DIR)/usr/bin/mysql_config --libs) +endif + +define OPEN2300_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_LD)" \ + CFLAGS="$(OPEN2300_CFLAGS)" CC_LDFLAGS="$(OPEN2300_LDFLAGS)" \ + -C $(@D) $(OPEN2300_BINS) +endef + +define OPEN2300_INSTALL_TARGET_CMDS + for prog in $(OPEN2300_BINS); do \ + $(INSTALL) -D -m 0755 $(@D)/$$prog $(TARGET_DIR)/usr/bin/$$prog ; \ + done +endef + +$(eval $(generic-package)) diff --git a/package/open62541/Config.in b/package/open62541/Config.in new file mode 100644 index 00000000..296be157 --- /dev/null +++ b/package/open62541/Config.in @@ -0,0 +1,117 @@ +config BR2_PACKAGE_OPEN62541 + bool "open62541" + help + open62541 is an open source and free implementation of OPC UA. + + https://open62541.org/ + +if BR2_PACKAGE_OPEN62541 + +choice + prompt "encryption" + default BR2_PACKAGE_OPEN62541_ENCRYPTION_NONE + help + Encryption support + +config BR2_PACKAGE_OPEN62541_ENCRYPTION_NONE + bool "none" + +config BR2_PACKAGE_OPEN62541_ENCRYPTION_MBEDTLS + bool "mbedtls" + select BR2_PACKAGE_MBEDTLS + +config BR2_PACKAGE_OPEN62541_ENCRYPTION_OPENSSL + bool "openssl" + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + +endchoice + +choice + prompt "namespace zero nodes" + help + Namespace zero contains the standard-defined nodes. The full + namespace zero may not be required for all applications. + +config BR2_PACKAGE_OPEN62541_UA_NAMESPACE_ZERO_DEFAULT + bool "default" + help + Use the default namespace zero contents. + +config BR2_PACKAGE_OPEN62541_UA_NAMESPACE_ZERO_MINIMAL + bool "minimal" + help + A barebones namespace zero that is compatible with most + clients. But this namespace 0 is so small that it does not + pass the CTT (Conformance Testing Tools of the OPC + Foundation). + +config BR2_PACKAGE_OPEN62541_UA_NAMESPACE_ZERO_REDUCED + bool "reduced" + help + Small namespace zero that passes the CTT. + +config BR2_PACKAGE_OPEN62541_UA_NAMESPACE_ZERO_FULL + bool "full" + help + Full namespace zero generated from the official XML + definitions. + +endchoice + +config BR2_PACKAGE_OPEN62541_HISTORIZING + bool "historizing" + help + Enable basic support for historical access (client and server) + +config BR2_PACKAGE_OPEN62541_DISCOVERY + bool "discovery" + help + Enable Discovery Service (LDS) + +config BR2_PACKAGE_OPEN62541_JSON_ENCODING + bool "json encoding" + help + Enable JSON encoding + +config BR2_PACKAGE_OPEN62541_PUBSUB + bool "publish/subscribe" + help + Enable the experimental OPC UA PubSub support. The option + will include the PubSub UDP multicast plugin. + +if BR2_PACKAGE_OPEN62541_PUBSUB + +config BR2_PACKAGE_OPEN62541_PUBSUB_DELTAFRAMES + bool "publish/subscribe deltaframes" + help + The PubSub messages differentiate between keyframe (all + published values contained) and deltaframe (only changed + values contained) messages. Deltaframe messages creation + consumes some additional ressources. + +config BR2_PACKAGE_OPEN62541_PUBSUB_INFORMATIONMODEL + bool "publish/subscribe information model" + depends on BR2_PACKAGE_OPEN62541_UA_NAMESPACE_ZERO_REDUCED || \ + BR2_PACKAGE_OPEN62541_UA_NAMESPACE_ZERO_FULL + help + Enable the information model representation of the PubSub + configuration. + +if BR2_PACKAGE_OPEN62541_PUBSUB_INFORMATIONMODEL + +config BR2_PACKAGE_OPEN62541_PUBSUB_INFORMATIONMODEL_METHODS + bool "publish/subscribe information model methods" + help + Enable PubSub informationmodel methods + +endif + +config BR2_PACKAGE_OPEN62541_PUBSUB_ETH_UADP + bool "publish/subscribe UADP" + help + Enable publish/subscribe UADP over Ethernet + +endif # BR2_PACKAGE_OPEN62541_PUBSUB + +endif diff --git a/package/open62541/open62541.hash b/package/open62541/open62541.hash new file mode 100644 index 00000000..be9ee77c --- /dev/null +++ b/package/open62541/open62541.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 34fbf37e7f8e159b0a187bf8b0663af0187161ba4c5015828590c919645d596a open62541-v1.3.11-git4.tar.gz +sha256 fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85 LICENSE diff --git a/package/open62541/open62541.mk b/package/open62541/open62541.mk new file mode 100644 index 00000000..26c3cd5c --- /dev/null +++ b/package/open62541/open62541.mk @@ -0,0 +1,99 @@ +################################################################################ +# +# open62541 +# +################################################################################ + +OPEN62541_VERSION = v1.3.11 +OPEN62541_SITE_METHOD = git +OPEN62541_SITE = https://github.com/open62541/open62541.git +OPEN62541_GIT_SUBMODULES = YES +OPEN62541_INSTALL_STAGING = YES +OPEN62541_LICENSE = MPL-2.0 +OPEN62541_LICENSE_FILES = LICENSE +OPEN62541_CPE_ID_VENDOR = open62541 + +# Force Release build to remove -Werror. +# Don't use git describe to get the version number. +# Disable hardening options to let Buildroot handle it. +OPEN62541_CONF_OPTS = \ + -DCMAKE_BUILD_TYPE=Release \ + -DGIT_EXECUTABLE=NO \ + -DOPEN62541_VERSION=$(OPEN62541_VERSION) \ + -DUA_ENABLE_HARDENING=OFF \ + -DUA_FORCE_WERROR=OFF + +ifeq ($(BR2_PACKAGE_OPEN62541_ENCRYPTION_MBEDTLS),y) +OPEN62541_DEPENDENCIES += mbedtls +OPEN62541_CONF_OPTS += -DUA_ENABLE_ENCRYPTION=MBEDTLS +endif + +ifeq ($(BR2_PACKAGE_OPEN62541_ENCRYPTION_OPENSSL),y) +OPEN62541_DEPENDENCIES += openssl +OPEN62541_CONF_OPTS += -DUA_ENABLE_ENCRYPTION=OPENSSL +endif + +ifeq ($(BR2_PACKAGE_OPEN62541_UA_NAMESPACE_ZERO_MINIMAL),y) +OPEN62541_CONF_OPTS += -DUA_NAMESPACE_ZERO=MINIMAL -DUA_ENABLE_SUBSCRIPTIONS_EVENTS=OFF +else ifeq ($(BR2_PACKAGE_OPEN62541_UA_NAMESPACE_ZERO_REDUCED),y) +OPEN62541_CONF_OPTS += -DUA_NAMESPACE_ZERO=REDUCED +else ifeq ($(BR2_PACKAGE_OPEN62541_UA_NAMESPACE_ZERO_FULL),y) +OPEN62541_CONF_OPTS += -DUA_NAMESPACE_ZERO=FULL +endif + +ifeq ($(BR2_PACKAGE_OPEN62541_HISTORIZING),y) +OPEN62541_CONF_OPTS += -DUA_ENABLE_HISTORIZING=ON +else +OPEN62541_CONF_OPTS += -DUA_ENABLE_HISTORIZING=OFF +endif + +ifeq ($(BR2_PACKAGE_OPEN62541_DISCOVERY),y) +OPEN62541_CONF_OPTS += -DUA_ENABLE_DISCOVERY=ON +else +OPEN62541_CONF_OPTS += -DUA_ENABLE_DISCOVERY=OFF +endif + +ifeq ($(BR2_PACKAGE_OPEN62541_JSON_ENCODING),y) +OPEN62541_CONF_OPTS += -DUA_ENABLE_JSON_ENCODING=ON +else +OPEN62541_CONF_OPTS += -DUA_ENABLE_JSON_ENCODING=OFF +endif + +ifeq ($(BR2_PACKAGE_OPEN62541_PUBSUB),y) +OPEN62541_CONF_OPTS += -DUA_ENABLE_PUBSUB=ON +else +OPEN62541_CONF_OPTS += -DUA_ENABLE_PUBSUB=OFF +endif + +ifeq ($(BR2_PACKAGE_OPEN62541_PUBSUB_DELTAFRAMES),y) +OPEN62541_CONF_OPTS += -DUA_ENABLE_PUBSUB_DELTAFRAMES=ON +else +OPEN62541_CONF_OPTS += -DUA_ENABLE_PUBSUB_DELTAFRAMES=OFF +endif + +ifeq ($(BR2_PACKAGE_OPEN62541_PUBSUB_INFORMATIONMODEL),y) +OPEN62541_CONF_OPTS += -DUA_ENABLE_PUBSUB_INFORMATIONMODEL=ON +else +OPEN62541_CONF_OPTS += -DUA_ENABLE_PUBSUB_INFORMATIONMODEL=OFF +endif + +ifeq ($(BR2_PACKAGE_OPEN62541_PUBSUB_INFORMATIONMODEL_METHODS),y) +OPEN62541_CONF_OPTS += -DUA_ENABLE_PUBSUB_INFORMATIONMODEL_METHODS=ON +else +OPEN62541_CONF_OPTS += -DUA_ENABLE_PUBSUB_INFORMATIONMODEL_METHODS=OFF +endif + +ifeq ($(BR2_PACKAGE_OPEN62541_PUBSUB_ETH_UADP),y) +OPEN62541_CONF_OPTS += -DUA_ENABLE_PUBSUB_ETH_UADP=ON +else +OPEN62541_CONF_OPTS += -DUA_ENABLE_PUBSUB_ETH_UADP=OFF +endif + +# Remove unneeded files +define OPEN62541_REMOVE_UNNEEDED_FILES + $(RM) -r $(TARGET_DIR)/usr/share/open62541 +endef + +OPEN62541_POST_INSTALL_TARGET_HOOKS += OPEN62541_REMOVE_UNNEEDED_FILES + +$(eval $(cmake-package)) diff --git a/package/openal/Config.in b/package/openal/Config.in new file mode 100644 index 00000000..6b0e9973 --- /dev/null +++ b/package/openal/Config.in @@ -0,0 +1,34 @@ +# openal can: +# - use __atomic_*() intrinsics when available +# - otherwise use __sync_*() intrinsics when available. It needs the +# 4-byte ones on 32 bits architectures, and the 4-byte and 8-byte +# one on 64 bits architecture +# - it also provides its one implementation of atomic operations on +# x86 and x86_64, but we dont take those into account since in most +# situations __atomic_*() or __sync_*() will be available, and not +# all x86 CPUs provide the necessary assembly instructions. +config BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + bool + default y if BR2_TOOLCHAIN_HAS_ATOMIC + default y if BR2_TOOLCHAIN_HAS_SYNC_4 && !BR2_ARCH_IS_64 + default y if BR2_TOOLCHAIN_HAS_SYNC_4 && BR2_TOOLCHAIN_HAS_SYNC_8 && BR2_ARCH_IS_64 + +config BR2_PACKAGE_OPENAL + bool "openal" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 PR56019 + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + help + OpenAL provides capabilities for playing audio in a virtual + 3D environment. Distance attenuation, doppler shift, and + directional sound emitters are among the features handled by + the API. + + http://kcat.strangesoft.net/openal.html + +comment "openal needs a toolchain w/ NPTL, C++, gcc >= 4.9" + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL \ + || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/openal/openal.hash b/package/openal/openal.hash new file mode 100644 index 00000000..eae78b05 --- /dev/null +++ b/package/openal/openal.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 814831a8013d7365dfd1917b27f1fb6e723f3be3fe1c6a7ff4516425d8392f68 openal-1.22.0.tar.gz +sha256 d808ce217e5b611854da622b57ec29fe545584c48bc5352fae72a4b6e5074a15 COPYING diff --git a/package/openal/openal.mk b/package/openal/openal.mk new file mode 100644 index 00000000..3d624139 --- /dev/null +++ b/package/openal/openal.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# openal +# +################################################################################ + +OPENAL_VERSION = 1.22.0 +OPENAL_SITE = $(call github,kcat,openal-soft,$(OPENAL_VERSION)) +OPENAL_LICENSE = LGPL-2.0+ +OPENAL_LICENSE_FILES = COPYING +OPENAL_INSTALL_STAGING = YES + +# 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 +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +OPENAL_DEPENDENCIES += alsa-lib +OPENAL_CONF_OPTS += -DALSOFT_REQUIRE_ALSA=ON +else +OPENAL_CONF_OPTS += -DALSOFT_REQUIRE_ALSA=OFF +endif + +ifeq ($(BR2_PACKAGE_JACK2),y) +OPENAL_DEPENDENCIES += jack2 +OPENAL_CONF_OPTS += -DALSOFT_REQUIRE_JACK=ON +else +OPENAL_CONF_OPTS += -DALSOFT_REQUIRE_JACK=OFF +endif + +ifeq ($(BR2_PACKAGE_PORTAUDIO),y) +OPENAL_DEPENDENCIES += portaudio +OPENAL_CONF_OPTS += -DALSOFT_REQUIRE_PORTAUDIO=ON +else +OPENAL_CONF_OPTS += -DALSOFT_REQUIRE_PORTAUDIO=OFF +endif + +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +OPENAL_DEPENDENCIES += pulseaudio +OPENAL_CONF_OPTS += -DALSOFT_REQUIRE_PULSEAUDIO=ON +else +OPENAL_CONF_OPTS += -DALSOFT_REQUIRE_PULSEAUDIO=OFF +endif + +ifeq ($(BR2_STATIC_LIBS),y) +OPENAL_CONF_OPTS += -DLIBTYPE=STATIC +endif + +$(eval $(cmake-package)) diff --git a/package/openblas/0001-Makefile.system-don-t-specify-optimization-level-bui.patch b/package/openblas/0001-Makefile.system-don-t-specify-optimization-level-bui.patch new file mode 100644 index 00000000..ed3cae82 --- /dev/null +++ b/package/openblas/0001-Makefile.system-don-t-specify-optimization-level-bui.patch @@ -0,0 +1,40 @@ +From 89648b76e35dc4657942c861ed9dbfbfe5a3df28 Mon Sep 17 00:00:00 2001 +From: Thomas De Schampheleire +Date: Fri, 5 Mar 2021 14:09:23 +0100 +Subject: [PATCH] Makefile.system: don't specify optimization level + [buildroot-specific] + +Buildroot will pass an optimization level, but it is ignored because the +openblas makefiles _append_ to the flags passed on the command-line. + +The CFLAGS/FFLAGS would e.g. contain '-Os -O2' in which -O2 survives. + +Remove the optimization level specified in openblas itself. + +Upstream: N/A, not upstreamable +Signed-off-by: Thomas De Schampheleire +--- + Makefile.system | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile.system b/Makefile.system +index 343b94bb3..c355ca5d9 100644 +--- a/Makefile.system ++++ b/Makefile.system +@@ -1585,11 +1585,11 @@ FCOMMON_OPT += -g + endif + + ifndef COMMON_OPT +-COMMON_OPT = -O2 ++COMMON_OPT = + endif + + ifndef FCOMMON_OPT +-FCOMMON_OPT = -O2 -frecursive ++FCOMMON_OPT = -frecursive + endif + + override CFLAGS += $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR) +-- +2.40.1 + diff --git a/package/openblas/0002-fix-position-of-endif-gemm3m-tests-should-not-be-run-in-cross-compiles.patch b/package/openblas/0002-fix-position-of-endif-gemm3m-tests-should-not-be-run-in-cross-compiles.patch new file mode 100644 index 00000000..44883b2c --- /dev/null +++ b/package/openblas/0002-fix-position-of-endif-gemm3m-tests-should-not-be-run-in-cross-compiles.patch @@ -0,0 +1,33 @@ +From 48e017de095018c60d83355804a3075658b4970c Mon Sep 17 00:00:00 2001 +From: Martin Kroeker +Date: Fri, 5 Apr 2024 22:54:34 +0200 +Subject: [PATCH] fix position of endif - gemm3m tests should not be run in + cross-compiles + +Upstream: https://github.com/OpenMathLib/OpenBLAS/commit/48e017de095018c60d83355804a3075658b4970c +Signed-off-by: Fabrice Fontaine +--- + ctest/Makefile | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/ctest/Makefile b/ctest/Makefile +index bbaf96f8ed..6c7cc1ed56 100644 +--- a/ctest/Makefile ++++ b/ctest/Makefile +@@ -203,7 +203,6 @@ ifeq ($(BUILD_COMPLEX16),1) + OPENBLAS_NUM_THREADS=2 ./xzcblat3 < zin3 + endif + endif +-endif + + ifeq ($(SUPPORT_GEMM3M),1) + ifeq ($(USE_OPENMP), 1) +@@ -222,7 +221,7 @@ ifeq ($(BUILD_COMPLEX16),1) + endif + endif + endif +- ++endif + + + diff --git a/package/openblas/Config.in b/package/openblas/Config.in new file mode 100644 index 00000000..7d472700 --- /dev/null +++ b/package/openblas/Config.in @@ -0,0 +1,99 @@ +config BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET + string + default "P2" if BR2_x86_pentium2 + default "KATMAI" if BR2_x86_pentium3 + default "NORTHWOOD" if BR2_x86_pentium4 + default "PRESCOTT" if BR2_x86_prescott || BR2_x86_nocona + default "BANIAS" if BR2_x86_pentium_m + default "CORE2" if BR2_x86_core2 + default "NEHALEM" if BR2_x86_corei7 || BR2_x86_silvermont || BR2_x86_westmere + default "SANDYBRIDGE" if BR2_x86_corei7_avx + default "HASWELL" if BR2_x86_core_avx2 + default "ATOM" if BR2_x86_atom + default "ATHLON" if BR2_x86_athlon || BR2_x86_athlon_4 + default "OPTERON" if BR2_x86_opteron + default "OPTERON_SSE3" if BR2_x86_opteron_sse3 + default "BARCELONA" if BR2_x86_barcelona + default "BOBCAT" if BR2_x86_jaguar + default "STEAMROLLER" if BR2_x86_steamroller + default "VIAC3" if BR2_x86_c3 || BR2_x86_c32 + default "POWER4" if BR2_powerpc_power4 + default "POWER5" if BR2_powerpc_power5 + default "POWER6" if BR2_powerpc_power6 + default "POWER7" if BR2_powerpc_power7 + default "POWER8" if BR2_powerpc_power8 + default "PPCG4" if BR2_powerpc_7400 || BR2_powerpc_7450 + default "PPC970" if BR2_powerpc_970 + default "PPC440" if BR2_powerpc_440 + default "PPC440FP2" if BR2_powerpc_440fp + default "MIPS64_GENERIC" if BR2_MIPS_CPU_MIPS64 + # OpenBLAS assumes SPARC=Sparc v9 + default "SPARC" if BR2_sparc_v9 + # Cortex-A15 always have a VFPv4 + default "CORTEXA15" if (BR2_cortex_a15 && BR2_ARM_EABIHF) + # Cortex-A9 have an optional VFPv3, so we need to make sure it + # is available + default "CORTEXA9" if (BR2_cortex_a9 && BR2_ARM_EABIHF && \ + BR2_ARM_CPU_HAS_VFPV3) + default "ARMV5" if BR2_ARM_CPU_ARMV5 + # On ARMv6, OpenBLAS assumes that a VFP is available, and + # EABIhf is used + default "ARMV6" if (BR2_ARM_CPU_ARMV6 && BR2_ARM_EABIHF && \ + BR2_ARM_CPU_HAS_VFPV2) + # On ARMv7, OpenBLAS assumes that a full VFPv3+ is available + # (and not the more limited D16 variant), and that EABIhf is + # used. + default "ARMV7" if (BR2_ARM_CPU_ARMV7A && BR2_ARM_EABIHF && \ + BR2_ARM_CPU_HAS_VFPV3) + default "ARMV8" if BR2_aarch64 || BR2_aarch64_be + default "RISCV64_GENERIC" if BR2_RISCV_64 + help + OpenBLAS target CPU. See TargetList.txt in the source tree for + the possible target strings. A possible value is set + automatically based on your Target Architecture Variant. + +config BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS + bool + default y if BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET != "" + +config BR2_PACKAGE_OPENBLAS + bool "openblas" + depends on BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS + help + An optimized BLAS library based on GotoBLAS2 1.13 BSD version. + + https://www.openblas.net/ + +if BR2_PACKAGE_OPENBLAS + +config BR2_PACKAGE_OPENBLAS_TARGET + string "OpenBLAS target CPU" + default BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET + +config BR2_PACKAGE_OPENBLAS_USE_THREAD + bool "use multithreading" + default y + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + Tell OpenBLAS to use multithreading, by passing USE_THREAD=1. + +config BR2_PACKAGE_OPENBLAS_USE_LOCKING + bool "use locking" + default y + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_PACKAGE_OPENBLAS_USE_THREAD + help + Tell OpenBLAS to use locking, by passing USE_LOCKING=1. + Locking is implicitly enabled when USE_THREAD=1. + However, if USE_THREAD=0 (i.e. OpenBLAS itself will run in + single-threaded mode) but an application makes OpenBLAS + function calls from multiple threads, then locking is + mandatory for correct operation. + +config BR2_PACKAGE_OPENBLAS_INSTALL_TESTS + bool "install tests" + help + Install C test programs on target. + +endif diff --git a/package/openblas/openblas.hash b/package/openblas/openblas.hash new file mode 100644 index 00000000..cd594969 --- /dev/null +++ b/package/openblas/openblas.hash @@ -0,0 +1,5 @@ +# From https://github.com/OpenMathLib/OpenBLAS/releases/tag/v0.3.27 +md5 ef71c66ffeb1ab0f306a37de07d2667f openblas-0.3.27.tar.gz +# Locally calculated +sha256 aa2d68b1564fe2b13bc292672608e9cdeeeb6dc34995512e65c3b10f4599e897 openblas-0.3.27.tar.gz +sha256 190b5a9c8d9723fe958ad33916bd7346d96fab3c5ea90832bb02d854f620fcff LICENSE diff --git a/package/openblas/openblas.mk b/package/openblas/openblas.mk new file mode 100644 index 00000000..a3c7a194 --- /dev/null +++ b/package/openblas/openblas.mk @@ -0,0 +1,105 @@ +################################################################################ +# +# openblas +# +################################################################################ + +OPENBLAS_VERSION = 0.3.27 +OPENBLAS_SITE = https://github.com/OpenMathLib/OpenBLAS/releases/download/v$(OPENBLAS_VERSION) +OPENBLAS_LICENSE = BSD-3-Clause +OPENBLAS_LICENSE_FILES = LICENSE +OPENBLAS_INSTALL_STAGING = YES +OPENBLAS_CPE_ID_VALID = YES + +# Initialise OpenBLAS make options to $(TARGET_CONFIGURE_OPTS) +OPENBLAS_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) + +# Enable cross-compiling +OPENBLAS_MAKE_OPTS += CROSS=1 + +# Set OpenBLAS target +OPENBLAS_MAKE_OPTS += TARGET=$(BR2_PACKAGE_OPENBLAS_TARGET) + +# When Fortran is not available, only build the C version of BLAS +ifeq ($(BR2_TOOLCHAIN_HAS_FORTRAN),) +OPENBLAS_MAKE_OPTS += ONLY_CBLAS=1 +endif + +# Enable/Disable multi-threading (not for static-only since it uses dlfcn.h) +ifeq ($(BR2_PACKAGE_OPENBLAS_USE_THREAD),y) +OPENBLAS_MAKE_OPTS += USE_THREAD=1 +else +OPENBLAS_MAKE_OPTS += USE_THREAD=0 +endif + +ifeq ($(BR2_PACKAGE_OPENBLAS_USE_LOCKING),y) +OPENBLAS_MAKE_OPTS += USE_LOCKING=1 +else +# not passing USE_LOCKING=0 as this could be confusing: its effect is implicit +# in case of USE_THREAD=1. +endif + +# We don't know if OpenMP is available or not, so disable +OPENBLAS_MAKE_OPTS += USE_OPENMP=0 + +# Static-only/Shared-only toggle +# Note: static library is always generated so that applications can link +# statically for size reduction, even if BR2_STATIC_LIBS is not set. +ifeq ($(BR2_STATIC_LIBS),y) +OPENBLAS_MAKE_OPTS += NO_SHARED=1 +endif + +ifeq ($(BR2_ARCH_IS_64),y) +OPENBLAS_MAKE_OPTS += BINARY=64 +else +OPENBLAS_MAKE_OPTS += BINARY=32 +endif + +# binutils version <= 2.23.2 has a bug +# (https://sourceware.org/bugzilla/show_bug.cgi?id=14887) where +# whitespaces in ARM register specifications such as [ r1, #12 ] or [ +# r2 ] cause the assembler to reject the code. Since there are +# numerous instances of such cases in the code, we use sed rather than +# a patch. We simply replace [ foobar ] by [foobar] to work around the +# problem. +define OPENBLAS_FIXUP_ARM_ASSEMBLY + $(SED) 's%\[\s*%\[%;s%\s*\]%\]%' $(@D)/kernel/arm/*.S +endef + +OPENBLAS_POST_PATCH_HOOKS += OPENBLAS_FIXUP_ARM_ASSEMBLY + +define OPENBLAS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(OPENBLAS_MAKE_OPTS) \ + -C $(@D) +endef + +define OPENBLAS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(OPENBLAS_MAKE_OPTS) \ + -C $(@D) install PREFIX=$(STAGING_DIR)/usr +endef + +define OPENBLAS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(OPENBLAS_MAKE_OPTS) \ + -C $(@D) install PREFIX=$(TARGET_DIR)/usr +endef + +ifeq ($(BR2_PACKAGE_OPENBLAS_INSTALL_TESTS),y) +# Tests are always built, but are not installed, so we need to install +# them manually. The set of available tests may fluctuate depending on +# the architecture and other options, so only install whatever gets +# built. +define OPENBLAS_INSTALL_TESTS + mkdir -p $(TARGET_DIR)/usr/libexec/openblas/tests + find $(@D)/ctest \ + -type f -name "x[sdcz]cblat[123]" -perm -0100 \ + -exec $(INSTALL) -m 0755 {} \ + $(TARGET_DIR)/usr/libexec/openblas/tests \; + find $(@D)/ctest \ + -type f -name "[sdcz]in[123]" \ + -exec $(INSTALL) -m 0644 {} \ + $(TARGET_DIR)/usr/libexec/openblas/tests \; +endef +OPENBLAS_POST_INSTALL_TARGET_HOOKS += OPENBLAS_INSTALL_TESTS +endif + +$(eval $(generic-package)) diff --git a/package/openbox/Config.in b/package/openbox/Config.in new file mode 100644 index 00000000..e042ed2b --- /dev/null +++ b/package/openbox/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_OPENBOX + bool "openbox" + depends on BR2_PACKAGE_XORG7 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # pango -> harfbuzz + depends on BR2_INSTALL_LIBSTDCPP # pango -> freetype + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_PANGO + select BR2_PACKAGE_XLIB_LIBX11 + # libxft and libxrender are needed to get xft support in pango + select BR2_PACKAGE_XLIB_LIBXFT + select BR2_PACKAGE_XLIB_LIBXRENDER + help + Openbox is a highly configurable, next generation window + manager with extensive standards support. + + http://openbox.org + +comment "openbox needs a toolchain w/ C++, threads, wchar, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_XORG7 diff --git a/package/openbox/openbox.hash b/package/openbox/openbox.hash new file mode 100644 index 00000000..c3f9953a --- /dev/null +++ b/package/openbox/openbox.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 abe75855cc5616554ffd47134ad15291fe37ebbebf1a80b69cbde9d670f0e26d openbox-3.6.1.tar.xz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/openbox/openbox.mk b/package/openbox/openbox.mk new file mode 100644 index 00000000..91d1c865 --- /dev/null +++ b/package/openbox/openbox.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# openbox +# +################################################################################ + +OPENBOX_VERSION = 3.6.1 +OPENBOX_SOURCE = openbox-$(OPENBOX_VERSION).tar.xz +OPENBOX_SITE = http://openbox.org/dist/openbox +OPENBOX_LICENSE = GPL-2.0+ +OPENBOX_LICENSE_FILES = COPYING + +OPENBOX_CONF_OPTS = \ + --x-includes=$(STAGING_DIR)/usr/include/X11 \ + --x-libraries=$(STAGING_DIR)/usr/lib + +OPENBOX_DEPENDENCIES = xlib_libX11 libxml2 libglib2 pango host-pkgconf + +ifeq ($(BR2_PACKAGE_IMLIB2_X),y) +OPENBOX_CONF_OPTS += --enable-imlib2 +OPENBOX_DEPENDENCIES += imlib2 +else +OPENBOX_CONF_OPTS += --disable-imlib2 +endif + +ifeq ($(BR2_PACKAGE_STARTUP_NOTIFICATION),y) +OPENBOX_CONF_OPTS += --enable-startup-notification +OPENBOX_DEPENDENCIES += startup-notification +else +OPENBOX_CONF_OPTS += --disable-startup-notification +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBSM),y) +OPENBOX_CONF_OPTS += --enable-session-management +OPENBOX_DEPENDENCIES += xlib_libSM +else +OPENBOX_CONF_OPTS += --disable-session-management +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +OPENBOX_CONF_OPTS += --enable-xinerama +OPENBOX_DEPENDENCIES += xlib_libXinerama +else +OPENBOX_CONF_OPTS += --disable-xinerama +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) +OPENBOX_CONF_OPTS += --enable-xrandr +OPENBOX_DEPENDENCIES += xlib_libXrandr +else +OPENBOX_CONF_OPTS += --disable-xrandr +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y) +OPENBOX_DEPENDENCIES += xlib_libXcursor +OPENBOX_CONF_OPTS += --enable-xcursor +else +OPENBOX_CONF_OPTS += --disable-xcursor +endif + +$(eval $(autotools-package)) diff --git a/package/opencl-clhpp/Config.in b/package/opencl-clhpp/Config.in new file mode 100644 index 00000000..59110ec2 --- /dev/null +++ b/package/opencl-clhpp/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_OPENCL_CLHPP + bool "opencl-clhpp" + # header only library, so there is no build per-se, but + # packages depending on us will need C++ support + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_HAS_LIBOPENCL + help + opencl-clhpp are the OpenCL API C++ bindings + + http://github.khronos.org/OpenCL-CLHPP/ + +comment "opencl-clhpp needs a toolchain w/ C++" + depends on BR2_PACKAGE_HAS_LIBOPENCL + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/opencl-clhpp/opencl-clhpp.hash b/package/opencl-clhpp/opencl-clhpp.hash new file mode 100644 index 00000000..3f038d63 --- /dev/null +++ b/package/opencl-clhpp/opencl-clhpp.hash @@ -0,0 +1,3 @@ +# Locally Computed +sha256 9106700634e79cfa0935ebd67197f64689ced24c42da702acf18fa8435bd8a82 opencl-clhpp-2023.12.14.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/opencl-clhpp/opencl-clhpp.mk b/package/opencl-clhpp/opencl-clhpp.mk new file mode 100644 index 00000000..93c25d0d --- /dev/null +++ b/package/opencl-clhpp/opencl-clhpp.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# opencl-clhpp +# +################################################################################ + +OPENCL_CLHPP_VERSION = 2023.12.14 +OPENCL_CLHPP_SITE = $(call github,KhronosGroup,OpenCL-CLHPP,v$(OPENCL_CLHPP_VERSION)) +OPENCL_CLHPP_LICENSE = Apache-2.0 +OPENCL_CLHPP_LICENSE_FILES = LICENSE.txt +OPENCL_CLHPP_DEPENDENCIES = libopencl +OPENCL_CLHPP_INSTALL_STAGING = YES + +# OpenCL_CLHPP is a header-only library +OPENCL_CLHPP_INSTALL_TARGET = NO + +# This package has a CMake build system, and it checks for C++11 +# compliant compiler, but all we need to do is install two headers, so +# let's do it manually. +OPENCL_CLHPP_HEADERS = cl2.hpp opencl.hpp + +define OPENCL_CLHPP_INSTALL_STAGING_CMDS + $(foreach header,$(OPENCL_CLHPP_HEADERS), \ + $(INSTALL) -D -m 0644 $(@D)/include/CL/$(header) \ + $(STAGING_DIR)/usr/include/CL/$(header) + ) +endef + +$(eval $(generic-package)) diff --git a/package/openconnect/0001-Fix-implicit-declaration-of-function-malloc.patch b/package/openconnect/0001-Fix-implicit-declaration-of-function-malloc.patch new file mode 100644 index 00000000..4732c4fb --- /dev/null +++ b/package/openconnect/0001-Fix-implicit-declaration-of-function-malloc.patch @@ -0,0 +1,40 @@ +From 5185f640045df2b4f8ee7f028fc59e6f02fdf367 Mon Sep 17 00:00:00 2001 +From: Brahmajit Das +Date: Mon, 29 Jan 2024 23:28:53 +0530 +Subject: [PATCH] Fix implicit declaration of function 'malloc' + +First observed on Gentoo Linux with GCC 14. This is due to GCC 14 +enabling -Werror=implicit-function-declaration by default. +Thus resulting in errors such as: + +openconnect-internal.h: In function 'alloc_pkt': +openconnect-internal.h:911:27: error: implicit declaration of function 'malloc' [-Werror=implicit-function-declaration] + 911 | struct pkt *pkt = malloc(alloc_len); + | ^~~~~~ + +Plese refer gentoo bug: https://bugs.gentoo.org/923173 +Signed-off-by: Brahmajit Das + +Upstream: https://gitlab.com/openconnect/openconnect/-/commit/5185f640045df2b4f8ee7f028fc59e6f02fdf367 + +Signed-off-by: Bernd Kuhls +[rebased for 9.12] +--- + openconnect-internal.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/openconnect-internal.h b/openconnect-internal.h +index 21460adf6..2830d693f 100644 +--- a/openconnect-internal.h ++++ b/openconnect-internal.h +@@ -87,6 +87,7 @@ + + #include + #include ++#include + + #ifdef _WIN32 + #ifndef _Out_cap_c_ +-- +GitLab + diff --git a/package/openconnect/Config.in b/package/openconnect/Config.in new file mode 100644 index 00000000..ab065be3 --- /dev/null +++ b/package/openconnect/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_OPENCONNECT + bool "openconnect" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_GNUTLS + # configure: error: LibreSSL does not support Cisco DTLS. + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL if !BR2_PACKAGE_GNUTLS + select BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_ZLIB + help + OpenConnect is an SSL VPN client initially created to support + Cisco's AnyConnect SSL VPN. + It has since been ported to support the Juniper SSL VPN (which + is now known as Pulse Connect Secure), the Palo Alto Networks + GlobalProtect SSL VPN the F5 Big-IP SSL VPN, and the Fortinet + FortiGate SSL VPN. + + https://www.infradead.org/openconnect/ diff --git a/package/openconnect/openconnect.hash b/package/openconnect/openconnect.hash new file mode 100644 index 00000000..86bdaa5d --- /dev/null +++ b/package/openconnect/openconnect.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a2bedce3aa4dfe75e36e407e48e8e8bc91d46def5335ac9564fbf91bd4b2413e openconnect-9.12.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPL diff --git a/package/openconnect/openconnect.mk b/package/openconnect/openconnect.mk new file mode 100644 index 00000000..3fd9f990 --- /dev/null +++ b/package/openconnect/openconnect.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# openconnect +# +################################################################################ + +OPENCONNECT_VERSION = 9.12 +OPENCONNECT_SITE = https://www.infradead.org/openconnect/download +OPENCONNECT_DEPENDENCIES = host-pkgconf libxml2 zlib +OPENCONNECT_LICENSE = LGPL-2.1 +OPENCONNECT_LICENSE_FILES = COPYING.LGPL +OPENCONNECT_CONF_OPTS = \ + --disable-dsa-tests \ + --with-vpnc-script=/etc/vpnc/vpnc-script \ + --without-java + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +OPENCONNECT_DEPENDENCIES += openssl +OPENCONNECT_CONF_OPTS += --without-gnutls --with-openssl +else ifeq ($(BR2_PACKAGE_GNUTLS),y) +OPENCONNECT_DEPENDENCIES += gnutls +OPENCONNECT_CONF_OPTS += --with-gnutls --without-openssl +endif + +ifeq ($(BR2_PACKAGE_LZ4),y) +OPENCONNECT_DEPENDENCIES += lz4 +OPENCONNECT_CONF_OPTS += --with-lz4 +else +OPENCONNECT_CONF_OPTS += --without-lz4 +endif + +$(eval $(autotools-package)) diff --git a/package/opencore-amr/Config.in b/package/opencore-amr/Config.in new file mode 100644 index 00000000..e35c8ddd --- /dev/null +++ b/package/opencore-amr/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_OPENCORE_AMR + bool "opencore-amr" + depends on BR2_INSTALL_LIBSTDCPP + help + Library of OpenCORE Framework implementation of Adaptive + Multi Rate Narrowband and Wideband (AMR-NB and AMR-WB) + speech codec. + + http://opencore-amr.sourceforge.net/ + +comment "opencore-amr needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/opencore-amr/opencore-amr.hash b/package/opencore-amr/opencore-amr.hash new file mode 100644 index 00000000..2a2d7498 --- /dev/null +++ b/package/opencore-amr/opencore-amr.hash @@ -0,0 +1,6 @@ +# From https://sourceforge.net/projects/opencore-amr/files/opencore-amr/ +md5 e0798587b91411cc092aa73091a97dfc opencore-amr-0.1.5.tar.gz +sha1 bef4d1e3a8a155b47569b6691a223843b33e279e opencore-amr-0.1.5.tar.gz +# Locally computed: +sha256 2c006cb9d5f651bfb5e60156dbff6af3c9d35c7bbcc9015308c0aff1e14cd341 opencore-amr-0.1.5.tar.gz +sha256 8b3f1762349248d444ab9acbafe73941254e36e1064954da56bb9ddbd5873ddb LICENSE diff --git a/package/opencore-amr/opencore-amr.mk b/package/opencore-amr/opencore-amr.mk new file mode 100644 index 00000000..ac366e24 --- /dev/null +++ b/package/opencore-amr/opencore-amr.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# opencore-amr +# +################################################################################ + +OPENCORE_AMR_VERSION = 0.1.5 +OPENCORE_AMR_SITE = http://downloads.sourceforge.net/project/opencore-amr/opencore-amr +OPENCORE_AMR_INSTALL_STAGING = YES +OPENCORE_AMR_LICENSE = Apache-2.0 +OPENCORE_AMR_LICENSE_FILES = LICENSE + +$(eval $(autotools-package)) diff --git a/package/opencsd/Config.in b/package/opencsd/Config.in new file mode 100644 index 00000000..6e400cc2 --- /dev/null +++ b/package/opencsd/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_OPENCSD_ARCH_SUPPORTS + bool + default y if BR2_arm + default y if BR2_armeb + default y if BR2_aarch64 + default y if BR2_aarch64_be + +config BR2_PACKAGE_OPENCSD + bool "opencsd" + depends on BR2_PACKAGE_OPENCSD_ARCH_SUPPORTS + depends on !BR2_STATIC_LIBS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + help + This library provides an API suitable for the decode of + ARM(r) CoreSight(tm) trace streams. + + OpenCSD is for example an optional dependency in the Linux + "perf" tool, starting from kernel version 5.1. + + https://github.com/Linaro/OpenCSD + +comment "opencsd needs a toolchain w/ C++11, gcc >= 4.8, dynamic library" + depends on BR2_PACKAGE_OPENCSD_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS \ + || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 diff --git a/package/opencsd/opencsd.hash b/package/opencsd/opencsd.hash new file mode 100644 index 00000000..9800d213 --- /dev/null +++ b/package/opencsd/opencsd.hash @@ -0,0 +1,3 @@ +# Locally Computed: +sha256 86ee4248f26d768f60f4f4a09f62acaf63989a6448fe1f65a1539478123d95df opencsd-1.5.3.tar.gz +sha256 980eef4b0744e63834e3ec0d50c2a4ff6d81d7ec62dd8ba8c66acae0ec5a2e88 LICENSE diff --git a/package/opencsd/opencsd.mk b/package/opencsd/opencsd.mk new file mode 100644 index 00000000..42712133 --- /dev/null +++ b/package/opencsd/opencsd.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# opencsd +# +################################################################################ + +OPENCSD_VERSION = 1.5.3 +OPENCSD_SITE = $(call github,Linaro,OpenCSD,v$(OPENCSD_VERSION)) +OPENCSD_LICENSE = BSD-3-Clause +OPENCSD_LICENSE_FILES = LICENSE +OPENCSD_INSTALL_STAGING = YES + +OPENCSD_MAKE_OPTS = \ + CROSS_COMPILE="$(TARGET_CROSS)" + +define OPENCSD_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/decoder/build/linux \ + $(OPENCSD_MAKE_OPTS) all +endef + +define OPENCSD_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/decoder/build/linux \ + $(OPENCSD_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install +endef + +define OPENCSD_INSTALL_STAGING_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/decoder/build/linux \ + $(OPENCSD_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/opencv3/Config.in b/package/opencv3/Config.in new file mode 100644 index 00000000..2ce548f0 --- /dev/null +++ b/package/opencv3/Config.in @@ -0,0 +1,342 @@ +menuconfig BR2_PACKAGE_OPENCV3 + bool "opencv3" + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on !BR2_STATIC_LIBS # include dlfcn.h + select BR2_PACKAGE_ZLIB + help + OpenCV (Open Source Computer Vision) is a library of + programming functions for real time computer vision. + + Note that the opencv_core module and the opencv_hal library + are always built and installed, not matter which other + modules are enabled below. + + http://opencv.org/ + +if BR2_PACKAGE_OPENCV3 + +comment "OpenCV modules" + +config BR2_PACKAGE_OPENCV3_LIB_CALIB3D + bool "calib3d" + select BR2_PACKAGE_OPENCV3_LIB_FEATURES2D + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + help + Include opencv_calib3d (camera calibration and 3d + reconstruction) module into the OpenCV build. + +config BR2_PACKAGE_OPENCV3_LIB_FEATURES2D + bool "features2d" + select BR2_PACKAGE_OPENCV3_LIB_FLANN + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + select BR2_PACKAGE_OPENCV3_LIB_ML + help + Include opencv_features2d (2d features framework) module + into the OpenCV build. + +config BR2_PACKAGE_OPENCV3_LIB_FLANN + bool "flann" + # opencv_core dependency is already enabled + help + Include opencv_flann (clustering and search in + multi-dimensional spaces) module into the OpenCV build. + +config BR2_PACKAGE_OPENCV3_LIB_HIGHGUI + bool "highgui" + select BR2_PACKAGE_OPENCV3_LIB_IMGCODECS + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + select BR2_PACKAGE_OPENCV3_LIB_VIDEOIO + help + Include opencv_highgui (high-level gui and media i/o) module + into the OpenCV build. + +if BR2_PACKAGE_OPENCV3_LIB_HIGHGUI + +choice + prompt "gui toolkit" + help + GUI toolkit to be used by the opencv_highgui module. + +config BR2_PACKAGE_OPENCV3_GUI_NONE + bool "none" + +config BR2_PACKAGE_OPENCV3_WITH_GTK + bool "gtk2" + depends on BR2_PACKAGE_LIBGTK2 + +comment "gtk2 support needs libgtk2" + depends on BR2_USE_MMU # libgtk2 -> glib2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_PACKAGE_LIBGTK2 + +config BR2_PACKAGE_OPENCV3_WITH_GTK3 + bool "gtk3" + depends on BR2_PACKAGE_LIBGTK3 + +comment "gtk3 support needs libgtk3" + depends on BR2_USE_MMU # libgtk3 -> glib2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_PACKAGE_LIBGTK3 + +config BR2_PACKAGE_OPENCV3_WITH_QT5 + bool "qt5" + depends on BR2_PACKAGE_QT5 + select BR2_PACKAGE_QT5BASE_CONCURRENT + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_WIDGETS + help + Use Qt5 with base, concurrent, test, gui and widgets + components, as GUI toolkit. + +comment "qt5 support needs qt5" + depends on !BR2_PACKAGE_QT5 + +endchoice + +config BR2_PACKAGE_OPENCV3_WITH_OPENGL + bool "opengl support" + # OpenGL support done using Qt5OpenGL, so depends on WITH_QT5 + depends on BR2_PACKAGE_OPENCV3_WITH_QT5 + # OpenGL support requires Qt5OpenGL with GL support, not GLES + depends on BR2_PACKAGE_QT5_GL_AVAILABLE + depends on BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_QT5BASE_OPENGL + help + Enable OpenGL for UI. + +comment "opengl support needs an OpenGL provider" + depends on BR2_PACKAGE_OPENCV3_WITH_QT5 + depends on !BR2_PACKAGE_QT5_GL_AVAILABLE || \ + !BR2_PACKAGE_HAS_LIBGL + +endif # BR2_PACKAGE_OPENCV3_LIB_HIGHGUI + +config BR2_PACKAGE_OPENCV3_LIB_IMGCODECS + bool "imgcodecs" + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + help + Include opencv_imgcodecs (image codecs) module into the + OpenCV build. + +config BR2_PACKAGE_OPENCV3_LIB_IMGPROC + bool "imgproc" + # opencv_core dependency is already enabled + help + Include opencv_imgproc (image processing) module into the + OpenCV build. + +config BR2_PACKAGE_OPENCV3_LIB_ML + bool "ml" + # opencv_core dependency is already enabled + help + Include opencv_ml (machine learning) module into the OpenCV + build. + +config BR2_PACKAGE_OPENCV3_LIB_OBJDETECT + bool "objdetect" + # opencv_core dependency is already enabled + select BR2_PACKAGE_OPENCV3_LIB_CALIB3D + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + select BR2_PACKAGE_OPENCV3_LIB_ML + help + Include opencv_objdetect (object detection) module into the + OpenCV build. + +config BR2_PACKAGE_OPENCV3_LIB_PHOTO + bool "photo" + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + help + Include opencv_photo (computational photography) module into + the OpenCV build. + +config BR2_PACKAGE_OPENCV3_LIB_PYTHON + bool "python" + depends on BR2_PACKAGE_PYTHON3 + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_9 # python-numpy + select BR2_PACKAGE_PYTHON_NUMPY + help + Include opencv_python module into the OpenCV build. No + python example is installed. + +comment "python support needs a glibc or musl toolchain w/ gcc >= 9" + depends on BR2_PACKAGE_PYTHON3 + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_9 || \ + !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) + +config BR2_PACKAGE_OPENCV3_LIB_SHAPE + bool "shape" + # opencv_core dependency is already enabled + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + select BR2_PACKAGE_OPENCV3_LIB_VIDEO + help + Include opencv_shape (shape descriptors and matchers) module + into the OpenCV build. + +config BR2_PACKAGE_OPENCV3_LIB_STITCHING + bool "stitching" + select BR2_PACKAGE_OPENCV3_LIB_CALIB3D + select BR2_PACKAGE_OPENCV3_LIB_FEATURES2D + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + select BR2_PACKAGE_OPENCV3_LIB_OBJDETECT + help + Include opencv_stitching (images stitching) module into the + OpenCV build. + +config BR2_PACKAGE_OPENCV3_LIB_SUPERRES + bool "superres" + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + select BR2_PACKAGE_OPENCV3_LIB_VIDEO + help + Include opencv_superres (super resolution) module into the + OpenCV build. + +config BR2_PACKAGE_OPENCV3_LIB_TS + bool "ts" + # opencv_core dependency is already enabled + select BR2_PACKAGE_OPENCV3_LIB_HIGHGUI + select BR2_PACKAGE_OPENCV3_LIB_IMGCODECS + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + select BR2_PACKAGE_OPENCV3_LIB_VIDEOIO + help + Include opencv_ts (test) module into the OpenCV build. + +config BR2_PACKAGE_OPENCV3_LIB_VIDEOIO + bool "videoio" + select BR2_PACKAGE_OPENCV3_LIB_IMGCODECS + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + help + Include opencv_videoio (media i/o) module into the OpenCV + build. + +config BR2_PACKAGE_OPENCV3_LIB_VIDEO + bool "video" + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + help + Include opencv_video (video analysis) module into the OpenCV + build. + +config BR2_PACKAGE_OPENCV3_LIB_VIDEOSTAB + bool "videostab" + select BR2_PACKAGE_OPENCV3_LIB_CALIB3D + select BR2_PACKAGE_OPENCV3_LIB_FEATURES2D + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + select BR2_PACKAGE_OPENCV3_LIB_PHOTO + select BR2_PACKAGE_OPENCV3_LIB_VIDEO + help + Include opencv_videostab (video stabilization) module into + the OpenCV build. + +comment "Test sets" +config BR2_PACKAGE_OPENCV3_BUILD_TESTS + bool "build tests" + +config BR2_PACKAGE_OPENCV3_BUILD_PERF_TESTS + bool "build performance tests" + +comment "3rd party support" + +config BR2_PACKAGE_OPENCV3_WITH_FFMPEG + bool "ffmpeg support" + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_FFMPEG_SWSCALE + help + Use ffmpeg from the target system. + +config BR2_PACKAGE_OPENCV3_WITH_GSTREAMER1 + bool "gstreamer-1.x" + depends on BR2_USE_MMU # gstreamer1 -> libglib2 + depends on BR2_USE_WCHAR # gstreamer1 -> libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # gstreamer1 -> libglib2 + select BR2_PACKAGE_GSTREAMER1 + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP + help + Enable gstreamer support. + +comment "gstreamer support needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_OPENCV3_WITH_JASPER + bool "jpeg2000 support" + select BR2_PACKAGE_JASPER + help + Enable jpeg2000 support. + + Note: this does not use the libjasper bundled with opencv, + but uses the libjasper package installed system-wide by + Buildroot. + +config BR2_PACKAGE_OPENCV3_WITH_JPEG + bool "jpeg support" + select BR2_PACKAGE_JPEG + help + Use shared libjpeg from the target system. + +config BR2_PACKAGE_OPENCV3_WITH_PNG + bool "png support" + select BR2_PACKAGE_LIBPNG + help + Use shared libpng from the target system. + +config BR2_PACKAGE_OPENCV3_WITH_PROTOBUF + bool "protobuf support" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # protobuf + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # protobuf + select BR2_PACKAGE_PROTOBUF + help + Use shared protobuf from the target system. + +comment "protobuf support needs a toolchain w/ gcc >= 4.8" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +config BR2_PACKAGE_OPENCV3_WITH_TIFF + bool "tiff support" + select BR2_PACKAGE_TIFF + help + Use shared libtiff from the target system. + +config BR2_PACKAGE_OPENCV3_WITH_V4L + bool "v4l support" + help + Enable Video 4 Linux support. + + If the package libv4l is enabled, its support is + automatically enabled. + +config BR2_PACKAGE_OPENCV3_WITH_WEBP + bool "webp support" + select BR2_PACKAGE_WEBP + help + Enable WebP support. + + Use shared libwebp from the target system. + +comment "Install options" + +config BR2_PACKAGE_OPENCV3_INSTALL_DATA + bool "install extra data" + help + Install various data that is used by cv libraries and/or + demo applications, specifically for haarcascades and + lbpcascades features. + + For further information: see OpenCV documentation. + +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 || \ + BR2_STATIC_LIBS diff --git a/package/opencv3/opencv3.hash b/package/opencv3/opencv3.hash new file mode 100644 index 00000000..3d6fd2ed --- /dev/null +++ b/package/opencv3/opencv3.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 9b913e74299ce4416a5c94000da577c592bf670fd53bad16220eb115a0821529 opencv3-3.4.19.tar.gz +sha256 c1fed9cd2f557ba23a1b37a21e2c90629d1a60bdb61e92d0e79369bb6fca3390 LICENSE diff --git a/package/opencv3/opencv3.mk b/package/opencv3/opencv3.mk new file mode 100644 index 00000000..5064496c --- /dev/null +++ b/package/opencv3/opencv3.mk @@ -0,0 +1,376 @@ +################################################################################ +# +# opencv3 +# +################################################################################ + +OPENCV3_VERSION = 3.4.19 +OPENCV3_SITE = $(call github,opencv,opencv,$(OPENCV3_VERSION)) +OPENCV3_INSTALL_STAGING = YES +OPENCV3_LICENSE = BSD-3-Clause +OPENCV3_LICENSE_FILES = LICENSE +OPENCV3_CPE_ID_VENDOR = opencv +OPENCV3_CPE_ID_PRODUCT = opencv +OPENCV3_SUPPORTS_IN_SOURCE_BUILD = NO + +OPENCV3_CXXFLAGS = $(TARGET_CXXFLAGS) + +# Uses __atomic_fetch_add_4 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +OPENCV3_CXXFLAGS += -latomic +endif + +# Fix c++11 build with missing std::exception_ptr +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_64735),y) +OPENCV3_CXXFLAGS += -DCV__EXCEPTION_PTR=0 +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y) +OPENCV3_CXXFLAGS += -O0 +endif + +# OpenCV component options +OPENCV3_CONF_OPTS += \ + -DCMAKE_CXX_FLAGS="$(OPENCV3_CXXFLAGS)" \ + -DBUILD_DOCS=OFF \ + -DBUILD_PERF_TESTS=$(if $(BR2_PACKAGE_OPENCV3_BUILD_PERF_TESTS),ON,OFF) \ + -DBUILD_TESTS=$(if $(BR2_PACKAGE_OPENCV3_BUILD_TESTS),ON,OFF) \ + -DBUILD_WITH_DEBUG_INFO=OFF \ + -DDOWNLOAD_EXTERNAL_TEST_DATA=OFF \ + -DOPENCV_ENABLE_PKG_CONFIG=ON + +ifeq ($(BR2_PACKAGE_OPENCV3_BUILD_TESTS)$(BR2_PACKAGE_OPENCV3_BUILD_PERF_TESTS),) +OPENCV3_CONF_OPTS += -DINSTALL_TEST=OFF +else +OPENCV3_CONF_OPTS += -DINSTALL_TEST=ON +endif + +# OpenCV build options +OPENCV3_CONF_OPTS += \ + -DBUILD_WITH_STATIC_CRT=OFF \ + -DENABLE_CCACHE=OFF \ + -DENABLE_COVERAGE=OFF \ + -DENABLE_FAST_MATH=ON \ + -DENABLE_IMPL_COLLECTION=OFF \ + -DENABLE_NOISY_WARNINGS=OFF \ + -DENABLE_OMIT_FRAME_POINTER=ON \ + -DENABLE_PRECOMPILED_HEADERS=OFF \ + -DENABLE_PROFILING=OFF \ + -DOPENCV_WARNINGS_ARE_ERRORS=OFF + +# OpenCV link options +OPENCV3_CONF_OPTS += \ + -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF \ + -DCMAKE_SKIP_RPATH=OFF \ + -DCMAKE_USE_RELATIVE_PATHS=OFF + +# OpenCV packaging options: +OPENCV3_CONF_OPTS += \ + -DBUILD_PACKAGE=OFF \ + -DENABLE_SOLUTION_FOLDERS=OFF \ + -DINSTALL_CREATE_DISTRIB=OFF + +# OpenCV module selection +# * Modules on: +# - core: if not set, opencv does not build anything +# - hal: core's dependency +# * Modules off: +# - android*: android stuff +# - apps: programs for training classifiers +# - java: java bindings +# - viz: missing VTK dependency +# - world: all-in-one module +# +# * Contrib modules from [1] are disabled: +# - opencv_contrib package is not available in Buildroot; +# - OPENCV3_EXTRA_MODULES_PATH is not set. +# +# [1] https://github.com/Itseez/opencv_contrib +OPENCV3_CONF_OPTS += \ + -DBUILD_opencv_androidcamera=OFF \ + -DBUILD_opencv_apps=OFF \ + -DBUILD_opencv_calib3d=$(if $(BR2_PACKAGE_OPENCV3_LIB_CALIB3D),ON,OFF) \ + -DBUILD_opencv_core=ON \ + -DBUILD_opencv_features2d=$(if $(BR2_PACKAGE_OPENCV3_LIB_FEATURES2D),ON,OFF) \ + -DBUILD_opencv_flann=$(if $(BR2_PACKAGE_OPENCV3_LIB_FLANN),ON,OFF) \ + -DBUILD_opencv_highgui=$(if $(BR2_PACKAGE_OPENCV3_LIB_HIGHGUI),ON,OFF) \ + -DBUILD_opencv_imgcodecs=$(if $(BR2_PACKAGE_OPENCV3_LIB_IMGCODECS),ON,OFF) \ + -DBUILD_opencv_imgproc=$(if $(BR2_PACKAGE_OPENCV3_LIB_IMGPROC),ON,OFF) \ + -DBUILD_opencv_java=OFF \ + -DBUILD_opencv_ml=$(if $(BR2_PACKAGE_OPENCV3_LIB_ML),ON,OFF) \ + -DBUILD_opencv_objdetect=$(if $(BR2_PACKAGE_OPENCV3_LIB_OBJDETECT),ON,OFF) \ + -DBUILD_opencv_photo=$(if $(BR2_PACKAGE_OPENCV3_LIB_PHOTO),ON,OFF) \ + -DBUILD_opencv_shape=$(if $(BR2_PACKAGE_OPENCV3_LIB_SHAPE),ON,OFF) \ + -DBUILD_opencv_stitching=$(if $(BR2_PACKAGE_OPENCV3_LIB_STITCHING),ON,OFF) \ + -DBUILD_opencv_superres=$(if $(BR2_PACKAGE_OPENCV3_LIB_SUPERRES),ON,OFF) \ + -DBUILD_opencv_ts=$(if $(BR2_PACKAGE_OPENCV3_LIB_TS),ON,OFF) \ + -DBUILD_opencv_video=$(if $(BR2_PACKAGE_OPENCV3_LIB_VIDEO),ON,OFF) \ + -DBUILD_opencv_videoio=$(if $(BR2_PACKAGE_OPENCV3_LIB_VIDEOIO),ON,OFF) \ + -DBUILD_opencv_videostab=$(if $(BR2_PACKAGE_OPENCV3_LIB_VIDEOSTAB),ON,OFF) \ + -DBUILD_opencv_viz=OFF \ + -DBUILD_opencv_world=OFF + +# Hardware support options. +# +# * PowerPC and VFPv3 support are turned off since their only effects +# are altering CFLAGS, adding '-mcpu=G3 -mtune=G5' or '-mfpu=vfpv3' +# to them, which is already handled by Buildroot. +# * NEON logic is needed as it is not only used to add CFLAGS, but +# also to enable additional NEON code. +OPENCV3_CONF_OPTS += \ + -DENABLE_POWERPC=OFF \ + -DENABLE_NEON=$(if $(BR2_ARM_CPU_HAS_NEON),ON,OFF) \ + -DENABLE_VFPV3=OFF + +# Cuda stuff +OPENCV3_CONF_OPTS += \ + -DBUILD_CUDA_STUBS=OFF \ + -DBUILD_opencv_cudaarithm=OFF \ + -DBUILD_opencv_cudabgsegm=OFF \ + -DBUILD_opencv_cudacodec=OFF \ + -DBUILD_opencv_cudafeatures2d=OFF \ + -DBUILD_opencv_cudafilters=OFF \ + -DBUILD_opencv_cudaimgproc=OFF \ + -DBUILD_opencv_cudalegacy=OFF \ + -DBUILD_opencv_cudaobjdetect=OFF \ + -DBUILD_opencv_cudaoptflow=OFF \ + -DBUILD_opencv_cudastereo=OFF \ + -DBUILD_opencv_cudawarping=OFF \ + -DBUILD_opencv_cudev=OFF \ + -DWITH_CUBLAS=OFF \ + -DWITH_CUDA=OFF \ + -DWITH_CUFFT=OFF + +# NVidia stuff +OPENCV3_CONF_OPTS += -DWITH_NVCUVID=OFF + +# AMD stuff +OPENCV3_CONF_OPTS += \ + -DWITH_OPENCLAMDBLAS=OFF \ + -DWITH_OPENCLAMDFFT=OFF + +# Intel stuff +OPENCV3_CONF_OPTS += \ + -DBUILD_WITH_DYNAMIC_IPP=OFF \ + -DWITH_INTELPERC=OFF \ + -DWITH_IPP=OFF \ + -DWITH_IPP_A=OFF \ + -DWITH_TBB=OFF + +# Smartek stuff +OPENCV3_CONF_OPTS += -DWITH_GIGEAPI=OFF + +# Prosilica stuff +OPENCV3_CONF_OPTS += -DWITH_PVAPI=OFF + +# Ximea stuff +OPENCV3_CONF_OPTS += -DWITH_XIMEA=OFF + +# Non-Linux support (Android options) must remain OFF: +OPENCV3_CONF_OPTS += \ + -DANDROID=OFF \ + -DBUILD_ANDROID_CAMERA_WRAPPER=OFF \ + -DBUILD_ANDROID_EXAMPLES=OFF \ + -DBUILD_ANDROID_SERVICE=OFF \ + -DBUILD_FAT_JAVA_LIB=OFF \ + -DINSTALL_ANDROID_EXAMPLES=OFF \ + -DWITH_ANDROID_CAMERA=OFF + +# Non-Linux support (Mac OSX options) must remain OFF: +OPENCV3_CONF_OPTS += \ + -DWITH_AVFOUNDATION=OFF \ + -DWITH_CARBON=OFF \ + -DWITH_QUICKTIME=OFF + +# Non-Linux support (Windows options) must remain OFF: +OPENCV3_CONF_OPTS += \ + -DWITH_CSTRIPES=OFF \ + -DWITH_DSHOW=OFF \ + -DWITH_MSMF=OFF \ + -DWITH_VFW=OFF \ + -DWITH_VIDEOINPUT=OFF \ + -DWITH_WIN32UI=OFF + +# Software/3rd-party support options: +# - disable all examples +OPENCV3_CONF_OPTS += \ + -DBUILD_EXAMPLES=OFF \ + -DBUILD_JASPER=OFF \ + -DBUILD_JPEG=OFF \ + -DBUILD_OPENEXR=OFF \ + -DBUILD_PNG=OFF \ + -DBUILD_PROTOBUF=OFF \ + -DBUILD_TIFF=OFF \ + -DBUILD_ZLIB=OFF \ + -DINSTALL_C_EXAMPLES=OFF \ + -DINSTALL_PYTHON_EXAMPLES=OFF \ + -DINSTALL_TO_MANGLED_PATHS=OFF + +# Disabled features (mostly because they are not available in Buildroot), but +# - eigen: OpenCV does not use it, not take any benefit from it. +OPENCV3_CONF_OPTS += \ + -DWITH_1394=OFF \ + -DWITH_CLP=OFF \ + -DWITH_EIGEN=OFF \ + -DWITH_GDAL=OFF \ + -DWITH_GPHOTO2=OFF \ + -DWITH_GSTREAMER_0_10=OFF \ + -DWITH_LAPACK=OFF \ + -DWITH_MATLAB=OFF \ + -DWITH_OPENCL=OFF \ + -DWITH_OPENCL_SVM=OFF \ + -DWITH_OPENEXR=OFF \ + -DWITH_OPENNI2=OFF \ + -DWITH_OPENNI=OFF \ + -DWITH_UNICAP=OFF \ + -DWITH_VA=OFF \ + -DWITH_VA_INTEL=OFF \ + -DWITH_VTK=OFF \ + -DWITH_XINE=OFF + +OPENCV3_DEPENDENCIES += host-pkgconf zlib + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_FFMPEG),y) +OPENCV3_CONF_OPTS += -DWITH_FFMPEG=ON +OPENCV3_DEPENDENCIES += ffmpeg bzip2 +else +OPENCV3_CONF_OPTS += -DWITH_FFMPEG=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_GSTREAMER1),y) +OPENCV3_CONF_OPTS += -DWITH_GSTREAMER=ON +OPENCV3_DEPENDENCIES += gstreamer1 gst1-plugins-base +else +OPENCV3_CONF_OPTS += -DWITH_GSTREAMER=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_GTK)$(BR2_PACKAGE_OPENCV3_WITH_GTK3),) +OPENCV3_CONF_OPTS += -DWITH_GTK=OFF -DWITH_GTK_2_X=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_GTK),y) +OPENCV3_CONF_OPTS += -DWITH_GTK=ON -DWITH_GTK_2_X=ON +OPENCV3_DEPENDENCIES += libgtk2 +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_GTK3),y) +OPENCV3_CONF_OPTS += -DWITH_GTK=ON -DWITH_GTK_2_X=OFF +OPENCV3_DEPENDENCIES += libgtk3 +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_JASPER),y) +OPENCV3_CONF_OPTS += -DWITH_JASPER=ON +OPENCV3_DEPENDENCIES += jasper +else +OPENCV3_CONF_OPTS += -DWITH_JASPER=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_JPEG),y) +OPENCV3_CONF_OPTS += -DWITH_JPEG=ON +OPENCV3_DEPENDENCIES += jpeg +else +OPENCV3_CONF_OPTS += -DWITH_JPEG=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_OPENGL),y) +OPENCV3_CONF_OPTS += -DWITH_OPENGL=ON +OPENCV3_DEPENDENCIES += libgl +else +OPENCV3_CONF_OPTS += -DWITH_OPENGL=OFF +endif + +OPENCV3_CONF_OPTS += -DWITH_OPENMP=$(if $(BR2_TOOLCHAIN_HAS_OPENMP),ON,OFF) + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_PNG),y) +OPENCV3_CONF_OPTS += -DWITH_PNG=ON +OPENCV3_DEPENDENCIES += libpng +else +OPENCV3_CONF_OPTS += -DWITH_PNG=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_PROTOBUF),y) +# protobuf needs c++11 (since 3.6.0) +OPENCV3_CONF_OPTS += \ + -DENABLE_CXX11=ON \ + -DPROTOBUF_UPDATE_FILES=ON \ + -DWITH_PROTOBUF=ON +OPENCV3_DEPENDENCIES += protobuf +else +OPENCV3_CONF_OPTS += -DWITH_PROTOBUF=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_QT5),y) +OPENCV3_CONF_OPTS += -DWITH_QT=5 +OPENCV3_DEPENDENCIES += qt5base +else +OPENCV3_CONF_OPTS += -DWITH_QT=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_TIFF),y) +OPENCV3_CONF_OPTS += -DWITH_TIFF=ON +OPENCV3_DEPENDENCIES += tiff +else +OPENCV3_CONF_OPTS += -DWITH_TIFF=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_V4L),y) +OPENCV3_CONF_OPTS += \ + -DWITH_LIBV4L=$(if $(BR2_PACKAGE_LIBV4L),ON,OFF) \ + -DWITH_V4L=ON +OPENCV3_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBV4L),libv4l) +else +OPENCV3_CONF_OPTS += -DWITH_V4L=OFF -DWITH_LIBV4L=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_WEBP),y) +OPENCV3_CONF_OPTS += -DWITH_WEBP=ON +OPENCV3_DEPENDENCIES += webp +else +OPENCV3_CONF_OPTS += -DWITH_WEBP=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_LIB_PYTHON),y) +OPENCV3_CONF_OPTS += \ + -DBUILD_opencv_python2=OFF \ + -DBUILD_opencv_python3=ON \ + -DPYTHON3_EXECUTABLE=$(HOST_DIR)/bin/python3 \ + -DPYTHON3_INCLUDE_PATH=$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR) \ + -DPYTHON3_LIBRARIES=$(STAGING_DIR)/usr/lib/libpython$(PYTHON3_VERSION_MAJOR).so \ + -DPYTHON3_NUMPY_INCLUDE_DIRS=$(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/numpy/core/include \ + -DPYTHON3_PACKAGES_PATH=/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages \ + -DPYTHON3_NUMPY_VERSION=$(PYTHON_NUMPY_VERSION) +OPENCV3_DEPENDENCIES += python3 +OPENCV3_KEEP_PY_FILES += usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/cv2/config*.py +OPENCV3_CONF_ENV += $(PKG_PYTHON_SETUPTOOLS_ENV) +OPENCV3_DEPENDENCIES += python-numpy +else +OPENCV3_CONF_OPTS += \ + -DBUILD_opencv_python2=OFF \ + -DBUILD_opencv_python3=OFF +endif + +# Installation hooks: +define OPENCV3_CLEAN_INSTALL_LICENSE + $(RM) -fr $(TARGET_DIR)/usr/share/licenses/opencv3 +endef +OPENCV3_POST_INSTALL_TARGET_HOOKS += OPENCV3_CLEAN_INSTALL_LICENSE + +define OPENCV3_CLEAN_INSTALL_CMAKE + $(RM) -f $(TARGET_DIR)/usr/share/OpenCV/OpenCV*.cmake +endef +OPENCV3_POST_INSTALL_TARGET_HOOKS += OPENCV3_CLEAN_INSTALL_CMAKE + +define OPENCV3_CLEAN_INSTALL_VALGRIND + $(RM) -f $(TARGET_DIR)/usr/share/OpenCV/valgrind* +endef +OPENCV3_POST_INSTALL_TARGET_HOOKS += OPENCV3_CLEAN_INSTALL_VALGRIND + +ifneq ($(BR2_PACKAGE_OPENCV3_INSTALL_DATA),y) +define OPENCV3_CLEAN_INSTALL_DATA + $(RM) -fr $(TARGET_DIR)/usr/share/OpenCV/haarcascades \ + $(TARGET_DIR)/usr/share/OpenCV/lbpcascades +endef +OPENCV3_POST_INSTALL_TARGET_HOOKS += OPENCV3_CLEAN_INSTALL_DATA +endif + +$(eval $(cmake-package)) diff --git a/package/opencv4-contrib/Config.in b/package/opencv4-contrib/Config.in new file mode 100644 index 00000000..d992c6d1 --- /dev/null +++ b/package/opencv4-contrib/Config.in @@ -0,0 +1,367 @@ +menuconfig BR2_PACKAGE_OPENCV4_CONTRIB + bool "opencv4-contrib" + depends on BR2_PACKAGE_OPENCV4 + help + OpenCV (Open Source Computer Vision) is a library of + programming functions for real time computer vision. + + http://opencv.org/ + +if BR2_PACKAGE_OPENCV4_CONTRIB + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_ALPHAMAT + bool "alphamat" + help + Computer Vision based Alpha Matting -- Given an input image + and a trimap, generate an alpha matte. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_ARUCO + bool "aruco" + select BR2_PACKAGE_OPENCV4_LIB_CALIB3D + help + ArUco and ChArUco Markers -- Augmented reality ArUco marker + and "ChARUco" markers where ArUco markers embedded inside the + white areas of the checker board. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_BARCODE + bool "barcode" + help + Barcode detecting and decoding methods. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_BGSEGM + bool "bgsegm" + select BR2_PACKAGE_OPENCV4_LIB_VIDEO + help + Background segmentation algorithm combining statistical + background image estimation and per-pixel Bayesian + segmentation. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_BIOINSPIRED + bool "bioinspired" + help + Biological Vision -- Biologically inspired vision model: + minimize noise and luminance variance, transient event + segmentation, high dynamic range tone mapping methods. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_CCALIB + bool "ccalib" + select BR2_PACKAGE_OPENCV4_LIB_HIGHGUI + help + Custom Calibration -- Patterns for 3D reconstruction, + omnidirectional camera calibration, random pattern calibration + and multi-camera calibration. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_CNN_3DOBJ + bool "cnn_3dobj" + help + Deep Object Recognition and Pose -- Uses Caffe Deep Neural Net + library to build, train and test a CNN model of visual object + recognition and pose. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_CVV + bool "cvv" + help + Computer Vision Debugger -- Simple code that you can add + to your program that pops up a GUI allowing you to + interactively and visually debug computer vision programs. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_DATASETS + bool "datasets" + help + Datasets Reader -- Code for reading existing computer vision + databases and samples of using the readers to train, test and + run using that dataset's data. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_DNN_OBJDETECT + bool "dnn_objdetect" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # opencv4 dnn + depends on !BR2_TOOLCHAIN_USES_UCLIBC # opencv4 dnn + select BR2_PACKAGE_OPENCV4_LIB_DNN + help + Object Detection using CNNs -- Implements compact CNN Model + for object detection. Trained using Caffe but uses + opencv_dnn module. + +comment "dnn_objdetect needs a glibc or musl toolchain" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_USES_UCLIBC + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_DNN_SUPERRES + bool "dnn_superres" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # opencv4 dnn + depends on !BR2_TOOLCHAIN_USES_UCLIBC # opencv4 dnn + select BR2_PACKAGE_OPENCV4_LIB_DNN + help + Superresolution using CNNs -- Contains four trained + convolutional neural networks to upscale images. + +comment "dnn_superres needs a glibc or musl toolchain" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_USES_UCLIBC + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_DNNS_EASILY_FOOLED + bool "dnns_easily_fooled" + help + Subvert DNNs -- This code can use the activations in a + network to fool the networks into recognizing something else. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_DPM + bool "dpm" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # opencv4 objdetect + depends on !BR2_TOOLCHAIN_USES_UCLIBC # opencv4 objdetect + select BR2_PACKAGE_OPENCV4_LIB_OBJDETECT + help + Deformable Part Model -- Felzenszwalb's Cascade with + deformable parts object recognition code. + +comment "dpm needs a glibc or musl toolchain" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # opencv4 objdetect + depends on BR2_TOOLCHAIN_USES_UCLIBC # opencv4 objdetect + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_FACE + bool "face" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # opencv4 objdetect + depends on !BR2_TOOLCHAIN_USES_UCLIBC # opencv4 objdetect + select BR2_PACKAGE_OPENCV4_LIB_OBJDETECT + help + Face Recognition -- Face recognition techniques: Eigen, Fisher + and Local Binary Pattern Histograms LBPH methods. + +comment "face needs a glibc or musl toolchain" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # opencv4 objdetect + depends on BR2_TOOLCHAIN_USES_UCLIBC # opencv4 objdetect + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_FREETYPE + bool "freetype" + help + Drawing text using freetype and harfbuzz. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_FUZZY + bool "fuzzy" + help + Fuzzy Logic in Vision -- Fuzzy logic image transform and + inverse; Fuzzy image processing. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_HDF + bool "hdf" + help + Hierarchical Data Storage -- This module contains I/O + routines for Hierarchical Data Format: + https://en.m.wikipedia.org/wiki/Hierarchical_Data_Format + meant to store large amounts of data. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_HFS + bool "hfs" + help + Hierarchical Feature Selection for Efficient Image + Segmentation -- This module contains an efficient + algorithm to segment an image. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_IMG_HASH + bool "img_hash" + help + This module contains algorithms to extract hash of an + image allowing to efficiently estimate similarity between + images. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_INTENSITY_TRANSFORM + bool "intensity_transform" + help + The module brings implementations of intensity transformation + algorithms to adjust image contrast. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_JULIA + bool "julia" + help + Julia language wrappers with samples and tests. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_LINE_DESCRIPTOR + bool "line_descriptor" + help + Line Segment Extract and Match -- Methods of extracting, + describing and matching line segments using binary + descriptors. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_MATLAB + bool "matlab" + help + Matlab Interface -- OpenCV Matlab Mex wrapper code generator + for certain opencv core modules. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_MCC + bool "mcc" + help + Macbeth Color Chart detector -- Find and return color patch + location in MacBeth color calibration charts. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_OPTFLOW + bool "optflow" + select BR2_PACKAGE_OPENCV4_LIB_VIDEO + help + Optical Flow -- Algorithms for running and evaluating + deepflow, simpleflow, sparsetodenseflow and motion + templates (silhouette flow). + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_OVIS + bool "ovis" + help + OGRE 3D Visualiser -- allows you to render 3D data using + the OGRE 3D engine. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_PHASE_UNWRAPPING + bool "phase_unwrapping" + help + Quality-guided phase unwrapping. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_PLOT + bool "plot" + help + Plotting -- The plot module allows you to easily plot data + in 1D or 2D. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_QUALITY + bool "quality" + help + Image Quality Analysis (IQA) API. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_RAPID + bool "rapid" + help + Silhouette based 3D object tracking. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_REG + bool "reg" + help + Image Registration -- Pixels based image registration for + precise alignment. Follows the paper "Image Alignment and + Stitching: A Tutorial", by Richard Szeliski. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_RGBD + bool "rgbd" + help + RGB-Depth Processing module -- Linemod 3D object recognition; + Fast surface normals and 3D plane finding. 3D visual odometry. + 3d reconstruction using KinectFusion. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_SALIENCY + bool "saliency" + help + Saliency API -- Where humans would look in a scene. Has + routines for static, motion and "objectness" saliency. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_SFM + bool "sfm" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_6 # glog + select BR2_PACKAGE_OPENCV4_LIB_IMGPROC + select BR2_PACKAGE_OPENCV4_LIB_IMGCODECS + select BR2_PACKAGE_EIGEN + select BR2_PACKAGE_GLOG + select BR2_PACKAGE_GFLAGS + help + Structure from Motion -- This module contains algorithms + to perform 3d reconstruction from 2d images. The core of + the module is a light version of Libmv. + +comment "sfm needs a toolchain w/ gcc >= 6" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_6 + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_SHAPE + bool "shape" + help + Shape Distance and Matching + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_STEREO + bool "stereo" + select BR2_PACKAGE_OPENCV4_CONTRIB_LIB_TRACKING + help + Stereo Correspondence -- Stereo matching done with different + descriptors: Census / CS-Census / MCT / BRIEF / MV and dense + stereo correspondence using Quasi Dense Stereo method. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_STRUCTURED_LIGHT + bool "structured_light" + help + Structured Light Use -- How to generate and project gray code + patterns and use them to find dense depth in a scene. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_SUPERRES + bool "superres" + select BR2_PACKAGE_OPENCV4_LIB_VIDEO + help + Super Resolution + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_SURFACE_MATCHING + bool "surface_matching" + help + Point Pair Features -- Implements 3d object detection and + localization using multimodal point pair features. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_TEXT + bool "text" + help + Scene Text Detection and Recognition -- This module contains + algorithms to perform text detection, words segmentation and + text recognition in a visual scene. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_TRACKING + bool "tracking" + select BR2_PACKAGE_OPENCV4_LIB_VIDEO + help + Vision Based Object Tracking -- Use and/or evaluate different + visual object tracking techniques. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_VIDEOSTAB + bool "videostab" + select BR2_PACKAGE_OPENCV4_LIB_VIDEO + select BR2_PACKAGE_OPENCV4_LIB_PHOTO + help + Video Stabilization + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_VIZ + bool "viz" + help + 3D Visualizer + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_WECHAT_QRCODE + bool "wechat_qrcode" + help + WeChat QR code detector for detecting and parsing QR code. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_XFEATURES2D + bool "xfeatures2d" + help + Features2D extra -- Extra 2D Features Framework containing + experimental and non-free 2D feature detector/descriptor + algorithms. SURF, BRIEF, Censure, Freak, LUCID, Daisy, + Self-similar. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_XIMGPROC + bool "ximgproc" + help + Extended Image Processing -- Structured Forests / Domain + Transform Filter / Guided Filter / Adaptive Manifold Filter + / Joint Bilateral Filter / Superpixels / Ridge Detection + Filter. + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_XOBJDETECT + bool "xobjdetect" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # opencv4 objdetect + depends on !BR2_TOOLCHAIN_USES_UCLIBC # opencv4 objdetect + select BR2_PACKAGE_OPENCV4_LIB_OBJDETECT + help + Boosted 2D Object Detection -- Uses a Waldboost cascade and + local binary patterns computed as integral features for 2D + object detection. + +comment "xobjdetect needs a glibc or musl toolchain" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # opencv4 objdetect + depends on BR2_TOOLCHAIN_USES_UCLIBC # opencv4 objdetect + +config BR2_PACKAGE_OPENCV4_CONTRIB_LIB_XPHOTO + bool "xphoto" + select BR2_PACKAGE_OPENCV4_LIB_PHOTO + help + Extra Computational Photography -- Additional photo processing + algorithms: Color balance / Denoising / Inpainting. + +endif diff --git a/package/opencv4-contrib/opencv4-contrib.hash b/package/opencv4-contrib/opencv4-contrib.hash new file mode 100644 index 00000000..05c30ea2 --- /dev/null +++ b/package/opencv4-contrib/opencv4-contrib.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 65597f8fb8dc2b876c1b45b928bbcc5f772ddbaf97539bf1b737623d0604cba1 opencv4-contrib-4.10.0.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/opencv4-contrib/opencv4-contrib.mk b/package/opencv4-contrib/opencv4-contrib.mk new file mode 100644 index 00000000..ed00a317 --- /dev/null +++ b/package/opencv4-contrib/opencv4-contrib.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# opencv4-contrib +# +################################################################################ + +OPENCV4_CONTRIB_VERSION = 4.10.0 +OPENCV4_CONTRIB_SITE = $(call github,opencv,opencv_contrib,$(OPENCV4_CONTRIB_VERSION)) +OPENCV4_CONTRIB_INSTALL_TARGET = NO +OPENCV4_CONTRIB_LICENSE = Apache-2.0 +OPENCV4_CONTRIB_LICENSE_FILES = LICENSE + +# Modules provided by opencv4-contrib are built as part of the opencv4 package, +# so opencv4-contrib only serves for downloading the source code. + +$(eval $(generic-package)) diff --git a/package/opencv4/Config.in b/package/opencv4/Config.in new file mode 100644 index 00000000..f6976d8f --- /dev/null +++ b/package/opencv4/Config.in @@ -0,0 +1,394 @@ +menuconfig BR2_PACKAGE_OPENCV4 + bool "opencv4" + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on !BR2_STATIC_LIBS # include dlfcn.h + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on !BR2_PACKAGE_OPENCV3 + select BR2_PACKAGE_ZLIB + help + OpenCV (Open Source Computer Vision) is a library of + programming functions for real time computer vision. + + Note that the opencv_core module and the opencv_hal library + are always built and installed, not matter which other + modules are enabled below. + + http://opencv.org/ + +if BR2_PACKAGE_OPENCV4 + +comment "OpenCV modules" + +config BR2_PACKAGE_OPENCV4_LIB_CALIB3D + bool "calib3d" + select BR2_PACKAGE_OPENCV4_LIB_FEATURES2D + select BR2_PACKAGE_OPENCV4_LIB_IMGPROC + help + Include opencv_calib3d (camera calibration and 3d + reconstruction) module into the OpenCV build. + +config BR2_PACKAGE_OPENCV4_LIB_DNN + bool "dnn" + # dnn needs fenv.h which is not provided by uclibc + depends on !BR2_TOOLCHAIN_USES_UCLIBC + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + select BR2_PACKAGE_OPENCV4_WITH_PROTOBUF + help + Include opencv_dnn (Deep Neural Networks) module into the + OpenCV build. + +comment "dnn needs a glibc or musl toolchain" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_USES_UCLIBC + +config BR2_PACKAGE_OPENCV4_LIB_FEATURES2D + bool "features2d" + select BR2_PACKAGE_OPENCV4_LIB_FLANN + select BR2_PACKAGE_OPENCV4_LIB_IMGPROC + select BR2_PACKAGE_OPENCV4_LIB_ML + help + Include opencv_features2d (2d features framework) module + into the OpenCV build. + +config BR2_PACKAGE_OPENCV4_LIB_FLANN + bool "flann" + # opencv_core dependency is already enabled + help + Include opencv_flann (clustering and search in + multi-dimensional spaces) module into the OpenCV build. + +config BR2_PACKAGE_OPENCV4_LIB_HIGHGUI + bool "highgui" + select BR2_PACKAGE_OPENCV4_LIB_IMGCODECS + select BR2_PACKAGE_OPENCV4_LIB_IMGPROC + select BR2_PACKAGE_OPENCV4_LIB_VIDEOIO + help + Include opencv_highgui (high-level gui and media i/o) module + into the OpenCV build. + +if BR2_PACKAGE_OPENCV4_LIB_HIGHGUI + +choice + prompt "gui toolkit" + help + GUI toolkit to be used by the opencv_highgui module. + +config BR2_PACKAGE_OPENCV4_GUI_NONE + bool "none" + +config BR2_PACKAGE_OPENCV4_WITH_GTK + bool "gtk2" + depends on BR2_PACKAGE_LIBGTK2 + +comment "gtk2 support needs libgtk2" + depends on BR2_USE_MMU # libgtk2 -> glib2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_PACKAGE_LIBGTK2 + +config BR2_PACKAGE_OPENCV4_WITH_GTK3 + bool "gtk3" + depends on BR2_PACKAGE_LIBGTK3 + +comment "gtk3 support needs libgtk3" + depends on BR2_USE_MMU # libgtk3 -> glib2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_PACKAGE_LIBGTK3 + +config BR2_PACKAGE_OPENCV4_WITH_QT5 + bool "qt5" + depends on BR2_PACKAGE_QT5 + select BR2_PACKAGE_QT5BASE_CONCURRENT + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_WIDGETS + help + Use Qt5 with base, concurrent, test, gui and widgets + components, as GUI toolkit. + +comment "qt5 support needs qt5" + depends on !BR2_PACKAGE_QT5 + +endchoice + +config BR2_PACKAGE_OPENCV4_WITH_OPENGL + bool "opengl support" + # OpenGL support done using Qt5OpenGL, so depends on WITH_QT5 + depends on BR2_PACKAGE_OPENCV4_WITH_QT5 + # OpenGL support requires Qt5OpenGL with GL support, not GLES + depends on BR2_PACKAGE_QT5_GL_AVAILABLE + depends on BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_QT5BASE_OPENGL + help + Enable OpenGL for UI. + +comment "opengl support needs an OpenGL provider" + depends on BR2_PACKAGE_OPENCV4_WITH_QT5 + depends on !BR2_PACKAGE_QT5_GL_AVAILABLE || \ + !BR2_PACKAGE_HAS_LIBGL + +endif # BR2_PACKAGE_OPENCV4_LIB_HIGHGUI + +config BR2_PACKAGE_OPENCV4_LIB_IMGCODECS + bool "imgcodecs" + select BR2_PACKAGE_OPENCV4_LIB_IMGPROC + help + Include opencv_imgcodecs (image codecs) module into the + OpenCV build. + +config BR2_PACKAGE_OPENCV4_LIB_IMGPROC + bool "imgproc" + # opencv_core dependency is already enabled + help + Include opencv_imgproc (image processing) module into the + OpenCV build. + +config BR2_PACKAGE_OPENCV4_LIB_ML + bool "ml" + # opencv_core dependency is already enabled + help + Include opencv_ml (machine learning) module into the OpenCV + build. + +config BR2_PACKAGE_OPENCV4_LIB_OBJDETECT + bool "objdetect" + depends on !BR2_TOOLCHAIN_USES_UCLIBC # dnn support + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # dnn support + # opencv_core dependency is already enabled + select BR2_PACKAGE_OPENCV4_LIB_CALIB3D + select BR2_PACKAGE_OPENCV4_LIB_DNN + select BR2_PACKAGE_OPENCV4_LIB_IMGPROC + select BR2_PACKAGE_OPENCV4_LIB_ML + help + Include opencv_objdetect (object detection) module into the + OpenCV build. + +comment "objdetect needs a glibc or musl toolchain" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_USES_UCLIBC + +config BR2_PACKAGE_OPENCV4_LIB_PHOTO + bool "photo" + select BR2_PACKAGE_OPENCV4_LIB_IMGPROC + help + Include opencv_photo (computational photography) module into + the OpenCV build. + +config BR2_PACKAGE_OPENCV4_LIB_PYTHON + bool "python" + depends on BR2_PACKAGE_PYTHON3 + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_9 # python-numpy + select BR2_PACKAGE_PYTHON_NUMPY + help + Include opencv_python module into the OpenCV build. No + python example is installed. + +comment "python support needs a glibc or musl toolchain w/ gcc >= 9" + depends on BR2_PACKAGE_PYTHON3 + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_9 ||\ + !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) + +config BR2_PACKAGE_OPENCV4_LIB_SHAPE + bool "shape" + # opencv_core dependency is already enabled + select BR2_PACKAGE_OPENCV4_LIB_IMGPROC + select BR2_PACKAGE_OPENCV4_LIB_VIDEO + help + Include opencv_shape (shape descriptors and matchers) module + into the OpenCV build. + +config BR2_PACKAGE_OPENCV4_LIB_STITCHING + bool "stitching" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # objdetect + depends on !BR2_TOOLCHAIN_USES_UCLIBC # objdetect + select BR2_PACKAGE_OPENCV4_LIB_CALIB3D + select BR2_PACKAGE_OPENCV4_LIB_FEATURES2D + select BR2_PACKAGE_OPENCV4_LIB_IMGPROC + select BR2_PACKAGE_OPENCV4_LIB_OBJDETECT + help + Include opencv_stitching (images stitching) module into the + OpenCV build. + +comment "stitching needs a glibc or musl toolchain" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_USES_UCLIBC + +config BR2_PACKAGE_OPENCV4_LIB_SUPERRES + bool "superres" + select BR2_PACKAGE_OPENCV4_LIB_IMGPROC + select BR2_PACKAGE_OPENCV4_LIB_VIDEO + help + Include opencv_superres (super resolution) module into the + OpenCV build. + +config BR2_PACKAGE_OPENCV4_LIB_TS + bool "ts" + # opencv_core dependency is already enabled + select BR2_PACKAGE_OPENCV4_LIB_HIGHGUI + select BR2_PACKAGE_OPENCV4_LIB_IMGCODECS + select BR2_PACKAGE_OPENCV4_LIB_IMGPROC + select BR2_PACKAGE_OPENCV4_LIB_VIDEOIO + help + Include opencv_ts (test) module into the OpenCV build. + +config BR2_PACKAGE_OPENCV4_LIB_VIDEOIO + bool "videoio" + select BR2_PACKAGE_OPENCV4_LIB_IMGCODECS + select BR2_PACKAGE_OPENCV4_LIB_IMGPROC + help + Include opencv_videoio (media i/o) module into the OpenCV + build. + +config BR2_PACKAGE_OPENCV4_LIB_VIDEO + bool "video" + select BR2_PACKAGE_OPENCV4_LIB_IMGPROC + help + Include opencv_video (video analysis) module into the OpenCV + build. + +config BR2_PACKAGE_OPENCV4_LIB_VIDEOSTAB + bool "videostab" + select BR2_PACKAGE_OPENCV4_LIB_CALIB3D + select BR2_PACKAGE_OPENCV4_LIB_FEATURES2D + select BR2_PACKAGE_OPENCV4_LIB_IMGPROC + select BR2_PACKAGE_OPENCV4_LIB_PHOTO + select BR2_PACKAGE_OPENCV4_LIB_VIDEO + help + Include opencv_videostab (video stabilization) module into + the OpenCV build. + +comment "Test sets" +config BR2_PACKAGE_OPENCV4_BUILD_TESTS + bool "build tests" + +config BR2_PACKAGE_OPENCV4_BUILD_PERF_TESTS + bool "build performance tests" + +comment "3rd party support" + +config BR2_PACKAGE_OPENCV4_WITH_FFMPEG + bool "ffmpeg support" + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_FFMPEG_SWSCALE + help + Use ffmpeg from the target system. + +config BR2_PACKAGE_OPENCV4_WITH_GSTREAMER1 + bool "gstreamer-1.x" + depends on BR2_USE_MMU # gstreamer1 -> libglib2 + select BR2_PACKAGE_GSTREAMER1 + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP + help + Enable gstreamer support. + +choice + prompt "jpeg2000 support" + help + Select the desired jpeg2000 library provider. + +config BR2_PACKAGE_OPENCV4_JPEG2000_NONE + bool "none" + +config BR2_PACKAGE_OPENCV4_JPEG2000_WITH_JASPER + bool "jasper" + select BR2_PACKAGE_JASPER + help + Enable jpeg2000 support through jasper. + + Note: this does not use the libjasper bundled with opencv, + but uses the libjasper package installed system-wide by + Buildroot. + +config BR2_PACKAGE_OPENCV4_JPEG2000_WITH_OPENJPEG + bool "openjpeg" + select BR2_PACKAGE_OPENJPEG + help + Enable jpeg2000 support through openjpeg. + + Note: this does not use the openjpeg bundled with opencv, + but uses the openjpeg package installed system-wide by + Buildroot. + +endchoice + +config BR2_PACKAGE_OPENCV4_WITH_JPEG + bool "jpeg support" + select BR2_PACKAGE_JPEG + help + Use shared libjpeg from the target system. + +config BR2_PACKAGE_OPENCV4_WITH_PNG + bool "png support" + select BR2_PACKAGE_LIBPNG + help + Use shared libpng from the target system. + +config BR2_PACKAGE_OPENCV4_WITH_PROTOBUF + bool "protobuf support" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # protobuf + select BR2_PACKAGE_PROTOBUF + help + Use shared protobuf from the target system. + +config BR2_PACKAGE_OPENCV4_WITH_TBB + bool "tbb support" + depends on !BR2_TOOLCHAIN_USES_UCLIBC # tbb + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # tbb + select BR2_PACKAGE_TBB + help + Use shared tbb from the target system. + +comment "tbb needs a glibc or musl toolchain" + depends on BR2_TOOLCHAIN_USES_UCLIBC + +comment "tbb needs exception_ptr" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + +config BR2_PACKAGE_OPENCV4_WITH_TIFF + bool "tiff support" + select BR2_PACKAGE_TIFF + help + Use shared libtiff from the target system. + +config BR2_PACKAGE_OPENCV4_WITH_V4L + bool "v4l support" + help + Enable Video 4 Linux support. + + If the package libv4l is enabled, its support is + automatically enabled. + +config BR2_PACKAGE_OPENCV4_WITH_WEBP + bool "webp support" + select BR2_PACKAGE_WEBP + help + Enable WebP support. + + Use shared libwebp from the target system. + +comment "Install options" + +config BR2_PACKAGE_OPENCV4_INSTALL_DATA + bool "install extra data" + help + Install various data that is used by cv libraries and/or + demo applications, specifically for haarcascades and + lbpcascades features. + + For further information: see OpenCV documentation. + +endif # BR2_PACKAGE_OPENCV4 + +comment "opencv4 needs a toolchain w/ C++, NPTL, wchar, dynamic library, gcc >= 4.8" + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 diff --git a/package/opencv4/opencv4.hash b/package/opencv4/opencv4.hash new file mode 100644 index 00000000..ae407e43 --- /dev/null +++ b/package/opencv4/opencv4.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b2171af5be6b26f7a06b1229948bbb2bdaa74fcf5cd097e0af6378fce50a6eb9 opencv4-4.10.0.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/opencv4/opencv4.mk b/package/opencv4/opencv4.mk new file mode 100644 index 00000000..989d32b9 --- /dev/null +++ b/package/opencv4/opencv4.mk @@ -0,0 +1,440 @@ +################################################################################ +# +# opencv4 +# +################################################################################ + +OPENCV4_VERSION = 4.10.0 +OPENCV4_SITE = $(call github,opencv,opencv,$(OPENCV4_VERSION)) +OPENCV4_INSTALL_STAGING = YES +OPENCV4_LICENSE = Apache-2.0 +OPENCV4_LICENSE_FILES = LICENSE +OPENCV4_CPE_ID_VENDOR = opencv +OPENCV4_CPE_ID_PRODUCT = opencv +OPENCV4_SUPPORTS_IN_SOURCE_BUILD = NO + +OPENCV4_CXXFLAGS = $(TARGET_CXXFLAGS) + +# Uses __atomic_fetch_add_4 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +OPENCV4_CXXFLAGS += -latomic +endif + +# Fix c++11 build with missing std::exception_ptr +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_64735),y) +OPENCV4_CXXFLAGS += -DCV__EXCEPTION_PTR=0 +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y) +OPENCV4_CXXFLAGS += -O0 +endif + +# OpenCV component options +OPENCV4_CONF_OPTS += \ + -DCMAKE_CXX_FLAGS="$(OPENCV4_CXXFLAGS)" \ + -DBUILD_DOCS=OFF \ + -DBUILD_PERF_TESTS=$(if $(BR2_PACKAGE_OPENCV4_BUILD_PERF_TESTS),ON,OFF) \ + -DBUILD_TESTS=$(if $(BR2_PACKAGE_OPENCV4_BUILD_TESTS),ON,OFF) \ + -DBUILD_WITH_DEBUG_INFO=OFF \ + -DDOWNLOAD_EXTERNAL_TEST_DATA=OFF \ + -DOPENCV_GENERATE_PKGCONFIG=ON \ + -DOPENCV_ENABLE_PKG_CONFIG=ON + +ifeq ($(BR2_PACKAGE_OPENCV4_BUILD_TESTS)$(BR2_PACKAGE_OPENCV4_BUILD_PERF_TESTS),) +OPENCV4_CONF_OPTS += -DINSTALL_TEST=OFF +else +OPENCV4_CONF_OPTS += -DINSTALL_TEST=ON +endif + +# OpenCV build options +OPENCV4_CONF_OPTS += \ + -DBUILD_WITH_STATIC_CRT=OFF \ + -DENABLE_CCACHE=OFF \ + -DENABLE_COVERAGE=OFF \ + -DENABLE_FAST_MATH=ON \ + -DENABLE_IMPL_COLLECTION=OFF \ + -DENABLE_NOISY_WARNINGS=OFF \ + -DENABLE_OMIT_FRAME_POINTER=ON \ + -DENABLE_PRECOMPILED_HEADERS=OFF \ + -DENABLE_PROFILING=OFF \ + -DOPENCV_WARNINGS_ARE_ERRORS=OFF + +# OpenCV link options +OPENCV4_CONF_OPTS += \ + -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF \ + -DCMAKE_SKIP_RPATH=OFF \ + -DCMAKE_USE_RELATIVE_PATHS=OFF + +# OpenCV packaging options: +OPENCV4_CONF_OPTS += \ + -DBUILD_PACKAGE=OFF \ + -DENABLE_SOLUTION_FOLDERS=OFF \ + -DINSTALL_CREATE_DISTRIB=OFF + +# OpenCV module selection +# * Modules on: +# - core: if not set, opencv does not build anything +# - hal: core's dependency +# * Modules off: +# - android*: android stuff +# - apps: programs for training classifiers +# - java: java bindings +# - viz: missing VTK dependency +# - world: all-in-one module +# +OPENCV4_CONF_OPTS += \ + -DBUILD_opencv_androidcamera=OFF \ + -DBUILD_opencv_apps=OFF \ + -DBUILD_opencv_calib3d=$(if $(BR2_PACKAGE_OPENCV4_LIB_CALIB3D),ON,OFF) \ + -DBUILD_opencv_core=ON \ + -DBUILD_opencv_dnn=$(if $(BR2_PACKAGE_OPENCV4_LIB_DNN),ON,OFF) \ + -DBUILD_opencv_features2d=$(if $(BR2_PACKAGE_OPENCV4_LIB_FEATURES2D),ON,OFF) \ + -DBUILD_opencv_flann=$(if $(BR2_PACKAGE_OPENCV4_LIB_FLANN),ON,OFF) \ + -DBUILD_opencv_highgui=$(if $(BR2_PACKAGE_OPENCV4_LIB_HIGHGUI),ON,OFF) \ + -DBUILD_opencv_imgcodecs=$(if $(BR2_PACKAGE_OPENCV4_LIB_IMGCODECS),ON,OFF) \ + -DBUILD_opencv_imgproc=$(if $(BR2_PACKAGE_OPENCV4_LIB_IMGPROC),ON,OFF) \ + -DBUILD_opencv_java=OFF \ + -DBUILD_opencv_ml=$(if $(BR2_PACKAGE_OPENCV4_LIB_ML),ON,OFF) \ + -DBUILD_opencv_objdetect=$(if $(BR2_PACKAGE_OPENCV4_LIB_OBJDETECT),ON,OFF) \ + -DBUILD_opencv_photo=$(if $(BR2_PACKAGE_OPENCV4_LIB_PHOTO),ON,OFF) \ + -DBUILD_opencv_shape=$(if $(BR2_PACKAGE_OPENCV4_LIB_SHAPE),ON,OFF) \ + -DBUILD_opencv_stitching=$(if $(BR2_PACKAGE_OPENCV4_LIB_STITCHING),ON,OFF) \ + -DBUILD_opencv_superres=$(if $(BR2_PACKAGE_OPENCV4_LIB_SUPERRES),ON,OFF) \ + -DBUILD_opencv_ts=$(if $(BR2_PACKAGE_OPENCV4_LIB_TS),ON,OFF) \ + -DBUILD_opencv_video=$(if $(BR2_PACKAGE_OPENCV4_LIB_VIDEO),ON,OFF) \ + -DBUILD_opencv_videoio=$(if $(BR2_PACKAGE_OPENCV4_LIB_VIDEOIO),ON,OFF) \ + -DBUILD_opencv_videostab=$(if $(BR2_PACKAGE_OPENCV4_LIB_VIDEOSTAB),ON,OFF) \ + -DBUILD_opencv_viz=OFF \ + -DBUILD_opencv_world=OFF + +# Hardware support options. +# +# * PowerPC and VFPv3 support are turned off since their only effects +# are altering CFLAGS, adding '-mcpu=G3 -mtune=G5' or '-mfpu=vfpv3' +# to them, which is already handled by Buildroot. +# * NEON logic is needed as it is not only used to add CFLAGS, but +# also to enable additional NEON code. +OPENCV4_CONF_OPTS += \ + -DENABLE_POWERPC=OFF \ + -DENABLE_NEON=$(if $(BR2_ARM_CPU_HAS_NEON),ON,OFF) \ + -DENABLE_VFPV3=OFF + +# Cuda stuff +OPENCV4_CONF_OPTS += \ + -DBUILD_CUDA_STUBS=OFF \ + -DBUILD_opencv_cudaarithm=OFF \ + -DBUILD_opencv_cudabgsegm=OFF \ + -DBUILD_opencv_cudacodec=OFF \ + -DBUILD_opencv_cudafeatures2d=OFF \ + -DBUILD_opencv_cudafilters=OFF \ + -DBUILD_opencv_cudaimgproc=OFF \ + -DBUILD_opencv_cudalegacy=OFF \ + -DBUILD_opencv_cudaobjdetect=OFF \ + -DBUILD_opencv_cudaoptflow=OFF \ + -DBUILD_opencv_cudastereo=OFF \ + -DBUILD_opencv_cudawarping=OFF \ + -DBUILD_opencv_cudev=OFF \ + -DWITH_CUBLAS=OFF \ + -DWITH_CUDA=OFF \ + -DWITH_CUFFT=OFF + +# NVidia stuff +OPENCV4_CONF_OPTS += -DWITH_NVCUVID=OFF + +# AMD stuff +OPENCV4_CONF_OPTS += \ + -DWITH_OPENCLAMDBLAS=OFF \ + -DWITH_OPENCLAMDFFT=OFF + +# Intel stuff +OPENCV4_CONF_OPTS += \ + -DBUILD_WITH_DYNAMIC_IPP=OFF \ + -DWITH_INTELPERC=OFF \ + -DWITH_IPP=OFF \ + -DWITH_IPP_A=OFF + +# Smartek stuff +OPENCV4_CONF_OPTS += -DWITH_GIGEAPI=OFF + +# Prosilica stuff +OPENCV4_CONF_OPTS += -DWITH_PVAPI=OFF + +# Ximea stuff +OPENCV4_CONF_OPTS += -DWITH_XIMEA=OFF + +# Non-Linux support (Android options) must remain OFF: +OPENCV4_CONF_OPTS += \ + -DANDROID=OFF \ + -DBUILD_ANDROID_CAMERA_WRAPPER=OFF \ + -DBUILD_ANDROID_EXAMPLES=OFF \ + -DBUILD_ANDROID_SERVICE=OFF \ + -DBUILD_FAT_JAVA_LIB=OFF \ + -DINSTALL_ANDROID_EXAMPLES=OFF \ + -DWITH_ANDROID_CAMERA=OFF + +# Non-Linux support (Mac OSX options) must remain OFF: +OPENCV4_CONF_OPTS += \ + -DWITH_AVFOUNDATION=OFF \ + -DWITH_CARBON=OFF \ + -DWITH_QUICKTIME=OFF + +# Non-Linux support (Windows options) must remain OFF: +OPENCV4_CONF_OPTS += \ + -DWITH_CSTRIPES=OFF \ + -DWITH_DSHOW=OFF \ + -DWITH_MSMF=OFF \ + -DWITH_VFW=OFF \ + -DWITH_VIDEOINPUT=OFF \ + -DWITH_WIN32UI=OFF + +# Software/3rd-party support options: +# - disable all examples +OPENCV4_CONF_OPTS += \ + -DBUILD_EXAMPLES=OFF \ + -DBUILD_JASPER=OFF \ + -DBUILD_JPEG=OFF \ + -DBUILD_OPENEXR=OFF \ + -DBUILD_OPENJPEG=OFF \ + -DBUILD_PNG=OFF \ + -DBUILD_PROTOBUF=OFF \ + -DBUILD_TIFF=OFF \ + -DBUILD_ZLIB=OFF \ + -DINSTALL_C_EXAMPLES=OFF \ + -DINSTALL_PYTHON_EXAMPLES=OFF \ + -DINSTALL_TO_MANGLED_PATHS=OFF + +# Disabled features (mostly because they are not available in Buildroot) +OPENCV4_CONF_OPTS += \ + -DWITH_1394=OFF \ + -DWITH_CLP=OFF \ + -DWITH_GDAL=OFF \ + -DWITH_GPHOTO2=OFF \ + -DWITH_GSTREAMER_0_10=OFF \ + -DWITH_LAPACK=OFF \ + -DWITH_MATLAB=OFF \ + -DWITH_OPENCL=OFF \ + -DWITH_OPENCL_SVM=OFF \ + -DWITH_OPENEXR=OFF \ + -DWITH_OPENNI2=OFF \ + -DWITH_OPENNI=OFF \ + -DWITH_UNICAP=OFF \ + -DWITH_VA=OFF \ + -DWITH_VA_INTEL=OFF \ + -DWITH_VTK=OFF \ + -DWITH_XINE=OFF + +OPENCV4_DEPENDENCIES += host-pkgconf zlib + +ifeq ($(BR2_PACKAGE_OPENCV4_CONTRIB),y) +# OPENCV4 depends on OPENCV4_CONTRIB, and not the other way around. +# The modules in OPENCV4_CONTRIB get built as part of the build +# process for OPENCV4, so the source needs to be unpacked already +OPENCV4_DEPENDENCIES += opencv4-contrib +OPENCV4_CONF_OPTS += \ + -DOPENCV_EXTRA_MODULES_PATH=$(OPENCV4_CONTRIB_DIR)/modules \ + -DBUILD_opencv_alphamat=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_ALPHAMAT),ON,OFF) \ + -DBUILD_opencv_aruco=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_ARUCO),ON,OFF) \ + -DBUILD_opencv_barcode=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_BARCODE),ON,OFF) \ + -DBUILD_opencv_bgsegm=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_BGSEGM),ON,OFF) \ + -DBUILD_opencv_bioinspired=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_BIOINSPIRED),ON,OFF) \ + -DBUILD_opencv_ccalib=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_CCALIB),ON,OFF) \ + -DBUILD_opencv_cnn_3dobj=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_CNN_3DOBJ),ON,OFF) \ + -DBUILD_opencv_cvv=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_CVV),ON,OFF) \ + -DBUILD_opencv_datasets=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_DATASETS),ON,OFF) \ + -DBUILD_opencv_dnn_objdetect=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_DNN_OBJDETECT),ON,OFF) \ + -DBUILD_opencv_dnn_superres=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_DNN_SUPERRES),ON,OFF) \ + -DBUILD_opencv_dnns_easily_fooled=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_DNNS_EASILY_FOOLED),ON,OFF) \ + -DBUILD_opencv_dpm=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_DPM),ON,OFF) \ + -DBUILD_opencv_face=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_FACE),ON,OFF) \ + -DBUILD_opencv_freetype=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_FREETYPE),ON,OFF) \ + -DBUILD_opencv_fuzzy=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_FUZZY),ON,OFF) \ + -DBUILD_opencv_hdf=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_HDF),ON,OFF) \ + -DBUILD_opencv_hfs=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_HFS),ON,OFF) \ + -DBUILD_opencv_img_hash=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_IMG_HASH),ON,OFF) \ + -DBUILD_opencv_intensity_transform=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_INTENSITY_TRANSFORM),ON,OFF) \ + -DBUILD_opencv_julia=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_JULIA),ON,OFF) \ + -DBUILD_opencv_line_descriptor=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_LINE_DESCRIPTOR),ON,OFF) \ + -DBUILD_opencv_matlab=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_MATLAB),ON,OFF) \ + -DBUILD_opencv_mcc=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_MCC),ON,OFF) \ + -DBUILD_opencv_optflow=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_OPTFLOW),ON,OFF) \ + -DBUILD_opencv_ovis=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_OVIS),ON,OFF) \ + -DBUILD_opencv_phase_unwrapping=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_PHASE_UNWRAPPING),ON,OFF) \ + -DBUILD_opencv_plot=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_PLOT),ON,OFF) \ + -DBUILD_opencv_quality=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_QUALITY),ON,OFF) \ + -DBUILD_opencv_rapid=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_RAPID),ON,OFF) \ + -DBUILD_opencv_reg=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_REG),ON,OFF) \ + -DBUILD_opencv_rgbd=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_RGBD),ON,OFF) \ + -DBUILD_opencv_saliency=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_SALIENCY),ON,OFF) \ + -DBUILD_opencv_sfm=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_SFM),ON,OFF) \ + -DBUILD_opencv_shape=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_SHAPE),ON,OFF) \ + -DBUILD_opencv_stereo=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_STEREO),ON,OFF) \ + -DBUILD_opencv_structured_light=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_STRUCTURED_LIGHT),ON,OFF) \ + -DBUILD_opencv_superres=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_SUPERRES),ON,OFF) \ + -DBUILD_opencv_surface_matching=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_SURFACE_MATCHING),ON,OFF) \ + -DBUILD_opencv_text=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_TEXT),ON,OFF) \ + -DBUILD_opencv_tracking=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_TRACKING),ON,OFF) \ + -DBUILD_opencv_videostab=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_VIDEOSTAB),ON,OFF) \ + -DBUILD_opencv_viz=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_VIZ),ON,OFF) \ + -DBUILD_opencv_wechat_qrcode=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_WECHAT_QRCODE),ON,OFF) \ + -DBUILD_opencv_xfeatures2d=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_XFEATURES2D),ON,OFF) \ + -DBUILD_opencv_ximgproc=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_XIMGPROC),ON,OFF) \ + -DBUILD_opencv_xobjdetect=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_XOBJDETECT),ON,OFF) \ + -DBUILD_opencv_xphoto=$(if $(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_XPHOTO),ON,OFF) +endif + +ifeq ($(BR2_PACKAGE_OPENCV4_CONTRIB_LIB_SFM),y) +OPENCV4_DEPENDENCIES += eigen glog gflags +OPENCV4_CONF_OPTS += -DWITH_EIGEN=ON +endif + +ifeq ($(BR2_PACKAGE_OPENCV4_JPEG2000_WITH_JASPER),y) +OPENCV4_CONF_OPTS += -DWITH_JASPER=ON +OPENCV4_DEPENDENCIES += jasper +else +OPENCV4_CONF_OPTS += -DWITH_JASPER=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV4_JPEG2000_WITH_OPENJPEG),y) +OPENCV4_CONF_OPTS += -DWITH_OPENJPEG=ON +OPENCV4_DEPENDENCIES += openjpeg +else +OPENCV4_CONF_OPTS += -DWITH_OPENJPEG=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV4_WITH_FFMPEG),y) +OPENCV4_CONF_OPTS += -DWITH_FFMPEG=ON +OPENCV4_DEPENDENCIES += ffmpeg bzip2 +else +OPENCV4_CONF_OPTS += -DWITH_FFMPEG=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV4_WITH_GSTREAMER1),y) +OPENCV4_CONF_OPTS += -DWITH_GSTREAMER=ON +OPENCV4_DEPENDENCIES += gstreamer1 gst1-plugins-base +else +OPENCV4_CONF_OPTS += -DWITH_GSTREAMER=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV4_WITH_GTK)$(BR2_PACKAGE_OPENCV4_WITH_GTK3),) +OPENCV4_CONF_OPTS += -DWITH_GTK=OFF -DWITH_GTK_2_X=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV4_WITH_GTK),y) +OPENCV4_CONF_OPTS += -DWITH_GTK=ON -DWITH_GTK_2_X=ON +OPENCV4_DEPENDENCIES += libgtk2 +endif + +ifeq ($(BR2_PACKAGE_OPENCV4_WITH_GTK3),y) +OPENCV4_CONF_OPTS += -DWITH_GTK=ON -DWITH_GTK_2_X=OFF +OPENCV4_DEPENDENCIES += libgtk3 +endif + +ifeq ($(BR2_PACKAGE_OPENCV4_WITH_JPEG),y) +OPENCV4_CONF_OPTS += -DWITH_JPEG=ON +OPENCV4_DEPENDENCIES += jpeg +else +OPENCV4_CONF_OPTS += -DWITH_JPEG=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV4_WITH_OPENGL),y) +OPENCV4_CONF_OPTS += -DWITH_OPENGL=ON +OPENCV4_DEPENDENCIES += libgl +else +OPENCV4_CONF_OPTS += -DWITH_OPENGL=OFF +endif + +OPENCV4_CONF_OPTS += -DWITH_OPENMP=$(if $(BR2_TOOLCHAIN_HAS_OPENMP),ON,OFF) + +ifeq ($(BR2_PACKAGE_OPENCV4_WITH_PNG),y) +OPENCV4_CONF_OPTS += -DWITH_PNG=ON +OPENCV4_DEPENDENCIES += libpng +else +OPENCV4_CONF_OPTS += -DWITH_PNG=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV4_WITH_PROTOBUF),y) +OPENCV4_CONF_OPTS += \ + -DPROTOBUF_UPDATE_FILES=ON \ + -DWITH_PROTOBUF=ON +OPENCV4_DEPENDENCIES += protobuf +else +OPENCV4_CONF_OPTS += -DWITH_PROTOBUF=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV4_WITH_QT5),y) +OPENCV4_CONF_OPTS += -DWITH_QT=5 +OPENCV4_DEPENDENCIES += qt5base +else +OPENCV4_CONF_OPTS += -DWITH_QT=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV4_WITH_TBB),y) +OPENCV4_CONF_OPTS += -DWITH_TBB=ON +OPENCV4_DEPENDENCIES += tbb +else +OPENCV4_CONF_OPTS += -DWITH_TBB=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV4_WITH_TIFF),y) +OPENCV4_CONF_OPTS += -DWITH_TIFF=ON +OPENCV4_DEPENDENCIES += tiff +else +OPENCV4_CONF_OPTS += -DWITH_TIFF=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV4_WITH_V4L),y) +OPENCV4_CONF_OPTS += \ + -DWITH_LIBV4L=$(if $(BR2_PACKAGE_LIBV4L),ON,OFF) \ + -DWITH_V4L=ON +OPENCV4_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBV4L),libv4l) +else +OPENCV4_CONF_OPTS += -DWITH_V4L=OFF -DWITH_LIBV4L=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV4_WITH_WEBP),y) +OPENCV4_CONF_OPTS += -DWITH_WEBP=ON +OPENCV4_DEPENDENCIES += webp +else +OPENCV4_CONF_OPTS += -DWITH_WEBP=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV4_LIB_PYTHON),y) +OPENCV4_CONF_OPTS += \ + -DBUILD_opencv_python2=OFF \ + -DBUILD_opencv_python3=ON \ + -DPYTHON3_EXECUTABLE=$(HOST_DIR)/bin/python3 \ + -DPYTHON3_INCLUDE_PATH=$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR) \ + -DPYTHON3_LIBRARIES=$(STAGING_DIR)/usr/lib/libpython$(PYTHON3_VERSION_MAJOR).so \ + -DPYTHON3_NUMPY_INCLUDE_DIRS=$(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/numpy/core/include \ + -DPYTHON3_PACKAGES_PATH=/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages \ + -DPYTHON3_NUMPY_VERSION=$(PYTHON_NUMPY_VERSION) +OPENCV4_DEPENDENCIES += python3 +OPENCV4_KEEP_PY_FILES += usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/cv2/config*.py +OPENCV4_CONF_ENV += $(PKG_PYTHON_SETUPTOOLS_ENV) +OPENCV4_DEPENDENCIES += python-numpy +else +OPENCV4_CONF_OPTS += \ + -DBUILD_opencv_python2=OFF \ + -DBUILD_opencv_python3=OFF +endif + +# Installation hooks: +define OPENCV4_CLEAN_INSTALL_LICENSE + $(RM) -fr $(TARGET_DIR)/usr/share/licenses/opencv4 +endef +OPENCV4_POST_INSTALL_TARGET_HOOKS += OPENCV4_CLEAN_INSTALL_LICENSE + +define OPENCV4_CLEAN_INSTALL_VALGRIND + $(RM) -f $(TARGET_DIR)/usr/share/opencv4/valgrind* +endef +OPENCV4_POST_INSTALL_TARGET_HOOKS += OPENCV4_CLEAN_INSTALL_VALGRIND + +ifneq ($(BR2_PACKAGE_OPENCV4_INSTALL_DATA),y) +define OPENCV4_CLEAN_INSTALL_DATA + $(RM) -fr $(TARGET_DIR)/usr/share/opencv4/haarcascades \ + $(TARGET_DIR)/usr/share/opencv4/lbpcascades +endef +OPENCV4_POST_INSTALL_TARGET_HOOKS += OPENCV4_CLEAN_INSTALL_DATA +endif + +$(eval $(cmake-package)) diff --git a/package/openfpgaloader/Config.in b/package/openfpgaloader/Config.in new file mode 100644 index 00000000..bd83ad41 --- /dev/null +++ b/package/openfpgaloader/Config.in @@ -0,0 +1,42 @@ +config BR2_PACKAGE_OPENFPGALOADER + bool "openfpgaloader" + depends on BR2_TOOLCHAIN_HAS_THREADS # libftdi1 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libftdi1 -> libusb + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LIBFTDI1 + select BR2_PACKAGE_ZLIB + help + Universal utility for programming FPGA + + https://github.com/trabucayre/openFPGALoader/ + +if BR2_PACKAGE_OPENFPGALOADER + +config BR2_PACKAGE_OPENFPGALOADER_CMSIS + bool "CMSIS-DAP support" + depends on BR2_PACKAGE_HAS_UDEV # hidapi + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # hidapi + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # hidapi -> libusb + select BR2_PACKAGE_HIDAPI + help + openfpgaloader CMSIS-DAP support + +comment "openfpgaloader CMSIS-DAP needs udev /dev management and a toolchain w/ NPTL threads" + depends on !BR2_PACKAGE_HAS_UDEV || !BR2_TOOLCHAIN_HAS_THREADS_NPTL + +config BR2_PACKAGE_OPENFPGALOADER_LIBGPIOD + bool "libgpiod support" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8 # libgpiod + select BR2_PACKAGE_LIBGPIOD + help + openfpgaloader libgpiod support + +comment "openfpgaloader libgpiod needs kernel headers >= 4.8" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8 + +endif + +comment "openfpgaloader needs a toolchain w/ threads, C++, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/openfpgaloader/openfpgaloader.hash b/package/openfpgaloader/openfpgaloader.hash new file mode 100644 index 00000000..6fa81a98 --- /dev/null +++ b/package/openfpgaloader/openfpgaloader.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 a463690358d2510919472c2f460039a304d016a08a45970821e667eea1c48cc8 openfpgaloader-0.11.0.tar.gz +sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE diff --git a/package/openfpgaloader/openfpgaloader.mk b/package/openfpgaloader/openfpgaloader.mk new file mode 100644 index 00000000..0fd172b5 --- /dev/null +++ b/package/openfpgaloader/openfpgaloader.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# openfpgaloader +# +################################################################################ + +OPENFPGALOADER_VERSION = 0.11.0 +OPENFPGALOADER_SITE = $(call github,trabucayre,openFPGALoader,v$(OPENFPGALOADER_VERSION)) +OPENFPGALOADER_LICENSE = Apache-2.0 +OPENFPGALOADER_LICENSE_FILES = LICENSE +OPENFPGALOADER_DEPENDENCIES = libftdi1 zlib + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +OPENFPGALOADER_DEPENDENCIES += udev +OPENFPGALOADER_CONF_OPTS += -DENABLE_UDEV=ON +else +OPENFPGALOADER_CONF_OPTS += -DENABLE_UDEV=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENFPGALOADER_CMSIS),y) +OPENFPGALOADER_DEPENDENCIES += hidapi +OPENFPGALOADER_CONF_OPTS += -DENABLE_CMSISDAP=ON +else +OPENFPGALOADER_CONF_OPTS += -DENABLE_CMSISDAP=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENFPGALOADER_LIBGPIOD),y) +OPENFPGALOADER_DEPENDENCIES += libgpiod +OPENFPGALOADER_CONF_OPTS += -DENABLE_LIBGPIOD=ON +else +OPENFPGALOADER_CONF_OPTS += -DENABLE_LIBGPIOD=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/opengl/Config.in b/package/opengl/Config.in new file mode 100644 index 00000000..cfa51def --- /dev/null +++ b/package/opengl/Config.in @@ -0,0 +1,7 @@ +source "package/opengl/libgl/Config.in" +source "package/opengl/libegl/Config.in" +source "package/opengl/libgbm/Config.in" +source "package/opengl/libgles/Config.in" +source "package/opengl/libopencl/Config.in" +source "package/opengl/libopenvg/Config.in" +source "package/opengl/libopenmax/Config.in" diff --git a/package/opengl/libegl/Config.in b/package/opengl/libegl/Config.in new file mode 100644 index 00000000..f46d09ed --- /dev/null +++ b/package/opengl/libegl/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HAS_LIBEGL + bool + +config BR2_PACKAGE_PROVIDES_LIBEGL + string + depends on BR2_PACKAGE_HAS_LIBEGL diff --git a/package/opengl/libegl/libegl.mk b/package/opengl/libegl/libegl.mk new file mode 100644 index 00000000..1f5460e6 --- /dev/null +++ b/package/opengl/libegl/libegl.mk @@ -0,0 +1,7 @@ +################################################################################ +# +# libegl +# +################################################################################ + +$(eval $(virtual-package)) diff --git a/package/opengl/libgbm/Config.in b/package/opengl/libgbm/Config.in new file mode 100644 index 00000000..6eb39761 --- /dev/null +++ b/package/opengl/libgbm/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_HAS_LIBGBM + bool + +config BR2_PACKAGE_PROVIDES_LIBGBM + string + depends on BR2_PACKAGE_HAS_LIBGBM + +# gbm implementations should select +# BR2_PACKAGE_LIBGBM_HAS_FEATURE_FORMAT_MODIFIER_PLANE_COUNT if they +# provide the format modifier plane count feature. This API was +# initially introduced in mesa3d version 17. A gbm implementation +# provides this feature if it is implement function +# gbm_device_get_format_modifier_plane_count. +config BR2_PACKAGE_LIBGBM_HAS_FEATURE_FORMAT_MODIFIER_PLANE_COUNT + bool + depends on BR2_PACKAGE_HAS_LIBGBM + +# gbm implementations should select +# BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF if they provide the dma +# buffer feature. This API was initially introduced in mesa3d version +# 10. A gbm implementation provides this feature if it is implement +# function gbm_bo_get_fd. +config BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF + bool + depends on BR2_PACKAGE_HAS_LIBGBM diff --git a/package/opengl/libgbm/libgbm.mk b/package/opengl/libgbm/libgbm.mk new file mode 100644 index 00000000..ecab2347 --- /dev/null +++ b/package/opengl/libgbm/libgbm.mk @@ -0,0 +1,9 @@ +################################################################################ +# +# libgbm +# +################################################################################ + +# This package requires to install a gbm.pc which needs +# to be provided by GBM providers. +$(eval $(virtual-package)) diff --git a/package/opengl/libgl/Config.in b/package/opengl/libgl/Config.in new file mode 100644 index 00000000..b9a1602a --- /dev/null +++ b/package/opengl/libgl/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HAS_LIBGL + bool + +config BR2_PACKAGE_PROVIDES_LIBGL + string + depends on BR2_PACKAGE_HAS_LIBGL diff --git a/package/opengl/libgl/libgl.mk b/package/opengl/libgl/libgl.mk new file mode 100644 index 00000000..7abc13d6 --- /dev/null +++ b/package/opengl/libgl/libgl.mk @@ -0,0 +1,7 @@ +################################################################################ +# +# libgl +# +################################################################################ + +$(eval $(virtual-package)) diff --git a/package/opengl/libgles/Config.in b/package/opengl/libgles/Config.in new file mode 100644 index 00000000..090ef16d --- /dev/null +++ b/package/opengl/libgles/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HAS_LIBGLES + bool + +config BR2_PACKAGE_PROVIDES_LIBGLES + string + depends on BR2_PACKAGE_HAS_LIBGLES diff --git a/package/opengl/libgles/libgles.mk b/package/opengl/libgles/libgles.mk new file mode 100644 index 00000000..407f8f92 --- /dev/null +++ b/package/opengl/libgles/libgles.mk @@ -0,0 +1,7 @@ +################################################################################ +# +# libgles +# +################################################################################ + +$(eval $(virtual-package)) diff --git a/package/opengl/libopencl/Config.in b/package/opengl/libopencl/Config.in new file mode 100644 index 00000000..57a3ad7d --- /dev/null +++ b/package/opengl/libopencl/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HAS_LIBOPENCL + bool + +config BR2_PACKAGE_PROVIDES_LIBOPENCL + string + depends on BR2_PACKAGE_HAS_LIBOPENCL diff --git a/package/opengl/libopencl/libopencl.mk b/package/opengl/libopencl/libopencl.mk new file mode 100644 index 00000000..e1c71f82 --- /dev/null +++ b/package/opengl/libopencl/libopencl.mk @@ -0,0 +1,7 @@ +################################################################################ +# +# libopencl +# +################################################################################ + +$(eval $(virtual-package)) diff --git a/package/opengl/libopenmax/Config.in b/package/opengl/libopenmax/Config.in new file mode 100644 index 00000000..901426ab --- /dev/null +++ b/package/opengl/libopenmax/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HAS_LIBOPENMAX + bool + +config BR2_PACKAGE_PROVIDES_LIBOPENMAX + string + depends on BR2_PACKAGE_HAS_LIBOPENMAX diff --git a/package/opengl/libopenmax/libopenmax.mk b/package/opengl/libopenmax/libopenmax.mk new file mode 100644 index 00000000..bc2e7f88 --- /dev/null +++ b/package/opengl/libopenmax/libopenmax.mk @@ -0,0 +1,7 @@ +################################################################################ +# +# libopenmax +# +################################################################################ + +$(eval $(virtual-package)) diff --git a/package/opengl/libopenvg/Config.in b/package/opengl/libopenvg/Config.in new file mode 100644 index 00000000..37d9410e --- /dev/null +++ b/package/opengl/libopenvg/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HAS_LIBOPENVG + bool + +config BR2_PACKAGE_PROVIDES_LIBOPENVG + string + depends on BR2_PACKAGE_HAS_LIBOPENVG diff --git a/package/opengl/libopenvg/libopenvg.mk b/package/opengl/libopenvg/libopenvg.mk new file mode 100644 index 00000000..3ce85a16 --- /dev/null +++ b/package/opengl/libopenvg/libopenvg.mk @@ -0,0 +1,7 @@ +################################################################################ +# +# libopenvg +# +################################################################################ + +$(eval $(virtual-package)) diff --git a/package/opengl/opengl.mk b/package/opengl/opengl.mk new file mode 100644 index 00000000..abf96d5c --- /dev/null +++ b/package/opengl/opengl.mk @@ -0,0 +1 @@ +include $(sort $(wildcard package/opengl/*/*.mk)) diff --git a/package/openipmi/Config.in b/package/openipmi/Config.in new file mode 100644 index 00000000..22fb9fa7 --- /dev/null +++ b/package/openipmi/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_OPENIPMI + bool "openipmi" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # dlopen() + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_PACKAGE_POPT + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_READLINE + help + IPMI allows remote monitoring and remote management of + devices. OpenIPMI provides a library and command line tools + to interact with IPMI enabled devices. OpenIPMI also provides + an IPMI BMC simulator. + + http://openipmi.sourceforge.net + +comment "openipmi needs a toolchain w/ dynamic library, NPTL" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/package/openipmi/openipmi.hash b/package/openipmi/openipmi.hash new file mode 100644 index 00000000..fdba9518 --- /dev/null +++ b/package/openipmi/openipmi.hash @@ -0,0 +1,8 @@ +# From http://sourceforge.net/projects/openipmi/files/OpenIPMI%202.0%20Library/ +sha1 bc910d5d682710e9ff290c33e0780a71edba29d4 OpenIPMI-2.0.34.tar.gz +md5 9d27cc86b95a29251009db96452e7213 OpenIPMI-2.0.34.tar.gz +# Locally computed +sha256 93227e43c72b5c3bd5949323e0669aa5527d1a971473a3a365af03fb8284a95f OpenIPMI-2.0.34.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING +sha256 185323a62589e7ee80f86bf2ea29caad9a09fdda0ea3f1c00db8b778c7edf60e COPYING.BSD +sha256 5bbcbb737e60fe9deba08ecbd00920cfcc3403ba2e534c64fdeea49d6bb87509 COPYING.LIB diff --git a/package/openipmi/openipmi.mk b/package/openipmi/openipmi.mk new file mode 100644 index 00000000..1c406879 --- /dev/null +++ b/package/openipmi/openipmi.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# openipmi +# +################################################################################ + +OPENIPMI_VERSION = 2.0.34 +OPENIPMI_SITE = https://sourceforge.net/projects/openipmi/files/OpenIPMI%202.0%20Library +OPENIPMI_SOURCE = OpenIPMI-$(OPENIPMI_VERSION).tar.gz +OPENIPMI_LICENSE = LGPL-2.0+, GPL-2.0+, BSD-3-Clause +OPENIPMI_LICENSE_FILES = COPYING.LIB COPYING COPYING.BSD +OPENIPMI_DEPENDENCIES = popt ncurses readline host-pkgconf +OPENIPMI_INSTALL_STAGING = YES +OPENIPMI_CONF_ENV = ac_cv_path_pkgprog="$(PKG_CONFIG_HOST_BINARY)" +OPENIPMI_CONF_OPTS = \ + --with-glib=no \ + --with-tcl=no \ + --with-perl=no \ + --with-python=no \ + --with-swig=no + +ifeq ($(BR2_PACKAGE_GDBM),y) +OPENIPMI_DEPENDENCIES += gdbm +endif + +ifeq ($(BR2_PACKAGE_LIBEXECINFO),y) +OPENIPMI_DEPENDENCIES += libexecinfo +OPENIPMI_CONF_ENV += LDFLAGS="$(TARGET_LDFLAGS) -lexecinfo" +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +OPENIPMI_DEPENDENCIES += openssl +OPENIPMI_CONF_OPTS += --with-openssl=yes +else +OPENIPMI_CONF_OPTS += --with-openssl=no +endif + +ifeq ($(BR2_PACKAGE_NETSNMP),y) +OPENIPMI_DEPENDENCIES += netsnmp +OPENIPMI_CONF_OPTS += --with-ucdsnmp=yes +else +OPENIPMI_CONF_OPTS += --with-ucdsnmp=no +endif + +$(eval $(autotools-package)) diff --git a/package/openjdk-bin/17.0.9_9/openjdk-bin.hash b/package/openjdk-bin/17.0.9_9/openjdk-bin.hash new file mode 100644 index 00000000..29f39c5d --- /dev/null +++ b/package/openjdk-bin/17.0.9_9/openjdk-bin.hash @@ -0,0 +1,7 @@ +# https://github.com/adoptium/temurin17-binaries/releases +sha256 7b175dbe0d6e3c9c23b6ed96449b018308d8fc94a5ecd9c0df8b8bc376c3c18a OpenJDK17U-jdk_x64_linux_hotspot_17.0.9_9.tar.gz +sha256 e2c5e26f8572544b201bc22a9b28f2b1a3147ab69be111cea07c7f52af252e75 OpenJDK17U-jdk_aarch64_linux_hotspot_17.0.9_9.tar.gz + +# Locally calculated +sha256 4b9abebc4338048a7c2dc184e9f800deb349366bdf28eb23c2677a77b4c87726 legal/java.prefs/LICENSE +sha256 a44eb7b5caf5534c6ef536b21edb40b4d6babf91bf97d9d45596868618b2c6fb legal/java.prefs/ASSEMBLY_EXCEPTION diff --git a/package/openjdk-bin/21.0.1_12/openjdk-bin.hash b/package/openjdk-bin/21.0.1_12/openjdk-bin.hash new file mode 100644 index 00000000..35be28bb --- /dev/null +++ b/package/openjdk-bin/21.0.1_12/openjdk-bin.hash @@ -0,0 +1,7 @@ +# From https://github.com/adoptium/temurin21-binaries/releases +sha256 1a6fa8abda4c5caed915cfbeeb176e7fbd12eb6b222f26e290ee45808b529aa1 OpenJDK21U-jdk_x64_linux_hotspot_21.0.1_12.tar.gz +sha256 e184dc29a6712c1f78754ab36fb48866583665fa345324f1a79e569c064f95e9 OpenJDK21U-jdk_aarch64_linux_hotspot_21.0.1_12.tar.gz + +# Locally calculated +sha256 4b9abebc4338048a7c2dc184e9f800deb349366bdf28eb23c2677a77b4c87726 legal/java.prefs/LICENSE +sha256 75292f03bf23d3db7c985aecc191029b93883200721ed23ed34a2e601463df33 legal/java.prefs/ASSEMBLY_EXCEPTION diff --git a/package/openjdk-bin/openjdk-bin.mk b/package/openjdk-bin/openjdk-bin.mk new file mode 100644 index 00000000..0280151f --- /dev/null +++ b/package/openjdk-bin/openjdk-bin.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# host-openjdk-bin +# +################################################################################ + +ifeq ($(BR2_PACKAGE_OPENJDK_VERSION_21),y) +HOST_OPENJDK_BIN_VERSION_MAJOR = 21 +HOST_OPENJDK_BIN_VERSION_MINOR = 0.1_12 +else +HOST_OPENJDK_BIN_VERSION_MAJOR = 17 +HOST_OPENJDK_BIN_VERSION_MINOR = 0.9_9 +endif + +ifeq ($(HOSTARCH),x86_64) +HOST_OPENJDK_BIN_DOWNLOAD_ARCH_NAME = x64 +endif +ifeq ($(HOSTARCH),aarch64) +HOST_OPENJDK_BIN_DOWNLOAD_ARCH_NAME = aarch64 +endif + +HOST_OPENJDK_BIN_VERSION = $(HOST_OPENJDK_BIN_VERSION_MAJOR).$(HOST_OPENJDK_BIN_VERSION_MINOR) +HOST_OPENJDK_BIN_SOURCE = OpenJDK$(HOST_OPENJDK_BIN_VERSION_MAJOR)U-jdk_$(HOST_OPENJDK_BIN_DOWNLOAD_ARCH_NAME)_linux_hotspot_$(HOST_OPENJDK_BIN_VERSION).tar.gz +HOST_OPENJDK_BIN_SITE = https://github.com/adoptium/temurin$(HOST_OPENJDK_BIN_VERSION_MAJOR)-binaries/releases/download/jdk-$(subst _,%2B,$(HOST_OPENJDK_BIN_VERSION)) + +HOST_OPENJDK_BIN_LICENSE = GPL-2.0+ with exception +HOST_OPENJDK_BIN_LICENSE_FILES = legal/java.prefs/LICENSE legal/java.prefs/ASSEMBLY_EXCEPTION + +HOST_OPENJDK_BIN_ROOT_DIR = $(HOST_DIR)/lib/jvm + +# unpack200 has an invalid RPATH and relies on libzlib. When +# host-libzlib is installed on the system, the error "ERROR: package +# host-libzlib installs executables without proper RPATH: will occur. +# Because unpack200 is a deprecated tool, removing it to fix this +# issue is safe. +define HOST_OPENJDK_BIN_INSTALL_CMDS + mkdir -p $(HOST_OPENJDK_BIN_ROOT_DIR) + cp -dpfr $(@D)/* $(HOST_OPENJDK_BIN_ROOT_DIR) + $(RM) -f $(HOST_OPENJDK_BIN_ROOT_DIR)/bin/unpack200 +endef + +$(eval $(host-generic-package)) + +# variables used by other packages +JAVAC = $(HOST_OPENJDK_BIN_ROOT_DIR)/bin/javac diff --git a/package/openjdk/17.0.9+9/0001-Add-ARCv2-ISA-processors-support-to-Zero.patch b/package/openjdk/17.0.9+9/0001-Add-ARCv2-ISA-processors-support-to-Zero.patch new file mode 100644 index 00000000..afec2772 --- /dev/null +++ b/package/openjdk/17.0.9+9/0001-Add-ARCv2-ISA-processors-support-to-Zero.patch @@ -0,0 +1,109 @@ +From 9a3c2a0714420186ae8d5159d5416c6fa2009ad9 Mon Sep 17 00:00:00 2001 +From: Alexey Brodkin +Date: Mon, 18 Oct 2021 05:20:05 -0700 +Subject: [PATCH] Add ARCv2 ISA processors support to Zero + +This adds ARCv2 processors support in OpenJDK via +"Zero Assembly Project" (see https://openjdk.java.net/projects/zero). + +That' a purely interpretive mode, so likely not that fast +as JIT'ed version, but for starters it's much better than nothing. + +Once all the logistical problems are solved hopefully this +change will be accepted upstream. + +Signed-off-by: Alexey Brodkin +--- + make/autoconf/libraries.m4 | 8 ++++++++ + make/autoconf/platform.m4 | 8 ++++++++ + src/hotspot/os/linux/os_linux.cpp | 8 +++++++- + 3 files changed, 23 insertions(+), 1 deletion(-) + +diff --git a/make/autoconf/libraries.m4 b/make/autoconf/libraries.m4 +index 5120918aed2..f7a99955874 100644 +--- a/make/autoconf/libraries.m4 ++++ b/make/autoconf/libraries.m4 +@@ -152,6 +152,14 @@ AC_DEFUN_ONCE([LIB_SETUP_LIBRARIES], + BASIC_JVM_LIBS="$BASIC_JVM_LIBS -latomic" + fi + ++ # Libatomic library ++ # 32-bit ARC needs fallback library for 8-byte atomic ops ++ # Inspired by a fix for MIPS, see https://github.com/openjdk/jdk/commit/1b3aa3af ++ if test "x$OPENJDK_TARGET_OS" = xlinux && ++ (test "x$OPENJDK_TARGET_CPU" = xarc); then ++ BASIC_JVM_LIBS="$BASIC_JVM_LIBS -latomic" ++ fi ++ + # perfstat lib + if test "x$OPENJDK_TARGET_OS" = xaix; then + BASIC_JVM_LIBS="$BASIC_JVM_LIBS -lperfstat" +diff --git a/make/autoconf/platform.m4 b/make/autoconf/platform.m4 +index c0f2446dbd7..dc416ece885 100644 +--- a/make/autoconf/platform.m4 ++++ b/make/autoconf/platform.m4 +@@ -54,6 +54,12 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_CPU], + VAR_CPU_BITS=64 + VAR_CPU_ENDIAN=little + ;; ++ arc) ++ VAR_CPU=arc ++ VAR_CPU_ARCH=arc ++ VAR_CPU_BITS=32 ++ VAR_CPU_ENDIAN=little ++ ;; + arm*) + VAR_CPU=arm + VAR_CPU_ARCH=arm +@@ -565,6 +571,8 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS_HELPER], + HOTSPOT_$1_CPU_DEFINE=RISCV64 + + # The cpu defines below are for zero, we don't support them directly. ++ elif test "x$OPENJDK_$1_CPU" = xarc; then ++ HOTSPOT_$1_CPU_DEFINE=ARC + elif test "x$OPENJDK_$1_CPU" = xsparc; then + HOTSPOT_$1_CPU_DEFINE=SPARC + elif test "x$OPENJDK_$1_CPU" = xppc; then +diff --git a/src/hotspot/os/linux/os_linux.cpp b/src/hotspot/os/linux/os_linux.cpp +index b08caf4d5d3..2bf084895ba 100644 +--- a/src/hotspot/os/linux/os_linux.cpp ++++ b/src/hotspot/os/linux/os_linux.cpp +@@ -1721,6 +1721,9 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen) { + #ifndef EM_AARCH64 + #define EM_AARCH64 183 /* ARM AARCH64 */ + #endif ++#ifndef EM_ARC_COMPACT2 ++ #define EM_ARC_COMPACT2 195 /* ARC ARCv2 ISA */ ++#endif + #ifndef EM_RISCV + #define EM_RISCV 243 /* RISC-V */ + #endif +@@ -1745,6 +1748,7 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen) { + {EM_SH, EM_SH, ELFCLASS32, ELFDATA2MSB, (char*)"SuperH BE"}, + #endif + {EM_ARM, EM_ARM, ELFCLASS32, ELFDATA2LSB, (char*)"ARM"}, ++ {EM_ARC_COMPACT2, EM_ARC_COMPACT2, ELFCLASS32, ELFDATA2LSB, (char*)"ARC"}, + // we only support 64 bit z architecture + {EM_S390, EM_S390, ELFCLASS64, ELFDATA2MSB, (char*)"IBM System/390"}, + {EM_ALPHA, EM_ALPHA, ELFCLASS64, ELFDATA2LSB, (char*)"Alpha"}, +@@ -1773,6 +1777,8 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen) { + static Elf32_Half running_arch_code=EM_PPC; + #elif (defined AARCH64) + static Elf32_Half running_arch_code=EM_AARCH64; ++#elif (defined ARC) ++ static Elf32_Half running_arch_code=EM_ARC_COMPACT2; + #elif (defined ARM) + static Elf32_Half running_arch_code=EM_ARM; + #elif (defined S390) +@@ -1795,7 +1801,7 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen) { + static Elf32_Half running_arch_code=EM_LOONGARCH; + #else + #error Method os::dll_load requires that one of following is defined:\ +- AARCH64, ALPHA, ARM, AMD64, IA32, IA64, LOONGARCH, M68K, MIPS, MIPSEL, PARISC, __powerpc__, __powerpc64__, RISCV, S390, SH, __sparc ++ AARCH64, ALPHA, ARC, ARM, AMD64, IA32, IA64, LOONGARCH, M68K, MIPS, MIPSEL, PARISC, __powerpc__, __powerpc64__, RISCV, S390, SH, __sparc + #endif + + // Identify compatibility class for VM's architecture and library's architecture +-- +2.16.2 + diff --git a/package/openjdk/21.0.1+12/0001-Add-ARCv2-ISA-processors-support-to-Zero.patch b/package/openjdk/21.0.1+12/0001-Add-ARCv2-ISA-processors-support-to-Zero.patch new file mode 100644 index 00000000..6c46ec7b --- /dev/null +++ b/package/openjdk/21.0.1+12/0001-Add-ARCv2-ISA-processors-support-to-Zero.patch @@ -0,0 +1,109 @@ +From 9a3c2a0714420186ae8d5159d5416c6fa2009ad9 Mon Sep 17 00:00:00 2001 +From: Alexey Brodkin +Date: Mon, 18 Oct 2021 05:20:05 -0700 +Subject: [PATCH] Add ARCv2 ISA processors support to Zero + +This adds ARCv2 processors support in OpenJDK via +"Zero Assembly Project" (see https://openjdk.java.net/projects/zero). + +That' a purely interpretive mode, so likely not that fast +as JIT'ed version, but for starters it's much better than nothing. + +Once all the logistical problems are solved hopefully this +change will be accepted upstream. + +Signed-off-by: Alexey Brodkin +--- + make/autoconf/libraries.m4 | 8 ++++++++ + make/autoconf/platform.m4 | 8 ++++++++ + src/hotspot/os/linux/os_linux.cpp | 8 +++++++- + 3 files changed, 23 insertions(+), 1 deletion(-) + +diff --git a/make/autoconf/libraries.m4 b/make/autoconf/libraries.m4 +index 5120918aed2..f7a99955874 100644 +--- a/make/autoconf/libraries.m4 ++++ b/make/autoconf/libraries.m4 +@@ -163,6 +163,14 @@ AC_DEFUN_ONCE([LIB_SETUP_LIBRARIES], + BASIC_JVM_LIBS="$BASIC_JVM_LIBS -lrt" + fi + ++ # Libatomic library ++ # 32-bit ARC needs fallback library for 8-byte atomic ops ++ # Inspired by a fix for MIPS, see https://github.com/openjdk/jdk/commit/1b3aa3af ++ if test "x$OPENJDK_TARGET_OS" = xlinux && ++ (test "x$OPENJDK_TARGET_CPU" = xarc); then ++ BASIC_JVM_LIBS="$BASIC_JVM_LIBS -latomic" ++ fi ++ + # perfstat lib + if test "x$OPENJDK_TARGET_OS" = xaix; then + BASIC_JVM_LIBS="$BASIC_JVM_LIBS -lperfstat" +diff --git a/make/autoconf/platform.m4 b/make/autoconf/platform.m4 +index c0f2446dbd7..dc416ece885 100644 +--- a/make/autoconf/platform.m4 ++++ b/make/autoconf/platform.m4 +@@ -54,6 +54,12 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_CPU], + VAR_CPU_BITS=64 + VAR_CPU_ENDIAN=little + ;; ++ arc) ++ VAR_CPU=arc ++ VAR_CPU_ARCH=arc ++ VAR_CPU_BITS=32 ++ VAR_CPU_ENDIAN=little ++ ;; + arm*) + VAR_CPU=arm + VAR_CPU_ARCH=arm +@@ -571,6 +577,8 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS_HELPER], + HOTSPOT_$1_CPU_DEFINE=RISCV64 + + # The cpu defines below are for zero, we don't support them directly. ++ elif test "x$OPENJDK_$1_CPU" = xarc; then ++ HOTSPOT_$1_CPU_DEFINE=ARC + elif test "x$OPENJDK_$1_CPU" = xsparc; then + HOTSPOT_$1_CPU_DEFINE=SPARC + elif test "x$OPENJDK_$1_CPU" = xppc; then +diff --git a/src/hotspot/os/linux/os_linux.cpp b/src/hotspot/os/linux/os_linux.cpp +index b08caf4d5d3..2bf084895ba 100644 +--- a/src/hotspot/os/linux/os_linux.cpp ++++ b/src/hotspot/os/linux/os_linux.cpp +@@ -1653,6 +1653,9 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen) { + #ifndef EM_AARCH64 + #define EM_AARCH64 183 /* ARM AARCH64 */ + #endif ++#ifndef EM_ARC_COMPACT2 ++ #define EM_ARC_COMPACT2 195 /* ARC ARCv2 ISA */ ++#endif + #ifndef EM_RISCV + #define EM_RISCV 243 /* RISC-V */ + #endif +@@ -1677,6 +1680,7 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen) { + {EM_SH, EM_SH, ELFCLASS32, ELFDATA2MSB, (char*)"SuperH BE"}, + #endif + {EM_ARM, EM_ARM, ELFCLASS32, ELFDATA2LSB, (char*)"ARM"}, ++ {EM_ARC_COMPACT2, EM_ARC_COMPACT2, ELFCLASS32, ELFDATA2LSB, (char*)"ARC"}, + // we only support 64 bit z architecture + {EM_S390, EM_S390, ELFCLASS64, ELFDATA2MSB, (char*)"IBM System/390"}, + {EM_ALPHA, EM_ALPHA, ELFCLASS64, ELFDATA2LSB, (char*)"Alpha"}, +@@ -1709,6 +1713,8 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen) { + static Elf32_Half running_arch_code=EM_PPC; + #elif (defined AARCH64) + static Elf32_Half running_arch_code=EM_AARCH64; ++#elif (defined ARC) ++ static Elf32_Half running_arch_code=EM_ARC_COMPACT2; + #elif (defined ARM) + static Elf32_Half running_arch_code=EM_ARM; + #elif (defined S390) +@@ -1731,7 +1737,7 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen) { + static Elf32_Half running_arch_code=EM_LOONGARCH; + #else + #error Method os::dll_load requires that one of following is defined:\ +- AARCH64, ALPHA, ARM, AMD64, IA32, IA64, LOONGARCH64, M68K, MIPS, MIPSEL, PARISC, __powerpc__, __powerpc64__, RISCV, S390, SH, __sparc ++ AARCH64, ALPHA, ARC, ARM, AMD64, IA32, IA64, LOONGARCH64, M68K, MIPS, MIPSEL, PARISC, __powerpc__, __powerpc64__, RISCV, S390, SH, __sparc + #endif + + // Identify compatibility class for VM's architecture and library's architecture +-- +2.16.2 + diff --git a/package/openjdk/Config.in b/package/openjdk/Config.in new file mode 100644 index 00000000..25d6960e --- /dev/null +++ b/package/openjdk/Config.in @@ -0,0 +1,178 @@ +config BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS + bool + default y if BR2_HOSTARCH = "x86_64" + default y if BR2_HOSTARCH = "aarch64" + +# Taken from make/autoconf/platform.m4 +config BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS + bool + default y if BR2_aarch64 + default y if BR2_arc && !(BR2_arc750d || BR2_arc770d) + default y if BR2_arm + default y if BR2_i386 || BR2_x86_64 + default y if BR2_m68k + default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + default y if BR2_sh + +config BR2_PACKAGE_OPENJDK + bool "openjdk" + depends on BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS + depends on BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS + depends on !BR2_SOFT_FLOAT + depends on !BR2_STATIC_LIBS # glibc + depends on BR2_INSTALL_LIBSTDCPP # cups + depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib, cups, libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb, C++14 for OpenJDK17 + # Strictly needed only for OpenJDK17, but to keep dependencies + # simple with ARC supported only with OpenJDK17, we make this + # dependency apply to OpenJDK as a whole. + depends on BR2_HOST_GCC_AT_LEAST_4_9 # C++14 + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_USE_MMU # cups + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_MIXER + select BR2_PACKAGE_ALSA_LIB_PCM + select BR2_PACKAGE_ALSA_LIB_RAWMIDI + select BR2_PACKAGE_ALSA_LIB_SEQ + select BR2_PACKAGE_CUPS + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_GIFLIB + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LCMS2 + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_XLIB_LIBXTST + select BR2_PACKAGE_ZLIB + help + OpenJDK is a free and open-source implementation of the + Java Platform. + + http://openjdk.java.net/ + +if BR2_PACKAGE_OPENJDK + +choice + prompt "openjdk version" + default BR2_PACKAGE_OPENJDK_VERSION_17 if BR2_OPENJDK_VERSION_LTS # legacy + default BR2_PACKAGE_OPENJDK_VERSION_21 if BR2_OPENJDK_VERSION_LATEST # legacy + default BR2_PACKAGE_OPENJDK_VERSION_21 + help + Select the version of OpenJDK you wish to use. + +config BR2_PACKAGE_OPENJDK_VERSION_17 + bool "OpenJDK 17" + +config BR2_PACKAGE_OPENJDK_VERSION_21 + bool "OpenJDK 21" + +endchoice + +config BR2_PACKAGE_OPENJDK_FULL_JDK + bool "Build the full JDK" + help + Install the full JDK instead of just the run time. + The full JDK includes several packages used for debugging and + development. Some useful tools included with the JDK are: + - javaws + Command line tool for launching Java Web Start and setting + various options. + + - jcmd: + JVM Diagnostic Commands tool: Sends diagnostic command + requests to a running Java Virtual Machine. + + - jinfo + Configuration Info for Java: Prints configuration + information for a given process or core file or a remote + debug server. + + - jmap + Memory Map for Java: Prints shared object memory maps or + heap memory details of a given process or core file or a + remote debug server. + + - jsadebugd + Serviceability Agent Debug Daemon for Java: Attaches to a + process or core file and acts as a debug server. + + - jstack + Stack Trace for Java - Prints a stack trace of threads for + a given process or core file or remote debug server. + + - jstat + JVM Statistics Monitoring Tool: Attaches to an + instrumented HotSpot Java virtual machine and collects and + logs performance statistics as specified by the command + line options. + + - jstatd + JVM jstat Daemon - Launches an RMI server application that + monitors for the creation and termination of instrumented + HotSpot Java virtual machines and provides an interface to + allow remote monitoring tools to attach to Java virtual + machines running on the local system. + + Note: + While the JDK also comes with several tools which can be used + for developing java applications on a target, Buildroot does + not support development on a target. Building the full JDK is + supported for debugging purposes only. + + Selecting this option increases the file system by + approximately 110M. + +choice + prompt "openjdk variant" + default BR2_PACKAGE_OPENJDK_JVM_VARIANT_SERVER if !(BR2_powerpc || BR2_arc) + default BR2_PACKAGE_OPENJDK_JVM_VARIANT_ZERO if BR2_powerpc + default BR2_PACKAGE_OPENJDK_JVM_VARIANT_ZERO if BR2_arc + +config BR2_PACKAGE_OPENJDK_JVM_VARIANT_CLIENT + bool "client" + depends on !(BR2_powerpc || BR2_arc) + help + Quick loading, but slower run-time performance. + +config BR2_PACKAGE_OPENJDK_JVM_VARIANT_SERVER + bool "server" + depends on !(BR2_powerpc || BR2_arc) + help + Slower loading, but faster run-time performance. + +config BR2_PACKAGE_OPENJDK_JVM_VARIANT_ZERO + bool "zero" + select BR2_PACKAGE_LIBFFI + help + A non-assembler variant with wide arch support, however + performance is less then client/server. + + http://openjdk.java.net/projects/zero + +endchoice +endif + +comment "openjdk needs X.Org" + depends on BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_XORG7 + +comment "openjdk needs glibc, and a toolchain w/ wchar, dynamic library, threads, C++, gcc >= 4.9, host gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_HOST_GCC_AT_LEAST_4_9 + +comment "openjdk does not support soft float configurations" + depends on BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on BR2_SOFT_FLOAT diff --git a/package/openjdk/openjdk.hash b/package/openjdk/openjdk.hash new file mode 100644 index 00000000..949a62e5 --- /dev/null +++ b/package/openjdk/openjdk.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 9943e3814d3c1a31f1449f09a8b67df54841944f855a1d372be892c5e6b19217 openjdk-21.0.1+12.tar.gz +sha256 836adb5fec5a58ce2f49a0faeaf9e69a3cb89865f4d855c6098f0264843672ad openjdk-17.0.9+9.tar.gz +sha256 4b9abebc4338048a7c2dc184e9f800deb349366bdf28eb23c2677a77b4c87726 LICENSE diff --git a/package/openjdk/openjdk.mk b/package/openjdk/openjdk.mk new file mode 100644 index 00000000..f4e1920e --- /dev/null +++ b/package/openjdk/openjdk.mk @@ -0,0 +1,159 @@ +################################################################################ +# +# openjdk +# +################################################################################ + +ifeq ($(BR2_PACKAGE_OPENJDK_VERSION_21),y) +OPENJDK_VERSION_MAJOR = 21 +OPENJDK_VERSION_MINOR = 0.1+12 +else +OPENJDK_VERSION_MAJOR = 17 +OPENJDK_VERSION_MINOR = 0.9+9 +endif +OPENJDK_VERSION = $(OPENJDK_VERSION_MAJOR).$(OPENJDK_VERSION_MINOR) +OPENJDK_SITE = $(call github,openjdk,jdk$(OPENJDK_VERSION_MAJOR)u,jdk-$(OPENJDK_VERSION)) + +OPENJDK_LICENSE = GPL-2.0+ with exception +OPENJDK_LICENSE_FILES = LICENSE +OPENJDK_INSTALL_STAGING = YES + +# OpenJDK requires Alsa, cups, and X11 even for a headless build. +# host-zip is needed for the zip executable. +OPENJDK_DEPENDENCIES = \ + host-gawk \ + host-openjdk-bin \ + host-pkgconf \ + host-zip \ + host-zlib \ + alsa-lib \ + cups \ + fontconfig \ + giflib \ + jpeg \ + lcms2 \ + libpng \ + libusb \ + xlib_libXrandr \ + xlib_libXrender \ + xlib_libXt \ + xlib_libXtst \ + zlib + +# JVM variants +ifeq ($(BR2_PACKAGE_OPENJDK_JVM_VARIANT_CLIENT),y) +OPENJDK_JVM_VARIANT = client +endif +ifeq ($(BR2_PACKAGE_OPENJDK_JVM_VARIANT_SERVER),y) +OPENJDK_JVM_VARIANT = server +endif +ifeq ($(BR2_PACKAGE_OPENJDK_JVM_VARIANT_ZERO),y) +OPENJDK_JVM_VARIANT = zero +OPENJDK_DEPENDENCIES += libffi +endif + +ifeq ($(BR2_PACKAGE_OPENJDK_FULL_JDK),y) +OPENJDK_VARIANT = jdk +OPENJDK_MAKE_TARGET = jdk-image +else +OPENJDK_VARIANT = jre +OPENJDK_MAKE_TARGET = legacy-jre-image +endif + +# OpenJDK installs a file named 'modules' in jre/lib, which gets installed as +# /usr/lib/modules. However, with a merged /usr, this conflicts with the +# directory named 'modules' installed by the kernel. If OpenJDK gets built +# after the kernel, this manifests itself with: "cp: cannot overwrite +# directory '/usr/lib/modules with non-directory." +OPENJDK_INSTALL_BASE = /usr/lib/jvm + +# OpenJDK ignores some variables unless passed via the environment. +# These variables are PATH, LD, CC, CXX, and CPP. +# OpenJDK defaults ld to the ld binary but passes -Xlinker and -z as +# arguments during the linking process, which causes compilation failures. +# To fix this issue, LD is set to point to gcc. +OPENJDK_CONF_ENV = \ + PATH=$(BR_PATH) \ + CC=$(TARGET_CC) \ + CPP=$(TARGET_CPP) \ + CXX=$(TARGET_CXX) \ + LD=$(TARGET_CC) \ + BUILD_SYSROOT_CFLAGS="$(HOST_CFLAGS)" \ + BUILD_SYSROOT_LDFLAGS="$(HOST_LDFLAGS)" + +OPENJDK_CONF_OPTS = \ + --disable-full-docs \ + --disable-manpages \ + --disable-warnings-as-errors \ + --enable-headless-only \ + --enable-openjdk-only \ + --enable-unlimited-crypto \ + --openjdk-target=$(GNU_TARGET_NAME) \ + --with-boot-jdk=$(HOST_OPENJDK_BIN_ROOT_DIR) \ + --with-stdc++lib=dynamic \ + --with-debug-level=release \ + --with-devkit=$(HOST_DIR) \ + --with-extra-cflags="$(TARGET_CFLAGS)" \ + --with-extra-cxxflags="$(TARGET_CXXFLAGS)" \ + --with-extra-ldflags="-Wl,-rpath,$(OPENJDK_INSTALL_BASE)/lib,-rpath,$(OPENJDK_INSTALL_BASE)/lib/$(OPENJDK_JVM_VARIANT)" \ + --with-giflib=system \ + --with-jobs=$(PARALLEL_JOBS) \ + --with-jvm-variants=$(OPENJDK_JVM_VARIANT) \ + --with-lcms=system \ + --with-libjpeg=system \ + --with-libpng=system \ + --with-zlib=system \ + --with-native-debug-symbols=none \ + --without-version-pre \ + --with-sysroot=$(STAGING_DIR) \ + --with-version-build="$(OPENJDK_VERSION_MAJOR)" \ + --with-version-string="$(OPENJDK_VERSION_MAJOR)" + +# If building for AArch64, use the provided CPU port. +ifeq ($(BR2_aarch64),y) +OPENJDK_CONF_OPTS += --with-abi-profile=aarch64 +endif + +ifeq ($(BR2_CCACHE),y) +OPENJDK_CONF_OPTS += \ + --enable-ccache \ + --with-ccache-dir=$(BR2_CCACHE_DIR) +endif + +# Autogen and configure are performed in a single step. +define OPENJDK_CONFIGURE_CMDS + chmod +x $(@D)/configure + cd $(@D); $(OPENJDK_CONF_ENV) ./configure autogen $(OPENJDK_CONF_OPTS) +endef + +# Make -jn is unsupported. Instead, set the "--with-jobs=" configure option, +# and use $(MAKE1). +define OPENJDK_BUILD_CMDS + $(TARGET_MAKE_ENV) $(OPENJDK_CONF_ENV) $(MAKE1) -C $(@D) $(OPENJDK_MAKE_TARGET) +endef + +# Calling make install always builds and installs the JDK instead of the JRE, +# which makes manual installation necessary. +define OPENJDK_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)$(OPENJDK_INSTALL_BASE) + cp -dpfr $(@D)/build/linux-*-release/images/$(OPENJDK_VARIANT)/* \ + $(TARGET_DIR)$(OPENJDK_INSTALL_BASE)/ + cd $(TARGET_DIR)/usr/bin && ln -snf ../..$(OPENJDK_INSTALL_BASE)/bin/* . +endef + +define OPENJDK_INSTALL_STAGING_CMDS + mkdir -p $(STAGING_DIR)/usr/include/jvm + cp -dpfr $(@D)/build/linux-*-release/jdk/include/* \ + $(STAGING_DIR)/usr/include/jvm +endef + +# Demos and includes are not needed on the target +ifeq ($(BR2_PACKAGE_OPENJDK_FULL_JDK),y) +define OPENJDK_REMOVE_UNEEDED_JDK_DIRECTORIES + $(RM) -r $(TARGET_DIR)$(OPENJDK_INSTALL_BASE)/include/ + $(RM) -r $(TARGET_DIR)$(OPENJDK_INSTALL_BASE)/demo/ +endef +OPENJDK_TARGET_FINALIZE_HOOKS += OPENJDK_REMOVE_UNEEDED_JDK_DIRECTORIES +endif + +$(eval $(generic-package)) diff --git a/package/openjpeg/Config.in b/package/openjpeg/Config.in new file mode 100644 index 00000000..738999fe --- /dev/null +++ b/package/openjpeg/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_OPENJPEG + bool "openjpeg" + help + The OpenJPEG library is an open-source JPEG 2000 codec + written in C. + + http://www.openjpeg.org diff --git a/package/openjpeg/openjpeg.hash b/package/openjpeg/openjpeg.hash new file mode 100644 index 00000000..1e720547 --- /dev/null +++ b/package/openjpeg/openjpeg.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 90e3896fed910c376aaf79cdd98bdfdaf98c6472efd8e1debf0a854938cbda6a openjpeg-2.5.2.tar.gz +sha256 a6af136f3e15038a666b61f376612a07d9a4e48cb7c01adbf3e33b3f14ab49b6 LICENSE diff --git a/package/openjpeg/openjpeg.mk b/package/openjpeg/openjpeg.mk new file mode 100644 index 00000000..e7cb7505 --- /dev/null +++ b/package/openjpeg/openjpeg.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# openjpeg +# +################################################################################ + +OPENJPEG_VERSION = 2.5.2 +OPENJPEG_SITE = $(call github,uclouvain,openjpeg,v$(OPENJPEG_VERSION)) +OPENJPEG_LICENSE = BSD-2-Clause +OPENJPEG_LICENSE_FILES = LICENSE +OPENJPEG_CPE_ID_VENDOR = uclouvain +OPENJPEG_INSTALL_STAGING = YES + +OPENJPEG_DEPENDENCIES += $(if $(BR2_PACKAGE_ZLIB),zlib) +OPENJPEG_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBPNG),libpng) +OPENJPEG_DEPENDENCIES += $(if $(BR2_PACKAGE_TIFF),tiff) +OPENJPEG_DEPENDENCIES += $(if $(BR2_PACKAGE_LCMS2),lcms2) + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +OPENJPEG_CONF_OPTS += -DOPJ_USE_THREAD=ON +else +OPENJPEG_CONF_OPTS += -DOPJ_USE_THREAD=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/openlayers/Config.in b/package/openlayers/Config.in new file mode 100644 index 00000000..a7b7f334 --- /dev/null +++ b/package/openlayers/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_OPENLAYERS + bool "openlayers" + help + OpenLayers makes it easy to put a dynamic map in any web + page. It can display map tiles, vector data and markers + loaded from any source. OpenLayers has been developed to + further the use of geographic information of all kinds. It + is completely free, Open Source JavaScript, released under + the 2-clause BSD License (also known as the FreeBSD). + + https://openlayers.org diff --git a/package/openlayers/openlayers.hash b/package/openlayers/openlayers.hash new file mode 100644 index 00000000..29261c57 --- /dev/null +++ b/package/openlayers/openlayers.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 f9818591685d2eda779b346425061ddde174931e89ba2412118f68b3779e0c19 v9.2.4-package.zip +sha256 6c4347b83a8c9feef18d57b18e3b6c44cf901b3c344a4a1fbd837e421555ab8e LICENSE.md diff --git a/package/openlayers/openlayers.mk b/package/openlayers/openlayers.mk new file mode 100644 index 00000000..682138c4 --- /dev/null +++ b/package/openlayers/openlayers.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# openlayers +# +################################################################################ + +OPENLAYERS_VERSION = 9.2.4 +OPENLAYERS_SOURCE = v$(OPENLAYERS_VERSION)-package.zip +OPENLAYERS_SITE = https://github.com/openlayers/openlayers/releases/download/v$(OPENLAYERS_VERSION) +OPENLAYERS_LICENSE = BSD-2-Clause +OPENLAYERS_LICENSE_FILES = LICENSE.md + +define OPENLAYERS_EXTRACT_CMDS + unzip $(OPENLAYERS_DL_DIR)/$(OPENLAYERS_SOURCE) -d $(@D) +endef + +define OPENLAYERS_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0644 $(@D)/ol.css $(TARGET_DIR)/var/www/ol.css + $(INSTALL) -D -m 0644 $(@D)/dist/ol.js $(TARGET_DIR)/var/www/ol.js +endef + +$(eval $(generic-package)) diff --git a/package/openldap/0001-fix-bignum.patch b/package/openldap/0001-fix-bignum.patch new file mode 100644 index 00000000..ec38ee3d --- /dev/null +++ b/package/openldap/0001-fix-bignum.patch @@ -0,0 +1,37 @@ +configure: correctly detect bignum + +Building with bignum is currently not possible, since we're checking +ol_with_tls against a value it is never assigned in any case. + +Since bignum is from openssl, and openssl is the preferred TLS +implementation, if the bignum headers are found, it means we do have +TLS and it is opensl. + +So, keep the check for the bignum header, but check against ol_link_tls +which means that openssl is enabled when we find the bignum headers. + +Signed-off-by: "Yann E. MORIN" + +diff -durN openldap-2.4.40.orig/configure openldap-2.4.40/configure +--- openldap-2.4.40.orig/configure 2014-09-19 03:48:49.000000000 +0200 ++++ openldap-2.4.40/configure 2015-01-25 18:44:54.216879362 +0100 +@@ -23431,7 +23431,7 @@ + + if test "$ac_cv_header_openssl_bn_h" = "yes" && + test "$ac_cv_header_openssl_crypto_h" = "yes" && +- test "$ol_with_tls" = "found" ; then ++ test "$ol_link_tls" = "yes" ; then + ol_with_mp=bignum + + $as_echo "#define USE_MP_BIGNUM 1" >>confdefs.h +--- openldap-2.5.15.orig/configure.ac 2023-10-23 11:03:46.292215101 +0200 ++++ openldap-2.5.16/configure.ac 2023-10-23 11:05:07.245355497 +0200 +@@ -2323,7 +2323,7 @@ + AC_CHECK_HEADERS(openssl/crypto.h) + if test "$ac_cv_header_openssl_bn_h" = "yes" && + test "$ac_cv_header_openssl_crypto_h" = "yes" && +- test "$ol_with_tls" = "found" ; then ++ test "$ol_link_tls" = "yes" ; then + ol_with_mp=bignum + AC_DEFINE(USE_MP_BIGNUM,1,[define to use OpenSSL BIGNUM for MP]) + elif test $ol_with_mp = bignum ; then diff --git a/package/openldap/0002-disable-docs.patch b/package/openldap/0002-disable-docs.patch new file mode 100644 index 00000000..7ce61e65 --- /dev/null +++ b/package/openldap/0002-disable-docs.patch @@ -0,0 +1,23 @@ +doc: do not build + +Building the documentation fails on some autobuilders, +so disable it as we're not interested in it. + +Fixes: + http://autobuild.buildroot.org/results/1dc/1dc17a54e57130bffd19d360c9a7faae440b8916/ + http://autobuild.buildroot.org/results/407/40797597024cbb9054fdda8bdf4d011bba966b06/ + +Signed-off-by: "Yann E. MORIN" + +diff -durN openldap-2.4.40.orig/Makefile.in openldap-2.4.40/Makefile.in +--- openldap-2.4.40.orig/Makefile.in 2014-09-19 03:48:49.000000000 +0200 ++++ openldap-2.4.40/Makefile.in 2015-01-31 23:12:54.347678913 +0100 +@@ -13,7 +13,7 @@ + ## top-level directory of the distribution or, alternatively, at + ## . + +-SUBDIRS= include libraries clients servers tests doc ++SUBDIRS= include libraries clients servers tests + CLEANDIRS= + INSTALLDIRS= + diff --git a/package/openldap/Config.in b/package/openldap/Config.in new file mode 100644 index 00000000..7a0b2f4b --- /dev/null +++ b/package/openldap/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_OPENLDAP + bool "openldap" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # needs fork() + help + OpenLDAP Software is an open source implementation of the + Lightweight Directory Access Protocol. + + This only installs client-side support. + + https://www.openldap.org/ + +if BR2_PACKAGE_OPENLDAP + +config BR2_PACKAGE_OPENLDAP_CLIENTS + bool "openldap client binaries" + default y + help + Install the OpenLDAP client tools (ldapadd, ldapcompare, + ldapdelete, ldapexop, ldapmodify, ldapmodrdn, ldappasswd, + ldapsearch, ldapurl, ldapwhoami) + +endif + +comment "openldap needs a toolchain w/ wchar" + depends on BR2_USE_MMU # needs fork() + depends on !BR2_USE_WCHAR diff --git a/package/openldap/openldap.hash b/package/openldap/openldap.hash new file mode 100644 index 00000000..32bd83f3 --- /dev/null +++ b/package/openldap/openldap.hash @@ -0,0 +1,5 @@ +# Verified by locally checking against the SHA3-512 hash available in +# https://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-2.5.18.sha3-512 +# Locally computed +sha256 2670ae43d8d99dd6b1ba182101d982350d613d09c098eb1607ea6b36e6b51d3e openldap-2.5.18.tgz +sha256 310fe25c858a9515fc8c8d7d1f24a67c9496f84a91e0a0e41ea9975b1371e569 LICENSE diff --git a/package/openldap/openldap.mk b/package/openldap/openldap.mk new file mode 100644 index 00000000..68cfb89c --- /dev/null +++ b/package/openldap/openldap.mk @@ -0,0 +1,74 @@ +################################################################################ +# +# openldap +# +################################################################################ + +OPENLDAP_VERSION = 2.5.18 +OPENLDAP_SOURCE = openldap-$(OPENLDAP_VERSION).tgz +OPENLDAP_SITE = https://www.openldap.org/software/download/OpenLDAP/openldap-release +OPENLDAP_LICENSE = OpenLDAP Public License +OPENLDAP_LICENSE_FILES = LICENSE +OPENLDAP_CPE_ID_VENDOR = openldap +OPENLDAP_SELINUX_MODULES = ldap +OPENLDAP_INSTALL_STAGING = YES +OPENLDAP_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +OPENLDAP_TLS = openssl +OPENLDAP_DEPENDENCIES += openssl +else ifeq ($(BR2_PACKAGE_GNUTLS),y) +OPENLDAP_TLS = gnutls +OPENLDAP_DEPENDENCIES += gnutls +else ifeq ($(BR2_PACKAGE_LIBNSS),y) +OPENLDAP_TLS = moznss +OPENLDAP_DEPENDENCIES += libnss +OPENLDAP_CPPFLAGS = \ + -I$(STAGING_DIR)/usr/include/nss \ + -I$(STAGING_DIR)/usr/include/nspr +else +OPENLDAP_TLS = no +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +OPENLDAP_MP = bignum +OPENLDAP_DEPENDENCIES += openssl +OPENLDAP_CONF_ENV = LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs libssl libcrypto`" +else ifeq ($(BR2_PACKAGE_GMP),y) +OPENLDAP_MP = gmp +OPENLDAP_DEPENDENCIES += gmp +else +OPENLDAP_MP = longlong +endif + +OPENLDAP_CONF_ENV += ac_cv_func_memcmp_working=yes + +OPENLDAP_CONF_OPTS += \ + --enable-syslog \ + --disable-proctitle \ + --disable-slapd \ + --with-yielding-select \ + --sysconfdir=/etc \ + --enable-dynamic=$(if $(BR2_STATIC_LIBS),no,yes) \ + --with-tls=$(OPENLDAP_TLS) \ + --with-mp=$(OPENLDAP_MP) \ + CPPFLAGS="$(TARGET_CPPFLAGS) $(OPENLDAP_CPPFLAGS)" + +# Somehow, ${STRIP} does not percolates through to the shtool script +# used to install the executables; thus, that script tries to run the +# executable it is supposed to install, resulting in an error. +OPENLDAP_MAKE_ENV = STRIP="$(TARGET_STRIP)" + +ifeq ($(BR2_PACKAGE_OPENLDAP_CLIENTS),) +OPENLDAP_CLIENTS = \ + ldapurl ldapexop ldapcompare ldapwhoami \ + ldappasswd ldapmodrdn ldapdelete ldapmodify \ + ldapsearch +define OPENLDAP_REMOVE_CLIENTS + $(RM) -f $(foreach p,$(OPENLDAP_CLIENTS),$(TARGET_DIR)/usr/bin/$(p)) + $(RM) -rf $(TARGET_DIR)/etc/openldap +endef +OPENLDAP_POST_INSTALL_TARGET_HOOKS += OPENLDAP_REMOVE_CLIENTS +endif + +$(eval $(autotools-package)) diff --git a/package/openmpi/Config.in b/package/openmpi/Config.in new file mode 100644 index 00000000..e64eb81c --- /dev/null +++ b/package/openmpi/Config.in @@ -0,0 +1,22 @@ +comment "openmpi needs a toolchain w/ dynamic library, NPTL, wchar, C++" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_sparc + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \ + || !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_OPENMPI + bool "openmpi" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS # dlfcn.h + # from the configure script: "Sparc v8 target is not supported + # in this release of Open MPI" + depends on !BR2_sparc + help + A High Performance Message Passing Library. + + https://www.open-mpi.org/ diff --git a/package/openmpi/openmpi-mips32-fortran.cache b/package/openmpi/openmpi-mips32-fortran.cache new file mode 100644 index 00000000..36f9f02b --- /dev/null +++ b/package/openmpi/openmpi-mips32-fortran.cache @@ -0,0 +1,52 @@ +ompi_cv_fortran_sizeof_CHARACTER=1 +ompi_cv_fortran_sizeof_LOGICAL=4 +ompi_cv_fortran_sizeof_LOGICALp1=1 +ompi_cv_fortran_sizeof_LOGICALp2=2 +ompi_cv_fortran_sizeof_LOGICALp4=4 +ompi_cv_fortran_sizeof_LOGICALp8=8 +ompi_cv_fortran_sizeof_INTEGER=4 +ompi_cv_fortran_sizeof_INTEGERp1=1 +ompi_cv_fortran_sizeof_INTEGERp2=2 +ompi_cv_fortran_sizeof_INTEGERp4=4 +ompi_cv_fortran_sizeof_INTEGERp8=8 +ompi_cv_fortran_sizeof_REAL=4 +ompi_cv_fortran_sizeof_REALp4=4 +ompi_cv_fortran_sizeof_REALp8=8 +ompi_cv_fortran_sizeof_DOUBLE_PRECISION=8 +ompi_cv_fortran_sizeof_COMPLEX=8 +ompi_cv_fortran_sizeof_COMPLEXp8=8 +ompi_cv_fortran_sizeof_COMPLEXp16=16 +ompi_cv_fortran_sizeof_DOUBLE_COMPLEX=16 +ompi_cv_fortran_alignment_CHARACTER=1 +ompi_cv_fortran_alignment_LOGICAL=4 +ompi_cv_fortran_alignment_LOGICALp1=1 +ompi_cv_fortran_alignment_LOGICALp2=2 +ompi_cv_fortran_alignment_LOGICALp4=4 +ompi_cv_fortran_alignment_LOGICALp8=8 +ompi_cv_fortran_alignment_INTEGER=4 +ompi_cv_fortran_alignment_INTEGERp1=1 +ompi_cv_fortran_alignment_INTEGERp2=2 +ompi_cv_fortran_alignment_INTEGERp4=4 +ompi_cv_fortran_alignment_INTEGERp8=8 +ompi_cv_fortran_alignment_REAL=4 +ompi_cv_fortran_alignment_REALp4=4 +ompi_cv_fortran_alignment_REALp8=8 +ompi_cv_fortran_alignment_DOUBLE_PRECISION=8 +ompi_cv_fortran_alignment_COMPLEX=4 +ompi_cv_fortran_alignment_COMPLEXp8=4 +ompi_cv_fortran_alignment_COMPLEXp16=8 +ompi_cv_fortran_alignment_DOUBLE_COMPLEX=8 +ompi_cv_fortran_kind_value_C_SIGNED_CHAR=1 +ompi_cv_fortran_kind_value_C_SHORT=2 +ompi_cv_fortran_kind_value_C_INT=4 +ompi_cv_fortran_kind_value_C_INT16_T=2 +ompi_cv_fortran_kind_value_C_INT32_T=4 +ompi_cv_fortran_kind_value_C_INT64_T=8 +ompi_cv_fortran_kind_value_C_LONG_LONG=8 +ompi_cv_fortran_kind_value_C_FLOAT=4 +ompi_cv_fortran_kind_value_C_FLOAT_COMPLEX=4 +ompi_cv_fortran_kind_value_C_DOUBLE=8 +ompi_cv_fortran_kind_value_C_DOUBLE_COMPLEX=8 +ompi_cv_fortran_true_value=1 +ompi_cv_fortran_sizeof_type_test_mpi_handle_=4 +ompi_cv_fortran_alignment_type_test_mpi_handle_=4 diff --git a/package/openmpi/openmpi-mips64-fortran.cache b/package/openmpi/openmpi-mips64-fortran.cache new file mode 100644 index 00000000..dea2ce9c --- /dev/null +++ b/package/openmpi/openmpi-mips64-fortran.cache @@ -0,0 +1,61 @@ +ompi_cv_fortran_sizeof_CHARACTER=1 +ompi_cv_fortran_sizeof_LOGICAL=4 +ompi_cv_fortran_sizeof_LOGICALp1=1 +ompi_cv_fortran_sizeof_LOGICALp2=2 +ompi_cv_fortran_sizeof_LOGICALp4=4 +ompi_cv_fortran_sizeof_LOGICALp8=8 +ompi_cv_fortran_sizeof_INTEGER=4 +ompi_cv_fortran_sizeof_INTEGERp1=1 +ompi_cv_fortran_sizeof_INTEGERp2=2 +ompi_cv_fortran_sizeof_INTEGERp4=4 +ompi_cv_fortran_sizeof_INTEGERp8=8 +ompi_cv_fortran_sizeof_INTEGERp16=16 +ompi_cv_fortran_sizeof_REAL=4 +ompi_cv_fortran_sizeof_REALp4=4 +ompi_cv_fortran_sizeof_REALp8=8 +ompi_cv_fortran_sizeof_REALp16=16 +ompi_cv_fortran_sizeof_DOUBLE_PRECISION=8 +ompi_cv_fortran_sizeof_COMPLEX=8 +ompi_cv_fortran_sizeof_COMPLEXp8=8 +ompi_cv_fortran_sizeof_COMPLEXp16=16 +ompi_cv_fortran_sizeof_COMPLEXp32=32 +ompi_cv_fortran_sizeof_DOUBLE_COMPLEX=16 +ompi_cv_fortran_alignment_CHARACTER=1 +ompi_cv_fortran_alignment_LOGICAL=4 +ompi_cv_fortran_alignment_LOGICALp1=1 +ompi_cv_fortran_alignment_LOGICALp2=2 +ompi_cv_fortran_alignment_LOGICALp4=4 +ompi_cv_fortran_alignment_LOGICALp8=8 +ompi_cv_fortran_alignment_INTEGER=4 +ompi_cv_fortran_alignment_INTEGERp1=1 +ompi_cv_fortran_alignment_INTEGERp2=2 +ompi_cv_fortran_alignment_INTEGERp4=4 +ompi_cv_fortran_alignment_INTEGERp8=8 +ompi_cv_fortran_alignment_REAL=4 +ompi_cv_fortran_alignment_REALp4=4 +ompi_cv_fortran_alignment_REALp8=8 +ompi_cv_fortran_alignment_REALp16=16 +ompi_cv_fortran_alignment_DOUBLE_PRECISION=8 +ompi_cv_fortran_alignment_COMPLEX=4 +ompi_cv_fortran_alignment_COMPLEXp8=4 +ompi_cv_fortran_alignment_COMPLEXp16=8 +ompi_cv_fortran_alignment_COMPLEXp32=16 +ompi_cv_fortran_alignment_DOUBLE_COMPLEX=8 +ompi_cv_fortran_kind_value_C_SIGNED_CHAR=1 +ompi_cv_fortran_kind_value_C_SHORT=2 +ompi_cv_fortran_kind_value_C_INT=4 +ompi_cv_fortran_kind_value_C_INT16_T=2 +ompi_cv_fortran_kind_value_C_INT32_T=4 +ompi_cv_fortran_kind_value_C_INT64_T=8 +ompi_cv_fortran_kind_value_C_LONG_LONG=8 +ompi_cv_fortran_kind_value_C_LONG_DOUBLE=16 +ompi_cv_fortran_kind_value_C_LONG_DOUBLE_COMPLEX=16 +ompi_cv_fortran_kind_value_C_FLOAT=4 +ompi_cv_fortran_kind_value_C_FLOAT_COMPLEX=4 +ompi_cv_fortran_kind_value_C_DOUBLE=8 +ompi_cv_fortran_kind_value_C_DOUBLE_COMPLEX=8 +ompi_cv_fortran_kind_value_0=0 +ompi_cv_real16_c_equiv=yes +ompi_cv_fortran_true_value=1 +ompi_cv_fortran_sizeof_type_test_mpi_handle_=4 +ompi_cv_fortran_alignment_type_test_mpi_handle_=4 diff --git a/package/openmpi/openmpi.hash b/package/openmpi/openmpi.hash new file mode 100644 index 00000000..567ffe48 --- /dev/null +++ b/package/openmpi/openmpi.hash @@ -0,0 +1,6 @@ +# From: https://www.open-mpi.org/software/ompi/v4.1/ +md5 bb045df2d600744c2231c78b31a20da3 openmpi-4.1.5.tar.bz2 +sha1 eba2e6f9ee0c39fbca0a8cf53a79c9ed29643284 openmpi-4.1.5.tar.bz2 +sha256 a640986bc257389dd379886fdae6264c8cfa56bc98b71ce3ae3dfbd8ce61dbe3 openmpi-4.1.5.tar.bz2 +# Locally computed +sha256 2db71de9577ebfe15c186605844c470dcecd3717f4ef0118c9440d801c0f58f8 LICENSE diff --git a/package/openmpi/openmpi.mk b/package/openmpi/openmpi.mk new file mode 100644 index 00000000..82a4b3eb --- /dev/null +++ b/package/openmpi/openmpi.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# openmpi +# +################################################################################ + +OPENMPI_VERSION_MAJOR = 4.1 +OPENMPI_VERSION = $(OPENMPI_VERSION_MAJOR).5 +OPENMPI_SITE = https://www.open-mpi.org/software/ompi/v$(OPENMPI_VERSION_MAJOR)/downloads +OPENMPI_SOURCE = openmpi-$(OPENMPI_VERSION).tar.bz2 +OPENMPI_LICENSE = BSD-3-Clause +OPENMPI_LICENSE_FILES = LICENSE +OPENMPI_INSTALL_STAGING = YES + +# The macro searching for IME (Infinite Memory Engine) filesystem +# brings "-I/usr/local/include" in the CPPFLAGS, even if not +# found. This makes the configuration fail. See: +# https://github.com/open-mpi/ompi/blob/v4.1.5/config/ompi_check_ime.m4#L35 +# Disable explicitly to avoid the issue. +OPENMPI_CONF_OPTS = --without-ime + +# Enabling Fortran support requires pre-seeding the configure script +# with various values that cannot be guessed, so we provide cache +# files for various architectures. + +ifeq ($(BR2_TOOLCHAIN_HAS_FORTRAN),y) +ifeq ($(BR2_mips)$(BR2_mipsel),y) +OPENMPI_FORTRAN_CONF_CACHE = package/openmpi/openmpi-mips32-fortran.cache +else ifeq ($(BR2_mips64)$(BR2_mips64el),y) +OPENMPI_FORTRAN_CONF_CACHE = package/openmpi/openmpi-mips64-fortran.cache +endif +endif + +ifneq ($(OPENMPI_FORTRAN_CONF_CACHE),) +define OPENMPI_COPY_FORTRAN_CACHE + cp $(OPENMPI_FORTRAN_CONF_CACHE) $(@D)/openmpi-config.cache +endef + +OPENMPI_POST_PATCH_HOOKS += OPENMPI_COPY_FORTRAN_CACHE +OPENMPI_CONF_OPTS += \ + --enable-mpi-fortran=yes \ + --cache-file=$(@D)/openmpi-config.cache +else +OPENMPI_CONF_OPTS += --enable-mpi-fortran=no +endif + +OPENMPI_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y) +OPENMPI_CFLAGS += -O0 +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +OPENMPI_LIBS += -latomic +endif + +OPENMPI_CONF_ENV = CFLAGS="$(OPENMPI_CFLAGS)" LIBS="$(OPENMPI_LIBS)" + +$(eval $(autotools-package)) diff --git a/package/openntpd/Config.in b/package/openntpd/Config.in new file mode 100644 index 00000000..c84d0ba2 --- /dev/null +++ b/package/openntpd/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_OPENNTPD + bool "openntpd" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_USE_MMU # fork () + depends on !BR2_PACKAGE_NTP # conflicting binaries + help + OpenNTPD is an easy to use implementation of the Network Time + Protocol. It provides the ability to sync the local clock + to remote NTP servers and can act as NTP server itself, + redistributing the local clock. It just works. + + Crypto support is available if the LibreSSL library is + enabled. + + http://www.openntpd.org/ + +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/package/openntpd/S49ntp b/package/openntpd/S49ntp new file mode 100644 index 00000000..7ce46eba --- /dev/null +++ b/package/openntpd/S49ntp @@ -0,0 +1,24 @@ +#!/bin/sh + +[ -f /etc/ntpd.conf ] || exit 0 + +case "$1" in + start) + printf "Starting openntpd: " + start-stop-daemon -S -x /usr/sbin/ntpd -- -s -p /run/ntpd.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping openntpd: " + start-stop-daemon -K -q -p /run/ntpd.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart) + "$0" stop + sleep 1 + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + ;; +esac diff --git a/package/openntpd/ntpd.service b/package/openntpd/ntpd.service new file mode 100644 index 00000000..c2924b0c --- /dev/null +++ b/package/openntpd/ntpd.service @@ -0,0 +1,15 @@ +[Unit] +Description=OpenNTP Daemon +After=network.target +Conflicts=systemd-timesyncd.service + +[Service] +Type=simple +# Turn off DNSSEC validation for hostname look-ups, since those need the +# correct time to work, but we likely won't acquire that without NTP. Let's +# break this chicken-and-egg cycle here. +Environment=SYSTEMD_NSS_RESOLVE_VALIDATE=0 +ExecStart=/usr/sbin/ntpd -s -d + +[Install] +WantedBy=multi-user.target diff --git a/package/openntpd/openntpd.hash b/package/openntpd/openntpd.hash new file mode 100644 index 00000000..2ef8a619 --- /dev/null +++ b/package/openntpd/openntpd.hash @@ -0,0 +1,5 @@ +# from http://ftp.openbsd.org/pub/OpenBSD/OpenNTPD/SHA256 +sha256 8582db838a399153d4a17f2a76518b638cc3020f58028575bf54127518f55a46 openntpd-6.8p1.tar.gz + +# Locally computed +sha256 6c1822ee950652c12bb3773849db18794f62c63452a70d018edf23e8cba71839 COPYING diff --git a/package/openntpd/openntpd.mk b/package/openntpd/openntpd.mk new file mode 100644 index 00000000..f9409cd9 --- /dev/null +++ b/package/openntpd/openntpd.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# openntpd +# +################################################################################ + +OPENNTPD_VERSION = 6.8p1 +OPENNTPD_SITE = http://ftp.openbsd.org/pub/OpenBSD/OpenNTPD +OPENNTPD_LICENSE = MIT-like, BSD-2-Clause, BSD-3-Clause +OPENNTPD_LICENSE_FILES = COPYING +OPENNTPD_CPE_ID_VENDOR = openntpd +OPENNTPD_DEPENDENCIES = host-bison +# Need to autoreconf for our libtool patch to apply properly +OPENNTPD_AUTORECONF = YES + +# Openntpd searches for tls_config_set_ca_mem which is only available +# in LibreSSL +ifeq ($(BR2_PACKAGE_LIBRESSL),y) +OPENNTPD_DEPENDENCIES += openssl +endif + +# openntpd uses pthread functions for arc4random emulation but forgets +# to use -pthread +OPENNTPD_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -pthread" + +define OPENNTPD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/openntpd/ntpd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/ntpd.service +endef + +define OPENNTPD_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/openntpd/S49ntp \ + $(TARGET_DIR)/etc/init.d/S49ntp +endef + +define OPENNTPD_USERS + _ntp -1 _ntp -1 * - - - Network Time Protocol daemon +endef + +$(eval $(autotools-package)) diff --git a/package/openobex/Config.in b/package/openobex/Config.in new file mode 100644 index 00000000..e611b8d8 --- /dev/null +++ b/package/openobex/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_OPENOBEX + bool "openobex" + help + Free open source implementation of the Object Exchange (OBEX) + protocol. + + http://sourceforge.net/projects/openobex diff --git a/package/openobex/openobex.hash b/package/openobex/openobex.hash new file mode 100644 index 00000000..1a113c33 --- /dev/null +++ b/package/openobex/openobex.hash @@ -0,0 +1,6 @@ +# From http://sourceforge.net/projects/openobex/files/openobex/1.7.2/ +sha1 4a5098a62889134cbd2b54997e7ff3e959e601e6 openobex-1.7.2-Source.tar.gz +md5 f6e0b6cb7dcfd731460a7e9a91429a3a openobex-1.7.2-Source.tar.gz +# License files, locally calculated +sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 COPYING +sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 COPYING.LIB diff --git a/package/openobex/openobex.mk b/package/openobex/openobex.mk new file mode 100644 index 00000000..7109bffa --- /dev/null +++ b/package/openobex/openobex.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# openobex +# +################################################################################ + +OPENOBEX_VERSION = 1.7.2 +OPENOBEX_SITE = http://downloads.sourceforge.net/project/openobex/openobex/$(OPENOBEX_VERSION) +OPENOBEX_SOURCE = openobex-$(OPENOBEX_VERSION)-Source.tar.gz +# Libraries seems to be released under LGPL-2.1+, +# while other material is under GPL-2.0+. +OPENOBEX_LICENSE = GPL-2.0+/LGPL-2.1+ +OPENOBEX_LICENSE_FILES = COPYING COPYING.LIB +OPENOBEX_DEPENDENCIES = host-pkgconf +OPENOBEX_INSTALL_STAGING = YES +OPENOBEX_CONF_OPTS = -DBUILD_DOCUMENTATION=OFF + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y) +OPENOBEX_DEPENDENCIES += bluez5_utils +endif + +ifeq ($(BR2_PACKAGE_LIBUSB),y) +OPENOBEX_CONF_OPTS += -DLibUSB_VERSION_1.0=ON +OPENOBEX_DEPENDENCIES += libusb +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +OPENOBEX_DEPENDENCIES += udev +endif + +$(eval $(cmake-package)) diff --git a/package/openocd/0001-configure-enable-build-on-uclinux.patch b/package/openocd/0001-configure-enable-build-on-uclinux.patch new file mode 100644 index 00000000..d5f1e329 --- /dev/null +++ b/package/openocd/0001-configure-enable-build-on-uclinux.patch @@ -0,0 +1,28 @@ +From 86dd032d77166b7ed59d08c99fbe47b8b7667406 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Thu, 17 Aug 2017 06:30:31 +0200 +Subject: [PATCH] configure: enable build on uclinux + +Signed-off-by: Bernd Kuhls +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index eee42d4240f8..b0445f92e0b5 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -342,7 +342,7 @@ AC_ARG_ENABLE([xlnx_pcie_xvc], + [build_xlnx_pcie_xvc=$enableval], [build_xlnx_pcie_xvc=no]) + + AS_CASE([$host_os], +- [linux*], [], ++ [linux*|uclinux*], [], + [ + AS_IF([test "x$build_sysfsgpio" = "xyes"], [ + AC_MSG_ERROR([sysfsgpio is only available on linux]) +-- +2.43.0 + diff --git a/package/openocd/Config.in b/package/openocd/Config.in new file mode 100644 index 00000000..a7e068f1 --- /dev/null +++ b/package/openocd/Config.in @@ -0,0 +1,259 @@ +config BR2_PACKAGE_OPENOCD + bool "openocd" + select BR2_PACKAGE_JIMTCL + help + OpenOCD - Open On-Chip Debugger + + http://openocd.sourceforge.net/ + +if BR2_PACKAGE_OPENOCD + +comment "Adapters" + +config BR2_PACKAGE_OPENOCD_CMSIS_DAP + bool "CMSIS-DAP compliant debuggers" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + depends on BR2_PACKAGE_HAS_UDEV # hidapi + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # hidapi + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_HIDAPI + help + Enable support for CMSIS-DAP compliant debuggers (i.e + Atmel/Microchip EDBG, etc.) + +config BR2_PACKAGE_OPENOCD_FTDI + bool "MPSSE mode of FTDI based devices" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + Enable building support for the MPSSE mode of FTDI + (FT2xxx/FT4xxx) based devices (default is auto) + +config BR2_PACKAGE_OPENOCD_STLINK + bool "ST-Link JTAG Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + Enable building support for the ST-Link JTAG + Programmer (default is auto) + +config BR2_PACKAGE_OPENOCD_TI_ICDI + bool "TI ICDI JTAG Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + Enable building support for the TI ICDI JTAG + Programmer (default is auto) + +config BR2_PACKAGE_OPENOCD_ULINK + bool "Keil ULINK JTAG Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + Enable building support for the Keil ULINK JTAG + Programmer (default is auto) + +config BR2_PACKAGE_OPENOCD_UBLASTER2 + bool "Altera USB-Blaster II Compatible" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + Enable building support for the Altera USB-Blaster + II Compatible (default is auto) + +config BR2_PACKAGE_OPENOCD_JLINK + bool "Segger J-Link JTAG Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + Segger J-Link JTAG Programmer and clone such as Atmel + SAM-ICE + +config BR2_PACKAGE_OPENOCD_OSDBM + bool "OSDBM JTAG (only) Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + Enable building support for the OSBDM (JTAG only) + Programmer (default is auto) + +config BR2_PACKAGE_OPENOCD_OPENDOUS + bool "eStick/opendous JTAG Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + Enable building support for the eStick/opendous JTAG + Programmer (default is auto) + +config BR2_PACKAGE_OPENOCD_AICE + bool "Andes JTAG Programmer" + depends on BR2_USE_MMU # use fork() + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + Enable building support for the Andes JTAG + Programmer (default is auto) + +config BR2_PACKAGE_OPENOCD_VSLLINK + bool "Versaloon-Link JTAG Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb-compat -> libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb-compat -> libusb + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + help + Enable building support for the Versaloon-Link JTAG + Programmer (default is auto) + +config BR2_PACKAGE_OPENOCD_USBPROG + bool "USBProg JTAG Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb-compat -> libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb-compat -> libusb + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + help + Enable building support for the USBProg JTAG + Programmer (default is auto) + +config BR2_PACKAGE_OPENOCD_RLINK + bool "Raisonance RLink JTAG Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb-compat -> libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb-compat -> libusb + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + help + Enable building support for the Raisonance RLink + JTAG Programmer (default is auto) + +config BR2_PACKAGE_OPENOCD_ARMEW + bool "Olimex ARM-JTAG-EW Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb-compat -> libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb-compat -> libusb + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + help + Enable building support for the Olimex ARM-JTAG-EW + Programmer (default is auto) + +config BR2_PACKAGE_OPENOCD_XDS110 + bool "TI XDS110 Debug Probe" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + Enable building support for the TI XDS110 Debug Probe. + +config BR2_PACKAGE_OPENOCD_PARPORT + bool "pc parallel port driver" + help + Enable building the pc parallel port driver + +config BR2_PACKAGE_OPENOCD_VPI + bool "JTAG VPI" + help + Enable building support for JTAG VPI + +config BR2_PACKAGE_OPENOCD_UBLASTER + bool "Altera USB-Blaster" + depends on BR2_TOOLCHAIN_HAS_THREADS # libftdi -> libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libftdi -> libusb + select BR2_PACKAGE_LIBFTDI1 + help + Enable building support for the Altera USB-Blaster + using the libftdi driver, opensource alternate of + FTD2XX + +config BR2_PACKAGE_OPENOCD_AMTJT + bool "Amontec JTAG-Accelerator" + help + Enable building the Amontec JTAG-Accelerator driver + +if BR2_arm + +config BR2_PACKAGE_OPENOCD_EP93XX + bool "EP93xx based SBCs" + help + Enable building support for EP93xx based SBCs + +config BR2_PACKAGE_OPENOCD_AT91RM + bool "AT91RM9200 based SBCs" + help + Enable building support for AT91RM9200 based SBCs + +endif # BR2_arm + +if BR2_arm || BR2_aarch64 + +config BR2_PACKAGE_OPENOCD_BCM2835 + bool "bitbanging on BCM2835" + help + Enable building support for bitbanging on BCM2835 + (as found in Raspberry Pi) + +config BR2_PACKAGE_OPENOCD_IMXGPIO + bool "bitbanging on NXP i.MX family" + help + Enable support for bitbanging on NXP i.MX family + (as found in SolidSense N6, N8, etc.) + +endif # BR2_arm || BR2_aarch64 + +config BR2_PACKAGE_OPENOCD_GW16012 + bool "Gateworks GW16012 JTAG Programmer" + help + Enable building support for the Gateworks GW16012 + JTAG Programmer + +config BR2_PACKAGE_OPENOCD_PRESTO + bool "ASIX Presto Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libftdi -> libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libftdi -> libusb + select BR2_PACKAGE_LIBFTDI1 + help + Enable building support for ASIX Presto Programmer + using the libftdi driver + +config BR2_PACKAGE_OPENOCD_OPENJTAG + bool "OpenJTAG Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libftdi -> libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libftdi -> libusb + select BR2_PACKAGE_LIBFTDI1 + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT # needs usb.h + help + Enable building support for the OpenJTAG Programmer + with ftdi driver + +config BR2_PACKAGE_OPENOCD_BUSPIRATE + bool "Buspirate" + help + Enable building support for the Buspirate + +config BR2_PACKAGE_OPENOCD_SYSFS + bool "programming via sysfs gpios" + help + Enable building support for programming driven via + sysfs gpios. + +# Many adapters need libusb or libusb-compat, which require threads and +# gcc >= 4.9 but we don't want to duplicate this comment for all +# adapters that select libusb or libusb-compat. +comment "many openocd adapters needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +comment "xds110 adapter support needs toolchain w/ wchar" + depends on !BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS && BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +endif # BR2_PACKAGE_OPENOCD diff --git a/package/openocd/Config.in.host b/package/openocd/Config.in.host new file mode 100644 index 00000000..8ff37379 --- /dev/null +++ b/package/openocd/Config.in.host @@ -0,0 +1,10 @@ +config BR2_PACKAGE_HOST_OPENOCD + bool "host openocd" + depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb + help + OpenOCD - Open On-Chip Debugger + + http://openocd.org/ + +comment "host openocd needs a toolchain w/ host gcc >= 4.9" + depends on !BR2_HOST_GCC_AT_LEAST_4_9 diff --git a/package/openocd/openocd.hash b/package/openocd/openocd.hash new file mode 100644 index 00000000..938711d8 --- /dev/null +++ b/package/openocd/openocd.hash @@ -0,0 +1,15 @@ +# From http://sourceforge.net/projects/openocd/files/openocd/0.12.0/ +sha256 af254788be98861f2bd9103fe6e60a774ec96a8c374744eef9197f6043075afa openocd-0.12.0.tar.bz2 +sha256 1b8f7e37ee5afbbf95c2a4d62b12b25232e29538692663b434318503a9a88419 COPYING +sha256 034da732b4f3079b8783fff756613c1cff89dec5ac80c5cdd90532b7539922a1 LICENSES/exceptions/eCos-exception-2.0 +sha256 0a37155eb8bc0cb94477a0cae4f030e39da9317374e8a9f597e9229fd09aff78 LICENSES/license-rules.txt +sha256 f3ba76203a7b6993db31f987559cc4c621ae1ff78119ced2a669756c2c5fd3b1 LICENSES/preferred/BSD-1-Clause +sha256 6313108c23efffa36948f8b2cff1560a5935373b527b0e1a837cc77e6ed1bacd LICENSES/preferred/BSD-2-Clause +sha256 1483f15e9fddc73b5df0acab1c42d21ecd0bf6ade8a79179fb90c09f13d03dcd LICENSES/preferred/BSD-2-Clause-Views +sha256 7a83b1aeb460458db9a4bd521d7f237c45b1650f6e60ea5ffc71e49472454de3 LICENSES/preferred/BSD-3-Clause +sha256 5cf024f6e3611d5c6fb98748d1a0ad99b8cf9ffe46f2d60fa10c299cd29e0a75 LICENSES/preferred/BSD-Source-Code +sha256 f35396f4095619f986736ca5e2976b313d381463a35c921c9ae677cc7eb83e28 LICENSES/preferred/GFDL-1.2 +sha256 76515be2d7334a1a038f775238c9a4c2b37e19514248e5eea0434cdfee526f9d LICENSES/preferred/gfdl-1.2.texi.readme +sha256 7d35bc44da7bb763022e3c2c32cfc0125dd222060bc50992420599d8e65f6c0a LICENSES/preferred/GPL-2.0 +sha256 323c587d0ccf10e376f8bf9a7f31fb4ca6078105194b42e0b1e0ee2bc9bde71f LICENSES/preferred/MIT +sha256 9a41b56594cd89743ca72f188318c9871661847074dd16497ae0c695fe3ab9c9 LICENSES/stand-alone/GPL-3.0 diff --git a/package/openocd/openocd.mk b/package/openocd/openocd.mk new file mode 100644 index 00000000..6b9f5541 --- /dev/null +++ b/package/openocd/openocd.mk @@ -0,0 +1,153 @@ +################################################################################ +# +# openocd +# +################################################################################ + +OPENOCD_VERSION = 0.12.0 +OPENOCD_SOURCE = openocd-$(OPENOCD_VERSION).tar.bz2 +OPENOCD_SITE = http://sourceforge.net/projects/openocd/files/openocd/$(OPENOCD_VERSION) +OPENOCD_LICENSE = \ + BSD-1-clause, \ + BSD-2-clause, \ + BSD-2-Clause-Views, \ + BSD-3-clause, \ + BSD-Source-Code, \ + GFDL-1.2-no-invariants-or-later (docs), \ + GPL-2.0+ with eCos-exception-2.0 (code), \ + GPL-3.0+ (stand-alone code), \ + MIT + +OPENOCD_LICENSE_FILES = \ + COPYING \ + LICENSES/license-rules.txt \ + LICENSES/exceptions/eCos-exception-2.0 \ + LICENSES/preferred/BSD-1-Clause \ + LICENSES/preferred/BSD-2-Clause \ + LICENSES/preferred/BSD-2-Clause-Views \ + LICENSES/preferred/BSD-3-Clause \ + LICENSES/preferred/BSD-Source-Code \ + LICENSES/preferred/GFDL-1.2 \ + LICENSES/preferred/gfdl-1.2.texi.readme \ + LICENSES/preferred/GPL-2.0 \ + LICENSES/preferred/MIT \ + LICENSES/stand-alone/GPL-3.0 + +# 0001-configure-enable-build-on-uclinux.patch patches configure.ac +OPENOCD_AUTORECONF = YES +OPENOCD_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -std=gnu99" + +OPENOCD_CONF_OPTS = \ + --oldincludedir=$(STAGING_DIR)/usr/include \ + --includedir=$(STAGING_DIR)/usr/include \ + --disable-doxygen-html \ + --disable-internal-jimtcl \ + --disable-shared \ + --enable-dummy \ + --disable-werror + +# Rely on the Config.in options of each individual adapter selecting +# the dependencies they need. + +OPENOCD_DEPENDENCIES = \ + host-pkgconf \ + jimtcl \ + $(if $(BR2_PACKAGE_LIBFTDI1),libftdi1) \ + $(if $(BR2_PACKAGE_LIBUSB),libusb) \ + $(if $(BR2_PACKAGE_LIBUSB_COMPAT),libusb-compat) \ + $(if $(BR2_PACKAGE_LIBHID),libhid) \ + $(if $(BR2_PACKAGE_HIDAPI),hidapi) + +ifeq ($(BR2_PACKAGE_LIBGPIOD),y) +OPENOCD_DEPENDENCIES += libgpiod +OPENOCD_CONF_OPTS += --enable-linuxgpiod +else +OPENOCD_CONF_OPTS += --disable-linuxgpiod +endif + +# Adapters +OPENOCD_CONF_OPTS += \ + $(if $(BR2_PACKAGE_OPENOCD_FTDI),--enable-ftdi,--disable-ftdi) \ + $(if $(BR2_PACKAGE_OPENOCD_STLINK),--enable-stlink,--disable-stlink) \ + $(if $(BR2_PACKAGE_OPENOCD_TI_ICDI),--enable-ti-icdi,--disable-ti-icdi) \ + $(if $(BR2_PACKAGE_OPENOCD_ULINK),--enable-ulink,--disable-ulink) \ + $(if $(BR2_PACKAGE_OPENOCD_UBLASTER2),--enable-usb-blaster-2,--disable-usb-blaster-2) \ + $(if $(BR2_PACKAGE_OPENOCD_JLINK),--enable-jlink,--disable-jlink) \ + $(if $(BR2_PACKAGE_OPENOCD_OSDBM),--enable-osbdm,--disable-osbdm) \ + $(if $(BR2_PACKAGE_OPENOCD_OPENDOUS),--enable-opendous,--disable-opendous) \ + $(if $(BR2_PACKAGE_OPENOCD_AICE),--enable-aice,--disable-aice) \ + $(if $(BR2_PACKAGE_OPENOCD_VSLLINK),--enable-vsllink,--disable-vsllink) \ + $(if $(BR2_PACKAGE_OPENOCD_USBPROG),--enable-usbprog,--disable-usbprog) \ + $(if $(BR2_PACKAGE_OPENOCD_RLINK),--enable-rlink,--disable-rlink) \ + $(if $(BR2_PACKAGE_OPENOCD_XDS110),--enable-xds110,--disable-xds110) \ + $(if $(BR2_PACKAGE_OPENOCD_ARMEW),--enable-armjtagew,--disable-armjtagew) \ + $(if $(BR2_PACKAGE_OPENOCD_CMSIS_DAP),--enable-cmsis-dap,--disable-cmsis-dap) \ + $(if $(BR2_PACKAGE_OPENOCD_PARPORT),--enable-parport,--disable-parport) \ + $(if $(BR2_PACKAGE_OPENOCD_VPI),--enable-jtag_vpi,--disable-jtag_vpi) \ + $(if $(BR2_PACKAGE_OPENOCD_UBLASTER),--enable-usb-blaster,--disable-usb-blaster) \ + $(if $(BR2_PACKAGE_OPENOCD_AMTJT),--enable-amtjtagaccel,--disable-amjtagaccel) \ + $(if $(BR2_PACKAGE_OPENOCD_EP93XX),--enable-ep93xx,--disable-ep93xx) \ + $(if $(BR2_PACKAGE_OPENOCD_AT91RM),--enable-at91rm9200,--disable-at91rm9200) \ + $(if $(BR2_PACKAGE_OPENOCD_BCM2835),--enable-bcm2835gpio,--disable-bcm2835gpio) \ + $(if $(BR2_PACKAGE_OPENOCD_GW16012),--enable-gw16012,--disable-gw16012) \ + $(if $(BR2_PACKAGE_OPENOCD_IMXGPIO),--enable-imx_gpio,--disable-imx_gpio) \ + $(if $(BR2_PACKAGE_OPENOCD_PRESTO),--enable-presto,--disable-presto) \ + $(if $(BR2_PACKAGE_OPENOCD_OPENJTAG),--enable-openjtag,--disable-openjtag) \ + $(if $(BR2_PACKAGE_OPENOCD_BUSPIRATE),--enable-buspirate,--disable-buspirate) \ + $(if $(BR2_PACKAGE_OPENOCD_SYSFS),--enable-sysfsgpio,--disable-sysfsgpio) + +# Enable all configuration options for host build. +# +# Note that deprecated options have been removed. CMSIS_DAP needs +# hidapi (currently not included in buildroot) and zy1000 stuff fails +# to build, so they've been removed too. +# +HOST_OPENOCD_CONF_OPTS = \ + --enable-ftdi \ + --enable-stlink \ + --enable-ti-icdi \ + --enable-ulink \ + --enable-usb-blaster-2 \ + --enable-jlink \ + --enable-osbdm \ + --enable-opendous \ + --enable-aice \ + --enable-vsllink \ + --enable-usbprog \ + --enable-rlink \ + --enable-armjtagew \ + --enable-parport \ + --enable-jtag_vpi \ + --enable-usb-blaster \ + --enable-amtjtagaccel \ + --enable-gw16012 \ + --enable-presto \ + --enable-openjtag \ + --enable-buspirate \ + --enable-sysfsgpio \ + --oldincludedir=$(HOST_DIR)/include \ + --includedir=$(HOST_DIR)/include \ + --disable-doxygen-html \ + --disable-internal-jimtcl \ + --disable-shared \ + --enable-dummy \ + --disable-werror + +HOST_OPENOCD_DEPENDENCIES = host-jimtcl 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/package/openpgm/0001-Rename-openpgm-5.2.pc.in.patch b/package/openpgm/0001-Rename-openpgm-5.2.pc.in.patch new file mode 100644 index 00000000..76d61f3e --- /dev/null +++ b/package/openpgm/0001-Rename-openpgm-5.2.pc.in.patch @@ -0,0 +1,57 @@ +From 240634b1afb968a051f8c68696eae2a582a02450 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 31 Aug 2020 20:16:25 +0200 +Subject: [PATCH] Rename openpgm-5.2.pc.in + +This will fix the following build failure: + +config.status: error: cannot find input file: `openpgm-5.3.pc.in' + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/steve-o/openpgm/pull/66] +--- + openpgm/pgm/openpgm-5.2.pc.in | 12 ------------ + openpgm/pgm/openpgm-5.3.pc.in | 12 ++++++++++++ + 2 files changed, 12 insertions(+), 12 deletions(-) + delete mode 100644 openpgm/pgm/openpgm-5.2.pc.in + create mode 100644 openpgm/pgm/openpgm-5.3.pc.in + +diff --git a/openpgm/pgm/openpgm-5.2.pc.in b/openpgm/pgm/openpgm-5.2.pc.in +deleted file mode 100644 +index 9e30a6d..0000000 +--- a/openpgm/pgm/openpgm-5.2.pc.in ++++ /dev/null +@@ -1,12 +0,0 @@ +-prefix=@prefix@ +-exec_prefix=@exec_prefix@ +-libdir=@libdir@ +-includedir=@includedir@ +- +-Name: OpenPGM +-Description: PGM Protocol Library. +-Version: @PACKAGE_VERSION@ +-# packagers may wish to move @LIBS@ to Libs.private for platforms with +-# versions of pkg-config that support static linking. +-Libs: -L${libdir} -lpgm @LIBS@ +-Cflags: -I${includedir}/pgm-@VERSION_MAJOR@.@VERSION_MINOR@ +diff --git a/openpgm/pgm/openpgm-5.3.pc.in b/openpgm/pgm/openpgm-5.3.pc.in +new file mode 100644 +index 0000000..9e30a6d +--- /dev/null ++++ b/openpgm/pgm/openpgm-5.3.pc.in +@@ -0,0 +1,12 @@ ++prefix=@prefix@ ++exec_prefix=@exec_prefix@ ++libdir=@libdir@ ++includedir=@includedir@ ++ ++Name: OpenPGM ++Description: PGM Protocol Library. ++Version: @PACKAGE_VERSION@ ++# packagers may wish to move @LIBS@ to Libs.private for platforms with ++# versions of pkg-config that support static linking. ++Libs: -L${libdir} -lpgm @LIBS@ ++Cflags: -I${includedir}/pgm-@VERSION_MAJOR@.@VERSION_MINOR@ +-- +2.28.0 + diff --git a/package/openpgm/0002-openpgm-pgm-checksum.c-fix-build-with-32-bits-MMX.patch b/package/openpgm/0002-openpgm-pgm-checksum.c-fix-build-with-32-bits-MMX.patch new file mode 100644 index 00000000..a04dc7db --- /dev/null +++ b/package/openpgm/0002-openpgm-pgm-checksum.c-fix-build-with-32-bits-MMX.patch @@ -0,0 +1,41 @@ +From b7fa865fa6b06d97d424c500fd1c4bc44c096359 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 1 Nov 2020 22:46:18 +0100 +Subject: [PATCH] openpgm/pgm/checksum.c: fix build with 32 bits MMX + +Build with i386-pentium-mmx or i686 is broken since version 5-3-128 and +https://github.com/steve-o/openpgm/commit/b276dc15be5d4e6e1143b9de25d09f63f9c85135 +because _mm_cvtm64_si64 is undefined resulting in the following build +failure for example on zeromq: + +/srv/storage/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/i586-buildroot-linux-musl/8.3.0/../../../../i586-buildroot-linux-musl/bin/ld: /srv/storage/autobuild/run/instance-3/output-1/host/i586-buildroot-linux-musl/sysroot/usr/lib32/libpgm-5.3.so.0: undefined reference to `_mm_cvtm64_si64' + +So use the fallback if __x86_64__ is not defined + +Fixes: + - http://autobuild.buildroot.org/results/01d9be37e8a743307128f53f41785654c9971e1a + +Signed-off-by: Fabrice Fontaine +Signed-off-by: Baruch Siach +--- +Upstream status: commit b7fa865fa6b06d97d424c500fd1c4bc44c096359 + + openpgm/pgm/checksum.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/openpgm/pgm/checksum.c b/openpgm/pgm/checksum.c +index fef89bce237c..8d8dd3f32305 100644 +--- a/openpgm/pgm/checksum.c ++++ b/openpgm/pgm/checksum.c +@@ -948,7 +948,7 @@ do_csumcpy_mmx ( + + sum = _mm_add_pi32 (sum, lo); + sum = _mm_add_pi32 (sum, hi); +-#if 1 ++#if defined(__x86_64__) + *(int64_t*)dst = _mm_cvtm64_si64 (tmp); + #else + ((int*)dst)[1] = _mm_cvtsi64_si32 (tmp); +-- +2.30.2 + diff --git a/package/openpgm/0003-fix-build-on-macOS-ARM.patch b/package/openpgm/0003-fix-build-on-macOS-ARM.patch new file mode 100644 index 00000000..5769c5d7 --- /dev/null +++ b/package/openpgm/0003-fix-build-on-macOS-ARM.patch @@ -0,0 +1,34 @@ +From 43dfc3e3a66b8e4584eb46219b129197a2428181 Mon Sep 17 00:00:00 2001 +From: Michael Cho +Date: Thu, 10 Mar 2022 22:46:29 -0800 +Subject: [PATCH] fix build on macOS ARM + +[alexander.lukichev@gmail.com: backport from upstream] +Signed-off-by: Alexander Lukichev +--- + openpgm/pgm/cpu.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/openpgm/pgm/cpu.c b/openpgm/pgm/cpu.c +index cbcc988..f5da471 100644 +--- a/openpgm/pgm/cpu.c ++++ b/openpgm/pgm/cpu.c +@@ -33,6 +33,7 @@ + //#define CPU_DEBUG + + ++#if defined(__i386__) || defined(__x86_64__) + #ifndef _MSC_VER + static + void +@@ -59,7 +60,6 @@ _xgetbv(uint32_t xcr) { + #endif + + +-#if defined(__i386__) || defined(__x86_64__) + PGM_GNUC_INTERNAL + void + pgm_cpuid (pgm_cpu_t* cpu) +-- +2.37.2 + diff --git a/package/openpgm/Config.in b/package/openpgm/Config.in new file mode 100644 index 00000000..e37edfe9 --- /dev/null +++ b/package/openpgm/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_OPENPGM + bool "openpgm" + depends on BR2_TOOLCHAIN_HAS_SYNC_2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + help + OpenPGM is an open source implementation of the Pragmatic + General Multicast (PGM) specification in RFC 3208 available at + www.ietf.org. PGM is a reliable and scalable multicast + protocol that enables receivers to detect loss, request + retransmission of lost data, or notify an application of + unrecoverable loss. + + https://github.com/steve-o/openpgm/ + +comment "openpgm needs a toolchain w/ wchar, threads" + depends on BR2_TOOLCHAIN_HAS_SYNC_2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !(BR2_TOOLCHAIN_HAS_THREADS && BR2_USE_WCHAR) diff --git a/package/openpgm/openpgm.hash b/package/openpgm/openpgm.hash new file mode 100644 index 00000000..9d61bcdc --- /dev/null +++ b/package/openpgm/openpgm.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 8d707ef8dda45f4a7bc91016d7f2fed6a418637185d76c7ab30b306499c6d393 openpgm-5-3-128.tar.gz +sha256 4a7d4ec71fa60969399fd4caad64d5a3003fee2775445f271a5a36a8ae743a29 openpgm/pgm/LICENSE diff --git a/package/openpgm/openpgm.mk b/package/openpgm/openpgm.mk new file mode 100644 index 00000000..ded06f3d --- /dev/null +++ b/package/openpgm/openpgm.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# openpgm +# +################################################################################ + +OPENPGM_VERSION = 5-3-128 +OPENPGM_SITE = $(call github,steve-o,openpgm,release-$(OPENPGM_VERSION)) +OPENPGM_LICENSE = LGPL-2.1+ +OPENPGM_LICENSE_FILES = openpgm/pgm/LICENSE +OPENPGM_INSTALL_STAGING = YES +OPENPGM_SUBDIR = openpgm/pgm +OPENPGM_AUTORECONF = YES + +OPENPGM_CONF_ENV = \ + ac_cv_file__proc_cpuinfo=yes \ + ac_cv_file__dev_rtc=no \ + ac_cv_file__dev_hpet=no + +$(eval $(autotools-package)) diff --git a/package/openpowerlink/0001-install-the-stack-libraries-to-lib-subdirectory.patch b/package/openpowerlink/0001-install-the-stack-libraries-to-lib-subdirectory.patch new file mode 100644 index 00000000..0e1c21ec --- /dev/null +++ b/package/openpowerlink/0001-install-the-stack-libraries-to-lib-subdirectory.patch @@ -0,0 +1,167 @@ +From 16230b7f51bff2bdf061fa80e9a49c807596bb92 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 + +Using '.' to install the stack libraries is not correct since +it will install them to /usr/. + +ls /usr/liboplkmnapp-kernelintf.so + +Fix this by using 'lib' instead of '.' + +The problem with the openpowerlink build system is that it expect +the stack directory to be a "local staging" directory which +contains headers and libraries. So the libraries build by the +stack project are installed in stack/lib by default. + +This is wrong to do that because it becomes difficult to package +openpowerlink for normal Linux systems. + +Buildroot like others build system expect from a packaged software +to install libraries and headers build/provided in a staging +directory. + +It seems that CMAKE_INSTALL_PREFIX is misused by the default value +"${CMAKE_CURRENT_SOURCE_DIR}/lib/${SYSTEM_NAME_DIR}/${SYSTEM_PROCESSOR_DIR}" +since it already contains the lib directory and therefore the +entire build system is messed up. + +It seems that the openpowerlink's build system doesn't allow/support +CMAKE_INSTALL_PREFIX to be set externally +(which is the standard approach). + +The issue has been reported [1] upstream and a build system +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-kernelpcp/CMakeLists.txt | 2 +- + stack/proj/linux/liboplkmnapp-userintf/CMakeLists.txt | 2 +- + stack/proj/linux/liboplkmndrv-pcap/CMakeLists.txt | 2 +- + 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 2b3da16..ddb3e92 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 3be6c52..cf1b1dd 100644 +--- a/stack/proj/linux/liboplkcn/CMakeLists.txt ++++ b/stack/proj/linux/liboplkcn/CMakeLists.txt +@@ -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 904de6c..d8713a8 100644 +--- a/stack/proj/linux/liboplkcnapp-kernelintf/CMakeLists.txt ++++ b/stack/proj/linux/liboplkcnapp-kernelintf/CMakeLists.txt +@@ -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 e2514cf..a4e2b75 100644 +--- a/stack/proj/linux/liboplkcnapp-userintf/CMakeLists.txt ++++ b/stack/proj/linux/liboplkcnapp-userintf/CMakeLists.txt +@@ -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 98f068c..bb20006 100644 +--- a/stack/proj/linux/liboplkcndrv-pcap/CMakeLists.txt ++++ b/stack/proj/linux/liboplkcndrv-pcap/CMakeLists.txt +@@ -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 cf7927f..6b19557 100644 +--- a/stack/proj/linux/liboplkmn/CMakeLists.txt ++++ b/stack/proj/linux/liboplkmn/CMakeLists.txt +@@ -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 9daa2df..bfccb25 100644 +--- a/stack/proj/linux/liboplkmnapp-kernelintf/CMakeLists.txt ++++ b/stack/proj/linux/liboplkmnapp-kernelintf/CMakeLists.txt +@@ -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-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 cd97882..aaaa526 100644 +--- a/stack/proj/linux/liboplkmnapp-userintf/CMakeLists.txt ++++ b/stack/proj/linux/liboplkmnapp-userintf/CMakeLists.txt +@@ -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 0c29087..1783134 100644 +--- a/stack/proj/linux/liboplkmndrv-pcap/CMakeLists.txt ++++ b/stack/proj/linux/liboplkmndrv-pcap/CMakeLists.txt +@@ -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.9.4 + diff --git a/package/openpowerlink/0002-cmake-install-oplk-headers-files.patch b/package/openpowerlink/0002-cmake-install-oplk-headers-files.patch new file mode 100644 index 00000000..8e815c04 --- /dev/null +++ b/package/openpowerlink/0002-cmake-install-oplk-headers-files.patch @@ -0,0 +1,32 @@ +From f7679a4083de3a9dba80cd719ad4904fbade349b 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 + +In order to be able to link a third party application +with openpowerlink libraries, we need to install the +oplk headers files related to openpowerlink stack. + +Install all headers file from STACK_INCLUDE_DIR/oplk. + +Signed-off-by: Romain Naour +--- + stack/CMakeLists.txt | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/stack/CMakeLists.txt b/stack/CMakeLists.txt +index 69454f2..45f131d 100644 +--- a/stack/CMakeLists.txt ++++ b/stack/CMakeLists.txt +@@ -110,3 +110,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() ++ ++################################################################################ ++# Install oplk headers files ++################################################################################ ++INSTALL(DIRECTORY ${STACK_INCLUDE_DIR}/oplk DESTINATION "include") +-- +2.9.4 + diff --git a/package/openpowerlink/0003-Add-top-level-CMakeLists.txt.patch b/package/openpowerlink/0003-Add-top-level-CMakeLists.txt.patch new file mode 100644 index 00000000..cd8f9274 --- /dev/null +++ b/package/openpowerlink/0003-Add-top-level-CMakeLists.txt.patch @@ -0,0 +1,201 @@ +From cd0945a323cecb638ce56f2e3d7fb4e8c004b98b 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 + +This CMakeLists.txt can be used to build openpowerlink +using a automated build system. + +Don't use FIND_LIBRARY when the stack is built from a top +level build (ie CFG_OPLK_LIB is ON). +For a top level build, CMake will automatically add a build +dependency on oplk libraries for building demos applications. + +Also replace OPLKLIB_DEBUG by OPLKLIB in OPLK_LINK_LIBRARIES macro +if CMAKE_BUILD_TYPE is "Debug", otherwise TARGET_LINK_LIBRARIES can't +find the openpowerlink library. +This issue may be related to: +https://github.com/OpenAutomationTechnologies/openPOWERLINK_V2/issues/109 + +Fixes: +http://autobuild.buildroot.net/results/da4/da445b65cb136d71577f04e3a17fdb2ef6302a9b + +This patch has not been accepted by upstream: +https://github.com/openPOWERLINK/openPOWERLINK_V2/pull/57 + +Add PCIe support (v2.3.2) + +Signed-off-by: Romain Naour +--- + CMakeLists.txt | 42 +++++++++++++++++ + apps/common/cmake/findoplklib.cmake | 68 +++++++++++++++------------- + apps/common/cmake/linkoplklib.cmake | 2 +- + drivers/linux/drv_daemon_pcap/CMakeLists.txt | 12 +++-- + 4 files changed, 89 insertions(+), 35 deletions(-) + create mode 100644 CMakeLists.txt + +diff --git a/CMakeLists.txt b/CMakeLists.txt +new file mode 100644 +index 0000000..28d4e7a +--- /dev/null ++++ b/CMakeLists.txt +@@ -0,0 +1,42 @@ ++ ++CMAKE_MINIMUM_REQUIRED (VERSION 2.8.7) ++ ++#### LIB #### ++ ++IF (CFG_OPLK_LIB) ++ ADD_SUBDIRECTORY("stack") ++ENDIF (CFG_OPLK_LIB) ++ ++#### Linux kernel Ethernet module #### ++ ++IF (CFG_KERNEL_DRIVERS) ++ ADD_SUBDIRECTORY("drivers/linux/drv_kernelmod_edrv") ++ENDIF (CFG_KERNEL_DRIVERS) ++ ++#### Linux kernel PCIe module #### ++ ++IF (CFG_KERNEL_PCIE_DRIVERS) ++ ADD_SUBDIRECTORY("drivers/linux/drv_kernelmod_pcie") ++ENDIF (CFG_KERNEL_PCIE_DRIVERS) ++ ++#### Pcap userspace driver #### ++ ++IF (CFG_PCAP_DAEMON) ++ ADD_SUBDIRECTORY("drivers/linux/drv_daemon_pcap") ++ENDIF (CFG_PCAP_DAEMON) ++ ++#### OpenPowerLink Demos #### ++ ++# Add subdirectory of CN console demo application ++IF (CFG_DEMO_CN_CONSOLE) ++ ADD_SUBDIRECTORY("apps/demo_cn_console") ++ENDIF (CFG_DEMO_CN_CONSOLE) ++ ++# Add subdirectory of MN console demo application ++IF (CFG_DEMO_MN_CONSOLE) ++ ADD_SUBDIRECTORY("apps/demo_mn_console") ++ENDIF (CFG_DEMO_MN_CONSOLE) ++ ++IF (CFG_DEMO_MN_QT) ++ 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 f7e710f..b8b04c5 100644 +--- a/apps/common/cmake/findoplklib.cmake ++++ b/apps/common/cmake/findoplklib.cmake +@@ -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}) + +- IF((CMAKE_GENERATOR MATCHES "Visual Studio") OR (CMAKE_BUILD_TYPE STREQUAL "Release")) +- # Search for release library +- UNSET(OPLKLIB CACHE) +- MESSAGE(STATUS "Searching for LIBRARY ${OPLKLIB_NAME} in ${OPLKLIB_DIR}") +- FIND_LIBRARY(OPLKLIB NAME ${OPLKLIB_NAME} +- HINTS ${OPLKLIB_DIR} ${OPLKLIB_DIR}/${CFG_DEMO_BOARD_NAME}/${CFG_DEMO_NAME}) +- +- IF(CMAKE_SYSTEM_NAME STREQUAL "Windows") +- +- UNSET(OPLKDLL CACHE) +- FIND_PROGRAM(OPLKDLL NAME ${OPLKLIB_NAME}.dll +- HINTS ${OPLKLIB_DIR}) +- +- ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Windows") +- ENDIF() +- +- IF((CMAKE_GENERATOR MATCHES "Visual Studio") OR (CMAKE_BUILD_TYPE STREQUAL "Debug")) +- # Search for debug library +- UNSET(OPLKLIB_DEBUG CACHE) +- MESSAGE(STATUS "Searching for LIBRARY ${OPLKLIB_DEBUG_NAME} in ${OPLKLIB_DIR}") +- FIND_LIBRARY(OPLKLIB_DEBUG NAME ${OPLKLIB_DEBUG_NAME} +- HINTS ${OPLKLIB_DIR} ${OPLKLIB_DIR}/${CFG_DEMO_BOARD_NAME}/${CFG_DEMO_NAME}) +- +- IF(CMAKE_SYSTEM_NAME STREQUAL "Windows") +- +- UNSET(OPLKDLL_DEBUG CACHE) +- FIND_PROGRAM(OPLKDLL_DEBUG NAME ${OPLKLIB_DEBUG_NAME}.dll +- HINTS ${OPLKLIB_DIR}) +- +- ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Windows") +- ENDIF() ++ # Don't look for oplk libraries for a top level build ++ IF(CFG_OPLK_LIB) ++ SET(OPLKLIB ${OPLKLIB_NAME}) ++ SET(OPLKLIB_DEBUG ${OPLKLIB_DEBUG_NAME}) ++ ELSE(CFG_OPLK_LIB) ++ IF((CMAKE_GENERATOR MATCHES "Visual Studio") OR (CMAKE_BUILD_TYPE STREQUAL "Release")) ++ # Search for release library ++ UNSET(OPLKLIB CACHE) ++ MESSAGE(STATUS "Searching for LIBRARY ${OPLKLIB_NAME} in ${OPLKLIB_DIR}") ++ FIND_LIBRARY(OPLKLIB NAME ${OPLKLIB_NAME} ++ HINTS ${OPLKLIB_DIR} ${OPLKLIB_DIR}/${CFG_DEMO_BOARD_NAME}/${CFG_DEMO_NAME}) ++ ++ IF(CMAKE_SYSTEM_NAME STREQUAL "Windows") ++ ++ UNSET(OPLKDLL CACHE) ++ FIND_PROGRAM(OPLKDLL NAME ${OPLKLIB_NAME}.dll ++ HINTS ${OPLKLIB_DIR}) ++ ++ ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Windows") ++ ENDIF() ++ ++ IF((CMAKE_GENERATOR MATCHES "Visual Studio") OR (CMAKE_BUILD_TYPE STREQUAL "Debug")) ++ # Search for debug library ++ UNSET(OPLKLIB_DEBUG CACHE) ++ MESSAGE(STATUS "Searching for LIBRARY ${OPLKLIB_DEBUG_NAME} in ${OPLKLIB_DIR}") ++ FIND_LIBRARY(OPLKLIB_DEBUG NAME ${OPLKLIB_DEBUG_NAME} ++ HINTS ${OPLKLIB_DIR} ${OPLKLIB_DIR}/${CFG_DEMO_BOARD_NAME}/${CFG_DEMO_NAME}) ++ ++ IF(CMAKE_SYSTEM_NAME STREQUAL "Windows") ++ ++ UNSET(OPLKDLL_DEBUG CACHE) ++ FIND_PROGRAM(OPLKDLL_DEBUG NAME ${OPLKLIB_DEBUG_NAME}.dll ++ HINTS ${OPLKLIB_DIR}) ++ ++ ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Windows") ++ ENDIF() ++ ENDIF(CFG_OPLK_LIB) + + ENDMACRO(FIND_OPLK_LIBRARY) +diff --git a/apps/common/cmake/linkoplklib.cmake b/apps/common/cmake/linkoplklib.cmake +index 49aab66..d9fd418 100644 +--- a/apps/common/cmake/linkoplklib.cmake ++++ b/apps/common/cmake/linkoplklib.cmake +@@ -33,7 +33,7 @@ MACRO(OPLK_LINK_LIBRARIES EXECUTABLE_NAME) + TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} optimized ${OPLKLIB} debug ${OPLKLIB_DEBUG}) + ELSE() + IF(${CMAKE_BUILD_TYPE} STREQUAL "Debug") +- TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} debug ${OPLKLIB_DEBUG}) ++ TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} debug ${OPLKLIB}) + ELSE () + 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 2b4a2c1..ecceb4c 100644 +--- a/drivers/linux/drv_daemon_pcap/CMakeLists.txt ++++ b/drivers/linux/drv_daemon_pcap/CMakeLists.txt +@@ -109,9 +109,15 @@ ENDIF() + SET(OPLKLIB_DIR ${OPLK_BASE_DIR}/stack/lib/${SYSTEM_NAME_DIR}/${SYSTEM_PROCESSOR_DIR}) + SET(OPLKLIB_INCDIR ${OPLK_BASE_DIR}/stack/proj/${SYSTEM_NAME_DIR}/lib${LIB_NAME}) + +-UNSET(OPLKLIB CACHE) +-FIND_LIBRARY(OPLKLIB NAME ${LIB_NAME}${BUILD_TYPE_EXT} +- HINTS ${OPLKLIB_DIR}) ++# Don't look for oplk libraries for a top level build ++IF(CFG_OPLK_LIB) ++ SET(OPLKLIB ${LIB_NAME}${BUILD_TYPE_EXT}) ++ELSE(CFG_OPLK_LIB) ++ UNSET(OPLKLIB CACHE) ++ FIND_LIBRARY(OPLKLIB NAME ${LIB_NAME}${BUILD_TYPE_EXT} ++ HINTS ${OPLKLIB_DIR}) ++ENDIF(CFG_OPLK_LIB) ++ + INCLUDE_DIRECTORIES(${OPLKLIB_INCDIR}) + + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -pedantic -std=c99 -pthread -fno-strict-aliasing") +-- +2.9.4 + diff --git a/package/openpowerlink/Config.in b/package/openpowerlink/Config.in new file mode 100644 index 00000000..ef59a04b --- /dev/null +++ b/package/openpowerlink/Config.in @@ -0,0 +1,129 @@ +comment "openpowerlink needs a toolchain w/ C++, threads" + depends on BR2_i386 || BR2_x86_64 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_OPENPOWERLINK + bool "openpowerlink" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_i386 || BR2_x86_64 + help + openPOWERLINK is an Open Source Industrial Ethernet stack + implementing the POWERLINK protocol for Managing Node (MN, + POWERLINK Master) and Controlled Node (CN, POWERLINK Slave). + + It is provided by + SYSTEC electronic (http://www.systec-electronic.com), + B&R (http://www.br-automation.com) and + Kalycito (http://www.kalycito.com). + + http://openpowerlink.sourceforge.net/web/ + +if BR2_PACKAGE_OPENPOWERLINK + +choice + prompt "MN/CN mode" + +config BR2_PACKAGE_OPENPOWERLINK_MN + bool "Managing Node" + help + Enable Managing Node (master) mode + +config BR2_PACKAGE_OPENPOWERLINK_CN + bool "Controlled Node" + help + Enable Controlled Node (slave) mode + +endchoice + +choice + prompt "stack type" + default BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB if BR2_PACKAGE_OPENPOWERLINK_KERNEL_MODULE # legacy + default BR2_PACKAGE_OPENPOWERLINK_STACK_USERSPACE_DAEMON_LIB if BR2_PACKAGE_OPENPOWERLINK_LIBPCAP # legacy + +config BR2_PACKAGE_OPENPOWERLINK_STACK_MONOLITHIC_USER_STACK_LIB + bool "linked into application" + select BR2_PACKAGE_LIBPCAP + help + Compile a monolithic openPOWERLINK library. The library + contains an Ethernet driver which is using the PCAP library + for accessing the network. No kernel-side driver is needed. + +config BR2_PACKAGE_OPENPOWERLINK_STACK_USERSPACE_DAEMON_LIB + bool "user-space pcap daemon" + select BR2_PACKAGE_LIBPCAP + help + Compile openPOWERLINK application library which contains the + interface to a Linux user space driver, and the Linux user + space driver. It is used for implementing a multi-process + solution where the openPOWERLINK layer is running as a + separate Linux user space daemon (i.e. a PCAP based user + space daemon). No kernel-side stack is needed. + +config BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB + bool "kernel-space driver" + depends on BR2_LINUX_KERNEL + help + Compile openPOWERLINK application library which contains the + interface to a Linux kernel space driver. This will also + build and install a Linux kernel module openPOWERLINK + driver. + +config BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_PCIE_STACK_LIB + bool "kernel-space PCIe driver" + depends on BR2_LINUX_KERNEL + depends on BR2_PACKAGE_OPENPOWERLINK_MN # MN support only + help + Compile openPOWERLINK application library which contains the + interface to a Linux kernel PCIe interface driver. The kernel + part of the openPOWERLINK stack is located on an external PCIe + device. The status/control and data exchange between the + application and kernel stack is handled by the PCIe interface + driver. + +comment "openpowerlink kernel stack needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +endchoice + +if BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB + +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" + +config BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_I210 + bool "Intel I210" + +config BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_RTL8111 + bool "Realtek RTL-8111/8168" + +config BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_RTL8139 + bool "Realtek RTL-8139" + +endmenu + +endif # BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB + +config BR2_PACKAGE_OPENPOWERLINK_KERNEL_PCIE_DRIVER + bool "PCIe Powerlink Driver" + depends on BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_PCIE_STACK_LIB + +menu "demos" + +config BR2_PACKAGE_OPENPOWERLINK_DEMO_MN_CONSOLE + bool "console MN demo" + depends on BR2_PACKAGE_OPENPOWERLINK_MN + +config BR2_PACKAGE_OPENPOWERLINK_DEMO_CN_CONSOLE + bool "console CN demo" + depends on BR2_PACKAGE_OPENPOWERLINK_CN + +endmenu + +endif # BR2_PACKAGE_OPENPOWERLINK diff --git a/package/openpowerlink/openpowerlink.hash b/package/openpowerlink/openpowerlink.hash new file mode 100644 index 00000000..b6ae8edc --- /dev/null +++ b/package/openpowerlink/openpowerlink.hash @@ -0,0 +1,6 @@ +# From https://sourceforge.net/projects/openpowerlink/files/openPOWERLINK/V2.7.2/ +md5 80a64b0a2c2dec1e7aff22a06000b3d6 openPOWERLINK_V2.7.2.tar.gz +sha1 09dcb5bd7cb9d59cb9e60230ae09c558996be25b openPOWERLINK_V2.7.2.tar.gz +# sha256 locally computed +sha256 2cc660e0f8a939bd65c9f46176d18882dbe1017cbb2567b414a8a7c9af41a356 openPOWERLINK_V2.7.2.tar.gz +sha256 348e31e9e5094104463d58d33abd31049fdf209afbc12ea7abb7fd4b4a147429 license.md diff --git a/package/openpowerlink/openpowerlink.mk b/package/openpowerlink/openpowerlink.mk new file mode 100644 index 00000000..c8dbb66d --- /dev/null +++ b/package/openpowerlink/openpowerlink.mk @@ -0,0 +1,153 @@ +################################################################################ +# +# openpowerlink +# +################################################################################ + +OPENPOWERLINK_VERSION = 2.7.2 +OPENPOWERLINK_SITE = https://downloads.sourceforge.net/project/openpowerlink/openPOWERLINK/V$(OPENPOWERLINK_VERSION) +OPENPOWERLINK_SOURCE = openPOWERLINK_V$(OPENPOWERLINK_VERSION).tar.gz +OPENPOWERLINK_LICENSE = BSD-2-Clause, GPL-2.0 +OPENPOWERLINK_LICENSE_FILES = license.md + +OPENPOWERLINK_INSTALL_STAGING = YES + +# The archive has no leading component. +OPENPOWERLINK_STRIP_COMPONENTS = 0 + +OPENPOWERLINK_MN_ONOFF = $(if $(BR2_PACKAGE_OPENPOWERLINK_MN),ON,OFF) +OPENPOWERLINK_CN_ONOFF = $(if $(BR2_PACKAGE_OPENPOWERLINK_CN),ON,OFF) + +#### OPLK LIBRARY #### + +# Always build a oplk stack +# 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) +OPENPOWERLINK_DEPENDENCIES += libpcap +OPENPOWERLINK_CONF_OPTS += \ + -DCFG_COMPILE_LIB_MN=$(OPENPOWERLINK_MN_ONOFF) \ + -DCFG_COMPILE_LIB_MNAPP_USERINTF=OFF \ + -DCFG_COMPILE_LIB_MNAPP_KERNELINTF=OFF \ + -DCFG_COMPILE_LIB_MNAPP_PCIEINTF=OFF \ + -DCFG_COMPILE_LIB_MNDRV_PCAP=OFF \ + -DCFG_COMPILE_LIB_CN=$(OPENPOWERLINK_CN_ONOFF) \ + -DCFG_COMPILE_LIB_CNAPP_USERINTF=OFF \ + -DCFG_COMPILE_LIB_CNAPP_KERNELINTF=OFF \ + -DCFG_COMPILE_LIB_CNDRV_PCAP=OFF \ + -DPCAP_CONFIG="$(STAGING_DIR)/usr/bin/pcap-config" +else ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_USERSPACE_DAEMON_LIB),y) +OPENPOWERLINK_DEPENDENCIES += libpcap +OPENPOWERLINK_CONF_OPTS += \ + -DCFG_COMPILE_LIB_MN=OFF \ + -DCFG_COMPILE_LIB_MNAPP_USERINTF=$(OPENPOWERLINK_MN_ONOFF) \ + -DCFG_COMPILE_LIB_MNAPP_KERNELINTF=OFF \ + -DCFG_COMPILE_LIB_MNAPP_PCIEINTF=OFF \ + -DCFG_COMPILE_LIB_MNDRV_PCAP=$(OPENPOWERLINK_MN_ONOFF) \ + -DCFG_COMPILE_LIB_CN=OFF \ + -DCFG_COMPILE_LIB_CNAPP_USERINTF=$(OPENPOWERLINK_CN_ONOFF) \ + -DCFG_COMPILE_LIB_CNAPP_KERNELINTF=OFF \ + -DCFG_COMPILE_LIB_CNDRV_PCAP=$(OPENPOWERLINK_CN_ONOFF) \ + -DPCAP_CONFIG="$(STAGING_DIR)/usr/bin/pcap-config" +else ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB),y) +OPENPOWERLINK_CONF_OPTS += \ + -DCFG_COMPILE_LIB_MN=OFF \ + -DCFG_COMPILE_LIB_MNAPP_USERINTF=OFF \ + -DCFG_COMPILE_LIB_MNAPP_KERNELINTF=$(OPENPOWERLINK_MN_ONOFF) \ + -DCFG_COMPILE_LIB_MNAPP_PCIEINTF=OFF \ + -DCFG_COMPILE_LIB_MNDRV_PCAP=OFF \ + -DCFG_COMPILE_LIB_CN=OFF \ + -DCFG_COMPILE_LIB_CNAPP_USERINTF=OFF \ + -DCFG_COMPILE_LIB_CNAPP_KERNELINTF=$(OPENPOWERLINK_CN_ONOFF) \ + -DCFG_COMPILE_LIB_CNDRV_PCAP=OFF +else ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_PCIE_STACK_LIB),y) +OPENPOWERLINK_CONF_OPTS += \ + -DCFG_COMPILE_LIB_MN=OFF \ + -DCFG_COMPILE_LIB_MNAPP_USERINTF=OFF \ + -DCFG_COMPILE_LIB_MNAPP_KERNELINTF=OFF \ + -DCFG_COMPILE_LIB_MNAPP_PCIEINTF=$(OPENPOWERLINK_MN_ONOFF) \ + -DCFG_COMPILE_LIB_MNDRV_PCAP=OFF \ + -DCFG_COMPILE_LIB_CN=OFF \ + -DCFG_COMPILE_LIB_CNAPP_USERINTF=OFF \ + -DCFG_COMPILE_LIB_CNAPP_KERNELINTF=OFF \ + -DCFG_COMPILE_LIB_CNDRV_PCAP=OFF +endif + +OPENPOWERLINK_CONF_OPTS += \ + -DCFG_COMPILE_SHARED_LIBRARY=$(if $(BR2_STATIC_LIBS),OFF,ON) + +#### OPLK KERNEL DRIVERS #### + +ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB)$(BR2_PACKAGE_OPENPOWERLINK_KERNEL_PCIE_DRIVER),y) +OPENPOWERLINK_DEPENDENCIES += linux + +OPENPOWERLINK_CONF_OPTS += \ + -DCFG_KERNEL_DIR="$(LINUX_DIR)" \ + -DCMAKE_SYSTEM_VERSION="$(LINUX_VERSION)" \ + -DCFG_OPLK_MN="$(OPENPOWERLINK_MN_ONOFF)" \ + -DMAKE_KERNEL_ARCH="$(KERNEL_ARCH)" \ + -DMAKE_KERNEL_CROSS_COMPILE="$(CCACHE) $(TARGET_CROSS)" +endif + +ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB),y) +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 + +ifeq ($(BR2_PACKAGE_OPENPOWERLINK_KERNEL_PCIE_DRIVER),y) +OPENPOWERLINK_CONF_OPTS += -DCFG_KERNEL_PCIE_DRIVERS=ON +else +OPENPOWERLINK_CONF_OPTS += -DCFG_KERNEL_PCIE_DRIVERS=OFF +endif + +#### OPLK PCAP DAEMON #### + +ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_USERSPACE_DAEMON_LIB),y) +OPENPOWERLINK_CONF_OPTS += \ + -DCFG_PCAP_DAEMON=ON \ + -DCFG_OPLK_MN=$(OPENPOWERLINK_MN_ONOFF) +endif + +#### OPLK DEMO APPS #### + +# See apps/common/cmake/configure-linux.cmake for available options list. +ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_MONOLITHIC_USER_STACK_LIB),y) +OPENPOWERLINK_CONF_OPTS += \ + -DCFG_BUILD_KERNEL_STACK="Link to Application" +else ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_USERSPACE_DAEMON_LIB),y) +OPENPOWERLINK_CONF_OPTS += \ + -DCFG_BUILD_KERNEL_STACK="Linux Userspace Daemon" +else ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB),y) +OPENPOWERLINK_CONF_OPTS += \ + -DCFG_BUILD_KERNEL_STACK="Linux Kernel Module" +else ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_PCIE_STACK_LIB),y) +OPENPOWERLINK_CONF_OPTS += \ + -DCFG_BUILD_KERNEL_STACK="Kernel stack on PCIe card" +endif + +ifeq ($(BR2_PACKAGE_OPENPOWERLINK_DEMO_MN_CONSOLE),y) +OPENPOWERLINK_CONF_OPTS += -DCFG_DEMO_MN_CONSOLE=ON \ + -DCFG_DEMO_MN_CONSOLE_USE_SYNCTHREAD=ON +else +OPENPOWERLINK_CONF_OPTS += -DCFG_DEMO_MN_CONSOLE=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENPOWERLINK_DEMO_CN_CONSOLE),y) +OPENPOWERLINK_CONF_OPTS += -DCFG_DEMO_CN_CONSOLE=ON +else +OPENPOWERLINK_CONF_OPTS += -DCFG_DEMO_CN_CONSOLE=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/openrc/0001-init.d-sysctl.in-add-support-for-busybox-sysctl.patch b/package/openrc/0001-init.d-sysctl.in-add-support-for-busybox-sysctl.patch new file mode 100644 index 00000000..da8cf042 --- /dev/null +++ b/package/openrc/0001-init.d-sysctl.in-add-support-for-busybox-sysctl.patch @@ -0,0 +1,66 @@ +From ec1a0c8fa2e7a7c6cf70f68bdabc07cbb1a567cf Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20=C5=81yszczek?= +Date: Sun, 5 May 2019 23:43:40 +0200 +Subject: [PATCH] init.d/sysctl.in: add support for busybox sysctl +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Busybox version of sysctl does not support --system argument, +and files need to be loaded one by one. This patch adds code +to recognize busybox sysctl and execute proper function based +on that. + +Signed-off-by: Michał Łyszczek +--- + init.d/sysctl.in | 27 ++++++++++++++++++++++++++- + 1 file changed, 26 insertions(+), 1 deletion(-) + +diff --git a/init.d/sysctl.in b/init.d/sysctl.in +index e49f4db2..a705b3d4 100644 +--- a/init.d/sysctl.in ++++ b/init.d/sysctl.in +@@ -37,6 +37,23 @@ BSD_sysctl() + return $retval + } + ++Busybox_sysctl() ++{ ++ local quiet ++ yesno $rc_verbose || quiet=-q ++ ++ eindent ++ for conf in /etc/sysctl.conf /etc/sysctl.d/*.conf; do ++ if [ -r "$conf" ]; then ++ vebegin "applying $conf" ++ sysctl $quiet -p "$conf" || retval=1 ++ veend $retval ++ fi ++ done ++ eoutdent ++ return $retval ++} ++ + Linux_sysctl() + { + local quiet +@@ -52,7 +69,15 @@ start() + ebegin "Configuring kernel parameters" + case "$RC_UNAME" in + *BSD|GNU) BSD_sysctl; rc=$? ;; +- Linux) Linux_sysctl; rc=$? ;; ++ Linux) ++ sysctl -h > /dev/null 2>&1 ++ if [ $? -ne 0 ]; then ++ # busybox version of sysctl does not recognize -h option ++ Busybox_sysctl ++ else ++ Linux_sysctl ++ fi ++ rc=$? ;; + esac + eend $rc "Unable to configure some kernel parameters" + } +-- +2.18.1 + diff --git a/package/openrc/0002-sh-init.sh.Linux.in-change-run-lock-from-root-uucp-t.patch b/package/openrc/0002-sh-init.sh.Linux.in-change-run-lock-from-root-uucp-t.patch new file mode 100644 index 00000000..2f0a81bb --- /dev/null +++ b/package/openrc/0002-sh-init.sh.Linux.in-change-run-lock-from-root-uucp-t.patch @@ -0,0 +1,36 @@ +From 5ae8209afad9a4284723712b46d8685e7f7fd72c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20=C5=81yszczek?= +Date: Mon, 6 May 2019 00:06:39 +0200 +Subject: [PATCH] sh/init.sh.Linux.in: change /run/lock from root:uucp to + root:daemon +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +On gentoo /run/lock is owned by uucp group because of historical +reasons. However uucp does not exist on buildroot by default, and +it makes more sense that 'daemon' group should own this directory. + +Signed-off-by: Michał Łyszczek +[Fabrice: update for 0.43.3] +Signed-off-by: Fabrice Fontaine +--- + sh/init.sh.Linux.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sh/init.sh.Linux.in b/sh/init.sh.Linux.in +index 222bbd3b..7f1a88db 100644 +--- a/sh/init.sh.Linux.in ++++ b/sh/init.sh.Linux.in +@@ -83,7 +83,7 @@ fi + fi + + checkpath -d "$RC_SVCDIR" +-checkpath -d -m 0775 -o root:uucp /run/lock ++checkpath -d -m 0775 -o root:daemon /run/lock + + # Try to mount xenfs as early as possible, otherwise rc_sys() will always + # return RC_SYS_XENU and will think that we are in a domU while it's not. +-- +2.18.1 + diff --git a/package/openrc/0003-init.d-agetty-replace-sbin-agetty-by-sbin-getty.patch b/package/openrc/0003-init.d-agetty-replace-sbin-agetty-by-sbin-getty.patch new file mode 100644 index 00000000..feeff222 --- /dev/null +++ b/package/openrc/0003-init.d-agetty-replace-sbin-agetty-by-sbin-getty.patch @@ -0,0 +1,33 @@ +From b39ab180358ed451eae9df900f49a72ef1eb7442 Mon Sep 17 00:00:00 2001 +From: Carlos Santos +Date: Sun, 1 Mar 2020 09:04:48 -0300 +Subject: [PATCH] init.d/agetty: replace /sbin/agetty by /sbin/getty + +In Buildroot getty is provided by BusyBox or util-linux (agetty). Both +create a /sbin/getty symlink pointing to the actual program, so make the +agetty service use that path instead of /sbin/agetty. + +The patch is required because it's not possible to override the command +by means of a configuration file. + +Signed-off-by: Carlos Santos +--- + init.d/agetty.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/init.d/agetty.in b/init.d/agetty.in +index e4866f7a..e1864628 100644 +--- a/init.d/agetty.in ++++ b/init.d/agetty.in +@@ -14,7 +14,7 @@ supervisor=supervise-daemon + port="${RC_SVCNAME#*.}" + respawn_period="${respawn_period:-60}" + term_type="${term_type:-linux}" +-command=/sbin/agetty ++command=/sbin/getty + command_args_foreground="${agetty_options} ${port} ${baud} ${term_type}" + pidfile="/run/${RC_SVCNAME}.pid" + +-- +2.18.2 + diff --git a/package/openrc/0004-init.d-agetty-start-agetty-after-all-sevices.patch b/package/openrc/0004-init.d-agetty-start-agetty-after-all-sevices.patch new file mode 100644 index 00000000..f1c927a4 --- /dev/null +++ b/package/openrc/0004-init.d-agetty-start-agetty-after-all-sevices.patch @@ -0,0 +1,29 @@ +From c2dc04f6b8c6784941b896e0b17c160dd43a566f Mon Sep 17 00:00:00 2001 +From: Carlos Santos +Date: Sun, 1 Mar 2020 11:14:37 -0300 +Subject: [PATCH] init.d/agetty: start agetty after all services + +This is required for Buildroot, to prevent mixing service initialization +messages with the getty prompt on devices with a single serial console. + +Signed-off-by: Carlos Santos +--- + init.d/agetty.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/init.d/agetty.in b/init.d/agetty.in +index e1864628..a1ad4e9f 100644 +--- a/init.d/agetty.in ++++ b/init.d/agetty.in +@@ -19,7 +19,7 @@ command_args_foreground="${agetty_options} ${port} ${baud} ${term_type}" + pidfile="/run/${RC_SVCNAME}.pid" + + depend() { +- after local ++ after * + keyword -prefix + provide getty + } +-- +2.18.2 + diff --git a/package/openrc/0005-runlevels-do-not-add-agetty.tty-1-6-if-MKSYSVINIT-ye.patch b/package/openrc/0005-runlevels-do-not-add-agetty.tty-1-6-if-MKSYSVINIT-ye.patch new file mode 100644 index 00000000..42f77ffd --- /dev/null +++ b/package/openrc/0005-runlevels-do-not-add-agetty.tty-1-6-if-MKSYSVINIT-ye.patch @@ -0,0 +1,35 @@ +From 014dc43447fa553e875984ac4a528e5916cc9e06 Mon Sep 17 00:00:00 2001 +From: Carlos Santos +Date: Sat, 29 Feb 2020 22:41:30 -0300 +Subject: [PATCH] runlevels: do not add agetty.tty[1-6] if MKSYSVINIT=yes + +Buildroot starts a single getty, according to the system configuration. +Also tty[1-6] may not exist (e.g. embedded devices with serial consoles +only). + +Signed-off-by: Carlos Santos +[Adam: update for 0.50] +Signed-off-by: Adam Duskett +--- + tools/meson_runlevels.sh | 6 ------ + 1 file changed, 6 deletions(-) + +diff --git a/tools/meson_runlevels.sh b/tools/meson_runlevels.sh +index 1473d4e..eee256b 100755 +--- a/tools/meson_runlevels.sh ++++ b/tools/meson_runlevels.sh +@@ -91,11 +91,5 @@ if ! test -d "${DESTDIR}${shutdowndir}"; then + ln -snf "${init_d_dir}/$x" "${DESTDIR}${shutdowndir}/$x" + done + fi +-if test "${sysvinit}" = yes && test "${os}" = Linux; then \ +- for x in tty1 tty2 tty3 tty4 tty5 tty6; do +- ln -snf "${init_d_dir}/agetty" "${DESTDIR}/${init_d_dir}/agetty.$x" +- ln -snf "${init_d_dir}/agetty.$x" "${DESTDIR}/${defaultdir}/agetty.$x" +- done; +-fi + + ln -snf "${rc_libexecdir}"/sh/functions.sh "${DESTDIR}/${init_d_dir}" +-- +2.18.2 + diff --git a/package/openrc/0006-Also-create-run-lock-subsys-directory.patch b/package/openrc/0006-Also-create-run-lock-subsys-directory.patch new file mode 100644 index 00000000..ad78a4b8 --- /dev/null +++ b/package/openrc/0006-Also-create-run-lock-subsys-directory.patch @@ -0,0 +1,29 @@ +From 49e5929b468f604d80a0c04a6ce78eb96ca36090 Mon Sep 17 00:00:00 2001 +From: Norbert Lange +Date: Sun, 9 Jan 2022 00:22:40 +0100 +Subject: [PATCH] Also create /run/lock/subsys directory + +Buildroot service scripts regularly use this directory, so +create it in the most appropriate spot. + +Signed-off-by: Norbert Lange +--- + sh/init.sh.Linux.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sh/init.sh.Linux.in b/sh/init.sh.Linux.in +index e8afc1fb..662ab223 100644 +--- a/sh/init.sh.Linux.in ++++ b/sh/init.sh.Linux.in +@@ -83,7 +83,7 @@ elif ! mountinfo -q /run; then + fi + + checkpath -d "$RC_SVCDIR" +-checkpath -d -m 0775 -o root:daemon /run/lock ++checkpath -d -m 0775 -o root:daemon /run/lock /run/lock/subsys + + # Try to mount xenfs as early as possible, otherwise rc_sys() will always + # return RC_SYS_XENU and will think that we are in a domU while it's not. +-- +2.34.1 + diff --git a/package/openrc/0007-allow-setting-rc_libexecdir-path.patch b/package/openrc/0007-allow-setting-rc_libexecdir-path.patch new file mode 100644 index 00000000..a11c7892 --- /dev/null +++ b/package/openrc/0007-allow-setting-rc_libexecdir-path.patch @@ -0,0 +1,44 @@ +From 89c42e7e0d8d5913789a76b007ed6a0c43078c63 Mon Sep 17 00:00:00 2001 +From: artoo +Date: Wed, 8 Sep 2021 22:41:58 +0200 +Subject: [PATCH] allow setting rc_libexecdir path + + - Allow to change the rc dir name of the rc_libexecdir path + - Introduce a librcdir option for override with value 'rc' + +Upstream: https://github.com/OpenRC/openrc/pull/443 + +Signed-off-by: artoo +[Adam: update for 0.50] +Signed-off-by: Adam Duskett +--- + meson.build | 2 +- + meson_options.txt | 2 ++ + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 5b3f8fa..40d4be1 100644 +--- a/meson.build ++++ b/meson.build +@@ -102,7 +102,7 @@ if os == 'Linux' and libexecdir == 'libexec' + libexecdir = 'lib' + endif + libexecdir = rootprefix / libexecdir +-rc_libexecdir = libexecdir / 'rc' ++rc_libexecdir = libexecdir / get_option('librcdir') + rc_bindir = rc_libexecdir / 'bin' + rc_sbindir = rc_libexecdir / 'sbin' + rc_shdir = rc_libexecdir / 'sh' +diff --git a/meson_options.txt b/meson_options.txt +index 2c74152..d2f67e4 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -37,3 +37,5 @@ option('termcap', type : 'combo', + description : 'the termcap library to use') + option('zsh-completions', type : 'boolean', + description : 'install zsh completions') ++option('librcdir', type : 'string', value : 'rc', ++ description : 'default location of rc libexec dir') +-- +2.41.0 + diff --git a/package/openrc/Config.in b/package/openrc/Config.in new file mode 100644 index 00000000..42d7347b --- /dev/null +++ b/package/openrc/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_OPENRC + bool "openrc" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + depends on !BR2_TOOLCHAIN_USES_UCLIBC + depends on BR2_INIT_OPENRC + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # kmod tools + select BR2_PACKAGE_KMOD # runtime + select BR2_PACKAGE_KMOD_TOOLS # runtime + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_NCURSES + help + Init that works on top of pid 1 (for example + openrc-init). By default it does quite a lot on startup + (like setting hwclock, mounting directories, configuring + interfaces and so on). So for this init to properly work you + need at least these tools on the root filesystem (default + busybox configuration provides them all): + + swapon, fsck, hwclock, getty, login, grep, mount, coreutils, + procps, modprobe (kmod), net-tools + + Number of tools may be decreased by removing services that + use them. + + https://github.com/OpenRC/openrc + +comment "openrc needs a glibc or musl toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_INIT_OPENRC + depends on BR2_STATIC_LIBS && BR2_TOOLCHAIN_USES_UCLIBC diff --git a/package/openrc/openrc.hash b/package/openrc/openrc.hash new file mode 100644 index 00000000..c1c16a8c --- /dev/null +++ b/package/openrc/openrc.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 0b911eee4e64ad5e6945c6fed572220d537dfd0108838fa6d6797a2d7ff9f052 openrc-0.52.1.tar.gz +sha256 6ac2bf77510808fbec7dc86cbfbca98dfc4c6b47dc99e4ca77b5370e097d8e70 LICENSE diff --git a/package/openrc/openrc.mk b/package/openrc/openrc.mk new file mode 100644 index 00000000..69f5b3a1 --- /dev/null +++ b/package/openrc/openrc.mk @@ -0,0 +1,103 @@ +################################################################################ +# +# openrc +# +################################################################################ + +OPENRC_VERSION = 0.52.1 +OPENRC_SITE = $(call github,OpenRC,openrc,$(OPENRC_VERSION)) +OPENRC_LICENSE = BSD-2-Clause +OPENRC_LICENSE_FILES = LICENSE +OPENRC_CPE_ID_VALID = YES + +OPENRC_DEPENDENCIES = ncurses + +OPENRC_CONF_OPTS = \ + -Dos=Linux \ + -Dlibrcdir=/usr/libexec/rc \ + -Dpkgconfig=false \ + -Dsysvinit=true \ + -Drootprefix=/ \ + -Dbranding="\"Buildroot $(BR2_VERSION_FULL)\"" + +ifeq ($(BR2_PACKAGE_BASH_COMPLETION),y) +OPENRC_CONF_OPTS += -Dbash-completions=true +else +OPENRC_CONF_OPTS += -Dbash-completions=false +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +OPENRC_CONF_OPTS += -Dselinux=enabled +OPENRC_DEPENDENCIES += libselinux +else +OPENRC_CONF_OPTS += -Dselinux=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +OPENRC_DEPENDENCIES += libxcrypt +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +OPENRC_CONF_OPTS += -Dpam=true +OPENRC_DEPENDENCIES += linux-pam +else +OPENRC_CONF_OPTS += -Dpam=false +endif + +ifeq ($(BR2_ROOTFS_MERGED_USR),y) +OPENRC_CONF_OPTS += -Dsplit-usr=false +else +OPENRC_CONF_OPTS += -Dsplit-usr=true +endif + +define OPENRC_INSTALL_SYSV_RCS_SCRIPT + $(INSTALL) -D -m 0755 $(OPENRC_PKGDIR)/sysv-rcs \ + $(TARGET_DIR)/etc/init.d/sysv-rcs +endef +OPENRC_POST_INSTALL_TARGET_HOOKS += OPENRC_INSTALL_SYSV_RCS_SCRIPT + +ifeq ($(BR2_PACKAGE_KBD),) +# keymaps and save-keymaps require kbd_mode and dumpkeys, respectively, so +# remove them if the kbd package is not selected (e.g. devices with serial +# console, only). +define OPENRC_NO_KBD + $(RM) $(TARGET_DIR)/etc/runlevels/boot/{keymaps,save-keymaps} + $(RM) $(TARGET_DIR)/etc/init.d/{keymaps,save-keymaps} + $(RM) $(TARGET_DIR)/etc/conf.d/keymaps +endef +OPENRC_POST_INSTALL_TARGET_HOOKS += OPENRC_NO_KBD +endif + +ifeq ($(BR2_PACKAGE_NETIFRC),y) +# netifrc replaces network, staticroute and loopback services which are +# installed by openrc +define OPENRC_NO_NET + $(RM) $(TARGET_DIR)/etc/runlevels/boot/{network,staticroute,loopback} + $(RM) $(TARGET_DIR)/etc/init.d/{network,staticroute,loopback} + $(RM) $(TARGET_DIR)/etc/conf.d/{network,staticroute,loopback} +endef +OPENRC_POST_INSTALL_TARGET_HOOKS += OPENRC_NO_NET +endif + +define OPENRC_REMOVE_UNNEEDED + $(RM) -r $(TARGET_DIR)/usr/share/openrc +endef +OPENRC_TARGET_FINALIZE_HOOKS += OPENRC_REMOVE_UNNEEDED + +ifeq ($(BR2_TARGET_GENERIC_GETTY),y) +OPENRC_GETTY_SVCNAME = agetty.$(SYSTEM_GETTY_PORT) +OPENRC_GETTY_CONF_D = $(TARGET_DIR)/etc/conf.d/$(OPENRC_GETTY_SVCNAME) +define OPENRC_SET_GETTY + { \ + echo "baud=\"$(SYSTEM_GETTY_BAUDRATE)\""; \ + echo "term_type=\"$(SYSTEM_GETTY_TERM)\"" ; \ + echo "agetty_options=\"-L $(SYSTEM_GETTY_OPTIONS)\""; \ + } > $(OPENRC_GETTY_CONF_D) + ln -sf agetty $(TARGET_DIR)/etc/init.d/$(OPENRC_GETTY_SVCNAME) + ln -sf /etc/init.d/$(OPENRC_GETTY_SVCNAME) \ + $(TARGET_DIR)/etc/runlevels/default/$(OPENRC_GETTY_SVCNAME) +endef +OPENRC_TARGET_FINALIZE_HOOKS += OPENRC_SET_GETTY +endif # BR2_TARGET_GENERIC_GETTY + +$(eval $(meson-package)) diff --git a/package/openrc/sysv-rcs b/package/openrc/sysv-rcs new file mode 100755 index 00000000..1564cbe6 --- /dev/null +++ b/package/openrc/sysv-rcs @@ -0,0 +1,27 @@ +#!/sbin/openrc-run + +description="start or stop sysv rc[S,K] scripts" + +depend() { + after local +} + +start() { + for i in /etc/init.d/S??*; do + # Ignore dangling symlinks (if any). + [ -e "$i" ] || continue + einfo "Starting $i" + $i start > /dev/null + eend $? + done +} + +stop() { + for i in $(ls -r /etc/init.d/S??*); do + # Ignore dangling symlinks (if any). + [ -e "$i" ] || continue + einfo "Stopping $i" + $i stop > /dev/null + eend $? + done +} diff --git a/package/openresolv/Config.in b/package/openresolv/Config.in new file mode 100644 index 00000000..835fbf29 --- /dev/null +++ b/package/openresolv/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_OPENRESOLV + bool "openresolv" + help + openresolv is a resolvconf implementation which + manages resolv.conf. This tool provides a dns management + framework to track currently available nameservers. + + https://roy.marples.name/projects/openresolv diff --git a/package/openresolv/openresolv.hash b/package/openresolv/openresolv.hash new file mode 100644 index 00000000..c32b856d --- /dev/null +++ b/package/openresolv/openresolv.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 36b5bcbe257a940c884f0d74321a47407baabab9e265e38859851c8311f6f0b0 openresolv-3.13.2.tar.xz +sha256 384740bf5e19e7628d20f4dcc22925062fdc6020e9a6f074e567d4d797be57a0 LICENSE diff --git a/package/openresolv/openresolv.mk b/package/openresolv/openresolv.mk new file mode 100644 index 00000000..8a8b5787 --- /dev/null +++ b/package/openresolv/openresolv.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# openresolv +# +################################################################################ + +OPENRESOLV_VERSION = 3.13.2 +OPENRESOLV_SITE = https://github.com/rsmarples/openresolv/releases/download/v$(OPENRESOLV_VERSION) +OPENRESOLV_SOURCE = openresolv-$(OPENRESOLV_VERSION).tar.xz +OPENRESOLV_LICENSE = BSD-2-Clause +OPENRESOLV_LICENSE_FILES = LICENSE +OPENRESOLV_CPE_ID_VALID = YES + +define OPENRESOLV_CONFIGURE_CMDS + cd $(@D) && $(TARGET_CONFIGURE_OPTS) ./configure --sysconfdir=/etc +endef + +define OPENRESOLV_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define OPENRESOLV_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" install +endef + +$(eval $(generic-package)) diff --git a/package/opensc/Config.in b/package/opensc/Config.in new file mode 100644 index 00000000..13b085f3 --- /dev/null +++ b/package/opensc/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_OPENSC + bool "opensc" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # pcsc-lite + select BR2_PACKAGE_PCSC_LITE + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 if BR2_PACKAGE_LIBOPENSSL + help + OpenSC provides a set of libraries and utilities to work + with smart cards. + + https://github.com/OpenSC/OpenSC/wiki + +comment "opensc needs a toolchain with dynamic library, threads, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/opensc/opensc.hash b/package/opensc/opensc.hash new file mode 100644 index 00000000..23222206 --- /dev/null +++ b/package/opensc/opensc.hash @@ -0,0 +1,5 @@ +# Computed locally from https://https://github.com/OpenSC/OpenSC/releases/ +sha256 24d03c69287291da32a30c4c38a304ad827f56cb85d83619e1f5403ab6480ef8 opensc-0.24.0.tar.gz + +# Computed locally +sha256 376b54d4c5f4aa99421823fa4da93e3ab73096fce2400e89858632aa7da24a14 COPYING diff --git a/package/opensc/opensc.mk b/package/opensc/opensc.mk new file mode 100644 index 00000000..008de9d4 --- /dev/null +++ b/package/opensc/opensc.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# opensc +# +################################################################################ + +OPENSC_VERSION = 0.24.0 +OPENSC_SITE = https://github.com/OpenSC/OpenSC/releases/download/$(OPENSC_VERSION) +OPENSC_LICENSE = LGPL-2.1+ +OPENSC_LICENSE_FILES = COPYING +OPENSC_CPE_ID_VALID = YES +OPENSC_DEPENDENCIES = pcsc-lite +OPENSC_INSTALL_STAGING = YES +OPENSC_CONF_OPTS = --disable-cmocka --disable-strict --disable-tests + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +OPENSC_DEPENDENCIES += openssl +OPENSC_CONF_OPTS += --enable-openssl +else +OPENSC_CONF_OPTS += --disable-openssl +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +OPENSC_DEPENDENCIES += zlib +OPENSC_CONF_OPTS += --enable-zlib +else +OPENSC_CONF_OPTS += --disable-zlib +endif + +$(eval $(autotools-package)) diff --git a/package/openssh/Config.in b/package/openssh/Config.in new file mode 100644 index 00000000..25843447 --- /dev/null +++ b/package/openssh/Config.in @@ -0,0 +1,43 @@ +config BR2_PACKAGE_OPENSSH + bool "openssh" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + A free version of the SSH protocol suite of network + connectivity tools. The standard 'ssh', 'sshd', 'scp', and + friends. + + http://www.openssh.com/ + +if BR2_PACKAGE_OPENSSH + +config BR2_PACKAGE_OPENSSH_CLIENT + bool "client" + default y + help + Client programs: ssh, scp, sftp, ssh-agent, ssh-add, + ssh-copy-id. + +config BR2_PACKAGE_OPENSSH_SERVER + bool "server" + default y + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + Server programs: sshd, sftp-server + +config BR2_PACKAGE_OPENSSH_KEY_UTILS + bool "key utilities" + default y + help + Key utilities: ssh-keygen, ssh-keyscan. + +config BR2_PACKAGE_OPENSSH_SANDBOX + bool "use sandboxing" + default y + help + Use sandboxing for extra privilege protection of processes. + + This is normally preferable, but may cause seccomp problems + for certain combinations of C libraries and kernel versions. +endif diff --git a/package/openssh/S50sshd b/package/openssh/S50sshd new file mode 100644 index 00000000..7e5ccf07 --- /dev/null +++ b/package/openssh/S50sshd @@ -0,0 +1,83 @@ +#!/bin/sh +# +# sshd Starts sshd. +# + +DAEMON="sshd" +PIDFILE="/var/run/$DAEMON.pid" + +# Make sure the ssh-keygen program exists +[ -f /usr/bin/ssh-keygen ] || exit 0 + +umask 077 + +start() { + # Create any missing keys + /usr/bin/ssh-keygen -A + + printf "Starting %s: " "$DAEMON" + start-stop-daemon --start --pidfile "$PIDFILE" \ + --exec "/usr/sbin/$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf "Stopping sshd: " + start-stop-daemon --stop --pidfile "$PIDFILE" \ + --exec "/usr/sbin/$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + # sshd deletes its PID file on exit, wait for it to be gone + while [ -f "$PIDFILE" ]; do + sleep 0.1 + done + return "$status" +} + +restart() { + stop + start +} + +reload() { + printf "Reloading sshd config: " + start-stop-daemon --stop --signal HUP -q --pidfile "$PIDFILE" \ + --exec "/usr/sbin/$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + restart + ;; + reload) + reload + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac + +exit $? diff --git a/package/openssh/openssh.hash b/package/openssh/openssh.hash new file mode 100644 index 00000000..44f96450 --- /dev/null +++ b/package/openssh/openssh.hash @@ -0,0 +1,4 @@ +# From https://www.openssh.com/txt/release-9.8 +sha256 dd8bd002a379b5d499dfb050dd1fa9af8029e80461f4bb6c523c49973f5a39f3 openssh-9.8p1.tar.gz +# Locally calculated +sha256 05c30446ba738934b3f1efa965b454c122ca26cc4b268e5ae6843f58ccd1b16d LICENCE diff --git a/package/openssh/openssh.mk b/package/openssh/openssh.mk new file mode 100644 index 00000000..7065c3ae --- /dev/null +++ b/package/openssh/openssh.mk @@ -0,0 +1,145 @@ +################################################################################ +# +# openssh +# +################################################################################ + +OPENSSH_VERSION_MAJOR = 9.8 +OPENSSH_VERSION_MINOR = p1 +OPENSSH_VERSION = $(OPENSSH_VERSION_MAJOR)$(OPENSSH_VERSION_MINOR) +OPENSSH_CPE_ID_VERSION = $(OPENSSH_VERSION_MAJOR) +OPENSSH_CPE_ID_UPDATE = $(OPENSSH_VERSION_MINOR) +OPENSSH_SITE = http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable +OPENSSH_LICENSE = BSD-3-Clause, BSD-2-Clause, Public Domain +OPENSSH_LICENSE_FILES = LICENCE + +OPENSSH_CONF_ENV = \ + LD="$(TARGET_CC)" \ + LDFLAGS="$(TARGET_CFLAGS)" \ + LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl` +OPENSSH_CPE_ID_VENDOR = openbsd +OPENSSH_CONF_OPTS = \ + --sysconfdir=/etc/ssh \ + --with-default-path=$(BR2_SYSTEM_DEFAULT_PATH) \ + $(if $(BR2_PACKAGE_OPENSSH_SANDBOX),--with-sandbox,--without-sandbox) \ + --disable-lastlog \ + --disable-utmp \ + --disable-utmpx \ + --disable-wtmp \ + --disable-wtmpx \ + --disable-strip + +OPENSSH_SELINUX_MODULES = ssh + +define OPENSSH_PERMISSIONS + /var/empty d 755 root root - - - - - +endef + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_110934),y) +OPENSSH_CONF_OPTS += --without-hardening +endif + +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) +OPENSSH_CONF_OPTS += --without-pie +endif + +OPENSSH_DEPENDENCIES = host-pkgconf zlib openssl + +# crypt() in libcrypt only required for sshd. +ifeq ($(BR2_PACKAGE_OPENSSH_SERVER)$(BR2_PACKAGE_LIBXCRYPT),yy) +OPENSSH_DEPENDENCIES += libxcrypt +endif + +ifeq ($(BR2_PACKAGE_CRYPTODEV_LINUX),y) +OPENSSH_DEPENDENCIES += cryptodev-linux +OPENSSH_CONF_OPTS += --with-ssl-engine +else +OPENSSH_CONF_OPTS += --without-ssl-engine +endif + +ifeq ($(BR2_PACKAGE_AUDIT),y) +OPENSSH_DEPENDENCIES += audit +OPENSSH_CONF_OPTS += --with-audit=linux +else +OPENSSH_CONF_OPTS += --without-audit +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +define OPENSSH_INSTALL_PAM_CONF + $(INSTALL) -D -m 644 $(@D)/contrib/sshd.pam.generic $(TARGET_DIR)/etc/pam.d/sshd + $(SED) '\%password required /lib/security/pam_cracklib.so%d' $(TARGET_DIR)/etc/pam.d/sshd + $(SED) 's/\#UsePAM no/UsePAM yes/' $(TARGET_DIR)/etc/ssh/sshd_config +endef + +OPENSSH_DEPENDENCIES += linux-pam +OPENSSH_CONF_OPTS += --with-pam +OPENSSH_POST_INSTALL_TARGET_HOOKS += OPENSSH_INSTALL_PAM_CONF +else +OPENSSH_CONF_OPTS += --without-pam +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +OPENSSH_DEPENDENCIES += libselinux +OPENSSH_CONF_OPTS += --with-selinux +else +OPENSSH_CONF_OPTS += --without-selinux +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_SYSUSERS),y) +define OPENSSH_INSTALL_SYSTEMD_SYSUSERS + $(INSTALL) -m 0644 -D package/openssh/sshd-sysusers.conf \ + $(TARGET_DIR)/usr/lib/sysusers.d/sshd.conf +endef +else +define OPENSSH_USERS + sshd -1 sshd -1 * /var/empty - - SSH drop priv user +endef +endif + +# Let the default install rule only install the configuration file. +# The programs will be installed based on the config options selected. +OPENSSH_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-sysconf + +ifeq ($(BR2_PACKAGE_OPENSSH_CLIENT),y) +define OPENSSH_INSTALL_CLIENT_PROGRAMS + $(INSTALL) -D -m 0755 $(@D)/ssh $(TARGET_DIR)/usr/bin/ssh + $(INSTALL) -D -m 0755 $(@D)/scp $(TARGET_DIR)/usr/bin/scp + $(INSTALL) -D -m 0755 $(@D)/sftp $(TARGET_DIR)/usr/bin/sftp + $(INSTALL) -D -m 0755 $(@D)/ssh-agent $(TARGET_DIR)/usr/bin/ssh-agent + $(INSTALL) -D -m 0755 $(@D)/ssh-add $(TARGET_DIR)/usr/bin/ssh-add + $(INSTALL) -D -m 4711 $(@D)/ssh-keysign $(TARGET_DIR)/usr/libexec/ssh-keysign + $(INSTALL) -D -m 0755 $(@D)/ssh-pkcs11-helper $(TARGET_DIR)/usr/libexec/ssh-pkcs11-helper + $(INSTALL) -D -m 0755 $(@D)/contrib/ssh-copy-id $(TARGET_DIR)/usr/bin/ssh-copy-id +endef +OPENSSH_POST_INSTALL_TARGET_HOOKS += OPENSSH_INSTALL_CLIENT_PROGRAMS +endif + +ifeq ($(BR2_PACKAGE_OPENSSH_SERVER),y) +define OPENSSH_INSTALL_SERVER_PROGRAMS + $(INSTALL) -D -m 0755 $(@D)/sshd $(TARGET_DIR)/usr/sbin/sshd + $(INSTALL) -D -m 0755 $(@D)/sshd-session $(TARGET_DIR)/usr/libexec/sshd-session + $(INSTALL) -D -m 0755 $(@D)/sftp-server $(TARGET_DIR)/usr/libexec/sftp-server +endef +OPENSSH_POST_INSTALL_TARGET_HOOKS += OPENSSH_INSTALL_SERVER_PROGRAMS + +define OPENSSH_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/openssh/sshd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/sshd.service + $(OPENSSH_INSTALL_SYSTEMD_SYSUSERS) +endef + +define OPENSSH_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/openssh/S50sshd \ + $(TARGET_DIR)/etc/init.d/S50sshd +endef +endif + +ifeq ($(BR2_PACKAGE_OPENSSH_KEY_UTILS),y) +define OPENSSH_INSTALL_KEY_UTILS + $(INSTALL) -D -m 0755 $(@D)/ssh-keygen $(TARGET_DIR)/usr/bin/ssh-keygen + $(INSTALL) -D -m 0755 $(@D)/ssh-keyscan $(TARGET_DIR)/usr/bin/ssh-keyscan +endef +OPENSSH_POST_INSTALL_TARGET_HOOKS += OPENSSH_INSTALL_KEY_UTILS +endif + +$(eval $(autotools-package)) diff --git a/package/openssh/sshd-sysusers.conf b/package/openssh/sshd-sysusers.conf new file mode 100644 index 00000000..ac77aec0 --- /dev/null +++ b/package/openssh/sshd-sysusers.conf @@ -0,0 +1 @@ +u sshd - "SSH drop priv user" /var/empty diff --git a/package/openssh/sshd.service b/package/openssh/sshd.service new file mode 100644 index 00000000..b5e96b3a --- /dev/null +++ b/package/openssh/sshd.service @@ -0,0 +1,11 @@ +[Unit] +Description=OpenSSH server daemon +After=syslog.target network.target auditd.service + +[Service] +ExecStartPre=/usr/bin/ssh-keygen -A +ExecStart=/usr/sbin/sshd -D -e +ExecReload=/bin/kill -HUP $MAINPID + +[Install] +WantedBy=multi-user.target diff --git a/package/openssl/Config.in b/package/openssl/Config.in new file mode 100644 index 00000000..d255a055 --- /dev/null +++ b/package/openssl/Config.in @@ -0,0 +1,79 @@ +config BR2_PACKAGE_LIBRESSL_ARCH_SUPPORTS + bool + # see include/CMakeLists.txt + default y if BR2_aarch64 || BR2_aarch64_be + default y if BR2_arm || BR2_armeb + default y if BR2_i386 || BR2_x86_64 + default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + default y if BR2_RISCV_64 + default y if BR2_sparc64 + +config BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + bool + +config BR2_PACKAGE_OPENSSL + bool "openssl support" + select BR2_PACKAGE_HAS_OPENSSL + help + Select the desired ssl library provider. + +if BR2_PACKAGE_OPENSSL + +choice + prompt "ssl library" + help + Select OpenSSL or LibreSSL. + +config BR2_PACKAGE_LIBOPENSSL + bool "openssl" + select BR2_PACKAGE_ZLIB + help + A collaborative effort to develop a robust, commercial-grade, + fully featured, and Open Source toolkit implementing the + Secure Sockets Layer (SSL v2/v3) and Transport Security + (TLS v1) as well as a full-strength general-purpose + cryptography library. + + https://openssl-library.org/ + + Note: Some helper scripts need perl. + +source "package/libopenssl/Config.in" + +config BR2_PACKAGE_LIBRESSL + bool "libressl" + depends on BR2_PACKAGE_LIBRESSL_ARCH_SUPPORTS + depends on !BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + depends on BR2_TOOLCHAIN_HAS_THREADS + # uClibc doesn't provide __register_atfork() without NPTL + depends on !BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_HAS_THREADS_NPTL + help + LibreSSL is a version of the TLS/crypto stack forked from + OpenSSL in 2014, with goals of modernizing the codebase, + improving security, and applying best practice development + processes. + + http://www.libressl.org/ + +source "package/libressl/Config.in" + +# openssl from br2-external trees, if any +source "$BR2_BASE_DIR/.br2-external.in.openssl" + +endchoice + +config BR2_PACKAGE_HAS_OPENSSL + bool + +config BR2_PACKAGE_PROVIDES_OPENSSL + string + default "libopenssl" if BR2_PACKAGE_LIBOPENSSL + default "libressl" if BR2_PACKAGE_LIBRESSL + +endif + +# ensure libopenssl is used for the host variant +config BR2_PACKAGE_PROVIDES_HOST_OPENSSL + string + default "host-libopenssl" diff --git a/package/openssl/openssl.mk b/package/openssl/openssl.mk new file mode 100644 index 00000000..d20e184c --- /dev/null +++ b/package/openssl/openssl.mk @@ -0,0 +1,8 @@ +################################################################################ +# +# openssl +# +################################################################################ + +$(eval $(virtual-package)) +$(eval $(host-virtual-package)) diff --git a/package/openswan/0001-lib-libopenswan-constants.c-workaround-missing-ns_t_.patch b/package/openswan/0001-lib-libopenswan-constants.c-workaround-missing-ns_t_.patch new file mode 100644 index 00000000..ea50dd11 --- /dev/null +++ b/package/openswan/0001-lib-libopenswan-constants.c-workaround-missing-ns_t_.patch @@ -0,0 +1,29 @@ +From 66f8abe037970dda50fbc460edb2a2fa9f391d8a Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 3 Aug 2022 19:14:25 +0200 +Subject: [PATCH] lib/libopenswan/constants.c: workaround missing ns_t_tkey + definition in uClibc < 1.0.41 + +Signed-off-by: Thomas Petazzoni +--- + lib/libopenswan/constants.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/lib/libopenswan/constants.c b/lib/libopenswan/constants.c +index 90c973b5f..04e68da42 100644 +--- a/lib/libopenswan/constants.c ++++ b/lib/libopenswan/constants.c +@@ -1411,7 +1411,9 @@ static const char *const rr_qtype_name[] = { + NULL + }; + +-enum_names rr_qtype_names = { ns_t_tkey, ns_t_any ++/* ns_t_tkey is 249, but its definition is missing from uClibc < ++ * 1.0.41, so let's hardcode it */ ++enum_names rr_qtype_names = { 249 /* ns_t_tkey */, ns_t_any + , rr_qtype_name, &rr_type_names }; + + static const char *const rr_class_name[] = { +-- +2.37.1 + diff --git a/package/openswan/Config.in b/package/openswan/Config.in new file mode 100644 index 00000000..31c4a66b --- /dev/null +++ b/package/openswan/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_OPENSWAN + bool "openswan" + depends on BR2_USE_MMU # iproute2 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # iproute2 + select BR2_PACKAGE_GMP + select BR2_PACKAGE_IPROUTE2 + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + Openswan is an implementation of IPsec for Linux + + http://www.openswan.org + +comment "openswan needs a toolchain w/ headers >= 3.4" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 diff --git a/package/openswan/openswan.hash b/package/openswan/openswan.hash new file mode 100644 index 00000000..574009eb --- /dev/null +++ b/package/openswan/openswan.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 69fe7a71e54aaf0ea93b874db4963057c1ff4904b3617b36f2c9be2010c23331 openswan-3.0.0.tar.gz +sha256 1c36ae1e7b0f6cce4b4ffe969b71f83635734804acdd38544443564b00f8783a COPYING +sha256 d7d012ef3be47faffba4d97a83d4986c9f4a63ac997ebf5961d33852e5f1801a LICENSE diff --git a/package/openswan/openswan.mk b/package/openswan/openswan.mk new file mode 100644 index 00000000..64218810 --- /dev/null +++ b/package/openswan/openswan.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# openswan +# +################################################################################ + +OPENSWAN_VERSION = 3.0.0 +OPENSWAN_SITE = $(call github,xelerance,Openswan,v$(OPENSWAN_VERSION)) +OPENSWAN_LICENSE = GPL-2.0+, BSD-3-Clause +OPENSWAN_LICENSE_FILES = COPYING LICENSE +OPENSWAN_CPE_ID_VENDOR = xelerance + +OPENSWAN_DEPENDENCIES = host-bison host-flex gmp iproute2 +OPENSWAN_MAKE_OPTS = ARCH=$(BR2_ARCH) CC="$(TARGET_CC)" POD2MAN="" XMLTO="" \ + USERCOMPILE="$(TARGET_CFLAGS) $(if $(BR2_TOOLCHAIN_SUPPORTS_PIE),-fPIE)" \ + USERLINK="$(TARGET_LDFLAGS) $(if $(BR2_TOOLCHAIN_SUPPORTS_PIE),-fPIE)" \ + INC_USRLOCAL=/usr USE_KLIPS=false USE_MAST=false USE_NM=false \ + USE_NOMANINSTALL=true WERROR="" + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +OPENSWAN_DEPENDENCIES += libcurl +OPENSWAN_MAKE_OPTS += USE_LIBCURL=true +endif + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +OPENSWAN_DEPENDENCIES += libxcrypt +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +OPENSWAN_DEPENDENCIES += openssl +OPENSWAN_MAKE_OPTS += HAVE_OPENSSL=true +endif + +define OPENSWAN_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) \ + $(OPENSWAN_MAKE_OPTS) programs +endef + +define OPENSWAN_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) \ + $(OPENSWAN_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/opentracing-cpp/Config.in b/package/opentracing-cpp/Config.in new file mode 100644 index 00000000..ff3067b7 --- /dev/null +++ b/package/opentracing-cpp/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_OPENTRACING_CPP + bool "opentracing-cpp" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr + help + OpenTracing API for C++ + + http://opentracing.io + +comment "opentracing-cpp needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.8" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \ + || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +comment "opentracing-cpp needs exception_ptr" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/opentracing-cpp/opentracing-cpp.hash b/package/opentracing-cpp/opentracing-cpp.hash new file mode 100644 index 00000000..8cfaf5fd --- /dev/null +++ b/package/opentracing-cpp/opentracing-cpp.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 5b170042da4d1c4c231df6594da120875429d5231e9baa5179822ee8d1054ac3 opentracing-cpp-1.6.0.tar.gz +sha256 076d03156735d5ff2df2ea0f8b12351ef65e5e9222b5c8c6a35101dadb41e717 LICENSE diff --git a/package/opentracing-cpp/opentracing-cpp.mk b/package/opentracing-cpp/opentracing-cpp.mk new file mode 100644 index 00000000..12ce40fb --- /dev/null +++ b/package/opentracing-cpp/opentracing-cpp.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# opentracing-cpp +# +################################################################################ + +OPENTRACING_CPP_VERSION = 1.6.0 +OPENTRACING_CPP_SITE = \ + $(call github,opentracing,opentracing-cpp,v$(OPENTRACING_CPP_VERSION)) +OPENTRACING_CPP_LICENSE = Apache-2.0 +OPENTRACING_CPP_LICENSE_FILES = LICENSE + +OPENTRACING_CPP_INSTALL_STAGING = YES + +# BUILD_SHARED_LIBS is handled in pkg-cmake.mk as it is a generic cmake variable +# although BUILD_STATIC_LIBS=ON is default, make it explicit, +# cmake and static/shared libs is confusing enough already. +ifeq ($(BR2_STATIC_LIBS),y) +OPENTRACING_CPP_CONF_OPTS += -DBUILD_STATIC_LIBS=ON +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +OPENTRACING_CPP_CONF_OPTS += -DBUILD_STATIC_LIBS=ON +else ifeq ($(BR2_SHARED_LIBS),y) +OPENTRACING_CPP_CONF_OPTS += -DBUILD_STATIC_LIBS=OFF +endif + +OPENTRACING_CPP_CONF_OPTS += -DENABLE_LINTING=OFF + +$(eval $(cmake-package)) diff --git a/package/opentyrian-data/Config.in b/package/opentyrian-data/Config.in new file mode 100644 index 00000000..c0698c29 --- /dev/null +++ b/package/opentyrian-data/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_OPENTYRIAN_DATA + bool "OpenTyrian data" + depends on BR2_PACKAGE_OPENTYRIAN + help + Data files to use with OpenTyrian game. Currently only the + original Tyrian 2.1 data files, that have been released as + Freeware in 2004, are compatible. + + https://bitbucket.org/opentyrian/opentyrian/wiki/Home diff --git a/package/opentyrian-data/opentyrian-data.hash b/package/opentyrian-data/opentyrian-data.hash new file mode 100644 index 00000000..26e5db1d --- /dev/null +++ b/package/opentyrian-data/opentyrian-data.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 7790d09a2a3addcd33c66ef063d5900eb81cc9c342f4807eb8356364dd1d9277 tyrian21.zip diff --git a/package/opentyrian-data/opentyrian-data.mk b/package/opentyrian-data/opentyrian-data.mk new file mode 100644 index 00000000..9e38b61b --- /dev/null +++ b/package/opentyrian-data/opentyrian-data.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# opentyrian-data +# +################################################################################ + +OPENTYRIAN_DATA_VERSION = 2.1 +OPENTYRIAN_DATA_SITE = http://www.camanis.net/opentyrian +OPENTYRIAN_DATA_SOURCE = tyrian21.zip +OPENTYRIAN_DATA_LICENSE = Freeware + +define OPENTYRIAN_DATA_EXTRACT_CMDS + $(UNZIP) -d $(@D) $(OPENTYRIAN_DATA_DL_DIR)/$(OPENTYRIAN_DATA_SOURCE) +endef + +define OPENTYRIAN_DATA_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/share/opentyrian/data/ + cp $(@D)/tyrian21/* $(TARGET_DIR)/usr/share/opentyrian/data/ + rm -f $(TARGET_DIR)/usr/share/opentyrian/data/*.doc + rm -f $(TARGET_DIR)/usr/share/opentyrian/data/*.exe +endef + +$(eval $(generic-package)) diff --git a/package/opentyrian/0001-Move-definitions-that-don-t-need-to-be-exposed-from-opl-h-to-opl-c.patch b/package/opentyrian/0001-Move-definitions-that-don-t-need-to-be-exposed-from-opl-h-to-opl-c.patch new file mode 100644 index 00000000..f41758ce --- /dev/null +++ b/package/opentyrian/0001-Move-definitions-that-don-t-need-to-be-exposed-from-opl-h-to-opl-c.patch @@ -0,0 +1,365 @@ +From 962ee8fc46ca51691bde1c8c1022dacbe8a037ed Mon Sep 17 00:00:00 2001 +From: Carl Reinke +Date: Sun, 14 Jun 2020 14:11:00 -0600 +Subject: [PATCH] Move definitions that don't need to be exposed from opl.h to + opl.c + +[Retrieved from: +https://github.com/opentyrian/opentyrian/commit/962ee8fc46ca51691bde1c8c1022dacbe8a037ed] +Signed-off-by: Fabrice Fontaine +--- + src/opl.c | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++- + src/opl.h | 157 ++---------------------------------------------------- + 2 files changed, 154 insertions(+), 156 deletions(-) + +diff --git a/src/opl.c b/src/opl.c +index a4071c5..f15474c 100644 +--- a/src/opl.c ++++ b/src/opl.c +@@ -23,12 +23,161 @@ + * Copyright (C) 1998-2001 Ken Silverman + * Ken Silverman's official web site: "http://www.advsys.net/ken" + */ +- ++#include "opl.h" + + #include ++#include + #include // rand() + #include // memset() +-#include "opl.h" ++ ++#define fltype double ++ ++ /* ++ define attribution that inlines/forces inlining of a function (optional) ++ */ ++#define OPL_INLINE inline ++ ++ ++#undef NUM_CHANNELS ++#if defined(OPLTYPE_IS_OPL3) ++#define NUM_CHANNELS 18 ++#else ++#define NUM_CHANNELS 9 ++#endif ++ ++#define MAXOPERATORS (NUM_CHANNELS*2) ++ ++ ++#define FL05 ((fltype)0.5) ++#define FL2 ((fltype)2.0) ++#define PI ((fltype)3.1415926535897932384626433832795) ++ ++ ++#define FIXEDPT 0x10000 // fixed-point calculations using 16+16 ++#define FIXEDPT_LFO 0x1000000 // fixed-point calculations using 8+24 ++ ++#define WAVEPREC 1024 // waveform precision (10 bits) ++ ++#define INTFREQU ((fltype)(14318180.0 / 288.0)) // clocking of the chip ++ ++ ++#define OF_TYPE_ATT 0 ++#define OF_TYPE_DEC 1 ++#define OF_TYPE_REL 2 ++#define OF_TYPE_SUS 3 ++#define OF_TYPE_SUS_NOKEEP 4 ++#define OF_TYPE_OFF 5 ++ ++#define ARC_CONTROL 0x00 ++#define ARC_TVS_KSR_MUL 0x20 ++#define ARC_KSL_OUTLEV 0x40 ++#define ARC_ATTR_DECR 0x60 ++#define ARC_SUSL_RELR 0x80 ++#define ARC_FREQ_NUM 0xa0 ++#define ARC_KON_BNUM 0xb0 ++#define ARC_PERC_MODE 0xbd ++#define ARC_FEEDBACK 0xc0 ++#define ARC_WAVE_SEL 0xe0 ++ ++#define ARC_SECONDSET 0x100 // second operator set for OPL3 ++ ++ ++#define OP_ACT_OFF 0x00 ++#define OP_ACT_NORMAL 0x01 // regular channel activated (bitmasked) ++#define OP_ACT_PERC 0x02 // percussion channel activated (bitmasked) ++ ++#define BLOCKBUF_SIZE 512 ++ ++ ++ // vibrato constants ++#define VIBTAB_SIZE 8 ++#define VIBFAC 70/50000 // no braces, integer mul/div ++ ++ // tremolo constants and table ++#define TREMTAB_SIZE 53 ++#define TREM_FREQ ((fltype)(3.7)) // tremolo at 3.7hz ++ ++ ++ /* operator struct definition ++ For OPL2 all 9 channels consist of two operators each, carrier and modulator. ++ Channel x has operators x as modulator and operators (9+x) as carrier. ++ For OPL3 all 18 channels consist either of two operators (2op mode) or four ++ operators (4op mode) which is determined through register4 of the second ++ adlib register set. ++ Only the channels 0,1,2 (first set) and 9,10,11 (second set) can act as ++ 4op channels. The two additional operators for a channel y come from the ++ 2op channel y+3 so the operatorss y, (9+y), y+3, (9+y)+3 make up a 4op ++ channel. ++ */ ++typedef struct operator_struct { ++ Bit32s cval, lastcval; // current output/last output (used for feedback) ++ Bit32u tcount, wfpos, tinc; // time (position in waveform) and time increment ++ fltype amp, step_amp; // and amplification (envelope) ++ fltype vol; // volume ++ fltype sustain_level; // sustain level ++ Bit32s mfbi; // feedback amount ++ fltype a0, a1, a2, a3; // attack rate function coefficients ++ fltype decaymul, releasemul; // decay/release rate functions ++ Bit32u op_state; // current state of operator (attack/decay/sustain/release/off) ++ Bit32u toff; ++ Bit32s freq_high; // highest three bits of the frequency, used for vibrato calculations ++ Bit16s* cur_wform; // start of selected waveform ++ Bit32u cur_wmask; // mask for selected waveform ++ Bit32u act_state; // activity state (regular, percussion) ++ bool sus_keep; // keep sustain level when decay finished ++ bool vibrato,tremolo; // vibrato/tremolo enable bits ++ ++ // variables used to provide non-continuous envelopes ++ Bit32u generator_pos; // for non-standard sample rates we need to determine how many samples have passed ++ Bits cur_env_step; // current (standardized) sample position ++ Bits env_step_a,env_step_d,env_step_r; // number of std samples of one step (for attack/decay/release mode) ++ Bit8u step_skip_pos_a; // position of 8-cyclic step skipping (always 2^x to check against mask) ++ Bits env_step_skip_a; // bitmask that determines if a step is skipped (respective bit is zero then) ++ ++#if defined(OPLTYPE_IS_OPL3) ++ bool is_4op,is_4op_attached; // base of a 4op channel/part of a 4op channel ++ Bit32s left_pan,right_pan; // opl3 stereo panning amount ++#endif ++} op_type; ++ ++// per-chip variables ++static op_type op[MAXOPERATORS]; ++ ++static Bits int_samplerate; ++ ++static Bit8u status; ++static Bit32u opl_index; ++#if defined(OPLTYPE_IS_OPL3) ++static Bit8u adlibreg[512]; // adlib register set (including second set) ++static Bit8u wave_sel[44]; // waveform selection ++#else ++static Bit8u adlibreg[256]; // adlib register set ++static Bit8u wave_sel[22]; // waveform selection ++#endif ++ ++ ++ // vibrato/tremolo increment/counter ++static Bit32u vibtab_pos; ++static Bit32u vibtab_add; ++static Bit32u tremtab_pos; ++static Bit32u tremtab_add; ++ ++ ++// enable an operator ++void enable_operator(Bitu regbase, op_type* op_pt, Bit32u act_type); ++ ++// functions to change parameters of an operator ++void change_frequency(Bitu chanbase, Bitu regbase, op_type* op_pt); ++ ++void change_attackrate(Bitu regbase, op_type* op_pt); ++void change_decayrate(Bitu regbase, op_type* op_pt); ++void change_releaserate(Bitu regbase, op_type* op_pt); ++void change_sustainlevel(Bitu regbase, op_type* op_pt); ++void change_waveform(Bitu regbase, op_type* op_pt); ++void change_keepsustain(Bitu regbase, op_type* op_pt); ++void change_vibrato(Bitu regbase, op_type* op_pt); ++void change_feedback(Bitu chanbase, op_type* op_pt); ++ + + static Bit32u generator_add; // should be a chip parameter + +diff --git a/src/opl.h b/src/opl.h +index c8e643b..cbb56ad 100644 +--- a/src/opl.h ++++ b/src/opl.h +@@ -25,11 +25,8 @@ + * Ken Silverman's official web site: "http://www.advsys.net/ken" + */ + +- +-#define fltype double +- +-#include + #include ++ + typedef uintptr_t Bitu; + typedef intptr_t Bits; + typedef uint32_t Bit32u; +@@ -39,154 +36,6 @@ typedef int16_t Bit16s; + typedef uint8_t Bit8u; + typedef int8_t Bit8s; + +- +-/* +- define attribution that inlines/forces inlining of a function (optional) +-*/ +-#define OPL_INLINE inline +- +- +-#undef NUM_CHANNELS +-#if defined(OPLTYPE_IS_OPL3) +-#define NUM_CHANNELS 18 +-#else +-#define NUM_CHANNELS 9 +-#endif +- +-#define MAXOPERATORS (NUM_CHANNELS*2) +- +- +-#define FL05 ((fltype)0.5) +-#define FL2 ((fltype)2.0) +-#define PI ((fltype)3.1415926535897932384626433832795) +- +- +-#define FIXEDPT 0x10000 // fixed-point calculations using 16+16 +-#define FIXEDPT_LFO 0x1000000 // fixed-point calculations using 8+24 +- +-#define WAVEPREC 1024 // waveform precision (10 bits) +- +-#define INTFREQU ((fltype)(14318180.0 / 288.0)) // clocking of the chip +- +- +-#define OF_TYPE_ATT 0 +-#define OF_TYPE_DEC 1 +-#define OF_TYPE_REL 2 +-#define OF_TYPE_SUS 3 +-#define OF_TYPE_SUS_NOKEEP 4 +-#define OF_TYPE_OFF 5 +- +-#define ARC_CONTROL 0x00 +-#define ARC_TVS_KSR_MUL 0x20 +-#define ARC_KSL_OUTLEV 0x40 +-#define ARC_ATTR_DECR 0x60 +-#define ARC_SUSL_RELR 0x80 +-#define ARC_FREQ_NUM 0xa0 +-#define ARC_KON_BNUM 0xb0 +-#define ARC_PERC_MODE 0xbd +-#define ARC_FEEDBACK 0xc0 +-#define ARC_WAVE_SEL 0xe0 +- +-#define ARC_SECONDSET 0x100 // second operator set for OPL3 +- +- +-#define OP_ACT_OFF 0x00 +-#define OP_ACT_NORMAL 0x01 // regular channel activated (bitmasked) +-#define OP_ACT_PERC 0x02 // percussion channel activated (bitmasked) +- +-#define BLOCKBUF_SIZE 512 +- +- +-// vibrato constants +-#define VIBTAB_SIZE 8 +-#define VIBFAC 70/50000 // no braces, integer mul/div +- +-// tremolo constants and table +-#define TREMTAB_SIZE 53 +-#define TREM_FREQ ((fltype)(3.7)) // tremolo at 3.7hz +- +- +-/* operator struct definition +- For OPL2 all 9 channels consist of two operators each, carrier and modulator. +- Channel x has operators x as modulator and operators (9+x) as carrier. +- For OPL3 all 18 channels consist either of two operators (2op mode) or four +- operators (4op mode) which is determined through register4 of the second +- adlib register set. +- Only the channels 0,1,2 (first set) and 9,10,11 (second set) can act as +- 4op channels. The two additional operators for a channel y come from the +- 2op channel y+3 so the operatorss y, (9+y), y+3, (9+y)+3 make up a 4op +- channel. +-*/ +-typedef struct operator_struct { +- Bit32s cval, lastcval; // current output/last output (used for feedback) +- Bit32u tcount, wfpos, tinc; // time (position in waveform) and time increment +- fltype amp, step_amp; // and amplification (envelope) +- fltype vol; // volume +- fltype sustain_level; // sustain level +- Bit32s mfbi; // feedback amount +- fltype a0, a1, a2, a3; // attack rate function coefficients +- fltype decaymul, releasemul; // decay/release rate functions +- Bit32u op_state; // current state of operator (attack/decay/sustain/release/off) +- Bit32u toff; +- Bit32s freq_high; // highest three bits of the frequency, used for vibrato calculations +- Bit16s* cur_wform; // start of selected waveform +- Bit32u cur_wmask; // mask for selected waveform +- Bit32u act_state; // activity state (regular, percussion) +- bool sus_keep; // keep sustain level when decay finished +- bool vibrato,tremolo; // vibrato/tremolo enable bits +- +- // variables used to provide non-continuous envelopes +- Bit32u generator_pos; // for non-standard sample rates we need to determine how many samples have passed +- Bits cur_env_step; // current (standardized) sample position +- Bits env_step_a,env_step_d,env_step_r; // number of std samples of one step (for attack/decay/release mode) +- Bit8u step_skip_pos_a; // position of 8-cyclic step skipping (always 2^x to check against mask) +- Bits env_step_skip_a; // bitmask that determines if a step is skipped (respective bit is zero then) +- +-#if defined(OPLTYPE_IS_OPL3) +- bool is_4op,is_4op_attached; // base of a 4op channel/part of a 4op channel +- Bit32s left_pan,right_pan; // opl3 stereo panning amount +-#endif +-} op_type; +- +-// per-chip variables +-Bitu chip_num; +-op_type op[MAXOPERATORS]; +- +-Bits int_samplerate; +- +-Bit8u status; +-Bit32u opl_index; +-#if defined(OPLTYPE_IS_OPL3) +-Bit8u adlibreg[512]; // adlib register set (including second set) +-Bit8u wave_sel[44]; // waveform selection +-#else +-Bit8u adlibreg[256]; // adlib register set +-Bit8u wave_sel[22]; // waveform selection +-#endif +- +- +-// vibrato/tremolo increment/counter +-Bit32u vibtab_pos; +-Bit32u vibtab_add; +-Bit32u tremtab_pos; +-Bit32u tremtab_add; +- +- +-// enable an operator +-void enable_operator(Bitu regbase, op_type* op_pt, Bit32u act_type); +- +-// functions to change parameters of an operator +-void change_frequency(Bitu chanbase, Bitu regbase, op_type* op_pt); +- +-void change_attackrate(Bitu regbase, op_type* op_pt); +-void change_decayrate(Bitu regbase, op_type* op_pt); +-void change_releaserate(Bitu regbase, op_type* op_pt); +-void change_sustainlevel(Bitu regbase, op_type* op_pt); +-void change_waveform(Bitu regbase, op_type* op_pt); +-void change_keepsustain(Bitu regbase, op_type* op_pt); +-void change_vibrato(Bitu regbase, op_type* op_pt); +-void change_feedback(Bitu chanbase, op_type* op_pt); +- + // general functions + void adlib_init(Bit32u samplerate); + void adlib_write(Bitu idx, Bit8u val); +@@ -195,8 +44,8 @@ void adlib_getsample(Bit16s* sndptr, Bits numsamples); + Bitu adlib_reg_read(Bitu port); + void adlib_write_index(Bitu port, Bit8u val); + +-#endif /* OPL_H */ +- + #define opl_init() adlib_init(OUTPUT_QUALITY * 11025) + #define opl_write(reg, val) adlib_write(reg, val) + #define opl_update(buf, num) adlib_getsample(buf, num) ++ ++#endif /* OPL_H */ diff --git a/package/opentyrian/Config.in b/package/opentyrian/Config.in new file mode 100644 index 00000000..cbc73e5d --- /dev/null +++ b/package/opentyrian/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_OPENTYRIAN + bool "OpenTyrian" + select BR2_PACKAGE_SDL + select BR2_PACKAGE_OPENTYRIAN_DATA + help + OpenTyrian is a port of the DOS shoot-em-up Tyrian. It uses + SDL, making it easily cross-platform. + It requires the original data files to run. + A display with minimum 640x480 resolution and a keyboard are + needed to play the game. + If you want some sound, activate ALSA with OSS emulation. + + https://bitbucket.org/opentyrian/opentyrian/wiki/Home + +if BR2_PACKAGE_OPENTYRIAN + +config BR2_PACKAGE_OPENTYRIAN_NET + bool "network support" + default y + select BR2_PACKAGE_SDL_NET + help + Activates network support in OpenTyrian. Will add SDL_net. + +endif diff --git a/package/opentyrian/opentyrian.hash b/package/opentyrian/opentyrian.hash new file mode 100644 index 00000000..0d1f4927 --- /dev/null +++ b/package/opentyrian/opentyrian.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 2b0db65c735cc099279ea3da6d9b76f791633897cd0f5b67528f70de0758a944 opentyrian-cf5dbeb69eebd9ef9afc4473088d9469b79589eb.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/opentyrian/opentyrian.mk b/package/opentyrian/opentyrian.mk new file mode 100644 index 00000000..69032333 --- /dev/null +++ b/package/opentyrian/opentyrian.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# opentyrian +# +################################################################################ + +OPENTYRIAN_VERSION = cf5dbeb69eebd9ef9afc4473088d9469b79589eb +OPENTYRIAN_SITE = $(call github,opentyrian,opentyrian,$(OPENTYRIAN_VERSION)) +OPENTYRIAN_LICENSE = GPL-2.0+ +OPENTYRIAN_LICENSE_FILES = COPYING + +OPENTYRIAN_DEPENDENCIES = sdl + +ifeq ($(BR2_PACKAGE_OPENTYRIAN_NET),y) +OPENTYRIAN_DEPENDENCIES += sdl_net +OPENTYRIAN_NETWORK = true +else +OPENTYRIAN_NETWORK = false +endif + +define OPENTYRIAN_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) PLATFORM=UNIX \ + CC="$(TARGET_CC)" \ + STRIP="/bin/true" \ + SDL_CONFIG="$(STAGING_DIR)/usr/bin/sdl-config" \ + LDFLAGS="$(TARGET_LDFLAGS) -lm" \ + WITH_NETWORK="$(OPENTYRIAN_NETWORK)" \ + -C $(@D) release +endef + +define OPENTYRIAN_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/opentyrian $(TARGET_DIR)/usr/bin/opentyrian +endef + +$(eval $(generic-package)) diff --git a/package/openvmtools/0001-no_cflags_werror.patch b/package/openvmtools/0001-no_cflags_werror.patch new file mode 100644 index 00000000..3378cb8e --- /dev/null +++ b/package/openvmtools/0001-no_cflags_werror.patch @@ -0,0 +1,18 @@ +configure.ac: disable -Werror + +Disable the mandatory flag -Werror in configure.ac. + +Signed-off-by: Karoly Kasza + +--- open-vm-tools/configure.ac 2015-06-17 10:02:00.000000000 +0200 ++++ open-vm-tools/configure.ac 2015-06-17 10:02:00.000000000 +0200 +@@ -935,7 +935,7 @@ + + ### General flags / actions + CFLAGS="$CFLAGS -Wall" +-CFLAGS="$CFLAGS -Werror" ++# CFLAGS="$CFLAGS -Werror" + + # -Wno-unknown-pragmas is due to gcc not understanding '#pragma ident' + # in Xlib.h on OpenSolaris. + diff --git a/package/openvmtools/0002-dont-force-cppflags.patch b/package/openvmtools/0002-dont-force-cppflags.patch new file mode 100644 index 00000000..eb2fe16b --- /dev/null +++ b/package/openvmtools/0002-dont-force-cppflags.patch @@ -0,0 +1,21 @@ +m4: do not force -I/usr/include in CPPFLAGS + +This is so horribly broken for cross-compilation. :-( + +Signed-off-by: "Yann E. MORIN" + +--- open-vm-tools/m4/vmtools.m4 2015-06-17 10:03:00.000000000 +0200 ++++ open-vm-tools/m4/vmtools.m4 2015-06-17 10:03:00.000000000 +0200 +@@ -281,10 +281,10 @@ + if test "$os" = freebsd; then + CUSTOM_$1_CPPFLAGS="-I/usr/local/include" + else +- CUSTOM_$1_CPPFLAGS="-I/usr/include" ++ CUSTOM_$1_CPPFLAGS=" " + fi + if test -n "$2"; then +- CUSTOM_$1_CPPFLAGS="${CUSTOM_$1_CPPFLAGS}/$2" ++ : CUSTOM_$1_CPPFLAGS="${CUSTOM_$1_CPPFLAGS}/$2" + fi + fi + ]) diff --git a/package/openvmtools/0003-Rename-poll-h-into-vm_poll-h-to-fix-build-failure-on-musl.patch b/package/openvmtools/0003-Rename-poll-h-into-vm_poll-h-to-fix-build-failure-on-musl.patch new file mode 100644 index 00000000..b4e94d87 --- /dev/null +++ b/package/openvmtools/0003-Rename-poll-h-into-vm_poll-h-to-fix-build-failure-on-musl.patch @@ -0,0 +1,813 @@ +From 1dfab46d367d11e9132506ee0f7d3eb2ceff5f3c Mon Sep 17 00:00:00 2001 +Message-Id: <1dfab46d367d11e9132506ee0f7d3eb2ceff5f3c.1652913832.git.stefan@agner.ch> +From: Fabrice Fontaine +Date: Mon, 30 Sep 2019 13:32:35 +0200 +Subject: [PATCH] Rename poll.h into vm_poll.h to fix build failure on musl +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +musl libc redirects include of sys/poll.h to poll.h. But since poll.h is +also a local header file, the musl libc header is never included. This +leads to the following build failure: + +In file included from asyncsocket.c:73:0: +.../host/i586-buildroot-linux-musl/sysroot/usr/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include to [-Wcpp] + #warning redirecting incorrect #include to +asyncsocket.c: In function ‘AsyncTCPSocketPollWork’: +asyncsocket.c:2537:13: error: invalid use of undefined type ‘struct pollfd’ + pfd[i].fd = asock[i]->fd; + ^ +asyncsocket.c:2537:13: error: dereferencing pointer to incomplete type ‘struct pollfd’ +asyncsocket.c:2538:13: error: invalid use of undefined type ‘struct pollfd’ + pfd[i].events = read ? POLLIN : POLLOUT; + ^ +asyncsocket.c:2538:33: error: ‘POLLIN’ undeclared (first use in this function); did you mean ‘POLL_IN’? + pfd[i].events = read ? POLLIN : POLLOUT; + +So rename poll.h into vm_poll.h as suggested by srowe in +https://github.com/vmware/open-vm-tools/issues/359#issuecomment-533529956 + +Fixes: + - http://autobuild.buildroot.org/results/4f575ef42bbc4387a07e396205052b2da081c64d + +Fix #359 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/vmware/open-vm-tools/pull/383] +--- + lib/asyncsocket/asyncsocket.c | 4 +- + lib/hgfsServer/hgfsServer.c | 2 +- + lib/include/asyncsocket.h | 2 +- + lib/include/poll.h | 337 -------------------- + lib/include/pollImpl.h | 2 +- + lib/include/vm_poll.h | 337 ++++++++++++++++++++ + lib/rpcIn/rpcin.c | 2 +- + 7 files changed, 343 insertions(+), 343 deletions(-) + delete mode 100644 lib/include/poll.h + create mode 100644 lib/include/vm_poll.h + +diff --git a/lib/asyncsocket/asyncsocket.c b/open-vm-tools/lib/asyncsocket/asyncsocket.c +index 05147d2e..16949567 100644 +--- a/lib/asyncsocket/asyncsocket.c ++++ b/lib/asyncsocket/asyncsocket.c +@@ -70,8 +70,8 @@ + #else + #include + #include ++#include + #include +-#include + #include + #include + #include +@@ -87,7 +87,7 @@ + #include "random.h" + #include "asyncsocket.h" + #include "asyncSocketBase.h" +-#include "poll.h" ++#include "vm_poll.h" + #include "log.h" + #include "err.h" + #include "hostinfo.h" +diff --git a/lib/hgfsServer/hgfsServer.c b/open-vm-tools/lib/hgfsServer/hgfsServer.c +index 98f5b3f0..b436f0c7 100644 +--- a/lib/hgfsServer/hgfsServer.c ++++ b/lib/hgfsServer/hgfsServer.c +@@ -51,7 +51,7 @@ + #include "hgfsDirNotify.h" + #include "hgfsThreadpool.h" + #include "userlock.h" +-#include "poll.h" ++#include "vm_poll.h" + #include "mutexRankLib.h" + #include "vm_basic_asm.h" + #include "unicodeOperations.h" +diff --git a/lib/include/asyncsocket.h b/open-vm-tools/lib/include/asyncsocket.h +index 47b5b873..b8b0149e 100644 +--- a/lib/include/asyncsocket.h ++++ b/lib/include/asyncsocket.h +@@ -171,7 +171,7 @@ typedef struct AsyncSocket AsyncSocket; + * Or the client can specify its favorite poll class and locking behavior. + * Use of IVmdbPoll is only supported for regular sockets and for Attach. + */ +-#include "poll.h" ++#include "vm_poll.h" + struct IVmdbPoll; + typedef struct AsyncSocketPollParams { + int flags; /* Default 0, only POLL_FLAG_NO_BULL is valid */ +diff --git a/lib/include/poll.h b/open-vm-tools/lib/include/poll.h +deleted file mode 100644 +index c90f5dcd..00000000 +--- a/lib/include/poll.h ++++ /dev/null +@@ -1,337 +0,0 @@ +-/********************************************************* +- * Copyright (C) 1998-2020 VMware, Inc. All rights reserved. +- * +- * This program is free software; you can redistribute it and/or modify it +- * under the terms of the GNU Lesser General Public License as published +- * by the Free Software Foundation version 2.1 and no 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 Lesser GNU General Public +- * License for more details. +- * +- * You should have received a copy of the GNU Lesser General Public License +- * along with this program; if not, write to the Free Software Foundation, Inc., +- * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +- * +- *********************************************************/ +- +-/********************************************************* +- * The contents of this file are subject to the terms of the Common +- * Development and Distribution License (the "License") version 1.0 +- * and no later version. You may not use this file except in +- * compliance with the License. +- * +- * You can obtain a copy of the License at +- * http://www.opensource.org/licenses/cddl1.php +- * +- * See the License for the specific language governing permissions +- * and limitations under the License. +- * +- *********************************************************/ +- +- +-#ifndef _POLL_H_ +-#define _POLL_H_ +- +-#define INCLUDE_ALLOW_USERLEVEL +-#define INCLUDE_ALLOW_VMCORE +-#include "includeCheck.h" +- +-#include "vm_basic_types.h" +-#include "vm_basic_defs.h" +-#include "vmware.h" +-#include "userlock.h" +- +-#if defined(__cplusplus) +-extern "C" { +-#endif +- +-#ifdef _WIN32 +-#define HZ 100 +-#elif defined __linux__ +-#include +-#elif __APPLE__ +-#include +-/* +- * Old SDKs don't define TARGET_OS_IPHONE at all. +- * New ones define it to 0 on Mac OS X, 1 on iOS. +- */ +-#if !defined(TARGET_OS_IPHONE) || TARGET_OS_IPHONE == 0 +-#include +-#endif +-#include +-#define HZ 100 +-#endif +-#ifdef __ANDROID__ +-/* +- * of android should be included, but its name is same +- * with this file. So its content is put here to avoid conflict. +- */ +-#include +-#define HZ 100 +-typedef unsigned int nfds_t; +-int poll(struct pollfd *, nfds_t, long); +-#endif +- +- +-/* +- * Poll event types: each type has a different reason for firing, +- * or condition that must be met before firing. +- */ +- +-typedef enum { +- /* +- * Actual Poll queue types against which you can register callbacks. +- */ +- POLL_VIRTUALREALTIME = -1, /* Negative because it doesn't have its own Q */ +- POLL_VTIME = 0, +- POLL_REALTIME, +- POLL_DEVICE, +- POLL_MAIN_LOOP, +- POLL_NUM_QUEUES +-} PollEventType; +- +- +-/* +- * Classes of events +- * +- * These are the predefined classes. More can be declared +- * with Poll_AllocClass(). +- */ +- +-typedef enum PollClass { +- POLL_CLASS_MAIN, +- POLL_CLASS_PAUSE, +- POLL_CLASS_IPC, +- POLL_CLASS_CPT, +- POLL_CLASS_MKS, +- POLL_FIXED_CLASSES, +- POLL_DEFAULT_FIXED_CLASSES, +- /* Size enum to maximum */ +- POLL_MAX_CLASSES = 31, +-} PollClass; +- +-/* +- * Do not use; Special pseudo private poll class supported by +- * PollDefault only +- */ +-#define POLL_DEFAULT_CLASS_NET POLL_FIXED_CLASSES +-#define POLL_DEFAULT_CS_NET PollClassSet_Singleton(POLL_DEFAULT_CLASS_NET) +- +-/* +- * Each callback is registered in a set of classes +- */ +- +-typedef struct PollClassSet { +- uintptr_t bits; +-} PollClassSet; +- +-/* An empty PollClassSet. */ +-static INLINE PollClassSet +-PollClassSet_Empty(void) +-{ +- PollClassSet set = { 0 }; +- return set; +-} +- +-/* A PollClassSet with the single member. */ +-static INLINE PollClassSet +-PollClassSet_Singleton(PollClass c) +-{ +- PollClassSet s = PollClassSet_Empty(); +- +- ASSERT_ON_COMPILE(POLL_MAX_CLASSES < sizeof s.bits * 8); +- ASSERT(c < POLL_MAX_CLASSES); +- +- s.bits = CONST3264U(1) << c; +- return s; +-} +- +-/* Combine two PollClassSets. */ +-static INLINE PollClassSet +-PollClassSet_Union(PollClassSet lhs, PollClassSet rhs) +-{ +- PollClassSet set; +- set.bits = lhs.bits | rhs.bits; +- return set; +-} +- +-/* Add single class to PollClassSet. */ +-static INLINE PollClassSet +-PollClassSet_Include(PollClassSet set, PollClass c) +-{ +- return PollClassSet_Union(set, PollClassSet_Singleton(c)); +-} +- +- +-#define POLL_CS_MAIN PollClassSet_Singleton(POLL_CLASS_MAIN) +-#define POLL_CS_PAUSE PollClassSet_Union(POLL_CS_MAIN, \ +- PollClassSet_Singleton(POLL_CLASS_PAUSE)) +-#define POLL_CS_CPT PollClassSet_Union(POLL_CS_PAUSE, \ +- PollClassSet_Singleton(POLL_CLASS_CPT)) +-#define POLL_CS_IPC PollClassSet_Union(POLL_CS_CPT, \ +- PollClassSet_Singleton(POLL_CLASS_IPC)) +-#define POLL_CS_VMDB POLL_CS_PAUSE /* POLL_CLASS_VMDB is retired */ +-#define POLL_CS_MKS PollClassSet_Singleton(POLL_CLASS_MKS) +-/* +- * DANGER. You don't need POLL_CS_ALWAYS. Really. So don't use it. +- */ +-#define POLL_CS_ALWAYS PollClassSet_Union(POLL_CS_CPT, POLL_CS_IPC) +- +-/* +- * Poll class-set taxonomy: +- * POLL_CS_MAIN +- * - Unless you NEED another class, use POLL_CS_MAIN. +- * POLL_CS_PAUSE +- * - For callbacks that must occur even if the guest is paused. +- * Most VMDB or Foundry commands are in this category. +- * POLL_CS_CPT +- * - Only for callbacks which can trigger intermediate Checkpoint +- * transitions. +- * The ONLY such callback is Migrate. +- * POLL_CS_IPC +- * - Only for callbacks which can contain Msg_(Post|Hint|Question) +- * responses, and for signal handlers (why)? +- * Vigor, VMDB, and Foundry can contain Msg_* responses. +- * POLL_CS_MKS +- * - Callback runs in MKS thread. +- * POLL_CS_ALWAYS +- * - Only for events that must be processed immediately. +- * The ONLY such callback is OvhdMemVmxSizeCheck. +- */ +- +- +-/* +- * Poll_Callback flags +- */ +- +-#define POLL_FLAG_PERIODIC 0x01 // keep after firing +-#define POLL_FLAG_REMOVE_AT_POWEROFF 0x02 // self-explanatory +-#define POLL_FLAG_READ 0x04 // device is ready for reading +-#define POLL_FLAG_WRITE 0x08 // device is ready for writing +-#define POLL_FLAG_SOCKET 0x10 // device is a Windows socket +-#define POLL_FLAG_NO_BULL 0x20 // callback does its own locking +-#define POLL_FLAG_WINSOCK 0x40 // Winsock style write events +-#define POLL_FLAG_FD 0x80 // device is a Windows file descriptor. +-#define POLL_FLAG_ACCEPT_INVALID_FDS 0x100 // For broken 3rd party libs, e.g. curl +-#define POLL_FLAG_THUNK_TO_WND 0x200 // thunk callback to window message loop +- +- +-typedef void (*PollerFunction)(void *clientData); +-typedef void (*PollerFireWrapper)(PollerFunction func, +- void *funcData, +- void *wrapperData); +-typedef Bool (*PollerErrorFn)(const char *errorStr); +- +-/* +- * Initialisers: +- * +- * For the sake of convenience, we declare the initialisers +- * for custom implmentations here, even though the actual +- * implementations are distinct from the core poll code. +- */ +- +- +-/* Socket pair created with non-blocking mode */ +-#define POLL_OPTIONS_SOCKET_PAIR_NONBLOCK_CONN 0x01 +- +-typedef unsigned int SocketSpecialOpts; +- +-typedef struct PollOptions { +- Bool locked; // Use internal MXUser for locking +- Bool allowFullQueue; // Don't assert when device event queue is full. +- VThreadID windowsMsgThread; // thread that processes Windows messages +- PollerFireWrapper fireWrapperFn; // optional; may be useful for stats +- void *fireWrapperData; // optional +- PollerErrorFn errorFn; // optional; called upon unrecoverable error +- SocketSpecialOpts pollSocketOpts; +-} PollOptions; +- +- +-void Poll_InitDefault(void); +-void Poll_InitDefaultEx(const PollOptions *opts); +-void Poll_InitGtk(void); // On top of glib for Linux +-void Poll_InitCF(void); // On top of CoreFoundation for OSX +- +- +-/* +- * Functions +- */ +-int Poll_SocketPair(Bool vmci, Bool stream, int fds[2], SocketSpecialOpts opts); +-void Poll_Loop(Bool loop, Bool *exit, PollClass c); +-void Poll_LoopTimeout(Bool loop, Bool *exit, PollClass c, int timeout); +-Bool Poll_LockingEnabled(void); +-void Poll_Exit(void); +- +- +-/* +- * Poll_Callback adds a callback regardless of whether an identical one exists. +- * The exception to this rule is POLL_DEVICE callbacks: there is a maximum of +- * one read and one write callback per fd. +- * +- * Poll_CallbackRemove removes one callback. If there are multiple identical +- * callbacks, which one is removed is an implementation detail. Note that in +- * the case of POLL_DEVICE and POLL_REALTIME callbacks, the fd/delay used to +- * create the callback is not specified when removing, so all callbacks +- * of those types with the same flags, function, and clientData are considered +- * "identical" even if their fd/delay differed. +- */ +- +-VMwareStatus Poll_Callback(PollClassSet classSet, +- int flags, +- PollerFunction f, +- void *clientData, +- PollEventType type, +- PollDevHandle info, // fd/microsec delay +- MXUserRecLock *lck); +-Bool Poll_CallbackRemove(PollClassSet classSet, +- int flags, +- PollerFunction f, +- void *clientData, +- PollEventType type); +-Bool Poll_CallbackRemoveOneByCB(PollClassSet classSet, +- int flags, +- PollerFunction f, +- PollEventType type, +- void **clientData); +- +-void Poll_NotifyChange(PollClassSet classSet); +- +-/* +- * Wrappers for Poll_Callback and Poll_CallbackRemove that present +- * simpler subsets of those interfaces. +- */ +- +-VMwareStatus Poll_CB_Device(PollerFunction f, +- void *clientData, +- PollDevHandle device, +- Bool periodic); +- +-Bool Poll_CB_DeviceRemove(PollerFunction f, +- void *clientData, +- Bool periodic); +- +- +-VMwareStatus Poll_CB_RTime(PollerFunction f, +- void *clientData, +- int64 delay, // microseconds +- Bool periodic, +- MXUserRecLock *lock); +- +-Bool Poll_CB_RTimeRemove(PollerFunction f, +- void *clientData, +- Bool periodic); +- +- +-#ifdef _WIN32 +-void Poll_SetPumpsWindowsMessages(Bool pumps); +-void Poll_SetWindowMessageRecipient(HWND hWnd, UINT msg, Bool alwaysThunk); +-Bool Poll_FireWndCallback(void *lparam); +-#endif +- +-#if defined(__cplusplus) +-} // extern "C" +-#endif +- +-#endif // _POLL_H_ +diff --git a/lib/include/pollImpl.h b/open-vm-tools/lib/include/pollImpl.h +index 46442e55..8bc66997 100644 +--- a/lib/include/pollImpl.h ++++ b/lib/include/pollImpl.h +@@ -44,7 +44,7 @@ + #define INCLUDE_ALLOW_USERLEVEL + #include "includeCheck.h" + +-#include "poll.h" ++#include "vm_poll.h" + #include "vm_basic_asm.h" + + #if defined(__cplusplus) +diff --git a/lib/include/vm_poll.h b/open-vm-tools/lib/include/vm_poll.h +new file mode 100644 +index 00000000..c90f5dcd +--- /dev/null ++++ b/lib/include/vm_poll.h +@@ -0,0 +1,337 @@ ++/********************************************************* ++ * Copyright (C) 1998-2020 VMware, Inc. All rights reserved. ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU Lesser General Public License as published ++ * by the Free Software Foundation version 2.1 and no 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 Lesser GNU General Public ++ * License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public License ++ * along with this program; if not, write to the Free Software Foundation, Inc., ++ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ *********************************************************/ ++ ++/********************************************************* ++ * The contents of this file are subject to the terms of the Common ++ * Development and Distribution License (the "License") version 1.0 ++ * and no later version. You may not use this file except in ++ * compliance with the License. ++ * ++ * You can obtain a copy of the License at ++ * http://www.opensource.org/licenses/cddl1.php ++ * ++ * See the License for the specific language governing permissions ++ * and limitations under the License. ++ * ++ *********************************************************/ ++ ++ ++#ifndef _POLL_H_ ++#define _POLL_H_ ++ ++#define INCLUDE_ALLOW_USERLEVEL ++#define INCLUDE_ALLOW_VMCORE ++#include "includeCheck.h" ++ ++#include "vm_basic_types.h" ++#include "vm_basic_defs.h" ++#include "vmware.h" ++#include "userlock.h" ++ ++#if defined(__cplusplus) ++extern "C" { ++#endif ++ ++#ifdef _WIN32 ++#define HZ 100 ++#elif defined __linux__ ++#include ++#elif __APPLE__ ++#include ++/* ++ * Old SDKs don't define TARGET_OS_IPHONE at all. ++ * New ones define it to 0 on Mac OS X, 1 on iOS. ++ */ ++#if !defined(TARGET_OS_IPHONE) || TARGET_OS_IPHONE == 0 ++#include ++#endif ++#include ++#define HZ 100 ++#endif ++#ifdef __ANDROID__ ++/* ++ * of android should be included, but its name is same ++ * with this file. So its content is put here to avoid conflict. ++ */ ++#include ++#define HZ 100 ++typedef unsigned int nfds_t; ++int poll(struct pollfd *, nfds_t, long); ++#endif ++ ++ ++/* ++ * Poll event types: each type has a different reason for firing, ++ * or condition that must be met before firing. ++ */ ++ ++typedef enum { ++ /* ++ * Actual Poll queue types against which you can register callbacks. ++ */ ++ POLL_VIRTUALREALTIME = -1, /* Negative because it doesn't have its own Q */ ++ POLL_VTIME = 0, ++ POLL_REALTIME, ++ POLL_DEVICE, ++ POLL_MAIN_LOOP, ++ POLL_NUM_QUEUES ++} PollEventType; ++ ++ ++/* ++ * Classes of events ++ * ++ * These are the predefined classes. More can be declared ++ * with Poll_AllocClass(). ++ */ ++ ++typedef enum PollClass { ++ POLL_CLASS_MAIN, ++ POLL_CLASS_PAUSE, ++ POLL_CLASS_IPC, ++ POLL_CLASS_CPT, ++ POLL_CLASS_MKS, ++ POLL_FIXED_CLASSES, ++ POLL_DEFAULT_FIXED_CLASSES, ++ /* Size enum to maximum */ ++ POLL_MAX_CLASSES = 31, ++} PollClass; ++ ++/* ++ * Do not use; Special pseudo private poll class supported by ++ * PollDefault only ++ */ ++#define POLL_DEFAULT_CLASS_NET POLL_FIXED_CLASSES ++#define POLL_DEFAULT_CS_NET PollClassSet_Singleton(POLL_DEFAULT_CLASS_NET) ++ ++/* ++ * Each callback is registered in a set of classes ++ */ ++ ++typedef struct PollClassSet { ++ uintptr_t bits; ++} PollClassSet; ++ ++/* An empty PollClassSet. */ ++static INLINE PollClassSet ++PollClassSet_Empty(void) ++{ ++ PollClassSet set = { 0 }; ++ return set; ++} ++ ++/* A PollClassSet with the single member. */ ++static INLINE PollClassSet ++PollClassSet_Singleton(PollClass c) ++{ ++ PollClassSet s = PollClassSet_Empty(); ++ ++ ASSERT_ON_COMPILE(POLL_MAX_CLASSES < sizeof s.bits * 8); ++ ASSERT(c < POLL_MAX_CLASSES); ++ ++ s.bits = CONST3264U(1) << c; ++ return s; ++} ++ ++/* Combine two PollClassSets. */ ++static INLINE PollClassSet ++PollClassSet_Union(PollClassSet lhs, PollClassSet rhs) ++{ ++ PollClassSet set; ++ set.bits = lhs.bits | rhs.bits; ++ return set; ++} ++ ++/* Add single class to PollClassSet. */ ++static INLINE PollClassSet ++PollClassSet_Include(PollClassSet set, PollClass c) ++{ ++ return PollClassSet_Union(set, PollClassSet_Singleton(c)); ++} ++ ++ ++#define POLL_CS_MAIN PollClassSet_Singleton(POLL_CLASS_MAIN) ++#define POLL_CS_PAUSE PollClassSet_Union(POLL_CS_MAIN, \ ++ PollClassSet_Singleton(POLL_CLASS_PAUSE)) ++#define POLL_CS_CPT PollClassSet_Union(POLL_CS_PAUSE, \ ++ PollClassSet_Singleton(POLL_CLASS_CPT)) ++#define POLL_CS_IPC PollClassSet_Union(POLL_CS_CPT, \ ++ PollClassSet_Singleton(POLL_CLASS_IPC)) ++#define POLL_CS_VMDB POLL_CS_PAUSE /* POLL_CLASS_VMDB is retired */ ++#define POLL_CS_MKS PollClassSet_Singleton(POLL_CLASS_MKS) ++/* ++ * DANGER. You don't need POLL_CS_ALWAYS. Really. So don't use it. ++ */ ++#define POLL_CS_ALWAYS PollClassSet_Union(POLL_CS_CPT, POLL_CS_IPC) ++ ++/* ++ * Poll class-set taxonomy: ++ * POLL_CS_MAIN ++ * - Unless you NEED another class, use POLL_CS_MAIN. ++ * POLL_CS_PAUSE ++ * - For callbacks that must occur even if the guest is paused. ++ * Most VMDB or Foundry commands are in this category. ++ * POLL_CS_CPT ++ * - Only for callbacks which can trigger intermediate Checkpoint ++ * transitions. ++ * The ONLY such callback is Migrate. ++ * POLL_CS_IPC ++ * - Only for callbacks which can contain Msg_(Post|Hint|Question) ++ * responses, and for signal handlers (why)? ++ * Vigor, VMDB, and Foundry can contain Msg_* responses. ++ * POLL_CS_MKS ++ * - Callback runs in MKS thread. ++ * POLL_CS_ALWAYS ++ * - Only for events that must be processed immediately. ++ * The ONLY such callback is OvhdMemVmxSizeCheck. ++ */ ++ ++ ++/* ++ * Poll_Callback flags ++ */ ++ ++#define POLL_FLAG_PERIODIC 0x01 // keep after firing ++#define POLL_FLAG_REMOVE_AT_POWEROFF 0x02 // self-explanatory ++#define POLL_FLAG_READ 0x04 // device is ready for reading ++#define POLL_FLAG_WRITE 0x08 // device is ready for writing ++#define POLL_FLAG_SOCKET 0x10 // device is a Windows socket ++#define POLL_FLAG_NO_BULL 0x20 // callback does its own locking ++#define POLL_FLAG_WINSOCK 0x40 // Winsock style write events ++#define POLL_FLAG_FD 0x80 // device is a Windows file descriptor. ++#define POLL_FLAG_ACCEPT_INVALID_FDS 0x100 // For broken 3rd party libs, e.g. curl ++#define POLL_FLAG_THUNK_TO_WND 0x200 // thunk callback to window message loop ++ ++ ++typedef void (*PollerFunction)(void *clientData); ++typedef void (*PollerFireWrapper)(PollerFunction func, ++ void *funcData, ++ void *wrapperData); ++typedef Bool (*PollerErrorFn)(const char *errorStr); ++ ++/* ++ * Initialisers: ++ * ++ * For the sake of convenience, we declare the initialisers ++ * for custom implmentations here, even though the actual ++ * implementations are distinct from the core poll code. ++ */ ++ ++ ++/* Socket pair created with non-blocking mode */ ++#define POLL_OPTIONS_SOCKET_PAIR_NONBLOCK_CONN 0x01 ++ ++typedef unsigned int SocketSpecialOpts; ++ ++typedef struct PollOptions { ++ Bool locked; // Use internal MXUser for locking ++ Bool allowFullQueue; // Don't assert when device event queue is full. ++ VThreadID windowsMsgThread; // thread that processes Windows messages ++ PollerFireWrapper fireWrapperFn; // optional; may be useful for stats ++ void *fireWrapperData; // optional ++ PollerErrorFn errorFn; // optional; called upon unrecoverable error ++ SocketSpecialOpts pollSocketOpts; ++} PollOptions; ++ ++ ++void Poll_InitDefault(void); ++void Poll_InitDefaultEx(const PollOptions *opts); ++void Poll_InitGtk(void); // On top of glib for Linux ++void Poll_InitCF(void); // On top of CoreFoundation for OSX ++ ++ ++/* ++ * Functions ++ */ ++int Poll_SocketPair(Bool vmci, Bool stream, int fds[2], SocketSpecialOpts opts); ++void Poll_Loop(Bool loop, Bool *exit, PollClass c); ++void Poll_LoopTimeout(Bool loop, Bool *exit, PollClass c, int timeout); ++Bool Poll_LockingEnabled(void); ++void Poll_Exit(void); ++ ++ ++/* ++ * Poll_Callback adds a callback regardless of whether an identical one exists. ++ * The exception to this rule is POLL_DEVICE callbacks: there is a maximum of ++ * one read and one write callback per fd. ++ * ++ * Poll_CallbackRemove removes one callback. If there are multiple identical ++ * callbacks, which one is removed is an implementation detail. Note that in ++ * the case of POLL_DEVICE and POLL_REALTIME callbacks, the fd/delay used to ++ * create the callback is not specified when removing, so all callbacks ++ * of those types with the same flags, function, and clientData are considered ++ * "identical" even if their fd/delay differed. ++ */ ++ ++VMwareStatus Poll_Callback(PollClassSet classSet, ++ int flags, ++ PollerFunction f, ++ void *clientData, ++ PollEventType type, ++ PollDevHandle info, // fd/microsec delay ++ MXUserRecLock *lck); ++Bool Poll_CallbackRemove(PollClassSet classSet, ++ int flags, ++ PollerFunction f, ++ void *clientData, ++ PollEventType type); ++Bool Poll_CallbackRemoveOneByCB(PollClassSet classSet, ++ int flags, ++ PollerFunction f, ++ PollEventType type, ++ void **clientData); ++ ++void Poll_NotifyChange(PollClassSet classSet); ++ ++/* ++ * Wrappers for Poll_Callback and Poll_CallbackRemove that present ++ * simpler subsets of those interfaces. ++ */ ++ ++VMwareStatus Poll_CB_Device(PollerFunction f, ++ void *clientData, ++ PollDevHandle device, ++ Bool periodic); ++ ++Bool Poll_CB_DeviceRemove(PollerFunction f, ++ void *clientData, ++ Bool periodic); ++ ++ ++VMwareStatus Poll_CB_RTime(PollerFunction f, ++ void *clientData, ++ int64 delay, // microseconds ++ Bool periodic, ++ MXUserRecLock *lock); ++ ++Bool Poll_CB_RTimeRemove(PollerFunction f, ++ void *clientData, ++ Bool periodic); ++ ++ ++#ifdef _WIN32 ++void Poll_SetPumpsWindowsMessages(Bool pumps); ++void Poll_SetWindowMessageRecipient(HWND hWnd, UINT msg, Bool alwaysThunk); ++Bool Poll_FireWndCallback(void *lparam); ++#endif ++ ++#if defined(__cplusplus) ++} // extern "C" ++#endif ++ ++#endif // _POLL_H_ +diff --git a/lib/rpcIn/rpcin.c b/open-vm-tools/lib/rpcIn/rpcin.c +index 8b1fe759..f22fcd40 100644 +--- a/lib/rpcIn/rpcin.c ++++ b/lib/rpcIn/rpcin.c +@@ -57,7 +57,7 @@ + + #if defined(VMTOOLS_USE_VSOCKET) + # include +-# include "poll.h" ++# include "vm_poll.h" + # include "asyncsocket.h" + # include "vmci_defs.h" + #include "dataMap.h" +-- +2.36.1 + diff --git a/package/openvmtools/0004-Remove-assumptions-about-glibc-being-only-libc-imple.patch b/package/openvmtools/0004-Remove-assumptions-about-glibc-being-only-libc-imple.patch new file mode 100644 index 00000000..5960006f --- /dev/null +++ b/package/openvmtools/0004-Remove-assumptions-about-glibc-being-only-libc-imple.patch @@ -0,0 +1,27 @@ +From a0983d84185f04c4e40778fe951fde4439894882 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sun, 16 Jul 2017 07:37:03 -0700 +Subject: [PATCH] Remove assumptions about glibc being only libc + implementation on linux + +Signed-off-by: Khem Raj +[Retrieved (and updated to work on current version) from: +http://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-Remove-assumptions-about-glibc-being-only-libc-imple.patch?h=sumo] +Signed-off-by: Fabrice Fontaine +--- + open-vm-tools/lib/file/fileIOPosix.c | 2 +- + 2 files changed, 3 insertions(+), 1 deletion(-) + +Index: open-vm-tools/lib/file/fileIOPosix.c +=================================================================== +--- open-vm-tools.orig/lib/file/fileIOPosix.c ++++ open-vm-tools/lib/file/fileIOPosix.c +@@ -205,7 +205,7 @@ static AlignedPool alignedPool; + * are not available in any header file. + */ + +-#if defined(__linux__) && !defined(__ANDROID__) ++#if defined(__linux__) && defined(__GLIBC__) + #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64) + /* + * We want preadv/pwritev. But due to FOB=64, the symbols are -64. diff --git a/package/openvmtools/0005-Use-configure-test-for-struct-timespec.patch b/package/openvmtools/0005-Use-configure-test-for-struct-timespec.patch new file mode 100644 index 00000000..3386faec --- /dev/null +++ b/package/openvmtools/0005-Use-configure-test-for-struct-timespec.patch @@ -0,0 +1,48 @@ +From bf1eafb07297711baf9320b1edcca8a3376f117d Mon Sep 17 00:00:00 2001 +From: Natanael Copa +Date: Wed, 18 Nov 2015 09:03:00 +0000 +Subject: [PATCH] Use configure test for struct timespec + +Use the configure script to test for struct time spec instead of trying +to keep track of what platforms has it. + +Signed-off-by: Natanael Copa +[Retrieved from: +http://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0005-Use-configure-test-for-struct-timespec.patch?h=sumo] +Signed-off-by: Fabrice Fontaine +--- + open-vm-tools/configure.ac | 1 + + open-vm-tools/lib/include/hgfsUtil.h | 8 +------- + 2 files changed, 2 insertions(+), 7 deletions(-) + +Index: open-vm-tools/configure.ac +=================================================================== +--- open-vm-tools.orig/configure.ac ++++ open-vm-tools/configure.ac +@@ -1127,6 +1127,7 @@ AC_TYPE_OFF_T + AC_TYPE_PID_T + AC_TYPE_SIZE_T + AC_CHECK_MEMBERS([struct stat.st_rdev]) ++AC_CHECK_MEMBERS([struct timespec.tv_sec],[],[],[[#include ]]) + AC_HEADER_TIME + AC_STRUCT_TM + AC_C_VOLATILE +Index: open-vm-tools/lib/include/hgfsUtil.h +=================================================================== +--- open-vm-tools.orig/lib/include/hgfsUtil.h ++++ open-vm-tools/lib/include/hgfsUtil.h +@@ -53,13 +53,7 @@ + # include + # endif + # include "vm_basic_types.h" +-# if !defined _STRUCT_TIMESPEC && \ +- !defined _TIMESPEC_DECLARED && \ +- !defined __timespec_defined && \ +- !defined sun && \ +- !defined __FreeBSD__ && \ +- !__APPLE__ && \ +- !defined _WIN32 ++# if !defined HAVE_STRUCT_TIMESPEC_TV_SEC + struct timespec { + time_t tv_sec; + long tv_nsec; diff --git a/package/openvmtools/0006-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch b/package/openvmtools/0006-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch new file mode 100644 index 00000000..371004c9 --- /dev/null +++ b/package/openvmtools/0006-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch @@ -0,0 +1,61 @@ +From 31ae6f42458f90d4994a4ad8e2b7673691612c36 Mon Sep 17 00:00:00 2001 +From: Natanael Copa +Date: Wed, 18 Nov 2015 09:10:14 +0000 +Subject: [PATCH] Fix definition of ALLPERMS and ACCESSPERMS + +The ALLPERMS and ACCESSPERMS defines are not specified in POSIX so +assume it is not there instead of testing for specific implementations. + +This is needed for musl libc. + +Signed-off-by: Natanael Copa +[Retrieved from: +http://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0006-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch?h=sumo] +Signed-off-by: Fabrice Fontaine +--- + open-vm-tools/lib/hgfsServer/hgfsServerLinux.c | 8 +++++--- + open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c | 3 +-- + 2 files changed, 6 insertions(+), 5 deletions(-) + +Index: open-vm-tools/lib/hgfsServer/hgfsServerLinux.c +=================================================================== +--- open-vm-tools.orig/lib/hgfsServer/hgfsServerLinux.c ++++ open-vm-tools/lib/hgfsServer/hgfsServerLinux.c +@@ -107,11 +107,13 @@ typedef struct DirectoryEntry { + #endif + + /* +- * ALLPERMS (mode 07777) and ACCESSPERMS (mode 0777) are not defined in the +- * Solaris version of . ++ * ALLPERMS (mode 07777) and ACCESSPERMS (mode 0777) are not specified in ++ * POSIX. + */ +-#ifdef sun ++#ifndef ACCESSPERMS + # define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) ++#endif ++#ifndef ALLPERMS + # define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO) + #endif + +Index: open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c +=================================================================== +--- open-vm-tools.orig/services/plugins/dndcp/dnd/dndLinux.c ++++ open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c +@@ -51,7 +51,7 @@ + + #define DND_ROOTDIR_PERMS (S_IRWXU | S_IRWXG | S_IRWXO) + #define DND_STAGINGDIR_PERMS (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) +-#ifdef sun ++#ifndef ACCESSPERMS + #define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO) + #endif + #ifdef __ANDROID__ +@@ -60,7 +60,6 @@ + */ + #define NO_SETMNTENT + #define NO_ENDMNTENT +-#define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO) + #endif + + diff --git a/package/openvmtools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch b/package/openvmtools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch new file mode 100644 index 00000000..f10e74e1 --- /dev/null +++ b/package/openvmtools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch @@ -0,0 +1,152 @@ +From 6cc1c22cc30320f56da552a76bd956db8f255b6a Mon Sep 17 00:00:00 2001 +From: Natanael Copa +Date: Wed, 18 Nov 2015 10:05:07 +0000 +Subject: [PATCH] Use configure to test for feature instead of platform + +Test for various functions instead of trying to keep track of what +platform and what version of the given platform has support for what. + +This should make it easier to port to currently unknown platforms and +will solve the issue if a platform add support for a missing feature in +the future. + +The features we test for are: +- getifaddrs +- getauxval +- issetugid +- __secure_getenv + +This is needed for musl libc. + +Signed-off-by: Natanael Copa +[Retrieved (and slightly updated) from: +http://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch?h=sumo] +Signed-off-by: Fabrice Fontaine +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + open-vm-tools/configure.ac | 4 ++++ + open-vm-tools/lib/misc/idLinux.c | 30 ++++++++++++++---------------- + open-vm-tools/lib/nicInfo/nicInfoPosix.c | 8 ++++++-- + 3 files changed, 24 insertions(+), 18 deletions(-) + +Index: open-vm-tools/configure.ac +=================================================================== +--- open-vm-tools.orig/configure.ac ++++ open-vm-tools/configure.ac +@@ -940,6 +940,7 @@ + + AC_CHECK_FUNCS([ecvt]) + AC_CHECK_FUNCS([fcvt]) ++AC_CHECK_FUNCS([getifaddrs getauxval issetugid __secure_getenv]) + + AC_CHECK_FUNC([mkdtemp], [have_mkdtemp=yes]) + +@@ -1149,10 +1150,13 @@ + ### + + AC_CHECK_HEADERS([crypt.h]) ++AC_CHECK_HEADERS([ifaddrs.h]) + AC_CHECK_HEADERS([inttypes.h]) + AC_CHECK_HEADERS([stdint.h]) + AC_CHECK_HEADERS([stdlib.h]) + AC_CHECK_HEADERS([wchar.h]) ++AC_CHECK_HEADERS([net/if.h]) ++AC_CHECK_HEADERS([sys/auxv.h]) + AC_CHECK_HEADERS([sys/inttypes.h]) + AC_CHECK_HEADERS([sys/io.h]) + AC_CHECK_HEADERS([sys/param.h]) # Required to make the sys/user.h check work correctly on FreeBSD +Index: open-vm-tools/lib/misc/idLinux.c +=================================================================== +--- open-vm-tools.orig/lib/misc/idLinux.c ++++ open-vm-tools/lib/misc/idLinux.c +@@ -27,12 +27,9 @@ + #include + #include + #include +-#ifdef __linux__ +-#if defined(__GLIBC__) && \ +- (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 16)) ++#ifdef HAVE_SYS_AUXV_H + #include + #endif +-#endif + #ifdef __APPLE__ + #include + #include +@@ -1025,31 +1022,32 @@ + static Bool + IdIsSetUGid(void) + { +-#if defined(__ANDROID__) +- /* Android does not have a secure_getenv, so be conservative. */ +- return TRUE; +-#else + /* + * We use __secure_getenv, which returns NULL if the binary is +- * setuid or setgid. Alternatives include, ++ * setuid or setgid, when issetugid or getauxval(AT_SECURE) is not ++ * available. Alternatives include, + * +- * a) getauxval(AT_SECURE); not available until glibc 2.16. +- * b) __libc_enable_secure; may not be exported. ++ * a) issetugid(); not (yet?) available in glibc. ++ * b) getauxval(AT_SECURE); not available until glibc 2.16. ++ * c) __libc_enable_secure; may not be exported. + * +- * Use (a) when we are based on glibc 2.16, or newer. ++ * Use (b) when we are based on glibc 2.16, or newer. + */ + +-#if defined(__GLIBC__) && \ +- (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 16)) ++#if HAVE_ISSETUGID ++ return issetugid(); ++#elif HAVE_GETAUXVAL + return getauxval(AT_SECURE) != 0; +-#else ++#elif HAVE___SECURE_GETENV + static const char envName[] = "VMW_SETUGID_TEST"; + + if (setenv(envName, "1", TRUE) == -1) { + return TRUE; /* Conservative */ + } + return __secure_getenv(envName) == NULL; +-#endif ++#else ++ /* Android does not have a secure_getenv, so be conservative. */ ++ return TRUE; + #endif + } + #endif +Index: open-vm-tools/lib/nicInfo/nicInfoPosix.c +=================================================================== +--- open-vm-tools.orig/lib/nicInfo/nicInfoPosix.c ++++ open-vm-tools/lib/nicInfo/nicInfoPosix.c +@@ -35,9 +35,13 @@ + #include + #include + #include +-#if defined(__FreeBSD__) || defined(__APPLE__) ++#if HAVE_SYS_SYSCTL_H + # include ++#endif ++#if HAVE_IFADDRS_H + # include ++#endif ++#if HAVE_NET_IF_H + # include + #endif + #ifndef NO_DNET +@@ -499,10 +503,7 @@ + * + ****************************************************************************** + */ +-#if defined(__FreeBSD__) || \ +- defined(__APPLE__) || \ +- defined(USERWORLD) || \ +- (defined(__linux__) && defined(NO_DNET)) ++#if defined(NO_DNET) && defined(HAVE_GETIFADDRS) + + char * + GuestInfoGetPrimaryIP(void) diff --git a/package/openvmtools/0008-Use-configure-test-for-sys-stat.h-include.patch b/package/openvmtools/0008-Use-configure-test-for-sys-stat.h-include.patch new file mode 100644 index 00000000..c058dfe6 --- /dev/null +++ b/package/openvmtools/0008-Use-configure-test-for-sys-stat.h-include.patch @@ -0,0 +1,28 @@ +From 95c6184d9ff70a47c41768850923a96de9e544aa Mon Sep 17 00:00:00 2001 +From: Natanael Copa +Date: Wed, 18 Nov 2015 10:41:01 +0000 +Subject: [PATCH] Use configure test for sys/stat.h include + +This is needed for musl libc. + +Signed-off-by: Natanael Copa +[Retrieved from: +http://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0011-Use-configure-test-for-sys-stat.h-include.patch?h=sumo] +Signed-off-by: Fabrice Fontaine +--- + open-vm-tools/services/plugins/vix/vixTools.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: open-vm-tools/services/plugins/vix/vixTools.c +=================================================================== +--- open-vm-tools.orig/services/plugins/vix/vixTools.c ++++ open-vm-tools/services/plugins/vix/vixTools.c +@@ -66,7 +66,7 @@ + #include + #endif + +-#if defined(sun) || defined(__FreeBSD__) || defined(__APPLE__) ++#ifdef HAVE_SYS_STAT_H + #include + #endif + diff --git a/package/openvmtools/0011-open-vm-tools-vmhgfs-fuse-fsutils.h-fix-build-on-mus.patch b/package/openvmtools/0011-open-vm-tools-vmhgfs-fuse-fsutils.h-fix-build-on-mus.patch new file mode 100644 index 00000000..e2984a38 --- /dev/null +++ b/package/openvmtools/0011-open-vm-tools-vmhgfs-fuse-fsutils.h-fix-build-on-mus.patch @@ -0,0 +1,41 @@ +From 0a5032669951ffd6735c294a6f309b0ec6667ea5 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 8 Mar 2020 18:49:00 +0100 +Subject: [PATCH] open-vm-tools/vmhgfs-fuse/fsutils.h: fix build on musl + +loff_t is not defined on musl so define it to avoid the following build +failure: + +In file included from module.h:39, + from bdhandler.c:31: +fsutil.h:76:11: error: unknown type name 'loff_t'; did you mean 'off_t'? + loff_t offset); + ^~~~~~ + off_t + +Fixes: + - http://autobuild.buildroot.org/results/4eba7c4585d318efdb9b965d58d879426588aa14 + +Signed-off-by: Fabrice Fontaine +[Upstream status: not sent yet (upstream is not reactive on third patch] +--- + vmhgfs-fuse/fsutil.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/vmhgfs-fuse/fsutil.h b/vmhgfs-fuse/fsutil.h +index 34b6d489..a94f9fbb 100644 +--- a/vmhgfs-fuse/fsutil.h ++++ b/vmhgfs-fuse/fsutil.h +@@ -32,7 +32,8 @@ + #include "hgfsProto.h" + #include + +-#if defined(__FreeBSD__) || defined(__SOLARIS__) || defined(__APPLE__) ++#if defined(__FreeBSD__) || defined(__SOLARIS__) || defined(__APPLE__) || \ ++ !(defined(__GLIBC__) || defined(__UCLIBC__)) + typedef long long loff_t; + #endif + +-- +2.25.0 + diff --git a/package/openvmtools/0012-Make-HgfsConvertFromNtTimeNsec-aware-of-64-bit-time_.patch b/package/openvmtools/0012-Make-HgfsConvertFromNtTimeNsec-aware-of-64-bit-time_.patch new file mode 100644 index 00000000..dbe2c29a --- /dev/null +++ b/package/openvmtools/0012-Make-HgfsConvertFromNtTimeNsec-aware-of-64-bit-time_.patch @@ -0,0 +1,80 @@ +From 3f0580f2546de8be7acf1bc78a55a257bc638ebe Mon Sep 17 00:00:00 2001 +From: Bartosz Brachaczek +Date: Tue, 12 Nov 2019 14:31:08 +0100 +Subject: [PATCH] Make HgfsConvertFromNtTimeNsec aware of 64-bit time_t on i386 + +I verified that this function behaves as expected on x86_64, i386 with +32-bit time_t, and i386 with 64-bit time_t for the following values of +ntTtime: + +UNIX_EPOCH-1, UNIX_EPOCH, UNIX_EPOCH+1, UNIX_S32_MAX-1, UNIX_S32_MAX, +UNIX_S32_MAX+1, UNIX_S32_MAX*2+1 + +I did not verify whether the use of Div643264 is optimal, performance +wise. + +Signed-off-by: Giulio Benetti +--- + lib/hgfs/hgfsUtil.c | 34 +++++++++++++++++++--------------- + 1 file changed, 19 insertions(+), 15 deletions(-) + +diff --git a/lib/hgfs/hgfsUtil.c b/lib/hgfs/hgfsUtil.c +index cc580ab8..49b10040 100644 +--- a/lib/hgfs/hgfsUtil.c ++++ b/lib/hgfs/hgfsUtil.c +@@ -110,23 +110,21 @@ HgfsConvertFromNtTimeNsec(struct timespec *unixTime, // OUT: Time in UNIX format + uint64 ntTime) // IN: Time in Windows NT format + { + #ifdef __i386__ +- uint32 sec; +- uint32 nsec; ++ uint64 sec64; ++ uint32 sec32, nsec; ++#endif + + ASSERT(unixTime); +- /* We assume that time_t is 32bit */ +- ASSERT_ON_COMPILE(sizeof (unixTime->tv_sec) == 4); + +- /* Cap NT time values that are outside of Unix time's range */ ++ if (sizeof (unixTime->tv_sec) == 4) { ++ /* Cap NT time values that are outside of Unix time's range */ + +- if (ntTime >= UNIX_S32_MAX) { +- unixTime->tv_sec = 0x7FFFFFFF; +- unixTime->tv_nsec = 0; +- return 1; ++ if (ntTime >= UNIX_S32_MAX) { ++ unixTime->tv_sec = 0x7FFFFFFF; ++ unixTime->tv_nsec = 0; ++ return 1; ++ } + } +-#else +- ASSERT(unixTime); +-#endif + + if (ntTime < UNIX_EPOCH) { + unixTime->tv_sec = 0; +@@ -135,9 +133,15 @@ HgfsConvertFromNtTimeNsec(struct timespec *unixTime, // OUT: Time in UNIX format + } + + #ifdef __i386__ +- Div643232(ntTime - UNIX_EPOCH, 10000000, &sec, &nsec); +- unixTime->tv_sec = sec; +- unixTime->tv_nsec = nsec * 100; ++ if (sizeof (unixTime->tv_sec) == 4) { ++ Div643232(ntTime - UNIX_EPOCH, 10000000, &sec32, &nsec); ++ unixTime->tv_sec = sec32; ++ unixTime->tv_nsec = nsec * 100; ++ } else { ++ Div643264(ntTime - UNIX_EPOCH, 10000000, &sec64, &nsec); ++ unixTime->tv_sec = sec64; ++ unixTime->tv_nsec = nsec * 100; ++ } + #else + unixTime->tv_sec = (ntTime - UNIX_EPOCH) / 10000000; + unixTime->tv_nsec = ((ntTime - UNIX_EPOCH) % 10000000) * 100; +-- +2.25.1 + diff --git a/package/openvmtools/0013-Properly-check-authorization-on-incoming-guestOps-re.patch b/package/openvmtools/0013-Properly-check-authorization-on-incoming-guestOps-re.patch new file mode 100644 index 00000000..91e379b9 --- /dev/null +++ b/package/openvmtools/0013-Properly-check-authorization-on-incoming-guestOps-re.patch @@ -0,0 +1,40 @@ +From bb9f9ffbb151397545f921cee5b6a4933c6eea80 Mon Sep 17 00:00:00 2001 +Message-Id: +From: John Wolfe +Date: Wed, 10 Aug 2022 06:12:02 -0700 +Subject: [PATCH] Properly check authorization on incoming guestOps requests + +Fix public pipe request checks. Only a SessionRequest type should +be accepted on the public pipe. + +Upstream: https://github.com/vmware/open-vm-tools/blob/CVE-2022-31676.patch/1205-Properly-check-authorization-on-incoming-guestOps-re.patch +Signed-off-by: Stefan Agner +--- + vgauth/serviceImpl/proto.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/vgauth/serviceImpl/proto.c b/vgauth/serviceImpl/proto.c +index db7159ee..c4f85b02 100644 +--- a/vgauth/serviceImpl/proto.c ++++ b/vgauth/serviceImpl/proto.c +@@ -1,5 +1,5 @@ + /********************************************************* +- * Copyright (C) 2011-2016,2019-2021 VMware, Inc. All rights reserved. ++ * Copyright (c) 2011-2016,2019-2022 VMware, Inc. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published +@@ -1201,6 +1201,10 @@ Proto_SecurityCheckRequest(ServiceConnection *conn, + VGAuthError err; + gboolean isSecure = ServiceNetworkIsConnectionPrivateSuperUser(conn); + ++ if (conn->isPublic && req->reqType != PROTO_REQUEST_SESSION_REQ) { ++ return VGAUTH_E_PERMISSION_DENIED; ++ } ++ + switch (req->reqType) { + /* + * This comes over the public connection; alwsys let it through. +-- +2.38.0 + diff --git a/package/openvmtools/Config.in b/package/openvmtools/Config.in new file mode 100644 index 00000000..b62e5d03 --- /dev/null +++ b/package/openvmtools/Config.in @@ -0,0 +1,65 @@ +config BR2_PACKAGE_OPENVMTOOLS_ARCH_SUPPORTS + bool + default y if BR2_i386 + default y if BR2_x86_64 + default y if BR2_aarch64 + +config BR2_PACKAGE_OPENVMTOOLS + bool "openvmtools" + depends on BR2_PACKAGE_OPENVMTOOLS_ARCH_SUPPORTS + depends on BR2_USE_MMU # libglib2 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_ENABLE_LOCALE + depends on !BR2_STATIC_LIBS + depends on !BR2_TOOLCHAIN_USES_UCLIBC + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBDNET + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + help + Open Virtual Machine Tools for VMware guest OS + + https://github.com/vmware/open-vm-tools + + ICU locales, Xerces, and X11 tools are currently not + supported. + + NOTE: Support for vmblock-fuse will be enabled in + openvmtools if the libfuse package is selected. + +if BR2_PACKAGE_OPENVMTOOLS + +config BR2_PACKAGE_OPENVMTOOLS_PAM + bool "PAM support" + # linux-pam needs locale, dynamic library and wchar, but we + # already have these dependencies on the main symbol, above. + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # linux-pam + select BR2_PACKAGE_LINUX_PAM + help + Support for PAM in openvmtools + +comment "PAM support needs a toolchain w/ gcc >= 4.9" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_OPENVMTOOLS_RESOLUTIONKMS + bool "resolutionkms support" + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm + depends on BR2_i386 || BR2_x86_64 # libdrm vmwgfx + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_LIBDRM_VMWGFX + help + Enable support for resolutionkms + +comment "resolutionkms needs udev, a toolchain w/ threads" + depends on BR2_i386 || BR2_x86_64 + depends on !BR2_PACKAGE_HAS_UDEV || !BR2_TOOLCHAIN_HAS_THREADS + +endif + +comment "openvmtools needs a glibc or musl toolchain w/ wchar, threads, locale, dynamic library" + depends on BR2_PACKAGE_OPENVMTOOLS_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_ENABLE_LOCALE || BR2_STATIC_LIBS || \ + BR2_TOOLCHAIN_USES_UCLIBC diff --git a/package/openvmtools/S10vmtoolsd b/package/openvmtools/S10vmtoolsd new file mode 100644 index 00000000..60ee875c --- /dev/null +++ b/package/openvmtools/S10vmtoolsd @@ -0,0 +1,56 @@ +#!/bin/sh +# +# Starts vmtoolsd for openvmtools +# + +DAEMON="vmtoolsd" +PIDFILE="/var/run/$DAEMON.pid" + +VMTOOLSD_ARGS="-b" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -p "$PIDFILE" -x "/usr/bin/$DAEMON" \ + -- $VMTOOLSD_ARGS "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/openvmtools/openvmtools.hash b/package/openvmtools/openvmtools.hash new file mode 100644 index 00000000..081538fb --- /dev/null +++ b/package/openvmtools/openvmtools.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 2053daf7b224ab7ae1a9cfcd6ae12494c646e2bf9aaca998225bd082a4a43fb7 open-vm-tools-11.3.5-18557794.tar.gz +sha256 f734933bd7d49aef25aaf897ed7281ee822e8635056e69b895a7d2e668937fc5 COPYING diff --git a/package/openvmtools/openvmtools.mk b/package/openvmtools/openvmtools.mk new file mode 100644 index 00000000..3106b9ec --- /dev/null +++ b/package/openvmtools/openvmtools.mk @@ -0,0 +1,88 @@ +################################################################################ +# +# openvmtools +# +################################################################################ + +OPENVMTOOLS_VERSION_MAJOR = 11.3.5 +OPENVMTOOLS_VERSION = $(OPENVMTOOLS_VERSION_MAJOR)-18557794 +OPENVMTOOLS_SITE = https://github.com/vmware/open-vm-tools/releases/download/stable-$(OPENVMTOOLS_VERSION_MAJOR) +OPENVMTOOLS_SOURCE = open-vm-tools-$(OPENVMTOOLS_VERSION).tar.gz +OPENVMTOOLS_LICENSE = LGPL-2.1 +OPENVMTOOLS_LICENSE_FILES = COPYING +OPENVMTOOLS_CPE_ID_VENDOR = vmware +OPENVMTOOLS_CPE_ID_PRODUCT = tools + +# 0013-Properly-check-authorization-on-incoming-guestOps-re.patch +OPENVMTOOLS_IGNORE_CVES += CVE-2022-31676 + +# configure.ac is patched +OPENVMTOOLS_AUTORECONF = YES +OPENVMTOOLS_CONF_OPTS = --with-dnet \ + --without-icu --without-x --without-gtk2 \ + --without-gtkmm --without-kernel-modules \ + --disable-deploypkg --without-xerces +OPENVMTOOLS_CONF_ENV += \ + CUSTOM_DNET_CPPFLAGS=" " \ + LIBS=$(TARGET_NLS_LIBS) +OPENVMTOOLS_DEPENDENCIES = \ + host-nfs-utils \ + libglib2 \ + libdnet \ + $(TARGET_NLS_DEPENDENCIES) + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +OPENVMTOOLS_DEPENDENCIES += libtirpc +endif + +# When libfuse is available, openvmtools can build vmblock-fuse, so +# make sure that libfuse gets built first +ifeq ($(BR2_PACKAGE_LIBFUSE),y) +OPENVMTOOLS_DEPENDENCIES += libfuse +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +OPENVMTOOLS_CONF_OPTS += --with-ssl +OPENVMTOOLS_DEPENDENCIES += openssl +else +OPENVMTOOLS_CONF_OPTS += --without-ssl +endif + +ifeq ($(BR2_PACKAGE_OPENVMTOOLS_PAM),y) +OPENVMTOOLS_CONF_OPTS += --with-pam +OPENVMTOOLS_DEPENDENCIES += linux-pam +else +OPENVMTOOLS_CONF_OPTS += --without-pam +endif + +ifeq ($(BR2_PACKAGE_OPENVMTOOLS_RESOLUTIONKMS),y) +OPENVMTOOLS_CONF_OPTS += --enable-resolutionkms +OPENVMTOOLS_DEPENDENCIES += libdrm udev +else +OPENVMTOOLS_CONF_OPTS += --disable-resolutionkms +endif + +# 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 +define OPENVMTOOLS_POST_INSTALL_TARGET_THINGIES + ln -fs os-release $(TARGET_DIR)/etc/lfs-release + if [ ! -e $(TARGET_DIR)/sbin/shutdown ]; then \ + $(INSTALL) -D -m 755 package/openvmtools/shutdown \ + $(TARGET_DIR)/sbin/shutdown; \ + fi +endef + +OPENVMTOOLS_POST_INSTALL_TARGET_HOOKS += OPENVMTOOLS_POST_INSTALL_TARGET_THINGIES + +define OPENVMTOOLS_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/openvmtools/S10vmtoolsd \ + $(TARGET_DIR)/etc/init.d/S10vmtoolsd +endef + +define OPENVMTOOLS_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/openvmtools/vmtoolsd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/vmtoolsd.service +endef + +$(eval $(autotools-package)) diff --git a/package/openvmtools/shutdown b/package/openvmtools/shutdown new file mode 100644 index 00000000..bca9765a --- /dev/null +++ b/package/openvmtools/shutdown @@ -0,0 +1,7 @@ +#!/bin/sh +#compatibility script for openvmtools +if [ "$1" == "-r" ]; then +/sbin/reboot +else +/sbin/poweroff +fi diff --git a/package/openvmtools/vmtoolsd.service b/package/openvmtools/vmtoolsd.service new file mode 100644 index 00000000..1d2a3566 --- /dev/null +++ b/package/openvmtools/vmtoolsd.service @@ -0,0 +1,15 @@ +[Unit] +Description=vmtoolsd for openvmtools +After=syslog.target network.target +ConditionVirtualization=vmware + +[Service] +Type=forking +PIDFile=/run/vmtoolsd.pid +ExecStart=/usr/bin/vmtoolsd -b /run/vmtoolsd.pid +Restart=on-failure +KillMode=process +KillSignal=SIGKILL + +[Install] +WantedBy=multi-user.target diff --git a/package/openvpn/Config.in b/package/openvpn/Config.in new file mode 100644 index 00000000..5aa2386d --- /dev/null +++ b/package/openvpn/Config.in @@ -0,0 +1,40 @@ +config BR2_PACKAGE_OPENVPN + bool "openvpn" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBCAP_NG + select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_MBEDTLS + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + help + OpenVPN is a full-featured SSL VPN solution which can + accomodate a wide range of configurations, including road + warrior access, home/office/campus telecommuting, WiFi + security, secure branch office linking, and enterprise-scale + remote access solutions with load balancing, failover, and + fine-grained access-controls. + + http://openvpn.net/ + +if BR2_PACKAGE_OPENVPN + +config BR2_PACKAGE_OPENVPN_LZ4 + bool "LZ4 compression" + default y + select BR2_PACKAGE_LZ4 + help + Enable LZ4 compression. + +config BR2_PACKAGE_OPENVPN_LZO + bool "LZO compression" + default y + select BR2_PACKAGE_LZO + help + Enable LZO compression. + +config BR2_PACKAGE_OPENVPN_SMALL + bool "Optimize for small size" + help + Make OpenVPN as small as possible. + You loose eurephia, debugging info, help messages and more. + It saves around 100 KiB in binary file size. + +endif diff --git a/package/openvpn/S60openvpn b/package/openvpn/S60openvpn new file mode 100644 index 00000000..00156c80 --- /dev/null +++ b/package/openvpn/S60openvpn @@ -0,0 +1,99 @@ +#!/bin/sh +# +# Original version by Robert Leslie +# , edited by iwj and cs +# Modified for openvpn by Alberto Gonzalez Iniesta +# Modified for restarting / starting / stopping single tunnels by Richard Mueller + +test $DEBIAN_SCRIPT_DEBUG && set -v -x + +CONFIG_DIR=/etc/openvpn +test -d $CONFIG_DIR || exit 0 + +start_vpn () { + printf " $NAME " + start-stop-daemon -S -p /var/run/openvpn.$NAME.pid -x /usr/sbin/openvpn -- \ + --daemon --writepid /var/run/openvpn.$NAME.pid \ + --config $CONFIG_DIR/$NAME.conf --cd $CONFIG_DIR + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop_vpn () { + printf " $NAME " + start-stop-daemon -K -p /var/run/openvpn.$NAME.pid -x /usr/sbin/openvpn +} + +case "$1" in +start) + printf "Starting openvpn:" + + if test -z $2 ; then + for CONFIG in `cd $CONFIG_DIR; ls *.conf 2> /dev/null`; do + NAME=${CONFIG%%.conf} + start_vpn + done + else + if test -e $CONFIG_DIR/$2.conf ; then + NAME=$2 + start_vpn + else + printf " No such VPN: $2" + fi + fi + echo "." + + ;; +stop) + printf "Stopping openvpn:" + + if test -z $2 ; then + for PIDFILE in `ls /var/run/openvpn.*.pid 2> /dev/null`; do + NAME=`echo $PIDFILE | cut -c18-` + NAME=${NAME%%.pid} + stop_vpn + done + else + if test -e /var/run/openvpn.$2.pid ; then + PIDFILE=`ls /var/run/openvpn.$2.pid 2> /dev/null` + NAME=`echo $PIDFILE | cut -c18-` + NAME=${NAME%%.pid} + stop_vpn + else + printf " No such VPN: $2" + fi + fi + echo "." + ;; +# We only 'reload' for running VPNs. New ones will only start with 'start' or 'restart'. +reload|force-reload) + printf "Reloading openvpn:" + for PIDFILE in `ls /var/run/openvpn.*.pid 2> /dev/null`; do + NAME=`echo $PIDFILE | cut -c18-` + NAME=${NAME%%.pid} +# If openvpn if running under a different user than root we'll need to restart + if egrep '^( |\t)*user' $CONFIG_DIR/$NAME.conf > /dev/null 2>&1 ; then + stop_vpn + sleep 1 + start_vpn + printf "(restarted)" + else + kill -HUP `cat $PIDFILE` || true + printf " $NAME" + fi + done + echo "." + ;; + +restart) + $0 stop $2 + sleep 1 + $0 start $2 + ;; +*) + echo "Usage: $0 {start|stop|reload|restart|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 + +# vim:set ai et sts=2 sw=2 tw=0: diff --git a/package/openvpn/openvpn.hash b/package/openvpn/openvpn.hash new file mode 100644 index 00000000..7ba3ea3f --- /dev/null +++ b/package/openvpn/openvpn.hash @@ -0,0 +1,3 @@ +# Locally calculated after checking signature +sha256 1c610fddeb686e34f1367c347e027e418e07523a10f4d8ce4a2c2af2f61a1929 openvpn-2.6.12.tar.gz +sha256 1fcb78d7e478bb8a9408010bdc91b36e213b1facfad093df3f7ce7e28af19043 COPYRIGHT.GPL diff --git a/package/openvpn/openvpn.mk b/package/openvpn/openvpn.mk new file mode 100644 index 00000000..4bf5b546 --- /dev/null +++ b/package/openvpn/openvpn.mk @@ -0,0 +1,85 @@ +################################################################################ +# +# openvpn +# +################################################################################ + +OPENVPN_VERSION = 2.6.12 +OPENVPN_SITE = https://swupdate.openvpn.net/community/releases +OPENVPN_DEPENDENCIES = host-pkgconf libcap-ng +OPENVPN_LICENSE = GPL-2.0 +OPENVPN_LICENSE_FILES = COPYRIGHT.GPL +OPENVPN_CPE_ID_VENDOR = openvpn +OPENVPN_SELINUX_MODULES = openvpn +OPENVPN_CONF_OPTS = \ + --disable-unit-tests \ + $(if $(BR2_STATIC_LIBS),--disable-plugins) +OPENVPN_CONF_ENV = NETSTAT=/bin/netstat + +ifeq ($(BR2_PACKAGE_LIBNL)$(BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16),yy) +OPENVPN_CONF_OPTS += --enable-dco +OPENVPN_DEPENDENCIES += libnl +else +OPENVPN_CONF_OPTS += --disable-dco +endif + +ifeq ($(BR2_PACKAGE_OPENVPN_SMALL),y) +OPENVPN_CONF_OPTS += \ + --enable-small \ + --disable-plugins +endif + +ifeq ($(BR2_PACKAGE_OPENVPN_LZ4),y) +OPENVPN_DEPENDENCIES += lz4 +else +OPENVPN_CONF_OPTS += --disable-lz4 +endif + +ifeq ($(BR2_PACKAGE_OPENVPN_LZO),y) +OPENVPN_DEPENDENCIES += lzo +else +OPENVPN_CONF_OPTS += --disable-lzo +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +OPENVPN_DEPENDENCIES += libselinux +OPENVPN_CONF_OPTS += --enable-selinux +else +OPENVPN_CONF_OPTS += --disable-selinux +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +OPENVPN_DEPENDENCIES += linux-pam +OPENVPN_CONF_OPTS += --enable-plugin-auth-pam +else +OPENVPN_CONF_OPTS += --disable-plugin-auth-pam +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +OPENVPN_DEPENDENCIES += openssl +OPENVPN_CONF_OPTS += --with-crypto-library=openssl +else ifeq ($(BR2_PACKAGE_MBEDTLS),y) +OPENVPN_DEPENDENCIES += mbedtls +OPENVPN_CONF_OPTS += --with-crypto-library=mbedtls +endif + +ifeq ($(BR2_PACKAGE_PKCS11_HELPER),y) +OPENVPN_DEPENDENCIES += pkcs11-helper +OPENVPN_CONF_OPTS += --enable-pkcs11 +else +OPENVPN_CONF_OPTS += --disable-pkcs11 +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +OPENVPN_DEPENDENCIES += systemd +OPENVPN_CONF_OPTS += --enable-systemd +else +OPENVPN_CONF_OPTS += --disable-systemd +endif + +define OPENVPN_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/openvpn/S60openvpn \ + $(TARGET_DIR)/etc/init.d/S60openvpn +endef + +$(eval $(autotools-package)) diff --git a/package/openzwave/Config.in b/package/openzwave/Config.in new file mode 100644 index 00000000..b5c1b620 --- /dev/null +++ b/package/openzwave/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_OPENZWAVE + bool "openzwave" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR + select BR2_PACKAGE_TINYXML + help + Free software library that interfaces with selected Z-Wave + PC controllers, allowing anyone to create applications that + manipulate and respond to devices on a Z-Wave network, + without requiring in-depth knowledge of the Z-Wave protocol + + http://www.openzwave.net + +comment "openzwave needs a toolchain w/ C++, dynamic library, NPTL, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_USE_WCHAR diff --git a/package/openzwave/openzwave.hash b/package/openzwave/openzwave.hash new file mode 100644 index 00000000..e32908df --- /dev/null +++ b/package/openzwave/openzwave.hash @@ -0,0 +1,7 @@ +# Locally computed: +sha256 3c0b7e63319832c0eea5a251facd8c4d43f8815356ea61361f8bb9652b2ad8be openzwave-62444b0f979c337d2091d77d89cf63c2ae9775cf.tar.gz +sha256 e3a994d82e644b03a792a930f574002658412f62407f5fee083f2555c5f23118 LICENSE +sha256 c8db08727d03bea1213cdb29459b4b489b0d68a0866765df40ff205c6cd7224b licenses/license.txt +sha256 4da452226e9064b597020ad404e1c78d8175bc31ad7c1908485a92c0a4d70284 licenses/lgpl.txt +sha256 33ffdead480674d5f33e2934822a3b93c93e3f8c894667a3bf30bd1195b38f83 licenses/gpl.txt +sha256 6f50ebf9af9b6658c7936ffcc6fedd99254df984c0fec2e6ffb9f3aa1c4ef3e1 licenses/Apache-License-2.0.txt diff --git a/package/openzwave/openzwave.mk b/package/openzwave/openzwave.mk new file mode 100644 index 00000000..17da3b9b --- /dev/null +++ b/package/openzwave/openzwave.mk @@ -0,0 +1,62 @@ +################################################################################ +# +# openzwave +# +################################################################################ + +OPENZWAVE_VERSION = 62444b0f979c337d2091d77d89cf63c2ae9775cf +OPENZWAVE_SITE = $(call github,OpenZWave,open-zwave,$(OPENZWAVE_VERSION)) +OPENZWAVE_LICENSE = LGPL-3.0+, GPL-3.0 (examples), Apache-2.0 (sh2ju.sh) +OPENZWAVE_LICENSE_FILES = LICENSE licenses/license.txt licenses/lgpl.txt \ + licenses/gpl.txt licenses/Apache-License-2.0.txt +OPENZWAVE_DEPENDENCIES = tinyxml + +OPENZWAVE_INSTALL_STAGING = YES + +# 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. +# Set pkgconfigdir to /lib/pkgconfig to install libopenzwave.pc in the +# correct directory otherwise openzwave will call +# "pkg-config --variable pc_path pkg-config" which returns an incorrect value. +# Set sysconfdir to /etc/openzwave to install openzwave configuration files in +# the correct directory otherwise openzwave will install configuration files in +# $(PREFIX)/etc/openzwave. +# Disable doxygen documentation. +# Set {DEBUG,RELEASE}_CFLAGS to remove -Werror. +OPENZWAVE_MAKE_OPTS = \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + PREFIX=/usr \ + instlibdir=/usr/lib \ + pkgconfigdir=/usr/lib/pkgconfig \ + sysconfdir=/etc/openzwave \ + DOXYGEN= \ + DEBUG_CFLAGS="-fPIC -std=c++11" \ + RELEASE_CFLAGS="-fPIC -std=c++11" \ + USE_BI_TXML=0 + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +OPENZWAVE_DEPENDENCIES += host-pkgconf udev +OPENZWAVE_MAKE_OPTS += USE_HID=1 +else +OPENZWAVE_MAKE_OPTS += USE_HID=0 +endif + +define OPENZWAVE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(OPENZWAVE_MAKE_OPTS) -C $(@D) +endef + +define OPENZWAVE_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(OPENZWAVE_MAKE_OPTS) -C $(@D) \ + DESTDIR=$(STAGING_DIR) install +endef + +# Delete unneeded ozw_config binary from target directory as this is an utility +# application used to get the openzwave build configuration. +define OPENZWAVE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(OPENZWAVE_MAKE_OPTS) -C $(@D) \ + DESTDIR=$(TARGET_DIR) install + rm -f $(TARGET_DIR)/usr/bin/ozw_config +endef + +$(eval $(generic-package)) diff --git a/package/opkg-utils/Config.in b/package/opkg-utils/Config.in new file mode 100644 index 00000000..2973055b --- /dev/null +++ b/package/opkg-utils/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_OPKG_UTILS + bool "opkg-utils" + depends on !BR2_nios2 || BR2_PACKAGE_BUSYBOX # binutils + depends on BR2_USE_MMU # bash, python3 + depends on BR2_USE_WCHAR # python3 + depends on BR2_TOOLCHAIN_HAS_THREADS # python3 <- libffi + depends on !BR2_STATIC_LIBS # python3 + select BR2_PACKAGE_BINUTILS if !BR2_PACKAGE_BUSYBOX # runtime + select BR2_PACKAGE_BINUTILS_TARGET if !BR2_PACKAGE_BUSYBOX # runtime + select BR2_PACKAGE_COREUTILS if !BR2_PACKAGE_BUSYBOX # runtime + select BR2_PACKAGE_DIFFUTILS if !BR2_PACKAGE_BUSYBOX # runtime + select BR2_PACKAGE_FINDUTILS if !BR2_PACKAGE_BUSYBOX # runtime + select BR2_PACKAGE_GREP if !BR2_PACKAGE_BUSYBOX # runtime + select BR2_PACKAGE_GZIP if !BR2_PACKAGE_BUSYBOX # runtime + select BR2_PACKAGE_SED if !BR2_PACKAGE_BUSYBOX # runtime + select BR2_PACKAGE_TAR if !BR2_PACKAGE_BUSYBOX # runtime + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash + select BR2_PACKAGE_BASH # runtime + select BR2_PACKAGE_PYTHON3 # runtime + help + Helper scripts for use with the opkg package manager. + + https://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils/ + +comment "opkg-utils needs a toolchain w/ wchar, threads, dynamic library" + depends on !BR2_nios2 || BR2_PACKAGE_BUSYBOX + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/opkg-utils/Config.in.host b/package/opkg-utils/Config.in.host new file mode 100644 index 00000000..1c9c474a --- /dev/null +++ b/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/package/opkg-utils/opkg-utils.hash b/package/opkg-utils/opkg-utils.hash new file mode 100644 index 00000000..982dbb5c --- /dev/null +++ b/package/opkg-utils/opkg-utils.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 cbce8a9ad60ee34f27b9195146ff7ecfc37a3f97d2ce6bfc6610f46210f490f8 opkg-utils-0.6.2-git4.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/opkg-utils/opkg-utils.mk b/package/opkg-utils/opkg-utils.mk new file mode 100644 index 00000000..b077e0dc --- /dev/null +++ b/package/opkg-utils/opkg-utils.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# opkg-utils +# +################################################################################ + +OPKG_UTILS_VERSION = 0.6.2 +OPKG_UTILS_SITE = https://git.yoctoproject.org/git/opkg-utils +OPKG_UTILS_SITE_METHOD = git +OPKG_UTILS_LICENSE = GPL-2.0+ +OPKG_UTILS_LICENSE_FILES = COPYING + +HOST_OPKG_UTILS_DEPENDENCIES = \ + $(BR2_PYTHON3_HOST_DEPENDENCY) \ + host-lz4 \ + host-xz + +# Nothing to build; only scripts to install. +define OPKG_UTILS_INSTALL_TARGET_CMDS + $(MAKE) -C $(@D) PREFIX=$(TARGET_DIR) install-utils +endef + +# Nothing to build; only scripts to install. +define HOST_OPKG_UTILS_INSTALL_CMDS + $(MAKE) -C $(@D) PREFIX=$(HOST_DIR) install-utils +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/opkg/Config.in b/package/opkg/Config.in new file mode 100644 index 00000000..1f6a3934 --- /dev/null +++ b/package/opkg/Config.in @@ -0,0 +1,33 @@ +comment "opkg needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR + +config BR2_PACKAGE_OPKG + bool "opkg" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR # libarchive + select BR2_PACKAGE_LIBARCHIVE + help + Opkg is a lightweight package management system, based on + ipkg. It is written in C and resembles apt/dpkg in + operation. It is intended for use on embedded Linux devices. + Opkg is maintained, stable, robust and conservative in its + memory usage, despite its buggy ipkg ancestry. As best it + can, opkg maintains backwards compatibility with ipkg and + conforms to a subset of debian's policy manual regarding + control files. + + https://code.google.com/archive/p/opkg/ + +if BR2_PACKAGE_OPKG + +config BR2_PACKAGE_OPKG_GPG_SIGN + bool "gnupg support" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error + select BR2_PACKAGE_LIBGPGME + select BR2_PACKAGE_LIBGPG_ERROR + help + Enable opkg package signature checking support using + gnupg/libgpgme. + +endif diff --git a/package/opkg/opkg.hash b/package/opkg/opkg.hash new file mode 100644 index 00000000..c6ecefba --- /dev/null +++ b/package/opkg/opkg.hash @@ -0,0 +1,4 @@ +# From http://downloads.yoctoproject.org/releases/opkg/SHA256SUMS +sha256 ac73a90a2549cd04948e563d915912c78e1b8ba0f43af75c5a53fcca474adbd5 opkg-0.6.2.tar.gz +# Locally calculated +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/opkg/opkg.mk b/package/opkg/opkg.mk new file mode 100644 index 00000000..a550543f --- /dev/null +++ b/package/opkg/opkg.mk @@ -0,0 +1,71 @@ +################################################################################ +# +# opkg +# +################################################################################ + +OPKG_VERSION = 0.6.2 +OPKG_SITE = https://downloads.yoctoproject.org/releases/opkg +OPKG_DEPENDENCIES = host-pkgconf libarchive +OPKG_LICENSE = GPL-2.0+ +OPKG_LICENSE_FILES = COPYING +OPKG_INSTALL_STAGING = YES +OPKG_CONF_OPTS = --enable-sha256 + +ifeq ($(BR2_PACKAGE_OPKG_GPG_SIGN),y) +OPKG_CONF_OPTS += --enable-gpg +OPKG_CONF_ENV += \ + ac_cv_path_GPGME_CONFIG=$(STAGING_DIR)/usr/bin/gpgme-config \ + ac_cv_path_GPGERR_CONFIG=$(STAGING_DIR)/usr/bin/gpg-error-config +OPKG_DEPENDENCIES += libgpgme libgpg-error +else +OPKG_CONF_OPTS += --disable-gpg +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +OPKG_DEPENDENCIES += libcurl +OPKG_CONF_OPTS += --enable-curl +ifeq ($(BR2_PACKAGE_OPENSSL),y) +OPKG_CONF_OPTS += --enable-ssl-curl +else +OPKG_CONF_OPTS += --disable-ssl-curl +endif +else +OPKG_CONF_OPTS += --disable-curl --disable-ssl-curl +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +OPKG_DEPENDENCIES += bzip2 +OPKG_CONF_OPTS += --enable-bzip2 +else +OPKG_CONF_OPTS += --disable-bzip2 +endif + +ifeq ($(BR2_PACKAGE_LZ4),y) +OPKG_DEPENDENCIES += lz4 +OPKG_CONF_OPTS += --enable-lz4 +else +OPKG_CONF_OPTS += --disable-lz4 +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +OPKG_DEPENDENCIES += xz +OPKG_CONF_OPTS += --enable-xz +else +OPKG_CONF_OPTS += --disable-xz +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +OPKG_DEPENDENCIES += zstd +OPKG_CONF_OPTS += --enable-zstd +else +OPKG_CONF_OPTS += --disable-zstd +endif + +# Ensure directory for lockfile exists +define OPKG_CREATE_LOCKDIR + mkdir -p $(TARGET_DIR)/usr/lib/opkg +endef +OPKG_POST_INSTALL_TARGET_HOOKS += OPKG_CREATE_LOCKDIR + +$(eval $(autotools-package)) diff --git a/package/oprofile/0001-musl.patch b/package/oprofile/0001-musl.patch new file mode 100644 index 00000000..094cd164 --- /dev/null +++ b/package/oprofile/0001-musl.patch @@ -0,0 +1,48 @@ +Remove non-Posix use of FTW_ACTIONRETVAL + +The musl implementation of nftw doesn't support the glibc extension +FTW_ACTIONRETVAL. Since none of the features of FTW_ACTIONRETVAL are +used here, just use the normal nftw return value. + +Downloaded from: +https://github.com/openwrt-mirror/openwrt/blob/f22d5e25660106a48727c7aa5d1a73e4171a7987/package/devel/oprofile/patches/100-musl.patch +after I found a hint for the patch here: +http://patchwork.openembedded.org/patch/112675/ + +Removed unneeded patch for libop/op_events.c. + +Because openwrt removed the oprofile package from their repo last week +https://github.com/openwrt-mirror/openwrt/commit/aaf46a8524e138e1673a398e8d2dd9357405b313#diff-fe14456f94abf436d997e2c01c10f3bd +I decided to put this patch into the buildroot repo instead of adding +_PATCH to oprofile.mk + +Signed-off-by: Bernd Kuhls + +--- a/pe_profiling/operf.cpp ++++ b/pe_profiling/operf.cpp +@@ -857,11 +857,14 @@ static int __delete_old_previous_sample_ + int tflag __attribute__((unused)), + struct FTW *ftwbuf __attribute__((unused))) + { ++ int err; ++ + if (remove(fpath)) { ++ err = errno; + perror("sample data removal error"); +- return FTW_STOP; ++ return err; + } else { +- return FTW_CONTINUE; ++ return 0; + } + } + +@@ -896,7 +899,7 @@ static void convert_sample_data(void) + return; + + if (!operf_options::append) { +- int flags = FTW_DEPTH | FTW_ACTIONRETVAL; ++ int flags = FTW_DEPTH; + errno = 0; + if (nftw(previous_sampledir.c_str(), __delete_old_previous_sample_data, 32, flags) !=0 && + errno != ENOENT) { diff --git a/package/oprofile/0002-fix-static-build-with-binutils-2.40.patch b/package/oprofile/0002-fix-static-build-with-binutils-2.40.patch new file mode 100644 index 00000000..3134363a --- /dev/null +++ b/package/oprofile/0002-fix-static-build-with-binutils-2.40.patch @@ -0,0 +1,62 @@ +From 1e4cd78bca2bd6e0d17b6cb9caf1b172d7bac564 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 6 May 2024 08:41:49 +0200 +Subject: [PATCH] fix static build with binutils >= 2.40 + +sframe library was added by binutils 2.40 and +https://github.com/bminor/binutils-gdb/commit/19e559f1c91bfaedbd2f91d85ee161f3f03fda3c +resulting in the following static build failure: + +/home/buildroot/autobuild/run/instance-1/output-1/build/binutils-2.41/bfd/elf-sframe.c:220: undefined reference to `sframe_decode' + +[...] + +configure: error: bfd library not found + +Fixes: + - http://autobuild.buildroot.org/results/a9f3e09e6543b3773440c011e93bd41e357691e4 + +Signed-off-by: Fabrice Fontaine +Upstream: https://sourceforge.net/p/oprofile/bugs/295 +--- + configure.ac | 2 +- + m4/binutils.m4 | 7 +++++-- + 2 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/configure.ac b/configure.ac +index dc447f89..72ef0a21 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -334,7 +334,7 @@ AX_CHECK_DOCBOOK + dnl finally restore the original libs setting + LIBS="$ORIG_SAVE_LIBS" + LIBERTY_LIBS="-liberty $DL_LIB $INTL_LIB" +-BFD_LIBS="-lbfd -liberty $DL_LIB $INTL_LIB $Z_LIB" ++BFD_LIBS="-lbfd -liberty $DL_LIB $INTL_LIB $SFRAME_LIB $Z_LIB" + POPT_LIBS="-lpopt" + AC_SUBST(LIBERTY_LIBS) + AC_SUBST(BFD_LIBS) +diff --git a/m4/binutils.m4 b/m4/binutils.m4 +index c50e2f3c..e1ccd8e7 100644 +--- a/m4/binutils.m4 ++++ b/m4/binutils.m4 +@@ -10,11 +10,14 @@ AC_CHECK_FUNCS(xmemdup) + AC_CHECK_LIB(dl, dlopen, LIBS="$LIBS -ldl"; DL_LIB="-ldl", DL_LIB="") + AC_CHECK_LIB(intl, main, LIBS="$LIBS -lintl"; INTL_LIB="-lintl", INTL_LIB="") + +-AC_CHECK_LIB(bfd, bfd_openr, LIBS="-lbfd $LIBS"; Z_LIB="", ++AC_CHECK_LIB(bfd, bfd_openr, LIBS="-lbfd $LIBS"; SFRAME_LIB=""; Z_LIB="", + [AC_CHECK_LIB(z, compress, + dnl Use a different bfd function here so as not to use cached result from above + [AC_CHECK_LIB(bfd, bfd_fdopenr, LIBS="-lbfd -lz $LIBS"; Z_LIB="-lz", +- [AC_MSG_ERROR([bfd library not found])], -lz) ++dnl Use a different bfd function here so as not to use cached result from above ++ [AC_CHECK_LIB(bfd, bfd_close, LIBS="-lbfd -lsframe -lz $LIBS"; SFRAME_LIB="-lsframe"; Z_LIB="-lz", ++ [AC_MSG_ERROR([bfd library not found])], -lsframe -lz) ++ ], -lz) + ], + [AC_MSG_ERROR([libz library not found; required by libbfd])]) + ] +-- +2.43.0 + diff --git a/package/oprofile/Config.in b/package/oprofile/Config.in new file mode 100644 index 00000000..eca43d7a --- /dev/null +++ b/package/oprofile/Config.in @@ -0,0 +1,51 @@ +# memory barrier function implemented only for some architectures +config BR2_PACKAGE_OPROFILE_ARCH_SUPPORTS + bool + default y + depends on BR2_arceb || BR2_arcle || BR2_arm || BR2_armeb || \ + BR2_aarch64 || BR2_aarch64_be || BR2_i386 || BR2_mips || \ + BR2_mipsel || BR2_mips64 || BR2_mips64el || BR2_powerpc || \ + BR2_powerpc64 || BR2_powerpc64le || BR2_s390x || 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() + 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_PACKAGE_OPROFILE_NEEDS_LIBPFM4 + select BR2_PACKAGE_POPT + select BR2_PACKAGE_BINUTILS + select BR2_PACKAGE_LIBPFM4 if BR2_PACKAGE_OPROFILE_NEEDS_LIBPFM4 + help + OProfile is a system-wide profiler for Linux systems, + capable of profiling all running code at low overhead. + OProfile is released under the GNU GPL. + + It consists of a kernel driver and a daemon for collecting + sample data, and several post-profiling tools for turning + data into information. + + OProfile leverages the hardware performance counters of the + CPU to enable profiling of a wide variety of interesting + statistics, which can also be used for basic time-spent + profiling. All code is profiled: hardware and software + interrupt handlers, kernel modules, the kernel, shared + libraries, and applications. + + https://sourceforge.net/projects/oprofile/ + +comment "oprofile needs a toolchain w/ C++, wchar" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_OPROFILE_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR + +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/package/oprofile/oprofile.hash b/package/oprofile/oprofile.hash new file mode 100644 index 00000000..7d005aa7 --- /dev/null +++ b/package/oprofile/oprofile.hash @@ -0,0 +1,6 @@ +# From http://sourceforge.net/projects/oprofile/files/oprofile/oprofile-1.4.0/ +sha1 d4d7634372d18de821b33650ad0ff7392e94c6e3 oprofile-1.4.0.tar.gz +md5 ac0ff685ec9735e30d6a4d19de0efed7 oprofile-1.4.0.tar.gz + +# Hash for license file: +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/oprofile/oprofile.mk b/package/oprofile/oprofile.mk new file mode 100644 index 00000000..590e63b4 --- /dev/null +++ b/package/oprofile/oprofile.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# oprofile +# +################################################################################ + +OPROFILE_VERSION = 1.4.0 +OPROFILE_SITE = http://downloads.sourceforge.net/project/oprofile/oprofile/oprofile-$(OPROFILE_VERSION) +OPROFILE_LICENSE = GPL-2.0+ +OPROFILE_LICENSE_FILES = COPYING +OPROFILE_CPE_ID_VENDOR = maynard_johnson +OPROFILE_CONF_OPTS = \ + --disable-account-check \ + --with-kernel=$(STAGING_DIR)/usr +# 0002-fix-static-build-with-binutils-2.40.patch +OPROFILE_AUTORECONF = YES + +define OPROFILE_CREATE_MISSING_FILES + touch $(@D)/NEWS $(@D)/AUTHORS $(@D)/ChangeLog +endef +OPROFILE_POST_EXTRACT_HOOKS += OPROFILE_CREATE_MISSING_FILES + +OPROFILE_DEPENDENCIES = popt binutils host-pkgconf + +ifeq ($(BR2_PACKAGE_LIBPFM4),y) +OPROFILE_DEPENDENCIES += libpfm4 +endif + +$(eval $(autotools-package)) diff --git a/package/optee-client/Config.in b/package/optee-client/Config.in new file mode 100644 index 00000000..738d43f8 --- /dev/null +++ b/package/optee-client/Config.in @@ -0,0 +1,92 @@ +config BR2_PACKAGE_OPTEE_CLIENT + bool "optee-client" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3 # MMC_IOC_MULTI_CMD + depends on BR2_USE_MMU # fork() + help + Enable the OP-TEE client package that brings non-secure + client application resources for OP-TEE support. OP-TEE + client is a component delivered by the OP-TEE project. + + The client API library allows application to invoke trusted + applications hosted in the OP-TEE OS secure world. The + supplicant provides services hosted by the non-secure world + and invoked by the secure world. + + https://github.com/OP-TEE/optee_client + +if BR2_PACKAGE_OPTEE_CLIENT + +choice + prompt "optee-client version" + default BR2_PACKAGE_OPTEE_CLIENT_LATEST + help + Select the version of optee-client you want to use + +config BR2_PACKAGE_OPTEE_CLIENT_LATEST + bool "4.3.0" + help + Use the latest release tag from the optee-client official Git + repository. + +config BR2_PACKAGE_OPTEE_CLIENT_CUSTOM_TARBALL + bool "Custom tarball" + help + This option allows to specify a URL pointing to an + optee-client source tarball. This URL can use any protocol + recognized by Buildroot, like http://, ftp://, file:// + or scp://. + + When pointing to a local tarball using file://, you may want + to use a make variable like $(TOPDIR) to reference the root of + the Buildroot tree. + +endchoice + +if BR2_PACKAGE_OPTEE_CLIENT_CUSTOM_TARBALL + +config BR2_PACKAGE_OPTEE_CLIENT_CUSTOM_TARBALL_LOCATION + string "URL of custom optee-client tarball" + +endif + +config BR2_PACKAGE_OPTEE_CLIENT_VERSION + string + default "4.3.0" if BR2_PACKAGE_OPTEE_CLIENT_LATEST + default "custom" if BR2_PACKAGE_OPTEE_CLIENT_CUSTOM_TARBALL + +config BR2_PACKAGE_OPTEE_CLIENT_TEE_FS_PATH + string "Path for normal world OS secure storage" + default "/data/tee" + help + Path to storage area for secure storage based on the + normal world OS providing the actual storage via + tee-supplicant. + +config BR2_PACKAGE_OPTEE_CLIENT_RPMB_EMU + bool "Enable RPMB emulation" + default y + help + Enable RPMB device emulation in tee-supplicant. + +config BR2_PACKAGE_OPTEE_CLIENT_SUPP_PLUGINS + bool "Enable TEE supplicant plugins" + default y + depends on !BR2_STATIC_LIBS # dlfcn.h + help + Enable TEE supplicant plugin support. + +config BR2_PACKAGE_OPTEE_CLIENT_TEEACL + bool "Enable TEE Access Control List login" + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Enable TEE ACL login identification for OP-TEE service that + supports them as OP-TEE PKCS#11 services. + +endif + +comment "optee-client needs a toolchain w/ threads, headers >= 4.3" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3 diff --git a/package/optee-client/S30tee-supplicant b/package/optee-client/S30tee-supplicant new file mode 100644 index 00000000..8a605dbe --- /dev/null +++ b/package/optee-client/S30tee-supplicant @@ -0,0 +1,50 @@ +#!/bin/sh + +DAEMON="tee-supplicant" +PIDFILE="/var/run/$DAEMON.pid" + +DAEMON_ARGS="-d /dev/teepriv0" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -p "$PIDFILE" -x "/usr/sbin/$DAEMON" \ + -- $DAEMON_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature (does not + # reconfigure/restart on SIGHUP, just closes all open files). + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/optee-client/optee-client.hash b/package/optee-client/optee-client.hash new file mode 100644 index 00000000..8904c930 --- /dev/null +++ b/package/optee-client/optee-client.hash @@ -0,0 +1,4 @@ +# From https://github.com/OP-TEE/optee_client/archive/4.3.0/optee-client-4.3.0.tar.gz +sha256 a9a91bdb433df795c87a6d15198effbd648e3671ae611f2a3f8b41229d61cce0 optee-client-4.3.0.tar.gz +# Locally computed +sha256 fda8385993f112d7ca61b88b54ba5b4cbeec7e43a0f9b317d5186703c1985e8f LICENSE diff --git a/package/optee-client/optee-client.mk b/package/optee-client/optee-client.mk new file mode 100644 index 00000000..de3ff1df --- /dev/null +++ b/package/optee-client/optee-client.mk @@ -0,0 +1,58 @@ +################################################################################ +# +# optee-client +# +################################################################################ + +OPTEE_CLIENT_VERSION = $(call qstrip,$(BR2_PACKAGE_OPTEE_CLIENT_VERSION)) +OPTEE_CLIENT_LICENSE = BSD-2-Clause +OPTEE_CLIENT_LICENSE_FILES = LICENSE +OPTEE_CLIENT_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_OPTEE_CLIENT_CUSTOM_TARBALL),y) +OPTEE_CLIENT_TARBALL = $(call qstrip,$(BR2_PACKAGE_OPTEE_CLIENT_CUSTOM_TARBALL_LOCATION)) +OPTEE_CLIENT_SITE = $(patsubst %/,%,$(dir $(OPTEE_CLIENT_TARBALL))) +OPTEE_CLIENT_SOURCE = $(notdir $(OPTEE_CLIENT_TARBALL)) +else +OPTEE_CLIENT_SITE = $(call github,OP-TEE,optee_client,$(OPTEE_CLIENT_VERSION)) +endif + +ifeq ($(BR2_PACKAGE_OPTEE_CLIENT):$(BR2_PACKAGE_OPTEE_CLIENT_LATEST),y:) +BR_NO_CHECK_HASH_FOR += $(OPTEE_CLIENT_SOURCE) +endif + +OPTEE_CLIENT_CONF_OPTS = \ + -DCFG_TEE_FS_PARENT_PATH=$(BR2_PACKAGE_OPTEE_CLIENT_TEE_FS_PATH) \ + -DCFG_WERROR=OFF + +ifeq ($(BR2_PACKAGE_OPTEE_CLIENT_RPMB_EMU),y) +OPTEE_CLIENT_CONF_OPTS += -DRPMB_EMU=ON +else +OPTEE_CLIENT_CONF_OPTS += -DRPMB_EMU=OFF +endif + +ifeq ($(BR2_PACKAGE_OPTEE_CLIENT_SUPP_PLUGINS),y) +OPTEE_CLIENT_CONF_OPTS += -DCFG_TEE_SUPP_PLUGINS=ON +else +OPTEE_CLIENT_CONF_OPTS += -DCFG_TEE_SUPP_PLUGINS=OFF +endif + +ifeq ($(BR2_PACKAGE_OPTEE_CLIENT_TEEACL),y) +OPTEE_CLIENT_DEPENDENCIES += host-pkgconf util-linux +OPTEE_CLIENT_CONF_OPTS += -DWITH_TEEACL=ON +else +OPTEE_CLIENT_CONF_OPTS += -DWITH_TEEACL=OFF +endif + +define OPTEE_CLIENT_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D $(OPTEE_CLIENT_PKGDIR)/S30tee-supplicant \ + $(TARGET_DIR)/etc/init.d/S30tee-supplicant +endef + +ifeq ($(BR2_PACKAGE_OPTEE_CLIENT_CUSTOM_TARBALL)$(BR_BUILDING),yy) +ifeq ($(call qstrip,$(BR2_PACKAGE_OPTEE_CLIENT_CUSTOM_TARBALL_LOCATION)),) +$(error No tarball location specified. Please check BR2_PACKAGE_OPTEE_CLIENT_CUSTOM_TARBALL_LOCATION) +endif +endif + +$(eval $(cmake-package)) diff --git a/package/optee-examples/Config.in b/package/optee-examples/Config.in new file mode 100644 index 00000000..52ef268a --- /dev/null +++ b/package/optee-examples/Config.in @@ -0,0 +1,70 @@ +config BR2_PACKAGE_OPTEE_EXAMPLES + bool "optee-examples" + depends on BR2_TARGET_OPTEE_OS + depends on BR2_TOOLCHAIN_HAS_THREADS # optee-client + depends on !BR2_STATIC_LIBS # optee-client + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3 # optee-client + depends on BR2_USE_MMU # optee-client + select BR2_PACKAGE_OPTEE_CLIENT + select BR2_TARGET_OPTEE_OS_SDK + help + Enable the OP-TEE examples package that brings examples of + implementation of OP-TEE non-secure client applications and + secure trusted applications. OP-TEE examples is a + component delivered by the OP-TEE project. + + Trusted application binary files are installed in the target + directory /lib/optee_armtz as other trusted applications. + At runtime OP-TEE OS can load trusted applications from this + non-secure filesystem/directory into the secure world for + execution. + + https://github.com/linaro-swg/optee_examples + +comment "optee-examples needs a toolchain w/ threads, dynamic library, headers >= 4.3" + depends on BR2_TARGET_OPTEE_OS + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3 + +if BR2_PACKAGE_OPTEE_EXAMPLES + +choice + prompt "optee-examples version" + default BR2_PACKAGE_OPTEE_EXAMPLES_LATEST + help + Select the version of optee-examples you want to use + +config BR2_PACKAGE_OPTEE_EXAMPLES_LATEST + bool "4.3.0" + help + Use the latest release tag from the optee-examples official + Git repository. + +config BR2_PACKAGE_OPTEE_EXAMPLES_CUSTOM_TARBALL + bool "Custom tarball" + help + This option allows to specify a URL pointing to an + optee-examples source tarball. This URL can use any protocol + recognized by Buildroot, like http://, ftp://, file:// or + scp://. + + When pointing to a local tarball using file://, you may want + to use a make variable like $(TOPDIR) to reference the root of + the Buildroot tree. + +endchoice + +if BR2_PACKAGE_OPTEE_EXAMPLES_CUSTOM_TARBALL + +config BR2_PACKAGE_OPTEE_EXAMPLES_CUSTOM_TARBALL_LOCATION + string "URL of custom optee-examples tarball" + +endif + +config BR2_PACKAGE_OPTEE_EXAMPLES_VERSION + string + default "4.3.0" if BR2_PACKAGE_OPTEE_EXAMPLES_LATEST + default "custom" if BR2_PACKAGE_OPTEE_EXAMPLES_CUSTOM_TARBALL + +endif # BR2_PACKAGE_OPTEE_EXAMPLES diff --git a/package/optee-examples/optee-examples.hash b/package/optee-examples/optee-examples.hash new file mode 100644 index 00000000..a6ecd2ca --- /dev/null +++ b/package/optee-examples/optee-examples.hash @@ -0,0 +1,4 @@ +# From https://github.com/linaro-swg/optee_examples/archive/4.3.0/optee-examples-4.3.0.tar.gz +sha256 ee1576617365b5fe9d20d72c16cf6b39159eb79b1401189bd37a91ef03371820 optee-examples-4.3.0.tar.gz +# Locally computed +sha256 6f1ef8449cb82ae79d2155605f7985bdf0f08e7ab5007de9b4362e8bf28733b9 LICENSE diff --git a/package/optee-examples/optee-examples.mk b/package/optee-examples/optee-examples.mk new file mode 100644 index 00000000..fc90cfcf --- /dev/null +++ b/package/optee-examples/optee-examples.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# optee-examples +# +################################################################################ + +OPTEE_EXAMPLES_VERSION = $(call qstrip,$(BR2_PACKAGE_OPTEE_EXAMPLES_VERSION)) +OPTEE_EXAMPLES_LICENSE = BSD-2-Clause +OPTEE_EXAMPLES_LICENSE_FILES = LICENSE + +ifeq ($(BR2_PACKAGE_OPTEE_EXAMPLES_CUSTOM_TARBALL),y) +OPTEE_EXAMPLES_TARBALL = $(call qstrip,$(BR2_PACKAGE_OPTEE_EXAMPLES_CUSTOM_TARBALL_LOCATION)) +OPTEE_EXAMPLES_SITE = $(patsubst %/,%,$(dir $(OPTEE_EXAMPLES_TARBALL))) +OPTEE_EXAMPLES_SOURCE = $(notdir $(OPTEE_EXAMPLES_TARBALL)) +else +OPTEE_EXAMPLES_SITE = $(call github,linaro-swg,optee_examples,$(OPTEE_EXAMPLES_VERSION)) +endif + +ifeq ($(BR2_PACKAGE_OPTEE_EXAMPLES):$(BR2_PACKAGE_OPTEE_EXAMPLES_LATEST),y:) +BR_NO_CHECK_HASH_FOR += $(OPTEE_EXAMPLES_SOURCE) +endif + +OPTEE_EXAMPLES_DEPENDENCIES = optee-client optee-os + +# Trusted Application are not built from CMake due to ta_dev_kit dependencies. +# We must build and install them on target. +define OPTEE_EXAMPLES_BUILD_TAS + $(foreach f,$(wildcard $(@D)/*/ta/Makefile), \ + $(TARGET_CONFIGURE_OPTS) \ + $(MAKE) CROSS_COMPILE=$(TARGET_CROSS) \ + TA_DEV_KIT_DIR=$(OPTEE_OS_SDK) \ + O=out -C $(dir $f) all + ) +endef +define OPTEE_EXAMPLES_INSTALL_TAS + @mkdir -p $(TARGET_DIR)/lib/optee_armtz + @$(INSTALL) -D -m 444 -t $(TARGET_DIR)/lib/optee_armtz $(@D)/*/ta/out/*.ta +endef +OPTEE_EXAMPLES_POST_BUILD_HOOKS += OPTEE_EXAMPLES_BUILD_TAS +OPTEE_EXAMPLES_POST_INSTALL_TARGET_HOOKS += OPTEE_EXAMPLES_INSTALL_TAS + +ifeq ($(BR2_PACKAGE_OPTEE_EXAMPLES_CUSTOM_TARBALL)$(BR_BUILDING),yy) +ifeq ($(call qstrip,$(BR2_PACKAGE_OPTEE_EXAMPLES_CUSTOM_TARBALL_LOCATION)),) +$(error No tarball location specified. Please check BR2_PACKAGE_OPTEE_EXAMPLES_CUSTOM_TARBALL_LOCATION) +endif +endif + +$(eval $(cmake-package)) diff --git a/package/optee-test/Config.in b/package/optee-test/Config.in new file mode 100644 index 00000000..a29eb355 --- /dev/null +++ b/package/optee-test/Config.in @@ -0,0 +1,74 @@ +config BR2_PACKAGE_OPTEE_TEST + bool "optee-test" + depends on BR2_TARGET_OPTEE_OS + depends on BR2_TOOLCHAIN_HAS_THREADS # optee-client + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS # optee-client + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3 # optee-client + depends on BR2_USE_MMU # optee-client + select BR2_PACKAGE_OPTEE_CLIENT + select BR2_TARGET_OPTEE_OS_SDK + help + This build option enables OP-TEE test package from the + OP-TEE project. It helps platforms to verify the OP-TEE + installation against a set of regression and performance + tests. + + The package generates userspace test applications and + data files for the Linux userland. It also generates + OP-TEE trusted applications. + + Trusted application binary files are installed in the target + directory /lib/optee_armtz as other trusted applications. + At runtime OP-TEE OS can load trusted applications from this + non-secure filesystem/directory into the secure world for + execution. + + http://github.com/OP-TEE/optee_test + +comment "optee-test needs a toolchain w/ threads, C++, dynamic library, headers >= 4.3" + depends on BR2_TARGET_OPTEE_OS + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \ + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3 + +if BR2_PACKAGE_OPTEE_TEST + +choice + prompt "optee-test version" + default BR2_PACKAGE_OPTEE_TEST_LATEST if BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS + help + Select the version of optee-test you want to use + +config BR2_PACKAGE_OPTEE_TEST_LATEST + bool "4.3.0" + help + Use the latest release tag from the optee-test official Git + repository. + +config BR2_PACKAGE_OPTEE_TEST_CUSTOM_TARBALL + bool "Custom tarball" + help + This option allows to specify a URL pointing to an optee-test + source tarball. This URL can use any protocol recognized by + Buildroot, like http://, ftp://, file:// or scp://. + + When pointing to a local tarball using file://, you may want + to use a make variable like $(TOPDIR) to reference the root of + the Buildroot tree. + +endchoice + +if BR2_PACKAGE_OPTEE_TEST_CUSTOM_TARBALL + +config BR2_PACKAGE_OPTEE_TEST_CUSTOM_TARBALL_LOCATION + string "URL of custom optee-test tarball" + +endif + +config BR2_PACKAGE_OPTEE_TEST_VERSION + string + default "4.3.0" if BR2_PACKAGE_OPTEE_TEST_LATEST + default "custom" if BR2_PACKAGE_OPTEE_TEST_CUSTOM_TARBALL + +endif # BR2_PACKAGE_OPTEE_TEST diff --git a/package/optee-test/optee-test.hash b/package/optee-test/optee-test.hash new file mode 100644 index 00000000..5922487a --- /dev/null +++ b/package/optee-test/optee-test.hash @@ -0,0 +1,4 @@ +# From https://github.com/OP-TEE/optee_test/archive/4.3.0/optee-test-4.3.0.tar.gz +sha256 7bb181b74be88593df48321b816837acaad8e4d45e883f25a2e039978e5ec415 optee-test-4.3.0.tar.gz +# Locally computed +sha256 6e6810981f0ddab9e0d44399d0700a15d9f760a3c2843cc866659c2074139ae7 LICENSE.md diff --git a/package/optee-test/optee-test.mk b/package/optee-test/optee-test.mk new file mode 100644 index 00000000..c250639d --- /dev/null +++ b/package/optee-test/optee-test.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# optee-test +# +################################################################################ + +OPTEE_TEST_VERSION = $(call qstrip,$(BR2_PACKAGE_OPTEE_TEST_VERSION)) +OPTEE_TEST_LICENSE = GPL-2.0, BSD-2-Clause, +OPTEE_TEST_LICENSE_FILES = LICENSE.md + +ifeq ($(BR2_PACKAGE_OPTEE_TEST_CUSTOM_TARBALL),y) +OPTEE_TEST_TARBALL = $(call qstrip,$(BR2_PACKAGE_OPTEE_TEST_CUSTOM_TARBALL_LOCATION)) +OPTEE_TEST_SITE = $(patsubst %/,%,$(dir $(OPTEE_TEST_TARBALL))) +OPTEE_TEST_SOURCE = $(notdir $(OPTEE_TEST_TARBALL)) +else +OPTEE_TEST_SITE = $(call github,OP-TEE,optee_test,$(OPTEE_TEST_VERSION)) +endif + +ifeq ($(BR2_PACKAGE_OPTEE_TEST):$(BR2_PACKAGE_OPTEE_TEST_LATEST),y:) +BR_NO_CHECK_HASH_FOR += $(OPTEE_TEST_SOURCE) +endif + +OPTEE_TEST_DEPENDENCIES = optee-client optee-os + +ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) +OPTEE_TEST_DEPENDENCIES += libopenssl +endif + +OPTEE_TEST_CONF_OPTS = -DOPTEE_TEST_SDK=$(OPTEE_OS_SDK) + +# Trusted Application are not built from CMake due to ta_dev_kit +# dependencies. We must build and install them on target. +define OPTEE_TEST_BUILD_TAS + $(foreach f,$(wildcard $(@D)/ta/*_lib/Makefile) $(wildcard $(@D)/ta/*/Makefile), \ + $(TARGET_CONFIGURE_OPTS) \ + $(MAKE) CROSS_COMPILE=$(TARGET_CROSS) \ + TA_DEV_KIT_DIR=$(OPTEE_OS_SDK) \ + -C $(dir $f) all + ) +endef +define OPTEE_TEST_INSTALL_TAS + @mkdir -p $(TARGET_DIR)/lib/optee_armtz + @$(INSTALL) -D -m 444 -t $(TARGET_DIR)/lib/optee_armtz $(@D)/ta/*/*.ta +endef +OPTEE_TEST_POST_BUILD_HOOKS += OPTEE_TEST_BUILD_TAS +OPTEE_TEST_POST_INSTALL_TARGET_HOOKS += OPTEE_TEST_INSTALL_TAS + +ifeq ($(BR2_PACKAGE_OPTEE_TEST_CUSTOM_TARBALL)$(BR_BUILDING),yy) +ifeq ($(call qstrip,$(BR2_PACKAGE_OPTEE_TEST_CUSTOM_TARBALL_LOCATION)),) +$(error No tarball location specified. Please check BR2_PACKAGE_OPTEE_TEST_CUSTOM_TARBALL_LOCATION) +endif +endif + +$(eval $(cmake-package)) diff --git a/package/opus-tools/Config.in b/package/opus-tools/Config.in new file mode 100644 index 00000000..c045239e --- /dev/null +++ b/package/opus-tools/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_OPUS_TOOLS + bool "opus-tools" + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_LIBOPUSENC + select BR2_PACKAGE_OPUS + select BR2_PACKAGE_OPUSFILE + help + Opus codec command line tools. This package provides the + reference implementations of encoder and decoder utilities + for libopus. + + http://opus-codec.org diff --git a/package/opus-tools/opus-tools.hash b/package/opus-tools/opus-tools.hash new file mode 100644 index 00000000..1f66695d --- /dev/null +++ b/package/opus-tools/opus-tools.hash @@ -0,0 +1,5 @@ +# From http://downloads.xiph.org/releases/opus/SHA256SUMS.txt +sha256 b4e56cb00d3e509acfba9a9b627ffd8273b876b4e2408642259f6da28fa0ff86 opus-tools-0.2.tar.gz + +# Hash for license file +sha256 c28016e58544119d6b93aea28297d040f17dcef7a9f548d3e6a4d0b558c5d248 COPYING diff --git a/package/opus-tools/opus-tools.mk b/package/opus-tools/opus-tools.mk new file mode 100644 index 00000000..f69c3bef --- /dev/null +++ b/package/opus-tools/opus-tools.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# opus-tools +# +################################################################################ + +OPUS_TOOLS_VERSION = 0.2 +OPUS_TOOLS_SITE = https://downloads.xiph.org/releases/opus +OPUS_TOOLS_LICENSE = BSD-2-Clause, GPL-2.0 (opusinfo) +OPUS_TOOLS_LICENSE_FILES = COPYING +OPUS_TOOLS_CONF_OPTS = --disable-oggtest --disable-opustest +OPUS_TOOLS_DEPENDENCIES = libogg libopusenc opus opusfile host-pkgconf + +ifeq ($(BR2_PACKAGE_LIBPCAP),y) +OPUS_TOOLS_DEPENDENCIES += libpcap +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE),y) +OPUS_TOOLS_CONF_OPTS += --enable-sse +else +OPUS_TOOLS_CONF_OPTS += --disable-sse +endif + +ifeq ($(BR2_PACKAGE_FLAC),y) +OPUS_TOOLS_DEPENDENCIES += flac +else +OPUS_TOOLS_CONF_OPTS += --without-flac +endif + +$(eval $(autotools-package)) diff --git a/package/opus/Config.in b/package/opus/Config.in new file mode 100644 index 00000000..22e7a553 --- /dev/null +++ b/package/opus/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_OPUS + bool "opus" + help + The Opus codec is designed for interactive speech and audio + transmission over the Internet. It is designed by the IETF + Codec Working Group and incorporates technology from Skype's + SILK codec and Xiph.Org's CELT codec. + + It is intended to suit a wide range of interactive audio + applications, including Voice over IP, videoconferencing, + in-game chat, and even remote live music performances. It + can scale from low bit-rate narrowband speech to very high + quality stereo music. + + http://opus-codec.org + +if BR2_PACKAGE_OPUS + +config BR2_PACKAGE_OPUS_FIXED_POINT + bool "use fixed-point" if !BR2_SOFT_FLOAT + default y if BR2_SOFT_FLOAT + help + Compile without floating point operations (for machines + without a fast enough FPU). + +endif diff --git a/package/opus/opus.hash b/package/opus/opus.hash new file mode 100644 index 00000000..7569ee08 --- /dev/null +++ b/package/opus/opus.hash @@ -0,0 +1,5 @@ +# From http://downloads.xiph.org/releases/opus/SHA256SUMS.txt +sha256 c9b32b4253be5ae63d1ff16eea06b94b5f0f2951b7a02aceef58e3a3ce49c51f opus-1.4.tar.gz + +# Hash for license file +sha256 8338ce8d922bb4416ce3dd1e5680173332435e3f0755007ac7801ccd674fe682 COPYING diff --git a/package/opus/opus.mk b/package/opus/opus.mk new file mode 100644 index 00000000..cbc07a09 --- /dev/null +++ b/package/opus/opus.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# opus +# +################################################################################ + +OPUS_VERSION = 1.4 +OPUS_SITE = https://downloads.xiph.org/releases/opus +OPUS_LICENSE = BSD-3-Clause +OPUS_LICENSE_FILES = COPYING +OPUS_CPE_ID_VENDOR = opus-codec +OPUS_INSTALL_STAGING = YES + +OPUS_CFLAGS = $(TARGET_CFLAGS) + +# opus has ARM assembly optimizations not compatible with thumb1: +# Error: selected processor does not support `smull r6,ip,r5,r0' in Thumb mode +# so force ARM mode +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +OPUS_CFLAGS += -marm +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +OPUS_CFLAGS += -O0 +endif + +OPUS_CONF_ENV = CFLAGS="$(OPUS_CFLAGS)" +OPUS_CONF_OPTS = --enable-custom-modes + +ifeq ($(BR2_PACKAGE_OPUS_FIXED_POINT),y) +OPUS_CONF_OPTS += --enable-fixed-point +endif + +ifeq ($(BR2_OPTIMIZE_FAST),y) +OPUS_CONF_OPTS += --enable-float-approx +endif + +# When we're on ARM, but we don't have ARM instructions (only +# Thumb-2), disable the usage of assembly as it is not Thumb-ready. +ifeq ($(BR2_arm)$(BR2_armeb):$(BR2_ARM_CPU_HAS_ARM),y:) +OPUS_CONF_OPTS += --disable-asm +endif + +$(eval $(autotools-package)) diff --git a/package/opusfile/0001-Propagate-allocation-failure-from-ogg_sync_buffer.patch b/package/opusfile/0001-Propagate-allocation-failure-from-ogg_sync_buffer.patch new file mode 100644 index 00000000..2ef08502 --- /dev/null +++ b/package/opusfile/0001-Propagate-allocation-failure-from-ogg_sync_buffer.patch @@ -0,0 +1,44 @@ +From 0a4cd796df5b030cb866f3f4a5e41a4b92caddf5 Mon Sep 17 00:00:00 2001 +From: Ralph Giles +Date: Tue, 6 Sep 2022 19:04:31 -0700 +Subject: [PATCH] Propagate allocation failure from ogg_sync_buffer. + +Instead of segfault, report OP_EFAULT if ogg_sync_buffer returns +a null pointer. This allows more graceful recovery by the caller +in the unlikely event of a fallible ogg_malloc call. + +We do check the return value elsewhere in the code, so the new +checks make the code more consistent. + +Thanks to https://github.com/xiph/opusfile/issues/36 for reporting. + +Signed-off-by: Timothy B. Terriberry +Signed-off-by: Mark Harris + +[Retrieved from: +https://github.com/xiph/opusfile/commit/0a4cd796df5b030cb866f3f4a5e41a4b92caddf5] +Signed-off-by: Fabrice Fontaine +--- + src/opusfile.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/opusfile.c b/src/opusfile.c +index ca219b2..3c3c81e 100644 +--- a/src/opusfile.c ++++ b/src/opusfile.c +@@ -148,6 +148,7 @@ static int op_get_data(OggOpusFile *_of,int _nbytes){ + int nbytes; + OP_ASSERT(_nbytes>0); + buffer=(unsigned char *)ogg_sync_buffer(&_of->oy,_nbytes); ++ if(OP_UNLIKELY(buffer==NULL))return OP_EFAULT; + nbytes=(int)(*_of->callbacks.read)(_of->stream,buffer,_nbytes); + OP_ASSERT(nbytes<=_nbytes); + if(OP_LIKELY(nbytes>0))ogg_sync_wrote(&_of->oy,nbytes); +@@ -1527,6 +1528,7 @@ static int op_open1(OggOpusFile *_of, + if(_initial_bytes>0){ + char *buffer; + buffer=ogg_sync_buffer(&_of->oy,(long)_initial_bytes); ++ if(OP_UNLIKELY(buffer==NULL))return OP_EFAULT; + memcpy(buffer,_initial_data,_initial_bytes*sizeof(*buffer)); + ogg_sync_wrote(&_of->oy,(long)_initial_bytes); + } diff --git a/package/opusfile/Config.in b/package/opusfile/Config.in new file mode 100644 index 00000000..63e0786f --- /dev/null +++ b/package/opusfile/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_OPUSFILE + bool "opusfile" + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_OPUS + help + A convenient high-level API for decoding and basic + manipulation of all Ogg Opus audio streams. + + http://opus-codec.org diff --git a/package/opusfile/opusfile.hash b/package/opusfile/opusfile.hash new file mode 100644 index 00000000..30bf9b36 --- /dev/null +++ b/package/opusfile/opusfile.hash @@ -0,0 +1,5 @@ +# From http://downloads.xiph.org/releases/opus/SHA256SUMS.txt +sha256 118d8601c12dd6a44f52423e68ca9083cc9f2bfe72da7a8c1acb22a80ae3550b opusfile-0.12.tar.gz + +# Hash for license file +sha256 0267ae795ab744c4e0f9c45e249440fdf2e75dac8c804f36066b28649bf74aaf COPYING diff --git a/package/opusfile/opusfile.mk b/package/opusfile/opusfile.mk new file mode 100644 index 00000000..efd38c54 --- /dev/null +++ b/package/opusfile/opusfile.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# opusfile +# +################################################################################ + +OPUSFILE_VERSION = 0.12 +OPUSFILE_SITE = https://downloads.xiph.org/releases/opus +OPUSFILE_DEPENDENCIES = host-pkgconf libogg opus +OPUSFILE_LICENSE = BSD-3-Clause +OPUSFILE_LICENSE_FILES = COPYING +OPUSFILE_CPE_ID_VENDOR = xiph +OPUSFILE_INSTALL_STAGING = YES + +# 0001-Propagate-allocation-failure-from-ogg_sync_buffer.patch +OPUSFILE_IGNORE_CVES += CVE-2022-47021 + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +OPUSFILE_DEPENDENCIES += openssl +else +OPUSFILE_CONF_OPTS += --disable-http +endif + +# Use the same as opus package since it's a dep and we can't mix +ifeq ($(BR2_PACKAGE_OPUS_FIXED_POINT),y) +OPUSFILE_CONF_OPTS += --enable-fixed-point +endif + +$(eval $(autotools-package)) diff --git a/package/orbit/Config.in b/package/orbit/Config.in new file mode 100644 index 00000000..7b6e9a43 --- /dev/null +++ b/package/orbit/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_ORBIT + bool "orbit" + depends on BR2_PACKAGE_LUA_5_1 || BR2_PACKAGE_LUAJIT + select BR2_PACKAGE_LPEG # runtime + select BR2_PACKAGE_LUAFILESYSTEM # runtime + select BR2_PACKAGE_WSAPI_XAVANTE # runtime + help + An MVC web framework for Lua. The design is inspired by + lightweight Ruby frameworks such as Camping + + http://keplerproject.github.com/orbit + +comment "orbit needs a Lua 5.1 interpreter" + depends on !BR2_PACKAGE_LUA_5_1 + depends on !BR2_PACKAGE_LUAJIT diff --git a/package/orbit/orbit.hash b/package/orbit/orbit.hash new file mode 100644 index 00000000..8f425417 --- /dev/null +++ b/package/orbit/orbit.hash @@ -0,0 +1,4 @@ +# computed by luarocks/buildroot +sha256 91e3c514d5b86918db83666c8889635bb2d50c71d1ab3aeb69c6469c9424089b orbit-2.2.4-1.src.rock +sha256 dd7d37caed0f4ee994e9e64ea4ab292dce549bb609412c84fc47ed079275ae98 orbit/doc/us/license.html +sha256 140134369c1f041abf7d8cd39a5b0c42f8b5e827695ce7c1ef5ca8f0911a0246 orbit/doc/us/license.md diff --git a/package/orbit/orbit.mk b/package/orbit/orbit.mk new file mode 100644 index 00000000..5cf7ac64 --- /dev/null +++ b/package/orbit/orbit.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# orbit +# +################################################################################ + +ORBIT_VERSION = 2.2.4-1 +ORBIT_SUBDIR = orbit +ORBIT_LICENSE = MIT +ORBIT_LICENSE_FILES = \ + $(ORBIT_SUBDIR)/doc/us/license.html \ + $(ORBIT_SUBDIR)/doc/us/license.md + +$(eval $(luarocks-package)) diff --git a/package/orc/Config.in b/package/orc/Config.in new file mode 100644 index 00000000..90f2b326 --- /dev/null +++ b/package/orc/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_ORC + bool "orc" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Orc is a library and set of tools for compiling and executing + very simple programs that operate on arrays of data. + + https://gstreamer.freedesktop.org/projects/orc.html + +comment "orc needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/orc/orc.hash b/package/orc/orc.hash new file mode 100644 index 00000000..1e584c11 --- /dev/null +++ b/package/orc/orc.hash @@ -0,0 +1,5 @@ +# From https://gstreamer.freedesktop.org/data/src/orc/orc-0.4.34.tar.xz.sha256sum +sha256 8f47abb3f097171e44eb807adcdabd860fba2effd37d8d3c4fbd5f341cadd41f orc-0.4.34.tar.xz + +# Locally calculated +sha256 4f5dabb1b44bb6fc5cd53820b1f103147ad61b395a57903991325bd1b85d97bf COPYING diff --git a/package/orc/orc.mk b/package/orc/orc.mk new file mode 100644 index 00000000..b2d2bb46 --- /dev/null +++ b/package/orc/orc.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# orc +# +################################################################################ + +ORC_VERSION = 0.4.34 +ORC_SOURCE = orc-$(ORC_VERSION).tar.xz +ORC_SITE = http://gstreamer.freedesktop.org/data/src/orc +ORC_LICENSE = BSD-2-Clause, BSD-3-Clause +ORC_LICENSE_FILES = COPYING +ORC_INSTALL_STAGING = YES +ORC_DEPENDENCIES = host-orc +ORC_CONF_OPTS = \ + -Dbenchmarks=disabled \ + -Dexamples=disabled \ + -Dgtk_doc=disabled \ + -Dorc-test=disabled \ + -Dtests=disabled \ + -Dtools=disabled + +$(eval $(meson-package)) +$(eval $(host-meson-package)) diff --git a/package/ortp/Config.in b/package/ortp/Config.in new file mode 100644 index 00000000..e296e82f --- /dev/null +++ b/package/ortp/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_ORTP + bool "oRTP" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # bctoolbox + select BR2_PACKAGE_BCTOOLBOX + help + oRTP, a Real-time Transport Protocol (RTP,RFC3550) library + + https://www.linphone.org/technical-corner/ortp + +comment "ortp needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + +comment "ortp needs a toolchain not affected by GCC bug 64735" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/ortp/ortp.hash b/package/ortp/ortp.hash new file mode 100644 index 00000000..7853c631 --- /dev/null +++ b/package/ortp/ortp.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 9b1d43f676a35920e2837abc0eb4d600d4d3e47d2621fa3b0897777cf587ee8d ortp-4.4.8.tar.gz +sha256 1b3782ccad7b8614100cda30d3faf42fc39f2e97932908c543005053b654ca68 LICENSE.txt diff --git a/package/ortp/ortp.mk b/package/ortp/ortp.mk new file mode 100644 index 00000000..67bef9ae --- /dev/null +++ b/package/ortp/ortp.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# ortp +# +################################################################################ + +ORTP_VERSION = 4.4.8 +ORTP_SITE = https://gitlab.linphone.org/BC/public/ortp/-/archive/$(ORTP_VERSION) +ORTP_LICENSE = GPL-3.0+ +ORTP_LICENSE_FILES = LICENSE.txt +ORTP_INSTALL_STAGING = YES +ORTP_DEPENDENCIES = bctoolbox +ORTP_CONF_OPTS = \ + -DENABLE_DOC=OFF \ + -DENABLE_STRICT=OFF + +ifeq ($(BR2_STATIC_LIBS),y) +ORTP_CONF_OPTS += -DENABLE_STATIC=ON -DENABLE_SHARED=OFF +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +ORTP_CONF_OPTS += -DENABLE_STATIC=ON -DENABLE_SHARED=ON +else ifeq ($(BR2_SHARED_LIBS),y) +ORTP_CONF_OPTS += -DENABLE_STATIC=OFF -DENABLE_SHARED=ON +endif + +$(eval $(cmake-package)) diff --git a/package/osm2pgsql/Config.in b/package/osm2pgsql/Config.in new file mode 100644 index 00000000..439309df --- /dev/null +++ b/package/osm2pgsql/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_OSM2PGSQL + bool "osm2pgsql" + depends on BR2_ARCH_IS_64 + depends on BR2_INSTALL_LIBSTDCPP # boost, libosmium, protozero + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14 + depends on BR2_TOOLCHAIN_HAS_THREADS # boost, libosmium + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-filesystem + depends on BR2_USE_WCHAR # boost, libosmium + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::future + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_JSON_FOR_MODERN_CPP + select BR2_PACKAGE_LIBOSMIUM + select BR2_PACKAGE_PROTOZERO + select BR2_PACKAGE_ZLIB + help + osm2pgsql is a tool for loading OpenStreetMap data into a + PostgreSQL / PostGIS database suitable for applications like + rendering into a map, geocoding with Nominatim, + or general analysis. + + https://osm2pgsql.org + +comment "osm2pgsql needs a toolchain w/ C++, wchar, threads, gcc >= 4.9" + depends on BR2_ARCH_IS_64 + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_TOOLCHAIN_HAS_THREADS + +comment "osm2pgsql needs a toolchain not affected by GCC bug 64735" + depends on BR2_ARCH_IS_64 + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/osm2pgsql/osm2pgsql.hash b/package/osm2pgsql/osm2pgsql.hash new file mode 100644 index 00000000..df3302b2 --- /dev/null +++ b/package/osm2pgsql/osm2pgsql.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 6b46313813b816f15ce906c04cd4108bbb05362740e0a1a8889055f4e25977d2 osm2pgsql-1.11.0.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/osm2pgsql/osm2pgsql.mk b/package/osm2pgsql/osm2pgsql.mk new file mode 100644 index 00000000..846a4ea2 --- /dev/null +++ b/package/osm2pgsql/osm2pgsql.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# osm2pgsql +# +################################################################################ + +OSM2PGSQL_VERSION = 1.11.0 +OSM2PGSQL_SITE = $(call github,openstreetmap,osm2pgsql,$(OSM2PGSQL_VERSION)) +OSM2PGSQL_LICENSE = GPL-2.0+ +OSM2PGSQL_LICENSE_FILES = COPYING +OSM2PGSQL_SUPPORTS_IN_SOURCE_BUILD = NO + +OSM2PGSQL_DEPENDENCIES = boost bzip2 expat json-for-modern-cpp libosmium postgresql protozero zlib + +# fmt > 8.0 is not yet supported +OSM2PGSQL_CONF_OPTS = \ + -DBUILD_TESTS=OFF \ + -DBUILD_COVERAGE=OFF \ + -DEXTERNAL_FMT=OFF \ + -DEXTERNAL_LIBOSMIUM=ON \ + -DEXTERNAL_PROTOZERO=ON + +ifeq ($(BR2_PACKAGE_LUAJIT),y) +OSM2PGSQL_DEPENDENCIES += luajit +OSM2PGSQL_CONF_OPTS += -DWITH_LUA=ON -DWITH_LUAJIT=ON +else ifeq ($(BR2_PACKAGE_LUA),y) +OSM2PGSQL_DEPENDENCIES += lua +OSM2PGSQL_CONF_OPTS += -DWITH_LUA=ON -DWITH_LUAJIT=OFF +else +OSM2PGSQL_CONF_OPTS += -DWITH_LUA=OFF -DWITH_LUAJIT=OFF +endif + +ifeq ($(BR2_PACKAGE_PROJ),y) +OSM2PGSQL_DEPENDENCIES += proj +OSM2PGSQL_CONF_OPTS += -DUSE_PROJ_LIB=auto +else +OSM2PGSQL_CONF_OPTS += -DUSE_PROJ_LIB=off +endif + +$(eval $(cmake-package)) diff --git a/package/owfs/Config.in b/package/owfs/Config.in new file mode 100644 index 00000000..802d1e46 --- /dev/null +++ b/package/owfs/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_OWFS + bool "owfs" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + OWFS is an easy way to use the powerful 1-wire system of + Dallas/Maxim. + + OWFS is a simple and flexible program to monitor and control + the physical environment. You can write scripts to read + temperature, flash lights, write to an LCD, log and graph, + etc. + + http://owfs.org/ + +comment "owfs needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/owfs/S55owserver b/package/owfs/S55owserver new file mode 100644 index 00000000..b8da768e --- /dev/null +++ b/package/owfs/S55owserver @@ -0,0 +1,31 @@ +NAME="owserver" +DAEMON="/usr/bin/${NAME}" +PID_F="/run/${NAME}.pid" + +OWSERVER_ARGS= +[ -r /etc/default/${NAME} ] && . /etc/default/${NAME} + +case "$1" in +start) + printf "Starting ${NAME}: " + if [ -z "${OWSERVER_ARGS}" ]; then + echo "OWSERVER_ARGS must be set in defaults file" 1>&2 + exit 1 + fi + start-stop-daemon -S -x ${DAEMON} -- \ + --pid_file ${PID_F} ${OWSERVER_ARGS} + [ $? -eq 0 ] && echo "OK" || echo "FAIL" + ;; +stop) + printf "Stopping ${NAME}: " + start-stop-daemon -K -p ${PID_F} + [ $? -eq 0 ] && echo "OK" || echo "FAIL" + ;; +restart|reload) + $0 stop + $0 start + ;; +*) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/owfs/S60owfs b/package/owfs/S60owfs new file mode 100644 index 00000000..feed676f --- /dev/null +++ b/package/owfs/S60owfs @@ -0,0 +1,33 @@ +NAME="owfs" +DAEMON="/usr/bin/${NAME}" +PID_F="/run/${NAME}.pid" +OWFS_MOUNTPOINT="/dev/1wire" +OWFS_DEVICES="-s localhost:4304" +OWFS_ARGS="" + +[ -r /etc/default/${NAME} ] && . /etc/default/${NAME} + +case "$1" in +start) + printf "Starting ${NAME}: " + # Fuse may be in a module, so try to load it + modprobe -q fuse && printf "[fuse] " + mkdir -p ${OWFS_MOUNTPOINT} + start-stop-daemon -S -x ${DAEMON} -- \ + --pid_file ${PID_F} -m ${OWFS_MOUNTPOINT} ${OWFS_DEVICES} \ + ${OWFS_ARGS} + [ $? -eq 0 ] && echo "OK" || echo "FAIL" + ;; +stop) + printf "Stopping ${NAME}: " + start-stop-daemon -K -p ${PID_F} + [ $? -eq 0 ] && echo "OK" || echo "FAIL" + ;; +restart|reload) + $0 stop + $0 start + ;; +*) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/owfs/owfs.hash b/package/owfs/owfs.hash new file mode 100644 index 00000000..e2c51077 --- /dev/null +++ b/package/owfs/owfs.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 af0a5035f3f3df876ca15aea13486bfed6b3ef5409dee016db0be67755c35fcc owfs-3.2p4.tar.gz +sha256 1f0527ab035eefb5197c68633d06f50f5077c719d82a99344702ceaca29150b9 COPYING +sha256 8a6601b893d5784d931b2ede64a406fac463acfbb7014914e27de4d6e68457c3 COPYING.LIB diff --git a/package/owfs/owfs.mk b/package/owfs/owfs.mk new file mode 100644 index 00000000..6b222824 --- /dev/null +++ b/package/owfs/owfs.mk @@ -0,0 +1,86 @@ +################################################################################ +# +# owfs +# +################################################################################ + +OWFS_VERSION = 3.2p4 +OWFS_SITE = https://github.com/owfs/owfs/releases/download/v$(OWFS_VERSION) +OWFS_DEPENDENCIES = host-pkgconf +OWFS_CONF_OPTS = --disable-owperl --without-perl5 --disable-owtcl --without-tcl + +# owtcl license is declared in module/ownet/c/src/include/ow_functions.h +OWFS_LICENSE = GPL-2.0+, LGPL-2.0 (owtcl) +OWFS_LICENSE_FILES = COPYING COPYING.LIB +OWFS_INSTALL_STAGING = YES + +# owfs PHP support is not PHP 7 compliant +# https://sourceforge.net/p/owfs/support-requests/32/ +OWFS_CONF_OPTS += --disable-owphp --without-php + +# Skip man pages processing +OWFS_CONF_ENV += ac_cv_path_SOELIM=true + +ifeq ($(BR2_PACKAGE_LIBFUSE),y) +OWFS_DEPENDENCIES += libfuse +OWFS_CONF_OPTS += \ + --enable-owfs \ + --with-fuseinclude=$(STAGING_DIR)/usr/include \ + --with-fuselib=$(STAGING_DIR)/usr/lib +define OWFS_INSTALL_FUSE_INIT_SYSV + $(INSTALL) -D -m 0755 $(OWFS_PKGDIR)/S60owfs \ + $(TARGET_DIR)/etc/init.d/S60owfs +endef +define OWFS_CREATE_MOUNTPOINT + mkdir -p $(TARGET_DIR)/dev/1wire +endef +OWFS_POST_INSTALL_TARGET_HOOKS += OWFS_CREATE_MOUNTPOINT +else +OWFS_CONF_OPTS += --disable-owfs +endif + +ifeq ($(BR2_PACKAGE_LIBFTDI1),y) +OWFS_CONF_OPTS += \ + --enable-ftdi \ + --with-libftdi-config=$(STAGING_DIR)/usr/bin/libftdi1-config +OWFS_DEPENDENCIES += libftdi1 +else ifeq ($(BR2_PACKAGE_LIBFTDI),y) +OWFS_CONF_OPTS += \ + --enable-ftdi \ + --with-libftdi-config=$(STAGING_DIR)/usr/bin/libftdi-config +OWFS_DEPENDENCIES += libftdi +else +OWFS_CONF_OPTS += --disable-ftdi +endif + +ifeq ($(BR2_PACKAGE_LIBUSB),y) +OWFS_CONF_OPTS += --enable-usb +OWFS_DEPENDENCIES += libusb +else +OWFS_CONF_OPTS += --disable-usb +endif + +ifeq ($(BR2_PACKAGE_AVAHI),y) +OWFS_CONF_OPTS += --enable-avahi +OWFS_DEPENDENCIES += avahi +else +OWFS_CONF_OPTS += --disable-avahi +endif + +# python2 only (https://github.com/owfs/owfs/pull/32) +OWFS_CONF_OPTS += --disable-owpython --without-python + +ifeq ($(BR2_STATIC_LIBS),y) +# zeroconf support uses dlopen() +OWFS_CONF_OPTS += --disable-zero +endif + +OWFS_MAKE = $(MAKE) $(OWFS_EXTRA_MAKE_OPTS) + +define OWFS_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 $(OWFS_PKGDIR)/S55owserver \ + $(TARGET_DIR)/etc/init.d/S55owserver + $(OWFS_INSTALL_FUSE_INIT_SYSV) +endef + +$(eval $(autotools-package)) diff --git a/package/owl-linux/0001-fix-for-linux-3.3.x.patch b/package/owl-linux/0001-fix-for-linux-3.3.x.patch new file mode 100644 index 00000000..831ac7fd --- /dev/null +++ b/package/owl-linux/0001-fix-for-linux-3.3.x.patch @@ -0,0 +1,21 @@ +Kernel commit b81693d9149c598302e8eb9c20cb20330d922c8e changed the +net_device_ops structure, removing the ndo_set_multicast_list callback. The +ndo_set_rx_mode has also been added to this structure. + +The upshot of these changes is that owl-linux fails to compile with 3.3.x +and later kernels. + +Signed-off-by: Simon Dawson +diff -Nurp a/owl_net.c b/owl_net.c +--- a/owl_net.c 2012-06-14 10:51:45.000000000 +0100 ++++ b/owl_net.c 2012-07-20 13:16:28.772351464 +0100 +@@ -384,7 +384,9 @@ static const struct net_device_ops netde + #endif /* OWL_CONFIG_IFUPDOWN */ + .ndo_start_xmit = owl_net_tx, + .ndo_get_stats = owl_net_get_stats, ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0) + .ndo_set_multicast_list = NULL, ++#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0) */ + .ndo_tx_timeout = owl_net_tx_timeout, + .ndo_set_mac_address = NULL, + }; diff --git a/package/owl-linux/Config.in b/package/owl-linux/Config.in new file mode 100644 index 00000000..bf412d36 --- /dev/null +++ b/package/owl-linux/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_OWL_LINUX + bool "owl-linux" + depends on BR2_LINUX_KERNEL + depends on (BR2_arm920t || BR2_arm922t || BR2_arm926t) + help + Linux kernel driver for the H&D Wireless SPB104 SD-card WiFi + SIP. + + owl-linux requires the hidden kernel option WIRELESS_EXT + enabled. + + http://linux.hd-wireless.se/bin/view/Linux/GettingStarted + +comment "owl-linux needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + depends on BR2_arm || BR2_armeb + +comment "owl-linux is only supported on ARM9 architecture" + depends on !(BR2_arm920t || BR2_arm922t || BR2_arm926t) + depends on BR2_arm || BR2_armeb diff --git a/package/owl-linux/owl-linux.hash b/package/owl-linux/owl-linux.hash new file mode 100644 index 00000000..555d2c28 --- /dev/null +++ b/package/owl-linux/owl-linux.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 a6b1bc6b3900954438a0f1a316bac5f74171125a88c80c35e137f4ca512dedc6 owl-linux-1.0.7.tar.gz +sha256 092f1698328e0d4cc2d04ef1445207a9d278963284cd709fa88f1b8c9999264b LICENSE diff --git a/package/owl-linux/owl-linux.mk b/package/owl-linux/owl-linux.mk new file mode 100644 index 00000000..12624252 --- /dev/null +++ b/package/owl-linux/owl-linux.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# owl-linux +# +################################################################################ + +OWL_LINUX_VERSION = 1.0.7 +OWL_LINUX_SITE = http://linux.hd-wireless.se/pub/Linux/DownloadDrivers +OWL_LINUX_LICENSE = PROPRIETARY +OWL_LINUX_LICENSE_FILES = LICENSE +OWL_LINUX_REDISTRIBUTE = NO + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/p11-kit/0001-import-object-Avoid-integer-truncation-on-32-bit-platforms.patch b/package/p11-kit/0001-import-object-Avoid-integer-truncation-on-32-bit-platforms.patch new file mode 100644 index 00000000..03f54b44 --- /dev/null +++ b/package/p11-kit/0001-import-object-Avoid-integer-truncation-on-32-bit-platforms.patch @@ -0,0 +1,109 @@ +From d49c92c8420db6ee4c88515bdb014f68f4d471d9 Mon Sep 17 00:00:00 2001 +From: Daiki Ueno +Date: Sat, 2 Dec 2023 09:24:01 +0900 +Subject: [PATCH] import-object: Avoid integer truncation on 32-bit platforms +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The build fails when compiling for 32-bit platforms with +-Werror=incompatible-pointer-types: + + CFLAGS="-m32 -march=i686 -Werror=incompatible-pointer-types -Werror=implicit -Werror=int-conversion" setarch i686 -- meson setup _build + setarch i686 -- meson compile -C _build -v + ... + + ../p11-kit/import-object.c: In function ‘add_attrs_pubkey_rsa’: + ../p11-kit/import-object.c:223:62: error: passing argument 3 of ‘p11_asn1_read’ from incompatible pointer type [-Werror=incompatible-pointer-types] + 223 | attr_modulus.pValue = p11_asn1_read (asn, "modulus", &attr_modulus.ulValueLen); + | ^~~~~~~~~~~~~~~~~~~~~~~~ + | | + | long unsigned int * + +Reported by Sam James in: +https://github.com/p11-glue/p11-kit/issues/608 + +Signed-off-by: Daiki Ueno + +Upstream: https://github.com/p11-glue/p11-kit/commit/d49c92c8420db6ee4c88515bdb014f68f4d471d9 +Signed-off-by: Fabrice Fontaine +--- + p11-kit/import-object.c | 30 +++++++++++++++++++++++++++--- + 1 file changed, 27 insertions(+), 3 deletions(-) + +diff --git a/p11-kit/import-object.c b/p11-kit/import-object.c +index feee0765..fb47b964 100644 +--- a/p11-kit/import-object.c ++++ b/p11-kit/import-object.c +@@ -55,6 +55,7 @@ + #endif + + #include ++#include + #include + #include + #include +@@ -201,6 +202,7 @@ add_attrs_pubkey_rsa (CK_ATTRIBUTE *attrs, + CK_ATTRIBUTE attr_encrypt = { CKA_ENCRYPT, &tval, sizeof (tval) }; + CK_ATTRIBUTE attr_modulus = { CKA_MODULUS, }; + CK_ATTRIBUTE attr_exponent = { CKA_PUBLIC_EXPONENT, }; ++ size_t len = 0; + + pubkey = p11_asn1_read (info, "subjectPublicKey", &pubkey_len); + if (pubkey == NULL) { +@@ -220,17 +222,31 @@ add_attrs_pubkey_rsa (CK_ATTRIBUTE *attrs, + goto cleanup; + } + +- attr_modulus.pValue = p11_asn1_read (asn, "modulus", &attr_modulus.ulValueLen); ++ attr_modulus.pValue = p11_asn1_read (asn, "modulus", &len); + if (attr_modulus.pValue == NULL) { + p11_message (_("failed to obtain modulus")); + goto cleanup; + } ++#if ULONG_MAX < SIZE_MAX ++ if (len > ULONG_MAX) { ++ p11_message (_("failed to obtain modulus")); ++ goto cleanup; ++ } ++#endif ++ attr_modulus.ulValueLen = len; + +- attr_exponent.pValue = p11_asn1_read (asn, "publicExponent", &attr_exponent.ulValueLen); ++ attr_exponent.pValue = p11_asn1_read (asn, "publicExponent", &len); + if (attr_exponent.pValue == NULL) { + p11_message (_("failed to obtain exponent")); + goto cleanup; + } ++#if ULONG_MAX < SIZE_MAX ++ if (len > ULONG_MAX) { ++ p11_message (_("failed to obtain exponent")); ++ goto cleanup; ++ } ++#endif ++ attr_exponent.ulValueLen = len; + + result = p11_attrs_build (attrs, &attr_key_type, &attr_encrypt, &attr_modulus, &attr_exponent, NULL); + if (result == NULL) { +@@ -260,12 +276,20 @@ add_attrs_pubkey_ec (CK_ATTRIBUTE *attrs, + CK_ATTRIBUTE attr_key_type = { CKA_KEY_TYPE, &key_type, sizeof (key_type) }; + CK_ATTRIBUTE attr_ec_params = { CKA_EC_PARAMS, }; + CK_ATTRIBUTE attr_ec_point = { CKA_EC_POINT, }; ++ size_t len = 0; + +- attr_ec_params.pValue = p11_asn1_read (info, "algorithm.parameters", &attr_ec_params.ulValueLen); ++ attr_ec_params.pValue = p11_asn1_read (info, "algorithm.parameters", &len); + if (attr_ec_params.pValue == NULL) { + p11_message (_("failed to obtain EC parameters")); + goto cleanup; + } ++#if ULONG_MAX < SIZE_MAX ++ if (len > ULONG_MAX) { ++ p11_message (_("failed to obtain EC parameters")); ++ goto cleanup; ++ } ++#endif ++ attr_ec_params.ulValueLen = len; + + /* subjectPublicKey is read as BIT STRING value which contains + * EC point data. We need to DER encode this data as OCTET STRING. diff --git a/package/p11-kit/Config.in b/package/p11-kit/Config.in new file mode 100644 index 00000000..9be76c2f --- /dev/null +++ b/package/p11-kit/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_P11_KIT + bool "p11-kit" + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Provides a way to load and enumerate PKCS#11 modules. + Provides a standard configuration setup for installing PKCS#11 + modules in such a way that they're discoverable. + + http://p11-glue.freedesktop.org/p11-kit.html + +comment "p11-kit needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/p11-kit/p11-kit.hash b/package/p11-kit/p11-kit.hash new file mode 100644 index 00000000..81d209b2 --- /dev/null +++ b/package/p11-kit/p11-kit.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 d8ddce1bb7e898986f9d250ccae7c09ce14d82f1009046d202a0eb1b428b2adc p11-kit-0.25.3.tar.xz +# Locally computed +sha256 2e1ba993904df807a10c3eda1e5c272338edc35674b679773a8b3ad460731054 COPYING diff --git a/package/p11-kit/p11-kit.mk b/package/p11-kit/p11-kit.mk new file mode 100644 index 00000000..53e953e0 --- /dev/null +++ b/package/p11-kit/p11-kit.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# p11-kit +# +################################################################################ + +P11_KIT_VERSION = 0.25.3 +P11_KIT_SOURCE = p11-kit-$(P11_KIT_VERSION).tar.xz +P11_KIT_SITE = https://github.com/p11-glue/p11-kit/releases/download/$(P11_KIT_VERSION) +P11_KIT_INSTALL_STAGING = YES +P11_KIT_CONF_OPTS = --disable-static +P11_KIT_CONF_ENV = ac_cv_have_decl_program_invocation_short_name=yes \ + ac_cv_have_decl___progname=no +P11_KIT_LICENSE = BSD-3-Clause +P11_KIT_LICENSE_FILES = COPYING +P11_KIT_CPE_ID_VALID = YES + +ifeq ($(BR2_PACKAGE_LIBFFI),y) +P11_KIT_DEPENDENCIES += host-pkgconf libffi +P11_KIT_CONF_OPTS += --with-libffi +else +P11_KIT_CONF_OPTS += --without-libffi +endif + +ifeq ($(BR2_PACKAGE_LIBTASN1),y) +P11_KIT_DEPENDENCIES += host-pkgconf libtasn1 +P11_KIT_CONF_OPTS += \ + --enable-trust-module \ + --with-libtasn1 +ifeq ($(BR2_PACKAGE_CA_CERTIFICATES),y) +P11_KIT_CONF_OPTS += --with-trust-paths=/etc/ssl/certs/ca-certificates.crt +else +P11_KIT_CONF_OPTS += --without-trust-paths +endif +else +P11_KIT_CONF_OPTS += \ + --disable-trust-module \ + --without-libtasn1 +endif + +$(eval $(autotools-package)) diff --git a/package/p7zip/Config.in b/package/p7zip/Config.in new file mode 100644 index 00000000..f1b80d2d --- /dev/null +++ b/package/p7zip/Config.in @@ -0,0 +1,39 @@ +config BR2_PACKAGE_P7ZIP + bool "p7zip" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # __sync_*_4 intrisics + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + help + p7zip is a quick port of the command line version of 7-zip + for Unix (see http://www.7-zip.org) + + 7-Zip is a file archiver with highest compression ratio. + + https://github.com/p7zip-project/p7zip + +if BR2_PACKAGE_P7ZIP + +choice + prompt "p7zip binary" + default BR2_PACKAGE_P7ZIP_7ZR + +config BR2_PACKAGE_P7ZIP_7ZA + bool "7za" + help + Full 7za archiver. The program supports 7z, ZIP, CAB, ARJ, + GZIP, BZIP2, TAR, CPIO, RPM and DEB formats + +config BR2_PACKAGE_P7ZIP_7ZR + bool "7zr" + help + Lightweight 7zr archiver. The program only handles 7z archives + and cannot handle encrypted archives + +endchoice + +endif + +comment "p7zip needs a toolchain w/ threads, wchar, C++" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP diff --git a/package/p7zip/p7zip.hash b/package/p7zip/p7zip.hash new file mode 100644 index 00000000..f0b9c271 --- /dev/null +++ b/package/p7zip/p7zip.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 d2788f892571058c08d27095c22154579dfefb807ebe357d145ab2ddddefb1a6 p7zip-17.05.tar.gz +sha256 555806657dcf0f1e720b581c52643c195ec86ae3f00bd18cc66d2e0f88ffa210 DOC/License.txt diff --git a/package/p7zip/p7zip.mk b/package/p7zip/p7zip.mk new file mode 100644 index 00000000..803fd38b --- /dev/null +++ b/package/p7zip/p7zip.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# p7zip +# +################################################################################ + +P7ZIP_VERSION = 17.05 +P7ZIP_SITE = $(call github,p7zip-project,p7zip,v$(P7ZIP_VERSION)) +P7ZIP_LICENSE = LGPL-2.1+ with unRAR restriction +P7ZIP_LICENSE_FILES = DOC/License.txt +P7ZIP_CPE_ID_VENDOR = 7-zip + +ifeq ($(BR2_PACKAGE_P7ZIP_7ZA),y) +P7ZIP_TARGET = 7za +else +P7ZIP_TARGET = 7zr +endif + +# p7zip buildsystem is a mess: it plays dirty tricks with CFLAGS and +# 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 + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" ALLFLAGS_C="$(TARGET_CFLAGS)" \ + CXX="$(TARGET_CXX)" ALLFLAGS_CPP="$(TARGET_CXXFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + -C $(@D) $(P7ZIP_TARGET) +endef + +define P7ZIP_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/bin/$(P7ZIP_TARGET) \ + $(TARGET_DIR)/usr/bin/$(P7ZIP_TARGET) +endef + +$(eval $(generic-package)) diff --git a/package/p910nd/Config.in b/package/p910nd/Config.in new file mode 100644 index 00000000..33f6cf8a --- /dev/null +++ b/package/p910nd/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_P910ND + bool "p910nd" + depends on BR2_USE_MMU # fork() + help + p910nd is a small printer daemon intended for diskless + workstations. Using ports 9100-9102, it accepts + print jobs and passes them directly to a USB printer. + + http://p910nd.sourceforge.net/ diff --git a/package/p910nd/p910nd.hash b/package/p910nd/p910nd.hash new file mode 100644 index 00000000..0f69e402 --- /dev/null +++ b/package/p910nd/p910nd.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 a1bcc2dd75bad4e00a9de5098dbd970e8380f978fc09292bcfa15852af6a6964 p910nd-0.97.tar.gz +sha256 62f171d4d8b6726df61f18a6bbc0a70f79c4bc2134d837d35c81fc6289a2d84d LICENSE.md diff --git a/package/p910nd/p910nd.mk b/package/p910nd/p910nd.mk new file mode 100644 index 00000000..fea8aafd --- /dev/null +++ b/package/p910nd/p910nd.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# p910nd +# +################################################################################ + +P910ND_VERSION = 0.97 +P910ND_SITE = $(call github,kenyapcomau,p910nd,$(P910ND_VERSION)) +P910ND_LICENSE = GPL-2.0 +P910ND_LICENSE_FILES = LICENSE.md + +define P910ND_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define P910ND_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/p910nd $(TARGET_DIR)/usr/sbin/p910nd +endef + +$(eval $(generic-package)) diff --git a/package/paho-mqtt-c/Config.in b/package/paho-mqtt-c/Config.in new file mode 100644 index 00000000..0f4b2a29 --- /dev/null +++ b/package/paho-mqtt-c/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PAHO_MQTT_C + bool "paho-mqtt-c" + 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" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/paho-mqtt-c/paho-mqtt-c.hash b/package/paho-mqtt-c/paho-mqtt-c.hash new file mode 100644 index 00000000..d359edf3 --- /dev/null +++ b/package/paho-mqtt-c/paho-mqtt-c.hash @@ -0,0 +1,5 @@ +# Locally computed: +sha256 47c77e95609812da82feee30db435c3b7c720d4fd3147d466ead126e657b6d9c paho-mqtt-c-1.3.13.tar.gz +sha256 83bbba033dc985487e321b6dfde111772affb73460be48726299fed3da684b1c edl-v10 +sha256 0becf16567beb77fa252b7664631dd177c8f9a1889e48995b45379c7130e5303 epl-v20 +sha256 bc0f3f447097eb82a29ad6c2f4929572bb548b6bd4c9e38fde1bf131a771b7a0 LICENSE diff --git a/package/paho-mqtt-c/paho-mqtt-c.mk b/package/paho-mqtt-c/paho-mqtt-c.mk new file mode 100644 index 00000000..ec4e96c7 --- /dev/null +++ b/package/paho-mqtt-c/paho-mqtt-c.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# paho-mqtt-c +# +################################################################################ + +PAHO_MQTT_C_VERSION = 1.3.13 +PAHO_MQTT_C_SITE = $(call github,eclipse,paho.mqtt.c,v$(PAHO_MQTT_C_VERSION)) +PAHO_MQTT_C_LICENSE = EPL-2.0 or BSD-3-Clause +PAHO_MQTT_C_LICENSE_FILES = epl-v20 edl-v10 LICENSE +PAHO_MQTT_C_INSTALL_STAGING = YES + +PAHO_MQTT_C_CONF_OPTS = \ + -DCMAKE_INSTALL_DOCDIR=share/doc/libpaho-mqtt \ + -DPAHO_ENABLE_TESTING=FALSE \ + -DPAHO_ENABLE_CPACK=FALSE \ + -DPAHO_HIGH_PERFORMANCE=TRUE + +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 + +ifeq ($(BR2_SHARED_LIBS),y) +PAHO_MQTT_C_CONF_OPTS += \ + -DPAHO_BUILD_SHARED=TRUE \ + -DPAHO_BUILD_STATIC=FALSE +else ifeq ($(BR2_STATIC_LIBS),y) +PAHO_MQTT_C_CONF_OPTS += \ + -DPAHO_BUILD_SHARED=FALSE \ + -DPAHO_BUILD_STATIC=TRUE +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +PAHO_MQTT_C_CONF_OPTS += \ + -DPAHO_BUILD_SHARED=TRUE \ + -DPAHO_BUILD_STATIC=TRUE +endif + +$(eval $(cmake-package)) diff --git a/package/paho-mqtt-cpp/Config.in b/package/paho-mqtt-cpp/Config.in new file mode 100644 index 00000000..a46c1256 --- /dev/null +++ b/package/paho-mqtt-cpp/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_PAHO_MQTT_CPP + bool "paho-mqtt-cpp" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::future + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_PAHO_MQTT_C + help + MQTT client C++ library + + https://eclipse.org/paho/clients/cpp/ + +comment "paho-mqtt-cpp needs a toolchain w/ threads, C++" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + +comment "paho-mqtt-cpp needs a toolchain not affected by GCC bug 64735" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/paho-mqtt-cpp/paho-mqtt-cpp.hash b/package/paho-mqtt-cpp/paho-mqtt-cpp.hash new file mode 100644 index 00000000..a35cd102 --- /dev/null +++ b/package/paho-mqtt-cpp/paho-mqtt-cpp.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 c271d521287f417102b447b3d1e8d17be0e0f6a3b0b653334ebcd2ccd20d1e46 paho-mqtt-cpp-1.3.2.tar.gz +sha256 83bbba033dc985487e321b6dfde111772affb73460be48726299fed3da684b1c edl-v10 +sha256 0becf16567beb77fa252b7664631dd177c8f9a1889e48995b45379c7130e5303 epl-v20 diff --git a/package/paho-mqtt-cpp/paho-mqtt-cpp.mk b/package/paho-mqtt-cpp/paho-mqtt-cpp.mk new file mode 100644 index 00000000..2e0f409b --- /dev/null +++ b/package/paho-mqtt-cpp/paho-mqtt-cpp.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# paho-mqtt-cpp +# +################################################################################ + +PAHO_MQTT_CPP_VERSION = 1.3.2 +PAHO_MQTT_CPP_SITE = $(call github,eclipse,paho.mqtt.cpp,v$(PAHO_MQTT_CPP_VERSION)) +PAHO_MQTT_CPP_LICENSE = EPL-2.0 or BSD-3-Clause +PAHO_MQTT_CPP_LICENSE_FILES = epl-v20 edl-v10 +PAHO_MQTT_CPP_INSTALL_STAGING = YES +PAHO_MQTT_CPP_DEPENDENCIES = paho-mqtt-c + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +PAHO_MQTT_CPP_DEPENDENCIES += openssl +PAHO_MQTT_CPP_CONF_OPTS += -DPAHO_WITH_SSL=TRUE +else +PAHO_MQTT_CPP_CONF_OPTS += -DPAHO_WITH_SSL=FALSE +endif + +ifeq ($(BR2_SHARED_LIBS),y) +PAHO_MQTT_CPP_CONF_OPTS += \ + -DPAHO_BUILD_SHARED=TRUE \ + -DPAHO_BUILD_STATIC=FALSE +else ifeq ($(BR2_STATIC_LIBS),y) +PAHO_MQTT_CPP_CONF_OPTS += \ + -DPAHO_BUILD_SHARED=FALSE \ + -DPAHO_BUILD_STATIC=TRUE +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +PAHO_MQTT_CPP_CONF_OPTS += \ + -DPAHO_BUILD_SHARED=TRUE \ + -DPAHO_BUILD_STATIC=TRUE +endif + +$(eval $(cmake-package)) diff --git a/package/pahole/Config.in.host b/package/pahole/Config.in.host new file mode 100644 index 00000000..e4276296 --- /dev/null +++ b/package/pahole/Config.in.host @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HOST_PAHOLE + bool "host pahole" + help + Pahole and other DWARF utils. + + https://git.kernel.org/pub/scm/devel/pahole/pahole.git diff --git a/package/pahole/pahole.hash b/package/pahole/pahole.hash new file mode 100644 index 00000000..a2d3d044 --- /dev/null +++ b/package/pahole/pahole.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 87223298d4f8f9ada9b3cc5cef1bedd7aeb447cd8295abc466e009a26accff13 pahole-1.27.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/pahole/pahole.mk b/package/pahole/pahole.mk new file mode 100644 index 00000000..ffbe4ff9 --- /dev/null +++ b/package/pahole/pahole.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# pahole +# +################################################################################ + +PAHOLE_VERSION = 1.27 +PAHOLE_SITE = https://git.kernel.org/pub/scm/devel/pahole/pahole.git/snapshot +HOST_PAHOLE_DEPENDENCIES = \ + host-elfutils \ + host-libbpf +# Defining __LIB is needed to build pahole. +# Set LIBBPF_EMBEDDED to OFF to use host-libbpf. +HOST_PAHOLE_CONF_OPTS = -D__LIB=lib -DLIBBPF_EMBEDDED=OFF +PAHOLE_LICENSE = GPL-2.0 +PAHOLE_LICENSE_FILES = COPYING + +$(eval $(host-cmake-package)) diff --git a/package/pamtester/Config.in b/package/pamtester/Config.in new file mode 100644 index 00000000..19b76d3f --- /dev/null +++ b/package/pamtester/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PAMTESTER + bool "pamtester" + depends on BR2_PACKAGE_LINUX_PAM + help + A tiny utility for testing pluggable authentication modules + (PAM) facility. While specifically designed to help PAM module + authors to test their modules, that might also be handy for + system administrators interested in building a centralised + authentication system using common standards such as NIS, SASL + and LDAP. + + http://pamtester.sourceforge.net/ + +comment "pamtester depends on linux-pam" + depends on !BR2_PACKAGE_LINUX_PAM diff --git a/package/pamtester/pamtester.hash b/package/pamtester/pamtester.hash new file mode 100644 index 00000000..72a3fabf --- /dev/null +++ b/package/pamtester/pamtester.hash @@ -0,0 +1,3 @@ +# from https://sourceforge.net/projects/pamtester/files/pamtester/0.1.2/ +sha1 33bcc610d7f208b50a0a23c144bdbd1e2cae4ac6 pamtester-0.1.2.tar.gz +sha256 1e3922a8ab0907c1f3bcc3e00005ef88930e50d0890f40a6a39f5f83b05f05cc LICENSE diff --git a/package/pamtester/pamtester.mk b/package/pamtester/pamtester.mk new file mode 100644 index 00000000..77867403 --- /dev/null +++ b/package/pamtester/pamtester.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# pamtester +# +################################################################################ + +PAMTESTER_VERSION = 0.1.2 +PAMTESTER_SITE = https://download.sourceforge.net/project/pamtester/pamtester/$(PAMTESTER_VERSION) +PAMTESTER_DEPENDENCIES = linux-pam +PAMTESTER_LICENSE = BSD-3-Clause +PAMTESTER_LICENSE_FILES = LICENSE + +# Obsolete constructs in the archaic configure.in generated an outworn +# configure script that incorrectly searches a C++ compiler. Regenerate +# the autoconf machinery to avoid failures without a C++ compiler. +PAMTESTER_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/pango/Config.in b/package/pango/Config.in new file mode 100644 index 00000000..e2b2e7fe --- /dev/null +++ b/package/pango/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_PANGO + bool "pango" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + depends on BR2_INSTALL_LIBSTDCPP # freetype support + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # harfbuzz + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # harfbuzz + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBFRIBIDI + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_HARFBUZZ + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + help + Pango is a library for laying out and rendering of text, + with an emphasis on internationalization. Pango can be used + anywhere that text layout is needed, though most of the work + on Pango so far has been done in the context of the GTK+ + widget toolkit. Pango forms the core of text and font + handling for GTK+-2.x. + + https://pango.gnome.org/ + +comment "pango needs a toolchain w/ wchar, threads, C++, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_INSTALL_LIBSTDCPP diff --git a/package/pango/pango.hash b/package/pango/pango.hash new file mode 100644 index 00000000..9f321eea --- /dev/null +++ b/package/pango/pango.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/pango/1.54/pango-1.54.0.sha256sum +sha256 8a9eed75021ee734d7fc0fdf3a65c3bba51dfefe4ae51a9b414a60c70b2d1ed8 pango-1.54.0.tar.xz + +# Locally computed +sha256 d245807f90032872d1438d741ed21e2490e1175dc8aa3afa5ddb6c8e529b58e5 COPYING diff --git a/package/pango/pango.mk b/package/pango/pango.mk new file mode 100644 index 00000000..df82b456 --- /dev/null +++ b/package/pango/pango.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# pango +# +################################################################################ + +PANGO_VERSION_MAJOR = 1.54 +PANGO_VERSION = $(PANGO_VERSION_MAJOR).0 +PANGO_SOURCE = pango-$(PANGO_VERSION).tar.xz +PANGO_SITE = https://download.gnome.org/sources/pango/$(PANGO_VERSION_MAJOR) +PANGO_INSTALL_STAGING = YES +PANGO_LICENSE = LGPL-2.0+ +PANGO_LICENSE_FILES = COPYING +PANGO_CPE_ID_VENDOR = pango + +PANGO_CONF_OPTS = -Dfontconfig=enabled +HOST_PANGO_CONF_OPTS = -Dfontconfig=enabled -Dintrospection=disabled + +PANGO_DEPENDENCIES = \ + $(TARGET_NLS_DEPENDENCIES) \ + host-pkgconf \ + libglib2 \ + libfribidi \ + cairo \ + harfbuzz \ + fontconfig \ + freetype +HOST_PANGO_DEPENDENCIES = \ + host-pkgconf \ + host-libglib2 \ + host-libfribidi \ + host-cairo \ + host-harfbuzz \ + host-fontconfig \ + host-freetype + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +PANGO_CONF_OPTS += -Dintrospection=enabled +PANGO_DEPENDENCIES += gobject-introspection +else +PANGO_CONF_OPTS += -Dintrospection=disabled +endif + +ifeq ($(BR2_PACKAGE_XORG7),y) +PANGO_DEPENDENCIES += xlib_libX11 +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFT)$(BR2_PACKAGE_XLIB_LIBXRENDER),yy) +PANGO_DEPENDENCIES += xlib_libXft xlib_libXrender +endif + +$(eval $(meson-package)) +$(eval $(host-meson-package)) diff --git a/package/pangomm/Config.in b/package/pangomm/Config.in new file mode 100644 index 00000000..6ddad9e6 --- /dev/null +++ b/package/pangomm/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_PANGOMM + bool "pangomm (latest)" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz + depends on BR2_INSTALL_LIBSTDCPP # glibmm/pango + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # libsigc + depends on BR2_TOOLCHAIN_HAS_THREADS # *mm/pango -> libglib2 + depends on BR2_USE_MMU # *mm/pango -> libglib2 + depends on BR2_USE_WCHAR # *mm/pango -> libglib2 + select BR2_PACKAGE_CAIROMM + select BR2_PACKAGE_GLIBMM + select BR2_PACKAGE_PANGO + select BR2_PACKAGE_LIBSIGC + help + The pangomm package is a set of C++ bindings for Pango. + + http://www.gtkmm.org/ + +comment "pangomm needs a toolchain w/ C++, wchar, threads, gcc >= 7" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || !BR2_USE_WCHAR \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/pangomm/pangomm.hash b/package/pangomm/pangomm.hash new file mode 100644 index 00000000..dc606c5d --- /dev/null +++ b/package/pangomm/pangomm.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/pangomm/2.50/pangomm-2.50.1.sha256sum +sha256 ccc9923413e408c2bff637df663248327d72822f11e394b423e1c5652b7d9214 pangomm-2.50.1.tar.xz +# Locally computed +sha256 5bbcbb737e60fe9deba08ecbd00920cfcc3403ba2e534c64fdeea49d6bb87509 COPYING +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING.tools diff --git a/package/pangomm/pangomm.mk b/package/pangomm/pangomm.mk new file mode 100644 index 00000000..64ac625b --- /dev/null +++ b/package/pangomm/pangomm.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# pangomm +# +################################################################################ + +PANGOMM_VERSION_MAJOR = 2.50 +PANGOMM_VERSION = $(PANGOMM_VERSION_MAJOR).1 +PANGOMM_SOURCE = pangomm-$(PANGOMM_VERSION).tar.xz +PANGOMM_SITE = https://download.gnome.org/sources/pangomm/$(PANGOMM_VERSION_MAJOR) +PANGOMM_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (tools) +PANGOMM_LICENSE_FILES = COPYING COPYING.tools +PANGOMM_INSTALL_STAGING = YES +PANGOMM_DEPENDENCIES = glibmm cairomm libsigc pango host-pkgconf + +$(eval $(meson-package)) diff --git a/package/pangomm2_46/Config.in b/package/pangomm2_46/Config.in new file mode 100644 index 00000000..772b523c --- /dev/null +++ b/package/pangomm2_46/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_PANGOMM2_46 + bool "pangomm (2.46.x)" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz + depends on BR2_INSTALL_LIBSTDCPP # glibmm/pango + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS # *mm/pango -> libglib2 + depends on BR2_USE_MMU # *mm/pango -> libglib2 + depends on BR2_USE_WCHAR # *mm/pango -> libglib2 + select BR2_PACKAGE_CAIROMM1_14 + select BR2_PACKAGE_GLIBMM2_66 + select BR2_PACKAGE_PANGO + select BR2_PACKAGE_LIBSIGC2 + help + The pangomm package is a set of C++ bindings for Pango. + + This is the last version before the API and ABI change + introduced in 2.48.0 which requires C++17. + + http://www.gtkmm.org/ + +comment "pangomm (2.46.x) needs a toolchain w/ C++, wchar, threads, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_USE_WCHAR \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/pangomm2_46/pangomm2_46.hash b/package/pangomm2_46/pangomm2_46.hash new file mode 100644 index 00000000..8d05dbc2 --- /dev/null +++ b/package/pangomm2_46/pangomm2_46.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/pangomm/2.46/pangomm-2.46.3.sha256sum +sha256 410fe04d471a608f3f0273d3a17d840241d911ed0ff2c758a9859c66c6f24379 pangomm-2.46.3.tar.xz +# Locally computed +sha256 5bbcbb737e60fe9deba08ecbd00920cfcc3403ba2e534c64fdeea49d6bb87509 COPYING +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING.tools diff --git a/package/pangomm2_46/pangomm2_46.mk b/package/pangomm2_46/pangomm2_46.mk new file mode 100644 index 00000000..17251584 --- /dev/null +++ b/package/pangomm2_46/pangomm2_46.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# pangomm2_46 +# +################################################################################ + +PANGOMM2_46_VERSION_MAJOR = 2.46 +PANGOMM2_46_VERSION = $(PANGOMM2_46_VERSION_MAJOR).3 +PANGOMM2_46_SOURCE = pangomm-$(PANGOMM2_46_VERSION).tar.xz +PANGOMM2_46_SITE = https://download.gnome.org/sources/pangomm/$(PANGOMM2_46_VERSION_MAJOR) +PANGOMM2_46_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (tools) +PANGOMM2_46_LICENSE_FILES = COPYING COPYING.tools +PANGOMM2_46_INSTALL_STAGING = YES +PANGOMM2_46_DEPENDENCIES = glibmm2_66 cairomm1_14 libsigc2 pango host-pkgconf + +$(eval $(meson-package)) diff --git a/package/parprouted/Config.in b/package/parprouted/Config.in new file mode 100644 index 00000000..7cf839da --- /dev/null +++ b/package/parprouted/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_PARPROUTED + bool "parprouted" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + help + parprouted is a daemon for transparent IP (Layer 3) proxy ARP + bridging. This is useful for creation of transparent firewalls + and bridging networks with different MAC protocols. Also, + unlike standard bridging, proxy ARP bridging allows to bridge + Ethernet networks behind wireless nodes without using WDS or + layer 2 bridging. + + https://www.hazard.maks.net/parprouted + +comment "parprouted needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/parprouted/parprouted.hash b/package/parprouted/parprouted.hash new file mode 100644 index 00000000..d35691b6 --- /dev/null +++ b/package/parprouted/parprouted.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 d63643c95d4149a3d71112da5892f459433456bf0279bfa304625f109178defc parprouted-0.7.tar.gz +sha256 dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa COPYING diff --git a/package/parprouted/parprouted.mk b/package/parprouted/parprouted.mk new file mode 100644 index 00000000..a0425d92 --- /dev/null +++ b/package/parprouted/parprouted.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# parprouted +# +################################################################################ + +PARPROUTED_VERSION = 0.7 +PARPROUTED_SITE = https://www.hazard.maks.net/parprouted +PARPROUTED_LICENSE = GPL-2.0 +PARPROUTED_LICENSE_FILES = COPYING + +define PARPROUTED_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all +endef + +define PARPROUTED_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/parprouted $(TARGET_DIR)/usr/sbin/parprouted +endef + +$(eval $(generic-package)) diff --git a/package/parsec-tool/Config.in b/package/parsec-tool/Config.in new file mode 100644 index 00000000..7607017b --- /dev/null +++ b/package/parsec-tool/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PARSEC_TOOL + bool "parsec-tool" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_RUSTC + help + The Parsec Command Line Interface + This tool can be used to communicate with the PARSEC service. + + https://github.com/parallaxsecond/parsec-tool.git diff --git a/package/parsec-tool/parsec-tool.hash b/package/parsec-tool/parsec-tool.hash new file mode 100644 index 00000000..bd01bc49 --- /dev/null +++ b/package/parsec-tool/parsec-tool.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 5b994e10305a682c22fb6f566b57874a22ed8b9120d9fd253f5fa17c40ff759a parsec-tool-0.7.0-cargo2.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/parsec-tool/parsec-tool.mk b/package/parsec-tool/parsec-tool.mk new file mode 100644 index 00000000..6fe2a8f3 --- /dev/null +++ b/package/parsec-tool/parsec-tool.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# parsec-tool +# +################################################################################ + +PARSEC_TOOL_VERSION = 0.7.0 +PARSEC_TOOL_SITE = $(call github,parallaxsecond,parsec-tool,$(PARSEC_TOOL_VERSION)) +PARSEC_TOOL_LICENSE = Apache-2.0 +PARSEC_TOOL_LICENSE_FILES = LICENSE + +$(eval $(cargo-package)) diff --git a/package/parted/Config.in b/package/parted/Config.in new file mode 100644 index 00000000..ea6c3db2 --- /dev/null +++ b/package/parted/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PARTED + bool "parted" + depends on BR2_ENABLE_LOCALE + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + parted, the GNU partition resizing program + + http://www.gnu.org/software/parted/ + +comment "parted needs a toolchain w/ locale, wchar, gcc >=5" + depends on !BR2_ENABLE_LOCALE || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 diff --git a/package/parted/Config.in.host b/package/parted/Config.in.host new file mode 100644 index 00000000..f5d7acc2 --- /dev/null +++ b/package/parted/Config.in.host @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HOST_PARTED + bool "host parted" + help + parted, the GNU partition resizing program + + http://www.gnu.org/software/parted/ diff --git a/package/parted/parted.hash b/package/parted/parted.hash new file mode 100644 index 00000000..6643ba9f --- /dev/null +++ b/package/parted/parted.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +sha256 3b43dbe33cca0f9a18601ebab56b7852b128ec1a3df3a9b30ccde5e73359e612 parted-3.6.tar.xz + +# Locally calculated +sha256 0abbff814cd00e2b0b6d08395af2b419c1a92026c4b4adacbb65ccda45fa58cf COPYING diff --git a/package/parted/parted.mk b/package/parted/parted.mk new file mode 100644 index 00000000..5b55a9f2 --- /dev/null +++ b/package/parted/parted.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# parted +# +################################################################################ + +PARTED_VERSION = 3.6 +PARTED_SOURCE = parted-$(PARTED_VERSION).tar.xz +PARTED_SITE = $(BR2_GNU_MIRROR)/parted +PARTED_DEPENDENCIES = host-pkgconf util-linux +PARTED_INSTALL_STAGING = YES +PARTED_LICENSE = GPL-3.0+ +PARTED_LICENSE_FILES = COPYING +PARTED_CPE_ID_VALID = YES + +ifeq ($(BR2_PACKAGE_READLINE),y) +PARTED_DEPENDENCIES += readline +PARTED_CONF_OPTS += --with-readline +else +PARTED_CONF_OPTS += --without-readline +endif + +ifeq ($(BR2_PACKAGE_LVM2),y) +PARTED_DEPENDENCIES += lvm2 +PARTED_CONF_OPTS += --enable-device-mapper +else +PARTED_CONF_OPTS += --disable-device-mapper +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +PARTED_DEPENDENCIES += libiconv +endif + +HOST_PARTED_DEPENDENCIES = host-pkgconf host-util-linux +HOST_PARTED_CONF_OPTS += \ + --without-readline \ + --disable-device-mapper + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/patch/0001-Fix-segfault-with-mangled-rename-patch.patch b/package/patch/0001-Fix-segfault-with-mangled-rename-patch.patch new file mode 100644 index 00000000..19a67573 --- /dev/null +++ b/package/patch/0001-Fix-segfault-with-mangled-rename-patch.patch @@ -0,0 +1,33 @@ +From f290f48a621867084884bfff87f8093c15195e6a Mon Sep 17 00:00:00 2001 +From: Andreas Gruenbacher +Date: Mon, 12 Feb 2018 16:48:24 +0100 +Subject: [PATCH] Fix segfault with mangled rename patch + +http://savannah.gnu.org/bugs/?53132 +* src/pch.c (intuit_diff_type): Ensure that two filenames are specified +for renames and copies (fix the existing check). + +Signed-off-by: Baruch Siach +--- +Patch status: upstream commit f290f48a6218 + + src/pch.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/pch.c b/src/pch.c +index ff9ed2cebb8a..bc6278c4032c 100644 +--- a/src/pch.c ++++ b/src/pch.c +@@ -974,7 +974,8 @@ intuit_diff_type (bool need_header, mode_t *p_file_type) + if ((pch_rename () || pch_copy ()) + && ! inname + && ! ((i == OLD || i == NEW) && +- p_name[! reverse] && ++ p_name[reverse] && p_name[! reverse] && ++ name_is_valid (p_name[reverse]) && + name_is_valid (p_name[! reverse]))) + { + say ("Cannot %s file without two valid file names\n", pch_rename () ? "rename" : "copy"); +-- +2.16.1 + diff --git a/package/patch/0002-Allow-input-files-to-be-missing-for-ed-style-patches.patch b/package/patch/0002-Allow-input-files-to-be-missing-for-ed-style-patches.patch new file mode 100644 index 00000000..7d5757d1 --- /dev/null +++ b/package/patch/0002-Allow-input-files-to-be-missing-for-ed-style-patches.patch @@ -0,0 +1,37 @@ +From b5a91a01e5d0897facdd0f49d64b76b0f02b43e1 Mon Sep 17 00:00:00 2001 +From: Andreas Gruenbacher +Date: Fri, 6 Apr 2018 11:34:51 +0200 +Subject: [PATCH] Allow input files to be missing for ed-style patches + +* src/pch.c (do_ed_script): Allow input files to be missing so that new +files will be created as with non-ed-style patches. + +Signed-off-by: Baruch Siach +--- +Upstream status: commit b5a91a01e5d0 + + src/pch.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/src/pch.c b/src/pch.c +index bc6278c4032c..0c5cc2623079 100644 +--- a/src/pch.c ++++ b/src/pch.c +@@ -2394,9 +2394,11 @@ do_ed_script (char const *inname, char const *outname, + + if (! dry_run && ! skip_rest_of_patch) { + int exclusive = *outname_needs_removal ? 0 : O_EXCL; +- assert (! inerrno); +- *outname_needs_removal = true; +- copy_file (inname, outname, 0, exclusive, instat.st_mode, true); ++ if (inerrno != ENOENT) ++ { ++ *outname_needs_removal = true; ++ copy_file (inname, outname, 0, exclusive, instat.st_mode, true); ++ } + sprintf (buf, "%s %s%s", editor_program, + verbosity == VERBOSE ? "" : "- ", + outname); +-- +2.16.3 + diff --git a/package/patch/0003-Fix-arbitrary-command-execution-in-ed-style-patches-.patch b/package/patch/0003-Fix-arbitrary-command-execution-in-ed-style-patches-.patch new file mode 100644 index 00000000..b44bdd0f --- /dev/null +++ b/package/patch/0003-Fix-arbitrary-command-execution-in-ed-style-patches-.patch @@ -0,0 +1,157 @@ +From 123eaff0d5d1aebe128295959435b9ca5909c26d Mon Sep 17 00:00:00 2001 +From: Andreas Gruenbacher +Date: Fri, 6 Apr 2018 12:14:49 +0200 +Subject: [PATCH] Fix arbitrary command execution in ed-style patches + (CVE-2018-1000156) + +* src/pch.c (do_ed_script): Write ed script to a temporary file instead +of piping it to ed: this will cause ed to abort on invalid commands +instead of rejecting them and carrying on. +* tests/ed-style: New test case. +* tests/Makefile.am (TESTS): Add test case. + +[baruch: drop test hunks to avoid autoreconf] +Signed-off-by: Baruch Siach +--- +Upstream status: commit 123eaff0d5d1 + + src/pch.c | 91 ++++++++++++++++++++++++++++++++++++++++--------------- + tests/Makefile.am | 1 + + tests/ed-style | 41 +++++++++++++++++++++++++ + 3 files changed, 108 insertions(+), 25 deletions(-) + create mode 100644 tests/ed-style + +diff --git a/src/pch.c b/src/pch.c +index 0c5cc2623079..4fd5a05a6f5c 100644 +--- a/src/pch.c ++++ b/src/pch.c +@@ -33,6 +33,7 @@ + # include + #endif + #include ++#include + + #define INITHUNKMAX 125 /* initial dynamic allocation size */ + +@@ -2389,24 +2390,28 @@ do_ed_script (char const *inname, char const *outname, + static char const editor_program[] = EDITOR_PROGRAM; + + file_offset beginning_of_this_line; +- FILE *pipefp = 0; + size_t chars_read; ++ FILE *tmpfp = 0; ++ char const *tmpname; ++ int tmpfd; ++ pid_t pid; ++ ++ if (! dry_run && ! skip_rest_of_patch) ++ { ++ /* Write ed script to a temporary file. This causes ed to abort on ++ invalid commands such as when line numbers or ranges exceed the ++ number of available lines. When ed reads from a pipe, it rejects ++ invalid commands and treats the next line as a new command, which ++ can lead to arbitrary command execution. */ ++ ++ tmpfd = make_tempfile (&tmpname, 'e', NULL, O_RDWR | O_BINARY, 0); ++ if (tmpfd == -1) ++ pfatal ("Can't create temporary file %s", quotearg (tmpname)); ++ tmpfp = fdopen (tmpfd, "w+b"); ++ if (! tmpfp) ++ pfatal ("Can't open stream for file %s", quotearg (tmpname)); ++ } + +- if (! dry_run && ! skip_rest_of_patch) { +- int exclusive = *outname_needs_removal ? 0 : O_EXCL; +- if (inerrno != ENOENT) +- { +- *outname_needs_removal = true; +- copy_file (inname, outname, 0, exclusive, instat.st_mode, true); +- } +- sprintf (buf, "%s %s%s", editor_program, +- verbosity == VERBOSE ? "" : "- ", +- outname); +- fflush (stdout); +- pipefp = popen(buf, binary_transput ? "wb" : "w"); +- if (!pipefp) +- pfatal ("Can't open pipe to %s", quotearg (buf)); +- } + for (;;) { + char ed_command_letter; + beginning_of_this_line = file_tell (pfp); +@@ -2417,14 +2422,14 @@ do_ed_script (char const *inname, char const *outname, + } + ed_command_letter = get_ed_command_letter (buf); + if (ed_command_letter) { +- if (pipefp) +- if (! fwrite (buf, sizeof *buf, chars_read, pipefp)) ++ if (tmpfp) ++ if (! fwrite (buf, sizeof *buf, chars_read, tmpfp)) + write_fatal (); + if (ed_command_letter != 'd' && ed_command_letter != 's') { + p_pass_comments_through = true; + while ((chars_read = get_line ()) != 0) { +- if (pipefp) +- if (! fwrite (buf, sizeof *buf, chars_read, pipefp)) ++ if (tmpfp) ++ if (! fwrite (buf, sizeof *buf, chars_read, tmpfp)) + write_fatal (); + if (chars_read == 2 && strEQ (buf, ".\n")) + break; +@@ -2437,13 +2442,49 @@ do_ed_script (char const *inname, char const *outname, + break; + } + } +- if (!pipefp) ++ if (!tmpfp) + return; +- if (fwrite ("w\nq\n", sizeof (char), (size_t) 4, pipefp) == 0 +- || fflush (pipefp) != 0) ++ if (fwrite ("w\nq\n", sizeof (char), (size_t) 4, tmpfp) == 0 ++ || fflush (tmpfp) != 0) + write_fatal (); +- if (pclose (pipefp) != 0) +- fatal ("%s FAILED", editor_program); ++ ++ if (lseek (tmpfd, 0, SEEK_SET) == -1) ++ pfatal ("Can't rewind to the beginning of file %s", quotearg (tmpname)); ++ ++ if (! dry_run && ! skip_rest_of_patch) { ++ int exclusive = *outname_needs_removal ? 0 : O_EXCL; ++ *outname_needs_removal = true; ++ if (inerrno != ENOENT) ++ { ++ *outname_needs_removal = true; ++ copy_file (inname, outname, 0, exclusive, instat.st_mode, true); ++ } ++ sprintf (buf, "%s %s%s", editor_program, ++ verbosity == VERBOSE ? "" : "- ", ++ outname); ++ fflush (stdout); ++ ++ pid = fork(); ++ if (pid == -1) ++ pfatal ("Can't fork"); ++ else if (pid == 0) ++ { ++ dup2 (tmpfd, 0); ++ execl ("/bin/sh", "sh", "-c", buf, (char *) 0); ++ _exit (2); ++ } ++ else ++ { ++ int wstatus; ++ if (waitpid (pid, &wstatus, 0) == -1 ++ || ! WIFEXITED (wstatus) ++ || WEXITSTATUS (wstatus) != 0) ++ fatal ("%s FAILED", editor_program); ++ } ++ } ++ ++ fclose (tmpfp); ++ safe_unlink (tmpname); + + if (ofp) + { +-- +2.16.3 + diff --git a/package/patch/0004-Invoke-ed-directly-instead-of-using-the-shell.patch b/package/patch/0004-Invoke-ed-directly-instead-of-using-the-shell.patch new file mode 100644 index 00000000..ae64d58b --- /dev/null +++ b/package/patch/0004-Invoke-ed-directly-instead-of-using-the-shell.patch @@ -0,0 +1,41 @@ +From 3fcd042d26d70856e826a42b5f93dc4854d80bf0 Mon Sep 17 00:00:00 2001 +From: Andreas Gruenbacher +Date: Fri, 6 Apr 2018 19:36:15 +0200 +Subject: Invoke ed directly instead of using the shell + +* src/pch.c (do_ed_script): Invoke ed directly instead of using a shell +command to avoid quoting vulnerabilities. +[Retrieved from: +https://git.savannah.gnu.org/cgit/patch.git/commit/?id=3fcd042d26d70856e826a42b5f93dc4854d80bf0] +Signed-off-by: Fabrice Fontaine +--- + src/pch.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/src/pch.c b/src/pch.c +index 4fd5a05..16e001a 100644 +--- a/src/pch.c ++++ b/src/pch.c +@@ -2459,9 +2459,6 @@ do_ed_script (char const *inname, char const *outname, + *outname_needs_removal = true; + copy_file (inname, outname, 0, exclusive, instat.st_mode, true); + } +- sprintf (buf, "%s %s%s", editor_program, +- verbosity == VERBOSE ? "" : "- ", +- outname); + fflush (stdout); + + pid = fork(); +@@ -2470,7 +2467,8 @@ do_ed_script (char const *inname, char const *outname, + else if (pid == 0) + { + dup2 (tmpfd, 0); +- execl ("/bin/sh", "sh", "-c", buf, (char *) 0); ++ assert (outname[0] != '!' && outname[0] != '-'); ++ execlp (editor_program, editor_program, "-", outname, (char *) NULL); + _exit (2); + } + else +-- +cgit v1.2.1 + diff --git a/package/patch/0005-Don-t-follow-symlinks-unless--follow-symlinks-is-given.patch b/package/patch/0005-Don-t-follow-symlinks-unless--follow-symlinks-is-given.patch new file mode 100644 index 00000000..e07ae0c6 --- /dev/null +++ b/package/patch/0005-Don-t-follow-symlinks-unless--follow-symlinks-is-given.patch @@ -0,0 +1,111 @@ +From dce4683cbbe107a95f1f0d45fabc304acfb5d71a Mon Sep 17 00:00:00 2001 +From: Andreas Gruenbacher +Date: Mon, 15 Jul 2019 16:21:48 +0200 +Subject: Don't follow symlinks unless --follow-symlinks is given + +* src/inp.c (plan_a, plan_b), src/util.c (copy_to_fd, copy_file, +append_to_file): Unless the --follow-symlinks option is given, open files with +the O_NOFOLLOW flag to avoid following symlinks. So far, we were only doing +that consistently for input files. +* src/util.c (create_backup): When creating empty backup files, (re)create them +with O_CREAT | O_EXCL to avoid following symlinks in that case as well. +[Retrieved from: +https://git.savannah.gnu.org/cgit/patch.git/commit/?id=dce4683cbbe107a95f1f0d45fabc304acfb5d71a] +Signed-off-by: Fabrice Fontaine +--- + src/inp.c | 12 ++++++++++-- + src/util.c | 14 +++++++++++--- + 2 files changed, 21 insertions(+), 5 deletions(-) + +diff --git a/src/inp.c b/src/inp.c +index 32d0919..22d7473 100644 +--- a/src/inp.c ++++ b/src/inp.c +@@ -238,8 +238,13 @@ plan_a (char const *filename) + { + if (S_ISREG (instat.st_mode)) + { +- int ifd = safe_open (filename, O_RDONLY|binary_transput, 0); ++ int flags = O_RDONLY | binary_transput; + size_t buffered = 0, n; ++ int ifd; ++ ++ if (! follow_symlinks) ++ flags |= O_NOFOLLOW; ++ ifd = safe_open (filename, flags, 0); + if (ifd < 0) + pfatal ("can't open file %s", quotearg (filename)); + +@@ -340,6 +345,7 @@ plan_a (char const *filename) + static void + plan_b (char const *filename) + { ++ int flags = O_RDONLY | binary_transput; + int ifd; + FILE *ifp; + int c; +@@ -353,7 +359,9 @@ plan_b (char const *filename) + + if (instat.st_size == 0) + filename = NULL_DEVICE; +- if ((ifd = safe_open (filename, O_RDONLY | binary_transput, 0)) < 0 ++ if (! follow_symlinks) ++ flags |= O_NOFOLLOW; ++ if ((ifd = safe_open (filename, flags, 0)) < 0 + || ! (ifp = fdopen (ifd, binary_transput ? "rb" : "r"))) + pfatal ("Can't open file %s", quotearg (filename)); + if (TMPINNAME_needs_removal) +diff --git a/src/util.c b/src/util.c +index 1cc08ba..fb38307 100644 +--- a/src/util.c ++++ b/src/util.c +@@ -388,7 +388,7 @@ create_backup (char const *to, const struct stat *to_st, bool leave_original) + + try_makedirs_errno = ENOENT; + safe_unlink (bakname); +- while ((fd = safe_open (bakname, O_CREAT | O_WRONLY | O_TRUNC, 0666)) < 0) ++ while ((fd = safe_open (bakname, O_CREAT | O_EXCL | O_WRONLY | O_TRUNC, 0666)) < 0) + { + if (errno != try_makedirs_errno) + pfatal ("Can't create file %s", quotearg (bakname)); +@@ -579,10 +579,13 @@ create_file (char const *file, int open_flags, mode_t mode, + static void + copy_to_fd (const char *from, int tofd) + { ++ int from_flags = O_RDONLY | O_BINARY; + int fromfd; + ssize_t i; + +- if ((fromfd = safe_open (from, O_RDONLY | O_BINARY, 0)) < 0) ++ if (! follow_symlinks) ++ from_flags |= O_NOFOLLOW; ++ if ((fromfd = safe_open (from, from_flags, 0)) < 0) + pfatal ("Can't reopen file %s", quotearg (from)); + while ((i = read (fromfd, buf, bufsize)) != 0) + { +@@ -625,6 +628,8 @@ copy_file (char const *from, char const *to, struct stat *tost, + else + { + assert (S_ISREG (mode)); ++ if (! follow_symlinks) ++ to_flags |= O_NOFOLLOW; + tofd = create_file (to, O_WRONLY | O_BINARY | to_flags, mode, + to_dir_known_to_exist); + copy_to_fd (from, tofd); +@@ -640,9 +645,12 @@ copy_file (char const *from, char const *to, struct stat *tost, + void + append_to_file (char const *from, char const *to) + { ++ int to_flags = O_WRONLY | O_APPEND | O_BINARY; + int tofd; + +- if ((tofd = safe_open (to, O_WRONLY | O_BINARY | O_APPEND, 0)) < 0) ++ if (! follow_symlinks) ++ to_flags |= O_NOFOLLOW; ++ if ((tofd = safe_open (to, to_flags, 0)) < 0) + pfatal ("Can't reopen file %s", quotearg (to)); + copy_to_fd (from, tofd); + if (close (tofd) != 0) +-- +cgit v1.2.1 + diff --git a/package/patch/Config.in b/package/patch/Config.in new file mode 100644 index 00000000..13fa7bfc --- /dev/null +++ b/package/patch/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PATCH + bool "patch" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + Take patch files (containing difference listings) and apply + them to original files, producing patched versions. + + http://www.gnu.org/software/patch/ + +comment "patch needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + depends on BR2_USE_MMU + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/package/patch/patch.hash b/package/patch/patch.hash new file mode 100644 index 00000000..f43400ea --- /dev/null +++ b/package/patch/patch.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 ac610bda97abe0d9f6b7c963255a11dcb196c25e337c61f94e4778d632f1d8fd patch-2.7.6.tar.xz +# Locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/patch/patch.mk b/package/patch/patch.mk new file mode 100644 index 00000000..6f83d241 --- /dev/null +++ b/package/patch/patch.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# patch +# +################################################################################ + +PATCH_VERSION = 2.7.6 +PATCH_SOURCE = patch-$(PATCH_VERSION).tar.xz +PATCH_SITE = $(BR2_GNU_MIRROR)/patch +PATCH_LICENSE = GPL-3.0+ +PATCH_LICENSE_FILES = COPYING +PATCH_CPE_ID_VENDOR = gnu + +# 0001-Fix-segfault-with-mangled-rename-patch.patch +PATCH_IGNORE_CVES += CVE-2018-6951 + +# 0003-Fix-arbitrary-command-execution-in-ed-style-patches-.patch +PATCH_IGNORE_CVES += CVE-2018-1000156 + +# 0004-Invoke-ed-directly-instead-of-using-the-shell.patch +PATCH_IGNORE_CVES += CVE-2018-20969 CVE-2019-13638 + +# 0005-Don-t-follow-symlinks-unless--follow-symlinks-is-given.patch +PATCH_IGNORE_CVES += CVE-2019-13636 + +ifeq ($(BR2_PACKAGE_ATTR),y) +PATCH_CONF_OPTS += --enable-xattr +PATCH_DEPENDENCIES += attr +else +PATCH_CONF_OPTS += --disable-xattr +endif + +$(eval $(autotools-package)) diff --git a/package/patchelf/0001-Add-option-to-make-the-rpath-relative-under-a-specif.patch b/package/patchelf/0001-Add-option-to-make-the-rpath-relative-under-a-specif.patch new file mode 100644 index 00000000..c29fac7d --- /dev/null +++ b/package/patchelf/0001-Add-option-to-make-the-rpath-relative-under-a-specif.patch @@ -0,0 +1,340 @@ +From 6e8915572db65cf63b7a82f9b24af6f9cad92ba7 Mon Sep 17 00:00:00 2001 +From: Wolfgang Grandegger +Date: Mon, 20 Feb 2017 16:29:24 +0100 +Subject: [PATCH] Add option to make the rpath relative under a specified root + directory + +Running "patchelf" with the option "--make-rpath-relative ROOTDIR" will +modify or delete the RPATHDIRs according the following rules +similar to Martin's patches [1] making the Buildroot toolchaing/SDK +relocatable. + +RPATHDIR starts with "$ORIGIN": + The original build-system already took care of setting a relative + RPATH, resolve it and test if it's valid (does exist) + +RPATHDIR starts with ROOTDIR: + The original build-system added some absolute RPATH (absolute on + the build machine). Test if it's valid (does exist). + +ROOTDIR/RPATHDIR exists: + The original build-system already took care of setting an absolute + RPATH (absolute in the final rootfs), resolve it and test if it's + valid (does exist). + +RPATHDIR points somewhere else: + (can be anywhere: build trees, staging tree, host location, + non-existing location, etc.). Just discard such a path. + +The option "--no-standard-libs" will discard RPATHDIRs ROOTDIR/lib and +ROOTDIR/usr/lib. Like "--shrink-rpath", RPATHDIRs are also discarded +if the directories do not contain a library referenced by the +DT_NEEDED fields. +If the option "--relative-to-file" is given, the rpath will start +with "$ORIGIN" making it relative to the ELF file, otherwise an +absolute path relative to ROOTDIR will be used. + +A pull request for a similar patch [2] for mainline inclusion is +pending. + +[1] http://lists.busybox.net/pipermail/buildroot/2016-April/159422.html +[2] https://github.com/NixOS/patchelf/pull/118 + +Signed-off-by: Wolfgang Grandegger +[Fabrice: update for 0.13] +Signed-off-by: Fabrice Fontaine +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + src/patchelf.cc | 199 +++++++++++++++++++++++++++++++++++++++++------- + 1 file changed, 171 insertions(+), 28 deletions(-) + +diff --git a/src/patchelf.cc b/src/patchelf.cc +index fd1e7b7b61c3..f3b7ba8867bf 100644 +--- a/src/patchelf.cc ++++ b/src/patchelf.cc +@@ -45,6 +45,10 @@ static bool debugMode = false; + + static bool forceRPath = false; + ++static bool noStandardLibDirs = false; ++ ++static bool relativeToFile = false; ++ + static std::vector fileNames; + static std::string outputFileName; + static bool alwaysWrite = false; +@@ -81,6 +85,49 @@ static bool hasAllowedPrefix(const std::string & s, const std::vector + class ElfFile +@@ -197,9 +244,13 @@ public: + + void setInterpreter(const std::string & newInterpreter); + +- typedef enum { rpPrint, rpShrink, rpSet, rpAdd, rpRemove } RPathOp; ++ typedef enum { rpPrint, rpShrink, rpMakeRelative, rpSet, rpAdd, rpRemove} RPathOp; + +- void modifyRPath(RPathOp op, const std::vector & allowedRpathPrefixes, std::string newRPath); ++ bool libFoundInRPath(const std::string & dirName, ++ const std::vector neededLibs, ++ std::vector & neededLibFound); ++ ++ void modifyRPath(RPathOp op, std::string rootDir, const std::vector & allowedRpathPrefixes, std::string newRPath, const std::string & fileName); + + void addNeeded(const std::set & libs); + +@@ -1267,8 +1318,28 @@ static void concatToRPath(std::string & rpath, const std::string & path) + + + template +-void ElfFile::modifyRPath(RPathOp op, +- const std::vector & allowedRpathPrefixes, std::string newRPath) ++bool ElfFile::libFoundInRPath(const std::string & dirName, ++ const std::vector neededLibs, std::vector & neededLibFound) ++{ ++ /* For each library that we haven't found yet, see if it ++ exists in this directory. */ ++ bool libFound = false; ++ for (unsigned int j = 0; j < neededLibs.size(); ++j) ++ if (!neededLibFound[j]) { ++ std::string libName = dirName + "/" + neededLibs[j]; ++ struct stat st; ++ if (stat(libName.c_str(), &st) == 0) { ++ neededLibFound[j] = true; ++ libFound = true; ++ } ++ } ++ return libFound; ++} ++ ++ ++template ++void ElfFile::modifyRPath(RPathOp op, std::string rootDir, ++ const std::vector & allowedRpathPrefixes, std::string newRPath, const std::string & fileName) + { + auto shdrDynamic = findSection(".dynamic"); + +@@ -1314,6 +1385,11 @@ void ElfFile::modifyRPath(RPathOp op, + return; + } + ++ if (op == rpMakeRelative && !rpath) { ++ debug("no RPATH to make relative\n"); ++ return; ++ } ++ + if (op == rpShrink && !rpath) { + debug("no RPATH to shrink\n"); + return; +@@ -1343,31 +1419,80 @@ void ElfFile::modifyRPath(RPathOp op, + continue; + } + +- /* For each library that we haven't found yet, see if it +- exists in this directory. */ +- bool libFound = false; +- for (unsigned int j = 0; j < neededLibs.size(); ++j) +- if (!neededLibFound[j]) { +- std::string libName = dirName + "/" + neededLibs[j]; +- try { +- Elf32_Half library_e_machine = getElfType(readFile(libName, sizeof(Elf32_Ehdr))).machine; +- if (rdi(library_e_machine) == rdi(hdr->e_machine)) { +- neededLibFound[j] = true; +- libFound = true; +- } else +- debug("ignoring library '%s' because its machine type differs\n", libName.c_str()); +- } catch (SysError & e) { +- if (e.errNo != ENOENT) throw; +- } +- } +- +- if (!libFound) ++ if (!libFoundInRPath(dirName, neededLibs, neededLibFound)) + debug("removing directory '%s' from RPATH\n", dirName.c_str()); + else + concatToRPath(newRPath, dirName); + } + } + ++ /* Make the the RPATH relative to the specified path */ ++ if (op == rpMakeRelative) { ++ std::vector neededLibFound(neededLibs.size(), false); ++ std::string fileDir = fileName.substr(0, fileName.find_last_of("/")); ++ ++ newRPath = ""; ++ ++ std::vector rpathDirs = splitColonDelimitedString(rpath); ++ for (std::vector::iterator it = rpathDirs.begin(); it != rpathDirs.end(); ++it) { ++ const std::string & dirName = *it; ++ ++ std::string canonicalPath; ++ ++ /* Figure out if we should keep or discard the path. There are several ++ cases to be handled: ++ "dirName" starts with "$ORIGIN": ++ The original build-system already took care of setting a relative ++ RPATH. Resolve it and test if it's valid (does exist). ++ "dirName" start with "rootDir": ++ The original build-system added some absolute RPATH (absolute on ++ the build machine). Test if it's valid (does exist). ++ "rootDir"/"dirName" exists: ++ The original build-system already took care of setting an absolute ++ RPATH (absolute in the final rootfs). Resolve it and test if it's ++ valid (does exist). ++ "dirName" points somewhere else: ++ (can be anywhere: build trees, staging tree, host location, ++ non-existing location, etc.). Just discard such a path. */ ++ if (!dirName.compare(0, 7, "$ORIGIN")) { ++ std::string path = fileDir + dirName.substr(7); ++ if (!absolutePathExists(path, canonicalPath)) { ++ debug("removing directory '%s' from RPATH because '%s' doesn't exist\n", ++ dirName.c_str(), path.c_str()); ++ continue; ++ } ++ } else if (!dirName.compare(0, rootDir.length(), rootDir)) { ++ if (!absolutePathExists(dirName, canonicalPath)) { ++ debug("removing directory '%s' from RPATH because it doesn't exist\n", dirName.c_str()); ++ continue; ++ } ++ } else { ++ std::string path = rootDir + dirName; ++ if (!absolutePathExists(path, canonicalPath)) { ++ debug("removing directory '%s' from RPATH because it's not in rootdir\n", ++ dirName.c_str()); ++ continue; ++ } ++ } ++ ++ if (noStandardLibDirs) { ++ if (!canonicalPath.compare(rootDir + "/lib") || ++ !canonicalPath.compare(rootDir + "/usr/lib")) { ++ debug("removing directory '%s' from RPATH because it's a standard library directory\n", ++ dirName.c_str()); ++ continue; ++ } ++ } ++ ++ /* Finally make "canonicalPath" relative to "filedir" in "rootDir" */ ++ if (relativeToFile) ++ concatToRPath(newRPath, makePathRelative(canonicalPath, fileDir)); ++ else ++ concatToRPath(newRPath, canonicalPath.substr(rootDir.length())); ++ debug("keeping relative path of %s\n", canonicalPath.c_str()); ++ } ++ } ++ + if (op == rpRemove) { + if (!rpath) { + debug("no RPATH to delete\n"); +@@ -1736,7 +1861,9 @@ static bool removeRPath = false; + static bool setRPath = false; + static bool addRPath = false; + static bool printRPath = false; ++static bool makeRPathRelative = false; + static std::string newRPath; ++static std::string rootDir; + static std::set neededLibsToRemove; + static std::map neededLibsToReplace; + static std::set neededLibsToAdd; +@@ -1760,16 +1887,18 @@ static void patchElf2(ElfFile && elfFile, const FileContents & fileContents, con + elfFile.setInterpreter(newInterpreter); + + if (printRPath) +- elfFile.modifyRPath(elfFile.rpPrint, {}, ""); ++ elfFile.modifyRPath(elfFile.rpPrint, "", {}, "", fileName); + + if (shrinkRPath) +- elfFile.modifyRPath(elfFile.rpShrink, allowedRpathPrefixes, ""); ++ elfFile.modifyRPath(elfFile.rpShrink, "", allowedRpathPrefixes, "", fileName); + else if (removeRPath) +- elfFile.modifyRPath(elfFile.rpRemove, {}, ""); ++ elfFile.modifyRPath(elfFile.rpRemove, "", {}, "", fileName); + else if (setRPath) +- elfFile.modifyRPath(elfFile.rpSet, {}, newRPath); ++ elfFile.modifyRPath(elfFile.rpSet, "", {}, newRPath, fileName); + else if (addRPath) +- elfFile.modifyRPath(elfFile.rpAdd, {}, newRPath); ++ elfFile.modifyRPath(elfFile.rpAdd, "", {}, newRPath, fileName); ++ else if (makeRPathRelative) ++ elfFile.modifyRPath(elfFile.rpMakeRelative, rootDir, {}, "", fileName); + + if (printNeeded) elfFile.printNeededLibs(); + +@@ -1821,6 +1950,9 @@ void showHelp(const std::string & progName) + [--remove-rpath]\n\ + [--shrink-rpath]\n\ + [--allowed-rpath-prefixes PREFIXES]\t\tWith '--shrink-rpath', reject rpath entries not starting with the allowed prefix\n\ ++ [--make-rpath-relative ROOTDIR]\n\ ++ [--no-standard-lib-dirs]\n\ ++ [--relative-to-file]\n\ + [--print-rpath]\n\ + [--force-rpath]\n\ + [--add-needed LIBRARY]\n\ +@@ -1889,6 +2021,17 @@ int mainWrapped(int argc, char * * argv) + addRPath = true; + newRPath = argv[i]; + } ++ else if (arg == "--make-rpath-relative") { ++ if (++i == argc) error("missing argument to --make-rpath-relative"); ++ makeRPathRelative = true; ++ rootDir = argv[i]; ++ } ++ else if (arg == "--no-standard-lib-dirs") { ++ noStandardLibDirs = true; ++ } ++ else if (arg == "--relative-to-file") { ++ relativeToFile = true; ++ } + else if (arg == "--print-rpath") { + printRPath = true; + } +-- +2.43.0 + diff --git a/package/patchelf/Config.in.host b/package/patchelf/Config.in.host new file mode 100644 index 00000000..6abe78e2 --- /dev/null +++ b/package/patchelf/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_PATCHELF + bool + default y + help + PatchELF is a small utility to modify the dynamic linker + and RPATH of ELF executables. + + http://nixos.org/patchelf.html diff --git a/package/patchelf/patchelf.hash b/package/patchelf/patchelf.hash new file mode 100644 index 00000000..d4064fb9 --- /dev/null +++ b/package/patchelf/patchelf.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 4c7ed4bcfc1a114d6286e4a0d3c1a90db147a4c3adda1814ee0eee0f9ee917ed patchelf-0.13.tar.bz2 +# License files, locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/patchelf/patchelf.mk b/package/patchelf/patchelf.mk new file mode 100644 index 00000000..c583b228 --- /dev/null +++ b/package/patchelf/patchelf.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# patchelf +# +################################################################################ + +PATCHELF_VERSION = 0.13 +PATCHELF_SITE = \ + https://github.com/NixOS/patchelf/releases/download/$(PATCHELF_VERSION) +PATCHELF_SOURCE = patchelf-$(PATCHELF_VERSION).tar.bz2 +PATCHELF_LICENSE = GPL-3.0+ +PATCHELF_LICENSE_FILES = COPYING + +$(eval $(host-autotools-package)) diff --git a/package/pax-utils/Config.in b/package/pax-utils/Config.in new file mode 100644 index 00000000..ebcca985 --- /dev/null +++ b/package/pax-utils/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PAX_UTILS + bool "pax-utils" + depends on BR2_USE_WCHAR + help + ELF related utils for ELF 32/64 binaries that can check files + for security relevant properties. + + http://www.gentoo.org/proj/en/hardened/pax-utils.xml + +comment "pax-utils needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/package/pax-utils/pax-utils.hash b/package/pax-utils/pax-utils.hash new file mode 100644 index 00000000..464dd14a --- /dev/null +++ b/package/pax-utils/pax-utils.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 907fdcfc6c6c2913a8e42847f8096027b0a953b9344208d14daf2324fd711638 pax-utils-1.3.7.tar.bz2 +sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 COPYING diff --git a/package/pax-utils/pax-utils.mk b/package/pax-utils/pax-utils.mk new file mode 100644 index 00000000..5dd1842d --- /dev/null +++ b/package/pax-utils/pax-utils.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# pax-utils +# +################################################################################ + +PAX_UTILS_VERSION = 1.3.7 +PAX_UTILS_SITE = https://gitweb.gentoo.org/proj/pax-utils.git/snapshot +PAX_UTILS_SOURCE = pax-utils-$(PAX_UTILS_VERSION).tar.bz2 +PAX_UTILS_LICENSE = GPL-2.0 +PAX_UTILS_LICENSE_FILES = COPYING +PAX_UTILS_CPE_ID_VENDOR = gentoo + +PAX_UTILS_DEPENDENCIES = host-pkgconf +PAX_UTILS_CONF_OPTS = \ + -Dbuild_manpages=disabled \ + -Dlddtree_implementation=sh \ + -Dtests=false + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +PAX_UTILS_DEPENDENCIES += libcap +PAX_UTILS_CONF_OPTS += -Duse_libcap=enabled +else +PAX_UTILS_CONF_OPTS += -Duse_libcap=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) +PAX_UTILS_DEPENDENCIES += libseccomp +PAX_UTILS_CONF_OPTS += -Duse_seccomp=true +else +PAX_UTILS_CONF_OPTS += -Duse_seccomp=false +endif + +# lddtree and symtree need bash +ifeq ($(BR2_PACKAGE_BASH),) +define PAX_UTILS_REMOVE_BASH_TOOLS + rm -f $(TARGET_DIR)/usr/bin/{lddtree,symtree} +endef +endif +PAX_UTILS_POST_INSTALL_TARGET_HOOKS += PAX_UTILS_REMOVE_BASH_TOOLS + +$(eval $(meson-package)) +$(eval $(host-meson-package)) diff --git a/package/paxtest/0001-genpaxtest-move-log-location.patch b/package/paxtest/0001-genpaxtest-move-log-location.patch new file mode 100644 index 00000000..fa18815d --- /dev/null +++ b/package/paxtest/0001-genpaxtest-move-log-location.patch @@ -0,0 +1,31 @@ +From 623d99e4f557ef9cd771006e4f916c12d22a07a8 Mon Sep 17 00:00:00 2001 +From: David Graziano +Date: Mon, 12 Jun 2017 10:41:45 -0500 +Subject: [PATCH] genpaxtest: move log location + +Move log location to /var/log instead of local directory. +(For read-only filesystems) + +Signed-off-by: David Graziano +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + genpaxtest | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/genpaxtest b/genpaxtest +index 5a22e15..d62b15e 100644 +--- a/genpaxtest ++++ b/genpaxtest +@@ -35,7 +35,7 @@ + exit 1 + fi + +-LOG=\$HOME/paxtest.log ++LOG=/var/log/paxtest.log + [ -n "\$1" ] && LOG=\$1 + touch "\$LOG" + if [ ! -e "\$LOG" ]; then +-- +1.9.1 + diff --git a/package/paxtest/0002-paxtest-page-alignment-ARM-and-NIOS2-arch.patch b/package/paxtest/0002-paxtest-page-alignment-ARM-and-NIOS2-arch.patch new file mode 100644 index 00000000..54e5e69e --- /dev/null +++ b/package/paxtest/0002-paxtest-page-alignment-ARM-and-NIOS2-arch.patch @@ -0,0 +1,49 @@ +From 70406ad5668a15fedce2ae1ed3bc4fad04d9f040 Mon Sep 17 00:00:00 2001 +From: Matt Weber +Date: Wed, 5 Jul 2017 20:47:42 -0500 +Subject: [PATCH] paxtest: page alignment ARM and NIOS2 arch + +- Extended ARM range from ARMv6-v7 to also include anything below v7 +- Added NIOS2 arch to conditionally have smaller alignment + +Submitted Upstream to pageexec@freemail.hu. Also posted a +bug to both (Hardened) Suse and Gentoo's bugtrackers. +https://bugzilla.opensuse.org/show_bug.cgi?id=1047422 +https://bugs.gentoo.org/show_bug.cgi?id=623946 + +Signed-off-by: Matthew Weber +--- + paxtest.h | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/paxtest.h b/paxtest.h +index 8623bfb..a230c1a 100644 +--- a/paxtest.h ++++ b/paxtest.h +@@ -5,13 +5,21 @@ + #include + + /* +- * ARMv6 and ARMv7 do not like 64k alignment, 32k is ok ++ * Earlier ARMv# through ARMv7 do not like 64k alignment, 32k is ok + */ +-#if defined(__arm__) && __ARM_ARCH >= 6 && __ARM_ARCH <= 7 ++#if defined(__arm__) && __ARM_ARCH <= 7 + #define PAGE_SIZE_MAX (32768) + #else + #define PAGE_SIZE_MAX 0x10000 /* 64k should cover most arches */ + #endif ++ ++/* ++ * NIOS2's assemblier doesn't like 64k alignment ++ */ ++#if defined(__nios2_arch__) ++#define PAGE_SIZE_MAX (32768) ++#endif ++ + #ifndef __aligned + #define __aligned(x) __attribute__((aligned(x))) + #endif +-- +1.9.1 + diff --git a/package/paxtest/Config.in b/package/paxtest/Config.in new file mode 100644 index 00000000..565c45cc --- /dev/null +++ b/package/paxtest/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PAXTEST + bool "paxtest" + depends on !BR2_microblaze + # No UCLIBC or MUSL because __NO_A_OUT_SUPPORT + depends on BR2_TOOLCHAIN_USES_GLIBC + help + PaX regression test suite + + http://pax.grsecurity.net/docs + +comment "paxtest needs a glibc toolchain" + depends on !BR2_microblaze + depends on !BR2_TOOLCHAIN_USES_GLIBC diff --git a/package/paxtest/paxtest.hash b/package/paxtest/paxtest.hash new file mode 100644 index 00000000..d9a8caa2 --- /dev/null +++ b/package/paxtest/paxtest.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 d553848431fd8c2ab6c8361b62e5cedfed1cc1d60088241f4a33d2af15dd667f paxtest-0.9.15.tar.gz +sha256 fe8759e6d3ff462c876ded6e95e3fb297d607bc45799bb264ec9a170b5046522 README diff --git a/package/paxtest/paxtest.mk b/package/paxtest/paxtest.mk new file mode 100644 index 00000000..1b8d6699 --- /dev/null +++ b/package/paxtest/paxtest.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# paxtest +# +################################################################################ + +PAXTEST_VERSION = 0.9.15 +PAXTEST_SITE = https://www.grsecurity.net/~spender +PAXTEST_LICENSE = GPL-2.0+ +PAXTEST_LICENSE_FILES = README +PAXTEST_CPE_ID_VENDOR = grsecurity + +define PAXTEST_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + RUNDIR="/usr/lib/paxtest" CC="$(TARGET_CC)" LD="$(TARGET_CC)" linux +endef + +# The files installed to RUNDIR include test apps and shared libs. +# Assuming /usr/bin/paxtest script solely uses these libs and apps, the +# genpaxtest script updates LD_LIBRARY_PATH in the paxtest script +# as part of the paxtest's creation to include the RUNDIR path for shared +# library use. +define PAXTEST_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + CC="$(TARGET_CC)" LD="$(TARGET_CC)" \ + DESTDIR=$(TARGET_DIR) \ + BINDIR="usr/bin" \ + RUNDIR="/usr/lib/paxtest" -f Makefile.psm install +endef + +$(eval $(generic-package)) diff --git a/package/pciutils/Config.in b/package/pciutils/Config.in new file mode 100644 index 00000000..d16c3634 --- /dev/null +++ b/package/pciutils/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PCIUTILS + bool "pciutils" + help + Various utilities dealing with the PCI bus. + Provides things like setpci and lspci. + + https://mj.ucw.cz/sw/pciutils/ diff --git a/package/pciutils/pciutils.hash b/package/pciutils/pciutils.hash new file mode 100644 index 00000000..f6a3f9ee --- /dev/null +++ b/package/pciutils/pciutils.hash @@ -0,0 +1,3 @@ +# From https://www.kernel.org/pub/software/utils/pciutils/sha256sums.asc +sha256 77f11f78298502634d1af50308f15a5788629f6cf45cba376f5009aea4cb4926 pciutils-3.13.0.tar.xz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/pciutils/pciutils.mk b/package/pciutils/pciutils.mk new file mode 100644 index 00000000..ea3c21db --- /dev/null +++ b/package/pciutils/pciutils.mk @@ -0,0 +1,69 @@ +################################################################################ +# +# pciutils +# +################################################################################ + +PCIUTILS_VERSION = 3.13.0 +PCIUTILS_SITE = $(BR2_KERNEL_MIRROR)/software/utils/pciutils +PCIUTILS_SOURCE = pciutils-$(PCIUTILS_VERSION).tar.xz +PCIUTILS_INSTALL_STAGING = YES +PCIUTILS_LICENSE = GPL-2.0+ +PCIUTILS_LICENSE_FILES = COPYING +PCIUTILS_MAKE_OPTS = \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + HOST="$(NORMALIZED_ARCH)-linux" \ + OPT="$(TARGET_CFLAGS) -std=gnu99" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + DNS=no \ + STRIP= + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +PCIUTILS_DEPENDENCIES += udev +PCIUTILS_MAKE_OPTS += HWDB=yes +else +PCIUTILS_MAKE_OPTS += HWDB=no +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +PCIUTILS_MAKE_OPTS += ZLIB=yes +PCIUTILS_DEPENDENCIES += zlib +else +PCIUTILS_MAKE_OPTS += ZLIB=no +endif + +ifeq ($(BR2_PACKAGE_KMOD),y) +PCIUTILS_DEPENDENCIES += kmod +PCIUTILS_MAKE_OPTS += LIBKMOD=yes +else +PCIUTILS_MAKE_OPTS += LIBKMOD=no +endif + +ifeq ($(BR2_STATIC_LIBS),y) +PCIUTILS_MAKE_OPTS += SHARED=no +else +PCIUTILS_MAKE_OPTS += SHARED=yes +endif + +define PCIUTILS_CONFIGURE_CMDS + $(SED) 's/wget --no-timestamping/wget/' $(PCIUTILS_DIR)/update-pciids.sh +endef + +define PCIUTILS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(PCIUTILS_MAKE_OPTS) \ + PREFIX=/usr +endef + +define PCIUTILS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) $(PCIUTILS_MAKE_OPTS) \ + PREFIX=$(TARGET_DIR)/usr SBINDIR=$(TARGET_DIR)/usr/bin \ + install install-lib install-pcilib +endef + +define PCIUTILS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) $(PCIUTILS_MAKE_OPTS) \ + PREFIX=$(STAGING_DIR)/usr SBINDIR=$(STAGING_DIR)/usr/bin \ + install install-lib install-pcilib +endef + +$(eval $(generic-package)) diff --git a/package/pcm-tools/0001-pmu-query.py-fix-python3-errors-add-linux-platform-s.patch b/package/pcm-tools/0001-pmu-query.py-fix-python3-errors-add-linux-platform-s.patch new file mode 100644 index 00000000..e49015f2 --- /dev/null +++ b/package/pcm-tools/0001-pmu-query.py-fix-python3-errors-add-linux-platform-s.patch @@ -0,0 +1,103 @@ +From 36b9aa5a8e071ac6349d2d7f9c23a25abcdc316d Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Tue, 2 Nov 2021 10:30:55 -0700 +Subject: [PATCH] pmu-query.py: fix python3 errors, add linux platform support + +Unfortuantly, commit 0212b382624c744491a845c75dfb2a527d4a821f broke pmu-query +in some unexpected ways. + +First, urllib.request.urlopen returns a bytes-object in Python3, which results +in the csv.DictReader throwing the error: `TypeError: initial_value must be +str or None, not HTTPResponse` A simple .read().decode('utf-8') appended to +the end of urlopen fixes the error. + +Second, passing the map_file_raw string to DictReader results in a malformed +dictionary. Fix this by wrapping the raw text string in io.StringIO(). + +Third: During the python2 -> python3 refactoring, I accidentally switched some +logic in the pull request. `if core_path != ''` changed to `if not core_path`, +which breaks the logic, the same goes for +`if offcore_path != ''` -> `if not offcore_path`. Change these to +`if core_path` and `if offcore_path` respectively. + +From upstream commit: 7a670261c2063595f2330e6cc2a7f19eb18b6ea8 + +Signed-off-by: Adam Duskett +--- + pmu-query.py | 20 ++++++++++++++------ + 1 file changed, 14 insertions(+), 6 deletions(-) + +diff --git a/pmu-query.py b/pmu-query.py +index 5595819..bc1e57b 100755 +--- a/pmu-query.py ++++ b/pmu-query.py +@@ -1,4 +1,5 @@ + #!/usr/bin/env python3 ++import io + import urllib.request + import urllib.parse + import json +@@ -8,6 +9,7 @@ import sys + import platform + import getopt + import re ++import shutil + + all_flag = False + download_flag = False +@@ -29,8 +31,8 @@ except getopt.GetoptError as err: + sys.exit(-2) + + if filename is None: +- map_file_raw = urllib.request.urlopen("https://download.01.org/perfmon/mapfile.csv") +- map_dict = csv.DictReader(map_file_raw) ++ map_file_raw = urllib.request.urlopen("https://download.01.org/perfmon/mapfile.csv").read().decode('utf-8') ++ map_dict = csv.DictReader(io.StringIO(map_file_raw), delimiter=',') + map_file = [] + core_path = "" + offcore_path = "" +@@ -45,20 +47,26 @@ if filename is None: + p = subprocess.Popen(["./pcm-core.exe -c"], stdout=subprocess.PIPE, shell=True) + elif platform.system() == "Windows": + p = subprocess.Popen(["pcm-core.exe", "-c"], stdout=subprocess.PIPE, shell=True) ++ elif platform.system() == "Linux": ++ pcm_core = shutil.which("pcm-core") ++ if not pcm_core: ++ print("Could not find pcm-core executable!") ++ sys.exit(-1) ++ p = subprocess.Popen([pcm_core, "-c"], stdout=subprocess.PIPE, shell=True) + else: + p = subprocess.Popen(["./pcm-core.x -c"], stdout=subprocess.PIPE, shell=True) + + (output, err) = p.communicate() + p_status = p.wait() + for model in map_file: +- if re.search(model["Family-model"], output): ++ if re.search(model["Family-model"], output.decode("utf-8")): + if model["EventType"] == "core": + core_path = model["Filename"] + elif model["EventType"] == "offcore": + offcore_path = model["Filename"] + print(model) + +- if not core_path: ++ if core_path: + json_core_data = urllib.request.urlopen( + "https://download.01.org/perfmon" + core_path + ) +@@ -67,10 +75,10 @@ if filename is None: + with open(core_path.split("/")[-1], "w") as outfile: + json.dump(core_events, outfile, sort_keys=True, indent=4) + else: +- print("no core event found for %s CPU, program abort..." % output) ++ print("no core event found for %s CPU, program abort..." % output.decode("utf-8")) + sys.exit(-1) + +- if not offcore_path: ++ if offcore_path: + json_offcore_data = urllib.request.urlopen( + "https://download.01.org/perfmon" + offcore_path + ) +-- +2.32.0 + diff --git a/package/pcm-tools/Config.in b/package/pcm-tools/Config.in new file mode 100644 index 00000000..6bf05f32 --- /dev/null +++ b/package/pcm-tools/Config.in @@ -0,0 +1,33 @@ +comment "pcm-tools needs a toolchain w/ C++, NPTL" + depends on BR2_i386 || BR2_x86_64 + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL + +config BR2_PACKAGE_PCM_TOOLS + bool "pcm-tools" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_PACKAGE_HWDATA + select BR2_PACKAGE_HWDATA_PCI_IDS + help + Processor Counter Monitor (PCM) is an application programming + interface (API) and a set of tools based on the API to monitor + performance and energy metrics of Intel(R) Core(TM), Xeon(R), + Atom(TM) and Xeon Phi(TM) processors. + + https://github.com/opcm/pcm + +if BR2_PACKAGE_PCM_TOOLS + +config BR2_PACKAGE_PCM_TOOLS_PMU_QUERY + bool "install the pmu-query script" + default y + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_CA_CERTIFICATES # https + select BR2_PACKAGE_PYTHON3_SSL # urllib2 + +comment "pmu-query needs Python3" + depends on !BR2_PACKAGE_PYTHON3 + +endif diff --git a/package/pcm-tools/pcm-tools.hash b/package/pcm-tools/pcm-tools.hash new file mode 100644 index 00000000..80176161 --- /dev/null +++ b/package/pcm-tools/pcm-tools.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 832929db1c84d1a50a40487a3c08b67182eabc99689050876430de59894c2714 pcm-tools-93fc9193a70e2f1f054be554c48f4a4791be5032-git4.tar.gz +sha256 0f476c77009f982dcc4bdff41e692ddd456a9862908e99f2ae3d57296decc649 LICENSE diff --git a/package/pcm-tools/pcm-tools.mk b/package/pcm-tools/pcm-tools.mk new file mode 100644 index 00000000..30a8fbf0 --- /dev/null +++ b/package/pcm-tools/pcm-tools.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# pcm-tools +# +################################################################################ + +# Don't use the github helper, as pcm-tools uses git attributes that are +# replaced when gnerating the archive. +# 93fc9193a70e2f1f054be554c48f4a4791be5032 is the hash of the 202110 tag. +PCM_TOOLS_VERSION = 93fc9193a70e2f1f054be554c48f4a4791be5032 +PCM_TOOLS_SITE = https://github.com/opcm/pcm +PCM_TOOLS_SITE_METHOD = git +PCM_TOOLS_LICENSE = BSD-3-Clause +PCM_TOOLS_LICENSE_FILES = LICENSE + +PCM_TOOLS_EXE_FILES = \ + pcm-core pcm-iio pcm-lspci pcm-memory pcm-msr pcm-numa \ + pcm-pcicfg pcm-pcie pcm-power pcm-sensor pcm-tsx pcm + +define PCM_TOOLS_BUILD_CMDS + touch $(@D)/daemon-binaries + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11 -fPIC" \ + UNAME=Linux HOST=_LINUX \ + $(foreach f,$(PCM_TOOLS_EXE_FILES),$(f).x) +endef + +ifeq ($(BR2_PACKAGE_PCM_TOOLS_PMU_QUERY),y) +define PCM_TOOLS_INSTALL_PMU_QUERY + $(INSTALL) -D -m 755 $(@D)/pmu-query.py $(TARGET_DIR)/usr/bin/pmu-query +endef +endif + +define PCM_TOOLS_INSTALL_TARGET_CMDS + $(foreach f,$(PCM_TOOLS_EXE_FILES),\ + $(INSTALL) -D -m 755 $(@D)/$(f).x $(TARGET_DIR)/usr/bin/$(f) + ) + $(PCM_TOOLS_INSTALL_PMU_QUERY) +endef + +define PCM_TOOLS_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_X86_MSR) +endef + +$(eval $(generic-package)) diff --git a/package/pcmanfm/0001-po-de-po-fix-build-with-gettext-tiny.patch b/package/pcmanfm/0001-po-de-po-fix-build-with-gettext-tiny.patch new file mode 100644 index 00000000..ededd450 --- /dev/null +++ b/package/pcmanfm/0001-po-de-po-fix-build-with-gettext-tiny.patch @@ -0,0 +1,35 @@ +From 2e51d1015ffd58f26f4ddf03a858164edcf64a8c Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 26 Mar 2021 09:16:08 +0100 +Subject: [PATCH] po/de.po: fix build with gettext-tiny + +Build of de.gmo is broken with gettext-tiny since version 1.3.2 and +commit 80e0f662861e6d0ad8888f61c19c0695978779bf: + +file=`echo de | sed 's,.*/,,'`.gmo \ + && rm -f $file && /home/buildroot/autobuild/instance-2/output-1/host/bin/msgfmt -o $file de.po +Makefile:102: recipe for target 'de.gmo' failed + +Fixes: + - http://autobuild.buildroot.org/results/69f4e5fa44208429b143011640971a61d709d5b1 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/lxde/pcmanfm/pull/8] +--- + po/de.po | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/po/de.po b/po/de.po +index 766a44e..9781ba3 100644 +--- a/po/de.po ++++ b/po/de.po +@@ -961,8 +961,7 @@ msgstr "Diese Ordneransicht merken" + #: ../src/main-win-ui.c:279 + msgid "" + "Check to remember view and sort as folder setting rather than global one" +-msgstr +-"Ansicht und Sortierung für dieses Verzeichnis anstelle der globalen " ++msgstr "Ansicht und Sortierung für dieses Verzeichnis anstelle der globalen " + "Einstellung merken" + + #: ../src/main-win-ui.c:281 diff --git a/package/pcmanfm/Config.in b/package/pcmanfm/Config.in new file mode 100644 index 00000000..73b8c7c0 --- /dev/null +++ b/package/pcmanfm/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_PCMANFM + bool "pcmanfm" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + depends on BR2_INSTALL_LIBSTDCPP # libgtk2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libgtk2 -> pango -> harfbuzz + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libgtk2 -> pango -> harfbuzz + select BR2_PACKAGE_LIBFM + select BR2_PACKAGE_MENU_CACHE + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBGTK2 if !BR2_PACKAGE_LIBGTK3_X11 + help + PCMan File Manager (PCManFM) is a file manager application + developed by Hong Jen Yee from Taiwan which is meant to be a + replacement for Nautilus, Konqueror and Thunar. + + http://wiki.lxde.org/en/PCManFM + +comment "pcmanfm needs a toolchain w/ wchar, threads, C++, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_XORG7 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/pcmanfm/pcmanfm.hash b/package/pcmanfm/pcmanfm.hash new file mode 100644 index 00000000..1911de20 --- /dev/null +++ b/package/pcmanfm/pcmanfm.hash @@ -0,0 +1,7 @@ +# From https://sourceforge.net/projects/pcmanfm/files/PCManFM%20%2B%20Libfm%20%28tarball%20release%29/PCManFM/ +md5 ef7c4417d2697ef138d175db7aeae15a pcmanfm-1.3.2.tar.xz +sha1 bc4e468b0ec3089aaf817eafed43ae06350961ee pcmanfm-1.3.2.tar.xz + +# Locally computed: +sha256 14cb7b247493c4cce65fbb5902611e3ad00a7a870fbc1e50adc50428c5140cf7 pcmanfm-1.3.2.tar.xz +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/package/pcmanfm/pcmanfm.mk b/package/pcmanfm/pcmanfm.mk new file mode 100644 index 00000000..9b233f61 --- /dev/null +++ b/package/pcmanfm/pcmanfm.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# pcmanfm +# +################################################################################ + +PCMANFM_VERSION = 1.3.2 +PCMANFM_SOURCE = pcmanfm-$(PCMANFM_VERSION).tar.xz +PCMANFM_SITE = http://sourceforge.net/projects/pcmanfm/files +PCMANFM_DEPENDENCIES = libglib2 menu-cache libfm $(TARGET_NLS_DEPENDENCIES) +PCMANFM_LICENSE = GPL-2.0+ +PCMANFM_LICENSE_FILES = COPYING +PCMANFM_CPE_ID_VALID = YES +PCMANFM_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) + +ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) +PCMANFM_CONF_OPTS += --with-gtk=3 +PCMANFM_DEPENDENCIES += libgtk3 +else +PCMANFM_CONF_OPTS += --with-gtk=2 +PCMANFM_DEPENDENCIES += libgtk2 +endif + +$(eval $(autotools-package)) diff --git a/package/pcre/0001-Kill-compatibility-bits.patch b/package/pcre/0001-Kill-compatibility-bits.patch new file mode 100644 index 00000000..d2cf76bf --- /dev/null +++ b/package/pcre/0001-Kill-compatibility-bits.patch @@ -0,0 +1,46 @@ +From e180a4085d8d2f82a05f037e465708cfc16bd2bf Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Tue, 14 Jun 2016 20:31:12 -0300 +Subject: [PATCH] Kill compatibility bits + +Kill ABI compatibility bits, we don't need them. +Fixes build failures on non-ELF targets. + +Signed-off-by: Gustavo Zacarias +[Fabrice: update for 8.44] +Signed-off-by: Fabrice Fontaine +--- + pcrecpp.cc | 16 ---------------- + 1 file changed, 16 deletions(-) + +diff --git a/pcrecpp.cc b/pcrecpp.cc +index d09c9ab..6910db0 100644 +--- a/pcrecpp.cc ++++ b/pcrecpp.cc +@@ -58,23 +58,6 @@ static const int kVecSize = (1 + kMaxArgs) * 3; // results + PCRE workspace + // Special object that stands-in for no argument + Arg RE::no_arg((void*)NULL); + +-// This is for ABI compatibility with old versions of pcre (pre-7.6), +-// which defined a global no_arg variable instead of putting it in the +-// RE class. This works on GCC >= 3, at least. It definitely works +-// for ELF, but may not for other object formats (Mach-O, for +-// instance, does not support aliases.) We could probably have a more +-// inclusive test if we ever needed it. (Note that not only the +-// __attribute__ syntax, but also __USER_LABEL_PREFIX__, are +-// gnu-specific.) +-#if defined(__GNUC__) && __GNUC__ >= 3 && defined(__ELF__) \ +- && !defined(__INTEL_COMPILER) && !defined(__LCC__) +-# define ULP_AS_STRING(x) ULP_AS_STRING_INTERNAL(x) +-# define ULP_AS_STRING_INTERNAL(x) #x +-# define USER_LABEL_PREFIX_STR ULP_AS_STRING(__USER_LABEL_PREFIX__) +-extern Arg no_arg +- __attribute__((alias(USER_LABEL_PREFIX_STR "_ZN7pcrecpp2RE6no_argE"))); +-#endif +- + // If a regular expression has no error, its error_ field points here + static const string empty_string; + +-- +2.7.3 + diff --git a/package/pcre/0002-Disable-C-unit-tests.patch b/package/pcre/0002-Disable-C-unit-tests.patch new file mode 100644 index 00000000..1c9f26eb --- /dev/null +++ b/package/pcre/0002-Disable-C-unit-tests.patch @@ -0,0 +1,42 @@ +From e3c636b8c7f9912d8d3a9fabdaa0a96ba69f7b29 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Tue, 14 Jun 2016 20:32:44 -0300 +Subject: [PATCH] Disable C++ unit tests + +They fail to build on static targets and they're not installed anyway. + +Signed-off-by: Gustavo Zacarias +--- + Makefile.in | 9 --------- + 1 file changed, 9 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 6d03912..2c42b3e 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -133,12 +133,6 @@ noinst_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) + @WITH_PCRE8_TRUE@am__append_20 = libpcreposix.la + @WITH_GCOV_TRUE@@WITH_PCRE8_TRUE@am__append_21 = $(GCOV_CFLAGS) + @WITH_PCRE_CPP_TRUE@am__append_22 = libpcrecpp.la +-@WITH_PCRE_CPP_TRUE@am__append_23 = pcrecpp_unittest \ +-@WITH_PCRE_CPP_TRUE@ pcre_scanner_unittest \ +-@WITH_PCRE_CPP_TRUE@ pcre_stringpiece_unittest +-@WITH_PCRE_CPP_TRUE@am__append_24 = pcrecpp_unittest \ +-@WITH_PCRE_CPP_TRUE@ pcre_scanner_unittest \ +-@WITH_PCRE_CPP_TRUE@ pcre_stringpiece_unittest + @WITH_GCOV_TRUE@@WITH_PCRE_CPP_TRUE@am__append_25 = $(GCOV_CXXFLAGS) + @WITH_GCOV_TRUE@@WITH_PCRE_CPP_TRUE@am__append_26 = $(GCOV_LIBS) + @WITH_GCOV_TRUE@@WITH_PCRE_CPP_TRUE@am__append_27 = $(GCOV_LIBS) +@@ -190,9 +184,6 @@ libpcreposix_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + "$(DESTDIR)$(includedir)" + @WITH_REBUILD_CHARTABLES_TRUE@am__EXEEXT_2 = dftables$(EXEEXT) + @WITH_JIT_TRUE@am__EXEEXT_3 = pcre_jit_test$(EXEEXT) +-@WITH_PCRE_CPP_TRUE@am__EXEEXT_4 = pcrecpp_unittest$(EXEEXT) \ +-@WITH_PCRE_CPP_TRUE@ pcre_scanner_unittest$(EXEEXT) \ +-@WITH_PCRE_CPP_TRUE@ pcre_stringpiece_unittest$(EXEEXT) + PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) + am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; + am__vpath_adj = case $$p in \ +-- +2.7.3 + diff --git a/package/pcre/Config.in b/package/pcre/Config.in new file mode 100644 index 00000000..9d3a1433 --- /dev/null +++ b/package/pcre/Config.in @@ -0,0 +1,34 @@ +config BR2_PACKAGE_PCRE + bool "pcre" + help + Perl Compatible Regular Expressions. By default, only the + 8-bits libpcre is built. To get the 16-bits and/or 32-bits + variants libpcre16/libpcre32, use the package sub-options. + + http://www.pcre.org/ + +if BR2_PACKAGE_PCRE + +config BR2_PACKAGE_PCRE_16 + bool "16-bit pcre" + help + This option builds the 16-bits pcre library, i.e 'libpcre16' + +config BR2_PACKAGE_PCRE_32 + bool "32-bit pcre" + help + This option builds the 32-bits pcre library, i.e 'libpcre32' + +config BR2_PACKAGE_PCRE_UTF + bool "UTF-8/16/32 support in pcre" + help + This option builds the pcre library with UTF-8/16/32 support + +config BR2_PACKAGE_PCRE_UCP + bool "Unicode properties support in pcre" + select BR2_PACKAGE_PCRE_UTF + help + This option builds the pcre library with Unicode properties + support (implies UTF-8/16/32 support)' + +endif diff --git a/package/pcre/pcre.hash b/package/pcre/pcre.hash new file mode 100644 index 00000000..6150303e --- /dev/null +++ b/package/pcre/pcre.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 4dae6fdcd2bb0bb6c37b5f97c33c2be954da743985369cddac3546e3218bffb8 pcre-8.45.tar.bz2 +# License files, locally calculated +sha256 51b3dea44f63338b84b9c97b3d793826a8397309068cf9379a423216ab8ea5b2 LICENCE diff --git a/package/pcre/pcre.mk b/package/pcre/pcre.mk new file mode 100644 index 00000000..59750c28 --- /dev/null +++ b/package/pcre/pcre.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# pcre +# +################################################################################ + +PCRE_VERSION = 8.45 +PCRE_SITE = http://downloads.sourceforge.net/project/pcre/pcre/$(PCRE_VERSION) +PCRE_SOURCE = pcre-$(PCRE_VERSION).tar.bz2 +PCRE_LICENSE = BSD-3-Clause +PCRE_LICENSE_FILES = LICENCE +PCRE_CPE_ID_VENDOR = pcre +PCRE_INSTALL_STAGING = YES +PCRE_CONFIG_SCRIPTS = pcre-config + +# They're required for host-libglib2 +HOST_PCRE_CONF_OPTS = --enable-unicode-properties + +ifneq ($(BR2_INSTALL_LIBSTDCPP),y) +# pcre will use the host g++ if a cross version isn't available +PCRE_CONF_OPTS += --disable-cpp +endif + +PCRE_CONF_OPTS += --enable-pcre8 +PCRE_CONF_OPTS += $(if $(BR2_PACKAGE_PCRE_16),--enable-pcre16,--disable-pcre16) +PCRE_CONF_OPTS += $(if $(BR2_PACKAGE_PCRE_32),--enable-pcre32,--disable-pcre32) +PCRE_CONF_OPTS += $(if $(BR2_PACKAGE_PCRE_UTF),--enable-utf,--disable-utf) +PCRE_CONF_OPTS += $(if $(BR2_PACKAGE_PCRE_UCP),--enable-unicode-properties,--disable-unicode-properties) + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/pcre2/Config.in b/package/pcre2/Config.in new file mode 100644 index 00000000..ba4719dd --- /dev/null +++ b/package/pcre2/Config.in @@ -0,0 +1,44 @@ +config BR2_PACKAGE_PCRE2 + bool "pcre2" + help + Perl Compatible Regular Expressions. By default, only the + 8-bits libpcre2 is built. To get the 16-bits and/or 32-bits + variants libpcre2-16/libpcre2-32, use the package + sub-options. + + http://www.pcre.org/ + +if BR2_PACKAGE_PCRE2 + +config BR2_PACKAGE_PCRE2_16 + bool "16-bit pcre2" + help + This option builds the 16-bits pcre2 library, i.e + 'libpcre2-16' + +config BR2_PACKAGE_PCRE2_32 + bool "32-bit pcre2" + help + This option builds the 32-bits pcre2 library, i.e + 'libpcre2-32' + +config BR2_PACKAGE_PCRE2_JIT_ARCH_SUPPORTS + bool + default y if BR2_aarch64 + default y if BR2_arm || BR2_armeb + default y if BR2_i386 || BR2_x86_64 + default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + default y if BR2_powerpc + +config BR2_PACKAGE_PCRE2_JIT + bool "enable JIT support" + depends on BR2_PACKAGE_PCRE2_JIT_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + help + This option enables JIT support + +comment "JIT support needs a toolchain w/ threads" + depends on BR2_PACKAGE_PCRE2_JIT_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS + +endif diff --git a/package/pcre2/pcre2.hash b/package/pcre2/pcre2.hash new file mode 100644 index 00000000..f2e17df7 --- /dev/null +++ b/package/pcre2/pcre2.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature: +# https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.43/pcre2-10.43.tar.bz2.sig +sha256 e2a53984ff0b07dfdb5ae4486bbb9b21cca8e7df2434096cc9bf1b728c350bcb pcre2-10.43.tar.bz2 +# Locally computed +sha256 030087e2e8dd7c1bdd26057d25d4ded8f45bbf01ad458d68665ad04b8b0fbedf LICENCE diff --git a/package/pcre2/pcre2.mk b/package/pcre2/pcre2.mk new file mode 100644 index 00000000..9641f22e --- /dev/null +++ b/package/pcre2/pcre2.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# pcre2 +# +################################################################################ + +PCRE2_VERSION = 10.43 +PCRE2_SITE = https://github.com/PCRE2Project/pcre2/releases/download/pcre2-$(PCRE2_VERSION) +PCRE2_SOURCE = pcre2-$(PCRE2_VERSION).tar.bz2 +PCRE2_LICENSE = BSD-3-Clause +PCRE2_LICENSE_FILES = LICENCE +PCRE2_CPE_ID_VENDOR = pcre +PCRE2_INSTALL_STAGING = YES +PCRE2_CONFIG_SCRIPTS = pcre2-config + +PCRE2_CONF_OPTS += --enable-pcre2-8 +PCRE2_CONF_OPTS += $(if $(BR2_PACKAGE_PCRE2_16),--enable-pcre2-16,--disable-pcre2-16) +PCRE2_CONF_OPTS += $(if $(BR2_PACKAGE_PCRE2_32),--enable-pcre2-32,--disable-pcre2-32) + +ifeq ($(BR2_PACKAGE_PCRE2_JIT),y) +PCRE2_CONF_OPTS += --enable-jit +else +PCRE2_CONF_OPTS += --disable-jit +endif + +# disable fork usage if not available +ifeq ($(BR2_USE_MMU),) +PCRE2_CONF_OPTS += --disable-pcre2grep-callout +endif + +# needed for qt6base +HOST_PCRE2_CONF_OPTS = --enable-pcre2-16 + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/pcsc-lite/Config.in b/package/pcsc-lite/Config.in new file mode 100644 index 00000000..f4ed5ba2 --- /dev/null +++ b/package/pcsc-lite/Config.in @@ -0,0 +1,40 @@ +config BR2_PACKAGE_PCSC_LITE + bool "pcsc-lite" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # _Atomic keyword + help + Middleware to access smart card using SCard API (PC/SC). + + https://muscle.apdu.fr/ + +if BR2_PACKAGE_PCSC_LITE + +config BR2_PACKAGE_PCSC_LITE_FORCE_LIBUSB + bool "use libusb" + depends on !BR2_PACKAGE_HAS_UDEV + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + Select Y if you want to support usb smart card readers. + +comment "libusb support needs a toolchain w/ gcc >= 4.9" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_PCSC_LITE_DEBUGATR + bool "enable ATR debug messages" + help + Enable ATR debug messages from pcscd. + +config BR2_PACKAGE_PCSC_LITE_EMBEDDED + bool "enable embedded mode" + help + Limit RAM and CPU resources by disabling logs. + +endif + +comment "pcsc-lite needs a toolchain w/ threads, dynamic library, gcc >= 4.9" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/pcsc-lite/pcsc-lite.hash b/package/pcsc-lite/pcsc-lite.hash new file mode 100644 index 00000000..806792fa --- /dev/null +++ b/package/pcsc-lite/pcsc-lite.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 85cab61cc744c81e2bc432656863293b8428d0136f079e3b12a84b335b5b35aa pcsc-lite-2.1.0.tar.bz2 +sha256 40d4358bb8dc8d30f5365ae6d999b6f820bbc051b292912482f2e4d0ebd837e1 COPYING +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 GPL-3.0.txt diff --git a/package/pcsc-lite/pcsc-lite.mk b/package/pcsc-lite/pcsc-lite.mk new file mode 100644 index 00000000..8418d6a3 --- /dev/null +++ b/package/pcsc-lite/pcsc-lite.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# pcsc-lite +# +################################################################################ + +PCSC_LITE_VERSION = 2.1.0 +PCSC_LITE_SOURCE = pcsc-lite-$(PCSC_LITE_VERSION).tar.bz2 +PCSC_LITE_SITE = https://pcsclite.apdu.fr/files +PCSC_LITE_INSTALL_STAGING = YES +PCSC_LITE_DEPENDENCIES = host-pkgconf host-flex +PCSC_LITE_LICENSE = BSD-2-Clause (auth), BSD-3-Clause, GPL-3.0+ (spy, tests), ISC (simclist) +PCSC_LITE_LICENSE_FILES = COPYING GPL-3.0.txt +PCSC_LITE_SELINUX_MODULES = pcscd +PCSC_LITE_CONF_OPTS = --disable-strict + +# - libudev and libusb are optional +# - libudev and libusb can't be used together +# - libudev has a priority over libusb + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +PCSC_LITE_CONF_OPTS += --enable-libudev --disable-libusb +PCSC_LITE_DEPENDENCIES += udev +else +ifeq ($(BR2_PACKAGE_LIBUSB),y) +PCSC_LITE_CONF_OPTS += --enable-libusb --disable-libudev +PCSC_LITE_DEPENDENCIES += libusb +else +PCSC_LITE_CONF_OPTS += --disable-libusb --disable-libudev +endif +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +PCSC_LITE_CONF_OPTS += --enable-libsystemd +PCSC_LITE_DEPENDENCIES += systemd +else +PCSC_LITE_CONF_OPTS += --disable-libsystemd +endif + +ifeq ($(BR2_PACKAGE_PCSC_LITE_DEBUGATR),y) +PCSC_LITE_CONF_OPTS += --enable-debugatr +endif + +ifeq ($(BR2_PACKAGE_PCSC_LITE_EMBEDDED),y) +PCSC_LITE_CONF_OPTS += --enable-embedded +endif + +ifeq ($(BR2_PACKAGE_POLKIT),y) +PCSC_LITE_CONF_OPTS += --enable-polkit +PCSC_LITE_DEPENDENCIES += polkit +else +PCSC_LITE_CONF_OPTS += --disable-polkit +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +PCSC_LITE_CONF_ENV += LIBS=-latomic +endif + +$(eval $(autotools-package)) diff --git a/package/pdbg/Config.in b/package/pdbg/Config.in new file mode 100644 index 00000000..a0b3d866 --- /dev/null +++ b/package/pdbg/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PDBG + bool "pdbg" + help + PowerPC FSI Debugger, for low level debugging of a IBM + Power8 and Power9 CPU over FSI. + + pdbg runs on a BMC, which is generally an ARM-powered system + monitoring/controlling a host CPU. It can also run on the + host. + + https://github.com/open-power/pdbg diff --git a/package/pdbg/pdbg.hash b/package/pdbg/pdbg.hash new file mode 100644 index 00000000..f859930d --- /dev/null +++ b/package/pdbg/pdbg.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 7bdbab4e14b8cf50dbf6242955e46e58882c37b1a52671d9e6f3073885629dfa pdbg-3.5.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 COPYING diff --git a/package/pdbg/pdbg.mk b/package/pdbg/pdbg.mk new file mode 100644 index 00000000..871bf953 --- /dev/null +++ b/package/pdbg/pdbg.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# pdbg +# +################################################################################ + +PDBG_VERSION = 3.5 +PDBG_SITE = $(call github,open-power,pdbg,v$(PDBG_VERSION)) +PDBG_LICENSE = Apache-2.0 +PDBG_LICENSE_FILES = COPYING +PDBG_AUTORECONF = YES +PDBG_DEPENDENCIES = host-dtc + +PDBG_MAKE_OPTS = "GIT_SHA1=\"v$(PDBG_VERSION)\"" + +$(eval $(autotools-package)) diff --git a/package/pdmenu/0001-autoconf-makeinfo.in-link-with-INTLLIBS-if-needed.patch b/package/pdmenu/0001-autoconf-makeinfo.in-link-with-INTLLIBS-if-needed.patch new file mode 100644 index 00000000..78f3e576 --- /dev/null +++ b/package/pdmenu/0001-autoconf-makeinfo.in-link-with-INTLLIBS-if-needed.patch @@ -0,0 +1,27 @@ +From 319cc3859044214961164ed1f219f2f21ca965af Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 30 Aug 2017 23:04:37 +0200 +Subject: [PATCH] autoconf/makeinfo.in: link with INTLLIBS if needed + +gettext may be provided by external libraries, as specified in +INTLLIBS, so we must include @INTLLIBS@ in the LIBS variable. + +Signed-off-by: Thomas Petazzoni +--- + autoconf/makeinfo.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/autoconf/makeinfo.in b/autoconf/makeinfo.in +index ee3054a..6d58d77 100644 +--- a/autoconf/makeinfo.in ++++ b/autoconf/makeinfo.in +@@ -13,5 +13,5 @@ DEFINES = -DETCDIR=\"${SYSCONFDIR}/\" -DVER=\"${VER}\" @DEFS@ \ + $(PROFILE) -D__USE_FIXED_PROTOTYPES__ -D_GNU_SOURCE \ + -DLOCALEDIR=\"@datadir@/locale\" + CFLAGS = $(DEFINES) @gcc_cflags@ @CFLAGS@ +-LIBS = @LIBS@ $(EFENCE) ++LIBS = @LIBS@ @INTLLIBS@ $(EFENCE) + INSTALL_PROGRAM = ${INSTALL} +-- +2.13.5 + diff --git a/package/pdmenu/0002-Makefile-autoconf-makeinfo.in-support-build-install-.patch b/package/pdmenu/0002-Makefile-autoconf-makeinfo.in-support-build-install-.patch new file mode 100644 index 00000000..1a22aa6f --- /dev/null +++ b/package/pdmenu/0002-Makefile-autoconf-makeinfo.in-support-build-install-.patch @@ -0,0 +1,76 @@ +From 5368bd0cfd0640f5c0ca766d4fda1b3f71c1b013 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 30 Aug 2017 23:07:26 +0200 +Subject: [PATCH] Makefile, autoconf/makeinfo.in: support build/install without + gettext + +The gettext tool msgfmt may not be available to build the .mo files +from the .po files, so we handle this case by disabling the +build/installation of .po files in such a case. + +Signed-off-by: Thomas Petazzoni +--- + Makefile | 17 ++++++++++++++--- + autoconf/makeinfo.in | 1 + + 2 files changed, 15 insertions(+), 3 deletions(-) + +diff --git a/Makefile b/Makefile +index a708046..3e83ca3 100644 +--- a/Makefile ++++ b/Makefile +@@ -7,11 +7,18 @@ OBJFILES := $(SRCFILES:%.c=%.o) + LANGS = fr ru es + MOS := $(addprefix po/, $(addsuffix .mo, $(LANGS))) + LOCALEDIR = $(INSTALL_PREFIX)/usr/share/locale +- +-all: pdmenu $(POTFILE) $(MOS) ++TARGETS = pdmenu ++INSTALL_TARGETS = install-pdmenu + + include makeinfo + ++ifneq ($(MSGFMT),) ++TARGETS += $(POTFILE) $(MOS) ++INSTALL_TARGETS += install-pos ++endif ++ ++all: $(TARGETS) ++ + pdmenu: .dep $(OBJFILES) + ${CC} -o pdmenu $(OBJFILES) $(CFLAGS) $(LIBS) + +@@ -40,7 +47,9 @@ clean: + $(MAKE) $(POTFILE) # make sure translators' input is ready + rm -f $(OBJFILES) pdmenu $(MOS) + +-install: all ++install: $(INSTALL_TARGETS) ++ ++install-pdmenu: + $(INSTALL) -d $(INSTALL_PREFIX)/$(BINDIR) \ + $(INSTALL_PREFIX)/$(MANDIR)/man1 \ + $(INSTALL_PREFIX)/$(MANDIR)/man5 \ +@@ -56,6 +65,8 @@ install: all + $(INSTALL) examples/pdmenurc $(INSTALL_PREFIX)/$(SYSCONFDIR)/pdmenurc -m 0644 + $(INSTALL) examples/showdir.pl $(INSTALL_PREFIX)/$(DATADIR)/pdmenu + cd $(INSTALL_PREFIX)/$(DATADIR)/pdmenu && $(LN_S) -f showdir.pl editdir.pl ++ ++install-pos: + for lang in $(LANGS); do \ + [ ! -d $(LOCALEDIR)/$$lang/LC_MESSAGES/ ] && mkdir -p $(LOCALEDIR)/$$lang/LC_MESSAGES/; \ + install -m 644 po/$$lang.mo $(LOCALEDIR)/$$lang/LC_MESSAGES/pdmenu.mo; \ +diff --git a/autoconf/makeinfo.in b/autoconf/makeinfo.in +index 6d58d77..069daf8 100644 +--- a/autoconf/makeinfo.in ++++ b/autoconf/makeinfo.in +@@ -8,6 +8,7 @@ DATADIR = @datadir@ + CC = @CC@ + INSTALL = @INSTALL@ + LN_S = @LN_S@ ++MSGFMT = @MSGFMT@ + VER = @VER@ + DEFINES = -DETCDIR=\"${SYSCONFDIR}/\" -DVER=\"${VER}\" @DEFS@ \ + $(PROFILE) -D__USE_FIXED_PROTOTYPES__ -D_GNU_SOURCE \ +-- +2.13.5 + diff --git a/package/pdmenu/Config.in b/package/pdmenu/Config.in new file mode 100644 index 00000000..8f35f614 --- /dev/null +++ b/package/pdmenu/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PDMENU + bool "pdmenu" + depends on BR2_USE_MMU # slang + select BR2_PACKAGE_SLANG + help + Pdmenu is a full screen menuing system for Unix. It is + designed to be easy to use, and is suitable as a login shell + for inexperienced users, or it can just be ran at the + command line as a handy menu. + + Pdmenu features color support and GPM mouse support at the + Linux console. It was developed on Linux, and has now been + compiled on many other unixes without problems. + + https://joeyh.name/code/pdmenu/ diff --git a/package/pdmenu/pdmenu.hash b/package/pdmenu/pdmenu.hash new file mode 100644 index 00000000..00c2569a --- /dev/null +++ b/package/pdmenu/pdmenu.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 dedd2a4a5719278b5e49041161990c2f20b5909818837542aaca01819f2c14eb pdmenu-1.3.6.tar.gz + +# License file hash, locally calculated +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 doc/COPYING diff --git a/package/pdmenu/pdmenu.mk b/package/pdmenu/pdmenu.mk new file mode 100644 index 00000000..2691a67e --- /dev/null +++ b/package/pdmenu/pdmenu.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# pdmenu +# +################################################################################ + +PDMENU_VERSION = 1.3.6 +PDMENU_SITE = https://git.joeyh.name/index.cgi/pdmenu.git/snapshot +PDMENU_LICENSE = GPL-2.0 +PDMENU_LICENSE_FILES = doc/COPYING +PDMENU_DEPENDENCIES = slang $(TARGET_NLS_DEPENDENCIES) +PDMENU_INSTALL_TARGET_OPTS = INSTALL_PREFIX=$(TARGET_DIR) install + +$(eval $(autotools-package)) diff --git a/package/perftest/Config.in b/package/perftest/Config.in new file mode 100644 index 00000000..6d291b0f --- /dev/null +++ b/package/perftest/Config.in @@ -0,0 +1,42 @@ +config BR2_PACKAGE_PERFTEST_ARCH_SUPPORTS + bool + # Accurate cycle measurement in perftest is implemented for a + # limited set of architectures, see: + # https://github.com/linux-rdma/perftest/blob/v4.5-0.20/src/get_clock.h + # Note: the package has also a fallback to use "asm/timex.h" + # from the Kernel, in + # "$(LINUX_DIR)/arch/$(KERNEL_ARCH)/include". It is not + # reflected here as this path is not well tested. + default y if BR2_i386 || BR2_x86_64 + default y if BR2_arm && !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV5 && !BR2_ARM_CPU_ARMV6 + default y if BR2_aarch64 + default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + default y if BR2_s390x + default y if BR2_sparc || BR2_sparc64 + default y if BR2_riscv + depends on BR2_USE_MMU # rdma-core + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # rdma-core + +config BR2_PACKAGE_PERFTEST + bool "perftest" + depends on BR2_PACKAGE_PERFTEST_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # rdma-core + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # rdma-core + depends on !BR2_STATIC_LIBS # rdma-core + # musl does not define sysconf(_SC_LEVEL1_DCACHE_LINESIZE) + depends on !BR2_TOOLCHAIN_USES_MUSL + select BR2_PACKAGE_PCIUTILS + select BR2_PACKAGE_RDMA_CORE + help + Open Fabrics Performance Tests. + + This is a collection of tests written over uverbs intended + for use as a performance micro-benchmark. The tests may be + used for HW or SW tuning as well as for functional testing. + + https://github.com/linux-rdma/perftest + +comment "perftest needs a glibc or uClibc toolchain w/ threads, dynamic library" + depends on BR2_PACKAGE_PERFTEST_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \ + || BR2_TOOLCHAIN_USES_MUSL diff --git a/package/perftest/perftest.hash b/package/perftest/perftest.hash new file mode 100644 index 00000000..f40d1d1e --- /dev/null +++ b/package/perftest/perftest.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 d398cb7a364735485b5ae033b242d7cf0bedcdb5f4d512e54b18c9a3e7a98b87 perftest-24.04.0-0.41.tar.gz +sha256 763adb7d5094f2127b026adea8701f042d28d4b1f6fb8b6e828989227a9cf7f5 COPYING diff --git a/package/perftest/perftest.mk b/package/perftest/perftest.mk new file mode 100644 index 00000000..36cb7752 --- /dev/null +++ b/package/perftest/perftest.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perftest +# +################################################################################ + +PERFTEST_VERSION = 24.04.0-0.41 +PERFTEST_SITE = $(call github,linux-rdma,perftest,$(PERFTEST_VERSION)) +PERFTEST_LICENSE = GPL-2.0 or BSD-2-Clause +PERFTEST_LICENSE_FILES = COPYING +PERFTEST_DEPENDENCIES = pciutils rdma-core +# Fetched from Github, with no configure script +PERFTEST_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/perl-apache-logformat-compiler/Config.in b/package/perl-apache-logformat-compiler/Config.in new file mode 100644 index 00000000..d78104f1 --- /dev/null +++ b/package/perl-apache-logformat-compiler/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_APACHE_LOGFORMAT_COMPILER + bool "perl-apache-logformat-compiler" + select BR2_PACKAGE_PERL_POSIX_STRFTIME_COMPILER # runtime + help + Compile a log format string to perl-code. + + https://github.com/kazeburo/Apache-LogFormat-Compiler diff --git a/package/perl-apache-logformat-compiler/perl-apache-logformat-compiler.hash b/package/perl-apache-logformat-compiler/perl-apache-logformat-compiler.hash new file mode 100644 index 00000000..429302bf --- /dev/null +++ b/package/perl-apache-logformat-compiler/perl-apache-logformat-compiler.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 a0cdfcd875cb2ee4dc9a2c24381eb55b Apache-LogFormat-Compiler-0.36.tar.gz +sha256 94509503ee74ea820183d070c11630ee5bc0fd8c12cb74fae953ed62e4a1ac17 Apache-LogFormat-Compiler-0.36.tar.gz + +# computed by scancpan +sha256 ab941cfc4794afa2113795b167177d1b25cbc77ebadd016e5727effc2cadd96b LICENSE diff --git a/package/perl-apache-logformat-compiler/perl-apache-logformat-compiler.mk b/package/perl-apache-logformat-compiler/perl-apache-logformat-compiler.mk new file mode 100644 index 00000000..82ceb797 --- /dev/null +++ b/package/perl-apache-logformat-compiler/perl-apache-logformat-compiler.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perl-apache-logformat-compiler +# +################################################################################ + +PERL_APACHE_LOGFORMAT_COMPILER_VERSION = 0.36 +PERL_APACHE_LOGFORMAT_COMPILER_SOURCE = Apache-LogFormat-Compiler-$(PERL_APACHE_LOGFORMAT_COMPILER_VERSION).tar.gz +PERL_APACHE_LOGFORMAT_COMPILER_SITE = $(BR2_CPAN_MIRROR)/authors/id/K/KA/KAZEBURO +PERL_APACHE_LOGFORMAT_COMPILER_DEPENDENCIES = host-perl-module-build-tiny +PERL_APACHE_LOGFORMAT_COMPILER_LICENSE = Artistic or GPL-1.0+ +PERL_APACHE_LOGFORMAT_COMPILER_LICENSE_FILES = LICENSE +PERL_APACHE_LOGFORMAT_COMPILER_DISTNAME = Apache-LogFormat-Compiler + +$(eval $(perl-package)) diff --git a/package/perl-appconfig/Config.in b/package/perl-appconfig/Config.in new file mode 100644 index 00000000..f89bf06c --- /dev/null +++ b/package/perl-appconfig/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PERL_APPCONFIG + bool "perl-appconfig" + help + AppConfig is a bundle of Perl5 modules for reading + configuration files and parsing command line + arguments. + + https://metacpan.org/release/AppConfig diff --git a/package/perl-appconfig/perl-appconfig.hash b/package/perl-appconfig/perl-appconfig.hash new file mode 100644 index 00000000..0f0cf2f2 --- /dev/null +++ b/package/perl-appconfig/perl-appconfig.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 7747d9241561ed5567d5e134b8648707 AppConfig-1.71.tar.gz +sha256 1177027025ecb09ee64d9f9f255615c04db5e14f7536c344af632032eb887b0f AppConfig-1.71.tar.gz + +# computed by scancpan +sha256 0b22dd532e4123a511d14989c4169ed56b7316cf844c29c7897a1638a4616868 LICENSE diff --git a/package/perl-appconfig/perl-appconfig.mk b/package/perl-appconfig/perl-appconfig.mk new file mode 100644 index 00000000..8f9dd520 --- /dev/null +++ b/package/perl-appconfig/perl-appconfig.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-appconfig +# +################################################################################ + +PERL_APPCONFIG_VERSION = 1.71 +PERL_APPCONFIG_SOURCE = AppConfig-$(PERL_APPCONFIG_VERSION).tar.gz +PERL_APPCONFIG_SITE = $(BR2_CPAN_MIRROR)/authors/id/N/NE/NEILB +PERL_APPCONFIG_LICENSE = Artistic or GPL-1.0+ +PERL_APPCONFIG_LICENSE_FILES = LICENSE +PERL_APPCONFIG_DISTNAME = AppConfig + +$(eval $(perl-package)) diff --git a/package/perl-astro-suntime/Config.in b/package/perl-astro-suntime/Config.in new file mode 100644 index 00000000..ee4f3e32 --- /dev/null +++ b/package/perl-astro-suntime/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_ASTRO_SUNTIME + bool "perl-astro-suntime" + help + A functional module for calculating sunrise/sunset times. + + https://metacpan.org/release/Astro-SunTime diff --git a/package/perl-astro-suntime/perl-astro-suntime.hash b/package/perl-astro-suntime/perl-astro-suntime.hash new file mode 100644 index 00000000..05a7af23 --- /dev/null +++ b/package/perl-astro-suntime/perl-astro-suntime.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 42cb8c94de8a111ed652196925c22a45 Astro-SunTime-0.06.tar.gz +sha256 b4a44fddfc055cc42ee67bfd8939354793da7512ea04f30578d42dc6a701112a Astro-SunTime-0.06.tar.gz + +# computed by scancpan +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE diff --git a/package/perl-astro-suntime/perl-astro-suntime.mk b/package/perl-astro-suntime/perl-astro-suntime.mk new file mode 100644 index 00000000..e5cad6a4 --- /dev/null +++ b/package/perl-astro-suntime/perl-astro-suntime.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perl-astro-suntime +# +################################################################################ + +PERL_ASTRO_SUNTIME_VERSION = 0.06 +PERL_ASTRO_SUNTIME_SOURCE = Astro-SunTime-$(PERL_ASTRO_SUNTIME_VERSION).tar.gz +PERL_ASTRO_SUNTIME_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RO/ROBF +PERL_ASTRO_SUNTIME_DEPENDENCIES = host-perl-module-build +PERL_ASTRO_SUNTIME_LICENSE = GPL-3.0 +PERL_ASTRO_SUNTIME_LICENSE_FILES = LICENSE +PERL_ASTRO_SUNTIME_DISTNAME = Astro-SunTime + +$(eval $(perl-package)) diff --git a/package/perl-class-inspector/Config.in b/package/perl-class-inspector/Config.in new file mode 100644 index 00000000..46b93682 --- /dev/null +++ b/package/perl-class-inspector/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_CLASS_INSPECTOR + bool "perl-class-inspector" + help + Get information about a class and its structure. + + https://metacpan.org/pod/Class::Inspector diff --git a/package/perl-class-inspector/perl-class-inspector.hash b/package/perl-class-inspector/perl-class-inspector.hash new file mode 100644 index 00000000..3ec20d20 --- /dev/null +++ b/package/perl-class-inspector/perl-class-inspector.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 084c3aeec023639d21ecbaf7d4460b21 Class-Inspector-1.36.tar.gz +sha256 cc295d23a472687c24489d58226ead23b9fdc2588e522f0b5f0747741700694e Class-Inspector-1.36.tar.gz + +# computed by scancpan +sha256 401fe9c98bdb5707df71447fb93141f8cb2d85337d45505f5ae50a776a3f6666 LICENSE diff --git a/package/perl-class-inspector/perl-class-inspector.mk b/package/perl-class-inspector/perl-class-inspector.mk new file mode 100644 index 00000000..fdb33236 --- /dev/null +++ b/package/perl-class-inspector/perl-class-inspector.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-class-inspector +# +################################################################################ + +PERL_CLASS_INSPECTOR_VERSION = 1.36 +PERL_CLASS_INSPECTOR_SOURCE = Class-Inspector-$(PERL_CLASS_INSPECTOR_VERSION).tar.gz +PERL_CLASS_INSPECTOR_SITE = $(BR2_CPAN_MIRROR)/authors/id/P/PL/PLICEASE +PERL_CLASS_INSPECTOR_LICENSE = Artistic or GPL-1.0+ +PERL_CLASS_INSPECTOR_LICENSE_FILES = LICENSE +PERL_CLASS_INSPECTOR_DISTNAME = Class-Inspector + +$(eval $(perl-package)) diff --git a/package/perl-class-load/Config.in b/package/perl-class-load/Config.in new file mode 100644 index 00000000..fe956b17 --- /dev/null +++ b/package/perl-class-load/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PERL_CLASS_LOAD + bool "perl-class-load" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_PERL_DATA_OPTLIST # runtime + select BR2_PACKAGE_PERL_MODULE_IMPLEMENTATION # runtime + select BR2_PACKAGE_PERL_MODULE_RUNTIME # runtime + select BR2_PACKAGE_PERL_PACKAGE_STASH # runtime + select BR2_PACKAGE_PERL_TRY_TINY # runtime + help + A working (require "Class::Name") and more. + + https://github.com/moose/Class-Load + +comment "perl-class-load needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-class-load/perl-class-load.hash b/package/perl-class-load/perl-class-load.hash new file mode 100644 index 00000000..88dc5c84 --- /dev/null +++ b/package/perl-class-load/perl-class-load.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 e4c831c08df592ce8dfee0c7cfc12fd7 Class-Load-0.25.tar.gz +sha256 2a48fa779b5297e56156380e8b32637c6c58decb4f4a7f3c7350523e11275f8f Class-Load-0.25.tar.gz + +# computed by scancpan +sha256 dc030e63f20035291b90d09c2c40f296224e85878caf829ea981fc2f10910f9d LICENSE diff --git a/package/perl-class-load/perl-class-load.mk b/package/perl-class-load/perl-class-load.mk new file mode 100644 index 00000000..c18e53d1 --- /dev/null +++ b/package/perl-class-load/perl-class-load.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-class-load +# +################################################################################ + +PERL_CLASS_LOAD_VERSION = 0.25 +PERL_CLASS_LOAD_SOURCE = Class-Load-$(PERL_CLASS_LOAD_VERSION).tar.gz +PERL_CLASS_LOAD_SITE = $(BR2_CPAN_MIRROR)/authors/id/E/ET/ETHER +PERL_CLASS_LOAD_LICENSE = Artistic or GPL-1.0+ +PERL_CLASS_LOAD_LICENSE_FILES = LICENSE +PERL_CLASS_LOAD_DISTNAME = Class-Load + +$(eval $(perl-package)) diff --git a/package/perl-class-method-modifiers/Config.in b/package/perl-class-method-modifiers/Config.in new file mode 100644 index 00000000..7acdb38b --- /dev/null +++ b/package/perl-class-method-modifiers/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_CLASS_METHOD_MODIFIERS + bool "perl-class-method-modifiers" + help + Provides Moose-like method modifiers. + + https://github.com/moose/Class-Method-Modifiers diff --git a/package/perl-class-method-modifiers/perl-class-method-modifiers.hash b/package/perl-class-method-modifiers/perl-class-method-modifiers.hash new file mode 100644 index 00000000..e3e88140 --- /dev/null +++ b/package/perl-class-method-modifiers/perl-class-method-modifiers.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 1aea89d0f23c3537580cae549b5c5864 Class-Method-Modifiers-2.15.tar.gz +sha256 65cd85bfe475d066e9186f7a8cc636070985b30b0ebb1cde8681cf062c2e15fc Class-Method-Modifiers-2.15.tar.gz + +# computed by scancpan +sha256 3a4d15d78daa7fbb8b9f90da1b8cb60a6cd5275c6a5fdb0fca5db2e74b522dee LICENSE diff --git a/package/perl-class-method-modifiers/perl-class-method-modifiers.mk b/package/perl-class-method-modifiers/perl-class-method-modifiers.mk new file mode 100644 index 00000000..d4a7f11b --- /dev/null +++ b/package/perl-class-method-modifiers/perl-class-method-modifiers.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-class-method-modifiers +# +################################################################################ + +PERL_CLASS_METHOD_MODIFIERS_VERSION = 2.15 +PERL_CLASS_METHOD_MODIFIERS_SOURCE = Class-Method-Modifiers-$(PERL_CLASS_METHOD_MODIFIERS_VERSION).tar.gz +PERL_CLASS_METHOD_MODIFIERS_SITE = $(BR2_CPAN_MIRROR)/authors/id/E/ET/ETHER +PERL_CLASS_METHOD_MODIFIERS_LICENSE = Artistic or GPL-1.0+ +PERL_CLASS_METHOD_MODIFIERS_LICENSE_FILES = LICENSE +PERL_CLASS_METHOD_MODIFIERS_DISTNAME = Class-Method-Modifiers + +$(eval $(perl-package)) diff --git a/package/perl-class-std-fast/Config.in b/package/perl-class-std-fast/Config.in new file mode 100644 index 00000000..6eabc0bb --- /dev/null +++ b/package/perl-class-std-fast/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_CLASS_STD_FAST + bool "perl-class-std-fast" + select BR2_PACKAGE_PERL_CLASS_STD # runtime + help + faster but less secure than Class::Std. + + https://metacpan.org/release/Class-Std-Fast diff --git a/package/perl-class-std-fast/perl-class-std-fast.hash b/package/perl-class-std-fast/perl-class-std-fast.hash new file mode 100644 index 00000000..36d6e21c --- /dev/null +++ b/package/perl-class-std-fast/perl-class-std-fast.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 d06d084cb84f295b0aabf2eee78ef746 Class-Std-Fast-v0.0.8.tar.gz +sha256 1bd43763c6a373183097a30e787f5d6713b0db27511c52d533266b59d2cfa780 Class-Std-Fast-v0.0.8.tar.gz + +# computed by scancpan +sha256 aa1ab90c498aee078076e9a1f83e5f14bbfd841509582795ab5a9571428c0c38 README diff --git a/package/perl-class-std-fast/perl-class-std-fast.mk b/package/perl-class-std-fast/perl-class-std-fast.mk new file mode 100644 index 00000000..b5d32398 --- /dev/null +++ b/package/perl-class-std-fast/perl-class-std-fast.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perl-class-std-fast +# +################################################################################ + +PERL_CLASS_STD_FAST_VERSION = 0.0.8 +PERL_CLASS_STD_FAST_SOURCE = Class-Std-Fast-v$(PERL_CLASS_STD_FAST_VERSION).tar.gz +PERL_CLASS_STD_FAST_SITE = $(BR2_CPAN_MIRROR)/authors/id/A/AC/ACID +PERL_CLASS_STD_FAST_DEPENDENCIES = host-perl-module-build +PERL_CLASS_STD_FAST_LICENSE = Artistic or GPL-1.0+ +PERL_CLASS_STD_FAST_LICENSE_FILES = README +PERL_CLASS_STD_FAST_DISTNAME = Class-Std-Fast + +$(eval $(perl-package)) diff --git a/package/perl-class-std/Config.in b/package/perl-class-std/Config.in new file mode 100644 index 00000000..332cdf27 --- /dev/null +++ b/package/perl-class-std/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_CLASS_STD + bool "perl-class-std" + help + Support for creating standard "inside-out" classes. + + https://metacpan.org/release/Class-Std diff --git a/package/perl-class-std/perl-class-std.hash b/package/perl-class-std/perl-class-std.hash new file mode 100644 index 00000000..eaa8705c --- /dev/null +++ b/package/perl-class-std/perl-class-std.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 82bcc56d9769edce671b0bd0e183ec3a Class-Std-0.013.tar.gz +sha256 bcd6d82f6c8af0fe069fced7dd165a4795b0b6e92351c7d4e5a1ab9a14fc35c6 Class-Std-0.013.tar.gz + +# computed by scancpan +sha256 b8175bf3750dc54096bf1506c681b4f13262e5b82e40244e9a77730c6b72e4d6 README diff --git a/package/perl-class-std/perl-class-std.mk b/package/perl-class-std/perl-class-std.mk new file mode 100644 index 00000000..493a89f2 --- /dev/null +++ b/package/perl-class-std/perl-class-std.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perl-class-std +# +################################################################################ + +PERL_CLASS_STD_VERSION = 0.013 +PERL_CLASS_STD_SOURCE = Class-Std-$(PERL_CLASS_STD_VERSION).tar.gz +PERL_CLASS_STD_SITE = $(BR2_CPAN_MIRROR)/authors/id/C/CH/CHORNY +PERL_CLASS_STD_DEPENDENCIES = host-perl-module-build +PERL_CLASS_STD_LICENSE = Artistic or GPL-1.0+ +PERL_CLASS_STD_LICENSE_FILES = README +PERL_CLASS_STD_DISTNAME = Class-Std + +$(eval $(perl-package)) diff --git a/package/perl-clone/Config.in b/package/perl-clone/Config.in new file mode 100644 index 00000000..78f13dfe --- /dev/null +++ b/package/perl-clone/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PERL_CLONE + bool "perl-clone" + depends on !BR2_STATIC_LIBS + help + recursively copy Perl datatypes. + + https://metacpan.org/release/Clone + +comment "perl-clone needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-clone/perl-clone.hash b/package/perl-clone/perl-clone.hash new file mode 100644 index 00000000..7b69b97d --- /dev/null +++ b/package/perl-clone/perl-clone.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 cafa8984a2c2e005e54b27dd1e3f0afe Clone-0.46.tar.gz +sha256 aadeed5e4c8bd6bbdf68c0dd0066cb513e16ab9e5b4382dc4a0aafd55890697b Clone-0.46.tar.gz + +# computed by scancpan +sha256 40aa7eb133e97b075024380640528760a54aefc344781741ed02539a375db5ac README.md diff --git a/package/perl-clone/perl-clone.mk b/package/perl-clone/perl-clone.mk new file mode 100644 index 00000000..9e04329e --- /dev/null +++ b/package/perl-clone/perl-clone.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-clone +# +################################################################################ + +PERL_CLONE_VERSION = 0.46 +PERL_CLONE_SOURCE = Clone-$(PERL_CLONE_VERSION).tar.gz +PERL_CLONE_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GA/GARU +PERL_CLONE_LICENSE = Artistic or GPL-1.0+ +PERL_CLONE_LICENSE_FILES = README.md +PERL_CLONE_DISTNAME = Clone + +$(eval $(perl-package)) diff --git a/package/perl-convert-asn1/Config.in b/package/perl-convert-asn1/Config.in new file mode 100644 index 00000000..3fe47c32 --- /dev/null +++ b/package/perl-convert-asn1/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_CONVERT_ASN1 + bool "perl-convert-asn1" + help + Convert between perl data structures and ASN.1 encoded + packets. + + https://metacpan.org/release/Convert-ASN1 diff --git a/package/perl-convert-asn1/perl-convert-asn1.hash b/package/perl-convert-asn1/perl-convert-asn1.hash new file mode 100644 index 00000000..2d1b1faa --- /dev/null +++ b/package/perl-convert-asn1/perl-convert-asn1.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 cca63088fdd5c3665a2119ee29133f6a Convert-ASN1-0.34.tar.gz +sha256 a628d7c9d390568fb76359975fa03f626ce57f10dc17980e8e3587d7713e4ee7 Convert-ASN1-0.34.tar.gz + +# computed by scancpan +sha256 aa8ae28898a3e164ed5273c3e4fd4bd45b42f7958f282318df06773340e2c9d4 LICENSE diff --git a/package/perl-convert-asn1/perl-convert-asn1.mk b/package/perl-convert-asn1/perl-convert-asn1.mk new file mode 100644 index 00000000..07f9b1d1 --- /dev/null +++ b/package/perl-convert-asn1/perl-convert-asn1.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-convert-asn1 +# +################################################################################ + +PERL_CONVERT_ASN1_VERSION = 0.34 +PERL_CONVERT_ASN1_SOURCE = Convert-ASN1-$(PERL_CONVERT_ASN1_VERSION).tar.gz +PERL_CONVERT_ASN1_SITE = $(BR2_CPAN_MIRROR)/authors/id/T/TI/TIMLEGGE +PERL_CONVERT_ASN1_LICENSE = Artistic-1.0-Perl or GPL-1.0+ +PERL_CONVERT_ASN1_LICENSE_FILES = LICENSE +PERL_CONVERT_ASN1_DISTNAME = Convert-ASN1 + +$(eval $(perl-package)) diff --git a/package/perl-cookie-baker/Config.in b/package/perl-cookie-baker/Config.in new file mode 100644 index 00000000..024f0ade --- /dev/null +++ b/package/perl-cookie-baker/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_COOKIE_BAKER + bool "perl-cookie-baker" + select BR2_PACKAGE_PERL_URI # runtime + help + Cookie string generator / parser. + + https://github.com/kazeburo/Cookie-Baker diff --git a/package/perl-cookie-baker/perl-cookie-baker.hash b/package/perl-cookie-baker/perl-cookie-baker.hash new file mode 100644 index 00000000..34bb4b14 --- /dev/null +++ b/package/perl-cookie-baker/perl-cookie-baker.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 7ab63698d2f24a8cfe31a7ea270e9d2d Cookie-Baker-0.12.tar.gz +sha256 9b04df5d47dcd45ac4299626a10ec990fb40c94ee5a6300c3a88bdfb3575ec29 Cookie-Baker-0.12.tar.gz + +# computed by scancpan +sha256 b4ce94671fa219074d4e91e2268652d6bf9764cebcc7a5e27bfc14897745ca4c LICENSE diff --git a/package/perl-cookie-baker/perl-cookie-baker.mk b/package/perl-cookie-baker/perl-cookie-baker.mk new file mode 100644 index 00000000..add5fcd0 --- /dev/null +++ b/package/perl-cookie-baker/perl-cookie-baker.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perl-cookie-baker +# +################################################################################ + +PERL_COOKIE_BAKER_VERSION = 0.12 +PERL_COOKIE_BAKER_SOURCE = Cookie-Baker-$(PERL_COOKIE_BAKER_VERSION).tar.gz +PERL_COOKIE_BAKER_SITE = $(BR2_CPAN_MIRROR)/authors/id/K/KA/KAZEBURO +PERL_COOKIE_BAKER_DEPENDENCIES = host-perl-module-build-tiny +PERL_COOKIE_BAKER_LICENSE = Artistic or GPL-1.0+ +PERL_COOKIE_BAKER_LICENSE_FILES = LICENSE +PERL_COOKIE_BAKER_DISTNAME = Cookie-Baker + +$(eval $(perl-package)) diff --git a/package/perl-crypt-blowfish/Config.in b/package/perl-crypt-blowfish/Config.in new file mode 100644 index 00000000..1a51a16f --- /dev/null +++ b/package/perl-crypt-blowfish/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PERL_CRYPT_BLOWFISH + bool "perl-crypt-blowfish" + depends on !BR2_STATIC_LIBS + help + Perl Blowfish encryption module. + + https://metacpan.org/release/Crypt-Blowfish + +comment "perl-crypt-blowfish needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-crypt-blowfish/perl-crypt-blowfish.hash b/package/perl-crypt-blowfish/perl-crypt-blowfish.hash new file mode 100644 index 00000000..6199037a --- /dev/null +++ b/package/perl-crypt-blowfish/perl-crypt-blowfish.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 792b43cd4e49d2c2cf4a9f6990ff7d1b Crypt-Blowfish-2.14.tar.gz +sha256 46b3431ffb6bf5b9cb359f79565d48407e652ad2b04fdf5ca62a69e7197a67b1 Crypt-Blowfish-2.14.tar.gz + +# computed by scancpan +sha256 d61437443e6912d03677874c7baef242f28119c2c5d8b92b0f3f3660200f98d4 COPYRIGHT diff --git a/package/perl-crypt-blowfish/perl-crypt-blowfish.mk b/package/perl-crypt-blowfish/perl-crypt-blowfish.mk new file mode 100644 index 00000000..a8f274b6 --- /dev/null +++ b/package/perl-crypt-blowfish/perl-crypt-blowfish.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-crypt-blowfish +# +################################################################################ + +PERL_CRYPT_BLOWFISH_VERSION = 2.14 +PERL_CRYPT_BLOWFISH_SOURCE = Crypt-Blowfish-$(PERL_CRYPT_BLOWFISH_VERSION).tar.gz +PERL_CRYPT_BLOWFISH_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DP/DPARIS +PERL_CRYPT_BLOWFISH_LICENSE = BSD-4-Clause-like +PERL_CRYPT_BLOWFISH_LICENSE_FILES = COPYRIGHT +PERL_CRYPT_BLOWFISH_DISTNAME = Crypt-Blowfish + +$(eval $(perl-package)) diff --git a/package/perl-crypt-cbc/Config.in b/package/perl-crypt-cbc/Config.in new file mode 100644 index 00000000..5cd9c69e --- /dev/null +++ b/package/perl-crypt-cbc/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_CRYPT_CBC + bool "perl-crypt-cbc" + help + Encrypt Data with Cipher Block Chaining Mode. + + https://metacpan.org/release/Crypt-CBC diff --git a/package/perl-crypt-cbc/perl-crypt-cbc.hash b/package/perl-crypt-cbc/perl-crypt-cbc.hash new file mode 100644 index 00000000..281db4cb --- /dev/null +++ b/package/perl-crypt-cbc/perl-crypt-cbc.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 3db5117d60df67e3b400fe367e716be0 Crypt-CBC-2.33.tar.gz +sha256 6a70de21b6cc7f2b100067e8e188db966e9a8001b5db6fa976e7cb5b294ae645 Crypt-CBC-2.33.tar.gz + +# locally computed +sha256 9548d0beb746167270df647aa97a3e47b957adb4ec103c2cfb8f54b0005f99c7 CBC.pm diff --git a/package/perl-crypt-cbc/perl-crypt-cbc.mk b/package/perl-crypt-cbc/perl-crypt-cbc.mk new file mode 100644 index 00000000..c00ec37e --- /dev/null +++ b/package/perl-crypt-cbc/perl-crypt-cbc.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-crypt-cbc +# +################################################################################ + +PERL_CRYPT_CBC_VERSION = 2.33 +PERL_CRYPT_CBC_SOURCE = Crypt-CBC-$(PERL_CRYPT_CBC_VERSION).tar.gz +PERL_CRYPT_CBC_SITE = $(BR2_CPAN_MIRROR)/authors/id/L/LD/LDS +PERL_CRYPT_CBC_LICENSE = Artistic +PERL_CRYPT_CBC_LICENSE_FILES = CBC.pm +PERL_CRYPT_CBC_DISTNAME = Crypt-CBC + +$(eval $(perl-package)) diff --git a/package/perl-crypt-openssl-aes/Config.in b/package/perl-crypt-openssl-aes/Config.in new file mode 100644 index 00000000..ab408d0a --- /dev/null +++ b/package/perl-crypt-openssl-aes/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PERL_CRYPT_OPENSSL_AES + bool "perl-crypt-openssl-aes" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_OPENSSL + help + A Perl wrapper around OpenSSL's AES library. + + https://metacpan.org/release/Crypt-OpenSSL-AES + +comment "perl-crypt-openssl-aes needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-crypt-openssl-aes/perl-crypt-openssl-aes.hash b/package/perl-crypt-openssl-aes/perl-crypt-openssl-aes.hash new file mode 100644 index 00000000..16602fb9 --- /dev/null +++ b/package/perl-crypt-openssl-aes/perl-crypt-openssl-aes.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 269db65cbf580c3174471a2cbc9a9d95 Crypt-OpenSSL-AES-0.02.tar.gz +sha256 b66fab514edf97fc32f58da257582704a210c2b35e297d5c31b7fa2ffd08e908 Crypt-OpenSSL-AES-0.02.tar.gz + +# computed by scancpan +sha256 a60b8c187cc5d90f7a43adc6be3c127abaa4c739e1e7fdcff16be358533d037f README diff --git a/package/perl-crypt-openssl-aes/perl-crypt-openssl-aes.mk b/package/perl-crypt-openssl-aes/perl-crypt-openssl-aes.mk new file mode 100644 index 00000000..c05f3a9c --- /dev/null +++ b/package/perl-crypt-openssl-aes/perl-crypt-openssl-aes.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perl-crypt-openssl-aes +# +################################################################################ + +PERL_CRYPT_OPENSSL_AES_VERSION = 0.02 +PERL_CRYPT_OPENSSL_AES_SOURCE = Crypt-OpenSSL-AES-$(PERL_CRYPT_OPENSSL_AES_VERSION).tar.gz +PERL_CRYPT_OPENSSL_AES_SITE = $(BR2_CPAN_MIRROR)/authors/id/T/TT/TTAR +PERL_CRYPT_OPENSSL_AES_LICENSE = Artistic or GPL-1.0+ +PERL_CRYPT_OPENSSL_AES_LICENSE_FILES = README +PERL_CRYPT_OPENSSL_AES_DISTNAME = Crypt-OpenSSL-AES +PERL_CRYPT_OPENSSL_AES_DEPENDENCIES = openssl + +$(eval $(perl-package)) diff --git a/package/perl-crypt-openssl-guess/perl-crypt-openssl-guess.hash b/package/perl-crypt-openssl-guess/perl-crypt-openssl-guess.hash new file mode 100644 index 00000000..b4795ed3 --- /dev/null +++ b/package/perl-crypt-openssl-guess/perl-crypt-openssl-guess.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 e07f470dd25023730cf8536e0cefbabd Crypt-OpenSSL-Guess-0.15.tar.gz +sha256 1c5033381819fdb4c9087dd291b90ec70e7810d31d57eade9b388eccfd70386d Crypt-OpenSSL-Guess-0.15.tar.gz + +# computed by scancpan +sha256 5c739f181ce7aa31d739277996ff230067dad39332e5597c0dffd36e5d784072 LICENSE diff --git a/package/perl-crypt-openssl-guess/perl-crypt-openssl-guess.mk b/package/perl-crypt-openssl-guess/perl-crypt-openssl-guess.mk new file mode 100644 index 00000000..56ff79d8 --- /dev/null +++ b/package/perl-crypt-openssl-guess/perl-crypt-openssl-guess.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-crypt-openssl-guess +# +################################################################################ + +PERL_CRYPT_OPENSSL_GUESS_VERSION = 0.15 +PERL_CRYPT_OPENSSL_GUESS_SOURCE = Crypt-OpenSSL-Guess-$(PERL_CRYPT_OPENSSL_GUESS_VERSION).tar.gz +PERL_CRYPT_OPENSSL_GUESS_SITE = $(BR2_CPAN_MIRROR)/authors/id/A/AK/AKIYM +PERL_CRYPT_OPENSSL_GUESS_LICENSE = Artistic or GPL-1.0+ +PERL_CRYPT_OPENSSL_GUESS_LICENSE_FILES = LICENSE +PERL_CRYPT_OPENSSL_GUESS_DISTNAME = Crypt-OpenSSL-Guess + +$(eval $(host-perl-package)) diff --git a/package/perl-crypt-openssl-random/Config.in b/package/perl-crypt-openssl-random/Config.in new file mode 100644 index 00000000..6b5da7c8 --- /dev/null +++ b/package/perl-crypt-openssl-random/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PERL_CRYPT_OPENSSL_RANDOM + bool "perl-crypt-openssl-random" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_OPENSSL + help + OpenSSL/LibreSSL pseudo-random number generator access. + + https://metacpan.org/release/Crypt-OpenSSL-Random + +comment "perl-crypt-openssl-random needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-crypt-openssl-random/perl-crypt-openssl-random.hash b/package/perl-crypt-openssl-random/perl-crypt-openssl-random.hash new file mode 100644 index 00000000..6c1344fb --- /dev/null +++ b/package/perl-crypt-openssl-random/perl-crypt-openssl-random.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 bcde8d5a822c91376deda3c4f0c75fbe Crypt-OpenSSL-Random-0.15.tar.gz +sha256 f0876faa1ba3111e39b86aa730c603211eff2905e460c72a57b61e8cf475cef4 Crypt-OpenSSL-Random-0.15.tar.gz + +# computed by scancpan +sha256 fdaba2134145d3e252c5930180b2bcb13b5367ad5a8713d6868f014cd25c496f LICENSE diff --git a/package/perl-crypt-openssl-random/perl-crypt-openssl-random.mk b/package/perl-crypt-openssl-random/perl-crypt-openssl-random.mk new file mode 100644 index 00000000..e70eb7e9 --- /dev/null +++ b/package/perl-crypt-openssl-random/perl-crypt-openssl-random.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# perl-crypt-openssl-random +# +################################################################################ + +PERL_CRYPT_OPENSSL_RANDOM_VERSION = 0.15 +PERL_CRYPT_OPENSSL_RANDOM_SOURCE = Crypt-OpenSSL-Random-$(PERL_CRYPT_OPENSSL_RANDOM_VERSION).tar.gz +PERL_CRYPT_OPENSSL_RANDOM_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RU/RURBAN +PERL_CRYPT_OPENSSL_RANDOM_DEPENDENCIES = \ + host-perl-crypt-openssl-guess \ + openssl +PERL_CRYPT_OPENSSL_RANDOM_LICENSE = Artistic or GPL-1.0+ +PERL_CRYPT_OPENSSL_RANDOM_LICENSE_FILES = LICENSE +PERL_CRYPT_OPENSSL_RANDOM_DISTNAME = Crypt-OpenSSL-Random + +# Try as hard as possible to remedy to the brain-damage their build-system +# suffers from: don't search for openssl, they pick the host-system one. +PERL_CRYPT_OPENSSL_RANDOM_CONF_ENV = OPENSSL_PREFIX=$(STAGING_DIR)/usr + +$(eval $(perl-package)) diff --git a/package/perl-crypt-openssl-rsa/Config.in b/package/perl-crypt-openssl-rsa/Config.in new file mode 100644 index 00000000..b11d8a44 --- /dev/null +++ b/package/perl-crypt-openssl-rsa/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PERL_CRYPT_OPENSSL_RSA + bool "perl-crypt-openssl-rsa" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_PERL_CRYPT_OPENSSL_RANDOM # runtime + select BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 if BR2_PACKAGE_LIBOPENSSL + help + RSA encoding and decoding, using the openSSL libraries. + + http://github.com/toddr/Crypt-OpenSSL-RSA + +comment "perl-crypt-openssl-rsa needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-crypt-openssl-rsa/perl-crypt-openssl-rsa.hash b/package/perl-crypt-openssl-rsa/perl-crypt-openssl-rsa.hash new file mode 100644 index 00000000..946f879c --- /dev/null +++ b/package/perl-crypt-openssl-rsa/perl-crypt-openssl-rsa.hash @@ -0,0 +1,5 @@ +# From https://cpan.metacpan.org/authors/id/T/TO/TODDR/CHECKSUMS +sha256 bdbe630f6d6f540325746ad99977272ac8664ff81bd19f0adaba6d6f45efd864 Crypt-OpenSSL-RSA-0.33.tar.gz + +# computed by scancpan +sha256 8a693ad3f52daeeb5ac5deceb1e1109c9c87095ed5ba6506d6d5c106e4066f5a LICENSE diff --git a/package/perl-crypt-openssl-rsa/perl-crypt-openssl-rsa.mk b/package/perl-crypt-openssl-rsa/perl-crypt-openssl-rsa.mk new file mode 100644 index 00000000..e1bfd6a7 --- /dev/null +++ b/package/perl-crypt-openssl-rsa/perl-crypt-openssl-rsa.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# perl-crypt-openssl-rsa +# +################################################################################ + +PERL_CRYPT_OPENSSL_RSA_VERSION = 0.33 +PERL_CRYPT_OPENSSL_RSA_SOURCE = Crypt-OpenSSL-RSA-$(PERL_CRYPT_OPENSSL_RSA_VERSION).tar.gz +PERL_CRYPT_OPENSSL_RSA_SITE = $(BR2_CPAN_MIRROR)/authors/id/T/TO/TODDR +PERL_CRYPT_OPENSSL_RSA_DEPENDENCIES = \ + host-perl-crypt-openssl-guess \ + perl-crypt-openssl-random \ + openssl +PERL_CRYPT_OPENSSL_RSA_LICENSE = Artistic or GPL-1.0+ +PERL_CRYPT_OPENSSL_RSA_LICENSE_FILES = LICENSE +PERL_CRYPT_OPENSSL_RSA_DISTNAME = Crypt-OpenSSL-RSA + +# Try as hard as possible to remedy to the brain-damage their build-system +# suffers from: don't search for openssl, they pick the host-system one. +PERL_CRYPT_OPENSSL_RSA_CONF_ENV = OPENSSL_PREFIX=$(STAGING_DIR)/usr + +$(eval $(perl-package)) diff --git a/package/perl-data-dump/Config.in b/package/perl-data-dump/Config.in new file mode 100644 index 00000000..b44209fe --- /dev/null +++ b/package/perl-data-dump/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_DATA_DUMP + bool "perl-data-dump" + help + Pretty printing of data structures. + + https://metacpan.org/release/Data-Dump diff --git a/package/perl-data-dump/perl-data-dump.hash b/package/perl-data-dump/perl-data-dump.hash new file mode 100644 index 00000000..cc1986e7 --- /dev/null +++ b/package/perl-data-dump/perl-data-dump.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 9bd7131ef0441e1e0e001bf85e9fae31 Data-Dump-1.25.tar.gz +sha256 a4aa6e0ddbf39d5ad49bddfe0f89d9da864e3bc00f627125d1bc580472f53fbd Data-Dump-1.25.tar.gz + +# computed by scancpan +sha256 8bdd655ceab54bbeb1105a101f0412ec764098abf09b4e92bc430d56befa10cb README.md diff --git a/package/perl-data-dump/perl-data-dump.mk b/package/perl-data-dump/perl-data-dump.mk new file mode 100644 index 00000000..e70de2a2 --- /dev/null +++ b/package/perl-data-dump/perl-data-dump.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-data-dump +# +################################################################################ + +PERL_DATA_DUMP_VERSION = 1.25 +PERL_DATA_DUMP_SOURCE = Data-Dump-$(PERL_DATA_DUMP_VERSION).tar.gz +PERL_DATA_DUMP_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GA/GARU +PERL_DATA_DUMP_LICENSE = Artistic or GPL-1.0+ +PERL_DATA_DUMP_LICENSE_FILES = README.md +PERL_DATA_DUMP_DISTNAME = Data-Dump + +$(eval $(perl-package)) diff --git a/package/perl-data-optlist/Config.in b/package/perl-data-optlist/Config.in new file mode 100644 index 00000000..88152f27 --- /dev/null +++ b/package/perl-data-optlist/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PERL_DATA_OPTLIST + bool "perl-data-optlist" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_PERL_PARAMS_UTIL # runtime + select BR2_PACKAGE_PERL_SUB_INSTALL # runtime + help + parse and validate simple name/value option pairs. + + https://github.com/rjbs/Data-OptList + +comment "perl-data-optlist needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-data-optlist/perl-data-optlist.hash b/package/perl-data-optlist/perl-data-optlist.hash new file mode 100644 index 00000000..6d55d638 --- /dev/null +++ b/package/perl-data-optlist/perl-data-optlist.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 d63ec5d446eff1aaa5ba92bc13a52b77 Data-OptList-0.114.tar.gz +sha256 9fd1093b917a21fb79ae1607db53d113b4e0ad8fe0ae776cb077a7e50044fdf3 Data-OptList-0.114.tar.gz + +# computed by scancpan +sha256 712f3e40537810ba3046533fd71d877f69ab446d5e8e8a1135771804494b8b42 LICENSE diff --git a/package/perl-data-optlist/perl-data-optlist.mk b/package/perl-data-optlist/perl-data-optlist.mk new file mode 100644 index 00000000..8c22cfe7 --- /dev/null +++ b/package/perl-data-optlist/perl-data-optlist.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-data-optlist +# +################################################################################ + +PERL_DATA_OPTLIST_VERSION = 0.114 +PERL_DATA_OPTLIST_SOURCE = Data-OptList-$(PERL_DATA_OPTLIST_VERSION).tar.gz +PERL_DATA_OPTLIST_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RJ/RJBS +PERL_DATA_OPTLIST_LICENSE = Artistic or GPL-1.0+ +PERL_DATA_OPTLIST_LICENSE_FILES = LICENSE +PERL_DATA_OPTLIST_DISTNAME = Data-OptList + +$(eval $(perl-package)) diff --git a/package/perl-data-uuid/Config.in b/package/perl-data-uuid/Config.in new file mode 100644 index 00000000..9b4812b2 --- /dev/null +++ b/package/perl-data-uuid/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PERL_DATA_UUID + bool "perl-data-uuid" + depends on !BR2_STATIC_LIBS + help + Globally/Universally Unique Identifiers (GUIDs/UUIDs). + + https://metacpan.org/release/Data-UUID + +comment "perl-data-uuid needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-data-uuid/perl-data-uuid.hash b/package/perl-data-uuid/perl-data-uuid.hash new file mode 100644 index 00000000..b2c86296 --- /dev/null +++ b/package/perl-data-uuid/perl-data-uuid.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 13468e0fb65a0b5ce27b8628cb2f0109 Data-UUID-1.226.tar.gz +sha256 093d57ffa0d411a94bafafae495697db26f5c9d0277198fe3f7cf2be22996453 Data-UUID-1.226.tar.gz + +# computed by scancpan +sha256 0560c8eea8e1fb8173faa6c2e9b7e9f8728b8ae8250a814709a53c30b778d5fb LICENSE diff --git a/package/perl-data-uuid/perl-data-uuid.mk b/package/perl-data-uuid/perl-data-uuid.mk new file mode 100644 index 00000000..93060964 --- /dev/null +++ b/package/perl-data-uuid/perl-data-uuid.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# perl-data-uuid +# +################################################################################ + +PERL_DATA_UUID_VERSION = 1.226 +PERL_DATA_UUID_SOURCE = Data-UUID-$(PERL_DATA_UUID_VERSION).tar.gz +PERL_DATA_UUID_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RJ/RJBS +# The license is documented at +# https://fedoraproject.org/wiki/Licensing:MIT#HP_Variant as the "HP +# Variant" of the MIT license. There is no official SPDX tag for this +# license, but the other MIT variants are prefixed with "MIT-", so we +# do the same here. +PERL_DATA_UUID_LICENSE = MIT-HP +PERL_DATA_UUID_LICENSE_FILES = LICENSE +PERL_DATA_UUID_DISTNAME = Data-UUID + +$(eval $(perl-package)) diff --git a/package/perl-date-manip/Config.in b/package/perl-date-manip/Config.in new file mode 100644 index 00000000..d1aae7ef --- /dev/null +++ b/package/perl-date-manip/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_DATE_MANIP + bool "perl-date-manip" + help + Date manipulation routines. + + https://github.com/SBECK-github/Date-Manip diff --git a/package/perl-date-manip/perl-date-manip.hash b/package/perl-date-manip/perl-date-manip.hash new file mode 100644 index 00000000..d055cb33 --- /dev/null +++ b/package/perl-date-manip/perl-date-manip.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 74f127ff4c71fa1aff54dc55818b0c2e Date-Manip-6.94.tar.gz +sha256 0278eb62113618c8977d3d537433d85340c487cbdfd95dd3452e4d7217f48848 Date-Manip-6.94.tar.gz + +# computed by scancpan +sha256 8ba2a138654f8b59b7e1e3ad0d4c81918b9148ff95078b172ccbb45fa241431d LICENSE diff --git a/package/perl-date-manip/perl-date-manip.mk b/package/perl-date-manip/perl-date-manip.mk new file mode 100644 index 00000000..55d9cff6 --- /dev/null +++ b/package/perl-date-manip/perl-date-manip.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-date-manip +# +################################################################################ + +PERL_DATE_MANIP_VERSION = 6.94 +PERL_DATE_MANIP_SOURCE = Date-Manip-$(PERL_DATE_MANIP_VERSION).tar.gz +PERL_DATE_MANIP_SITE = $(BR2_CPAN_MIRROR)/authors/id/S/SB/SBECK +PERL_DATE_MANIP_LICENSE = Artistic or GPL-1.0+ +PERL_DATE_MANIP_LICENSE_FILES = LICENSE +PERL_DATE_MANIP_DISTNAME = Date-Manip + +$(eval $(perl-package)) diff --git a/package/perl-datetime-tiny/Config.in b/package/perl-datetime-tiny/Config.in new file mode 100644 index 00000000..ea44ae0c --- /dev/null +++ b/package/perl-datetime-tiny/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_DATETIME_TINY + bool "perl-datetime-tiny" + help + A date object, with as little code as possible. + + https://github.com/dagolden/DateTime-Tiny diff --git a/package/perl-datetime-tiny/perl-datetime-tiny.hash b/package/perl-datetime-tiny/perl-datetime-tiny.hash new file mode 100644 index 00000000..8dc07657 --- /dev/null +++ b/package/perl-datetime-tiny/perl-datetime-tiny.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 5ac2924652edb0cf5fda7c9d52162b3f DateTime-Tiny-1.07.tar.gz +sha256 83568a22838cb518fbeb9e060460ec7f59d5a0b0a1cc06562954c3674d7cf7e4 DateTime-Tiny-1.07.tar.gz + +# computed by scancpan +sha256 21cda7a55a8d4b32a43c654f0d4d4a1587096b35bf2a93ea12a2e3a8c2c0b88f LICENSE diff --git a/package/perl-datetime-tiny/perl-datetime-tiny.mk b/package/perl-datetime-tiny/perl-datetime-tiny.mk new file mode 100644 index 00000000..2a426426 --- /dev/null +++ b/package/perl-datetime-tiny/perl-datetime-tiny.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-datetime-tiny +# +################################################################################ + +PERL_DATETIME_TINY_VERSION = 1.07 +PERL_DATETIME_TINY_SOURCE = DateTime-Tiny-$(PERL_DATETIME_TINY_VERSION).tar.gz +PERL_DATETIME_TINY_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DA/DAGOLDEN +PERL_DATETIME_TINY_LICENSE = Artistic or GPL-1.0+ +PERL_DATETIME_TINY_LICENSE_FILES = LICENSE +PERL_DATETIME_TINY_DISTNAME = DateTime-Tiny + +$(eval $(perl-package)) diff --git a/package/perl-dbd-mysql/0001-Use-net_buffer_length-macro-if-available.patch b/package/perl-dbd-mysql/0001-Use-net_buffer_length-macro-if-available.patch new file mode 100644 index 00000000..d7767c1f --- /dev/null +++ b/package/perl-dbd-mysql/0001-Use-net_buffer_length-macro-if-available.patch @@ -0,0 +1,41 @@ +From 9189ef77679c22de3bbd2142031858373236520b Mon Sep 17 00:00:00 2001 +From: Michiel Beijen +Date: Fri, 23 Feb 2018 07:52:33 +0000 +Subject: [PATCH] Use net_buffer_length macro if available + +Upstream: https://github.com/perl5-dbi/DBD-mysql/commit/0f0cebe87fab335873fd3701bc304922da826940 + +(cherry picked from commit 0f0cebe87fab335873fd3701bc304922da826940) +Signed-off-by: Romain Naour +--- + mysql.xs | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +diff --git a/mysql.xs b/mysql.xs +index 8edee55..9b4d60f 100644 +--- a/mysql.xs ++++ b/mysql.xs +@@ -819,15 +819,14 @@ dbd_mysql_get_info(dbh, sql_info_type) + retsv = newSVpvn("`", 1); + break; + case SQL_MAXIMUM_STATEMENT_LENGTH: +-#if !defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 50709 +- /* MariaDB 10 is not MySQL source level compatible so this +- only applies to MySQL*/ +- /* mysql_get_option() was added in mysql 5.7.3 */ +- /* MYSQL_OPT_NET_BUFFER_LENGTH was added in mysql 5.7.9 */ ++ /* net_buffer_length macro is not defined in MySQL 5.7 and some MariaDB ++ versions - if it is not available, use newer mysql_get_option */ ++#if !defined(net_buffer_length) ++ ; ++ unsigned long buffer_len; + mysql_get_option(NULL, MYSQL_OPT_NET_BUFFER_LENGTH, &buffer_len); + retsv = newSViv(buffer_len); + #else +- /* before mysql 5.7.9 use net_buffer_length macro */ + retsv = newSViv(net_buffer_length); + #endif + break; +-- +2.44.0 + diff --git a/package/perl-dbd-mysql/Config.in b/package/perl-dbd-mysql/Config.in new file mode 100644 index 00000000..eff76f5b --- /dev/null +++ b/package/perl-dbd-mysql/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_PERL_DBD_MYSQL + bool "perl-dbd-mysql" + depends on !BR2_STATIC_LIBS + depends on BR2_INSTALL_LIBSTDCPP # mysql + depends on BR2_USE_MMU # mysql + depends on BR2_TOOLCHAIN_HAS_THREADS # mysql + select BR2_PACKAGE_MARIADB + select BR2_PACKAGE_PERL_DBI # runtime + help + A MySQL driver for the Perl5 Database Interface (DBI). + + http://dbi.perl.org/ + +comment "perl-dbd-mysql needs a toolchain w/ dynamic library, C++, threads" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/perl-dbd-mysql/perl-dbd-mysql.hash b/package/perl-dbd-mysql/perl-dbd-mysql.hash new file mode 100644 index 00000000..995928fb --- /dev/null +++ b/package/perl-dbd-mysql/perl-dbd-mysql.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 bdf4f4d899b8af29ebd8ebfb7438d05f DBD-mysql-4.046.tar.gz +sha256 6165652ec959d05b97f5413fa3dff014b78a44cf6de21ae87283b28378daf1f7 DBD-mysql-4.046.tar.gz + +# computed by scancpan +sha256 7a9ba29702b957805cfa8aa63bca43175625824263232dbade0010d385ab888c LICENSE diff --git a/package/perl-dbd-mysql/perl-dbd-mysql.mk b/package/perl-dbd-mysql/perl-dbd-mysql.mk new file mode 100644 index 00000000..e87e3410 --- /dev/null +++ b/package/perl-dbd-mysql/perl-dbd-mysql.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# perl-dbd-mysql +# +################################################################################ + +PERL_DBD_MYSQL_VERSION = 4.046 +PERL_DBD_MYSQL_SOURCE = DBD-mysql-$(PERL_DBD_MYSQL_VERSION).tar.gz +PERL_DBD_MYSQL_SITE = $(BR2_CPAN_MIRROR)/authors/id/C/CA/CAPTTOFU +PERL_DBD_MYSQL_DEPENDENCIES = \ + host-perl-dbi \ + mariadb +PERL_DBD_MYSQL_LICENSE = Artistic or GPL-1.0+ +PERL_DBD_MYSQL_LICENSE_FILES = LICENSE +PERL_DBD_MYSQL_DISTNAME = DBD-mysql + +PERL_DBD_MYSQL_CONF_OPTS = --mysql_config=$(STAGING_DIR)/usr/bin/mysql_config + +$(eval $(perl-package)) diff --git a/package/perl-dbi/Config.in b/package/perl-dbi/Config.in new file mode 100644 index 00000000..2c08c733 --- /dev/null +++ b/package/perl-dbi/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PERL_DBI + bool "perl-dbi" + depends on !BR2_STATIC_LIBS + help + Database independent interface for Perl. + + http://dbi.perl.org/ + +comment "perl-dbi needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-dbi/perl-dbi.hash b/package/perl-dbi/perl-dbi.hash new file mode 100644 index 00000000..757a4cc5 --- /dev/null +++ b/package/perl-dbi/perl-dbi.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 352f80b1e23769c116082a90905d7398 DBI-1.643.tar.gz +sha256 8a2b993db560a2c373c174ee976a51027dd780ec766ae17620c20393d2e836fa DBI-1.643.tar.gz + +# computed by scancpan +sha256 33453c8b0d8d474a42669ac702a13c20f39c91a34b3df4e6ca778fc2f0f711c7 LICENSE diff --git a/package/perl-dbi/perl-dbi.mk b/package/perl-dbi/perl-dbi.mk new file mode 100644 index 00000000..482d3d17 --- /dev/null +++ b/package/perl-dbi/perl-dbi.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perl-dbi +# +################################################################################ + +PERL_DBI_VERSION = 1.643 +PERL_DBI_SOURCE = DBI-$(PERL_DBI_VERSION).tar.gz +PERL_DBI_SITE = $(BR2_CPAN_MIRROR)/authors/id/T/TI/TIMB +PERL_DBI_LICENSE = Artistic or GPL-1.0+ +PERL_DBI_LICENSE_FILES = LICENSE +PERL_DBI_DISTNAME = DBI + +$(eval $(perl-package)) +$(eval $(host-perl-package)) diff --git a/package/perl-devel-cycle/Config.in b/package/perl-devel-cycle/Config.in new file mode 100644 index 00000000..7561f65f --- /dev/null +++ b/package/perl-devel-cycle/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_DEVEL_CYCLE + bool "perl-devel-cycle" + help + Find memory cycles in objects. + + https://metacpan.org/release/Devel-Cycle diff --git a/package/perl-devel-cycle/perl-devel-cycle.hash b/package/perl-devel-cycle/perl-devel-cycle.hash new file mode 100644 index 00000000..e7a93fde --- /dev/null +++ b/package/perl-devel-cycle/perl-devel-cycle.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 3d9a963da87b17398fab9acbef63f277 Devel-Cycle-1.12.tar.gz +sha256 fd3365c4d898b2b2bddbb78a46d507a18cca8490a290199547dab7f1e7390bc2 Devel-Cycle-1.12.tar.gz + +# computed by scancpan +sha256 e47dfab3e7e9d20fe6313169ead2736ab97f1388003eee033dd934278649034d README diff --git a/package/perl-devel-cycle/perl-devel-cycle.mk b/package/perl-devel-cycle/perl-devel-cycle.mk new file mode 100644 index 00000000..0599e1c3 --- /dev/null +++ b/package/perl-devel-cycle/perl-devel-cycle.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-devel-cycle +# +################################################################################ + +PERL_DEVEL_CYCLE_VERSION = 1.12 +PERL_DEVEL_CYCLE_SOURCE = Devel-Cycle-$(PERL_DEVEL_CYCLE_VERSION).tar.gz +PERL_DEVEL_CYCLE_SITE = $(BR2_CPAN_MIRROR)/authors/id/L/LD/LDS +PERL_DEVEL_CYCLE_LICENSE = Artistic or GPL-1.0+ +PERL_DEVEL_CYCLE_LICENSE_FILES = README +PERL_DEVEL_CYCLE_DISTNAME = Devel-Cycle + +$(eval $(perl-package)) diff --git a/package/perl-devel-globaldestruction/Config.in b/package/perl-devel-globaldestruction/Config.in new file mode 100644 index 00000000..a951e20d --- /dev/null +++ b/package/perl-devel-globaldestruction/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PERL_DEVEL_GLOBALDESTRUCTION + bool "perl-devel-globaldestruction" + select BR2_PACKAGE_PERL_SUB_EXPORTER_PROGRESSIVE # runtime + help + Provides function returning the equivalent of + ${^GLOBAL_PHASE} eq 'DESTRUCT' for older perls. + + https://metacpan.org/release/Devel-GlobalDestruction diff --git a/package/perl-devel-globaldestruction/perl-devel-globaldestruction.hash b/package/perl-devel-globaldestruction/perl-devel-globaldestruction.hash new file mode 100644 index 00000000..727df4d2 --- /dev/null +++ b/package/perl-devel-globaldestruction/perl-devel-globaldestruction.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 24221ba322cf2dc46a1fc99b53e2380b Devel-GlobalDestruction-0.14.tar.gz +sha256 34b8a5f29991311468fe6913cadaba75fd5d2b0b3ee3bb41fe5b53efab9154ab Devel-GlobalDestruction-0.14.tar.gz + +# computed by scancpan +sha256 f7adbd1db623233e220f9157521a620dbae4918ae7088845aa61e87b7f62bb23 README diff --git a/package/perl-devel-globaldestruction/perl-devel-globaldestruction.mk b/package/perl-devel-globaldestruction/perl-devel-globaldestruction.mk new file mode 100644 index 00000000..3d4d60ed --- /dev/null +++ b/package/perl-devel-globaldestruction/perl-devel-globaldestruction.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-devel-globaldestruction +# +################################################################################ + +PERL_DEVEL_GLOBALDESTRUCTION_VERSION = 0.14 +PERL_DEVEL_GLOBALDESTRUCTION_SOURCE = Devel-GlobalDestruction-$(PERL_DEVEL_GLOBALDESTRUCTION_VERSION).tar.gz +PERL_DEVEL_GLOBALDESTRUCTION_SITE = $(BR2_CPAN_MIRROR)/authors/id/H/HA/HAARG +PERL_DEVEL_GLOBALDESTRUCTION_LICENSE = Artistic or GPL-1.0+ +PERL_DEVEL_GLOBALDESTRUCTION_LICENSE_FILES = README +PERL_DEVEL_GLOBALDESTRUCTION_DISTNAME = Devel-GlobalDestruction + +$(eval $(perl-package)) diff --git a/package/perl-devel-size/Config.in b/package/perl-devel-size/Config.in new file mode 100644 index 00000000..b545cf18 --- /dev/null +++ b/package/perl-devel-size/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PERL_DEVEL_SIZE + bool "perl-devel-size" + depends on !BR2_STATIC_LIBS + help + Perl extension for finding the memory usage of Perl + variables. + + https://metacpan.org/release/Devel-Size + +comment "perl-devel-size needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-devel-size/perl-devel-size.hash b/package/perl-devel-size/perl-devel-size.hash new file mode 100644 index 00000000..c0fbcf29 --- /dev/null +++ b/package/perl-devel-size/perl-devel-size.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 0b5335d69402c75d5ab9978027ae2f66 Devel-Size-0.83.tar.gz +sha256 757a67e0aa59ae103ea5ca092cbecc025644ebdc326731688ffab6f8823ef4b3 Devel-Size-0.83.tar.gz + +# computed by scancpan +sha256 fca4ebe3a1f329aa33a4d259c0a5b136a15a40b987c60c2dd6f1007bb01a1513 README diff --git a/package/perl-devel-size/perl-devel-size.mk b/package/perl-devel-size/perl-devel-size.mk new file mode 100644 index 00000000..9acc67c9 --- /dev/null +++ b/package/perl-devel-size/perl-devel-size.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-devel-size +# +################################################################################ + +PERL_DEVEL_SIZE_VERSION = 0.83 +PERL_DEVEL_SIZE_SOURCE = Devel-Size-$(PERL_DEVEL_SIZE_VERSION).tar.gz +PERL_DEVEL_SIZE_SITE = $(BR2_CPAN_MIRROR)/authors/id/N/NW/NWCLARK +PERL_DEVEL_SIZE_LICENSE = Artistic or GPL-1.0+ +PERL_DEVEL_SIZE_LICENSE_FILES = README +PERL_DEVEL_SIZE_DISTNAME = Devel-Size + +$(eval $(perl-package)) diff --git a/package/perl-devel-stacktrace-ashtml/Config.in b/package/perl-devel-stacktrace-ashtml/Config.in new file mode 100644 index 00000000..9c73f0e4 --- /dev/null +++ b/package/perl-devel-stacktrace-ashtml/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_DEVEL_STACKTRACE_ASHTML + bool "perl-devel-stacktrace-ashtml" + select BR2_PACKAGE_PERL_DEVEL_STACKTRACE # runtime + help + Displays stack trace in HTML. + + https://github.com/miyagawa/Devel-StackTrace-AsHTML diff --git a/package/perl-devel-stacktrace-ashtml/perl-devel-stacktrace-ashtml.hash b/package/perl-devel-stacktrace-ashtml/perl-devel-stacktrace-ashtml.hash new file mode 100644 index 00000000..8a3e625f --- /dev/null +++ b/package/perl-devel-stacktrace-ashtml/perl-devel-stacktrace-ashtml.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 4ec8bd92e4a765a7cabf402db9640412 Devel-StackTrace-AsHTML-0.15.tar.gz +sha256 6283dbe2197e2f20009cc4b449997742169cdd951bfc44cbc6e62c2a962d3147 Devel-StackTrace-AsHTML-0.15.tar.gz + +# computed by scancpan +sha256 ffecf60c52b85d56c928f5eac889b5044243c3907b810ef640c9f02fbce567ac LICENSE diff --git a/package/perl-devel-stacktrace-ashtml/perl-devel-stacktrace-ashtml.mk b/package/perl-devel-stacktrace-ashtml/perl-devel-stacktrace-ashtml.mk new file mode 100644 index 00000000..949823c0 --- /dev/null +++ b/package/perl-devel-stacktrace-ashtml/perl-devel-stacktrace-ashtml.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-devel-stacktrace-ashtml +# +################################################################################ + +PERL_DEVEL_STACKTRACE_ASHTML_VERSION = 0.15 +PERL_DEVEL_STACKTRACE_ASHTML_SOURCE = Devel-StackTrace-AsHTML-$(PERL_DEVEL_STACKTRACE_ASHTML_VERSION).tar.gz +PERL_DEVEL_STACKTRACE_ASHTML_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MI/MIYAGAWA +PERL_DEVEL_STACKTRACE_ASHTML_LICENSE = Artistic or GPL-1.0+ +PERL_DEVEL_STACKTRACE_ASHTML_LICENSE_FILES = LICENSE +PERL_DEVEL_STACKTRACE_ASHTML_DISTNAME = Devel-StackTrace-AsHTML + +$(eval $(perl-package)) diff --git a/package/perl-devel-stacktrace/Config.in b/package/perl-devel-stacktrace/Config.in new file mode 100644 index 00000000..3311f72e --- /dev/null +++ b/package/perl-devel-stacktrace/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_DEVEL_STACKTRACE + bool "perl-devel-stacktrace" + help + An object representing a stack trace. + + http://metacpan.org/release/Devel-StackTrace diff --git a/package/perl-devel-stacktrace/perl-devel-stacktrace.hash b/package/perl-devel-stacktrace/perl-devel-stacktrace.hash new file mode 100644 index 00000000..7525ebbb --- /dev/null +++ b/package/perl-devel-stacktrace/perl-devel-stacktrace.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 b8ca19bb4c76e98a04373618db9c7c3c Devel-StackTrace-2.05.tar.gz +sha256 63cb6196e986a7e578c4d28b3c780e7194835bfc78b68eeb8f00599d4444888c Devel-StackTrace-2.05.tar.gz + +# computed by scancpan +sha256 74f17bdbecbdfb75998f953c1dedb27d72199c8f0b612b1fca7834e4bfd87f90 LICENSE diff --git a/package/perl-devel-stacktrace/perl-devel-stacktrace.mk b/package/perl-devel-stacktrace/perl-devel-stacktrace.mk new file mode 100644 index 00000000..557f21bb --- /dev/null +++ b/package/perl-devel-stacktrace/perl-devel-stacktrace.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-devel-stacktrace +# +################################################################################ + +PERL_DEVEL_STACKTRACE_VERSION = 2.05 +PERL_DEVEL_STACKTRACE_SOURCE = Devel-StackTrace-$(PERL_DEVEL_STACKTRACE_VERSION).tar.gz +PERL_DEVEL_STACKTRACE_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DR/DROLSKY +PERL_DEVEL_STACKTRACE_LICENSE = Artistic-2.0 +PERL_DEVEL_STACKTRACE_LICENSE_FILES = LICENSE +PERL_DEVEL_STACKTRACE_DISTNAME = Devel-StackTrace + +$(eval $(perl-package)) diff --git a/package/perl-device-serialport/Config.in b/package/perl-device-serialport/Config.in new file mode 100644 index 00000000..f14e9794 --- /dev/null +++ b/package/perl-device-serialport/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PERL_DEVICE_SERIALPORT + bool "perl-device-serialport" + depends on !BR2_STATIC_LIBS + help + Linux/POSIX emulation of Win32::SerialPort functions. + + https://metacpan.org/release/Device-SerialPort + +comment "perl-device-serialport needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-device-serialport/perl-device-serialport.hash b/package/perl-device-serialport/perl-device-serialport.hash new file mode 100644 index 00000000..305a5ec3 --- /dev/null +++ b/package/perl-device-serialport/perl-device-serialport.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 82c698151f934eb28c65d1838cee7d9e Device-SerialPort-1.04.tar.gz +sha256 d392567cb39b4ea606c0e0acafd8ed72320311b995336ece5fcefcf9b150e9d7 Device-SerialPort-1.04.tar.gz + +# computed by scancpan +sha256 59432e84eca65c10c4b627f8af0b00833685856b68242b816aea2a38283a124c README diff --git a/package/perl-device-serialport/perl-device-serialport.mk b/package/perl-device-serialport/perl-device-serialport.mk new file mode 100644 index 00000000..9889c913 --- /dev/null +++ b/package/perl-device-serialport/perl-device-serialport.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-device-serialport +# +################################################################################ + +PERL_DEVICE_SERIALPORT_VERSION = 1.04 +PERL_DEVICE_SERIALPORT_SOURCE = Device-SerialPort-$(PERL_DEVICE_SERIALPORT_VERSION).tar.gz +PERL_DEVICE_SERIALPORT_SITE = $(BR2_CPAN_MIRROR)/authors/id/C/CO/COOK +PERL_DEVICE_SERIALPORT_LICENSE = Artistic or GPL-1.0+ +PERL_DEVICE_SERIALPORT_LICENSE_FILES = README +PERL_DEVICE_SERIALPORT_DISTNAME = Device-SerialPort + +$(eval $(perl-package)) diff --git a/package/perl-digest-hmac/Config.in b/package/perl-digest-hmac/Config.in new file mode 100644 index 00000000..e8bb8800 --- /dev/null +++ b/package/perl-digest-hmac/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_DIGEST_HMAC + bool "perl-digest-hmac" + help + Keyed-Hashing for Message Authentication. + + http://metacpan.org/release/Digest-HMAC diff --git a/package/perl-digest-hmac/perl-digest-hmac.hash b/package/perl-digest-hmac/perl-digest-hmac.hash new file mode 100644 index 00000000..5e7da14f --- /dev/null +++ b/package/perl-digest-hmac/perl-digest-hmac.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 746a5edffd1485d7500e005730c271c8 Digest-HMAC-1.04.tar.gz +sha256 d6bc8156aa275c44d794b7c18f44cdac4a58140245c959e6b19b2c3838b08ed4 Digest-HMAC-1.04.tar.gz + +# computed by scancpan +sha256 cb9ff694d1769f450dd5c400204aa921d2fb3db90fcb21674a39f3725c4255c1 LICENSE diff --git a/package/perl-digest-hmac/perl-digest-hmac.mk b/package/perl-digest-hmac/perl-digest-hmac.mk new file mode 100644 index 00000000..bc080703 --- /dev/null +++ b/package/perl-digest-hmac/perl-digest-hmac.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-digest-hmac +# +################################################################################ + +PERL_DIGEST_HMAC_VERSION = 1.04 +PERL_DIGEST_HMAC_SOURCE = Digest-HMAC-$(PERL_DIGEST_HMAC_VERSION).tar.gz +PERL_DIGEST_HMAC_SITE = $(BR2_CPAN_MIRROR)/authors/id/A/AR/ARODLAND +PERL_DIGEST_HMAC_LICENSE = Artistic or GPL-1.0+ +PERL_DIGEST_HMAC_LICENSE_FILES = LICENSE +PERL_DIGEST_HMAC_DISTNAME = Digest-HMAC + +$(eval $(perl-package)) diff --git a/package/perl-digest-sha1/Config.in b/package/perl-digest-sha1/Config.in new file mode 100644 index 00000000..1e093a04 --- /dev/null +++ b/package/perl-digest-sha1/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PERL_DIGEST_SHA1 + bool "perl-digest-sha1" + depends on !BR2_STATIC_LIBS + help + Perl interface to the SHA-1 algorithm. + + https://metacpan.org/release/Digest-SHA1 + +comment "perl-digest-sha1 needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-digest-sha1/perl-digest-sha1.hash b/package/perl-digest-sha1/perl-digest-sha1.hash new file mode 100644 index 00000000..dc32ddcf --- /dev/null +++ b/package/perl-digest-sha1/perl-digest-sha1.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 bd22388f268434f2b24f64e28bf1aa35 Digest-SHA1-2.13.tar.gz +sha256 68c1dac2187421f0eb7abf71452a06f190181b8fc4b28ededf5b90296fb943cc Digest-SHA1-2.13.tar.gz + +# computed by scancpan +sha256 805bee77fab9c72b0bfb452bb623b278f1767de62011e1814de2a6f6115439c8 README diff --git a/package/perl-digest-sha1/perl-digest-sha1.mk b/package/perl-digest-sha1/perl-digest-sha1.mk new file mode 100644 index 00000000..d3188db1 --- /dev/null +++ b/package/perl-digest-sha1/perl-digest-sha1.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-digest-sha1 +# +################################################################################ + +PERL_DIGEST_SHA1_VERSION = 2.13 +PERL_DIGEST_SHA1_SOURCE = Digest-SHA1-$(PERL_DIGEST_SHA1_VERSION).tar.gz +PERL_DIGEST_SHA1_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GA/GAAS +PERL_DIGEST_SHA1_LICENSE = Artistic or GPL-1.0+ +PERL_DIGEST_SHA1_LICENSE_FILES = README +PERL_DIGEST_SHA1_DISTNAME = Digest-SHA1 + +$(eval $(perl-package)) diff --git a/package/perl-dist-checkconflicts/Config.in b/package/perl-dist-checkconflicts/Config.in new file mode 100644 index 00000000..b34496e7 --- /dev/null +++ b/package/perl-dist-checkconflicts/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_DIST_CHECKCONFLICTS + bool "perl-dist-checkconflicts" + select BR2_PACKAGE_PERL_MODULE_RUNTIME # runtime + help + declare version conflicts for your dist. + + http://metacpan.org/release/Dist-CheckConflicts diff --git a/package/perl-dist-checkconflicts/perl-dist-checkconflicts.hash b/package/perl-dist-checkconflicts/perl-dist-checkconflicts.hash new file mode 100644 index 00000000..15074e0a --- /dev/null +++ b/package/perl-dist-checkconflicts/perl-dist-checkconflicts.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 c8725a92b9169708b0f63036812070f2 Dist-CheckConflicts-0.11.tar.gz +sha256 ea844b9686c94d666d9d444321d764490b2cde2f985c4165b4c2c77665caedc4 Dist-CheckConflicts-0.11.tar.gz + +# computed by scancpan +sha256 b4e0637ed96008ddcbf7e0ddeb73967df3d0b4dc62a6b7fdb86eac37018cb12e LICENSE diff --git a/package/perl-dist-checkconflicts/perl-dist-checkconflicts.mk b/package/perl-dist-checkconflicts/perl-dist-checkconflicts.mk new file mode 100644 index 00000000..47bd19f6 --- /dev/null +++ b/package/perl-dist-checkconflicts/perl-dist-checkconflicts.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-dist-checkconflicts +# +################################################################################ + +PERL_DIST_CHECKCONFLICTS_VERSION = 0.11 +PERL_DIST_CHECKCONFLICTS_SOURCE = Dist-CheckConflicts-$(PERL_DIST_CHECKCONFLICTS_VERSION).tar.gz +PERL_DIST_CHECKCONFLICTS_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DO/DOY +PERL_DIST_CHECKCONFLICTS_LICENSE = Artistic or GPL-1.0+ +PERL_DIST_CHECKCONFLICTS_LICENSE_FILES = LICENSE +PERL_DIST_CHECKCONFLICTS_DISTNAME = Dist-CheckConflicts + +$(eval $(perl-package)) diff --git a/package/perl-encode-detect/Config.in b/package/perl-encode-detect/Config.in new file mode 100644 index 00000000..63ea4329 --- /dev/null +++ b/package/perl-encode-detect/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PERL_ENCODE_DETECT + bool "perl-encode-detect" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + help + An Encode::Encoding subclass that detects the encoding of + data. + + https://metacpan.org/release/Encode-Detect + +comment "perl-encode-detect needs a toolchain w/ C++, dynamic library" + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP diff --git a/package/perl-encode-detect/perl-encode-detect.hash b/package/perl-encode-detect/perl-encode-detect.hash new file mode 100644 index 00000000..a478f62d --- /dev/null +++ b/package/perl-encode-detect/perl-encode-detect.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 ee9faf55d7105c97b02b8ebe590819c7 Encode-Detect-1.01.tar.gz +sha256 834d893aa7db6ce3f158afbd0e432d6ed15a276e0940db0a74be13fd9c4bbbf1 Encode-Detect-1.01.tar.gz + +# computed by scancpan +sha256 53692a2ed6c6a2c6ec9b32dd0b820dfae91e0a1fcdf625ca9ed0bdf8705fcc4f LICENSE diff --git a/package/perl-encode-detect/perl-encode-detect.mk b/package/perl-encode-detect/perl-encode-detect.mk new file mode 100644 index 00000000..8e9ea779 --- /dev/null +++ b/package/perl-encode-detect/perl-encode-detect.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perl-encode-detect +# +################################################################################ + +PERL_ENCODE_DETECT_VERSION = 1.01 +PERL_ENCODE_DETECT_SOURCE = Encode-Detect-$(PERL_ENCODE_DETECT_VERSION).tar.gz +PERL_ENCODE_DETECT_SITE = $(BR2_CPAN_MIRROR)/authors/id/J/JG/JGMYERS +PERL_ENCODE_DETECT_DEPENDENCIES = host-perl-module-build +PERL_ENCODE_DETECT_LICENSE = MPL-1.1 +PERL_ENCODE_DETECT_LICENSE_FILES = LICENSE +PERL_ENCODE_DETECT_DISTNAME = Encode-Detect + +$(eval $(perl-package)) diff --git a/package/perl-encode-locale/Config.in b/package/perl-encode-locale/Config.in new file mode 100644 index 00000000..836e736c --- /dev/null +++ b/package/perl-encode-locale/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_ENCODE_LOCALE + bool "perl-encode-locale" + help + Determine the locale encoding. + + https://metacpan.org/release/Encode-Locale diff --git a/package/perl-encode-locale/perl-encode-locale.hash b/package/perl-encode-locale/perl-encode-locale.hash new file mode 100644 index 00000000..84427424 --- /dev/null +++ b/package/perl-encode-locale/perl-encode-locale.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 fcfdb8e4ee34bcf62aed429b4a23db27 Encode-Locale-1.05.tar.gz +sha256 176fa02771f542a4efb1dbc2a4c928e8f4391bf4078473bd6040d8f11adb0ec1 Encode-Locale-1.05.tar.gz + +# computed by scancpan +sha256 edfeacafbed5a0f2c4a2a3db3fb0274a7f210768d01c853c60b7feac841c83c8 README diff --git a/package/perl-encode-locale/perl-encode-locale.mk b/package/perl-encode-locale/perl-encode-locale.mk new file mode 100644 index 00000000..1e948c65 --- /dev/null +++ b/package/perl-encode-locale/perl-encode-locale.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-encode-locale +# +################################################################################ + +PERL_ENCODE_LOCALE_VERSION = 1.05 +PERL_ENCODE_LOCALE_SOURCE = Encode-Locale-$(PERL_ENCODE_LOCALE_VERSION).tar.gz +PERL_ENCODE_LOCALE_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GA/GAAS +PERL_ENCODE_LOCALE_LICENSE = Artistic or GPL-1.0+ +PERL_ENCODE_LOCALE_LICENSE_FILES = README +PERL_ENCODE_LOCALE_DISTNAME = Encode-Locale + +$(eval $(perl-package)) diff --git a/package/perl-exporter-tiny/Config.in b/package/perl-exporter-tiny/Config.in new file mode 100644 index 00000000..c3ac89ba --- /dev/null +++ b/package/perl-exporter-tiny/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_EXPORTER_TINY + bool "perl-exporter-tiny" + help + an exporter with the features of Sub::Exporter but only core + dependencies. + + https://exportertiny.github.io/ diff --git a/package/perl-exporter-tiny/perl-exporter-tiny.hash b/package/perl-exporter-tiny/perl-exporter-tiny.hash new file mode 100644 index 00000000..0e16f92b --- /dev/null +++ b/package/perl-exporter-tiny/perl-exporter-tiny.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 0545ee8f4edcb9dc5a87b21ed25edd74 Exporter-Tiny-1.006002.tar.gz +sha256 6f295e2cbffb1dbc15bdb9dadc341671c1e0cd2bdf2d312b17526273c322638d Exporter-Tiny-1.006002.tar.gz + +# computed by scancpan +sha256 1a2929dacaef239beca27a85f7f97b793628dfb22f07fdfb406cb6f3f0d22a6b LICENSE diff --git a/package/perl-exporter-tiny/perl-exporter-tiny.mk b/package/perl-exporter-tiny/perl-exporter-tiny.mk new file mode 100644 index 00000000..71507062 --- /dev/null +++ b/package/perl-exporter-tiny/perl-exporter-tiny.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-exporter-tiny +# +################################################################################ + +PERL_EXPORTER_TINY_VERSION = 1.006002 +PERL_EXPORTER_TINY_SOURCE = Exporter-Tiny-$(PERL_EXPORTER_TINY_VERSION).tar.gz +PERL_EXPORTER_TINY_SITE = $(BR2_CPAN_MIRROR)/authors/id/T/TO/TOBYINK +PERL_EXPORTER_TINY_LICENSE = Artistic or GPL-1.0+ +PERL_EXPORTER_TINY_LICENSE_FILES = LICENSE +PERL_EXPORTER_TINY_DISTNAME = Exporter-Tiny + +$(eval $(perl-package)) diff --git a/package/perl-extutils-config/perl-extutils-config.hash b/package/perl-extutils-config/perl-extutils-config.hash new file mode 100644 index 00000000..f4a4b18f --- /dev/null +++ b/package/perl-extutils-config/perl-extutils-config.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 565a7b09c7cac5907a25bbe2c959a717 ExtUtils-Config-0.008.tar.gz +sha256 ae5104f634650dce8a79b7ed13fb59d67a39c213a6776cfdaa3ee749e62f1a8c ExtUtils-Config-0.008.tar.gz + +# computed by scancpan +sha256 33b39fda54675d4d681764049e27b537cac12213aa6650667abea43662264ddc LICENSE diff --git a/package/perl-extutils-config/perl-extutils-config.mk b/package/perl-extutils-config/perl-extutils-config.mk new file mode 100644 index 00000000..f46ca3e6 --- /dev/null +++ b/package/perl-extutils-config/perl-extutils-config.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-extutils-config +# +################################################################################ + +PERL_EXTUTILS_CONFIG_VERSION = 0.008 +PERL_EXTUTILS_CONFIG_SOURCE = ExtUtils-Config-$(PERL_EXTUTILS_CONFIG_VERSION).tar.gz +PERL_EXTUTILS_CONFIG_SITE = $(BR2_CPAN_MIRROR)/authors/id/L/LE/LEONT +PERL_EXTUTILS_CONFIG_LICENSE = Artistic or GPL-1.0+ +PERL_EXTUTILS_CONFIG_LICENSE_FILES = LICENSE +PERL_EXTUTILS_CONFIG_DISTNAME = ExtUtils-Config + +$(eval $(host-perl-package)) diff --git a/package/perl-extutils-helpers/perl-extutils-helpers.hash b/package/perl-extutils-helpers/perl-extutils-helpers.hash new file mode 100644 index 00000000..3f80a96e --- /dev/null +++ b/package/perl-extutils-helpers/perl-extutils-helpers.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 83b00c1e401321c425ae5db6b2b2fd12 ExtUtils-Helpers-0.026.tar.gz +sha256 de901b6790a4557cf4ec908149e035783b125bf115eb9640feb1bc1c24c33416 ExtUtils-Helpers-0.026.tar.gz + +# computed by scancpan +sha256 e5530d0ebc8662df3a970644d867faf12760b1a95ca6e2bf1c5f9af410a418e0 LICENSE diff --git a/package/perl-extutils-helpers/perl-extutils-helpers.mk b/package/perl-extutils-helpers/perl-extutils-helpers.mk new file mode 100644 index 00000000..d3b14d88 --- /dev/null +++ b/package/perl-extutils-helpers/perl-extutils-helpers.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-extutils-helpers +# +################################################################################ + +PERL_EXTUTILS_HELPERS_VERSION = 0.026 +PERL_EXTUTILS_HELPERS_SOURCE = ExtUtils-Helpers-$(PERL_EXTUTILS_HELPERS_VERSION).tar.gz +PERL_EXTUTILS_HELPERS_SITE = $(BR2_CPAN_MIRROR)/authors/id/L/LE/LEONT +PERL_EXTUTILS_HELPERS_LICENSE = Artistic or GPL-1.0+ +PERL_EXTUTILS_HELPERS_LICENSE_FILES = LICENSE +PERL_EXTUTILS_HELPERS_DISTNAME = ExtUtils-Helpers + +$(eval $(host-perl-package)) diff --git a/package/perl-extutils-installpaths/perl-extutils-installpaths.hash b/package/perl-extutils-installpaths/perl-extutils-installpaths.hash new file mode 100644 index 00000000..19970604 --- /dev/null +++ b/package/perl-extutils-installpaths/perl-extutils-installpaths.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 9a8d66aab1ffec98ea260faf03ac612b ExtUtils-InstallPaths-0.012.tar.gz +sha256 84735e3037bab1fdffa3c2508567ad412a785c91599db3c12593a50a1dd434ed ExtUtils-InstallPaths-0.012.tar.gz + +# computed by scancpan +sha256 b95d38ac031587625625d92fbd2ee1d5df0d02606057d680e7dcf3598fe629f9 LICENSE diff --git a/package/perl-extutils-installpaths/perl-extutils-installpaths.mk b/package/perl-extutils-installpaths/perl-extutils-installpaths.mk new file mode 100644 index 00000000..e90e130c --- /dev/null +++ b/package/perl-extutils-installpaths/perl-extutils-installpaths.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perl-extutils-installpaths +# +################################################################################ + +PERL_EXTUTILS_INSTALLPATHS_VERSION = 0.012 +PERL_EXTUTILS_INSTALLPATHS_SOURCE = ExtUtils-InstallPaths-$(PERL_EXTUTILS_INSTALLPATHS_VERSION).tar.gz +PERL_EXTUTILS_INSTALLPATHS_SITE = $(BR2_CPAN_MIRROR)/authors/id/L/LE/LEONT +HOST_PERL_EXTUTILS_INSTALLPATHS_DEPENDENCIES = host-perl-extutils-config +PERL_EXTUTILS_INSTALLPATHS_LICENSE = Artistic or GPL-1.0+ +PERL_EXTUTILS_INSTALLPATHS_LICENSE_FILES = LICENSE +PERL_EXTUTILS_INSTALLPATHS_DISTNAME = ExtUtils-InstallPaths + +$(eval $(host-perl-package)) diff --git a/package/perl-extutils-pkgconfig/perl-extutils-pkgconfig.hash b/package/perl-extutils-pkgconfig/perl-extutils-pkgconfig.hash new file mode 100644 index 00000000..7028b96b --- /dev/null +++ b/package/perl-extutils-pkgconfig/perl-extutils-pkgconfig.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 b86318f2b6ac6af3ee985299e1e38fe5 ExtUtils-PkgConfig-1.16.tar.gz +sha256 bbeaced995d7d8d10cfc51a3a5a66da41ceb2bc04fedcab50e10e6300e801c6e ExtUtils-PkgConfig-1.16.tar.gz + +# computed by scancpan +sha256 1ca66d6d9d2e14426825889848f0b5b4d4e153afcd74b8f42a1f2937c3a9973d README diff --git a/package/perl-extutils-pkgconfig/perl-extutils-pkgconfig.mk b/package/perl-extutils-pkgconfig/perl-extutils-pkgconfig.mk new file mode 100644 index 00000000..cb11e9f5 --- /dev/null +++ b/package/perl-extutils-pkgconfig/perl-extutils-pkgconfig.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# perl-extutils-pkgconfig +# +################################################################################ + +PERL_EXTUTILS_PKGCONFIG_VERSION = 1.16 +PERL_EXTUTILS_PKGCONFIG_SOURCE = ExtUtils-PkgConfig-$(PERL_EXTUTILS_PKGCONFIG_VERSION).tar.gz +PERL_EXTUTILS_PKGCONFIG_SITE = $(BR2_CPAN_MIRROR)/authors/id/X/XA/XAOC +PERL_EXTUTILS_PKGCONFIG_LICENSE = LGPL-2.1 +PERL_EXTUTILS_PKGCONFIG_LICENSE_FILES = README +PERL_EXTUTILS_PKGCONFIG_DISTNAME = ExtUtils-PkgConfig + +HOST_PERL_EXTUTILS_PKGCONFIG_DEPENDENCIES = host-pkgconf + +HOST_PERL_EXTUTILS_PKGCONFIG_CONF_ENV = PATH=$(BR_PATH) + +$(eval $(host-perl-package)) diff --git a/package/perl-file-listing/Config.in b/package/perl-file-listing/Config.in new file mode 100644 index 00000000..46106185 --- /dev/null +++ b/package/perl-file-listing/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_FILE_LISTING + bool "perl-file-listing" + select BR2_PACKAGE_PERL_HTTP_DATE # runtime + help + Parse directory listing. + + https://metacpan.org/release/File-Listing diff --git a/package/perl-file-listing/perl-file-listing.hash b/package/perl-file-listing/perl-file-listing.hash new file mode 100644 index 00000000..bd2ca473 --- /dev/null +++ b/package/perl-file-listing/perl-file-listing.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 d4fc8b0c86633d1fa5bf75323720eadc File-Listing-6.16.tar.gz +sha256 189b3a13fc0a1ba412b9d9ec5901e9e5e444cc746b9f0156d4399370d33655c6 File-Listing-6.16.tar.gz + +# computed by scancpan +sha256 330a553de82a111970d17fdf302bfe4af055f61bfe83d1c5617d5c3f5525a226 LICENSE diff --git a/package/perl-file-listing/perl-file-listing.mk b/package/perl-file-listing/perl-file-listing.mk new file mode 100644 index 00000000..583de605 --- /dev/null +++ b/package/perl-file-listing/perl-file-listing.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-file-listing +# +################################################################################ + +PERL_FILE_LISTING_VERSION = 6.16 +PERL_FILE_LISTING_SOURCE = File-Listing-$(PERL_FILE_LISTING_VERSION).tar.gz +PERL_FILE_LISTING_SITE = $(BR2_CPAN_MIRROR)/authors/id/P/PL/PLICEASE +PERL_FILE_LISTING_LICENSE = Artistic or GPL-1.0+ +PERL_FILE_LISTING_LICENSE_FILES = LICENSE +PERL_FILE_LISTING_DISTNAME = File-Listing + +$(eval $(perl-package)) diff --git a/package/perl-file-sharedir-install/perl-file-sharedir-install.hash b/package/perl-file-sharedir-install/perl-file-sharedir-install.hash new file mode 100644 index 00000000..bfc06ab2 --- /dev/null +++ b/package/perl-file-sharedir-install/perl-file-sharedir-install.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 bac4d924f3d863b00648ab56ec0dcbdc File-ShareDir-Install-0.14.tar.gz +sha256 8f9533b198f2d4a9a5288cbc7d224f7679ad05a7a8573745599789428bc5aea0 File-ShareDir-Install-0.14.tar.gz + +# computed by scancpan +sha256 6b5ade128fd47c452beec6dc31b3386482379fafb88f7f1962c7355db322d2ac LICENSE diff --git a/package/perl-file-sharedir-install/perl-file-sharedir-install.mk b/package/perl-file-sharedir-install/perl-file-sharedir-install.mk new file mode 100644 index 00000000..4f152e1b --- /dev/null +++ b/package/perl-file-sharedir-install/perl-file-sharedir-install.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-file-sharedir-install +# +################################################################################ + +PERL_FILE_SHAREDIR_INSTALL_VERSION = 0.14 +PERL_FILE_SHAREDIR_INSTALL_SOURCE = File-ShareDir-Install-$(PERL_FILE_SHAREDIR_INSTALL_VERSION).tar.gz +PERL_FILE_SHAREDIR_INSTALL_SITE = $(BR2_CPAN_MIRROR)/authors/id/E/ET/ETHER +PERL_FILE_SHAREDIR_INSTALL_LICENSE = Artistic or GPL-1.0+ +PERL_FILE_SHAREDIR_INSTALL_LICENSE_FILES = LICENSE +PERL_FILE_SHAREDIR_INSTALL_DISTNAME = File-ShareDir-Install + +$(eval $(host-perl-package)) diff --git a/package/perl-file-sharedir/Config.in b/package/perl-file-sharedir/Config.in new file mode 100644 index 00000000..169569f7 --- /dev/null +++ b/package/perl-file-sharedir/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_FILE_SHAREDIR + bool "perl-file-sharedir" + select BR2_PACKAGE_PERL_CLASS_INSPECTOR # runtime + help + Locate per-dist and per-module shared files. + + https://metacpan.org/release/File-ShareDir diff --git a/package/perl-file-sharedir/perl-file-sharedir.hash b/package/perl-file-sharedir/perl-file-sharedir.hash new file mode 100644 index 00000000..413678d6 --- /dev/null +++ b/package/perl-file-sharedir/perl-file-sharedir.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 0084f730f4e3d4d89703d92b3ea82f54 File-ShareDir-1.118.tar.gz +sha256 3bb2a20ba35df958dc0a4f2306fc05d903d8b8c4de3c8beefce17739d281c958 File-ShareDir-1.118.tar.gz + +# computed by scancpan +sha256 db57983ce0a3bce54900b5a3a3a69e9a593e7b07d0f58dd9f87ac9b016ff4a6b LICENSE diff --git a/package/perl-file-sharedir/perl-file-sharedir.mk b/package/perl-file-sharedir/perl-file-sharedir.mk new file mode 100644 index 00000000..0121b563 --- /dev/null +++ b/package/perl-file-sharedir/perl-file-sharedir.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perl-file-sharedir +# +################################################################################ + +PERL_FILE_SHAREDIR_VERSION = 1.118 +PERL_FILE_SHAREDIR_SOURCE = File-ShareDir-$(PERL_FILE_SHAREDIR_VERSION).tar.gz +PERL_FILE_SHAREDIR_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RE/REHSACK +PERL_FILE_SHAREDIR_DEPENDENCIES = host-perl-file-sharedir-install +PERL_FILE_SHAREDIR_LICENSE = Artistic or GPL-1.0+ +PERL_FILE_SHAREDIR_LICENSE_FILES = LICENSE +PERL_FILE_SHAREDIR_DISTNAME = File-ShareDir + +$(eval $(perl-package)) diff --git a/package/perl-file-slurp/Config.in b/package/perl-file-slurp/Config.in new file mode 100644 index 00000000..33b6d337 --- /dev/null +++ b/package/perl-file-slurp/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_FILE_SLURP + bool "perl-file-slurp" + help + Simple and Efficient Reading/Writing/Modifying of Complete + Files. + + https://metacpan.org/release/File-Slurp diff --git a/package/perl-file-slurp/perl-file-slurp.hash b/package/perl-file-slurp/perl-file-slurp.hash new file mode 100644 index 00000000..f3cc579f --- /dev/null +++ b/package/perl-file-slurp/perl-file-slurp.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 a10ddfcbe153fc8d0076936ee83b98ed File-Slurp-9999.32.tar.gz +sha256 4c3c21992a9d42be3a79dd74a3c83d27d38057269d65509a2f555ea0fb2bc5b0 File-Slurp-9999.32.tar.gz + +# computed by scancpan +sha256 d1be945657536c93caf481b9f3c73fd1952ef66388c664e29021ab91d4fe47e8 README.md diff --git a/package/perl-file-slurp/perl-file-slurp.mk b/package/perl-file-slurp/perl-file-slurp.mk new file mode 100644 index 00000000..0d4ab940 --- /dev/null +++ b/package/perl-file-slurp/perl-file-slurp.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-file-slurp +# +################################################################################ + +PERL_FILE_SLURP_VERSION = 9999.32 +PERL_FILE_SLURP_SOURCE = File-Slurp-$(PERL_FILE_SLURP_VERSION).tar.gz +PERL_FILE_SLURP_SITE = $(BR2_CPAN_MIRROR)/authors/id/C/CA/CAPOEIRAB +PERL_FILE_SLURP_LICENSE = Artistic or GPL-1.0+ +PERL_FILE_SLURP_LICENSE_FILES = README.md +PERL_FILE_SLURP_DISTNAME = File-Slurp + +$(eval $(perl-package)) diff --git a/package/perl-file-util/Config.in b/package/perl-file-util/Config.in new file mode 100644 index 00000000..ddd155be --- /dev/null +++ b/package/perl-file-util/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_FILE_UTIL + bool "perl-file-util" + help + Easy, versatile, portable file handling. + + https://github.com/tommybutler/file-util/wiki diff --git a/package/perl-file-util/perl-file-util.hash b/package/perl-file-util/perl-file-util.hash new file mode 100644 index 00000000..7e529e03 --- /dev/null +++ b/package/perl-file-util/perl-file-util.hash @@ -0,0 +1,7 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 093fe77c4658f98375c7f6cc68694948 File-Util-4.201720.tar.gz +sha256 d4491021850d5c5cbd702c7e4744858079841d2fa93f1c2d09ddc9a7863608df File-Util-4.201720.tar.gz + +# computed by scancpan +sha256 5f3732812570654ba911e45ec4e5f7353f4b63747ebfc506c543e8fb1ccf797f COPYING +sha256 996b77ca668f16a443ed14758fce492bddd9f55fe831ee8353274c89191b8544 LICENSE diff --git a/package/perl-file-util/perl-file-util.mk b/package/perl-file-util/perl-file-util.mk new file mode 100644 index 00000000..4348b0e9 --- /dev/null +++ b/package/perl-file-util/perl-file-util.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# perl-file-util +# +################################################################################ + +PERL_FILE_UTIL_VERSION = 4.201720 +PERL_FILE_UTIL_SOURCE = File-Util-$(PERL_FILE_UTIL_VERSION).tar.gz +PERL_FILE_UTIL_SITE = $(BR2_CPAN_MIRROR)/authors/id/T/TO/TOMMY +PERL_FILE_UTIL_DEPENDENCIES = host-perl-module-build +PERL_FILE_UTIL_LICENSE = Artistic or GPL-1.0+ +PERL_FILE_UTIL_LICENSE_FILES = COPYING LICENSE +PERL_FILE_UTIL_DISTNAME = File-Util +HOST_PERL_FILE_UTIL_DEPENDENCIES = host-perl-module-build + +$(eval $(perl-package)) +$(eval $(host-perl-package)) diff --git a/package/perl-filesys-notify-simple/Config.in b/package/perl-filesys-notify-simple/Config.in new file mode 100644 index 00000000..bff3cc61 --- /dev/null +++ b/package/perl-filesys-notify-simple/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_FILESYS_NOTIFY_SIMPLE + bool "perl-filesys-notify-simple" + help + Simple and dumb file system watcher. + + https://github.com/miyagawa/Filesys-Notify-Simple diff --git a/package/perl-filesys-notify-simple/perl-filesys-notify-simple.hash b/package/perl-filesys-notify-simple/perl-filesys-notify-simple.hash new file mode 100644 index 00000000..eb4a53bf --- /dev/null +++ b/package/perl-filesys-notify-simple/perl-filesys-notify-simple.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 4a3ca3098b2455346fe24a66c94d2151 Filesys-Notify-Simple-0.14.tar.gz +sha256 1fda712d4ba5e1868159ed35f6f8efbfae9d435d6376f5606d533bcb080555a4 Filesys-Notify-Simple-0.14.tar.gz + +# computed by scancpan +sha256 9a5cceb9fdb0064b57eeca0e7ad2af1e57eff51320a13083fc22930d2a190ed7 LICENSE diff --git a/package/perl-filesys-notify-simple/perl-filesys-notify-simple.mk b/package/perl-filesys-notify-simple/perl-filesys-notify-simple.mk new file mode 100644 index 00000000..62bc80c9 --- /dev/null +++ b/package/perl-filesys-notify-simple/perl-filesys-notify-simple.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-filesys-notify-simple +# +################################################################################ + +PERL_FILESYS_NOTIFY_SIMPLE_VERSION = 0.14 +PERL_FILESYS_NOTIFY_SIMPLE_SOURCE = Filesys-Notify-Simple-$(PERL_FILESYS_NOTIFY_SIMPLE_VERSION).tar.gz +PERL_FILESYS_NOTIFY_SIMPLE_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MI/MIYAGAWA +PERL_FILESYS_NOTIFY_SIMPLE_LICENSE = Artistic or GPL-1.0+ +PERL_FILESYS_NOTIFY_SIMPLE_LICENSE_FILES = LICENSE +PERL_FILESYS_NOTIFY_SIMPLE_DISTNAME = Filesys-Notify-Simple + +$(eval $(perl-package)) diff --git a/package/perl-gd/Config.in b/package/perl-gd/Config.in new file mode 100644 index 00000000..bff6244d --- /dev/null +++ b/package/perl-gd/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PERL_GD + bool "perl-gd" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_GD + help + Perl interface to the libgd graphics library. + + https://metacpan.org/release/GD + +comment "perl-gd needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-gd/perl-gd.hash b/package/perl-gd/perl-gd.hash new file mode 100644 index 00000000..fd9321be --- /dev/null +++ b/package/perl-gd/perl-gd.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 da3f969367ea2e6d217ec05d3b98bc6f GD-2.77.tar.gz +sha256 b56c88b8ef3be016ce29bb62dd1f1b6f6b5fbcaa57fea59e9468af6901016fb5 GD-2.77.tar.gz + +# computed by scancpan +sha256 1e2250289d6df4ba1c24f7550982d7ffaff2c97cd02e847659406e1afd28e83f LICENSE diff --git a/package/perl-gd/perl-gd.mk b/package/perl-gd/perl-gd.mk new file mode 100644 index 00000000..17c24bc9 --- /dev/null +++ b/package/perl-gd/perl-gd.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# perl-gd +# +################################################################################ + +PERL_GD_VERSION = 2.77 +PERL_GD_SOURCE = GD-$(PERL_GD_VERSION).tar.gz +PERL_GD_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RU/RURBAN +PERL_GD_DEPENDENCIES = host-perl-extutils-pkgconfig zlib gd +PERL_GD_LICENSE = Artistic or GPL-1.0+ +PERL_GD_LICENSE_FILES = LICENSE +PERL_GD_DISTNAME = GD + +PERL_GD_CONF_ENV = \ + PATH=$(BR_PATH) \ + PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig" + +ifeq ($(BR2_PACKAGE_FONTCONFIG),y) +PERL_GD_DEPENDENCIES += fontconfig +PERL_GD_OPTIONS += FONTCONFIG +PERL_GD_CONF_OPTS += -lib_fontconfig_path=$(STAGING_DIR)/usr +endif + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +PERL_GD_DEPENDENCIES += freetype +PERL_GD_OPTIONS += FT +PERL_GD_CONF_OPTS += -lib_ft_path=$(STAGING_DIR)/usr +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +PERL_GD_DEPENDENCIES += jpeg +PERL_GD_OPTIONS += JPEG +PERL_GD_CONF_OPTS += -lib_jpeg_path=$(STAGING_DIR)/usr +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +PERL_GD_DEPENDENCIES += libpng +PERL_GD_OPTIONS += PNG +PERL_GD_CONF_OPTS += -lib_png_path=$(STAGING_DIR)/usr +endif + +ifeq ($(BR2_PACKAGE_WEBP),y) +PERL_GD_DEPENDENCIES += webp +PERL_GD_OPTIONS += WEBP +PERL_GD_CONF_OPTS += -lib_webp_path=$(STAGING_DIR)/usr +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXPM),y) +PERL_GD_DEPENDENCIES += xlib_libXpm +PERL_GD_OPTIONS += XPM +PERL_GD_CONF_OPTS += -lib_xpm_path=$(STAGING_DIR)/usr +endif + +PERL_GD_CONF_OPTS += \ + -lib_gd_path=$(STAGING_DIR)/usr \ + -lib_zlib_path=$(STAGING_DIR)/usr \ + -options=$(subst $(space),$(comma),$(PERL_GD_OPTIONS)) + +$(eval $(perl-package)) diff --git a/package/perl-gdgraph/Config.in b/package/perl-gdgraph/Config.in new file mode 100644 index 00000000..d8885fe0 --- /dev/null +++ b/package/perl-gdgraph/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PERL_GDGRAPH + bool "perl-gdgraph" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_PERL_GD # runtime + select BR2_PACKAGE_PERL_GDTEXTUTIL # runtime + help + Produces charts with GD. + + https://metacpan.org/release/GDGraph + +comment "perl-gdgraph needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-gdgraph/perl-gdgraph.hash b/package/perl-gdgraph/perl-gdgraph.hash new file mode 100644 index 00000000..b2ad4ecc --- /dev/null +++ b/package/perl-gdgraph/perl-gdgraph.hash @@ -0,0 +1,7 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 38c6a188519e6272e9b2b722b315c3d8 GDGraph-1.54.tar.gz +sha256 b96f5c10b656c17d16ab65a1777c908297b028d3b6815f6d54b2337f006bfa4f GDGraph-1.54.tar.gz + +# Hash for license files +sha256 710484e3a1196664bbe8a5ad5d53c528e01226eb20e2885a4e1131eb6c6565cd Dustismo.LICENSE +sha256 f44630ad9101e40a101d906a07908c975a9b0742273cfb0c00a51d73afb53e7d README diff --git a/package/perl-gdgraph/perl-gdgraph.mk b/package/perl-gdgraph/perl-gdgraph.mk new file mode 100644 index 00000000..286902a6 --- /dev/null +++ b/package/perl-gdgraph/perl-gdgraph.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-gdgraph +# +################################################################################ + +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_LICENSE = Artistic or GPL-1.0+ (perl module), GPL-2.0+ (font) +PERL_GDGRAPH_LICENSE_FILES = Dustismo.LICENSE README +PERL_GDGRAPH_DISTNAME = GDGraph + +$(eval $(perl-package)) diff --git a/package/perl-gdtextutil/Config.in b/package/perl-gdtextutil/Config.in new file mode 100644 index 00000000..cff328e0 --- /dev/null +++ b/package/perl-gdtextutil/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_GDTEXTUTIL + bool "perl-gdtextutil" + help + Text utilities for use with GD. + + https://metacpan.org/release/GDTextUtil diff --git a/package/perl-gdtextutil/perl-gdtextutil.hash b/package/perl-gdtextutil/perl-gdtextutil.hash new file mode 100644 index 00000000..7f336038 --- /dev/null +++ b/package/perl-gdtextutil/perl-gdtextutil.hash @@ -0,0 +1,7 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 941ad06eadc86b47f3a32da405665c41 GDTextUtil-0.86.tar.gz +sha256 886ecbf85cfe94f4135ee5689c4847a9ae783ecb99e6759e12c734f2dd6116bc GDTextUtil-0.86.tar.gz + +# Hash for license files +sha256 710484e3a1196664bbe8a5ad5d53c528e01226eb20e2885a4e1131eb6c6565cd Dustismo.LICENSE +sha256 93ca7dd7f372c79e8ec1f849f2a418a67d195e4027c1b3e3dd8444fb30f3e97c README diff --git a/package/perl-gdtextutil/perl-gdtextutil.mk b/package/perl-gdtextutil/perl-gdtextutil.mk new file mode 100644 index 00000000..f91d9e9e --- /dev/null +++ b/package/perl-gdtextutil/perl-gdtextutil.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-gdtextutil +# +################################################################################ + +PERL_GDTEXTUTIL_VERSION = 0.86 +PERL_GDTEXTUTIL_SOURCE = GDTextUtil-$(PERL_GDTEXTUTIL_VERSION).tar.gz +PERL_GDTEXTUTIL_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MV/MVERB +PERL_GDTEXTUTIL_LICENSE = Artistic or GPL-1.0+ (perl module), GPL-2.0+ (font) +PERL_GDTEXTUTIL_LICENSE_FILES = Dustismo.LICENSE README +PERL_GDTEXTUTIL_DISTNAME = GDTextUtil + +$(eval $(perl-package)) diff --git a/package/perl-hash-multivalue/Config.in b/package/perl-hash-multivalue/Config.in new file mode 100644 index 00000000..8621983d --- /dev/null +++ b/package/perl-hash-multivalue/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_HASH_MULTIVALUE + bool "perl-hash-multivalue" + help + Store multiple values per key. + + https://github.com/miyagawa/Hash-MultiValue diff --git a/package/perl-hash-multivalue/perl-hash-multivalue.hash b/package/perl-hash-multivalue/perl-hash-multivalue.hash new file mode 100644 index 00000000..a5922507 --- /dev/null +++ b/package/perl-hash-multivalue/perl-hash-multivalue.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 508015312eb08cd2bcea987c4efbb93d Hash-MultiValue-0.16.tar.gz +sha256 66181df7aa68e2786faf6895c88b18b95c800a8e4e6fb4c07fd176410a3c73f4 Hash-MultiValue-0.16.tar.gz + +# computed by scancpan +sha256 af32512e13f6722dab770b989c57556a5e3d29a49b22b8ad5668064db8592401 LICENSE diff --git a/package/perl-hash-multivalue/perl-hash-multivalue.mk b/package/perl-hash-multivalue/perl-hash-multivalue.mk new file mode 100644 index 00000000..dcbfe843 --- /dev/null +++ b/package/perl-hash-multivalue/perl-hash-multivalue.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-hash-multivalue +# +################################################################################ + +PERL_HASH_MULTIVALUE_VERSION = 0.16 +PERL_HASH_MULTIVALUE_SOURCE = Hash-MultiValue-$(PERL_HASH_MULTIVALUE_VERSION).tar.gz +PERL_HASH_MULTIVALUE_SITE = $(BR2_CPAN_MIRROR)/authors/id/A/AR/ARISTOTLE +PERL_HASH_MULTIVALUE_LICENSE = Artistic or GPL-1.0+ +PERL_HASH_MULTIVALUE_LICENSE_FILES = LICENSE +PERL_HASH_MULTIVALUE_DISTNAME = Hash-MultiValue + +$(eval $(perl-package)) diff --git a/package/perl-html-parser/Config.in b/package/perl-html-parser/Config.in new file mode 100644 index 00000000..191d1b3b --- /dev/null +++ b/package/perl-html-parser/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PERL_HTML_PARSER + bool "perl-html-parser" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_PERL_HTML_TAGSET # runtime + select BR2_PACKAGE_PERL_HTTP_MESSAGE # runtime + select BR2_PACKAGE_PERL_URI # runtime + help + HTML parser class. + + https://github.com/libwww-perl/HTML-Parser + +comment "perl-html-parser needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-html-parser/perl-html-parser.hash b/package/perl-html-parser/perl-html-parser.hash new file mode 100644 index 00000000..fbdffa03 --- /dev/null +++ b/package/perl-html-parser/perl-html-parser.hash @@ -0,0 +1,5 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +sha256 c0910a5c8f92f8817edd06ccfd224ba1c2ebe8c10f551f032587a1fc83d62ff2 HTML-Parser-3.81.tar.gz + +# computed by scancpan +sha256 9081922eb873ec1809c20672a7385a65f3c6b1163166bf69b2bbe986fb5b0159 LICENSE diff --git a/package/perl-html-parser/perl-html-parser.mk b/package/perl-html-parser/perl-html-parser.mk new file mode 100644 index 00000000..50efaa27 --- /dev/null +++ b/package/perl-html-parser/perl-html-parser.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-html-parser +# +################################################################################ + +PERL_HTML_PARSER_VERSION = 3.81 +PERL_HTML_PARSER_SOURCE = HTML-Parser-$(PERL_HTML_PARSER_VERSION).tar.gz +PERL_HTML_PARSER_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS +PERL_HTML_PARSER_LICENSE = Artistic or GPL-1.0+ +PERL_HTML_PARSER_LICENSE_FILES = LICENSE +PERL_HTML_PARSER_DISTNAME = HTML-Parser + +$(eval $(perl-package)) diff --git a/package/perl-html-tagset/Config.in b/package/perl-html-tagset/Config.in new file mode 100644 index 00000000..4956198f --- /dev/null +++ b/package/perl-html-tagset/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_HTML_TAGSET + bool "perl-html-tagset" + help + data tables useful in parsing HTML. + + https://metacpan.org/release/HTML-Tagset diff --git a/package/perl-html-tagset/perl-html-tagset.hash b/package/perl-html-tagset/perl-html-tagset.hash new file mode 100644 index 00000000..648f75f6 --- /dev/null +++ b/package/perl-html-tagset/perl-html-tagset.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 d2bfa18fe1904df7f683e96611e87437 HTML-Tagset-3.20.tar.gz +sha256 adb17dac9e36cd011f5243881c9739417fd102fce760f8de4e9be4c7131108e2 HTML-Tagset-3.20.tar.gz + +# computed by scancpan +sha256 275cc182d78ac2db6856442c5d334c925350fb56fe83ee3577f5850317423419 README diff --git a/package/perl-html-tagset/perl-html-tagset.mk b/package/perl-html-tagset/perl-html-tagset.mk new file mode 100644 index 00000000..c6b5f691 --- /dev/null +++ b/package/perl-html-tagset/perl-html-tagset.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-html-tagset +# +################################################################################ + +PERL_HTML_TAGSET_VERSION = 3.20 +PERL_HTML_TAGSET_SOURCE = HTML-Tagset-$(PERL_HTML_TAGSET_VERSION).tar.gz +PERL_HTML_TAGSET_SITE = $(BR2_CPAN_MIRROR)/authors/id/P/PE/PETDANCE +PERL_HTML_TAGSET_LICENSE = Artistic or GPL-1.0+ +PERL_HTML_TAGSET_LICENSE_FILES = README +PERL_HTML_TAGSET_DISTNAME = HTML-Tagset + +$(eval $(perl-package)) diff --git a/package/perl-http-cookies/Config.in b/package/perl-http-cookies/Config.in new file mode 100644 index 00000000..147d9521 --- /dev/null +++ b/package/perl-http-cookies/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PERL_HTTP_COOKIES + bool "perl-http-cookies" + depends on !BR2_STATIC_LIBS # perl-http-message -> perl-clone + select BR2_PACKAGE_PERL_HTTP_DATE # runtime + select BR2_PACKAGE_PERL_HTTP_MESSAGE # runtime + help + HTTP cookie jars. + + https://github.com/libwww-perl/HTTP-Cookies + +comment "perl-http-cookies needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-http-cookies/perl-http-cookies.hash b/package/perl-http-cookies/perl-http-cookies.hash new file mode 100644 index 00000000..15d9e7a8 --- /dev/null +++ b/package/perl-http-cookies/perl-http-cookies.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 b4d7804231b1dfd10999d42283e0cf06 HTTP-Cookies-6.10.tar.gz +sha256 e36f36633c5ce6b5e4b876ffcf74787cc5efe0736dd7f487bdd73c14f0bd7007 HTTP-Cookies-6.10.tar.gz + +# computed by scancpan +sha256 82902ce20c8ed71d7f4e7a6a5b2b26e43a7e2e90c78098fb49aa49e03ac808e0 LICENSE diff --git a/package/perl-http-cookies/perl-http-cookies.mk b/package/perl-http-cookies/perl-http-cookies.mk new file mode 100644 index 00000000..745fd10a --- /dev/null +++ b/package/perl-http-cookies/perl-http-cookies.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-http-cookies +# +################################################################################ + +PERL_HTTP_COOKIES_VERSION = 6.10 +PERL_HTTP_COOKIES_SOURCE = HTTP-Cookies-$(PERL_HTTP_COOKIES_VERSION).tar.gz +PERL_HTTP_COOKIES_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS +PERL_HTTP_COOKIES_LICENSE = Artistic or GPL-1.0+ +PERL_HTTP_COOKIES_LICENSE_FILES = LICENSE +PERL_HTTP_COOKIES_DISTNAME = HTTP-Cookies + +$(eval $(perl-package)) diff --git a/package/perl-http-daemon/Config.in b/package/perl-http-daemon/Config.in new file mode 100644 index 00000000..4d6277a7 --- /dev/null +++ b/package/perl-http-daemon/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PERL_HTTP_DAEMON + bool "perl-http-daemon" + depends on !BR2_STATIC_LIBS # perl-http-message -> perl-clone + select BR2_PACKAGE_PERL_HTTP_DATE # runtime + select BR2_PACKAGE_PERL_HTTP_MESSAGE # runtime + select BR2_PACKAGE_PERL_LWP_MEDIATYPES # runtime + help + A simple http server class. + + https://github.com/libwww-perl/HTTP-Daemon + +comment "perl-http-daemon needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-http-daemon/perl-http-daemon.hash b/package/perl-http-daemon/perl-http-daemon.hash new file mode 100644 index 00000000..b1d92ad8 --- /dev/null +++ b/package/perl-http-daemon/perl-http-daemon.hash @@ -0,0 +1,5 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +sha256 b38d092725e6fa4e0c4dc2a47e157070491bafa0dbe16c78a358e806aa7e173d HTTP-Daemon-6.16.tar.gz + +# computed by scancpan +sha256 311f168ba9a7819ffab4fea19858f9e880737baf6d112929d11530205035a4cc LICENCE diff --git a/package/perl-http-daemon/perl-http-daemon.mk b/package/perl-http-daemon/perl-http-daemon.mk new file mode 100644 index 00000000..c017c4e0 --- /dev/null +++ b/package/perl-http-daemon/perl-http-daemon.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perl-http-daemon +# +################################################################################ + +PERL_HTTP_DAEMON_VERSION = 6.16 +PERL_HTTP_DAEMON_SOURCE = HTTP-Daemon-$(PERL_HTTP_DAEMON_VERSION).tar.gz +PERL_HTTP_DAEMON_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS +PERL_HTTP_DAEMON_DEPENDENCIES = host-perl-module-build-tiny +PERL_HTTP_DAEMON_LICENSE = Artistic or GPL-1.0+ +PERL_HTTP_DAEMON_LICENSE_FILES = LICENCE +PERL_HTTP_DAEMON_DISTNAME = HTTP-Daemon + +$(eval $(perl-package)) diff --git a/package/perl-http-date/Config.in b/package/perl-http-date/Config.in new file mode 100644 index 00000000..c5151f2e --- /dev/null +++ b/package/perl-http-date/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_HTTP_DATE + bool "perl-http-date" + select BR2_PACKAGE_PERL_TIMEDATE # runtime + help + HTTP::Date - date conversion routines. + + https://github.com/libwww-perl/HTTP-Date diff --git a/package/perl-http-date/perl-http-date.hash b/package/perl-http-date/perl-http-date.hash new file mode 100644 index 00000000..a6f77018 --- /dev/null +++ b/package/perl-http-date/perl-http-date.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 60462359bfeb1e6d14602508cfd07885 HTTP-Date-6.06.tar.gz +sha256 7b685191c6acc3e773d1fc02c95ee1f9fae94f77783175f5e78c181cc92d2b52 HTTP-Date-6.06.tar.gz + +# computed by scancpan +sha256 6186a79a305a0e62c5087f9737b4f66fa5793fa1b396da0126e3c8722c460245 LICENSE diff --git a/package/perl-http-date/perl-http-date.mk b/package/perl-http-date/perl-http-date.mk new file mode 100644 index 00000000..2f1aeb7d --- /dev/null +++ b/package/perl-http-date/perl-http-date.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-http-date +# +################################################################################ + +PERL_HTTP_DATE_VERSION = 6.06 +PERL_HTTP_DATE_SOURCE = HTTP-Date-$(PERL_HTTP_DATE_VERSION).tar.gz +PERL_HTTP_DATE_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS +PERL_HTTP_DATE_LICENSE = Artistic-1.0-Perl or GPL-1.0+ +PERL_HTTP_DATE_LICENSE_FILES = LICENSE +PERL_HTTP_DATE_DISTNAME = HTTP-Date + +$(eval $(perl-package)) diff --git a/package/perl-http-entity-parser/Config.in b/package/perl-http-entity-parser/Config.in new file mode 100644 index 00000000..445366b7 --- /dev/null +++ b/package/perl-http-entity-parser/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PERL_HTTP_ENTITY_PARSER + bool "perl-http-entity-parser" + select BR2_PACKAGE_PERL_HTTP_MULTIPARTPARSER # runtime + select BR2_PACKAGE_PERL_HASH_MULTIVALUE # runtime + select BR2_PACKAGE_PERL_JSON_MAYBEXS # runtime + select BR2_PACKAGE_PERL_STREAM_BUFFERED # runtime + select BR2_PACKAGE_PERL_WWW_FORM_URLENCODED # runtime + help + PSGI compliant HTTP Entity Parser. + + https://github.com/kazeburo/HTTP-Entity-Parser diff --git a/package/perl-http-entity-parser/perl-http-entity-parser.hash b/package/perl-http-entity-parser/perl-http-entity-parser.hash new file mode 100644 index 00000000..69d5f6e9 --- /dev/null +++ b/package/perl-http-entity-parser/perl-http-entity-parser.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 09663f9577975587e832e28ba5f5f8af HTTP-Entity-Parser-0.25.tar.gz +sha256 3a8cd0d8cba3d17cd8c04ee82d7341dfaa247dbdd94a49eb94b53f69e483ec3a HTTP-Entity-Parser-0.25.tar.gz + +# computed by scancpan +sha256 79c2a066104e71602785fd815c5aea6f7db78c19451d68521380083f9c2a8805 LICENSE diff --git a/package/perl-http-entity-parser/perl-http-entity-parser.mk b/package/perl-http-entity-parser/perl-http-entity-parser.mk new file mode 100644 index 00000000..2304955b --- /dev/null +++ b/package/perl-http-entity-parser/perl-http-entity-parser.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perl-http-entity-parser +# +################################################################################ + +PERL_HTTP_ENTITY_PARSER_VERSION = 0.25 +PERL_HTTP_ENTITY_PARSER_SOURCE = HTTP-Entity-Parser-$(PERL_HTTP_ENTITY_PARSER_VERSION).tar.gz +PERL_HTTP_ENTITY_PARSER_SITE = $(BR2_CPAN_MIRROR)/authors/id/K/KA/KAZEBURO +PERL_HTTP_ENTITY_PARSER_DEPENDENCIES = host-perl-module-build-tiny +PERL_HTTP_ENTITY_PARSER_LICENSE = Artistic or GPL-1.0+ +PERL_HTTP_ENTITY_PARSER_LICENSE_FILES = LICENSE +PERL_HTTP_ENTITY_PARSER_DISTNAME = HTTP-Entity-Parser + +$(eval $(perl-package)) diff --git a/package/perl-http-headers-fast/Config.in b/package/perl-http-headers-fast/Config.in new file mode 100644 index 00000000..b4b19e5b --- /dev/null +++ b/package/perl-http-headers-fast/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_HTTP_HEADERS_FAST + bool "perl-http-headers-fast" + select BR2_PACKAGE_PERL_HTTP_DATE # runtime + help + faster implementation of HTTP::Headers. + + https://github.com/tokuhirom/HTTP-Headers-Fast diff --git a/package/perl-http-headers-fast/perl-http-headers-fast.hash b/package/perl-http-headers-fast/perl-http-headers-fast.hash new file mode 100644 index 00000000..484067f4 --- /dev/null +++ b/package/perl-http-headers-fast/perl-http-headers-fast.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 a166a4d0ba47eca8ff9dffb760865f5f HTTP-Headers-Fast-0.22.tar.gz +sha256 cc431db68496dd884db4bc0c0b7112c1f4a4f1dc68c4f5a3caa757a1e7481b48 HTTP-Headers-Fast-0.22.tar.gz + +# computed by scancpan +sha256 511724425acf76d736145cfbf7c775b024c70ae8674ebf9a24dfda2c8e4032a3 LICENSE diff --git a/package/perl-http-headers-fast/perl-http-headers-fast.mk b/package/perl-http-headers-fast/perl-http-headers-fast.mk new file mode 100644 index 00000000..d7bff6f9 --- /dev/null +++ b/package/perl-http-headers-fast/perl-http-headers-fast.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perl-http-headers-fast +# +################################################################################ + +PERL_HTTP_HEADERS_FAST_VERSION = 0.22 +PERL_HTTP_HEADERS_FAST_SOURCE = HTTP-Headers-Fast-$(PERL_HTTP_HEADERS_FAST_VERSION).tar.gz +PERL_HTTP_HEADERS_FAST_SITE = $(BR2_CPAN_MIRROR)/authors/id/T/TO/TOKUHIROM +PERL_HTTP_HEADERS_FAST_DEPENDENCIES = host-perl-module-build-tiny +PERL_HTTP_HEADERS_FAST_LICENSE = Artistic or GPL-1.0+ +PERL_HTTP_HEADERS_FAST_LICENSE_FILES = LICENSE +PERL_HTTP_HEADERS_FAST_DISTNAME = HTTP-Headers-Fast + +$(eval $(perl-package)) diff --git a/package/perl-http-message/Config.in b/package/perl-http-message/Config.in new file mode 100644 index 00000000..e2cb42f9 --- /dev/null +++ b/package/perl-http-message/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_PERL_HTTP_MESSAGE + bool "perl-http-message" + depends on !BR2_STATIC_LIBS # perl-clone + select BR2_PACKAGE_PERL_CLONE # runtime + select BR2_PACKAGE_PERL_ENCODE_LOCALE # runtime + select BR2_PACKAGE_PERL_HTTP_DATE # runtime + select BR2_PACKAGE_PERL_IO_HTML # runtime + select BR2_PACKAGE_PERL_LWP_MEDIATYPES # runtime + select BR2_PACKAGE_PERL_URI # runtime + help + HTTP style message (base class). + + https://github.com/libwww-perl/HTTP-Message + +comment "perl-http-message needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-http-message/perl-http-message.hash b/package/perl-http-message/perl-http-message.hash new file mode 100644 index 00000000..b33e00e3 --- /dev/null +++ b/package/perl-http-message/perl-http-message.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 86c386bcc85a63c8908e6ae9967b34ee HTTP-Message-6.45.tar.gz +sha256 01cb8406612a3f738842d1e97313ae4d874870d1b8d6d66331f16000943d4cbe HTTP-Message-6.45.tar.gz + +# computed by scancpan +sha256 553ecefc0ed6d4152809da8516960b9a12352c1c0d7d289ac4ab06d0bd0e67bb LICENSE diff --git a/package/perl-http-message/perl-http-message.mk b/package/perl-http-message/perl-http-message.mk new file mode 100644 index 00000000..7fdba0b2 --- /dev/null +++ b/package/perl-http-message/perl-http-message.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-http-message +# +################################################################################ + +PERL_HTTP_MESSAGE_VERSION = 6.45 +PERL_HTTP_MESSAGE_SOURCE = HTTP-Message-$(PERL_HTTP_MESSAGE_VERSION).tar.gz +PERL_HTTP_MESSAGE_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS +PERL_HTTP_MESSAGE_LICENSE = Artistic-1.0-Perl or GPL-1.0+ +PERL_HTTP_MESSAGE_LICENSE_FILES = LICENSE +PERL_HTTP_MESSAGE_DISTNAME = HTTP-Message + +$(eval $(perl-package)) diff --git a/package/perl-http-multipartparser/Config.in b/package/perl-http-multipartparser/Config.in new file mode 100644 index 00000000..93c196ca --- /dev/null +++ b/package/perl-http-multipartparser/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_HTTP_MULTIPARTPARSER + bool "perl-http-multipartparser" + help + HTTP MultiPart Parser. + + https://metacpan.org/release/HTTP-MultiPartParser diff --git a/package/perl-http-multipartparser/perl-http-multipartparser.hash b/package/perl-http-multipartparser/perl-http-multipartparser.hash new file mode 100644 index 00000000..8d0cf39b --- /dev/null +++ b/package/perl-http-multipartparser/perl-http-multipartparser.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 1b07ebac54ce3288c044a23ba60196d2 HTTP-MultiPartParser-0.02.tar.gz +sha256 5eddda159f54d16f868e032440ac2b024e55aac48931871b62627f1a16d00b12 HTTP-MultiPartParser-0.02.tar.gz + +# computed by scancpan +sha256 a339d6cf9253720ba69b311423556cc02c94d5a6f76cf5cdf11af2112e14a074 README diff --git a/package/perl-http-multipartparser/perl-http-multipartparser.mk b/package/perl-http-multipartparser/perl-http-multipartparser.mk new file mode 100644 index 00000000..7fb3b8aa --- /dev/null +++ b/package/perl-http-multipartparser/perl-http-multipartparser.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-http-multipartparser +# +################################################################################ + +PERL_HTTP_MULTIPARTPARSER_VERSION = 0.02 +PERL_HTTP_MULTIPARTPARSER_SOURCE = HTTP-MultiPartParser-$(PERL_HTTP_MULTIPARTPARSER_VERSION).tar.gz +PERL_HTTP_MULTIPARTPARSER_SITE = $(BR2_CPAN_MIRROR)/authors/id/C/CH/CHANSEN +PERL_HTTP_MULTIPARTPARSER_LICENSE = Artistic or GPL-1.0+ +PERL_HTTP_MULTIPARTPARSER_LICENSE_FILES = README +PERL_HTTP_MULTIPARTPARSER_DISTNAME = HTTP-MultiPartParser + +$(eval $(perl-package)) diff --git a/package/perl-http-negotiate/Config.in b/package/perl-http-negotiate/Config.in new file mode 100644 index 00000000..2e82ce5a --- /dev/null +++ b/package/perl-http-negotiate/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PERL_HTTP_NEGOTIATE + bool "perl-http-negotiate" + depends on !BR2_STATIC_LIBS # perl-http-message -> perl-clone + select BR2_PACKAGE_PERL_HTTP_MESSAGE # runtime + help + choose a variant to serve. + + https://metacpan.org/release/HTTP-Negotiate + +comment "perl-http-negotiate needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-http-negotiate/perl-http-negotiate.hash b/package/perl-http-negotiate/perl-http-negotiate.hash new file mode 100644 index 00000000..9b2cf308 --- /dev/null +++ b/package/perl-http-negotiate/perl-http-negotiate.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 1236195250e264d7436e7bb02031671b HTTP-Negotiate-6.01.tar.gz +sha256 1c729c1ea63100e878405cda7d66f9adfd3ed4f1d6cacaca0ee9152df728e016 HTTP-Negotiate-6.01.tar.gz + +# computed by scancpan +sha256 7a2114bb46279309f8a67e359ab0a578a4e9a7c7add0d1725de46b44f6da6514 README diff --git a/package/perl-http-negotiate/perl-http-negotiate.mk b/package/perl-http-negotiate/perl-http-negotiate.mk new file mode 100644 index 00000000..868516fa --- /dev/null +++ b/package/perl-http-negotiate/perl-http-negotiate.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-http-negotiate +# +################################################################################ + +PERL_HTTP_NEGOTIATE_VERSION = 6.01 +PERL_HTTP_NEGOTIATE_SOURCE = HTTP-Negotiate-$(PERL_HTTP_NEGOTIATE_VERSION).tar.gz +PERL_HTTP_NEGOTIATE_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GA/GAAS +PERL_HTTP_NEGOTIATE_LICENSE = Artistic or GPL-1.0+ +PERL_HTTP_NEGOTIATE_LICENSE_FILES = README +PERL_HTTP_NEGOTIATE_DISTNAME = HTTP-Negotiate + +$(eval $(perl-package)) diff --git a/package/perl-i18n/Config.in b/package/perl-i18n/Config.in new file mode 100644 index 00000000..d5045639 --- /dev/null +++ b/package/perl-i18n/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_I18N + bool "perl-i18n" + select BR2_PACKAGE_PERL_LOCALE_MAKETEXT_LEXICON # runtime + help + Perl Internationalization Pragma. + + https://metacpan.org/release/i18n diff --git a/package/perl-i18n/perl-i18n.hash b/package/perl-i18n/perl-i18n.hash new file mode 100644 index 00000000..3e2b5937 --- /dev/null +++ b/package/perl-i18n/perl-i18n.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 4c3004474d6ff3554f82b52f92b3b1e1 i18n-0.13.tar.gz +sha256 2dbc3e4e25b41578cd83508fe011209e8f3c2b259fa4b5b6eafaac0d6ce4b457 i18n-0.13.tar.gz + +# computed by scancpan +sha256 4755e5f2096e8ef0494f1565bf5a028a8fb4eeb5c1250e7d30948d1ed13c5ad7 README diff --git a/package/perl-i18n/perl-i18n.mk b/package/perl-i18n/perl-i18n.mk new file mode 100644 index 00000000..04d75c21 --- /dev/null +++ b/package/perl-i18n/perl-i18n.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-i18n +# +################################################################################ + +PERL_I18N_VERSION = 0.13 +PERL_I18N_SOURCE = i18n-$(PERL_I18N_VERSION).tar.gz +PERL_I18N_SITE = $(BR2_CPAN_MIRROR)/authors/id/A/AU/AUDREYT +PERL_I18N_LICENSE = MIT +PERL_I18N_LICENSE_FILES = README +PERL_I18N_DISTNAME = i18n + +$(eval $(perl-package)) diff --git a/package/perl-image-exiftool/Config.in b/package/perl-image-exiftool/Config.in new file mode 100644 index 00000000..3bc72ba6 --- /dev/null +++ b/package/perl-image-exiftool/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PERL_IMAGE_EXIFTOOL + bool "perl-image-exiftool" + help + ExifTool is a customizable set of Perl modules plus a + full-featured command-line application for reading and writing + meta information in a wide variety of image files. + + https://metacpan.org/release/Image-ExifTool diff --git a/package/perl-image-exiftool/perl-image-exiftool.hash b/package/perl-image-exiftool/perl-image-exiftool.hash new file mode 100644 index 00000000..ac148aa8 --- /dev/null +++ b/package/perl-image-exiftool/perl-image-exiftool.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 75dd9d375c1c4798a082dda79eaf6ba7 Image-ExifTool-12.50.tar.gz +sha256 bce841fc5c10302f0f3ef7678c3bf146953a8c065c0ba18c41f734007e2ec0a8 Image-ExifTool-12.50.tar.gz + +# computed by scancpan +sha256 63502bb7fd68b3b8265304d88932f70f1be82751cbc37936d1d62956582310fe README diff --git a/package/perl-image-exiftool/perl-image-exiftool.mk b/package/perl-image-exiftool/perl-image-exiftool.mk new file mode 100644 index 00000000..42adb04d --- /dev/null +++ b/package/perl-image-exiftool/perl-image-exiftool.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-image-exiftool +# +################################################################################ + +PERL_IMAGE_EXIFTOOL_VERSION = 12.50 +PERL_IMAGE_EXIFTOOL_SOURCE = Image-ExifTool-$(PERL_IMAGE_EXIFTOOL_VERSION).tar.gz +PERL_IMAGE_EXIFTOOL_SITE = $(BR2_CPAN_MIRROR)/authors/id/E/EX/EXIFTOOL +PERL_IMAGE_EXIFTOOL_LICENSE = Artistic or GPL-1.0+ +PERL_IMAGE_EXIFTOOL_LICENSE_FILES = README +PERL_IMAGE_EXIFTOOL_DISTNAME = Image-ExifTool + +$(eval $(perl-package)) diff --git a/package/perl-io-html/Config.in b/package/perl-io-html/Config.in new file mode 100644 index 00000000..e12e39a5 --- /dev/null +++ b/package/perl-io-html/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_IO_HTML + bool "perl-io-html" + help + Open an HTML file with automatic charset detection. + + https://metacpan.org/release/IO-HTML diff --git a/package/perl-io-html/perl-io-html.hash b/package/perl-io-html/perl-io-html.hash new file mode 100644 index 00000000..4067d2fa --- /dev/null +++ b/package/perl-io-html/perl-io-html.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 04bbe363686fd19bfb4cc0ed775e3d03 IO-HTML-1.004.tar.gz +sha256 c87b2df59463bbf2c39596773dfb5c03bde0f7e1051af339f963f58c1cbd8bf5 IO-HTML-1.004.tar.gz + +# computed by scancpan +sha256 669fdd41b60ef6169a975b87a5fe35c50e81b9efc8f96b2459f4fbb238079d84 LICENSE diff --git a/package/perl-io-html/perl-io-html.mk b/package/perl-io-html/perl-io-html.mk new file mode 100644 index 00000000..934ac60c --- /dev/null +++ b/package/perl-io-html/perl-io-html.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-io-html +# +################################################################################ + +PERL_IO_HTML_VERSION = 1.004 +PERL_IO_HTML_SOURCE = IO-HTML-$(PERL_IO_HTML_VERSION).tar.gz +PERL_IO_HTML_SITE = $(BR2_CPAN_MIRROR)/authors/id/C/CJ/CJM +PERL_IO_HTML_LICENSE = Artistic or GPL-1.0+ +PERL_IO_HTML_LICENSE_FILES = LICENSE +PERL_IO_HTML_DISTNAME = IO-HTML + +$(eval $(perl-package)) diff --git a/package/perl-io-interface/Config.in b/package/perl-io-interface/Config.in new file mode 100644 index 00000000..e3137b24 --- /dev/null +++ b/package/perl-io-interface/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PERL_IO_INTERFACE + bool "perl-io-interface" + depends on !BR2_STATIC_LIBS + help + Access and modify network interface card configuration. + + https://metacpan.org/release/IO-Interface + +comment "perl-io-interface needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-io-interface/perl-io-interface.hash b/package/perl-io-interface/perl-io-interface.hash new file mode 100644 index 00000000..b5d99086 --- /dev/null +++ b/package/perl-io-interface/perl-io-interface.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 806f97aff5a7361b6f54cd494f4cc9fd IO-Interface-1.09.tar.gz +sha256 e63e81c52eb1e0e60ec2d983f5552d2493e117179925c96757f23c4bd9fa713a IO-Interface-1.09.tar.gz + +# computed by scancpan +sha256 b5a5bf59bd1be13f7f498e5aa2ea5c0c603c04a095dcf03a06aa5b83bbccf921 LICENSE diff --git a/package/perl-io-interface/perl-io-interface.mk b/package/perl-io-interface/perl-io-interface.mk new file mode 100644 index 00000000..84e4d1a9 --- /dev/null +++ b/package/perl-io-interface/perl-io-interface.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perl-io-interface +# +################################################################################ + +PERL_IO_INTERFACE_VERSION = 1.09 +PERL_IO_INTERFACE_SOURCE = IO-Interface-$(PERL_IO_INTERFACE_VERSION).tar.gz +PERL_IO_INTERFACE_SITE = $(BR2_CPAN_MIRROR)/authors/id/L/LD/LDS +PERL_IO_INTERFACE_DEPENDENCIES = host-perl-module-build +PERL_IO_INTERFACE_LICENSE = Artistic-2.0 +PERL_IO_INTERFACE_LICENSE_FILES = LICENSE +PERL_IO_INTERFACE_DISTNAME = IO-Interface + +$(eval $(perl-package)) diff --git a/package/perl-io-socket-multicast/Config.in b/package/perl-io-socket-multicast/Config.in new file mode 100644 index 00000000..b1328c5b --- /dev/null +++ b/package/perl-io-socket-multicast/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PERL_IO_SOCKET_MULTICAST + bool "perl-io-socket-multicast" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_PERL_IO_INTERFACE # runtime + help + Send and receive multicast messages. + + https://metacpan.org/release/IO-Socket-Multicast + +comment "perl-io-socket-multicast needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-io-socket-multicast/perl-io-socket-multicast.hash b/package/perl-io-socket-multicast/perl-io-socket-multicast.hash new file mode 100644 index 00000000..a8f2a336 --- /dev/null +++ b/package/perl-io-socket-multicast/perl-io-socket-multicast.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 c96e6cbb367b1d11ffe7bb9fbd833540 IO-Socket-Multicast-1.12.tar.gz +sha256 70e8af4aa21d19bab5edd9f43a6b3d6277748a65145d46ff0ea2ae4c59495c72 IO-Socket-Multicast-1.12.tar.gz + +# computed by scancpan +sha256 ea33bda0e2ec6734e29895a37cd1fc005d86f2abbe7e9943e0213ae64844a697 README diff --git a/package/perl-io-socket-multicast/perl-io-socket-multicast.mk b/package/perl-io-socket-multicast/perl-io-socket-multicast.mk new file mode 100644 index 00000000..a8c6896c --- /dev/null +++ b/package/perl-io-socket-multicast/perl-io-socket-multicast.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-io-socket-multicast +# +################################################################################ + +PERL_IO_SOCKET_MULTICAST_VERSION = 1.12 +PERL_IO_SOCKET_MULTICAST_SOURCE = IO-Socket-Multicast-$(PERL_IO_SOCKET_MULTICAST_VERSION).tar.gz +PERL_IO_SOCKET_MULTICAST_SITE = $(BR2_CPAN_MIRROR)/authors/id/B/BR/BRAMBLE +PERL_IO_SOCKET_MULTICAST_LICENSE = Artistic or GPL-1.0+ +PERL_IO_SOCKET_MULTICAST_LICENSE_FILES = README +PERL_IO_SOCKET_MULTICAST_DISTNAME = IO-Socket-Multicast + +$(eval $(perl-package)) diff --git a/package/perl-io-socket-ssl/Config.in b/package/perl-io-socket-ssl/Config.in new file mode 100644 index 00000000..2797a115 --- /dev/null +++ b/package/perl-io-socket-ssl/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PERL_IO_SOCKET_SSL + bool "perl-io-socket-ssl" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_PERL_MOZILLA_CA # runtime + select BR2_PACKAGE_PERL_NET_SSLEAY # runtime + help + Nearly transparent SSL encapsulation for IO::Socket::INET. + + https://github.com/noxxi/p5-io-socket-ssl + +comment "perl-io-socket-ssl needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-io-socket-ssl/perl-io-socket-ssl.hash b/package/perl-io-socket-ssl/perl-io-socket-ssl.hash new file mode 100644 index 00000000..a4abcc33 --- /dev/null +++ b/package/perl-io-socket-ssl/perl-io-socket-ssl.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 eaea5b17592ccbd925aff47747f41dde IO-Socket-SSL-2.080.tar.gz +sha256 cd0ed303b08a72c5c256a9ec3bbb6ff61360be3a2ff6d775e4f6e25375fa8d1f IO-Socket-SSL-2.080.tar.gz + +# computed by scancpan +sha256 090aff5421fd55a9dceeaf6c612c36360402e8d29c1284aef88c87be565ce032 README diff --git a/package/perl-io-socket-ssl/perl-io-socket-ssl.mk b/package/perl-io-socket-ssl/perl-io-socket-ssl.mk new file mode 100644 index 00000000..d5c09d90 --- /dev/null +++ b/package/perl-io-socket-ssl/perl-io-socket-ssl.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-io-socket-ssl +# +################################################################################ + +PERL_IO_SOCKET_SSL_VERSION = 2.080 +PERL_IO_SOCKET_SSL_SOURCE = IO-Socket-SSL-$(PERL_IO_SOCKET_SSL_VERSION).tar.gz +PERL_IO_SOCKET_SSL_SITE = $(BR2_CPAN_MIRROR)/authors/id/S/SU/SULLR +PERL_IO_SOCKET_SSL_LICENSE = Artistic or GPL-1.0+ +PERL_IO_SOCKET_SSL_LICENSE_FILES = README +PERL_IO_SOCKET_SSL_DISTNAME = IO-Socket-SSL + +$(eval $(perl-package)) diff --git a/package/perl-json-maybexs/Config.in b/package/perl-json-maybexs/Config.in new file mode 100644 index 00000000..7959b2c3 --- /dev/null +++ b/package/perl-json-maybexs/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_JSON_MAYBEXS + bool "perl-json-maybexs" + help + Use Cpanel::JSON::XS with a fallback to JSON::XS and + JSON::PP. + + https://metacpan.org/release/JSON-MaybeXS diff --git a/package/perl-json-maybexs/perl-json-maybexs.hash b/package/perl-json-maybexs/perl-json-maybexs.hash new file mode 100644 index 00000000..3b603310 --- /dev/null +++ b/package/perl-json-maybexs/perl-json-maybexs.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 bee9d0cba3f87e05e9613684e4ee2159 JSON-MaybeXS-1.004005.tar.gz +sha256 f5b6bc19f579e66b7299f8748b8ac3e171936dc4e7fcb72a8a257a9bd482a331 JSON-MaybeXS-1.004005.tar.gz + +# computed by scancpan +sha256 de7a14750e81d97e19e111df58a3b51e3f2c8ec2d2dd90f576f54243251972c6 LICENSE diff --git a/package/perl-json-maybexs/perl-json-maybexs.mk b/package/perl-json-maybexs/perl-json-maybexs.mk new file mode 100644 index 00000000..13c9439e --- /dev/null +++ b/package/perl-json-maybexs/perl-json-maybexs.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-json-maybexs +# +################################################################################ + +PERL_JSON_MAYBEXS_VERSION = 1.004005 +PERL_JSON_MAYBEXS_SOURCE = JSON-MaybeXS-$(PERL_JSON_MAYBEXS_VERSION).tar.gz +PERL_JSON_MAYBEXS_SITE = $(BR2_CPAN_MIRROR)/authors/id/E/ET/ETHER +PERL_JSON_MAYBEXS_LICENSE = Artistic or GPL-1.0+ +PERL_JSON_MAYBEXS_LICENSE_FILES = LICENSE +PERL_JSON_MAYBEXS_DISTNAME = JSON-MaybeXS + +$(eval $(perl-package)) diff --git a/package/perl-json-tiny/Config.in b/package/perl-json-tiny/Config.in new file mode 100644 index 00000000..ce943cae --- /dev/null +++ b/package/perl-json-tiny/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_JSON_TINY + bool "perl-json-tiny" + help + Minimalistic JSON. No dependencies. + + https://metacpan.org/release/JSON-Tiny diff --git a/package/perl-json-tiny/perl-json-tiny.hash b/package/perl-json-tiny/perl-json-tiny.hash new file mode 100644 index 00000000..ba7c5b3b --- /dev/null +++ b/package/perl-json-tiny/perl-json-tiny.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 aa006882222e17a94295b3a655aab91b JSON-Tiny-0.58.tar.gz +sha256 ad42e9137f5148df7fdb22aa52186b306032977bcd70d49f44a288070e4f0f23 JSON-Tiny-0.58.tar.gz + +# computed by scancpan +sha256 19e2e0f2079ea1ce1576eb4ecc0575b33fe45b2b8e71f4aa589d6bedd1da4e0a LICENSE diff --git a/package/perl-json-tiny/perl-json-tiny.mk b/package/perl-json-tiny/perl-json-tiny.mk new file mode 100644 index 00000000..886cff81 --- /dev/null +++ b/package/perl-json-tiny/perl-json-tiny.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-json-tiny +# +################################################################################ + +PERL_JSON_TINY_VERSION = 0.58 +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 +PERL_JSON_TINY_LICENSE_FILES = LICENSE +PERL_JSON_TINY_DISTNAME = JSON-Tiny + +$(eval $(perl-package)) diff --git a/package/perl-libwww-perl/Config.in b/package/perl-libwww-perl/Config.in new file mode 100644 index 00000000..3967d357 --- /dev/null +++ b/package/perl-libwww-perl/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_PERL_LIBWWW_PERL + bool "perl-libwww-perl" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_PERL_ENCODE_LOCALE # runtime + select BR2_PACKAGE_PERL_FILE_LISTING # runtime + select BR2_PACKAGE_PERL_HTML_PARSER # runtime + select BR2_PACKAGE_PERL_HTTP_COOKIES # runtime + select BR2_PACKAGE_PERL_HTTP_DATE # runtime + select BR2_PACKAGE_PERL_HTTP_MESSAGE # runtime + select BR2_PACKAGE_PERL_HTTP_NEGOTIATE # runtime + select BR2_PACKAGE_PERL_LWP_MEDIATYPES # runtime + select BR2_PACKAGE_PERL_NET_HTTP # runtime + select BR2_PACKAGE_PERL_TRY_TINY # runtime + select BR2_PACKAGE_PERL_URI # runtime + select BR2_PACKAGE_PERL_WWW_ROBOTRULES # runtime + help + The World-Wide Web library for Perl. + + https://github.com/libwww-perl/libwww-perl + +comment "perl-libwww-perl needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-libwww-perl/perl-libwww-perl.hash b/package/perl-libwww-perl/perl-libwww-perl.hash new file mode 100644 index 00000000..8b4b229b --- /dev/null +++ b/package/perl-libwww-perl/perl-libwww-perl.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 ff7621d0350da3052f24db9a74692672 libwww-perl-6.67.tar.gz +sha256 96eec40a3fd0aa1bd834117be5eb21c438f73094d861a1a7e5774f0b1226b723 libwww-perl-6.67.tar.gz + +# computed by scancpan +sha256 311f168ba9a7819ffab4fea19858f9e880737baf6d112929d11530205035a4cc LICENSE diff --git a/package/perl-libwww-perl/perl-libwww-perl.mk b/package/perl-libwww-perl/perl-libwww-perl.mk new file mode 100644 index 00000000..6c4bd298 --- /dev/null +++ b/package/perl-libwww-perl/perl-libwww-perl.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-libwww-perl +# +################################################################################ + +PERL_LIBWWW_PERL_VERSION = 6.67 +PERL_LIBWWW_PERL_SOURCE = libwww-perl-$(PERL_LIBWWW_PERL_VERSION).tar.gz +PERL_LIBWWW_PERL_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS +PERL_LIBWWW_PERL_LICENSE = Artistic or GPL-1.0+ +PERL_LIBWWW_PERL_LICENSE_FILES = LICENSE +PERL_LIBWWW_PERL_DISTNAME = libwww-perl + +$(eval $(perl-package)) diff --git a/package/perl-locale-maketext-lexicon/Config.in b/package/perl-locale-maketext-lexicon/Config.in new file mode 100644 index 00000000..4aed7b63 --- /dev/null +++ b/package/perl-locale-maketext-lexicon/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_LOCALE_MAKETEXT_LEXICON + bool "perl-locale-maketext-lexicon" + help + Use other catalog formats in Maketext. + + http://search.cpan.org/dist/Locale-Maketext-Lexicon diff --git a/package/perl-locale-maketext-lexicon/perl-locale-maketext-lexicon.hash b/package/perl-locale-maketext-lexicon/perl-locale-maketext-lexicon.hash new file mode 100644 index 00000000..fbbf3355 --- /dev/null +++ b/package/perl-locale-maketext-lexicon/perl-locale-maketext-lexicon.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 51acf0cb00cc01a2c8f560d74dd6c593 Locale-Maketext-Lexicon-1.00.tar.gz +sha256 b73f6b04a58d3f0e38ebf2115a4c1532f1a4eef6fac5c6a2a449e4e14c1ddc7c Locale-Maketext-Lexicon-1.00.tar.gz + +# computed by scancpan +sha256 af693c8c99bee68656f09328c97d50b24eb742ae4473f57cdafaa90691807fbe LICENSE diff --git a/package/perl-locale-maketext-lexicon/perl-locale-maketext-lexicon.mk b/package/perl-locale-maketext-lexicon/perl-locale-maketext-lexicon.mk new file mode 100644 index 00000000..64b37f92 --- /dev/null +++ b/package/perl-locale-maketext-lexicon/perl-locale-maketext-lexicon.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-locale-maketext-lexicon +# +################################################################################ + +PERL_LOCALE_MAKETEXT_LEXICON_VERSION = 1.00 +PERL_LOCALE_MAKETEXT_LEXICON_SOURCE = Locale-Maketext-Lexicon-$(PERL_LOCALE_MAKETEXT_LEXICON_VERSION).tar.gz +PERL_LOCALE_MAKETEXT_LEXICON_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DR/DRTECH +PERL_LOCALE_MAKETEXT_LEXICON_LICENSE = MIT +PERL_LOCALE_MAKETEXT_LEXICON_LICENSE_FILES = LICENSE +PERL_LOCALE_MAKETEXT_LEXICON_DISTNAME = Locale-Maketext-Lexicon + +$(eval $(perl-package)) diff --git a/package/perl-lwp-mediatypes/Config.in b/package/perl-lwp-mediatypes/Config.in new file mode 100644 index 00000000..c1f58a6f --- /dev/null +++ b/package/perl-lwp-mediatypes/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_LWP_MEDIATYPES + bool "perl-lwp-mediatypes" + help + guess media type for a file or a URL. + + https://github.com/libwww-perl/lwp-mediatypes diff --git a/package/perl-lwp-mediatypes/perl-lwp-mediatypes.hash b/package/perl-lwp-mediatypes/perl-lwp-mediatypes.hash new file mode 100644 index 00000000..0a09f22a --- /dev/null +++ b/package/perl-lwp-mediatypes/perl-lwp-mediatypes.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 84b799a90c0d2ce52897a7cb4c0478d0 LWP-MediaTypes-6.04.tar.gz +sha256 8f1bca12dab16a1c2a7c03a49c5e58cce41a6fec9519f0aadfba8dad997919d9 LWP-MediaTypes-6.04.tar.gz + +# computed by scancpan +sha256 e84ac5ab84ace59952d2640e0ca4522eb0aaa8c2aa696352d1252aa109ea20bc LICENSE diff --git a/package/perl-lwp-mediatypes/perl-lwp-mediatypes.mk b/package/perl-lwp-mediatypes/perl-lwp-mediatypes.mk new file mode 100644 index 00000000..687a8442 --- /dev/null +++ b/package/perl-lwp-mediatypes/perl-lwp-mediatypes.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-lwp-mediatypes +# +################################################################################ + +PERL_LWP_MEDIATYPES_VERSION = 6.04 +PERL_LWP_MEDIATYPES_SOURCE = LWP-MediaTypes-$(PERL_LWP_MEDIATYPES_VERSION).tar.gz +PERL_LWP_MEDIATYPES_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS +PERL_LWP_MEDIATYPES_LICENSE = Artistic or GPL-1.0+ +PERL_LWP_MEDIATYPES_LICENSE_FILES = LICENSE +PERL_LWP_MEDIATYPES_DISTNAME = LWP-MediaTypes + +$(eval $(perl-package)) diff --git a/package/perl-lwp-protocol-https/Config.in b/package/perl-lwp-protocol-https/Config.in new file mode 100644 index 00000000..fa429a2c --- /dev/null +++ b/package/perl-lwp-protocol-https/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PERL_LWP_PROTOCOL_HTTPS + bool "perl-lwp-protocol-https" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_PERL_IO_SOCKET_SSL # runtime + select BR2_PACKAGE_PERL_NET_HTTP # runtime + select BR2_PACKAGE_PERL_LIBWWW_PERL # runtime + help + Provide https support for LWP::UserAgent. + + https://github.com/libwww-perl/LWP-Protocol-https + +comment "perl-lwp-protocol-https needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-lwp-protocol-https/perl-lwp-protocol-https.hash b/package/perl-lwp-protocol-https/perl-lwp-protocol-https.hash new file mode 100644 index 00000000..aac0abe3 --- /dev/null +++ b/package/perl-lwp-protocol-https/perl-lwp-protocol-https.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 62650d02150a157f486375ca588b6c9d LWP-Protocol-https-6.12.tar.gz +sha256 7dd36d3a4eacfa143a47a2bbbc56ea9413887e2d7376c1d35bbbb2be912b616c LWP-Protocol-https-6.12.tar.gz + +# computed by scancpan +sha256 e4def55436b2bd99fe2cdbf546a72ad5958327e28831db9b5adb497c6bd580ba LICENSE diff --git a/package/perl-lwp-protocol-https/perl-lwp-protocol-https.mk b/package/perl-lwp-protocol-https/perl-lwp-protocol-https.mk new file mode 100644 index 00000000..a2048e25 --- /dev/null +++ b/package/perl-lwp-protocol-https/perl-lwp-protocol-https.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# perl-lwp-protocol-https +# +################################################################################ + +PERL_LWP_PROTOCOL_HTTPS_VERSION = 6.12 +PERL_LWP_PROTOCOL_HTTPS_SOURCE = LWP-Protocol-https-$(PERL_LWP_PROTOCOL_HTTPS_VERSION).tar.gz +PERL_LWP_PROTOCOL_HTTPS_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS +PERL_LWP_PROTOCOL_HTTPS_LICENSE = Artistic-1.0-Perl or GPL-1.0+ +PERL_LWP_PROTOCOL_HTTPS_LICENSE_FILES = LICENSE +PERL_LWP_PROTOCOL_HTTPS_CPE_ID_VENDOR = lwp\:\:protocol\:\:https_project +PERL_LWP_PROTOCOL_HTTPS_CPE_ID_PRODUCT = lwp\:\:protocol\:\:https +PERL_LWP_PROTOCOL_HTTPS_DISTNAME = LWP-Protocol-https + +$(eval $(perl-package)) diff --git a/package/perl-mail-dkim/Config.in b/package/perl-mail-dkim/Config.in new file mode 100644 index 00000000..057796b5 --- /dev/null +++ b/package/perl-mail-dkim/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PERL_MAIL_DKIM + bool "perl-mail-dkim" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_PERL_CRYPT_OPENSSL_RSA # runtime + select BR2_PACKAGE_PERL_MAILTOOLS # runtime + select BR2_PACKAGE_PERL_NET_DNS # runtime + help + Signs/verifies Internet mail with DKIM/DomainKey signatures. + + https://metacpan.org/release/Mail-DKIM + +comment "perl-mail-dkim needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-mail-dkim/perl-mail-dkim.hash b/package/perl-mail-dkim/perl-mail-dkim.hash new file mode 100644 index 00000000..5b0e7729 --- /dev/null +++ b/package/perl-mail-dkim/perl-mail-dkim.hash @@ -0,0 +1,5 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +sha256 0fa09a93a00f43ac91017a91628265ae7d47deb507e2770532bbb2597550d3d4 Mail-DKIM-1.20230630.tar.gz + +# computed by scancpan +sha256 ffaa40feb768566e52d93879fedd2c5483828b6de483874f30a0a4425351555f LICENSE diff --git a/package/perl-mail-dkim/perl-mail-dkim.mk b/package/perl-mail-dkim/perl-mail-dkim.mk new file mode 100644 index 00000000..4f4d86ee --- /dev/null +++ b/package/perl-mail-dkim/perl-mail-dkim.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-mail-dkim +# +################################################################################ + +PERL_MAIL_DKIM_VERSION = 1.20230630 +PERL_MAIL_DKIM_SOURCE = Mail-DKIM-$(PERL_MAIL_DKIM_VERSION).tar.gz +PERL_MAIL_DKIM_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MB/MBRADSHAW +PERL_MAIL_DKIM_LICENSE = Artistic or GPL-1.0+ +PERL_MAIL_DKIM_LICENSE_FILES = LICENSE +PERL_MAIL_DKIM_DISTNAME = Mail-DKIM + +$(eval $(perl-package)) diff --git a/package/perl-mailtools/Config.in b/package/perl-mailtools/Config.in new file mode 100644 index 00000000..6aa5d2d0 --- /dev/null +++ b/package/perl-mailtools/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_MAILTOOLS + bool "perl-mailtools" + select BR2_PACKAGE_PERL_TIMEDATE # runtime + help + Various ancient e-mail related modules. + + http://perl.overmeer.net/CPAN/ diff --git a/package/perl-mailtools/perl-mailtools.hash b/package/perl-mailtools/perl-mailtools.hash new file mode 100644 index 00000000..317e020a --- /dev/null +++ b/package/perl-mailtools/perl-mailtools.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 69ee516d40011e7e92b77c6f06c0dc01 MailTools-2.21.tar.gz +sha256 4ad9bd6826b6f03a2727332466b1b7d29890c8d99a32b4b3b0a8d926ee1a44cb MailTools-2.21.tar.gz + +# computed by scancpan +sha256 f7558badc4f4875df247bcccb50a8f369bfe4a2c19361f1df7b26ddf6aaaaf6b README diff --git a/package/perl-mailtools/perl-mailtools.mk b/package/perl-mailtools/perl-mailtools.mk new file mode 100644 index 00000000..900ee41f --- /dev/null +++ b/package/perl-mailtools/perl-mailtools.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-mailtools +# +################################################################################ + +PERL_MAILTOOLS_VERSION = 2.21 +PERL_MAILTOOLS_SOURCE = MailTools-$(PERL_MAILTOOLS_VERSION).tar.gz +PERL_MAILTOOLS_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MA/MARKOV +PERL_MAILTOOLS_LICENSE = Artistic or GPL-1.0+ +PERL_MAILTOOLS_LICENSE_FILES = README +PERL_MAILTOOLS_DISTNAME = MailTools + +$(eval $(perl-package)) diff --git a/package/perl-math-int64/Config.in b/package/perl-math-int64/Config.in new file mode 100644 index 00000000..8fbea44a --- /dev/null +++ b/package/perl-math-int64/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PERL_MATH_INT64 + bool "perl-math-int64" + depends on !BR2_STATIC_LIBS + help + Manipulate 64 bits integers in Perl. + + http://metacpan.org/release/Math-Int64 + +comment "perl-math-int64 needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-math-int64/perl-math-int64.hash b/package/perl-math-int64/perl-math-int64.hash new file mode 100644 index 00000000..7730b722 --- /dev/null +++ b/package/perl-math-int64/perl-math-int64.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 ed431cca1c403b1078fb1b3e2860d8de Math-Int64-0.57.tar.gz +sha256 12c60111c1cfceb257ac2ccc5b2e1721879efa09a1b0a73e8836afca107a7d75 Math-Int64-0.57.tar.gz + +# computed by scancpan +sha256 59feedfdc4f99a746c54e06ac46c4627fb1e29be3bc71756184f92333600f72b COPYING diff --git a/package/perl-math-int64/perl-math-int64.mk b/package/perl-math-int64/perl-math-int64.mk new file mode 100644 index 00000000..c0abcf48 --- /dev/null +++ b/package/perl-math-int64/perl-math-int64.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-math-int64 +# +################################################################################ + +PERL_MATH_INT64_VERSION = 0.57 +PERL_MATH_INT64_SOURCE = Math-Int64-$(PERL_MATH_INT64_VERSION).tar.gz +PERL_MATH_INT64_SITE = $(BR2_CPAN_MIRROR)/authors/id/S/SA/SALVA +PERL_MATH_INT64_LICENSE = Artistic or GPL-1.0+ +PERL_MATH_INT64_LICENSE_FILES = COPYING +PERL_MATH_INT64_DISTNAME = Math-Int64 + +$(eval $(perl-package)) diff --git a/package/perl-math-prime-util/Config.in b/package/perl-math-prime-util/Config.in new file mode 100644 index 00000000..1c7b700a --- /dev/null +++ b/package/perl-math-prime-util/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PERL_MATH_PRIME_UTIL + bool "perl-math-prime-util" + depends on !BR2_STATIC_LIBS + help + Utilities related to prime numbers, including fast sieves and + factoring. + + https://github.com/danaj/Math-Prime-Util + +comment "perl-math-prime-util needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-math-prime-util/perl-math-prime-util.hash b/package/perl-math-prime-util/perl-math-prime-util.hash new file mode 100644 index 00000000..e28cfe54 --- /dev/null +++ b/package/perl-math-prime-util/perl-math-prime-util.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 26496630990db586dfede6551de79cbe Math-Prime-Util-0.73.tar.gz +sha256 4afa6dd8cdb97499bd4eca6925861812c29d9f5a0f1ac27ad9d2d9c9b5602894 Math-Prime-Util-0.73.tar.gz + +# computed by scancpan +sha256 475b5f12062de0e197fb8cfa44eef3b032342d097752868e72c1239fe52a8942 LICENSE diff --git a/package/perl-math-prime-util/perl-math-prime-util.mk b/package/perl-math-prime-util/perl-math-prime-util.mk new file mode 100644 index 00000000..5781fe75 --- /dev/null +++ b/package/perl-math-prime-util/perl-math-prime-util.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-math-prime-util +# +################################################################################ + +PERL_MATH_PRIME_UTIL_VERSION = 0.73 +PERL_MATH_PRIME_UTIL_SOURCE = Math-Prime-Util-$(PERL_MATH_PRIME_UTIL_VERSION).tar.gz +PERL_MATH_PRIME_UTIL_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DA/DANAJ +PERL_MATH_PRIME_UTIL_LICENSE = Artistic or GPL-1.0+ +PERL_MATH_PRIME_UTIL_LICENSE_FILES = LICENSE +PERL_MATH_PRIME_UTIL_DISTNAME = Math-Prime-Util + +$(eval $(perl-package)) diff --git a/package/perl-mime-base64-urlsafe/Config.in b/package/perl-mime-base64-urlsafe/Config.in new file mode 100644 index 00000000..be4540a4 --- /dev/null +++ b/package/perl-mime-base64-urlsafe/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_MIME_BASE64_URLSAFE + bool "perl-mime-base64-urlsafe" + help + Perl version of Python's URL-safe base64 codec. + + https://metacpan.org/release/MIME-Base64-URLSafe diff --git a/package/perl-mime-base64-urlsafe/perl-mime-base64-urlsafe.hash b/package/perl-mime-base64-urlsafe/perl-mime-base64-urlsafe.hash new file mode 100644 index 00000000..52b6706f --- /dev/null +++ b/package/perl-mime-base64-urlsafe/perl-mime-base64-urlsafe.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 eccf42cc7e9576dd23b9f39ad59c9b62 MIME-Base64-URLSafe-0.01.tar.gz +sha256 cb9966c50538bb676ab67bc40a7c841019b23ba2243d0ffcc2ccf084e5c33798 MIME-Base64-URLSafe-0.01.tar.gz + +# computed by scancpan +sha256 2fffac76f75709b6d94111a37f6cd8cab21e8f2b2de73b0b4fa53a5bed4efc15 README diff --git a/package/perl-mime-base64-urlsafe/perl-mime-base64-urlsafe.mk b/package/perl-mime-base64-urlsafe/perl-mime-base64-urlsafe.mk new file mode 100644 index 00000000..1a6a36ee --- /dev/null +++ b/package/perl-mime-base64-urlsafe/perl-mime-base64-urlsafe.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-mime-base64-urlsafe +# +################################################################################ + +PERL_MIME_BASE64_URLSAFE_VERSION = 0.01 +PERL_MIME_BASE64_URLSAFE_SOURCE = MIME-Base64-URLSafe-$(PERL_MIME_BASE64_URLSAFE_VERSION).tar.gz +PERL_MIME_BASE64_URLSAFE_SITE = $(BR2_CPAN_MIRROR)/authors/id/K/KA/KAZUHO +PERL_MIME_BASE64_URLSAFE_LICENSE = Artistic or GPL-1.0+ +PERL_MIME_BASE64_URLSAFE_LICENSE_FILES = README +PERL_MIME_BASE64_URLSAFE_DISTNAME = MIME-Base64-URLSafe + +$(eval $(perl-package)) diff --git a/package/perl-mime-tools/Config.in b/package/perl-mime-tools/Config.in new file mode 100644 index 00000000..f8495c32 --- /dev/null +++ b/package/perl-mime-tools/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_MIME_TOOLS + bool "perl-mime-tools" + select BR2_PACKAGE_PERL_MAILTOOLS # runtime + help + Tools to manipulate MIME messages. + + https://metacpan.org/release/MIME-tools diff --git a/package/perl-mime-tools/perl-mime-tools.hash b/package/perl-mime-tools/perl-mime-tools.hash new file mode 100644 index 00000000..f67fe615 --- /dev/null +++ b/package/perl-mime-tools/perl-mime-tools.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 a2f0e07da2ff4b0478908544cc4b40fa MIME-tools-5.509.tar.gz +sha256 64579f0c923d81d9a2194586e47c3475519e2646e4b5c102a8920759facf6973 MIME-tools-5.509.tar.gz + +# computed by scancpan +sha256 151cd94e37eb05239c5a678c7d1c4d9d5241a7c9c138760b85152bc1947e2b93 COPYING diff --git a/package/perl-mime-tools/perl-mime-tools.mk b/package/perl-mime-tools/perl-mime-tools.mk new file mode 100644 index 00000000..10279d73 --- /dev/null +++ b/package/perl-mime-tools/perl-mime-tools.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-mime-tools +# +################################################################################ + +PERL_MIME_TOOLS_VERSION = 5.509 +PERL_MIME_TOOLS_SOURCE = MIME-tools-$(PERL_MIME_TOOLS_VERSION).tar.gz +PERL_MIME_TOOLS_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DS/DSKOLL +PERL_MIME_TOOLS_LICENSE = Artistic or GPL-1.0+ +PERL_MIME_TOOLS_LICENSE_FILES = COPYING +PERL_MIME_TOOLS_DISTNAME = MIME-tools + +$(eval $(perl-package)) diff --git a/package/perl-module-build-tiny/perl-module-build-tiny.hash b/package/perl-module-build-tiny/perl-module-build-tiny.hash new file mode 100644 index 00000000..7b503ff0 --- /dev/null +++ b/package/perl-module-build-tiny/perl-module-build-tiny.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 de9814b3c22825837438fc70adad58ac Module-Build-Tiny-0.047.tar.gz +sha256 71260e9421b93c33dd1b3e7d0cf15f759c0ca7c753fa840279ec3be70f8f8c9d Module-Build-Tiny-0.047.tar.gz + +# computed by scancpan +sha256 1ce3282467869416f29b0c5f7773d1b80181fb9e08bef64e3829e8c53e19b64e LICENSE diff --git a/package/perl-module-build-tiny/perl-module-build-tiny.mk b/package/perl-module-build-tiny/perl-module-build-tiny.mk new file mode 100644 index 00000000..e2e3d83e --- /dev/null +++ b/package/perl-module-build-tiny/perl-module-build-tiny.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# perl-module-build-tiny +# +################################################################################ + +PERL_MODULE_BUILD_TINY_VERSION = 0.047 +PERL_MODULE_BUILD_TINY_SOURCE = Module-Build-Tiny-$(PERL_MODULE_BUILD_TINY_VERSION).tar.gz +PERL_MODULE_BUILD_TINY_SITE = $(BR2_CPAN_MIRROR)/authors/id/L/LE/LEONT +HOST_PERL_MODULE_BUILD_TINY_DEPENDENCIES = \ + host-perl-extutils-config \ + host-perl-extutils-helpers \ + host-perl-extutils-installpaths +PERL_MODULE_BUILD_TINY_LICENSE = Artistic-1.0-Perl or GPL-1.0+ +PERL_MODULE_BUILD_TINY_LICENSE_FILES = LICENSE +PERL_MODULE_BUILD_TINY_DISTNAME = Module-Build-Tiny + +$(eval $(host-perl-package)) diff --git a/package/perl-module-build/perl-module-build.hash b/package/perl-module-build/perl-module-build.hash new file mode 100644 index 00000000..590307e7 --- /dev/null +++ b/package/perl-module-build/perl-module-build.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 0032d0c0bc36a3b68ef41c947829d5e3 Module-Build-0.4234.tar.gz +sha256 66aeac6127418be5e471ead3744648c766bd01482825c5b66652675f2bc86a8f Module-Build-0.4234.tar.gz + +# computed by scancpan +sha256 af1570e8af55af52b4e86d040e2a993cb684566275c43c4d7a8b0cc5a90e08a4 LICENSE diff --git a/package/perl-module-build/perl-module-build.mk b/package/perl-module-build/perl-module-build.mk new file mode 100644 index 00000000..972902e0 --- /dev/null +++ b/package/perl-module-build/perl-module-build.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-module-build +# +################################################################################ + +PERL_MODULE_BUILD_VERSION = 0.4234 +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 GPL-1.0+ +PERL_MODULE_BUILD_LICENSE_FILES = LICENSE +PERL_MODULE_BUILD_DISTNAME = Module-Build + +$(eval $(host-perl-package)) diff --git a/package/perl-module-implementation/Config.in b/package/perl-module-implementation/Config.in new file mode 100644 index 00000000..04561dea --- /dev/null +++ b/package/perl-module-implementation/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PERL_MODULE_IMPLEMENTATION + bool "perl-module-implementation" + select BR2_PACKAGE_PERL_MODULE_RUNTIME # runtime + select BR2_PACKAGE_PERL_TRY_TINY # runtime + help + Loads one of several alternate underlying implementations for + a module. + + http://metacpan.org/release/Module-Implementation diff --git a/package/perl-module-implementation/perl-module-implementation.hash b/package/perl-module-implementation/perl-module-implementation.hash new file mode 100644 index 00000000..4e5ebd1d --- /dev/null +++ b/package/perl-module-implementation/perl-module-implementation.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 52e3fe0ca6b1eff0488d59b7aacc0667 Module-Implementation-0.09.tar.gz +sha256 c15f1a12f0c2130c9efff3c2e1afe5887b08ccd033bd132186d1e7d5087fd66d Module-Implementation-0.09.tar.gz + +# computed by scancpan +sha256 dd34e4dbcadfaa3db992201873e1cbb4b4f4c18e9bf000821d5c768e66d7ff0b LICENSE diff --git a/package/perl-module-implementation/perl-module-implementation.mk b/package/perl-module-implementation/perl-module-implementation.mk new file mode 100644 index 00000000..7cf7cbb2 --- /dev/null +++ b/package/perl-module-implementation/perl-module-implementation.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-module-implementation +# +################################################################################ + +PERL_MODULE_IMPLEMENTATION_VERSION = 0.09 +PERL_MODULE_IMPLEMENTATION_SOURCE = Module-Implementation-$(PERL_MODULE_IMPLEMENTATION_VERSION).tar.gz +PERL_MODULE_IMPLEMENTATION_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DR/DROLSKY +PERL_MODULE_IMPLEMENTATION_LICENSE = Artistic-2.0 +PERL_MODULE_IMPLEMENTATION_LICENSE_FILES = LICENSE +PERL_MODULE_IMPLEMENTATION_DISTNAME = Module-Implementation + +$(eval $(perl-package)) diff --git a/package/perl-module-runtime/Config.in b/package/perl-module-runtime/Config.in new file mode 100644 index 00000000..1db03e5b --- /dev/null +++ b/package/perl-module-runtime/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_MODULE_RUNTIME + bool "perl-module-runtime" + help + runtime module handling. + + https://metacpan.org/release/Module-Runtime diff --git a/package/perl-module-runtime/perl-module-runtime.hash b/package/perl-module-runtime/perl-module-runtime.hash new file mode 100644 index 00000000..c87963bf --- /dev/null +++ b/package/perl-module-runtime/perl-module-runtime.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 d3d47222fa2e3dfcb4526f6cc8437b20 Module-Runtime-0.016.tar.gz +sha256 68302ec646833547d410be28e09676db75006f4aa58a11f3bdb44ffe99f0f024 Module-Runtime-0.016.tar.gz + +# computed by scancpan +sha256 ad1761020436687e8493208336ef53e84589fdba212da59b05b8111cca75ddc1 README diff --git a/package/perl-module-runtime/perl-module-runtime.mk b/package/perl-module-runtime/perl-module-runtime.mk new file mode 100644 index 00000000..dcf045cf --- /dev/null +++ b/package/perl-module-runtime/perl-module-runtime.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perl-module-runtime +# +################################################################################ + +PERL_MODULE_RUNTIME_VERSION = 0.016 +PERL_MODULE_RUNTIME_SOURCE = Module-Runtime-$(PERL_MODULE_RUNTIME_VERSION).tar.gz +PERL_MODULE_RUNTIME_SITE = $(BR2_CPAN_MIRROR)/authors/id/Z/ZE/ZEFRAM +PERL_MODULE_RUNTIME_DEPENDENCIES = host-perl-module-build +PERL_MODULE_RUNTIME_LICENSE = Artistic or GPL-1.0+ +PERL_MODULE_RUNTIME_LICENSE_FILES = README +PERL_MODULE_RUNTIME_DISTNAME = Module-Runtime + +$(eval $(perl-package)) diff --git a/package/perl-mojolicious-plugin-authentication/Config.in b/package/perl-mojolicious-plugin-authentication/Config.in new file mode 100644 index 00000000..2f51989f --- /dev/null +++ b/package/perl-mojolicious-plugin-authentication/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_MOJOLICIOUS_PLUGIN_AUTHENTICATION + bool "perl-mojolicious-plugin-authentication" + select BR2_PACKAGE_PERL_MOJOLICIOUS # runtime + help + A plugin to make authentication a bit easier. + + https://github.com/benvanstaveren/Mojolicious-Plugin-Authentication diff --git a/package/perl-mojolicious-plugin-authentication/perl-mojolicious-plugin-authentication.hash b/package/perl-mojolicious-plugin-authentication/perl-mojolicious-plugin-authentication.hash new file mode 100644 index 00000000..fe39b093 --- /dev/null +++ b/package/perl-mojolicious-plugin-authentication/perl-mojolicious-plugin-authentication.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 141dd090f6d8470a0d3483dc1f7aaa20 Mojolicious-Plugin-Authentication-1.39.tar.gz +sha256 9f99cbdf5cacaa3fa3f961bee94de97226d177a36a15e7ba303ae79d132874d1 Mojolicious-Plugin-Authentication-1.39.tar.gz + +# computed by scancpan +sha256 a2b15d79eaf2f13f756816abfe4d3d3fb4c4c206e7fb1a36abb3e741583aac26 LICENSE diff --git a/package/perl-mojolicious-plugin-authentication/perl-mojolicious-plugin-authentication.mk b/package/perl-mojolicious-plugin-authentication/perl-mojolicious-plugin-authentication.mk new file mode 100644 index 00000000..1d5e2511 --- /dev/null +++ b/package/perl-mojolicious-plugin-authentication/perl-mojolicious-plugin-authentication.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-mojolicious-plugin-authentication +# +################################################################################ + +PERL_MOJOLICIOUS_PLUGIN_AUTHENTICATION_VERSION = 1.39 +PERL_MOJOLICIOUS_PLUGIN_AUTHENTICATION_SOURCE = Mojolicious-Plugin-Authentication-$(PERL_MOJOLICIOUS_PLUGIN_AUTHENTICATION_VERSION).tar.gz +PERL_MOJOLICIOUS_PLUGIN_AUTHENTICATION_SITE = $(BR2_CPAN_MIRROR)/authors/id/J/JJ/JJATRIA +PERL_MOJOLICIOUS_PLUGIN_AUTHENTICATION_LICENSE = Artistic or GPL-1.0+ +PERL_MOJOLICIOUS_PLUGIN_AUTHENTICATION_LICENSE_FILES = LICENSE +PERL_MOJOLICIOUS_PLUGIN_AUTHENTICATION_DISTNAME = Mojolicious-Plugin-Authentication + +$(eval $(perl-package)) diff --git a/package/perl-mojolicious-plugin-authorization/Config.in b/package/perl-mojolicious-plugin-authorization/Config.in new file mode 100644 index 00000000..87976cbb --- /dev/null +++ b/package/perl-mojolicious-plugin-authorization/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_MOJOLICIOUS_PLUGIN_AUTHORIZATION + bool "perl-mojolicious-plugin-authorization" + select BR2_PACKAGE_PERL_MOJOLICIOUS # runtime + help + A plugin to make authorization a bit easier. + + https://metacpan.org/module/Mojolicious::Plugin::Authorization diff --git a/package/perl-mojolicious-plugin-authorization/perl-mojolicious-plugin-authorization.hash b/package/perl-mojolicious-plugin-authorization/perl-mojolicious-plugin-authorization.hash new file mode 100644 index 00000000..30bf87ba --- /dev/null +++ b/package/perl-mojolicious-plugin-authorization/perl-mojolicious-plugin-authorization.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 7906886e2a66b84bb3c0edd7ea85c485 Mojolicious-Plugin-Authorization-1.06.tar.gz +sha256 d21ee5ab5fd8c630bc28ce001f9c91bba500370baf7cc8f6f60c9a4e051f9a6c Mojolicious-Plugin-Authorization-1.06.tar.gz + +# computed by scancpan +sha256 dfab85cd06e80a3493217a1dc741cf9065417d2e803d50756f013c0b6cb0cb3e LICENSE diff --git a/package/perl-mojolicious-plugin-authorization/perl-mojolicious-plugin-authorization.mk b/package/perl-mojolicious-plugin-authorization/perl-mojolicious-plugin-authorization.mk new file mode 100644 index 00000000..f136be3b --- /dev/null +++ b/package/perl-mojolicious-plugin-authorization/perl-mojolicious-plugin-authorization.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perl-mojolicious-plugin-authorization +# +################################################################################ + +PERL_MOJOLICIOUS_PLUGIN_AUTHORIZATION_VERSION = 1.06 +PERL_MOJOLICIOUS_PLUGIN_AUTHORIZATION_SOURCE = Mojolicious-Plugin-Authorization-$(PERL_MOJOLICIOUS_PLUGIN_AUTHORIZATION_VERSION).tar.gz +PERL_MOJOLICIOUS_PLUGIN_AUTHORIZATION_SITE = $(BR2_CPAN_MIRROR)/authors/id/B/BY/BYTEROCK +PERL_MOJOLICIOUS_PLUGIN_AUTHORIZATION_DEPENDENCIES = host-perl-module-build +PERL_MOJOLICIOUS_PLUGIN_AUTHORIZATION_LICENSE = Artistic or GPL-1.0+ +PERL_MOJOLICIOUS_PLUGIN_AUTHORIZATION_LICENSE_FILES = LICENSE +PERL_MOJOLICIOUS_PLUGIN_AUTHORIZATION_DISTNAME = Mojolicious-Plugin-Authorization + +$(eval $(perl-package)) diff --git a/package/perl-mojolicious-plugin-cspheader/Config.in b/package/perl-mojolicious-plugin-cspheader/Config.in new file mode 100644 index 00000000..841b3094 --- /dev/null +++ b/package/perl-mojolicious-plugin-cspheader/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PERL_MOJOLICIOUS_PLUGIN_CSPHEADER + bool "perl-mojolicious-plugin-cspheader" + select BR2_PACKAGE_PERL_MOJOLICIOUS # runtime + help + Mojolicious Plugin to add Content-Security-Policy header to + every HTTP response. + + https://metacpan.org/release/Mojolicious-Plugin-CSPHeader diff --git a/package/perl-mojolicious-plugin-cspheader/perl-mojolicious-plugin-cspheader.hash b/package/perl-mojolicious-plugin-cspheader/perl-mojolicious-plugin-cspheader.hash new file mode 100644 index 00000000..a0b0174f --- /dev/null +++ b/package/perl-mojolicious-plugin-cspheader/perl-mojolicious-plugin-cspheader.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 3d1b01c393e7ed576e4b503d26a88a3e Mojolicious-Plugin-CSPHeader-0.06.tar.gz +sha256 0523a170af6620dab5b746725f171a138b6cff3d2d84e1a30af891741550f4a7 Mojolicious-Plugin-CSPHeader-0.06.tar.gz + +# computed by scancpan +sha256 4bb36edd2bcafef11ca615f69607953a31ee05ae172b69990aee317e95653456 LICENSE diff --git a/package/perl-mojolicious-plugin-cspheader/perl-mojolicious-plugin-cspheader.mk b/package/perl-mojolicious-plugin-cspheader/perl-mojolicious-plugin-cspheader.mk new file mode 100644 index 00000000..438d6d51 --- /dev/null +++ b/package/perl-mojolicious-plugin-cspheader/perl-mojolicious-plugin-cspheader.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-mojolicious-plugin-cspheader +# +################################################################################ + +PERL_MOJOLICIOUS_PLUGIN_CSPHEADER_VERSION = 0.06 +PERL_MOJOLICIOUS_PLUGIN_CSPHEADER_SOURCE = Mojolicious-Plugin-CSPHeader-$(PERL_MOJOLICIOUS_PLUGIN_CSPHEADER_VERSION).tar.gz +PERL_MOJOLICIOUS_PLUGIN_CSPHEADER_SITE = $(BR2_CPAN_MIRROR)/authors/id/L/LD/LDIDRY +PERL_MOJOLICIOUS_PLUGIN_CSPHEADER_LICENSE = Artistic or GPL-1.0+ +PERL_MOJOLICIOUS_PLUGIN_CSPHEADER_LICENSE_FILES = LICENSE +PERL_MOJOLICIOUS_PLUGIN_CSPHEADER_DISTNAME = Mojolicious-Plugin-CSPHeader + +$(eval $(perl-package)) diff --git a/package/perl-mojolicious-plugin-i18n/Config.in b/package/perl-mojolicious-plugin-i18n/Config.in new file mode 100644 index 00000000..cbe11451 --- /dev/null +++ b/package/perl-mojolicious-plugin-i18n/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_MOJOLICIOUS_PLUGIN_I18N + bool "perl-mojolicious-plugin-i18n" + select BR2_PACKAGE_PERL_MOJOLICIOUS # runtime + help + Internationalization Plugin for Mojolicious. + + https://metacpan.org/release/Mojolicious-Plugin-I18N diff --git a/package/perl-mojolicious-plugin-i18n/perl-mojolicious-plugin-i18n.hash b/package/perl-mojolicious-plugin-i18n/perl-mojolicious-plugin-i18n.hash new file mode 100644 index 00000000..93a23b01 --- /dev/null +++ b/package/perl-mojolicious-plugin-i18n/perl-mojolicious-plugin-i18n.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 4002f7a7da4c90973ad6eedfb0fcfa16 Mojolicious-Plugin-I18N-1.6.tar.gz +sha256 32fb5ef8037d954b7ecebef5c1b2b24b420abd829702312f4ad42794f52b514d Mojolicious-Plugin-I18N-1.6.tar.gz + +# manually computed +sha256 82b05028033057b388b0040a3b5590a1c51168fe3b9899bffdb5ef7962c4eb47 README.pod diff --git a/package/perl-mojolicious-plugin-i18n/perl-mojolicious-plugin-i18n.mk b/package/perl-mojolicious-plugin-i18n/perl-mojolicious-plugin-i18n.mk new file mode 100644 index 00000000..11d41ac5 --- /dev/null +++ b/package/perl-mojolicious-plugin-i18n/perl-mojolicious-plugin-i18n.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perl-mojolicious-plugin-i18n +# +################################################################################ + +PERL_MOJOLICIOUS_PLUGIN_I18N_VERSION = 1.6 +PERL_MOJOLICIOUS_PLUGIN_I18N_SOURCE = Mojolicious-Plugin-I18N-$(PERL_MOJOLICIOUS_PLUGIN_I18N_VERSION).tar.gz +PERL_MOJOLICIOUS_PLUGIN_I18N_SITE = $(BR2_CPAN_MIRROR)/authors/id/S/SH/SHARIFULN +PERL_MOJOLICIOUS_PLUGIN_I18N_DEPENDENCIES = host-perl-module-build +PERL_MOJOLICIOUS_PLUGIN_I18N_LICENSE = Artistic-2.0 +PERL_MOJOLICIOUS_PLUGIN_I18N_LICENSE_FILES = README.pod +PERL_MOJOLICIOUS_PLUGIN_I18N_DISTNAME = Mojolicious-Plugin-I18N + +$(eval $(perl-package)) diff --git a/package/perl-mojolicious-plugin-securityheader/Config.in b/package/perl-mojolicious-plugin-securityheader/Config.in new file mode 100644 index 00000000..35e8e122 --- /dev/null +++ b/package/perl-mojolicious-plugin-securityheader/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_MOJOLICIOUS_PLUGIN_SECURITYHEADER + bool "perl-mojolicious-plugin-securityheader" + select BR2_PACKAGE_PERL_MOJOLICIOUS # runtime + help + Mojolicious Plugin. + + http://github.com/reneeb/Mojolicious-Plugin-SecurityHeader diff --git a/package/perl-mojolicious-plugin-securityheader/perl-mojolicious-plugin-securityheader.hash b/package/perl-mojolicious-plugin-securityheader/perl-mojolicious-plugin-securityheader.hash new file mode 100644 index 00000000..74dcd522 --- /dev/null +++ b/package/perl-mojolicious-plugin-securityheader/perl-mojolicious-plugin-securityheader.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 38cf59258547ac866577db2d43632f30 Mojolicious-Plugin-SecurityHeader-0.07.tar.gz +sha256 940474eaf7a415e5117b004387862473612e079a413590db1eb9c85d17a6648f Mojolicious-Plugin-SecurityHeader-0.07.tar.gz + +# computed by scancpan +sha256 0c38e4629cc9eee869217d62ad765e581e54958596672046a62dfa4cfd87bb09 LICENSE diff --git a/package/perl-mojolicious-plugin-securityheader/perl-mojolicious-plugin-securityheader.mk b/package/perl-mojolicious-plugin-securityheader/perl-mojolicious-plugin-securityheader.mk new file mode 100644 index 00000000..1f287f6f --- /dev/null +++ b/package/perl-mojolicious-plugin-securityheader/perl-mojolicious-plugin-securityheader.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-mojolicious-plugin-securityheader +# +################################################################################ + +PERL_MOJOLICIOUS_PLUGIN_SECURITYHEADER_VERSION = 0.07 +PERL_MOJOLICIOUS_PLUGIN_SECURITYHEADER_SOURCE = Mojolicious-Plugin-SecurityHeader-$(PERL_MOJOLICIOUS_PLUGIN_SECURITYHEADER_VERSION).tar.gz +PERL_MOJOLICIOUS_PLUGIN_SECURITYHEADER_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RE/RENEEB +PERL_MOJOLICIOUS_PLUGIN_SECURITYHEADER_LICENSE = Artistic-2.0 +PERL_MOJOLICIOUS_PLUGIN_SECURITYHEADER_LICENSE_FILES = LICENSE +PERL_MOJOLICIOUS_PLUGIN_SECURITYHEADER_DISTNAME = Mojolicious-Plugin-SecurityHeader + +$(eval $(perl-package)) diff --git a/package/perl-mojolicious/Config.in b/package/perl-mojolicious/Config.in new file mode 100644 index 00000000..8bcce5f0 --- /dev/null +++ b/package/perl-mojolicious/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_MOJOLICIOUS + bool "perl-mojolicious" + help + Real-time web framework. + + https://mojolicious.org diff --git a/package/perl-mojolicious/perl-mojolicious.hash b/package/perl-mojolicious/perl-mojolicious.hash new file mode 100644 index 00000000..b1ff561f --- /dev/null +++ b/package/perl-mojolicious/perl-mojolicious.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 8fba4deae54681d560c275c28803b48c Mojolicious-9.35.tar.gz +sha256 6a4a446ee07fca7c6db72f5d817540d6833009cb8de7cce4c6fb24a15ee7d46b Mojolicious-9.35.tar.gz + +# computed by scancpan +sha256 19e2e0f2079ea1ce1576eb4ecc0575b33fe45b2b8e71f4aa589d6bedd1da4e0a LICENSE diff --git a/package/perl-mojolicious/perl-mojolicious.mk b/package/perl-mojolicious/perl-mojolicious.mk new file mode 100644 index 00000000..4657d279 --- /dev/null +++ b/package/perl-mojolicious/perl-mojolicious.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-mojolicious +# +################################################################################ + +PERL_MOJOLICIOUS_VERSION = 9.35 +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 +PERL_MOJOLICIOUS_LICENSE_FILES = LICENSE +PERL_MOJOLICIOUS_DISTNAME = Mojolicious + +$(eval $(perl-package)) diff --git a/package/perl-moo/Config.in b/package/perl-moo/Config.in new file mode 100644 index 00000000..9b2b4a8c --- /dev/null +++ b/package/perl-moo/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PERL_MOO + bool "perl-moo" + select BR2_PACKAGE_PERL_CLASS_METHOD_MODIFIERS # runtime + select BR2_PACKAGE_PERL_ROLE_TINY # runtime + select BR2_PACKAGE_PERL_SUB_QUOTE # runtime + help + Minimalist Object Orientation (with Moose compatibility). + + https://metacpan.org/release/Moo diff --git a/package/perl-moo/perl-moo.hash b/package/perl-moo/perl-moo.hash new file mode 100644 index 00000000..f70646de --- /dev/null +++ b/package/perl-moo/perl-moo.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 259530e5ea37a1bf968f6cf18a25db86 Moo-2.005005.tar.gz +sha256 fb5a2952649faed07373f220b78004a9c6aba387739133740c1770e9b1f4b108 Moo-2.005005.tar.gz + +# computed by scancpan +sha256 de7a14750e81d97e19e111df58a3b51e3f2c8ec2d2dd90f576f54243251972c6 LICENSE diff --git a/package/perl-moo/perl-moo.mk b/package/perl-moo/perl-moo.mk new file mode 100644 index 00000000..18e32688 --- /dev/null +++ b/package/perl-moo/perl-moo.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-moo +# +################################################################################ + +PERL_MOO_VERSION = 2.005005 +PERL_MOO_SOURCE = Moo-$(PERL_MOO_VERSION).tar.gz +PERL_MOO_SITE = $(BR2_CPAN_MIRROR)/authors/id/H/HA/HAARG +PERL_MOO_LICENSE = Artistic or GPL-1.0+ +PERL_MOO_LICENSE_FILES = LICENSE +PERL_MOO_DISTNAME = Moo + +$(eval $(perl-package)) diff --git a/package/perl-mozilla-ca/Config.in b/package/perl-mozilla-ca/Config.in new file mode 100644 index 00000000..733d07e1 --- /dev/null +++ b/package/perl-mozilla-ca/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_MOZILLA_CA + bool "perl-mozilla-ca" + help + Mozilla's CA cert bundle in PEM format. + + https://metacpan.org/release/Mozilla-CA diff --git a/package/perl-mozilla-ca/perl-mozilla-ca.hash b/package/perl-mozilla-ca/perl-mozilla-ca.hash new file mode 100644 index 00000000..c9bdd052 --- /dev/null +++ b/package/perl-mozilla-ca/perl-mozilla-ca.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 680e2107973ee6f461e3c0ab57066489 Mozilla-CA-20231213.tar.gz +sha256 421a12ba7cef443bd368671cee9c9b46a8b55c2ccf7ac76c42f99e23a06115df Mozilla-CA-20231213.tar.gz + +# computed by scancpan +sha256 95cd63dae5c2bf6e7cf33435981614a36c85ef01fc7a02464e05e58a5355398e README diff --git a/package/perl-mozilla-ca/perl-mozilla-ca.mk b/package/perl-mozilla-ca/perl-mozilla-ca.mk new file mode 100644 index 00000000..92fb3cec --- /dev/null +++ b/package/perl-mozilla-ca/perl-mozilla-ca.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-mozilla-ca +# +################################################################################ + +PERL_MOZILLA_CA_VERSION = 20231213 +PERL_MOZILLA_CA_SOURCE = Mozilla-CA-$(PERL_MOZILLA_CA_VERSION).tar.gz +PERL_MOZILLA_CA_SITE = $(BR2_CPAN_MIRROR)/authors/id/L/LW/LWP +PERL_MOZILLA_CA_LICENSE = MPL-2.0 +PERL_MOZILLA_CA_LICENSE_FILES = README +PERL_MOZILLA_CA_DISTNAME = Mozilla-CA + +$(eval $(perl-package)) diff --git a/package/perl-net-dns/Config.in b/package/perl-net-dns/Config.in new file mode 100644 index 00000000..cf686554 --- /dev/null +++ b/package/perl-net-dns/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_NET_DNS + bool "perl-net-dns" + select BR2_PACKAGE_PERL_DIGEST_HMAC # runtime + help + Perl Interface to the Domain Name System. + + https://metacpan.org/release/Net-DNS diff --git a/package/perl-net-dns/perl-net-dns.hash b/package/perl-net-dns/perl-net-dns.hash new file mode 100644 index 00000000..f025d36a --- /dev/null +++ b/package/perl-net-dns/perl-net-dns.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 7c88cae0cac342f3fd43e7d99b29bf2a Net-DNS-1.42.tar.gz +sha256 48dea4d57b25deff5590e18f398a34a52256cb9f0cbf4b7a9ad2ec6fb5182cbe Net-DNS-1.42.tar.gz + +# computed by scancpan +sha256 1e44fcf65509b47a251eda0ce1f8bd6aefa13517e38cb1e95b8d36120fb15452 LICENSE diff --git a/package/perl-net-dns/perl-net-dns.mk b/package/perl-net-dns/perl-net-dns.mk new file mode 100644 index 00000000..5b6c1ba1 --- /dev/null +++ b/package/perl-net-dns/perl-net-dns.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-net-dns +# +################################################################################ + +PERL_NET_DNS_VERSION = 1.42 +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_LICENSE = MIT +PERL_NET_DNS_LICENSE_FILES = LICENSE +PERL_NET_DNS_DISTNAME = Net-DNS + +$(eval $(perl-package)) diff --git a/package/perl-net-http/Config.in b/package/perl-net-http/Config.in new file mode 100644 index 00000000..c09f3843 --- /dev/null +++ b/package/perl-net-http/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_NET_HTTP + bool "perl-net-http" + select BR2_PACKAGE_PERL_URI # runtime + help + Low-level HTTP connection (client). + + https://github.com/libwww-perl/Net-HTTP diff --git a/package/perl-net-http/perl-net-http.hash b/package/perl-net-http/perl-net-http.hash new file mode 100644 index 00000000..094b9e5d --- /dev/null +++ b/package/perl-net-http/perl-net-http.hash @@ -0,0 +1,5 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +sha256 0d65c09dd6c8589b2ae1118174d3c1a61703b6ecfc14a3442a8c74af65e0c94e Net-HTTP-6.23.tar.gz + +# computed by scancpan +sha256 0ed700a4bfc022e999d83407f71ab62ead96662d8f7bbebfd857376bf3ed6528 LICENSE diff --git a/package/perl-net-http/perl-net-http.mk b/package/perl-net-http/perl-net-http.mk new file mode 100644 index 00000000..08e81f95 --- /dev/null +++ b/package/perl-net-http/perl-net-http.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-net-http +# +################################################################################ + +PERL_NET_HTTP_VERSION = 6.23 +PERL_NET_HTTP_SOURCE = Net-HTTP-$(PERL_NET_HTTP_VERSION).tar.gz +PERL_NET_HTTP_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS +PERL_NET_HTTP_LICENSE = Artistic or GPL-1.0+ +PERL_NET_HTTP_LICENSE_FILES = LICENSE +PERL_NET_HTTP_DISTNAME = Net-HTTP + +$(eval $(perl-package)) diff --git a/package/perl-net-snmp/Config.in b/package/perl-net-snmp/Config.in new file mode 100644 index 00000000..850cd9ba --- /dev/null +++ b/package/perl-net-snmp/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_NET_SNMP + bool "perl-net-snmp" + help + Object oriented interface to SNMP. + + https://metacpan.org/release/Net-SNMP diff --git a/package/perl-net-snmp/perl-net-snmp.hash b/package/perl-net-snmp/perl-net-snmp.hash new file mode 100644 index 00000000..74d860d9 --- /dev/null +++ b/package/perl-net-snmp/perl-net-snmp.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 6137f04f9942d703f66179f890e3d096 Net-SNMP-v6.0.1.tar.gz +sha256 14c37bc1cbb3f3cdc7d6c13e0f27a859f14cdcfd5ea54a0467a88bc259b0b741 Net-SNMP-v6.0.1.tar.gz + +# computed by scancpan +sha256 a038159be54a2807dc48e2b946514d59fceab6737d5461d93d55297a98e6e24e LICENSE diff --git a/package/perl-net-snmp/perl-net-snmp.mk b/package/perl-net-snmp/perl-net-snmp.mk new file mode 100644 index 00000000..36b50d63 --- /dev/null +++ b/package/perl-net-snmp/perl-net-snmp.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perl-net-snmp +# +################################################################################ + +PERL_NET_SNMP_VERSION = 6.0.1 +PERL_NET_SNMP_SOURCE = Net-SNMP-v$(PERL_NET_SNMP_VERSION).tar.gz +PERL_NET_SNMP_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DT/DTOWN +PERL_NET_SNMP_DEPENDENCIES = host-perl-module-build +PERL_NET_SNMP_LICENSE = Artistic or GPL-1.0+ +PERL_NET_SNMP_LICENSE_FILES = LICENSE +PERL_NET_SNMP_DISTNAME = Net-SNMP + +$(eval $(perl-package)) diff --git a/package/perl-net-ssh2/Config.in b/package/perl-net-ssh2/Config.in new file mode 100644 index 00000000..4dfd6e1d --- /dev/null +++ b/package/perl-net-ssh2/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_PERL_NET_SSH2 + bool "perl-net-ssh2" + depends on !BR2_STATIC_LIBS + depends on BR2_PACKAGE_LIBSSH2_OPENSSL || BR2_PACKAGE_LIBSSH2_LIBGCRYPT + select BR2_PACKAGE_ZLIB + help + Support for the SSH 2 protocol via libssh2. + + Note: only the OpenSSL and Libgcrypt backends of libssh2 are + supported. + + https://metacpan.org/release/Net-SSH2 + +comment "perl-net-ssh2 needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +comment "perl-net-ssh2 needs libssh2 with OpenSSL or Libgcrypt backend" + depends on !(BR2_PACKAGE_LIBSSH2_OPENSSL || BR2_PACKAGE_LIBSSH2_LIBGCRYPT) diff --git a/package/perl-net-ssh2/perl-net-ssh2.hash b/package/perl-net-ssh2/perl-net-ssh2.hash new file mode 100644 index 00000000..b2e8b2d4 --- /dev/null +++ b/package/perl-net-ssh2/perl-net-ssh2.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 57aa0f6e2be4020f75888a7195ad5cba Net-SSH2-0.72.tar.gz +sha256 867d83070fac6436b9f0971918243002072fbf8d2724a87c254b34250dce0222 Net-SSH2-0.72.tar.gz + +# computed by scancpan +sha256 268afaee7aa88a41959c93cd91853e8124bdbe64a74480d36ff1130e01a1c0ca README.pod diff --git a/package/perl-net-ssh2/perl-net-ssh2.mk b/package/perl-net-ssh2/perl-net-ssh2.mk new file mode 100644 index 00000000..20e45b62 --- /dev/null +++ b/package/perl-net-ssh2/perl-net-ssh2.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# perl-net-ssh2 +# +################################################################################ + +PERL_NET_SSH2_VERSION = 0.72 +PERL_NET_SSH2_SOURCE = Net-SSH2-$(PERL_NET_SSH2_VERSION).tar.gz +PERL_NET_SSH2_SITE = $(BR2_CPAN_MIRROR)/authors/id/S/SA/SALVA +PERL_NET_SSH2_LICENSE = Artistic or GPL-1.0+ +PERL_NET_SSH2_LICENSE_FILES = README.pod +PERL_NET_SSH2_DEPENDENCIES = libssh2 zlib +PERL_NET_SSH2_DISTNAME = Net-SSH2 + +# build system will use host search paths by default +PERL_NET_SSH2_CONF_OPTS += \ + lib="$(STAGING_DIR)/usr/lib" \ + inc="$(STAGING_DIR)/usr/include" + +ifeq ($(BR2_PACKAGE_LIBSSH2_LIBGCRYPT),y) +PERL_NET_SSH2_CONF_OPTS += crypto_backend=gcrypt +endif + +$(eval $(perl-package)) diff --git a/package/perl-net-ssleay/0001-fix-build-system.patch b/package/perl-net-ssleay/0001-fix-build-system.patch new file mode 100644 index 00000000..a5ccf464 --- /dev/null +++ b/package/perl-net-ssleay/0001-fix-build-system.patch @@ -0,0 +1,36 @@ +buildsystem: fix for cross-compilation + +Avoid running the openssl binary, since it would break for +cross-compilation. Buildroot has a supported version, anyway. + +Also, avoid adding hard-coded includes and libraries search +paths, since they are missing the destdir; Buildroot compilers +and linkers already know where to search, anyway. + +Signed-off-by: "Yann E. MORIN" +[Fabrice: update for 1.93_01] +Signed-off-by: Fabrice Fontaine + +diff -durN perl-net-ssleay-1.64.orig/inc/Module/Install/PRIVATE/Net/SSLeay.pm perl-net-ssleay-1.64/inc/Module/Install/PRIVATE/Net/SSLeay.pm +--- perl-net-ssleay-1.64.orig/Makefile.PL 2014-04-01 08:08:37.000000000 +0200 ++++ perl-net-ssleay-1.64/Makefile.PL 2014-07-13 00:38:46.281380282 +0200 +@@ -192,12 +192,16 @@ + exit MISSING_PREREQ; + } + +- check_openssl_version($prefix, $exec); ++# Does not work for cross-compilation. ++# In Buildroot, we do have a supported version. ++# check_openssl_version($prefix, $exec); + my %args = ( + CCCDLFLAGS => $opts->{cccdlflags}, + OPTIMIZE => $opts->{optimize}, +- INC => qq{-I"$opts->{inc_path}"}, +- LIBS => join(' ', (map '-L'.maybe_quote($_), @{$opts->{lib_paths}}), (map {"-l$_"} @{$opts->{lib_links}})), ++# Buildroot already has the correct include and library search paths. ++# INC => qq{-I"$opts->{inc_path}"}, ++# LIBS => join(' ', (map '-L'.maybe_quote($_), @{$opts->{lib_paths}}), (map {"-l$_"} @{$opts->{lib_links}})), ++ LIBS => join(' ', (map {"-l$_"} @{$opts->{lib_links}})), + ); + # From HMBRAND to handle multple version of OPENSSL installed + if (my $lp = join " " => map '-L'.maybe_quote($_), @{$opts->{lib_paths} || []}) diff --git a/package/perl-net-ssleay/Config.in b/package/perl-net-ssleay/Config.in new file mode 100644 index 00000000..d699e667 --- /dev/null +++ b/package/perl-net-ssleay/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PERL_NET_SSLEAY + bool "perl-net-ssleay" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 if BR2_PACKAGE_LIBOPENSSL + help + Perl extension for using OpenSSL. + + https://metacpan.org/release/Net-SSLeay + +comment "perl-net-ssleay needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-net-ssleay/perl-net-ssleay.hash b/package/perl-net-ssleay/perl-net-ssleay.hash new file mode 100644 index 00000000..219edd4e --- /dev/null +++ b/package/perl-net-ssleay/perl-net-ssleay.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 1b22c764e5a094c6261e37a4b1f148ce Net-SSLeay-1.94.tar.gz +sha256 9d7be8a56d1bedda05c425306cc504ba134307e0c09bda4a788c98744ebcd95d Net-SSLeay-1.94.tar.gz + +# computed by scancpan +sha256 685e534b60d4e2b4fbb1a259a83b5a86e877a919bbb9efc95994276f706a3a71 LICENSE diff --git a/package/perl-net-ssleay/perl-net-ssleay.mk b/package/perl-net-ssleay/perl-net-ssleay.mk new file mode 100644 index 00000000..7f580930 --- /dev/null +++ b/package/perl-net-ssleay/perl-net-ssleay.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# perl-net-ssleay +# +################################################################################ + +PERL_NET_SSLEAY_VERSION = 1.94 +PERL_NET_SSLEAY_SOURCE = Net-SSLeay-$(PERL_NET_SSLEAY_VERSION).tar.gz +PERL_NET_SSLEAY_SITE = $(BR2_CPAN_MIRROR)/authors/id/C/CH/CHRISN +PERL_NET_SSLEAY_DEPENDENCIES = openssl +PERL_NET_SSLEAY_LICENSE = Artistic-2.0 +PERL_NET_SSLEAY_LICENSE_FILES = LICENSE +PERL_NET_SSLEAY_DISTNAME = Net-SSLeay + +# Try as hard as possible to remedy to the brain-damage their build-system +# suffers from: don't search for openssl, they pick the host-system one. +PERL_NET_SSLEAY_CONF_ENV = OPENSSL_PREFIX=$(STAGING_DIR)/usr + +# Remove problematic single quotes in LDDLFLAGS, CCFLAGS & OPTIMIZE definition +define PERL_NET_SSLEAY_FIX_MAKEFILE + $(SED) "s/^LDDLFLAGS = '\(.*\)'/LDDLFLAGS = \1/" $(@D)/Makefile + $(SED) "s/^CCFLAGS = '\(.*\)'/CCFLAGS = \1/" $(@D)/Makefile + $(SED) "s/^OPTIMIZE = '\(.*\)'/OPTIMIZE = \1/" $(@D)/Makefile +endef +PERL_NET_SSLEAY_POST_CONFIGURE_HOOKS += PERL_NET_SSLEAY_FIX_MAKEFILE + +ifeq ($(BR2_PACKAGE_LIBRESSL),y) +define PERL_NET_SSLEAY_DROP_ZLIB_MAKEFILE + $(SED) "s/-lz//" $(@D)/Makefile +endef +PERL_NET_SSLEAY_POST_CONFIGURE_HOOKS += PERL_NET_SSLEAY_DROP_ZLIB_MAKEFILE +endif + +$(eval $(perl-package)) diff --git a/package/perl-net-telnet/Config.in b/package/perl-net-telnet/Config.in new file mode 100644 index 00000000..c4f68072 --- /dev/null +++ b/package/perl-net-telnet/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_NET_TELNET + bool "perl-net-telnet" + help + Interact with TELNET port or other TCP ports. + + https://metacpan.org/release/Net-Telnet diff --git a/package/perl-net-telnet/perl-net-telnet.hash b/package/perl-net-telnet/perl-net-telnet.hash new file mode 100644 index 00000000..c6dc0ca6 --- /dev/null +++ b/package/perl-net-telnet/perl-net-telnet.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 c8573c57a2d9469f038c40ac284b1e5f Net-Telnet-3.05.tar.gz +sha256 677f68ba2cd2a824fae323fa82e183bf7e3d03c3c499c91d923bd6283796a743 Net-Telnet-3.05.tar.gz + +# computed by scancpan +sha256 22d0a3343b46c7857cd7d06cb37fe437d467df71aa5854af515374e1e8bf6c53 README diff --git a/package/perl-net-telnet/perl-net-telnet.mk b/package/perl-net-telnet/perl-net-telnet.mk new file mode 100644 index 00000000..ec3c0221 --- /dev/null +++ b/package/perl-net-telnet/perl-net-telnet.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-net-telnet +# +################################################################################ + +PERL_NET_TELNET_VERSION = 3.05 +PERL_NET_TELNET_SOURCE = Net-Telnet-$(PERL_NET_TELNET_VERSION).tar.gz +PERL_NET_TELNET_SITE = $(BR2_CPAN_MIRROR)/authors/id/J/JR/JROGERS +PERL_NET_TELNET_LICENSE = Artistic or GPL-1.0+ +PERL_NET_TELNET_LICENSE_FILES = README +PERL_NET_TELNET_DISTNAME = Net-Telnet + +$(eval $(perl-package)) diff --git a/package/perl-netaddr-ip/Config.in b/package/perl-netaddr-ip/Config.in new file mode 100644 index 00000000..3536c349 --- /dev/null +++ b/package/perl-netaddr-ip/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_NETADDR_IP + bool "perl-netaddr-ip" + help + Manages IPv4 and IPv6 addresses and subnets. + + https://metacpan.org/release/NetAddr-IP diff --git a/package/perl-netaddr-ip/perl-netaddr-ip.hash b/package/perl-netaddr-ip/perl-netaddr-ip.hash new file mode 100644 index 00000000..8912fc6a --- /dev/null +++ b/package/perl-netaddr-ip/perl-netaddr-ip.hash @@ -0,0 +1,7 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 990dfcbffae356835c536e8ab56a2880 NetAddr-IP-4.079.tar.gz +sha256 ec5a82dfb7028bcd28bb3d569f95d87dd4166cc19867f2184ed3a59f6d6ca0e7 NetAddr-IP-4.079.tar.gz + +# computed by scancpan +sha256 b7fd9b73ea99602016a326e0b62e6646060d18febdd065ceca8bb482208c3d88 Artistic +sha256 773a84089e32147cffef4c6fa127a14658c8c5866987d71d86f0fe22161780f4 Copying diff --git a/package/perl-netaddr-ip/perl-netaddr-ip.mk b/package/perl-netaddr-ip/perl-netaddr-ip.mk new file mode 100644 index 00000000..c4885715 --- /dev/null +++ b/package/perl-netaddr-ip/perl-netaddr-ip.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# perl-netaddr-ip +# +################################################################################ + +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 GPL-1.0+ +PERL_NETADDR_IP_LICENSE_FILES = Artistic Copying +PERL_NETADDR_IP_DISTNAME = NetAddr-IP + +ifeq ($(BR2_STATIC_LIBS),y) +PERL_NETADDR_IP_CONF_OPTS += -noxs +endif + +$(eval $(perl-package)) diff --git a/package/perl-number-bytes-human/Config.in b/package/perl-number-bytes-human/Config.in new file mode 100644 index 00000000..b56f70b0 --- /dev/null +++ b/package/perl-number-bytes-human/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_NUMBER_BYTES_HUMAN + bool "perl-number-bytes-human" + help + Convert byte count to human readable format. + + https://metacpan.org/release/Number-Bytes-Human diff --git a/package/perl-number-bytes-human/perl-number-bytes-human.hash b/package/perl-number-bytes-human/perl-number-bytes-human.hash new file mode 100644 index 00000000..55bbf8f8 --- /dev/null +++ b/package/perl-number-bytes-human/perl-number-bytes-human.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 43d2c86a55924aa71535a41de0311efd Number-Bytes-Human-0.11.tar.gz +sha256 5fc79c49b0b40df780479c43696381343e2b6ad1fe52859f60bc65b66ebe6f2c Number-Bytes-Human-0.11.tar.gz + +# computed by scancpan +sha256 d42143fe4b63cb5d488d65a44e6c55769b098ea447462ff33316b33a837b7cf9 README diff --git a/package/perl-number-bytes-human/perl-number-bytes-human.mk b/package/perl-number-bytes-human/perl-number-bytes-human.mk new file mode 100644 index 00000000..d2d712f8 --- /dev/null +++ b/package/perl-number-bytes-human/perl-number-bytes-human.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-number-bytes-human +# +################################################################################ + +PERL_NUMBER_BYTES_HUMAN_VERSION = 0.11 +PERL_NUMBER_BYTES_HUMAN_SOURCE = Number-Bytes-Human-$(PERL_NUMBER_BYTES_HUMAN_VERSION).tar.gz +PERL_NUMBER_BYTES_HUMAN_SITE = $(BR2_CPAN_MIRROR)/authors/id/F/FE/FERREIRA +PERL_NUMBER_BYTES_HUMAN_LICENSE = Artistic or GPL-1.0+ +PERL_NUMBER_BYTES_HUMAN_LICENSE_FILES = README +PERL_NUMBER_BYTES_HUMAN_DISTNAME = Number-Bytes-Human + +$(eval $(perl-package)) diff --git a/package/perl-package-stash/Config.in b/package/perl-package-stash/Config.in new file mode 100644 index 00000000..05506c24 --- /dev/null +++ b/package/perl-package-stash/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PERL_PACKAGE_STASH + bool "perl-package-stash" + select BR2_PACKAGE_PERL_DIST_CHECKCONFLICTS # runtime + select BR2_PACKAGE_PERL_MODULE_IMPLEMENTATION # runtime + help + Routines for manipulating stashes. + + https://github.com/moose/Package-Stash diff --git a/package/perl-package-stash/perl-package-stash.hash b/package/perl-package-stash/perl-package-stash.hash new file mode 100644 index 00000000..329d2dbb --- /dev/null +++ b/package/perl-package-stash/perl-package-stash.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 7a2922941cc2aad6a52642e4fb13d07b Package-Stash-0.40.tar.gz +sha256 5a9722c6d9cb29ee133e5f7b08a5362762a0b5633ff5170642a5b0686e95e066 Package-Stash-0.40.tar.gz + +# computed by scancpan +sha256 5f82745d355b43f451c557642618cbd903251192b89f31ca53eaab90c35aeb7c LICENSE diff --git a/package/perl-package-stash/perl-package-stash.mk b/package/perl-package-stash/perl-package-stash.mk new file mode 100644 index 00000000..dd93314d --- /dev/null +++ b/package/perl-package-stash/perl-package-stash.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-package-stash +# +################################################################################ + +PERL_PACKAGE_STASH_VERSION = 0.40 +PERL_PACKAGE_STASH_SOURCE = Package-Stash-$(PERL_PACKAGE_STASH_VERSION).tar.gz +PERL_PACKAGE_STASH_SITE = $(BR2_CPAN_MIRROR)/authors/id/E/ET/ETHER +PERL_PACKAGE_STASH_LICENSE = Artistic or GPL-1.0+ +PERL_PACKAGE_STASH_LICENSE_FILES = LICENSE +PERL_PACKAGE_STASH_DISTNAME = Package-Stash + +$(eval $(perl-package)) diff --git a/package/perl-params-util/Config.in b/package/perl-params-util/Config.in new file mode 100644 index 00000000..bbc82167 --- /dev/null +++ b/package/perl-params-util/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PERL_PARAMS_UTIL + bool "perl-params-util" + depends on !BR2_STATIC_LIBS + help + Simple, compact and correct param-checking functions. + + https://metacpan.org/release/Params-Util + +comment "perl-params-util needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-params-util/perl-params-util.hash b/package/perl-params-util/perl-params-util.hash new file mode 100644 index 00000000..b0461372 --- /dev/null +++ b/package/perl-params-util/perl-params-util.hash @@ -0,0 +1,8 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 f1aa70ba570f03f14cd394096b9c6883 Params-Util-1.102.tar.gz +sha256 499bb1b482db24fda277a51525596ad092c2bd51dd508fa8fec2e9f849097402 Params-Util-1.102.tar.gz + +# computed by scancpan +sha256 08c2ed7589aff3b2076b48b792078d3479c2295559ee7bc4615e93abe0473939 ARTISTIC-1.0 +sha256 3d2fb9b42d1134f39c2e990d66b5e9b77005663fe956db526cc380eb3d9a77d8 GPL-1 +sha256 834c4ebff45be11f35f059b077fdd747dee4b8a747b95049d849fef1c0ccdc62 LICENSE diff --git a/package/perl-params-util/perl-params-util.mk b/package/perl-params-util/perl-params-util.mk new file mode 100644 index 00000000..8c2a960c --- /dev/null +++ b/package/perl-params-util/perl-params-util.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-params-util +# +################################################################################ + +PERL_PARAMS_UTIL_VERSION = 1.102 +PERL_PARAMS_UTIL_SOURCE = Params-Util-$(PERL_PARAMS_UTIL_VERSION).tar.gz +PERL_PARAMS_UTIL_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RE/REHSACK +PERL_PARAMS_UTIL_LICENSE = Artistic or GPL-1.0+ +PERL_PARAMS_UTIL_LICENSE_FILES = ARTISTIC-1.0 GPL-1 LICENSE +PERL_PARAMS_UTIL_DISTNAME = Params-Util + +$(eval $(perl-package)) diff --git a/package/perl-parse-yapp/Config.in b/package/perl-parse-yapp/Config.in new file mode 100644 index 00000000..27816826 --- /dev/null +++ b/package/perl-parse-yapp/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_PARSE_YAPP + bool "perl-parse-yapp" + help + A perl frontend to the Parse::Yapp module. + + https://metacpan.org/release/Parse-Yapp diff --git a/package/perl-parse-yapp/perl-parse-yapp.hash b/package/perl-parse-yapp/perl-parse-yapp.hash new file mode 100644 index 00000000..36541592 --- /dev/null +++ b/package/perl-parse-yapp/perl-parse-yapp.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 69584d5b0f0304bb2a23cffcd982c5de Parse-Yapp-1.21.tar.gz +sha256 3810e998308fba2e0f4f26043035032b027ce51ce5c8a52a8b8e340ca65f13e5 Parse-Yapp-1.21.tar.gz + +# locally computed +sha256 a5d97e3ee50ba12b7897841a117790f723795e4a61e5ad1668dc064956c84e96 lib/Parse/Yapp.pm diff --git a/package/perl-parse-yapp/perl-parse-yapp.mk b/package/perl-parse-yapp/perl-parse-yapp.mk new file mode 100644 index 00000000..12f05efe --- /dev/null +++ b/package/perl-parse-yapp/perl-parse-yapp.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perl-parse-yapp +# +################################################################################ + +PERL_PARSE_YAPP_VERSION = 1.21 +PERL_PARSE_YAPP_SOURCE = Parse-Yapp-$(PERL_PARSE_YAPP_VERSION).tar.gz +PERL_PARSE_YAPP_SITE = $(BR2_CPAN_MIRROR)/authors/id/W/WB/WBRASWELL +PERL_PARSE_YAPP_LICENSE = Artistic or GPL-1.0+ +PERL_PARSE_YAPP_LICENSE_FILES = lib/Parse/Yapp.pm +PERL_PARSE_YAPP_DISTNAME = Parse-Yapp + +$(eval $(perl-package)) +$(eval $(host-perl-package)) diff --git a/package/perl-path-class/perl-path-class.hash b/package/perl-path-class/perl-path-class.hash new file mode 100644 index 00000000..96f8928f --- /dev/null +++ b/package/perl-path-class/perl-path-class.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 13e6db714f6d5a0e62ca1c4a7fc4d0f3 Path-Class-0.37.tar.gz +sha256 654781948602386f2cb2e4473a739f17dc6953d92aabc2498a4ca2561bc248ce Path-Class-0.37.tar.gz + +# computed by scancpan +sha256 636b5c82eabfe3d4cd86126db9502fd537d1442ad2c88c93dbe221e62b5f1710 LICENSE diff --git a/package/perl-path-class/perl-path-class.mk b/package/perl-path-class/perl-path-class.mk new file mode 100644 index 00000000..185b7f63 --- /dev/null +++ b/package/perl-path-class/perl-path-class.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perl-path-class +# +################################################################################ + +PERL_PATH_CLASS_VERSION = 0.37 +PERL_PATH_CLASS_SOURCE = Path-Class-$(PERL_PATH_CLASS_VERSION).tar.gz +PERL_PATH_CLASS_SITE = $(BR2_CPAN_MIRROR)/authors/id/K/KW/KWILLIAMS +HOST_PERL_PATH_CLASS_DEPENDENCIES = host-perl-module-build +PERL_PATH_CLASS_LICENSE = Artistic or GPL-1.0+ +PERL_PATH_CLASS_LICENSE_FILES = LICENSE +PERL_PATH_CLASS_DISTNAME = Path-Class + +$(eval $(host-perl-package)) diff --git a/package/perl-path-tiny/Config.in b/package/perl-path-tiny/Config.in new file mode 100644 index 00000000..f79de73e --- /dev/null +++ b/package/perl-path-tiny/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_PATH_TINY + bool "perl-path-tiny" + help + File path utility. + + https://github.com/dagolden/Path-Tiny diff --git a/package/perl-path-tiny/perl-path-tiny.hash b/package/perl-path-tiny/perl-path-tiny.hash new file mode 100644 index 00000000..7874846b --- /dev/null +++ b/package/perl-path-tiny/perl-path-tiny.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 7b2fc4f5edfd29b88d2cc3b96830e7d1 Path-Tiny-0.144.tar.gz +sha256 f6ea094ece845c952a02c2789332579354de8d410a707f9b7045bd241206487d Path-Tiny-0.144.tar.gz + +# computed by scancpan +sha256 c1a19c0d83f668a784640c0b41e024f37b182ad38011b170f9200123e57f6070 LICENSE diff --git a/package/perl-path-tiny/perl-path-tiny.mk b/package/perl-path-tiny/perl-path-tiny.mk new file mode 100644 index 00000000..6d784a0d --- /dev/null +++ b/package/perl-path-tiny/perl-path-tiny.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-path-tiny +# +################################################################################ + +PERL_PATH_TINY_VERSION = 0.144 +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 +PERL_PATH_TINY_LICENSE_FILES = LICENSE +PERL_PATH_TINY_DISTNAME = Path-Tiny + +$(eval $(perl-package)) diff --git a/package/perl-plack/Config.in b/package/perl-plack/Config.in new file mode 100644 index 00000000..420f8257 --- /dev/null +++ b/package/perl-plack/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_PERL_PLACK + bool "perl-plack" + depends on !BR2_STATIC_LIBS # perl-http-message -> perl-clone + select BR2_PACKAGE_PERL_APACHE_LOGFORMAT_COMPILER # runtime + select BR2_PACKAGE_PERL_COOKIE_BAKER # runtime + select BR2_PACKAGE_PERL_DEVEL_STACKTRACE # runtime + select BR2_PACKAGE_PERL_DEVEL_STACKTRACE_ASHTML # runtime + select BR2_PACKAGE_PERL_FILE_SHAREDIR # runtime + select BR2_PACKAGE_PERL_FILESYS_NOTIFY_SIMPLE # runtime + select BR2_PACKAGE_PERL_HTTP_ENTITY_PARSER # runtime + select BR2_PACKAGE_PERL_HTTP_HEADERS_FAST # runtime + select BR2_PACKAGE_PERL_HTTP_MESSAGE # runtime + select BR2_PACKAGE_PERL_HASH_MULTIVALUE # runtime + select BR2_PACKAGE_PERL_STREAM_BUFFERED # runtime + select BR2_PACKAGE_PERL_TRY_TINY # runtime + select BR2_PACKAGE_PERL_URI # runtime + select BR2_PACKAGE_PERL_WWW_FORM_URLENCODED # runtime + help + Perl Superglue for Web frameworks and Web Servers (PSGI + toolkit). + + https://github.com/plack/Plack + +comment "perl-plack needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-plack/perl-plack.hash b/package/perl-plack/perl-plack.hash new file mode 100644 index 00000000..c9e2bb01 --- /dev/null +++ b/package/perl-plack/perl-plack.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 0b3e573458b37ad69069fc8cb307b6b8 Plack-1.0051.tar.gz +sha256 bebde91c42298ed6ec8e6c82b21433a1b49aa39412c247f3905b80f955acf77b Plack-1.0051.tar.gz + +# computed by scancpan +sha256 8a0c0ad4682691b5bc138e553636adfc8bb38f8885c4c44fd421ec8cc69c9a8f LICENSE diff --git a/package/perl-plack/perl-plack.mk b/package/perl-plack/perl-plack.mk new file mode 100644 index 00000000..2c591cc0 --- /dev/null +++ b/package/perl-plack/perl-plack.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perl-plack +# +################################################################################ + +PERL_PLACK_VERSION = 1.0051 +PERL_PLACK_SOURCE = Plack-$(PERL_PLACK_VERSION).tar.gz +PERL_PLACK_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MI/MIYAGAWA +PERL_PLACK_DEPENDENCIES = host-perl-file-sharedir-install +PERL_PLACK_LICENSE = Artistic or GPL-1.0+ +PERL_PLACK_LICENSE_FILES = LICENSE +PERL_PLACK_DISTNAME = Plack + +$(eval $(perl-package)) diff --git a/package/perl-posix-strftime-compiler/Config.in b/package/perl-posix-strftime-compiler/Config.in new file mode 100644 index 00000000..3c8d7d24 --- /dev/null +++ b/package/perl-posix-strftime-compiler/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_POSIX_STRFTIME_COMPILER + bool "perl-posix-strftime-compiler" + help + GNU C library compatible strftime for loggers and servers. + + https://github.com/kazeburo/POSIX-strftime-Compiler diff --git a/package/perl-posix-strftime-compiler/perl-posix-strftime-compiler.hash b/package/perl-posix-strftime-compiler/perl-posix-strftime-compiler.hash new file mode 100644 index 00000000..cad4b03f --- /dev/null +++ b/package/perl-posix-strftime-compiler/perl-posix-strftime-compiler.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 e64777d20d363a1b47acf85774d108da POSIX-strftime-Compiler-0.46.tar.gz +sha256 bf88873248ef88cc5e68ed074493496be684ec334e11273d4654306dd9dae485 POSIX-strftime-Compiler-0.46.tar.gz + +# computed by scancpan +sha256 79c2a066104e71602785fd815c5aea6f7db78c19451d68521380083f9c2a8805 LICENSE diff --git a/package/perl-posix-strftime-compiler/perl-posix-strftime-compiler.mk b/package/perl-posix-strftime-compiler/perl-posix-strftime-compiler.mk new file mode 100644 index 00000000..f7f6745e --- /dev/null +++ b/package/perl-posix-strftime-compiler/perl-posix-strftime-compiler.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perl-posix-strftime-compiler +# +################################################################################ + +PERL_POSIX_STRFTIME_COMPILER_VERSION = 0.46 +PERL_POSIX_STRFTIME_COMPILER_SOURCE = POSIX-strftime-Compiler-$(PERL_POSIX_STRFTIME_COMPILER_VERSION).tar.gz +PERL_POSIX_STRFTIME_COMPILER_SITE = $(BR2_CPAN_MIRROR)/authors/id/K/KA/KAZEBURO +PERL_POSIX_STRFTIME_COMPILER_DEPENDENCIES = host-perl-module-build-tiny +PERL_POSIX_STRFTIME_COMPILER_LICENSE = Artistic or GPL-1.0+ +PERL_POSIX_STRFTIME_COMPILER_LICENSE_FILES = LICENSE +PERL_POSIX_STRFTIME_COMPILER_DISTNAME = POSIX-strftime-Compiler + +$(eval $(perl-package)) diff --git a/package/perl-role-tiny/Config.in b/package/perl-role-tiny/Config.in new file mode 100644 index 00000000..0c44d990 --- /dev/null +++ b/package/perl-role-tiny/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_ROLE_TINY + bool "perl-role-tiny" + help + Roles: a nouvelle cuisine portion size slice of Moose. + + https://metacpan.org/release/Role-Tiny diff --git a/package/perl-role-tiny/perl-role-tiny.hash b/package/perl-role-tiny/perl-role-tiny.hash new file mode 100644 index 00000000..33de6a53 --- /dev/null +++ b/package/perl-role-tiny/perl-role-tiny.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 9ee45591befa3d0b1094ac75d282b6ba Role-Tiny-2.002004.tar.gz +sha256 d7bdee9e138a4f83aa52d0a981625644bda87ff16642dfa845dcb44d9a242b45 Role-Tiny-2.002004.tar.gz + +# computed by scancpan +sha256 a8a1595c2347f7d10e896809d4f3dea85ccc10ac5644b8073111233cd120b14a LICENSE diff --git a/package/perl-role-tiny/perl-role-tiny.mk b/package/perl-role-tiny/perl-role-tiny.mk new file mode 100644 index 00000000..64d5085f --- /dev/null +++ b/package/perl-role-tiny/perl-role-tiny.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-role-tiny +# +################################################################################ + +PERL_ROLE_TINY_VERSION = 2.002004 +PERL_ROLE_TINY_SOURCE = Role-Tiny-$(PERL_ROLE_TINY_VERSION).tar.gz +PERL_ROLE_TINY_SITE = $(BR2_CPAN_MIRROR)/authors/id/H/HA/HAARG +PERL_ROLE_TINY_LICENSE = Artistic or GPL-1.0+ +PERL_ROLE_TINY_LICENSE_FILES = LICENSE +PERL_ROLE_TINY_DISTNAME = Role-Tiny + +$(eval $(perl-package)) diff --git a/package/perl-stream-buffered/Config.in b/package/perl-stream-buffered/Config.in new file mode 100644 index 00000000..3bddefe5 --- /dev/null +++ b/package/perl-stream-buffered/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_STREAM_BUFFERED + bool "perl-stream-buffered" + help + temporary buffer to save bytes. + + https://github.com/plack/Stream-Buffered diff --git a/package/perl-stream-buffered/perl-stream-buffered.hash b/package/perl-stream-buffered/perl-stream-buffered.hash new file mode 100644 index 00000000..5de35555 --- /dev/null +++ b/package/perl-stream-buffered/perl-stream-buffered.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 b030fecaa784cd573289ae797c7aeae9 Stream-Buffered-0.03.tar.gz +sha256 9b2d4390b5de6b0cf4558e4ad04317a73c5e13dd19af29149c4e47c37fb2423b Stream-Buffered-0.03.tar.gz + +# computed by scancpan +sha256 68e8c38e6d2f2b0570a908411f8321b80a7e35ea44f43729807c9ac9a025f591 LICENSE diff --git a/package/perl-stream-buffered/perl-stream-buffered.mk b/package/perl-stream-buffered/perl-stream-buffered.mk new file mode 100644 index 00000000..63aa1a24 --- /dev/null +++ b/package/perl-stream-buffered/perl-stream-buffered.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-stream-buffered +# +################################################################################ + +PERL_STREAM_BUFFERED_VERSION = 0.03 +PERL_STREAM_BUFFERED_SOURCE = Stream-Buffered-$(PERL_STREAM_BUFFERED_VERSION).tar.gz +PERL_STREAM_BUFFERED_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DO/DOY +PERL_STREAM_BUFFERED_LICENSE = Artistic or GPL-1.0+ +PERL_STREAM_BUFFERED_LICENSE_FILES = LICENSE +PERL_STREAM_BUFFERED_DISTNAME = Stream-Buffered + +$(eval $(perl-package)) diff --git a/package/perl-sub-exporter-progressive/Config.in b/package/perl-sub-exporter-progressive/Config.in new file mode 100644 index 00000000..e44de83e --- /dev/null +++ b/package/perl-sub-exporter-progressive/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_SUB_EXPORTER_PROGRESSIVE + bool "perl-sub-exporter-progressive" + help + Only use Sub::Exporter if you need it. + + https://github.com/frioux/Sub-Exporter-Progressive diff --git a/package/perl-sub-exporter-progressive/perl-sub-exporter-progressive.hash b/package/perl-sub-exporter-progressive/perl-sub-exporter-progressive.hash new file mode 100644 index 00000000..bb74dd2f --- /dev/null +++ b/package/perl-sub-exporter-progressive/perl-sub-exporter-progressive.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 72cf6acdd2a0a8b105821a4db98e4ebe Sub-Exporter-Progressive-0.001013.tar.gz +sha256 d535b7954d64da1ac1305b1fadf98202769e3599376854b2ced90c382beac056 Sub-Exporter-Progressive-0.001013.tar.gz + +# computed by scancpan +sha256 24c38cba4218e6be62e511bffe21e63aa57335d8929034aa58e8a85eed001e99 LICENSE diff --git a/package/perl-sub-exporter-progressive/perl-sub-exporter-progressive.mk b/package/perl-sub-exporter-progressive/perl-sub-exporter-progressive.mk new file mode 100644 index 00000000..22fc29d5 --- /dev/null +++ b/package/perl-sub-exporter-progressive/perl-sub-exporter-progressive.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-sub-exporter-progressive +# +################################################################################ + +PERL_SUB_EXPORTER_PROGRESSIVE_VERSION = 0.001013 +PERL_SUB_EXPORTER_PROGRESSIVE_SOURCE = Sub-Exporter-Progressive-$(PERL_SUB_EXPORTER_PROGRESSIVE_VERSION).tar.gz +PERL_SUB_EXPORTER_PROGRESSIVE_SITE = $(BR2_CPAN_MIRROR)/authors/id/F/FR/FREW +PERL_SUB_EXPORTER_PROGRESSIVE_LICENSE = Artistic or GPL-1.0+ +PERL_SUB_EXPORTER_PROGRESSIVE_LICENSE_FILES = LICENSE +PERL_SUB_EXPORTER_PROGRESSIVE_DISTNAME = Sub-Exporter-Progressive + +$(eval $(perl-package)) diff --git a/package/perl-sub-install/Config.in b/package/perl-sub-install/Config.in new file mode 100644 index 00000000..d1f539c0 --- /dev/null +++ b/package/perl-sub-install/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_SUB_INSTALL + bool "perl-sub-install" + help + install subroutines into packages easily. + + https://github.com/rjbs/Sub-Install diff --git a/package/perl-sub-install/perl-sub-install.hash b/package/perl-sub-install/perl-sub-install.hash new file mode 100644 index 00000000..834e589e --- /dev/null +++ b/package/perl-sub-install/perl-sub-install.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 81baf186c62c71f0935c3ccf1c5964c8 Sub-Install-0.929.tar.gz +sha256 80b1e281d8cd3b2b31dac711f5c8a1657a87cd80bbe69af3924bcbeb4e5db077 Sub-Install-0.929.tar.gz + +# computed by scancpan +sha256 0150501749fc390e1c747739a7c1d7661607f8f1d9a9f2ad279664f12e46104e LICENSE diff --git a/package/perl-sub-install/perl-sub-install.mk b/package/perl-sub-install/perl-sub-install.mk new file mode 100644 index 00000000..5e02a37e --- /dev/null +++ b/package/perl-sub-install/perl-sub-install.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-sub-install +# +################################################################################ + +PERL_SUB_INSTALL_VERSION = 0.929 +PERL_SUB_INSTALL_SOURCE = Sub-Install-$(PERL_SUB_INSTALL_VERSION).tar.gz +PERL_SUB_INSTALL_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RJ/RJBS +PERL_SUB_INSTALL_LICENSE = Artistic or GPL-1.0+ +PERL_SUB_INSTALL_LICENSE_FILES = LICENSE +PERL_SUB_INSTALL_DISTNAME = Sub-Install + +$(eval $(perl-package)) diff --git a/package/perl-sub-quote/Config.in b/package/perl-sub-quote/Config.in new file mode 100644 index 00000000..4487e930 --- /dev/null +++ b/package/perl-sub-quote/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_SUB_QUOTE + bool "perl-sub-quote" + help + Efficient generation of subroutines via string eval. + + https://metacpan.org/release/Sub-Quote diff --git a/package/perl-sub-quote/perl-sub-quote.hash b/package/perl-sub-quote/perl-sub-quote.hash new file mode 100644 index 00000000..8db560fd --- /dev/null +++ b/package/perl-sub-quote/perl-sub-quote.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 f19c60039ba87f69f7f9357fc0a03e07 Sub-Quote-2.006008.tar.gz +sha256 94bebd500af55762e83ea2f2bc594d87af828072370c7110c60c238a800d15b2 Sub-Quote-2.006008.tar.gz + +# computed by scancpan +sha256 de7a14750e81d97e19e111df58a3b51e3f2c8ec2d2dd90f576f54243251972c6 LICENSE diff --git a/package/perl-sub-quote/perl-sub-quote.mk b/package/perl-sub-quote/perl-sub-quote.mk new file mode 100644 index 00000000..3c2a25be --- /dev/null +++ b/package/perl-sub-quote/perl-sub-quote.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-sub-quote +# +################################################################################ + +PERL_SUB_QUOTE_VERSION = 2.006008 +PERL_SUB_QUOTE_SOURCE = Sub-Quote-$(PERL_SUB_QUOTE_VERSION).tar.gz +PERL_SUB_QUOTE_SITE = $(BR2_CPAN_MIRROR)/authors/id/H/HA/HAARG +PERL_SUB_QUOTE_LICENSE = Artistic or GPL-1.0+ +PERL_SUB_QUOTE_LICENSE_FILES = LICENSE +PERL_SUB_QUOTE_DISTNAME = Sub-Quote + +$(eval $(perl-package)) diff --git a/package/perl-sys-cpu/0001-remove-extraneous-include.patch b/package/perl-sys-cpu/0001-remove-extraneous-include.patch new file mode 100644 index 00000000..eb7d8f76 --- /dev/null +++ b/package/perl-sys-cpu/0001-remove-extraneous-include.patch @@ -0,0 +1,20 @@ +Drop include + + does not exist in musl or uClibc, so including it +causes a build failure. In glibc, it simply redirects to , +so we can safely drop the inclusion of + +Signed-off-by: Christopher McCrory + +Index: b/CPU.xs +=================================================================== +--- a/CPU.xs ++++ b/CPU.xs +@@ -24,7 +24,6 @@ + #include + #else /* other (try unix) */ + #include +- #include + #endif + #if defined(__sun) || defined(__sun__) + #include diff --git a/package/perl-sys-cpu/Config.in b/package/perl-sys-cpu/Config.in new file mode 100644 index 00000000..70cfded8 --- /dev/null +++ b/package/perl-sys-cpu/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PERL_SYS_CPU + bool "perl-sys-cpu" + depends on !BR2_STATIC_LIBS + help + Perl module for getting information about the system CPU + (Sys::CPU). + + http://search.cpan.org/dist/Sys-CPU/ + +comment "perl-sys-cpu needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-sys-cpu/perl-sys-cpu.hash b/package/perl-sys-cpu/perl-sys-cpu.hash new file mode 100644 index 00000000..896a7410 --- /dev/null +++ b/package/perl-sys-cpu/perl-sys-cpu.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 ca0ec47ab24070e3040e5075337cfc69721362d9bef50f6992072efe644d4d26 Sys-CPU-0.52.tar.gz +sha256 911a3f8e83dfff143794b34881e13f0759b498c31e067fc7dff0c2e641559e1e README diff --git a/package/perl-sys-cpu/perl-sys-cpu.mk b/package/perl-sys-cpu/perl-sys-cpu.mk new file mode 100644 index 00000000..8402bef8 --- /dev/null +++ b/package/perl-sys-cpu/perl-sys-cpu.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# perl-sys-cpu +# +################################################################################ + +PERL_SYS_CPU_VERSION = 0.52 +PERL_SYS_CPU_SOURCE = Sys-CPU-$(PERL_SYS_CPU_VERSION).tar.gz +PERL_SYS_CPU_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MK/MKODERER +PERL_SYS_CPU_LICENSE = Artistic or GPL-1.0+ +PERL_SYS_CPU_LICENSE_FILES = README + +$(eval $(perl-package)) diff --git a/package/perl-sys-meminfo/Config.in b/package/perl-sys-meminfo/Config.in new file mode 100644 index 00000000..2175d88d --- /dev/null +++ b/package/perl-sys-meminfo/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PERL_SYS_MEMINFO + bool "perl-sys-meminfo" + depends on !BR2_STATIC_LIBS + help + query the total free and used physical memory. + + https://metacpan.org/release/Sys-MemInfo + +comment "perl-sys-meminfo needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-sys-meminfo/perl-sys-meminfo.hash b/package/perl-sys-meminfo/perl-sys-meminfo.hash new file mode 100644 index 00000000..c80a4552 --- /dev/null +++ b/package/perl-sys-meminfo/perl-sys-meminfo.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 88f0632691d7de91cbed95ba1ff29025 Sys-MemInfo-0.99.tar.gz +sha256 0786319d3a3a8bae5d727939244bf17e140b714f52734d5e9f627203e4cf3e3b Sys-MemInfo-0.99.tar.gz + +# computed by scancpan +sha256 62854ade112a6782f476bdc7dc9603776c4e064782623d999f966dba131a15de LICENSE diff --git a/package/perl-sys-meminfo/perl-sys-meminfo.mk b/package/perl-sys-meminfo/perl-sys-meminfo.mk new file mode 100644 index 00000000..e70dd73a --- /dev/null +++ b/package/perl-sys-meminfo/perl-sys-meminfo.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-sys-meminfo +# +################################################################################ + +PERL_SYS_MEMINFO_VERSION = 0.99 +PERL_SYS_MEMINFO_SOURCE = Sys-MemInfo-$(PERL_SYS_MEMINFO_VERSION).tar.gz +PERL_SYS_MEMINFO_SITE = $(BR2_CPAN_MIRROR)/authors/id/S/SC/SCRESTO +PERL_SYS_MEMINFO_LICENSE = Artistic or GPL-1.0+ +PERL_SYS_MEMINFO_LICENSE_FILES = LICENSE +PERL_SYS_MEMINFO_DISTNAME = Sys-MemInfo + +$(eval $(perl-package)) diff --git a/package/perl-sys-mmap/Config.in b/package/perl-sys-mmap/Config.in new file mode 100644 index 00000000..989e6bf2 --- /dev/null +++ b/package/perl-sys-mmap/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PERL_SYS_MMAP + bool "perl-sys-mmap" + depends on !BR2_STATIC_LIBS + help + uses mmap to map in a file as a Perl variable. + + https://metacpan.org/release/Sys-Mmap + +comment "perl-sys-mmap needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-sys-mmap/perl-sys-mmap.hash b/package/perl-sys-mmap/perl-sys-mmap.hash new file mode 100644 index 00000000..ac4184b0 --- /dev/null +++ b/package/perl-sys-mmap/perl-sys-mmap.hash @@ -0,0 +1,7 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 57172ce9b33c04de460b4e7ad68d2e9c Sys-Mmap-0.20.tar.gz +sha256 1820ce2c89f1ab7357644f8db0f49f142f54526250fb1e235db10aa80f15e2cf Sys-Mmap-0.20.tar.gz + +# computed by scancpan +sha256 4ac2afe465736476a06e52edcc78c72cfa0fa4d625916e58ab4f2af6c598709c Artistic +sha256 51c144e9a67644fa8eea0ea63dedb4e837587305b22f073eb5e279e39e7325a8 Copying diff --git a/package/perl-sys-mmap/perl-sys-mmap.mk b/package/perl-sys-mmap/perl-sys-mmap.mk new file mode 100644 index 00000000..5e081452 --- /dev/null +++ b/package/perl-sys-mmap/perl-sys-mmap.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-sys-mmap +# +################################################################################ + +PERL_SYS_MMAP_VERSION = 0.20 +PERL_SYS_MMAP_SOURCE = Sys-Mmap-$(PERL_SYS_MMAP_VERSION).tar.gz +PERL_SYS_MMAP_SITE = $(BR2_CPAN_MIRROR)/authors/id/T/TO/TODDR +PERL_SYS_MMAP_LICENSE = Artistic or GPL-1.0+ +PERL_SYS_MMAP_LICENSE_FILES = Artistic Copying +PERL_SYS_MMAP_DISTNAME = Sys-Mmap + +$(eval $(perl-package)) diff --git a/package/perl-time-parsedate/Config.in b/package/perl-time-parsedate/Config.in new file mode 100644 index 00000000..bd5957d9 --- /dev/null +++ b/package/perl-time-parsedate/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_TIME_PARSEDATE + bool "perl-time-parsedate" + help + Parse and format time values. + + https://metacpan.org/release/Time-ParseDate diff --git a/package/perl-time-parsedate/perl-time-parsedate.hash b/package/perl-time-parsedate/perl-time-parsedate.hash new file mode 100644 index 00000000..0e519980 --- /dev/null +++ b/package/perl-time-parsedate/perl-time-parsedate.hash @@ -0,0 +1,7 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 9143d075278857d21c77467d26f1603b Time-ParseDate-2015.103.tar.gz +sha256 2c1a06235bf811813caac9eaa9daa71af758667cdf7b082cb59863220fcaeed1 Time-ParseDate-2015.103.tar.gz + +# locally calculated +sha256 6d8de888d0662f75cfa3bf21b261741d5634ac9cdd8604d6173850546a3d40a9 lib/Time/JulianDay.pm +sha256 9ae411fbaf87add414e7357417032dfedce652c393643bc5cb5b7698041a1dca lib/Time/Timezone.pm diff --git a/package/perl-time-parsedate/perl-time-parsedate.mk b/package/perl-time-parsedate/perl-time-parsedate.mk new file mode 100644 index 00000000..cba8c7b6 --- /dev/null +++ b/package/perl-time-parsedate/perl-time-parsedate.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-time-parsedate +# +################################################################################ + +PERL_TIME_PARSEDATE_VERSION = 2015.103 +PERL_TIME_PARSEDATE_SOURCE = Time-ParseDate-$(PERL_TIME_PARSEDATE_VERSION).tar.gz +PERL_TIME_PARSEDATE_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MU/MUIR/modules +PERL_TIME_PARSEDATE_LICENSE = Time Parse Date License, Public Domain +PERL_TIME_PARSEDATE_LICENSE_FILES = lib/Time/JulianDay.pm lib/Time/Timezone.pm +PERL_TIME_PARSEDATE_DISTNAME = Time-ParseDate + +$(eval $(perl-package)) diff --git a/package/perl-timedate/Config.in b/package/perl-timedate/Config.in new file mode 100644 index 00000000..84ba8ff6 --- /dev/null +++ b/package/perl-timedate/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_TIMEDATE + bool "perl-timedate" + help + miscellaneous timezone manipulations routines. + + https://metacpan.org/release/TimeDate diff --git a/package/perl-timedate/perl-timedate.hash b/package/perl-timedate/perl-timedate.hash new file mode 100644 index 00000000..5ea4d49c --- /dev/null +++ b/package/perl-timedate/perl-timedate.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 5e5afe22c8d417417283d1f7f4572a57 TimeDate-2.33.tar.gz +sha256 c0b69c4b039de6f501b0d9f13ec58c86b040c1f7e9b27ef249651c143d605eb2 TimeDate-2.33.tar.gz + +# computed by scancpan +sha256 e72e67533eb3ddd705ae718898945e2f3bf3702e91e85bb67824575706bd5bf9 README diff --git a/package/perl-timedate/perl-timedate.mk b/package/perl-timedate/perl-timedate.mk new file mode 100644 index 00000000..89a82c04 --- /dev/null +++ b/package/perl-timedate/perl-timedate.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-timedate +# +################################################################################ + +PERL_TIMEDATE_VERSION = 2.33 +PERL_TIMEDATE_SOURCE = TimeDate-$(PERL_TIMEDATE_VERSION).tar.gz +PERL_TIMEDATE_SITE = $(BR2_CPAN_MIRROR)/authors/id/A/AT/ATOOMIC +PERL_TIMEDATE_LICENSE = Artistic or GPL-1.0+ +PERL_TIMEDATE_LICENSE_FILES = README +PERL_TIMEDATE_DISTNAME = TimeDate + +$(eval $(perl-package)) diff --git a/package/perl-try-tiny/Config.in b/package/perl-try-tiny/Config.in new file mode 100644 index 00000000..c4329dc1 --- /dev/null +++ b/package/perl-try-tiny/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_TRY_TINY + bool "perl-try-tiny" + help + Minimal try/catch with proper preservation of $@. + + https://github.com/p5sagit/Try-Tiny diff --git a/package/perl-try-tiny/perl-try-tiny.hash b/package/perl-try-tiny/perl-try-tiny.hash new file mode 100644 index 00000000..7aa88724 --- /dev/null +++ b/package/perl-try-tiny/perl-try-tiny.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 993a29ee8a03c9bd9c2f7c53d1082a03 Try-Tiny-0.31.tar.gz +sha256 3300d31d8a4075b26d8f46ce864a1d913e0e8467ceeba6655d5d2b2e206c11be Try-Tiny-0.31.tar.gz + +# computed by scancpan +sha256 f1864ede834871a1207fcd19838b6bd5e1ff0a8704f5cc523fc397126041ed0b LICENCE diff --git a/package/perl-try-tiny/perl-try-tiny.mk b/package/perl-try-tiny/perl-try-tiny.mk new file mode 100644 index 00000000..cd2421a3 --- /dev/null +++ b/package/perl-try-tiny/perl-try-tiny.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-try-tiny +# +################################################################################ + +PERL_TRY_TINY_VERSION = 0.31 +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 +PERL_TRY_TINY_LICENSE_FILES = LICENCE +PERL_TRY_TINY_DISTNAME = Try-Tiny + +$(eval $(perl-package)) diff --git a/package/perl-type-tiny/Config.in b/package/perl-type-tiny/Config.in new file mode 100644 index 00000000..5ee3db6f --- /dev/null +++ b/package/perl-type-tiny/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_TYPE_TINY + bool "perl-type-tiny" + select BR2_PACKAGE_PERL_EXPORTER_TINY # runtime + help + tiny, yet Moo(se)-compatible type constraint. + + https://typetiny.toby.ink/ diff --git a/package/perl-type-tiny/perl-type-tiny.hash b/package/perl-type-tiny/perl-type-tiny.hash new file mode 100644 index 00000000..bca5153a --- /dev/null +++ b/package/perl-type-tiny/perl-type-tiny.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 08bb43feabaab97dac7a3e59b5c77ff3 Type-Tiny-2.004000.tar.gz +sha256 697e7f775edfc85f4cf07792d04fd19b09c25285f98f5938e8efc4f74507a128 Type-Tiny-2.004000.tar.gz + +# computed by scancpan +sha256 1a2929dacaef239beca27a85f7f97b793628dfb22f07fdfb406cb6f3f0d22a6b LICENSE diff --git a/package/perl-type-tiny/perl-type-tiny.mk b/package/perl-type-tiny/perl-type-tiny.mk new file mode 100644 index 00000000..31c84a26 --- /dev/null +++ b/package/perl-type-tiny/perl-type-tiny.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-type-tiny +# +################################################################################ + +PERL_TYPE_TINY_VERSION = 2.004000 +PERL_TYPE_TINY_SOURCE = Type-Tiny-$(PERL_TYPE_TINY_VERSION).tar.gz +PERL_TYPE_TINY_SITE = $(BR2_CPAN_MIRROR)/authors/id/T/TO/TOBYINK +PERL_TYPE_TINY_LICENSE = Artistic or GPL-1.0+ +PERL_TYPE_TINY_LICENSE_FILES = LICENSE +PERL_TYPE_TINY_DISTNAME = Type-Tiny + +$(eval $(perl-package)) diff --git a/package/perl-uri/Config.in b/package/perl-uri/Config.in new file mode 100644 index 00000000..3f51c517 --- /dev/null +++ b/package/perl-uri/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_URI + bool "perl-uri" + help + Uniform Resource Identifiers (absolute and relative). + + https://github.com/libwww-perl/URI diff --git a/package/perl-uri/perl-uri.hash b/package/perl-uri/perl-uri.hash new file mode 100644 index 00000000..c10a829e --- /dev/null +++ b/package/perl-uri/perl-uri.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from https://cpan.metacpan.org/ +md5 9b45e7635f0968deabe377fc4c99a8b5 URI-5.21.tar.gz +sha256 96265860cd61bde16e8415dcfbf108056de162caa0ac37f81eb695c9d2e0ab77 URI-5.21.tar.gz + +# computed by scancpan +sha256 a1730c55839ce3c9182c92e3387ba8f683ad6ab8b4a3257553a20c4db194c2cf LICENSE diff --git a/package/perl-uri/perl-uri.mk b/package/perl-uri/perl-uri.mk new file mode 100644 index 00000000..aa0c1ed8 --- /dev/null +++ b/package/perl-uri/perl-uri.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-uri +# +################################################################################ + +PERL_URI_VERSION = 5.21 +PERL_URI_SOURCE = URI-$(PERL_URI_VERSION).tar.gz +PERL_URI_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS +PERL_URI_LICENSE = Artistic-1.0-Perl or GPL-1.0+ +PERL_URI_LICENSE_FILES = LICENSE +PERL_URI_DISTNAME = URI + +$(eval $(perl-package)) diff --git a/package/perl-www-form-urlencoded/Config.in b/package/perl-www-form-urlencoded/Config.in new file mode 100644 index 00000000..67759c8f --- /dev/null +++ b/package/perl-www-form-urlencoded/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_WWW_FORM_URLENCODED + bool "perl-www-form-urlencoded" + help + parser and builder for application/x-www-form-urlencoded. + + https://github.com/kazeburo/WWW-Form-UrlEncoded diff --git a/package/perl-www-form-urlencoded/perl-www-form-urlencoded.hash b/package/perl-www-form-urlencoded/perl-www-form-urlencoded.hash new file mode 100644 index 00000000..43f65a00 --- /dev/null +++ b/package/perl-www-form-urlencoded/perl-www-form-urlencoded.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 cbe0e1c3ee54738d900c739ea348efda WWW-Form-UrlEncoded-0.26.tar.gz +sha256 c0480b5f1f15b71163ec327b8e7842298f0cb3ace97e63d7034af1e94a2d90f4 WWW-Form-UrlEncoded-0.26.tar.gz + +# computed by scancpan +sha256 79c2a066104e71602785fd815c5aea6f7db78c19451d68521380083f9c2a8805 LICENSE diff --git a/package/perl-www-form-urlencoded/perl-www-form-urlencoded.mk b/package/perl-www-form-urlencoded/perl-www-form-urlencoded.mk new file mode 100644 index 00000000..a6f2edd5 --- /dev/null +++ b/package/perl-www-form-urlencoded/perl-www-form-urlencoded.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# perl-www-form-urlencoded +# +################################################################################ + +PERL_WWW_FORM_URLENCODED_VERSION = 0.26 +PERL_WWW_FORM_URLENCODED_SOURCE = WWW-Form-UrlEncoded-$(PERL_WWW_FORM_URLENCODED_VERSION).tar.gz +PERL_WWW_FORM_URLENCODED_SITE = $(BR2_CPAN_MIRROR)/authors/id/K/KA/KAZEBURO +PERL_WWW_FORM_URLENCODED_DEPENDENCIES = host-perl-module-build +PERL_WWW_FORM_URLENCODED_LICENSE = Artistic or GPL-1.0+ +PERL_WWW_FORM_URLENCODED_LICENSE_FILES = LICENSE +PERL_WWW_FORM_URLENCODED_DISTNAME = WWW-Form-UrlEncoded + +$(eval $(perl-package)) diff --git a/package/perl-www-robotrules/Config.in b/package/perl-www-robotrules/Config.in new file mode 100644 index 00000000..6ecf58af --- /dev/null +++ b/package/perl-www-robotrules/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_WWW_ROBOTRULES + bool "perl-www-robotrules" + select BR2_PACKAGE_PERL_URI # runtime + help + database of robots.txt-derived permissions. + + https://metacpan.org/release/WWW-RobotRules diff --git a/package/perl-www-robotrules/perl-www-robotrules.hash b/package/perl-www-robotrules/perl-www-robotrules.hash new file mode 100644 index 00000000..38fd0620 --- /dev/null +++ b/package/perl-www-robotrules/perl-www-robotrules.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 b7186e8b8b3701e70c22abf430742403 WWW-RobotRules-6.02.tar.gz +sha256 46b502e7a288d559429891eeb5d979461dd3ecc6a5c491ead85d165b6e03a51e WWW-RobotRules-6.02.tar.gz + +# computed by scancpan +sha256 fa375c4f771b92fc076b6c66e19440a0fff51dacf489fecd94bf560091279e05 README diff --git a/package/perl-www-robotrules/perl-www-robotrules.mk b/package/perl-www-robotrules/perl-www-robotrules.mk new file mode 100644 index 00000000..052d9a67 --- /dev/null +++ b/package/perl-www-robotrules/perl-www-robotrules.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-www-robotrules +# +################################################################################ + +PERL_WWW_ROBOTRULES_VERSION = 6.02 +PERL_WWW_ROBOTRULES_SOURCE = WWW-RobotRules-$(PERL_WWW_ROBOTRULES_VERSION).tar.gz +PERL_WWW_ROBOTRULES_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GA/GAAS +PERL_WWW_ROBOTRULES_LICENSE = Artistic or GPL-1.0+ +PERL_WWW_ROBOTRULES_LICENSE_FILES = README +PERL_WWW_ROBOTRULES_DISTNAME = WWW-RobotRules + +$(eval $(perl-package)) diff --git a/package/perl-x10/Config.in b/package/perl-x10/Config.in new file mode 100644 index 00000000..834ffefa --- /dev/null +++ b/package/perl-x10/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PERL_X10 + bool "perl-x10" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_PERL_ASTRO_SUNTIME # runtime + select BR2_PACKAGE_PERL_DEVICE_SERIALPORT # runtime + select BR2_PACKAGE_PERL_TIME_PARSEDATE # runtime + help + creates a server used to receive events from an x10 client. + + https://metacpan.org/release/X10 + +comment "perl-x10 needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-x10/perl-x10.hash b/package/perl-x10/perl-x10.hash new file mode 100644 index 00000000..900ff62f --- /dev/null +++ b/package/perl-x10/perl-x10.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 20dcca2dfb978bfed3043276aa3481e5 X10-0.04.tar.gz +sha256 3dcee9d95614b2db70de608e933d42817f93fccd5b1f2f782b0846af487d9134 X10-0.04.tar.gz + +# computed by scancpan +sha256 e6f320afa82517d663be348dd2515ecb1454a7c851ba5590f13aca01d219be80 README diff --git a/package/perl-x10/perl-x10.mk b/package/perl-x10/perl-x10.mk new file mode 100644 index 00000000..4c90be65 --- /dev/null +++ b/package/perl-x10/perl-x10.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-x10 +# +################################################################################ + +PERL_X10_VERSION = 0.04 +PERL_X10_SOURCE = X10-$(PERL_X10_VERSION).tar.gz +PERL_X10_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RO/ROBF +PERL_X10_LICENSE = GPL-3.0 +PERL_X10_LICENSE_FILES = README +PERL_X10_DISTNAME = X10 + +$(eval $(perl-package)) diff --git a/package/perl-xml-libxml/0001-Makefile-PL.patch b/package/perl-xml-libxml/0001-Makefile-PL.patch new file mode 100644 index 00000000..e043c6d2 --- /dev/null +++ b/package/perl-xml-libxml/0001-Makefile-PL.patch @@ -0,0 +1,18 @@ +fake check_lib for cross-compilation + +Signed-off-by: Francois Perrad + +Index: b/Makefile.PL +=================================================================== +--- a/Makefile.PL ++++ b/Makefile.PL +@@ -88,8 +88,7 @@ + # -------------------------------------------------------------------------- # + # -------------------------------------------------------------------------- # + +-use lib qw(inc); +-use Devel::CheckLib; ++sub check_lib { return 1; } + + # Prompt the user here for any paths and other configuration + diff --git a/package/perl-xml-libxml/Config.in b/package/perl-xml-libxml/Config.in new file mode 100644 index 00000000..ce0a4783 --- /dev/null +++ b/package/perl-xml-libxml/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PERL_XML_LIBXML + bool "perl-xml-libxml" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_PERL_XML_NAMESPACESUPPORT # runtime + select BR2_PACKAGE_PERL_XML_SAX # runtime + select BR2_PACKAGE_PERL_XML_SAX_BASE # runtime + help + Interface to Gnome libxml2 xml parsing and DOM library. + + https://github.com/shlomif/perl-XML-LibXML + +comment "perl-xml-libxml needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/perl-xml-libxml/perl-xml-libxml.hash b/package/perl-xml-libxml/perl-xml-libxml.hash new file mode 100644 index 00000000..3a2f1ae7 --- /dev/null +++ b/package/perl-xml-libxml/perl-xml-libxml.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 dce687dd8b7e82d1c359fd74b1852f64 XML-LibXML-2.0134.tar.gz +sha256 f0bca4d0c2da35d879fee4cd13f352014186cedab27ab5e191f39b5d7d4f46cf XML-LibXML-2.0134.tar.gz + +# computed by scancpan +sha256 5046a7ec515cc1542beafdf2eadeeff24cc221fc3fde9913dd144fd263ae6100 LICENSE diff --git a/package/perl-xml-libxml/perl-xml-libxml.mk b/package/perl-xml-libxml/perl-xml-libxml.mk new file mode 100644 index 00000000..9b563e29 --- /dev/null +++ b/package/perl-xml-libxml/perl-xml-libxml.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# perl-xml-libxml +# +################################################################################ + +PERL_XML_LIBXML_VERSION = 2.0134 +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_LIBXML_LICENSE = Artistic or GPL-1.0+ +PERL_XML_LIBXML_LICENSE_FILES = LICENSE +PERL_XML_LIBXML_CPE_ID_VENDOR = xml-libxml_project +PERL_XML_LIBXML_CPE_ID_PRODUCT = xml-libxml +PERL_XML_LIBXML_DISTNAME = XML-LibXML + +PERL_XML_LIBXML_CONF_OPTS = \ + LIBS="-L $(STAGING_DIR)/usr/lib" \ + INC="-I $(STAGING_DIR)/usr/include/libxml2" \ + NO_THREADS + +$(eval $(perl-package)) diff --git a/package/perl-xml-namespacesupport/Config.in b/package/perl-xml-namespacesupport/Config.in new file mode 100644 index 00000000..dc1034d3 --- /dev/null +++ b/package/perl-xml-namespacesupport/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_XML_NAMESPACESUPPORT + bool "perl-xml-namespacesupport" + help + A simple generic namespace processor. + + https://github.com/perigrin/xml-namespacesupport diff --git a/package/perl-xml-namespacesupport/perl-xml-namespacesupport.hash b/package/perl-xml-namespacesupport/perl-xml-namespacesupport.hash new file mode 100644 index 00000000..a00edfd9 --- /dev/null +++ b/package/perl-xml-namespacesupport/perl-xml-namespacesupport.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 a8916c6d095bcf073e1108af02e78c97 XML-NamespaceSupport-1.12.tar.gz +sha256 47e995859f8dd0413aa3f22d350c4a62da652e854267aa0586ae544ae2bae5ef XML-NamespaceSupport-1.12.tar.gz + +# computed by scancpan +sha256 3fed787f0f9e1d74024ec7ae5f0f4736c693bcf263781da2054eb4bb1337e911 LICENSE diff --git a/package/perl-xml-namespacesupport/perl-xml-namespacesupport.mk b/package/perl-xml-namespacesupport/perl-xml-namespacesupport.mk new file mode 100644 index 00000000..c3c54da6 --- /dev/null +++ b/package/perl-xml-namespacesupport/perl-xml-namespacesupport.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-xml-namespacesupport +# +################################################################################ + +PERL_XML_NAMESPACESUPPORT_VERSION = 1.12 +PERL_XML_NAMESPACESUPPORT_SOURCE = XML-NamespaceSupport-$(PERL_XML_NAMESPACESUPPORT_VERSION).tar.gz +PERL_XML_NAMESPACESUPPORT_SITE = $(BR2_CPAN_MIRROR)/authors/id/P/PE/PERIGRIN +PERL_XML_NAMESPACESUPPORT_LICENSE = Artistic or GPL-1.0+ +PERL_XML_NAMESPACESUPPORT_LICENSE_FILES = LICENSE +PERL_XML_NAMESPACESUPPORT_DISTNAME = XML-NamespaceSupport + +$(eval $(perl-package)) diff --git a/package/perl-xml-sax-base/Config.in b/package/perl-xml-sax-base/Config.in new file mode 100644 index 00000000..03b344d2 --- /dev/null +++ b/package/perl-xml-sax-base/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_XML_SAX_BASE + bool "perl-xml-sax-base" + help + Base class for SAX Drivers and Filters. + + https://metacpan.org/release/XML-SAX-Base diff --git a/package/perl-xml-sax-base/perl-xml-sax-base.hash b/package/perl-xml-sax-base/perl-xml-sax-base.hash new file mode 100644 index 00000000..02c5124d --- /dev/null +++ b/package/perl-xml-sax-base/perl-xml-sax-base.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 ec347a14065dd7aec7d9fb181b2d7946 XML-SAX-Base-1.09.tar.gz +sha256 66cb355ba4ef47c10ca738bd35999723644386ac853abbeb5132841f5e8a2ad0 XML-SAX-Base-1.09.tar.gz + +# computed by scancpan +sha256 2a9aae56e13888493523ee9053689627e092aafcf2c5fb06f06df07260f91b42 README diff --git a/package/perl-xml-sax-base/perl-xml-sax-base.mk b/package/perl-xml-sax-base/perl-xml-sax-base.mk new file mode 100644 index 00000000..810a4604 --- /dev/null +++ b/package/perl-xml-sax-base/perl-xml-sax-base.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-xml-sax-base +# +################################################################################ + +PERL_XML_SAX_BASE_VERSION = 1.09 +PERL_XML_SAX_BASE_SOURCE = XML-SAX-Base-$(PERL_XML_SAX_BASE_VERSION).tar.gz +PERL_XML_SAX_BASE_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GR/GRANTM +PERL_XML_SAX_BASE_LICENSE = Artistic or GPL-1.0+ +PERL_XML_SAX_BASE_LICENSE_FILES = README +PERL_XML_SAX_BASE_DISTNAME = XML-SAX-Base + +$(eval $(perl-package)) diff --git a/package/perl-xml-sax/Config.in b/package/perl-xml-sax/Config.in new file mode 100644 index 00000000..4e603f3a --- /dev/null +++ b/package/perl-xml-sax/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PERL_XML_SAX + bool "perl-xml-sax" + select BR2_PACKAGE_PERL_XML_NAMESPACESUPPORT # runtime + select BR2_PACKAGE_PERL_XML_SAX_BASE # runtime + help + Simple API for XML. + + https://metacpan.org/release/XML-SAX diff --git a/package/perl-xml-sax/perl-xml-sax.hash b/package/perl-xml-sax/perl-xml-sax.hash new file mode 100644 index 00000000..b7c2e4e0 --- /dev/null +++ b/package/perl-xml-sax/perl-xml-sax.hash @@ -0,0 +1,6 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 b62e3754523695c7f5bbcafa3676a38d XML-SAX-1.02.tar.gz +sha256 4506c387043aa6a77b455f00f57409f3720aa7e553495ab2535263b4ed1ea12a XML-SAX-1.02.tar.gz + +# computed by scancpan +sha256 bf2fb225e77b46b8892ef2a8aa5efa92d65b176a870f42559d8b73b308a36509 LICENSE diff --git a/package/perl-xml-sax/perl-xml-sax.mk b/package/perl-xml-sax/perl-xml-sax.mk new file mode 100644 index 00000000..e8de01bc --- /dev/null +++ b/package/perl-xml-sax/perl-xml-sax.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-xml-sax +# +################################################################################ + +PERL_XML_SAX_VERSION = 1.02 +PERL_XML_SAX_SOURCE = XML-SAX-$(PERL_XML_SAX_VERSION).tar.gz +PERL_XML_SAX_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GR/GRANTM +PERL_XML_SAX_LICENSE = Artistic or GPL-1.0+ +PERL_XML_SAX_LICENSE_FILES = LICENSE +PERL_XML_SAX_DISTNAME = XML-SAX + +$(eval $(perl-package)) diff --git a/package/perl/0001-regcomp-c-regexec-c-fixup-regex-engine-build-under-Uusedl.patch b/package/perl/0001-regcomp-c-regexec-c-fixup-regex-engine-build-under-Uusedl.patch new file mode 100644 index 00000000..f0837c2d --- /dev/null +++ b/package/perl/0001-regcomp-c-regexec-c-fixup-regex-engine-build-under-Uusedl.patch @@ -0,0 +1,554 @@ +From ba6e2c38aafc23cf114f3ba0d0ff3baead34328b Mon Sep 17 00:00:00 2001 +From: Yves Orton +Date: Tue, 1 Aug 2023 23:12:46 +0200 +Subject: [PATCH] regcomp*.c, regexec.c - fixup regex engine build under + -Uusedl + +The regex engine is built a bit different from most of the perl +codebase. It is compiled as part of the main libperl.so and it is +also compiled (with DEBUGGING enabled) as part of the re extension. +When perl itself is compiled with DEBUGGING enabled then the code +in the re.so extension and the code in libperl.so is the same. + +This all works fine and dandy until you have a static build where the +re.so is linked into libperl.so, which results in duplicate symbols +being defined. These symbols come in two flaviours: "auxiliary" and +"debugging" related symbols. + +We have basically three cases: + +1. USE_DYNAMIC_LOADING is defined. In this case we are doing a dynamic + build and re.so will be separate from libperl.so, so it even if this + is a DEBUGGING enabled build debug and auxiliary functions can be + compiled into *both* re.so and libperl.so. This is basically the + "standard build". + +2. USE_DYNAMIC_LOADING is not defined, and DEBUGGING is not defined + either. In this case auxiliary functions should only be compiled in + libperl.so, and the debug functions should only be compiled into + re.so + +3. USE_DYNAMIC_LOADING is not defined, and DEBUGGING *is* defined. In + this case auxiliary functions AND debug functions should only be + compiled into libperl.so + +It is possible to detect the different build options by looking at the +defines 'USE_DYNAMIC_LOADING', 'PERL_EXT_RE_DEBUG' and +'DEBUGGING_RE_ONLY'. 'USE_DYNAMIC_LOADING' is NOT defined when we are +building a static perl. 'PERL_EXT_RE_DEBUG' is defined only when we are +building re.so, and 'DEBUGGING_RE_ONLY' is defined only when we are +building re.so in a perl that is not itself already a DEBUGGING enabled +perl. The file ext/re/re_top.h responsible for setting up +DEBUGGING_RE_ONLY. + +This patch uses 'PERL_EXT_RE_DEBUG', 'DEBUGGING_RE_ONLY' and +'USE_DYNAMIC_LOADING' to define in regcomp.h two further define flags +'PERL_RE_BUILD_DEBUG' and 'PERL_RE_BUILD_AUX'. + +The 'PERL_RE_BUILD_DEBUG' flag determines if the debugging functions +should be compiled into libperl.so or re.so or both. The +'PERL_RE_BUILD_AUX' flag determines if the auxiliary functions should be +compiled into just libperl.so or into it and re.so. We then use these +flags to guard the different types of functions so that we can build in +all three modes without duplicate symbols. + +Upstream: https://github.com/Perl/perl5/commit/ba6e2c38aafc23cf114f3ba0d0ff3baead34328b +Signed-off-by: Fabrice Fontaine +--- + regcomp.c | 13 +- + regcomp.h | 14 ++- + regcomp_debug.c | 308 +++++++++++++++++++++++----------------------- + regcomp_invlist.c | 3 +- + regexec.c | 3 +- + 5 files changed, 181 insertions(+), 160 deletions(-) + +diff --git a/regcomp.c b/regcomp.c +index d3c135fbfad1..6e35d95d2ac6 100644 +--- a/regcomp.c ++++ b/regcomp.c +@@ -290,6 +290,7 @@ S_edit_distance(const UV* src, + /* END of edit_distance() stuff + * ========================================================= */ + ++#ifdef PERL_RE_BUILD_AUX + /* add a data member to the struct reg_data attached to this regex, it should + * always return a non-zero return. the 's' argument is the type of the items + * being added and the n is the number of items. The length of 's' should match +@@ -340,6 +341,7 @@ Perl_reg_add_data(RExC_state_t* const pRExC_state, const char* const s, const U3 + assert(count>0); + return count; + } ++#endif /* PERL_RE_BUILD_AUX */ + + /*XXX: todo make this not included in a non debugging perl, but appears to be + * used anyway there, in 'use re' */ +@@ -7443,6 +7445,7 @@ S_regatom(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth) + } + + ++#ifdef PERL_RE_BUILD_AUX + void + Perl_populate_anyof_bitmap_from_invlist(pTHX_ regnode *node, SV** invlist_ptr) + { +@@ -7502,6 +7505,7 @@ Perl_populate_anyof_bitmap_from_invlist(pTHX_ regnode *node, SV** invlist_ptr) + } + } + } ++#endif /* PERL_RE_BUILD_AUX */ + + /* Parse POSIX character classes: [[:foo:]], [[=foo=]], [[.foo.]]. + Character classes ([:foo:]) can also be negated ([:^foo:]). +@@ -9095,6 +9099,7 @@ S_dump_regex_sets_structures(pTHX_ RExC_state_t *pRExC_state, + #undef IS_OPERATOR + #undef IS_OPERAND + ++#ifdef PERL_RE_BUILD_AUX + void + Perl_add_above_Latin1_folds(pTHX_ RExC_state_t *pRExC_state, const U8 cp, SV** invlist) + { +@@ -9182,6 +9187,8 @@ Perl_add_above_Latin1_folds(pTHX_ RExC_state_t *pRExC_state, const U8 cp, SV** i + } + } + } ++#endif /* PERL_RE_BUILD_AUX */ ++ + + STATIC void + S_output_posix_warnings(pTHX_ RExC_state_t *pRExC_state, AV* posix_warnings) +@@ -12105,6 +12112,7 @@ S_optimize_regclass(pTHX_ + + #undef HAS_NONLOCALE_RUNTIME_PROPERTY_DEFINITION + ++#ifdef PERL_RE_BUILD_AUX + void + Perl_set_ANYOF_arg(pTHX_ RExC_state_t* const pRExC_state, + regnode* const node, +@@ -12261,6 +12269,7 @@ Perl_set_ANYOF_arg(pTHX_ RExC_state_t* const pRExC_state, + RExC_rxi->data->data[n] = (void*)rv; + ARG1u_SET(node, n); + } ++#endif /* PERL_RE_BUILD_AUX */ + + SV * + +@@ -12999,6 +13008,8 @@ S_regtail_study(pTHX_ RExC_state_t *pRExC_state, regnode_offset p, + } + #endif + ++ ++#ifdef PERL_RE_BUILD_AUX + SV* + Perl_get_ANYOFM_contents(pTHX_ const regnode * n) { + +@@ -13047,7 +13058,7 @@ Perl_get_ANYOFHbbm_contents(pTHX_ const regnode * n) { + UTF_CONTINUATION_MARK | 0)); + return cp_list; + } +- ++#endif /* PERL_RE_BUILD_AUX */ + + + SV * +diff --git a/regcomp.h b/regcomp.h +index 31c91e6a68e8..017a9f843514 100644 +--- a/regcomp.h ++++ b/regcomp.h +@@ -1554,7 +1554,19 @@ typedef enum { + #define EVAL_OPTIMISTIC_FLAG 128 + #define EVAL_FLAGS_MASK (EVAL_OPTIMISTIC_FLAG-1) + +- ++/* We define PERL_RE_BUILD_DEBUG if we are NOT compiling the re extension and ++ * we are under DEBUGGING, or if we are ARE compiling the re extension ++ * and this is not a DEBUGGING enabled build (identified by ++ * DEBUGGING_RE_ONLY being defined) ++ */ ++#if ( defined(USE_DYNAMIC_LOADING) && defined(DEBUGGING)) || \ ++ ( defined(PERL_EXT_RE_BUILD) && defined(DEBUGGING_RE_ONLY)) || \ ++ (!defined(PERL_EXT_RE_BUILD) && defined(DEBUGGING)) ++#define PERL_RE_BUILD_DEBUG ++#endif ++#if ( defined(USE_DYNAMIC_LOADING) || !defined(PERL_EXT_RE_BUILD) ) ++#define PERL_RE_BUILD_AUX ++#endif + + #endif /* PERL_REGCOMP_H_ */ + +diff --git a/regcomp_debug.c b/regcomp_debug.c +index 93db7a89cf48..96598c49c0bc 100644 +--- a/regcomp_debug.c ++++ b/regcomp_debug.c +@@ -18,8 +18,7 @@ + #include "unicode_constants.h" + #include "regcomp_internal.h" + +-#ifdef DEBUGGING +- ++#ifdef PERL_RE_BUILD_DEBUG + int + Perl_re_printf(pTHX_ const char *fmt, ...) + { +@@ -159,13 +158,160 @@ Perl_debug_peep(pTHX_ const char *str, const RExC_state_t *pRExC_state, + }); + } + +-#endif /* DEBUGGING */ ++const regnode * ++Perl_dumpuntil(pTHX_ const regexp *r, const regnode *start, const regnode *node, ++ const regnode *last, const regnode *plast, ++ SV* sv, I32 indent, U32 depth) ++{ ++ const regnode *next; ++ const regnode *optstart= NULL; ++ ++ RXi_GET_DECL(r, ri); ++ DECLARE_AND_GET_RE_DEBUG_FLAGS; ++ ++ PERL_ARGS_ASSERT_DUMPUNTIL; ++ ++#ifdef DEBUG_DUMPUNTIL ++ Perl_re_printf( aTHX_ "--- %d : %d - %d - %d\n", indent, node-start, ++ last ? last-start : 0, plast ? plast-start : 0); ++#endif ++ ++ if (plast && plast < last) ++ last= plast; ++ ++ while (node && (!last || node < last)) { ++ const U8 op = OP(node); ++ ++ if (op == CLOSE || op == SRCLOSE || op == WHILEM) ++ indent--; ++ next = regnext((regnode *)node); ++ const regnode *after = regnode_after((regnode *)node,0); ++ ++ /* Where, what. */ ++ if (op == OPTIMIZED) { ++ if (!optstart && RE_DEBUG_FLAG(RE_DEBUG_COMPILE_OPTIMISE)) ++ optstart = node; ++ else ++ goto after_print; ++ } else ++ CLEAR_OPTSTART; ++ ++ regprop(r, sv, node, NULL, NULL); ++ Perl_re_printf( aTHX_ "%4" IVdf ":%*s%s", (IV)(node - start), ++ (int)(2*indent + 1), "", SvPVX_const(sv)); ++ ++ if (op != OPTIMIZED) { ++ if (next == NULL) /* Next ptr. */ ++ Perl_re_printf( aTHX_ " (0)"); ++ else if (REGNODE_TYPE(op) == BRANCH ++ && REGNODE_TYPE(OP(next)) != BRANCH ) ++ Perl_re_printf( aTHX_ " (FAIL)"); ++ else ++ Perl_re_printf( aTHX_ " (%" IVdf ")", (IV)(next - start)); ++ Perl_re_printf( aTHX_ "\n"); ++ } ++ ++ after_print: ++ if (REGNODE_TYPE(op) == BRANCHJ) { ++ assert(next); ++ const regnode *nnode = (OP(next) == LONGJMP ++ ? regnext((regnode *)next) ++ : next); ++ if (last && nnode > last) ++ nnode = last; ++ DUMPUNTIL(after, nnode); ++ } ++ else if (REGNODE_TYPE(op) == BRANCH) { ++ assert(next); ++ DUMPUNTIL(after, next); ++ } ++ else if ( REGNODE_TYPE(op) == TRIE ) { ++ const regnode *this_trie = node; ++ const U32 n = ARG1u(node); ++ const reg_ac_data * const ac = op>=AHOCORASICK ? ++ (reg_ac_data *)ri->data->data[n] : ++ NULL; ++ const reg_trie_data * const trie = ++ (reg_trie_data*)ri->data->data[optrie]; ++#ifdef DEBUGGING ++ AV *const trie_words ++ = MUTABLE_AV(ri->data->data[n + TRIE_WORDS_OFFSET]); ++#endif ++ const regnode *nextbranch= NULL; ++ I32 word_idx; ++ SvPVCLEAR(sv); ++ for (word_idx= 0; word_idx < (I32)trie->wordcount; word_idx++) { ++ SV ** const elem_ptr = av_fetch_simple(trie_words, word_idx, 0); ++ ++ Perl_re_indentf( aTHX_ "%s ", ++ indent+3, ++ elem_ptr ++ ? pv_pretty(sv, SvPV_nolen_const(*elem_ptr), ++ SvCUR(*elem_ptr), PL_dump_re_max_len, ++ PL_colors[0], PL_colors[1], ++ (SvUTF8(*elem_ptr) ++ ? PERL_PV_ESCAPE_UNI ++ : 0) ++ | PERL_PV_PRETTY_ELLIPSES ++ | PERL_PV_PRETTY_LTGT ++ ) ++ : "???" ++ ); ++ if (trie->jump) { ++ U16 dist= trie->jump[word_idx+1]; ++ Perl_re_printf( aTHX_ "(%" UVuf ")\n", ++ (UV)((dist ? this_trie + dist : next) - start)); ++ if (dist) { ++ if (!nextbranch) ++ nextbranch= this_trie + trie->jump[0]; ++ DUMPUNTIL(this_trie + dist, nextbranch); ++ } ++ if (nextbranch && REGNODE_TYPE(OP(nextbranch))==BRANCH) ++ nextbranch= regnext((regnode *)nextbranch); ++ } else { ++ Perl_re_printf( aTHX_ "\n"); ++ } ++ } ++ if (last && next > last) ++ node= last; ++ else ++ node= next; ++ } ++ else if ( op == CURLY ) { /* "next" might be very big: optimizer */ ++ DUMPUNTIL(after, after + 1); /* +1 is NOT a REGNODE_AFTER */ ++ } ++ else if (REGNODE_TYPE(op) == CURLY && op != CURLYX) { ++ assert(next); ++ DUMPUNTIL(after, next); ++ } ++ else if ( op == PLUS || op == STAR) { ++ DUMPUNTIL(after, after + 1); /* +1 NOT a REGNODE_AFTER */ ++ } ++ else if (REGNODE_TYPE(op) == EXACT || op == ANYOFHs) { ++ /* Literal string, where present. */ ++ node = (const regnode *)REGNODE_AFTER_varies(node); ++ } ++ else { ++ node = REGNODE_AFTER_opcode(node,op); ++ } ++ if (op == CURLYX || op == OPEN || op == SROPEN) ++ indent++; ++ if (REGNODE_TYPE(op) == END) ++ break; ++ } ++ CLEAR_OPTSTART; ++#ifdef DEBUG_DUMPUNTIL ++ Perl_re_printf( aTHX_ "--- %d\n", (int)indent); ++#endif ++ return node; ++} ++ ++#endif /* PERL_RE_BUILD_DEBUG */ + + /* + - regdump - dump a regexp onto Perl_debug_log in vaguely comprehensible form + */ + #ifdef DEBUGGING +- + static void + S_regdump_intflags(pTHX_ const char *lead, const U32 flags) + { +@@ -907,8 +1053,8 @@ Perl_regprop(pTHX_ const regexp *prog, SV *sv, const regnode *o, const regmatch_ + #endif /* DEBUGGING */ + } + +-#ifdef DEBUGGING + ++#ifdef DEBUGGING + STATIC void + S_put_code_point(pTHX_ SV *sv, UV c) + { +@@ -1517,154 +1663,4 @@ S_put_charclass_bitmap_innards(pTHX_ SV *sv, + + return did_output_something; + } +- +- +-const regnode * +-Perl_dumpuntil(pTHX_ const regexp *r, const regnode *start, const regnode *node, +- const regnode *last, const regnode *plast, +- SV* sv, I32 indent, U32 depth) +-{ +- const regnode *next; +- const regnode *optstart= NULL; +- +- RXi_GET_DECL(r, ri); +- DECLARE_AND_GET_RE_DEBUG_FLAGS; +- +- PERL_ARGS_ASSERT_DUMPUNTIL; +- +-#ifdef DEBUG_DUMPUNTIL +- Perl_re_printf( aTHX_ "--- %d : %d - %d - %d\n", indent, node-start, +- last ? last-start : 0, plast ? plast-start : 0); +-#endif +- +- if (plast && plast < last) +- last= plast; +- +- while (node && (!last || node < last)) { +- const U8 op = OP(node); +- +- if (op == CLOSE || op == SRCLOSE || op == WHILEM) +- indent--; +- next = regnext((regnode *)node); +- const regnode *after = regnode_after((regnode *)node,0); +- +- /* Where, what. */ +- if (op == OPTIMIZED) { +- if (!optstart && RE_DEBUG_FLAG(RE_DEBUG_COMPILE_OPTIMISE)) +- optstart = node; +- else +- goto after_print; +- } else +- CLEAR_OPTSTART; +- +- regprop(r, sv, node, NULL, NULL); +- Perl_re_printf( aTHX_ "%4" IVdf ":%*s%s", (IV)(node - start), +- (int)(2*indent + 1), "", SvPVX_const(sv)); +- +- if (op != OPTIMIZED) { +- if (next == NULL) /* Next ptr. */ +- Perl_re_printf( aTHX_ " (0)"); +- else if (REGNODE_TYPE(op) == BRANCH +- && REGNODE_TYPE(OP(next)) != BRANCH ) +- Perl_re_printf( aTHX_ " (FAIL)"); +- else +- Perl_re_printf( aTHX_ " (%" IVdf ")", (IV)(next - start)); +- Perl_re_printf( aTHX_ "\n"); +- } +- +- after_print: +- if (REGNODE_TYPE(op) == BRANCHJ) { +- assert(next); +- const regnode *nnode = (OP(next) == LONGJMP +- ? regnext((regnode *)next) +- : next); +- if (last && nnode > last) +- nnode = last; +- DUMPUNTIL(after, nnode); +- } +- else if (REGNODE_TYPE(op) == BRANCH) { +- assert(next); +- DUMPUNTIL(after, next); +- } +- else if ( REGNODE_TYPE(op) == TRIE ) { +- const regnode *this_trie = node; +- const U32 n = ARG1u(node); +- const reg_ac_data * const ac = op>=AHOCORASICK ? +- (reg_ac_data *)ri->data->data[n] : +- NULL; +- const reg_trie_data * const trie = +- (reg_trie_data*)ri->data->data[optrie]; +-#ifdef DEBUGGING +- AV *const trie_words +- = MUTABLE_AV(ri->data->data[n + TRIE_WORDS_OFFSET]); +-#endif +- const regnode *nextbranch= NULL; +- I32 word_idx; +- SvPVCLEAR(sv); +- for (word_idx= 0; word_idx < (I32)trie->wordcount; word_idx++) { +- SV ** const elem_ptr = av_fetch_simple(trie_words, word_idx, 0); +- +- Perl_re_indentf( aTHX_ "%s ", +- indent+3, +- elem_ptr +- ? pv_pretty(sv, SvPV_nolen_const(*elem_ptr), +- SvCUR(*elem_ptr), PL_dump_re_max_len, +- PL_colors[0], PL_colors[1], +- (SvUTF8(*elem_ptr) +- ? PERL_PV_ESCAPE_UNI +- : 0) +- | PERL_PV_PRETTY_ELLIPSES +- | PERL_PV_PRETTY_LTGT +- ) +- : "???" +- ); +- if (trie->jump) { +- U16 dist= trie->jump[word_idx+1]; +- Perl_re_printf( aTHX_ "(%" UVuf ")\n", +- (UV)((dist ? this_trie + dist : next) - start)); +- if (dist) { +- if (!nextbranch) +- nextbranch= this_trie + trie->jump[0]; +- DUMPUNTIL(this_trie + dist, nextbranch); +- } +- if (nextbranch && REGNODE_TYPE(OP(nextbranch))==BRANCH) +- nextbranch= regnext((regnode *)nextbranch); +- } else { +- Perl_re_printf( aTHX_ "\n"); +- } +- } +- if (last && next > last) +- node= last; +- else +- node= next; +- } +- else if ( op == CURLY ) { /* "next" might be very big: optimizer */ +- DUMPUNTIL(after, after + 1); /* +1 is NOT a REGNODE_AFTER */ +- } +- else if (REGNODE_TYPE(op) == CURLY && op != CURLYX) { +- assert(next); +- DUMPUNTIL(after, next); +- } +- else if ( op == PLUS || op == STAR) { +- DUMPUNTIL(after, after + 1); /* +1 NOT a REGNODE_AFTER */ +- } +- else if (REGNODE_TYPE(op) == EXACT || op == ANYOFHs) { +- /* Literal string, where present. */ +- node = (const regnode *)REGNODE_AFTER_varies(node); +- } +- else { +- node = REGNODE_AFTER_opcode(node,op); +- } +- if (op == CURLYX || op == OPEN || op == SROPEN) +- indent++; +- if (REGNODE_TYPE(op) == END) +- break; +- } +- CLEAR_OPTSTART; +-#ifdef DEBUG_DUMPUNTIL +- Perl_re_printf( aTHX_ "--- %d\n", (int)indent); +-#endif +- return node; +-} +- +-#endif /* DEBUGGING */ ++#endif /* DEBUGGING */ +diff --git a/regcomp_invlist.c b/regcomp_invlist.c +index 9ea3f431817d..82f82305846a 100644 +--- a/regcomp_invlist.c ++++ b/regcomp_invlist.c +@@ -18,7 +18,7 @@ + #include "unicode_constants.h" + #include "regcomp_internal.h" + +- ++#ifdef PERL_RE_BUILD_AUX + void + Perl_populate_bitmap_from_invlist(pTHX_ SV * invlist, const UV offset, const U8 * bitmap, const Size_t len) + { +@@ -70,6 +70,7 @@ Perl_populate_invlist_from_bitmap(pTHX_ const U8 * bitmap, const Size_t bitmap_l + } + } + } ++#endif /* PERL_RE_BUILD_AUX */ + + /* This section of code defines the inversion list object and its methods. The + * interfaces are highly subject to change, so as much as possible is static to +diff --git a/regexec.c b/regexec.c +index c404d9aa3d73..de0b7c461918 100644 +--- a/regexec.c ++++ b/regexec.c +@@ -4428,7 +4428,8 @@ S_regtry(pTHX_ regmatch_info *reginfo, char **startposp) + */ + #define REPORT_CODE_OFF 29 + #define INDENT_CHARS(depth) ((int)(depth) % 20) +-#ifdef DEBUGGING ++ ++#ifdef PERL_RE_BUILD_DEBUG + int + Perl_re_exec_indentf(pTHX_ const char *fmt, U32 depth, ...) + { diff --git a/package/perl/Config.in b/package/perl/Config.in new file mode 100644 index 00000000..0ead1c4a --- /dev/null +++ b/package/perl/Config.in @@ -0,0 +1,37 @@ +config BR2_PACKAGE_PERL + bool "perl" + depends on BR2_USE_MMU # fork() + help + Larry Wall's Practical Extraction and Report Language + An interpreted scripting language, known among some as + "Unix's Swiss Army Chainsaw". + + http://www.perl.org/ + +if BR2_PACKAGE_PERL + +config BR2_PACKAGE_PERL_MODULES + string "custom module selection" + help + List of space-separated perl modules (without .pm) to copy + to the rootfs. + + Examples: constant Getopt/Std Time/Local + + Module dependencies on external libraries are not automatic so + check your needs. + + Leave empty for all modules (as far as the external libraries + are available). + +config BR2_PACKAGE_PERL_THREADS + bool "thread support" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Enable use of threads in Perl scripts + + WARNING: The use of interpreter-based threads in Perl + is officially discouraged. + See https://perldoc.perl.org/threads.html#WARNING + +endif diff --git a/package/perl/perl.hash b/package/perl/perl.hash new file mode 100644 index 00000000..91abcdeb --- /dev/null +++ b/package/perl/perl.hash @@ -0,0 +1,12 @@ +# Hashes from: https://www.cpan.org/src/5.0/perl-5.38.2.tar.xz.{md5,sha1,sha256}.txt +md5 d3957d75042918a23ec0abac4a2b7e0a perl-5.38.2.tar.xz +sha1 af1d5f9e0499f3cfa4736433631aebf7624714da perl-5.38.2.tar.xz +sha256 d91115e90b896520e83d4de6b52f8254ef2b70a8d545ffab33200ea9f1cf29e8 perl-5.38.2.tar.xz + +# Hash from: https://github.com/arsv/perl-cross/releases/download/1.5.2/perl-cross-1.5.2.hash +sha256 584dc54c48dca25e032b676a15bef377c1fed9de318b4fc140292a5dbf326e90 perl-cross-1.5.2.tar.gz + +# Locally calculated +sha256 dd90d4f42e4dcadf5a7c09eea0189d93c7b37ae560c91f0f6d5233ed3b9292a2 Artistic +sha256 d77d235e41d54594865151f4751e835c5a82322b0e87ace266567c3391a4b912 Copying +sha256 9519aaeeac509b3fa8778155a63545b6086f8313546b93fe9958d1c434d476a8 README diff --git a/package/perl/perl.mk b/package/perl/perl.mk new file mode 100644 index 00000000..9de0425e --- /dev/null +++ b/package/perl/perl.mk @@ -0,0 +1,126 @@ +################################################################################ +# +# perl +# +################################################################################ + +# When updating the version here, also update utils/scancpan +PERL_VERSION_MAJOR = 38 +PERL_VERSION = 5.$(PERL_VERSION_MAJOR).2 +PERL_SITE = https://www.cpan.org/src/5.0 +PERL_SOURCE = perl-$(PERL_VERSION).tar.xz +PERL_LICENSE = Artistic or GPL-1.0+ +PERL_LICENSE_FILES = Artistic Copying README +PERL_CPE_ID_VENDOR = perl +PERL_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) +PERL_INSTALL_STAGING = YES + +PERL_CROSS_VERSION = 1.5.2 +# 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-cross-$(PERL_CROSS_VERSION).tar.gz +PERL_EXTRA_DOWNLOADS = $(PERL_CROSS_SITE)/$(PERL_CROSS_SOURCE) + +# 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 +# together with perl +define PERL_CROSS_EXTRACT + $(call suitable-extractor,$(PERL_CROSS_SOURCE)) $(PERL_DL_DIR)/$(PERL_CROSS_SOURCE) | \ + $(TAR) --strip-components=1 -C $(@D) $(TAR_OPTIONS) - +endef +PERL_POST_EXTRACT_HOOKS += PERL_CROSS_EXTRACT + +# 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 +endif +ifeq ($(BR2_PACKAGE_GDBM),y) +PERL_DEPENDENCIES += gdbm +endif + +# We have to override LD, because an external multilib toolchain ld is not +# wrapped to provide the required sysroot options. +PERL_CONF_OPTS = \ + --target=$(GNU_TARGET_NAME) \ + --target-tools-prefix=$(TARGET_CROSS) \ + --prefix=/usr \ + -Dld="$(TARGET_CC)" \ + -Dccflags="$(TARGET_CFLAGS)" \ + -Dldflags="$(TARGET_LDFLAGS) -lm $(TARGET_NLS_LIBS)" \ + -Dmydomain="" \ + -Dmyhostname="noname" \ + -Dmyuname="Buildroot $(BR2_VERSION_FULL)" \ + -Dosname=linux \ + -Dosvers=$(LINUX_VERSION) \ + -Dperladmin=root + +ifeq ($(shell expr $(PERL_VERSION_MAJOR) % 2), 1) +PERL_CONF_OPTS += -Dusedevel +endif + +ifeq ($(BR2_PACKAGE_PERL_THREADS),y) +PERL_CONF_OPTS += -Dusethreads +endif + +ifeq ($(BR2_STATIC_LIBS),y) +PERL_CONF_OPTS += --all-static --no-dynaloader +endif + +PERL_MODULES = $(call qstrip,$(BR2_PACKAGE_PERL_MODULES)) +ifneq ($(PERL_MODULES),) +PERL_CONF_OPTS += --only-mod=$(subst $(space),$(comma),$(PERL_MODULES)) +endif + +define PERL_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) HOSTCC='$(HOSTCC_NOCCACHE)' \ + ./configure $(PERL_CONF_OPTS)) + $(SED) 's/UNKNOWN-/Buildroot $(subst /,\/,$(BR2_VERSION_FULL)) /' $(@D)/patchlevel.h +endef + +define PERL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) all +endef + +define PERL_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR="$(STAGING_DIR)" install.perl install.sym +endef + +define PERL_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR="$(TARGET_DIR)" install.perl install.sym +endef + +HOST_PERL_CONF_OPTS = \ + -des \ + -Dprefix="$(HOST_DIR)" \ + -Dcc="$(HOSTCC)" + +define HOST_PERL_CONFIGURE_CMDS + (cd $(@D); $(HOST_MAKE_ENV) HOSTCC='$(HOSTCC_NOCCACHE)' \ + ./Configure $(HOST_PERL_CONF_OPTS)) +endef + +define HOST_PERL_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_PERL_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) INSTALL_DEPENDENCE='' install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) + +define PERL_FINALIZE_TARGET + rm -rf $(TARGET_DIR)/usr/lib/perl5/$(PERL_VERSION)/pod + rm -rf $(TARGET_DIR)/usr/lib/perl5/$(PERL_VERSION)/$(PERL_ARCHNAME)/CORE + find $(TARGET_DIR)/usr/lib/perl5/ -name 'extralibs.ld' -print0 | xargs -0 rm -f + find $(TARGET_DIR)/usr/lib/perl5/ -name '*.bs' -print0 | xargs -0 rm -f + find $(TARGET_DIR)/usr/lib/perl5/ -name '.packlist' -print0 | xargs -0 rm -f +endef +PERL_TARGET_FINALIZE_HOOKS += PERL_FINALIZE_TARGET diff --git a/package/petitboot/Config.in b/package/petitboot/Config.in new file mode 100644 index 00000000..50d5a4da --- /dev/null +++ b/package/petitboot/Config.in @@ -0,0 +1,50 @@ +config BR2_PACKAGE_PETITBOOT + bool "petitboot" + depends on BR2_PACKAGE_KEXEC_ARCH_SUPPORTS || BR2_PACKAGE_KEXEC_LITE_ARCH_SUPPORTS + depends on BR2_USE_MMU # lvm2, agetty + depends on BR2_USE_WCHAR # elfutils, kexec-lite + depends on !BR2_STATIC_LIBS # elfutils, kexec-lite, lvm2 + depends on BR2_TOOLCHAIN_HAS_THREADS # elfutils, kexec-lite, lvm2 + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 || !BR2_PACKAGE_KEXEC_ARCH_SUPPORTS # kexec + select BR2_PACKAGE_ELFUTILS + select BR2_PACKAGE_LVM2 # devmapper + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_NCURSES_WCHAR + # run-time dependencies + select BR2_PACKAGE_KEXEC if !BR2_PACKAGE_KEXEC_LITE_ARCH_SUPPORTS + select BR2_PACKAGE_KEXEC_LITE if BR2_PACKAGE_KEXEC_LITE_ARCH_SUPPORTS && !BR2_PACKAGE_KEXEC + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_NVME if ( BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le ) + select BR2_PACKAGE_POWERPC_UTILS if ( BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le ) + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_AGETTY + help + Petitboot is a small kexec-based bootloader + + NOTE: petitboot looks best in a UTF-8 locale; be sure there + is one listed in BR2_GENERATE_LOCALE. + + http://www.kernel.org/pub/linux/kernel/people/geoff/petitboot/petitboot.html + +if BR2_PACKAGE_PETITBOOT + +config BR2_PACKAGE_PETITBOOT_GETTY_PORT + string "TTY port(s)" + default "console" + help + Specify a space-separated list of ports to run the petitboot + UI on. Wildcards are allowed. Example: "hvc* ttys0 ttyS*" + +endif # BR2_PACKAGE_PETITBOOT + +comment "petitboot needs a toolchain w/ wchar, dynamic library, threads, udev /dev management" + depends on BR2_PACKAGE_KEXEC_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_PACKAGE_HAS_UDEV + +comment "petitboot w/ kexec needs a toolchain w/ headers >= 3.17" + depends on BR2_PACKAGE_KEXEC_ARCH_SUPPORTS && !BR2_PACKAGE_KEXEC_LITE_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 diff --git a/package/petitboot/S15pb-discover b/package/petitboot/S15pb-discover new file mode 100644 index 00000000..9e8f6c87 --- /dev/null +++ b/package/petitboot/S15pb-discover @@ -0,0 +1,59 @@ +#!/bin/sh + +DAEMON="pb-discover" +PIDFILE="/var/run/$DAEMON.pid" + +# shellcheck source=/dev/null +[ -r "/etc/default/petitboot" ] && . "/etc/default/petitboot" + +if [ "$(pb-config debug)" = "enabled" ] ; then + PB_DISCOVER_ARGS="$PB_DISCOVER_ARGS --verbose" +fi + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2174 # only apply -m to deepest dir + mkdir -p -m 0775 /var/log/petitboot + chown petituser:petitgroup /var/log/petitboot + + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -b -m -p "$PIDFILE" -x "/usr/sbin/$DAEMON" \ + -- $PB_DISCOVER_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 + ;; +esac diff --git a/package/petitboot/kexec-restart.in b/package/petitboot/kexec-restart.in new file mode 100644 index 00000000..d7493914 --- /dev/null +++ b/package/petitboot/kexec-restart.in @@ -0,0 +1,8 @@ +#!/bin/sh + +@KEXEC_COMMAND@ + +while : +do + sleep 1 +done diff --git a/package/petitboot/pb-console b/package/petitboot/pb-console new file mode 100644 index 00000000..8b23b223 --- /dev/null +++ b/package/petitboot/pb-console @@ -0,0 +1,38 @@ +#!/bin/sh + +DAEMON="pb-console" + +PB_CONSOLE_PORT=${2:-"console"} +PB_CONSOLE_ARGS="--getty=/sbin/agetty --detach -- -a petituser -n -i $PB_CONSOLE_PORT linux" + +# shellcheck source=/dev/null +[ -r "/etc/default/petitboot" ] && . "/etc/default/petitboot" + +start() { + printf 'Starting %s on %s: ' "$DAEMON" "$PB_CONSOLE_PORT" + # shellcheck disable=SC2174 # only apply -m to deepest dir + mkdir -p -m 0775 /var/log/petitboot + chown petituser:petitgroup /var/log/petitboot + + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -x "/usr/libexec/petitboot/$DAEMON" \ + -- $PB_CONSOLE_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +case "$1" in + start) + "$1";; + stop|restart|reload) + ;; + *) + echo "Usage: $0 {start|stop|restart|reload} [port]" + exit 1 + ;; +esac diff --git a/package/petitboot/pb-shell b/package/petitboot/pb-shell new file mode 100644 index 00000000..99887c3f --- /dev/null +++ b/package/petitboot/pb-shell @@ -0,0 +1,10 @@ +#!/bin/sh + +reset + +cat <> $(TARGET_DIR)/etc/inittab +endef +PETITBOOT_TARGET_FINALIZE_HOOKS += PETITBOOT_BUSYBOX_INITTAB +else ifeq ($(BR2_INIT_SYSV),y) +# inittab runlevel 6 entry runs kexec +PETITBOOT_KEXEC_COMMAND = /sbin/shutdown -r now +define PETITBOOT_SYSV_INITTAB + grep -q kexec $(TARGET_DIR)/etc/inittab || \ + $(SED) 's~^reb0:.*~reb0:6:wait:/usr/sbin/kexec -f -e~' $(TARGET_DIR)/etc/inittab +endef +PETITBOOT_TARGET_FINALIZE_HOOKS += PETITBOOT_SYSV_INITTAB +else ifeq ($(BR2_INIT_OPENRC),y) +PETITBOOT_KEXEC_COMMAND = /sbin/openrc-shutdown --kexec now +else ifeq ($(BR2_INIT_SYSTEMD),y) +PETITBOOT_KEXEC_COMMAND = /usr/bin/systemctl kexec +else # BR2_INIT_NONE +PETITBOOT_KEXEC_COMMAND = /usr/sbin/kexec -f -e +endif + +PETITBOOT_GETTY_PORT = $(patsubst %,'%',$(call qstrip,$(BR2_PACKAGE_PETITBOOT_GETTY_PORT))) + +define PETITBOOT_POST_INSTALL + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/kexec-restart.in \ + $(TARGET_DIR)/usr/libexec/petitboot/kexec-restart + $(SED) 's~@KEXEC_COMMAND@~$(PETITBOOT_KEXEC_COMMAND)~' \ + $(TARGET_DIR)/usr/libexec/petitboot/kexec-restart + $(INSTALL) -D -m 0755 $(@D)/utils/hooks/01-create-default-dtb \ + $(TARGET_DIR)/etc/petitboot/boot.d/01-create-default-dtb + $(INSTALL) -D -m 0755 $(@D)/utils/hooks/90-sort-dtb \ + $(TARGET_DIR)/etc/petitboot/boot.d/90-sort-dtb + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/S15pb-discover \ + $(TARGET_DIR)/etc/init.d/S15pb-discover + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/pb-console \ + $(TARGET_DIR)/etc/init.d/pb-console + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/pb-shell \ + $(TARGET_DIR)/usr/libexec/petitboot/pb-shell + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/shell_profile \ + $(TARGET_DIR)/home/petituser/.profile + + mkdir -p $(TARGET_DIR)/etc/udev/rules.d + for port in $(PETITBOOT_GETTY_PORT); do \ + printf 'SUBSYSTEM=="tty", KERNEL=="%s", RUN+="/etc/init.d/pb-console start $$name"\n' "$$port"; \ + done > $(TARGET_DIR)/etc/udev/rules.d/petitboot-console-ui.rules + + mkdir -p $(TARGET_DIR)/usr/share/udhcpc/default.script.d/ + ln -sf /usr/sbin/pb-udhcpc \ + $(TARGET_DIR)/usr/share/udhcpc/default.script.d/ + +endef + +PETITBOOT_POST_INSTALL_TARGET_HOOKS += PETITBOOT_POST_INSTALL + +define PETITBOOT_USERS + petituser -1 petitgroup -1 * /home/petituser /bin/sh - petitboot user +endef + +$(eval $(autotools-package)) diff --git a/package/petitboot/shell_profile b/package/petitboot/shell_profile new file mode 100644 index 00000000..a958ca44 --- /dev/null +++ b/package/petitboot/shell_profile @@ -0,0 +1,3 @@ +if [ "$PPID" = "1" ]; then + exec /usr/libexec/petitboot/pb-console +fi diff --git a/package/phidgetwebservice/Config.in b/package/phidgetwebservice/Config.in new file mode 100644 index 00000000..b052f180 --- /dev/null +++ b/package/phidgetwebservice/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_PHIDGETWEBSERVICE + bool "phidgetwebservice" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb, libphidget + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libphidget -> libusb + depends on !BR2_STATIC_LIBS # libphidget + select BR2_PACKAGE_LIBPHIDGET + help + phidgetwebservice (the Phidget WebService) provides an HTTP + front-end to the libphidget device control API. This + provides an alternative to the libphidget C linkage + interface for controlling locally attached Phidgets USB + devices and it also allows you to control Phidget USB + devices remotely when the host running the phidgetwebservice + has an exposed network interface. + + The phidgetwebservice client program uses the libphidget + HTTP functions to send commands to the phidgetwebservice. + + http://phidgets.com/ + +comment "phidgetwebservice needs a toolchain w/ threads, dynamic library, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/phidgetwebservice/phidgetwebservice.hash b/package/phidgetwebservice/phidgetwebservice.hash new file mode 100644 index 00000000..49017f29 --- /dev/null +++ b/package/phidgetwebservice/phidgetwebservice.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 aa63cbd2ab87182d6e0c05d553ee4c8cc73d268516d8e0a1e881baed391c081d phidgetwebservice_2.1.9.20190409.tar.gz +sha256 ea8af5e789cb2d4e9b10bce3874982ade163b749b6bfbdb32e2df21c4d106de1 COPYING diff --git a/package/phidgetwebservice/phidgetwebservice.mk b/package/phidgetwebservice/phidgetwebservice.mk new file mode 100644 index 00000000..b5f335c4 --- /dev/null +++ b/package/phidgetwebservice/phidgetwebservice.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# phidgetwebservice +# +################################################################################ + +PHIDGETWEBSERVICE_VERSION = 2.1.9.20190409 +PHIDGETWEBSERVICE_SOURCE = phidgetwebservice_$(PHIDGETWEBSERVICE_VERSION).tar.gz +PHIDGETWEBSERVICE_SITE = https://www.phidgets.com/downloads/phidget21/servers/linux/phidgetwebservice +PHIDGETWEBSERVICE_DEPENDENCIES = libphidget +PHIDGETWEBSERVICE_LICENSE = LGPL-3.0 +PHIDGETWEBSERVICE_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/php-amqp/Config.in b/package/php-amqp/Config.in new file mode 100644 index 00000000..48fff91d --- /dev/null +++ b/package/php-amqp/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PHP_AMQP + bool "php-amqp" + depends on BR2_TOOLCHAIN_HAS_THREADS # rabbitmq-c + select BR2_PACKAGE_OPENSSL # rabbitmq-c: amqp_ssl_socket.h + 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/package/php-amqp/php-amqp.hash b/package/php-amqp/php-amqp.hash new file mode 100644 index 00000000..159a157a --- /dev/null +++ b/package/php-amqp/php-amqp.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2de740da9a884ade2caf0e59e5521bbf80da16155fa6a6205630b473aed5e6dd amqp-2.0.0.tgz +sha256 ecd004e9ae3fcf54896b562d5e8008e36041f2620076effd58e5f4187299cee8 LICENSE diff --git a/package/php-amqp/php-amqp.mk b/package/php-amqp/php-amqp.mk new file mode 100644 index 00000000..7e58234d --- /dev/null +++ b/package/php-amqp/php-amqp.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# php-amqp +# +################################################################################ + +PHP_AMQP_VERSION = 2.0.0 +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-3.01 +PHP_AMQP_LICENSE_FILES = LICENSE + +define PHP_AMQP_PHPIZE + (cd $(@D); \ + PHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \ + PHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \ + $(STAGING_DIR)/usr/bin/phpize) +endef + +PHP_AMQP_PRE_CONFIGURE_HOOKS += PHP_AMQP_PHPIZE + +$(eval $(autotools-package)) diff --git a/package/php-apcu/Config.in b/package/php-apcu/Config.in new file mode 100644 index 00000000..f8e1eb17 --- /dev/null +++ b/package/php-apcu/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PHP_APCU + bool "php-apcu" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + APCu is an in-memory key-value store for PHP. + + https://pecl.php.net/package/APCu + +comment "php-apcu needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/php-apcu/php-apcu.hash b/package/php-apcu/php-apcu.hash new file mode 100644 index 00000000..4a5eadf8 --- /dev/null +++ b/package/php-apcu/php-apcu.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 010a0d8fd112e1ed7a52a356191da3696a6b76319423f7b0dfdeaeeafcb41a1e apcu-5.1.22.tgz +sha256 ecc8b74820c32fb82ddee80446205408585d75d1632ac959fb3cdf8eaf3877b5 LICENSE diff --git a/package/php-apcu/php-apcu.mk b/package/php-apcu/php-apcu.mk new file mode 100644 index 00000000..b8eeb9de --- /dev/null +++ b/package/php-apcu/php-apcu.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# php-apcu +# +################################################################################ + +PHP_APCU_VERSION = 5.1.22 +PHP_APCU_SITE = http://pecl.php.net/get +PHP_APCU_SOURCE = apcu-$(PHP_APCU_VERSION).tgz +PHP_APCU_LICENSE = PHP-3.01 +PHP_APCU_LICENSE_FILES = LICENSE +PHP_APCU_DEPENDENCIES = php host-autoconf + +PHP_APCU_CONF_OPTS = \ + --with-php-config=$(STAGING_DIR)/usr/bin/php-config + +define PHP_APCU_PHPIZE + (cd $(@D); \ + PHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \ + PHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \ + $(STAGING_DIR)/usr/bin/phpize) +endef +PHP_APCU_PRE_CONFIGURE_HOOKS += PHP_APCU_PHPIZE + +ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_4),) +PHP_APCU_CONF_OPTS += --disable-apcu-rwlocks +endif + +$(eval $(autotools-package)) diff --git a/package/php-geoip/0001-add-build-support-for-php8.patch b/package/php-geoip/0001-add-build-support-for-php8.patch new file mode 100644 index 00000000..5672b00c --- /dev/null +++ b/package/php-geoip/0001-add-build-support-for-php8.patch @@ -0,0 +1,35 @@ +From 9500f9964a1ef03890376c61f1b17db88753c8e2 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Mon, 28 Jun 2021 12:24:59 -0700 +Subject: [PATCH] add build support for php8 + +Signed-off-by: Adam Duskett +--- + php_geoip.h | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/php_geoip.h b/php_geoip.h +index 2f67cb6..d19d612 100644 +--- a/php_geoip.h ++++ b/php_geoip.h +@@ -30,6 +30,17 @@ extern zend_module_entry geoip_module_entry; + typedef long zend_long; + #endif + ++/* Small change to let it build after a major internal change for php8.0 ++ * More info: ++ * https://github.com/php/php-src/blob/php-8.0.0/UPGRADING.INTERNALS#L47 ++ */ ++#if PHP_MAJOR_VERSION >= 8 ++# define TSRMLS_DC ++# define TSRMLS_D ++# define TSRMLS_CC ++# define TSRMLS_C ++# endif ++ + #ifdef PHP_WIN32 + #define PHP_GEOIP_API __declspec(dllexport) + #else +-- +2.31.1 + diff --git a/package/php-geoip/Config.in b/package/php-geoip/Config.in new file mode 100644 index 00000000..35c6c1c3 --- /dev/null +++ b/package/php-geoip/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PHP_GEOIP + bool "php-geoip" + select BR2_PACKAGE_GEOIP + help + PHP GeoIP-based IP address mapper to geographical places. + + http://pecl.php.net/package/geoip diff --git a/package/php-geoip/php-geoip.hash b/package/php-geoip/php-geoip.hash new file mode 100644 index 00000000..8c99d8ba --- /dev/null +++ b/package/php-geoip/php-geoip.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b2d05c03019d46135c249b5a7fa0dbd43ca5ee98aea8ed807bc7aa90ac8c0f06 geoip-1.1.1.tgz +sha256 93eb7fe81da0861e7013d12fe82cc8691a450822d889c2b0443a434be6c28ef4 geoip.c diff --git a/package/php-geoip/php-geoip.mk b/package/php-geoip/php-geoip.mk new file mode 100644 index 00000000..82ecba58 --- /dev/null +++ b/package/php-geoip/php-geoip.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# php-geoip +# +################################################################################ + +PHP_GEOIP_VERSION = 1.1.1 +PHP_GEOIP_SOURCE = geoip-$(PHP_GEOIP_VERSION).tgz +PHP_GEOIP_SITE = https://pecl.php.net/get +PHP_GEOIP_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config \ + --with-geoip=$(STAGING_DIR)/usr +# phpize does the autoconf magic +PHP_GEOIP_DEPENDENCIES = geoip php host-autoconf +PHP_GEOIP_LICENSE = PHP-3.01 +PHP_GEOIP_LICENSE_FILES = geoip.c + +define PHP_GEOIP_PHPIZE + (cd $(@D); \ + PHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \ + PHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \ + $(STAGING_DIR)/usr/bin/phpize) +endef + +PHP_GEOIP_PRE_CONFIGURE_HOOKS += PHP_GEOIP_PHPIZE + +$(eval $(autotools-package)) diff --git a/package/php-gnupg/Config.in b/package/php-gnupg/Config.in new file mode 100644 index 00000000..8cc8bb9f --- /dev/null +++ b/package/php-gnupg/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PHP_GNUPG + bool "php-gnupg" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # ligpgme + depends on BR2_USE_MMU # libassuan + select BR2_PACKAGE_LIBGPGME + help + PHP wrapper around the gpgme library. + + http://pecl.php.net/package/gnupg diff --git a/package/php-gnupg/php-gnupg.hash b/package/php-gnupg/php-gnupg.hash new file mode 100644 index 00000000..084de775 --- /dev/null +++ b/package/php-gnupg/php-gnupg.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a9906f465ab2343cb2f3127ee209c72760238745c34878d9bbc1576486219252 gnupg-1.5.1.tgz +sha256 da1136d4d9326317cbd320dadddf7e9b4b4edffd973eb083cb7b9754fb6a15d9 LICENSE diff --git a/package/php-gnupg/php-gnupg.mk b/package/php-gnupg/php-gnupg.mk new file mode 100644 index 00000000..89054f5f --- /dev/null +++ b/package/php-gnupg/php-gnupg.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# php-gnupg +# +################################################################################ + +PHP_GNUPG_VERSION = 1.5.1 +PHP_GNUPG_SOURCE = gnupg-$(PHP_GNUPG_VERSION).tgz +PHP_GNUPG_SITE = https://pecl.php.net/get +# phpize does the autoconf magic +PHP_GNUPG_DEPENDENCIES = php libgpgme host-autoconf host-pkgconf +PHP_GNUPG_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config \ + --with-gnupg=$(STAGING_DIR)/usr --with-gpg=/usr/bin/gpg +PHP_GNUPG_LICENSE = BSD-2-Clause +PHP_GNUPG_LICENSE_FILES = LICENSE + +define PHP_GNUPG_PHPIZE + (cd $(@D); \ + PHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \ + PHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \ + $(STAGING_DIR)/usr/bin/phpize) +endef + +PHP_GNUPG_PRE_CONFIGURE_HOOKS += PHP_GNUPG_PHPIZE + +$(eval $(autotools-package)) diff --git a/package/php-imagick/Config.in b/package/php-imagick/Config.in new file mode 100644 index 00000000..488e3758 --- /dev/null +++ b/package/php-imagick/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PHP_IMAGICK + bool "php-imagick" + depends on BR2_USE_MMU # imagemagick + depends on BR2_TOOLCHAIN_HAS_THREADS # imagemagick + select BR2_PACKAGE_IMAGEMAGICK + help + PHP wrapper to the ImageMagick library. + + http://pecl.php.net/package/imagick + +comment "php-imagemagick needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/php-imagick/php-imagick.hash b/package/php-imagick/php-imagick.hash new file mode 100644 index 00000000..97c0b2f0 --- /dev/null +++ b/package/php-imagick/php-imagick.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 5a364354109029d224bcbb2e82e15b248be9b641227f45e63425c06531792d3e imagick-3.7.0.tgz +sha256 b6e00df9cb3b91977c0d64a7c4db48cb6f5041f6eeda6583c236775f70a35b78 LICENSE diff --git a/package/php-imagick/php-imagick.mk b/package/php-imagick/php-imagick.mk new file mode 100644 index 00000000..925423b1 --- /dev/null +++ b/package/php-imagick/php-imagick.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# php-imagick +# +################################################################################ + +PHP_IMAGICK_VERSION = 3.7.0 +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 \ + --with-imagick=$(STAGING_DIR)/usr +# phpize does the autoconf magic +PHP_IMAGICK_DEPENDENCIES = imagemagick php host-autoconf +PHP_IMAGICK_LICENSE = PHP-3.01 +PHP_IMAGICK_LICENSE_FILES = LICENSE +PHP_IMAGICK_CPE_ID_VENDOR = php +PHP_IMAGICK_CPE_ID_PRODUCT = imagick + +define PHP_IMAGICK_PHPIZE + (cd $(@D); \ + PHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \ + PHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \ + $(STAGING_DIR)/usr/bin/phpize) +endef + +PHP_IMAGICK_PRE_CONFIGURE_HOOKS += PHP_IMAGICK_PHPIZE + +$(eval $(autotools-package)) diff --git a/package/php-lua/0001-ZEND_ACC_ALLOW_STATIC-ZEND_ACC_STATIC-for-static-met.patch b/package/php-lua/0001-ZEND_ACC_ALLOW_STATIC-ZEND_ACC_STATIC-for-static-met.patch new file mode 100644 index 00000000..118c0d07 --- /dev/null +++ b/package/php-lua/0001-ZEND_ACC_ALLOW_STATIC-ZEND_ACC_STATIC-for-static-met.patch @@ -0,0 +1,28 @@ +From fd775cedbb97b56f0d1b098a41519f4477f450c7 Mon Sep 17 00:00:00 2001 +From: cdosoftei +Date: Mon, 10 Aug 2020 15:37:52 -0400 +Subject: [PATCH] ZEND_ACC_ALLOW_STATIC -> ZEND_ACC_STATIC for static method + +[Hervé: Taken from https://github.com/laruence/php-lua/pull/47 to fix +PHP8 compatibility.] +Signed-off-by: Herve Codina +--- + lua.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lua.c b/lua.c +index b05f4ef..f2648ac 100755 +--- a/lua.c ++++ b/lua.c +@@ -822,7 +822,7 @@ zend_function_entry lua_class_methods[] = { + PHP_ME(lua, include, arginfo_lua_include, ZEND_ACC_PUBLIC) + PHP_ME(lua, call, arginfo_lua_call, ZEND_ACC_PUBLIC) + PHP_ME(lua, assign, arginfo_lua_assign, ZEND_ACC_PUBLIC) +- PHP_ME(lua, getVersion, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ALLOW_STATIC) ++ PHP_ME(lua, getVersion, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) + PHP_ME(lua, registerCallback, arginfo_lua_register, ZEND_ACC_PUBLIC) + PHP_MALIAS(lua, __call, call, arginfo_lua_call, ZEND_ACC_PUBLIC) + PHP_FE_END +-- +2.31.1 + diff --git a/package/php-lua/0002-php8-explicitly-declare-arginfo.patch b/package/php-lua/0002-php8-explicitly-declare-arginfo.patch new file mode 100644 index 00000000..5e9c4400 --- /dev/null +++ b/package/php-lua/0002-php8-explicitly-declare-arginfo.patch @@ -0,0 +1,68 @@ +From 0f5132e09d970cacabcca3bab01405bc25b87d66 Mon Sep 17 00:00:00 2001 +From: cdosoftei +Date: Tue, 11 Aug 2020 12:42:17 -0400 +Subject: [PATCH] php8: explicitly declare arginfo + +[Hervé: Taken from https://github.com/laruence/php-lua/pull/47 to fix +PHP8 compatibility.] +Signed-off-by: Herve Codina +--- + lua.c | 7 +++++-- + lua_closure.c | 5 ++++- + 2 files changed, 9 insertions(+), 3 deletions(-) + +diff --git a/lua.c b/lua.c +index f2648ac..bbbd623 100755 +--- a/lua.c ++++ b/lua.c +@@ -35,6 +35,9 @@ static zend_object_handlers lua_object_handlers; + /** {{{ ARG_INFO + * + */ ++ZEND_BEGIN_ARG_INFO_EX(arginfo_void, 0, 0, 0) ++ZEND_END_ARG_INFO() ++ + ZEND_BEGIN_ARG_INFO_EX(arginfo_lua_call, 0, 0, 2) + ZEND_ARG_INFO(0, method) + ZEND_ARG_INFO(0, args) +@@ -817,12 +820,12 @@ PHP_METHOD(lua, __construct) { + * + */ + zend_function_entry lua_class_methods[] = { +- PHP_ME(lua, __construct, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_CTOR) ++ PHP_ME(lua, __construct, arginfo_void, ZEND_ACC_PUBLIC|ZEND_ACC_CTOR) + PHP_ME(lua, eval, arginfo_lua_eval, ZEND_ACC_PUBLIC) + PHP_ME(lua, include, arginfo_lua_include, ZEND_ACC_PUBLIC) + PHP_ME(lua, call, arginfo_lua_call, ZEND_ACC_PUBLIC) + PHP_ME(lua, assign, arginfo_lua_assign, ZEND_ACC_PUBLIC) +- PHP_ME(lua, getVersion, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) ++ PHP_ME(lua, getVersion, arginfo_void, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) + PHP_ME(lua, registerCallback, arginfo_lua_register, ZEND_ACC_PUBLIC) + PHP_MALIAS(lua, __call, call, arginfo_lua_call, ZEND_ACC_PUBLIC) + PHP_FE_END +diff --git a/lua_closure.c b/lua_closure.c +index 50ef039..b0f6780 100644 +--- a/lua_closure.c ++++ b/lua_closure.c +@@ -39,6 +39,9 @@ static zend_object_handlers lua_closure_handlers; + /** {{{ ARG_INFO + * + */ ++ZEND_BEGIN_ARG_INFO_EX(arginfo_void, 0, 0, 0) ++ZEND_END_ARG_INFO() ++ + ZEND_BEGIN_ARG_INFO_EX(arginfo_lua_invoke, 0, 0, 1) + ZEND_ARG_INFO(0, arg) + ZEND_ARG_INFO(0, ...) +@@ -145,7 +148,7 @@ PHP_METHOD(lua_closure, invoke) { + /* {{{ lua_class_methods[] + */ + zend_function_entry lua_closure_methods[] = { +- PHP_ME(lua_closure, __construct, NULL, ZEND_ACC_PRIVATE|ZEND_ACC_CTOR) ++ PHP_ME(lua_closure, __construct, arginfo_void, ZEND_ACC_PRIVATE|ZEND_ACC_CTOR) + PHP_ME(lua_closure, invoke, arginfo_lua_invoke, ZEND_ACC_PUBLIC) + PHP_MALIAS(lua_closure, __invoke, invoke, arginfo_lua_invoke, ZEND_ACC_PUBLIC) + PHP_FE_END +-- +2.31.1 + diff --git a/package/php-lua/Config.in b/package/php-lua/Config.in new file mode 100644 index 00000000..923de2d7 --- /dev/null +++ b/package/php-lua/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PHP_LUA + bool "php-lua" + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + help + This extension embeds the lua interpreter and offers an + OO-API to lua variables and functions. + + https://pecl.php.net/package/lua diff --git a/package/php-lua/php-lua.hash b/package/php-lua/php-lua.hash new file mode 100644 index 00000000..841c4f72 --- /dev/null +++ b/package/php-lua/php-lua.hash @@ -0,0 +1,2 @@ +sha256 86545e1e09b79e3693dd93f2a5a8f15ea161b5a1928f315c7a27107744ee8772 lua-2.0.7.tgz +sha256 b6e00df9cb3b91977c0d64a7c4db48cb6f5041f6eeda6583c236775f70a35b78 LICENSE diff --git a/package/php-lua/php-lua.mk b/package/php-lua/php-lua.mk new file mode 100644 index 00000000..559bd592 --- /dev/null +++ b/package/php-lua/php-lua.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# php-lua +# +################################################################################ + +PHP_LUA_VERSION = 2.0.7 +PHP_LUA_SITE = http://pecl.php.net/get +PHP_LUA_SOURCE = lua-$(PHP_LUA_VERSION).tgz +PHP_LUA_LICENSE = PHP-3.01 +PHP_LUA_LICENSE_FILES = LICENSE +PHP_LUA_DEPENDENCIES = php luainterpreter host-autoconf host-pkgconf + +PHP_LUA_CONF_OPTS = \ + --with-php-config=$(STAGING_DIR)/usr/bin/php-config \ + --with-lua=$(STAGING_DIR)/usr + +# The php-lua package uses the following code to search for the lua library +# if test "$PHP_LUA_VERSION" != "yes" -a "$PHP_LUA_VERSION" != "no"; then +# LUA_LIB_SUFFIX=lua$PHP_LUA_VERSION +# else +# LUA_LIB_SUFFIX=lua +# fi +# LUA_LIB_NAME=lib$LUA_LIB_SUFFIX +# luajit library name is libluajit-x.y with x.y the api version. +# In order to use luajit, we use jit-x.y as "lua-version". +ifeq ($(BR2_PACKAGE_LUAJIT),y) +PHP_LUA_CONF_OPTS += --with-lua-version=jit-$(LUAINTERPRETER_ABIVER) +endif + +define PHP_LUA_PHPIZE + (cd $(@D); \ + PHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \ + PHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \ + $(STAGING_DIR)/usr/bin/phpize) +endef +PHP_LUA_PRE_CONFIGURE_HOOKS += PHP_LUA_PHPIZE + +$(eval $(autotools-package)) diff --git a/package/php-memcached/Config.in b/package/php-memcached/Config.in new file mode 100644 index 00000000..cd97c152 --- /dev/null +++ b/package/php-memcached/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PHP_MEMCACHED + bool "php-memcached" + depends on BR2_INSTALL_LIBSTDCPP # libmemcached + depends on BR2_TOOLCHAIN_HAS_THREADS # libmemcached + select BR2_PACKAGE_PHP_EXT_SESSION + select BR2_PACKAGE_LIBMEMCACHED + select BR2_PACKAGE_ZLIB + help + PHP extension for interfacing with memcached via + libmemcached library. + + http://pecl.php.net/package/memcached + +comment "php-memcached needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/php-memcached/php-memcached.hash b/package/php-memcached/php-memcached.hash new file mode 100644 index 00000000..162d25f7 --- /dev/null +++ b/package/php-memcached/php-memcached.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 2a41143a7b29f4a962a3805b77aa207a99e4566e2d314ce98a051cd24d6e9636 memcached-3.2.0.tgz +sha256 24e8e3a9529204ead9422fa17cf3ddd75d292a8763b87fdb20591964f2e6ebe0 LICENSE +sha256 a453a7a272fbd24105b39959f76996d50dad80b22d1c310f6c67f74f62ae4054 fastlz/LICENSE +sha256 bba8cb50c660842c5ca459c5004395bdef8f01c1b64f97a9978f1053f173cb82 g_fmt.h diff --git a/package/php-memcached/php-memcached.mk b/package/php-memcached/php-memcached.mk new file mode 100644 index 00000000..f92a8ddf --- /dev/null +++ b/package/php-memcached/php-memcached.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# php-memcached +# +################################################################################ + +PHP_MEMCACHED_VERSION = 3.2.0 +PHP_MEMCACHED_SOURCE = memcached-$(PHP_MEMCACHED_VERSION).tgz +PHP_MEMCACHED_SITE = https://pecl.php.net/get +PHP_MEMCACHED_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config \ + --disable-memcached-sasl \ + --with-libmemcached-dir=$(STAGING_DIR)/usr \ + --with-zlib-dir=$(STAGING_DIR)/usr +# phpize does the autoconf magic +PHP_MEMCACHED_DEPENDENCIES = libmemcached php zlib host-autoconf host-pkgconf +PHP_MEMCACHED_LICENSE = PHP-3.01, MIT (fastlz), ISC-like (g_fmt.c, g_fmt.h) +PHP_MEMCACHED_LICENSE_FILES = LICENSE fastlz/LICENSE g_fmt.h + +define PHP_MEMCACHED_PHPIZE + (cd $(@D); \ + PHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \ + PHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \ + $(STAGING_DIR)/usr/bin/phpize) +endef + +PHP_MEMCACHED_PRE_CONFIGURE_HOOKS += PHP_MEMCACHED_PHPIZE + +$(eval $(autotools-package)) diff --git a/package/php-pam/Config.in b/package/php-pam/Config.in new file mode 100644 index 00000000..c91fa8b6 --- /dev/null +++ b/package/php-pam/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_PHP_PAM + bool "php-pam" + depends on BR2_ENABLE_LOCALE # linux-pam + depends on BR2_USE_WCHAR # linux-pam + depends on BR2_USE_MMU # linux-pam + depends on !BR2_STATIC_LIBS # linux-pam + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # linux-pam + select BR2_PACKAGE_LINUX_PAM + help + PHP PAM (Pluggable Authentication Modules) integration + + https://pecl.php.net/package/PAM + +comment "php-pam needs a toolchain w/ wchar, locale, dynamic library, gcc >= 4.9" + depends on BR2_USE_MMU + depends on !BR2_ENABLE_LOCALE || !BR2_USE_WCHAR \ + || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/php-pam/php-pam.hash b/package/php-pam/php-pam.hash new file mode 100644 index 00000000..be15237f --- /dev/null +++ b/package/php-pam/php-pam.hash @@ -0,0 +1,3 @@ +# Locally calculated: +sha256 d5c818c73c9cde4d2118bb08322dec0b532f3be48c3ef7d3f23a05af5080eb24 pam-2.2.4.tgz +sha256 0967ad6cf4b7fe81d38709d7aaef3fecb3bd685be7eebb37b864aa34c991baa7 LICENSE diff --git a/package/php-pam/php-pam.mk b/package/php-pam/php-pam.mk new file mode 100644 index 00000000..a348fb9d --- /dev/null +++ b/package/php-pam/php-pam.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# php-pam +# +################################################################################ + +PHP_PAM_VERSION = 2.2.4 +PHP_PAM_SITE = http://pecl.php.net/get +PHP_PAM_SOURCE = pam-$(PHP_PAM_VERSION).tgz +PHP_PAM_LICENSE = PHP-3.01 +PHP_PAM_LICENSE_FILES = LICENSE +PHP_PAM_DEPENDENCIES = php linux-pam host-autoconf host-pkgconf + +PHP_PAM_CONF_OPTS = \ + --with-php-config=$(STAGING_DIR)/usr/bin/php-config \ + --with-pam=$(STAGING_DIR)/usr + +define PHP_PAM_PHPIZE + (cd $(@D); \ + PHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \ + PHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \ + $(STAGING_DIR)/usr/bin/phpize) +endef +PHP_PAM_PRE_CONFIGURE_HOOKS += PHP_PAM_PHPIZE + +$(eval $(autotools-package)) diff --git a/package/php-pecl-dbus/Config.in b/package/php-pecl-dbus/Config.in new file mode 100644 index 00000000..56c70143 --- /dev/null +++ b/package/php-pecl-dbus/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PHP_PECL_DBUS + bool "php-pecl-dbus" + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus + depends on BR2_USE_MMU # dbus + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_PHP_EXT_LIBXML2 # Runtime dependency + help + PHP extension for interaction with D-Bus busses. + + https://github.com/derickr/pecl-dbus + +comment "php-pecl-dbus needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/php-pecl-dbus/php-pecl-dbus.hash b/package/php-pecl-dbus/php-pecl-dbus.hash new file mode 100644 index 00000000..12263691 --- /dev/null +++ b/package/php-pecl-dbus/php-pecl-dbus.hash @@ -0,0 +1,3 @@ +# Locally calculated: +sha256 652db988457479682ef1bbe00952d746b54150e77f06a4d75ffa3a696f5321ba php-pecl-dbus-b147624d480c3353e6c700e9a2d0c6f14d853941.tar.gz +sha256 ecc8b74820c32fb82ddee80446205408585d75d1632ac959fb3cdf8eaf3877b5 LICENSE diff --git a/package/php-pecl-dbus/php-pecl-dbus.mk b/package/php-pecl-dbus/php-pecl-dbus.mk new file mode 100644 index 00000000..84cc373b --- /dev/null +++ b/package/php-pecl-dbus/php-pecl-dbus.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# php-pecl-dbus +# +################################################################################ + +PHP_PECL_DBUS_VERSION = b147624d480c3353e6c700e9a2d0c6f14d853941 +PHP_PECL_DBUS_SITE = $(call github,derickr,pecl-dbus,$(PHP_PECL_DBUS_VERSION)) +PHP_PECL_DBUS_LICENSE = PHP-3.01 +PHP_PECL_DBUS_LICENSE_FILES = LICENSE +PHP_PECL_DBUS_DEPENDENCIES = php dbus libxml2 host-autoconf host-pkgconf + +PHP_PECL_DBUS_CONF_OPTS = \ + --with-php-config=$(STAGING_DIR)/usr/bin/php-config + +define PHP_PECL_DBUS_PHPIZE + (cd $(@D); \ + PHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \ + PHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \ + $(STAGING_DIR)/usr/bin/phpize) +endef +PHP_PECL_DBUS_PRE_CONFIGURE_HOOKS += PHP_PECL_DBUS_PHPIZE + +$(eval $(autotools-package)) diff --git a/package/php-ssh2/Config.in b/package/php-ssh2/Config.in new file mode 100644 index 00000000..5a23114b --- /dev/null +++ b/package/php-ssh2/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PHP_SSH2 + bool "php-ssh2" + select BR2_PACKAGE_LIBSSH2 + help + PHP bindings for the libssh2 library. + + http://pecl.php.net/package/ssh2 diff --git a/package/php-ssh2/php-ssh2.hash b/package/php-ssh2/php-ssh2.hash new file mode 100644 index 00000000..69e0b920 --- /dev/null +++ b/package/php-ssh2/php-ssh2.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 988b52e0315bb5ed725050cb02de89b541034b7be6b94623dcb2baa33f811d87 ssh2-1.4.tgz +sha256 ac7c56f1e416ce6e60abcf26269395128bc9e5a2e4f3293e5dcc124aac606508 LICENSE diff --git a/package/php-ssh2/php-ssh2.mk b/package/php-ssh2/php-ssh2.mk new file mode 100644 index 00000000..e7955a2c --- /dev/null +++ b/package/php-ssh2/php-ssh2.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# php-ssh2 +# +################################################################################ + +PHP_SSH2_VERSION = 1.4 +PHP_SSH2_SOURCE = ssh2-$(PHP_SSH2_VERSION).tgz +PHP_SSH2_SITE = https://pecl.php.net/get +PHP_SSH2_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config \ + --with-ssh2=$(STAGING_DIR)/usr +# phpize does the autoconf magic +PHP_SSH2_DEPENDENCIES = libssh2 php host-autoconf +PHP_SSH2_LICENSE = PHP-3.01 +PHP_SSH2_LICENSE_FILES = LICENSE + +define PHP_SSH2_PHPIZE + (cd $(@D); \ + PHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \ + PHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \ + $(STAGING_DIR)/usr/bin/phpize) +endef + +PHP_SSH2_PRE_CONFIGURE_HOOKS += PHP_SSH2_PHPIZE + +$(eval $(autotools-package)) diff --git a/package/php-xdebug/Config.in b/package/php-xdebug/Config.in new file mode 100644 index 00000000..b5919e06 --- /dev/null +++ b/package/php-xdebug/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PHP_XDEBUG + bool "php-xdebug" + help + Extension for PHP to assist with debugging and development. + + http://xdebug.org diff --git a/package/php-xdebug/php-xdebug.hash b/package/php-xdebug/php-xdebug.hash new file mode 100644 index 00000000..251b79ab --- /dev/null +++ b/package/php-xdebug/php-xdebug.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 4eb4ee270bbcc5f14195c38f6ee58580e007cf4886ce32e11430318ab5bc2315 xdebug-3.3.1.tgz +sha256 bc2aee27f3f0806be39e329d284ddbbfb14602a49af261df305dd6122d988eb0 LICENSE diff --git a/package/php-xdebug/php-xdebug.mk b/package/php-xdebug/php-xdebug.mk new file mode 100644 index 00000000..771b9653 --- /dev/null +++ b/package/php-xdebug/php-xdebug.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# php-xdebug +# +################################################################################ + +PHP_XDEBUG_VERSION = 3.3.1 +PHP_XDEBUG_SOURCE = xdebug-$(PHP_XDEBUG_VERSION).tgz +PHP_XDEBUG_SITE = https://xdebug.org/files +PHP_XDEBUG_INSTALL_STAGING = YES +PHP_XDEBUG_LICENSE = Xdebug License (PHP-3.01-like) +PHP_XDEBUG_LICENSE_FILES = LICENSE +# phpize does the autoconf magic +PHP_XDEBUG_DEPENDENCIES = php host-autoconf +PHP_XDEBUG_CONF_OPTS = \ + --enable-xdebug \ + --with-php-config=$(STAGING_DIR)/usr/bin/php-config + +define PHP_XDEBUG_PHPIZE + (cd $(@D); \ + PHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \ + PHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \ + $(STAGING_DIR)/usr/bin/phpize) +endef + +PHP_XDEBUG_PRE_CONFIGURE_HOOKS += PHP_XDEBUG_PHPIZE + +ifeq ($(BR2_PACKAGE_ZLIB),y) +PHP_XDEBUG_CONF_OPTS += --with-xdebug-compression +PHP_XDEBUG_DEPENDENCIES += zlib +else +PHP_XDEBUG_CONF_OPTS += --without-xdebug-compression +endif + +$(eval $(autotools-package)) diff --git a/package/php-yaml/Config.in b/package/php-yaml/Config.in new file mode 100644 index 00000000..28f917fe --- /dev/null +++ b/package/php-yaml/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PHP_YAML + bool "php-yaml" + select BR2_PACKAGE_LIBYAML + help + PHP YAML-1.1 parser and emitter. + + http://pecl.php.net/package/yaml diff --git a/package/php-yaml/php-yaml.hash b/package/php-yaml/php-yaml.hash new file mode 100644 index 00000000..4fa5dfbc --- /dev/null +++ b/package/php-yaml/php-yaml.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 5937eb9722ddf6d64626799cfa024598ff2452ea157992e4e67331a253f90236 yaml-2.2.3.tgz +sha256 68d9700294396c72089bfc7bf38a5b3654a53ae415f3bd37768848c14e86f338 LICENSE diff --git a/package/php-yaml/php-yaml.mk b/package/php-yaml/php-yaml.mk new file mode 100644 index 00000000..e825e314 --- /dev/null +++ b/package/php-yaml/php-yaml.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# php-yaml +# +################################################################################ + +PHP_YAML_VERSION = 2.2.3 +PHP_YAML_SOURCE = yaml-$(PHP_YAML_VERSION).tgz +PHP_YAML_SITE = https://pecl.php.net/get +PHP_YAML_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config \ + --with-yaml=$(STAGING_DIR)/usr +# phpize does the autoconf magic +PHP_YAML_DEPENDENCIES = libyaml php host-autoconf +PHP_YAML_LICENSE = MIT +PHP_YAML_LICENSE_FILES = LICENSE + +define PHP_YAML_PHPIZE + (cd $(@D); \ + PHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \ + PHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \ + $(STAGING_DIR)/usr/bin/phpize) +endef + +PHP_YAML_PRE_CONFIGURE_HOOKS += PHP_YAML_PHPIZE + +$(eval $(autotools-package)) diff --git a/package/php-zmq/0001-updates-for-php7.4-and-php8.0.patch b/package/php-zmq/0001-updates-for-php7.4-and-php8.0.patch new file mode 100644 index 00000000..3c286e39 --- /dev/null +++ b/package/php-zmq/0001-updates-for-php7.4-and-php8.0.patch @@ -0,0 +1,230 @@ +From 4ad1b33e095924bd4ccf79295999dd54edaaac37 Mon Sep 17 00:00:00 2001 +From: Luca Boccassi +Date: Thu, 5 Mar 2020 22:51:22 +0000 +Subject: [PATCH] updates for php7.4 and php8.0 (#212) + +From upstream commit: 4ad1b33e095924bd4ccf79295999dd54edaaac37 + +* travisci: enabled php7.4 and php8.0 + +* updates for php7.4 and php8.0 + +- travisci enabled php7.4 and php8.0 +- removed now unused references to TSRMLS_* + These flags were mostly already removed from the + php7 codebase but some instances were still present. + With php8 these produce compile errors. +- fix tests for php8 and php7.4 + New TypeErrors now get handled correctly in the test cases. +- fix memory corruption in zmq.c + The conflicting line causes memory leaks on other php + version and causes a segfault on php8 and php7.4 + The error was provocable with test case + 021-callbackwarning.phpt. After removing of the line + valgrind showed no memory leak, so this line was probably + redundant. Also if you compare with zmqsocket constructor + this line is also not present. + +Signed-off-by: Luca Boccassi +Signed-off-by: Adam Duskett +--- + php_zmq_private.h | 4 ++-- + tests/016-callbackinvalidargs.phpt | 4 ++++ + tests/022-highwatermark.phpt | 6 +++--- + tests/bug_gh_43.phpt | 25 +++++++++++++++++-------- + zmq.c | 1 - + zmq_device.c | 14 +++++++------- + zmq_sockopt.c | 2 +- + 7 files changed, 34 insertions(+), 22 deletions(-) + +diff --git a/php_zmq_private.h b/php_zmq_private.h +index 49630e9..2e5cd3b 100644 +--- a/php_zmq_private.h ++++ b/php_zmq_private.h +@@ -156,9 +156,9 @@ typedef struct _php_zmq_device_object { + + #define PHP_ZMQ_ERROR_HANDLING_INIT() zend_error_handling error_handling; + +-#define PHP_ZMQ_ERROR_HANDLING_THROW() zend_replace_error_handling(EH_THROW, php_zmq_socket_exception_sc_entry, &error_handling TSRMLS_CC); ++#define PHP_ZMQ_ERROR_HANDLING_THROW() zend_replace_error_handling(EH_THROW, php_zmq_socket_exception_sc_entry, &error_handling); + +-#define PHP_ZMQ_ERROR_HANDLING_RESTORE() zend_restore_error_handling(&error_handling TSRMLS_CC); ++#define PHP_ZMQ_ERROR_HANDLING_RESTORE() zend_restore_error_handling(&error_handling); + + /* Compatibility macros between zeromq 2.x and 3.x */ + #ifndef ZMQ_DONTWAIT +diff --git a/tests/016-callbackinvalidargs.phpt b/tests/016-callbackinvalidargs.phpt +index a940e41..6bd0e75 100644 +--- a/tests/016-callbackinvalidargs.phpt ++++ b/tests/016-callbackinvalidargs.phpt +@@ -10,6 +10,8 @@ try { + echo "Fail\n"; + } catch (ZMQSocketException $e) { + echo "OK\n"; ++} catch (TypeError $e) { ++ echo "OK\n"; // on PHP8 + } + + try { +@@ -18,6 +20,8 @@ try { + echo "Fail\n"; + } catch (ZMQSocketException $e) { + echo "OK\n"; ++} catch (TypeError $e) { ++ echo "OK\n"; // on PHP8 + } + + --EXPECT-- +diff --git a/tests/022-highwatermark.phpt b/tests/022-highwatermark.phpt +index 84be509..c1ff703 100644 +--- a/tests/022-highwatermark.phpt ++++ b/tests/022-highwatermark.phpt +@@ -1,11 +1,11 @@ + --TEST-- + Test that high-watermark works + --SKIPIF-- +- +- ++ + --FILE-- + +- +---EXPECTF-- +-Warning: ZMQDevice::__construct() expects at most 3 parameters, 4 given in %s/bug_gh_43.php on line %d +-OK +\ No newline at end of file ++try { ++ $device = new ZMQDevice ($sock1, $sock1, $sock1, $sock1); ++ // on PHP7 and lower ++ $lastError = error_get_last(); ++ if(strpos($lastError['message'], 'ZMQDevice::__construct() expects at most 3 parameters, 4 given') !== false) ++ echo "OK\n"; ++ else{ ++ echo "FAIL\n"; ++ print_r($lastError); ++ } ++}catch(TypeError $e){ ++ echo "OK\n"; // on PHP8 ++} ++--EXPECT-- ++OK +diff --git a/zmq.c b/zmq.c +index 942e69b..66196ea 100644 +--- a/zmq.c ++++ b/zmq.c +@@ -687,7 +687,6 @@ PHP_METHOD(zmqcontext, getsocket) + if (!php_zmq_connect_callback(return_value, &fci, &fci_cache, persistent_id)) { + php_zmq_socket_destroy(socket); + interns->socket = NULL; +- zval_dtor(return_value); + return; + } + } +diff --git a/zmq_device.c b/zmq_device.c +index c7415c1..534f966 100644 +--- a/zmq_device.c ++++ b/zmq_device.c +@@ -41,7 +41,7 @@ + ZEND_EXTERN_MODULE_GLOBALS(php_zmq) + + static +-zend_bool s_invoke_device_cb (php_zmq_device_cb_t *cb, uint64_t current_ts TSRMLS_DC) ++zend_bool s_invoke_device_cb (php_zmq_device_cb_t *cb, uint64_t current_ts) + { + zend_bool retval = 0; + zval params[1]; +@@ -59,7 +59,7 @@ zend_bool s_invoke_device_cb (php_zmq_device_cb_t *cb, uint64_t current_ts TSRML + if (zend_call_function(&(cb->fci), &(cb->fci_cache)) == FAILURE) { + if (!EG(exception)) { + char *func_name = php_zmq_printable_func(&cb->fci, &cb->fci_cache); +- zend_throw_exception_ex(php_zmq_device_exception_sc_entry_get (), 0 TSRMLS_CC, "Failed to invoke device callback %s()", func_name); ++ zend_throw_exception_ex(php_zmq_device_exception_sc_entry_get (), 0, "Failed to invoke device callback %s()", func_name); + zval_ptr_dtor(¶ms[0]); + efree(func_name); + } +@@ -94,7 +94,7 @@ int s_capture_message (void *socket, zmq_msg_t *msg, int more) + } + + static +-int s_calculate_timeout (php_zmq_device_object *intern TSRMLS_DC) ++int s_calculate_timeout (php_zmq_device_object *intern) + { + int timeout = -1; + uint64_t current = php_zmq_clock (ZMQ_G (clock_ctx)); +@@ -131,7 +131,7 @@ int s_calculate_timeout (php_zmq_device_object *intern TSRMLS_DC) + } + + +-zend_bool php_zmq_device (php_zmq_device_object *intern TSRMLS_DC) ++zend_bool php_zmq_device (php_zmq_device_object *intern) + { + int errno_; + uint64_t last_message_received; +@@ -186,7 +186,7 @@ zend_bool php_zmq_device (php_zmq_device_object *intern TSRMLS_DC) + uint64_t current_ts = 0; + + /* Calculate poll_timeout based on idle / timer cb */ +- int timeout = s_calculate_timeout (intern TSRMLS_CC); ++ int timeout = s_calculate_timeout (intern); + + rc = zmq_poll(&items [0], 2, timeout); + if (rc < 0) { +@@ -205,7 +205,7 @@ zend_bool php_zmq_device (php_zmq_device_object *intern TSRMLS_DC) + if (intern->timer_cb.initialized && intern->timer_cb.timeout > 0) { + /* Is it timer to call the timer ? */ + if (intern->timer_cb.scheduled_at <= current_ts) { +- if (!s_invoke_device_cb (&intern->timer_cb, current_ts TSRMLS_CC)) { ++ if (!s_invoke_device_cb (&intern->timer_cb, current_ts)) { + zmq_msg_close (&msg); + return 1; + } +@@ -217,7 +217,7 @@ zend_bool php_zmq_device (php_zmq_device_object *intern TSRMLS_DC) + /* Is it timer to call the idle callback ? */ + if ((current_ts - last_message_received) >= intern->idle_cb.timeout && + intern->idle_cb.scheduled_at <= current_ts) { +- if (!s_invoke_device_cb (&intern->idle_cb, current_ts TSRMLS_CC)) { ++ if (!s_invoke_device_cb (&intern->idle_cb, current_ts)) { + zmq_msg_close (&msg); + return 1; + } +diff --git a/zmq_sockopt.c b/zmq_sockopt.c +index 1357032..14b59f0 100644 +--- a/zmq_sockopt.c ++++ b/zmq_sockopt.c +@@ -2036,7 +2036,7 @@ PHP_METHOD(zmqsocket, setsockopt) + long key; + zval *zv; + +- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lz/", &key, &zv) == FAILURE) { ++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "lz/", &key, &zv) == FAILURE) { + return; + } + +-- +2.31.1 + diff --git a/package/php-zmq/0002-fix-for-php-7.3.patch b/package/php-zmq/0002-fix-for-php-7.3.patch new file mode 100644 index 00000000..3ca87582 --- /dev/null +++ b/package/php-zmq/0002-fix-for-php-7.3.patch @@ -0,0 +1,43 @@ +From e0db82c3286da81fa8945894dd10125a528299e4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Gr=C3=A9gory=20PLANCHAT?= + +Date: Wed, 8 Jul 2020 10:09:38 +0200 +Subject: [PATCH] Fix for PHP 7.3 (#215) + +Co-authored-by: Remi Collet +Signed-off-by: Adam Duskett +--- + zmq.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/zmq.c b/zmq.c +index 66196ea..879704f 100644 +--- a/zmq.c ++++ b/zmq.c +@@ -235,7 +235,11 @@ php_zmq_context *php_zmq_context_get(zend_long io_threads, zend_bool is_persiste + le.type = php_zmq_context_list_entry(); + le.ptr = context; + ++#if PHP_VERSION_ID < 70300 + GC_REFCOUNT(&le) = 1; ++#else ++ GC_SET_REFCOUNT(&le, 1); ++#endif + + /* plist_key is not a persistent allocated key, thus we use str_update here */ + if (zend_hash_str_update_mem(&EG(persistent_list), plist_key->val, plist_key->len, &le, sizeof(le)) == NULL) { +@@ -535,7 +539,11 @@ void php_zmq_socket_store(php_zmq_socket *zmq_sock_p, zend_long type, zend_strin + le.type = php_zmq_socket_list_entry(); + le.ptr = zmq_sock_p; + ++#if PHP_VERSION_ID < 70300 + GC_REFCOUNT(&le) = 1; ++#else ++ GC_SET_REFCOUNT(&le, 1); ++#endif + + plist_key = php_zmq_socket_plist_key(type, persistent_id, use_shared_ctx); + +-- +2.31.1 + diff --git a/package/php-zmq/0003-fix-for-php-8.0.0beta2.patch b/package/php-zmq/0003-fix-for-php-8.0.0beta2.patch new file mode 100644 index 00000000..c5aab16a --- /dev/null +++ b/package/php-zmq/0003-fix-for-php-8.0.0beta2.patch @@ -0,0 +1,40 @@ +From f0993f1fe973c4d359323ad1897ed7aa74f7e015 Mon Sep 17 00:00:00 2001 +From: Remi Collet +Date: Mon, 24 Aug 2020 15:55:54 +0200 +Subject: [PATCH] fix for PHP 8.0.0beta2 + +Signed-off-by: Remi Collet +Signed-off-by: Adam Duskett +--- + zmq.c | 2 ++ + zmq_device.c | 2 ++ + 2 files changed, 4 insertions(+) + +diff --git a/zmq.c b/zmq.c +index 89902f9..bd2401d 100644 +--- a/zmq.c ++++ b/zmq.c +@@ -621,7 +621,9 @@ zend_bool php_zmq_connect_callback(zval *socket, zend_fcall_info *fci, zend_fcal + fci->params = params; + fci->param_count = 2; + fci->retval = &retval; ++#if PHP_VERSION_ID < 80000 + fci->no_separation = 1; ++#endif + + if (zend_call_function(fci, fci_cache) == FAILURE) { + if (!EG(exception)) { +diff --git a/zmq_device.c b/zmq_device.c +index 534f966..1c6aa3e 100644 +--- a/zmq_device.c ++++ b/zmq_device.c +@@ -53,7 +53,9 @@ zend_bool s_invoke_device_cb (php_zmq_device_cb_t *cb, uint64_t current_ts) + cb->fci.param_count = 1; + + /* Call the cb */ ++#if PHP_VERSION_ID < 80000 + cb->fci.no_separation = 1; ++#endif + cb->fci.retval = &fc_retval; + + if (zend_call_function(&(cb->fci), &(cb->fci_cache)) == FAILURE) { diff --git a/package/php-zmq/Config.in b/package/php-zmq/Config.in new file mode 100644 index 00000000..37be1779 --- /dev/null +++ b/package/php-zmq/Config.in @@ -0,0 +1,12 @@ +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_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_ZEROMQ + help + ZeroMQ messaging bindings for PHP + + http://pecl.php.net/package/zmq diff --git a/package/php-zmq/php-zmq.hash b/package/php-zmq/php-zmq.hash new file mode 100644 index 00000000..a4cca698 --- /dev/null +++ b/package/php-zmq/php-zmq.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c492375818bd51b355352798fb94f04d6828c6aeda41ba813849624af74144ce zmq-1.1.3.tgz +sha256 0302303063d3612fc240032aeb6d70e9b7509fc17a4a9edf00eba091ed597514 LICENSE diff --git a/package/php-zmq/php-zmq.mk b/package/php-zmq/php-zmq.mk new file mode 100644 index 00000000..fed71955 --- /dev/null +++ b/package/php-zmq/php-zmq.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# php-zmq +# +################################################################################ + +PHP_ZMQ_VERSION = 1.1.3 +PHP_ZMQ_SOURCE = zmq-$(PHP_ZMQ_VERSION).tgz +PHP_ZMQ_SITE = https://pecl.php.net/get +# phpize does the autoconf magic +PHP_ZMQ_DEPENDENCIES = php zeromq host-autoconf host-pkgconf +PHP_ZMQ_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config +PHP_ZMQ_LICENSE = BSD-3-Clause +PHP_ZMQ_LICENSE_FILES = LICENSE + +define PHP_ZMQ_PHPIZE + (cd $(@D); \ + PHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \ + PHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \ + $(STAGING_DIR)/usr/bin/phpize) +endef + +PHP_ZMQ_PRE_CONFIGURE_HOOKS += PHP_ZMQ_PHPIZE + +$(eval $(autotools-package)) diff --git a/package/php/0001-acinclude.m4-don-t-unset-variables.patch b/package/php/0001-acinclude.m4-don-t-unset-variables.patch new file mode 100644 index 00000000..9badbd1c --- /dev/null +++ b/package/php/0001-acinclude.m4-don-t-unset-variables.patch @@ -0,0 +1,42 @@ +From 7a4168062fbab2e33ef9a42bca9f87a5921afac2 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Tue, 9 Aug 2016 11:49:56 +0200 +Subject: [PATCH] acinclude.m4: don't unset variables + +Unsetting ac_cv_{func,lib}_* is bad, you can't feed the configure cache. +Terminate them with extreme prejudice. + +Signed-off-by: Gustavo Zacarias +Signed-off-by: Adam Duskett +[aduskett@gmail.com: Update for 7.3.0] +Signed-off-by: Bernd Kuhls +[Bernd: rebased for 8.1.7] +--- + build/php.m4 | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/build/php.m4 b/build/php.m4 +index e91ef988..9586c490 100644 +--- a/build/php.m4 ++++ b/build/php.m4 +@@ -1580,8 +1580,6 @@ dnl PHP_CHECK_FUNC_LIB + dnl + AC_DEFUN([PHP_CHECK_FUNC_LIB],[ + ifelse($2,,:,[ +- unset ac_cv_lib_$2[]_$1 +- unset ac_cv_lib_$2[]___$1 + unset found + AC_CHECK_LIB($2, $1, [found=yes], [ + AC_CHECK_LIB($2, __$1, [found=yes], [found=no]) +@@ -1616,8 +1616,6 @@ dnl and as a fall back in the specified library. Defines HAVE_func and + dnl HAVE_library if found and adds the library to LIBS. + dnl + AC_DEFUN([PHP_CHECK_FUNC],[ +- unset ac_cv_func_$1 +- unset ac_cv_func___$1 + unset found + + AC_CHECK_FUNC($1, [found=yes],[ AC_CHECK_FUNC(__$1,[found=yes],[found=no]) ]) +-- +2.7.4 + diff --git a/package/php/0002-iconv-tweak-iconv-detection.patch b/package/php/0002-iconv-tweak-iconv-detection.patch new file mode 100644 index 00000000..758dd613 --- /dev/null +++ b/package/php/0002-iconv-tweak-iconv-detection.patch @@ -0,0 +1,39 @@ +From 1357df0196806d5697b1f84497ef72aab5faa8a3 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Tue, 9 Aug 2016 11:50:49 +0200 +Subject: [PATCH] iconv: tweak iconv detection + +Tweak PHP_SETUP_ICONV from aclocal/build/php.m4 to not +PHP_ADD_INCLUDE $ICONV_DIR/include since the tests use +test instead of AC_TRY_LINK to find headers which is bad, +specially when adding /usr and /usr/local to the mix. +Do basically the same with ext/iconv/config.m4 by tweaking +PHP_ICONV_H_PATH which, again, uses test and absolute paths. + +Signed-off-by: Gustavo Zacarias +[Gustavo: convert to nice m4 instead of patching configure] +[Gustavo: update for 5.6.10] +Signed-off-by: Adam Duskett +[aduskett@gmail.com: Update for 8.0.7] +Signed-off-by: Bernd Kuhls +[Bernd: rebased for 7.4.10, 7.4.13 & 8.1.7] +--- + build/php.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/build/php.m4 b/build/php.m4 +index 9586c490..8b3d47ed 100644 +--- a/build/php.m4 ++++ b/build/php.m4 +@@ -1976,7 +1976,7 @@ AC_DEFUN([PHP_SETUP_ICONV], [ + dnl Check external libs for iconv funcs. + if test "$found_iconv" = "no"; then + +- for i in $PHP_ICONV /usr/local /usr; do ++ for i in $PHP_ICONV; do + if test -r $i/include/gnu-libiconv/iconv.h; then + ICONV_DIR=$i + ICONV_INCLUDE_DIR=$i/include/gnu-libiconv +-- +2.31.1 + diff --git a/package/php/0003-configure-disable-the-phar-tool.patch b/package/php/0003-configure-disable-the-phar-tool.patch new file mode 100644 index 00000000..6bfaf664 --- /dev/null +++ b/package/php/0003-configure-disable-the-phar-tool.patch @@ -0,0 +1,43 @@ +From 5ba6355e489f647c88ca48afbc75965468193181 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Tue, 9 Aug 2016 11:51:53 +0200 +Subject: [PATCH] configure: disable the 'phar' tool + +Disable the 'phar' command-line tool build/installation since it requires +php to run and pack up phar itself in phar format. This would require +a host-php instance and really probably nobody needs the phar tool +on the target. + +Signed-off-by: Gustavo Zacarias +[Gustavo: update for autoreconf/configure.in] +Signed-off-by: Adam Duskett +[Aduskett: update for 8.0.7] +Signed-off-by: Bernd Kuhls +[Bernd: rebased for 7.4.10, 7.4.13 & 8.1.7] +--- + configure.ac | 9 ++------- + 1 file changed, 2 insertions(+), 7 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 0dfab302..6026fb66 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1638,13 +1638,8 @@ CFLAGS_CLEAN="$CFLAGS \$(PROF_FLAGS)" + CFLAGS="\$(CFLAGS_CLEAN) $standard_libtool_flag" + CXXFLAGS="$CXXFLAGS $standard_libtool_flag \$(PROF_FLAGS)" + +-if test "$PHP_PHAR" != "no" && test "$PHP_CLI" != "no"; then +- pharcmd=pharcmd +- pharcmd_install=install-pharcmd +-else +- pharcmd= +- pharcmd_install= +-fi; ++pharcmd= ++pharcmd_install= + + all_targets="$lcov_target \$(OVERALL_TARGET) \$(PHP_MODULES) \$(PHP_ZEND_EX) \$(PHP_BINARIES) $pharcmd" + install_targets="$install_sapi $install_modules $install_binaries install-build install-headers install-programs $install_pear $pharcmd_install" +-- +2.14.3 + diff --git a/package/php/0004-Call-apxs-with-correct-prefix.patch b/package/php/0004-Call-apxs-with-correct-prefix.patch new file mode 100644 index 00000000..3a1a5800 --- /dev/null +++ b/package/php/0004-Call-apxs-with-correct-prefix.patch @@ -0,0 +1,51 @@ +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 php" +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 +Signed-off-by: Adam Duskett +[aduskett@gmail.com: Update for 8.0.7] +--- + sapi/apache2handler/config.m4 | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/sapi/apache2handler/config.m4 b/sapi/apache2handler/config.m4 +index 55c16179..68ce66c0 100644 +--- a/sapi/apache2handler/config.m4 ++++ b/sapi/apache2handler/config.m4 +@@ -63,10 +63,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 php" + else + APXS_SYSCONFDIR='$(INSTALL_ROOT)'`$APXS -q SYSCONFDIR` +@@ -74,6 +76,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 php" + fi + +-- +2.5.0 + diff --git a/package/php/0005-allow-opcache-cross-compiling.patch b/package/php/0005-allow-opcache-cross-compiling.patch new file mode 100644 index 00000000..468864b0 --- /dev/null +++ b/package/php/0005-allow-opcache-cross-compiling.patch @@ -0,0 +1,39 @@ +From 9bb316c41a69935ee2072626467241889594bed4 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Mon, 28 Jun 2021 11:12:36 -0700 +Subject: [PATCH] allow opcache cross-compiling + +Remove the check at the end of ext/opcache/config.m4 that prevents opcache from +being enabled in a cross-compiled environment. We pass the following as a +CFLAGS when opcache is enabled: + -DHAVE_SHM_IPC + -DHAVE_SHM_MMAP_ANON + -DHAVE_SHM_MMAP_ZERO + -DHAVE_SHM_MMAP_POSIX + -DHAVE_SHM_MMAP_FILE + +Signed-off-by: Adam Duskett +Signed-off-by: Bernd Kuhls +[Bernd: rebased for 8.1.7 & 8.3.3] +--- + ext/opcache/config.m4 | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/ext/opcache/config.m4 b/ext/opcache/config.m4 +index 5492fd92..10c150ff 100644 +--- a/ext/opcache/config.m4 ++++ b/ext/opcache/config.m4 +@@ -315,10 +315,6 @@ int main() { + + PHP_ADD_EXTENSION_DEP(opcache, pcre) + +- if test "$have_shm_ipc" != "yes" && test "$have_shm_mmap_posix" != "yes" && test "$have_shm_mmap_anon" != "yes"; then +- AC_MSG_ERROR([No supported shared memory caching support was found when configuring opcache. Check config.log for any errors or missing dependencies.]) +- fi +- + if test "$PHP_OPCACHE_JIT" = "yes"; then + PHP_ADD_BUILD_DIR([$ext_builddir/jit], 1) + PHP_ADD_MAKEFILE_FRAGMENT($ext_srcdir/jit/Makefile.frag) +-- +2.31.1 + diff --git a/package/php/0006-Autotools-fix-configure-check-for-aarch64-CRC32-API.patch b/package/php/0006-Autotools-fix-configure-check-for-aarch64-CRC32-API.patch new file mode 100644 index 00000000..46e6558d --- /dev/null +++ b/package/php/0006-Autotools-fix-configure-check-for-aarch64-CRC32-API.patch @@ -0,0 +1,56 @@ +From 5947db6bb8e336252337fb0194c3b8e834d100b6 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sun, 25 Aug 2024 18:00:29 +0200 +Subject: [PATCH] Fix GH-15587: Autotools: fix configure check for aarch64 + CRC32 API + +On arm32 bit the check succeeds leading to a build error later on: + +/home/autobuild/autobuild/instance-3/output-1/build/php-8.3.10/ext/standard/crc32.c:70:12: + error: 'armv8-a' does not support feature 'nothing' + 70 | # pragma GCC target ("+nothing+crc") + +Upstream: https://github.com/php/php-src/commit/5947db6bb8e336252337fb0194c3b8e834d100b6 + +Co-authored-by: Thomas Petazzoni +[http://lists.busybox.net/pipermail/buildroot/2024-August/761151.html] +Signed-off-by: Bernd Kuhls +--- + configure.ac | 24 +++++++++++++++++++----- + 1 file changed, 19 insertions(+), 5 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 1142c9459d71..fb59a81700f4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -738,11 +738,25 @@ AC_FUNC_ALLOCA + PHP_TIME_R_TYPE + PHP_CHECK_IN_ADDR_T + +-AC_CACHE_CHECK([for aarch64 CRC32 API], ac_cv_func___crc32d, +-[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]],[[__crc32d(0, 0);]])],[ac_cv_func___crc32d=yes],[ac_cv_func___crc32d="no"])]) +-if test "$ac_cv_func___crc32d" = "yes"; then +- AC_DEFINE([HAVE_AARCH64_CRC32], [1], [Define when aarch64 CRC32 API is available.]) +-fi ++AC_CACHE_CHECK([for aarch64 CRC32 API], [ac_cv_func___crc32d], ++[AC_LINK_IFELSE([AC_LANG_PROGRAM([ ++#include ++# if defined(__GNUC__) ++# if!defined(__clang__) ++# pragma GCC push_options ++# pragma GCC target ("+nothing+crc") ++# elif defined(__APPLE__) ++# pragma clang attribute push(__attribute__((target("crc"))), apply_to=function) ++# else ++# pragma clang attribute push(__attribute__((target("+nothing+crc"))), apply_to=function) ++# endif ++# endif ++], [__crc32d(0, 0);])], ++[ac_cv_func___crc32d=yes], ++[ac_cv_func___crc32d=no])]) ++AS_VAR_IF([ac_cv_func___crc32d], [yes], ++ [AC_DEFINE([HAVE_AARCH64_CRC32], [1], ++ [Define to 1 when aarch64 CRC32 API is available.])]) + + dnl Check for asm goto support. + AC_CACHE_CHECK([for asm goto], ac_cv__asm_goto, diff --git a/package/php/Config.ext b/package/php/Config.ext new file mode 100644 index 00000000..d5f86590 --- /dev/null +++ b/package/php/Config.ext @@ -0,0 +1,425 @@ +menu "Extensions" + +config BR2_PACKAGE_PHP_EXT_CALENDAR + bool "Calendar" + help + Calendar and event support + +config BR2_PACKAGE_PHP_EXT_FILEINFO + bool "Fileinfo" + help + File Information support + +comment "OPcache needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_PHP_EXT_OPCACHE + bool "OPcache" + depends on !BR2_STATIC_LIBS + help + Enable the Zend OPcache accelerator. + +comment "Readline needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_PHP_EXT_READLINE + bool "Readline" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_READLINE + help + Readline support + +config BR2_PACKAGE_PHP_EXT_SESSION + bool "Session" + default y + help + Session support + +comment "Compression extensions" + +config BR2_PACKAGE_PHP_EXT_BZIP2 + bool "bzip2" + select BR2_PACKAGE_BZIP2 + help + bzip2 read/write support + +config BR2_PACKAGE_PHP_EXT_PHAR + bool "phar" + help + PHP Archive support + +comment "zip needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_PHP_EXT_ZIP + bool "zip" + depends on !BR2_STATIC_LIBS # libzip + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_LIBZIP + help + Zip read/write support + +config BR2_PACKAGE_PHP_EXT_ZLIB + bool "zlib" + default y + select BR2_PACKAGE_ZLIB + help + zlib support + +comment "Cryptography extensions" + +comment "libargon2 needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_PHP_EXT_LIBARGON2 + bool "libargon2" + depends on BR2_USE_MMU # libargon2 + depends on !BR2_STATIC_LIBS # libargon2 + select BR2_PACKAGE_LIBARGON2 + help + libargon2 support + +config BR2_PACKAGE_PHP_EXT_LIBSODIUM + bool "libsodium" + select BR2_PACKAGE_LIBSODIUM + help + libsodium support + +config BR2_PACKAGE_PHP_EXT_OPENSSL + bool "openssl" + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4 if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 if BR2_PACKAGE_LIBOPENSSL + help + openssl support + +comment "Database extensions" + +config BR2_PACKAGE_PHP_EXT_DBA + bool "DBA" + help + Database Abstraction Layer + +if BR2_PACKAGE_PHP_EXT_DBA + +config BR2_PACKAGE_PHP_EXT_DBA_CDB + bool "cdb" + help + CDB handler + +config BR2_PACKAGE_PHP_EXT_DBA_DB4 + bool "db4/5" + select BR2_PACKAGE_BERKELEYDB + help + BerkeleyDB version 4/5 handler + +config BR2_PACKAGE_PHP_EXT_DBA_FLAT + bool "flat" + default y + help + Flat file handler + +config BR2_PACKAGE_PHP_EXT_DBA_INI + bool "ini" + default y + help + INI file handler + +endif + +config BR2_PACKAGE_PHP_EXT_MYSQLI + bool "Mysqli" + help + MySQL Improved extension support + +config BR2_PACKAGE_PHP_EXT_PGSQL + bool "PostgreSQL" + depends on BR2_USE_MMU # postgresql + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR # postgresql + depends on !BR2_OPTIMIZE_FAST # postgresql + select BR2_PACKAGE_POSTGRESQL + help + PostgreSQL support + +comment "PostgreSQL extension needs a toolchain w/ dynamic library, wchar" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR + +comment "PostgreSQL extension can't be built with Optimize for fast" + depends on BR2_OPTIMIZE_FAST + +config BR2_PACKAGE_PHP_EXT_SQLITE + bool "SQLite3" + select BR2_PACKAGE_SQLITE + help + SQLite3 support + +config BR2_PACKAGE_PHP_EXT_PDO + bool "PDO" + help + PHP Data Objects support + +if BR2_PACKAGE_PHP_EXT_PDO + +config BR2_PACKAGE_PHP_EXT_PDO_MYSQL + bool "MySQL" + help + PDO driver for MySQL + +config BR2_PACKAGE_PHP_EXT_PDO_POSTGRESQL + bool "PostgreSQL" + depends on BR2_USE_MMU # postgresql + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR # postgresql + depends on !BR2_OPTIMIZE_FAST # postgresql + select BR2_PACKAGE_POSTGRESQL + help + PDO driver for PostgreSQL + +comment "PostgreSQL drivers need a toolchain w/ wchar, dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR + +comment "PostgreSQL drivers can't be built with Optimize for fast" + depends on BR2_OPTIMIZE_FAST + +config BR2_PACKAGE_PHP_EXT_PDO_SQLITE + bool "SQLite3" + select BR2_PACKAGE_SQLITE + help + SQLite3 driver for PDO + +config BR2_PACKAGE_PHP_EXT_PDO_UNIXODBC + bool "unixODBC" + depends on !BR2_STATIC_LIBS # unixodbc + select BR2_PACKAGE_UNIXODBC + help + unixODBC driver for PDO + +comment "unixodbc driver needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +endif + +comment "Human language and character encoding support" + +config BR2_PACKAGE_PHP_EXT_GETTEXT + bool "Gettext" + depends on BR2_SYSTEM_ENABLE_NLS + help + Gettext support + +comment "Gettext support needs NLS enabled" + depends on !BR2_SYSTEM_ENABLE_NLS + +config BR2_PACKAGE_PHP_EXT_ICONV + bool "iconv" + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + iconv character set conversion support + +config BR2_PACKAGE_PHP_EXT_INTL + bool "intl" + depends on BR2_HOST_GCC_AT_LEAST_4_9 # icu + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # icu + depends on !BR2_BINFMT_FLAT # icu + depends on BR2_TOOLCHAIN_HAS_THREADS # icu + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_ICU + help + Internationalization support + +comment "intl support needs a toolchain w/ C++, wchar, threads, dynamic library, gcc >= 4.9, host gcc >= 4.9" + depends on !BR2_BINFMT_FLAT + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_HOST_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_PHP_EXT_MBSTRING + bool "mbstring" + select BR2_PACKAGE_ONIGURUMA + help + multibyte string support + +comment "Image processing" + +config BR2_PACKAGE_PHP_EXT_EXIF + bool "EXIF" + help + EXIF support + +config BR2_PACKAGE_PHP_EXT_GD + bool "GD" + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_ZLIB + help + GD support + +comment "Mathematical extensions" + +config BR2_PACKAGE_PHP_EXT_BCMATH + bool "BC math" + help + BCMath arbitrary precision mathematics support + +config BR2_PACKAGE_PHP_EXT_GMP + bool "GMP" + select BR2_PACKAGE_GMP + help + GNU Multiple Precision support + +comment "Other basic extensions" + +config BR2_PACKAGE_PHP_EXT_TOKENIZER + bool "Tokenizer" + help + Tokenizer functions support + +comment "Other services" + +config BR2_PACKAGE_PHP_EXT_CURL + bool "cURL" + select BR2_PACKAGE_LIBCURL + help + cURL for URL streams + +config BR2_PACKAGE_PHP_EXT_FTP + bool "FTP" + help + FTP support + +config BR2_PACKAGE_PHP_EXT_SNMP + bool "SNMP" + depends on BR2_USE_MMU # netsnmp fork() + select BR2_PACKAGE_NETSNMP + select BR2_PACKAGE_NETSNMP_ENABLE_MIBS + help + SNMP support + +config BR2_PACKAGE_PHP_EXT_SOCKETS + bool "sockets" + help + Sockets support + +comment "Process Control" + +config BR2_PACKAGE_PHP_EXT_PCNTL + bool "PCNTL" + depends on BR2_USE_MMU # fork() + help + Process control support + +config BR2_PACKAGE_PHP_EXT_POSIX + bool "Posix" + default y + help + POSIX.1 (IEEE 1003.1) function support + +config BR2_PACKAGE_PHP_EXT_SHMOP + bool "shmop" + help + Shared memory support + +config BR2_PACKAGE_PHP_EXT_SYSVMSG + bool "sysvmsg" + help + System V message queue support + +config BR2_PACKAGE_PHP_EXT_SYSVSEM + bool "sysvsem" + help + System V semaphore support + +config BR2_PACKAGE_PHP_EXT_SYSVSHM + bool "sysvshm" + help + System V shared memory support + +comment "Variable and Type related" + +config BR2_PACKAGE_PHP_EXT_CTYPE + bool "Ctype" + help + Character type checking support + +config BR2_PACKAGE_PHP_EXT_FILTER + bool "Filter" + help + Input filter support + +comment "Web services" + +config BR2_PACKAGE_PHP_EXT_SOAP + bool "SOAP" + select BR2_PACKAGE_PHP_EXT_LIBXML2 + help + SOAP support + +comment "XML manipulation" + +config BR2_PACKAGE_PHP_EXT_DOM + bool "DOM" + select BR2_PACKAGE_PHP_EXT_LIBXML2 + help + Document Object Model support + +config BR2_PACKAGE_PHP_EXT_LIBXML2 + bool "libxml" + select BR2_PACKAGE_LIBXML2 + help + libxml2 support + +config BR2_PACKAGE_PHP_EXT_SIMPLEXML + bool "SimpleXML" + select BR2_PACKAGE_PHP_EXT_LIBXML2 + help + SimpleXML support + +config BR2_PACKAGE_PHP_EXT_XML + bool "XML Parser" + select BR2_PACKAGE_PHP_EXT_LIBXML2 + help + XML Parser support + +config BR2_PACKAGE_PHP_EXT_XMLREADER + bool "XMLReader" + select BR2_PACKAGE_PHP_EXT_LIBXML2 + help + XMLReader support + +config BR2_PACKAGE_PHP_EXT_XMLWRITER + bool "XMLWriter" + select BR2_PACKAGE_PHP_EXT_LIBXML2 + help + XMLWriter support + +config BR2_PACKAGE_PHP_EXT_XSL + bool "XSL" + select BR2_PACKAGE_PHP_EXT_DOM + select BR2_PACKAGE_PHP_EXT_LIBXML2 + select BR2_PACKAGE_LIBXSLT + help + XSL transformation support + +config BR2_PACKAGE_PHP_EXT_FFI + bool "FFI" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBFFI + help + Foreign Function Interface support + +comment "PHP FFI extension needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +endmenu diff --git a/package/php/Config.in b/package/php/Config.in new file mode 100644 index 00000000..af8574ac --- /dev/null +++ b/package/php/Config.in @@ -0,0 +1,73 @@ +config BR2_PACKAGE_PHP_ARCH_SUPPORTS + bool + # see fiber_cpu in configure.ac + default y if BR2_aarch64 || BR2_aarch64_be + default y if BR2_arm || BR2_armeb + default y if BR2_i386 || BR2_x86_64 + default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + default y if BR2_RISCV_64 + default y if BR2_s390x + default y if BR2_TOOLCHAIN_HAS_UCONTEXT + default y if BR2_PACKAGE_LIBUCONTEXT_ARCH_SUPPORTS + +config BR2_PACKAGE_PHP + bool "php" + depends on BR2_PACKAGE_PHP_ARCH_SUPPORTS + # PHP uses -export-dynamic, which breaks with elf2flt with a + # message like "ld.real: section .junk LMA [...,...] overlaps + # section .text LMA [...,...]" + depends on !BR2_BINFMT_FLAT + depends on BR2_USE_WCHAR + 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 + select BR2_PACKAGE_PCRE2 + select BR2_PACKAGE_LIBUCONTEXT if \ + BR2_PACKAGE_LIBUCONTEXT_ARCH_SUPPORTS + help + PHP is a widely-used general-purpose scripting + language that is especially suited for Web development + and can be embedded into HTML. + + http://www.php.net + +if BR2_PACKAGE_PHP + +config BR2_PACKAGE_PHP_SAPI_APACHE + bool "Apache interface" + depends on BR2_PACKAGE_APACHE + help + Apache module + +config BR2_PACKAGE_PHP_SAPI_CGI + bool "CGI interface" + # CGI uses fork() + depends on BR2_USE_MMU + help + Common Gateway Interface + +config BR2_PACKAGE_PHP_SAPI_CLI + bool "CLI interface" + help + Command Line Interface + +config BR2_PACKAGE_PHP_SAPI_FPM + bool "FPM interface" + depends on BR2_USE_MMU + # "Sparc v8 and predecessors are not and will not be supported" + depends on !BR2_sparc + help + PHP-FPM (FastCGI Process Manager) + +source "package/php/Config.ext" + +endif + +comment "php needs a toolchain w/ wchar" + depends on BR2_PACKAGE_PHP_ARCH_SUPPORTS + depends on !BR2_BINFMT_FLAT + depends on !BR2_USE_WCHAR diff --git a/package/php/php-fpm.conf b/package/php/php-fpm.conf new file mode 100644 index 00000000..88014b8c --- /dev/null +++ b/package/php/php-fpm.conf @@ -0,0 +1,11 @@ +[www] +pm = ondemand +pm.process_idle_timeout = 120s +pm.max_children = 5 + +listen = /var/run/php-fpm.sock +listen.owner = www-data +listen.group = www-data +user = www-data +group = www-data + diff --git a/package/php/php.hash b/package/php/php.hash new file mode 100644 index 00000000..3a6f6068 --- /dev/null +++ b/package/php/php.hash @@ -0,0 +1,5 @@ +# From https://www.php.net/downloads.php +sha256 a0f2179d00931fe7631a12cbc3428f898ca3d99fe564260c115af381d2a1978d php-8.3.10.tar.xz + +# License file +sha256 b42e4df5e50e6ecda1047d503d6d91d71032d09ed1027ba1ef29eed26f890c5a LICENSE diff --git a/package/php/php.mk b/package/php/php.mk new file mode 100644 index 00000000..0487c03b --- /dev/null +++ b/package/php/php.mk @@ -0,0 +1,383 @@ +################################################################################ +# +# php +# +################################################################################ + +PHP_VERSION = 8.3.10 +PHP_SITE = https://www.php.net/distributions +PHP_SOURCE = php-$(PHP_VERSION).tar.xz +PHP_INSTALL_STAGING = YES +PHP_INSTALL_STAGING_OPTS = INSTALL_ROOT=$(STAGING_DIR) install +PHP_INSTALL_TARGET_OPTS = INSTALL_ROOT=$(TARGET_DIR) install +PHP_DEPENDENCIES = host-pkgconf pcre2 +PHP_LICENSE = PHP-3.01 +PHP_LICENSE_FILES = LICENSE +PHP_CPE_ID_VENDOR = php + +PHP_CONF_OPTS = \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --with-config-file-scan-dir=/etc/php.d \ + --disable-all \ + --with-external-pcre \ + --without-pear \ + --with-config-file-path=/etc \ + --disable-phpdbg \ + --disable-rpath +PHP_CONF_ENV = \ + EXTRA_LIBS="$(PHP_EXTRA_LIBS)" + +ifeq ($(BR2_STATIC_LIBS),y) +PHP_CONF_ENV += LIBS="$(PHP_STATIC_LIBS)" +endif + +ifeq ($(BR2_STATIC_LIBS)$(BR2_TOOLCHAIN_HAS_THREADS),yy) +PHP_STATIC_LIBS += -lpthread +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +PHP_EXTRA_LIBS += -latomic +endif + +ifeq ($(BR2_PACKAGE_LIBUCONTEXT),y) +PHP_DEPENDENCIES += libucontext +PHP_EXTRA_LIBS += -lucontext +endif + +ifeq ($(call qstrip,$(BR2_TARGET_LOCALTIME)),) +PHP_LOCALTIME = UTC +else +# Not q-stripping this value, as we need quotes in the php.ini file +PHP_LOCALTIME = $(BR2_TARGET_LOCALTIME) +endif + +# PHP can't be AUTORECONFed the standard way unfortunately +PHP_DEPENDENCIES += host-autoconf host-automake host-libtool +define PHP_BUILDCONF + cd $(@D) ; $(TARGET_MAKE_ENV) ./buildconf --force +endef +PHP_PRE_CONFIGURE_HOOKS += PHP_BUILDCONF + +ifeq ($(BR2_ENDIAN),"BIG") +PHP_CONF_ENV += ac_cv_c_bigendian_php=yes +else +PHP_CONF_ENV += ac_cv_c_bigendian_php=no +endif +PHP_CONFIG_SCRIPTS = php-config + +PHP_CFLAGS = $(TARGET_CFLAGS) +PHP_CXXFLAGS = $(TARGET_CXXFLAGS) + +# The OPcache extension isn't cross-compile friendly +# Throw some defines here to avoid patching heavily +ifeq ($(BR2_PACKAGE_PHP_EXT_OPCACHE),y) +PHP_CONF_OPTS += --enable-opcache --disable-opcache-jit +PHP_CONF_ENV += ac_cv_func_mprotect=yes +PHP_CFLAGS += \ + -DHAVE_SHM_IPC \ + -DHAVE_SHM_MMAP_ANON \ + -DHAVE_SHM_MMAP_ZERO \ + -DHAVE_SHM_MMAP_POSIX \ + -DHAVE_SHM_MMAP_FILE +endif + +# We need to force dl "detection" +ifeq ($(BR2_STATIC_LIBS),) +PHP_CONF_ENV += ac_cv_func_dlopen=yes ac_cv_lib_dl_dlopen=yes +PHP_EXTRA_LIBS += -ldl +else +PHP_CONF_ENV += ac_cv_func_dlopen=no ac_cv_lib_dl_dlopen=no +endif + +# php has some assembly function that is not present in Thumb mode: +# Error: selected processor does not support `umlal r2,r1,r0,r3' in Thumb mode +# so, we desactivate Thumb mode +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +PHP_CFLAGS += -marm +endif + +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-zts +endif +endif + +### Extensions +PHP_CONF_OPTS += \ + $(if $(BR2_PACKAGE_PHP_EXT_SOCKETS),--enable-sockets) \ + $(if $(BR2_PACKAGE_PHP_EXT_POSIX),--enable-posix) \ + $(if $(BR2_PACKAGE_PHP_EXT_SESSION),--enable-session) \ + $(if $(BR2_PACKAGE_PHP_EXT_DOM),--enable-dom) \ + $(if $(BR2_PACKAGE_PHP_EXT_SIMPLEXML),--enable-simplexml) \ + $(if $(BR2_PACKAGE_PHP_EXT_SOAP),--enable-soap) \ + $(if $(BR2_PACKAGE_PHP_EXT_XML),--enable-xml) \ + $(if $(BR2_PACKAGE_PHP_EXT_XMLREADER),--enable-xmlreader) \ + $(if $(BR2_PACKAGE_PHP_EXT_XMLWRITER),--enable-xmlwriter) \ + $(if $(BR2_PACKAGE_PHP_EXT_EXIF),--enable-exif) \ + $(if $(BR2_PACKAGE_PHP_EXT_FTP),--enable-ftp) \ + $(if $(BR2_PACKAGE_PHP_EXT_TOKENIZER),--enable-tokenizer) \ + $(if $(BR2_PACKAGE_PHP_EXT_PCNTL),--enable-pcntl) \ + $(if $(BR2_PACKAGE_PHP_EXT_SHMOP),--enable-shmop) \ + $(if $(BR2_PACKAGE_PHP_EXT_SYSVMSG),--enable-sysvmsg) \ + $(if $(BR2_PACKAGE_PHP_EXT_SYSVSEM),--enable-sysvsem) \ + $(if $(BR2_PACKAGE_PHP_EXT_SYSVSHM),--enable-sysvshm) \ + $(if $(BR2_PACKAGE_PHP_EXT_ZIP),--with-zip) \ + $(if $(BR2_PACKAGE_PHP_EXT_CTYPE),--enable-ctype) \ + $(if $(BR2_PACKAGE_PHP_EXT_FILTER),--enable-filter) \ + $(if $(BR2_PACKAGE_PHP_EXT_CALENDAR),--enable-calendar) \ + $(if $(BR2_PACKAGE_PHP_EXT_FILEINFO),--enable-fileinfo) \ + $(if $(BR2_PACKAGE_PHP_EXT_BCMATH),--enable-bcmath) \ + $(if $(BR2_PACKAGE_PHP_EXT_PHAR),--enable-phar) + +ifeq ($(BR2_PACKAGE_PHP_EXT_LIBARGON2),y) +PHP_CONF_OPTS += --with-password-argon2=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += libargon2 +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_LIBSODIUM),y) +PHP_CONF_OPTS += --with-sodium=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += libsodium +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_MBSTRING),y) +PHP_CONF_OPTS += --enable-mbstring +PHP_DEPENDENCIES += oniguruma +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_OPENSSL),y) +PHP_CONF_OPTS += --with-openssl=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += openssl +# openssl needs zlib, but the configure script forgets to link against +# it causing detection failures with static linking +PHP_STATIC_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs openssl` +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_LIBXML2),y) +PHP_CONF_ENV += php_cv_libxml_build_works=yes +PHP_CONF_OPTS += --with-libxml +PHP_DEPENDENCIES += libxml2 +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_ZIP),y) +PHP_DEPENDENCIES += libzip +endif + +ifneq ($(BR2_PACKAGE_PHP_EXT_ZLIB)$(BR2_PACKAGE_PHP_EXT_ZIP),) +PHP_CONF_OPTS += --with-zlib=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += zlib +else +PHP_CONF_OPTS += --disable-mysqlnd_compression_support +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_GETTEXT),y) +PHP_CONF_OPTS += --with-gettext=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += $(TARGET_NLS_DEPENDENCIES) +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_ICONV),y) +ifeq ($(BR2_PACKAGE_LIBICONV),y) +PHP_CONF_OPTS += --with-iconv=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += libiconv +else +PHP_CONF_OPTS += --with-iconv +endif +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_INTL),y) +PHP_CONF_OPTS += --enable-intl +PHP_DEPENDENCIES += icu +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_GMP),y) +PHP_CONF_OPTS += --with-gmp=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += gmp +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_READLINE),y) +PHP_CONF_OPTS += --with-readline=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += readline +endif + +### Native SQL extensions +ifeq ($(BR2_PACKAGE_PHP_EXT_MYSQLI),y) +PHP_CONF_OPTS += --with-mysqli +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_PGSQL),y) +PHP_CONF_OPTS += --with-pgsql=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += postgresql +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_SQLITE),y) +PHP_CONF_OPTS += --with-sqlite3=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += sqlite +PHP_STATIC_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs sqlite3` +endif + +### PDO +ifeq ($(BR2_PACKAGE_PHP_EXT_PDO),y) +PHP_CONF_OPTS += --enable-pdo +ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_SQLITE),y) +PHP_CONF_OPTS += --with-pdo-sqlite=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += sqlite +PHP_CFLAGS += -DSQLITE_OMIT_LOAD_EXTENSION +endif +ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_MYSQL),y) +PHP_CONF_OPTS += --with-pdo-mysql +endif +ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_POSTGRESQL),y) +PHP_CONF_OPTS += --with-pdo-pgsql=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += postgresql +endif +ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_UNIXODBC),y) +PHP_CONF_OPTS += --with-pdo-odbc=unixODBC,$(STAGING_DIR)/usr +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_VALGRIND + $(SED) '/^#define HAVE_VALGRIND/d' $(@D)/main/php_config.h +endef +PHP_POST_CONFIGURE_HOOKS += PHP_DISABLE_VALGRIND + +ifeq ($(BR2_PACKAGE_PCRE2_JIT),y) +PHP_CONF_OPTS += --with-pcre-jit=yes +PHP_CONF_ENV += ac_cv_have_pcre2_jit=yes +else +PHP_CONF_OPTS += --with-pcre-jit=no +PHP_CONF_ENV += ac_cv_have_pcre2_jit=no +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_CURL),y) +PHP_CONF_OPTS += --with-curl +PHP_DEPENDENCIES += libcurl +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_XSL),y) +PHP_CONF_OPTS += --with-xsl=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += libxslt +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_BZIP2),y) +PHP_CONF_OPTS += --with-bz2=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += bzip2 +endif + +### DBA +ifeq ($(BR2_PACKAGE_PHP_EXT_DBA),y) +PHP_CONF_OPTS += --enable-dba +ifneq ($(BR2_PACKAGE_PHP_EXT_DBA_CDB),y) +PHP_CONF_OPTS += --without-cdb +endif +ifneq ($(BR2_PACKAGE_PHP_EXT_DBA_FLAT),y) +PHP_CONF_OPTS += --without-flatfile +endif +ifneq ($(BR2_PACKAGE_PHP_EXT_DBA_INI),y) +PHP_CONF_OPTS += --without-inifile +endif +ifeq ($(BR2_PACKAGE_PHP_EXT_DBA_DB4),y) +PHP_CONF_OPTS += --with-db4=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += berkeleydb +endif +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_SNMP),y) +PHP_CONF_OPTS += --with-snmp=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += netsnmp +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_GD),y) +PHP_CONF_OPTS += \ + --enable-gd \ + --with-jpeg \ + --with-freetype +PHP_DEPENDENCIES += jpeg libpng freetype zlib +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_FFI),y) +PHP_CONF_OPTS += --with-ffi +PHP_DEPENDENCIES += libffi +endif + +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 +endef + +define PHP_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(@D)/sapi/fpm/php-fpm.service \ + $(TARGET_DIR)/usr/lib/systemd/system/php-fpm.service +endef + +define PHP_INSTALL_FPM_CONF + $(INSTALL) -D -m 0644 package/php/php-fpm.conf \ + $(TARGET_DIR)/etc/php-fpm.conf + rm -f $(TARGET_DIR)/etc/php-fpm.d/www.conf.default + # remove unused sample status page /usr/php/php/fpm/status.html + rm -rf $(TARGET_DIR)/usr/php +endef + +PHP_POST_INSTALL_TARGET_HOOKS += PHP_INSTALL_FPM_CONF +endif + +define PHP_EXTENSIONS_FIXUP + $(SED) "/prefix/ s:/usr:$(STAGING_DIR)/usr:" \ + $(STAGING_DIR)/usr/bin/phpize + $(SED) "/extension_dir/ s:/usr:$(TARGET_DIR)/usr:" \ + $(STAGING_DIR)/usr/bin/php-config +endef + +PHP_POST_INSTALL_TARGET_HOOKS += PHP_EXTENSIONS_FIXUP + +define PHP_INSTALL_FIXUP + rm -rf $(TARGET_DIR)/usr/lib/php/build + rm -f $(TARGET_DIR)/usr/bin/phpize + $(INSTALL) -D -m 0755 $(PHP_DIR)/php.ini-production \ + $(TARGET_DIR)/etc/php.ini + $(SED) 's%;date.timezone =.*%date.timezone = $(PHP_LOCALTIME)%' \ + $(TARGET_DIR)/etc/php.ini + $(if $(BR2_PACKAGE_PHP_EXT_OPCACHE), + $(SED) '/;extension=php_xsl.dll/azend_extension=opcache.so' \ + $(TARGET_DIR)/etc/php.ini) +endef + +PHP_POST_INSTALL_TARGET_HOOKS += PHP_INSTALL_FIXUP + +PHP_CONF_ENV += CFLAGS="$(PHP_CFLAGS)" CXXFLAGS="$(PHP_CXXFLAGS)" + +HOST_PHP_CONF_OPTS = \ + --disable-all \ + --without-pear \ + --with-config-file-path=$(HOST_DIR)/etc \ + --disable-phpdbg \ + --with-external-pcre \ + --enable-phar \ + --enable-json \ + --enable-filter \ + --enable-mbstring \ + --enable-tokenizer \ + --with-openssl=$(HOST_DIR) + +HOST_PHP_DEPENDENCIES = \ + host-oniguruma \ + host-openssl \ + host-pcre2 \ + host-pkgconf + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/physfs/Config.in b/package/physfs/Config.in new file mode 100644 index 00000000..c272d887 --- /dev/null +++ b/package/physfs/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PHYSFS + bool "physfs" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + PhysicsFS; a portable, flexible file i/o abstraction. + + http://icculus.org/physfs + +comment "physfs needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/physfs/physfs.hash b/package/physfs/physfs.hash new file mode 100644 index 00000000..a56e7dcc --- /dev/null +++ b/package/physfs/physfs.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 304df76206d633df5360e738b138c94e82ccf086e50ba84f456d3f8432f9f863 physfs-3.0.2.tar.bz2 +sha256 d80c0b09a1c98c61667ea044eefa2fd98fb70bd5fe12c49ff52b1fc2289a6583 LICENSE.txt diff --git a/package/physfs/physfs.mk b/package/physfs/physfs.mk new file mode 100644 index 00000000..9a3bd441 --- /dev/null +++ b/package/physfs/physfs.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# physfs +# +################################################################################ + +PHYSFS_VERSION = 3.0.2 +PHYSFS_SOURCE = physfs-$(PHYSFS_VERSION).tar.bz2 +PHYSFS_SITE = https://icculus.org/physfs/downloads + +PHYSFS_LICENSE = Zlib +PHYSFS_LICENSE_FILES = LICENSE.txt + +PHYSFS_INSTALL_STAGING = YES + +PHYSFS_CONF_OPTS = -DPHYSFS_BUILD_TEST=OFF + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +PHYSFS_CONF_OPTS += -DPHYSFS_BUILD_SHARED=ON +else +PHYSFS_CONF_OPTS += -DPHYSFS_BUILD_SHARED=OFF +endif + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +PHYSFS_CONF_OPTS += -DPHYSFS_BUILD_STATIC=ON +else +PHYSFS_CONF_OPTS += -DPHYSFS_BUILD_STATIC=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/phytool/Config.in b/package/phytool/Config.in new file mode 100644 index 00000000..985468f1 --- /dev/null +++ b/package/phytool/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PHYTOOL + bool "phytool" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 # linux/mdio.h + help + Linux MDIO register access utility. + + https://github.com/wkz/phytool + +comment "phytool needs a toolchain w/ headers >= 3.7" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 diff --git a/package/phytool/phytool.hash b/package/phytool/phytool.hash new file mode 100644 index 00000000..b6bfd813 --- /dev/null +++ b/package/phytool/phytool.hash @@ -0,0 +1,5 @@ +# md5 from https://github.com/wkz/phytool/releases/download/v2/phytool-2.tar.xz.md5 +# sha256 locally computed: +md5 972982f8e5f7237cbccfc6d275da7348 phytool-2.tar.xz +sha256 9901a14e8c6af02b7333c60b21ff81f50620e8326d54827185e5617ff9b11d21 phytool-2.tar.xz +sha256 f9c375a1be4a41f7b70301dd83c91cb89e41567478859b77eef375a52d782505 LICENSE diff --git a/package/phytool/phytool.mk b/package/phytool/phytool.mk new file mode 100644 index 00000000..3de66661 --- /dev/null +++ b/package/phytool/phytool.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# phytool +# +################################################################################ + +PHYTOOL_VERSION = 2 +PHYTOOL_SOURCE = phytool-$(PHYTOOL_VERSION).tar.xz +PHYTOOL_SITE = https://github.com/wkz/phytool/releases/download/v$(PHYTOOL_VERSION) +PHYTOOL_LICENSE = GPL-2.0+ +PHYTOOL_LICENSE_FILES = LICENSE + +define PHYTOOL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + LDLIBS="$(TARGET_LDFLAGS)" +endef + +define PHYTOOL_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + DESTDIR="$(TARGET_DIR)" \ + PREFIX="usr" install +endef + +$(eval $(generic-package)) diff --git a/package/pico-sdk/Config.in b/package/pico-sdk/Config.in new file mode 100644 index 00000000..96213992 --- /dev/null +++ b/package/pico-sdk/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PICO_SDK + bool "pico-sdk" + help + Raspberry Pi Pico SDK. Provides the headers, libraries + and build system necessary to write programs for the + RP2040-based devices such as the Raspberry Pi Pico in + C, C++ or assembly language. + + https://github.com/raspberrypi/pico-sdk diff --git a/package/pico-sdk/pico-sdk.hash b/package/pico-sdk/pico-sdk.hash new file mode 100644 index 00000000..5db7e8bd --- /dev/null +++ b/package/pico-sdk/pico-sdk.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 95f5e522be3919e36a47975ffd3b208c38880c14468bd489ac672cfe3cec803c pico-sdk-1.5.1.tar.gz +sha256 483f865953435b66c443dee7558debe3cc3cf8fcbb6a112fd9fc6a795d53f1f6 LICENSE.TXT diff --git a/package/pico-sdk/pico-sdk.mk b/package/pico-sdk/pico-sdk.mk new file mode 100644 index 00000000..27930651 --- /dev/null +++ b/package/pico-sdk/pico-sdk.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# pico-sdk +# +################################################################################ + +PICO_SDK_VERSION = 1.5.1 +PICO_SDK_SITE = $(call github,raspberrypi,pico-sdk,$(PICO_SDK_VERSION)) +PICO_SDK_LICENSE = BSD-3-Clause +PICO_SDK_LICENSE_FILES = LICENSE.TXT +PICO_SDK_INSTALL_STAGING = YES +# Header-only lib, as far as buildroot is concerned +PICO_SDK_INSTALL_TARGET = NO + +define PICO_SDK_INSTALL_STAGING_CMDS + mkdir -p $(STAGING_DIR)/usr/share/pico-sdk + cp -r $(@D)/* $(STAGING_DIR)/usr/share/pico-sdk +endef + +$(eval $(generic-package)) diff --git a/package/picocom/Config.in b/package/picocom/Config.in new file mode 100644 index 00000000..e2c34c0e --- /dev/null +++ b/package/picocom/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PICOCOM + bool "picocom" + help + picocom is a minimal dumb-terminal emulation program. It is, + in principle, very much like minicom, only it's pico instead + of mini! + + https://gitlab.com/wsakernel/picocom diff --git a/package/picocom/picocom.hash b/package/picocom/picocom.hash new file mode 100644 index 00000000..170de09c --- /dev/null +++ b/package/picocom/picocom.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 4379de2ec591a5848123f37ccdbc7fbeee6dd3520ef1ce4119d84202fc268a17 picocom-2024-07.tar.gz +sha256 9273c6b2c55be95f0f0df292d87e8900e5bfdf5b510a6ea09e80306cf45c10f6 LICENSE.txt diff --git a/package/picocom/picocom.mk b/package/picocom/picocom.mk new file mode 100644 index 00000000..066a2a4f --- /dev/null +++ b/package/picocom/picocom.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# picocom +# +################################################################################ + +PICOCOM_VERSION = 2024-07 +PICOCOM_SITE = $(call gitlab,wsakernel,picocom,$(PICOCOM_VERSION)) +PICOCOM_LICENSE = GPL-2.0+ +PICOCOM_LICENSE_FILES = LICENSE.txt +PICOCOM_CPE_ID_VALID = YES + +ifeq ($(BR2_USE_MMU),) +PICOCOM_CPPFLAGS += -DNO_FORK +endif + +define PICOCOM_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \ + EXTRA_CPPFLAGS="$(PICOCOM_CPPFLAGS)" $(MAKE) -C $(@D) +endef + +define PICOCOM_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/picocom $(TARGET_DIR)/usr/bin/picocom +endef + +$(eval $(generic-package)) diff --git a/package/picotool/Config.in b/package/picotool/Config.in new file mode 100644 index 00000000..bbbcef40 --- /dev/null +++ b/package/picotool/Config.in @@ -0,0 +1,19 @@ +comment "picotool needs a toolchain w/ C++, threads, gcc >= 4.9" + depends on !BR2_INSTALL_LIBSTDCPP || \ + BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_PICOTOOL + bool "picotool" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_PICO_SDK + help + picotool is a tool for inspecting rp2040 binaries and + interacting with rp2040 devices when they are in bootsel + mode or devices USBstdio support from the Raspberry Pi Pico + SDK. + + https://github.com/raspberrypi/picotool diff --git a/package/picotool/picotool.hash b/package/picotool/picotool.hash new file mode 100644 index 00000000..26b790d9 --- /dev/null +++ b/package/picotool/picotool.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 f1746ead7815c13be1152f0645db8ea3b277628eb0110d42a0a186db37d40a91 picotool-1.1.2.tar.gz +sha256 483f865953435b66c443dee7558debe3cc3cf8fcbb6a112fd9fc6a795d53f1f6 LICENSE.TXT diff --git a/package/picotool/picotool.mk b/package/picotool/picotool.mk new file mode 100644 index 00000000..42f74fb2 --- /dev/null +++ b/package/picotool/picotool.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# picotool +# +################################################################################ + +PICOTOOL_VERSION = 1.1.2 +PICOTOOL_SITE = $(call github,raspberrypi,picotool,$(PICOTOOL_VERSION)) +PICOTOOL_CONF_OPTS = -DPICO_SDK_PATH=$(STAGING_DIR)/usr/share/pico-sdk +PICOTOOL_DEPENDENCIES = libusb pico-sdk +PICOTOOL_LICENSE = BSD-3-Clause +PICOTOOL_LICENSE_FILES = LICENSE.TXT + +$(eval $(cmake-package)) diff --git a/package/pifmrds/0001-Makefile-cross-compile-friendly.patch b/package/pifmrds/0001-Makefile-cross-compile-friendly.patch new file mode 100644 index 00000000..414d97c1 --- /dev/null +++ b/package/pifmrds/0001-Makefile-cross-compile-friendly.patch @@ -0,0 +1,37 @@ +Makefile: make it cross-compile (and Buildroot) friendly. + +The current Makefile makes heavy assumptions that it is doing native +compilation on the RPi, as it checks that `uname -m` is an ARM machine. + +This is wrong in the cross-compilation case. + +Remove the conditional altogether, and do not override the CFLAGS +as passed in the environment (Buildroot passes proper CFLAGS). + +[intial patch by: Eric Limpens ] +Signed-off-by: "Yann E. MORIN" + +diff -durN pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1.orig/src/Makefile pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1/src/Makefile +--- pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1.orig/src/Makefile 2014-05-04 18:21:40.000000000 +0200 ++++ pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1/src/Makefile 2014-06-21 16:38:31.971804343 +0200 +@@ -1,20 +1,8 @@ + CC = gcc +-STD_CFLAGS = -Wall -std=gnu99 -c -g -O3 + +-# Enable ARM-specific options only on ARM, and compilation of the app only on ARM +-UNAME := $(shell uname -m) +- +-ifeq ($(UNAME), armv6l) +- CFLAGS = $(STD_CFLAGS) -march=armv6 -mtune=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp -ffast-math +- + app: rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o + $(CC) -o pi_fm_rds rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o -lm -lsndfile + +-else +- CFLAGS = $(STD_CFLAGS) +-endif +- +- + rds_wav: rds.o waveforms.o rds_wav.o fm_mpx.o + $(CC) -o rds_wav rds_wav.o rds.o waveforms.o fm_mpx.o -lm -lsndfile + diff --git a/package/pifmrds/0002-Makefile-use-LDFLAGS.patch b/package/pifmrds/0002-Makefile-use-LDFLAGS.patch new file mode 100644 index 00000000..54c14270 --- /dev/null +++ b/package/pifmrds/0002-Makefile-use-LDFLAGS.patch @@ -0,0 +1,20 @@ +Makefile: use LDFLAGS when linking + +Signed-off-by: "Yann E. MORIN" + +diff -durN pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1.orig/src/Makefile pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1/src/Makefile +--- pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1.orig/src/Makefile 2014-06-21 16:46:49.101118754 +0200 ++++ pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1/src/Makefile 2014-06-21 16:47:47.801745683 +0200 +@@ -1,10 +1,10 @@ + CC = gcc + + app: rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o +- $(CC) -o pi_fm_rds rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o -lm -lsndfile ++ $(CC) $(LDFLAGS) -o pi_fm_rds rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o -lm -lsndfile + + rds_wav: rds.o waveforms.o rds_wav.o fm_mpx.o +- $(CC) -o rds_wav rds_wav.o rds.o waveforms.o fm_mpx.o -lm -lsndfile ++ $(CC) $(LDFLAGS) -o rds_wav rds_wav.o rds.o waveforms.o fm_mpx.o -lm -lsndfile + + rds.o: rds.c waveforms.h + $(CC) $(CFLAGS) rds.c diff --git a/package/pifmrds/0003-Makefile-fix-static-link.patch b/package/pifmrds/0003-Makefile-fix-static-link.patch new file mode 100644 index 00000000..3832b77d --- /dev/null +++ b/package/pifmrds/0003-Makefile-fix-static-link.patch @@ -0,0 +1,25 @@ +Makefile: Fix static linking + +Since libsndfile uses funtions from libm, the -lm should be specified +after libsndfile for static linking. + +Signed-off-by: "Eric Limpens" +[Fabrice: add $(SNDFILE_LIBS) to pass all dependencies from pkg-config] +Signed-off-by: Fabrice Fontaine + +diff -purN pifmrds-0bf57f9ce0d954365a38d8af8e7be6f28521c3f2.orig/src/Makefile pifmrds-0bf57f9ce0d954365a38d8af8e7be6f28521c3f2/src/Makefile +--- pifmrds-0bf57f9ce0d954365a38d8af8e7be6f28521c3f2.orig/src/Makefile 2016-02-26 08:06:43.102962592 +0100 ++++ pifmrds-0bf57f9ce0d954365a38d8af8e7be6f28521c3f2/src/Makefile 2016-02-26 08:27:11.069148203 +0100 +@@ -1,10 +1,10 @@ + CC = gcc + + app: rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o +- $(CC) $(LDFLAGS) -o pi_fm_rds rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o -lm -lsndfile ++ $(CC) $(LDFLAGS) -o pi_fm_rds rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o $(SNDFILE_LIBS) -lm + + rds_wav: rds.o waveforms.o rds_wav.o fm_mpx.o +- $(CC) $(LDFLAGS) -o rds_wav rds_wav.o rds.o waveforms.o fm_mpx.o -lm -lsndfile ++ $(CC) $(LDFLAGS) -o rds_wav rds_wav.o rds.o waveforms.o fm_mpx.o $(SNDFILE_LIBS) -lm + + rds.o: rds.c waveforms.h + $(CC) $(CFLAGS) rds.c diff --git a/package/pifmrds/Config.in b/package/pifmrds/Config.in new file mode 100644 index 00000000..6d492683 --- /dev/null +++ b/package/pifmrds/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PIFMRDS + bool "pifmrds" + depends on BR2_arm + select BR2_PACKAGE_LIBSNDFILE + help + pifmrds, FM-RDS transmitter using the Raspberry Pi's PWM + + https://github.com/ChristopheJacquet/PiFmRds diff --git a/package/pifmrds/pifmrds.hash b/package/pifmrds/pifmrds.hash new file mode 100644 index 00000000..b0949ca1 --- /dev/null +++ b/package/pifmrds/pifmrds.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2afc9f3c9fc206ba32865d7dd77f3a97d7d86dcfc9b44eeb5665e8fddaafcf44 pifmrds-0bf57f9ce0d954365a38d8af8e7be6f28521c3f2.tar.gz +sha256 fe3eea6c599e23a00c08c5f5cb2320c30adc8f8687db5fcec9b79a662c53ff6b LICENSE diff --git a/package/pifmrds/pifmrds.mk b/package/pifmrds/pifmrds.mk new file mode 100644 index 00000000..33c13bae --- /dev/null +++ b/package/pifmrds/pifmrds.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# pifmrds +# +################################################################################ + +PIFMRDS_VERSION = 0bf57f9ce0d954365a38d8af8e7be6f28521c3f2 +PIFMRDS_SITE = $(call github,ChristopheJacquet,PiFmRds,$(PIFMRDS_VERSION)) +PIFMRDS_DEPENDENCIES = host-pkgconf libsndfile +PIFMRDS_LICENSE = GPL-3.0+ +PIFMRDS_LICENSE_FILES = LICENSE + +define PIFMRDS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src CC="$(TARGET_CC)" LDFLAGS="$(TARGET_LDFLAGS)" \ + CFLAGS="$(TARGET_CFLAGS) -std=gnu99 -ffast-math -c" \ + SNDFILE_LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs sndfile`" \ + app rds_wav +endef + +define PIFMRDS_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/src/pi_fm_rds $(TARGET_DIR)/usr/bin/pi_fm_rds + $(INSTALL) -D -m 0755 $(@D)/src/rds_wav $(TARGET_DIR)/usr/bin/rds_wav +endef + +$(eval $(generic-package)) diff --git a/package/piglit/Config.in b/package/piglit/Config.in new file mode 100644 index 00000000..48b76419 --- /dev/null +++ b/package/piglit/Config.in @@ -0,0 +1,41 @@ +config BR2_PACKAGE_PIGLIT + bool "piglit" + depends on BR2_PACKAGE_PYTHON3 # python3 only script + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + depends on BR2_PACKAGE_WAFFLE_SUPPORTS_GLX || \ + BR2_PACKAGE_WAFFLE_SUPPORTS_WAYLAND || \ + BR2_PACKAGE_WAFFLE_SUPPORTS_X11_EGL || \ + BR2_PACKAGE_WAFFLE_SUPPORTS_GBM + depends on BR2_INSTALL_LIBSTDCPP # mesa3d-demos, python-numpy + depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_9 # python-numpy + depends on BR2_HOST_GCC_AT_LEAST_9 # host-python-numpy + select BR2_PACKAGE_LIBDRM if BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_LIBXKBCOMMON if BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_MESA3D_DEMOS # glxinfo + select BR2_PACKAGE_PYTHON_MAKO + select BR2_PACKAGE_PYTHON_NUMPY + select BR2_PACKAGE_PYTHON_SIX + select BR2_PACKAGE_PYTHON3_BZIP2 + select BR2_PACKAGE_PYTHON3_PYEXPAT + select BR2_PACKAGE_PYTHON3_XZ + select BR2_PACKAGE_PYTHON3_ZLIB + select BR2_PACKAGE_UTIL_LINUX # runtime + select BR2_PACKAGE_UTIL_LINUX_BINARIES # requires real dmesg tool + select BR2_PACKAGE_WAFFLE # wflinfo, libwaffle-1 + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XORGPROTO if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_ZLIB + help + Piglit is an open-source test suite for OpenGL + implementations. + + https://piglit.freedesktop.org + +comment "piglit needs a glibc or musl toolchain w/ C++, gcc >= 9, host gcc >= 9" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_9 || \ + !BR2_HOST_GCC_AT_LEAST_9 || \ + !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) diff --git a/package/piglit/piglit.hash b/package/piglit/piglit.hash new file mode 100644 index 00000000..2c0b6aa5 --- /dev/null +++ b/package/piglit/piglit.hash @@ -0,0 +1,6 @@ +# Locally calculated +sha256 ba4d1839038905f3833e9ab23b385913e08d552533dd222cc203c79c10e09918 piglit-2affee53f3ad7a96f5b397a2b6d6408af8a374b0-git4.tar.gz +sha256 dcc398730859aee7cc1d6aa57f526f8d181b47bb3a49830e85b5723d5bc2c3bc COPYING +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 licences/GPL-2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 licences/GPL-3 +sha256 b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c licences/LGPL-2 diff --git a/package/piglit/piglit.mk b/package/piglit/piglit.mk new file mode 100644 index 00000000..4d17405d --- /dev/null +++ b/package/piglit/piglit.mk @@ -0,0 +1,72 @@ +################################################################################ +# +# piglit +# +################################################################################ + +PIGLIT_VERSION = 2affee53f3ad7a96f5b397a2b6d6408af8a374b0 +PIGLIT_SITE = https://gitlab.freedesktop.org/mesa/piglit.git +PIGLIT_SITE_METHOD = git +PIGLIT_LICENSE = MIT (code), \ + LGPL-2.0+ (tests/glslparsertest/glsl2/gst-gl-*), \ + LGPL-2.1+ (some tests), \ + GPL-3.0 (tests/glslparsertest/glsl2/norsetto-*), \ + GPL-2.0+ (tests/glslparsertest/glsl2/xreal-*, some other shaders), \ + BSD-3-Clause (tests/glslparsertest/shaders/*) +PIGLIT_LICENSE_FILES = COPYING licences/GPL-2 licences/GPL-3 licences/LGPL-2 + +PIGLIT_DEPENDENCIES = host-pkgconf \ + host-python-mako \ + host-python-numpy \ + host-python-six \ + libpng \ + python-mako \ + python-numpy \ + python-six \ + waffle \ + zlib + +PIGLIT_CONF_OPTS += \ + -DPIGLIT_USE_WAFFLE=ON \ + -DPIGLIT_BUILD_CL_TESTS=OFF \ + -DPIGLIT_BUILD_WGL_TESTS=OFF \ + -DPYTHON_EXECUTABLE=$(HOST_DIR)/bin/python3 + +ifeq ($(BR2_PACKAGE_XORG7),y) +# libxcb for xcb-dri2 +PIGLIT_DEPENDENCIES += \ + xlib_libX11 \ + xlib_libXext \ + xorgproto \ + $(if $(BR2_PACKAGE_LIBXCB),libxcb) +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +PIGLIT_DEPENDENCIES += libgl libdrm +PIGLIT_CONF_OPTS += -DPIGLIT_BUILD_GL_TESTS=ON +else +PIGLIT_CONF_OPTS += -DPIGLIT_BUILD_GL_TESTS=OFF +endif + +ifeq ($(BR2_PACKAGE_XORG7)$(BR2_PACKAGE_HAS_LIBGL),yy) +PIGLIT_CONF_OPTS += -DPIGLIT_BUILD_GLX_TESTS=ON +else +PIGLIT_CONF_OPTS += -DPIGLIT_BUILD_GLX_TESTS=OFF +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBEGL)$(BR2_PACKAGE_HAS_LIBGLES),yy) +PIGLIT_DEPENDENCIES += libegl +PIGLIT_CONF_OPTS += -DPIGLIT_BUILD_GLES1_TESTS=ON \ + -DPIGLIT_BUILD_GLES2_TESTS=ON \ + -DPIGLIT_BUILD_GLES3_TESTS=ON +else +PIGLIT_CONF_OPTS += -DPIGLIT_BUILD_GLES1_TESTS=OFF \ + -DPIGLIT_BUILD_GLES2_TESTS=OFF \ + -DPIGLIT_BUILD_GLES3_TESTS=OFF +endif + +ifeq ($(BR2_PACKAGE_WAYLAND),y) +PIGLIT_DEPENDENCIES += wayland libxkbcommon +endif + +$(eval $(cmake-package)) diff --git a/package/pigpio/Config.in b/package/pigpio/Config.in new file mode 100644 index 00000000..2180ab0d --- /dev/null +++ b/package/pigpio/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_PIGPIO + bool "pigpio" + depends on BR2_aarch64 || BR2_arm + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + Pigpio is a library for the Raspberry Pi which allows + control of the General Purpose Input Outputs (GPIO). + + http://abyz.me.uk/rpi/pigpio/ + +comment "pigpio needs a toolchain w/ threads, dynamic library" + depends on BR2_aarch64 || BR2_arm + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/pigpio/S50pigpio b/package/pigpio/S50pigpio new file mode 100644 index 00000000..8b7b6815 --- /dev/null +++ b/package/pigpio/S50pigpio @@ -0,0 +1,50 @@ +#!/bin/sh + +DAEMON="pigpiod" +PIDFILE="/var/run/pigpio.pid" + +PIGPIOD_ARGS="" + +[ -r "/etc/default/pigpio" ] && . "/etc/default/pigpio" + +start() { + printf 'Starting %s: ' "$DAEMON" + start-stop-daemon -S -q -x "/usr/bin/$DAEMON" -- $PIGPIOD_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/pigpio/pigpio.hash b/package/pigpio/pigpio.hash new file mode 100644 index 00000000..fecb7ccb --- /dev/null +++ b/package/pigpio/pigpio.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c5337c0b7ae888caf0262a6f476af0e2ab67065f7650148a0b21900b8d1eaed7 pigpio-79.tar.gz +sha256 6a90b88421a0d9b090e121daa11b3c6d55eed5eeb3281a2fcc454d6a28b5547c UNLICENCE diff --git a/package/pigpio/pigpio.mk b/package/pigpio/pigpio.mk new file mode 100644 index 00000000..e3497497 --- /dev/null +++ b/package/pigpio/pigpio.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# pigpio +# +################################################################################ + +PIGPIO_VERSION = 79 +PIGPIO_SITE = $(call github,joan2937,pigpio,v$(PIGPIO_VERSION)) +PIGPIO_LICENSE = Unlicense +PIGPIO_LICENSE_FILES = UNLICENCE +PIGPIO_INSTALL_STAGING = YES + +define PIGPIO_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define PIGPIO_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/pig2vcd $(TARGET_DIR)/usr/bin/pig2vcd + $(INSTALL) -D -m 0755 $(@D)/pigpiod $(TARGET_DIR)/usr/bin/pigpiod + $(INSTALL) -D -m 0755 $(@D)/pigs $(TARGET_DIR)/usr/bin/pigs + $(INSTALL) -D -m 0755 $(@D)/libpigpio.so.1 $(TARGET_DIR)/usr/lib/libpigpio.so.1 + $(INSTALL) -D -m 0755 $(@D)/libpigpiod_if.so.1 $(TARGET_DIR)/usr/lib/libpigpiod_if.so.1 + $(INSTALL) -D -m 0755 $(@D)/libpigpiod_if2.so.1 $(TARGET_DIR)/usr/lib/libpigpiod_if2.so.1 + ln -sf libpigpio.so.1 $(TARGET_DIR)/usr/lib/libpigpio.so + ln -sf libpigpiod_if.so.1 $(TARGET_DIR)/usr/lib/libpigpiod_if.so + ln -sf libpigpiod_if2.so.1 $(TARGET_DIR)/usr/lib/libpigpiod_if2.so +endef + +define PIGPIO_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0755 $(@D)/libpigpio.so.1 $(STAGING_DIR)/usr/lib/libpigpio.so.1 + $(INSTALL) -D -m 0755 $(@D)/libpigpiod_if.so.1 $(STAGING_DIR)/usr/lib/libpigpiod_if.so.1 + $(INSTALL) -D -m 0755 $(@D)/libpigpiod_if2.so.1 $(STAGING_DIR)/usr/lib/libpigpiod_if2.so.1 + $(INSTALL) -D -m 0644 $(@D)/pigpio.h $(STAGING_DIR)/usr/include/pigpio.h + $(INSTALL) -D -m 0644 $(@D)/pigpiod_if.h $(STAGING_DIR)/usr/include/pigpiod_if.h + $(INSTALL) -D -m 0644 $(@D)/pigpiod_if2.h $(STAGING_DIR)/usr/include/pigpiod_if2.h + ln -sf libpigpio.so.1 $(STAGING_DIR)/usr/lib/libpigpio.so + ln -sf libpigpiod_if.so.1 $(STAGING_DIR)/usr/lib/libpigpiod_if.so + ln -sf libpigpiod_if2.so.1 $(STAGING_DIR)/usr/lib/libpigpiod_if2.so +endef + +define PIGPIO_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/pigpio/S50pigpio \ + $(TARGET_DIR)/etc/init.d/S50pigpio +endef + +define PIGPIO_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/pigpio/pigpio.service \ + $(TARGET_DIR)/usr/lib/systemd/system/pigpio.service +endef + +$(eval $(generic-package)) diff --git a/package/pigpio/pigpio.service b/package/pigpio/pigpio.service new file mode 100644 index 00000000..135624cc --- /dev/null +++ b/package/pigpio/pigpio.service @@ -0,0 +1,10 @@ +[Unit] +Description=Pigpio daemon +After=network.target + +[Service] +EnvironmentFile=-/etc/default/pigpio +ExecStart=/usr/bin/pigpiod -g $PIGPIOD_ARGS + +[Install] +WantedBy=multi-user.target diff --git a/package/pigz/Config.in b/package/pigz/Config.in new file mode 100644 index 00000000..af229060 --- /dev/null +++ b/package/pigz/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_PIGZ + bool "pigz" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_ZLIB + help + pigz, which stands for parallel implementation of gzip, is a + fully functional replacement for gzip that exploits multiple + processors and multiple cores to the hilt when compressing + data. + + http://www.zlib.net/pigz/ + +comment "pigz needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/pigz/Config.in.host b/package/pigz/Config.in.host new file mode 100644 index 00000000..9903cada --- /dev/null +++ b/package/pigz/Config.in.host @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HOST_PIGZ + bool "host pigz" + help + pigz, which stands for parallel implementation of gzip, is a + fully functional replacement for gzip that exploits multiple + processors and multiple cores to the hilt when compressing + data. + + http://www.zlib.net/pigz/ diff --git a/package/pigz/pigz.hash b/package/pigz/pigz.hash new file mode 100644 index 00000000..d09930b6 --- /dev/null +++ b/package/pigz/pigz.hash @@ -0,0 +1,5 @@ +# From http://zlib.net/pigz +sha256 eb872b4f0e1f0ebe59c9f7bd8c506c4204893ba6a8492de31df416f0d5170fd0 pigz-2.8.tar.gz + +# Locally calculated +sha256 328634933a65dbc7f97a0f51df52741dc67f593bbe9eccabc9eedc6934c4983b README diff --git a/package/pigz/pigz.mk b/package/pigz/pigz.mk new file mode 100644 index 00000000..e3273c71 --- /dev/null +++ b/package/pigz/pigz.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# pigz +# +################################################################################ + +PIGZ_VERSION = 2.8 +PIGZ_SITE = http://zlib.net/pigz +PIGZ_DEPENDENCIES = zlib +HOST_PIGZ_DEPENDENCIES = host-zlib +PIGZ_LICENSE = Zlib +PIGZ_LICENSE_FILES = README +PIGZ_CPE_ID_VENDOR = zlib + +define PIGZ_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define HOST_PIGZ_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) +endef + +define PIGZ_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/pigz $(TARGET_DIR)/usr/bin/pigz +endef + +define HOST_PIGZ_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/pigz $(HOST_DIR)/bin/pigz +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/pimd/Config.in b/package/pimd/Config.in new file mode 100644 index 00000000..718f84f4 --- /dev/null +++ b/package/pimd/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PIMD + bool "pimd" + depends on BR2_USE_MMU # fork() + help + pimd is a lightweight stand-alone PIM-SM v2 multicast routing + daemon. + + http://troglobit.com/projects/pimd/ diff --git a/package/pimd/pimd.hash b/package/pimd/pimd.hash new file mode 100644 index 00000000..ae79d771 --- /dev/null +++ b/package/pimd/pimd.hash @@ -0,0 +1,6 @@ +# Locally computed: +sha256 c77a9812751f114490a28a6839b16aac8b020c8d9fd6aa22bf3880c054e19f1d pimd-2.3.2.tar.gz + +# Hash for license files: +sha256 3379436c16caccdef9b40a49fbdfdbb45aad8ecb05870834490b8fb080126009 LICENSE +sha256 4328a21f0822caa9976356623118bcdcc9970c7a0f9a3deeba23c779b7cfb5d1 LICENSE.mrouted diff --git a/package/pimd/pimd.mk b/package/pimd/pimd.mk new file mode 100644 index 00000000..8abfbd56 --- /dev/null +++ b/package/pimd/pimd.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# pimd +# +################################################################################ + +PIMD_VERSION = 2.3.2 +PIMD_SITE = https://github.com/troglobit/pimd/releases/download/$(PIMD_VERSION) + +PIMD_LICENSE = BSD-3-Clause +PIMD_LICENSE_FILES = LICENSE LICENSE.mrouted + +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC)$(BR2_TOOLCHAIN_USES_MUSL),y) +PIMD_CONF_OPTS += --embedded-libc +endif + +# The configure script is not autoconf based, so we use the +# generic-package infrastructure +define PIMD_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + ./configure $(PIMD_CONF_OPTS) \ + ) +endef + +define PIMD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CROSS=$(TARGET_CROSS) \ + CC=$(TARGET_CC) LDFLAGS="$(TARGET_LDFLAGS)" -C $(@D) +endef + +define PIMD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) \ + prefix=/usr -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/pinentry/Config.in b/package/pinentry/Config.in new file mode 100644 index 00000000..bd5e3af5 --- /dev/null +++ b/package/pinentry/Config.in @@ -0,0 +1,93 @@ +menuconfig BR2_PACKAGE_PINENTRY + bool "pinentry" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error + depends on BR2_USE_MMU # libassuan + select BR2_PACKAGE_LIBASSUAN + select BR2_PACKAGE_LIBGPG_ERROR + # At least one backend is needed to avoid build breakage + select BR2_PACKAGE_PINENTRY_NCURSES if \ + !BR2_PACKAGE_PINENTRY_GTK2 && \ + !BR2_PACKAGE_PINENTRY_QT5 + help + A collection of simple PIN or pass-phrase entry dialogs + + https://www.gnupg.org/related_software/pinentry/ + +if BR2_PACKAGE_PINENTRY + +config BR2_PACKAGE_PINENTRY_EFL + bool "pinentry-efl" + depends on BR2_PACKAGE_EFL + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_EFL_X_XLIB + help + The pinentry-efl tool + +comment "pinentry-efl needs efl and X" + depends on !BR2_PACKAGE_EFL || !BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_PINENTRY_FLTK + bool "pinentry-fltk" + depends on BR2_USE_MMU # fltk + depends on BR2_INSTALL_LIBSTDCPP # fltk + depends on BR2_PACKAGE_XORG7 # fltk + select BR2_PACKAGE_FLTK + help + The pinentry-fltk tool + +comment "pinentry-fltk needs X and a toolchain w/ C++" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_XORG7 || !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_PINENTRY_NCURSES + bool "pinentry-ncurses" + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + The pinentry-ncurses tool + +config BR2_PACKAGE_PINENTRY_GTK2 + bool "pinentry-gtk2" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libgtk2 -> pango -> harfbuzz + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libgtk2 -> pango -> harfbuzz + select BR2_PACKAGE_LIBGTK2 + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + The pinentry-gtk2 tool + +comment "pinentry-gtk2 needs X and a toolchain w/ wchar, threads, C++, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_PACKAGE_XORG7 || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_PINENTRY_QT5 + bool "pinentry-qt5" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_HOST_GCC_AT_LEAST_5 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 + depends on !BR2_ARM_CPU_ARMV4 + depends on !BR2_arc + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_QT5 + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_WIDGETS + help + The pinentry-qt5 tool + +comment "pinentry-qt5 needs a host gcc >= 5.0, and a toolchain w/ wchar, NPTL, gcc >= 5.0, C++, dynamic library" + depends on !BR2_arc + depends on !BR2_ARM_CPU_ARMV4 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_TOOLCHAIN_GCC_AT_LEAST_5 || \ + BR2_STATIC_LIBS || !BR2_HOST_GCC_AT_LEAST_5 + +endif diff --git a/package/pinentry/pinentry.hash b/package/pinentry/pinentry.hash new file mode 100644 index 00000000..3f02eec7 --- /dev/null +++ b/package/pinentry/pinentry.hash @@ -0,0 +1,5 @@ +# From https://www.gnupg.org/download/integrity_check.html +sha1 fb0bbb88211558c8f7e652b4b6a675b1972fba04 pinentry-1.3.1.tar.bz2 +sha256 bc72ee27c7239007ab1896c3c2fae53b076e2c9bd2483dc2769a16902bce8c04 pinentry-1.3.1.tar.bz2 +# Locally computed +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/pinentry/pinentry.mk b/package/pinentry/pinentry.mk new file mode 100644 index 00000000..7482a93d --- /dev/null +++ b/package/pinentry/pinentry.mk @@ -0,0 +1,77 @@ +################################################################################ +# +# pinentry +# +################################################################################ + +PINENTRY_VERSION = 1.3.1 +PINENTRY_SOURCE = pinentry-$(PINENTRY_VERSION).tar.bz2 +PINENTRY_SITE = https://www.gnupg.org/ftp/gcrypt/pinentry +PINENTRY_LICENSE = GPL-2.0+ +PINENTRY_LICENSE_FILES = COPYING +PINENTRY_DEPENDENCIES = \ + libassuan libgpg-error \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) \ + host-pkgconf +PINENTRY_CONF_OPTS += \ + --with-libassuan-prefix=$(STAGING_DIR)/usr \ + --with-libgpg-error-prefix=$(STAGING_DIR)/usr \ + --without-libcap # requires PAM + +# Force the path to "gpgrt-config" (from the libgpg-error package) to +# avoid using the one on host, if present. +PINENTRY_CONF_ENV += GPGRT_CONFIG=$(STAGING_DIR)/usr/bin/gpgrt-config + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +PINENTRY_CONF_ENV += LIBS=-latomic +endif + +ifeq ($(BR2_PACKAGE_LIBSECRET),y) +PINENTRY_CONF_OPTS += --enable-libsecret +PINENTRY_DEPENDENCIES += libsecret +else +PINENTRY_CONF_OPTS += --disable-libsecret +endif + +# pinentry-efl backend +ifeq ($(BR2_PACKAGE_PINENTRY_EFL),y) +PINENTRY_CONF_OPTS += --enable-pinentry-efl +PINENTRY_DEPENDENCIES += efl +else +PINENTRY_CONF_OPTS += --disable-pinentry-efl +endif + +# pinentry-fltk backend +ifeq ($(BR2_PACKAGE_PINENTRY_FLTK),y) +PINENTRY_CONF_ENV += ac_cv_path_FLTK_CONFIG=$(STAGING_DIR)/usr/bin/fltk-config +PINENTRY_CONF_OPTS += --enable-pinentry-fltk +PINENTRY_DEPENDENCIES += fltk +else +PINENTRY_CONF_OPTS += --disable-pinentry-fltk +endif + +# pinentry-ncurses backend +ifeq ($(BR2_PACKAGE_PINENTRY_NCURSES),y) +PINENTRY_CONF_OPTS += --enable-ncurses --with-ncurses-include-dir=none +PINENTRY_DEPENDENCIES += ncurses +else +PINENTRY_CONF_OPTS += --disable-ncurses +endif + +# pinentry-gtk2 backend +ifeq ($(BR2_PACKAGE_PINENTRY_GTK2),y) +PINENTRY_CONF_OPTS += --enable-pinentry-gtk2 +PINENTRY_DEPENDENCIES += libgtk2 +else +PINENTRY_CONF_OPTS += --disable-pinentry-gtk2 +endif + +# pinentry-qt5 backend +ifeq ($(BR2_PACKAGE_PINENTRY_QT5),y) +PINENTRY_CONF_OPTS += --enable-pinentry-qt +PINENTRY_DEPENDENCIES += qt5base +else +PINENTRY_CONF_OPTS += --disable-pinentry-qt +endif + +$(eval $(autotools-package)) diff --git a/package/pipewire-media-session/Config.in b/package/pipewire-media-session/Config.in new file mode 100644 index 00000000..affbc00c --- /dev/null +++ b/package/pipewire-media-session/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PIPEWIRE_MEDIA_SESSION + bool "pipewire media-session" + depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib, dbus + depends on BR2_USE_MMU # dbus + depends on BR2_PACKAGE_PIPEWIRE + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_UCM + select BR2_PACKAGE_DBUS + help + Build pipewire media-session support diff --git a/package/pipewire-media-session/pipewire-media-session.hash b/package/pipewire-media-session/pipewire-media-session.hash new file mode 100644 index 00000000..e6b176ee --- /dev/null +++ b/package/pipewire-media-session/pipewire-media-session.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 26e21852e0834a4418b40eae342ac5178dfe40342b9c5afe204d43ef8aafa14e media-session-0.4.2.tar.bz2 +sha256 8909c319a7e27dbb33a15b9035f89ab3b7b2f6a12f8bcddc755206a8db1ada44 COPYING +sha256 77b9c867237ef919e33c0fdbcf22ab84b1cf24a63f9431ec68759026b658c994 LICENSE diff --git a/package/pipewire-media-session/pipewire-media-session.mk b/package/pipewire-media-session/pipewire-media-session.mk new file mode 100644 index 00000000..cc7317f9 --- /dev/null +++ b/package/pipewire-media-session/pipewire-media-session.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# pipewire-media-session +# +################################################################################ + +PIPEWIRE_MEDIA_SESSION_VERSION = 0.4.2 +PIPEWIRE_MEDIA_SESSION_SOURCE = media-session-$(PIPEWIRE_MEDIA_SESSION_VERSION).tar.bz2 +PIPEWIRE_MEDIA_SESSION_SITE = https://gitlab.freedesktop.org/pipewire/media-session/-/archive/$(PIPEWIRE_MEDIA_SESSION_VERSION) +PIPEWIRE_MEDIA_SESSION_LICENSE = MIT +PIPEWIRE_MEDIA_SESSION_LICENSE_FILES = COPYING LICENSE +PIPEWIRE_MEDIA_SESSION_INSTALL_STAGING = YES +PIPEWIRE_MEDIA_SESSION_DEPENDENCIES = \ + host-pkgconf \ + alsa-lib \ + dbus \ + pipewire \ + $(TARGET_NLS_DEPENDENCIES) + +PIPEWIRE_MEDIA_SESSION_CONF_OPTS = \ + -Ddocs=disabled \ + -Dtests=disabled \ + -Dinstalled_tests=disabled + +PIPEWIRE_MEDIA_SESSION_MODULE_SETS_LIST = alsa + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +PIPEWIRE_MEDIA_SESSION_DEPENDENCIES += systemd +PIPEWIRE_MEDIA_SESSION_CONF_OPTS += \ + -Dsystemd=enabled \ + -Dsystemd-system-service=enabled \ + -Dsystemd-user-service=enabled +else +PIPEWIRE_MEDIA_SESSION_CONF_OPTS += \ + -Dsystemd=disabled \ + -Dsystemd-system-service=disabled \ + -Dsystemd-user-service=disabled +endif + +ifeq ($(BR2_PACKAGE_JACK2),y) +PIPEWIRE_MEDIA_SESSION_DEPENDENCIES += jack2 +PIPEWIRE_MEDIA_SESSION_MODULE_SETS_LIST += jack +endif + +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +PIPEWIRE_MEDIA_SESSION_DEPENDENCIES += pulseaudio +PIPEWIRE_MEDIA_SESSION_MODULE_SETS_LIST += pulseaudio +endif + +PIPEWIRE_MEDIA_SESSION_CONF_OPTS += -Dwith-module-sets='$(subst $(space),$(comma),$(PIPEWIRE_MEDIA_SESSION_MODULE_SETS_LIST))' + +$(eval $(meson-package)) diff --git a/package/pipewire/Config.in b/package/pipewire/Config.in new file mode 100644 index 00000000..9d2de6c8 --- /dev/null +++ b/package/pipewire/Config.in @@ -0,0 +1,67 @@ +config BR2_PACKAGE_PIPEWIRE + bool "pipewire" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # pthread_setname_np() + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 + select BR2_PACKAGE_ALSA_LIB_UCM if BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_SEQ if BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_AUDIO if BR2_PACKAGE_BLUEZ5_UTILS # runtime + help + PipeWire is a server and user space API to deal with + multimedia pipelines. + + https://pipewire.org/ + +if BR2_PACKAGE_PIPEWIRE + +config BR2_PACKAGE_PIPEWIRE_COMPRESS_OFFLOAD + bool "pipewire Compress-Offload" + depends on !BR2_STATIC_LIBS # tinycompress + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7 + select BR2_PACKAGE_TINYCOMPRESS + help + Enable ALSA Compress-Offload support + +comment "pipewire Compress-Offload needs a toolchain w/ dynamic library, headers >= 5.7" + depends on BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7 + +config BR2_PACKAGE_PIPEWIRE_EXAMPLES + bool "pipewire examples" + help + Build pipewire examples + +config BR2_PACKAGE_PIPEWIRE_GSTREAMER + bool "pipewire gstreamer plugins" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_GSTREAMER1 + select BR2_PACKAGE_GST1_PLUGINS_BASE + help + Build GStreamer plugins + +comment "pipewire gstreamer support needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_PIPEWIRE_V4L2 + bool "pipewire v4l2 plugin" + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 + help + Build v4l2 plugin + +comment "pipewire v4l2 support needs udev and a toolchain w/ headers >= 3.18" + depends on !BR2_PACKAGE_HAS_UDEV || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 + +endif + +comment "pipewire needs a toolchain w/ dynamic library, NPTL, gcc >= 5" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 diff --git a/package/pipewire/pipewire.hash b/package/pipewire/pipewire.hash new file mode 100644 index 00000000..3370d866 --- /dev/null +++ b/package/pipewire/pipewire.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 2b6e0c4d2e544f5030fa7f4ecf1edd9e5eed15dda1c97135e8a1fded9f3425fe pipewire-0.3.81.tar.bz2 +sha256 8909c319a7e27dbb33a15b9035f89ab3b7b2f6a12f8bcddc755206a8db1ada44 COPYING +sha256 be4be5d77424833edf31f53fc1f1cecb6996b9e2d747d9e6fb8f878362ebc92b LICENSE diff --git a/package/pipewire/pipewire.mk b/package/pipewire/pipewire.mk new file mode 100644 index 00000000..f0f3cd84 --- /dev/null +++ b/package/pipewire/pipewire.mk @@ -0,0 +1,246 @@ +################################################################################ +# +# pipewire +# +################################################################################ + +PIPEWIRE_VERSION = 0.3.81 +PIPEWIRE_SOURCE = pipewire-$(PIPEWIRE_VERSION).tar.bz2 +PIPEWIRE_SITE = https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/$(PIPEWIRE_VERSION) +PIPEWIRE_LICENSE = MIT, LGPL-2.1+ (libspa-alsa), GPL-2.0 (libjackserver) +PIPEWIRE_LICENSE_FILES = COPYING LICENSE +PIPEWIRE_INSTALL_STAGING = YES +PIPEWIRE_DEPENDENCIES = host-pkgconf $(TARGET_NLS_DEPENDENCIES) +PIPEWIRE_LDFLAGS = $(TARGET_NLS_LIBS) + +PIPEWIRE_CONF_OPTS += \ + -Ddocs=disabled \ + -Dman=disabled \ + -Dtests=disabled \ + -Dspa-plugins=enabled \ + -Daudiomixer=enabled \ + -Daudioconvert=enabled \ + -Dbluez5-codec-lc3=disabled \ + -Dbluez5-codec-lc3plus=disabled \ + -Dcontrol=enabled \ + -Daudiotestsrc=enabled \ + -Dsupport=enabled \ + -Devl=disabled \ + -Dtest=disabled \ + -Dvideoconvert=enabled \ + -Dvideotestsrc=enabled \ + -Dvolume=enabled \ + -Dvulkan=disabled \ + -Dsession-managers=[] \ + -Dlegacy-rtkit=false \ + -Davb=disabled \ + -Dlibcanberra=disabled \ + -Dlibmysofa=disabled \ + -Dlibffado=disabled \ + -Dflatpak=disabled + +ifeq ($(BR2_PACKAGE_DBUS),y) +PIPEWIRE_CONF_OPTS += -Ddbus=enabled +PIPEWIRE_DEPENDENCIES += dbus +else +PIPEWIRE_CONF_OPTS += -Ddbus=disabled +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +PIPEWIRE_CONF_OPTS += -Dudev=enabled +PIPEWIRE_DEPENDENCIES += udev +else +PIPEWIRE_CONF_OPTS += -Dudev=disabled +endif + +ifeq ($(BR2_PACKAGE_PIPEWIRE_EXAMPLES),y) +PIPEWIRE_CONF_OPTS += -Dexamples=enabled +else +PIPEWIRE_CONF_OPTS += -Dexamples=disabled +endif + +ifeq ($(BR2_PACKAGE_PIPEWIRE_GSTREAMER),y) +PIPEWIRE_CONF_OPTS += -Dgstreamer=enabled +PIPEWIRE_DEPENDENCIES += libglib2 gstreamer1 gst1-plugins-base +else +PIPEWIRE_CONF_OPTS += -Dgstreamer=disabled +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +PIPEWIRE_CONF_OPTS += \ + -Dsystemd=enabled \ + -Dsystemd-system-service=enabled \ + -Dsystemd-user-service=enabled +PIPEWIRE_DEPENDENCIES += systemd +else +PIPEWIRE_CONF_OPTS += \ + -Dsystemd=disabled \ + -Dsystemd-system-service=disabled \ + -Dsystemd-user-service=disabled +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +PIPEWIRE_CONF_OPTS += -Dpipewire-alsa=enabled +PIPEWIRE_DEPENDENCIES += alsa-lib +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +PIPEWIRE_CONF_OPTS += -Dalsa=enabled +else +PIPEWIRE_CONF_OPTS += -Dalsa=disabled +endif +else +PIPEWIRE_CONF_OPTS += -Dalsa=disabled -Dpipewire-alsa=disabled +endif + +ifeq ($(BR2_PACKAGE_AVAHI_LIBAVAHI_CLIENT),y) +PIPEWIRE_CONF_OPTS += -Davahi=enabled +PIPEWIRE_DEPENDENCIES += avahi +else +PIPEWIRE_CONF_OPTS += -Davahi=disabled +endif + +ifeq ($(BR2_PACKAGE_JACK2),y) +PIPEWIRE_CONF_OPTS += -Dpipewire-jack=enabled -Djack=enabled +PIPEWIRE_DEPENDENCIES += jack2 +else +PIPEWIRE_CONF_OPTS += -Dpipewire-jack=disabled -Djack=disabled +endif + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS)$(BR2_PACKAGE_SBC),yy) +PIPEWIRE_CONF_OPTS += -Dbluez5=enabled +PIPEWIRE_DEPENDENCIES += bluez5_utils sbc +ifeq ($(BR2_PACKAGE_MODEM_MANAGER),y) +PIPEWIRE_CONF_OPTS += -Dbluez5-backend-native-mm=enabled +PIPEWIRE_DEPENDENCIES += modem-manager +else +PIPEWIRE_CONF_OPTS += -Dbluez5-backend-native-mm=disabled +endif +ifeq ($(BR2_PACKAGE_OPUS),y) +PIPEWIRE_CONF_OPTS += -Dbluez5-codec-opus=enabled +PIPEWIRE_DEPENDENCIES += opus +else +PIPEWIRE_CONF_OPTS += -Dbluez5-codec-opus=disabled +endif +else +PIPEWIRE_CONF_OPTS += -Dbluez5=disabled -Dbluez5-codec-opus=disabled +endif + +ifeq ($(BR2_PACKAGE_FFMPEG),y) +PIPEWIRE_CONF_OPTS += -Dffmpeg=enabled -Dpw-cat-ffmpeg=enabled +PIPEWIRE_DEPENDENCIES += ffmpeg +else +PIPEWIRE_CONF_OPTS += -Dffmpeg=disabled -Dpw-cat-ffmpeg=disabled +endif + +ifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y) +PIPEWIRE_DEPENDENCIES += ncurses +endif + +ifeq ($(BR2_PACKAGE_PIPEWIRE_V4L2),y) +PIPEWIRE_CONF_OPTS += -Dpipewire-v4l2=enabled -Dv4l2=enabled +else +PIPEWIRE_CONF_OPTS += -Dpipewire-v4l2=disabled -Dv4l2=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBCAMERA)$(BR2_PACKAGE_LIBDRM)$(BR2_PACKAGE_HAS_UDEV),yyy) +PIPEWIRE_CONF_OPTS += -Dlibcamera=enabled +PIPEWIRE_DEPENDENCIES += libcamera libdrm +else +PIPEWIRE_CONF_OPTS += -Dlibcamera=disabled +endif + +ifeq ($(BR2_PACKAGE_LILV),y) +PIPEWIRE_CONF_OPTS += -Dlv2=enabled +PIPEWIRE_DEPENDENCIES += lilv +else +PIPEWIRE_CONF_OPTS += -Dlv2=disabled +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) +PIPEWIRE_CONF_OPTS += -Dx11=enabled +PIPEWIRE_DEPENDENCIES += xlib_libX11 +else +PIPEWIRE_CONF_OPTS += -Dx11=disabled +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y) +PIPEWIRE_CONF_OPTS += -Dx11-xfixes=enabled +PIPEWIRE_DEPENDENCIES += xlib_libXfixes +else +PIPEWIRE_CONF_OPTS += -Dx11-xfixes=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +PIPEWIRE_CONF_OPTS += -Dgsettings=enabled +PIPEWIRE_DEPENDENCIES += libglib2 +else +PIPEWIRE_CONF_OPTS += -Dgsettings=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBUSB),y) +PIPEWIRE_CONF_OPTS += -Dlibusb=enabled +PIPEWIRE_DEPENDENCIES += libusb +else +PIPEWIRE_CONF_OPTS += -Dlibusb=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBSNDFILE),y) +PIPEWIRE_CONF_OPTS += -Dpw-cat=enabled -Dsndfile=enabled +PIPEWIRE_DEPENDENCIES += libsndfile +else +PIPEWIRE_CONF_OPTS += -Dpw-cat=disabled -Dsndfile=disabled +endif + +ifeq ($(BR2_PACKAGE_OPUS),y) +PIPEWIRE_CONF_OPTS += -Dopus=enabled +PIPEWIRE_DEPENDENCIES += opus +else +PIPEWIRE_CONF_OPTS += -Dopus=disabled +endif + +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +PIPEWIRE_CONF_OPTS += -Dlibpulse=enabled +PIPEWIRE_DEPENDENCIES += pulseaudio +else +PIPEWIRE_CONF_OPTS += -Dlibpulse=disabled +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +PIPEWIRE_CONF_OPTS += -Dreadline=enabled +PIPEWIRE_DEPENDENCIES += readline +else +PIPEWIRE_CONF_OPTS += -Dreadline=disabled +endif + +ifeq ($(BR2_PACKAGE_SDL2),y) +PIPEWIRE_DEPENDENCIES += sdl2 +PIPEWIRE_CONF_OPTS += -Dsdl2=enabled +else +PIPEWIRE_CONF_OPTS += -Dsdl2=disabled +endif + +ifeq ($(BR2_PACKAGE_PIPEWIRE_COMPRESS_OFFLOAD),y) +PIPEWIRE_CONF_OPTS += -Dcompress-offload=enabled +PIPEWIRE_DEPENDENCIES += tinycompress +else +PIPEWIRE_CONF_OPTS += -Dcompress-offload=disabled +endif + +ifeq ($(BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING),y) +PIPEWIRE_CONF_OPTS += -Decho-cancel-webrtc=enabled +PIPEWIRE_DEPENDENCIES += webrtc-audio-processing +else +PIPEWIRE_CONF_OPTS += -Decho-cancel-webrtc=disabled +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +PIPEWIRE_CONF_OPTS += -Draop=enabled +PIPEWIRE_DEPENDENCIES += openssl +else +PIPEWIRE_CONF_OPTS += -Draop=disabled +endif + +define PIPEWIRE_USERS + pipewire -1 pipewire -1 * - - audio,video PipeWire System Daemon +endef + +$(eval $(meson-package)) diff --git a/package/pistache/0001-src-common-transport.cc-fallback-value-for-RUSAGE_TH.patch b/package/pistache/0001-src-common-transport.cc-fallback-value-for-RUSAGE_TH.patch new file mode 100644 index 00000000..327933e2 --- /dev/null +++ b/package/pistache/0001-src-common-transport.cc-fallback-value-for-RUSAGE_TH.patch @@ -0,0 +1,33 @@ +From 5feed6d2f86750bfe1e7c26d6fd4e8d2195ea81f Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 4 Aug 2022 19:54:23 +0200 +Subject: [PATCH] src/common/transport.cc: fallback value for RUSAGE_THREAD + +uClibc-ng currently does not define RUSAGE_THREAD, so let's add a +fallback value until it gets fixed in uClibc-ng. The value is the same +on all Linux systems, regardless of the CPU architecture. + +Signed-off-by: Thomas Petazzoni +Upstream bug: https://mailman.openadk.org/mailman3/hyperkitty/list/devel@uclibc-ng.org/thread/MEXOUSFSH46UFS3AEMEIEPTL5U4HVEFL/ +--- + src/common/transport.cc | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/common/transport.cc b/src/common/transport.cc +index 62efb8c..0f3abb0 100644 +--- a/src/common/transport.cc ++++ b/src/common/transport.cc +@@ -515,6 +515,10 @@ namespace Pistache::Tcp + + rusage now; + ++#if !defined(RUSAGE_THREAD) ++#define RUSAGE_THREAD 1 ++#endif ++ + auto res = getrusage(RUSAGE_THREAD, &now); + if (res == -1) + loadRequest_.reject(std::runtime_error("Could not compute usage")); +-- +2.37.1 + diff --git a/package/pistache/0002-src-server-listener.cc-fix-libressl-build.patch b/package/pistache/0002-src-server-listener.cc-fix-libressl-build.patch new file mode 100644 index 00000000..f2fe2183 --- /dev/null +++ b/package/pistache/0002-src-server-listener.cc-fix-libressl-build.patch @@ -0,0 +1,38 @@ +From 656bff21c1d20b25058da9dbc27d28ad2ac7ae6e Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 25 Feb 2023 18:09:39 +0100 +Subject: [PATCH] src/server/listener.cc: fix libressl build + +Fix the following libressl build failure: + +../src/server/listener.cc: In member function 'void Pistache::Tcp::Listener::setupSSLAuth(const std::string&, const std::string&, int (*)(int, void*))': +../src/server/listener.cc:582:29: error: 'SSL_verify_cb' was not declared in this scope; did you mean 'RSA_verify'? + 582 | (SSL_verify_cb)cb + | ^~~~~~~~~~~~~ + | RSA_verify + +Fixes: + - http://autobuild.buildroot.org/results/066fc078980e5216f38411eee455088e15fa1101 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/pistacheio/pistache/pull/1124] +--- + src/server/listener.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/server/listener.cc b/src/server/listener.cc +index 38d2661..c09cb36 100644 +--- a/src/server/listener.cc ++++ b/src/server/listener.cc +@@ -609,7 +609,7 @@ namespace Pistache::Tcp + SSL_CTX_set_verify(GetSSLContext(ssl_ctx_), + SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT | SSL_VERIFY_CLIENT_ONCE, + /* Callback type did change in 1.0.1 */ +-#if OPENSSL_VERSION_NUMBER < 0x10100000L ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + (int (*)(int, X509_STORE_CTX*))cb + #else + (SSL_verify_cb)cb +-- +2.39.1 + diff --git a/package/pistache/0003-Add-missing-cstdint-header-include-1142.patch b/package/pistache/0003-Add-missing-cstdint-header-include-1142.patch new file mode 100644 index 00000000..3451e4aa --- /dev/null +++ b/package/pistache/0003-Add-missing-cstdint-header-include-1142.patch @@ -0,0 +1,23 @@ +From dabe9fcd3eaaa6b0b8723369b2565778341630c0 Mon Sep 17 00:00:00 2001 +From: a-andre <13609565+a-andre@users.noreply.github.com> +Date: Thu, 29 Jun 2023 16:34:11 +0200 +Subject: [PATCH] Add missing cstdint header include (#1142) + +Upstream: https://github.com/pistacheio/pistache/commit/dabe9fcd3eaaa6b0b8723369b2565778341630c0 +Signed-off-by: Fabrice Fontaine +--- + include/pistache/flags.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/include/pistache/flags.h b/include/pistache/flags.h +index 9be2b32bb..6adcc74bc 100644 +--- a/include/pistache/flags.h ++++ b/include/pistache/flags.h +@@ -13,6 +13,7 @@ + #pragma once + + #include ++#include + #include + #include + diff --git a/package/pistache/Config.in b/package/pistache/Config.in new file mode 100644 index 00000000..e66c24d8 --- /dev/null +++ b/package/pistache/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_PISTACHE + bool "pistache" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17, std::optional + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_RAPIDJSON + help + Pistache is a modern and elegant HTTP and REST framework + for C++. It is entirely written in pure C++17 and provides + a clear and pleasant API. + + https://github.com/oktal/pistache + +comment "pistache needs a toolchain w/ C++, gcc >= 7, NPTL, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + !BR2_USE_WCHAR diff --git a/package/pistache/pistache.hash b/package/pistache/pistache.hash new file mode 100644 index 00000000..9a2cd1d1 --- /dev/null +++ b/package/pistache/pistache.hash @@ -0,0 +1,3 @@ +#locally computed +sha256 f2b3e8b2581cfed5e036d1b97a9b97dc7022b3ddaab69c4691238faff3199bc1 pistache-3ec9d7c4f8b828fdd391550fff81b01e72dd6269.tar.gz +sha256 c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08 LICENSE diff --git a/package/pistache/pistache.mk b/package/pistache/pistache.mk new file mode 100644 index 00000000..f4de5e3b --- /dev/null +++ b/package/pistache/pistache.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# pistache +# +################################################################################ + +PISTACHE_VERSION = 3ec9d7c4f8b828fdd391550fff81b01e72dd6269 +PISTACHE_SITE = $(call github,oktal,pistache,$(PISTACHE_VERSION)) +PISTACHE_LICENSE = Apache-2.0 +PISTACHE_LICENSE_FILES = LICENSE + +PISTACHE_INSTALL_STAGING = YES +PISTACHE_DEPENDENCIES = rapidjson + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +PISTACHE_DEPENDENCIES += openssl +PISTACHE_CONF_OPTS += -DPISTACHE_USE_SSL=true +PISTACHE_CONF_OPTS += -DPISTACHE_ENABLE_NETWORK_TESTS=false +else +PISTACHE_CONF_OPTS += -DPISTACHE_USE_SSL=false +endif + +$(eval $(meson-package)) diff --git a/package/pixiewps/Config.in b/package/pixiewps/Config.in new file mode 100644 index 00000000..05719f42 --- /dev/null +++ b/package/pixiewps/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PIXIEWPS + bool "pixiewps" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Pixie WPS is a C based tool to audit networks against the so + called "Pixie Dust" attack. + + https://github.com/wiire-a/pixiewps/wiki + +comment "pixiewps needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/pixiewps/pixiewps.hash b/package/pixiewps/pixiewps.hash new file mode 100644 index 00000000..99a09741 --- /dev/null +++ b/package/pixiewps/pixiewps.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 d3d3cf57851e3e734fb1797aa078239ef161d1cbeffc4438497d58a425ef22a2 pixiewps-9e5bdc6c86c8487b2a6107d5ab3559ed5c738c59.tar.gz +sha256 ccb349b4132ed7737f25e5adebfe61f3d52dca33708df1e50352320438d1d4c2 LICENSE.md diff --git a/package/pixiewps/pixiewps.mk b/package/pixiewps/pixiewps.mk new file mode 100644 index 00000000..1f84bbeb --- /dev/null +++ b/package/pixiewps/pixiewps.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# pixiewps +# +################################################################################ + +PIXIEWPS_VERSION = 9e5bdc6c86c8487b2a6107d5ab3559ed5c738c59 +PIXIEWPS_SITE = $(call github,wiire-a,pixiewps,$(PIXIEWPS_VERSION)) +PIXIEWPS_LICENSE = GPL-3.0+ +PIXIEWPS_LICENSE_FILES = LICENSE.md + +define PIXIEWPS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define PIXIEWPS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) \ + PREFIX=/usr -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/pixman/0001-Disable-tests.patch b/package/pixman/0001-Disable-tests.patch new file mode 100644 index 00000000..dfadd69a --- /dev/null +++ b/package/pixman/0001-Disable-tests.patch @@ -0,0 +1,29 @@ +From 9b8132738c364fc3c886e81e7d383aaff80dc867 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sat, 5 Dec 2015 12:00:53 +0100 +Subject: [PATCH] Disable tests + +Tests are causing build failures on some architectures that are missing +a proper fenv.h, so just disable them. + +Signed-off-by: "Yann E. MORIN" + +--- +Status: Buildroot specific, not suitable for upstream in this state. +--- + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 5137c9e..eae79fd 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -1,4 +1,4 @@ +-SUBDIRS = pixman demos test ++SUBDIRS = pixman demos + + pkgconfigdir=$(libdir)/pkgconfig + pkgconfig_DATA=pixman-1.pc +-- +1.9.1 + diff --git a/package/pixman/Config.in b/package/pixman/Config.in new file mode 100644 index 00000000..aa2a68f6 --- /dev/null +++ b/package/pixman/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PIXMAN + bool "pixman" + help + Cairo pixel manager + + http://cairographics.org/releases/ diff --git a/package/pixman/pixman.hash b/package/pixman/pixman.hash new file mode 100644 index 00000000..78407bf0 --- /dev/null +++ b/package/pixman/pixman.hash @@ -0,0 +1,6 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003228.html +sha256 5747d2ec498ad0f1594878cc897ef5eb6c29e91c53b899f7f71b506785fc1376 pixman-0.42.2.tar.xz +sha512 3476e2676e66756b1af61b1e532cd80c985c191fb7956eb01702b419726cce99e79163b7f287f74f66414680e7396d13c3fee525cd663f12b6ac4877070ff4e8 pixman-0.42.2.tar.xz + +# Locally computed +sha256 fac9270f0987b96ff4533fca3548c633e02083cbba4a0172a3b149b2e4019793 COPYING diff --git a/package/pixman/pixman.mk b/package/pixman/pixman.mk new file mode 100644 index 00000000..8a4f1631 --- /dev/null +++ b/package/pixman/pixman.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# pixman +# +################################################################################ + +PIXMAN_VERSION = 0.42.2 +PIXMAN_SOURCE = pixman-$(PIXMAN_VERSION).tar.xz +PIXMAN_SITE = https://xorg.freedesktop.org/releases/individual/lib +PIXMAN_LICENSE = MIT +PIXMAN_LICENSE_FILES = COPYING +PIXMAN_CPE_ID_VENDOR = pixman + +PIXMAN_INSTALL_STAGING = YES +PIXMAN_DEPENDENCIES = host-pkgconf +HOST_PIXMAN_DEPENDENCIES = host-pkgconf + +# For 0001-Disable-tests.patch +PIXMAN_AUTORECONF = YES + +# don't build gtk based demos +PIXMAN_CONF_OPTS = \ + --disable-gtk \ + --disable-loongson-mmi \ + --disable-arm-iwmmxt + +# Affects only tests, and we don't build tests (see +# 0001-Disable-tests.patch). See +# https://gitlab.freedesktop.org/pixman/pixman/-/issues/76, which says +# "not sure why NVD keeps assigning CVEs like this. This is just a +# test executable". +PIXMAN_IGNORE_CVES += CVE-2023-37769 + +# The ARM SIMD code from pixman requires a recent enough ARM core, but +# there is a runtime CPU check that makes sure it doesn't get used if +# the HW doesn't support it. The only case where the ARM SIMD code +# cannot be *built* at all is when the platform doesn't support ARM +# instructions at all, so we have to disable that explicitly. +ifeq ($(BR2_ARM_CPU_HAS_ARM),y) +PIXMAN_CONF_OPTS += --enable-arm-simd +else +PIXMAN_CONF_OPTS += --disable-arm-simd +endif + +ifeq ($(BR2_ARM_CPU_HAS_ARM)$(BR2_ARM_CPU_HAS_NEON),yy) +PIXMAN_CONF_OPTS += --enable-arm-neon +else +PIXMAN_CONF_OPTS += --disable-arm-neon +endif + +PIXMAN_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_101737),y) +PIXMAN_CFLAGS += -O0 +endif + +PIXMAN_CONF_OPTS += CFLAGS="$(PIXMAN_CFLAGS)" + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/pixz/Config.in b/package/pixz/Config.in new file mode 100644 index 00000000..f7ca0157 --- /dev/null +++ b/package/pixz/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PIXZ + bool "pixz" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR # libarchive + select BR2_PACKAGE_LIBARCHIVE + select BR2_PACKAGE_XZ + help + Pixz (pronounced pixie) is a parallel, indexing version of xz. + + https://github.com/vasi/pixz + +comment "pixz needs a toolchain w/ threads, wchar" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/package/pixz/pixz.hash b/package/pixz/pixz.hash new file mode 100644 index 00000000..9e2a211c --- /dev/null +++ b/package/pixz/pixz.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 e5e32c6eb0bf112b98e74a5da8fb63b9f2cae71800f599d97ce540e150c8ddc5 pixz-1.0.7.tar.xz +sha256 d036806b4d1efee7c6d86276451c4d833e9798751417e25daae62dfbe348641b LICENSE diff --git a/package/pixz/pixz.mk b/package/pixz/pixz.mk new file mode 100644 index 00000000..680c05c3 --- /dev/null +++ b/package/pixz/pixz.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# pixz +# +################################################################################ + +PIXZ_VERSION = 1.0.7 +PIXZ_SITE = https://github.com/vasi/pixz/releases/download/v$(PIXZ_VERSION) +PIXZ_SOURCE = pixz-$(PIXZ_VERSION).tar.xz +PIXZ_DEPENDENCIES = host-pkgconf libarchive xz +PIXZ_LICENSE = BSD-2-Clause +PIXZ_LICENSE_FILES = LICENSE + +# pixz.1 is actually present, but AC_CHECK_FILE doesn't detect it when +# cross-compiling, which causes configure to try to regenerate it. So give it a +# hint to say that it actually is present. +PIXZ_CONF_ENV = ac_cv_file_src_pixz_1=yes + +$(eval $(autotools-package)) diff --git a/package/pkcs11-helper/Config.in b/package/pkcs11-helper/Config.in new file mode 100644 index 00000000..36204d7d --- /dev/null +++ b/package/pkcs11-helper/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_PKCS11_HELPER + bool "pkcs11-helper" + depends on !BR2_STATIC_LIBS # dlfcn.h + help + pkcs11-helper is a library that simplifies the interaction + with PKCS#11 providers for end-user applications. + + pkcs11-helper allows using multiple PKCS#11 providers at the + same time, enumerating available token certificates, or + selecting a certificate directly by serialized id, handling + card removal and card insert events, handling card re-insert + to a different slot, supporting session expiration and much + more all using a simple API. + + pkcs11-helper is not designed to manage card content, since + object attributes are usually vendor specific, and 99% of + application need to access existing objects in order to + perform signature and decryption. + + https://github.com/OpenSC/pkcs11-helper + +comment "pkcs11-helper needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/pkcs11-helper/pkcs11-helper.hash b/package/pkcs11-helper/pkcs11-helper.hash new file mode 100644 index 00000000..bc9cf347 --- /dev/null +++ b/package/pkcs11-helper/pkcs11-helper.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 4c5815ba910cabf26df08d449ca2909daf4538c9899aa7f7fadc61229d3488a9 pkcs11-helper-1.30.0.tar.bz2 +sha256 808705ac1daafe07a76431929575c5712a8693977a39ec9102aed25f030754d9 COPYING +sha256 865496cf23a6c792739ff2f9ea11e95ac99db89cfe3780a295b4e1495a9c19fe COPYING.BSD +sha256 cd2e7d63a11058f19c58b06fb8c759140ce70788369dce6e6e9db40d3475021e COPYING.GPL diff --git a/package/pkcs11-helper/pkcs11-helper.mk b/package/pkcs11-helper/pkcs11-helper.mk new file mode 100644 index 00000000..de192493 --- /dev/null +++ b/package/pkcs11-helper/pkcs11-helper.mk @@ -0,0 +1,57 @@ +################################################################################ +# +# pkcs11-helper +# +################################################################################ + +PKCS11_HELPER_VERSION = 1.30.0 +PKCS11_HELPER_SOURCE = pkcs11-helper-$(PKCS11_HELPER_VERSION).tar.bz2 +PKCS11_HELPER_SITE = https://github.com/OpenSC/pkcs11-helper/releases/download/pkcs11-helper-$(PKCS11_HELPER_VERSION) +PKCS11_HELPER_LICENSE = GPL-2.0 or BSD-3-Clause +PKCS11_HELPER_LICENSE_FILES = COPYING COPYING.BSD COPYING.GPL +PKCS11_HELPER_DEPENDENCIES = host-pkgconf +PKCS11_HELPER_INSTALL_STAGING = YES + +PKCS11_HELPER_CONF_OPTS = \ + --disable-crypto-engine-polarssl \ + --disable-crypto-engine-cryptoapi + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +PKCS11_HELPER_CONF_OPTS += --enable-slotevent --enable-threading +else +PKCS11_HELPER_CONF_OPTS += --disable-slotevent --disable-threading +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +PKCS11_HELPER_DEPENDENCIES += gnutls +PKCS11_HELPER_CONF_OPTS += --enable-crypto-engine-gnutls +else +PKCS11_HELPER_CONF_OPTS += --disable-crypto-engine-gnutls +endif + +ifeq ($(BR2_PACKAGE_LIBNSS),y) +PKCS11_HELPER_DEPENDENCIES += libnss +PKCS11_HELPER_CONF_OPTS += --enable-crypto-engine-nss +else +PKCS11_HELPER_CONF_OPTS += --disable-crypto-engine-nss +endif + +ifeq ($(BR2_PACKAGE_MBEDTLS),y) +PKCS11_HELPER_DEPENDENCIES += mbedtls +PKCS11_HELPER_CONF_OPTS += --enable-crypto-engine-mbedtls +else +PKCS11_HELPER_CONF_OPTS += --disable-crypto-engine-mbedtls +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +PKCS11_HELPER_DEPENDENCIES += openssl +PKCS11_HELPER_CONF_OPTS += \ + --enable-openssl \ + --enable-crypto-engine-openssl +else +PKCS11_HELPER_CONF_OPTS += \ + --disable-openssl \ + --disable-crypto-engine-openssl +endif + +$(eval $(autotools-package)) diff --git a/package/pkg-autotools.mk b/package/pkg-autotools.mk new file mode 100644 index 00000000..f17186df --- /dev/null +++ b/package/pkg-autotools.mk @@ -0,0 +1,319 @@ +################################################################################ +# Autotools package infrastructure +# +# This file implements an infrastructure that eases development of +# package .mk files for autotools packages. It should be used for all +# packages that use the autotools as their build system. +# +# See the Buildroot documentation for details on the usage of this +# infrastructure +# +# In terms of implementation, this autotools 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 autotools behaviour. The +# package can also define some post operation hooks. +# +################################################################################ + + +# +# Utility function to upgrade config.sub and config.guess files +# +# argument 1 : directory into which config.guess and config.sub need +# to be updated. Note that config.sub and config.guess are searched +# recursively in this directory. +# +define CONFIG_UPDATE + for file in config.guess config.sub; do \ + for i in $$(find $(1) -name $$file); do \ + cp support/gnuconfig/$$file $$i; \ + done; \ + done +endef + +# This function generates the ac_cv_file_ value for a given +# filename. This is needed to convince configure script doing +# AC_CHECK_FILE() tests that the file actually exists, since such +# tests cannot be done in a cross-compilation context. This function +# takes as argument the path of the file. An example usage is: +# +# FOOBAR_CONF_ENV = \ +# $(call AUTOCONF_AC_CHECK_FILE_VAL,/dev/random)=yes +AUTOCONF_AC_CHECK_FILE_VAL = ac_cv_file_$(subst -,_,$(subst /,_,$(subst .,_,$(1)))) + +# +# Hook to update config.sub and config.guess if needed +# +define UPDATE_CONFIG_HOOK + @$(call MESSAGE,"Updating config.sub and config.guess") + $(call CONFIG_UPDATE,$(@D)) +endef + +# +# Hook to patch libtool to make it work properly for cross-compilation +# +define LIBTOOL_PATCH_HOOK + @$(call MESSAGE,"Patching libtool") + $(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 | \ + sed -e 's/\([0-9]*\.[0-9]*\.*\)\([0-9]*\).*/\2/' -e 's/\"//'`; \ + if test $${ltmain_version} = '1.5'; then \ + patch -i support/libtool/buildroot-libtool-v1.5.patch $${i}; \ + elif test $${ltmain_version} = "2.2"; then\ + patch -i support/libtool/buildroot-libtool-v2.2.patch $${i}; \ + elif test $${ltmain_version} = "2.4"; then\ + if test $${ltmain_patchlevel:-0} -gt 2; then\ + patch -i support/libtool/buildroot-libtool-v2.4.4.patch $${i}; \ + else \ + patch -i support/libtool/buildroot-libtool-v2.4.patch $${i}; \ + fi \ + fi \ + 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 autoreconf the package if needed +# +define AUTORECONF_HOOK + @$(call MESSAGE,"Autoreconfiguring") + $(Q)cd $($(PKG)_SRCDIR) && $($(PKG)_AUTORECONF_ENV) $(AUTORECONF) $($(PKG)_AUTORECONF_OPTS) +endef + +################################################################################ +# inner-autotools-package -- defines how the configuration, compilation and +# installation of an autotools package should be done, implements a +# few hooks to tune the build process for autotools 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-autotools-package + +ifndef $(2)_LIBTOOL_PATCH + ifdef $(3)_LIBTOOL_PATCH + $(2)_LIBTOOL_PATCH = $$($(3)_LIBTOOL_PATCH) + else + $(2)_LIBTOOL_PATCH ?= YES + endif +endif + +ifndef $(2)_MAKE + ifdef $(3)_MAKE + $(2)_MAKE = $$($(3)_MAKE) + else + $(2)_MAKE ?= $$(MAKE) + endif +endif + +ifndef $(2)_AUTORECONF + ifdef $(3)_AUTORECONF + $(2)_AUTORECONF = $$($(3)_AUTORECONF) + else + $(2)_AUTORECONF ?= NO + endif +endif + +ifndef $(2)_AUTOPOINT + ifdef $(3)_AUTOPOINT + $(2)_AUTOPOINT = $$($(3)_AUTOPOINT) + else + $(2)_AUTOPOINT ?= NO + endif +endif + + +ifeq ($(4),host) + $(2)_AUTORECONF_OPTS ?= $$($(3)_AUTORECONF_OPTS) +endif + +$(2)_INSTALL_OPTS ?= install +$(2)_INSTALL_STAGING_OPTS ?= DESTDIR=$$(STAGING_DIR) install +$(2)_INSTALL_TARGET_OPTS ?= DESTDIR=$$(TARGET_DIR) install + +# +# Configure step. Only define it if not already defined by the package +# .mk file. And take care of the differences between host and target +# packages. +# +ifndef $(2)_CONFIGURE_CMDS +ifeq ($(4),target) + +# Configure package for target +define $(2)_CONFIGURE_CMDS + (cd $$($$(PKG)_SRCDIR) && rm -rf config.cache && \ + $$(TARGET_CONFIGURE_OPTS) \ + $$(TARGET_CONFIGURE_ARGS) \ + $$($$(PKG)_CONF_ENV) \ + CONFIG_SITE=/dev/null \ + ./configure \ + --target=$$(GNU_TARGET_NAME) \ + --host=$$(GNU_TARGET_NAME) \ + --build=$$(GNU_HOST_NAME) \ + --prefix=/usr \ + --exec-prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --program-prefix="" \ + --disable-gtk-doc \ + --disable-gtk-doc-html \ + --disable-doc \ + --disable-docs \ + --disable-documentation \ + --with-xmlto=no \ + --with-fop=no \ + $$(if $$($$(PKG)_OVERRIDE_SRCDIR),,--disable-dependency-tracking) \ + --enable-ipv6 \ + $$(NLS_OPTS) \ + $$(SHARED_STATIC_LIBS_OPTS) \ + $$(QUIET) $$($$(PKG)_CONF_OPTS) \ + ) +endef +else + +# Configure package for host +# disable all kind of documentation generation in the process, +# because it often relies on host tools which may or may not be +# installed. +define $(2)_CONFIGURE_CMDS + (cd $$($$(PKG)_SRCDIR) && rm -rf config.cache; \ + $$(HOST_CONFIGURE_OPTS) \ + CFLAGS="$$(HOST_CFLAGS)" \ + LDFLAGS="$$(HOST_LDFLAGS)" \ + $$($$(PKG)_CONF_ENV) \ + CONFIG_SITE=/dev/null \ + ./configure \ + --prefix="$$(HOST_DIR)" \ + --sysconfdir="$$(HOST_DIR)/etc" \ + --localstatedir="$$(HOST_DIR)/var" \ + --enable-shared --disable-static \ + --disable-gtk-doc \ + --disable-gtk-doc-html \ + --disable-doc \ + --disable-docs \ + --disable-documentation \ + --disable-debug \ + --with-xmlto=no \ + --with-fop=no \ + --disable-nls \ + $$(if $$($$(PKG)_OVERRIDE_SRCDIR),,--disable-dependency-tracking) \ + $$(QUIET) $$($$(PKG)_CONF_OPTS) \ + ) +endef +endif +endif + +$(2)_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK + +ifeq ($$($(2)_AUTORECONF),YES) + +# autopoint is provided by gettext +ifeq ($$($(2)_AUTOPOINT),YES) +$(2)_DEPENDENCIES += host-gettext +$(2)_AUTORECONF_ENV += AUTOPOINT=$$(HOST_DIR)/bin/autopoint +else +$(2)_AUTORECONF_ENV += AUTOPOINT=/bin/true +endif +$(2)_PRE_CONFIGURE_HOOKS += AUTORECONF_HOOK +# default values are not evaluated yet, so don't rely on this defaulting to YES +ifneq ($$($(2)_LIBTOOL_PATCH),NO) +$(2)_PRE_CONFIGURE_HOOKS += LIBTOOL_PATCH_HOOK +endif +$(2)_DEPENDENCIES += host-automake host-autoconf host-libtool + +else # ! AUTORECONF = YES + +# default values are not evaluated yet, so don't rely on this defaulting to YES +ifneq ($$($(2)_LIBTOOL_PATCH),NO) +$(2)_POST_PATCH_HOOKS += LIBTOOL_PATCH_HOOK +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. +# +ifndef $(2)_BUILD_CMDS +ifeq ($(4),target) +define $(2)_BUILD_CMDS + $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPTS) -C $$($$(PKG)_SRCDIR) +endef +else +define $(2)_BUILD_CMDS + $$(HOST_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPTS) -C $$($$(PKG)_SRCDIR) +endef +endif +endif + +# +# Host installation step. Only define it if not already defined by the +# package .mk file. +# +ifndef $(2)_INSTALL_CMDS +define $(2)_INSTALL_CMDS + $$(HOST_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_INSTALL_OPTS) -C $$($$(PKG)_SRCDIR) +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 + $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_INSTALL_STAGING_OPTS) -C $$($$(PKG)_SRCDIR) +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 + $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_INSTALL_TARGET_OPTS) -C $$($$(PKG)_SRCDIR) +endef +endif + +# Call the generic package infrastructure to generate the necessary +# make targets +$(call inner-generic-package,$(1),$(2),$(3),$(4)) + +endef + +################################################################################ +# autotools-package -- the target generator macro for autotools packages +################################################################################ + +autotools-package = $(call inner-autotools-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) +host-autotools-package = $(call inner-autotools-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host) diff --git a/package/pkg-cargo.mk b/package/pkg-cargo.mk new file mode 100644 index 00000000..41dfcbd0 --- /dev/null +++ b/package/pkg-cargo.mk @@ -0,0 +1,318 @@ +################################################################################ +# Cargo package infrastructure +# +# This file implements an infrastructure that eases development of package +# .mk files for Cargo packages. It should be used for all packages that use +# Cargo as their build system. +# +# See the Buildroot documentation for details on the usage of this +# infrastructure +# +# In terms of implementation, this Cargo 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 Cargo behaviour. The package can also define some +# post operation hooks. +# +################################################################################ + +BR_CARGO_HOME = $(DL_DIR)/br-cargo-home + +PKG_COMMON_CARGO_ENV = \ + CARGO_HOME=$(BR_CARGO_HOME) + +# __CARGO_TEST_CHANNEL_OVERRIDE_DO_NOT_USE_THIS is needed to allow +# passing the -Z target-applies-to-host, which is needed together with +# CARGO_TARGET_APPLIES_TO_HOST to fix build problems when target +# architecture == host architecture. + +# __CARGO_TEST_CHANNEL_OVERRIDE_DO_NOT_USE_THIS="nightly" is to allow +# using nighly features on stable releases, i.e features that are not +# yet considered stable. +# +# CARGO_UNSTABLE_HOST_CONFIG="true" enables the host specific +# configuration feature +# +# CARGO_UNSTABLE_TARGET_APPLIES_TO_HOST="true" enables the nightly +# configuration option target-applies-to-host value to be set +# +# CARGO_TARGET_APPLIES_TO_HOST="false" is actually setting the value +# for this feature, which we disable, to make sure builds where target +# arch == host arch work correctly +PKG_CARGO_ENV = \ + $(PKG_COMMON_CARGO_ENV) \ + __CARGO_TEST_CHANNEL_OVERRIDE_DO_NOT_USE_THIS="nightly" \ + CARGO_UNSTABLE_HOST_CONFIG="true" \ + CARGO_UNSTABLE_TARGET_APPLIES_TO_HOST="true" \ + CARGO_TARGET_APPLIES_TO_HOST="false" \ + CARGO_BUILD_TARGET="$(RUSTC_TARGET_NAME)" \ + CARGO_HOST_RUSTFLAGS="$(addprefix -C link-args=,$(HOST_LDFLAGS))" \ + CARGO_TARGET_$(call UPPERCASE,$(RUSTC_TARGET_NAME))_LINKER=$(notdir $(TARGET_CROSS))gcc + +# We always set both CARGO_PROFILE_DEV and CARGO_PROFILE_RELEASE +# as we are unable to select a build profile using the environment. +# +# Other cargo profiles generally derive from these two profiles. + +# Disable incremental compilation to match release default. +# +# Set codegen-units to release default. +# +# Set split-debuginfo to default off for ELF platforms. +PKG_CARGO_ENV += \ + CARGO_PROFILE_DEV_INCREMENTAL="false" \ + CARGO_PROFILE_RELEASE_INCREMENTAL="false" \ + CARGO_PROFILE_DEV_CODEGEN_UNITS="16" \ + CARGO_PROFILE_RELEASE_CODEGEN_UNITS="16" \ + CARGO_PROFILE_DEV_SPLIT_DEBUGINFO="off" \ + CARGO_PROFILE_RELEASE_SPLIT_DEBUGINFO="off" + +# Set the optimization level with the release default as fallback. +ifeq ($(BR2_OPTIMIZE_0),y) +PKG_CARGO_ENV += \ + CARGO_PROFILE_DEV_OPT_LEVEL="0" \ + CARGO_PROFILE_RELEASE_OPT_LEVEL="0" +else ifeq ($(BR2_OPTIMIZE_1),y) +PKG_CARGO_ENV += \ + CARGO_PROFILE_DEV_OPT_LEVEL="1" \ + CARGO_PROFILE_RELEASE_OPT_LEVEL="1" +else ifeq ($(BR2_OPTIMIZE_2),y) +PKG_CARGO_ENV += \ + CARGO_PROFILE_DEV_OPT_LEVEL="2" \ + CARGO_PROFILE_RELEASE_OPT_LEVEL="2" +else ifeq ($(BR2_OPTIMIZE_3),y) +PKG_CARGO_ENV += \ + CARGO_PROFILE_DEV_OPT_LEVEL="3" \ + CARGO_PROFILE_RELEASE_OPT_LEVEL="3" +else ifeq ($(BR2_OPTIMIZE_G),y) +PKG_CARGO_ENV += \ + CARGO_PROFILE_DEV_OPT_LEVEL="0" \ + CARGO_PROFILE_RELEASE_OPT_LEVEL="0" +else ifeq ($(BR2_OPTIMIZE_S),y) +PKG_CARGO_ENV += \ + CARGO_PROFILE_DEV_OPT_LEVEL="s" \ + CARGO_PROFILE_RELEASE_OPT_LEVEL="s" +else ifeq ($(BR2_OPTIMIZE_FAST),y) +PKG_CARGO_ENV += \ + CARGO_PROFILE_DEV_OPT_LEVEL="3" \ + CARGO_PROFILE_RELEASE_OPT_LEVEL="3" +else +PKG_CARGO_ENV += \ + CARGO_PROFILE_DEV_OPT_LEVEL="3" \ + CARGO_PROFILE_RELEASE_OPT_LEVEL="3" +endif + +ifeq ($(BR2_ENABLE_LTO),y) +PKG_CARGO_ENV += \ + CARGO_PROFILE_DEV_LTO="true" \ + CARGO_PROFILE_RELEASE_LTO="true" +else +PKG_CARGO_ENV += \ + CARGO_PROFILE_DEV_LTO="false" \ + CARGO_PROFILE_RELEASE_LTO="false" +endif + + +ifeq ($(BR2_ENABLE_DEBUG),y) +ifeq ($(BR2_DEBUG_3),y) +# full debug info +PKG_CARGO_ENV += \ + CARGO_PROFILE_DEV_DEBUG="2" \ + CARGO_PROFILE_RELEASE_DEBUG="2" +else +# line tables only +PKG_CARGO_ENV += \ + CARGO_PROFILE_DEV_DEBUG="1" \ + CARGO_PROFILE_RELEASE_DEBUG="1" +endif +else +# no debug info +PKG_CARGO_ENV += \ + CARGO_PROFILE_DEV_DEBUG="0" \ + CARGO_PROFILE_RELEASE_DEBUG="0" +endif + +# Enabling debug-assertions enables the runtime debug_assert! macro. +# +# Enabling overflow-checks enables runtime panic on integer overflow. +ifeq ($(BR2_ENABLE_RUNTIME_DEBUG),y) +PKG_CARGO_ENV += \ + CARGO_PROFILE_DEV_DEBUG_ASSERTIONS="true" \ + CARGO_PROFILE_RELEASE_DEBUG_ASSERTIONS="true" \ + CARGO_PROFILE_DEV_OVERFLOW_CHECKS="true" \ + CARGO_PROFILE_RELEASE_OVERFLOW_CHECKS="true" +else +PKG_CARGO_ENV += \ + CARGO_PROFILE_DEV_DEBUG_ASSERTIONS="false" \ + CARGO_PROFILE_RELEASE_DEBUG_ASSERTIONS="false" \ + CARGO_PROFILE_DEV_OVERFLOW_CHECKS="false" \ + CARGO_PROFILE_RELEASE_OVERFLOW_CHECKS="false" +endif + +# +# This is a workaround for https://github.com/rust-lang/compiler-builtins/issues/420 +# and should be removed when fixed upstream +# +ifeq ($(NORMALIZED_ARCH),arm) + PKG_CARGO_ENV += \ + CARGO_TARGET_$(call UPPERCASE,$(RUSTC_TARGET_NAME))_RUSTFLAGS="-Clink-arg=-Wl,--allow-multiple-definition" +endif + +HOST_PKG_CARGO_ENV = \ + $(PKG_COMMON_CARGO_ENV) \ + RUSTFLAGS="$(addprefix -C link-args=,$(HOST_LDFLAGS))" + +################################################################################ +# inner-cargo-package -- defines how the configuration, compilation and +# installation of a cargo package should be done, implements a few hooks +# to tune the build process for cargo 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-cargo-package + +# We need host-rustc to run cargo at download time (for vendoring), +# and at build and install time. +$(2)_DOWNLOAD_DEPENDENCIES += host-rustc +$(2)_DEPENDENCIES += host-rustc + +$(2)_DOWNLOAD_POST_PROCESS = cargo +$(2)_DL_ENV += CARGO_HOME=$$(BR_CARGO_HOME) + +# If building in a sub directory, use that to find the Cargo.toml +ifneq ($$($(2)_SUBDIR),) +$(2)_DOWNLOAD_POST_PROCESS_OPTS += -m$$($(2)_SUBDIR)/Cargo.toml +endif + +# Because we append vendored info, we can't rely on the values being empty +# once we eventually get into the generic-package infra. So, we duplicate +# the heuristics here +ifndef $(2)_LICENSE + ifdef $(3)_LICENSE + $(2)_LICENSE = $$($(3)_LICENSE) + endif +endif + +# Due to vendoring, it is pretty likely that not all licenses are +# listed in _LICENSE. If the license is unset, it is "unknown" +# so adding unknowns to some unknown is still some other unkown, +# so don't append the blurb in that case. +ifneq ($$($(2)_LICENSE),) +$(2)_LICENSE += , vendored dependencies licenses probably not listed +endif + +# Note: in all the steps below, we "cd" into the build directory to +# execute the "cargo" tool instead of passing $(@D)/Cargo.toml as the +# manifest-path. Indeed while the latter seems to work, it in fact +# breaks in subtle ways as the way cargo searches for its +# configuration file is based (among other rules) on the current +# directory. This means that if cargo is started outside of a package +# directory, its configuration file will not be taken into account. +# +# Also, we pass: +# * --offline to prevent cargo from downloading anything: all +# dependencies should have been built by the download post +# process logic +# * --locked to force cargo to use the Cargo.lock file, which ensures +# that a fixed set of dependency versions is used + +# +# Build step. Only define it if not already defined by the package .mk +# file. +# +ifndef $(2)_BUILD_CMDS +ifeq ($(4),target) +define $(2)_BUILD_CMDS + cd $$($$(PKG)_SRCDIR) && \ + $$(TARGET_MAKE_ENV) \ + $$(TARGET_CONFIGURE_OPTS) \ + $$(PKG_CARGO_ENV) \ + $$($(2)_CARGO_ENV) \ + cargo build \ + --offline \ + $$(if $$(BR2_ENABLE_DEBUG),,--release) \ + --manifest-path Cargo.toml \ + --locked \ + $$($(2)_CARGO_BUILD_OPTS) +endef +else # ifeq ($(4),target) +define $(2)_BUILD_CMDS + cd $$($$(PKG)_SRCDIR) && \ + $$(HOST_MAKE_ENV) \ + $$(HOST_CONFIGURE_OPTS) \ + $$(HOST_PKG_CARGO_ENV) \ + $$($(2)_CARGO_ENV) \ + cargo build \ + --offline \ + --release \ + --manifest-path Cargo.toml \ + --locked \ + $$($(2)_CARGO_BUILD_OPTS) +endef +endif # ifeq ($(4),target) +endif # ifndef $(2)_BUILD_CMDS + +# +# 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 $$($$(PKG)_SRCDIR) && \ + $$(TARGET_MAKE_ENV) \ + $$(TARGET_CONFIGURE_OPTS) \ + $$(PKG_CARGO_ENV) \ + $$($(2)_CARGO_ENV) \ + cargo install \ + --offline \ + --root $$(TARGET_DIR)/usr/ \ + --bins \ + --path ./ \ + --force \ + --locked \ + -Z target-applies-to-host \ + $$($(2)_CARGO_INSTALL_OPTS) +endef +endif + +ifndef $(2)_INSTALL_CMDS +define $(2)_INSTALL_CMDS + cd $$($$(PKG)_SRCDIR) && \ + $$(HOST_MAKE_ENV) \ + $$(HOST_CONFIGURE_OPTS) \ + $$(HOST_PKG_CARGO_ENV) \ + $$($(2)_CARGO_ENV) \ + cargo install \ + --offline \ + --root $$(HOST_DIR) \ + --bins \ + --path ./ \ + --force \ + --locked \ + $$($(2)_CARGO_INSTALL_OPTS) +endef +endif + +# Call the generic package infrastructure to generate the necessary +# make targets +$(call inner-generic-package,$(1),$(2),$(3),$(4)) + +endef + +################################################################################ +# cargo-package -- the target generator macro for Cargo packages +################################################################################ + +cargo-package = $(call inner-cargo-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) +host-cargo-package = $(call inner-cargo-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host) diff --git a/package/pkg-cmake.mk b/package/pkg-cmake.mk new file mode 100644 index 00000000..c7032312 --- /dev/null +++ b/package/pkg-cmake.mk @@ -0,0 +1,291 @@ +################################################################################ +# CMake package infrastructure +# +# This file implements an infrastructure that eases development of +# package .mk files for CMake packages. It should be used for all +# packages that use CMake as their build system. +# +# See the Buildroot documentation for details on the usage of this +# infrastructure +# +# In terms of implementation, this CMake 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 CMake behaviour. The +# package can also define some post operation hooks. +# +################################################################################ + +# Set compiler variables. +ifeq ($(BR2_CCACHE),y) +CMAKE_HOST_C_COMPILER = $(HOSTCC_NOCCACHE) +CMAKE_HOST_CXX_COMPILER = $(HOSTCXX_NOCCACHE) +CMAKE_HOST_C_COMPILER_LAUNCHER = $(HOST_DIR)/bin/ccache +CMAKE_HOST_CXX_COMPILER_LAUNCHER = $(HOST_DIR)/bin/ccache +else +CMAKE_HOST_C_COMPILER = $(HOSTCC) +CMAKE_HOST_CXX_COMPILER = $(HOSTCXX) +endif + +ifneq ($(QUIET),) +CMAKE_QUIET = -DCMAKE_RULE_MESSAGES=OFF -DCMAKE_INSTALL_MESSAGE=NEVER +endif + +################################################################################ +# inner-cmake-package -- defines how the configuration, compilation and +# installation of a CMake package should be done, implements a few hooks to +# tune the build process 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-cmake-package + +$(3)_SUPPORTS_IN_SOURCE_BUILD ?= YES + +# The default backend, unless specified by the package +$(3)_CMAKE_BACKEND ?= make + +ifeq ($$($(3)_SUPPORTS_IN_SOURCE_BUILD),YES) +$(2)_BUILDDIR = $$($(2)_SRCDIR) +else +$(2)_BUILDDIR = $$($(2)_SRCDIR)/buildroot-build +endif + +ifeq ($$($(3)_CMAKE_BACKEND),make) +$(2)_GENERATOR = "Unix Makefiles" +# $$(MAKE) can be 'make -jN', we just want 'make' (possibly with a full path) +$(2)_GENERATOR_PROGRAM = $$(firstword $$(MAKE)) +# Generator specific code (make) should be avoided, +# but for now, copy them to the new variables. +$(2)_BUILD_ENV ?= $$($(2)_MAKE_ENV) +$(2)_BUILD_OPTS ?= -- $$($(2)_MAKE_OPTS) + +else ifeq ($$($(3)_CMAKE_BACKEND),ninja) +$(2)_DEPENDENCIES += host-ninja +$(2)_GENERATOR = "Ninja" +$(2)_GENERATOR_PROGRAM = $$(HOST_DIR)/bin/ninja + +else +$$(error Unsupported cmake backend "$$($(3)_CMAKE_BACKEND)") +endif + +# +# Configure step. Only define it if not already defined by the package +# .mk file. And take care of the differences between host and target +# packages. +# +ifndef $(2)_CONFIGURE_CMDS +ifeq ($(4),target) + +# Configure package for target +# +# - We are passing BUILD_SHARED_LIBS because it is documented as a +# standard CMake variable to control the build of shared libraries +# (see https://cmake.org/cmake/help/v3.8/manual/cmake-variables.7.html#variables-that-change-behavior) +# - We are not passing BUILD_STATIC_LIBS because it is *not* +# documented as a standard CMake variable. If a package supports it, +# it must handle it explicitly. +# +define $(2)_CONFIGURE_CMDS + (mkdir -p $$($$(PKG)_BUILDDIR) && \ + cd $$($$(PKG)_BUILDDIR) && \ + rm -f CMakeCache.txt && \ + PATH=$$(BR_PATH) \ + $$($$(PKG)_CONF_ENV) $$(BR2_CMAKE) $$($$(PKG)_SRCDIR) \ + -G$$($$(PKG)_GENERATOR) \ + -DCMAKE_MAKE_PROGRAM="$$($$(PKG)_GENERATOR_PROGRAM)" \ + -DCMAKE_TOOLCHAIN_FILE="$$(HOST_DIR)/share/buildroot/toolchainfile.cmake" \ + -DCMAKE_INSTALL_PREFIX="/usr" \ + -DCMAKE_INSTALL_RUNSTATEDIR="/run" \ + -DCMAKE_COLOR_MAKEFILE=OFF \ + -DBUILD_DOC=OFF \ + -DBUILD_DOCS=OFF \ + -DBUILD_EXAMPLE=OFF \ + -DBUILD_EXAMPLES=OFF \ + -DBUILD_TEST=OFF \ + -DBUILD_TESTS=OFF \ + -DBUILD_TESTING=OFF \ + -DBUILD_SHARED_LIBS=$$(if $$(BR2_STATIC_LIBS),OFF,ON) \ + $$(CMAKE_QUIET) \ + $$($$(PKG)_CONF_OPTS) \ + ) +endef +else + +# Configure package for host +define $(2)_CONFIGURE_CMDS + (mkdir -p $$($$(PKG)_BUILDDIR) && \ + cd $$($$(PKG)_BUILDDIR) && \ + rm -f CMakeCache.txt && \ + PATH=$$(BR_PATH) \ + PKG_CONFIG="$$(PKG_CONFIG_HOST_BINARY)" \ + PKG_CONFIG_SYSROOT_DIR="/" \ + PKG_CONFIG_LIBDIR="$$(HOST_DIR)/lib/pkgconfig:$$(HOST_DIR)/share/pkgconfig" \ + PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \ + PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \ + $$($$(PKG)_CONF_ENV) $$(BR2_CMAKE) $$($$(PKG)_SRCDIR) \ + -G$$($$(PKG)_GENERATOR) \ + -DCMAKE_MAKE_PROGRAM="$$($$(PKG)_GENERATOR_PROGRAM)" \ + -DCMAKE_INSTALL_SO_NO_EXE=0 \ + -DCMAKE_FIND_ROOT_PATH="$$(HOST_DIR)" \ + -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM="BOTH" \ + -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY="BOTH" \ + -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE="BOTH" \ + -DCMAKE_INSTALL_PREFIX="$$(HOST_DIR)" \ + -DCMAKE_C_FLAGS="$$(HOST_CFLAGS)" \ + -DCMAKE_CXX_FLAGS="$$(HOST_CXXFLAGS)" \ + -DCMAKE_EXE_LINKER_FLAGS="$$(HOST_LDFLAGS)" \ + -DCMAKE_SHARED_LINKER_FLAGS="$$(HOST_LDFLAGS)" \ + -DCMAKE_C_COMPILER="$$(CMAKE_HOST_C_COMPILER)" \ + -DCMAKE_CXX_COMPILER="$$(CMAKE_HOST_CXX_COMPILER)" \ + $(if $$(CMAKE_HOST_C_COMPILER_LAUNCHER),\ + -DCMAKE_C_COMPILER_LAUNCHER="$$(CMAKE_HOST_C_COMPILER_LAUNCHER)" \ + -DCMAKE_CXX_COMPILER_LAUNCHER="$$(CMAKE_HOST_CXX_COMPILER_LAUNCHER)" \ + ) \ + -DCMAKE_COLOR_MAKEFILE=OFF \ + -DBUILD_DOC=OFF \ + -DBUILD_DOCS=OFF \ + -DBUILD_EXAMPLE=OFF \ + -DBUILD_EXAMPLES=OFF \ + -DBUILD_TEST=OFF \ + -DBUILD_TESTS=OFF \ + -DBUILD_TESTING=OFF \ + -DBUILD_SHARED_LIBS=ON \ + $$(CMAKE_QUIET) \ + $$($$(PKG)_CONF_OPTS) \ + ) +endef +endif +endif + +# Since some CMake modules (even upstream ones) use pgk_check_modules +# primitives to find {C,LD}FLAGS, add it to the dependency list. +$(2)_DEPENDENCIES += host-pkgconf + +$(2)_DEPENDENCIES += $(BR2_CMAKE_HOST_DEPENDENCY) + +# +# Build step. Only define it if not already defined by the package .mk +# file. +# +ifndef $(2)_BUILD_CMDS +ifeq ($(4),target) +define $(2)_BUILD_CMDS + $$(TARGET_MAKE_ENV) $$($$(PKG)_BUILD_ENV) $$(BR2_CMAKE) --build $$($$(PKG)_BUILDDIR) -j$(PARALLEL_JOBS) $$($$(PKG)_BUILD_OPTS) +endef +else +define $(2)_BUILD_CMDS + $$(HOST_MAKE_ENV) $$($$(PKG)_BUILD_ENV) $$(BR2_CMAKE) --build $$($$(PKG)_BUILDDIR) -j$(PARALLEL_JOBS) $$($$(PKG)_BUILD_OPTS) +endef +endif +endif + +# +# Host installation step. Only define it if not already defined by the +# package .mk file. +# +ifndef $(2)_INSTALL_CMDS +define $(2)_INSTALL_CMDS + $$(HOST_MAKE_ENV) $$($$(PKG)_BUILD_ENV) $$(BR2_CMAKE) --install $$($$(PKG)_BUILDDIR) $$($$(PKG)_INSTALL_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 + $$(TARGET_MAKE_ENV) $$($$(PKG)_BUILD_ENV) DESTDIR=$$(STAGING_DIR) $$(BR2_CMAKE) --install $$($$(PKG)_BUILDDIR) $$($$(PKG)_INSTALL_STAGING_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 + $$(TARGET_MAKE_ENV) $$($$(PKG)_BUILD_ENV) DESTDIR=$$(TARGET_DIR) $$(BR2_CMAKE) --install $$($$(PKG)_BUILDDIR) $$($$(PKG)_INSTALL_TARGET_OPTS) +endef +endif + +# Call the generic package infrastructure to generate the necessary +# make targets +$(call inner-generic-package,$(1),$(2),$(3),$(4)) + +endef + +################################################################################ +# cmake-package -- the target generator macro for CMake packages +################################################################################ + +cmake-package = $(call inner-cmake-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) +host-cmake-package = $(call inner-cmake-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host) + +################################################################################ +# Generation of the CMake toolchain file +################################################################################ + +# CMAKE_SYSTEM_PROCESSOR should match uname -m +ifeq ($(BR2_ARM_CPU_ARMV4),y) +CMAKE_SYSTEM_PROCESSOR_ARM_VARIANT = armv4 +else ifeq ($(BR2_ARM_CPU_ARMV5),y) +CMAKE_SYSTEM_PROCESSOR_ARM_VARIANT = armv5 +else ifeq ($(BR2_ARM_CPU_ARMV6),y) +CMAKE_SYSTEM_PROCESSOR_ARM_VARIANT = armv6 +else ifeq ($(BR2_ARM_CPU_ARMV7A),y) +CMAKE_SYSTEM_PROCESSOR_ARM_VARIANT = armv7 +else ifeq ($(BR2_ARM_CPU_ARMV8A),y) +CMAKE_SYSTEM_PROCESSOR_ARM_VARIANT = armv8 +endif + +ifeq ($(BR2_arm),y) +CMAKE_SYSTEM_PROCESSOR = $(CMAKE_SYSTEM_PROCESSOR_ARM_VARIANT)l +else ifeq ($(BR2_armeb),y) +CMAKE_SYSTEM_PROCESSOR = $(CMAKE_SYSTEM_PROCESSOR_ARM_VARIANT)b +else ifeq ($(call qstrip,$(BR2_ARCH)),powerpc64) +CMAKE_SYSTEM_PROCESSOR = ppc64 +else ifeq ($(call qstrip,$(BR2_ARCH)),powerpc64le) +CMAKE_SYSTEM_PROCESSOR = ppc64le +else +CMAKE_SYSTEM_PROCESSOR = $(BR2_ARCH) +endif + +# In order to allow the toolchain to be relocated, we calculate the HOST_DIR +# based on the toolchainfile.cmake file's location: $(HOST_DIR)/share/buildroot +# In all the other variables, HOST_DIR will be replaced by RELOCATED_HOST_DIR, +# so we have to strip "$(HOST_DIR)/" from the paths that contain it. +define TOOLCHAIN_CMAKE_INSTALL_FILES + @mkdir -p $(HOST_DIR)/share/buildroot + sed \ + -e 's#@@STAGING_SUBDIR@@#$(call qstrip,$(STAGING_SUBDIR))#' \ + -e 's#@@TARGET_CFLAGS@@#$(call qstrip,$(TARGET_CFLAGS))#' \ + -e 's#@@TARGET_CXXFLAGS@@#$(call qstrip,$(TARGET_CXXFLAGS))#' \ + -e 's#@@TARGET_FCFLAGS@@#$(call qstrip,$(TARGET_FCFLAGS))#' \ + -e 's#@@TARGET_LDFLAGS@@#$(call qstrip,$(TARGET_LDFLAGS))#' \ + -e 's#@@TARGET_CC@@#$(subst $(HOST_DIR)/,,$(call qstrip,$(TARGET_CC)))#' \ + -e 's#@@TARGET_CXX@@#$(subst $(HOST_DIR)/,,$(call qstrip,$(TARGET_CXX)))#' \ + -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_CXX@@#$(if $(BR2_INSTALL_LIBSTDCPP),1,0)#' \ + -e 's#@@TOOLCHAIN_HAS_FORTRAN@@#$(if $(BR2_TOOLCHAIN_HAS_FORTRAN),1,0)#' \ + -e 's#@@CMAKE_BUILD_TYPE@@#$(if $(BR2_ENABLE_RUNTIME_DEBUG),Debug,Release)#' \ + $(TOPDIR)/support/misc/toolchainfile.cmake.in \ + > $(HOST_DIR)/share/buildroot/toolchainfile.cmake + $(Q)$(INSTALL) -D -m 0644 support/misc/Buildroot.cmake \ + $(HOST_DIR)/share/buildroot/Platform/Buildroot.cmake +endef + +TOOLCHAIN_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_CMAKE_INSTALL_FILES diff --git a/package/pkg-download.mk b/package/pkg-download.mk new file mode 100644 index 00000000..ca01ff67 --- /dev/null +++ b/package/pkg-download.mk @@ -0,0 +1,139 @@ +################################################################################ +# +# This file contains the download helpers for the various package +# infrastructures. It is used to handle downloads from HTTP servers, +# FTP servers, Git repositories, Subversion repositories, Mercurial +# repositories, Bazaar repositories, and SCP servers. +# +################################################################################ + +# Download method commands +export CURL := $(call qstrip,$(BR2_CURL)) +export WGET := $(call qstrip,$(BR2_WGET)) +export SVN := $(call qstrip,$(BR2_SVN)) +export CVS := $(call qstrip,$(BR2_CVS)) +export BZR := $(call qstrip,$(BR2_BZR)) +export GIT := $(call qstrip,$(BR2_GIT)) +export HG := $(call qstrip,$(BR2_HG)) +export SCP := $(call qstrip,$(BR2_SCP)) +export SFTP := $(call qstrip,$(BR2_SFTP)) +export LOCALFILES := $(call qstrip,$(BR2_LOCALFILES)) + +# Version of the format of the archives we generate in the corresponding +# download backend and post-process: +BR_FMT_VERSION_git = -git4 +BR_FMT_VERSION_svn = -svn5 +BR_FMT_VERSION_go = -go2 +BR_FMT_VERSION_cargo = -cargo2 + +DL_WRAPPER = support/download/dl-wrapper + +# DL_DIR may have been set already from the environment +ifeq ($(origin DL_DIR),undefined) +DL_DIR ?= $(call qstrip,$(BR2_DL_DIR)) +ifeq ($(DL_DIR),) +DL_DIR := $(TOPDIR)/dl +endif +else +# Restore the BR2_DL_DIR that was overridden by the .config file +BR2_DL_DIR = $(DL_DIR) +endif + +# ensure it exists and a absolute path, derefrecing symlinks +DL_DIR := $(shell mkdir -p $(DL_DIR) && cd $(DL_DIR) >/dev/null && pwd -P) + +# +# URI scheme helper functions +# Example URIs: +# * http://www.example.com/dir/file +# * scp://www.example.com:dir/file (with domainseparator :) +# +# geturischeme: http +geturischeme = $(firstword $(subst ://, ,$(call qstrip,$(1)))) +# getschemeplusuri: git|parameter+http://example.com +getschemeplusuri = $(call geturischeme,$(1))$(if $(2),\|$(2))+$(1) +# stripurischeme: www.example.com/dir/file +stripurischeme = $(lastword $(subst ://, ,$(call qstrip,$(1)))) +# domain: www.example.com +domain = $(firstword $(subst $(call domainseparator,$(2)), ,$(call stripurischeme,$(1)))) +# notdomain: dir/file +notdomain = $(patsubst $(call domain,$(1),$(2))$(call domainseparator,$(2))%,%,$(call stripurischeme,$(1))) +# +# default domainseparator is /, specify alternative value as first argument +domainseparator = $(if $(1),$(1),/) + +# github(user,package,version): returns site of GitHub repository +github = https://github.com/$(1)/$(2)/archive/$(3) + +# gitlab(user,package,version): returns site of Gitlab-generated tarball +gitlab = https://gitlab.com/$(1)/$(2)/-/archive/$(3) + +# Expressly do not check hashes for those files +BR_NO_CHECK_HASH_FOR = + +################################################################################ +# DOWNLOAD_URIS - List the candidates URIs where to get the package from: +# 1) BR2_PRIMARY_SITE if enabled +# 2) Download site, unless BR2_PRIMARY_SITE_ONLY is set +# 3) BR2_BACKUP_SITE if enabled, unless BR2_PRIMARY_SITE_ONLY is set +# +# Argument 1 is the source location +# Argument 2 is the upper-case package name +# +################################################################################ + +ifneq ($(call qstrip,$(BR2_PRIMARY_SITE)),) +DOWNLOAD_URIS += \ + $(call getschemeplusuri,$(call qstrip,$(BR2_PRIMARY_SITE)/$($(2)_DL_SUBDIR)),urlencode) \ + $(call getschemeplusuri,$(call qstrip,$(BR2_PRIMARY_SITE)),urlencode) +endif + +ifeq ($(BR2_PRIMARY_SITE_ONLY),) +DOWNLOAD_URIS += \ + $(patsubst %/,%,$(dir $(call qstrip,$(1)))) +ifneq ($(call qstrip,$(BR2_BACKUP_SITE)),) +DOWNLOAD_URIS += \ + $(call getschemeplusuri,$(call qstrip,$(BR2_BACKUP_SITE)/$($(2)_DL_SUBDIR)),urlencode) \ + $(call getschemeplusuri,$(call qstrip,$(BR2_BACKUP_SITE)),urlencode) +endif +endif + +################################################################################ +# DOWNLOAD -- Download helper. Will call DL_WRAPPER which will try to download +# source from the list returned by DOWNLOAD_URIS. +# +# Argument 1 is the source location +# Argument 2 is a space-separated list of optional arguments +# +################################################################################ + +# Restore the user's original umask during the whole download, in case he has +# provisions set to share the download directory with his group (or others). +ifneq ($(BR_ORIG_UMASK),) +DOWNLOAD_SET_UMASK = umask $(BR_ORIG_UMASK); +endif + +define DOWNLOAD + $(Q)$(DOWNLOAD_SET_UMASK) mkdir -p $($(PKG)_DL_DIR) + $(Q)$(DOWNLOAD_SET_UMASK) $(EXTRA_ENV) \ + $($(PKG)_DL_ENV) \ + TAR="$(TAR)" \ + BR_NO_CHECK_HASH_FOR="$(if $(BR2_DOWNLOAD_FORCE_CHECK_HASHES),,$(BR_NO_CHECK_HASH_FOR))" \ + flock $($(PKG)_DL_DIR)/.lock $(DL_WRAPPER) \ + -c '$($(PKG)_DL_VERSION)' \ + -d '$($(PKG)_DL_DIR)' \ + -D '$(DL_DIR)' \ + -f '$(notdir $(1))' \ + $(foreach f,$($(PKG)_HASH_FILES),-H '$(f)') \ + -n '$($(PKG)_DL_SUBDIR)-$($(PKG)_VERSION)' \ + -N '$($(PKG)_RAWNAME)' \ + -o '$($(PKG)_DL_DIR)/$(notdir $(1))' \ + $(if $(filter YES,$($(PKG)_SVN_EXTERNALS)),-r) \ + $(if $($(PKG)_GIT_SUBMODULES),-r) \ + $(if $($(PKG)_GIT_LFS),-l) \ + $(foreach uri,$(call DOWNLOAD_URIS,$(1),$(PKG)),-u $(uri)) \ + $(2) \ + $(QUIET) \ + -- \ + $($(PKG)_DL_OPTS) +endef diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk new file mode 100644 index 00000000..171163dc --- /dev/null +++ b/package/pkg-generic.mk @@ -0,0 +1,1343 @@ +################################################################################ +# Generic package infrastructure +# +# This file implements an infrastructure that eases development of +# package .mk files. It should be used for packages that do not rely +# on a well-known build system for which Buildroot has a dedicated +# infrastructure (so far, Buildroot has special support for +# autotools-based and CMake-based packages). +# +# See the Buildroot documentation for details on the usage of this +# infrastructure +# +# In terms of implementation, this generic infrastructure requires the +# .mk file to specify: +# +# 1. Metadata information about the package: name, version, +# download URL, etc. +# +# 2. Description of the commands to be executed to configure, build +# and install the package +################################################################################ + +################################################################################ +# Helper functions to catch start/end of each step +################################################################################ + +# Those two functions are called by each step below. +# They are responsible for calling all hooks defined in +# $(GLOBAL_INSTRUMENTATION_HOOKS) and pass each of them +# three arguments: +# $1: either 'start' or 'end' +# $2: the name of the step +# $3: the name of the package + +# Start step +# $1: step name +define step_start + $(foreach hook,$(GLOBAL_INSTRUMENTATION_HOOKS),$(call $(hook),start,$(1),$($(PKG)_NAME))$(sep)) +endef + +# End step +# $1: step name +define step_end + $(foreach hook,$(GLOBAL_INSTRUMENTATION_HOOKS),$(call $(hook),end,$(1),$($(PKG)_NAME))$(sep)) +endef + +####################################### +# Actual steps hooks + +# Time steps +define step_time + printf "%s:%-5.5s:%-20.20s: %s\n" \ + "$$(date +%s.%N)" "$(1)" "$(2)" "$(3)" \ + >>"$(BUILD_DIR)/build-time.log" +endef +GLOBAL_INSTRUMENTATION_HOOKS += step_time + +# This hook checks that host packages that need libraries that we build +# have a proper DT_RPATH or DT_RUNPATH tag +define check_host_rpath + $(if $(filter install-host,$(2)),\ + $(if $(filter end,$(1)),support/scripts/check-host-rpath $(3) $(HOST_DIR) $(PER_PACKAGE_DIR))) +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 + @$(foreach user_hook, $(BR2_INSTRUMENTATION_SCRIPTS), \ + $(EXTRA_ENV) $(user_hook) "$(1)" "$(2)" "$(3)"$(sep)) +endef +GLOBAL_INSTRUMENTATION_HOOKS += step_user +endif + +####################################### +# Helper functions + +ifeq ($(BR2_PER_PACKAGE_DIRECTORIES),y) + +define PPD_FIXUP_PATHS + $(call ppd-fixup-paths,$(PER_PACKAGE_DIR)/$($(PKG)_NAME)) +endef + +# Remove python's pre-compiled "sysconfigdata", as it may contain paths to +# the original staging or host dirs. +# +# Can't use $(foreach d, $(HOST_DIR)/lib/python* $(STAGING_DIR)/usr/lib/python*, ...) +# because those directories may be created in the same recipe this macro will +# be expanded in. +# Additionally, either or both may be missing, which would make find whine and +# fail. +# So we just use HOST_DIR as a starting point, and filter on the two directories +# of interest. +define PPD_PYTHON_REMOVE_SYSCONFIGDATA_PYC + $(Q)find $(HOST_DIR) \ + \( -path '$(HOST_DIR)/lib/python*' \ + -o -path '$(STAGING_DIR)/usr/lib/python*' \ + \) \ + \( -name "_sysconfigdata*.pyc" -delete \) +endef + +endif # PPD + +# Functions to collect statistics about installed files + +# $(1): base directory to search in +# $(2): suffix of file (optional) +define pkg_size_before + cd $(1); \ + LC_ALL=C find . -not -path './$(STAGING_SUBDIR)/*' \( -type f -o -type l \) -printf '%T@:%i:%#m:%y:%s,%p\n' \ + | LC_ALL=C sort > $($(PKG)_DIR)/.files-list$(2).before +endef + +# $(1): base directory to search in +# $(2): suffix of file (optional) +define pkg_size_after + cd $(1); \ + LC_ALL=C find . -not -path './$(STAGING_SUBDIR)/*' \( -type f -o -type l \) -printf '%T@:%i:%#m:%y:%s,%p\n' \ + | LC_ALL=C sort > $($(PKG)_DIR)/.files-list$(2).after + LC_ALL=C comm -13 \ + $($(PKG)_DIR)/.files-list$(2).before \ + $($(PKG)_DIR)/.files-list$(2).after \ + | sed -r -e 's/^[^,]+/$($(PKG)_NAME)/' \ + > $($(PKG)_DIR)/.files-list$(2).txt + rm -f $($(PKG)_DIR)/.files-list$(2).before + rm -f $($(PKG)_DIR)/.files-list$(2).after +endef + +define check_bin_arch + support/scripts/check-bin-arch -p $($(PKG)_NAME) \ + -l $($(PKG)_DIR)/.files-list.txt \ + $(foreach i,$($(PKG)_BIN_ARCH_EXCLUDE),-i "$(i)") \ + -r $(TARGET_READELF) \ + -a $(BR2_READELF_ARCH_NAME) +endef + +# Functions to remove conflicting and useless files + +# $1: base directory (target, staging, host) +define remove-conflicting-useless-files + $(if $(strip $($(PKG)_DROP_FILES_OR_DIRS)), + $(Q)$(RM) -rf $(patsubst %, $(1)%, $($(PKG)_DROP_FILES_OR_DIRS))) +endef +define REMOVE_CONFLICTING_USELESS_FILES_IN_HOST + $(call remove-conflicting-useless-files,$(HOST_DIR)) +endef +define REMOVE_CONFLICTING_USELESS_FILES_IN_STAGING + $(call remove-conflicting-useless-files,$(STAGING_DIR)) +endef +define REMOVE_CONFLICTING_USELESS_FILES_IN_TARGET + $(call remove-conflicting-useless-files,$(TARGET_DIR)) +endef + +################################################################################ +# Implicit targets -- produce a stamp file for each step of a package build +################################################################################ + +# Retrieve the archive +$(BUILD_DIR)/%/.stamp_downloaded: + @$(call step_start,download) + $(call prepare-per-package-directory,$($(PKG)_FINAL_DOWNLOAD_DEPENDENCIES)) + $(foreach hook,$($(PKG)_PRE_DOWNLOAD_HOOKS),$(call $(hook))$(sep)) +# Only show the download message if it isn't already downloaded + $(Q)for p in $($(PKG)_ALL_DOWNLOADS); do \ + if test ! -e $($(PKG)_DL_DIR)/`basename $$p` ; then \ + $(call MESSAGE,"Downloading") ; \ + break ; \ + fi ; \ + done + $(if $($(PKG)_MAIN_DOWNLOAD), \ + $(call DOWNLOAD, \ + $($(PKG)_MAIN_DOWNLOAD), \ + $(patsubst %,-p '%',$($(PKG)_DOWNLOAD_POST_PROCESS)) \ + $(patsubst %,-P '%',$($(PKG)_DOWNLOAD_POST_PROCESS_OPTS)) \ + ) \ + ) + $(foreach p,$($(PKG)_ADDITIONAL_DOWNLOADS),$(call DOWNLOAD,$(p))$(sep)) + $(foreach hook,$($(PKG)_POST_DOWNLOAD_HOOKS),$(call $(hook))$(sep)) + $(Q)mkdir -p $(@D) + @$(call step_end,download) + $(Q)touch $@ + +# Retrieve actual source archive, e.g. for prebuilt external toolchains +$(BUILD_DIR)/%/.stamp_actual_downloaded: + @$(call step_start,actual-download) + $(call DOWNLOAD,$($(PKG)_ACTUAL_SOURCE_SITE)/$($(PKG)_ACTUAL_SOURCE_TARBALL)) + $(Q)mkdir -p $(@D) + @$(call step_end,actual-download) + $(Q)touch $@ + +# Unpack the archive +$(BUILD_DIR)/%/.stamp_extracted: + @$(call step_start,extract) + @$(call MESSAGE,"Extracting") + $(call prepare-per-package-directory,$($(PKG)_FINAL_EXTRACT_DEPENDENCIES)) + $(foreach hook,$($(PKG)_PRE_EXTRACT_HOOKS),$(call $(hook))$(sep)) + $(Q)mkdir -p $(@D) + $($(PKG)_EXTRACT_CMDS) +# some packages have messed up permissions inside + $(Q)chmod -R +rw $(@D) + $(foreach hook,$($(PKG)_POST_EXTRACT_HOOKS),$(call $(hook))$(sep)) + @$(call step_end,extract) + $(Q)touch $@ + +# Rsync the source directory if the _OVERRIDE_SRCDIR feature is +# used. +$(BUILD_DIR)/%/.stamp_rsynced: + @$(call step_start,rsync) + @$(call MESSAGE,"Syncing from source dir $(SRCDIR)") + @mkdir -p $(@D) + $(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 $($(PKG)_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS) $(RSYNC_VCS_EXCLUSIONS) $(call qstrip,$(SRCDIR))/ $(@D) + $(foreach hook,$($(PKG)_POST_RSYNC_HOOKS),$(call $(hook))$(sep)) + @$(call step_end,rsync) + $(Q)touch $@ + +# Patch +# +# The RAWNAME variable is the lowercased package name, which allows to +# find the package directory (typically package/) and the +# prefix of the patches +# +# For BR2_GLOBAL_PATCH_DIR, only generate if it is defined +$(BUILD_DIR)/%/.stamp_patched: PATCH_BASE_DIRS = $(PKGDIR) +$(BUILD_DIR)/%/.stamp_patched: PATCH_BASE_DIRS += $(addsuffix /$(RAWNAME),$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))) +$(BUILD_DIR)/%/.stamp_patched: + @$(call step_start,patch) + @$(call MESSAGE,"Patching") + $(foreach hook,$($(PKG)_PRE_PATCH_HOOKS),$(call $(hook))$(sep)) + $(foreach p,$($(PKG)_PATCH),$(APPLY_PATCHES) $(@D) $($(PKG)_DL_DIR) $(notdir $(p))$(sep)) + $(Q)( \ + for D in $(PATCH_BASE_DIRS); do \ + if test -d $${D}; then \ + if test -d $${D}/$($(PKG)_VERSION); then \ + $(APPLY_PATCHES) $(@D) $${D}/$($(PKG)_VERSION) \*.patch || exit 1; \ + else \ + $(APPLY_PATCHES) $(@D) $${D} \*.patch || exit 1; \ + fi; \ + fi; \ + done; \ + ) + $(foreach hook,$($(PKG)_POST_PATCH_HOOKS),$(call $(hook))$(sep)) + @$(call step_end,patch) + $(Q)touch $@ + +# Check that all directories specified in BR2_GLOBAL_PATCH_DIR exist. +$(foreach dir,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR)),\ + $(if $(wildcard $(dir)),,\ + $(error BR2_GLOBAL_PATCH_DIR contains nonexistent directory $(dir)))) + +# Configure +$(BUILD_DIR)/%/.stamp_configured: + @$(call step_start,configure) + @$(call MESSAGE,"Configuring") + $(Q)mkdir -p $(HOST_DIR) $(TARGET_DIR) $(STAGING_DIR) $(BINARIES_DIR) + $(call prepare-per-package-directory,$($(PKG)_FINAL_DEPENDENCIES)) + $(foreach hook,$($(PKG)_POST_PREPARE_HOOKS),$(call $(hook))$(sep)) + @$(call pkg_size_before,$(TARGET_DIR)) + @$(call pkg_size_before,$(STAGING_DIR),-staging) + @$(call pkg_size_before,$(BINARIES_DIR),-images) + @$(call pkg_size_before,$(HOST_DIR),-host) + $(foreach hook,$($(PKG)_PRE_CONFIGURE_HOOKS),$(call $(hook))$(sep)) + $($(PKG)_CONFIGURE_CMDS) + $(foreach hook,$($(PKG)_POST_CONFIGURE_HOOKS),$(call $(hook))$(sep)) + @$(call step_end,configure) + $(Q)touch $@ + +# Build +$(BUILD_DIR)/%/.stamp_built: + @$(call step_start,build) + @$(call MESSAGE,"Building") + $(foreach hook,$($(PKG)_PRE_BUILD_HOOKS),$(call $(hook))$(sep)) + +$($(PKG)_BUILD_CMDS) + $(foreach hook,$($(PKG)_POST_BUILD_HOOKS),$(call $(hook))$(sep)) + @$(call step_end,build) + $(Q)touch $@ + +# Install to host dir +$(BUILD_DIR)/%/.stamp_host_installed: + @$(call step_start,install-host) + @$(call MESSAGE,"Installing to host directory") + $(foreach hook,$($(PKG)_PRE_INSTALL_HOOKS),$(call $(hook))$(sep)) + +$($(PKG)_INSTALL_CMDS) + $(foreach hook,$($(PKG)_POST_INSTALL_HOOKS),$(call $(hook))$(sep)) + @$(call step_end,install-host) + $(Q)touch $@ + +# Install to staging dir +# +# Some packages install libtool .la files alongside any installed +# libraries. These .la files sometimes refer to paths relative to the +# sysroot, which libtool will interpret as absolute paths to host +# libraries instead of the target libraries. Since this is not what we +# want, these paths are fixed by prefixing them with $(STAGING_DIR). +# As we configure with --prefix=/usr, this fix needs to be applied to +# any path that starts with /usr. +# +# To protect against the case that the output or staging directories or +# the pre-installed external toolchain themselves are under /usr, we first +# substitute away any occurrences of these directories with @BASE_DIR@, +# @STAGING_DIR@ and @TOOLCHAIN_EXTERNAL_INSTALL_DIR@ respectively. +# +# Note that STAGING_DIR can be outside BASE_DIR when the user sets +# BR2_HOST_DIR to a custom value. Note that TOOLCHAIN_EXTERNAL_INSTALL_DIR +# can be under @BASE_DIR@ when it's a downloaded toolchain, and can be +# empty when we use an internal toolchain. +# +$(BUILD_DIR)/%/.stamp_staging_installed: + @$(call step_start,install-staging) + @$(call MESSAGE,"Installing to staging directory") + $(foreach hook,$($(PKG)_PRE_INSTALL_STAGING_HOOKS),$(call $(hook))$(sep)) + +$($(PKG)_INSTALL_STAGING_CMDS) + $(foreach hook,$($(PKG)_POST_INSTALL_STAGING_HOOKS),$(call $(hook))$(sep)) + $(Q)if test -n "$($(PKG)_CONFIG_SCRIPTS)" ; then \ + $(call MESSAGE,"Fixing package configuration files") ;\ + $(SED) "s,$(HOST_DIR),@HOST_DIR@,g" \ + -e "s,$(BASE_DIR),@BASE_DIR@,g" \ + -e "s,^\(exec_\)\?prefix=.*,\1prefix=@STAGING_DIR@/usr,g" \ + -e "s,-I/usr/,-I@STAGING_DIR@/usr/,g" \ + -e "s,-L/usr/,-L@STAGING_DIR@/usr/,g" \ + -e 's,@STAGING_DIR@,$$(dirname $$(readlink -e $$0))/../..,g' \ + -e 's,@HOST_DIR@,$$(dirname $$(readlink -e $$0))/../../../..,g' \ + -e "s,@BASE_DIR@,$(BASE_DIR),g" \ + $(addprefix $(STAGING_DIR)/usr/bin/,$($(PKG)_CONFIG_SCRIPTS)) ;\ + fi + @$(call MESSAGE,"Fixing libtool files") + for la in $$(find $(STAGING_DIR)/usr/lib* -name "*.la"); do \ + cp -a "$${la}" "$${la}.fixed" && \ + $(SED) "s:$(BASE_DIR):@BASE_DIR@:g" \ + -e "s:$(STAGING_DIR):@STAGING_DIR@:g" \ + $(if $(TOOLCHAIN_EXTERNAL_INSTALL_DIR),\ + -e "s:$(TOOLCHAIN_EXTERNAL_INSTALL_DIR):@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:g") \ + -e "s:\(['= ]\)/usr:\\1@STAGING_DIR@/usr:g" \ + -e "s:\(['= ]\)/lib:\\1@STAGING_DIR@/lib:g" \ + $(if $(TOOLCHAIN_EXTERNAL_INSTALL_DIR),\ + -e "s:@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:$(TOOLCHAIN_EXTERNAL_INSTALL_DIR):g") \ + -e "s:@STAGING_DIR@:$(STAGING_DIR):g" \ + -e "s:@BASE_DIR@:$(BASE_DIR):g" \ + "$${la}.fixed" && \ + if cmp -s "$${la}" "$${la}.fixed"; then \ + rm -f "$${la}.fixed"; \ + else \ + mv "$${la}.fixed" "$${la}"; \ + fi || exit 1; \ + done + @$(call step_end,install-staging) + $(Q)touch $@ + +# Install to images dir +$(BUILD_DIR)/%/.stamp_images_installed: + @$(call step_start,install-image) + @$(call MESSAGE,"Installing to images directory") + $(foreach hook,$($(PKG)_PRE_INSTALL_IMAGES_HOOKS),$(call $(hook))$(sep)) + +$($(PKG)_INSTALL_IMAGES_CMDS) + $(foreach hook,$($(PKG)_POST_INSTALL_IMAGES_HOOKS),$(call $(hook))$(sep)) + @$(call step_end,install-image) + $(Q)touch $@ + +# Install to target dir +$(BUILD_DIR)/%/.stamp_target_installed: + @$(call step_start,install-target) + @$(call MESSAGE,"Installing to target") + $(foreach hook,$($(PKG)_PRE_INSTALL_TARGET_HOOKS),$(call $(hook))$(sep)) + +$($(PKG)_INSTALL_TARGET_CMDS) + $(if $(BR2_INIT_SYSTEMD),\ + $($(PKG)_INSTALL_INIT_SYSTEMD)) + $(if $(BR2_INIT_SYSV)$(BR2_INIT_BUSYBOX),\ + $($(PKG)_INSTALL_INIT_SYSV)) + $(if $(BR2_INIT_OPENRC), \ + $(or $($(PKG)_INSTALL_INIT_OPENRC), \ + $($(PKG)_INSTALL_INIT_SYSV))) + $(foreach hook,$($(PKG)_POST_INSTALL_TARGET_HOOKS),$(call $(hook))$(sep)) + $(Q)if test -n "$($(PKG)_CONFIG_SCRIPTS)" ; then \ + $(RM) -f $(addprefix $(TARGET_DIR)/usr/bin/,$($(PKG)_CONFIG_SCRIPTS)) ; \ + fi + @$(call step_end,install-target) + $(Q)touch $@ + +# Final installation step, completed when all installation steps +# (host, images, staging, target) have completed +$(BUILD_DIR)/%/.stamp_installed: + @$(call pkg_size_after,$(TARGET_DIR)) + @$(call pkg_size_after,$(STAGING_DIR),-staging) + @$(call pkg_size_after,$(BINARIES_DIR),-images) + @$(call pkg_size_after,$(HOST_DIR),-host) + @$(call check_bin_arch) + $(Q)touch $@ + +# Remove package sources +$(BUILD_DIR)/%/.stamp_dircleaned: + $(if $(BR2_PER_PACKAGE_DIRECTORIES),rm -Rf $(PER_PACKAGE_DIR)/$(NAME)) + rm -Rf $(@D) + +################################################################################ +# virt-provides-single -- check that provider-pkg is the declared provider for +# the virtual package virt-pkg +# +# argument 1 is the lower-case name of the virtual package +# argument 2 is the upper-case name of the virtual package +# argument 3 is the lower-case name of the provider +# +# example: +# $(call virt-provides-single,libegl,LIBEGL,rpi-userland) +################################################################################ +define virt-provides-single +ifneq ($$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(2))),$(3)) +$$(error Configuration error: both "$(3)" and $$(BR2_PACKAGE_PROVIDES_$(2))\ +are selected as providers for virtual package "$(1)". Only one provider can\ +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 +# +# 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) +# +# Note about variable and function references: inside all blocks that are +# evaluated with $(eval), which includes all 'inner-xxx-package' blocks, +# specific rules apply with respect to variable and function references. +# - Numbered variables (parameters to the block) can be referenced with a single +# dollar sign: $(1), $(2), $(3), etc. +# - pkgdir and pkgname should be referenced with a single dollar sign too. These +# functions rely on 'the most recently parsed makefile' which is supposed to +# be the package .mk file. If we defer the evaluation of these functions using +# double dollar signs, then they may be evaluated too late, when other +# makefiles have already been parsed. One specific case is when $$(pkgdir) is +# assigned to a variable using deferred evaluation with '=' and this variable +# is used in a target rule outside the eval'ed inner block. In this case, the +# pkgdir will be that of the last makefile parsed by buildroot, which is not +# the expected value. This mechanism is for example used for the TARGET_PATCH +# rule. +# - All other variables should be referenced with a double dollar sign: +# $$(TARGET_DIR), $$($(2)_VERSION), etc. Also all make functions should be +# referenced with a double dollar sign: $$(subst), $$(call), $$(filter-out), +# etc. This rule ensures that these variables and functions are only expanded +# during the $(eval) step, and not earlier. Otherwise, unintuitive and +# undesired behavior occurs with respect to these variables and functions. +# +################################################################################ + +define inner-generic-package + +# When doing a package, we're definitely not doing a rootfs, but we +# may inherit it via the dependency chain, so we reset it. +$(1): ROOTFS= + +# Ensure the package is only declared once, i.e. do not accept that a +# package be re-defined by a br2-external tree +ifneq ($(call strip,$(filter $(1),$(PACKAGES_ALL))),) +$$(error Package '$(1)' defined a second time in '$(pkgdir)'; \ + previous definition was in '$$($(2)_PKGDIR)') +endif +PACKAGES_ALL += $(1) + +# Define default values for various package-related variables, if not +# already defined. For some variables (version, source, site and +# subdir), if they are undefined, we try to see if a variable without +# the HOST_ prefix is defined. If so, we use such a variable, so that +# this information has only to be specified once, for both the +# target and host packages of a given .mk file. + +$(2)_TYPE = $(4) +$(2)_NAME = $(1) +$(2)_RAWNAME = $$(patsubst host-%,%,$(1)) +$(2)_PKGDIR = $(pkgdir) + +# Keep the package version that may contain forward slashes in the _DL_VERSION +# variable, then replace all forward slashes ('/') by underscores ('_') to +# sanitize the package version that is used in paths, directory and file names. +# Forward slashes may appear in the package's version when pointing to a +# version control system branch or tag, for example remotes/origin/1_10_stable. +# Similar for spaces and colons (:) that may appear in date-based revisions for +# CVS. +ifndef $(2)_VERSION + ifdef $(3)_DL_VERSION + $(2)_DL_VERSION := $$($(3)_DL_VERSION) + else ifdef $(3)_VERSION + $(2)_DL_VERSION := $$($(3)_VERSION) + endif +else + $(2)_DL_VERSION := $$(strip $$($(2)_VERSION)) +endif +$(2)_VERSION := $$(call sanitize,$$($(2)_DL_VERSION)) + +$(2)_HASH_FILES = \ + $$(strip \ + $$(foreach d, $$($(2)_PKGDIR) $$(addsuffix /$$($(2)_RAWNAME), $$(call qstrip,$$(BR2_GLOBAL_PATCH_DIR))),\ + $$(if $$(wildcard $$(d)/$$($(2)_VERSION)/$$($(2)_RAWNAME).hash),\ + $$(d)/$$($(2)_VERSION)/$$($(2)_RAWNAME).hash,\ + $$(d)/$$($(2)_RAWNAME).hash\ + )\ + )\ + ) + +ifdef $(3)_OVERRIDE_SRCDIR + $(2)_OVERRIDE_SRCDIR ?= $$($(3)_OVERRIDE_SRCDIR) +endif + +$(2)_BASENAME = $$(if $$($(2)_VERSION),$(1)-$$($(2)_VERSION),$(1)) +$(2)_BASENAME_RAW = $$(if $$($(2)_VERSION),$$($(2)_RAWNAME)-$$($(2)_VERSION),$$($(2)_RAWNAME)) +$(2)_DL_DIR = $$(DL_DIR)/$$($(2)_DL_SUBDIR) +$(2)_DIR = $$(BUILD_DIR)/$$($(2)_BASENAME) + +ifndef $(2)_SUBDIR + ifdef $(3)_SUBDIR + $(2)_SUBDIR = $$($(3)_SUBDIR) + endif +endif + +ifndef $(2)_DL_SUBDIR + ifdef $(3)_DL_SUBDIR + $(2)_DL_SUBDIR = $$($(3)_DL_SUBDIR) + else + $(2)_DL_SUBDIR = $$($(2)_RAWNAME) + endif +endif + +ifndef $(2)_DOWNLOAD_DEPENDENCIES + ifdef $(3)_DOWNLOAD_DEPENDENCIES + $(2)_DOWNLOAD_DEPENDENCIES = $$(filter-out $(1),$$($(3)_DOWNLOAD_DEPENDENCIES)) + endif +endif + +ifndef $(2)_DL_ENV + ifdef $(3)_DL_ENV + $(2)_DL_ENV = $$($(3)_DL_ENV) + endif +endif + +ifndef $(2)_DOWNLOAD_POST_PROCESS + ifdef $(3)_DOWNLOAD_POST_PROCESS + $(2)_DOWNLOAD_POST_PROCESS = $$($(3)_DOWNLOAD_POST_PROCESS) + endif +endif + +ifndef $(2)_STRIP_COMPONENTS + ifdef $(3)_STRIP_COMPONENTS + $(2)_STRIP_COMPONENTS = $$($(3)_STRIP_COMPONENTS) + else + $(2)_STRIP_COMPONENTS ?= 1 + endif +endif + +$(2)_SRCDIR = $$($(2)_DIR)/$$($(2)_SUBDIR) +$(2)_BUILDDIR ?= $$($(2)_SRCDIR) + +ifneq ($$($(2)_OVERRIDE_SRCDIR),) +$(2)_VERSION = custom +endif + +ifndef $(2)_SOURCE + ifdef $(3)_SOURCE + $(2)_SOURCE = $$($(3)_SOURCE) + else ifdef $(2)_VERSION + $(2)_SOURCE ?= $$($(2)_BASENAME_RAW)$$(call pkg_source_ext,$(2)) + endif +endif + +# If FOO_ACTUAL_SOURCE_TARBALL is explicitly defined, it means FOO_SOURCE is +# indeed a binary (e.g. external toolchain) and FOO_ACTUAL_SOURCE_TARBALL/_SITE +# point to the actual sources tarball. Use the actual sources for legal-info. +# For most packages the FOO_SITE/FOO_SOURCE pair points to real source code, +# so these are the defaults for FOO_ACTUAL_*. +$(2)_ACTUAL_SOURCE_TARBALL ?= $$($(2)_SOURCE) +$(2)_ACTUAL_SOURCE_SITE ?= $$(call qstrip,$$($(2)_SITE)) + +ifndef $(2)_PATCH + ifdef $(3)_PATCH + $(2)_PATCH = $$($(3)_PATCH) + endif +endif + +$(2)_MAIN_DOWNLOAD = \ + $$(if $$($(2)_SOURCE),$$($(2)_SITE_METHOD)+$$($(2)_SITE)/$$($(2)_SOURCE)) + +$(2)_ADDITIONAL_DOWNLOADS = \ + $$(foreach p,$$($(2)_PATCH) $$($(2)_EXTRA_DOWNLOADS),\ + $$(if $$(findstring ://,$$(p)),$$(p),\ + $$($(2)_SITE_METHOD)+$$($(2)_SITE)/$$(p))) + +$(2)_ALL_DOWNLOADS = $$($(2)_MAIN_DOWNLOAD) $$($(2)_ADDITIONAL_DOWNLOADS) + +ifndef $(2)_SITE + ifdef $(3)_SITE + $(2)_SITE = $$($(3)_SITE) + endif +endif + +ifndef $(2)_SITE_METHOD + ifdef $(3)_SITE_METHOD + $(2)_SITE_METHOD = $$($(3)_SITE_METHOD) + else + # Try automatic detection using the scheme part of the URI + $(2)_SITE_METHOD = $$(call geturischeme,$$($(2)_SITE)) + endif +endif + +ifndef $(2)_DL_OPTS + ifdef $(3)_DL_OPTS + $(2)_DL_OPTS = $$($(3)_DL_OPTS) + endif +endif + +ifneq ($$(filter bzr cvs hg,$$($(2)_SITE_METHOD)),) +BR_NO_CHECK_HASH_FOR += $$($(2)_SOURCE) +endif + +ifndef $(2)_GIT_SUBMODULES + ifdef $(3)_GIT_SUBMODULES + $(2)_GIT_SUBMODULES = $$($(3)_GIT_SUBMODULES) + endif +endif + +ifndef $(2)_SVN_EXTERNALS + ifdef $(3)_SVN_EXTERNALS + $(2)_SVN_EXTERNALS = $$($(3)_SVN_EXTERNALS) + endif +endif + +# Do not accept to download git submodule if not using the git method +ifneq ($$($(2)_GIT_SUBMODULES),) + ifneq ($$($(2)_SITE_METHOD),git) + $$(error $(2) declares having git sub-modules, but does not use the \ + 'git' method (uses '$$($(2)_SITE_METHOD)' instead)) + endif +endif + +ifeq ($$($(2)_SITE_METHOD),local) +ifeq ($$($(2)_OVERRIDE_SRCDIR),) +$(2)_OVERRIDE_SRCDIR = $$($(2)_SITE) +endif +ifeq ($$($(2)_OVERRIDE_SRCDIR),) +$$(error $(1) has local site method, but `$(2)_SITE` is not defined) +endif +endif + +ifndef $(2)_LICENSE + ifdef $(3)_LICENSE + $(2)_LICENSE = $$($(3)_LICENSE) + endif +endif + +$(2)_LICENSE ?= unknown + +ifndef $(2)_LICENSE_FILES + ifdef $(3)_LICENSE_FILES + $(2)_LICENSE_FILES = $$($(3)_LICENSE_FILES) + endif +endif + +ifndef $(2)_REDISTRIBUTE + ifdef $(3)_REDISTRIBUTE + $(2)_REDISTRIBUTE = $$($(3)_REDISTRIBUTE) + endif +endif + +$(2)_REDISTRIBUTE ?= YES + +$(2)_REDIST_SOURCES_DIR = $$(REDIST_SOURCES_DIR_$$(call UPPERCASE,$(4)))/$$($(2)_BASENAME_RAW) + +# If any of the _CPE_ID_* variables are set, we assume the CPE ID +# information is valid for this package. +ifneq ($$($(2)_CPE_ID_VENDOR)$$($(2)_CPE_ID_PRODUCT)$$($(2)_CPE_ID_VERSION)$$($(2)_CPE_ID_UPDATE)$$($(2)_CPE_ID_PREFIX),) +$(2)_CPE_ID_VALID = YES +endif + +# When we're a host package, make sure to use the variables of the +# corresponding target package, if any. +ifneq ($$($(3)_CPE_ID_VENDOR)$$($(3)_CPE_ID_PRODUCT)$$($(3)_CPE_ID_VERSION)$$($(3)_CPE_ID_UPDATE)$$($(3)_CPE_ID_PREFIX),) +$(2)_CPE_ID_VALID = YES +endif + +# If the CPE ID is valid for the target package so it is for the host +# package +ifndef $(2)_CPE_ID_VALID + ifdef $(3)_CPE_ID_VALID + $(2)_CPE_ID_VALID = $$($(3)_CPE_ID_VALID) + endif +endif + +ifeq ($$($(2)_CPE_ID_VALID),YES) + # CPE_ID_VENDOR + ifndef $(2)_CPE_ID_VENDOR + ifdef $(3)_CPE_ID_VENDOR + $(2)_CPE_ID_VENDOR = $$($(3)_CPE_ID_VENDOR) + else + $(2)_CPE_ID_VENDOR = $$($(2)_RAWNAME)_project + endif + endif + + # CPE_ID_PRODUCT + ifndef $(2)_CPE_ID_PRODUCT + ifdef $(3)_CPE_ID_PRODUCT + $(2)_CPE_ID_PRODUCT = $$($(3)_CPE_ID_PRODUCT) + else + $(2)_CPE_ID_PRODUCT = $$($(2)_RAWNAME) + endif + endif + + # CPE_ID_VERSION + ifndef $(2)_CPE_ID_VERSION + ifdef $(3)_CPE_ID_VERSION + $(2)_CPE_ID_VERSION = $$($(3)_CPE_ID_VERSION) + else + $(2)_CPE_ID_VERSION = $$($(2)_VERSION) + endif + endif + + # CPE_ID_UPDATE + ifndef $(2)_CPE_ID_UPDATE + ifdef $(3)_CPE_ID_UPDATE + $(2)_CPE_ID_UPDATE = $$($(3)_CPE_ID_UPDATE) + else + $(2)_CPE_ID_UPDATE = * + endif + endif + + # CPE_ID_PREFIX + ifndef $(2)_CPE_ID_PREFIX + ifdef $(3)_CPE_ID_PREFIX + $(2)_CPE_ID_PREFIX = $$($(3)_CPE_ID_PREFIX) + else + $(2)_CPE_ID_PREFIX = cpe:2.3:a + endif + endif + + # Calculate complete CPE ID + $(2)_CPE_ID = $$($(2)_CPE_ID_PREFIX):$$($(2)_CPE_ID_VENDOR):$$($(2)_CPE_ID_PRODUCT):$$($(2)_CPE_ID_VERSION):$$($(2)_CPE_ID_UPDATE):*:*:*:*:*:* +endif # ifeq ($$($(2)_CPE_ID_VALID),YES) + +# When a target package is a toolchain dependency set this variable to +# 'NO' so the 'toolchain' dependency is not added to prevent a circular +# dependency. +# Similarly for the skeleton. +$(2)_ADD_TOOLCHAIN_DEPENDENCY ?= YES +$(2)_ADD_SKELETON_DEPENDENCY ?= YES +$(2)_ADD_CCACHE_DEPENDENCY ?= YES + + +ifeq ($(4),target) +ifeq ($$($(2)_ADD_SKELETON_DEPENDENCY),YES) +$(2)_DEPENDENCIES += skeleton +endif +ifeq ($$($(2)_ADD_TOOLCHAIN_DEPENDENCY),YES) +$(2)_DEPENDENCIES += toolchain +endif +endif + +ifeq ($$(BR2_CCACHE):$$($(2)_ADD_CCACHE_DEPENDENCY),y:YES) +$(2)_DEPENDENCIES += host-ccache +endif + +ifneq ($(1),host-skeleton) +$(2)_DEPENDENCIES += host-skeleton +endif + +ifneq ($$(filter cvs git svn,$$($(2)_SITE_METHOD)),) +$(2)_DOWNLOAD_DEPENDENCIES += \ + $(BR2_GZIP_HOST_DEPENDENCY) \ + $(BR2_TAR_HOST_DEPENDENCY) +endif + +ifeq ($$(filter host-tar host-skeleton host-fakedate,$(1)),) +$(2)_EXTRACT_DEPENDENCIES += $$(BR2_TAR_HOST_DEPENDENCY) +endif + +ifeq ($$(filter host-tar host-skeleton host-xz host-lzip host-fakedate,$(1)),) +$(2)_EXTRACT_DEPENDENCIES += \ + $$(foreach dl,$$($(2)_ALL_DOWNLOADS),\ + $$(call extractor-pkg-dependency,$$(notdir $$(dl)))) +endif + +ifeq ($$(BR2_REPRODUCIBLE),y) +ifeq ($$(filter host-skeleton host-fakedate,$(1)),) +$(2)_DEPENDENCIES += host-fakedate +endif +endif + +# Eliminate duplicates in dependencies +$(2)_FINAL_DEPENDENCIES = $$(sort $$($(2)_DEPENDENCIES)) +$(2)_FINAL_DOWNLOAD_DEPENDENCIES = $$(sort $$($(2)_DOWNLOAD_DEPENDENCIES)) +$(2)_FINAL_EXTRACT_DEPENDENCIES = $$(sort $$($(2)_EXTRACT_DEPENDENCIES)) +$(2)_FINAL_PATCH_DEPENDENCIES = $$(sort $$($(2)_PATCH_DEPENDENCIES)) +$(2)_FINAL_ALL_DEPENDENCIES = \ + $$(sort \ + $$($(2)_FINAL_DEPENDENCIES) \ + $$($(2)_FINAL_DOWNLOAD_DEPENDENCIES) \ + $$($(2)_FINAL_EXTRACT_DEPENDENCIES) \ + $$($(2)_FINAL_PATCH_DEPENDENCIES)) +$(2)_FINAL_RECURSIVE_DEPENDENCIES = $$(sort \ + $$(if $$(filter undefined,$$(origin $(2)_FINAL_RECURSIVE_DEPENDENCIES__X)), \ + $$(eval $(2)_FINAL_RECURSIVE_DEPENDENCIES__X := \ + $$(foreach p, \ + $$($(2)_FINAL_ALL_DEPENDENCIES), \ + $$(p) \ + $$($$(call UPPERCASE,$$(p))_FINAL_RECURSIVE_DEPENDENCIES) \ + ) \ + ) \ + ) \ + $$($(2)_FINAL_RECURSIVE_DEPENDENCIES__X)) + +$(2)_FINAL_RECURSIVE_RDEPENDENCIES = $$(sort \ + $$(if $$(filter undefined,$$(origin $(2)_FINAL_RECURSIVE_RDEPENDENCIES__X)), \ + $$(eval $(2)_FINAL_RECURSIVE_RDEPENDENCIES__X := \ + $$(foreach p, \ + $$($(2)_RDEPENDENCIES), \ + $$(p) \ + $$($$(call UPPERCASE,$$(p))_FINAL_RECURSIVE_RDEPENDENCIES) \ + ) \ + ) \ + ) \ + $$($(2)_FINAL_RECURSIVE_RDEPENDENCIES__X)) + +# define sub-target stamps +$(2)_TARGET_INSTALL = $$($(2)_DIR)/.stamp_installed +$(2)_TARGET_INSTALL_TARGET = $$($(2)_DIR)/.stamp_target_installed +$(2)_TARGET_INSTALL_STAGING = $$($(2)_DIR)/.stamp_staging_installed +$(2)_TARGET_INSTALL_IMAGES = $$($(2)_DIR)/.stamp_images_installed +$(2)_TARGET_INSTALL_HOST = $$($(2)_DIR)/.stamp_host_installed +$(2)_TARGET_BUILD = $$($(2)_DIR)/.stamp_built +$(2)_TARGET_CONFIGURE = $$($(2)_DIR)/.stamp_configured +$(2)_TARGET_RSYNC = $$($(2)_DIR)/.stamp_rsynced +$(2)_TARGET_PATCH = $$($(2)_DIR)/.stamp_patched +$(2)_TARGET_EXTRACT = $$($(2)_DIR)/.stamp_extracted +$(2)_TARGET_SOURCE = $$($(2)_DIR)/.stamp_downloaded +$(2)_TARGET_ACTUAL_SOURCE = $$($(2)_DIR)/.stamp_actual_downloaded +$(2)_TARGET_DIRCLEAN = $$($(2)_DIR)/.stamp_dircleaned + +# default extract command +$(2)_EXTRACT_CMDS ?= \ + $$(if $$($(2)_SOURCE),$$(INFLATE$$(suffix $$($(2)_SOURCE))) $$($(2)_DL_DIR)/$$($(2)_SOURCE) | \ + $$(TAR) --strip-components=$$($(2)_STRIP_COMPONENTS) \ + -C $$($(2)_DIR) \ + $$(foreach x,$$($(2)_EXCLUDES),--exclude='$$(x)' ) \ + $$(TAR_OPTIONS) -) + +# pre/post-steps hooks +$(2)_POST_PREPARE_HOOKS += \ + PPD_FIXUP_PATHS \ + PPD_PYTHON_REMOVE_SYSCONFIGDATA_PYC + +ifeq ($$($(2)_TYPE),target) +ifneq ($$(HOST_$(2)_KCONFIG_VAR),) +$$(error "Package $(1) defines host variant before target variant!") +endif +endif + +# Globaly remove following conflicting and useless files +$(2)_DROP_FILES_OR_DIRS += /share/info/dir + +ifeq ($$($(2)_TYPE),host) +$(2)_POST_INSTALL_HOOKS += REMOVE_CONFLICTING_USELESS_FILES_IN_HOST +else +$(2)_POST_INSTALL_STAGING_HOOKS += REMOVE_CONFLICTING_USELESS_FILES_IN_STAGING +$(2)_POST_INSTALL_TARGET_HOOKS += REMOVE_CONFLICTING_USELESS_FILES_IN_TARGET +endif + +# human-friendly targets and target sequencing +$(1): $(1)-install +$(1)-install: $$($(2)_TARGET_INSTALL) +$$($(2)_TARGET_INSTALL): $$($(2)_TARGET_BUILD) + +ifeq ($$($(2)_TYPE),host) +$$($(2)_TARGET_INSTALL): $$($(2)_TARGET_INSTALL_HOST) +else +$(2)_INSTALL_STAGING ?= NO +$(2)_INSTALL_IMAGES ?= NO +$(2)_INSTALL_TARGET ?= YES +ifeq ($$($(2)_INSTALL_TARGET),YES) +$$($(2)_TARGET_INSTALL): $$($(2)_TARGET_INSTALL_TARGET) +endif +ifeq ($$($(2)_INSTALL_STAGING),YES) +$$($(2)_TARGET_INSTALL): $$($(2)_TARGET_INSTALL_STAGING) +endif +ifeq ($$($(2)_INSTALL_IMAGES),YES) +$$($(2)_TARGET_INSTALL): $$($(2)_TARGET_INSTALL_IMAGES) +endif +endif + +ifeq ($$($(2)_INSTALL_TARGET),YES) +$(1)-install-target: $$($(2)_TARGET_INSTALL_TARGET) +$$($(2)_TARGET_INSTALL_TARGET): $$($(2)_TARGET_BUILD) +else +$(1)-install-target: +endif + +ifeq ($$($(2)_INSTALL_STAGING),YES) +$(1)-install-staging: $$($(2)_TARGET_INSTALL_STAGING) +$$($(2)_TARGET_INSTALL_STAGING): $$($(2)_TARGET_BUILD) +# Some packages use install-staging stuff for install-target +$$($(2)_TARGET_INSTALL_TARGET): $$($(2)_TARGET_INSTALL_STAGING) +else +$(1)-install-staging: +endif + +ifeq ($$($(2)_INSTALL_IMAGES),YES) +$(1)-install-images: $$($(2)_TARGET_INSTALL_IMAGES) +$$($(2)_TARGET_INSTALL_IMAGES): $$($(2)_TARGET_BUILD) +else +$(1)-install-images: +endif + +$(1)-install-host: $$($(2)_TARGET_INSTALL_HOST) +$$($(2)_TARGET_INSTALL_HOST): $$($(2)_TARGET_BUILD) + +$(1)-build: $$($(2)_TARGET_BUILD) +$$($(2)_TARGET_BUILD): $$($(2)_TARGET_CONFIGURE) + +# Since $(2)_FINAL_DEPENDENCIES are phony targets, they are always "newer" +# than $(2)_TARGET_CONFIGURE. This would force the configure step (and +# therefore the other steps as well) to be re-executed with every +# invocation of make. Therefore, make $(2)_FINAL_DEPENDENCIES an order-only +# dependency by using |. + +$(1)-configure: $$($(2)_TARGET_CONFIGURE) +$$($(2)_TARGET_CONFIGURE): | $$($(2)_FINAL_DEPENDENCIES) + +$$($(2)_TARGET_SOURCE) $$($(2)_TARGET_RSYNC): | prepare +$$($(2)_TARGET_SOURCE) $$($(2)_TARGET_RSYNC): | dependencies + +ifeq ($$($(2)_OVERRIDE_SRCDIR),) +# In the normal case (no package override), the sequence of steps is +# source, by downloading +# depends +# extract +# patch +# configure +$$($(2)_TARGET_CONFIGURE): $$($(2)_TARGET_PATCH) + +$(1)-patch: $$($(2)_TARGET_PATCH) +$$($(2)_TARGET_PATCH): $$($(2)_TARGET_EXTRACT) +# Order-only dependency +$$($(2)_TARGET_PATCH): | $$(patsubst %,%-patch,$$($(2)_FINAL_PATCH_DEPENDENCIES)) + +$(1)-extract: $$($(2)_TARGET_EXTRACT) +$$($(2)_TARGET_EXTRACT): $$($(2)_TARGET_SOURCE) +$$($(2)_TARGET_EXTRACT): | $$($(2)_FINAL_EXTRACT_DEPENDENCIES) + +$(1)-depends: $$($(2)_FINAL_ALL_DEPENDENCIES) + +$(1)-source: $$($(2)_TARGET_SOURCE) +$$($(2)_TARGET_SOURCE): | $$($(2)_FINAL_DOWNLOAD_DEPENDENCIES) + +$(1)-all-source: $(1)-legal-source +$(1)-legal-info: $(1)-legal-source +$(1)-legal-source: $(1)-source + +# Only download the actual source if it differs from the 'main' archive +ifneq ($$($(2)_ACTUAL_SOURCE_TARBALL),) +ifneq ($$($(2)_ACTUAL_SOURCE_TARBALL),$$($(2)_SOURCE)) +$(1)-legal-source: $$($(2)_TARGET_ACTUAL_SOURCE) +endif # actual sources != sources +endif # actual sources != "" + +$(1)-external-deps: + @for p in $$($(2)_SOURCE) $$($(2)_PATCH) $$($(2)_EXTRA_DOWNLOADS) ; do \ + echo `basename $$$$p` ; \ + done +else +# In the package override case, the sequence of steps +# source, by rsyncing +# depends +# configure + +# Use an order-only dependency so the "-clean-for-rebuild" rule +# can remove the stamp file without triggering the configure step. +$$($(2)_TARGET_CONFIGURE): | $$($(2)_TARGET_RSYNC) + +$(1)-depends: $$($(2)_FINAL_DEPENDENCIES) + +$(1)-patch: $(1)-rsync +$(1)-extract: $(1)-rsync + +$(1)-rsync: $$($(2)_TARGET_RSYNC) + +$(1)-source: +$(1)-legal-source: + +$(1)-external-deps: + @echo "file://$$($(2)_OVERRIDE_SRCDIR)" +endif + +$(1)-show-version: + @echo $$($(2)_VERSION) + +$(1)-show-depends: + @echo $$($(2)_FINAL_ALL_DEPENDENCIES) + +$(1)-show-recursive-depends: + @echo $$($(2)_FINAL_RECURSIVE_DEPENDENCIES) + +$(1)-show-rdepends: + @echo $$($(2)_RDEPENDENCIES) + +$(1)-show-recursive-rdepends: + @echo $$($(2)_FINAL_RECURSIVE_RDEPENDENCIES) + +$(1)-show-build-order: $$(patsubst %,%-show-build-order,$$($(2)_FINAL_ALL_DEPENDENCIES)) + @: + $$(info $(1)) + +$(1)-show-info: + @: + $$(info $$(call clean-json,{ $$(call json-info,$(2)) })) + +$(1)-graph-depends: graph-depends-requirements + $(call pkg-graph-depends,$(1),--direct) + +$(1)-graph-rdepends: graph-depends-requirements + $(call pkg-graph-depends,$(1),--reverse) + +$(1)-graph-both-depends: graph-depends-requirements + $(call pkg-graph-depends,$(1),--direct --reverse) + +$(1)-all-source: $(1)-source +$(1)-all-source: $$(foreach p,$$($(2)_FINAL_ALL_DEPENDENCIES),$$(p)-all-source) + +$(1)-all-external-deps: $(1)-external-deps +$(1)-all-external-deps: $$(foreach p,$$($(2)_FINAL_ALL_DEPENDENCIES),$$(p)-all-external-deps) + +$(1)-all-legal-info: $(1)-legal-info +$(1)-all-legal-info: $$(foreach p,$$($(2)_FINAL_ALL_DEPENDENCIES),$$(p)-all-legal-info) + +$(1)-dirclean: $$($(2)_TARGET_DIRCLEAN) + +$(1)-clean-for-reinstall: +ifneq ($$($(2)_OVERRIDE_SRCDIR),) + rm -f $$($(2)_TARGET_RSYNC) +endif + rm -f $$($(2)_TARGET_INSTALL) + rm -f $$($(2)_TARGET_INSTALL_STAGING) + rm -f $$($(2)_TARGET_INSTALL_TARGET) + rm -f $$($(2)_TARGET_INSTALL_IMAGES) + rm -f $$($(2)_TARGET_INSTALL_HOST) + +$(1)-reinstall: $(1)-clean-for-reinstall .WAIT $(1) + +$(1)-clean-for-rebuild: $(1)-clean-for-reinstall + rm -f $$($(2)_TARGET_BUILD) + +$(1)-rebuild: $(1)-clean-for-rebuild .WAIT $(1) + +$(1)-clean-for-reconfigure: $(1)-clean-for-rebuild + rm -f $$($(2)_TARGET_CONFIGURE) + +$(1)-reconfigure: $(1)-clean-for-reconfigure .WAIT $(1) + +# define the PKG variable for all targets, containing the +# uppercase package variable prefix +$$($(2)_TARGET_INSTALL): PKG=$(2) +$$($(2)_TARGET_INSTALL_TARGET): PKG=$(2) +$$($(2)_TARGET_INSTALL_STAGING): PKG=$(2) +$$($(2)_TARGET_INSTALL_IMAGES): PKG=$(2) +$$($(2)_TARGET_INSTALL_HOST): PKG=$(2) +$$($(2)_TARGET_BUILD): PKG=$(2) +$$($(2)_TARGET_CONFIGURE): PKG=$(2) +$$($(2)_TARGET_CONFIGURE): NAME=$(1) +$$($(2)_TARGET_RSYNC): SRCDIR=$$($(2)_OVERRIDE_SRCDIR) +$$($(2)_TARGET_RSYNC): PKG=$(2) +$$($(2)_TARGET_PATCH): PKG=$(2) +$$($(2)_TARGET_PATCH): RAWNAME=$$(patsubst host-%,%,$(1)) +$$($(2)_TARGET_PATCH): PKGDIR=$(pkgdir) +$$($(2)_TARGET_EXTRACT): PKG=$(2) +$$($(2)_TARGET_SOURCE): PKG=$(2) +$$($(2)_TARGET_SOURCE): PKGDIR=$(pkgdir) +$$($(2)_TARGET_ACTUAL_SOURCE): PKG=$(2) +$$($(2)_TARGET_ACTUAL_SOURCE): PKGDIR=$(pkgdir) +$$($(2)_TARGET_DIRCLEAN): PKG=$(2) +$$($(2)_TARGET_DIRCLEAN): NAME=$(1) + +# Compute the name of the Kconfig option that correspond to the +# package being enabled. +ifeq ($(1),linux) +$(2)_KCONFIG_VAR = BR2_LINUX_KERNEL +else ifneq ($$(filter boot/% $$(foreach dir,$$(BR2_EXTERNAL_DIRS),$$(dir)/boot/%),$(pkgdir)),) +$(2)_KCONFIG_VAR = BR2_TARGET_$(2) +else ifneq ($$(filter toolchain/% $$(foreach dir,$$(BR2_EXTERNAL_DIRS),$$(dir)/toolchain/%),$(pkgdir)),) +$(2)_KCONFIG_VAR = BR2_$(2) +else ifeq ($$($(2)_IS_VIRTUAL),YES) +$(2)_KCONFIG_VAR = BR2_PACKAGE_HAS_$(2) +else +$(2)_KCONFIG_VAR = BR2_PACKAGE_$(2) +endif + +# legal-info: declare dependencies and set values used later for the manifest +ifneq ($$($(2)_LICENSE_FILES),) +$(2)_MANIFEST_LICENSE_FILES = $$($(2)_LICENSE_FILES) +endif + +# 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 +# any). +$(1)-legal-info: $(1)-patch + +# We only save the sources of packages we want to redistribute, that are +# non-overriden (local or true override). +ifeq ($$($(2)_REDISTRIBUTE),YES) +ifeq ($$($(2)_OVERRIDE_SRCDIR),) +# Packages that have a tarball need it downloaded beforehand +$(1)-legal-info: $(1)-source $$(REDIST_SOURCES_DIR_$$(call UPPERCASE,$(4))) +endif +endif + +# legal-info: produce legally relevant info. +$(1)-legal-info: PKG=$(2) +$(1)-legal-info: + @$$(call MESSAGE,"Collecting legal info") +# Packages without a source are assumed to be part of Buildroot, skip them. + $$(foreach hook,$$($(2)_PRE_LEGAL_INFO_HOOKS),$$(call $$(hook))$$(sep)) +ifneq ($$(call qstrip,$$($(2)_SOURCE)),) + +# Save license files if defined +# We save the license files for any kind of package: normal, local, +# overridden, or non-redistributable alike. +# The reason to save license files even for no-redistribute packages +# 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)),) + $(Q)$$(call legal-warning-pkg,$$($(2)_BASENAME_RAW),cannot save license ($(2)_LICENSE_FILES not defined)) +else + $(Q)$$(foreach F,$$($(2)_LICENSE_FILES),$$(call legal-license-file,$$(call UPPERCASE,$(4)),$$($(2)_RAWNAME),$$($(2)_BASENAME_RAW),$$(F),$$($(2)_DIR)/$$(F),$$($(2)_HASH_FILES))$$(sep)) +endif # license files + +ifeq ($$($(2)_REDISTRIBUTE),YES) +ifneq ($$($(2)_OVERRIDE_SRCDIR),) +# local/override packages: copy it and archive the copy + @echo "Package is of type local or override, archive sources" + $$(Q)rm -rf $$($(2)_BUILDDIR)/.legal-info-rsync + $$(Q)mkdir -p $$($(2)_BUILDDIR)/.legal-info-rsync + $$(Q)rsync -au --chmod=u=rwX,go=rX $$(RSYNC_VCS_EXCLUSIONS) \ + $(call qstrip,$$($(2)_OVERRIDE_SRCDIR))/ \ + $$($(2)_BUILDDIR)/.legal-info-rsync/ + $$(Q). support/download/helpers; set -x; cd $$($(2)_BUILDDIR); TAR=$$(TAR) mk_tar_gz \ + $$($(2)_BUILDDIR)/.legal-info-rsync/ \ + $$($(2)_BASENAME_RAW) \ + @0 \ + $$($(2)_REDIST_SOURCES_DIR)/$$($(2)_BASENAME_RAW).tar.gz + $$(Q)rm -rf $$($(2)_BUILDDIR)/.legal-info-rsync +else +# Other packages + +# Save the source tarball and any extra downloads, but not +# patches, as they are handled specially afterwards. + $$(foreach e,$$($(2)_ACTUAL_SOURCE_TARBALL) $$(notdir $$($(2)_EXTRA_DOWNLOADS)),\ + $$(Q)support/scripts/hardlink-or-copy \ + $$($(2)_DL_DIR)/$$(e) \ + $$($(2)_REDIST_SOURCES_DIR)$$(sep)) +# Save patches and generate the series file + $$(Q)while read f; do \ + support/scripts/hardlink-or-copy \ + $$$${f} \ + $$($(2)_REDIST_SOURCES_DIR) || exit 1; \ + printf "%s\n" "$$$${f##*/}" >>$$($(2)_REDIST_SOURCES_DIR)/series || exit 1; \ + done <$$($(2)_DIR)/.applied_patches_list +endif # other packages + +endif # redistribute + @$$(call legal-manifest,$$(call UPPERCASE,$(4)),$$($(2)_RAWNAME),$$($(2)_VERSION),$$(subst $$(space)$$(comma),$$(comma),$$($(2)_LICENSE)),$$($(2)_MANIFEST_LICENSE_FILES),$$($(2)_ACTUAL_SOURCE_TARBALL),$$($(2)_ACTUAL_SOURCE_SITE),$$(call legal-deps,$(1))) +endif # ifneq ($$(call qstrip,$$($(2)_SOURCE)),) + $$(foreach hook,$$($(2)_POST_LEGAL_INFO_HOOKS),$$(call $$(hook))$$(sep)) + +# add package to the general list of targets if requested by the buildroot +# configuration +ifeq ($$($$($(2)_KCONFIG_VAR)),y) + +# Ensure the calling package is the declared provider for all the virtual +# packages it claims to be an implementation of. +ifeq ($(BR_BUILDING),y) +ifneq ($$($(2)_PROVIDES),) +$$(foreach pkg,$$($(2)_PROVIDES),\ + $$(eval $$(call virt-provides-single,$$(pkg),$$(call UPPERCASE,$$(pkg)),$(1))$$(sep))) +endif +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 +# all variables here in pkg-generic, even though pkg-generic should +# have no knowledge of infra-specific variables. +$(eval $(call check-deprecated-variable,$(2)_MAKE_OPT,$(2)_MAKE_OPTS)) +$(eval $(call check-deprecated-variable,$(2)_INSTALL_OPT,$(2)_INSTALL_OPTS)) +$(eval $(call check-deprecated-variable,$(2)_INSTALL_TARGET_OPT,$(2)_INSTALL_TARGET_OPTS)) +$(eval $(call check-deprecated-variable,$(2)_INSTALL_STAGING_OPT,$(2)_INSTALL_STAGING_OPTS)) +$(eval $(call check-deprecated-variable,$(2)_INSTALL_HOST_OPT,$(2)_INSTALL_OPTS)) +$(eval $(call check-deprecated-variable,$(2)_INSTALL_HOST_OPTS,$(2)_INSTALL_OPTS)) +$(eval $(call check-deprecated-variable,$(2)_AUTORECONF_OPT,$(2)_AUTORECONF_OPTS)) +$(eval $(call check-deprecated-variable,$(2)_CONF_OPT,$(2)_CONF_OPTS)) +$(eval $(call check-deprecated-variable,$(2)_BUILD_OPT,$(2)_BUILD_OPTS)) +$(eval $(call check-deprecated-variable,$(2)_KCONFIG_OPT,$(2)_KCONFIG_OPTS)) +$(eval $(call check-deprecated-variable,$(2)_GETTEXTIZE,$(2)_AUTOPOINT)) + +PACKAGES += $(1) + +ifneq ($$($(2)_PERMISSIONS),) +PACKAGES_PERMISSIONS_TABLE += $$($(2)_PERMISSIONS)$$(sep) +endif +ifneq ($$($(2)_DEVICES),) +PACKAGES_DEVICES_TABLE += $$($(2)_DEVICES)$$(sep) +endif +ifneq ($$($(2)_USERS),) +PACKAGES_USERS += $$($(2)_USERS)$$(sep) +endif +ifneq ($$($(2)_LINUX_CONFIG_FIXUPS),) +PACKAGES_LINUX_CONFIG_FIXUPS += $$($(2)_LINUX_CONFIG_FIXUPS)$$(sep) +endif +TARGET_FINALIZE_HOOKS += $$($(2)_TARGET_FINALIZE_HOOKS) +ROOTFS_PRE_CMD_HOOKS += $$($(2)_ROOTFS_PRE_CMD_HOOKS) +KEEP_PYTHON_PY_FILES += $$($(2)_KEEP_PY_FILES) + +ifneq ($$($(2)_SELINUX_MODULES),) +PACKAGES_SELINUX_MODULES += $$($(2)_SELINUX_MODULES) +endif + +ifeq ($(BR2_PACKAGE_REFPOLICY_UPSTREAM_VERSION),y) +PACKAGES_SELINUX_EXTRA_MODULES_DIRS += \ + $$(if $$(wildcard $$($(2)_PKGDIR)/selinux),$$($(2)_PKGDIR)/selinux) +endif + +ifeq ($$($(2)_SITE_METHOD),svn) +DL_TOOLS_DEPENDENCIES += svn +else ifeq ($$($(2)_SITE_METHOD),git) +DL_TOOLS_DEPENDENCIES += git +ifneq ($$($(2)_GIT_LFS),) +DL_TOOLS_DEPENDENCIES += git-lfs +endif +else ifeq ($$($(2)_SITE_METHOD),bzr) +DL_TOOLS_DEPENDENCIES += bzr +else ifeq ($$($(2)_SITE_METHOD),scp) +DL_TOOLS_DEPENDENCIES += scp ssh +else ifeq ($$($(2)_SITE_METHOD),hg) +DL_TOOLS_DEPENDENCIES += hg +else ifeq ($$($(2)_SITE_METHOD),cvs) +DL_TOOLS_DEPENDENCIES += cvs +else ifneq ($(filter ftp ftps,$$($(2)_SITE_METHOD)),) +DL_TOOLS_DEPENDENCIES += curl +endif # SITE_METHOD + +# cargo/go vendoring (may) need git +ifeq ($$($(2)_DOWNLOAD_POST_PROCESS),cargo) +DL_TOOLS_DEPENDENCIES += git +else ifeq ($$($(2)_DOWNLOAD_POST_PROCESS),go) +DL_TOOLS_DEPENDENCIES += git +endif + +DL_TOOLS_DEPENDENCIES += $$(call extractor-system-dependency,$$($(2)_SOURCE)) + +# Ensure all virtual targets are PHONY. Listed alphabetically. +.PHONY: $(1) \ + $(1)-all-external-deps \ + $(1)-all-legal-info \ + $(1)-all-source \ + $(1)-build \ + $(1)-clean-for-rebuild \ + $(1)-clean-for-reconfigure \ + $(1)-clean-for-reinstall \ + $(1)-configure \ + $(1)-depends \ + $(1)-dirclean \ + $(1)-external-deps \ + $(1)-extract \ + $(1)-graph-depends \ + $(1)-graph-rdepends \ + $(1)-install \ + $(1)-install-host \ + $(1)-install-images \ + $(1)-install-staging \ + $(1)-install-target \ + $(1)-legal-info \ + $(1)-legal-source \ + $(1)-patch \ + $(1)-rebuild \ + $(1)-reconfigure \ + $(1)-reinstall \ + $(1)-rsync \ + $(1)-show-depends \ + $(1)-show-info \ + $(1)-show-version \ + $(1)-source + +ifneq ($$($(2)_SOURCE),) +ifeq ($$($(2)_SITE),) +$$(error $(2)_SITE cannot be empty when $(2)_SOURCE is not) +endif +endif + +ifeq ($$(patsubst %/,ERROR,$$($(2)_SITE)),ERROR) +$$(error $(2)_SITE ($$($(2)_SITE)) cannot have a trailing slash) +endif + +ifneq ($$($(2)_HELP_CMDS),) +HELP_PACKAGES += $(2) +endif + +endif # $(2)_KCONFIG_VAR +endef # inner-generic-package + +################################################################################ +# generic-package -- the target generator macro for generic packages +################################################################################ + +# In the case of target packages, keep the package name "pkg" +generic-package = $(call inner-generic-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) +# In the case of host packages, turn the package name "pkg" into "host-pkg" +host-generic-package = $(call inner-generic-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host) + +# :mode=makefile: diff --git a/package/pkg-golang.mk b/package/pkg-golang.mk new file mode 100644 index 00000000..8e27602d --- /dev/null +++ b/package/pkg-golang.mk @@ -0,0 +1,177 @@ +################################################################################ +# Golang package infrastructure +# +# This file implements an infrastructure that eases development of package .mk +# files for Go packages. It should be used for all packages that are written in +# go. +# +# See the Buildroot documentation for details on the usage of this +# infrastructure +# +# +# In terms of implementation, this golang 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 golang behavior. The package can also define some post operation +# hooks. +# +################################################################################ + +GO_BIN = $(HOST_DIR)/bin/go + +################################################################################ +# inner-golang-package -- defines how the configuration, compilation and +# installation of a Go package should be done, implements a few hooks to tune +# the build process for Go specificities 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-golang-package + +$(2)_BUILD_OPTS += \ + -ldflags "$$($(2)_LDFLAGS)" \ + -modcacherw \ + -tags "$$($(2)_TAGS)" \ + -trimpath \ + -p $$(PARALLEL_JOBS) \ + -buildvcs=false + +# Target packages need the Go compiler on the host at download time (for +# vendoring), and at build and install time. +$(2)_DOWNLOAD_DEPENDENCIES += host-go +$(2)_DEPENDENCIES += host-go + +$(2)_BUILD_TARGETS ?= . + +# If the build target is just ".", then we assume the binary to be +# produced is named after the package. If however, a build target has +# been specified, we assume that the binaries to be produced are named +# after each build target building them (below in _BUILD_CMDS). +ifeq ($$($(2)_BUILD_TARGETS),.) +$(2)_BIN_NAME ?= $$($(2)_RAWNAME) +endif + +$(2)_INSTALL_BINS ?= $$($(2)_RAWNAME) + +# Source files in Go usually use an import path resolved around +# domain/vendor/software. We infer domain/vendor/software from the upstream URL +# of the project. +$(2)_SRC_DOMAIN = $$(call domain,$$($(2)_SITE)) +$(2)_SRC_VENDOR = $$(word 1,$$(subst /, ,$$(call notdomain,$$($(2)_SITE)))) +$(2)_SRC_SOFTWARE = $$(word 2,$$(subst /, ,$$(call notdomain,$$($(2)_SITE)))) + +# $(2)_GOMOD is the root Go module path for the project, inferred if not set. +# If the go.mod file does not exist, one is written with this root path. +$(2)_GOMOD ?= $$($(2)_SRC_DOMAIN)/$$($(2)_SRC_VENDOR)/$$($(2)_SRC_SOFTWARE) + +# Generate a go.mod file if it doesn't exist. Note: Go is configured +# to use the "vendor" dir and not make network calls. +define $(2)_GEN_GOMOD + if [ ! -f $$(@D)/go.mod ]; then \ + printf "module $$($(2)_GOMOD)\n" > $$(@D)/go.mod; \ + fi +endef +$(2)_POST_PATCH_HOOKS += $(2)_GEN_GOMOD + +$(2)_DOWNLOAD_POST_PROCESS = go +$(2)_DL_ENV += \ + $$(HOST_GO_COMMON_ENV) \ + GOPROXY=direct \ + $$($(2)_GO_ENV) + +# Because we append vendored info, we can't rely on the values being empty +# once we eventually get into the generic-package infra. So, we duplicate +# the heuristics here +ifndef $(2)_LICENSE + ifdef $(3)_LICENSE + $(2)_LICENSE = $$($(3)_LICENSE) + endif +endif + +# Due to vendoring, it is pretty likely that not all licenses are +# listed in _LICENSE. If the license is unset, it is "unknown" +# so adding unknowns to some unknown is still some other unkown, +# so don't append the blurb in that case. +ifneq ($$($(2)_LICENSE),) +$(2)_LICENSE += , vendored dependencies licenses probably not listed +endif + +# Build step. Only define it if not already defined by the package .mk +# file. +ifndef $(2)_BUILD_CMDS +ifeq ($(4),target) + +ifeq ($(BR2_STATIC_LIBS),y) +$(2)_LDFLAGS += -extldflags '-static' +$(2)_TAGS += osusergo netgo +endif + +# Build package for target +define $(2)_BUILD_CMDS + $$(foreach d,$$($(2)_BUILD_TARGETS),\ + cd $$(@D); \ + $$(HOST_GO_TARGET_ENV) \ + $$($(2)_GO_ENV) \ + $$(GO_BIN) build -v $$($(2)_BUILD_OPTS) \ + -o $$(@D)/bin/$$(or $$($(2)_BIN_NAME),$$(notdir $$(d))) \ + $$($(2)_GOMOD)/$$(d) + ) +endef +else +# Build package for host +define $(2)_BUILD_CMDS + $$(foreach d,$$($(2)_BUILD_TARGETS),\ + cd $$(@D); \ + $$(HOST_GO_HOST_ENV) \ + $$($(2)_GO_ENV) \ + $$(GO_BIN) build -v $$($(2)_BUILD_OPTS) \ + -o $$(@D)/bin/$$(or $$($(2)_BIN_NAME),$$(notdir $$(d))) \ + $$($(2)_GOMOD)/$$(d) + ) +endef +endif +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 + $$(foreach d,$$($(2)_INSTALL_BINS),\ + $$(INSTALL) -D -m 0755 $$(@D)/bin/$$(d) $$(TARGET_DIR)/usr/bin/$$(d) + ) +endef +endif + +# Host installation step +ifndef $(2)_INSTALL_CMDS +define $(2)_INSTALL_CMDS + $$(foreach d,$$($(2)_INSTALL_BINS),\ + $$(INSTALL) -D -m 0755 $$(@D)/bin/$$(d) $$(HOST_DIR)/bin/$$(d) + ) +endef +endif + +# Call the generic package infrastructure to generate the necessary make +# targets +$(call inner-generic-package,$(1),$(2),$(3),$(4)) + +endef # inner-golang-package + +################################################################################ +# golang-package -- the target generator macro for Go packages +################################################################################ + +golang-package = $(call inner-golang-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) +host-golang-package = $(call inner-golang-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host) diff --git a/package/pkg-kconfig.mk b/package/pkg-kconfig.mk new file mode 100644 index 00000000..8000de16 --- /dev/null +++ b/package/pkg-kconfig.mk @@ -0,0 +1,328 @@ +################################################################################ +# Kconfig package infrastructure +# +# This file implements an infrastructure that eases development of +# package .mk files for packages that use kconfig for configuration files. +# It is based on the generic-package infrastructure, and inherits all of its +# features. +# +# See the Buildroot documentation for details on the usage of this +# infrastructure. +# +################################################################################ + +# Macro to update back the custom (def)config file +# Must only be called if $(PKG)_KCONFIG_FILE is set and $(PKG)_KCONFIG_DEFCONFIG) +# is not set. +# $(1): file to copy from +define kconfig-package-update-config + @$(if $($(PKG)_KCONFIG_FRAGMENT_FILES), \ + echo "Unable to perform $(@) when fragment files are set"; exit 1) + $(Q)if [ -d $($(PKG)_KCONFIG_FILE) ]; then \ + echo "Unable to perform $(@) when $($(PKG)_KCONFIG_FILE) is a directory"; \ + exit 1; \ + fi + $(Q)mkdir -p $(dir $($(PKG)_KCONFIG_FILE)) + cp -f $($(PKG)_DIR)/$(1) $($(PKG)_KCONFIG_FILE) + $(Q)touch --reference $($(PKG)_DIR)/$($(PKG)_KCONFIG_STAMP_DOTCONFIG) $($(PKG)_KCONFIG_FILE) +endef + +PKG_KCONFIG_COMMON_OPTS = \ + HOSTCC="$(HOSTCC_NOCCACHE)" + +# Macro to save the defconfig file +# $(1): the name of the package in upper-case letters +define kconfig-package-savedefconfig + $($(1)_KCONFIG_MAKE) savedefconfig +endef + +# The correct way to regenerate a .config file is to use 'make olddefconfig'. +# For historical reasons, the target name is 'oldnoconfig' between Linux kernel +# versions 2.6.36 and 3.6, and remains as an alias in later versions. +# In older versions, and in some other projects that use kconfig, the target is +# not supported at all, and we use 'yes "" | make oldconfig' as a fallback +# only, as this can fail in complex cases. +# $(1): the name of the package in upper-case letters +define kconfig-package-regen-dot-config + $(Q)[ -e $($(1)_DIR)/.br_regen_dot_config ] || \ + $($(1)_KCONFIG_MAKE) -pn config 2>/dev/null \ + | sed 's/^\([_0-9a-zA-Z]*config\):.*/\1/ p; d' >$($(1)_DIR)/.br_regen_dot_config + $(Q)if grep -q '\bolddefconfig\b' $($(1)_DIR)/.br_regen_dot_config; then \ + $($(1)_KCONFIG_MAKE) olddefconfig; \ + elif grep -q '\boldnoconfig\b' $($(1)_DIR)/.br_regen_dot_config; then \ + $($(1)_KCONFIG_MAKE) oldnoconfig; \ + else \ + yes "" | $($(1)_KCONFIG_MAKE) oldconfig; \ + fi +endef + +# Macro to create a .config file where all given fragments are merged into. +# $(1): the name of the package in upper-case letters +# $(2): name of the .config file +# $(3): fragment files to merge +define kconfig-package-merge-config + $(Q)$(if $($(1)_KCONFIG_DEFCONFIG),\ + $($(1)_KCONFIG_MAKE) $($(1)_KCONFIG_DEFCONFIG),\ + $(INSTALL) -m 0644 -D $($(1)_KCONFIG_FILE) $(2)) + $(Q)support/kconfig/merge_config.sh -m -O $(dir $(2)) $(2) $(3) + $(call kconfig-package-regen-dot-config,$(1)) +endef + +################################################################################ +# inner-kconfig-package -- generates the make targets needed to support a +# kconfig package +# +# 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-kconfig-package + +# Default values +$(2)_MAKE ?= $$(MAKE) +$(2)_KCONFIG_EDITORS ?= menuconfig +$(2)_KCONFIG_DOTCONFIG ?= .config +$(2)_KCONFIG_SUPPORTS_DEFCONFIG ?= YES + +# Register the kconfig dependencies as regular dependencies, so that +# they are also accounted for in the generated graphs. +$(2)_DEPENDENCIES += $$($(2)_KCONFIG_DEPENDENCIES) + +# Generate the kconfig-related help: one entry for each editor. +# Additionally, if the package is *not* using an in-tree defconfig +# name, an entry for updating the package configuration file. +ifndef $(2)_HELP_CMDS +define $(2)_HELP_CMDS + $$(foreach editor, $$($(2)_KCONFIG_EDITORS), \ + @printf ' %-22s - Run %s %s\n' $(1)-$$(editor) $(1) $$(editor) + ) + $$(if $$($(2)_KCONFIG_DEFCONFIG),,\ + $$(if $$(filter YES,$$($(2)_KCONFIG_SUPPORTS_DEFCONFIG)),\ + @printf ' %-22s - Save the %s configuration as a defconfig file\n' \ + $(1)-update-defconfig $(1) + @printf ' %-22s to %s\n' '' $$($(2)_KCONFIG_FILE) + @printf ' %-22s (or override with %s_KCONFIG_FILE)\n' '' $(2) + ) + @printf ' %-22s - Save the %s configuration as a full .config file\n' \ + $(1)-update-config $(1) + @printf ' %-22s to %s\n' '' $$($(2)_KCONFIG_FILE) + @printf ' %-22s (or override with %s_KCONFIG_FILE)\n' '' $(2) + ) +endef +endif + +# Call the generic package infrastructure to generate the necessary +# make targets. +# Note: this must be done _before_ attempting to use $$($(2)_DIR) in a +# dependency expression +$(call inner-generic-package,$(1),$(2),$(3),$(4)) + +# Do not use $(2)_KCONFIG_DOTCONFIG as stamp file, because the package +# buildsystem (e.g. linux >= 4.19) may touch it, thus rendering our +# timestamps out of date, thus re-trigerring the build of the package. +# Instead, use a specific file of our own as timestamp. +$(2)_KCONFIG_STAMP_DOTCONFIG = .stamp_dotconfig + +# 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. +# +# Since those files only have a order-only dependency, make would treat +# any missing one as a "force" target: +# https://www.gnu.org/software/make/manual/make.html#Force-Targets +# and would forcibly any rule that depend on those files, causing a +# rebuild of the kernel each time make is called. +# +# So, we provide a recipe that checks all of those files exist, to +# overcome that standard make behaviour. +# +$$($(2)_KCONFIG_FILE) $$($(2)_KCONFIG_FRAGMENT_FILES): | $(1)-patch + for f in $$($(2)_KCONFIG_FILE) $$($(2)_KCONFIG_FRAGMENT_FILES); do \ + if [ ! -f "$$$${f}" ]; then \ + printf "Kconfig file or fragment '%s' for '%s' does not exist\n" "$$$${f}" "$(1)"; \ + exit 1; \ + fi; \ + done + +$(2)_KCONFIG_MAKE = \ + $$($(2)_MAKE_ENV) $$($(2)_MAKE) -C $$($(2)_DIR) \ + $$(PKG_KCONFIG_COMMON_OPTS) $$($(2)_KCONFIG_OPTS) + +# The specified source configuration file and any additional configuration file +# 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)/$$($(2)_KCONFIG_STAMP_DOTCONFIG): $$($(2)_KCONFIG_FILE) $$($(2)_KCONFIG_FRAGMENT_FILES) + $$(call prepare-per-package-directory,$$($(2)_KCONFIG_DEPENDENCIES)) + $$(call kconfig-package-merge-config,$(2),$$(@D)/$$($(2)_KCONFIG_DOTCONFIG),\ + $$($(2)_KCONFIG_FRAGMENT_FILES)) + $$(Q)touch $$(@D)/$$($(2)_KCONFIG_STAMP_DOTCONFIG) + +# 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)/$$($(2)_KCONFIG_STAMP_DOTCONFIG): | $(1)-patch + +# Some packages may need additional tools to be present by the time their +# kconfig structure is parsed (e.g. the linux kernel may need to call to +# the compiler to test its features). +$$($(2)_DIR)/$$($(2)_KCONFIG_STAMP_DOTCONFIG): | $$($(2)_KCONFIG_DEPENDENCIES) + +# In order to get a usable, consistent configuration, some fixup may be needed. +# The exact rules are specified by the package .mk file. +define $(2)_FIXUP_DOT_CONFIG + $$($(2)_KCONFIG_FIXUP_CMDS) + $$(call kconfig-package-regen-dot-config,$(2)) + $$(Q)touch $$($(2)_DIR)/.stamp_kconfig_fixup_done +endef + +$$($(2)_DIR)/.stamp_kconfig_fixup_done: PKG=$(2) +$$($(2)_DIR)/.stamp_kconfig_fixup_done: $$($(2)_DIR)/$$($(2)_KCONFIG_STAMP_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)/$$($(2)_KCONFIG_STAMP_DOTCONFIG) + +# 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 +# already called above, so we can effectively use this variable. +ifeq ($$($$($(2)_KCONFIG_VAR)),y) + +ifeq ($$(BR_BUILDING),y) +# Either FOO_KCONFIG_FILE or FOO_KCONFIG_DEFCONFIG is required... +ifeq ($$(or $$($(2)_KCONFIG_FILE),$$($(2)_KCONFIG_DEFCONFIG)),) +$$(error Internal error: no value specified for $(2)_KCONFIG_FILE or $(2)_KCONFIG_DEFCONFIG) +endif +# ... but not both: +ifneq ($$(and $$($(2)_KCONFIG_FILE),$$($(2)_KCONFIG_DEFCONFIG)),) +$$(error Internal error: $(2)_KCONFIG_FILE and $(2)_KCONFIG_DEFCONFIG are mutually exclusive but both are defined) +endif +endif + +# For the configurators, we do want to use the system-provided host +# tools, not the ones we build. This is particularly true for +# pkg-config; if we use our pkg-config (from host-pkgconf), then it +# would not look for the .pc from the host, but we do need them, +# especially to find ncurses, GTK+, Qt (resp. for menuconfig and +# nconfig, gconfig, xconfig). +# So we simply remove our PATH and PKG_CONFIG_* variables. +$(2)_CONFIGURATOR_MAKE_ENV = \ + $$(filter-out PATH=% PKG_CONFIG=% PKG_CONFIG_SYSROOT_DIR=% \ + PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=% PKG_CONFIG_ALLOW_SYSTEM_LIBS=% \ + PKG_CONFIG_LIBDIR=%,$$($(2)_MAKE_ENV)) \ + PKG_CONFIG_PATH="$(HOST_PKG_CONFIG_PATH)" + +# Configuration editors (menuconfig, ...) +# +# We need to apply the configuration fixups right after a configuration +# editor exits, so that it is possible to save the configuration right +# after exiting an editor, and so the user always sees a .config file +# that is clean wrt. our requirements. +# +# Because commands in $(1)_FIXUP_KCONFIG are probably using $(@D), we +# need to have a valid @D set. But, because the configurators rules are +# not real files and do not contain the path to the package build dir, +# @D would be just '.' in this case. So, we use an intermediate rule +# with a stamp-like file which path is in the package build dir, so we +# end up having a valid @D. +# +$$(addprefix $(1)-,$$($(2)_KCONFIG_EDITORS)): $(1)-%: $$($(2)_DIR)/.kconfig_editor_% +$$($(2)_DIR)/.kconfig_editor_%: PKG=$(2) +$$($(2)_DIR)/.kconfig_editor_%: $$($(2)_DIR)/.stamp_kconfig_fixup_done + $$($(2)_CONFIGURATOR_MAKE_ENV) $$($(2)_MAKE) -C $$($(2)_DIR) \ + $$(PKG_KCONFIG_COMMON_OPTS) $$($(2)_KCONFIG_OPTS) $$(*) + rm -f $$($(2)_DIR)/.stamp_{kconfig_fixup_done,configured,built} + rm -f $$($(2)_DIR)/.stamp_{target,staging,images}_installed + $$($(2)_FIXUP_DOT_CONFIG) + +# Saving back the configuration +# +# Ideally, that should directly depend on $$($(2)_DIR)/.stamp_kconfig_fixup_done, +# but that breaks the use-case in PR-8156 (from a clean tree): +# make menuconfig <- enable kernel, use an in-tree defconfig, save and exit +# make linux-menuconfig <- enable/disable whatever option, save and exit +# make menuconfig <- change to use a custom defconfig file, set a path, save and exit +# make linux-update-config <- should save to the new custom defconfig file +# +# Because of that use-case, saving the configuration can *not* directly +# depend on the stamp file, because it itself depends on the .config, +# which in turn depends on the (newly-set an non-existent) custom +# defconfig file. +# +# Instead, we use a PHONY rule that will catch that situation. +# +$(1)-check-configuration-done: + @if [ ! -f $$($(2)_DIR)/.stamp_kconfig_fixup_done ]; then \ + echo "$(1) is not yet configured"; \ + exit 1; \ + fi + +ifeq ($$($(2)_KCONFIG_SUPPORTS_DEFCONFIG),YES) +.PHONY: $(1)-savedefconfig +$(1)-savedefconfig: PKG=$(2) +$(1)-savedefconfig: $(1)-check-configuration-done + $$(call kconfig-package-savedefconfig,$(2)) +endif + +ifeq ($$($(2)_KCONFIG_DEFCONFIG),) +# Target to copy back the configuration to the source configuration file +# Even though we could use 'cp --preserve-timestamps' here, the separate +# cp and 'touch --reference' is used for symmetry with $(1)-update-defconfig. +.PHONY: $(1)-update-config +$(1)-update-config: PKG=$(2) +$(1)-update-config: $(1)-check-configuration-done + $$(call kconfig-package-update-config,$$($(2)_KCONFIG_DOTCONFIG)) + +ifeq ($$($(2)_KCONFIG_SUPPORTS_DEFCONFIG),YES) +# Note: make sure the timestamp of the stored configuration is not newer than +# the .config to avoid a useless rebuild. Note that, contrary to +# $(1)-update-config, the reference for 'touch' is _not_ the file from which +# we copy. +.PHONY: $(1)-update-defconfig +$(1)-update-defconfig: PKG=$(2) +$(1)-update-defconfig: $(1)-savedefconfig + $$(call kconfig-package-update-config,defconfig) +endif + +endif + +# Target to output differences between the configuration obtained via the +# defconfig + fragments (if any) and the current configuration. +# Note: it preserves the timestamp of the current configuration when moving it +# around. +$(1)-diff-config: PKG=$(2) +$(1)-diff-config: $(1)-check-configuration-done + $$(Q)cp -a $$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG) $$($(2)_DIR)/.config.dc.bak + $$(call kconfig-package-merge-config,$(2),$$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG),\ + $$($(2)_KCONFIG_FRAGMENT_FILES)) + $$(Q)utils/diffconfig $$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG) \ + $$($(2)_DIR)/.config.dc.bak + $$(Q)cp -a $$($(2)_DIR)/.config.dc.bak $$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG) + $$(Q)rm -f $$($(2)_DIR)/.config.dc.bak + + +endif # package enabled + +.PHONY: \ + $(1)-diff-config \ + $(1)-check-configuration-done \ + $$($(2)_DIR)/.kconfig_editor_% \ + $$(addprefix $(1)-,$$($(2)_KCONFIG_EDITORS)) + +endef # inner-kconfig-package + +################################################################################ +# kconfig-package -- the target generator macro for kconfig packages +################################################################################ + +kconfig-package = $(call inner-kconfig-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) diff --git a/package/pkg-kernel-module.mk b/package/pkg-kernel-module.mk new file mode 100644 index 00000000..4f64a73f --- /dev/null +++ b/package/pkg-kernel-module.mk @@ -0,0 +1,103 @@ +################################################################################ +# kernel module infrastructure for building Linux kernel modules +# +# This file implements an infrastructure that eases development of package +# .mk files for out-of-tree Linux kernel modules. It should be used for all +# packages that build a Linux kernel module using the kernel's out-of-tree +# buildsystem, unless they use a complex custom buildsystem. +# +# The kernel-module infrastructure requires the packages that use it to also +# use another package infrastructure. kernel-module only defines post-build +# and post-install hooks. This allows the package to build both kernel +# modules and/or user-space components (with any of the other *-package +# infra). +# +# As such, it is to be used in conjunction with another *-package infra, +# like so: +# +# $(eval $(kernel-module)) +# $(eval $(generic-package)) +# +# Note: if the caller needs access to the kernel modules (either after they +# are built or after they are installed), it will have to define its own +# post-build/install hooks *after* calling kernel-module, but *before* +# calling the other *-package infra, like so: +# +# $(eval $(kernel-module)) +# define FOO_MOD_TWEAK +# # do something +# endef +# FOO_POST_BUILD_HOOKS += FOO_MOD_TWEAK +# $(eval $(generic-package)) +# +# Note: this infra does not check that the kernel is enabled; it is expected +# to be enforced at the Kconfig level with proper 'depends on'. +################################################################################ + +################################################################################ +# inner-kernel-module -- generates the make targets needed to support building +# a kernel module +# +# argument 1 is the lowercase package name +# argument 2 is the uppercase package name +################################################################################ + +define inner-kernel-module + +# If the package is enabled, ensure the kernel will support modules +ifeq ($$(BR2_PACKAGE_$(2)),y) +LINUX_NEEDS_MODULES = y +endif + +# The kernel must be built first. +$(2)_DEPENDENCIES += \ + linux \ + $$(BR2_MAKE_HOST_DEPENDENCY) + +# This is only defined in some infrastructures (e.g. autotools, cmake), +# but not in others (e.g. generic). So define it here as well. +$(2)_MAKE ?= $$(BR2_MAKE) + +# If not specified, consider the source of the kernel module to be at +# the root of the package. +$(2)_MODULE_SUBDIRS ?= . + +# Build the kernel module(s) +# Force PWD for those packages that want to use it to find their +# includes and other support files (Booo!) +define $(2)_KERNEL_MODULES_BUILD + @$$(call MESSAGE,"Building kernel module(s)") + $$(foreach d,$$($(2)_MODULE_SUBDIRS), \ + $$(LINUX_MAKE_ENV) $$($$(PKG)_MAKE) \ + -C $$(LINUX_DIR) \ + $$(LINUX_MAKE_FLAGS) \ + $$($(2)_MODULE_MAKE_OPTS) \ + PWD=$$(@D)/$$(d) \ + M=$$(@D)/$$(d) \ + modules$$(sep)) +endef +$(2)_POST_BUILD_HOOKS += $(2)_KERNEL_MODULES_BUILD + +# Install the kernel module(s) +# Force PWD for those packages that want to use it to find their +# includes and other support files (Booo!) +define $(2)_KERNEL_MODULES_INSTALL + @$$(call MESSAGE,"Installing kernel module(s)") + $$(foreach d,$$($(2)_MODULE_SUBDIRS), \ + $$(LINUX_MAKE_ENV) $$($$(PKG)_MAKE) \ + -C $$(LINUX_DIR) \ + $$(LINUX_MAKE_FLAGS) \ + $$($(2)_MODULE_MAKE_OPTS) \ + PWD=$$(@D)/$$(d) \ + M=$$(@D)/$$(d) \ + modules_install$$(sep)) +endef +$(2)_POST_INSTALL_TARGET_HOOKS += $(2)_KERNEL_MODULES_INSTALL + +endef + +################################################################################ +# kernel-module -- the target generator macro for kernel module packages +################################################################################ + +kernel-module = $(call inner-kernel-module,$(pkgname),$(call UPPERCASE,$(pkgname))) diff --git a/package/pkg-luarocks.mk b/package/pkg-luarocks.mk new file mode 100644 index 00000000..fd798558 --- /dev/null +++ b/package/pkg-luarocks.mk @@ -0,0 +1,155 @@ +################################################################################ +# LuaRocks package infrastructure +# see http://luarocks.org/ +# +# This file implements an infrastructure that eases development of +# package .mk files for LuaRocks packages. +# LuaRocks supports various build.type : builtin, make, cmake. +# This luarocks infrastructure supports only the builtin mode, +# the make & cmake modes could be directly handled by generic & cmake infrastructure. +# +# See the Buildroot documentation for details on the usage of this +# infrastructure +# +# In terms of implementation, this LuaRocks infrastructure requires +# the .mk file to only specify metadata information about the +# package: name, version, etc. +# +################################################################################ + +LUAROCKS_RUN_CMD = $(HOST_DIR)/bin/luarocks +LUAROCKS_CFLAGS = $(TARGET_CFLAGS) -fPIC +HOST_LUAROCKS_CFLAGS = $(HOST_CFLAGS) -fPIC +ifeq ($(BR2_PACKAGE_LUA_5_3),y) +LUAROCKS_CFLAGS += -DLUA_COMPAT_5_2 +HOST_LUAROCKS_CFLAGS += -DLUA_COMPAT_5_2 +else ifeq ($(BR2_PACKAGE_LUA_5_4),y) +LUAROCKS_CFLAGS += -DLUA_COMPAT_5_3 +HOST_LUAROCKS_CFLAGS += -DLUA_COMPAT_5_3 +endif + +################################################################################ +# inner-luarocks-package -- defines how the configuration, compilation and +# installation of a LuaRocks package should be done, implements a few hooks to +# tune the build process 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-luarocks-package + +ifndef $(2)_NAME_UPSTREAM + ifdef $(3)_NAME_UPSTREAM + $(2)_NAME_UPSTREAM = $($(3)_NAME_UPSTREAM) + else + $(2)_NAME_UPSTREAM ?= $(1) + endif +endif + +ifndef $(2)_SUBDIR + ifdef $(3)_SUBDIR + $(2)_SUBDIR = $($(3)_SUBDIR) + else + $(2)_SUBDIR ?= $$($(3)_NAME_UPSTREAM)-$$(shell echo "$$($(3)_VERSION)" | sed -e "s/-[0-9]$$$$//") + endif +endif + +ifndef $(2)_ROCKSPEC + ifdef $(3)_ROCKSPEC + $(2)_ROCKSPEC = $($(3)_ROCKSPEC) + else + $(2)_ROCKSPEC ?= $$(call LOWERCASE,$$($(3)_NAME_UPSTREAM))-$$($(3)_VERSION).rockspec + endif +endif + +ifndef $(2)_SOURCE + ifdef $(3)_SOURCE + $(2)_SOURCE = $($(3)_SOURCE) + else + $(2)_SOURCE ?= $$(call LOWERCASE,$$($(3)_NAME_UPSTREAM))-$$($(3)_VERSION).src.rock + endif +endif + +ifndef $(2)_SITE + ifdef $(3)_SITE + $(2)_SITE = $($(3)_SITE) + else + $(2)_SITE ?= $$(call qstrip,$$(BR2_LUAROCKS_MIRROR)) + endif +endif + +ifeq ($(4),target) +$(2)_DEPENDENCIES += luainterpreter +endif +# host-luarocks implies host-luainterpreter +$(2)_EXTRACT_DEPENDENCIES += host-luarocks + +# +# Extract step. Extract into a temporary dir and move the relevant part to the +# source dir. +# +ifndef $(2)_EXTRACT_CMDS +define $(2)_EXTRACT_CMDS + mkdir -p $$($(2)_DIR)/luarocks-extract + cd $$($(2)_DIR)/luarocks-extract && \ + $$(LUAROCKS_RUN_CMD) unpack --force $$($(2)_DL_DIR)/$$($(2)_SOURCE) + mv $$($(2)_DIR)/luarocks-extract/*/* $$($(2)_DIR) +endef +endif + +# +# Build/install step. +# +ifndef $(2)_INSTALL_TARGET_CMDS +define $(2)_INSTALL_TARGET_CMDS + cd $$($(2)_SRCDIR) && \ + LUAROCKS_CONFIG=$$(LUAROCKS_CONFIG_FILE) \ + $$(LUAROCKS_RUN_CMD) make --keep --deps-mode none \ + --tree "$$(TARGET_DIR)/usr" \ + DEPS_DIR="$$(STAGING_DIR)/usr" \ + LUA_INCDIR="$$(STAGING_DIR)/usr/include" \ + LUA_LIBDIR="$$(STAGING_DIR)/usr/lib" \ + CC=$$(TARGET_CC) \ + LD=$$(TARGET_CC) \ + CFLAGS="$$(LUAROCKS_CFLAGS)" \ + LIBFLAG="-shared $$(TARGET_LDFLAGS)" \ + $$($(2)_BUILD_OPTS) $$($(2)_ROCKSPEC) +endef +endif + +ifndef $(2)_INSTALL_CMDS +define $(2)_INSTALL_CMDS + cd $$($(2)_SRCDIR) && \ + LUAROCKS_CONFIG=$$(HOST_LUAROCKS_CONFIG_FILE) \ + $$(LUAROCKS_RUN_CMD) make --keep --deps-mode none \ + DEPS_DIR="$$(HOST_DIR)" \ + CFLAGS="$$(HOST_LUAROCKS_CFLAGS)" \ + LIBFLAG="-shared $$(HOST_LDFLAGS)" \ + $$($(2)_BUILD_OPTS) $$($(2)_ROCKSPEC) +endef +endif + +# Call the generic package infrastructure to generate the necessary +# make targets +$(call inner-generic-package,$(1),$(2),$(3),$(4)) + +# Upgrade helper +$(1)-upgrade: host-luarocks + $$(LUAROCKS_RUN_CMD) buildroot $$($(2)_NAME_UPSTREAM) $(1) + +.PHONY: $(1)-upgrade + +endef + +################################################################################ +# luarocks-package -- the target generator macro for LuaRocks packages +################################################################################ + +luarocks-package = $(call inner-luarocks-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) +host-luarocks-package = $(call inner-luarocks-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host) diff --git a/package/pkg-meson.mk b/package/pkg-meson.mk new file mode 100644 index 00000000..bc805b79 --- /dev/null +++ b/package/pkg-meson.mk @@ -0,0 +1,281 @@ +################################################################################ +# Meson package infrastructure +# +# This file implements an infrastructure that eases development of +# package .mk files for Meson packages. It should be used for all +# packages that use Meson as their build system. +# +# See the Buildroot documentation for details on the usage of this +# infrastructure +# +# In terms of implementation, this Meson 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 Meson behaviour. The +# package can also define some post operation hooks. +# +################################################################################ + +# +# Pass PYTHONNOUSERSITE environment variable when invoking Meson or Ninja, so +# $(HOST_DIR)/bin/python3 will not look for Meson modules in +# $HOME/.local/lib/python3.x/site-packages +# +MESON = PYTHONNOUSERSITE=y $(HOST_DIR)/bin/meson +NINJA = PYTHONNOUSERSITE=y $(HOST_DIR)/bin/ninja +NINJA_OPTS = $(if $(VERBOSE),-v) + +# https://mesonbuild.com/Reference-tables.html#cpu-families +ifeq ($(BR2_arcle)$(BR2_arceb),y) +PKG_MESON_TARGET_CPU_FAMILY = arc +else ifeq ($(BR2_arm)$(BR2_armeb),y) +PKG_MESON_TARGET_CPU_FAMILY = arm +else ifeq ($(BR2_aarch64)$(BR2_aarch64_be),y) +PKG_MESON_TARGET_CPU_FAMILY = aarch64 +else ifeq ($(BR2_i386),y) +PKG_MESON_TARGET_CPU_FAMILY = x86 +else ifeq ($(BR2_m68k),y) +PKG_MESON_TARGET_CPU_FAMILY = m68k +else ifeq ($(BR2_microblazeel)$(BR2_microblazebe),y) +PKG_MESON_TARGET_CPU_FAMILY = microblaze +else ifeq ($(BR2_mips)$(BR2_mipsel),y) +PKG_MESON_TARGET_CPU_FAMILY = mips +else ifeq ($(BR2_mips64)$(BR2_mips64el),y) +PKG_MESON_TARGET_CPU_FAMILY = mips64 +else ifeq ($(BR2_powerpc),y) +PKG_MESON_TARGET_CPU_FAMILY = ppc +else ifeq ($(BR2_powerpc64)$(BR2_powerpc64le),y) +PKG_MESON_TARGET_CPU_FAMILY = ppc64 +else ifeq ($(BR2_riscv)$(BR2_RISCV_32),yy) +PKG_MESON_TARGET_CPU_FAMILY = riscv32 +else ifeq ($(BR2_riscv)$(BR2_RISCV_64),yy) +PKG_MESON_TARGET_CPU_FAMILY = riscv64 +else ifeq ($(BR2_s390x),y) +PKG_MESON_TARGET_CPU_FAMILY = s390x +else ifeq ($(BR2_sh4)$(BR2_sh4eb)$(BR2_sh4a)$(BR2_sh4aeb),y) +PKG_MESON_TARGET_CPU_FAMILY = sh4 +else ifeq ($(BR2_sparc),y) +PKG_MESON_TARGET_CPU_FAMILY = sparc +else ifeq ($(BR2_sparc64),y) +PKG_MESON_TARGET_CPU_FAMILY = sparc64 +else ifeq ($(BR2_x86_64),y) +PKG_MESON_TARGET_CPU_FAMILY = x86_64 +else +PKG_MESON_TARGET_CPU_FAMILY = $(ARCH) +endif + +# To avoid populating the cross-file with non existing compilers, +# we tie them to /bin/false +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +PKG_MESON_TARGET_CXX = $(TARGET_CXX) +else +PKG_MESON_TARGET_CXX = /bin/false +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_FORTRAN),y) +PKG_MESON_TARGET_FC = $(TARGET_FC) +else +PKG_MESON_TARGET_FC = /bin/false +endif + +ifeq ($(BR2_STATIC_LIBS),y) +PKG_MESON_DEFAULT_LIBRARY=static +else ifeq ($(BR2_SHARED_LIBS),y) +PKG_MESON_DEFAULT_LIBRARY=shared +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +PKG_MESON_DEFAULT_LIBRARY=both +endif + +# Generates sed patterns for patching the cross-compilation.conf template, +# since Flags might contain commas the arguments are passed indirectly by +# variable name (stripped to deal with whitespaces). +# Arguments are variable containing cflags, cxxflags, ldflags, fcflags +define PKG_MESON_CROSSCONFIG_SED + -e "s%@TARGET_CC@%$(TARGET_CC)%g" \ + -e "s%@TARGET_CXX@%$(PKG_MESON_TARGET_CXX)%g" \ + -e "s%@TARGET_AR@%$(TARGET_AR)%g" \ + -e "s%@TARGET_FC@%$(PKG_MESON_TARGET_FC)%g" \ + -e "s%@TARGET_STRIP@%$(TARGET_STRIP)%g" \ + -e "s%@TARGET_ARCH@%$(PKG_MESON_TARGET_CPU_FAMILY)%g" \ + -e "s%@TARGET_CPU@%$(GCC_TARGET_CPU)%g" \ + -e "s%@TARGET_ENDIAN@%$(call qstrip,$(call LOWERCASE,$(BR2_ENDIAN)))%g" \ + -e "s%@TARGET_FCFLAGS@%$(call make-sq-comma-list,$($(strip $(4))))%g" \ + -e "s%@TARGET_CFLAGS@%$(call make-sq-comma-list,$($(strip $(1))))%g" \ + -e "s%@TARGET_LDFLAGS@%$(call make-sq-comma-list,$($(strip $(3))))%g" \ + -e "s%@TARGET_CXXFLAGS@%$(call make-sq-comma-list,$($(strip $(2))))%g" \ + -e "s%@BR2_CMAKE@%$(BR2_CMAKE)%g" \ + -e "s%@PKGCONF_HOST_BINARY@%$(HOST_DIR)/bin/pkgconf%g" \ + -e "s%@HOST_DIR@%$(HOST_DIR)%g" \ + -e "s%@STAGING_DIR@%$(STAGING_DIR)%g" \ + -e "s%@STATIC@%$(if $(BR2_STATIC_LIBS),true,false)%g" \ + $(TOPDIR)/support/misc/cross-compilation.conf.in +endef + +################################################################################ +# inner-meson-package -- defines how the configuration, compilation and +# installation of a Meson package should be done, implements a few hooks to +# tune the build process 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-meson-package + +# +# Configure step. Only define it if not already defined by the package +# .mk file. And take care of the differences between host and target +# packages. +# +ifndef $(2)_CONFIGURE_CMDS +ifeq ($(4),target) + +$(2)_CFLAGS ?= $$(TARGET_CFLAGS) +$(2)_LDFLAGS ?= $$(TARGET_LDFLAGS) +$(2)_CXXFLAGS ?= $$(TARGET_CXXFLAGS) + +# Configure package for target +# +# +define $(2)_CONFIGURE_CMDS + rm -rf $$($$(PKG)_SRCDIR)/build + mkdir -p $$($$(PKG)_SRCDIR)/build + sed -e "/^\[binaries\]$$$$/s:$$$$:$$(foreach x,$$($(2)_MESON_EXTRA_BINARIES),\n$$(x)):" \ + -e "/^\[properties\]$$$$/s:$$$$:$$(foreach x,$$($(2)_MESON_EXTRA_PROPERTIES),\n$$(x)):" \ + $$(call PKG_MESON_CROSSCONFIG_SED,$(2)_CFLAGS,$(2)_CXXFLAGS,$(2)_LDFLAGS,$(2)_FCFLAGS) \ + > $$($$(PKG)_SRCDIR)/build/cross-compilation.conf + PATH=$$(BR_PATH) \ + CC_FOR_BUILD="$$(HOSTCC)" \ + CXX_FOR_BUILD="$$(HOSTCXX)" \ + $$($$(PKG)_CONF_ENV) \ + $$(MESON) setup \ + --prefix=/usr \ + --libdir=lib \ + --default-library=$(PKG_MESON_DEFAULT_LIBRARY) \ + --buildtype=$(if $(BR2_ENABLE_RUNTIME_DEBUG),debug,release) \ + --cross-file=$$($$(PKG)_SRCDIR)/build/cross-compilation.conf \ + -Db_pie=false \ + -Db_staticpic=$(if $(BR2_m68k_cf),false,true) \ + -Dstrip=false \ + -Dbuild.pkg_config_path=$$(HOST_DIR)/lib/pkgconfig \ + -Dbuild.cmake_prefix_path=$$(HOST_DIR)/lib/cmake \ + $$($$(PKG)_CONF_OPTS) \ + $$($$(PKG)_SRCDIR) $$($$(PKG)_SRCDIR)/build +endef +else + +# Configure package for host +define $(2)_CONFIGURE_CMDS + rm -rf $$($$(PKG)_SRCDIR)/build + mkdir -p $$($$(PKG)_SRCDIR)/build + $$(HOST_CONFIGURE_OPTS) \ + $$($$(PKG)_CONF_ENV) $$(MESON) setup \ + --prefix=$$(HOST_DIR) \ + --libdir=lib \ + --sysconfdir=$$(HOST_DIR)/etc \ + --localstatedir=$$(HOST_DIR)/var \ + --default-library=shared \ + --buildtype=release \ + --wrap-mode=nodownload \ + -Dstrip=true \ + $$($$(PKG)_CONF_OPTS) \ + $$($$(PKG)_SRCDIR) $$($$(PKG)_SRCDIR)/build +endef +endif +endif + +$(2)_DEPENDENCIES += host-meson + +# +# Build step. Only define it if not already defined by the package .mk +# file. +# +ifndef $(2)_BUILD_CMDS +ifeq ($(4),target) +define $(2)_BUILD_CMDS + $$(TARGET_MAKE_ENV) $$($$(PKG)_NINJA_ENV) \ + $$(NINJA) $$(NINJA_OPTS) $$($$(PKG)_NINJA_OPTS) -C $$($$(PKG)_SRCDIR)/build +endef +else +define $(2)_BUILD_CMDS + $$(HOST_MAKE_ENV) $$($$(PKG)_NINJA_ENV) \ + $$(NINJA) $$(NINJA_OPTS) $$($$(PKG)_NINJA_OPTS) -C $$($$(PKG)_SRCDIR)/build +endef +endif +endif + +# +# Host installation step. Only define it if not already defined by the +# package .mk file. +# +ifndef $(2)_INSTALL_CMDS +define $(2)_INSTALL_CMDS + $$(HOST_MAKE_ENV) $$($$(PKG)_NINJA_ENV) \ + $$(NINJA) $$(NINJA_OPTS) -C $$($$(PKG)_SRCDIR)/build install +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 + $$(TARGET_MAKE_ENV) $$($$(PKG)_NINJA_ENV) DESTDIR=$$(STAGING_DIR) \ + $$(NINJA) $$(NINJA_OPTS) -C $$($$(PKG)_SRCDIR)/build install +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 + $$(TARGET_MAKE_ENV) $$($$(PKG)_NINJA_ENV) DESTDIR=$$(TARGET_DIR) \ + $$(NINJA) $$(NINJA_OPTS) -C $$($$(PKG)_SRCDIR)/build install +endef +endif + +# Call the generic package infrastructure to generate the necessary +# make targets +$(call inner-generic-package,$(1),$(2),$(3),$(4)) + +endef + +################################################################################ +# meson-package -- the target generator macro for Meson packages +################################################################################ + +meson-package = $(call inner-meson-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) +host-meson-package = $(call inner-meson-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host) + +################################################################################ +# Generation of the Meson compile flags and cross-compilation file +################################################################################ + +# Generate a Meson cross-compilation.conf suitable for use with the +# SDK; also install the file as a template for users to add their +# own flags if they need to. +define PKG_MESON_INSTALL_CROSS_CONF + mkdir -p $(HOST_DIR)/etc/meson + sed -e "s%@TARGET_CFLAGS@%$(call make-sq-comma-list,$(TARGET_CFLAGS))@PKG_TARGET_CFLAGS@%g" \ + -e "s%@TARGET_LDFLAGS@%$(call make-sq-comma-list,$(TARGET_LDFLAGS))@PKG_TARGET_LDFLAGS@%g" \ + -e "s%@TARGET_CXXFLAGS@%$(call make-sq-comma-list,$(TARGET_CXXFLAGS))@PKG_TARGET_CXXFLAGS@%g" \ + -e "s%@TARGET_FCFLAGS@%$(call make-sq-comma-list,$(TARGET_FCFLAGS))@PKG_TARGET_FCFLAGS@%g" \ + $(call PKG_MESON_CROSSCONFIG_SED) \ + > $(HOST_DIR)/etc/meson/cross-compilation.conf.in + sed $(call PKG_MESON_CROSSCONFIG_SED,TARGET_CFLAGS,TARGET_CXXFLAGS,TARGET_LDFLAGS,TARGET_FCFLAGS) \ + > $(HOST_DIR)/etc/meson/cross-compilation.conf +endef + +TOOLCHAIN_TARGET_FINALIZE_HOOKS += PKG_MESON_INSTALL_CROSS_CONF diff --git a/package/pkg-perl.mk b/package/pkg-perl.mk new file mode 100644 index 00000000..1ecf31ef --- /dev/null +++ b/package/pkg-perl.mk @@ -0,0 +1,215 @@ +################################################################################ +# Perl package infrastructure +# +# This file implements an infrastructure that eases development of +# package .mk files for Perl packages. +# +# See the Buildroot documentation for details on the usage of this +# infrastructure +# +# In terms of implementation, this perl 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 perl behaviour. The +# package can also define some post operation hooks. +# +################################################################################ + +PERL_ARCHNAME = $(ARCH)-linux +PERL_RUN = PERL5LIB= PERL_USE_UNSAFE_INC=1 $(HOST_DIR)/bin/perl + +################################################################################ +# inner-perl-package -- defines how the configuration, compilation and +# installation of a perl package should be done, implements a +# few hooks to tune the build process for perl 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-perl-package + +# Target packages need both the perl interpreter on the target (for +# runtime) and the perl interpreter on the host (for +# compilation). However, host packages only need the perl +# interpreter on the host. +ifeq ($(4),target) +$(2)_DEPENDENCIES += host-perl perl +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 +# packages. +# +ifndef $(2)_CONFIGURE_CMDS +ifeq ($(4),target) + +# Configure package for target +define $(2)_CONFIGURE_CMDS + cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] && [ $$($(2)_PREFER_INSTALLER) != "EUMM" ] ; then \ + $$($(2)_CONF_ENV) \ + PERL_MM_USE_DEFAULT=1 \ + $$(PERL_RUN) Build.PL \ + --config ar="$$(TARGET_AR)" \ + --config full_ar="$$(TARGET_AR)" \ + --config cc="$$(TARGET_CC)" \ + --config ccflags="$$(TARGET_CFLAGS)" \ + --config optimize=" " \ + --config ld="$$(TARGET_CC)" \ + --config lddlflags="-shared $$(TARGET_LDFLAGS)" \ + --config ldflags="$$(TARGET_LDFLAGS)" \ + --include_dirs $$(STAGING_DIR)/usr/lib/perl5/$$(PERL_VERSION)/$$(PERL_ARCHNAME)/CORE \ + --destdir $$(TARGET_DIR) \ + --installdirs vendor \ + --install_path lib=/usr/lib/perl5/site_perl/$$(PERL_VERSION) \ + --install_path arch=/usr/lib/perl5/site_perl/$$(PERL_VERSION)/$$(PERL_ARCHNAME) \ + --install_path bin=/usr/bin \ + --install_path script=/usr/bin \ + --install_path bindoc=/usr/share/man/man1 \ + --install_path libdoc=/usr/share/man/man3 \ + $$($(2)_CONF_OPTS); \ + else \ + $$($(2)_CONF_ENV) \ + PERL_MM_USE_DEFAULT=1 \ + PERL_AUTOINSTALL=--skipdeps \ + $$(PERL_RUN) Makefile.PL \ + AR="$$(TARGET_AR)" \ + FULL_AR="$$(TARGET_AR)" \ + CC="$$(TARGET_CC)" \ + CCFLAGS="$$(TARGET_CFLAGS)" \ + OPTIMIZE=" " \ + LD="$$(TARGET_CC)" \ + LDDLFLAGS="-shared $$(TARGET_LDFLAGS)" \ + LDFLAGS="$$(TARGET_LDFLAGS)" \ + PERL_ARCHLIB=$$(STAGING_DIR)/usr/lib/perl5/$$(PERL_VERSION)/$$(PERL_ARCHNAME) \ + DESTDIR=$$(TARGET_DIR) \ + INSTALLDIRS=vendor \ + INSTALLVENDORLIB=/usr/lib/perl5/site_perl/$$(PERL_VERSION) \ + INSTALLVENDORARCH=/usr/lib/perl5/site_perl/$$(PERL_VERSION)/$$(PERL_ARCHNAME) \ + INSTALLVENDORBIN=/usr/bin \ + INSTALLVENDORSCRIPT=/usr/bin \ + INSTALLVENDORMAN1DIR=/usr/share/man/man1 \ + INSTALLVENDORMAN3DIR=/usr/share/man/man3 \ + $$($(2)_CONF_OPTS); \ + fi +endef +else + +# Configure package for host +define $(2)_CONFIGURE_CMDS + cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] && [ $$($(2)_PREFER_INSTALLER) != "EUMM" ] ; then \ + $$($(2)_CONF_ENV) \ + PERL_MM_USE_DEFAULT=1 \ + $$(PERL_RUN) Build.PL \ + $$($(2)_CONF_OPTS); \ + else \ + $$($(2)_CONF_ENV) \ + PERL_MM_USE_DEFAULT=1 \ + PERL_AUTOINSTALL=--skipdeps \ + $$(PERL_RUN) Makefile.PL \ + $$($(2)_CONF_OPTS); \ + fi +endef +endif +endif + +# +# Build step. Only define it if not already defined by the package .mk +# file. And take care of the differences between host and target +# packages. +# +ifndef $(2)_BUILD_CMDS +ifeq ($(4),target) + +# Build package for target +define $(2)_BUILD_CMDS + cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] && [ $$($(2)_PREFER_INSTALLER) != "EUMM" ] ; then \ + $$(PERL_RUN) Build $$($(2)_BUILD_OPTS) build; \ + else \ + $$(MAKE1) \ + FIXIN=: \ + $$($(2)_BUILD_OPTS) pure_all; \ + fi +endef +else + +# Build package for host +define $(2)_BUILD_CMDS + 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; \ + fi +endef +endif +endif + +# +# Host installation step. Only define it if not already defined by the +# package .mk file. +# +ifndef $(2)_INSTALL_CMDS +define $(2)_INSTALL_CMDS + 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; \ + fi +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 $$($$(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; \ + fi +endef +endif + +# Call the generic package infrastructure to generate the necessary +# make targets +$(call inner-generic-package,$(1),$(2),$(3),$(4)) + +# Upgrade helper +ifneq ($$($(3)_DISTNAME),) +$(1)-upgrade: + utils/scancpan -force -$(4) $$($(3)_DISTNAME) + +.PHONY: $(1)-upgrade +endif + +endef + +################################################################################ +# perl-package -- the target generator macro for Perl packages +################################################################################ + +perl-package = $(call inner-perl-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) +host-perl-package = $(call inner-perl-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host) diff --git a/package/pkg-python.mk b/package/pkg-python.mk new file mode 100644 index 00000000..dea4f39c --- /dev/null +++ b/package/pkg-python.mk @@ -0,0 +1,414 @@ +################################################################################ +# Python package infrastructure +# +# This file implements an infrastructure that eases development of +# package .mk files for Python packages. It should be used for all +# packages that use Python setup.py/setuptools as their build system. +# +# See the Buildroot documentation for details on the usage of this +# infrastructure +# +# In terms of implementation, this Python 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 Python behaviour. The +# package can also define some post operation hooks. +# +################################################################################ + +ifeq ($(BR2_arm)$(BR2_armeb),y) +PKG_PYTHON_ARCH = arm +else +PKG_PYTHON_ARCH = $(ARCH) +endif +PKG_PYTHON_HOST_PLATFORM = linux-$(PKG_PYTHON_ARCH) + +# basename does not evaluate if a file exists, so we must check to ensure +# the _sysconfigdata__linux_*.py file exists. The "|| true" is added to return +# an empty string if the file does not exist. +PKG_PYTHON_SYSCONFIGDATA_PATH = $(PYTHON3_PATH)/_sysconfigdata__linux_*.py +PKG_PYTHON_SYSCONFIGDATA_NAME = `{ [ -e $(PKG_PYTHON_SYSCONFIGDATA_PATH) ] && basename $(PKG_PYTHON_SYSCONFIGDATA_PATH) .py; } || true` + +# Target python packages +PKG_PYTHON_ENV = \ + _PYTHON_HOST_PLATFORM="$(PKG_PYTHON_HOST_PLATFORM)" \ + _PYTHON_PROJECT_BASE="$(PYTHON3_DIR)" \ + _PYTHON_SYSCONFIGDATA_NAME="$(PKG_PYTHON_SYSCONFIGDATA_NAME)" \ + PATH=$(BR_PATH) \ + $(TARGET_CONFIGURE_OPTS) \ + PYTHONPATH="$(PYTHON3_PATH)" \ + PYTHONNOUSERSITE=1 + +# Host python packages +HOST_PKG_PYTHON_ENV = \ + PATH=$(BR_PATH) \ + PYTHONNOUSERSITE=1 \ + $(HOST_CONFIGURE_OPTS) + +# Target pep517-based packages +PKG_PYTHON_PEP517_ENV = \ + $(PKG_PYTHON_ENV) + +PKG_PYTHON_PEP517_BUILD_CMD = \ + -m build -n -w + +PKG_PYTHON_PEP517_INSTALL_OPTS = \ + --interpreter=/usr/bin/python \ + --script-kind=posix + +PKG_PYTHON_PEP517_INSTALL_TARGET_CMD = \ + $(TOPDIR)/support/scripts/pyinstaller.py \ + dist/* \ + $(PKG_PYTHON_PEP517_INSTALL_OPTS) \ + --purelib=$(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages \ + --headers=$(TARGET_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR) \ + --scripts=$(TARGET_DIR)/usr/bin \ + --data=$(TARGET_DIR) + +PKG_PYTHON_PEP517_INSTALL_STAGING_CMD = \ + $(TOPDIR)/support/scripts/pyinstaller.py \ + dist/* \ + $(PKG_PYTHON_PEP517_INSTALL_OPTS) \ + --purelib=$(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages \ + --headers=$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR) \ + --scripts=$(STAGING_DIR)/usr/bin \ + --data=$(STAGING_DIR) + +PKG_PYTHON_PEP517_DEPENDENCIES = \ + host-python-pypa-build \ + host-python-installer + +# Host pep517-based packages +HOST_PKG_PYTHON_PEP517_ENV = \ + $(HOST_PKG_PYTHON_ENV) + +HOST_PKG_PYTHON_PEP517_BUILD_CMD = \ + -m build -n -w + +HOST_PKG_PYTHON_PEP517_INSTALL_CMD = \ + $(TOPDIR)/support/scripts/pyinstaller.py \ + dist/* \ + --interpreter=$(HOST_DIR)/bin/python \ + --script-kind=posix \ + --purelib=$(HOST_DIR)/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages \ + --headers=$(HOST_DIR)/include/python$(PYTHON3_VERSION_MAJOR) \ + --scripts=$(HOST_DIR)/bin \ + --data=$(HOST_DIR) + +# Target setuptools-based packages +PKG_PYTHON_SETUPTOOLS_ENV = \ + $(PKG_PYTHON_PEP517_ENV) + +PKG_PYTHON_SETUPTOOLS_BUILD_CMD = \ + $(PKG_PYTHON_PEP517_BUILD_CMD) + +PKG_PYTHON_SETUPTOOLS_INSTALL_OPTS = \ + --install-headers=/usr/include/python$(PYTHON3_VERSION_MAJOR) \ + --prefix=/usr \ + --executable=/usr/bin/python \ + --single-version-externally-managed + +PKG_PYTHON_SETUPTOOLS_INSTALL_TARGET_CMD = \ + $(PKG_PYTHON_PEP517_INSTALL_TARGET_CMD) + +PKG_PYTHON_SETUPTOOLS_INSTALL_STAGING_CMD = \ + $(PKG_PYTHON_PEP517_INSTALL_STAGING_CMD) + +PKG_PYTHON_SETUPTOOLS_DEPENDENCIES = \ + $(PKG_PYTHON_PEP517_DEPENDENCIES) \ + host-python-setuptools + +# Host setuptools-based packages +HOST_PKG_PYTHON_SETUPTOOLS_ENV = \ + $(HOST_PKG_PYTHON_PEP517_ENV) + +HOST_PKG_PYTHON_SETUPTOOLS_BUILD_CMD = \ + $(HOST_PKG_PYTHON_PEP517_BUILD_CMD) + +HOST_PKG_PYTHON_SETUPTOOLS_INSTALL_CMD = \ + $(HOST_PKG_PYTHON_PEP517_INSTALL_CMD) + +# Target setuptools-rust-based packages +PKG_PYTHON_SETUPTOOLS_RUST_ENV = \ + $(PKG_PYTHON_SETUPTOOLS_ENV) \ + $(PKG_CARGO_ENV) \ + PYO3_CROSS_LIB_DIR="$(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)" + +PKG_PYTHON_SETUPTOOLS_RUST_BUILD_CMD = \ + $(PKG_PYTHON_SETUPTOOLS_BUILD_CMD) + +PKG_PYTHON_SETUPTOOLS_RUST_INSTALL_TARGET_CMD = \ + $(PKG_PYTHON_SETUPTOOLS_INSTALL_TARGET_CMD) + +PKG_PYTHON_SETUPTOOLS_RUST_INSTALL_STAGING_CMD = \ + $(PKG_PYTHON_SETUPTOOLS_INSTALL_STAGING_CMD) + +PKG_PYTHON_SETUPTOOLS_RUST_DEPENDENCIES = \ + $(PKG_PYTHON_SETUPTOOLS_DEPENDENCIES) \ + host-python-setuptools-rust + +# Host setuptools-rust-based packages +HOST_PKG_PYTHON_SETUPTOOLS_RUST_ENV = \ + $(HOST_PKG_PYTHON_SETUPTOOLS_ENV) \ + $(HOST_PKG_CARGO_ENV) \ + PYO3_CROSS_LIB_DIR="$(HOST_DIR)/lib/python$(PYTHON3_VERSION_MAJOR)" + +HOST_PKG_PYTHON_SETUPTOOLS_RUST_BUILD_CMD = \ + $(HOST_PKG_PYTHON_SETUPTOOLS_BUILD_CMD) + +HOST_PKG_PYTHON_SETUPTOOLS_RUST_INSTALL_CMD = \ + $(HOST_PKG_PYTHON_SETUPTOOLS_INSTALL_CMD) + +# Target flit packages +PKG_PYTHON_FLIT_ENV = \ + $(PKG_PYTHON_PEP517_ENV) + +PKG_PYTHON_FLIT_BUILD_CMD = \ + $(PKG_PYTHON_PEP517_BUILD_CMD) + +PKG_PYTHON_FLIT_INSTALL_TARGET_CMD = \ + $(PKG_PYTHON_PEP517_INSTALL_TARGET_CMD) + +PKG_PYTHON_FLIT_INSTALL_STAGING_CMD = \ + $(PKG_PYTHON_PEP517_INSTALL_STAGING_CMD) + +PKG_PYTHON_FLIT_DEPENDENCIES = \ + $(PKG_PYTHON_PEP517_DEPENDENCIES) \ + host-python-flit-core + +# Host flit packages +HOST_PKG_PYTHON_FLIT_ENV = \ + $(HOST_PKG_PYTHON_PEP517_ENV) + +HOST_PKG_PYTHON_FLIT_BUILD_CMD = \ + $(HOST_PKG_PYTHON_PEP517_BUILD_CMD) + +HOST_PKG_PYTHON_FLIT_INSTALL_CMD = \ + $(HOST_PKG_PYTHON_PEP517_INSTALL_CMD) + +# Host flit-bootstrap packages +HOST_PKG_PYTHON_FLIT_BOOTSTRAP_ENV = \ + $(HOST_PKG_PYTHON_PEP517_ENV) + +HOST_PKG_PYTHON_FLIT_BOOTSTRAP_BUILD_CMD = \ + -m flit_core.wheel + +HOST_PKG_PYTHON_FLIT_BOOTSTRAP_INSTALL_CMD = \ + $(HOST_PKG_PYTHON_PEP517_INSTALL_CMD) + +# Target maturin packages +PKG_PYTHON_MATURIN_ENV = \ + $(PKG_PYTHON_PEP517_ENV) \ + $(PKG_CARGO_ENV) \ + PYO3_CROSS_LIB_DIR="$(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)" + +PKG_PYTHON_MATURIN_BUILD_CMD = \ + $(PKG_PYTHON_PEP517_BUILD_CMD) + +PKG_PYTHON_MATURIN_INSTALL_TARGET_CMD = \ + $(PKG_PYTHON_PEP517_INSTALL_TARGET_CMD) + +PKG_PYTHON_MATURIN_INSTALL_STAGING_CMD = \ + $(PKG_PYTHON_PEP517_INSTALL_STAGING_CMD) + +PKG_PYTHON_MATURIN_DEPENDENCIES = \ + $(PKG_PYTHON_PEP517_DEPENDENCIES) \ + host-python-maturin + +# Host maturin packages +HOST_PKG_PYTHON_MATURIN_ENV = \ + $(HOST_PKG_PYTHON_PEP517_ENV) \ + $(HOST_PKG_CARGO_ENV) \ + PYO3_CROSS_LIB_DIR="$(HOST_DIR)/lib/python$(PYTHON3_VERSION_MAJOR)" + +HOST_PKG_PYTHON_MATURIN_BUILD_CMD = \ + $(HOST_PKG_PYTHON_PEP517_BUILD_CMD) + +HOST_PKG_PYTHON_MATURIN_INSTALL_CMD = \ + $(HOST_PKG_PYTHON_PEP517_INSTALL_CMD) + +################################################################################ +# inner-python-package -- defines how the configuration, compilation +# and installation of a Python package should be done, implements a +# few hooks to tune the build process 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-python-package + +ifndef $(2)_SETUP_TYPE + ifdef $(3)_SETUP_TYPE + $(2)_SETUP_TYPE = $$($(3)_SETUP_TYPE) + else + $$(error "$(2)_SETUP_TYPE must be set") + endif +endif + +$(2)_SETUP_TYPE_UPPER = $$(call UPPERCASE,$$($(2)_SETUP_TYPE)) + +ifneq ($$(filter-out setuptools setuptools-rust pep517 flit flit-bootstrap maturin,$$($(2)_SETUP_TYPE)),) +$$(error "Invalid $(2)_SETUP_TYPE. Valid options are 'maturin', 'setuptools', 'setuptools-rust', 'pep517' or 'flit'.") +endif +ifeq ($(4)-$$($(2)_SETUP_TYPE),target-flit-bootstrap) +$$(error flit-bootstrap setup type only supported for host packages) +endif + +# We need to vendor the Cargo crates at download time for pyo3 based +# packages. +# +ifneq ($$(filter maturin setuptools-rust,$$($(2)_SETUP_TYPE)),) +ifeq ($(4),target) +$(2)_DL_ENV = $$(PKG_CARGO_ENV) +else +$(2)_DL_ENV = $$(HOST_PKG_CARGO_ENV) +endif +ifndef $(2)_CARGO_MANIFEST_PATH +ifdef $(3)_CARGO_MANIFEST_PATH +$(2)_DOWNLOAD_POST_PROCESS_OPTS += -m$$($(3)_CARGO_MANIFEST_PATH) +else +ifneq ($$($(2)_SUBDIR),) +$(2)_DOWNLOAD_POST_PROCESS_OPTS += -m$$($(2)_SUBDIR)/Cargo.toml +endif +endif +else +$(2)_DOWNLOAD_POST_PROCESS_OPTS += -m$$($(2)_CARGO_MANIFEST_PATH) +endif +endif + +# Target packages need both the python interpreter on the target (for +# runtime) and the python interpreter on the host (for +# compilation). However, host packages only need the python +# interpreter on the host. +# +ifeq ($(4),target) +$(2)_DEPENDENCIES += host-python3 python3 +else +$(2)_DEPENDENCIES += host-python3 +endif # ($(4),target) + +# Setup type specific dependencies are the same whether we are +# building for the host or the target. +# +ifeq ($$($(2)_SETUP_TYPE),flit-bootstrap) +# Don't add dependency on host-python-installer for +# host-python-installer itself, and its dependencies. +ifeq ($$(filter host-python-flit-core host-python-installer,$(1)),) +$(2)_DEPENDENCIES += host-python-installer +endif +else +$(2)_DEPENDENCIES += $$(PKG_PYTHON_$$($(2)_SETUP_TYPE_UPPER)_DEPENDENCIES) +endif + +# Pyo3 based packages(setuptools-rust and maturin) will need rust +# toolchain dependencies for the host Python interpreter (both host +# and target). +# +ifneq ($$(filter maturin setuptools-rust,$$($(2)_SETUP_TYPE)),) +$(2)_DEPENDENCIES += host-rustc +$(2)_DOWNLOAD_POST_PROCESS = cargo +$(2)_DOWNLOAD_DEPENDENCIES = host-rustc +endif # SETUP_TYPE + +ifeq ($(4),target) +# +# Build step. Only define it if not already defined by the package .mk +# file. +# +ifndef $(2)_BUILD_CMDS +define $(2)_BUILD_CMDS + (cd $$($$(PKG)_BUILDDIR)/; \ + $$(PKG_PYTHON_$$($$(PKG)_SETUP_TYPE_UPPER)_ENV) \ + $$($$(PKG)_ENV) \ + $$(HOST_DIR)/bin/python3 \ + $$(PKG_PYTHON_$$($$(PKG)_SETUP_TYPE_UPPER)_BUILD_CMD) \ + $$($$(PKG)_BUILD_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 $$($$(PKG)_BUILDDIR)/; \ + $$(PKG_PYTHON_$$($$(PKG)_SETUP_TYPE_UPPER)_ENV) \ + $$($$(PKG)_ENV) \ + $$(HOST_DIR)/bin/python3 \ + $$(PKG_PYTHON_$$($$(PKG)_SETUP_TYPE_UPPER)_INSTALL_TARGET_CMD) \ + $$($$(PKG)_INSTALL_TARGET_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 $$($$(PKG)_BUILDDIR)/; \ + $$(PKG_PYTHON_$$($$(PKG)_SETUP_TYPE_UPPER)_ENV) \ + $$($$(PKG)_ENV) \ + $$(HOST_DIR)/bin/python3 \ + $$(PKG_PYTHON_$$($$(PKG)_SETUP_TYPE_UPPER)_INSTALL_STAGING_CMD) \ + $$($$(PKG)_INSTALL_STAGING_OPTS)) +endef +endif + +else # host + +# +# Host build step. Only define it if not already defined by the package .mk +# file. +# +ifndef $(2)_BUILD_CMDS +define $(2)_BUILD_CMDS + (cd $$($$(PKG)_BUILDDIR)/; \ + $$(HOST_PKG_PYTHON_$$($$(PKG)_SETUP_TYPE_UPPER)_ENV) \ + $$($$(PKG)_ENV) \ + $$(HOST_DIR)/bin/python3 \ + $$(HOST_PKG_PYTHON_$$($$(PKG)_SETUP_TYPE_UPPER)_BUILD_CMD) \ + $$($$(PKG)_BUILD_OPTS)) +endef +endif + +# +# Host installation step. Only define it if not already defined by the +# package .mk file. +# +ifndef $(2)_INSTALL_CMDS +define $(2)_INSTALL_CMDS + (cd $$($$(PKG)_BUILDDIR)/; \ + $$(HOST_PKG_PYTHON_$$($$(PKG)_SETUP_TYPE_UPPER)_ENV) \ + $$($$(PKG)_ENV) \ + $$(HOST_DIR)/bin/python3 \ + $$(HOST_PKG_PYTHON_$$($$(PKG)_SETUP_TYPE_UPPER)_INSTALL_CMD) \ + $$($$(PKG)_INSTALL_OPTS)) +endef +endif + +endif # host / target + +# Call the generic package infrastructure to generate the necessary +# make targets +$(call inner-generic-package,$(1),$(2),$(3),$(4)) + +endef + +################################################################################ +# python-package -- the target generator macro for Python packages +################################################################################ + +python-package = $(call inner-python-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) +host-python-package = $(call inner-python-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host) diff --git a/package/pkg-qmake.mk b/package/pkg-qmake.mk new file mode 100644 index 00000000..ccf78692 --- /dev/null +++ b/package/pkg-qmake.mk @@ -0,0 +1,120 @@ +################################################################################ +# QMake package infrastructure +# +# This file implements an infrastructure that eases development of package +# .mk files for QMake packages. It should be used for all packages that use +# Qmake as their build system. +# +# See the Buildroot documentation for details on the usage of this +# infrastructure +# +# In terms of implementation, this QMake 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 QMake behaviour. The package can also define some +# post operation hooks. +# +################################################################################ + +# +# Hook to sync Qt headers +# +define QT_HEADERS_SYNC_HOOK + sed -e '/^MODULE_VERSION/s/5\.15\.[3456789]/$(QT5_VERSION)/' -i \ + $($(PKG)_BUILDDIR)/.qmake.conf + touch $($(PKG)_BUILDDIR)/.git +endef + +################################################################################ +# inner-qmake-package -- defines how the configuration, compilation and +# installation of a qmake package should be done, implements a few hooks +# to tune the build process for qmake 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 +################################################################################ + +define inner-qmake-package + +$(2)_INSTALL_STAGING_OPTS ?= install +$(2)_INSTALL_TARGET_OPTS ?= $$($(2)_INSTALL_STAGING_OPTS) + +ifneq ($(1),qt5base) +$(2)_DEPENDENCIES += qt5base +endif + +ifeq ($$($(2)_SYNC_QT_HEADERS),YES) +$(2)_PRE_CONFIGURE_HOOKS += QT_HEADERS_SYNC_HOOK +endif + +$(2)_POST_PREPARE_HOOKS += QT5_QT_CONF_FIXUP + +# +# Configure step. Only define it if not already defined by the package +# .mk file. +# +ifndef $(2)_CONFIGURE_CMDS +define $(2)_CONFIGURE_CMDS + cd $$($(2)_BUILDDIR) && \ + $$(TARGET_MAKE_ENV) $$($(2)_CONF_ENV) $$(QT5_QMAKE) $$($(2)_CONF_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 + $$(TARGET_MAKE_ENV) $$($(2)_MAKE_ENV) $$(MAKE) -C $$($(2)_BUILDDIR) $$($(2)_MAKE_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 + $$(TARGET_MAKE_ENV) $$($(2)_MAKE_ENV) $$(MAKE) -C $$($(2)_BUILDDIR) $$($(2)_INSTALL_STAGING_OPTS) +endef +endif + +# +# Target installation step. Only define it if not already defined by +# the package .mk file. +# +# Unfortunately we can't use INSTALL_ROOT to directly install to TARGET_DIR +# because in a crosscompile setup, the qmake generated install destinations +# are prefixed with the hardcoded sysroot (=STAGING_DIR) and hostprefix +# (=HOST_DIR). +# Instead we set INSTALL_ROOT, which comes before the install path, to a +# temporary folder inside the build directory and effectively install to +# $(@D)/tmp-target-install/$(STAGING_DIR) and $(@D)/tmp-target-install/$(HOST_DIR). +# We subsequently rsync only the files from the temporary staging dir and that +# way exclude files for the build host from target. +# +ifndef $(2)_INSTALL_TARGET_CMDS +define $(2)_INSTALL_TARGET_CMDS + $$(TARGET_MAKE_ENV) $$($(2)_MAKE_ENV) $$(MAKE) -C $$($(2)_BUILDDIR) INSTALL_ROOT=$$($(2)_BUILDDIR)tmp-target-install $$($(2)_INSTALL_TARGET_OPTS) + rsync -arv $$($(2)_BUILDDIR)tmp-target-install$$(STAGING_DIR)/ $$(TARGET_DIR)/ +endef +endif + +# Call the generic package infrastructure to generate the necessary +# make targets +$(call inner-generic-package,$(1),$(2),$(3),$(4)) + +endef + +################################################################################ +# qmake-package -- the target generator macro for QMake packages +################################################################################ + +qmake-package = $(call inner-qmake-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) diff --git a/package/pkg-rebar.mk b/package/pkg-rebar.mk new file mode 100644 index 00000000..4b993dd9 --- /dev/null +++ b/package/pkg-rebar.mk @@ -0,0 +1,256 @@ +################################################################################ +# rebar package infrastructure for Erlang packages +# +# This file implements an infrastructure that eases development of +# package .mk files for rebar packages. It should be used for all +# packages that use rebar as their build system. +# +# In terms of implementation, this rebar 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 rebar behaviour. The +# package can also define some post operation hooks. +# +################################################################################ + +# Directories to store rebar dependencies in. +# +# These directories actually only contain symbolic links to Erlang +# applications in either $(HOST_DIR) or $(STAGING_DIR). One needs +# them to avoid rebar complaining about missing dependencies, as this +# infrastructure tells rebar to NOT download dependencies during +# the build stage. +# +REBAR_HOST_DEPS_DIR = $(HOST_DIR)/share/rebar/deps +REBAR_TARGET_DEPS_DIR = $(STAGING_DIR)/usr/share/rebar/deps + +# Tell rebar where to find the dependencies +# +REBAR_HOST_DEPS_ENV = \ + ERL_COMPILER_OPTIONS='{i, "$(REBAR_HOST_DEPS_DIR)"}' \ + ERL_EI_LIBDIR=$(HOST_DIR)/lib/erlang/lib/erl_interface-$(call erlang_ei_vsn,$(HOST_DIR))/lib +REBAR_TARGET_DEPS_ENV = \ + ERL_COMPILER_OPTIONS='{i, "$(REBAR_TARGET_DEPS_DIR)"}' \ + ERL_EI_LIBDIR=$(STAGING_DIR)/usr/lib/erlang/lib/erl_interface-$(call erlang_ei_vsn,$(STAGING_DIR)/usr)/lib + +################################################################################ +# Helper functions +################################################################################ + +# Install an Erlang application from $(@D). +# +# i.e., define a recipe that installs the "bin ebin priv $(2)" directories +# from $(@D) to $(1)/$($(PKG)_ERLANG_LIBDIR). +# +# argument 1 should typically be $(HOST_DIR), $(TARGET_DIR), +# or $(STAGING_DIR). +# argument 2 is typically empty when installing in $(TARGET_DIR) and +# "include" when installing in $(HOST_DIR) or +# $(STAGING_DIR). +# +# Note: calling this function must be done with $$(call ...) because it +# expands package-related variables. +# +define install-erlang-directories + $(INSTALL) -d $(1)/$($(PKG)_ERLANG_LIBDIR) + for dir in bin ebin priv $(2); do \ + if test -d $(@D)/$$dir; then \ + cp -r $(@D)/$$dir $(1)/$($(PKG)_ERLANG_LIBDIR); \ + fi; \ + done +endef + +# Setup a symbolic link in rebar's deps_dir to the actual location +# where an Erlang application is installed. +# +# i.e., define a recipe that creates a symbolic link +# from $($(PKG)_REBAR_DEPS_DIR)/$($(PKG)_ERLANG_APP) +# to $(1)$($(PKG)_ERLANG_LIBDIR). +# +# For target packages for example, one uses this to setup symbolic +# links from $(STAGING_DIR)/usr/share/rebar/deps/ to +# $(STAGING_DIR)/usr/lib/erlang/lib/-. This +# infrastructure points rebar at the former in order to tell rebar to +# NOT download dependencies during the build stage, and instead use +# the already available dependencies. +# +# Therefore, +# argument 1 is $(HOST_DIR) (for host packages) or +# $(STAGING_DIR) (for target packages). +# +# argument 2 is HOST (for host packages) or +# TARGET (for target packages). +# +# Note: calling this function must be done with $$(call ...) because it +# expands package-related variables. +# +define install-rebar-deps + $(INSTALL) -d $(REBAR_$(2)_DEPS_DIR) + ln -f -s $(1)/$($(PKG)_ERLANG_LIBDIR) \ + $(REBAR_$(2)_DEPS_DIR)/$($(PKG)_ERLANG_APP) +endef + +# Remove the "deps" statement from a rebar.config file +define remove-rebar-config-dependencies + $(SED) '/^{deps.*}\.$$/d' -e '/^{deps/,/}\.$$/d' \ + $($(PKG)_DIR)/rebar.config +endef + + +################################################################################ +# inner-rebar-package -- defines how the configuration, compilation +# and installation of a rebar package should be done, implements a few +# hooks to tune the build process according to rebar 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-rebar-package + +# Extract just the raw package name, lowercase without the leading +# erlang- or host- prefix, as this is used by rebar to find the +# dependencies a package specifies. +# +$(2)_ERLANG_APP = $(subst -,_,$(patsubst erlang-%,%,$(patsubst host-%,%,$(1)))) + +# Path where to store the package's libs, relative to either $(HOST_DIR) +# for host packages, or $(STAGING_DIR)/usr for target packages. +# +$(2)_ERLANG_LIBDIR = \ + lib/erlang/lib/$$($$(PKG)_ERLANG_APP)-$$($$(PKG)_VERSION) + +# If a host package, inherit _USE_BUNDLED_REBAR from the target +# package, if not explicitly defined. Otherwise, default to NO. +ifndef $(2)_USE_BUNDLED_REBAR + ifdef $(3)_USE_BUNDLED_REBAR + $(2)_USE_BUNDLED_REBAR = $$($(3)_USE_BUNDLED_REBAR) + else + $(2)_USE_BUNDLED_REBAR ?= NO + endif +endif + +# If a host package, inherit _USE_AUTOCONF from the target +# package, if not explicitly defined. Otherwise, default to NO. +ifndef $(2)_USE_AUTOCONF + ifdef $(3)_USE_AUTOCONF + $(2)_USE_AUTOCONF = $$($(3)_USE_AUTOCONF) + else + $(2)_USE_AUTOCONF ?= NO + endif +endif + +# Define the build and install commands +# +ifeq ($(4),target) + +# Target packages need the erlang interpreter on the target +$(2)_DEPENDENCIES += erlang + +# Used only if the package uses autotools underneath; otherwise, ignored +$(2)_CONF_ENV += $$(REBAR_TARGET_DEPS_ENV) + +ifndef $(2)_BUILD_CMDS +define $(2)_BUILD_CMDS + (cd $$(@D); \ + CC="$$(TARGET_CC)" \ + CXX="$$(TARGET_CXX)" \ + CFLAGS="$$(TARGET_CFLAGS)" \ + CXXFLAGS="$$(TARGET_CXXFLAGS)" \ + LDFLAGS="$$(TARGET_LDFLAGS)" \ + $$(REBAR_TARGET_DEPS_ENV) \ + $$(TARGET_MAKE_ENV) \ + $$($$(PKG)_REBAR_ENV) $$($$(PKG)_REBAR) deps_dir=$$(REBAR_TARGET_DEPS_DIR) compile \ + ) +endef +endif + +# We need to double-$ the 'call' because it wants to expand +# package-related variables +ifndef $(2)_INSTALL_STAGING_CMDS +define $(2)_INSTALL_STAGING_CMDS + $$(call install-erlang-directories,$$(STAGING_DIR)/usr,include) + $$(call install-rebar-deps,$$(STAGING_DIR)/usr,TARGET) +endef +endif + +# We need to double-$ the 'call' because it wants to expand +# package-related variables +ifndef $(2)_INSTALL_TARGET_CMDS +define $(2)_INSTALL_TARGET_CMDS + $$(call install-erlang-directories,$$(TARGET_DIR)/usr) +endef +endif + +else # !target + +# Host packages need the erlang interpreter on the host +$(2)_DEPENDENCIES += host-erlang + +# Used only if the package uses autotools underneath; otherwise, ignored +$(2)_CONF_ENV += $$(REBAR_HOST_DEPS_ENV) + +ifndef $(2)_BUILD_CMDS +define $(2)_BUILD_CMDS + (cd $$(@D); \ + CC="$$(HOSTCC)" \ + CFLAGS="$$(HOST_CFLAGS)" \ + LDFLAGS="$$(HOST_LDFLAGS)" \ + $$(REBAR_HOST_DEPS_ENV) \ + $$(HOST_MAKE_ENV) \ + $$($$(PKG)_REBAR_ENV) $$($$(PKG)_REBAR) deps_dir=$$(REBAR_HOST_DEPS_DIR) compile \ + ) +endef +endif + +# We need to double-$ the 'call' because it wants to expand +# package-related variables +ifndef $(2)_INSTALL_CMDS +define $(2)_INSTALL_CMDS + $$(call install-erlang-directories,$$(HOST_DIR),include) + $$(call install-rebar-deps,$$(HOST_DIR),HOST) +endef +endif + +endif # !target + +# Whether to use the generic rebar or the package's bundled rebar +# +ifeq ($$($(2)_USE_BUNDLED_REBAR),YES) +$(2)_REBAR = ./rebar +else +$(2)_REBAR = rebar +$(2)_DEPENDENCIES += host-erlang-rebar +endif + +$(2)_KEEP_DEPENDENCIES ?= NO + +# Remove dependencies listed in rebar.config unless the package says +# otherwise +ifeq ($$($(2)_KEEP_DEPENDENCIES),NO) +$(2)_POST_PATCH_HOOKS += remove-rebar-config-dependencies +endif + +# The package sub-infra to use +# +ifeq ($$($(2)_USE_AUTOCONF),YES) +$(call inner-autotools-package,$(1),$(2),$(3),$(4)) +else +$(call inner-generic-package,$(1),$(2),$(3),$(4)) +endif + +endef # inner-rebar-package + +rebar-package = $(call inner-rebar-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) +host-rebar-package = $(call inner-rebar-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host) diff --git a/package/pkg-utils.mk b/package/pkg-utils.mk new file mode 100644 index 00000000..e8e508e3 --- /dev/null +++ b/package/pkg-utils.mk @@ -0,0 +1,327 @@ +################################################################################ +# +# This file contains various utility functions used by the package +# infrastructure, or by the packages themselves. +# +################################################################################ + +# +# Manipulation of .config files based on the Kconfig +# infrastructure. Used by the BusyBox package, the Linux kernel +# package, and more. +# + +# KCONFIG_DOT_CONFIG ([file]) +# Returns the path to the .config file that should be used, which will +# be $(1) if provided, or the current package .config file otherwise. +KCONFIG_DOT_CONFIG = $(strip \ + $(if $(strip $(1)), $(1), \ + $($(PKG)_BUILDDIR)/$($(PKG)_KCONFIG_DOTCONFIG) \ + ) \ +) + +# KCONFIG_MUNGE_DOT_CONFIG (option, newline [, file]) +define KCONFIG_MUNGE_DOT_CONFIG + $(SED) '/^\(# \)\?$(strip $(1))\>/d' $(call KCONFIG_DOT_CONFIG,$(3)) && \ + echo '$(strip $(2))' >> $(call KCONFIG_DOT_CONFIG,$(3)) +endef + +# KCONFIG_ENABLE_OPT (option [, file]) +# If the option is already set to =m or =y, ignore. +define KCONFIG_ENABLE_OPT + $(Q)if ! grep -q '^$(strip $(1))=[my]' $(call KCONFIG_DOT_CONFIG,$(2)); then \ + $(call KCONFIG_MUNGE_DOT_CONFIG, $(1), $(1)=y, $(2)); \ + fi +endef +# KCONFIG_SET_OPT (option, value [, file]) +KCONFIG_SET_OPT = $(Q)$(call KCONFIG_MUNGE_DOT_CONFIG, $(1), $(1)=$(2), $(3)) +# KCONFIG_DISABLE_OPT (option [, file]) +KCONFIG_DISABLE_OPT = $(Q)$(call KCONFIG_MUNGE_DOT_CONFIG, $(1), $(SHARP_SIGN) $(1) is not set, $(2)) + +# Helper functions to determine the name of a package and its +# directory from its makefile directory, using the $(MAKEFILE_LIST) +# variable provided by make. This is used by the *-package macros to +# automagically find where the package is located. +pkgdir = $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) +pkgname = $(lastword $(subst /, ,$(pkgdir))) + +# Helper to build the extension for a package archive, based on various +# conditions. +# $(1): upper-case package name +pkg_source_ext = $(BR_FMT_VERSION_$($(1)_SITE_METHOD))$(BR_FMT_VERSION_$($(1)_DOWNLOAD_POST_PROCESS)).tar.gz + +# Define extractors for different archive suffixes +INFLATE.bz2 = $(BZCAT) +INFLATE.gz = $(ZCAT) +INFLATE.lz = $(LZCAT) +INFLATE.lzma = $(XZCAT) +INFLATE.tbz = $(BZCAT) +INFLATE.tbz2 = $(BZCAT) +INFLATE.tgz = $(ZCAT) +INFLATE.xz = $(XZCAT) +INFLATE.zst = $(ZSTDCAT) +INFLATE.tar = cat +# suitable-extractor(filename): returns extractor based on suffix +suitable-extractor = $(INFLATE$(suffix $(1))) + +EXTRACTOR_PKG_DEPENDENCY.lzma = $(BR2_XZCAT_HOST_DEPENDENCY) +EXTRACTOR_PKG_DEPENDENCY.xz = $(BR2_XZCAT_HOST_DEPENDENCY) +EXTRACTOR_PKG_DEPENDENCY.lz = $(BR2_LZIP_HOST_DEPENDENCY) +EXTRACTOR_PKG_DEPENDENCY.zst = $(BR2_ZSTD_HOST_DEPENDENCY) + +# extractor-pkg-dependency(filename): returns a Buildroot package +# dependency needed to extract file based on suffix +extractor-pkg-dependency = $(EXTRACTOR_PKG_DEPENDENCY$(suffix $(1))) + +# extractor-system-dependency(filename): returns the name of the tool +# needed to extract 'filename', and is meant to be used with +# DL_TOOLS_DEPENDENCIES, in order to check that the necesary tool is +# provided by the system Buildroot runs on. +# +# $(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-system-dependency = $(if $(EXTRACTOR_PKG_DEPENDENCY$(suffix $(1))),,\ + $(firstword $(INFLATE$(suffix $(1))))) + +# check-deprecated-variable -- throw an error on deprecated variables +# example: +# $(eval $(call check-deprecated-variable,FOO_MAKE_OPT,FOO_MAKE_OPTS)) +define check-deprecated-variable # (deprecated var, new var) +ifneq ($$(origin $(1)),undefined) +$$(error Package error: use $(2) instead of $(1). Please fix your .mk file) +endif +endef + +# $(1): YES or NO +define yesno-to-bool + $(subst NO,false,$(subst YES,true,$(1))) +endef + +# json-info -- return package or filesystem metadata formatted as an entry +# of a JSON dictionnary +# $(1): upper-case package or filesystem name +define json-info + "$($(1)_NAME)": { + "type": $(call mk-json-str,$($(1)_TYPE)), + $(if $(filter rootfs,$($(1)_TYPE)), \ + $(call _json-info-fs,$(1)), \ + $(call _json-info-pkg,$(1)), \ + ) + } +endef + +# _json-info-pkg, _json-info-pkg-details, _json-info-fs: private helpers +# for json-info, above +define _json-info-pkg + "name": $(call mk-json-str,$($(1)_RAWNAME)), + $(if $($(1)_IS_VIRTUAL), \ + "virtual": true$(comma), + "virtual": false$(comma) + $(call _json-info-pkg-details,$(1)) \ + ) + "stamp_dir": $(call mk-json-str,$(patsubst $(CONFIG_DIR)/%,%,$($(1)_DIR))), + "source_dir": $(call mk-json-str,$(patsubst $(CONFIG_DIR)/%,%,$($(1)_DIR))), + "build_dir": $(call mk-json-str,$(patsubst $(CONFIG_DIR)/%,%,$($(1)_BUILDDIR))), + $(if $(filter target,$($(1)_TYPE)), \ + "install_target": $(call yesno-to-bool,$($(1)_INSTALL_TARGET))$(comma) \ + "install_staging": $(call yesno-to-bool,$($(1)_INSTALL_STAGING))$(comma) \ + "install_images": $(call yesno-to-bool,$($(1)_INSTALL_IMAGES))$(comma) \ + ) + "dependencies": [ + $(call make-comma-list, \ + $(foreach dep,$(sort $($(1)_FINAL_ALL_DEPENDENCIES)), \ + $(call mk-json-str,$(dep)) \ + ) \ + ) + ], + "reverse_dependencies": [ + $(call make-comma-list, \ + $(foreach dep,$(sort $($(1)_RDEPENDENCIES)), \ + $(call mk-json-str,$(dep)) \ + ) \ + ) + ] + $(if $($(1)_CPE_ID_VALID), \ + $(comma) "cpe-id": $(call mk-json-str,$($(1)_CPE_ID)) \ + ) + $(if $($(1)_IGNORE_CVES), + $(comma) "ignore_cves": [ + $(call make-comma-list, \ + $(foreach cve,$(sort $($(1)_IGNORE_CVES)), \ + $(call mk-json-str,$(cve)) \ + ) \ + ) + ] + ) +endef + +define _json-info-pkg-details + "version": $(call mk-json-str,$($(1)_DL_VERSION)), + "licenses": $(call mk-json-str,$($(1)_LICENSE)), + "license_files": [ + $(foreach f, $($(1)_LICENSE_FILES),$(call mk-json-str,$(f))$(comma)) + ], + "redistributable": $(if $(filter NO,$($(1)_REDISTRIBUTE)),false,true), + "dl_dir": $(call mk-json-str,$($(1)_DL_SUBDIR)), + "downloads": [ + $(foreach dl,$(sort $($(1)_ALL_DOWNLOADS)), + { + "source": $(call mk-json-str,$(notdir $(dl))), + "uris": [ + $(call make-comma-list, \ + $(foreach uri,$(call DOWNLOAD_URIS,$(dl),$(1)), \ + $(call mk-json-str,$(subst \|,|,$(uri))) \ + ) \ + ) + ] + }, + ) + ], +endef + +define _json-info-fs + "image_name": $(if $($(1)_FINAL_IMAGE_NAME), \ + $(call mk-json-str,$($(1)_FINAL_IMAGE_NAME)), \ + null \ + ), + "dependencies": [ + $(call make-comma-list, \ + $(foreach dep,$(sort $($(1)_DEPENDENCIES)), \ + $(call mk-json-str,$(dep)) \ + ) \ + ) + ] +endef + +# clean-json -- cleanup pseudo-json into clean json: +# - remove commas before closing ] and } +# - minify with $(strip) +clean-json = $(strip \ + $(subst $(comma)},}, $(subst $(comma)$(space)},$(space)}, \ + $(subst $(comma)],], $(subst $(comma)$(space)],$(space)], \ + $(strip $(1)) \ + )))) \ +) + +# mk-json-str -- escape and double-quote a string to make it a valid json string +# - escape \ +# - escape " +# - escape \n +# - escape \t +# - escape ESC +# - escape SPACE (so that we can $(strip) a JSON blurb without squashing multiple spaces) +# This unfortunately has to be on a single line... +mk-json-str = "$(subst $(space),\u0020,$(subst $(escape),\u001b,$(subst $(tab),\t,$(subst $(sep),\n,$(subst ",\",$(subst \,\\,$(1)))))))" +# )))))" # Syntax colouring + +ifeq ($(BR2_PER_PACKAGE_DIRECTORIES),y) +# rsync the contents of per-package directories +# $1: space-separated list of packages to rsync from +# $2: 'host' or 'target' +# $3: destination directory +# $4: literal "copy" or "hardlink" to copy or hardlink files from src to dest +define per-package-rsync + mkdir -p $(3) + $(if $(filter hardlink,$(4)), \ + $(foreach pkg,$(1),\ + rsync -a --hard-links --link-dest=$(PER_PACKAGE_DIR)/$(pkg)/$(2)/ \ + $(PER_PACKAGE_DIR)/$(pkg)/$(2)/ $(3)$(sep)), \ + printf "%s/$(2)/\n" $(1) | tac \ + | rsync -a --hard-links --files-from=- --no-R -r $(PER_PACKAGE_DIR) $(3)) +endef + +# prepares the per-package HOST_DIR and TARGET_DIR of the current +# package, by rsync the host and target directories of the +# dependencies of this package. The list of dependencies is passed as +# argument, so that this function can be used to prepare with +# different set of dependencies (download, extract, configure, etc.) +# +# $1: space-separated list of packages to rsync from +define prepare-per-package-directory + $(call per-package-rsync,$(1),host,$(HOST_DIR),hardlink) + $(call per-package-rsync,$(1),target,$(TARGET_DIR),hardlink) +endef + +# Ensure files like .la, .pc, .pri, .cmake, and so on, point to the +# proper staging and host directories for the current package: find +# all text files that contain the PPD root, and replace it with the +# current package's PPD. +# $1: destination root directory containing host and staging +define ppd-fixup-paths + $(Q)grep --binary-files=without-match -lrZ '$(PER_PACKAGE_DIR)/[^/]\+/' $(HOST_DIR) \ + |while read -d '' f; do \ + file -b --mime-type "$${f}" | grep -q '^text/' || continue; \ + printf '%s\0' "$${f}"; \ + done \ + |xargs -0 --no-run-if-empty \ + $(SED) 's:$(PER_PACKAGE_DIR)/[^/]\+/:$(1)/:g' +endef +endif + +# +# legal-info helper functions +# +LEGAL_INFO_SEPARATOR = "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::" + +define legal-warning # text + echo "WARNING: $(1)" >>$(LEGAL_WARNINGS) +endef + +define legal-warning-pkg # pkg, text + echo "WARNING: $(1): $(2)" >>$(LEGAL_WARNINGS) +endef + +define legal-warning-nosource # pkg, {local|override} + $(call legal-warning-pkg,$(1),sources not saved ($(2) packages not handled)) +endef + +define legal-manifest # {HOST|TARGET}, pkg, version, license, license-files, source, url, dependencies + echo '"$(2)","$(3)","$(4)","$(5)","$(6)","$(7)","$(8)"' >>$(LEGAL_MANIFEST_CSV_$(1)) +endef + +define legal-license-file # {HOST|TARGET}, pkgname, pkgname-pkgver, filename, file-fullpath, pkg-hashfiles + mkdir -p $(LICENSE_FILES_DIR_$(1))/$(3)/$(dir $(4)) && \ + { \ + support/download/check-hash $(5) $(4) $(6); \ + case $${?} in (0|3) ;; (*) exit 1;; esac; \ + } && \ + cp $(5) $(LICENSE_FILES_DIR_$(1))/$(3)/$(4) +endef + +non-virtual-deps = $(foreach p,$(1),$(if $($(call UPPERCASE,$(p))_IS_VIRTUAL),,$(p))) + +# Returns the list of recursive dependencies and their licensing terms +# for the package specified in parameter (in lowercase). If that +# package is a target package, remove host packages from the list. +legal-deps = \ + $(foreach p,\ + $(filter-out $(if $(1:host-%=),host-%),\ + $(call non-virtual-deps,\ + $($(call UPPERCASE,$(1))_FINAL_RECURSIVE_DEPENDENCIES))),$(p) [$($(call UPPERCASE,$(p))_LICENSE)]) + +# Helper for self-extracting binaries distributed by NXP, and +# formerlly Freescale. +# +# The --force option makes sure it doesn't fail if the source +# directory already exists. The --auto-accept skips the license check, +# as it is not needed in Buildroot because we have legal-info. Since +# there's a EULA in the binary file, we extract it in this macro, and +# it should therefore be added to the LICENSE_FILES variable of +# packages using this macro. Also, remember to set REDISTRIBUTE to +# "NO". Indeed, this is a legal minefield: the EULA specifies that the +# Board Support Package includes software and hardware (sic!) for +# which a separate license is needed... +# +# $(1): full path to the archive file +# +define NXP_EXTRACT_HELPER + awk 'BEGIN { start = 0; } \ + /^EOEULA/ { start = 0; } \ + { if (start) print; } \ + /< $(@D)/EULA + cd $(@D) && sh $(1) --force --auto-accept + find $(@D)/$(basename $(notdir $(1))) -mindepth 1 -maxdepth 1 -exec mv {} $(@D) \; + rmdir $(@D)/$(basename $(notdir $(1))) +endef diff --git a/package/pkg-virtual.mk b/package/pkg-virtual.mk new file mode 100644 index 00000000..05bd63eb --- /dev/null +++ b/package/pkg-virtual.mk @@ -0,0 +1,77 @@ +################################################################################ +# Virtual package infrastructure +# +# This file implements an infrastructure that eases development of +# package .mk files for virtual packages. It should be used for all +# virtual packages. +# +# See the Buildroot documentation for details on the usage of this +# infrastructure +# +# In terms of implementation, this virtual infrastructure requires +# the .mk file to only call the 'virtual-package' macro. +# +################################################################################ + + +################################################################################ +# inner-virtual-package -- defines the dependency rules of the virtual +# package against its provider. +# +# 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) +################################################################################ + +# Note: putting this comment here rather than in the define block, otherwise +# make would try to expand the $(error ...) in the comment, which is not +# really what we want. +# We need to use second-expansion for the $(error ...) call, below, +# so it is not evaluated now, but as part of the generated make code. + +define inner-virtual-package + +# Ensure the virtual package has an implementation defined. +ifeq ($$(BR2_PACKAGE_HAS_$(2)),y) +ifeq ($$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(2))),) +$$(error No implementation selected for virtual package $(1). Configuration error) +endif +endif + +# explicitly set these so we do not get confused by environment +# variables with the same names. +$(2)_VERSION = +$(2)_SOURCE = + +$(2)_IS_VIRTUAL = YES + +# Add dependency against the provider +# For a host package, there is no corresponding BR2_PACKAGE_PROVIDES_HOST_FOO, +# so we need to compute it from the target variant. +ifeq ($(4),target) +$(2)_DEPENDENCIES += $$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(2))) +else +ifeq ($$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(2))),) +# Inherit from target package BR2_PACKAGE_PROVIDES_FOO +$(2)_DEPENDENCIES += host-$$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(3))) +else +# BR2_PACKAGE_PROVIDES_HOST_ is explicitly defined +$(2)_DEPENDENCIES += $$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(2))) +endif +endif + +# Call the generic package infrastructure to generate the necessary +# make targets +$(call inner-generic-package,$(1),$(2),$(3),$(4)) + +endef + +################################################################################ +# virtual-package -- the target generator macro for virtual packages +################################################################################ + +virtual-package = $(call inner-virtual-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) +host-virtual-package = $(call inner-virtual-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host) diff --git a/package/pkg-waf.mk b/package/pkg-waf.mk new file mode 100644 index 00000000..0529bb6d --- /dev/null +++ b/package/pkg-waf.mk @@ -0,0 +1,130 @@ +################################################################################ +# 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. +# +################################################################################ + +WAF_OPTS = $(if $(VERBOSE),-v) -j $(PARALLEL_JOBS) + +################################################################################ +# 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 + +# The version of waflib has to match with the version of waf, +# otherwise waf errors out with: +# Waf script 'X' and library 'Y' do not match +define WAF_PACKAGE_REMOVE_WAF_LIB + $$(RM) -fr $$(@D)/waf $$(@D)/waflib +endef + +# We need host-python3 to run waf +$(2)_DEPENDENCIES += host-python3 + +$(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)/bin/waf +$(2)_POST_PATCH_HOOKS += WAF_PACKAGE_REMOVE_WAF_LIB +else +$(2)_WAF ?= ./waf +endif + +# +# Configure step. Only define it if not already defined by the package +# .mk file. +# +ifndef $(2)_CONFIGURE_CMDS +define $(2)_CONFIGURE_CMDS + cd $$($$(PKG)_SRCDIR) && \ + $$(TARGET_CONFIGURE_OPTS) \ + $$($(2)_CONF_ENV) \ + $$(HOST_DIR)/bin/python3 $$($(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 $$($$(PKG)_SRCDIR) && \ + $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$(HOST_DIR)/bin/python3 $$($(2)_WAF) \ + build $$(WAF_OPTS) $$($(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 $$($$(PKG)_SRCDIR) && \ + $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$(HOST_DIR)/bin/python3 $$($(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 $$($$(PKG)_SRCDIR) && \ + $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$(HOST_DIR)/bin/python3 $$($(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/package/pkgconf/0001-Only-prefix-with-the-sysroot-a-subset-of-variables.patch b/package/pkgconf/0001-Only-prefix-with-the-sysroot-a-subset-of-variables.patch new file mode 100644 index 00000000..a039d0c1 --- /dev/null +++ b/package/pkgconf/0001-Only-prefix-with-the-sysroot-a-subset-of-variables.patch @@ -0,0 +1,147 @@ +From 267a57022699453e8d8f517519df25ac6bf6ac4e Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 16 Dec 2018 11:52:18 +0100 +Subject: [PATCH] Only prefix with the sysroot a subset of variables + +The standard logic of pkg-config is to prefix all absolute paths by +the sysroot defined in PKG_CONFIG_SYSROOT_DIR. However, while some +paths (like includedir, libdir, and paths used in -L and -I options) +indeed need to be prefixed by the sysroot, it is not necessarily the +case for paths that are used on the target. If they get prefixed by +the sysroot, the runtime path on the target is incorrect. + +Unfortunately, pkg-config doesn't have a sense of which path needs to +be prefixed by the sysroot, and which path should not be prefixed by +the sysroot. + +So, let's simply have a whitelist of paths that should be prefixed: +g_ir_scanner, g_ir_compiler, g_ir_generate, includedir, libdir, mapdir, +pkgdatadir and sdkdir. This list of variables was collected over years of +Buildroot development. All other paths are not prefixed by the sysroot. + +Signed-off-by: Thomas Petazzoni +[Updated to include gobject-introspection paths] +Signed-off-by: Adam Duskett +--- + libpkgconf/tuple.c | 60 ++++++++++++++++++++++++++++++++-------------- + 1 file changed, 42 insertions(+), 18 deletions(-) + +diff --git a/libpkgconf/tuple.c b/libpkgconf/tuple.c +index 8523709..7cd2fff 100644 +--- a/libpkgconf/tuple.c ++++ b/libpkgconf/tuple.c +@@ -161,6 +161,21 @@ dequote(const char *value) + return buf; + } + ++static char * ++pkgconf_tuple_parse_sysroot(const pkgconf_client_t *client, pkgconf_list_t *vars, const char *value, bool add_sysroot); ++ ++const char *sysrooted_keys[] = { ++ "g_ir_scanner", ++ "g_ir_compiler", ++ "g_ir_generate", ++ "includedir", ++ "libdir", ++ "mapdir", ++ "pkgdatadir", ++ "sdkdir", ++ NULL, ++}; ++ + /* + * !doc + * +@@ -181,6 +193,8 @@ pkgconf_tuple_add(const pkgconf_client_t *client, pkgconf_list_t *list, const ch + { + char *dequote_value; + pkgconf_tuple_t *tuple = calloc(sizeof(pkgconf_tuple_t), 1); ++ bool add_sysroot = false; ++ int i; + + pkgconf_tuple_find_delete(list, key); + +@@ -188,9 +202,13 @@ pkgconf_tuple_add(const pkgconf_client_t *client, pkgconf_list_t *list, const ch + + PKGCONF_TRACE(client, "adding tuple to @%p: %s => %s (parsed? %d)", list, key, dequote_value, parse); + ++ for (i = 0; sysrooted_keys[i] != NULL; i++) ++ if (!strcmp(key, sysrooted_keys[i])) ++ add_sysroot = true; ++ + tuple->key = strdup(key); + if (parse) +- tuple->value = pkgconf_tuple_parse(client, list, dequote_value); ++ tuple->value = pkgconf_tuple_parse_sysroot(client, list, dequote_value, add_sysroot); + else + tuple->value = strdup(dequote_value); + +@@ -234,27 +252,14 @@ pkgconf_tuple_find(const pkgconf_client_t *client, pkgconf_list_t *list, const c + return NULL; + } + +-/* +- * !doc +- * +- * .. c:function:: char *pkgconf_tuple_parse(const pkgconf_client_t *client, pkgconf_list_t *vars, const char *value) +- * +- * Parse an expression for variable substitution. +- * +- * :param pkgconf_client_t* client: The pkgconf client object to access. +- * :param pkgconf_list_t* list: The variable list to search for variables (along side the global variable list). +- * :param char* value: The ``key=value`` string to parse. +- * :return: the variable data with any variables substituted +- * :rtype: char * +- */ +-char * +-pkgconf_tuple_parse(const pkgconf_client_t *client, pkgconf_list_t *vars, const char *value) ++static char * ++pkgconf_tuple_parse_sysroot(const pkgconf_client_t *client, pkgconf_list_t *vars, const char *value, bool add_sysroot) + { + char buf[PKGCONF_BUFSIZE]; + const char *ptr; + char *bptr = buf; + +- if (*value == '/' && client->sysroot_dir != NULL && strncmp(value, client->sysroot_dir, strlen(client->sysroot_dir))) ++ if (add_sysroot && *value == '/' && client->sysroot_dir != NULL && strncmp(value, client->sysroot_dir, strlen(client->sysroot_dir))) + bptr += pkgconf_strlcpy(buf, client->sysroot_dir, sizeof buf); + + for (ptr = value; *ptr != '\0' && bptr - buf < PKGCONF_BUFSIZE; ptr++) +@@ -294,7 +299,7 @@ pkgconf_tuple_parse(const pkgconf_client_t *client, pkgconf_list_t *vars, const + + if (kv != NULL) + { +- parsekv = pkgconf_tuple_parse(client, vars, kv); ++ parsekv = pkgconf_tuple_parse_sysroot(client, vars, kv, add_sysroot); + + strncpy(bptr, parsekv, PKGCONF_BUFSIZE - (bptr - buf)); + bptr += strlen(parsekv); +@@ -339,6 +344,25 @@ pkgconf_tuple_parse(const pkgconf_client_t *client, pkgconf_list_t *vars, const + return strdup(buf); + } + ++/* ++ * !doc ++ * ++ * .. c:function:: char *pkgconf_tuple_parse(const pkgconf_client_t *client, pkgconf_list_t *vars, const char *value) ++ * ++ * Parse an expression for variable substitution. ++ * ++ * :param pkgconf_client_t* client: The pkgconf client object to access. ++ * :param pkgconf_list_t* list: The variable list to search for variables (along side the global variable list). ++ * :param char* value: The ``key=value`` string to parse. ++ * :return: the variable data with any variables substituted ++ * :rtype: char * ++ */ ++char * ++pkgconf_tuple_parse(const pkgconf_client_t *client, pkgconf_list_t *vars, const char *value) ++{ ++ return pkgconf_tuple_parse_sysroot(client, vars, value, true); ++} ++ + /* + * !doc + * +-- +2.19.2 + diff --git a/package/pkgconf/0002-Revert-main-assume-modversion-insted-of-version-if-o.patch b/package/pkgconf/0002-Revert-main-assume-modversion-insted-of-version-if-o.patch new file mode 100644 index 00000000..f659a3b0 --- /dev/null +++ b/package/pkgconf/0002-Revert-main-assume-modversion-insted-of-version-if-o.patch @@ -0,0 +1,45 @@ +From 4ccef40918a539905a2951bfb81cf8dba4a245c6 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 2 Jan 2019 18:15:50 +0100 +Subject: [PATCH] Revert "main: assume --modversion insted of --version if + other flags or module names are provided" + +This reverts commit 12a0eb124cea85586e57f33c91a1e4c73459eef6, as it +causes pkg-config to assume --modversion is used when something as +simple as 'pkg-config --static --version' is used, leading to a +failure instead of the expected behavior: the one of "pkg-config +--version". + +Signed-off-by: Thomas Petazzoni +--- + cli/main.c | 14 ++------------ + 1 file changed, 2 insertions(+), 12 deletions(-) + +diff --git a/cli/main.c b/cli/main.c +index b52cc85..c5acc10 100644 +--- a/cli/main.c ++++ b/cli/main.c +@@ -1002,18 +1002,8 @@ main(int argc, char *argv[]) + + if ((want_flags & PKG_VERSION) == PKG_VERSION) + { +- if (argc > 2) +- { +- fprintf(stderr, "%s: --version specified with other options or module names, assuming --modversion.\n", argv[0]); +- +- want_flags &= ~PKG_VERSION; +- want_flags |= PKG_MODVERSION; +- } +- else +- { +- version(); +- return EXIT_SUCCESS; +- } ++ version(); ++ return EXIT_SUCCESS; + } + + if ((want_flags & PKG_HELP) == PKG_HELP) +-- +2.20.1 + diff --git a/package/pkgconf/Config.in b/package/pkgconf/Config.in new file mode 100644 index 00000000..a9c5658d --- /dev/null +++ b/package/pkgconf/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PKGCONF + bool "pkgconf" + help + pkgconf is a program which helps to configure compiler and + linker flags for development frameworks. It is similar to + pkg-config, but was written from scratch in the summer of + 2011 to replace pkg-config, which now needs itself to build + itself + + http://pkgconf.org/ diff --git a/package/pkgconf/Config.in.host b/package/pkgconf/Config.in.host new file mode 100644 index 00000000..56836a5c --- /dev/null +++ b/package/pkgconf/Config.in.host @@ -0,0 +1,10 @@ +config BR2_PACKAGE_HOST_PKGCONF + bool "host pkgconf" + help + pkgconf is a program which helps to configure compiler and + linker flags for development frameworks. It is similar to + pkg-config, but was written from scratch in the summer of + 2011 to replace pkg-config, which now needs itself to build + itself + + https://github.com/pkgconf/pkgconf diff --git a/package/pkgconf/pkg-config.in b/package/pkgconf/pkg-config.in new file mode 100644 index 00000000..e5a23a10 --- /dev/null +++ b/package/pkgconf/pkg-config.in @@ -0,0 +1,12 @@ +#!/bin/sh +PKGCONFDIR=$(dirname $0) +DEFAULT_PKG_CONFIG_LIBDIR=${PKGCONFDIR}/../@STAGING_SUBDIR@/usr/lib/pkgconfig:${PKGCONFDIR}/../@STAGING_SUBDIR@/usr/share/pkgconfig +DEFAULT_PKG_CONFIG_SYSROOT_DIR=${PKGCONFDIR}/../@STAGING_SUBDIR@ +DEFAULT_PKG_CONFIG_SYSTEM_INCLUDE_PATH=${PKGCONFDIR}/../@STAGING_SUBDIR@/usr/include +DEFAULT_PKG_CONFIG_SYSTEM_LIBRARY_PATH=${PKGCONFDIR}/../@STAGING_SUBDIR@/usr/lib + +PKG_CONFIG_LIBDIR=${PKG_CONFIG_LIBDIR:-${DEFAULT_PKG_CONFIG_LIBDIR}} \ + PKG_CONFIG_SYSROOT_DIR=${PKG_CONFIG_SYSROOT_DIR:-${DEFAULT_PKG_CONFIG_SYSROOT_DIR}} \ + PKG_CONFIG_SYSTEM_INCLUDE_PATH=${PKG_CONFIG_SYSTEM_INCLUDE_PATH:-${DEFAULT_PKG_CONFIG_SYSTEM_INCLUDE_PATH}} \ + PKG_CONFIG_SYSTEM_LIBRARY_PATH=${PKG_CONFIG_SYSTEM_LIBRARY_PATH:-${DEFAULT_PKG_CONFIG_SYSTEM_LIBRARY_PATH}} \ + exec ${PKGCONFDIR}/pkgconf --keep-system-libs @STATIC@ "$@" diff --git a/package/pkgconf/pkgconf.hash b/package/pkgconf/pkgconf.hash new file mode 100644 index 00000000..f210869c --- /dev/null +++ b/package/pkgconf/pkgconf.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 61f0b31b0d5ea0e862b454a80c170f57bad47879c0c42bd8de89200ff62ea210 pkgconf-1.6.3.tar.xz +sha256 07ee94b50a41ee3fc4e13a9b9c60b26fc28488494c465639f7e5f07a3952ec04 COPYING diff --git a/package/pkgconf/pkgconf.mk b/package/pkgconf/pkgconf.mk new file mode 100644 index 00000000..a8c7b482 --- /dev/null +++ b/package/pkgconf/pkgconf.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# pkgconf +# +################################################################################ + +PKGCONF_VERSION = 1.6.3 +PKGCONF_SITE = https://distfiles.ariadne.space/pkgconf +PKGCONF_SOURCE = pkgconf-$(PKGCONF_VERSION).tar.xz +PKGCONF_LICENSE = pkgconf license +PKGCONF_LICENSE_FILES = COPYING +PKGCONF_CPE_ID_VENDOR = pkgconf + +# The package is a dependency to ccache so ccache cannot be a dependency +HOST_PKGCONF_ADD_CCACHE_DEPENDENCY = NO + +# We are a ccache dependency, so we can't use ccache +HOST_PKGCONF_CONF_ENV = \ + CC="$(HOSTCC_NOCCACHE)" \ + CXX="$(HOSTCXX_NOCCACHE)" + +PKG_CONFIG_HOST_BINARY = $(HOST_DIR)/bin/pkg-config + +define PKGCONF_LINK_PKGCONFIG + ln -sf pkgconf $(TARGET_DIR)/usr/bin/pkg-config +endef + +define HOST_PKGCONF_INSTALL_WRAPPER + $(INSTALL) -m 0755 -D package/pkgconf/pkg-config.in \ + $(HOST_DIR)/bin/pkg-config + $(SED) 's,@STAGING_SUBDIR@,$(STAGING_SUBDIR),g' \ + $(HOST_DIR)/bin/pkg-config +endef + +define HOST_PKGCONF_STATIC + $(SED) 's,@STATIC@,--static,' $(HOST_DIR)/bin/pkg-config +endef + +define HOST_PKGCONF_SHARED + $(SED) 's,@STATIC@,,' $(HOST_DIR)/bin/pkg-config +endef + +PKGCONF_POST_INSTALL_TARGET_HOOKS += PKGCONF_LINK_PKGCONFIG +HOST_PKGCONF_POST_INSTALL_HOOKS += HOST_PKGCONF_INSTALL_WRAPPER + +ifeq ($(BR2_STATIC_LIBS),y) +HOST_PKGCONF_POST_INSTALL_HOOKS += HOST_PKGCONF_STATIC +else +HOST_PKGCONF_POST_INSTALL_HOOKS += HOST_PKGCONF_SHARED +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/ply/Config.in b/package/ply/Config.in new file mode 100644 index 00000000..f7507095 --- /dev/null +++ b/package/ply/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_PLY_ARCH_SUPPORTS + bool + default y if BR2_aarch64 + default y if BR2_arm + default y if BR2_powerpc + default y if BR2_x86_64 + +comment "ply needs a toolchain w/ dynamic library, headers >= 5.5" + depends on BR2_PACKAGE_PLY_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5 || BR2_STATIC_LIBS + +config BR2_PACKAGE_PLY + bool "ply" + depends on BR2_PACKAGE_PLY_ARCH_SUPPORTS + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5 # BPF_JLT + depends on !BR2_STATIC_LIBS + help + ply is a light-weight dynamic tracer for Linux. By means of + using the BPF it can attach probes to the linux kernel + (e. g. kprobes). + + It's a small alternative to LLVM based tracers for embedded + systems. + + When using debugfs needs to be mounted on /sys/kernel/debug. + + https://wkz.github.io/ply/ diff --git a/package/ply/ply.hash b/package/ply/ply.hash new file mode 100644 index 00000000..b6a56aa9 --- /dev/null +++ b/package/ply/ply.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 99be1ed3942370699cbfc7f493bc3ffd4601312a81471215ac7ccb2e04a0a8b2 ply-2.3.0.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/ply/ply.mk b/package/ply/ply.mk new file mode 100644 index 00000000..dc02fc54 --- /dev/null +++ b/package/ply/ply.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# ply +# +################################################################################ + +PLY_VERSION = 2.3.0 +PLY_SITE = $(call github,wkz,ply,$(PLY_VERSION)) +PLY_AUTORECONF = YES +PLY_LICENSE = GPL-2.0 +PLY_LICENSE_FILES = COPYING +PLY_INSTALL_STAGING = YES +PLY_DEPENDENCIES = host-flex host-bison + +$(eval $(autotools-package)) diff --git a/package/pngquant/Config.in b/package/pngquant/Config.in new file mode 100644 index 00000000..5fc93f60 --- /dev/null +++ b/package/pngquant/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PNGQUANT + bool "pngquant" + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_ZLIB + help + Lossy PNG compressor - pngquant command and libimagequant + library + + https://pngquant.org diff --git a/package/pngquant/pngquant.hash b/package/pngquant/pngquant.hash new file mode 100644 index 00000000..2926dfb6 --- /dev/null +++ b/package/pngquant/pngquant.hash @@ -0,0 +1,4 @@ +# From https://pngquant.org/releases.html +sha256 e72194b52b36f040deaec49a1ddd5dcd8d4feecc3a5fe6c5e9589a9707b233d4 pngquant-2.18.0-src.tar.gz +# Locally computed +sha256 e4f467f7abf860b4e620f5f60fdd88bc3a63a0fdb98a481fb002b5e511c9b826 COPYRIGHT diff --git a/package/pngquant/pngquant.mk b/package/pngquant/pngquant.mk new file mode 100644 index 00000000..8ef32160 --- /dev/null +++ b/package/pngquant/pngquant.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# pngquant +# +################################################################################ + +PNGQUANT_VERSION = 2.18.0 +PNGQUANT_SOURCE = pngquant-$(PNGQUANT_VERSION)-src.tar.gz +PNGQUANT_SITE = https://pngquant.org +PNGQUANT_LICENSE = GPL-3.0+ +PNGQUANT_LICENSE_FILES = COPYRIGHT +PNGQUANT_CPE_ID_VENDOR = pngquant +HOST_PNGQUANT_DEPENDENCIES = host-libpng +PNGQUANT_DEPENDENCIES = libpng + +ifeq ($(BR2_PACKAGE_LCMS2),y) +PNGQUANT_DEPENDENCIES += lcms2 +endif + +define PNGQUANT_CONFIGURE_CMDS + (cd $(@D) && \ + $(TARGET_CONFIGURE_OPTS) \ + ./configure --prefix=/usr \ + $(if $(BR2_PACKAGE_LCMS2),--with-lcms2,--without-lcms2) \ + $(if $(BR2_X86_CPU_HAS_SSE),--enable-sse,--disable-sse) \ + $(TARGET_CONFIGURE_OPTS) \ + ) +endef + +define PNGQUANT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define PNGQUANT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR="$(TARGET_DIR)" -C $(@D) install +endef + +define HOST_PNGQUANT_CONFIGURE_CMDS + (cd $(@D) && \ + $(HOST_CONFIGURE_OPTS) \ + CC=$(HOSTCC_NOCCACHE) \ + ./configure --prefix=$(HOST_DIR) \ + --without-lcms2 \ + ) +endef + +define HOST_PNGQUANT_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_PNGQUANT_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/poco/Config.in b/package/poco/Config.in new file mode 100644 index 00000000..9bdef125 --- /dev/null +++ b/package/poco/Config.in @@ -0,0 +1,123 @@ +config BR2_PACKAGE_POCO_ARCH_SUPPORTS + bool + default y + depends on !BR2_arc + depends on !BR2_microblaze + depends on !BR2_mipsel + depends on !BR2_or1k + depends on !BR2_RISCV_32 + depends on !BR2_xtensa + +config BR2_PACKAGE_POCO + bool "poco" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # C++17 + # pthread_condattr_setclock + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on !BR2_STATIC_LIBS # dlopen() + depends on BR2_PACKAGE_POCO_ARCH_SUPPORTS + select BR2_PACKAGE_PCRE2 + select BR2_PACKAGE_ZLIB + help + The C++ Portable Components Libraries + + http://pocoproject.org + +if BR2_PACKAGE_POCO + +comment "poco components" + +config BR2_PACKAGE_POCO_ACTIVERECORD + bool "ActiveRecord" + select BR2_PACKAGE_POCO_XML + +config BR2_PACKAGE_POCO_CPP_PARSER + bool "CppParser" + +config BR2_PACKAGE_POCO_CRYPTO + bool "Crypto" + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_OPENSSL + +config BR2_PACKAGE_POCO_DATA + bool + +config BR2_PACKAGE_POCO_DATA_MYSQL + bool "Data/MySQL" + depends on BR2_USE_MMU # mysql + select BR2_PACKAGE_MARIADB + select BR2_PACKAGE_POCO_DATA + +config BR2_PACKAGE_POCO_DATA_PGSQL + bool "Data/PostgreSQL" + depends on BR2_USE_MMU # postgresql + depends on !BR2_OPTIMIZE_FAST # postgresql + select BR2_PACKAGE_POCO_DATA + select BR2_PACKAGE_POSTGRESQL + +comment "Data/PostgreSQL can't be built with Optimize for fast" + depends on BR2_OPTIMIZE_FAST + +config BR2_PACKAGE_POCO_DATA_SQLITE + bool "Data/SQLite" + select BR2_PACKAGE_POCO_DATA + select BR2_PACKAGE_SQLITE + +config BR2_PACKAGE_POCO_JSON + bool "JSON" + +config BR2_PACKAGE_POCO_JWT + bool "JWT" + select BR2_PACKAGE_POCO_CRYPTO + select BR2_PACKAGE_POCO_JSON + +config BR2_PACKAGE_POCO_MONGODB + bool "MongoDB" + select BR2_PACKAGE_POCO_NET + +config BR2_PACKAGE_POCO_NET + bool "Net" + +config BR2_PACKAGE_POCO_NETSSL_OPENSSL + bool "NetSSL_OpenSSL" + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_POCO_CRYPTO + select BR2_PACKAGE_POCO_NET + select BR2_PACKAGE_POCO_UTIL + +config BR2_PACKAGE_POCO_PDF + bool "PDF" + select BR2_PACKAGE_POCO_JSON + select BR2_PACKAGE_POCO_UTIL + select BR2_PACKAGE_POCO_XML + +config BR2_PACKAGE_POCO_PROMETHEUS + bool "Prometheus" + select BR2_PACKAGE_POCO_NET + +config BR2_PACKAGE_POCO_REDIS + bool "Redis" + select BR2_PACKAGE_POCO_NET + +config BR2_PACKAGE_POCO_UTIL + bool "Util" + select BR2_PACKAGE_POCO_XML + +config BR2_PACKAGE_POCO_XML + bool "XML" + select BR2_PACKAGE_EXPAT + +config BR2_PACKAGE_POCO_ZIP + bool "Zip" + select BR2_PACKAGE_POCO_NET + select BR2_PACKAGE_POCO_UTIL + select BR2_PACKAGE_POCO_XML + +endif # BR2_PACKAGE_POCO + +comment "poco needs a toolchain w/ wchar, NPTL, C++, dynamic library, gcc >= 8" + depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_8 + depends on BR2_PACKAGE_POCO_ARCH_SUPPORTS diff --git a/package/poco/poco.hash b/package/poco/poco.hash new file mode 100644 index 00000000..0a1e900b --- /dev/null +++ b/package/poco/poco.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 c01221870aa9bccedf1de39890279699207848fe61a0cfb6aeec7c5942c4627f poco-1.13.2.tar.gz +sha256 c4b1e1e5f36d8331737231fefcc30f5714326aec7c387ad59a8115eb0ba7d6b5 LICENSE diff --git a/package/poco/poco.mk b/package/poco/poco.mk new file mode 100644 index 00000000..233252c6 --- /dev/null +++ b/package/poco/poco.mk @@ -0,0 +1,99 @@ +################################################################################ +# +# poco +# +################################################################################ + +POCO_VERSION = 1.13.2 +POCO_SITE = $(call github,pocoproject,poco,poco-$(POCO_VERSION)-release) +POCO_LICENSE = BSL-1.0 +POCO_LICENSE_FILES = LICENSE +POCO_CPE_ID_VENDOR = pocoproject +POCO_INSTALL_STAGING = YES + +POCO_DEPENDENCIES = \ + pcre2 \ + zlib \ + $(if $(BR2_PACKAGE_POCO_CRYPTO),openssl) \ + $(if $(BR2_PACKAGE_POCO_DATA_MYSQL),mariadb) \ + $(if $(BR2_PACKAGE_POCO_DATA_SQLITE),sqlite) \ + $(if $(BR2_PACKAGE_POCO_DATA_PGSQL),postgresql) \ + $(if $(BR2_PACKAGE_POCO_NETSSL_OPENSSL),openssl) \ + $(if $(BR2_PACKAGE_POCO_XML),expat) + +POCO_OMIT = \ + Data/ODBC \ + PageCompiler \ + $(if $(BR2_PACKAGE_POCO_ACTIVERECORD),,ActiveRecord) \ + $(if $(BR2_PACKAGE_POCO_CPP_PARSER),,CppParser) \ + $(if $(BR2_PACKAGE_POCO_CRYPTO),,Crypto) \ + $(if $(BR2_PACKAGE_POCO_DATA),,Data) \ + $(if $(BR2_PACKAGE_POCO_DATA_MYSQL),,Data/MySQL) \ + $(if $(BR2_PACKAGE_POCO_DATA_SQLITE),,Data/SQLite) \ + $(if $(BR2_PACKAGE_POCO_DATA_PGSQL),,Data/PostgreSQL) \ + $(if $(BR2_PACKAGE_POCO_JSON),,JSON) \ + $(if $(BR2_PACKAGE_POCO_JWT),,JWT) \ + $(if $(BR2_PACKAGE_POCO_MONGODB),,MongoDB) \ + $(if $(BR2_PACKAGE_POCO_NET),,Net) \ + $(if $(BR2_PACKAGE_POCO_NETSSL_OPENSSL),,NetSSL_OpenSSL) \ + $(if $(BR2_PACKAGE_POCO_PDF),,PDF) \ + $(if $(BR2_PACKAGE_POCO_PROMETHEUS),,Prometheus) \ + $(if $(BR2_PACKAGE_POCO_REDIS),,Redis) \ + $(if $(BR2_PACKAGE_POCO_UTIL),,Util) \ + $(if $(BR2_PACKAGE_POCO_XML),,XML) \ + $(if $(BR2_PACKAGE_POCO_ZIP),,Zip) + +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +POCO_CONF_OPTS += --no-fpenvironment --no-wstring +endif + +# architectures missing some FE_* in their fenv.h +ifeq ($(BR2_sh4a)$(BR2_nios2),y) +POCO_CONF_OPTS += --no-fpenvironment +endif + +# disable fpenvironment for soft floating point configuration +ifeq ($(BR2_SOFT_FLOAT),y) +POCO_CONF_OPTS += --no-fpenvironment +endif + +POCO_MAKE_TARGET = shared_release + +POCO_LDFLAGS=$(TARGET_LDFLAGS) +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +POCO_LDFLAGS += -latomic +endif + +define POCO_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) ./configure \ + --config=Linux \ + --prefix=/usr \ + --ldflags="$(POCO_LDFLAGS)" \ + --omit="$(POCO_OMIT)" \ + $(POCO_CONF_OPTS) \ + --unbundled \ + --no-tests \ + --no-samples) +endef + +# Use $(MAKE1) to avoid failures on heavilly parallel machines (e.g. -j25) +define POCO_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) POCO_TARGET_OSARCH=$(ARCH) CROSS_COMPILE=$(TARGET_CROSS) \ + POCO_MYSQL_INCLUDE=$(STAGING_DIR)/usr/include/mysql \ + POCO_MYSQL_LIB=$(STAGING_DIR)/usr/lib/mysql \ + POCO_PGSQL_INCLUDE=$(STAGING_DIR)/usr/include/postgresql \ + POCO_PGSQL_LIB=$(STAGING_DIR)/usr/lib/postgresql \ + DEFAULT_TARGET=$(POCO_MAKE_TARGET) -C $(@D) +endef + +define POCO_INSTALL_STAGING_CMDS + $(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 + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) POCO_TARGET_OSARCH=$(ARCH) \ + DEFAULT_TARGET=$(POCO_MAKE_TARGET) install -C $(@D) +endef + +$(eval $(generic-package)) diff --git a/package/poke/0001-configure.ac-HELP2MAN-replace-by-true-when-cross-com.patch b/package/poke/0001-configure.ac-HELP2MAN-replace-by-true-when-cross-com.patch new file mode 100644 index 00000000..fb5604d8 --- /dev/null +++ b/package/poke/0001-configure.ac-HELP2MAN-replace-by-true-when-cross-com.patch @@ -0,0 +1,36 @@ +From a7e29f73dab5f9bd4fc7a2407f1ed2022c4ff109 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 30 Apr 2021 15:43:59 +0200 +Subject: [PATCH] configure.ac: HELP2MAN replace ':' by 'true' when + cross-compiling + +Avoid: +/usr/bin/make ./../poke/poke +../run \ + : -p poke --name="The GNU extensible binary editor" \ + ./../poke/poke -o ./poke.1 +../run: line 51: exec: :: not found + +Signed-off-by: Romain Naour +[Julien: refreshed the patch to be applied with fuzz factor 0] +Signed-off-by: Julien Olivain +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 71b4d86..6487b57 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -88,7 +88,7 @@ gl_LIBTEXTSTYLE_OPTIONAL([0.20.5]) + if test $cross_compiling = no; then + AM_MISSING_PROG(HELP2MAN, help2man) + else +- HELP2MAN=: ++ HELP2MAN=true + fi + + dnl The following Automake conditional is used in some Makefile.am files +-- +2.45.2 + diff --git a/package/poke/0002-lib-getrandom.c-fix-build-with-uclibc-1.0.35.patch b/package/poke/0002-lib-getrandom.c-fix-build-with-uclibc-1.0.35.patch new file mode 100644 index 00000000..db125081 --- /dev/null +++ b/package/poke/0002-lib-getrandom.c-fix-build-with-uclibc-1.0.35.patch @@ -0,0 +1,75 @@ +From 09758ebb191da659563b4c33334295ce21ecae71 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 1 Apr 2021 07:49:46 +0200 +Subject: [PATCH] lib/getrandom.c: fix build with uclibc < 1.0.35 + +Fix the following build failure with uclibc < 1.0.35 which is raised +since the addition of getrandom module in +https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=682cc4e678aceff32dea2a84b6e5147bdf5a20a7: + +In file included from ./sys/random.h:40, + from getrandom.c:22: +/tmp/instance-0/output-1/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:27:35: error: unknown type name 'size_t' + 27 | extern int getrandom(void *__buf, size_t count, unsigned int flags) + | ^~~~~~ +/tmp/instance-0/output-1/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:8:1: note: 'size_t' is defined in header ''; did you forget to '#include '? + 7 | #include + +++ |+#include + 8 | + +This patch is not upstreamable as it is only a workaround for +uclibc < 1.0.35, upstream uclibc has been patched with +https://github.com/wbx-github/uclibc-ng/commit/00972c02c2b6e0a95d5def4a71bdfb188e091782 + +Fixes: + - http://autobuild.buildroot.org/results/30105094e39374ec6d4e47e2fb5e99696f7f7981 + +Signed-off-by: Fabrice Fontaine +Upstream: Not applicable (Buildroot specific) +[Julien: refreshed the patch to be applied with fuzz factor 0] +Signed-off-by: Julien Olivain +--- + gl-libpoke/getrandom.c | 1 + + gl/getrandom.c | 1 + + jitter/gnulib-local/getrandom.c | 1 + + 3 files changed, 3 insertions(+) + +diff --git a/gl-libpoke/getrandom.c b/gl-libpoke/getrandom.c +index 19bb342..0251e0f 100644 +--- a/gl-libpoke/getrandom.c ++++ b/gl-libpoke/getrandom.c +@@ -19,6 +19,7 @@ + + #include + ++#include + #include + + #include +diff --git a/gl/getrandom.c b/gl/getrandom.c +index 19bb342..0251e0f 100644 +--- a/gl/getrandom.c ++++ b/gl/getrandom.c +@@ -19,6 +19,7 @@ + + #include + ++#include + #include + + #include +diff --git a/jitter/gnulib-local/getrandom.c b/jitter/gnulib-local/getrandom.c +index 19bb342..0251e0f 100644 +--- a/jitter/gnulib-local/getrandom.c ++++ b/jitter/gnulib-local/getrandom.c +@@ -19,6 +19,7 @@ + + #include + ++#include + #include + + #include +-- +2.45.2 + diff --git a/package/poke/Config.in b/package/poke/Config.in new file mode 100644 index 00000000..8bedb12b --- /dev/null +++ b/package/poke/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_POKE + bool "poke" + depends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS # bdwgc + depends on BR2_USE_WCHAR # needs wctomb + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_USE_MMU # bdwgc + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # less + select BR2_PACKAGE_BDWGC + select BR2_PACKAGE_LESS # runtime + select BR2_PACKAGE_READLINE + help + GNU poke is a new interactive editor for binary data. Not + limited to editing basic entities such as bits and bytes, + it provides a full-fledged procedural, interactive + programming language designed to describe data structures + and to operate on them. Once a user has defined a structure + for binary data (usually matching some file format) she can + search, inspect, create, shuffle and modify abstract entities + such as ELF relocations, MP3 tags, DWARF expressions, + partition table entries, and so on, with primitives + resembling simple editing of bits and bytes. The program + comes with a library of already written descriptions (or + "pickles" in poke parlance) for many binary formats. + + https://www.gnu.org/software/poke/ + +comment "poke needs a toolchain w/ NPTL, wchar" + depends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_USE_WCHAR diff --git a/package/poke/poke.hash b/package/poke/poke.hash new file mode 100644 index 00000000..e6e43657 --- /dev/null +++ b/package/poke/poke.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 79a9b2f33c9f8c327c499afadaeeabfeecf6ad4988924d2c6c6f317e50317add poke-3.0.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 jitter/COPYING diff --git a/package/poke/poke.mk b/package/poke/poke.mk new file mode 100644 index 00000000..4a6ff344 --- /dev/null +++ b/package/poke/poke.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# poke +# +################################################################################ + +POKE_VERSION = 3.0 +POKE_SITE = $(BR2_GNU_MIRROR)/poke +# gnulib license is a mix/mess of public-domain and various GPL and LGPL versions. +POKE_LICENSE = GPL-3.0+, GPL-3.0+ (jitter), gnulib license (gnulib) +POKE_LICENSE_FILES = COPYING jitter/COPYING + +# 0001-configure.ac-HELP2MAN-replace-by-false-when-cross-co.patch +POKE_AUTORECONF = YES + +POKE_INSTALL_STAGING = YES +POKE_DEPENDENCIES = host-flex host-bison host-pkgconf bdwgc readline + +# poke bundle gnulib that doesn't support the case where +# host_os='linux-uclibc'. When cross-compiling, the guessed +# answers are mostly wrong and gnulib will try to replace +# snprintf with rpl_snprintf. This lead to "undefined reference +# to `rpl_snprintf'" errors. +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +POKE_CONF_ENV = gl_cv_func_printf_positions=yes \ + gl_cv_func_snprintf_retval_c99=yes \ + gl_cv_func_printf_sizes_c99=yes \ + gl_cv_func_printf_infinite_long_double=yes \ + gl_cv_func_snprintf_retval_c99=yes \ + gl_cv_func_snprintf_truncation_c99=yes \ + gl_cv_func_snprintf_usable=yes \ + gl_cv_func_strerror_0_works=yes \ + gl_cv_header_working_stdint_h=yes \ + gl_cv_func_printf_infinite=yes \ + gl_cv_func_printf_flag_zero=yes \ + gl_cv_func_printf_enomem=yes \ + gl_cv_func_printf_directive_f=yes \ + gl_cv_func_printf_directive_a=yes \ + gl_cv_func_snprintf_directive_n=yes \ + gl_cv_func_vsnprintf_posix=yes \ + gl_cv_func_vsnprintf_zerosize_c99=yes +endif + +POKE_CONF_OPTS = \ + --disable-gui \ + --disable-libnbd \ + --with-libreadline-prefix=$(STAGING_DIR) + +ifeq ($(BR2_PACKAGE_JSON_C),y) +POKE_DEPENDENCIES += json-c +POKE_CONF_OPTS += --enable-mi +else +POKE_CONF_OPTS += --disable-mi +endif + +$(eval $(autotools-package)) diff --git a/package/policycoreutils/0001-Add-DESTDIR-to-all-paths-that-use-an-absolute-path.patch b/package/policycoreutils/0001-Add-DESTDIR-to-all-paths-that-use-an-absolute-path.patch new file mode 100644 index 00000000..18f0001a --- /dev/null +++ b/package/policycoreutils/0001-Add-DESTDIR-to-all-paths-that-use-an-absolute-path.patch @@ -0,0 +1,38 @@ +From 85763549c53b2907dab094163f1404b2233f8029 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Mon, 9 Oct 2017 16:51:20 -0400 +Subject: [PATCH] Add DESTDIR to setfiles + +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: Fabrice Fontaine +[Update for 2.8] +Signed-off-by: Adam Duskett +[Update for 3.2] +--- + setfiles/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/setfiles/Makefile b/setfiles/Makefile +index a3bbbe1..df675cf 100644 +--- a/setfiles/Makefile ++++ b/setfiles/Makefile +@@ -3,7 +3,7 @@ LINGUAS ?= ru + PREFIX ?= /usr + SBINDIR ?= /sbin + MANDIR = $(PREFIX)/share/man +-AUDITH ?= $(shell test -f /usr/include/libaudit.h && echo y) ++AUDITH ?= $(shell test -f $(DESTDIR)$(PREFIX)/include/libaudit.h && echo y) + + CFLAGS ?= -g -Werror -Wall -W + override LDLIBS += -lselinux -lsepol -lpthread +-- +2.13.6 + diff --git a/package/policycoreutils/0002-Add-PREFIX-to-host-paths.patch b/package/policycoreutils/0002-Add-PREFIX-to-host-paths.patch new file mode 100644 index 00000000..2daed57c --- /dev/null +++ b/package/policycoreutils/0002-Add-PREFIX-to-host-paths.patch @@ -0,0 +1,54 @@ +From a221304344b3f9db7e86d928cf97d77542bcf456 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Mon, 9 Oct 2017 16:47:19 -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 3.2 + +Signed-off-by: Clayton Shotwell +Signed-off-by: Niranjan Reddy +Signed-off-by: Fabrice Fontaine +[Update for 2.8] +Signed-off-by: Adam Duskett +[Update for 3.2] +--- + newrole/Makefile | 4 ++-- + run_init/Makefile | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/newrole/Makefile b/newrole/Makefile +index 0e7ebce..3188cec 100644 +--- a/newrole/Makefile ++++ b/newrole/Makefile +@@ -4,8 +4,8 @@ PREFIX ?= /usr + BINDIR ?= $(PREFIX)/bin + MANDIR ?= $(PREFIX)/share/man + ETCDIR ?= /etc +-LOCALEDIR = $(DESTDIR)$(PREFIX)/share/locale +-INCLUDEDIR ?= $(PREFIX)/include ++LOCALEDIR = $(DESTDIR)$(PREFIX) ++INCLUDEDIR ?= $(LOCALEDIR)/include + PAMH ?= $(shell test -f $(INCLUDEDIR)/security/pam_appl.h && echo y) + AUDITH ?= $(shell test -f $(INCLUDEDIR)/libaudit.h && echo y) + # Enable capabilities to permit newrole to generate audit records. +diff --git a/run_init/Makefile b/run_init/Makefile +index e86364a..20a64d4 100644 +--- a/run_init/Makefile ++++ b/run_init/Makefile +@@ -6,8 +6,8 @@ SBINDIR ?= $(PREFIX)/sbin + MANDIR ?= $(PREFIX)/share/man + ETCDIR ?= /etc + LOCALEDIR ?= $(DESTDIR)$(PREFIX)/share/locale +-PAMH ?= $(shell test -f /usr/include/security/pam_appl.h && echo y) +-AUDITH ?= $(shell test -f /usr/include/libaudit.h && echo y) ++PAMH ?= $(shell test -f $(DESTDIR)$(PREFIX)/include/security/pam_appl.h && echo y) ++AUDITH ?= $(shell test -f $(DESTDIR)$(PREFIX)/include/libaudit.h && echo y) + + CFLAGS ?= -Werror -Wall -W + override CFLAGS += -DUSE_NLS -DLOCALEDIR="\"$(LOCALEDIR)\"" -DPACKAGE="\"policycoreutils\"" +-- +2.31.1 + diff --git a/package/policycoreutils/Config.in b/package/policycoreutils/Config.in new file mode 100644 index 00000000..07e171a5 --- /dev/null +++ b/package/policycoreutils/Config.in @@ -0,0 +1,38 @@ +comment "policycoreutils needs a toolchain w/ threads, dynamic library, gcc >= 5" + depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +config BR2_PACKAGE_POLICYCOREUTILS + bool "policycoreutils" + depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS # libsemanage + depends on BR2_TOOLCHAIN_HAS_THREADS # libsemanage, libsepol + depends on !BR2_STATIC_LIBS # libsemanage, libsepol + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # libsemanage -> libselinux -> libsepol + select BR2_PACKAGE_LIBSEMANAGE + select BR2_PACKAGE_LIBSEPOL + select BR2_PACKAGE_LIBCAP_NG + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + 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 + run_init + secon + semodule + sestatus + setfiles + setsebool + + http://selinuxproject.org/page/Main_Page diff --git a/package/policycoreutils/policycoreutils.hash b/package/policycoreutils/policycoreutils.hash new file mode 100644 index 00000000..ea451169 --- /dev/null +++ b/package/policycoreutils/policycoreutils.hash @@ -0,0 +1,3 @@ +# https://github.com/SELinuxProject/selinux/wiki/Releases +sha256 a76ac431ea40a35a83164ce9007909c1c6c12fd1056627f622144e4a705c0a2c policycoreutils-3.6.tar.gz +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 LICENSE diff --git a/package/policycoreutils/policycoreutils.mk b/package/policycoreutils/policycoreutils.mk new file mode 100644 index 00000000..714e2d7a --- /dev/null +++ b/package/policycoreutils/policycoreutils.mk @@ -0,0 +1,84 @@ +################################################################################ +# +# policycoreutils +# +################################################################################ + +POLICYCOREUTILS_VERSION = 3.6 +POLICYCOREUTILS_SITE = https://github.com/SELinuxProject/selinux/releases/download/$(POLICYCOREUTILS_VERSION) +POLICYCOREUTILS_LICENSE = GPL-2.0 +POLICYCOREUTILS_LICENSE_FILES = LICENSE +POLICYCOREUTILS_CPE_ID_VENDOR = selinuxproject + +POLICYCOREUTILS_DEPENDENCIES = libsemanage libsepol libcap-ng $(TARGET_NLS_DEPENDENCIES) +POLICYCOREUTILS_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) LDLIBS=$(TARGET_NLS_LIBS) + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +POLICYCOREUTILS_DEPENDENCIES += libxcrypt +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +POLICYCOREUTILS_DEPENDENCIES += linux-pam +POLICYCOREUTILS_MAKE_OPTS += NAMESPACE_PRIV=y +endif + +ifeq ($(BR2_PACKAGE_AUDIT),y) +POLICYCOREUTILS_DEPENDENCIES += audit +POLICYCOREUTILS_MAKE_OPTS += AUDIT_LOG_PRIV=y USE_AUDIT=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 + +POLICYCOREUTILS_MAKE_DIRS = \ + load_policy newrole run_init \ + secon semodule sestatus setfiles \ + setsebool scripts + +# 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 + +# We need to pass PREFIX because it defaults to $(DESTDIR)/usr +HOST_POLICYCOREUTILS_MAKE_OPTS = \ + $(HOST_CONFIGURE_OPTS) \ + PREFIX=$(HOST_DIR) \ + ETCDIR=$(HOST_DIR)/etc \ + SBINDIR=$(HOST_DIR)/sbin + +# Note: We are only building the programs required by the refpolicy build +HOST_POLICYCOREUTILS_MAKE_DIRS = \ + load_policy newrole run_init \ + secon semodule sestatus setfiles \ + setsebool + +define HOST_POLICYCOREUTILS_BUILD_CMDS + $(foreach d,$(HOST_POLICYCOREUTILS_MAKE_DIRS), + $(MAKE) -C $(@D)/$(d) $(HOST_POLICYCOREUTILS_MAKE_OPTS) all + ) +endef + +define HOST_POLICYCOREUTILS_INSTALL_CMDS + $(foreach d,$(HOST_POLICYCOREUTILS_MAKE_DIRS), + $(MAKE) -C $(@D)/$(d) $(HOST_POLICYCOREUTILS_MAKE_OPTS) install + ) +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/polkit/Config.in b/package/polkit/Config.in new file mode 100644 index 00000000..fda6c984 --- /dev/null +++ b/package/polkit/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_POLKIT + bool "polkit" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2, dbus + depends on BR2_USE_MMU # libglib2, dbus + depends on BR2_USE_WCHAR # libglib2 + depends on !BR2_STATIC_LIBS # duktape + depends on !BR2_OPTIMIZE_FAST # duktape + select BR2_PACKAGE_DBUS # runtime + select BR2_PACKAGE_DUKTAPE + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + PolicyKit is a toolkit for defining and handling + authorizations. It is used for allowing unprivileged + processes to speak to privileged processes. + + http://www.freedesktop.org/wiki/Software/polkit + +comment "polkit needs a toolchain with dynamic library, wchar, threads, gcc >= 7" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \ + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS + +comment "polkit can't be built with Optimize for fast" + depends on BR2_OPTIMIZE_FAST diff --git a/package/polkit/S50polkitd b/package/polkit/S50polkitd new file mode 100644 index 00000000..5810e780 --- /dev/null +++ b/package/polkit/S50polkitd @@ -0,0 +1,51 @@ +#!/bin/sh + +DAEMON="polkitd" +DAEMON_PATH="/usr/lib/polkit-1/${DAEMON}" +PIDFILE="/var/run/${DAEMON}.pid" +POLKITD_ARGS="--no-debug" + +# polkitd does not create a pidfile, so pass "-n" in the command line +# and use "-m" to instruct start-stop-daemon to create one. +start() { + printf 'Starting %s: ' "${DAEMON}" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -bmSqp "$PIDFILE" -x ${DAEMON_PATH} -- ${POLKITD_ARGS} + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "${DAEMON}" + start-stop-daemon -Kqp "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/polkit/polkit.hash b/package/polkit/polkit.hash new file mode 100644 index 00000000..5eadc897 --- /dev/null +++ b/package/polkit/polkit.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b69278f6ea0eac406350c45f5720e2fe5e4beaf9f53c16d9902e025965418864 polkit-123.tar.gz +sha256 d2e2aa973e29c75e1b492e67ea7b7da9de2d501d49a934657971fd74f9a0b0a8 COPYING diff --git a/package/polkit/polkit.mk b/package/polkit/polkit.mk new file mode 100644 index 00000000..cdbbf8f9 --- /dev/null +++ b/package/polkit/polkit.mk @@ -0,0 +1,76 @@ +################################################################################ +# +# polkit +# +################################################################################ + +POLKIT_VERSION = 123 +POLKIT_SITE = https://gitlab.freedesktop.org/polkit/polkit/-/archive/$(POLKIT_VERSION) +POLKIT_LICENSE = GPL-2.0 +POLKIT_LICENSE_FILES = COPYING +POLKIT_CPE_ID_VALID = YES +POLKIT_INSTALL_STAGING = YES +POLKIT_DEPENDENCIES = \ + duktape libglib2 host-intltool expat $(TARGET_NLS_DEPENDENCIES) + +POLKIT_SELINUX_MODULES = policykit + +POLKIT_LDFLAGS = $(TARGET_NLS_LIBS) + +POLKIT_CONF_OPTS = \ + -Dman=false \ + -Dexamples=false \ + -Dsession_tracking=ConsoleKit \ + -Djs_engine=duktape + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +POLKIT_CONF_OPTS += -Dintrospection=true +POLKIT_DEPENDENCIES += gobject-introspection +else +POLKIT_CONF_OPTS += -Dintrospection=false +endif + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +POLKIT_DEPENDENCIES += libxcrypt +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +POLKIT_DEPENDENCIES += linux-pam +POLKIT_CONF_OPTS += -Dauthfw=pam +else +POLKIT_CONF_OPTS += -Dauthfw=shadow +endif + +# polkit.{its,loc} are needed for gvfs and must be installed in $(HOST_DIR) +# and not $(STAGING_DIR) +define POLKIT_INSTALL_ITS + $(INSTALL) -D -m 644 $(@D)/gettext/its/polkit.its \ + $(HOST_DIR)/share/gettext/its/polkit.its + $(INSTALL) -D -m 644 $(@D)/gettext/its/polkit.loc \ + $(HOST_DIR)/share/gettext/its/polkit.loc +endef +POLKIT_POST_INSTALL_TARGET_HOOKS += POLKIT_INSTALL_ITS + +define POLKIT_USERS + polkitd -1 polkitd -1 * - - - Polkit Daemon +endef + +define POLKIT_PERMISSIONS + /etc/polkit-1/rules.d d 700 polkitd root - - - - - + /usr/share/polkit-1/rules.d d 700 polkitd root - - - - - + /usr/bin/pkexec f 4755 root root - - - - - + /usr/lib/polkit-1/polkit-agent-helper-1 f 4755 root root - - - - - +endef + +define POLKIT_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(POLKIT_PKGDIR)/polkit.service \ + $(TARGET_DIR)/usr/lib/systemd/system/polkit.service + +endef + +define POLKIT_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/polkit/S50polkitd \ + $(TARGET_DIR)/etc/init.d/S50polkitd +endef + +$(eval $(meson-package)) diff --git a/package/polkit/polkit.service b/package/polkit/polkit.service new file mode 100644 index 00000000..a69b28cd --- /dev/null +++ b/package/polkit/polkit.service @@ -0,0 +1,12 @@ +[Unit] + +Description=Authorization Manager +Documentation=man:polkit(8) + +[Service] +Type=dbus +BusName=org.freedesktop.PolicyKit1 +ExecStart=/usr/lib/polkit-1/polkitd --no-debug + +[Install] +WantedBy=multi-user.target diff --git a/package/popperjs/Config.in b/package/popperjs/Config.in new file mode 100644 index 00000000..eae96310 --- /dev/null +++ b/package/popperjs/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_POPPERJS + bool "popperjs" + help + Popper.js, a JavaScript Tooltip & Popover Positioning Engine. + + https://popper.js.org diff --git a/package/popperjs/popperjs.hash b/package/popperjs/popperjs.hash new file mode 100644 index 00000000..a2388f5b --- /dev/null +++ b/package/popperjs/popperjs.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 83eecef51d10826faca2cd5cabb344e0bef6d4127d7e728db9e4d8308b7b15d1 popperjs-1.16.0.tar.gz +sha256 2961310ed05cd9373a08b8191c071425a7fede0ca5d807ca38fa5f5f61c5b834 LICENSE.md diff --git a/package/popperjs/popperjs.mk b/package/popperjs/popperjs.mk new file mode 100644 index 00000000..c5df302e --- /dev/null +++ b/package/popperjs/popperjs.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# popperjs +# +################################################################################ + +POPPERJS_VERSION = 1.16.0 +POPPERJS_SITE = $(call github,popperjs,popper-core,v$(POPPERJS_VERSION)) +POPPERJS_LICENSE = MIT +POPPERJS_LICENSE_FILES = LICENSE.md + +define POPPERJS_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/dist/umd/popper.min.js \ + $(TARGET_DIR)/var/www/popperjs/js/popper.min.js + $(INSTALL) -m 0644 -D $(@D)/dist/umd/popper-utils.min.js \ + $(TARGET_DIR)/var/www/popperjs/js/popper-utils.min.js +endef + +$(eval $(generic-package)) diff --git a/package/poppler/0001-OutlineItem-open-Fix-crash-on-malformed-files.patch b/package/poppler/0001-OutlineItem-open-Fix-crash-on-malformed-files.patch new file mode 100644 index 00000000..478759e0 --- /dev/null +++ b/package/poppler/0001-OutlineItem-open-Fix-crash-on-malformed-files.patch @@ -0,0 +1,45 @@ +From e5cc11e0b5b867f4705fd28ff1b981c1224be1cd Mon Sep 17 00:00:00 2001 +From: Albert Astals Cid +Date: Wed, 17 May 2023 22:42:05 +0200 +Subject: [PATCH] OutlineItem::open: Fix crash on malformed files + +Fixes #1399 + +Upstream: https://gitlab.freedesktop.org/poppler/poppler/-/commit/591235c8b6c65a2eee88991b9ae73490fd9afdfe +[Thomas: backported to fix CVE-2023-34872] +Signed-off-by: Thomas Petazzoni +--- + poppler/Outline.cc | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/poppler/Outline.cc b/poppler/Outline.cc +index cbb6cb49..4c68be99 100644 +--- a/poppler/Outline.cc ++++ b/poppler/Outline.cc +@@ -14,7 +14,7 @@ + // under GPL version 2 or later + // + // Copyright (C) 2005 Marco Pesenti Gritti +-// Copyright (C) 2008, 2016-2019, 2021 Albert Astals Cid ++// Copyright (C) 2008, 2016-2019, 2021, 2023 Albert Astals Cid + // Copyright (C) 2009 Nick Jones + // Copyright (C) 2016 Jason Crain + // Copyright (C) 2017 Adrian Johnson +@@ -483,8 +483,12 @@ void OutlineItem::open() + { + if (!kids) { + Object itemDict = xref->fetch(ref); +- const Object &firstRef = itemDict.dictLookupNF("First"); +- kids = readItemList(this, &firstRef, xref, doc); ++ if (itemDict.isDict()) { ++ const Object &firstRef = itemDict.dictLookupNF("First"); ++ kids = readItemList(this, &firstRef, xref, doc); ++ } else { ++ kids = new std::vector(); ++ } + } + } + +-- +2.41.0 + diff --git a/package/poppler/Config.in b/package/poppler/Config.in new file mode 100644 index 00000000..21c4d86c --- /dev/null +++ b/package/poppler/Config.in @@ -0,0 +1,36 @@ +config BR2_PACKAGE_POPPLER + bool "poppler" + depends on BR2_USE_WCHAR + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17 + select BR2_PACKAGE_FONTCONFIG + help + Poppler is a PDF rendering library based on the xpdf-3.0 + code base. + + https://poppler.freedesktop.org/ + +if BR2_PACKAGE_POPPLER + +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 + +config BR2_PACKAGE_POPPLER_UTILS + bool "command line utils" + help + Compile poppler command line utils. + +endif + +comment "poppler needs a toolchain w/ wchar, C++, threads, dynamic library, gcc >= 7" + depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 diff --git a/package/poppler/poppler.hash b/package/poppler/poppler.hash new file mode 100644 index 00000000..bb07b2ee --- /dev/null +++ b/package/poppler/poppler.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 d9aa9cacdfbd0f8e98fc2b3bb008e645597ed480685757c3e7bc74b4278d15c0 poppler-22.12.0.tar.xz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/poppler/poppler.mk b/package/poppler/poppler.mk new file mode 100644 index 00000000..776fb4d5 --- /dev/null +++ b/package/poppler/poppler.mk @@ -0,0 +1,148 @@ +################################################################################ +# +# poppler +# +################################################################################ + +POPPLER_VERSION = 22.12.0 +POPPLER_SOURCE = poppler-$(POPPLER_VERSION).tar.xz +POPPLER_SITE = https://poppler.freedesktop.org +POPPLER_DEPENDENCIES = fontconfig host-pkgconf +POPPLER_LICENSE = GPL-2.0+ +POPPLER_LICENSE_FILES = COPYING +POPPLER_CPE_ID_VENDOR = freedesktop +# 0001-OutlineItem-open-Fix-crash-on-malformed-files.patch +POPPLER_IGNORE_CVES += CVE-2023-34872 +POPPLER_INSTALL_STAGING = YES + +POPPLER_CONF_OPTS = \ + -DENABLE_UNSTABLE_API_ABI_HEADERS=ON \ + -DBUILD_GTK_TESTS=OFF \ + -DBUILD_QT5_TESTS=OFF \ + -DBUILD_QT6_TESTS=OFF \ + -DBUILD_CPP_TESTS=OFF \ + -DBUILD_MANUAL_TESTS=OFF \ + -DENABLE_GTK_DOC=OFF \ + -DENABLE_QT6=OFF \ + -DRUN_GPERF_IF_PRESENT=OFF + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +POPPLER_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic +endif + +ifeq ($(BR2_PACKAGE_BOOST),y) +POPPLER_DEPENDENCIES += boost +POPPLER_CONF_OPTS += -DENABLE_BOOST=ON +else +POPPLER_CONF_OPTS += -DENABLE_BOOST=OFF +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +POPPLER_DEPENDENCIES += jpeg +POPPLER_CONF_OPTS += -DENABLE_DCTDECODER=libjpeg -DWITH_JPEG=ON +else +POPPLER_CONF_OPTS += -DENABLE_DCTDECODER=none -DWITH_JPEG=OFF +endif + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +POPPLER_DEPENDENCIES += gobject-introspection +POPPLER_CONF_OPTS += \ + -DENABLE_GOBJECT_INTROSPECTION=ON \ + -DINTROSPECTION_SCANNER=$(STAGING_DIR)/usr/bin/g-ir-scanner \ + -DINTROSPECTION_COMPILER=$(STAGING_DIR)/usr/bin/g-ir-compiler \ + -DINTROSPECTION_COMPILER_ARGS="--includedir=$(STAGING_DIR)/usr/share/gir-1.0" +else +POPPLER_CONF_OPTS += -DENABLE_GOBJECT_INTROSPECTION=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +POPPLER_DEPENDENCIES += libpng +POPPLER_CONF_OPTS += -DWITH_PNG=ON +else +POPPLER_CONF_OPTS += -DWITH_PNG=OFF +endif + +ifeq ($(BR2_PACKAGE_LCMS2),y) +POPPLER_DEPENDENCIES += lcms2 +POPPLER_CONF_OPTS += -DENABLE_CMS=lcms2 +else +POPPLER_CONF_OPTS += -DENABLE_CMS=none +endif + +ifeq ($(BR2_PACKAGE_OPENJPEG),y) +POPPLER_DEPENDENCIES += openjpeg +POPPLER_CONF_OPTS += -DENABLE_LIBOPENJPEG=openjpeg2 +else +POPPLER_CONF_OPTS += -DENABLE_LIBOPENJPEG=none +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +POPPLER_DEPENDENCIES += libcurl +POPPLER_CONF_OPTS += -DENABLE_LIBCURL=ON +else +POPPLER_CONF_OPTS += -DENABLE_LIBCURL=OFF +endif + +ifeq ($(BR2_PACKAGE_POPPLER_QT5),y) +POPPLER_DEPENDENCIES += qt5base +POPPLER_CONF_OPTS += -DENABLE_QT5=ON +else +POPPLER_CONF_OPTS += -DENABLE_QT5=OFF +endif + +ifeq ($(BR2_PACKAGE_POPPLER_UTILS),y) +POPPLER_CONF_OPTS += -DENABLE_UTILS=ON +else +POPPLER_CONF_OPTS += -DENABLE_UTILS=OFF +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +POPPLER_DEPENDENCIES += zlib +POPPLER_CONF_OPTS += -DENABLE_ZLIB=ON +else +POPPLER_CONF_OPTS += -DENABLE_ZLIB=OFF +endif + +ifeq ($(BR2_PACKAGE_CAIRO),y) +POPPLER_DEPENDENCIES += cairo +POPPLER_CONF_OPTS += -DWITH_Cairo=ON +else +POPPLER_CONF_OPTS += -DWITH_Cairo=OFF +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +POPPLER_DEPENDENCIES += tiff +POPPLER_CONF_OPTS += -DWITH_TIFF=ON +else +POPPLER_CONF_OPTS += -DWITH_TIFF=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +POPPLER_DEPENDENCIES += libglib2 +POPPLER_CONF_OPTS += -DENABLE_GLIB=ON +else +POPPLER_CONF_OPTS += -DENABLE_GLIB=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBNSS),y) +POPPLER_DEPENDENCIES += libnss +POPPLER_CONF_OPTS += -DWITH_NSS3=ON +else +POPPLER_CONF_OPTS += -DWITH_NSS3=OFF +endif + +ifeq ($(BR2_SOFT_FLOAT),y) +POPPLER_CONF_OPTS += -DUSE_FLOAT=OFF +else +POPPLER_CONF_OPTS += -DUSE_FLOAT=ON +endif + +POPPLER_CXXFLAGS = $(TARGET_CXXCFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y) +POPPLER_CXXFLAGS += -O0 +endif + +POPPLER_CONF_OPTS += -DCMAKE_CXX_FLAGS="$(POPPLER_CXXFLAGS)" + +$(eval $(cmake-package)) diff --git a/package/popt/Config.in b/package/popt/Config.in new file mode 100644 index 00000000..80bac7ff --- /dev/null +++ b/package/popt/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_POPT + bool "popt" + help + Popt is a C library for parsing command line parameters. + + https://github.com/rpm-software-management/popt diff --git a/package/popt/popt.hash b/package/popt/popt.hash new file mode 100644 index 00000000..63d96326 --- /dev/null +++ b/package/popt/popt.hash @@ -0,0 +1,3 @@ +# Locally calculated: +sha256 c25a4838fc8e4c1c8aacb8bd620edb3084a3d63bf8987fdad3ca2758c63240f9 popt-1.19.tar.gz +sha256 2b488b239927935f34769a39309c0680be16e3725a1f55dbb06ed20d53852801 COPYING diff --git a/package/popt/popt.mk b/package/popt/popt.mk new file mode 100644 index 00000000..06bab375 --- /dev/null +++ b/package/popt/popt.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# popt +# +################################################################################ + +POPT_VERSION = 1.19 +POPT_SITE = http://ftp.rpm.org/popt/releases/popt-1.x +POPT_INSTALL_STAGING = YES +POPT_LICENSE = MIT +POPT_LICENSE_FILES = COPYING +POPT_CPE_ID_VALID = YES + +POPT_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) + +POPT_CONF_ENV = ac_cv_va_copy=yes + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +POPT_CONF_ENV += am_cv_lib_iconv=yes +POPT_CONF_OPTS += --with-libiconv-prefix=$(STAGING_DIR)/usr +POPT_DEPENDENCIES += libiconv +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/portaudio/Config.in b/package/portaudio/Config.in new file mode 100644 index 00000000..18e87fde --- /dev/null +++ b/package/portaudio/Config.in @@ -0,0 +1,33 @@ +comment "portaudio needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_PORTAUDIO + bool "portaudio" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + PortAudio is a free, cross-platform, open-source, + audio I/O library. + + http://www.portaudio.com/ + +if BR2_PACKAGE_PORTAUDIO + +config BR2_PACKAGE_PORTAUDIO_ALSA + bool "alsa support" + default y + select BR2_PACKAGE_ALSA_LIB + help + Compile with ALSA support. + +config BR2_PACKAGE_PORTAUDIO_OSS + bool "oss support" + help + Compile with OSS support. + +config BR2_PACKAGE_PORTAUDIO_CXX + bool "C++ bindings" + depends on BR2_INSTALL_LIBSTDCPP + help + Enables C++ bindings. + +endif # BR2_PACKAGE_PORTAUDIO diff --git a/package/portaudio/portaudio.hash b/package/portaudio/portaudio.hash new file mode 100644 index 00000000..ba3c506f --- /dev/null +++ b/package/portaudio/portaudio.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 47efbf42c77c19a05d22e627d42873e991ec0c1357219c0d74ce6a2948cb2def pa_stable_v190700_20210406.tgz +sha256 ec52a1952d701f94e5135719a47376da4ee0b4a0201f1cafb49f61db6480ac3d LICENSE.txt diff --git a/package/portaudio/portaudio.mk b/package/portaudio/portaudio.mk new file mode 100644 index 00000000..58798dda --- /dev/null +++ b/package/portaudio/portaudio.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# portaudio +# +################################################################################ + +PORTAUDIO_VERSION = 190700_20210406 +PORTAUDIO_SITE = http://files.portaudio.com/archives +PORTAUDIO_SOURCE = pa_stable_v$(PORTAUDIO_VERSION).tgz +PORTAUDIO_INSTALL_STAGING = YES +PORTAUDIO_MAKE = $(MAKE1) +PORTAUDIO_LICENSE = portaudio license (MIT-like plus special clause) +PORTAUDIO_LICENSE_FILES = LICENSE.txt + +PORTAUDIO_DEPENDENCIES = \ + $(if $(BR2_PACKAGE_PORTAUDIO_ALSA),alsa-lib) + +PORTAUDIO_CONF_OPTS = \ + $(if $(BR2_PACKAGE_PORTAUDIO_ALSA),--with-alsa,--without-alsa) \ + $(if $(BR2_PACKAGE_PORTAUDIO_OSS),--with-oss,--without-oss) \ + $(if $(BR2_PACKAGE_PORTAUDIO_CXX),--enable-cxx,--disable-cxx) + +$(eval $(autotools-package)) diff --git a/package/postgis/Config.in b/package/postgis/Config.in new file mode 100644 index 00000000..593c0dc1 --- /dev/null +++ b/package/postgis/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_POSTGIS + bool "postgis" + depends on BR2_PACKAGE_POSTGRESQL_FULL + depends on BR2_INSTALL_LIBSTDCPP # libgeos, proj + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libgeos + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # proj + depends on BR2_USE_WCHAR # libgeos, proj + select BR2_PACKAGE_LIBGEOS + select BR2_PACKAGE_PROJ + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + PostGIS is a spatial database extender for PostgreSQL + object-relational database. It adds support for + geographic objects allowing location queries + to be run in SQL. + + https://postgis.net/ + +comment "postgis needs a toolchain w/ C++, NPTL, wchar, gcc >= 4.9" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_USE_WCHAR diff --git a/package/postgis/postgis.hash b/package/postgis/postgis.hash new file mode 100644 index 00000000..7e62e8e1 --- /dev/null +++ b/package/postgis/postgis.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c8c874c00ba4a984a87030af6bf9544821502060ad473d5c96f1d4d0835c5892 postgis-3.4.2.tar.gz +sha256 2a3bde0a77224496ea6d8efa686da7e29ab0dd6b1a8f90ba12beaf7ae28e878a LICENSE.TXT diff --git a/package/postgis/postgis.mk b/package/postgis/postgis.mk new file mode 100644 index 00000000..867aa4ca --- /dev/null +++ b/package/postgis/postgis.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# postgis +# +################################################################################ + +POSTGIS_VERSION = 3.4.2 +POSTGIS_SITE = https://download.osgeo.org/postgis/source +# parallel build issues +POSTGIS_MAKE = $(MAKE1) +POSTGIS_LICENSE = GPL-2.0+ (PostGIS), BSD-3-Clause (xsl), GPL-2.0+ or LGPL-3.0+ (SFCGAL), MIT, Apache-2.0, ISC, BSL-1.0, CC-BY-SA-3.0 +POSTGIS_LICENSE_FILES = LICENSE.TXT +POSTGIS_CPE_ID_VENDOR = postgis + +POSTGIS_DEPENDENCIES = postgresql libgeos proj libxml2 + +POSTGIS_CONF_OPTS += \ + --with-pgconfig=$(STAGING_DIR)/usr/bin/pg_config \ + --with-geosconfig=$(STAGING_DIR)/usr/bin/geos-config \ + --with-xml2config=$(STAGING_DIR)/usr/bin/xml2-config + +ifeq ($(BR2_PACKAGE_JSON_C),y) +POSTGIS_DEPENDENCIES += json-c +POSTGIS_CONF_OPTS += --with-json +else +POSTGIS_CONF_OPTS += --without-json +endif + +ifeq ($(BR2_PACKAGE_GDAL),y) +POSTGIS_DEPENDENCIES += gdal +POSTGIS_CONF_OPTS += --with-raster --with-gdalconfig=$(STAGING_DIR)/usr/bin/gdal-config +else +POSTGIS_CONF_OPTS += --without-raster +endif + +ifeq ($(BR2_PACKAGE_PCRE),y) +POSTGIS_DEPENDENCIES += pcre +endif + +ifeq ($(BR2_PACKAGE_PROTOBUF_C),y) +POSTGIS_DEPENDENCIES += protobuf-c +POSTGIS_CONF_OPTS += --with-protobuf +else +POSTGIS_CONF_OPTS += --without-protobuf +endif + +$(eval $(autotools-package)) diff --git a/package/postgresql/Config.in b/package/postgresql/Config.in new file mode 100644 index 00000000..899907d6 --- /dev/null +++ b/package/postgresql/Config.in @@ -0,0 +1,40 @@ +config BR2_PACKAGE_POSTGRESQL + bool "postgresql" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR + # fails to build in a pure static linking scenario, and + # postgresql is unlikely to be used in a pure statically + # linked environment. + depends on !BR2_STATIC_LIBS + depends on !BR2_OPTIMIZE_FAST + select BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_CAST if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + help + PostgreSQL is a powerful, open source object-relational + database system. + + Enable the readline package to gain readline support in + psql (the command line interpreter), which offers + command history and edit functions. + + Enable the zlib package to gain builtin compression for + archives with pg_dump and pg_restore. + + http://www.postgresql.org + +if BR2_PACKAGE_POSTGRESQL + +config BR2_PACKAGE_POSTGRESQL_FULL + bool "postgresql-full" + help + Build PostgreSQL, contrib, and documentation. + +endif + +comment "postgresql needs a toolchain w/ dynamic library, wchar" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR + +comment "postgresql can't be built with Optimize for fast" + depends on BR2_OPTIMIZE_FAST diff --git a/package/postgresql/S50postgresql b/package/postgresql/S50postgresql new file mode 100644 index 00000000..f8077600 --- /dev/null +++ b/package/postgresql/S50postgresql @@ -0,0 +1,44 @@ +#!/bin/sh +# +# start postgresql +# + +umask 077 + +if [ ! -f /var/lib/pgsql/PG_VERSION ]; then + echo "Initializing postgresql database..." + su - postgres -c '/usr/bin/pg_ctl initdb -D /var/lib/pgsql' + echo "done" +fi + +start() { + printf "Starting postgresql: " + su - postgres -c '/usr/bin/pg_ctl start -w -D /var/lib/pgsql -l logfile' + echo "OK" +} +stop() { + printf "Stopping postgresql: " + su - postgres -c '/usr/bin/pg_ctl stop -D /var/lib/pgsql -m fast' + echo "OK" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/package/postgresql/pg_config b/package/postgresql/pg_config new file mode 100644 index 00000000..099f1ee3 --- /dev/null +++ b/package/postgresql/pg_config @@ -0,0 +1,79 @@ +#!/bin/sh + +# +# Minimal pg_config implementation as replacement for the native pg_config application +# + +prefix=/usr + +case "$1" in + --includedir) + echo "$prefix/include" + ;; + --pkgincludedir) + echo "$prefix/include/postgresql" + ;; + --includedir-server) + echo "$prefix/include/postgresql/server" + ;; + --libdir) + echo "$prefix/lib" + ;; + --version) + echo "PostgreSQL @POSTGRESQL_VERSION@" + ;; + --configure) + echo "@POSTGRESQL_CONF_OPTIONS@" + ;; + --pgxs) + echo "$prefix/lib/postgresql/pgxs/src/makefiles/pgxs.mk" + ;; + --cflags) + echo "@TARGET_CFLAGS@" + ;; + --cflags_sl) + # defined at src/template/linux + echo "-fPIC" + ;; + --cc) + echo "@TARGET_CC@" + ;; + --pkglibdir) + echo "/usr/lib/postgresql" + ;; + --bindir) + echo "/usr/bin" + ;; + --sharedir) + echo "/usr/share/postgresql" + ;; + --localedir) + echo "/usr/share/locale" + ;; + --docdir) + echo "/usr/share/doc/postgresql" + ;; + --mandir) + echo "/usr/share/man" + ;; + *) + echo "Usage: $0 {OPTION}" + echo + echo "Options:" + echo + echo " --includedir show location of C header files of the client interfaces" + echo " --pkgincludedir show location of other C header files" + echo " --includedir-server show location of C header files for the server" + echo " --libdir show location of object code libraries" + echo " --version show the PostgreSQL version" + echo " --configure show options given to configure script" + echo " --pgxs show location of extension makefile" + echo " --cflags show CFLAGS value used when PostgreSQL was built" + echo " --cc show CC value used when PostgreSQL was built" + echo " --pkglibdir show location of dynamically loadable modules" + echo " --bindir show location of user executables" + echo " --sharedir show location of architecture-independent support files" + echo " --localedir show location of locale support files" + echo " --docdir show location of documentation files" + echo " --mandir show location of manual pages" +esac diff --git a/package/postgresql/postgresql.hash b/package/postgresql/postgresql.hash new file mode 100644 index 00000000..1d9a9081 --- /dev/null +++ b/package/postgresql/postgresql.hash @@ -0,0 +1,4 @@ +# From https://ftp.postgresql.org/pub/source/v16.4/postgresql-16.4.tar.bz2.sha256 +sha256 971766d645aa73e93b9ef4e3be44201b4f45b5477095b049125403f9f3386d6f postgresql-16.4.tar.bz2 +# License file, Locally calculated +sha256 9bf20ee493926a7e17a74bc7f05089fbc014269667b1540bc35a6b194a40c9de COPYRIGHT diff --git a/package/postgresql/postgresql.mk b/package/postgresql/postgresql.mk new file mode 100644 index 00000000..4021a543 --- /dev/null +++ b/package/postgresql/postgresql.mk @@ -0,0 +1,168 @@ +################################################################################ +# +# postgresql +# +################################################################################ + +POSTGRESQL_VERSION = 16.4 +POSTGRESQL_SOURCE = postgresql-$(POSTGRESQL_VERSION).tar.bz2 +POSTGRESQL_SITE = https://ftp.postgresql.org/pub/source/v$(POSTGRESQL_VERSION) +POSTGRESQL_LICENSE = PostgreSQL +POSTGRESQL_LICENSE_FILES = COPYRIGHT +POSTGRESQL_CPE_ID_VENDOR = postgresql +POSTGRESQL_SELINUX_MODULES = postgresql +POSTGRESQL_INSTALL_STAGING = YES +POSTGRESQL_CONFIG_SCRIPTS = pg_config +POSTGRESQL_CONF_ENV = \ + ac_cv_type_struct_sockaddr_in6=yes \ + pgac_cv_prog_cc_LDFLAGS_EX_BE__Wl___export_dynamic=yes \ + LIBS=$(TARGET_NLS_LIBS) +POSTGRESQL_CONF_OPTS = --disable-rpath +POSTGRESQL_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) + +# CVE-2017-8806 is related to postgresql-common package +# It is false positive for postgresql +POSTGRESQL_IGNORE_CVES += CVE-2017-8806 + +# https://www.postgresql.org/docs/11/static/install-procedure.html: +# "If you want to invoke the build from another makefile rather than +# manually, you must unset MAKELEVEL or set it to zero" +POSTGRESQL_MAKE_OPTS = MAKELEVEL=0 + +ifeq ($(BR2_PACKAGE_POSTGRESQL_FULL),y) +POSTGRESQL_MAKE_OPTS += world +POSTGRESQL_INSTALL_TARGET_OPTS += DESTDIR=$(TARGET_DIR) install-world +POSTGRESQL_INSTALL_STAGING_OPTS += DESTDIR=$(STAGING_DIR) install-world +endif + +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +# PostgreSQL does not build against uClibc with locales +# enabled, due to an uClibc bug, see +# http://lists.uclibc.org/pipermail/uclibc/2014-April/048326.html +# so overwrite automatic detection and disable locale support +POSTGRESQL_CONF_ENV += pgac_cv_type_locale_t=no +endif + +ifneq ($(BR2_TOOLCHAIN_HAS_THREADS_NPTL),y) +POSTGRESQL_CONF_OPTS += --disable-thread-safety +endif + +ifeq ($(BR2_arcle)$(BR2_arceb)$(BR2_microblazeel)$(BR2_microblazebe)$(BR2_or1k)$(BR2_nios2)$(BR2_riscv)$(BR2_xtensa),y) +POSTGRESQL_CONF_OPTS += --disable-spinlocks +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +POSTGRESQL_DEPENDENCIES += readline +else +POSTGRESQL_CONF_OPTS += --without-readline +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +POSTGRESQL_DEPENDENCIES += zlib +else +POSTGRESQL_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_TZDATA),y) +POSTGRESQL_DEPENDENCIES += tzdata +POSTGRESQL_CONF_OPTS += --with-system-tzdata=/usr/share/zoneinfo +else +POSTGRESQL_DEPENDENCIES += host-zic +POSTGRESQL_CONF_ENV += ZIC="$(ZIC)" +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +POSTGRESQL_DEPENDENCIES += openssl +POSTGRESQL_CONF_OPTS += --with-openssl +else +# PostgreSQL checks for /dev/urandom and fails if it's being cross-compiled and +# an SSL library isn't found. Since /dev/urandom is guaranteed to be provided +# on Linux systems, explicitly tell the configure script it's available. +POSTGRESQL_CONF_ENV += ac_cv_file__dev_urandom=yes +endif + +ifeq ($(BR2_PACKAGE_OPENLDAP),y) +POSTGRESQL_DEPENDENCIES += openldap +POSTGRESQL_CONF_OPTS += --with-ldap +else +POSTGRESQL_CONF_OPTS += --without-ldap +endif + +ifeq ($(BR2_PACKAGE_ICU),y) +POSTGRESQL_DEPENDENCIES += icu +POSTGRESQL_CONF_OPTS += --with-icu +else +POSTGRESQL_CONF_OPTS += --without-icu +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +POSTGRESQL_DEPENDENCIES += libxml2 +POSTGRESQL_CONF_OPTS += --with-libxml +POSTGRESQL_CONF_ENV += XML2_CONFIG=$(STAGING_DIR)/usr/bin/xml2-config +else +POSTGRESQL_CONF_OPTS += --without-libxml +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +POSTGRESQL_DEPENDENCIES += host-pkgconf zstd +POSTGRESQL_CONF_OPTS += --with-zstd +else +POSTGRESQL_CONF_OPTS += --without-zstd +endif + +ifeq ($(BR2_PACKAGE_LZ4),y) +POSTGRESQL_DEPENDENCIES += host-pkgconf lz4 +POSTGRESQL_CONF_OPTS += --with-lz4 +else +POSTGRESQL_CONF_OPTS += --without-lz4 +endif + +# required for postgresql.service Type=notify +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +POSTGRESQL_DEPENDENCIES += systemd +POSTGRESQL_CONF_OPTS += --with-systemd +else +POSTGRESQL_CONF_OPTS += --without-systemd +endif + +POSTGRESQL_CFLAGS = $(TARGET_CFLAGS) + +ifneq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_43744)$(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),) +POSTGRESQL_CFLAGS += -O0 +endif + +POSTGRESQL_CONF_ENV += CFLAGS="$(POSTGRESQL_CFLAGS)" + +define POSTGRESQL_USERS + postgres -1 postgres -1 * /var/lib/pgsql /bin/sh - PostgreSQL Server +endef + +define POSTGRESQL_INSTALL_TARGET_FIXUP + $(INSTALL) -dm 0700 $(TARGET_DIR)/var/lib/pgsql + $(RM) -rf $(TARGET_DIR)/usr/lib/postgresql/pgxs +endef + +POSTGRESQL_POST_INSTALL_TARGET_HOOKS += POSTGRESQL_INSTALL_TARGET_FIXUP + +define POSTGRESQL_INSTALL_CUSTOM_PG_CONFIG + $(INSTALL) -m 0755 -D package/postgresql/pg_config \ + $(STAGING_DIR)/usr/bin/pg_config + $(SED) "s|@POSTGRESQL_CONF_OPTIONS@|$(POSTGRESQL_CONF_OPTS)|g" $(STAGING_DIR)/usr/bin/pg_config + $(SED) "s|@POSTGRESQL_VERSION@|$(POSTGRESQL_VERSION)|g" $(STAGING_DIR)/usr/bin/pg_config + $(SED) "s|@TARGET_CFLAGS@|$(TARGET_CFLAGS)|g" $(STAGING_DIR)/usr/bin/pg_config + $(SED) "s|@TARGET_CC@|$(TARGET_CC)|g" $(STAGING_DIR)/usr/bin/pg_config +endef + +POSTGRESQL_POST_INSTALL_STAGING_HOOKS += POSTGRESQL_INSTALL_CUSTOM_PG_CONFIG + +define POSTGRESQL_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/postgresql/S50postgresql \ + $(TARGET_DIR)/etc/init.d/S50postgresql +endef + +define POSTGRESQL_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/postgresql/postgresql.service \ + $(TARGET_DIR)/usr/lib/systemd/system/postgresql.service +endef + +$(eval $(autotools-package)) diff --git a/package/postgresql/postgresql.service b/package/postgresql/postgresql.service new file mode 100644 index 00000000..539eea89 --- /dev/null +++ b/package/postgresql/postgresql.service @@ -0,0 +1,27 @@ +[Unit] +Description=PostgreSQL database server +After=network.target + +[Service] +Type=notify + +# start timeout disabled because initdb may run a little +# longer (eg. 5 minutes on RaspberryPi) +TimeoutStartSec=0 + +User=postgres +Group=postgres + +StandardOutput=syslog +StandardError=syslog +SyslogIdentifier=postgres + +ExecStartPre=/bin/sh -c "if [ ! -f /var/lib/pgsql/PG_VERSION ]; then /usr/bin/pg_ctl initdb -D /var/lib/pgsql; fi" +ExecStart=/usr/bin/postgres -D /var/lib/pgsql +ExecReload=/usr/bin/kill -HUP $MAINPID +KillMode=mixed +KillSignal=SIGINT +TimeoutSec=0 + +[Install] +WantedBy=multi-user.target diff --git a/package/pound/0001-include-limits.h.patch b/package/pound/0001-include-limits.h.patch new file mode 100644 index 00000000..8f188af0 --- /dev/null +++ b/package/pound/0001-include-limits.h.patch @@ -0,0 +1,75 @@ +From a0374d946e55129b36ba1e0024e1d94675a8f044 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 17 Sep 2023 22:01:21 +0200 +Subject: [PATCH] include limits.h + +Include limits.h to avoid the following build failure: + +poundctl.c: In function 'oi_getn': +poundctl.c:232:29: error: 'INT_MAX' undeclared (first use in this function) + 232 | if (errno || n < 0 || n > INT_MAX) + | ^~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/4edfffcd5d4383c57947d97139331e0bf2cb6155 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/graygnuorg/pound/pull/17 +--- + src/config.c | 1 + + src/poundctl.c | 1 + + src/svc.c | 1 + + src/tmpl.c | 1 + + 4 files changed, 4 insertions(+) + +diff --git a/src/config.c b/src/config.c +index b7e3150..12f5cfa 100644 +--- a/src/config.c ++++ b/src/config.c +@@ -21,6 +21,7 @@ + #include "extern.h" + #include + #include ++#include + + + /* +diff --git a/src/poundctl.c b/src/poundctl.c +index bd1459f..7fa18c8 100644 +--- a/src/poundctl.c ++++ b/src/poundctl.c +@@ -19,6 +19,7 @@ + #include "pound.h" + #include "json.h" + #include ++#include + + char *conf_name = POUND_CONF; + char *socket_name; +diff --git a/src/svc.c b/src/svc.c +index 6e810a6..457f1e0 100644 +--- a/src/svc.c ++++ b/src/svc.c +@@ -20,6 +20,7 @@ + #include "pound.h" + #include "extern.h" + #include "json.h" ++#include + + /* + * basic hashing function, based on fmv +diff --git a/src/tmpl.c b/src/tmpl.c +index 2efa72f..0e5b65d 100644 +--- a/src/tmpl.c ++++ b/src/tmpl.c +@@ -26,6 +26,7 @@ + + #include "pound.h" + #include ++#include + #include "json.h" + + static void +-- +2.40.1 + diff --git a/package/pound/Config.in b/package/pound/Config.in new file mode 100644 index 00000000..aa0f1032 --- /dev/null +++ b/package/pound/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_POUND + bool "pound" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + help + The Pound program is a reverse proxy, load balancer and HTTPS + front-end for Web server(s). Pound was developed to enable + distributing the load among several Web-servers and to allow + for a convenient SSL wrapper for those Web servers that do not + offer it natively. + + https://github.com/graygnuorg/pound + +comment "pound needs a toolchain w/ dynamic library, threads" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/package/pound/pound.hash b/package/pound/pound.hash new file mode 100644 index 00000000..c5b08891 --- /dev/null +++ b/package/pound/pound.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 f1a041e060124941b090ad2d4fec5a72be37a5f8a50f0e0ca821dcbbe4b5925b pound-4.8.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/pound/pound.mk b/package/pound/pound.mk new file mode 100644 index 00000000..7bd7eaef --- /dev/null +++ b/package/pound/pound.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# pound +# +################################################################################ + +POUND_VERSION = 4.8 +POUND_SITE = https://github.com/graygnuorg/pound/releases/download/v$(POUND_VERSION) +POUND_LICENSE = GPL-3.0+ +POUND_LICENSE_FILES = COPYING +POUND_DEPENDENCIES = openssl host-openssl + +# Force owner/group to us, otherwise it will try proxy:proxy by +# default. +POUND_CONF_OPTS = \ + --with-owner=$(shell id -un) \ + --with-group=$(shell id -gn) + +ifeq ($(BR2_PACKAGE_PCRE2),y) +POUND_CONF_OPTS += --enable-pcreposix=pcre2 +POUND_CONF_ENV += \ + ac_cv_path_PCRE2_CONFIG=$(STAGING_DIR)/usr/bin/pcre2-config +POUND_DEPENDENCIES += pcre2 +else ifeq ($(BR2_PACKAGE_PCRE),y) +POUND_CONF_OPTS += --enable-pcreposix=pcre1 +POUND_DEPENDENCIES += pcre +else +POUND_CONF_OPTS += --disable-pcreposix +endif + +$(eval $(autotools-package)) diff --git a/package/powerpc-utils/Config.in b/package/powerpc-utils/Config.in new file mode 100644 index 00000000..1ac247fe --- /dev/null +++ b/package/powerpc-utils/Config.in @@ -0,0 +1,35 @@ +comment "powerpc-utils tools needs a toolchain w/ dynamic library" + depends on BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + depends on BR2_STATIC_LIBS + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_ATOMIC + +config BR2_PACKAGE_POWERPC_UTILS + bool "powerpc-utils" + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + depends on BR2_USE_MMU # numactl + depends on BR2_TOOLCHAIN_HAS_ATOMIC # numactl + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_NUMACTL + help + System utilities for PowerPC machines. + + https://github.com/ibm-power-utilities/powerpc-utils.git + +if BR2_PACKAGE_POWERPC_UTILS + +config BR2_PACKAGE_POWERPC_UTILS_RTAS + bool "RTAS support" + select BR2_PACKAGE_LIBRTAS + help + Enable support for functions that require RTAS. + + This adds a dependency on librtas and provides the following + additional features at the cost of increasing the installed + package size from about 0.5MB to about 2MB: + ppc64_cpu --run-mode, uesensor, set_poweron_time, drmgr, + lsslot, activate_firmware, rtas_ibm_get_vpd, serv_config, + rtas_event_decode, sys_ident. + +endif diff --git a/package/powerpc-utils/powerpc-utils.hash b/package/powerpc-utils/powerpc-utils.hash new file mode 100644 index 00000000..32387014 --- /dev/null +++ b/package/powerpc-utils/powerpc-utils.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 6bb16078068d8b889afdd78927d2f061702ef155e57fc548ae573e2b0b90ca13 powerpc-utils-1.3.11.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/powerpc-utils/powerpc-utils.mk b/package/powerpc-utils/powerpc-utils.mk new file mode 100644 index 00000000..ddeb830b --- /dev/null +++ b/package/powerpc-utils/powerpc-utils.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# powerpc-utils +# +################################################################################ + +POWERPC_UTILS_VERSION = 1.3.11 +POWERPC_UTILS_SITE = $(call github,ibm-power-utilities,powerpc-utils,v$(POWERPC_UTILS_VERSION)) +POWERPC_UTILS_DEPENDENCIES = zlib numactl +POWERPC_UTILS_AUTORECONF = YES +POWERPC_UTILS_LICENSE = GPL-2.0+ +POWERPC_UTILS_LICENSE_FILES = COPYING +POWERPC_UTILS_CPE_ID_VALID = YES + +POWERPC_UTILS_CONF_ENV = \ + ax_cv_check_cflags___fstack_protector_all=$(if $(BR2_TOOLCHAIN_HAS_SSP),yes,no) +POWERPC_UTILS_CONF_OPTS = --disable-werror + +ifeq ($(BR2_PACKAGE_POWERPC_UTILS_RTAS),y) +POWERPC_UTILS_DEPENDENCIES += librtas +POWERPC_UTILS_CONF_OPTS += --with-librtas +else +POWERPC_UTILS_CONF_OPTS += --without-librtas +endif + +$(eval $(autotools-package)) diff --git a/package/powertop/0001-add-disable-stack-protector-option.patch b/package/powertop/0001-add-disable-stack-protector-option.patch new file mode 100644 index 00000000..01a03052 --- /dev/null +++ b/package/powertop/0001-add-disable-stack-protector-option.patch @@ -0,0 +1,55 @@ +From 95382246ddd889839633aa0da800a03936b93986 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 31 Oct 2021 18:26:01 +0100 +Subject: [PATCH] add --disable-stack-protector option + +Allow the user to disable stack-protector as not all toolchains support +this feature + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/fenrus75/powertop/pull/138 +--- + configure.ac | 4 ++++ + src/Makefile.am | 5 ++++- + 2 files changed, 8 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 37c1304..69160d5 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -43,6 +43,10 @@ AX_ADD_FORTIFY_SOURCE + AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory]) + PKG_PROG_PKG_CONFIG + ++AC_ARG_ENABLE([stack-protector], ++ AS_HELP_STRING([--disable-stack-protector], [Disable stack-protector])) ++AM_CONDITIONAL([ENABLE_STACK_PROTECTOR], [test x$enable_stack_protector != xno]) ++ + # Checks for libraries. + AX_PTHREAD([ + LIBS="$PTHREAD_LIBS $LIBS" +diff --git a/src/Makefile.am b/src/Makefile.am +index 6b523f6..ca30d20 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -138,13 +138,16 @@ powertop_CXXFLAGS = \ + -Wformat \ + -Wshadow \ + -fno-omit-frame-pointer \ +- -fstack-protector \ + $(GLIB2_CFLAGS) \ + $(LIBNL_CFLAGS) \ + $(NCURSES_CFLAGS) \ + $(PCIUTILS_CFLAGS) \ + $(PTHREAD_CFLAGS) + ++if ENABLE_STACK_PROTECTOR ++powertop_CXXFLAGS += \ ++ -fstack-protector ++endif + + powertop_CPPFLAGS = \ + -DLOCALEDIR=\"$(localedir)\" \ +-- +2.33.0 + diff --git a/package/powertop/Config.in b/package/powertop/Config.in new file mode 100644 index 00000000..2f7ba2bb --- /dev/null +++ b/package/powertop/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_POWERTOP + bool "powertop" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + depends on BR2_USE_WCHAR + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_LIBNL + help + A tool to diagnose issues with power consumption and power + management + + https://github.com/fenrus75/powertop/ + +comment "powertop needs a toolchain w/ C++, threads, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_USE_WCHAR diff --git a/package/powertop/powertop.hash b/package/powertop/powertop.hash new file mode 100644 index 00000000..810b80a5 --- /dev/null +++ b/package/powertop/powertop.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 e58ab3fd7b8ff5f4dd0d17f11848817e7d83c0a6918145ac81de03b5dccf8f49 powertop-2.15.tar.gz +sha256 b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259 COPYING diff --git a/package/powertop/powertop.mk b/package/powertop/powertop.mk new file mode 100644 index 00000000..aa7d251b --- /dev/null +++ b/package/powertop/powertop.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# powertop +# +################################################################################ + +POWERTOP_VERSION = 2.15 +POWERTOP_SITE = $(call github,fenrus75,powertop,v$(POWERTOP_VERSION)) +POWERTOP_LICENSE = GPL-2.0 +POWERTOP_LICENSE_FILES = COPYING + +POWERTOP_DEPENDENCIES = \ + host-autoconf-archive \ + host-pkgconf \ + libnl \ + ncurses \ + $(if $(BR2_PACKAGE_PCIUTILS),pciutils) \ + $(TARGET_NLS_DEPENDENCIES) + +# 0001-add-disable-stack-protector-option.patch +POWERTOP_AUTOPOINT = YES +POWERTOP_AUTORECONF = YES +POWERTOP_AUTORECONF_OPTS = --include=$(HOST_DIR)/share/autoconf-archive + +POWERTOP_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) +POWERTOP_CONF_OPTS = --disable-stack-protector + +# fix missing config.rpath (needed for autoreconf) in the codebase +define POWERTOP_TOUCH_CONFIG_RPATH + touch $(@D)/config.rpath +endef +POWERTOP_PRE_CONFIGURE_HOOKS += POWERTOP_TOUCH_CONFIG_RPATH + +# Help powertop at finding the right ncurses library depending on +# which one is available. +ifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y) +POWERTOP_CONF_ENV += ac_cv_search_delwin="-lncursesw" +else +POWERTOP_CONF_ENV += ac_cv_search_delwin="-lncurses" +endif + +$(eval $(autotools-package)) diff --git a/package/powervr/Config.in b/package/powervr/Config.in new file mode 100644 index 00000000..7be2b237 --- /dev/null +++ b/package/powervr/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HAS_POWERVR + bool + +config BR2_PACKAGE_PROVIDES_POWERVR + string + depends on BR2_PACKAGE_HAS_POWERVR diff --git a/package/powervr/powervr.mk b/package/powervr/powervr.mk new file mode 100644 index 00000000..5a558605 --- /dev/null +++ b/package/powervr/powervr.mk @@ -0,0 +1,7 @@ +################################################################################ +# +# powervr +# +################################################################################ + +$(eval $(virtual-package)) diff --git a/package/pppd/0001-pppd-workaround-sparc-asm-termbits.h-issue.patch b/package/pppd/0001-pppd-workaround-sparc-asm-termbits.h-issue.patch new file mode 100644 index 00000000..923c0477 --- /dev/null +++ b/package/pppd/0001-pppd-workaround-sparc-asm-termbits.h-issue.patch @@ -0,0 +1,316 @@ +From ef37e5b112734f551132b613438788fd4ef8797a Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 12 Jul 2024 20:24:22 +0200 +Subject: [PATCH] pppd: workaround sparc issue +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The SPARC version of the kernel header has an issue: +it defines "struct termio", which conflicts with the definition in +, causing a build failure in pppd. + +This issue was fixed in the upstream Linux kernel in commit +c32d18e7942d7589b62e301eb426b32623366565 ("sparc: move struct termio +to asm/termios.h"), which is going to appear in Linux 6.10. + +In order to support building with older toolchains, this patch +includes in the pppd source code a copy of the fixed SPARC + in the pppd code base, and uses it if we're on SPARC +with kernel headers older than 6.10. + +Fixes: + +In file included from termios_linux.h:39: +/home/thomas/projets/buildroot/output/host/sparc64-buildroot-linux-gnu/sysroot/usr/include/asm/termbits.h:17:8: error: redefinition of ‘struct termio’ + 17 | struct termio { + | ^~~~~~ + CC pppd-ipv6cp.o +In file included from /home/thomas/projets/buildroot/output/host/sparc64-buildroot-linux-gnu/sysroot/usr/include/sys/ioctl.h:29, + from sys-linux.c:76: +/home/thomas/projets/buildroot/output/host/sparc64-buildroot-linux-gnu/sysroot/usr/include/bits/ioctl-types.h:36:8: note: originally defined here + 36 | struct termio + | ^~~~~~ + +Upstream: https://github.com/ppp-project/ppp/pull/504 +Signed-off-by: Thomas Petazzoni +--- + pppd/sparc-termbits.h | 247 ++++++++++++++++++++++++++++++++++++++++++ + pppd/termios_linux.h | 6 + + 2 files changed, 253 insertions(+) + create mode 100644 pppd/sparc-termbits.h + +diff --git a/pppd/sparc-termbits.h b/pppd/sparc-termbits.h +new file mode 100644 +index 0000000..f92a27a +--- /dev/null ++++ b/pppd/sparc-termbits.h +@@ -0,0 +1,247 @@ ++/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ ++#ifndef _SPARC_TERMBITS_H ++#define _SPARC_TERMBITS_H ++ ++#include ++ ++typedef unsigned char cc_t; ++typedef unsigned int speed_t; ++ ++#if defined(__sparc__) && defined(__arch64__) ++typedef unsigned int tcflag_t; ++#else ++typedef unsigned long tcflag_t; ++#endif ++ ++#define NCCS 17 ++struct termios { ++ tcflag_t c_iflag; /* input mode flags */ ++ tcflag_t c_oflag; /* output mode flags */ ++ tcflag_t c_cflag; /* control mode flags */ ++ tcflag_t c_lflag; /* local mode flags */ ++ cc_t c_line; /* line discipline */ ++ cc_t c_cc[NCCS]; /* control characters */ ++}; ++ ++struct termios2 { ++ tcflag_t c_iflag; /* input mode flags */ ++ tcflag_t c_oflag; /* output mode flags */ ++ tcflag_t c_cflag; /* control mode flags */ ++ tcflag_t c_lflag; /* local mode flags */ ++ cc_t c_line; /* line discipline */ ++ cc_t c_cc[NCCS+2]; /* control characters */ ++ speed_t c_ispeed; /* input speed */ ++ speed_t c_ospeed; /* output speed */ ++}; ++ ++struct ktermios { ++ tcflag_t c_iflag; /* input mode flags */ ++ tcflag_t c_oflag; /* output mode flags */ ++ tcflag_t c_cflag; /* control mode flags */ ++ tcflag_t c_lflag; /* local mode flags */ ++ cc_t c_line; /* line discipline */ ++ cc_t c_cc[NCCS+2]; /* control characters */ ++ speed_t c_ispeed; /* input speed */ ++ speed_t c_ospeed; /* output speed */ ++}; ++ ++/* c_cc characters */ ++#define VINTR 0 ++#define VQUIT 1 ++#define VERASE 2 ++#define VKILL 3 ++#define VEOF 4 ++#define VEOL 5 ++#define VEOL2 6 ++#define VSWTC 7 ++#define VSTART 8 ++#define VSTOP 9 ++ ++ ++ ++#define VSUSP 10 ++#define VDSUSP 11 /* SunOS POSIX nicety I do believe... */ ++#define VREPRINT 12 ++#define VDISCARD 13 ++#define VWERASE 14 ++#define VLNEXT 15 ++ ++/* Kernel keeps vmin/vtime separated, user apps assume vmin/vtime is ++ * shared with eof/eol ++ */ ++#define VMIN VEOF ++#define VTIME VEOL ++ ++/* c_iflag bits */ ++#define IGNBRK 0x00000001 ++#define BRKINT 0x00000002 ++#define IGNPAR 0x00000004 ++#define PARMRK 0x00000008 ++#define INPCK 0x00000010 ++#define ISTRIP 0x00000020 ++#define INLCR 0x00000040 ++#define IGNCR 0x00000080 ++#define ICRNL 0x00000100 ++#define IUCLC 0x00000200 ++#define IXON 0x00000400 ++#define IXANY 0x00000800 ++#define IXOFF 0x00001000 ++#define IMAXBEL 0x00002000 ++#define IUTF8 0x00004000 ++ ++/* c_oflag bits */ ++#define OPOST 0x00000001 ++#define OLCUC 0x00000002 ++#define ONLCR 0x00000004 ++#define OCRNL 0x00000008 ++#define ONOCR 0x00000010 ++#define ONLRET 0x00000020 ++#define OFILL 0x00000040 ++#define OFDEL 0x00000080 ++#define NLDLY 0x00000100 ++#define NL0 0x00000000 ++#define NL1 0x00000100 ++#define CRDLY 0x00000600 ++#define CR0 0x00000000 ++#define CR1 0x00000200 ++#define CR2 0x00000400 ++#define CR3 0x00000600 ++#define TABDLY 0x00001800 ++#define TAB0 0x00000000 ++#define TAB1 0x00000800 ++#define TAB2 0x00001000 ++#define TAB3 0x00001800 ++#define XTABS 0x00001800 ++#define BSDLY 0x00002000 ++#define BS0 0x00000000 ++#define BS1 0x00002000 ++#define VTDLY 0x00004000 ++#define VT0 0x00000000 ++#define VT1 0x00004000 ++#define FFDLY 0x00008000 ++#define FF0 0x00000000 ++#define FF1 0x00008000 ++#define PAGEOUT 0x00010000 /* SUNOS specific */ ++#define WRAP 0x00020000 /* SUNOS specific */ ++ ++/* c_cflag bit meaning */ ++#define CBAUD 0x0000100f ++#define B0 0x00000000 /* hang up */ ++#define B50 0x00000001 ++#define B75 0x00000002 ++#define B110 0x00000003 ++#define B134 0x00000004 ++#define B150 0x00000005 ++#define B200 0x00000006 ++#define B300 0x00000007 ++#define B600 0x00000008 ++#define B1200 0x00000009 ++#define B1800 0x0000000a ++#define B2400 0x0000000b ++#define B4800 0x0000000c ++#define B9600 0x0000000d ++#define B19200 0x0000000e ++#define B38400 0x0000000f ++#define EXTA B19200 ++#define EXTB B38400 ++#define CSIZE 0x00000030 ++#define CS5 0x00000000 ++#define CS6 0x00000010 ++#define CS7 0x00000020 ++#define CS8 0x00000030 ++#define CSTOPB 0x00000040 ++#define CREAD 0x00000080 ++#define PARENB 0x00000100 ++#define PARODD 0x00000200 ++#define HUPCL 0x00000400 ++#define CLOCAL 0x00000800 ++#define CBAUDEX 0x00001000 ++/* We'll never see these speeds with the Zilogs, but for completeness... */ ++#define BOTHER 0x00001000 ++#define B57600 0x00001001 ++#define B115200 0x00001002 ++#define B230400 0x00001003 ++#define B460800 0x00001004 ++/* This is what we can do with the Zilogs. */ ++#define B76800 0x00001005 ++/* This is what we can do with the SAB82532. */ ++#define B153600 0x00001006 ++#define B307200 0x00001007 ++#define B614400 0x00001008 ++#define B921600 0x00001009 ++/* And these are the rest... */ ++#define B500000 0x0000100a ++#define B576000 0x0000100b ++#define B1000000 0x0000100c ++#define B1152000 0x0000100d ++#define B1500000 0x0000100e ++#define B2000000 0x0000100f ++/* These have totally bogus values and nobody uses them ++ so far. Later on we'd have to use say 0x10000x and ++ adjust CBAUD constant and drivers accordingly. ++#define B2500000 0x00001010 ++#define B3000000 0x00001011 ++#define B3500000 0x00001012 ++#define B4000000 0x00001013 */ ++#define CIBAUD 0x100f0000 /* input baud rate (not used) */ ++#define CMSPAR 0x40000000 /* mark or space (stick) parity */ ++#define CRTSCTS 0x80000000 /* flow control */ ++ ++#define IBSHIFT 16 /* Shift from CBAUD to CIBAUD */ ++ ++/* c_lflag bits */ ++#define ISIG 0x00000001 ++#define ICANON 0x00000002 ++#define XCASE 0x00000004 ++#define ECHO 0x00000008 ++#define ECHOE 0x00000010 ++#define ECHOK 0x00000020 ++#define ECHONL 0x00000040 ++#define NOFLSH 0x00000080 ++#define TOSTOP 0x00000100 ++#define ECHOCTL 0x00000200 ++#define ECHOPRT 0x00000400 ++#define ECHOKE 0x00000800 ++#define DEFECHO 0x00001000 /* SUNOS thing, what is it? */ ++#define FLUSHO 0x00002000 ++#define PENDIN 0x00004000 ++#define IEXTEN 0x00008000 ++#define EXTPROC 0x00010000 ++ ++/* modem lines */ ++#define TIOCM_LE 0x001 ++#define TIOCM_DTR 0x002 ++#define TIOCM_RTS 0x004 ++#define TIOCM_ST 0x008 ++#define TIOCM_SR 0x010 ++#define TIOCM_CTS 0x020 ++#define TIOCM_CAR 0x040 ++#define TIOCM_RNG 0x080 ++#define TIOCM_DSR 0x100 ++#define TIOCM_CD TIOCM_CAR ++#define TIOCM_RI TIOCM_RNG ++#define TIOCM_OUT1 0x2000 ++#define TIOCM_OUT2 0x4000 ++#define TIOCM_LOOP 0x8000 ++ ++/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */ ++#define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ ++ ++ ++/* tcflow() and TCXONC use these */ ++#define TCOOFF 0 ++#define TCOON 1 ++#define TCIOFF 2 ++#define TCION 3 ++ ++/* tcflush() and TCFLSH use these */ ++#define TCIFLUSH 0 ++#define TCOFLUSH 1 ++#define TCIOFLUSH 2 ++ ++/* tcsetattr uses these */ ++#define TCSANOW 0 ++#define TCSADRAIN 1 ++#define TCSAFLUSH 2 ++ ++#endif /* _SPARC_TERMBITS_H */ +diff --git a/pppd/termios_linux.h b/pppd/termios_linux.h +index a234d30..9812017 100644 +--- a/pppd/termios_linux.h ++++ b/pppd/termios_linux.h +@@ -32,7 +32,13 @@ + #include + #include + #include ++#include ++ ++#if defined(__sparc__) && LINUX_VERSION_CODE < KERNEL_VERSION(6,10,0) ++#include "sparc-termbits.h" ++#else + #include ++#endif + + #if defined(BOTHER) && defined(TCGETS2) + #define termios termios2 +-- +2.45.2 + diff --git a/package/pppd/Config.in b/package/pppd/Config.in new file mode 100644 index 00000000..88c2180a --- /dev/null +++ b/package/pppd/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_PPPD + bool "pppd" + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU + select BR2_PACKAGE_OPENSSL if BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + help + An implementation of the Point-to-point protocol. + + http://www.samba.org/ppp/ + +if BR2_PACKAGE_PPPD + +config BR2_PACKAGE_PPPD_FILTER + bool "filtering" + select BR2_PACKAGE_LIBPCAP + help + Packet filtering abilities for pppd. If enabled, + the pppd active-filter and pass-filter options + are available. + +endif + +comment "pppd needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + depends on BR2_USE_MMU diff --git a/package/pppd/pppd.hash b/package/pppd/pppd.hash new file mode 100644 index 00000000..bf226508 --- /dev/null +++ b/package/pppd/pppd.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 535efa0e7c36e9d443b1b52c296d63ab2c1ec9458816ea0e37c701e0a921466d pppd-e1266c76d1ad39f98f11676e34f180f78c5a510c.tar.gz +sha256 5d588eb3b157d52112afea935c88a7ff9efddc1e2d95a42c25d3b96ad9055008 LICENSE.BSD +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL-2 diff --git a/package/pppd/pppd.mk b/package/pppd/pppd.mk new file mode 100644 index 00000000..d996a391 --- /dev/null +++ b/package/pppd/pppd.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# pppd +# +################################################################################ + +# The tarball provided at https://download.samba.org/pub/ppp/ does not +# include the license files yet so we use the github tarball. +PPPD_VERSION = e1266c76d1ad39f98f11676e34f180f78c5a510c +PPPD_SITE = $(call github,ppp-project,ppp,$(PPPD_VERSION)) +PPPD_LICENSE = LGPL-2.0+, LGPL, BSD-4-Clause, BSD-3-Clause, GPL-2.0+ +PPPD_LICENSE_FILES = LICENSE.BSD LICENSE.GPL-2 +PPPD_CPE_ID_VENDOR = point-to-point_protocol_project +PPPD_CPE_ID_PRODUCT = point-to-point_protocol +PPPD_SELINUX_MODULES = ppp +PPPD_AUTORECONF = YES +PPPD_INSTALL_STAGING = YES +PPPD_CONF_OPTS = --enable-multilink + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +PPPD_CONF_OPTS += --with-pam=$(STAGING_DIR)/usr +PPPD_DEPENDENCIES += linux-pam +else +PPPD_CONF_OPTS += --without-pam +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +PPPD_CONF_OPTS += \ + --enable-eaptls \ + --enable-openssl-engine \ + --enable-peap \ + --with-openssl=$(STAGING_DIR)/usr +PPPD_DEPENDENCIES += openssl +else +PPPD_CONF_OPTS += \ + --disable-eaptls \ + --disable-openssl-engine \ + --disable-peap \ + --without-openssl +endif + +ifeq ($(BR2_PACKAGE_PPPD_FILTER),y) +PPPD_CONF_OPTS += --with-pcap=$(STAGING_DIR)/usr +PPPD_DEPENDENCIES += libpcap +else +PPPD_CONF_OPTS += --without-pcap +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +PPPD_CONF_OPTS += --enable-systemd +PPPD_DEPENDENCIES += systemd +else +PPPD_CONF_OPTS += --disable-systemd +endif + +$(eval $(autotools-package)) diff --git a/package/pps-tools/Config.in b/package/pps-tools/Config.in new file mode 100644 index 00000000..16caef3e --- /dev/null +++ b/package/pps-tools/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PPS_TOOLS + bool "pps-tools" + help + Pulse per second tools. Provides timepps.h and other PPS + utilities. + + https://github.com/redlab-i/pps-tools/ diff --git a/package/pps-tools/pps-tools.hash b/package/pps-tools/pps-tools.hash new file mode 100644 index 00000000..b8cc2f64 --- /dev/null +++ b/package/pps-tools/pps-tools.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 89163e29f1a4a0a702bbe25b900fd37d2eb86442329cefee58847e57e1964d7a pps-tools-1.0.3.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/pps-tools/pps-tools.mk b/package/pps-tools/pps-tools.mk new file mode 100644 index 00000000..0aa22acf --- /dev/null +++ b/package/pps-tools/pps-tools.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# pps-tools +# +################################################################################ + +PPS_TOOLS_VERSION = 1.0.3 +PPS_TOOLS_SITE = $(call github,redlab-i,pps-tools,v$(PPS_TOOLS_VERSION)) +PPS_TOOLS_INSTALL_STAGING = YES +PPS_TOOLS_LICENSE = GPL-2.0+ +PPS_TOOLS_LICENSE_FILES = COPYING + +define PPS_TOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all +endef + +define PPS_TOOLS_INSTALL_STAGING_CMDS + mkdir -p $(STAGING_DIR)/usr/include/sys $(STAGING_DIR)/usr/bin + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + DESTDIR=$(STAGING_DIR) -C $(@D) install +endef + +define PPS_TOOLS_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/include/sys $(TARGET_DIR)/usr/bin + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + DESTDIR=$(TARGET_DIR) -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/pptp-linux/0001-susv3-legacy.patch b/package/pptp-linux/0001-susv3-legacy.patch new file mode 100644 index 00000000..5cc9f578 --- /dev/null +++ b/package/pptp-linux/0001-susv3-legacy.patch @@ -0,0 +1,29 @@ +bzero is deprecated in POSIX.1-2001 and removed for POSIX.1-2008 so +switch to memset instead. + +Signed-off-by: Gustavo Zacarias + +diff -Nura pptp-1.8.0.orig/pptp_callmgr.c pptp-1.8.0/pptp_callmgr.c +--- pptp-1.8.0.orig/pptp_callmgr.c 2013-10-23 05:10:46.000000000 -0300 ++++ pptp-1.8.0/pptp_callmgr.c 2014-03-31 16:47:42.617643298 -0300 +@@ -340,7 +340,7 @@ + } + #endif + if (localbind.s_addr != INADDR_NONE) { +- bzero(&src, sizeof(src)); ++ memset(&src, 0, sizeof(src)); + src.i.sin_family = AF_INET; + src.i.sin_addr = localbind; + if (bind(s, &src.a, sizeof(src.i)) != 0) { +diff -Nura pptp-1.8.0.orig/pptp_gre.c pptp-1.8.0/pptp_gre.c +--- pptp-1.8.0.orig/pptp_gre.c 2013-10-23 05:10:46.000000000 -0300 ++++ pptp-1.8.0/pptp_gre.c 2014-03-31 16:47:30.745249066 -0300 +@@ -103,7 +103,7 @@ + } + #endif + if (localbind.s_addr != INADDR_NONE) { +- bzero(&loc_addr, sizeof(loc_addr)); ++ memset(&loc_addr, 0, sizeof(loc_addr)); + loc_addr.i.sin_family = AF_INET; + loc_addr.i.sin_addr = localbind; + if (bind(s, &loc_addr.a, sizeof(loc_addr.i)) != 0) { diff --git a/package/pptp-linux/0002-fix-parallel-build.patch b/package/pptp-linux/0002-fix-parallel-build.patch new file mode 100644 index 00000000..04a79774 --- /dev/null +++ b/package/pptp-linux/0002-fix-parallel-build.patch @@ -0,0 +1,23 @@ +Fix parallel build issue + +The config.h header file must be created before being used to build +source files that include it, especially version.c. In order for this +to happen even in highly-parallel builds, we add a dependency of all +object files on config.h, in order to ensure it gets generated before +make attempts to build the object files. + +Signed-off-by: Thomas Petazzoni + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -37,6 +37,8 @@ + + all: config.h $(PPTP_BIN) pptpsetup.8 + ++$(PPTP_OBJS): config.h ++ + $(PPTP_BIN): $(PPTP_OBJS) $(PPTP_DEPS) + $(CC) -o $(PPTP_BIN) $(PPTP_OBJS) $(LDFLAGS) $(LIBS) + diff --git a/package/pptp-linux/Config.in b/package/pptp-linux/Config.in new file mode 100644 index 00000000..e03a906e --- /dev/null +++ b/package/pptp-linux/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PPTP_LINUX + bool "pptp-linux" + depends on BR2_USE_MMU # fork() + help + An implementation of the Point-to-point protocol client. + + http://pptpclient.sourceforge.net/ diff --git a/package/pptp-linux/pptp-linux.hash b/package/pptp-linux/pptp-linux.hash new file mode 100644 index 00000000..dc07c15d --- /dev/null +++ b/package/pptp-linux/pptp-linux.hash @@ -0,0 +1,7 @@ +# From http://sourceforge.net/projects/pptpclient/files/pptp/pptp-1.10.0/ +md5 8d25341352fdae5ad5b36b9f18254908 pptp-1.10.0.tar.gz +sha1 173c9b7d204c89fd1538116f165bba1e9101b51c pptp-1.10.0.tar.gz + +# Locally calculated +sha256 82492db8e487ce73b182ee7f444251d20c44f5c26d6e96c553ec7093aefb5af4 pptp-1.10.0.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/pptp-linux/pptp-linux.mk b/package/pptp-linux/pptp-linux.mk new file mode 100644 index 00000000..b6c740e7 --- /dev/null +++ b/package/pptp-linux/pptp-linux.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# pptp-linux +# +################################################################################ + +PPTP_LINUX_VERSION = 1.10.0 +PPTP_LINUX_SITE = http://downloads.sourceforge.net/project/pptpclient/pptp/pptp-$(PPTP_LINUX_VERSION) +PPTP_LINUX_SOURCE = pptp-$(PPTP_LINUX_VERSION).tar.gz +PPTP_LINUX_LICENSE = GPL-2.0+ +PPTP_LINUX_LICENSE_FILES = COPYING + +define PPTP_LINUX_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) OPTIMIZE= DEBUG= \ + CC="$(TARGET_CC)" \ + CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + IP=/sbin/ip +endef + +define PPTP_LINUX_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/pptp $(TARGET_DIR)/usr/sbin/pptp +endef + +$(eval $(generic-package)) diff --git a/package/prboom/0001-libpng-1.4.patch b/package/prboom/0001-libpng-1.4.patch new file mode 100644 index 00000000..0d2a3a5b --- /dev/null +++ b/package/prboom/0001-libpng-1.4.patch @@ -0,0 +1,32 @@ +[PATCH] fix build with libpng 1.4.x + +In 1.4.x the png_*_NULL defines are gone. Replace them with a normal +NULL instead. + +Signed-off-by: Peter Korsgaard +--- + src/SDL/i_sshot.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +Index: prboom-2.5.0/src/SDL/i_sshot.c +=================================================================== +--- prboom-2.5.0.orig/src/SDL/i_sshot.c ++++ prboom-2.5.0/src/SDL/i_sshot.c +@@ -231,7 +231,7 @@ int I_ScreenShot (const char *fname) + if (fp) + { + png_struct *png_ptr = png_create_write_struct( +- PNG_LIBPNG_VER_STRING, png_error_ptr_NULL, error_fn, warning_fn); ++ PNG_LIBPNG_VER_STRING, NULL, error_fn, warning_fn); + + if (png_ptr) + { +@@ -279,7 +279,7 @@ int I_ScreenShot (const char *fname) + break; + } + } +- png_destroy_write_struct(&png_ptr, png_infopp_NULL); ++ png_destroy_write_struct(&png_ptr, NULL); + } + fclose(fp); + } diff --git a/package/prboom/0002-configure-remove-predefined-O2-optimization-flag.patch b/package/prboom/0002-configure-remove-predefined-O2-optimization-flag.patch new file mode 100644 index 00000000..9260cb63 --- /dev/null +++ b/package/prboom/0002-configure-remove-predefined-O2-optimization-flag.patch @@ -0,0 +1,21 @@ +configure: remove predefined -O2 optimization flag + +CFLAGS_OPT variable forces to use -O2 optimization flag denying the +possibility to use different optimization flag values. + +Remove -O2 flag from CFLAGS_OPT. + +Signed-off-by: Giulio Benetti +--- +diff -urpN prboom-2.5.0.orig/configure.ac prboom-2.5.0/configure.ac +--- prboom-2.5.0.orig/configure.ac 2019-06-20 14:07:45.058481879 +0200 ++++ prboom-2.5.0/configure.ac 2019-06-20 14:09:05.066238825 +0200 +@@ -48,7 +48,7 @@ else + fi + + dnl --- cph: work out flags to pass to compiler +-CFLAGS_OPT="-O2 -fomit-frame-pointer" ++CFLAGS_OPT="-fomit-frame-pointer" + AC_C_COMPILE_FLAGS(-Wall) + dnl --- Option to enable debugging + AC_ARG_ENABLE(debug,AC_HELP_STRING([--enable-debug],[turns on various debugging features, like range checking and internal heap diagnostics]),,enable_debug="no") diff --git a/package/prboom/Config.in b/package/prboom/Config.in new file mode 100644 index 00000000..7dc635d7 --- /dev/null +++ b/package/prboom/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PRBOOM + bool "prboom" + select BR2_PACKAGE_SDL + select BR2_PACKAGE_SDL_MIXER + select BR2_PACKAGE_SDL_NET + help + PrBoom is a Doom client which allows you to play the good + old game on newer hardware. It even supports higher + resolution and better rendering, while still keeping the old + style alive. + + http://prboom.sourceforge.net/ diff --git a/package/prboom/prboom.hash b/package/prboom/prboom.hash new file mode 100644 index 00000000..2cc0f513 --- /dev/null +++ b/package/prboom/prboom.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 226c1c470f8cc983327536404f405a1d026cf0a5188c694a1243cc8630014bae prboom-2.5.0.tar.gz +sha256 1cba07ce0f6d1366d84b7cc62b76966ba79075e5f379c1e230c3ff0635fa789f COPYING diff --git a/package/prboom/prboom.mk b/package/prboom/prboom.mk new file mode 100644 index 00000000..c1ba05ff --- /dev/null +++ b/package/prboom/prboom.mk @@ -0,0 +1,57 @@ +################################################################################ +# +# prboom +# +################################################################################ + +PRBOOM_VERSION = 2.5.0 +PRBOOM_SITE = http://downloads.sourceforge.net/project/prboom/prboom%20stable/$(PRBOOM_VERSION) +PRBOOM_CONF_ENV = ac_cv_type_gid_t=yes ac_cv_type_uid_t=yes +PRBOOM_DEPENDENCIES = sdl sdl_net sdl_mixer +PRBOOM_LICENSE = GPL-2.0+ +PRBOOM_LICENSE_FILES = COPYING +PRBOOM_AUTORECONF = YES + +PRBOOM_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +PRBOOM_CFLAGS += -O0 +endif + +PRBOOM_CONF_ENV += CFLAGS="$(PRBOOM_CFLAGS)" + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +PRBOOM_DEPENDENCIES += libpng +endif + +ifeq ($(BR2_STATIC_LIBS),y) +# SDL_mixer uses symbols from SDL, but ends up after it on the link +# cmdline. Fix it by forcing the SDL libs at the very end +PRBOOM_CONF_ENV += LIBS="`$(STAGING_DIR)/usr/bin/sdl-config --static-libs`" +endif + +PRBOOM_CONF_OPTS = \ + --oldincludedir=$(STAGING_DIR)/usr/include \ + --with-sdl-prefix=$(STAGING_DIR)/usr \ + --with-sdl-exec-prefix=$(STAGING_DIR)/usr \ + --disable-cpu-opt \ + --disable-sdltest \ + --disable-gl + +# endianness detection isn't used when cross compiling +define PRBOOM_BIG_ENDIAN_FIXUP + $(SED) 's,.*#undef WORDS_BIGENDIAN.*,#define WORDS_BIGENDIAN 1,g' \ + $(PRBOOM_DIR)/config.h +endef + +ifeq ($(BR2_ENDIAN),"BIG") +PRBOOM_POST_CONFIGURE_HOOKS += PRBOOM_BIG_ENDIAN_FIXUP +endif + +define PRBOOM_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/src/prboom $(TARGET_DIR)/usr/games/prboom + $(INSTALL) -D $(@D)/src/prboom-game-server $(TARGET_DIR)/usr/games/prboom-game-server + $(INSTALL) -D $(@D)/data/prboom.wad $(TARGET_DIR)/usr/share/games/doom/prboom.wad +endef + +$(eval $(autotools-package)) diff --git a/package/prelink-cross/0001-src-rtld-dl-tls.c-Fix-TLS-offsets-computation-for-s3.patch b/package/prelink-cross/0001-src-rtld-dl-tls.c-Fix-TLS-offsets-computation-for-s3.patch new file mode 100644 index 00000000..cea1357d --- /dev/null +++ b/package/prelink-cross/0001-src-rtld-dl-tls.c-Fix-TLS-offsets-computation-for-s3.patch @@ -0,0 +1,43 @@ +From 4064f77d2f550762cbf220fec7c26a8ce4219ea4 Mon Sep 17 00:00:00 2001 +From: Alexander Egorenkov +Date: Sun, 8 Aug 2021 11:19:52 +0200 +Subject: [PATCH] src/rtld/dl-tls.c: Fix TLS offsets computation for s390 arch + +rtld_determine_tlsoffsets() didn't handle s390 arch properly by falling +back to the default case. If TLS_TCB_AT_TP is 1, then set offset to -1. + +From glibc's sysdeps/s390/nptl/tls.h: +------------------------------------- +/* The TCB can have any size and the memory following the address the + thread pointer points to is unspecified. Allocate the TCB there. */ +define TLS_TCB_AT_TP 1 +define TLS_DTV_AT_TP 0 + +This lead to the following error: +--------------------------------- +prelink-rtld: error while loading shared libraries: /lib64/libc.so.6: cannot handle TLS data + +Signed-off-by: Alexander Egorenkov +--- + src/rtld/dl-tls.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/rtld/dl-tls.c b/src/rtld/dl-tls.c +index 280cee45f950..29422dcfd25e 100644 +--- a/src/rtld/dl-tls.c ++++ b/src/rtld/dl-tls.c +@@ -143,6 +143,11 @@ rtld_determine_tlsoffsets (int e_machine, struct r_scope_elem *search_list) + tls_tcb_size = 0; + break; + ++ case EM_S390: ++ tls_tcb_at_tp = 1; ++ tls_tcb_size = -1; ++ break; ++ + default: + /* Hope there's no TLS! */ + for (i = 0; i < search_list->r_nlist; i++) +-- +2.31.1 + diff --git a/package/prelink-cross/0002-src-execstack.c-fix-prelink_path-type.patch b/package/prelink-cross/0002-src-execstack.c-fix-prelink_path-type.patch new file mode 100644 index 00000000..26a68d8f --- /dev/null +++ b/package/prelink-cross/0002-src-execstack.c-fix-prelink_path-type.patch @@ -0,0 +1,44 @@ +From 516030f287f65ca8bdab92c979ba2d328ee40506 Mon Sep 17 00:00:00 2001 +From: James Hilliard +Date: Fri, 31 May 2024 12:51:01 -0600 +Subject: [PATCH] src/execstack.c: fix prelink_path type +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes: +execstack.c: In function ‘execstack_make_rdwr’: +execstack.c:127:17: error: passing argument 1 of ‘asprintf’ from incompatible pointer type [-Wincompatible-pointer-types] + 127 | asprintf (&prelink_path, "%s/%s", dirname, PRELINK_PROG EXEEXT); + | ^~~~~~~~~~~~~ + | | + | const char ** +In file included from execstack.c:10: +/usr/include/stdio.h:403:40: note: expected ‘char ** restrict’ but argument is of type ‘const char **’ + 403 | extern int asprintf (char **__restrict __ptr, + | ~~~~~~~~~~~~~~~~~~^~~~~ + +Signed-off-by: James Hilliard +Signed-off-by: Richard Purdie +Upstream: https://git.yoctoproject.org/prelink-cross/commit/?id=ff2561c02ade96c5d4d56ddd4e27ff064840a176 +Signed-off-by: Thomas Petazzoni +--- + src/execstack.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/execstack.c b/src/execstack.c +index dda6bc7..5413fa2 100644 +--- a/src/execstack.c ++++ b/src/execstack.c +@@ -52,7 +52,7 @@ const char *program_path; + + /* The full pathname of the prelink tool, or NULL if it hasn't been + computed yet. */ +-const char *prelink_path; ++char *prelink_path; + + static error_t + parse_opt (int key, char *arg, struct argp_state *state) +-- +2.45.2 + diff --git a/package/prelink-cross/prelink-cross.hash b/package/prelink-cross/prelink-cross.hash new file mode 100644 index 00000000..6776d407 --- /dev/null +++ b/package/prelink-cross/prelink-cross.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 555fd65c1b907f9b78d6d41ec04cb6e242d2ecb0667867e39cdd517b3f182dd3 prelink-cross-a853a5d715d84eec93aa68e8f2df26b7d860f5b2-git4.tar.gz +sha256 b8a2f73f743dc1a51aff23f1aacbca4b868564db52496fa3c0caba755bfd1eaf COPYING diff --git a/package/prelink-cross/prelink-cross.mk b/package/prelink-cross/prelink-cross.mk new file mode 100644 index 00000000..2312ee53 --- /dev/null +++ b/package/prelink-cross/prelink-cross.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# host-prelink-cross +# +################################################################################ + +PRELINK_CROSS_VERSION = a853a5d715d84eec93aa68e8f2df26b7d860f5b2 +PRELINK_CROSS_SITE = https://git.yoctoproject.org/git/prelink-cross +PRELINK_CROSS_SITE_METHOD = git +PRELINK_CROSS_LICENSE = GPL-2.0+ +PRELINK_CROSS_LICENSE_FILES = COPYING +# Sources from git, no configure script present +PRELINK_CROSS_AUTORECONF = YES +HOST_PRELINK_CROSS_DEPENDENCIES = host-elfutils host-libiberty + +$(eval $(host-autotools-package)) diff --git a/package/privoxy/0001-GNUmakefile-in-Don-t-exit-if-configuration-files-are.patch b/package/privoxy/0001-GNUmakefile-in-Don-t-exit-if-configuration-files-are.patch new file mode 100644 index 00000000..e04d191c --- /dev/null +++ b/package/privoxy/0001-GNUmakefile-in-Don-t-exit-if-configuration-files-are.patch @@ -0,0 +1,30 @@ +From 4b3b267db159dc23314de3062859481b7c397e32 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 17 Mar 2024 12:36:31 +0100 +Subject: [PATCH] GNUmakefile.in: Don't exit if configuration files are + installed as root + +... as this can be considered acceptable when cross-compiling +Privoxy inside an autobuilder with only a root user. + +Upstream: https://www.privoxy.org/gitweb/?p=privoxy.git;a=commit;h=4b3b267db159dc23314de3062859481b7c397e32 +Signed-off-by: Fabrice Fontaine +--- + GNUmakefile.in | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/GNUmakefile.in b/GNUmakefile.in +index 04cceb15..cf79aae1 100644 +--- a/GNUmakefile.in ++++ b/GNUmakefile.in +@@ -927,7 +927,6 @@ install: CONF_DEST LOG_DEST PID_DEST check_doc GROUP_T + $(ECHO) " and to install the config files as that user and/or group!" ;\ + $(ECHO) " Please read INSTALL, and create a privoxy user and group!" ;\ + $(ECHO) "*******************************************************************" ;\ +- exit 1 ;\ + fi ;\ + else \ + GROUP_T=$(GROUP) ;\ +-- +2.39.2 + diff --git a/package/privoxy/0002-GNUMakefile.in-fix-root-install.patch b/package/privoxy/0002-GNUMakefile.in-fix-root-install.patch new file mode 100644 index 00000000..89347c21 --- /dev/null +++ b/package/privoxy/0002-GNUMakefile.in-fix-root-install.patch @@ -0,0 +1,35 @@ +From 25bd5ae1664f5603c05c72b2c38525602f33da0a Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 31 Mar 2024 19:17:45 +0200 +Subject: [PATCH] GNUMakefile.in: fix root install + +Set GROUP_T when installing configuration files as root to avoid the +following build failure since commit +4b3b267db159dc23314de3062859481b7c397e32: + +/usr/bin/install: missing destination file operand after '/home/buildroot/instance-0/output-1/target/etc' + +Fixes: + - http://autobuild.buildroot.org/results/eb4ccf248c9c5048e9b71058bb0311b1e0763883 + +Signed-off-by: Fabrice Fontaine +Upstream: https://lists.privoxy.org/pipermail/privoxy-devel/2024-March/000760.html +--- + GNUmakefile.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/GNUmakefile.in b/GNUmakefile.in +index cf79aae1..db1bab59 100644 +--- a/GNUmakefile.in ++++ b/GNUmakefile.in +@@ -927,6 +927,7 @@ install: CONF_DEST LOG_DEST PID_DEST check_doc GROUP_T + $(ECHO) " and to install the config files as that user and/or group!" ;\ + $(ECHO) " Please read INSTALL, and create a privoxy user and group!" ;\ + $(ECHO) "*******************************************************************" ;\ ++ GROUP_T=$(GROUP) ;\ + fi ;\ + else \ + GROUP_T=$(GROUP) ;\ +-- +2.43.0 + diff --git a/package/privoxy/Config.in b/package/privoxy/Config.in new file mode 100644 index 00000000..accb48df --- /dev/null +++ b/package/privoxy/Config.in @@ -0,0 +1,17 @@ +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 + A non-caching web proxy with advanced filtering capabilities + for enhancing privacy, modifying web page data and HTTP + headers, controlling access, and removing ads and other + 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/package/privoxy/privoxy.hash b/package/privoxy/privoxy.hash new file mode 100644 index 00000000..67a44f2c --- /dev/null +++ b/package/privoxy/privoxy.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/ijbswa/files/Sources/3.0.34%20%28stable%29/ +sha1 e65298c4ee235320ea9ddfb689187bda29a63bbb privoxy-3.0.34-stable-src.tar.gz +# Locally computed +sha256 e6ccbca1656f4e616b4657f8514e33a70f6697e9d7294356577839322a3c5d2c privoxy-3.0.34-stable-src.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/privoxy/privoxy.mk b/package/privoxy/privoxy.mk new file mode 100644 index 00000000..e1353ef0 --- /dev/null +++ b/package/privoxy/privoxy.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# privoxy +# +################################################################################ + +PRIVOXY_VERSION = 3.0.34 +PRIVOXY_SITE = https://downloads.sourceforge.net/project/ijbswa/Sources/$(PRIVOXY_VERSION)%20%28stable%29 +PRIVOXY_SOURCE = privoxy-$(PRIVOXY_VERSION)-stable-src.tar.gz +# configure not shipped +PRIVOXY_AUTORECONF = YES +PRIVOXY_DEPENDENCIES = pcre zlib +PRIVOXY_LICENSE = GPL-2.0+ +PRIVOXY_LICENSE_FILES = LICENSE +PRIVOXY_CPE_ID_VENDOR = privoxy +PRIVOXY_SELINUX_MODULES = privoxy + +$(eval $(autotools-package)) diff --git a/package/procps-ng/Config.in b/package/procps-ng/Config.in new file mode 100644 index 00000000..4afd0169 --- /dev/null +++ b/package/procps-ng/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_PROCPS_NG + bool "procps-ng" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_NCURSES + help + Standard informational utilities and process-handling tools. + Provides things like kill, ps, uptime, free, top, etc... + + http://sourceforge.net/projects/procps-ng/ + +if BR2_PACKAGE_PROCPS_NG + +config BR2_PACKAGE_PROCPS_NS_ORIGINAL_TOP + bool "Use original top layout" + help + Disable modern top layout, return to original top with + detail cpu usage. + +endif diff --git a/package/procps-ng/S02sysctl b/package/procps-ng/S02sysctl new file mode 100644 index 00000000..c202833a --- /dev/null +++ b/package/procps-ng/S02sysctl @@ -0,0 +1,94 @@ +#!/bin/sh +# +# This script is used by busybox and procps-ng. +# +# With procps-ng, the "--system" option of sysctl also enables "--ignore", so +# errors are not reported via syslog. Use the run_logger function to mimic the +# --system behavior, still reporting errors via syslog. Users not interested +# on error reports can add "-e" to SYSCTL_ARGS. +# +# busybox does not have a "--system" option neither reports errors via syslog, +# so the scripting provides a consistent behavior between the implementations. +# Testing the busybox sysctl exit code is fruitless, as at the moment, since +# its exit status is zero even if errors happen. Hopefully this will be fixed +# in a future busybox version. + +PROGRAM="sysctl" + +SYSCTL_ARGS="" + +# shellcheck source=/dev/null +[ -r "/etc/default/$PROGRAM" ] && . "/etc/default/$PROGRAM" + +# Files are read from directories in the SYSCTL_SOURCES list, in the given +# order. A file may be used more than once, since there can be multiple +# symlinks to it. No attempt is made to prevent this. +SYSCTL_SOURCES="/etc/sysctl.d/ /usr/local/lib/sysctl.d/ /usr/lib/sysctl.d/ /lib/sysctl.d/ /etc/sysctl.conf" + +# If the logger utility is available all messages are sent to syslog, except +# for the final status. The file redirections do the following: +# +# - stdout is redirected to syslog with facility.level "kern.info" +# - stderr is redirected to syslog with facility.level "kern.err" +# - file dscriptor 4 is used to pass the result to the "start" function. +# +run_logger() { + # shellcheck disable=SC2086 # we need the word splitting + find $SYSCTL_SOURCES -maxdepth 1 -name '*.conf' -print0 2> /dev/null | \ + xargs -0 -r -n 1 readlink -f | { + prog_status="OK" + while :; do + read -r file || { + echo "$prog_status" >&4 + break + } + echo "* Applying $file ..." + /sbin/sysctl $SYSCTL_ARGS -p "$file" || prog_status="FAIL" + done 2>&1 >&3 | /usr/bin/logger -t sysctl -p kern.err + } 3>&1 | /usr/bin/logger -t sysctl -p kern.info +} + +# If logger is not available all messages are sent to stdout/stderr. +run_std() { + # shellcheck disable=SC2086 # we need the word splitting + find $SYSCTL_SOURCES -maxdepth 1 -name '*.conf' -print0 2> /dev/null | \ + xargs -0 -r -n 1 readlink -f | { + prog_status="OK" + while :; do + read -r file || { + echo "$prog_status" >&4 + break + } + echo "* Applying $file ..." + /sbin/sysctl $SYSCTL_ARGS -p "$file" || prog_status="FAIL" + done + } +} + +if [ -x /usr/bin/logger ]; then + run_program="run_logger" +else + run_program="run_std" +fi + +start() { + printf '%s %s: ' "$1" "$PROGRAM" + status=$("$run_program" 4>&1) + echo "$status" + if [ "$status" = "OK" ]; then + return 0 + fi + return 1 +} + +case "$1" in + start) + start "Running";; + restart|reload) + start "Rerunning";; + stop) + :;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/procps-ng/procps-ng.hash b/package/procps-ng/procps-ng.hash new file mode 100644 index 00000000..0d9cd9a8 --- /dev/null +++ b/package/procps-ng/procps-ng.hash @@ -0,0 +1,8 @@ +# From http://sourceforge.net/projects/procps-ng/files/Production/ +md5 2f747fc7df8ccf402d03e375c565cf96 procps-ng-4.0.4.tar.xz +sha1 2b859acd7060e9898ac457dbd26dbebf563cc44b procps-ng-4.0.4.tar.xz +# Locally calculated after checking signature +# http://downloads.sourceforge.net/project/procps-ng/Production/procps-ng-4.0.4.tar.xz.asc +sha256 22870d6feb2478adb617ce4f09a787addaf2d260c5a8aa7b17d889a962c5e42e procps-ng-4.0.4.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 681e386e44a19d7d0674b4320272c90e66b6610b741e7e6305f8219c42e85366 COPYING.LIB diff --git a/package/procps-ng/procps-ng.mk b/package/procps-ng/procps-ng.mk new file mode 100644 index 00000000..2f28e357 --- /dev/null +++ b/package/procps-ng/procps-ng.mk @@ -0,0 +1,69 @@ +################################################################################ +# +# procps-ng +# +################################################################################ + +PROCPS_NG_VERSION = 4.0.4 +PROCPS_NG_SOURCE = procps-ng-$(PROCPS_NG_VERSION).tar.xz +PROCPS_NG_SITE = http://downloads.sourceforge.net/project/procps-ng/Production +PROCPS_NG_LICENSE = GPL-2.0+, LGPL-2.0+ (libproc and libps) +PROCPS_NG_LICENSE_FILES = COPYING COPYING.LIB +PROCPS_NG_CPE_ID_VALID = YES +PROCPS_NG_INSTALL_STAGING = YES +PROCPS_NG_DEPENDENCIES = ncurses host-pkgconf $(TARGET_NLS_DEPENDENCIES) +PROCPS_NG_CONF_OPTS = LIBS=$(TARGET_NLS_LIBS) + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +PROCPS_NG_DEPENDENCIES += systemd +PROCPS_NG_CONF_OPTS += --with-systemd +else +PROCPS_NG_CONF_OPTS += --without-systemd +endif + +# Make sure binaries get installed in /bin, as busybox does, so that we +# don't end up with two versions. +# Make sure libprocps.pc is installed in STAGING_DIR/usr/lib/pkgconfig/ +# otherwise it's installed in STAGING_DIR/lib/pkgconfig/ breaking +# pkg-config --libs libprocps. +PROCPS_NG_CONF_OPTS += --exec-prefix=/ \ + --libdir=/usr/lib + +# Allows unicode characters to show in 'watch' +ifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y) +PROCPS_NG_CONF_OPTS += \ + --enable-watch8bit +endif + +ifeq ($(BR2_USE_WCHAR),) +PROCPS_NG_CONF_OPTS += CPPFLAGS=-DOFF_XTRAWIDE +endif + +# numa support requires libdl, so explicitly disable it when +# BR2_STATIC_LIBS=y +ifeq ($(BR2_STATIC_LIBS),y) +PROCPS_NG_CONF_OPTS += --disable-numa +endif + +# w requires utmp.h +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +PROCPS_NG_CONF_OPTS += --disable-w +else +PROCPS_NG_CONF_OPTS += --enable-w +endif + +ifeq ($(BR2_PACKAGE_PROCPS_NS_ORIGINAL_TOP),y) +PROCPS_NG_CONF_OPTS += --disable-modern-top +endif + +# Avoid installing S02sysctl, since openrc provides /etc/init.d/sysctl. +define PROCPS_NG_INSTALL_INIT_OPENRC + @: +endef + +define PROCPS_NG_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/procps-ng/S02sysctl \ + $(TARGET_DIR)/etc/init.d/S02sysctl +endef + +$(eval $(autotools-package)) diff --git a/package/procrank_linux/Config.in b/package/procrank_linux/Config.in new file mode 100644 index 00000000..59d462b6 --- /dev/null +++ b/package/procrank_linux/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PROCRANK_LINUX + bool "procrank_linux" + help + procrank is a tool commonly used by Android platform + developers to find out how much memory is really being used. + + https://github.com/csimmonds/procrank_linux diff --git a/package/procrank_linux/procrank_linux.hash b/package/procrank_linux/procrank_linux.hash new file mode 100644 index 00000000..cc9c403a --- /dev/null +++ b/package/procrank_linux/procrank_linux.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1c3592b549b6793b29ab561568f493d0edbfe288ea2aed59afa689eaa26b5d9e procrank_linux-21c30ab4514a5b15ac6e813e21bee0d3d714cb08.tar.gz +sha256 38751245389e1e23f73e6f5384b5cbe7fa972cc4410c5adc9c04b082a0b9561a NOTICE diff --git a/package/procrank_linux/procrank_linux.mk b/package/procrank_linux/procrank_linux.mk new file mode 100644 index 00000000..415a4e41 --- /dev/null +++ b/package/procrank_linux/procrank_linux.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# procrank_linux +# +################################################################################ + +PROCRANK_LINUX_VERSION = 21c30ab4514a5b15ac6e813e21bee0d3d714cb08 +PROCRANK_LINUX_SITE = $(call github,csimmonds,procrank_linux,$(PROCRANK_LINUX_VERSION)) +PROCRANK_LINUX_LICENSE = Apache-2.0 +PROCRANK_LINUX_LICENSE_FILES = NOTICE + +define PROCRANK_LINUX_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CROSS_COMPILE="$(TARGET_CROSS)" \ + LOCAL_CFLAGS="$(TARGET_CFLAGS)" +endef + +define PROCRANK_LINUX_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/procrank \ + $(TARGET_DIR)/usr/bin/procrank +endef + +$(eval $(generic-package)) diff --git a/package/procs/Config.in b/package/procs/Config.in new file mode 100644 index 00000000..946fa68c --- /dev/null +++ b/package/procs/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PROCS + bool "procs" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_RUSTC + help + procs is a modern replacement for ps written in Rust + + https://github.com/dalance/procs.git diff --git a/package/procs/procs.hash b/package/procs/procs.hash new file mode 100644 index 00000000..da6b4377 --- /dev/null +++ b/package/procs/procs.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 86715967bd378a4c0330708e11714bda2c8ce9f757fb3006073238d77e83e6e1 procs-0.14.5-cargo2.tar.gz +sha256 feb87a2e0c305de3464cc44077da5393c52d8ca6362d37427157d04ec6f4510d LICENSE diff --git a/package/procs/procs.mk b/package/procs/procs.mk new file mode 100644 index 00000000..019e69a1 --- /dev/null +++ b/package/procs/procs.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# procs +# +################################################################################ + +PROCS_VERSION = 0.14.5 +PROCS_SITE = $(call github,dalance,procs,v$(PROCS_VERSION)) +PROCS_LICENSE = MIT +PROCS_LICENSE_FILES = LICENSE + +$(eval $(cargo-package)) diff --git a/package/proftpd/Config.in b/package/proftpd/Config.in new file mode 100644 index 00000000..9d99ff70 --- /dev/null +++ b/package/proftpd/Config.in @@ -0,0 +1,112 @@ +config BR2_PACKAGE_PROFTPD + bool "proftpd" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + ProFTPD, a highly configurable FTP server. + + http://www.proftpd.org/ + +if BR2_PACKAGE_PROFTPD + +config BR2_PACKAGE_PROFTPD_MOD_CAP + bool "mod_cap support" + select BR2_PACKAGE_LIBCAP + help + Compile ProFTPD with mod_cap support + +config BR2_PACKAGE_PROFTPD_MOD_REWRITE + bool "mod_rewrite support" + help + Compile ProFTPD with mod_rewrite support + +config BR2_PACKAGE_PROFTPD_MOD_REDIS + bool "mod_redis support" + select BR2_PACKAGE_HIREDIS + help + The mod_redis module enables ProFTPD support for caching + data in Redis servers, using the hiredis client library. + +config BR2_PACKAGE_PROFTPD_MOD_SFTP + bool "mod_sftp support" + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 + help + Compile ProFTPD with mod_sftp support + +config BR2_PACKAGE_PROFTPD_MOD_SQL + bool "mod_sql support" + help + Compile ProFTPD with mod_sql support. + +if BR2_PACKAGE_PROFTPD_MOD_SQL + +config BR2_PACKAGE_PROFTPD_MOD_SQL_SQLITE + bool "mod_sql_sqlite support" + select BR2_PACKAGE_SQLITE + help + Compile ProFTPD with mod_sql_sqlite support. + +endif + +config BR2_PACKAGE_PROFTPD_MOD_SFTP_SQL + bool "mod_sftp_sql support" + select BR2_PACKAGE_PROFTPD_MOD_SQL + select BR2_PACKAGE_PROFTPD_MOD_SFTP + help + Compile ProFTPD with mod_sftp_sql support + +config BR2_PACKAGE_PROFTPD_MOD_QUOTATAB + bool "mod_quotatab support" + help + Compile ProFTPD with mod_quotatab support. This module + is required in order to support quota tables: + 1. mod_quotatab_file + 2. mod_quotatab_ldap + 3. mod_quotatab_radius + 4. mod_quotatab_sql + +if BR2_PACKAGE_PROFTPD_MOD_QUOTATAB + +config BR2_PACKAGE_PROFTPD_MOD_QUOTATAB_FILE + bool "mod_quotatab_file table support" + help + Compile mod_quotatab with mod_quotatab_file table. + +config BR2_PACKAGE_PROFTPD_MOD_QUOTATAB_LDAP + bool "mod_quotatab_ldap table support" + help + Compile mod_quotatab with mod_quotatab_ldap table. + +config BR2_PACKAGE_PROFTPD_MOD_QUOTATAB_RADIUS + bool "mod_quotatab_radius table support" + help + Compile mod_quotatab with mod_quotatab_radius table. + +config BR2_PACKAGE_PROFTPD_MOD_QUOTATAB_SQL + bool "mod_quotatab_sql table support" + select BR2_PACKAGE_PROFTPD_MOD_SQL + help + Compile mod_quotatab with mod_quotatab_sql table. + +endif + +config BR2_PACKAGE_PROFTPD_BUFFER_SIZE + int "buffer size in bytes (0 for default)" + default "0" + help + By increasing the buffer size above the default of 1K, + proftpd reads and writes data in larger chunks, and makes + fewer expensive system calls. Use of this option to set buffer + sizes of 8K or more has been reported to drastically increase + transfer speeds (depending on network configurations). + + 0 uses the default size of 1024. + +endif + +comment "proftpd needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/package/proftpd/S50proftpd b/package/proftpd/S50proftpd new file mode 100644 index 00000000..3f9070f2 --- /dev/null +++ b/package/proftpd/S50proftpd @@ -0,0 +1,45 @@ +#!/bin/sh + +trap "" HUP +trap "" TERM +[ ! -d /var/run/proftpd ] && mkdir /var/run/proftpd +[ ! -f /var/log/wtmp ] && touch /var/log/wtmp + +start() { + printf "Starting ProFTPD: " + /usr/sbin/proftpd + if [ $? != 0 ]; then + echo "FAILED" + exit 1 + else + echo "done" + fi +} + +stop() { + printf "Stopping ProFTPD: " + killall proftpd + echo "done" +} + +case "$1" in + start) + start + ;; + + stop) + stop + ;; + + restart) + stop + start + ;; + + *) + echo "Usage: /etc/init.d/S50proftpd {start|stop|restart}" + exit 1 + ;; +esac + +exit 0 diff --git a/package/proftpd/proftpd.hash b/package/proftpd/proftpd.hash new file mode 100644 index 00000000..5a7d153a --- /dev/null +++ b/package/proftpd/proftpd.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 183ab7c6107de271a2959ff268f55c9b6c76b2cf0029e6584fccc019686601e0 proftpd-1.3.8b.tar.gz +sha256 391a473d755c29b5326fb726326ff3c37e42512f53a8f5789fc310232150bf80 COPYING diff --git a/package/proftpd/proftpd.mk b/package/proftpd/proftpd.mk new file mode 100644 index 00000000..72a0fe93 --- /dev/null +++ b/package/proftpd/proftpd.mk @@ -0,0 +1,155 @@ +################################################################################ +# +# proftpd +# +################################################################################ + +PROFTPD_VERSION = 1.3.8b +PROFTPD_SITE = https://github.com/proftpd/proftpd/archive/v$(PROFTPD_VERSION) +PROFTPD_LICENSE = GPL-2.0+ +PROFTPD_LICENSE_FILES = COPYING +PROFTPD_CPE_ID_VENDOR = proftpd +PROFTPD_SELINUX_MODULES = ftp + +PROFTPD_CONF_ENV = \ + ac_cv_func_setpgrp_void=yes \ + ac_cv_func_setgrent_void=yes + +PROFTPD_CONF_OPTS = \ + --localstatedir=/var/run \ + --disable-static \ + --disable-curses \ + --disable-ncurses \ + --disable-facl \ + --disable-dso \ + --enable-sendfile \ + --enable-shadow \ + --with-gnu-ld \ + --without-openssl-cmdline + +ifeq ($(BR2_PACKAGE_LIBIDN2),y) +PROFTPD_DEPENDENCIES += libidn2 +endif + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +PROFTPD_DEPENDENCIES += libxcrypt +endif + +ifeq ($(BR2_PACKAGE_PCRE2),y) +PROFTPD_CONF_OPTS += --enable-pcre2 +PROFTPD_DEPENDENCIES += pcre2 +else +PROFTPD_CONF_OPTS += --disable-pcre2 +endif + +ifeq ($(BR2_PACKAGE_PROFTPD_MOD_CAP),y) +PROFTPD_CONF_OPTS += --enable-cap +PROFTPD_DEPENDENCIES += libcap +else +PROFTPD_CONF_OPTS += --disable-cap +endif + +ifeq ($(BR2_PACKAGE_PROFTPD_MOD_REWRITE),y) +PROFTPD_MODULES += mod_rewrite +endif + +ifeq ($(BR2_PACKAGE_PROFTPD_MOD_REDIS),y) +PROFTPD_CONF_OPTS += --enable-redis +PROFTPD_DEPENDENCIES += hiredis +else +PROFTPD_CONF_OPTS += --disable-redis +endif + +ifeq ($(BR2_PACKAGE_PROFTPD_MOD_SFTP),y) +PROFTPD_CONF_OPTS += --enable-openssl +PROFTPD_MODULES += mod_sftp +PROFTPD_DEPENDENCIES += openssl +else +PROFTPD_CONF_OPTS += --disable-openssl +endif + +ifeq ($(BR2_PACKAGE_PROFTPD_MOD_SQL),y) +PROFTPD_MODULES += mod_sql +endif + +ifeq ($(BR2_PACKAGE_PROFTPD_MOD_SQL_SQLITE),y) +PROFTPD_MODULES += mod_sql_sqlite +PROFTPD_DEPENDENCIES += sqlite +endif + +ifeq ($(BR2_PACKAGE_PROFTPD_MOD_SFTP_SQL),y) +PROFTPD_MODULES += mod_sftp_sql +endif + +ifeq ($(BR2_PACKAGE_PROFTPD_MOD_QUOTATAB),y) +PROFTPD_MODULES += mod_quotatab +endif + +ifeq ($(BR2_PACKAGE_PROFTPD_MOD_QUOTATAB_FILE),y) +PROFTPD_MODULES += mod_quotatab_file +endif + +ifeq ($(BR2_PACKAGE_PROFTPD_MOD_QUOTATAB_LDAP),y) +PROFTPD_MODULES += mod_quotatab_ldap +endif + +ifeq ($(BR2_PACKAGE_PROFTPD_MOD_QUOTATAB_RADIUS),y) +PROFTPD_MODULES += mod_quotatab_radius +endif + +ifeq ($(BR2_PACKAGE_PROFTPD_MOD_QUOTATAB_SQL),y) +PROFTPD_MODULES += mod_quotatab_sql +endif + +PROFTPD_CONF_OPTS += --with-modules=$(subst $(space),:,$(PROFTPD_MODULES)) + +# configure script doesn't handle detection of %llu format string +# support for printing the file size when cross compiling, breaking +# access for large files. +# We unfortunately cannot AUTORECONF the package, so instead force it +# on if we know we support it +define PROFTPD_USE_LLU + $(SED) 's/HAVE_LU/HAVE_LLU/' $(@D)/configure +endef +PROFTPD_PRE_CONFIGURE_HOOKS += PROFTPD_USE_LLU + +PROFTPD_MAKE = $(MAKE1) + +# install Perl based scripts in target +ifeq ($(BR2_PACKAGE_PERL),y) +ifeq ($(BR2_PACKAGE_PROFTPD_MOD_QUOTATAB),y) +define PROFTPD_INSTALL_FTPQUOTA + $(INSTALL) -D -m 0755 $(@D)/contrib/ftpquota $(TARGET_DIR)/usr/sbin/ftpquota +endef +endif +define PROFTPD_INSTALL_FTPASSWD + $(INSTALL) -D -m 0755 $(@D)/contrib/ftpasswd $(TARGET_DIR)/usr/sbin/ftpasswd +endef +endif + +define PROFTPD_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/proftpd $(TARGET_DIR)/usr/sbin/proftpd + $(INSTALL) -m 0644 -D $(@D)/sample-configurations/basic.conf $(TARGET_DIR)/etc/proftpd.conf + $(SED) 's/^\(Group\s\+\)nogroup/\1nobody/' $(TARGET_DIR)/etc/proftpd.conf + $(PROFTPD_INSTALL_FTPQUOTA) + $(PROFTPD_INSTALL_FTPASSWD) +endef + +define PROFTPD_USERS + ftp -1 ftp -1 * /home/ftp - - Anonymous FTP User +endef + +define PROFTPD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/proftpd/S50proftpd $(TARGET_DIR)/etc/init.d/S50proftpd +endef + +define PROFTPD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/proftpd/proftpd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/proftpd.service +endef + +ifneq ($(BR2_PACKAGE_PROFTPD_BUFFER_SIZE),0) +PROFTPD_CONF_OPTS += --enable-buffer-size=$(BR2_PACKAGE_PROFTPD_BUFFER_SIZE) +endif + +$(eval $(autotools-package)) diff --git a/package/proftpd/proftpd.service b/package/proftpd/proftpd.service new file mode 100644 index 00000000..1c730e51 --- /dev/null +++ b/package/proftpd/proftpd.service @@ -0,0 +1,10 @@ +[Unit] +Description=FTP server +After=syslog.target network.target + +[Service] +ExecStart=/usr/sbin/proftpd -n -q +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/proj/Config.in b/package/proj/Config.in new file mode 100644 index 00000000..6d172e2e --- /dev/null +++ b/package/proj/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_PROJ + bool "proj" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_USE_WCHAR + select BR2_PACKAGE_SQLITE + help + proj.4 is a standard UNIX filter function which converts + geographic longitude and latitude coordinates into cartesian + coordinates (and vice versa), and it is a C API for software + developers to include coordinate transformation in their own + software. + + http://proj4.org/ + +comment "proj needs a toolchain w/ C++, gcc >= 4.7, NPTL, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_USE_WCHAR diff --git a/package/proj/proj.hash b/package/proj/proj.hash new file mode 100644 index 00000000..22e6a43b --- /dev/null +++ b/package/proj/proj.hash @@ -0,0 +1,5 @@ +# Fetched from http://download.osgeo.org/proj/proj-9.3.0.tar.gz.md5 +md5 f1d70cb8873bb4429a03c437c65c41c4 proj-9.3.0.tar.gz +# Locally calculated +sha256 91a3695a004ea28db0448a34460bed4cc3b130e5c7d74339ec999efdab0e547d proj-9.3.0.tar.gz +sha256 6a8f30793e877d32e3f88b972f0970a051a3b5a26cd057d3993cb51e21c43319 COPYING diff --git a/package/proj/proj.mk b/package/proj/proj.mk new file mode 100644 index 00000000..0e913fa3 --- /dev/null +++ b/package/proj/proj.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# proj +# +################################################################################ + +PROJ_VERSION = 9.3.0 +PROJ_SITE = http://download.osgeo.org/proj +PROJ_LICENSE = MIT +PROJ_LICENSE_FILES = COPYING +PROJ_INSTALL_STAGING = YES +PROJ_DEPENDENCIES = host-pkgconf host-sqlite sqlite + +PROJ_CFLAGS = $(TARGET_CFLAGS) +PROJ_CXXFLAGS = $(TARGET_CXXFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y) +PROJ_CFLAGS += -O0 +PROJ_CXXFLAGS += -O0 +endif + +PROJ_CONF_OPTS = \ + -DBUILD_APPS=OFF \ + -DCMAKE_C_FLAGS="$(PROJ_CFLAGS)" \ + -DCMAKE_CXX_FLAGS="$(PROJ_CXXFLAGS)" + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +PROJ_DEPENDENCIES += libcurl +PROJ_CONF_OPTS += -DENABLE_CURL=ON +else +PROJ_CONF_OPTS += -DENABLE_CURL=OFF +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +PROJ_DEPENDENCIES += tiff +PROJ_CONF_OPTS += -DENABLE_TIFF=ON +else +PROJ_CONF_OPTS += -DENABLE_TIFF=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/prosody/0001-enable-syslog.patch b/package/prosody/0001-enable-syslog.patch new file mode 100644 index 00000000..5f09fa90 --- /dev/null +++ b/package/prosody/0001-enable-syslog.patch @@ -0,0 +1,25 @@ +From 267b5d195be0f3a8f00ccf4ccb62e25a9c4e48eb Mon Sep 17 00:00:00 2001 +From: Francois Perrad +Date: Sun, 22 Oct 2017 08:44:01 +0200 +Subject: [PATCH] enable syslog + +note: the posix module is auto-loaded by default + +Signed-off-by: Francois Perrad + +diff --git a/prosody.cfg.lua.dist b/prosody.cfg.lua.dist +index a0fc6c9e..af3cc0e4 100644 +--- a/prosody.cfg.lua.dist ++++ b/prosody.cfg.lua.dist +@@ -166,7 +166,7 @@ archive_expires_after = "1w" -- Remove archived messages after 1 week + log = { + info = "prosody.log"; -- Change 'info' to 'debug' for verbose logging + error = "prosody.err"; +- -- "*syslog"; -- Uncomment this for logging to syslog ++ "*syslog"; -- Uncomment this for logging to syslog + -- "*console"; -- Log to the console, useful for debugging with daemonize=false + } + +-- +2.11.0 + diff --git a/package/prosody/0002-add-pidfile.patch b/package/prosody/0002-add-pidfile.patch new file mode 100644 index 00000000..0653ed72 --- /dev/null +++ b/package/prosody/0002-add-pidfile.patch @@ -0,0 +1,26 @@ +From 124d479195ac8ec1747b5b89fe4860d0e92c2aae Mon Sep 17 00:00:00 2001 +From: Francois Perrad +Date: Sun, 22 Oct 2017 08:58:11 +0200 +Subject: [PATCH] add pidfile + +see https://prosody.im/doc/configure#posix-only_options + +Signed-off-by: Francois Perrad + +diff --git a/prosody.cfg.lua.dist b/prosody.cfg.lua.dist +index af3cc0e4..675db12f 100644 +--- a/prosody.cfg.lua.dist ++++ b/prosody.cfg.lua.dist +@@ -187,6 +187,9 @@ log = { + -- HTTPS currently only supports a single certificate, specify it here: + --https_certificate = "certs/localhost.crt" + ++-- This must match the PIDFILE used in S50prosody ++pidfile = "/var/run/prosody/prosody.pid" ++ + ----------- Virtual hosts ----------- + -- You need to add a VirtualHost entry for each domain you wish Prosody to serve. + -- Settings under each VirtualHost entry apply *only* to that host. +-- +2.11.0 + diff --git a/package/prosody/Config.in b/package/prosody/Config.in new file mode 100644 index 00000000..d9335070 --- /dev/null +++ b/package/prosody/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_PROSODY + bool "prosody" + depends on BR2_USE_MMU # fork + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + depends on !BR2_PACKAGE_LUA_5_4 + depends on !BR2_STATIC_LIBS # luaexpat, luasec, luasocket, luafilesystem + select BR2_PACKAGE_LUABITOP if BR2_PACKAGE_LUA_5_1 # runtime + select BR2_PACKAGE_LUAEXPAT # runtime + select BR2_PACKAGE_LUASEC # runtime + select BR2_PACKAGE_LUASOCKET # runtime + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBIDN + select BR2_PACKAGE_LUAFILESYSTEM # runtime + help + Prosody is a modern XMPP communication server. It aims to be + easy to set up and configure, and efficient with system + resources. + + https://prosody.im + +comment "prosody needs the lua interpreter, dynamic library" + depends on !BR2_PACKAGE_HAS_LUAINTERPRETER || BR2_STATIC_LIBS + depends on BR2_USE_MMU + +comment "prosody needs a Lua <= 5.3" + depends on BR2_PACKAGE_LUA_5_4 diff --git a/package/prosody/S50prosody b/package/prosody/S50prosody new file mode 100644 index 00000000..6fd33671 --- /dev/null +++ b/package/prosody/S50prosody @@ -0,0 +1,40 @@ +#! /bin/sh + +NAME=prosody + +# This must match the pidfile field in +# /etc/prosody/prosody.cfg.lua + +PIDDIR=/var/run/$NAME +PIDFILE=$PIDDIR/$NAME.pid + +case "$1" in + start) + printf "Starting $NAME: " + mkdir -p $PIDDIR + chown $NAME:$NAME $PIDDIR + start-stop-daemon -S -q -o -x /usr/bin/prosody -c $NAME + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping $NAME: " + # The standard method of identifying the name doesn't + # work as the process name is lua. So use the pidfile + # which is created by the service itself as a match + # criteria when stopping the service + start-stop-daemon -K -q -o -p "$PIDFILE" + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart|reload) + echo "Restarting $NAME: " + $0 stop + sleep 1 + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/package/prosody/prosody.hash b/package/prosody/prosody.hash new file mode 100644 index 00000000..1fd1abaf --- /dev/null +++ b/package/prosody/prosody.hash @@ -0,0 +1,8 @@ +# Locally computed: +md5 93665d86c47e99c9c525610ac53400fb prosody-0.11.14.tar.gz +sha1 abbd0ad42e2b30051f4d3f198c54a52b4e9f39d0 prosody-0.11.14.tar.gz +sha256 ec0c7447ec07ed336b6912d06a2f533439cb16d60d8d3bffa8ce46269ee52c87 prosody-0.11.14.tar.gz +sha512 128e12427ae0b5080fd3cc2380974c04570b16f0f79de7b39ef85cec6e8f579bee2d1150ce70ca731222c487dba646cbcd48bdb4a102a14395644eb5f19f1c88 prosody-0.11.14.tar.gz + +# Hash for license file: +sha256 bbbdc1c5426e5944cf869fc0faeaf19d88a220cd2b39ea98b7b8e86b0e88a2ef COPYING diff --git a/package/prosody/prosody.mk b/package/prosody/prosody.mk new file mode 100644 index 00000000..b5d89ebb --- /dev/null +++ b/package/prosody/prosody.mk @@ -0,0 +1,63 @@ +################################################################################ +# +# prosody +# +################################################################################ + +PROSODY_VERSION = 0.11.14 +PROSODY_SITE = https://prosody.im/downloads/source +PROSODY_LICENSE = MIT +PROSODY_LICENSE_FILES = COPYING +PROSODY_CPE_ID_VENDOR = prosody +PROSODY_DEPENDENCIES = host-luainterpreter luainterpreter libidn openssl + +PROSODY_CFLAGS = $(TARGET_CFLAGS) -fPIC -std=c99 \ + $(if BR2_TOOLCHAIN_USES_MUSL,-DWITHOUT_MALLINFO) + +PROSODY_CONF_OPTS = \ + --with-lua-bin=$(HOST_DIR)/bin \ + --with-lua=$(STAGING_DIR)/usr \ + --lua-version=$(LUAINTERPRETER_ABIVER) \ + --c-compiler=$(TARGET_CC) \ + --cflags="$(PROSODY_CFLAGS)" \ + --linker=$(TARGET_CC) \ + --ldflags="$(TARGET_LDFLAGS) -shared" \ + --sysconfdir=/etc/prosody \ + --prefix=/usr + +ifeq ($(BR2_PACKAGE_LUAJIT),y) +PROSODY_CONF_OPTS += --runwith=luajit +endif + +define PROSODY_CONFIGURE_CMDS + cd $(@D) && \ + $(TARGET_CONFIGURE_OPTS) \ + ./configure $(PROSODY_CONF_OPTS) +endef + +define PROSODY_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define PROSODY_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR="$(TARGET_DIR)" -C $(@D) install +endef + +define PROSODY_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/prosody/S50prosody \ + $(TARGET_DIR)/etc/init.d/S50prosody +endef + +define PROSODY_USERS + prosody -1 prosody -1 * - - - Prosody user +endef + +# make install installs a Makefile and meta data to generate certs +define PROSODY_REMOVE_CERT_GENERATOR + rm -f $(TARGET_DIR)/etc/prosody/certs/Makefile + rm -f $(TARGET_DIR)/etc/prosody/certs/*.cnf +endef + +PROSODY_POST_INSTALL_TARGET_HOOKS += PROSODY_REMOVE_CERT_GENERATOR + +$(eval $(generic-package)) diff --git a/package/protobuf-c/Config.in b/package/protobuf-c/Config.in new file mode 100644 index 00000000..a438b322 --- /dev/null +++ b/package/protobuf-c/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_PROTOBUF_C + bool "protobuf-c" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + # host-protobuf only builds on certain architectures + depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS + depends on BR2_HOST_GCC_AT_LEAST_7 # c++17 for host variant + help + Code generator and runtime libraries to use Protocol Buffers + from pure C (not C++). + + https://github.com/protobuf-c/protobuf-c + +comment "protobuf-c needs a toolchain w/ C++, threads, host gcc >= 7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_HOST_GCC_AT_LEAST_7 + depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS diff --git a/package/protobuf-c/protobuf-c.hash b/package/protobuf-c/protobuf-c.hash new file mode 100644 index 00000000..aafd9841 --- /dev/null +++ b/package/protobuf-c/protobuf-c.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 7b404c63361ed35b3667aec75cc37b54298d56dd2bcf369de3373212cc06fd98 protobuf-c-1.5.0.tar.gz +sha256 ad28bbf89340b86d15aad1ff62c4f4590025d836415307dc66cf0338235cc2f4 LICENSE diff --git a/package/protobuf-c/protobuf-c.mk b/package/protobuf-c/protobuf-c.mk new file mode 100644 index 00000000..2b3e86a1 --- /dev/null +++ b/package/protobuf-c/protobuf-c.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# protobuf-c +# +################################################################################ + +PROTOBUF_C_VERSION = 1.5.0 +PROTOBUF_C_SITE = https://github.com/protobuf-c/protobuf-c/releases/download/v$(PROTOBUF_C_VERSION) +PROTOBUF_C_DEPENDENCIES = host-protobuf-c +HOST_PROTOBUF_C_DEPENDENCIES = host-protobuf host-pkgconf +PROTOBUF_C_MAKE = $(MAKE1) +PROTOBUF_C_CONF_OPTS = --disable-protoc +PROTOBUF_C_INSTALL_STAGING = YES +PROTOBUF_C_LICENSE = BSD-2-Clause +PROTOBUF_C_LICENSE_FILES = LICENSE +PROTOBUF_C_CPE_ID_VALID = YES + +# when building with protoc (from host-protobuf) c++17 is now required +HOST_PROTOBUF_C_CONF_ENV += CXXFLAGS="$(HOST_CXXFLAGS) -std=c++17" + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/protobuf/Config.in b/package/protobuf/Config.in new file mode 100644 index 00000000..47e987fa --- /dev/null +++ b/package/protobuf/Config.in @@ -0,0 +1,59 @@ +# See src/google/protobuf/stubs/platform_macros.h for supported archs. +# +# On PowerPC, the __atomic_*() built-ins for 1-byte, 2-byte and 4-byte +# types are available built-in. However, the __atomic_*() built-ins for +# 8-byte types is implemented via libatomic, so only available since gcc +# 4.8. +# +# In Buildroot, to simplify things, we've decided to simply require gcc +# 4.8 as soon as the architectures has at least one __atomic_*() built-in +# variant that requires libatomic. +# +# Since protobuf most likely only uses the 1, 2 and 4-byte variants, it +# *could* technically build with gcc 4.7. This is probably not a big deal, +# and we can live with requiring gcc 4.8 on PowerPC to build protobuf. +# +# host-protobuf only builds on certain architectures +config BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS + bool + default y if BR2_HOSTARCH = "aarch64" + default y if BR2_HOSTARCH = "arm" + default y if BR2_HOSTARCH = "mips" + default y if BR2_HOSTARCH = "mipsel" + default y if BR2_HOSTARCH = "powerpc" + default y if BR2_HOSTARCH = "powerpc64" + default y if BR2_HOSTARCH = "powerpc64le" + default y if BR2_HOSTARCH = "sparc" + default y if BR2_HOSTARCH = "sparc64" + default y if BR2_HOSTARCH = "x86" + default y if BR2_HOSTARCH = "x86_64" + +config BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + bool + default y if BR2_arm + default y if BR2_i386 + default y if BR2_mipsel + default y if BR2_x86_64 + default y if BR2_sparc64 + default y if BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS + depends on BR2_USE_MMU # fork() + +config BR2_PACKAGE_PROTOBUF + bool "protobuf" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on !BR2_STATIC_LIBS + help + Protocol buffers are Google's language-neutral, + platform-neutral, extensible mechanism for serializing + structured data. + + https://developers.google.com/protocol-buffers + +comment "protobuf needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.8" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \ + || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS diff --git a/package/protobuf/protobuf.hash b/package/protobuf/protobuf.hash new file mode 100644 index 00000000..b092c930 --- /dev/null +++ b/package/protobuf/protobuf.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 6e5e117324afd944dcf67f36cf329843bc1a92229a8cd9bb573d7a83130fea7d LICENSE +sha256 4eab9b524aa5913c6fffb20b2a8abf5ef7f95a80bc0701f3a6dbb4c607f73460 protobuf-cpp-3.21.12.tar.gz diff --git a/package/protobuf/protobuf.mk b/package/protobuf/protobuf.mk new file mode 100644 index 00000000..8cd4e99e --- /dev/null +++ b/package/protobuf/protobuf.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# protobuf +# +################################################################################ + +# When bumping this package, make sure to also verify if the +# python-protobuf package still works and to update its hash, +# as they share the same version/site variables. +PROTOBUF_VERSION = 21.12 +PROTOBUF_SOURCE = protobuf-cpp-3.$(PROTOBUF_VERSION).tar.gz +PROTOBUF_SITE = https://github.com/protocolbuffers/protobuf/releases/download/v$(PROTOBUF_VERSION) +PROTOBUF_LICENSE = BSD-3-Clause +PROTOBUF_LICENSE_FILES = LICENSE +PROTOBUF_CPE_ID_VENDOR = google + +# N.B. Need to use host protoc during cross compilation. +PROTOBUF_DEPENDENCIES = host-protobuf +PROTOBUF_CONF_OPTS = --with-protoc=$(HOST_DIR)/bin/protoc + +PROTOBUF_CXXFLAGS = $(TARGET_CXXFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +PROTOBUF_CXXFLAGS += -O0 +endif + +ifeq ($(BR2_or1k),y) +PROTOBUF_CXXFLAGS += -mcmodel=large +endif + +PROTOBUF_CONF_ENV = CXXFLAGS="$(PROTOBUF_CXXFLAGS)" + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +PROTOBUF_CONF_ENV += LIBS=-latomic +endif + +PROTOBUF_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_ZLIB),y) +PROTOBUF_DEPENDENCIES += zlib +endif + +define PROTOBUF_REMOVE_UNNECESSARY_TARGET_FILES + rm -rf $(TARGET_DIR)/usr/bin/protoc + rm -rf $(TARGET_DIR)/usr/lib/libprotoc.so* +endef + +PROTOBUF_POST_INSTALL_TARGET_HOOKS += PROTOBUF_REMOVE_UNNECESSARY_TARGET_FILES + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/protozero/0001-CMakeLists.txt-protobuf-is-only-needed-for-tests.patch b/package/protozero/0001-CMakeLists.txt-protobuf-is-only-needed-for-tests.patch new file mode 100644 index 00000000..3033e24a --- /dev/null +++ b/package/protozero/0001-CMakeLists.txt-protobuf-is-only-needed-for-tests.patch @@ -0,0 +1,35 @@ +From 1c16d3ffccd9e415c6ea3681f23231cd5184043c Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 16 Feb 2022 00:11:38 +0100 +Subject: [PATCH] CMakeLists.txt: protobuf is only needed for tests + +Don't check for protobuf if tests are disabled. As a side effect, this +will avoid a build failure if clang-tidy and protobuf are found but +tests are disabled + +Fix #109 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/mapbox/protozero/pull/110] +--- + CMakeLists.txt | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index b975d49..df2ca15 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -52,7 +52,9 @@ endif() + # + #----------------------------------------------------------------------------- + +-find_package(Protobuf) ++if(BUILD_TESTING) ++ find_package(Protobuf) ++endif() + + + #----------------------------------------------------------------------------- +-- +2.34.1 + diff --git a/package/protozero/Config.in b/package/protozero/Config.in new file mode 100644 index 00000000..e6347e6f --- /dev/null +++ b/package/protozero/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_PROTOZERO + bool "protozero" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11 + help + Minimalistic protocol buffer decoder and encoder in C++. + Designed for high performance. Suitable for writing zero copy + parsers and encoders with minimal need for run-time allocation + of memory. + Low-level: this is designed to be a building block for writing + a very customized decoder for a stable protobuf schema. If + your protobuf schema is changing frequently or lazy decoding + is not critical for your application then this approach offers + no value: just use the C++ API that can be generated with + the Google Protobufs protoc program. + + https://github.com/mapbox/protozero + +comment "protozero needs a toolchain w/ C++, gcc >= 4.7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 diff --git a/package/protozero/protozero.hash b/package/protozero/protozero.hash new file mode 100644 index 00000000..f0b8e390 --- /dev/null +++ b/package/protozero/protozero.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 27e0017d5b3ba06d646a3ec6391d5ccc8500db821be480aefd2e4ddc3de5ff99 protozero-1.7.1.tar.gz +sha256 1f4d477e3c2d74d8706c8f05437bd86804abe46853b1f233ce1549a4de76fa49 LICENSE.md +sha256 0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594 LICENSE.from_folly diff --git a/package/protozero/protozero.mk b/package/protozero/protozero.mk new file mode 100644 index 00000000..a46e37d6 --- /dev/null +++ b/package/protozero/protozero.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# protozero +# +################################################################################ + +PROTOZERO_VERSION = 1.7.1 +PROTOZERO_SITE = $(call github,mapbox,protozero,v$(PROTOZERO_VERSION)) +PROTOZERO_LICENSE = BSD-2-Clause, Apache-2.0 +PROTOZERO_LICENSE_FILES = LICENSE.md LICENSE.from_folly +PROTOZERO_INSTALL_STAGING = YES + +$(eval $(cmake-package)) diff --git a/package/proxychains-ng/0001-add-configure-check-for-non-POSIX-compliant-getnameinfo-signature.patch b/package/proxychains-ng/0001-add-configure-check-for-non-POSIX-compliant-getnameinfo-signature.patch new file mode 100644 index 00000000..d111667c --- /dev/null +++ b/package/proxychains-ng/0001-add-configure-check-for-non-POSIX-compliant-getnameinfo-signature.patch @@ -0,0 +1,76 @@ +From 07c15a02f6890f56aa0b9341c27fc889956ab114 Mon Sep 17 00:00:00 2001 +From: rofl0r +Date: Tue, 25 Jan 2022 14:51:27 +0000 +Subject: [PATCH] add configure check for non-POSIX compliant getnameinfo + signature + +- glibc < 2.14 uses "unsigned" instead of "int" for flags +- openbsd and freebsd use "size_t" instead of socklen_t for servlen + and nodelen, while still using socklen_t for salen. + +closes #430 + +[Retrieved from: +https://github.com/rofl0r/proxychains-ng/commit/07c15a02f6890f56aa0b9341c27fc889956ab114] +Signed-off-by: Fabrice Fontaine +--- + configure | 16 ++++++++++++++++ + src/core.h | 2 +- + src/libproxychains.c | 4 ++-- + 3 files changed, 19 insertions(+), 3 deletions(-) + +diff --git a/configure b/configure +index 4c8bcbc..0102eb2 100755 +--- a/configure ++++ b/configure +@@ -175,6 +175,22 @@ ishaiku() { + + check_compile 'whether C compiler works' '' 'int main() {return 0;}' || fail 'error: install a C compiler and library' + ++if ! check_compile 'whether getnameinfo() servlen argument is POSIX compliant (socklen_t)' "-DGN_NODELEN_T=socklen_t -DGN_SERVLEN_T=socklen_t -DGN_FLAGS_T=int" \ ++'#define _GNU_SOURCE\n#include \nint getnameinfo(const struct sockaddr *, socklen_t, char *, socklen_t, char *, socklen_t, int);int main() {\nreturn 0;}' ; then ++ # GLIBC < 2.14 ++ if ! check_compile 'whether getnameinfo() flags argument is unsigned' "-DGN_NODELEN_T=socklen_t -DGN_SERVLEN_T=socklen_t -DGN_FLAGS_T=unsigned" \ ++ '#define _GNU_SOURCE\n#include \nint getnameinfo(const struct sockaddr *, socklen_t, char *, socklen_t, char *, socklen_t, unsigned);int main() {\nreturn 0;}' ; then ++ if ! check_compile 'whether getnameinfo() servlen argument is size_t' "-DGN_NODELEN_T=socklen_t -DGN_SERVLEN_T=size_t -DGN_FLAGS_T=int" \ ++ '#define _GNU_SOURCE\n#include \nint getnameinfo(const struct sockaddr *, socklen_t, char *, socklen_t, char *, size_t, int);int main() {\nreturn 0;}' ; then ++ # OpenBSD & FreeBSD ++ if ! check_compile 'whether getnameinfo() servlen and nodelen argument is size_t' "-DGN_NODELEN_T=size_t -DGN_SERVLEN_T=size_t -DGN_FLAGS_T=int" \ ++ '#define _GNU_SOURCE\n#include \nint getnameinfo(const struct sockaddr *, socklen_t, char *, size_t, char *, size_t, int);int main() {\nreturn 0;}' ; then ++ fail "failed to detect getnameinfo signature" ++ fi ++ fi ++ fi ++fi ++ + check_compile 'whether we have GNU-style getservbyname_r()' "-DHAVE_GNU_GETSERVBYNAME_R" \ + '#define _GNU_SOURCE\n#include \nint main() {\nstruct servent *se = 0;struct servent se_buf;char buf[1024];\ngetservbyname_r("foo", (void*) 0, &se_buf, buf, sizeof(buf), &se);\nreturn 0;}' + +diff --git a/src/core.h b/src/core.h +index 31f3003..3045b86 100644 +--- a/src/core.h ++++ b/src/core.h +@@ -109,7 +109,7 @@ typedef int (*getaddrinfo_t)(const char *, const char *, const struct addrinfo * + struct addrinfo **); + + typedef int (*getnameinfo_t) (const struct sockaddr *, socklen_t, char *, +- socklen_t, char *, socklen_t, int); ++ GN_NODELEN_T, char *, GN_SERVLEN_T, GN_FLAGS_T); + + typedef ssize_t (*sendto_t) (int sockfd, const void *buf, size_t len, int flags, + const struct sockaddr *dest_addr, socklen_t addrlen); +diff --git a/src/libproxychains.c b/src/libproxychains.c +index 001ffcd..578ff84 100644 +--- a/src/libproxychains.c ++++ b/src/libproxychains.c +@@ -729,8 +729,8 @@ HOOKFUNC(void, freeaddrinfo, struct addrinfo *res) { + } + + HOOKFUNC(int, getnameinfo, const struct sockaddr *sa, socklen_t salen, +- char *host, socklen_t hostlen, char *serv, +- socklen_t servlen, int flags) ++ char *host, GN_NODELEN_T hostlen, char *serv, ++ GN_SERVLEN_T servlen, GN_FLAGS_T flags) + { + INIT(); + PFUNC(); diff --git a/package/proxychains-ng/Config.in b/package/proxychains-ng/Config.in new file mode 100644 index 00000000..e27283ad --- /dev/null +++ b/package/proxychains-ng/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PROXYCHAINS_NG + bool "proxychains-ng" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + Force any tcp connections to flow through a proxy (or proxy + chain) + + https://github.com/rofl0r/proxychains + +comment "proxychains-ng needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/proxychains-ng/proxychains-ng.hash b/package/proxychains-ng/proxychains-ng.hash new file mode 100644 index 00000000..e9016ffd --- /dev/null +++ b/package/proxychains-ng/proxychains-ng.hash @@ -0,0 +1,4 @@ +# From https://github.com/rofl0r/proxychains-ng/releases/tag/v4.16 +sha512 c4402599043887b1481a46cec8d3ca5fcd2612b46b73a4d4ce025318640cd61b37181ad70236303933103006b313882dc57dc8838172863090f9ce33e9463a8d proxychains-ng-4.16.tar.xz +# Locally computed: +sha256 86728623caeff60e9bcc37e03b432fd191de927eed48a72a3bb4ac4e53fe20df COPYING diff --git a/package/proxychains-ng/proxychains-ng.mk b/package/proxychains-ng/proxychains-ng.mk new file mode 100644 index 00000000..3573cf1f --- /dev/null +++ b/package/proxychains-ng/proxychains-ng.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# proxychains-ng +# +################################################################################ + +PROXYCHAINS_NG_VERSION = 4.16 +PROXYCHAINS_NG_SOURCE = proxychains-ng-$(PROXYCHAINS_NG_VERSION).tar.xz +PROXYCHAINS_NG_SITE = https://github.com/rofl0r/proxychains-ng/releases/download/v$(PROXYCHAINS_NG_VERSION) +PROXYCHAINS_NG_LICENSE = GPL-2.0+ +PROXYCHAINS_NG_LICENSE_FILES = COPYING +PROXYCHAINS_NG_CPE_ID_VALID = YES + +define PROXYCHAINS_NG_CONFIGURE_CMDS + cd $(@D) && \ + $(TARGET_CONFIGURE_OPTS) CPPFLAGS="$(TARGET_CPPFLAGS) -fPIC" \ + ./configure --prefix=/usr --sysconfdir=/etc +endef + +define PROXYCHAINS_NG_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define PROXYCHAINS_NG_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install install-config +endef + +$(eval $(generic-package)) diff --git a/package/pru-software-support/Config.in b/package/pru-software-support/Config.in new file mode 100644 index 00000000..4e34806e --- /dev/null +++ b/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/package/pru-software-support/Config.in.host b/package/pru-software-support/Config.in.host new file mode 100644 index 00000000..d362ac5a --- /dev/null +++ b/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/package/pru-software-support/pru-software-support.hash b/package/pru-software-support/pru-software-support.hash new file mode 100644 index 00000000..c9af9fe2 --- /dev/null +++ b/package/pru-software-support/pru-software-support.hash @@ -0,0 +1,3 @@ +# Locally-calculated hash +sha256 cba9e0bca3abc0041cf7ce6a30af9de440b325cf8c9bcc826485d2f837cb4cf2 pru-software-support-package-v6.0.1.tar.gz +sha256 62a2f56498cd1bac2d4ea6ea1c941affba1e4bb65bfdf2dcffd8e5079fa34399 PRU-Package-v6.1-Manifest.html diff --git a/package/pru-software-support/pru-software-support.mk b/package/pru-software-support/pru-software-support.mk new file mode 100644 index 00000000..d0259c5f --- /dev/null +++ b/package/pru-software-support/pru-software-support.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# pru-software-support +# +################################################################################ + +PRU_SOFTWARE_SUPPORT_VERSION = 6.0.1 +PRU_SOFTWARE_SUPPORT_SITE = https://git.ti.com/cgit/pru-software-support-package/pru-software-support-package/snapshot +PRU_SOFTWARE_SUPPORT_SOURCE = $(PRU_SOFTWARE_SUPPORT_NAME)-package-v$(PRU_SOFTWARE_SUPPORT_VERSION).tar.gz +PRU_SOFTWARE_SUPPORT_LICENSE = BSD-3-Clause, Public Domain +PRU_SOFTWARE_SUPPORT_LICENSE_FILES = PRU-Package-v6.1-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/package/pru-software-support/readme.txt b/package/pru-software-support/readme.txt new file mode 100644 index 00000000..85d7af82 --- /dev/null +++ b/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/package/psmisc/Config.in b/package/psmisc/Config.in new file mode 100644 index 00000000..84e30967 --- /dev/null +++ b/package/psmisc/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PSMISC + bool "psmisc" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_NCURSES + help + Helpful /proc related utilities such as pstree, fuser, and + killall + + https://gitlab.com/psmisc/psmisc diff --git a/package/psmisc/psmisc.hash b/package/psmisc/psmisc.hash new file mode 100644 index 00000000..fe146f90 --- /dev/null +++ b/package/psmisc/psmisc.hash @@ -0,0 +1,6 @@ +# From https://sourceforge.net/projects/psmisc/files/psmisc/ +md5 014f0b5d5ab32478a2c57812ad01e1fb psmisc-23.5.tar.xz +sha1 a16073f459a19288c1ea2b413a84e1b996cab595 psmisc-23.5.tar.xz +# Locally computed: +sha256 dc37ecc2f7e4a90a94956accc6e1c77adb71316b7c9cbd39b26738db0c3ae58b psmisc-23.5.tar.xz +sha256 dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa COPYING diff --git a/package/psmisc/psmisc.mk b/package/psmisc/psmisc.mk new file mode 100644 index 00000000..32291844 --- /dev/null +++ b/package/psmisc/psmisc.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# psmisc +# +################################################################################ + +PSMISC_VERSION = 23.5 +PSMISC_SITE = http://downloads.sourceforge.net/project/psmisc/psmisc +PSMISC_SOURCE = psmisc-$(PSMISC_VERSION).tar.xz +PSMISC_LICENSE = GPL-2.0+ +PSMISC_LICENSE_FILES = COPYING +PSMISC_DEPENDENCIES = ncurses $(TARGET_NLS_DEPENDENCIES) + +ifeq ($(BR2_TOOLCHAIN_HAS_SSP),) +# Don't force -fstack-protector when SSP is not available in toolchain +PSMISC_CONF_OPTS += --disable-harden-flags +endif + +$(eval $(autotools-package)) diff --git a/package/psplash/Config.in b/package/psplash/Config.in new file mode 100644 index 00000000..da99b264 --- /dev/null +++ b/package/psplash/Config.in @@ -0,0 +1,41 @@ +config BR2_PACKAGE_PSPLASH + bool "psplash" + depends on BR2_USE_WCHAR + help + PSplash is a userspace graphical boot splash screen for + mainly embedded Linux devices supporting a 16bpp or 32bpp + framebuffer. It has few dependencies (just libc), supports + basic images and text and handles rotation. Its visual look + is configurable by basic source changes. + + Also included is a 'client' command utility for sending + information to psplash such as boot progress information. + + Start the drawing process with 'psplash -n&' as early as + possible. Note: psplash creates a FIFO in /tmp for + communication with psplash-write. + + Usage: + * Set progress bar to 50 percent: + psplash-write "PROGRESS 50" + + * Display message "foobar" above progress bar: + psplash-write "MSG foobar" + + * Terminate psplash: + psplash-write "QUIT" + + http://git.yoctoproject.org/cgit/cgit.cgi/psplash/ + +if BR2_PACKAGE_PSPLASH + +config BR2_PACKAGE_PSPLASH_IMAGE + string "psplash image" + help + Use a personalized png image as boot splash. + Let it empty if you want to keep the psplash default image. + +endif + +comment "psplash needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/package/psplash/psplash-start.service b/package/psplash/psplash-start.service new file mode 100644 index 00000000..74cbc339 --- /dev/null +++ b/package/psplash/psplash-start.service @@ -0,0 +1,12 @@ +[Unit] +Description=Starts Psplash Boot screen +DefaultDependencies=no +RequiresMountsFor=/run +Before=sysinit.target + +[Service] +Type=exec +ExecStart=/usr/bin/psplash -n + +[Install] +WantedBy=sysinit.target diff --git a/package/psplash/psplash-systemd.service b/package/psplash/psplash-systemd.service new file mode 100644 index 00000000..f89bc5f4 --- /dev/null +++ b/package/psplash/psplash-systemd.service @@ -0,0 +1,12 @@ +[Unit] +Description=Start psplash-systemd progress communication helper +DefaultDependencies=no +After=psplash-start.service +BindsTo=psplash-start.service +RequiresMountsFor=/run + +[Service] +ExecStart=/usr/bin/psplash-systemd + +[Install] +WantedBy=sysinit.target diff --git a/package/psplash/psplash.hash b/package/psplash/psplash.hash new file mode 100644 index 00000000..61514f57 --- /dev/null +++ b/package/psplash/psplash.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 06def825088f44422fad8a885077d917db6f47688457d4a0953c2ff6f6036378 psplash-44afb7506d43cca15582b4c5b90ba5580344d75d-git4.tar.gz +sha256 f9c375a1be4a41f7b70301dd83c91cb89e41567478859b77eef375a52d782505 COPYING diff --git a/package/psplash/psplash.mk b/package/psplash/psplash.mk new file mode 100644 index 00000000..69f9bf38 --- /dev/null +++ b/package/psplash/psplash.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# psplash +# +################################################################################ + +PSPLASH_VERSION = 44afb7506d43cca15582b4c5b90ba5580344d75d +PSPLASH_SITE = https://git.yoctoproject.org/psplash +PSPLASH_SITE_METHOD = git +PSPLASH_LICENSE = GPL-2.0+ +PSPLASH_LICENSE_FILES = COPYING +PSPLASH_AUTORECONF = YES +PSPLASH_DEPENDENCIES = host-gdk-pixbuf host-pkgconf + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +PSPLASH_DEPENDENCIES += systemd +PSPLASH_CONF_OPTS += --with-systemd +else +PSPLASH_CONF_OPTS += --without-systemd +endif + +PSPLASH_IMAGE = $(call qstrip,$(BR2_PACKAGE_PSPLASH_IMAGE)) + +ifneq ($(PSPLASH_IMAGE),) +define PSPLASH_COPY_IMAGE + cp $(PSPLASH_IMAGE) $(@D)/base-images/psplash-poky.png +endef + +PSPLASH_POST_EXTRACT_HOOKS += PSPLASH_COPY_IMAGE +endif + +define PSPLASH_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/psplash/psplash-start.service \ + $(TARGET_DIR)/usr/lib/systemd/system/psplash-start.service + + $(INSTALL) -D -m 644 package/psplash/psplash-systemd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/psplash-systemd.service +endef + +$(eval $(autotools-package)) diff --git a/package/ptm2human/Config.in b/package/ptm2human/Config.in new file mode 100644 index 00000000..3d364394 --- /dev/null +++ b/package/ptm2human/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_PTM2HUMAN_ARCH_SUPPORTS + bool + default y if BR2_arm + default y if BR2_armeb + default y if BR2_aarch64 + default y if BR2_aarch64_be + +config BR2_PACKAGE_PTM2HUMAN + bool "ptm2human" + depends on BR2_PACKAGE_PTM2HUMAN_ARCH_SUPPORTS + help + ptm2human is a decoder for trace data outputted by Program + Trace Macrocell (PTM) and Embedded Trace Macrocell + (ETMv4). It deconstructs ID packets and data packets + from the formatter of ARM Coresight ETB, and then + translates the trace data to a human-readable format. + + https://github.com/hwangcc23/ptm2human diff --git a/package/ptm2human/ptm2human.hash b/package/ptm2human/ptm2human.hash new file mode 100644 index 00000000..d581491b --- /dev/null +++ b/package/ptm2human/ptm2human.hash @@ -0,0 +1,3 @@ +# Computed locally +sha256 4c66e9429dfb92b5f4332b08050db0436511581102d1ec56555eb8229d9c2c74 ptm2human-c8c5e7d5bdacd73114f4f244355e88c7f4e7d64a.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 LICENSE diff --git a/package/ptm2human/ptm2human.mk b/package/ptm2human/ptm2human.mk new file mode 100644 index 00000000..edba21d4 --- /dev/null +++ b/package/ptm2human/ptm2human.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# ptm2human +# +################################################################################ + +PTM2HUMAN_VERSION = c8c5e7d5bdacd73114f4f244355e88c7f4e7d64a +PTM2HUMAN_SITE = $(call github,hwangcc23,ptm2human,$(PTM2HUMAN_VERSION)) +PTM2HUMAN_LICENSE = GPL-2.0 +PTM2HUMAN_LICENSE_FILES = LICENSE + +# Straight out from an non-autoconfigured git tree: +PTM2HUMAN_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/ptpd/Config.in b/package/ptpd/Config.in new file mode 100644 index 00000000..2d87ca31 --- /dev/null +++ b/package/ptpd/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PTPD + bool "ptpd" + help + The PTP daemon (PTPd) implements the Precision Time protocol + (PTP) as defined by the IEEE-1588-2002. + + http://ptpd.sourceforge.net/ diff --git a/package/ptpd/S65ptpd b/package/ptpd/S65ptpd new file mode 100644 index 00000000..89914e96 --- /dev/null +++ b/package/ptpd/S65ptpd @@ -0,0 +1,29 @@ +#!/bin/sh +# +# Start ptpd +# + +case "$1" in + start) + printf "Starting ptpd: " + start-stop-daemon -S -q -x /usr/sbin/ptpd -- -S + if [ $? != 0 ]; then + echo "FAILED" + exit 1 + else + echo "OK" + fi + ;; + stop) + printf "Stopping ptpd: " + start-stop-daemon -K -q -x /usr/sbin/ptpd + echo "OK" + ;; + restart|reload) + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/package/ptpd/ptpd.hash b/package/ptpd/ptpd.hash new file mode 100644 index 00000000..199f93fc --- /dev/null +++ b/package/ptpd/ptpd.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 a7c6ea83bd53da75ae04a7b7a25fe7c597b4e9ff1f93d46f4502e3fa8a2cb950 ptpd-1.1.0.tar.gz +sha256 be69f30947abef91e0bce161005fe56b116b770e459e3e6980279349de47c366 COPYRIGHT diff --git a/package/ptpd/ptpd.mk b/package/ptpd/ptpd.mk new file mode 100644 index 00000000..49587231 --- /dev/null +++ b/package/ptpd/ptpd.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# ptpd +# +################################################################################ + +PTPD_VERSION = 1.1.0 +PTPD_SITE = http://downloads.sourceforge.net/project/ptpd/ptpd/$(PTPD_VERSION) +PTPD_LICENSE = BSD +PTPD_LICENSE_FILES = COPYRIGHT + +define PTPD_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/src +endef + +define PTPD_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -D $(@D)/src/ptpd $(TARGET_DIR)/usr/sbin/ptpd +endef + +define PTPD_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/ptpd/S65ptpd \ + $(TARGET_DIR)/etc/init.d/S65ptpd +endef + +define PTPD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/ptpd/ptpd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/ptpd.service +endef + +$(eval $(generic-package)) diff --git a/package/ptpd/ptpd.service b/package/ptpd/ptpd.service new file mode 100644 index 00000000..c9da3f42 --- /dev/null +++ b/package/ptpd/ptpd.service @@ -0,0 +1,10 @@ +[Unit] +Description=Precision Time Protocol daemon +After=syslog.target network.target + +[Service] +ExecStart=/usr/sbin/ptpd -c +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/ptpd2/0001-musl.patch b/package/ptpd2/0001-musl.patch new file mode 100644 index 00000000..2e214b21 --- /dev/null +++ b/package/ptpd2/0001-musl.patch @@ -0,0 +1,15 @@ +Fix musl build + +Signed-off-by: Bernd Kuhls + +diff -uNr ptpd-ptpd-2.3.1.org/src/dep/net.c ptpd-ptpd-2.3.1/src/dep/net.c +--- ptpd-ptpd-2.3.1.org/src/dep/net.c 2015-06-29 17:13:29.000000000 +0200 ++++ ptpd-ptpd-2.3.1/src/dep/net.c 2016-01-24 00:35:44.509860065 +0100 +@@ -82,7 +82,6 @@ + #ifdef SO_TIMESTAMPING + #include + #include +-#include + #endif /* SO_TIMESTAMPING */ + + /** diff --git a/package/ptpd2/0002-ntp_isc_md5-rename-EVP_MD_CTX-into-PTPD_EVP_MD_CTX.patch b/package/ptpd2/0002-ntp_isc_md5-rename-EVP_MD_CTX-into-PTPD_EVP_MD_CTX.patch new file mode 100644 index 00000000..e655ff33 --- /dev/null +++ b/package/ptpd2/0002-ntp_isc_md5-rename-EVP_MD_CTX-into-PTPD_EVP_MD_CTX.patch @@ -0,0 +1,46 @@ +From af1d16d90ff273413a57cd02689f4fb005403609 Mon Sep 17 00:00:00 2001 +From: Giulio Benetti +Date: Fri, 31 Aug 2018 18:46:56 +0200 +Subject: [PATCH] ntp_isc_md5: rename EVP_MD_CTX into PTPD_EVP_MD_CTX + +EVP_MD_CTX can conflict with openssl that defines a completely different +typedef with same name. + +Since this typedef is used only twice in the entire ptpd, +substitute EVP_MD_CTX with PTPD_EVP_MD_CTX. + +Signed-off-by: Giulio Benetti +--- + src/dep/ntpengine/ntp_isc_md5.c | 2 +- + src/dep/ntpengine/ntp_isc_md5.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/dep/ntpengine/ntp_isc_md5.c b/src/dep/ntpengine/ntp_isc_md5.c +index 850d004..3216de8 100644 +--- a/src/dep/ntpengine/ntp_isc_md5.c ++++ b/src/dep/ntpengine/ntp_isc_md5.c +@@ -262,7 +262,7 @@ MD5authencrypt( + { + u_char digest[64]; + u_int len; +- EVP_MD_CTX ctx; ++ PTPD_EVP_MD_CTX ctx; + pkt[length / 4] = htonl(keyid); + EVP_DigestInit(&ctx); + EVP_DigestUpdate(&ctx, (u_char *)key, (u_int)strlen(key)); +diff --git a/src/dep/ntpengine/ntp_isc_md5.h b/src/dep/ntpengine/ntp_isc_md5.h +index fa6e2ee..236c0e4 100644 +--- a/src/dep/ntpengine/ntp_isc_md5.h ++++ b/src/dep/ntpengine/ntp_isc_md5.h +@@ -80,7 +80,7 @@ isc_md5_final(isc_md5_t *ctx, unsigned char *digest); + # define MD5Init(c) isc_md5_init(c) + # define MD5Update(c, p, s) isc_md5_update(c, p, s) + # define MD5Final(d, c) isc_md5_final((c), (d)) /* swapped */ +- typedef MD5_CTX EVP_MD_CTX; ++ typedef MD5_CTX PTPD_EVP_MD_CTX; + # define EVP_DigestInit(c) MD5Init(c) + # define EVP_DigestUpdate(c, p, s) MD5Update(c, p, s) + # define EVP_DigestFinal(c, d, pdl) \ +-- +2.14.4 + diff --git a/package/ptpd2/0003-Solve-issue-25-Removing-type-U64-from-net-snmp-relat.patch b/package/ptpd2/0003-Solve-issue-25-Removing-type-U64-from-net-snmp-relat.patch new file mode 100644 index 00000000..f952755d --- /dev/null +++ b/package/ptpd2/0003-Solve-issue-25-Removing-type-U64-from-net-snmp-relat.patch @@ -0,0 +1,28 @@ +From 84157b11e8f27318f7291823c657f6313c3b60af Mon Sep 17 00:00:00 2001 +From: Jan Breuer +Date: Tue, 12 Jul 2016 18:07:08 +0200 +Subject: [PATCH] Solve issue #25 - Removing type U64 from net-snmp related + code + +[Thomas: Backport to 2.3.1.] +Signed-off-by: Thomas Petazzoni +--- + src/dep/snmp.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/dep/snmp.c b/src/dep/snmp.c +index 5c08aaa..3086c86 100644 +--- a/src/dep/snmp.c ++++ b/src/dep/snmp.c +@@ -221,7 +221,7 @@ snmpHeaderIndexBest(struct snmpHeaderIndex *idx) + + #define SNMP_LOCAL_VARIABLES \ + static unsigned long long_ret; \ +- static U64 counter64_ret; \ ++ static struct counter64 counter64_ret; \ + static uint32_t ipaddr; \ + Integer64 bigint; \ + struct snmpHeaderIndex idx; \ +-- +2.14.4 + diff --git a/package/ptpd2/Config.in b/package/ptpd2/Config.in new file mode 100644 index 00000000..406276af --- /dev/null +++ b/package/ptpd2/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PTPD2 + bool "ptpd2" + select BR2_PACKAGE_LIBPCAP + help + The PTP daemon (PTPd) implements the Precision Time protocol + (PTP) as defined by the IEEE-1588-2008. + + https://github.com/ptpd/ptpd diff --git a/package/ptpd2/S65ptpd2 b/package/ptpd2/S65ptpd2 new file mode 100644 index 00000000..f815cb5a --- /dev/null +++ b/package/ptpd2/S65ptpd2 @@ -0,0 +1,29 @@ +#!/bin/sh +# +# Start ptpd2 +# + +case "$1" in + start) + printf "Starting ptpd2: " + start-stop-daemon -S -q -x /usr/sbin/ptpd2 -- -g + if [ $? != 0 ]; then + echo "FAILED" + exit 1 + else + echo "OK" + fi + ;; + stop) + printf "Stopping ptpd2: " + start-stop-daemon -K -q -x /usr/sbin/ptpd2 + echo "OK" + ;; + restart|reload) + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/package/ptpd2/ptpd2.hash b/package/ptpd2/ptpd2.hash new file mode 100644 index 00000000..b29ce2a0 --- /dev/null +++ b/package/ptpd2/ptpd2.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 267ad61d09d97069acec5d4878dceda20d0ddbebd27557d80230847848cee6c2 ptpd2-2.3.1.tar.gz +sha256 5e101ac565a8e74ef4efbf7e0c95ef9333e00618c05dbf5fb4ed50a5bab1ff09 COPYRIGHT diff --git a/package/ptpd2/ptpd2.mk b/package/ptpd2/ptpd2.mk new file mode 100644 index 00000000..0de33646 --- /dev/null +++ b/package/ptpd2/ptpd2.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# ptpd2 +# +################################################################################ + +PTPD2_VERSION = 2.3.1 +PTPD2_SITE = $(call github,ptpd,ptpd,ptpd-$(PTPD2_VERSION)) +PTPD2_DEPENDENCIES = libpcap +PTPD2_CONF_OPTS = --with-pcap-config=$(STAGING_DIR)/usr/bin/pcap-config +# configure not shipped +PTPD2_AUTORECONF = YES +PTPD2_LICENSE = BSD-2-Clause +PTPD2_LICENSE_FILES = COPYRIGHT + +ifeq ($(BR2_STATIC_LIBS),y) +PTPD2_CONF_OPTS += LIBS="`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`" +endif + +ifeq ($(BR2_PACKAGE_NETSNMP),y) +PTPD2_CONF_ENV += ac_cv_path_PATH_NET_SNMP_CONFIG=$(STAGING_DIR)/usr/bin/net-snmp-config +PTPD2_DEPENDENCIES += netsnmp +else +PTPD2_CONF_OPTS += --disable-snmp +endif + +define PTPD2_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/ptpd2/S65ptpd2 \ + $(TARGET_DIR)/etc/init.d/S65ptpd2 +endef + +define PTPD2_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/ptpd2/ptpd2.service \ + $(TARGET_DIR)/usr/lib/systemd/system/ptpd2.service +endef + +$(eval $(autotools-package)) diff --git a/package/ptpd2/ptpd2.service b/package/ptpd2/ptpd2.service new file mode 100644 index 00000000..66e71ce0 --- /dev/null +++ b/package/ptpd2/ptpd2.service @@ -0,0 +1,10 @@ +[Unit] +Description=Precision Time Protocol daemon +After=syslog.target network.target + +[Service] +ExecStart=/usr/sbin/ptpd2 -C -g +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/pugixml/Config.in b/package/pugixml/Config.in new file mode 100644 index 00000000..d5a3cb3e --- /dev/null +++ b/package/pugixml/Config.in @@ -0,0 +1,45 @@ +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 + +if BR2_PACKAGE_PUGIXML + +config BR2_PACKAGE_PUGIXML_XPATH_SUPPORT + bool "Enable XPath support" + default y + help + When disabled, both XPath interfaces and XPath implementation + are excluded from compilation. This option is provided in case + you do not need XPath functionality and need to save code + space. + +config BR2_PACKAGE_PUGIXML_COMPACT + bool "Enable compact mode" + help + Activates a different internal representation of document + storage that is much more memory efficient for documents with + a lot of markup (i.e. nodes and attributes), but is slightly + slower to parse and access. + + http://pugixml.org/docs/manual.html#dom.memory.compact + +endif + +comment "pugixml needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/pugixml/pugixml.hash b/package/pugixml/pugixml.hash new file mode 100644 index 00000000..2446788d --- /dev/null +++ b/package/pugixml/pugixml.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 2f10e276870c64b1db6809050a75e11a897a8d7456c4be5c6b2e35a11168a015 pugixml-1.14.tar.gz +sha256 01e13f39d058cca09968f18d423912a18f8bf61b9161c65f8e5bcc418a8aba28 LICENSE.md diff --git a/package/pugixml/pugixml.mk b/package/pugixml/pugixml.mk new file mode 100644 index 00000000..3935526a --- /dev/null +++ b/package/pugixml/pugixml.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# pugixml +# +################################################################################ + +PUGIXML_VERSION = 1.14 +PUGIXML_SITE = https://github.com/zeux/pugixml/releases/download/v$(PUGIXML_VERSION) +PUGIXML_LICENSE = MIT +PUGIXML_LICENSE_FILES = LICENSE.md +PUGIXML_CPE_ID_VALID = YES + +PUGIXML_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_PUGIXML_XPATH_SUPPORT),y) +PUGIXML_CONF_OPTS += -DPUGIXML_NO_XPATH=OFF +else +PUGIXML_CONF_OPTS += -DPUGIXML_NO_XPATH=ON +endif + +ifeq ($(BR2_PACKAGE_PUGIXML_COMPACT),y) +PUGIXML_CONF_OPTS += -DPUGIXML_COMPACT=ON +else +PUGIXML_CONF_OPTS += -DPUGIXML_COMPACT=OFF +endif + +# Pugixml will automatically enable 'long long' support on C++11 compilers, +# which means gcc 4.8+. As gcc always supports the 'long long' type, +# force-enable this option to support older gcc versions. See also: +# https://gcc.gnu.org/onlinedocs/gcc/Long-Long.html +PUGIXML_BUILD_DEFINES += PUGIXML_HAS_LONG_LONG +HOST_PUGIXML_BUILD_DEFINES += PUGIXML_HAS_LONG_LONG + +PUGIXML_CONF_OPTS += -DPUGIXML_BUILD_DEFINES="$(subst $(space),;,$(PUGIXML_BUILD_DEFINES))" + +HOST_PUGIXML_CONF_OPTS += \ + -DBUILD_PKGCONFIG=ON \ + -DPUGIXML_BUILD_DEFINES="$(subst $(space),;,$(HOST_PUGIXML_BUILD_DEFINES))" + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/pulseaudio/0001-shm.c-use-_Static_assert-instead-of-static_assert-fo.patch b/package/pulseaudio/0001-shm.c-use-_Static_assert-instead-of-static_assert-fo.patch new file mode 100644 index 00000000..8cdc23e1 --- /dev/null +++ b/package/pulseaudio/0001-shm.c-use-_Static_assert-instead-of-static_assert-fo.patch @@ -0,0 +1,32 @@ +From fb39f9600d464ce761917c0e787b940097f6024c Mon Sep 17 00:00:00 2001 +From: Nicolas Cavallari +Date: Thu, 23 Jun 2022 16:52:49 +0200 +Subject: [PATCH] shm.c: use _Static_assert instead of static_assert for uclibc + +Both are C11 constructs. The first one is defined by the compiler in +gnu11 mode, but the second one should be a macro defined in assert.h + +The macro exists in glibc >= 2.16 and musl >= 1.1.10 but not in +uclibc 1.0.41. It is expected to be present in uclibc 1.0.42. + +Signed-off-by: Nicolas Cavallari +--- + src/pulsecore/shm.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/pulsecore/shm.c b/src/pulsecore/shm.c +index e464f6bce..5220cc90d 100644 +--- a/src/pulsecore/shm.c ++++ b/src/pulsecore/shm.c +@@ -94,7 +94,7 @@ struct shm_marker { + }; + + // Ensure struct is appropriately packed +-static_assert(sizeof(struct shm_marker) == 8 * 5, "`struct shm_marker` is not tightly packed"); ++_Static_assert(sizeof(struct shm_marker) == 8 * 5, "`struct shm_marker` is not tightly packed"); + + static inline size_t shm_marker_size(pa_mem_type_t type) { + if (type == PA_MEM_TYPE_SHARED_POSIX) +-- +2.36.1 + diff --git a/package/pulseaudio/Config.in b/package/pulseaudio/Config.in new file mode 100644 index 00000000..337a64bf --- /dev/null +++ b/package/pulseaudio/Config.in @@ -0,0 +1,50 @@ +config BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC + bool + default y if BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS || \ + BR2_TOOLCHAIN_HAS_SYNC_4 + +config BR2_PACKAGE_PULSEAUDIO_ENABLE_ATOMIC + bool + select BR2_PACKAGE_LIBATOMIC_OPS if !BR2_TOOLCHAIN_HAS_SYNC_4 + +config BR2_PACKAGE_PULSEAUDIO + bool "pulseaudio" + depends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_ALSA_LIB_PCM if BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_MIXER if BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_UCM if BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_AUDIO if BR2_PACKAGE_BLUEZ5_UTILS # runtime + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBTOOL + select BR2_PACKAGE_LIBSNDFILE + select BR2_PACKAGE_PULSEAUDIO_ENABLE_ATOMIC + help + PulseAudio is a sound system for POSIX OSes, meaning that it + is a proxy for your sound applications. It allows you to do + advanced operations on your sound data as it passes between + your application and your hardware. Things like transferring + the audio to a different machine, changing the sample format + or channel count and mixing several sounds into one are + easily achieved using a sound server. + + http://pulseaudio.org + +if BR2_PACKAGE_PULSEAUDIO + +config BR2_PACKAGE_PULSEAUDIO_DAEMON + bool "start as a system daemon" + help + PulseAudio can be started as a system daemon. This is not the + recommended way of using PulseAudio unless you are building a + headless system. + +endif + +comment "pulseaudio needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/pulseaudio/S50pulseaudio b/package/pulseaudio/S50pulseaudio new file mode 100644 index 00000000..ea343a71 --- /dev/null +++ b/package/pulseaudio/S50pulseaudio @@ -0,0 +1,46 @@ +#!/bin/sh +# +# Starts pulseaudio. +# + + +start() { + printf "Starting pulseaudio: " + umask 077 + /usr/bin/pulseaudio \ + --system \ + --daemonize \ + --disallow-module-loading \ + --disallow-exit \ + --exit-idle-time=-1 \ + --use-pid-file \ + --disable-shm + echo "OK" +} +stop() { + printf "Stopping pulseaudio: " + PULSE_RUNTIME_PATH=/var/run/pulse /usr/bin/pulseaudio --kill + echo "OK" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? + diff --git a/package/pulseaudio/pulseaudio.hash b/package/pulseaudio/pulseaudio.hash new file mode 100644 index 00000000..67f6cc6e --- /dev/null +++ b/package/pulseaudio/pulseaudio.hash @@ -0,0 +1,6 @@ +# From https://lists.freedesktop.org/archives/pulseaudio-discuss/2024-January/032426.html +sha256 053794d6671a3e397d849e478a80b82a63cb9d8ca296bd35b73317bb5ceb87b5 pulseaudio-17.0.tar.xz +# Locally computed +sha256 c38aee9e3c8c4d5d594ff548a1be05453023016d6286931f6512db215ec1fd42 GPL +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 LGPL +sha256 a1064b9838b6b4feee61eaeb0925da4b4834c984b77716558860c4294ed6c015 LICENSE diff --git a/package/pulseaudio/pulseaudio.mk b/package/pulseaudio/pulseaudio.mk new file mode 100644 index 00000000..254e0534 --- /dev/null +++ b/package/pulseaudio/pulseaudio.mk @@ -0,0 +1,217 @@ +################################################################################ +# +# pulseaudio +# +################################################################################ + +PULSEAUDIO_VERSION = 17.0 +PULSEAUDIO_SOURCE = pulseaudio-$(PULSEAUDIO_VERSION).tar.xz +PULSEAUDIO_SITE = https://freedesktop.org/software/pulseaudio/releases +PULSEAUDIO_INSTALL_STAGING = YES +PULSEAUDIO_LICENSE = LGPL-2.1+ (specific license for modules, see LICENSE file) +PULSEAUDIO_LICENSE_FILES = LICENSE GPL LGPL +PULSEAUDIO_CPE_ID_VENDOR = pulseaudio +PULSEAUDIO_SELINUX_MODULES = pulseaudio xdg +PULSEAUDIO_CONF_OPTS = \ + -Ddoxygen=false \ + -Dlegacy-database-entry-format=false \ + -Dman=false \ + -Drunning-from-build-tree=false \ + -Dtests=false + +PULSEAUDIO_DEPENDENCIES = \ + host-pkgconf libtool libsndfile libglib2 \ + $(TARGET_NLS_DEPENDENCIES) + +PULSEAUDIO_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) + +ifeq ($(BR2_PACKAGE_AVAHI_LIBAVAHI_CLIENT),y) +PULSEAUDIO_CONF_OPTS += -Davahi=enabled +PULSEAUDIO_DEPENDENCIES += avahi +else +PULSEAUDIO_CONF_OPTS += -Davahi=disabled +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +PULSEAUDIO_CONF_OPTS += -Ddbus=enabled +PULSEAUDIO_DEPENDENCIES += dbus +else +PULSEAUDIO_CONF_OPTS += -Ddbus=disabled +endif + +ifeq ($(BR2_PACKAGE_FFTW_SINGLE),y) +PULSEAUDIO_CONF_OPTS += -Dfftw=enabled +PULSEAUDIO_DEPENDENCIES += fftw-single +else +PULSEAUDIO_CONF_OPTS += -Dfftw=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBSAMPLERATE),y) +PULSEAUDIO_CONF_OPTS += -Dsamplerate=enabled +PULSEAUDIO_DEPENDENCIES += libsamplerate +else +PULSEAUDIO_CONF_OPTS += -Dsamplerate=disabled +endif + +ifeq ($(BR2_PACKAGE_GDBM),y) +PULSEAUDIO_CONF_OPTS += -Ddatabase=gdbm +PULSEAUDIO_DEPENDENCIES += gdbm +else +PULSEAUDIO_CONF_OPTS += -Ddatabase=simple +endif + +ifeq ($(BR2_PACKAGE_JACK2),y) +PULSEAUDIO_CONF_OPTS += -Djack=enabled +PULSEAUDIO_DEPENDENCIES += jack2 +else +PULSEAUDIO_CONF_OPTS += -Djack=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBATOMIC_OPS),y) +PULSEAUDIO_DEPENDENCIES += libatomic_ops +ifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y) +PULSEAUDIO_CFLAGS = $(TARGET_CFLAGS) -DAO_NO_SPARC_V9 +endif +endif + +ifeq ($(BR2_PACKAGE_LIRC_TOOLS),y) +PULSEAUDIO_DEPENDENCIES += lirc-tools +PULSEAUDIO_CONF_OPTS += -Dlirc=enabled +else +PULSEAUDIO_CONF_OPTS += -Dlirc=disabled +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +PULSEAUDIO_CONF_OPTS += -Dopenssl=enabled +PULSEAUDIO_DEPENDENCIES += openssl +else +PULSEAUDIO_CONF_OPTS += -Dopenssl=disabled +endif + +ifeq ($(BR2_PACKAGE_ORC),y) +PULSEAUDIO_DEPENDENCIES += orc +PULSEAUDIO_CONF_ENV += ORCC=$(HOST_DIR)/bin/orcc +PULSEAUDIO_CONF_OPTS += -Dorc=enabled +else +PULSEAUDIO_CONF_OPTS += -Dorc=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +PULSEAUDIO_DEPENDENCIES += libcap +endif + +# gtk3 support needs X11 backend +ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) +PULSEAUDIO_DEPENDENCIES += libgtk3 +PULSEAUDIO_CONF_OPTS += -Dgtk=enabled +else +PULSEAUDIO_CONF_OPTS += -Dgtk=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBSOXR),y) +PULSEAUDIO_CONF_OPTS += -Dsoxr=enabled +PULSEAUDIO_DEPENDENCIES += libsoxr +else +PULSEAUDIO_CONF_OPTS += -Dsoxr=disabled +endif + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS)$(BR2_PACKAGE_SBC),yy) +PULSEAUDIO_CONF_OPTS += -Dbluez5=enabled +PULSEAUDIO_DEPENDENCIES += bluez5_utils sbc +else +PULSEAUDIO_CONF_OPTS += -Dbluez5=disabled +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +PULSEAUDIO_CONF_OPTS += -Dudev=enabled +PULSEAUDIO_DEPENDENCIES += udev +else +PULSEAUDIO_CONF_OPTS += -Dudev=disabled +endif + +ifeq ($(BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING),y) +PULSEAUDIO_CONF_OPTS += -Dwebrtc-aec=enabled +PULSEAUDIO_DEPENDENCIES += webrtc-audio-processing +else +PULSEAUDIO_CONF_OPTS += -Dwebrtc-aec=disabled +endif + +# our Config.in makes sure that all needed alsa-lib features are +# enabled +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +PULSEAUDIO_DEPENDENCIES += alsa-lib +PULSEAUDIO_CONF_OPTS += -Dalsa=enabled +else +PULSEAUDIO_CONF_OPTS += -Dalsa=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBXCB)$(BR2_PACKAGE_XLIB_LIBSM)$(BR2_PACKAGE_XLIB_LIBXTST),yyy) +PULSEAUDIO_DEPENDENCIES += libxcb xlib_libSM xlib_libXtst + +# .desktop file generation needs nls support, so fake it for !locale builds +# https://bugs.freedesktop.org/show_bug.cgi?id=54658 +ifeq ($(BR2_SYSTEM_ENABLE_NLS),) +define PULSEAUDIO_FIXUP_DESKTOP_FILES + cp $(@D)/src/daemon/pulseaudio.desktop.in \ + $(@D)/src/daemon/pulseaudio.desktop +endef +PULSEAUDIO_POST_PATCH_HOOKS += PULSEAUDIO_FIXUP_DESKTOP_FILES +endif + +else +PULSEAUDIO_CONF_OPTS += -Dx11=disabled +endif + +# This is not a mistake: the option is called speex, but what it +# really needs is speexdsp +ifeq ($(BR2_PACKAGE_SPEEXDSP),y) +PULSEAUDIO_CONF_OPTS += -Dspeex=enabled +PULSEAUDIO_DEPENDENCIES += speexdsp +else +PULSEAUDIO_CONF_OPTS += -Dspeex=disabled +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +PULSEAUDIO_CONF_OPTS += -Dsystemd=enabled +PULSEAUDIO_DEPENDENCIES += systemd +else +PULSEAUDIO_CONF_OPTS += -Dsystemd=disabled +endif + +ifeq ($(BR2_PACKAGE_VALGRIND),y) +PULSEAUDIO_CONF_OPTS += -Dvalgrind=enabled +PULSEAUDIO_DEPENDENCIES += valgrind +else +PULSEAUDIO_CONF_OPTS += -Dvalgrind=disabled +endif + +# ConsoleKit module init failure breaks user daemon startup +define PULSEAUDIO_REMOVE_CONSOLE_KIT + rm -f $(TARGET_DIR)/usr/lib/pulse-$(PULSEAUDIO_VERSION)/modules/module-console-kit.so +endef + +define PULSEAUDIO_REMOVE_VALA + rm -rf $(TARGET_DIR)/usr/share/vala +endef + +PULSEAUDIO_POST_INSTALL_TARGET_HOOKS += PULSEAUDIO_REMOVE_VALA \ + PULSEAUDIO_REMOVE_CONSOLE_KIT + +ifeq ($(BR2_PACKAGE_PULSEAUDIO_DAEMON),y) +define PULSEAUDIO_USERS + pulse -1 pulse -1 * /var/run/pulse - audio,pulse-access +endef + +define PULSEAUDIO_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/pulseaudio/S50pulseaudio \ + $(TARGET_DIR)/etc/init.d/S50pulseaudio +endef + +define PULSEAUDIO_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/pulseaudio/pulseaudio.service \ + $(TARGET_DIR)/usr/lib/systemd/system/pulseaudio.service +endef + +endif + +$(eval $(meson-package)) diff --git a/package/pulseaudio/pulseaudio.service b/package/pulseaudio/pulseaudio.service new file mode 100644 index 00000000..fc82f033 --- /dev/null +++ b/package/pulseaudio/pulseaudio.service @@ -0,0 +1,11 @@ +[Unit] +Description=PulseAudio Sound System +After=syslog.target + +[Service] +UMask=077 +ExecStart=/usr/bin/pulseaudio --system --daemonize=no +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/pulseview/0001-Replace-obsolete-deprecated-Qt-methods.patch b/package/pulseview/0001-Replace-obsolete-deprecated-Qt-methods.patch new file mode 100644 index 00000000..24fde677 --- /dev/null +++ b/package/pulseview/0001-Replace-obsolete-deprecated-Qt-methods.patch @@ -0,0 +1,137 @@ +From 01de3217e14b52e44356185729f804460147c85c Mon Sep 17 00:00:00 2001 +From: Valentin Ochs +Date: Sat, 20 Jun 2020 16:01:27 +0200 +Subject: [PATCH] Replace obsolete/deprecated Qt methods + +[Thomas: Backport from upstream commit +ae726b70a7ada9a4be5808e00f0c951318479684, one conflict manually +resolved in pv/util.cpp.] +Signed-off-by: Thomas Petazzoni +[Fabrice: restore original patch in pv/util.cpp for 0.4.2] +Signed-off-by: Fabrice Fontaine +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + pv/util.cpp | 21 +++++++++++++++++++-- + pv/util.hpp | 10 ++++++++++ + pv/views/trace/decodetrace.cpp | 3 ++- + pv/views/trace/ruler.cpp | 2 +- + pv/widgets/timestampspinbox.cpp | 2 +- + 5 files changed, 33 insertions(+), 5 deletions(-) + +diff --git a/pv/util.cpp b/pv/util.cpp +index 9a9a5065a2e1..b0c29f304287 100644 +--- a/pv/util.cpp ++++ b/pv/util.cpp +@@ -137,7 +137,7 @@ QString format_time_si(const Timestamp& v, SIPrefix prefix, + QString s; + QTextStream ts(&s); + if (sign && !v.is_zero()) +- ts << forcesign; ++ ts.setNumberFlags(ts.numberFlags() | QTextStream::ForceSign); + ts << qSetRealNumberPrecision(precision) << (v * multiplier); + ts << ' ' << prefix << unit; + +@@ -175,7 +175,7 @@ QString format_value_si(double v, SIPrefix prefix, unsigned precision, + QString s; + QTextStream ts(&s); + if (sign && (v != 0)) +- ts << forcesign; ++ ts.setNumberFlags(ts.numberFlags() | QTextStream::ForceSign); + ts.setRealNumberNotation(QTextStream::FixedNotation); + ts.setRealNumberPrecision(precision); + ts << (v * multiplier) << ' ' << prefix << unit; +@@ -285,5 +285,22 @@ vector split_string(string text, string separator) + return result; + } + ++/** ++ * Return the width of a string in a given font. ++ * ++ * @param[in] metric metrics of the font ++ * @param[in] string the string whose width should be determined ++ * ++ * @return width of the string in pixels ++ */ ++std::streamsize text_width(const QFontMetrics &metric, const QString &string) ++{ ++#if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0) ++ return metric.horizontalAdvance(string); ++#else ++ return metric.width(string); ++#endif ++} ++ + } // namespace util + } // namespace pv +diff --git a/pv/util.hpp b/pv/util.hpp +index e1640c4a374d..a6cdfdcad4d9 100644 +--- a/pv/util.hpp ++++ b/pv/util.hpp +@@ -30,6 +30,7 @@ + + #include + #include ++#include + + using std::string; + using std::vector; +@@ -138,6 +139,15 @@ QString format_time_minutes(const Timestamp& t, signed precision = 0, + + vector split_string(string text, string separator); + ++/** ++ * Return the width of a string in a given font. ++ * @param[in] metric metrics of the font ++ * @param[in] string the string whose width should be determined ++ * ++ * @return width of the string in pixels ++ */ ++std::streamsize text_width(const QFontMetrics &metric, const QString &string); ++ + } // namespace util + } // namespace pv + +diff --git a/pv/views/trace/decodetrace.cpp b/pv/views/trace/decodetrace.cpp +index 1cc89feb67ae..0347b3327b27 100644 +--- a/pv/views/trace/decodetrace.cpp ++++ b/pv/views/trace/decodetrace.cpp +@@ -164,7 +164,8 @@ DecodeTrace::DecodeTrace(pv::Session &session, + + // Determine shortest string we want to see displayed in full + QFontMetrics m(QApplication::font()); +- min_useful_label_width_ = m.width("XX"); // e.g. two hex characters ++ // e.g. two hex characters ++ min_useful_label_width_ = util::text_width(m, "XX"); + + default_row_height_ = (ViewItemPaintParams::text_height() * 6) / 4; + annotation_height_ = (ViewItemPaintParams::text_height() * 5) / 4; +diff --git a/pv/views/trace/ruler.cpp b/pv/views/trace/ruler.cpp +index 555794fc42c6..83ffed281b5f 100644 +--- a/pv/views/trace/ruler.cpp ++++ b/pv/views/trace/ruler.cpp +@@ -283,7 +283,7 @@ void Ruler::paintEvent(QPaintEvent*) + const int rightedge = width(); + const int x_tick = tick.first; + if ((x_tick > leftedge) && (x_tick < rightedge)) { +- const int x_left_bound = QFontMetrics(font()).width(tick.second) / 2; ++ const int x_left_bound = util::text_width(QFontMetrics(font()), tick.second) / 2; + const int x_right_bound = rightedge - x_left_bound; + const int x_legend = min(max(x_tick, x_left_bound), x_right_bound); + p.drawText(x_legend, ValueMargin, 0, text_height, +diff --git a/pv/widgets/timestampspinbox.cpp b/pv/widgets/timestampspinbox.cpp +index fea8175e8e00..01424a5b7837 100644 +--- a/pv/widgets/timestampspinbox.cpp ++++ b/pv/widgets/timestampspinbox.cpp +@@ -76,7 +76,7 @@ QSize TimestampSpinBox::minimumSizeHint() const + { + const QFontMetrics fm(fontMetrics()); + const int l = round(value_).str().size() + precision_ + 10; +- const int w = fm.width(QString(l, '0')); ++ const int w = util::text_width(fm, QString(l, '0')); + const int h = lineEdit()->minimumSizeHint().height(); + return QSize(w, h); + } +-- +2.43.0 + diff --git a/package/pulseview/0002-Fix-broken-build-due-to-C-template-behind-C-linkage.patch b/package/pulseview/0002-Fix-broken-build-due-to-C-template-behind-C-linkage.patch new file mode 100644 index 00000000..16d4cfdb --- /dev/null +++ b/package/pulseview/0002-Fix-broken-build-due-to-C-template-behind-C-linkage.patch @@ -0,0 +1,58 @@ +From ed643f0b4ac587204a5243451cda181ee1405d62 Mon Sep 17 00:00:00 2001 +From: =?utf8?q?Stefan=20Br=C3=BCns?= +Date: Wed, 28 Apr 2021 02:14:47 +0200 +Subject: [PATCH] Fix broken build due to C++ template behind C linkage + +glib/gatomic.h since 2.68 includes type_traits, which causes a compilation +error: +In file included from /usr/include/glib-2.0/glib/gatomic.h:31, + from /usr/include/glib-2.0/glib/gthread.h:32, + from /usr/include/glib-2.0/glib/gasyncqueue.h:32, + from /usr/include/glib-2.0/glib.h:32, + from /usr/include/libsigrokdecode/libsigrokdecode.h:25, + from /home/abuild/rpmbuild/BUILD/pulseview-0.4.2/pv/data/decode/annotation.cpp:21: +/usr/include/c++/10/type_traits:2308:3: error: template with C linkage +2308 | template + +As libsigrokdecode.h declares extern C linkage itself where necessary, +remove it from pulseviews include statements from the last two occasions. + +[Retrieved from: +https://sigrok.org/gitweb/?p=pulseview.git;a=commit;h=ed643f0b4ac587204a5243451cda181ee1405d62] +Signed-off-by: Fabrice Fontaine +--- + pv/data/decode/annotation.cpp | 2 -- + pv/views/trace/decodetrace.cpp | 2 -- + 2 files changed, 4 deletions(-) + +diff --git a/pv/data/decode/annotation.cpp b/pv/data/decode/annotation.cpp +index 7f233478..f8a5c47b 100644 +--- a/pv/data/decode/annotation.cpp ++++ b/pv/data/decode/annotation.cpp +@@ -17,9 +17,7 @@ + * along with this program; if not, see . + */ + +-extern "C" { + #include +-} + + #include + #include +diff --git a/pv/views/trace/decodetrace.cpp b/pv/views/trace/decodetrace.cpp +index 409f1d28..888064d0 100644 +--- a/pv/views/trace/decodetrace.cpp ++++ b/pv/views/trace/decodetrace.cpp +@@ -17,9 +17,7 @@ + * along with this program; if not, see . + */ + +-extern "C" { + #include +-} + + #include + #include +-- +2.24.0.rc2 + diff --git a/package/pulseview/0003-Support-glibmm-2.68.patch b/package/pulseview/0003-Support-glibmm-2.68.patch new file mode 100644 index 00000000..558699a6 --- /dev/null +++ b/package/pulseview/0003-Support-glibmm-2.68.patch @@ -0,0 +1,91 @@ +From cbdd970fa4a805cefcad2e692df204bfceb46e16 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 30 Dec 2021 16:19:46 +0100 +Subject: [PATCH] Support glibmm 2.68 + +Support glibmm 2.68 which has been released one year ago and is the +first stable release in the glibmm-2.68 ABI series: +https://gitlab.gnome.org/GNOME/glibmm/-/blob/2.68.2/NEWS + +C++17 support is mandatory with glibmm 2.68 + +Signed-off-by: Fabrice Fontaine +Upstream: not sent yet +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + CMakeLists.txt | 23 +++++++++++++++++++---- + INSTALL | 2 +- + 2 files changed, 20 insertions(+), 5 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index c29fa283bcb6..e739d5fccaa7 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -75,7 +75,14 @@ add_subdirectory(manual) + #------------------------------------------------------------------------------- + + list(APPEND PKGDEPS glib-2.0>=2.28.0) +-list(APPEND PKGDEPS glibmm-2.4>=2.28.0) ++ ++set(LIBSR_GLIBMM "glibmm-2.4>=2.28.0") ++find_package(PkgConfig) ++pkg_check_modules(LIBSRGLIBMM24 ${LIBSR_GLIBMM}) ++if(NOT LIBSRGLIBMM24_FOUND) ++ set(LIBSR_GLIBMM "glibmm-2.68>=2.68.0") ++endif() ++list(APPEND PKGDEPS ${LIBSR_GLIBMM}) + + if(ENABLE_FLOW) + list(APPEND PKGDEPS gstreamermm-1.0>=1.8.0) +@@ -93,7 +100,6 @@ if(ANDROID) + list(APPEND PKGDEPS libsigrokandroidutils>=0.1.0) + endif() + +-find_package(PkgConfig) + pkg_check_modules(LIBSRCXX ${LIBSR_CXX_BINDING}) + if(NOT LIBSRCXX_FOUND OR NOT LIBSRCXX_VERSION) + message(FATAL_ERROR "libsigrok C++ bindings missing, check libsigrok's 'configure' output (missing dependencies?)") +@@ -194,7 +200,11 @@ memaccess_check_unaligned_le(HAVE_UNALIGNED_LITTLE_ENDIAN_ACCESS) + set(PV_TITLE PulseView) + set(PV_VERSION_STRING "0.4.2") + +-set(PV_GLIBMM_VERSION ${PKGDEPS_glibmm-2.4_VERSION}) ++if(LIBSRGLIBMM24_FOUND) ++ set(PV_GLIBMM_VERSION ${PKGDEPS_glibmm-2.4_VERSION}) ++else() ++ set(PV_GLIBMM_VERSION ${PKGDEPS_glibmm-2.68_VERSION}) ++endif() + + include(GetGitRevisionDescription) + +@@ -445,7 +455,12 @@ qt5_add_resources(pulseview_RESOURCES_RCC ${CMAKE_BINARY_DIR}/translations.qrc) + add_definitions(-DQT_NO_KEYWORDS) + add_definitions(-D__STDC_LIMIT_MACROS) + add_definitions(-Wall -Wextra) +-add_definitions(-std=c++11) ++if(LIBSRGLIBMM24_FOUND) ++ add_definitions(-std=c++11) ++else() ++ # glibmm-2.68 reuires c++17 ++ add_definitions(-std=c++17) ++endif() + add_definitions(-DBOOST_MATH_DISABLE_FLOAT128=1) + + if(ENABLE_FLOW) +diff --git a/INSTALL b/INSTALL +index d666f0a7f824..ecf984f3c4b4 100644 +--- a/INSTALL ++++ b/INSTALL +@@ -14,7 +14,7 @@ Requirements + - pkg-config >= 0.22 + - cmake >= 2.8.12 + - libglib >= 2.28.0 +- - glibmm-2.4 (>= 2.28.0) ++ - glibmm-2.4 (>= 2.28.0) or glibmm-2.68 (>= 2.68.0) + - Qt5 (>= 5.3), including the following components: + - Qt5Core, Qt5Gui, Qt5Widgets, Qt5Svg, Qt5LinguistTools + - Qt translation package (optional; needed at runtime, not build time) +-- +2.43.0 + diff --git a/package/pulseview/Config.in b/package/pulseview/Config.in new file mode 100644 index 00000000..f122551b --- /dev/null +++ b/package/pulseview/Config.in @@ -0,0 +1,40 @@ +config BR2_PACKAGE_PULSEVIEW + bool "pulseview" + depends on BR2_PACKAGE_QT5 + # libsigrok->libglib2: + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-filesystem + depends on BR2_USE_MMU + depends on BR2_INSTALL_LIBSTDCPP + # libsigrok->libzip + depends on !BR2_STATIC_LIBS + # libsigrok + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 + depends on BR2_HOST_GCC_AT_LEAST_4_9 + depends on BR2_ENABLE_LOCALE + select BR2_PACKAGE_LIBSIGROK + select BR2_PACKAGE_LIBSIGROKCXX + select BR2_PACKAGE_QT5BASE_WIDGETS + select BR2_PACKAGE_QT5BASE_PNG + select BR2_PACKAGE_QT5SVG + select BR2_PACKAGE_QT5TOOLS + select BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_SERIALIZATION + help + PulseView is a Qt based logic analyzer, oscilloscope + and MSO GUI for sigrok. + + http://sigrok.org/wiki/PulseView + +comment "pulseview needs a toolchain w/ locale, wchar, threads, dynamic library, C++, gcc >= 7, host gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_QT5 + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP \ + || BR2_STATIC_LIBS || !BR2_ENABLE_LOCALE || \ + !BR2_HOST_GCC_AT_LEAST_4_9 diff --git a/package/pulseview/pulseview.hash b/package/pulseview/pulseview.hash new file mode 100644 index 00000000..b7200077 --- /dev/null +++ b/package/pulseview/pulseview.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 f042f77a3e1b35bf30666330e36ec38fab8d248c3693c37b7e35d401c3bfabcb pulseview-0.4.2.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/pulseview/pulseview.mk b/package/pulseview/pulseview.mk new file mode 100644 index 00000000..f079dfbb --- /dev/null +++ b/package/pulseview/pulseview.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# pulseview +# +################################################################################ + +PULSEVIEW_VERSION = 0.4.2 +PULSEVIEW_SITE = http://sigrok.org/download/source/pulseview +PULSEVIEW_LICENSE = GPL-3.0+ +PULSEVIEW_LICENSE_FILES = COPYING +PULSEVIEW_DEPENDENCIES = libsigrok qt5base qt5svg qt5tools boost +PULSEVIEW_CONF_OPTS = -DDISABLE_WERROR=TRUE + +ifeq ($(BR2_PACKAGE_BOOST_TEST),y) +PULSEVIEW_CONF_OPTS += -DENABLE_TESTS=TRUE +else +PULSEVIEW_CONF_OPTS += -DENABLE_TESTS=FALSE +endif + +ifeq ($(BR2_PACKAGE_LIBSIGROKDECODE),y) +PULSEVIEW_CONF_OPTS += -DENABLE_DECODE=TRUE +PULSEVIEW_DEPENDENCIES += libsigrokdecode +else +PULSEVIEW_CONF_OPTS += -DENABLE_DECODE=FALSE +endif + +$(eval $(cmake-package)) diff --git a/package/pure-ftpd/Config.in b/package/pure-ftpd/Config.in new file mode 100644 index 00000000..edfe0159 --- /dev/null +++ b/package/pure-ftpd/Config.in @@ -0,0 +1,40 @@ +config BR2_PACKAGE_PURE_FTPD + bool "pure-ftpd" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + Pure-FTPd is a free (BSD), secure, production-quality and + standard- conformant FTP server. It doesn't provide useless + bells and whistles, but focuses on efficiency and ease of + use. It provides simple answers to common needs, plus unique + useful features for personal users as 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. + +config BR2_PACKAGE_PURE_FTPD_UPLOADSCRIPT + bool "uploadscript" + help + Enable pure-upload script. Automatically run an external + program after a successful upload. + +endif diff --git a/package/pure-ftpd/pure-ftpd.hash b/package/pure-ftpd/pure-ftpd.hash new file mode 100644 index 00000000..4cbbfa15 --- /dev/null +++ b/package/pure-ftpd/pure-ftpd.hash @@ -0,0 +1,3 @@ +# Locally calculated after checking pgp signature +sha256 622360b86c60b563abe0e994f0a86cfe5ccfde597b29a14b0a79b6e5aa05a304 pure-ftpd-1.0.51.tar.bz2 +sha256 88c813191c1a59213c641e322cf4562618ab0116ddd7c8341c419f8863b8b0a9 COPYING diff --git a/package/pure-ftpd/pure-ftpd.mk b/package/pure-ftpd/pure-ftpd.mk new file mode 100644 index 00000000..2c01bc88 --- /dev/null +++ b/package/pure-ftpd/pure-ftpd.mk @@ -0,0 +1,89 @@ +################################################################################ +# +# pure-ftpd +# +################################################################################ + +PURE_FTPD_VERSION = 1.0.51 +PURE_FTPD_SITE = https://download.pureftpd.org/pub/pure-ftpd/releases +PURE_FTPD_SOURCE = pure-ftpd-$(PURE_FTPD_VERSION).tar.bz2 +PURE_FTPD_LICENSE = ISC +PURE_FTPD_LICENSE_FILES = COPYING +PURE_FTPD_CPE_ID_VENDOR = pureftpd + +PURE_FTPD_CONF_OPTS = \ + --with-altlog \ + --with-puredb + +ifeq ($(BR2_PACKAGE_ELFUTILS),y) +PURE_FTPD_DEPENDENCIES += elfutils +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +PURE_FTPD_CONF_OPTS += --with-capabilities +PURE_FTPD_DEPENDENCIES += libcap +else +PURE_FTPD_CONF_OPTS += --without-capabilities +endif + +ifeq ($(BR2_PACKAGE_LIBSODIUM),y) +PURE_FTPD_DEPENDENCIES += libsodium +endif + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +PURE_FTPD_DEPENDENCIES += libxcrypt +endif + +ifeq ($(BR2_PACKAGE_MARIADB),y) +PURE_FTPD_CONF_OPTS += --with-mysql=$(STAGING_DIR)/usr +PURE_FTPD_DEPENDENCIES += mariadb +else +PURE_FTPD_CONF_OPTS += --without-mysql +endif + +ifeq ($(BR2_PACKAGE_OPENLDAP),y) +PURE_FTPD_CONF_OPTS += --with-ldap +PURE_FTPD_DEPENDENCIES += openldap +else +PURE_FTPD_CONF_OPTS += --without-ldap +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +PURE_FTPD_CONF_OPTS += --with-tls +PURE_FTPD_DEPENDENCIES += host-pkgconf openssl +PURE_FTPD_CONF_ENV += LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl` +else +PURE_FTPD_CONF_OPTS += --without-tls +endif + +ifeq ($(BR2_PACKAGE_POSTGRESQL),y) +PURE_FTPD_CONF_OPTS += --with-pgsql=$(STAGING_DIR)/usr +PURE_FTPD_DEPENDENCIES += postgresql +else +PURE_FTPD_CONF_OPTS += --without-pgsql +endif + +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 + +ifeq ($(BR2_PACKAGE_PURE_FTPD_UPLOADSCRIPT),y) +PURE_FTPD_CONF_OPTS += --with-uploadscript +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +PURE_FTPD_CONF_OPTS += --with-pam +PURE_FTPD_DEPENDENCIES += linux-pam +else +PURE_FTPD_CONF_OPTS += --without-pam +endif + +$(eval $(autotools-package)) diff --git a/package/putty/0001-unix-utils-arm_arch_queries.h-fix-uclibc-build.patch b/package/putty/0001-unix-utils-arm_arch_queries.h-fix-uclibc-build.patch new file mode 100644 index 00000000..d2abcb64 --- /dev/null +++ b/package/putty/0001-unix-utils-arm_arch_queries.h-fix-uclibc-build.patch @@ -0,0 +1,41 @@ +From 2631c745f986b356fbe5e1d418cff63b46134df6 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 19 Mar 2024 20:37:33 +0100 +Subject: [PATCH] unix/utils/arm_arch_queries.h: fix uclibc build + +Build on uclibc is broken since version 0.75 and commit +65383082bf0c49cec63f4b36001a40bd9b13edf6 because AT_HWCAP2 is used +even if is not available: + +/home/buildroot/autobuild/run/instance-3/output-1/build/putty-0.80/unix/utils/arm_arch_queries.c: In function 'platform_aes_neon_available': +/home/buildroot/autobuild/run/instance-3/output-1/build/putty-0.80/unix/utils/arm_arch_queries.c:18:22: error: 'AT_HWCAP2' undeclared (first use in this function) + 18 | return getauxval(AT_HWCAP2) & HWCAP2_AES; + | ^~~~~~~~~ + +To fix this build failure, include + +Fixes: + - http://autobuild.buildroot.org/results/547d1c0e8a89e1e4b601aa756d26886bfc3d586f + +Upstream: Rejected after sending to Simon Tatham +Signed-off-by: Fabrice Fontaine +--- + unix/utils/arm_arch_queries.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/unix/utils/arm_arch_queries.h b/unix/utils/arm_arch_queries.h +index fa46c622..5cce7f31 100644 +--- a/unix/utils/arm_arch_queries.h ++++ b/unix/utils/arm_arch_queries.h +@@ -18,6 +18,8 @@ + + #if defined __arm__ || defined __aarch64__ + ++#include ++ + #if HAVE_SYS_TYPES_H + #include + #endif +-- +2.43.0 + diff --git a/package/putty/Config.in b/package/putty/Config.in new file mode 100644 index 00000000..f89283b9 --- /dev/null +++ b/package/putty/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PUTTY + bool "putty" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR + help + PuTTY is a free SSH and Telnet client. Without GTK2 or GTK3 + activated, only the commandline tools plink, pscp, psftp, + and puttygen are built; enable GTK2 or GTK3 for the + graphical client. + + http://www.chiark.greenend.org.uk/~sgtatham/putty/ + +comment "putty needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR diff --git a/package/putty/putty.hash b/package/putty/putty.hash new file mode 100644 index 00000000..30b749c4 --- /dev/null +++ b/package/putty/putty.hash @@ -0,0 +1,7 @@ +# Hashes from: http://the.earth.li/~sgtatham/putty/0.80/{sha1,sha256,sha512}sums +sha1 8c88d871855d3730a0473bb1cb1006654e73b680 putty-0.81.tar.gz +sha256 cb8b00a94f453494e345a3df281d7a3ed26bb0dd7e36264f145206f8857639fe putty-0.81.tar.gz +sha512 d86f2fd0e126b18275d58cf64334b3b27c450899a1c2be2502de9faa2ef58f7fc8efc5d45f25c8395623f1e21917aa02407343bb2fee44c4c00b9f81267d5ecd putty-0.81.tar.gz + +# Locally calculated +sha256 e0410341c5e45f7479c28d79298edbf615589cdfc115b2d69683d4ccd0425ce0 LICENCE diff --git a/package/putty/putty.mk b/package/putty/putty.mk new file mode 100644 index 00000000..617518e6 --- /dev/null +++ b/package/putty/putty.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# putty +# +################################################################################ + +PUTTY_VERSION = 0.81 +PUTTY_SITE = http://the.earth.li/~sgtatham/putty/$(PUTTY_VERSION) +PUTTY_LICENSE = MIT +PUTTY_LICENSE_FILES = LICENCE +PUTTY_CPE_ID_VENDOR = putty +PUTTY_DEPENDENCIES = host-pkgconf +PUTTY_CONF_OPTS = -DPUTTY_GSSAPI=OFF + +ifeq ($(BR2_PACKAGE_LIBGTK3),y) +PUTTY_DEPENDENCIES += libgtk3 +else ifeq ($(BR2_PACKAGE_LIBGTK2),y) +PUTTY_DEPENDENCIES += libgtk2 +endif + +ifeq ($(BR2_STATIC_LIBS),y) +PUTTY_CONF_OPTS += -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) -DNO_LIBDL" +endif + +$(eval $(cmake-package)) diff --git a/package/pv/Config.in b/package/pv/Config.in new file mode 100644 index 00000000..671f78e8 --- /dev/null +++ b/package/pv/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PV + bool "pv" + help + Pipe Viewer - is a terminal-based tool for + monitoring the progress of data through a + pipeline. + + http://www.ivarch.com/programs/pv.shtml diff --git a/package/pv/pv.hash b/package/pv/pv.hash new file mode 100644 index 00000000..ed4cc21d --- /dev/null +++ b/package/pv/pv.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +sha256 d22948d06be06a5be37336318de540a2215be10ab0163f8cd23a20149647b780 pv-1.8.5.tar.gz + +# Hash for license file +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 docs/COPYING diff --git a/package/pv/pv.mk b/package/pv/pv.mk new file mode 100644 index 00000000..f7243da8 --- /dev/null +++ b/package/pv/pv.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# pv +# +################################################################################ + +PV_VERSION = 1.8.5 +PV_SITE = http://www.ivarch.com/programs/sources +PV_LICENSE = GPL-3.0+ +PV_LICENSE_FILES = docs/COPYING +PV_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) + +$(eval $(autotools-package)) diff --git a/package/pwgen/Config.in b/package/pwgen/Config.in new file mode 100644 index 00000000..441605c7 --- /dev/null +++ b/package/pwgen/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PWGEN + bool "pwgen" + help + Pwgen is a small, GPL'ed password generator which creates + passwords which can be easily memorized by a human. + + http://sourceforge.net/projects/pwgen/ diff --git a/package/pwgen/Config.in.host b/package/pwgen/Config.in.host new file mode 100644 index 00000000..20b55f3f --- /dev/null +++ b/package/pwgen/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_PWGEN + bool "host pwgen" + help + Pwgen is a small, GPL'ed password generator which creates + passwords which can be easily memorized by a human. + + http://sourceforge.net/projects/pwgen/ diff --git a/package/pwgen/pwgen.hash b/package/pwgen/pwgen.hash new file mode 100644 index 00000000..f04e6c3d --- /dev/null +++ b/package/pwgen/pwgen.hash @@ -0,0 +1,5 @@ +# From http://sourceforge.net/projects/pwgen/files/pwgen/2.08/ +md5 6cfba450ac6ff72d11e88a6b0b049165 pwgen-2.08.tar.gz +sha1 6406deba61297784888c2ec0c14e3c735a85a2b6 pwgen-2.08.tar.gz +# Locally computed: +sha256 5d3e49e01ef782be5841d5d1f7fb64d290cd86459598a913818584a46a2f81a1 debian/copyright diff --git a/package/pwgen/pwgen.mk b/package/pwgen/pwgen.mk new file mode 100644 index 00000000..90b5ac63 --- /dev/null +++ b/package/pwgen/pwgen.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# pwgen +# +################################################################################ + +PWGEN_VERSION = 2.08 +PWGEN_SITE = http://downloads.sourceforge.net/project/pwgen/pwgen/$(PWGEN_VERSION) +PWGEN_LICENSE = GPL-2.0 +PWGEN_LICENSE_FILES = debian/copyright +PWGEN_CPE_ID_VALID = YES + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/python-aenum/Config.in b/package/python-aenum/Config.in new file mode 100644 index 00000000..be3dd0fb --- /dev/null +++ b/package/python-aenum/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_AENUM + bool "python-aenum" + help + Advanced Enumerations (compatible with Python's stdlib Enum), + NamedTuples, and NamedConstants. + + https://pypi.org/project/aenum diff --git a/package/python-aenum/python-aenum.hash b/package/python-aenum/python-aenum.hash new file mode 100644 index 00000000..9c59804d --- /dev/null +++ b/package/python-aenum/python-aenum.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aenum/json +md5 f3fa11cda9ddaaed4d3f03b35f3a65ea aenum-3.1.15.tar.gz +sha256 8cbd76cd18c4f870ff39b24284d3ea028fbe8731a58df3aa581e434c575b9559 aenum-3.1.15.tar.gz +# Locally computed sha256 checksums +sha256 0db837e38002017b352666c83c8d3216ee5b9b2229375eb2cf4487f8c24e1f8c aenum/LICENSE diff --git a/package/python-aenum/python-aenum.mk b/package/python-aenum/python-aenum.mk new file mode 100644 index 00000000..27f9e5ce --- /dev/null +++ b/package/python-aenum/python-aenum.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# python-aenum +# +################################################################################ + +PYTHON_AENUM_VERSION = 3.1.15 +PYTHON_AENUM_SOURCE = aenum-$(PYTHON_AENUM_VERSION).tar.gz +PYTHON_AENUM_SITE = https://files.pythonhosted.org/packages/d0/f8/33e75863394f42e429bb553e05fda7c59763f0fd6848de847a25b3fbccf6 +PYTHON_AENUM_SETUP_TYPE = setuptools +PYTHON_AENUM_LICENSE = BSD-3-Clause +PYTHON_AENUM_LICENSE_FILES = aenum/LICENSE + +# _py2.py uses syntax not compatible with Python3. +# Remove _py2.py to avoid compilation error. +define PYTHON_AENUM_REMOVE_PY2_PY + rm $(@D)/aenum/_py2.py +endef + +PYTHON_AENUM_POST_EXTRACT_HOOKS = PYTHON_AENUM_REMOVE_PY2_PY + +$(eval $(python-package)) diff --git a/package/python-aerich/0001-update-poetry-build-backend-to-support-editable-inst.patch b/package/python-aerich/0001-update-poetry-build-backend-to-support-editable-inst.patch new file mode 100644 index 00000000..67d7c45b --- /dev/null +++ b/package/python-aerich/0001-update-poetry-build-backend-to-support-editable-inst.patch @@ -0,0 +1,29 @@ +From e729bb9b602ba74dea7ccc978dac709283a0934a Mon Sep 17 00:00:00 2001 +From: strayge +Date: Fri, 18 Aug 2023 15:03:38 +0400 +Subject: [PATCH] update poetry build-backend to support editable install + +Signed-off-by: James Hilliard +Upstream: https://github.com/tortoise/aerich/commit/e729bb9b602ba74dea7ccc978dac709283a0934a +--- + pyproject.toml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/pyproject.toml b/pyproject.toml +index b9390e1..7673d70 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -45,8 +45,8 @@ location = "./migrations" + src_folder = "./." + + [build-system] +-requires = ["poetry>=0.12"] +-build-backend = "poetry.masonry.api" ++requires = ["poetry-core>=1.0.0"] ++build-backend = "poetry.core.masonry.api" + + [tool.poetry.scripts] + aerich = "aerich.cli:main" +-- +2.34.1 + diff --git a/package/python-aerich/Config.in b/package/python-aerich/Config.in new file mode 100644 index 00000000..3aa39e17 --- /dev/null +++ b/package/python-aerich/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_AERICH + bool "python-aerich" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-pydantic -> python-pydantic-core + select BR2_PACKAGE_PYTHON_CLICK # runtime + select BR2_PACKAGE_PYTHON_DICTDIFFER # runtime + select BR2_PACKAGE_PYTHON_PYDANTIC # runtime + select BR2_PACKAGE_PYTHON_TOMLKIT # runtime + select BR2_PACKAGE_PYTHON_TORTOISE_ORM # runtime + help + A database migrations tool for Tortoise ORM. + + https://github.com/tortoise/aerich diff --git a/package/python-aerich/python-aerich.hash b/package/python-aerich/python-aerich.hash new file mode 100644 index 00000000..c104c3d5 --- /dev/null +++ b/package/python-aerich/python-aerich.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aerich/json +md5 26a99a2c6c604a370b228b74e12c7981 aerich-0.7.2.tar.gz +sha256 31d67de7b96184636b89de99062e059e5e6204b6251d24c33eb21fc9cf982e09 aerich-0.7.2.tar.gz +# Locally computed sha256 checksums +sha256 4cc00f0e33ac8e089b37d8a1474be441b26311bdc16fe035c75b51201515f617 LICENSE diff --git a/package/python-aerich/python-aerich.mk b/package/python-aerich/python-aerich.mk new file mode 100644 index 00000000..63343e0b --- /dev/null +++ b/package/python-aerich/python-aerich.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-aerich +# +################################################################################ + +PYTHON_AERICH_VERSION = 0.7.2 +PYTHON_AERICH_SOURCE = aerich-$(PYTHON_AERICH_VERSION).tar.gz +PYTHON_AERICH_SITE = https://files.pythonhosted.org/packages/ca/cd/ae9c60ffc21e2d41e22c62cbf24a60dfad937222d880489703842d179746 +PYTHON_AERICH_SETUP_TYPE = pep517 +PYTHON_AERICH_LICENSE = Apache-2.0 +PYTHON_AERICH_LICENSE_FILES = LICENSE +PYTHON_AERICH_DEPENDENCIES = host-python-poetry-core + +$(eval $(python-package)) diff --git a/package/python-aexpect/Config.in b/package/python-aexpect/Config.in new file mode 100644 index 00000000..59671621 --- /dev/null +++ b/package/python-aexpect/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_AEXPECT + bool "python-aexpect" + help + Aexpect. + + http://avocado-framework.github.io/ diff --git a/package/python-aexpect/python-aexpect.hash b/package/python-aexpect/python-aexpect.hash new file mode 100644 index 00000000..ff30c765 --- /dev/null +++ b/package/python-aexpect/python-aexpect.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aexpect/json +md5 bb05319c277cfe97114780579d251c30 aexpect-1.7.0.tar.gz +sha256 11bfeea78ef6147ac8f6e29c2a720bd332598383d88274cdca5e6413c2070d52 aexpect-1.7.0.tar.gz +# Locally computed sha256 checksums +sha256 7be26abf35e531a226dc742d2379d42d372cb61f027a6e26477c0e2f1a03bfcb LICENSE diff --git a/package/python-aexpect/python-aexpect.mk b/package/python-aexpect/python-aexpect.mk new file mode 100644 index 00000000..1cfcc9ff --- /dev/null +++ b/package/python-aexpect/python-aexpect.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-aexpect +# +################################################################################ + +PYTHON_AEXPECT_VERSION = 1.7.0 +PYTHON_AEXPECT_SOURCE = aexpect-$(PYTHON_AEXPECT_VERSION).tar.gz +PYTHON_AEXPECT_SITE = https://files.pythonhosted.org/packages/dd/32/738b5190adb5ed387d3e755885f646b714fbf9c22adbda7ff988db7ede49 +PYTHON_AEXPECT_SETUP_TYPE = setuptools +PYTHON_AEXPECT_LICENSE = GPL-2.0+ +PYTHON_AEXPECT_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-aioblescan/Config.in b/package/python-aioblescan/Config.in new file mode 100644 index 00000000..8f6db48a --- /dev/null +++ b/package/python-aioblescan/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_AIOBLESCAN + bool "python-aioblescan" + help + Scanning Bluetooth for advertised info with asyncio. + + https://github.com/frawau/aioblescan diff --git a/package/python-aioblescan/python-aioblescan.hash b/package/python-aioblescan/python-aioblescan.hash new file mode 100644 index 00000000..c754325f --- /dev/null +++ b/package/python-aioblescan/python-aioblescan.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aioblescan/json +md5 10014cfd24b8f9f54099bbf7e2ea528a aioblescan-0.2.14.tar.gz +sha256 3a47c5292186ee87fc49cb076a5271c766510f44749b93ac4a32bbb4cb5258a0 aioblescan-0.2.14.tar.gz +# Locally computed sha256 checksums +sha256 c2066cd44079e0c706234001af18cb6ad4b62fc68d0d08d29fdc7319916647e0 LICENSE.txt diff --git a/package/python-aioblescan/python-aioblescan.mk b/package/python-aioblescan/python-aioblescan.mk new file mode 100644 index 00000000..7e0cde6c --- /dev/null +++ b/package/python-aioblescan/python-aioblescan.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-aioblescan +# +################################################################################ + +PYTHON_AIOBLESCAN_VERSION = 0.2.14 +PYTHON_AIOBLESCAN_SOURCE = aioblescan-$(PYTHON_AIOBLESCAN_VERSION).tar.gz +PYTHON_AIOBLESCAN_SITE = https://files.pythonhosted.org/packages/45/15/faf503083bc5a2d81f1b17fbbe30d15f35217b6c5e944c771c8760354d59 +PYTHON_AIOBLESCAN_SETUP_TYPE = setuptools +PYTHON_AIOBLESCAN_LICENSE = MIT +PYTHON_AIOBLESCAN_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-aiocoap/Config.in b/package/python-aiocoap/Config.in new file mode 100644 index 00000000..c4661432 --- /dev/null +++ b/package/python-aiocoap/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_AIOCOAP + bool "python-aiocoap" + help + Python CoAP library. + + https://github.com/chrysn/aiocoap diff --git a/package/python-aiocoap/python-aiocoap.hash b/package/python-aiocoap/python-aiocoap.hash new file mode 100644 index 00000000..c9d73cda --- /dev/null +++ b/package/python-aiocoap/python-aiocoap.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aiocoap/json +md5 baebbc38bc8db31472c438521f7121e3 aiocoap-0.4.7.tar.gz +sha256 90f3bcaffd454f5421d3ad55ddbe3fe10a686d4b9f3c4445d427b130493a96a4 aiocoap-0.4.7.tar.gz +# Locally computed sha256 checksums +sha256 0ad39132b3529369998eb7493b950dc7452b07ba9d8cca7619766b6c6d8270fa doc/LICENSE.rst diff --git a/package/python-aiocoap/python-aiocoap.mk b/package/python-aiocoap/python-aiocoap.mk new file mode 100644 index 00000000..73a0d61e --- /dev/null +++ b/package/python-aiocoap/python-aiocoap.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-aiocoap +# +################################################################################ + +PYTHON_AIOCOAP_VERSION = 0.4.7 +PYTHON_AIOCOAP_SOURCE = aiocoap-$(PYTHON_AIOCOAP_VERSION).tar.gz +PYTHON_AIOCOAP_SITE = https://files.pythonhosted.org/packages/de/14/843232b56c0f09b2ceddae3da37598d9109c4b1d9383b1ab72232018e9e8 +PYTHON_AIOCOAP_SETUP_TYPE = setuptools +PYTHON_AIOCOAP_LICENSE = MIT +PYTHON_AIOCOAP_LICENSE_FILES = doc/LICENSE.rst + +$(eval $(python-package)) diff --git a/package/python-aioconsole/Config.in b/package/python-aioconsole/Config.in new file mode 100644 index 00000000..6b2a15e1 --- /dev/null +++ b/package/python-aioconsole/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_AIOCONSOLE + bool "python-aioconsole" + help + Asynchronous console and interfaces for asyncio. + + https://github.com/vxgmichel/aioconsole diff --git a/package/python-aioconsole/python-aioconsole.hash b/package/python-aioconsole/python-aioconsole.hash new file mode 100644 index 00000000..b52140cc --- /dev/null +++ b/package/python-aioconsole/python-aioconsole.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aioconsole/json +md5 e8cb2e4dc434e20a3e75acb54d89bdf3 aioconsole-0.7.0.tar.gz +sha256 c702d24406378d37d9873f91e03ce71520bac503d5ab03f81d8b563ff010bd54 aioconsole-0.7.0.tar.gz +# Locally computed sha256 checksums +sha256 e1c0ad728983d8a57335e52cf1064f1affd1d454173d8cebd3ed8b4a72b48704 LICENSE diff --git a/package/python-aioconsole/python-aioconsole.mk b/package/python-aioconsole/python-aioconsole.mk new file mode 100644 index 00000000..b109d8e3 --- /dev/null +++ b/package/python-aioconsole/python-aioconsole.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-aioconsole +# +################################################################################ + +PYTHON_AIOCONSOLE_VERSION = 0.7.0 +PYTHON_AIOCONSOLE_SOURCE = aioconsole-$(PYTHON_AIOCONSOLE_VERSION).tar.gz +PYTHON_AIOCONSOLE_SITE = https://files.pythonhosted.org/packages/85/da/6a238a72274fa338b2ff20007f026944a6721245fa65d3bd4adeb83be419 +PYTHON_AIOCONSOLE_SETUP_TYPE = setuptools +PYTHON_AIOCONSOLE_LICENSE = GPL-3.0 +PYTHON_AIOCONSOLE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-aiodns/Config.in b/package/python-aiodns/Config.in new file mode 100644 index 00000000..63c24293 --- /dev/null +++ b/package/python-aiodns/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_AIODNS + bool "python-aiodns" + select BR2_PACKAGE_PYTHON_PYCARES # runtime + help + Simple DNS resolver for asyncio. + + http://github.com/saghul/aiodns diff --git a/package/python-aiodns/python-aiodns.hash b/package/python-aiodns/python-aiodns.hash new file mode 100644 index 00000000..bf65691b --- /dev/null +++ b/package/python-aiodns/python-aiodns.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aiodns/json +md5 13fdfc38f30c9498e3e23c6f372e40ba aiodns-3.1.1.tar.gz +sha256 1073eac48185f7a4150cad7f96a5192d6911f12b4fb894de80a088508c9b3a99 aiodns-3.1.1.tar.gz +# Locally computed sha256 checksums +sha256 eb0455d35129425ed399883cd710923de3e246a510e2eb84d9f00032d0bbec97 LICENSE diff --git a/package/python-aiodns/python-aiodns.mk b/package/python-aiodns/python-aiodns.mk new file mode 100644 index 00000000..f5cbb653 --- /dev/null +++ b/package/python-aiodns/python-aiodns.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-aiodns +# +################################################################################ + +PYTHON_AIODNS_VERSION = 3.1.1 +PYTHON_AIODNS_SOURCE = aiodns-$(PYTHON_AIODNS_VERSION).tar.gz +PYTHON_AIODNS_SITE = https://files.pythonhosted.org/packages/fa/10/4de99e6e67703d8f6b10ea92a4d2a6c5b96a9c0708b75389a00203387925 +PYTHON_AIODNS_SETUP_TYPE = setuptools +PYTHON_AIODNS_LICENSE = MIT +PYTHON_AIODNS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-aiofiles/Config.in b/package/python-aiofiles/Config.in new file mode 100644 index 00000000..1e6add53 --- /dev/null +++ b/package/python-aiofiles/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_AIOFILES + bool "python-aiofiles" + help + aiofiles aims to handle local disk files in + asyncio applications. + + https://pypi.org/project/aiofiles diff --git a/package/python-aiofiles/python-aiofiles.hash b/package/python-aiofiles/python-aiofiles.hash new file mode 100644 index 00000000..f68b0b55 --- /dev/null +++ b/package/python-aiofiles/python-aiofiles.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aiofiles/json +md5 530273426ff7ee50283e52186e185c81 aiofiles-24.1.0.tar.gz +sha256 22a075c9e5a3810f0c2e48f3008c94d68c65d763b9b03857924c99e57355166c aiofiles-24.1.0.tar.gz +# Locally computed sha256 checksums +sha256 cb5e8e7e5f4a3988e1063c142c60dc2df75605f4c46515e776e3aca6df976e14 LICENSE diff --git a/package/python-aiofiles/python-aiofiles.mk b/package/python-aiofiles/python-aiofiles.mk new file mode 100644 index 00000000..9eae73d3 --- /dev/null +++ b/package/python-aiofiles/python-aiofiles.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-aiofiles +# +################################################################################ + +PYTHON_AIOFILES_VERSION = 24.1.0 +PYTHON_AIOFILES_SOURCE = aiofiles-$(PYTHON_AIOFILES_VERSION).tar.gz +PYTHON_AIOFILES_SITE = https://files.pythonhosted.org/packages/0b/03/a88171e277e8caa88a4c77808c20ebb04ba74cc4681bf1e9416c862de237 +PYTHON_AIOFILES_SETUP_TYPE = pep517 +PYTHON_AIOFILES_LICENSE = Apache-2.0 +PYTHON_AIOFILES_LICENSE_FILES = LICENSE +PYTHON_AIOFILES_DEPENDENCIES = host-python-hatchling + +$(eval $(python-package)) diff --git a/package/python-aiohttp-cors/Config.in b/package/python-aiohttp-cors/Config.in new file mode 100644 index 00000000..dea3b440 --- /dev/null +++ b/package/python-aiohttp-cors/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_AIOHTTP_CORS + bool "python-aiohttp-cors" + select BR2_PACKAGE_PYTHON_AIOHTTP # runtime + help + CORS support for aiohttp. + + https://github.com/aio-libs/aiohttp-cors diff --git a/package/python-aiohttp-cors/python-aiohttp-cors.hash b/package/python-aiohttp-cors/python-aiohttp-cors.hash new file mode 100644 index 00000000..29ae2d79 --- /dev/null +++ b/package/python-aiohttp-cors/python-aiohttp-cors.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aiohttp_cors/json +md5 de3940a901b269be82c8bd9f28d53ff0 aiohttp-cors-0.7.0.tar.gz +sha256 4d39c6d7100fd9764ed1caf8cebf0eb01bf5e3f24e2e073fda6234bc48b19f5d aiohttp-cors-0.7.0.tar.gz +# Locally computed sha256 checksums +sha256 86cb2262ff825ce1c8b8fb9ea9f5174318badc3912639b9275fc25d0e305c556 LICENSE diff --git a/package/python-aiohttp-cors/python-aiohttp-cors.mk b/package/python-aiohttp-cors/python-aiohttp-cors.mk new file mode 100644 index 00000000..27443540 --- /dev/null +++ b/package/python-aiohttp-cors/python-aiohttp-cors.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-aiohttp-cors +# +################################################################################ + +PYTHON_AIOHTTP_CORS_VERSION = 0.7.0 +PYTHON_AIOHTTP_CORS_SOURCE = aiohttp-cors-$(PYTHON_AIOHTTP_CORS_VERSION).tar.gz +PYTHON_AIOHTTP_CORS_SITE = https://files.pythonhosted.org/packages/44/9e/6cdce7c3f346d8fd487adf68761728ad8cd5fbc296a7b07b92518350d31f +PYTHON_AIOHTTP_CORS_SETUP_TYPE = setuptools +PYTHON_AIOHTTP_CORS_LICENSE = Apache-2.0 +PYTHON_AIOHTTP_CORS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-aiohttp-debugtoolbar/Config.in b/package/python-aiohttp-debugtoolbar/Config.in new file mode 100644 index 00000000..e2fede80 --- /dev/null +++ b/package/python-aiohttp-debugtoolbar/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_AIOHTTP_DEBUGTOOLBAR + bool "python-aiohttp-debugtoolbar" + select BR2_PACKAGE_PYTHON_AIOHTTP # runtime + select BR2_PACKAGE_PYTHON_AIOHTTP_JINJA2 # runtime + help + debugtoolbar for aiohttp. + + https://github.com/aio-libs/aiohttp_debugtoolbar diff --git a/package/python-aiohttp-debugtoolbar/python-aiohttp-debugtoolbar.hash b/package/python-aiohttp-debugtoolbar/python-aiohttp-debugtoolbar.hash new file mode 100644 index 00000000..441574bb --- /dev/null +++ b/package/python-aiohttp-debugtoolbar/python-aiohttp-debugtoolbar.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aiohttp_debugtoolbar/json +md5 3be0e457798dbd301f4cfe8da43166d4 aiohttp-debugtoolbar-0.6.1.tar.gz +sha256 cd7ae54c600db7ae7d9dc3404b81f95209a6367df1d59e13ea20f9926e36e001 aiohttp-debugtoolbar-0.6.1.tar.gz +# Locally computed sha256 checksums +sha256 dd064918c2da830f543f6b34b699efd423c2ad82fdbda15c25214410fcd3f84b LICENSE diff --git a/package/python-aiohttp-debugtoolbar/python-aiohttp-debugtoolbar.mk b/package/python-aiohttp-debugtoolbar/python-aiohttp-debugtoolbar.mk new file mode 100644 index 00000000..8eb38e86 --- /dev/null +++ b/package/python-aiohttp-debugtoolbar/python-aiohttp-debugtoolbar.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-aiohttp-debugtoolbar +# +################################################################################ + +PYTHON_AIOHTTP_DEBUGTOOLBAR_VERSION = 0.6.1 +PYTHON_AIOHTTP_DEBUGTOOLBAR_SOURCE = aiohttp-debugtoolbar-$(PYTHON_AIOHTTP_DEBUGTOOLBAR_VERSION).tar.gz +PYTHON_AIOHTTP_DEBUGTOOLBAR_SITE = https://files.pythonhosted.org/packages/bd/72/cd80c0d1d425d5ef50e5b23553040e8d9fa5de5714208d3d18ae8806b6de +PYTHON_AIOHTTP_DEBUGTOOLBAR_SETUP_TYPE = setuptools +PYTHON_AIOHTTP_DEBUGTOOLBAR_LICENSE = Apache-2.0 +PYTHON_AIOHTTP_DEBUGTOOLBAR_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-aiohttp-jinja2/Config.in b/package/python-aiohttp-jinja2/Config.in new file mode 100644 index 00000000..a536825b --- /dev/null +++ b/package/python-aiohttp-jinja2/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_AIOHTTP_JINJA2 + bool "python-aiohttp-jinja2" + select BR2_PACKAGE_PYTHON_AIOHTTP # runtime + select BR2_PACKAGE_PYTHON_JINJA2 # runtime + help + Jinja2 template renderer for aiohttp.web (http server for + asyncio). + + https://github.com/aio-libs/aiohttp_jinja2/ diff --git a/package/python-aiohttp-jinja2/python-aiohttp-jinja2.hash b/package/python-aiohttp-jinja2/python-aiohttp-jinja2.hash new file mode 100644 index 00000000..0a7b7cc0 --- /dev/null +++ b/package/python-aiohttp-jinja2/python-aiohttp-jinja2.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aiohttp-jinja2/json +md5 8f72451a7da006b4b91ef18ec6f75885 aiohttp-jinja2-1.5.1.tar.gz +sha256 8d149b2a57d91f794b33a394ea5bc66b567f38c74a5a6a9477afc2450f105c01 aiohttp-jinja2-1.5.1.tar.gz +# Locally computed sha256 checksums +sha256 d9d867affaeac220a60381cc544681dcd37c668ed6ea5ddbf9948617f828889a LICENSE diff --git a/package/python-aiohttp-jinja2/python-aiohttp-jinja2.mk b/package/python-aiohttp-jinja2/python-aiohttp-jinja2.mk new file mode 100644 index 00000000..17f9a401 --- /dev/null +++ b/package/python-aiohttp-jinja2/python-aiohttp-jinja2.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-aiohttp-jinja2 +# +################################################################################ + +PYTHON_AIOHTTP_JINJA2_VERSION = 1.5.1 +PYTHON_AIOHTTP_JINJA2_SOURCE = aiohttp-jinja2-$(PYTHON_AIOHTTP_JINJA2_VERSION).tar.gz +PYTHON_AIOHTTP_JINJA2_SITE = https://files.pythonhosted.org/packages/4e/4c/fadbfcc1269fa79e69fcdb29027840ab022a91471a5aeaa8fd8b27cc5406 +PYTHON_AIOHTTP_JINJA2_SETUP_TYPE = setuptools +PYTHON_AIOHTTP_JINJA2_LICENSE = Apache-2.0 +PYTHON_AIOHTTP_JINJA2_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-aiohttp-mako/Config.in b/package/python-aiohttp-mako/Config.in new file mode 100644 index 00000000..4dae5d95 --- /dev/null +++ b/package/python-aiohttp-mako/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_AIOHTTP_MAKO + bool "python-aiohttp-mako" + select BR2_PACKAGE_PYTHON_AIOHTTP # runtime + select BR2_PACKAGE_PYTHON_MAKO # runtime + help + mako template renderer for aiohttp.web (http server for + asyncio). + + https://github.com/aio-libs/aiohttp-mako/ diff --git a/package/python-aiohttp-mako/python-aiohttp-mako.hash b/package/python-aiohttp-mako/python-aiohttp-mako.hash new file mode 100644 index 00000000..1991acdb --- /dev/null +++ b/package/python-aiohttp-mako/python-aiohttp-mako.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aiohttp-mako/json +md5 c0f2da2851d0b6e819b5c882f700bb11 aiohttp-mako-0.4.0.tar.gz +sha256 f10bdee54589b6567e8a0339db582276fdaaa198764541d2f9741f1d3836312c aiohttp-mako-0.4.0.tar.gz +# Locally computed sha256 checksums +sha256 b81fea0e0d4cda42faf00466cabe7b9e2a0cc3a0ffbf20ae3773c18e077c7c52 LICENSE diff --git a/package/python-aiohttp-mako/python-aiohttp-mako.mk b/package/python-aiohttp-mako/python-aiohttp-mako.mk new file mode 100644 index 00000000..4ff5f890 --- /dev/null +++ b/package/python-aiohttp-mako/python-aiohttp-mako.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-aiohttp-mako +# +################################################################################ + +PYTHON_AIOHTTP_MAKO_VERSION = 0.4.0 +PYTHON_AIOHTTP_MAKO_SOURCE = aiohttp-mako-$(PYTHON_AIOHTTP_MAKO_VERSION).tar.gz +PYTHON_AIOHTTP_MAKO_SITE = https://files.pythonhosted.org/packages/f9/8e/d7c0ea2c74e8102a94021e150b622d274fdef22ebd1f0c9a546b21458931 +PYTHON_AIOHTTP_MAKO_SETUP_TYPE = setuptools +PYTHON_AIOHTTP_MAKO_LICENSE = Apache-2.0 +PYTHON_AIOHTTP_MAKO_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-aiohttp-remotes/0001-Fix-flit_core-build-requires-backend.patch b/package/python-aiohttp-remotes/0001-Fix-flit_core-build-requires-backend.patch new file mode 100644 index 00000000..cf940eaf --- /dev/null +++ b/package/python-aiohttp-remotes/0001-Fix-flit_core-build-requires-backend.patch @@ -0,0 +1,32 @@ +From 3d39ee9a03a1c96b8e798dc6acf98165da31da1f Mon Sep 17 00:00:00 2001 +From: James Hilliard +Date: Fri, 11 Mar 2022 12:59:53 -0700 +Subject: [PATCH] Fix flit_core build requires/backend. + +Only flit_core should be required by pyproject.toml, the regular flit +package is the pep517 frontend which is not what should be set for the +build system. + +Signed-off-by: James Hilliard +[Upstream status: +https://github.com/aio-libs/aiohttp-remotes/pull/355] +--- + pyproject.toml | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/pyproject.toml b/pyproject.toml +index 214d64d..8c6b882 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -1,6 +1,6 @@ + [build-system] +-requires=["flit"] +-build-backend="flit.buildapi" ++requires=["flit_core"] ++build-backend="flit_core.buildapi" + + [tool.flit.metadata] + module="aiohttp_remotes" +-- +2.38.1 + diff --git a/package/python-aiohttp-remotes/Config.in b/package/python-aiohttp-remotes/Config.in new file mode 100644 index 00000000..7208e373 --- /dev/null +++ b/package/python-aiohttp-remotes/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_AIOHTTP_REMOTES + bool "python-aiohttp-remotes" + select BR2_PACKAGE_PYTHON_AIOHTTP # runtime + help + Control remote side information. + + https://github.com/aio-libs/aiohttp-remotes diff --git a/package/python-aiohttp-remotes/python-aiohttp-remotes.hash b/package/python-aiohttp-remotes/python-aiohttp-remotes.hash new file mode 100644 index 00000000..51c5cf08 --- /dev/null +++ b/package/python-aiohttp-remotes/python-aiohttp-remotes.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aiohttp-remotes/json +md5 c46a71df656e7f1e111684ced68a85d0 aiohttp_remotes-1.2.0.tar.gz +sha256 f95c3a6be5e2de746a85ce9af49ec548da6db8378d7e81bb171ec77b13562a6c aiohttp_remotes-1.2.0.tar.gz +# Locally computed sha256 checksums +sha256 4e7d0edf250abe2a28027788b8c55a53d1b5c9ff961b8a00643c76aed637ba13 LICENSE diff --git a/package/python-aiohttp-remotes/python-aiohttp-remotes.mk b/package/python-aiohttp-remotes/python-aiohttp-remotes.mk new file mode 100644 index 00000000..e0ec789f --- /dev/null +++ b/package/python-aiohttp-remotes/python-aiohttp-remotes.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-aiohttp-remotes +# +################################################################################ + +PYTHON_AIOHTTP_REMOTES_VERSION = 1.2.0 +PYTHON_AIOHTTP_REMOTES_SOURCE = aiohttp_remotes-$(PYTHON_AIOHTTP_REMOTES_VERSION).tar.gz +PYTHON_AIOHTTP_REMOTES_SITE = https://files.pythonhosted.org/packages/54/05/7c4be6171cc78a13171a4f89e5d308c4a636bdd8ee36101367e99e410ed8 +PYTHON_AIOHTTP_REMOTES_SETUP_TYPE = flit +PYTHON_AIOHTTP_REMOTES_LICENSE = MIT +PYTHON_AIOHTTP_REMOTES_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-aiohttp-security/Config.in b/package/python-aiohttp-security/Config.in new file mode 100644 index 00000000..96204d7e --- /dev/null +++ b/package/python-aiohttp-security/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_AIOHTTP_SECURITY + bool "python-aiohttp-security" + select BR2_PACKAGE_PYTHON_AIOHTTP # runtime + help + Security for aiohttp.web. + + https://github.com/aio-libs/aiohttp_security/ diff --git a/package/python-aiohttp-security/python-aiohttp-security.hash b/package/python-aiohttp-security/python-aiohttp-security.hash new file mode 100644 index 00000000..6a760702 --- /dev/null +++ b/package/python-aiohttp-security/python-aiohttp-security.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aiohttp-security/json +md5 b34fb62c6f4dd130f3c94f74c3bdc150 aiohttp-security-0.5.0.tar.gz +sha256 50cb724d310e1d0289798bb98ae852c3b75b77e8f51ce5159c57b7261d0638bd aiohttp-security-0.5.0.tar.gz +# Locally computed sha256 checksums +sha256 a1cc8ff7210897d55d2552fa0792340f8e59720e0160b6918699d40f9a782b1c LICENSE diff --git a/package/python-aiohttp-security/python-aiohttp-security.mk b/package/python-aiohttp-security/python-aiohttp-security.mk new file mode 100644 index 00000000..274f6042 --- /dev/null +++ b/package/python-aiohttp-security/python-aiohttp-security.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-aiohttp-security +# +################################################################################ + +PYTHON_AIOHTTP_SECURITY_VERSION = 0.5.0 +PYTHON_AIOHTTP_SECURITY_SOURCE = aiohttp-security-$(PYTHON_AIOHTTP_SECURITY_VERSION).tar.gz +PYTHON_AIOHTTP_SECURITY_SITE = https://files.pythonhosted.org/packages/31/49/56c131fe3dead875ab5907b154dac7fb6ee727662de80b7da0ff045030d4 +PYTHON_AIOHTTP_SECURITY_SETUP_TYPE = setuptools +PYTHON_AIOHTTP_SECURITY_LICENSE = Apache-2.0 +PYTHON_AIOHTTP_SECURITY_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-aiohttp-session/Config.in b/package/python-aiohttp-session/Config.in new file mode 100644 index 00000000..99c01794 --- /dev/null +++ b/package/python-aiohttp-session/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_AIOHTTP_SESSION + bool "python-aiohttp-session" + select BR2_PACKAGE_PYTHON_AIOHTTP # runtime + help + Sessions for aiohttp.web. + + https://github.com/aio-libs/aiohttp_session/ diff --git a/package/python-aiohttp-session/python-aiohttp-session.hash b/package/python-aiohttp-session/python-aiohttp-session.hash new file mode 100644 index 00000000..efdac390 --- /dev/null +++ b/package/python-aiohttp-session/python-aiohttp-session.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aiohttp-session/json +md5 b89bde69f6f3c61a991ff408d2733838 aiohttp-session-2.12.0.tar.gz +sha256 0ccd11a7c77cb9e5a61f4daacdc9170d561112f9cfaf9e9a2d9867c0587d1950 aiohttp-session-2.12.0.tar.gz +# Locally computed sha256 checksums +sha256 7bc5dd2f229a6b922befb1427fd4ad2c0b255f12c1b1869370ba77520dc22bc7 LICENSE diff --git a/package/python-aiohttp-session/python-aiohttp-session.mk b/package/python-aiohttp-session/python-aiohttp-session.mk new file mode 100644 index 00000000..55bf0e87 --- /dev/null +++ b/package/python-aiohttp-session/python-aiohttp-session.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-aiohttp-session +# +################################################################################ + +PYTHON_AIOHTTP_SESSION_VERSION = 2.12.0 +PYTHON_AIOHTTP_SESSION_SOURCE = aiohttp-session-$(PYTHON_AIOHTTP_SESSION_VERSION).tar.gz +PYTHON_AIOHTTP_SESSION_SITE = https://files.pythonhosted.org/packages/34/87/8dbc1385c875497d6bc16c9d94e25dbd8ff62599843b73fb4048ba74c867 +PYTHON_AIOHTTP_SESSION_SETUP_TYPE = setuptools +PYTHON_AIOHTTP_SESSION_LICENSE = Apache-2.0 +PYTHON_AIOHTTP_SESSION_LICENSE_FILES = LICENSE +PYTHON_AIOHTTP_SESSION_CPE_ID_VENDOR = aiohttp-session_project +PYTHON_AIOHTTP_SESSION_CPE_ID_PRODUCT = aiohttp-session + +$(eval $(python-package)) diff --git a/package/python-aiohttp-sse/Config.in b/package/python-aiohttp-sse/Config.in new file mode 100644 index 00000000..6e408b7e --- /dev/null +++ b/package/python-aiohttp-sse/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_AIOHTTP_SSE + bool "python-aiohttp-sse" + select BR2_PACKAGE_PYTHON_AIOHTTP # runtime + help + Server-sent events support for aiohttp. + + https://github.com/aio-libs/aiohttp_sse/ diff --git a/package/python-aiohttp-sse/python-aiohttp-sse.hash b/package/python-aiohttp-sse/python-aiohttp-sse.hash new file mode 100644 index 00000000..22460145 --- /dev/null +++ b/package/python-aiohttp-sse/python-aiohttp-sse.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aiohttp-sse/json +md5 822cd0c30325e8a711101c1a1ede4058 aiohttp-sse-2.1.0.tar.gz +sha256 dfe8f7271ab4470891fa1bfa1913d6889b3d19015dd3d3a4cab949e66971bbca aiohttp-sse-2.1.0.tar.gz +# Locally computed sha256 checksums +sha256 5585eb91ec607b4fdbe97d44a61146a9cc27bb703336628bc3c6a1eaffe60307 LICENSE diff --git a/package/python-aiohttp-sse/python-aiohttp-sse.mk b/package/python-aiohttp-sse/python-aiohttp-sse.mk new file mode 100644 index 00000000..2aef1579 --- /dev/null +++ b/package/python-aiohttp-sse/python-aiohttp-sse.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-aiohttp-sse +# +################################################################################ + +PYTHON_AIOHTTP_SSE_VERSION = 2.1.0 +PYTHON_AIOHTTP_SSE_SOURCE = aiohttp-sse-$(PYTHON_AIOHTTP_SSE_VERSION).tar.gz +PYTHON_AIOHTTP_SSE_SITE = https://files.pythonhosted.org/packages/2f/3f/cc4f5a3fe6cb50ad5b9d26bb7738c5da1f61645b517d4230df2fc32d89f0 +PYTHON_AIOHTTP_SSE_SETUP_TYPE = setuptools +PYTHON_AIOHTTP_SSE_LICENSE = Apache-2.0 +PYTHON_AIOHTTP_SSE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-aiohttp/Config.in b/package/python-aiohttp/Config.in new file mode 100644 index 00000000..0507106f --- /dev/null +++ b/package/python-aiohttp/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PYTHON_AIOHTTP + bool "python-aiohttp" + select BR2_PACKAGE_PYTHON_AIODNS # runtime + select BR2_PACKAGE_PYTHON_AIOSIGNAL # runtime + select BR2_PACKAGE_PYTHON_ASYNC_TIMEOUT # runtime + select BR2_PACKAGE_PYTHON_ATTRS # runtime + select BR2_PACKAGE_PYTHON_BROTLI # runtime + select BR2_PACKAGE_PYTHON_FROZENLIST # runtime + select BR2_PACKAGE_PYTHON_MULTIDICT # runtime + select BR2_PACKAGE_PYTHON_YARL # runtime + select BR2_PACKAGE_PYTHON3_ZLIB # runtime + help + Async http client/server framework (asyncio). + + https://github.com/aio-libs/aiohttp diff --git a/package/python-aiohttp/python-aiohttp.hash b/package/python-aiohttp/python-aiohttp.hash new file mode 100644 index 00000000..542a46f0 --- /dev/null +++ b/package/python-aiohttp/python-aiohttp.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aiohttp/json +md5 f237bcac4ade112b9e7c4b1098197244 aiohttp-3.9.3.tar.gz +sha256 90842933e5d1ff760fae6caca4b2b3edba53ba8f4b71e95dacf2818a2aca06f7 aiohttp-3.9.3.tar.gz +# Locally computed sha256 checksums +sha256 9f80d0db7d755a941db4572172c270ecbd8f082ba215ddd095985942ed94a9eb LICENSE.txt diff --git a/package/python-aiohttp/python-aiohttp.mk b/package/python-aiohttp/python-aiohttp.mk new file mode 100644 index 00000000..315d68cb --- /dev/null +++ b/package/python-aiohttp/python-aiohttp.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-aiohttp +# +################################################################################ + +PYTHON_AIOHTTP_VERSION = 3.9.3 +PYTHON_AIOHTTP_SOURCE = aiohttp-$(PYTHON_AIOHTTP_VERSION).tar.gz +PYTHON_AIOHTTP_SITE = https://files.pythonhosted.org/packages/18/93/1f005bbe044471a0444a82cdd7356f5120b9cf94fe2c50c0cdbf28f1258b +PYTHON_AIOHTTP_SETUP_TYPE = setuptools +PYTHON_AIOHTTP_LICENSE = Apache-2.0 +PYTHON_AIOHTTP_LICENSE_FILES = LICENSE.txt +PYTHON_AIOHTTP_CPE_ID_VENDOR = aiohttp +PYTHON_AIOHTTP_CPE_ID_PRODUCT = aiohttp + +$(eval $(python-package)) diff --git a/package/python-aiojobs/Config.in b/package/python-aiojobs/Config.in new file mode 100644 index 00000000..0cdd1c10 --- /dev/null +++ b/package/python-aiojobs/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_AIOJOBS + bool "python-aiojobs" + help + Jobs scheduler for managing background task (asyncio). + + https://github.com/aio-libs/aiojobs diff --git a/package/python-aiojobs/python-aiojobs.hash b/package/python-aiojobs/python-aiojobs.hash new file mode 100644 index 00000000..baaa61b3 --- /dev/null +++ b/package/python-aiojobs/python-aiojobs.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aiojobs/json +md5 d4742018c2188147f1efa41645b5758b aiojobs-1.2.1.tar.gz +sha256 59d6e7ad7829e9d0f73bfceeae28153b541be6b0959a08cc5ceb222717c888ff aiojobs-1.2.1.tar.gz +# Locally computed sha256 checksums +sha256 1803dc89455114eefad3b827543343edc2452432fdac29b5edc66c8b66d4cbf3 LICENSE diff --git a/package/python-aiojobs/python-aiojobs.mk b/package/python-aiojobs/python-aiojobs.mk new file mode 100644 index 00000000..9e4a55e1 --- /dev/null +++ b/package/python-aiojobs/python-aiojobs.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-aiojobs +# +################################################################################ + +PYTHON_AIOJOBS_VERSION = 1.2.1 +PYTHON_AIOJOBS_SOURCE = aiojobs-$(PYTHON_AIOJOBS_VERSION).tar.gz +PYTHON_AIOJOBS_SITE = https://files.pythonhosted.org/packages/07/ad/e4240f9225022798e0e651ced8f6dc022e88eae4f2df6e1482a8f3c0d54d +PYTHON_AIOJOBS_SETUP_TYPE = setuptools +PYTHON_AIOJOBS_LICENSE = Apache-2.0 +PYTHON_AIOJOBS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-aiologstash/0001-Fix-flit_core-build-requires-backend.patch b/package/python-aiologstash/0001-Fix-flit_core-build-requires-backend.patch new file mode 100644 index 00000000..99a150a3 --- /dev/null +++ b/package/python-aiologstash/0001-Fix-flit_core-build-requires-backend.patch @@ -0,0 +1,31 @@ +From 3c4d1203eb9ee3dbe79b096d587c9baaf8b802ed Mon Sep 17 00:00:00 2001 +From: James Hilliard +Date: Fri, 11 Mar 2022 13:26:31 -0700 +Subject: [PATCH] Fix flit_core build requires/backend. + +Only flit_core should be required by pyproject.toml, the regular flit +package is the pep517 frontend which is not what should be set for the +build system. + +Signed-off-by: James Hilliard +Upstream: https://github.com/aio-libs/aiologstash/pull/258 +--- + pyproject.toml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/pyproject.toml b/pyproject.toml +index 7bdaebb..252a660 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -1,6 +1,6 @@ + [build-system] +-requires = ["flit"] +-build-backend = "flit.buildapi" ++requires = ["flit_core"] ++build-backend = "flit_core.buildapi" + + [tool.flit.metadata] + module = "aiologstash" +-- +2.34.1 + diff --git a/package/python-aiologstash/Config.in b/package/python-aiologstash/Config.in new file mode 100644 index 00000000..ce7ebe03 --- /dev/null +++ b/package/python-aiologstash/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_AIOLOGSTASH + bool "python-aiologstash" + select BR2_PACKAGE_PYTHON_ASYNC_TIMEOUT # runtime + select BR2_PACKAGE_PYTHON_LOGSTASH # runtime + help + asyncio-compatible logstash logging handler. + + https://github.com/aio-libs/aiologstash diff --git a/package/python-aiologstash/python-aiologstash.hash b/package/python-aiologstash/python-aiologstash.hash new file mode 100644 index 00000000..81ebfedf --- /dev/null +++ b/package/python-aiologstash/python-aiologstash.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aiologstash/json +md5 1e321c11b34477f780f31b2553557d69 aiologstash-2.0.0.tar.gz +sha256 698522126ffd4e905cd5f52a08092a0a78096c8f0e28bc1e303369873da71f78 aiologstash-2.0.0.tar.gz +# Locally computed sha256 checksums +sha256 beddf3a80aaaa71ebd6765b13bc680bd0450bb81191249cc889539523f9404ec LICENSE diff --git a/package/python-aiologstash/python-aiologstash.mk b/package/python-aiologstash/python-aiologstash.mk new file mode 100644 index 00000000..bcf60a72 --- /dev/null +++ b/package/python-aiologstash/python-aiologstash.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-aiologstash +# +################################################################################ + +PYTHON_AIOLOGSTASH_VERSION = 2.0.0 +PYTHON_AIOLOGSTASH_SOURCE = aiologstash-$(PYTHON_AIOLOGSTASH_VERSION).tar.gz +PYTHON_AIOLOGSTASH_SITE = https://files.pythonhosted.org/packages/1c/dc/382861d5d25ccc976d02118922598fc4547f74f3287793e270ed614d8176 +PYTHON_AIOLOGSTASH_SETUP_TYPE = flit +PYTHON_AIOLOGSTASH_LICENSE = MIT +PYTHON_AIOLOGSTASH_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-aiomonitor/Config.in b/package/python-aiomonitor/Config.in new file mode 100644 index 00000000..9f3787f9 --- /dev/null +++ b/package/python-aiomonitor/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_PYTHON_AIOMONITOR + bool "python-aiomonitor" + select BR2_PACKAGE_PYTHON_AIOCONSOLE # runtime + select BR2_PACKAGE_PYTHON_AIOHTTP # runtime + select BR2_PACKAGE_PYTHON_ATTRS # runtime + select BR2_PACKAGE_PYTHON_CLICK # runtime + select BR2_PACKAGE_PYTHON_JANUS # runtime + select BR2_PACKAGE_PYTHON_JINJA2 # runtime + select BR2_PACKAGE_PYTHON_PROMPT_TOOLKIT # runtime + select BR2_PACKAGE_PYTHON_TERMINALTABLES # runtime + select BR2_PACKAGE_PYTHON_TRAFARET # runtime + select BR2_PACKAGE_PYTHON_TYPING_EXTENSIONS # runtime + help + aiomonitor adds monitor and python REPL capabilities for + asyncio application. + + https://github.com/aio-libs/aiomonitor diff --git a/package/python-aiomonitor/python-aiomonitor.hash b/package/python-aiomonitor/python-aiomonitor.hash new file mode 100644 index 00000000..f1c0e376 --- /dev/null +++ b/package/python-aiomonitor/python-aiomonitor.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aiomonitor/json +md5 75fc8f84c0ff385931d76c46265cfc0d aiomonitor-0.7.0.tar.gz +sha256 109b9ad309a44c0c5db1219d106f4062615151ad3f0e288a0c104fbb004d0398 aiomonitor-0.7.0.tar.gz +# Locally computed sha256 checksums +sha256 98397c300949e0cc1ddc68b0e48e67b10f2d0a4ffada4903d891a1315fe04156 LICENSE diff --git a/package/python-aiomonitor/python-aiomonitor.mk b/package/python-aiomonitor/python-aiomonitor.mk new file mode 100644 index 00000000..8eaddcbf --- /dev/null +++ b/package/python-aiomonitor/python-aiomonitor.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-aiomonitor +# +################################################################################ + +PYTHON_AIOMONITOR_VERSION = 0.7.0 +PYTHON_AIOMONITOR_SOURCE = aiomonitor-$(PYTHON_AIOMONITOR_VERSION).tar.gz +PYTHON_AIOMONITOR_SITE = https://files.pythonhosted.org/packages/50/30/1d903b716489c2b5d0a92baccf172f972e97c2de94d4ea41c154287e9b60 +PYTHON_AIOMONITOR_SETUP_TYPE = setuptools +PYTHON_AIOMONITOR_LICENSE = Apache-2.0 +PYTHON_AIOMONITOR_LICENSE_FILES = LICENSE +PYTHON_AIOMONITOR_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-aioprocessing/Config.in b/package/python-aioprocessing/Config.in new file mode 100644 index 00000000..381805c7 --- /dev/null +++ b/package/python-aioprocessing/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_AIOPROCESSING + bool "python-aioprocessing" + help + A Python 3.5+ library that integrates the multiprocessing + module with asyncio. + + https://github.com/dano/aioprocessing diff --git a/package/python-aioprocessing/python-aioprocessing.hash b/package/python-aioprocessing/python-aioprocessing.hash new file mode 100644 index 00000000..8913a7ab --- /dev/null +++ b/package/python-aioprocessing/python-aioprocessing.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aioprocessing/json +md5 e533c65f5879374c27f266c2040405ea aioprocessing-2.0.1.tar.gz +sha256 fe01c7b1a38c78168611d3040e73d93036c3b7c8a649d636dc9ed7a3bc9b1ba2 aioprocessing-2.0.1.tar.gz +# Locally computed sha256 checksums +sha256 53c809e8f0b91a68a39477e5fbdf77fe2b74dd6a1647c2dd9b7b22fed135239e LICENSE.txt diff --git a/package/python-aioprocessing/python-aioprocessing.mk b/package/python-aioprocessing/python-aioprocessing.mk new file mode 100644 index 00000000..6cd59ab5 --- /dev/null +++ b/package/python-aioprocessing/python-aioprocessing.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-aioprocessing +# +################################################################################ + +PYTHON_AIOPROCESSING_VERSION = 2.0.1 +PYTHON_AIOPROCESSING_SOURCE = aioprocessing-$(PYTHON_AIOPROCESSING_VERSION).tar.gz +PYTHON_AIOPROCESSING_SITE = https://files.pythonhosted.org/packages/4d/85/9a75151e7049bf144c01384279201d82d99484bd658f8e6fb013552d8724 +PYTHON_AIOPROCESSING_SETUP_TYPE = flit +PYTHON_AIOPROCESSING_LICENSE = BSD-2-Clause +PYTHON_AIOPROCESSING_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-aioredis/Config.in b/package/python-aioredis/Config.in new file mode 100644 index 00000000..46ed2c7a --- /dev/null +++ b/package/python-aioredis/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_AIOREDIS + bool "python-aioredis" + select BR2_PACKAGE_PYTHON_ASYNC_TIMEOUT # runtime + select BR2_PACKAGE_PYTHON_HIREDIS # runtime + help + Provides simple and clear interface to Redis based on asyncio. + + https://github.com/aio-libs/aioredis diff --git a/package/python-aioredis/python-aioredis.hash b/package/python-aioredis/python-aioredis.hash new file mode 100644 index 00000000..29e63610 --- /dev/null +++ b/package/python-aioredis/python-aioredis.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aioredis/json +md5 8f3547af83ef4b863b18c19f23166a9d aioredis-2.0.1.tar.gz +sha256 eaa51aaf993f2d71f54b70527c440437ba65340588afeb786cd87c55c89cd98e aioredis-2.0.1.tar.gz +# Locally computed sha256 checksums +sha256 183b21f240e41af611c951d01d4f36793d470a82d5fd79efc21f25ae4cf68543 LICENSE diff --git a/package/python-aioredis/python-aioredis.mk b/package/python-aioredis/python-aioredis.mk new file mode 100644 index 00000000..798dbd0c --- /dev/null +++ b/package/python-aioredis/python-aioredis.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-aioredis +# +################################################################################ + +PYTHON_AIOREDIS_VERSION = 2.0.1 +PYTHON_AIOREDIS_SOURCE = aioredis-$(PYTHON_AIOREDIS_VERSION).tar.gz +PYTHON_AIOREDIS_SITE = https://files.pythonhosted.org/packages/2e/cf/9eb144a0b05809ffc5d29045c4b51039000ea275bc1268d0351c9e7dfc06 +PYTHON_AIOREDIS_SETUP_TYPE = setuptools +PYTHON_AIOREDIS_LICENSE = MIT +PYTHON_AIOREDIS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-aiorwlock/Config.in b/package/python-aiorwlock/Config.in new file mode 100644 index 00000000..3b618905 --- /dev/null +++ b/package/python-aiorwlock/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_AIORWLOCK + bool "python-aiorwlock" + help + Read write lock for asyncio. + + https://github.com/aio-libs/aiorwlock diff --git a/package/python-aiorwlock/python-aiorwlock.hash b/package/python-aiorwlock/python-aiorwlock.hash new file mode 100644 index 00000000..15584a8a --- /dev/null +++ b/package/python-aiorwlock/python-aiorwlock.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aiorwlock/json +md5 28e4812a1d1d67a2be4370209ece5528 aiorwlock-1.3.0.tar.gz +sha256 83f12d87df4b9728a0b8fda1756585ab0d652b107bab59c6084e1b1ad692ab45 aiorwlock-1.3.0.tar.gz +# Locally computed sha256 checksums +sha256 fa99ee9d7727194a9f8994c67d1948dc42e8e00ab809fd4a47acfae119d11403 LICENSE diff --git a/package/python-aiorwlock/python-aiorwlock.mk b/package/python-aiorwlock/python-aiorwlock.mk new file mode 100644 index 00000000..a5e7eeae --- /dev/null +++ b/package/python-aiorwlock/python-aiorwlock.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-aiorwlock +# +################################################################################ + +PYTHON_AIORWLOCK_VERSION = 1.3.0 +PYTHON_AIORWLOCK_SOURCE = aiorwlock-$(PYTHON_AIORWLOCK_VERSION).tar.gz +PYTHON_AIORWLOCK_SITE = https://files.pythonhosted.org/packages/77/fe/7027595f5e635ac1f597f7160a420e1f642a474576efb697001efea16bdc +PYTHON_AIORWLOCK_SETUP_TYPE = setuptools +PYTHON_AIORWLOCK_LICENSE = Apache-2.0 +PYTHON_AIORWLOCK_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-aiosignal/Config.in b/package/python-aiosignal/Config.in new file mode 100644 index 00000000..9bb29983 --- /dev/null +++ b/package/python-aiosignal/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_AIOSIGNAL + bool "python-aiosignal" + select BR2_PACKAGE_PYTHON_FROZENLIST # runtime + help + aiosignal: a list of registered asynchronous callbacks. + + https://github.com/aio-libs/aiosignal diff --git a/package/python-aiosignal/python-aiosignal.hash b/package/python-aiosignal/python-aiosignal.hash new file mode 100644 index 00000000..061816a6 --- /dev/null +++ b/package/python-aiosignal/python-aiosignal.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aiosignal/json +md5 2a15f4008b899377590cef4773020902 aiosignal-1.3.1.tar.gz +sha256 54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc aiosignal-1.3.1.tar.gz +# Locally computed sha256 checksums +sha256 6fd5243e92dd7f98ec69c7ac377728e74905709ff527a5bf98d6d0263c04f5b6 LICENSE diff --git a/package/python-aiosignal/python-aiosignal.mk b/package/python-aiosignal/python-aiosignal.mk new file mode 100644 index 00000000..ffd581cf --- /dev/null +++ b/package/python-aiosignal/python-aiosignal.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-aiosignal +# +################################################################################ + +PYTHON_AIOSIGNAL_VERSION = 1.3.1 +PYTHON_AIOSIGNAL_SOURCE = aiosignal-$(PYTHON_AIOSIGNAL_VERSION).tar.gz +PYTHON_AIOSIGNAL_SITE = https://files.pythonhosted.org/packages/ae/67/0952ed97a9793b4958e5736f6d2b346b414a2cd63e82d05940032f45b32f +PYTHON_AIOSIGNAL_SETUP_TYPE = setuptools +PYTHON_AIOSIGNAL_LICENSE = Apache-2.0 +PYTHON_AIOSIGNAL_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-aiosqlite/Config.in b/package/python-aiosqlite/Config.in new file mode 100644 index 00000000..c95c2b95 --- /dev/null +++ b/package/python-aiosqlite/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_AIOSQLITE + bool "python-aiosqlite" + select BR2_PACKAGE_PYTHON3_SQLITE # runtime + help + aiosqlite provides a friendly, async interface to sqlite + databases. + + https://aiosqlite.omnilib.dev diff --git a/package/python-aiosqlite/python-aiosqlite.hash b/package/python-aiosqlite/python-aiosqlite.hash new file mode 100644 index 00000000..52c78a76 --- /dev/null +++ b/package/python-aiosqlite/python-aiosqlite.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aiosqlite/json +md5 22620fe09bc9d9df3bffef19919eed7f aiosqlite-0.20.0.tar.gz +sha256 6d35c8c256637f4672f843c31021464090805bf925385ac39473fb16eaaca3d7 aiosqlite-0.20.0.tar.gz +# Locally computed sha256 checksums +sha256 ab0c171dc3ef8bf325a84bb77d855421f2611335ddf6e08816b2922c4edc0f76 LICENSE diff --git a/package/python-aiosqlite/python-aiosqlite.mk b/package/python-aiosqlite/python-aiosqlite.mk new file mode 100644 index 00000000..a48d676c --- /dev/null +++ b/package/python-aiosqlite/python-aiosqlite.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-aiosqlite +# +################################################################################ + +PYTHON_AIOSQLITE_VERSION = 0.20.0 +PYTHON_AIOSQLITE_SOURCE = aiosqlite-$(PYTHON_AIOSQLITE_VERSION).tar.gz +PYTHON_AIOSQLITE_SITE = https://files.pythonhosted.org/packages/0d/3a/22ff5415bf4d296c1e92b07fd746ad42c96781f13295a074d58e77747848 +PYTHON_AIOSQLITE_SETUP_TYPE = flit +PYTHON_AIOSQLITE_LICENSE = MIT +PYTHON_AIOSQLITE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-aiozipkin/Config.in b/package/python-aiozipkin/Config.in new file mode 100644 index 00000000..6ce6d86b --- /dev/null +++ b/package/python-aiozipkin/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_AIOZIPKIN + bool "python-aiozipkin" + select BR2_PACKAGE_PYTHON_AIOHTTP # runtime + help + Distributed tracing instrumentation for asyncio application + with zipkin. + + https://github.com/aio-libs/aiozipkin diff --git a/package/python-aiozipkin/python-aiozipkin.hash b/package/python-aiozipkin/python-aiozipkin.hash new file mode 100644 index 00000000..d1563b20 --- /dev/null +++ b/package/python-aiozipkin/python-aiozipkin.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/aiozipkin/json +md5 0fea8a200ab2a94fe9a2340a8cbf8512 aiozipkin-1.1.1.tar.gz +sha256 9b82619d9ef309e72627a81ab3fda0c9b83e530844cf59f2e9a011e9a2a1293f aiozipkin-1.1.1.tar.gz +# Locally computed sha256 checksums +sha256 98397c300949e0cc1ddc68b0e48e67b10f2d0a4ffada4903d891a1315fe04156 LICENSE diff --git a/package/python-aiozipkin/python-aiozipkin.mk b/package/python-aiozipkin/python-aiozipkin.mk new file mode 100644 index 00000000..06ea9ef1 --- /dev/null +++ b/package/python-aiozipkin/python-aiozipkin.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-aiozipkin +# +################################################################################ + +PYTHON_AIOZIPKIN_VERSION = 1.1.1 +PYTHON_AIOZIPKIN_SOURCE = aiozipkin-$(PYTHON_AIOZIPKIN_VERSION).tar.gz +PYTHON_AIOZIPKIN_SITE = https://files.pythonhosted.org/packages/f2/fe/26a60a7c9e91c968eac5dacab2948ed931a676880a6878695ff281c72b8f +PYTHON_AIOZIPKIN_SETUP_TYPE = setuptools +PYTHON_AIOZIPKIN_LICENSE = Apache-2.0 +PYTHON_AIOZIPKIN_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-alembic/Config.in b/package/python-alembic/Config.in new file mode 100644 index 00000000..33fe3c36 --- /dev/null +++ b/package/python-alembic/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_ALEMBIC + bool "python-alembic" + select BR2_PACKAGE_PYTHON_MAKO # runtime + select BR2_PACKAGE_PYTHON_SQLALCHEMY # runtime + select BR2_PACKAGE_PYTHON_TYPING_EXTENSIONS # runtime + help + Alembic is a database migrations tool written by the author + of SQLAlchemy. + + https://alembic.sqlalchemy.org diff --git a/package/python-alembic/python-alembic.hash b/package/python-alembic/python-alembic.hash new file mode 100644 index 00000000..1f752ebc --- /dev/null +++ b/package/python-alembic/python-alembic.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/alembic/json +md5 29579d34ea694627280b52a3d3116664 alembic-1.13.1.tar.gz +sha256 4932c8558bf68f2ee92b9bbcb8218671c627064d5b08939437af6d77dc05e595 alembic-1.13.1.tar.gz +# Locally computed sha256 checksums +sha256 b285268a86f4416eaf4d05b2ae3880c156f7c59a8f935a402bc056eafb33af08 LICENSE diff --git a/package/python-alembic/python-alembic.mk b/package/python-alembic/python-alembic.mk new file mode 100644 index 00000000..52e30e39 --- /dev/null +++ b/package/python-alembic/python-alembic.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-alembic +# +################################################################################ + +PYTHON_ALEMBIC_VERSION = 1.13.1 +PYTHON_ALEMBIC_SOURCE = alembic-$(PYTHON_ALEMBIC_VERSION).tar.gz +PYTHON_ALEMBIC_SITE = https://files.pythonhosted.org/packages/7b/24/ddce068e2ac9b5581bd58602edb2a1be1b0752e1ff2963c696ecdbe0470d +PYTHON_ALEMBIC_SETUP_TYPE = setuptools +PYTHON_ALEMBIC_LICENSE = MIT +PYTHON_ALEMBIC_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-alsaaudio/Config.in b/package/python-alsaaudio/Config.in new file mode 100644 index 00000000..60523bf7 --- /dev/null +++ b/package/python-alsaaudio/Config.in @@ -0,0 +1,14 @@ +comment "python-alsaaudio needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_PYTHON_ALSAAUDIO + bool "python-alsaaudio" + depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_PCM + select BR2_PACKAGE_ALSA_LIB_MIXER + help + The PyAlsaAudio package contains bindings for the ALSA sound + API. + + http://larsimmisch.github.io/pyalsaaudio/ diff --git a/package/python-alsaaudio/python-alsaaudio.hash b/package/python-alsaaudio/python-alsaaudio.hash new file mode 100644 index 00000000..ab8b868b --- /dev/null +++ b/package/python-alsaaudio/python-alsaaudio.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pyalsaaudio/json +md5 720b2e1a47a5fdb587ea1b4eabbd23e6 pyalsaaudio-0.10.0.tar.gz +sha256 e21175500a2bd310ae3867e7991639defc1e2a5c92cf1b9f7083296b346738ab pyalsaaudio-0.10.0.tar.gz +# Locally computed sha256 checksums +sha256 ef6ba930f96986d78082e67c817ac617b9e833d60d5a0460f24c9c674a010935 LICENSE diff --git a/package/python-alsaaudio/python-alsaaudio.mk b/package/python-alsaaudio/python-alsaaudio.mk new file mode 100644 index 00000000..0692f4a8 --- /dev/null +++ b/package/python-alsaaudio/python-alsaaudio.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-alsaaudio +# +################################################################################ + +PYTHON_ALSAAUDIO_VERSION = 0.10.0 +PYTHON_ALSAAUDIO_SOURCE = pyalsaaudio-$(PYTHON_ALSAAUDIO_VERSION).tar.gz +PYTHON_ALSAAUDIO_SITE = https://files.pythonhosted.org/packages/e5/f0/411140b1c2d8eea8531233f39103e7ebda560030493e298be6439ce36936 +PYTHON_ALSAAUDIO_SETUP_TYPE = setuptools +PYTHON_ALSAAUDIO_LICENSE = Python-2.0 +PYTHON_ALSAAUDIO_LICENSE_FILES = LICENSE +PYTHON_ALSAAUDIO_DEPENDENCIES = alsa-lib + +$(eval $(python-package)) diff --git a/package/python-annotated-types/Config.in b/package/python-annotated-types/Config.in new file mode 100644 index 00000000..36525a52 --- /dev/null +++ b/package/python-annotated-types/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_ANNOTATED_TYPES + bool "python-annotated-types" + help + Reusable constraint types to use with typing.Annotated. + + https://github.com/annotated-types/annotated-types diff --git a/package/python-annotated-types/python-annotated-types.hash b/package/python-annotated-types/python-annotated-types.hash new file mode 100644 index 00000000..fc92476e --- /dev/null +++ b/package/python-annotated-types/python-annotated-types.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/annotated-types/json +md5 5c943b7c51b0b7dcadf46da4a99c84a1 annotated_types-0.7.0.tar.gz +sha256 aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89 annotated_types-0.7.0.tar.gz +# Locally computed sha256 checksums +sha256 fe1049884b1a0d9342901e88e07f32925d24b3121d9972b6a6805fb9824b095d LICENSE diff --git a/package/python-annotated-types/python-annotated-types.mk b/package/python-annotated-types/python-annotated-types.mk new file mode 100644 index 00000000..e7a3b7e6 --- /dev/null +++ b/package/python-annotated-types/python-annotated-types.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-annotated-types +# +################################################################################ + +PYTHON_ANNOTATED_TYPES_VERSION = 0.7.0 +PYTHON_ANNOTATED_TYPES_SOURCE = annotated_types-$(PYTHON_ANNOTATED_TYPES_VERSION).tar.gz +PYTHON_ANNOTATED_TYPES_SITE = https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5 +PYTHON_ANNOTATED_TYPES_SETUP_TYPE = pep517 +PYTHON_ANNOTATED_TYPES_LICENSE = MIT +PYTHON_ANNOTATED_TYPES_LICENSE_FILES = LICENSE +PYTHON_ANNOTATED_TYPES_DEPENDENCIES = host-python-hatchling + +$(eval $(python-package)) diff --git a/package/python-ansicolors/Config.in b/package/python-ansicolors/Config.in new file mode 100644 index 00000000..78da50df --- /dev/null +++ b/package/python-ansicolors/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_ANSICOLORS + bool "python-ansicolors" + help + ANSI colors for Python. + + http://github.com/jonathaneunice/colors/ diff --git a/package/python-ansicolors/python-ansicolors.hash b/package/python-ansicolors/python-ansicolors.hash new file mode 100644 index 00000000..9fb51eb5 --- /dev/null +++ b/package/python-ansicolors/python-ansicolors.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/ansicolors/json +md5 9ca7e2396ffa2e20af023c6b83ab7b14 ansicolors-1.1.8.zip +sha256 99f94f5e3348a0bcd43c82e5fc4414013ccc19d70bd939ad71e0133ce9c372e0 ansicolors-1.1.8.zip +# Locally computed sha256 checksums +sha256 71a13496c621f01b454f9aa54fa608a712f58eb253e6dd2c91027fe78340c773 LICENSE diff --git a/package/python-ansicolors/python-ansicolors.mk b/package/python-ansicolors/python-ansicolors.mk new file mode 100644 index 00000000..787ce8c4 --- /dev/null +++ b/package/python-ansicolors/python-ansicolors.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# python-ansicolors +# +################################################################################ + +PYTHON_ANSICOLORS_VERSION = 1.1.8 +PYTHON_ANSICOLORS_SOURCE = ansicolors-$(PYTHON_ANSICOLORS_VERSION).zip +PYTHON_ANSICOLORS_SITE = https://files.pythonhosted.org/packages/76/31/7faed52088732704523c259e24c26ce6f2f33fbeff2ff59274560c27628e +PYTHON_ANSICOLORS_SETUP_TYPE = setuptools +PYTHON_ANSICOLORS_LICENSE = ISC +PYTHON_ANSICOLORS_LICENSE_FILES = LICENSE + +define PYTHON_ANSICOLORS_EXTRACT_CMDS + unzip $(PYTHON_ANSICOLORS_DL_DIR)/$(PYTHON_ANSICOLORS_SOURCE) -d $(@D) + mv $(@D)/ansicolors-$(PYTHON_ANSICOLORS_VERSION)/* $(@D) + $(RM) -r $(@D)/ansicolors-$(PYTHON_ANSICOLORS_VERSION) +endef + +$(eval $(python-package)) diff --git a/package/python-anyio/Config.in b/package/python-anyio/Config.in new file mode 100644 index 00000000..d843f37a --- /dev/null +++ b/package/python-anyio/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_ANYIO + bool "python-anyio" + select BR2_PACKAGE_PYTHON_IDNA # runtime + select BR2_PACKAGE_PYTHON_SNIFFIO # runtime + help + High level compatibility layer for multiple asynchronous + event loop implementations. + + https://github.com/agronholm/anyio diff --git a/package/python-anyio/python-anyio.hash b/package/python-anyio/python-anyio.hash new file mode 100644 index 00000000..c1edeca1 --- /dev/null +++ b/package/python-anyio/python-anyio.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/anyio/json +md5 04346dd3631f405d0786ca0f441dace1 anyio-4.4.0.tar.gz +sha256 5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94 anyio-4.4.0.tar.gz +# Locally computed sha256 checksums +sha256 5361ac9dc58f2ef5fd2e9b09c68297c17f04950909bbc8023bdb82eacf22c2b0 LICENSE diff --git a/package/python-anyio/python-anyio.mk b/package/python-anyio/python-anyio.mk new file mode 100644 index 00000000..4f9cbb78 --- /dev/null +++ b/package/python-anyio/python-anyio.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-anyio +# +################################################################################ + +PYTHON_ANYIO_VERSION = 4.4.0 +PYTHON_ANYIO_SOURCE = anyio-$(PYTHON_ANYIO_VERSION).tar.gz +PYTHON_ANYIO_SITE = https://files.pythonhosted.org/packages/e6/e3/c4c8d473d6780ef1853d630d581f70d655b4f8d7553c6997958c283039a2 +PYTHON_ANYIO_SETUP_TYPE = setuptools +PYTHON_ANYIO_LICENSE = MIT +PYTHON_ANYIO_LICENSE_FILES = LICENSE +PYTHON_ANYIO_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-apispec/Config.in b/package/python-apispec/Config.in new file mode 100644 index 00000000..7a322c99 --- /dev/null +++ b/package/python-apispec/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_APISPEC + bool "python-apispec" + select BR2_PACKAGE_PYTHON_PACKAGING # runtime + help + A pluggable API specification generator. Currently supports + the OpenAPI Specification (f.k.a. the Swagger + specification). + + https://github.com/marshmallow-code/apispec diff --git a/package/python-apispec/python-apispec.hash b/package/python-apispec/python-apispec.hash new file mode 100644 index 00000000..9c47a2c1 --- /dev/null +++ b/package/python-apispec/python-apispec.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/apispec/json +md5 1aa13f34a226fca977d72f061360e96e apispec-6.3.1.tar.gz +sha256 b38e4479916d43f2b1e88ce15fc2fae93adf2e8d55cb59ec74ac66a827941483 apispec-6.3.1.tar.gz +# Locally computed sha256 checksums +sha256 a452afcef750956a8396f7e7a6f913a117d28ef99a13170c29dc74c3b7a95f29 LICENSE diff --git a/package/python-apispec/python-apispec.mk b/package/python-apispec/python-apispec.mk new file mode 100644 index 00000000..aee0e168 --- /dev/null +++ b/package/python-apispec/python-apispec.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-apispec +# +################################################################################ + +PYTHON_APISPEC_VERSION = 6.3.1 +PYTHON_APISPEC_SOURCE = apispec-$(PYTHON_APISPEC_VERSION).tar.gz +PYTHON_APISPEC_SITE = https://files.pythonhosted.org/packages/ff/0c/e70aa981d8ebe2e8a500a85c923579ce3363feccd704268e6ff8053875dd +PYTHON_APISPEC_SETUP_TYPE = setuptools +PYTHON_APISPEC_LICENSE = MIT +PYTHON_APISPEC_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-appdirs/Config.in b/package/python-appdirs/Config.in new file mode 100644 index 00000000..5585759a --- /dev/null +++ b/package/python-appdirs/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_APPDIRS + bool "python-appdirs" + help + A small Python module for determining appropriate platform- + specific dirs, e.g. a "user data dir". + + http://github.com/ActiveState/appdirs diff --git a/package/python-appdirs/python-appdirs.hash b/package/python-appdirs/python-appdirs.hash new file mode 100644 index 00000000..52689b8b --- /dev/null +++ b/package/python-appdirs/python-appdirs.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/appdirs/json +md5 d6bca12613174185dd9abc8a29f4f012 appdirs-1.4.4.tar.gz +sha256 7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41 appdirs-1.4.4.tar.gz +# Locally computed sha256 checksums +sha256 36ddb4d0a745a93ab203203d7190814b1b89727d254caff48c7a7afbbd47000b LICENSE.txt diff --git a/package/python-appdirs/python-appdirs.mk b/package/python-appdirs/python-appdirs.mk new file mode 100644 index 00000000..222aadbb --- /dev/null +++ b/package/python-appdirs/python-appdirs.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-appdirs +# +################################################################################ + +PYTHON_APPDIRS_VERSION = 1.4.4 +PYTHON_APPDIRS_SOURCE = appdirs-$(PYTHON_APPDIRS_VERSION).tar.gz +PYTHON_APPDIRS_SITE = https://files.pythonhosted.org/packages/d7/d8/05696357e0311f5b5c316d7b95f46c669dd9c15aaeecbb48c7d0aeb88c40 +PYTHON_APPDIRS_SETUP_TYPE = setuptools +PYTHON_APPDIRS_LICENSE = MIT +PYTHON_APPDIRS_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-argh/Config.in b/package/python-argh/Config.in new file mode 100644 index 00000000..5da6625d --- /dev/null +++ b/package/python-argh/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_ARGH + bool "python-argh" + help + An unobtrusive argparse wrapper with natural syntax. + + http://github.com/neithere/argh/ diff --git a/package/python-argh/python-argh.hash b/package/python-argh/python-argh.hash new file mode 100644 index 00000000..bac9df42 --- /dev/null +++ b/package/python-argh/python-argh.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/argh/json +md5 2659a6353589156e6aa65a99797f8913 argh-0.31.0.tar.gz +sha256 b93093544309ddbfe6c73dc9bfd60dbc4acecef39f3f464774b3084a1ec5d7b0 argh-0.31.0.tar.gz +# Locally computed sha256 checksums +sha256 2594f46b9b23a5fddeca090faeb270c7ceee8116675fe35082be859aa7466e89 COPYING +sha256 e3a994d82e644b03a792a930f574002658412f62407f5fee083f2555c5f23118 COPYING.LESSER diff --git a/package/python-argh/python-argh.mk b/package/python-argh/python-argh.mk new file mode 100644 index 00000000..0da3281d --- /dev/null +++ b/package/python-argh/python-argh.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-argh +# +################################################################################ + +PYTHON_ARGH_VERSION = 0.31.0 +PYTHON_ARGH_SOURCE = argh-$(PYTHON_ARGH_VERSION).tar.gz +PYTHON_ARGH_SITE = https://files.pythonhosted.org/packages/7c/3c/1b7f3fab380c96d61119178040c0183161fe0f182c4da3933bcb3284538f +PYTHON_ARGH_SETUP_TYPE = flit +PYTHON_ARGH_LICENSE = LGPL-3.0+ +PYTHON_ARGH_LICENSE_FILES = COPYING COPYING.LESSER + +$(eval $(python-package)) diff --git a/package/python-argon2-cffi-bindings/Config.in b/package/python-argon2-cffi-bindings/Config.in new file mode 100644 index 00000000..2e6a4a6c --- /dev/null +++ b/package/python-argon2-cffi-bindings/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_ARGON2_CFFI_BINDINGS + bool "python-argon2-cffi-bindings" + depends on BR2_USE_MMU # libargon2 + depends on !BR2_STATIC_LIBS # libargon2 + select BR2_PACKAGE_PYTHON_CFFI # runtime + select BR2_PACKAGE_LIBARGON2 + help + Low-level CFFI bindings for Argon2. + + https://github.com/hynek/argon2-cffi-bindings diff --git a/package/python-argon2-cffi-bindings/python-argon2-cffi-bindings.hash b/package/python-argon2-cffi-bindings/python-argon2-cffi-bindings.hash new file mode 100644 index 00000000..e088d3da --- /dev/null +++ b/package/python-argon2-cffi-bindings/python-argon2-cffi-bindings.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/argon2-cffi-bindings/json +md5 f1591e1af7dea9ef3e5b982e2c196c1d argon2-cffi-bindings-21.2.0.tar.gz +sha256 bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3 argon2-cffi-bindings-21.2.0.tar.gz +# Locally computed sha256 checksums +sha256 9c158d4f433627f48ac24b6b4d37970afe4172514673c5318014d7cca157c6df LICENSE diff --git a/package/python-argon2-cffi-bindings/python-argon2-cffi-bindings.mk b/package/python-argon2-cffi-bindings/python-argon2-cffi-bindings.mk new file mode 100644 index 00000000..f0d71e80 --- /dev/null +++ b/package/python-argon2-cffi-bindings/python-argon2-cffi-bindings.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# python-argon2-cffi-bindings +# +################################################################################ + +PYTHON_ARGON2_CFFI_BINDINGS_VERSION = 21.2.0 +PYTHON_ARGON2_CFFI_BINDINGS_SOURCE = argon2-cffi-bindings-$(PYTHON_ARGON2_CFFI_BINDINGS_VERSION).tar.gz +PYTHON_ARGON2_CFFI_BINDINGS_SITE = https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e +PYTHON_ARGON2_CFFI_BINDINGS_SETUP_TYPE = setuptools +PYTHON_ARGON2_CFFI_BINDINGS_LICENSE = MIT +PYTHON_ARGON2_CFFI_BINDINGS_LICENSE_FILES = LICENSE +PYTHON_ARGON2_CFFI_BINDINGS_DEPENDENCIES = \ + host-python-cffi \ + host-python-setuptools-scm \ + libargon2 +PYTHON_ARGON2_CFFI_BINDINGS_ENV = ARGON2_CFFI_USE_SYSTEM=1 + +ifeq ($(BR2_X86_CPU_HAS_SSE2),y) +PYTHON_ARGON2_CFFI_BINDINGS_ENV += ARGON2_CFFI_USE_SSE2=1 +else +PYTHON_ARGON2_CFFI_BINDINGS_ENV += ARGON2_CFFI_USE_SSE2=0 +endif + +$(eval $(python-package)) diff --git a/package/python-argon2-cffi/Config.in b/package/python-argon2-cffi/Config.in new file mode 100644 index 00000000..4d5a703d --- /dev/null +++ b/package/python-argon2-cffi/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_ARGON2_CFFI + bool "python-argon2-cffi" + depends on BR2_USE_MMU # python-argon2-cffi-bindings + depends on !BR2_STATIC_LIBS # python-argon2-cffi-bindings + select BR2_PACKAGE_PYTHON_ARGON2_CFFI_BINDINGS # runtime + help + The secure Argon2 password hashing algorithm. + + https://argon2-cffi.readthedocs.io/ diff --git a/package/python-argon2-cffi/python-argon2-cffi.hash b/package/python-argon2-cffi/python-argon2-cffi.hash new file mode 100644 index 00000000..e11195e1 --- /dev/null +++ b/package/python-argon2-cffi/python-argon2-cffi.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/argon2-cffi/json +md5 7371c126f21a895b33c4fe7e00ac6fc1 argon2_cffi-23.1.0.tar.gz +sha256 879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08 argon2_cffi-23.1.0.tar.gz +# Locally computed sha256 checksums +sha256 b6944d386e87ccf49d9632da083685a4b7624733e686a7fe283dd2d428341d77 LICENSE diff --git a/package/python-argon2-cffi/python-argon2-cffi.mk b/package/python-argon2-cffi/python-argon2-cffi.mk new file mode 100644 index 00000000..238271f5 --- /dev/null +++ b/package/python-argon2-cffi/python-argon2-cffi.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# python-argon2-cffi +# +################################################################################ + +PYTHON_ARGON2_CFFI_VERSION = 23.1.0 +PYTHON_ARGON2_CFFI_SOURCE = argon2_cffi-$(PYTHON_ARGON2_CFFI_VERSION).tar.gz +PYTHON_ARGON2_CFFI_SITE = https://files.pythonhosted.org/packages/31/fa/57ec2c6d16ecd2ba0cf15f3c7d1c3c2e7b5fcb83555ff56d7ab10888ec8f +PYTHON_ARGON2_CFFI_SETUP_TYPE = pep517 +PYTHON_ARGON2_CFFI_LICENSE = MIT +PYTHON_ARGON2_CFFI_LICENSE_FILES = LICENSE +PYTHON_ARGON2_CFFI_DEPENDENCIES = \ + host-python-hatchling \ + host-python-hatch-fancy-pypi-readme \ + host-python-hatch-vcs + +$(eval $(python-package)) diff --git a/package/python-arrow/Config.in b/package/python-arrow/Config.in new file mode 100644 index 00000000..4a43ef98 --- /dev/null +++ b/package/python-arrow/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_ARROW + bool "python-arrow" + select BR2_PACKAGE_PYTHON_DATEUTIL # runtime + select BR2_PACKAGE_PYTHON_TYPES_PYTHON_DATEUTIL # runtime + help + Better dates and times for Python. + + https://github.com/crsmithdev/arrow/ diff --git a/package/python-arrow/python-arrow.hash b/package/python-arrow/python-arrow.hash new file mode 100644 index 00000000..6120069a --- /dev/null +++ b/package/python-arrow/python-arrow.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/arrow/json +md5 f03ecc3edbe2db99f366142f6e0f6d0b arrow-1.3.0.tar.gz +sha256 d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85 arrow-1.3.0.tar.gz +# Locally computed sha256 checksums +sha256 b481f87296cb0abdb13fd8cbb94b14c328be880ec9e68547a61b84dacffd067a LICENSE diff --git a/package/python-arrow/python-arrow.mk b/package/python-arrow/python-arrow.mk new file mode 100644 index 00000000..793cc264 --- /dev/null +++ b/package/python-arrow/python-arrow.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-arrow +# +################################################################################ + +PYTHON_ARROW_VERSION = 1.3.0 +PYTHON_ARROW_SOURCE = arrow-$(PYTHON_ARROW_VERSION).tar.gz +PYTHON_ARROW_SITE = https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173 +PYTHON_ARROW_SETUP_TYPE = setuptools +PYTHON_ARROW_LICENSE = Apache-2.0 +PYTHON_ARROW_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-asgiref/Config.in b/package/python-asgiref/Config.in new file mode 100644 index 00000000..d0b816c3 --- /dev/null +++ b/package/python-asgiref/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_PYTHON_ASGIREF + bool "python-asgiref" + help + ASGI is a standard for Python asynchronous web apps and + servers to communicate with each other, and positioned as + an asynchronous successor to WSGI. + + This package includes ASGI base libraries, such as: + - Sync-to-async and async-to-sync function wrappers, + asgiref.sync + - Server base classes, asgiref.server + - A WSGI-to-ASGI adapter, in asgiref.wsgi + + http://github.com/django/asgiref/ diff --git a/package/python-asgiref/python-asgiref.hash b/package/python-asgiref/python-asgiref.hash new file mode 100644 index 00000000..7f3bca57 --- /dev/null +++ b/package/python-asgiref/python-asgiref.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/asgiref/json +md5 7cd61836ec3c329f415309f88e92e0e3 asgiref-3.7.2.tar.gz +sha256 9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed asgiref-3.7.2.tar.gz +# Locally computed sha256 checksums +sha256 b846415d1b514e9c1dff14a22deb906d794bc546ca6129f950a18cd091e2a669 LICENSE diff --git a/package/python-asgiref/python-asgiref.mk b/package/python-asgiref/python-asgiref.mk new file mode 100644 index 00000000..abd89624 --- /dev/null +++ b/package/python-asgiref/python-asgiref.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-asgiref +# +################################################################################ + +PYTHON_ASGIREF_VERSION = 3.7.2 +PYTHON_ASGIREF_SOURCE = asgiref-$(PYTHON_ASGIREF_VERSION).tar.gz +PYTHON_ASGIREF_SITE = https://files.pythonhosted.org/packages/12/19/64e38c1c2cbf0da9635b7082bbdf0e89052e93329279f59759c24a10cc96 +PYTHON_ASGIREF_SETUP_TYPE = setuptools +PYTHON_ASGIREF_LICENSE = BSD-3-Clause +PYTHON_ASGIREF_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-asn1crypto/Config.in b/package/python-asn1crypto/Config.in new file mode 100644 index 00000000..fe3b5ebb --- /dev/null +++ b/package/python-asn1crypto/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_ASN1CRYPTO + bool "python-asn1crypto" + help + Fast ASN.1 parser and serializer with definitions for + private keys, public keys, certificates, CRL, OCSP, CMS, + PKCS#3, PKCS#7, PKCS#8, PKCS#12, PKCS#5, X.509 and TSP. + + https://github.com/wbond/asn1crypto diff --git a/package/python-asn1crypto/python-asn1crypto.hash b/package/python-asn1crypto/python-asn1crypto.hash new file mode 100644 index 00000000..4c9fda46 --- /dev/null +++ b/package/python-asn1crypto/python-asn1crypto.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/asn1crypto/json +md5 f7a5271af9b81246fbdf57d703afce2f asn1crypto-1.5.1.tar.gz +sha256 13ae38502be632115abf8a24cbe5f4da52e3b5231990aff31123c805306ccb9c asn1crypto-1.5.1.tar.gz +# Locally computed sha256 checksums +sha256 29c3425e5da53ab842273e5f2f2f068ce2e35df4260f7fa156aa1ac6bed02433 LICENSE diff --git a/package/python-asn1crypto/python-asn1crypto.mk b/package/python-asn1crypto/python-asn1crypto.mk new file mode 100644 index 00000000..d8d61761 --- /dev/null +++ b/package/python-asn1crypto/python-asn1crypto.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-asn1crypto +# +################################################################################ + +PYTHON_ASN1CRYPTO_VERSION = 1.5.1 +PYTHON_ASN1CRYPTO_SOURCE = asn1crypto-$(PYTHON_ASN1CRYPTO_VERSION).tar.gz +PYTHON_ASN1CRYPTO_SITE = https://files.pythonhosted.org/packages/de/cf/d547feed25b5244fcb9392e288ff9fdc3280b10260362fc45d37a798a6ee +PYTHON_ASN1CRYPTO_SETUP_TYPE = setuptools +PYTHON_ASN1CRYPTO_LICENSE = MIT +PYTHON_ASN1CRYPTO_LICENSE_FILES = LICENSE + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-asttokens/Config.in b/package/python-asttokens/Config.in new file mode 100644 index 00000000..2732b812 --- /dev/null +++ b/package/python-asttokens/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_ASTTOKENS + bool "python-asttokens" + select BR2_PACKAGE_PYTHON_SIX # runtime + help + Annotate AST trees with source code positions. + + https://github.com/gristlabs/asttokens diff --git a/package/python-asttokens/python-asttokens.hash b/package/python-asttokens/python-asttokens.hash new file mode 100644 index 00000000..9042c300 --- /dev/null +++ b/package/python-asttokens/python-asttokens.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/asttokens/json +md5 c353679585a40f43c24ca60fca33bbf6 asttokens-2.4.1.tar.gz +sha256 b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0 asttokens-2.4.1.tar.gz +# Locally computed sha256 checksums +sha256 b40930bbcf80744c86c46a12bc9da056641d722716c378f5659b9e555ef833e1 LICENSE diff --git a/package/python-asttokens/python-asttokens.mk b/package/python-asttokens/python-asttokens.mk new file mode 100644 index 00000000..4806d179 --- /dev/null +++ b/package/python-asttokens/python-asttokens.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-asttokens +# +################################################################################ + +PYTHON_ASTTOKENS_VERSION = 2.4.1 +PYTHON_ASTTOKENS_SOURCE = asttokens-$(PYTHON_ASTTOKENS_VERSION).tar.gz +PYTHON_ASTTOKENS_SITE = https://files.pythonhosted.org/packages/45/1d/f03bcb60c4a3212e15f99a56085d93093a497718adf828d050b9d675da81 +PYTHON_ASTTOKENS_SETUP_TYPE = setuptools +PYTHON_ASTTOKENS_LICENSE = Apache-2.0 +PYTHON_ASTTOKENS_LICENSE_FILES = LICENSE + +PYTHON_ASTTOKENS_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-async-generator/Config.in b/package/python-async-generator/Config.in new file mode 100644 index 00000000..eb5720c6 --- /dev/null +++ b/package/python-async-generator/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_ASYNC_GENERATOR + bool "python-async-generator" + help + Async generators and context managers for Python 3.5+. + + https://github.com/python-trio/async_generator diff --git a/package/python-async-generator/python-async-generator.hash b/package/python-async-generator/python-async-generator.hash new file mode 100644 index 00000000..3a94d5eb --- /dev/null +++ b/package/python-async-generator/python-async-generator.hash @@ -0,0 +1,7 @@ +# md5, sha256 from https://pypi.org/pypi/async_generator/json +md5 078a29b4afb3d7f38c097a530f042a55 async_generator-1.10.tar.gz +sha256 6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144 async_generator-1.10.tar.gz +# Locally computed sha256 checksums +sha256 b54d37617a67005623de975715952a2df062a2616c197bc3b6b451245b0c9265 LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.APACHE2 +sha256 3e6dae555eb92787fc82d1d48355677f454c7f65aeb38d3f9e72bf9a3daf034b LICENSE.MIT diff --git a/package/python-async-generator/python-async-generator.mk b/package/python-async-generator/python-async-generator.mk new file mode 100644 index 00000000..d5e4f430 --- /dev/null +++ b/package/python-async-generator/python-async-generator.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-async-generator +# +################################################################################ + +PYTHON_ASYNC_GENERATOR_VERSION = 1.10 +PYTHON_ASYNC_GENERATOR_SOURCE = async_generator-$(PYTHON_ASYNC_GENERATOR_VERSION).tar.gz +PYTHON_ASYNC_GENERATOR_SITE = https://files.pythonhosted.org/packages/ce/b6/6fa6b3b598a03cba5e80f829e0dadbb49d7645f523d209b2fb7ea0bbb02a +PYTHON_ASYNC_GENERATOR_SETUP_TYPE = setuptools +PYTHON_ASYNC_GENERATOR_LICENSE = Apache-2.0 or MIT +PYTHON_ASYNC_GENERATOR_LICENSE_FILES = LICENSE LICENSE.APACHE2 LICENSE.MIT + +$(eval $(python-package)) diff --git a/package/python-async-lru/Config.in b/package/python-async-lru/Config.in new file mode 100644 index 00000000..dc44e8cd --- /dev/null +++ b/package/python-async-lru/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_ASYNC_LRU + bool "python-async-lru" + help + Simple lru_cache for asyncio. + + https://github.com/aio-libs/async_lru diff --git a/package/python-async-lru/python-async-lru.hash b/package/python-async-lru/python-async-lru.hash new file mode 100644 index 00000000..0a7cd03b --- /dev/null +++ b/package/python-async-lru/python-async-lru.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/async-lru/json +md5 cd57e4d7f51bcbe2b940c523a5851b40 async-lru-2.0.4.tar.gz +sha256 b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627 async-lru-2.0.4.tar.gz +# Locally computed sha256 checksums +sha256 ea65975679bc2093be925d520358e41096bd96fddedee3e929160a5faadcf573 LICENSE diff --git a/package/python-async-lru/python-async-lru.mk b/package/python-async-lru/python-async-lru.mk new file mode 100644 index 00000000..16c6a32f --- /dev/null +++ b/package/python-async-lru/python-async-lru.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-async-lru +# +################################################################################ + +PYTHON_ASYNC_LRU_VERSION = 2.0.4 +PYTHON_ASYNC_LRU_SOURCE = async-lru-$(PYTHON_ASYNC_LRU_VERSION).tar.gz +PYTHON_ASYNC_LRU_SITE = https://files.pythonhosted.org/packages/80/e2/2b4651eff771f6fd900d233e175ddc5e2be502c7eb62c0c42f975c6d36cd +PYTHON_ASYNC_LRU_SETUP_TYPE = setuptools +PYTHON_ASYNC_LRU_LICENSE = MIT +PYTHON_ASYNC_LRU_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-async-timeout/Config.in b/package/python-async-timeout/Config.in new file mode 100644 index 00000000..d19f15b3 --- /dev/null +++ b/package/python-async-timeout/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_ASYNC_TIMEOUT + bool "python-async-timeout" + select BR2_PACKAGE_PYTHON_TYPING_EXTENSIONS # runtime + help + asyncio-compatible timeout context manager. + + https://github.com/aio-libs/async-timeout diff --git a/package/python-async-timeout/python-async-timeout.hash b/package/python-async-timeout/python-async-timeout.hash new file mode 100644 index 00000000..d4648939 --- /dev/null +++ b/package/python-async-timeout/python-async-timeout.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/async-timeout/json +md5 9bf7b764a7310cb063c1c261c21342e4 async-timeout-4.0.3.tar.gz +sha256 4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f async-timeout-4.0.3.tar.gz +# Locally computed sha256 checksums +sha256 e18d7bb8f513e2c46bb585c94b585bd30720dd3ccb21ddb0786f72d16658f92c LICENSE diff --git a/package/python-async-timeout/python-async-timeout.mk b/package/python-async-timeout/python-async-timeout.mk new file mode 100644 index 00000000..9760b8ae --- /dev/null +++ b/package/python-async-timeout/python-async-timeout.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-async-timeout +# +################################################################################ + +PYTHON_ASYNC_TIMEOUT_VERSION = 4.0.3 +PYTHON_ASYNC_TIMEOUT_SOURCE = async-timeout-$(PYTHON_ASYNC_TIMEOUT_VERSION).tar.gz +PYTHON_ASYNC_TIMEOUT_SITE = https://files.pythonhosted.org/packages/87/d6/21b30a550dafea84b1b8eee21b5e23fa16d010ae006011221f33dcd8d7f8 +PYTHON_ASYNC_TIMEOUT_LICENSE = Apache-2.0 +PYTHON_ASYNC_TIMEOUT_LICENSE_FILES = LICENSE +PYTHON_ASYNC_TIMEOUT_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-asyncssh/Config.in b/package/python-asyncssh/Config.in new file mode 100644 index 00000000..eef4478f --- /dev/null +++ b/package/python-asyncssh/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_ASYNCSSH + bool "python-asyncssh" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-cryptography + select BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime + select BR2_PACKAGE_PYTHON_TYPING_EXTENSIONS # runtime + help + AsyncSSH: Asynchronous SSHv2 client and server library. + + http://asyncssh.timeheart.net diff --git a/package/python-asyncssh/python-asyncssh.hash b/package/python-asyncssh/python-asyncssh.hash new file mode 100644 index 00000000..f74cbe9c --- /dev/null +++ b/package/python-asyncssh/python-asyncssh.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/asyncssh/json +md5 3b22a39fa9d638b277c9441187b73c5c asyncssh-2.14.2.tar.gz +sha256 e956bf8988d07a06ba3305f6604e261f4ca014c4a232f0873f1c7692fbe3cfc2 asyncssh-2.14.2.tar.gz +# Locally computed sha256 checksums +sha256 0becf16567beb77fa252b7664631dd177c8f9a1889e48995b45379c7130e5303 LICENSE +sha256 68c286b0cf4507bec8922103efe861adb0bd3218003b1ec1b25e2e64bdd76bd3 COPYRIGHT diff --git a/package/python-asyncssh/python-asyncssh.mk b/package/python-asyncssh/python-asyncssh.mk new file mode 100644 index 00000000..1f6b9d79 --- /dev/null +++ b/package/python-asyncssh/python-asyncssh.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-asyncssh +# +################################################################################ + +PYTHON_ASYNCSSH_VERSION = 2.14.2 +PYTHON_ASYNCSSH_SOURCE = asyncssh-$(PYTHON_ASYNCSSH_VERSION).tar.gz +PYTHON_ASYNCSSH_SITE = https://files.pythonhosted.org/packages/6c/f9/849f158fe50cdb0b1bf75009861865c9a30c3b5a0d62ad43bb5e00b10feb +PYTHON_ASYNCSSH_SETUP_TYPE = setuptools +PYTHON_ASYNCSSH_LICENSE = EPL-2.0 or GPL-2.0+ +PYTHON_ASYNCSSH_LICENSE_FILES = LICENSE COPYRIGHT +PYTHON_ASYNCSSH_CPE_ID_VENDOR = asyncssh_project +PYTHON_ASYNCSSH_CPE_ID_PRODUCT = asyncssh + +$(eval $(python-package)) diff --git a/package/python-attrs/Config.in b/package/python-attrs/Config.in new file mode 100644 index 00000000..fb0ab248 --- /dev/null +++ b/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/package/python-attrs/python-attrs.hash b/package/python-attrs/python-attrs.hash new file mode 100644 index 00000000..d8c6d147 --- /dev/null +++ b/package/python-attrs/python-attrs.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/attrs/json +md5 60588a146fb413a997c7519d77198a5e attrs-23.2.0.tar.gz +sha256 935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 attrs-23.2.0.tar.gz +# Locally computed sha256 checksums +sha256 882115c95dfc2af1eeb6714f8ec6d5cbcabf667caff8729f42420da63f714e9f LICENSE diff --git a/package/python-attrs/python-attrs.mk b/package/python-attrs/python-attrs.mk new file mode 100644 index 00000000..fb1729e6 --- /dev/null +++ b/package/python-attrs/python-attrs.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# python-attrs +# +################################################################################ + +PYTHON_ATTRS_VERSION = 23.2.0 +PYTHON_ATTRS_SOURCE = attrs-$(PYTHON_ATTRS_VERSION).tar.gz +PYTHON_ATTRS_SITE = https://files.pythonhosted.org/packages/e3/fc/f800d51204003fa8ae392c4e8278f256206e7a919b708eef054f5f4b650d +PYTHON_ATTRS_SETUP_TYPE = pep517 +PYTHON_ATTRS_LICENSE = MIT +PYTHON_ATTRS_LICENSE_FILES = LICENSE +PYTHON_ATTRS_DEPENDENCIES = \ + host-python-hatchling \ + host-python-hatch-fancy-pypi-readme \ + host-python-hatch-vcs + +HOST_PYTHON_ATTRS_DEPENDENCIES = \ + host-python-hatchling \ + host-python-hatch-fancy-pypi-readme \ + host-python-hatch-vcs + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-augeas/0001-Use-CFFI-in-out-of-line-API-mode-49.patch b/package/python-augeas/0001-Use-CFFI-in-out-of-line-API-mode-49.patch new file mode 100644 index 00000000..da9093d7 --- /dev/null +++ b/package/python-augeas/0001-Use-CFFI-in-out-of-line-API-mode-49.patch @@ -0,0 +1,101 @@ +From 9de73fefbe83c74840a93c039258845c49271b9b Mon Sep 17 00:00:00 2001 +From: Jeffery To +Date: Sun, 8 Nov 2020 21:51:09 +0800 +Subject: [PATCH] Use CFFI in out-of-line API mode (#49) + +Currently, ffi.py is called during setup to generate augeas.py; this +file would normally be used for out-of-line ABI mode. ffi.py is also +imported at run-time, instead of the generated augeas.py, and used in +in-line ABI mode. + +This changes usage of CFFI to out-of-line API mode (CFFI's "main mode of +usage"): ffi.py is called during setup to generate _augeas.abi3.so (a C +extension module); this generated module is imported at run-time. + +With this change, the headers/development files for augeas (i.e. +libaugeas-dev on Debian, augeas-devel on Fedora, etc.) and the C +compiler are required for build/setup. (These were not necessary +previously.) + +Closes https://github.com/hercules-team/python-augeas/issues/48. + +Upstream: commit 712c2028568df7760bc98d95577e35709078bfea +Signed-off-by: Thomas Petazzoni +--- + augeas/__init__.py | 2 +- + augeas/ffi.py | 27 ++++++++++++++++++++++----- + setup.py | 1 + + 3 files changed, 24 insertions(+), 6 deletions(-) + +diff --git a/augeas/__init__.py b/augeas/__init__.py +index 9bd97bf..1c0f580 100644 +--- a/augeas/__init__.py ++++ b/augeas/__init__.py +@@ -32,7 +32,7 @@ format and the transformation into a tree. + + from sys import version_info as _pyver + +-from augeas.ffi import ffi, lib ++from _augeas import ffi, lib + + __author__ = "Nathaniel McCallum " + __credits__ = """Jeff Schroeder +diff --git a/augeas/ffi.py b/augeas/ffi.py +index a24daf5..1931764 100644 +--- a/augeas/ffi.py ++++ b/augeas/ffi.py +@@ -1,9 +1,28 @@ ++import os ++import subprocess ++ + from cffi import FFI + ++def get_include_dirs(): ++ XML2_CONFIG = os.environ.get('XML2_CONFIG', 'xml2-config') ++ PKG_CONFIG = os.environ.get('PKG_CONFIG', 'pkg-config') ++ try: ++ stdout = subprocess.check_output([XML2_CONFIG, '--cflags']) ++ except (OSError, subprocess.CalledProcessError): ++ try: ++ stdout = subprocess.check_output([PKG_CONFIG, '--cflags', 'libxml-2.0']) ++ except (OSError, subprocess.CalledProcessError): ++ stdout = b'' ++ cflags = stdout.decode('utf-8').split() ++ return [cflag[2:] for cflag in cflags if cflag.startswith('-I')] ++ + ffi = FFI() +-ffi.set_source("augeas", +- None, +- libraries=['augeas']) ++ffi.set_source("_augeas", ++ """ ++ #include ++ """, ++ libraries=['augeas'], ++ include_dirs=get_include_dirs()) + + ffi.cdef(""" + typedef struct augeas augeas; +@@ -44,7 +63,5 @@ const char *aug_error_details(augeas *aug); + void free(void *); + """) + +-lib = ffi.dlopen("augeas") +- + if __name__ == "__main__": + ffi.compile(verbose=True) +diff --git a/setup.py b/setup.py +index 7d55877..17f9516 100755 +--- a/setup.py ++++ b/setup.py +@@ -22,6 +22,7 @@ setup(name=name, + setup_requires=["cffi>=1.0.0"], + cffi_modules=["augeas/ffi.py:ffi"], + install_requires=["cffi>=1.0.0"], ++ zip_safe=False, + url="http://augeas.net/", + classifiers=[ + "Programming Language :: Python :: 2.7", +-- +2.31.1 + diff --git a/package/python-augeas/Config.in b/package/python-augeas/Config.in new file mode 100644 index 00000000..4ab2bd1b --- /dev/null +++ b/package/python-augeas/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_PYTHON_AUGEAS + bool "python-augeas" + depends on !BR2_arc + depends on BR2_USE_WCHAR + select BR2_PACKAGE_AUGEAS + select BR2_PACKAGE_PYTHON_CFFI # runtime + help + Pure python bindings for Augeas. + + https://github.com/hercules-team/python-augeas + +comment "python-augeas needs a toolchain w/ wchar" + depends on !BR2_arc + depends on !BR2_USE_WCHAR diff --git a/package/python-augeas/python-augeas.hash b/package/python-augeas/python-augeas.hash new file mode 100644 index 00000000..f4f42098 --- /dev/null +++ b/package/python-augeas/python-augeas.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 1a1d2cdaf2ad4c091ed5ec7976c52d16e14ecfbf40b1bdcaced2465255fb0f87 python-augeas-1.1.0.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/python-augeas/python-augeas.mk b/package/python-augeas/python-augeas.mk new file mode 100644 index 00000000..7adaa84f --- /dev/null +++ b/package/python-augeas/python-augeas.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# python-augeas +# +################################################################################ + +PYTHON_AUGEAS_VERSION = 1.1.0 +PYTHON_AUGEAS_SITE = $(call github,hercules-team,python-augeas,v$(PYTHON_AUGEAS_VERSION)) +PYTHON_AUGEAS_SETUP_TYPE = setuptools +PYTHON_AUGEAS_LICENSE = LGPL-2.1+ +PYTHON_AUGEAS_LICENSE_FILES = COPYING +PYTHON_AUGEAS_DEPENDENCIES = augeas host-python-cffi host-pkgconf +# This will tell python-augeas to not call xml2-config, and instead +# use pkg-config to find libxml2. libxml2 is an indirect dependency of +# augeas, which is why it's not in our dependencies. It's odd that +# python-augeas searches for libxml2, but that's what it +# does. Question asked in the pull request at +# https://github.com/hercules-team/python-augeas/pull/49. +PYTHON_AUGEAS_ENV = XML2_CONFIG=/bin/false + +$(eval $(python-package)) diff --git a/package/python-autobahn/Config.in b/package/python-autobahn/Config.in new file mode 100644 index 00000000..527416a3 --- /dev/null +++ b/package/python-autobahn/Config.in @@ -0,0 +1,61 @@ +config BR2_PACKAGE_PYTHON_AUTOBAHN + bool "python-autobahn" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-cryptography + select BR2_PACKAGE_PYTHON_CFFI # runtime + select BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime + select BR2_PACKAGE_PYTHON_HYPERLINK # runtime + select BR2_PACKAGE_PYTHON_TXAIO # runtime + help + WebSocket client and server library, WAMP real-time + framework. + + https://pypi.python.org/pypi/autobahn + +if BR2_PACKAGE_PYTHON_AUTOBAHN + +config BR2_PACKAGE_PYTHON_AUTOBAHN_ACCELERATE + bool "C-based WebSocket acceleration" + select BR2_PACKAGE_PYTHON_WSACCEL # runtime + +config BR2_PACKAGE_PYTHON_AUTOBAHN_COMPRESS + bool "Non-standard WebSocket compression support" + depends on BR2_INSTALL_LIBSTDCPP # python-snappy -> snappy + select BR2_PACKAGE_PYTHON_SNAPPY # runtime + +comment "Non-standard WebSocket compression needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_PYTHON_AUTOBAHN_ENCRYPTION + bool "TLS and WAMP-cryptosign encryption/authentication support" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-pyopenssl -> python-cryptography + select BR2_PACKAGE_PYTHON_PYNACL # runtime + select BR2_PACKAGE_PYTHON_PYOPENSSL # runtime + select BR2_PACKAGE_PYTHON_QRCODE # runtime + select BR2_PACKAGE_PYTHON_QRCODE_SVG # runtime + select BR2_PACKAGE_PYTHON_PYTRIE # runtime + select BR2_PACKAGE_PYTHON_SERVICE_IDENTITY # runtime + +config BR2_PACKAGE_PYTHON_AUTOBAHN_SCRAM + bool "WAMP-SCRAM authentication support" + select BR2_PACKAGE_PYTHON_ARGON2_CFFI # runtime + select BR2_PACKAGE_PYTHON_PASSLIB # runtime + +config BR2_PACKAGE_PYTHON_AUTOBAHN_SERIALIZATION + bool "Accelerated JSON, MessagePack, CBOR, UBJSON, and FlatBuffers serialization support" + depends on BR2_INSTALL_LIBSTDCPP # python-ujson + select BR2_PACKAGE_PYTHON_CBOR2 # runtime + select BR2_PACKAGE_PYTHON_FLATBUFFERS # runtime + select BR2_PACKAGE_PYTHON_MSGPACK # runtime + select BR2_PACKAGE_PYTHON_UBJSON # runtime + select BR2_PACKAGE_PYTHON_UJSON # runtime + +comment "Accelerated JSON, MessagePack, CBOR, UBJSON, and FlatBuffers serialization needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_PYTHON_AUTOBAHN_TWISTED + bool "Twisted support" + select BR2_PACKAGE_PYTHON_ATTRS # runtime + select BR2_PACKAGE_PYTHON_TWISTED # runtime + select BR2_PACKAGE_PYTHON_ZOPE_INTERFACE # runtime + +endif diff --git a/package/python-autobahn/python-autobahn.hash b/package/python-autobahn/python-autobahn.hash new file mode 100644 index 00000000..11448fef --- /dev/null +++ b/package/python-autobahn/python-autobahn.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/autobahn/json +md5 f29d3cebec06c81a87823a2776ffcc5c autobahn-23.6.2.tar.gz +sha256 ec9421c52a2103364d1ef0468036e6019ee84f71721e86b36fe19ad6966c1181 autobahn-23.6.2.tar.gz +# Locally computed sha256 checksums +sha256 ab1dd7a42dbdae302346c5a4571f2149691cc1ec06836232bf4923527e3fe41c LICENSE diff --git a/package/python-autobahn/python-autobahn.mk b/package/python-autobahn/python-autobahn.mk new file mode 100644 index 00000000..703f1065 --- /dev/null +++ b/package/python-autobahn/python-autobahn.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# python-autobahn +# +################################################################################ + +PYTHON_AUTOBAHN_VERSION = 23.6.2 +PYTHON_AUTOBAHN_SOURCE = autobahn-$(PYTHON_AUTOBAHN_VERSION).tar.gz +PYTHON_AUTOBAHN_SITE = https://files.pythonhosted.org/packages/92/ee/c3320c326919394ff597592549ff5d29d2f7bf12be9ddaa9017caff1a170 +PYTHON_AUTOBAHN_LICENSE = MIT +PYTHON_AUTOBAHN_LICENSE_FILES = LICENSE +PYTHON_AUTOBAHN_CPE_ID_VENDOR = crossbar +PYTHON_AUTOBAHN_CPE_ID_PRODUCT = autobahn +PYTHON_AUTOBAHN_SETUP_TYPE = setuptools +PYTHON_AUTOBAHN_DEPENDENCIES = host-python-cffi +PYTHON_AUTOBAHN_ENV = AUTOBAHN_STRIP_XBR=1 + +$(eval $(python-package)) diff --git a/package/python-autocommand/Config.in b/package/python-autocommand/Config.in new file mode 100644 index 00000000..41533e64 --- /dev/null +++ b/package/python-autocommand/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_AUTOCOMMAND + bool "python-autocommand" + help + A library to create a command-line program from a function. + + https://github.com/Lucretiel/autocommand diff --git a/package/python-autocommand/python-autocommand.hash b/package/python-autocommand/python-autocommand.hash new file mode 100644 index 00000000..9513010d --- /dev/null +++ b/package/python-autocommand/python-autocommand.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/autocommand/json +md5 0cab5141bad0dfb363b086e93fd4125e autocommand-2.2.2.tar.gz +sha256 878de9423c5596491167225c2a455043c3130fb5b7286ac83443d45e74955f34 autocommand-2.2.2.tar.gz +# Locally computed sha256 checksums +sha256 ade78d04982d69972d444a8e14a94f87a2334dd3855cc80348ea8e240aa0df2d LICENSE diff --git a/package/python-autocommand/python-autocommand.mk b/package/python-autocommand/python-autocommand.mk new file mode 100644 index 00000000..37b421e4 --- /dev/null +++ b/package/python-autocommand/python-autocommand.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-autocommand +# +################################################################################ + +PYTHON_AUTOCOMMAND_VERSION = 2.2.2 +PYTHON_AUTOCOMMAND_SOURCE = autocommand-$(PYTHON_AUTOCOMMAND_VERSION).tar.gz +PYTHON_AUTOCOMMAND_SITE = https://files.pythonhosted.org/packages/5b/18/774bddb96bc0dc0a2b8ac2d2a0e686639744378883da0fc3b96a54192d7a +PYTHON_AUTOCOMMAND_SETUP_TYPE = setuptools +PYTHON_AUTOCOMMAND_LICENSE = LGPL-3.0+ +PYTHON_AUTOCOMMAND_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-automat/0001-Remove-uneeded-dependency-to-wheel.patch b/package/python-automat/0001-Remove-uneeded-dependency-to-wheel.patch new file mode 100644 index 00000000..2be7ec6c --- /dev/null +++ b/package/python-automat/0001-Remove-uneeded-dependency-to-wheel.patch @@ -0,0 +1,28 @@ +From d04d51d62a23370869ad466fa95b7d4ec2e0fa6e Mon Sep 17 00:00:00 2001 +From: Julien Olivain +Date: Mon, 14 Nov 2022 22:30:33 +0100 +Subject: [PATCH] Remove uneeded dependency to "wheel" + +Attempting to build Automat in Buildroot fails while trying +to check for this undeeded dependency. + +Signed-off-by: Julien Olivain +--- + setup.py | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/setup.py b/setup.py +index c2f9816..afa8012 100644 +--- a/setup.py ++++ b/setup.py +@@ -15,7 +15,6 @@ setup( + packages=find_packages(exclude=[]), + package_dir={'automat': 'automat'}, + setup_requires=[ +- 'wheel', + 'setuptools-scm', + ], + install_requires=[ +-- +2.38.1 + diff --git a/package/python-automat/Config.in b/package/python-automat/Config.in new file mode 100644 index 00000000..ee02d22b --- /dev/null +++ b/package/python-automat/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_AUTOMAT + bool "python-automat" + select BR2_PACKAGE_PYTHON_ATTRS # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + help + Self-service finite-state machines for the programmer on the + go. + + https://github.com/glyph/Automat diff --git a/package/python-automat/python-automat.hash b/package/python-automat/python-automat.hash new file mode 100644 index 00000000..cfb16ac6 --- /dev/null +++ b/package/python-automat/python-automat.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/automat/json +md5 b8064994239aabb172748f984489ce75 Automat-22.10.0.tar.gz +sha256 e56beb84edad19dcc11d30e8d9b895f75deeb5ef5e96b84a467066b3b84bb04e Automat-22.10.0.tar.gz +# Locally computed sha256 checksums +sha256 b2201301678d0a937d938543827ca1360712eb34e23de8ee3f3bfffbd4c0e376 LICENSE diff --git a/package/python-automat/python-automat.mk b/package/python-automat/python-automat.mk new file mode 100644 index 00000000..101197b1 --- /dev/null +++ b/package/python-automat/python-automat.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-automat +# +################################################################################ + +PYTHON_AUTOMAT_VERSION = 22.10.0 +PYTHON_AUTOMAT_SOURCE = Automat-$(PYTHON_AUTOMAT_VERSION).tar.gz +PYTHON_AUTOMAT_SITE = https://files.pythonhosted.org/packages/7a/7b/9c3d26d8a0416eefbc0428f168241b32657ca260fb7ef507596ff5c2f6c4 +PYTHON_AUTOMAT_SETUP_TYPE = setuptools +PYTHON_AUTOMAT_LICENSE = MIT +PYTHON_AUTOMAT_LICENSE_FILES = LICENSE +PYTHON_AUTOMAT_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-avro/Config.in b/package/python-avro/Config.in new file mode 100644 index 00000000..1f67732c --- /dev/null +++ b/package/python-avro/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_PYTHON_AVRO + bool "python-avro" + help + Select this option to install the Avro Python3 language + bindings, and the `avro` command line tool + + Apache Avro is a data serialization system. + Avro provides: + - Rich data structures. + - A compact, fast, binary data format. + - A container file, to store persistent data. + - Remote procedure call (RPC). + - Simple integration with dynamic languages. + - Code generation is not required to read or write data + files nor to use or implement RPC protocols. + - Code generation as an optional optimization, + only worth implementing for statically typed languages. + + http://avro.apache.org/ diff --git a/package/python-avro/python-avro.hash b/package/python-avro/python-avro.hash new file mode 100644 index 00000000..e57b6a72 --- /dev/null +++ b/package/python-avro/python-avro.hash @@ -0,0 +1,5 @@ +# From https://downloads.apache.org/avro/avro-1.11.3/py/avro-1.11.3.tar.gz.sha512 +sha512 c2066b4dd8b55b0534fb5bb8fc5a81abcef76ab46458b666c98732811f632c34062c1a0cefaf370aa0843c1cad5bd822f9a6ef0ad88cda5177519a3d3c73072d avro-1.11.3.tar.gz + +# License files +sha256 c79a7fea0e3cac04cd43f20e7b648e5a0ff8fa5344e644b0ee09ca1162b62747 avro/LICENSE diff --git a/package/python-avro/python-avro.mk b/package/python-avro/python-avro.mk new file mode 100644 index 00000000..4e9db9fe --- /dev/null +++ b/package/python-avro/python-avro.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-avro +# +################################################################################ + +# When updating the version, please also update avro-c +PYTHON_AVRO_VERSION = 1.11.3 +PYTHON_AVRO_SITE = \ + https://www-eu.apache.org/dist/avro/avro-$(PYTHON_AVRO_VERSION)/py +PYTHON_AVRO_SOURCE = avro-$(PYTHON_AVRO_VERSION).tar.gz +PYTHON_AVRO_LICENSE = Apache-2.0 +PYTHON_AVRO_LICENSE_FILES = avro/LICENSE +PYTHON_AVRO_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-babel/Config.in b/package/python-babel/Config.in new file mode 100644 index 00000000..1a22b83f --- /dev/null +++ b/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/package/python-babel/python-babel.hash b/package/python-babel/python-babel.hash new file mode 100644 index 00000000..ab4e0225 --- /dev/null +++ b/package/python-babel/python-babel.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/babel/json +md5 3bec3f4c842144c15d839bdde41a44d4 Babel-2.14.0.tar.gz +sha256 6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363 Babel-2.14.0.tar.gz +# Locally computed sha256 checksums +sha256 908e0ad72053ae27c1d17e3340bd14cff9bf935992ed56526d17c983ab6e7af7 LICENSE diff --git a/package/python-babel/python-babel.mk b/package/python-babel/python-babel.mk new file mode 100644 index 00000000..eb39b9ae --- /dev/null +++ b/package/python-babel/python-babel.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# python-babel +# +################################################################################ + +PYTHON_BABEL_VERSION = 2.14.0 +PYTHON_BABEL_SOURCE = Babel-$(PYTHON_BABEL_VERSION).tar.gz +PYTHON_BABEL_SITE = https://files.pythonhosted.org/packages/e2/80/cfbe44a9085d112e983282ee7ca4c00429bc4d1ce86ee5f4e60259ddff7f +PYTHON_BABEL_SETUP_TYPE = setuptools +PYTHON_BABEL_LICENSE = BSD-3-Clause +PYTHON_BABEL_LICENSE_FILES = LICENSE +HOST_PYTHON_BABEL_DEPENDENCIES = host-python-pytz + +# purge locale data (if enabled), keep special en_US_POSIX data which +# is used by default by the python-babel code +ifeq ($(BR2_ENABLE_LOCALE_PURGE),y) +define PYTHON_BABEL_CLEANUP_LOCALE + for i in `ls $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/babel/locale-data/*.dat`; \ + do \ + i_base=`basename "$$i" .dat`; \ + echo "$(BR2_ENABLE_LOCALE_WHITELIST) en_US_POSIX" | grep -qw "$$i_base" || rm "$$i"; \ + done +endef +PYTHON_BABEL_TARGET_FINALIZE_HOOKS += PYTHON_BABEL_CLEANUP_LOCALE +endif + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-backcall/Config.in b/package/python-backcall/Config.in new file mode 100644 index 00000000..7b4345ca --- /dev/null +++ b/package/python-backcall/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_BACKCALL + bool "python-backcall" + help + Specifications for callback functions passed in to an API. + + https://github.com/takluyver/backcall diff --git a/package/python-backcall/python-backcall.hash b/package/python-backcall/python-backcall.hash new file mode 100644 index 00000000..063b4bed --- /dev/null +++ b/package/python-backcall/python-backcall.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/backcall/json +md5 1f4c9a370c78743406296f48e56e8821 backcall-0.2.0.tar.gz +sha256 5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e backcall-0.2.0.tar.gz +# Locally computed sha256 checksums +sha256 d422f8ce77312733c07f5fec8ccbe61d58d539774f7a66f37e4bc54740d86020 LICENSE diff --git a/package/python-backcall/python-backcall.mk b/package/python-backcall/python-backcall.mk new file mode 100644 index 00000000..ea9ffb86 --- /dev/null +++ b/package/python-backcall/python-backcall.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-backcall +# +################################################################################ + +PYTHON_BACKCALL_VERSION = 0.2.0 +PYTHON_BACKCALL_SOURCE = backcall-$(PYTHON_BACKCALL_VERSION).tar.gz +PYTHON_BACKCALL_SITE = https://files.pythonhosted.org/packages/a2/40/764a663805d84deee23043e1426a9175567db89c8b3287b5c2ad9f71aa93 +PYTHON_BACKCALL_SETUP_TYPE = setuptools +PYTHON_BACKCALL_LICENSE = BSD-3-Clause +PYTHON_BACKCALL_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-bcrypt/Config.in b/package/python-bcrypt/Config.in new file mode 100644 index 00000000..67800df3 --- /dev/null +++ b/package/python-bcrypt/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_BCRYPT + bool "python-bcrypt" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + help + Modern password hashing for your software and your servers. + + https://github.com/pyca/bcrypt/ diff --git a/package/python-bcrypt/python-bcrypt.hash b/package/python-bcrypt/python-bcrypt.hash new file mode 100644 index 00000000..f3e05174 --- /dev/null +++ b/package/python-bcrypt/python-bcrypt.hash @@ -0,0 +1,4 @@ +# Locally calculated after vendoring +sha256 630f29d9eccca3aea0521eaeff7e4aab43611f1bbf4f8afcdf590aeee9fc8187 python-bcrypt-4.1.3-cargo2.tar.gz +# Locally computed sha256 checksums +sha256 8173d5c29b4f956d532781d2b86e4e30f83e6b7878dce18c919451d6ba707c90 LICENSE diff --git a/package/python-bcrypt/python-bcrypt.mk b/package/python-bcrypt/python-bcrypt.mk new file mode 100644 index 00000000..3d1aeab2 --- /dev/null +++ b/package/python-bcrypt/python-bcrypt.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-bcrypt +# +################################################################################ + +PYTHON_BCRYPT_VERSION = 4.1.3 +PYTHON_BCRYPT_SOURCE_PYPI = bcrypt-$(PYTHON_BCRYPT_VERSION).tar.gz +PYTHON_BCRYPT_SITE_PYPI = https://files.pythonhosted.org/packages/ca/e9/0b36987abbcd8c9210c7b86673d88ff0a481b4610630710fb80ba5661356 +PYTHON_BCRYPT_SITE = $(PYTHON_BCRYPT_SITE_PYPI)/$(PYTHON_BCRYPT_SOURCE_PYPI)?buildroot-path=filename +PYTHON_BCRYPT_SETUP_TYPE = setuptools-rust +PYTHON_BCRYPT_LICENSE = Apache-2.0 +PYTHON_BCRYPT_LICENSE_FILES = LICENSE +PYTHON_BCRYPT_CARGO_MANIFEST_PATH = src/_bcrypt/Cargo.toml + +$(eval $(python-package)) diff --git a/package/python-beautifulsoup4/Config.in b/package/python-beautifulsoup4/Config.in new file mode 100644 index 00000000..eb7d2ba6 --- /dev/null +++ b/package/python-beautifulsoup4/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_BEAUTIFULSOUP4 + bool "python-beautifulsoup4" + select BR2_PACKAGE_PYTHON_SOUPSIEVE # runtime + help + Beautiful Soup is a Python library for pulling data out of + HTML and XML files. It works with your favorite parser to + provide idiomatic ways of navigating, searching, and + modifying the parse tree. It commonly saves programmers + hours or days of work. + + http://www.crummy.com/software/BeautifulSoup/bs4/ diff --git a/package/python-beautifulsoup4/python-beautifulsoup4.hash b/package/python-beautifulsoup4/python-beautifulsoup4.hash new file mode 100644 index 00000000..149eeff6 --- /dev/null +++ b/package/python-beautifulsoup4/python-beautifulsoup4.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/beautifulsoup4/json +md5 4ecf1fb561e84adfb3146650e3d51394 beautifulsoup4-4.12.3.tar.gz +sha256 74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051 beautifulsoup4-4.12.3.tar.gz +# Locally computed sha256 checksums +sha256 55b4d8d4b1e5bc86d10efac91b74c87bcb77526b0f5b9edaf8b9cd2adc7397b2 LICENSE diff --git a/package/python-beautifulsoup4/python-beautifulsoup4.mk b/package/python-beautifulsoup4/python-beautifulsoup4.mk new file mode 100644 index 00000000..bb02807c --- /dev/null +++ b/package/python-beautifulsoup4/python-beautifulsoup4.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-beautifulsoup4 +# +################################################################################ + +PYTHON_BEAUTIFULSOUP4_VERSION = 4.12.3 +PYTHON_BEAUTIFULSOUP4_SOURCE = beautifulsoup4-$(PYTHON_BEAUTIFULSOUP4_VERSION).tar.gz +PYTHON_BEAUTIFULSOUP4_SITE = https://files.pythonhosted.org/packages/b3/ca/824b1195773ce6166d388573fc106ce56d4a805bd7427b624e063596ec58 +PYTHON_BEAUTIFULSOUP4_SETUP_TYPE = pep517 +PYTHON_BEAUTIFULSOUP4_LICENSE = MIT +PYTHON_BEAUTIFULSOUP4_LICENSE_FILES = LICENSE +PYTHON_BEAUTIFULSOUP4_DEPENDENCIES = host-python-hatchling + +$(eval $(python-package)) diff --git a/package/python-beniget/python-beniget.hash b/package/python-beniget/python-beniget.hash new file mode 100644 index 00000000..cd4fa7b8 --- /dev/null +++ b/package/python-beniget/python-beniget.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/beniget/json +md5 a2bbe7f17f10f9c127d8ef00692ddc55 beniget-0.4.1.tar.gz +sha256 75554b3b8ad0553ce2f607627dad3d95c60c441189875b98e097528f8e23ac0c beniget-0.4.1.tar.gz +# Locally computed sha256 checksums +sha256 64ad3e304e9d2d8731c26ac3e652335a6016e38be2f71fe30350be51c6d500b0 LICENSE diff --git a/package/python-beniget/python-beniget.mk b/package/python-beniget/python-beniget.mk new file mode 100644 index 00000000..9970546b --- /dev/null +++ b/package/python-beniget/python-beniget.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-beniget +# +################################################################################ + +PYTHON_BENIGET_VERSION = 0.4.1 +PYTHON_BENIGET_SOURCE = beniget-$(PYTHON_BENIGET_VERSION).tar.gz +PYTHON_BENIGET_SITE = https://files.pythonhosted.org/packages/14/e7/50cbac38f77eca8efd39516be6651fdb9f3c4c0fab8cf2cf05f612578737 +PYTHON_BENIGET_SETUP_TYPE = setuptools +PYTHON_BENIGET_LICENSE = BSD-3-Clause +PYTHON_BENIGET_LICENSE_FILES = LICENSE +HOST_PYTHON_BENIGET_DEPENDENCIES = host-python-gast + +$(eval $(host-python-package)) diff --git a/package/python-betterproto/Config.in b/package/python-betterproto/Config.in new file mode 100644 index 00000000..8548fd43 --- /dev/null +++ b/package/python-betterproto/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_BETTERPROTO + bool "python-betterproto" + select BR2_PACKAGE_PYTHON_DATEUTIL # runtime + select BR2_PACKAGE_PYTHON_GRPCLIB # runtime + help + A better Protobuf / gRPC generator & library. + + http://github.com/danielgtaylor/python-betterproto diff --git a/package/python-betterproto/python-betterproto.hash b/package/python-betterproto/python-betterproto.hash new file mode 100644 index 00000000..8d23d2ae --- /dev/null +++ b/package/python-betterproto/python-betterproto.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/betterproto/json +md5 bd4192c2997959100097479c34ff87e6 betterproto-2.0.0b6.tar.gz +sha256 720ae92697000f6fcf049c69267d957f0871654c8b0d7458906607685daee784 betterproto-2.0.0b6.tar.gz +# Locally computed sha256 checksums +sha256 a5b8df75467e4b57a308a94cce5fdae84808a83ee6cd5af7e175c6b9784a753f LICENSE.md diff --git a/package/python-betterproto/python-betterproto.mk b/package/python-betterproto/python-betterproto.mk new file mode 100644 index 00000000..37f72f81 --- /dev/null +++ b/package/python-betterproto/python-betterproto.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-betterproto +# +################################################################################ + +PYTHON_BETTERPROTO_VERSION = 2.0.0b6 +PYTHON_BETTERPROTO_SOURCE = betterproto-$(PYTHON_BETTERPROTO_VERSION).tar.gz +PYTHON_BETTERPROTO_SITE = https://files.pythonhosted.org/packages/45/43/4c44efd75f2ef48a16b458c2fe2cff7aa74bab8fcadf2653bb5110a87f97 +PYTHON_BETTERPROTO_SETUP_TYPE = pep517 +PYTHON_BETTERPROTO_LICENSE = MIT +PYTHON_BETTERPROTO_LICENSE_FILES = LICENSE.md +PYTHON_BETTERPROTO_DEPENDENCIES = host-python-poetry-core + +$(eval $(python-package)) diff --git a/package/python-bidict/Config.in b/package/python-bidict/Config.in new file mode 100644 index 00000000..dfc55b87 --- /dev/null +++ b/package/python-bidict/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_BIDICT + bool "python-bidict" + help + The bidirectional mapping library for Python. + + https://bidict.readthedocs.io diff --git a/package/python-bidict/python-bidict.hash b/package/python-bidict/python-bidict.hash new file mode 100644 index 00000000..bcb9ea3f --- /dev/null +++ b/package/python-bidict/python-bidict.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/bidict/json +md5 67dd74f41341e7ff437d69e00a6fd514 bidict-0.22.1.tar.gz +sha256 1e0f7f74e4860e6d0943a05d4134c63a2fad86f3d4732fb265bd79e4e856d81d bidict-0.22.1.tar.gz +# Locally computed sha256 checksums +sha256 be0487398bba08e7772b4077b637787b94973b53c44b3cbdd6c7dab10ed15035 LICENSE diff --git a/package/python-bidict/python-bidict.mk b/package/python-bidict/python-bidict.mk new file mode 100644 index 00000000..ae3a1ee0 --- /dev/null +++ b/package/python-bidict/python-bidict.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-bidict +# +################################################################################ + +PYTHON_BIDICT_VERSION = 0.22.1 +PYTHON_BIDICT_SOURCE = bidict-$(PYTHON_BIDICT_VERSION).tar.gz +PYTHON_BIDICT_SITE = https://files.pythonhosted.org/packages/f2/be/b31e6ea9c94096a323e7a0e2c61480db01f07610bb7e7ea72a06fd1a23a8 +PYTHON_BIDICT_SETUP_TYPE = setuptools +PYTHON_BIDICT_LICENSE = MPL-2.0 +PYTHON_BIDICT_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-bitarray/Config.in b/package/python-bitarray/Config.in new file mode 100644 index 00000000..38d685f4 --- /dev/null +++ b/package/python-bitarray/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_BITARRAY + bool "python-bitarray" + help + efficient arrays of booleans -- C extension. + + https://github.com/ilanschnell/bitarray diff --git a/package/python-bitarray/python-bitarray.hash b/package/python-bitarray/python-bitarray.hash new file mode 100644 index 00000000..d91a28af --- /dev/null +++ b/package/python-bitarray/python-bitarray.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/bitarray/json +md5 024324a82314e9e68ecdcdefdc69071f bitarray-2.9.2.tar.gz +sha256 a8f286a51a32323715d77755ed959f94bef13972e9a2fe71b609e40e6d27957e bitarray-2.9.2.tar.gz +# Locally computed sha256 checksums +sha256 6b5e04f6e0462e1b97be833f9d65e66cd5eceb3283f4a6f532261087d0ab1233 LICENSE diff --git a/package/python-bitarray/python-bitarray.mk b/package/python-bitarray/python-bitarray.mk new file mode 100644 index 00000000..f86320c1 --- /dev/null +++ b/package/python-bitarray/python-bitarray.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-bitarray +# +################################################################################ + +PYTHON_BITARRAY_VERSION = 2.9.2 +PYTHON_BITARRAY_SOURCE = bitarray-$(PYTHON_BITARRAY_VERSION).tar.gz +PYTHON_BITARRAY_SITE = https://files.pythonhosted.org/packages/c7/bf/25cf92a83e1fe4948d7935ae3c02f4c9ff9cb9c13e977fba8af11a5f642c +PYTHON_BITARRAY_SETUP_TYPE = setuptools +PYTHON_BITARRAY_LICENSE = Python-2.0 +PYTHON_BITARRAY_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-bitstring/Config.in b/package/python-bitstring/Config.in new file mode 100644 index 00000000..82d0bb29 --- /dev/null +++ b/package/python-bitstring/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_BITSTRING + bool "python-bitstring" + select BR2_PACKAGE_PYTHON_BITARRAY # runtime + select BR2_PACKAGE_PYTHON3_ZLIB # runtime + help + Simple construction, analysis and modification of binary data. + + https://github.com/scott-griffiths/bitstring diff --git a/package/python-bitstring/python-bitstring.hash b/package/python-bitstring/python-bitstring.hash new file mode 100644 index 00000000..1889983f --- /dev/null +++ b/package/python-bitstring/python-bitstring.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/bitstring/json +md5 3909415d89586edabd577b62b0d0c1be bitstring-4.1.4.tar.gz +sha256 94f3f1c45383ebe8fd4a359424ffeb75c2f290760ae8fcac421b44f89ac85213 bitstring-4.1.4.tar.gz +# Locally computed sha256 checksums +sha256 3705eed5a923f35d9bfaca1f10e9136cc84d6e576570aec661bda69991f129ea LICENSE diff --git a/package/python-bitstring/python-bitstring.mk b/package/python-bitstring/python-bitstring.mk new file mode 100644 index 00000000..98349130 --- /dev/null +++ b/package/python-bitstring/python-bitstring.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-bitstring +# +################################################################################ + +PYTHON_BITSTRING_VERSION = 4.1.4 +PYTHON_BITSTRING_SOURCE = bitstring-$(PYTHON_BITSTRING_VERSION).tar.gz +PYTHON_BITSTRING_SITE = https://files.pythonhosted.org/packages/7f/07/0fd502a29127b968bada3d1824a8af997546d2b9ff73f00e800b3d9888cb +PYTHON_BITSTRING_SETUP_TYPE = setuptools +PYTHON_BITSTRING_LICENSE = MIT +PYTHON_BITSTRING_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-bleak/Config.in b/package/python-bleak/Config.in new file mode 100644 index 00000000..691450f8 --- /dev/null +++ b/package/python-bleak/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_BLEAK + bool "python-bleak" + select BR2_PACKAGE_PYTHON_ASYNC_TIMEOUT # runtime + select BR2_PACKAGE_PYTHON_DBUS_FAST # runtime + help + Bluetooth Low Energy platform Agnostic Klient. + + https://github.com/hbldh/bleak diff --git a/package/python-bleak/python-bleak.hash b/package/python-bleak/python-bleak.hash new file mode 100644 index 00000000..8462e19d --- /dev/null +++ b/package/python-bleak/python-bleak.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/bleak/json +md5 5e27e052efc45b64da1a1f017610c561 bleak-0.21.1.tar.gz +sha256 ec4a1a2772fb315b992cbaa1153070c7e26968a52b0e2727035f443a1af5c18f bleak-0.21.1.tar.gz +# Locally computed sha256 checksums +sha256 c4029a2b63b3824ab68be841f414addbdde20cb79cdbe272fa80c0b2abe65374 LICENSE diff --git a/package/python-bleak/python-bleak.mk b/package/python-bleak/python-bleak.mk new file mode 100644 index 00000000..716b6327 --- /dev/null +++ b/package/python-bleak/python-bleak.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-bleak +# +################################################################################ + +PYTHON_BLEAK_VERSION = 0.21.1 +PYTHON_BLEAK_SOURCE = bleak-$(PYTHON_BLEAK_VERSION).tar.gz +PYTHON_BLEAK_SITE = https://files.pythonhosted.org/packages/6a/c0/3aca655fa43b8ff5340d99fac4e67061f53f42f092fc847bdd0559d67846 +PYTHON_BLEAK_SETUP_TYPE = pep517 +PYTHON_BLEAK_LICENSE = MIT +PYTHON_BLEAK_LICENSE_FILES = LICENSE +PYTHON_BLEAK_DEPENDENCIES = host-python-poetry-core + +$(eval $(python-package)) diff --git a/package/python-blinker/Config.in b/package/python-blinker/Config.in new file mode 100644 index 00000000..3540ca74 --- /dev/null +++ b/package/python-blinker/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_BLINKER + bool "python-blinker" + help + Fast, simple object-to-object and broadcast signaling. + + https://blinker.readthedocs.io diff --git a/package/python-blinker/python-blinker.hash b/package/python-blinker/python-blinker.hash new file mode 100644 index 00000000..e0c1d600 --- /dev/null +++ b/package/python-blinker/python-blinker.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/blinker/json +md5 0306b831281e9918ffb0ac6e3e18b47f blinker-1.7.0.tar.gz +sha256 e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 blinker-1.7.0.tar.gz +# Locally computed sha256 checksums +sha256 9eb73a1f38597a4aa17025d2ae1be3839624c795e985d4f0e9769ce29faca467 LICENSE.rst diff --git a/package/python-blinker/python-blinker.mk b/package/python-blinker/python-blinker.mk new file mode 100644 index 00000000..234126a5 --- /dev/null +++ b/package/python-blinker/python-blinker.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-blinker +# +################################################################################ + +PYTHON_BLINKER_VERSION = 1.7.0 +PYTHON_BLINKER_SOURCE = blinker-$(PYTHON_BLINKER_VERSION).tar.gz +PYTHON_BLINKER_SITE = https://files.pythonhosted.org/packages/a1/13/6df5fc090ff4e5d246baf1f45fe9e5623aa8565757dfa5bd243f6a545f9e +PYTHON_BLINKER_SETUP_TYPE = setuptools +PYTHON_BLINKER_LICENSE = MIT +PYTHON_BLINKER_LICENSE_FILES = LICENSE.rst + +$(eval $(python-package)) diff --git a/package/python-bluezero/Config.in b/package/python-bluezero/Config.in new file mode 100644 index 00000000..fa0998a2 --- /dev/null +++ b/package/python-bluezero/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_PYTHON_BLUEZERO + bool "python-bluezero" + depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS # python-gobject -> gobject-introspection + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # python-gobject -> gobject-introspection + depends on BR2_HOST_GCC_AT_LEAST_8 # python-gobject -> gobject-introspection -> host-qemu + depends on BR2_TOOLCHAIN_USES_GLIBC # python-gobject -> gobject-introspection + select BR2_PACKAGE_DBUS # runtime + select BR2_PACKAGE_DBUS_PYTHON # runtime + select BR2_PACKAGE_PYTHON_GOBJECT # runtime + help + Python library for Bluetooth Low Energy (BLE) on Linux. + + https://github.com/ukBaz/python-bluezero + +comment "python-bluezero needs a glibc toolchain, gcc >= 4.9, host gcc >= 8" + depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_HOST_GCC_AT_LEAST_8 diff --git a/package/python-bluezero/python-bluezero.hash b/package/python-bluezero/python-bluezero.hash new file mode 100644 index 00000000..e9ccb913 --- /dev/null +++ b/package/python-bluezero/python-bluezero.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/bluezero/json +md5 5c256c89c3973cfd20f340f095525af2 bluezero-0.8.0.tar.gz +sha256 9bd6706ff6b941c3bedd5b64e0447051120ae8eeac458fb65f56cc6730e1e598 bluezero-0.8.0.tar.gz +# Locally computed sha256 checksums +sha256 59319e80b4caa94ace4817c9f84aa16abc9d4d2b5f7866251b5fda92e87ccdef LICENSE diff --git a/package/python-bluezero/python-bluezero.mk b/package/python-bluezero/python-bluezero.mk new file mode 100644 index 00000000..8e078f10 --- /dev/null +++ b/package/python-bluezero/python-bluezero.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-bluezero +# +################################################################################ + +PYTHON_BLUEZERO_VERSION = 0.8.0 +PYTHON_BLUEZERO_SOURCE = bluezero-$(PYTHON_BLUEZERO_VERSION).tar.gz +PYTHON_BLUEZERO_SITE = https://files.pythonhosted.org/packages/67/e1/15fc417b9828d38aa8e09ba06df61d6889740fe45867510a781df9a8ba35 +PYTHON_BLUEZERO_SETUP_TYPE = setuptools +PYTHON_BLUEZERO_LICENSE = MIT +PYTHON_BLUEZERO_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-boto3/Config.in b/package/python-boto3/Config.in new file mode 100644 index 00000000..67b14203 --- /dev/null +++ b/package/python-boto3/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_BOTO3 + bool "python-boto3" + select BR2_PACKAGE_PYTHON_BOTOCORE # runtime + select BR2_PACKAGE_PYTHON_JMESPATH # runtime + select BR2_PACKAGE_PYTHON_S3TRANSFER # runtime + help + The AWS SDK for Python. + + https://github.com/boto/boto3 diff --git a/package/python-boto3/python-boto3.hash b/package/python-boto3/python-boto3.hash new file mode 100644 index 00000000..02440a29 --- /dev/null +++ b/package/python-boto3/python-boto3.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/boto3/json +md5 7cc00aa828c5d3a5c09e3af284e6d23e boto3-1.34.14.tar.gz +sha256 5c1bb487c68120aae236354d81b8a1a55d0aa3395d30748a01825ef90891921e boto3-1.34.14.tar.gz +# Locally computed sha256 checksums +sha256 0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594 LICENSE diff --git a/package/python-boto3/python-boto3.mk b/package/python-boto3/python-boto3.mk new file mode 100644 index 00000000..52bb5bc3 --- /dev/null +++ b/package/python-boto3/python-boto3.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-boto3 +# +################################################################################ + +PYTHON_BOTO3_VERSION = 1.34.14 +PYTHON_BOTO3_SOURCE = boto3-$(PYTHON_BOTO3_VERSION).tar.gz +PYTHON_BOTO3_SITE = https://files.pythonhosted.org/packages/5f/b6/1e45c3a145304c3feaf48959c6a46efe9a256eec4d417a445b0d9827d20c +PYTHON_BOTO3_SETUP_TYPE = setuptools +PYTHON_BOTO3_LICENSE = Apache-2.0 +PYTHON_BOTO3_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-botocore/Config.in b/package/python-botocore/Config.in new file mode 100644 index 00000000..cc5e32b5 --- /dev/null +++ b/package/python-botocore/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_BOTOCORE + bool "python-botocore" + select BR2_PACKAGE_PYTHON_DATEUTIL # runtime + select BR2_PACKAGE_PYTHON_JMESPATH # runtime + select BR2_PACKAGE_PYTHON_URLLIB3 # runtime + select BR2_PACKAGE_PYTHON3_PYEXPAT # runtime + select BR2_PACKAGE_PYTHON3_SSL # runtime + help + Low-level, data-driven core of boto 3. + + https://github.com/boto/botocore diff --git a/package/python-botocore/python-botocore.hash b/package/python-botocore/python-botocore.hash new file mode 100644 index 00000000..47fb30f9 --- /dev/null +++ b/package/python-botocore/python-botocore.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/botocore/json +md5 6c8ba4112df2c114c71522330deb0f9a botocore-1.34.14.tar.gz +sha256 041bed0852649cab7e4dcd4d87f9d1cc084467fb846e5b60015e014761d96414 botocore-1.34.14.tar.gz +# Locally computed sha256 checksums +sha256 0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594 LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 tests/unit/auth/aws4_testsuite/LICENSE diff --git a/package/python-botocore/python-botocore.mk b/package/python-botocore/python-botocore.mk new file mode 100644 index 00000000..485e9731 --- /dev/null +++ b/package/python-botocore/python-botocore.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-botocore +# +################################################################################ + +PYTHON_BOTOCORE_VERSION = 1.34.14 +PYTHON_BOTOCORE_SOURCE = botocore-$(PYTHON_BOTOCORE_VERSION).tar.gz +PYTHON_BOTOCORE_SITE = https://files.pythonhosted.org/packages/35/6d/a5aaf38f980060d17905398301033e9eb45c2552bf281fa7fd4c8e23ebdd +PYTHON_BOTOCORE_SETUP_TYPE = setuptools +PYTHON_BOTOCORE_LICENSE = Apache-2.0 +PYTHON_BOTOCORE_LICENSE_FILES = LICENSE.txt tests/unit/auth/aws4_testsuite/LICENSE + +$(eval $(python-package)) diff --git a/package/python-bottle/Config.in b/package/python-bottle/Config.in new file mode 100644 index 00000000..5e37f6e3 --- /dev/null +++ b/package/python-bottle/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_BOTTLE + bool "python-bottle" + help + Bottle is a fast, simple and lightweight WSGI micro + web-framework for Python. It is distributed as a single file + module and has no dependencies other than the Python + Standard Library. + + http://bottlepy.org diff --git a/package/python-bottle/python-bottle.hash b/package/python-bottle/python-bottle.hash new file mode 100644 index 00000000..48a576aa --- /dev/null +++ b/package/python-bottle/python-bottle.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/bottle/json +md5 7d79d6131ecd524530f4e919bc60f444 bottle-0.12.25.tar.gz +sha256 e1a9c94970ae6d710b3fb4526294dfeb86f2cb4a81eff3a4b98dc40fb0e5e021 bottle-0.12.25.tar.gz +# Locally computed sha256 checksums +sha256 d0e7211f1c3c1a1c56f39d18bcb07f27f480c8a9552617756dda3a335933b8a6 LICENSE diff --git a/package/python-bottle/python-bottle.mk b/package/python-bottle/python-bottle.mk new file mode 100644 index 00000000..b35f726f --- /dev/null +++ b/package/python-bottle/python-bottle.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-bottle +# +################################################################################ + +PYTHON_BOTTLE_VERSION = 0.12.25 +PYTHON_BOTTLE_SOURCE = bottle-$(PYTHON_BOTTLE_VERSION).tar.gz +PYTHON_BOTTLE_SITE = https://files.pythonhosted.org/packages/fd/04/1c09ab851a52fe6bc063fd0df758504edede5cc741bd2e807bf434a09215 +PYTHON_BOTTLE_LICENSE = MIT +PYTHON_BOTTLE_LICENSE_FILES = LICENSE +PYTHON_BOTTLE_CPE_ID_VENDOR = bottlepy +PYTHON_BOTTLE_CPE_ID_PRODUCT = bottle +PYTHON_BOTTLE_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-brotli/Config.in b/package/python-brotli/Config.in new file mode 100644 index 00000000..ca493bfe --- /dev/null +++ b/package/python-brotli/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_BROTLI + bool "python-brotli" + help + Python bindings for the Brotli compression library. + + https://github.com/google/brotli diff --git a/package/python-brotli/python-brotli.hash b/package/python-brotli/python-brotli.hash new file mode 100644 index 00000000..e8036d3b --- /dev/null +++ b/package/python-brotli/python-brotli.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/brotli/json +md5 908d109a0309c33b626d01137eb4a060 Brotli-1.1.0.tar.gz +sha256 81de08ac11bcb85841e440c13611c00b67d3bf82698314928d0b676362546724 Brotli-1.1.0.tar.gz +# Locally computed sha256 checksums +sha256 3d180008e36922a4e8daec11c34c7af264fed5962d07924aea928c38e8663c94 LICENSE diff --git a/package/python-brotli/python-brotli.mk b/package/python-brotli/python-brotli.mk new file mode 100644 index 00000000..865c4e36 --- /dev/null +++ b/package/python-brotli/python-brotli.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# python-brotli +# +################################################################################ + +PYTHON_BROTLI_VERSION = 1.1.0 +PYTHON_BROTLI_SOURCE = Brotli-$(PYTHON_BROTLI_VERSION).tar.gz +PYTHON_BROTLI_SITE = https://files.pythonhosted.org/packages/2f/c2/f9e977608bdf958650638c3f1e28f85a1b075f075ebbe77db8555463787b +PYTHON_BROTLI_SETUP_TYPE = setuptools +PYTHON_BROTLI_LICENSE = MIT +PYTHON_BROTLI_LICENSE_FILES = LICENSE + +PYTHON_BROTLI_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y) +PYTHON_BROTLI_CFLAGS += -O0 +endif + +PYTHON_BROTLI_ENV = CFLAGS="$(PYTHON_BROTLI_CFLAGS)" + +$(eval $(python-package)) diff --git a/package/python-bsdiff4/Config.in b/package/python-bsdiff4/Config.in new file mode 100644 index 00000000..32070fb9 --- /dev/null +++ b/package/python-bsdiff4/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_BSDIFF4 + bool "python-bsdiff4" + select BR2_PACKAGE_PYTHON3_BZIP2 # runtime + help + binary diff and patch using the BSDIFF4-format. + + https://github.com/ilanschnell/bsdiff4 diff --git a/package/python-bsdiff4/python-bsdiff4.hash b/package/python-bsdiff4/python-bsdiff4.hash new file mode 100644 index 00000000..5f7585af --- /dev/null +++ b/package/python-bsdiff4/python-bsdiff4.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/bsdiff4/json +md5 ebc06d059f3c4ed4c4a5b952f55ae239 bsdiff4-1.2.4.tar.gz +sha256 1d7129a8121860731e8cce2901d3183e14aec70244f64e8f74563275dc388067 bsdiff4-1.2.4.tar.gz +# Locally computed sha256 checksums +sha256 c6c921c90383f1c43beb53c49a652d28309a410a7c394c729fd8870271451cf0 LICENSE diff --git a/package/python-bsdiff4/python-bsdiff4.mk b/package/python-bsdiff4/python-bsdiff4.mk new file mode 100644 index 00000000..71d212fb --- /dev/null +++ b/package/python-bsdiff4/python-bsdiff4.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-bsdiff4 +# +################################################################################ + +PYTHON_BSDIFF4_VERSION = 1.2.4 +PYTHON_BSDIFF4_SOURCE = bsdiff4-$(PYTHON_BSDIFF4_VERSION).tar.gz +PYTHON_BSDIFF4_SITE = https://files.pythonhosted.org/packages/58/b2/ccf01309dda2c08e0600027bc0f5a99534c91f2f8728b5009fc363df6c2c +PYTHON_BSDIFF4_LICENSE = BSD-2-Clause, BSD-Protection (core.c) +PYTHON_BSDIFF4_LICENSE_FILES = LICENSE +PYTHON_BSDIFF4_CPE_ID_VENDOR = pypi +PYTHON_BSDIFF4_CPE_ID_PRODUCT = bsdiff4 +PYTHON_BSDIFF4_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-cached-property/Config.in b/package/python-cached-property/Config.in new file mode 100644 index 00000000..83439733 --- /dev/null +++ b/package/python-cached-property/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_CACHED_PROPERTY + bool "python-cached-property" + help + A decorator for caching properties in classes. + + https://github.com/pydanny/cached-property diff --git a/package/python-cached-property/python-cached-property.hash b/package/python-cached-property/python-cached-property.hash new file mode 100644 index 00000000..835e9e02 --- /dev/null +++ b/package/python-cached-property/python-cached-property.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/cached-property/json +md5 3451c63f8733ea0756ca1dd2b0c04bb8 cached-property-1.5.2.tar.gz +sha256 9fa5755838eecbb2d234c3aa390bd80fbd3ac6b6869109bfc1b499f7bd89a130 cached-property-1.5.2.tar.gz +# Locally computed sha256 checksums +sha256 ba4756c8039b25b66e3c456cc5bf635aa528cf459b97ee1499d06684ccd89b9a LICENSE diff --git a/package/python-cached-property/python-cached-property.mk b/package/python-cached-property/python-cached-property.mk new file mode 100644 index 00000000..9e1b3f8a --- /dev/null +++ b/package/python-cached-property/python-cached-property.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-cached-property +# +################################################################################ + +PYTHON_CACHED_PROPERTY_VERSION = 1.5.2 +PYTHON_CACHED_PROPERTY_SOURCE = cached-property-$(PYTHON_CACHED_PROPERTY_VERSION).tar.gz +PYTHON_CACHED_PROPERTY_SITE = https://files.pythonhosted.org/packages/61/2c/d21c1c23c2895c091fa7a91a54b6872098fea913526932d21902088a7c41 +PYTHON_CACHED_PROPERTY_SETUP_TYPE = setuptools +PYTHON_CACHED_PROPERTY_LICENSE = BSD-3-Clause +PYTHON_CACHED_PROPERTY_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-cachetools/Config.in b/package/python-cachetools/Config.in new file mode 100644 index 00000000..550e3d25 --- /dev/null +++ b/package/python-cachetools/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_CACHETOOLS + bool "python-cachetools" + help + Extensible memoizing collections and decorators. + + https://github.com/tkem/cachetools/ diff --git a/package/python-cachetools/python-cachetools.hash b/package/python-cachetools/python-cachetools.hash new file mode 100644 index 00000000..7b6b9391 --- /dev/null +++ b/package/python-cachetools/python-cachetools.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/cachetools/json +md5 5317c13b69c4021e925a2fbbc199bcc9 cachetools-5.3.2.tar.gz +sha256 086ee420196f7b2ab9ca2db2520aca326318b68fe5ba8bc4d49cca91add450f2 cachetools-5.3.2.tar.gz +# Locally computed sha256 checksums +sha256 76260c1370a7d41d5fac71a27d781f3add5d7249adfbbfa930846d2d9e47dbd5 LICENSE diff --git a/package/python-cachetools/python-cachetools.mk b/package/python-cachetools/python-cachetools.mk new file mode 100644 index 00000000..c841e076 --- /dev/null +++ b/package/python-cachetools/python-cachetools.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-cachetools +# +################################################################################ + +PYTHON_CACHETOOLS_VERSION = 5.3.2 +PYTHON_CACHETOOLS_SOURCE = cachetools-$(PYTHON_CACHETOOLS_VERSION).tar.gz +PYTHON_CACHETOOLS_SITE = https://files.pythonhosted.org/packages/10/21/1b6880557742c49d5b0c4dcf0cf544b441509246cdd71182e0847ac859d5 +PYTHON_CACHETOOLS_SETUP_TYPE = setuptools +PYTHON_CACHETOOLS_LICENSE = MIT +PYTHON_CACHETOOLS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-calver/python-calver.hash b/package/python-calver/python-calver.hash new file mode 100644 index 00000000..ebc054e6 --- /dev/null +++ b/package/python-calver/python-calver.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/calver/json +md5 e1fd924b9bf953c0b28c49bdfe117d7a calver-2022.6.26.tar.gz +sha256 e05493a3b17517ef1748fbe610da11f10485faa7c416b9d33fd4a52d74894f8b calver-2022.6.26.tar.gz +# Locally computed sha256 checksums +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/python-calver/python-calver.mk b/package/python-calver/python-calver.mk new file mode 100644 index 00000000..2fd5468e --- /dev/null +++ b/package/python-calver/python-calver.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-calver +# +################################################################################ + +PYTHON_CALVER_VERSION = 2022.6.26 +PYTHON_CALVER_SOURCE = calver-$(PYTHON_CALVER_VERSION).tar.gz +PYTHON_CALVER_SITE = https://files.pythonhosted.org/packages/b5/00/96cbed7c019c49ee04b8a08357a981983db7698ae6de402e57097cefc9ad +PYTHON_CALVER_SETUP_TYPE = setuptools +PYTHON_CALVER_LICENSE = Apache-2.0 +PYTHON_CALVER_LICENSE_FILES = LICENSE + +$(eval $(host-python-package)) diff --git a/package/python-can/Config.in b/package/python-can/Config.in new file mode 100644 index 00000000..61955a2b --- /dev/null +++ b/package/python-can/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_CAN + bool "python-can" + select BR2_PACKAGE_PYTHON3_SQLITE # runtime + select BR2_PACKAGE_PYTHON3_ZLIB # runtime + select BR2_PACKAGE_PYTHON_MSGPACK # runtime + select BR2_PACKAGE_PYTHON_PACKAGING # runtime + select BR2_PACKAGE_PYTHON_TYPING_EXTENSIONS # runtime + select BR2_PACKAGE_PYTHON_WRAPT # runtime + help + This module provides controller area network support for + Python. + + https://github.com/hardbyte/python-can diff --git a/package/python-can/python-can.hash b/package/python-can/python-can.hash new file mode 100644 index 00000000..4e706519 --- /dev/null +++ b/package/python-can/python-can.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/python-can/json +md5 a84ace55fdeca8efd50986deacfba584 python-can-4.3.1.tar.gz +sha256 008bea1c12e31586e1aa76971126b831bf01056a900e91862a11360e011ab933 python-can-4.3.1.tar.gz +# Locally computed sha256 checksums +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.txt diff --git a/package/python-can/python-can.mk b/package/python-can/python-can.mk new file mode 100644 index 00000000..c7100e3d --- /dev/null +++ b/package/python-can/python-can.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-can +# +################################################################################ + +PYTHON_CAN_VERSION = 4.3.1 +PYTHON_CAN_SITE = https://files.pythonhosted.org/packages/02/fc/d5fd33ee93f17a4eb0dcd75aebf522396e3f511bf474058e99e86ae4e33f +PYTHON_CAN_SETUP_TYPE = setuptools +PYTHON_CAN_LICENSE = LGPL-3.0 +PYTHON_CAN_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-canopen/Config.in b/package/python-canopen/Config.in new file mode 100644 index 00000000..e36b8c76 --- /dev/null +++ b/package/python-canopen/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_CANOPEN + bool "python-canopen" + select BR2_PACKAGE_PYTHON_CAN # runtime + help + A Python implementation of the CANopen standard. The aim + of the project is to support the most common parts of the + CiA 301 standard in a Pythonic interface. + + https://github.com/christiansandberg/canopen diff --git a/package/python-canopen/python-canopen.hash b/package/python-canopen/python-canopen.hash new file mode 100644 index 00000000..fc3668bc --- /dev/null +++ b/package/python-canopen/python-canopen.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/canopen/json +md5 2a757a6996f896d2e6afbf2bcf598df2 canopen-2.2.0.tar.gz +sha256 5f18651b9df6e4769b9882e969f934ae773ef24a45aabc3334b586982048d08c canopen-2.2.0.tar.gz +# Locally computed sha256 checksums +sha256 0740d30978affcd91c0fc817b7cf942a332381bf0380fe17e60c6a0b377c6e0d LICENSE.txt diff --git a/package/python-canopen/python-canopen.mk b/package/python-canopen/python-canopen.mk new file mode 100644 index 00000000..09ec595e --- /dev/null +++ b/package/python-canopen/python-canopen.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-canopen +# +################################################################################ + +PYTHON_CANOPEN_VERSION = 2.2.0 +PYTHON_CANOPEN_SOURCE = canopen-$(PYTHON_CANOPEN_VERSION).tar.gz +PYTHON_CANOPEN_SITE = https://files.pythonhosted.org/packages/49/55/67e555f6f4ea51d6d966e998a77881c1bd726c6e8cc602fd04852772ce87 +PYTHON_CANOPEN_SETUP_TYPE = setuptools +PYTHON_CANOPEN_LICENSE = MIT +PYTHON_CANOPEN_LICENSE_FILES = LICENSE.txt +PYTHON_CANOPEN_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-cbor/Config.in b/package/python-cbor/Config.in new file mode 100644 index 00000000..403fab3f --- /dev/null +++ b/package/python-cbor/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_CBOR + bool "python-cbor" + help + RFC 7049 - Concise Binary Object Representation. + + https://pypi.python.org/pypi/cbor diff --git a/package/python-cbor/python-cbor.hash b/package/python-cbor/python-cbor.hash new file mode 100644 index 00000000..71e0b1eb --- /dev/null +++ b/package/python-cbor/python-cbor.hash @@ -0,0 +1,3 @@ +# 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/package/python-cbor/python-cbor.mk b/package/python-cbor/python-cbor.mk new file mode 100644 index 00000000..32ca4594 --- /dev/null +++ b/package/python-cbor/python-cbor.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-cbor +# +################################################################################ + +PYTHON_CBOR_VERSION = 1.0.0 +PYTHON_CBOR_SOURCE = cbor-$(PYTHON_CBOR_VERSION).tar.gz +PYTHON_CBOR_SITE = https://pypi.python.org/packages/9b/99/01c6a987c920500189eb74a291bd3a388e6c7cf85736bb6b066d9833315e +PYTHON_CBOR_LICENSE = Apache +PYTHON_CBOR_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-cbor2/Config.in b/package/python-cbor2/Config.in new file mode 100644 index 00000000..ba9383f7 --- /dev/null +++ b/package/python-cbor2/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_CBOR2 + bool "python-cbor2" + help + Pure Python CBOR (de)serializer with extensive tag support. + + https://cbor2.readthedocs.io/ diff --git a/package/python-cbor2/python-cbor2.hash b/package/python-cbor2/python-cbor2.hash new file mode 100644 index 00000000..42ed828d --- /dev/null +++ b/package/python-cbor2/python-cbor2.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/cbor2/json +md5 b44037904de5b0f833020bfe01f741ca cbor2-5.5.1.tar.gz +sha256 f9e192f461a9f8f6082df28c035b006d153904213dc8640bed8a72d72bbc9475 cbor2-5.5.1.tar.gz +# Locally computed sha256 checksums +sha256 a6afd126d8f545a15166a22f25fadff4b9fb4978bbdd17e97d97d950b66d2fef LICENSE.txt diff --git a/package/python-cbor2/python-cbor2.mk b/package/python-cbor2/python-cbor2.mk new file mode 100644 index 00000000..42367004 --- /dev/null +++ b/package/python-cbor2/python-cbor2.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# python-cbor2 +# +################################################################################ + +PYTHON_CBOR2_VERSION = 5.5.1 +PYTHON_CBOR2_SOURCE = cbor2-$(PYTHON_CBOR2_VERSION).tar.gz +PYTHON_CBOR2_SITE = https://files.pythonhosted.org/packages/d6/37/a0a75c2cae532ecb155d05edc1fbbe54fa3957e86f875a38542f87e1379c +PYTHON_CBOR2_SETUP_TYPE = setuptools +PYTHON_CBOR2_LICENSE = MIT +PYTHON_CBOR2_LICENSE_FILES = LICENSE.txt +PYTHON_CBOR2_DEPENDENCIES = host-python-setuptools-scm +PYTHON_CBOR2_ENV = CBOR2_BUILD_C_EXTENSION=1 +HOST_PYTHON_CBOR2_DEPENDENCIES = host-python-setuptools-scm +HOST_PYTHON_CBOR2_ENV = CBOR2_BUILD_C_EXTENSION=0 + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-cchardet/Config.in b/package/python-cchardet/Config.in new file mode 100644 index 00000000..74153126 --- /dev/null +++ b/package/python-cchardet/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_CCHARDET + bool "python-cchardet" + depends on BR2_INSTALL_LIBSTDCPP + help + cChardet is high speed universal character encoding + detector. + + https://github.com/PyYoshi/cChardet + +comment "python-cchardet needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/python-cchardet/python-cchardet.hash b/package/python-cchardet/python-cchardet.hash new file mode 100644 index 00000000..1ecfd6fa --- /dev/null +++ b/package/python-cchardet/python-cchardet.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/cchardet/json +md5 8a76472ad09c68c12069203ea9348ee3 cchardet-2.1.7.tar.gz +sha256 c428b6336545053c2589f6caf24ea32276c6664cb86db817e03a94c60afa0eaf cchardet-2.1.7.tar.gz +# Locally computed sha256 checksums +sha256 107a29ccdd2d778aa2df5462f85dddfa099059abd22e064e07ec2cc9bafc37cd COPYING diff --git a/package/python-cchardet/python-cchardet.mk b/package/python-cchardet/python-cchardet.mk new file mode 100644 index 00000000..53a17f67 --- /dev/null +++ b/package/python-cchardet/python-cchardet.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-cchardet +# +################################################################################ + +PYTHON_CCHARDET_VERSION = 2.1.7 +PYTHON_CCHARDET_SOURCE = cchardet-$(PYTHON_CCHARDET_VERSION).tar.gz +PYTHON_CCHARDET_SITE = https://files.pythonhosted.org/packages/a8/5d/090c9f0312b7988a9433246c9cf0b566b1ae1374368cfb8ac897218a4f65 +PYTHON_CCHARDET_SETUP_TYPE = setuptools +PYTHON_CCHARDET_LICENSE = MPL-1.1 +PYTHON_CCHARDET_LICENSE_FILES = COPYING +PYTHON_CCHARDET_DEPENDENCIES = host-python-cython + +$(eval $(python-package)) diff --git a/package/python-certifi/Config.in b/package/python-certifi/Config.in new file mode 100644 index 00000000..efa7a893 --- /dev/null +++ b/package/python-certifi/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_CERTIFI + bool "python-certifi" + help + Python package for providing Mozilla's CA Bundle. + + https://certifi.io/ diff --git a/package/python-certifi/python-certifi.hash b/package/python-certifi/python-certifi.hash new file mode 100644 index 00000000..0bb4a4fb --- /dev/null +++ b/package/python-certifi/python-certifi.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/certifi/json +md5 d138c6217784e19cda28770b003ab23b certifi-2024.6.2.tar.gz +sha256 3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516 certifi-2024.6.2.tar.gz +# Locally computed sha256 checksums +sha256 e93716da6b9c0d5a4a1df60fe695b370f0695603d21f6f83f053e42cfc10caf7 LICENSE diff --git a/package/python-certifi/python-certifi.mk b/package/python-certifi/python-certifi.mk new file mode 100644 index 00000000..1c5d4d26 --- /dev/null +++ b/package/python-certifi/python-certifi.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-certifi +# +################################################################################ + +PYTHON_CERTIFI_VERSION = 2024.6.2 +PYTHON_CERTIFI_SOURCE = certifi-$(PYTHON_CERTIFI_VERSION).tar.gz +PYTHON_CERTIFI_SITE = https://files.pythonhosted.org/packages/07/b3/e02f4f397c81077ffc52a538e0aec464016f1860c472ed33bd2a1d220cc5 +PYTHON_CERTIFI_SETUP_TYPE = setuptools +PYTHON_CERTIFI_LICENSE = ISC (Python code), MPL-2.0 (cacert.pem) +PYTHON_CERTIFI_LICENSE_FILES = LICENSE + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-cffi/Config.in b/package/python-cffi/Config.in new file mode 100644 index 00000000..bc9f6a29 --- /dev/null +++ b/package/python-cffi/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_CFFI + bool "python-cffi" + select BR2_PACKAGE_LIBFFI + select BR2_PACKAGE_PYTHON_PYCPARSER # runtime + help + This is the Foreign Function Interface for Python calling C + code. The aim of this project is to provide a convenient + and reliable way of calling C code from Python. + + https://pypi.python.org/pypi/cffi diff --git a/package/python-cffi/python-cffi.hash b/package/python-cffi/python-cffi.hash new file mode 100644 index 00000000..0573d6ec --- /dev/null +++ b/package/python-cffi/python-cffi.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/cffi/json +md5 0bcaed453da3004d0bea103038345c1e cffi-1.16.0.tar.gz +sha256 bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0 cffi-1.16.0.tar.gz +# Locally computed sha256 checksums +sha256 04b80f5b077bbed68808cfebadeb5e3523f2a8c9a96495c587bd96df1eac2a33 LICENSE diff --git a/package/python-cffi/python-cffi.mk b/package/python-cffi/python-cffi.mk new file mode 100644 index 00000000..1f83db07 --- /dev/null +++ b/package/python-cffi/python-cffi.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# python-cffi +# +################################################################################ + +PYTHON_CFFI_VERSION = 1.16.0 +PYTHON_CFFI_SOURCE = cffi-$(PYTHON_CFFI_VERSION).tar.gz +PYTHON_CFFI_SITE = https://files.pythonhosted.org/packages/68/ce/95b0bae7968c65473e1298efb042e10cafc7bafc14d9e4f154008241c91d +PYTHON_CFFI_SETUP_TYPE = setuptools +PYTHON_CFFI_DEPENDENCIES = host-pkgconf libffi +PYTHON_CFFI_LICENSE = MIT +PYTHON_CFFI_LICENSE_FILES = LICENSE + +# This host package uses pkg-config to find libffi, so we have to +# provide the proper hints for pkg-config to behave properly for host +# packages. +HOST_PYTHON_CFFI_ENV = \ + PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \ + PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \ + PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ + PKG_CONFIG_SYSROOT_DIR="/" \ + PKG_CONFIG_LIBDIR="$(HOST_DIR)/lib/pkgconfig:$(HOST_DIR)/share/pkgconfig" +HOST_PYTHON_CFFI_DEPENDENCIES = host-pkgconf host-python-pycparser host-libffi + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-channels-redis/Config.in b/package/python-channels-redis/Config.in new file mode 100644 index 00000000..785b05ca --- /dev/null +++ b/package/python-channels-redis/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_PYTHON_CHANNELS_REDIS + bool "python-channels-redis" + # python-channels -> python-daphne -> python-autobahn -> python-cryptography + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_PYTHON_ASGIREF # runtime + select BR2_PACKAGE_PYTHON_CHANNELS # runtime + select BR2_PACKAGE_PYTHON_MSGPACK # runtime + select BR2_PACKAGE_PYTHON_REDIS # runtime + help + A Django Channels channel layer that uses Redis as its + backing store, and supports both a single-server and + sharded configurations, as well as group support. + + http://github.com/django/channels_redis/ diff --git a/package/python-channels-redis/python-channels-redis.hash b/package/python-channels-redis/python-channels-redis.hash new file mode 100644 index 00000000..943712b3 --- /dev/null +++ b/package/python-channels-redis/python-channels-redis.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/channels-redis/json +md5 a184dded3478e618735a42174c334565 channels_redis-4.1.0.tar.gz +sha256 6bd4f75f4ab4a7db17cee495593ace886d7e914c66f8214a1f247ff6659c073a channels_redis-4.1.0.tar.gz +# Locally computed sha256 checksums +sha256 b846415d1b514e9c1dff14a22deb906d794bc546ca6129f950a18cd091e2a669 LICENSE diff --git a/package/python-channels-redis/python-channels-redis.mk b/package/python-channels-redis/python-channels-redis.mk new file mode 100644 index 00000000..9186f07f --- /dev/null +++ b/package/python-channels-redis/python-channels-redis.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-channels-redis +# +################################################################################ + +PYTHON_CHANNELS_REDIS_VERSION = 4.1.0 +PYTHON_CHANNELS_REDIS_SOURCE = channels_redis-$(PYTHON_CHANNELS_REDIS_VERSION).tar.gz +PYTHON_CHANNELS_REDIS_SITE = https://files.pythonhosted.org/packages/5b/3b/941efa8e337c3537475926fbf86e8cfe38a919e0f60bb9538b1cff364b8d +PYTHON_CHANNELS_REDIS_SETUP_TYPE = setuptools +PYTHON_CHANNELS_REDIS_LICENSE = BSD-3-Clause +PYTHON_CHANNELS_REDIS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-channels/Config.in b/package/python-channels/Config.in new file mode 100644 index 00000000..b94f53ce --- /dev/null +++ b/package/python-channels/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_PYTHON_CHANNELS + bool "python-channels" + # python-daphne -> python-autobahn -> python-cryptography + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_PYTHON_ASGIREF # runtime + select BR2_PACKAGE_PYTHON_DAPHNE # runtime + select BR2_PACKAGE_PYTHON_DJANGO # runtime + help + Channels augments Django to bring WebSocket, long-poll + HTTP, task offloading and other async support to your + code, using familiar Django design patterns and a + flexible underlying framework that lets you not only + customize behaviours but also write support for your + own protocols and needs. + + http://github.com/django/channels diff --git a/package/python-channels/python-channels.hash b/package/python-channels/python-channels.hash new file mode 100644 index 00000000..ea643f15 --- /dev/null +++ b/package/python-channels/python-channels.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/channels/json +md5 b145f0623bf1bad8ceb534c306ad2f2a channels-4.0.0.tar.gz +sha256 0ce53507a7da7b148eaa454526e0e05f7da5e5d1c23440e4886cf146981d8420 channels-4.0.0.tar.gz +# Locally computed sha256 checksums +sha256 b846415d1b514e9c1dff14a22deb906d794bc546ca6129f950a18cd091e2a669 LICENSE diff --git a/package/python-channels/python-channels.mk b/package/python-channels/python-channels.mk new file mode 100644 index 00000000..40f17cb1 --- /dev/null +++ b/package/python-channels/python-channels.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-channels +# +################################################################################ + +PYTHON_CHANNELS_VERSION = 4.0.0 +PYTHON_CHANNELS_SOURCE = channels-$(PYTHON_CHANNELS_VERSION).tar.gz +PYTHON_CHANNELS_SITE = https://files.pythonhosted.org/packages/8e/cb/6fedd9df5972b893a04c8e5d7748873d6480a813e74b0797945bee1f4282 +PYTHON_CHANNELS_SETUP_TYPE = setuptools +PYTHON_CHANNELS_LICENSE = BSD-3-Clause +PYTHON_CHANNELS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-characteristic/Config.in b/package/python-characteristic/Config.in new file mode 100644 index 00000000..1226fa85 --- /dev/null +++ b/package/python-characteristic/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_CHARACTERISTIC + bool "python-characteristic" + help + Python attributes without boilerplate. + + https://pypi.python.org/pypi/characteristic diff --git a/package/python-characteristic/python-characteristic.hash b/package/python-characteristic/python-characteristic.hash new file mode 100644 index 00000000..c91017d7 --- /dev/null +++ b/package/python-characteristic/python-characteristic.hash @@ -0,0 +1,5 @@ +# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=b249368dd021fde1c06b4802867c0913 +md5 b249368dd021fde1c06b4802867c0913 characteristic-14.3.0.tar.gz +# Locally computed +sha256 ded68d4e424115ed44e5c83c2a901a0b6157a959079d7591d92106ffd3ada380 characteristic-14.3.0.tar.gz +sha256 0af91b662f8428b28f5e517b049a0bb9feeb59b1adaa5c9418c1579f9485107c LICENSE diff --git a/package/python-characteristic/python-characteristic.mk b/package/python-characteristic/python-characteristic.mk new file mode 100644 index 00000000..7ea8d95c --- /dev/null +++ b/package/python-characteristic/python-characteristic.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-characteristic +# +################################################################################ + +PYTHON_CHARACTERISTIC_VERSION = 14.3.0 +PYTHON_CHARACTERISTIC_SOURCE = characteristic-$(PYTHON_CHARACTERISTIC_VERSION).tar.gz +PYTHON_CHARACTERISTIC_SITE = https://pypi.python.org/packages/source/c/characteristic +PYTHON_CHARACTERISTIC_LICENSE = MIT +PYTHON_CHARACTERISTIC_LICENSE_FILES = LICENSE +PYTHON_CHARACTERISTIC_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-chardet/Config.in b/package/python-chardet/Config.in new file mode 100644 index 00000000..59e7cbfa --- /dev/null +++ b/package/python-chardet/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_CHARDET + bool "python-chardet" + help + Universal encoding detector for Python 3. + + https://github.com/chardet/chardet diff --git a/package/python-chardet/python-chardet.hash b/package/python-chardet/python-chardet.hash new file mode 100644 index 00000000..bf0ed47d --- /dev/null +++ b/package/python-chardet/python-chardet.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/chardet/json +md5 cc2d8cc9a751641463b4f7cfecad2ffa chardet-5.2.0.tar.gz +sha256 1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 chardet-5.2.0.tar.gz +# Locally computed +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSE diff --git a/package/python-chardet/python-chardet.mk b/package/python-chardet/python-chardet.mk new file mode 100644 index 00000000..16e5f303 --- /dev/null +++ b/package/python-chardet/python-chardet.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-chardet +# +################################################################################ + +PYTHON_CHARDET_VERSION = 5.2.0 +PYTHON_CHARDET_SOURCE = chardet-$(PYTHON_CHARDET_VERSION).tar.gz +PYTHON_CHARDET_SITE = https://files.pythonhosted.org/packages/f3/0d/f7b6ab21ec75897ed80c17d79b15951a719226b9fababf1e40ea74d69079 +PYTHON_CHARDET_SETUP_TYPE = setuptools +PYTHON_CHARDET_LICENSE = LGPL-2.1+ +PYTHON_CHARDET_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-charset-normalizer/Config.in b/package/python-charset-normalizer/Config.in new file mode 100644 index 00000000..63e04a7a --- /dev/null +++ b/package/python-charset-normalizer/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_CHARSET_NORMALIZER + bool "python-charset-normalizer" + help + The Real First Universal Charset Detector. Open, modern and + actively maintained alternative to Chardet. + + https://github.com/ousret/charset_normalizer diff --git a/package/python-charset-normalizer/python-charset-normalizer.hash b/package/python-charset-normalizer/python-charset-normalizer.hash new file mode 100644 index 00000000..8ef0e3fe --- /dev/null +++ b/package/python-charset-normalizer/python-charset-normalizer.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/charset-normalizer/json +md5 0a4019908d9e50ff13138e8a794d9e2b charset-normalizer-3.3.2.tar.gz +sha256 f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5 charset-normalizer-3.3.2.tar.gz +# Locally computed sha256 checksums +sha256 eb31a0c5a4fb09b8a4e32055d25c1e5f9c358a2752fef3cd720213d1ccfee241 LICENSE diff --git a/package/python-charset-normalizer/python-charset-normalizer.mk b/package/python-charset-normalizer/python-charset-normalizer.mk new file mode 100644 index 00000000..914b96eb --- /dev/null +++ b/package/python-charset-normalizer/python-charset-normalizer.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-charset-normalizer +# +################################################################################ + +PYTHON_CHARSET_NORMALIZER_VERSION = 3.3.2 +PYTHON_CHARSET_NORMALIZER_SOURCE = charset-normalizer-$(PYTHON_CHARSET_NORMALIZER_VERSION).tar.gz +PYTHON_CHARSET_NORMALIZER_SITE = https://files.pythonhosted.org/packages/63/09/c1bc53dab74b1816a00d8d030de5bf98f724c52c1635e07681d312f20be8 +PYTHON_CHARSET_NORMALIZER_SETUP_TYPE = setuptools +PYTHON_CHARSET_NORMALIZER_LICENSE = MIT +PYTHON_CHARSET_NORMALIZER_LICENSE_FILES = LICENSE + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-cheetah/Config.in b/package/python-cheetah/Config.in new file mode 100644 index 00000000..7cbfc5c2 --- /dev/null +++ b/package/python-cheetah/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_CHEETAH + bool "python-cheetah" + help + Cheetah is an open source template engine and code + generation tool. + + It can be used standalone or combined with other tools and + frameworks. Web development is its principle use, but + Cheetah is very flexible and is also being used to generate + C++ game code, Java, sql, form emails and even Python code. + + https://pypi.org/project/Cheetah3/ diff --git a/package/python-cheetah/python-cheetah.hash b/package/python-cheetah/python-cheetah.hash new file mode 100644 index 00000000..de397e80 --- /dev/null +++ b/package/python-cheetah/python-cheetah.hash @@ -0,0 +1,5 @@ +# From https://pypi.org/pypi/Cheetah3/json +md5 42bb9da785974c7e4089aa754ff99a73 Cheetah3-3.2.6.post2.tar.gz +sha256 63157d7a00a273b59676b5be5aa817c75c37efc88478231f1a160f4cfb7f7878 Cheetah3-3.2.6.post2.tar.gz +# Locally computed sha256 checksums +sha256 635349ae512fafc2e60eb74a50d0a5276fa06c00b5ecb20da53546449ddc45ea LICENSE diff --git a/package/python-cheetah/python-cheetah.mk b/package/python-cheetah/python-cheetah.mk new file mode 100644 index 00000000..92688f6c --- /dev/null +++ b/package/python-cheetah/python-cheetah.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-cheetah +# +################################################################################ + +PYTHON_CHEETAH_VERSION = 3.2.6.post2 +PYTHON_CHEETAH_SOURCE = Cheetah3-$(PYTHON_CHEETAH_VERSION).tar.gz +PYTHON_CHEETAH_SITE = https://files.pythonhosted.org/packages/c0/97/c3fa47e223207e6ca6b501a954c5c959ed3e99f2a1ceec9918238ce38418 +PYTHON_CHEETAH_LICENSE = MIT +PYTHON_CHEETAH_LICENSE_FILES = LICENSE +PYTHON_CHEETAH_SETUP_TYPE = setuptools + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-cheroot/0001-Use-setuptools-scm-v7-for-building-the-dists.patch b/package/python-cheroot/0001-Use-setuptools-scm-v7-for-building-the-dists.patch new file mode 100644 index 00000000..837f2804 --- /dev/null +++ b/package/python-cheroot/0001-Use-setuptools-scm-v7-for-building-the-dists.patch @@ -0,0 +1,101 @@ +From f0c51af263e20f332c6f675aa90ec6705ae4f5d1 Mon Sep 17 00:00:00 2001 +From: Serhii Abarovskyi +Date: Tue, 9 May 2023 18:33:54 +0300 +Subject: [PATCH] Use setuptools-scm v7+ for building the dists + +Since version 7, setuptools-scm has native support for git archive, +so the setuptools-scm-git-archive project is obsolete +and this patch removes it from the build dependencies. +Close #515 + +Upstream: https://github.com/cherrypy/cheroot/commit/f0c51af263e20f332c6f675aa90ec6705ae4f5d1 +Signed-off-by: Fabrice Fontaine +--- + .git_archival.txt | 3 +++ + pyproject.toml | 3 +-- + requirements/dist-build-constraints.in | 3 +-- + requirements/dist-build-constraints.txt | 16 +++++++--------- + setup.cfg | 3 +-- + 5 files changed, 13 insertions(+), 15 deletions(-) + +diff --git a/.git_archival.txt b/.git_archival.txt +index 95cb3eea4e..3994ec0a83 100644 +--- a/.git_archival.txt ++++ b/.git_archival.txt +@@ -1 +1,4 @@ ++node: $Format:%H$ ++node-date: $Format:%cI$ ++describe-name: $Format:%(describe:tags=true)$ + ref-names: $Format:%D$ +diff --git a/pyproject.toml b/pyproject.toml +index b1e5f60a80..88df57dcc1 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -6,8 +6,7 @@ requires = [ + "setuptools>=34.4", + + # Plugins +- "setuptools_scm[toml]>=3.5", +- "setuptools_scm_git_archive>=1.1", ++ "setuptools-scm >= 7.0.0", + ] + build-backend = "setuptools.build_meta" + +diff --git a/requirements/dist-build-constraints.in b/requirements/dist-build-constraints.in +index 26b57228a9..a37baef1a9 100644 +--- a/requirements/dist-build-constraints.in ++++ b/requirements/dist-build-constraints.in +@@ -5,8 +5,7 @@ + setuptools >= 34.4 + + # Plugins +-setuptools_scm[toml] >= 3.5 +-setuptools_scm_git_archive >= 1.1 ++setuptools-scm[toml] >= 7.0.0 + + # Dynamic (coming from setuptools' PEP 517 build backend) + wheel +diff --git a/requirements/dist-build-constraints.txt b/requirements/dist-build-constraints.txt +index 525f2be30f..8bd4343ff6 100644 +--- a/requirements/dist-build-constraints.txt ++++ b/requirements/dist-build-constraints.txt +@@ -1,18 +1,16 @@ + # +-# This file is autogenerated by pip-compile with python 3.10 +-# To update, run: ++# This file is autogenerated by pip-compile with Python 3.10 ++# by the following command: + # + # pip-compile --allow-unsafe --output-file=requirements/dist-build-constraints.txt --strip-extras requirements/dist-build-constraints.in + # +-packaging==21.3 ++packaging==23.1 + # via setuptools-scm +-pyparsing==3.0.6 +- # via packaging +-setuptools-scm==6.3.2 ++setuptools-scm==7.1.0 + # via -r requirements/dist-build-constraints.in +-setuptools-scm-git-archive==1.1 +- # via -r requirements/dist-build-constraints.in +-tomli==2.0.0 ++tomli==2.0.1 ++ # via setuptools-scm ++typing-extensions==4.6.3 + # via setuptools-scm + wheel==0.37.1 + # via -r requirements/dist-build-constraints.in +diff --git a/setup.cfg b/setup.cfg +index 1f2b08f4c3..900c7b4feb 100644 +--- a/setup.cfg ++++ b/setup.cfg +@@ -64,8 +64,7 @@ include_package_data = True + packages = find: + include_package_data = True + setup_requires = +- setuptools_scm>=1.15.0 +- setuptools_scm_git_archive>=1.0 ++ setuptools_scm >= 7.0.0 + install_requires = + importlib_metadata; python_version < '3.8' + more_itertools >= 2.6 diff --git a/package/python-cheroot/Config.in b/package/python-cheroot/Config.in new file mode 100644 index 00000000..4c907ff8 --- /dev/null +++ b/package/python-cheroot/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_CHEROOT + bool "python-cheroot" + select BR2_PACKAGE_PYTHON_MORE_ITERTOOLS # runtime + select BR2_PACKAGE_PYTHON_JARACO_FUNCTOOLS # runtime + help + Cheroot is the high-performance, pure-Python + HTTP server used by CherryPy. + + https://github.com/cherrypy/cheroot diff --git a/package/python-cheroot/python-cheroot.hash b/package/python-cheroot/python-cheroot.hash new file mode 100644 index 00000000..d103eb6f --- /dev/null +++ b/package/python-cheroot/python-cheroot.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/cheroot/json +md5 be96fa052c54892240f916fbb06cc571 cheroot-10.0.0.tar.gz +sha256 59c4a1877fef9969b3c3c080caaaf377e2780919437853fc0d32a9df40b311f0 cheroot-10.0.0.tar.gz +# Locally computed sha256 checksums +sha256 e20feeb491a7e98084f15719349e9857aad41c4503c5e479f8815b063dbf7564 LICENSE.md diff --git a/package/python-cheroot/python-cheroot.mk b/package/python-cheroot/python-cheroot.mk new file mode 100644 index 00000000..19aa7ae1 --- /dev/null +++ b/package/python-cheroot/python-cheroot.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-cheroot +# +################################################################################ + +PYTHON_CHEROOT_VERSION = 10.0.0 +PYTHON_CHEROOT_SOURCE = cheroot-$(PYTHON_CHEROOT_VERSION).tar.gz +PYTHON_CHEROOT_SITE = https://files.pythonhosted.org/packages/08/7c/95c154177b16077de0fec1b821b0d8b3df2b59c5c7b3575a9c1bf52a437e +PYTHON_CHEROOT_LICENSE = BSD-3-Clause +PYTHON_CHEROOT_LICENSE_FILES = LICENSE.md +PYTHON_CHEROOT_SETUP_TYPE = setuptools +PYTHON_CHEROOT_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-cherrypy/Config.in b/package/python-cherrypy/Config.in new file mode 100644 index 00000000..fd678728 --- /dev/null +++ b/package/python-cherrypy/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_PYTHON_CHERRYPY + bool "python-cherrypy" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-jaraco-collections -> python-jaraco-text -> python-inflect -> python-pydantic -> python-pydantic-core + select BR2_PACKAGE_PYTHON_CHEROOT # runtime + select BR2_PACKAGE_PYTHON_JARACO_COLLECTIONS # runtime + select BR2_PACKAGE_PYTHON_MORE_ITERTOOLS # runtime + select BR2_PACKAGE_PYTHON_PORTEND # runtime + select BR2_PACKAGE_PYTHON_ZC_LOCKFILE # runtime + select BR2_PACKAGE_PYTHON3_PYEXPAT # runtime + select BR2_PACKAGE_PYTHON3_ZLIB # runtime + help + A minimalist web framework + + http://www.cherrypy.org diff --git a/package/python-cherrypy/python-cherrypy.hash b/package/python-cherrypy/python-cherrypy.hash new file mode 100644 index 00000000..92697e5f --- /dev/null +++ b/package/python-cherrypy/python-cherrypy.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/cherrypy/json +md5 014dbd400aeda9d2b098ed01c95b4a30 CherryPy-18.9.0.tar.gz +sha256 6b06c191ce71a86461f30572a1ab57ffc09f43143ba8e42c103c7b3347220eb1 CherryPy-18.9.0.tar.gz +# Locally computed sha256 checksums +sha256 45ade933c280ece37e3e01d3a91afeed9505746a456f72ad10b0897c49e65104 LICENSE.md diff --git a/package/python-cherrypy/python-cherrypy.mk b/package/python-cherrypy/python-cherrypy.mk new file mode 100644 index 00000000..244491a0 --- /dev/null +++ b/package/python-cherrypy/python-cherrypy.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-cherrypy +# +################################################################################ + +PYTHON_CHERRYPY_VERSION = 18.9.0 +PYTHON_CHERRYPY_SOURCE = CherryPy-$(PYTHON_CHERRYPY_VERSION).tar.gz +PYTHON_CHERRYPY_SITE = https://files.pythonhosted.org/packages/bd/5f/e265a49883bfcfb7f2c3d3d9e96197cfe8136783e96c5ce20e201550aaa0 +PYTHON_CHERRYPY_LICENSE = BSD-3-Clause +PYTHON_CHERRYPY_LICENSE_FILES = LICENSE.md +PYTHON_CHERRYPY_SETUP_TYPE = setuptools +PYTHON_CHERRYPY_DEPENDENCIES = \ + host-python-setuptools-scm \ + host-python-setuptools-scm-git-archive + +$(eval $(python-package)) diff --git a/package/python-click/Config.in b/package/python-click/Config.in new file mode 100644 index 00000000..c0269986 --- /dev/null +++ b/package/python-click/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_CLICK + bool "python-click" + help + A simple wrapper around optparse for powerful command line + utilities. + + https://pypi.python.org/pypi/click diff --git a/package/python-click/python-click.hash b/package/python-click/python-click.hash new file mode 100644 index 00000000..0fc04d63 --- /dev/null +++ b/package/python-click/python-click.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/click/json +md5 7c3b52c56fd30699f453a7dc7b42cecb click-8.1.7.tar.gz +sha256 ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de click-8.1.7.tar.gz +# Locally computed sha256 checksums +sha256 9a8ad106a394e853bfe21f42f4e72d592819a22805d991b5f3275029292b658d LICENSE.rst diff --git a/package/python-click/python-click.mk b/package/python-click/python-click.mk new file mode 100644 index 00000000..0e29ff03 --- /dev/null +++ b/package/python-click/python-click.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-click +# +################################################################################ + +PYTHON_CLICK_VERSION = 8.1.7 +PYTHON_CLICK_SOURCE = click-$(PYTHON_CLICK_VERSION).tar.gz +PYTHON_CLICK_SITE = https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5 +PYTHON_CLICK_LICENSE = BSD-3-Clause +PYTHON_CLICK_LICENSE_FILES = LICENSE.rst +PYTHON_CLICK_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-colorama/Config.in b/package/python-colorama/Config.in new file mode 100644 index 00000000..911effb3 --- /dev/null +++ b/package/python-colorama/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_COLORAMA + bool "python-colorama" + help + Cross-platform colored terminal text. + + https://github.com/tartley/colorama diff --git a/package/python-colorama/python-colorama.hash b/package/python-colorama/python-colorama.hash new file mode 100644 index 00000000..aba1be3e --- /dev/null +++ b/package/python-colorama/python-colorama.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/colorama/json +md5 11fe1cbf8299798551ac88f824ea11c4 colorama-0.4.6.tar.gz +sha256 08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 colorama-0.4.6.tar.gz +# Locally computed sha256 checksums +sha256 cac35c02686e5d04a5a7140bfb3b36e73aed496656e891102e428886d7930318 LICENSE.txt diff --git a/package/python-colorama/python-colorama.mk b/package/python-colorama/python-colorama.mk new file mode 100644 index 00000000..d633e006 --- /dev/null +++ b/package/python-colorama/python-colorama.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-colorama +# +################################################################################ + +PYTHON_COLORAMA_VERSION = 0.4.6 +PYTHON_COLORAMA_SOURCE = colorama-$(PYTHON_COLORAMA_VERSION).tar.gz +PYTHON_COLORAMA_SITE = https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4 +PYTHON_COLORAMA_SETUP_TYPE = pep517 +PYTHON_COLORAMA_LICENSE = BSD-3-Clause +PYTHON_COLORAMA_LICENSE_FILES = LICENSE.txt +PYTHON_COLORAMA_DEPENDENCIES = host-python-hatchling + +$(eval $(python-package)) diff --git a/package/python-colorlog/Config.in b/package/python-colorlog/Config.in new file mode 100644 index 00000000..673f97aa --- /dev/null +++ b/package/python-colorlog/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_COLORLOG + bool "python-colorlog" + help + Log formatting with colors. + + https://github.com/borntyping/python-colorlog diff --git a/package/python-colorlog/python-colorlog.hash b/package/python-colorlog/python-colorlog.hash new file mode 100644 index 00000000..9df94b19 --- /dev/null +++ b/package/python-colorlog/python-colorlog.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/colorlog/json +md5 805e982037ba071d3d42c3d53cf73fd8 colorlog-6.8.0.tar.gz +sha256 fbb6fdf9d5685f2517f388fb29bb27d54e8654dd31f58bc2a3b217e967a95ca6 colorlog-6.8.0.tar.gz +# Locally computed sha256 checksums +sha256 b1d9082bc483623fd59fc7279b457f0e40d942a76426cde257239e04dfe4125a LICENSE diff --git a/package/python-colorlog/python-colorlog.mk b/package/python-colorlog/python-colorlog.mk new file mode 100644 index 00000000..f96318ce --- /dev/null +++ b/package/python-colorlog/python-colorlog.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-colorlog +# +################################################################################ + +PYTHON_COLORLOG_VERSION = 6.8.0 +PYTHON_COLORLOG_SOURCE = colorlog-$(PYTHON_COLORLOG_VERSION).tar.gz +PYTHON_COLORLOG_SITE = https://files.pythonhosted.org/packages/1f/b0/e4e3850d43f5429f9e53404056d705117fbb8a4d9e755425e762a9f68317 +PYTHON_COLORLOG_SETUP_TYPE = setuptools +PYTHON_COLORLOG_LICENSE = MIT +PYTHON_COLORLOG_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-colorzero/Config.in b/package/python-colorzero/Config.in new file mode 100644 index 00000000..b2ef711f --- /dev/null +++ b/package/python-colorzero/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_COLORZERO + bool "python-colorzero" + help + A color manipulation library for Python. + + https://github.com/waveform80/colorzero diff --git a/package/python-colorzero/python-colorzero.hash b/package/python-colorzero/python-colorzero.hash new file mode 100644 index 00000000..fc2455c8 --- /dev/null +++ b/package/python-colorzero/python-colorzero.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 86c9933b004aec8ce1c476d1d1129e00325c7724df3c09aa353d5f8e883ed08d python-colorzero-2.0.tar.gz +# Locally computed +sha256 ee1c76f465410c34802ddf81d70e1ea7a4542cf58459425038498d8f4e36bb45 LICENSE.txt diff --git a/package/python-colorzero/python-colorzero.mk b/package/python-colorzero/python-colorzero.mk new file mode 100644 index 00000000..f38c98a0 --- /dev/null +++ b/package/python-colorzero/python-colorzero.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-colorzero +# +################################################################################ + +PYTHON_COLORZERO_VERSION = 2.0 +PYTHON_COLORZERO_SITE = $(call github,waveform80,colorzero,release-$(PYTHON_COLORZERO_VERSION)) +PYTHON_COLORZERO_LICENSE = BSD-3-Clause +PYTHON_COLORZERO_LICENSE_FILES = LICENSE.txt +PYTHON_COLORZERO_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-configobj/Config.in b/package/python-configobj/Config.in new file mode 100644 index 00000000..365aa17f --- /dev/null +++ b/package/python-configobj/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_CONFIGOBJ + bool "python-configobj" + select BR2_PACKAGE_PYTHON_SIX # runtime + help + Config file reading, writing and validation. + + https://github.com/DiffSK/configobj diff --git a/package/python-configobj/python-configobj.hash b/package/python-configobj/python-configobj.hash new file mode 100644 index 00000000..682dc987 --- /dev/null +++ b/package/python-configobj/python-configobj.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/configobj/json +md5 8dda7b31bb3aea87ecfe3b7a87812b17 configobj-5.0.8.tar.gz +sha256 6f704434a07dc4f4dc7c9a745172c1cad449feb548febd9f7fe362629c627a97 configobj-5.0.8.tar.gz +# Locally computed sha256 checksums +sha256 0d95e648469a711f5ec1e59e6d4492150ec65d968c1ea6c6d96154a92879997a LICENSE diff --git a/package/python-configobj/python-configobj.mk b/package/python-configobj/python-configobj.mk new file mode 100644 index 00000000..fe1776f7 --- /dev/null +++ b/package/python-configobj/python-configobj.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-configobj +# +################################################################################ + +PYTHON_CONFIGOBJ_VERSION = 5.0.8 +PYTHON_CONFIGOBJ_SOURCE = configobj-$(PYTHON_CONFIGOBJ_VERSION).tar.gz +PYTHON_CONFIGOBJ_SITE = https://files.pythonhosted.org/packages/cb/87/17d4c6d634c044ab08b11c0cd2a8a136d103713d438f8792d7be2c5148fb +PYTHON_CONFIGOBJ_SETUP_TYPE = setuptools +PYTHON_CONFIGOBJ_LICENSE = BSD-3-Clause +PYTHON_CONFIGOBJ_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-configshell-fb/Config.in b/package/python-configshell-fb/Config.in new file mode 100644 index 00000000..ed7f9e02 --- /dev/null +++ b/package/python-configshell-fb/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_CONFIGSHELL_FB + bool "python-configshell-fb" + select BR2_PACKAGE_PYTHON_PYPARSING + select BR2_PACKAGE_PYTHON3_READLINE + select BR2_PACKAGE_PYTHON_SIX + select BR2_PACKAGE_PYTHON_URWID + help + configshell-fb is a Python library that provides a framework + for building simple but nice CLI-based applications. + + https://github.com/open-iscsi/configshell-fb diff --git a/package/python-configshell-fb/python-configshell-fb.hash b/package/python-configshell-fb/python-configshell-fb.hash new file mode 100644 index 00000000..e0905010 --- /dev/null +++ b/package/python-configshell-fb/python-configshell-fb.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 44696b92bea2b44c1d0bf2828477dddeb3b4dfb312ad82ce06d7b704c0985e27 python-configshell-fb-1.1.30.tar.gz +sha256 5df2a0d87d6c562f0ea11c688ac52532aa28d744cabc7994ff0537f64b3b3320 COPYING diff --git a/package/python-configshell-fb/python-configshell-fb.mk b/package/python-configshell-fb/python-configshell-fb.mk new file mode 100644 index 00000000..3446a86e --- /dev/null +++ b/package/python-configshell-fb/python-configshell-fb.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-configshell-fb +# +################################################################################ + +# When upgrading the version, be sure to also upgrade python-rtslib-fb +# and targetcli-fb at the same time. +PYTHON_CONFIGSHELL_FB_VERSION = 1.1.30 +PYTHON_CONFIGSHELL_FB_SITE = $(call github,open-iscsi,configshell-fb,v$(PYTHON_CONFIGSHELL_FB_VERSION)) +PYTHON_CONFIGSHELL_FB_LICENSE = Apache-2.0 +PYTHON_CONFIGSHELL_FB_LICENSE_FILES = COPYING +PYTHON_CONFIGSHELL_FB_SETUP_TYPE = setuptools +PYTHON_CONFIGSHELL_FB_DEPENDENCIES = python-pyparsing python-six python-urwid + +$(eval $(python-package)) diff --git a/package/python-constantly/Config.in b/package/python-constantly/Config.in new file mode 100644 index 00000000..13bb2e86 --- /dev/null +++ b/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/package/python-constantly/python-constantly.hash b/package/python-constantly/python-constantly.hash new file mode 100644 index 00000000..7a246e88 --- /dev/null +++ b/package/python-constantly/python-constantly.hash @@ -0,0 +1,5 @@ +# md5 from https://pypi.python.org/pypi/constantly/json +md5 c090579309b2b34be04385b54b0a5a85 constantly-23.10.4.tar.gz +# Locally computed +sha256 aa92b70a33e2ac0bb33cd745eb61776594dc48764b06c35e0efd050b7f1c7cbd constantly-23.10.4.tar.gz +sha256 020870fcaf4bf9c50b233e331817094fe109b91c0880570fd476f527cfbfc085 LICENSE diff --git a/package/python-constantly/python-constantly.mk b/package/python-constantly/python-constantly.mk new file mode 100644 index 00000000..466c9bf4 --- /dev/null +++ b/package/python-constantly/python-constantly.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-constantly +# +################################################################################ + +PYTHON_CONSTANTLY_VERSION = 23.10.4 +PYTHON_CONSTANTLY_SOURCE = constantly-$(PYTHON_CONSTANTLY_VERSION).tar.gz +PYTHON_CONSTANTLY_SITE = https://files.pythonhosted.org/packages/4d/6f/cb2a94494ff74aa9528a36c5b1422756330a75a8367bf20bd63171fc324d +PYTHON_CONSTANTLY_SETUP_TYPE = setuptools +PYTHON_CONSTANTLY_LICENSE = MIT +PYTHON_CONSTANTLY_LICENSE_FILES = LICENSE +PYTHON_CONSTANTLY_DEPENDENCIES = host-python-versioneer + +$(eval $(python-package)) diff --git a/package/python-construct/Config.in b/package/python-construct/Config.in new file mode 100644 index 00000000..f70c8dc6 --- /dev/null +++ b/package/python-construct/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_CONSTRUCT + bool "python-construct" + help + A powerful declarative symmetric parser/builder for binary + data. + + https://construct.readthedocs.io/ diff --git a/package/python-construct/python-construct.hash b/package/python-construct/python-construct.hash new file mode 100644 index 00000000..395de7a1 --- /dev/null +++ b/package/python-construct/python-construct.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/construct/json +md5 e880b97796c16ae362600b7e32339a7e construct-2.10.70.tar.gz +sha256 4d2472f9684731e58cc9c56c463be63baa1447d674e0d66aeb5627b22f512c29 construct-2.10.70.tar.gz +# Locally computed sha256 checksums +sha256 1552d70acfd0d3fe464ce13d30113ddc6fe4bac21e52212acc98509e3cc1a8f4 LICENSE diff --git a/package/python-construct/python-construct.mk b/package/python-construct/python-construct.mk new file mode 100644 index 00000000..46cae959 --- /dev/null +++ b/package/python-construct/python-construct.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-construct +# +################################################################################ + +PYTHON_CONSTRUCT_VERSION = 2.10.70 +PYTHON_CONSTRUCT_SOURCE = construct-$(PYTHON_CONSTRUCT_VERSION).tar.gz +PYTHON_CONSTRUCT_SITE = https://files.pythonhosted.org/packages/02/77/8c84b98eca70d245a2a956452f21d57930d22ab88cbeed9290ca630cf03f +PYTHON_CONSTRUCT_SETUP_TYPE = setuptools +PYTHON_CONSTRUCT_LICENSE = MIT +PYTHON_CONSTRUCT_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-contourpy/Config.in b/package/python-contourpy/Config.in new file mode 100644 index 00000000..313d270d --- /dev/null +++ b/package/python-contourpy/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_CONTOURPY + bool "python-contourpy" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_PYTHON_PYBIND + help + Python library for calculating contours of 2D quadrilateral + grids. + + https://github.com/contourpy/contourpy + +comment "python-contourpy needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/python-contourpy/python-contourpy.hash b/package/python-contourpy/python-contourpy.hash new file mode 100644 index 00000000..8f23d107 --- /dev/null +++ b/package/python-contourpy/python-contourpy.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/contourpy/json +md5 cae5b781ade023c01bc1a8a53312f2ac contourpy-1.1.0.tar.gz +sha256 e53046c3863828d21d531cc3b53786e6580eb1ba02477e8681009b6aa0870b21 contourpy-1.1.0.tar.gz +# Locally computed sha256 checksums +sha256 c2522156ba7d4dfbbec266dfea98bf76a69bc41edb18cad323177fad6b19b35f LICENSE diff --git a/package/python-contourpy/python-contourpy.mk b/package/python-contourpy/python-contourpy.mk new file mode 100644 index 00000000..f305793c --- /dev/null +++ b/package/python-contourpy/python-contourpy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-contourpy +# +################################################################################ + +PYTHON_CONTOURPY_VERSION = 1.1.0 +PYTHON_CONTOURPY_SOURCE = contourpy-$(PYTHON_CONTOURPY_VERSION).tar.gz +PYTHON_CONTOURPY_SITE = https://files.pythonhosted.org/packages/a7/3b/632c003e1dfbc82d32c0466762f2d2cf139d26032626dc65944e38d0e5b9 +PYTHON_CONTOURPY_LICENSE = BSD-3-Clause +PYTHON_CONTOURPY_LICENSE_FILES = LICENSE +PYTHON_CONTOURPY_DEPENDENCIES = python-pybind host-python-meson-python + +$(eval $(meson-package)) diff --git a/package/python-couchdb/Config.in b/package/python-couchdb/Config.in new file mode 100644 index 00000000..5bff7575 --- /dev/null +++ b/package/python-couchdb/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_COUCHDB + bool "python-couchdb" + select BR2_PACKAGE_PYTHON3_SSL # runtime + help + Python client library for working with CouchDB. + + https://github.com/djc/couchdb-python/ diff --git a/package/python-couchdb/python-couchdb.hash b/package/python-couchdb/python-couchdb.hash new file mode 100644 index 00000000..c73ee1e0 --- /dev/null +++ b/package/python-couchdb/python-couchdb.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/couchdb/json +md5 de40696472202d728cfca4279629e4ff CouchDB-1.2.tar.gz +sha256 1386a1a43f25bed3667e3b805222054940d674fa1967fa48e9d2012a18630ab7 CouchDB-1.2.tar.gz +# Locally computed sha256 checksums +sha256 c538da1ae16b6d75f6fa65852bb158dbf9e556b01681be5b692692906d244241 COPYING diff --git a/package/python-couchdb/python-couchdb.mk b/package/python-couchdb/python-couchdb.mk new file mode 100644 index 00000000..b88c6570 --- /dev/null +++ b/package/python-couchdb/python-couchdb.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-couchdb +# +################################################################################ + +PYTHON_COUCHDB_VERSION = 1.2 +PYTHON_COUCHDB_SOURCE = CouchDB-$(PYTHON_COUCHDB_VERSION).tar.gz +PYTHON_COUCHDB_SITE = https://files.pythonhosted.org/packages/7c/c8/f94a107eca0c178e5d74c705dad1a5205c0f580840bd1b155cd8a258cb7c +PYTHON_COUCHDB_SETUP_TYPE = setuptools +PYTHON_COUCHDB_LICENSE = BSD-3-Clause +PYTHON_COUCHDB_LICENSE_FILES = COPYING + +$(eval $(python-package)) diff --git a/package/python-cppy/python-cppy.hash b/package/python-cppy/python-cppy.hash new file mode 100644 index 00000000..45b78eab --- /dev/null +++ b/package/python-cppy/python-cppy.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/cppy/json +md5 7c1f825c43dd66454440932a35b9969c cppy-1.2.1.tar.gz +sha256 83b43bf17b1085ac15c5debdb42154f138b928234b21447358981f69d0d6fe1b cppy-1.2.1.tar.gz +# Locally computed sha256 checksums +sha256 db7a008bff1e63ccec397cfa033109740c4dc6cb12070a70d0cfe69aba27c4df LICENSE diff --git a/package/python-cppy/python-cppy.mk b/package/python-cppy/python-cppy.mk new file mode 100644 index 00000000..5bfd5a0f --- /dev/null +++ b/package/python-cppy/python-cppy.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-cppy +# +################################################################################ + +PYTHON_CPPY_VERSION = 1.2.1 +PYTHON_CPPY_SOURCE = cppy-$(PYTHON_CPPY_VERSION).tar.gz +PYTHON_CPPY_SITE = https://files.pythonhosted.org/packages/c5/7e/6cc5acd93752ee52d2f0423046072a2ce3ae16dfcd44373b9fe2a0222204 +PYTHON_CPPY_LICENSE = BSD-3-Clause +PYTHON_CPPY_LICENSE_FILES = LICENSE +PYTHON_CPPY_SETUP_TYPE = setuptools +HOST_PYTHON_CPPY_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(host-python-package)) diff --git a/package/python-crayons/Config.in b/package/python-crayons/Config.in new file mode 100644 index 00000000..865a142b --- /dev/null +++ b/package/python-crayons/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_CRAYONS + bool "python-crayons" + help + This module is really simple, it gives you + colored strings for terminal usage. + + https://pypi.org/project/crayons diff --git a/package/python-crayons/python-crayons.hash b/package/python-crayons/python-crayons.hash new file mode 100644 index 00000000..e3d66321 --- /dev/null +++ b/package/python-crayons/python-crayons.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/crayons/json +md5 88a79c854ce54bcbb8376d18a448d627 crayons-0.4.0.tar.gz +sha256 bd33b7547800f2cfbd26b38431f9e64b487a7de74a947b0fafc89b45a601813f crayons-0.4.0.tar.gz +# Locally computed sha256 checksums +sha256 7deeb137f78337fd1e2e3966a7896821c6ebff244200d009d3f4157246b5a457 LICENSE diff --git a/package/python-crayons/python-crayons.mk b/package/python-crayons/python-crayons.mk new file mode 100644 index 00000000..33562d09 --- /dev/null +++ b/package/python-crayons/python-crayons.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-crayons +# +################################################################################ + +PYTHON_CRAYONS_VERSION = 0.4.0 +PYTHON_CRAYONS_SOURCE = crayons-$(PYTHON_CRAYONS_VERSION).tar.gz +PYTHON_CRAYONS_SITE = https://files.pythonhosted.org/packages/b8/6b/12a1dea724c82f1c19f410365d3e25356625b48e8009a7c3c9ec4c42488d +PYTHON_CRAYONS_LICENSE = MIT +PYTHON_CRAYONS_LICENSE_FILES = LICENSE +PYTHON_CRAYONS_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-crc16/Config.in b/package/python-crc16/Config.in new file mode 100644 index 00000000..06ad0077 --- /dev/null +++ b/package/python-crc16/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_CRC16 + bool "python-crc16" + help + This library calculates only CRC16 (16-bit codes) and the + only supported variant at the moment is CRC-CCITT (XModem). + CRC is a way of detecting accidental changes in data storage + or transmission. There are many variants of CRC and CRC16, + in particular. + + https://code.google.com/archive/p/pycrc16/ diff --git a/package/python-crc16/python-crc16.hash b/package/python-crc16/python-crc16.hash new file mode 100644 index 00000000..4576a907 --- /dev/null +++ b/package/python-crc16/python-crc16.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 10aeda70fbe8b284874b3b1b8f74b9c1f6d5e8dee20ac8f9d5bc49f45f12a42a python-crc16-0.1.1.tar.gz +sha256 ea7d049c7705dc13afc202dd18e1827f3484f8212fd3fa7b82fc4a0c363432c9 COPYING.txt diff --git a/package/python-crc16/python-crc16.mk b/package/python-crc16/python-crc16.mk new file mode 100644 index 00000000..86e6f2ec --- /dev/null +++ b/package/python-crc16/python-crc16.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-crc16 +# +################################################################################ + +PYTHON_CRC16_VERSION = 0.1.1 +PYTHON_CRC16_SITE = $(call github,gennady,pycrc16,v$(PYTHON_CRC16_VERSION)) +PYTHON_CRC16_LICENSE = LGPL-3.0+ +PYTHON_CRC16_LICENSE_FILES = COPYING.txt +PYTHON_CRC16_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-crcmod/Config.in b/package/python-crcmod/Config.in new file mode 100644 index 00000000..289a3aee --- /dev/null +++ b/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/package/python-crcmod/python-crcmod.hash b/package/python-crcmod/python-crcmod.hash new file mode 100644 index 00000000..43ef7dd8 --- /dev/null +++ b/package/python-crcmod/python-crcmod.hash @@ -0,0 +1,5 @@ +# md5 from https://pypi.python.org/pypi/crcmod/json +md5 2d5b92117d958dcead94f9e17f54cd32 crcmod-1.7.tar.gz +# Locally computed +sha256 dc7051a0db5f2bd48665a990d3ec1cc305a466a77358ca4492826f41f283601e crcmod-1.7.tar.gz +sha256 89480768826f408daea1f3caff0509c2cc9606e10f6bb0ccfd12a3d604842c35 LICENSE diff --git a/package/python-crcmod/python-crcmod.mk b/package/python-crcmod/python-crcmod.mk new file mode 100644 index 00000000..c97f8808 --- /dev/null +++ b/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 = setuptools +PYTHON_CRCMOD_LICENSE = MIT +PYTHON_CRCMOD_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-crontab/Config.in b/package/python-crontab/Config.in new file mode 100644 index 00000000..102dbbdb --- /dev/null +++ b/package/python-crontab/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_CRONTAB + bool "python-crontab" + select BR2_PACKAGE_PYTHON_DATEUTIL # runtime + help + Crontab module for reading and writing crontab files and + accessing the system cron automatically and simply using + a direct API. + + https://gitlab.com/doctormo/python-crontab/ diff --git a/package/python-crontab/python-crontab.hash b/package/python-crontab/python-crontab.hash new file mode 100644 index 00000000..10ba469d --- /dev/null +++ b/package/python-crontab/python-crontab.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/python-crontab/json +md5 1675bdeeb821441b8b4c35e0a7ba861c python-crontab-3.0.0.tar.gz +sha256 79fb7465039ddfd4fb93d072d6ee0d45c1ac8bf1597f0686ea14fd4361dba379 python-crontab-3.0.0.tar.gz +# Locally computed sha256 checksums +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 COPYING diff --git a/package/python-crontab/python-crontab.mk b/package/python-crontab/python-crontab.mk new file mode 100644 index 00000000..21a9edef --- /dev/null +++ b/package/python-crontab/python-crontab.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-crontab +# +################################################################################ + +PYTHON_CRONTAB_VERSION = 3.0.0 +PYTHON_CRONTAB_SITE = https://files.pythonhosted.org/packages/fb/6f/14adf2570e83c90f3f5af1af5225a70f914ba9e7ab9d08e675c5f6887102 +PYTHON_CRONTAB_SETUP_TYPE = setuptools +PYTHON_CRONTAB_LICENSE = LGPL-3.0+ +PYTHON_CRONTAB_LICENSE_FILES = COPYING + +$(eval $(python-package)) diff --git a/package/python-cryptography/Config.in b/package/python-cryptography/Config.in new file mode 100644 index 00000000..213aa24f --- /dev/null +++ b/package/python-cryptography/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_CRYPTOGRAPHY + bool "python-cryptography" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_PYTHON_CFFI # runtime + help + cryptography is a package designed to expose cryptographic + primitives and recipes to Python developers. + + https://cryptography.io diff --git a/package/python-cryptography/python-cryptography.hash b/package/python-cryptography/python-cryptography.hash new file mode 100644 index 00000000..5fbf69a2 --- /dev/null +++ b/package/python-cryptography/python-cryptography.hash @@ -0,0 +1,6 @@ +# Locally calculated after vendoring +sha256 b55c6c011ba4bb803de0b557f40f1765bab9f63240e93516daaf75c3c68e6618 python-cryptography-39.0.2-cargo2.tar.gz +# Locally computed sha256 checksums +sha256 43dad2cc752ab721cd9a9f36ece70fb53ab7713551f2d3d8694d8e8c5a06d6e2 LICENSE +sha256 aac73b3148f6d1d7111dbca32099f68d26c644c6813ae1e4f05f6579aa2663fe LICENSE.APACHE +sha256 602c4c7482de6479dd2e9793cda275e5e63d773dacd1eca689232ab7008fb4fb LICENSE.BSD diff --git a/package/python-cryptography/python-cryptography.mk b/package/python-cryptography/python-cryptography.mk new file mode 100644 index 00000000..1cbccd0d --- /dev/null +++ b/package/python-cryptography/python-cryptography.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# python-cryptography +# +################################################################################ + +PYTHON_CRYPTOGRAPHY_VERSION = 39.0.2 +PYTHON_CRYPTOGRAPHY_SOURCE_PYPI = cryptography-$(PYTHON_CRYPTOGRAPHY_VERSION).tar.gz +PYTHON_CRYPTOGRAPHY_SITE_PYPI = https://files.pythonhosted.org/packages/fa/f3/f4b8c175ea9a1de650b0085858059050b7953a93d66c97ed89b93b232996 +PYTHON_CRYPTOGRAPHY_SITE = $(PYTHON_CRYPTOGRAPHY_SITE_PYPI)/$(PYTHON_CRYPTOGRAPHY_SOURCE_PYPI)?buildroot-path=filename +PYTHON_CRYPTOGRAPHY_SETUP_TYPE = setuptools-rust +PYTHON_CRYPTOGRAPHY_LICENSE = Apache-2.0 or BSD-3-Clause +PYTHON_CRYPTOGRAPHY_LICENSE_FILES = LICENSE LICENSE.APACHE LICENSE.BSD +PYTHON_CRYPTOGRAPHY_CPE_ID_VENDOR = cryptography_project +PYTHON_CRYPTOGRAPHY_CPE_ID_PRODUCT = cryptography +PYTHON_CRYPTOGRAPHY_CARGO_MANIFEST_PATH = src/rust/Cargo.toml +PYTHON_CRYPTOGRAPHY_DEPENDENCIES = host-python-cffi openssl +HOST_PYTHON_CRYPTOGRAPHY_DEPENDENCIES = host-python-cffi host-openssl + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-cssselect/Config.in b/package/python-cssselect/Config.in new file mode 100644 index 00000000..18d63720 --- /dev/null +++ b/package/python-cssselect/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_CSSSELECT + bool "python-cssselect" + help + cssselect parses CSS3 Selectors and translates them to XPath + 1.0 + + http://packages.python.org/cssselect/ diff --git a/package/python-cssselect/python-cssselect.hash b/package/python-cssselect/python-cssselect.hash new file mode 100644 index 00000000..df252326 --- /dev/null +++ b/package/python-cssselect/python-cssselect.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/cssselect/json +md5 27fbafacce5447cb867acb240d35002a cssselect-1.2.0.tar.gz +sha256 666b19839cfaddb9ce9d36bfe4c969132c647b92fc9088c4e23f786b30f1b3dc cssselect-1.2.0.tar.gz +# Locally computed sha256 checksums +sha256 5c8da9f744e0afba81a48c9b5dbe73048f798b3287d6f1af8a05ee08ebb10892 LICENSE diff --git a/package/python-cssselect/python-cssselect.mk b/package/python-cssselect/python-cssselect.mk new file mode 100644 index 00000000..96f6f987 --- /dev/null +++ b/package/python-cssselect/python-cssselect.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-cssselect +# +################################################################################ + +PYTHON_CSSSELECT_VERSION = 1.2.0 +PYTHON_CSSSELECT_SOURCE = cssselect-$(PYTHON_CSSSELECT_VERSION).tar.gz +PYTHON_CSSSELECT_SITE = https://files.pythonhosted.org/packages/d1/91/d51202cc41fbfca7fa332f43a5adac4b253962588c7cc5a54824b019081c +PYTHON_CSSSELECT_SETUP_TYPE = setuptools +PYTHON_CSSSELECT_LICENSE = BSD-3-Clause +PYTHON_CSSSELECT_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-cssselect2/Config.in b/package/python-cssselect2/Config.in new file mode 100644 index 00000000..030d6df0 --- /dev/null +++ b/package/python-cssselect2/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_CSSSELECT2 + bool "python-cssselect2" + select BR2_PACKAGE_PYTHON_TINYCSS2 # runtime + select BR2_PACKAGE_PYTHON_WEBENCODINGS # runtime + help + CSS selectors for Python ElementTree. + + https://doc.courtbouillon.org/cssselect2/ diff --git a/package/python-cssselect2/python-cssselect2.hash b/package/python-cssselect2/python-cssselect2.hash new file mode 100644 index 00000000..13bdca9a --- /dev/null +++ b/package/python-cssselect2/python-cssselect2.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/cssselect2/json +md5 594ebe75a12dfd6cc288858faeb77415 cssselect2-0.7.0.tar.gz +sha256 1ccd984dab89fc68955043aca4e1b03e0cf29cad9880f6e28e3ba7a74b14aa5a cssselect2-0.7.0.tar.gz +# Locally computed sha256 checksums +sha256 6fd97229a1d1b0f6a8b41e109f413426dbc0874b1e03746d66cc33282601c2c2 LICENSE diff --git a/package/python-cssselect2/python-cssselect2.mk b/package/python-cssselect2/python-cssselect2.mk new file mode 100644 index 00000000..67907f9b --- /dev/null +++ b/package/python-cssselect2/python-cssselect2.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-cssselect2 +# +################################################################################ + +PYTHON_CSSSELECT2_VERSION = 0.7.0 +PYTHON_CSSSELECT2_SOURCE = cssselect2-$(PYTHON_CSSSELECT2_VERSION).tar.gz +PYTHON_CSSSELECT2_SITE = https://files.pythonhosted.org/packages/e7/fc/326cb6f988905998f09bb54a3f5d98d4462ba119363c0dfad29750d48c09 +PYTHON_CSSSELECT2_SETUP_TYPE = flit +PYTHON_CSSSELECT2_LICENSE = BSD-3-Clause +PYTHON_CSSSELECT2_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-cssutils/Config.in b/package/python-cssutils/Config.in new file mode 100644 index 00000000..1c23a587 --- /dev/null +++ b/package/python-cssutils/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_CSSUTILS + bool "python-cssutils" + select BR2_PACKAGE_PYTHON3_PYEXPAT # runtime + help + A CSS Cascading Style Sheets library for Python. + + http://cthedot.de/cssutils/ diff --git a/package/python-cssutils/python-cssutils.hash b/package/python-cssutils/python-cssutils.hash new file mode 100644 index 00000000..d93135a9 --- /dev/null +++ b/package/python-cssutils/python-cssutils.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/cssutils/json +md5 11707e5da7c40bd98e5b4998489f10e0 cssutils-2.9.0.tar.gz +sha256 89477b3d17d790e97b9fb4def708767061055795aae6f7c82ae32e967c9be4cd cssutils-2.9.0.tar.gz +# Locally computed sha256 checksums +sha256 03c570a068086ee577dcd795519ea93462b2ed2fcb6dcc4dfce56a71a2fd6e5a COPYING.LESSER diff --git a/package/python-cssutils/python-cssutils.mk b/package/python-cssutils/python-cssutils.mk new file mode 100644 index 00000000..be5be30e --- /dev/null +++ b/package/python-cssutils/python-cssutils.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-cssutils +# +################################################################################ + +PYTHON_CSSUTILS_VERSION = 2.9.0 +PYTHON_CSSUTILS_SOURCE = cssutils-$(PYTHON_CSSUTILS_VERSION).tar.gz +PYTHON_CSSUTILS_SITE = https://files.pythonhosted.org/packages/b4/65/a054545c81eb87af898d664043578b8444ea3ded656db3da8f9d9fa21334 +PYTHON_CSSUTILS_LICENSE = LGPL-3.0+ +PYTHON_CSSUTILS_LICENSE_FILES = COPYING.LESSER +PYTHON_CSSUTILS_SETUP_TYPE = setuptools +PYTHON_CSSUTILS_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-cycler/Config.in b/package/python-cycler/Config.in new file mode 100644 index 00000000..813bc69d --- /dev/null +++ b/package/python-cycler/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_CYCLER + bool "python-cycler" + help + Creates a Cycler objects much like cycler, but + includes input validation. + + https://matplotlib.org/cycler/ diff --git a/package/python-cycler/python-cycler.hash b/package/python-cycler/python-cycler.hash new file mode 100644 index 00000000..4c33c293 --- /dev/null +++ b/package/python-cycler/python-cycler.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/cycler/json +md5 16905ad17e5724a6919f64d46c4e7143 cycler-0.12.1.tar.gz +sha256 88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c cycler-0.12.1.tar.gz +# Locally computed sha256 checksums +sha256 f1218143d766da3fea66f13396b7f15df46a83303f29bf96ba6e98eb4d42f408 LICENSE diff --git a/package/python-cycler/python-cycler.mk b/package/python-cycler/python-cycler.mk new file mode 100644 index 00000000..df7abdf9 --- /dev/null +++ b/package/python-cycler/python-cycler.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-cycler +# +################################################################################ + +PYTHON_CYCLER_VERSION = 0.12.1 +PYTHON_CYCLER_SOURCE = cycler-$(PYTHON_CYCLER_VERSION).tar.gz +PYTHON_CYCLER_SITE = https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8 +PYTHON_CYCLER_LICENSE = BSD-3-Clause +PYTHON_CYCLER_LICENSE_FILES = LICENSE +PYTHON_CYCLER_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-cython/Config.in.host b/package/python-cython/Config.in.host new file mode 100644 index 00000000..69d32d5a --- /dev/null +++ b/package/python-cython/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_PYTHON_CYTHON + bool "host python-cython" + help + The Cython compiler for writing C extensions for the Python + language. + + http://cython.org/ diff --git a/package/python-cython/python-cython.hash b/package/python-cython/python-cython.hash new file mode 100644 index 00000000..42c06301 --- /dev/null +++ b/package/python-cython/python-cython.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/cython/json +md5 d9a1e8416f2278857a189347858ed9d0 Cython-0.29.37.tar.gz +sha256 f813d4a6dd94adee5d4ff266191d1d95bf6d4164a4facc535422c021b2504cfb Cython-0.29.37.tar.gz +# Locally computed sha256 checksums +sha256 a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9 LICENSE.txt +sha256 e1eb1c49a8508e8173dac30157e4a6439a44ad8846194746c424fbc3fc2b95d7 COPYING.txt diff --git a/package/python-cython/python-cython.mk b/package/python-cython/python-cython.mk new file mode 100644 index 00000000..024c8c1e --- /dev/null +++ b/package/python-cython/python-cython.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-cython +# +################################################################################ + +PYTHON_CYTHON_VERSION = 0.29.37 +PYTHON_CYTHON_SOURCE = Cython-$(PYTHON_CYTHON_VERSION).tar.gz +PYTHON_CYTHON_SITE = https://files.pythonhosted.org/packages/2a/97/8cc3fe7c6de4796921236a64d00ca8a95565772e57f0d3caae68d880b592 +PYTHON_CYTHON_SETUP_TYPE = setuptools +PYTHON_CYTHON_LICENSE = Apache-2.0 +PYTHON_CYTHON_LICENSE_FILES = COPYING.txt LICENSE.txt + +$(eval $(host-python-package)) diff --git a/package/python-daemon/Config.in b/package/python-daemon/Config.in new file mode 100644 index 00000000..9944bb9e --- /dev/null +++ b/package/python-daemon/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_DAEMON + bool "python-daemon" + select BR2_PACKAGE_PYTHON_DOCUTILS # runtime + select BR2_PACKAGE_PYTHON_LOCKFILE # runtime + help + Library to implement a well-behaved Unix daemon process. + + https://pypi.python.org/pypi/python-daemon/ diff --git a/package/python-daemon/python-daemon.hash b/package/python-daemon/python-daemon.hash new file mode 100644 index 00000000..695b8fb9 --- /dev/null +++ b/package/python-daemon/python-daemon.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/python-daemon/json +md5 4c369b8c6d3de956d8f9dfb2c872c284 python-daemon-3.0.1.tar.gz +sha256 6c57452372f7eaff40934a1c03ad1826bf5e793558e87fef49131e6464b4dae5 python-daemon-3.0.1.tar.gz +# Locally computed sha256 +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.ASF-2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL-3 diff --git a/package/python-daemon/python-daemon.mk b/package/python-daemon/python-daemon.mk new file mode 100644 index 00000000..f4d4205a --- /dev/null +++ b/package/python-daemon/python-daemon.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-daemon +# +################################################################################ + +PYTHON_DAEMON_VERSION = 3.0.1 +PYTHON_DAEMON_SITE = https://files.pythonhosted.org/packages/84/50/97b81327fccbb70eb99f3c95bd05a0c9d7f13fb3f4cfd975885110d1205a +PYTHON_DAEMON_LICENSE = Apache-2.0 (library), GPL-3.0+ (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/package/python-daemonize/Config.in b/package/python-daemonize/Config.in new file mode 100644 index 00000000..d34e35c4 --- /dev/null +++ b/package/python-daemonize/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_DAEMONIZE + bool "python-daemonize" + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + help + Library to enable your code run as a daemon process on + Unix-like systems. + + https://pypi.python.org/pypi/daemonize diff --git a/package/python-daemonize/python-daemonize.hash b/package/python-daemonize/python-daemonize.hash new file mode 100644 index 00000000..43b0f43d --- /dev/null +++ b/package/python-daemonize/python-daemonize.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/daemonize/json +md5 3d64e7a0219ad22e3fca62460f893b6a daemonize-2.5.0.tar.gz +sha256 dd026e4ff8d22cb016ed2130bc738b7d4b1da597ef93c074d2adb9e4dea08bc3 daemonize-2.5.0.tar.gz +# Locally computed sha256 checksums +sha256 248d0d3147d20a09bed8f03da8ed72f47009073606dcc1bab658f942d34b29f8 LICENSE diff --git a/package/python-daemonize/python-daemonize.mk b/package/python-daemonize/python-daemonize.mk new file mode 100644 index 00000000..de146bf8 --- /dev/null +++ b/package/python-daemonize/python-daemonize.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-daemonize +# +################################################################################ + +PYTHON_DAEMONIZE_VERSION = 2.5.0 +PYTHON_DAEMONIZE_SOURCE = daemonize-$(PYTHON_DAEMONIZE_VERSION).tar.gz +PYTHON_DAEMONIZE_SITE = https://files.pythonhosted.org/packages/8c/20/96f7dbc23812cfe4cf479c87af3e4305d0d115fd1fffec32ddeee7b9c82b +PYTHON_DAEMONIZE_SETUP_TYPE = setuptools +PYTHON_DAEMONIZE_LICENSE = MIT +PYTHON_DAEMONIZE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-daphne/0001-remove-pytest-runner-requirement.patch b/package/python-daphne/0001-remove-pytest-runner-requirement.patch new file mode 100644 index 00000000..70cdb4f1 --- /dev/null +++ b/package/python-daphne/0001-remove-pytest-runner-requirement.patch @@ -0,0 +1,27 @@ +From f9d881cc55c89f51240f93308713216cfec793eb Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Sat, 3 Aug 2019 14:23:19 -0400 +Subject: [PATCH] remove pytest-runner requirement + +Setup does not actually require pytest-runner. As such, remove it. + +Signed-off-by: Adam Duskett +--- + setup.py | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/setup.py b/setup.py +index 64e94f1..4e3abb0 100755 +--- a/setup.py ++++ b/setup.py +@@ -23,7 +23,6 @@ setup( + include_package_data=True, + install_requires=["twisted[tls]>=22.4", "autobahn>=22.4.2", "asgiref>=3.5.2,<4"], + python_requires=">=3.7", +- setup_requires=["pytest-runner"], + extras_require={"tests": ["hypothesis", "pytest", "pytest-asyncio", "django"]}, + entry_points={ + "console_scripts": ["daphne = daphne.cli:CommandLineInterface.entrypoint"] +-- +2.21.0 + diff --git a/package/python-daphne/Config.in b/package/python-daphne/Config.in new file mode 100644 index 00000000..51c66532 --- /dev/null +++ b/package/python-daphne/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_PYTHON_DAPHNE + bool "python-daphne" + # python-autobahn -> python-cryptography + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_PYTHON_ASGIREF # runtime + select BR2_PACKAGE_PYTHON_AUTOBAHN # runtime + select BR2_PACKAGE_PYTHON_TWISTED # runtime + select BR2_PACKAGE_PYTHON_TWISTED_TLS # runtime + help + Daphne is a HTTP, HTTP2 and WebSocket protocol server for + ASGI and ASGI-HTTP, developed to power Django Channels. + It supports automatic negotiation of protocols; there's no + need for URL prefixing to determine WebSocket endpoints + versus HTTP endpoints. + + https://github.com/django/daphne diff --git a/package/python-daphne/python-daphne.hash b/package/python-daphne/python-daphne.hash new file mode 100644 index 00000000..90d053bf --- /dev/null +++ b/package/python-daphne/python-daphne.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/daphne/json +md5 f0dcc0618459ad7d25508704f9505b56 daphne-4.0.0.tar.gz +sha256 cce9afc8f49a4f15d4270b8cfb0e0fe811b770a5cc795474e97e4da287497666 daphne-4.0.0.tar.gz +# Locally computed sha256 checksums +sha256 b846415d1b514e9c1dff14a22deb906d794bc546ca6129f950a18cd091e2a669 LICENSE diff --git a/package/python-daphne/python-daphne.mk b/package/python-daphne/python-daphne.mk new file mode 100644 index 00000000..c0808827 --- /dev/null +++ b/package/python-daphne/python-daphne.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-daphne +# +################################################################################ + +PYTHON_DAPHNE_VERSION = 4.0.0 +PYTHON_DAPHNE_SOURCE = daphne-$(PYTHON_DAPHNE_VERSION).tar.gz +PYTHON_DAPHNE_SITE = https://files.pythonhosted.org/packages/d7/77/57b19d5caabf8537879aa4cf3a017b99d0b727f2521ffca7fd9140573509 +PYTHON_DAPHNE_SETUP_TYPE = setuptools +# https://github.com/django/daphne/blob/master/LICENSE +PYTHON_DAPHNE_LICENSE = BSD-3-Clause +PYTHON_DAPHNE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-dataproperty/Config.in b/package/python-dataproperty/Config.in new file mode 100644 index 00000000..9dab9e4f --- /dev/null +++ b/package/python-dataproperty/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_DATAPROPERTY + bool "python-dataproperty" + select BR2_PACKAGE_PYTHON_MBSTRDECODER # runtime + select BR2_PACKAGE_PYTHON_TYPEPY # runtime + help + Python library for extract property from data. + + https://github.com/thombashi/DataProperty diff --git a/package/python-dataproperty/python-dataproperty.hash b/package/python-dataproperty/python-dataproperty.hash new file mode 100644 index 00000000..ee5644a7 --- /dev/null +++ b/package/python-dataproperty/python-dataproperty.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/dataproperty/json +md5 aca50cd5f543b7831d8a48ab1c02a152 DataProperty-1.0.1.tar.gz +sha256 723e5729fa6e885e127a771a983ee1e0e34bb141aca4ffe1f0bfa7cde34650a4 DataProperty-1.0.1.tar.gz +# Locally computed sha256 checksums +sha256 a93d75bcb0774e2990106380cadad6dcb2de193c55d435ffc56ba345a08b1dc2 LICENSE diff --git a/package/python-dataproperty/python-dataproperty.mk b/package/python-dataproperty/python-dataproperty.mk new file mode 100644 index 00000000..6cac4f27 --- /dev/null +++ b/package/python-dataproperty/python-dataproperty.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-dataproperty +# +################################################################################ + +PYTHON_DATAPROPERTY_VERSION = 1.0.1 +PYTHON_DATAPROPERTY_SOURCE = DataProperty-$(PYTHON_DATAPROPERTY_VERSION).tar.gz +PYTHON_DATAPROPERTY_SITE = https://files.pythonhosted.org/packages/48/e2/31ffb67d2a9ab4ff70b106e08ad01a3e7696f8d409457042d1eb18244f82 +PYTHON_DATAPROPERTY_SETUP_TYPE = setuptools +PYTHON_DATAPROPERTY_LICENSE = MIT +PYTHON_DATAPROPERTY_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-dateutil/Config.in b/package/python-dateutil/Config.in new file mode 100644 index 00000000..1a36a150 --- /dev/null +++ b/package/python-dateutil/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_DATEUTIL + bool "python-dateutil" + select BR2_PACKAGE_PYTHON_SIX + help + Extensions to the standard Python datetime module. + + https://dateutil.readthedocs.io diff --git a/package/python-dateutil/python-dateutil.hash b/package/python-dateutil/python-dateutil.hash new file mode 100644 index 00000000..c1275823 --- /dev/null +++ b/package/python-dateutil/python-dateutil.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/python-dateutil/json +md5 f4888298c0f2d5239c85c6457455a975 python-dateutil-2.9.0.tar.gz +sha256 78e73e19c63f5b20ffa567001531680d939dc042bf7850431877645523c66709 python-dateutil-2.9.0.tar.gz +# Locally computed sha256 checksums +sha256 ba00f51a0d92823b5a1cde27d8b5b9d2321e67ed8da9bc163eff96d5e17e577e LICENSE diff --git a/package/python-dateutil/python-dateutil.mk b/package/python-dateutil/python-dateutil.mk new file mode 100644 index 00000000..a2f1620b --- /dev/null +++ b/package/python-dateutil/python-dateutil.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-dateutil +# +################################################################################ + +PYTHON_DATEUTIL_VERSION = 2.9.0 +PYTHON_DATEUTIL_SITE = https://files.pythonhosted.org/packages/d9/77/bd458a2e387e98f71de86dcc2ca2cab64489736004c80bc12b70da8b5488 +PYTHON_DATEUTIL_SETUP_TYPE = setuptools +PYTHON_DATEUTIL_LICENSE = BSD-3-Clause +PYTHON_DATEUTIL_LICENSE_FILES = LICENSE +PYTHON_DATEUTIL_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-dbus-fast/Config.in b/package/python-dbus-fast/Config.in new file mode 100644 index 00000000..b7168106 --- /dev/null +++ b/package/python-dbus-fast/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_DBUS_FAST + bool "python-dbus-fast" + select BR2_PACKAGE_HOST_PYTHON_CYTHON + select BR2_PACKAGE_PYTHON3_PYEXPAT # runtime + help + A faster version of dbus-next, a DBus library for Python with + asyncio support. + + https://github.com/bluetooth-devices/dbus-fast diff --git a/package/python-dbus-fast/python-dbus-fast.hash b/package/python-dbus-fast/python-dbus-fast.hash new file mode 100644 index 00000000..08d26754 --- /dev/null +++ b/package/python-dbus-fast/python-dbus-fast.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/dbus-fast/json +md5 791ce3b0c04099959161a18ae983bf25 dbus_fast-2.12.0.tar.gz +sha256 849478e11d251fa4ebb99ce5bfee332cb6383c63ef0bc97bae23cef4e0badf9c dbus_fast-2.12.0.tar.gz +# Locally computed sha256 checksums +sha256 c37e9c75110e01d1f0c5360dc7d7776a30ac5f70d2440db214423e4b7a77a6af LICENSE diff --git a/package/python-dbus-fast/python-dbus-fast.mk b/package/python-dbus-fast/python-dbus-fast.mk new file mode 100644 index 00000000..1456ce5e --- /dev/null +++ b/package/python-dbus-fast/python-dbus-fast.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# python-dbus-fast +# +################################################################################ + +PYTHON_DBUS_FAST_VERSION = 2.12.0 +PYTHON_DBUS_FAST_SOURCE = dbus_fast-$(PYTHON_DBUS_FAST_VERSION).tar.gz +PYTHON_DBUS_FAST_SITE = https://files.pythonhosted.org/packages/f5/8c/220fcbe4337b842d730d5752f207fc8efd3a02405c71c329e61218e947b8 +PYTHON_DBUS_FAST_SETUP_TYPE = pep517 +PYTHON_DBUS_FAST_LICENSE = MIT +PYTHON_DBUS_FAST_LICENSE_FILES = LICENSE +PYTHON_DBUS_FAST_ENV = REQUIRE_CYTHON=1 +PYTHON_DBUS_FAST_DEPENDENCIES = \ + host-python-cython \ + host-python-poetry-core \ + host-python-setuptools + +$(eval $(python-package)) diff --git a/package/python-dbus-next/Config.in b/package/python-dbus-next/Config.in new file mode 100644 index 00000000..6b00e707 --- /dev/null +++ b/package/python-dbus-next/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_DBUS_NEXT + bool "python-dbus-next" + select BR2_PACKAGE_PYTHON3_PYEXPAT # runtime + help + A zero-dependency DBus library for Python with asyncio + support. + + https://github.com/altdesktop/python-dbus-next diff --git a/package/python-dbus-next/python-dbus-next.hash b/package/python-dbus-next/python-dbus-next.hash new file mode 100644 index 00000000..57bfaaf5 --- /dev/null +++ b/package/python-dbus-next/python-dbus-next.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/dbus-next/json +md5 0e31605bd90f3460aebcd0bb7fe0dc20 dbus_next-0.2.3.tar.gz +sha256 f4eae26909332ada528c0a3549dda8d4f088f9b365153952a408e28023a626a5 dbus_next-0.2.3.tar.gz +# Locally computed sha256 checksums +sha256 c454ab6b8e0653a8eab828a8cbaaa368a1bbfba982178bb18b6177e311eae4cc LICENSE diff --git a/package/python-dbus-next/python-dbus-next.mk b/package/python-dbus-next/python-dbus-next.mk new file mode 100644 index 00000000..f35a32cb --- /dev/null +++ b/package/python-dbus-next/python-dbus-next.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-dbus-next +# +################################################################################ + +PYTHON_DBUS_NEXT_VERSION = 0.2.3 +PYTHON_DBUS_NEXT_SOURCE = dbus_next-$(PYTHON_DBUS_NEXT_VERSION).tar.gz +PYTHON_DBUS_NEXT_SITE = https://files.pythonhosted.org/packages/ce/45/6a40fbe886d60a8c26f480e7d12535502b5ba123814b3b9a0b002ebca198 +PYTHON_DBUS_NEXT_SETUP_TYPE = setuptools +PYTHON_DBUS_NEXT_LICENSE = MIT +PYTHON_DBUS_NEXT_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-decorator/Config.in b/package/python-decorator/Config.in new file mode 100644 index 00000000..e7ec00cd --- /dev/null +++ b/package/python-decorator/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_DECORATOR + bool "python-decorator" + help + Better living through Python with decorators + + https://github.com/micheles/decorator diff --git a/package/python-decorator/python-decorator.hash b/package/python-decorator/python-decorator.hash new file mode 100644 index 00000000..e12d34e7 --- /dev/null +++ b/package/python-decorator/python-decorator.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/decorator/json +md5 a6b34700dcac8a4bb04efd55e99626c1 decorator-5.1.1.tar.gz +sha256 637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 decorator-5.1.1.tar.gz +# Locally computed sha256 checksums +sha256 fd11660cabf0532082c45706862fafc294907ec7f8e217818240a4999806782e LICENSE.txt diff --git a/package/python-decorator/python-decorator.mk b/package/python-decorator/python-decorator.mk new file mode 100644 index 00000000..5dba8cc9 --- /dev/null +++ b/package/python-decorator/python-decorator.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-decorator +# +################################################################################ + +PYTHON_DECORATOR_VERSION = 5.1.1 +PYTHON_DECORATOR_SOURCE = decorator-$(PYTHON_DECORATOR_VERSION).tar.gz +PYTHON_DECORATOR_SITE = https://files.pythonhosted.org/packages/66/0c/8d907af351aa16b42caae42f9d6aa37b900c67308052d10fdce809f8d952 +PYTHON_DECORATOR_LICENSE = BSD-2-Clause +PYTHON_DECORATOR_LICENSE_FILES = LICENSE.txt +PYTHON_DECORATOR_CPE_ID_VENDOR = python +PYTHON_DECORATOR_CPE_ID_PRODUCT = decorator +PYTHON_DECORATOR_SETUP_TYPE = setuptools + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-decouple/Config.in b/package/python-decouple/Config.in new file mode 100644 index 00000000..528f43d0 --- /dev/null +++ b/package/python-decouple/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_DECOUPLE + bool "python-decouple" + help + Strict separation of settings from code. + + http://github.com/henriquebastos/python-decouple/ diff --git a/package/python-decouple/python-decouple.hash b/package/python-decouple/python-decouple.hash new file mode 100644 index 00000000..cf1290c9 --- /dev/null +++ b/package/python-decouple/python-decouple.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/python-decouple/json +md5 21b174a381d6bff5f4814018a4fd44cd python-decouple-3.8.tar.gz +sha256 ba6e2657d4f376ecc46f77a3a615e058d93ba5e465c01bbe57289bfb7cce680f python-decouple-3.8.tar.gz +# Locally computed sha256 checksums +sha256 4d6e3c2ef229ec3c1a486f52c9d76235e9eb7c94db8ec71a8bff0af60e4f0aa4 LICENSE diff --git a/package/python-decouple/python-decouple.mk b/package/python-decouple/python-decouple.mk new file mode 100644 index 00000000..c0d0cdb9 --- /dev/null +++ b/package/python-decouple/python-decouple.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-decouple +# +################################################################################ + +PYTHON_DECOUPLE_VERSION = 3.8 +PYTHON_DECOUPLE_SITE = https://files.pythonhosted.org/packages/e1/97/373dcd5844ec0ea5893e13c39a2c67e7537987ad8de3842fe078db4582fa +PYTHON_DECOUPLE_SETUP_TYPE = setuptools +PYTHON_DECOUPLE_LICENSE = MIT +PYTHON_DECOUPLE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-defusedxml/Config.in b/package/python-defusedxml/Config.in new file mode 100644 index 00000000..85285da5 --- /dev/null +++ b/package/python-defusedxml/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_DEFUSEDXML + bool "python-defusedxml" + help + XML bomb protection for Python stdlib modules + + https://pypi.org/project/defusedxml/ diff --git a/package/python-defusedxml/python-defusedxml.hash b/package/python-defusedxml/python-defusedxml.hash new file mode 100644 index 00000000..c32c6cdb --- /dev/null +++ b/package/python-defusedxml/python-defusedxml.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/defusedxml/json +md5 a50e7f21aa60a741efe6b1b658dfb3f8 defusedxml-0.7.1.tar.gz +sha256 1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69 defusedxml-0.7.1.tar.gz +# Locally computed sha256 checksums +sha256 b80ce9da8c42a1f91079627fbbe2bf27210ae108a0ffe5f077d5b08e076c24c8 LICENSE diff --git a/package/python-defusedxml/python-defusedxml.mk b/package/python-defusedxml/python-defusedxml.mk new file mode 100644 index 00000000..19ba2fda --- /dev/null +++ b/package/python-defusedxml/python-defusedxml.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-defusedxml +# +################################################################################ + +PYTHON_DEFUSEDXML_VERSION = 0.7.1 +PYTHON_DEFUSEDXML_SOURCE = defusedxml-$(PYTHON_DEFUSEDXML_VERSION).tar.gz +PYTHON_DEFUSEDXML_SITE = https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72 +PYTHON_DEFUSEDXML_SETUP_TYPE = setuptools +PYTHON_DEFUSEDXML_LICENSE = Python-2.0 +PYTHON_DEFUSEDXML_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-dialog3/Config.in b/package/python-dialog3/Config.in new file mode 100644 index 00000000..86812d27 --- /dev/null +++ b/package/python-dialog3/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_DIALOG3 + bool "python-dialog3" + depends on BR2_USE_MMU # dialog + select BR2_PACKAGE_DIALOG + help + A Python 3 only interface to the UNIX dialog utility and + mostly-compatible programs. + + http://pythondialog.sourceforge.net/ diff --git a/package/python-dialog3/python-dialog3.hash b/package/python-dialog3/python-dialog3.hash new file mode 100644 index 00000000..d66f3286 --- /dev/null +++ b/package/python-dialog3/python-dialog3.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pythondialog/json +md5 94a9236e427de783fa3ee8288834f7f1 pythondialog-3.5.3.tar.gz +sha256 b2a34a8af0a6625ccbdf45cd343b854fc6c1a85231dadc80b8805db836756323 pythondialog-3.5.3.tar.gz +# Locally computed sha256 checksums +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING diff --git a/package/python-dialog3/python-dialog3.mk b/package/python-dialog3/python-dialog3.mk new file mode 100644 index 00000000..e936de58 --- /dev/null +++ b/package/python-dialog3/python-dialog3.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-dialog3 +# +################################################################################ + +PYTHON_DIALOG3_VERSION = 3.5.3 +PYTHON_DIALOG3_SOURCE = pythondialog-$(PYTHON_DIALOG3_VERSION).tar.gz +PYTHON_DIALOG3_SITE = https://files.pythonhosted.org/packages/4e/40/5c84d79f7d536ca2c3722af521eff4faafe54a93797f08c72eb72e68fb68 +PYTHON_DIALOG3_LICENSE = LGPL-2.1+ +PYTHON_DIALOG3_LICENSE_FILES = COPYING +PYTHON_DIALOG3_SETUP_TYPE = setuptools +PYTHON_DIALOG3_DEPENDENCIES = dialog + +$(eval $(python-package)) diff --git a/package/python-dictdiffer/Config.in b/package/python-dictdiffer/Config.in new file mode 100644 index 00000000..636b4f7c --- /dev/null +++ b/package/python-dictdiffer/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_DICTDIFFER + bool "python-dictdiffer" + help + Dictdiffer is a library that helps you to diff and patch + dictionaries. + + https://github.com/inveniosoftware/dictdiffer diff --git a/package/python-dictdiffer/python-dictdiffer.hash b/package/python-dictdiffer/python-dictdiffer.hash new file mode 100644 index 00000000..49845953 --- /dev/null +++ b/package/python-dictdiffer/python-dictdiffer.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/dictdiffer/json +md5 524b353b969300d4dc6aa6720c953657 dictdiffer-0.9.0.tar.gz +sha256 17bacf5fbfe613ccf1b6d512bd766e6b21fb798822a133aa86098b8ac9997578 dictdiffer-0.9.0.tar.gz +# Locally computed sha256 checksums +sha256 1f9e05b3b9a6fad24cc67455578bcdfd3e89b09a25c45369a5254203bbe2bdd3 LICENSE diff --git a/package/python-dictdiffer/python-dictdiffer.mk b/package/python-dictdiffer/python-dictdiffer.mk new file mode 100644 index 00000000..569f923a --- /dev/null +++ b/package/python-dictdiffer/python-dictdiffer.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-dictdiffer +# +################################################################################ + +PYTHON_DICTDIFFER_VERSION = 0.9.0 +PYTHON_DICTDIFFER_SOURCE = dictdiffer-$(PYTHON_DICTDIFFER_VERSION).tar.gz +PYTHON_DICTDIFFER_SITE = https://files.pythonhosted.org/packages/61/7b/35cbccb7effc5d7e40f4c55e2b79399e1853041997fcda15c9ff160abba0 +PYTHON_DICTDIFFER_SETUP_TYPE = setuptools +PYTHON_DICTDIFFER_LICENSE = MIT +PYTHON_DICTDIFFER_LICENSE_FILES = LICENSE +PYTHON_DICTDIFFER_DEPENDENCIES = host-python-setuptools-scm +PYTHON_DICTDIFFER_BUILD_OPTS = --skip-dependency-check + +$(eval $(python-package)) diff --git a/package/python-dicttoxml/Config.in b/package/python-dicttoxml/Config.in new file mode 100644 index 00000000..145887ed --- /dev/null +++ b/package/python-dicttoxml/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_DICTTOXML + bool "python-dicttoxml" + select BR2_PACKAGE_PYTHON3_PYEXPAT + help + Converts a Python dictionary or other native data type into + a valid XML string. + + https://github.com/quandyfactory/dicttoxml diff --git a/package/python-dicttoxml/python-dicttoxml.hash b/package/python-dicttoxml/python-dicttoxml.hash new file mode 100644 index 00000000..1c94d344 --- /dev/null +++ b/package/python-dicttoxml/python-dicttoxml.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/dicttoxml/json +md5 f4853a05c41f9056172447d4e59517b9 dicttoxml-1.7.16.tar.gz +sha256 6f36ce644881db5cd8940bee9b7cb3f3f6b7b327ba8a67d83d3e2caa0538bf9d dicttoxml-1.7.16.tar.gz +# Locally computed sha256 checksums +sha256 4514114bd9da0b2fbf8c4fa264c0e6cc80fd41e6ac7f09d7a39a215662951c7c LICENCE.txt diff --git a/package/python-dicttoxml/python-dicttoxml.mk b/package/python-dicttoxml/python-dicttoxml.mk new file mode 100644 index 00000000..eb0049fd --- /dev/null +++ b/package/python-dicttoxml/python-dicttoxml.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-dicttoxml +# +################################################################################ + +PYTHON_DICTTOXML_VERSION = 1.7.16 +PYTHON_DICTTOXML_SOURCE = dicttoxml-$(PYTHON_DICTTOXML_VERSION).tar.gz +PYTHON_DICTTOXML_SITE = https://files.pythonhosted.org/packages/ee/c9/3132427f9e64d572688e6a1cbe3d542d1a03f676b81fb600f3d1fd7d2ec5 +PYTHON_DICTTOXML_SETUP_TYPE = setuptools +PYTHON_DICTTOXML_LICENSE = GPL-2.0 +PYTHON_DICTTOXML_LICENSE_FILES = LICENCE.txt + +$(eval $(python-package)) diff --git a/package/python-dicttoxml2/Config.in b/package/python-dicttoxml2/Config.in new file mode 100644 index 00000000..0bd8068d --- /dev/null +++ b/package/python-dicttoxml2/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_DICTTOXML2 + bool "python-dicttoxml2" + select BR2_PACKAGE_PYTHON3_PYEXPAT + help + Converts a Python dictionary or other native data type into + a valid XML string. + + https://github.com/Ousret/dicttoxml diff --git a/package/python-dicttoxml2/python-dicttoxml2.hash b/package/python-dicttoxml2/python-dicttoxml2.hash new file mode 100644 index 00000000..4cc92d1d --- /dev/null +++ b/package/python-dicttoxml2/python-dicttoxml2.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/dicttoxml2/json +md5 787ea4b80cd6234a41c016e8efa7ff40 dicttoxml2-2.1.0.tar.gz +sha256 67cb729f337dd752808c021b70c8df8a34f84b9e111a5dbaa37e000eeaf4d462 dicttoxml2-2.1.0.tar.gz +# Locally computed +sha256 4514114bd9da0b2fbf8c4fa264c0e6cc80fd41e6ac7f09d7a39a215662951c7c LICENCE.txt diff --git a/package/python-dicttoxml2/python-dicttoxml2.mk b/package/python-dicttoxml2/python-dicttoxml2.mk new file mode 100644 index 00000000..d2abe638 --- /dev/null +++ b/package/python-dicttoxml2/python-dicttoxml2.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-dicttoxml2 +# +################################################################################ + +PYTHON_DICTTOXML2_VERSION = 2.1.0 +PYTHON_DICTTOXML2_SOURCE = dicttoxml2-$(PYTHON_DICTTOXML2_VERSION).tar.gz +PYTHON_DICTTOXML2_SITE = https://files.pythonhosted.org/packages/0b/24/7a6d37b2770843e34685e470fd711955cb0f77c354c73d8ca64b02420bce +PYTHON_DICTTOXML2_SETUP_TYPE = setuptools +PYTHON_DICTTOXML2_LICENSE = GPL-2.0 +PYTHON_DICTTOXML2_LICENSE_FILES = LICENCE.txt + +$(eval $(python-package)) diff --git a/package/python-distlib/python-distlib.hash b/package/python-distlib/python-distlib.hash new file mode 100644 index 00000000..1a14e6ba --- /dev/null +++ b/package/python-distlib/python-distlib.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/distlib/json +md5 c4df5794463d3710bae3d162bf953ba6 distlib-0.3.8.tar.gz +sha256 1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64 distlib-0.3.8.tar.gz +# Locally computed sha256 checksums +sha256 808e10c8a6ab8deb149ff9b3fb19f447a808094606d712a9ca57fead3552599d LICENSE.txt diff --git a/package/python-distlib/python-distlib.mk b/package/python-distlib/python-distlib.mk new file mode 100644 index 00000000..2eba3ae6 --- /dev/null +++ b/package/python-distlib/python-distlib.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-distlib +# +################################################################################ + +PYTHON_DISTLIB_VERSION = 0.3.8 +PYTHON_DISTLIB_SOURCE = distlib-$(PYTHON_DISTLIB_VERSION).tar.gz +PYTHON_DISTLIB_SITE = https://files.pythonhosted.org/packages/c4/91/e2df406fb4efacdf46871c25cde65d3c6ee5e173b7e5a4547a47bae91920 +PYTHON_DISTLIB_SETUP_TYPE = setuptools +PYTHON_DISTLIB_LICENSE = PSF-2.0 +PYTHON_DISTLIB_LICENSE_FILES = LICENSE.txt + +$(eval $(host-python-package)) diff --git a/package/python-distro/Config.in b/package/python-distro/Config.in new file mode 100644 index 00000000..bb415154 --- /dev/null +++ b/package/python-distro/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_DISTRO + bool "python distro" + help + distro provides information about the OS distribution it + runs on, such as a reliable machine-readable ID, or version + information. + + It is the recommended replacement for Python's original + platform.linux_distribution function (removed in Python + 3.8). It also provides much more functionality which isn't + necessarily Python bound, like a command-line interface. + + https://github.com/nir0s/distro diff --git a/package/python-distro/python-distro.hash b/package/python-distro/python-distro.hash new file mode 100644 index 00000000..7f827789 --- /dev/null +++ b/package/python-distro/python-distro.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/distro/json +md5 c4eee99e1d05691230f223c37b895027 distro-1.9.0.tar.gz +sha256 2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed distro-1.9.0.tar.gz +# Locally computed sha256 checksums +sha256 cb5e8e7e5f4a3988e1063c142c60dc2df75605f4c46515e776e3aca6df976e14 LICENSE diff --git a/package/python-distro/python-distro.mk b/package/python-distro/python-distro.mk new file mode 100644 index 00000000..05faab38 --- /dev/null +++ b/package/python-distro/python-distro.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-distro +# +################################################################################ + +PYTHON_DISTRO_VERSION = 1.9.0 +PYTHON_DISTRO_SOURCE = distro-$(PYTHON_DISTRO_VERSION).tar.gz +PYTHON_DISTRO_SITE = https://files.pythonhosted.org/packages/fc/f8/98eea607f65de6527f8a2e8885fc8015d3e6f5775df186e443e0964a11c3 +PYTHON_DISTRO_LICENSE = Apache-2.0 +PYTHON_DISTRO_LICENSE_FILES = LICENSE +PYTHON_DISTRO_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-django-enumfields/Config.in b/package/python-django-enumfields/Config.in new file mode 100644 index 00000000..e7236d13 --- /dev/null +++ b/package/python-django-enumfields/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_DJANGO_ENUMFIELDS + bool "python-django-enumfields" + help + Real Python Enums for Django. + + https://github.com/hzdg/django-enumfields diff --git a/package/python-django-enumfields/python-django-enumfields.hash b/package/python-django-enumfields/python-django-enumfields.hash new file mode 100644 index 00000000..99c6ca5e --- /dev/null +++ b/package/python-django-enumfields/python-django-enumfields.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/django-enumfields/json +md5 e06bcaecd583ee40e30d556bfcbf0d66 django-enumfields-2.1.1.tar.gz +sha256 f64841732a9c343f5071220e0abcf5f51c9472c06e3c33d7c6a7ec27b6087561 django-enumfields-2.1.1.tar.gz +# Locally computed sha256 checksums +sha256 75b9c8c2514f22d66070ffc975c4d3132de01e0cc7b3a9662731bcb46cd2a042 LICENSE diff --git a/package/python-django-enumfields/python-django-enumfields.mk b/package/python-django-enumfields/python-django-enumfields.mk new file mode 100644 index 00000000..20abb5bf --- /dev/null +++ b/package/python-django-enumfields/python-django-enumfields.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-django-enumfields +# +################################################################################ + +PYTHON_DJANGO_ENUMFIELDS_VERSION = 2.1.1 +PYTHON_DJANGO_ENUMFIELDS_SOURCE = django-enumfields-$(PYTHON_DJANGO_ENUMFIELDS_VERSION).tar.gz +PYTHON_DJANGO_ENUMFIELDS_SITE = https://files.pythonhosted.org/packages/24/a8/aaf2b5ddb697c9bcab53c32cfebe11e536502e07c30646b4756e7214b685 +PYTHON_DJANGO_ENUMFIELDS_SETUP_TYPE = setuptools +PYTHON_DJANGO_ENUMFIELDS_LICENSE = MIT +PYTHON_DJANGO_ENUMFIELDS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-django/Config.in b/package/python-django/Config.in new file mode 100644 index 00000000..c236a6dc --- /dev/null +++ b/package/python-django/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_PYTHON_DJANGO + bool "python-django" + select BR2_PACKAGE_PYTHON3_UNICODEDATA + select BR2_PACKAGE_PYTHON3_PYEXPAT + select BR2_PACKAGE_PYTHON3_ZLIB # runtime + select BR2_PACKAGE_PYTHON_ASGIREF # runtime + select BR2_PACKAGE_PYTHON_SQLPARSE # runtime + help + Django is a high-level Python Web framework that encourages + rapid development and clean, pragmatic design. It takes your + Web applications from concept to launch in a matter of + hours. Django takes care of user authentication, content + administration, site maps, RSS feeds, user comments and many + more tasks. Django takes security seriously and helps + developers avoid many common security mistakes + + https://www.djangoproject.com/ diff --git a/package/python-django/python-django.hash b/package/python-django/python-django.hash new file mode 100644 index 00000000..a5a8c742 --- /dev/null +++ b/package/python-django/python-django.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/django/json +md5 fb167eef987a98421cad62036868a1ca Django-5.0.8.tar.gz +sha256 ebe859c9da6fead9c9ee6dbfa4943b04f41342f4cea2c4d8c978ef0d10694f2b Django-5.0.8.tar.gz +# Locally computed sha256 checksums +sha256 b846415d1b514e9c1dff14a22deb906d794bc546ca6129f950a18cd091e2a669 LICENSE diff --git a/package/python-django/python-django.mk b/package/python-django/python-django.mk new file mode 100644 index 00000000..2c5c20ee --- /dev/null +++ b/package/python-django/python-django.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-django +# +################################################################################ + +PYTHON_DJANGO_VERSION = 5.0.8 +PYTHON_DJANGO_SOURCE = Django-$(PYTHON_DJANGO_VERSION).tar.gz +# The official Django site has an unpractical URL +PYTHON_DJANGO_SITE = https://files.pythonhosted.org/packages/79/1c/55733805bb735e26fee0430045efdb61df6fd704b6aebf2154875ef9e6a9 +PYTHON_DJANGO_LICENSE = BSD-3-Clause +PYTHON_DJANGO_LICENSE_FILES = LICENSE +PYTHON_DJANGO_CPE_ID_VENDOR = djangoproject +PYTHON_DJANGO_CPE_ID_PRODUCT = django +PYTHON_DJANGO_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-dnspython/Config.in b/package/python-dnspython/Config.in new file mode 100644 index 00000000..99fd6a9a --- /dev/null +++ b/package/python-dnspython/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_DNSPYTHON + bool "python-dnspython" + help + A powerful DNS toolkit for python. + + http://www.dnspython.org diff --git a/package/python-dnspython/python-dnspython.hash b/package/python-dnspython/python-dnspython.hash new file mode 100644 index 00000000..77ffb5de --- /dev/null +++ b/package/python-dnspython/python-dnspython.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/dnspython/json +md5 fac4e1580e5e9dfee722cb97bc073722 dnspython-2.4.2.tar.gz +sha256 8dcfae8c7460a2f84b4072e26f1c9f4101ca20c071649cb7c34e8b6a93d58984 dnspython-2.4.2.tar.gz +# Locally computed sha256 checksums +sha256 c3ea3ff5654b329c19d3bc5f7481af623c3dded4a6145585499f843ad3d741cd LICENSE diff --git a/package/python-dnspython/python-dnspython.mk b/package/python-dnspython/python-dnspython.mk new file mode 100644 index 00000000..f0df7331 --- /dev/null +++ b/package/python-dnspython/python-dnspython.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-dnspython +# +################################################################################ + +PYTHON_DNSPYTHON_VERSION = 2.4.2 +PYTHON_DNSPYTHON_SOURCE = dnspython-$(PYTHON_DNSPYTHON_VERSION).tar.gz +PYTHON_DNSPYTHON_SITE = https://files.pythonhosted.org/packages/65/2d/372a20e52a87b2ba0160997575809806111a72e18aa92738daccceb8d2b9 +PYTHON_DNSPYTHON_LICENSE = ISC +PYTHON_DNSPYTHON_LICENSE_FILES = LICENSE +PYTHON_DNSPYTHON_SETUP_TYPE = pep517 +PYTHON_DNSPYTHON_DEPENDENCIES = host-python-poetry-core +HOST_PYTHON_DNSPYTHON_DEPENDENCIES = host-python-poetry-core + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-docker-pycreds/Config.in b/package/python-docker-pycreds/Config.in new file mode 100644 index 00000000..584c1dbc --- /dev/null +++ b/package/python-docker-pycreds/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_DOCKER_PYCREDS + bool "python-docker-pycreds" + select BR2_PACKAGE_PYTHON_SIX # runtime + help + Python bindings for the docker credentials store API. + + https://github.com/shin-/dockerpy-creds diff --git a/package/python-docker-pycreds/python-docker-pycreds.hash b/package/python-docker-pycreds/python-docker-pycreds.hash new file mode 100644 index 00000000..06f2faf6 --- /dev/null +++ b/package/python-docker-pycreds/python-docker-pycreds.hash @@ -0,0 +1,4 @@ +# md5 and sha256 from https://pypi.python.org/pypi/docker-pycreds/json +md5 322f570cea6b4661c6ac335683988e18 docker-pycreds-0.4.0.tar.gz +sha256 6ce3270bcaf404cc4c3e27e4b6c70d3521deae82fb508767870fdbf772d584d4 docker-pycreds-0.4.0.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/python-docker-pycreds/python-docker-pycreds.mk b/package/python-docker-pycreds/python-docker-pycreds.mk new file mode 100644 index 00000000..6575ada0 --- /dev/null +++ b/package/python-docker-pycreds/python-docker-pycreds.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-docker-pycreds +# +################################################################################ + +PYTHON_DOCKER_PYCREDS_VERSION = 0.4.0 +PYTHON_DOCKER_PYCREDS_SOURCE = docker-pycreds-$(PYTHON_DOCKER_PYCREDS_VERSION).tar.gz +PYTHON_DOCKER_PYCREDS_SITE = https://files.pythonhosted.org/packages/c5/e6/d1f6c00b7221e2d7c4b470132c931325c8b22c51ca62417e300f5ce16009 +PYTHON_DOCKER_PYCREDS_SETUP_TYPE = setuptools +PYTHON_DOCKER_PYCREDS_LICENSE = Apache-2.0 +PYTHON_DOCKER_PYCREDS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-docker/Config.in b/package/python-docker/Config.in new file mode 100644 index 00000000..669b9e34 --- /dev/null +++ b/package/python-docker/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_DOCKER + bool "python-docker" + # docker-engine may be running on another host, so no other dependency + select BR2_PACKAGE_PYTHON3_SSL # runtime + select BR2_PACKAGE_PYTHON_REQUESTS # runtime + select BR2_PACKAGE_PYTHON_URLLIB3 # runtime + help + A Python library for the Docker Engine API. + + https://github.com/docker/docker-py diff --git a/package/python-docker/python-docker.hash b/package/python-docker/python-docker.hash new file mode 100644 index 00000000..c8f8e750 --- /dev/null +++ b/package/python-docker/python-docker.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/docker/json +md5 04e92a7b6dc8b88dde3c7cca6850b277 docker-7.1.0.tar.gz +sha256 ad8c70e6e3f8926cb8a92619b832b4ea5299e2831c14284663184e200546fa6c docker-7.1.0.tar.gz +# Locally computed sha256 checksums +sha256 f2f0b07fa5e492c11d27aa0d2f3f1a0e64b9d17f32d8aa489ae2af9609af33b2 LICENSE diff --git a/package/python-docker/python-docker.mk b/package/python-docker/python-docker.mk new file mode 100644 index 00000000..55ba405f --- /dev/null +++ b/package/python-docker/python-docker.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-docker +# +################################################################################ + +PYTHON_DOCKER_VERSION = 7.1.0 +PYTHON_DOCKER_SOURCE = docker-$(PYTHON_DOCKER_VERSION).tar.gz +PYTHON_DOCKER_SITE = https://files.pythonhosted.org/packages/91/9b/4a2ea29aeba62471211598dac5d96825bb49348fa07e906ea930394a83ce +PYTHON_DOCKER_SETUP_TYPE = pep517 +PYTHON_DOCKER_LICENSE = Apache-2.0 +PYTHON_DOCKER_LICENSE_FILES = LICENSE +PYTHON_DOCKER_CPE_ID_VENDOR = docker +PYTHON_DOCKER_CPE_ID_PRODUCT = docker-py +PYTHON_DOCKER_DEPENDENCIES = host-python-hatchling host-python-hatch-vcs + +$(eval $(python-package)) diff --git a/package/python-dockerpty/Config.in b/package/python-dockerpty/Config.in new file mode 100644 index 00000000..f0bd85a6 --- /dev/null +++ b/package/python-dockerpty/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_DOCKERPTY + bool "python-dockerpty" + select BR2_PACKAGE_PYTHON_SIX # runtime + help + Python library to use the pseudo-tty of a docker container. + + https://github.com/d11wtq/dockerpty diff --git a/package/python-dockerpty/python-dockerpty.hash b/package/python-dockerpty/python-dockerpty.hash new file mode 100644 index 00000000..c934b347 --- /dev/null +++ b/package/python-dockerpty/python-dockerpty.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/dockerpty/json, sha256 locally computed +md5 028bacb34536f3ee6a2ccd668c27e8e4 dockerpty-0.4.1.tar.gz +sha256 69a9d69d573a0daa31bcd1c0774eeed5c15c295fe719c61aca550ed1393156ce dockerpty-0.4.1.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/python-dockerpty/python-dockerpty.mk b/package/python-dockerpty/python-dockerpty.mk new file mode 100644 index 00000000..e6fe6e3b --- /dev/null +++ b/package/python-dockerpty/python-dockerpty.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-dockerpty +# +################################################################################ + +PYTHON_DOCKERPTY_VERSION = 0.4.1 +PYTHON_DOCKERPTY_SOURCE = dockerpty-$(PYTHON_DOCKERPTY_VERSION).tar.gz +PYTHON_DOCKERPTY_SITE = https://pypi.python.org/packages/8d/ee/e9ecce4c32204a6738e0a5d5883d3413794d7498fe8b06f44becc028d3ba +PYTHON_DOCKERPTY_SETUP_TYPE = setuptools +PYTHON_DOCKERPTY_LICENSE = Apache-2.0 +PYTHON_DOCKERPTY_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-docopt/Config.in b/package/python-docopt/Config.in new file mode 100644 index 00000000..9942d671 --- /dev/null +++ b/package/python-docopt/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_DOCOPT + bool "python-docopt" + help + docopt helps you create most beautiful command-line + interfaces easily. The option parser is generated based on + the beautiful help message that you write yourself. This way + you don't need to write this stupid repeatable parser-code, + and instead can write only the help message-- the way you + want it. + + https://github.com/docopt/docopt diff --git a/package/python-docopt/python-docopt.hash b/package/python-docopt/python-docopt.hash new file mode 100644 index 00000000..eebfd5cc --- /dev/null +++ b/package/python-docopt/python-docopt.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 2113eed1e7fbbcd43fb7ee6a977fb02d0b482753586c9dc1a8e3b7d541426e99 python-docopt-0.6.2.tar.gz +sha256 3d5df78f592ff2433c3c6ce4984091b7f497059ddb8c6b08a061ba48e37b67f2 LICENSE-MIT diff --git a/package/python-docopt/python-docopt.mk b/package/python-docopt/python-docopt.mk new file mode 100644 index 00000000..f87d2f85 --- /dev/null +++ b/package/python-docopt/python-docopt.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-docopt +# +################################################################################ + +PYTHON_DOCOPT_VERSION = 0.6.2 +PYTHON_DOCOPT_SITE = $(call github,docopt,docopt,$(PYTHON_DOCOPT_VERSION)) +PYTHON_DOCOPT_LICENSE = MIT +PYTHON_DOCOPT_LICENSE_FILES = LICENSE-MIT +PYTHON_DOCOPT_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-docutils/Config.in b/package/python-docutils/Config.in new file mode 100644 index 00000000..e7bf7e63 --- /dev/null +++ b/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/package/python-docutils/python-docutils.hash b/package/python-docutils/python-docutils.hash new file mode 100644 index 00000000..2386cc28 --- /dev/null +++ b/package/python-docutils/python-docutils.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/docutils/json +md5 93bcfe0065cf1d0b6a0bcabeca7a2335 docutils-0.20.1.tar.gz +sha256 f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b docutils-0.20.1.tar.gz +# Locally computed sha256 checksums +sha256 a0d7ee761e8d757c0b904518514f98233fd94f2398da3703130d15142ca47a77 COPYING.txt diff --git a/package/python-docutils/python-docutils.mk b/package/python-docutils/python-docutils.mk new file mode 100644 index 00000000..2b496f0d --- /dev/null +++ b/package/python-docutils/python-docutils.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-docutils +# +################################################################################ + +PYTHON_DOCUTILS_VERSION = 0.20.1 +PYTHON_DOCUTILS_SOURCE = docutils-$(PYTHON_DOCUTILS_VERSION).tar.gz +PYTHON_DOCUTILS_SITE = https://files.pythonhosted.org/packages/1f/53/a5da4f2c5739cf66290fac1431ee52aff6851c7c8ffd8264f13affd7bcdd +PYTHON_DOCUTILS_LICENSE = Public Domain, BSD-2-Clause, BSD-3-Clause, Python-2.0, GPL-3.0+ (emacs mode) +PYTHON_DOCUTILS_LICENSE_FILES = COPYING.txt +PYTHON_DOCUTILS_SETUP_TYPE = setuptools + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-dominate/Config.in b/package/python-dominate/Config.in new file mode 100644 index 00000000..35e9a0c8 --- /dev/null +++ b/package/python-dominate/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_DOMINATE + bool "python-dominate" + help + Dominate is a Python library for creating and manipulating + HTML documents using an elegant DOM API. + + http://github.com/Knio/dominate/ diff --git a/package/python-dominate/python-dominate.hash b/package/python-dominate/python-dominate.hash new file mode 100644 index 00000000..26840e5f --- /dev/null +++ b/package/python-dominate/python-dominate.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/dominate/json +md5 4dc4bbb39297999624e2312b6fe2b46f dominate-2.9.1.tar.gz +sha256 558284687d9b8aae1904e3d6051ad132dd4a8c0cf551b37ea4e7e42a31d19dc4 dominate-2.9.1.tar.gz +# Locally computed sha256 checksums +sha256 9ccf26cfe845e0eb8bb58053e47366e7ab6b697ae010f7650978d4b71b7d1fc1 LICENSE.txt diff --git a/package/python-dominate/python-dominate.mk b/package/python-dominate/python-dominate.mk new file mode 100644 index 00000000..d6301af9 --- /dev/null +++ b/package/python-dominate/python-dominate.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-dominate +# +################################################################################ + +PYTHON_DOMINATE_VERSION = 2.9.1 +PYTHON_DOMINATE_SOURCE = dominate-$(PYTHON_DOMINATE_VERSION).tar.gz +PYTHON_DOMINATE_SITE = https://files.pythonhosted.org/packages/fb/f3/1c8088ff19a0fcd9c3234802a0ee47006ea64bd8852f1019194f0e3583ff +PYTHON_DOMINATE_SETUP_TYPE = setuptools +PYTHON_DOMINATE_LICENSE = LGPL-3.0+ +PYTHON_DOMINATE_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-dpkt/Config.in b/package/python-dpkt/Config.in new file mode 100644 index 00000000..819d0fb6 --- /dev/null +++ b/package/python-dpkt/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_DPKT + bool "python-dpkt" + select BR2_PACKAGE_PYTHON3_ZLIB # runtime + help + Fast, simple packet creation / parsing, with definitions + for the basic TCP/IP protocols. + + https://github.com/kbandla/dpkt diff --git a/package/python-dpkt/python-dpkt.hash b/package/python-dpkt/python-dpkt.hash new file mode 100644 index 00000000..7de0d748 --- /dev/null +++ b/package/python-dpkt/python-dpkt.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/dpkt/json +md5 0f16de3c0b8caa6ec2261210f08c7b8b dpkt-1.9.8.tar.gz +sha256 43f8686e455da5052835fd1eda2689d51de3670aac9799b1b00cfd203927ee45 dpkt-1.9.8.tar.gz +# Locally computed sha256 checksums +sha256 4c5ffde575425591cbd51410219a6b98bbbb717e0c5784187e356653da8e5095 LICENSE diff --git a/package/python-dpkt/python-dpkt.mk b/package/python-dpkt/python-dpkt.mk new file mode 100644 index 00000000..a99a1e86 --- /dev/null +++ b/package/python-dpkt/python-dpkt.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-dpkt +# +################################################################################ + +PYTHON_DPKT_VERSION = 1.9.8 +PYTHON_DPKT_SOURCE = dpkt-$(PYTHON_DPKT_VERSION).tar.gz +PYTHON_DPKT_SITE = https://files.pythonhosted.org/packages/c9/7d/52f17a794db52a66e46ebb0c7549bf2f035ed61d5a920ba4aaa127dd038e +PYTHON_DPKT_SETUP_TYPE = setuptools +PYTHON_DPKT_LICENSE = BSD-3-Clause +PYTHON_DPKT_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-dtschema/Config.in b/package/python-dtschema/Config.in new file mode 100644 index 00000000..5baad45e --- /dev/null +++ b/package/python-dtschema/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_DTSCHEMA + bool "python-dtschema" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-jsonschema -> python-rpds-py + select BR2_PACKAGE_PYTHON_JSONSCHEMA # runtime + select BR2_PACKAGE_PYTHON_PYLIBFDT # runtime + select BR2_PACKAGE_PYTHON_RFC3987 # runtime + select BR2_PACKAGE_PYTHON_RUAMEL_YAML # runtime + help + DeviceTree validation schema and tools. + + https://github.com/devicetree-org/dt-schema diff --git a/package/python-dtschema/python-dtschema.hash b/package/python-dtschema/python-dtschema.hash new file mode 100644 index 00000000..3e1dd221 --- /dev/null +++ b/package/python-dtschema/python-dtschema.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/dtschema/json +md5 cc4be8cfc01804cc31a123b56f68aeb1 dtschema-2023.11.tar.gz +sha256 cf9a449ea743c0a955cf6034ef246668fa5ea177684977c61fef7604af5f273b dtschema-2023.11.tar.gz +# Locally computed sha256 checksums +sha256 ca0d66263406dc684fe9db60577b234f65ffdf620d7e041c708e969447b69111 LICENSE.txt diff --git a/package/python-dtschema/python-dtschema.mk b/package/python-dtschema/python-dtschema.mk new file mode 100644 index 00000000..e1dd5009 --- /dev/null +++ b/package/python-dtschema/python-dtschema.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-dtschema +# +################################################################################ + +PYTHON_DTSCHEMA_VERSION = 2023.11 +PYTHON_DTSCHEMA_SOURCE = dtschema-$(PYTHON_DTSCHEMA_VERSION).tar.gz +PYTHON_DTSCHEMA_SITE = https://files.pythonhosted.org/packages/5a/94/7890ef663fba1cca84cf0ab64c7f68685343c921ab883f0356cd9978b605 +PYTHON_DTSCHEMA_SETUP_TYPE = setuptools +PYTHON_DTSCHEMA_LICENSE = BSD-2-Clause +PYTHON_DTSCHEMA_LICENSE_FILES = LICENSE.txt +PYTHON_DTSCHEMA_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-ecdsa/Config.in b/package/python-ecdsa/Config.in new file mode 100644 index 00000000..54a363b3 --- /dev/null +++ b/package/python-ecdsa/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_ECDSA + bool "python-ecdsa" + select BR2_PACKAGE_PYTHON_SIX # runtime + help + ECDSA cryptographic signature library (pure python). + + http://github.com/tlsfuzzer/python-ecdsa diff --git a/package/python-ecdsa/python-ecdsa.hash b/package/python-ecdsa/python-ecdsa.hash new file mode 100644 index 00000000..382cccd4 --- /dev/null +++ b/package/python-ecdsa/python-ecdsa.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/ecdsa/json +md5 cbca26ec29cc50e32e8b070aa2ec0786 ecdsa-0.18.0.tar.gz +sha256 190348041559e21b22a1d65cee485282ca11a6f81d503fddb84d5017e9ed1e49 ecdsa-0.18.0.tar.gz +# Locally computed sha256 checksums +sha256 3eca9845773d2e5b8cc9d8c119d345f00a4806e4bd660d4a3d6cdf9c0e9d8bb2 LICENSE diff --git a/package/python-ecdsa/python-ecdsa.mk b/package/python-ecdsa/python-ecdsa.mk new file mode 100644 index 00000000..321e87e0 --- /dev/null +++ b/package/python-ecdsa/python-ecdsa.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-ecdsa +# +################################################################################ + +PYTHON_ECDSA_VERSION = 0.18.0 +PYTHON_ECDSA_SOURCE = ecdsa-$(PYTHON_ECDSA_VERSION).tar.gz +PYTHON_ECDSA_SITE = https://files.pythonhosted.org/packages/ff/7b/ba6547a76c468a0d22de93e89ae60d9561ec911f59532907e72b0d8bc0f1 +PYTHON_ECDSA_SETUP_TYPE = setuptools +PYTHON_ECDSA_LICENSE = MIT +PYTHON_ECDSA_LICENSE_FILES = LICENSE +PYTHON_ECDSA_CPE_ID_VALID = YES + +$(eval $(python-package)) diff --git a/package/python-editables/python-editables.hash b/package/python-editables/python-editables.hash new file mode 100644 index 00000000..a34c7ad2 --- /dev/null +++ b/package/python-editables/python-editables.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/editables/json +md5 520de8c3a9dc5dfb2b365d104541c9de editables-0.5.tar.gz +sha256 309627d9b5c4adc0e668d8c6fa7bac1ba7c8c5d415c2d27f60f081f8e80d1de2 editables-0.5.tar.gz +# Locally computed sha256 checksums +sha256 c73e08a04e1557fdb49525fb7a579f73bcab84a254910b9350ee56daf143932d LICENSE.txt diff --git a/package/python-editables/python-editables.mk b/package/python-editables/python-editables.mk new file mode 100644 index 00000000..e60d50f9 --- /dev/null +++ b/package/python-editables/python-editables.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-editables +# +################################################################################ + +PYTHON_EDITABLES_VERSION = 0.5 +PYTHON_EDITABLES_SOURCE = editables-$(PYTHON_EDITABLES_VERSION).tar.gz +PYTHON_EDITABLES_SITE = https://files.pythonhosted.org/packages/37/4a/986d35164e2033ddfb44515168a281a7986e260d344cf369c3f52d4c3275 +PYTHON_EDITABLES_LICENSE = MIT +PYTHON_EDITABLES_LICENSE_FILES = LICENSE.txt +PYTHON_EDITABLES_SETUP_TYPE = setuptools + +$(eval $(host-python-package)) diff --git a/package/python-email-validator/Config.in b/package/python-email-validator/Config.in new file mode 100644 index 00000000..3b1ffc90 --- /dev/null +++ b/package/python-email-validator/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_EMAIL_VALIDATOR + bool "python-email-validator" + select BR2_PACKAGE_PYTHON_DNSPYTHON # runtime + select BR2_PACKAGE_PYTHON_IDNA # runtime + help + A robust email address syntax and deliverability validation + library. + + https://github.com/JoshData/python-email-validator diff --git a/package/python-email-validator/python-email-validator.hash b/package/python-email-validator/python-email-validator.hash new file mode 100644 index 00000000..4342f8d9 --- /dev/null +++ b/package/python-email-validator/python-email-validator.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/email-validator/json +md5 a836759afeb7efdc5d493fbdf8a1bae6 email_validator-2.1.1.tar.gz +sha256 200a70680ba08904be6d1eef729205cc0d687634399a5924d842533efb824b84 email_validator-2.1.1.tar.gz +# Locally computed sha256 checksums +sha256 672179752e109134a3fb2bdd0780b29fdb7a03974f0f586a13aead5129562d4c LICENSE diff --git a/package/python-email-validator/python-email-validator.mk b/package/python-email-validator/python-email-validator.mk new file mode 100644 index 00000000..8d82eb09 --- /dev/null +++ b/package/python-email-validator/python-email-validator.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-email-validator +# +################################################################################ + +PYTHON_EMAIL_VALIDATOR_VERSION = 2.1.1 +PYTHON_EMAIL_VALIDATOR_SOURCE = email_validator-$(PYTHON_EMAIL_VALIDATOR_VERSION).tar.gz +PYTHON_EMAIL_VALIDATOR_SITE = https://files.pythonhosted.org/packages/63/82/2914bff80ebee8c027802a664ad4b4caad502cd594e358f76aff395b5e56 +PYTHON_EMAIL_VALIDATOR_SETUP_TYPE = setuptools +PYTHON_EMAIL_VALIDATOR_LICENSE = Unlicense +PYTHON_EMAIL_VALIDATOR_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-engineio/Config.in b/package/python-engineio/Config.in new file mode 100644 index 00000000..b42b609e --- /dev/null +++ b/package/python-engineio/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_ENGINEIO + bool "python-engineio" + select BR2_PACKAGE_PYTHON3_ZLIB + help + Engine.IO server. + + http://github.com/miguelgrinberg/python-engineio/ diff --git a/package/python-engineio/python-engineio.hash b/package/python-engineio/python-engineio.hash new file mode 100644 index 00000000..c1b02350 --- /dev/null +++ b/package/python-engineio/python-engineio.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/python-engineio/json +md5 619e7fce0257a8219187f50aa94844a3 python-engineio-4.8.2.tar.gz +sha256 f8609e3afdda318fdc336b4ba2de8dd397bb8f9b8a1b43e56c27330e32c2e34c python-engineio-4.8.2.tar.gz +# Locally computed sha256 checksums +sha256 c9e97d3dbc1fbbcdb4f7808b282cd646db887aff4f5313fe6bbe8d4c31405a9c LICENSE diff --git a/package/python-engineio/python-engineio.mk b/package/python-engineio/python-engineio.mk new file mode 100644 index 00000000..67092402 --- /dev/null +++ b/package/python-engineio/python-engineio.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-engineio +# +################################################################################ + +PYTHON_ENGINEIO_VERSION = 4.8.2 +PYTHON_ENGINEIO_SITE = https://files.pythonhosted.org/packages/e2/24/4a69dd119d10e31c4439f910a2a0f71b540b9f835ab60efa1f0f7bcae0c7 +PYTHON_ENGINEIO_SETUP_TYPE = setuptools +PYTHON_ENGINEIO_LICENSE = MIT +PYTHON_ENGINEIO_LICENSE_FILES = LICENSE +PYTHON_ENGINEIO_CPE_ID_VALID = YES + +$(eval $(python-package)) diff --git a/package/python-entrypoints/Config.in b/package/python-entrypoints/Config.in new file mode 100644 index 00000000..8253a045 --- /dev/null +++ b/package/python-entrypoints/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_ENTRYPOINTS + bool "python-entrypoints" + help + Discover and load entry points from installed packages. + + https://github.com/takluyver/entrypoints diff --git a/package/python-entrypoints/python-entrypoints.hash b/package/python-entrypoints/python-entrypoints.hash new file mode 100644 index 00000000..a8deb856 --- /dev/null +++ b/package/python-entrypoints/python-entrypoints.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/entrypoints/json +md5 3acd8b72119a8fb1eac7030c24ac6b49 entrypoints-0.4.tar.gz +sha256 b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4 entrypoints-0.4.tar.gz +# Locally computed sha256 checksums +sha256 de5fcd7349cdf399b0707a2a024833c4704743650133c72d6f0ff7561a03a848 LICENSE diff --git a/package/python-entrypoints/python-entrypoints.mk b/package/python-entrypoints/python-entrypoints.mk new file mode 100644 index 00000000..287b8360 --- /dev/null +++ b/package/python-entrypoints/python-entrypoints.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-entrypoints +# +################################################################################ + +PYTHON_ENTRYPOINTS_VERSION = 0.4 +PYTHON_ENTRYPOINTS_SOURCE = entrypoints-$(PYTHON_ENTRYPOINTS_VERSION).tar.gz +PYTHON_ENTRYPOINTS_SITE = https://files.pythonhosted.org/packages/ea/8d/a7121ffe5f402dc015277d2d31eb82d2187334503a011c18f2e78ecbb9b2 +PYTHON_ENTRYPOINTS_SETUP_TYPE = flit +PYTHON_ENTRYPOINTS_LICENSE = MIT +PYTHON_ENTRYPOINTS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-esptool/Config.in b/package/python-esptool/Config.in new file mode 100644 index 00000000..40999579 --- /dev/null +++ b/package/python-esptool/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_PYTHON_ESPTOOL + bool "python-esptool" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-cryptography + select BR2_PACKAGE_PYTHON_BITSTRING # runtime + select BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime + select BR2_PACKAGE_PYTHON_ECDSA # runtime + select BR2_PACKAGE_PYTHON_INTELHEX # runtime + select BR2_PACKAGE_PYTHON_PYYAML # runtime + select BR2_PACKAGE_PYTHON_REEDSOLO # runtime + select BR2_PACKAGE_PYTHON_SERIAL # runtime + select BR2_PACKAGE_PYTHON3_ZLIB + help + A serial utility to communicate & flash code to Espressif + ESP8266 & ESP32 chips. + + https://github.com/espressif/esptool diff --git a/package/python-esptool/python-esptool.hash b/package/python-esptool/python-esptool.hash new file mode 100644 index 00000000..490b4e7e --- /dev/null +++ b/package/python-esptool/python-esptool.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/esptool/json +md5 e7f2012cf31cd23f60049b179fb3b53a esptool-4.7.0.tar.gz +sha256 01454e69e1ef3601215db83ff2cb1fc79ece67d24b0e5d43d451b410447c4893 esptool-4.7.0.tar.gz +# Locally computed sha256 checksums +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/python-esptool/python-esptool.mk b/package/python-esptool/python-esptool.mk new file mode 100644 index 00000000..64874823 --- /dev/null +++ b/package/python-esptool/python-esptool.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-esptool +# +################################################################################ + +PYTHON_ESPTOOL_VERSION = 4.7.0 +PYTHON_ESPTOOL_SOURCE = esptool-$(PYTHON_ESPTOOL_VERSION).tar.gz +PYTHON_ESPTOOL_SITE = https://files.pythonhosted.org/packages/1b/8b/f0d1e75879dee053874a4f955ed1e9ad97275485f51cb4bc2cb4e9b24479 +PYTHON_ESPTOOL_SETUP_TYPE = setuptools +PYTHON_ESPTOOL_LICENSE = GPL-2.0+ +PYTHON_ESPTOOL_LICENSE_FILES = LICENSE +PYTHON_ESPTOOL_CPE_ID_VENDOR = espressif +PYTHON_ESPTOOL_CPE_ID_PRODUCT = esptool + +$(eval $(python-package)) diff --git a/package/python-evdev/Config.in b/package/python-evdev/Config.in new file mode 100644 index 00000000..33e43c1f --- /dev/null +++ b/package/python-evdev/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_EVDEV + bool "python-evdev" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4 + help + Bindings to the Linux input handling subsystem. + + https://github.com/gvalkov/python-evdev + +comment "python-evdev needs a toolchain w/ headers >= 4.4" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4 diff --git a/package/python-evdev/python-evdev.hash b/package/python-evdev/python-evdev.hash new file mode 100644 index 00000000..9a6d0d07 --- /dev/null +++ b/package/python-evdev/python-evdev.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/evdev/json +md5 905b12ef6136b518ddf418d8d5b053e4 evdev-1.6.1.tar.gz +sha256 299db8628cc73b237fc1cc57d3c2948faa0756e2a58b6194b5bf81dc2081f1e3 evdev-1.6.1.tar.gz +# Locally computed sha256 checksums +sha256 55fd76d7b3f90d312f161d318631b93c58a0e69d662d07c4f5aca2c6c9ecc85e LICENSE diff --git a/package/python-evdev/python-evdev.mk b/package/python-evdev/python-evdev.mk new file mode 100644 index 00000000..b509b43e --- /dev/null +++ b/package/python-evdev/python-evdev.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# python-evdev +# +################################################################################ + +PYTHON_EVDEV_VERSION = 1.6.1 +PYTHON_EVDEV_SOURCE = evdev-$(PYTHON_EVDEV_VERSION).tar.gz +PYTHON_EVDEV_SITE = https://files.pythonhosted.org/packages/05/50/629b011a7f61cb2fca754ea8631575784bf8605a1ec4d6970a010bc54e2b +PYTHON_EVDEV_SETUP_TYPE = setuptools +PYTHON_EVDEV_LICENSE = Revised BSD License +PYTHON_EVDEV_LICENSE_FILES = LICENSE + +PYTHON_EVDEV_BUILD_OPTS = \ + -C--build-option=build_ecodes \ + -C--build-option=--evdev-headers=$(STAGING_DIR)/usr/include/linux/input.h:$(STAGING_DIR)/usr/include/linux/input-event-codes.h:$(STAGING_DIR)/usr/include/linux/uinput.h + +$(eval $(python-package)) diff --git a/package/python-executing/Config.in b/package/python-executing/Config.in new file mode 100644 index 00000000..e1f8f8ef --- /dev/null +++ b/package/python-executing/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_EXECUTING + bool "python-executing" + help + Get the currently executing AST node of a frame, and other + information. + + https://github.com/alexmojaki/executing diff --git a/package/python-executing/python-executing.hash b/package/python-executing/python-executing.hash new file mode 100644 index 00000000..e21418aa --- /dev/null +++ b/package/python-executing/python-executing.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/executing/json +md5 91da12f933267a5fe085033db2a3b84d executing-2.0.1.tar.gz +sha256 35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147 executing-2.0.1.tar.gz +# Locally computed sha256 checksums +sha256 a476a2cb0ef4c41450340a577a28b91ac4c7f669136b2ee148047fabd5fc4181 LICENSE.txt diff --git a/package/python-executing/python-executing.mk b/package/python-executing/python-executing.mk new file mode 100644 index 00000000..071e8679 --- /dev/null +++ b/package/python-executing/python-executing.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-executing +# +################################################################################ + +PYTHON_EXECUTING_VERSION = 2.0.1 +PYTHON_EXECUTING_SOURCE = executing-$(PYTHON_EXECUTING_VERSION).tar.gz +PYTHON_EXECUTING_SITE = https://files.pythonhosted.org/packages/08/41/85d2d28466fca93737592b7f3cc456d1cfd6bcd401beceeba17e8e792b50 +PYTHON_EXECUTING_SETUP_TYPE = setuptools +PYTHON_EXECUTING_LICENSE = MIT +PYTHON_EXECUTING_LICENSE_FILES = LICENSE.txt + +PYTHON_EXECUTING_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-expandvars/python-expandvars.hash b/package/python-expandvars/python-expandvars.hash new file mode 100644 index 00000000..0123ed54 --- /dev/null +++ b/package/python-expandvars/python-expandvars.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/expandvars/json +md5 8091f578a547e2b4b9df59100a179266 expandvars-0.12.0.tar.gz +sha256 7d1adfa55728cf4b5d812ece3d087703faea953e0c0a1a78415de9df5024d844 expandvars-0.12.0.tar.gz +# Locally computed sha256 checksums +sha256 b8a43c35080fc5855e4f8171e4d0d002f6ff1633d8cfc0b5dee0ac4ced2deac7 LICENSE diff --git a/package/python-expandvars/python-expandvars.mk b/package/python-expandvars/python-expandvars.mk new file mode 100644 index 00000000..5c9a7249 --- /dev/null +++ b/package/python-expandvars/python-expandvars.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-expandvars +# +################################################################################ + +PYTHON_EXPANDVARS_VERSION = 0.12.0 +PYTHON_EXPANDVARS_SOURCE = expandvars-$(PYTHON_EXPANDVARS_VERSION).tar.gz +PYTHON_EXPANDVARS_SITE = https://files.pythonhosted.org/packages/2b/a5/46d1f58edcae1d632fafdfee313e378240e002ae45d26502bac938bd8751 +PYTHON_EXPANDVARS_SETUP_TYPE = pep517 +PYTHON_EXPANDVARS_LICENSE = MIT +PYTHON_EXPANDVARS_LICENSE_FILES = LICENSE +HOST_PYTHON_EXPANDVARS_DEPENDENCIES = host-python-hatchling + +$(eval $(host-python-package)) diff --git a/package/python-falcon/Config.in b/package/python-falcon/Config.in new file mode 100644 index 00000000..1bf93064 --- /dev/null +++ b/package/python-falcon/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_FALCON + bool "python-falcon" + help + An unladen web framework for building APIs and app + backends. + + https://falconframework.org diff --git a/package/python-falcon/python-falcon.hash b/package/python-falcon/python-falcon.hash new file mode 100644 index 00000000..2d54d278 --- /dev/null +++ b/package/python-falcon/python-falcon.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/falcon/json +md5 22a5c32f3d9dd96d498febe8e16ddffe falcon-3.1.3.tar.gz +sha256 23335dbccd44f29e85ec55f2f35d5a0bc12bd7a509f641ab81f5c64b65626263 falcon-3.1.3.tar.gz +# Locally computed sha256 checksums +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/python-falcon/python-falcon.mk b/package/python-falcon/python-falcon.mk new file mode 100644 index 00000000..6c96bf16 --- /dev/null +++ b/package/python-falcon/python-falcon.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-falcon +# +################################################################################ + +PYTHON_FALCON_VERSION = 3.1.3 +PYTHON_FALCON_SOURCE = falcon-$(PYTHON_FALCON_VERSION).tar.gz +PYTHON_FALCON_SITE = https://files.pythonhosted.org/packages/3b/30/a7bc770025b6a7a36d0508e3d735dca239df7c27b862856e54d661f24632 +PYTHON_FALCON_SETUP_TYPE = setuptools +PYTHON_FALCON_LICENSE = Apache-2.0 +PYTHON_FALCON_LICENSE_FILES = LICENSE +PYTHON_FALCON_DEPENDENCIES += host-python-cython + +$(eval $(python-package)) diff --git a/package/python-fastapi-sessions/Config.in b/package/python-fastapi-sessions/Config.in new file mode 100644 index 00000000..a54b072f --- /dev/null +++ b/package/python-fastapi-sessions/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_FASTAPI_SESSIONS + bool "python-fastapi-sessions" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-pydantic -> python-pydantic-core + select BR2_PACKAGE_PYTHON_FASTAPI # runtime + select BR2_PACKAGE_PYTHON_ITSDANGEROUS # runtime + select BR2_PACKAGE_PYTHON_PYDANTIC # runtime + help + Ready-to-use session library for FastAPI. + + https://github.com/jordanisaacs/fastapi-sessions diff --git a/package/python-fastapi-sessions/python-fastapi-sessions.hash b/package/python-fastapi-sessions/python-fastapi-sessions.hash new file mode 100644 index 00000000..dd5e224b --- /dev/null +++ b/package/python-fastapi-sessions/python-fastapi-sessions.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/fastapi-sessions/json +md5 397ee37291bdbb7330ef8f4af378cd28 fastapi-sessions-0.3.2.tar.gz +sha256 5159023fd548f8a9c198a966cf1086a73a43038cf3b9b79175fe33129f15e64c fastapi-sessions-0.3.2.tar.gz +# Locally computed sha256 checksums +sha256 4962ee6d7777ff7d2f96ad81424c2e78d73ea7f6282d368afa14a7500c2d223e LICENSE diff --git a/package/python-fastapi-sessions/python-fastapi-sessions.mk b/package/python-fastapi-sessions/python-fastapi-sessions.mk new file mode 100644 index 00000000..abfb41b5 --- /dev/null +++ b/package/python-fastapi-sessions/python-fastapi-sessions.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-fastapi-sessions +# +################################################################################ + +PYTHON_FASTAPI_SESSIONS_VERSION = 0.3.2 +PYTHON_FASTAPI_SESSIONS_SOURCE = fastapi-sessions-$(PYTHON_FASTAPI_SESSIONS_VERSION).tar.gz +PYTHON_FASTAPI_SESSIONS_SITE = https://files.pythonhosted.org/packages/1d/89/da83ba47bd70101e14eca0ac57c7f300b055b70104446badfdc1dcbe813f +PYTHON_FASTAPI_SESSIONS_SETUP_TYPE = setuptools +PYTHON_FASTAPI_SESSIONS_LICENSE = MIT +PYTHON_FASTAPI_SESSIONS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-fastapi/Config.in b/package/python-fastapi/Config.in new file mode 100644 index 00000000..d4a527c6 --- /dev/null +++ b/package/python-fastapi/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_FASTAPI + bool "python-fastapi" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-pydantic -> python-pydantic-core + select BR2_PACKAGE_PYTHON_PYDANTIC # runtime + select BR2_PACKAGE_PYTHON_STARLETTE # runtime + select BR2_PACKAGE_PYTHON_TYPING_EXTENSIONS # runtime + help + FastAPI framework, high performance, easy to learn, fast to + code, ready for production. + + https://github.com/tiangolo/fastapi diff --git a/package/python-fastapi/python-fastapi.hash b/package/python-fastapi/python-fastapi.hash new file mode 100644 index 00000000..2be006a9 --- /dev/null +++ b/package/python-fastapi/python-fastapi.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/fastapi/json +md5 32df7b178fb59e180d34729be33d5024 fastapi-0.111.0.tar.gz +sha256 b9db9dd147c91cb8b769f7183535773d8741dd46f9dc6676cd82eab510228cd7 fastapi-0.111.0.tar.gz +# Locally computed sha256 checksums +sha256 4ec89ffc81485b97fec584b2d4a961032eeffe834453894fd9c1274906cc744e LICENSE diff --git a/package/python-fastapi/python-fastapi.mk b/package/python-fastapi/python-fastapi.mk new file mode 100644 index 00000000..262b1669 --- /dev/null +++ b/package/python-fastapi/python-fastapi.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-fastapi +# +################################################################################ + +PYTHON_FASTAPI_VERSION = 0.111.0 +PYTHON_FASTAPI_SOURCE = fastapi-$(PYTHON_FASTAPI_VERSION).tar.gz +PYTHON_FASTAPI_SITE = https://files.pythonhosted.org/packages/0e/1f/f4a99e92c583780787e04b05aa9d8a8db9ec76d091d81545948a006f5b44 +PYTHON_FASTAPI_SETUP_TYPE = pep517 +PYTHON_FASTAPI_LICENSE = MIT +PYTHON_FASTAPI_LICENSE_FILES = LICENSE +PYTHON_FASTAPI_CPE_ID_VENDOR = fastapi_project +PYTHON_FASTAPI_CPE_ID_PRODUCT = fastapi +PYTHON_FASTAPI_DEPENDENCIES = host-python-pdm-backend + +$(eval $(python-package)) diff --git a/package/python-fastentrypoints/Config.in.host b/package/python-fastentrypoints/Config.in.host new file mode 100644 index 00000000..91605509 --- /dev/null +++ b/package/python-fastentrypoints/Config.in.host @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HOST_PYTHON_FASTENTRYPOINTS + bool "host python-fastentrypoints" + help + Makes entry_points specified in setup.py load more quickly. + + https://github.com/ninjaaron/fast-entry_points diff --git a/package/python-fastentrypoints/python-fastentrypoints.hash b/package/python-fastentrypoints/python-fastentrypoints.hash new file mode 100644 index 00000000..0d505cd1 --- /dev/null +++ b/package/python-fastentrypoints/python-fastentrypoints.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.org/pypi/fastentrypoints/json, sha256 locally computed +md5 390ad9a9229164a06156a5b1f0ef1b22 fastentrypoints-0.12.tar.gz +sha256 ff284f1469bd65400599807d2c6284d5b251398e6e28811f5f77fd262292410b fastentrypoints-0.12.tar.gz +sha256 d1ce3f6a7bb1a7194c7d826a0ca318176b12e58616d9e3d8f366ad43802787c4 fastentrypoints.py diff --git a/package/python-fastentrypoints/python-fastentrypoints.mk b/package/python-fastentrypoints/python-fastentrypoints.mk new file mode 100644 index 00000000..7fa72892 --- /dev/null +++ b/package/python-fastentrypoints/python-fastentrypoints.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-fastentrypoints +# +################################################################################ + +PYTHON_FASTENTRYPOINTS_VERSION = 0.12 +PYTHON_FASTENTRYPOINTS_SOURCE = fastentrypoints-$(PYTHON_FASTENTRYPOINTS_VERSION).tar.gz +PYTHON_FASTENTRYPOINTS_SITE = https://files.pythonhosted.org/packages/56/59/69d9ae590ca39435d409651314ec13b2abe8127c1db0231c01d034ebb6b0 +PYTHON_FASTENTRYPOINTS_SETUP_TYPE = setuptools +PYTHON_FASTENTRYPOINTS_LICENSE = BSD-2-Clause +PYTHON_FASTENTRYPOINTS_LICENSE_FILES = fastentrypoints.py + +$(eval $(host-python-package)) diff --git a/package/python-fastui/Config.in b/package/python-fastui/Config.in new file mode 100644 index 00000000..9b73544d --- /dev/null +++ b/package/python-fastui/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_FASTUI + bool "python-fastui" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-pydantic -> python-pydantic-core + select BR2_PACKAGE_PYTHON_EMAIL_VALIDATOR # runtime + select BR2_PACKAGE_PYTHON_PYDANTIC # runtime + help + Build better UIs faster. + + https://github.com/pydantic/FastUI diff --git a/package/python-fastui/python-fastui.hash b/package/python-fastui/python-fastui.hash new file mode 100644 index 00000000..50f49824 --- /dev/null +++ b/package/python-fastui/python-fastui.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/fastui/json +md5 c8e7d060c0ad3a7ad1237dac3555b83e fastui-0.5.2.tar.gz +sha256 854a7a7fce4c08efd9caff1a331d222007b3708b133d996528e3f40996c96091 fastui-0.5.2.tar.gz +# Locally computed sha256 checksums +sha256 1c39900853b2c98a5c98e1acc10e54ef06ba2693cdf85e8b28e3ede658888d79 LICENSE diff --git a/package/python-fastui/python-fastui.mk b/package/python-fastui/python-fastui.mk new file mode 100644 index 00000000..e143c997 --- /dev/null +++ b/package/python-fastui/python-fastui.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-fastui +# +################################################################################ + +PYTHON_FASTUI_VERSION = 0.5.2 +PYTHON_FASTUI_SOURCE = fastui-$(PYTHON_FASTUI_VERSION).tar.gz +PYTHON_FASTUI_SITE = https://files.pythonhosted.org/packages/64/11/515c9b5cb6e885f4ba8c325f75b95a754d99b8296bdc9f134dc90a79019f +PYTHON_FASTUI_SETUP_TYPE = pep517 +PYTHON_FASTUI_LICENSE = MIT +PYTHON_FASTUI_LICENSE_FILES = LICENSE +PYTHON_FASTUI_DEPENDENCIES = host-python-hatchling + +$(eval $(python-package)) diff --git a/package/python-filelock/Config.in b/package/python-filelock/Config.in new file mode 100644 index 00000000..57ec0394 --- /dev/null +++ b/package/python-filelock/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_FILELOCK + bool "python-filelock" + help + A platform independent file lock. + + https://github.com/benediktschmitt/py-filelock diff --git a/package/python-filelock/python-filelock.hash b/package/python-filelock/python-filelock.hash new file mode 100644 index 00000000..3013cb67 --- /dev/null +++ b/package/python-filelock/python-filelock.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/filelock/json +md5 368d00d1946b89c910d4bf1da68b5a66 filelock-3.13.1.tar.gz +sha256 521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e filelock-3.13.1.tar.gz +# Locally computed sha256 checksums +sha256 88d9b4eb60579c191ec391ca04c16130572d7eedc4a86daa58bf28c6e14c9bcd LICENSE diff --git a/package/python-filelock/python-filelock.mk b/package/python-filelock/python-filelock.mk new file mode 100644 index 00000000..a32517b1 --- /dev/null +++ b/package/python-filelock/python-filelock.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-filelock +# +################################################################################ + +PYTHON_FILELOCK_VERSION = 3.13.1 +PYTHON_FILELOCK_SOURCE = filelock-$(PYTHON_FILELOCK_VERSION).tar.gz +PYTHON_FILELOCK_SITE = https://files.pythonhosted.org/packages/70/70/41905c80dcfe71b22fb06827b8eae65781783d4a14194bce79d16a013263 +PYTHON_FILELOCK_SETUP_TYPE = pep517 +PYTHON_FILELOCK_LICENSE = Public Domain +PYTHON_FILELOCK_LICENSE_FILES = LICENSE +PYTHON_FILELOCK_DEPENDENCIES = host-python-hatchling host-python-hatch-vcs + +$(eval $(python-package)) diff --git a/package/python-fire/Config.in b/package/python-fire/Config.in new file mode 100644 index 00000000..9c816b0f --- /dev/null +++ b/package/python-fire/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_FIRE + bool "python-fire" + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_TERMCOLOR # runtime + help + A library for automatically generating command line + interfaces. + + https://github.com/google/python-fire diff --git a/package/python-fire/python-fire.hash b/package/python-fire/python-fire.hash new file mode 100644 index 00000000..ce44bef9 --- /dev/null +++ b/package/python-fire/python-fire.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/fire/json +md5 8b24d579bd2a1b344b4f9670fa49ebc8 fire-0.5.0.tar.gz +sha256 a6b0d49e98c8963910021f92bba66f65ab440da2982b78eb1bbf95a0a34aacc6 fire-0.5.0.tar.gz +# Locally computed sha256 checksums +sha256 a5de77b62266bca0bb97bf058992f0b0f308a83a8ca55ee10fbf6bd8ed8f7ed0 LICENSE diff --git a/package/python-fire/python-fire.mk b/package/python-fire/python-fire.mk new file mode 100644 index 00000000..7a6c31e8 --- /dev/null +++ b/package/python-fire/python-fire.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-fire +# +################################################################################ + +PYTHON_FIRE_VERSION = 0.5.0 +PYTHON_FIRE_SOURCE = fire-$(PYTHON_FIRE_VERSION).tar.gz +PYTHON_FIRE_SITE = https://files.pythonhosted.org/packages/94/ed/3b9a10605163f48517931083aee8364d4d6d3bb1aa9b75eb0a4a5e9fbfc1 +PYTHON_FIRE_SETUP_TYPE = setuptools +PYTHON_FIRE_LICENSE = Apache-2.0 +PYTHON_FIRE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-flask-babel/Config.in b/package/python-flask-babel/Config.in new file mode 100644 index 00000000..1248783e --- /dev/null +++ b/package/python-flask-babel/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_PYTHON_FLASK_BABEL + bool "python-flask-babel" + select BR2_PACKAGE_PYTHON_FLASK # runtime + select BR2_PACKAGE_PYTHON_BABEL # runtime + select BR2_PACKAGE_PYTHON_JINJA2 # runtime + select BR2_PACKAGE_PYTHON_PYTZ # 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/package/python-flask-babel/python-flask-babel.hash b/package/python-flask-babel/python-flask-babel.hash new file mode 100644 index 00000000..b9465613 --- /dev/null +++ b/package/python-flask-babel/python-flask-babel.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/flask-babel/json +md5 62116080b8d3a446e1f0f07cbaf74dc1 flask_babel-4.0.0.tar.gz +sha256 dbeab4027a3f4a87678a11686496e98e1492eb793cbdd77ab50f4e9a2602a593 flask_babel-4.0.0.tar.gz +# Locally computed sha256 checksums +sha256 a526100a7047237360a394ba4f70ae801b50ff9b8c9b9e73e7795480a59f6b7e LICENSE diff --git a/package/python-flask-babel/python-flask-babel.mk b/package/python-flask-babel/python-flask-babel.mk new file mode 100644 index 00000000..3970a14d --- /dev/null +++ b/package/python-flask-babel/python-flask-babel.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-flask-babel +# +################################################################################ + +PYTHON_FLASK_BABEL_VERSION = 4.0.0 +PYTHON_FLASK_BABEL_SOURCE = flask_babel-$(PYTHON_FLASK_BABEL_VERSION).tar.gz +PYTHON_FLASK_BABEL_SITE = https://files.pythonhosted.org/packages/58/1a/4c65e3b90bda699a637bfb7fb96818b0a9bbff7636ea91aade67f6020a31 +PYTHON_FLASK_BABEL_LICENSE = BSD-3-Clause +PYTHON_FLASK_BABEL_SETUP_TYPE = pep517 +PYTHON_FLASK_BABEL_LICENSE_FILES = LICENSE +PYTHON_FLASK_BABEL_DEPENDENCIES = host-python-poetry-core + +$(eval $(python-package)) diff --git a/package/python-flask-cors/Config.in b/package/python-flask-cors/Config.in new file mode 100644 index 00000000..fc0908e8 --- /dev/null +++ b/package/python-flask-cors/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_FLASK_CORS + bool "python-flask-cors" + select BR2_PACKAGE_PYTHON_FLASK # runtime + help + A Flask extension adding a decorator for CORS support. + + https://github.com/corydolphin/flask-cors diff --git a/package/python-flask-cors/python-flask-cors.hash b/package/python-flask-cors/python-flask-cors.hash new file mode 100644 index 00000000..ced7d9dc --- /dev/null +++ b/package/python-flask-cors/python-flask-cors.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/flask-cors/json +md5 0ccfa375e744200243d85719b38cdbc6 Flask-Cors-4.0.0.tar.gz +sha256 f268522fcb2f73e2ecdde1ef45e2fd5c71cc48fe03cffb4b441c6d1b40684eb0 Flask-Cors-4.0.0.tar.gz +# Locally computed sha256 checksums +sha256 6e1a1bdc54834c1e0740cbce5d5f6f2cae1c846fd2a7f482b11649594fafbd5d LICENSE diff --git a/package/python-flask-cors/python-flask-cors.mk b/package/python-flask-cors/python-flask-cors.mk new file mode 100644 index 00000000..bfcaf63c --- /dev/null +++ b/package/python-flask-cors/python-flask-cors.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-flask-cors +# +################################################################################ + +PYTHON_FLASK_CORS_VERSION = 4.0.0 +PYTHON_FLASK_CORS_SOURCE = Flask-Cors-$(PYTHON_FLASK_CORS_VERSION).tar.gz +PYTHON_FLASK_CORS_SITE = https://files.pythonhosted.org/packages/c8/b0/bd7130837a921497520f62023c7ba754e441dcedf959a43e6d1fd86e5451 +PYTHON_FLASK_CORS_SETUP_TYPE = setuptools +PYTHON_FLASK_CORS_LICENSE = MIT +PYTHON_FLASK_CORS_LICENSE_FILES = LICENSE +PYTHON_FLASK_CORS_CPE_ID_VENDOR = flask-cors_project +PYTHON_FLASK_CORS_CPE_ID_PRODUCT = flask-cors + +$(eval $(python-package)) diff --git a/package/python-flask-expects-json/Config.in b/package/python-flask-expects-json/Config.in new file mode 100644 index 00000000..55a752bf --- /dev/null +++ b/package/python-flask-expects-json/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_FLASK_EXPECTS_JSON + bool "python-flask-expects-json" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-jsonschema -> python-rpds-py + select BR2_PACKAGE_PYTHON_FLASK # runtime + select BR2_PACKAGE_PYTHON_JSONSCHEMA # runtime + help + Decorator for REST endpoints in flask. Validate JSON request + data. + + https://github.com/fischerfredl/flask-expects-json diff --git a/package/python-flask-expects-json/python-flask-expects-json.hash b/package/python-flask-expects-json/python-flask-expects-json.hash new file mode 100644 index 00000000..e465bcb5 --- /dev/null +++ b/package/python-flask-expects-json/python-flask-expects-json.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/flask-expects-json/json +md5 3a77c4059f21e6e37e652c9dbbdc2e7c flask-expects-json-1.7.0.tar.gz +sha256 4ef186a86f10572a21af82e549546deda024326628b4a96cd14d3a0f71754d62 flask-expects-json-1.7.0.tar.gz +# Locally computed sha256 checksums +sha256 06154a99fdc664107294a0a5e7e68f776078d075408dd32bbeaa7340fdd39e73 LICENSE.txt diff --git a/package/python-flask-expects-json/python-flask-expects-json.mk b/package/python-flask-expects-json/python-flask-expects-json.mk new file mode 100644 index 00000000..55c9bc95 --- /dev/null +++ b/package/python-flask-expects-json/python-flask-expects-json.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-flask-expects-json +# +################################################################################ + +PYTHON_FLASK_EXPECTS_JSON_VERSION = 1.7.0 +PYTHON_FLASK_EXPECTS_JSON_SOURCE = flask-expects-json-$(PYTHON_FLASK_EXPECTS_JSON_VERSION).tar.gz +PYTHON_FLASK_EXPECTS_JSON_SITE = https://files.pythonhosted.org/packages/12/a5/b27cf21d62c2b5a0a32e2f92bde9658e74c34fcc2e004bb0d591f1bf7627 +PYTHON_FLASK_EXPECTS_JSON_SETUP_TYPE = setuptools +PYTHON_FLASK_EXPECTS_JSON_LICENSE = MIT +PYTHON_FLASK_EXPECTS_JSON_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-flask-jsonrpc/Config.in b/package/python-flask-jsonrpc/Config.in new file mode 100644 index 00000000..024fbc4b --- /dev/null +++ b/package/python-flask-jsonrpc/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_FLASK_JSONRPC + bool "python-flask-jsonrpc" + select BR2_PACKAGE_PYTHON_FLASK # runtime + select BR2_PACKAGE_PYTHON_TYPEGUARD # runtime + select BR2_PACKAGE_PYTHON_TYPING_INSPECT # runtime + help + A basic JSON-RPC implementation for your Flask-powered sites. + + https://github.com/cenobites/flask-jsonrpc diff --git a/package/python-flask-jsonrpc/python-flask-jsonrpc.hash b/package/python-flask-jsonrpc/python-flask-jsonrpc.hash new file mode 100644 index 00000000..d5c0e465 --- /dev/null +++ b/package/python-flask-jsonrpc/python-flask-jsonrpc.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/flask-jsonrpc/json +md5 fb6205e6e776802c6000ea7119229066 Flask-JSONRPC-2.2.2.tar.gz +sha256 0cb6ac2804980dc8ac7cbbc3149025f4ec9323227978a4a7ce7b55a9f8263a11 Flask-JSONRPC-2.2.2.tar.gz +# Locally computed sha256 checksums +sha256 5e6175926ba7dde28c7d292a8b0350aa82c40a8c5691a878fe02b0c9c6b43b39 LICENSE +sha256 5e6175926ba7dde28c7d292a8b0350aa82c40a8c5691a878fe02b0c9c6b43b39 COPYING diff --git a/package/python-flask-jsonrpc/python-flask-jsonrpc.mk b/package/python-flask-jsonrpc/python-flask-jsonrpc.mk new file mode 100644 index 00000000..c8167490 --- /dev/null +++ b/package/python-flask-jsonrpc/python-flask-jsonrpc.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-flask-jsonrpc +# +################################################################################ + +PYTHON_FLASK_JSONRPC_VERSION = 2.2.2 +PYTHON_FLASK_JSONRPC_SOURCE = Flask-JSONRPC-$(PYTHON_FLASK_JSONRPC_VERSION).tar.gz +PYTHON_FLASK_JSONRPC_SITE = https://files.pythonhosted.org/packages/a5/7b/8cbd53084a1efb58a1105905a38b0cbefcd3ae13ef2c90c07eedf0fdb6dc +PYTHON_FLASK_JSONRPC_LICENSE = BSD-3-Clause +PYTHON_FLASK_JSONRPC_LICENSE_FILES = LICENSE COPYING +PYTHON_FLASK_JSONRPC_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-flask-login/Config.in b/package/python-flask-login/Config.in new file mode 100644 index 00000000..88c413e2 --- /dev/null +++ b/package/python-flask-login/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_FLASK_LOGIN + bool "python-flask-login" + # runtime dependency + select BR2_PACKAGE_PYTHON_FLASK + help + Flask-Login provides user session management for Flask. + + https://github.com/maxcountryman/flask-login diff --git a/package/python-flask-login/python-flask-login.hash b/package/python-flask-login/python-flask-login.hash new file mode 100644 index 00000000..af034ae7 --- /dev/null +++ b/package/python-flask-login/python-flask-login.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/flask-login/json +md5 689564b8b7f3782f0db382b7aa85bbc2 Flask-Login-0.6.3.tar.gz +sha256 5e23d14a607ef12806c699590b89d0f0e0d67baeec599d75947bf9c147330333 Flask-Login-0.6.3.tar.gz +# Locally computed sha256 checksums +sha256 7a9dfb9c5da204ed1370f3b62c13e2992a12da1da707f47e156897eeb4344e5b LICENSE diff --git a/package/python-flask-login/python-flask-login.mk b/package/python-flask-login/python-flask-login.mk new file mode 100644 index 00000000..ed10c98f --- /dev/null +++ b/package/python-flask-login/python-flask-login.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-flask-login +# +################################################################################ + +PYTHON_FLASK_LOGIN_VERSION = 0.6.3 +PYTHON_FLASK_LOGIN_SOURCE = Flask-Login-$(PYTHON_FLASK_LOGIN_VERSION).tar.gz +PYTHON_FLASK_LOGIN_SITE = https://files.pythonhosted.org/packages/c3/6e/2f4e13e373bb49e68c02c51ceadd22d172715a06716f9299d9df01b6ddb2 +PYTHON_FLASK_LOGIN_LICENSE = MIT +PYTHON_FLASK_LOGIN_LICENSE_FILES = LICENSE +PYTHON_FLASK_LOGIN_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-flask-smorest/Config.in b/package/python-flask-smorest/Config.in new file mode 100644 index 00000000..a8ccfbd9 --- /dev/null +++ b/package/python-flask-smorest/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_FLASK_SMOREST + bool "python-flask-smorest" + select BR2_PACKAGE_PYTHON_APISPEC # runtime + select BR2_PACKAGE_PYTHON_FLASK # runtime + select BR2_PACKAGE_PYTHON_MARSHMALLOW # runtime + select BR2_PACKAGE_PYTHON_WEBARGS # runtime + select BR2_PACKAGE_PYTHON_WERKZEUG # runtime + help + Flask/Marshmallow-based REST API framework. + + https://github.com/marshmallow-code/flask-smorest diff --git a/package/python-flask-smorest/python-flask-smorest.hash b/package/python-flask-smorest/python-flask-smorest.hash new file mode 100644 index 00000000..b468c48f --- /dev/null +++ b/package/python-flask-smorest/python-flask-smorest.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/flask-smorest/json +md5 b10a7a0bdee4505dec3cc7652560bc9e flask-smorest-0.42.3.tar.gz +sha256 736ef072bd5522de750a5a9d9f1bfb6d750d05c66e1b3702bc7a20e4277af9bf flask-smorest-0.42.3.tar.gz +# Locally computed sha256 checksums +sha256 40999ea1d9c1b8202fa44f8e6849a557e22df892481e067abf999879064b9521 LICENSE diff --git a/package/python-flask-smorest/python-flask-smorest.mk b/package/python-flask-smorest/python-flask-smorest.mk new file mode 100644 index 00000000..6eb1abc6 --- /dev/null +++ b/package/python-flask-smorest/python-flask-smorest.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-flask-smorest +# +################################################################################ + +PYTHON_FLASK_SMOREST_VERSION = 0.42.3 +PYTHON_FLASK_SMOREST_SOURCE = flask-smorest-$(PYTHON_FLASK_SMOREST_VERSION).tar.gz +PYTHON_FLASK_SMOREST_SITE = https://files.pythonhosted.org/packages/25/91/da55ec1288e821069ab61b6db4acfa171fa268c426523bb4f3a8a91210db +PYTHON_FLASK_SMOREST_SETUP_TYPE = setuptools +PYTHON_FLASK_SMOREST_LICENSE = MIT +PYTHON_FLASK_SMOREST_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-flask-sqlalchemy/Config.in b/package/python-flask-sqlalchemy/Config.in new file mode 100644 index 00000000..fa4a0351 --- /dev/null +++ b/package/python-flask-sqlalchemy/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_FLASK_SQLALCHEMY + bool "python-flask-sqlalchemy" + select BR2_PACKAGE_PYTHON_FLASK # runtime + select BR2_PACKAGE_PYTHON_SQLALCHEMY # runtime + help + Flask-SQLAlchemy is a Flask microframework extension which + adds support for the SQLAlchemy SQL toolkit/ORM. + + http://github.com/mitsuhiko/flask-sqlalchemy diff --git a/package/python-flask-sqlalchemy/python-flask-sqlalchemy.hash b/package/python-flask-sqlalchemy/python-flask-sqlalchemy.hash new file mode 100644 index 00000000..637733d0 --- /dev/null +++ b/package/python-flask-sqlalchemy/python-flask-sqlalchemy.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/flask-sqlalchemy/json +md5 b2439ba29a86fd594e0de4fc0e42ceb6 flask_sqlalchemy-3.1.1.tar.gz +sha256 e4b68bb881802dda1a7d878b2fc84c06d1ee57fb40b874d3dc97dabfa36b8312 flask_sqlalchemy-3.1.1.tar.gz +# Locally computed sha256 checksums +sha256 489a8e1108509ed98a37bb983e11e0f7e1d31f0bd8f99a79c8448e7ff37d07ea LICENSE.rst diff --git a/package/python-flask-sqlalchemy/python-flask-sqlalchemy.mk b/package/python-flask-sqlalchemy/python-flask-sqlalchemy.mk new file mode 100644 index 00000000..2ee53d4b --- /dev/null +++ b/package/python-flask-sqlalchemy/python-flask-sqlalchemy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-flask-sqlalchemy +# +################################################################################ + +PYTHON_FLASK_SQLALCHEMY_VERSION = 3.1.1 +PYTHON_FLASK_SQLALCHEMY_SOURCE = flask_sqlalchemy-$(PYTHON_FLASK_SQLALCHEMY_VERSION).tar.gz +PYTHON_FLASK_SQLALCHEMY_SITE = https://files.pythonhosted.org/packages/91/53/b0a9fcc1b1297f51e68b69ed3b7c3c40d8c45be1391d77ae198712914392 +PYTHON_FLASK_SQLALCHEMY_SETUP_TYPE = setuptools +PYTHON_FLASK_SQLALCHEMY_LICENSE = BSD-3-Clause +PYTHON_FLASK_SQLALCHEMY_LICENSE_FILES = LICENSE.rst + +$(eval $(python-package)) diff --git a/package/python-flask-wtf/Config.in b/package/python-flask-wtf/Config.in new file mode 100644 index 00000000..4a8566a2 --- /dev/null +++ b/package/python-flask-wtf/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_FLASK_WTF + bool "python-flask-wtf" + select BR2_PACKAGE_PYTHON_FLASK # runtime + select BR2_PACKAGE_PYTHON_ITSDANGEROUS # runtime + select BR2_PACKAGE_PYTHON_WTFORMS # runtime + help + Simple integration of Flask and WTForms. + + https://github.com/wtforms/flask-wtf diff --git a/package/python-flask-wtf/python-flask-wtf.hash b/package/python-flask-wtf/python-flask-wtf.hash new file mode 100644 index 00000000..f4267579 --- /dev/null +++ b/package/python-flask-wtf/python-flask-wtf.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/flask-wtf/json +md5 cbdd73ec30c7b3b887dc12026fd4954c flask_wtf-1.2.1.tar.gz +sha256 8bb269eb9bb46b87e7c8233d7e7debdf1f8b74bf90cc1789988c29b37a97b695 flask_wtf-1.2.1.tar.gz +# Locally computed sha256 checksums +sha256 d5f19036451578cb36eeef04c99ebf7d7ca2e70dcf043636519bc420e15a7c62 LICENSE.rst diff --git a/package/python-flask-wtf/python-flask-wtf.mk b/package/python-flask-wtf/python-flask-wtf.mk new file mode 100644 index 00000000..bb32d55e --- /dev/null +++ b/package/python-flask-wtf/python-flask-wtf.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-flask-wtf +# +################################################################################ + +PYTHON_FLASK_WTF_VERSION = 1.2.1 +PYTHON_FLASK_WTF_SOURCE = flask_wtf-$(PYTHON_FLASK_WTF_VERSION).tar.gz +PYTHON_FLASK_WTF_SITE = https://files.pythonhosted.org/packages/9b/ef/b6ec35e02f479f6e76e02ede14594c9cfa5e6dcbab6ea0e82fa413993a2a +PYTHON_FLASK_WTF_LICENSE = BSD-3-Clause +PYTHON_FLASK_WTF_LICENSE_FILES = LICENSE.rst +PYTHON_FLASK_WTF_SETUP_TYPE = pep517 +PYTHON_FLASK_WTF_DEPENDENCIES = host-python-hatchling + +$(eval $(python-package)) diff --git a/package/python-flask/Config.in b/package/python-flask/Config.in new file mode 100644 index 00000000..8dc2cef3 --- /dev/null +++ b/package/python-flask/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_PYTHON_FLASK + bool "python-flask" + select BR2_PACKAGE_PYTHON_BLINKER # runtime + select BR2_PACKAGE_PYTHON_CLICK # runtime + select BR2_PACKAGE_PYTHON_JINJA2 # runtime + select BR2_PACKAGE_PYTHON_WERKZEUG # runtime + select BR2_PACKAGE_PYTHON_ITSDANGEROUS # runtime + select BR2_PACKAGE_PYTHON3_SSL + select BR2_PACKAGE_PYTHON3_ZLIB + help + Flask is a microframework for Python based on Werkzeug, + Jinja 2 and good intentions. + + https://palletsprojects.com/p/flask diff --git a/package/python-flask/python-flask.hash b/package/python-flask/python-flask.hash new file mode 100644 index 00000000..3b5afc48 --- /dev/null +++ b/package/python-flask/python-flask.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/flask/json +md5 4848c9d5305197822b5b00c8e9a6d9aa flask-3.0.0.tar.gz +sha256 cfadcdb638b609361d29ec22360d6070a77d7463dcb3ab08d2c2f2f168845f58 flask-3.0.0.tar.gz +# Locally computed sha256 checksums +sha256 489a8e1108509ed98a37bb983e11e0f7e1d31f0bd8f99a79c8448e7ff37d07ea LICENSE.rst +sha256 c9362a7258a11c84a8f7e825ccbbb5c425c6fc02368d3aee6494533fb99ba1f4 docs/license.rst diff --git a/package/python-flask/python-flask.mk b/package/python-flask/python-flask.mk new file mode 100644 index 00000000..1372d915 --- /dev/null +++ b/package/python-flask/python-flask.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-flask +# +################################################################################ + +PYTHON_FLASK_VERSION = 3.0.0 +PYTHON_FLASK_SOURCE = flask-$(PYTHON_FLASK_VERSION).tar.gz +PYTHON_FLASK_SITE = https://files.pythonhosted.org/packages/d8/09/c1a7354d3925a3c6c8cfdebf4245bae67d633ffda1ba415add06ffc839c5 +PYTHON_FLASK_SETUP_TYPE = flit +PYTHON_FLASK_LICENSE = BSD-3-Clause +PYTHON_FLASK_LICENSE_FILES = LICENSE.rst docs/license.rst +PYTHON_FLASK_CPE_ID_VENDOR = palletsprojects +PYTHON_FLASK_CPE_ID_PRODUCT = flask + +$(eval $(python-package)) diff --git a/package/python-flatbuffers/Config.in b/package/python-flatbuffers/Config.in new file mode 100644 index 00000000..b24b5aaf --- /dev/null +++ b/package/python-flatbuffers/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_FLATBUFFERS + bool "python-flatbuffers" + help + The FlatBuffers serialization format for Python. + + https://github.com/google/flatbuffers diff --git a/package/python-flatbuffers/python-flatbuffers.hash b/package/python-flatbuffers/python-flatbuffers.hash new file mode 100644 index 00000000..ccc754f9 --- /dev/null +++ b/package/python-flatbuffers/python-flatbuffers.hash @@ -0,0 +1,3 @@ +# md5, sha256 from https://pypi.org/pypi/flatbuffers/json +md5 3391732d344155cc070892fae5f7166c flatbuffers-2.0.7.tar.gz +sha256 0ae7d69c5b82bf41962ca5fde9cc43033bc9501311d975fd5a25e8a7d29c1245 flatbuffers-2.0.7.tar.gz diff --git a/package/python-flatbuffers/python-flatbuffers.mk b/package/python-flatbuffers/python-flatbuffers.mk new file mode 100644 index 00000000..65f3d095 --- /dev/null +++ b/package/python-flatbuffers/python-flatbuffers.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-flatbuffers +# +################################################################################ + +PYTHON_FLATBUFFERS_VERSION = 2.0.7 +PYTHON_FLATBUFFERS_SOURCE = flatbuffers-$(PYTHON_FLATBUFFERS_VERSION).tar.gz +PYTHON_FLATBUFFERS_SITE = https://files.pythonhosted.org/packages/d1/90/0532e737a11e1dc50e9e352c3ccc97338cb75991f83279c2edbc9234e022 +PYTHON_FLATBUFFERS_LICENSE = Apache-2.0 +PYTHON_FLATBUFFERS_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-flit-core/python-flit-core.hash b/package/python-flit-core/python-flit-core.hash new file mode 100644 index 00000000..4d4907f5 --- /dev/null +++ b/package/python-flit-core/python-flit-core.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/flit_core/json +md5 3bc52f1952b9a78361114147da63c35b flit_core-3.9.0.tar.gz +sha256 72ad266176c4a3fcfab5f2930d76896059851240570ce9a98733b658cb786eba flit_core-3.9.0.tar.gz +# Locally computed +sha256 35b4f1dec512e617077fd6980dbb43ef8c2887adc5d0185edb4c04da175dd816 LICENSE diff --git a/package/python-flit-core/python-flit-core.mk b/package/python-flit-core/python-flit-core.mk new file mode 100644 index 00000000..34e58d03 --- /dev/null +++ b/package/python-flit-core/python-flit-core.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# python-flit-core +# +################################################################################ + +PYTHON_FLIT_CORE_VERSION = 3.9.0 +PYTHON_FLIT_CORE_SOURCE = flit_core-$(PYTHON_FLIT_CORE_VERSION).tar.gz +PYTHON_FLIT_CORE_SITE = https://files.pythonhosted.org/packages/c4/e6/c1ac50fe3eebb38a155155711e6e864e254ce4b6e17fe2429b4c4d5b9e80 +PYTHON_FLIT_CORE_LICENSE = BSD-3-Clause +PYTHON_FLIT_CORE_LICENSE_FILES = LICENSE +PYTHON_FLIT_CORE_SETUP_TYPE = flit-bootstrap + +# Use flit built in bootstrap_install for installing host-python-flit-core. +# This is due to host-python-installer depending on host-python-flit-core. +define HOST_PYTHON_FLIT_CORE_INSTALL_CMDS + cd $($(PKG)_BUILDDIR)/; \ + $(HOST_PKG_PYTHON_FLIT_BOOTSTRAP_ENV) \ + $(HOST_DIR)/bin/python3 \ + -m bootstrap_install dist/* \ + --installdir=$(HOST_DIR)/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages +endef + +$(eval $(host-python-package)) diff --git a/package/python-flup/Config.in b/package/python-flup/Config.in new file mode 100644 index 00000000..50d1dfa3 --- /dev/null +++ b/package/python-flup/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_FLUP + bool "python-flup" + help + flup provides of a collection of WSGI modules for Python. + It allows a webserver to use scgi-mod and fastcgi-mod + with python. + + https://pypi.python.org/pypi/flup diff --git a/package/python-flup/python-flup.hash b/package/python-flup/python-flup.hash new file mode 100644 index 00000000..b28f05ac --- /dev/null +++ b/package/python-flup/python-flup.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/flup/json +md5 a64e7a6374e043480ee92534c735964e flup-1.0.3.tar.gz +sha256 5eb09f26eb0751f8380d8ac43d1dfb20e1d42eca0fa45ea9289fa532a79cd159 flup-1.0.3.tar.gz +# Locally computed sha256 checksums +sha256 66a60ebc732165d199ec018fb9876d9f8168a5a8575375e64cc1b3d78c32b481 PKG-INFO diff --git a/package/python-flup/python-flup.mk b/package/python-flup/python-flup.mk new file mode 100644 index 00000000..2ea6a1a3 --- /dev/null +++ b/package/python-flup/python-flup.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-flup +# +################################################################################ + +PYTHON_FLUP_VERSION = 1.0.3 +PYTHON_FLUP_SOURCE = flup-$(PYTHON_FLUP_VERSION).tar.gz +PYTHON_FLUP_SITE = https://files.pythonhosted.org/packages/bb/b5/26cc8f7baf0ddebd3e61a354a2bcc692cfe8005123c37ee3d8507c4c7511 +PYTHON_FLUP_LICENSE = BSD-2-Clause, MIT +PYTHON_FLUP_LICENSE_FILES = PKG-INFO +PYTHON_FLUP_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-fonttools/Config.in b/package/python-fonttools/Config.in new file mode 100644 index 00000000..64de1efe --- /dev/null +++ b/package/python-fonttools/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_FONTTOOLS + bool "python-fonttools" + help + Tools to manipulate font files. + + https://github.com/fonttools/fonttools diff --git a/package/python-fonttools/python-fonttools.hash b/package/python-fonttools/python-fonttools.hash new file mode 100644 index 00000000..74766564 --- /dev/null +++ b/package/python-fonttools/python-fonttools.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/fonttools/json +md5 767059d1d373ade070d38295feaa3f92 fonttools-4.47.0.tar.gz +sha256 ec13a10715eef0e031858c1c23bfaee6cba02b97558e4a7bfa089dba4a8c2ebf fonttools-4.47.0.tar.gz +# Locally computed sha256 checksums +sha256 6787208f83f659ccbc2223b2fde952ffa6f7e8aca62f1a8a2bf5bc51bb1b2383 LICENSE diff --git a/package/python-fonttools/python-fonttools.mk b/package/python-fonttools/python-fonttools.mk new file mode 100644 index 00000000..e2472aa1 --- /dev/null +++ b/package/python-fonttools/python-fonttools.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-fonttools +# +################################################################################ + +PYTHON_FONTTOOLS_VERSION = 4.47.0 +PYTHON_FONTTOOLS_SOURCE = fonttools-$(PYTHON_FONTTOOLS_VERSION).tar.gz +PYTHON_FONTTOOLS_SITE = https://files.pythonhosted.org/packages/dd/e5/9adc30ebca9009d5ad36c7e74462ee5fc51985ca9a845fd26f9f5c99b3df +PYTHON_FONTTOOLS_SETUP_TYPE = setuptools +PYTHON_FONTTOOLS_LICENSE = MIT +PYTHON_FONTTOOLS_LICENSE_FILES = LICENSE +PYTHON_FONTTOOLS_DEPENDENCIES = host-python-cython +PYTHON_FONTTOOLS_ENV = FONTTOOLS_WITH_CYTHON=1 + +$(eval $(python-package)) diff --git a/package/python-frozenlist/Config.in b/package/python-frozenlist/Config.in new file mode 100644 index 00000000..05714199 --- /dev/null +++ b/package/python-frozenlist/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_FROZENLIST + bool "python-frozenlist" + help + A list-like structure which implements + collections.abc.MutableSequence. + + https://github.com/aio-libs/frozenlist diff --git a/package/python-frozenlist/python-frozenlist.hash b/package/python-frozenlist/python-frozenlist.hash new file mode 100644 index 00000000..40a87d2e --- /dev/null +++ b/package/python-frozenlist/python-frozenlist.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/frozenlist/json +md5 e64b421e8e571623695cd414515f0081 frozenlist-1.4.1.tar.gz +sha256 c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b frozenlist-1.4.1.tar.gz +# Locally computed sha256 checksums +sha256 6fd5243e92dd7f98ec69c7ac377728e74905709ff527a5bf98d6d0263c04f5b6 LICENSE diff --git a/package/python-frozenlist/python-frozenlist.mk b/package/python-frozenlist/python-frozenlist.mk new file mode 100644 index 00000000..11dcee9d --- /dev/null +++ b/package/python-frozenlist/python-frozenlist.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# python-frozenlist +# +################################################################################ + +PYTHON_FROZENLIST_VERSION = 1.4.1 +PYTHON_FROZENLIST_SOURCE = frozenlist-$(PYTHON_FROZENLIST_VERSION).tar.gz +PYTHON_FROZENLIST_SITE = https://files.pythonhosted.org/packages/cf/3d/2102257e7acad73efc4a0c306ad3953f68c504c16982bbdfee3ad75d8085 +PYTHON_FROZENLIST_SETUP_TYPE = pep517 +PYTHON_FROZENLIST_LICENSE = Apache-2.0 +PYTHON_FROZENLIST_LICENSE_FILES = LICENSE +PYTHON_FROZENLIST_DEPENDENCIES = \ + host-python-expandvars \ + host-python-setuptools +# C code generation required Cython 3 which we don't have in Buildroot yet. +PYTHON_FROZENLIST_BUILD_OPTS = -C=pure-python=true + +$(eval $(python-package)) diff --git a/package/python-future/Config.in b/package/python-future/Config.in new file mode 100644 index 00000000..8a3fd38f --- /dev/null +++ b/package/python-future/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_FUTURE + bool "python-future" + help + Easy, clean, reliable Python 2/3 compatibility. + + http://python-future.org diff --git a/package/python-future/python-future.hash b/package/python-future/python-future.hash new file mode 100644 index 00000000..3b2bbb02 --- /dev/null +++ b/package/python-future/python-future.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/future/json +md5 dedcb70d14b23388670d54145aab8be4 future-0.18.3.tar.gz +sha256 34a17436ed1e96697a86f9de3d15a3b0be01d8bc8de9c1dffd59fb8234ed5307 future-0.18.3.tar.gz +# Locally computed sha256 checksums +sha256 916e561392d48471b9c23437f56e2652f320cb3b119ceaa162edf41016f746b9 LICENSE.txt diff --git a/package/python-future/python-future.mk b/package/python-future/python-future.mk new file mode 100644 index 00000000..57bf13d8 --- /dev/null +++ b/package/python-future/python-future.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-future +# +################################################################################ + +PYTHON_FUTURE_VERSION = 0.18.3 +PYTHON_FUTURE_SOURCE = future-$(PYTHON_FUTURE_VERSION).tar.gz +PYTHON_FUTURE_SITE = https://files.pythonhosted.org/packages/8f/2e/cf6accf7415237d6faeeebdc7832023c90e0282aa16fd3263db0eb4715ec +PYTHON_FUTURE_SETUP_TYPE = setuptools +PYTHON_FUTURE_LICENSE = MIT +PYTHON_FUTURE_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-gast/python-gast.hash b/package/python-gast/python-gast.hash new file mode 100644 index 00000000..9ce52969 --- /dev/null +++ b/package/python-gast/python-gast.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/gast/json +md5 907c689e3fdbc7a48cc010e665195baa gast-0.5.4.tar.gz +sha256 9c270fe5f4b130969b54174de7db4e764b09b4f7f67ccfc32480e29f78348d97 gast-0.5.4.tar.gz +# Locally computed sha256 checksums +sha256 6a04bbabd9b48bea6bf7c0bd3f3a062e1476b3c403a746448fd69b0d902e148f LICENSE diff --git a/package/python-gast/python-gast.mk b/package/python-gast/python-gast.mk new file mode 100644 index 00000000..0db1dbe9 --- /dev/null +++ b/package/python-gast/python-gast.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-gast +# +################################################################################ + +PYTHON_GAST_VERSION = 0.5.4 +PYTHON_GAST_SOURCE = gast-$(PYTHON_GAST_VERSION).tar.gz +PYTHON_GAST_SITE = https://files.pythonhosted.org/packages/e4/41/f26f62ebef1a80148e20951a6e9ef4d0ebbe2090124bc143da26e12a934c +PYTHON_GAST_SETUP_TYPE = setuptools +PYTHON_GAST_LICENSE = BSD-3-Clause +PYTHON_GAST_LICENSE_FILES = LICENSE + +$(eval $(host-python-package)) diff --git a/package/python-git/Config.in b/package/python-git/Config.in new file mode 100644 index 00000000..183b377c --- /dev/null +++ b/package/python-git/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_GIT + bool "python-git" + depends on BR2_USE_MMU # git + select BR2_PACKAGE_GIT # runtime + select BR2_PACKAGE_PYTHON_GITDB2 # runtime + help + GitPython is a python library used to interact with git + repositories, high-level like git-porcelain, or low-level + like git-plumbing. + + https://github.com/gitpython-developers/GitPython diff --git a/package/python-git/python-git.hash b/package/python-git/python-git.hash new file mode 100644 index 00000000..a9798717 --- /dev/null +++ b/package/python-git/python-git.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/gitpython/json +md5 db4f2a27c8abc4a7e25504e3aeab4a84 GitPython-3.1.40.tar.gz +sha256 22b126e9ffb671fdd0c129796343a02bf67bf2994b35449ffc9321aa755e18a4 GitPython-3.1.40.tar.gz +# Locally computed sha256 checksums +sha256 86fc94c321a9afbc11514713511bafded225f25100dcc0f7350e82bc231b8beb LICENSE diff --git a/package/python-git/python-git.mk b/package/python-git/python-git.mk new file mode 100644 index 00000000..91d6b07a --- /dev/null +++ b/package/python-git/python-git.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-git +# +################################################################################ + +PYTHON_GIT_VERSION = 3.1.40 +PYTHON_GIT_SOURCE = GitPython-$(PYTHON_GIT_VERSION).tar.gz +PYTHON_GIT_SITE = https://files.pythonhosted.org/packages/0d/b2/37265877ae607a2cbf9a471f4581dbf5ed13a501b90cb4c773f9ccfff3ea +PYTHON_GIT_LICENSE = BSD-3-Clause +PYTHON_GIT_LICENSE_FILES = LICENSE +PYTHON_GIT_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-gitdb2/Config.in b/package/python-gitdb2/Config.in new file mode 100644 index 00000000..4a87cc8e --- /dev/null +++ b/package/python-gitdb2/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_GITDB2 + bool "python-gitdb2" + select BR2_PACKAGE_PYTHON_SMMAP2 # runtime + select BR2_PACKAGE_PYTHON3_ZLIB + help + GitDB allows you to access bare git repositories for reading + and writing. It aims at allowing full access to loose objects + as well as packs with performance and scalability in mind. It + operates exclusively on streams, allowing to handle large + objects with a small memory footprint. + + https://github.com/gitpython-developers/gitdb diff --git a/package/python-gitdb2/python-gitdb2.hash b/package/python-gitdb2/python-gitdb2.hash new file mode 100644 index 00000000..c70c1aad --- /dev/null +++ b/package/python-gitdb2/python-gitdb2.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/gitdb/json +md5 6071755f2899cd4882b83a070b045bac gitdb-4.0.11.tar.gz +sha256 bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b gitdb-4.0.11.tar.gz +# Locally computed sha256 checksums +sha256 efd29f596a08e8857e68e7694a50bcda72839792da7c3f041bcbff5f18009239 LICENSE diff --git a/package/python-gitdb2/python-gitdb2.mk b/package/python-gitdb2/python-gitdb2.mk new file mode 100644 index 00000000..424f37f8 --- /dev/null +++ b/package/python-gitdb2/python-gitdb2.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-gitdb2 +# +################################################################################ + +PYTHON_GITDB2_VERSION = 4.0.11 +PYTHON_GITDB2_SOURCE = gitdb-$(PYTHON_GITDB2_VERSION).tar.gz +PYTHON_GITDB2_SITE = https://files.pythonhosted.org/packages/19/0d/bbb5b5ee188dec84647a4664f3e11b06ade2bde568dbd489d9d64adef8ed +PYTHON_GITDB2_SETUP_TYPE = setuptools +PYTHON_GITDB2_LICENSE = BSD-3-Clause +PYTHON_GITDB2_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-glslang/python-glslang.hash b/package/python-glslang/python-glslang.hash new file mode 100644 index 00000000..df912793 --- /dev/null +++ b/package/python-glslang/python-glslang.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 592c98aeb03b3e81597ddaf83633c4e63068d14b18a766fd11033bad73127162 python-glslang-11.13.0.tar.gz +sha256 adb783e734e906d1f46db5df29991dbde84bdb0ceab502ac2febb44fe3c2b5f4 LICENSE.txt diff --git a/package/python-glslang/python-glslang.mk b/package/python-glslang/python-glslang.mk new file mode 100644 index 00000000..94f480e3 --- /dev/null +++ b/package/python-glslang/python-glslang.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-glslang +# +################################################################################ + +PYTHON_GLSLANG_VERSION = 11.13.0 +PYTHON_GLSLANG_SITE = $(call github,KhronosGroup,glslang,$(PYTHON_GLSLANG_VERSION)) +PYTHON_GLSLANG_LICENSE = BSD-3-Clause +PYTHON_GLSLANG_LICENSE_FILES = LICENSE.txt +PYTHON_GLSLANG_DEPENDENCIES = host-python3 + +$(eval $(host-cmake-package)) diff --git a/package/python-gnupg/Config.in b/package/python-gnupg/Config.in new file mode 100644 index 00000000..23479297 --- /dev/null +++ b/package/python-gnupg/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_PYTHON_GNUPG + bool "python-gnupg" + select BR2_PACKAGE_GNUPG2 if BR2_PACKAGE_GNUPG2_DEPENDS && !BR2_PACKAGE_GNUPG # runtime + select BR2_PACKAGE_GNUPG if !BR2_PACKAGE_GNUPG2_DEPENDS # runtime + help + A wrapper for the Gnu Privacy Guard (GPG or GnuPG). + + The gnupg module allows Python programs to make use of the + functionality provided by the GNU Privacy Guard (abbreviated + GPG or GnuPG). Using this module, Python programs can + encrypt and decrypt data, digitally sign documents and + verify digital signatures, manage (generate, list and + delete) encryption keys, using Public Key Infrastructure + (PKI) encryption technology based on OpenPGP. + + https://docs.red-dove.com/python-gnupg/ diff --git a/package/python-gnupg/python-gnupg.hash b/package/python-gnupg/python-gnupg.hash new file mode 100644 index 00000000..4a194ad4 --- /dev/null +++ b/package/python-gnupg/python-gnupg.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/python-gnupg/json +md5 b263ea268692cfe687d29d52daab4770 python-gnupg-0.5.2.tar.gz +sha256 01d8013931c9fa3f45824bbea7054c03d6e11f258a72e7e086e168dbcb91854c python-gnupg-0.5.2.tar.gz +# Locally computed sha256 checksums +sha256 4104ca980dbca7603fc553078378eb14566a76f819d033d7bff89fd6a97e181b LICENSE.txt diff --git a/package/python-gnupg/python-gnupg.mk b/package/python-gnupg/python-gnupg.mk new file mode 100644 index 00000000..ddf2287f --- /dev/null +++ b/package/python-gnupg/python-gnupg.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-gnupg +# +################################################################################ + +PYTHON_GNUPG_VERSION = 0.5.2 +PYTHON_GNUPG_SITE = https://files.pythonhosted.org/packages/b1/5d/4425390ad81d22b330a1b0df204c4d39fb3cb7c39e081d51e9f7426ce716 +PYTHON_GNUPG_LICENSE = BSD-3-Clause +PYTHON_GNUPG_LICENSE_FILES = LICENSE.txt +PYTHON_GNUPG_CPE_ID_VENDOR = python +PYTHON_GNUPG_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-gobject/Config.in b/package/python-gobject/Config.in new file mode 100644 index 00000000..33545356 --- /dev/null +++ b/package/python-gobject/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_PYTHON_GOBJECT + bool "python-gobject" + depends on BR2_USE_MMU # libglib2, gobject-introspection + depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS # gobject-introspection + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # gobject-introspection + depends on BR2_HOST_GCC_AT_LEAST_8 # gobject-introspection -> host-qemu + depends on BR2_TOOLCHAIN_USES_GLIBC # gobject-introspection + select BR2_PACKAGE_GOBJECT_INTROSPECTION + select BR2_PACKAGE_LIBGLIB2 + help + Python bindings for the GLib/GObject library + + https://wiki.gnome.org/action/show/Projects/PyGObject + +comment "python-gobject needs a glibc toolchain, gcc >= 4.9, host gcc >= 8" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_HOST_GCC_AT_LEAST_8 diff --git a/package/python-gobject/python-gobject.hash b/package/python-gobject/python-gobject.hash new file mode 100644 index 00000000..2fb9d38a --- /dev/null +++ b/package/python-gobject/python-gobject.hash @@ -0,0 +1,3 @@ +# from https://download.gnome.org/sources/pygobject/3.42/pygobject-3.42.2.sha256sum +sha256 ade8695e2a7073849dd0316d31d8728e15e1e0bc71d9ff6d1c09e86be52bc957 pygobject-3.42.2.tar.xz +sha256 32434afcc8666ba060e111d715bfdb6c2d5dd8a35fa4d3ab8ad67d8f850d2f2b COPYING diff --git a/package/python-gobject/python-gobject.mk b/package/python-gobject/python-gobject.mk new file mode 100644 index 00000000..a12ce5c1 --- /dev/null +++ b/package/python-gobject/python-gobject.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# python-gobject +# +################################################################################ + +PYTHON_GOBJECT_VERSION_MAJOR = 3.42 +PYTHON_GOBJECT_VERSION = $(PYTHON_GOBJECT_VERSION_MAJOR).2 +PYTHON_GOBJECT_SOURCE = pygobject-$(PYTHON_GOBJECT_VERSION).tar.xz +PYTHON_GOBJECT_SITE = https://download.gnome.org/sources/pygobject/$(PYTHON_GOBJECT_VERSION_MAJOR) +PYTHON_GOBJECT_LICENSE = LGPL-2.1+ +PYTHON_GOBJECT_LICENSE_FILES = COPYING +PYTHON_GOBJECT_INSTALL_STAGING = YES +PYTHON_GOBJECT_DEPENDENCIES = \ + gobject-introspection \ + host-pkgconf \ + libglib2 \ + python3 + +PYTHON_GOBJECT_CONF_OPTS += \ + -Dpycairo=disabled \ + -Dtests=false + +# A sysconfigdata_name must be manually specified or the resulting .so +# will have a x86_64 prefix, which causes "import gi" to fail. +# A pythonpath must be specified or the host python path will be used resulting +# in a "not a valid python" error. +PYTHON_GOBJECT_CONF_ENV += \ + _PYTHON_SYSCONFIGDATA_NAME=$(PKG_PYTHON_SYSCONFIGDATA_NAME) \ + PYTHONPATH=$(PYTHON3_PATH) + +$(eval $(meson-package)) diff --git a/package/python-google-api-core/Config.in b/package/python-google-api-core/Config.in new file mode 100644 index 00000000..689923a2 --- /dev/null +++ b/package/python-google-api-core/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_GOOGLE_API_CORE + bool "python-google-api-core" + select BR2_PACKAGE_PYTHON_GOOGLE_AUTH # runtime + select BR2_PACKAGE_PYTHON_GOOGLEAPIS_COMMON_PROTOS # runtime + select BR2_PACKAGE_PYTHON_PROTOBUF # runtime + select BR2_PACKAGE_PYTHON_REQUESTS # runtime + help + Google API client core library. + + https://github.com/googleapis/python-api-core diff --git a/package/python-google-api-core/python-google-api-core.hash b/package/python-google-api-core/python-google-api-core.hash new file mode 100644 index 00000000..5a1cd7f1 --- /dev/null +++ b/package/python-google-api-core/python-google-api-core.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/google-api-core/json +md5 58a4ce34a405e514cdb5295c80834cfd google-api-core-2.15.0.tar.gz +sha256 abc978a72658f14a2df1e5e12532effe40f94f868f6e23d95133bd6abcca35ca google-api-core-2.15.0.tar.gz +# Locally computed sha256 checksums +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/python-google-api-core/python-google-api-core.mk b/package/python-google-api-core/python-google-api-core.mk new file mode 100644 index 00000000..84042d8d --- /dev/null +++ b/package/python-google-api-core/python-google-api-core.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-google-api-core +# +################################################################################ + +PYTHON_GOOGLE_API_CORE_VERSION = 2.15.0 +PYTHON_GOOGLE_API_CORE_SOURCE = google-api-core-$(PYTHON_GOOGLE_API_CORE_VERSION).tar.gz +PYTHON_GOOGLE_API_CORE_SITE = https://files.pythonhosted.org/packages/2c/e4/56b14d35057a23cab9067dd8fb841407d05d32b5d6c7a3c66c1360e8a7c0 +PYTHON_GOOGLE_API_CORE_SETUP_TYPE = setuptools +PYTHON_GOOGLE_API_CORE_LICENSE = Apache-2.0 +PYTHON_GOOGLE_API_CORE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-google-auth/Config.in b/package/python-google-auth/Config.in new file mode 100644 index 00000000..eb5be9cd --- /dev/null +++ b/package/python-google-auth/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_GOOGLE_AUTH + bool "python-google-auth" + select BR2_PACKAGE_PYTHON_CACHETOOLS # runtime + select BR2_PACKAGE_PYTHON_PYASN1_MODULES # runtime + select BR2_PACKAGE_PYTHON_RSA # runtime + help + Google Authentication Library. + + https://github.com/googleapis/google-auth-library-python diff --git a/package/python-google-auth/python-google-auth.hash b/package/python-google-auth/python-google-auth.hash new file mode 100644 index 00000000..9c201391 --- /dev/null +++ b/package/python-google-auth/python-google-auth.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/google-auth/json +md5 718e1a2c55baf3b019e9a42524812113 google-auth-2.26.1.tar.gz +sha256 54385acca5c0fbdda510cd8585ba6f3fcb06eeecf8a6ecca39d3ee148b092590 google-auth-2.26.1.tar.gz +# Locally computed sha256 checksums +sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE diff --git a/package/python-google-auth/python-google-auth.mk b/package/python-google-auth/python-google-auth.mk new file mode 100644 index 00000000..02c8c116 --- /dev/null +++ b/package/python-google-auth/python-google-auth.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-google-auth +# +################################################################################ + +PYTHON_GOOGLE_AUTH_VERSION = 2.26.1 +PYTHON_GOOGLE_AUTH_SOURCE = google-auth-$(PYTHON_GOOGLE_AUTH_VERSION).tar.gz +PYTHON_GOOGLE_AUTH_SITE = https://files.pythonhosted.org/packages/bc/c0/b5119831db4888e703b2adaa912709931181678ae3a50ca08d51a3904765 +PYTHON_GOOGLE_AUTH_SETUP_TYPE = setuptools +PYTHON_GOOGLE_AUTH_LICENSE = Apache-2.0 +PYTHON_GOOGLE_AUTH_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-googleapis-common-protos/Config.in b/package/python-googleapis-common-protos/Config.in new file mode 100644 index 00000000..8f487f5e --- /dev/null +++ b/package/python-googleapis-common-protos/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_GOOGLEAPIS_COMMON_PROTOS + bool "python-googleapis-common-protos" + select BR2_PACKAGE_PYTHON_PROTOBUF # runtime + help + Common protobufs used in Google APIs. + + https://github.com/googleapis/python-api-common-protos diff --git a/package/python-googleapis-common-protos/python-googleapis-common-protos.hash b/package/python-googleapis-common-protos/python-googleapis-common-protos.hash new file mode 100644 index 00000000..1169e945 --- /dev/null +++ b/package/python-googleapis-common-protos/python-googleapis-common-protos.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/googleapis-common-protos/json +md5 148bfe9b5a92663c5ff0a6700453ebad googleapis-common-protos-1.62.0.tar.gz +sha256 83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 googleapis-common-protos-1.62.0.tar.gz +# Locally computed sha256 checksums +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/python-googleapis-common-protos/python-googleapis-common-protos.mk b/package/python-googleapis-common-protos/python-googleapis-common-protos.mk new file mode 100644 index 00000000..ca943a1c --- /dev/null +++ b/package/python-googleapis-common-protos/python-googleapis-common-protos.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-googleapis-common-protos +# +################################################################################ + +PYTHON_GOOGLEAPIS_COMMON_PROTOS_VERSION = 1.62.0 +PYTHON_GOOGLEAPIS_COMMON_PROTOS_SOURCE = googleapis-common-protos-$(PYTHON_GOOGLEAPIS_COMMON_PROTOS_VERSION).tar.gz +PYTHON_GOOGLEAPIS_COMMON_PROTOS_SITE = https://files.pythonhosted.org/packages/4a/5f/eb12d721b45d20a977289d674e179995a0ddab1684d2c61b29a63d43a5f1 +PYTHON_GOOGLEAPIS_COMMON_PROTOS_SETUP_TYPE = setuptools +PYTHON_GOOGLEAPIS_COMMON_PROTOS_LICENSE = Apache-2.0 +PYTHON_GOOGLEAPIS_COMMON_PROTOS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-gpiozero/Config.in b/package/python-gpiozero/Config.in new file mode 100644 index 00000000..93e5de3e --- /dev/null +++ b/package/python-gpiozero/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_GPIOZERO + bool "python-gpiozero" + depends on BR2_arm + select BR2_PACKAGE_PYTHON_COLORZERO # runtime + select BR2_PACKAGE_PYTHON_RPI_GPIO # runtime + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + help + A simple interface to GPIO devices with Raspberry Pi. + + https://github.com/gpiozero/gpiozero diff --git a/package/python-gpiozero/python-gpiozero.hash b/package/python-gpiozero/python-gpiozero.hash new file mode 100644 index 00000000..d019b543 --- /dev/null +++ b/package/python-gpiozero/python-gpiozero.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/gpiozero/json +md5 b8b63443961de2710d88b82671ec6d8a gpiozero-2.0.tar.gz +sha256 403bcc9e7f24f0877653e7fced91ba51508d5197c9d1f80e383fe6693b9c3c27 gpiozero-2.0.tar.gz +# Locally computed sha256 checksums +sha256 b6fdd587f3dc3a9b8cc5adae00918e3ffa909b1092bd4decf7e8b1b08fa5d0fb LICENSE.rst diff --git a/package/python-gpiozero/python-gpiozero.mk b/package/python-gpiozero/python-gpiozero.mk new file mode 100644 index 00000000..bce7644a --- /dev/null +++ b/package/python-gpiozero/python-gpiozero.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-gpiozero +# +################################################################################ + +PYTHON_GPIOZERO_VERSION = 2.0 +PYTHON_GPIOZERO_SOURCE = gpiozero-$(PYTHON_GPIOZERO_VERSION).tar.gz +PYTHON_GPIOZERO_SITE = https://files.pythonhosted.org/packages/b3/a7/85676e0689114ea08ea3c88b7813efd988a9ead64dc9e1b24545b17af4fd +PYTHON_GPIOZERO_LICENSE = BSD-3-Clause +PYTHON_GPIOZERO_LICENSE_FILES = LICENSE.rst +PYTHON_GPIOZERO_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-greenlet/Config.in b/package/python-greenlet/Config.in new file mode 100644 index 00000000..ae092e3f --- /dev/null +++ b/package/python-greenlet/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_PYTHON_GREENLET_ARCH_SUPPORTS + bool + default y if BR2_arm || BR2_armeb + default y if BR2_aarch64 + default y if BR2_m68k + default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + default y if BR2_riscv + default y if BR2_sparc || BR2_sparc64 + default y if BR2_i386 || BR2_x86_64 + +config BR2_PACKAGE_PYTHON_GREENLET + bool "python-greenlet" + depends on BR2_PACKAGE_PYTHON_GREENLET_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP + help + Lightweight in-process concurrent programming. + + https://github.com/python-greenlet/greenlet + +comment "python-greenlet needs a toolchain w/ C++" + depends on BR2_PACKAGE_PYTHON_GREENLET_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/python-greenlet/Config.in.host b/package/python-greenlet/Config.in.host new file mode 100644 index 00000000..673fee8c --- /dev/null +++ b/package/python-greenlet/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_PYTHON_GREENLET + bool "host python-greenlet" + help + Greenlets are lightweight coroutines for in-process concurrent + programming. + + https://greenlet.readthedocs.io/ diff --git a/package/python-greenlet/python-greenlet.hash b/package/python-greenlet/python-greenlet.hash new file mode 100644 index 00000000..61e7f053 --- /dev/null +++ b/package/python-greenlet/python-greenlet.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/greenlet/json +md5 170495b0af3b63ca40ca637dd6e5c6ef greenlet-3.0.3.tar.gz +sha256 43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491 greenlet-3.0.3.tar.gz +# Locally computed sha256 checksums +sha256 769831d6e5dfaf2c20802faccff1fafb4c2025dd8f6253dfa47fcad59d4d0979 LICENSE +sha256 e5ff3c23c110e494cd7d736c10fd96d462457bafeca310840db6527298c7d46b LICENSE.PSF diff --git a/package/python-greenlet/python-greenlet.mk b/package/python-greenlet/python-greenlet.mk new file mode 100644 index 00000000..1af10451 --- /dev/null +++ b/package/python-greenlet/python-greenlet.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-greenlet +# +################################################################################ + +PYTHON_GREENLET_VERSION = 3.0.3 +PYTHON_GREENLET_SOURCE = greenlet-$(PYTHON_GREENLET_VERSION).tar.gz +PYTHON_GREENLET_SITE = https://files.pythonhosted.org/packages/17/14/3bddb1298b9a6786539ac609ba4b7c9c0842e12aa73aaa4d8d73ec8f8185 +PYTHON_GREENLET_SETUP_TYPE = setuptools +PYTHON_GREENLET_LICENSE = MIT, PSF-2.0 +PYTHON_GREENLET_LICENSE_FILES = LICENSE LICENSE.PSF +PYTHON_GREENLET_ENV = GREENLET_TEST_CPP=no + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-grpc-requests/Config.in b/package/python-grpc-requests/Config.in new file mode 100644 index 00000000..1cdd0d3f --- /dev/null +++ b/package/python-grpc-requests/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_PYTHON_GRPC_REQUESTS + bool "python-grpc-requests" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-cryptography + depends on BR2_PACKAGE_PYTHON_GRPCIO_ARCH_SUPPORTS # python-grpcio + depends on BR2_INSTALL_LIBSTDCPP # python-grpcio + select BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime + select BR2_PACKAGE_PYTHON_GOOGLE_API_CORE # runtime + select BR2_PACKAGE_PYTHON_GRPCIO # runtime + select BR2_PACKAGE_PYTHON_GRPCIO_REFLECTION # runtime + help + grpc for Humans. grpc reflection support client. + + https://github.com/wesky93/grpc_requests + +comment "python-grpcio-requests needs a toolchain w/ C++" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_PYTHON_GRPCIO_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/python-grpc-requests/python-grpc-requests.hash b/package/python-grpc-requests/python-grpc-requests.hash new file mode 100644 index 00000000..c816a65b --- /dev/null +++ b/package/python-grpc-requests/python-grpc-requests.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/grpc-requests/json +md5 39f0d7ef45ab3620d8b63c2408af35b0 grpc_requests-0.1.13.tar.gz +sha256 30a00493b206156b94be21f641edcbef5ea69fb43daf503390da661123520521 grpc_requests-0.1.13.tar.gz +# Locally computed sha256 checksums +sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE diff --git a/package/python-grpc-requests/python-grpc-requests.mk b/package/python-grpc-requests/python-grpc-requests.mk new file mode 100644 index 00000000..9ffd73d4 --- /dev/null +++ b/package/python-grpc-requests/python-grpc-requests.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-grpc-requests +# +################################################################################ + +PYTHON_GRPC_REQUESTS_VERSION = 0.1.13 +PYTHON_GRPC_REQUESTS_SOURCE = grpc_requests-$(PYTHON_GRPC_REQUESTS_VERSION).tar.gz +PYTHON_GRPC_REQUESTS_SITE = https://files.pythonhosted.org/packages/46/51/8981bce4ca61bce1c7b7a12dd04f6cbd35c4ea874842b06283f6bbc9a0e8 +PYTHON_GRPC_REQUESTS_SETUP_TYPE = setuptools +PYTHON_GRPC_REQUESTS_LICENSE = Apache-2.0 +PYTHON_GRPC_REQUESTS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-grpcio-reflection/Config.in b/package/python-grpcio-reflection/Config.in new file mode 100644 index 00000000..a0ca35c2 --- /dev/null +++ b/package/python-grpcio-reflection/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_PYTHON_GRPCIO_REFLECTION + bool "python-grpcio-reflection" + depends on BR2_PACKAGE_PYTHON_GRPCIO_ARCH_SUPPORTS # python-grpcio + depends on BR2_INSTALL_LIBSTDCPP # python-grpcio + select BR2_PACKAGE_PYTHON_GRPCIO # runtime + select BR2_PACKAGE_PYTHON_PROTOBUF # runtime + help + Standard Protobuf Reflection Service for gRPC. + + https://grpc.io + +comment "python-grpcio-reflection needs a toolchain w/ C++" + depends on BR2_PACKAGE_PYTHON_GRPCIO_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/python-grpcio-reflection/python-grpcio-reflection.hash b/package/python-grpcio-reflection/python-grpcio-reflection.hash new file mode 100644 index 00000000..d17087d4 --- /dev/null +++ b/package/python-grpcio-reflection/python-grpcio-reflection.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/grpcio-reflection/json +md5 f93b042f8092cf1818f249518668a78a grpcio-reflection-1.60.0.tar.gz +sha256 3f6c0c73ba8f20d1420c5e72fc4dd0389fac346ed8fb32a28e6e1967b44fff35 grpcio-reflection-1.60.0.tar.gz +# Locally computed sha256 checksums +sha256 590198e3f305f2c347fde64d637c65492bbef554db6c8364e149cd375e3797ee LICENSE diff --git a/package/python-grpcio-reflection/python-grpcio-reflection.mk b/package/python-grpcio-reflection/python-grpcio-reflection.mk new file mode 100644 index 00000000..b3d2fdff --- /dev/null +++ b/package/python-grpcio-reflection/python-grpcio-reflection.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-grpcio-reflection +# +################################################################################ + +PYTHON_GRPCIO_REFLECTION_VERSION = 1.60.0 +PYTHON_GRPCIO_REFLECTION_SOURCE = grpcio-reflection-$(PYTHON_GRPCIO_REFLECTION_VERSION).tar.gz +PYTHON_GRPCIO_REFLECTION_SITE = https://files.pythonhosted.org/packages/33/3a/e257225b8fd9f05d2af3e363459f0d074ca684438667892ea3215e2162ca +PYTHON_GRPCIO_REFLECTION_SETUP_TYPE = setuptools +PYTHON_GRPCIO_REFLECTION_LICENSE = Apache-2.0 +PYTHON_GRPCIO_REFLECTION_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-grpcio/Config.in b/package/python-grpcio/Config.in new file mode 100644 index 00000000..9657ccb6 --- /dev/null +++ b/package/python-grpcio/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_PYTHON_GRPCIO_ARCH_SUPPORTS + bool + # see third_party/boringssl-with-bazel/src/include/openssl/target.h + default y if BR2_aarch64 || BR2_aarch64_be + default y if BR2_arm || BR2_armeb + default y if BR2_i386 || BR2_x86_64 + default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + default y if BR2_riscv + +config BR2_PACKAGE_PYTHON_GRPCIO + bool "python-grpcio" + depends on BR2_PACKAGE_PYTHON_GRPCIO_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP + help + HTTP/2-based RPC framework. + + https://grpc.io + +comment "python-grpcio needs a toolchain w/ C++" + depends on BR2_PACKAGE_PYTHON_GRPCIO_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/python-grpcio/python-grpcio.hash b/package/python-grpcio/python-grpcio.hash new file mode 100644 index 00000000..39366f57 --- /dev/null +++ b/package/python-grpcio/python-grpcio.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/grpcio/json +md5 480bfb7435426de392a883e6516aae79 grpcio-1.60.0.tar.gz +sha256 2199165a1affb666aa24adf0c97436686d0a61bc5fc113c037701fb7c7fceb96 grpcio-1.60.0.tar.gz +# Locally computed sha256 checksums +sha256 590198e3f305f2c347fde64d637c65492bbef554db6c8364e149cd375e3797ee LICENSE diff --git a/package/python-grpcio/python-grpcio.mk b/package/python-grpcio/python-grpcio.mk new file mode 100644 index 00000000..3d264de4 --- /dev/null +++ b/package/python-grpcio/python-grpcio.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-grpcio +# +################################################################################ + +PYTHON_GRPCIO_VERSION = 1.60.0 +PYTHON_GRPCIO_SOURCE = grpcio-$(PYTHON_GRPCIO_VERSION).tar.gz +PYTHON_GRPCIO_SITE = https://files.pythonhosted.org/packages/61/38/c615b5c2be690fb31871f294cc08a96e598b085b8d07c5967a5018e0b90c +PYTHON_GRPCIO_SETUP_TYPE = setuptools +PYTHON_GRPCIO_LICENSE = Apache-2.0 +PYTHON_GRPCIO_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-grpclib/Config.in b/package/python-grpclib/Config.in new file mode 100644 index 00000000..42cc0110 --- /dev/null +++ b/package/python-grpclib/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_GRPCLIB + bool "python-grpclib" + select BR2_PACKAGE_PYTHON_H2 # runtime + select BR2_PACKAGE_PYTHON_MULTIDICT # runtime + help + Pure-Python gRPC implementation for asyncio. + + https://github.com/vmagamedov/grpclib diff --git a/package/python-grpclib/python-grpclib.hash b/package/python-grpclib/python-grpclib.hash new file mode 100644 index 00000000..cc652091 --- /dev/null +++ b/package/python-grpclib/python-grpclib.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/grpclib/json +md5 60ce203e5b9f95de3d7e5721dbce2bd9 grpclib-0.4.7.tar.gz +sha256 2988ef57c02b22b7a2e8e961792c41ccf97efc2ace91ae7a5b0de03c363823c3 grpclib-0.4.7.tar.gz +# Locally computed sha256 checksums +sha256 6c7fa8cf9b94ad5043a6b550a0ffb98356e66100b69dd1cb8e1f82606b436e8e LICENSE.txt diff --git a/package/python-grpclib/python-grpclib.mk b/package/python-grpclib/python-grpclib.mk new file mode 100644 index 00000000..0bec0a18 --- /dev/null +++ b/package/python-grpclib/python-grpclib.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-grpclib +# +################################################################################ + +PYTHON_GRPCLIB_VERSION = 0.4.7 +PYTHON_GRPCLIB_SOURCE = grpclib-$(PYTHON_GRPCLIB_VERSION).tar.gz +PYTHON_GRPCLIB_SITE = https://files.pythonhosted.org/packages/79/b9/55936e462a5925190d7427e880b3033601d1effd13809b483d13a926061a +PYTHON_GRPCLIB_SETUP_TYPE = setuptools +PYTHON_GRPCLIB_LICENSE = BSD-3-Clause +PYTHON_GRPCLIB_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-gunicorn/Config.in b/package/python-gunicorn/Config.in new file mode 100644 index 00000000..a670dd48 --- /dev/null +++ b/package/python-gunicorn/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_GUNICORN + bool "python-gunicorn" + select BR2_PACKAGE_PYTHON_PACKAGING # runtime + select BR2_PACKAGE_PYTHON3_SSL # 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/package/python-gunicorn/python-gunicorn.hash b/package/python-gunicorn/python-gunicorn.hash new file mode 100644 index 00000000..bd4dc1b3 --- /dev/null +++ b/package/python-gunicorn/python-gunicorn.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/gunicorn/json +md5 cb41319d6929842c5af7003d48c513a2 gunicorn-21.2.0.tar.gz +sha256 88ec8bff1d634f98e61b9f65bc4bf3cd918a90806c6f5c48bc5603849ec81033 gunicorn-21.2.0.tar.gz +# Locally computed sha256 checksums +sha256 fc71b8f2ce774a47090c106ac5d1145359f5c0e25a0d9ab42acacd230f596936 LICENSE diff --git a/package/python-gunicorn/python-gunicorn.mk b/package/python-gunicorn/python-gunicorn.mk new file mode 100644 index 00000000..effa93e5 --- /dev/null +++ b/package/python-gunicorn/python-gunicorn.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-gunicorn +# +################################################################################ + +PYTHON_GUNICORN_VERSION = 21.2.0 +PYTHON_GUNICORN_SOURCE = gunicorn-$(PYTHON_GUNICORN_VERSION).tar.gz +PYTHON_GUNICORN_SITE = https://files.pythonhosted.org/packages/06/89/acd9879fa6a5309b4bf16a5a8855f1e58f26d38e0c18ede9b3a70996b021 +PYTHON_GUNICORN_SETUP_TYPE = setuptools +PYTHON_GUNICORN_LICENSE = MIT +PYTHON_GUNICORN_LICENSE_FILES = LICENSE +PYTHON_GUNICORN_CPE_ID_VENDOR = gunicorn +PYTHON_GUNICORN_CPE_ID_PRODUCT = gunicorn + +$(eval $(python-package)) diff --git a/package/python-h11/Config.in b/package/python-h11/Config.in new file mode 100644 index 00000000..736620d7 --- /dev/null +++ b/package/python-h11/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_H11 + bool "python-h11" + help + A pure-Python, bring-your-own-I/O implementation of + HTTP/1.1. + + https://github.com/python-hyper/h11 diff --git a/package/python-h11/python-h11.hash b/package/python-h11/python-h11.hash new file mode 100644 index 00000000..0c65a11d --- /dev/null +++ b/package/python-h11/python-h11.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/h11/json +md5 84c33fc0aa1f868928114c4d02c43dc2 h11-0.14.0.tar.gz +sha256 8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d h11-0.14.0.tar.gz +# Locally computed sha256 checksums +sha256 37db5bb85926db28a427a25867f10b1232003aea1be69ccb851138adb8e6f361 LICENSE.txt diff --git a/package/python-h11/python-h11.mk b/package/python-h11/python-h11.mk new file mode 100644 index 00000000..d7dca524 --- /dev/null +++ b/package/python-h11/python-h11.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-h11 +# +################################################################################ + +PYTHON_H11_VERSION = 0.14.0 +PYTHON_H11_SOURCE = h11-$(PYTHON_H11_VERSION).tar.gz +PYTHON_H11_SITE = https://files.pythonhosted.org/packages/f5/38/3af3d3633a34a3316095b39c8e8fb4853a28a536e55d347bd8d8e9a14b03 +PYTHON_H11_SETUP_TYPE = setuptools +PYTHON_H11_LICENSE = MIT +PYTHON_H11_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-h2/Config.in b/package/python-h2/Config.in new file mode 100644 index 00000000..74a6b2ad --- /dev/null +++ b/package/python-h2/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_H2 + bool "python-h2" + select BR2_PACKAGE_PYTHON_HPACK # runtime + select BR2_PACKAGE_PYTHON_HYPERFRAME # runtime + help + HTTP/2 State-Machine based protocol implementation. + + https://github.com/python-hyper/h2 diff --git a/package/python-h2/python-h2.hash b/package/python-h2/python-h2.hash new file mode 100644 index 00000000..2f9c8f64 --- /dev/null +++ b/package/python-h2/python-h2.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/h2/json +md5 4274f9619c0a43bb4ae01b6b02bf0c99 h2-4.1.0.tar.gz +sha256 a83aca08fbe7aacb79fec788c9c0bac936343560ed9ec18b82a13a12c28d2abb h2-4.1.0.tar.gz +# Locally computed sha256 checksums +sha256 7a65a5af0cbabf1c16251c7c6b2b7cb46d16a7222e79975b9b61fcd66a2e3f28 LICENSE diff --git a/package/python-h2/python-h2.mk b/package/python-h2/python-h2.mk new file mode 100644 index 00000000..699e8bae --- /dev/null +++ b/package/python-h2/python-h2.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-h2 +# +################################################################################ + +PYTHON_H2_VERSION = 4.1.0 +PYTHON_H2_SOURCE = h2-$(PYTHON_H2_VERSION).tar.gz +PYTHON_H2_SITE = https://files.pythonhosted.org/packages/2a/32/fec683ddd10629ea4ea46d206752a95a2d8a48c22521edd70b142488efe1 +PYTHON_H2_SETUP_TYPE = setuptools +PYTHON_H2_LICENSE = MIT +PYTHON_H2_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-hatch-fancy-pypi-readme/python-hatch-fancy-pypi-readme.hash b/package/python-hatch-fancy-pypi-readme/python-hatch-fancy-pypi-readme.hash new file mode 100644 index 00000000..e3a6363e --- /dev/null +++ b/package/python-hatch-fancy-pypi-readme/python-hatch-fancy-pypi-readme.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/hatch-fancy-pypi-readme/json +md5 f5f9e639f066c91f8e623ec6231beae9 hatch_fancy_pypi_readme-24.1.0.tar.gz +sha256 44dd239f1a779b9dcf8ebc9401a611fd7f7e3e14578dcf22c265dfaf7c1514b8 hatch_fancy_pypi_readme-24.1.0.tar.gz +# Locally computed sha256 checksums +sha256 e69ea57f96e599e617f61af3e85bf326b87e833994709fb5e5908a81197730a2 LICENSE.txt diff --git a/package/python-hatch-fancy-pypi-readme/python-hatch-fancy-pypi-readme.mk b/package/python-hatch-fancy-pypi-readme/python-hatch-fancy-pypi-readme.mk new file mode 100644 index 00000000..2a268923 --- /dev/null +++ b/package/python-hatch-fancy-pypi-readme/python-hatch-fancy-pypi-readme.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-hatch-fancy-pypi-readme +# +################################################################################ + +PYTHON_HATCH_FANCY_PYPI_README_VERSION = 24.1.0 +PYTHON_HATCH_FANCY_PYPI_README_SOURCE = hatch_fancy_pypi_readme-$(PYTHON_HATCH_FANCY_PYPI_README_VERSION).tar.gz +PYTHON_HATCH_FANCY_PYPI_README_SITE = https://files.pythonhosted.org/packages/b4/c2/c9094283a07dd96c5a8f7a5f1910259d40d2e29223b95dd875a6ca13b58f +PYTHON_HATCH_FANCY_PYPI_README_LICENSE = MIT +PYTHON_HATCH_FANCY_PYPI_README_LICENSE_FILES = LICENSE.txt +PYTHON_HATCH_FANCY_PYPI_README_SETUP_TYPE = pep517 +HOST_PYTHON_HATCH_FANCY_PYPI_README_DEPENDENCIES = host-python-hatchling + +$(eval $(host-python-package)) diff --git a/package/python-hatch-vcs/python-hatch-vcs.hash b/package/python-hatch-vcs/python-hatch-vcs.hash new file mode 100644 index 00000000..55cd3b3e --- /dev/null +++ b/package/python-hatch-vcs/python-hatch-vcs.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/hatch_vcs/json +md5 d801fe7c3e5955307748f2790bbb3488 hatch_vcs-0.4.0.tar.gz +sha256 093810748fe01db0d451fabcf2c1ac2688caefd232d4ede967090b1c1b07d9f7 hatch_vcs-0.4.0.tar.gz +# Locally computed sha256 checksums +sha256 117aa5006d8475562f04442ab06dd2a4c501af3a77255eae0deef1f0c2499a1a LICENSE.txt diff --git a/package/python-hatch-vcs/python-hatch-vcs.mk b/package/python-hatch-vcs/python-hatch-vcs.mk new file mode 100644 index 00000000..46e59f8a --- /dev/null +++ b/package/python-hatch-vcs/python-hatch-vcs.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-hatch-vcs +# +################################################################################ + +PYTHON_HATCH_VCS_VERSION = 0.4.0 +PYTHON_HATCH_VCS_SOURCE = hatch_vcs-$(PYTHON_HATCH_VCS_VERSION).tar.gz +PYTHON_HATCH_VCS_SITE = https://files.pythonhosted.org/packages/f5/c9/54bb4fa27b4e4a014ef3bb17710cdf692b3aa2cbc7953da885f1bf7e06ea +PYTHON_HATCH_VCS_LICENSE = MIT +PYTHON_HATCH_VCS_LICENSE_FILES = LICENSE.txt +PYTHON_HATCH_VCS_SETUP_TYPE = pep517 +HOST_PYTHON_HATCH_VCS_DEPENDENCIES = \ + host-python-hatchling \ + host-python-setuptools-scm + +$(eval $(host-python-package)) diff --git a/package/python-hatchling/python-hatchling.hash b/package/python-hatchling/python-hatchling.hash new file mode 100644 index 00000000..b01d3df2 --- /dev/null +++ b/package/python-hatchling/python-hatchling.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/hatchling/json +md5 ac265366ccd17365db319dc95a9e5bc5 hatchling-1.25.0.tar.gz +sha256 7064631a512610b52250a4d3ff1bd81551d6d1431c4eb7b72e734df6c74f4262 hatchling-1.25.0.tar.gz +# Locally computed sha256 checksums +sha256 7f143a8127ad4873862d70854b5bd2abd0085aa73e64fd2b08704a3b9f5c07fc LICENSE.txt diff --git a/package/python-hatchling/python-hatchling.mk b/package/python-hatchling/python-hatchling.mk new file mode 100644 index 00000000..2ca2caf6 --- /dev/null +++ b/package/python-hatchling/python-hatchling.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# python-hatchling +# +################################################################################ + +PYTHON_HATCHLING_VERSION = 1.25.0 +PYTHON_HATCHLING_SOURCE = hatchling-$(PYTHON_HATCHLING_VERSION).tar.gz +PYTHON_HATCHLING_SITE = https://files.pythonhosted.org/packages/a3/51/8a4a67a8174ce59cf49e816e38e9502900aea9b4af672d0127df8e10d3b0 +PYTHON_HATCHLING_LICENSE = MIT +PYTHON_HATCHLING_LICENSE_FILES = LICENSE.txt +PYTHON_HATCHLING_SETUP_TYPE = pep517 +HOST_PYTHON_HATCHLING_DEPENDENCIES = \ + host-python-packaging \ + host-python-pathspec \ + host-python-pluggy \ + host-python-trove-classifiers + +$(eval $(host-python-package)) diff --git a/package/python-hid/Config.in b/package/python-hid/Config.in new file mode 100644 index 00000000..3a9e16c9 --- /dev/null +++ b/package/python-hid/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PYTHON_HID + bool "python-hid" + depends on BR2_PACKAGE_HAS_UDEV # hidapi + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # hidapi + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # hidapi + select BR2_PACKAGE_HIDAPI + help + ctypes bindings for hidapi. + + https://github.com/apmorton/pyhidapi + +comment "python-hid needs udev /dev management and a toolchain w/ NPTL, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + !BR2_PACKAGE_HAS_UDEV || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/python-hid/python-hid.hash b/package/python-hid/python-hid.hash new file mode 100644 index 00000000..d0375777 --- /dev/null +++ b/package/python-hid/python-hid.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/hid/json +md5 1954df0dce4e15afd89197e898039e92 hid-1.0.6.tar.gz +sha256 48d764d7ae9746ba123b96dbf457893ca80268b7791c4b1d2e051310eeb83860 hid-1.0.6.tar.gz +# Locally computed sha256 checksums +sha256 5524b425acacdfedeca3f959980f0cd38b00176ebbb292e4a96c520d6074353d LICENSE diff --git a/package/python-hid/python-hid.mk b/package/python-hid/python-hid.mk new file mode 100644 index 00000000..2f65bd14 --- /dev/null +++ b/package/python-hid/python-hid.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-hid +# +################################################################################ + +PYTHON_HID_VERSION = 1.0.6 +PYTHON_HID_SOURCE = hid-$(PYTHON_HID_VERSION).tar.gz +PYTHON_HID_SITE = https://files.pythonhosted.org/packages/50/b8/5f470948262b6cdda8e1b2382b19f67c57eacda1e07a14322807b911e0ce +PYTHON_HID_SETUP_TYPE = setuptools +PYTHON_HID_LICENSE = MIT +PYTHON_HID_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-hiredis/Config.in b/package/python-hiredis/Config.in new file mode 100644 index 00000000..a401de05 --- /dev/null +++ b/package/python-hiredis/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_HIREDIS + bool "python-hiredis" + help + Python wrapper for hiredis. + + https://github.com/redis/hiredis-py diff --git a/package/python-hiredis/python-hiredis.hash b/package/python-hiredis/python-hiredis.hash new file mode 100644 index 00000000..ad33295a --- /dev/null +++ b/package/python-hiredis/python-hiredis.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/hiredis/json +md5 8823961dc3ba19a6e63ab6329b3b852f hiredis-2.3.2.tar.gz +sha256 733e2456b68f3f126ddaf2cd500a33b25146c3676b97ea843665717bda0c5d43 hiredis-2.3.2.tar.gz +# Locally computed sha256 checksums +sha256 3256b5b77e98aa34ff31a4d2c2c10f7f177b0f3058753a6044430a168987353b LICENSE +sha256 dca05ce8fc87a8261783b4aed0deef8becc9350b6aa770bc714d0c1833b896eb vendor/hiredis/COPYING diff --git a/package/python-hiredis/python-hiredis.mk b/package/python-hiredis/python-hiredis.mk new file mode 100644 index 00000000..d86fb109 --- /dev/null +++ b/package/python-hiredis/python-hiredis.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-hiredis +# +################################################################################ + +PYTHON_HIREDIS_VERSION = 2.3.2 +PYTHON_HIREDIS_SOURCE = hiredis-$(PYTHON_HIREDIS_VERSION).tar.gz +PYTHON_HIREDIS_SITE = https://files.pythonhosted.org/packages/fe/2d/a5ae61da1157644f7e52e088fa158ac6f5d09775112d14b1c9b9a5156bf1 +PYTHON_HIREDIS_SETUP_TYPE = setuptools +PYTHON_HIREDIS_LICENSE = MIT, BSD-3-Clause +PYTHON_HIREDIS_LICENSE_FILES = LICENSE vendor/hiredis/COPYING + +$(eval $(python-package)) diff --git a/package/python-hkdf/Config.in b/package/python-hkdf/Config.in new file mode 100644 index 00000000..2add348c --- /dev/null +++ b/package/python-hkdf/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_HKDF + bool "python-hkdf" + help + HMAC-based Extract-and-Expand Key Derivation Function + (HKDF). + + https://github.com/casebeer/python-hkdf diff --git a/package/python-hkdf/python-hkdf.hash b/package/python-hkdf/python-hkdf.hash new file mode 100644 index 00000000..87702b45 --- /dev/null +++ b/package/python-hkdf/python-hkdf.hash @@ -0,0 +1,3 @@ +# md5, sha256 from https://pypi.org/pypi/hkdf/json +md5 d10471ad0ec891cdbe165d78282c943e hkdf-0.0.3.tar.gz +sha256 622a31c634bc185581530a4b44ffb731ed208acf4614f9c795bdd70e77991dca hkdf-0.0.3.tar.gz diff --git a/package/python-hkdf/python-hkdf.mk b/package/python-hkdf/python-hkdf.mk new file mode 100644 index 00000000..8b68c5cc --- /dev/null +++ b/package/python-hkdf/python-hkdf.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-hkdf +# +################################################################################ + +PYTHON_HKDF_VERSION = 0.0.3 +PYTHON_HKDF_SOURCE = hkdf-$(PYTHON_HKDF_VERSION).tar.gz +PYTHON_HKDF_SITE = https://files.pythonhosted.org/packages/c3/be/327e072850db181ce56afd51e26ec7aa5659b18466c709fa5ea2548c935f +PYTHON_HKDF_SETUP_TYPE = setuptools +# No license file in the tree, but +# https://github.com/casebeer/python-hkdf/blob/master/LICENSE shows +# it's BSD-2-Clause. Issue already reported upstream: +# https://github.com/casebeer/python-hkdf/issues/6 +PYTHON_HKDF_LICENSE = BSD-2-Clause + +$(eval $(python-package)) diff --git a/package/python-hpack/Config.in b/package/python-hpack/Config.in new file mode 100644 index 00000000..b34a3f31 --- /dev/null +++ b/package/python-hpack/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_HPACK + bool "python-hpack" + help + Pure-Python HPACK header compression. + + https://github.com/python-hyper/hpack diff --git a/package/python-hpack/python-hpack.hash b/package/python-hpack/python-hpack.hash new file mode 100644 index 00000000..988cbaae --- /dev/null +++ b/package/python-hpack/python-hpack.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/hpack/json +md5 27e01514ef06dc9fa0798d3dcb7de47c hpack-4.0.0.tar.gz +sha256 fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095 hpack-4.0.0.tar.gz +# Locally computed sha256 checksums +sha256 763a9342a04df62046c9dc748a5287934eb0a5331c6863b3ca0aee20e18cb4ed LICENSE diff --git a/package/python-hpack/python-hpack.mk b/package/python-hpack/python-hpack.mk new file mode 100644 index 00000000..4b581c10 --- /dev/null +++ b/package/python-hpack/python-hpack.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-hpack +# +################################################################################ + +PYTHON_HPACK_VERSION = 4.0.0 +PYTHON_HPACK_SOURCE = hpack-$(PYTHON_HPACK_VERSION).tar.gz +PYTHON_HPACK_SITE = https://files.pythonhosted.org/packages/3e/9b/fda93fb4d957db19b0f6b370e79d586b3e8528b20252c729c476a2c02954 +PYTHON_HPACK_SETUP_TYPE = setuptools +PYTHON_HPACK_LICENSE = MIT +PYTHON_HPACK_LICENSE_FILES = LICENSE +PYTHON_HPACK_CPE_ID_VENDOR = python +PYTHON_HPACK_CPE_ID_PRODUCT = hpack + +$(eval $(python-package)) diff --git a/package/python-html5lib/Config.in b/package/python-html5lib/Config.in new file mode 100644 index 00000000..34e22049 --- /dev/null +++ b/package/python-html5lib/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_HTML5LIB + bool "python-html5lib" + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_WEBENCODINGS # runtime + help + HTML parser based on the WHATWG HTML specification. + + https://github.com/html5lib/html5lib-python diff --git a/package/python-html5lib/python-html5lib.hash b/package/python-html5lib/python-html5lib.hash new file mode 100644 index 00000000..5023f5ab --- /dev/null +++ b/package/python-html5lib/python-html5lib.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/html5lib/json +md5 6748742e2ec4cb99287a6bc82bcfe2b0 html5lib-1.1.tar.gz +sha256 b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f html5lib-1.1.tar.gz +# Locally computed sha256 checksums +sha256 16a39991619e92f18680932da2a9199fdf7d95df3ecaedc52ea06218aabafd6f LICENSE diff --git a/package/python-html5lib/python-html5lib.mk b/package/python-html5lib/python-html5lib.mk new file mode 100644 index 00000000..320ef01c --- /dev/null +++ b/package/python-html5lib/python-html5lib.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-html5lib +# +################################################################################ + +PYTHON_HTML5LIB_VERSION = 1.1 +PYTHON_HTML5LIB_SOURCE = html5lib-$(PYTHON_HTML5LIB_VERSION).tar.gz +PYTHON_HTML5LIB_SITE = https://files.pythonhosted.org/packages/ac/b6/b55c3f49042f1df3dcd422b7f224f939892ee94f22abcf503a9b7339eaf2 +PYTHON_HTML5LIB_LICENSE = MIT +PYTHON_HTML5LIB_LICENSE_FILES = LICENSE +PYTHON_HTML5LIB_SETUP_TYPE = setuptools +PYTHON_HTML5LIB_CPE_ID_VENDOR = html5lib +PYTHON_HTML5LIB_CPE_ID_PRODUCT = html5lib + +$(eval $(python-package)) diff --git a/package/python-httpcore/Config.in b/package/python-httpcore/Config.in new file mode 100644 index 00000000..d8c9083d --- /dev/null +++ b/package/python-httpcore/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_HTTPCORE + bool "python-httpcore" + select BR2_PACKAGE_PYTHON_CERTIFI # runtime + select BR2_PACKAGE_PYTHON_H11 # runtime + help + A minimal low-level HTTP client. + + https://www.encode.io/httpcore/ diff --git a/package/python-httpcore/python-httpcore.hash b/package/python-httpcore/python-httpcore.hash new file mode 100644 index 00000000..e773374c --- /dev/null +++ b/package/python-httpcore/python-httpcore.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/httpcore/json +md5 17916ce84db1c0705af60a61bbec9061 httpcore-1.0.5.tar.gz +sha256 34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61 httpcore-1.0.5.tar.gz +# Locally computed sha256 checksums +sha256 fdcb59154c74cbaba16a11242f7740bea9f23d6feb5547917d8c5f94a80392a5 LICENSE.md diff --git a/package/python-httpcore/python-httpcore.mk b/package/python-httpcore/python-httpcore.mk new file mode 100644 index 00000000..ae29d8dc --- /dev/null +++ b/package/python-httpcore/python-httpcore.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-httpcore +# +################################################################################ + +PYTHON_HTTPCORE_VERSION = 1.0.5 +PYTHON_HTTPCORE_SOURCE = httpcore-$(PYTHON_HTTPCORE_VERSION).tar.gz +PYTHON_HTTPCORE_SITE = https://files.pythonhosted.org/packages/17/b0/5e8b8674f8d203335a62fdfcfa0d11ebe09e23613c3391033cbba35f7926 +PYTHON_HTTPCORE_SETUP_TYPE = pep517 +PYTHON_HTTPCORE_LICENSE = BSD-3-Clause +PYTHON_HTTPCORE_LICENSE_FILES = LICENSE.md +PYTHON_HTTPCORE_DEPENDENCIES = \ + host-python-hatchling \ + host-python-hatch-fancy-pypi-readme + +$(eval $(python-package)) diff --git a/package/python-httplib2/Config.in b/package/python-httplib2/Config.in new file mode 100644 index 00000000..a029814f --- /dev/null +++ b/package/python-httplib2/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_HTTPLIB2 + bool "python-httplib2" + select BR2_PACKAGE_PYTHON3_ZLIB + select BR2_PACKAGE_PYTHON3_SSL + select BR2_PACKAGE_PYTHON_PYPARSING # runtime + help + httplib2 is a comprehensive HTTP client library, httplib2.py + supports many features left out of other HTTP libraries. + + https://pypi.python.org/pypi/httplib2 diff --git a/package/python-httplib2/python-httplib2.hash b/package/python-httplib2/python-httplib2.hash new file mode 100644 index 00000000..cfbf55a4 --- /dev/null +++ b/package/python-httplib2/python-httplib2.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/httplib2/json +md5 7ca0a2bfd95ba4ab4b6e28804cdb94ed httplib2-0.22.0.tar.gz +sha256 d7a10bc5ef5ab08322488bde8c726eeee5c8618723fdb399597ec58f3d82df81 httplib2-0.22.0.tar.gz +# Locally computed sha256 checksums +sha256 589eec38f72df2be203711d3b8cbece9b908c5e7ff00bc3cab7f63bae9e366b4 LICENSE diff --git a/package/python-httplib2/python-httplib2.mk b/package/python-httplib2/python-httplib2.mk new file mode 100644 index 00000000..9d7061cf --- /dev/null +++ b/package/python-httplib2/python-httplib2.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-httplib2 +# +################################################################################ + +PYTHON_HTTPLIB2_VERSION = 0.22.0 +PYTHON_HTTPLIB2_SOURCE = httplib2-$(PYTHON_HTTPLIB2_VERSION).tar.gz +PYTHON_HTTPLIB2_SITE = https://files.pythonhosted.org/packages/3d/ad/2371116b22d616c194aa25ec410c9c6c37f23599dcd590502b74db197584 +PYTHON_HTTPLIB2_SETUP_TYPE = setuptools +PYTHON_HTTPLIB2_LICENSE = MIT +PYTHON_HTTPLIB2_LICENSE_FILES = LICENSE +PYTHON_HTTPLIB2_CPE_ID_VENDOR = httplib2_project +PYTHON_HTTPLIB2_CPE_ID_PRODUCT = httplib2 + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-httpx/Config.in b/package/python-httpx/Config.in new file mode 100644 index 00000000..592cd559 --- /dev/null +++ b/package/python-httpx/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_HTTPX + bool "python-httpx" + select BR2_PACKAGE_PYTHON_ANYIO # runtime + select BR2_PACKAGE_PYTHON_CERTIFI # runtime + select BR2_PACKAGE_PYTHON_HTTPCORE # runtime + select BR2_PACKAGE_PYTHON_IDNA # runtime + select BR2_PACKAGE_PYTHON_SNIFFIO # runtime + help + The next generation HTTP client. + + https://github.com/encode/httpx diff --git a/package/python-httpx/python-httpx.hash b/package/python-httpx/python-httpx.hash new file mode 100644 index 00000000..381439f4 --- /dev/null +++ b/package/python-httpx/python-httpx.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/httpx/json +md5 d6035d561136590900678ec6c78698cb httpx-0.27.0.tar.gz +sha256 a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5 httpx-0.27.0.tar.gz +# Locally computed sha256 checksums +sha256 4ec59d544f12b5f539a3a716fd321ac58ccd8030b465221f2c880200cdf28d8d LICENSE.md diff --git a/package/python-httpx/python-httpx.mk b/package/python-httpx/python-httpx.mk new file mode 100644 index 00000000..edba2dbb --- /dev/null +++ b/package/python-httpx/python-httpx.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# python-httpx +# +################################################################################ + +PYTHON_HTTPX_VERSION = 0.27.0 +PYTHON_HTTPX_SOURCE = httpx-$(PYTHON_HTTPX_VERSION).tar.gz +PYTHON_HTTPX_SITE = https://files.pythonhosted.org/packages/5c/2d/3da5bdf4408b8b2800061c339f240c1802f2e82d55e50bd39c5a881f47f0 +PYTHON_HTTPX_SETUP_TYPE = pep517 +PYTHON_HTTPX_LICENSE = BSD-3-Clause +PYTHON_HTTPX_LICENSE_FILES = LICENSE.md +PYTHON_HTTPX_CPE_ID_VENDOR = encode +PYTHON_HTTPX_CPE_ID_PRODUCT = httpx +PYTHON_HTTPX_DEPENDENCIES = \ + host-python-hatchling \ + host-python-hatch-fancy-pypi-readme + +$(eval $(python-package)) diff --git a/package/python-huepy/0001-setup.py-drop-data_files-installs-LICENSE-to-incorre.patch b/package/python-huepy/0001-setup.py-drop-data_files-installs-LICENSE-to-incorre.patch new file mode 100644 index 00000000..3c50a443 --- /dev/null +++ b/package/python-huepy/0001-setup.py-drop-data_files-installs-LICENSE-to-incorre.patch @@ -0,0 +1,38 @@ +From ee3010004a005bc852e6b9318807f373bd89e901 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 17 Aug 2024 14:10:16 +0200 +Subject: [PATCH] setup.py: drop data_files, installs LICENSE to incorrect + place + +The data_files statement in the setup() calls installs the LICENSE +file in the wrong place: in /usr/LICENSE, or even /LICENSE depending +on the configuration. + +So let's drop this, and let setuptools install the LICENSE file +automatically: since setuptools v56, the license_files attribute is +automatically assigned to a default value, which includes "LICENSE", +so there is in fact nothing to do to the get the LICENSE file +installed at the correct location. See +https://setuptools.pypa.io/en/latest/history.html#v56-0-0. + +Upstream: https://github.com/s0md3v/huepy/pull/42 +Signed-off-by: Thomas Petazzoni +--- + setup.py | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/setup.py b/setup.py +index 8b5a726..bd41f1c 100644 +--- a/setup.py ++++ b/setup.py +@@ -30,7 +30,6 @@ setup( + keywords='hue, color, terminal color, colorama', + packages=find_packages(), + py_modules=['huepy'], +- data_files=[('', ['LICENSE'])], + include_package_data=True, + classifiers=[ + 'License :: OSI Approved :: GNU General Public License v3 (GPLv3)', +-- +2.46.0 + diff --git a/package/python-huepy/Config.in b/package/python-huepy/Config.in new file mode 100644 index 00000000..0bdd25ff --- /dev/null +++ b/package/python-huepy/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_HUEPY + bool "python-huepy" + help + Hue will help you to print awesomely in terminals. + + https://github.com/s0md3v/hue diff --git a/package/python-huepy/python-huepy.hash b/package/python-huepy/python-huepy.hash new file mode 100644 index 00000000..74b02864 --- /dev/null +++ b/package/python-huepy/python-huepy.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/huepy/json +md5 394a1072bec18c27097b053c40ddf0ea huepy-1.2.1.tar.gz +sha256 5b29beef797312fb7606188bc5cd98f78ab8f7e01576427a9312f1c9b20b759d huepy-1.2.1.tar.gz +# Locally computed sha256 checksums +sha256 8b1ba204bb69a0ade2bfcf65ef294a920f6bb361b317dba43c7ef29d96332b9b LICENSE diff --git a/package/python-huepy/python-huepy.mk b/package/python-huepy/python-huepy.mk new file mode 100644 index 00000000..cca3c342 --- /dev/null +++ b/package/python-huepy/python-huepy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-huepy +# +################################################################################ + +PYTHON_HUEPY_VERSION = 1.2.1 +PYTHON_HUEPY_SOURCE = huepy-$(PYTHON_HUEPY_VERSION).tar.gz +PYTHON_HUEPY_SITE = https://files.pythonhosted.org/packages/d6/4e/2dae447d8858a31158ca6c313f5d1902bc83b8542bb5f10c0307de2973bc +PYTHON_HUEPY_LICENSE = GPL-3.0 +PYTHON_HUEPY_LICENSE_FILES = LICENSE +PYTHON_HUEPY_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-humanize/Config.in b/package/python-humanize/Config.in new file mode 100644 index 00000000..f4f4e67b --- /dev/null +++ b/package/python-humanize/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_HUMANIZE + bool "python-humanize" + help + Python humanize package contains various common humanization + utilities, like turning a number into a fuzzy human readable + duration ('3 minutes ago') or into a human readable size or + throughput. + + http://github.com/jmoiron/humanize diff --git a/package/python-humanize/python-humanize.hash b/package/python-humanize/python-humanize.hash new file mode 100644 index 00000000..871bb9bf --- /dev/null +++ b/package/python-humanize/python-humanize.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/humanize/json +md5 5e90552713107f756788ecdd8fbe341d humanize-4.4.0.tar.gz +sha256 efb2584565cc86b7ea87a977a15066de34cdedaf341b11c851cfcfd2b964779c humanize-4.4.0.tar.gz +# Locally computed sha256 checksums +sha256 8ba6c18112a431400ad3c743f70670079b302545d98884fc2f28a91c383a0380 LICENCE diff --git a/package/python-humanize/python-humanize.mk b/package/python-humanize/python-humanize.mk new file mode 100644 index 00000000..6155954b --- /dev/null +++ b/package/python-humanize/python-humanize.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-humanize +# +################################################################################ + +PYTHON_HUMANIZE_VERSION = 4.4.0 +PYTHON_HUMANIZE_SOURCE = humanize-$(PYTHON_HUMANIZE_VERSION).tar.gz +PYTHON_HUMANIZE_SITE = https://files.pythonhosted.org/packages/51/19/3e1adf0e7a8c8361496b085edcab2ddcd85410735a2b6fdd044247fc5b75 +PYTHON_HUMANIZE_SETUP_TYPE = setuptools +PYTHON_HUMANIZE_LICENSE = MIT +PYTHON_HUMANIZE_LICENSE_FILES = LICENCE +PYTHON_HUMANIZE_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-hwdata/Config.in b/package/python-hwdata/Config.in new file mode 100644 index 00000000..923d0a7d --- /dev/null +++ b/package/python-hwdata/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_HWDATA + bool "python-hwdata" + select BR2_PACKAGE_HWDATA # runtime + select BR2_PACKAGE_HWDATA_PCI_IDS + select BR2_PACKAGE_HWDATA_PNP_IDS + select BR2_PACKAGE_HWDATA_USB_IDS + help + Provides python interface to database stored in hwdata + package. It allows you to get human readable description of + USB and PCI devices. + + https://github.com/xsuchy/python-hwdata diff --git a/package/python-hwdata/python-hwdata.hash b/package/python-hwdata/python-hwdata.hash new file mode 100644 index 00000000..57c2dd00 --- /dev/null +++ b/package/python-hwdata/python-hwdata.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/hwdata/json +md5 0344fe7a3e21041c2ef0ed36ee2bef18 hwdata-2.4.1.tar.gz +sha256 9bad80237c81cc091615179d665a3ef1213acca4caa378ff037c81f34538cde9 hwdata-2.4.1.tar.gz +# Locally computed sha256 checksums +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 LICENSE diff --git a/package/python-hwdata/python-hwdata.mk b/package/python-hwdata/python-hwdata.mk new file mode 100644 index 00000000..c277eebc --- /dev/null +++ b/package/python-hwdata/python-hwdata.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-hwdata +# +################################################################################ + +PYTHON_HWDATA_VERSION = 2.4.1 +PYTHON_HWDATA_SOURCE = hwdata-$(PYTHON_HWDATA_VERSION).tar.gz +PYTHON_HWDATA_SITE = https://files.pythonhosted.org/packages/ff/ec/4a6e57d765a63f7e9a8c5348f0bf3f7d39243dc5bc695fa1e887ca5856c8 +PYTHON_HWDATA_SETUP_TYPE = setuptools +PYTHON_HWDATA_LICENSE = GPL-2.0+ +PYTHON_HWDATA_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-hyperframe/Config.in b/package/python-hyperframe/Config.in new file mode 100644 index 00000000..fb83c895 --- /dev/null +++ b/package/python-hyperframe/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_HYPERFRAME + bool "python-hyperframe" + help + HTTP/2 framing layer for Python. + + https://github.com/python-hyper/hyperframe/ diff --git a/package/python-hyperframe/python-hyperframe.hash b/package/python-hyperframe/python-hyperframe.hash new file mode 100644 index 00000000..b39ab51a --- /dev/null +++ b/package/python-hyperframe/python-hyperframe.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/hyperframe/json +md5 153c064e8ac654aaf136b3388c36de48 hyperframe-6.0.1.tar.gz +sha256 ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914 hyperframe-6.0.1.tar.gz +# Locally computed sha256 checksums +sha256 763a9342a04df62046c9dc748a5287934eb0a5331c6863b3ca0aee20e18cb4ed LICENSE diff --git a/package/python-hyperframe/python-hyperframe.mk b/package/python-hyperframe/python-hyperframe.mk new file mode 100644 index 00000000..4b13ca51 --- /dev/null +++ b/package/python-hyperframe/python-hyperframe.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-hyperframe +# +################################################################################ + +PYTHON_HYPERFRAME_VERSION = 6.0.1 +PYTHON_HYPERFRAME_SOURCE = hyperframe-$(PYTHON_HYPERFRAME_VERSION).tar.gz +PYTHON_HYPERFRAME_SITE = https://files.pythonhosted.org/packages/5a/2a/4747bff0a17f7281abe73e955d60d80aae537a5d203f417fa1c2e7578ebb +PYTHON_HYPERFRAME_SETUP_TYPE = setuptools +PYTHON_HYPERFRAME_LICENSE = MIT +PYTHON_HYPERFRAME_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-hyperlink/Config.in b/package/python-hyperlink/Config.in new file mode 100644 index 00000000..8dad0af1 --- /dev/null +++ b/package/python-hyperlink/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_HYPERLINK + bool "python-hyperlink" + select BR2_PACKAGE_PYTHON_IDNA # runtime + help + A featureful, correct URL for Python. + + https://github.com/python-hyper/hyperlink diff --git a/package/python-hyperlink/python-hyperlink.hash b/package/python-hyperlink/python-hyperlink.hash new file mode 100644 index 00000000..c7621a96 --- /dev/null +++ b/package/python-hyperlink/python-hyperlink.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/hyperlink/json +md5 6285ac13e7d6be4157698ad7960ed490 hyperlink-21.0.0.tar.gz +sha256 427af957daa58bc909471c6c40f74c5450fa123dd093fc53efd2e91d2705a56b hyperlink-21.0.0.tar.gz +# Locally computed sha256 checksums +sha256 7468ded55310f64fbf085b8e892df81d1bcc49263bf535d3c2c58b014cfae214 LICENSE diff --git a/package/python-hyperlink/python-hyperlink.mk b/package/python-hyperlink/python-hyperlink.mk new file mode 100644 index 00000000..a80c5554 --- /dev/null +++ b/package/python-hyperlink/python-hyperlink.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-hyperlink +# +################################################################################ + +PYTHON_HYPERLINK_VERSION = 21.0.0 +PYTHON_HYPERLINK_SOURCE = hyperlink-$(PYTHON_HYPERLINK_VERSION).tar.gz +PYTHON_HYPERLINK_SITE = https://files.pythonhosted.org/packages/3a/51/1947bd81d75af87e3bb9e34593a4cf118115a8feb451ce7a69044ef1412e +PYTHON_HYPERLINK_SETUP_TYPE = setuptools +PYTHON_HYPERLINK_LICENSE = MIT +PYTHON_HYPERLINK_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-ibmiotf/Config.in b/package/python-ibmiotf/Config.in new file mode 100644 index 00000000..64362db9 --- /dev/null +++ b/package/python-ibmiotf/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_IBMIOTF + bool "python-ibmiotf" + select BR2_PACKAGE_PYTHON_ISO8601 # runtime + select BR2_PACKAGE_PYTHON_PAHO_MQTT # runtime + select BR2_PACKAGE_PYTHON_PYTZ # runtime + select BR2_PACKAGE_PYTHON_REQUESTS # runtime + select BR2_PACKAGE_PYTHON_REQUESTS_TOOLBELT # runtime + select BR2_PACKAGE_PYTHON3_SSL # runtime + help + Python Client for IBM Watson IoT Platform. + + https://github.com/ibm-watson-iot/iot-python diff --git a/package/python-ibmiotf/python-ibmiotf.hash b/package/python-ibmiotf/python-ibmiotf.hash new file mode 100644 index 00000000..9ed99c4f --- /dev/null +++ b/package/python-ibmiotf/python-ibmiotf.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/ibmiotf/json +md5 a103427c15b2bc96d72de5e58975638c ibmiotf-0.4.0.tar.gz +sha256 753a29858d48ebd89aff8b73c207028814714d8a004a3c19b436c9bbeaa65ce6 ibmiotf-0.4.0.tar.gz +# Locally computed sha256 checksums +sha256 2c153c48f67e56031036fc28d12f76238a5151494bdfc24b6b81ec734c387a2d LICENSE diff --git a/package/python-ibmiotf/python-ibmiotf.mk b/package/python-ibmiotf/python-ibmiotf.mk new file mode 100644 index 00000000..62ffba5b --- /dev/null +++ b/package/python-ibmiotf/python-ibmiotf.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-ibmiotf +# +################################################################################ + +PYTHON_IBMIOTF_VERSION = 0.4.0 +PYTHON_IBMIOTF_SOURCE = ibmiotf-$(PYTHON_IBMIOTF_VERSION).tar.gz +PYTHON_IBMIOTF_SITE = https://files.pythonhosted.org/packages/78/05/029ca6f78b788a3c55157fd11bb63922d002d75df982ffb8243f450a750e +PYTHON_IBMIOTF_SETUP_TYPE = setuptools +PYTHON_IBMIOTF_LICENSE = EPL-1.0 +PYTHON_IBMIOTF_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-idna/Config.in b/package/python-idna/Config.in new file mode 100644 index 00000000..ddc2cd7d --- /dev/null +++ b/package/python-idna/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_IDNA + bool "python-idna" + select BR2_PACKAGE_PYTHON3_UNICODEDATA + help + A library to support the Internationalised Domain Names in + Applications (IDNA) protocol as specified in RFC 5891. This + version of the protocol is often referred to as 'IDNA2008' + and can produce different results from the earlier standard + from 2003. + + https://github.com/kjd/idna diff --git a/package/python-idna/python-idna.hash b/package/python-idna/python-idna.hash new file mode 100644 index 00000000..7b22841d --- /dev/null +++ b/package/python-idna/python-idna.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/idna/json +md5 31cc572cb7a6519159c927c998c64c79 idna-3.7.tar.gz +sha256 028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc idna-3.7.tar.gz +# Locally computed sha256 checksums +sha256 a59f0b0ef3635874109a4461ca44ff7a70d50696e814767bfaf721d4c9b0db0f LICENSE.md diff --git a/package/python-idna/python-idna.mk b/package/python-idna/python-idna.mk new file mode 100644 index 00000000..b3c012ed --- /dev/null +++ b/package/python-idna/python-idna.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-idna +# +################################################################################ + +PYTHON_IDNA_VERSION = 3.7 +PYTHON_IDNA_SOURCE = idna-$(PYTHON_IDNA_VERSION).tar.gz +PYTHON_IDNA_SITE = https://files.pythonhosted.org/packages/21/ed/f86a79a07470cb07819390452f178b3bef1d375f2ec021ecfc709fc7cf07 +PYTHON_IDNA_LICENSE = BSD-3-Clause +PYTHON_IDNA_LICENSE_FILES = LICENSE.md +PYTHON_IDNA_SETUP_TYPE = flit + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-ifaddr/Config.in b/package/python-ifaddr/Config.in new file mode 100644 index 00000000..64e9a3aa --- /dev/null +++ b/package/python-ifaddr/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_IFADDR + bool "python-ifaddr" + help + Enumerates all IP addresses on all network adapters of the + system. + + https://github.com/pydron/ifaddr diff --git a/package/python-ifaddr/python-ifaddr.hash b/package/python-ifaddr/python-ifaddr.hash new file mode 100644 index 00000000..e3c2b13b --- /dev/null +++ b/package/python-ifaddr/python-ifaddr.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/ifaddr/json +md5 b1cac02b5dc354d68dd6d853bc9565a7 ifaddr-0.2.0.tar.gz +sha256 cc0cbfcaabf765d44595825fb96a99bb12c79716b73b44330ea38ee2b0c4aed4 ifaddr-0.2.0.tar.gz +# Locally computed sha256 checksums +sha256 8700856576ae2bc80c63bc970250510d9213fb02fed006d5f22742c9ddde24d7 LICENSE.txt diff --git a/package/python-ifaddr/python-ifaddr.mk b/package/python-ifaddr/python-ifaddr.mk new file mode 100644 index 00000000..9b7d50d8 --- /dev/null +++ b/package/python-ifaddr/python-ifaddr.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-ifaddr +# +################################################################################ + +PYTHON_IFADDR_VERSION = 0.2.0 +PYTHON_IFADDR_SOURCE = ifaddr-$(PYTHON_IFADDR_VERSION).tar.gz +PYTHON_IFADDR_SITE = https://files.pythonhosted.org/packages/e8/ac/fb4c578f4a3256561548cd825646680edcadb9440f3f68add95ade1eb791 +PYTHON_IFADDR_SETUP_TYPE = setuptools +PYTHON_IFADDR_LICENSE = MIT +PYTHON_IFADDR_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-incremental/Config.in b/package/python-incremental/Config.in new file mode 100644 index 00000000..c895e820 --- /dev/null +++ b/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/twisted/incremental diff --git a/package/python-incremental/python-incremental.hash b/package/python-incremental/python-incremental.hash new file mode 100644 index 00000000..456e8ca1 --- /dev/null +++ b/package/python-incremental/python-incremental.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/incremental/json +md5 9fffa2490ca649550c79a78e85ef2eef incremental-22.10.0.tar.gz +sha256 912feeb5e0f7e0188e6f42241d2f450002e11bbc0937c65865045854c24c0bd0 incremental-22.10.0.tar.gz +# Locally computed sha256 checksums +sha256 d043bc8899b4695de1f4511d8f507b927e11723b981ce600fa3ef7b73954afa5 LICENSE diff --git a/package/python-incremental/python-incremental.mk b/package/python-incremental/python-incremental.mk new file mode 100644 index 00000000..4b032d26 --- /dev/null +++ b/package/python-incremental/python-incremental.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-incremental +# +################################################################################ + +PYTHON_INCREMENTAL_VERSION = 22.10.0 +PYTHON_INCREMENTAL_SOURCE = incremental-$(PYTHON_INCREMENTAL_VERSION).tar.gz +PYTHON_INCREMENTAL_SITE = https://files.pythonhosted.org/packages/86/42/9e87f04fa2cd40e3016f27a4b4572290e95899c6dce317e2cdb580f3ff09 +PYTHON_INCREMENTAL_SETUP_TYPE = setuptools +PYTHON_INCREMENTAL_LICENSE = MIT +PYTHON_INCREMENTAL_LICENSE_FILES = LICENSE + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-inflect/Config.in b/package/python-inflect/Config.in new file mode 100644 index 00000000..daf6bd4a --- /dev/null +++ b/package/python-inflect/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_INFLECT + bool "python-inflect" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-pydantic -> python-pydantic-core + select BR2_PACKAGE_PYTHON_PYDANTIC # runtime + select BR2_PACKAGE_PYTHON_TYPING_EXTENSIONS # runtime + help + Correctly generate plurals, singular nouns, ordinals, + indefinite articles; convert numbers to words. + + https://github.com/jaraco/inflect diff --git a/package/python-inflect/python-inflect.hash b/package/python-inflect/python-inflect.hash new file mode 100644 index 00000000..3faa4cc5 --- /dev/null +++ b/package/python-inflect/python-inflect.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/inflect/json +md5 61c670cf5c4d09314f6a4d3b99d3b98d inflect-7.0.0.tar.gz +sha256 63da9325ad29da81ec23e055b41225795ab793b4ecb483be5dc1fa363fd4717e inflect-7.0.0.tar.gz +# Locally computed sha256 checksums +sha256 86da0f01aeae46348a3c3d465195dc1ceccde79f79e87769a64b8da04b2a4741 LICENSE diff --git a/package/python-inflect/python-inflect.mk b/package/python-inflect/python-inflect.mk new file mode 100644 index 00000000..cef4c066 --- /dev/null +++ b/package/python-inflect/python-inflect.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-inflect +# +################################################################################ + +PYTHON_INFLECT_VERSION = 7.0.0 +PYTHON_INFLECT_SOURCE = inflect-$(PYTHON_INFLECT_VERSION).tar.gz +PYTHON_INFLECT_SITE = https://files.pythonhosted.org/packages/9f/90/1d0a889847fdce963ebe9684de24a749e4fad627bf595e9f0d32730f85a8 +PYTHON_INFLECT_SETUP_TYPE = setuptools +PYTHON_INFLECT_LICENSE = MIT +PYTHON_INFLECT_LICENSE_FILES = LICENSE +PYTHON_INFLECT_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-inflection/Config.in b/package/python-inflection/Config.in new file mode 100644 index 00000000..84240060 --- /dev/null +++ b/package/python-inflection/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_INFLECTION + bool "python-inflection" + select BR2_PACKAGE_PYTHON3_UNICODEDATA + help + A string transformation library that singularizes and + pluralizes English words, and transforms strings from + CamelCase to underscored string. + + Inflection is a port of Ruby on Rails' inflector to Python + + https://github.com/jpvanhal/inflection diff --git a/package/python-inflection/python-inflection.hash b/package/python-inflection/python-inflection.hash new file mode 100644 index 00000000..b170d3f6 --- /dev/null +++ b/package/python-inflection/python-inflection.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/inflection/json +md5 c3287d4f0e3bdf625a52d655cc514403 inflection-0.5.1.tar.gz +sha256 1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417 inflection-0.5.1.tar.gz +# Locally computed sha256 checksums +sha256 9e9f9b4b2e7543ad1486f1328bf9ec50e5a5e2bb9caceb59652496dd61e64133 LICENSE diff --git a/package/python-inflection/python-inflection.mk b/package/python-inflection/python-inflection.mk new file mode 100644 index 00000000..7c030e99 --- /dev/null +++ b/package/python-inflection/python-inflection.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-inflection +# +################################################################################ + +PYTHON_INFLECTION_VERSION = 0.5.1 +PYTHON_INFLECTION_SOURCE = inflection-$(PYTHON_INFLECTION_VERSION).tar.gz +PYTHON_INFLECTION_SITE = https://files.pythonhosted.org/packages/e1/7e/691d061b7329bc8d54edbf0ec22fbfb2afe61facb681f9aaa9bff7a27d04 +PYTHON_INFLECTION_SETUP_TYPE = setuptools +PYTHON_INFLECTION_LICENSE = MIT +PYTHON_INFLECTION_LICENSE_FILES = LICENSE + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-influxdb/Config.in b/package/python-influxdb/Config.in new file mode 100644 index 00000000..6ebbd4aa --- /dev/null +++ b/package/python-influxdb/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_INFLUXDB + bool "python-influxdb" + select BR2_PACKAGE_PYTHON_DATEUTIL # runtime + select BR2_PACKAGE_PYTHON_MSGPACK # runtime + select BR2_PACKAGE_PYTHON_PYTZ # runtime + select BR2_PACKAGE_PYTHON_REQUESTS # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + help + InfluxDB client. + + https://github.com/influxdb/influxdb-python diff --git a/package/python-influxdb/python-influxdb.hash b/package/python-influxdb/python-influxdb.hash new file mode 100644 index 00000000..e86bd8c2 --- /dev/null +++ b/package/python-influxdb/python-influxdb.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/influxdb/json +md5 e5888a7023e9a49d8a372538b625f908 influxdb-5.3.1.tar.gz +sha256 46f85e7b04ee4b3dee894672be6a295c94709003a7ddea8820deec2ac4d8b27a influxdb-5.3.1.tar.gz +# Locally computed sha256 checksums +sha256 b654917e2c25a69d2bd56e72dddbc6eb29bf7e40384d7c46bb291d5c5185213b LICENSE diff --git a/package/python-influxdb/python-influxdb.mk b/package/python-influxdb/python-influxdb.mk new file mode 100644 index 00000000..d77cb89d --- /dev/null +++ b/package/python-influxdb/python-influxdb.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-influxdb +# +################################################################################ + +PYTHON_INFLUXDB_VERSION = 5.3.1 +PYTHON_INFLUXDB_SOURCE = influxdb-$(PYTHON_INFLUXDB_VERSION).tar.gz +PYTHON_INFLUXDB_SITE = https://files.pythonhosted.org/packages/86/4f/a9c524576677c1694b149e09d4fd6342e4a1d9a5f409e437168a14d6d150 +PYTHON_INFLUXDB_SETUP_TYPE = setuptools +PYTHON_INFLUXDB_LICENSE = MIT +PYTHON_INFLUXDB_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-iniconfig/Config.in b/package/python-iniconfig/Config.in new file mode 100644 index 00000000..a288da8a --- /dev/null +++ b/package/python-iniconfig/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_INICONFIG + bool "python-iniconfig" + help + iniconfig: brain-dead simple config-ini parsing. + + http://github.com/RonnyPfannschmidt/iniconfig diff --git a/package/python-iniconfig/python-iniconfig.hash b/package/python-iniconfig/python-iniconfig.hash new file mode 100644 index 00000000..541ae3e3 --- /dev/null +++ b/package/python-iniconfig/python-iniconfig.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/iniconfig/json +md5 3c030b3f51dcc3aca585de05635600e4 iniconfig-2.0.0.tar.gz +sha256 2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 iniconfig-2.0.0.tar.gz +# Locally computed sha256 checksums +sha256 2af680c39ef493fb82830356d1d3df1acb5a06033cba2dec7a19e21caa77a866 LICENSE diff --git a/package/python-iniconfig/python-iniconfig.mk b/package/python-iniconfig/python-iniconfig.mk new file mode 100644 index 00000000..99e946f0 --- /dev/null +++ b/package/python-iniconfig/python-iniconfig.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-iniconfig +# +################################################################################ + +PYTHON_INICONFIG_VERSION = 2.0.0 +PYTHON_INICONFIG_SOURCE = iniconfig-$(PYTHON_INICONFIG_VERSION).tar.gz +PYTHON_INICONFIG_SITE = https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913 +PYTHON_INICONFIG_SETUP_TYPE = pep517 +PYTHON_INICONFIG_LICENSE = MIT +PYTHON_INICONFIG_LICENSE_FILES = LICENSE +PYTHON_INICONFIG_DEPENDENCIES = host-python-hatchling host-python-hatch-vcs + +$(eval $(python-package)) diff --git a/package/python-iniparse/Config.in b/package/python-iniparse/Config.in new file mode 100644 index 00000000..3d9c02e4 --- /dev/null +++ b/package/python-iniparse/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_INIPARSE + bool "python-iniparse" + select BR2_PACKAGE_PYTHON_SIX # runtime + help + iniparse is an INI parser for Python which is API compatible + with the standard library's ConfigParser, preserves + structure of INI files (order of sections & options, + indentation, comments, and blank lines are preserved when + data is updated), and is more convenient to use. + + https://pypi.python.org/pypi/iniparse diff --git a/package/python-iniparse/Config.in.host b/package/python-iniparse/Config.in.host new file mode 100644 index 00000000..e93022e8 --- /dev/null +++ b/package/python-iniparse/Config.in.host @@ -0,0 +1,11 @@ +config BR2_PACKAGE_HOST_PYTHON_INIPARSE + bool "host python-iniparse" + select BR2_PACKAGE_HOST_PYTHON_SIX # runtime + help + iniparse is an INI parser for Python which is API compatible + with the standard library's ConfigParser, preserves + structure of INI files (order of sections & options, + indentation, comments, and blank lines are preserved when + data is updated), and is more convenient to use. + + https://pypi.python.org/pypi/iniparse diff --git a/package/python-iniparse/python-iniparse.hash b/package/python-iniparse/python-iniparse.hash new file mode 100644 index 00000000..afcfcd2f --- /dev/null +++ b/package/python-iniparse/python-iniparse.hash @@ -0,0 +1,7 @@ +# From https://pypi.org/project/iniparse/#copy-hash-modal-5fdd923b-0592-4d2d-8b49-03472f948290 +md5 2054bab923df21107652d009f2373789 iniparse-0.5.tar.gz +sha256 932e5239d526e7acb504017bb707be67019ac428a6932368e6851691093aa842 iniparse-0.5.tar.gz + +# sha256 locally computed +sha256 ff45637d8a96adc414179e502fbed40160e57205bf2e302140e79a0c71eceaa7 LICENSE +sha256 9b02e3dfe433ccd2bd94636ef6eb08638b5a54deafe5f87a3d9d9104356c48e0 LICENSE-PSF diff --git a/package/python-iniparse/python-iniparse.mk b/package/python-iniparse/python-iniparse.mk new file mode 100644 index 00000000..9f00cf73 --- /dev/null +++ b/package/python-iniparse/python-iniparse.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# python-iniparse +# +################################################################################ + +PYTHON_INIPARSE_VERSION = 0.5 +PYTHON_INIPARSE_SOURCE = iniparse-$(PYTHON_INIPARSE_VERSION).tar.gz +PYTHON_INIPARSE_SITE = https://pypi.python.org/packages/source/i/iniparse +PYTHON_INIPARSE_LICENSE = Python-2.0, MIT +PYTHON_INIPARSE_LICENSE_FILES = LICENSE-PSF LICENSE +PYTHON_INIPARSE_SETUP_TYPE = setuptools +# This is a runtime dependency, but we don't have the concept of +# runtime dependencies for host packages. +HOST_PYTHON_INIPARSE_DEPENDENCIES = host-python-six + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-installer/python-installer.hash b/package/python-installer/python-installer.hash new file mode 100644 index 00000000..577b23a7 --- /dev/null +++ b/package/python-installer/python-installer.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/installer/json +md5 d961d1105c9270049528b1167ed021bc installer-0.7.0.tar.gz +sha256 a26d3e3116289bb08216e0d0f7d925fcef0b0194eedfa0c944bcaaa106c4b631 installer-0.7.0.tar.gz +# Locally computed sha256 checksums +sha256 37b8b9f2569892fa54406383d431169dbb2115980d78b7efba6eeae5664c484f LICENSE diff --git a/package/python-installer/python-installer.mk b/package/python-installer/python-installer.mk new file mode 100644 index 00000000..094a9180 --- /dev/null +++ b/package/python-installer/python-installer.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-installer +# +################################################################################ + +PYTHON_INSTALLER_VERSION = 0.7.0 +PYTHON_INSTALLER_SOURCE = installer-$(PYTHON_INSTALLER_VERSION).tar.gz +PYTHON_INSTALLER_SITE = https://files.pythonhosted.org/packages/05/18/ceeb4e3ab3aa54495775775b38ae42b10a92f42ce42dfa44da684289b8c8 +PYTHON_INSTALLER_LICENSE = MIT +PYTHON_INSTALLER_LICENSE_FILES = LICENSE +PYTHON_INSTALLER_SETUP_TYPE = flit-bootstrap +HOST_PYTHON_INSTALLER_DEPENDENCIES = host-python-flit-core +HOST_PYTHON_INSTALLER_ENV = PYTHONPATH="$(@D)/src" + +$(eval $(host-python-package)) diff --git a/package/python-intelhex/Config.in b/package/python-intelhex/Config.in new file mode 100644 index 00000000..d67de822 --- /dev/null +++ b/package/python-intelhex/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_INTELHEX + bool "python-intelhex" + help + Python library for Intel HEX files manipulations. + + https://github.com/python-intelhex/intelhex diff --git a/package/python-intelhex/python-intelhex.hash b/package/python-intelhex/python-intelhex.hash new file mode 100644 index 00000000..917bd72c --- /dev/null +++ b/package/python-intelhex/python-intelhex.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/intelhex/json +md5 9de0e92c1b66f75322581c8b22c020c2 intelhex-2.3.0.tar.gz +sha256 892b7361a719f4945237da8ccf754e9513db32f5628852785aea108dcd250093 intelhex-2.3.0.tar.gz +# Locally computed sha256 checksums +sha256 1b2eb032ab8a1b0266f7995c76e44509f89ca9c0e90ec507763b5e735aca7de4 LICENSE.txt diff --git a/package/python-intelhex/python-intelhex.mk b/package/python-intelhex/python-intelhex.mk new file mode 100644 index 00000000..cc8b973f --- /dev/null +++ b/package/python-intelhex/python-intelhex.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-intelhex +# +################################################################################ + +PYTHON_INTELHEX_VERSION = 2.3.0 +PYTHON_INTELHEX_SOURCE = intelhex-$(PYTHON_INTELHEX_VERSION).tar.gz +PYTHON_INTELHEX_SITE = https://files.pythonhosted.org/packages/66/37/1e7522494557d342a24cb236e2aec5d078fac8ed03ad4b61372586406b01 +PYTHON_INTELHEX_SETUP_TYPE = setuptools +PYTHON_INTELHEX_LICENSE = BSD-3-Clause +PYTHON_INTELHEX_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-iowait/Config.in b/package/python-iowait/Config.in new file mode 100644 index 00000000..ebe96db1 --- /dev/null +++ b/package/python-iowait/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_IOWAIT + bool "python-iowait" + help + Platform-independent module for I/O completion events. + + https://launchpad.net/python-iowait diff --git a/package/python-iowait/python-iowait.hash b/package/python-iowait/python-iowait.hash new file mode 100644 index 00000000..fc10e180 --- /dev/null +++ b/package/python-iowait/python-iowait.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/iowait/json, sha256 locally computed +md5 f49ca7766fe4a67e03a731e575614f87 iowait-0.2.tar.gz +sha256 ab1bc2eb84c22ccf61f17a0024f9fb6df781b39f1852764a66a7769d5adfb299 iowait-0.2.tar.gz +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 COPYING.LESSER diff --git a/package/python-iowait/python-iowait.mk b/package/python-iowait/python-iowait.mk new file mode 100644 index 00000000..028001d7 --- /dev/null +++ b/package/python-iowait/python-iowait.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-iowait +# +################################################################################ + +PYTHON_IOWAIT_VERSION = 0.2 +PYTHON_IOWAIT_SOURCE = iowait-$(PYTHON_IOWAIT_VERSION).tar.gz +PYTHON_IOWAIT_SITE = https://pypi.python.org/packages/65/30/e953673fe9619938e9c74408401cf865f37716da89f61f6e5d9328c0f71e +PYTHON_IOWAIT_SETUP_TYPE = setuptools +PYTHON_IOWAIT_LICENSE = LGPL-3.0+ +PYTHON_IOWAIT_LICENSE_FILES = COPYING.LESSER + +$(eval $(python-package)) diff --git a/package/python-ipdb/Config.in b/package/python-ipdb/Config.in new file mode 100644 index 00000000..9259421c --- /dev/null +++ b/package/python-ipdb/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_IPDB + bool "python-ipdb" + select BR2_PACKAGE_PYTHON_IPYTHON # runtime + help + IPython-enabled pdb. + + https://github.com/gotcha/ipdb diff --git a/package/python-ipdb/python-ipdb.hash b/package/python-ipdb/python-ipdb.hash new file mode 100644 index 00000000..041df3b2 --- /dev/null +++ b/package/python-ipdb/python-ipdb.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/ipdb/json +md5 e1e25e7221c0a09880cc5ee3fec1fbe4 ipdb-0.13.13.tar.gz +sha256 e3ac6018ef05126d442af680aad863006ec19d02290561ac88b8b1c0b0cfc726 ipdb-0.13.13.tar.gz +# Locally computed sha256 checksums +sha256 4eeb49de04f4894f8ea1f69a04f500799041b750b3d554c06de5ca877258e734 COPYING.txt diff --git a/package/python-ipdb/python-ipdb.mk b/package/python-ipdb/python-ipdb.mk new file mode 100644 index 00000000..71f70be5 --- /dev/null +++ b/package/python-ipdb/python-ipdb.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-ipdb +# +################################################################################ + +PYTHON_IPDB_VERSION = 0.13.13 +PYTHON_IPDB_SOURCE = ipdb-$(PYTHON_IPDB_VERSION).tar.gz +PYTHON_IPDB_SITE = https://files.pythonhosted.org/packages/3d/1b/7e07e7b752017f7693a0f4d41c13e5ca29ce8cbcfdcc1fd6c4ad8c0a27a0 +PYTHON_IPDB_SETUP_TYPE = setuptools +PYTHON_IPDB_LICENSE = BSD-3-Clause +PYTHON_IPDB_LICENSE_FILES = COPYING.txt + +$(eval $(python-package)) diff --git a/package/python-iptables/0001-use-sysconfig-get_path-instead-of-get_python_lib.patch b/package/python-iptables/0001-use-sysconfig-get_path-instead-of-get_python_lib.patch new file mode 100644 index 00000000..2a4de3da --- /dev/null +++ b/package/python-iptables/0001-use-sysconfig-get_path-instead-of-get_python_lib.patch @@ -0,0 +1,40 @@ +From fd415a3613fad872062fb7cb4e271ac1476402ef Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Tue, 24 Oct 2023 08:47:12 +0200 +Subject: [PATCH] use sysconfig.get_path instead of get_python_lib + +Distutils has been removed from python 3.12.0. Use sysconfig.get_path instead +of get_python_lib. + +Upstream: https://github.com/ldx/python-iptables/pull/340 + +Signed-off-by: Adam Duskett +--- + iptc/util.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/iptc/util.py b/iptc/util.py +index 04fe905..94befc5 100644 +--- a/iptc/util.py ++++ b/iptc/util.py +@@ -3,7 +3,7 @@ import os + import sys + import ctypes + import ctypes.util +-from distutils.sysconfig import get_python_lib ++import sysconfig + from itertools import product + from subprocess import Popen, PIPE + from sys import version_info +@@ -64,7 +64,7 @@ def _do_find_library(name): + + # probably we have been installed in a virtualenv + try: +- lib = ctypes.CDLL(os.path.join(get_python_lib(), name), ++ lib = ctypes.CDLL(os.path.join(sysconfig.get_path("purelib"), name), + mode=ctypes.RTLD_GLOBAL) + return lib + except: +-- +2.41.0 + diff --git a/package/python-iptables/Config.in b/package/python-iptables/Config.in new file mode 100644 index 00000000..0e24283d --- /dev/null +++ b/package/python-iptables/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_IPTABLES + bool "python-iptables" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_IPTABLES + help + Python bindings for iptables. + + https://github.com/ldx/python-iptables + +comment "python-iptables needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/python-iptables/python-iptables.hash b/package/python-iptables/python-iptables.hash new file mode 100644 index 00000000..1b7c9e93 --- /dev/null +++ b/package/python-iptables/python-iptables.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/python-iptables/json +md5 bd6950c1ed9c6b48b7d552ff8e6766c5 python-iptables-1.0.1.tar.gz +sha256 1989f2b48598392c3574052a95f456985cb06fb4287b61bf8794e93ebc37eddb python-iptables-1.0.1.tar.gz + +# Locally calculated +sha256 b827789c74144d9bb92595ed3bc568aef767a7e8d930fba61c2cdd9f6ec27599 NOTICE diff --git a/package/python-iptables/python-iptables.mk b/package/python-iptables/python-iptables.mk new file mode 100644 index 00000000..d01545d8 --- /dev/null +++ b/package/python-iptables/python-iptables.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# python-iptables +# +################################################################################ + +PYTHON_IPTABLES_VERSION = 1.0.1 +PYTHON_IPTABLES_SITE = https://files.pythonhosted.org/packages/35/e4/33e639b9e153c2d798d73342a96715a4edca6f46431d763b275a34b3aeca +PYTHON_IPTABLES_SETUP_TYPE = setuptools +PYTHON_IPTABLES_LICENSE = Apache-2.0 +PYTHON_IPTABLES_LICENSE_FILES = NOTICE +PYTHON_IPTABLES_DEPENDENCIES = iptables + +define PYTHON_IPTABLES_SET_XTABLES_ENV_VARS + XTABLES_VERSION=`awk '/XTABLES_VERSION_CODE/ {print $$NF}' $(STAGING_DIR)/usr/include/xtables-version.h`; \ + sed -i "s%os.getenv(\"PYTHON_IPTABLES_XTABLES_VERSION\")%$$XTABLES_VERSION%" $(@D)/iptc/xtables.py + sed -i "s%os.getenv(\"XTABLES_LIBDIR\")%\"/usr/lib/xtables\"%" $(@D)/iptc/xtables.py + sed -i "s%os.environ.get('IPTABLES_LIBDIR', None)%\"/usr/lib\"%" $(@D)/iptc/util.py +endef + +PYTHON_IPTABLES_PRE_BUILD_HOOKS += PYTHON_IPTABLES_SET_XTABLES_ENV_VARS + +$(eval $(python-package)) diff --git a/package/python-ipy/Config.in b/package/python-ipy/Config.in new file mode 100644 index 00000000..b4f0c8cb --- /dev/null +++ b/package/python-ipy/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_IPY + bool "python-ipy" + help + IPy - class and tools for handling of IPv4 and + IPv6 addresses and networks. + + https://github.com/haypo/python-ipy/ diff --git a/package/python-ipy/python-ipy.hash b/package/python-ipy/python-ipy.hash new file mode 100644 index 00000000..3d8e1e8c --- /dev/null +++ b/package/python-ipy/python-ipy.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/ipy/json +md5 d6cf83e7f418ebbd23324ba1c658b907 IPy-1.01.tar.gz +sha256 edeca741dea2d54aca568fa23740288c3fe86c0f3ea700344571e9ef14a7cc1a IPy-1.01.tar.gz +# Locally computed sha256 checksums +sha256 078bb46799e46e51e7239c24ff130d345db911c11efafef5e3c45dfb7adb0a61 COPYING diff --git a/package/python-ipy/python-ipy.mk b/package/python-ipy/python-ipy.mk new file mode 100644 index 00000000..ec03adcb --- /dev/null +++ b/package/python-ipy/python-ipy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-ipy +# +################################################################################ + +PYTHON_IPY_VERSION = 1.01 +PYTHON_IPY_SOURCE = IPy-$(PYTHON_IPY_VERSION).tar.gz +PYTHON_IPY_SITE = https://files.pythonhosted.org/packages/64/a4/9c0d88d95666ff1571d7baec6c5e26abc08051801feb6e6ddf40f6027e22 +PYTHON_IPY_LICENSE = BSD-3-Clause +PYTHON_IPY_LICENSE_FILES = COPYING +PYTHON_IPY_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-ipython-genutils/Config.in b/package/python-ipython-genutils/Config.in new file mode 100644 index 00000000..d49442ee --- /dev/null +++ b/package/python-ipython-genutils/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_IPYTHON_GENUTILS + bool "python-ipython-genutils" + help + IPython vestigial utilities + + https://pypi.python.org/pypi/ipython_genutils diff --git a/package/python-ipython-genutils/python-ipython-genutils.hash b/package/python-ipython-genutils/python-ipython-genutils.hash new file mode 100644 index 00000000..fd719c93 --- /dev/null +++ b/package/python-ipython-genutils/python-ipython-genutils.hash @@ -0,0 +1,5 @@ +# md5 from https://pypi.python.org/pypi/ipython_genutils/json +md5 5a4f9781f78466da0ea1a648f3e1f79f ipython_genutils-0.2.0.tar.gz +# Locally computed +sha256 eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8 ipython_genutils-0.2.0.tar.gz +sha256 f09da6c0f4971485f6fbd6c630d0d6cdd012bfe128b2ebbd014de2f6c7c7e2a6 COPYING.md diff --git a/package/python-ipython-genutils/python-ipython-genutils.mk b/package/python-ipython-genutils/python-ipython-genutils.mk new file mode 100644 index 00000000..08a0b8ba --- /dev/null +++ b/package/python-ipython-genutils/python-ipython-genutils.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-ipython-genutils +# +################################################################################ + +PYTHON_IPYTHON_GENUTILS_VERSION = 0.2.0 +PYTHON_IPYTHON_GENUTILS_SOURCE = ipython_genutils-$(PYTHON_IPYTHON_GENUTILS_VERSION).tar.gz +PYTHON_IPYTHON_GENUTILS_SITE = https://pypi.python.org/packages/e8/69/fbeffffc05236398ebfcfb512b6d2511c622871dca1746361006da310399 +PYTHON_IPYTHON_GENUTILS_LICENSE = BSD-3-Clause +PYTHON_IPYTHON_GENUTILS_LICENSE_FILES = COPYING.md +PYTHON_IPYTHON_GENUTILS_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-ipython/Config.in b/package/python-ipython/Config.in new file mode 100644 index 00000000..87cc3969 --- /dev/null +++ b/package/python-ipython/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_PYTHON_IPYTHON + bool "python-ipython" + select BR2_PACKAGE_PYTHON3_SQLITE # runtime + select BR2_PACKAGE_PYTHON_BACKCALL # runtime + select BR2_PACKAGE_PYTHON_DECORATOR # runtime + select BR2_PACKAGE_PYTHON_JEDI # runtime + select BR2_PACKAGE_PYTHON_MATPLOTLIB_INLINE # runtime + select BR2_PACKAGE_PYTHON_PICKLESHARE # runtime + select BR2_PACKAGE_PYTHON_PROMPT_TOOLKIT # runtime + select BR2_PACKAGE_PYTHON_PYGMENTS # runtime + select BR2_PACKAGE_PYTHON_PEXPECT # runtime + select BR2_PACKAGE_PYTHON_STACK_DATA # runtime + select BR2_PACKAGE_PYTHON_TRAITLETS # runtime + help + IPython is a command shell for interactive computing in + multiple programming languages, originally developed for the + Python programming language, that offers enhanced + introspection, rich media, additional shell syntax, tab + completion, and rich history. + + http://ipython.org/ diff --git a/package/python-ipython/python-ipython.hash b/package/python-ipython/python-ipython.hash new file mode 100644 index 00000000..33f70885 --- /dev/null +++ b/package/python-ipython/python-ipython.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/ipython/json +md5 eee726e4cef5fd680110a899b4e5e2cb ipython-8.20.0.tar.gz +sha256 2f21bd3fc1d51550c89ee3944ae04bbc7bc79e129ea0937da6e6c68bfdbf117a ipython-8.20.0.tar.gz +# Locally computed sha256 checksums +sha256 341afcbd729887b7046fe7b98fc4f4edff3aed8d38f06eefd9b30670f043df17 COPYING.rst +sha256 e0e390748ed440ab893ca1f135a88a920aaf5409dbb90a5b427c75c5e51268fb LICENSE diff --git a/package/python-ipython/python-ipython.mk b/package/python-ipython/python-ipython.mk new file mode 100644 index 00000000..d3c2c05a --- /dev/null +++ b/package/python-ipython/python-ipython.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-ipython +# +################################################################################ + +PYTHON_IPYTHON_VERSION = 8.20.0 +PYTHON_IPYTHON_SOURCE = ipython-$(PYTHON_IPYTHON_VERSION).tar.gz +PYTHON_IPYTHON_SITE = https://files.pythonhosted.org/packages/c5/d1/187474d64bdefcb6804c1a3a1597d9e94f287e71c06f50f7784d56833fb7 +PYTHON_IPYTHON_LICENSE = BSD-3-Clause +PYTHON_IPYTHON_LICENSE_FILES = COPYING.rst LICENSE +PYTHON_IPYTHON_CPE_ID_VENDOR = ipython +PYTHON_IPYTHON_CPE_ID_PRODUCT = ipython +PYTHON_IPYTHON_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-iso8601/Config.in b/package/python-iso8601/Config.in new file mode 100644 index 00000000..9d61b1d4 --- /dev/null +++ b/package/python-iso8601/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_ISO8601 + bool "python-iso8601" + help + Simple module to parse ISO 8601 dates. + + https://github.com/micktwomey/pyiso8601 diff --git a/package/python-iso8601/python-iso8601.hash b/package/python-iso8601/python-iso8601.hash new file mode 100644 index 00000000..fe643ce8 --- /dev/null +++ b/package/python-iso8601/python-iso8601.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/iso8601/json +md5 6e33910eba87066b3be7fcf3d59d16b5 iso8601-2.1.0.tar.gz +sha256 6b1d3829ee8921c4301998c909f7829fa9ed3cbdac0d3b16af2d743aed1ba8df iso8601-2.1.0.tar.gz +# Locally computed sha256 checksums +sha256 516b02cd11e78c37a04f9effadd85af0483dda7ab1e715eef1cc94f97dc49e13 LICENSE diff --git a/package/python-iso8601/python-iso8601.mk b/package/python-iso8601/python-iso8601.mk new file mode 100644 index 00000000..080daa46 --- /dev/null +++ b/package/python-iso8601/python-iso8601.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-iso8601 +# +################################################################################ + +PYTHON_ISO8601_VERSION = 2.1.0 +PYTHON_ISO8601_SOURCE = iso8601-$(PYTHON_ISO8601_VERSION).tar.gz +PYTHON_ISO8601_SITE = https://files.pythonhosted.org/packages/b9/f3/ef59cee614d5e0accf6fd0cbba025b93b272e626ca89fb70a3e9187c5d15 +PYTHON_ISO8601_SETUP_TYPE = pep517 +PYTHON_ISO8601_LICENSE = MIT +PYTHON_ISO8601_LICENSE_FILES = LICENSE +PYTHON_ISO8601_DEPENDENCIES = host-python-poetry-core + +$(eval $(python-package)) diff --git a/package/python-itsdangerous/Config.in b/package/python-itsdangerous/Config.in new file mode 100644 index 00000000..fc0cfe15 --- /dev/null +++ b/package/python-itsdangerous/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_ITSDANGEROUS + bool "python-itsdangerous" + select BR2_PACKAGE_PYTHON3_ZLIB # runtime + help + Itsdangerous contains various helpers to pass data to + untrusted environments and to get it back safe and sound. + + http://pythonhosted.org/itsdangerous/ diff --git a/package/python-itsdangerous/python-itsdangerous.hash b/package/python-itsdangerous/python-itsdangerous.hash new file mode 100644 index 00000000..1cac9a56 --- /dev/null +++ b/package/python-itsdangerous/python-itsdangerous.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/itsdangerous/json +md5 a901babde35694c3577f7655010cd380 itsdangerous-2.2.0.tar.gz +sha256 e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173 itsdangerous-2.2.0.tar.gz +# Locally computed sha256 checksums +sha256 63af09891b6be8ad1a4252ed43af0f4efba7fc948e228367bed7f3c5ae0b09d7 LICENSE.txt +sha256 1e07e9c25f2618a040560b70e63f42259eab24e558d0f3532e6163d751cb4eea docs/license.rst diff --git a/package/python-itsdangerous/python-itsdangerous.mk b/package/python-itsdangerous/python-itsdangerous.mk new file mode 100644 index 00000000..5fb2919c --- /dev/null +++ b/package/python-itsdangerous/python-itsdangerous.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-itsdangerous +# +################################################################################ + +PYTHON_ITSDANGEROUS_VERSION = 2.2.0 +PYTHON_ITSDANGEROUS_SOURCE = itsdangerous-$(PYTHON_ITSDANGEROUS_VERSION).tar.gz +PYTHON_ITSDANGEROUS_SITE = https://files.pythonhosted.org/packages/9c/cb/8ac0172223afbccb63986cc25049b154ecfb5e85932587206f42317be31d +PYTHON_ITSDANGEROUS_SETUP_TYPE = flit +PYTHON_ITSDANGEROUS_LICENSE = BSD-3-Clause +PYTHON_ITSDANGEROUS_LICENSE_FILES = LICENSE.txt docs/license.rst + +$(eval $(python-package)) diff --git a/package/python-iwlib/Config.in b/package/python-iwlib/Config.in new file mode 100644 index 00000000..eb28d674 --- /dev/null +++ b/package/python-iwlib/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_IWLIB + bool "python-iwlib" + depends on BR2_PACKAGE_WIRELESS_TOOLS_LIB + help + python-iwlib is a package for interfacing with iwlib, + providing an implementation to the wireless tools in Linux. + + https://github.com/nhoad/python-iwlib diff --git a/package/python-iwlib/python-iwlib.hash b/package/python-iwlib/python-iwlib.hash new file mode 100644 index 00000000..4d71a3fe --- /dev/null +++ b/package/python-iwlib/python-iwlib.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 7f1ad4354284a452388e178b5d9b191fa5a68a9183423a90a1d261ba2ebd1cac python-iwlib-1.5.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/python-iwlib/python-iwlib.mk b/package/python-iwlib/python-iwlib.mk new file mode 100644 index 00000000..9d098556 --- /dev/null +++ b/package/python-iwlib/python-iwlib.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-iwlib +# +################################################################################ + +PYTHON_IWLIB_VERSION = 1.5 +PYTHON_IWLIB_SITE = $(call github,nhoad,python-iwlib,$(PYTHON_IWLIB_VERSION)) +PYTHON_IWLIB_LICENSE = GPL-2.0 +PYTHON_IWLIB_LICENSE_FILES = COPYING +PYTHON_IWLIB_SETUP_TYPE = setuptools +PYTHON_IWLIB_DEPENDENCIES = wireless_tools + +$(eval $(python-package)) diff --git a/package/python-janus/Config.in b/package/python-janus/Config.in new file mode 100644 index 00000000..924c1fa9 --- /dev/null +++ b/package/python-janus/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_JANUS + bool "python-janus" + select BR2_PACKAGE_PYTHON_TYPING_EXTENSIONS # runtime + help + Mixed sync-async queue to interoperate between asyncio + tasks and classic threads. + + https://github.com/aio-libs/janus/ diff --git a/package/python-janus/python-janus.hash b/package/python-janus/python-janus.hash new file mode 100644 index 00000000..7f7ce35c --- /dev/null +++ b/package/python-janus/python-janus.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/janus/json +md5 2d8c0b884c14f18fc5223858eb16461e janus-1.0.0.tar.gz +sha256 df976f2cdcfb034b147a2d51edfc34ff6bfb12d4e2643d3ad0e10de058cb1612 janus-1.0.0.tar.gz +# Locally computed sha256 checksums +sha256 8b177cccb6ddec12a9fc97bd49e7e2bbcd92464625624bd8bdbfad799ae606e9 LICENSE diff --git a/package/python-janus/python-janus.mk b/package/python-janus/python-janus.mk new file mode 100644 index 00000000..43df8787 --- /dev/null +++ b/package/python-janus/python-janus.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-janus +# +################################################################################ + +PYTHON_JANUS_VERSION = 1.0.0 +PYTHON_JANUS_SOURCE = janus-$(PYTHON_JANUS_VERSION).tar.gz +PYTHON_JANUS_SITE = https://files.pythonhosted.org/packages/b8/a8/facab7275d7d3d2032f375843fe46fad1cfa604a108b5a238638d4615bdc +PYTHON_JANUS_SETUP_TYPE = setuptools +PYTHON_JANUS_LICENSE = Apache-2.0 +PYTHON_JANUS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-jaraco-classes/Config.in b/package/python-jaraco-classes/Config.in new file mode 100644 index 00000000..6d79062a --- /dev/null +++ b/package/python-jaraco-classes/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_JARACO_CLASSES + bool "python-jaraco-classes" + select BR2_PACKAGE_PYTHON_MORE_ITERTOOLS # runtime + help + Utility functions for Python class constructs. + + https://github.com/jaraco/jaraco.classes diff --git a/package/python-jaraco-classes/python-jaraco-classes.hash b/package/python-jaraco-classes/python-jaraco-classes.hash new file mode 100644 index 00000000..701aa07b --- /dev/null +++ b/package/python-jaraco-classes/python-jaraco-classes.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/jaraco.classes/json +md5 26ae65ab8cda78455ddab0b05fe0a553 jaraco.classes-3.3.0.tar.gz +sha256 c063dd08e89217cee02c8d5e5ec560f2c8ce6cdc2fcdc2e68f7b2e5547ed3621 jaraco.classes-3.3.0.tar.gz +# Locally computed sha256 checksums +sha256 86da0f01aeae46348a3c3d465195dc1ceccde79f79e87769a64b8da04b2a4741 LICENSE diff --git a/package/python-jaraco-classes/python-jaraco-classes.mk b/package/python-jaraco-classes/python-jaraco-classes.mk new file mode 100644 index 00000000..45950556 --- /dev/null +++ b/package/python-jaraco-classes/python-jaraco-classes.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-jaraco-classes +# +################################################################################ + +PYTHON_JARACO_CLASSES_VERSION = 3.3.0 +PYTHON_JARACO_CLASSES_SOURCE = jaraco.classes-$(PYTHON_JARACO_CLASSES_VERSION).tar.gz +PYTHON_JARACO_CLASSES_SITE = https://files.pythonhosted.org/packages/8b/de/d0a466824ce8b53c474bb29344e6d6113023eb2c3793d1c58c0908588bfa +PYTHON_JARACO_CLASSES_LICENSE = MIT +PYTHON_JARACO_CLASSES_LICENSE_FILES = LICENSE +PYTHON_JARACO_CLASSES_SETUP_TYPE = setuptools +PYTHON_JARACO_CLASSES_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-jaraco-collections/Config.in b/package/python-jaraco-collections/Config.in new file mode 100644 index 00000000..a6fa721d --- /dev/null +++ b/package/python-jaraco-collections/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_JARACO_COLLECTIONS + bool "python-jaraco-collections" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-jaraco-text -> python-inflect -> python-pydantic -> python-pydantic-core + select BR2_PACKAGE_PYTHON_JARACO_TEXT # runtime + help + Collection objects similar to those in stdlib by jaraco. + + https://github.com/jaraco/jaraco.collections diff --git a/package/python-jaraco-collections/python-jaraco-collections.hash b/package/python-jaraco-collections/python-jaraco-collections.hash new file mode 100644 index 00000000..0308d486 --- /dev/null +++ b/package/python-jaraco-collections/python-jaraco-collections.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/jaraco.collections/json +md5 2b12f44216432f1ce2ead377fd7a2b93 jaraco.collections-5.0.0.tar.gz +sha256 1680e8d09f295f625c7ba926880175a26fdbe7092b4c76d198e30476b21cfe68 jaraco.collections-5.0.0.tar.gz +# Locally computed sha256 checksums +sha256 86da0f01aeae46348a3c3d465195dc1ceccde79f79e87769a64b8da04b2a4741 LICENSE diff --git a/package/python-jaraco-collections/python-jaraco-collections.mk b/package/python-jaraco-collections/python-jaraco-collections.mk new file mode 100644 index 00000000..1400e286 --- /dev/null +++ b/package/python-jaraco-collections/python-jaraco-collections.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-jaraco-collections +# +################################################################################ + +PYTHON_JARACO_COLLECTIONS_VERSION = 5.0.0 +PYTHON_JARACO_COLLECTIONS_SOURCE = jaraco.collections-$(PYTHON_JARACO_COLLECTIONS_VERSION).tar.gz +PYTHON_JARACO_COLLECTIONS_SITE = https://files.pythonhosted.org/packages/e6/85/9c4ab9772bcc2c9b4beffd56aca70f646e4a1f3a576579fa401d742b46a8 +PYTHON_JARACO_COLLECTIONS_SETUP_TYPE = setuptools +PYTHON_JARACO_COLLECTIONS_LICENSE = MIT +PYTHON_JARACO_COLLECTIONS_LICENSE_FILES = LICENSE +PYTHON_JARACO_COLLECTIONS_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-jaraco-context/Config.in b/package/python-jaraco-context/Config.in new file mode 100644 index 00000000..afdc8fa9 --- /dev/null +++ b/package/python-jaraco-context/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_JARACO_CONTEXT + bool "python-jaraco-context" + help + Context managers by jaraco. + + https://github.com/jaraco/jaraco.context diff --git a/package/python-jaraco-context/python-jaraco-context.hash b/package/python-jaraco-context/python-jaraco-context.hash new file mode 100644 index 00000000..f8daa913 --- /dev/null +++ b/package/python-jaraco-context/python-jaraco-context.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/jaraco.context/json +md5 b40aeeda6a07dd283f2a407f622cda5b jaraco.context-4.3.0.tar.gz +sha256 4dad2404540b936a20acedec53355bdaea223acb88fd329fa6de9261c941566e jaraco.context-4.3.0.tar.gz +# Locally computed sha256 checksums +sha256 db3f0246b1f9278f15845b99fec478b8b506eb76487993722f8c6e254285faf8 LICENSE diff --git a/package/python-jaraco-context/python-jaraco-context.mk b/package/python-jaraco-context/python-jaraco-context.mk new file mode 100644 index 00000000..668855c9 --- /dev/null +++ b/package/python-jaraco-context/python-jaraco-context.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-jaraco-context +# +################################################################################ + +PYTHON_JARACO_CONTEXT_VERSION = 4.3.0 +PYTHON_JARACO_CONTEXT_SOURCE = jaraco.context-$(PYTHON_JARACO_CONTEXT_VERSION).tar.gz +PYTHON_JARACO_CONTEXT_SITE = https://files.pythonhosted.org/packages/7c/b4/fa71f82b83ebeed95fe45ce587d6cba85b7c09ef3d9f61602f92f45e90db +PYTHON_JARACO_CONTEXT_SETUP_TYPE = setuptools +PYTHON_JARACO_CONTEXT_LICENSE = MIT +PYTHON_JARACO_CONTEXT_LICENSE_FILES = LICENSE +PYTHON_JARACO_CONTEXT_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-jaraco-functools/Config.in b/package/python-jaraco-functools/Config.in new file mode 100644 index 00000000..f6566401 --- /dev/null +++ b/package/python-jaraco-functools/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_JARACO_FUNCTOOLS + bool "python-jaraco-functools" + select BR2_PACKAGE_PYTHON_MORE_ITERTOOLS # runtime + help + Additional functools in the spirit of stdlib’s + functools. + + https://github.com/jaraco/jaraco.functools diff --git a/package/python-jaraco-functools/python-jaraco-functools.hash b/package/python-jaraco-functools/python-jaraco-functools.hash new file mode 100644 index 00000000..97db6b75 --- /dev/null +++ b/package/python-jaraco-functools/python-jaraco-functools.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/jaraco.functools/json +md5 6683d6f56930d4f0b34157b083813cf3 jaraco.functools-4.0.0.tar.gz +sha256 c279cb24c93d694ef7270f970d499cab4d3813f4e08273f95398651a634f0925 jaraco.functools-4.0.0.tar.gz +# Locally computed sha256 checksums +sha256 86da0f01aeae46348a3c3d465195dc1ceccde79f79e87769a64b8da04b2a4741 LICENSE diff --git a/package/python-jaraco-functools/python-jaraco-functools.mk b/package/python-jaraco-functools/python-jaraco-functools.mk new file mode 100644 index 00000000..5637b756 --- /dev/null +++ b/package/python-jaraco-functools/python-jaraco-functools.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-jaraco-functools +# +################################################################################ + +PYTHON_JARACO_FUNCTOOLS_VERSION = 4.0.0 +PYTHON_JARACO_FUNCTOOLS_SOURCE = jaraco.functools-$(PYTHON_JARACO_FUNCTOOLS_VERSION).tar.gz +PYTHON_JARACO_FUNCTOOLS_SITE = https://files.pythonhosted.org/packages/57/7c/fe770e264913f9a49ddb9387cca2757b8d7d26f06735c1bfbb018912afce +PYTHON_JARACO_FUNCTOOLS_LICENSE = MIT +PYTHON_JARACO_FUNCTOOLS_LICENSE_FILES = LICENSE +PYTHON_JARACO_FUNCTOOLS_SETUP_TYPE = setuptools +PYTHON_JARACO_FUNCTOOLS_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-jaraco-text/Config.in b/package/python-jaraco-text/Config.in new file mode 100644 index 00000000..5044ea32 --- /dev/null +++ b/package/python-jaraco-text/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_JARACO_TEXT + bool "python-jaraco-text" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-inflect -> python-pydantic -> python-pydantic-core + select BR2_PACKAGE_PYTHON_AUTOCOMMAND # runtime + select BR2_PACKAGE_PYTHON_INFLECT # runtime + select BR2_PACKAGE_PYTHON_JARACO_CONTEXT # runtime + select BR2_PACKAGE_PYTHON_JARACO_FUNCTOOLS # runtime + select BR2_PACKAGE_PYTHON_MORE_ITERTOOLS # runtime + help + Module for text manipulation. + + https://github.com/jaraco/jaraco.text diff --git a/package/python-jaraco-text/python-jaraco-text.hash b/package/python-jaraco-text/python-jaraco-text.hash new file mode 100644 index 00000000..704e75d6 --- /dev/null +++ b/package/python-jaraco-text/python-jaraco-text.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/jaraco.text/json +md5 9f63a5cdd56061ebd84d8175d1df3b70 jaraco.text-3.12.0.tar.gz +sha256 389e25c8d4b32e9715bf530596fab0f5cd3aa47296e43969392e18a541af592c jaraco.text-3.12.0.tar.gz +# Locally computed sha256 checksums +sha256 86da0f01aeae46348a3c3d465195dc1ceccde79f79e87769a64b8da04b2a4741 LICENSE diff --git a/package/python-jaraco-text/python-jaraco-text.mk b/package/python-jaraco-text/python-jaraco-text.mk new file mode 100644 index 00000000..06b028d6 --- /dev/null +++ b/package/python-jaraco-text/python-jaraco-text.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-jaraco-text +# +################################################################################ + +PYTHON_JARACO_TEXT_VERSION = 3.12.0 +PYTHON_JARACO_TEXT_SOURCE = jaraco.text-$(PYTHON_JARACO_TEXT_VERSION).tar.gz +PYTHON_JARACO_TEXT_SITE = https://files.pythonhosted.org/packages/53/30/52edc6c9997d48b0d9fbedb6a29edab2b397968f637b76aae299a9128c34 +PYTHON_JARACO_TEXT_SETUP_TYPE = setuptools +PYTHON_JARACO_TEXT_LICENSE = MIT +PYTHON_JARACO_TEXT_LICENSE_FILES = LICENSE +PYTHON_JARACO_TEXT_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-jc/Config.in b/package/python-jc/Config.in new file mode 100644 index 00000000..b88150e0 --- /dev/null +++ b/package/python-jc/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_JC + bool "python-jc" + help + Converts the output of popular command-line tools and file- + types to JSON. + + Optionally requires python-pygments for syntax highlighting, + python-ruamel-yaml for yaml parsing and output and + python-xmltodict for xml parsing. PYTHON3_PYEXPAT is required + for xml and plist parsers. + + https://github.com/kellyjonbrazil/jc diff --git a/package/python-jc/python-jc.hash b/package/python-jc/python-jc.hash new file mode 100644 index 00000000..6bcb886a --- /dev/null +++ b/package/python-jc/python-jc.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/jc/json +md5 e042a82acf978e5dc16dd1ac9371e97a jc-1.25.2.tar.gz +sha256 97ada193495f79550f06fe0cbfb119ff470bcca57c1cc593a5cdb0008720e0b3 jc-1.25.2.tar.gz +# Locally computed sha256 checksums +sha256 6493f2db400f4166ca0956cf192a41aa092bd1396ff463e7fdaf51f257c10497 LICENSE.md diff --git a/package/python-jc/python-jc.mk b/package/python-jc/python-jc.mk new file mode 100644 index 00000000..c57c9e8a --- /dev/null +++ b/package/python-jc/python-jc.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-jc +# +################################################################################ + +PYTHON_JC_VERSION = 1.25.2 +PYTHON_JC_SOURCE = jc-$(PYTHON_JC_VERSION).tar.gz +PYTHON_JC_SITE = https://files.pythonhosted.org/packages/39/2e/c0d557b2ee673e2e0aef24a01e732aa232f6b1e180f339058f674f391ab8 +PYTHON_JC_SETUP_TYPE = setuptools +PYTHON_JC_LICENSE = MIT, BSD-3-Clause (bundled pbPlist) +PYTHON_JC_LICENSE_FILES = LICENSE.md + +$(eval $(python-package)) diff --git a/package/python-jedi/Config.in b/package/python-jedi/Config.in new file mode 100644 index 00000000..8ceaa153 --- /dev/null +++ b/package/python-jedi/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_JEDI + bool "python-jedi" + select BR2_PACKAGE_PYTHON_PARSO # runtime + help + An autocompletion tool for Python that can be used for text + editors. + + https://github.com/davidhalter/jedi diff --git a/package/python-jedi/python-jedi.hash b/package/python-jedi/python-jedi.hash new file mode 100644 index 00000000..99034d20 --- /dev/null +++ b/package/python-jedi/python-jedi.hash @@ -0,0 +1,7 @@ +# md5, sha256 from https://pypi.org/pypi/jedi/json +md5 0951191b506b660bfdb90c3dcd5b3254 jedi-0.19.1.tar.gz +sha256 cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd jedi-0.19.1.tar.gz +# Locally computed sha256 checksums +sha256 78e60cd0b8f28694f30195482c33d76908d846b0d15278deb7332aa22ba8e412 LICENSE.txt +sha256 235e993965d399a25e7d493d25c8622f78718510884b9c051f1f1866b6f34e9d jedi/third_party/django-stubs/LICENSE.txt +sha256 b41b78f562a2e65b75cab44354335f6f435d4ef73065509600ac910cf4e22fe0 jedi/third_party/typeshed/LICENSE diff --git a/package/python-jedi/python-jedi.mk b/package/python-jedi/python-jedi.mk new file mode 100644 index 00000000..5d54642a --- /dev/null +++ b/package/python-jedi/python-jedi.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-jedi +# +################################################################################ + +PYTHON_JEDI_VERSION = 0.19.1 +PYTHON_JEDI_SOURCE = jedi-$(PYTHON_JEDI_VERSION).tar.gz +PYTHON_JEDI_SITE = https://files.pythonhosted.org/packages/d6/99/99b493cec4bf43176b678de30f81ed003fd6a647a301b9c927280c600f0a +PYTHON_JEDI_SETUP_TYPE = setuptools +PYTHON_JEDI_LICENSE = MIT, Apache-2.0 (typeshed) +PYTHON_JEDI_LICENSE_FILES = LICENSE.txt jedi/third_party/django-stubs/LICENSE.txt jedi/third_party/typeshed/LICENSE + +$(eval $(python-package)) diff --git a/package/python-jeepney/Config.in b/package/python-jeepney/Config.in new file mode 100644 index 00000000..700176e1 --- /dev/null +++ b/package/python-jeepney/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_JEEPNEY + bool "python-jeepney" + help + Low-level, pure Python DBus protocol wrapper. + + https://gitlab.com/takluyver/jeepney diff --git a/package/python-jeepney/python-jeepney.hash b/package/python-jeepney/python-jeepney.hash new file mode 100644 index 00000000..31a5bac1 --- /dev/null +++ b/package/python-jeepney/python-jeepney.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/jeepney/json +md5 7e2151e9197c751ceca6550bc6b3294c jeepney-0.8.0.tar.gz +sha256 5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806 jeepney-0.8.0.tar.gz +# Locally computed sha256 checksums +sha256 1b22b049b5267d6dfc23a67bf4a84d8ec04b9fdfb1a51d360e42b4342c8b4154 LICENSE diff --git a/package/python-jeepney/python-jeepney.mk b/package/python-jeepney/python-jeepney.mk new file mode 100644 index 00000000..ac4c0283 --- /dev/null +++ b/package/python-jeepney/python-jeepney.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-jeepney +# +################################################################################ + +PYTHON_JEEPNEY_VERSION = 0.8.0 +PYTHON_JEEPNEY_SOURCE = jeepney-$(PYTHON_JEEPNEY_VERSION).tar.gz +PYTHON_JEEPNEY_SITE = https://files.pythonhosted.org/packages/d6/f4/154cf374c2daf2020e05c3c6a03c91348d59b23c5366e968feb198306fdf +PYTHON_JEEPNEY_SETUP_TYPE = flit +PYTHON_JEEPNEY_LICENSE = MIT +PYTHON_JEEPNEY_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-jinja2/Config.in b/package/python-jinja2/Config.in new file mode 100644 index 00000000..5623d472 --- /dev/null +++ b/package/python-jinja2/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_JINJA2 + bool "python-jinja2" + select BR2_PACKAGE_PYTHON_MARKUPSAFE # runtime + select BR2_PACKAGE_PYTHON3_UNICODEDATA + help + Jinja2 is a template engine written in pure Python. It + provides a Django inspired non-XML syntax but supports + inline expressions and an optional sandboxed environment. + + https://jinja.palletsprojects.com diff --git a/package/python-jinja2/python-jinja2.hash b/package/python-jinja2/python-jinja2.hash new file mode 100644 index 00000000..2b32f5cc --- /dev/null +++ b/package/python-jinja2/python-jinja2.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/jinja2/json +md5 02ca9a6364c92e83d14b037bef4732bc jinja2-3.1.4.tar.gz +sha256 4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369 jinja2-3.1.4.tar.gz +# Locally computed sha256 checksums +sha256 3b49dcee4105eb37bac10faf1be260408fe85d252b8e9df2e0979fc1e094437b LICENSE.txt diff --git a/package/python-jinja2/python-jinja2.mk b/package/python-jinja2/python-jinja2.mk new file mode 100644 index 00000000..780b6932 --- /dev/null +++ b/package/python-jinja2/python-jinja2.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# python-jinja2 +# +################################################################################ + +PYTHON_JINJA2_VERSION = 3.1.4 +PYTHON_JINJA2_SOURCE = jinja2-$(PYTHON_JINJA2_VERSION).tar.gz +PYTHON_JINJA2_SITE = https://files.pythonhosted.org/packages/ed/55/39036716d19cab0747a5020fc7e907f362fbf48c984b14e62127f7e68e5d +PYTHON_JINJA2_SETUP_TYPE = flit +PYTHON_JINJA2_LICENSE = BSD-3-Clause +PYTHON_JINJA2_LICENSE_FILES = LICENSE.txt +PYTHON_JINJA2_CPE_ID_VENDOR = pocoo +PYTHON_JINJA2_CPE_ID_PRODUCT = jinja2 + +# In host/target build, setup.py tries to download markupsafe if it is not installed +PYTHON_JINJA2_DEPENDENCIES = host-python-markupsafe +HOST_PYTHON_JINJA2_DEPENDENCIES = host-python-markupsafe + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-jmespath/Config.in b/package/python-jmespath/Config.in new file mode 100644 index 00000000..7bcd8f6a --- /dev/null +++ b/package/python-jmespath/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_JMESPATH + bool "python-jmespath" + help + JMESPath is a query language for JSON. + + https://github.com/jmespath/jmespath.py diff --git a/package/python-jmespath/python-jmespath.hash b/package/python-jmespath/python-jmespath.hash new file mode 100644 index 00000000..03f64f3b --- /dev/null +++ b/package/python-jmespath/python-jmespath.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/jmespath/json +md5 2dd28beb22d698f58fe2281bfe5fe3a3 jmespath-1.0.1.tar.gz +sha256 90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe jmespath-1.0.1.tar.gz +# Locally computed sha256 checksums +sha256 66b313cce80ed0623fc7db3f24863a0c80fd83eb341a46b57864158ae74faa56 LICENSE.txt diff --git a/package/python-jmespath/python-jmespath.mk b/package/python-jmespath/python-jmespath.mk new file mode 100644 index 00000000..a94a13a2 --- /dev/null +++ b/package/python-jmespath/python-jmespath.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-jmespath +# +################################################################################ + +PYTHON_JMESPATH_VERSION = 1.0.1 +PYTHON_JMESPATH_SOURCE = jmespath-$(PYTHON_JMESPATH_VERSION).tar.gz +PYTHON_JMESPATH_SITE = https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6 +PYTHON_JMESPATH_SETUP_TYPE = setuptools +PYTHON_JMESPATH_LICENSE = MIT +PYTHON_JMESPATH_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-json-schema-validator/Config.in b/package/python-json-schema-validator/Config.in new file mode 100644 index 00000000..e50e8eef --- /dev/null +++ b/package/python-json-schema-validator/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_JSON_SCHEMA_VALIDATOR + bool "python-json-schema-validator" + help + JSON Schema Validator + + https://pypi.python.org/pypi/json-schema-validator diff --git a/package/python-json-schema-validator/python-json-schema-validator.hash b/package/python-json-schema-validator/python-json-schema-validator.hash new file mode 100644 index 00000000..94a0235a --- /dev/null +++ b/package/python-json-schema-validator/python-json-schema-validator.hash @@ -0,0 +1,3 @@ +# 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/package/python-json-schema-validator/python-json-schema-validator.mk b/package/python-json-schema-validator/python-json-schema-validator.mk new file mode 100644 index 00000000..c0a335cb --- /dev/null +++ b/package/python-json-schema-validator/python-json-schema-validator.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-json-schema-validator +# +################################################################################ + +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 = https://pypi.python.org/packages/70/46/ba39cb7efad1898cfc89bf3588b8612f24d128f1c25b761994f524a59cef +PYTHON_JSON_SCHEMA_VALIDATOR_LICENSE = LGPL-3.0 +PYTHON_JSON_SCHEMA_VALIDATOR_SETUP_TYPE = setuptools +PYTHON_JSON_SCHEMA_VALIDATOR_DEPENDENCIES = host-python-versiontools + +$(eval $(python-package)) diff --git a/package/python-jsonmodels/Config.in b/package/python-jsonmodels/Config.in new file mode 100644 index 00000000..f6698287 --- /dev/null +++ b/package/python-jsonmodels/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_JSONMODELS + bool "python-jsonmodels" + select BR2_PACKAGE_PYTHON_DATEUTIL # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + help + Models to make easier to deal with structures that are + converted to, or read from JSON. + + https://github.com/beregond/jsonmodels diff --git a/package/python-jsonmodels/python-jsonmodels.hash b/package/python-jsonmodels/python-jsonmodels.hash new file mode 100644 index 00000000..1b0548fd --- /dev/null +++ b/package/python-jsonmodels/python-jsonmodels.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/jsonmodels/json +md5 96132e252887f840d23792c03fad2039 jsonmodels-2.4.tar.gz +sha256 abc8dc334a1794513e511a75639f77c271ef6a2992b6793f3753c7335dd18775 jsonmodels-2.4.tar.gz +# Locally computed sha256 checksums +sha256 3b1219763eec6924ddd4c4d61dee6a53c5fc9ab62707a9ad763ee363d3050cc5 LICENSE diff --git a/package/python-jsonmodels/python-jsonmodels.mk b/package/python-jsonmodels/python-jsonmodels.mk new file mode 100644 index 00000000..4e4eecf2 --- /dev/null +++ b/package/python-jsonmodels/python-jsonmodels.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-jsonmodels +# +################################################################################ + +PYTHON_JSONMODELS_VERSION = 2.4 +PYTHON_JSONMODELS_SOURCE = jsonmodels-$(PYTHON_JSONMODELS_VERSION).tar.gz +PYTHON_JSONMODELS_SITE = https://files.pythonhosted.org/packages/68/00/524668dc751f9ef91e73c795b2073bf2ddb79728a474d1bcab9c6dc426d8 +PYTHON_JSONMODELS_SETUP_TYPE = setuptools +PYTHON_JSONMODELS_LICENSE = BSD-3-Clause +PYTHON_JSONMODELS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-jsonschema-specifications/Config.in b/package/python-jsonschema-specifications/Config.in new file mode 100644 index 00000000..31453a12 --- /dev/null +++ b/package/python-jsonschema-specifications/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_JSONSCHEMA_SPECIFICATIONS + bool "python-jsonschema-specifications" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-referencing -> python-rpds-py + select BR2_PACKAGE_PYTHON_REFERENCING # runtime + help + The JSON Schema meta-schemas and vocabularies, exposed as a + Registry. + + https://github.com/python-jsonschema/jsonschema-specifications diff --git a/package/python-jsonschema-specifications/python-jsonschema-specifications.hash b/package/python-jsonschema-specifications/python-jsonschema-specifications.hash new file mode 100644 index 00000000..aa919681 --- /dev/null +++ b/package/python-jsonschema-specifications/python-jsonschema-specifications.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/jsonschema-specifications/json +md5 de730f6937d1e3660a2d835c4f93f31b jsonschema_specifications-2023.12.1.tar.gz +sha256 48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc jsonschema_specifications-2023.12.1.tar.gz +# Locally computed sha256 checksums +sha256 42dcd63495f87b4eb7c7757afa379bb55a53f94afd7a5f657d9adf57236e515c COPYING diff --git a/package/python-jsonschema-specifications/python-jsonschema-specifications.mk b/package/python-jsonschema-specifications/python-jsonschema-specifications.mk new file mode 100644 index 00000000..653c839b --- /dev/null +++ b/package/python-jsonschema-specifications/python-jsonschema-specifications.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# python-jsonschema-specifications +# +################################################################################ + +PYTHON_JSONSCHEMA_SPECIFICATIONS_VERSION = 2023.12.1 +PYTHON_JSONSCHEMA_SPECIFICATIONS_SOURCE = jsonschema_specifications-$(PYTHON_JSONSCHEMA_SPECIFICATIONS_VERSION).tar.gz +PYTHON_JSONSCHEMA_SPECIFICATIONS_SITE = https://files.pythonhosted.org/packages/f8/b9/cc0cc592e7c195fb8a650c1d5990b10175cf13b4c97465c72ec841de9e4b +PYTHON_JSONSCHEMA_SPECIFICATIONS_SETUP_TYPE = pep517 +PYTHON_JSONSCHEMA_SPECIFICATIONS_LICENSE = MIT +PYTHON_JSONSCHEMA_SPECIFICATIONS_LICENSE_FILES = COPYING +PYTHON_JSONSCHEMA_SPECIFICATIONS_DEPENDENCIES = \ + host-python-hatchling \ + host-python-hatch-vcs + +HOST_PYTHON_JSONSCHEMA_SPECIFICATIONS_DEPENDENCIES = \ + host-python-hatchling \ + host-python-hatch-vcs + +# This is a runtime dependency, but we don't have the concept of +# runtime dependencies for host packages. +HOST_PYTHON_JSONSCHEMA_SPECIFICATIONS_DEPENDENCIES += \ + host-python-referencing + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-jsonschema/Config.in b/package/python-jsonschema/Config.in new file mode 100644 index 00000000..66d2417a --- /dev/null +++ b/package/python-jsonschema/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_JSONSCHEMA + bool "python-jsonschema" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-rpds-py + select BR2_PACKAGE_PYTHON_ATTRS # runtime + select BR2_PACKAGE_PYTHON_JSONSCHEMA_SPECIFICATIONS # runtime + select BR2_PACKAGE_PYTHON_REFERENCING # runtime + select BR2_PACKAGE_PYTHON_RPDS_PY # runtime + help + An implementation of JSON Schema validation for Python. + + https://github.com/python-jsonschema/jsonschema diff --git a/package/python-jsonschema/python-jsonschema.hash b/package/python-jsonschema/python-jsonschema.hash new file mode 100644 index 00000000..645a6657 --- /dev/null +++ b/package/python-jsonschema/python-jsonschema.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/jsonschema/json +md5 e758f0f6a8f3f59d754e7e35ea9f0792 jsonschema-4.20.0.tar.gz +sha256 4f614fd46d8d61258610998997743ec5492a648b33cf478c1ddc23ed4598a5fa jsonschema-4.20.0.tar.gz +# Locally computed sha256 checksums +sha256 4f92a015a13c4d1a040bef018aa13430b4f1bc73b41b16bb846c346766de7439 COPYING +sha256 837402bd25fad9b704265801ca3f92566a98157c1f9a7acd6f446299ba1c305a json/LICENSE diff --git a/package/python-jsonschema/python-jsonschema.mk b/package/python-jsonschema/python-jsonschema.mk new file mode 100644 index 00000000..9e8b6e18 --- /dev/null +++ b/package/python-jsonschema/python-jsonschema.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# python-jsonschema +# +################################################################################ + +PYTHON_JSONSCHEMA_VERSION = 4.20.0 +PYTHON_JSONSCHEMA_SOURCE = jsonschema-$(PYTHON_JSONSCHEMA_VERSION).tar.gz +PYTHON_JSONSCHEMA_SITE = https://files.pythonhosted.org/packages/a8/74/77bf12d3dd32b764692a71d4200f03429c41eee2e8a9225d344d91c03aff +PYTHON_JSONSCHEMA_SETUP_TYPE = pep517 +PYTHON_JSONSCHEMA_LICENSE = MIT +PYTHON_JSONSCHEMA_LICENSE_FILES = COPYING json/LICENSE +PYTHON_JSONSCHEMA_DEPENDENCIES = \ + host-python-hatchling \ + host-python-hatch-fancy-pypi-readme \ + host-python-hatch-vcs + +HOST_PYTHON_JSONSCHEMA_DEPENDENCIES = \ + host-python-hatchling \ + host-python-hatch-fancy-pypi-readme \ + host-python-hatch-vcs + +# This is a runtime dependency, but we don't have the concept of +# runtime dependencies for host packages. +HOST_PYTHON_JSONSCHEMA_DEPENDENCIES += \ + host-python-attrs \ + host-python-jsonschema-specifications \ + host-python-referencing \ + host-python-rpds-py + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-keyring/Config.in b/package/python-keyring/Config.in new file mode 100644 index 00000000..6c03317f --- /dev/null +++ b/package/python-keyring/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_KEYRING + bool "python-keyring" + # python-secretstorage -> python-cryptography + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_PYTHON_ENTRYPOINTS # runtime + select BR2_PACKAGE_PYTHON_JARACO_CLASSES # runtime + select BR2_PACKAGE_PYTHON_JEEPNEY # runtime + select BR2_PACKAGE_PYTHON_SECRETSTORAGE # runtime + help + The Python keyring lib provides a easy way to access the + system keyring service from Python. + + https://pypi.python.org/pypi/keyring diff --git a/package/python-keyring/python-keyring.hash b/package/python-keyring/python-keyring.hash new file mode 100644 index 00000000..50ac3df3 --- /dev/null +++ b/package/python-keyring/python-keyring.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/keyring/json +md5 ed5df85d33c36bb268a79d4472a13312 keyring-24.2.0.tar.gz +sha256 ca0746a19ec421219f4d713f848fa297a661a8a8c1504867e55bfb5e09091509 keyring-24.2.0.tar.gz +# Locally computed sha256 checksums +sha256 86da0f01aeae46348a3c3d465195dc1ceccde79f79e87769a64b8da04b2a4741 LICENSE diff --git a/package/python-keyring/python-keyring.mk b/package/python-keyring/python-keyring.mk new file mode 100644 index 00000000..87b51a89 --- /dev/null +++ b/package/python-keyring/python-keyring.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-keyring +# +################################################################################ + +PYTHON_KEYRING_VERSION = 24.2.0 +PYTHON_KEYRING_SOURCE = keyring-$(PYTHON_KEYRING_VERSION).tar.gz +PYTHON_KEYRING_SITE = https://files.pythonhosted.org/packages/14/c5/7a2a66489c66ee29562300ddc5be63636f70b4025a74df71466e62d929b1 +PYTHON_KEYRING_SETUP_TYPE = setuptools +PYTHON_KEYRING_LICENSE = MIT +PYTHON_KEYRING_LICENSE_FILES = LICENSE +PYTHON_KEYRING_CPE_ID_VENDOR = python +PYTHON_KEYRING_CPE_ID_PRODUCT = keyring +PYTHON_KEYRING_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-kflash/Config.in.host b/package/python-kflash/Config.in.host new file mode 100644 index 00000000..0be8c18f --- /dev/null +++ b/package/python-kflash/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_PYTHON_KFLASH + bool "host python-kflash" + depends on BR2_RISCV_64 && !BR2_USE_MMU + help + Kendryte UART ISP Utility - programming code to k210. + + https://github.com/vowstar/kflash.py diff --git a/package/python-kflash/python-kflash.hash b/package/python-kflash/python-kflash.hash new file mode 100644 index 00000000..a4e52386 --- /dev/null +++ b/package/python-kflash/python-kflash.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/kflash/json +md5 5b4376ea60f20368852d0c4743e6ed08 kflash-1.1.6.tar.gz +sha256 ec5fbb35ea81a91c89f458d375e24a6dab3d3865c69a7e6250511b2e93f4b695 kflash-1.1.6.tar.gz +# Locally computed sha256 checksums +sha256 c48133d7a08d743c2c01c6190fc1860f7d73777afa2199ed8d0a035b754d8bf9 LICENSE diff --git a/package/python-kflash/python-kflash.mk b/package/python-kflash/python-kflash.mk new file mode 100644 index 00000000..efc0f52e --- /dev/null +++ b/package/python-kflash/python-kflash.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-kflash +# +################################################################################ + +PYTHON_KFLASH_VERSION = 1.1.6 +PYTHON_KFLASH_SOURCE = kflash-$(PYTHON_KFLASH_VERSION).tar.gz +PYTHON_KFLASH_SITE = https://files.pythonhosted.org/packages/4f/80/d2eaa114bf4434b18fcf8960a907ffce12c9400b08c05902b36007d545b7 +PYTHON_KFLASH_SETUP_TYPE = setuptools +PYTHON_KFLASH_LICENSE = MIT +PYTHON_KFLASH_LICENSE_FILES = LICENSE +HOST_PYTHON_KFLASH_DEPENDENCIES = host-python-pyelftools host-python-serial + +$(eval $(host-python-package)) diff --git a/package/python-kiwisolver/Config.in b/package/python-kiwisolver/Config.in new file mode 100644 index 00000000..33727ba8 --- /dev/null +++ b/package/python-kiwisolver/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_PYTHON_KIWISOLVER + bool "python-kiwisolver" + depends on BR2_INSTALL_LIBSTDCPP + help + Kiwi is an efficient C++ implementation of the Cassowary + constraint solving algorithm. Kiwi is an implementation of + the algorithm based on the seminal Cassowary paper. It is + not a refactoring of the original C++ solver. Kiwi has been + designed from the ground up to be lightweight and fast. Kiwi + ranges from 10x to 500x faster than the original Cassowary + solver with typical use cases gaining a 40x + improvement. Memory savings are consistently > 5x. + + https://github.com/nucleic/kiwi + +comment "python-kiwisolver needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/python-kiwisolver/python-kiwisolver.hash b/package/python-kiwisolver/python-kiwisolver.hash new file mode 100644 index 00000000..900027a8 --- /dev/null +++ b/package/python-kiwisolver/python-kiwisolver.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/kiwisolver/json +md5 20dea6992699d6be8a563995d7fe0309 kiwisolver-1.4.5.tar.gz +sha256 e57e563a57fb22a142da34f38acc2fc1a5c864bc29ca1517a88abc963e60d6ec kiwisolver-1.4.5.tar.gz +# Locally computed sha256 checksums +sha256 26da8d49744796f2601fb5fe9e5d8b9e8102064ca60a8dc1825b6177cb05450c LICENSE diff --git a/package/python-kiwisolver/python-kiwisolver.mk b/package/python-kiwisolver/python-kiwisolver.mk new file mode 100644 index 00000000..04a0779b --- /dev/null +++ b/package/python-kiwisolver/python-kiwisolver.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-kiwisolver +# +################################################################################ + +PYTHON_KIWISOLVER_VERSION = 1.4.5 +PYTHON_KIWISOLVER_SOURCE = kiwisolver-$(PYTHON_KIWISOLVER_VERSION).tar.gz +PYTHON_KIWISOLVER_SITE = https://files.pythonhosted.org/packages/b9/2d/226779e405724344fc678fcc025b812587617ea1a48b9442628b688e85ea +PYTHON_KIWISOLVER_LICENSE = BSD-3-Clause +PYTHON_KIWISOLVER_LICENSE_FILES = LICENSE +PYTHON_KIWISOLVER_SETUP_TYPE = setuptools +PYTHON_KIWISOLVER_DEPENDENCIES = host-python-cppy + +$(eval $(python-package)) diff --git a/package/python-kmod/Config.in b/package/python-kmod/Config.in new file mode 100644 index 00000000..244baee3 --- /dev/null +++ b/package/python-kmod/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_KMOD + bool "python-kmod" + depends on !BR2_STATIC_LIBS # kmod + select BR2_PACKAGE_HOST_PYTHON_CYTHON + select BR2_PACKAGE_KMOD + help + Python binding for kmod + + https://github.com/maurizio-lombardi/python-kmod + +comment "python-kmod needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/python-kmod/python-kmod.hash b/package/python-kmod/python-kmod.hash new file mode 100644 index 00000000..b838914c --- /dev/null +++ b/package/python-kmod/python-kmod.hash @@ -0,0 +1,3 @@ +# Locally computed sha256 checksums +sha256 0100ff27b7030a73e68ec07829d6123f412ce195dc761b954c92a38d18ba8539 python-kmod-0.9.2.tar.gz +sha256 1a136f227d8318af7d2320dad880a9f1a057c08cff044b545bb33430ab9c6860 COPYING.LESSER diff --git a/package/python-kmod/python-kmod.mk b/package/python-kmod/python-kmod.mk new file mode 100644 index 00000000..6164b0f1 --- /dev/null +++ b/package/python-kmod/python-kmod.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-kmod +# +################################################################################ + +# The python-kmod package listed at https://pypi.org/project/kmod/#description +# is not the same as the one listed below. +PYTHON_KMOD_VERSION = 0.9.2 +PYTHON_KMOD_SITE = $(call github,maurizio-lombardi,python-kmod,v$(PYTHON_KMOD_VERSION)) +PYTHON_KMOD_SETUP_TYPE = setuptools +PYTHON_KMOD_LICENSE = LGPL-2.1 +PYTHON_KMOD_LICENSE_FILES = COPYING.LESSER +PYTHON_KMOD_DEPENDENCIES = host-python-cython kmod + +$(eval $(python-package)) diff --git a/package/python-lark/Config.in b/package/python-lark/Config.in new file mode 100644 index 00000000..1f45690f --- /dev/null +++ b/package/python-lark/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_LARK + bool "python-lark" + help + Lark is a parsing toolkit for Python, built with a focus + on ergonomics, performance and modularity. + + https://github.com/lark-parser/lark diff --git a/package/python-lark/python-lark.hash b/package/python-lark/python-lark.hash new file mode 100644 index 00000000..9ea778c8 --- /dev/null +++ b/package/python-lark/python-lark.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/lark/json +md5 124c36ea3b68783f06cea5fe6ee8a6f2 lark-1.1.8.tar.gz +sha256 7ef424db57f59c1ffd6f0d4c2b705119927f566b68c0fe1942dddcc0e44391a5 lark-1.1.8.tar.gz +# Locally computed sha256 checksums +sha256 8263e5652d07cecb3adadf05140b65e70cfa169ecec5f520fe1671479ce12a83 LICENSE diff --git a/package/python-lark/python-lark.mk b/package/python-lark/python-lark.mk new file mode 100644 index 00000000..9cb30abb --- /dev/null +++ b/package/python-lark/python-lark.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-lark +# +################################################################################ + +PYTHON_LARK_VERSION = 1.1.8 +PYTHON_LARK_SOURCE = lark-$(PYTHON_LARK_VERSION).tar.gz +PYTHON_LARK_SITE = https://files.pythonhosted.org/packages/12/1c/b466b58dacac15ffefce9bcb5128e18948a143849610a7d5300f31920be0 +PYTHON_LARK_SETUP_TYPE = setuptools +PYTHON_LARK_LICENSE = MIT +PYTHON_LARK_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-libconf/python-libconf.hash b/package/python-libconf/python-libconf.hash new file mode 100644 index 00000000..d05efd37 --- /dev/null +++ b/package/python-libconf/python-libconf.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 66897870fcafce05624eafcc99e2dc8e150124e91019d9c29cc4f3bef64311dd python-libconf-2.0.1.tar.gz +# Locally computed sha256 checksums +sha256 3c2afc8c9f7a12032f225e6fa870e85af14d1b71236afe28d94a4b67e5e8c873 LICENSE diff --git a/package/python-libconf/python-libconf.mk b/package/python-libconf/python-libconf.mk new file mode 100644 index 00000000..b349e3e6 --- /dev/null +++ b/package/python-libconf/python-libconf.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-libconf +# +################################################################################ + +PYTHON_LIBCONF_VERSION = 2.0.1 +PYTHON_LIBCONF_SITE = $(call github,ChrisAichinger,python-libconf,$(PYTHON_LIBCONF_VERSION)) +PYTHON_LIBCONF_SETUP_TYPE = setuptools +PYTHON_LIBCONF_LICENSE = MIT +PYTHON_LIBCONF_LICENSE_FILES = LICENSE + +$(eval $(host-python-package)) diff --git a/package/python-libconfig/Config.in b/package/python-libconfig/Config.in new file mode 100644 index 00000000..00688719 --- /dev/null +++ b/package/python-libconfig/Config.in @@ -0,0 +1,23 @@ +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" + 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 + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_PYTHON + select BR2_PACKAGE_LIBCONFIG + help + Python bindings to the C++ library libconfig + + Libconfig is a simple library for manipulating structured + configuration files. The file format is more compact and more + readable than XML. And unlike XML, it is type-aware, so it is + not necessary to do string parsing in application code. + http://www.hyperrealm.com/libconfig/ + + https://github.com/cnangel/python-libconfig diff --git a/package/python-libconfig/python-libconfig.hash b/package/python-libconfig/python-libconfig.hash new file mode 100644 index 00000000..6d77fad5 --- /dev/null +++ b/package/python-libconfig/python-libconfig.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 f4cfb7e60b8fcee32ca3392c99932c579038db0852c1c2c42d7c4b859eea3c5c python-libconfig-b271c3d9dac938ad5cd29b67bd08cc5536a5a391.tar.gz +sha256 7e47579751c8125eaa031fd10b197d3956d231323598a42612f30abf19c7fed0 README diff --git a/package/python-libconfig/python-libconfig.mk b/package/python-libconfig/python-libconfig.mk new file mode 100644 index 00000000..c7d87f40 --- /dev/null +++ b/package/python-libconfig/python-libconfig.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# python-libconfig +# +################################################################################ + +PYTHON_LIBCONFIG_VERSION = b271c3d9dac938ad5cd29b67bd08cc5536a5a391 +PYTHON_LIBCONFIG_SITE = $(call github,cnangel,python-libconfig,$(PYTHON_LIBCONFIG_VERSION)) + +PYTHON_LIBCONFIG_LICENSE = BSD +PYTHON_LIBCONFIG_LICENSE_FILES = README + +PYTHON_LIBCONFIG_SETUP_TYPE = setuptools + +PYTHON_LIBCONFIG_DEPENDENCIES = libconfig boost + +define PYTHON_LIBCONFIG_FIX_SETUP + $(SED) 's/boost_python/boost_python$(subst .,,$(PYTHON3_VERSION_MAJOR))/g' \ + $(@D)/setup.py +endef +PYTHON_LIBCONFIG_POST_PATCH_HOOKS += PYTHON_LIBCONFIG_FIX_SETUP + +$(eval $(python-package)) diff --git a/package/python-libevdev/Config.in b/package/python-libevdev/Config.in new file mode 100644 index 00000000..2d6aa49c --- /dev/null +++ b/package/python-libevdev/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_LIBEVDEV + bool "python-libevdev" + select BR2_PACKAGE_LIBEVDEV # runtime + help + Python wrapper for libevdev. + + https://gitlab.freedesktop.org/libevdev/python-libevdev diff --git a/package/python-libevdev/python-libevdev.hash b/package/python-libevdev/python-libevdev.hash new file mode 100644 index 00000000..2799078c --- /dev/null +++ b/package/python-libevdev/python-libevdev.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/libevdev/json +md5 34b48098c1fba26de79a0d67a17a588a libevdev-0.11.tar.gz +sha256 e9ca006a4df2488a60bd9a740011ee948d81904be2364f017e560169508f560f libevdev-0.11.tar.gz +# Locally computed sha256 checksums +sha256 a547b196da4e5bb9588a6e24f1f36ae9e2349ca5375e2cf9c315186e237d9f6d COPYING diff --git a/package/python-libevdev/python-libevdev.mk b/package/python-libevdev/python-libevdev.mk new file mode 100644 index 00000000..e5256064 --- /dev/null +++ b/package/python-libevdev/python-libevdev.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# python-libevdev +# +################################################################################ + +PYTHON_LIBEVDEV_VERSION = 0.11 +PYTHON_LIBEVDEV_SOURCE = libevdev-$(PYTHON_LIBEVDEV_VERSION).tar.gz +PYTHON_LIBEVDEV_SITE = https://files.pythonhosted.org/packages/b0/49/2fe589ce1fa6ca0f05ae0b1717923650f2cc6eec6307c71fbc7789738902 +PYTHON_LIBEVDEV_SETUP_TYPE = setuptools +PYTHON_LIBEVDEV_LICENSE = MIT +PYTHON_LIBEVDEV_LICENSE_FILES = COPYING + +# Requires a kernel built with user level driver support (uinput). +define PYTHON_LIBEVDEV_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_INPUT_MISC) + $(call KCONFIG_ENABLE_OPT,CONFIG_INPUT_UINPUT) +endef + +$(eval $(python-package)) diff --git a/package/python-libusb1/Config.in b/package/python-libusb1/Config.in new file mode 100644 index 00000000..e464a039 --- /dev/null +++ b/package/python-libusb1/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_LIBUSB1 + bool "python-libusb1" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + Pure-python wrapper for libusb-1.0. + + http://github.com/vpelletier/python-libusb1 + +comment "python-libusb1 needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/python-libusb1/python-libusb1.hash b/package/python-libusb1/python-libusb1.hash new file mode 100644 index 00000000..effecd85 --- /dev/null +++ b/package/python-libusb1/python-libusb1.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/libusb1/json +md5 7b4f094786d1dfc8d011c7649d8ccb97 libusb1-3.1.0.tar.gz +sha256 4ee9b0a55f8bd0b3ea7017ae919a6c1f439af742c4a4b04543c5fd7af89b828c libusb1-3.1.0.tar.gz +# Locally computed sha256 checksums +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LESSER diff --git a/package/python-libusb1/python-libusb1.mk b/package/python-libusb1/python-libusb1.mk new file mode 100644 index 00000000..39fd7e40 --- /dev/null +++ b/package/python-libusb1/python-libusb1.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-libusb1 +# +################################################################################ + +PYTHON_LIBUSB1_VERSION = 3.1.0 +PYTHON_LIBUSB1_SOURCE = libusb1-$(PYTHON_LIBUSB1_VERSION).tar.gz +PYTHON_LIBUSB1_SITE = https://files.pythonhosted.org/packages/af/19/53ecbfb96d6832f2272d13b84658c360802fcfff7c0c497ab8f6bf15ac40 +PYTHON_LIBUSB1_SETUP_TYPE = setuptools +PYTHON_LIBUSB1_LICENSE = LGPL-2.1+ +PYTHON_LIBUSB1_LICENSE_FILES = COPYING.LESSER +PYTHON_LIBUSB1_DEPENDENCIES = libusb + +$(eval $(python-package)) diff --git a/package/python-lmdb/Config.in b/package/python-lmdb/Config.in new file mode 100644 index 00000000..baf9bce5 --- /dev/null +++ b/package/python-lmdb/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_LMDB + bool "python-lmdb" + select BR2_PACKAGE_PYTHON_CFFI # runtime + help + Universal Python binding for the LMDB 'Lightning' Database. + + https://pypi.python.org/pypi/lmdb diff --git a/package/python-lmdb/python-lmdb.hash b/package/python-lmdb/python-lmdb.hash new file mode 100644 index 00000000..ad176d5d --- /dev/null +++ b/package/python-lmdb/python-lmdb.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/lmdb/json +md5 d216e0220c625aa72de2acc158e81a0e lmdb-1.4.1.tar.gz +sha256 1f4c76af24e907593487c904ef5eba1993beb38ed385af82adb25a858f2d658d lmdb-1.4.1.tar.gz +# Locally computed sha256 checksums +sha256 310fe25c858a9515fc8c8d7d1f24a67c9496f84a91e0a0e41ea9975b1371e569 LICENSE diff --git a/package/python-lmdb/python-lmdb.mk b/package/python-lmdb/python-lmdb.mk new file mode 100644 index 00000000..7906d388 --- /dev/null +++ b/package/python-lmdb/python-lmdb.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-lmdb +# +################################################################################ + +PYTHON_LMDB_VERSION = 1.4.1 +PYTHON_LMDB_SOURCE = lmdb-$(PYTHON_LMDB_VERSION).tar.gz +PYTHON_LMDB_SITE = https://files.pythonhosted.org/packages/de/13/dd9b0c1924f0becc93e0bacd123a4e7a347966e3e74753ace3b1e85acc39 +PYTHON_LMDB_LICENSE = OLDAP-2.8 +PYTHON_LMDB_LICENSE_FILES = LICENSE +PYTHON_LMDB_CPE_ID_VENDOR = py-lmdb_project +PYTHON_LMDB_CPE_ID_PRODUCT = py-lmdb +PYTHON_LMDB_SETUP_TYPE = setuptools +PYTHON_LMDB_DEPENDENCIES = host-python-cffi + +$(eval $(python-package)) diff --git a/package/python-lockfile/Config.in b/package/python-lockfile/Config.in new file mode 100644 index 00000000..0e4a0fdd --- /dev/null +++ b/package/python-lockfile/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_PYTHON_LOCKFILE + bool "python-lockfile" + help + The lockfile package exports a LockFile class which provides a + simple API for locking files. Unlike the Windows + msvcrt.locking function, the fcntl.lockf and flock functions, + and the deprecated posixfile module, the API is identical + across both Unix (including Linux and Mac) and Windows + platforms. + + The lock mechanism relies on the atomic nature of the link + (on Unix) and mkdir (on Windows) system calls. An + implementation based on SQLite is also provided, more as a + demonstration of the possibilities it provides than as + production-quality code. + + https://pypi.org/project/lockfile/ diff --git a/package/python-lockfile/python-lockfile.hash b/package/python-lockfile/python-lockfile.hash new file mode 100644 index 00000000..641f4b64 --- /dev/null +++ b/package/python-lockfile/python-lockfile.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/project/lockfile/#copy-hash-modal-3c1db9ec-dd6e-4d06-8543-91094f428ac0 +md5 a6a1a82957a23afdf44cfdd039b65ff9 lockfile-0.12.2.tar.gz +sha256 6aed02de03cba24efabcd600b30540140634fc06cfa603822d508d5361e9f799 lockfile-0.12.2.tar.gz +# Locally computed sha256 +sha256 a26276d53dacb369641f31aa0fe37216028a0d93753f862ae206ce04f54b7b29 LICENSE diff --git a/package/python-lockfile/python-lockfile.mk b/package/python-lockfile/python-lockfile.mk new file mode 100644 index 00000000..212edcdc --- /dev/null +++ b/package/python-lockfile/python-lockfile.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-lockfile +# +################################################################################ + +PYTHON_LOCKFILE_VERSION = 0.12.2 +PYTHON_LOCKFILE_SOURCE = lockfile-$(PYTHON_LOCKFILE_VERSION).tar.gz +PYTHON_LOCKFILE_SITE = https://files.pythonhosted.org/packages/17/47/72cb04a58a35ec495f96984dddb48232b551aafb95bde614605b754fe6f7 +PYTHON_LOCKFILE_SETUP_TYPE = setuptools +PYTHON_LOCKFILE_LICENSE = MIT +PYTHON_LOCKFILE_LICENSE_FILES = LICENSE +PYTHON_LOCKFILE_DEPENDENCIES = host-python-pbr + +$(eval $(python-package)) diff --git a/package/python-logbook/Config.in b/package/python-logbook/Config.in new file mode 100644 index 00000000..99996b65 --- /dev/null +++ b/package/python-logbook/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_LOGBOOK + bool "python-logbook" + select BR2_PACKAGE_PYTHON3_ZLIB + help + A logging replacement for Python. + + http://logbook.pocoo.org/ diff --git a/package/python-logbook/python-logbook.hash b/package/python-logbook/python-logbook.hash new file mode 100644 index 00000000..8761945d --- /dev/null +++ b/package/python-logbook/python-logbook.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/logbook/json +md5 cbb7e5fb2d6325f42a323b0000127393 Logbook-1.7.0.post0.tar.gz +sha256 a5e8016701ca3beea6a390b0ba1541037f663543ca508ccd36cfdc841639cdd7 Logbook-1.7.0.post0.tar.gz +# Locally computed sha256 checksums +sha256 2ca266337cc6947578654ab0dd6438de4d01fa78b2e6eb554b09757df1178f98 LICENSE diff --git a/package/python-logbook/python-logbook.mk b/package/python-logbook/python-logbook.mk new file mode 100644 index 00000000..e47e78d2 --- /dev/null +++ b/package/python-logbook/python-logbook.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-logbook +# +################################################################################ + +PYTHON_LOGBOOK_VERSION = 1.7.0.post0 +PYTHON_LOGBOOK_SOURCE = Logbook-$(PYTHON_LOGBOOK_VERSION).tar.gz +PYTHON_LOGBOOK_SITE = https://files.pythonhosted.org/packages/cc/98/c1d93c1d7593f58515333a6217aa4ae647d9ee9c1aa2dfdf77b28b7bb7c7 +PYTHON_LOGBOOK_SETUP_TYPE = setuptools +PYTHON_LOGBOOK_LICENSE = BSD-3-Clause +PYTHON_LOGBOOK_LICENSE_FILES = LICENSE +PYTHON_LOGBOOK_DEPENDENCIES = host-python-cython + +$(eval $(python-package)) diff --git a/package/python-logstash/Config.in b/package/python-logstash/Config.in new file mode 100644 index 00000000..9d225db8 --- /dev/null +++ b/package/python-logstash/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_LOGSTASH + bool "python-logstash" + help + Python logging handler for Logstash. + + https://github.com/vklochan/python-logstash diff --git a/package/python-logstash/python-logstash.hash b/package/python-logstash/python-logstash.hash new file mode 100644 index 00000000..297bb16b --- /dev/null +++ b/package/python-logstash/python-logstash.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/python-logstash/json +md5 e2cbc75dd5417cb55acaa3a12bf3afac python-logstash-0.4.8.tar.gz +sha256 d04e1ce11ecc107e4a4f3b807fc57d96811e964a554081b3bbb44732f74ef5f9 python-logstash-0.4.8.tar.gz +# Locally computed sha256 checksums +sha256 fea6a5c634ac9d9e047151675adc197c16f45bfba3c26ab113f48fb9fa717fff LICENSE diff --git a/package/python-logstash/python-logstash.mk b/package/python-logstash/python-logstash.mk new file mode 100644 index 00000000..6cdbe200 --- /dev/null +++ b/package/python-logstash/python-logstash.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-logstash +# +################################################################################ + +PYTHON_LOGSTASH_VERSION = 0.4.8 +PYTHON_LOGSTASH_SITE = https://files.pythonhosted.org/packages/f7/3b/c3a957bbdd23859f07905fc3d1adfe89957217a347478c58409f0315cf1d +PYTHON_LOGSTASH_SETUP_TYPE = setuptools +PYTHON_LOGSTASH_LICENSE = MIT +PYTHON_LOGSTASH_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-lxml/Config.in b/package/python-lxml/Config.in new file mode 100644 index 00000000..3f3cb5c5 --- /dev/null +++ b/package/python-lxml/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_LXML + bool "python-lxml" + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_LIBXSLT + select BR2_PACKAGE_PYTHON3_ZLIB + help + The lxml XML toolkit is a Pythonic binding for the C libraries + libxml2 and libxslt. + + http://lxml.de/ diff --git a/package/python-lxml/Config.in.host b/package/python-lxml/Config.in.host new file mode 100644 index 00000000..7bf1e485 --- /dev/null +++ b/package/python-lxml/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_PYTHON_LXML + bool "host python-lxml" + help + The lxml XML toolkit is a Pythonic binding for the C libraries + libxml2 and libxslt. + + http://lxml.de/ diff --git a/package/python-lxml/python-lxml.hash b/package/python-lxml/python-lxml.hash new file mode 100644 index 00000000..3eb427a8 --- /dev/null +++ b/package/python-lxml/python-lxml.hash @@ -0,0 +1,7 @@ +# From https://pypi.org/project/lxml/ +sha256 bb2dc4898180bea79863d5487e5f9c7c34297414bad54bcd0f0852aee9cfdb87 lxml-5.2.2.tar.gz +# Locally computed +sha256 41d49dd406aa0e1548a6d5f21a30d6bf638b3cd96eb7289dd348d83ed2e40392 LICENSES.txt +sha256 69edb445c1335a8312d4c09271847e9956d84f0d9f724d125340cc3fad767b2a doc/licenses/BSD.txt +sha256 0497ae8138811ef4466ede653bab7a59feb3d3c14f9ed50fc33a00aeb5bec32e doc/licenses/elementtree.txt +sha256 56c5b13f28b78958890c36e3249c34c169041e42ebcfdce8080f3324ba2bf4de src/lxml/isoschematron/resources/rng/iso-schematron.rng diff --git a/package/python-lxml/python-lxml.mk b/package/python-lxml/python-lxml.mk new file mode 100644 index 00000000..2a26c132 --- /dev/null +++ b/package/python-lxml/python-lxml.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# python-lxml +# +################################################################################ + +PYTHON_LXML_VERSION = 5.2.2 +PYTHON_LXML_SITE = https://files.pythonhosted.org/packages/63/f7/ffbb6d2eb67b80a45b8a0834baa5557a14a5ffce0979439e7cd7f0c4055b +PYTHON_LXML_SOURCE = lxml-$(PYTHON_LXML_VERSION).tar.gz + +# Not including the GPL, because it is used only for the test scripts. +PYTHON_LXML_LICENSE = BSD-3-Clause, Others +PYTHON_LXML_LICENSE_FILES = \ + LICENSES.txt \ + doc/licenses/BSD.txt \ + doc/licenses/elementtree.txt \ + src/lxml/isoschematron/resources/rng/iso-schematron.rng +PYTHON_LXML_CPE_ID_VENDOR = lxml +PYTHON_LXML_CPE_ID_PRODUCT = lxml + +# python-lxml can use either setuptools, or distutils as a fallback. +# So, we use setuptools. +PYTHON_LXML_SETUP_TYPE = setuptools + +PYTHON_LXML_DEPENDENCIES = libxml2 libxslt zlib +HOST_PYTHON_LXML_DEPENDENCIES = host-libxml2 host-libxslt host-zlib + +# python-lxml needs these scripts in order to properly detect libxml2 and +# libxslt compiler and linker flags +PYTHON_LXML_BUILD_OPTS = \ + --skip-dependency-check \ + -C--build-option=--xslt-config=$(STAGING_DIR)/usr/bin/xslt-config \ + -C--build-option=--xml2-config=$(STAGING_DIR)/usr/bin/xml2-config +HOST_PYTHON_LXML_BUILD_OPTS = \ + --skip-dependency-check \ + -C--build-option=--xslt-config=$(HOST_DIR)/bin/xslt-config \ + -C--build-option=--xml2-config=$(HOST_DIR)/bin/xml2-config + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-m2crypto/Config.in b/package/python-m2crypto/Config.in new file mode 100644 index 00000000..af710d53 --- /dev/null +++ b/package/python-m2crypto/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_M2CRYPTO + bool "python-m2crypto" + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_PYTHON3_PYEXPAT # runtime + select BR2_PACKAGE_PYTHON3_SSL # runtime + help + M2Crypto: A Python crypto and SSL toolkit. + + https://gitlab.com/m2crypto/m2crypto diff --git a/package/python-m2crypto/python-m2crypto.hash b/package/python-m2crypto/python-m2crypto.hash new file mode 100644 index 00000000..78283708 --- /dev/null +++ b/package/python-m2crypto/python-m2crypto.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/m2crypto/json +md5 280c20072afbe7010cf9e9620ea25c7b M2Crypto-0.40.1.tar.gz +sha256 bbfd113ec55708c05816252a4f09e4237df4f3bbfc8171cbbc33057d257bbb30 M2Crypto-0.40.1.tar.gz +# Locally computed sha256 checksums +sha256 4eca478396f4b2b020729a111fce3f096456d74500bfd8f2b0388c3c69f997c0 LICENCE diff --git a/package/python-m2crypto/python-m2crypto.mk b/package/python-m2crypto/python-m2crypto.mk new file mode 100644 index 00000000..6c07f42d --- /dev/null +++ b/package/python-m2crypto/python-m2crypto.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# python-m2crypto +# +################################################################################ + +PYTHON_M2CRYPTO_VERSION = 0.40.1 +PYTHON_M2CRYPTO_SOURCE = M2Crypto-$(PYTHON_M2CRYPTO_VERSION).tar.gz +PYTHON_M2CRYPTO_SITE = https://files.pythonhosted.org/packages/9e/a3/9433817493ea250db67a05de3361cb0a1d58531847d50406f2f28455e68c +PYTHON_M2CRYPTO_SETUP_TYPE = setuptools +PYTHON_M2CRYPTO_LICENSE = MIT +PYTHON_M2CRYPTO_LICENSE_FILES = LICENCE +PYTHON_M2CRYPTO_CPE_ID_VENDOR = m2crypto_project +PYTHON_M2CRYPTO_CPE_ID_PRODUCT = m2crypto +PYTHON_M2CRYPTO_DEPENDENCIES = openssl host-swig +PYTHON_M2CRYPTO_BUILD_OPTS = \ + -C--build-option=build_ext \ + -C--build-option=--openssl=$(STAGING_DIR)/usr + +$(eval $(python-package)) diff --git a/package/python-magic-wormhole-mailbox-server/0001-setup.py-remove-the-U-open-mode-removed-in-Python-3..patch b/package/python-magic-wormhole-mailbox-server/0001-setup.py-remove-the-U-open-mode-removed-in-Python-3..patch new file mode 100644 index 00000000..8afe7c95 --- /dev/null +++ b/package/python-magic-wormhole-mailbox-server/0001-setup.py-remove-the-U-open-mode-removed-in-Python-3..patch @@ -0,0 +1,39 @@ +From df6126ee86c1f84c7e0c25fcf69543b83b1b32c6 Mon Sep 17 00:00:00 2001 +From: Julien Olivain +Date: Sat, 5 Nov 2022 13:06:07 +0100 +Subject: [PATCH] setup.py: remove the 'U' open mode removed in Python 3.11 + +The 'U' open mode was removed in Python 3.11. See: +https://docs.python.org/3.11/library/functions.html#open + +Installing with Python 3.11 fails with: + + /path/to/python-magic-wormhole-mailbox-server-0.4.1/setup.py", line 20, in + long_description=open('README.md', 'rU').read(), + ^^^^^^^^^^^^^^^^^^^^^^^ + ValueError: invalid mode: 'rU' + +This patch removes the 'U' open mode. + +Upstream: https://github.com/magic-wormhole/magic-wormhole-mailbox-server/commit/df6126ee86c1f84c7e0c25fcf69543b83b1b32c6 +Signed-off-by: Julien Olivain +--- + setup.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/setup.py b/setup.py +index 6ef292f..ad9ff5a 100644 +--- a/setup.py ++++ b/setup.py +@@ -17,7 +17,7 @@ trove_classifiers = [ + setup(name="magic-wormhole-mailbox-server", + version=versioneer.get_version(), + description="Securely transfer data between computers", +- long_description=open('README.md', 'rU').read(), ++ long_description=open('README.md', 'r').read(), + long_description_content_type='text/markdown', + author="Brian Warner", + author_email="warner-magic-wormhole@lothar.com", +-- +2.38.1 + diff --git a/package/python-magic-wormhole-mailbox-server/0002-Update-versioneer-to-0.29.patch b/package/python-magic-wormhole-mailbox-server/0002-Update-versioneer-to-0.29.patch new file mode 100644 index 00000000..3152f1aa --- /dev/null +++ b/package/python-magic-wormhole-mailbox-server/0002-Update-versioneer-to-0.29.patch @@ -0,0 +1,2194 @@ +From 76b422b7f53dbc41195a184d966230106f6ddc7d Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Tue, 24 Oct 2023 09:50:41 +0200 +Subject: [PATCH] Update versioneer to 0.29 + +Fixes builds against Python 3.12.0 + +Upstream: https://github.com/magic-wormhole/magic-wormhole-mailbox-server/pull/40 + +Signed-off-by: Adam Duskett +--- + versioneer.py | 1350 ++++++++++++++++++++++++++++++++++--------------- + 1 file changed, 931 insertions(+), 419 deletions(-) + +diff --git a/versioneer.py b/versioneer.py +index 64fea1c..de97d90 100644 +--- a/versioneer.py ++++ b/versioneer.py +@@ -1,5 +1,4 @@ +- +-# Version: 0.18 ++# Version: 0.29 + + """The Versioneer - like a rocketeer, but for versions. + +@@ -7,18 +6,14 @@ The Versioneer + ============== + + * like a rocketeer, but for versions! +-* https://github.com/warner/python-versioneer ++* https://github.com/python-versioneer/python-versioneer + * Brian Warner +-* License: Public Domain +-* Compatible With: python2.6, 2.7, 3.2, 3.3, 3.4, 3.5, 3.6, and pypy +-* [![Latest Version] +-(https://pypip.in/version/versioneer/badge.svg?style=flat) +-](https://pypi.python.org/pypi/versioneer/) +-* [![Build Status] +-(https://travis-ci.org/warner/python-versioneer.png?branch=master) +-](https://travis-ci.org/warner/python-versioneer) +- +-This is a tool for managing a recorded version number in distutils-based ++* License: Public Domain (Unlicense) ++* Compatible with: Python 3.7, 3.8, 3.9, 3.10, 3.11 and pypy3 ++* [![Latest Version][pypi-image]][pypi-url] ++* [![Build Status][travis-image]][travis-url] ++ ++This is a tool for managing a recorded version number in setuptools-based + python projects. The goal is to remove the tedious and error-prone "update + the embedded version string" step from your release process. Making a new + release should be as easy as recording a new tag in your version-control +@@ -27,9 +22,38 @@ system, and maybe making new tarballs. + + ## Quick Install + +-* `pip install versioneer` to somewhere to your $PATH +-* add a `[versioneer]` section to your setup.cfg (see below) +-* run `versioneer install` in your source tree, commit the results ++Versioneer provides two installation modes. The "classic" vendored mode installs ++a copy of versioneer into your repository. The experimental build-time dependency mode ++is intended to allow you to skip this step and simplify the process of upgrading. ++ ++### Vendored mode ++ ++* `pip install versioneer` to somewhere in your $PATH ++ * A [conda-forge recipe](https://github.com/conda-forge/versioneer-feedstock) is ++ available, so you can also use `conda install -c conda-forge versioneer` ++* add a `[tool.versioneer]` section to your `pyproject.toml` or a ++ `[versioneer]` section to your `setup.cfg` (see [Install](INSTALL.md)) ++ * Note that you will need to add `tomli; python_version < "3.11"` to your ++ build-time dependencies if you use `pyproject.toml` ++* run `versioneer install --vendor` in your source tree, commit the results ++* verify version information with `python setup.py version` ++ ++### Build-time dependency mode ++ ++* `pip install versioneer` to somewhere in your $PATH ++ * A [conda-forge recipe](https://github.com/conda-forge/versioneer-feedstock) is ++ available, so you can also use `conda install -c conda-forge versioneer` ++* add a `[tool.versioneer]` section to your `pyproject.toml` or a ++ `[versioneer]` section to your `setup.cfg` (see [Install](INSTALL.md)) ++* add `versioneer` (with `[toml]` extra, if configuring in `pyproject.toml`) ++ to the `requires` key of the `build-system` table in `pyproject.toml`: ++ ```toml ++ [build-system] ++ requires = ["setuptools", "versioneer[toml]"] ++ build-backend = "setuptools.build_meta" ++ ``` ++* run `versioneer install --no-vendor` in your source tree, commit the results ++* verify version information with `python setup.py version` + + ## Version Identifiers + +@@ -61,7 +85,7 @@ version 1.3). Many VCS systems can report a description that captures this, + for example `git describe --tags --dirty --always` reports things like + "0.7-1-g574ab98-dirty" to indicate that the checkout is one revision past the + 0.7 tag, has a unique revision id of "574ab98", and is "dirty" (it has +-uncommitted changes. ++uncommitted changes). + + The version identifier is used for multiple purposes: + +@@ -166,7 +190,7 @@ which may help identify what went wrong). + + Some situations are known to cause problems for Versioneer. This details the + most significant ones. More can be found on Github +-[issues page](https://github.com/warner/python-versioneer/issues). ++[issues page](https://github.com/python-versioneer/python-versioneer/issues). + + ### Subprojects + +@@ -180,7 +204,7 @@ two common reasons why `setup.py` might not be in the root: + `setup.cfg`, and `tox.ini`. Projects like these produce multiple PyPI + distributions (and upload multiple independently-installable tarballs). + * Source trees whose main purpose is to contain a C library, but which also +- provide bindings to Python (and perhaps other langauges) in subdirectories. ++ provide bindings to Python (and perhaps other languages) in subdirectories. + + Versioneer will look for `.git` in parent directories, and most operations + should get the right version string. However `pip` and `setuptools` have bugs +@@ -194,9 +218,9 @@ work too. + Pip-8.1.1 is known to have this problem, but hopefully it will get fixed in + some later version. + +-[Bug #38](https://github.com/warner/python-versioneer/issues/38) is tracking ++[Bug #38](https://github.com/python-versioneer/python-versioneer/issues/38) is tracking + this issue. The discussion in +-[PR #61](https://github.com/warner/python-versioneer/pull/61) describes the ++[PR #61](https://github.com/python-versioneer/python-versioneer/pull/61) describes the + issue from the Versioneer side in more detail. + [pip PR#3176](https://github.com/pypa/pip/pull/3176) and + [pip PR#3615](https://github.com/pypa/pip/pull/3615) contain work to improve +@@ -224,31 +248,20 @@ regenerated while a different version is checked out. Many setup.py commands + cause egg_info to be rebuilt (including `sdist`, `wheel`, and installing into + a different virtualenv), so this can be surprising. + +-[Bug #83](https://github.com/warner/python-versioneer/issues/83) describes ++[Bug #83](https://github.com/python-versioneer/python-versioneer/issues/83) describes + this one, but upgrading to a newer version of setuptools should probably + resolve it. + +-### Unicode version strings +- +-While Versioneer works (and is continually tested) with both Python 2 and +-Python 3, it is not entirely consistent with bytes-vs-unicode distinctions. +-Newer releases probably generate unicode version strings on py2. It's not +-clear that this is wrong, but it may be surprising for applications when then +-write these strings to a network connection or include them in bytes-oriented +-APIs like cryptographic checksums. +- +-[Bug #71](https://github.com/warner/python-versioneer/issues/71) investigates +-this question. +- + + ## Updating Versioneer + + To upgrade your project to a new release of Versioneer, do the following: + + * install the new Versioneer (`pip install -U versioneer` or equivalent) +-* edit `setup.cfg`, if necessary, to include any new configuration settings +- indicated by the release notes. See [UPGRADING](./UPGRADING.md) for details. +-* re-run `versioneer install` in your source tree, to replace ++* edit `setup.cfg` and `pyproject.toml`, if necessary, ++ to include any new configuration settings indicated by the release notes. ++ See [UPGRADING](./UPGRADING.md) for details. ++* re-run `versioneer install --[no-]vendor` in your source tree, to replace + `SRC/_version.py` + * commit any changed files + +@@ -265,35 +278,70 @@ installation by editing setup.py . Alternatively, it might go the other + direction and include code from all supported VCS systems, reducing the + number of intermediate scripts. + ++## Similar projects ++ ++* [setuptools_scm](https://github.com/pypa/setuptools_scm/) - a non-vendored build-time ++ dependency ++* [minver](https://github.com/jbweston/miniver) - a lightweight reimplementation of ++ versioneer ++* [versioningit](https://github.com/jwodder/versioningit) - a PEP 518-based setuptools ++ plugin + + ## License + + To make Versioneer easier to embed, all its code is dedicated to the public + domain. The `_version.py` that it creates is also in the public domain. +-Specifically, both are released under the Creative Commons "Public Domain +-Dedication" license (CC0-1.0), as described in +-https://creativecommons.org/publicdomain/zero/1.0/ . ++Specifically, both are released under the "Unlicense", as described in ++https://unlicense.org/. ++ ++[pypi-image]: https://img.shields.io/pypi/v/versioneer.svg ++[pypi-url]: https://pypi.python.org/pypi/versioneer/ ++[travis-image]: ++https://img.shields.io/travis/com/python-versioneer/python-versioneer.svg ++[travis-url]: https://travis-ci.com/github/python-versioneer/python-versioneer + + """ ++# pylint:disable=invalid-name,import-outside-toplevel,missing-function-docstring ++# pylint:disable=missing-class-docstring,too-many-branches,too-many-statements ++# pylint:disable=raise-missing-from,too-many-lines,too-many-locals,import-error ++# pylint:disable=too-few-public-methods,redefined-outer-name,consider-using-with ++# pylint:disable=attribute-defined-outside-init,too-many-arguments + +-from __future__ import print_function +-try: +- import configparser +-except ImportError: +- import ConfigParser as configparser ++import configparser + import errno + import json + import os + import re + import subprocess + import sys ++from pathlib import Path ++from typing import Any, Callable, cast, Dict, List, Optional, Tuple, Union ++from typing import NoReturn ++import functools ++ ++have_tomllib = True ++if sys.version_info >= (3, 11): ++ import tomllib ++else: ++ try: ++ import tomli as tomllib ++ except ImportError: ++ have_tomllib = False + + + class VersioneerConfig: + """Container for Versioneer configuration parameters.""" + ++ VCS: str ++ style: str ++ tag_prefix: str ++ versionfile_source: str ++ versionfile_build: Optional[str] ++ parentdir_prefix: Optional[str] ++ verbose: Optional[bool] ++ + +-def get_root(): ++def get_root() -> str: + """Get the project root directory. + + We require that all commands are run from the project root, i.e. the +@@ -301,18 +349,30 @@ def get_root(): + """ + root = os.path.realpath(os.path.abspath(os.getcwd())) + setup_py = os.path.join(root, "setup.py") ++ pyproject_toml = os.path.join(root, "pyproject.toml") + versioneer_py = os.path.join(root, "versioneer.py") +- if not (os.path.exists(setup_py) or os.path.exists(versioneer_py)): ++ if not ( ++ os.path.exists(setup_py) ++ or os.path.exists(pyproject_toml) ++ or os.path.exists(versioneer_py) ++ ): + # allow 'python path/to/setup.py COMMAND' + root = os.path.dirname(os.path.realpath(os.path.abspath(sys.argv[0]))) + setup_py = os.path.join(root, "setup.py") ++ pyproject_toml = os.path.join(root, "pyproject.toml") + versioneer_py = os.path.join(root, "versioneer.py") +- if not (os.path.exists(setup_py) or os.path.exists(versioneer_py)): +- err = ("Versioneer was unable to run the project root directory. " +- "Versioneer requires setup.py to be executed from " +- "its immediate directory (like 'python setup.py COMMAND'), " +- "or in a way that lets it use sys.argv[0] to find the root " +- "(like 'python path/to/setup.py COMMAND').") ++ if not ( ++ os.path.exists(setup_py) ++ or os.path.exists(pyproject_toml) ++ or os.path.exists(versioneer_py) ++ ): ++ err = ( ++ "Versioneer was unable to run the project root directory. " ++ "Versioneer requires setup.py to be executed from " ++ "its immediate directory (like 'python setup.py COMMAND'), " ++ "or in a way that lets it use sys.argv[0] to find the root " ++ "(like 'python path/to/setup.py COMMAND')." ++ ) + raise VersioneerBadRootError(err) + try: + # Certain runtime workflows (setup.py install/develop in a setuptools +@@ -321,43 +381,64 @@ def get_root(): + # module-import table will cache the first one. So we can't use + # os.path.dirname(__file__), as that will find whichever + # versioneer.py was first imported, even in later projects. +- me = os.path.realpath(os.path.abspath(__file__)) +- me_dir = os.path.normcase(os.path.splitext(me)[0]) ++ my_path = os.path.realpath(os.path.abspath(__file__)) ++ me_dir = os.path.normcase(os.path.splitext(my_path)[0]) + vsr_dir = os.path.normcase(os.path.splitext(versioneer_py)[0]) +- if me_dir != vsr_dir: +- print("Warning: build in %s is using versioneer.py from %s" +- % (os.path.dirname(me), versioneer_py)) ++ if me_dir != vsr_dir and "VERSIONEER_PEP518" not in globals(): ++ print( ++ "Warning: build in %s is using versioneer.py from %s" ++ % (os.path.dirname(my_path), versioneer_py) ++ ) + except NameError: + pass + return root + + +-def get_config_from_root(root): ++def get_config_from_root(root: str) -> VersioneerConfig: + """Read the project setup.cfg file to determine Versioneer config.""" +- # This might raise EnvironmentError (if setup.cfg is missing), or ++ # This might raise OSError (if setup.cfg is missing), or + # configparser.NoSectionError (if it lacks a [versioneer] section), or + # configparser.NoOptionError (if it lacks "VCS="). See the docstring at + # the top of versioneer.py for instructions on writing your setup.cfg . +- setup_cfg = os.path.join(root, "setup.cfg") +- parser = configparser.SafeConfigParser() +- with open(setup_cfg, "r") as f: +- parser.readfp(f) +- VCS = parser.get("versioneer", "VCS") # mandatory +- +- def get(parser, name): +- if parser.has_option("versioneer", name): +- return parser.get("versioneer", name) +- return None ++ root_pth = Path(root) ++ pyproject_toml = root_pth / "pyproject.toml" ++ setup_cfg = root_pth / "setup.cfg" ++ section: Union[Dict[str, Any], configparser.SectionProxy, None] = None ++ if pyproject_toml.exists() and have_tomllib: ++ try: ++ with open(pyproject_toml, "rb") as fobj: ++ pp = tomllib.load(fobj) ++ section = pp["tool"]["versioneer"] ++ except (tomllib.TOMLDecodeError, KeyError) as e: ++ print(f"Failed to load config from {pyproject_toml}: {e}") ++ print("Try to load it from setup.cfg") ++ if not section: ++ parser = configparser.ConfigParser() ++ with open(setup_cfg) as cfg_file: ++ parser.read_file(cfg_file) ++ parser.get("versioneer", "VCS") # raise error if missing ++ ++ section = parser["versioneer"] ++ ++ # `cast`` really shouldn't be used, but its simplest for the ++ # common VersioneerConfig users at the moment. We verify against ++ # `None` values elsewhere where it matters ++ + cfg = VersioneerConfig() +- cfg.VCS = VCS +- cfg.style = get(parser, "style") or "" +- cfg.versionfile_source = get(parser, "versionfile_source") +- cfg.versionfile_build = get(parser, "versionfile_build") +- cfg.tag_prefix = get(parser, "tag_prefix") +- if cfg.tag_prefix in ("''", '""'): ++ cfg.VCS = section["VCS"] ++ cfg.style = section.get("style", "") ++ cfg.versionfile_source = cast(str, section.get("versionfile_source")) ++ cfg.versionfile_build = section.get("versionfile_build") ++ cfg.tag_prefix = cast(str, section.get("tag_prefix")) ++ if cfg.tag_prefix in ("''", '""', None): + cfg.tag_prefix = "" +- cfg.parentdir_prefix = get(parser, "parentdir_prefix") +- cfg.verbose = get(parser, "verbose") ++ cfg.parentdir_prefix = section.get("parentdir_prefix") ++ if isinstance(section, configparser.SectionProxy): ++ # Make sure configparser translates to bool ++ cfg.verbose = section.getboolean("verbose") ++ else: ++ cfg.verbose = section.get("verbose") ++ + return cfg + + +@@ -366,37 +447,54 @@ class NotThisMethod(Exception): + + + # these dictionaries contain VCS-specific tools +-LONG_VERSION_PY = {} +-HANDLERS = {} ++LONG_VERSION_PY: Dict[str, str] = {} ++HANDLERS: Dict[str, Dict[str, Callable]] = {} + + +-def register_vcs_handler(vcs, method): # decorator +- """Decorator to mark a method as the handler for a particular VCS.""" +- def decorate(f): ++def register_vcs_handler(vcs: str, method: str) -> Callable: # decorator ++ """Create decorator to mark a method as the handler of a VCS.""" ++ ++ def decorate(f: Callable) -> Callable: + """Store f in HANDLERS[vcs][method].""" +- if vcs not in HANDLERS: +- HANDLERS[vcs] = {} +- HANDLERS[vcs][method] = f ++ HANDLERS.setdefault(vcs, {})[method] = f + return f ++ + return decorate + + +-def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, +- env=None): ++def run_command( ++ commands: List[str], ++ args: List[str], ++ cwd: Optional[str] = None, ++ verbose: bool = False, ++ hide_stderr: bool = False, ++ env: Optional[Dict[str, str]] = None, ++) -> Tuple[Optional[str], Optional[int]]: + """Call the given command(s).""" + assert isinstance(commands, list) +- p = None +- for c in commands: ++ process = None ++ ++ popen_kwargs: Dict[str, Any] = {} ++ if sys.platform == "win32": ++ # This hides the console window if pythonw.exe is used ++ startupinfo = subprocess.STARTUPINFO() ++ startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW ++ popen_kwargs["startupinfo"] = startupinfo ++ ++ for command in commands: + try: +- dispcmd = str([c] + args) ++ dispcmd = str([command] + args) + # remember shell=False, so use git.cmd on windows, not just git +- p = subprocess.Popen([c] + args, cwd=cwd, env=env, +- stdout=subprocess.PIPE, +- stderr=(subprocess.PIPE if hide_stderr +- else None)) ++ process = subprocess.Popen( ++ [command] + args, ++ cwd=cwd, ++ env=env, ++ stdout=subprocess.PIPE, ++ stderr=(subprocess.PIPE if hide_stderr else None), ++ **popen_kwargs, ++ ) + break +- except EnvironmentError: +- e = sys.exc_info()[1] ++ except OSError as e: + if e.errno == errno.ENOENT: + continue + if verbose: +@@ -407,26 +505,27 @@ def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, + if verbose: + print("unable to find command, tried %s" % (commands,)) + return None, None +- stdout = p.communicate()[0].strip() +- if sys.version_info[0] >= 3: +- stdout = stdout.decode() +- if p.returncode != 0: ++ stdout = process.communicate()[0].strip().decode() ++ if process.returncode != 0: + if verbose: + print("unable to run %s (error)" % dispcmd) + print("stdout was %s" % stdout) +- return None, p.returncode +- return stdout, p.returncode ++ return None, process.returncode ++ return stdout, process.returncode + + +-LONG_VERSION_PY['git'] = ''' ++LONG_VERSION_PY[ ++ "git" ++] = r''' + # This file helps to compute a version number in source trees obtained from + # git-archive tarball (such as those provided by githubs download-from-tag + # feature). Distribution tarballs (built by setup.py sdist) and build + # directories (produced by setup.py build) will contain a much shorter file + # that just contains the computed version number. + +-# This file is released into the public domain. Generated by +-# versioneer-0.18 (https://github.com/warner/python-versioneer) ++# This file is released into the public domain. ++# Generated by versioneer-0.29 ++# https://github.com/python-versioneer/python-versioneer + + """Git implementation of _version.py.""" + +@@ -435,9 +534,11 @@ import os + import re + import subprocess + import sys ++from typing import Any, Callable, Dict, List, Optional, Tuple ++import functools + + +-def get_keywords(): ++def get_keywords() -> Dict[str, str]: + """Get the keywords needed to look up the version information.""" + # these strings will be replaced by git during git-archive. + # setup.py/versioneer.py will grep for the variable names, so they must +@@ -453,8 +554,15 @@ def get_keywords(): + class VersioneerConfig: + """Container for Versioneer configuration parameters.""" + ++ VCS: str ++ style: str ++ tag_prefix: str ++ parentdir_prefix: str ++ versionfile_source: str ++ verbose: bool ++ + +-def get_config(): ++def get_config() -> VersioneerConfig: + """Create, populate and return the VersioneerConfig() object.""" + # these strings are filled in when 'setup.py versioneer' creates + # _version.py +@@ -472,13 +580,13 @@ class NotThisMethod(Exception): + """Exception raised if a method is not valid for the current scenario.""" + + +-LONG_VERSION_PY = {} +-HANDLERS = {} ++LONG_VERSION_PY: Dict[str, str] = {} ++HANDLERS: Dict[str, Dict[str, Callable]] = {} + + +-def register_vcs_handler(vcs, method): # decorator +- """Decorator to mark a method as the handler for a particular VCS.""" +- def decorate(f): ++def register_vcs_handler(vcs: str, method: str) -> Callable: # decorator ++ """Create decorator to mark a method as the handler of a VCS.""" ++ def decorate(f: Callable) -> Callable: + """Store f in HANDLERS[vcs][method].""" + if vcs not in HANDLERS: + HANDLERS[vcs] = {} +@@ -487,22 +595,35 @@ def register_vcs_handler(vcs, method): # decorator + return decorate + + +-def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, +- env=None): ++def run_command( ++ commands: List[str], ++ args: List[str], ++ cwd: Optional[str] = None, ++ verbose: bool = False, ++ hide_stderr: bool = False, ++ env: Optional[Dict[str, str]] = None, ++) -> Tuple[Optional[str], Optional[int]]: + """Call the given command(s).""" + assert isinstance(commands, list) +- p = None +- for c in commands: ++ process = None ++ ++ popen_kwargs: Dict[str, Any] = {} ++ if sys.platform == "win32": ++ # This hides the console window if pythonw.exe is used ++ startupinfo = subprocess.STARTUPINFO() ++ startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW ++ popen_kwargs["startupinfo"] = startupinfo ++ ++ for command in commands: + try: +- dispcmd = str([c] + args) ++ dispcmd = str([command] + args) + # remember shell=False, so use git.cmd on windows, not just git +- p = subprocess.Popen([c] + args, cwd=cwd, env=env, +- stdout=subprocess.PIPE, +- stderr=(subprocess.PIPE if hide_stderr +- else None)) ++ process = subprocess.Popen([command] + args, cwd=cwd, env=env, ++ stdout=subprocess.PIPE, ++ stderr=(subprocess.PIPE if hide_stderr ++ else None), **popen_kwargs) + break +- except EnvironmentError: +- e = sys.exc_info()[1] ++ except OSError as e: + if e.errno == errno.ENOENT: + continue + if verbose: +@@ -513,18 +634,20 @@ def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, + if verbose: + print("unable to find command, tried %%s" %% (commands,)) + return None, None +- stdout = p.communicate()[0].strip() +- if sys.version_info[0] >= 3: +- stdout = stdout.decode() +- if p.returncode != 0: ++ stdout = process.communicate()[0].strip().decode() ++ if process.returncode != 0: + if verbose: + print("unable to run %%s (error)" %% dispcmd) + print("stdout was %%s" %% stdout) +- return None, p.returncode +- return stdout, p.returncode ++ return None, process.returncode ++ return stdout, process.returncode + + +-def versions_from_parentdir(parentdir_prefix, root, verbose): ++def versions_from_parentdir( ++ parentdir_prefix: str, ++ root: str, ++ verbose: bool, ++) -> Dict[str, Any]: + """Try to determine the version from the parent directory name. + + Source tarballs conventionally unpack into a directory that includes both +@@ -533,15 +656,14 @@ def versions_from_parentdir(parentdir_prefix, root, verbose): + """ + rootdirs = [] + +- for i in range(3): ++ for _ in range(3): + dirname = os.path.basename(root) + if dirname.startswith(parentdir_prefix): + return {"version": dirname[len(parentdir_prefix):], + "full-revisionid": None, + "dirty": False, "error": None, "date": None} +- else: +- rootdirs.append(root) +- root = os.path.dirname(root) # up a level ++ rootdirs.append(root) ++ root = os.path.dirname(root) # up a level + + if verbose: + print("Tried directories %%s but none started with prefix %%s" %% +@@ -550,41 +672,48 @@ def versions_from_parentdir(parentdir_prefix, root, verbose): + + + @register_vcs_handler("git", "get_keywords") +-def git_get_keywords(versionfile_abs): ++def git_get_keywords(versionfile_abs: str) -> Dict[str, str]: + """Extract version information from the given file.""" + # the code embedded in _version.py can just fetch the value of these + # keywords. When used from setup.py, we don't want to import _version.py, + # so we do it with a regexp instead. This function is not used from + # _version.py. +- keywords = {} ++ keywords: Dict[str, str] = {} + try: +- f = open(versionfile_abs, "r") +- for line in f.readlines(): +- if line.strip().startswith("git_refnames ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["refnames"] = mo.group(1) +- if line.strip().startswith("git_full ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["full"] = mo.group(1) +- if line.strip().startswith("git_date ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["date"] = mo.group(1) +- f.close() +- except EnvironmentError: ++ with open(versionfile_abs, "r") as fobj: ++ for line in fobj: ++ if line.strip().startswith("git_refnames ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["refnames"] = mo.group(1) ++ if line.strip().startswith("git_full ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["full"] = mo.group(1) ++ if line.strip().startswith("git_date ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["date"] = mo.group(1) ++ except OSError: + pass + return keywords + + + @register_vcs_handler("git", "keywords") +-def git_versions_from_keywords(keywords, tag_prefix, verbose): ++def git_versions_from_keywords( ++ keywords: Dict[str, str], ++ tag_prefix: str, ++ verbose: bool, ++) -> Dict[str, Any]: + """Get version information from git keywords.""" +- if not keywords: +- raise NotThisMethod("no keywords at all, weird") ++ if "refnames" not in keywords: ++ raise NotThisMethod("Short version file found") + date = keywords.get("date") + if date is not None: ++ # Use only the last line. Previous lines may contain GPG signature ++ # information. ++ date = date.splitlines()[-1] ++ + # git-2.2.0 added "%%cI", which expands to an ISO-8601 -compliant + # datestamp. However we prefer "%%ci" (which expands to an "ISO-8601 + # -like" string, which we must then edit to make compliant), because +@@ -597,11 +726,11 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + if verbose: + print("keywords are unexpanded, not using") + raise NotThisMethod("unexpanded keywords, not a git-archive tarball") +- refs = set([r.strip() for r in refnames.strip("()").split(",")]) ++ refs = {r.strip() for r in refnames.strip("()").split(",")} + # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of + # just "foo-1.0". If we see a "tag: " prefix, prefer those. + TAG = "tag: " +- tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)]) ++ tags = {r[len(TAG):] for r in refs if r.startswith(TAG)} + if not tags: + # Either we're using git < 1.8.3, or there really are no tags. We use + # a heuristic: assume all version tags have a digit. The old git %%d +@@ -610,7 +739,7 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + # between branches and tags. By ignoring refnames without digits, we + # filter out many common branch names like "release" and + # "stabilization", as well as "HEAD" and "master". +- tags = set([r for r in refs if re.search(r'\d', r)]) ++ tags = {r for r in refs if re.search(r'\d', r)} + if verbose: + print("discarding '%%s', no digits" %% ",".join(refs - tags)) + if verbose: +@@ -619,6 +748,11 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + # sorting will prefer e.g. "2.0" over "2.0rc1" + if ref.startswith(tag_prefix): + r = ref[len(tag_prefix):] ++ # Filter out refs that exactly match prefix or that don't start ++ # with a number once the prefix is stripped (mostly a concern ++ # when prefix is '') ++ if not re.match(r'\d', r): ++ continue + if verbose: + print("picking %%s" %% r) + return {"version": r, +@@ -634,7 +768,12 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + + + @register_vcs_handler("git", "pieces_from_vcs") +-def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): ++def git_pieces_from_vcs( ++ tag_prefix: str, ++ root: str, ++ verbose: bool, ++ runner: Callable = run_command ++) -> Dict[str, Any]: + """Get version from 'git describe' in the root of the source tree. + + This only gets called if the git-archive 'subst' keywords were *not* +@@ -645,8 +784,15 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + if sys.platform == "win32": + GITS = ["git.cmd", "git.exe"] + +- out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root, +- hide_stderr=True) ++ # GIT_DIR can interfere with correct operation of Versioneer. ++ # It may be intended to be passed to the Versioneer-versioned project, ++ # but that should not change where we get our version from. ++ env = os.environ.copy() ++ env.pop("GIT_DIR", None) ++ runner = functools.partial(runner, env=env) ++ ++ _, rc = runner(GITS, ["rev-parse", "--git-dir"], cwd=root, ++ hide_stderr=not verbose) + if rc != 0: + if verbose: + print("Directory %%s not under git control" %% root) +@@ -654,24 +800,57 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + + # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty] + # if there isn't one, this yields HEX[-dirty] (no NUM) +- describe_out, rc = run_command(GITS, ["describe", "--tags", "--dirty", +- "--always", "--long", +- "--match", "%%s*" %% tag_prefix], +- cwd=root) ++ describe_out, rc = runner(GITS, [ ++ "describe", "--tags", "--dirty", "--always", "--long", ++ "--match", f"{tag_prefix}[[:digit:]]*" ++ ], cwd=root) + # --long was added in git-1.5.5 + if describe_out is None: + raise NotThisMethod("'git describe' failed") + describe_out = describe_out.strip() +- full_out, rc = run_command(GITS, ["rev-parse", "HEAD"], cwd=root) ++ full_out, rc = runner(GITS, ["rev-parse", "HEAD"], cwd=root) + if full_out is None: + raise NotThisMethod("'git rev-parse' failed") + full_out = full_out.strip() + +- pieces = {} ++ pieces: Dict[str, Any] = {} + pieces["long"] = full_out + pieces["short"] = full_out[:7] # maybe improved later + pieces["error"] = None + ++ branch_name, rc = runner(GITS, ["rev-parse", "--abbrev-ref", "HEAD"], ++ cwd=root) ++ # --abbrev-ref was added in git-1.6.3 ++ if rc != 0 or branch_name is None: ++ raise NotThisMethod("'git rev-parse --abbrev-ref' returned error") ++ branch_name = branch_name.strip() ++ ++ if branch_name == "HEAD": ++ # If we aren't exactly on a branch, pick a branch which represents ++ # the current commit. If all else fails, we are on a branchless ++ # commit. ++ branches, rc = runner(GITS, ["branch", "--contains"], cwd=root) ++ # --contains was added in git-1.5.4 ++ if rc != 0 or branches is None: ++ raise NotThisMethod("'git branch --contains' returned error") ++ branches = branches.split("\n") ++ ++ # Remove the first line if we're running detached ++ if "(" in branches[0]: ++ branches.pop(0) ++ ++ # Strip off the leading "* " from the list of branches. ++ branches = [branch[2:] for branch in branches] ++ if "master" in branches: ++ branch_name = "master" ++ elif not branches: ++ branch_name = None ++ else: ++ # Pick the first branch that is returned. Good or bad. ++ branch_name = branches[0] ++ ++ pieces["branch"] = branch_name ++ + # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty] + # TAG might have hyphens. + git_describe = describe_out +@@ -688,7 +867,7 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + # TAG-NUM-gHEX + mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe) + if not mo: +- # unparseable. Maybe git-describe is misbehaving? ++ # unparsable. Maybe git-describe is misbehaving? + pieces["error"] = ("unable to parse git-describe output: '%%s'" + %% describe_out) + return pieces +@@ -713,26 +892,27 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + else: + # HEX: no tags + pieces["closest-tag"] = None +- count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"], +- cwd=root) +- pieces["distance"] = int(count_out) # total number of commits ++ out, rc = runner(GITS, ["rev-list", "HEAD", "--left-right"], cwd=root) ++ pieces["distance"] = len(out.split()) # total number of commits + + # commit date: see ISO-8601 comment in git_versions_from_keywords() +- date = run_command(GITS, ["show", "-s", "--format=%%ci", "HEAD"], +- cwd=root)[0].strip() ++ date = runner(GITS, ["show", "-s", "--format=%%ci", "HEAD"], cwd=root)[0].strip() ++ # Use only the last line. Previous lines may contain GPG signature ++ # information. ++ date = date.splitlines()[-1] + pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1) + + return pieces + + +-def plus_or_dot(pieces): ++def plus_or_dot(pieces: Dict[str, Any]) -> str: + """Return a + if we don't already have one, else return a .""" + if "+" in pieces.get("closest-tag", ""): + return "." + return "+" + + +-def render_pep440(pieces): ++def render_pep440(pieces: Dict[str, Any]) -> str: + """Build up version string, with post-release "local version identifier". + + Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you +@@ -757,23 +937,71 @@ def render_pep440(pieces): + return rendered + + +-def render_pep440_pre(pieces): +- """TAG[.post.devDISTANCE] -- No -dirty. ++def render_pep440_branch(pieces: Dict[str, Any]) -> str: ++ """TAG[[.dev0]+DISTANCE.gHEX[.dirty]] . ++ ++ The ".dev0" means not master branch. Note that .dev0 sorts backwards ++ (a feature branch will appear "older" than the master branch). + + Exceptions: +- 1: no tags. 0.post.devDISTANCE ++ 1: no tags. 0[.dev0]+untagged.DISTANCE.gHEX[.dirty] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] ++ if pieces["distance"] or pieces["dirty"]: ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += plus_or_dot(pieces) ++ rendered += "%%d.g%%s" %% (pieces["distance"], pieces["short"]) ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ else: ++ # exception #1 ++ rendered = "0" ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += "+untagged.%%d.g%%s" %% (pieces["distance"], ++ pieces["short"]) ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ return rendered ++ ++ ++def pep440_split_post(ver: str) -> Tuple[str, Optional[int]]: ++ """Split pep440 version string at the post-release segment. ++ ++ Returns the release segments before the post-release and the ++ post-release version number (or -1 if no post-release segment is present). ++ """ ++ vc = str.split(ver, ".post") ++ return vc[0], int(vc[1] or 0) if len(vc) == 2 else None ++ ++ ++def render_pep440_pre(pieces: Dict[str, Any]) -> str: ++ """TAG[.postN.devDISTANCE] -- No -dirty. ++ ++ Exceptions: ++ 1: no tags. 0.post0.devDISTANCE ++ """ ++ if pieces["closest-tag"]: + if pieces["distance"]: +- rendered += ".post.dev%%d" %% pieces["distance"] ++ # update the post release segment ++ tag_version, post_version = pep440_split_post(pieces["closest-tag"]) ++ rendered = tag_version ++ if post_version is not None: ++ rendered += ".post%%d.dev%%d" %% (post_version + 1, pieces["distance"]) ++ else: ++ rendered += ".post0.dev%%d" %% (pieces["distance"]) ++ else: ++ # no commits, use the tag as the version ++ rendered = pieces["closest-tag"] + else: + # exception #1 +- rendered = "0.post.dev%%d" %% pieces["distance"] ++ rendered = "0.post0.dev%%d" %% pieces["distance"] + return rendered + + +-def render_pep440_post(pieces): ++def render_pep440_post(pieces: Dict[str, Any]) -> str: + """TAG[.postDISTANCE[.dev0]+gHEX] . + + The ".dev0" means dirty. Note that .dev0 sorts backwards +@@ -800,12 +1028,41 @@ def render_pep440_post(pieces): + return rendered + + +-def render_pep440_old(pieces): ++def render_pep440_post_branch(pieces: Dict[str, Any]) -> str: ++ """TAG[.postDISTANCE[.dev0]+gHEX[.dirty]] . ++ ++ The ".dev0" means not master branch. ++ ++ Exceptions: ++ 1: no tags. 0.postDISTANCE[.dev0]+gHEX[.dirty] ++ """ ++ if pieces["closest-tag"]: ++ rendered = pieces["closest-tag"] ++ if pieces["distance"] or pieces["dirty"]: ++ rendered += ".post%%d" %% pieces["distance"] ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += plus_or_dot(pieces) ++ rendered += "g%%s" %% pieces["short"] ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ else: ++ # exception #1 ++ rendered = "0.post%%d" %% pieces["distance"] ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += "+g%%s" %% pieces["short"] ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ return rendered ++ ++ ++def render_pep440_old(pieces: Dict[str, Any]) -> str: + """TAG[.postDISTANCE[.dev0]] . + + The ".dev0" means dirty. + +- Eexceptions: ++ Exceptions: + 1: no tags. 0.postDISTANCE[.dev0] + """ + if pieces["closest-tag"]: +@@ -822,7 +1079,7 @@ def render_pep440_old(pieces): + return rendered + + +-def render_git_describe(pieces): ++def render_git_describe(pieces: Dict[str, Any]) -> str: + """TAG[-DISTANCE-gHEX][-dirty]. + + Like 'git describe --tags --dirty --always'. +@@ -842,7 +1099,7 @@ def render_git_describe(pieces): + return rendered + + +-def render_git_describe_long(pieces): ++def render_git_describe_long(pieces: Dict[str, Any]) -> str: + """TAG-DISTANCE-gHEX[-dirty]. + + Like 'git describe --tags --dirty --always -long'. +@@ -862,7 +1119,7 @@ def render_git_describe_long(pieces): + return rendered + + +-def render(pieces, style): ++def render(pieces: Dict[str, Any], style: str) -> Dict[str, Any]: + """Render the given version pieces into the requested style.""" + if pieces["error"]: + return {"version": "unknown", +@@ -876,10 +1133,14 @@ def render(pieces, style): + + if style == "pep440": + rendered = render_pep440(pieces) ++ elif style == "pep440-branch": ++ rendered = render_pep440_branch(pieces) + elif style == "pep440-pre": + rendered = render_pep440_pre(pieces) + elif style == "pep440-post": + rendered = render_pep440_post(pieces) ++ elif style == "pep440-post-branch": ++ rendered = render_pep440_post_branch(pieces) + elif style == "pep440-old": + rendered = render_pep440_old(pieces) + elif style == "git-describe": +@@ -894,7 +1155,7 @@ def render(pieces, style): + "date": pieces.get("date")} + + +-def get_versions(): ++def get_versions() -> Dict[str, Any]: + """Get version information or return default if unable to do so.""" + # I am in _version.py, which lives at ROOT/VERSIONFILE_SOURCE. If we have + # __file__, we can work backwards from there to the root. Some +@@ -915,7 +1176,7 @@ def get_versions(): + # versionfile_source is the relative path from the top of the source + # tree (where the .git directory might live) to this file. Invert + # this to find the root from __file__. +- for i in cfg.versionfile_source.split('/'): ++ for _ in cfg.versionfile_source.split('/'): + root = os.path.dirname(root) + except NameError: + return {"version": "0+unknown", "full-revisionid": None, +@@ -942,41 +1203,48 @@ def get_versions(): + + + @register_vcs_handler("git", "get_keywords") +-def git_get_keywords(versionfile_abs): ++def git_get_keywords(versionfile_abs: str) -> Dict[str, str]: + """Extract version information from the given file.""" + # the code embedded in _version.py can just fetch the value of these + # keywords. When used from setup.py, we don't want to import _version.py, + # so we do it with a regexp instead. This function is not used from + # _version.py. +- keywords = {} ++ keywords: Dict[str, str] = {} + try: +- f = open(versionfile_abs, "r") +- for line in f.readlines(): +- if line.strip().startswith("git_refnames ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["refnames"] = mo.group(1) +- if line.strip().startswith("git_full ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["full"] = mo.group(1) +- if line.strip().startswith("git_date ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["date"] = mo.group(1) +- f.close() +- except EnvironmentError: ++ with open(versionfile_abs, "r") as fobj: ++ for line in fobj: ++ if line.strip().startswith("git_refnames ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["refnames"] = mo.group(1) ++ if line.strip().startswith("git_full ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["full"] = mo.group(1) ++ if line.strip().startswith("git_date ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["date"] = mo.group(1) ++ except OSError: + pass + return keywords + + + @register_vcs_handler("git", "keywords") +-def git_versions_from_keywords(keywords, tag_prefix, verbose): ++def git_versions_from_keywords( ++ keywords: Dict[str, str], ++ tag_prefix: str, ++ verbose: bool, ++) -> Dict[str, Any]: + """Get version information from git keywords.""" +- if not keywords: +- raise NotThisMethod("no keywords at all, weird") ++ if "refnames" not in keywords: ++ raise NotThisMethod("Short version file found") + date = keywords.get("date") + if date is not None: ++ # Use only the last line. Previous lines may contain GPG signature ++ # information. ++ date = date.splitlines()[-1] ++ + # git-2.2.0 added "%cI", which expands to an ISO-8601 -compliant + # datestamp. However we prefer "%ci" (which expands to an "ISO-8601 + # -like" string, which we must then edit to make compliant), because +@@ -989,11 +1257,11 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + if verbose: + print("keywords are unexpanded, not using") + raise NotThisMethod("unexpanded keywords, not a git-archive tarball") +- refs = set([r.strip() for r in refnames.strip("()").split(",")]) ++ refs = {r.strip() for r in refnames.strip("()").split(",")} + # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of + # just "foo-1.0". If we see a "tag: " prefix, prefer those. + TAG = "tag: " +- tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)]) ++ tags = {r[len(TAG) :] for r in refs if r.startswith(TAG)} + if not tags: + # Either we're using git < 1.8.3, or there really are no tags. We use + # a heuristic: assume all version tags have a digit. The old git %d +@@ -1002,7 +1270,7 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + # between branches and tags. By ignoring refnames without digits, we + # filter out many common branch names like "release" and + # "stabilization", as well as "HEAD" and "master". +- tags = set([r for r in refs if re.search(r'\d', r)]) ++ tags = {r for r in refs if re.search(r"\d", r)} + if verbose: + print("discarding '%s', no digits" % ",".join(refs - tags)) + if verbose: +@@ -1010,23 +1278,37 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + for ref in sorted(tags): + # sorting will prefer e.g. "2.0" over "2.0rc1" + if ref.startswith(tag_prefix): +- r = ref[len(tag_prefix):] ++ r = ref[len(tag_prefix) :] ++ # Filter out refs that exactly match prefix or that don't start ++ # with a number once the prefix is stripped (mostly a concern ++ # when prefix is '') ++ if not re.match(r"\d", r): ++ continue + if verbose: + print("picking %s" % r) +- return {"version": r, +- "full-revisionid": keywords["full"].strip(), +- "dirty": False, "error": None, +- "date": date} ++ return { ++ "version": r, ++ "full-revisionid": keywords["full"].strip(), ++ "dirty": False, ++ "error": None, ++ "date": date, ++ } + # no suitable tags, so version is "0+unknown", but full hex is still there + if verbose: + print("no suitable tags, using unknown + full revision id") +- return {"version": "0+unknown", +- "full-revisionid": keywords["full"].strip(), +- "dirty": False, "error": "no suitable tags", "date": None} ++ return { ++ "version": "0+unknown", ++ "full-revisionid": keywords["full"].strip(), ++ "dirty": False, ++ "error": "no suitable tags", ++ "date": None, ++ } + + + @register_vcs_handler("git", "pieces_from_vcs") +-def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): ++def git_pieces_from_vcs( ++ tag_prefix: str, root: str, verbose: bool, runner: Callable = run_command ++) -> Dict[str, Any]: + """Get version from 'git describe' in the root of the source tree. + + This only gets called if the git-archive 'subst' keywords were *not* +@@ -1037,8 +1319,14 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + if sys.platform == "win32": + GITS = ["git.cmd", "git.exe"] + +- out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root, +- hide_stderr=True) ++ # GIT_DIR can interfere with correct operation of Versioneer. ++ # It may be intended to be passed to the Versioneer-versioned project, ++ # but that should not change where we get our version from. ++ env = os.environ.copy() ++ env.pop("GIT_DIR", None) ++ runner = functools.partial(runner, env=env) ++ ++ _, rc = runner(GITS, ["rev-parse", "--git-dir"], cwd=root, hide_stderr=not verbose) + if rc != 0: + if verbose: + print("Directory %s not under git control" % root) +@@ -1046,24 +1334,65 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + + # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty] + # if there isn't one, this yields HEX[-dirty] (no NUM) +- describe_out, rc = run_command(GITS, ["describe", "--tags", "--dirty", +- "--always", "--long", +- "--match", "%s*" % tag_prefix], +- cwd=root) ++ describe_out, rc = runner( ++ GITS, ++ [ ++ "describe", ++ "--tags", ++ "--dirty", ++ "--always", ++ "--long", ++ "--match", ++ f"{tag_prefix}[[:digit:]]*", ++ ], ++ cwd=root, ++ ) + # --long was added in git-1.5.5 + if describe_out is None: + raise NotThisMethod("'git describe' failed") + describe_out = describe_out.strip() +- full_out, rc = run_command(GITS, ["rev-parse", "HEAD"], cwd=root) ++ full_out, rc = runner(GITS, ["rev-parse", "HEAD"], cwd=root) + if full_out is None: + raise NotThisMethod("'git rev-parse' failed") + full_out = full_out.strip() + +- pieces = {} ++ pieces: Dict[str, Any] = {} + pieces["long"] = full_out + pieces["short"] = full_out[:7] # maybe improved later + pieces["error"] = None + ++ branch_name, rc = runner(GITS, ["rev-parse", "--abbrev-ref", "HEAD"], cwd=root) ++ # --abbrev-ref was added in git-1.6.3 ++ if rc != 0 or branch_name is None: ++ raise NotThisMethod("'git rev-parse --abbrev-ref' returned error") ++ branch_name = branch_name.strip() ++ ++ if branch_name == "HEAD": ++ # If we aren't exactly on a branch, pick a branch which represents ++ # the current commit. If all else fails, we are on a branchless ++ # commit. ++ branches, rc = runner(GITS, ["branch", "--contains"], cwd=root) ++ # --contains was added in git-1.5.4 ++ if rc != 0 or branches is None: ++ raise NotThisMethod("'git branch --contains' returned error") ++ branches = branches.split("\n") ++ ++ # Remove the first line if we're running detached ++ if "(" in branches[0]: ++ branches.pop(0) ++ ++ # Strip off the leading "* " from the list of branches. ++ branches = [branch[2:] for branch in branches] ++ if "master" in branches: ++ branch_name = "master" ++ elif not branches: ++ branch_name = None ++ else: ++ # Pick the first branch that is returned. Good or bad. ++ branch_name = branches[0] ++ ++ pieces["branch"] = branch_name ++ + # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty] + # TAG might have hyphens. + git_describe = describe_out +@@ -1072,17 +1401,16 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + dirty = git_describe.endswith("-dirty") + pieces["dirty"] = dirty + if dirty: +- git_describe = git_describe[:git_describe.rindex("-dirty")] ++ git_describe = git_describe[: git_describe.rindex("-dirty")] + + # now we have TAG-NUM-gHEX or HEX + + if "-" in git_describe: + # TAG-NUM-gHEX +- mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe) ++ mo = re.search(r"^(.+)-(\d+)-g([0-9a-f]+)$", git_describe) + if not mo: +- # unparseable. Maybe git-describe is misbehaving? +- pieces["error"] = ("unable to parse git-describe output: '%s'" +- % describe_out) ++ # unparsable. Maybe git-describe is misbehaving? ++ pieces["error"] = "unable to parse git-describe output: '%s'" % describe_out + return pieces + + # tag +@@ -1091,10 +1419,12 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + if verbose: + fmt = "tag '%s' doesn't start with prefix '%s'" + print(fmt % (full_tag, tag_prefix)) +- pieces["error"] = ("tag '%s' doesn't start with prefix '%s'" +- % (full_tag, tag_prefix)) ++ pieces["error"] = "tag '%s' doesn't start with prefix '%s'" % ( ++ full_tag, ++ tag_prefix, ++ ) + return pieces +- pieces["closest-tag"] = full_tag[len(tag_prefix):] ++ pieces["closest-tag"] = full_tag[len(tag_prefix) :] + + # distance: number of commits since tag + pieces["distance"] = int(mo.group(2)) +@@ -1105,19 +1435,20 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + else: + # HEX: no tags + pieces["closest-tag"] = None +- count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"], +- cwd=root) +- pieces["distance"] = int(count_out) # total number of commits ++ out, rc = runner(GITS, ["rev-list", "HEAD", "--left-right"], cwd=root) ++ pieces["distance"] = len(out.split()) # total number of commits + + # commit date: see ISO-8601 comment in git_versions_from_keywords() +- date = run_command(GITS, ["show", "-s", "--format=%ci", "HEAD"], +- cwd=root)[0].strip() ++ date = runner(GITS, ["show", "-s", "--format=%ci", "HEAD"], cwd=root)[0].strip() ++ # Use only the last line. Previous lines may contain GPG signature ++ # information. ++ date = date.splitlines()[-1] + pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1) + + return pieces + + +-def do_vcs_install(manifest_in, versionfile_source, ipy): ++def do_vcs_install(versionfile_source: str, ipy: Optional[str]) -> None: + """Git-specific installation logic for Versioneer. + + For Git, this means creating/changing .gitattributes to mark _version.py +@@ -1126,36 +1457,40 @@ def do_vcs_install(manifest_in, versionfile_source, ipy): + GITS = ["git"] + if sys.platform == "win32": + GITS = ["git.cmd", "git.exe"] +- files = [manifest_in, versionfile_source] ++ files = [versionfile_source] + if ipy: + files.append(ipy) +- try: +- me = __file__ +- if me.endswith(".pyc") or me.endswith(".pyo"): +- me = os.path.splitext(me)[0] + ".py" +- versioneer_file = os.path.relpath(me) +- except NameError: +- versioneer_file = "versioneer.py" +- files.append(versioneer_file) ++ if "VERSIONEER_PEP518" not in globals(): ++ try: ++ my_path = __file__ ++ if my_path.endswith((".pyc", ".pyo")): ++ my_path = os.path.splitext(my_path)[0] + ".py" ++ versioneer_file = os.path.relpath(my_path) ++ except NameError: ++ versioneer_file = "versioneer.py" ++ files.append(versioneer_file) + present = False + try: +- f = open(".gitattributes", "r") +- for line in f.readlines(): +- if line.strip().startswith(versionfile_source): +- if "export-subst" in line.strip().split()[1:]: +- present = True +- f.close() +- except EnvironmentError: ++ with open(".gitattributes", "r") as fobj: ++ for line in fobj: ++ if line.strip().startswith(versionfile_source): ++ if "export-subst" in line.strip().split()[1:]: ++ present = True ++ break ++ except OSError: + pass + if not present: +- f = open(".gitattributes", "a+") +- f.write("%s export-subst\n" % versionfile_source) +- f.close() ++ with open(".gitattributes", "a+") as fobj: ++ fobj.write(f"{versionfile_source} export-subst\n") + files.append(".gitattributes") + run_command(GITS, ["add", "--"] + files) + + +-def versions_from_parentdir(parentdir_prefix, root, verbose): ++def versions_from_parentdir( ++ parentdir_prefix: str, ++ root: str, ++ verbose: bool, ++) -> Dict[str, Any]: + """Try to determine the version from the parent directory name. + + Source tarballs conventionally unpack into a directory that includes both +@@ -1164,24 +1499,29 @@ def versions_from_parentdir(parentdir_prefix, root, verbose): + """ + rootdirs = [] + +- for i in range(3): ++ for _ in range(3): + dirname = os.path.basename(root) + if dirname.startswith(parentdir_prefix): +- return {"version": dirname[len(parentdir_prefix):], +- "full-revisionid": None, +- "dirty": False, "error": None, "date": None} +- else: +- rootdirs.append(root) +- root = os.path.dirname(root) # up a level ++ return { ++ "version": dirname[len(parentdir_prefix) :], ++ "full-revisionid": None, ++ "dirty": False, ++ "error": None, ++ "date": None, ++ } ++ rootdirs.append(root) ++ root = os.path.dirname(root) # up a level + + if verbose: +- print("Tried directories %s but none started with prefix %s" % +- (str(rootdirs), parentdir_prefix)) ++ print( ++ "Tried directories %s but none started with prefix %s" ++ % (str(rootdirs), parentdir_prefix) ++ ) + raise NotThisMethod("rootdir doesn't start with parentdir_prefix") + + + SHORT_VERSION_PY = """ +-# This file was generated by 'versioneer.py' (0.18) from ++# This file was generated by 'versioneer.py' (0.29) from + # revision-control system data, or from the parent directory name of an + # unpacked source archive. Distribution tarballs contain a pre-generated copy + # of this file. +@@ -1198,42 +1538,42 @@ def get_versions(): + """ + + +-def versions_from_file(filename): ++def versions_from_file(filename: str) -> Dict[str, Any]: + """Try to determine the version from _version.py if present.""" + try: + with open(filename) as f: + contents = f.read() +- except EnvironmentError: ++ except OSError: + raise NotThisMethod("unable to read _version.py") +- mo = re.search(r"version_json = '''\n(.*)''' # END VERSION_JSON", +- contents, re.M | re.S) ++ mo = re.search( ++ r"version_json = '''\n(.*)''' # END VERSION_JSON", contents, re.M | re.S ++ ) + if not mo: +- mo = re.search(r"version_json = '''\r\n(.*)''' # END VERSION_JSON", +- contents, re.M | re.S) ++ mo = re.search( ++ r"version_json = '''\r\n(.*)''' # END VERSION_JSON", contents, re.M | re.S ++ ) + if not mo: + raise NotThisMethod("no version_json in _version.py") + return json.loads(mo.group(1)) + + +-def write_to_version_file(filename, versions): ++def write_to_version_file(filename: str, versions: Dict[str, Any]) -> None: + """Write the given version number to the given _version.py file.""" +- os.unlink(filename) +- contents = json.dumps(versions, sort_keys=True, +- indent=1, separators=(",", ": ")) ++ contents = json.dumps(versions, sort_keys=True, indent=1, separators=(",", ": ")) + with open(filename, "w") as f: + f.write(SHORT_VERSION_PY % contents) + + print("set %s to '%s'" % (filename, versions["version"])) + + +-def plus_or_dot(pieces): ++def plus_or_dot(pieces: Dict[str, Any]) -> str: + """Return a + if we don't already have one, else return a .""" + if "+" in pieces.get("closest-tag", ""): + return "." + return "+" + + +-def render_pep440(pieces): ++def render_pep440(pieces: Dict[str, Any]) -> str: + """Build up version string, with post-release "local version identifier". + + Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you +@@ -1251,30 +1591,76 @@ def render_pep440(pieces): + rendered += ".dirty" + else: + # exception #1 +- rendered = "0+untagged.%d.g%s" % (pieces["distance"], +- pieces["short"]) ++ rendered = "0+untagged.%d.g%s" % (pieces["distance"], pieces["short"]) + if pieces["dirty"]: + rendered += ".dirty" + return rendered + + +-def render_pep440_pre(pieces): +- """TAG[.post.devDISTANCE] -- No -dirty. ++def render_pep440_branch(pieces: Dict[str, Any]) -> str: ++ """TAG[[.dev0]+DISTANCE.gHEX[.dirty]] . ++ ++ The ".dev0" means not master branch. Note that .dev0 sorts backwards ++ (a feature branch will appear "older" than the master branch). + + Exceptions: +- 1: no tags. 0.post.devDISTANCE ++ 1: no tags. 0[.dev0]+untagged.DISTANCE.gHEX[.dirty] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] ++ if pieces["distance"] or pieces["dirty"]: ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += plus_or_dot(pieces) ++ rendered += "%d.g%s" % (pieces["distance"], pieces["short"]) ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ else: ++ # exception #1 ++ rendered = "0" ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += "+untagged.%d.g%s" % (pieces["distance"], pieces["short"]) ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ return rendered ++ ++ ++def pep440_split_post(ver: str) -> Tuple[str, Optional[int]]: ++ """Split pep440 version string at the post-release segment. ++ ++ Returns the release segments before the post-release and the ++ post-release version number (or -1 if no post-release segment is present). ++ """ ++ vc = str.split(ver, ".post") ++ return vc[0], int(vc[1] or 0) if len(vc) == 2 else None ++ ++ ++def render_pep440_pre(pieces: Dict[str, Any]) -> str: ++ """TAG[.postN.devDISTANCE] -- No -dirty. ++ ++ Exceptions: ++ 1: no tags. 0.post0.devDISTANCE ++ """ ++ if pieces["closest-tag"]: + if pieces["distance"]: +- rendered += ".post.dev%d" % pieces["distance"] ++ # update the post release segment ++ tag_version, post_version = pep440_split_post(pieces["closest-tag"]) ++ rendered = tag_version ++ if post_version is not None: ++ rendered += ".post%d.dev%d" % (post_version + 1, pieces["distance"]) ++ else: ++ rendered += ".post0.dev%d" % (pieces["distance"]) ++ else: ++ # no commits, use the tag as the version ++ rendered = pieces["closest-tag"] + else: + # exception #1 +- rendered = "0.post.dev%d" % pieces["distance"] ++ rendered = "0.post0.dev%d" % pieces["distance"] + return rendered + + +-def render_pep440_post(pieces): ++def render_pep440_post(pieces: Dict[str, Any]) -> str: + """TAG[.postDISTANCE[.dev0]+gHEX] . + + The ".dev0" means dirty. Note that .dev0 sorts backwards +@@ -1301,12 +1687,41 @@ def render_pep440_post(pieces): + return rendered + + +-def render_pep440_old(pieces): ++def render_pep440_post_branch(pieces: Dict[str, Any]) -> str: ++ """TAG[.postDISTANCE[.dev0]+gHEX[.dirty]] . ++ ++ The ".dev0" means not master branch. ++ ++ Exceptions: ++ 1: no tags. 0.postDISTANCE[.dev0]+gHEX[.dirty] ++ """ ++ if pieces["closest-tag"]: ++ rendered = pieces["closest-tag"] ++ if pieces["distance"] or pieces["dirty"]: ++ rendered += ".post%d" % pieces["distance"] ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += plus_or_dot(pieces) ++ rendered += "g%s" % pieces["short"] ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ else: ++ # exception #1 ++ rendered = "0.post%d" % pieces["distance"] ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += "+g%s" % pieces["short"] ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ return rendered ++ ++ ++def render_pep440_old(pieces: Dict[str, Any]) -> str: + """TAG[.postDISTANCE[.dev0]] . + + The ".dev0" means dirty. + +- Eexceptions: ++ Exceptions: + 1: no tags. 0.postDISTANCE[.dev0] + """ + if pieces["closest-tag"]: +@@ -1323,7 +1738,7 @@ def render_pep440_old(pieces): + return rendered + + +-def render_git_describe(pieces): ++def render_git_describe(pieces: Dict[str, Any]) -> str: + """TAG[-DISTANCE-gHEX][-dirty]. + + Like 'git describe --tags --dirty --always'. +@@ -1343,7 +1758,7 @@ def render_git_describe(pieces): + return rendered + + +-def render_git_describe_long(pieces): ++def render_git_describe_long(pieces: Dict[str, Any]) -> str: + """TAG-DISTANCE-gHEX[-dirty]. + + Like 'git describe --tags --dirty --always -long'. +@@ -1363,24 +1778,30 @@ def render_git_describe_long(pieces): + return rendered + + +-def render(pieces, style): ++def render(pieces: Dict[str, Any], style: str) -> Dict[str, Any]: + """Render the given version pieces into the requested style.""" + if pieces["error"]: +- return {"version": "unknown", +- "full-revisionid": pieces.get("long"), +- "dirty": None, +- "error": pieces["error"], +- "date": None} ++ return { ++ "version": "unknown", ++ "full-revisionid": pieces.get("long"), ++ "dirty": None, ++ "error": pieces["error"], ++ "date": None, ++ } + + if not style or style == "default": + style = "pep440" # the default + + if style == "pep440": + rendered = render_pep440(pieces) ++ elif style == "pep440-branch": ++ rendered = render_pep440_branch(pieces) + elif style == "pep440-pre": + rendered = render_pep440_pre(pieces) + elif style == "pep440-post": + rendered = render_pep440_post(pieces) ++ elif style == "pep440-post-branch": ++ rendered = render_pep440_post_branch(pieces) + elif style == "pep440-old": + rendered = render_pep440_old(pieces) + elif style == "git-describe": +@@ -1390,16 +1811,20 @@ def render(pieces, style): + else: + raise ValueError("unknown style '%s'" % style) + +- return {"version": rendered, "full-revisionid": pieces["long"], +- "dirty": pieces["dirty"], "error": None, +- "date": pieces.get("date")} ++ return { ++ "version": rendered, ++ "full-revisionid": pieces["long"], ++ "dirty": pieces["dirty"], ++ "error": None, ++ "date": pieces.get("date"), ++ } + + + class VersioneerBadRootError(Exception): + """The project root directory is unknown or missing key files.""" + + +-def get_versions(verbose=False): ++def get_versions(verbose: bool = False) -> Dict[str, Any]: + """Get the project version from whatever source is available. + + Returns dict with two keys: 'version' and 'full'. +@@ -1414,9 +1839,10 @@ def get_versions(verbose=False): + assert cfg.VCS is not None, "please set [versioneer]VCS= in setup.cfg" + handlers = HANDLERS.get(cfg.VCS) + assert handlers, "unrecognized VCS '%s'" % cfg.VCS +- verbose = verbose or cfg.verbose +- assert cfg.versionfile_source is not None, \ +- "please set versioneer.versionfile_source" ++ verbose = verbose or bool(cfg.verbose) # `bool()` used to avoid `None` ++ assert ( ++ cfg.versionfile_source is not None ++ ), "please set versioneer.versionfile_source" + assert cfg.tag_prefix is not None, "please set versioneer.tag_prefix" + + versionfile_abs = os.path.join(root, cfg.versionfile_source) +@@ -1470,18 +1896,26 @@ def get_versions(verbose=False): + if verbose: + print("unable to compute version") + +- return {"version": "0+unknown", "full-revisionid": None, +- "dirty": None, "error": "unable to compute version", +- "date": None} ++ return { ++ "version": "0+unknown", ++ "full-revisionid": None, ++ "dirty": None, ++ "error": "unable to compute version", ++ "date": None, ++ } + + +-def get_version(): ++def get_version() -> str: + """Get the short version string for this project.""" + return get_versions()["version"] + + +-def get_cmdclass(): +- """Get the custom setuptools/distutils subclasses used by Versioneer.""" ++def get_cmdclass(cmdclass: Optional[Dict[str, Any]] = None): ++ """Get the custom setuptools subclasses used by Versioneer. ++ ++ If the package uses a different cmdclass (e.g. one from numpy), it ++ should be provide as an argument. ++ """ + if "versioneer" in sys.modules: + del sys.modules["versioneer"] + # this fixes the "python setup.py develop" case (also 'install' and +@@ -1495,25 +1929,25 @@ def get_cmdclass(): + # parent is protected against the child's "import versioneer". By + # removing ourselves from sys.modules here, before the child build + # happens, we protect the child from the parent's versioneer too. +- # Also see https://github.com/warner/python-versioneer/issues/52 ++ # Also see https://github.com/python-versioneer/python-versioneer/issues/52 + +- cmds = {} ++ cmds = {} if cmdclass is None else cmdclass.copy() + +- # we add "version" to both distutils and setuptools +- from distutils.core import Command ++ # we add "version" to setuptools ++ from setuptools import Command + + class cmd_version(Command): + description = "report generated version string" +- user_options = [] +- boolean_options = [] ++ user_options: List[Tuple[str, str, str]] = [] ++ boolean_options: List[str] = [] + +- def initialize_options(self): ++ def initialize_options(self) -> None: + pass + +- def finalize_options(self): ++ def finalize_options(self) -> None: + pass + +- def run(self): ++ def run(self) -> None: + vers = get_versions(verbose=True) + print("Version: %s" % vers["version"]) + print(" full-revisionid: %s" % vers.get("full-revisionid")) +@@ -1521,9 +1955,10 @@ def get_cmdclass(): + print(" date: %s" % vers.get("date")) + if vers["error"]: + print(" error: %s" % vers["error"]) ++ + cmds["version"] = cmd_version + +- # we override "build_py" in both distutils and setuptools ++ # we override "build_py" in setuptools + # + # most invocation pathways end up running build_py: + # distutils/build -> build_py +@@ -1538,29 +1973,71 @@ def get_cmdclass(): + # then does setup.py bdist_wheel, or sometimes setup.py install + # setup.py egg_info -> ? + ++ # pip install -e . and setuptool/editable_wheel will invoke build_py ++ # but the build_py command is not expected to copy any files. ++ + # we override different "build_py" commands for both environments +- if "setuptools" in sys.modules: +- from setuptools.command.build_py import build_py as _build_py ++ if "build_py" in cmds: ++ _build_py: Any = cmds["build_py"] + else: +- from distutils.command.build_py import build_py as _build_py ++ from setuptools.command.build_py import build_py as _build_py + + class cmd_build_py(_build_py): +- def run(self): ++ def run(self) -> None: + root = get_root() + cfg = get_config_from_root(root) + versions = get_versions() + _build_py.run(self) ++ if getattr(self, "editable_mode", False): ++ # During editable installs `.py` and data files are ++ # not copied to build_lib ++ return + # now locate _version.py in the new build/ directory and replace + # it with an updated value + if cfg.versionfile_build: +- target_versionfile = os.path.join(self.build_lib, +- cfg.versionfile_build) ++ target_versionfile = os.path.join(self.build_lib, cfg.versionfile_build) + print("UPDATING %s" % target_versionfile) + write_to_version_file(target_versionfile, versions) ++ + cmds["build_py"] = cmd_build_py + ++ if "build_ext" in cmds: ++ _build_ext: Any = cmds["build_ext"] ++ else: ++ from setuptools.command.build_ext import build_ext as _build_ext ++ ++ class cmd_build_ext(_build_ext): ++ def run(self) -> None: ++ root = get_root() ++ cfg = get_config_from_root(root) ++ versions = get_versions() ++ _build_ext.run(self) ++ if self.inplace: ++ # build_ext --inplace will only build extensions in ++ # build/lib<..> dir with no _version.py to write to. ++ # As in place builds will already have a _version.py ++ # in the module dir, we do not need to write one. ++ return ++ # now locate _version.py in the new build/ directory and replace ++ # it with an updated value ++ if not cfg.versionfile_build: ++ return ++ target_versionfile = os.path.join(self.build_lib, cfg.versionfile_build) ++ if not os.path.exists(target_versionfile): ++ print( ++ f"Warning: {target_versionfile} does not exist, skipping " ++ "version update. This can happen if you are running build_ext " ++ "without first running build_py." ++ ) ++ return ++ print("UPDATING %s" % target_versionfile) ++ write_to_version_file(target_versionfile, versions) ++ ++ cmds["build_ext"] = cmd_build_ext ++ + if "cx_Freeze" in sys.modules: # cx_freeze enabled? +- from cx_Freeze.dist import build_exe as _build_exe ++ from cx_Freeze.dist import build_exe as _build_exe # type: ignore ++ + # nczeczulin reports that py2exe won't like the pep440-style string + # as FILEVERSION, but it can be used for PRODUCTVERSION, e.g. + # setup(console=[{ +@@ -1569,7 +2046,7 @@ def get_cmdclass(): + # ... + + class cmd_build_exe(_build_exe): +- def run(self): ++ def run(self) -> None: + root = get_root() + cfg = get_config_from_root(root) + versions = get_versions() +@@ -1581,24 +2058,28 @@ def get_cmdclass(): + os.unlink(target_versionfile) + with open(cfg.versionfile_source, "w") as f: + LONG = LONG_VERSION_PY[cfg.VCS] +- f.write(LONG % +- {"DOLLAR": "$", +- "STYLE": cfg.style, +- "TAG_PREFIX": cfg.tag_prefix, +- "PARENTDIR_PREFIX": cfg.parentdir_prefix, +- "VERSIONFILE_SOURCE": cfg.versionfile_source, +- }) ++ f.write( ++ LONG ++ % { ++ "DOLLAR": "$", ++ "STYLE": cfg.style, ++ "TAG_PREFIX": cfg.tag_prefix, ++ "PARENTDIR_PREFIX": cfg.parentdir_prefix, ++ "VERSIONFILE_SOURCE": cfg.versionfile_source, ++ } ++ ) ++ + cmds["build_exe"] = cmd_build_exe + del cmds["build_py"] + +- if 'py2exe' in sys.modules: # py2exe enabled? ++ if "py2exe" in sys.modules: # py2exe enabled? + try: +- from py2exe.distutils_buildexe import py2exe as _py2exe # py3 ++ from py2exe.setuptools_buildexe import py2exe as _py2exe # type: ignore + except ImportError: +- from py2exe.build_exe import py2exe as _py2exe # py2 ++ from py2exe.distutils_buildexe import py2exe as _py2exe # type: ignore + + class cmd_py2exe(_py2exe): +- def run(self): ++ def run(self) -> None: + root = get_root() + cfg = get_config_from_root(root) + versions = get_versions() +@@ -1610,23 +2091,67 @@ def get_cmdclass(): + os.unlink(target_versionfile) + with open(cfg.versionfile_source, "w") as f: + LONG = LONG_VERSION_PY[cfg.VCS] +- f.write(LONG % +- {"DOLLAR": "$", +- "STYLE": cfg.style, +- "TAG_PREFIX": cfg.tag_prefix, +- "PARENTDIR_PREFIX": cfg.parentdir_prefix, +- "VERSIONFILE_SOURCE": cfg.versionfile_source, +- }) ++ f.write( ++ LONG ++ % { ++ "DOLLAR": "$", ++ "STYLE": cfg.style, ++ "TAG_PREFIX": cfg.tag_prefix, ++ "PARENTDIR_PREFIX": cfg.parentdir_prefix, ++ "VERSIONFILE_SOURCE": cfg.versionfile_source, ++ } ++ ) ++ + cmds["py2exe"] = cmd_py2exe + ++ # sdist farms its file list building out to egg_info ++ if "egg_info" in cmds: ++ _egg_info: Any = cmds["egg_info"] ++ else: ++ from setuptools.command.egg_info import egg_info as _egg_info ++ ++ class cmd_egg_info(_egg_info): ++ def find_sources(self) -> None: ++ # egg_info.find_sources builds the manifest list and writes it ++ # in one shot ++ super().find_sources() ++ ++ # Modify the filelist and normalize it ++ root = get_root() ++ cfg = get_config_from_root(root) ++ self.filelist.append("versioneer.py") ++ if cfg.versionfile_source: ++ # There are rare cases where versionfile_source might not be ++ # included by default, so we must be explicit ++ self.filelist.append(cfg.versionfile_source) ++ self.filelist.sort() ++ self.filelist.remove_duplicates() ++ ++ # The write method is hidden in the manifest_maker instance that ++ # generated the filelist and was thrown away ++ # We will instead replicate their final normalization (to unicode, ++ # and POSIX-style paths) ++ from setuptools import unicode_utils ++ ++ normalized = [ ++ unicode_utils.filesys_decode(f).replace(os.sep, "/") ++ for f in self.filelist.files ++ ] ++ ++ manifest_filename = os.path.join(self.egg_info, "SOURCES.txt") ++ with open(manifest_filename, "w") as fobj: ++ fobj.write("\n".join(normalized)) ++ ++ cmds["egg_info"] = cmd_egg_info ++ + # we override different "sdist" commands for both environments +- if "setuptools" in sys.modules: +- from setuptools.command.sdist import sdist as _sdist ++ if "sdist" in cmds: ++ _sdist: Any = cmds["sdist"] + else: +- from distutils.command.sdist import sdist as _sdist ++ from setuptools.command.sdist import sdist as _sdist + + class cmd_sdist(_sdist): +- def run(self): ++ def run(self) -> None: + versions = get_versions() + self._versioneer_generated_versions = versions + # unless we update this, the command will keep using the old +@@ -1634,7 +2159,7 @@ def get_cmdclass(): + self.distribution.metadata.version = versions["version"] + return _sdist.run(self) + +- def make_release_tree(self, base_dir, files): ++ def make_release_tree(self, base_dir: str, files: List[str]) -> None: + root = get_root() + cfg = get_config_from_root(root) + _sdist.make_release_tree(self, base_dir, files) +@@ -1643,8 +2168,10 @@ def get_cmdclass(): + # updated value + target_versionfile = os.path.join(base_dir, cfg.versionfile_source) + print("UPDATING %s" % target_versionfile) +- write_to_version_file(target_versionfile, +- self._versioneer_generated_versions) ++ write_to_version_file( ++ target_versionfile, self._versioneer_generated_versions ++ ) ++ + cmds["sdist"] = cmd_sdist + + return cmds +@@ -1687,23 +2214,26 @@ SAMPLE_CONFIG = """ + + """ + +-INIT_PY_SNIPPET = """ ++OLD_SNIPPET = """ + from ._version import get_versions + __version__ = get_versions()['version'] + del get_versions + """ + ++INIT_PY_SNIPPET = """ ++from . import {0} ++__version__ = {0}.get_versions()['version'] ++""" ++ + +-def do_setup(): +- """Main VCS-independent setup function for installing Versioneer.""" ++def do_setup() -> int: ++ """Do main VCS-independent setup function for installing Versioneer.""" + root = get_root() + try: + cfg = get_config_from_root(root) +- except (EnvironmentError, configparser.NoSectionError, +- configparser.NoOptionError) as e: +- if isinstance(e, (EnvironmentError, configparser.NoSectionError)): +- print("Adding sample versioneer config to setup.cfg", +- file=sys.stderr) ++ except (OSError, configparser.NoSectionError, configparser.NoOptionError) as e: ++ if isinstance(e, (OSError, configparser.NoSectionError)): ++ print("Adding sample versioneer config to setup.cfg", file=sys.stderr) + with open(os.path.join(root, "setup.cfg"), "a") as f: + f.write(SAMPLE_CONFIG) + print(CONFIG_ERROR, file=sys.stderr) +@@ -1712,71 +2242,49 @@ def do_setup(): + print(" creating %s" % cfg.versionfile_source) + with open(cfg.versionfile_source, "w") as f: + LONG = LONG_VERSION_PY[cfg.VCS] +- f.write(LONG % {"DOLLAR": "$", +- "STYLE": cfg.style, +- "TAG_PREFIX": cfg.tag_prefix, +- "PARENTDIR_PREFIX": cfg.parentdir_prefix, +- "VERSIONFILE_SOURCE": cfg.versionfile_source, +- }) +- +- ipy = os.path.join(os.path.dirname(cfg.versionfile_source), +- "__init__.py") ++ f.write( ++ LONG ++ % { ++ "DOLLAR": "$", ++ "STYLE": cfg.style, ++ "TAG_PREFIX": cfg.tag_prefix, ++ "PARENTDIR_PREFIX": cfg.parentdir_prefix, ++ "VERSIONFILE_SOURCE": cfg.versionfile_source, ++ } ++ ) ++ ++ ipy = os.path.join(os.path.dirname(cfg.versionfile_source), "__init__.py") ++ maybe_ipy: Optional[str] = ipy + if os.path.exists(ipy): + try: + with open(ipy, "r") as f: + old = f.read() +- except EnvironmentError: ++ except OSError: + old = "" +- if INIT_PY_SNIPPET not in old: ++ module = os.path.splitext(os.path.basename(cfg.versionfile_source))[0] ++ snippet = INIT_PY_SNIPPET.format(module) ++ if OLD_SNIPPET in old: ++ print(" replacing boilerplate in %s" % ipy) ++ with open(ipy, "w") as f: ++ f.write(old.replace(OLD_SNIPPET, snippet)) ++ elif snippet not in old: + print(" appending to %s" % ipy) + with open(ipy, "a") as f: +- f.write(INIT_PY_SNIPPET) ++ f.write(snippet) + else: + print(" %s unmodified" % ipy) + else: + print(" %s doesn't exist, ok" % ipy) +- ipy = None +- +- # Make sure both the top-level "versioneer.py" and versionfile_source +- # (PKG/_version.py, used by runtime code) are in MANIFEST.in, so +- # they'll be copied into source distributions. Pip won't be able to +- # install the package without this. +- manifest_in = os.path.join(root, "MANIFEST.in") +- simple_includes = set() +- try: +- with open(manifest_in, "r") as f: +- for line in f: +- if line.startswith("include "): +- for include in line.split()[1:]: +- simple_includes.add(include) +- except EnvironmentError: +- pass +- # That doesn't cover everything MANIFEST.in can do +- # (http://docs.python.org/2/distutils/sourcedist.html#commands), so +- # it might give some false negatives. Appending redundant 'include' +- # lines is safe, though. +- if "versioneer.py" not in simple_includes: +- print(" appending 'versioneer.py' to MANIFEST.in") +- with open(manifest_in, "a") as f: +- f.write("include versioneer.py\n") +- else: +- print(" 'versioneer.py' already in MANIFEST.in") +- if cfg.versionfile_source not in simple_includes: +- print(" appending versionfile_source ('%s') to MANIFEST.in" % +- cfg.versionfile_source) +- with open(manifest_in, "a") as f: +- f.write("include %s\n" % cfg.versionfile_source) +- else: +- print(" versionfile_source already in MANIFEST.in") ++ maybe_ipy = None + + # Make VCS-specific changes. For git, this means creating/changing + # .gitattributes to mark _version.py for export-subst keyword + # substitution. +- do_vcs_install(manifest_in, cfg.versionfile_source, ipy) ++ do_vcs_install(cfg.versionfile_source, maybe_ipy) + return 0 + + +-def scan_setup_py(): ++def scan_setup_py() -> int: + """Validate the contents of setup.py against Versioneer's expectations.""" + found = set() + setters = False +@@ -1813,10 +2321,14 @@ def scan_setup_py(): + return errors + + ++def setup_command() -> NoReturn: ++ """Set up Versioneer and exit with appropriate error code.""" ++ errors = do_setup() ++ errors += scan_setup_py() ++ sys.exit(1 if errors else 0) ++ ++ + if __name__ == "__main__": + cmd = sys.argv[1] + if cmd == "setup": +- errors = do_setup() +- errors += scan_setup_py() +- if errors: +- sys.exit(1) ++ setup_command() +-- +2.41.0 + diff --git a/package/python-magic-wormhole-mailbox-server/Config.in b/package/python-magic-wormhole-mailbox-server/Config.in new file mode 100644 index 00000000..a0721e86 --- /dev/null +++ b/package/python-magic-wormhole-mailbox-server/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_PYTHON_MAGIC_WORMHOLE_MAILBOX_SERVER + bool "python-magic-wormhole-mailbox-server" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-autobahn -> python-cryptography + select BR2_PACKAGE_PYTHON3_SQLITE # runtime + select BR2_PACKAGE_PYTHON_ATTRS # runtime + select BR2_PACKAGE_PYTHON_AUTOBAHN # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_TWISTED # runtime + help + This package is the main server that Magic-Wormhole clients + connect to. The server performs store-and-forward delivery + for small key-exchange and control messages. Bulk data is + sent over a direct TCP connection, or through a + transit-relay. + + https://github.com/magic-wormhole/magic-wormhole-mailbox-server diff --git a/package/python-magic-wormhole-mailbox-server/python-magic-wormhole-mailbox-server.hash b/package/python-magic-wormhole-mailbox-server/python-magic-wormhole-mailbox-server.hash new file mode 100644 index 00000000..c7147126 --- /dev/null +++ b/package/python-magic-wormhole-mailbox-server/python-magic-wormhole-mailbox-server.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/magic-wormhole-mailbox-server/json +md5 3da441df1f354a8399a728da3421ac8f magic-wormhole-mailbox-server-0.4.1.tar.gz +sha256 1af10592909caaf519c00e706eac842c5e77f8d4356215fe9c61c7b2258a88fb magic-wormhole-mailbox-server-0.4.1.tar.gz +# Locally computed sha256 checksums +sha256 4a9cc2415c52cef591b6822eee68fed36d7e6d80284b09638cff61d762d99060 LICENSE diff --git a/package/python-magic-wormhole-mailbox-server/python-magic-wormhole-mailbox-server.mk b/package/python-magic-wormhole-mailbox-server/python-magic-wormhole-mailbox-server.mk new file mode 100644 index 00000000..a3394c7d --- /dev/null +++ b/package/python-magic-wormhole-mailbox-server/python-magic-wormhole-mailbox-server.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-magic-wormhole-mailbox-server +# +################################################################################ + +PYTHON_MAGIC_WORMHOLE_MAILBOX_SERVER_VERSION = 0.4.1 +PYTHON_MAGIC_WORMHOLE_MAILBOX_SERVER_SOURCE = magic-wormhole-mailbox-server-$(PYTHON_MAGIC_WORMHOLE_MAILBOX_SERVER_VERSION).tar.gz +PYTHON_MAGIC_WORMHOLE_MAILBOX_SERVER_SITE = https://files.pythonhosted.org/packages/5b/ba/cbb211bc8f8bfdf7fb620d33331f07bcd889c7a28e7fd8a0de9029bb5a2f +PYTHON_MAGIC_WORMHOLE_MAILBOX_SERVER_SETUP_TYPE = setuptools +PYTHON_MAGIC_WORMHOLE_MAILBOX_SERVER_LICENSE = MIT +PYTHON_MAGIC_WORMHOLE_MAILBOX_SERVER_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-magic-wormhole-transit-relay/0001-Update-versioneer-to-0.29.patch b/package/python-magic-wormhole-transit-relay/0001-Update-versioneer-to-0.29.patch new file mode 100644 index 00000000..51cecd13 --- /dev/null +++ b/package/python-magic-wormhole-transit-relay/0001-Update-versioneer-to-0.29.patch @@ -0,0 +1,2194 @@ +From f00f54ecbd9bea970795da4f1f6091828a011bcd Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Tue, 24 Oct 2023 09:52:45 +0200 +Subject: [PATCH] Update versioneer to 0.29 + +Fixes builds against Python 3.12.0 + +Upstream: https://github.com/magic-wormhole/magic-wormhole-transit-relay/pull/34 + +Signed-off-by: Adam Duskett +--- + versioneer.py | 1350 ++++++++++++++++++++++++++++++++++--------------- + 1 file changed, 931 insertions(+), 419 deletions(-) + +diff --git a/versioneer.py b/versioneer.py +index 64fea1c..de97d90 100644 +--- a/versioneer.py ++++ b/versioneer.py +@@ -1,5 +1,4 @@ +- +-# Version: 0.18 ++# Version: 0.29 + + """The Versioneer - like a rocketeer, but for versions. + +@@ -7,18 +6,14 @@ The Versioneer + ============== + + * like a rocketeer, but for versions! +-* https://github.com/warner/python-versioneer ++* https://github.com/python-versioneer/python-versioneer + * Brian Warner +-* License: Public Domain +-* Compatible With: python2.6, 2.7, 3.2, 3.3, 3.4, 3.5, 3.6, and pypy +-* [![Latest Version] +-(https://pypip.in/version/versioneer/badge.svg?style=flat) +-](https://pypi.python.org/pypi/versioneer/) +-* [![Build Status] +-(https://travis-ci.org/warner/python-versioneer.png?branch=master) +-](https://travis-ci.org/warner/python-versioneer) +- +-This is a tool for managing a recorded version number in distutils-based ++* License: Public Domain (Unlicense) ++* Compatible with: Python 3.7, 3.8, 3.9, 3.10, 3.11 and pypy3 ++* [![Latest Version][pypi-image]][pypi-url] ++* [![Build Status][travis-image]][travis-url] ++ ++This is a tool for managing a recorded version number in setuptools-based + python projects. The goal is to remove the tedious and error-prone "update + the embedded version string" step from your release process. Making a new + release should be as easy as recording a new tag in your version-control +@@ -27,9 +22,38 @@ system, and maybe making new tarballs. + + ## Quick Install + +-* `pip install versioneer` to somewhere to your $PATH +-* add a `[versioneer]` section to your setup.cfg (see below) +-* run `versioneer install` in your source tree, commit the results ++Versioneer provides two installation modes. The "classic" vendored mode installs ++a copy of versioneer into your repository. The experimental build-time dependency mode ++is intended to allow you to skip this step and simplify the process of upgrading. ++ ++### Vendored mode ++ ++* `pip install versioneer` to somewhere in your $PATH ++ * A [conda-forge recipe](https://github.com/conda-forge/versioneer-feedstock) is ++ available, so you can also use `conda install -c conda-forge versioneer` ++* add a `[tool.versioneer]` section to your `pyproject.toml` or a ++ `[versioneer]` section to your `setup.cfg` (see [Install](INSTALL.md)) ++ * Note that you will need to add `tomli; python_version < "3.11"` to your ++ build-time dependencies if you use `pyproject.toml` ++* run `versioneer install --vendor` in your source tree, commit the results ++* verify version information with `python setup.py version` ++ ++### Build-time dependency mode ++ ++* `pip install versioneer` to somewhere in your $PATH ++ * A [conda-forge recipe](https://github.com/conda-forge/versioneer-feedstock) is ++ available, so you can also use `conda install -c conda-forge versioneer` ++* add a `[tool.versioneer]` section to your `pyproject.toml` or a ++ `[versioneer]` section to your `setup.cfg` (see [Install](INSTALL.md)) ++* add `versioneer` (with `[toml]` extra, if configuring in `pyproject.toml`) ++ to the `requires` key of the `build-system` table in `pyproject.toml`: ++ ```toml ++ [build-system] ++ requires = ["setuptools", "versioneer[toml]"] ++ build-backend = "setuptools.build_meta" ++ ``` ++* run `versioneer install --no-vendor` in your source tree, commit the results ++* verify version information with `python setup.py version` + + ## Version Identifiers + +@@ -61,7 +85,7 @@ version 1.3). Many VCS systems can report a description that captures this, + for example `git describe --tags --dirty --always` reports things like + "0.7-1-g574ab98-dirty" to indicate that the checkout is one revision past the + 0.7 tag, has a unique revision id of "574ab98", and is "dirty" (it has +-uncommitted changes. ++uncommitted changes). + + The version identifier is used for multiple purposes: + +@@ -166,7 +190,7 @@ which may help identify what went wrong). + + Some situations are known to cause problems for Versioneer. This details the + most significant ones. More can be found on Github +-[issues page](https://github.com/warner/python-versioneer/issues). ++[issues page](https://github.com/python-versioneer/python-versioneer/issues). + + ### Subprojects + +@@ -180,7 +204,7 @@ two common reasons why `setup.py` might not be in the root: + `setup.cfg`, and `tox.ini`. Projects like these produce multiple PyPI + distributions (and upload multiple independently-installable tarballs). + * Source trees whose main purpose is to contain a C library, but which also +- provide bindings to Python (and perhaps other langauges) in subdirectories. ++ provide bindings to Python (and perhaps other languages) in subdirectories. + + Versioneer will look for `.git` in parent directories, and most operations + should get the right version string. However `pip` and `setuptools` have bugs +@@ -194,9 +218,9 @@ work too. + Pip-8.1.1 is known to have this problem, but hopefully it will get fixed in + some later version. + +-[Bug #38](https://github.com/warner/python-versioneer/issues/38) is tracking ++[Bug #38](https://github.com/python-versioneer/python-versioneer/issues/38) is tracking + this issue. The discussion in +-[PR #61](https://github.com/warner/python-versioneer/pull/61) describes the ++[PR #61](https://github.com/python-versioneer/python-versioneer/pull/61) describes the + issue from the Versioneer side in more detail. + [pip PR#3176](https://github.com/pypa/pip/pull/3176) and + [pip PR#3615](https://github.com/pypa/pip/pull/3615) contain work to improve +@@ -224,31 +248,20 @@ regenerated while a different version is checked out. Many setup.py commands + cause egg_info to be rebuilt (including `sdist`, `wheel`, and installing into + a different virtualenv), so this can be surprising. + +-[Bug #83](https://github.com/warner/python-versioneer/issues/83) describes ++[Bug #83](https://github.com/python-versioneer/python-versioneer/issues/83) describes + this one, but upgrading to a newer version of setuptools should probably + resolve it. + +-### Unicode version strings +- +-While Versioneer works (and is continually tested) with both Python 2 and +-Python 3, it is not entirely consistent with bytes-vs-unicode distinctions. +-Newer releases probably generate unicode version strings on py2. It's not +-clear that this is wrong, but it may be surprising for applications when then +-write these strings to a network connection or include them in bytes-oriented +-APIs like cryptographic checksums. +- +-[Bug #71](https://github.com/warner/python-versioneer/issues/71) investigates +-this question. +- + + ## Updating Versioneer + + To upgrade your project to a new release of Versioneer, do the following: + + * install the new Versioneer (`pip install -U versioneer` or equivalent) +-* edit `setup.cfg`, if necessary, to include any new configuration settings +- indicated by the release notes. See [UPGRADING](./UPGRADING.md) for details. +-* re-run `versioneer install` in your source tree, to replace ++* edit `setup.cfg` and `pyproject.toml`, if necessary, ++ to include any new configuration settings indicated by the release notes. ++ See [UPGRADING](./UPGRADING.md) for details. ++* re-run `versioneer install --[no-]vendor` in your source tree, to replace + `SRC/_version.py` + * commit any changed files + +@@ -265,35 +278,70 @@ installation by editing setup.py . Alternatively, it might go the other + direction and include code from all supported VCS systems, reducing the + number of intermediate scripts. + ++## Similar projects ++ ++* [setuptools_scm](https://github.com/pypa/setuptools_scm/) - a non-vendored build-time ++ dependency ++* [minver](https://github.com/jbweston/miniver) - a lightweight reimplementation of ++ versioneer ++* [versioningit](https://github.com/jwodder/versioningit) - a PEP 518-based setuptools ++ plugin + + ## License + + To make Versioneer easier to embed, all its code is dedicated to the public + domain. The `_version.py` that it creates is also in the public domain. +-Specifically, both are released under the Creative Commons "Public Domain +-Dedication" license (CC0-1.0), as described in +-https://creativecommons.org/publicdomain/zero/1.0/ . ++Specifically, both are released under the "Unlicense", as described in ++https://unlicense.org/. ++ ++[pypi-image]: https://img.shields.io/pypi/v/versioneer.svg ++[pypi-url]: https://pypi.python.org/pypi/versioneer/ ++[travis-image]: ++https://img.shields.io/travis/com/python-versioneer/python-versioneer.svg ++[travis-url]: https://travis-ci.com/github/python-versioneer/python-versioneer + + """ ++# pylint:disable=invalid-name,import-outside-toplevel,missing-function-docstring ++# pylint:disable=missing-class-docstring,too-many-branches,too-many-statements ++# pylint:disable=raise-missing-from,too-many-lines,too-many-locals,import-error ++# pylint:disable=too-few-public-methods,redefined-outer-name,consider-using-with ++# pylint:disable=attribute-defined-outside-init,too-many-arguments + +-from __future__ import print_function +-try: +- import configparser +-except ImportError: +- import ConfigParser as configparser ++import configparser + import errno + import json + import os + import re + import subprocess + import sys ++from pathlib import Path ++from typing import Any, Callable, cast, Dict, List, Optional, Tuple, Union ++from typing import NoReturn ++import functools ++ ++have_tomllib = True ++if sys.version_info >= (3, 11): ++ import tomllib ++else: ++ try: ++ import tomli as tomllib ++ except ImportError: ++ have_tomllib = False + + + class VersioneerConfig: + """Container for Versioneer configuration parameters.""" + ++ VCS: str ++ style: str ++ tag_prefix: str ++ versionfile_source: str ++ versionfile_build: Optional[str] ++ parentdir_prefix: Optional[str] ++ verbose: Optional[bool] ++ + +-def get_root(): ++def get_root() -> str: + """Get the project root directory. + + We require that all commands are run from the project root, i.e. the +@@ -301,18 +349,30 @@ def get_root(): + """ + root = os.path.realpath(os.path.abspath(os.getcwd())) + setup_py = os.path.join(root, "setup.py") ++ pyproject_toml = os.path.join(root, "pyproject.toml") + versioneer_py = os.path.join(root, "versioneer.py") +- if not (os.path.exists(setup_py) or os.path.exists(versioneer_py)): ++ if not ( ++ os.path.exists(setup_py) ++ or os.path.exists(pyproject_toml) ++ or os.path.exists(versioneer_py) ++ ): + # allow 'python path/to/setup.py COMMAND' + root = os.path.dirname(os.path.realpath(os.path.abspath(sys.argv[0]))) + setup_py = os.path.join(root, "setup.py") ++ pyproject_toml = os.path.join(root, "pyproject.toml") + versioneer_py = os.path.join(root, "versioneer.py") +- if not (os.path.exists(setup_py) or os.path.exists(versioneer_py)): +- err = ("Versioneer was unable to run the project root directory. " +- "Versioneer requires setup.py to be executed from " +- "its immediate directory (like 'python setup.py COMMAND'), " +- "or in a way that lets it use sys.argv[0] to find the root " +- "(like 'python path/to/setup.py COMMAND').") ++ if not ( ++ os.path.exists(setup_py) ++ or os.path.exists(pyproject_toml) ++ or os.path.exists(versioneer_py) ++ ): ++ err = ( ++ "Versioneer was unable to run the project root directory. " ++ "Versioneer requires setup.py to be executed from " ++ "its immediate directory (like 'python setup.py COMMAND'), " ++ "or in a way that lets it use sys.argv[0] to find the root " ++ "(like 'python path/to/setup.py COMMAND')." ++ ) + raise VersioneerBadRootError(err) + try: + # Certain runtime workflows (setup.py install/develop in a setuptools +@@ -321,43 +381,64 @@ def get_root(): + # module-import table will cache the first one. So we can't use + # os.path.dirname(__file__), as that will find whichever + # versioneer.py was first imported, even in later projects. +- me = os.path.realpath(os.path.abspath(__file__)) +- me_dir = os.path.normcase(os.path.splitext(me)[0]) ++ my_path = os.path.realpath(os.path.abspath(__file__)) ++ me_dir = os.path.normcase(os.path.splitext(my_path)[0]) + vsr_dir = os.path.normcase(os.path.splitext(versioneer_py)[0]) +- if me_dir != vsr_dir: +- print("Warning: build in %s is using versioneer.py from %s" +- % (os.path.dirname(me), versioneer_py)) ++ if me_dir != vsr_dir and "VERSIONEER_PEP518" not in globals(): ++ print( ++ "Warning: build in %s is using versioneer.py from %s" ++ % (os.path.dirname(my_path), versioneer_py) ++ ) + except NameError: + pass + return root + + +-def get_config_from_root(root): ++def get_config_from_root(root: str) -> VersioneerConfig: + """Read the project setup.cfg file to determine Versioneer config.""" +- # This might raise EnvironmentError (if setup.cfg is missing), or ++ # This might raise OSError (if setup.cfg is missing), or + # configparser.NoSectionError (if it lacks a [versioneer] section), or + # configparser.NoOptionError (if it lacks "VCS="). See the docstring at + # the top of versioneer.py for instructions on writing your setup.cfg . +- setup_cfg = os.path.join(root, "setup.cfg") +- parser = configparser.SafeConfigParser() +- with open(setup_cfg, "r") as f: +- parser.readfp(f) +- VCS = parser.get("versioneer", "VCS") # mandatory +- +- def get(parser, name): +- if parser.has_option("versioneer", name): +- return parser.get("versioneer", name) +- return None ++ root_pth = Path(root) ++ pyproject_toml = root_pth / "pyproject.toml" ++ setup_cfg = root_pth / "setup.cfg" ++ section: Union[Dict[str, Any], configparser.SectionProxy, None] = None ++ if pyproject_toml.exists() and have_tomllib: ++ try: ++ with open(pyproject_toml, "rb") as fobj: ++ pp = tomllib.load(fobj) ++ section = pp["tool"]["versioneer"] ++ except (tomllib.TOMLDecodeError, KeyError) as e: ++ print(f"Failed to load config from {pyproject_toml}: {e}") ++ print("Try to load it from setup.cfg") ++ if not section: ++ parser = configparser.ConfigParser() ++ with open(setup_cfg) as cfg_file: ++ parser.read_file(cfg_file) ++ parser.get("versioneer", "VCS") # raise error if missing ++ ++ section = parser["versioneer"] ++ ++ # `cast`` really shouldn't be used, but its simplest for the ++ # common VersioneerConfig users at the moment. We verify against ++ # `None` values elsewhere where it matters ++ + cfg = VersioneerConfig() +- cfg.VCS = VCS +- cfg.style = get(parser, "style") or "" +- cfg.versionfile_source = get(parser, "versionfile_source") +- cfg.versionfile_build = get(parser, "versionfile_build") +- cfg.tag_prefix = get(parser, "tag_prefix") +- if cfg.tag_prefix in ("''", '""'): ++ cfg.VCS = section["VCS"] ++ cfg.style = section.get("style", "") ++ cfg.versionfile_source = cast(str, section.get("versionfile_source")) ++ cfg.versionfile_build = section.get("versionfile_build") ++ cfg.tag_prefix = cast(str, section.get("tag_prefix")) ++ if cfg.tag_prefix in ("''", '""', None): + cfg.tag_prefix = "" +- cfg.parentdir_prefix = get(parser, "parentdir_prefix") +- cfg.verbose = get(parser, "verbose") ++ cfg.parentdir_prefix = section.get("parentdir_prefix") ++ if isinstance(section, configparser.SectionProxy): ++ # Make sure configparser translates to bool ++ cfg.verbose = section.getboolean("verbose") ++ else: ++ cfg.verbose = section.get("verbose") ++ + return cfg + + +@@ -366,37 +447,54 @@ class NotThisMethod(Exception): + + + # these dictionaries contain VCS-specific tools +-LONG_VERSION_PY = {} +-HANDLERS = {} ++LONG_VERSION_PY: Dict[str, str] = {} ++HANDLERS: Dict[str, Dict[str, Callable]] = {} + + +-def register_vcs_handler(vcs, method): # decorator +- """Decorator to mark a method as the handler for a particular VCS.""" +- def decorate(f): ++def register_vcs_handler(vcs: str, method: str) -> Callable: # decorator ++ """Create decorator to mark a method as the handler of a VCS.""" ++ ++ def decorate(f: Callable) -> Callable: + """Store f in HANDLERS[vcs][method].""" +- if vcs not in HANDLERS: +- HANDLERS[vcs] = {} +- HANDLERS[vcs][method] = f ++ HANDLERS.setdefault(vcs, {})[method] = f + return f ++ + return decorate + + +-def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, +- env=None): ++def run_command( ++ commands: List[str], ++ args: List[str], ++ cwd: Optional[str] = None, ++ verbose: bool = False, ++ hide_stderr: bool = False, ++ env: Optional[Dict[str, str]] = None, ++) -> Tuple[Optional[str], Optional[int]]: + """Call the given command(s).""" + assert isinstance(commands, list) +- p = None +- for c in commands: ++ process = None ++ ++ popen_kwargs: Dict[str, Any] = {} ++ if sys.platform == "win32": ++ # This hides the console window if pythonw.exe is used ++ startupinfo = subprocess.STARTUPINFO() ++ startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW ++ popen_kwargs["startupinfo"] = startupinfo ++ ++ for command in commands: + try: +- dispcmd = str([c] + args) ++ dispcmd = str([command] + args) + # remember shell=False, so use git.cmd on windows, not just git +- p = subprocess.Popen([c] + args, cwd=cwd, env=env, +- stdout=subprocess.PIPE, +- stderr=(subprocess.PIPE if hide_stderr +- else None)) ++ process = subprocess.Popen( ++ [command] + args, ++ cwd=cwd, ++ env=env, ++ stdout=subprocess.PIPE, ++ stderr=(subprocess.PIPE if hide_stderr else None), ++ **popen_kwargs, ++ ) + break +- except EnvironmentError: +- e = sys.exc_info()[1] ++ except OSError as e: + if e.errno == errno.ENOENT: + continue + if verbose: +@@ -407,26 +505,27 @@ def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, + if verbose: + print("unable to find command, tried %s" % (commands,)) + return None, None +- stdout = p.communicate()[0].strip() +- if sys.version_info[0] >= 3: +- stdout = stdout.decode() +- if p.returncode != 0: ++ stdout = process.communicate()[0].strip().decode() ++ if process.returncode != 0: + if verbose: + print("unable to run %s (error)" % dispcmd) + print("stdout was %s" % stdout) +- return None, p.returncode +- return stdout, p.returncode ++ return None, process.returncode ++ return stdout, process.returncode + + +-LONG_VERSION_PY['git'] = ''' ++LONG_VERSION_PY[ ++ "git" ++] = r''' + # This file helps to compute a version number in source trees obtained from + # git-archive tarball (such as those provided by githubs download-from-tag + # feature). Distribution tarballs (built by setup.py sdist) and build + # directories (produced by setup.py build) will contain a much shorter file + # that just contains the computed version number. + +-# This file is released into the public domain. Generated by +-# versioneer-0.18 (https://github.com/warner/python-versioneer) ++# This file is released into the public domain. ++# Generated by versioneer-0.29 ++# https://github.com/python-versioneer/python-versioneer + + """Git implementation of _version.py.""" + +@@ -435,9 +534,11 @@ import os + import re + import subprocess + import sys ++from typing import Any, Callable, Dict, List, Optional, Tuple ++import functools + + +-def get_keywords(): ++def get_keywords() -> Dict[str, str]: + """Get the keywords needed to look up the version information.""" + # these strings will be replaced by git during git-archive. + # setup.py/versioneer.py will grep for the variable names, so they must +@@ -453,8 +554,15 @@ def get_keywords(): + class VersioneerConfig: + """Container for Versioneer configuration parameters.""" + ++ VCS: str ++ style: str ++ tag_prefix: str ++ parentdir_prefix: str ++ versionfile_source: str ++ verbose: bool ++ + +-def get_config(): ++def get_config() -> VersioneerConfig: + """Create, populate and return the VersioneerConfig() object.""" + # these strings are filled in when 'setup.py versioneer' creates + # _version.py +@@ -472,13 +580,13 @@ class NotThisMethod(Exception): + """Exception raised if a method is not valid for the current scenario.""" + + +-LONG_VERSION_PY = {} +-HANDLERS = {} ++LONG_VERSION_PY: Dict[str, str] = {} ++HANDLERS: Dict[str, Dict[str, Callable]] = {} + + +-def register_vcs_handler(vcs, method): # decorator +- """Decorator to mark a method as the handler for a particular VCS.""" +- def decorate(f): ++def register_vcs_handler(vcs: str, method: str) -> Callable: # decorator ++ """Create decorator to mark a method as the handler of a VCS.""" ++ def decorate(f: Callable) -> Callable: + """Store f in HANDLERS[vcs][method].""" + if vcs not in HANDLERS: + HANDLERS[vcs] = {} +@@ -487,22 +595,35 @@ def register_vcs_handler(vcs, method): # decorator + return decorate + + +-def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, +- env=None): ++def run_command( ++ commands: List[str], ++ args: List[str], ++ cwd: Optional[str] = None, ++ verbose: bool = False, ++ hide_stderr: bool = False, ++ env: Optional[Dict[str, str]] = None, ++) -> Tuple[Optional[str], Optional[int]]: + """Call the given command(s).""" + assert isinstance(commands, list) +- p = None +- for c in commands: ++ process = None ++ ++ popen_kwargs: Dict[str, Any] = {} ++ if sys.platform == "win32": ++ # This hides the console window if pythonw.exe is used ++ startupinfo = subprocess.STARTUPINFO() ++ startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW ++ popen_kwargs["startupinfo"] = startupinfo ++ ++ for command in commands: + try: +- dispcmd = str([c] + args) ++ dispcmd = str([command] + args) + # remember shell=False, so use git.cmd on windows, not just git +- p = subprocess.Popen([c] + args, cwd=cwd, env=env, +- stdout=subprocess.PIPE, +- stderr=(subprocess.PIPE if hide_stderr +- else None)) ++ process = subprocess.Popen([command] + args, cwd=cwd, env=env, ++ stdout=subprocess.PIPE, ++ stderr=(subprocess.PIPE if hide_stderr ++ else None), **popen_kwargs) + break +- except EnvironmentError: +- e = sys.exc_info()[1] ++ except OSError as e: + if e.errno == errno.ENOENT: + continue + if verbose: +@@ -513,18 +634,20 @@ def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, + if verbose: + print("unable to find command, tried %%s" %% (commands,)) + return None, None +- stdout = p.communicate()[0].strip() +- if sys.version_info[0] >= 3: +- stdout = stdout.decode() +- if p.returncode != 0: ++ stdout = process.communicate()[0].strip().decode() ++ if process.returncode != 0: + if verbose: + print("unable to run %%s (error)" %% dispcmd) + print("stdout was %%s" %% stdout) +- return None, p.returncode +- return stdout, p.returncode ++ return None, process.returncode ++ return stdout, process.returncode + + +-def versions_from_parentdir(parentdir_prefix, root, verbose): ++def versions_from_parentdir( ++ parentdir_prefix: str, ++ root: str, ++ verbose: bool, ++) -> Dict[str, Any]: + """Try to determine the version from the parent directory name. + + Source tarballs conventionally unpack into a directory that includes both +@@ -533,15 +656,14 @@ def versions_from_parentdir(parentdir_prefix, root, verbose): + """ + rootdirs = [] + +- for i in range(3): ++ for _ in range(3): + dirname = os.path.basename(root) + if dirname.startswith(parentdir_prefix): + return {"version": dirname[len(parentdir_prefix):], + "full-revisionid": None, + "dirty": False, "error": None, "date": None} +- else: +- rootdirs.append(root) +- root = os.path.dirname(root) # up a level ++ rootdirs.append(root) ++ root = os.path.dirname(root) # up a level + + if verbose: + print("Tried directories %%s but none started with prefix %%s" %% +@@ -550,41 +672,48 @@ def versions_from_parentdir(parentdir_prefix, root, verbose): + + + @register_vcs_handler("git", "get_keywords") +-def git_get_keywords(versionfile_abs): ++def git_get_keywords(versionfile_abs: str) -> Dict[str, str]: + """Extract version information from the given file.""" + # the code embedded in _version.py can just fetch the value of these + # keywords. When used from setup.py, we don't want to import _version.py, + # so we do it with a regexp instead. This function is not used from + # _version.py. +- keywords = {} ++ keywords: Dict[str, str] = {} + try: +- f = open(versionfile_abs, "r") +- for line in f.readlines(): +- if line.strip().startswith("git_refnames ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["refnames"] = mo.group(1) +- if line.strip().startswith("git_full ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["full"] = mo.group(1) +- if line.strip().startswith("git_date ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["date"] = mo.group(1) +- f.close() +- except EnvironmentError: ++ with open(versionfile_abs, "r") as fobj: ++ for line in fobj: ++ if line.strip().startswith("git_refnames ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["refnames"] = mo.group(1) ++ if line.strip().startswith("git_full ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["full"] = mo.group(1) ++ if line.strip().startswith("git_date ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["date"] = mo.group(1) ++ except OSError: + pass + return keywords + + + @register_vcs_handler("git", "keywords") +-def git_versions_from_keywords(keywords, tag_prefix, verbose): ++def git_versions_from_keywords( ++ keywords: Dict[str, str], ++ tag_prefix: str, ++ verbose: bool, ++) -> Dict[str, Any]: + """Get version information from git keywords.""" +- if not keywords: +- raise NotThisMethod("no keywords at all, weird") ++ if "refnames" not in keywords: ++ raise NotThisMethod("Short version file found") + date = keywords.get("date") + if date is not None: ++ # Use only the last line. Previous lines may contain GPG signature ++ # information. ++ date = date.splitlines()[-1] ++ + # git-2.2.0 added "%%cI", which expands to an ISO-8601 -compliant + # datestamp. However we prefer "%%ci" (which expands to an "ISO-8601 + # -like" string, which we must then edit to make compliant), because +@@ -597,11 +726,11 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + if verbose: + print("keywords are unexpanded, not using") + raise NotThisMethod("unexpanded keywords, not a git-archive tarball") +- refs = set([r.strip() for r in refnames.strip("()").split(",")]) ++ refs = {r.strip() for r in refnames.strip("()").split(",")} + # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of + # just "foo-1.0". If we see a "tag: " prefix, prefer those. + TAG = "tag: " +- tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)]) ++ tags = {r[len(TAG):] for r in refs if r.startswith(TAG)} + if not tags: + # Either we're using git < 1.8.3, or there really are no tags. We use + # a heuristic: assume all version tags have a digit. The old git %%d +@@ -610,7 +739,7 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + # between branches and tags. By ignoring refnames without digits, we + # filter out many common branch names like "release" and + # "stabilization", as well as "HEAD" and "master". +- tags = set([r for r in refs if re.search(r'\d', r)]) ++ tags = {r for r in refs if re.search(r'\d', r)} + if verbose: + print("discarding '%%s', no digits" %% ",".join(refs - tags)) + if verbose: +@@ -619,6 +748,11 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + # sorting will prefer e.g. "2.0" over "2.0rc1" + if ref.startswith(tag_prefix): + r = ref[len(tag_prefix):] ++ # Filter out refs that exactly match prefix or that don't start ++ # with a number once the prefix is stripped (mostly a concern ++ # when prefix is '') ++ if not re.match(r'\d', r): ++ continue + if verbose: + print("picking %%s" %% r) + return {"version": r, +@@ -634,7 +768,12 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + + + @register_vcs_handler("git", "pieces_from_vcs") +-def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): ++def git_pieces_from_vcs( ++ tag_prefix: str, ++ root: str, ++ verbose: bool, ++ runner: Callable = run_command ++) -> Dict[str, Any]: + """Get version from 'git describe' in the root of the source tree. + + This only gets called if the git-archive 'subst' keywords were *not* +@@ -645,8 +784,15 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + if sys.platform == "win32": + GITS = ["git.cmd", "git.exe"] + +- out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root, +- hide_stderr=True) ++ # GIT_DIR can interfere with correct operation of Versioneer. ++ # It may be intended to be passed to the Versioneer-versioned project, ++ # but that should not change where we get our version from. ++ env = os.environ.copy() ++ env.pop("GIT_DIR", None) ++ runner = functools.partial(runner, env=env) ++ ++ _, rc = runner(GITS, ["rev-parse", "--git-dir"], cwd=root, ++ hide_stderr=not verbose) + if rc != 0: + if verbose: + print("Directory %%s not under git control" %% root) +@@ -654,24 +800,57 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + + # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty] + # if there isn't one, this yields HEX[-dirty] (no NUM) +- describe_out, rc = run_command(GITS, ["describe", "--tags", "--dirty", +- "--always", "--long", +- "--match", "%%s*" %% tag_prefix], +- cwd=root) ++ describe_out, rc = runner(GITS, [ ++ "describe", "--tags", "--dirty", "--always", "--long", ++ "--match", f"{tag_prefix}[[:digit:]]*" ++ ], cwd=root) + # --long was added in git-1.5.5 + if describe_out is None: + raise NotThisMethod("'git describe' failed") + describe_out = describe_out.strip() +- full_out, rc = run_command(GITS, ["rev-parse", "HEAD"], cwd=root) ++ full_out, rc = runner(GITS, ["rev-parse", "HEAD"], cwd=root) + if full_out is None: + raise NotThisMethod("'git rev-parse' failed") + full_out = full_out.strip() + +- pieces = {} ++ pieces: Dict[str, Any] = {} + pieces["long"] = full_out + pieces["short"] = full_out[:7] # maybe improved later + pieces["error"] = None + ++ branch_name, rc = runner(GITS, ["rev-parse", "--abbrev-ref", "HEAD"], ++ cwd=root) ++ # --abbrev-ref was added in git-1.6.3 ++ if rc != 0 or branch_name is None: ++ raise NotThisMethod("'git rev-parse --abbrev-ref' returned error") ++ branch_name = branch_name.strip() ++ ++ if branch_name == "HEAD": ++ # If we aren't exactly on a branch, pick a branch which represents ++ # the current commit. If all else fails, we are on a branchless ++ # commit. ++ branches, rc = runner(GITS, ["branch", "--contains"], cwd=root) ++ # --contains was added in git-1.5.4 ++ if rc != 0 or branches is None: ++ raise NotThisMethod("'git branch --contains' returned error") ++ branches = branches.split("\n") ++ ++ # Remove the first line if we're running detached ++ if "(" in branches[0]: ++ branches.pop(0) ++ ++ # Strip off the leading "* " from the list of branches. ++ branches = [branch[2:] for branch in branches] ++ if "master" in branches: ++ branch_name = "master" ++ elif not branches: ++ branch_name = None ++ else: ++ # Pick the first branch that is returned. Good or bad. ++ branch_name = branches[0] ++ ++ pieces["branch"] = branch_name ++ + # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty] + # TAG might have hyphens. + git_describe = describe_out +@@ -688,7 +867,7 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + # TAG-NUM-gHEX + mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe) + if not mo: +- # unparseable. Maybe git-describe is misbehaving? ++ # unparsable. Maybe git-describe is misbehaving? + pieces["error"] = ("unable to parse git-describe output: '%%s'" + %% describe_out) + return pieces +@@ -713,26 +892,27 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + else: + # HEX: no tags + pieces["closest-tag"] = None +- count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"], +- cwd=root) +- pieces["distance"] = int(count_out) # total number of commits ++ out, rc = runner(GITS, ["rev-list", "HEAD", "--left-right"], cwd=root) ++ pieces["distance"] = len(out.split()) # total number of commits + + # commit date: see ISO-8601 comment in git_versions_from_keywords() +- date = run_command(GITS, ["show", "-s", "--format=%%ci", "HEAD"], +- cwd=root)[0].strip() ++ date = runner(GITS, ["show", "-s", "--format=%%ci", "HEAD"], cwd=root)[0].strip() ++ # Use only the last line. Previous lines may contain GPG signature ++ # information. ++ date = date.splitlines()[-1] + pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1) + + return pieces + + +-def plus_or_dot(pieces): ++def plus_or_dot(pieces: Dict[str, Any]) -> str: + """Return a + if we don't already have one, else return a .""" + if "+" in pieces.get("closest-tag", ""): + return "." + return "+" + + +-def render_pep440(pieces): ++def render_pep440(pieces: Dict[str, Any]) -> str: + """Build up version string, with post-release "local version identifier". + + Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you +@@ -757,23 +937,71 @@ def render_pep440(pieces): + return rendered + + +-def render_pep440_pre(pieces): +- """TAG[.post.devDISTANCE] -- No -dirty. ++def render_pep440_branch(pieces: Dict[str, Any]) -> str: ++ """TAG[[.dev0]+DISTANCE.gHEX[.dirty]] . ++ ++ The ".dev0" means not master branch. Note that .dev0 sorts backwards ++ (a feature branch will appear "older" than the master branch). + + Exceptions: +- 1: no tags. 0.post.devDISTANCE ++ 1: no tags. 0[.dev0]+untagged.DISTANCE.gHEX[.dirty] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] ++ if pieces["distance"] or pieces["dirty"]: ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += plus_or_dot(pieces) ++ rendered += "%%d.g%%s" %% (pieces["distance"], pieces["short"]) ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ else: ++ # exception #1 ++ rendered = "0" ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += "+untagged.%%d.g%%s" %% (pieces["distance"], ++ pieces["short"]) ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ return rendered ++ ++ ++def pep440_split_post(ver: str) -> Tuple[str, Optional[int]]: ++ """Split pep440 version string at the post-release segment. ++ ++ Returns the release segments before the post-release and the ++ post-release version number (or -1 if no post-release segment is present). ++ """ ++ vc = str.split(ver, ".post") ++ return vc[0], int(vc[1] or 0) if len(vc) == 2 else None ++ ++ ++def render_pep440_pre(pieces: Dict[str, Any]) -> str: ++ """TAG[.postN.devDISTANCE] -- No -dirty. ++ ++ Exceptions: ++ 1: no tags. 0.post0.devDISTANCE ++ """ ++ if pieces["closest-tag"]: + if pieces["distance"]: +- rendered += ".post.dev%%d" %% pieces["distance"] ++ # update the post release segment ++ tag_version, post_version = pep440_split_post(pieces["closest-tag"]) ++ rendered = tag_version ++ if post_version is not None: ++ rendered += ".post%%d.dev%%d" %% (post_version + 1, pieces["distance"]) ++ else: ++ rendered += ".post0.dev%%d" %% (pieces["distance"]) ++ else: ++ # no commits, use the tag as the version ++ rendered = pieces["closest-tag"] + else: + # exception #1 +- rendered = "0.post.dev%%d" %% pieces["distance"] ++ rendered = "0.post0.dev%%d" %% pieces["distance"] + return rendered + + +-def render_pep440_post(pieces): ++def render_pep440_post(pieces: Dict[str, Any]) -> str: + """TAG[.postDISTANCE[.dev0]+gHEX] . + + The ".dev0" means dirty. Note that .dev0 sorts backwards +@@ -800,12 +1028,41 @@ def render_pep440_post(pieces): + return rendered + + +-def render_pep440_old(pieces): ++def render_pep440_post_branch(pieces: Dict[str, Any]) -> str: ++ """TAG[.postDISTANCE[.dev0]+gHEX[.dirty]] . ++ ++ The ".dev0" means not master branch. ++ ++ Exceptions: ++ 1: no tags. 0.postDISTANCE[.dev0]+gHEX[.dirty] ++ """ ++ if pieces["closest-tag"]: ++ rendered = pieces["closest-tag"] ++ if pieces["distance"] or pieces["dirty"]: ++ rendered += ".post%%d" %% pieces["distance"] ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += plus_or_dot(pieces) ++ rendered += "g%%s" %% pieces["short"] ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ else: ++ # exception #1 ++ rendered = "0.post%%d" %% pieces["distance"] ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += "+g%%s" %% pieces["short"] ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ return rendered ++ ++ ++def render_pep440_old(pieces: Dict[str, Any]) -> str: + """TAG[.postDISTANCE[.dev0]] . + + The ".dev0" means dirty. + +- Eexceptions: ++ Exceptions: + 1: no tags. 0.postDISTANCE[.dev0] + """ + if pieces["closest-tag"]: +@@ -822,7 +1079,7 @@ def render_pep440_old(pieces): + return rendered + + +-def render_git_describe(pieces): ++def render_git_describe(pieces: Dict[str, Any]) -> str: + """TAG[-DISTANCE-gHEX][-dirty]. + + Like 'git describe --tags --dirty --always'. +@@ -842,7 +1099,7 @@ def render_git_describe(pieces): + return rendered + + +-def render_git_describe_long(pieces): ++def render_git_describe_long(pieces: Dict[str, Any]) -> str: + """TAG-DISTANCE-gHEX[-dirty]. + + Like 'git describe --tags --dirty --always -long'. +@@ -862,7 +1119,7 @@ def render_git_describe_long(pieces): + return rendered + + +-def render(pieces, style): ++def render(pieces: Dict[str, Any], style: str) -> Dict[str, Any]: + """Render the given version pieces into the requested style.""" + if pieces["error"]: + return {"version": "unknown", +@@ -876,10 +1133,14 @@ def render(pieces, style): + + if style == "pep440": + rendered = render_pep440(pieces) ++ elif style == "pep440-branch": ++ rendered = render_pep440_branch(pieces) + elif style == "pep440-pre": + rendered = render_pep440_pre(pieces) + elif style == "pep440-post": + rendered = render_pep440_post(pieces) ++ elif style == "pep440-post-branch": ++ rendered = render_pep440_post_branch(pieces) + elif style == "pep440-old": + rendered = render_pep440_old(pieces) + elif style == "git-describe": +@@ -894,7 +1155,7 @@ def render(pieces, style): + "date": pieces.get("date")} + + +-def get_versions(): ++def get_versions() -> Dict[str, Any]: + """Get version information or return default if unable to do so.""" + # I am in _version.py, which lives at ROOT/VERSIONFILE_SOURCE. If we have + # __file__, we can work backwards from there to the root. Some +@@ -915,7 +1176,7 @@ def get_versions(): + # versionfile_source is the relative path from the top of the source + # tree (where the .git directory might live) to this file. Invert + # this to find the root from __file__. +- for i in cfg.versionfile_source.split('/'): ++ for _ in cfg.versionfile_source.split('/'): + root = os.path.dirname(root) + except NameError: + return {"version": "0+unknown", "full-revisionid": None, +@@ -942,41 +1203,48 @@ def get_versions(): + + + @register_vcs_handler("git", "get_keywords") +-def git_get_keywords(versionfile_abs): ++def git_get_keywords(versionfile_abs: str) -> Dict[str, str]: + """Extract version information from the given file.""" + # the code embedded in _version.py can just fetch the value of these + # keywords. When used from setup.py, we don't want to import _version.py, + # so we do it with a regexp instead. This function is not used from + # _version.py. +- keywords = {} ++ keywords: Dict[str, str] = {} + try: +- f = open(versionfile_abs, "r") +- for line in f.readlines(): +- if line.strip().startswith("git_refnames ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["refnames"] = mo.group(1) +- if line.strip().startswith("git_full ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["full"] = mo.group(1) +- if line.strip().startswith("git_date ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["date"] = mo.group(1) +- f.close() +- except EnvironmentError: ++ with open(versionfile_abs, "r") as fobj: ++ for line in fobj: ++ if line.strip().startswith("git_refnames ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["refnames"] = mo.group(1) ++ if line.strip().startswith("git_full ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["full"] = mo.group(1) ++ if line.strip().startswith("git_date ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["date"] = mo.group(1) ++ except OSError: + pass + return keywords + + + @register_vcs_handler("git", "keywords") +-def git_versions_from_keywords(keywords, tag_prefix, verbose): ++def git_versions_from_keywords( ++ keywords: Dict[str, str], ++ tag_prefix: str, ++ verbose: bool, ++) -> Dict[str, Any]: + """Get version information from git keywords.""" +- if not keywords: +- raise NotThisMethod("no keywords at all, weird") ++ if "refnames" not in keywords: ++ raise NotThisMethod("Short version file found") + date = keywords.get("date") + if date is not None: ++ # Use only the last line. Previous lines may contain GPG signature ++ # information. ++ date = date.splitlines()[-1] ++ + # git-2.2.0 added "%cI", which expands to an ISO-8601 -compliant + # datestamp. However we prefer "%ci" (which expands to an "ISO-8601 + # -like" string, which we must then edit to make compliant), because +@@ -989,11 +1257,11 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + if verbose: + print("keywords are unexpanded, not using") + raise NotThisMethod("unexpanded keywords, not a git-archive tarball") +- refs = set([r.strip() for r in refnames.strip("()").split(",")]) ++ refs = {r.strip() for r in refnames.strip("()").split(",")} + # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of + # just "foo-1.0". If we see a "tag: " prefix, prefer those. + TAG = "tag: " +- tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)]) ++ tags = {r[len(TAG) :] for r in refs if r.startswith(TAG)} + if not tags: + # Either we're using git < 1.8.3, or there really are no tags. We use + # a heuristic: assume all version tags have a digit. The old git %d +@@ -1002,7 +1270,7 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + # between branches and tags. By ignoring refnames without digits, we + # filter out many common branch names like "release" and + # "stabilization", as well as "HEAD" and "master". +- tags = set([r for r in refs if re.search(r'\d', r)]) ++ tags = {r for r in refs if re.search(r"\d", r)} + if verbose: + print("discarding '%s', no digits" % ",".join(refs - tags)) + if verbose: +@@ -1010,23 +1278,37 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + for ref in sorted(tags): + # sorting will prefer e.g. "2.0" over "2.0rc1" + if ref.startswith(tag_prefix): +- r = ref[len(tag_prefix):] ++ r = ref[len(tag_prefix) :] ++ # Filter out refs that exactly match prefix or that don't start ++ # with a number once the prefix is stripped (mostly a concern ++ # when prefix is '') ++ if not re.match(r"\d", r): ++ continue + if verbose: + print("picking %s" % r) +- return {"version": r, +- "full-revisionid": keywords["full"].strip(), +- "dirty": False, "error": None, +- "date": date} ++ return { ++ "version": r, ++ "full-revisionid": keywords["full"].strip(), ++ "dirty": False, ++ "error": None, ++ "date": date, ++ } + # no suitable tags, so version is "0+unknown", but full hex is still there + if verbose: + print("no suitable tags, using unknown + full revision id") +- return {"version": "0+unknown", +- "full-revisionid": keywords["full"].strip(), +- "dirty": False, "error": "no suitable tags", "date": None} ++ return { ++ "version": "0+unknown", ++ "full-revisionid": keywords["full"].strip(), ++ "dirty": False, ++ "error": "no suitable tags", ++ "date": None, ++ } + + + @register_vcs_handler("git", "pieces_from_vcs") +-def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): ++def git_pieces_from_vcs( ++ tag_prefix: str, root: str, verbose: bool, runner: Callable = run_command ++) -> Dict[str, Any]: + """Get version from 'git describe' in the root of the source tree. + + This only gets called if the git-archive 'subst' keywords were *not* +@@ -1037,8 +1319,14 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + if sys.platform == "win32": + GITS = ["git.cmd", "git.exe"] + +- out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root, +- hide_stderr=True) ++ # GIT_DIR can interfere with correct operation of Versioneer. ++ # It may be intended to be passed to the Versioneer-versioned project, ++ # but that should not change where we get our version from. ++ env = os.environ.copy() ++ env.pop("GIT_DIR", None) ++ runner = functools.partial(runner, env=env) ++ ++ _, rc = runner(GITS, ["rev-parse", "--git-dir"], cwd=root, hide_stderr=not verbose) + if rc != 0: + if verbose: + print("Directory %s not under git control" % root) +@@ -1046,24 +1334,65 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + + # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty] + # if there isn't one, this yields HEX[-dirty] (no NUM) +- describe_out, rc = run_command(GITS, ["describe", "--tags", "--dirty", +- "--always", "--long", +- "--match", "%s*" % tag_prefix], +- cwd=root) ++ describe_out, rc = runner( ++ GITS, ++ [ ++ "describe", ++ "--tags", ++ "--dirty", ++ "--always", ++ "--long", ++ "--match", ++ f"{tag_prefix}[[:digit:]]*", ++ ], ++ cwd=root, ++ ) + # --long was added in git-1.5.5 + if describe_out is None: + raise NotThisMethod("'git describe' failed") + describe_out = describe_out.strip() +- full_out, rc = run_command(GITS, ["rev-parse", "HEAD"], cwd=root) ++ full_out, rc = runner(GITS, ["rev-parse", "HEAD"], cwd=root) + if full_out is None: + raise NotThisMethod("'git rev-parse' failed") + full_out = full_out.strip() + +- pieces = {} ++ pieces: Dict[str, Any] = {} + pieces["long"] = full_out + pieces["short"] = full_out[:7] # maybe improved later + pieces["error"] = None + ++ branch_name, rc = runner(GITS, ["rev-parse", "--abbrev-ref", "HEAD"], cwd=root) ++ # --abbrev-ref was added in git-1.6.3 ++ if rc != 0 or branch_name is None: ++ raise NotThisMethod("'git rev-parse --abbrev-ref' returned error") ++ branch_name = branch_name.strip() ++ ++ if branch_name == "HEAD": ++ # If we aren't exactly on a branch, pick a branch which represents ++ # the current commit. If all else fails, we are on a branchless ++ # commit. ++ branches, rc = runner(GITS, ["branch", "--contains"], cwd=root) ++ # --contains was added in git-1.5.4 ++ if rc != 0 or branches is None: ++ raise NotThisMethod("'git branch --contains' returned error") ++ branches = branches.split("\n") ++ ++ # Remove the first line if we're running detached ++ if "(" in branches[0]: ++ branches.pop(0) ++ ++ # Strip off the leading "* " from the list of branches. ++ branches = [branch[2:] for branch in branches] ++ if "master" in branches: ++ branch_name = "master" ++ elif not branches: ++ branch_name = None ++ else: ++ # Pick the first branch that is returned. Good or bad. ++ branch_name = branches[0] ++ ++ pieces["branch"] = branch_name ++ + # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty] + # TAG might have hyphens. + git_describe = describe_out +@@ -1072,17 +1401,16 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + dirty = git_describe.endswith("-dirty") + pieces["dirty"] = dirty + if dirty: +- git_describe = git_describe[:git_describe.rindex("-dirty")] ++ git_describe = git_describe[: git_describe.rindex("-dirty")] + + # now we have TAG-NUM-gHEX or HEX + + if "-" in git_describe: + # TAG-NUM-gHEX +- mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe) ++ mo = re.search(r"^(.+)-(\d+)-g([0-9a-f]+)$", git_describe) + if not mo: +- # unparseable. Maybe git-describe is misbehaving? +- pieces["error"] = ("unable to parse git-describe output: '%s'" +- % describe_out) ++ # unparsable. Maybe git-describe is misbehaving? ++ pieces["error"] = "unable to parse git-describe output: '%s'" % describe_out + return pieces + + # tag +@@ -1091,10 +1419,12 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + if verbose: + fmt = "tag '%s' doesn't start with prefix '%s'" + print(fmt % (full_tag, tag_prefix)) +- pieces["error"] = ("tag '%s' doesn't start with prefix '%s'" +- % (full_tag, tag_prefix)) ++ pieces["error"] = "tag '%s' doesn't start with prefix '%s'" % ( ++ full_tag, ++ tag_prefix, ++ ) + return pieces +- pieces["closest-tag"] = full_tag[len(tag_prefix):] ++ pieces["closest-tag"] = full_tag[len(tag_prefix) :] + + # distance: number of commits since tag + pieces["distance"] = int(mo.group(2)) +@@ -1105,19 +1435,20 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + else: + # HEX: no tags + pieces["closest-tag"] = None +- count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"], +- cwd=root) +- pieces["distance"] = int(count_out) # total number of commits ++ out, rc = runner(GITS, ["rev-list", "HEAD", "--left-right"], cwd=root) ++ pieces["distance"] = len(out.split()) # total number of commits + + # commit date: see ISO-8601 comment in git_versions_from_keywords() +- date = run_command(GITS, ["show", "-s", "--format=%ci", "HEAD"], +- cwd=root)[0].strip() ++ date = runner(GITS, ["show", "-s", "--format=%ci", "HEAD"], cwd=root)[0].strip() ++ # Use only the last line. Previous lines may contain GPG signature ++ # information. ++ date = date.splitlines()[-1] + pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1) + + return pieces + + +-def do_vcs_install(manifest_in, versionfile_source, ipy): ++def do_vcs_install(versionfile_source: str, ipy: Optional[str]) -> None: + """Git-specific installation logic for Versioneer. + + For Git, this means creating/changing .gitattributes to mark _version.py +@@ -1126,36 +1457,40 @@ def do_vcs_install(manifest_in, versionfile_source, ipy): + GITS = ["git"] + if sys.platform == "win32": + GITS = ["git.cmd", "git.exe"] +- files = [manifest_in, versionfile_source] ++ files = [versionfile_source] + if ipy: + files.append(ipy) +- try: +- me = __file__ +- if me.endswith(".pyc") or me.endswith(".pyo"): +- me = os.path.splitext(me)[0] + ".py" +- versioneer_file = os.path.relpath(me) +- except NameError: +- versioneer_file = "versioneer.py" +- files.append(versioneer_file) ++ if "VERSIONEER_PEP518" not in globals(): ++ try: ++ my_path = __file__ ++ if my_path.endswith((".pyc", ".pyo")): ++ my_path = os.path.splitext(my_path)[0] + ".py" ++ versioneer_file = os.path.relpath(my_path) ++ except NameError: ++ versioneer_file = "versioneer.py" ++ files.append(versioneer_file) + present = False + try: +- f = open(".gitattributes", "r") +- for line in f.readlines(): +- if line.strip().startswith(versionfile_source): +- if "export-subst" in line.strip().split()[1:]: +- present = True +- f.close() +- except EnvironmentError: ++ with open(".gitattributes", "r") as fobj: ++ for line in fobj: ++ if line.strip().startswith(versionfile_source): ++ if "export-subst" in line.strip().split()[1:]: ++ present = True ++ break ++ except OSError: + pass + if not present: +- f = open(".gitattributes", "a+") +- f.write("%s export-subst\n" % versionfile_source) +- f.close() ++ with open(".gitattributes", "a+") as fobj: ++ fobj.write(f"{versionfile_source} export-subst\n") + files.append(".gitattributes") + run_command(GITS, ["add", "--"] + files) + + +-def versions_from_parentdir(parentdir_prefix, root, verbose): ++def versions_from_parentdir( ++ parentdir_prefix: str, ++ root: str, ++ verbose: bool, ++) -> Dict[str, Any]: + """Try to determine the version from the parent directory name. + + Source tarballs conventionally unpack into a directory that includes both +@@ -1164,24 +1499,29 @@ def versions_from_parentdir(parentdir_prefix, root, verbose): + """ + rootdirs = [] + +- for i in range(3): ++ for _ in range(3): + dirname = os.path.basename(root) + if dirname.startswith(parentdir_prefix): +- return {"version": dirname[len(parentdir_prefix):], +- "full-revisionid": None, +- "dirty": False, "error": None, "date": None} +- else: +- rootdirs.append(root) +- root = os.path.dirname(root) # up a level ++ return { ++ "version": dirname[len(parentdir_prefix) :], ++ "full-revisionid": None, ++ "dirty": False, ++ "error": None, ++ "date": None, ++ } ++ rootdirs.append(root) ++ root = os.path.dirname(root) # up a level + + if verbose: +- print("Tried directories %s but none started with prefix %s" % +- (str(rootdirs), parentdir_prefix)) ++ print( ++ "Tried directories %s but none started with prefix %s" ++ % (str(rootdirs), parentdir_prefix) ++ ) + raise NotThisMethod("rootdir doesn't start with parentdir_prefix") + + + SHORT_VERSION_PY = """ +-# This file was generated by 'versioneer.py' (0.18) from ++# This file was generated by 'versioneer.py' (0.29) from + # revision-control system data, or from the parent directory name of an + # unpacked source archive. Distribution tarballs contain a pre-generated copy + # of this file. +@@ -1198,42 +1538,42 @@ def get_versions(): + """ + + +-def versions_from_file(filename): ++def versions_from_file(filename: str) -> Dict[str, Any]: + """Try to determine the version from _version.py if present.""" + try: + with open(filename) as f: + contents = f.read() +- except EnvironmentError: ++ except OSError: + raise NotThisMethod("unable to read _version.py") +- mo = re.search(r"version_json = '''\n(.*)''' # END VERSION_JSON", +- contents, re.M | re.S) ++ mo = re.search( ++ r"version_json = '''\n(.*)''' # END VERSION_JSON", contents, re.M | re.S ++ ) + if not mo: +- mo = re.search(r"version_json = '''\r\n(.*)''' # END VERSION_JSON", +- contents, re.M | re.S) ++ mo = re.search( ++ r"version_json = '''\r\n(.*)''' # END VERSION_JSON", contents, re.M | re.S ++ ) + if not mo: + raise NotThisMethod("no version_json in _version.py") + return json.loads(mo.group(1)) + + +-def write_to_version_file(filename, versions): ++def write_to_version_file(filename: str, versions: Dict[str, Any]) -> None: + """Write the given version number to the given _version.py file.""" +- os.unlink(filename) +- contents = json.dumps(versions, sort_keys=True, +- indent=1, separators=(",", ": ")) ++ contents = json.dumps(versions, sort_keys=True, indent=1, separators=(",", ": ")) + with open(filename, "w") as f: + f.write(SHORT_VERSION_PY % contents) + + print("set %s to '%s'" % (filename, versions["version"])) + + +-def plus_or_dot(pieces): ++def plus_or_dot(pieces: Dict[str, Any]) -> str: + """Return a + if we don't already have one, else return a .""" + if "+" in pieces.get("closest-tag", ""): + return "." + return "+" + + +-def render_pep440(pieces): ++def render_pep440(pieces: Dict[str, Any]) -> str: + """Build up version string, with post-release "local version identifier". + + Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you +@@ -1251,30 +1591,76 @@ def render_pep440(pieces): + rendered += ".dirty" + else: + # exception #1 +- rendered = "0+untagged.%d.g%s" % (pieces["distance"], +- pieces["short"]) ++ rendered = "0+untagged.%d.g%s" % (pieces["distance"], pieces["short"]) + if pieces["dirty"]: + rendered += ".dirty" + return rendered + + +-def render_pep440_pre(pieces): +- """TAG[.post.devDISTANCE] -- No -dirty. ++def render_pep440_branch(pieces: Dict[str, Any]) -> str: ++ """TAG[[.dev0]+DISTANCE.gHEX[.dirty]] . ++ ++ The ".dev0" means not master branch. Note that .dev0 sorts backwards ++ (a feature branch will appear "older" than the master branch). + + Exceptions: +- 1: no tags. 0.post.devDISTANCE ++ 1: no tags. 0[.dev0]+untagged.DISTANCE.gHEX[.dirty] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] ++ if pieces["distance"] or pieces["dirty"]: ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += plus_or_dot(pieces) ++ rendered += "%d.g%s" % (pieces["distance"], pieces["short"]) ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ else: ++ # exception #1 ++ rendered = "0" ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += "+untagged.%d.g%s" % (pieces["distance"], pieces["short"]) ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ return rendered ++ ++ ++def pep440_split_post(ver: str) -> Tuple[str, Optional[int]]: ++ """Split pep440 version string at the post-release segment. ++ ++ Returns the release segments before the post-release and the ++ post-release version number (or -1 if no post-release segment is present). ++ """ ++ vc = str.split(ver, ".post") ++ return vc[0], int(vc[1] or 0) if len(vc) == 2 else None ++ ++ ++def render_pep440_pre(pieces: Dict[str, Any]) -> str: ++ """TAG[.postN.devDISTANCE] -- No -dirty. ++ ++ Exceptions: ++ 1: no tags. 0.post0.devDISTANCE ++ """ ++ if pieces["closest-tag"]: + if pieces["distance"]: +- rendered += ".post.dev%d" % pieces["distance"] ++ # update the post release segment ++ tag_version, post_version = pep440_split_post(pieces["closest-tag"]) ++ rendered = tag_version ++ if post_version is not None: ++ rendered += ".post%d.dev%d" % (post_version + 1, pieces["distance"]) ++ else: ++ rendered += ".post0.dev%d" % (pieces["distance"]) ++ else: ++ # no commits, use the tag as the version ++ rendered = pieces["closest-tag"] + else: + # exception #1 +- rendered = "0.post.dev%d" % pieces["distance"] ++ rendered = "0.post0.dev%d" % pieces["distance"] + return rendered + + +-def render_pep440_post(pieces): ++def render_pep440_post(pieces: Dict[str, Any]) -> str: + """TAG[.postDISTANCE[.dev0]+gHEX] . + + The ".dev0" means dirty. Note that .dev0 sorts backwards +@@ -1301,12 +1687,41 @@ def render_pep440_post(pieces): + return rendered + + +-def render_pep440_old(pieces): ++def render_pep440_post_branch(pieces: Dict[str, Any]) -> str: ++ """TAG[.postDISTANCE[.dev0]+gHEX[.dirty]] . ++ ++ The ".dev0" means not master branch. ++ ++ Exceptions: ++ 1: no tags. 0.postDISTANCE[.dev0]+gHEX[.dirty] ++ """ ++ if pieces["closest-tag"]: ++ rendered = pieces["closest-tag"] ++ if pieces["distance"] or pieces["dirty"]: ++ rendered += ".post%d" % pieces["distance"] ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += plus_or_dot(pieces) ++ rendered += "g%s" % pieces["short"] ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ else: ++ # exception #1 ++ rendered = "0.post%d" % pieces["distance"] ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += "+g%s" % pieces["short"] ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ return rendered ++ ++ ++def render_pep440_old(pieces: Dict[str, Any]) -> str: + """TAG[.postDISTANCE[.dev0]] . + + The ".dev0" means dirty. + +- Eexceptions: ++ Exceptions: + 1: no tags. 0.postDISTANCE[.dev0] + """ + if pieces["closest-tag"]: +@@ -1323,7 +1738,7 @@ def render_pep440_old(pieces): + return rendered + + +-def render_git_describe(pieces): ++def render_git_describe(pieces: Dict[str, Any]) -> str: + """TAG[-DISTANCE-gHEX][-dirty]. + + Like 'git describe --tags --dirty --always'. +@@ -1343,7 +1758,7 @@ def render_git_describe(pieces): + return rendered + + +-def render_git_describe_long(pieces): ++def render_git_describe_long(pieces: Dict[str, Any]) -> str: + """TAG-DISTANCE-gHEX[-dirty]. + + Like 'git describe --tags --dirty --always -long'. +@@ -1363,24 +1778,30 @@ def render_git_describe_long(pieces): + return rendered + + +-def render(pieces, style): ++def render(pieces: Dict[str, Any], style: str) -> Dict[str, Any]: + """Render the given version pieces into the requested style.""" + if pieces["error"]: +- return {"version": "unknown", +- "full-revisionid": pieces.get("long"), +- "dirty": None, +- "error": pieces["error"], +- "date": None} ++ return { ++ "version": "unknown", ++ "full-revisionid": pieces.get("long"), ++ "dirty": None, ++ "error": pieces["error"], ++ "date": None, ++ } + + if not style or style == "default": + style = "pep440" # the default + + if style == "pep440": + rendered = render_pep440(pieces) ++ elif style == "pep440-branch": ++ rendered = render_pep440_branch(pieces) + elif style == "pep440-pre": + rendered = render_pep440_pre(pieces) + elif style == "pep440-post": + rendered = render_pep440_post(pieces) ++ elif style == "pep440-post-branch": ++ rendered = render_pep440_post_branch(pieces) + elif style == "pep440-old": + rendered = render_pep440_old(pieces) + elif style == "git-describe": +@@ -1390,16 +1811,20 @@ def render(pieces, style): + else: + raise ValueError("unknown style '%s'" % style) + +- return {"version": rendered, "full-revisionid": pieces["long"], +- "dirty": pieces["dirty"], "error": None, +- "date": pieces.get("date")} ++ return { ++ "version": rendered, ++ "full-revisionid": pieces["long"], ++ "dirty": pieces["dirty"], ++ "error": None, ++ "date": pieces.get("date"), ++ } + + + class VersioneerBadRootError(Exception): + """The project root directory is unknown or missing key files.""" + + +-def get_versions(verbose=False): ++def get_versions(verbose: bool = False) -> Dict[str, Any]: + """Get the project version from whatever source is available. + + Returns dict with two keys: 'version' and 'full'. +@@ -1414,9 +1839,10 @@ def get_versions(verbose=False): + assert cfg.VCS is not None, "please set [versioneer]VCS= in setup.cfg" + handlers = HANDLERS.get(cfg.VCS) + assert handlers, "unrecognized VCS '%s'" % cfg.VCS +- verbose = verbose or cfg.verbose +- assert cfg.versionfile_source is not None, \ +- "please set versioneer.versionfile_source" ++ verbose = verbose or bool(cfg.verbose) # `bool()` used to avoid `None` ++ assert ( ++ cfg.versionfile_source is not None ++ ), "please set versioneer.versionfile_source" + assert cfg.tag_prefix is not None, "please set versioneer.tag_prefix" + + versionfile_abs = os.path.join(root, cfg.versionfile_source) +@@ -1470,18 +1896,26 @@ def get_versions(verbose=False): + if verbose: + print("unable to compute version") + +- return {"version": "0+unknown", "full-revisionid": None, +- "dirty": None, "error": "unable to compute version", +- "date": None} ++ return { ++ "version": "0+unknown", ++ "full-revisionid": None, ++ "dirty": None, ++ "error": "unable to compute version", ++ "date": None, ++ } + + +-def get_version(): ++def get_version() -> str: + """Get the short version string for this project.""" + return get_versions()["version"] + + +-def get_cmdclass(): +- """Get the custom setuptools/distutils subclasses used by Versioneer.""" ++def get_cmdclass(cmdclass: Optional[Dict[str, Any]] = None): ++ """Get the custom setuptools subclasses used by Versioneer. ++ ++ If the package uses a different cmdclass (e.g. one from numpy), it ++ should be provide as an argument. ++ """ + if "versioneer" in sys.modules: + del sys.modules["versioneer"] + # this fixes the "python setup.py develop" case (also 'install' and +@@ -1495,25 +1929,25 @@ def get_cmdclass(): + # parent is protected against the child's "import versioneer". By + # removing ourselves from sys.modules here, before the child build + # happens, we protect the child from the parent's versioneer too. +- # Also see https://github.com/warner/python-versioneer/issues/52 ++ # Also see https://github.com/python-versioneer/python-versioneer/issues/52 + +- cmds = {} ++ cmds = {} if cmdclass is None else cmdclass.copy() + +- # we add "version" to both distutils and setuptools +- from distutils.core import Command ++ # we add "version" to setuptools ++ from setuptools import Command + + class cmd_version(Command): + description = "report generated version string" +- user_options = [] +- boolean_options = [] ++ user_options: List[Tuple[str, str, str]] = [] ++ boolean_options: List[str] = [] + +- def initialize_options(self): ++ def initialize_options(self) -> None: + pass + +- def finalize_options(self): ++ def finalize_options(self) -> None: + pass + +- def run(self): ++ def run(self) -> None: + vers = get_versions(verbose=True) + print("Version: %s" % vers["version"]) + print(" full-revisionid: %s" % vers.get("full-revisionid")) +@@ -1521,9 +1955,10 @@ def get_cmdclass(): + print(" date: %s" % vers.get("date")) + if vers["error"]: + print(" error: %s" % vers["error"]) ++ + cmds["version"] = cmd_version + +- # we override "build_py" in both distutils and setuptools ++ # we override "build_py" in setuptools + # + # most invocation pathways end up running build_py: + # distutils/build -> build_py +@@ -1538,29 +1973,71 @@ def get_cmdclass(): + # then does setup.py bdist_wheel, or sometimes setup.py install + # setup.py egg_info -> ? + ++ # pip install -e . and setuptool/editable_wheel will invoke build_py ++ # but the build_py command is not expected to copy any files. ++ + # we override different "build_py" commands for both environments +- if "setuptools" in sys.modules: +- from setuptools.command.build_py import build_py as _build_py ++ if "build_py" in cmds: ++ _build_py: Any = cmds["build_py"] + else: +- from distutils.command.build_py import build_py as _build_py ++ from setuptools.command.build_py import build_py as _build_py + + class cmd_build_py(_build_py): +- def run(self): ++ def run(self) -> None: + root = get_root() + cfg = get_config_from_root(root) + versions = get_versions() + _build_py.run(self) ++ if getattr(self, "editable_mode", False): ++ # During editable installs `.py` and data files are ++ # not copied to build_lib ++ return + # now locate _version.py in the new build/ directory and replace + # it with an updated value + if cfg.versionfile_build: +- target_versionfile = os.path.join(self.build_lib, +- cfg.versionfile_build) ++ target_versionfile = os.path.join(self.build_lib, cfg.versionfile_build) + print("UPDATING %s" % target_versionfile) + write_to_version_file(target_versionfile, versions) ++ + cmds["build_py"] = cmd_build_py + ++ if "build_ext" in cmds: ++ _build_ext: Any = cmds["build_ext"] ++ else: ++ from setuptools.command.build_ext import build_ext as _build_ext ++ ++ class cmd_build_ext(_build_ext): ++ def run(self) -> None: ++ root = get_root() ++ cfg = get_config_from_root(root) ++ versions = get_versions() ++ _build_ext.run(self) ++ if self.inplace: ++ # build_ext --inplace will only build extensions in ++ # build/lib<..> dir with no _version.py to write to. ++ # As in place builds will already have a _version.py ++ # in the module dir, we do not need to write one. ++ return ++ # now locate _version.py in the new build/ directory and replace ++ # it with an updated value ++ if not cfg.versionfile_build: ++ return ++ target_versionfile = os.path.join(self.build_lib, cfg.versionfile_build) ++ if not os.path.exists(target_versionfile): ++ print( ++ f"Warning: {target_versionfile} does not exist, skipping " ++ "version update. This can happen if you are running build_ext " ++ "without first running build_py." ++ ) ++ return ++ print("UPDATING %s" % target_versionfile) ++ write_to_version_file(target_versionfile, versions) ++ ++ cmds["build_ext"] = cmd_build_ext ++ + if "cx_Freeze" in sys.modules: # cx_freeze enabled? +- from cx_Freeze.dist import build_exe as _build_exe ++ from cx_Freeze.dist import build_exe as _build_exe # type: ignore ++ + # nczeczulin reports that py2exe won't like the pep440-style string + # as FILEVERSION, but it can be used for PRODUCTVERSION, e.g. + # setup(console=[{ +@@ -1569,7 +2046,7 @@ def get_cmdclass(): + # ... + + class cmd_build_exe(_build_exe): +- def run(self): ++ def run(self) -> None: + root = get_root() + cfg = get_config_from_root(root) + versions = get_versions() +@@ -1581,24 +2058,28 @@ def get_cmdclass(): + os.unlink(target_versionfile) + with open(cfg.versionfile_source, "w") as f: + LONG = LONG_VERSION_PY[cfg.VCS] +- f.write(LONG % +- {"DOLLAR": "$", +- "STYLE": cfg.style, +- "TAG_PREFIX": cfg.tag_prefix, +- "PARENTDIR_PREFIX": cfg.parentdir_prefix, +- "VERSIONFILE_SOURCE": cfg.versionfile_source, +- }) ++ f.write( ++ LONG ++ % { ++ "DOLLAR": "$", ++ "STYLE": cfg.style, ++ "TAG_PREFIX": cfg.tag_prefix, ++ "PARENTDIR_PREFIX": cfg.parentdir_prefix, ++ "VERSIONFILE_SOURCE": cfg.versionfile_source, ++ } ++ ) ++ + cmds["build_exe"] = cmd_build_exe + del cmds["build_py"] + +- if 'py2exe' in sys.modules: # py2exe enabled? ++ if "py2exe" in sys.modules: # py2exe enabled? + try: +- from py2exe.distutils_buildexe import py2exe as _py2exe # py3 ++ from py2exe.setuptools_buildexe import py2exe as _py2exe # type: ignore + except ImportError: +- from py2exe.build_exe import py2exe as _py2exe # py2 ++ from py2exe.distutils_buildexe import py2exe as _py2exe # type: ignore + + class cmd_py2exe(_py2exe): +- def run(self): ++ def run(self) -> None: + root = get_root() + cfg = get_config_from_root(root) + versions = get_versions() +@@ -1610,23 +2091,67 @@ def get_cmdclass(): + os.unlink(target_versionfile) + with open(cfg.versionfile_source, "w") as f: + LONG = LONG_VERSION_PY[cfg.VCS] +- f.write(LONG % +- {"DOLLAR": "$", +- "STYLE": cfg.style, +- "TAG_PREFIX": cfg.tag_prefix, +- "PARENTDIR_PREFIX": cfg.parentdir_prefix, +- "VERSIONFILE_SOURCE": cfg.versionfile_source, +- }) ++ f.write( ++ LONG ++ % { ++ "DOLLAR": "$", ++ "STYLE": cfg.style, ++ "TAG_PREFIX": cfg.tag_prefix, ++ "PARENTDIR_PREFIX": cfg.parentdir_prefix, ++ "VERSIONFILE_SOURCE": cfg.versionfile_source, ++ } ++ ) ++ + cmds["py2exe"] = cmd_py2exe + ++ # sdist farms its file list building out to egg_info ++ if "egg_info" in cmds: ++ _egg_info: Any = cmds["egg_info"] ++ else: ++ from setuptools.command.egg_info import egg_info as _egg_info ++ ++ class cmd_egg_info(_egg_info): ++ def find_sources(self) -> None: ++ # egg_info.find_sources builds the manifest list and writes it ++ # in one shot ++ super().find_sources() ++ ++ # Modify the filelist and normalize it ++ root = get_root() ++ cfg = get_config_from_root(root) ++ self.filelist.append("versioneer.py") ++ if cfg.versionfile_source: ++ # There are rare cases where versionfile_source might not be ++ # included by default, so we must be explicit ++ self.filelist.append(cfg.versionfile_source) ++ self.filelist.sort() ++ self.filelist.remove_duplicates() ++ ++ # The write method is hidden in the manifest_maker instance that ++ # generated the filelist and was thrown away ++ # We will instead replicate their final normalization (to unicode, ++ # and POSIX-style paths) ++ from setuptools import unicode_utils ++ ++ normalized = [ ++ unicode_utils.filesys_decode(f).replace(os.sep, "/") ++ for f in self.filelist.files ++ ] ++ ++ manifest_filename = os.path.join(self.egg_info, "SOURCES.txt") ++ with open(manifest_filename, "w") as fobj: ++ fobj.write("\n".join(normalized)) ++ ++ cmds["egg_info"] = cmd_egg_info ++ + # we override different "sdist" commands for both environments +- if "setuptools" in sys.modules: +- from setuptools.command.sdist import sdist as _sdist ++ if "sdist" in cmds: ++ _sdist: Any = cmds["sdist"] + else: +- from distutils.command.sdist import sdist as _sdist ++ from setuptools.command.sdist import sdist as _sdist + + class cmd_sdist(_sdist): +- def run(self): ++ def run(self) -> None: + versions = get_versions() + self._versioneer_generated_versions = versions + # unless we update this, the command will keep using the old +@@ -1634,7 +2159,7 @@ def get_cmdclass(): + self.distribution.metadata.version = versions["version"] + return _sdist.run(self) + +- def make_release_tree(self, base_dir, files): ++ def make_release_tree(self, base_dir: str, files: List[str]) -> None: + root = get_root() + cfg = get_config_from_root(root) + _sdist.make_release_tree(self, base_dir, files) +@@ -1643,8 +2168,10 @@ def get_cmdclass(): + # updated value + target_versionfile = os.path.join(base_dir, cfg.versionfile_source) + print("UPDATING %s" % target_versionfile) +- write_to_version_file(target_versionfile, +- self._versioneer_generated_versions) ++ write_to_version_file( ++ target_versionfile, self._versioneer_generated_versions ++ ) ++ + cmds["sdist"] = cmd_sdist + + return cmds +@@ -1687,23 +2214,26 @@ SAMPLE_CONFIG = """ + + """ + +-INIT_PY_SNIPPET = """ ++OLD_SNIPPET = """ + from ._version import get_versions + __version__ = get_versions()['version'] + del get_versions + """ + ++INIT_PY_SNIPPET = """ ++from . import {0} ++__version__ = {0}.get_versions()['version'] ++""" ++ + +-def do_setup(): +- """Main VCS-independent setup function for installing Versioneer.""" ++def do_setup() -> int: ++ """Do main VCS-independent setup function for installing Versioneer.""" + root = get_root() + try: + cfg = get_config_from_root(root) +- except (EnvironmentError, configparser.NoSectionError, +- configparser.NoOptionError) as e: +- if isinstance(e, (EnvironmentError, configparser.NoSectionError)): +- print("Adding sample versioneer config to setup.cfg", +- file=sys.stderr) ++ except (OSError, configparser.NoSectionError, configparser.NoOptionError) as e: ++ if isinstance(e, (OSError, configparser.NoSectionError)): ++ print("Adding sample versioneer config to setup.cfg", file=sys.stderr) + with open(os.path.join(root, "setup.cfg"), "a") as f: + f.write(SAMPLE_CONFIG) + print(CONFIG_ERROR, file=sys.stderr) +@@ -1712,71 +2242,49 @@ def do_setup(): + print(" creating %s" % cfg.versionfile_source) + with open(cfg.versionfile_source, "w") as f: + LONG = LONG_VERSION_PY[cfg.VCS] +- f.write(LONG % {"DOLLAR": "$", +- "STYLE": cfg.style, +- "TAG_PREFIX": cfg.tag_prefix, +- "PARENTDIR_PREFIX": cfg.parentdir_prefix, +- "VERSIONFILE_SOURCE": cfg.versionfile_source, +- }) +- +- ipy = os.path.join(os.path.dirname(cfg.versionfile_source), +- "__init__.py") ++ f.write( ++ LONG ++ % { ++ "DOLLAR": "$", ++ "STYLE": cfg.style, ++ "TAG_PREFIX": cfg.tag_prefix, ++ "PARENTDIR_PREFIX": cfg.parentdir_prefix, ++ "VERSIONFILE_SOURCE": cfg.versionfile_source, ++ } ++ ) ++ ++ ipy = os.path.join(os.path.dirname(cfg.versionfile_source), "__init__.py") ++ maybe_ipy: Optional[str] = ipy + if os.path.exists(ipy): + try: + with open(ipy, "r") as f: + old = f.read() +- except EnvironmentError: ++ except OSError: + old = "" +- if INIT_PY_SNIPPET not in old: ++ module = os.path.splitext(os.path.basename(cfg.versionfile_source))[0] ++ snippet = INIT_PY_SNIPPET.format(module) ++ if OLD_SNIPPET in old: ++ print(" replacing boilerplate in %s" % ipy) ++ with open(ipy, "w") as f: ++ f.write(old.replace(OLD_SNIPPET, snippet)) ++ elif snippet not in old: + print(" appending to %s" % ipy) + with open(ipy, "a") as f: +- f.write(INIT_PY_SNIPPET) ++ f.write(snippet) + else: + print(" %s unmodified" % ipy) + else: + print(" %s doesn't exist, ok" % ipy) +- ipy = None +- +- # Make sure both the top-level "versioneer.py" and versionfile_source +- # (PKG/_version.py, used by runtime code) are in MANIFEST.in, so +- # they'll be copied into source distributions. Pip won't be able to +- # install the package without this. +- manifest_in = os.path.join(root, "MANIFEST.in") +- simple_includes = set() +- try: +- with open(manifest_in, "r") as f: +- for line in f: +- if line.startswith("include "): +- for include in line.split()[1:]: +- simple_includes.add(include) +- except EnvironmentError: +- pass +- # That doesn't cover everything MANIFEST.in can do +- # (http://docs.python.org/2/distutils/sourcedist.html#commands), so +- # it might give some false negatives. Appending redundant 'include' +- # lines is safe, though. +- if "versioneer.py" not in simple_includes: +- print(" appending 'versioneer.py' to MANIFEST.in") +- with open(manifest_in, "a") as f: +- f.write("include versioneer.py\n") +- else: +- print(" 'versioneer.py' already in MANIFEST.in") +- if cfg.versionfile_source not in simple_includes: +- print(" appending versionfile_source ('%s') to MANIFEST.in" % +- cfg.versionfile_source) +- with open(manifest_in, "a") as f: +- f.write("include %s\n" % cfg.versionfile_source) +- else: +- print(" versionfile_source already in MANIFEST.in") ++ maybe_ipy = None + + # Make VCS-specific changes. For git, this means creating/changing + # .gitattributes to mark _version.py for export-subst keyword + # substitution. +- do_vcs_install(manifest_in, cfg.versionfile_source, ipy) ++ do_vcs_install(cfg.versionfile_source, maybe_ipy) + return 0 + + +-def scan_setup_py(): ++def scan_setup_py() -> int: + """Validate the contents of setup.py against Versioneer's expectations.""" + found = set() + setters = False +@@ -1813,10 +2321,14 @@ def scan_setup_py(): + return errors + + ++def setup_command() -> NoReturn: ++ """Set up Versioneer and exit with appropriate error code.""" ++ errors = do_setup() ++ errors += scan_setup_py() ++ sys.exit(1 if errors else 0) ++ ++ + if __name__ == "__main__": + cmd = sys.argv[1] + if cmd == "setup": +- errors = do_setup() +- errors += scan_setup_py() +- if errors: +- sys.exit(1) ++ setup_command() +-- +2.41.0 + diff --git a/package/python-magic-wormhole-transit-relay/Config.in b/package/python-magic-wormhole-transit-relay/Config.in new file mode 100644 index 00000000..1a743c10 --- /dev/null +++ b/package/python-magic-wormhole-transit-relay/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PYTHON_MAGIC_WORMHOLE_TRANSIT_RELAY + bool "python-magic-wormhole-transit-relay" + select BR2_PACKAGE_PYTHON_TWISTED # runtime + help + Transit Relay server for Magic-Wormhole. + + This repository implements the Magic-Wormhole "Transit + Relay", a server that helps clients establish bulk-data + transit connections even when both are behind NAT + boxes. Each side makes a TCP connection to this server and + presents a handshake. Two connections with identical + handshakes are glued together, allowing them to pretend they + have a direct connection. + + https://github.com/magic-wormhole/magic-wormhole-transit-relay diff --git a/package/python-magic-wormhole-transit-relay/python-magic-wormhole-transit-relay.hash b/package/python-magic-wormhole-transit-relay/python-magic-wormhole-transit-relay.hash new file mode 100644 index 00000000..f131477a --- /dev/null +++ b/package/python-magic-wormhole-transit-relay/python-magic-wormhole-transit-relay.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/magic-wormhole-transit-relay/json +md5 aa575a4e22b3d5099674ba88b136a9a2 magic-wormhole-transit-relay-0.2.1.tar.gz +sha256 cb4801b46890eaff97286e0e3fec62d1d52ffe317d140083b6336a1fb4e8fa5e magic-wormhole-transit-relay-0.2.1.tar.gz +# Locally computed sha256 checksums +sha256 d70f6469bb210c2aa4c0dfd74f498ef5f0467a137d8296479088e7243c5884eb LICENSE diff --git a/package/python-magic-wormhole-transit-relay/python-magic-wormhole-transit-relay.mk b/package/python-magic-wormhole-transit-relay/python-magic-wormhole-transit-relay.mk new file mode 100644 index 00000000..e4ffe6e7 --- /dev/null +++ b/package/python-magic-wormhole-transit-relay/python-magic-wormhole-transit-relay.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-magic-wormhole-transit-relay +# +################################################################################ + +PYTHON_MAGIC_WORMHOLE_TRANSIT_RELAY_VERSION = 0.2.1 +PYTHON_MAGIC_WORMHOLE_TRANSIT_RELAY_SOURCE = magic-wormhole-transit-relay-$(PYTHON_MAGIC_WORMHOLE_TRANSIT_RELAY_VERSION).tar.gz +PYTHON_MAGIC_WORMHOLE_TRANSIT_RELAY_SITE = https://files.pythonhosted.org/packages/21/c9/be25bb30e327037e009657960fc594d089b118c0d81cc6a200cad1bb3852 +PYTHON_MAGIC_WORMHOLE_TRANSIT_RELAY_SETUP_TYPE = setuptools +PYTHON_MAGIC_WORMHOLE_TRANSIT_RELAY_LICENSE = MIT +PYTHON_MAGIC_WORMHOLE_TRANSIT_RELAY_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-magic-wormhole/0001-Update-versioneer-to-0.29.patch b/package/python-magic-wormhole/0001-Update-versioneer-to-0.29.patch new file mode 100644 index 00000000..54b5fe8b --- /dev/null +++ b/package/python-magic-wormhole/0001-Update-versioneer-to-0.29.patch @@ -0,0 +1,2185 @@ +From b283ce50c6f32387d0f474c935ed6015585b986c Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Tue, 24 Oct 2023 09:54:40 +0200 +Subject: [PATCH] Update versioneer to 0.29 + +Fixes builds against Python 3.12.0 + +Upstream: https://github.com/magic-wormhole/magic-wormhole/pull/505 + +Signed-off-by: Adam Duskett +--- + versioneer.py | 1348 ++++++++++++++++++++++++++++++++++--------------- + 1 file changed, 930 insertions(+), 418 deletions(-) + +diff --git a/versioneer.py b/versioneer.py +index ebe628e..de97d90 100644 +--- a/versioneer.py ++++ b/versioneer.py +@@ -1,5 +1,4 @@ +- +-# Version: 0.18 ++# Version: 0.29 + + """The Versioneer - like a rocketeer, but for versions. + +@@ -7,18 +6,14 @@ The Versioneer + ============== + + * like a rocketeer, but for versions! +-* https://github.com/warner/python-versioneer ++* https://github.com/python-versioneer/python-versioneer + * Brian Warner +-* License: Public Domain +-* Compatible With: python2.6, 2.7, 3.2, 3.3, 3.4, 3.5, 3.6, and pypy +-* [![Latest Version] +-(https://pypip.in/version/versioneer/badge.svg?style=flat) +-](https://pypi.python.org/pypi/versioneer/) +-* [![Build Status] +-(https://travis-ci.org/warner/python-versioneer.png?branch=master) +-](https://travis-ci.org/warner/python-versioneer) +- +-This is a tool for managing a recorded version number in distutils-based ++* License: Public Domain (Unlicense) ++* Compatible with: Python 3.7, 3.8, 3.9, 3.10, 3.11 and pypy3 ++* [![Latest Version][pypi-image]][pypi-url] ++* [![Build Status][travis-image]][travis-url] ++ ++This is a tool for managing a recorded version number in setuptools-based + python projects. The goal is to remove the tedious and error-prone "update + the embedded version string" step from your release process. Making a new + release should be as easy as recording a new tag in your version-control +@@ -27,9 +22,38 @@ system, and maybe making new tarballs. + + ## Quick Install + +-* `pip install versioneer` to somewhere to your $PATH +-* add a `[versioneer]` section to your setup.cfg (see below) +-* run `versioneer install` in your source tree, commit the results ++Versioneer provides two installation modes. The "classic" vendored mode installs ++a copy of versioneer into your repository. The experimental build-time dependency mode ++is intended to allow you to skip this step and simplify the process of upgrading. ++ ++### Vendored mode ++ ++* `pip install versioneer` to somewhere in your $PATH ++ * A [conda-forge recipe](https://github.com/conda-forge/versioneer-feedstock) is ++ available, so you can also use `conda install -c conda-forge versioneer` ++* add a `[tool.versioneer]` section to your `pyproject.toml` or a ++ `[versioneer]` section to your `setup.cfg` (see [Install](INSTALL.md)) ++ * Note that you will need to add `tomli; python_version < "3.11"` to your ++ build-time dependencies if you use `pyproject.toml` ++* run `versioneer install --vendor` in your source tree, commit the results ++* verify version information with `python setup.py version` ++ ++### Build-time dependency mode ++ ++* `pip install versioneer` to somewhere in your $PATH ++ * A [conda-forge recipe](https://github.com/conda-forge/versioneer-feedstock) is ++ available, so you can also use `conda install -c conda-forge versioneer` ++* add a `[tool.versioneer]` section to your `pyproject.toml` or a ++ `[versioneer]` section to your `setup.cfg` (see [Install](INSTALL.md)) ++* add `versioneer` (with `[toml]` extra, if configuring in `pyproject.toml`) ++ to the `requires` key of the `build-system` table in `pyproject.toml`: ++ ```toml ++ [build-system] ++ requires = ["setuptools", "versioneer[toml]"] ++ build-backend = "setuptools.build_meta" ++ ``` ++* run `versioneer install --no-vendor` in your source tree, commit the results ++* verify version information with `python setup.py version` + + ## Version Identifiers + +@@ -61,7 +85,7 @@ version 1.3). Many VCS systems can report a description that captures this, + for example `git describe --tags --dirty --always` reports things like + "0.7-1-g574ab98-dirty" to indicate that the checkout is one revision past the + 0.7 tag, has a unique revision id of "574ab98", and is "dirty" (it has +-uncommitted changes. ++uncommitted changes). + + The version identifier is used for multiple purposes: + +@@ -166,7 +190,7 @@ which may help identify what went wrong). + + Some situations are known to cause problems for Versioneer. This details the + most significant ones. More can be found on Github +-[issues page](https://github.com/warner/python-versioneer/issues). ++[issues page](https://github.com/python-versioneer/python-versioneer/issues). + + ### Subprojects + +@@ -194,9 +218,9 @@ work too. + Pip-8.1.1 is known to have this problem, but hopefully it will get fixed in + some later version. + +-[Bug #38](https://github.com/warner/python-versioneer/issues/38) is tracking ++[Bug #38](https://github.com/python-versioneer/python-versioneer/issues/38) is tracking + this issue. The discussion in +-[PR #61](https://github.com/warner/python-versioneer/pull/61) describes the ++[PR #61](https://github.com/python-versioneer/python-versioneer/pull/61) describes the + issue from the Versioneer side in more detail. + [pip PR#3176](https://github.com/pypa/pip/pull/3176) and + [pip PR#3615](https://github.com/pypa/pip/pull/3615) contain work to improve +@@ -224,31 +248,20 @@ regenerated while a different version is checked out. Many setup.py commands + cause egg_info to be rebuilt (including `sdist`, `wheel`, and installing into + a different virtualenv), so this can be surprising. + +-[Bug #83](https://github.com/warner/python-versioneer/issues/83) describes ++[Bug #83](https://github.com/python-versioneer/python-versioneer/issues/83) describes + this one, but upgrading to a newer version of setuptools should probably + resolve it. + +-### Unicode version strings +- +-While Versioneer works (and is continually tested) with both Python 2 and +-Python 3, it is not entirely consistent with bytes-vs-unicode distinctions. +-Newer releases probably generate unicode version strings on py2. It's not +-clear that this is wrong, but it may be surprising for applications when then +-write these strings to a network connection or include them in bytes-oriented +-APIs like cryptographic checksums. +- +-[Bug #71](https://github.com/warner/python-versioneer/issues/71) investigates +-this question. +- + + ## Updating Versioneer + + To upgrade your project to a new release of Versioneer, do the following: + + * install the new Versioneer (`pip install -U versioneer` or equivalent) +-* edit `setup.cfg`, if necessary, to include any new configuration settings +- indicated by the release notes. See [UPGRADING](./UPGRADING.md) for details. +-* re-run `versioneer install` in your source tree, to replace ++* edit `setup.cfg` and `pyproject.toml`, if necessary, ++ to include any new configuration settings indicated by the release notes. ++ See [UPGRADING](./UPGRADING.md) for details. ++* re-run `versioneer install --[no-]vendor` in your source tree, to replace + `SRC/_version.py` + * commit any changed files + +@@ -265,35 +278,70 @@ installation by editing setup.py . Alternatively, it might go the other + direction and include code from all supported VCS systems, reducing the + number of intermediate scripts. + ++## Similar projects ++ ++* [setuptools_scm](https://github.com/pypa/setuptools_scm/) - a non-vendored build-time ++ dependency ++* [minver](https://github.com/jbweston/miniver) - a lightweight reimplementation of ++ versioneer ++* [versioningit](https://github.com/jwodder/versioningit) - a PEP 518-based setuptools ++ plugin + + ## License + + To make Versioneer easier to embed, all its code is dedicated to the public + domain. The `_version.py` that it creates is also in the public domain. +-Specifically, both are released under the Creative Commons "Public Domain +-Dedication" license (CC0-1.0), as described in +-https://creativecommons.org/publicdomain/zero/1.0/ . ++Specifically, both are released under the "Unlicense", as described in ++https://unlicense.org/. ++ ++[pypi-image]: https://img.shields.io/pypi/v/versioneer.svg ++[pypi-url]: https://pypi.python.org/pypi/versioneer/ ++[travis-image]: ++https://img.shields.io/travis/com/python-versioneer/python-versioneer.svg ++[travis-url]: https://travis-ci.com/github/python-versioneer/python-versioneer + + """ ++# pylint:disable=invalid-name,import-outside-toplevel,missing-function-docstring ++# pylint:disable=missing-class-docstring,too-many-branches,too-many-statements ++# pylint:disable=raise-missing-from,too-many-lines,too-many-locals,import-error ++# pylint:disable=too-few-public-methods,redefined-outer-name,consider-using-with ++# pylint:disable=attribute-defined-outside-init,too-many-arguments + +-from __future__ import print_function +-try: +- import configparser +-except ImportError: +- import ConfigParser as configparser ++import configparser + import errno + import json + import os + import re + import subprocess + import sys ++from pathlib import Path ++from typing import Any, Callable, cast, Dict, List, Optional, Tuple, Union ++from typing import NoReturn ++import functools ++ ++have_tomllib = True ++if sys.version_info >= (3, 11): ++ import tomllib ++else: ++ try: ++ import tomli as tomllib ++ except ImportError: ++ have_tomllib = False + + + class VersioneerConfig: + """Container for Versioneer configuration parameters.""" + ++ VCS: str ++ style: str ++ tag_prefix: str ++ versionfile_source: str ++ versionfile_build: Optional[str] ++ parentdir_prefix: Optional[str] ++ verbose: Optional[bool] ++ + +-def get_root(): ++def get_root() -> str: + """Get the project root directory. + + We require that all commands are run from the project root, i.e. the +@@ -301,18 +349,30 @@ def get_root(): + """ + root = os.path.realpath(os.path.abspath(os.getcwd())) + setup_py = os.path.join(root, "setup.py") ++ pyproject_toml = os.path.join(root, "pyproject.toml") + versioneer_py = os.path.join(root, "versioneer.py") +- if not (os.path.exists(setup_py) or os.path.exists(versioneer_py)): ++ if not ( ++ os.path.exists(setup_py) ++ or os.path.exists(pyproject_toml) ++ or os.path.exists(versioneer_py) ++ ): + # allow 'python path/to/setup.py COMMAND' + root = os.path.dirname(os.path.realpath(os.path.abspath(sys.argv[0]))) + setup_py = os.path.join(root, "setup.py") ++ pyproject_toml = os.path.join(root, "pyproject.toml") + versioneer_py = os.path.join(root, "versioneer.py") +- if not (os.path.exists(setup_py) or os.path.exists(versioneer_py)): +- err = ("Versioneer was unable to run the project root directory. " +- "Versioneer requires setup.py to be executed from " +- "its immediate directory (like 'python setup.py COMMAND'), " +- "or in a way that lets it use sys.argv[0] to find the root " +- "(like 'python path/to/setup.py COMMAND').") ++ if not ( ++ os.path.exists(setup_py) ++ or os.path.exists(pyproject_toml) ++ or os.path.exists(versioneer_py) ++ ): ++ err = ( ++ "Versioneer was unable to run the project root directory. " ++ "Versioneer requires setup.py to be executed from " ++ "its immediate directory (like 'python setup.py COMMAND'), " ++ "or in a way that lets it use sys.argv[0] to find the root " ++ "(like 'python path/to/setup.py COMMAND')." ++ ) + raise VersioneerBadRootError(err) + try: + # Certain runtime workflows (setup.py install/develop in a setuptools +@@ -321,43 +381,64 @@ def get_root(): + # module-import table will cache the first one. So we can't use + # os.path.dirname(__file__), as that will find whichever + # versioneer.py was first imported, even in later projects. +- me = os.path.realpath(os.path.abspath(__file__)) +- me_dir = os.path.normcase(os.path.splitext(me)[0]) ++ my_path = os.path.realpath(os.path.abspath(__file__)) ++ me_dir = os.path.normcase(os.path.splitext(my_path)[0]) + vsr_dir = os.path.normcase(os.path.splitext(versioneer_py)[0]) +- if me_dir != vsr_dir: +- print("Warning: build in %s is using versioneer.py from %s" +- % (os.path.dirname(me), versioneer_py)) ++ if me_dir != vsr_dir and "VERSIONEER_PEP518" not in globals(): ++ print( ++ "Warning: build in %s is using versioneer.py from %s" ++ % (os.path.dirname(my_path), versioneer_py) ++ ) + except NameError: + pass + return root + + +-def get_config_from_root(root): ++def get_config_from_root(root: str) -> VersioneerConfig: + """Read the project setup.cfg file to determine Versioneer config.""" +- # This might raise EnvironmentError (if setup.cfg is missing), or ++ # This might raise OSError (if setup.cfg is missing), or + # configparser.NoSectionError (if it lacks a [versioneer] section), or + # configparser.NoOptionError (if it lacks "VCS="). See the docstring at + # the top of versioneer.py for instructions on writing your setup.cfg . +- setup_cfg = os.path.join(root, "setup.cfg") +- parser = configparser.SafeConfigParser() +- with open(setup_cfg, "r") as f: +- parser.readfp(f) +- VCS = parser.get("versioneer", "VCS") # mandatory +- +- def get(parser, name): +- if parser.has_option("versioneer", name): +- return parser.get("versioneer", name) +- return None ++ root_pth = Path(root) ++ pyproject_toml = root_pth / "pyproject.toml" ++ setup_cfg = root_pth / "setup.cfg" ++ section: Union[Dict[str, Any], configparser.SectionProxy, None] = None ++ if pyproject_toml.exists() and have_tomllib: ++ try: ++ with open(pyproject_toml, "rb") as fobj: ++ pp = tomllib.load(fobj) ++ section = pp["tool"]["versioneer"] ++ except (tomllib.TOMLDecodeError, KeyError) as e: ++ print(f"Failed to load config from {pyproject_toml}: {e}") ++ print("Try to load it from setup.cfg") ++ if not section: ++ parser = configparser.ConfigParser() ++ with open(setup_cfg) as cfg_file: ++ parser.read_file(cfg_file) ++ parser.get("versioneer", "VCS") # raise error if missing ++ ++ section = parser["versioneer"] ++ ++ # `cast`` really shouldn't be used, but its simplest for the ++ # common VersioneerConfig users at the moment. We verify against ++ # `None` values elsewhere where it matters ++ + cfg = VersioneerConfig() +- cfg.VCS = VCS +- cfg.style = get(parser, "style") or "" +- cfg.versionfile_source = get(parser, "versionfile_source") +- cfg.versionfile_build = get(parser, "versionfile_build") +- cfg.tag_prefix = get(parser, "tag_prefix") +- if cfg.tag_prefix in ("''", '""'): ++ cfg.VCS = section["VCS"] ++ cfg.style = section.get("style", "") ++ cfg.versionfile_source = cast(str, section.get("versionfile_source")) ++ cfg.versionfile_build = section.get("versionfile_build") ++ cfg.tag_prefix = cast(str, section.get("tag_prefix")) ++ if cfg.tag_prefix in ("''", '""', None): + cfg.tag_prefix = "" +- cfg.parentdir_prefix = get(parser, "parentdir_prefix") +- cfg.verbose = get(parser, "verbose") ++ cfg.parentdir_prefix = section.get("parentdir_prefix") ++ if isinstance(section, configparser.SectionProxy): ++ # Make sure configparser translates to bool ++ cfg.verbose = section.getboolean("verbose") ++ else: ++ cfg.verbose = section.get("verbose") ++ + return cfg + + +@@ -366,37 +447,54 @@ class NotThisMethod(Exception): + + + # these dictionaries contain VCS-specific tools +-LONG_VERSION_PY = {} +-HANDLERS = {} ++LONG_VERSION_PY: Dict[str, str] = {} ++HANDLERS: Dict[str, Dict[str, Callable]] = {} + + +-def register_vcs_handler(vcs, method): # decorator +- """Decorator to mark a method as the handler for a particular VCS.""" +- def decorate(f): ++def register_vcs_handler(vcs: str, method: str) -> Callable: # decorator ++ """Create decorator to mark a method as the handler of a VCS.""" ++ ++ def decorate(f: Callable) -> Callable: + """Store f in HANDLERS[vcs][method].""" +- if vcs not in HANDLERS: +- HANDLERS[vcs] = {} +- HANDLERS[vcs][method] = f ++ HANDLERS.setdefault(vcs, {})[method] = f + return f ++ + return decorate + + +-def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, +- env=None): ++def run_command( ++ commands: List[str], ++ args: List[str], ++ cwd: Optional[str] = None, ++ verbose: bool = False, ++ hide_stderr: bool = False, ++ env: Optional[Dict[str, str]] = None, ++) -> Tuple[Optional[str], Optional[int]]: + """Call the given command(s).""" + assert isinstance(commands, list) +- p = None +- for c in commands: ++ process = None ++ ++ popen_kwargs: Dict[str, Any] = {} ++ if sys.platform == "win32": ++ # This hides the console window if pythonw.exe is used ++ startupinfo = subprocess.STARTUPINFO() ++ startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW ++ popen_kwargs["startupinfo"] = startupinfo ++ ++ for command in commands: + try: +- dispcmd = str([c] + args) ++ dispcmd = str([command] + args) + # remember shell=False, so use git.cmd on windows, not just git +- p = subprocess.Popen([c] + args, cwd=cwd, env=env, +- stdout=subprocess.PIPE, +- stderr=(subprocess.PIPE if hide_stderr +- else None)) ++ process = subprocess.Popen( ++ [command] + args, ++ cwd=cwd, ++ env=env, ++ stdout=subprocess.PIPE, ++ stderr=(subprocess.PIPE if hide_stderr else None), ++ **popen_kwargs, ++ ) + break +- except EnvironmentError: +- e = sys.exc_info()[1] ++ except OSError as e: + if e.errno == errno.ENOENT: + continue + if verbose: +@@ -407,26 +505,27 @@ def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, + if verbose: + print("unable to find command, tried %s" % (commands,)) + return None, None +- stdout = p.communicate()[0].strip() +- if sys.version_info[0] >= 3: +- stdout = stdout.decode() +- if p.returncode != 0: ++ stdout = process.communicate()[0].strip().decode() ++ if process.returncode != 0: + if verbose: + print("unable to run %s (error)" % dispcmd) + print("stdout was %s" % stdout) +- return None, p.returncode +- return stdout, p.returncode ++ return None, process.returncode ++ return stdout, process.returncode + + +-LONG_VERSION_PY['git'] = ''' ++LONG_VERSION_PY[ ++ "git" ++] = r''' + # This file helps to compute a version number in source trees obtained from + # git-archive tarball (such as those provided by githubs download-from-tag + # feature). Distribution tarballs (built by setup.py sdist) and build + # directories (produced by setup.py build) will contain a much shorter file + # that just contains the computed version number. + +-# This file is released into the public domain. Generated by +-# versioneer-0.18 (https://github.com/warner/python-versioneer) ++# This file is released into the public domain. ++# Generated by versioneer-0.29 ++# https://github.com/python-versioneer/python-versioneer + + """Git implementation of _version.py.""" + +@@ -435,9 +534,11 @@ import os + import re + import subprocess + import sys ++from typing import Any, Callable, Dict, List, Optional, Tuple ++import functools + + +-def get_keywords(): ++def get_keywords() -> Dict[str, str]: + """Get the keywords needed to look up the version information.""" + # these strings will be replaced by git during git-archive. + # setup.py/versioneer.py will grep for the variable names, so they must +@@ -453,8 +554,15 @@ def get_keywords(): + class VersioneerConfig: + """Container for Versioneer configuration parameters.""" + ++ VCS: str ++ style: str ++ tag_prefix: str ++ parentdir_prefix: str ++ versionfile_source: str ++ verbose: bool ++ + +-def get_config(): ++def get_config() -> VersioneerConfig: + """Create, populate and return the VersioneerConfig() object.""" + # these strings are filled in when 'setup.py versioneer' creates + # _version.py +@@ -472,13 +580,13 @@ class NotThisMethod(Exception): + """Exception raised if a method is not valid for the current scenario.""" + + +-LONG_VERSION_PY = {} +-HANDLERS = {} ++LONG_VERSION_PY: Dict[str, str] = {} ++HANDLERS: Dict[str, Dict[str, Callable]] = {} + + +-def register_vcs_handler(vcs, method): # decorator +- """Decorator to mark a method as the handler for a particular VCS.""" +- def decorate(f): ++def register_vcs_handler(vcs: str, method: str) -> Callable: # decorator ++ """Create decorator to mark a method as the handler of a VCS.""" ++ def decorate(f: Callable) -> Callable: + """Store f in HANDLERS[vcs][method].""" + if vcs not in HANDLERS: + HANDLERS[vcs] = {} +@@ -487,22 +595,35 @@ def register_vcs_handler(vcs, method): # decorator + return decorate + + +-def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, +- env=None): ++def run_command( ++ commands: List[str], ++ args: List[str], ++ cwd: Optional[str] = None, ++ verbose: bool = False, ++ hide_stderr: bool = False, ++ env: Optional[Dict[str, str]] = None, ++) -> Tuple[Optional[str], Optional[int]]: + """Call the given command(s).""" + assert isinstance(commands, list) +- p = None +- for c in commands: ++ process = None ++ ++ popen_kwargs: Dict[str, Any] = {} ++ if sys.platform == "win32": ++ # This hides the console window if pythonw.exe is used ++ startupinfo = subprocess.STARTUPINFO() ++ startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW ++ popen_kwargs["startupinfo"] = startupinfo ++ ++ for command in commands: + try: +- dispcmd = str([c] + args) ++ dispcmd = str([command] + args) + # remember shell=False, so use git.cmd on windows, not just git +- p = subprocess.Popen([c] + args, cwd=cwd, env=env, +- stdout=subprocess.PIPE, +- stderr=(subprocess.PIPE if hide_stderr +- else None)) ++ process = subprocess.Popen([command] + args, cwd=cwd, env=env, ++ stdout=subprocess.PIPE, ++ stderr=(subprocess.PIPE if hide_stderr ++ else None), **popen_kwargs) + break +- except EnvironmentError: +- e = sys.exc_info()[1] ++ except OSError as e: + if e.errno == errno.ENOENT: + continue + if verbose: +@@ -513,18 +634,20 @@ def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, + if verbose: + print("unable to find command, tried %%s" %% (commands,)) + return None, None +- stdout = p.communicate()[0].strip() +- if sys.version_info[0] >= 3: +- stdout = stdout.decode() +- if p.returncode != 0: ++ stdout = process.communicate()[0].strip().decode() ++ if process.returncode != 0: + if verbose: + print("unable to run %%s (error)" %% dispcmd) + print("stdout was %%s" %% stdout) +- return None, p.returncode +- return stdout, p.returncode ++ return None, process.returncode ++ return stdout, process.returncode + + +-def versions_from_parentdir(parentdir_prefix, root, verbose): ++def versions_from_parentdir( ++ parentdir_prefix: str, ++ root: str, ++ verbose: bool, ++) -> Dict[str, Any]: + """Try to determine the version from the parent directory name. + + Source tarballs conventionally unpack into a directory that includes both +@@ -533,15 +656,14 @@ def versions_from_parentdir(parentdir_prefix, root, verbose): + """ + rootdirs = [] + +- for i in range(3): ++ for _ in range(3): + dirname = os.path.basename(root) + if dirname.startswith(parentdir_prefix): + return {"version": dirname[len(parentdir_prefix):], + "full-revisionid": None, + "dirty": False, "error": None, "date": None} +- else: +- rootdirs.append(root) +- root = os.path.dirname(root) # up a level ++ rootdirs.append(root) ++ root = os.path.dirname(root) # up a level + + if verbose: + print("Tried directories %%s but none started with prefix %%s" %% +@@ -550,41 +672,48 @@ def versions_from_parentdir(parentdir_prefix, root, verbose): + + + @register_vcs_handler("git", "get_keywords") +-def git_get_keywords(versionfile_abs): ++def git_get_keywords(versionfile_abs: str) -> Dict[str, str]: + """Extract version information from the given file.""" + # the code embedded in _version.py can just fetch the value of these + # keywords. When used from setup.py, we don't want to import _version.py, + # so we do it with a regexp instead. This function is not used from + # _version.py. +- keywords = {} ++ keywords: Dict[str, str] = {} + try: +- f = open(versionfile_abs, "r") +- for line in f.readlines(): +- if line.strip().startswith("git_refnames ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["refnames"] = mo.group(1) +- if line.strip().startswith("git_full ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["full"] = mo.group(1) +- if line.strip().startswith("git_date ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["date"] = mo.group(1) +- f.close() +- except EnvironmentError: ++ with open(versionfile_abs, "r") as fobj: ++ for line in fobj: ++ if line.strip().startswith("git_refnames ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["refnames"] = mo.group(1) ++ if line.strip().startswith("git_full ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["full"] = mo.group(1) ++ if line.strip().startswith("git_date ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["date"] = mo.group(1) ++ except OSError: + pass + return keywords + + + @register_vcs_handler("git", "keywords") +-def git_versions_from_keywords(keywords, tag_prefix, verbose): ++def git_versions_from_keywords( ++ keywords: Dict[str, str], ++ tag_prefix: str, ++ verbose: bool, ++) -> Dict[str, Any]: + """Get version information from git keywords.""" +- if not keywords: +- raise NotThisMethod("no keywords at all, weird") ++ if "refnames" not in keywords: ++ raise NotThisMethod("Short version file found") + date = keywords.get("date") + if date is not None: ++ # Use only the last line. Previous lines may contain GPG signature ++ # information. ++ date = date.splitlines()[-1] ++ + # git-2.2.0 added "%%cI", which expands to an ISO-8601 -compliant + # datestamp. However we prefer "%%ci" (which expands to an "ISO-8601 + # -like" string, which we must then edit to make compliant), because +@@ -597,11 +726,11 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + if verbose: + print("keywords are unexpanded, not using") + raise NotThisMethod("unexpanded keywords, not a git-archive tarball") +- refs = set([r.strip() for r in refnames.strip("()").split(",")]) ++ refs = {r.strip() for r in refnames.strip("()").split(",")} + # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of + # just "foo-1.0". If we see a "tag: " prefix, prefer those. + TAG = "tag: " +- tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)]) ++ tags = {r[len(TAG):] for r in refs if r.startswith(TAG)} + if not tags: + # Either we're using git < 1.8.3, or there really are no tags. We use + # a heuristic: assume all version tags have a digit. The old git %%d +@@ -610,7 +739,7 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + # between branches and tags. By ignoring refnames without digits, we + # filter out many common branch names like "release" and + # "stabilization", as well as "HEAD" and "master". +- tags = set([r for r in refs if re.search(r'\d', r)]) ++ tags = {r for r in refs if re.search(r'\d', r)} + if verbose: + print("discarding '%%s', no digits" %% ",".join(refs - tags)) + if verbose: +@@ -619,6 +748,11 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + # sorting will prefer e.g. "2.0" over "2.0rc1" + if ref.startswith(tag_prefix): + r = ref[len(tag_prefix):] ++ # Filter out refs that exactly match prefix or that don't start ++ # with a number once the prefix is stripped (mostly a concern ++ # when prefix is '') ++ if not re.match(r'\d', r): ++ continue + if verbose: + print("picking %%s" %% r) + return {"version": r, +@@ -634,7 +768,12 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + + + @register_vcs_handler("git", "pieces_from_vcs") +-def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): ++def git_pieces_from_vcs( ++ tag_prefix: str, ++ root: str, ++ verbose: bool, ++ runner: Callable = run_command ++) -> Dict[str, Any]: + """Get version from 'git describe' in the root of the source tree. + + This only gets called if the git-archive 'subst' keywords were *not* +@@ -645,8 +784,15 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + if sys.platform == "win32": + GITS = ["git.cmd", "git.exe"] + +- out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root, +- hide_stderr=True) ++ # GIT_DIR can interfere with correct operation of Versioneer. ++ # It may be intended to be passed to the Versioneer-versioned project, ++ # but that should not change where we get our version from. ++ env = os.environ.copy() ++ env.pop("GIT_DIR", None) ++ runner = functools.partial(runner, env=env) ++ ++ _, rc = runner(GITS, ["rev-parse", "--git-dir"], cwd=root, ++ hide_stderr=not verbose) + if rc != 0: + if verbose: + print("Directory %%s not under git control" %% root) +@@ -654,24 +800,57 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + + # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty] + # if there isn't one, this yields HEX[-dirty] (no NUM) +- describe_out, rc = run_command(GITS, ["describe", "--tags", "--dirty", +- "--always", "--long", +- "--match", "%%s*" %% tag_prefix], +- cwd=root) ++ describe_out, rc = runner(GITS, [ ++ "describe", "--tags", "--dirty", "--always", "--long", ++ "--match", f"{tag_prefix}[[:digit:]]*" ++ ], cwd=root) + # --long was added in git-1.5.5 + if describe_out is None: + raise NotThisMethod("'git describe' failed") + describe_out = describe_out.strip() +- full_out, rc = run_command(GITS, ["rev-parse", "HEAD"], cwd=root) ++ full_out, rc = runner(GITS, ["rev-parse", "HEAD"], cwd=root) + if full_out is None: + raise NotThisMethod("'git rev-parse' failed") + full_out = full_out.strip() + +- pieces = {} ++ pieces: Dict[str, Any] = {} + pieces["long"] = full_out + pieces["short"] = full_out[:7] # maybe improved later + pieces["error"] = None + ++ branch_name, rc = runner(GITS, ["rev-parse", "--abbrev-ref", "HEAD"], ++ cwd=root) ++ # --abbrev-ref was added in git-1.6.3 ++ if rc != 0 or branch_name is None: ++ raise NotThisMethod("'git rev-parse --abbrev-ref' returned error") ++ branch_name = branch_name.strip() ++ ++ if branch_name == "HEAD": ++ # If we aren't exactly on a branch, pick a branch which represents ++ # the current commit. If all else fails, we are on a branchless ++ # commit. ++ branches, rc = runner(GITS, ["branch", "--contains"], cwd=root) ++ # --contains was added in git-1.5.4 ++ if rc != 0 or branches is None: ++ raise NotThisMethod("'git branch --contains' returned error") ++ branches = branches.split("\n") ++ ++ # Remove the first line if we're running detached ++ if "(" in branches[0]: ++ branches.pop(0) ++ ++ # Strip off the leading "* " from the list of branches. ++ branches = [branch[2:] for branch in branches] ++ if "master" in branches: ++ branch_name = "master" ++ elif not branches: ++ branch_name = None ++ else: ++ # Pick the first branch that is returned. Good or bad. ++ branch_name = branches[0] ++ ++ pieces["branch"] = branch_name ++ + # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty] + # TAG might have hyphens. + git_describe = describe_out +@@ -688,7 +867,7 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + # TAG-NUM-gHEX + mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe) + if not mo: +- # unparseable. Maybe git-describe is misbehaving? ++ # unparsable. Maybe git-describe is misbehaving? + pieces["error"] = ("unable to parse git-describe output: '%%s'" + %% describe_out) + return pieces +@@ -713,26 +892,27 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + else: + # HEX: no tags + pieces["closest-tag"] = None +- count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"], +- cwd=root) +- pieces["distance"] = int(count_out) # total number of commits ++ out, rc = runner(GITS, ["rev-list", "HEAD", "--left-right"], cwd=root) ++ pieces["distance"] = len(out.split()) # total number of commits + + # commit date: see ISO-8601 comment in git_versions_from_keywords() +- date = run_command(GITS, ["show", "-s", "--format=%%ci", "HEAD"], +- cwd=root)[0].strip() ++ date = runner(GITS, ["show", "-s", "--format=%%ci", "HEAD"], cwd=root)[0].strip() ++ # Use only the last line. Previous lines may contain GPG signature ++ # information. ++ date = date.splitlines()[-1] + pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1) + + return pieces + + +-def plus_or_dot(pieces): ++def plus_or_dot(pieces: Dict[str, Any]) -> str: + """Return a + if we don't already have one, else return a .""" + if "+" in pieces.get("closest-tag", ""): + return "." + return "+" + + +-def render_pep440(pieces): ++def render_pep440(pieces: Dict[str, Any]) -> str: + """Build up version string, with post-release "local version identifier". + + Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you +@@ -757,23 +937,71 @@ def render_pep440(pieces): + return rendered + + +-def render_pep440_pre(pieces): +- """TAG[.post.devDISTANCE] -- No -dirty. ++def render_pep440_branch(pieces: Dict[str, Any]) -> str: ++ """TAG[[.dev0]+DISTANCE.gHEX[.dirty]] . ++ ++ The ".dev0" means not master branch. Note that .dev0 sorts backwards ++ (a feature branch will appear "older" than the master branch). + + Exceptions: +- 1: no tags. 0.post.devDISTANCE ++ 1: no tags. 0[.dev0]+untagged.DISTANCE.gHEX[.dirty] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] ++ if pieces["distance"] or pieces["dirty"]: ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += plus_or_dot(pieces) ++ rendered += "%%d.g%%s" %% (pieces["distance"], pieces["short"]) ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ else: ++ # exception #1 ++ rendered = "0" ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += "+untagged.%%d.g%%s" %% (pieces["distance"], ++ pieces["short"]) ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ return rendered ++ ++ ++def pep440_split_post(ver: str) -> Tuple[str, Optional[int]]: ++ """Split pep440 version string at the post-release segment. ++ ++ Returns the release segments before the post-release and the ++ post-release version number (or -1 if no post-release segment is present). ++ """ ++ vc = str.split(ver, ".post") ++ return vc[0], int(vc[1] or 0) if len(vc) == 2 else None ++ ++ ++def render_pep440_pre(pieces: Dict[str, Any]) -> str: ++ """TAG[.postN.devDISTANCE] -- No -dirty. ++ ++ Exceptions: ++ 1: no tags. 0.post0.devDISTANCE ++ """ ++ if pieces["closest-tag"]: + if pieces["distance"]: +- rendered += ".post.dev%%d" %% pieces["distance"] ++ # update the post release segment ++ tag_version, post_version = pep440_split_post(pieces["closest-tag"]) ++ rendered = tag_version ++ if post_version is not None: ++ rendered += ".post%%d.dev%%d" %% (post_version + 1, pieces["distance"]) ++ else: ++ rendered += ".post0.dev%%d" %% (pieces["distance"]) ++ else: ++ # no commits, use the tag as the version ++ rendered = pieces["closest-tag"] + else: + # exception #1 +- rendered = "0.post.dev%%d" %% pieces["distance"] ++ rendered = "0.post0.dev%%d" %% pieces["distance"] + return rendered + + +-def render_pep440_post(pieces): ++def render_pep440_post(pieces: Dict[str, Any]) -> str: + """TAG[.postDISTANCE[.dev0]+gHEX] . + + The ".dev0" means dirty. Note that .dev0 sorts backwards +@@ -800,12 +1028,41 @@ def render_pep440_post(pieces): + return rendered + + +-def render_pep440_old(pieces): ++def render_pep440_post_branch(pieces: Dict[str, Any]) -> str: ++ """TAG[.postDISTANCE[.dev0]+gHEX[.dirty]] . ++ ++ The ".dev0" means not master branch. ++ ++ Exceptions: ++ 1: no tags. 0.postDISTANCE[.dev0]+gHEX[.dirty] ++ """ ++ if pieces["closest-tag"]: ++ rendered = pieces["closest-tag"] ++ if pieces["distance"] or pieces["dirty"]: ++ rendered += ".post%%d" %% pieces["distance"] ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += plus_or_dot(pieces) ++ rendered += "g%%s" %% pieces["short"] ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ else: ++ # exception #1 ++ rendered = "0.post%%d" %% pieces["distance"] ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += "+g%%s" %% pieces["short"] ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ return rendered ++ ++ ++def render_pep440_old(pieces: Dict[str, Any]) -> str: + """TAG[.postDISTANCE[.dev0]] . + + The ".dev0" means dirty. + +- Eexceptions: ++ Exceptions: + 1: no tags. 0.postDISTANCE[.dev0] + """ + if pieces["closest-tag"]: +@@ -822,7 +1079,7 @@ def render_pep440_old(pieces): + return rendered + + +-def render_git_describe(pieces): ++def render_git_describe(pieces: Dict[str, Any]) -> str: + """TAG[-DISTANCE-gHEX][-dirty]. + + Like 'git describe --tags --dirty --always'. +@@ -842,7 +1099,7 @@ def render_git_describe(pieces): + return rendered + + +-def render_git_describe_long(pieces): ++def render_git_describe_long(pieces: Dict[str, Any]) -> str: + """TAG-DISTANCE-gHEX[-dirty]. + + Like 'git describe --tags --dirty --always -long'. +@@ -862,7 +1119,7 @@ def render_git_describe_long(pieces): + return rendered + + +-def render(pieces, style): ++def render(pieces: Dict[str, Any], style: str) -> Dict[str, Any]: + """Render the given version pieces into the requested style.""" + if pieces["error"]: + return {"version": "unknown", +@@ -876,10 +1133,14 @@ def render(pieces, style): + + if style == "pep440": + rendered = render_pep440(pieces) ++ elif style == "pep440-branch": ++ rendered = render_pep440_branch(pieces) + elif style == "pep440-pre": + rendered = render_pep440_pre(pieces) + elif style == "pep440-post": + rendered = render_pep440_post(pieces) ++ elif style == "pep440-post-branch": ++ rendered = render_pep440_post_branch(pieces) + elif style == "pep440-old": + rendered = render_pep440_old(pieces) + elif style == "git-describe": +@@ -894,7 +1155,7 @@ def render(pieces, style): + "date": pieces.get("date")} + + +-def get_versions(): ++def get_versions() -> Dict[str, Any]: + """Get version information or return default if unable to do so.""" + # I am in _version.py, which lives at ROOT/VERSIONFILE_SOURCE. If we have + # __file__, we can work backwards from there to the root. Some +@@ -915,7 +1176,7 @@ def get_versions(): + # versionfile_source is the relative path from the top of the source + # tree (where the .git directory might live) to this file. Invert + # this to find the root from __file__. +- for i in cfg.versionfile_source.split('/'): ++ for _ in cfg.versionfile_source.split('/'): + root = os.path.dirname(root) + except NameError: + return {"version": "0+unknown", "full-revisionid": None, +@@ -942,41 +1203,48 @@ def get_versions(): + + + @register_vcs_handler("git", "get_keywords") +-def git_get_keywords(versionfile_abs): ++def git_get_keywords(versionfile_abs: str) -> Dict[str, str]: + """Extract version information from the given file.""" + # the code embedded in _version.py can just fetch the value of these + # keywords. When used from setup.py, we don't want to import _version.py, + # so we do it with a regexp instead. This function is not used from + # _version.py. +- keywords = {} ++ keywords: Dict[str, str] = {} + try: +- f = open(versionfile_abs, "r") +- for line in f.readlines(): +- if line.strip().startswith("git_refnames ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["refnames"] = mo.group(1) +- if line.strip().startswith("git_full ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["full"] = mo.group(1) +- if line.strip().startswith("git_date ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["date"] = mo.group(1) +- f.close() +- except EnvironmentError: ++ with open(versionfile_abs, "r") as fobj: ++ for line in fobj: ++ if line.strip().startswith("git_refnames ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["refnames"] = mo.group(1) ++ if line.strip().startswith("git_full ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["full"] = mo.group(1) ++ if line.strip().startswith("git_date ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["date"] = mo.group(1) ++ except OSError: + pass + return keywords + + + @register_vcs_handler("git", "keywords") +-def git_versions_from_keywords(keywords, tag_prefix, verbose): ++def git_versions_from_keywords( ++ keywords: Dict[str, str], ++ tag_prefix: str, ++ verbose: bool, ++) -> Dict[str, Any]: + """Get version information from git keywords.""" +- if not keywords: +- raise NotThisMethod("no keywords at all, weird") ++ if "refnames" not in keywords: ++ raise NotThisMethod("Short version file found") + date = keywords.get("date") + if date is not None: ++ # Use only the last line. Previous lines may contain GPG signature ++ # information. ++ date = date.splitlines()[-1] ++ + # git-2.2.0 added "%cI", which expands to an ISO-8601 -compliant + # datestamp. However we prefer "%ci" (which expands to an "ISO-8601 + # -like" string, which we must then edit to make compliant), because +@@ -989,11 +1257,11 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + if verbose: + print("keywords are unexpanded, not using") + raise NotThisMethod("unexpanded keywords, not a git-archive tarball") +- refs = set([r.strip() for r in refnames.strip("()").split(",")]) ++ refs = {r.strip() for r in refnames.strip("()").split(",")} + # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of + # just "foo-1.0". If we see a "tag: " prefix, prefer those. + TAG = "tag: " +- tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)]) ++ tags = {r[len(TAG) :] for r in refs if r.startswith(TAG)} + if not tags: + # Either we're using git < 1.8.3, or there really are no tags. We use + # a heuristic: assume all version tags have a digit. The old git %d +@@ -1002,7 +1270,7 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + # between branches and tags. By ignoring refnames without digits, we + # filter out many common branch names like "release" and + # "stabilization", as well as "HEAD" and "master". +- tags = set([r for r in refs if re.search(r'\d', r)]) ++ tags = {r for r in refs if re.search(r"\d", r)} + if verbose: + print("discarding '%s', no digits" % ",".join(refs - tags)) + if verbose: +@@ -1010,23 +1278,37 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + for ref in sorted(tags): + # sorting will prefer e.g. "2.0" over "2.0rc1" + if ref.startswith(tag_prefix): +- r = ref[len(tag_prefix):] ++ r = ref[len(tag_prefix) :] ++ # Filter out refs that exactly match prefix or that don't start ++ # with a number once the prefix is stripped (mostly a concern ++ # when prefix is '') ++ if not re.match(r"\d", r): ++ continue + if verbose: + print("picking %s" % r) +- return {"version": r, +- "full-revisionid": keywords["full"].strip(), +- "dirty": False, "error": None, +- "date": date} ++ return { ++ "version": r, ++ "full-revisionid": keywords["full"].strip(), ++ "dirty": False, ++ "error": None, ++ "date": date, ++ } + # no suitable tags, so version is "0+unknown", but full hex is still there + if verbose: + print("no suitable tags, using unknown + full revision id") +- return {"version": "0+unknown", +- "full-revisionid": keywords["full"].strip(), +- "dirty": False, "error": "no suitable tags", "date": None} ++ return { ++ "version": "0+unknown", ++ "full-revisionid": keywords["full"].strip(), ++ "dirty": False, ++ "error": "no suitable tags", ++ "date": None, ++ } + + + @register_vcs_handler("git", "pieces_from_vcs") +-def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): ++def git_pieces_from_vcs( ++ tag_prefix: str, root: str, verbose: bool, runner: Callable = run_command ++) -> Dict[str, Any]: + """Get version from 'git describe' in the root of the source tree. + + This only gets called if the git-archive 'subst' keywords were *not* +@@ -1037,8 +1319,14 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + if sys.platform == "win32": + GITS = ["git.cmd", "git.exe"] + +- out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root, +- hide_stderr=True) ++ # GIT_DIR can interfere with correct operation of Versioneer. ++ # It may be intended to be passed to the Versioneer-versioned project, ++ # but that should not change where we get our version from. ++ env = os.environ.copy() ++ env.pop("GIT_DIR", None) ++ runner = functools.partial(runner, env=env) ++ ++ _, rc = runner(GITS, ["rev-parse", "--git-dir"], cwd=root, hide_stderr=not verbose) + if rc != 0: + if verbose: + print("Directory %s not under git control" % root) +@@ -1046,24 +1334,65 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + + # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty] + # if there isn't one, this yields HEX[-dirty] (no NUM) +- describe_out, rc = run_command(GITS, ["describe", "--tags", "--dirty", +- "--always", "--long", +- "--match", "%s*" % tag_prefix], +- cwd=root) ++ describe_out, rc = runner( ++ GITS, ++ [ ++ "describe", ++ "--tags", ++ "--dirty", ++ "--always", ++ "--long", ++ "--match", ++ f"{tag_prefix}[[:digit:]]*", ++ ], ++ cwd=root, ++ ) + # --long was added in git-1.5.5 + if describe_out is None: + raise NotThisMethod("'git describe' failed") + describe_out = describe_out.strip() +- full_out, rc = run_command(GITS, ["rev-parse", "HEAD"], cwd=root) ++ full_out, rc = runner(GITS, ["rev-parse", "HEAD"], cwd=root) + if full_out is None: + raise NotThisMethod("'git rev-parse' failed") + full_out = full_out.strip() + +- pieces = {} ++ pieces: Dict[str, Any] = {} + pieces["long"] = full_out + pieces["short"] = full_out[:7] # maybe improved later + pieces["error"] = None + ++ branch_name, rc = runner(GITS, ["rev-parse", "--abbrev-ref", "HEAD"], cwd=root) ++ # --abbrev-ref was added in git-1.6.3 ++ if rc != 0 or branch_name is None: ++ raise NotThisMethod("'git rev-parse --abbrev-ref' returned error") ++ branch_name = branch_name.strip() ++ ++ if branch_name == "HEAD": ++ # If we aren't exactly on a branch, pick a branch which represents ++ # the current commit. If all else fails, we are on a branchless ++ # commit. ++ branches, rc = runner(GITS, ["branch", "--contains"], cwd=root) ++ # --contains was added in git-1.5.4 ++ if rc != 0 or branches is None: ++ raise NotThisMethod("'git branch --contains' returned error") ++ branches = branches.split("\n") ++ ++ # Remove the first line if we're running detached ++ if "(" in branches[0]: ++ branches.pop(0) ++ ++ # Strip off the leading "* " from the list of branches. ++ branches = [branch[2:] for branch in branches] ++ if "master" in branches: ++ branch_name = "master" ++ elif not branches: ++ branch_name = None ++ else: ++ # Pick the first branch that is returned. Good or bad. ++ branch_name = branches[0] ++ ++ pieces["branch"] = branch_name ++ + # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty] + # TAG might have hyphens. + git_describe = describe_out +@@ -1072,17 +1401,16 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + dirty = git_describe.endswith("-dirty") + pieces["dirty"] = dirty + if dirty: +- git_describe = git_describe[:git_describe.rindex("-dirty")] ++ git_describe = git_describe[: git_describe.rindex("-dirty")] + + # now we have TAG-NUM-gHEX or HEX + + if "-" in git_describe: + # TAG-NUM-gHEX +- mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe) ++ mo = re.search(r"^(.+)-(\d+)-g([0-9a-f]+)$", git_describe) + if not mo: +- # unparseable. Maybe git-describe is misbehaving? +- pieces["error"] = ("unable to parse git-describe output: '%s'" +- % describe_out) ++ # unparsable. Maybe git-describe is misbehaving? ++ pieces["error"] = "unable to parse git-describe output: '%s'" % describe_out + return pieces + + # tag +@@ -1091,10 +1419,12 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + if verbose: + fmt = "tag '%s' doesn't start with prefix '%s'" + print(fmt % (full_tag, tag_prefix)) +- pieces["error"] = ("tag '%s' doesn't start with prefix '%s'" +- % (full_tag, tag_prefix)) ++ pieces["error"] = "tag '%s' doesn't start with prefix '%s'" % ( ++ full_tag, ++ tag_prefix, ++ ) + return pieces +- pieces["closest-tag"] = full_tag[len(tag_prefix):] ++ pieces["closest-tag"] = full_tag[len(tag_prefix) :] + + # distance: number of commits since tag + pieces["distance"] = int(mo.group(2)) +@@ -1105,19 +1435,20 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + else: + # HEX: no tags + pieces["closest-tag"] = None +- count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"], +- cwd=root) +- pieces["distance"] = int(count_out) # total number of commits ++ out, rc = runner(GITS, ["rev-list", "HEAD", "--left-right"], cwd=root) ++ pieces["distance"] = len(out.split()) # total number of commits + + # commit date: see ISO-8601 comment in git_versions_from_keywords() +- date = run_command(GITS, ["show", "-s", "--format=%ci", "HEAD"], +- cwd=root)[0].strip() ++ date = runner(GITS, ["show", "-s", "--format=%ci", "HEAD"], cwd=root)[0].strip() ++ # Use only the last line. Previous lines may contain GPG signature ++ # information. ++ date = date.splitlines()[-1] + pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1) + + return pieces + + +-def do_vcs_install(manifest_in, versionfile_source, ipy): ++def do_vcs_install(versionfile_source: str, ipy: Optional[str]) -> None: + """Git-specific installation logic for Versioneer. + + For Git, this means creating/changing .gitattributes to mark _version.py +@@ -1126,36 +1457,40 @@ def do_vcs_install(manifest_in, versionfile_source, ipy): + GITS = ["git"] + if sys.platform == "win32": + GITS = ["git.cmd", "git.exe"] +- files = [manifest_in, versionfile_source] ++ files = [versionfile_source] + if ipy: + files.append(ipy) +- try: +- me = __file__ +- if me.endswith(".pyc") or me.endswith(".pyo"): +- me = os.path.splitext(me)[0] + ".py" +- versioneer_file = os.path.relpath(me) +- except NameError: +- versioneer_file = "versioneer.py" +- files.append(versioneer_file) ++ if "VERSIONEER_PEP518" not in globals(): ++ try: ++ my_path = __file__ ++ if my_path.endswith((".pyc", ".pyo")): ++ my_path = os.path.splitext(my_path)[0] + ".py" ++ versioneer_file = os.path.relpath(my_path) ++ except NameError: ++ versioneer_file = "versioneer.py" ++ files.append(versioneer_file) + present = False + try: +- f = open(".gitattributes", "r") +- for line in f.readlines(): +- if line.strip().startswith(versionfile_source): +- if "export-subst" in line.strip().split()[1:]: +- present = True +- f.close() +- except EnvironmentError: ++ with open(".gitattributes", "r") as fobj: ++ for line in fobj: ++ if line.strip().startswith(versionfile_source): ++ if "export-subst" in line.strip().split()[1:]: ++ present = True ++ break ++ except OSError: + pass + if not present: +- f = open(".gitattributes", "a+") +- f.write("%s export-subst\n" % versionfile_source) +- f.close() ++ with open(".gitattributes", "a+") as fobj: ++ fobj.write(f"{versionfile_source} export-subst\n") + files.append(".gitattributes") + run_command(GITS, ["add", "--"] + files) + + +-def versions_from_parentdir(parentdir_prefix, root, verbose): ++def versions_from_parentdir( ++ parentdir_prefix: str, ++ root: str, ++ verbose: bool, ++) -> Dict[str, Any]: + """Try to determine the version from the parent directory name. + + Source tarballs conventionally unpack into a directory that includes both +@@ -1164,24 +1499,29 @@ def versions_from_parentdir(parentdir_prefix, root, verbose): + """ + rootdirs = [] + +- for i in range(3): ++ for _ in range(3): + dirname = os.path.basename(root) + if dirname.startswith(parentdir_prefix): +- return {"version": dirname[len(parentdir_prefix):], +- "full-revisionid": None, +- "dirty": False, "error": None, "date": None} +- else: +- rootdirs.append(root) +- root = os.path.dirname(root) # up a level ++ return { ++ "version": dirname[len(parentdir_prefix) :], ++ "full-revisionid": None, ++ "dirty": False, ++ "error": None, ++ "date": None, ++ } ++ rootdirs.append(root) ++ root = os.path.dirname(root) # up a level + + if verbose: +- print("Tried directories %s but none started with prefix %s" % +- (str(rootdirs), parentdir_prefix)) ++ print( ++ "Tried directories %s but none started with prefix %s" ++ % (str(rootdirs), parentdir_prefix) ++ ) + raise NotThisMethod("rootdir doesn't start with parentdir_prefix") + + + SHORT_VERSION_PY = """ +-# This file was generated by 'versioneer.py' (0.18) from ++# This file was generated by 'versioneer.py' (0.29) from + # revision-control system data, or from the parent directory name of an + # unpacked source archive. Distribution tarballs contain a pre-generated copy + # of this file. +@@ -1198,42 +1538,42 @@ def get_versions(): + """ + + +-def versions_from_file(filename): ++def versions_from_file(filename: str) -> Dict[str, Any]: + """Try to determine the version from _version.py if present.""" + try: + with open(filename) as f: + contents = f.read() +- except EnvironmentError: ++ except OSError: + raise NotThisMethod("unable to read _version.py") +- mo = re.search(r"version_json = '''\n(.*)''' # END VERSION_JSON", +- contents, re.M | re.S) ++ mo = re.search( ++ r"version_json = '''\n(.*)''' # END VERSION_JSON", contents, re.M | re.S ++ ) + if not mo: +- mo = re.search(r"version_json = '''\r\n(.*)''' # END VERSION_JSON", +- contents, re.M | re.S) ++ mo = re.search( ++ r"version_json = '''\r\n(.*)''' # END VERSION_JSON", contents, re.M | re.S ++ ) + if not mo: + raise NotThisMethod("no version_json in _version.py") + return json.loads(mo.group(1)) + + +-def write_to_version_file(filename, versions): ++def write_to_version_file(filename: str, versions: Dict[str, Any]) -> None: + """Write the given version number to the given _version.py file.""" +- os.unlink(filename) +- contents = json.dumps(versions, sort_keys=True, +- indent=1, separators=(",", ": ")) ++ contents = json.dumps(versions, sort_keys=True, indent=1, separators=(",", ": ")) + with open(filename, "w") as f: + f.write(SHORT_VERSION_PY % contents) + + print("set %s to '%s'" % (filename, versions["version"])) + + +-def plus_or_dot(pieces): ++def plus_or_dot(pieces: Dict[str, Any]) -> str: + """Return a + if we don't already have one, else return a .""" + if "+" in pieces.get("closest-tag", ""): + return "." + return "+" + + +-def render_pep440(pieces): ++def render_pep440(pieces: Dict[str, Any]) -> str: + """Build up version string, with post-release "local version identifier". + + Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you +@@ -1251,30 +1591,76 @@ def render_pep440(pieces): + rendered += ".dirty" + else: + # exception #1 +- rendered = "0+untagged.%d.g%s" % (pieces["distance"], +- pieces["short"]) ++ rendered = "0+untagged.%d.g%s" % (pieces["distance"], pieces["short"]) + if pieces["dirty"]: + rendered += ".dirty" + return rendered + + +-def render_pep440_pre(pieces): +- """TAG[.post.devDISTANCE] -- No -dirty. ++def render_pep440_branch(pieces: Dict[str, Any]) -> str: ++ """TAG[[.dev0]+DISTANCE.gHEX[.dirty]] . ++ ++ The ".dev0" means not master branch. Note that .dev0 sorts backwards ++ (a feature branch will appear "older" than the master branch). + + Exceptions: +- 1: no tags. 0.post.devDISTANCE ++ 1: no tags. 0[.dev0]+untagged.DISTANCE.gHEX[.dirty] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] ++ if pieces["distance"] or pieces["dirty"]: ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += plus_or_dot(pieces) ++ rendered += "%d.g%s" % (pieces["distance"], pieces["short"]) ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ else: ++ # exception #1 ++ rendered = "0" ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += "+untagged.%d.g%s" % (pieces["distance"], pieces["short"]) ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ return rendered ++ ++ ++def pep440_split_post(ver: str) -> Tuple[str, Optional[int]]: ++ """Split pep440 version string at the post-release segment. ++ ++ Returns the release segments before the post-release and the ++ post-release version number (or -1 if no post-release segment is present). ++ """ ++ vc = str.split(ver, ".post") ++ return vc[0], int(vc[1] or 0) if len(vc) == 2 else None ++ ++ ++def render_pep440_pre(pieces: Dict[str, Any]) -> str: ++ """TAG[.postN.devDISTANCE] -- No -dirty. ++ ++ Exceptions: ++ 1: no tags. 0.post0.devDISTANCE ++ """ ++ if pieces["closest-tag"]: + if pieces["distance"]: +- rendered += ".post.dev%d" % pieces["distance"] ++ # update the post release segment ++ tag_version, post_version = pep440_split_post(pieces["closest-tag"]) ++ rendered = tag_version ++ if post_version is not None: ++ rendered += ".post%d.dev%d" % (post_version + 1, pieces["distance"]) ++ else: ++ rendered += ".post0.dev%d" % (pieces["distance"]) ++ else: ++ # no commits, use the tag as the version ++ rendered = pieces["closest-tag"] + else: + # exception #1 +- rendered = "0.post.dev%d" % pieces["distance"] ++ rendered = "0.post0.dev%d" % pieces["distance"] + return rendered + + +-def render_pep440_post(pieces): ++def render_pep440_post(pieces: Dict[str, Any]) -> str: + """TAG[.postDISTANCE[.dev0]+gHEX] . + + The ".dev0" means dirty. Note that .dev0 sorts backwards +@@ -1301,12 +1687,41 @@ def render_pep440_post(pieces): + return rendered + + +-def render_pep440_old(pieces): ++def render_pep440_post_branch(pieces: Dict[str, Any]) -> str: ++ """TAG[.postDISTANCE[.dev0]+gHEX[.dirty]] . ++ ++ The ".dev0" means not master branch. ++ ++ Exceptions: ++ 1: no tags. 0.postDISTANCE[.dev0]+gHEX[.dirty] ++ """ ++ if pieces["closest-tag"]: ++ rendered = pieces["closest-tag"] ++ if pieces["distance"] or pieces["dirty"]: ++ rendered += ".post%d" % pieces["distance"] ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += plus_or_dot(pieces) ++ rendered += "g%s" % pieces["short"] ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ else: ++ # exception #1 ++ rendered = "0.post%d" % pieces["distance"] ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += "+g%s" % pieces["short"] ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ return rendered ++ ++ ++def render_pep440_old(pieces: Dict[str, Any]) -> str: + """TAG[.postDISTANCE[.dev0]] . + + The ".dev0" means dirty. + +- Eexceptions: ++ Exceptions: + 1: no tags. 0.postDISTANCE[.dev0] + """ + if pieces["closest-tag"]: +@@ -1323,7 +1738,7 @@ def render_pep440_old(pieces): + return rendered + + +-def render_git_describe(pieces): ++def render_git_describe(pieces: Dict[str, Any]) -> str: + """TAG[-DISTANCE-gHEX][-dirty]. + + Like 'git describe --tags --dirty --always'. +@@ -1343,7 +1758,7 @@ def render_git_describe(pieces): + return rendered + + +-def render_git_describe_long(pieces): ++def render_git_describe_long(pieces: Dict[str, Any]) -> str: + """TAG-DISTANCE-gHEX[-dirty]. + + Like 'git describe --tags --dirty --always -long'. +@@ -1363,24 +1778,30 @@ def render_git_describe_long(pieces): + return rendered + + +-def render(pieces, style): ++def render(pieces: Dict[str, Any], style: str) -> Dict[str, Any]: + """Render the given version pieces into the requested style.""" + if pieces["error"]: +- return {"version": "unknown", +- "full-revisionid": pieces.get("long"), +- "dirty": None, +- "error": pieces["error"], +- "date": None} ++ return { ++ "version": "unknown", ++ "full-revisionid": pieces.get("long"), ++ "dirty": None, ++ "error": pieces["error"], ++ "date": None, ++ } + + if not style or style == "default": + style = "pep440" # the default + + if style == "pep440": + rendered = render_pep440(pieces) ++ elif style == "pep440-branch": ++ rendered = render_pep440_branch(pieces) + elif style == "pep440-pre": + rendered = render_pep440_pre(pieces) + elif style == "pep440-post": + rendered = render_pep440_post(pieces) ++ elif style == "pep440-post-branch": ++ rendered = render_pep440_post_branch(pieces) + elif style == "pep440-old": + rendered = render_pep440_old(pieces) + elif style == "git-describe": +@@ -1390,16 +1811,20 @@ def render(pieces, style): + else: + raise ValueError("unknown style '%s'" % style) + +- return {"version": rendered, "full-revisionid": pieces["long"], +- "dirty": pieces["dirty"], "error": None, +- "date": pieces.get("date")} ++ return { ++ "version": rendered, ++ "full-revisionid": pieces["long"], ++ "dirty": pieces["dirty"], ++ "error": None, ++ "date": pieces.get("date"), ++ } + + + class VersioneerBadRootError(Exception): + """The project root directory is unknown or missing key files.""" + + +-def get_versions(verbose=False): ++def get_versions(verbose: bool = False) -> Dict[str, Any]: + """Get the project version from whatever source is available. + + Returns dict with two keys: 'version' and 'full'. +@@ -1414,9 +1839,10 @@ def get_versions(verbose=False): + assert cfg.VCS is not None, "please set [versioneer]VCS= in setup.cfg" + handlers = HANDLERS.get(cfg.VCS) + assert handlers, "unrecognized VCS '%s'" % cfg.VCS +- verbose = verbose or cfg.verbose +- assert cfg.versionfile_source is not None, \ +- "please set versioneer.versionfile_source" ++ verbose = verbose or bool(cfg.verbose) # `bool()` used to avoid `None` ++ assert ( ++ cfg.versionfile_source is not None ++ ), "please set versioneer.versionfile_source" + assert cfg.tag_prefix is not None, "please set versioneer.tag_prefix" + + versionfile_abs = os.path.join(root, cfg.versionfile_source) +@@ -1470,18 +1896,26 @@ def get_versions(verbose=False): + if verbose: + print("unable to compute version") + +- return {"version": "0+unknown", "full-revisionid": None, +- "dirty": None, "error": "unable to compute version", +- "date": None} ++ return { ++ "version": "0+unknown", ++ "full-revisionid": None, ++ "dirty": None, ++ "error": "unable to compute version", ++ "date": None, ++ } + + +-def get_version(): ++def get_version() -> str: + """Get the short version string for this project.""" + return get_versions()["version"] + + +-def get_cmdclass(): +- """Get the custom setuptools/distutils subclasses used by Versioneer.""" ++def get_cmdclass(cmdclass: Optional[Dict[str, Any]] = None): ++ """Get the custom setuptools subclasses used by Versioneer. ++ ++ If the package uses a different cmdclass (e.g. one from numpy), it ++ should be provide as an argument. ++ """ + if "versioneer" in sys.modules: + del sys.modules["versioneer"] + # this fixes the "python setup.py develop" case (also 'install' and +@@ -1495,25 +1929,25 @@ def get_cmdclass(): + # parent is protected against the child's "import versioneer". By + # removing ourselves from sys.modules here, before the child build + # happens, we protect the child from the parent's versioneer too. +- # Also see https://github.com/warner/python-versioneer/issues/52 ++ # Also see https://github.com/python-versioneer/python-versioneer/issues/52 + +- cmds = {} ++ cmds = {} if cmdclass is None else cmdclass.copy() + +- # we add "version" to both distutils and setuptools +- from distutils.core import Command ++ # we add "version" to setuptools ++ from setuptools import Command + + class cmd_version(Command): + description = "report generated version string" +- user_options = [] +- boolean_options = [] ++ user_options: List[Tuple[str, str, str]] = [] ++ boolean_options: List[str] = [] + +- def initialize_options(self): ++ def initialize_options(self) -> None: + pass + +- def finalize_options(self): ++ def finalize_options(self) -> None: + pass + +- def run(self): ++ def run(self) -> None: + vers = get_versions(verbose=True) + print("Version: %s" % vers["version"]) + print(" full-revisionid: %s" % vers.get("full-revisionid")) +@@ -1521,9 +1955,10 @@ def get_cmdclass(): + print(" date: %s" % vers.get("date")) + if vers["error"]: + print(" error: %s" % vers["error"]) ++ + cmds["version"] = cmd_version + +- # we override "build_py" in both distutils and setuptools ++ # we override "build_py" in setuptools + # + # most invocation pathways end up running build_py: + # distutils/build -> build_py +@@ -1538,29 +1973,71 @@ def get_cmdclass(): + # then does setup.py bdist_wheel, or sometimes setup.py install + # setup.py egg_info -> ? + ++ # pip install -e . and setuptool/editable_wheel will invoke build_py ++ # but the build_py command is not expected to copy any files. ++ + # we override different "build_py" commands for both environments +- if "setuptools" in sys.modules: +- from setuptools.command.build_py import build_py as _build_py ++ if "build_py" in cmds: ++ _build_py: Any = cmds["build_py"] + else: +- from distutils.command.build_py import build_py as _build_py ++ from setuptools.command.build_py import build_py as _build_py + + class cmd_build_py(_build_py): +- def run(self): ++ def run(self) -> None: + root = get_root() + cfg = get_config_from_root(root) + versions = get_versions() + _build_py.run(self) ++ if getattr(self, "editable_mode", False): ++ # During editable installs `.py` and data files are ++ # not copied to build_lib ++ return + # now locate _version.py in the new build/ directory and replace + # it with an updated value + if cfg.versionfile_build: +- target_versionfile = os.path.join(self.build_lib, +- cfg.versionfile_build) ++ target_versionfile = os.path.join(self.build_lib, cfg.versionfile_build) + print("UPDATING %s" % target_versionfile) + write_to_version_file(target_versionfile, versions) ++ + cmds["build_py"] = cmd_build_py + ++ if "build_ext" in cmds: ++ _build_ext: Any = cmds["build_ext"] ++ else: ++ from setuptools.command.build_ext import build_ext as _build_ext ++ ++ class cmd_build_ext(_build_ext): ++ def run(self) -> None: ++ root = get_root() ++ cfg = get_config_from_root(root) ++ versions = get_versions() ++ _build_ext.run(self) ++ if self.inplace: ++ # build_ext --inplace will only build extensions in ++ # build/lib<..> dir with no _version.py to write to. ++ # As in place builds will already have a _version.py ++ # in the module dir, we do not need to write one. ++ return ++ # now locate _version.py in the new build/ directory and replace ++ # it with an updated value ++ if not cfg.versionfile_build: ++ return ++ target_versionfile = os.path.join(self.build_lib, cfg.versionfile_build) ++ if not os.path.exists(target_versionfile): ++ print( ++ f"Warning: {target_versionfile} does not exist, skipping " ++ "version update. This can happen if you are running build_ext " ++ "without first running build_py." ++ ) ++ return ++ print("UPDATING %s" % target_versionfile) ++ write_to_version_file(target_versionfile, versions) ++ ++ cmds["build_ext"] = cmd_build_ext ++ + if "cx_Freeze" in sys.modules: # cx_freeze enabled? +- from cx_Freeze.dist import build_exe as _build_exe ++ from cx_Freeze.dist import build_exe as _build_exe # type: ignore ++ + # nczeczulin reports that py2exe won't like the pep440-style string + # as FILEVERSION, but it can be used for PRODUCTVERSION, e.g. + # setup(console=[{ +@@ -1569,7 +2046,7 @@ def get_cmdclass(): + # ... + + class cmd_build_exe(_build_exe): +- def run(self): ++ def run(self) -> None: + root = get_root() + cfg = get_config_from_root(root) + versions = get_versions() +@@ -1581,24 +2058,28 @@ def get_cmdclass(): + os.unlink(target_versionfile) + with open(cfg.versionfile_source, "w") as f: + LONG = LONG_VERSION_PY[cfg.VCS] +- f.write(LONG % +- {"DOLLAR": "$", +- "STYLE": cfg.style, +- "TAG_PREFIX": cfg.tag_prefix, +- "PARENTDIR_PREFIX": cfg.parentdir_prefix, +- "VERSIONFILE_SOURCE": cfg.versionfile_source, +- }) ++ f.write( ++ LONG ++ % { ++ "DOLLAR": "$", ++ "STYLE": cfg.style, ++ "TAG_PREFIX": cfg.tag_prefix, ++ "PARENTDIR_PREFIX": cfg.parentdir_prefix, ++ "VERSIONFILE_SOURCE": cfg.versionfile_source, ++ } ++ ) ++ + cmds["build_exe"] = cmd_build_exe + del cmds["build_py"] + +- if 'py2exe' in sys.modules: # py2exe enabled? ++ if "py2exe" in sys.modules: # py2exe enabled? + try: +- from py2exe.distutils_buildexe import py2exe as _py2exe # py3 ++ from py2exe.setuptools_buildexe import py2exe as _py2exe # type: ignore + except ImportError: +- from py2exe.build_exe import py2exe as _py2exe # py2 ++ from py2exe.distutils_buildexe import py2exe as _py2exe # type: ignore + + class cmd_py2exe(_py2exe): +- def run(self): ++ def run(self) -> None: + root = get_root() + cfg = get_config_from_root(root) + versions = get_versions() +@@ -1610,23 +2091,67 @@ def get_cmdclass(): + os.unlink(target_versionfile) + with open(cfg.versionfile_source, "w") as f: + LONG = LONG_VERSION_PY[cfg.VCS] +- f.write(LONG % +- {"DOLLAR": "$", +- "STYLE": cfg.style, +- "TAG_PREFIX": cfg.tag_prefix, +- "PARENTDIR_PREFIX": cfg.parentdir_prefix, +- "VERSIONFILE_SOURCE": cfg.versionfile_source, +- }) ++ f.write( ++ LONG ++ % { ++ "DOLLAR": "$", ++ "STYLE": cfg.style, ++ "TAG_PREFIX": cfg.tag_prefix, ++ "PARENTDIR_PREFIX": cfg.parentdir_prefix, ++ "VERSIONFILE_SOURCE": cfg.versionfile_source, ++ } ++ ) ++ + cmds["py2exe"] = cmd_py2exe + ++ # sdist farms its file list building out to egg_info ++ if "egg_info" in cmds: ++ _egg_info: Any = cmds["egg_info"] ++ else: ++ from setuptools.command.egg_info import egg_info as _egg_info ++ ++ class cmd_egg_info(_egg_info): ++ def find_sources(self) -> None: ++ # egg_info.find_sources builds the manifest list and writes it ++ # in one shot ++ super().find_sources() ++ ++ # Modify the filelist and normalize it ++ root = get_root() ++ cfg = get_config_from_root(root) ++ self.filelist.append("versioneer.py") ++ if cfg.versionfile_source: ++ # There are rare cases where versionfile_source might not be ++ # included by default, so we must be explicit ++ self.filelist.append(cfg.versionfile_source) ++ self.filelist.sort() ++ self.filelist.remove_duplicates() ++ ++ # The write method is hidden in the manifest_maker instance that ++ # generated the filelist and was thrown away ++ # We will instead replicate their final normalization (to unicode, ++ # and POSIX-style paths) ++ from setuptools import unicode_utils ++ ++ normalized = [ ++ unicode_utils.filesys_decode(f).replace(os.sep, "/") ++ for f in self.filelist.files ++ ] ++ ++ manifest_filename = os.path.join(self.egg_info, "SOURCES.txt") ++ with open(manifest_filename, "w") as fobj: ++ fobj.write("\n".join(normalized)) ++ ++ cmds["egg_info"] = cmd_egg_info ++ + # we override different "sdist" commands for both environments +- if "setuptools" in sys.modules: +- from setuptools.command.sdist import sdist as _sdist ++ if "sdist" in cmds: ++ _sdist: Any = cmds["sdist"] + else: +- from distutils.command.sdist import sdist as _sdist ++ from setuptools.command.sdist import sdist as _sdist + + class cmd_sdist(_sdist): +- def run(self): ++ def run(self) -> None: + versions = get_versions() + self._versioneer_generated_versions = versions + # unless we update this, the command will keep using the old +@@ -1634,7 +2159,7 @@ def get_cmdclass(): + self.distribution.metadata.version = versions["version"] + return _sdist.run(self) + +- def make_release_tree(self, base_dir, files): ++ def make_release_tree(self, base_dir: str, files: List[str]) -> None: + root = get_root() + cfg = get_config_from_root(root) + _sdist.make_release_tree(self, base_dir, files) +@@ -1643,8 +2168,10 @@ def get_cmdclass(): + # updated value + target_versionfile = os.path.join(base_dir, cfg.versionfile_source) + print("UPDATING %s" % target_versionfile) +- write_to_version_file(target_versionfile, +- self._versioneer_generated_versions) ++ write_to_version_file( ++ target_versionfile, self._versioneer_generated_versions ++ ) ++ + cmds["sdist"] = cmd_sdist + + return cmds +@@ -1687,23 +2214,26 @@ SAMPLE_CONFIG = """ + + """ + +-INIT_PY_SNIPPET = """ ++OLD_SNIPPET = """ + from ._version import get_versions + __version__ = get_versions()['version'] + del get_versions + """ + ++INIT_PY_SNIPPET = """ ++from . import {0} ++__version__ = {0}.get_versions()['version'] ++""" ++ + +-def do_setup(): +- """Main VCS-independent setup function for installing Versioneer.""" ++def do_setup() -> int: ++ """Do main VCS-independent setup function for installing Versioneer.""" + root = get_root() + try: + cfg = get_config_from_root(root) +- except (EnvironmentError, configparser.NoSectionError, +- configparser.NoOptionError) as e: +- if isinstance(e, (EnvironmentError, configparser.NoSectionError)): +- print("Adding sample versioneer config to setup.cfg", +- file=sys.stderr) ++ except (OSError, configparser.NoSectionError, configparser.NoOptionError) as e: ++ if isinstance(e, (OSError, configparser.NoSectionError)): ++ print("Adding sample versioneer config to setup.cfg", file=sys.stderr) + with open(os.path.join(root, "setup.cfg"), "a") as f: + f.write(SAMPLE_CONFIG) + print(CONFIG_ERROR, file=sys.stderr) +@@ -1712,71 +2242,49 @@ def do_setup(): + print(" creating %s" % cfg.versionfile_source) + with open(cfg.versionfile_source, "w") as f: + LONG = LONG_VERSION_PY[cfg.VCS] +- f.write(LONG % {"DOLLAR": "$", +- "STYLE": cfg.style, +- "TAG_PREFIX": cfg.tag_prefix, +- "PARENTDIR_PREFIX": cfg.parentdir_prefix, +- "VERSIONFILE_SOURCE": cfg.versionfile_source, +- }) +- +- ipy = os.path.join(os.path.dirname(cfg.versionfile_source), +- "__init__.py") ++ f.write( ++ LONG ++ % { ++ "DOLLAR": "$", ++ "STYLE": cfg.style, ++ "TAG_PREFIX": cfg.tag_prefix, ++ "PARENTDIR_PREFIX": cfg.parentdir_prefix, ++ "VERSIONFILE_SOURCE": cfg.versionfile_source, ++ } ++ ) ++ ++ ipy = os.path.join(os.path.dirname(cfg.versionfile_source), "__init__.py") ++ maybe_ipy: Optional[str] = ipy + if os.path.exists(ipy): + try: + with open(ipy, "r") as f: + old = f.read() +- except EnvironmentError: ++ except OSError: + old = "" +- if INIT_PY_SNIPPET not in old: ++ module = os.path.splitext(os.path.basename(cfg.versionfile_source))[0] ++ snippet = INIT_PY_SNIPPET.format(module) ++ if OLD_SNIPPET in old: ++ print(" replacing boilerplate in %s" % ipy) ++ with open(ipy, "w") as f: ++ f.write(old.replace(OLD_SNIPPET, snippet)) ++ elif snippet not in old: + print(" appending to %s" % ipy) + with open(ipy, "a") as f: +- f.write(INIT_PY_SNIPPET) ++ f.write(snippet) + else: + print(" %s unmodified" % ipy) + else: + print(" %s doesn't exist, ok" % ipy) +- ipy = None +- +- # Make sure both the top-level "versioneer.py" and versionfile_source +- # (PKG/_version.py, used by runtime code) are in MANIFEST.in, so +- # they'll be copied into source distributions. Pip won't be able to +- # install the package without this. +- manifest_in = os.path.join(root, "MANIFEST.in") +- simple_includes = set() +- try: +- with open(manifest_in, "r") as f: +- for line in f: +- if line.startswith("include "): +- for include in line.split()[1:]: +- simple_includes.add(include) +- except EnvironmentError: +- pass +- # That doesn't cover everything MANIFEST.in can do +- # (http://docs.python.org/2/distutils/sourcedist.html#commands), so +- # it might give some false negatives. Appending redundant 'include' +- # lines is safe, though. +- if "versioneer.py" not in simple_includes: +- print(" appending 'versioneer.py' to MANIFEST.in") +- with open(manifest_in, "a") as f: +- f.write("include versioneer.py\n") +- else: +- print(" 'versioneer.py' already in MANIFEST.in") +- if cfg.versionfile_source not in simple_includes: +- print(" appending versionfile_source ('%s') to MANIFEST.in" % +- cfg.versionfile_source) +- with open(manifest_in, "a") as f: +- f.write("include %s\n" % cfg.versionfile_source) +- else: +- print(" versionfile_source already in MANIFEST.in") ++ maybe_ipy = None + + # Make VCS-specific changes. For git, this means creating/changing + # .gitattributes to mark _version.py for export-subst keyword + # substitution. +- do_vcs_install(manifest_in, cfg.versionfile_source, ipy) ++ do_vcs_install(cfg.versionfile_source, maybe_ipy) + return 0 + + +-def scan_setup_py(): ++def scan_setup_py() -> int: + """Validate the contents of setup.py against Versioneer's expectations.""" + found = set() + setters = False +@@ -1813,10 +2321,14 @@ def scan_setup_py(): + return errors + + ++def setup_command() -> NoReturn: ++ """Set up Versioneer and exit with appropriate error code.""" ++ errors = do_setup() ++ errors += scan_setup_py() ++ sys.exit(1 if errors else 0) ++ ++ + if __name__ == "__main__": + cmd = sys.argv[1] + if cmd == "setup": +- errors = do_setup() +- errors += scan_setup_py() +- if errors: +- sys.exit(1) ++ setup_command() +-- +2.41.0 + diff --git a/package/python-magic-wormhole/Config.in b/package/python-magic-wormhole/Config.in new file mode 100644 index 00000000..c92af7a9 --- /dev/null +++ b/package/python-magic-wormhole/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_PYTHON_MAGIC_WORMHOLE + bool "python-magic-wormhole" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-cryptography + select BR2_PACKAGE_PYTHON_ATTRS # runtime + select BR2_PACKAGE_PYTHON_AUTOBAHN # runtime + select BR2_PACKAGE_PYTHON_AUTOMAT # runtime + select BR2_PACKAGE_PYTHON_CLICK # runtime + select BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime + select BR2_PACKAGE_PYTHON_HUMANIZE # runtime + select BR2_PACKAGE_PYTHON_PYNACL # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_SPAKE2 # runtime + select BR2_PACKAGE_PYTHON_TQDM # runtime + select BR2_PACKAGE_PYTHON_TWISTED # runtime + select BR2_PACKAGE_PYTHON_TXTORCON # runtime + help + Securely transfer data between computers. + + This package provides a library and a command-line tool + named "wormhole", which makes it possible to get + arbitrary-sized files and directories (or short pieces of + text) from one computer to another. The two endpoints are + identified by using identical "wormhole codes": in general, + the sending machine generates and displays the code, which + must then be typed into the receiving machine. + + https://github.com/magic-wormhole/magic-wormhole diff --git a/package/python-magic-wormhole/python-magic-wormhole.hash b/package/python-magic-wormhole/python-magic-wormhole.hash new file mode 100644 index 00000000..5a3ffab7 --- /dev/null +++ b/package/python-magic-wormhole/python-magic-wormhole.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/magic-wormhole/json +md5 baf778af8df5416e6d01bb2b95fa5cc5 magic-wormhole-0.13.0.tar.gz +sha256 ac3bd68286270e7f149c06149a8e409e5fa34d7feb0e88844a26d29eed2d1516 magic-wormhole-0.13.0.tar.gz +# Locally computed sha256 checksums +sha256 4a9cc2415c52cef591b6822eee68fed36d7e6d80284b09638cff61d762d99060 LICENSE diff --git a/package/python-magic-wormhole/python-magic-wormhole.mk b/package/python-magic-wormhole/python-magic-wormhole.mk new file mode 100644 index 00000000..3349bfd4 --- /dev/null +++ b/package/python-magic-wormhole/python-magic-wormhole.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-magic-wormhole +# +################################################################################ + +PYTHON_MAGIC_WORMHOLE_VERSION = 0.13.0 +PYTHON_MAGIC_WORMHOLE_SOURCE = magic-wormhole-$(PYTHON_MAGIC_WORMHOLE_VERSION).tar.gz +PYTHON_MAGIC_WORMHOLE_SITE = https://files.pythonhosted.org/packages/cc/e1/75c31ad5db873268ba0750006b3d0e40c30b0ad39e6f58b1e28a28d6de48 +PYTHON_MAGIC_WORMHOLE_SETUP_TYPE = setuptools +PYTHON_MAGIC_WORMHOLE_LICENSE = MIT +PYTHON_MAGIC_WORMHOLE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-mako/Config.in b/package/python-mako/Config.in new file mode 100644 index 00000000..7bba3194 --- /dev/null +++ b/package/python-mako/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_PYTHON_MAKO + bool "python-mako" + select BR2_PACKAGE_PYTHON_MARKUPSAFE # runtime + help + Mako is a template library written in Python. It provides a + familiar, non-XML syntax which compiles into Python modules + for maximum performance. + + https://pypi.python.org/pypi/Mako + +if BR2_PACKAGE_PYTHON_MAKO + +config BR2_PACKAGE_PYTHON_MAKO_EXT_PYGMENTPLUGIN + bool "mako extension pygmentplugin" + select BR2_PACKAGE_PYTHON_PYGMENTS # runtime + help + Provide python-pygments support for + mako.ext.pygmentplugin + +config BR2_PACKAGE_PYTHON_MAKO_EXT_BABELPLUGIN + bool "mako extension babelplugin" + select BR2_PACKAGE_PYTHON_BABEL # runtime + help + Provide python-babel support for + mako.ext.babelplugin + +endif diff --git a/package/python-mako/python-mako.hash b/package/python-mako/python-mako.hash new file mode 100644 index 00000000..03651cf9 --- /dev/null +++ b/package/python-mako/python-mako.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/mako/json +md5 90da23903468efe9aa88dc88081579ff Mako-1.3.0.tar.gz +sha256 e3a9d388fd00e87043edbe8792f45880ac0114e9c4adc69f6e9bfb2c55e3b11b Mako-1.3.0.tar.gz +# Locally computed sha256 checksums +sha256 0a326e448dd22f220dd30796677ddbdf3ddaa6427a9744fea9deaa51d9d74fd9 LICENSE diff --git a/package/python-mako/python-mako.mk b/package/python-mako/python-mako.mk new file mode 100644 index 00000000..2eba772b --- /dev/null +++ b/package/python-mako/python-mako.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# python-mako +# +################################################################################ + +PYTHON_MAKO_VERSION = 1.3.0 +PYTHON_MAKO_SOURCE = Mako-$(PYTHON_MAKO_VERSION).tar.gz +PYTHON_MAKO_SITE = https://files.pythonhosted.org/packages/a9/6e/6b41e654bbdcef90c6b9e7f280bf7cbd756dc2560ce76214f5cdbc4ddab5 +PYTHON_MAKO_SETUP_TYPE = setuptools +PYTHON_MAKO_LICENSE = MIT +PYTHON_MAKO_LICENSE_FILES = LICENSE +PYTHON_MAKO_CPE_ID_VENDOR = sqlalchemy +PYTHON_MAKO_CPE_ID_PRODUCT = mako + +# In host build, setup.py tries to download markupsafe if it is not installed +HOST_PYTHON_MAKO_DEPENDENCIES = host-python-markupsafe + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-markdown/Config.in b/package/python-markdown/Config.in new file mode 100644 index 00000000..4963ec65 --- /dev/null +++ b/package/python-markdown/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_MARKDOWN + bool "python-markdown" + # runtime dependency on Python's xml module + select BR2_PACKAGE_PYTHON3_PYEXPAT + help + This is a Python implementation of John Gruber's Markdown + + https://pypi.python.org/pypi/Markdown diff --git a/package/python-markdown/python-markdown.hash b/package/python-markdown/python-markdown.hash new file mode 100644 index 00000000..21f0c28b --- /dev/null +++ b/package/python-markdown/python-markdown.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/markdown/json +md5 1bd2746a8f32643f151991719fe7faf9 Markdown-3.5.1.tar.gz +sha256 b65d7beb248dc22f2e8a31fb706d93798093c308dc1aba295aedeb9d41a813bd Markdown-3.5.1.tar.gz +# Locally computed sha256 +sha256 6f1193cb634718e65c3a537d6e25ebd614820ec0ef693cfc12248112638d64da LICENSE.md diff --git a/package/python-markdown/python-markdown.mk b/package/python-markdown/python-markdown.mk new file mode 100644 index 00000000..b491660f --- /dev/null +++ b/package/python-markdown/python-markdown.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-markdown +# +################################################################################ + +PYTHON_MARKDOWN_VERSION = 3.5.1 +PYTHON_MARKDOWN_SOURCE = Markdown-$(PYTHON_MARKDOWN_VERSION).tar.gz +PYTHON_MARKDOWN_SITE = https://files.pythonhosted.org/packages/35/14/1ec9742e151f3b06a723a20d9af7201a389ebd3aae8b7d93b521819489dc +PYTHON_MARKDOWN_LICENSE = BSD-3-Clause +PYTHON_MARKDOWN_LICENSE_FILES = LICENSE.md +PYTHON_MARKDOWN_SETUP_TYPE = setuptools + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-markdown2/Config.in b/package/python-markdown2/Config.in new file mode 100644 index 00000000..8fe23324 --- /dev/null +++ b/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/package/python-markdown2/python-markdown2.hash b/package/python-markdown2/python-markdown2.hash new file mode 100644 index 00000000..0a764991 --- /dev/null +++ b/package/python-markdown2/python-markdown2.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/markdown2/json +md5 69cdd2c9ee1f6837cb173a44d6a0622d markdown2-2.4.12.tar.gz +sha256 1bc8692696954d597778e0e25713c14ca56d87992070dedd95c17eddaf709204 markdown2-2.4.12.tar.gz +# Locally computed sha256 checksums +sha256 f8c7c4d554409cf621b8d653dbfffb719745fd36f5c49b8305258649b403ef9c LICENSE.txt diff --git a/package/python-markdown2/python-markdown2.mk b/package/python-markdown2/python-markdown2.mk new file mode 100644 index 00000000..a78e6ea0 --- /dev/null +++ b/package/python-markdown2/python-markdown2.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-markdown2 +# +################################################################################ + +PYTHON_MARKDOWN2_VERSION = 2.4.12 +PYTHON_MARKDOWN2_SOURCE = markdown2-$(PYTHON_MARKDOWN2_VERSION).tar.gz +PYTHON_MARKDOWN2_SITE = https://files.pythonhosted.org/packages/3c/e4/87a454674ac303e2ca6c25713845d2ae1b59c1a88576054cbec25aaebad1 +PYTHON_MARKDOWN2_SETUP_TYPE = setuptools +PYTHON_MARKDOWN2_LICENSE = MIT +PYTHON_MARKDOWN2_LICENSE_FILES = LICENSE.txt +PYTHON_MARKDOWN2_CPE_ID_VALID = YES + +$(eval $(python-package)) diff --git a/package/python-markupsafe/Config.in b/package/python-markupsafe/Config.in new file mode 100644 index 00000000..48421e0a --- /dev/null +++ b/package/python-markupsafe/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_MARKUPSAFE + bool "python-markupsafe" + help + MarkupSafe implements a XML/HTML/XHTML Markup safe string + for Python. + + https://github.com/mitsuhiko/markupsafe diff --git a/package/python-markupsafe/python-markupsafe.hash b/package/python-markupsafe/python-markupsafe.hash new file mode 100644 index 00000000..c6f9cd47 --- /dev/null +++ b/package/python-markupsafe/python-markupsafe.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/markupsafe/json +md5 8fe7227653f2fb9b1ffe7f9f2058998a MarkupSafe-2.1.5.tar.gz +sha256 d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b MarkupSafe-2.1.5.tar.gz +# Locally computed sha256 checksums +sha256 489a8e1108509ed98a37bb983e11e0f7e1d31f0bd8f99a79c8448e7ff37d07ea LICENSE.rst diff --git a/package/python-markupsafe/python-markupsafe.mk b/package/python-markupsafe/python-markupsafe.mk new file mode 100644 index 00000000..b54a7736 --- /dev/null +++ b/package/python-markupsafe/python-markupsafe.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-markupsafe +# +################################################################################ + +PYTHON_MARKUPSAFE_VERSION = 2.1.5 +PYTHON_MARKUPSAFE_SOURCE = MarkupSafe-$(PYTHON_MARKUPSAFE_VERSION).tar.gz +PYTHON_MARKUPSAFE_SITE = https://files.pythonhosted.org/packages/87/5b/aae44c6655f3801e81aa3eef09dbbf012431987ba564d7231722f68df02d +PYTHON_MARKUPSAFE_SETUP_TYPE = setuptools +PYTHON_MARKUPSAFE_LICENSE = BSD-3-Clause +PYTHON_MARKUPSAFE_LICENSE_FILES = LICENSE.rst + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-marshmallow-sqlalchemy/Config.in b/package/python-marshmallow-sqlalchemy/Config.in new file mode 100644 index 00000000..f48d27ed --- /dev/null +++ b/package/python-marshmallow-sqlalchemy/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_MARSHMALLOW_SQLALCHEMY + bool "python-marshmallow-sqlalchemy" + select BR2_PACKAGE_PYTHON_MARSHMALLOW # runtime + select BR2_PACKAGE_PYTHON_PACKAGING # runtime + select BR2_PACKAGE_PYTHON_SQLALCHEMY # runtime + help + SQLAlchemy integration with the marshmallow + (de)serialization library. + + https://github.com/marshmallow-code/marshmallow-sqlalchemy diff --git a/package/python-marshmallow-sqlalchemy/python-marshmallow-sqlalchemy.hash b/package/python-marshmallow-sqlalchemy/python-marshmallow-sqlalchemy.hash new file mode 100644 index 00000000..3194513d --- /dev/null +++ b/package/python-marshmallow-sqlalchemy/python-marshmallow-sqlalchemy.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/marshmallow-sqlalchemy/json +md5 61e46e0ad5fabd0e9e11f895e1243bc3 marshmallow-sqlalchemy-0.30.0.tar.gz +sha256 29ad0a4fd1b4a1e52dcb07f9673d284a6b0795141916cc2169d4ee9a5d007347 marshmallow-sqlalchemy-0.30.0.tar.gz +# Locally computed sha256 checksums +sha256 5f6cd082e01dda8a7c157687e196be98d68224cf41c0cee1968eb5c08e0c076a LICENSE diff --git a/package/python-marshmallow-sqlalchemy/python-marshmallow-sqlalchemy.mk b/package/python-marshmallow-sqlalchemy/python-marshmallow-sqlalchemy.mk new file mode 100644 index 00000000..a95e5302 --- /dev/null +++ b/package/python-marshmallow-sqlalchemy/python-marshmallow-sqlalchemy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-marshmallow-sqlalchemy +# +################################################################################ + +PYTHON_MARSHMALLOW_SQLALCHEMY_VERSION = 0.30.0 +PYTHON_MARSHMALLOW_SQLALCHEMY_SOURCE = marshmallow-sqlalchemy-$(PYTHON_MARSHMALLOW_SQLALCHEMY_VERSION).tar.gz +PYTHON_MARSHMALLOW_SQLALCHEMY_SITE = https://files.pythonhosted.org/packages/5d/3f/21aa202f3df31d2d20d4ae8dfe9c7f1ce0a1eecba7003915a986a7599778 +PYTHON_MARSHMALLOW_SQLALCHEMY_SETUP_TYPE = setuptools +PYTHON_MARSHMALLOW_SQLALCHEMY_LICENSE = MIT +PYTHON_MARSHMALLOW_SQLALCHEMY_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-marshmallow/Config.in b/package/python-marshmallow/Config.in new file mode 100644 index 00000000..cc1b42f4 --- /dev/null +++ b/package/python-marshmallow/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_MARSHMALLOW + bool "python-marshmallow" + select BR2_PACKAGE_PYTHON_PACKAGING # runtime + help + A lightweight library for converting complex datatypes to + and from native Python datatypes. + + https://github.com/marshmallow-code/marshmallow diff --git a/package/python-marshmallow/python-marshmallow.hash b/package/python-marshmallow/python-marshmallow.hash new file mode 100644 index 00000000..cb60216a --- /dev/null +++ b/package/python-marshmallow/python-marshmallow.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/marshmallow/json +md5 c6093f980a650b1088bbc5610055a05c marshmallow-3.20.1.tar.gz +sha256 5d2371bbe42000f2b3fb5eaa065224df7d8f8597bc19a1bbfa5bfe7fba8da889 marshmallow-3.20.1.tar.gz +# Locally computed sha256 checksums +sha256 759dc79c383ad79340c6e41f712e80407fe0d2cb3cbaad1ed98aa9c3e28a602c LICENSE +sha256 f982e6fd97ba00973e94605b972ff04894b22c4fa937b868828b32ae8f0a7c2e docs/license.rst diff --git a/package/python-marshmallow/python-marshmallow.mk b/package/python-marshmallow/python-marshmallow.mk new file mode 100644 index 00000000..afd4068f --- /dev/null +++ b/package/python-marshmallow/python-marshmallow.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-marshmallow +# +################################################################################ + +PYTHON_MARSHMALLOW_VERSION = 3.20.1 +PYTHON_MARSHMALLOW_SOURCE = marshmallow-$(PYTHON_MARSHMALLOW_VERSION).tar.gz +PYTHON_MARSHMALLOW_SITE = https://files.pythonhosted.org/packages/e4/e0/3e49c0f91f3e8954806c1076f4eae2c95a9d3ed2546f267c683b877d327b +PYTHON_MARSHMALLOW_SETUP_TYPE = setuptools +PYTHON_MARSHMALLOW_LICENSE = MIT +PYTHON_MARSHMALLOW_LICENSE_FILES = LICENSE +PYTHON_MARSHMALLOW_CPE_ID_VENDOR = marshmallow_project +PYTHON_MARSHMALLOW_CPE_ID_PRODUCT = marshmallow + +$(eval $(python-package)) diff --git a/package/python-matplotlib-inline/Config.in b/package/python-matplotlib-inline/Config.in new file mode 100644 index 00000000..2ea9f4d9 --- /dev/null +++ b/package/python-matplotlib-inline/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_MATPLOTLIB_INLINE + bool "python-matplotlib-inline" + select BR2_PACKAGE_PYTHON_TRAITLETS # runtime + help + Inline Matplotlib backend for Jupyter. + + https://github.com/ipython/matplotlib-inline diff --git a/package/python-matplotlib-inline/python-matplotlib-inline.hash b/package/python-matplotlib-inline/python-matplotlib-inline.hash new file mode 100644 index 00000000..7382fc34 --- /dev/null +++ b/package/python-matplotlib-inline/python-matplotlib-inline.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/matplotlib-inline/json +md5 aded9a57e2f526f76b3a4851d5528d4f matplotlib-inline-0.1.6.tar.gz +sha256 f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304 matplotlib-inline-0.1.6.tar.gz +# Locally computed sha256 checksums +sha256 8521b036c6448e0e0aa7213d4713b6fdee0f4c64c9f320450f77346bf5c0e8e4 LICENSE diff --git a/package/python-matplotlib-inline/python-matplotlib-inline.mk b/package/python-matplotlib-inline/python-matplotlib-inline.mk new file mode 100644 index 00000000..c9c22605 --- /dev/null +++ b/package/python-matplotlib-inline/python-matplotlib-inline.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-matplotlib-inline +# +################################################################################ + +PYTHON_MATPLOTLIB_INLINE_VERSION = 0.1.6 +PYTHON_MATPLOTLIB_INLINE_SOURCE = matplotlib-inline-$(PYTHON_MATPLOTLIB_INLINE_VERSION).tar.gz +PYTHON_MATPLOTLIB_INLINE_SITE = https://files.pythonhosted.org/packages/d9/50/3af8c0362f26108e54d58c7f38784a3bdae6b9a450bab48ee8482d737f44 +PYTHON_MATPLOTLIB_INLINE_SETUP_TYPE = setuptools +PYTHON_MATPLOTLIB_INLINE_LICENSE = BSD-3-Clause +PYTHON_MATPLOTLIB_INLINE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-matplotlib/Config.in b/package/python-matplotlib/Config.in new file mode 100644 index 00000000..b3d84e2b --- /dev/null +++ b/package/python-matplotlib/Config.in @@ -0,0 +1,46 @@ +config BR2_PACKAGE_PYTHON_MATPLOTLIB + bool "python-matplotlib" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_9 # python-numpy + depends on BR2_HOST_GCC_AT_LEAST_9 # host-python-numpy + select BR2_PACKAGE_FREETYPE # runtime + select BR2_PACKAGE_LIBPNG # runtime + select BR2_PACKAGE_PYTHON_CERTIFI # runtime + select BR2_PACKAGE_PYTHON_CONTOURPY # runtime + select BR2_PACKAGE_PYTHON_CYCLER + select BR2_PACKAGE_PYTHON_PYBIND + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + select BR2_PACKAGE_PYTHON_DATEUTIL # runtime + select BR2_PACKAGE_PYTHON_KIWISOLVER # runtime + select BR2_PACKAGE_PYTHON_NUMPY # runtime + select BR2_PACKAGE_PYTHON_PILLOW # runtime + select BR2_PACKAGE_PYTHON_PYPARSING # runtime + select BR2_PACKAGE_PYTHON3_ZLIB # runtime + select BR2_PACKAGE_QHULL + select BR2_PACKAGE_ZLIB # runtime + help + Matplotlib strives to produce publication quality 2D + graphics for interactive graphing, scientific publishing, + user interface development and web application servers + targeting multiple user interfaces and hardcopy output + formats. + + https://matplotlib.org/ + +if BR2_PACKAGE_PYTHON_MATPLOTLIB + +config BR2_PACKAGE_PYTHON_MATPLOTLIB_QT + bool "qt display" + depends on BR2_PACKAGE_QT5 # python-pyqt5 + select BR2_PACKAGE_PYTHON_PYQT5 + select BR2_PACKAGE_QT5BASE_FONTCONFIG + select BR2_PACKAGE_QT5BASE_WIDGETS + +endif + +comment "python-matplotlib needs a glibc or musl toolchain w/ C++, gcc >= 9, host gcc >= 9" + depends on !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) || \ + !BR2_INSTALL_LIBSTDCPP || !BR2_HOST_GCC_AT_LEAST_9 || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_9 diff --git a/package/python-matplotlib/python-matplotlib.hash b/package/python-matplotlib/python-matplotlib.hash new file mode 100644 index 00000000..c2fb907e --- /dev/null +++ b/package/python-matplotlib/python-matplotlib.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/matplotlib/json +md5 72896b8c240903ebddc47be6451d813b matplotlib-3.8.2.tar.gz +sha256 01a978b871b881ee76017152f1f1a0cbf6bd5f7b8ff8c96df0df1bd57d8755a1 matplotlib-3.8.2.tar.gz +# Locally computed sha256 checksums +sha256 5a1a81ea301728c8bba2933da832c0cd62229daf20893a024ab3d53244468dbc LICENSE/LICENSE diff --git a/package/python-matplotlib/python-matplotlib.mk b/package/python-matplotlib/python-matplotlib.mk new file mode 100644 index 00000000..5f5d5317 --- /dev/null +++ b/package/python-matplotlib/python-matplotlib.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# python-matplotlib +# +################################################################################ + +PYTHON_MATPLOTLIB_VERSION = 3.8.2 +PYTHON_MATPLOTLIB_SOURCE = matplotlib-$(PYTHON_MATPLOTLIB_VERSION).tar.gz +PYTHON_MATPLOTLIB_SITE = https://files.pythonhosted.org/packages/fb/ab/38a0e94cb01dacb50f06957c2bed1c83b8f9dac6618988a37b2487862944 +PYTHON_MATPLOTLIB_LICENSE = Python-2.0 +PYTHON_MATPLOTLIB_LICENSE_FILES = LICENSE/LICENSE +PYTHON_MATPLOTLIB_DEPENDENCIES = \ + freetype \ + host-pkgconf \ + host-python-certifi \ + host-python-numpy \ + host-python-setuptools-scm \ + libpng \ + python-cycler \ + python-pybind \ + qhull +PYTHON_MATPLOTLIB_SETUP_TYPE = setuptools +PYTHON_MATPLOTLIB_BUILD_OPTS = --skip-dependency-check + +ifeq ($(BR2_PACKAGE_PYTHON_MATPLOTLIB_QT),y) +PYTHON_MATPLOTLIB_DEPENDENCIES += python-pyqt5 +endif + +define PYTHON_MATPLOTLIB_COPY_SETUP_CFG + cp $(PYTHON_MATPLOTLIB_PKGDIR)/setup.cfg $(@D)/mplsetup.cfg +endef +PYTHON_MATPLOTLIB_PRE_CONFIGURE_HOOKS += PYTHON_MATPLOTLIB_COPY_SETUP_CFG + +$(eval $(python-package)) diff --git a/package/python-matplotlib/setup.cfg b/package/python-matplotlib/setup.cfg new file mode 100644 index 00000000..4bda0d43 --- /dev/null +++ b/package/python-matplotlib/setup.cfg @@ -0,0 +1,10 @@ +[libs] +# Disable LTO to prevent the following error: +# Relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZSt3hexRSt8ios_base' +# which may bind externally can not be used when making a shared object; +# recompile with -fPIC +enable_lto = False + +# Freetype and qhull are provided by Buildroot +system_freetype = True +system_qhull = True diff --git a/package/python-maturin/python-maturin.hash b/package/python-maturin/python-maturin.hash new file mode 100644 index 00000000..3c5f836a --- /dev/null +++ b/package/python-maturin/python-maturin.hash @@ -0,0 +1,5 @@ +# Locally calculated after vendoring +sha256 56c18b09d38080f9975fb679be1fda01b936d21f5ef233967cda3dd74905e683 maturin-1.7.0.tar.gz +# Locally computed sha256 checksums +sha256 a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2 license-apache +sha256 ea7882c559733766ad08343bde1d1ec80a4967c03a738fb8e0058ef6289f7b7c license-mit diff --git a/package/python-maturin/python-maturin.mk b/package/python-maturin/python-maturin.mk new file mode 100644 index 00000000..70cdb159 --- /dev/null +++ b/package/python-maturin/python-maturin.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-maturin +# +################################################################################ + +PYTHON_MATURIN_VERSION = 1.7.0 +PYTHON_MATURIN_SOURCE = maturin-$(PYTHON_MATURIN_VERSION).tar.gz +PYTHON_MATURIN_SITE = https://files.pythonhosted.org/packages/80/da/a4bbd6e97f3645f4ebd725321aa235e22e31037dfd92caf4539f721c0a5a +PYTHON_MATURIN_SETUP_TYPE = setuptools-rust +PYTHON_MATURIN_LICENSE = Apache-2.0 or MIT +PYTHON_MATURIN_LICENSE_FILES = license-apache license-mit +HOST_PYTHON_MATURIN_DEPENDENCIES = host-python-tomli + +$(eval $(host-python-package)) diff --git a/package/python-mbstrdecoder/Config.in b/package/python-mbstrdecoder/Config.in new file mode 100644 index 00000000..0ff0a310 --- /dev/null +++ b/package/python-mbstrdecoder/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_MBSTRDECODER + bool "python-mbstrdecoder" + select BR2_PACKAGE_PYTHON_CHARDET # runtime + help + multi-byte character string decoder. + + https://github.com/thombashi/mbstrdecoder diff --git a/package/python-mbstrdecoder/python-mbstrdecoder.hash b/package/python-mbstrdecoder/python-mbstrdecoder.hash new file mode 100644 index 00000000..2943ef29 --- /dev/null +++ b/package/python-mbstrdecoder/python-mbstrdecoder.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/mbstrdecoder/json +md5 33522a4bd9217dae46ebd0761e1a1e7c mbstrdecoder-1.1.3.tar.gz +sha256 dcfd2c759322eb44fe193a9e0b1b86c5b87f3ec5ea8e1bb43b3e9ae423f1e8fe mbstrdecoder-1.1.3.tar.gz +# Locally computed sha256 checksums +sha256 7588265082eed5e9f4afd5090c57e610b740ec547b16aaaab739ba07c5eefb15 LICENSE diff --git a/package/python-mbstrdecoder/python-mbstrdecoder.mk b/package/python-mbstrdecoder/python-mbstrdecoder.mk new file mode 100644 index 00000000..566420a6 --- /dev/null +++ b/package/python-mbstrdecoder/python-mbstrdecoder.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-mbstrdecoder +# +################################################################################ + +PYTHON_MBSTRDECODER_VERSION = 1.1.3 +PYTHON_MBSTRDECODER_SOURCE = mbstrdecoder-$(PYTHON_MBSTRDECODER_VERSION).tar.gz +PYTHON_MBSTRDECODER_SITE = https://files.pythonhosted.org/packages/70/8f/dd5d4efbe3f90d2d38c948f0ca5c698e2d6cedc58ead2f5b90272cbcb4fa +PYTHON_MBSTRDECODER_SETUP_TYPE = setuptools +PYTHON_MBSTRDECODER_LICENSE = MIT +PYTHON_MBSTRDECODER_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-memory-profiler/Config.in b/package/python-memory-profiler/Config.in new file mode 100644 index 00000000..9d29e5f1 --- /dev/null +++ b/package/python-memory-profiler/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_MEMORY_PROFILER + bool "python-memory-profiler" + select BR2_PACKAGE_PYTHON_PSUTIL # runtime + help + A module for monitoring memory usage of a python program. + + https://github.com/pythonprofilers/memory_profiler diff --git a/package/python-memory-profiler/python-memory-profiler.hash b/package/python-memory-profiler/python-memory-profiler.hash new file mode 100644 index 00000000..bab90183 --- /dev/null +++ b/package/python-memory-profiler/python-memory-profiler.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/memory-profiler/json +md5 5fe93d5035288095c4f86ef69ee19f37 memory_profiler-0.61.0.tar.gz +sha256 4e5b73d7864a1d1292fb76a03e82a3e78ef934d06828a698d9dada76da2067b0 memory_profiler-0.61.0.tar.gz +# Locally computed sha256 checksums +sha256 51926ce91b8283532efa9dfb02518582c15f49c105a3ac18cce1f7a4947e96ae COPYING diff --git a/package/python-memory-profiler/python-memory-profiler.mk b/package/python-memory-profiler/python-memory-profiler.mk new file mode 100644 index 00000000..c7f84043 --- /dev/null +++ b/package/python-memory-profiler/python-memory-profiler.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-memory-profiler +# +################################################################################ + +PYTHON_MEMORY_PROFILER_VERSION = 0.61.0 +PYTHON_MEMORY_PROFILER_SOURCE = memory_profiler-$(PYTHON_MEMORY_PROFILER_VERSION).tar.gz +PYTHON_MEMORY_PROFILER_SITE = https://files.pythonhosted.org/packages/b2/88/e1907e1ca3488f2d9507ca8b0ae1add7b1cd5d3ca2bc8e5b329382ea2c7b +PYTHON_MEMORY_PROFILER_SETUP_TYPE = setuptools +PYTHON_MEMORY_PROFILER_LICENSE = BSD-3-Clause +PYTHON_MEMORY_PROFILER_LICENSE_FILES = COPYING + +$(eval $(python-package)) diff --git a/package/python-meson-python/python-meson-python.hash b/package/python-meson-python/python-meson-python.hash new file mode 100644 index 00000000..537353ba --- /dev/null +++ b/package/python-meson-python/python-meson-python.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/meson-python/json +md5 e91eb9946d7bb8be06e434c5a2dadd05 meson_python-0.15.0.tar.gz +sha256 fddb73eecd49e89c1c41c87937cd89c2d0b65a1c63ba28238681d4bd9484d26f meson_python-0.15.0.tar.gz +# Locally computed sha256 checksums +sha256 8f82ea9ef9a55b47f4170536d02e48b5bc33fc5135e5b4a1b5f8d6404833ec9b LICENSE diff --git a/package/python-meson-python/python-meson-python.mk b/package/python-meson-python/python-meson-python.mk new file mode 100644 index 00000000..64d5de4b --- /dev/null +++ b/package/python-meson-python/python-meson-python.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# python-meson-python +# +################################################################################ + +PYTHON_MESON_PYTHON_VERSION = 0.15.0 +PYTHON_MESON_PYTHON_SOURCE = meson_python-$(PYTHON_MESON_PYTHON_VERSION).tar.gz +PYTHON_MESON_PYTHON_SITE = https://files.pythonhosted.org/packages/a2/3b/276b596824a0820987fdcc7721618453b4f9a8305fe20b611a00ac3f948e +PYTHON_MESON_PYTHON_SETUP_TYPE = pep517 +PYTHON_MESON_PYTHON_LICENSE = MIT +PYTHON_MESON_PYTHON_LICENSE_FILES = LICENSE +HOST_PYTHON_MESON_PYTHON_DEPENDENCIES = \ + host-meson \ + host-patchelf \ + host-python-pyproject-metadata + +$(eval $(host-python-package)) diff --git a/package/python-midiutil/Config.in b/package/python-midiutil/Config.in new file mode 100644 index 00000000..c496e604 --- /dev/null +++ b/package/python-midiutil/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_MIDIUTIL + bool "python-midiutil" + help + A pure python library for creating multi-track MIDI files. + + https://github.com/MarkCWirt/MIDIUtil diff --git a/package/python-midiutil/python-midiutil.hash b/package/python-midiutil/python-midiutil.hash new file mode 100644 index 00000000..88340a23 --- /dev/null +++ b/package/python-midiutil/python-midiutil.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/midiutil/json +md5 948c16c74e7355268158f227b710edce MIDIUtil-1.2.1.tar.gz +sha256 79fa983bd1efc60785f68a8fe78fa8f45b8d7ec5898bf7cb7f3f7f3336d6a90a MIDIUtil-1.2.1.tar.gz +# Locally computed sha256 checksums +sha256 8d5bdaebe8445a4c2dc812c205eb5455ba123aa1af8503cc88712115ab7c97ef License.txt diff --git a/package/python-midiutil/python-midiutil.mk b/package/python-midiutil/python-midiutil.mk new file mode 100644 index 00000000..cb7e8f6c --- /dev/null +++ b/package/python-midiutil/python-midiutil.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-midiutil +# +################################################################################ + +PYTHON_MIDIUTIL_VERSION = 1.2.1 +PYTHON_MIDIUTIL_SOURCE = MIDIUtil-$(PYTHON_MIDIUTIL_VERSION).tar.gz +PYTHON_MIDIUTIL_SITE = https://files.pythonhosted.org/packages/f5/44/fde6772d8bfaea64fcf5eb948124d0a5fdf5f848b14ac22a23ced53e562d +PYTHON_MIDIUTIL_SETUP_TYPE = setuptools +PYTHON_MIDIUTIL_LICENSE = MIT +PYTHON_MIDIUTIL_LICENSE_FILES = License.txt + +$(eval $(python-package)) diff --git a/package/python-mimeparse/Config.in b/package/python-mimeparse/Config.in new file mode 100644 index 00000000..2437c366 --- /dev/null +++ b/package/python-mimeparse/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_MIMEPARSE + bool "python-mimeparse" + help + A module provides basic functions for parsing mime-type + names and matching them against a list of media-ranges. + + https://github.com/dbtsai/python-mimeparse diff --git a/package/python-mimeparse/python-mimeparse.hash b/package/python-mimeparse/python-mimeparse.hash new file mode 100644 index 00000000..00985841 --- /dev/null +++ b/package/python-mimeparse/python-mimeparse.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/python-mimeparse/json +md5 a32ae1df93be1ddb581d1c0fa124bab4 python-mimeparse-1.6.0.tar.gz +sha256 76e4b03d700a641fd7761d3cd4fdbbdcd787eade1ebfac43f877016328334f78 python-mimeparse-1.6.0.tar.gz +# Locally computed sha256 checksums +sha256 89807acf2309bd285f033404ee78581602f3cd9b819a16ac2f0e5f60ff4a473e LICENSE diff --git a/package/python-mimeparse/python-mimeparse.mk b/package/python-mimeparse/python-mimeparse.mk new file mode 100644 index 00000000..00bb1cf8 --- /dev/null +++ b/package/python-mimeparse/python-mimeparse.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-mimeparse +# +################################################################################ + +PYTHON_MIMEPARSE_VERSION = 1.6.0 +PYTHON_MIMEPARSE_SITE = https://files.pythonhosted.org/packages/0f/40/ac5f9e44a55b678c3cd881b4c3376e5b002677dbeab6fb3a50bac5d50d29 +PYTHON_MIMEPARSE_SETUP_TYPE = setuptools +PYTHON_MIMEPARSE_LICENSE = MIT +PYTHON_MIMEPARSE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-minimalmodbus/Config.in b/package/python-minimalmodbus/Config.in new file mode 100644 index 00000000..fd0f33e0 --- /dev/null +++ b/package/python-minimalmodbus/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_MINIMALMODBUS + bool "python-minimalmodbus" + select BR2_PACKAGE_PYTHON_SERIAL # runtime + help + Easy-to-use Modbus RTU and Modbus ASCII implementation. + + https://minimalmodbus.readthedocs.io/ diff --git a/package/python-minimalmodbus/python-minimalmodbus.hash b/package/python-minimalmodbus/python-minimalmodbus.hash new file mode 100644 index 00000000..635090fa --- /dev/null +++ b/package/python-minimalmodbus/python-minimalmodbus.hash @@ -0,0 +1,4 @@ +# sha256 from https://pypi.org/project/minimalmodbus +sha256 c3f5a56e107d537e4bb420f7e735841ab2939c8ca6fb528f5fe4124571315b64 minimalmodbus-2.1.1.tar.gz +# Hash for license file +sha256 abe787d472ae2069e935c84eb13fd770518dfb08b92d5f190f3cd7ff6d1f6f32 LICENSE diff --git a/package/python-minimalmodbus/python-minimalmodbus.mk b/package/python-minimalmodbus/python-minimalmodbus.mk new file mode 100644 index 00000000..cb8a0d8c --- /dev/null +++ b/package/python-minimalmodbus/python-minimalmodbus.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-minimalmodbus +# +################################################################################ + +PYTHON_MINIMALMODBUS_VERSION = 2.1.1 +PYTHON_MINIMALMODBUS_SOURCE = minimalmodbus-$(PYTHON_MINIMALMODBUS_VERSION).tar.gz +PYTHON_MINIMALMODBUS_SITE = https://files.pythonhosted.org/packages/37/fc/8a58f7bcdece751f16a4a9aac780acd1288aa8ac6adbffdd764c88fb71c6 +PYTHON_MINIMALMODBUS_DEPENDENCIES = host-python-setuptools +PYTHON_MINIMALMODBUS_SETUP_TYPE = pep517 +PYTHON_MINIMALMODBUS_LICENSE = Apache-2.0 +PYTHON_MINIMALMODBUS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-mistune/Config.in b/package/python-mistune/Config.in new file mode 100644 index 00000000..e62689d0 --- /dev/null +++ b/package/python-mistune/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_MISTUNE + bool "python-mistune" + help + The fastest markdown parser in pure Python with renderer + features, inspired by marked. + + https://pypi.python.org/pypi/mistune diff --git a/package/python-mistune/python-mistune.hash b/package/python-mistune/python-mistune.hash new file mode 100644 index 00000000..7dee76cf --- /dev/null +++ b/package/python-mistune/python-mistune.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/mistune/json +md5 8c02b3476d0343e0a4c75a2321729f01 mistune-3.0.2.tar.gz +sha256 fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8 mistune-3.0.2.tar.gz +# Locally computed sha256 checksums +sha256 539013fd8e19f744f8bf0e27a532bbff54cd689ecef7a800f56ae5dc824be870 LICENSE diff --git a/package/python-mistune/python-mistune.mk b/package/python-mistune/python-mistune.mk new file mode 100644 index 00000000..ac900c82 --- /dev/null +++ b/package/python-mistune/python-mistune.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-mistune +# +################################################################################ + +PYTHON_MISTUNE_VERSION = 3.0.2 +PYTHON_MISTUNE_SOURCE = mistune-$(PYTHON_MISTUNE_VERSION).tar.gz +PYTHON_MISTUNE_SITE = https://files.pythonhosted.org/packages/ef/c8/f0173fe3bf85fd891aee2e7bcd8207dfe26c2c683d727c5a6cc3aec7b628 +PYTHON_MISTUNE_LICENSE = BSD-3-Clause +PYTHON_MISTUNE_LICENSE_FILES = LICENSE +PYTHON_MISTUNE_SETUP_TYPE = setuptools + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-ml-dtypes/Config.in b/package/python-ml-dtypes/Config.in new file mode 100644 index 00000000..7dce2fea --- /dev/null +++ b/package/python-ml-dtypes/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_PYTHON_ML_DTYPES + bool "python-ml-dtypes" + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP # python-numpy + depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_9 # python-numpy + depends on BR2_HOST_GCC_AT_LEAST_9 # host-python-numpy + select BR2_PACKAGE_PYTHON_NUMPY + help + ml_dtypes is a stand-alone implementation of several NumPy + dtype extensions used in machine learning libraries. + + https://github.com/jax-ml/ml_dtypes + +comment "python-ml-dtypes needs a glibc or musl toolchain w/ C++, gcc >= 9" + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_9 || \ + !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) diff --git a/package/python-ml-dtypes/python-ml-dtypes.hash b/package/python-ml-dtypes/python-ml-dtypes.hash new file mode 100644 index 00000000..53bfacb5 --- /dev/null +++ b/package/python-ml-dtypes/python-ml-dtypes.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/ml_dtypes/json +md5 438c04dc0d941ec1b3b71667225c74c8 ml_dtypes-0.3.2.tar.gz +sha256 533059bc5f1764fac071ef54598db358c167c51a718f68f5bb55e3dee79d2967 ml_dtypes-0.3.2.tar.gz +# Locally computed sha256 checksums +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/python-ml-dtypes/python-ml-dtypes.mk b/package/python-ml-dtypes/python-ml-dtypes.mk new file mode 100644 index 00000000..80972650 --- /dev/null +++ b/package/python-ml-dtypes/python-ml-dtypes.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# python-ml-dtypes +# +################################################################################ + +PYTHON_ML_DTYPES_VERSION = 0.3.2 +PYTHON_ML_DTYPES_SOURCE = ml_dtypes-$(PYTHON_ML_DTYPES_VERSION).tar.gz +PYTHON_ML_DTYPES_SITE = https://files.pythonhosted.org/packages/39/7d/8d85fcba868758b3a546e6914e727abd8f29ea6918079f816975c9eecd63 +PYTHON_ML_DTYPES_LICENSE = Apache-2.0 +PYTHON_ML_DTYPES_LICENSE_FILES = LICENSE +PYTHON_ML_DTYPES_SETUP_TYPE = setuptools +PYTHON_ML_DTYPES_BUILD_OPTS = --skip-dependency-check + +PYTHON_ML_DTYPES_DEPENDENCIES = \ + host-python-numpy \ + python-numpy + +$(eval $(python-package)) diff --git a/package/python-modbus-tk/Config.in b/package/python-modbus-tk/Config.in new file mode 100644 index 00000000..16d87ffc --- /dev/null +++ b/package/python-modbus-tk/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_MODBUS_TK + bool "python-modbus-tk" + select BR2_PACKAGE_PYTHON_SERIAL # runtime + help + Implementation of modbus protocol in python. + + https://github.com/ljean/modbus-tk/ diff --git a/package/python-modbus-tk/python-modbus-tk.hash b/package/python-modbus-tk/python-modbus-tk.hash new file mode 100644 index 00000000..c7f4ac2d --- /dev/null +++ b/package/python-modbus-tk/python-modbus-tk.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/modbus-tk/json +md5 2e66c361d3e4591a19be1259ef50fdf7 modbus_tk-1.1.3.tar.gz +sha256 690fa7bb86ea978992465d2d61c8b5acc639ce0e8b833a0aa96d4dd172c5644a modbus_tk-1.1.3.tar.gz +# Locally computed sha256 checksums +sha256 3b6a7f9c478ac1982e86cdadb45eb4788241b95839500eb26839d5053b74a24a license.txt +sha256 aa7ca42152a13db6a27b31944f99851efc3b9ee813912ff21d7d6ceadca62e6f copying.txt diff --git a/package/python-modbus-tk/python-modbus-tk.mk b/package/python-modbus-tk/python-modbus-tk.mk new file mode 100644 index 00000000..d8552e57 --- /dev/null +++ b/package/python-modbus-tk/python-modbus-tk.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-modbus-tk +# +################################################################################ + +PYTHON_MODBUS_TK_VERSION = 1.1.3 +PYTHON_MODBUS_TK_SOURCE = modbus_tk-$(PYTHON_MODBUS_TK_VERSION).tar.gz +PYTHON_MODBUS_TK_SITE = https://files.pythonhosted.org/packages/8d/9f/5963e30dba160dbc646b76c59ca8136709c7fe9002bbaaa3cf1e1bb0404b +PYTHON_MODBUS_TK_SETUP_TYPE = setuptools +PYTHON_MODBUS_TK_LICENSE = LGPL-2.1+ +PYTHON_MODBUS_TK_LICENSE_FILES = license.txt copying.txt + +$(eval $(python-package)) diff --git a/package/python-more-itertools/Config.in b/package/python-more-itertools/Config.in new file mode 100644 index 00000000..5a74f95d --- /dev/null +++ b/package/python-more-itertools/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_MORE_ITERTOOLS + bool "python-more-itertools" + help + More routines for operating on iterables, beyond itertools. + + https://github.com/more-itertools/more-itertools diff --git a/package/python-more-itertools/python-more-itertools.hash b/package/python-more-itertools/python-more-itertools.hash new file mode 100644 index 00000000..4d119cb2 --- /dev/null +++ b/package/python-more-itertools/python-more-itertools.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/more-itertools/json +md5 1737bb4d9d09501f75f498538efe3cf4 more-itertools-10.2.0.tar.gz +sha256 8fccb480c43d3e99a00087634c06dd02b0d50fbf088b380de5a41a015ec239e1 more-itertools-10.2.0.tar.gz +# Locally computed sha256 checksums +sha256 09f1c8c9e941af3e584d59641ea9b87d83c0cb0fd007eb5ef391a7e2643c1a46 LICENSE diff --git a/package/python-more-itertools/python-more-itertools.mk b/package/python-more-itertools/python-more-itertools.mk new file mode 100644 index 00000000..98b499c3 --- /dev/null +++ b/package/python-more-itertools/python-more-itertools.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-more-itertools +# +################################################################################ + +PYTHON_MORE_ITERTOOLS_VERSION = 10.2.0 +PYTHON_MORE_ITERTOOLS_SOURCE = more-itertools-$(PYTHON_MORE_ITERTOOLS_VERSION).tar.gz +PYTHON_MORE_ITERTOOLS_SITE = https://files.pythonhosted.org/packages/df/ad/7905a7fd46ffb61d976133a4f47799388209e73cbc8c1253593335da88b4 +PYTHON_MORE_ITERTOOLS_SETUP_TYPE = flit +PYTHON_MORE_ITERTOOLS_LICENSE = MIT +PYTHON_MORE_ITERTOOLS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-mpd2/Config.in b/package/python-mpd2/Config.in new file mode 100644 index 00000000..52dcbf00 --- /dev/null +++ b/package/python-mpd2/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_MPD2 + bool "python-mpd2" + help + A Python MPD client library. + + https://github.com/Mic92/python-mpd2 diff --git a/package/python-mpd2/python-mpd2.hash b/package/python-mpd2/python-mpd2.hash new file mode 100644 index 00000000..0e5d9206 --- /dev/null +++ b/package/python-mpd2/python-mpd2.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/python-mpd2/json +md5 b218d6f233c23da0bc82c372308bbf8d python-mpd2-3.1.1.tar.gz +sha256 4baec3584cc43ed9948d5559079fafc2679b06b2ade273e909b3582654b2b3f5 python-mpd2-3.1.1.tar.gz +# Locally computed sha256 checksums +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.txt diff --git a/package/python-mpd2/python-mpd2.mk b/package/python-mpd2/python-mpd2.mk new file mode 100644 index 00000000..2d2784e8 --- /dev/null +++ b/package/python-mpd2/python-mpd2.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-mpd2 +# +################################################################################ + +PYTHON_MPD2_VERSION = 3.1.1 +PYTHON_MPD2_SITE = https://files.pythonhosted.org/packages/53/be/e77206eb35eb37ccd3506fba237e1431431d04c482707730ce2a6802e95c +PYTHON_MPD2_SETUP_TYPE = setuptools +PYTHON_MPD2_LICENSE = LGPL-3.0+ +PYTHON_MPD2_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-mpmath/Config.in b/package/python-mpmath/Config.in new file mode 100644 index 00000000..497b7d2a --- /dev/null +++ b/package/python-mpmath/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_MPMATH + bool "python-mpmath" + help + mpmath is a free (BSD licensed) Python library for real and + complex floating-point arithmetic with arbitrary precision. + + https://mpmath.org/ diff --git a/package/python-mpmath/python-mpmath.hash b/package/python-mpmath/python-mpmath.hash new file mode 100644 index 00000000..1b263c92 --- /dev/null +++ b/package/python-mpmath/python-mpmath.hash @@ -0,0 +1,3 @@ +# Locally computed sha256 checksums +sha256 7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f mpmath-1.3.0.tar.gz +sha256 c26cae81da4508e5e249985777a33821f183223ebb74d7f8cfbf90fe7eef2fb7 LICENSE diff --git a/package/python-mpmath/python-mpmath.mk b/package/python-mpmath/python-mpmath.mk new file mode 100644 index 00000000..cd19dd52 --- /dev/null +++ b/package/python-mpmath/python-mpmath.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-mpmath +# +################################################################################ + +PYTHON_MPMATH_VERSION = 1.3.0 +PYTHON_MPMATH_SOURCE = mpmath-$(PYTHON_MPMATH_VERSION).tar.gz +PYTHON_MPMATH_SITE = https://mpmath.org/files +PYTHON_MPMATH_SETUP_TYPE = setuptools +PYTHON_MPMATH_LICENSE = BSD-3-Clause +PYTHON_MPMATH_LICENSE_FILES = LICENSE +PYTHON_MPMATH_CPE_ID_VENDOR = mpmath +PYTHON_MPMATH_CPE_ID_PRODUCT = mpmath + +$(eval $(python-package)) diff --git a/package/python-msgfy/Config.in b/package/python-msgfy/Config.in new file mode 100644 index 00000000..7875379e --- /dev/null +++ b/package/python-msgfy/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_MSGFY + bool "python-msgfy" + help + msgfy is a Python library for convert Exception instance to + a human-readable error message. + + https://github.com/thombashi/msgfy diff --git a/package/python-msgfy/python-msgfy.hash b/package/python-msgfy/python-msgfy.hash new file mode 100644 index 00000000..2517afbb --- /dev/null +++ b/package/python-msgfy/python-msgfy.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/msgfy/json +md5 ef3c61804003f4356119f7d00c5932f9 msgfy-0.2.1.tar.gz +sha256 161024732591444cc05ca3982a010005932005ec861467dead49349447a91671 msgfy-0.2.1.tar.gz +# Locally computed sha256 checksums +sha256 fcfe96f8fb1bf3478a51c828e7f7afee01500ce1c2d4345d052edb858be05227 LICENSE diff --git a/package/python-msgfy/python-msgfy.mk b/package/python-msgfy/python-msgfy.mk new file mode 100644 index 00000000..8565c221 --- /dev/null +++ b/package/python-msgfy/python-msgfy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-msgfy +# +################################################################################ + +PYTHON_MSGFY_VERSION = 0.2.1 +PYTHON_MSGFY_SOURCE = msgfy-$(PYTHON_MSGFY_VERSION).tar.gz +PYTHON_MSGFY_SITE = https://files.pythonhosted.org/packages/51/0e/b78151a63e8c5cab745e90ed7b4a741dba5439a8538636bf6a5da72bad23 +PYTHON_MSGFY_SETUP_TYPE = setuptools +PYTHON_MSGFY_LICENSE = MIT +PYTHON_MSGFY_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-msgpack/Config.in b/package/python-msgpack/Config.in new file mode 100644 index 00000000..2050d4f0 --- /dev/null +++ b/package/python-msgpack/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_MSGPACK + bool "python-msgpack" + help + MessagePack (http://msgpack.org/) is a fast, compact binary + serialization format, suitable for similar data to JSON. + This package provides a pure python library for reading + and writing MessagePack data. + + https://pypi.python.org/pypi/msgpack-python/ diff --git a/package/python-msgpack/python-msgpack.hash b/package/python-msgpack/python-msgpack.hash new file mode 100644 index 00000000..50462db8 --- /dev/null +++ b/package/python-msgpack/python-msgpack.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/msgpack/json +md5 a5a4172b2e89812ec28267dd8942b77d msgpack-1.0.7.tar.gz +sha256 572efc93db7a4d27e404501975ca6d2d9775705c2d922390d878fcf768d92c87 msgpack-1.0.7.tar.gz +# Locally computed sha256 checksums +sha256 492dedba85da5872f78e6091bcd1fea474d660d35acb4dee964b8aab3f007427 COPYING diff --git a/package/python-msgpack/python-msgpack.mk b/package/python-msgpack/python-msgpack.mk new file mode 100644 index 00000000..9cdf5263 --- /dev/null +++ b/package/python-msgpack/python-msgpack.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# python-msgpack +# +################################################################################ + +PYTHON_MSGPACK_VERSION = 1.0.7 +PYTHON_MSGPACK_SOURCE = msgpack-$(PYTHON_MSGPACK_VERSION).tar.gz +PYTHON_MSGPACK_SITE = https://files.pythonhosted.org/packages/c2/d5/5662032db1571110b5b51647aed4b56dfbd01bfae789fa566a2be1f385d1 +PYTHON_MSGPACK_LICENSE = Apache-2.0 +PYTHON_MSGPACK_LICENSE_FILES = COPYING +PYTHON_MSGPACK_SETUP_TYPE = setuptools +PYTHON_MSGPACK_BUILD_OPTS = --skip-dependency-check + +# When set in the environment, whatever the value, MSGPACK_PUREPYTHON drives +# using the pure python implementation rather than rely on the C++ native code. +# So we can't force it to use C++; we can only force it to use pure python. +ifeq ($(BR2_INSTALL_LIBSTDCPP),) +PYTHON_MSGPACK_ENV = MSGPACK_PUREPYTHON=1 +endif + +$(eval $(python-package)) diff --git a/package/python-multidict/Config.in b/package/python-multidict/Config.in new file mode 100644 index 00000000..9a92a6d3 --- /dev/null +++ b/package/python-multidict/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_MULTIDICT + bool "python-multidict" + help + Multidict is dict-like collection of key-value pairs where a + key may occur more than once in the container. + + https://github.com/aio-libs/multidict diff --git a/package/python-multidict/python-multidict.hash b/package/python-multidict/python-multidict.hash new file mode 100644 index 00000000..d23a3de3 --- /dev/null +++ b/package/python-multidict/python-multidict.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/multidict/json +md5 abcf9bf19365d06aa784de07da02115d multidict-6.0.5.tar.gz +sha256 f7e301075edaf50500f0b341543c41194d8df3ae5caf4702f2095f3ca73dd8da multidict-6.0.5.tar.gz +# Locally computed sha256 checksums +sha256 93d11a968e2f0f36373c40811ff6d20e173f58c3cab5884cd6617bbfd795492a LICENSE diff --git a/package/python-multidict/python-multidict.mk b/package/python-multidict/python-multidict.mk new file mode 100644 index 00000000..3c9a21f1 --- /dev/null +++ b/package/python-multidict/python-multidict.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-multidict +# +################################################################################ + +PYTHON_MULTIDICT_VERSION = 6.0.5 +PYTHON_MULTIDICT_SOURCE = multidict-$(PYTHON_MULTIDICT_VERSION).tar.gz +PYTHON_MULTIDICT_SITE = https://files.pythonhosted.org/packages/f9/79/722ca999a3a09a63b35aac12ec27dfa8e5bb3a38b0f857f7a1a209a88836 +PYTHON_MULTIDICT_SETUP_TYPE = setuptools +PYTHON_MULTIDICT_LICENSE = Apache-2.0 +PYTHON_MULTIDICT_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-multipart/Config.in b/package/python-multipart/Config.in new file mode 100644 index 00000000..07002e10 --- /dev/null +++ b/package/python-multipart/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_MULTIPART + bool "python-multipart" + help + A streaming multipart parser for Python. + + https://github.com/andrew-d/python-multipart diff --git a/package/python-multipart/python-multipart.hash b/package/python-multipart/python-multipart.hash new file mode 100644 index 00000000..29f7f2bc --- /dev/null +++ b/package/python-multipart/python-multipart.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/python-multipart/json +md5 0339000d92e78abbaac815954da6b826 python_multipart-0.0.9.tar.gz +sha256 03f54688c663f1b7977105f021043b0793151e4cb1c1a9d4a11fc13d622c4026 python_multipart-0.0.9.tar.gz +# Locally computed sha256 checksums +sha256 a8e833176cd617daf00b9d6d39fa15ca8edebc6d1643079cd2f4893c0c289be2 LICENSE.txt diff --git a/package/python-multipart/python-multipart.mk b/package/python-multipart/python-multipart.mk new file mode 100644 index 00000000..62ae37d7 --- /dev/null +++ b/package/python-multipart/python-multipart.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-multipart +# +################################################################################ + +PYTHON_MULTIPART_VERSION = 0.0.9 +PYTHON_MULTIPART_SOURCE = python_multipart-$(PYTHON_MULTIPART_VERSION).tar.gz +PYTHON_MULTIPART_SITE = https://files.pythonhosted.org/packages/5c/0f/9c55ac6c84c0336e22a26fa84ca6c51d58d7ac3a2d78b0dfa8748826c883 +PYTHON_MULTIPART_SETUP_TYPE = pep517 +PYTHON_MULTIPART_LICENSE = Apache-2.0 +PYTHON_MULTIPART_LICENSE_FILES = LICENSE.txt +PYTHON_MULTIPART_DEPENDENCIES = host-python-hatchling + +$(eval $(python-package)) diff --git a/package/python-munch/Config.in b/package/python-munch/Config.in new file mode 100644 index 00000000..ceb9fbaf --- /dev/null +++ b/package/python-munch/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_MUNCH + bool "python-munch" + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + help + Munch is a dictionary that supports attribute-style access, + a la JavaScript. + + https://github.com/Infinidat/munch diff --git a/package/python-munch/python-munch.hash b/package/python-munch/python-munch.hash new file mode 100644 index 00000000..a895bc91 --- /dev/null +++ b/package/python-munch/python-munch.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/munch/json +md5 4e70cf760e3b81dcaa6050803c1dbd72 munch-4.0.0.tar.gz +sha256 542cb151461263216a4e37c3fd9afc425feeaf38aaa3025cd2a981fadb422235 munch-4.0.0.tar.gz +# Locally computed sha256 checksums +sha256 57ca95c92059c8380625192462979bd32994aae3fcdf902ff6eb1e467eeb0469 LICENSE.txt diff --git a/package/python-munch/python-munch.mk b/package/python-munch/python-munch.mk new file mode 100644 index 00000000..c2941aa0 --- /dev/null +++ b/package/python-munch/python-munch.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-munch +# +################################################################################ + +PYTHON_MUNCH_VERSION = 4.0.0 +PYTHON_MUNCH_SOURCE = munch-$(PYTHON_MUNCH_VERSION).tar.gz +PYTHON_MUNCH_SITE = https://files.pythonhosted.org/packages/e7/2b/45098135b5f9f13221820d90f9e0516e11a2a0f55012c13b081d202b782a +PYTHON_MUNCH_SETUP_TYPE = setuptools +PYTHON_MUNCH_LICENSE = MIT +PYTHON_MUNCH_LICENSE_FILES = LICENSE.txt +PYTHON_MUNCH_DEPENDENCIES = host-python-pbr + +$(eval $(python-package)) diff --git a/package/python-mutagen/Config.in b/package/python-mutagen/Config.in new file mode 100644 index 00000000..dc183a6e --- /dev/null +++ b/package/python-mutagen/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_PYTHON_MUTAGEN + bool "python-mutagen" + select BR2_PACKAGE_PYTHON3_PYEXPAT # runtime + select BR2_PACKAGE_PYTHON3_ZLIB # 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/package/python-mutagen/python-mutagen.hash b/package/python-mutagen/python-mutagen.hash new file mode 100644 index 00000000..b2d846e7 --- /dev/null +++ b/package/python-mutagen/python-mutagen.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/mutagen/json +md5 aa2d0d73e71c5daa1a730f7b94272357 mutagen-1.47.0.tar.gz +sha256 719fadef0a978c31b4cf3c956261b3c58b6948b32023078a2117b1de09f0fc99 mutagen-1.47.0.tar.gz +# Locally computed sha256 checksums +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/python-mutagen/python-mutagen.mk b/package/python-mutagen/python-mutagen.mk new file mode 100644 index 00000000..d42ed27e --- /dev/null +++ b/package/python-mutagen/python-mutagen.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-mutagen +# +################################################################################ + +PYTHON_MUTAGEN_VERSION = 1.47.0 +PYTHON_MUTAGEN_SOURCE = mutagen-$(PYTHON_MUTAGEN_VERSION).tar.gz +PYTHON_MUTAGEN_SITE = https://files.pythonhosted.org/packages/81/e6/64bc71b74eef4b68e61eb921dcf72dabd9e4ec4af1e11891bbd312ccbb77 +PYTHON_MUTAGEN_LICENSE = GPL-2.0 +PYTHON_MUTAGEN_LICENSE_FILES = COPYING +PYTHON_MUTAGEN_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-mwclient/Config.in b/package/python-mwclient/Config.in new file mode 100644 index 00000000..dc93e6c0 --- /dev/null +++ b/package/python-mwclient/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_MWCLIENT + bool "python-mwclient" + select BR2_PACKAGE_PYTHON_REQUESTS_OAUTHLIB # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + help + Python client library to interface with the MediaWiki API + + https://github.com/mwclient/mwclient diff --git a/package/python-mwclient/python-mwclient.hash b/package/python-mwclient/python-mwclient.hash new file mode 100644 index 00000000..354bd685 --- /dev/null +++ b/package/python-mwclient/python-mwclient.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/mwclient/json +md5 148bd36bfaaf591bd9c0076cbf1ed888 mwclient-0.10.1.tar.gz +sha256 79363dd8d12f5e3b91b92b63152bf9dfef27da786c076a244e1f148c8dd67139 mwclient-0.10.1.tar.gz +# Locally computed +sha256 67689d1fd48a5adba31272eed653c12160dd3abbfe92ab056ac42a155e12e523 LICENSE.md diff --git a/package/python-mwclient/python-mwclient.mk b/package/python-mwclient/python-mwclient.mk new file mode 100644 index 00000000..07aa877e --- /dev/null +++ b/package/python-mwclient/python-mwclient.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-mwclient +# +################################################################################ + +PYTHON_MWCLIENT_VERSION = 0.10.1 +PYTHON_MWCLIENT_SOURCE = mwclient-$(PYTHON_MWCLIENT_VERSION).tar.gz +PYTHON_MWCLIENT_SITE = https://files.pythonhosted.org/packages/97/b4/5fc70ad3286a8d8ec4b9ac01acad0f6b00c5a48d4a16b9d3be6519b7eb21 +PYTHON_MWCLIENT_LICENSE = MIT +PYTHON_MWCLIENT_LICENSE_FILES = LICENSE.md +PYTHON_MWCLIENT_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-mwscrape/Config.in b/package/python-mwscrape/Config.in new file mode 100644 index 00000000..fc9d5223 --- /dev/null +++ b/package/python-mwscrape/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_MWSCRAPE + bool "python-mwscrape" + select BR2_PACKAGE_PYTHON_COUCHDB # 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/package/python-mwscrape/python-mwscrape.hash b/package/python-mwscrape/python-mwscrape.hash new file mode 100644 index 00000000..0f64a9e1 --- /dev/null +++ b/package/python-mwscrape/python-mwscrape.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 2d0e6c747f6a866dedbc759f78830b3f496e8d03401a3c727d0b48735341c5b6 python-mwscrape-568ccbe6e12dd6391277df02adf724ba0e5f9197.tar.gz +sha256 fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85 LICENSE.txt diff --git a/package/python-mwscrape/python-mwscrape.mk b/package/python-mwscrape/python-mwscrape.mk new file mode 100644 index 00000000..8b6c718c --- /dev/null +++ b/package/python-mwscrape/python-mwscrape.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-mwscrape +# +################################################################################ + +PYTHON_MWSCRAPE_VERSION = 568ccbe6e12dd6391277df02adf724ba0e5f9197 +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 = setuptools + +$(eval $(python-package)) diff --git a/package/python-mwscrape2slob/Config.in b/package/python-mwscrape2slob/Config.in new file mode 100644 index 00000000..6ced2534 --- /dev/null +++ b/package/python-mwscrape2slob/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_PYTHON_MWSCRAPE2SLOB + bool "python-mwscrape2slob" + depends on !BR2_BINFMT_FLAT # python-slob -> python-pyicu -> icu + depends on BR2_HOST_GCC_AT_LEAST_4_9 # python-slob -> python-pyicu -> icu + depends on BR2_INSTALL_LIBSTDCPP # python-slob -> python-pyicu -> icu + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # python-slob -> python-pyicu -> icu + 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++, gcc >= 4.9, host gcc >= 4.9" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_HOST_GCC_AT_LEAST_4_9 diff --git a/package/python-mwscrape2slob/python-mwscrape2slob.hash b/package/python-mwscrape2slob/python-mwscrape2slob.hash new file mode 100644 index 00000000..51b62585 --- /dev/null +++ b/package/python-mwscrape2slob/python-mwscrape2slob.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 f1c1c79526fb3e0dac1c2c43e57a38b8641672e7008c5530d4b75e864eff232a python-mwscrape2slob-e01d3e92f0a372ebd0f57390e437a28f9d3c0438.tar.gz diff --git a/package/python-mwscrape2slob/python-mwscrape2slob.mk b/package/python-mwscrape2slob/python-mwscrape2slob.mk new file mode 100644 index 00000000..a99005ba --- /dev/null +++ b/package/python-mwscrape2slob/python-mwscrape2slob.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# python-mwscrape2slob +# +################################################################################ + +PYTHON_MWSCRAPE2SLOB_VERSION = e01d3e92f0a372ebd0f57390e437a28f9d3c0438 +PYTHON_MWSCRAPE2SLOB_SITE = $(call github,itkach,mwscrape2slob,$(PYTHON_MWSCRAPE2SLOB_VERSION)) +PYTHON_MWSCRAPE2SLOB_LICENSE = GPL-3.0, Apache-2.0 (MathJax), GPL (MediaWiki monobook style sheet) +PYTHON_MWSCRAPE2SLOB_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-mypy-extensions/Config.in b/package/python-mypy-extensions/Config.in new file mode 100644 index 00000000..cc5b7803 --- /dev/null +++ b/package/python-mypy-extensions/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_MYPY_EXTENSIONS + bool "python-mypy-extensions" + help + Experimental type system extensions for programs checked + with the mypy typechecker. + + https://github.com/python/mypy_extensions diff --git a/package/python-mypy-extensions/python-mypy-extensions.hash b/package/python-mypy-extensions/python-mypy-extensions.hash new file mode 100644 index 00000000..5e3763bd --- /dev/null +++ b/package/python-mypy-extensions/python-mypy-extensions.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/mypy_extensions/json +md5 5b77a3cafc7e9749a0157533c0915b5d mypy_extensions-1.0.0.tar.gz +sha256 75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782 mypy_extensions-1.0.0.tar.gz +# Locally computed sha256 checksums +sha256 a50450da1d53cd777b80ced77c58ff96abe0ccd879706bd142c3ec20e245f0b4 LICENSE diff --git a/package/python-mypy-extensions/python-mypy-extensions.mk b/package/python-mypy-extensions/python-mypy-extensions.mk new file mode 100644 index 00000000..494a03ac --- /dev/null +++ b/package/python-mypy-extensions/python-mypy-extensions.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-mypy-extensions +# +################################################################################ + +PYTHON_MYPY_EXTENSIONS_VERSION = 1.0.0 +PYTHON_MYPY_EXTENSIONS_SOURCE = mypy_extensions-$(PYTHON_MYPY_EXTENSIONS_VERSION).tar.gz +PYTHON_MYPY_EXTENSIONS_SITE = https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f +PYTHON_MYPY_EXTENSIONS_SETUP_TYPE = setuptools +PYTHON_MYPY_EXTENSIONS_LICENSE = MIT +PYTHON_MYPY_EXTENSIONS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-nested-dict/Config.in b/package/python-nested-dict/Config.in new file mode 100644 index 00000000..dc453fff --- /dev/null +++ b/package/python-nested-dict/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_NESTED_DICT + bool "python-nested-dict" + help + Python dictionary with automatic and arbitrary levels of + nestedness. + + http://pypi.python.org/pypi/nested_dict diff --git a/package/python-nested-dict/python-nested-dict.hash b/package/python-nested-dict/python-nested-dict.hash new file mode 100644 index 00000000..e5193e23 --- /dev/null +++ b/package/python-nested-dict/python-nested-dict.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/nested-dict/json +md5 e08e2e8de6d002f9ddda4eea5a4528c2 nested_dict-1.61.tar.gz +sha256 de0fb5bac82ba7bcc23736f09373f18628ea57f92bbaa13480d23f261c41e771 nested_dict-1.61.tar.gz +# Locally computed sha256 checksums +sha256 c84eb6b667b91fd9b8991f500c168354eb51af5b2dd970d8ee51ce336d9aeed1 LICENSE.TXT diff --git a/package/python-nested-dict/python-nested-dict.mk b/package/python-nested-dict/python-nested-dict.mk new file mode 100644 index 00000000..1a5b180e --- /dev/null +++ b/package/python-nested-dict/python-nested-dict.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-nested-dict +# +################################################################################ + +PYTHON_NESTED_DICT_VERSION = 1.61 +PYTHON_NESTED_DICT_SOURCE = nested_dict-$(PYTHON_NESTED_DICT_VERSION).tar.gz +PYTHON_NESTED_DICT_SITE = https://files.pythonhosted.org/packages/42/d0/3b27fa65b16a2e44d793af59929fcdb3bb84b4664462ff2830105dfd9b7d +PYTHON_NESTED_DICT_SETUP_TYPE = setuptools +PYTHON_NESTED_DICT_LICENSE = MIT +PYTHON_NESTED_DICT_LICENSE_FILES = LICENSE.TXT + +$(eval $(python-package)) diff --git a/package/python-netaddr/Config.in b/package/python-netaddr/Config.in new file mode 100644 index 00000000..534d136f --- /dev/null +++ b/package/python-netaddr/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_NETADDR + bool "python-netaddr" + help + A network address manipulation library for Python. + + https://pypi.python.org/pypi/netaddr diff --git a/package/python-netaddr/python-netaddr.hash b/package/python-netaddr/python-netaddr.hash new file mode 100644 index 00000000..f969aeec --- /dev/null +++ b/package/python-netaddr/python-netaddr.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/netaddr/json +md5 c0d7b080da18c851ea436389813d7652 netaddr-0.10.1.tar.gz +sha256 f4da4222ca8c3f43c8e18a8263e5426c750a3a837fdfeccf74c68d0408eaa3bf netaddr-0.10.1.tar.gz +# Locally computed sha256 checksums +sha256 0e53de62547787462f41eefb5cee31a14f7ea767ba0362c6f9304f1742486d47 LICENSE diff --git a/package/python-netaddr/python-netaddr.mk b/package/python-netaddr/python-netaddr.mk new file mode 100644 index 00000000..79e55a73 --- /dev/null +++ b/package/python-netaddr/python-netaddr.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-netaddr +# +################################################################################ + +PYTHON_NETADDR_VERSION = 0.10.1 +PYTHON_NETADDR_SOURCE = netaddr-$(PYTHON_NETADDR_VERSION).tar.gz +PYTHON_NETADDR_SITE = https://files.pythonhosted.org/packages/af/96/f4878091248450bbdebfbd01bf1d95821bd47eb38e756815a0431baa6b07 +PYTHON_NETADDR_LICENSE = BSD-3-Clause +PYTHON_NETADDR_LICENSE_FILES = LICENSE +PYTHON_NETADDR_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-netifaces/Config.in b/package/python-netifaces/Config.in new file mode 100644 index 00000000..1f54f4bd --- /dev/null +++ b/package/python-netifaces/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_NETIFACES + bool "python-netifaces" + help + Portable access to network interfaces from Python. + + http://alastairs-place.net/projects/netifaces diff --git a/package/python-netifaces/python-netifaces.hash b/package/python-netifaces/python-netifaces.hash new file mode 100644 index 00000000..ec8ccf62 --- /dev/null +++ b/package/python-netifaces/python-netifaces.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/netifaces/json +md5 3146dcb3297dd018ae5eb9a52b440419 netifaces-0.11.0.tar.gz +sha256 043a79146eb2907edf439899f262b3dfe41717d34124298ed281139a8b93ca32 netifaces-0.11.0.tar.gz +# Locally computed sha256 checksums +sha256 b20b895164b72b9cc0170e6c0d60b14f9aaacc6862c0556eed41eaa348883705 LICENSE diff --git a/package/python-netifaces/python-netifaces.mk b/package/python-netifaces/python-netifaces.mk new file mode 100644 index 00000000..1b1aa995 --- /dev/null +++ b/package/python-netifaces/python-netifaces.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-netifaces +# +################################################################################ + +PYTHON_NETIFACES_VERSION = 0.11.0 +PYTHON_NETIFACES_SOURCE = netifaces-$(PYTHON_NETIFACES_VERSION).tar.gz +PYTHON_NETIFACES_SITE = https://files.pythonhosted.org/packages/a6/91/86a6eac449ddfae239e93ffc1918cf33fd9bab35c04d1e963b311e347a73 +PYTHON_NETIFACES_LICENSE = MIT +PYTHON_NETIFACES_LICENSE_FILES = LICENSE +PYTHON_NETIFACES_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-networkmanager/Config.in b/package/python-networkmanager/Config.in new file mode 100644 index 00000000..9b2b474d --- /dev/null +++ b/package/python-networkmanager/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_PYTHON_NETWORKMANAGER + bool "python-networkmanager" + depends on BR2_PACKAGE_NETWORK_MANAGER # runtime + depends on BR2_USE_WCHAR # dbus-python + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus-python + depends on BR2_PACKAGE_DBUS # dbus-python + select BR2_PACKAGE_DBUS_PYTHON # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + help + python-networkmanager wraps NetworkManagers D-Bus interface + so you can be less verbose when talking to NetworkManager + from python. All interfaces have been wrapped in classes, + properties are exposed as python properties and function + calls are forwarded to the correct interface. + + https://pypi.python.org/pypi/python-networkmanager/ diff --git a/package/python-networkmanager/python-networkmanager.hash b/package/python-networkmanager/python-networkmanager.hash new file mode 100644 index 00000000..d4e21f1d --- /dev/null +++ b/package/python-networkmanager/python-networkmanager.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/python-networkmanager/json +md5 7e05d3ca40a4fa50222ba93cda3d0d02 python-networkmanager-2.2.tar.gz +sha256 de6eb921d94aba7549f428ed2b3aa482a5d543ecb6965cbaa0fbb555ab31b9d5 python-networkmanager-2.2.tar.gz +# Locally computed sha256 checksums +sha256 d12bbc105c723d4471b39fe8197d43df822e5b4bda822a8255719d039e701f49 COPYING diff --git a/package/python-networkmanager/python-networkmanager.mk b/package/python-networkmanager/python-networkmanager.mk new file mode 100644 index 00000000..785d2c0d --- /dev/null +++ b/package/python-networkmanager/python-networkmanager.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-networkmanager +# +################################################################################ + +PYTHON_NETWORKMANAGER_VERSION = 2.2 +PYTHON_NETWORKMANAGER_SITE = https://files.pythonhosted.org/packages/f2/3d/0924d03117636b80a88af783f857fb101e4c47953a8bb0f733b964d50af4 +PYTHON_NETWORKMANAGER_SETUP_TYPE = setuptools +PYTHON_NETWORKMANAGER_LICENSE = Zlib +PYTHON_NETWORKMANAGER_LICENSE_FILES = COPYING + +$(eval $(python-package)) diff --git a/package/python-networkx/Config.in b/package/python-networkx/Config.in new file mode 100644 index 00000000..e2fc6ae4 --- /dev/null +++ b/package/python-networkx/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_NETWORKX + bool "python-networkx" + help + A Python package for the creation, manipulation, + and study of the structure, dynamics, and + functions of complex networks. + + https://pypi.python.org/pypi/networkx diff --git a/package/python-networkx/python-networkx.hash b/package/python-networkx/python-networkx.hash new file mode 100644 index 00000000..b9fe50fd --- /dev/null +++ b/package/python-networkx/python-networkx.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/networkx/json +md5 e81583dcb3d929b60660721912f3faed networkx-3.2.1.tar.gz +sha256 9f1bb5cf3409bf324e0a722c20bdb4c20ee39bf1c30ce8ae499c8502b0b5e0c6 networkx-3.2.1.tar.gz +# Locally computed sha256 checksums +sha256 50b5a27cb43f7a20cede7aa7b9ab2033552e0412c9a1fde51d38885c1417e95f LICENSE.txt diff --git a/package/python-networkx/python-networkx.mk b/package/python-networkx/python-networkx.mk new file mode 100644 index 00000000..e463dca4 --- /dev/null +++ b/package/python-networkx/python-networkx.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-networkx +# +################################################################################ + +PYTHON_NETWORKX_VERSION = 3.2.1 +PYTHON_NETWORKX_SOURCE = networkx-$(PYTHON_NETWORKX_VERSION).tar.gz +PYTHON_NETWORKX_SITE = https://files.pythonhosted.org/packages/c4/80/a84676339aaae2f1cfdf9f418701dd634aef9cc76f708ef55c36ff39c3ca +PYTHON_NETWORKX_LICENSE = BSD-3-Clause +PYTHON_NETWORKX_LICENSE_FILES = LICENSE.txt +PYTHON_NETWORKX_CPE_ID_VENDOR = python +PYTHON_NETWORKX_CPE_ID_PRODUCT = networkx +PYTHON_NETWORKX_SETUP_TYPE = setuptools + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-numpy/Config.in b/package/python-numpy/Config.in new file mode 100644 index 00000000..c27baec3 --- /dev/null +++ b/package/python-numpy/Config.in @@ -0,0 +1,36 @@ +config BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + bool + # Numpy has some CPU specific code + default y if BR2_arc + default y if BR2_aarch64 + default y if BR2_arm + default y if BR2_armeb + default y if BR2_i386 + default y if BR2_mips + default y if BR2_mipsel + default y if BR2_powerpc + default y if BR2_powerpc64 + default y if BR2_sh + default y if BR2_x86_64 + +config BR2_PACKAGE_PYTHON_NUMPY + bool "python-numpy" + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP + # python-numpy needs fenv.h which is not provided by uclibc + depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_9 + help + NumPy is the fundamental package for scientific computing + with Python. + + Note that NumPy needs fenv.h fully supported by the + C library. + + http://www.numpy.org/ + +comment "python-numpy needs a glibc or musl toolchain w/ C++, gcc >= 9" + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_9 || \ + !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) diff --git a/package/python-numpy/python-numpy.hash b/package/python-numpy/python-numpy.hash new file mode 100644 index 00000000..6629cebb --- /dev/null +++ b/package/python-numpy/python-numpy.hash @@ -0,0 +1,8 @@ +# Copied from https://github.com/numpy/numpy/releases/tag/v1.25.0 +sha256 f1accae9a28dc3cda46a91de86acf69de0d1b5f4edd44a9b0c3ceb8036dfff19 numpy-1.25.0.tar.gz +# License files, locally calculated +sha256 1034d3bd61783f3b5e7ec3e7ca818f4da4135132323a0ef99f4c0edb3c7f6bd2 LICENSE.txt +sha256 c27d0a8026bdb8876562b720ab24d1688e3827a89f6083cd6e7e8caa9584aba3 numpy/core/src/multiarray/dragon4.c +sha256 fbc539f47d0cf83bc61378080fb873d5c14630126cacbfe754035c3926daa5ec numpy/core/include/numpy/libdivide/LICENSE.txt +sha256 a14cc25e10d40a3aa705b7de2fb764a6535d8ee9b2db4e1724900585457dfd55 numpy/linalg/lapack_lite/LICENSE.txt +sha256 badf51c7e3e7de9c7630bd069780f5c197b846ef7660b342a1e58d5553592d8e tools/npy_tempita/license.txt diff --git a/package/python-numpy/python-numpy.mk b/package/python-numpy/python-numpy.mk new file mode 100644 index 00000000..200fac20 --- /dev/null +++ b/package/python-numpy/python-numpy.mk @@ -0,0 +1,62 @@ +################################################################################ +# +# python-numpy +# +################################################################################ + +PYTHON_NUMPY_VERSION = 1.25.0 +PYTHON_NUMPY_SOURCE = numpy-$(PYTHON_NUMPY_VERSION).tar.gz +PYTHON_NUMPY_SITE = https://github.com/numpy/numpy/releases/download/v$(PYTHON_NUMPY_VERSION) +PYTHON_NUMPY_LICENSE = BSD-3-Clause, MIT, Zlib +PYTHON_NUMPY_LICENSE_FILES = \ + LICENSE.txt \ + numpy/core/src/multiarray/dragon4.c \ + numpy/core/include/numpy/libdivide/LICENSE.txt \ + numpy/linalg/lapack_lite/LICENSE.txt \ + tools/npy_tempita/license.txt +PYTHON_NUMPY_CPE_ID_VENDOR = numpy +PYTHON_NUMPY_CPE_ID_PRODUCT = numpy + +PYTHON_NUMPY_DEPENDENCIES = host-python-cython python3 +HOST_PYTHON_NUMPY_DEPENDENCIES = host-python-cython + +PYTHON_NUMPY_CONF_ENV += \ + _PYTHON_SYSCONFIGDATA_NAME=$(PKG_PYTHON_SYSCONFIGDATA_NAME) \ + PYTHONPATH=$(PYTHON3_PATH) + +ifeq ($(BR2_PACKAGE_LAPACK),y) +PYTHON_NUMPY_DEPENDENCIES += lapack +PYTHON_NUMPY_CONF_OPTS += -Dlapack=lapack +else +PYTHON_NUMPY_CONF_OPTS += -Dlapack="" +endif + +ifeq ($(BR2_PACKAGE_OPENBLAS),y) +PYTHON_NUMPY_DEPENDENCIES += openblas +PYTHON_NUMPY_CONF_OPTS += -Dblas=openblas +else +PYTHON_NUMPY_CONF_OPTS += -Dblas="" +endif + +# Rather than add a host-blas or host-lapack dependencies, just use unoptimized, +# in-tree code. +HOST_PYTHON_NUMPY_CONF_OPTS = -Dblas="" -Dlapack="" + +# Fixup the npymath.ini prefix path with actual target staging area where +# numpy core was built. Without this, target builds using numpy distutils +# extensions like python-scipy, python-numba cannot find -lnpymath since +# it uses host libraries (like libnpymath.a). +# So, the numpy distutils extension packages would explicitly link this +# config path for their package environment. +define PYTHON_NUMPY_FIXUP_NPY_PKG_CONFIG_FILES + $(SED) '/^pkgdir=/d;/^prefix=/i pkgdir=$(PYTHON3_PATH)/site-packages/numpy/core' \ + $(PYTHON3_PATH)/site-packages/numpy/core/lib/npy-pkg-config/npymath.ini +endef +PYTHON_NUMPY_POST_INSTALL_STAGING_HOOKS += PYTHON_NUMPY_FIXUP_NPY_PKG_CONFIG_FILES + +# Some package may include few headers from NumPy, so let's install it +# in the staging area. +PYTHON_NUMPY_INSTALL_STAGING = YES + +$(eval $(meson-package)) +$(eval $(host-meson-package)) diff --git a/package/python-oauthlib/Config.in b/package/python-oauthlib/Config.in new file mode 100644 index 00000000..65016c1d --- /dev/null +++ b/package/python-oauthlib/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_OAUTHLIB + bool "python-oauthlib" + help + A generic, spec-compliant, thorough implementation of the + OAuth request-signing logic. + + https://github.com/oauthlib/oauthlib diff --git a/package/python-oauthlib/python-oauthlib.hash b/package/python-oauthlib/python-oauthlib.hash new file mode 100644 index 00000000..6a2ad003 --- /dev/null +++ b/package/python-oauthlib/python-oauthlib.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/oauthlib/json +md5 2f7b898cc1af8c1409cc329e8843ea8f oauthlib-3.2.2.tar.gz +sha256 9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918 oauthlib-3.2.2.tar.gz +# Locally computed sha256 checksums +sha256 3d1e12d8ac52c0b6c148af6d291f72400b8720ed16c0ac4a89868b6d14b1c939 LICENSE diff --git a/package/python-oauthlib/python-oauthlib.mk b/package/python-oauthlib/python-oauthlib.mk new file mode 100644 index 00000000..eb0ccbf4 --- /dev/null +++ b/package/python-oauthlib/python-oauthlib.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-oauthlib +# +################################################################################ + +PYTHON_OAUTHLIB_VERSION = 3.2.2 +PYTHON_OAUTHLIB_SOURCE = oauthlib-$(PYTHON_OAUTHLIB_VERSION).tar.gz +PYTHON_OAUTHLIB_SITE = https://files.pythonhosted.org/packages/6d/fa/fbf4001037904031639e6bfbfc02badfc7e12f137a8afa254df6c4c8a670 +PYTHON_OAUTHLIB_SETUP_TYPE = setuptools +PYTHON_OAUTHLIB_LICENSE = BSD-3-Clause +PYTHON_OAUTHLIB_LICENSE_FILES = LICENSE +PYTHON_OAUTHLIB_CPE_ID_VENDOR = oauthlib_project +PYTHON_OAUTHLIB_CPE_ID_PRODUCT = oauthlib + +$(eval $(python-package)) diff --git a/package/python-opcua-asyncio/Config.in b/package/python-opcua-asyncio/Config.in new file mode 100644 index 00000000..139238b5 --- /dev/null +++ b/package/python-opcua-asyncio/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_PYTHON_OPCUA_ASYNCIO + bool "python-opcua-asyncio" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-cryptography + select BR2_PACKAGE_PYTHON_AIOFILES # runtime + select BR2_PACKAGE_PYTHON_AIOSQLITE # runtime + select BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime + select BR2_PACKAGE_PYTHON_DATEUTIL # runtime + select BR2_PACKAGE_PYTHON_PYTZ # runtime + select BR2_PACKAGE_PYTHON_SORTEDCONTAINERS # runtime + select BR2_PACKAGE_PYTHON_PYOPENSSL # runtime + help + opcua-asyncio is an asyncio-based asynchronous + OPC UA client based on python-opcua, removing + hacks for support of python < 3.6. + + https://github.com/FreeOpcUa/opcua-asyncio diff --git a/package/python-opcua-asyncio/python-opcua-asyncio.hash b/package/python-opcua-asyncio/python-opcua-asyncio.hash new file mode 100644 index 00000000..f5856019 --- /dev/null +++ b/package/python-opcua-asyncio/python-opcua-asyncio.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/asyncua/json +md5 37000bc60b98b4822511ced1c2b4c020 asyncua-1.0.5.tar.gz +sha256 2757163f2a2ff1d8b923297d4af9b8161d25bed95867c1f67078faaf7f2d3f92 asyncua-1.0.5.tar.gz +# Locally computed sha256 checksums +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 COPYING diff --git a/package/python-opcua-asyncio/python-opcua-asyncio.mk b/package/python-opcua-asyncio/python-opcua-asyncio.mk new file mode 100644 index 00000000..226b9bbc --- /dev/null +++ b/package/python-opcua-asyncio/python-opcua-asyncio.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-opcua-asyncio +# +################################################################################ + +PYTHON_OPCUA_ASYNCIO_VERSION = 1.0.5 +PYTHON_OPCUA_ASYNCIO_SOURCE = asyncua-$(PYTHON_OPCUA_ASYNCIO_VERSION).tar.gz +PYTHON_OPCUA_ASYNCIO_SITE = https://files.pythonhosted.org/packages/bf/c6/3c17b8b5335faffc2f08c728008c5ae7cc46d24f674bc1038a69d1849ef6 +PYTHON_OPCUA_ASYNCIO_SETUP_TYPE = setuptools +PYTHON_OPCUA_ASYNCIO_LICENSE = LGPL-3.0+ +PYTHON_OPCUA_ASYNCIO_LICENSE_FILES = COPYING +PYTHON_OPCUA_ASYNCIO_CPE_ID_VENDOR = freeopcua +PYTHON_OPCUA_ASYNCIO_CPE_ID_PRODUCT = opcua-asyncio + +$(eval $(python-package)) diff --git a/package/python-orjson/Config.in b/package/python-orjson/Config.in new file mode 100644 index 00000000..420e023b --- /dev/null +++ b/package/python-orjson/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_ORJSON + bool "python-orjson" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_PYTHON_CFFI # runtime + help + orjson is a fast, correct JSON library for Python. It + benchmarks as the fastest Python library for JSON and is more + correct than the standard json library or other third-party + libraries. It serializes dataclass, datetime, numpy, and UUID + instances natively. + + https://github.com/ijl/orjson diff --git a/package/python-orjson/python-orjson.hash b/package/python-orjson/python-orjson.hash new file mode 100644 index 00000000..c010097f --- /dev/null +++ b/package/python-orjson/python-orjson.hash @@ -0,0 +1,5 @@ +# Locally calculated after vendoring +sha256 30dbdd4ebd62a40b6f13a3c741bb215004778c17fd951d0ce5812a7c34476b09 python-orjson-3.9.10-cargo2.tar.gz +# Locally computed sha256 checksums +sha256 a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2 LICENSE-APACHE +sha256 23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3 LICENSE-MIT diff --git a/package/python-orjson/python-orjson.mk b/package/python-orjson/python-orjson.mk new file mode 100644 index 00000000..dd538acb --- /dev/null +++ b/package/python-orjson/python-orjson.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-orjson +# +################################################################################ + +PYTHON_ORJSON_VERSION = 3.9.10 +PYTHON_ORJSON_SOURCE_PYPI = orjson-$(PYTHON_ORJSON_VERSION).tar.gz +PYTHON_ORJSON_SITE_PYPI = https://files.pythonhosted.org/packages/72/75/642688bf5d99131fe8cf603f4ef9f26e4b1c6ed8f7f5c7e6fb31def54fb7 +PYTHON_ORJSON_SITE = $(PYTHON_ORJSON_SITE_PYPI)/$(PYTHON_ORJSON_SOURCE_PYPI)?buildroot-path=filename +PYTHON_ORJSON_SETUP_TYPE = maturin +PYTHON_ORJSON_LICENSE = Apache-2.0 or MIT +PYTHON_ORJSON_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT +PYTHON_ORJSON_DEPENDENCIES = host-python-cffi + +$(eval $(python-package)) diff --git a/package/python-outcome/Config.in b/package/python-outcome/Config.in new file mode 100644 index 00000000..bd51f3da --- /dev/null +++ b/package/python-outcome/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_OUTCOME + bool "python-outcome" + select BR2_PACKAGE_PYTHON_ATTRS # runtime + help + Capture the outcome of Python function calls. + + https://github.com/python-trio/outcome diff --git a/package/python-outcome/python-outcome.hash b/package/python-outcome/python-outcome.hash new file mode 100644 index 00000000..476da607 --- /dev/null +++ b/package/python-outcome/python-outcome.hash @@ -0,0 +1,7 @@ +# md5, sha256 from https://pypi.org/pypi/outcome/json +md5 3a626832ac864c95f6054958d0da3011 outcome-1.3.0.post0.tar.gz +sha256 9dcf02e65f2971b80047b377468e72a268e15c0af3cf1238e6ff14f7f91143b8 outcome-1.3.0.post0.tar.gz +# Locally computed sha256 checksums +sha256 652c878488d1456361e08c3f8607fd7ba59892a14103d15cce4ff93c85b5cc8b LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.APACHE2 +sha256 3e6dae555eb92787fc82d1d48355677f454c7f65aeb38d3f9e72bf9a3daf034b LICENSE.MIT diff --git a/package/python-outcome/python-outcome.mk b/package/python-outcome/python-outcome.mk new file mode 100644 index 00000000..aa8a6cbf --- /dev/null +++ b/package/python-outcome/python-outcome.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-outcome +# +################################################################################ + +PYTHON_OUTCOME_VERSION = 1.3.0.post0 +PYTHON_OUTCOME_SOURCE = outcome-$(PYTHON_OUTCOME_VERSION).tar.gz +PYTHON_OUTCOME_SITE = https://files.pythonhosted.org/packages/98/df/77698abfac98571e65ffeb0c1fba8ffd692ab8458d617a0eed7d9a8d38f2 +PYTHON_OUTCOME_SETUP_TYPE = setuptools +PYTHON_OUTCOME_LICENSE = Apache-2.0 or MIT +PYTHON_OUTCOME_LICENSE_FILES = LICENSE LICENSE.APACHE2 LICENSE.MIT + +$(eval $(python-package)) diff --git a/package/python-packaging/Config.in b/package/python-packaging/Config.in new file mode 100644 index 00000000..c09dfffe --- /dev/null +++ b/package/python-packaging/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PACKAGING + bool "python-packaging" + help + Core utilities for Python packages. + + https://github.com/pypa/packaging diff --git a/package/python-packaging/python-packaging.hash b/package/python-packaging/python-packaging.hash new file mode 100644 index 00000000..1c15c2e8 --- /dev/null +++ b/package/python-packaging/python-packaging.hash @@ -0,0 +1,7 @@ +# md5, sha256 from https://pypi.org/pypi/packaging/json +md5 8e3bc7b152efc9ffadabddc9f8465b02 packaging-24.0.tar.gz +sha256 eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9 packaging-24.0.tar.gz +# Locally computed sha256 checksums +sha256 cad1ef5bd340d73e074ba614d26f7deaca5c7940c3d8c34852e65c4909686c48 LICENSE +sha256 0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594 LICENSE.APACHE +sha256 b70e7e9b742f1cc6f948b34c16aa39ffece94196364bc88ff0d2180f0028fac5 LICENSE.BSD diff --git a/package/python-packaging/python-packaging.mk b/package/python-packaging/python-packaging.mk new file mode 100644 index 00000000..e795b618 --- /dev/null +++ b/package/python-packaging/python-packaging.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-packaging +# +################################################################################ + +PYTHON_PACKAGING_VERSION = 24.0 +PYTHON_PACKAGING_SOURCE = packaging-$(PYTHON_PACKAGING_VERSION).tar.gz +PYTHON_PACKAGING_SITE = https://files.pythonhosted.org/packages/ee/b5/b43a27ac7472e1818c4bafd44430e69605baefe1f34440593e0332ec8b4d +PYTHON_PACKAGING_SETUP_TYPE = flit +PYTHON_PACKAGING_LICENSE = Apache-2.0 or BSD-2-Clause +PYTHON_PACKAGING_LICENSE_FILES = LICENSE LICENSE.APACHE LICENSE.BSD +HOST_PYTHON_PACKAGING_SETUP_TYPE = flit-bootstrap + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-paho-mqtt/Config.in b/package/python-paho-mqtt/Config.in new file mode 100644 index 00000000..79d8b331 --- /dev/null +++ b/package/python-paho-mqtt/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_PAHO_MQTT + bool "python-paho-mqtt" + help + The Paho Python Client provides a client class with support + for both MQTT v3.1 and v3.1.1 on Python 2.7 or 3.x. It also + provides some helper functions to make publishing messages + to an MQTT server very straightforward. + + https://pypi.python.org/pypi/paho-mqtt diff --git a/package/python-paho-mqtt/python-paho-mqtt.hash b/package/python-paho-mqtt/python-paho-mqtt.hash new file mode 100644 index 00000000..5fe91c5c --- /dev/null +++ b/package/python-paho-mqtt/python-paho-mqtt.hash @@ -0,0 +1,5 @@ +# locally computed +sha256 3602ce9d1ada58b063f2052ff013ff8cdd06d66cef918d5f6d048b6f68ccf049 python-paho-mqtt-2.1.0.tar.gz +sha256 66408b049249c3bdb0ba1ed285f5422ce67e371d40151bebd4d806af454ffe7c LICENSE.txt +sha256 e8cf7d54ea46c19aba793983889b7f7425e1ebfcaaccec764a7db091646e203c edl-v10 +sha256 8c349f80764d0648e645f41ef23772a70c995a0924b5235f735f4a3d09df127c epl-v20 diff --git a/package/python-paho-mqtt/python-paho-mqtt.mk b/package/python-paho-mqtt/python-paho-mqtt.mk new file mode 100644 index 00000000..095d6e1f --- /dev/null +++ b/package/python-paho-mqtt/python-paho-mqtt.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-paho-mqtt +# +################################################################################ + +PYTHON_PAHO_MQTT_VERSION = 2.1.0 +PYTHON_PAHO_MQTT_SITE = $(call github,eclipse,paho.mqtt.python,v$(PYTHON_PAHO_MQTT_VERSION)) +PYTHON_PAHO_MQTT_LICENSE = EPL-2.0, EDLv1.0 +PYTHON_PAHO_MQTT_LICENSE_FILES = LICENSE.txt epl-v20 edl-v10 +PYTHON_PAHO_MQTT_SETUP_TYPE = pep517 +PYTHON_PAHO_MQTT_DEPENDENCIES = host-python-hatchling + +$(eval $(python-package)) diff --git a/package/python-paramiko/Config.in b/package/python-paramiko/Config.in new file mode 100644 index 00000000..aee658c7 --- /dev/null +++ b/package/python-paramiko/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_PARAMIKO + bool "python-paramiko" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-cryptography, python-bcrypt + select BR2_PACKAGE_PYTHON_BCRYPT # runtime + select BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime + select BR2_PACKAGE_PYTHON_PYNACL # runtime + select BR2_PACKAGE_PYTHON3_ZLIB # runtime + help + SSH2 protocol library. + + https://github.com/paramiko/paramiko/ diff --git a/package/python-paramiko/python-paramiko.hash b/package/python-paramiko/python-paramiko.hash new file mode 100644 index 00000000..893aac07 --- /dev/null +++ b/package/python-paramiko/python-paramiko.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/paramiko/json +md5 be485ba66b576d8bc7e1c0ad96e87108 paramiko-3.4.0.tar.gz +sha256 aac08f26a31dc4dffd92821527d1682d99d52f9ef6851968114a8728f3c274d3 paramiko-3.4.0.tar.gz +# Locally computed sha256 checksums +sha256 5fa25bf5f395fd26e701c2e1de4ca7d162816986dc791c22f8f4226857ad1bb2 LICENSE diff --git a/package/python-paramiko/python-paramiko.mk b/package/python-paramiko/python-paramiko.mk new file mode 100644 index 00000000..8d921486 --- /dev/null +++ b/package/python-paramiko/python-paramiko.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-paramiko +# +################################################################################ + +PYTHON_PARAMIKO_VERSION = 3.4.0 +PYTHON_PARAMIKO_SOURCE = paramiko-$(PYTHON_PARAMIKO_VERSION).tar.gz +PYTHON_PARAMIKO_SITE = https://files.pythonhosted.org/packages/cc/af/11996c4df4f9caff87997ad2d3fd8825078c277d6a928446d2b6cf249889 +PYTHON_PARAMIKO_SETUP_TYPE = setuptools +PYTHON_PARAMIKO_LICENSE = LGPL-2.1+ +PYTHON_PARAMIKO_LICENSE_FILES = LICENSE +PYTHON_PARAMIKO_CPE_ID_VENDOR = paramiko +PYTHON_PARAMIKO_CPE_ID_PRODUCT = paramiko + +$(eval $(python-package)) diff --git a/package/python-parso/Config.in b/package/python-parso/Config.in new file mode 100644 index 00000000..ea1c5a47 --- /dev/null +++ b/package/python-parso/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PARSO + bool "python-parso" + help + A Python Parser. + + https://github.com/davidhalter/parso diff --git a/package/python-parso/python-parso.hash b/package/python-parso/python-parso.hash new file mode 100644 index 00000000..67e77a16 --- /dev/null +++ b/package/python-parso/python-parso.hash @@ -0,0 +1,7 @@ +# md5, sha256 from https://pypi.org/pypi/parso/json +md5 7ee251113f31f8d851c4a5d9e98977cb parso-0.8.3.tar.gz +sha256 8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0 parso-0.8.3.tar.gz +# Locally computed sha256 checksums +sha256 fa67973073753d17624caf8684d5ee816d70c89d912c5bca7ca0f08e7b150edb LICENSE.txt +sha256 9c1e620a5cf8e74fe81c1fd4c55e9cc0b189fc04e677cfc7ef915de746c3f59e docs/_themes/flask/LICENSE +sha256 368780dd953e09148834e8d8c6cc1b09b3d621e77dbd1c4f5e8873561acda873 test/normalizer_issue_files/LICENSE diff --git a/package/python-parso/python-parso.mk b/package/python-parso/python-parso.mk new file mode 100644 index 00000000..ce1d3401 --- /dev/null +++ b/package/python-parso/python-parso.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-parso +# +################################################################################ + +PYTHON_PARSO_VERSION = 0.8.3 +PYTHON_PARSO_SOURCE = parso-$(PYTHON_PARSO_VERSION).tar.gz +PYTHON_PARSO_SITE = https://files.pythonhosted.org/packages/a2/0e/41f0cca4b85a6ea74d66d2226a7cda8e41206a624f5b330b958ef48e2e52 +PYTHON_PARSO_SETUP_TYPE = setuptools +PYTHON_PARSO_LICENSE = MIT, Python-2.0, BSD-3-Clause (flask theme) +PYTHON_PARSO_LICENSE_FILES = LICENSE.txt docs/_themes/flask/LICENSE test/normalizer_issue_files/LICENSE +PYTHON_PARSO_CPE_ID_VENDOR = parso_project +PYTHON_PARSO_CPE_ID_PRODUCT = parso + +$(eval $(python-package)) diff --git a/package/python-passlib/Config.in b/package/python-passlib/Config.in new file mode 100644 index 00000000..ed4097c5 --- /dev/null +++ b/package/python-passlib/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PASSLIB + bool "python-passlib" + help + comprehensive password hashing framework supporting over 30 + schemes. + + https://passlib.readthedocs.io diff --git a/package/python-passlib/python-passlib.hash b/package/python-passlib/python-passlib.hash new file mode 100644 index 00000000..c0652865 --- /dev/null +++ b/package/python-passlib/python-passlib.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/passlib/json +md5 3a229cbd00dfb33e99885b43325e0591 passlib-1.7.4.tar.gz +sha256 defd50f72b65c5402ab2c573830a6978e5f202ad0d984793c8dde2c4152ebe04 passlib-1.7.4.tar.gz +# Locally computed sha256 checksums +sha256 a95ba8f1af88ff8d5f0d0c33519f430b7f9d8992b69d4bc369ac0423a7a05a89 LICENSE diff --git a/package/python-passlib/python-passlib.mk b/package/python-passlib/python-passlib.mk new file mode 100644 index 00000000..013fec74 --- /dev/null +++ b/package/python-passlib/python-passlib.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-passlib +# +################################################################################ + +PYTHON_PASSLIB_VERSION = 1.7.4 +PYTHON_PASSLIB_SOURCE = passlib-$(PYTHON_PASSLIB_VERSION).tar.gz +PYTHON_PASSLIB_SITE = https://files.pythonhosted.org/packages/b6/06/9da9ee59a67fae7761aab3ccc84fa4f3f33f125b370f1ccdb915bf967c11 +PYTHON_PASSLIB_SETUP_TYPE = setuptools +PYTHON_PASSLIB_LICENSE = BSD-3-Clause +PYTHON_PASSLIB_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-pathpy/Config.in b/package/python-pathpy/Config.in new file mode 100644 index 00000000..98c05126 --- /dev/null +++ b/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/package/python-pathpy/python-pathpy.hash b/package/python-pathpy/python-pathpy.hash new file mode 100644 index 00000000..f2f1880e --- /dev/null +++ b/package/python-pathpy/python-pathpy.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/path.py/json +md5 c748063e113914dcb08e3f4eb6cd1de0 path.py-12.5.0.tar.gz +sha256 8d885e8b2497aed005703d94e0fd97943401f035e42a136810308bff034529a8 path.py-12.5.0.tar.gz +# Locally computed sha256 checksums +sha256 a55e2ffe9b44998e621d51d8c094bed09acc4b5236ee73d7df395a33ba3c18fd LICENSE diff --git a/package/python-pathpy/python-pathpy.mk b/package/python-pathpy/python-pathpy.mk new file mode 100644 index 00000000..2fd6e931 --- /dev/null +++ b/package/python-pathpy/python-pathpy.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-pathpy +# +################################################################################ + +PYTHON_PATHPY_VERSION = 12.5.0 +PYTHON_PATHPY_SOURCE = path.py-$(PYTHON_PATHPY_VERSION).tar.gz +PYTHON_PATHPY_SITE = https://files.pythonhosted.org/packages/b6/e3/81be70016d58ade0f516191fa80152daba5453d0b07ce648d9daae86a188 +PYTHON_PATHPY_SETUP_TYPE = setuptools +PYTHON_PATHPY_LICENSE = MIT +PYTHON_PATHPY_LICENSE_FILES = LICENSE +PYTHON_PATHPY_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-pathspec/Config.in b/package/python-pathspec/Config.in new file mode 100644 index 00000000..0453e704 --- /dev/null +++ b/package/python-pathspec/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PATHSPEC + bool "python-pathspec" + help + pathspec is a utility library for pattern matching of file + paths. + + https://github.com/cpburnz/python-pathspec diff --git a/package/python-pathspec/python-pathspec.hash b/package/python-pathspec/python-pathspec.hash new file mode 100644 index 00000000..15283e3a --- /dev/null +++ b/package/python-pathspec/python-pathspec.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pathspec/json +md5 2b26ad1981bfa23748e115f00085624c pathspec-0.12.1.tar.gz +sha256 a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712 pathspec-0.12.1.tar.gz +# Locally computed sha256 checksums +sha256 fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85 LICENSE diff --git a/package/python-pathspec/python-pathspec.mk b/package/python-pathspec/python-pathspec.mk new file mode 100644 index 00000000..b46dbef7 --- /dev/null +++ b/package/python-pathspec/python-pathspec.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-pathspec +# +################################################################################ + +PYTHON_PATHSPEC_VERSION = 0.12.1 +PYTHON_PATHSPEC_SOURCE = pathspec-$(PYTHON_PATHSPEC_VERSION).tar.gz +PYTHON_PATHSPEC_SITE = https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf +PYTHON_PATHSPEC_LICENSE = MPL-2.0 +PYTHON_PATHSPEC_LICENSE_FILES = LICENSE +PYTHON_PATHSPEC_SETUP_TYPE = flit + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-pathtools/0001-replace-imp.patch b/package/python-pathtools/0001-replace-imp.patch new file mode 100644 index 00000000..a5bc240c --- /dev/null +++ b/package/python-pathtools/0001-replace-imp.patch @@ -0,0 +1,55 @@ +From e2372bbecdf46a100b09126f2951431c1929637b Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Tue, 24 Oct 2023 08:59:21 +0200 +Subject: [PATCH] Replace imp + +The imp module has been removed in python 3.12.0. + +This change has also been tested with Python 3.9.2 on Debian 11. + +From: https://docs.python.org/3.12/whatsnew/3.12.html#removed, follow the +instructions to add the load_source method back into setup.py. + +Upstream: https://github.com/gorakhargosh/pathtools/pull/14 + +Signed-off-by: Adam Duskett +--- + setup.py | 19 ++++++++++++++++--- + 1 file changed, 16 insertions(+), 3 deletions(-) + +diff --git a/setup.py b/setup.py +index 4718885..1be0315 100644 +--- a/setup.py ++++ b/setup.py +@@ -22,12 +22,25 @@ + # THE SOFTWARE. + + import os +-import imp ++import importlib.util ++import importlib.machinery + from setuptools import setup + + PKG_DIR = 'pathtools' +-version = imp.load_source('version', +- os.path.join(PKG_DIR, 'version.py')) ++ ++# From: https://docs.python.org/3.12/whatsnew/3.12.html#removed ++def load_source(modname, filename): ++ loader = importlib.machinery.SourceFileLoader(modname, filename) ++ spec = importlib.util.spec_from_file_location(modname, filename, loader=loader) ++ module = importlib.util.module_from_spec(spec) ++ # The module is always executed and not cached in sys.modules. ++ # Uncomment the following line to cache the module. ++ # sys.modules[module.__name__] = module ++ loader.exec_module(module) ++ return module ++ ++version = load_source('version', ++ os.path.join(PKG_DIR, 'version.py')) + + def read_file(filename): + """ +-- +2.41.0 + diff --git a/package/python-pathtools/Config.in b/package/python-pathtools/Config.in new file mode 100644 index 00000000..63777bd3 --- /dev/null +++ b/package/python-pathtools/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PATHTOOLS + bool "python-pathtools" + help + File system general utilities. + + http://github.com/gorakhargosh/pathtools diff --git a/package/python-pathtools/python-pathtools.hash b/package/python-pathtools/python-pathtools.hash new file mode 100644 index 00000000..00099af1 --- /dev/null +++ b/package/python-pathtools/python-pathtools.hash @@ -0,0 +1,6 @@ +# md5 from https://pypi.python.org/pypi/pathtools/json +md5 9a1af5c605768ea5804b03b734ff0f82 pathtools-0.1.2.tar.gz +# sha256 calculated by scanpypi +sha256 7c35c5421a39bb82e58018febd90e3b6e5db34c5443aaaf742b3f33d4655f1c0 pathtools-0.1.2.tar.gz +# Locally computed +sha256 b52d83fba08f61bd1e603fee1b44cbc7ead9fcb512a5ceb8c53fec90ba415ac4 LICENSE diff --git a/package/python-pathtools/python-pathtools.mk b/package/python-pathtools/python-pathtools.mk new file mode 100644 index 00000000..2b4a2711 --- /dev/null +++ b/package/python-pathtools/python-pathtools.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pathtools +# +################################################################################ + +PYTHON_PATHTOOLS_VERSION = 0.1.2 +PYTHON_PATHTOOLS_SOURCE = pathtools-$(PYTHON_PATHTOOLS_VERSION).tar.gz +PYTHON_PATHTOOLS_SITE = https://pypi.python.org/packages/e7/7f/470d6fcdf23f9f3518f6b0b76be9df16dcc8630ad409947f8be2eb0ed13a +PYTHON_PATHTOOLS_SETUP_TYPE = setuptools +PYTHON_PATHTOOLS_LICENSE = MIT +PYTHON_PATHTOOLS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-pathvalidate/Config.in b/package/python-pathvalidate/Config.in new file mode 100644 index 00000000..8606696e --- /dev/null +++ b/package/python-pathvalidate/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PATHVALIDATE + bool "python-pathvalidate" + help + pathvalidate is a python library to validate/sanitize a string + such as filename/variable-name. + + https://github.com/thombashi/pathvalidate diff --git a/package/python-pathvalidate/python-pathvalidate.hash b/package/python-pathvalidate/python-pathvalidate.hash new file mode 100644 index 00000000..4442d82a --- /dev/null +++ b/package/python-pathvalidate/python-pathvalidate.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pathvalidate/json +md5 2a76cbe4e08f58087f418d150a1461b5 pathvalidate-3.2.0.tar.gz +sha256 5e8378cf6712bff67fbe7a8307d99fa8c1a0cb28aa477056f8fc374f0dff24ad pathvalidate-3.2.0.tar.gz +# Locally computed sha256 checksums +sha256 a93d75bcb0774e2990106380cadad6dcb2de193c55d435ffc56ba345a08b1dc2 LICENSE diff --git a/package/python-pathvalidate/python-pathvalidate.mk b/package/python-pathvalidate/python-pathvalidate.mk new file mode 100644 index 00000000..243f5418 --- /dev/null +++ b/package/python-pathvalidate/python-pathvalidate.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pathvalidate +# +################################################################################ + +PYTHON_PATHVALIDATE_VERSION = 3.2.0 +PYTHON_PATHVALIDATE_SOURCE = pathvalidate-$(PYTHON_PATHVALIDATE_VERSION).tar.gz +PYTHON_PATHVALIDATE_SITE = https://files.pythonhosted.org/packages/27/93/e2b086c7aba96c70b5e7ef48251702fb95027638fb5a3e787d2efd65783e +PYTHON_PATHVALIDATE_SETUP_TYPE = setuptools +PYTHON_PATHVALIDATE_LICENSE = MIT +PYTHON_PATHVALIDATE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-pbr/python-pbr.hash b/package/python-pbr/python-pbr.hash new file mode 100644 index 00000000..cfeef941 --- /dev/null +++ b/package/python-pbr/python-pbr.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/pbr/json +md5 e01bcc0e9154d513ecad3e766f9582d7 pbr-6.0.0.tar.gz +sha256 d1377122a5a00e2f940ee482999518efe16d745d423a670c27773dfbc3c9a7d9 pbr-6.0.0.tar.gz +# Locally computed sha256 checksums +sha256 5df2a0d87d6c562f0ea11c688ac52532aa28d744cabc7994ff0537f64b3b3320 LICENSE +sha256 eb4a8c8791f6caab1cf36df26db2b6f4e2ddda52657b060ff7f02abc63910aef pbr/tests/testpackage/LICENSE.txt diff --git a/package/python-pbr/python-pbr.mk b/package/python-pbr/python-pbr.mk new file mode 100644 index 00000000..aaea80d3 --- /dev/null +++ b/package/python-pbr/python-pbr.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pbr +# +################################################################################ + +PYTHON_PBR_VERSION = 6.0.0 +PYTHON_PBR_SOURCE = pbr-$(PYTHON_PBR_VERSION).tar.gz +PYTHON_PBR_SITE = https://files.pythonhosted.org/packages/8d/c2/ee43b3b11bf2b40e56536183fc9f22afbb04e882720332b6276ee2454c24 +PYTHON_PBR_SETUP_TYPE = setuptools +PYTHON_PBR_LICENSE = Apache-2.0 (module), BSD-3-Clause (test package) +PYTHON_PBR_LICENSE_FILES = LICENSE pbr/tests/testpackage/LICENSE.txt + +$(eval $(host-python-package)) diff --git a/package/python-pdm-backend/python-pdm-backend.hash b/package/python-pdm-backend/python-pdm-backend.hash new file mode 100644 index 00000000..cc26e584 --- /dev/null +++ b/package/python-pdm-backend/python-pdm-backend.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pdm-backend/json +md5 b2805090bbe41c86eb051b1311c7ba34 pdm_backend-2.3.1.tar.gz +sha256 c03cfb3a803325c049b57ba2502b409479ebb22b6a4ee3746c1f688b939764e8 pdm_backend-2.3.1.tar.gz +# Locally computed sha256 checksums +sha256 1da058ed0440fea5df1765b19a1418800439b18fd6f1c13c7d429cb81e9c6d47 LICENSE diff --git a/package/python-pdm-backend/python-pdm-backend.mk b/package/python-pdm-backend/python-pdm-backend.mk new file mode 100644 index 00000000..a95024ec --- /dev/null +++ b/package/python-pdm-backend/python-pdm-backend.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pdm-backend +# +################################################################################ + +PYTHON_PDM_BACKEND_VERSION = 2.3.1 +PYTHON_PDM_BACKEND_SOURCE = pdm_backend-$(PYTHON_PDM_BACKEND_VERSION).tar.gz +PYTHON_PDM_BACKEND_SITE = https://files.pythonhosted.org/packages/70/f4/eaa4da6e3eaa32d902177e0b81563bb5526b2c387aa312d0dfbecf3c7109 +PYTHON_PDM_BACKEND_SETUP_TYPE = pep517 +PYTHON_PDM_BACKEND_LICENSE = MIT +PYTHON_PDM_BACKEND_LICENSE_FILES = LICENSE + +$(eval $(host-python-package)) diff --git a/package/python-pefile/python-pefile.hash b/package/python-pefile/python-pefile.hash new file mode 100644 index 00000000..af228848 --- /dev/null +++ b/package/python-pefile/python-pefile.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pefile/json +md5 fa0eba7c91f4e696771ddbfacdca25e4 pefile-2023.2.7.tar.gz +sha256 82e6114004b3d6911c77c3953e3838654b04511b8b66e8583db70c65998017dc pefile-2023.2.7.tar.gz +# Locally computed sha256 checksums +sha256 bfd4b5e4f8a99c961fd6f94d708e38396cc146bfe8fbc5d2a86e63aa29fb4208 LICENSE diff --git a/package/python-pefile/python-pefile.mk b/package/python-pefile/python-pefile.mk new file mode 100644 index 00000000..c65f1deb --- /dev/null +++ b/package/python-pefile/python-pefile.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pefile +# +################################################################################ + +PYTHON_PEFILE_VERSION = 2023.2.7 +PYTHON_PEFILE_SOURCE = pefile-$(PYTHON_PEFILE_VERSION).tar.gz +PYTHON_PEFILE_SITE = https://files.pythonhosted.org/packages/78/c5/3b3c62223f72e2360737fd2a57c30e5b2adecd85e70276879609a7403334 +PYTHON_PEFILE_SETUP_TYPE = setuptools +PYTHON_PEFILE_LICENSE = MIT +PYTHON_PEFILE_LICENSE_FILES = LICENSE + +$(eval $(host-python-package)) diff --git a/package/python-periphery/Config.in b/package/python-periphery/Config.in new file mode 100644 index 00000000..99585b0f --- /dev/null +++ b/package/python-periphery/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PERIPHERY + bool "python-periphery" + help + A pure Python 2/3 library for peripheral I/O (GPIO, LED, + PWM, SPI, I2C, MMIO, Serial) in Linux. + + https://github.com/vsergeev/python-periphery diff --git a/package/python-periphery/python-periphery.hash b/package/python-periphery/python-periphery.hash new file mode 100644 index 00000000..a758fa7a --- /dev/null +++ b/package/python-periphery/python-periphery.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/python-periphery/json +md5 2b2a1037fb4ac15e7b0514ce3659d26c python-periphery-2.4.1.tar.gz +sha256 61d461d736982a6f766e878720ab10a68151e2e8c1086600d9389ac47e40e88a python-periphery-2.4.1.tar.gz +# Locally computed sha256 checksums +sha256 321124461e9f86f4f7bb9f571500bf58ec1b76206b642e505ce17db7f7c88e05 LICENSE diff --git a/package/python-periphery/python-periphery.mk b/package/python-periphery/python-periphery.mk new file mode 100644 index 00000000..7a49f305 --- /dev/null +++ b/package/python-periphery/python-periphery.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-periphery +# +################################################################################ + +PYTHON_PERIPHERY_VERSION = 2.4.1 +PYTHON_PERIPHERY_SITE = https://files.pythonhosted.org/packages/df/f1/1a986ad2bb696033168db2121151e5ff90df033af780ffca47c8bb559f29 +PYTHON_PERIPHERY_LICENSE = MIT +PYTHON_PERIPHERY_LICENSE_FILES = LICENSE +PYTHON_PERIPHERY_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-pexpect/Config.in b/package/python-pexpect/Config.in new file mode 100644 index 00000000..cee4606c --- /dev/null +++ b/package/python-pexpect/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_PEXPECT + bool "python-pexpect" + select BR2_PACKAGE_PYTHON_PTYPROCESS # runtime + help + Pexpect is a pure Python module for spawning child + applications; controlling them; and responding to expected + patterns in their output. Pexpect works like Don Libes' + Expect. Pexpect allows your script to spawn a child + application and control it as if a human were typing + commands. + + https://pexpect.readthedocs.org diff --git a/package/python-pexpect/python-pexpect.hash b/package/python-pexpect/python-pexpect.hash new file mode 100644 index 00000000..617428fe --- /dev/null +++ b/package/python-pexpect/python-pexpect.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pexpect/json +md5 f48d48325ee7f1221add0396ea9e2f14 pexpect-4.9.0.tar.gz +sha256 ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f pexpect-4.9.0.tar.gz +# Locally computed sha256 checksums +sha256 4a483ae1c4dc738a6c8b73feb49074e1835da02ab5aa686f2675029906fa364d LICENSE diff --git a/package/python-pexpect/python-pexpect.mk b/package/python-pexpect/python-pexpect.mk new file mode 100644 index 00000000..469144aa --- /dev/null +++ b/package/python-pexpect/python-pexpect.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pexpect +# +################################################################################ + +PYTHON_PEXPECT_VERSION = 4.9.0 +PYTHON_PEXPECT_SOURCE = pexpect-$(PYTHON_PEXPECT_VERSION).tar.gz +PYTHON_PEXPECT_SITE = https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d +PYTHON_PEXPECT_LICENSE = ISC +PYTHON_PEXPECT_LICENSE_FILES = LICENSE +PYTHON_PEXPECT_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-pickleshare/Config.in b/package/python-pickleshare/Config.in new file mode 100644 index 00000000..18391b7c --- /dev/null +++ b/package/python-pickleshare/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PICKLESHARE + bool "python-pickleshare" + help + Tiny 'shelve'-like database with concurrency support + + https://pypi.python.org/pypi/pickleshare diff --git a/package/python-pickleshare/python-pickleshare.hash b/package/python-pickleshare/python-pickleshare.hash new file mode 100644 index 00000000..1b849e17 --- /dev/null +++ b/package/python-pickleshare/python-pickleshare.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pickleshare/json +md5 44ab782615894a812ab96669a122a634 pickleshare-0.7.5.tar.gz +sha256 87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca pickleshare-0.7.5.tar.gz +# Locally computed sha256 checksums +sha256 db1fefc1789444409514c0cae0bfab7f8e374ff9b78e092cecb1e0aeb6a36d90 LICENSE diff --git a/package/python-pickleshare/python-pickleshare.mk b/package/python-pickleshare/python-pickleshare.mk new file mode 100644 index 00000000..1ed1257d --- /dev/null +++ b/package/python-pickleshare/python-pickleshare.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pickleshare +# +################################################################################ + +PYTHON_PICKLESHARE_VERSION = 0.7.5 +PYTHON_PICKLESHARE_SOURCE = pickleshare-$(PYTHON_PICKLESHARE_VERSION).tar.gz +PYTHON_PICKLESHARE_SITE = https://files.pythonhosted.org/packages/d8/b6/df3c1c9b616e9c0edbc4fbab6ddd09df9535849c64ba51fcb6531c32d4d8 +PYTHON_PICKLESHARE_LICENSE = MIT +PYTHON_PICKLESHARE_LICENSE_FILES = LICENSE +PYTHON_PICKLESHARE_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-piexif/Config.in b/package/python-piexif/Config.in new file mode 100644 index 00000000..1c8c31b9 --- /dev/null +++ b/package/python-piexif/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_PIEXIF + bool "python-piexif" + help + Piexif simplifies interacting with EXIF data in Python. It + includes the tools necessary for extracting, creating, + manipulating, converting and writing EXIF data to JPEG, WebP + and TIFF files. + + https://github.com/hMatoba/Piexif diff --git a/package/python-piexif/python-piexif.hash b/package/python-piexif/python-piexif.hash new file mode 100644 index 00000000..5ae7f406 --- /dev/null +++ b/package/python-piexif/python-piexif.hash @@ -0,0 +1,3 @@ +# Locally computed sha256 checksums +sha256 abfd9a67795e23d7a76f9407d60841efa68c5d6e43376b295bb821a30602c569 python-piexif-1.1.3.tar.gz +sha256 d517a0940b8eb92ace7fc88f75892d84d260d85b3062d36d9e6445bc5091f697 LICENSE.txt diff --git a/package/python-piexif/python-piexif.mk b/package/python-piexif/python-piexif.mk new file mode 100644 index 00000000..2ab15cd3 --- /dev/null +++ b/package/python-piexif/python-piexif.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-piexif +# +################################################################################ + +PYTHON_PIEXIF_VERSION = 1.1.3 +PYTHON_PIEXIF_SITE = $(call github,hMatoba,Piexif,$(PYTHON_PIEXIF_VERSION)) +PYTHON_PIEXIF_LICENSE = MIT +PYTHON_PIEXIF_LICENSE_FILES = LICENSE.txt +PYTHON_PIEXIF_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-pigpio/Config.in b/package/python-pigpio/Config.in new file mode 100644 index 00000000..4c9152a6 --- /dev/null +++ b/package/python-pigpio/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_PIGPIO + bool "python-pigpio" + help + Pigpio is a Python module for the Raspberry Pi + which talks to the pigpio daemon to allow control + of the general purpose input outputs (GPIO). + + http://abyz.me.uk/rpi/pigpio/python.html diff --git a/package/python-pigpio/python-pigpio.hash b/package/python-pigpio/python-pigpio.hash new file mode 100644 index 00000000..7e02054b --- /dev/null +++ b/package/python-pigpio/python-pigpio.hash @@ -0,0 +1,3 @@ +# md5, sha256 from https://pypi.org/pypi/pigpio/json +md5 e05e3f5cb6c50f4b3eeb4ac50627507e pigpio-1.78.tar.gz +sha256 91efa50e4990649da97408a384782d6ccf58342fc59cdfe21ed7a42911569975 pigpio-1.78.tar.gz diff --git a/package/python-pigpio/python-pigpio.mk b/package/python-pigpio/python-pigpio.mk new file mode 100644 index 00000000..73e326cb --- /dev/null +++ b/package/python-pigpio/python-pigpio.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-pigpio +# +################################################################################ + +PYTHON_PIGPIO_VERSION = 1.78 +PYTHON_PIGPIO_SOURCE = pigpio-$(PYTHON_PIGPIO_VERSION).tar.gz +PYTHON_PIGPIO_SITE = https://files.pythonhosted.org/packages/a9/4a/3ebdfd90906553fb5420e80a475eb52f0809f2a29b547ba3b260db0cbc8f +PYTHON_PIGPIO_SETUP_TYPE = setuptools +PYTHON_PIGPIO_LICENSE = Unlicense + +$(eval $(python-package)) diff --git a/package/python-pillow/Config.in b/package/python-pillow/Config.in new file mode 100644 index 00000000..126cb452 --- /dev/null +++ b/package/python-pillow/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PYTHON_PILLOW + bool "python-pillow" + select BR2_PACKAGE_PYTHON3_PYEXPAT # runtime + select BR2_PACKAGE_PYTHON3_ZLIB + help + Pillow is the "friendly" PIL fork by Alex Clark and + Contributors. PIL is the Python Imaging Library by Fredrik + Lundh and Contributors. + + Pillow relies on external libraries to provide support + various image formats. Select the corresponding package(s) + to get this support. Pillow can use jpeg, zlib (for PNG), + tiff, freetype, webp, and openjpeg (JPEG-2000). + + https://pypi.python.org/pypi/Pillow/ diff --git a/package/python-pillow/python-pillow.hash b/package/python-pillow/python-pillow.hash new file mode 100644 index 00000000..352536a0 --- /dev/null +++ b/package/python-pillow/python-pillow.hash @@ -0,0 +1,6 @@ +# md5, sha256 https://pypi.org/project/pillow/10.3.0/#copy-hash-modal-125abe0d-59be-40cd-89a3-3e2f78136be0 +md5 6c21a12849ae42f93881f614d8f6f651 pillow-10.3.0.tar.gz +sha256 9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d pillow-10.3.0.tar.gz + +# Locally computed sha256 checksums +sha256 cf234c27a3f275f5a050f4df3946f8855704226fe4e7ca8b33928cbcecbced37 LICENSE diff --git a/package/python-pillow/python-pillow.mk b/package/python-pillow/python-pillow.mk new file mode 100644 index 00000000..38214376 --- /dev/null +++ b/package/python-pillow/python-pillow.mk @@ -0,0 +1,73 @@ +################################################################################ +# +# python-pillow +# +################################################################################ + +PYTHON_PILLOW_VERSION = 10.3.0 +PYTHON_PILLOW_SITE = https://files.pythonhosted.org/packages/ef/43/c50c17c5f7d438e836c169e343695534c38c77f60e7c90389bd77981bc21 +PYTHON_PILLOW_SOURCE = pillow-$(PYTHON_PILLOW_VERSION).tar.gz +PYTHON_PILLOW_LICENSE = HPND +PYTHON_PILLOW_LICENSE_FILES = LICENSE +PYTHON_PILLOW_CPE_ID_VENDOR = python +PYTHON_PILLOW_CPE_ID_PRODUCT = pillow +PYTHON_PILLOW_SETUP_TYPE = setuptools + +PYTHON_PILLOW_DEPENDENCIES = host-pkgconf +PYTHON_PILLOW_BUILD_OPTS = -C--build-option=build_ext -C--build-option=--disable-platform-guessing + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +PYTHON_PILLOW_DEPENDENCIES += freetype +PYTHON_PILLOW_BUILD_OPTS += -C--build-option=--enable-freetype +else +PYTHON_PILLOW_BUILD_OPTS += -C--build-option=--disable-freetype +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +PYTHON_PILLOW_DEPENDENCIES += jpeg +PYTHON_PILLOW_BUILD_OPTS += -C--build-option=--enable-jpeg +else +PYTHON_PILLOW_BUILD_OPTS += -C--build-option=--disable-jpeg +endif + +ifeq ($(BR2_PACKAGE_LCMS2),y) +PYTHON_PILLOW_DEPENDENCIES += lcms2 +PYTHON_PILLOW_BUILD_OPTS += -C--build-option=--enable-lcms +else +PYTHON_PILLOW_BUILD_OPTS += -C--build-option=--disable-lcms +endif + +ifeq ($(BR2_PACKAGE_LIBXCB),y) +PYTHON_PILLOW_DEPENDENCIES += libxcb +PYTHON_PILLOW_BUILD_OPTS += -C--build-option=--enable-xcb +else +PYTHON_PILLOW_BUILD_OPTS += -C--build-option=--disable-xcb +endif + +ifeq ($(BR2_PACKAGE_OPENJPEG),y) +PYTHON_PILLOW_DEPENDENCIES += openjpeg +PYTHON_PILLOW_BUILD_OPTS += -C--build-option=--enable-jpeg2000 +else +PYTHON_PILLOW_BUILD_OPTS += -C--build-option=--disable-jpeg2000 +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +PYTHON_PILLOW_DEPENDENCIES += tiff +PYTHON_PILLOW_BUILD_OPTS += -C--build-option=--enable-tiff +else +PYTHON_PILLOW_BUILD_OPTS += -C--build-option=--disable-tiff +endif + +ifeq ($(BR2_PACKAGE_WEBP),y) +PYTHON_PILLOW_DEPENDENCIES += webp +PYTHON_PILLOW_BUILD_OPTS += -C--build-option=--enable-webp +ifeq ($(BR2_PACKAGE_WEBP_DEMUX)$(BR2_PACKAGE_WEBP_MUX),yy) +PYTHON_PILLOW_BUILD_OPTS += -C--build-option=--enable-webpmux +else +PYTHON_PILLOW_BUILD_OPTS += -C--build-option=--disable-webpmux +endif +else +PYTHON_PILLOW_BUILD_OPTS += -C--build-option=--disable-webp -C--build-option=--disable-webpmux +endif + +$(eval $(python-package)) diff --git a/package/python-pip/Config.in b/package/python-pip/Config.in new file mode 100644 index 00000000..805dc015 --- /dev/null +++ b/package/python-pip/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_PIP + bool "python-pip" + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + select BR2_PACKAGE_PYTHON3_SSL + help + The PyPA recommended tool for installing Python packages. + + https://pip.pypa.io/ diff --git a/package/python-pip/python-pip.hash b/package/python-pip/python-pip.hash new file mode 100644 index 00000000..d2cc649b --- /dev/null +++ b/package/python-pip/python-pip.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pip/json +md5 38dd5f7ab301167df063405c7fc16c84 pip-23.3.2.tar.gz +sha256 7fd9972f96db22c8077a1ee2691b172c8089b17a5652a44494a9ecb0d78f9149 pip-23.3.2.tar.gz +# Locally computed sha256 checksums +sha256 634300a669d49aeae65b12c6c48c924c51a4cdf3d1ff086dc3456dc8bcaa2104 LICENSE.txt diff --git a/package/python-pip/python-pip.mk b/package/python-pip/python-pip.mk new file mode 100644 index 00000000..552b47eb --- /dev/null +++ b/package/python-pip/python-pip.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# python-pip +# +################################################################################ + +PYTHON_PIP_VERSION = 23.3.2 +PYTHON_PIP_SOURCE = pip-$(PYTHON_PIP_VERSION).tar.gz +PYTHON_PIP_SITE = https://files.pythonhosted.org/packages/b7/06/6b1ad0ae8f97d7a0d6f6ad640db10780578999e647a9593512ceb6f06469 +PYTHON_PIP_SETUP_TYPE = setuptools +PYTHON_PIP_LICENSE = MIT +PYTHON_PIP_LICENSE_FILES = LICENSE.txt +PYTHON_PIP_CPE_ID_VENDOR = pypa +PYTHON_PIP_CPE_ID_PRODUCT = pip +# Disputed CVE: things work as designed, and only affects the +# --extra-index-url option. This CVE will never be fixed. +PYTHON_PIP_IGNORE_CVES += CVE-2018-20225 + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-pkgconfig/python-pkgconfig.hash b/package/python-pkgconfig/python-pkgconfig.hash new file mode 100644 index 00000000..2fa57a7b --- /dev/null +++ b/package/python-pkgconfig/python-pkgconfig.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pkgconfig/json +md5 12523e11b91b050ca49975cc033689a4 pkgconfig-1.5.5.tar.gz +sha256 deb4163ef11f75b520d822d9505c1f462761b4309b1bb713d08689759ea8b899 pkgconfig-1.5.5.tar.gz +# Locally computed sha256 checksums +sha256 cdfc7f89d8c93b15d447c9ed71d5a533b4e44b82ec86daaefb10f6db37b9e13a LICENSE diff --git a/package/python-pkgconfig/python-pkgconfig.mk b/package/python-pkgconfig/python-pkgconfig.mk new file mode 100644 index 00000000..239dd90a --- /dev/null +++ b/package/python-pkgconfig/python-pkgconfig.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-pkgconfig +# +################################################################################ + +PYTHON_PKGCONFIG_VERSION = 1.5.5 +PYTHON_PKGCONFIG_SOURCE = pkgconfig-$(PYTHON_PKGCONFIG_VERSION).tar.gz +PYTHON_PKGCONFIG_SITE = https://files.pythonhosted.org/packages/c4/e0/e05fee8b5425db6f83237128742e7e5ef26219b687ab8f0d41ed0422125e +PYTHON_PKGCONFIG_SETUP_TYPE = setuptools +PYTHON_PKGCONFIG_LICENSE = MIT +PYTHON_PKGCONFIG_LICENSE_FILES = LICENSE + +HOST_PYTHON_PKGCONFIG_DEPENDENCIES = host-python-poetry-core + +$(eval $(host-python-package)) diff --git a/package/python-pluggy/Config.in b/package/python-pluggy/Config.in new file mode 100644 index 00000000..35b18c82 --- /dev/null +++ b/package/python-pluggy/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PLUGGY + bool "python-pluggy" + help + plugin and hook calling mechanisms for python. + + https://github.com/pytest-dev/pluggy diff --git a/package/python-pluggy/python-pluggy.hash b/package/python-pluggy/python-pluggy.hash new file mode 100644 index 00000000..338b08d0 --- /dev/null +++ b/package/python-pluggy/python-pluggy.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pluggy/json +md5 ffb69741271eaeefab3f2ef2435e2d5f pluggy-1.4.0.tar.gz +sha256 8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be pluggy-1.4.0.tar.gz +# Locally computed sha256 checksums +sha256 d6b65e6c213a5d0b577911d34d6e5949b9f59d76c238c5071a2f3fc16cfb2606 LICENSE diff --git a/package/python-pluggy/python-pluggy.mk b/package/python-pluggy/python-pluggy.mk new file mode 100644 index 00000000..a703a93b --- /dev/null +++ b/package/python-pluggy/python-pluggy.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-pluggy +# +################################################################################ + +PYTHON_PLUGGY_VERSION = 1.4.0 +PYTHON_PLUGGY_SOURCE = pluggy-$(PYTHON_PLUGGY_VERSION).tar.gz +PYTHON_PLUGGY_SITE = https://files.pythonhosted.org/packages/54/c6/43f9d44d92aed815e781ca25ba8c174257e27253a94630d21be8725a2b59 +PYTHON_PLUGGY_SETUP_TYPE = setuptools +PYTHON_PLUGGY_LICENSE = MIT +PYTHON_PLUGGY_LICENSE_FILES = LICENSE +PYTHON_PLUGGY_DEPENDENCIES = host-python-setuptools-scm +HOST_PYTHON_PLUGGY_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-ply/Config.in b/package/python-ply/Config.in new file mode 100644 index 00000000..d6d265ad --- /dev/null +++ b/package/python-ply/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PLY + bool "python-ply" + help + Python Lex & Yacc. + + http://www.dabeaz.com/ply/ diff --git a/package/python-ply/python-ply.hash b/package/python-ply/python-ply.hash new file mode 100644 index 00000000..88d30d67 --- /dev/null +++ b/package/python-ply/python-ply.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/ply/json +md5 6465f602e656455affcd7c5734c638f8 ply-3.11.tar.gz +sha256 00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3 ply-3.11.tar.gz +# Locally computed sha256 checksums +sha256 1095b93b81d2043c5c55e0859875b416f75edb6d5eccb4bf2ace1b5445d1c84f README.md diff --git a/package/python-ply/python-ply.mk b/package/python-ply/python-ply.mk new file mode 100644 index 00000000..5dc7964d --- /dev/null +++ b/package/python-ply/python-ply.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-ply +# +################################################################################ + +PYTHON_PLY_VERSION = 3.11 +PYTHON_PLY_SOURCE = ply-$(PYTHON_PLY_VERSION).tar.gz +PYTHON_PLY_SITE = https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da +PYTHON_PLY_SETUP_TYPE = setuptools +PYTHON_PLY_LICENSE = BSD-3-Clause +PYTHON_PLY_LICENSE_FILES = README.md + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-poetry-core/python-poetry-core.hash b/package/python-poetry-core/python-poetry-core.hash new file mode 100644 index 00000000..2dc1198a --- /dev/null +++ b/package/python-poetry-core/python-poetry-core.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/poetry-core/json +md5 eb8730e30aec5f644754b29587b47122 poetry_core-1.9.0.tar.gz +sha256 fa7a4001eae8aa572ee84f35feb510b321bd652e5cf9293249d62853e1f935a2 poetry_core-1.9.0.tar.gz +# Locally computed sha256 checksums +sha256 f1978133782b90f4733bc308ddb19267c3fe04797c88d9ed3bc219032495a982 LICENSE diff --git a/package/python-poetry-core/python-poetry-core.mk b/package/python-poetry-core/python-poetry-core.mk new file mode 100644 index 00000000..5b9b8a15 --- /dev/null +++ b/package/python-poetry-core/python-poetry-core.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-poetry-core +# +################################################################################ + +PYTHON_POETRY_CORE_VERSION = 1.9.0 +PYTHON_POETRY_CORE_SOURCE = poetry_core-$(PYTHON_POETRY_CORE_VERSION).tar.gz +PYTHON_POETRY_CORE_SITE = https://files.pythonhosted.org/packages/f2/db/20a9f9cae3f3c213a8c406deb4395698459fd96962cea8f2ccb230b1943c +PYTHON_POETRY_CORE_SETUP_TYPE = pep517 +PYTHON_POETRY_CORE_LICENSE = MIT +PYTHON_POETRY_CORE_LICENSE_FILES = LICENSE + +$(eval $(host-python-package)) diff --git a/package/python-portend/Config.in b/package/python-portend/Config.in new file mode 100644 index 00000000..6b21078c --- /dev/null +++ b/package/python-portend/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PORTEND + bool "python-portend" + select BR2_PACKAGE_PYTHON_TEMPORA # runtime + help + TCP port monitoring utilities. + + https://github.com/jaraco/portend diff --git a/package/python-portend/python-portend.hash b/package/python-portend/python-portend.hash new file mode 100644 index 00000000..98e196be --- /dev/null +++ b/package/python-portend/python-portend.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/portend/json +md5 0c3a2e8073c384b826f87795766f1e0e portend-3.2.0.tar.gz +sha256 5250a352c19c959d767cac878b829d93e5dc7625a5143399a2a00dc6628ffb72 portend-3.2.0.tar.gz +# Locally computed sha256 checksums +sha256 86da0f01aeae46348a3c3d465195dc1ceccde79f79e87769a64b8da04b2a4741 LICENSE diff --git a/package/python-portend/python-portend.mk b/package/python-portend/python-portend.mk new file mode 100644 index 00000000..5415198f --- /dev/null +++ b/package/python-portend/python-portend.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-portend +# +################################################################################ + +PYTHON_PORTEND_VERSION = 3.2.0 +PYTHON_PORTEND_SOURCE = portend-$(PYTHON_PORTEND_VERSION).tar.gz +PYTHON_PORTEND_SITE = https://files.pythonhosted.org/packages/8f/fc/bcfc768996b438d6e4bde7a6c8cfd62089847b0f5381a0e0ec2d8ee6b202 +PYTHON_PORTEND_LICENSE = MIT +PYTHON_PORTEND_LICENSE_FILES = LICENSE +PYTHON_PORTEND_SETUP_TYPE = setuptools +PYTHON_PORTEND_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-posix-ipc/Config.in b/package/python-posix-ipc/Config.in new file mode 100644 index 00000000..2c626786 --- /dev/null +++ b/package/python-posix-ipc/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_POSIX_IPC + bool "python-posix-ipc" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + The Python extension module posix_ipc gives access to POSIX + inter-process semaphores, shared memory and message queues + on systems that support the POSIX Realtime Extensions + a.k.a. POSIX 1003.1b-1993. + + http://semanchuk.com/philip/posix_ipc/ + +comment "python-posix-ipc needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/python-posix-ipc/python-posix-ipc.hash b/package/python-posix-ipc/python-posix-ipc.hash new file mode 100644 index 00000000..427e4c7b --- /dev/null +++ b/package/python-posix-ipc/python-posix-ipc.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/posix-ipc/json +md5 523a31c4dbd56e0d4fd677f33e126e5d posix_ipc-1.1.1.tar.gz +sha256 e2456ba0cfb2ee5ba14121450e8d825b3c4a1461fca0761220aab66d4111cbb7 posix_ipc-1.1.1.tar.gz +# Locally computed sha256 checksums +sha256 2b58f0bf31a8cbd7e56bfef030e9f7f02758ce8a810d073ccf41753bdc2a0747 LICENSE diff --git a/package/python-posix-ipc/python-posix-ipc.mk b/package/python-posix-ipc/python-posix-ipc.mk new file mode 100644 index 00000000..bdd2f1d4 --- /dev/null +++ b/package/python-posix-ipc/python-posix-ipc.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-posix-ipc +# +################################################################################ + +PYTHON_POSIX_IPC_VERSION = 1.1.1 +PYTHON_POSIX_IPC_SOURCE = posix_ipc-$(PYTHON_POSIX_IPC_VERSION).tar.gz +PYTHON_POSIX_IPC_SITE = https://files.pythonhosted.org/packages/07/7f/b954f224a226960a4aa98b6c5fa3d4f3fafb20bb8461446e41b563aee863 +PYTHON_POSIX_IPC_LICENSE = BSD-3-Clause +PYTHON_POSIX_IPC_LICENSE_FILES = LICENSE +PYTHON_POSIX_IPC_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-priority/Config.in b/package/python-priority/Config.in new file mode 100644 index 00000000..b73b7e2a --- /dev/null +++ b/package/python-priority/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PRIORITY + bool "python-priority" + help + A pure-Python implementation of the HTTP/2 priority tree. + + http://python-hyper.org/priority/ diff --git a/package/python-priority/python-priority.hash b/package/python-priority/python-priority.hash new file mode 100644 index 00000000..88fc9ada --- /dev/null +++ b/package/python-priority/python-priority.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/priority/json +md5 149531bf0e754782cf218bfc8cc994ae priority-2.0.0.tar.gz +sha256 c965d54f1b8d0d0b19479db3924c7c36cf672dbf2aec92d43fbdaf4492ba18c0 priority-2.0.0.tar.gz +# Locally computed sha256 checksums +sha256 f3e9c29e3db36dc305a4be68a8a225f93949852ce2d19b5b0a3c099eee6509c5 LICENSE diff --git a/package/python-priority/python-priority.mk b/package/python-priority/python-priority.mk new file mode 100644 index 00000000..6e141c3e --- /dev/null +++ b/package/python-priority/python-priority.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-priority +# +################################################################################ + +PYTHON_PRIORITY_VERSION = 2.0.0 +PYTHON_PRIORITY_SOURCE = priority-$(PYTHON_PRIORITY_VERSION).tar.gz +PYTHON_PRIORITY_SITE = https://files.pythonhosted.org/packages/f5/3c/eb7c35f4dcede96fca1842dac5f4f5d15511aa4b52f3a961219e68ae9204 +PYTHON_PRIORITY_SETUP_TYPE = setuptools +PYTHON_PRIORITY_LICENSE = MIT +PYTHON_PRIORITY_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-prompt-toolkit/Config.in b/package/python-prompt-toolkit/Config.in new file mode 100644 index 00000000..81d95888 --- /dev/null +++ b/package/python-prompt-toolkit/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_PROMPT_TOOLKIT + bool "python-prompt-toolkit" + select BR2_PACKAGE_PYTHON_WCWIDTH # runtime + select BR2_PACKAGE_PYTHON3_PYEXPAT # runtime + help + Library for building powerful interactive command lines in + Python. + + https://github.com/prompt-toolkit/python-prompt-toolkit diff --git a/package/python-prompt-toolkit/python-prompt-toolkit.hash b/package/python-prompt-toolkit/python-prompt-toolkit.hash new file mode 100644 index 00000000..1821d4d6 --- /dev/null +++ b/package/python-prompt-toolkit/python-prompt-toolkit.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/prompt-toolkit/json +md5 f33c0f4ae8d11addababf6d90c98f8bc prompt_toolkit-3.0.43.tar.gz +sha256 3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d prompt_toolkit-3.0.43.tar.gz +# Locally computed sha256 checksums +sha256 303574d9bdd85c757d6025017942bf17baeedf2778f62bd7f425d07d880f4c4a LICENSE diff --git a/package/python-prompt-toolkit/python-prompt-toolkit.mk b/package/python-prompt-toolkit/python-prompt-toolkit.mk new file mode 100644 index 00000000..31c0d978 --- /dev/null +++ b/package/python-prompt-toolkit/python-prompt-toolkit.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-prompt-toolkit +# +################################################################################ + +PYTHON_PROMPT_TOOLKIT_VERSION = 3.0.43 +PYTHON_PROMPT_TOOLKIT_SOURCE = prompt_toolkit-$(PYTHON_PROMPT_TOOLKIT_VERSION).tar.gz +PYTHON_PROMPT_TOOLKIT_SITE = https://files.pythonhosted.org/packages/cc/c6/25b6a3d5cd295304de1e32c9edbcf319a52e965b339629d37d42bb7126ca +PYTHON_PROMPT_TOOLKIT_SETUP_TYPE = setuptools +PYTHON_PROMPT_TOOLKIT_LICENSE = BSD-3-Clause +PYTHON_PROMPT_TOOLKIT_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-protobuf/Config.in b/package/python-protobuf/Config.in new file mode 100644 index 00000000..7de46352 --- /dev/null +++ b/package/python-protobuf/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_PROTOBUF + bool "python-protobuf" + # host-protobuf only builds on certain architectures + depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS + select BR2_PACKAGE_PYTHON_SIX # runtime + help + Python implementation of the Google Protocol Buffers. + + Protocol buffers are Google's language-neutral, + platform-neutral, extensible mechanism for serializing + structured data. + + https://developers.google.com/protocol-buffers diff --git a/package/python-protobuf/python-protobuf.hash b/package/python-protobuf/python-protobuf.hash new file mode 100644 index 00000000..e7af678b --- /dev/null +++ b/package/python-protobuf/python-protobuf.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 e2b976e67d6fcf7078f799143a73f2a4d9cf3126ca68a1a6f1bda30fe5f3585c protobuf-python-4.21.12.tar.gz +sha256 6e5e117324afd944dcf67f36cf329843bc1a92229a8cd9bb573d7a83130fea7d LICENSE diff --git a/package/python-protobuf/python-protobuf.mk b/package/python-protobuf/python-protobuf.mk new file mode 100644 index 00000000..df902546 --- /dev/null +++ b/package/python-protobuf/python-protobuf.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-protobuf +# +################################################################################ + +PYTHON_PROTOBUF_VERSION = $(PROTOBUF_VERSION) +PYTHON_PROTOBUF_SOURCE = protobuf-python-4.$(PYTHON_PROTOBUF_VERSION).tar.gz +PYTHON_PROTOBUF_SITE = $(PROTOBUF_SITE) +PYTHON_PROTOBUF_LICENSE = BSD-3-Clause +PYTHON_PROTOBUF_LICENSE_FILES = LICENSE +PYTHON_PROTOBUF_DEPENDENCIES = host-protobuf +PYTHON_PROTOBUF_SETUP_TYPE = setuptools +PYTHON_PROTOBUF_SUBDIR = python + +$(eval $(python-package)) diff --git a/package/python-psutil/Config.in b/package/python-psutil/Config.in new file mode 100644 index 00000000..c64eeeed --- /dev/null +++ b/package/python-psutil/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_PSUTIL + bool "python-psutil" + 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 diff --git a/package/python-psutil/python-psutil.hash b/package/python-psutil/python-psutil.hash new file mode 100644 index 00000000..c5f4f39f --- /dev/null +++ b/package/python-psutil/python-psutil.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/psutil/json +md5 afcc40a779f84f6d909570a8934cebc3 psutil-5.9.7.tar.gz +sha256 3f02134e82cfb5d089fddf20bb2e03fd5cd52395321d1c8458a9e58500ff417c psutil-5.9.7.tar.gz +# Locally computed sha256 checksums +sha256 b89c063b3786e28e0c0a38f1931db61fed35e69dd2a2966fbecffee0f46c8d10 LICENSE diff --git a/package/python-psutil/python-psutil.mk b/package/python-psutil/python-psutil.mk new file mode 100644 index 00000000..e83193f2 --- /dev/null +++ b/package/python-psutil/python-psutil.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-psutil +# +################################################################################ + +PYTHON_PSUTIL_VERSION = 5.9.7 +PYTHON_PSUTIL_SOURCE = psutil-$(PYTHON_PSUTIL_VERSION).tar.gz +PYTHON_PSUTIL_SITE = https://files.pythonhosted.org/packages/a0/d0/c9ae661a302931735237791f04cb7086ac244377f78692ba3b3eae3a9619 +PYTHON_PSUTIL_SETUP_TYPE = setuptools +PYTHON_PSUTIL_LICENSE = BSD-3-Clause +PYTHON_PSUTIL_LICENSE_FILES = LICENSE +PYTHON_PSUTIL_CPE_ID_VENDOR = psutil_project +PYTHON_PSUTIL_CPE_ID_PRODUCT = psutil + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-psycopg2/Config.in b/package/python-psycopg2/Config.in new file mode 100644 index 00000000..4aa86c76 --- /dev/null +++ b/package/python-psycopg2/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_PYTHON_PSYCOPG2 + bool "python-psycopg2" + depends on BR2_USE_WCHAR # postgresql + depends on !BR2_OPTIMIZE_FAST # postgresql + select BR2_PACKAGE_POSTGRESQL + help + Psycopg is the most popular PostgreSQL database adapter for + the Python programming language. Its main features are the + complete implementation of the Python DB API 2.0 specification + and the thread safety (several threads can share the same + connection). It was designed for heavily multi-threaded + applications that create and destroy lots of cursors and make + a large number of concurrent INSERTs or UPDATEs. + + Psycopg 2 is mostly implemented in C as a libpq wrapper, + resulting in being both efficient and secure. It features + client-side and server-side cursors, asynchronous + communication and notifications, COPY support. Many Python + types are supported out-of-the-box and adapted to matching + PostgreSQL data types; adaptation can be extended and + customized thanks to a flexible objects adaptation system. + Psycopg 2 is both Unicode and Python 3 friendly. + + http://initd.org/psycopg/ + +comment "python-psycopg2 needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +comment "python-psycopg2 can't be built with Optimize for fast" + depends on BR2_OPTIMIZE_FAST diff --git a/package/python-psycopg2/python-psycopg2.hash b/package/python-psycopg2/python-psycopg2.hash new file mode 100644 index 00000000..6659c6ce --- /dev/null +++ b/package/python-psycopg2/python-psycopg2.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/psycopg2/json +md5 eae35fa97cdc92b910b706c720a257c7 psycopg2-2.9.9.tar.gz +sha256 d1454bde93fb1e224166811694d600e746430c006fbb031ea06ecc2ea41bf156 psycopg2-2.9.9.tar.gz +# Locally computed sha256 checksums +sha256 9614b85dfc9a72c5b2ca33144c1d7e1ed3b1c297459d9fb28a6a5762c2e8d71b LICENSE diff --git a/package/python-psycopg2/python-psycopg2.mk b/package/python-psycopg2/python-psycopg2.mk new file mode 100644 index 00000000..59a3190a --- /dev/null +++ b/package/python-psycopg2/python-psycopg2.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# python-psycopg2 +# +################################################################################ + +PYTHON_PSYCOPG2_VERSION = 2.9.9 +PYTHON_PSYCOPG2_SOURCE = psycopg2-$(PYTHON_PSYCOPG2_VERSION).tar.gz +PYTHON_PSYCOPG2_SITE = https://files.pythonhosted.org/packages/c9/5e/dc6acaf46d78979d6b03458b7a1618a68e152a6776fce95daac5e0f0301b +PYTHON_PSYCOPG2_SETUP_TYPE = setuptools +PYTHON_PSYCOPG2_LICENSE = LGPL-3.0+ +PYTHON_PSYCOPG2_LICENSE_FILES = LICENSE +PYTHON_PSYCOPG2_DEPENDENCIES = postgresql + +# Force psycopg2 to use the Buildroot provided postgresql version +# instead of the one from the host machine +define PYTHON_PSYCOPG2_CREATE_SETUP_CFG + printf "[build_ext]\ndefine=\npg_config=$(STAGING_DIR)/usr/bin/pg_config\n" > $(@D)/setup.cfg +endef +PYTHON_PSYCOPG2_PRE_CONFIGURE_HOOKS += PYTHON_PSYCOPG2_CREATE_SETUP_CFG + +$(eval $(python-package)) diff --git a/package/python-ptyprocess/Config.in b/package/python-ptyprocess/Config.in new file mode 100644 index 00000000..b95dacbd --- /dev/null +++ b/package/python-ptyprocess/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PTYPROCESS + bool "python-ptyprocess" + help + Launch a subprocess in a pseudo terminal (pty), and interact + with both the process and its pty. + + https://github.com/pexpect/ptyprocess diff --git a/package/python-ptyprocess/python-ptyprocess.hash b/package/python-ptyprocess/python-ptyprocess.hash new file mode 100644 index 00000000..bbd24b33 --- /dev/null +++ b/package/python-ptyprocess/python-ptyprocess.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/ptyprocess/json +md5 9da200c397cb1752209a6b718b6cfc68 ptyprocess-0.7.0.tar.gz +sha256 5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220 ptyprocess-0.7.0.tar.gz +# Locally computed sha256 checksums +sha256 c822d385b1a73329846241799becf18690b5d44764c1bed69300b536a405030a LICENSE diff --git a/package/python-ptyprocess/python-ptyprocess.mk b/package/python-ptyprocess/python-ptyprocess.mk new file mode 100644 index 00000000..52660195 --- /dev/null +++ b/package/python-ptyprocess/python-ptyprocess.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-ptyprocess +# +################################################################################ + +PYTHON_PTYPROCESS_VERSION = 0.7.0 +PYTHON_PTYPROCESS_SITE = https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e +PYTHON_PTYPROCESS_SOURCE = ptyprocess-$(PYTHON_PTYPROCESS_VERSION).tar.gz +PYTHON_PTYPROCESS_LICENSE = ISC +PYTHON_PTYPROCESS_LICENSE_FILES = LICENSE +PYTHON_PTYPROCESS_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-pudb/Config.in b/package/python-pudb/Config.in new file mode 100644 index 00000000..2bdd6891 --- /dev/null +++ b/package/python-pudb/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_PUDB + bool "python-pudb" + select BR2_PACKAGE_PYTHON_PACKAGING # runtime + select BR2_PACKAGE_PYTHON_URWID # runtime + select BR2_PACKAGE_PYTHON_URWID_READLINE # runtime + select BR2_PACKAGE_PYTHON_JEDI # runtime + select BR2_PACKAGE_PYTHON_PYGMENTS # runtime + select BR2_PACKAGE_PYTHON3_CURSES # runtime + help + A full-screen, console-based Python debugger. + + https://github.com/inducer/pudb diff --git a/package/python-pudb/python-pudb.hash b/package/python-pudb/python-pudb.hash new file mode 100644 index 00000000..a6d6b9db --- /dev/null +++ b/package/python-pudb/python-pudb.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pudb/json +md5 65639ff646f9e1f452446f4364b2e47f pudb-2024.1.tar.gz +sha256 fc9d6a976a59b590764c8379ec200fecd47faa84259b64efd8cd86066a0af338 pudb-2024.1.tar.gz +# Locally computed sha256 checksums +sha256 a95343fffff49cde3d9bf33cf6bb71cb3bf0ed83f47d98a7ba04b175d29c79ab LICENSE diff --git a/package/python-pudb/python-pudb.mk b/package/python-pudb/python-pudb.mk new file mode 100644 index 00000000..68fe3850 --- /dev/null +++ b/package/python-pudb/python-pudb.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pudb +# +################################################################################ + +PYTHON_PUDB_VERSION = 2024.1 +PYTHON_PUDB_SOURCE = pudb-$(PYTHON_PUDB_VERSION).tar.gz +PYTHON_PUDB_SITE = https://files.pythonhosted.org/packages/b3/a1/db467e7c828e2ced173d9dbb47abc17ca0e0b3225cb1f4066293e63a2ed9 +PYTHON_PUDB_SETUP_TYPE = setuptools +PYTHON_PUDB_LICENSE = MIT +PYTHON_PUDB_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-pure-eval/Config.in b/package/python-pure-eval/Config.in new file mode 100644 index 00000000..f6ccd605 --- /dev/null +++ b/package/python-pure-eval/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PURE_EVAL + bool "python-pure-eval" + help + Safely evaluate AST nodes without side effects. + + http://github.com/alexmojaki/pure_eval diff --git a/package/python-pure-eval/python-pure-eval.hash b/package/python-pure-eval/python-pure-eval.hash new file mode 100644 index 00000000..5bf5dcb7 --- /dev/null +++ b/package/python-pure-eval/python-pure-eval.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pure_eval/json +md5 212fd27ca2c58d9effddec69748d738a pure_eval-0.2.2.tar.gz +sha256 2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3 pure_eval-0.2.2.tar.gz +# Locally computed sha256 checksums +sha256 a476a2cb0ef4c41450340a577a28b91ac4c7f669136b2ee148047fabd5fc4181 LICENSE.txt diff --git a/package/python-pure-eval/python-pure-eval.mk b/package/python-pure-eval/python-pure-eval.mk new file mode 100644 index 00000000..f139ea27 --- /dev/null +++ b/package/python-pure-eval/python-pure-eval.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-pure-eval +# +################################################################################ + +PYTHON_PURE_EVAL_VERSION = 0.2.2 +PYTHON_PURE_EVAL_SOURCE = pure_eval-$(PYTHON_PURE_EVAL_VERSION).tar.gz +PYTHON_PURE_EVAL_SITE = https://files.pythonhosted.org/packages/97/5a/0bc937c25d3ce4e0a74335222aee05455d6afa2888032185f8ab50cdf6fd +PYTHON_PURE_EVAL_SETUP_TYPE = setuptools +PYTHON_PURE_EVAL_LICENSE = MIT +PYTHON_PURE_EVAL_LICENSE_FILES = LICENSE.txt + +PYTHON_PURE_EVAL_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-py/Config.in b/package/python-py/Config.in new file mode 100644 index 00000000..354372f5 --- /dev/null +++ b/package/python-py/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PY + bool "python-py" + help + library with cross-python path, ini-parsing, io, code, log + facilities. + + http://py.readthedocs.io/ diff --git a/package/python-py/python-py.hash b/package/python-py/python-py.hash new file mode 100644 index 00000000..537fe317 --- /dev/null +++ b/package/python-py/python-py.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/py/json +md5 bde7dcc1cb452a1e10206ef2f811ba88 py-1.11.0.tar.gz +sha256 51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719 py-1.11.0.tar.gz +# Locally computed sha256 checksums +sha256 2af680c39ef493fb82830356d1d3df1acb5a06033cba2dec7a19e21caa77a866 LICENSE +sha256 2af680c39ef493fb82830356d1d3df1acb5a06033cba2dec7a19e21caa77a866 py/_vendored_packages/iniconfig-1.1.1.dist-info/LICENSE diff --git a/package/python-py/python-py.mk b/package/python-py/python-py.mk new file mode 100644 index 00000000..cec02dcf --- /dev/null +++ b/package/python-py/python-py.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-py +# +################################################################################ + +PYTHON_PY_VERSION = 1.11.0 +PYTHON_PY_SOURCE = py-$(PYTHON_PY_VERSION).tar.gz +PYTHON_PY_SITE = https://files.pythonhosted.org/packages/98/ff/fec109ceb715d2a6b4c4a85a61af3b40c723a961e8828319fbcb15b868dc +PYTHON_PY_DEPENDENCIES = host-python-setuptools-scm +PYTHON_PY_SETUP_TYPE = setuptools +PYTHON_PY_LICENSE = MIT +PYTHON_PY_LICENSE_FILES = LICENSE py/_vendored_packages/iniconfig-1.1.1.dist-info/LICENSE +PYTHON_PY_CPE_ID_VENDOR = pytest +PYTHON_PY_CPE_ID_PRODUCT = py + +$(eval $(python-package)) diff --git a/package/python-pyaes/Config.in b/package/python-pyaes/Config.in new file mode 100644 index 00000000..629fd828 --- /dev/null +++ b/package/python-pyaes/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PYAES + bool "python-pyaes" + help + Pure-Python Implementation of the AES block-cipher and + common modes of operation. + + https://github.com/ricmoo/pyaes diff --git a/package/python-pyaes/python-pyaes.hash b/package/python-pyaes/python-pyaes.hash new file mode 100644 index 00000000..c9e9a7ea --- /dev/null +++ b/package/python-pyaes/python-pyaes.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pyaes/json +md5 20fd5c6e29dcfdd08098e85a859a54ec pyaes-1.6.1.tar.gz +sha256 02c1b1405c38d3c370b085fb952dd8bea3fadcee6411ad99f312cc129c536d8f pyaes-1.6.1.tar.gz +# Locally computed sha256 checksums +sha256 1efe6c78b28b4203d397ea9b68bdc9c658d21cd9afaf8ae8223def83f2a7ebbd LICENSE.txt diff --git a/package/python-pyaes/python-pyaes.mk b/package/python-pyaes/python-pyaes.mk new file mode 100644 index 00000000..77ec1000 --- /dev/null +++ b/package/python-pyaes/python-pyaes.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyaes +# +################################################################################ + +PYTHON_PYAES_VERSION = 1.6.1 +PYTHON_PYAES_SOURCE = pyaes-$(PYTHON_PYAES_VERSION).tar.gz +PYTHON_PYAES_SITE = https://files.pythonhosted.org/packages/44/66/2c17bae31c906613795711fc78045c285048168919ace2220daa372c7d72 +PYTHON_PYAES_SETUP_TYPE = setuptools +PYTHON_PYAES_LICENSE = MIT +PYTHON_PYAES_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-pyalsa/Config.in b/package/python-pyalsa/Config.in new file mode 100644 index 00000000..e91c99b4 --- /dev/null +++ b/package/python-pyalsa/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_PYTHON_PYALSA + bool "python-pyalsa" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_HWDEP + select BR2_PACKAGE_ALSA_LIB_MIXER + select BR2_PACKAGE_ALSA_LIB_RAWMIDI + select BR2_PACKAGE_ALSA_LIB_SEQ + help + Official ALSA Python binding, including hardware + management, mixer and sequencer control. + + http://www.alsa-project.org/ + +comment "python-pyalsa needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/python-pyalsa/python-pyalsa.hash b/package/python-pyalsa/python-pyalsa.hash new file mode 100644 index 00000000..206107d2 --- /dev/null +++ b/package/python-pyalsa/python-pyalsa.hash @@ -0,0 +1,4 @@ +# Locally computed, after checking pgp signature from: +# https://www.alsa-project.org/files/pub/pyalsa/pyalsa-1.2.12.tar.bz2.sig +# with key F04DF50737AC1A884C4B3D718380596DA6E59C91 +sha256 8abeaf41e5f48f617a52d1078932da89ab303d4a1d8f9919f947bdb1b7d03f50 pyalsa-1.2.12.tar.bz2 diff --git a/package/python-pyalsa/python-pyalsa.mk b/package/python-pyalsa/python-pyalsa.mk new file mode 100644 index 00000000..19d2c91d --- /dev/null +++ b/package/python-pyalsa/python-pyalsa.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyalsa +# +################################################################################ + +PYTHON_PYALSA_VERSION = 1.2.12 +PYTHON_PYALSA_SOURCE = pyalsa-$(PYTHON_PYALSA_VERSION).tar.bz2 +PYTHON_PYALSA_SITE = https://www.alsa-project.org/files/pub/pyalsa +PYTHON_PYALSA_SETUP_TYPE = setuptools +PYTHON_PYALSA_LICENSE = LGPL-2.1+ +PYTHON_PYALSA_DEPENDENCIES = alsa-lib + +$(eval $(python-package)) diff --git a/package/python-pyasn1-modules/Config.in b/package/python-pyasn1-modules/Config.in new file mode 100644 index 00000000..cb486d33 --- /dev/null +++ b/package/python-pyasn1-modules/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PYASN1_MODULES + bool "python-pyasn1-modules" + select BR2_PACKAGE_PYTHON_PYASN1 # runtime + help + A collection of ASN.1-based protocols modules. + + https://github.com/pyasn1/pyasn1-modules diff --git a/package/python-pyasn1-modules/python-pyasn1-modules.hash b/package/python-pyasn1-modules/python-pyasn1-modules.hash new file mode 100644 index 00000000..6f4bb6fa --- /dev/null +++ b/package/python-pyasn1-modules/python-pyasn1-modules.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pyasn1-modules/json +md5 94ee572b06ae09f1903b11333575b091 pyasn1_modules-0.3.0.tar.gz +sha256 5bd01446b736eb9d31512a30d46c1ac3395d676c6f3cafa4c03eb54b9925631c pyasn1_modules-0.3.0.tar.gz +# Locally computed sha256 checksums +sha256 2aad5fc00f705c4a1addb83eed10a6a75d286a3779f0cf8519d87e62bc4735fd LICENSE.txt diff --git a/package/python-pyasn1-modules/python-pyasn1-modules.mk b/package/python-pyasn1-modules/python-pyasn1-modules.mk new file mode 100644 index 00000000..41987028 --- /dev/null +++ b/package/python-pyasn1-modules/python-pyasn1-modules.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyasn1-modules +# +################################################################################ + +PYTHON_PYASN1_MODULES_VERSION = 0.3.0 +PYTHON_PYASN1_MODULES_SOURCE = pyasn1_modules-$(PYTHON_PYASN1_MODULES_VERSION).tar.gz +PYTHON_PYASN1_MODULES_SITE = https://files.pythonhosted.org/packages/3b/e4/7dec823b1b5603c5b3c51e942d5d9e65efd6ff946e713a325ed4146d070f +PYTHON_PYASN1_MODULES_SETUP_TYPE = setuptools +PYTHON_PYASN1_MODULES_LICENSE = BSD-2-Clause +PYTHON_PYASN1_MODULES_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-pyasn1/Config.in b/package/python-pyasn1/Config.in new file mode 100644 index 00000000..fea63813 --- /dev/null +++ b/package/python-pyasn1/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYASN1 + bool "python-pyasn1" + help + ASN.1 types and codecs. + + https://github.com/etingof/pyasn1 diff --git a/package/python-pyasn1/python-pyasn1.hash b/package/python-pyasn1/python-pyasn1.hash new file mode 100644 index 00000000..4347a43c --- /dev/null +++ b/package/python-pyasn1/python-pyasn1.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pyasn1/json +md5 dffae4ff9f997a83324b3f33fe62be54 pyasn1-0.4.8.tar.gz +sha256 aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba pyasn1-0.4.8.tar.gz +# Locally computed sha256 checksums +sha256 22c5cc6922ab5d69fba32d8c5ee4cdd14981508cb53afc0ebd85593847fd95a5 LICENSE.rst diff --git a/package/python-pyasn1/python-pyasn1.mk b/package/python-pyasn1/python-pyasn1.mk new file mode 100644 index 00000000..60050bef --- /dev/null +++ b/package/python-pyasn1/python-pyasn1.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyasn1 +# +################################################################################ + +PYTHON_PYASN1_VERSION = 0.4.8 +PYTHON_PYASN1_SOURCE = pyasn1-$(PYTHON_PYASN1_VERSION).tar.gz +PYTHON_PYASN1_SITE = https://files.pythonhosted.org/packages/a4/db/fffec68299e6d7bad3d504147f9094830b704527a7fc098b721d38cc7fa7 +PYTHON_PYASN1_SETUP_TYPE = setuptools +PYTHON_PYASN1_LICENSE = BSD-2-Clause +PYTHON_PYASN1_LICENSE_FILES = LICENSE.rst + +$(eval $(python-package)) diff --git a/package/python-pyasynchat/Config.in b/package/python-pyasynchat/Config.in new file mode 100644 index 00000000..bf11cc5b --- /dev/null +++ b/package/python-pyasynchat/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_PYASYNCHAT + bool "python-pyasynchat" + select BR2_PACKAGE_PYTHON_PYASYNCORE # runtime + help + Make asynchat available for Python 3.12 onwards. + + This is a compatibility package using the code removed from + the standard libary, upstream does not intend any + maintenance. + + https://github.com/simonrob/pyasynchat diff --git a/package/python-pyasynchat/python-pyasynchat.hash b/package/python-pyasynchat/python-pyasynchat.hash new file mode 100644 index 00000000..232f936b --- /dev/null +++ b/package/python-pyasynchat/python-pyasynchat.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pyasynchat/json +md5 9fa7e3822f689b1236ca59c5f1b71415 pyasynchat-1.0.4.tar.gz +sha256 3f5333df649e46c56d48c57e6a4b7163fd07f626bfd884e22ef373ab3c3a4670 pyasynchat-1.0.4.tar.gz +# Locally computed sha256 checksums +sha256 f4f80c98161f5632004d44713b5cb95e400145b40cbc0297f1f50c27b54befdb LICENSE diff --git a/package/python-pyasynchat/python-pyasynchat.mk b/package/python-pyasynchat/python-pyasynchat.mk new file mode 100644 index 00000000..6fb460ce --- /dev/null +++ b/package/python-pyasynchat/python-pyasynchat.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyasynchat +# +################################################################################ + +PYTHON_PYASYNCHAT_VERSION = 1.0.4 +PYTHON_PYASYNCHAT_SOURCE = pyasynchat-$(PYTHON_PYASYNCHAT_VERSION).tar.gz +PYTHON_PYASYNCHAT_SITE = https://github.com/simonrob/pyasynchat/releases/download/v$(PYTHON_PYASYNCHAT_VERSION) +PYTHON_PYASYNCHAT_SETUP_TYPE = setuptools +PYTHON_PYASYNCHAT_LICENSE = PSF-2.0 +PYTHON_PYASYNCHAT_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-pyasyncore/Config.in b/package/python-pyasyncore/Config.in new file mode 100644 index 00000000..ad1376a2 --- /dev/null +++ b/package/python-pyasyncore/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_PYASYNCORE + bool "python-pyasyncore" + help + Make asyncore available for Python 3.12 onwards. + + This is a compatibility package using the code removed from + the standard libary, upstream does not intend any + maintenance. + + https://github.com/simonrob/pyasyncore diff --git a/package/python-pyasyncore/python-pyasyncore.hash b/package/python-pyasyncore/python-pyasyncore.hash new file mode 100644 index 00000000..ee4665fe --- /dev/null +++ b/package/python-pyasyncore/python-pyasyncore.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pyasyncore/json +md5 f97e2b69f1fa11470867b395c2fabf84 pyasyncore-1.0.4.tar.gz +sha256 2c7a8b9b750ba6260f1e5a061456d61320a80579c6a43d42183417da89c7d5d6 pyasyncore-1.0.4.tar.gz +# Locally computed sha256 checksums +sha256 f4f80c98161f5632004d44713b5cb95e400145b40cbc0297f1f50c27b54befdb LICENSE diff --git a/package/python-pyasyncore/python-pyasyncore.mk b/package/python-pyasyncore/python-pyasyncore.mk new file mode 100644 index 00000000..4b1e3c98 --- /dev/null +++ b/package/python-pyasyncore/python-pyasyncore.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyasyncore +# +################################################################################ + +PYTHON_PYASYNCORE_VERSION = 1.0.4 +PYTHON_PYASYNCORE_SOURCE = pyasyncore-$(PYTHON_PYASYNCORE_VERSION).tar.gz +PYTHON_PYASYNCORE_SITE = https://github.com/simonrob/pyasyncore/releases/download/v$(PYTHON_PYASYNCORE_VERSION) +PYTHON_PYASYNCORE_SETUP_TYPE = setuptools +PYTHON_PYASYNCORE_LICENSE = PSF-2.0 +PYTHON_PYASYNCORE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-pybind/0001-pybind11-commands.py-support-STAGING_DIR.patch b/package/python-pybind/0001-pybind11-commands.py-support-STAGING_DIR.patch new file mode 100644 index 00000000..255c4840 --- /dev/null +++ b/package/python-pybind/0001-pybind11-commands.py-support-STAGING_DIR.patch @@ -0,0 +1,36 @@ +From bf9f0d619e2e0a424e471a2f9235d26ece5b348c Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Fri, 7 Jan 2022 19:32:18 +0100 +Subject: [PATCH] pybind11/commands.py: support STAGING_DIR + +In Buildroot, we install build-time python scripts in the host directory +(otherwise they can't be run with host python), but when running +pybind11 --includes it should return the staging directory. + +Patch commands.py to use the STAGING_DIR environment variable instead of +the current directory, if it is set. + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +Upstream-Status: N/A, Buildroot specific +Signed-off-by: Guillaume W. Bres +--- + pybind11/commands.py | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/pybind11/commands.py b/pybind11/commands.py +index a29c8ca..de8a27c 100644 +--- a/pybind11/commands.py ++++ b/pybind11/commands.py +@@ -2,7 +2,8 @@ from __future__ import annotations + + import os + +-DIR = os.path.abspath(os.path.dirname(__file__)) ++DIR = os.environ.get('STAGING_DIR') or \ ++ os.path.abspath(os.path.dirname(__file__)) + + + def get_include(user: bool = False) -> str: # noqa: ARG001 +-- +2.31.1 + diff --git a/package/python-pybind/Config.in b/package/python-pybind/Config.in new file mode 100644 index 00000000..6e03cc62 --- /dev/null +++ b/package/python-pybind/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_PYBIND + bool "python-pybind" + depends on BR2_INSTALL_LIBSTDCPP + help + PyBind is a lightweight header-only library that exposes C++ + types in Python and vice versa, mainly to create Python + bindings of existing C++ code. + + http://pybind11.readthedocs.org/en/master + +comment "python-pybind needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/python-pybind/python-pybind.hash b/package/python-pybind/python-pybind.hash new file mode 100644 index 00000000..c831007d --- /dev/null +++ b/package/python-pybind/python-pybind.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 51631e88960a8856f9c497027f55c9f2f9115cafb08c0005439838a05ba17bfc python-pybind-2.13.1.tar.gz +# License files, locally calculated +sha256 83965b843b98f670d3a85bd041ed4b372c8ec50d7b4a5995a83ac697ba675dcb LICENSE diff --git a/package/python-pybind/python-pybind.mk b/package/python-pybind/python-pybind.mk new file mode 100644 index 00000000..a1cc02ee --- /dev/null +++ b/package/python-pybind/python-pybind.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# python-pybind +# +################################################################################ + +PYTHON_PYBIND_VERSION = 2.13.1 +PYTHON_PYBIND_SITE = $(call github,pybind,pybind11,v$(PYTHON_PYBIND_VERSION)) +PYTHON_PYBIND_LICENSE = BSD-3-Clause +PYTHON_PYBIND_LICENSE_FILES = LICENSE +PYTHON_PYBIND_INSTALL_STAGING = YES +PYTHON_PYBIND_INSTALL_TARGET = NO # Header-only library +PYTHON_PYBIND_DEPENDENCIES = python3 + +PYTHON_PYBIND_CONF_OPTS = \ + -DPYBIND11_INSTALL=ON \ + -DPYBIND11_TEST=OFF \ + -DPYBIND11_NOPYTHON=ON + +PYTHON_PYBIND_INSTALL_PATH = $(HOST_DIR)/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/pybind11 + +define PYTHON_PYBIND_INSTALL_MODULE + mkdir -p $(PYTHON_PYBIND_INSTALL_PATH) + cp -dpf $(@D)/pybind11/*.py $(PYTHON_PYBIND_INSTALL_PATH) +endef +PYTHON_PYBIND_POST_INSTALL_STAGING_HOOKS += PYTHON_PYBIND_INSTALL_MODULE + +$(eval $(cmake-package)) diff --git a/package/python-pycairo/Config.in b/package/python-pycairo/Config.in new file mode 100644 index 00000000..0d8de977 --- /dev/null +++ b/package/python-pycairo/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PYCAIRO + bool "python-pycairo" + select BR2_PACKAGE_CAIRO + help + Python interface for cairo. + + https://pycairo.readthedocs.io diff --git a/package/python-pycairo/python-pycairo.hash b/package/python-pycairo/python-pycairo.hash new file mode 100644 index 00000000..f44afe6f --- /dev/null +++ b/package/python-pycairo/python-pycairo.hash @@ -0,0 +1,7 @@ +# md5, sha256 from https://pypi.org/pypi/pycairo/json +md5 7669cdc70111d01ba6faecd65d8cdbf6 pycairo-1.25.1.tar.gz +sha256 7e2be4fbc3b4536f16db7a11982cbf713e75069a4d73d44fe5a49b68423f5c0c pycairo-1.25.1.tar.gz +# Locally computed sha256 checksums +sha256 360b9a526d47c51a7cab7f1ec49ca5893050562d639b742d588934ff84823a72 COPYING +sha256 d80c9d084ebfb50ea1ed91bfbc2410d6ce542097a32c43b00781b83adcb8c77f COPYING-LGPL-2.1 +sha256 53692a2ed6c6a2c6ec9b32dd0b820dfae91e0a1fcdf625ca9ed0bdf8705fcc4f COPYING-MPL-1.1 diff --git a/package/python-pycairo/python-pycairo.mk b/package/python-pycairo/python-pycairo.mk new file mode 100644 index 00000000..eb60293f --- /dev/null +++ b/package/python-pycairo/python-pycairo.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-pycairo +# +################################################################################ + +PYTHON_PYCAIRO_VERSION = 1.25.1 +PYTHON_PYCAIRO_SOURCE = pycairo-$(PYTHON_PYCAIRO_VERSION).tar.gz +PYTHON_PYCAIRO_SITE = https://files.pythonhosted.org/packages/c7/7c/de4d40316ee563e4f15a0f05f28c8458833fbef80c4588b9dd51f39b78ee +PYTHON_PYCAIRO_SETUP_TYPE = setuptools +PYTHON_PYCAIRO_DEPENDENCIES = cairo +PYTHON_PYCAIRO_LICENSE = LGPL-2.1 or MPL-1.1 +PYTHON_PYCAIRO_LICENSE_FILES = COPYING COPYING-LGPL-2.1 COPYING-MPL-1.1 + +$(eval $(python-package)) diff --git a/package/python-pycares/Config.in b/package/python-pycares/Config.in new file mode 100644 index 00000000..889e0943 --- /dev/null +++ b/package/python-pycares/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PYCARES + bool "python-pycares" + select BR2_PACKAGE_PYTHON_CFFI # runtime + help + Python interface for c-ares. + + http://github.com/saghul/pycares diff --git a/package/python-pycares/python-pycares.hash b/package/python-pycares/python-pycares.hash new file mode 100644 index 00000000..fa24c1ec --- /dev/null +++ b/package/python-pycares/python-pycares.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pycares/json +md5 ff4e54e91e32484b189b1e28758ec8c7 pycares-4.4.0.tar.gz +sha256 f47579d508f2f56eddd16ce72045782ad3b1b3b678098699e2b6a1b30733e1c2 pycares-4.4.0.tar.gz +# Locally computed sha256 checksums +sha256 427bb3a5372024a26e2c290b24382512bcc7ca123431c4dd178dd613beea7eee LICENSE diff --git a/package/python-pycares/python-pycares.mk b/package/python-pycares/python-pycares.mk new file mode 100644 index 00000000..fe691644 --- /dev/null +++ b/package/python-pycares/python-pycares.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-pycares +# +################################################################################ + +PYTHON_PYCARES_VERSION = 4.4.0 +PYTHON_PYCARES_SOURCE = pycares-$(PYTHON_PYCARES_VERSION).tar.gz +PYTHON_PYCARES_SITE = https://files.pythonhosted.org/packages/1b/8f/daf60bbc06f4a3cd1cfb0ab807057151287df6f5c78f2e0d298acc9193ac +PYTHON_PYCARES_SETUP_TYPE = setuptools +PYTHON_PYCARES_LICENSE = MIT +PYTHON_PYCARES_LICENSE_FILES = LICENSE +PYTHON_PYCARES_DEPENDENCIES = host-python-cffi + +$(eval $(python-package)) diff --git a/package/python-pycparser/Config.in b/package/python-pycparser/Config.in new file mode 100644 index 00000000..49190c34 --- /dev/null +++ b/package/python-pycparser/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYCPARSER + bool "python-pycparser" + help + C parser in Python + + https://github.com/eliben/pycparser diff --git a/package/python-pycparser/python-pycparser.hash b/package/python-pycparser/python-pycparser.hash new file mode 100644 index 00000000..3ec1862b --- /dev/null +++ b/package/python-pycparser/python-pycparser.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pycparser/json +md5 8922b0b1b53b419e3a38fba4aa43a348 pycparser-2.22.tar.gz +sha256 491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6 pycparser-2.22.tar.gz +# Locally computed sha256 checksums +sha256 0c846399369ea76ddd7b5c44fe6d16497415fcf015f5cbb508c24bf98b81c5b1 LICENSE diff --git a/package/python-pycparser/python-pycparser.mk b/package/python-pycparser/python-pycparser.mk new file mode 100644 index 00000000..6d01844f --- /dev/null +++ b/package/python-pycparser/python-pycparser.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-pycparser +# +################################################################################ + +PYTHON_PYCPARSER_VERSION = 2.22 +PYTHON_PYCPARSER_SOURCE = pycparser-$(PYTHON_PYCPARSER_VERSION).tar.gz +PYTHON_PYCPARSER_SITE = https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c +PYTHON_PYCPARSER_SETUP_TYPE = setuptools +PYTHON_PYCPARSER_LICENSE = BSD-3-Clause +PYTHON_PYCPARSER_LICENSE_FILES = LICENSE + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-pycrate/Config.in b/package/python-pycrate/Config.in new file mode 100644 index 00000000..e78df43f --- /dev/null +++ b/package/python-pycrate/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PYCRATE + bool "python-pycrate" + help + A software suite to handle various data and protocol + formats. + + https://github.com/pycrate-org/pycrate/ diff --git a/package/python-pycrate/python-pycrate.hash b/package/python-pycrate/python-pycrate.hash new file mode 100644 index 00000000..5489f929 --- /dev/null +++ b/package/python-pycrate/python-pycrate.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pycrate/json +md5 37e1bda10f41fe947512e9d5f8289518 pycrate-0.7.2.tar.gz +sha256 8abd3fb9f3e7a2dc62061490f01e99b2a6185e88b1c9bf30db68853b748b8f61 pycrate-0.7.2.tar.gz +# Locally computed sha256 checksums +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 license.txt diff --git a/package/python-pycrate/python-pycrate.mk b/package/python-pycrate/python-pycrate.mk new file mode 100644 index 00000000..41ad30fc --- /dev/null +++ b/package/python-pycrate/python-pycrate.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pycrate +# +################################################################################ + +PYTHON_PYCRATE_VERSION = 0.7.2 +PYTHON_PYCRATE_SOURCE = pycrate-$(PYTHON_PYCRATE_VERSION).tar.gz +PYTHON_PYCRATE_SITE = https://files.pythonhosted.org/packages/f4/01/09aac6ea758ca7b7b1b4832c0c39003752ef7b6c1478e6db2f34171db3fe +PYTHON_PYCRATE_SETUP_TYPE = setuptools +PYTHON_PYCRATE_LICENSE = LGPL-2.1+ +PYTHON_PYCRATE_LICENSE_FILES = license.txt + +$(eval $(python-package)) diff --git a/package/python-pycryptodomex/Config.in b/package/python-pycryptodomex/Config.in new file mode 100644 index 00000000..a6d42f38 --- /dev/null +++ b/package/python-pycryptodomex/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYCRYPTODOMEX + bool "python-pycryptodomex" + help + Cryptographic library for Python. + + https://www.pycryptodome.org diff --git a/package/python-pycryptodomex/python-pycryptodomex.hash b/package/python-pycryptodomex/python-pycryptodomex.hash new file mode 100644 index 00000000..10447fd8 --- /dev/null +++ b/package/python-pycryptodomex/python-pycryptodomex.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/pycryptodomex/json +md5 db8f8d516e0229f503dd111ac4de177f pycryptodomex-3.19.1.tar.gz +sha256 0b7154aff2272962355f8941fd514104a88cb29db2d8f43a29af900d6398eb1c pycryptodomex-3.19.1.tar.gz +# Locally computed sha256 checksums +sha256 4e04660d77c1c64e89d79537919fb8240fa21484a7e3db29f358b2c7f84ea073 LICENSE.rst +sha256 8e563c767164faa0831a333b57d23d4311cf566eb1b15d93250f4606be4eb549 Doc/LEGAL/COPYRIGHT.pycrypto diff --git a/package/python-pycryptodomex/python-pycryptodomex.mk b/package/python-pycryptodomex/python-pycryptodomex.mk new file mode 100644 index 00000000..d969e600 --- /dev/null +++ b/package/python-pycryptodomex/python-pycryptodomex.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# python-pycryptodomex +# +################################################################################ + +PYTHON_PYCRYPTODOMEX_VERSION = 3.19.1 +PYTHON_PYCRYPTODOMEX_SOURCE = pycryptodomex-$(PYTHON_PYCRYPTODOMEX_VERSION).tar.gz +PYTHON_PYCRYPTODOMEX_SITE = https://files.pythonhosted.org/packages/3f/13/84f2aea851d75e12e7f32ccc11a00f1defc3d285b4ed710e5d049f31c5a6 +PYTHON_PYCRYPTODOMEX_SETUP_TYPE = setuptools +PYTHON_PYCRYPTODOMEX_LICENSE = \ + BSD-2-Clause, \ + Public Domain (pycrypto original code) +PYTHON_PYCRYPTODOMEX_LICENSE_FILES = LICENSE.rst Doc/LEGAL/COPYRIGHT.pycrypto +PYTHON_PYCRYPTODOMEX_CPE_ID_VENDOR = pycryptodome +PYTHON_PYCRYPTODOMEX_CPE_ID_PRODUCT = pycryptodomex + +PYTHON_PYCRYPTODOMEX_ENV = CFLAGS="$(TARGET_CFLAGS) -std=c99" +HOST_PYTHON_PYCRYPTODOMEX_ENV = CFLAGS="$(HOST_CFLAGS) -std=c99" + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-pycups/Config.in b/package/python-pycups/Config.in new file mode 100644 index 00000000..eeaf70c9 --- /dev/null +++ b/package/python-pycups/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PYCUPS + bool "python-pycups" + depends on BR2_PACKAGE_CUPS + help + Python bindings for libcups. + + https://github.com/zdohnal/pycups diff --git a/package/python-pycups/python-pycups.hash b/package/python-pycups/python-pycups.hash new file mode 100644 index 00000000..d1498b61 --- /dev/null +++ b/package/python-pycups/python-pycups.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pycups/json +md5 41eef188b86d01ccfdbaaa05cf0f6ca4 pycups-2.0.1.tar.gz +sha256 57434ce5f62548eb12949ca8217f066f4eeb21a5d6ab8b13471dce350e380c90 pycups-2.0.1.tar.gz +# Locally computed sha256 checksums +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/python-pycups/python-pycups.mk b/package/python-pycups/python-pycups.mk new file mode 100644 index 00000000..bf61400a --- /dev/null +++ b/package/python-pycups/python-pycups.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-pycups +# +################################################################################ + +PYTHON_PYCUPS_VERSION = 2.0.1 +PYTHON_PYCUPS_SOURCE = pycups-$(PYTHON_PYCUPS_VERSION).tar.gz +PYTHON_PYCUPS_SITE = https://files.pythonhosted.org/packages/0c/bb/82546806a86dc16f5eeb76f62ffdc42cce3d43aacd4e25a8b5300eec0263 +PYTHON_PYCUPS_SETUP_TYPE = setuptools +PYTHON_PYCUPS_LICENSE = GPL-2.0+ +PYTHON_PYCUPS_LICENSE_FILES = COPYING +PYTHON_PYCUPS_DEPENDENCIES = cups + +$(eval $(python-package)) diff --git a/package/python-pydal/Config.in b/package/python-pydal/Config.in new file mode 100644 index 00000000..204b47a0 --- /dev/null +++ b/package/python-pydal/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PYTHON_PYDAL + bool "python-pydal" + help + pyDAL is a pure Python Database Abstraction Layer. It + dynamically generates the SQL in real time using the + specified dialect for the database back end, so that you do + not have to write SQL code or learn different SQL dialects + (the term SQL is used generically), and your code will be + portable among different types of databases. + + pyDAL comes from the original web2py's DAL, with the aim of + being wide-compatible. pyDAL doesn't require web2py and can + be used in any Python context. + + https://github.com/web2py/pydal diff --git a/package/python-pydal/python-pydal.hash b/package/python-pydal/python-pydal.hash new file mode 100644 index 00000000..9f2ab555 --- /dev/null +++ b/package/python-pydal/python-pydal.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pydal/json +md5 b2072b7b000223890b56830ca1ab3616 pydal-20231114.3.tar.gz +sha256 c42d16fca9e3bb6d399aefb2434c0e70862ee13c75437852f421920432ee5fb1 pydal-20231114.3.tar.gz +# Locally computed sha256 checksums +sha256 1f711e93f1e0c2eec576e2e60597dc2ed6f0a661e4749c6b8a39f0d4a72be468 LICENSE.txt diff --git a/package/python-pydal/python-pydal.mk b/package/python-pydal/python-pydal.mk new file mode 100644 index 00000000..245383f2 --- /dev/null +++ b/package/python-pydal/python-pydal.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-pydal +# +################################################################################ + +PYTHON_PYDAL_VERSION = 20231114.3 +PYTHON_PYDAL_SOURCE = pydal-$(PYTHON_PYDAL_VERSION).tar.gz +PYTHON_PYDAL_SITE = https://files.pythonhosted.org/packages/0b/3b/86302e165af07bc3d9225aea6ed8f52386270220e4aac1aad0101a48aac1 +PYTHON_PYDAL_LICENSE = BSD-3-Clause +PYTHON_PYDAL_LICENSE_FILES = LICENSE.txt +PYTHON_PYDAL_SETUP_TYPE = setuptools + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-pydantic-core/Config.in b/package/python-pydantic-core/Config.in new file mode 100644 index 00000000..3eeb1844 --- /dev/null +++ b/package/python-pydantic-core/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_PYDANTIC_CORE + bool "python-pydantic-core" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_PYTHON_TYPING_EXTENSIONS # runtime + help + Core validation logic for pydantic written in rust. + + https://github.com/pydantic/pydantic-core diff --git a/package/python-pydantic-core/python-pydantic-core.hash b/package/python-pydantic-core/python-pydantic-core.hash new file mode 100644 index 00000000..3554d0c0 --- /dev/null +++ b/package/python-pydantic-core/python-pydantic-core.hash @@ -0,0 +1,4 @@ +# Locally calculated after vendoring +sha256 87cee9e796c31e3470dd13675286f13d58084e4362dae9288a9fa45b1264c084 pydantic_core-2.20.1.tar.gz +# Locally computed sha256 checksums +sha256 2afdd30d54b4d62b6f488a6bcc1546e84ec5061f13f4209c03d012348783795a LICENSE diff --git a/package/python-pydantic-core/python-pydantic-core.mk b/package/python-pydantic-core/python-pydantic-core.mk new file mode 100644 index 00000000..4332c4f6 --- /dev/null +++ b/package/python-pydantic-core/python-pydantic-core.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-pydantic-core +# +################################################################################ + +PYTHON_PYDANTIC_CORE_VERSION = 2.20.1 +PYTHON_PYDANTIC_CORE_SOURCE = pydantic_core-$(PYTHON_PYDANTIC_CORE_VERSION).tar.gz +PYTHON_PYDANTIC_CORE_SITE = https://files.pythonhosted.org/packages/12/e3/0d5ad91211dba310f7ded335f4dad871172b9cc9ce204f5a56d76ccd6247 +PYTHON_PYDANTIC_CORE_SETUP_TYPE = maturin +PYTHON_PYDANTIC_CORE_LICENSE = MIT +PYTHON_PYDANTIC_CORE_LICENSE_FILES = LICENSE +PYTHON_PYDANTIC_CORE_DEPENDENCIES = host-python-typing-extensions + +$(eval $(python-package)) diff --git a/package/python-pydantic/Config.in b/package/python-pydantic/Config.in new file mode 100644 index 00000000..e9cd2e67 --- /dev/null +++ b/package/python-pydantic/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_PYDANTIC + bool "python-pydantic" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-pydantic-core + select BR2_PACKAGE_PYTHON_ANNOTATED_TYPES # runtime + select BR2_PACKAGE_PYTHON_PYDANTIC_CORE # runtime + select BR2_PACKAGE_PYTHON_TYPING_EXTENSIONS # runtime + help + Data validation and settings management using python 3.6 + type hinting. + + https://github.com/pydantic/pydantic diff --git a/package/python-pydantic/python-pydantic.hash b/package/python-pydantic/python-pydantic.hash new file mode 100644 index 00000000..6127dcaf --- /dev/null +++ b/package/python-pydantic/python-pydantic.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pydantic/json +md5 940d760de174d3567d4f5be28fd215f5 pydantic-2.8.2.tar.gz +sha256 6f62c13d067b0755ad1c21a34bdd06c0c12625a22b0fc09c6b149816604f7c2a pydantic-2.8.2.tar.gz +# Locally computed sha256 checksums +sha256 a9e186f3ca16b5eef84318e7a701721351a00cb7b8ae3a4394b67b49e3529ef3 LICENSE diff --git a/package/python-pydantic/python-pydantic.mk b/package/python-pydantic/python-pydantic.mk new file mode 100644 index 00000000..c549970d --- /dev/null +++ b/package/python-pydantic/python-pydantic.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# python-pydantic +# +################################################################################ + +PYTHON_PYDANTIC_VERSION = 2.8.2 +PYTHON_PYDANTIC_SOURCE = pydantic-$(PYTHON_PYDANTIC_VERSION).tar.gz +PYTHON_PYDANTIC_SITE = https://files.pythonhosted.org/packages/8c/99/d0a5dca411e0a017762258013ba9905cd6e7baa9a3fd1fe8b6529472902e +PYTHON_PYDANTIC_SETUP_TYPE = pep517 +PYTHON_PYDANTIC_LICENSE = MIT +PYTHON_PYDANTIC_LICENSE_FILES = LICENSE +PYTHON_PYDANTIC_CPE_ID_VENDOR = pydantic_project +PYTHON_PYDANTIC_CPE_ID_PRODUCT = pydantic +PYTHON_PYDANTIC_DEPENDENCIES = \ + host-python-hatchling \ + host-python-hatch-fancy-pypi-readme + +$(eval $(python-package)) diff --git a/package/python-pydevmem/Config.in b/package/python-pydevmem/Config.in new file mode 100644 index 00000000..a0e2da9f --- /dev/null +++ b/package/python-pydevmem/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_PYDEVMEM + bool "python-pydevmem" + help + Python DevMem is designed primarily for use with accessing + /dev/mem on OMAP platforms. It should work on other platforms + and work to mmap() files rather then just /dev/mem, but these + use cases aren't well tested. + + https://github.com/kylemanna/pydevmem diff --git a/package/python-pydevmem/python-pydevmem.hash b/package/python-pydevmem/python-pydevmem.hash new file mode 100644 index 00000000..e9ee18b8 --- /dev/null +++ b/package/python-pydevmem/python-pydevmem.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 1a72db41effeb83e01fc9a422abfe345a92220b0382403a5040b2811e4ee6496 python-pydevmem-600b5d1ef8997c394db3512b735d75d5abc4ad41.tar.gz +sha256 cb013ffd1fd415a348f9a32231ceb133770623b69484a24ad49b6da4904cac2e LICENSE diff --git a/package/python-pydevmem/python-pydevmem.mk b/package/python-pydevmem/python-pydevmem.mk new file mode 100644 index 00000000..385b1232 --- /dev/null +++ b/package/python-pydevmem/python-pydevmem.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-pydevmem +# +################################################################################ + +PYTHON_PYDEVMEM_VERSION = 600b5d1ef8997c394db3512b735d75d5abc4ad41 +PYTHON_PYDEVMEM_SITE = $(call github,kylemanna,pydevmem,$(PYTHON_PYDEVMEM_VERSION)) +PYTHON_PYDEVMEM_SETUP_TYPE = setuptools +PYTHON_PYDEVMEM_LICENSE = MIT +PYTHON_PYDEVMEM_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-pydyf/Config.in b/package/python-pydyf/Config.in new file mode 100644 index 00000000..42530eaf --- /dev/null +++ b/package/python-pydyf/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYDYF + bool "python-pydyf" + help + A low-level PDF generator. + + https://www.courtbouillon.org/pydyf diff --git a/package/python-pydyf/python-pydyf.hash b/package/python-pydyf/python-pydyf.hash new file mode 100644 index 00000000..b2dac045 --- /dev/null +++ b/package/python-pydyf/python-pydyf.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pydyf/json +md5 a3650927d9a84da1dc0aa1d268f21376 pydyf-0.8.0.tar.gz +sha256 b22b1ef016141b54941ad66ed4e036a7bdff39c0b360993b283875c3f854dd9a pydyf-0.8.0.tar.gz +# Locally computed sha256 checksums +sha256 75461e438973e1ba0f93a7de9e3fe5b2f49e1ab49251d392878a9cdae8ce7e47 LICENSE diff --git a/package/python-pydyf/python-pydyf.mk b/package/python-pydyf/python-pydyf.mk new file mode 100644 index 00000000..e9b7d229 --- /dev/null +++ b/package/python-pydyf/python-pydyf.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pydyf +# +################################################################################ + +PYTHON_PYDYF_VERSION = 0.8.0 +PYTHON_PYDYF_SOURCE = pydyf-$(PYTHON_PYDYF_VERSION).tar.gz +PYTHON_PYDYF_SITE = https://files.pythonhosted.org/packages/18/dc/b607bbc7c15327c5d5ec25681a3707c847906134925d21a26ec6e7416a4a +PYTHON_PYDYF_SETUP_TYPE = flit +PYTHON_PYDYF_LICENSE = BSD-3-Clause +PYTHON_PYDYF_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-pyelftools/Config.in b/package/python-pyelftools/Config.in new file mode 100644 index 00000000..ca273022 --- /dev/null +++ b/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/package/python-pyelftools/python-pyelftools.hash b/package/python-pyelftools/python-pyelftools.hash new file mode 100644 index 00000000..70af8104 --- /dev/null +++ b/package/python-pyelftools/python-pyelftools.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pyelftools/json +md5 2b4f82fd30436834b9357a5e74b8ceb7 pyelftools-0.30.tar.gz +sha256 2fc92b0d534f8b081f58c7c370967379123d8e00984deb53c209364efd575b40 pyelftools-0.30.tar.gz +# Locally computed sha256 checksums +sha256 ae18bf4cb82f92af7547259177bc28bc48e4fc732518bcedfe690226288d3445 LICENSE diff --git a/package/python-pyelftools/python-pyelftools.mk b/package/python-pyelftools/python-pyelftools.mk new file mode 100644 index 00000000..0e52c0b8 --- /dev/null +++ b/package/python-pyelftools/python-pyelftools.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-pyelftools +# +################################################################################ + +PYTHON_PYELFTOOLS_VERSION = 0.30 +PYTHON_PYELFTOOLS_SOURCE = pyelftools-$(PYTHON_PYELFTOOLS_VERSION).tar.gz +PYTHON_PYELFTOOLS_SITE = https://files.pythonhosted.org/packages/84/05/fd41cd647de044d1ffec90ce5aaae935126ac217f8ecb302186655284fc8 +PYTHON_PYELFTOOLS_LICENSE = Public domain +PYTHON_PYELFTOOLS_LICENSE_FILES = LICENSE +PYTHON_PYELFTOOLS_SETUP_TYPE = setuptools + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-pyftpdlib/Config.in b/package/python-pyftpdlib/Config.in new file mode 100644 index 00000000..e25c34e5 --- /dev/null +++ b/package/python-pyftpdlib/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYFTPDLIB + bool "python-pyftpdlib" + help + Extremely fast and scalable Python FTP server library. + + https://github.com/giampaolo/pyftpdlib diff --git a/package/python-pyftpdlib/python-pyftpdlib.hash b/package/python-pyftpdlib/python-pyftpdlib.hash new file mode 100644 index 00000000..7b5dabdf --- /dev/null +++ b/package/python-pyftpdlib/python-pyftpdlib.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pyftpdlib/json +md5 cb32bca52ba0d4850a92513154c253e1 pyftpdlib-1.5.9.tar.gz +sha256 323d4c42f1406aedb4df18faf680f64f32c080ff66f6c26090ba592f5bfc4a0f pyftpdlib-1.5.9.tar.gz +# Locally computed sha256 checksums +sha256 67a832551570a5ac5f7901eaa5ece4b9491fda7f2d8c93957c3bbc68a5a76d88 LICENSE diff --git a/package/python-pyftpdlib/python-pyftpdlib.mk b/package/python-pyftpdlib/python-pyftpdlib.mk new file mode 100644 index 00000000..da101083 --- /dev/null +++ b/package/python-pyftpdlib/python-pyftpdlib.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyftpdlib +# +################################################################################ + +PYTHON_PYFTPDLIB_VERSION = 1.5.9 +PYTHON_PYFTPDLIB_SOURCE = pyftpdlib-$(PYTHON_PYFTPDLIB_VERSION).tar.gz +PYTHON_PYFTPDLIB_SITE = https://files.pythonhosted.org/packages/47/9f/5dc055ab2db58db561f72b1b2f18b1dafc025f2ac5dd842c40259c17195e +PYTHON_PYFTPDLIB_SETUP_TYPE = setuptools +PYTHON_PYFTPDLIB_LICENSE = MIT +PYTHON_PYFTPDLIB_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-pygments/Config.in b/package/python-pygments/Config.in new file mode 100644 index 00000000..f097c523 --- /dev/null +++ b/package/python-pygments/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYGMENTS + bool "python-pygments" + help + Pygments is a syntax highlighting package written in Python. + + https://pypi.python.org/pypi/Pygments diff --git a/package/python-pygments/python-pygments.hash b/package/python-pygments/python-pygments.hash new file mode 100644 index 00000000..a742a05e --- /dev/null +++ b/package/python-pygments/python-pygments.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pygments/json +md5 7c059773b0f4808f9402eb0650de6bd4 pygments-2.17.2.tar.gz +sha256 da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367 pygments-2.17.2.tar.gz +# Locally computed sha256 checksums +sha256 a9d66f1d526df02e29dce73436d34e56e8632f46c275bbdffc70569e882f9f17 LICENSE diff --git a/package/python-pygments/python-pygments.mk b/package/python-pygments/python-pygments.mk new file mode 100644 index 00000000..e42f613c --- /dev/null +++ b/package/python-pygments/python-pygments.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-pygments +# +################################################################################ + +PYTHON_PYGMENTS_VERSION = 2.17.2 +PYTHON_PYGMENTS_SOURCE = pygments-$(PYTHON_PYGMENTS_VERSION).tar.gz +PYTHON_PYGMENTS_SITE = https://files.pythonhosted.org/packages/55/59/8bccf4157baf25e4aa5a0bb7fa3ba8600907de105ebc22b0c78cfbf6f565 +PYTHON_PYGMENTS_LICENSE = BSD-2-Clause +PYTHON_PYGMENTS_LICENSE_FILES = LICENSE +PYTHON_PYGMENTS_CPE_ID_VENDOR = pygments +PYTHON_PYGMENTS_CPE_ID_PRODUCT = pygments +PYTHON_PYGMENTS_SETUP_TYPE = pep517 +PYTHON_PYGMENTS_DEPENDENCIES = host-python-hatchling + +$(eval $(python-package)) diff --git a/package/python-pyhamcrest/Config.in b/package/python-pyhamcrest/Config.in new file mode 100644 index 00000000..27224cdb --- /dev/null +++ b/package/python-pyhamcrest/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYHAMCREST + bool "python-pyhamcrest" + help + Hamcrest framework for matcher objects. + + https://github.com/hamcrest/PyHamcrest diff --git a/package/python-pyhamcrest/python-pyhamcrest.hash b/package/python-pyhamcrest/python-pyhamcrest.hash new file mode 100644 index 00000000..ba230d3a --- /dev/null +++ b/package/python-pyhamcrest/python-pyhamcrest.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pyhamcrest/json +md5 c731efc9bcb93ef4f73d110f5ca8e844 pyhamcrest-2.1.0.tar.gz +sha256 c6acbec0923d0cb7e72c22af1926f3e7c97b8e8d69fc7498eabacaf7c975bd9c pyhamcrest-2.1.0.tar.gz +# Locally computed sha256 checksums +sha256 71beae6c8151362cfe398cbd350191a1cc52d3d28499839a7830b25f5b50a7fe LICENSE.txt diff --git a/package/python-pyhamcrest/python-pyhamcrest.mk b/package/python-pyhamcrest/python-pyhamcrest.mk new file mode 100644 index 00000000..6631ff1d --- /dev/null +++ b/package/python-pyhamcrest/python-pyhamcrest.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-pyhamcrest +# +################################################################################ + +PYTHON_PYHAMCREST_VERSION = 2.1.0 +PYTHON_PYHAMCREST_SOURCE = pyhamcrest-$(PYTHON_PYHAMCREST_VERSION).tar.gz +PYTHON_PYHAMCREST_SITE = https://files.pythonhosted.org/packages/16/3f/f286caba4e64391a8dc9200e6de6ce0d07471e3f718248c3276843b7793b +PYTHON_PYHAMCREST_SETUP_TYPE = pep517 +PYTHON_PYHAMCREST_LICENSE = BSD-3-Clause +PYTHON_PYHAMCREST_LICENSE_FILES = LICENSE.txt +PYTHON_PYHAMCREST_DEPENDENCIES = \ + host-python-hatchling \ + host-python-hatch-vcs + +$(eval $(python-package)) diff --git a/package/python-pyicu/Config.in b/package/python-pyicu/Config.in new file mode 100644 index 00000000..cbd75c01 --- /dev/null +++ b/package/python-pyicu/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_PYTHON_PYICU + bool "python-pyicu" + depends on !BR2_BINFMT_FLAT # icu + depends on BR2_HOST_GCC_AT_LEAST_4_9 # icu + depends on BR2_INSTALL_LIBSTDCPP # icu + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # icu + select BR2_PACKAGE_ICU + help + Python extension wrapping the ICU C++ API. + + https://gitlab.pyicu.org/main/pyicu + +comment "python-pyicu needs a toolchain w/ C++, gcc >= 4.9, host gcc >= 4.9" + depends on !BR2_BINFMT_FLAT + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_HOST_GCC_AT_LEAST_4_9 diff --git a/package/python-pyicu/python-pyicu.hash b/package/python-pyicu/python-pyicu.hash new file mode 100644 index 00000000..01d4bf7f --- /dev/null +++ b/package/python-pyicu/python-pyicu.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pyicu/json +md5 a4411ff1ed8a09e3e9c1d0d02dc89ad8 PyICU-2.12.tar.gz +sha256 bd7ab5efa93ad692e6daa29cd249364e521218329221726a113ca3cb281c8611 PyICU-2.12.tar.gz +# Locally computed sha256 checksums +sha256 00da5bf22f2386c4f6f07c734490e9b818c4dcf70e6ca49f594e9cec636b9c40 LICENSE diff --git a/package/python-pyicu/python-pyicu.mk b/package/python-pyicu/python-pyicu.mk new file mode 100644 index 00000000..50962f60 --- /dev/null +++ b/package/python-pyicu/python-pyicu.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# python-pyicu +# +################################################################################ + +PYTHON_PYICU_VERSION = 2.12 +PYTHON_PYICU_SOURCE = PyICU-$(PYTHON_PYICU_VERSION).tar.gz +PYTHON_PYICU_SITE = https://files.pythonhosted.org/packages/c8/25/38a2104fd48373cfd4eac5104f104ef486f61527e48d627de74794354a2c +PYTHON_PYICU_LICENSE = MIT +PYTHON_PYICU_LICENSE_FILES = LICENSE +PYTHON_PYICU_DEPENDENCIES = icu +PYTHON_PYICU_SETUP_TYPE = setuptools + +PYTHON_PYICU_ENV += \ + ICU_VERSION="`$(PKG_CONFIG_HOST_BINARY) icu-i18n --modversion`" \ + PYICU_CFLAGS="`$(PKG_CONFIG_HOST_BINARY) icu-i18n --variable=CXXFLAGS`" \ + PYICU_LFLAGS="`$(PKG_CONFIG_HOST_BINARY) icu-i18n --libs-only-L` \ + `$(PKG_CONFIG_HOST_BINARY) icu-i18n --libs-only-l`" + +$(eval $(python-package)) diff --git a/package/python-pyinotify/Config.in b/package/python-pyinotify/Config.in new file mode 100644 index 00000000..b3e74e13 --- /dev/null +++ b/package/python-pyinotify/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYINOTIFY + bool "python-pyinotify" + help + Monitoring filesystems events with inotify on Linux. + + https://github.com/seb-m/pyinotify diff --git a/package/python-pyinotify/python-pyinotify.hash b/package/python-pyinotify/python-pyinotify.hash new file mode 100644 index 00000000..72095ff6 --- /dev/null +++ b/package/python-pyinotify/python-pyinotify.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 7943f198c5cef2bdc121d847937fbe565daaa7d4daaf1b8de8ef5689812f481c python-pyinotify-0.9.6.tar.gz +sha256 97c96d577f761e23c7778bda2b163dba7b94e4defdd7873b7155bed252820608 COPYING diff --git a/package/python-pyinotify/python-pyinotify.mk b/package/python-pyinotify/python-pyinotify.mk new file mode 100644 index 00000000..b4ea6629 --- /dev/null +++ b/package/python-pyinotify/python-pyinotify.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-pyinotify +# +################################################################################ + +PYTHON_PYINOTIFY_VERSION = 0.9.6 +PYTHON_PYINOTIFY_SITE = $(call github,seb-m,pyinotify,$(PYTHON_PYINOTIFY_VERSION)) +PYTHON_PYINOTIFY_SETUP_TYPE = setuptools +PYTHON_PYINOTIFY_LICENSE = MIT +PYTHON_PYINOTIFY_LICENSE_FILES = COPYING + +$(eval $(python-package)) diff --git a/package/python-pyjwt/Config.in b/package/python-pyjwt/Config.in new file mode 100644 index 00000000..510875ce --- /dev/null +++ b/package/python-pyjwt/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYJWT + bool "python-pyjwt" + help + JSON Web Token implementation in Python. + + http://github.com/jpadilla/pyjwt diff --git a/package/python-pyjwt/python-pyjwt.hash b/package/python-pyjwt/python-pyjwt.hash new file mode 100644 index 00000000..06b91bc1 --- /dev/null +++ b/package/python-pyjwt/python-pyjwt.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/PyJWT/json +md5 a683445793adb7fcf39ad3e55c5c347c PyJWT-2.8.0.tar.gz +sha256 57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de PyJWT-2.8.0.tar.gz +# Locally computed sha256 checksums +sha256 797a7a20231d4c433e9f1911db1731d06b5828b98f499819a034f7c0f56f5ce5 LICENSE diff --git a/package/python-pyjwt/python-pyjwt.mk b/package/python-pyjwt/python-pyjwt.mk new file mode 100644 index 00000000..d4cf2269 --- /dev/null +++ b/package/python-pyjwt/python-pyjwt.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-pyjwt +# +################################################################################ + +PYTHON_PYJWT_VERSION = 2.8.0 +PYTHON_PYJWT_SOURCE = PyJWT-$(PYTHON_PYJWT_VERSION).tar.gz +PYTHON_PYJWT_SITE = https://files.pythonhosted.org/packages/30/72/8259b2bccfe4673330cea843ab23f86858a419d8f1493f66d413a76c7e3b +PYTHON_PYJWT_SETUP_TYPE = setuptools +PYTHON_PYJWT_LICENSE = MIT +PYTHON_PYJWT_LICENSE_FILES = LICENSE +PYTHON_PYJWT_CPE_ID_VENDOR = pyjwt_project +PYTHON_PYJWT_CPE_ID_PRODUCT = pyjwt + +$(eval $(python-package)) diff --git a/package/python-pylibfdt/Config.in b/package/python-pylibfdt/Config.in new file mode 100644 index 00000000..8fc1cdb0 --- /dev/null +++ b/package/python-pylibfdt/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYLIBFDT + bool "python-pylibfdt" + help + Python bindings for the Device Tree Compiler (dtc) toolchain. + + https://github.com/devicetree-org/pylibfdt diff --git a/package/python-pylibfdt/python-pylibfdt.hash b/package/python-pylibfdt/python-pylibfdt.hash new file mode 100644 index 00000000..82527e72 --- /dev/null +++ b/package/python-pylibfdt/python-pylibfdt.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.python.org/pypi/pylibfdt/json +md5 353ee3063d0b10e94d165e032897d34e pylibfdt-1.7.0.post1.tar.gz +sha256 2d048f9f8ce9a0527d497f423dea1f1135f9811c05b009cc5d5753771c1f9ba1 pylibfdt-1.7.0.post1.tar.gz +# Locally computed +sha256 6313108c23efffa36948f8b2cff1560a5935373b527b0e1a837cc77e6ed1bacd BSD-2-Clause +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 GPL diff --git a/package/python-pylibfdt/python-pylibfdt.mk b/package/python-pylibfdt/python-pylibfdt.mk new file mode 100644 index 00000000..9591439b --- /dev/null +++ b/package/python-pylibfdt/python-pylibfdt.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-pylibfdt +# +################################################################################ + +PYTHON_PYLIBFDT_VERSION = 1.7.0.post1 +PYTHON_PYLIBFDT_SOURCE = pylibfdt-$(PYTHON_PYLIBFDT_VERSION).tar.gz +PYTHON_PYLIBFDT_SITE = https://files.pythonhosted.org/packages/96/5c/77ef0f0459e0b13f39ecc22e21ad4ac9fbe741e8a7cd70702ac8165f80e2 +PYTHON_PYLIBFDT_SETUP_TYPE = pep517 +PYTHON_PYLIBFDT_LICENSE = BSD-2-Clause or GPL-2.0+ +PYTHON_PYLIBFDT_LICENSE_FILES = BSD-2-Clause GPL +PYTHON_PYLIBFDT_DEPENDENCIES = host-python-setuptools-scm host-swig +HOST_PYTHON_PYLIBFDT_DEPENDENCIES = host-python-setuptools-scm host-swig + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-pylibftdi/0001-do-not-use-find-library.patch b/package/python-pylibftdi/0001-do-not-use-find-library.patch new file mode 100644 index 00000000..19dabebf --- /dev/null +++ b/package/python-pylibftdi/0001-do-not-use-find-library.patch @@ -0,0 +1,32 @@ +Hard code library loading + +Shortcut the search for the libraries in case the built in +find_library is broken. + +As buildroot does not ship any of the external programs that the core +procedure use to find libraries use the canonical name of the shared +object and load it. + +In this case this affects loading libftdi and libusb. + +This should be reliable as we specify said libs as dependencies of +this package. + +Signed-off-by: Christian Kellermann + +--- +diff -purN pylibftdi-0.21.0.orig/src/pylibftdi/driver.py pylibftdi-0.21.0/src/pylibftdi/driver.py +--- pylibftdi-0.21.0.orig/src/pylibftdi/driver.py 2015-04-26 22:41:39.000000000 +0200 ++++ pylibftdi-0.21.0/src/pylibftdi/driver.py 2017-02-27 13:08:56.502958000 +0100 +@@ -148,9 +148,8 @@ class Driver: + lib = getattr(cdll, lib_path) + break + if lib is None: +- raise LibraryMissingError( +- f"{name} library not found (search: {str(search_list)})" +- ) ++ return cdll.LoadLibrary(name + '.so') ++ + return lib + + @property diff --git a/package/python-pylibftdi/Config.in b/package/python-pylibftdi/Config.in new file mode 100644 index 00000000..ce815a55 --- /dev/null +++ b/package/python-pylibftdi/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_PYLIBFTDI + bool "python-pylibftdi" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libftdi -> libusb + select BR2_PACKAGE_LIBFTDI + help + This package contains the python language binding libftdi. + + https://pypi.python.org/pypi/pylibftdi + +comment "python-pylibftdi needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/python-pylibftdi/python-pylibftdi.hash b/package/python-pylibftdi/python-pylibftdi.hash new file mode 100644 index 00000000..5d8a1964 --- /dev/null +++ b/package/python-pylibftdi/python-pylibftdi.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pylibftdi/json +md5 75b63f325b760cc6342b7d35fbb84fde pylibftdi-0.21.0.tar.gz +sha256 eb7e2f5052852547f4c6c46022a1665f9d7453439639171eade56fdc80a58832 pylibftdi-0.21.0.tar.gz +# Locally computed sha256 checksums +sha256 b8a7b113cfaa2c01d0701183de16ba653465692b1e29e0229244eee42fb3a9a8 LICENSE.txt diff --git a/package/python-pylibftdi/python-pylibftdi.mk b/package/python-pylibftdi/python-pylibftdi.mk new file mode 100644 index 00000000..7607c90d --- /dev/null +++ b/package/python-pylibftdi/python-pylibftdi.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-pylibftdi +# +################################################################################ + +PYTHON_PYLIBFTDI_VERSION = 0.21.0 +PYTHON_PYLIBFTDI_SOURCE = pylibftdi-$(PYTHON_PYLIBFTDI_VERSION).tar.gz +PYTHON_PYLIBFTDI_SITE = https://files.pythonhosted.org/packages/d2/ce/ff3e83f3a14eb5b7950ff3657f07cdc3033dd0ded5c8ed093db515e1de33 +PYTHON_PYLIBFTDI_LICENSE = MIT +PYTHON_PYLIBFTDI_LICENSE_FILES = LICENSE.txt +PYTHON_PYLIBFTDI_SETUP_TYPE = pep517 +PYTHON_PYLIBFTDI_DEPENDENCIES = \ + host-python-poetry-core \ + libftdi + +$(eval $(python-package)) diff --git a/package/python-pylru/Config.in b/package/python-pylru/Config.in new file mode 100644 index 00000000..c1745769 --- /dev/null +++ b/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/package/python-pylru/python-pylru.hash b/package/python-pylru/python-pylru.hash new file mode 100644 index 00000000..83217a34 --- /dev/null +++ b/package/python-pylru/python-pylru.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pylru/json +md5 101486c319fa219f147b8811975780d9 pylru-1.2.1.tar.gz +sha256 47ad140a63ab9389648dadfbb4330700e0ffeeb28ec04664ee47d37ed133b0f4 pylru-1.2.1.tar.gz +# Locally computed sha256 checksums +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.txt diff --git a/package/python-pylru/python-pylru.mk b/package/python-pylru/python-pylru.mk new file mode 100644 index 00000000..8658f75b --- /dev/null +++ b/package/python-pylru/python-pylru.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pylru +# +################################################################################ + +PYTHON_PYLRU_VERSION = 1.2.1 +PYTHON_PYLRU_SOURCE = pylru-$(PYTHON_PYLRU_VERSION).tar.gz +PYTHON_PYLRU_SITE = https://files.pythonhosted.org/packages/95/8e/2a0d3426738db0b41d69d36243bdd00420ad231e802d09dad8db02005d13 +PYTHON_PYLRU_SETUP_TYPE = setuptools +PYTHON_PYLRU_LICENSE = GPL-2.0 +PYTHON_PYLRU_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-pymodbus/Config.in b/package/python-pymodbus/Config.in new file mode 100644 index 00000000..dac6716b --- /dev/null +++ b/package/python-pymodbus/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYMODBUS + bool "python-pymodbus" + help + A fully featured modbus protocol stack in python. + + https://github.com/pymodbus-dev/pymodbus/ diff --git a/package/python-pymodbus/python-pymodbus.hash b/package/python-pymodbus/python-pymodbus.hash new file mode 100644 index 00000000..7c8f352d --- /dev/null +++ b/package/python-pymodbus/python-pymodbus.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pymodbus/json +md5 3bdc2a574cbfd10ec6dddf38c3f26598 pymodbus-3.7.0.tar.gz +sha256 5c772babaa61a65ff908293faa668aedcd9d9e10f4bcf5c77a8fe51a6fd9ed47 pymodbus-3.7.0.tar.gz +# Locally computed sha256 checksums +sha256 47f904249172e795a6b32de91f471073297befffd74e17cafc288d348a55972e LICENSE diff --git a/package/python-pymodbus/python-pymodbus.mk b/package/python-pymodbus/python-pymodbus.mk new file mode 100644 index 00000000..6a7c384c --- /dev/null +++ b/package/python-pymodbus/python-pymodbus.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pymodbus +# +################################################################################ + +PYTHON_PYMODBUS_VERSION = 3.7.0 +PYTHON_PYMODBUS_SOURCE = pymodbus-$(PYTHON_PYMODBUS_VERSION).tar.gz +PYTHON_PYMODBUS_SITE = https://files.pythonhosted.org/packages/cc/83/de0c3596f17ac4833f591e96cafee7ae6109d846d607387b48f88d66759a +PYTHON_PYMODBUS_SETUP_TYPE = setuptools +PYTHON_PYMODBUS_LICENSE = BSD-3-Clause +PYTHON_PYMODBUS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-pymupdf/0001-pipcl.py-allow-providing-python-config-externally.patch b/package/python-pymupdf/0001-pipcl.py-allow-providing-python-config-externally.patch new file mode 100644 index 00000000..95aa3f7a --- /dev/null +++ b/package/python-pymupdf/0001-pipcl.py-allow-providing-python-config-externally.patch @@ -0,0 +1,125 @@ +From ca3417b8d605ccdb2e6c516c5e0c79180381627c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rapha=C3=ABl=20M=C3=A9lotte?= +Date: Sun, 4 Feb 2024 16:13:45 +0100 +Subject: [PATCH] pipcl.py: allow providing python-config externally +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When cross-compiling (e.g. using Buildroot), the python-config +executable that resides next to the host python executable provides +incorrect includes (the ones for the host). + +Since the correct path to python-config cannot be guessed, add an +additional environment variable to allow setting the path to the +correct python-config executable externally. + +Signed-off-by: Raphaël Mélotte +Upstream: https://github.com/pymupdf/PyMuPDF/commit/3a214b0c144d86fd1329b26030f6b9f2a6b27020 +--- + pipcl.py | 72 +++++++++++++++++++++++++++++--------------------------- + setup.py | 3 +++ + 2 files changed, 40 insertions(+), 35 deletions(-) + +diff --git a/pipcl.py b/pipcl.py +index 209f660..c154774 100644 +--- a/pipcl.py ++++ b/pipcl.py +@@ -1789,43 +1789,45 @@ class PythonFlags: + self.ldflags = f'-L {_lib_dir}' + + else: +- # We use python-config which appears to work better than pkg-config +- # because it copes with multiple installed python's, e.g. +- # manylinux_2014's /opt/python/cp*-cp*/bin/python*. +- # +- # But... on non-macos it seems that we should not attempt to specify +- # libpython on the link command. The manylinux docker containers +- # don't actually contain libpython.so, and it seems that this +- # deliberate. And the link command runs ok. +- # +- python_exe = os.path.realpath( sys.executable) +- if darwin(): +- # Basic install of dev tools with `xcode-select --install` doesn't +- # seem to provide a `python3-config` or similar, but there is a +- # `python-config.py` accessible via sysconfig. ++ python_config = os.environ.get("PYMUPDF_PYTHON_CONFIG") ++ if not python_config: ++ # We use python-config which appears to work better than pkg-config ++ # because it copes with multiple installed python's, e.g. ++ # manylinux_2014's /opt/python/cp*-cp*/bin/python*. + # +- # We try different possibilities and use the last one that +- # works. ++ # But... on non-macos it seems that we should not attempt to specify ++ # libpython on the link command. The manylinux docker containers ++ # don't actually contain libpython.so, and it seems that this ++ # deliberate. And the link command runs ok. + # +- python_config = None +- for pc in ( +- f'python3-config', +- f'{sys.executable} {sysconfig.get_config_var("srcdir")}/python-config.py', +- f'{python_exe}-config', +- ): +- e = subprocess.run( +- f'{pc} --includes', +- shell=1, +- stdout=subprocess.DEVNULL, +- stderr=subprocess.DEVNULL, +- check=0, +- ).returncode +- log1(f'{e=} from {pc!r}.') +- if e == 0: +- python_config = pc +- assert python_config, f'Cannot find python-config' +- else: +- python_config = f'{python_exe}-config' ++ python_exe = os.path.realpath( sys.executable) ++ if darwin(): ++ # Basic install of dev tools with `xcode-select --install` doesn't ++ # seem to provide a `python3-config` or similar, but there is a ++ # `python-config.py` accessible via sysconfig. ++ # ++ # We try different possibilities and use the last one that ++ # works. ++ # ++ python_config = None ++ for pc in ( ++ f'python3-config', ++ f'{sys.executable} {sysconfig.get_config_var("srcdir")}/python-config.py', ++ f'{python_exe}-config', ++ ): ++ e = subprocess.run( ++ f'{pc} --includes', ++ shell=1, ++ stdout=subprocess.DEVNULL, ++ stderr=subprocess.DEVNULL, ++ check=0, ++ ).returncode ++ log1(f'{e=} from {pc!r}.') ++ if e == 0: ++ python_config = pc ++ assert python_config, f'Cannot find python-config' ++ else: ++ python_config = f'{python_exe}-config' + log1(f'Using {python_config=}.') + try: + self.includes = run( f'{python_config} --includes', capture=1).strip() +diff --git a/setup.py b/setup.py +index 23a5c78..4b3b5c7 100755 +--- a/setup.py ++++ b/setup.py +@@ -36,6 +36,9 @@ Environmental variables: + PYMUPDF_MUPDF_LIB + Directory containing MuPDF libraries, (libmupdf.so, + libmupdfcpp.so). ++ ++ PYMUPDF_PYTHON_CONFIG ++ Optional path to python-config. + + PYMUPDF_SETUP_IMPLEMENTATIONS + Must be one of 'a', 'b', 'ab'. If unset we use 'ab'. +-- +2.41.0 + diff --git a/package/python-pymupdf/Config.in b/package/python-pymupdf/Config.in new file mode 100644 index 00000000..e6e7c38c --- /dev/null +++ b/package/python-pymupdf/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_PYTHON_PYMUPDF + bool "python-pymupdf" + depends on BR2_INSTALL_LIBSTDCPP # mupdf -> harfbuzz + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # mupdf -> harfbuzz + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # mupdf -> harfbuzz + depends on !BR2_STATIC_LIBS # runtime failure + select BR2_PACKAGE_HOST_SWIG + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_MUPDF + select BR2_PACKAGE_PYTHON3_ZLIB # runtime + help + Python bindings for the PDF rendering library MuPDF. + + https://github.com/pymupdf/PyMuPDF + +comment "python-pymupdf needs a toolchain w/ C++, gcc >= 4.9, dynamic library" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + BR2_STATIC_LIBS diff --git a/package/python-pymupdf/python-pymupdf.hash b/package/python-pymupdf/python-pymupdf.hash new file mode 100644 index 00000000..341366d4 --- /dev/null +++ b/package/python-pymupdf/python-pymupdf.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pymupdf/json +md5 5c219a0c4cb3d57b60e39cc901ebd220 PyMuPDF-1.23.22.tar.gz +sha256 c41cd91d83696cea67a4b6c65cc1951c2019ac0a561c5a3f543318ede30d3cd0 PyMuPDF-1.23.22.tar.gz +# Locally computed sha256 checksums +sha256 57c8ff33c9c0cfc3ef00e650a1cc910d7ee479a8bc509f6c9209a7c2a11399d6 COPYING diff --git a/package/python-pymupdf/python-pymupdf.mk b/package/python-pymupdf/python-pymupdf.mk new file mode 100644 index 00000000..1d6ad78b --- /dev/null +++ b/package/python-pymupdf/python-pymupdf.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# python-pymupdf +# +################################################################################ + +# python-pymupdf's version must be compatible with mupdf's version +PYTHON_PYMUPDF_VERSION = 1.23.22 +PYTHON_PYMUPDF_SOURCE = PyMuPDF-$(PYTHON_PYMUPDF_VERSION).tar.gz +PYTHON_PYMUPDF_SITE = https://files.pythonhosted.org/packages/05/20/a0d1221d8f379afcc12b4d1687a8f4adb69eef659e835d781c3fa331ff46 +PYTHON_PYMUPDF_SETUP_TYPE = setuptools +PYTHON_PYMUPDF_LICENSE = AGPL-3.0+ +PYTHON_PYMUPDF_LICENSE_FILES = COPYING +# No license file included in pip, but it's present on github +PYTHON_PYMUPDF_DEPENDENCIES = freetype host-swig mupdf +PYTHON_PYMUPDF_BUILD_OPTS = --skip-dependency-check + +PYTHON_PYMUPDF_ENV = \ + PYMUPDF_INCLUDES="$(STAGING_DIR)/usr/include/freetype2:$(STAGING_DIR)/usr/include" \ + PYMUPDF_MUPDF_LIB="$(STAGING_DIR)/usr/lib" \ + PYMUPDF_PYTHON_CONFIG="$(STAGING_DIR)/usr/bin/python3-config" \ + PYMUPDF_SETUP_IMPLEMENTATIONS=a \ + PYMUPDF_SETUP_MUPDF_BUILD= + +$(eval $(python-package)) diff --git a/package/python-pymysql/Config.in b/package/python-pymysql/Config.in new file mode 100644 index 00000000..75b447cb --- /dev/null +++ b/package/python-pymysql/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PYMYSQL + bool "python-pymysql" + help + PyMySQL is a pure-Python MySQL client library. It follows + the DB-API 2.0. + + https://pypi.python.org/pypi/PyMySQL/ diff --git a/package/python-pymysql/python-pymysql.hash b/package/python-pymysql/python-pymysql.hash new file mode 100644 index 00000000..641d5dba --- /dev/null +++ b/package/python-pymysql/python-pymysql.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pymysql/json +md5 81d559c87414017075de030d8ce93257 PyMySQL-1.1.0.tar.gz +sha256 4f13a7df8bf36a51e81dd9f3605fede45a4878fe02f9236349fd82a3f0612f96 PyMySQL-1.1.0.tar.gz +# Locally computed sha256 checksums +sha256 314120dc65f0800f738a4b31400c76ee14decd1fbe77ce9c3540a421b86ea7b6 LICENSE diff --git a/package/python-pymysql/python-pymysql.mk b/package/python-pymysql/python-pymysql.mk new file mode 100644 index 00000000..c600fe51 --- /dev/null +++ b/package/python-pymysql/python-pymysql.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pymysql +# +################################################################################ + +PYTHON_PYMYSQL_VERSION = 1.1.0 +PYTHON_PYMYSQL_SOURCE = PyMySQL-$(PYTHON_PYMYSQL_VERSION).tar.gz +PYTHON_PYMYSQL_SITE = https://files.pythonhosted.org/packages/41/9d/ee68dee1c8821c839bb31e6e5f40e61035a5278f7c1307dde758f0c90452 +PYTHON_PYMYSQL_LICENSE = MIT +PYTHON_PYMYSQL_LICENSE_FILES = LICENSE +PYTHON_PYMYSQL_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-pynacl/Config.in b/package/python-pynacl/Config.in new file mode 100644 index 00000000..0553d82c --- /dev/null +++ b/package/python-pynacl/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_PYNACL + bool "python-pynacl" + select BR2_PACKAGE_LIBSODIUM + select BR2_PACKAGE_PYTHON_CFFI # runtime + help + Python binding to the Networking and Cryptography (NaCl) + library. + + https://pypi.python.org/pypi/PyNaCl diff --git a/package/python-pynacl/python-pynacl.hash b/package/python-pynacl/python-pynacl.hash new file mode 100644 index 00000000..85a7447b --- /dev/null +++ b/package/python-pynacl/python-pynacl.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/PyNaCl/json +md5 93989045e25f1111452cfdf5e021814d PyNaCl-1.5.0.tar.gz +sha256 8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba PyNaCl-1.5.0.tar.gz +# Locally computed sha256 checksums +sha256 d3174ad63e721d4c9dccb8ad4320848992d314369bc46319720b5802c9153fe9 LICENSE diff --git a/package/python-pynacl/python-pynacl.mk b/package/python-pynacl/python-pynacl.mk new file mode 100644 index 00000000..bd2571c3 --- /dev/null +++ b/package/python-pynacl/python-pynacl.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-pynacl +# +################################################################################ + +PYTHON_PYNACL_VERSION = 1.5.0 +PYTHON_PYNACL_SOURCE = PyNaCl-$(PYTHON_PYNACL_VERSION).tar.gz +PYTHON_PYNACL_SITE = https://files.pythonhosted.org/packages/a7/22/27582568be639dfe22ddb3902225f91f2f17ceff88ce80e4db396c8986da +PYTHON_PYNACL_LICENSE = Apache-2.0 +PYTHON_PYNACL_LICENSE_FILES = LICENSE +PYTHON_PYNACL_SETUP_TYPE = setuptools +PYTHON_PYNACL_DEPENDENCIES = libsodium host-python-cffi +PYTHON_PYNACL_ENV = SODIUM_INSTALL=system + +$(eval $(python-package)) diff --git a/package/python-pyndiff/Config.in b/package/python-pyndiff/Config.in new file mode 100644 index 00000000..58ca35ba --- /dev/null +++ b/package/python-pyndiff/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_PYNDIFF + bool "python-pyndiff" + select BR2_PACKAGE_PYTHON_XMLJSON # runtime + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + help + Generate human-readable ndiff output when comparing 2 Nmap + XML scan files. + + https://github.com/rackerlabs/pyndiff diff --git a/package/python-pyndiff/python-pyndiff.hash b/package/python-pyndiff/python-pyndiff.hash new file mode 100644 index 00000000..0afecfb6 --- /dev/null +++ b/package/python-pyndiff/python-pyndiff.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pyndiff/json +md5 32a9f994509cb883bbfeb563171f2668 pyndiff-1.0.2.tar.gz +sha256 8a519b18a7bbb315c043d4543719ce9fb6db8098bfcdd04cb8054b276cc91368 pyndiff-1.0.2.tar.gz +# Locally computed sha256 checksums +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/python-pyndiff/python-pyndiff.mk b/package/python-pyndiff/python-pyndiff.mk new file mode 100644 index 00000000..e2537495 --- /dev/null +++ b/package/python-pyndiff/python-pyndiff.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyndiff +# +################################################################################ + +PYTHON_PYNDIFF_VERSION = 1.0.2 +PYTHON_PYNDIFF_SOURCE = pyndiff-$(PYTHON_PYNDIFF_VERSION).tar.gz +PYTHON_PYNDIFF_SITE = https://files.pythonhosted.org/packages/83/3b/fb13918710c4fba40367140f22e3449998f4f66869a7564d0e547ad99ef8 +PYTHON_PYNDIFF_SETUP_TYPE = setuptools +PYTHON_PYNDIFF_LICENSE = Apache-2.0 +PYTHON_PYNDIFF_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-pyopenssl/Config.in b/package/python-pyopenssl/Config.in new file mode 100644 index 00000000..56f38f58 --- /dev/null +++ b/package/python-pyopenssl/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_PYOPENSSL + bool "python-pyopenssl" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-cryptography + select BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime + help + Python wrapper module around the OpenSSL library. + + https://github.com/pyca/pyopenssl diff --git a/package/python-pyopenssl/python-pyopenssl.hash b/package/python-pyopenssl/python-pyopenssl.hash new file mode 100644 index 00000000..fb5f75db --- /dev/null +++ b/package/python-pyopenssl/python-pyopenssl.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pyopenssl/json +md5 4c4f6f9e1c731b8ee7adcd9fbeccec62 pyOpenSSL-23.3.0.tar.gz +sha256 6b2cba5cc46e822750ec3e5a81ee12819850b11303630d575e98108a079c2b12 pyOpenSSL-23.3.0.tar.gz +# Locally computed sha256 checksums +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/python-pyopenssl/python-pyopenssl.mk b/package/python-pyopenssl/python-pyopenssl.mk new file mode 100644 index 00000000..9865f2bb --- /dev/null +++ b/package/python-pyopenssl/python-pyopenssl.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-pyopenssl +# +################################################################################ + +PYTHON_PYOPENSSL_VERSION = 23.3.0 +PYTHON_PYOPENSSL_SOURCE = pyOpenSSL-$(PYTHON_PYOPENSSL_VERSION).tar.gz +PYTHON_PYOPENSSL_SITE = https://files.pythonhosted.org/packages/bf/a0/e667c3c43b65a188cc3041fa00c50655315b93be45182b2c94d185a2610e +PYTHON_PYOPENSSL_LICENSE = Apache-2.0 +PYTHON_PYOPENSSL_LICENSE_FILES = LICENSE +PYTHON_PYOPENSSL_CPE_ID_VENDOR = pyopenssl +PYTHON_PYOPENSSL_CPE_ID_PRODUCT = pyopenssl +PYTHON_PYOPENSSL_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-pypa-build/python-pypa-build.hash b/package/python-pypa-build/python-pypa-build.hash new file mode 100644 index 00000000..a4e207e4 --- /dev/null +++ b/package/python-pypa-build/python-pypa-build.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/build/json +md5 9675d7b278f4533b9b75701e6e87390b build-1.2.1.tar.gz +sha256 526263f4870c26f26c433545579475377b2b7588b6f1eac76a001e873ae3e19d build-1.2.1.tar.gz +# Locally computed sha256 checksums +sha256 aaf9a29ca5907971ccf07de025375db34539a8d5eeebce20b46099805722106f LICENSE diff --git a/package/python-pypa-build/python-pypa-build.mk b/package/python-pypa-build/python-pypa-build.mk new file mode 100644 index 00000000..d8a23ddd --- /dev/null +++ b/package/python-pypa-build/python-pypa-build.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-pypa-build +# +################################################################################ + +PYTHON_PYPA_BUILD_VERSION = 1.2.1 +PYTHON_PYPA_BUILD_SOURCE = build-$(PYTHON_PYPA_BUILD_VERSION).tar.gz +PYTHON_PYPA_BUILD_SITE = https://files.pythonhosted.org/packages/ce/9e/2d725d2f7729c6e79ca62aeb926492abbc06e25910dd30139d60a68bcb19 +PYTHON_PYPA_BUILD_LICENSE = MIT +PYTHON_PYPA_BUILD_LICENSE_FILES = LICENSE +PYTHON_PYPA_BUILD_SETUP_TYPE = flit-bootstrap +HOST_PYTHON_PYPA_BUILD_DEPENDENCIES = \ + host-python-packaging \ + host-python-pyproject-hooks + +$(eval $(host-python-package)) diff --git a/package/python-pyparsing/Config.in b/package/python-pyparsing/Config.in new file mode 100644 index 00000000..926ca07e --- /dev/null +++ b/package/python-pyparsing/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_PYPARSING + bool "python-pyparsing" + help + The pyparsing module is an alternative approach to creating + and executing simple grammars, vs. the traditional lex/yacc + approach, or the use of regular expressions. The pyparsing + module provides a library of classes that client code uses + to construct the grammar directly in Python code. + + https://github.com/pyparsing/pyparsing/ diff --git a/package/python-pyparsing/python-pyparsing.hash b/package/python-pyparsing/python-pyparsing.hash new file mode 100644 index 00000000..d029ebda --- /dev/null +++ b/package/python-pyparsing/python-pyparsing.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pyparsing/json +md5 2bfafdb2d02d19ca4a3dfd02a9dbdfa7 pyparsing-3.1.2.tar.gz +sha256 a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad pyparsing-3.1.2.tar.gz +# Locally computed sha256 checksums +sha256 10d5120a16805804ffda8b688c220bfb4e8f39741b57320604d455a309e01972 LICENSE diff --git a/package/python-pyparsing/python-pyparsing.mk b/package/python-pyparsing/python-pyparsing.mk new file mode 100644 index 00000000..b7cbbd42 --- /dev/null +++ b/package/python-pyparsing/python-pyparsing.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-pyparsing +# +################################################################################ + +PYTHON_PYPARSING_VERSION = 3.1.2 +PYTHON_PYPARSING_SOURCE = pyparsing-$(PYTHON_PYPARSING_VERSION).tar.gz +PYTHON_PYPARSING_SITE = https://files.pythonhosted.org/packages/46/3a/31fd28064d016a2182584d579e033ec95b809d8e220e74c4af6f0f2e8842 +PYTHON_PYPARSING_LICENSE = MIT +PYTHON_PYPARSING_LICENSE_FILES = LICENSE +PYTHON_PYPARSING_SETUP_TYPE = flit +HOST_PYTHON_PYPARSING_SETUP_TYPE = flit-bootstrap + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-pyparted/Config.in b/package/python-pyparted/Config.in new file mode 100644 index 00000000..430bf204 --- /dev/null +++ b/package/python-pyparted/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_PYTHON_PYPARTED + bool "python-pyparted" + depends on BR2_ENABLE_LOCALE # parted + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # parted + depends on BR2_USE_WCHAR + select BR2_PACKAGE_PARTED + help + Python bindings for GNU parted (libparted). + + https://github.com/rhinstaller/pyparted + +comment "pyparted needs a toolchain w/ locale, wchar, gcc >= 5" + depends on !BR2_ENABLE_LOCALE || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 diff --git a/package/python-pyparted/python-pyparted.hash b/package/python-pyparted/python-pyparted.hash new file mode 100644 index 00000000..a13276ce --- /dev/null +++ b/package/python-pyparted/python-pyparted.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pyparted/json +md5 97df779564210100ea3e4eda0d33f7b9 pyparted-3.12.0.tar.gz +sha256 da985e116beb733371feb605b174db9eec8bd0eedffc8f739f8e603f51b521e7 pyparted-3.12.0.tar.gz +# Locally computed sha256 checksums +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING diff --git a/package/python-pyparted/python-pyparted.mk b/package/python-pyparted/python-pyparted.mk new file mode 100644 index 00000000..5e12995e --- /dev/null +++ b/package/python-pyparted/python-pyparted.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-pyparted +# +################################################################################ + +PYTHON_PYPARTED_VERSION = 3.12.0 +PYTHON_PYPARTED_SOURCE = pyparted-$(PYTHON_PYPARTED_VERSION).tar.gz +PYTHON_PYPARTED_SITE = https://files.pythonhosted.org/packages/c2/d0/d32aa5758d6567eef620075f5c84f475c93bb1bf8da9d17051ce3ef055db +PYTHON_PYPARTED_SETUP_TYPE = setuptools +PYTHON_PYPARTED_LICENSE = GPL-2.0+ +PYTHON_PYPARTED_LICENSE_FILES = COPYING +PYTHON_PYPARTED_DEPENDENCIES = parted + +$(eval $(python-package)) diff --git a/package/python-pyphen/Config.in b/package/python-pyphen/Config.in new file mode 100644 index 00000000..e4707ff0 --- /dev/null +++ b/package/python-pyphen/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYPHEN + bool "python-pyphen" + help + Pure Python module to hyphenate text. + + https://www.courtbouillon.org/pyphen diff --git a/package/python-pyphen/python-pyphen.hash b/package/python-pyphen/python-pyphen.hash new file mode 100644 index 00000000..47b9009e --- /dev/null +++ b/package/python-pyphen/python-pyphen.hash @@ -0,0 +1,8 @@ +# md5, sha256 from https://pypi.org/pypi/Pyphen/json +md5 19e799bbf459ac675698c37c5fae34a8 pyphen-0.14.0.tar.gz +sha256 596c8b3be1c1a70411ba5f6517d9ccfe3083c758ae2b94a45f2707346d8e66fa pyphen-0.14.0.tar.gz +# Locally computed sha256 checksums +sha256 9f0bffde4fbbbbc61c46f6577b6f472919dba9fdffabe74e8a7e44ac5dbef7a2 LICENSE +sha256 2233a3eecf299bc271f1a9f57f0b3198343ad4ab16571d70320133002c51496b COPYING.GPL +sha256 5bbcbb737e60fe9deba08ecbd00920cfcc3403ba2e534c64fdeea49d6bb87509 COPYING.LGPL +sha256 ad192a67649aa23ac9681939840f4f241643a98da9cd8aec8de28c3b8c6ee854 COPYING.MPL diff --git a/package/python-pyphen/python-pyphen.mk b/package/python-pyphen/python-pyphen.mk new file mode 100644 index 00000000..9baa2e7b --- /dev/null +++ b/package/python-pyphen/python-pyphen.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyphen +# +################################################################################ + +PYTHON_PYPHEN_VERSION = 0.14.0 +PYTHON_PYPHEN_SOURCE = pyphen-$(PYTHON_PYPHEN_VERSION).tar.gz +PYTHON_PYPHEN_SITE = https://files.pythonhosted.org/packages/4b/52/46b119f94b3f68e4193ada36941606d8e26852b67bb6e099b0e310540b41 +PYTHON_PYPHEN_SETUP_TYPE = flit +PYTHON_PYPHEN_LICENSE = LGPL-2.1+, MPL-1.1, GPL-2.0+ +PYTHON_PYPHEN_LICENSE_FILES = LICENSE COPYING.GPL COPYING.LGPL COPYING.MPL + +$(eval $(python-package)) diff --git a/package/python-pypika-tortoise/Config.in b/package/python-pypika-tortoise/Config.in new file mode 100644 index 00000000..62e14c6d --- /dev/null +++ b/package/python-pypika-tortoise/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYPIKA_TORTOISE + bool "python-pypika-tortoise" + help + Forked from pypika and streamline just for tortoise-orm. + + https://github.com/tortoise/pypika-tortoise diff --git a/package/python-pypika-tortoise/python-pypika-tortoise.hash b/package/python-pypika-tortoise/python-pypika-tortoise.hash new file mode 100644 index 00000000..629762f4 --- /dev/null +++ b/package/python-pypika-tortoise/python-pypika-tortoise.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pypika-tortoise/json +md5 98c9677516f06f61f211f834d51949a6 pypika-tortoise-0.1.6.tar.gz +sha256 d802868f479a708e3263724c7b5719a26ad79399b2a70cea065f4a4cadbebf36 pypika-tortoise-0.1.6.tar.gz +# Locally computed sha256 checksums +sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE diff --git a/package/python-pypika-tortoise/python-pypika-tortoise.mk b/package/python-pypika-tortoise/python-pypika-tortoise.mk new file mode 100644 index 00000000..84aa19cf --- /dev/null +++ b/package/python-pypika-tortoise/python-pypika-tortoise.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-pypika-tortoise +# +################################################################################ + +PYTHON_PYPIKA_TORTOISE_VERSION = 0.1.6 +PYTHON_PYPIKA_TORTOISE_SOURCE = pypika-tortoise-$(PYTHON_PYPIKA_TORTOISE_VERSION).tar.gz +PYTHON_PYPIKA_TORTOISE_SITE = https://files.pythonhosted.org/packages/86/55/1bfd4150f664d2e07b36c8f442178cc1f717bb9ae6cae20f21e851c208c6 +PYTHON_PYPIKA_TORTOISE_SETUP_TYPE = pep517 +PYTHON_PYPIKA_TORTOISE_LICENSE = Apache-2.0 +PYTHON_PYPIKA_TORTOISE_LICENSE_FILES = LICENSE +PYTHON_PYPIKA_TORTOISE_DEPENDENCIES = host-python-poetry-core + +$(eval $(python-package)) diff --git a/package/python-pypng/Config.in b/package/python-pypng/Config.in new file mode 100644 index 00000000..952b46c2 --- /dev/null +++ b/package/python-pypng/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PYPNG + bool "python-pypng" + select BR2_PACKAGE_PYTHON3_ZLIB # runtime + help + Pure Python library for saving and loading PNG images. + + https://gitlab.com/drj11/pypng diff --git a/package/python-pypng/python-pypng.hash b/package/python-pypng/python-pypng.hash new file mode 100644 index 00000000..0f55eef7 --- /dev/null +++ b/package/python-pypng/python-pypng.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pypng/json +md5 7d9cce86ceb19524784ade86fb13a063 pypng-0.20220715.0.tar.gz +sha256 739c433ba96f078315de54c0db975aee537cbc3e1d0ae4ed9aab0ca1e427e2c1 pypng-0.20220715.0.tar.gz +# Locally computed sha256 checksums +sha256 8dd127d87bb901ab9c8f584e98b7c7aa8539db27fe62ff01b1ee4be93b6a513a LICENCE diff --git a/package/python-pypng/python-pypng.mk b/package/python-pypng/python-pypng.mk new file mode 100644 index 00000000..07ad16b6 --- /dev/null +++ b/package/python-pypng/python-pypng.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pypng +# +################################################################################ + +PYTHON_PYPNG_VERSION = 0.20220715.0 +PYTHON_PYPNG_SOURCE = pypng-$(PYTHON_PYPNG_VERSION).tar.gz +PYTHON_PYPNG_SITE = https://files.pythonhosted.org/packages/93/cd/112f092ec27cca83e0516de0a3368dbd9128c187fb6b52aaaa7cde39c96d +PYTHON_PYPNG_SETUP_TYPE = setuptools +PYTHON_PYPNG_LICENSE = MIT +PYTHON_PYPNG_LICENSE_FILES = LICENCE + +$(eval $(python-package)) diff --git a/package/python-pyproject-hooks/python-pyproject-hooks.hash b/package/python-pyproject-hooks/python-pyproject-hooks.hash new file mode 100644 index 00000000..9fdcd335 --- /dev/null +++ b/package/python-pyproject-hooks/python-pyproject-hooks.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pyproject_hooks/json +md5 69b0b6de189bc04c3f9e304281765741 pyproject_hooks-1.0.0.tar.gz +sha256 f271b298b97f5955d53fb12b72c1fb1948c22c1a6b70b315c54cedaca0264ef5 pyproject_hooks-1.0.0.tar.gz +# Locally computed sha256 checksums +sha256 1b22b049b5267d6dfc23a67bf4a84d8ec04b9fdfb1a51d360e42b4342c8b4154 LICENSE diff --git a/package/python-pyproject-hooks/python-pyproject-hooks.mk b/package/python-pyproject-hooks/python-pyproject-hooks.mk new file mode 100644 index 00000000..a42dbb0a --- /dev/null +++ b/package/python-pyproject-hooks/python-pyproject-hooks.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyproject-hooks +# +################################################################################ + +PYTHON_PYPROJECT_HOOKS_VERSION = 1.0.0 +PYTHON_PYPROJECT_HOOKS_SOURCE = pyproject_hooks-$(PYTHON_PYPROJECT_HOOKS_VERSION).tar.gz +PYTHON_PYPROJECT_HOOKS_SITE = https://files.pythonhosted.org/packages/25/c1/374304b8407d3818f7025457b7366c8e07768377ce12edfe2aa58aa0f64c +PYTHON_PYPROJECT_HOOKS_SETUP_TYPE = flit-bootstrap +PYTHON_PYPROJECT_HOOKS_LICENSE = MIT +PYTHON_PYPROJECT_HOOKS_LICENSE_FILES = LICENSE + +$(eval $(host-python-package)) diff --git a/package/python-pyproject-metadata/python-pyproject-metadata.hash b/package/python-pyproject-metadata/python-pyproject-metadata.hash new file mode 100644 index 00000000..51a3e4b8 --- /dev/null +++ b/package/python-pyproject-metadata/python-pyproject-metadata.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pyproject-metadata/json +md5 ca5e9527cff96153a976e14530b53746 pyproject-metadata-0.7.1.tar.gz +sha256 0a94f18b108b9b21f3a26a3d541f056c34edcb17dc872a144a15618fed7aef67 pyproject-metadata-0.7.1.tar.gz +# Locally computed sha256 checksums +sha256 aaf9a29ca5907971ccf07de025375db34539a8d5eeebce20b46099805722106f LICENSE diff --git a/package/python-pyproject-metadata/python-pyproject-metadata.mk b/package/python-pyproject-metadata/python-pyproject-metadata.mk new file mode 100644 index 00000000..6fac22ab --- /dev/null +++ b/package/python-pyproject-metadata/python-pyproject-metadata.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyproject-metadata +# +################################################################################ + +PYTHON_PYPROJECT_METADATA_VERSION = 0.7.1 +PYTHON_PYPROJECT_METADATA_SOURCE = pyproject-metadata-$(PYTHON_PYPROJECT_METADATA_VERSION).tar.gz +PYTHON_PYPROJECT_METADATA_SITE = https://files.pythonhosted.org/packages/38/af/b0e6a9eba989870fd26e10889446d1bec2e6d5be0a1bae2dc4dcda9ce199 +PYTHON_PYPROJECT_METADATA_SETUP_TYPE = setuptools +PYTHON_PYPROJECT_METADATA_LICENSE = MIT +PYTHON_PYPROJECT_METADATA_LICENSE_FILES = LICENSE + +$(eval $(host-python-package)) diff --git a/package/python-pyqrcode/Config.in b/package/python-pyqrcode/Config.in new file mode 100644 index 00000000..d07ab496 --- /dev/null +++ b/package/python-pyqrcode/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_PYQRCODE + bool "python-pyqrcode" + select BR2_PACKAGE_PYTHON3_PYEXPAT # runtime + select BR2_PACKAGE_PYTHON3_CODECSCJK # 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/package/python-pyqrcode/python-pyqrcode.hash b/package/python-pyqrcode/python-pyqrcode.hash new file mode 100644 index 00000000..c946ba9d --- /dev/null +++ b/package/python-pyqrcode/python-pyqrcode.hash @@ -0,0 +1,5 @@ +# md5 from https://pypi.python.org/pypi/pyqrcode/json +md5 371f29f4b03bd2830c6e0319258b1259 PyQRCode-1.2.1.tar.gz +# Locally computed +sha256 fdbf7634733e56b72e27f9bce46e4550b75a3a2c420414035cae9d9d26b234d5 PyQRCode-1.2.1.tar.gz +sha256 bef0c3595451da5132dea99e288fb5dafcbc469e0643f993a4ba0a69980f5ec9 setup.py diff --git a/package/python-pyqrcode/python-pyqrcode.mk b/package/python-pyqrcode/python-pyqrcode.mk new file mode 100644 index 00000000..f3eac5a3 --- /dev/null +++ b/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-3-Clause +PYTHON_PYQRCODE_LICENSE_FILES = setup.py + +$(eval $(python-package)) diff --git a/package/python-pyqt5/0001-configure-skip-qtdetail.patch b/package/python-pyqt5/0001-configure-skip-qtdetail.patch new file mode 100644 index 00000000..b82f89e0 --- /dev/null +++ b/package/python-pyqt5/0001-configure-skip-qtdetail.patch @@ -0,0 +1,38 @@ +From 7ed5e15f2de747e383ba7eee66b646a7a66e6654 Mon Sep 17 00:00:00 2001 +From: Sergey Kostanbaev +Date: Wed, 29 Dec 2021 12:30:12 -0800 +Subject: [PATCH] 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 +Signed-off-by: Adam Duskett +Refresh for 5.15.6 + +diff --git a/configure.py b/configure.py +index daa0f94..32f5b21 100644 +--- a/configure.py ++++ b/configure.py +@@ -2455,10 +2455,6 @@ def run_test_program(mname, test, verbose): + + out_file = 'cfgtest_' + mname + '.out' + +- # Create the output file, first making sure it doesn't exist. +- remove_file(out_file) +- run_command(test + ' ' + out_file, verbose) +- + if not os.access(out_file, os.F_OK): + error("%s failed to create %s. Make sure your Qt installation is correct." % (test, out_file)) + +-- +2.33.1 + diff --git a/package/python-pyqt5/0002-fix-QtCoremod.sip-syntax-error.patch b/package/python-pyqt5/0002-fix-QtCoremod.sip-syntax-error.patch new file mode 100644 index 00000000..d83c5e52 --- /dev/null +++ b/package/python-pyqt5/0002-fix-QtCoremod.sip-syntax-error.patch @@ -0,0 +1,29 @@ +From d004e17cd92f660cb386d91e14729a03cab087d4 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Sun, 22 May 2022 13:23:27 -0700 +Subject: [PATCH] fix QtCoremod.sip syntax error + +Fixes PyQt5/bindings/QtCore/QtCoremod.sip:23: syntax error from the +python-sip-4 package. + +Signed-off-by: Adam Duskett +--- + sip/QtCore/QtCoremod.sip | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sip/QtCore/QtCoremod.sip b/sip/QtCore/QtCoremod.sip +index b525bc5..1e2b8ba 100644 +--- a/sip/QtCore/QtCoremod.sip ++++ b/sip/QtCore/QtCoremod.sip +@@ -20,7 +20,7 @@ + // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +-%Module(name=PyQt5.QtCore, call_super_init=True, default_VirtualErrorHandler=PyQt5, keyword_arguments="Optional", use_limited_api=True, py_ssize_t_clean=True) ++%Module(name=PyQt5.QtCore, call_super_init=True, default_VirtualErrorHandler=PyQt5, keyword_arguments="Optional", use_limited_api=True) + + %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_6_3 Qt_5_6_4 Qt_5_6_5 Qt_5_6_6 Qt_5_6_7 Qt_5_6_8 Qt_5_6_9 Qt_5_7_0 Qt_5_7_1 Qt_5_8_0 Qt_5_8_1 Qt_5_9_0 Qt_5_9_1 Qt_5_9_2 Qt_5_9_3 Qt_5_9_4 Qt_5_9_5 Qt_5_9_6 Qt_5_9_7 Qt_5_9_8 Qt_5_9_9 Qt_5_10_0 Qt_5_10_1 Qt_5_11_0 Qt_5_11_1 Qt_5_11_2 Qt_5_11_3 Qt_5_12_0 Qt_5_12_1 Qt_5_12_2 Qt_5_12_3 Qt_5_12_4 Qt_5_13_0 Qt_5_14_0 Qt_5_15_0} + +-- +2.36.1 + diff --git a/package/python-pyqt5/Config.in b/package/python-pyqt5/Config.in new file mode 100644 index 00000000..9fa7676f --- /dev/null +++ b/package/python-pyqt5/Config.in @@ -0,0 +1,12 @@ +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 + select BR2_PACKAGE_QT5BASE_GUI + help + Python bindings for Qt 5 + + http://www.riverbankcomputing.com/software/pyqt/ diff --git a/package/python-pyqt5/python-pyqt5.hash b/package/python-pyqt5/python-pyqt5.hash new file mode 100644 index 00000000..d1b7adf8 --- /dev/null +++ b/package/python-pyqt5/python-pyqt5.hash @@ -0,0 +1,6 @@ +# From https://pypi.org/pypi/PyQt5/json +md5 0c7fca60aa6ee13c235f68576d9c7bed PyQt5-5.15.6.tar.gz + +# Locally calculated +sha256 80343bcab95ffba619f2ed2467fd828ffeb0a251ad7225be5fc06dcc333af452 PyQt5-5.15.6.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE diff --git a/package/python-pyqt5/python-pyqt5.mk b/package/python-pyqt5/python-pyqt5.mk new file mode 100644 index 00000000..54b7f201 --- /dev/null +++ b/package/python-pyqt5/python-pyqt5.mk @@ -0,0 +1,180 @@ +################################################################################ +# +# python-pyqt5 +# +################################################################################ + +PYTHON_PYQT5_VERSION = 5.15.6 +PYTHON_PYQT5_SOURCE = PyQt5-$(PYTHON_PYQT5_VERSION).tar.gz +PYTHON_PYQT5_SITE = https://files.pythonhosted.org/packages/3b/27/fd81188a35f37be9b3b4c2db1654d9439d1418823916fe702ac3658c9c41 +PYTHON_PYQT5_LICENSE = GPL-3.0 +PYTHON_PYQT5_LICENSE_FILES = LICENSE + +PYTHON_PYQT5_DEPENDENCIES = python-sip host-python-sip qt5base +PYTHON_PYQT5_MODULES = \ + QtCore QtGui \ + $(if $(BR2_PACKAGE_QT5BASE_DBUS),QtDBus) \ + $(if $(BR2_PACKAGE_QT5BASE_NETWORK),QtNetwork) \ + $(if $(BR2_PACKAGE_QT5BASE_OPENGL_LIB),QtOpenGL) \ + $(if $(BR2_PACKAGE_QT5BASE_PRINTSUPPORT),QtPrintSupport) \ + $(if $(BR2_PACKAGE_QT5BASE_XML),QtXml) + +ifeq ($(BR2_PACKAGE_QT5BASE_WIDGETS),y) +PYTHON_PYQT5_MODULES += QtWidgets + +# QtSql needs QtWidgets +ifeq ($(BR2_PACKAGE_QT5BASE_SQL),y) +PYTHON_PYQT5_MODULES += QtSql +endif + +# QtTest needs QtWidgets +ifeq ($(BR2_PACKAGE_QT5BASE_TEST),y) +PYTHON_PYQT5_MODULES += QtTest +endif + +# QtSvg needs QtWidgets +ifeq ($(BR2_PACKAGE_QT5SVG),y) +PYTHON_PYQT5_DEPENDENCIES += qt5svg +PYTHON_PYQT5_MODULES += QtSvg +endif +endif + +ifeq ($(BR2_PACKAGE_QT5CONNECTIVITY),y) +PYTHON_PYQT5_DEPENDENCIES += qt5connectivity +PYTHON_PYQT5_MODULES += QtBluetooth QtNfc +endif + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) +PYTHON_PYQT5_DEPENDENCIES += qt5declarative +PYTHON_PYQT5_MODULES += QtQml + +# QtQuick module needs opengl +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK)$(BR2_PACKAGE_QT5BASE_OPENGL_LIB),yy) +PYTHON_PYQT5_MODULES += \ + QtQuick \ + $(if $(BR2_PACKAGE_QT5BASE_WIDGETS),QtQuickWidgets) +endif +endif + +ifeq ($(BR2_PACKAGE_QT5ENGINIO),y) +PYTHON_PYQT5_DEPENDENCIES += qt5enginio +PYTHON_PYQT5_MODULES += Enginio +endif + +ifeq ($(BR2_PACKAGE_QT5LOCATION),y) +PYTHON_PYQT5_DEPENDENCIES += qt5location +PYTHON_PYQT5_MODULES += QtPositioning +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y) +PYTHON_PYQT5_MODULES += QtLocation +endif +endif + +ifeq ($(BR2_PACKAGE_QT5MULTIMEDIA),y) +PYTHON_PYQT5_DEPENDENCIES += qt5multimedia +PYTHON_PYQT5_MODULES += \ + QtMultimedia \ + $(if $(BR2_PACKAGE_QT5BASE_WIDGETS),QtMultimediaWidgets) +endif + +ifeq ($(BR2_PACKAGE_QT5SENSORS),y) +PYTHON_PYQT5_DEPENDENCIES += qt5sensors +PYTHON_PYQT5_MODULES += QtSensors +endif + +ifeq ($(BR2_PACKAGE_QT5SERIALPORT),y) +PYTHON_PYQT5_DEPENDENCIES += qt5serialport +PYTHON_PYQT5_MODULES += QtSerialPort +endif + +ifeq ($(BR2_PACKAGE_QT5WEBCHANNEL),y) +PYTHON_PYQT5_DEPENDENCIES += qt5webchannel +PYTHON_PYQT5_MODULES += QtWebChannel +endif + +ifeq ($(BR2_PACKAGE_QT5WEBKIT),y) +PYTHON_PYQT5_DEPENDENCIES += qt5webkit +PYTHON_PYQT5_MODULES += \ + QtWebKit \ + $(if $(BR2_PACKAGE_QT5BASE_WIDGETS),QtWebKitWidgets) +endif + +ifeq ($(BR2_PACKAGE_QT5WEBSOCKETS),y) +PYTHON_PYQT5_DEPENDENCIES += qt5websockets +PYTHON_PYQT5_MODULES += QtWebSockets +endif + +ifeq ($(BR2_PACKAGE_QT5X11EXTRAS),y) +PYTHON_PYQT5_DEPENDENCIES += qt5x11extras +PYTHON_PYQT5_MODULES += QtX11Extras +endif + +ifeq ($(BR2_PACKAGE_QT5XMLPATTERNS),y) +PYTHON_PYQT5_DEPENDENCIES += qt5xmlpatterns +PYTHON_PYQT5_MODULES += QtXmlPatterns +endif + +PYTHON_PYQT5_QTCORE_LICENSE = Open Source + +PYTHON_PYQT5_QTCORE_TYPE = shared + +# Turn off features that aren't available in current qt configuration +PYTHON_PYQT5_QTCORE_DISABLE_FEATURES += $(if $(BR2_PACKAGE_QT5BASE_OPENGL),,PyQt_OpenGL) +PYTHON_PYQT5_QTCORE_DISABLE_FEATURES += $(if $(BR2_PACKAGE_QT5BASE_OPENGL_DESKTOP),,PyQt_Desktop_OpenGL) +PYTHON_PYQT5_QTCORE_DISABLE_FEATURES += $(if $(BR2_PACKAGE_OPENSSL),,PyQt_SSL) + +define PYTHON_PYQT5_QTCORE + echo $(1) >> $(2)/cfgtest_QtCore.out +endef + +# Since we can't run generate cfgtest_QtCore.out by running qtdetail on target device +# we must generate the configuration. +define PYTHON_PYQT5_GENERATE_QTCORE + $(RM) -f $(1)/cfgtest_QtCore.out + $(call PYTHON_PYQT5_QTCORE,$(PYTHON_PYQT5_QTCORE_LICENSE),$(1)) + $(call PYTHON_PYQT5_QTCORE,$(PYTHON_PYQT5_QTCORE_TYPE),$(1)) + $(foreach f,$(PYTHON_PYQT5_QTCORE_DISABLE_FEATURES), + $(call PYTHON_PYQT5_QTCORE,$(f),$(1)) \ + ) +endef + +# The file "qt.conf" can be used to override the hard-coded paths that are +# compiled into the Qt library. We need it to make "qmake" relocatable and +# tweak the per-package install pathes +PYTHON_PYQT5_PRE_CONFIGURE_HOOKS += QT5_QT_CONF_FIXUP + +PYTHON_PYQT5_CONF_OPTS = \ + --bindir $(TARGET_DIR)/usr/bin \ + --destdir $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages \ + --qmake $(HOST_DIR)/bin/qmake \ + --sysroot $(STAGING_DIR)/usr \ + -w --confirm-license \ + --no-designer-plugin \ + --no-docstrings \ + --no-sip-files \ + --assume-shared \ + $(foreach module,$(PYTHON_PYQT5_MODULES),--enable=$(module)) + +define PYTHON_PYQT5_CONFIGURE_CMDS + $(call PYTHON_PYQT5_GENERATE_QTCORE,$(@D)) + (cd $(@D); \ + $(TARGET_MAKE_ENV) \ + $(TARGET_CONFIGURE_OPTS) \ + $(HOST_DIR)/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 + # Parallel install is not supported. + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D) install + touch $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/PyQt5/__init__.py + $(RM) -rf $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/PyQt5/uic/port_v2 +endef + +$(eval $(generic-package)) diff --git a/package/python-pyratemp/Config.in b/package/python-pyratemp/Config.in new file mode 100644 index 00000000..9a299d1a --- /dev/null +++ b/package/python-pyratemp/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_PYRATEMP + bool "python-pyratemp" + help + python-pyratemp is a Python library for doing html + templates. written entirely in Python, that is designed to + be very easy to use and very like writing Python. + + https://pypi.python.org/pypi/pyratemp/ diff --git a/package/python-pyratemp/python-pyratemp.hash b/package/python-pyratemp/python-pyratemp.hash new file mode 100644 index 00000000..376f9786 --- /dev/null +++ b/package/python-pyratemp/python-pyratemp.hash @@ -0,0 +1,5 @@ +#md5 from https://pypi.python.org/pypi?:action=show_md5&digest=e4bbe5d4a98016efef882b2b2f47defb +md5 e4bbe5d4a98016efef882b2b2f47defb pyratemp-0.3.2.tgz +# Locally calculated: +sha256 c45ed656ada482a02fe780495f37a695e7671accb04f918f7e7f18abf877bc71 pyratemp-0.3.2.tgz +sha256 3de57a97f9c8492808867ae2ac2b33b422a8a34d29d0ea981b9e85c0963462db LICENSE diff --git a/package/python-pyratemp/python-pyratemp.mk b/package/python-pyratemp/python-pyratemp.mk new file mode 100644 index 00000000..6429729a --- /dev/null +++ b/package/python-pyratemp/python-pyratemp.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyratemp +# +################################################################################ + +PYTHON_PYRATEMP_VERSION = 0.3.2 +PYTHON_PYRATEMP_SOURCE = pyratemp-$(PYTHON_PYRATEMP_VERSION).tgz +PYTHON_PYRATEMP_SITE = https://pypi.python.org/packages/source/p/pyratemp +PYTHON_PYRATEMP_LICENSE = MIT +PYTHON_PYRATEMP_LICENSE_FILES = LICENSE +PYTHON_PYRATEMP_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-pyroute2/Config.in b/package/python-pyroute2/Config.in new file mode 100644 index 00000000..9e685f9d --- /dev/null +++ b/package/python-pyroute2/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_PYROUTE2 + bool "python-pyroute2" + select BR2_PACKAGE_PYTHON3_SQLITE + help + Python netlink library - Linux network / netns / wireless / + ipset configuration. + + https://github.com/svinota/pyroute2 diff --git a/package/python-pyroute2/python-pyroute2.hash b/package/python-pyroute2/python-pyroute2.hash new file mode 100644 index 00000000..87693d02 --- /dev/null +++ b/package/python-pyroute2/python-pyroute2.hash @@ -0,0 +1,7 @@ +# md5, sha256 from https://pypi.org/pypi/pyroute2/json +md5 0566531c56ec453cc9ca0aff2c3f2f31 pyroute2-0.7.10.tar.gz +sha256 cc2f90aad1517cb0b301041f678cc8d3c3427c26e53f15c78c93c67928d89a02 pyroute2-0.7.10.tar.gz +# Locally computed sha256 +sha256 4739b32a2478e9c204bf010bad5d565d188e59ff905e3c8f71fe3398098b7093 LICENSE.Apache-2.0 +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL-2.0-or-later +sha256 cbd229e4525bd162dd51f53b2e972d0383f0d0bd5277a10387a57ab9bff97c9f README.license.rst diff --git a/package/python-pyroute2/python-pyroute2.mk b/package/python-pyroute2/python-pyroute2.mk new file mode 100644 index 00000000..023b8e7c --- /dev/null +++ b/package/python-pyroute2/python-pyroute2.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyroute2 +# +################################################################################ + +PYTHON_PYROUTE2_VERSION = 0.7.10 +PYTHON_PYROUTE2_SOURCE = pyroute2-$(PYTHON_PYROUTE2_VERSION).tar.gz +PYTHON_PYROUTE2_SITE = https://files.pythonhosted.org/packages/18/44/930e15e4fd5d0c7c54dfd303f644a057d88f411a97581d6edc5cb9e16f9e +PYTHON_PYROUTE2_LICENSE = Apache-2.0 or GPL-2.0+ +PYTHON_PYROUTE2_LICENSE_FILES = LICENSE.Apache-2.0 LICENSE.GPL-2.0-or-later README.license.rst +PYTHON_PYROUTE2_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-pyrsistent/Config.in b/package/python-pyrsistent/Config.in new file mode 100644 index 00000000..49f97a00 --- /dev/null +++ b/package/python-pyrsistent/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYRSISTENT + bool "python-pyrsistent" + help + Persistent/Functional/Immutable data structures. + + http://github.com/tobgu/pyrsistent/ diff --git a/package/python-pyrsistent/python-pyrsistent.hash b/package/python-pyrsistent/python-pyrsistent.hash new file mode 100644 index 00000000..780a7f09 --- /dev/null +++ b/package/python-pyrsistent/python-pyrsistent.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pyrsistent/json +md5 dce0f9a13668dbf8bb76f74954b4a42a pyrsistent-0.20.0.tar.gz +sha256 4c48f78f62ab596c679086084d0dd13254ae4f3d6c72a83ffdf5ebdef8f265a4 pyrsistent-0.20.0.tar.gz +# Locally computed sha256 checksums +sha256 3fd3d3d1ab9c733ee453fbf3bbbaa845440d0d8c20d7b5a039d2e46a2ed7fc01 LICENSE.mit diff --git a/package/python-pyrsistent/python-pyrsistent.mk b/package/python-pyrsistent/python-pyrsistent.mk new file mode 100644 index 00000000..6c52d7db --- /dev/null +++ b/package/python-pyrsistent/python-pyrsistent.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyrsistent +# +################################################################################ + +PYTHON_PYRSISTENT_VERSION = 0.20.0 +PYTHON_PYRSISTENT_SOURCE = pyrsistent-$(PYTHON_PYRSISTENT_VERSION).tar.gz +PYTHON_PYRSISTENT_SITE = https://files.pythonhosted.org/packages/ce/3a/5031723c09068e9c8c2f0bc25c3a9245f2b1d1aea8396c787a408f2b95ca +PYTHON_PYRSISTENT_SETUP_TYPE = setuptools +PYTHON_PYRSISTENT_LICENSE = MIT +PYTHON_PYRSISTENT_LICENSE_FILES = LICENSE.mit + +$(eval $(python-package)) diff --git a/package/python-pysendfile/Config.in b/package/python-pysendfile/Config.in new file mode 100644 index 00000000..5a919dd9 --- /dev/null +++ b/package/python-pysendfile/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYSENDFILE + bool "python-pysendfile" + help + A Python interface to sendfile(2) syscall + + https://github.com/giampaolo/pysendfile diff --git a/package/python-pysendfile/python-pysendfile.hash b/package/python-pysendfile/python-pysendfile.hash new file mode 100644 index 00000000..d1aff6ae --- /dev/null +++ b/package/python-pysendfile/python-pysendfile.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 f4ca8a7f0be67e3d710c0633dd9aadab6881203c31cb9eb9be4f10361ad3f937 python-pysendfile-2.0.1.tar.gz +sha256 259f433563cfe0296c84c00381c600e82e0ab1b617ce20fe6e7f555a2b95af26 LICENSE diff --git a/package/python-pysendfile/python-pysendfile.mk b/package/python-pysendfile/python-pysendfile.mk new file mode 100644 index 00000000..bb8f057d --- /dev/null +++ b/package/python-pysendfile/python-pysendfile.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-pysendfile +# +################################################################################ + +PYTHON_PYSENDFILE_VERSION = 2.0.1 +PYTHON_PYSENDFILE_SITE = $(call github,giampaolo,pysendfile,release-$(PYTHON_PYSENDFILE_VERSION)) +PYTHON_PYSENDFILE_SETUP_TYPE = setuptools +PYTHON_PYSENDFILE_LICENSE = MIT +PYTHON_PYSENDFILE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-pysensors/0001-Remove-import-sensors-from-setup-py.patch b/package/python-pysensors/0001-Remove-import-sensors-from-setup-py.patch new file mode 100644 index 00000000..737f194f --- /dev/null +++ b/package/python-pysensors/0001-Remove-import-sensors-from-setup-py.patch @@ -0,0 +1,55 @@ +Remove import sensors from setup.py + +Don't import sensors in setup.py to avoid adding a dependency on host +lm-sensors. Instead, move __version__, __author__, __contact__ and +__license__ to setup.py + +Signed-off-by: Fabrice Fontaine +Upstream: upstream is dead since 2019 + +diff '--color=auto' -Nura PySensors-0.0.4.orig/sensors/__init__.py PySensors-0.0.4/sensors/__init__.py +--- PySensors-0.0.4.orig/sensors/__init__.py 2024-01-04 13:47:07.114179107 +0100 ++++ PySensors-0.0.4/sensors/__init__.py 2024-01-04 14:07:24.701178768 +0100 +@@ -6,12 +6,6 @@ + + from sensors import stdc + +-__version__ = "0.0.4" +-__date__ = "2019-09-19" +-__author__ = "Marc 'BlackJack' Rintsch" +-__contact__ = 'marc@rintsch.de' +-__license__ = 'LGPL v2.1' +- + API_VERSION = 4 + DEFAULT_CONFIG_FILENAME = b"/etc/sensors3.conf" + +diff '--color=auto' -Nura PySensors-0.0.4.orig/setup.py PySensors-0.0.4/setup.py +--- PySensors-0.0.4.orig/setup.py 2024-01-04 13:47:07.114179107 +0100 ++++ PySensors-0.0.4/setup.py 2024-01-04 14:07:04.657260411 +0100 +@@ -1,17 +1,21 @@ + #!/usr/bin/env python3 + from setuptools import setup +-import sensors ++ ++__version__ = "0.0.4" ++__author__ = "Marc 'BlackJack' Rintsch" ++__contact__ = 'marc@rintsch.de' ++__license__ = 'LGPL v2.1' + + setup( + name='PySensors', +- version=sensors.__version__, +- author=sensors.__author__, +- author_email=sensors.__contact__, ++ version=__version__, ++ author=__author__, ++ author_email=__contact__, + packages=['sensors'], + # scripts=[], + url='http://pypi.python.org/pypi/PySensors/', + # download_url='', +- license=sensors.__license__, ++ license=__license__, + description='Python bindings to libsensors (via ctypes)', + long_description=open('README.rst').read(), + long_description_content_type="text/x-rst", diff --git a/package/python-pysensors/Config.in b/package/python-pysensors/Config.in new file mode 100644 index 00000000..952d14c3 --- /dev/null +++ b/package/python-pysensors/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_PYSENSORS + bool "python-pysensors" + select BR2_PACKAGE_LM_SENSORS # runtime + help + Python bindings for libsensors.so from the lm-sensors project + via ctypes. Supports API version 4, i.e. libsensors version + 3.x. + + https://pypi.org/project/PySensors diff --git a/package/python-pysensors/python-pysensors.hash b/package/python-pysensors/python-pysensors.hash new file mode 100644 index 00000000..b98c0860 --- /dev/null +++ b/package/python-pysensors/python-pysensors.hash @@ -0,0 +1,3 @@ +# md5, sha256 from https://pypi.org/pypi/PySensors/json +md5 af5ca440297b45bd440d32a7c8341c0f PySensors-0.0.4.tar.gz +sha256 beb0def410d29ee46fe196a7811124772abf84cbe3a0d8b01d80b81fba31dae5 PySensors-0.0.4.tar.gz diff --git a/package/python-pysensors/python-pysensors.mk b/package/python-pysensors/python-pysensors.mk new file mode 100644 index 00000000..b38c47f0 --- /dev/null +++ b/package/python-pysensors/python-pysensors.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-pysensors +# +################################################################################ + +PYTHON_PYSENSORS_VERSION = 0.0.4 +PYTHON_PYSENSORS_SOURCE = PySensors-$(PYTHON_PYSENSORS_VERSION).tar.gz +PYTHON_PYSENSORS_SITE = https://files.pythonhosted.org/packages/76/31/d3383a192f31ce1d79f27ec3d047cca23dd82a1bf0939e774386aba37cf5 +PYTHON_PYSENSORS_SETUP_TYPE = setuptools +PYTHON_PYSENSORS_LICENSE = LGPL-2.1 + +$(eval $(python-package)) diff --git a/package/python-pysftp/Config.in b/package/python-pysftp/Config.in new file mode 100644 index 00000000..fc4fdd97 --- /dev/null +++ b/package/python-pysftp/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_PYSFTP + bool "python-pysftp" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-paramiko -> python-cryptography + select BR2_PACKAGE_PYTHON_PARAMIKO # runtime + help + A friendly face on SFTP. + + https://bitbucket.org/dundeemt/pysftp diff --git a/package/python-pysftp/python-pysftp.hash b/package/python-pysftp/python-pysftp.hash new file mode 100644 index 00000000..75102ab8 --- /dev/null +++ b/package/python-pysftp/python-pysftp.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pysftp/json +md5 abc55b7122de3e86f0d547301f4ddf0c pysftp-0.2.9.tar.gz +sha256 fbf55a802e74d663673400acd92d5373c1c7ee94d765b428d9f977567ac4854a pysftp-0.2.9.tar.gz +# Locally computed sha256 checksums +sha256 e648e3c7f439b52222a785a590223a0f7bad1a8a5fb89157d80d13123c7dcd25 LICENSE.txt diff --git a/package/python-pysftp/python-pysftp.mk b/package/python-pysftp/python-pysftp.mk new file mode 100644 index 00000000..4841afd0 --- /dev/null +++ b/package/python-pysftp/python-pysftp.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pysftp +# +################################################################################ + +PYTHON_PYSFTP_VERSION = 0.2.9 +PYTHON_PYSFTP_SOURCE = pysftp-$(PYTHON_PYSFTP_VERSION).tar.gz +PYTHON_PYSFTP_SITE = https://files.pythonhosted.org/packages/36/60/45f30390a38b1f92e0a8cf4de178cd7c2bc3f874c85430e40ccf99df8fe7 +PYTHON_PYSFTP_SETUP_TYPE = setuptools +PYTHON_PYSFTP_LICENSE = BSD-3-Clause +PYTHON_PYSFTP_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-pysmb/Config.in b/package/python-pysmb/Config.in new file mode 100644 index 00000000..bb935ddd --- /dev/null +++ b/package/python-pysmb/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_PYTHON_PYSMB + bool "python-pysmb" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_PYTHON_PYASN1 + select BR2_PACKAGE_PYTHON_TQDM + help + pysmb is an experimental SMB/CIFS library written in Python. + It implements the client-side SMB/CIFS protocol (SMB1 and + SMB2) which allows your Python application to access and + transfer files to/from SMB/CIFS shared folders like your + Windows file sharing and Samba folders. + + https://miketeo.net/wp/index.php/projects/pysmb + +comment "python-pysmb needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/python-pysmb/python-pysmb.hash b/package/python-pysmb/python-pysmb.hash new file mode 100644 index 00000000..87b1edf5 --- /dev/null +++ b/package/python-pysmb/python-pysmb.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 30558c11ba141e9ad26e5edb1b85b94813a335ed5c0fe11df8046942b0c7e813 pysmb-1.2.9.tar.gz +sha256 8c487d5c10f024e44a9cf1df21d1fd28a80bd2dfddd9f1dcd109a47d721f497f LICENSE diff --git a/package/python-pysmb/python-pysmb.mk b/package/python-pysmb/python-pysmb.mk new file mode 100644 index 00000000..394a9d80 --- /dev/null +++ b/package/python-pysmb/python-pysmb.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pysmb +# +################################################################################ + +PYTHON_PYSMB_VERSION = 1.2.9 +PYTHON_PYSMB_SOURCE = pysmb-$(PYTHON_PYSMB_VERSION).tar.gz +PYTHON_PYSMB_SITE = https://miketeo.net/files/Projects/pysmb +PYTHON_PYSMB_LICENSE = Libpng +PYTHON_PYSMB_LICENSE_FILES = LICENSE +PYTHON_PYSMB_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-pysmi/Config.in b/package/python-pysmi/Config.in new file mode 100644 index 00000000..2e4453d8 --- /dev/null +++ b/package/python-pysmi/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PYSMI + bool "python-pysmi" + select BR2_PACKAGE_PYTHON_PLY # runtime + help + SNMP SMI/MIB Parser. + + https://github.com/etingof/pysmi diff --git a/package/python-pysmi/python-pysmi.hash b/package/python-pysmi/python-pysmi.hash new file mode 100644 index 00000000..bb13f0ef --- /dev/null +++ b/package/python-pysmi/python-pysmi.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pysmi/json +md5 10a9dd140ad512eed9f37344df83ce9d pysmi-0.3.4.tar.gz +sha256 bd15a15020aee8376cab5be264c26330824a8b8164ed0195bd402dd59e4e8f7c pysmi-0.3.4.tar.gz +# Locally computed sha256 checksums +sha256 c43704eafcfa2bc33e56168f2b498c3c34a1d7865855626a52b5af411fc5837f LICENSE.rst diff --git a/package/python-pysmi/python-pysmi.mk b/package/python-pysmi/python-pysmi.mk new file mode 100644 index 00000000..2aee27b1 --- /dev/null +++ b/package/python-pysmi/python-pysmi.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pysmi +# +################################################################################ + +PYTHON_PYSMI_VERSION = 0.3.4 +PYTHON_PYSMI_SOURCE = pysmi-$(PYTHON_PYSMI_VERSION).tar.gz +PYTHON_PYSMI_SITE = https://files.pythonhosted.org/packages/52/42/ddaeb06ff551672b17b77f81bc2e26b7c6060b28fe1552226edc6476ce37 +PYTHON_PYSMI_SETUP_TYPE = setuptools +PYTHON_PYSMI_LICENSE = BSD-2-Clause +PYTHON_PYSMI_LICENSE_FILES = LICENSE.rst + +$(eval $(python-package)) diff --git a/package/python-pysnmp-mibs/Config.in b/package/python-pysnmp-mibs/Config.in new file mode 100644 index 00000000..521d95ea --- /dev/null +++ b/package/python-pysnmp-mibs/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_PYSNMP_MIBS + bool "python-pysnmp-mibs" + depends on BR2_INSTALL_LIBSTDCPP # pysnmp -> pyasn + select BR2_PACKAGE_PYTHON_PYSNMP + help + PySNMP MIBs is a set of IETF & IANA MIBs pre-compiled and + packaged to simplify their use with the PySNMP library. + + http://pysnmp.sf.net + +comment "python-pysnmp-libs needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/python-pysnmp-mibs/python-pysnmp-mibs.hash b/package/python-pysnmp-mibs/python-pysnmp-mibs.hash new file mode 100644 index 00000000..52a507f4 --- /dev/null +++ b/package/python-pysnmp-mibs/python-pysnmp-mibs.hash @@ -0,0 +1,5 @@ +# md5 from https://pypi.python.org/pypi/pysnmp-mibs/json +md5 01845c4595d87d3c3485c0449616cbda pysnmp-mibs-0.1.6.tar.gz +# Locally computed +sha256 00fa321ca598e8a14c0ad98702bf10fb5e9d57b7d06bb99dc818fea07683720c pysnmp-mibs-0.1.6.tar.gz +sha256 361eda483f7fac1f8cca4e16c340fa07a1cad2bf1200577a01075745233b406c LICENSE.txt diff --git a/package/python-pysnmp-mibs/python-pysnmp-mibs.mk b/package/python-pysnmp-mibs/python-pysnmp-mibs.mk new file mode 100644 index 00000000..9772b78c --- /dev/null +++ b/package/python-pysnmp-mibs/python-pysnmp-mibs.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-pysnmp-mibs +# +################################################################################ + +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/bf/7c/99ab192af934ed5d41ceef92a1b949b41652f29b46241b902ffec55642f4 +PYTHON_PYSNMP_MIBS_SETUP_TYPE = setuptools +PYTHON_PYSNMP_MIBS_LICENSE = BSD-3-Clause +PYTHON_PYSNMP_MIBS_LICENSE_FILES = LICENSE.txt + +PYTHON_PYSNMP_MIBS_DEPENDENCIES = python-pysnmp + +$(eval $(python-package)) diff --git a/package/python-pysnmp/Config.in b/package/python-pysnmp/Config.in new file mode 100644 index 00000000..a034b168 --- /dev/null +++ b/package/python-pysnmp/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_PYSNMP + bool "python-pysnmp" + select BR2_PACKAGE_PYTHON_PYSMI # runtime + select BR2_PACKAGE_PYTHON_PYCRYPTODOMEX # runtime + select BR2_PACKAGE_PYTHON_PYASN1 # runtime + help + PySNMP is a cross-platform, pure-Python SNMP engine + implementation. + + http://pysnmp.sf.net diff --git a/package/python-pysnmp/python-pysnmp.hash b/package/python-pysnmp/python-pysnmp.hash new file mode 100644 index 00000000..3b0af1af --- /dev/null +++ b/package/python-pysnmp/python-pysnmp.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pysnmp/json +md5 2222880259daf6e2cb322e938c818276 pysnmp-4.4.12.tar.gz +sha256 0c3dbef2f958caca96071fe5c19de43e9c1b0484ab02a0cf08b190bcee768ba9 pysnmp-4.4.12.tar.gz +# Locally computed sha256 checksums +sha256 d0b2edd772164395320fc5ad7dfaa9806fa038fb29762b347c549891d7a79237 LICENSE.rst diff --git a/package/python-pysnmp/python-pysnmp.mk b/package/python-pysnmp/python-pysnmp.mk new file mode 100644 index 00000000..520ce287 --- /dev/null +++ b/package/python-pysnmp/python-pysnmp.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pysnmp +# +################################################################################ + +PYTHON_PYSNMP_VERSION = 4.4.12 +PYTHON_PYSNMP_SOURCE = pysnmp-$(PYTHON_PYSNMP_VERSION).tar.gz +PYTHON_PYSNMP_SITE = https://files.pythonhosted.org/packages/4e/75/72f64c451bf5884715f84f8217b69b4025da0b67628d611cd14a5b7db217 +PYTHON_PYSNMP_SETUP_TYPE = setuptools +PYTHON_PYSNMP_LICENSE = BSD-3-Clause +PYTHON_PYSNMP_LICENSE_FILES = LICENSE.rst + +$(eval $(python-package)) diff --git a/package/python-pysocks/Config.in b/package/python-pysocks/Config.in new file mode 100644 index 00000000..cd38d4d3 --- /dev/null +++ b/package/python-pysocks/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYSOCKS + bool "python-pysocks" + help + A Python SOCKS client module. + + https://github.com/Anorov/PySocks diff --git a/package/python-pysocks/python-pysocks.hash b/package/python-pysocks/python-pysocks.hash new file mode 100644 index 00000000..2c1f13d6 --- /dev/null +++ b/package/python-pysocks/python-pysocks.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pysocks/json +md5 89b1a6865c61bae67a32417517612ee6 PySocks-1.7.1.tar.gz +sha256 3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0 PySocks-1.7.1.tar.gz +# Locally computed sha256 checksums +sha256 7027e214e014eb78b7adcc1ceda5aca713a79fc4f6a0c52c9da5b3e707e6ffe9 LICENSE diff --git a/package/python-pysocks/python-pysocks.mk b/package/python-pysocks/python-pysocks.mk new file mode 100644 index 00000000..ccb70fc5 --- /dev/null +++ b/package/python-pysocks/python-pysocks.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pysocks +# +################################################################################ + +PYTHON_PYSOCKS_VERSION = 1.7.1 +PYTHON_PYSOCKS_SOURCE = PySocks-$(PYTHON_PYSOCKS_VERSION).tar.gz +PYTHON_PYSOCKS_SITE = https://files.pythonhosted.org/packages/bd/11/293dd436aea955d45fc4e8a35b6ae7270f5b8e00b53cf6c024c83b657a11 +PYTHON_PYSOCKS_LICENSE = BSD-3-Clause +PYTHON_PYSOCKS_LICENSE_FILES = LICENSE +PYTHON_PYSOCKS_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-pyspnego/Config.in b/package/python-pyspnego/Config.in new file mode 100644 index 00000000..7533b725 --- /dev/null +++ b/package/python-pyspnego/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_PYSPNEGO + bool "python-pyspnego" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-cryptography + select BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime + help + Windows Negotiate Authentication Client and Server. + + https://github.com/jborean93/pyspnego diff --git a/package/python-pyspnego/python-pyspnego.hash b/package/python-pyspnego/python-pyspnego.hash new file mode 100644 index 00000000..dc808d42 --- /dev/null +++ b/package/python-pyspnego/python-pyspnego.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pyspnego/json +md5 b633cab73a1481c5dbc2d6f6857569d0 pyspnego-0.10.2.tar.gz +sha256 9a22c23aeae7b4424fdb2482450d3f8302ac012e2644e1cfe735cf468fcd12ed pyspnego-0.10.2.tar.gz +# Locally computed sha256 checksums +sha256 286517c93031c343f809f64b38563a783614b762e1367242af6cdd4107335471 LICENSE diff --git a/package/python-pyspnego/python-pyspnego.mk b/package/python-pyspnego/python-pyspnego.mk new file mode 100644 index 00000000..740e6eec --- /dev/null +++ b/package/python-pyspnego/python-pyspnego.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyspnego +# +################################################################################ + +PYTHON_PYSPNEGO_VERSION = 0.10.2 +PYTHON_PYSPNEGO_SOURCE = pyspnego-$(PYTHON_PYSPNEGO_VERSION).tar.gz +PYTHON_PYSPNEGO_SITE = https://files.pythonhosted.org/packages/3a/c3/401a5ae889b51f80e91474b6acda7dae8d704c6fe8424fd40e0ff0702812 +PYTHON_PYSPNEGO_SETUP_TYPE = setuptools +PYTHON_PYSPNEGO_LICENSE = MIT +PYTHON_PYSPNEGO_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-pytablereader/Config.in b/package/python-pytablereader/Config.in new file mode 100644 index 00000000..00be1851 --- /dev/null +++ b/package/python-pytablereader/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_PYTHON_PYTABLEREADER + bool "python-pytablereader" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-jsonschema -> python-rpds-py + select BR2_PACKAGE_PYTHON_BEAUTIFULSOUP4 # runtime + select BR2_PACKAGE_PYTHON_DATAPROPERTY # runtime + select BR2_PACKAGE_PYTHON_JSONSCHEMA # runtime + select BR2_PACKAGE_PYTHON_MBSTRDECODER # runtime + select BR2_PACKAGE_PYTHON_PATHPY # runtime + select BR2_PACKAGE_PYTHON_PATHVALIDATE # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_TABLEDATA # runtime + select BR2_PACKAGE_PYTHON_TYPEPY # 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/package/python-pytablereader/python-pytablereader.hash b/package/python-pytablereader/python-pytablereader.hash new file mode 100644 index 00000000..2034cfd6 --- /dev/null +++ b/package/python-pytablereader/python-pytablereader.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pytablereader/json +md5 8d732b706186666a4c28d14927c26754 pytablereader-0.31.3.tar.gz +sha256 e292b81ecd96546fe0f53d9c83e716a4682d07d7ead6d9be8beb14ab0591df11 pytablereader-0.31.3.tar.gz +# Locally computed sha256 checksums +sha256 7588265082eed5e9f4afd5090c57e610b740ec547b16aaaab739ba07c5eefb15 LICENSE diff --git a/package/python-pytablereader/python-pytablereader.mk b/package/python-pytablereader/python-pytablereader.mk new file mode 100644 index 00000000..daa484d3 --- /dev/null +++ b/package/python-pytablereader/python-pytablereader.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pytablereader +# +################################################################################ + +PYTHON_PYTABLEREADER_VERSION = 0.31.3 +PYTHON_PYTABLEREADER_SOURCE = pytablereader-$(PYTHON_PYTABLEREADER_VERSION).tar.gz +PYTHON_PYTABLEREADER_SITE = https://files.pythonhosted.org/packages/b5/c8/67590578e27cb1716c7b71291946d685b5bf63fbfe7a254a7cb3f6f8aeab +PYTHON_PYTABLEREADER_SETUP_TYPE = setuptools +PYTHON_PYTABLEREADER_LICENSE = MIT +PYTHON_PYTABLEREADER_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-pytablewriter/Config.in b/package/python-pytablewriter/Config.in new file mode 100644 index 00000000..e0252625 --- /dev/null +++ b/package/python-pytablewriter/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_PYTHON_PYTABLEWRITER + bool "python-pytablewriter" + select BR2_PACKAGE_PYTHON_DATAPROPERTY # runtime + select BR2_PACKAGE_PYTHON_MBSTRDECODER # runtime + select BR2_PACKAGE_PYTHON_PATHVALIDATE # runtime + select BR2_PACKAGE_PYTHON_TABLEDATA # runtime + select BR2_PACKAGE_PYTHON_TCOLORPY # runtime + select BR2_PACKAGE_PYTHON_TYPEPY # runtime + help + pytablewriter is a Python library to write a table in + various formats: AsciiDoc / CSV / Elasticsearch / HTML / + JavaScript / JSON / LaTeX / LDJSON / LTSV / Markdown / + MediaWiki / NumPy / Excel / Pandas / Python / + reStructuredText / SQLite / TOML / TSV / YAML. + + https://github.com/thombashi/pytablewriter diff --git a/package/python-pytablewriter/python-pytablewriter.hash b/package/python-pytablewriter/python-pytablewriter.hash new file mode 100644 index 00000000..d4432ee1 --- /dev/null +++ b/package/python-pytablewriter/python-pytablewriter.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pytablewriter/json +md5 4e3d421d026f30fadec4ac1670e524ee pytablewriter-1.2.0.tar.gz +sha256 0204a4bb684a22140d640f2599f09e137bcdc18b3dd49426f4a555016e246b46 pytablewriter-1.2.0.tar.gz +# Locally computed sha256 checksums +sha256 a93d75bcb0774e2990106380cadad6dcb2de193c55d435ffc56ba345a08b1dc2 LICENSE diff --git a/package/python-pytablewriter/python-pytablewriter.mk b/package/python-pytablewriter/python-pytablewriter.mk new file mode 100644 index 00000000..d8bc3615 --- /dev/null +++ b/package/python-pytablewriter/python-pytablewriter.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pytablewriter +# +################################################################################ + +PYTHON_PYTABLEWRITER_VERSION = 1.2.0 +PYTHON_PYTABLEWRITER_SOURCE = pytablewriter-$(PYTHON_PYTABLEWRITER_VERSION).tar.gz +PYTHON_PYTABLEWRITER_SITE = https://files.pythonhosted.org/packages/cc/a9/76aa4430d32ae10b23e4347006dc4c67a3e2a00621e4bb38a60c1a77f15e +PYTHON_PYTABLEWRITER_SETUP_TYPE = setuptools +PYTHON_PYTABLEWRITER_LICENSE = MIT +PYTHON_PYTABLEWRITER_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-pytest-asyncio/Config.in b/package/python-pytest-asyncio/Config.in new file mode 100644 index 00000000..2088a8bd --- /dev/null +++ b/package/python-pytest-asyncio/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PYTEST_ASYNCIO + bool "python-pytest-asyncio" + select BR2_PACKAGE_PYTHON_PYTEST # runtime + help + Pytest support for asyncio. + + https://github.com/pytest-dev/pytest-asyncio diff --git a/package/python-pytest-asyncio/python-pytest-asyncio.hash b/package/python-pytest-asyncio/python-pytest-asyncio.hash new file mode 100644 index 00000000..53bf6234 --- /dev/null +++ b/package/python-pytest-asyncio/python-pytest-asyncio.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pytest-asyncio/json +md5 e419d6fbc626b366814b7b698fa79236 pytest-asyncio-0.23.6.tar.gz +sha256 ffe523a89c1c222598c76856e76852b787504ddb72dd5d9b6617ffa8aa2cde5f pytest-asyncio-0.23.6.tar.gz +# Locally computed sha256 checksums +sha256 a8ad31b1c3f40dca5a84119351b8fa8ddc868edd77fad8a8ebf6d8f2d16fa4ae LICENSE diff --git a/package/python-pytest-asyncio/python-pytest-asyncio.mk b/package/python-pytest-asyncio/python-pytest-asyncio.mk new file mode 100644 index 00000000..88f93d83 --- /dev/null +++ b/package/python-pytest-asyncio/python-pytest-asyncio.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-pytest-asyncio +# +################################################################################ + +PYTHON_PYTEST_ASYNCIO_VERSION = 0.23.6 +PYTHON_PYTEST_ASYNCIO_SOURCE = pytest-asyncio-$(PYTHON_PYTEST_ASYNCIO_VERSION).tar.gz +PYTHON_PYTEST_ASYNCIO_SITE = https://files.pythonhosted.org/packages/cd/ef/80107b9e939875ad613c705d99d91e4510dcf5fed29613ac9aecbcba0a8d +PYTHON_PYTEST_ASYNCIO_SETUP_TYPE = setuptools +PYTHON_PYTEST_ASYNCIO_LICENSE = Apache-2.0 +PYTHON_PYTEST_ASYNCIO_LICENSE_FILES = LICENSE +PYTHON_PYTEST_ASYNCIO_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-pytest/Config.in b/package/python-pytest/Config.in new file mode 100644 index 00000000..912dc494 --- /dev/null +++ b/package/python-pytest/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_PYTEST + bool "python-pytest" + select BR2_PACKAGE_PYTHON_INICONFIG # runtime + select BR2_PACKAGE_PYTHON_PACKAGING # runtime + select BR2_PACKAGE_PYTHON_PLUGGY # runtime + select BR2_PACKAGE_PYTHON3_PYEXPAT # runtime + select BR2_PACKAGE_PYTHON3_ZLIB # runtime + help + pytest is a framework that makes building simple and scalable + tests easy. Tests are expressive and readable—no boilerplate + code required. + + https://docs.pytest.org/en/latest/ diff --git a/package/python-pytest/python-pytest.hash b/package/python-pytest/python-pytest.hash new file mode 100644 index 00000000..1d5a8742 --- /dev/null +++ b/package/python-pytest/python-pytest.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pytest/json +md5 6a85eccffeb0fa15c104f408d82ce7fa pytest-8.1.1.tar.gz +sha256 ac978141a75948948817d360297b7aae0fcb9d6ff6bc9ec6d514b85d5a65c044 pytest-8.1.1.tar.gz +# Locally computed sha256 checksums +sha256 ca836a5f9ecca3b2f350230faa20a48fb8b145653b5568d784862df864706b9b LICENSE diff --git a/package/python-pytest/python-pytest.mk b/package/python-pytest/python-pytest.mk new file mode 100644 index 00000000..90dc91b6 --- /dev/null +++ b/package/python-pytest/python-pytest.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-pytest +# +################################################################################ + +PYTHON_PYTEST_VERSION = 8.1.1 +PYTHON_PYTEST_SOURCE = pytest-$(PYTHON_PYTEST_VERSION).tar.gz +PYTHON_PYTEST_SITE = https://files.pythonhosted.org/packages/30/b7/7d44bbc04c531dcc753056920e0988032e5871ac674b5a84cb979de6e7af +PYTHON_PYTEST_SETUP_TYPE = setuptools +PYTHON_PYTEST_LICENSE = MIT +PYTHON_PYTEST_LICENSE_FILES = LICENSE +PYTHON_PYTEST_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-pythran/python-pythran.hash b/package/python-pythran/python-pythran.hash new file mode 100644 index 00000000..a46825c9 --- /dev/null +++ b/package/python-pythran/python-pythran.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/pythran/json +md5 cc6fa05e583733182d06d2e41e03cc10 pythran-0.15.0.tar.gz +sha256 f9bc61bcb96df2cd4b578abc5a62dfb3fbb0b0ef02c264513dfb615c5f87871c pythran-0.15.0.tar.gz +# Locally computed sha256 checksums +sha256 0be9f14c66a9a3cb66d5263a6495437862ce0c9cdf60d4a6c36d1e51b1244c6e LICENSE +sha256 e1c0ed0a99e4462016d79d835f1f479b78c4d4a07fe66598e97f449503ffd178 docs/LICENSE.rst diff --git a/package/python-pythran/python-pythran.mk b/package/python-pythran/python-pythran.mk new file mode 100644 index 00000000..43853a51 --- /dev/null +++ b/package/python-pythran/python-pythran.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# python-pythran +# +################################################################################ + +PYTHON_PYTHRAN_VERSION = 0.15.0 +PYTHON_PYTHRAN_SOURCE = pythran-$(PYTHON_PYTHRAN_VERSION).tar.gz +PYTHON_PYTHRAN_SITE = https://files.pythonhosted.org/packages/82/31/cc6fd7a2b91efc6cdb03e7c42df895b4a65a8f049b074579d45d1def746f +PYTHON_PYTHRAN_SETUP_TYPE = setuptools +PYTHON_PYTHRAN_LICENSE = BSD-3-Clause +PYTHON_PYTHRAN_LICENSE_FILES = LICENSE docs/LICENSE.rst +HOST_PYTHON_PYTHRAN_DEPENDENCIES = \ + host-python-beniget \ + host-python-gast \ + host-python-numpy \ + host-python-ply + +$(eval $(host-python-package)) diff --git a/package/python-pytrie/Config.in b/package/python-pytrie/Config.in new file mode 100644 index 00000000..15663847 --- /dev/null +++ b/package/python-pytrie/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PYTRIE + bool "python-pytrie" + select BR2_PACKAGE_PYTHON_SORTEDCONTAINERS # runtime + help + A pure Python implementation of the trie data structure. + + https://pypi.python.org/pypi/PyTrie diff --git a/package/python-pytrie/python-pytrie.hash b/package/python-pytrie/python-pytrie.hash new file mode 100644 index 00000000..ead479ee --- /dev/null +++ b/package/python-pytrie/python-pytrie.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pytrie/json +md5 0cbe20db2361dcc99bdcba7acacd34e6 PyTrie-0.4.0.tar.gz +sha256 8f4488f402d3465993fb6b6efa09866849ed8cda7903b50647b7d0342b805379 PyTrie-0.4.0.tar.gz +# Locally computed sha256 checksums +sha256 97f85c2ba0d856cf5f7e5db587af7299233db2e502980eb655ace28343541d50 LICENSE diff --git a/package/python-pytrie/python-pytrie.mk b/package/python-pytrie/python-pytrie.mk new file mode 100644 index 00000000..7e55579d --- /dev/null +++ b/package/python-pytrie/python-pytrie.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pytrie +# +################################################################################ + +PYTHON_PYTRIE_VERSION = 0.4.0 +PYTHON_PYTRIE_SOURCE = PyTrie-$(PYTHON_PYTRIE_VERSION).tar.gz +PYTHON_PYTRIE_LICENSE = BSD-3-Clause +PYTHON_PYTRIE_LICENSE_FILES = LICENSE +PYTHON_PYTRIE_SITE = https://files.pythonhosted.org/packages/d3/19/15ec77ab9c85f7c36eb590d6ab7dd529f8c8516c0e2219f1a77a99d7ee77 +PYTHON_PYTRIE_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-pytz/Config.in b/package/python-pytz/Config.in new file mode 100644 index 00000000..949fbd3c --- /dev/null +++ b/package/python-pytz/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYTZ + bool "python-pytz" + help + World timezone definitions, modern and historical. + + http://pythonhosted.org/pytz diff --git a/package/python-pytz/python-pytz.hash b/package/python-pytz/python-pytz.hash new file mode 100644 index 00000000..a8bfe678 --- /dev/null +++ b/package/python-pytz/python-pytz.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pytz/json +md5 b26bb090d1fe96064019bf7068eeb801 pytz-2024.1.tar.gz +sha256 2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812 pytz-2024.1.tar.gz +# Locally computed sha256 checksums +sha256 be8b1a37ebe26c592a90f6c0eb33103a7f383ce2f4d7498c0af9a526990a07b8 LICENSE.txt diff --git a/package/python-pytz/python-pytz.mk b/package/python-pytz/python-pytz.mk new file mode 100644 index 00000000..300e26be --- /dev/null +++ b/package/python-pytz/python-pytz.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-pytz +# +################################################################################ + +PYTHON_PYTZ_VERSION = 2024.1 +PYTHON_PYTZ_SOURCE = pytz-$(PYTHON_PYTZ_VERSION).tar.gz +PYTHON_PYTZ_SITE = https://files.pythonhosted.org/packages/90/26/9f1f00a5d021fff16dee3de13d43e5e978f3d58928e129c3a62cf7eb9738 +PYTHON_PYTZ_SETUP_TYPE = setuptools +PYTHON_PYTZ_LICENSE = MIT +PYTHON_PYTZ_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-pyudev/0001-Workaround-finding-libudev-on-systems-without-ldconf.patch b/package/python-pyudev/0001-Workaround-finding-libudev-on-systems-without-ldconf.patch new file mode 100644 index 00000000..26f1ef63 --- /dev/null +++ b/package/python-pyudev/0001-Workaround-finding-libudev-on-systems-without-ldconf.patch @@ -0,0 +1,51 @@ +From e86a1c199d45c9751da67f947af202927dee07f8 Mon Sep 17 00:00:00 2001 +From: Yegor Yefremov +Date: Thu, 10 Dec 2015 08:44:55 +0100 +Subject: [PATCH] Workaround finding libudev on systems without ldconf + +This patch tries to load libudev.so directly without relying on +Python's find_library(). find_library() fails on systems +without library cache mechanism. + +Taken from pyudev issue 117 discussion: +https://github.com/pyudev/pyudev/pull/117 + +Signed-off-by: Yegor Yefremov +[Marcin: adjust to 0.22.0] +Signed-off-by: Marcin Niestroj +[Fabrice: Use %-formatting instead of f-string for python 2] +Signed-off-by: Fabrice Fontaine +--- + src/pyudev/_ctypeslib/utils.py | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/pyudev/_ctypeslib/utils.py b/src/pyudev/_ctypeslib/utils.py +index 9dffb3c..aa9942f 100644 +--- a/src/pyudev/_ctypeslib/utils.py ++++ b/src/pyudev/_ctypeslib/utils.py +@@ -28,7 +28,7 @@ + """ + + # isort: STDLIB +-from ctypes import CDLL ++from ctypes import cdll, CDLL + from ctypes.util import find_library + + +@@ -50,10 +50,10 @@ def load_ctypes_library(name, signatures, error_checkers): + :rtype: ctypes.CDLL + :raises ImportError: if the library is not found + """ +- library_name = find_library(name) +- if not library_name: ++ try: ++ lib = cdll.LoadLibrary('lib%s.so' % name) ++ except OSError: + raise ImportError("No library named %s" % name) +- lib = CDLL(library_name, use_errno=True) + # Add function signatures + for funcname, signature in signatures.items(): + function = getattr(lib, funcname, None) +-- +2.29.1 + diff --git a/package/python-pyudev/Config.in b/package/python-pyudev/Config.in new file mode 100644 index 00000000..aa98c2cc --- /dev/null +++ b/package/python-pyudev/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_PYUDEV + bool "python-pyudev" + depends on BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_PYTHON3_ZLIB # runtime + help + pyudev is a LGPL licenced, pure Python 2/3 binding to + libudev, the device and hardware management and information + library of Linux. + + https://github.com/pyudev/pyudev + +comment "python-pyudev needs udev /dev management" + depends on !BR2_PACKAGE_HAS_UDEV diff --git a/package/python-pyudev/python-pyudev.hash b/package/python-pyudev/python-pyudev.hash new file mode 100644 index 00000000..72eb323e --- /dev/null +++ b/package/python-pyudev/python-pyudev.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pyudev/json +md5 fecaabe9eaa890d2173c7b49ab63a412 pyudev-0.24.1.tar.gz +sha256 75e54d37218f5ac45b0da1f0fd9cc5e526a3cac3ef1cfad410cf7ab338b01471 pyudev-0.24.1.tar.gz +# Locally computed sha256 checksums +sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 COPYING diff --git a/package/python-pyudev/python-pyudev.mk b/package/python-pyudev/python-pyudev.mk new file mode 100644 index 00000000..53d60572 --- /dev/null +++ b/package/python-pyudev/python-pyudev.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyudev +# +################################################################################ + +PYTHON_PYUDEV_VERSION = 0.24.1 +PYTHON_PYUDEV_SOURCE = pyudev-$(PYTHON_PYUDEV_VERSION).tar.gz +PYTHON_PYUDEV_SITE = https://files.pythonhosted.org/packages/20/b6/16961ac3575575260c72928f17df9c99c2a696871e486965ec6e2fa2aff4 +PYTHON_PYUDEV_LICENSE = LGPL-2.1+ +PYTHON_PYUDEV_LICENSE_FILES = COPYING +PYTHON_PYUDEV_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-pyusb/Config.in b/package/python-pyusb/Config.in new file mode 100644 index 00000000..bba3480a --- /dev/null +++ b/package/python-pyusb/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_PYTHON_PYUSB + bool "python-pyusb" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + The PyUSB module provides easy access to the Universal + Serial Bus (USB) from Python. + + http://sourceforge.net/apps/trac/pyusb/ + +comment "python-pyusb needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/python-pyusb/python-pyusb.hash b/package/python-pyusb/python-pyusb.hash new file mode 100644 index 00000000..f08b212b --- /dev/null +++ b/package/python-pyusb/python-pyusb.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pyusb/json +md5 880008dff32dac8f58076b4e534492d9 pyusb-1.2.1.tar.gz +sha256 a4cc7404a203144754164b8b40994e2849fde1cfff06b08492f12fff9d9de7b9 pyusb-1.2.1.tar.gz +# Locally computed sha256 checksums +sha256 03e39fdcee9c18f2f9d0c3500a993ddeac050695eb81070ea41347587c76a7fe LICENSE diff --git a/package/python-pyusb/python-pyusb.mk b/package/python-pyusb/python-pyusb.mk new file mode 100644 index 00000000..2f4f9581 --- /dev/null +++ b/package/python-pyusb/python-pyusb.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-pyusb +# +################################################################################ + +PYTHON_PYUSB_VERSION = 1.2.1 +PYTHON_PYUSB_SOURCE = pyusb-$(PYTHON_PYUSB_VERSION).tar.gz +PYTHON_PYUSB_SITE = https://files.pythonhosted.org/packages/d9/6e/433a5614132576289b8643fe598dd5d51b16e130fd591564be952e15bb45 +PYTHON_PYUSB_LICENSE = BSD-3-Clause +PYTHON_PYUSB_LICENSE_FILES = LICENSE +PYTHON_PYUSB_SETUP_TYPE = setuptools +PYTHON_PYUSB_DEPENDENCIES = host-python-setuptools-scm libusb + +$(eval $(python-package)) diff --git a/package/python-pyyaml/Config.in b/package/python-pyyaml/Config.in new file mode 100644 index 00000000..45e818b7 --- /dev/null +++ b/package/python-pyyaml/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PYYAML + bool "python-pyyaml" + select BR2_PACKAGE_LIBYAML + help + The PyYAML package contains binding to the libyaml API. + + http://pyyaml.org/ diff --git a/package/python-pyyaml/Config.in.host b/package/python-pyyaml/Config.in.host new file mode 100644 index 00000000..1e8382ef --- /dev/null +++ b/package/python-pyyaml/Config.in.host @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HOST_PYTHON_PYYAML + bool "host python-pyyaml" + help + The host PyYAML package contains binding to the libyaml API. + + http://pyyaml.org/ diff --git a/package/python-pyyaml/python-pyyaml.hash b/package/python-pyyaml/python-pyyaml.hash new file mode 100644 index 00000000..e1f9412c --- /dev/null +++ b/package/python-pyyaml/python-pyyaml.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/PyYAML/json +md5 c9246277af2d9a13b7018af267a0831a PyYAML-6.0.1.tar.gz +sha256 bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43 PyYAML-6.0.1.tar.gz +# Locally computed sha256 checksums +sha256 8d3928f9dc4490fd635707cb88eb26bd764102a7282954307d3e5167a577e8a4 LICENSE diff --git a/package/python-pyyaml/python-pyyaml.mk b/package/python-pyyaml/python-pyyaml.mk new file mode 100644 index 00000000..40a1c257 --- /dev/null +++ b/package/python-pyyaml/python-pyyaml.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# python-pyyaml +# +################################################################################ + +PYTHON_PYYAML_VERSION = 6.0.1 +PYTHON_PYYAML_SOURCE = PyYAML-$(PYTHON_PYYAML_VERSION).tar.gz +PYTHON_PYYAML_SITE = https://files.pythonhosted.org/packages/cd/e5/af35f7ea75cf72f2cd079c95ee16797de7cd71f29ea7c68ae5ce7be1eda0 +PYTHON_PYYAML_SETUP_TYPE = setuptools +PYTHON_PYYAML_LICENSE = MIT +PYTHON_PYYAML_LICENSE_FILES = LICENSE +PYTHON_PYYAML_CPE_ID_VENDOR = pyyaml +PYTHON_PYYAML_CPE_ID_PRODUCT = pyyaml +PYTHON_PYYAML_DEPENDENCIES = host-python-cython libyaml +PYTHON_PYYAML_ENV = PYYAML_FORCE_CYTHON=1 +HOST_PYTHON_PYYAML_DEPENDENCIES = host-libyaml host-python-cython +HOST_PYTHON_PYYAML_ENV = PYYAML_FORCE_CYTHON=1 + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-pyzmq/0001-detect.py-fix-the-ZMQ-version-check-to-the-ZMQ-versi.patch b/package/python-pyzmq/0001-detect.py-fix-the-ZMQ-version-check-to-the-ZMQ-versi.patch new file mode 100644 index 00000000..18553582 --- /dev/null +++ b/package/python-pyzmq/0001-detect.py-fix-the-ZMQ-version-check-to-the-ZMQ-versi.patch @@ -0,0 +1,67 @@ +From 8eae1193457f72899f9cc2254ae1489026df9bb6 Mon Sep 17 00:00:00 2001 +From: Michael Rommel +Date: Sat, 10 Aug 2013 00:44:35 +0200 +Subject: [PATCH] detect.py: fix the ZMQ version check to the ZMQ version of + the buildroot + +The setup.py script tries to compile a test C program and runs it, to +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. + +Instead of trying to run the compiled test program to get the version +dynamically, return the version of the buildroot environment. + +Written by Michael Rommel, modified for version 16.0.2 by Lionel +Flandrin. + +Modified for version 18.0.2 by Asaf Kahlon + +Modified for version 24.0.1 by James Hilliard + +Signed-off-by: Michael Rommel +Signed-off-by: Lionel Flandrin +Signed-off-by: Asaf Kahlon +Signed-off-by: James Hilliard +--- + buildutils/detect.py | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +diff --git a/buildutils/detect.py b/buildutils/detect.py +index 842e3b14..e2eca744 100644 +--- a/buildutils/detect.py ++++ b/buildutils/detect.py +@@ -120,18 +120,20 @@ def detect_zmq(basedir, compiler, **compiler_attrs): + + cc = get_compiler(compiler=compiler, **compiler_attrs) + efile = test_compilation(cfile, compiler=cc, **compiler_attrs) +- patch_lib_paths(efile, cc.library_dirs) ++ #patch_lib_paths(efile, cc.library_dirs) + + # add library dirs to %PATH% for windows + env = os.environ.copy() + if sys.platform.startswith("win"): + env["PATH"] = os.pathsep.join([env["PATH"]] + cc.library_dirs) + +- rc, so, se = get_output_error([efile], env=env) +- if rc: +- msg = f"Error running version detection script:\n{so}\n{se}" +- logging.error(msg) +- raise OSError(msg) ++ #rc, so, se = get_output_error([efile], env=env) ++ #if rc: ++ # msg = f"Error running version detection script:\n{so}\n{se}" ++ # logging.error(msg) ++ # raise OSError(msg) ++ ++ so = "vers: ##ZEROMQ_VERSION##" + + handlers = {'vers': lambda val: tuple(int(v) for v in val.split('.'))} + +-- +2.34.1 + diff --git a/package/python-pyzmq/Config.in b/package/python-pyzmq/Config.in new file mode 100644 index 00000000..f8ce52f8 --- /dev/null +++ b/package/python-pyzmq/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_PYZMQ + bool "python-pyzmq" + depends on BR2_INSTALL_LIBSTDCPP # zeromq + depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq + select BR2_PACKAGE_ZEROMQ + help + This package contains the python language binding for zeromq. + + http://zeromq.org/bindings:python + +comment "python-pyzmq needs a toolchain w/ C++, threads" + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) diff --git a/package/python-pyzmq/python-pyzmq.hash b/package/python-pyzmq/python-pyzmq.hash new file mode 100644 index 00000000..3c91d259 --- /dev/null +++ b/package/python-pyzmq/python-pyzmq.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/pyzmq/json +md5 280afc0992b0a9f109dafc1e672d2f26 pyzmq-25.1.2.tar.gz +sha256 93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226 pyzmq-25.1.2.tar.gz +# Locally computed sha256 checksums +sha256 c0cf5f5c03f8d6772f7a271df1cb671054578bd3d79527c72fc1f28f8cc72a7a LICENSE.BSD +sha256 5f1dac83d6c25674004810ec9e54b304ccbb8303ac5961813b09235966abfd48 LICENSE.LESSER diff --git a/package/python-pyzmq/python-pyzmq.mk b/package/python-pyzmq/python-pyzmq.mk new file mode 100644 index 00000000..48a298b2 --- /dev/null +++ b/package/python-pyzmq/python-pyzmq.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# python-pyzmq +# +################################################################################ + +PYTHON_PYZMQ_VERSION = 25.1.2 +PYTHON_PYZMQ_SOURCE = pyzmq-$(PYTHON_PYZMQ_VERSION).tar.gz +PYTHON_PYZMQ_SITE = https://files.pythonhosted.org/packages/3a/33/1a3683fc9a4bd64d8ccc0290da75c8f042184a1a49c146d28398414d3341 +PYTHON_PYZMQ_LICENSE = LGPL-3.0+, BSD-3-Clause, Apache-2.0 +# Apache license only online: http://www.apache.org/licenses/LICENSE-2.0 +PYTHON_PYZMQ_LICENSE_FILES = LICENSE.LESSER LICENSE.BSD +PYTHON_PYZMQ_SETUP_TYPE = setuptools +PYTHON_PYZMQ_BUILD_OPTS = -C--build-option=--zmq=$(STAGING_DIR)/usr +PYTHON_PYZMQ_DEPENDENCIES = \ + host-python-cython \ + host-python-packaging \ + host-python-setuptools-scm \ + zeromq + +# Due to issues with cross-compiling, hardcode to the zeromq in BR +define PYTHON_PYZMQ_PATCH_ZEROMQ_VERSION + $(SED) 's/##ZEROMQ_VERSION##/$(ZEROMQ_VERSION)/' \ + $(@D)/buildutils/detect.py +endef + +PYTHON_PYZMQ_POST_PATCH_HOOKS += PYTHON_PYZMQ_PATCH_ZEROMQ_VERSION + +ifeq ($(BR2_PACKAGE_ZEROMQ_DRAFTS),y) +PYTHON_PYZMQ_BUILD_OPTS += -C--build-option=--enable-drafts +endif + +$(eval $(python-package)) diff --git a/package/python-qrcode/Config.in b/package/python-qrcode/Config.in new file mode 100644 index 00000000..6e63d83e --- /dev/null +++ b/package/python-qrcode/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_PYTHON_QRCODE + bool "python-qrcode" + select BR2_PACKAGE_PYTHON_PYPNG # runtime + select BR2_PACKAGE_PYTHON_TYPING_EXTENSIONS # runtime + help + Pure python QR Code generator + + https://github.com/lincolnloop/python-qrcode + +if BR2_PACKAGE_PYTHON_QRCODE + +config BR2_PACKAGE_PYTHON_QRCODE_SVG + bool "SVG support" + select BR2_PACKAGE_PYTHON3_PYEXPAT + +config BR2_PACKAGE_PYTHON_QRCODE_PIL + bool "PIL support" + select BR2_PACKAGE_PYTHON_PILLOW + +endif diff --git a/package/python-qrcode/python-qrcode.hash b/package/python-qrcode/python-qrcode.hash new file mode 100644 index 00000000..48b2d7b2 --- /dev/null +++ b/package/python-qrcode/python-qrcode.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/qrcode/json +md5 a4c47fe5ff966b105098998cfb2294de qrcode-7.4.2.tar.gz +sha256 9dd969454827e127dbd93696b20747239e6d540e082937c90f14ac95b30f5845 qrcode-7.4.2.tar.gz +# Locally computed sha256 checksums +sha256 40dfb903c94ee3f789500131311186548ecba5cefd3557623d7700e2522ab994 LICENSE diff --git a/package/python-qrcode/python-qrcode.mk b/package/python-qrcode/python-qrcode.mk new file mode 100644 index 00000000..97b181a1 --- /dev/null +++ b/package/python-qrcode/python-qrcode.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-qrcode +# +################################################################################ + +PYTHON_QRCODE_VERSION = 7.4.2 +PYTHON_QRCODE_SOURCE = qrcode-$(PYTHON_QRCODE_VERSION).tar.gz +PYTHON_QRCODE_SITE = https://files.pythonhosted.org/packages/30/35/ad6d4c5a547fe9a5baf85a9edbafff93fc6394b014fab30595877305fa59 +PYTHON_QRCODE_SETUP_TYPE = setuptools +PYTHON_QRCODE_LICENSE = BSD-3-Clause +PYTHON_QRCODE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-raven/Config.in b/package/python-raven/Config.in new file mode 100644 index 00000000..d02232cf --- /dev/null +++ b/package/python-raven/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_RAVEN + bool "python-raven" + select BR2_PACKAGE_PYTHON3_ZLIB + select BR2_PACKAGE_PYTHON3_SSL + select BR2_PACKAGE_PYTHON3_UNICODEDATA + help + Raven is a client for Sentry (https://getsentry.com). + + https://github.com/getsentry/raven-python diff --git a/package/python-raven/python-raven.hash b/package/python-raven/python-raven.hash new file mode 100644 index 00000000..7f6fc5b1 --- /dev/null +++ b/package/python-raven/python-raven.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/raven/json +md5 3676f31dadfa61526444dd0245c78a38 raven-6.10.0.tar.gz +sha256 3fa6de6efa2493a7c827472e984ce9b020797d0da16f1db67197bcc23c8fae54 raven-6.10.0.tar.gz +# Locally computed sha256 checksums +sha256 5ce9459bc19ced99cc9eb135d4f559ed01e336354bdf16dd998be85aa688c233 LICENSE diff --git a/package/python-raven/python-raven.mk b/package/python-raven/python-raven.mk new file mode 100644 index 00000000..ff6c22c0 --- /dev/null +++ b/package/python-raven/python-raven.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-raven +# +################################################################################ + +PYTHON_RAVEN_VERSION = 6.10.0 +PYTHON_RAVEN_SOURCE = raven-$(PYTHON_RAVEN_VERSION).tar.gz +PYTHON_RAVEN_SITE = https://files.pythonhosted.org/packages/79/57/b74a86d74f96b224a477316d418389af9738ba7a63c829477e7a86dd6f47 +PYTHON_RAVEN_SETUP_TYPE = setuptools +PYTHON_RAVEN_LICENSE = BSD-3-Clause +PYTHON_RAVEN_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-redis/Config.in b/package/python-redis/Config.in new file mode 100644 index 00000000..e22959cf --- /dev/null +++ b/package/python-redis/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_REDIS + bool "python-redis" + help + Python client for Redis database and key-value store. + + https://github.com/redis/redis-py diff --git a/package/python-redis/python-redis.hash b/package/python-redis/python-redis.hash new file mode 100644 index 00000000..2d9df87a --- /dev/null +++ b/package/python-redis/python-redis.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/redis/json +md5 f4bff9e3819ec832bb789b8b58363d6b redis-5.0.1.tar.gz +sha256 0dab495cd5753069d3bc650a0dde8a8f9edde16fc5691b689a566eda58100d0f redis-5.0.1.tar.gz +# Locally computed sha256 checksums +sha256 a57b250a5bf03d7afe55b74063313f2adb7b00d546c0ab149a89398333fe3cc8 LICENSE diff --git a/package/python-redis/python-redis.mk b/package/python-redis/python-redis.mk new file mode 100644 index 00000000..067a7543 --- /dev/null +++ b/package/python-redis/python-redis.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-redis +# +################################################################################ + +PYTHON_REDIS_VERSION = 5.0.1 +PYTHON_REDIS_SOURCE = redis-$(PYTHON_REDIS_VERSION).tar.gz +PYTHON_REDIS_SITE = https://files.pythonhosted.org/packages/4a/4c/3c3b766f4ecbb3f0bec91ef342ee98d179e040c25b6ecc99e510c2570f2a +PYTHON_REDIS_SETUP_TYPE = setuptools +PYTHON_REDIS_LICENSE = MIT +PYTHON_REDIS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-reedsolo/Config.in b/package/python-reedsolo/Config.in new file mode 100644 index 00000000..6482b1e9 --- /dev/null +++ b/package/python-reedsolo/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_REEDSOLO + bool "python-reedsolo" + help + Pure-Python Reed Solomon encoder/decoder. + + https://github.com/tomerfiliba/reedsolomon diff --git a/package/python-reedsolo/python-reedsolo.hash b/package/python-reedsolo/python-reedsolo.hash new file mode 100644 index 00000000..c1729f0a --- /dev/null +++ b/package/python-reedsolo/python-reedsolo.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/reedsolo/json +md5 5bbd7741f915ad67b6d425f93ab9d103 reedsolo-1.7.0.tar.gz +sha256 c1359f02742751afe0f1c0de9f0772cc113835aa2855d2db420ea24393c87732 reedsolo-1.7.0.tar.gz +# Locally computed sha256 checksums +sha256 2da9536c23b72bac15603bb1f8dbf269dc68ecfbc35a75f8d0aa9cb209ba0934 LICENSE diff --git a/package/python-reedsolo/python-reedsolo.mk b/package/python-reedsolo/python-reedsolo.mk new file mode 100644 index 00000000..66e85fb4 --- /dev/null +++ b/package/python-reedsolo/python-reedsolo.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-reedsolo +# +################################################################################ + +PYTHON_REEDSOLO_VERSION = 1.7.0 +PYTHON_REEDSOLO_SOURCE = reedsolo-$(PYTHON_REEDSOLO_VERSION).tar.gz +PYTHON_REEDSOLO_SITE = https://files.pythonhosted.org/packages/f7/61/a67338cbecf370d464e71b10e9a31355f909d6937c3a8d6b17dd5d5beb5e +PYTHON_REEDSOLO_SETUP_TYPE = setuptools +PYTHON_REEDSOLO_LICENSE = MIT-0, Unlicense +PYTHON_REEDSOLO_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-reentry/Config.in b/package/python-reentry/Config.in new file mode 100644 index 00000000..07d8988a --- /dev/null +++ b/package/python-reentry/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_REENTRY + bool "python-reentry" + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + select BR2_PACKAGE_PYTHON_CLICK # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + help + A plugin manager based on setuptools entry points mechanism. + + https://pypi.org/project/reentry/ diff --git a/package/python-reentry/python-reentry.hash b/package/python-reentry/python-reentry.hash new file mode 100644 index 00000000..1d6ff0e2 --- /dev/null +++ b/package/python-reentry/python-reentry.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/reentry/json +md5 30b57a189bb3c319c0552a2f3105d34d reentry-1.3.3.tar.gz +sha256 6343d83245e5047c9f8db0702ec1a7fa8210bd553f0ab643212572f6fce2c3ff reentry-1.3.3.tar.gz +# Locally computed sha256 checksums +sha256 4ae7f3216208a7e2327236e95bcd2397b2495f1c2298c708986c893bea608509 LICENSE diff --git a/package/python-reentry/python-reentry.mk b/package/python-reentry/python-reentry.mk new file mode 100644 index 00000000..5808eee4 --- /dev/null +++ b/package/python-reentry/python-reentry.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-reentry +# +################################################################################ + +PYTHON_REENTRY_VERSION = 1.3.3 +PYTHON_REENTRY_SOURCE = reentry-$(PYTHON_REENTRY_VERSION).tar.gz +PYTHON_REENTRY_SITE = https://files.pythonhosted.org/packages/95/20/e820a29014f1cb662423d7001dc09a9ea5280083ea300f0c5efe5cae238b +PYTHON_REENTRY_SETUP_TYPE = setuptools +PYTHON_REENTRY_LICENSE = MIT +PYTHON_REENTRY_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-referencing/Config.in b/package/python-referencing/Config.in new file mode 100644 index 00000000..273c4254 --- /dev/null +++ b/package/python-referencing/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_REFERENCING + bool "python-referencing" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-rpds-py + select BR2_PACKAGE_PYTHON_ATTRS # runtime + select BR2_PACKAGE_PYTHON_RPDS_PY # runtime + help + JSON Referencing + Python. + + https://github.com/python-jsonschema/referencing diff --git a/package/python-referencing/python-referencing.hash b/package/python-referencing/python-referencing.hash new file mode 100644 index 00000000..2880a474 --- /dev/null +++ b/package/python-referencing/python-referencing.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/referencing/json +md5 d1a0a4ae03ebba4b86b22bfb825f150b referencing-0.32.1.tar.gz +sha256 3c57da0513e9563eb7e203ebe9bb3a1b509b042016433bd1e45a2853466c3dd3 referencing-0.32.1.tar.gz +# Locally computed sha256 checksums +sha256 42dcd63495f87b4eb7c7757afa379bb55a53f94afd7a5f657d9adf57236e515c COPYING diff --git a/package/python-referencing/python-referencing.mk b/package/python-referencing/python-referencing.mk new file mode 100644 index 00000000..66d59ed8 --- /dev/null +++ b/package/python-referencing/python-referencing.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# python-referencing +# +################################################################################ + +PYTHON_REFERENCING_VERSION = 0.32.1 +PYTHON_REFERENCING_SOURCE = referencing-$(PYTHON_REFERENCING_VERSION).tar.gz +PYTHON_REFERENCING_SITE = https://files.pythonhosted.org/packages/81/ce/910573eca7b1a1c6358b0dc0774ce1eeb81f4c98d4ee371f1c85f22040a1 +PYTHON_REFERENCING_SETUP_TYPE = pep517 +PYTHON_REFERENCING_LICENSE = MIT +PYTHON_REFERENCING_LICENSE_FILES = COPYING +PYTHON_REFERENCING_DEPENDENCIES = \ + host-python-hatchling \ + host-python-hatch-vcs + +HOST_PYTHON_REFERENCING_DEPENDENCIES = \ + host-python-hatchling \ + host-python-hatch-vcs + +# This is a runtime dependency, but we don't have the concept of +# runtime dependencies for host packages. +HOST_PYTHON_REFERENCING_DEPENDENCIES += \ + host-python-attrs \ + host-python-rpds-py + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-regex/Config.in b/package/python-regex/Config.in new file mode 100644 index 00000000..89ead69c --- /dev/null +++ b/package/python-regex/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_REGEX + bool "python-regex" + help + Alternative regular expression module, to replace re. + + https://github.com/mrabarnett/mrab-regex diff --git a/package/python-regex/python-regex.hash b/package/python-regex/python-regex.hash new file mode 100644 index 00000000..7454db99 --- /dev/null +++ b/package/python-regex/python-regex.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/regex/json +md5 3f97f0aef9bf334fe50ae5980b183e68 regex-2023.12.25.tar.gz +sha256 29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5 regex-2023.12.25.tar.gz +# Locally computed sha256 checksums +sha256 bff55ef4cdcc8c14ce259f8e8ab60e264418440d6335f4dc138273fbd506144d LICENSE.txt diff --git a/package/python-regex/python-regex.mk b/package/python-regex/python-regex.mk new file mode 100644 index 00000000..6b1938bc --- /dev/null +++ b/package/python-regex/python-regex.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-regex +# +################################################################################ + +PYTHON_REGEX_VERSION = 2023.12.25 +PYTHON_REGEX_SOURCE = regex-$(PYTHON_REGEX_VERSION).tar.gz +PYTHON_REGEX_SITE = https://files.pythonhosted.org/packages/b5/39/31626e7e75b187fae7f121af3c538a991e725c744ac893cc2cfd70ce2853 +PYTHON_REGEX_SETUP_TYPE = setuptools +PYTHON_REGEX_LICENSE = Apache-2.0 +PYTHON_REGEX_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-remi/Config.in b/package/python-remi/Config.in new file mode 100644 index 00000000..da2c2f4c --- /dev/null +++ b/package/python-remi/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_REMI + bool "python-remi" + select BR2_PACKAGE_PYTHON3_SSL # runtime + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + help + Remi is a GUI library for Python applications which transpiles + an application's interface into HTML to be rendered in a web + browser. This removes platform-specific dependencies and lets + you easily develop cross-platform applications in Python! + + https://github.com/dddomodossola/remi/tree/master diff --git a/package/python-remi/python-remi.hash b/package/python-remi/python-remi.hash new file mode 100644 index 00000000..e7937c39 --- /dev/null +++ b/package/python-remi/python-remi.hash @@ -0,0 +1,4 @@ +# sha256 from https://pypi.org/pypi/remi/json +sha256 542df88e174bbd58fe763c49e5c2116f2c8413c1a934731069ed8c17bb9cd64c remi-2022.7.27.tar.gz +# Locally computed sha256 +sha256 3df7d3ad8904d7e99fc0810366483a7cbe5a43c13f7f913f1d7e5023f2ff7657 LICENSE diff --git a/package/python-remi/python-remi.mk b/package/python-remi/python-remi.mk new file mode 100644 index 00000000..419a3441 --- /dev/null +++ b/package/python-remi/python-remi.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-remi +# +################################################################################ + +PYTHON_REMI_VERSION = 2022.7.27 +PYTHON_REMI_SOURCE = remi-$(PYTHON_REMI_VERSION).tar.gz +PYTHON_REMI_SITE = https://files.pythonhosted.org/packages/b7/5c/fca9d9273fc9d5f4ca0bc2f387ca19f8ba9979dcb75617d094e575dc2337 + +PYTHON_REMI_LICENSE = Apache-2.0 +PYTHON_REMI_LICENSE_FILES = LICENSE +PYTHON_REMI_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-request-id/Config.in b/package/python-request-id/Config.in new file mode 100644 index 00000000..39b5456d --- /dev/null +++ b/package/python-request-id/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_REQUEST_ID + bool "python-request-id" + select BR2_PACKAGE_PYTHON_WEBOB # runtime + help + Attach a unique identifier to every WSGI request. + + https://github.com/mmerickel/request_id diff --git a/package/python-request-id/python-request-id.hash b/package/python-request-id/python-request-id.hash new file mode 100644 index 00000000..a0e59a32 --- /dev/null +++ b/package/python-request-id/python-request-id.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/request-id/json +md5 abf0125561fb38198893ba4b46c5ce28 request-id-1.0.1.tar.gz +sha256 4adf1dc880085571454667ee4dba36a12b720eea5dbbfbbbd840c5a24268b4f7 request-id-1.0.1.tar.gz +# Locally computed sha256 checksums +sha256 2d65d17b4df34f184557b8031df05e4c264d2fa6b82e560be074967eff3b326c LICENSE.txt diff --git a/package/python-request-id/python-request-id.mk b/package/python-request-id/python-request-id.mk new file mode 100644 index 00000000..8fe8dc04 --- /dev/null +++ b/package/python-request-id/python-request-id.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-request-id +# +################################################################################ + +PYTHON_REQUEST_ID_VERSION = 1.0.1 +PYTHON_REQUEST_ID_SOURCE = request-id-$(PYTHON_REQUEST_ID_VERSION).tar.gz +PYTHON_REQUEST_ID_SITE = https://files.pythonhosted.org/packages/9b/b3/30617b85b1766b6a804f2b8abc0ca7496f6349236f7eec28cb42687ca8e3 +PYTHON_REQUEST_ID_SETUP_TYPE = setuptools +PYTHON_REQUEST_ID_LICENSE = MIT +PYTHON_REQUEST_ID_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-requests-oauthlib/Config.in b/package/python-requests-oauthlib/Config.in new file mode 100644 index 00000000..85283b20 --- /dev/null +++ b/package/python-requests-oauthlib/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_REQUESTS_OAUTHLIB + bool "python-requests-oauthlib" + select BR2_PACKAGE_PYTHON_OAUTHLIB # runtime + select BR2_PACKAGE_PYTHON_REQUESTS # runtime + help + OAuthlib authentication support for Requests. + + https://github.com/requests/requests-oauthlib diff --git a/package/python-requests-oauthlib/python-requests-oauthlib.hash b/package/python-requests-oauthlib/python-requests-oauthlib.hash new file mode 100644 index 00000000..08c19ab1 --- /dev/null +++ b/package/python-requests-oauthlib/python-requests-oauthlib.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/requests-oauthlib/json +md5 c4f3b4ecdb72a56a13675e5a3302852a requests-oauthlib-1.3.1.tar.gz +sha256 75beac4a47881eeb94d5ea5d6ad31ef88856affe2332b9aafb52c6452ccf0d7a requests-oauthlib-1.3.1.tar.gz +# Locally computed sha256 checksums +sha256 ae01846afad8a8291fe6a08966f3015af9a8ff675d84b981f9793c122f7876e8 LICENSE diff --git a/package/python-requests-oauthlib/python-requests-oauthlib.mk b/package/python-requests-oauthlib/python-requests-oauthlib.mk new file mode 100644 index 00000000..cdd334fb --- /dev/null +++ b/package/python-requests-oauthlib/python-requests-oauthlib.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-requests-oauthlib +# +################################################################################ + +PYTHON_REQUESTS_OAUTHLIB_VERSION = 1.3.1 +PYTHON_REQUESTS_OAUTHLIB_SOURCE = requests-oauthlib-$(PYTHON_REQUESTS_OAUTHLIB_VERSION).tar.gz +PYTHON_REQUESTS_OAUTHLIB_SITE = https://files.pythonhosted.org/packages/95/52/531ef197b426646f26b53815a7d2a67cb7a331ef098bb276db26a68ac49f +PYTHON_REQUESTS_OAUTHLIB_SETUP_TYPE = setuptools +PYTHON_REQUESTS_OAUTHLIB_LICENSE = ISC +PYTHON_REQUESTS_OAUTHLIB_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-requests-toolbelt/Config.in b/package/python-requests-toolbelt/Config.in new file mode 100644 index 00000000..7d5b4b65 --- /dev/null +++ b/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.io/ diff --git a/package/python-requests-toolbelt/python-requests-toolbelt.hash b/package/python-requests-toolbelt/python-requests-toolbelt.hash new file mode 100644 index 00000000..12bc5813 --- /dev/null +++ b/package/python-requests-toolbelt/python-requests-toolbelt.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/requests-toolbelt/json +md5 6a8348cfc9991b44e499345db1c6f925 requests-toolbelt-1.0.0.tar.gz +sha256 7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6 requests-toolbelt-1.0.0.tar.gz +# Locally computed sha256 checksums +sha256 1f8cf8bdacd98ed6d36d0fec0c07f7765acebd6e81205962ab5146023b3c858d LICENSE diff --git a/package/python-requests-toolbelt/python-requests-toolbelt.mk b/package/python-requests-toolbelt/python-requests-toolbelt.mk new file mode 100644 index 00000000..d0bcb1bb --- /dev/null +++ b/package/python-requests-toolbelt/python-requests-toolbelt.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-requests-toolbelt +# +################################################################################ + +PYTHON_REQUESTS_TOOLBELT_VERSION = 1.0.0 +PYTHON_REQUESTS_TOOLBELT_SOURCE = requests-toolbelt-$(PYTHON_REQUESTS_TOOLBELT_VERSION).tar.gz +PYTHON_REQUESTS_TOOLBELT_SITE = https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb +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/package/python-requests/Config.in b/package/python-requests/Config.in new file mode 100644 index 00000000..94a44682 --- /dev/null +++ b/package/python-requests/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_REQUESTS + bool "python-requests" + select BR2_PACKAGE_PYTHON_CERTIFI # runtime + select BR2_PACKAGE_PYTHON_CHARSET_NORMALIZER # runtime + select BR2_PACKAGE_PYTHON_IDNA # runtime + select BR2_PACKAGE_PYTHON_URLLIB3 # runtime + select BR2_PACKAGE_PYTHON3_SSL # runtime + select BR2_PACKAGE_PYTHON3_ZLIB # runtime + help + Requests is an Apache2 Licensed HTTP library, written in + Python, for human beings. + + http://www.python-requests.org/ diff --git a/package/python-requests/python-requests.hash b/package/python-requests/python-requests.hash new file mode 100644 index 00000000..2764a0f2 --- /dev/null +++ b/package/python-requests/python-requests.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/requests/json +md5 fa3ee5ac3f1b3f4368bd74ab530d3f0f requests-2.32.3.tar.gz +sha256 55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760 requests-2.32.3.tar.gz +# Locally computed sha256 checksums +sha256 09e8a9bcec8067104652c168685ab0931e7868f9c8284b66f5ae6edae5f1130b LICENSE diff --git a/package/python-requests/python-requests.mk b/package/python-requests/python-requests.mk new file mode 100644 index 00000000..fc8f51fd --- /dev/null +++ b/package/python-requests/python-requests.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# python-requests +# +################################################################################ + +PYTHON_REQUESTS_VERSION = 2.32.3 +PYTHON_REQUESTS_SOURCE = requests-$(PYTHON_REQUESTS_VERSION).tar.gz +PYTHON_REQUESTS_SITE = https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913 +PYTHON_REQUESTS_SETUP_TYPE = setuptools +PYTHON_REQUESTS_LICENSE = Apache-2.0 +PYTHON_REQUESTS_LICENSE_FILES = LICENSE +PYTHON_REQUESTS_CPE_ID_VENDOR = python +PYTHON_REQUESTS_CPE_ID_PRODUCT = requests +HOST_PYTHON_REQUESTS_DEPENDENCIES = \ + host-python-certifi \ + host-python-charset-normalizer \ + host-python-idna \ + host-python-urllib3 + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-rfc3987/Config.in b/package/python-rfc3987/Config.in new file mode 100644 index 00000000..3cd74f53 --- /dev/null +++ b/package/python-rfc3987/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_RFC3987 + bool "python-rfc3987" + help + Parsing and validation of URIs (RFC 3986) and IRIs (RFC + 3987). + + http://pypi.python.org/pypi/rfc3987 diff --git a/package/python-rfc3987/python-rfc3987.hash b/package/python-rfc3987/python-rfc3987.hash new file mode 100644 index 00000000..013cee61 --- /dev/null +++ b/package/python-rfc3987/python-rfc3987.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/rfc3987/json +md5 b6c4028acdc788a9ba697e1c1d6b896c rfc3987-1.3.8.tar.gz +sha256 d3c4d257a560d544e9826b38bc81db676890c79ab9d7ac92b39c7a253d5ca733 rfc3987-1.3.8.tar.gz +# Locally computed sha256 checksums +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING.txt diff --git a/package/python-rfc3987/python-rfc3987.mk b/package/python-rfc3987/python-rfc3987.mk new file mode 100644 index 00000000..cad17e8d --- /dev/null +++ b/package/python-rfc3987/python-rfc3987.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-rfc3987 +# +################################################################################ + +PYTHON_RFC3987_VERSION = 1.3.8 +PYTHON_RFC3987_SOURCE = rfc3987-$(PYTHON_RFC3987_VERSION).tar.gz +PYTHON_RFC3987_SITE = https://files.pythonhosted.org/packages/14/bb/f1395c4b62f251a1cb503ff884500ebd248eed593f41b469f89caa3547bd +PYTHON_RFC3987_SETUP_TYPE = setuptools +PYTHON_RFC3987_LICENSE = GPL-3.0+ +PYTHON_RFC3987_LICENSE_FILES = COPYING.txt + +$(eval $(python-package)) diff --git a/package/python-rpds-py/Config.in b/package/python-rpds-py/Config.in new file mode 100644 index 00000000..172c5fd0 --- /dev/null +++ b/package/python-rpds-py/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_RPDS_PY + bool "python-rpds-py" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + help + Python bindings to the Rust rpds crate for persistent + data structures. + + https://github.com/crate-py/rpds diff --git a/package/python-rpds-py/python-rpds-py.hash b/package/python-rpds-py/python-rpds-py.hash new file mode 100644 index 00000000..3071f60d --- /dev/null +++ b/package/python-rpds-py/python-rpds-py.hash @@ -0,0 +1,4 @@ +# Locally calculated after vendoring +sha256 c16ec7e898efa0302cde6ac3c83ef8a2400f865d44941085b4f87784325fb89a python-rpds-py-0.18.1-cargo2.tar.gz +# Locally computed sha256 checksums +sha256 314e4e91be3baa93c0fb4bccc9e4e97cd643eb839b065af921782c2175fe9909 LICENSE diff --git a/package/python-rpds-py/python-rpds-py.mk b/package/python-rpds-py/python-rpds-py.mk new file mode 100644 index 00000000..398ac668 --- /dev/null +++ b/package/python-rpds-py/python-rpds-py.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-rpds-py +# +################################################################################ + +PYTHON_RPDS_PY_VERSION = 0.18.1 +PYTHON_RPDS_PY_SOURCE_PYPI = rpds_py-$(PYTHON_RPDS_PY_VERSION).tar.gz +PYTHON_RPDS_PY_SITE_PYPI = https://files.pythonhosted.org/packages/2d/aa/e7c404bdee1db7be09860dff423d022ffdce9269ec8e6532cce09ee7beea +PYTHON_RPDS_PY_SITE = $(PYTHON_RPDS_PY_SITE_PYPI)/$(PYTHON_RPDS_PY_SOURCE_PYPI)?buildroot-path=filename +PYTHON_RPDS_PY_SETUP_TYPE = maturin +PYTHON_RPDS_PY_LICENSE = MIT +PYTHON_RPDS_PY_LICENSE_FILES = LICENSE + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-rpi-gpio/Config.in b/package/python-rpi-gpio/Config.in new file mode 100644 index 00000000..f3c0928c --- /dev/null +++ b/package/python-rpi-gpio/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_RPI_GPIO + bool "python-rpi-gpio" + depends on BR2_arm || BR2_aarch64 + help + A Python module to control the GPIO on a Raspberry Pi. + + http://sourceforge.net/p/raspberry-gpio-python diff --git a/package/python-rpi-gpio/python-rpi-gpio.hash b/package/python-rpi-gpio/python-rpi-gpio.hash new file mode 100644 index 00000000..22bcaebd --- /dev/null +++ b/package/python-rpi-gpio/python-rpi-gpio.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/rpi_gpio/json +md5 22704930a4e674a3d35342bde6d69fe5 RPi.GPIO-0.7.1.tar.gz +sha256 cd61c4b03c37b62bba4a5acfea9862749c33c618e0295e7e90aa4713fb373b70 RPi.GPIO-0.7.1.tar.gz +# Locally computed +sha256 1ccf039a03088da42bdb218a446a564330b881ec71f7022a9fb1930f3fb65d8a LICENCE.txt diff --git a/package/python-rpi-gpio/python-rpi-gpio.mk b/package/python-rpi-gpio/python-rpi-gpio.mk new file mode 100644 index 00000000..4e62e075 --- /dev/null +++ b/package/python-rpi-gpio/python-rpi-gpio.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-rpi-gpio +# +################################################################################ + +PYTHON_RPI_GPIO_VERSION = 0.7.1 +PYTHON_RPI_GPIO_SOURCE = RPi.GPIO-$(PYTHON_RPI_GPIO_VERSION).tar.gz +PYTHON_RPI_GPIO_SITE = https://files.pythonhosted.org/packages/c4/0f/10b524a12b3445af1c607c27b2f5ed122ef55756e29942900e5c950735f2 +PYTHON_RPI_GPIO_LICENSE = MIT +PYTHON_RPI_GPIO_LICENSE_FILES = LICENCE.txt +PYTHON_RPI_GPIO_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-rpi-ws281x/Config.in b/package/python-rpi-ws281x/Config.in new file mode 100644 index 00000000..5f131300 --- /dev/null +++ b/package/python-rpi-ws281x/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_RPI_WS281X + bool "python-rpi-ws281x" + help + Userspace Raspberry Pi PWM/PCM/SPI library for SK6812 and + WS281X LEDs. + + https://github.com/rpi-ws281x/rpi-ws281x-python/ diff --git a/package/python-rpi-ws281x/python-rpi-ws281x.hash b/package/python-rpi-ws281x/python-rpi-ws281x.hash new file mode 100644 index 00000000..42bc2055 --- /dev/null +++ b/package/python-rpi-ws281x/python-rpi-ws281x.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/rpi-ws281x/json +md5 9c87b5bedba0a48bb97e9953378dfb78 rpi_ws281x-5.0.0.tar.gz +sha256 00ce6db771436b778d0930245cf8ea2aae11008cc5fd67d57789c5422af3ee55 rpi_ws281x-5.0.0.tar.gz +# Locally computed sha256 checksums +sha256 7bbf6337c1eee7169579e6acd398f31ea274dfa3a1689ab7e654ca3585d5a8a9 LICENSE +sha256 7bbf6337c1eee7169579e6acd398f31ea274dfa3a1689ab7e654ca3585d5a8a9 lib/LICENSE diff --git a/package/python-rpi-ws281x/python-rpi-ws281x.mk b/package/python-rpi-ws281x/python-rpi-ws281x.mk new file mode 100644 index 00000000..610467b1 --- /dev/null +++ b/package/python-rpi-ws281x/python-rpi-ws281x.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-rpi-ws281x +# +################################################################################ + +PYTHON_RPI_WS281X_VERSION = 5.0.0 +PYTHON_RPI_WS281X_SOURCE = rpi_ws281x-$(PYTHON_RPI_WS281X_VERSION).tar.gz +PYTHON_RPI_WS281X_SITE = https://files.pythonhosted.org/packages/c0/1e/642208a685c5e96d38323f42c75d9b24f95e2d1b8390dd104e04a712f29e +PYTHON_RPI_WS281X_SETUP_TYPE = setuptools +PYTHON_RPI_WS281X_LICENSE = BSD-2-Clause +PYTHON_RPI_WS281X_LICENSE_FILES = LICENSE lib/LICENSE + +$(eval $(python-package)) diff --git a/package/python-rsa/Config.in b/package/python-rsa/Config.in new file mode 100644 index 00000000..5cafd821 --- /dev/null +++ b/package/python-rsa/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_RSA + bool "python-rsa" + select BR2_PACKAGE_PYTHON_PYASN1 # runtime + help + Python-RSA is a pure-Python RSA implementation. It supports + encryption and decryption, signing and verifying signatures, + and key generation according to PKCS\#1 version 1.5. It can + be used as a Python library as well as on the command line. + + https://stuvel.eu/rsa diff --git a/package/python-rsa/python-rsa.hash b/package/python-rsa/python-rsa.hash new file mode 100644 index 00000000..0e2b3a91 --- /dev/null +++ b/package/python-rsa/python-rsa.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/rsa/json +md5 26a1efb79164a95c363e550c3eefe683 rsa-4.9.tar.gz +sha256 e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21 rsa-4.9.tar.gz +# Locally computed sha256 checksums +sha256 073f28b7d389c8fe74f607e17c27f81eaa5ace69edc43a884f23f41b41c5c726 LICENSE diff --git a/package/python-rsa/python-rsa.mk b/package/python-rsa/python-rsa.mk new file mode 100644 index 00000000..69a6309b --- /dev/null +++ b/package/python-rsa/python-rsa.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-rsa +# +################################################################################ + +PYTHON_RSA_VERSION = 4.9 +PYTHON_RSA_SOURCE = rsa-$(PYTHON_RSA_VERSION).tar.gz +PYTHON_RSA_SITE = https://files.pythonhosted.org/packages/aa/65/7d973b89c4d2351d7fb232c2e452547ddfa243e93131e7cfa766da627b52 +PYTHON_RSA_SETUP_TYPE = pep517 +PYTHON_RSA_LICENSE = Apache-2.0 +PYTHON_RSA_LICENSE_FILES = LICENSE +PYTHON_RSA_CPE_ID_VALID = YES +PYTHON_RSA_DEPENDENCIES = host-python-poetry-core + +$(eval $(python-package)) diff --git a/package/python-rtoml/Config.in b/package/python-rtoml/Config.in new file mode 100644 index 00000000..410976f1 --- /dev/null +++ b/package/python-rtoml/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_RTOML + bool "python-rtoml" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + help + A better TOML library for python implemented in rust. + + https://github.com/samuelcolvin/rtoml diff --git a/package/python-rtoml/python-rtoml.hash b/package/python-rtoml/python-rtoml.hash new file mode 100644 index 00000000..dae1badc --- /dev/null +++ b/package/python-rtoml/python-rtoml.hash @@ -0,0 +1,4 @@ +# Locally calculated after vendoring +sha256 624cc1ff2b3fdea42aeee3a4d1537d37431ec001870dfee1e04a12bd3076a2d3 python-rtoml-0.10.0-cargo2.tar.gz +# Locally computed sha256 checksums +sha256 cd5ffde80e6d3286a2e2e5f02fb2cb07b823931ca368e7c735a6c5f5aebe7103 LICENSE diff --git a/package/python-rtoml/python-rtoml.mk b/package/python-rtoml/python-rtoml.mk new file mode 100644 index 00000000..d5de20f8 --- /dev/null +++ b/package/python-rtoml/python-rtoml.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-rtoml +# +################################################################################ + +PYTHON_RTOML_VERSION = 0.10.0 +PYTHON_RTOML_SOURCE_PYPI = rtoml-$(PYTHON_RTOML_VERSION).tar.gz +PYTHON_RTOML_SITE_PYPI = https://files.pythonhosted.org/packages/ca/b2/0e77a00e75ed582ec1c4c3a9e1eeed886a15c195bcce87b7daf1171c4115 +PYTHON_RTOML_SITE = $(PYTHON_RTOML_SITE_PYPI)/$(PYTHON_RTOML_SOURCE_PYPI)?buildroot-path=filename +PYTHON_RTOML_SETUP_TYPE = maturin +PYTHON_RTOML_LICENSE = MIT +PYTHON_RTOML_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-rtslib-fb/Config.in b/package/python-rtslib-fb/Config.in new file mode 100644 index 00000000..f4083340 --- /dev/null +++ b/package/python-rtslib-fb/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_RTSLIB_FB + bool "python-rtslib-fb" + select BR2_PACKAGE_PYTHON_SIX + help + rtslib-fb is an object-based Python library for configuring + the LIO generic SCSI target, present in 3.x Linux kernel + versions. + + https://github.com/open-iscsi/rtslib-fb diff --git a/package/python-rtslib-fb/python-rtslib-fb.hash b/package/python-rtslib-fb/python-rtslib-fb.hash new file mode 100644 index 00000000..39c390ed --- /dev/null +++ b/package/python-rtslib-fb/python-rtslib-fb.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 ac15c113d09209c7b0d14d94a12ed88205a7c2feadd1096f573049fd737f7e74 python-rtslib-fb-2.1.76.tar.gz +sha256 5df2a0d87d6c562f0ea11c688ac52532aa28d744cabc7994ff0537f64b3b3320 COPYING diff --git a/package/python-rtslib-fb/python-rtslib-fb.mk b/package/python-rtslib-fb/python-rtslib-fb.mk new file mode 100644 index 00000000..6396d26a --- /dev/null +++ b/package/python-rtslib-fb/python-rtslib-fb.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-rtslib-fb +# +################################################################################ + +# When upgrading the version, be sure to also upgrade +# python-configshell-fb and targetcli-fb at the same time. +PYTHON_RTSLIB_FB_VERSION = 2.1.76 +# Do not switch site to PyPI: it does not contain the latest version. +PYTHON_RTSLIB_FB_SITE = $(call github,open-iscsi,rtslib-fb,v$(PYTHON_RTSLIB_FB_VERSION)) +PYTHON_RTSLIB_FB_LICENSE = Apache-2.0 +PYTHON_RTSLIB_FB_LICENSE_FILES = COPYING +PYTHON_RTSLIB_FB_SETUP_TYPE = setuptools +PYTHON_RTSLIB_FB_DEPENDENCIES = python-six + +$(eval $(python-package)) diff --git a/package/python-ruamel-yaml-clib/Config.in b/package/python-ruamel-yaml-clib/Config.in new file mode 100644 index 00000000..c747fb61 --- /dev/null +++ b/package/python-ruamel-yaml-clib/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_RUAMEL_YAML_CLIB + bool "python-ruamel-yaml-clib" + depends on BR2_PACKAGE_PYTHON_RUAMEL_YAML + help + C version of reader, parser and emitter for ruamel.yaml + derived from libyaml + + https://sourceforge.net/projects/ruamel-yaml/ diff --git a/package/python-ruamel-yaml-clib/python-ruamel-yaml-clib.hash b/package/python-ruamel-yaml-clib/python-ruamel-yaml-clib.hash new file mode 100644 index 00000000..937afc3d --- /dev/null +++ b/package/python-ruamel-yaml-clib/python-ruamel-yaml-clib.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/ruamel.yaml.clib/json +md5 b72e549363fa1b9c4f9123e98f2b46cc ruamel.yaml.clib-0.2.8.tar.gz +sha256 beb2e0404003de9a4cab9753a8805a8fe9320ee6673136ed7f04255fe60bb512 ruamel.yaml.clib-0.2.8.tar.gz +# Locally computed sha256 checksums +sha256 5458f90e82366f660f956b3c929ba5f7a0efdb99a99a847e2f51f2020ffbe887 LICENSE diff --git a/package/python-ruamel-yaml-clib/python-ruamel-yaml-clib.mk b/package/python-ruamel-yaml-clib/python-ruamel-yaml-clib.mk new file mode 100644 index 00000000..25c3b441 --- /dev/null +++ b/package/python-ruamel-yaml-clib/python-ruamel-yaml-clib.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-ruamel-yaml-clib +# +################################################################################ + +PYTHON_RUAMEL_YAML_CLIB_VERSION = 0.2.8 +PYTHON_RUAMEL_YAML_CLIB_SOURCE = ruamel.yaml.clib-$(PYTHON_RUAMEL_YAML_CLIB_VERSION).tar.gz +PYTHON_RUAMEL_YAML_CLIB_SITE = https://files.pythonhosted.org/packages/46/ab/bab9eb1566cd16f060b54055dd39cf6a34bfa0240c53a7218c43e974295b +PYTHON_RUAMEL_YAML_CLIB_SETUP_TYPE = setuptools +PYTHON_RUAMEL_YAML_CLIB_LICENSE = MIT +PYTHON_RUAMEL_YAML_CLIB_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-ruamel-yaml/Config.in b/package/python-ruamel-yaml/Config.in new file mode 100644 index 00000000..afde3d53 --- /dev/null +++ b/package/python-ruamel-yaml/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_RUAMEL_YAML + bool "python-ruamel-yaml" + help + ruamel.yaml is a YAML parser/emitter that supports roundtrip + preservation of comments, seq/map flow style, and map key + order. + + https://sourceforge.net/projects/ruamel-yaml/ diff --git a/package/python-ruamel-yaml/python-ruamel-yaml.hash b/package/python-ruamel-yaml/python-ruamel-yaml.hash new file mode 100644 index 00000000..02845d11 --- /dev/null +++ b/package/python-ruamel-yaml/python-ruamel-yaml.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/ruamel.yaml/json +md5 24fac3544a3c7bd7eeaf6e4f704a056e ruamel.yaml-0.18.5.tar.gz +sha256 61917e3a35a569c1133a8f772e1226961bf5a1198bea7e23f06a0841dea1ab0e ruamel.yaml-0.18.5.tar.gz +# Locally computed sha256 checksums +sha256 ba45629abb7022949148ce65de4a59e7ee164d30c94450389a6afdd3ebe4e9e0 LICENSE diff --git a/package/python-ruamel-yaml/python-ruamel-yaml.mk b/package/python-ruamel-yaml/python-ruamel-yaml.mk new file mode 100644 index 00000000..bbdac591 --- /dev/null +++ b/package/python-ruamel-yaml/python-ruamel-yaml.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-ruamel-yaml +# +################################################################################ + +PYTHON_RUAMEL_YAML_VERSION = 0.18.5 +PYTHON_RUAMEL_YAML_SOURCE = ruamel.yaml-$(PYTHON_RUAMEL_YAML_VERSION).tar.gz +PYTHON_RUAMEL_YAML_SITE = https://files.pythonhosted.org/packages/82/43/fa976e03a4a9ae406904489119cd7dd4509752ca692b2e0a19491ca1782c +PYTHON_RUAMEL_YAML_SETUP_TYPE = setuptools +PYTHON_RUAMEL_YAML_LICENSE = MIT +PYTHON_RUAMEL_YAML_LICENSE_FILES = LICENSE +PYTHON_RUAMEL_YAML_CPE_ID_VENDOR = ruamel.yaml_project +PYTHON_RUAMEL_YAML_CPE_ID_PRODUCT = ruamel.yaml + +$(eval $(python-package)) diff --git a/package/python-s3transfer/Config.in b/package/python-s3transfer/Config.in new file mode 100644 index 00000000..a7f85b14 --- /dev/null +++ b/package/python-s3transfer/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_S3TRANSFER + bool "python-s3transfer" + select BR2_PACKAGE_PYTHON_BOTOCORE # runtime + help + An Amazon S3 Transfer Manager. + + https://github.com/boto/s3transfer diff --git a/package/python-s3transfer/python-s3transfer.hash b/package/python-s3transfer/python-s3transfer.hash new file mode 100644 index 00000000..48be6b3a --- /dev/null +++ b/package/python-s3transfer/python-s3transfer.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/s3transfer/json +md5 ba84e7c06bc1dcd3151c3d2132621cfc s3transfer-0.10.0.tar.gz +sha256 d0c8bbf672d5eebbe4e57945e23b972d963f07d82f661cabf678a5c88831595b s3transfer-0.10.0.tar.gz +# Locally computed sha256 checksums +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/python-s3transfer/python-s3transfer.mk b/package/python-s3transfer/python-s3transfer.mk new file mode 100644 index 00000000..6fae8248 --- /dev/null +++ b/package/python-s3transfer/python-s3transfer.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-s3transfer +# +################################################################################ + +PYTHON_S3TRANSFER_VERSION = 0.10.0 +PYTHON_S3TRANSFER_SOURCE = s3transfer-$(PYTHON_S3TRANSFER_VERSION).tar.gz +PYTHON_S3TRANSFER_SITE = https://files.pythonhosted.org/packages/a0/b5/4c570b08cb85fdcc65037b5229e00412583bb38d974efecb7ec3495f40ba +PYTHON_S3TRANSFER_SETUP_TYPE = setuptools +PYTHON_S3TRANSFER_LICENSE = Apache-2.0 +PYTHON_S3TRANSFER_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-scandir/Config.in b/package/python-scandir/Config.in new file mode 100644 index 00000000..497f962a --- /dev/null +++ b/package/python-scandir/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_SCANDIR + bool "python-scandir" + help + scandir, a better directory iterator and faster os.walk() + + https://pypi.python.org/pypi/scandir diff --git a/package/python-scandir/python-scandir.hash b/package/python-scandir/python-scandir.hash new file mode 100644 index 00000000..1547c592 --- /dev/null +++ b/package/python-scandir/python-scandir.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/scandir/json +md5 f8378f4d9f95a6a78e97ab01aa900c1d scandir-1.10.0.tar.gz +sha256 4d4631f6062e658e9007ab3149a9b914f3548cb38bfb021c64f39a025ce578ae scandir-1.10.0.tar.gz +# Locally computed sha256 checksums +sha256 a5e2fbdc239744419d29407cdbc92793c4d9c1d956c174f7cb7f96fa6d058c86 LICENSE.txt diff --git a/package/python-scandir/python-scandir.mk b/package/python-scandir/python-scandir.mk new file mode 100644 index 00000000..f205fe3b --- /dev/null +++ b/package/python-scandir/python-scandir.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-scandir +# +################################################################################ + +PYTHON_SCANDIR_VERSION = 1.10.0 +PYTHON_SCANDIR_SOURCE = scandir-$(PYTHON_SCANDIR_VERSION).tar.gz +PYTHON_SCANDIR_SITE = https://files.pythonhosted.org/packages/df/f5/9c052db7bd54d0cbf1bc0bb6554362bba1012d03e5888950a4f5c5dadc4e +PYTHON_SCANDIR_LICENSE = BSD-3-Clause +PYTHON_SCANDIR_LICENSE_FILES = LICENSE.txt +PYTHON_SCANDIR_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-scapy/Config.in b/package/python-scapy/Config.in new file mode 100644 index 00000000..517fb517 --- /dev/null +++ b/package/python-scapy/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_SCAPY + bool "python-scapy" + select BR2_PACKAGE_PYTHON3_ZLIB + help + Scapy: interactive packet manipulation tool. + + http://www.secdev.org/projects/scapy diff --git a/package/python-scapy/python-scapy.hash b/package/python-scapy/python-scapy.hash new file mode 100644 index 00000000..7b21e6cb --- /dev/null +++ b/package/python-scapy/python-scapy.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/scapy/json +md5 f546b1c82c2c98e0dae1a436219dd042 scapy-2.5.0.tar.gz +sha256 5b260c2b754fd8d409ba83ee7aee294ecdbb2c235f9f78fe90bc11cb6e5debc2 scapy-2.5.0.tar.gz +# Locally computed sha256 checksums +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/python-scapy/python-scapy.mk b/package/python-scapy/python-scapy.mk new file mode 100644 index 00000000..a2c6cc68 --- /dev/null +++ b/package/python-scapy/python-scapy.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-scapy +# +################################################################################ + +PYTHON_SCAPY_VERSION = 2.5.0 +PYTHON_SCAPY_SOURCE = scapy-$(PYTHON_SCAPY_VERSION).tar.gz +PYTHON_SCAPY_SITE = https://files.pythonhosted.org/packages/67/a1/2a60d5b6f0fed297dd0c0311c887d5e8a30ba1250506585b897e5a662f4c +PYTHON_SCAPY_SETUP_TYPE = setuptools +PYTHON_SCAPY_LICENSE = GPL-2.0 +PYTHON_SCAPY_LICENSE_FILES = LICENSE +PYTHON_SCAPY_CPE_ID_VENDOR = scapy +PYTHON_SCAPY_CPE_ID_PRODUCT = scapy + +$(eval $(python-package)) diff --git a/package/python-schedule/Config.in b/package/python-schedule/Config.in new file mode 100644 index 00000000..d00c2459 --- /dev/null +++ b/package/python-schedule/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_SCHEDULE + bool "python-schedule" + help + Job scheduling for humans. + + https://github.com/dbader/schedule diff --git a/package/python-schedule/python-schedule.hash b/package/python-schedule/python-schedule.hash new file mode 100644 index 00000000..59c84c20 --- /dev/null +++ b/package/python-schedule/python-schedule.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/schedule/json +md5 ecb436a797e1a149bac4643330b268ca schedule-1.2.1.tar.gz +sha256 843bc0538b99c93f02b8b50e3e39886c06f2d003b24f48e1aa4cadfa3f341279 schedule-1.2.1.tar.gz +# Locally computed sha256 checksums +sha256 30a8352c318ce1b645acde0299697342d4380ed2637d7ca18a8ad25661e3b41b LICENSE.txt diff --git a/package/python-schedule/python-schedule.mk b/package/python-schedule/python-schedule.mk new file mode 100644 index 00000000..11be2e49 --- /dev/null +++ b/package/python-schedule/python-schedule.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-schedule +# +################################################################################ + +PYTHON_SCHEDULE_VERSION = 1.2.1 +PYTHON_SCHEDULE_SOURCE = schedule-$(PYTHON_SCHEDULE_VERSION).tar.gz +PYTHON_SCHEDULE_SITE = https://files.pythonhosted.org/packages/29/22/9dd374cbf76a42ece1f1f41cc8f4957f0ad512577372527cd3dd52758241 +PYTHON_SCHEDULE_SETUP_TYPE = setuptools +PYTHON_SCHEDULE_LICENSE = MIT +PYTHON_SCHEDULE_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-scipy/0001-build-sh4-FE.patch b/package/python-scipy/0001-build-sh4-FE.patch new file mode 100644 index 00000000..d50dd844 --- /dev/null +++ b/package/python-scipy/0001-build-sh4-FE.patch @@ -0,0 +1,36 @@ +From aae8b63ddffe014e9353c3e8d2604628433eb7d7 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 4 Dec 2022 14:14:21 +0100 +Subject: [PATCH] build sh4 FE + +ensures FE_UPWARD and FE_DOWNWARD are defined for sh4 architecture. + +Closes: #1007769. + +[Retrieved from: +https://salsa.debian.org/python-team/packages/scipy/-/blob/master/debian/patches/build_sh4_FE.patch] +Signed-off-by: Fabrice Fontaine +--- + scipy/special/_round.h | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/scipy/special/_round.h b/scipy/special/_round.h +index 013a25620..c321a1939 100644 +--- a/scipy/special/_round.h ++++ b/scipy/special/_round.h +@@ -69,5 +69,12 @@ int fegetround() + + #endif + ++/* SH4 is not C99 compliant, see https://github.com/scipy/scipy/issues/15584 */ ++#ifndef FE_UPWARD ++#define FE_UPWARD -1 ++#endif ++#ifndef FE_DOWNWARD ++#define FE_DOWNWARD -1 ++#endif + + #endif /* _round.h */ +-- +2.38.1 + diff --git a/package/python-scipy/Config.in b/package/python-scipy/Config.in new file mode 100644 index 00000000..aa7eefd4 --- /dev/null +++ b/package/python-scipy/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_PYTHON_SCIPY + bool "python-scipy" + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS # python-numpy + depends on BR2_PACKAGE_LAPACK_ARCH_SUPPORTS # lapack + depends on BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS # openblas + depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_9 # python-numpy + depends on BR2_HOST_GCC_AT_LEAST_9 # host-python-numpy + depends on BR2_TOOLCHAIN_HAS_FORTRAN # lapack + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LAPACK + select BR2_PACKAGE_OPENBLAS + select BR2_PACKAGE_PYTHON3_ZLIB # runtime scipy::io + select BR2_PACKAGE_PYTHON_NUMPY # runtime + select BR2_PACKAGE_PYTHON_PYBIND + help + The SciPy library is one of the core packages that make up the + SciPy stack. It provides many user-friendly and efficient + numerical routines such as routines for numerical integration, + interpolation, optimization, linear algebra and statistics. + + https://www.scipy.org/scipylib/ + +comment "python-scipy needs glibc or musl toolchain w/ fortran, c++, gcc >= 9, host gcc >= 9" + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + depends on BR2_PACKAGE_LAPACK_ARCH_SUPPORTS + depends on BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_FORTRAN || \ + !BR2_INSTALL_LIBSTDCPP || !BR2_HOST_GCC_AT_LEAST_9 || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_9 || \ + (!BR2_TOOLCHAIN_USES_GLIBC && !BR2_TOOLCHAIN_USES_MUSL) diff --git a/package/python-scipy/python-scipy.hash b/package/python-scipy/python-scipy.hash new file mode 100644 index 00000000..bee5d698 --- /dev/null +++ b/package/python-scipy/python-scipy.hash @@ -0,0 +1,10 @@ +# md5, sha256 from https://pypi.org/pypi/scipy/json +md5 0e8eea0f7c4fe7d8102366230c96d66d scipy-1.11.4.tar.gz +sha256 90a2b78e7f5733b9de748f589f09225013685f9b218275257f8a8168ededaeaa scipy-1.11.4.tar.gz +# Locally computed sha256 checksums +sha256 5517022426a56179540ee6eace15fd723ef8fdb83b2900fed2152dd2e2f972a2 LICENSE.txt +sha256 606209a000716c5f66e33e180ce08434b96ed17db4975ab9723c6b5fbcc89609 scipy/ndimage/LICENSE.txt +sha256 3df9207af2fdb861af0ae3b22026f163b9bcfab4e525dc4943afe2ffa3f77624 scipy/optimize/tnc/LICENSE +sha256 f0cedf52503b2d42b83411a0a16e6fefac346dfad8fddc66f50050150123470c scipy/sparse/linalg/_dsolve/SuperLU/License.txt +sha256 0926566f9f406178d1214f8cc796e166b1213dd7c05e0c5b461a8b8ac9e50bbe scipy/sparse/linalg/_eigen/arpack/ARPACK/COPYING +sha256 34db0c0c4f931861d720555c9cd7a2e228d1290ba29af0f2ee80c41bb2038afb scipy/spatial/qhull_src/COPYING.txt diff --git a/package/python-scipy/python-scipy.mk b/package/python-scipy/python-scipy.mk new file mode 100644 index 00000000..6626826e --- /dev/null +++ b/package/python-scipy/python-scipy.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# python-scipy +# +################################################################################ + +PYTHON_SCIPY_VERSION = 1.11.4 +PYTHON_SCIPY_SOURCE = scipy-$(PYTHON_SCIPY_VERSION).tar.gz +PYTHON_SCIPY_SITE = https://files.pythonhosted.org/packages/6e/1f/91144ba78dccea567a6466262922786ffc97be1e9b06ed9574ef0edc11e1 +PYTHON_SCIPY_LICENSE = \ + BSD-3-Clause, \ + BSD-2-Clause, \ + BSD, \ + BSD-Style, \ + MIT, \ + Qhull +PYTHON_SCIPY_LICENSE_FILES = \ + LICENSE.txt \ + scipy/ndimage/LICENSE.txt \ + scipy/optimize/tnc/LICENSE \ + scipy/sparse/linalg/_dsolve/SuperLU/License.txt \ + scipy/sparse/linalg/_eigen/arpack/ARPACK/COPYING \ + scipy/spatial/qhull_src/COPYING.txt +PYTHON_SCIPY_CPE_ID_VENDOR = scipy +PYTHON_SCIPY_CPE_ID_PRODUCT = scipy +PYTHON_SCIPY_DEPENDENCIES += \ + host-python-cython \ + host-python-numpy \ + host-python-pythran \ + zlib \ + lapack \ + openblas \ + python3 \ + python-numpy \ + python-pybind +PYTHON_SCIPY_INSTALL_STAGING = YES + +PYTHON_SCIPY_CONF_ENV += \ + _PYTHON_SYSCONFIGDATA_NAME=$(PKG_PYTHON_SYSCONFIGDATA_NAME) \ + PYTHONPATH=$(PYTHON3_PATH) + +PYTHON_SCIPY_CONF_OPTS = -Dblas=openblas -Dlapack=lapack + +PYTHON_SCIPY_MESON_EXTRA_PROPERTIES = \ + numpy-include-dir='$(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/numpy/core/include' + +$(eval $(meson-package)) diff --git a/package/python-sdnotify/Config.in b/package/python-sdnotify/Config.in new file mode 100644 index 00000000..bc77a067 --- /dev/null +++ b/package/python-sdnotify/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_SDNOTIFY + bool "python-sdnotify" + help + A pure Python implementation of systemd's service notification + protocol (sd_notify). + + https://github.com/bb4242/sdnotify diff --git a/package/python-sdnotify/python-sdnotify.hash b/package/python-sdnotify/python-sdnotify.hash new file mode 100644 index 00000000..6d5bd146 --- /dev/null +++ b/package/python-sdnotify/python-sdnotify.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/sdnotify/json +md5 749ddca1c70be1697fecc443fb1fdb16 sdnotify-0.3.2.tar.gz +sha256 73977fc746b36cc41184dd43c3fe81323e7b8b06c2bb0826c4f59a20c56bb9f1 sdnotify-0.3.2.tar.gz +# Locally computed sha256 checksums +sha256 038351c6f544a386576da41d5fe1320437ed211507565dd9c334c8290055b88e LICENSE.txt diff --git a/package/python-sdnotify/python-sdnotify.mk b/package/python-sdnotify/python-sdnotify.mk new file mode 100644 index 00000000..4e250eee --- /dev/null +++ b/package/python-sdnotify/python-sdnotify.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-sdnotify +# +################################################################################ + +PYTHON_SDNOTIFY_VERSION = 0.3.2 +PYTHON_SDNOTIFY_SOURCE = sdnotify-$(PYTHON_SDNOTIFY_VERSION).tar.gz +PYTHON_SDNOTIFY_SITE = https://files.pythonhosted.org/packages/ce/d8/9fdc36b2a912bf78106de4b3f0de3891ff8f369e7a6f80be842b8b0b6bd5 +PYTHON_SDNOTIFY_SETUP_TYPE = setuptools +PYTHON_SDNOTIFY_LICENSE = MIT +PYTHON_SDNOTIFY_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-secretstorage/Config.in b/package/python-secretstorage/Config.in new file mode 100644 index 00000000..f0a8689e --- /dev/null +++ b/package/python-secretstorage/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_SECRETSTORAGE + bool "python-secretstorage" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-cryptography + select BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime + help + Python bindings to FreeDesktop.org Secret Service API. + + https://github.com/mitya57/secretstorage diff --git a/package/python-secretstorage/python-secretstorage.hash b/package/python-secretstorage/python-secretstorage.hash new file mode 100644 index 00000000..ae0a5be3 --- /dev/null +++ b/package/python-secretstorage/python-secretstorage.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/secretstorage/json +md5 c6ff1cc866d2f1d274b75c6490726b1b SecretStorage-3.3.3.tar.gz +sha256 2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77 SecretStorage-3.3.3.tar.gz +# Locally computed sha256 checksums +sha256 70f6bfca77633c35efa218328eda5486d7054c2914d61820980e378797520a25 LICENSE diff --git a/package/python-secretstorage/python-secretstorage.mk b/package/python-secretstorage/python-secretstorage.mk new file mode 100644 index 00000000..81487aa8 --- /dev/null +++ b/package/python-secretstorage/python-secretstorage.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-secretstorage +# +################################################################################ + +PYTHON_SECRETSTORAGE_VERSION = 3.3.3 +PYTHON_SECRETSTORAGE_SOURCE = SecretStorage-$(PYTHON_SECRETSTORAGE_VERSION).tar.gz +PYTHON_SECRETSTORAGE_SITE = https://files.pythonhosted.org/packages/53/a4/f48c9d79cb507ed1373477dbceaba7401fd8a23af63b837fa61f1dcd3691 +PYTHON_SECRETSTORAGE_SETUP_TYPE = setuptools +PYTHON_SECRETSTORAGE_LICENSE = BSD-3-Clause +PYTHON_SECRETSTORAGE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-see/Config.in b/package/python-see/Config.in new file mode 100644 index 00000000..f3049fd8 --- /dev/null +++ b/package/python-see/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_SEE + bool "python-see" + help + dir for humans. + + https://ljcooke.github.io/see/ diff --git a/package/python-see/python-see.hash b/package/python-see/python-see.hash new file mode 100644 index 00000000..de63b101 --- /dev/null +++ b/package/python-see/python-see.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/see/json, sha256 locally computed +md5 cb3bf4d314f73a8f7a2fd3d2d99aab54 see-1.4.1.tar.gz +sha256 14f8f8a88a909a7d7dea81f0016e3fdfabd3b5d335992e102a382e1a71672bd1 see-1.4.1.tar.gz +sha256 dccbd040a7deacee7f05e5e46a8eba6e786ac319f0cb94c36f92d789585911a6 LICENSE diff --git a/package/python-see/python-see.mk b/package/python-see/python-see.mk new file mode 100644 index 00000000..982962be --- /dev/null +++ b/package/python-see/python-see.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-see +# +################################################################################ + +PYTHON_SEE_VERSION = 1.4.1 +PYTHON_SEE_SOURCE = see-$(PYTHON_SEE_VERSION).tar.gz +PYTHON_SEE_SITE = https://pypi.python.org/packages/ff/fc/fcabb6a9bfe7c56798285839780cae67342256b823b97e94d862b0ba21d6 +PYTHON_SEE_SETUP_TYPE = setuptools +PYTHON_SEE_LICENSE = BSD-3-Clause +PYTHON_SEE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-segno/Config.in b/package/python-segno/Config.in new file mode 100644 index 00000000..e6080fd4 --- /dev/null +++ b/package/python-segno/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_SEGNO + bool "python-segno" + select BR2_PACKAGE_PYTHON3_PYEXPAT # runtime + select BR2_PACKAGE_PYTHON3_ZLIB # runtime + help + QR Code and Micro QR Code generator for Python. + + https://github.com/heuer/segno/ diff --git a/package/python-segno/python-segno.hash b/package/python-segno/python-segno.hash new file mode 100644 index 00000000..58142c18 --- /dev/null +++ b/package/python-segno/python-segno.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/segno/json +md5 b80c19075a7a07cce50b054e9e221cf7 segno-1.6.0.tar.gz +sha256 8d3b11098ac6dd93161499544dedbfb187d4459088109b8855ff0bbe98105047 segno-1.6.0.tar.gz +# Locally computed sha256 checksums +sha256 3af9b2f15c736a571978760b2d60598502c205eb6daebe2ec36f0272c380ed28 LICENSE diff --git a/package/python-segno/python-segno.mk b/package/python-segno/python-segno.mk new file mode 100644 index 00000000..2c230ee2 --- /dev/null +++ b/package/python-segno/python-segno.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-segno +# +################################################################################ + +PYTHON_SEGNO_VERSION = 1.6.0 +PYTHON_SEGNO_SOURCE = segno-$(PYTHON_SEGNO_VERSION).tar.gz +PYTHON_SEGNO_SITE = https://files.pythonhosted.org/packages/51/a8/960844fec8d853a4e8e91f64bdde323ea5a2a44357eca799e7f7f7bf2f1e +PYTHON_SEGNO_SETUP_TYPE = setuptools +PYTHON_SEGNO_LICENSE = BSD-3-Clause +PYTHON_SEGNO_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-selenium/Config.in b/package/python-selenium/Config.in new file mode 100644 index 00000000..30820f07 --- /dev/null +++ b/package/python-selenium/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_SELENIUM + bool "python-selenium" + select BR2_PACKAGE_PYTHON_CERTIFI # runtime + select BR2_PACKAGE_PYTHON_PYSOCKS # runtime + select BR2_PACKAGE_PYTHON_TRIO # runtime + select BR2_PACKAGE_PYTHON_TRIO_WEBSOCKET # runtime + select BR2_PACKAGE_PYTHON_URLLIB3 # runtime + help + Python language bindings for Selenium WebDriver. + + https://www.selenium.dev diff --git a/package/python-selenium/python-selenium.hash b/package/python-selenium/python-selenium.hash new file mode 100644 index 00000000..ef1c34bf --- /dev/null +++ b/package/python-selenium/python-selenium.hash @@ -0,0 +1,3 @@ +# md5, sha256 from https://pypi.org/pypi/selenium/json +md5 9afd7110a9e06721baae028ac42a2221 selenium-4.16.0.tar.gz +sha256 b2e987a445306151f7be0e6dfe2aa72a479c2ac6a91b9d5ef2d6dd4e49ad0435 selenium-4.16.0.tar.gz diff --git a/package/python-selenium/python-selenium.mk b/package/python-selenium/python-selenium.mk new file mode 100644 index 00000000..0428cefa --- /dev/null +++ b/package/python-selenium/python-selenium.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-selenium +# +################################################################################ + +PYTHON_SELENIUM_VERSION = 4.16.0 +PYTHON_SELENIUM_SOURCE = selenium-$(PYTHON_SELENIUM_VERSION).tar.gz +PYTHON_SELENIUM_SITE = https://files.pythonhosted.org/packages/16/fd/a0ef793383077dd6296e4637acc82d1e9893e9a49a47f56e96996909e427 +PYTHON_SELENIUM_SETUP_TYPE = setuptools +PYTHON_SELENIUM_LICENSE = Apache-2.0 + +$(eval $(python-package)) diff --git a/package/python-semantic-version/python-semantic-version.hash b/package/python-semantic-version/python-semantic-version.hash new file mode 100644 index 00000000..49e28c42 --- /dev/null +++ b/package/python-semantic-version/python-semantic-version.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/semantic-version/json +md5 e48abef93ba69abcd4eaf4640edfc38b semantic_version-2.10.0.tar.gz +sha256 bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c semantic_version-2.10.0.tar.gz +# Locally computed sha256 checksums +sha256 a85e7ef2fbc670d26781ed6844cd31a7e8ada65d21328f75a0b02402faae37ea LICENSE diff --git a/package/python-semantic-version/python-semantic-version.mk b/package/python-semantic-version/python-semantic-version.mk new file mode 100644 index 00000000..76a65e73 --- /dev/null +++ b/package/python-semantic-version/python-semantic-version.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-semantic-version +# +################################################################################ + +PYTHON_SEMANTIC_VERSION_VERSION = 2.10.0 +PYTHON_SEMANTIC_VERSION_SOURCE = semantic_version-$(PYTHON_SEMANTIC_VERSION_VERSION).tar.gz +PYTHON_SEMANTIC_VERSION_SITE = https://files.pythonhosted.org/packages/7d/31/f2289ce78b9b473d582568c234e104d2a342fd658cc288a7553d83bb8595 +PYTHON_SEMANTIC_VERSION_SETUP_TYPE = setuptools +PYTHON_SEMANTIC_VERSION_LICENSE = BSD-2-Clause +PYTHON_SEMANTIC_VERSION_LICENSE_FILES = LICENSE + +$(eval $(host-python-package)) diff --git a/package/python-semver/Config.in b/package/python-semver/Config.in new file mode 100644 index 00000000..db83d8ed --- /dev/null +++ b/package/python-semver/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_SEMVER + bool "python-semver" + help + Python helper for Semantic Versioning (https://semver.org). + + https://github.com/python-semver/python-semver diff --git a/package/python-semver/python-semver.hash b/package/python-semver/python-semver.hash new file mode 100644 index 00000000..1e061676 --- /dev/null +++ b/package/python-semver/python-semver.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/semver/json +md5 0bbc4d74959c9f1522f75ffb4ae0934d semver-3.0.2.tar.gz +sha256 6253adb39c70f6e51afed2fa7152bcd414c411286088fb4b9effb133885ab4cc semver-3.0.2.tar.gz +# Locally computed sha256 checksums +sha256 cda490c32e61d3884dc17791fc8078f2a3e564fba98dd18b4dc64eb2720b2b6f LICENSE.txt diff --git a/package/python-semver/python-semver.mk b/package/python-semver/python-semver.mk new file mode 100644 index 00000000..29d7ba46 --- /dev/null +++ b/package/python-semver/python-semver.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-semver +# +################################################################################ + +PYTHON_SEMVER_VERSION = 3.0.2 +PYTHON_SEMVER_SOURCE = semver-$(PYTHON_SEMVER_VERSION).tar.gz +PYTHON_SEMVER_SITE = https://files.pythonhosted.org/packages/41/6c/a536cc008f38fd83b3c1b98ce19ead13b746b5588c9a0cb9dd9f6ea434bc +PYTHON_SEMVER_SETUP_TYPE = setuptools +PYTHON_SEMVER_LICENSE = BSD-3-Clause +PYTHON_SEMVER_LICENSE_FILES = LICENSE.txt +PYTHON_SEMVER_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-sentry-sdk/Config.in b/package/python-sentry-sdk/Config.in new file mode 100644 index 00000000..e8e88bac --- /dev/null +++ b/package/python-sentry-sdk/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_SENTRY_SDK + bool "python-sentry-sdk" + select BR2_PACKAGE_PYTHON_CERTIFI # runtime + select BR2_PACKAGE_PYTHON_URLLIB3 # runtime + help + Python client for Sentry (https://sentry.io). + + https://github.com/getsentry/sentry-python diff --git a/package/python-sentry-sdk/python-sentry-sdk.hash b/package/python-sentry-sdk/python-sentry-sdk.hash new file mode 100644 index 00000000..6060b6ca --- /dev/null +++ b/package/python-sentry-sdk/python-sentry-sdk.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/sentry-sdk/json +md5 98621433d1f8565f1f00576d47be30ce sentry_sdk-2.7.1.tar.gz +sha256 25006c7e68b75aaa5e6b9c6a420ece22e8d7daec4b7a906ffd3a8607b67c037b sentry_sdk-2.7.1.tar.gz +# Locally computed sha256 checksums +sha256 6d7ec62dc20e8b92cb88b89fb3b55ee8576505f3e1afa57952548f6eea5d008e LICENSE diff --git a/package/python-sentry-sdk/python-sentry-sdk.mk b/package/python-sentry-sdk/python-sentry-sdk.mk new file mode 100644 index 00000000..50ca8543 --- /dev/null +++ b/package/python-sentry-sdk/python-sentry-sdk.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-sentry-sdk +# +################################################################################ + +PYTHON_SENTRY_SDK_VERSION = 2.7.1 +PYTHON_SENTRY_SDK_SOURCE = sentry_sdk-$(PYTHON_SENTRY_SDK_VERSION).tar.gz +PYTHON_SENTRY_SDK_SITE = https://files.pythonhosted.org/packages/b8/63/310d89868a0dab17f6d7c1f35eba9c304dd06c2a17d0d26905738763b614 +PYTHON_SENTRY_SDK_SETUP_TYPE = setuptools +PYTHON_SENTRY_SDK_LICENSE = MIT +PYTHON_SENTRY_SDK_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-serial-asyncio/Config.in b/package/python-serial-asyncio/Config.in new file mode 100644 index 00000000..08396a0e --- /dev/null +++ b/package/python-serial-asyncio/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_SERIAL_ASYNCIO + bool "python-serial-asyncio" + select BR2_PACKAGE_PYTHON_SERIAL + help + asyncio extension package for pyserial. + + https://github.com/pyserial/pyserial-asyncio diff --git a/package/python-serial-asyncio/python-serial-asyncio.hash b/package/python-serial-asyncio/python-serial-asyncio.hash new file mode 100644 index 00000000..ccbdda89 --- /dev/null +++ b/package/python-serial-asyncio/python-serial-asyncio.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pyserial-asyncio/json +md5 409f32a35a3b530e6b2224e2a5b367da pyserial-asyncio-0.6.tar.gz +sha256 b6032923e05e9d75ec17a5af9a98429c46d2839adfaf80604d52e0faacd7a32f pyserial-asyncio-0.6.tar.gz +# Locally computed sha256 checksums +sha256 64f3e548f0300d43c5af90b667150a9c57a4307c0f75fe741f76d0419905224a LICENSE.txt diff --git a/package/python-serial-asyncio/python-serial-asyncio.mk b/package/python-serial-asyncio/python-serial-asyncio.mk new file mode 100644 index 00000000..6ee215a8 --- /dev/null +++ b/package/python-serial-asyncio/python-serial-asyncio.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-serial-asyncio +# +################################################################################ + +PYTHON_SERIAL_ASYNCIO_VERSION = 0.6 +PYTHON_SERIAL_ASYNCIO_SOURCE = pyserial-asyncio-$(PYTHON_SERIAL_ASYNCIO_VERSION).tar.gz +PYTHON_SERIAL_ASYNCIO_SITE = https://files.pythonhosted.org/packages/4a/9a/8477699dcbc1882ea51dcff4d3c25aa3f2063ed8f7d7a849fd8f610506b6 +PYTHON_SERIAL_ASYNCIO_LICENSE = BSD-3-Clause +PYTHON_SERIAL_ASYNCIO_LICENSE_FILES = LICENSE.txt +PYTHON_SERIAL_ASYNCIO_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-serial/Config.in b/package/python-serial/Config.in new file mode 100644 index 00000000..ca12d12e --- /dev/null +++ b/package/python-serial/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_SERIAL + bool "python-serial" + help + python-serial is a Python library to access serial ports. + + https://github.com/pyserial/pyserial diff --git a/package/python-serial/python-serial.hash b/package/python-serial/python-serial.hash new file mode 100644 index 00000000..d885d3c0 --- /dev/null +++ b/package/python-serial/python-serial.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pyserial/json +md5 1cf25a76da59b530dbfc2cf99392dc83 pyserial-3.5.tar.gz +sha256 3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb pyserial-3.5.tar.gz +# Locally computed sha256 checksums +sha256 f91cb9813de6a5b142b8f7f2dede630b5134160aedaeaf55f4d6a7e2593ca3f3 LICENSE.txt diff --git a/package/python-serial/python-serial.mk b/package/python-serial/python-serial.mk new file mode 100644 index 00000000..87cd9392 --- /dev/null +++ b/package/python-serial/python-serial.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-serial +# +################################################################################ + +PYTHON_SERIAL_VERSION = 3.5 +PYTHON_SERIAL_SOURCE = pyserial-$(PYTHON_SERIAL_VERSION).tar.gz +PYTHON_SERIAL_SITE = https://files.pythonhosted.org/packages/1e/7d/ae3f0a63f41e4d2f6cb66a5b57197850f919f59e558159a4dd3a818f5082 +PYTHON_SERIAL_LICENSE = BSD-3-Clause +PYTHON_SERIAL_LICENSE_FILES = LICENSE.txt +PYTHON_SERIAL_SETUP_TYPE = setuptools + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-service-identity/Config.in b/package/python-service-identity/Config.in new file mode 100644 index 00000000..3bb5c08c --- /dev/null +++ b/package/python-service-identity/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_SERVICE_IDENTITY + bool "python-service-identity" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-cryptography + select BR2_PACKAGE_PYTHON_ATTRS # runtime + select BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime + select BR2_PACKAGE_PYTHON_PYASN1 # runtime + select BR2_PACKAGE_PYTHON_PYASN1_MODULES # runtime + help + Service identity verification for pyOpenSSL. + + https://pypi.python.org/pypi/service_identity diff --git a/package/python-service-identity/python-service-identity.hash b/package/python-service-identity/python-service-identity.hash new file mode 100644 index 00000000..32d8f21a --- /dev/null +++ b/package/python-service-identity/python-service-identity.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/service-identity/json +md5 14a751406024544784459474d93d1ea5 service_identity-23.1.0.tar.gz +sha256 ecb33cd96307755041e978ab14f8b14e13b40f1fbd525a4dc78f46d2b986431d service_identity-23.1.0.tar.gz +# Locally computed sha256 checksums +sha256 51f7c647190e74d19f9f24f1b19645b425eb8f30f049196053686bff188505cf LICENSE diff --git a/package/python-service-identity/python-service-identity.mk b/package/python-service-identity/python-service-identity.mk new file mode 100644 index 00000000..6e61dd95 --- /dev/null +++ b/package/python-service-identity/python-service-identity.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# python-service-identity +# +################################################################################ + +PYTHON_SERVICE_IDENTITY_VERSION = 23.1.0 +PYTHON_SERVICE_IDENTITY_SOURCE = service_identity-$(PYTHON_SERVICE_IDENTITY_VERSION).tar.gz +PYTHON_SERVICE_IDENTITY_SITE = https://files.pythonhosted.org/packages/3b/98/2a46c7414ffc1d06ba67d2c2dd62a207a70cb351028a8cd8c85b3dbd1cf7 +PYTHON_SERVICE_IDENTITY_LICENSE = MIT +PYTHON_SERVICE_IDENTITY_LICENSE_FILES = LICENSE +PYTHON_SERVICE_IDENTITY_SETUP_TYPE = pep517 +PYTHON_SERVICE_IDENTITY_DEPENDENCIES = \ + host-python-hatchling \ + host-python-hatch-vcs \ + host-python-hatch-fancy-pypi-readme + +$(eval $(python-package)) diff --git a/package/python-setproctitle/Config.in b/package/python-setproctitle/Config.in new file mode 100644 index 00000000..d13afaa4 --- /dev/null +++ b/package/python-setproctitle/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_SETPROCTITLE + bool "python-setproctitle" + help + A Python module to customize the process title. + + https://pypi.python.org/pypi/setproctitle diff --git a/package/python-setproctitle/python-setproctitle.hash b/package/python-setproctitle/python-setproctitle.hash new file mode 100644 index 00000000..f60595bf --- /dev/null +++ b/package/python-setproctitle/python-setproctitle.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/setproctitle/json +md5 1c042d6717212de791c4f9b63e7b544e setproctitle-1.3.3.tar.gz +sha256 c913e151e7ea01567837ff037a23ca8740192880198b7fbb90b16d181607caae setproctitle-1.3.3.tar.gz +# Locally computed sha256 checksums +sha256 4ace14d0836da75079088cfc5cef6f2ddc8ce16f600609b36ee1bf10f8101f61 COPYRIGHT diff --git a/package/python-setproctitle/python-setproctitle.mk b/package/python-setproctitle/python-setproctitle.mk new file mode 100644 index 00000000..ca2d0ffb --- /dev/null +++ b/package/python-setproctitle/python-setproctitle.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-setproctitle +# +################################################################################ + +PYTHON_SETPROCTITLE_VERSION = 1.3.3 +PYTHON_SETPROCTITLE_SOURCE = setproctitle-$(PYTHON_SETPROCTITLE_VERSION).tar.gz +PYTHON_SETPROCTITLE_SITE = https://files.pythonhosted.org/packages/ff/e1/b16b16a1aa12174349d15b73fd4b87e641a8ae3fb1163e80938dbbf6ae98 +PYTHON_SETPROCTITLE_LICENSE = BSD-3-Clause +PYTHON_SETPROCTITLE_LICENSE_FILES = COPYRIGHT +PYTHON_SETPROCTITLE_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-setuptools-rust/python-setuptools-rust.hash b/package/python-setuptools-rust/python-setuptools-rust.hash new file mode 100644 index 00000000..61d2c8a1 --- /dev/null +++ b/package/python-setuptools-rust/python-setuptools-rust.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/setuptools-rust/json +md5 e3be6366d0d71304ca859edca3c89606 setuptools-rust-1.9.0.tar.gz +sha256 704df0948f2e4cc60c2596ad6e840ea679f4f43e58ed4ad0c1857807240eab96 setuptools-rust-1.9.0.tar.gz +# Locally computed sha256 checksums +sha256 b20668c1590582b3882854050ccfbdb7aee1f71a1ffe9eacc4c5aeb08a14161b LICENSE diff --git a/package/python-setuptools-rust/python-setuptools-rust.mk b/package/python-setuptools-rust/python-setuptools-rust.mk new file mode 100644 index 00000000..14930501 --- /dev/null +++ b/package/python-setuptools-rust/python-setuptools-rust.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# python-setuptools-rust +# +################################################################################ + +PYTHON_SETUPTOOLS_RUST_VERSION = 1.9.0 +PYTHON_SETUPTOOLS_RUST_SOURCE = setuptools-rust-$(PYTHON_SETUPTOOLS_RUST_VERSION).tar.gz +PYTHON_SETUPTOOLS_RUST_SITE = https://files.pythonhosted.org/packages/9d/f1/2cb8887cad0726a5e429cc9c58e30767f58d22c34d55b075d2f845d4a2a5 +PYTHON_SETUPTOOLS_RUST_SETUP_TYPE = setuptools +PYTHON_SETUPTOOLS_RUST_LICENSE = MIT +PYTHON_SETUPTOOLS_RUST_LICENSE_FILES = LICENSE +HOST_PYTHON_SETUPTOOLS_RUST_DEPENDENCIES = \ + host-python-semantic-version \ + host-python-setuptools-scm \ + host-rustc + +$(eval $(host-python-package)) diff --git a/package/python-setuptools-scm/python-setuptools-scm.hash b/package/python-setuptools-scm/python-setuptools-scm.hash new file mode 100644 index 00000000..1a884dbb --- /dev/null +++ b/package/python-setuptools-scm/python-setuptools-scm.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/setuptools-scm/json +md5 a05e98ab9ae447e173f0c747e0d49e81 setuptools-scm-8.0.4.tar.gz +sha256 b5f43ff6800669595193fd09891564ee9d1d7dcb196cab4b2506d53a2e1c95c7 setuptools-scm-8.0.4.tar.gz +# Locally computed sha256 checksums +sha256 89807acf2309bd285f033404ee78581602f3cd9b819a16ac2f0e5f60ff4a473e LICENSE diff --git a/package/python-setuptools-scm/python-setuptools-scm.mk b/package/python-setuptools-scm/python-setuptools-scm.mk new file mode 100644 index 00000000..4cbf9146 --- /dev/null +++ b/package/python-setuptools-scm/python-setuptools-scm.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# python-setuptools-scm +# +################################################################################ + +PYTHON_SETUPTOOLS_SCM_VERSION = 8.0.4 +PYTHON_SETUPTOOLS_SCM_SOURCE = setuptools-scm-$(PYTHON_SETUPTOOLS_SCM_VERSION).tar.gz +PYTHON_SETUPTOOLS_SCM_SITE = https://files.pythonhosted.org/packages/eb/b1/0248705f10f6de5eefe7ff93e399f7192257b23df4d431d2f5680bb2778f +PYTHON_SETUPTOOLS_SCM_LICENSE = MIT +PYTHON_SETUPTOOLS_SCM_LICENSE_FILES = LICENSE +PYTHON_SETUPTOOLS_SCM_SETUP_TYPE = pep517 + +HOST_PYTHON_SETUPTOOLS_SCM_DEPENDENCIES = \ + host-python-packaging \ + host-python-setuptools \ + host-python-typing-extensions + +$(eval $(host-python-package)) diff --git a/package/python-setuptools/0001-add-executable.patch b/package/python-setuptools/0001-add-executable.patch new file mode 100644 index 00000000..da1bc68b --- /dev/null +++ b/package/python-setuptools/0001-add-executable.patch @@ -0,0 +1,73 @@ +From a35dffe950d7bb0f7988d78ec4a963c5ce67e3c8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Mon, 7 Dec 2015 01:14:33 +0100 +Subject: [PATCH] add executable +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Add a new --executable option to distribute so that we can +force the shebang line in installed python scripts. + +[Thomas: refresh for setuptools 5.8.] +[Jörg: refresh for setuptools 18.7.1] + +Signed-off-by: Gustavo Zacarias +Signed-off-by: Thomas Petazzoni +Signed-off-by: Jörg Krause +Signed-off-by: James Hilliard +--- + setuptools/command/install.py | 2 ++ + setuptools/command/install_scripts.py | 9 +++++++++ + 2 files changed, 11 insertions(+) + +diff --git a/setuptools/command/install.py b/setuptools/command/install.py +index c49fcda93..851950522 100644 +--- a/setuptools/command/install.py ++++ b/setuptools/command/install.py +@@ -18,6 +18,7 @@ class install(orig.install): + """Use easy_install to install the package, w/dependencies""" + + user_options = orig.install.user_options + [ ++ ('executable=', 'e', "specify final destination interpreter path"), + ('old-and-unmanageable', None, "Try not to use this!"), + ( + 'single-version-externally-managed', +@@ -50,6 +51,7 @@ class install(orig.install): + ) + + super().initialize_options() ++ self.executable = None + self.old_and_unmanageable = None + self.single_version_externally_managed = None + +diff --git a/setuptools/command/install_scripts.py b/setuptools/command/install_scripts.py +index f44281b49..9e91cad87 100644 +--- a/setuptools/command/install_scripts.py ++++ b/setuptools/command/install_scripts.py +@@ -14,6 +14,13 @@ class install_scripts(orig.install_scripts): + def initialize_options(self): + orig.install_scripts.initialize_options(self) + self.no_ep = False ++ self.executable = None ++ ++ def finalize_options(self): ++ orig.install_scripts.finalize_options(self) ++ self.set_undefined_options('install', ++ ('executable','executable') ++ ) + + def run(self) -> None: + self.run_command("egg_info") +@@ -40,6 +47,8 @@ class install_scripts(orig.install_scripts): + ) + bs_cmd = self.get_finalized_command('build_scripts') + exec_param = getattr(bs_cmd, 'executable', None) ++ if self.executable is not None: ++ exec_param = self.executable + writer = ei.ScriptWriter + if exec_param == sys.executable: + # In case the path to the Python executable contains a space, wrap +-- +2.34.1 + diff --git a/package/python-setuptools/Config.in b/package/python-setuptools/Config.in new file mode 100644 index 00000000..d47f7587 --- /dev/null +++ b/package/python-setuptools/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_SETUPTOOLS + bool "python-setuptools" + select BR2_PACKAGE_PYTHON3_PYEXPAT # runtime + select BR2_PACKAGE_PYTHON3_ZLIB # runtime + help + Download, build, install, upgrade, and uninstall Python + packages. + + http://pypi.python.org/pypi/setuptools diff --git a/package/python-setuptools/python-setuptools.hash b/package/python-setuptools/python-setuptools.hash new file mode 100644 index 00000000..29237427 --- /dev/null +++ b/package/python-setuptools/python-setuptools.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/setuptools/json +md5 f404be507829989fcff7a8b63d92f357 setuptools-71.0.3.tar.gz +sha256 3d8531791a27056f4a38cd3e54084d8b1c4228ff9cf3f2d7dd075ec99f9fd70d setuptools-71.0.3.tar.gz +# Locally computed sha256 checksums +sha256 86da0f01aeae46348a3c3d465195dc1ceccde79f79e87769a64b8da04b2a4741 LICENSE diff --git a/package/python-setuptools/python-setuptools.mk b/package/python-setuptools/python-setuptools.mk new file mode 100644 index 00000000..cf7016ec --- /dev/null +++ b/package/python-setuptools/python-setuptools.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# python-setuptools +# +################################################################################ + +PYTHON_SETUPTOOLS_VERSION = 71.0.3 +PYTHON_SETUPTOOLS_SOURCE = setuptools-$(PYTHON_SETUPTOOLS_VERSION).tar.gz +PYTHON_SETUPTOOLS_SITE = https://files.pythonhosted.org/packages/d1/8e/1d0b941ce1151009c6d98a0a590a608f346d4d272ce95ca09ee2bbb592cd +PYTHON_SETUPTOOLS_LICENSE = MIT +PYTHON_SETUPTOOLS_LICENSE_FILES = LICENSE +PYTHON_SETUPTOOLS_CPE_ID_VENDOR = python +PYTHON_SETUPTOOLS_CPE_ID_PRODUCT = setuptools +PYTHON_SETUPTOOLS_SETUP_TYPE = pep517 +PYTHON_SETUPTOOLS_DEPENDENCIES = host-python-wheel +HOST_PYTHON_SETUPTOOLS_DEPENDENCIES = host-python-wheel + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-sh/Config.in b/package/python-sh/Config.in new file mode 100644 index 00000000..b55ea4a3 --- /dev/null +++ b/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/package/python-sh/python-sh.hash b/package/python-sh/python-sh.hash new file mode 100644 index 00000000..c0d3f62f --- /dev/null +++ b/package/python-sh/python-sh.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/sh/json +md5 aadf37759a9cb4862257cef3cf44a27b sh-2.0.6.tar.gz +sha256 9b2998f313f201c777e2c0061f0b1367497097ef13388595be147e2a00bf7ba1 sh-2.0.6.tar.gz +# Locally computed sha256 checksums +sha256 d8491c6e236568d04f7c8c07f2f1b8f5d142706dab6ab88f6e0d2dd476b6c706 LICENSE.txt diff --git a/package/python-sh/python-sh.mk b/package/python-sh/python-sh.mk new file mode 100644 index 00000000..29843d64 --- /dev/null +++ b/package/python-sh/python-sh.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-sh +# +################################################################################ + +PYTHON_SH_VERSION = 2.0.6 +PYTHON_SH_SOURCE = sh-$(PYTHON_SH_VERSION).tar.gz +PYTHON_SH_SITE = https://files.pythonhosted.org/packages/cd/51/7355831d8e1cee8348157d769ccda8a31ca9fa0548e7f93d87837d83866d +PYTHON_SH_SETUP_TYPE = pep517 +PYTHON_SH_LICENSE = MIT +PYTHON_SH_LICENSE_FILES = LICENSE.txt +PYTHON_SH_DEPENDENCIES = host-python-poetry-core + +$(eval $(python-package)) diff --git a/package/python-shutilwhich/Config.in b/package/python-shutilwhich/Config.in new file mode 100644 index 00000000..a75a63bb --- /dev/null +++ b/package/python-shutilwhich/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_SHUTILWHICH + bool "python-shutilwhich" + help + shutil.which for those not using Python 3.3 yet. + + https://pypi.python.org/pypi/shutilwhich/ diff --git a/package/python-shutilwhich/python-shutilwhich.hash b/package/python-shutilwhich/python-shutilwhich.hash new file mode 100644 index 00000000..ddf3cefd --- /dev/null +++ b/package/python-shutilwhich/python-shutilwhich.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=915947c5cdae7afd748ac715ee547adb, sha256 locally computed. +md5 915947c5cdae7afd748ac715ee547adb shutilwhich-1.1.0.tar.gz +sha256 db1f39c6461e42f630fa617bb8c79090f7711c9ca493e615e43d0610ecb64dc6 shutilwhich-1.1.0.tar.gz diff --git a/package/python-shutilwhich/python-shutilwhich.mk b/package/python-shutilwhich/python-shutilwhich.mk new file mode 100644 index 00000000..0cf968a4 --- /dev/null +++ b/package/python-shutilwhich/python-shutilwhich.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-shutilwhich +# +################################################################################ + +PYTHON_SHUTILWHICH_VERSION = 1.1.0 +PYTHON_SHUTILWHICH_SOURCE = shutilwhich-$(PYTHON_SHUTILWHICH_VERSION).tar.gz +PYTHON_SHUTILWHICH_SITE = https://pypi.python.org/packages/source/s/shutilwhich +PYTHON_SHUTILWHICH_LICENSE = Python-2.0 +PYTHON_SHUTILWHICH_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-simpleaudio/Config.in b/package/python-simpleaudio/Config.in new file mode 100644 index 00000000..1169342b --- /dev/null +++ b/package/python-simpleaudio/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_SIMPLEAUDIO + bool "python-simpleaudio" + 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/package/python-simpleaudio/python-simpleaudio.hash b/package/python-simpleaudio/python-simpleaudio.hash new file mode 100644 index 00000000..0aac4c86 --- /dev/null +++ b/package/python-simpleaudio/python-simpleaudio.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/simpleaudio/json +md5 8bd62157c286824e289e1f258419b98c simpleaudio-1.0.4.tar.gz +sha256 691c88649243544db717e7edf6a9831df112104e1aefb5f6038a5d071e8cf41d simpleaudio-1.0.4.tar.gz +# Locally computed sha256 checksums +sha256 b4340683e83f0f25ea40f992773ceec6c749c4d64ec2c09dfa49d7f5b029adbf LICENSE.txt diff --git a/package/python-simpleaudio/python-simpleaudio.mk b/package/python-simpleaudio/python-simpleaudio.mk new file mode 100644 index 00000000..5cdb3a82 --- /dev/null +++ b/package/python-simpleaudio/python-simpleaudio.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-simpleaudio +# +################################################################################ + +PYTHON_SIMPLEAUDIO_VERSION = 1.0.4 +PYTHON_SIMPLEAUDIO_SOURCE = simpleaudio-$(PYTHON_SIMPLEAUDIO_VERSION).tar.gz +PYTHON_SIMPLEAUDIO_SITE = https://files.pythonhosted.org/packages/94/1b/4dc29653733202b68c09d9c6ca085cf67ac54859ee860647ef21ac1ff3dc +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/package/python-simplegeneric/Config.in b/package/python-simplegeneric/Config.in new file mode 100644 index 00000000..623b1ae9 --- /dev/null +++ b/package/python-simplegeneric/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_SIMPLEGENERIC + bool "python-simplegeneric" + help + Simple generic functions (similar to Python's own len(), + pickle.dump(), etc.) + + https://pypi.python.org/pypi/simplegeneric diff --git a/package/python-simplegeneric/python-simplegeneric.hash b/package/python-simplegeneric/python-simplegeneric.hash new file mode 100644 index 00000000..1dc42d35 --- /dev/null +++ b/package/python-simplegeneric/python-simplegeneric.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/simplegeneric, sha256 locally computed +md5 f9c1fab00fd981be588fc32759f474e3 simplegeneric-0.8.1.zip +sha256 dc972e06094b9af5b855b3df4a646395e43d1c9d0d39ed345b7393560d0b9173 simplegeneric-0.8.1.zip diff --git a/package/python-simplegeneric/python-simplegeneric.mk b/package/python-simplegeneric/python-simplegeneric.mk new file mode 100644 index 00000000..d3bfa69a --- /dev/null +++ b/package/python-simplegeneric/python-simplegeneric.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# python-simplegeneric +# +################################################################################ + +PYTHON_SIMPLEGENERIC_VERSION = 0.8.1 +PYTHON_SIMPLEGENERIC_SOURCE = simplegeneric-$(PYTHON_SIMPLEGENERIC_VERSION).zip +PYTHON_SIMPLEGENERIC_SITE = https://pypi.python.org/packages/3d/57/4d9c9e3ae9a255cd4e1106bb57e24056d3d0709fc01b2e3e345898e49d5b +PYTHON_SIMPLEGENERIC_LICENSE = ZPL-2.1 + +# Force setup-type to be 'setuptools' in order to force the package to +# be installed with --single-version-externally-managed. Otherwise we +# end up with a .egg file, which is a zip archive, and as such forces +# us to have 'zlib' as a runtime dependency +PYTHON_SIMPLEGENERIC_SETUP_TYPE = setuptools + +define PYTHON_SIMPLEGENERIC_EXTRACT_CMDS + unzip $(PYTHON_SIMPLEGENERIC_DL_DIR)/$(PYTHON_SIMPLEGENERIC_SOURCE) -d $(@D) + mv $(@D)/simplegeneric-$(PYTHON_SIMPLEGENERIC_VERSION)/* $(@D) + rmdir $(@D)/simplegeneric-$(PYTHON_SIMPLEGENERIC_VERSION) +endef + +$(eval $(python-package)) diff --git a/package/python-simplejson/Config.in b/package/python-simplejson/Config.in new file mode 100644 index 00000000..c2fd9177 --- /dev/null +++ b/package/python-simplejson/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_SIMPLEJSON + bool "python-simplejson" + help + Simple, fast, extensible JSON encoder/decoder for Python. + + https://pypi.python.org/pypi/simplejson/ diff --git a/package/python-simplejson/python-simplejson.hash b/package/python-simplejson/python-simplejson.hash new file mode 100644 index 00000000..9f96f99b --- /dev/null +++ b/package/python-simplejson/python-simplejson.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/simplejson/json +md5 3b334627d870a3c849e1322d18a7bfe7 simplejson-3.19.2.tar.gz +sha256 9eb442a2442ce417801c912df68e1f6ccfcd41577ae7274953ab3ad24ef7d82c simplejson-3.19.2.tar.gz +# Locally computed sha256 checksums +sha256 fcaa1e313a99304322e2e0836ea4ee7d839ce9a480438f3922a853edfdde129f LICENSE.txt diff --git a/package/python-simplejson/python-simplejson.mk b/package/python-simplejson/python-simplejson.mk new file mode 100644 index 00000000..d5ba3948 --- /dev/null +++ b/package/python-simplejson/python-simplejson.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-simplejson +# +################################################################################ + +PYTHON_SIMPLEJSON_VERSION = 3.19.2 +PYTHON_SIMPLEJSON_SOURCE = simplejson-$(PYTHON_SIMPLEJSON_VERSION).tar.gz +PYTHON_SIMPLEJSON_SITE = https://files.pythonhosted.org/packages/79/79/3ccb95bb4154952532f280f7a41979fbfb0fbbaee4d609810ecb01650afa +PYTHON_SIMPLEJSON_LICENSE = Academic Free License (AFL), MIT +PYTHON_SIMPLEJSON_LICENSE_FILES = LICENSE.txt +PYTHON_SIMPLEJSON_CPE_ID_VENDOR = simplejson_project +PYTHON_SIMPLEJSON_CPE_ID_PRODUCT = simplejson +PYTHON_SIMPLEJSON_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-simplelogging/0001-Switch-build-backend-to-poetry-core.patch b/package/python-simplelogging/0001-Switch-build-backend-to-poetry-core.patch new file mode 100644 index 00000000..2c345fe2 --- /dev/null +++ b/package/python-simplelogging/0001-Switch-build-backend-to-poetry-core.patch @@ -0,0 +1,31 @@ +From 76c1c545bad28f592405ca1e5bcf6081051c946a Mon Sep 17 00:00:00 2001 +From: James Hilliard +Date: Tue, 13 Feb 2024 13:37:00 -0700 +Subject: [PATCH] Switch build-backend to poetry-core + +poetry-core is the lightweight counterpart of poetry that is intended +to be used as a build-backend. Unlike poetry, it does not require +installing all the dependencies of the package manager, making +the builds much faster. The generated artifacts are the same. + +Signed-off-by: James Hilliard +Upstream: https://github.com/vpoulailleau/simplelogging/pull/230 +--- + pyproject.toml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/pyproject.toml b/pyproject.toml +index a89ab64..79403cb 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -55,5 +55,5 @@ commands = + """ + + [build-system] +-requires = ["poetry>=0.12"] +-build-backend = "poetry.masonry.api" ++requires = ["poetry-core>=1.0.0"] ++build-backend = "poetry.core.masonry.api" +-- +2.34.1 + diff --git a/package/python-simplelogging/Config.in b/package/python-simplelogging/Config.in new file mode 100644 index 00000000..db95efa2 --- /dev/null +++ b/package/python-simplelogging/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_SIMPLELOGGING + bool "python-simplelogging" + select BR2_PACKAGE_PYTHON_COLORLOG # runtime + help + Logging made simple, no excuse for any debug print call. + + https://github.com/vpoulailleau/simplelogging diff --git a/package/python-simplelogging/python-simplelogging.hash b/package/python-simplelogging/python-simplelogging.hash new file mode 100644 index 00000000..6d80fb93 --- /dev/null +++ b/package/python-simplelogging/python-simplelogging.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/simplelogging/json +md5 97b5f2a5cd9cff1b60c727cd03b3ffe1 simplelogging-0.11.0.tar.gz +sha256 23a128b47d3e88213adc51fdd102aae15a398cf459d782eb19534945d23f0bc5 simplelogging-0.11.0.tar.gz +# Locally computed sha256 checksums +sha256 bd2a0fe3b3bab7092ffa7f58d46bb05d98f12f107b3a6be947c098f7c2ad1d1a LICENSE diff --git a/package/python-simplelogging/python-simplelogging.mk b/package/python-simplelogging/python-simplelogging.mk new file mode 100644 index 00000000..dbd9ce3a --- /dev/null +++ b/package/python-simplelogging/python-simplelogging.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-simplelogging +# +################################################################################ + +PYTHON_SIMPLELOGGING_VERSION = 0.11.0 +PYTHON_SIMPLELOGGING_SOURCE = simplelogging-$(PYTHON_SIMPLELOGGING_VERSION).tar.gz +PYTHON_SIMPLELOGGING_SITE = https://files.pythonhosted.org/packages/73/d6/4c06aa7f2c3b9fc09429a1196fd357357cc555de5e16c09b2d12e9db1ebb +PYTHON_SIMPLELOGGING_SETUP_TYPE = pep517 +PYTHON_SIMPLELOGGING_LICENSE = BSD-3-Clause +PYTHON_SIMPLELOGGING_LICENSE_FILES = LICENSE +PYTHON_SIMPLELOGGING_DEPENDENCIES = host-python-poetry-core + +$(eval $(python-package)) diff --git a/package/python-simplesqlite/Config.in b/package/python-simplesqlite/Config.in new file mode 100644 index 00000000..d650439d --- /dev/null +++ b/package/python-simplesqlite/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PYTHON_SIMPLESQLITE + bool "python-simplesqlite" + select BR2_PACKAGE_PYTHON_DATAPROPERTY # runtime + select BR2_PACKAGE_PYTHON_MBSTRDECODER # runtime + select BR2_PACKAGE_PYTHON_PATHVALIDATE # runtime + select BR2_PACKAGE_PYTHON3_SQLITE # runtime + select BR2_PACKAGE_PYTHON_SQLITESCHEMA # runtime + select BR2_PACKAGE_PYTHON_TABLEDATA # runtime + select BR2_PACKAGE_PYTHON_TYPEPY # runtime + help + SimpleSQLite is a Python library to simplify SQLite database + operations: table creation, data insertion and get data as + other data formats. + + https://github.com/thombashi/SimpleSQLite diff --git a/package/python-simplesqlite/python-simplesqlite.hash b/package/python-simplesqlite/python-simplesqlite.hash new file mode 100644 index 00000000..80604377 --- /dev/null +++ b/package/python-simplesqlite/python-simplesqlite.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/simplesqlite/json +md5 a907352592539345bf8145c3e39015cb SimpleSQLite-1.5.2.tar.gz +sha256 f9a25b9e43d7aa28f551d170a42cfae10139c5c81a1bcb8776f857816ef5ae0f SimpleSQLite-1.5.2.tar.gz +# Locally computed sha256 checksums +sha256 a93d75bcb0774e2990106380cadad6dcb2de193c55d435ffc56ba345a08b1dc2 LICENSE diff --git a/package/python-simplesqlite/python-simplesqlite.mk b/package/python-simplesqlite/python-simplesqlite.mk new file mode 100644 index 00000000..d8efe23a --- /dev/null +++ b/package/python-simplesqlite/python-simplesqlite.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-simplesqlite +# +################################################################################ + +PYTHON_SIMPLESQLITE_VERSION = 1.5.2 +PYTHON_SIMPLESQLITE_SOURCE = SimpleSQLite-$(PYTHON_SIMPLESQLITE_VERSION).tar.gz +PYTHON_SIMPLESQLITE_SITE = https://files.pythonhosted.org/packages/c8/07/92e3291fda6f1bbf6e7ff4721d87566e1615572d9c205ef64398c5d22efe +PYTHON_SIMPLESQLITE_SETUP_TYPE = setuptools +PYTHON_SIMPLESQLITE_LICENSE = MIT +PYTHON_SIMPLESQLITE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-sip/0001-remove-join-from-sip-h-files-string.patch b/package/python-sip/0001-remove-join-from-sip-h-files-string.patch new file mode 100644 index 00000000..e7a0d606 --- /dev/null +++ b/package/python-sip/0001-remove-join-from-sip-h-files-string.patch @@ -0,0 +1,33 @@ +From 009e5cf0750134ed5403aae23ef53a177764ca04 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Wed, 29 Dec 2021 13:49:15 -0800 +Subject: [PATCH] remove join from sip_h.files string + +When cross compiling, the configure system appends the hosts /usr/ directory +to the path of which to find files that python-sip will install. This leads to +python-sip attempting to install everything under the hosts /usr directory into +the targets /usr/include/python directory. + +Remove the .join() in the sip_h.files string to prevent the above issue. + +Signed-off-by: Adam Duskett +--- + configure.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.py b/configure.py +index 25bcaa7..fc8f2dc 100644 +--- a/configure.py ++++ b/configure.py +@@ -408,7 +408,7 @@ def create_makefiles(macros): + # There will only be one element. + files, path = gen_installs[0] + pro.write("\n") +- pro.write("sip_h.files = %s\n" % " ".join(files)) ++ pro.write("sip_h.files = %s\n" % files) + pro.write("sip_h.path = %s\n" % quote(path)) + pro.write("INSTALLS += sip_h\n") + +-- +2.33.1 + diff --git a/package/python-sip/0002-siplib-fix-build-with-python-3.11.patch b/package/python-sip/0002-siplib-fix-build-with-python-3.11.patch new file mode 100644 index 00000000..17c3e053 --- /dev/null +++ b/package/python-sip/0002-siplib-fix-build-with-python-3.11.patch @@ -0,0 +1,66 @@ +From e8bbb7844c141b339ef0598decf2a808faa50f5e Mon Sep 17 00:00:00 2001 +From: Ralf Dragon +Date: Sun, 17 Dec 2023 22:55:17 +0100 +Subject: [PATCH] siplib: fix build with python >= 3.11 + +With python 3.11, the PyFrameObject structure members have been +removed from the public C API: + +https://docs.python.org/3.11/whatsnew/3.11.html#whatsnew311-c-api-porting +https://docs.python.org/3.11/whatsnew/3.11.html#pyframeobject-3-11-hiding + +This patch migrates to the opaque PyFrameObject. + +Upstream: Not Applicable, SIP 4.x is no longer maintained +Signed-off-by: Ralf Dragon +--- + siplib/sip.h | 2 +- + siplib/siplib.c | 8 ++++---- + 2 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/siplib/sip.h b/siplib/sip.h +index 251b122..b9d8ea2 100644 +--- a/siplib/sip.h ++++ b/siplib/sip.h +@@ -1799,7 +1799,7 @@ typedef struct _sipAPIDef { + int (*api_get_time)(PyObject *, sipTimeDef *); + PyObject *(*api_from_time)(const sipTimeDef *); + int (*api_is_user_type)(const sipWrapperType *); +- struct _frame *(*api_get_frame)(int); ++ PyFrameObject *(*api_get_frame)(int); + int (*api_check_plugin_for_type)(const sipTypeDef *, const char *); + PyObject *(*api_unicode_new)(SIP_SSIZE_T, unsigned, int *, void **); + void (*api_unicode_write)(int, void *, int, unsigned); +diff --git a/siplib/siplib.c b/siplib/siplib.c +index db52b68..a297855 100644 +--- a/siplib/siplib.c ++++ b/siplib/siplib.c +@@ -448,7 +448,7 @@ static PyObject *sip_api_from_datetime(const sipDateDef *date, + static int sip_api_get_time(PyObject *obj, sipTimeDef *time); + static PyObject *sip_api_from_time(const sipTimeDef *time); + static int sip_api_is_user_type(const sipWrapperType *wt); +-static struct _frame *sip_api_get_frame(int); ++static PyFrameObject *sip_api_get_frame(int); + static int sip_api_check_plugin_for_type(const sipTypeDef *td, + const char *name); + static PyObject *sip_api_unicode_new(SIP_SSIZE_T len, unsigned maxchar, +@@ -13741,13 +13741,13 @@ static int sip_api_is_user_type(const sipWrapperType *wt) + /* + * Return a frame from the execution stack. + */ +-static struct _frame *sip_api_get_frame(int depth) ++static PyFrameObject *sip_api_get_frame(int depth) + { +- struct _frame *frame = PyEval_GetFrame(); ++ PyFrameObject *frame = PyEval_GetFrame(); + + while (frame != NULL && depth > 0) + { +- frame = frame->f_back; ++ frame = PyFrame_GetBack(frame); + --depth; + } + +-- +2.43.0 + diff --git a/package/python-sip/Config.in b/package/python-sip/Config.in new file mode 100644 index 00000000..8a43b8b1 --- /dev/null +++ b/package/python-sip/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_PYTHON_SIP + bool "python-sip" + depends on 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 + developed to create PyQt, the Python bindings for the Qt + toolkit, but can be used to create bindings for any C or C++ + library. + + SIP comprises a code generator and a Python module. The code + generator processes a set of specification files and + generates C or C++ code which is then compiled to create the + bindings extension module. The SIP Python module provides + support functions to the automatically generated code. + + http://www.riverbankcomputing.com/software/sip/intro diff --git a/package/python-sip/python-sip.hash b/package/python-sip/python-sip.hash new file mode 100644 index 00000000..0108924c --- /dev/null +++ b/package/python-sip/python-sip.hash @@ -0,0 +1,5 @@ +# Locally calculated: +sha256 b39d93e937647807bac23579edbff25fe46d16213f708370072574ab1f1b4211 sip-4.19.25.tar.gz +sha256 accecbfda71ad4497bce0d451796706e734e405e5ecf3b3f9ee0cc68300a3d9c LICENSE +sha256 7ebb61006e46b9e9340dd135d5f4afbbcb1d1d6c6709f74473b35929007b9aeb LICENSE-GPL2 +sha256 63cb5f5c1ea39b732c495f354f971e40f6db84c567ca5573a68bb65af07741f8 LICENSE-GPL3 diff --git a/package/python-sip/python-sip.mk b/package/python-sip/python-sip.mk new file mode 100644 index 00000000..392928f0 --- /dev/null +++ b/package/python-sip/python-sip.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# python-sip +# +################################################################################ + +PYTHON_SIP_VERSION = 4.19.25 +PYTHON_SIP_SOURCE = sip-$(PYTHON_SIP_VERSION).tar.gz +PYTHON_SIP_SITE = https://www.riverbankcomputing.com/static/Downloads/sip/$(PYTHON_SIP_VERSION) +PYTHON_SIP_LICENSE = SIP license or GPL-2.0 or GPL-3.0 +PYTHON_SIP_LICENSE_FILES = LICENSE LICENSE-GPL2 LICENSE-GPL3 +PYTHON_SIP_DEPENDENCIES = host-python-setuptools python3 qt5base +HOST_PYTHON_SIP_DEPENDENCIES = host-python3 host-python-setuptools + +define HOST_PYTHON_SIP_CONFIGURE_CMDS + (cd $(@D); \ + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(HOST_DIR)/bin/python configure.py) +endef + +define HOST_PYTHON_SIP_BUILD_CMDS + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define HOST_PYTHON_SIP_INSTALL_CMDS + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) install -C $(@D) +endef + +define PYTHON_SIP_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(HOST_DIR)/bin/python configure.py \ + --bindir $(TARGET_DIR)/usr/bin \ + --destdir $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages \ + --incdir $(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR) \ + --sipdir $(TARGET_DIR)/usr/share/sip \ + --sysroot $(STAGING_DIR)/usr \ + --no-stubs \ + --use-qmake && \ + $(HOST_DIR)/bin/qmake) +endef + +define PYTHON_SIP_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define PYTHON_SIP_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) install -C $(@D) +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/python-six/Config.in b/package/python-six/Config.in new file mode 100644 index 00000000..0a8b69ac --- /dev/null +++ b/package/python-six/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_SIX + bool "python-six" + help + Six is a Python 2 and 3 compatibility library. It provides + utility functions for smoothing over the differences between + the Python versions with the goal of writing Python code that + is compatible on both Python versions. + + http://pythonhosted.org/six diff --git a/package/python-six/Config.in.host b/package/python-six/Config.in.host new file mode 100644 index 00000000..1d37e768 --- /dev/null +++ b/package/python-six/Config.in.host @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HOST_PYTHON_SIX + bool "host python-six" + help + Six is a Python 2 and 3 compatibility library. It provides + utility functions for smoothing over the differences between + the Python versions with the goal of writing Python code that + is compatible on both Python versions. + + http://pythonhosted.org/six diff --git a/package/python-six/python-six.hash b/package/python-six/python-six.hash new file mode 100644 index 00000000..17615e86 --- /dev/null +++ b/package/python-six/python-six.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/six/json +md5 a7c927740e4964dd29b72cebfc1429bb six-1.16.0.tar.gz +sha256 1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 six-1.16.0.tar.gz +# Locally computed sha256 checksums +sha256 8bb850c565aa389fdc16f3a46965ad23d82adff60f2393fc2762b63185e8e6c9 LICENSE diff --git a/package/python-six/python-six.mk b/package/python-six/python-six.mk new file mode 100644 index 00000000..9e3e5fcf --- /dev/null +++ b/package/python-six/python-six.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-six +# +################################################################################ + +PYTHON_SIX_VERSION = 1.16.0 +PYTHON_SIX_SOURCE = six-$(PYTHON_SIX_VERSION).tar.gz +PYTHON_SIX_SITE = https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e +PYTHON_SIX_SETUP_TYPE = setuptools +PYTHON_SIX_LICENSE = MIT +PYTHON_SIX_LICENSE_FILES = LICENSE + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-slob/Config.in b/package/python-slob/Config.in new file mode 100644 index 00000000..c06f5445 --- /dev/null +++ b/package/python-slob/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_PYTHON_SLOB + bool "python-slob" + depends on !BR2_BINFMT_FLAT # python-pyicu -> icu + depends on BR2_HOST_GCC_AT_LEAST_4_9 # python-pyicu -> icu + depends on BR2_INSTALL_LIBSTDCPP # python-pyicu -> icu + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # python-pyicu -> icu + 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++, gcc >= 4.9, host gcc >= 4.9" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_HOST_GCC_AT_LEAST_4_9 diff --git a/package/python-slob/python-slob.hash b/package/python-slob/python-slob.hash new file mode 100644 index 00000000..5bce1f13 --- /dev/null +++ b/package/python-slob/python-slob.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 18eb4f45d09d49b1f776cac52ea70ab951566c60cd30bbec39e88f10908fd8ff python-slob-31ad0e769360a5b10a4893f686587bb8e48c3895.tar.gz +sha256 db09bc6733ab28dc59bfbcd01819feb9d05241cbef3ca3f5f58ec739b341d56f LICENSE diff --git a/package/python-slob/python-slob.mk b/package/python-slob/python-slob.mk new file mode 100644 index 00000000..4a0d1a7e --- /dev/null +++ b/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 = GPL-3.0 +PYTHON_SLOB_LICENSE_FILES = LICENSE +PYTHON_SLOB_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-smbprotocol/Config.in b/package/python-smbprotocol/Config.in new file mode 100644 index 00000000..ae58a7d9 --- /dev/null +++ b/package/python-smbprotocol/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_SMBPROTOCOL + bool "python-smbprotocol" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-cryptography + select BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime + select BR2_PACKAGE_PYTHON_PYSPNEGO # runtime + help + Interact with a server using the SMB 2/3 Protocol. + + https://github.com/jborean93/smbprotocol diff --git a/package/python-smbprotocol/python-smbprotocol.hash b/package/python-smbprotocol/python-smbprotocol.hash new file mode 100644 index 00000000..b9d5f749 --- /dev/null +++ b/package/python-smbprotocol/python-smbprotocol.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/smbprotocol/json +md5 ccbb42bdd58a0070f56e966d8562451b smbprotocol-1.12.0.tar.gz +sha256 5916a4b6c948bb70f82c246bdbfc86cf152226b71dac9f33b3d731d91e86274f smbprotocol-1.12.0.tar.gz +# Locally computed sha256 checksums +sha256 4c3c550abc2b04c507ed0d641dd7e524eaff5bd06c7862af957301836d496d15 LICENSE diff --git a/package/python-smbprotocol/python-smbprotocol.mk b/package/python-smbprotocol/python-smbprotocol.mk new file mode 100644 index 00000000..ece07442 --- /dev/null +++ b/package/python-smbprotocol/python-smbprotocol.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-smbprotocol +# +################################################################################ + +PYTHON_SMBPROTOCOL_VERSION = 1.12.0 +PYTHON_SMBPROTOCOL_SOURCE = smbprotocol-$(PYTHON_SMBPROTOCOL_VERSION).tar.gz +PYTHON_SMBPROTOCOL_SITE = https://files.pythonhosted.org/packages/57/72/d95216a9fd5da1b2fa225130741f50d4949c8f76d46669d30921c06d69ff +PYTHON_SMBPROTOCOL_SETUP_TYPE = setuptools +PYTHON_SMBPROTOCOL_LICENSE = MIT +PYTHON_SMBPROTOCOL_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-smbus-cffi/Config.in b/package/python-smbus-cffi/Config.in new file mode 100644 index 00000000..32f005c0 --- /dev/null +++ b/package/python-smbus-cffi/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_SMBUS_CFFI + bool "python-smbus-cffi" + select BR2_PACKAGE_PYTHON_CFFI + help + This Python module allows SMBus access through the I2C /dev + interface on Linux hosts. The host kernel must have I2C + support, I2C device interface support, and a bus adapter + driver. + + https://github.com/bivab/smbus-cffi diff --git a/package/python-smbus-cffi/python-smbus-cffi.hash b/package/python-smbus-cffi/python-smbus-cffi.hash new file mode 100644 index 00000000..4474d0b9 --- /dev/null +++ b/package/python-smbus-cffi/python-smbus-cffi.hash @@ -0,0 +1,5 @@ +# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=f621c871bd658ee665751ad78e3b2df9 +md5 f621c871bd658ee665751ad78e3b2df9 smbus-cffi-0.5.1.tar.gz +# Locally computed +sha256 fb4195aaabfc01586863f60d3190b5cb1bf8f12622fd597e23e48768dad6bde8 smbus-cffi-0.5.1.tar.gz +sha256 d54f57bf73bd1ff19a424b6deab6ff08f6089a2469c8de360b167f755e4ecb4c LICENSE diff --git a/package/python-smbus-cffi/python-smbus-cffi.mk b/package/python-smbus-cffi/python-smbus-cffi.mk new file mode 100644 index 00000000..bc5731d7 --- /dev/null +++ b/package/python-smbus-cffi/python-smbus-cffi.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-smbus-cffi +# +################################################################################ + +PYTHON_SMBUS_CFFI_VERSION = 0.5.1 +PYTHON_SMBUS_CFFI_SOURCE = smbus-cffi-$(PYTHON_SMBUS_CFFI_VERSION).tar.gz +PYTHON_SMBUS_CFFI_SITE = https://pypi.python.org/packages/source/s/smbus-cffi +PYTHON_SMBUS_CFFI_SETUP_TYPE = setuptools +PYTHON_SMBUS_CFFI_LICENSE = GPL-2.0 +PYTHON_SMBUS_CFFI_LICENSE_FILES = LICENSE +PYTHON_SMBUS_CFFI_DEPENDENCIES = host-python-cffi + +$(eval $(python-package)) diff --git a/package/python-smmap2/Config.in b/package/python-smmap2/Config.in new file mode 100644 index 00000000..21a3bdb6 --- /dev/null +++ b/package/python-smmap2/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_SMMAP2 + bool "python-smmap2" + help + Smmap wraps an interface around mmap and tracks the mapped + files as well as the amount of clients who use it. If the + system runs out of resources, or if a memory limit is reached, + it will automatically unload unused maps to allow continued + operation. + + https://github.com/gitpython-developers/smmap diff --git a/package/python-smmap2/python-smmap2.hash b/package/python-smmap2/python-smmap2.hash new file mode 100644 index 00000000..424fa58e --- /dev/null +++ b/package/python-smmap2/python-smmap2.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/smmap/json +md5 82b22288dcabfe257d4c1f04c83c7fdd smmap-5.0.0.tar.gz +sha256 c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936 smmap-5.0.0.tar.gz +# Locally computed sha256 checksums +sha256 88e9d93f708d110b328a834302dd1d5c6afbda530e7721d15d80b3511d86f235 LICENSE diff --git a/package/python-smmap2/python-smmap2.mk b/package/python-smmap2/python-smmap2.mk new file mode 100644 index 00000000..489cf0f7 --- /dev/null +++ b/package/python-smmap2/python-smmap2.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-smmap2 +# +################################################################################ + +PYTHON_SMMAP2_VERSION = 5.0.0 +PYTHON_SMMAP2_SOURCE = smmap-$(PYTHON_SMMAP2_VERSION).tar.gz +PYTHON_SMMAP2_SITE = https://files.pythonhosted.org/packages/21/2d/39c6c57032f786f1965022563eec60623bb3e1409ade6ad834ff703724f3 +PYTHON_SMMAP2_SETUP_TYPE = setuptools +PYTHON_SMMAP2_LICENSE = BSD-3-Clause +PYTHON_SMMAP2_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-snappy/Config.in b/package/python-snappy/Config.in new file mode 100644 index 00000000..fd7f8405 --- /dev/null +++ b/package/python-snappy/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_SNAPPY + bool "python-snappy" + depends on BR2_INSTALL_LIBSTDCPP # snappy + select BR2_PACKAGE_SNAPPY + help + Python library for the snappy compression library from + Google. + + http://github.com/andrix/python-snappy + +comment "python-snappy needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/python-snappy/python-snappy.hash b/package/python-snappy/python-snappy.hash new file mode 100644 index 00000000..c4dbc720 --- /dev/null +++ b/package/python-snappy/python-snappy.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/python-snappy/json +md5 fc84cfa3526fba06d66f0d0b2e764300 python-snappy-0.6.1.tar.gz +sha256 b6a107ab06206acc5359d4c5632bd9b22d448702a79b3169b0c62e0fb808bb2a python-snappy-0.6.1.tar.gz +# Locally computed sha256 checksums +sha256 d007cb05f143d99d16d5cd0d1bf291daf037adb36800344e440ec26edb938f9a LICENSE diff --git a/package/python-snappy/python-snappy.mk b/package/python-snappy/python-snappy.mk new file mode 100644 index 00000000..e80aa861 --- /dev/null +++ b/package/python-snappy/python-snappy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-snappy +# +################################################################################ + +PYTHON_SNAPPY_VERSION = 0.6.1 +PYTHON_SNAPPY_SITE = https://files.pythonhosted.org/packages/98/7a/44a24bad98335b2c72e4cadcdecf79f50197d1bab9f22f863a274f104b96 +PYTHON_SNAPPY_SETUP_TYPE = setuptools +PYTHON_SNAPPY_LICENSE = BSD-3-Clause +PYTHON_SNAPPY_LICENSE_FILES = LICENSE +PYTHON_SNAPPY_DEPENDENCIES = snappy + +$(eval $(python-package)) diff --git a/package/python-sniffio/Config.in b/package/python-sniffio/Config.in new file mode 100644 index 00000000..6f3947af --- /dev/null +++ b/package/python-sniffio/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_SNIFFIO + bool "python-sniffio" + help + Sniff out which async library your code is running under. + + https://github.com/python-trio/sniffio diff --git a/package/python-sniffio/python-sniffio.hash b/package/python-sniffio/python-sniffio.hash new file mode 100644 index 00000000..989e31d1 --- /dev/null +++ b/package/python-sniffio/python-sniffio.hash @@ -0,0 +1,7 @@ +# md5, sha256 from https://pypi.org/pypi/sniffio/json +md5 1673edc4dfeb739130a87bcd7b477864 sniffio-1.3.1.tar.gz +sha256 f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc sniffio-1.3.1.tar.gz +# Locally computed sha256 checksums +sha256 652c878488d1456361e08c3f8607fd7ba59892a14103d15cce4ff93c85b5cc8b LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.APACHE2 +sha256 3e6dae555eb92787fc82d1d48355677f454c7f65aeb38d3f9e72bf9a3daf034b LICENSE.MIT diff --git a/package/python-sniffio/python-sniffio.mk b/package/python-sniffio/python-sniffio.mk new file mode 100644 index 00000000..120794d7 --- /dev/null +++ b/package/python-sniffio/python-sniffio.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-sniffio +# +################################################################################ + +PYTHON_SNIFFIO_VERSION = 1.3.1 +PYTHON_SNIFFIO_SOURCE = sniffio-$(PYTHON_SNIFFIO_VERSION).tar.gz +PYTHON_SNIFFIO_SITE = https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd +PYTHON_SNIFFIO_SETUP_TYPE = setuptools +PYTHON_SNIFFIO_LICENSE = Apache-2.0 or MIT +PYTHON_SNIFFIO_LICENSE_FILES = LICENSE LICENSE.APACHE2 LICENSE.MIT +PYTHON_SNIFFIO_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-socketio/Config.in b/package/python-socketio/Config.in new file mode 100644 index 00000000..a34853ec --- /dev/null +++ b/package/python-socketio/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_SOCKETIO + bool "python-socketio" + select BR2_PACKAGE_PYTHON_BIDICT # runtime + select BR2_PACKAGE_PYTHON_ENGINEIO # runtime + help + Socket.IO server. + + http://github.com/miguelgrinberg/python-socketio/ diff --git a/package/python-socketio/python-socketio.hash b/package/python-socketio/python-socketio.hash new file mode 100644 index 00000000..a7756eb3 --- /dev/null +++ b/package/python-socketio/python-socketio.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/python-socketio/json +md5 207c7452bf6f1f444d8b70cac8801647 python-socketio-5.11.0.tar.gz +sha256 b03186e04b942088781f6286c13604a853e5e35ed59158c51ff7af22fa032e6f python-socketio-5.11.0.tar.gz +# Locally computed sha256 checksums +sha256 c9e97d3dbc1fbbcdb4f7808b282cd646db887aff4f5313fe6bbe8d4c31405a9c LICENSE diff --git a/package/python-socketio/python-socketio.mk b/package/python-socketio/python-socketio.mk new file mode 100644 index 00000000..dc0c24fe --- /dev/null +++ b/package/python-socketio/python-socketio.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-socketio +# +################################################################################ + +PYTHON_SOCKETIO_VERSION = 5.11.0 +PYTHON_SOCKETIO_SITE = https://files.pythonhosted.org/packages/7a/e1/2817819a5635a099fda9fc758c51dc2f07996d6928d744639afcf5c5ddbb +PYTHON_SOCKETIO_SETUP_TYPE = setuptools +PYTHON_SOCKETIO_LICENSE = MIT +PYTHON_SOCKETIO_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-sockjs/Config.in b/package/python-sockjs/Config.in new file mode 100644 index 00000000..92489ec7 --- /dev/null +++ b/package/python-sockjs/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_SOCKJS + bool "python-sockjs" + select BR2_PACKAGE_PYTHON_AIOHTTP # runtime + help + SockJS server implementation for aiohttp. + + https://github.com/aio-libs/sockjs/ diff --git a/package/python-sockjs/python-sockjs.hash b/package/python-sockjs/python-sockjs.hash new file mode 100644 index 00000000..137b54a8 --- /dev/null +++ b/package/python-sockjs/python-sockjs.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/sockjs/json +md5 e28c1a82aa84c3994817905090abb169 sockjs-0.11.0.tar.gz +sha256 0347d404ed9ef3196506787ed8018f87ee4e2d0baea49d420cdd53a969bec229 sockjs-0.11.0.tar.gz +# Locally computed sha256 checksums +sha256 7be23c071df0314fadeba6077a3830340a5121ad88bfa66b0c095051a766e141 LICENSE.txt diff --git a/package/python-sockjs/python-sockjs.mk b/package/python-sockjs/python-sockjs.mk new file mode 100644 index 00000000..0aea63f9 --- /dev/null +++ b/package/python-sockjs/python-sockjs.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-sockjs +# +################################################################################ + +PYTHON_SOCKJS_VERSION = 0.11.0 +PYTHON_SOCKJS_SOURCE = sockjs-$(PYTHON_SOCKJS_VERSION).tar.gz +PYTHON_SOCKJS_SITE = https://files.pythonhosted.org/packages/88/e9/af7b321f70325fd2af3941aa147efd097156150da635e09efc7ccf70e54d +PYTHON_SOCKJS_SETUP_TYPE = setuptools +PYTHON_SOCKJS_LICENSE = Apache-2.0 +PYTHON_SOCKJS_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-sortedcontainers/Config.in b/package/python-sortedcontainers/Config.in new file mode 100644 index 00000000..43bd1b1c --- /dev/null +++ b/package/python-sortedcontainers/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_SORTEDCONTAINERS + bool "python-sortedcontainers" + help + Python Sorted Container Types: SortedList, SortedDict, and + SortedSet. + + http://www.grantjenks.com/docs/sortedcontainers/ diff --git a/package/python-sortedcontainers/python-sortedcontainers.hash b/package/python-sortedcontainers/python-sortedcontainers.hash new file mode 100644 index 00000000..31463f5e --- /dev/null +++ b/package/python-sortedcontainers/python-sortedcontainers.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/sortedcontainers/json +md5 50eeb6cb739568b590b28f9a3f445c78 sortedcontainers-2.4.0.tar.gz +sha256 25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88 sortedcontainers-2.4.0.tar.gz +# Locally computed sha256 checksums +sha256 1db7cae7fce6452e2e608e401a0f953e0133e4c2d75db69fb8ae851d2086f5b6 LICENSE diff --git a/package/python-sortedcontainers/python-sortedcontainers.mk b/package/python-sortedcontainers/python-sortedcontainers.mk new file mode 100644 index 00000000..51df5172 --- /dev/null +++ b/package/python-sortedcontainers/python-sortedcontainers.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-sortedcontainers +# +################################################################################ + +PYTHON_SORTEDCONTAINERS_VERSION = 2.4.0 +PYTHON_SORTEDCONTAINERS_SOURCE = sortedcontainers-$(PYTHON_SORTEDCONTAINERS_VERSION).tar.gz +PYTHON_SORTEDCONTAINERS_SITE = https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111 +PYTHON_SORTEDCONTAINERS_SETUP_TYPE = setuptools +PYTHON_SORTEDCONTAINERS_LICENSE = Apache-2.0 +PYTHON_SORTEDCONTAINERS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-soupsieve/Config.in b/package/python-soupsieve/Config.in new file mode 100644 index 00000000..3cb7f8d0 --- /dev/null +++ b/package/python-soupsieve/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_SOUPSIEVE + bool "python-soupsieve" + help + A modern CSS selector implementation for Beautiful Soup. + + https://github.com/facelessuser/soupsieve diff --git a/package/python-soupsieve/python-soupsieve.hash b/package/python-soupsieve/python-soupsieve.hash new file mode 100644 index 00000000..278c7d1b --- /dev/null +++ b/package/python-soupsieve/python-soupsieve.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/soupsieve/json +md5 88ae72bd970b425692235d17224204e6 soupsieve-2.5.tar.gz +sha256 5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690 soupsieve-2.5.tar.gz +# Locally computed sha256 checksums +sha256 ceb7b9053b88addffa3102a457302bd840d123925ee9ed9c2ac90cf6548b33bf LICENSE.md diff --git a/package/python-soupsieve/python-soupsieve.mk b/package/python-soupsieve/python-soupsieve.mk new file mode 100644 index 00000000..581df7e7 --- /dev/null +++ b/package/python-soupsieve/python-soupsieve.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-soupsieve +# +################################################################################ + +PYTHON_SOUPSIEVE_VERSION = 2.5 +PYTHON_SOUPSIEVE_SOURCE = soupsieve-$(PYTHON_SOUPSIEVE_VERSION).tar.gz +PYTHON_SOUPSIEVE_SITE = https://files.pythonhosted.org/packages/ce/21/952a240de1c196c7e3fbcd4e559681f0419b1280c617db21157a0390717b +PYTHON_SOUPSIEVE_SETUP_TYPE = pep517 +PYTHON_SOUPSIEVE_LICENSE = MIT +PYTHON_SOUPSIEVE_LICENSE_FILES = LICENSE.md +PYTHON_SOUPSIEVE_DEPENDENCIES = host-python-hatchling + +$(eval $(python-package)) diff --git a/package/python-spake2/0001-Update-versioneer-to-0.29.patch b/package/python-spake2/0001-Update-versioneer-to-0.29.patch new file mode 100644 index 00000000..3b5db534 --- /dev/null +++ b/package/python-spake2/0001-Update-versioneer-to-0.29.patch @@ -0,0 +1,2194 @@ +From 5b5436f11d01e66505bb4c148304c2eb49346529 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Tue, 24 Oct 2023 09:56:57 +0200 +Subject: [PATCH] Update versioneer to 0.29 + +Fixes builds against Python 3.12.0 + +Upstream: https://github.com/warner/python-spake2/pull/15 + +Signed-off-by: Adam Duskett +--- + versioneer.py | 1350 ++++++++++++++++++++++++++++++++++--------------- + 1 file changed, 931 insertions(+), 419 deletions(-) + +diff --git a/versioneer.py b/versioneer.py +index 64fea1c..de97d90 100644 +--- a/versioneer.py ++++ b/versioneer.py +@@ -1,5 +1,4 @@ +- +-# Version: 0.18 ++# Version: 0.29 + + """The Versioneer - like a rocketeer, but for versions. + +@@ -7,18 +6,14 @@ The Versioneer + ============== + + * like a rocketeer, but for versions! +-* https://github.com/warner/python-versioneer ++* https://github.com/python-versioneer/python-versioneer + * Brian Warner +-* License: Public Domain +-* Compatible With: python2.6, 2.7, 3.2, 3.3, 3.4, 3.5, 3.6, and pypy +-* [![Latest Version] +-(https://pypip.in/version/versioneer/badge.svg?style=flat) +-](https://pypi.python.org/pypi/versioneer/) +-* [![Build Status] +-(https://travis-ci.org/warner/python-versioneer.png?branch=master) +-](https://travis-ci.org/warner/python-versioneer) +- +-This is a tool for managing a recorded version number in distutils-based ++* License: Public Domain (Unlicense) ++* Compatible with: Python 3.7, 3.8, 3.9, 3.10, 3.11 and pypy3 ++* [![Latest Version][pypi-image]][pypi-url] ++* [![Build Status][travis-image]][travis-url] ++ ++This is a tool for managing a recorded version number in setuptools-based + python projects. The goal is to remove the tedious and error-prone "update + the embedded version string" step from your release process. Making a new + release should be as easy as recording a new tag in your version-control +@@ -27,9 +22,38 @@ system, and maybe making new tarballs. + + ## Quick Install + +-* `pip install versioneer` to somewhere to your $PATH +-* add a `[versioneer]` section to your setup.cfg (see below) +-* run `versioneer install` in your source tree, commit the results ++Versioneer provides two installation modes. The "classic" vendored mode installs ++a copy of versioneer into your repository. The experimental build-time dependency mode ++is intended to allow you to skip this step and simplify the process of upgrading. ++ ++### Vendored mode ++ ++* `pip install versioneer` to somewhere in your $PATH ++ * A [conda-forge recipe](https://github.com/conda-forge/versioneer-feedstock) is ++ available, so you can also use `conda install -c conda-forge versioneer` ++* add a `[tool.versioneer]` section to your `pyproject.toml` or a ++ `[versioneer]` section to your `setup.cfg` (see [Install](INSTALL.md)) ++ * Note that you will need to add `tomli; python_version < "3.11"` to your ++ build-time dependencies if you use `pyproject.toml` ++* run `versioneer install --vendor` in your source tree, commit the results ++* verify version information with `python setup.py version` ++ ++### Build-time dependency mode ++ ++* `pip install versioneer` to somewhere in your $PATH ++ * A [conda-forge recipe](https://github.com/conda-forge/versioneer-feedstock) is ++ available, so you can also use `conda install -c conda-forge versioneer` ++* add a `[tool.versioneer]` section to your `pyproject.toml` or a ++ `[versioneer]` section to your `setup.cfg` (see [Install](INSTALL.md)) ++* add `versioneer` (with `[toml]` extra, if configuring in `pyproject.toml`) ++ to the `requires` key of the `build-system` table in `pyproject.toml`: ++ ```toml ++ [build-system] ++ requires = ["setuptools", "versioneer[toml]"] ++ build-backend = "setuptools.build_meta" ++ ``` ++* run `versioneer install --no-vendor` in your source tree, commit the results ++* verify version information with `python setup.py version` + + ## Version Identifiers + +@@ -61,7 +85,7 @@ version 1.3). Many VCS systems can report a description that captures this, + for example `git describe --tags --dirty --always` reports things like + "0.7-1-g574ab98-dirty" to indicate that the checkout is one revision past the + 0.7 tag, has a unique revision id of "574ab98", and is "dirty" (it has +-uncommitted changes. ++uncommitted changes). + + The version identifier is used for multiple purposes: + +@@ -166,7 +190,7 @@ which may help identify what went wrong). + + Some situations are known to cause problems for Versioneer. This details the + most significant ones. More can be found on Github +-[issues page](https://github.com/warner/python-versioneer/issues). ++[issues page](https://github.com/python-versioneer/python-versioneer/issues). + + ### Subprojects + +@@ -180,7 +204,7 @@ two common reasons why `setup.py` might not be in the root: + `setup.cfg`, and `tox.ini`. Projects like these produce multiple PyPI + distributions (and upload multiple independently-installable tarballs). + * Source trees whose main purpose is to contain a C library, but which also +- provide bindings to Python (and perhaps other langauges) in subdirectories. ++ provide bindings to Python (and perhaps other languages) in subdirectories. + + Versioneer will look for `.git` in parent directories, and most operations + should get the right version string. However `pip` and `setuptools` have bugs +@@ -194,9 +218,9 @@ work too. + Pip-8.1.1 is known to have this problem, but hopefully it will get fixed in + some later version. + +-[Bug #38](https://github.com/warner/python-versioneer/issues/38) is tracking ++[Bug #38](https://github.com/python-versioneer/python-versioneer/issues/38) is tracking + this issue. The discussion in +-[PR #61](https://github.com/warner/python-versioneer/pull/61) describes the ++[PR #61](https://github.com/python-versioneer/python-versioneer/pull/61) describes the + issue from the Versioneer side in more detail. + [pip PR#3176](https://github.com/pypa/pip/pull/3176) and + [pip PR#3615](https://github.com/pypa/pip/pull/3615) contain work to improve +@@ -224,31 +248,20 @@ regenerated while a different version is checked out. Many setup.py commands + cause egg_info to be rebuilt (including `sdist`, `wheel`, and installing into + a different virtualenv), so this can be surprising. + +-[Bug #83](https://github.com/warner/python-versioneer/issues/83) describes ++[Bug #83](https://github.com/python-versioneer/python-versioneer/issues/83) describes + this one, but upgrading to a newer version of setuptools should probably + resolve it. + +-### Unicode version strings +- +-While Versioneer works (and is continually tested) with both Python 2 and +-Python 3, it is not entirely consistent with bytes-vs-unicode distinctions. +-Newer releases probably generate unicode version strings on py2. It's not +-clear that this is wrong, but it may be surprising for applications when then +-write these strings to a network connection or include them in bytes-oriented +-APIs like cryptographic checksums. +- +-[Bug #71](https://github.com/warner/python-versioneer/issues/71) investigates +-this question. +- + + ## Updating Versioneer + + To upgrade your project to a new release of Versioneer, do the following: + + * install the new Versioneer (`pip install -U versioneer` or equivalent) +-* edit `setup.cfg`, if necessary, to include any new configuration settings +- indicated by the release notes. See [UPGRADING](./UPGRADING.md) for details. +-* re-run `versioneer install` in your source tree, to replace ++* edit `setup.cfg` and `pyproject.toml`, if necessary, ++ to include any new configuration settings indicated by the release notes. ++ See [UPGRADING](./UPGRADING.md) for details. ++* re-run `versioneer install --[no-]vendor` in your source tree, to replace + `SRC/_version.py` + * commit any changed files + +@@ -265,35 +278,70 @@ installation by editing setup.py . Alternatively, it might go the other + direction and include code from all supported VCS systems, reducing the + number of intermediate scripts. + ++## Similar projects ++ ++* [setuptools_scm](https://github.com/pypa/setuptools_scm/) - a non-vendored build-time ++ dependency ++* [minver](https://github.com/jbweston/miniver) - a lightweight reimplementation of ++ versioneer ++* [versioningit](https://github.com/jwodder/versioningit) - a PEP 518-based setuptools ++ plugin + + ## License + + To make Versioneer easier to embed, all its code is dedicated to the public + domain. The `_version.py` that it creates is also in the public domain. +-Specifically, both are released under the Creative Commons "Public Domain +-Dedication" license (CC0-1.0), as described in +-https://creativecommons.org/publicdomain/zero/1.0/ . ++Specifically, both are released under the "Unlicense", as described in ++https://unlicense.org/. ++ ++[pypi-image]: https://img.shields.io/pypi/v/versioneer.svg ++[pypi-url]: https://pypi.python.org/pypi/versioneer/ ++[travis-image]: ++https://img.shields.io/travis/com/python-versioneer/python-versioneer.svg ++[travis-url]: https://travis-ci.com/github/python-versioneer/python-versioneer + + """ ++# pylint:disable=invalid-name,import-outside-toplevel,missing-function-docstring ++# pylint:disable=missing-class-docstring,too-many-branches,too-many-statements ++# pylint:disable=raise-missing-from,too-many-lines,too-many-locals,import-error ++# pylint:disable=too-few-public-methods,redefined-outer-name,consider-using-with ++# pylint:disable=attribute-defined-outside-init,too-many-arguments + +-from __future__ import print_function +-try: +- import configparser +-except ImportError: +- import ConfigParser as configparser ++import configparser + import errno + import json + import os + import re + import subprocess + import sys ++from pathlib import Path ++from typing import Any, Callable, cast, Dict, List, Optional, Tuple, Union ++from typing import NoReturn ++import functools ++ ++have_tomllib = True ++if sys.version_info >= (3, 11): ++ import tomllib ++else: ++ try: ++ import tomli as tomllib ++ except ImportError: ++ have_tomllib = False + + + class VersioneerConfig: + """Container for Versioneer configuration parameters.""" + ++ VCS: str ++ style: str ++ tag_prefix: str ++ versionfile_source: str ++ versionfile_build: Optional[str] ++ parentdir_prefix: Optional[str] ++ verbose: Optional[bool] ++ + +-def get_root(): ++def get_root() -> str: + """Get the project root directory. + + We require that all commands are run from the project root, i.e. the +@@ -301,18 +349,30 @@ def get_root(): + """ + root = os.path.realpath(os.path.abspath(os.getcwd())) + setup_py = os.path.join(root, "setup.py") ++ pyproject_toml = os.path.join(root, "pyproject.toml") + versioneer_py = os.path.join(root, "versioneer.py") +- if not (os.path.exists(setup_py) or os.path.exists(versioneer_py)): ++ if not ( ++ os.path.exists(setup_py) ++ or os.path.exists(pyproject_toml) ++ or os.path.exists(versioneer_py) ++ ): + # allow 'python path/to/setup.py COMMAND' + root = os.path.dirname(os.path.realpath(os.path.abspath(sys.argv[0]))) + setup_py = os.path.join(root, "setup.py") ++ pyproject_toml = os.path.join(root, "pyproject.toml") + versioneer_py = os.path.join(root, "versioneer.py") +- if not (os.path.exists(setup_py) or os.path.exists(versioneer_py)): +- err = ("Versioneer was unable to run the project root directory. " +- "Versioneer requires setup.py to be executed from " +- "its immediate directory (like 'python setup.py COMMAND'), " +- "or in a way that lets it use sys.argv[0] to find the root " +- "(like 'python path/to/setup.py COMMAND').") ++ if not ( ++ os.path.exists(setup_py) ++ or os.path.exists(pyproject_toml) ++ or os.path.exists(versioneer_py) ++ ): ++ err = ( ++ "Versioneer was unable to run the project root directory. " ++ "Versioneer requires setup.py to be executed from " ++ "its immediate directory (like 'python setup.py COMMAND'), " ++ "or in a way that lets it use sys.argv[0] to find the root " ++ "(like 'python path/to/setup.py COMMAND')." ++ ) + raise VersioneerBadRootError(err) + try: + # Certain runtime workflows (setup.py install/develop in a setuptools +@@ -321,43 +381,64 @@ def get_root(): + # module-import table will cache the first one. So we can't use + # os.path.dirname(__file__), as that will find whichever + # versioneer.py was first imported, even in later projects. +- me = os.path.realpath(os.path.abspath(__file__)) +- me_dir = os.path.normcase(os.path.splitext(me)[0]) ++ my_path = os.path.realpath(os.path.abspath(__file__)) ++ me_dir = os.path.normcase(os.path.splitext(my_path)[0]) + vsr_dir = os.path.normcase(os.path.splitext(versioneer_py)[0]) +- if me_dir != vsr_dir: +- print("Warning: build in %s is using versioneer.py from %s" +- % (os.path.dirname(me), versioneer_py)) ++ if me_dir != vsr_dir and "VERSIONEER_PEP518" not in globals(): ++ print( ++ "Warning: build in %s is using versioneer.py from %s" ++ % (os.path.dirname(my_path), versioneer_py) ++ ) + except NameError: + pass + return root + + +-def get_config_from_root(root): ++def get_config_from_root(root: str) -> VersioneerConfig: + """Read the project setup.cfg file to determine Versioneer config.""" +- # This might raise EnvironmentError (if setup.cfg is missing), or ++ # This might raise OSError (if setup.cfg is missing), or + # configparser.NoSectionError (if it lacks a [versioneer] section), or + # configparser.NoOptionError (if it lacks "VCS="). See the docstring at + # the top of versioneer.py for instructions on writing your setup.cfg . +- setup_cfg = os.path.join(root, "setup.cfg") +- parser = configparser.SafeConfigParser() +- with open(setup_cfg, "r") as f: +- parser.readfp(f) +- VCS = parser.get("versioneer", "VCS") # mandatory +- +- def get(parser, name): +- if parser.has_option("versioneer", name): +- return parser.get("versioneer", name) +- return None ++ root_pth = Path(root) ++ pyproject_toml = root_pth / "pyproject.toml" ++ setup_cfg = root_pth / "setup.cfg" ++ section: Union[Dict[str, Any], configparser.SectionProxy, None] = None ++ if pyproject_toml.exists() and have_tomllib: ++ try: ++ with open(pyproject_toml, "rb") as fobj: ++ pp = tomllib.load(fobj) ++ section = pp["tool"]["versioneer"] ++ except (tomllib.TOMLDecodeError, KeyError) as e: ++ print(f"Failed to load config from {pyproject_toml}: {e}") ++ print("Try to load it from setup.cfg") ++ if not section: ++ parser = configparser.ConfigParser() ++ with open(setup_cfg) as cfg_file: ++ parser.read_file(cfg_file) ++ parser.get("versioneer", "VCS") # raise error if missing ++ ++ section = parser["versioneer"] ++ ++ # `cast`` really shouldn't be used, but its simplest for the ++ # common VersioneerConfig users at the moment. We verify against ++ # `None` values elsewhere where it matters ++ + cfg = VersioneerConfig() +- cfg.VCS = VCS +- cfg.style = get(parser, "style") or "" +- cfg.versionfile_source = get(parser, "versionfile_source") +- cfg.versionfile_build = get(parser, "versionfile_build") +- cfg.tag_prefix = get(parser, "tag_prefix") +- if cfg.tag_prefix in ("''", '""'): ++ cfg.VCS = section["VCS"] ++ cfg.style = section.get("style", "") ++ cfg.versionfile_source = cast(str, section.get("versionfile_source")) ++ cfg.versionfile_build = section.get("versionfile_build") ++ cfg.tag_prefix = cast(str, section.get("tag_prefix")) ++ if cfg.tag_prefix in ("''", '""', None): + cfg.tag_prefix = "" +- cfg.parentdir_prefix = get(parser, "parentdir_prefix") +- cfg.verbose = get(parser, "verbose") ++ cfg.parentdir_prefix = section.get("parentdir_prefix") ++ if isinstance(section, configparser.SectionProxy): ++ # Make sure configparser translates to bool ++ cfg.verbose = section.getboolean("verbose") ++ else: ++ cfg.verbose = section.get("verbose") ++ + return cfg + + +@@ -366,37 +447,54 @@ class NotThisMethod(Exception): + + + # these dictionaries contain VCS-specific tools +-LONG_VERSION_PY = {} +-HANDLERS = {} ++LONG_VERSION_PY: Dict[str, str] = {} ++HANDLERS: Dict[str, Dict[str, Callable]] = {} + + +-def register_vcs_handler(vcs, method): # decorator +- """Decorator to mark a method as the handler for a particular VCS.""" +- def decorate(f): ++def register_vcs_handler(vcs: str, method: str) -> Callable: # decorator ++ """Create decorator to mark a method as the handler of a VCS.""" ++ ++ def decorate(f: Callable) -> Callable: + """Store f in HANDLERS[vcs][method].""" +- if vcs not in HANDLERS: +- HANDLERS[vcs] = {} +- HANDLERS[vcs][method] = f ++ HANDLERS.setdefault(vcs, {})[method] = f + return f ++ + return decorate + + +-def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, +- env=None): ++def run_command( ++ commands: List[str], ++ args: List[str], ++ cwd: Optional[str] = None, ++ verbose: bool = False, ++ hide_stderr: bool = False, ++ env: Optional[Dict[str, str]] = None, ++) -> Tuple[Optional[str], Optional[int]]: + """Call the given command(s).""" + assert isinstance(commands, list) +- p = None +- for c in commands: ++ process = None ++ ++ popen_kwargs: Dict[str, Any] = {} ++ if sys.platform == "win32": ++ # This hides the console window if pythonw.exe is used ++ startupinfo = subprocess.STARTUPINFO() ++ startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW ++ popen_kwargs["startupinfo"] = startupinfo ++ ++ for command in commands: + try: +- dispcmd = str([c] + args) ++ dispcmd = str([command] + args) + # remember shell=False, so use git.cmd on windows, not just git +- p = subprocess.Popen([c] + args, cwd=cwd, env=env, +- stdout=subprocess.PIPE, +- stderr=(subprocess.PIPE if hide_stderr +- else None)) ++ process = subprocess.Popen( ++ [command] + args, ++ cwd=cwd, ++ env=env, ++ stdout=subprocess.PIPE, ++ stderr=(subprocess.PIPE if hide_stderr else None), ++ **popen_kwargs, ++ ) + break +- except EnvironmentError: +- e = sys.exc_info()[1] ++ except OSError as e: + if e.errno == errno.ENOENT: + continue + if verbose: +@@ -407,26 +505,27 @@ def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, + if verbose: + print("unable to find command, tried %s" % (commands,)) + return None, None +- stdout = p.communicate()[0].strip() +- if sys.version_info[0] >= 3: +- stdout = stdout.decode() +- if p.returncode != 0: ++ stdout = process.communicate()[0].strip().decode() ++ if process.returncode != 0: + if verbose: + print("unable to run %s (error)" % dispcmd) + print("stdout was %s" % stdout) +- return None, p.returncode +- return stdout, p.returncode ++ return None, process.returncode ++ return stdout, process.returncode + + +-LONG_VERSION_PY['git'] = ''' ++LONG_VERSION_PY[ ++ "git" ++] = r''' + # This file helps to compute a version number in source trees obtained from + # git-archive tarball (such as those provided by githubs download-from-tag + # feature). Distribution tarballs (built by setup.py sdist) and build + # directories (produced by setup.py build) will contain a much shorter file + # that just contains the computed version number. + +-# This file is released into the public domain. Generated by +-# versioneer-0.18 (https://github.com/warner/python-versioneer) ++# This file is released into the public domain. ++# Generated by versioneer-0.29 ++# https://github.com/python-versioneer/python-versioneer + + """Git implementation of _version.py.""" + +@@ -435,9 +534,11 @@ import os + import re + import subprocess + import sys ++from typing import Any, Callable, Dict, List, Optional, Tuple ++import functools + + +-def get_keywords(): ++def get_keywords() -> Dict[str, str]: + """Get the keywords needed to look up the version information.""" + # these strings will be replaced by git during git-archive. + # setup.py/versioneer.py will grep for the variable names, so they must +@@ -453,8 +554,15 @@ def get_keywords(): + class VersioneerConfig: + """Container for Versioneer configuration parameters.""" + ++ VCS: str ++ style: str ++ tag_prefix: str ++ parentdir_prefix: str ++ versionfile_source: str ++ verbose: bool ++ + +-def get_config(): ++def get_config() -> VersioneerConfig: + """Create, populate and return the VersioneerConfig() object.""" + # these strings are filled in when 'setup.py versioneer' creates + # _version.py +@@ -472,13 +580,13 @@ class NotThisMethod(Exception): + """Exception raised if a method is not valid for the current scenario.""" + + +-LONG_VERSION_PY = {} +-HANDLERS = {} ++LONG_VERSION_PY: Dict[str, str] = {} ++HANDLERS: Dict[str, Dict[str, Callable]] = {} + + +-def register_vcs_handler(vcs, method): # decorator +- """Decorator to mark a method as the handler for a particular VCS.""" +- def decorate(f): ++def register_vcs_handler(vcs: str, method: str) -> Callable: # decorator ++ """Create decorator to mark a method as the handler of a VCS.""" ++ def decorate(f: Callable) -> Callable: + """Store f in HANDLERS[vcs][method].""" + if vcs not in HANDLERS: + HANDLERS[vcs] = {} +@@ -487,22 +595,35 @@ def register_vcs_handler(vcs, method): # decorator + return decorate + + +-def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, +- env=None): ++def run_command( ++ commands: List[str], ++ args: List[str], ++ cwd: Optional[str] = None, ++ verbose: bool = False, ++ hide_stderr: bool = False, ++ env: Optional[Dict[str, str]] = None, ++) -> Tuple[Optional[str], Optional[int]]: + """Call the given command(s).""" + assert isinstance(commands, list) +- p = None +- for c in commands: ++ process = None ++ ++ popen_kwargs: Dict[str, Any] = {} ++ if sys.platform == "win32": ++ # This hides the console window if pythonw.exe is used ++ startupinfo = subprocess.STARTUPINFO() ++ startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW ++ popen_kwargs["startupinfo"] = startupinfo ++ ++ for command in commands: + try: +- dispcmd = str([c] + args) ++ dispcmd = str([command] + args) + # remember shell=False, so use git.cmd on windows, not just git +- p = subprocess.Popen([c] + args, cwd=cwd, env=env, +- stdout=subprocess.PIPE, +- stderr=(subprocess.PIPE if hide_stderr +- else None)) ++ process = subprocess.Popen([command] + args, cwd=cwd, env=env, ++ stdout=subprocess.PIPE, ++ stderr=(subprocess.PIPE if hide_stderr ++ else None), **popen_kwargs) + break +- except EnvironmentError: +- e = sys.exc_info()[1] ++ except OSError as e: + if e.errno == errno.ENOENT: + continue + if verbose: +@@ -513,18 +634,20 @@ def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, + if verbose: + print("unable to find command, tried %%s" %% (commands,)) + return None, None +- stdout = p.communicate()[0].strip() +- if sys.version_info[0] >= 3: +- stdout = stdout.decode() +- if p.returncode != 0: ++ stdout = process.communicate()[0].strip().decode() ++ if process.returncode != 0: + if verbose: + print("unable to run %%s (error)" %% dispcmd) + print("stdout was %%s" %% stdout) +- return None, p.returncode +- return stdout, p.returncode ++ return None, process.returncode ++ return stdout, process.returncode + + +-def versions_from_parentdir(parentdir_prefix, root, verbose): ++def versions_from_parentdir( ++ parentdir_prefix: str, ++ root: str, ++ verbose: bool, ++) -> Dict[str, Any]: + """Try to determine the version from the parent directory name. + + Source tarballs conventionally unpack into a directory that includes both +@@ -533,15 +656,14 @@ def versions_from_parentdir(parentdir_prefix, root, verbose): + """ + rootdirs = [] + +- for i in range(3): ++ for _ in range(3): + dirname = os.path.basename(root) + if dirname.startswith(parentdir_prefix): + return {"version": dirname[len(parentdir_prefix):], + "full-revisionid": None, + "dirty": False, "error": None, "date": None} +- else: +- rootdirs.append(root) +- root = os.path.dirname(root) # up a level ++ rootdirs.append(root) ++ root = os.path.dirname(root) # up a level + + if verbose: + print("Tried directories %%s but none started with prefix %%s" %% +@@ -550,41 +672,48 @@ def versions_from_parentdir(parentdir_prefix, root, verbose): + + + @register_vcs_handler("git", "get_keywords") +-def git_get_keywords(versionfile_abs): ++def git_get_keywords(versionfile_abs: str) -> Dict[str, str]: + """Extract version information from the given file.""" + # the code embedded in _version.py can just fetch the value of these + # keywords. When used from setup.py, we don't want to import _version.py, + # so we do it with a regexp instead. This function is not used from + # _version.py. +- keywords = {} ++ keywords: Dict[str, str] = {} + try: +- f = open(versionfile_abs, "r") +- for line in f.readlines(): +- if line.strip().startswith("git_refnames ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["refnames"] = mo.group(1) +- if line.strip().startswith("git_full ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["full"] = mo.group(1) +- if line.strip().startswith("git_date ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["date"] = mo.group(1) +- f.close() +- except EnvironmentError: ++ with open(versionfile_abs, "r") as fobj: ++ for line in fobj: ++ if line.strip().startswith("git_refnames ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["refnames"] = mo.group(1) ++ if line.strip().startswith("git_full ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["full"] = mo.group(1) ++ if line.strip().startswith("git_date ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["date"] = mo.group(1) ++ except OSError: + pass + return keywords + + + @register_vcs_handler("git", "keywords") +-def git_versions_from_keywords(keywords, tag_prefix, verbose): ++def git_versions_from_keywords( ++ keywords: Dict[str, str], ++ tag_prefix: str, ++ verbose: bool, ++) -> Dict[str, Any]: + """Get version information from git keywords.""" +- if not keywords: +- raise NotThisMethod("no keywords at all, weird") ++ if "refnames" not in keywords: ++ raise NotThisMethod("Short version file found") + date = keywords.get("date") + if date is not None: ++ # Use only the last line. Previous lines may contain GPG signature ++ # information. ++ date = date.splitlines()[-1] ++ + # git-2.2.0 added "%%cI", which expands to an ISO-8601 -compliant + # datestamp. However we prefer "%%ci" (which expands to an "ISO-8601 + # -like" string, which we must then edit to make compliant), because +@@ -597,11 +726,11 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + if verbose: + print("keywords are unexpanded, not using") + raise NotThisMethod("unexpanded keywords, not a git-archive tarball") +- refs = set([r.strip() for r in refnames.strip("()").split(",")]) ++ refs = {r.strip() for r in refnames.strip("()").split(",")} + # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of + # just "foo-1.0". If we see a "tag: " prefix, prefer those. + TAG = "tag: " +- tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)]) ++ tags = {r[len(TAG):] for r in refs if r.startswith(TAG)} + if not tags: + # Either we're using git < 1.8.3, or there really are no tags. We use + # a heuristic: assume all version tags have a digit. The old git %%d +@@ -610,7 +739,7 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + # between branches and tags. By ignoring refnames without digits, we + # filter out many common branch names like "release" and + # "stabilization", as well as "HEAD" and "master". +- tags = set([r for r in refs if re.search(r'\d', r)]) ++ tags = {r for r in refs if re.search(r'\d', r)} + if verbose: + print("discarding '%%s', no digits" %% ",".join(refs - tags)) + if verbose: +@@ -619,6 +748,11 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + # sorting will prefer e.g. "2.0" over "2.0rc1" + if ref.startswith(tag_prefix): + r = ref[len(tag_prefix):] ++ # Filter out refs that exactly match prefix or that don't start ++ # with a number once the prefix is stripped (mostly a concern ++ # when prefix is '') ++ if not re.match(r'\d', r): ++ continue + if verbose: + print("picking %%s" %% r) + return {"version": r, +@@ -634,7 +768,12 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + + + @register_vcs_handler("git", "pieces_from_vcs") +-def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): ++def git_pieces_from_vcs( ++ tag_prefix: str, ++ root: str, ++ verbose: bool, ++ runner: Callable = run_command ++) -> Dict[str, Any]: + """Get version from 'git describe' in the root of the source tree. + + This only gets called if the git-archive 'subst' keywords were *not* +@@ -645,8 +784,15 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + if sys.platform == "win32": + GITS = ["git.cmd", "git.exe"] + +- out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root, +- hide_stderr=True) ++ # GIT_DIR can interfere with correct operation of Versioneer. ++ # It may be intended to be passed to the Versioneer-versioned project, ++ # but that should not change where we get our version from. ++ env = os.environ.copy() ++ env.pop("GIT_DIR", None) ++ runner = functools.partial(runner, env=env) ++ ++ _, rc = runner(GITS, ["rev-parse", "--git-dir"], cwd=root, ++ hide_stderr=not verbose) + if rc != 0: + if verbose: + print("Directory %%s not under git control" %% root) +@@ -654,24 +800,57 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + + # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty] + # if there isn't one, this yields HEX[-dirty] (no NUM) +- describe_out, rc = run_command(GITS, ["describe", "--tags", "--dirty", +- "--always", "--long", +- "--match", "%%s*" %% tag_prefix], +- cwd=root) ++ describe_out, rc = runner(GITS, [ ++ "describe", "--tags", "--dirty", "--always", "--long", ++ "--match", f"{tag_prefix}[[:digit:]]*" ++ ], cwd=root) + # --long was added in git-1.5.5 + if describe_out is None: + raise NotThisMethod("'git describe' failed") + describe_out = describe_out.strip() +- full_out, rc = run_command(GITS, ["rev-parse", "HEAD"], cwd=root) ++ full_out, rc = runner(GITS, ["rev-parse", "HEAD"], cwd=root) + if full_out is None: + raise NotThisMethod("'git rev-parse' failed") + full_out = full_out.strip() + +- pieces = {} ++ pieces: Dict[str, Any] = {} + pieces["long"] = full_out + pieces["short"] = full_out[:7] # maybe improved later + pieces["error"] = None + ++ branch_name, rc = runner(GITS, ["rev-parse", "--abbrev-ref", "HEAD"], ++ cwd=root) ++ # --abbrev-ref was added in git-1.6.3 ++ if rc != 0 or branch_name is None: ++ raise NotThisMethod("'git rev-parse --abbrev-ref' returned error") ++ branch_name = branch_name.strip() ++ ++ if branch_name == "HEAD": ++ # If we aren't exactly on a branch, pick a branch which represents ++ # the current commit. If all else fails, we are on a branchless ++ # commit. ++ branches, rc = runner(GITS, ["branch", "--contains"], cwd=root) ++ # --contains was added in git-1.5.4 ++ if rc != 0 or branches is None: ++ raise NotThisMethod("'git branch --contains' returned error") ++ branches = branches.split("\n") ++ ++ # Remove the first line if we're running detached ++ if "(" in branches[0]: ++ branches.pop(0) ++ ++ # Strip off the leading "* " from the list of branches. ++ branches = [branch[2:] for branch in branches] ++ if "master" in branches: ++ branch_name = "master" ++ elif not branches: ++ branch_name = None ++ else: ++ # Pick the first branch that is returned. Good or bad. ++ branch_name = branches[0] ++ ++ pieces["branch"] = branch_name ++ + # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty] + # TAG might have hyphens. + git_describe = describe_out +@@ -688,7 +867,7 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + # TAG-NUM-gHEX + mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe) + if not mo: +- # unparseable. Maybe git-describe is misbehaving? ++ # unparsable. Maybe git-describe is misbehaving? + pieces["error"] = ("unable to parse git-describe output: '%%s'" + %% describe_out) + return pieces +@@ -713,26 +892,27 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + else: + # HEX: no tags + pieces["closest-tag"] = None +- count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"], +- cwd=root) +- pieces["distance"] = int(count_out) # total number of commits ++ out, rc = runner(GITS, ["rev-list", "HEAD", "--left-right"], cwd=root) ++ pieces["distance"] = len(out.split()) # total number of commits + + # commit date: see ISO-8601 comment in git_versions_from_keywords() +- date = run_command(GITS, ["show", "-s", "--format=%%ci", "HEAD"], +- cwd=root)[0].strip() ++ date = runner(GITS, ["show", "-s", "--format=%%ci", "HEAD"], cwd=root)[0].strip() ++ # Use only the last line. Previous lines may contain GPG signature ++ # information. ++ date = date.splitlines()[-1] + pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1) + + return pieces + + +-def plus_or_dot(pieces): ++def plus_or_dot(pieces: Dict[str, Any]) -> str: + """Return a + if we don't already have one, else return a .""" + if "+" in pieces.get("closest-tag", ""): + return "." + return "+" + + +-def render_pep440(pieces): ++def render_pep440(pieces: Dict[str, Any]) -> str: + """Build up version string, with post-release "local version identifier". + + Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you +@@ -757,23 +937,71 @@ def render_pep440(pieces): + return rendered + + +-def render_pep440_pre(pieces): +- """TAG[.post.devDISTANCE] -- No -dirty. ++def render_pep440_branch(pieces: Dict[str, Any]) -> str: ++ """TAG[[.dev0]+DISTANCE.gHEX[.dirty]] . ++ ++ The ".dev0" means not master branch. Note that .dev0 sorts backwards ++ (a feature branch will appear "older" than the master branch). + + Exceptions: +- 1: no tags. 0.post.devDISTANCE ++ 1: no tags. 0[.dev0]+untagged.DISTANCE.gHEX[.dirty] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] ++ if pieces["distance"] or pieces["dirty"]: ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += plus_or_dot(pieces) ++ rendered += "%%d.g%%s" %% (pieces["distance"], pieces["short"]) ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ else: ++ # exception #1 ++ rendered = "0" ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += "+untagged.%%d.g%%s" %% (pieces["distance"], ++ pieces["short"]) ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ return rendered ++ ++ ++def pep440_split_post(ver: str) -> Tuple[str, Optional[int]]: ++ """Split pep440 version string at the post-release segment. ++ ++ Returns the release segments before the post-release and the ++ post-release version number (or -1 if no post-release segment is present). ++ """ ++ vc = str.split(ver, ".post") ++ return vc[0], int(vc[1] or 0) if len(vc) == 2 else None ++ ++ ++def render_pep440_pre(pieces: Dict[str, Any]) -> str: ++ """TAG[.postN.devDISTANCE] -- No -dirty. ++ ++ Exceptions: ++ 1: no tags. 0.post0.devDISTANCE ++ """ ++ if pieces["closest-tag"]: + if pieces["distance"]: +- rendered += ".post.dev%%d" %% pieces["distance"] ++ # update the post release segment ++ tag_version, post_version = pep440_split_post(pieces["closest-tag"]) ++ rendered = tag_version ++ if post_version is not None: ++ rendered += ".post%%d.dev%%d" %% (post_version + 1, pieces["distance"]) ++ else: ++ rendered += ".post0.dev%%d" %% (pieces["distance"]) ++ else: ++ # no commits, use the tag as the version ++ rendered = pieces["closest-tag"] + else: + # exception #1 +- rendered = "0.post.dev%%d" %% pieces["distance"] ++ rendered = "0.post0.dev%%d" %% pieces["distance"] + return rendered + + +-def render_pep440_post(pieces): ++def render_pep440_post(pieces: Dict[str, Any]) -> str: + """TAG[.postDISTANCE[.dev0]+gHEX] . + + The ".dev0" means dirty. Note that .dev0 sorts backwards +@@ -800,12 +1028,41 @@ def render_pep440_post(pieces): + return rendered + + +-def render_pep440_old(pieces): ++def render_pep440_post_branch(pieces: Dict[str, Any]) -> str: ++ """TAG[.postDISTANCE[.dev0]+gHEX[.dirty]] . ++ ++ The ".dev0" means not master branch. ++ ++ Exceptions: ++ 1: no tags. 0.postDISTANCE[.dev0]+gHEX[.dirty] ++ """ ++ if pieces["closest-tag"]: ++ rendered = pieces["closest-tag"] ++ if pieces["distance"] or pieces["dirty"]: ++ rendered += ".post%%d" %% pieces["distance"] ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += plus_or_dot(pieces) ++ rendered += "g%%s" %% pieces["short"] ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ else: ++ # exception #1 ++ rendered = "0.post%%d" %% pieces["distance"] ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += "+g%%s" %% pieces["short"] ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ return rendered ++ ++ ++def render_pep440_old(pieces: Dict[str, Any]) -> str: + """TAG[.postDISTANCE[.dev0]] . + + The ".dev0" means dirty. + +- Eexceptions: ++ Exceptions: + 1: no tags. 0.postDISTANCE[.dev0] + """ + if pieces["closest-tag"]: +@@ -822,7 +1079,7 @@ def render_pep440_old(pieces): + return rendered + + +-def render_git_describe(pieces): ++def render_git_describe(pieces: Dict[str, Any]) -> str: + """TAG[-DISTANCE-gHEX][-dirty]. + + Like 'git describe --tags --dirty --always'. +@@ -842,7 +1099,7 @@ def render_git_describe(pieces): + return rendered + + +-def render_git_describe_long(pieces): ++def render_git_describe_long(pieces: Dict[str, Any]) -> str: + """TAG-DISTANCE-gHEX[-dirty]. + + Like 'git describe --tags --dirty --always -long'. +@@ -862,7 +1119,7 @@ def render_git_describe_long(pieces): + return rendered + + +-def render(pieces, style): ++def render(pieces: Dict[str, Any], style: str) -> Dict[str, Any]: + """Render the given version pieces into the requested style.""" + if pieces["error"]: + return {"version": "unknown", +@@ -876,10 +1133,14 @@ def render(pieces, style): + + if style == "pep440": + rendered = render_pep440(pieces) ++ elif style == "pep440-branch": ++ rendered = render_pep440_branch(pieces) + elif style == "pep440-pre": + rendered = render_pep440_pre(pieces) + elif style == "pep440-post": + rendered = render_pep440_post(pieces) ++ elif style == "pep440-post-branch": ++ rendered = render_pep440_post_branch(pieces) + elif style == "pep440-old": + rendered = render_pep440_old(pieces) + elif style == "git-describe": +@@ -894,7 +1155,7 @@ def render(pieces, style): + "date": pieces.get("date")} + + +-def get_versions(): ++def get_versions() -> Dict[str, Any]: + """Get version information or return default if unable to do so.""" + # I am in _version.py, which lives at ROOT/VERSIONFILE_SOURCE. If we have + # __file__, we can work backwards from there to the root. Some +@@ -915,7 +1176,7 @@ def get_versions(): + # versionfile_source is the relative path from the top of the source + # tree (where the .git directory might live) to this file. Invert + # this to find the root from __file__. +- for i in cfg.versionfile_source.split('/'): ++ for _ in cfg.versionfile_source.split('/'): + root = os.path.dirname(root) + except NameError: + return {"version": "0+unknown", "full-revisionid": None, +@@ -942,41 +1203,48 @@ def get_versions(): + + + @register_vcs_handler("git", "get_keywords") +-def git_get_keywords(versionfile_abs): ++def git_get_keywords(versionfile_abs: str) -> Dict[str, str]: + """Extract version information from the given file.""" + # the code embedded in _version.py can just fetch the value of these + # keywords. When used from setup.py, we don't want to import _version.py, + # so we do it with a regexp instead. This function is not used from + # _version.py. +- keywords = {} ++ keywords: Dict[str, str] = {} + try: +- f = open(versionfile_abs, "r") +- for line in f.readlines(): +- if line.strip().startswith("git_refnames ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["refnames"] = mo.group(1) +- if line.strip().startswith("git_full ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["full"] = mo.group(1) +- if line.strip().startswith("git_date ="): +- mo = re.search(r'=\s*"(.*)"', line) +- if mo: +- keywords["date"] = mo.group(1) +- f.close() +- except EnvironmentError: ++ with open(versionfile_abs, "r") as fobj: ++ for line in fobj: ++ if line.strip().startswith("git_refnames ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["refnames"] = mo.group(1) ++ if line.strip().startswith("git_full ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["full"] = mo.group(1) ++ if line.strip().startswith("git_date ="): ++ mo = re.search(r'=\s*"(.*)"', line) ++ if mo: ++ keywords["date"] = mo.group(1) ++ except OSError: + pass + return keywords + + + @register_vcs_handler("git", "keywords") +-def git_versions_from_keywords(keywords, tag_prefix, verbose): ++def git_versions_from_keywords( ++ keywords: Dict[str, str], ++ tag_prefix: str, ++ verbose: bool, ++) -> Dict[str, Any]: + """Get version information from git keywords.""" +- if not keywords: +- raise NotThisMethod("no keywords at all, weird") ++ if "refnames" not in keywords: ++ raise NotThisMethod("Short version file found") + date = keywords.get("date") + if date is not None: ++ # Use only the last line. Previous lines may contain GPG signature ++ # information. ++ date = date.splitlines()[-1] ++ + # git-2.2.0 added "%cI", which expands to an ISO-8601 -compliant + # datestamp. However we prefer "%ci" (which expands to an "ISO-8601 + # -like" string, which we must then edit to make compliant), because +@@ -989,11 +1257,11 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + if verbose: + print("keywords are unexpanded, not using") + raise NotThisMethod("unexpanded keywords, not a git-archive tarball") +- refs = set([r.strip() for r in refnames.strip("()").split(",")]) ++ refs = {r.strip() for r in refnames.strip("()").split(",")} + # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of + # just "foo-1.0". If we see a "tag: " prefix, prefer those. + TAG = "tag: " +- tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)]) ++ tags = {r[len(TAG) :] for r in refs if r.startswith(TAG)} + if not tags: + # Either we're using git < 1.8.3, or there really are no tags. We use + # a heuristic: assume all version tags have a digit. The old git %d +@@ -1002,7 +1270,7 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + # between branches and tags. By ignoring refnames without digits, we + # filter out many common branch names like "release" and + # "stabilization", as well as "HEAD" and "master". +- tags = set([r for r in refs if re.search(r'\d', r)]) ++ tags = {r for r in refs if re.search(r"\d", r)} + if verbose: + print("discarding '%s', no digits" % ",".join(refs - tags)) + if verbose: +@@ -1010,23 +1278,37 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose): + for ref in sorted(tags): + # sorting will prefer e.g. "2.0" over "2.0rc1" + if ref.startswith(tag_prefix): +- r = ref[len(tag_prefix):] ++ r = ref[len(tag_prefix) :] ++ # Filter out refs that exactly match prefix or that don't start ++ # with a number once the prefix is stripped (mostly a concern ++ # when prefix is '') ++ if not re.match(r"\d", r): ++ continue + if verbose: + print("picking %s" % r) +- return {"version": r, +- "full-revisionid": keywords["full"].strip(), +- "dirty": False, "error": None, +- "date": date} ++ return { ++ "version": r, ++ "full-revisionid": keywords["full"].strip(), ++ "dirty": False, ++ "error": None, ++ "date": date, ++ } + # no suitable tags, so version is "0+unknown", but full hex is still there + if verbose: + print("no suitable tags, using unknown + full revision id") +- return {"version": "0+unknown", +- "full-revisionid": keywords["full"].strip(), +- "dirty": False, "error": "no suitable tags", "date": None} ++ return { ++ "version": "0+unknown", ++ "full-revisionid": keywords["full"].strip(), ++ "dirty": False, ++ "error": "no suitable tags", ++ "date": None, ++ } + + + @register_vcs_handler("git", "pieces_from_vcs") +-def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): ++def git_pieces_from_vcs( ++ tag_prefix: str, root: str, verbose: bool, runner: Callable = run_command ++) -> Dict[str, Any]: + """Get version from 'git describe' in the root of the source tree. + + This only gets called if the git-archive 'subst' keywords were *not* +@@ -1037,8 +1319,14 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + if sys.platform == "win32": + GITS = ["git.cmd", "git.exe"] + +- out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root, +- hide_stderr=True) ++ # GIT_DIR can interfere with correct operation of Versioneer. ++ # It may be intended to be passed to the Versioneer-versioned project, ++ # but that should not change where we get our version from. ++ env = os.environ.copy() ++ env.pop("GIT_DIR", None) ++ runner = functools.partial(runner, env=env) ++ ++ _, rc = runner(GITS, ["rev-parse", "--git-dir"], cwd=root, hide_stderr=not verbose) + if rc != 0: + if verbose: + print("Directory %s not under git control" % root) +@@ -1046,24 +1334,65 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + + # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty] + # if there isn't one, this yields HEX[-dirty] (no NUM) +- describe_out, rc = run_command(GITS, ["describe", "--tags", "--dirty", +- "--always", "--long", +- "--match", "%s*" % tag_prefix], +- cwd=root) ++ describe_out, rc = runner( ++ GITS, ++ [ ++ "describe", ++ "--tags", ++ "--dirty", ++ "--always", ++ "--long", ++ "--match", ++ f"{tag_prefix}[[:digit:]]*", ++ ], ++ cwd=root, ++ ) + # --long was added in git-1.5.5 + if describe_out is None: + raise NotThisMethod("'git describe' failed") + describe_out = describe_out.strip() +- full_out, rc = run_command(GITS, ["rev-parse", "HEAD"], cwd=root) ++ full_out, rc = runner(GITS, ["rev-parse", "HEAD"], cwd=root) + if full_out is None: + raise NotThisMethod("'git rev-parse' failed") + full_out = full_out.strip() + +- pieces = {} ++ pieces: Dict[str, Any] = {} + pieces["long"] = full_out + pieces["short"] = full_out[:7] # maybe improved later + pieces["error"] = None + ++ branch_name, rc = runner(GITS, ["rev-parse", "--abbrev-ref", "HEAD"], cwd=root) ++ # --abbrev-ref was added in git-1.6.3 ++ if rc != 0 or branch_name is None: ++ raise NotThisMethod("'git rev-parse --abbrev-ref' returned error") ++ branch_name = branch_name.strip() ++ ++ if branch_name == "HEAD": ++ # If we aren't exactly on a branch, pick a branch which represents ++ # the current commit. If all else fails, we are on a branchless ++ # commit. ++ branches, rc = runner(GITS, ["branch", "--contains"], cwd=root) ++ # --contains was added in git-1.5.4 ++ if rc != 0 or branches is None: ++ raise NotThisMethod("'git branch --contains' returned error") ++ branches = branches.split("\n") ++ ++ # Remove the first line if we're running detached ++ if "(" in branches[0]: ++ branches.pop(0) ++ ++ # Strip off the leading "* " from the list of branches. ++ branches = [branch[2:] for branch in branches] ++ if "master" in branches: ++ branch_name = "master" ++ elif not branches: ++ branch_name = None ++ else: ++ # Pick the first branch that is returned. Good or bad. ++ branch_name = branches[0] ++ ++ pieces["branch"] = branch_name ++ + # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty] + # TAG might have hyphens. + git_describe = describe_out +@@ -1072,17 +1401,16 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + dirty = git_describe.endswith("-dirty") + pieces["dirty"] = dirty + if dirty: +- git_describe = git_describe[:git_describe.rindex("-dirty")] ++ git_describe = git_describe[: git_describe.rindex("-dirty")] + + # now we have TAG-NUM-gHEX or HEX + + if "-" in git_describe: + # TAG-NUM-gHEX +- mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe) ++ mo = re.search(r"^(.+)-(\d+)-g([0-9a-f]+)$", git_describe) + if not mo: +- # unparseable. Maybe git-describe is misbehaving? +- pieces["error"] = ("unable to parse git-describe output: '%s'" +- % describe_out) ++ # unparsable. Maybe git-describe is misbehaving? ++ pieces["error"] = "unable to parse git-describe output: '%s'" % describe_out + return pieces + + # tag +@@ -1091,10 +1419,12 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + if verbose: + fmt = "tag '%s' doesn't start with prefix '%s'" + print(fmt % (full_tag, tag_prefix)) +- pieces["error"] = ("tag '%s' doesn't start with prefix '%s'" +- % (full_tag, tag_prefix)) ++ pieces["error"] = "tag '%s' doesn't start with prefix '%s'" % ( ++ full_tag, ++ tag_prefix, ++ ) + return pieces +- pieces["closest-tag"] = full_tag[len(tag_prefix):] ++ pieces["closest-tag"] = full_tag[len(tag_prefix) :] + + # distance: number of commits since tag + pieces["distance"] = int(mo.group(2)) +@@ -1105,19 +1435,20 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + else: + # HEX: no tags + pieces["closest-tag"] = None +- count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"], +- cwd=root) +- pieces["distance"] = int(count_out) # total number of commits ++ out, rc = runner(GITS, ["rev-list", "HEAD", "--left-right"], cwd=root) ++ pieces["distance"] = len(out.split()) # total number of commits + + # commit date: see ISO-8601 comment in git_versions_from_keywords() +- date = run_command(GITS, ["show", "-s", "--format=%ci", "HEAD"], +- cwd=root)[0].strip() ++ date = runner(GITS, ["show", "-s", "--format=%ci", "HEAD"], cwd=root)[0].strip() ++ # Use only the last line. Previous lines may contain GPG signature ++ # information. ++ date = date.splitlines()[-1] + pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1) + + return pieces + + +-def do_vcs_install(manifest_in, versionfile_source, ipy): ++def do_vcs_install(versionfile_source: str, ipy: Optional[str]) -> None: + """Git-specific installation logic for Versioneer. + + For Git, this means creating/changing .gitattributes to mark _version.py +@@ -1126,36 +1457,40 @@ def do_vcs_install(manifest_in, versionfile_source, ipy): + GITS = ["git"] + if sys.platform == "win32": + GITS = ["git.cmd", "git.exe"] +- files = [manifest_in, versionfile_source] ++ files = [versionfile_source] + if ipy: + files.append(ipy) +- try: +- me = __file__ +- if me.endswith(".pyc") or me.endswith(".pyo"): +- me = os.path.splitext(me)[0] + ".py" +- versioneer_file = os.path.relpath(me) +- except NameError: +- versioneer_file = "versioneer.py" +- files.append(versioneer_file) ++ if "VERSIONEER_PEP518" not in globals(): ++ try: ++ my_path = __file__ ++ if my_path.endswith((".pyc", ".pyo")): ++ my_path = os.path.splitext(my_path)[0] + ".py" ++ versioneer_file = os.path.relpath(my_path) ++ except NameError: ++ versioneer_file = "versioneer.py" ++ files.append(versioneer_file) + present = False + try: +- f = open(".gitattributes", "r") +- for line in f.readlines(): +- if line.strip().startswith(versionfile_source): +- if "export-subst" in line.strip().split()[1:]: +- present = True +- f.close() +- except EnvironmentError: ++ with open(".gitattributes", "r") as fobj: ++ for line in fobj: ++ if line.strip().startswith(versionfile_source): ++ if "export-subst" in line.strip().split()[1:]: ++ present = True ++ break ++ except OSError: + pass + if not present: +- f = open(".gitattributes", "a+") +- f.write("%s export-subst\n" % versionfile_source) +- f.close() ++ with open(".gitattributes", "a+") as fobj: ++ fobj.write(f"{versionfile_source} export-subst\n") + files.append(".gitattributes") + run_command(GITS, ["add", "--"] + files) + + +-def versions_from_parentdir(parentdir_prefix, root, verbose): ++def versions_from_parentdir( ++ parentdir_prefix: str, ++ root: str, ++ verbose: bool, ++) -> Dict[str, Any]: + """Try to determine the version from the parent directory name. + + Source tarballs conventionally unpack into a directory that includes both +@@ -1164,24 +1499,29 @@ def versions_from_parentdir(parentdir_prefix, root, verbose): + """ + rootdirs = [] + +- for i in range(3): ++ for _ in range(3): + dirname = os.path.basename(root) + if dirname.startswith(parentdir_prefix): +- return {"version": dirname[len(parentdir_prefix):], +- "full-revisionid": None, +- "dirty": False, "error": None, "date": None} +- else: +- rootdirs.append(root) +- root = os.path.dirname(root) # up a level ++ return { ++ "version": dirname[len(parentdir_prefix) :], ++ "full-revisionid": None, ++ "dirty": False, ++ "error": None, ++ "date": None, ++ } ++ rootdirs.append(root) ++ root = os.path.dirname(root) # up a level + + if verbose: +- print("Tried directories %s but none started with prefix %s" % +- (str(rootdirs), parentdir_prefix)) ++ print( ++ "Tried directories %s but none started with prefix %s" ++ % (str(rootdirs), parentdir_prefix) ++ ) + raise NotThisMethod("rootdir doesn't start with parentdir_prefix") + + + SHORT_VERSION_PY = """ +-# This file was generated by 'versioneer.py' (0.18) from ++# This file was generated by 'versioneer.py' (0.29) from + # revision-control system data, or from the parent directory name of an + # unpacked source archive. Distribution tarballs contain a pre-generated copy + # of this file. +@@ -1198,42 +1538,42 @@ def get_versions(): + """ + + +-def versions_from_file(filename): ++def versions_from_file(filename: str) -> Dict[str, Any]: + """Try to determine the version from _version.py if present.""" + try: + with open(filename) as f: + contents = f.read() +- except EnvironmentError: ++ except OSError: + raise NotThisMethod("unable to read _version.py") +- mo = re.search(r"version_json = '''\n(.*)''' # END VERSION_JSON", +- contents, re.M | re.S) ++ mo = re.search( ++ r"version_json = '''\n(.*)''' # END VERSION_JSON", contents, re.M | re.S ++ ) + if not mo: +- mo = re.search(r"version_json = '''\r\n(.*)''' # END VERSION_JSON", +- contents, re.M | re.S) ++ mo = re.search( ++ r"version_json = '''\r\n(.*)''' # END VERSION_JSON", contents, re.M | re.S ++ ) + if not mo: + raise NotThisMethod("no version_json in _version.py") + return json.loads(mo.group(1)) + + +-def write_to_version_file(filename, versions): ++def write_to_version_file(filename: str, versions: Dict[str, Any]) -> None: + """Write the given version number to the given _version.py file.""" +- os.unlink(filename) +- contents = json.dumps(versions, sort_keys=True, +- indent=1, separators=(",", ": ")) ++ contents = json.dumps(versions, sort_keys=True, indent=1, separators=(",", ": ")) + with open(filename, "w") as f: + f.write(SHORT_VERSION_PY % contents) + + print("set %s to '%s'" % (filename, versions["version"])) + + +-def plus_or_dot(pieces): ++def plus_or_dot(pieces: Dict[str, Any]) -> str: + """Return a + if we don't already have one, else return a .""" + if "+" in pieces.get("closest-tag", ""): + return "." + return "+" + + +-def render_pep440(pieces): ++def render_pep440(pieces: Dict[str, Any]) -> str: + """Build up version string, with post-release "local version identifier". + + Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you +@@ -1251,30 +1591,76 @@ def render_pep440(pieces): + rendered += ".dirty" + else: + # exception #1 +- rendered = "0+untagged.%d.g%s" % (pieces["distance"], +- pieces["short"]) ++ rendered = "0+untagged.%d.g%s" % (pieces["distance"], pieces["short"]) + if pieces["dirty"]: + rendered += ".dirty" + return rendered + + +-def render_pep440_pre(pieces): +- """TAG[.post.devDISTANCE] -- No -dirty. ++def render_pep440_branch(pieces: Dict[str, Any]) -> str: ++ """TAG[[.dev0]+DISTANCE.gHEX[.dirty]] . ++ ++ The ".dev0" means not master branch. Note that .dev0 sorts backwards ++ (a feature branch will appear "older" than the master branch). + + Exceptions: +- 1: no tags. 0.post.devDISTANCE ++ 1: no tags. 0[.dev0]+untagged.DISTANCE.gHEX[.dirty] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] ++ if pieces["distance"] or pieces["dirty"]: ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += plus_or_dot(pieces) ++ rendered += "%d.g%s" % (pieces["distance"], pieces["short"]) ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ else: ++ # exception #1 ++ rendered = "0" ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += "+untagged.%d.g%s" % (pieces["distance"], pieces["short"]) ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ return rendered ++ ++ ++def pep440_split_post(ver: str) -> Tuple[str, Optional[int]]: ++ """Split pep440 version string at the post-release segment. ++ ++ Returns the release segments before the post-release and the ++ post-release version number (or -1 if no post-release segment is present). ++ """ ++ vc = str.split(ver, ".post") ++ return vc[0], int(vc[1] or 0) if len(vc) == 2 else None ++ ++ ++def render_pep440_pre(pieces: Dict[str, Any]) -> str: ++ """TAG[.postN.devDISTANCE] -- No -dirty. ++ ++ Exceptions: ++ 1: no tags. 0.post0.devDISTANCE ++ """ ++ if pieces["closest-tag"]: + if pieces["distance"]: +- rendered += ".post.dev%d" % pieces["distance"] ++ # update the post release segment ++ tag_version, post_version = pep440_split_post(pieces["closest-tag"]) ++ rendered = tag_version ++ if post_version is not None: ++ rendered += ".post%d.dev%d" % (post_version + 1, pieces["distance"]) ++ else: ++ rendered += ".post0.dev%d" % (pieces["distance"]) ++ else: ++ # no commits, use the tag as the version ++ rendered = pieces["closest-tag"] + else: + # exception #1 +- rendered = "0.post.dev%d" % pieces["distance"] ++ rendered = "0.post0.dev%d" % pieces["distance"] + return rendered + + +-def render_pep440_post(pieces): ++def render_pep440_post(pieces: Dict[str, Any]) -> str: + """TAG[.postDISTANCE[.dev0]+gHEX] . + + The ".dev0" means dirty. Note that .dev0 sorts backwards +@@ -1301,12 +1687,41 @@ def render_pep440_post(pieces): + return rendered + + +-def render_pep440_old(pieces): ++def render_pep440_post_branch(pieces: Dict[str, Any]) -> str: ++ """TAG[.postDISTANCE[.dev0]+gHEX[.dirty]] . ++ ++ The ".dev0" means not master branch. ++ ++ Exceptions: ++ 1: no tags. 0.postDISTANCE[.dev0]+gHEX[.dirty] ++ """ ++ if pieces["closest-tag"]: ++ rendered = pieces["closest-tag"] ++ if pieces["distance"] or pieces["dirty"]: ++ rendered += ".post%d" % pieces["distance"] ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += plus_or_dot(pieces) ++ rendered += "g%s" % pieces["short"] ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ else: ++ # exception #1 ++ rendered = "0.post%d" % pieces["distance"] ++ if pieces["branch"] != "master": ++ rendered += ".dev0" ++ rendered += "+g%s" % pieces["short"] ++ if pieces["dirty"]: ++ rendered += ".dirty" ++ return rendered ++ ++ ++def render_pep440_old(pieces: Dict[str, Any]) -> str: + """TAG[.postDISTANCE[.dev0]] . + + The ".dev0" means dirty. + +- Eexceptions: ++ Exceptions: + 1: no tags. 0.postDISTANCE[.dev0] + """ + if pieces["closest-tag"]: +@@ -1323,7 +1738,7 @@ def render_pep440_old(pieces): + return rendered + + +-def render_git_describe(pieces): ++def render_git_describe(pieces: Dict[str, Any]) -> str: + """TAG[-DISTANCE-gHEX][-dirty]. + + Like 'git describe --tags --dirty --always'. +@@ -1343,7 +1758,7 @@ def render_git_describe(pieces): + return rendered + + +-def render_git_describe_long(pieces): ++def render_git_describe_long(pieces: Dict[str, Any]) -> str: + """TAG-DISTANCE-gHEX[-dirty]. + + Like 'git describe --tags --dirty --always -long'. +@@ -1363,24 +1778,30 @@ def render_git_describe_long(pieces): + return rendered + + +-def render(pieces, style): ++def render(pieces: Dict[str, Any], style: str) -> Dict[str, Any]: + """Render the given version pieces into the requested style.""" + if pieces["error"]: +- return {"version": "unknown", +- "full-revisionid": pieces.get("long"), +- "dirty": None, +- "error": pieces["error"], +- "date": None} ++ return { ++ "version": "unknown", ++ "full-revisionid": pieces.get("long"), ++ "dirty": None, ++ "error": pieces["error"], ++ "date": None, ++ } + + if not style or style == "default": + style = "pep440" # the default + + if style == "pep440": + rendered = render_pep440(pieces) ++ elif style == "pep440-branch": ++ rendered = render_pep440_branch(pieces) + elif style == "pep440-pre": + rendered = render_pep440_pre(pieces) + elif style == "pep440-post": + rendered = render_pep440_post(pieces) ++ elif style == "pep440-post-branch": ++ rendered = render_pep440_post_branch(pieces) + elif style == "pep440-old": + rendered = render_pep440_old(pieces) + elif style == "git-describe": +@@ -1390,16 +1811,20 @@ def render(pieces, style): + else: + raise ValueError("unknown style '%s'" % style) + +- return {"version": rendered, "full-revisionid": pieces["long"], +- "dirty": pieces["dirty"], "error": None, +- "date": pieces.get("date")} ++ return { ++ "version": rendered, ++ "full-revisionid": pieces["long"], ++ "dirty": pieces["dirty"], ++ "error": None, ++ "date": pieces.get("date"), ++ } + + + class VersioneerBadRootError(Exception): + """The project root directory is unknown or missing key files.""" + + +-def get_versions(verbose=False): ++def get_versions(verbose: bool = False) -> Dict[str, Any]: + """Get the project version from whatever source is available. + + Returns dict with two keys: 'version' and 'full'. +@@ -1414,9 +1839,10 @@ def get_versions(verbose=False): + assert cfg.VCS is not None, "please set [versioneer]VCS= in setup.cfg" + handlers = HANDLERS.get(cfg.VCS) + assert handlers, "unrecognized VCS '%s'" % cfg.VCS +- verbose = verbose or cfg.verbose +- assert cfg.versionfile_source is not None, \ +- "please set versioneer.versionfile_source" ++ verbose = verbose or bool(cfg.verbose) # `bool()` used to avoid `None` ++ assert ( ++ cfg.versionfile_source is not None ++ ), "please set versioneer.versionfile_source" + assert cfg.tag_prefix is not None, "please set versioneer.tag_prefix" + + versionfile_abs = os.path.join(root, cfg.versionfile_source) +@@ -1470,18 +1896,26 @@ def get_versions(verbose=False): + if verbose: + print("unable to compute version") + +- return {"version": "0+unknown", "full-revisionid": None, +- "dirty": None, "error": "unable to compute version", +- "date": None} ++ return { ++ "version": "0+unknown", ++ "full-revisionid": None, ++ "dirty": None, ++ "error": "unable to compute version", ++ "date": None, ++ } + + +-def get_version(): ++def get_version() -> str: + """Get the short version string for this project.""" + return get_versions()["version"] + + +-def get_cmdclass(): +- """Get the custom setuptools/distutils subclasses used by Versioneer.""" ++def get_cmdclass(cmdclass: Optional[Dict[str, Any]] = None): ++ """Get the custom setuptools subclasses used by Versioneer. ++ ++ If the package uses a different cmdclass (e.g. one from numpy), it ++ should be provide as an argument. ++ """ + if "versioneer" in sys.modules: + del sys.modules["versioneer"] + # this fixes the "python setup.py develop" case (also 'install' and +@@ -1495,25 +1929,25 @@ def get_cmdclass(): + # parent is protected against the child's "import versioneer". By + # removing ourselves from sys.modules here, before the child build + # happens, we protect the child from the parent's versioneer too. +- # Also see https://github.com/warner/python-versioneer/issues/52 ++ # Also see https://github.com/python-versioneer/python-versioneer/issues/52 + +- cmds = {} ++ cmds = {} if cmdclass is None else cmdclass.copy() + +- # we add "version" to both distutils and setuptools +- from distutils.core import Command ++ # we add "version" to setuptools ++ from setuptools import Command + + class cmd_version(Command): + description = "report generated version string" +- user_options = [] +- boolean_options = [] ++ user_options: List[Tuple[str, str, str]] = [] ++ boolean_options: List[str] = [] + +- def initialize_options(self): ++ def initialize_options(self) -> None: + pass + +- def finalize_options(self): ++ def finalize_options(self) -> None: + pass + +- def run(self): ++ def run(self) -> None: + vers = get_versions(verbose=True) + print("Version: %s" % vers["version"]) + print(" full-revisionid: %s" % vers.get("full-revisionid")) +@@ -1521,9 +1955,10 @@ def get_cmdclass(): + print(" date: %s" % vers.get("date")) + if vers["error"]: + print(" error: %s" % vers["error"]) ++ + cmds["version"] = cmd_version + +- # we override "build_py" in both distutils and setuptools ++ # we override "build_py" in setuptools + # + # most invocation pathways end up running build_py: + # distutils/build -> build_py +@@ -1538,29 +1973,71 @@ def get_cmdclass(): + # then does setup.py bdist_wheel, or sometimes setup.py install + # setup.py egg_info -> ? + ++ # pip install -e . and setuptool/editable_wheel will invoke build_py ++ # but the build_py command is not expected to copy any files. ++ + # we override different "build_py" commands for both environments +- if "setuptools" in sys.modules: +- from setuptools.command.build_py import build_py as _build_py ++ if "build_py" in cmds: ++ _build_py: Any = cmds["build_py"] + else: +- from distutils.command.build_py import build_py as _build_py ++ from setuptools.command.build_py import build_py as _build_py + + class cmd_build_py(_build_py): +- def run(self): ++ def run(self) -> None: + root = get_root() + cfg = get_config_from_root(root) + versions = get_versions() + _build_py.run(self) ++ if getattr(self, "editable_mode", False): ++ # During editable installs `.py` and data files are ++ # not copied to build_lib ++ return + # now locate _version.py in the new build/ directory and replace + # it with an updated value + if cfg.versionfile_build: +- target_versionfile = os.path.join(self.build_lib, +- cfg.versionfile_build) ++ target_versionfile = os.path.join(self.build_lib, cfg.versionfile_build) + print("UPDATING %s" % target_versionfile) + write_to_version_file(target_versionfile, versions) ++ + cmds["build_py"] = cmd_build_py + ++ if "build_ext" in cmds: ++ _build_ext: Any = cmds["build_ext"] ++ else: ++ from setuptools.command.build_ext import build_ext as _build_ext ++ ++ class cmd_build_ext(_build_ext): ++ def run(self) -> None: ++ root = get_root() ++ cfg = get_config_from_root(root) ++ versions = get_versions() ++ _build_ext.run(self) ++ if self.inplace: ++ # build_ext --inplace will only build extensions in ++ # build/lib<..> dir with no _version.py to write to. ++ # As in place builds will already have a _version.py ++ # in the module dir, we do not need to write one. ++ return ++ # now locate _version.py in the new build/ directory and replace ++ # it with an updated value ++ if not cfg.versionfile_build: ++ return ++ target_versionfile = os.path.join(self.build_lib, cfg.versionfile_build) ++ if not os.path.exists(target_versionfile): ++ print( ++ f"Warning: {target_versionfile} does not exist, skipping " ++ "version update. This can happen if you are running build_ext " ++ "without first running build_py." ++ ) ++ return ++ print("UPDATING %s" % target_versionfile) ++ write_to_version_file(target_versionfile, versions) ++ ++ cmds["build_ext"] = cmd_build_ext ++ + if "cx_Freeze" in sys.modules: # cx_freeze enabled? +- from cx_Freeze.dist import build_exe as _build_exe ++ from cx_Freeze.dist import build_exe as _build_exe # type: ignore ++ + # nczeczulin reports that py2exe won't like the pep440-style string + # as FILEVERSION, but it can be used for PRODUCTVERSION, e.g. + # setup(console=[{ +@@ -1569,7 +2046,7 @@ def get_cmdclass(): + # ... + + class cmd_build_exe(_build_exe): +- def run(self): ++ def run(self) -> None: + root = get_root() + cfg = get_config_from_root(root) + versions = get_versions() +@@ -1581,24 +2058,28 @@ def get_cmdclass(): + os.unlink(target_versionfile) + with open(cfg.versionfile_source, "w") as f: + LONG = LONG_VERSION_PY[cfg.VCS] +- f.write(LONG % +- {"DOLLAR": "$", +- "STYLE": cfg.style, +- "TAG_PREFIX": cfg.tag_prefix, +- "PARENTDIR_PREFIX": cfg.parentdir_prefix, +- "VERSIONFILE_SOURCE": cfg.versionfile_source, +- }) ++ f.write( ++ LONG ++ % { ++ "DOLLAR": "$", ++ "STYLE": cfg.style, ++ "TAG_PREFIX": cfg.tag_prefix, ++ "PARENTDIR_PREFIX": cfg.parentdir_prefix, ++ "VERSIONFILE_SOURCE": cfg.versionfile_source, ++ } ++ ) ++ + cmds["build_exe"] = cmd_build_exe + del cmds["build_py"] + +- if 'py2exe' in sys.modules: # py2exe enabled? ++ if "py2exe" in sys.modules: # py2exe enabled? + try: +- from py2exe.distutils_buildexe import py2exe as _py2exe # py3 ++ from py2exe.setuptools_buildexe import py2exe as _py2exe # type: ignore + except ImportError: +- from py2exe.build_exe import py2exe as _py2exe # py2 ++ from py2exe.distutils_buildexe import py2exe as _py2exe # type: ignore + + class cmd_py2exe(_py2exe): +- def run(self): ++ def run(self) -> None: + root = get_root() + cfg = get_config_from_root(root) + versions = get_versions() +@@ -1610,23 +2091,67 @@ def get_cmdclass(): + os.unlink(target_versionfile) + with open(cfg.versionfile_source, "w") as f: + LONG = LONG_VERSION_PY[cfg.VCS] +- f.write(LONG % +- {"DOLLAR": "$", +- "STYLE": cfg.style, +- "TAG_PREFIX": cfg.tag_prefix, +- "PARENTDIR_PREFIX": cfg.parentdir_prefix, +- "VERSIONFILE_SOURCE": cfg.versionfile_source, +- }) ++ f.write( ++ LONG ++ % { ++ "DOLLAR": "$", ++ "STYLE": cfg.style, ++ "TAG_PREFIX": cfg.tag_prefix, ++ "PARENTDIR_PREFIX": cfg.parentdir_prefix, ++ "VERSIONFILE_SOURCE": cfg.versionfile_source, ++ } ++ ) ++ + cmds["py2exe"] = cmd_py2exe + ++ # sdist farms its file list building out to egg_info ++ if "egg_info" in cmds: ++ _egg_info: Any = cmds["egg_info"] ++ else: ++ from setuptools.command.egg_info import egg_info as _egg_info ++ ++ class cmd_egg_info(_egg_info): ++ def find_sources(self) -> None: ++ # egg_info.find_sources builds the manifest list and writes it ++ # in one shot ++ super().find_sources() ++ ++ # Modify the filelist and normalize it ++ root = get_root() ++ cfg = get_config_from_root(root) ++ self.filelist.append("versioneer.py") ++ if cfg.versionfile_source: ++ # There are rare cases where versionfile_source might not be ++ # included by default, so we must be explicit ++ self.filelist.append(cfg.versionfile_source) ++ self.filelist.sort() ++ self.filelist.remove_duplicates() ++ ++ # The write method is hidden in the manifest_maker instance that ++ # generated the filelist and was thrown away ++ # We will instead replicate their final normalization (to unicode, ++ # and POSIX-style paths) ++ from setuptools import unicode_utils ++ ++ normalized = [ ++ unicode_utils.filesys_decode(f).replace(os.sep, "/") ++ for f in self.filelist.files ++ ] ++ ++ manifest_filename = os.path.join(self.egg_info, "SOURCES.txt") ++ with open(manifest_filename, "w") as fobj: ++ fobj.write("\n".join(normalized)) ++ ++ cmds["egg_info"] = cmd_egg_info ++ + # we override different "sdist" commands for both environments +- if "setuptools" in sys.modules: +- from setuptools.command.sdist import sdist as _sdist ++ if "sdist" in cmds: ++ _sdist: Any = cmds["sdist"] + else: +- from distutils.command.sdist import sdist as _sdist ++ from setuptools.command.sdist import sdist as _sdist + + class cmd_sdist(_sdist): +- def run(self): ++ def run(self) -> None: + versions = get_versions() + self._versioneer_generated_versions = versions + # unless we update this, the command will keep using the old +@@ -1634,7 +2159,7 @@ def get_cmdclass(): + self.distribution.metadata.version = versions["version"] + return _sdist.run(self) + +- def make_release_tree(self, base_dir, files): ++ def make_release_tree(self, base_dir: str, files: List[str]) -> None: + root = get_root() + cfg = get_config_from_root(root) + _sdist.make_release_tree(self, base_dir, files) +@@ -1643,8 +2168,10 @@ def get_cmdclass(): + # updated value + target_versionfile = os.path.join(base_dir, cfg.versionfile_source) + print("UPDATING %s" % target_versionfile) +- write_to_version_file(target_versionfile, +- self._versioneer_generated_versions) ++ write_to_version_file( ++ target_versionfile, self._versioneer_generated_versions ++ ) ++ + cmds["sdist"] = cmd_sdist + + return cmds +@@ -1687,23 +2214,26 @@ SAMPLE_CONFIG = """ + + """ + +-INIT_PY_SNIPPET = """ ++OLD_SNIPPET = """ + from ._version import get_versions + __version__ = get_versions()['version'] + del get_versions + """ + ++INIT_PY_SNIPPET = """ ++from . import {0} ++__version__ = {0}.get_versions()['version'] ++""" ++ + +-def do_setup(): +- """Main VCS-independent setup function for installing Versioneer.""" ++def do_setup() -> int: ++ """Do main VCS-independent setup function for installing Versioneer.""" + root = get_root() + try: + cfg = get_config_from_root(root) +- except (EnvironmentError, configparser.NoSectionError, +- configparser.NoOptionError) as e: +- if isinstance(e, (EnvironmentError, configparser.NoSectionError)): +- print("Adding sample versioneer config to setup.cfg", +- file=sys.stderr) ++ except (OSError, configparser.NoSectionError, configparser.NoOptionError) as e: ++ if isinstance(e, (OSError, configparser.NoSectionError)): ++ print("Adding sample versioneer config to setup.cfg", file=sys.stderr) + with open(os.path.join(root, "setup.cfg"), "a") as f: + f.write(SAMPLE_CONFIG) + print(CONFIG_ERROR, file=sys.stderr) +@@ -1712,71 +2242,49 @@ def do_setup(): + print(" creating %s" % cfg.versionfile_source) + with open(cfg.versionfile_source, "w") as f: + LONG = LONG_VERSION_PY[cfg.VCS] +- f.write(LONG % {"DOLLAR": "$", +- "STYLE": cfg.style, +- "TAG_PREFIX": cfg.tag_prefix, +- "PARENTDIR_PREFIX": cfg.parentdir_prefix, +- "VERSIONFILE_SOURCE": cfg.versionfile_source, +- }) +- +- ipy = os.path.join(os.path.dirname(cfg.versionfile_source), +- "__init__.py") ++ f.write( ++ LONG ++ % { ++ "DOLLAR": "$", ++ "STYLE": cfg.style, ++ "TAG_PREFIX": cfg.tag_prefix, ++ "PARENTDIR_PREFIX": cfg.parentdir_prefix, ++ "VERSIONFILE_SOURCE": cfg.versionfile_source, ++ } ++ ) ++ ++ ipy = os.path.join(os.path.dirname(cfg.versionfile_source), "__init__.py") ++ maybe_ipy: Optional[str] = ipy + if os.path.exists(ipy): + try: + with open(ipy, "r") as f: + old = f.read() +- except EnvironmentError: ++ except OSError: + old = "" +- if INIT_PY_SNIPPET not in old: ++ module = os.path.splitext(os.path.basename(cfg.versionfile_source))[0] ++ snippet = INIT_PY_SNIPPET.format(module) ++ if OLD_SNIPPET in old: ++ print(" replacing boilerplate in %s" % ipy) ++ with open(ipy, "w") as f: ++ f.write(old.replace(OLD_SNIPPET, snippet)) ++ elif snippet not in old: + print(" appending to %s" % ipy) + with open(ipy, "a") as f: +- f.write(INIT_PY_SNIPPET) ++ f.write(snippet) + else: + print(" %s unmodified" % ipy) + else: + print(" %s doesn't exist, ok" % ipy) +- ipy = None +- +- # Make sure both the top-level "versioneer.py" and versionfile_source +- # (PKG/_version.py, used by runtime code) are in MANIFEST.in, so +- # they'll be copied into source distributions. Pip won't be able to +- # install the package without this. +- manifest_in = os.path.join(root, "MANIFEST.in") +- simple_includes = set() +- try: +- with open(manifest_in, "r") as f: +- for line in f: +- if line.startswith("include "): +- for include in line.split()[1:]: +- simple_includes.add(include) +- except EnvironmentError: +- pass +- # That doesn't cover everything MANIFEST.in can do +- # (http://docs.python.org/2/distutils/sourcedist.html#commands), so +- # it might give some false negatives. Appending redundant 'include' +- # lines is safe, though. +- if "versioneer.py" not in simple_includes: +- print(" appending 'versioneer.py' to MANIFEST.in") +- with open(manifest_in, "a") as f: +- f.write("include versioneer.py\n") +- else: +- print(" 'versioneer.py' already in MANIFEST.in") +- if cfg.versionfile_source not in simple_includes: +- print(" appending versionfile_source ('%s') to MANIFEST.in" % +- cfg.versionfile_source) +- with open(manifest_in, "a") as f: +- f.write("include %s\n" % cfg.versionfile_source) +- else: +- print(" versionfile_source already in MANIFEST.in") ++ maybe_ipy = None + + # Make VCS-specific changes. For git, this means creating/changing + # .gitattributes to mark _version.py for export-subst keyword + # substitution. +- do_vcs_install(manifest_in, cfg.versionfile_source, ipy) ++ do_vcs_install(cfg.versionfile_source, maybe_ipy) + return 0 + + +-def scan_setup_py(): ++def scan_setup_py() -> int: + """Validate the contents of setup.py against Versioneer's expectations.""" + found = set() + setters = False +@@ -1813,10 +2321,14 @@ def scan_setup_py(): + return errors + + ++def setup_command() -> NoReturn: ++ """Set up Versioneer and exit with appropriate error code.""" ++ errors = do_setup() ++ errors += scan_setup_py() ++ sys.exit(1 if errors else 0) ++ ++ + if __name__ == "__main__": + cmd = sys.argv[1] + if cmd == "setup": +- errors = do_setup() +- errors += scan_setup_py() +- if errors: +- sys.exit(1) ++ setup_command() +-- +2.41.0 + diff --git a/package/python-spake2/Config.in b/package/python-spake2/Config.in new file mode 100644 index 00000000..1c2e3a49 --- /dev/null +++ b/package/python-spake2/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_SPAKE2 + bool "python-spake2" + select BR2_PACKAGE_PYTHON_HKDF # runtime + help + SPAKE2 password-authenticated key exchange (in pure python). + + This library implements the SPAKE2 password-authenticated + key exchange ("PAKE") algorithm. This allows two parties, + who share a weak password, to safely derive a strong shared + secret (and therefore build an encrypted+authenticated + channel). + + https://github.com/warner/python-spake2 diff --git a/package/python-spake2/python-spake2.hash b/package/python-spake2/python-spake2.hash new file mode 100644 index 00000000..30052b1b --- /dev/null +++ b/package/python-spake2/python-spake2.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/spake2/json +md5 0155bad518bb49c39994fe0b7d9fb32c spake2-0.8.tar.gz +sha256 c17a614b29ee4126206e22181f70a406c618d3c6c62ca6d6779bce95e9c926f4 spake2-0.8.tar.gz +# Locally computed sha256 checksums +sha256 2a8a1200c3a2769d1815727f3b4439bd800f3bc88163118a36ff30b007d30031 LICENSE diff --git a/package/python-spake2/python-spake2.mk b/package/python-spake2/python-spake2.mk new file mode 100644 index 00000000..99ce7dae --- /dev/null +++ b/package/python-spake2/python-spake2.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-spake2 +# +################################################################################ + +PYTHON_SPAKE2_VERSION = 0.8 +PYTHON_SPAKE2_SOURCE = spake2-$(PYTHON_SPAKE2_VERSION).tar.gz +PYTHON_SPAKE2_SITE = https://files.pythonhosted.org/packages/60/0b/bb5eca8e18c38a10b1c207bbe6103df091e5cf7b3e5fdc0efbcad7b85b60 +PYTHON_SPAKE2_SETUP_TYPE = setuptools +PYTHON_SPAKE2_LICENSE = MIT +PYTHON_SPAKE2_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-spidev/Config.in b/package/python-spidev/Config.in new file mode 100644 index 00000000..8540d554 --- /dev/null +++ b/package/python-spidev/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_SPIDEV + bool "python-spidev" + help + Python module for interfacing with SPI devices from user + space via the spidev linux kernel driver. + + https://pypi.python.org/pypi/spidev diff --git a/package/python-spidev/python-spidev.hash b/package/python-spidev/python-spidev.hash new file mode 100644 index 00000000..cd8a24eb --- /dev/null +++ b/package/python-spidev/python-spidev.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/spidev/json +md5 83a73279d6e823a9030c4315577bfae3 spidev-3.6.tar.gz +sha256 14dbc37594a4aaef85403ab617985d3c3ef464d62bc9b769ef552db53701115b spidev-3.6.tar.gz +# Locally computed sha256 checksums +sha256 510129bc8174c0fa81fa6d653691d1bd5d3555f7f38979ec45b5fc5bbff5377b LICENSE diff --git a/package/python-spidev/python-spidev.mk b/package/python-spidev/python-spidev.mk new file mode 100644 index 00000000..f48b5b08 --- /dev/null +++ b/package/python-spidev/python-spidev.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-spidev +# +################################################################################ + +PYTHON_SPIDEV_VERSION = 3.6 +PYTHON_SPIDEV_SOURCE = spidev-$(PYTHON_SPIDEV_VERSION).tar.gz +PYTHON_SPIDEV_SITE = https://files.pythonhosted.org/packages/c7/d9/401c0a7be089e02826cf2c201f489876b601f15be100fe391ef9c2faed83 +PYTHON_SPIDEV_SETUP_TYPE = setuptools +PYTHON_SPIDEV_LICENSE = MIT +PYTHON_SPIDEV_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-sqlalchemy/Config.in b/package/python-sqlalchemy/Config.in new file mode 100644 index 00000000..974393bb --- /dev/null +++ b/package/python-sqlalchemy/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_PYTHON_SQLALCHEMY + bool "python-sqlalchemy" + select BR2_PACKAGE_PYTHON_TYPING_EXTENSIONS # runtime + help + SQLAlchemy is the Python SQL toolkit and Object Relational + Mapper that gives application developers the full power and + flexibility of SQL. + + It provides a full suite of well known enterprise-level + persistence patterns, designed for efficient and + high-performing database access, adapted into a simple and + Pythonic domain language. + + http://www.sqlalchemy.org diff --git a/package/python-sqlalchemy/python-sqlalchemy.hash b/package/python-sqlalchemy/python-sqlalchemy.hash new file mode 100644 index 00000000..a413fcc2 --- /dev/null +++ b/package/python-sqlalchemy/python-sqlalchemy.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/sqlalchemy/json +md5 dfa687701ddf1416cba19024e6f9ec3d SQLAlchemy-2.0.31.tar.gz +sha256 b607489dd4a54de56984a0c7656247504bd5523d9d0ba799aef59d4add009484 SQLAlchemy-2.0.31.tar.gz +# Locally computed sha256 checksums +sha256 3c0f59ab887d041de6a4e52ffe3e9edb5d9522de909fae9a6cd7adb6e7be3293 LICENSE diff --git a/package/python-sqlalchemy/python-sqlalchemy.mk b/package/python-sqlalchemy/python-sqlalchemy.mk new file mode 100644 index 00000000..567ffbbb --- /dev/null +++ b/package/python-sqlalchemy/python-sqlalchemy.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-sqlalchemy +# +################################################################################ + +PYTHON_SQLALCHEMY_VERSION = 2.0.31 +PYTHON_SQLALCHEMY_SOURCE = SQLAlchemy-$(PYTHON_SQLALCHEMY_VERSION).tar.gz +PYTHON_SQLALCHEMY_SITE = https://files.pythonhosted.org/packages/ba/7d/e3312ae374fe7a4af7e1494735125a714a0907317c829ab8d8a31d89ded4 +PYTHON_SQLALCHEMY_SETUP_TYPE = setuptools +PYTHON_SQLALCHEMY_LICENSE = MIT +PYTHON_SQLALCHEMY_LICENSE_FILES = LICENSE +PYTHON_SQLALCHEMY_CPE_ID_VENDOR = sqlalchemy +PYTHON_SQLALCHEMY_CPE_ID_PRODUCT = sqlalchemy +PYTHON_SQLALCHEMY_DEPENDENCIES = host-python-cython + +$(eval $(python-package)) diff --git a/package/python-sqliteschema/Config.in b/package/python-sqliteschema/Config.in new file mode 100644 index 00000000..30971021 --- /dev/null +++ b/package/python-sqliteschema/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_SQLITESCHEMA + bool "python-sqliteschema" + select BR2_PACKAGE_PYTHON_MBSTRDECODER # runtime + select BR2_PACKAGE_PYTHON_TABLEDATA # runtime + select BR2_PACKAGE_PYTHON_TYPEPY # runtime + help + A Python library to dump table schema of a SQLite database + file. + + https://github.com/thombashi/sqliteschema diff --git a/package/python-sqliteschema/python-sqliteschema.hash b/package/python-sqliteschema/python-sqliteschema.hash new file mode 100644 index 00000000..7fe8ee92 --- /dev/null +++ b/package/python-sqliteschema/python-sqliteschema.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/sqliteschema/json +md5 b7fd543b82ad709f70cdc06c4ec8639a sqliteschema-2.0.0.tar.gz +sha256 fe6cedddf10de8934ec1ace8319340a2256667e4a1a36f3da4fd1c0956124dc8 sqliteschema-2.0.0.tar.gz +# Locally computed sha256 checksums +sha256 7588265082eed5e9f4afd5090c57e610b740ec547b16aaaab739ba07c5eefb15 LICENSE diff --git a/package/python-sqliteschema/python-sqliteschema.mk b/package/python-sqliteschema/python-sqliteschema.mk new file mode 100644 index 00000000..4b224048 --- /dev/null +++ b/package/python-sqliteschema/python-sqliteschema.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-sqliteschema +# +################################################################################ + +PYTHON_SQLITESCHEMA_VERSION = 2.0.0 +PYTHON_SQLITESCHEMA_SOURCE = sqliteschema-$(PYTHON_SQLITESCHEMA_VERSION).tar.gz +PYTHON_SQLITESCHEMA_SITE = https://files.pythonhosted.org/packages/29/e7/4482eebf6d8ff7923bb3fd0e9239d3e634f67125cfda3001c88506b939b9 +PYTHON_SQLITESCHEMA_SETUP_TYPE = setuptools +PYTHON_SQLITESCHEMA_LICENSE = MIT +PYTHON_SQLITESCHEMA_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-sqlparse/Config.in b/package/python-sqlparse/Config.in new file mode 100644 index 00000000..498b33ae --- /dev/null +++ b/package/python-sqlparse/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_SQLPARSE + bool "python-sqlparse" + help + sqlparse is a non-validating SQL parser for Python. + It provides support for parsing, splitting and formatting + SQL statements. + + https://github.com/andialbrecht/sqlparse diff --git a/package/python-sqlparse/python-sqlparse.hash b/package/python-sqlparse/python-sqlparse.hash new file mode 100644 index 00000000..1fe84297 --- /dev/null +++ b/package/python-sqlparse/python-sqlparse.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/sqlparse/json +md5 969a64f03d7da1144fc74aad390f9db4 sqlparse-0.5.1.tar.gz +sha256 bb6b4df465655ef332548e24f08e205afc81b9ab86cb1c45657a7ff173a3a00e sqlparse-0.5.1.tar.gz +# Locally computed sha256 checksums +sha256 c1938235b80d39e93138eae89edc3af67e18ecbc40d266529fa57b2dce426310 LICENSE diff --git a/package/python-sqlparse/python-sqlparse.mk b/package/python-sqlparse/python-sqlparse.mk new file mode 100644 index 00000000..57cef1d6 --- /dev/null +++ b/package/python-sqlparse/python-sqlparse.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-sqlparse +# +################################################################################ + +PYTHON_SQLPARSE_VERSION = 0.5.1 +PYTHON_SQLPARSE_SOURCE = sqlparse-$(PYTHON_SQLPARSE_VERSION).tar.gz +PYTHON_SQLPARSE_SITE = https://files.pythonhosted.org/packages/73/82/dfa23ec2cbed08a801deab02fe7c904bfb00765256b155941d789a338c68 +PYTHON_SQLPARSE_SETUP_TYPE = pep517 +PYTHON_SQLPARSE_LICENSE = BSD-3-Clause +PYTHON_SQLPARSE_LICENSE_FILES = LICENSE +PYTHON_SQLPARSE_DEPENDENCIES = host-python-hatchling +PYTHON_SQLPARSE_CPE_ID_VENDOR = sqlparse_project +PYTHON_SQLPARSE_CPE_ID_PRODUCT = sqlparse + +$(eval $(python-package)) diff --git a/package/python-stack-data/Config.in b/package/python-stack-data/Config.in new file mode 100644 index 00000000..508eb9cf --- /dev/null +++ b/package/python-stack-data/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_STACK_DATA + bool "python-stack-data" + select BR2_PACKAGE_PYTHON_ASTTOKENS # runtime + select BR2_PACKAGE_PYTHON_EXECUTING # runtime + select BR2_PACKAGE_PYTHON_PURE_EVAL # runtime + help + Extract data from python stack frames and tracebacks + for informative displays. + + http://github.com/alexmojaki/stack_data diff --git a/package/python-stack-data/python-stack-data.hash b/package/python-stack-data/python-stack-data.hash new file mode 100644 index 00000000..b155a77c --- /dev/null +++ b/package/python-stack-data/python-stack-data.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/stack_data/json +md5 d04f7cda6589138e90691aec1edbf0d5 stack_data-0.6.3.tar.gz +sha256 836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9 stack_data-0.6.3.tar.gz +# Locally computed sha256 checksums +sha256 a476a2cb0ef4c41450340a577a28b91ac4c7f669136b2ee148047fabd5fc4181 LICENSE.txt diff --git a/package/python-stack-data/python-stack-data.mk b/package/python-stack-data/python-stack-data.mk new file mode 100644 index 00000000..7c38d2c4 --- /dev/null +++ b/package/python-stack-data/python-stack-data.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-stack-data +# +################################################################################ + +PYTHON_STACK_DATA_VERSION = 0.6.3 +PYTHON_STACK_DATA_SOURCE = stack_data-$(PYTHON_STACK_DATA_VERSION).tar.gz +PYTHON_STACK_DATA_SITE = https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b +PYTHON_STACK_DATA_SETUP_TYPE = pep517 +PYTHON_STACK_DATA_LICENSE = MIT +PYTHON_STACK_DATA_LICENSE_FILES = LICENSE.txt +PYTHON_STACK_DATA_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-starlette/Config.in b/package/python-starlette/Config.in new file mode 100644 index 00000000..90f59068 --- /dev/null +++ b/package/python-starlette/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_STARLETTE + bool "python-starlette" + select BR2_PACKAGE_PYTHON_ANYIO # runtime + help + The little ASGI library that shines. + + https://github.com/encode/starlette diff --git a/package/python-starlette/python-starlette.hash b/package/python-starlette/python-starlette.hash new file mode 100644 index 00000000..f04aaea7 --- /dev/null +++ b/package/python-starlette/python-starlette.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/starlette/json +md5 b0ba8178dd4bf2cdff53c8702212be52 starlette-0.37.2.tar.gz +sha256 9af890290133b79fc3db55474ade20f6220a364a0402e0b556e7cd5e1e093823 starlette-0.37.2.tar.gz +# Locally computed sha256 checksums +sha256 dcb95677a02240243187e964f941847d19b17821cf99e5afae684fab328c19bf LICENSE.md diff --git a/package/python-starlette/python-starlette.mk b/package/python-starlette/python-starlette.mk new file mode 100644 index 00000000..af2c2d4a --- /dev/null +++ b/package/python-starlette/python-starlette.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-starlette +# +################################################################################ + +PYTHON_STARLETTE_VERSION = 0.37.2 +PYTHON_STARLETTE_SOURCE = starlette-$(PYTHON_STARLETTE_VERSION).tar.gz +PYTHON_STARLETTE_SITE = https://files.pythonhosted.org/packages/61/b5/6bceb93ff20bd7ca36e6f7c540581abb18f53130fabb30ba526e26fd819b +PYTHON_STARLETTE_SETUP_TYPE = pep517 +PYTHON_STARLETTE_LICENSE = BSD-3-Clause +PYTHON_STARLETTE_LICENSE_FILES = LICENSE.md +PYTHON_STARLETTE_DEPENDENCIES = host-python-hatchling +PYTHON_STARLETTE_CPE_ID_VENDOR = encode +PYTHON_STARLETTE_CPE_ID_PRODUCT = starlette + +$(eval $(python-package)) diff --git a/package/python-sympy/Config.in b/package/python-sympy/Config.in new file mode 100644 index 00000000..1ee26222 --- /dev/null +++ b/package/python-sympy/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_SYMPY + bool "python-sympy" + select BR2_PACKAGE_PYTHON_MPMATH # runtime + help + SymPy is a Python library for symbolic mathematics. It aims + to become a full-featured computer algebra system (CAS) + while keeping the code as simple as possible in order to be + comprehensible and easily extensible. SymPy is written + entirely in Python. + + https://www.sympy.org/ diff --git a/package/python-sympy/python-sympy.hash b/package/python-sympy/python-sympy.hash new file mode 100644 index 00000000..947edfd4 --- /dev/null +++ b/package/python-sympy/python-sympy.hash @@ -0,0 +1,7 @@ +# md5, sha256 from https://pypi.org/pypi/sympy/json +md5 3e0033109352d7303ea97b9216e16645 sympy-1.12.tar.gz +sha256 ebf595c8dac3e0fdc4152c51878b498396ec7f30e7a914d6071e674d49420fb8 sympy-1.12.tar.gz +# Locally computed sha256 checksums +sha256 07a5e9819f727b4986ad2829c7a29a6320d42575f720eb24d71b7fef573a0286 LICENSE +sha256 596639d3681fdb67bb2f05a9fcd2503d88bc549471a89b2e500cd9759ae2a3fa data/TeXmacs/LICENSE +sha256 007bc30a58fa40a996e772047120de4eaf31f5110e4f9c3b5f93fcdfbe2eaca1 sympy/parsing/latex/LICENSE.txt diff --git a/package/python-sympy/python-sympy.mk b/package/python-sympy/python-sympy.mk new file mode 100644 index 00000000..0f160649 --- /dev/null +++ b/package/python-sympy/python-sympy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-sympy +# +################################################################################ + +PYTHON_SYMPY_VERSION = 1.12 +PYTHON_SYMPY_SOURCE = sympy-$(PYTHON_SYMPY_VERSION).tar.gz +PYTHON_SYMPY_SITE = https://github.com/sympy/sympy/releases/download/sympy-$(PYTHON_SYMPY_VERSION) +PYTHON_SYMPY_SETUP_TYPE = setuptools +PYTHON_SYMPY_LICENSE = BSD-3-Clause +PYTHON_SYMPY_LICENSE_FILES = LICENSE data/TeXmacs/LICENSE sympy/parsing/latex/LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-systemd/Config.in b/package/python-systemd/Config.in new file mode 100644 index 00000000..599b43f7 --- /dev/null +++ b/package/python-systemd/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_SYSTEMD + bool "python-systemd" + depends on BR2_PACKAGE_SYSTEMD + help + Python module for native access to the systemd facilities. + + https://github.com/systemd/python-systemd + +comment "python-systemd needs systemd" + depends on !BR2_PACKAGE_SYSTEMD diff --git a/package/python-systemd/python-systemd.hash b/package/python-systemd/python-systemd.hash new file mode 100644 index 00000000..6cc66392 --- /dev/null +++ b/package/python-systemd/python-systemd.hash @@ -0,0 +1,5 @@ +# md5 from https://pypi.python.org/pypi/systemd-python/ +md5 93f3ca09f35719ca6a4edd1d62d38dd4 systemd-python-235.tar.gz +# Locally computed +sha256 4e57f39797fd5d9e2d22b8806a252d7c0106c936039d1e71c8c6b8008e695c0a systemd-python-235.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSE.txt diff --git a/package/python-systemd/python-systemd.mk b/package/python-systemd/python-systemd.mk new file mode 100644 index 00000000..fdc5d7e2 --- /dev/null +++ b/package/python-systemd/python-systemd.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-systemd +# +################################################################################ + +PYTHON_SYSTEMD_VERSION = 235 +PYTHON_SYSTEMD_SOURCE = systemd-python-$(PYTHON_SYSTEMD_VERSION).tar.gz +PYTHON_SYSTEMD_SITE = https://files.pythonhosted.org/packages/10/9e/ab4458e00367223bda2dd7ccf0849a72235ee3e29b36dce732685d9b7ad9 +PYTHON_SYSTEMD_SETUP_TYPE = setuptools +PYTHON_SYSTEMD_LICENSE = LGPL-2.1 +PYTHON_SYSTEMD_LICENSE_FILES = LICENSE.txt +PYTHON_SYSTEMD_DEPENDENCIES = systemd # To be able to link against libsystemd + +$(eval $(python-package)) diff --git a/package/python-tabledata/Config.in b/package/python-tabledata/Config.in new file mode 100644 index 00000000..3ee3057a --- /dev/null +++ b/package/python-tabledata/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_TABLEDATA + bool "python-tabledata" + select BR2_PACKAGE_PYTHON_DATAPROPERTY # runtime + select BR2_PACKAGE_PYTHON_TYPEPY # runtime + help + A Python library to represent tabular data for + pytablewriter/pytablereader/SimpleSQLite. + + https://github.com/thombashi/tabledata diff --git a/package/python-tabledata/python-tabledata.hash b/package/python-tabledata/python-tabledata.hash new file mode 100644 index 00000000..19fd4ea9 --- /dev/null +++ b/package/python-tabledata/python-tabledata.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/tabledata/json +md5 579c4e7454a837d252d4977b73556aae tabledata-1.3.3.tar.gz +sha256 c90daaba9a408e4397934b3ff2f6c06797d5289676420bf520c741ad43e6ff91 tabledata-1.3.3.tar.gz +# Locally computed sha256 checksums +sha256 bebbdf0524a147f89a615fff53d79bdc90cbc7631550fb4b725cd3f3bdcd24f6 LICENSE diff --git a/package/python-tabledata/python-tabledata.mk b/package/python-tabledata/python-tabledata.mk new file mode 100644 index 00000000..43e22d45 --- /dev/null +++ b/package/python-tabledata/python-tabledata.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-tabledata +# +################################################################################ + +PYTHON_TABLEDATA_VERSION = 1.3.3 +PYTHON_TABLEDATA_SOURCE = tabledata-$(PYTHON_TABLEDATA_VERSION).tar.gz +PYTHON_TABLEDATA_SITE = https://files.pythonhosted.org/packages/48/6a/7f78fbf883f325b70ba9ce5c10d97652f5c371e224940097c2cea9d0f456 +PYTHON_TABLEDATA_SETUP_TYPE = setuptools +PYTHON_TABLEDATA_LICENSE = MIT +PYTHON_TABLEDATA_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-tcolorpy/Config.in b/package/python-tcolorpy/Config.in new file mode 100644 index 00000000..e3e90584 --- /dev/null +++ b/package/python-tcolorpy/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_TCOLORPY + bool "python-tcolorpy" + help + Tcolopy is a Python library to apply true color for + terminal text. + + https://github.com/thombashi/tcolorpy diff --git a/package/python-tcolorpy/python-tcolorpy.hash b/package/python-tcolorpy/python-tcolorpy.hash new file mode 100644 index 00000000..cf5ca0e5 --- /dev/null +++ b/package/python-tcolorpy/python-tcolorpy.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/tcolorpy/json +md5 ca571cccff812ecdc0c73968c9d24ebf tcolorpy-0.1.4.tar.gz +sha256 f0dceb1cb95e554cee63024b3cd2fd8d4628c568773de2d1e6b4f0478461901c tcolorpy-0.1.4.tar.gz +# Locally computed sha256 checksums +sha256 f41a0456d5f2bba25fd4d7e50b51a95de304770ff1db5a79515d03397a914d8d LICENSE diff --git a/package/python-tcolorpy/python-tcolorpy.mk b/package/python-tcolorpy/python-tcolorpy.mk new file mode 100644 index 00000000..5c42320c --- /dev/null +++ b/package/python-tcolorpy/python-tcolorpy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-tcolorpy +# +################################################################################ + +PYTHON_TCOLORPY_VERSION = 0.1.4 +PYTHON_TCOLORPY_SOURCE = tcolorpy-$(PYTHON_TCOLORPY_VERSION).tar.gz +PYTHON_TCOLORPY_SITE = https://files.pythonhosted.org/packages/ba/e0/20b99847e76bb89784b68634399261d770b01054bca16cd19a06ac9c2e67 +PYTHON_TCOLORPY_SETUP_TYPE = setuptools +PYTHON_TCOLORPY_LICENSE = MIT +PYTHON_TCOLORPY_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-tempora/Config.in b/package/python-tempora/Config.in new file mode 100644 index 00000000..3f448142 --- /dev/null +++ b/package/python-tempora/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_TEMPORA + bool "python-tempora" + select BR2_PACKAGE_PYTHON_JARACO_FUNCTOOLS # runtime + select BR2_PACKAGE_PYTHON_PYTZ # runtime + help + Objects and routines pertaining to date and time. + + https://github.com/jaraco/tempora diff --git a/package/python-tempora/python-tempora.hash b/package/python-tempora/python-tempora.hash new file mode 100644 index 00000000..ff709339 --- /dev/null +++ b/package/python-tempora/python-tempora.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/tempora/json +md5 39314c5843bc3f40f8ce4f5cc340c479 tempora-5.5.0.tar.gz +sha256 13e4fcc997d0509c3306d6841f03e9381b7e5e46b2bebfae9151af90085f0c26 tempora-5.5.0.tar.gz +# Locally computed sha256 checksums +sha256 86da0f01aeae46348a3c3d465195dc1ceccde79f79e87769a64b8da04b2a4741 LICENSE diff --git a/package/python-tempora/python-tempora.mk b/package/python-tempora/python-tempora.mk new file mode 100644 index 00000000..d1b333ec --- /dev/null +++ b/package/python-tempora/python-tempora.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-tempora +# +################################################################################ + +PYTHON_TEMPORA_VERSION = 5.5.0 +PYTHON_TEMPORA_SOURCE = tempora-$(PYTHON_TEMPORA_VERSION).tar.gz +PYTHON_TEMPORA_SITE = https://files.pythonhosted.org/packages/c9/dc/97d90b9f64dbe4f599023e19602b33a2cced68462db67a3d4805a77cf784 +PYTHON_TEMPORA_LICENSE = MIT +PYTHON_TEMPORA_LICENSE_FILES = LICENSE +PYTHON_TEMPORA_SETUP_TYPE = setuptools +PYTHON_TEMPORA_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-termcolor/Config.in b/package/python-termcolor/Config.in new file mode 100644 index 00000000..e89da9b9 --- /dev/null +++ b/package/python-termcolor/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_TERMCOLOR + bool "python-termcolor" + help + ANSII Color formatting for output in terminal. + + http://pypi.python.org/pypi/termcolor diff --git a/package/python-termcolor/python-termcolor.hash b/package/python-termcolor/python-termcolor.hash new file mode 100644 index 00000000..ed69ab06 --- /dev/null +++ b/package/python-termcolor/python-termcolor.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/termcolor/json +md5 1d567737d43835549d2fd1bc87ec6c7d termcolor-2.4.0.tar.gz +sha256 aab9e56047c8ac41ed798fa36d892a37aca6b3e9159f3e0c24bc64a9b3ac7b7a termcolor-2.4.0.tar.gz +# Locally computed sha256 checksums +sha256 e79b6bd82962c1330caaa7c42278567b08667777673f8e2371a624d5715d4c0e COPYING.txt diff --git a/package/python-termcolor/python-termcolor.mk b/package/python-termcolor/python-termcolor.mk new file mode 100644 index 00000000..c242cfa4 --- /dev/null +++ b/package/python-termcolor/python-termcolor.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-termcolor +# +################################################################################ + +PYTHON_TERMCOLOR_VERSION = 2.4.0 +PYTHON_TERMCOLOR_SOURCE = termcolor-$(PYTHON_TERMCOLOR_VERSION).tar.gz +PYTHON_TERMCOLOR_SITE = https://files.pythonhosted.org/packages/10/56/d7d66a84f96d804155f6ff2873d065368b25a07222a6fd51c4f24ef6d764 +PYTHON_TERMCOLOR_SETUP_TYPE = pep517 +PYTHON_TERMCOLOR_LICENSE = MIT +PYTHON_TERMCOLOR_LICENSE_FILES = COPYING.txt +PYTHON_TERMCOLOR_DEPENDENCIES = host-python-hatchling host-python-hatch-vcs + +$(eval $(python-package)) diff --git a/package/python-terminaltables/0001-switch-build-backend-to-poetry-core.patch b/package/python-terminaltables/0001-switch-build-backend-to-poetry-core.patch new file mode 100644 index 00000000..2906dd74 --- /dev/null +++ b/package/python-terminaltables/0001-switch-build-backend-to-poetry-core.patch @@ -0,0 +1,28 @@ +From 9e3dda0efb54fee6934c744a13a7336d24c6e9e9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= +Date: Thu, 27 Jan 2022 10:33:08 +0100 +Subject: [PATCH] Switch build-backend to poetry-core + +poetry-core is the lightweight counterpart of poetry that is intended +to be used as a build-backend. Unlike poetry, it does not require +installing all the dependencies of the package manager, making +the builds much faster. The generated artifacts are the same. + +Upstream: https://github.com/matthewdeanmartin/terminaltables/commit/9e3dda0efb54fee6934c744a13a7336d24c6e9e9 +Signed-off-by: Arnout Vandecappelle +--- + pyproject.toml | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/pyproject.toml b/pyproject.toml +index a861add..ff4b190 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -62,5 +62,5 @@ python = ">=2.6 || >=3.0" + pytest = "==6.0.1" + + [build-system] +-requires = ["poetry>=0.12"] +-build-backend = "poetry.masonry.api" ++requires = ["poetry-core>=1.0.0"] ++build-backend = "poetry.core.masonry.api" diff --git a/package/python-terminaltables/Config.in b/package/python-terminaltables/Config.in new file mode 100644 index 00000000..8a387466 --- /dev/null +++ b/package/python-terminaltables/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_TERMINALTABLES + bool "python-terminaltables" + help + Generate simple tables in terminals from a nested list of + strings. + + https://github.com/matthewdeanmartin/terminaltables diff --git a/package/python-terminaltables/python-terminaltables.hash b/package/python-terminaltables/python-terminaltables.hash new file mode 100644 index 00000000..b6c95aa2 --- /dev/null +++ b/package/python-terminaltables/python-terminaltables.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/terminaltables/json +md5 5467e06a1a6e24dc44e6dd241706668e terminaltables-3.1.10.tar.gz +sha256 ba6eca5cb5ba02bba4c9f4f985af80c54ec3dccf94cfcd190154386255e47543 terminaltables-3.1.10.tar.gz +# Locally computed sha256 checksums +sha256 2e1320fd337db06a3136d0f4101bd62f13249c95c5b581304f35481e979d432a LICENSE diff --git a/package/python-terminaltables/python-terminaltables.mk b/package/python-terminaltables/python-terminaltables.mk new file mode 100644 index 00000000..062643ad --- /dev/null +++ b/package/python-terminaltables/python-terminaltables.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-terminaltables +# +################################################################################ + +PYTHON_TERMINALTABLES_VERSION = 3.1.10 +PYTHON_TERMINALTABLES_SOURCE = terminaltables-$(PYTHON_TERMINALTABLES_VERSION).tar.gz +PYTHON_TERMINALTABLES_SITE = https://files.pythonhosted.org/packages/f5/fc/0b73d782f5ab7feba8d007573a3773c58255f223c5940a7b7085f02153c3 +PYTHON_TERMINALTABLES_SETUP_TYPE = pep517 +PYTHON_TERMINALTABLES_LICENSE = MIT +PYTHON_TERMINALTABLES_LICENSE_FILES = LICENSE +PYTHON_TERMINALTABLES_DEPENDENCIES = host-python-poetry-core + +$(eval $(python-package)) diff --git a/package/python-texttable/Config.in b/package/python-texttable/Config.in new file mode 100644 index 00000000..1c8dde8d --- /dev/null +++ b/package/python-texttable/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_TEXTTABLE + bool "python-texttable" + help + module for creating simple ASCII tables. + + https://github.com/foutaise/texttable/ diff --git a/package/python-texttable/python-texttable.hash b/package/python-texttable/python-texttable.hash new file mode 100644 index 00000000..560749b2 --- /dev/null +++ b/package/python-texttable/python-texttable.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/texttable/json +md5 83eb15fb541dd857ff051a8d0c979b9c texttable-1.6.7.tar.gz +sha256 290348fb67f7746931bcdfd55ac7584ecd4e5b0846ab164333f0794b121760f2 texttable-1.6.7.tar.gz +# Locally computed sha256 checksums +sha256 4ba7bdab54504a3bc44eb33ecca873a26a63ab902822101a87bb46235da63594 LICENSE diff --git a/package/python-texttable/python-texttable.mk b/package/python-texttable/python-texttable.mk new file mode 100644 index 00000000..c63fb578 --- /dev/null +++ b/package/python-texttable/python-texttable.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-texttable +# +################################################################################ + +PYTHON_TEXTTABLE_VERSION = 1.6.7 +PYTHON_TEXTTABLE_SOURCE = texttable-$(PYTHON_TEXTTABLE_VERSION).tar.gz +PYTHON_TEXTTABLE_SITE = https://files.pythonhosted.org/packages/e4/84/4686ee611bb020038375c5f11fe7b6b3bb94ee78614a1faba45effe51591 +PYTHON_TEXTTABLE_SETUP_TYPE = setuptools +PYTHON_TEXTTABLE_LICENSE = MIT +PYTHON_TEXTTABLE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-tftpy/Config.in b/package/python-tftpy/Config.in new file mode 100644 index 00000000..ef21ac58 --- /dev/null +++ b/package/python-tftpy/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_TFTPY + bool "python-tftpy" + help + tftpy is a pure Python implementation of the + Trivial FTP protocol. + + https://github.com/msoulier/tftpy diff --git a/package/python-tftpy/python-tftpy.hash b/package/python-tftpy/python-tftpy.hash new file mode 100644 index 00000000..1fae4fde --- /dev/null +++ b/package/python-tftpy/python-tftpy.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 2bfbf6377f6e3b6ba647f0ac614e9cbc225d1cc35b52991860ba6ea1ec58ef9d python-tftpy-0.8.2.tar.gz +sha256 4616f0c71e62ce2e0f6cdd3aef6d3c285f8730c9304b88a9f3ce3f14c2e6f756 LICENSE diff --git a/package/python-tftpy/python-tftpy.mk b/package/python-tftpy/python-tftpy.mk new file mode 100644 index 00000000..fd3c6014 --- /dev/null +++ b/package/python-tftpy/python-tftpy.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-tftpy +# +################################################################################ + +PYTHON_TFTPY_VERSION = 0.8.2 +PYTHON_TFTPY_SITE = $(call github,msoulier,tftpy,$(PYTHON_TFTPY_VERSION)) +PYTHON_TFTPY_LICENSE = MIT +PYTHON_TFTPY_LICENSE_FILES = LICENSE +PYTHON_TFTPY_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-thrift/Config.in b/package/python-thrift/Config.in new file mode 100644 index 00000000..71fef5be --- /dev/null +++ b/package/python-thrift/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_THRIFT + bool "python-thrift" + select BR2_PACKAGE_PYTHON_SIX # runtime + help + Python bindings for the Apache Thrift RPC system. + + https://thrift.apache.org diff --git a/package/python-thrift/python-thrift.hash b/package/python-thrift/python-thrift.hash new file mode 100644 index 00000000..0907a6e8 --- /dev/null +++ b/package/python-thrift/python-thrift.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/thrift/json +md5 486887192acd558636a1528dfddf918c thrift-0.16.0.tar.gz +sha256 2b5b6488fcded21f9d312aa23c9ff6a0195d0f6ae26ddbd5ad9e3e25dfc14408 thrift-0.16.0.tar.gz +# Locally computed sha256 checksums +sha256 35e2508f171c3ac2529f402c123c12f3b2ac91643f2e52b334f71f8c861be321 README.md diff --git a/package/python-thrift/python-thrift.mk b/package/python-thrift/python-thrift.mk new file mode 100644 index 00000000..23a2ad04 --- /dev/null +++ b/package/python-thrift/python-thrift.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-thrift +# +################################################################################ + +PYTHON_THRIFT_VERSION = 0.16.0 +PYTHON_THRIFT_SOURCE = thrift-$(PYTHON_THRIFT_VERSION).tar.gz +PYTHON_THRIFT_SITE = https://files.pythonhosted.org/packages/e4/23/dd951c9883cb49a73b750bdfe91e39d78e8a3f1f7175608634f381a197d5 +PYTHON_THRIFT_SETUP_TYPE = setuptools +PYTHON_THRIFT_LICENSE = Apache-2.0 +PYTHON_THRIFT_LICENSE_FILES = README.md + +$(eval $(python-package)) diff --git a/package/python-tinycss2/Config.in b/package/python-tinycss2/Config.in new file mode 100644 index 00000000..4d6dcca6 --- /dev/null +++ b/package/python-tinycss2/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_TINYCSS2 + bool "python-tinycss2" + select BR2_PACKAGE_PYTHON_WEBENCODINGS # runtime + help + A tiny CSS parser. + + https://www.courtbouillon.org/tinycss2 diff --git a/package/python-tinycss2/python-tinycss2.hash b/package/python-tinycss2/python-tinycss2.hash new file mode 100644 index 00000000..f9b638df --- /dev/null +++ b/package/python-tinycss2/python-tinycss2.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/tinycss2/json +md5 e8a06102e7f42ca791463f11ce7b814d tinycss2-1.2.1.tar.gz +sha256 8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627 tinycss2-1.2.1.tar.gz +# Locally computed sha256 checksums +sha256 6b94acee20ec9f2709333134f3ba70322535fb420af0ce8c1455d9cbe297f1d5 LICENSE diff --git a/package/python-tinycss2/python-tinycss2.mk b/package/python-tinycss2/python-tinycss2.mk new file mode 100644 index 00000000..de266395 --- /dev/null +++ b/package/python-tinycss2/python-tinycss2.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-tinycss2 +# +################################################################################ + +PYTHON_TINYCSS2_VERSION = 1.2.1 +PYTHON_TINYCSS2_SOURCE = tinycss2-$(PYTHON_TINYCSS2_VERSION).tar.gz +PYTHON_TINYCSS2_SITE = https://files.pythonhosted.org/packages/75/be/24179dfaa1d742c9365cbd0e3f0edc5d3aa3abad415a2327c5a6ff8ca077 +PYTHON_TINYCSS2_SETUP_TYPE = flit +PYTHON_TINYCSS2_LICENSE = BSD-3-Clause +PYTHON_TINYCSS2_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-tinyrpc/Config.in b/package/python-tinyrpc/Config.in new file mode 100644 index 00000000..3c643c75 --- /dev/null +++ b/package/python-tinyrpc/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_TINYRPC + bool "python-tinyrpc" + select BR2_PACKAGE_PYTHON_SIX # runtime + help + A small, modular, transport and protocol neutral RPC + library that, among other things, supports JSON-RPC and + zmq. + + http://github.com/mbr/tinyrpc diff --git a/package/python-tinyrpc/python-tinyrpc.hash b/package/python-tinyrpc/python-tinyrpc.hash new file mode 100644 index 00000000..d4bd348e --- /dev/null +++ b/package/python-tinyrpc/python-tinyrpc.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/tinyrpc/json +md5 cc7e62891eee806dfbbafb6e3875825e tinyrpc-1.1.4.tar.gz +sha256 c99f412e5d9849c2deb468ea37fee2faf12fbc95bdd3616ae5c276ea195ed6bd tinyrpc-1.1.4.tar.gz +# Locally computed sha256 checksums +sha256 587f1ea174824613f4a7e0d7fb95fda000a7f58ca17df12416e014c9ee82e619 LICENSE diff --git a/package/python-tinyrpc/python-tinyrpc.mk b/package/python-tinyrpc/python-tinyrpc.mk new file mode 100644 index 00000000..e976778f --- /dev/null +++ b/package/python-tinyrpc/python-tinyrpc.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-tinyrpc +# +################################################################################ + +PYTHON_TINYRPC_VERSION = 1.1.4 +PYTHON_TINYRPC_SOURCE = tinyrpc-$(PYTHON_TINYRPC_VERSION).tar.gz +PYTHON_TINYRPC_SITE = https://files.pythonhosted.org/packages/d2/86/2741f0c74cc339416c9803b6393eaf230254ecf36ffd839614799e15a202 +PYTHON_TINYRPC_SETUP_TYPE = setuptools +PYTHON_TINYRPC_LICENSE = MIT +PYTHON_TINYRPC_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-tomako/Config.in b/package/python-tomako/Config.in new file mode 100644 index 00000000..bd6d2998 --- /dev/null +++ b/package/python-tomako/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_TOMAKO + bool "python-tomako" + select BR2_PACKAGE_PYTHON_TORNADO # runtime + select BR2_PACKAGE_PYTHON_MAKO # runtime + help + Tomako is the easiest way to use Mako as a template engine for + Tornado. + + https://github.com/rcmachado/tomako diff --git a/package/python-tomako/python-tomako.hash b/package/python-tomako/python-tomako.hash new file mode 100644 index 00000000..e2d56536 --- /dev/null +++ b/package/python-tomako/python-tomako.hash @@ -0,0 +1,5 @@ +# md5 from https://pypi.python.org/pypi/tomako/json +md5 a2e9e99be4ddf2263ed441ddc3dfcf96 tomako-0.1.0.post1.tar.gz +# Locally computed +sha256 2d8ec113199408eb16ec00361aac6f10b716925779b6331083f304d01dafd150 tomako-0.1.0.post1.tar.gz +sha256 2b55167354e331f089d5f7a9a9ef4149b0baa95abd6860b6390a04001e1f2bb8 LICENSE diff --git a/package/python-tomako/python-tomako.mk b/package/python-tomako/python-tomako.mk new file mode 100644 index 00000000..23c0b34f --- /dev/null +++ b/package/python-tomako/python-tomako.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-tomako +# +################################################################################ + +PYTHON_TOMAKO_VERSION = 0.1.0.post1 +PYTHON_TOMAKO_SOURCE = tomako-$(PYTHON_TOMAKO_VERSION).tar.gz +PYTHON_TOMAKO_SITE = https://pypi.python.org/packages/30/64/e174248281cb2fa8f5bce955d4bd49b253e622bb540a6001e48dec378a07 +PYTHON_TOMAKO_SETUP_TYPE = setuptools +PYTHON_TOMAKO_LICENSE = MIT +PYTHON_TOMAKO_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-toml/Config.in b/package/python-toml/Config.in new file mode 100644 index 00000000..a41622fc --- /dev/null +++ b/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/package/python-toml/python-toml.hash b/package/python-toml/python-toml.hash new file mode 100644 index 00000000..dd7215e8 --- /dev/null +++ b/package/python-toml/python-toml.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/toml/json +md5 59bce5d8d67e858735ec3f399ec90253 toml-0.10.2.tar.gz +sha256 b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f toml-0.10.2.tar.gz +# Locally computed sha256 checksums +sha256 2d9294823df6c89357c8be4927fce79361d6561e5ee7532d5926e63939aaa536 LICENSE diff --git a/package/python-toml/python-toml.mk b/package/python-toml/python-toml.mk new file mode 100644 index 00000000..0e956521 --- /dev/null +++ b/package/python-toml/python-toml.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-toml +# +################################################################################ + +PYTHON_TOML_VERSION = 0.10.2 +PYTHON_TOML_SOURCE = toml-$(PYTHON_TOML_VERSION).tar.gz +PYTHON_TOML_SITE = https://files.pythonhosted.org/packages/be/ba/1f744cdc819428fc6b5084ec34d9b30660f6f9daaf70eead706e3203ec3c +PYTHON_TOML_SETUP_TYPE = setuptools +PYTHON_TOML_LICENSE = MIT +PYTHON_TOML_LICENSE_FILES = LICENSE + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-tomli-w/Config.in b/package/python-tomli-w/Config.in new file mode 100644 index 00000000..83fe937e --- /dev/null +++ b/package/python-tomli-w/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_TOMLI_W + bool "python-tomli-w" + help + A lil' TOML writer. + + https://github.com/hukkin/tomli-w diff --git a/package/python-tomli-w/python-tomli-w.hash b/package/python-tomli-w/python-tomli-w.hash new file mode 100644 index 00000000..778c2258 --- /dev/null +++ b/package/python-tomli-w/python-tomli-w.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/tomli-w/json +md5 2c050134d4842b449ec4129c97d51e62 tomli_w-1.0.0.tar.gz +sha256 f463434305e0336248cac9c2dc8076b707d8a12d019dd349f5c1e382dd1ae1b9 tomli_w-1.0.0.tar.gz +# Locally computed sha256 checksums +sha256 b80816b0d530b8accb4c2211783790984a6e3b61922c2b5ee92f3372ab2742fe LICENSE diff --git a/package/python-tomli-w/python-tomli-w.mk b/package/python-tomli-w/python-tomli-w.mk new file mode 100644 index 00000000..d5d7ab9f --- /dev/null +++ b/package/python-tomli-w/python-tomli-w.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-tomli-w +# +################################################################################ + +PYTHON_TOMLI_W_VERSION = 1.0.0 +PYTHON_TOMLI_W_SOURCE = tomli_w-$(PYTHON_TOMLI_W_VERSION).tar.gz +PYTHON_TOMLI_W_SITE = https://files.pythonhosted.org/packages/49/05/6bf21838623186b91aedbda06248ad18f03487dc56fbc20e4db384abde6c +PYTHON_TOMLI_W_SETUP_TYPE = flit +PYTHON_TOMLI_W_LICENSE = MIT +PYTHON_TOMLI_W_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-tomli/Config.in b/package/python-tomli/Config.in new file mode 100644 index 00000000..d2ae49a4 --- /dev/null +++ b/package/python-tomli/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_TOMLI + bool "python-tomli" + help + A lil' TOML parser. + + https://github.com/hukkin/tomli diff --git a/package/python-tomli/python-tomli.hash b/package/python-tomli/python-tomli.hash new file mode 100644 index 00000000..8368f9ee --- /dev/null +++ b/package/python-tomli/python-tomli.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/tomli/json +md5 d4341621d423a7ca6822e23d6d52bb9a tomli-2.0.1.tar.gz +sha256 de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f tomli-2.0.1.tar.gz +# Locally computed sha256 checksums +sha256 b80816b0d530b8accb4c2211783790984a6e3b61922c2b5ee92f3372ab2742fe LICENSE diff --git a/package/python-tomli/python-tomli.mk b/package/python-tomli/python-tomli.mk new file mode 100644 index 00000000..5d259f71 --- /dev/null +++ b/package/python-tomli/python-tomli.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-tomli +# +################################################################################ + +PYTHON_TOMLI_VERSION = 2.0.1 +PYTHON_TOMLI_SOURCE = tomli-$(PYTHON_TOMLI_VERSION).tar.gz +PYTHON_TOMLI_SITE = https://files.pythonhosted.org/packages/c0/3f/d7af728f075fb08564c5949a9c95e44352e23dee646869fa104a3b2060a3 +PYTHON_TOMLI_LICENSE = MIT +PYTHON_TOMLI_LICENSE_FILES = LICENSE +PYTHON_TOMLI_SETUP_TYPE = flit + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-tomlkit/Config.in b/package/python-tomlkit/Config.in new file mode 100644 index 00000000..6d9afdd8 --- /dev/null +++ b/package/python-tomlkit/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_TOMLKIT + bool "python-tomlkit" + help + Style preserving TOML library. + + https://github.com/sdispater/tomlkit diff --git a/package/python-tomlkit/python-tomlkit.hash b/package/python-tomlkit/python-tomlkit.hash new file mode 100644 index 00000000..8c6d3c23 --- /dev/null +++ b/package/python-tomlkit/python-tomlkit.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/tomlkit/json +md5 e182df9625d617692a9ae035266634fe tomlkit-0.12.4.tar.gz +sha256 7ca1cfc12232806517a8515047ba66a19369e71edf2439d0f5824f91032b6cc3 tomlkit-0.12.4.tar.gz +# Locally computed sha256 checksums +sha256 f2f9b460ba719da6626add264d3782f275a4ff7aab677beda08b330911e23adb LICENSE diff --git a/package/python-tomlkit/python-tomlkit.mk b/package/python-tomlkit/python-tomlkit.mk new file mode 100644 index 00000000..ad82719e --- /dev/null +++ b/package/python-tomlkit/python-tomlkit.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-tomlkit +# +################################################################################ + +PYTHON_TOMLKIT_VERSION = 0.12.4 +PYTHON_TOMLKIT_SOURCE = tomlkit-$(PYTHON_TOMLKIT_VERSION).tar.gz +PYTHON_TOMLKIT_SITE = https://files.pythonhosted.org/packages/7d/49/4c0764898ee67618996148bdba4534a422c5e698b4dbf4001f7c6f930797 +PYTHON_TOMLKIT_SETUP_TYPE = pep517 +PYTHON_TOMLKIT_LICENSE = MIT +PYTHON_TOMLKIT_LICENSE_FILES = LICENSE +PYTHON_TOMLKIT_DEPENDENCIES = host-python-poetry-core + +$(eval $(python-package)) diff --git a/package/python-tornado/0001-web-Fix-an-open-redirect-in-StaticFileHandler.patch b/package/python-tornado/0001-web-Fix-an-open-redirect-in-StaticFileHandler.patch new file mode 100644 index 00000000..357c6f2f --- /dev/null +++ b/package/python-tornado/0001-web-Fix-an-open-redirect-in-StaticFileHandler.patch @@ -0,0 +1,42 @@ +From ac79778c91bd9a4a92111f7e06d4b12674571113 Mon Sep 17 00:00:00 2001 +From: Ben Darnell +Date: Sat, 13 May 2023 20:58:52 -0400 +Subject: [PATCH] web: Fix an open redirect in StaticFileHandler + +Under some configurations the default_filename redirect could be exploited +to redirect to an attacker-controlled site. This change refuses to redirect +to URLs that could be misinterpreted. + +A test case for the specific vulnerable configuration will follow after the +patch has been available. + +Upstream: https://github.com/tornadoweb/tornado/commit/32ad07c54e607839273b4e1819c347f5c8976b2f +[Thomas: backported to fix CVE-2023-28370] +Signed-off-by: Thomas Petazzoni +--- + tornado/web.py | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/tornado/web.py b/tornado/web.py +index cd6a81b4..05b571eb 100644 +--- a/tornado/web.py ++++ b/tornado/web.py +@@ -2806,6 +2806,15 @@ class StaticFileHandler(RequestHandler): + # but there is some prefix to the path that was already + # trimmed by the routing + if not self.request.path.endswith("/"): ++ if self.request.path.startswith("//"): ++ # A redirect with two initial slashes is a "protocol-relative" URL. ++ # This means the next path segment is treated as a hostname instead ++ # of a part of the path, making this effectively an open redirect. ++ # Reject paths starting with two slashes to prevent this. ++ # This is only reachable under certain configurations. ++ raise HTTPError( ++ 403, "cannot redirect path with two initial slashes" ++ ) + self.redirect(self.request.path + "/", permanent=True) + return None + absolute_path = os.path.join(absolute_path, self.default_filename) +-- +2.41.0 + diff --git a/package/python-tornado/Config.in b/package/python-tornado/Config.in new file mode 100644 index 00000000..b5c59e97 --- /dev/null +++ b/package/python-tornado/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_TORNADO + bool "python-tornado" + select BR2_PACKAGE_PYTHON3_ZLIB + select BR2_PACKAGE_PYTHON3_SSL + help + Tornado is a Python web framework and asynchronous networking + library, originally developed at FriendFeed. + + http://www.tornadoweb.org diff --git a/package/python-tornado/python-tornado.hash b/package/python-tornado/python-tornado.hash new file mode 100644 index 00000000..f30a6bb1 --- /dev/null +++ b/package/python-tornado/python-tornado.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/tornado/json +md5 32fbad606b439c3e1bf4e79d4e872741 tornado-6.2.tar.gz +sha256 9b630419bde84ec666bfd7ea0a4cb2a8a651c2d5cccdbdd1972a0c859dfc3c13 tornado-6.2.tar.gz +# Locally computed sha256 checksums +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/python-tornado/python-tornado.mk b/package/python-tornado/python-tornado.mk new file mode 100644 index 00000000..f4a4c97d --- /dev/null +++ b/package/python-tornado/python-tornado.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# python-tornado +# +################################################################################ + +PYTHON_TORNADO_VERSION = 6.2 +PYTHON_TORNADO_SOURCE = tornado-$(PYTHON_TORNADO_VERSION).tar.gz +PYTHON_TORNADO_SITE = https://files.pythonhosted.org/packages/f3/9e/225a41452f2d9418d89be5e32cf824c84fe1e639d350d6e8d49db5b7f73a +PYTHON_TORNADO_LICENSE = Apache-2.0 +PYTHON_TORNADO_LICENSE_FILES = LICENSE +PYTHON_TORNADO_CPE_ID_VENDOR = tornadoweb +PYTHON_TORNADO_CPE_ID_PRODUCT = tornado +PYTHON_TORNADO_SETUP_TYPE = setuptools +# 0001-web-Fix-an-open-redirect-in-StaticFileHandler.patch +PYTHON_TORNADO_IGNORE_CVES += CVE-2023-28370 + +$(eval $(python-package)) diff --git a/package/python-tortoise-orm/Config.in b/package/python-tortoise-orm/Config.in new file mode 100644 index 00000000..62b1a5a8 --- /dev/null +++ b/package/python-tortoise-orm/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_TORTOISE_ORM + bool "python-tortoise-orm" + select BR2_PACKAGE_PYTHON_AIOSQLITE # runtime + select BR2_PACKAGE_PYTHON_ISO8601 # runtime + select BR2_PACKAGE_PYTHON_PYPIKA_TORTOISE # runtime + select BR2_PACKAGE_PYTHON_PYTZ # runtime + help + Easy async ORM for python, built with relations in mind. + + https://github.com/tortoise/tortoise-orm diff --git a/package/python-tortoise-orm/python-tortoise-orm.hash b/package/python-tortoise-orm/python-tortoise-orm.hash new file mode 100644 index 00000000..4796c827 --- /dev/null +++ b/package/python-tortoise-orm/python-tortoise-orm.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/tortoise-orm/json +md5 aa5efa50e69d0a67b75c187f7550acd7 tortoise_orm-0.20.0.tar.gz +sha256 283af584d685dcc58d6cc1da35b9115bb1e41c89075eae2a19c493b39b9b41f7 tortoise_orm-0.20.0.tar.gz +# Locally computed sha256 checksums +sha256 f955d347b975d5867ee364f978476b3012878a706d468571b9758cac74de6041 LICENSE.txt diff --git a/package/python-tortoise-orm/python-tortoise-orm.mk b/package/python-tortoise-orm/python-tortoise-orm.mk new file mode 100644 index 00000000..cc1c2126 --- /dev/null +++ b/package/python-tortoise-orm/python-tortoise-orm.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-tortoise-orm +# +################################################################################ + +PYTHON_TORTOISE_ORM_VERSION = 0.20.0 +PYTHON_TORTOISE_ORM_SOURCE = tortoise_orm-$(PYTHON_TORTOISE_ORM_VERSION).tar.gz +PYTHON_TORTOISE_ORM_SITE = https://files.pythonhosted.org/packages/3b/84/8ca142fe370d59c4e3135825b2822d199c4f885ae855657c1a7361e68511 +PYTHON_TORTOISE_ORM_SETUP_TYPE = pep517 +PYTHON_TORTOISE_ORM_LICENSE = Apache-2.0 +PYTHON_TORTOISE_ORM_LICENSE_FILES = LICENSE.txt +PYTHON_TORTOISE_ORM_DEPENDENCIES = host-python-poetry-core + +$(eval $(python-package)) diff --git a/package/python-tpm2-pytss/Config.in b/package/python-tpm2-pytss/Config.in new file mode 100644 index 00000000..dec9a311 --- /dev/null +++ b/package/python-tpm2-pytss/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_PYTHON_TPM2_PYTSS + bool "python-tpm2-pytss" + depends on !BR2_STATIC_LIBS # tpm2-tss + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-cryptography + select BR2_PACKAGE_PYTHON_ASN1CRYPTO # runtime + select BR2_PACKAGE_PYTHON_CFFI # runtime + select BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime + select BR2_PACKAGE_TPM2_TSS + help + TPM 2.0 TSS Bindings for Python. + + https://github.com/tpm2-software/tpm2-pytss + +comment "python-tpm2-pytss needs a toolchain w/ dynamic library" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS diff --git a/package/python-tpm2-pytss/python-tpm2-pytss.hash b/package/python-tpm2-pytss/python-tpm2-pytss.hash new file mode 100644 index 00000000..10a9f112 --- /dev/null +++ b/package/python-tpm2-pytss/python-tpm2-pytss.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/tpm2-pytss/json +md5 069a02c99d3203fada940c3dd43b699c tpm2-pytss-2.2.1.tar.gz +sha256 b8f15473422f377f59c7217dcd1479165cce62dfa33934ec976a278baf2e9efe tpm2-pytss-2.2.1.tar.gz +# Locally computed sha256 checksums +sha256 18c1bf4b1ba1fb2c4ffa7398c234d83c0d55475298e470ae1e5e3a8a8bd2e448 LICENSE diff --git a/package/python-tpm2-pytss/python-tpm2-pytss.mk b/package/python-tpm2-pytss/python-tpm2-pytss.mk new file mode 100644 index 00000000..80491aac --- /dev/null +++ b/package/python-tpm2-pytss/python-tpm2-pytss.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# python-tpm2-pytss +# +################################################################################ + +PYTHON_TPM2_PYTSS_VERSION = 2.2.1 +PYTHON_TPM2_PYTSS_SOURCE = tpm2-pytss-$(PYTHON_TPM2_PYTSS_VERSION).tar.gz +PYTHON_TPM2_PYTSS_SITE = https://files.pythonhosted.org/packages/13/e5/8d4a9ac91579c741ec9fb63befcf6577107f22f3508c364fd53e277d7237 +PYTHON_TPM2_PYTSS_SETUP_TYPE = setuptools +PYTHON_TPM2_PYTSS_LICENSE = BSD-2-Clause +PYTHON_TPM2_PYTSS_LICENSE_FILES = LICENSE + +PYTHON_TPM2_PYTSS_DEPENDENCIES = host-pkgconf \ + host-python-asn1crypto \ + host-python-cffi \ + host-python-cryptography \ + host-python-pkgconfig \ + host-python-pycparser \ + tpm2-tss + +$(eval $(python-package)) diff --git a/package/python-tqdm/Config.in b/package/python-tqdm/Config.in new file mode 100644 index 00000000..89b571fe --- /dev/null +++ b/package/python-tqdm/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_TQDM + bool "python-tqdm" + help + A Fast, Extensible Progress Bar for Python and CLI. + + https://tqdm.github.io diff --git a/package/python-tqdm/python-tqdm.hash b/package/python-tqdm/python-tqdm.hash new file mode 100644 index 00000000..4be54de7 --- /dev/null +++ b/package/python-tqdm/python-tqdm.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/project/tqdm +md5 5822af464d77ea156ad1167c23e1bdac tqdm-4.64.1.tar.gz +sha256 5f4f682a004951c1b450bc753c710e9280c5746ce6ffedee253ddbcbf54cf1e4 tqdm-4.64.1.tar.gz +# Locally computed sha256 checksums +sha256 a0fc1785a8f2a200a3124d703d49550601b7741ccffc861713c2ddaa07a537dd LICENCE diff --git a/package/python-tqdm/python-tqdm.mk b/package/python-tqdm/python-tqdm.mk new file mode 100644 index 00000000..a6296bd0 --- /dev/null +++ b/package/python-tqdm/python-tqdm.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-tqdm +# +################################################################################ + +PYTHON_TQDM_VERSION = 4.64.1 +PYTHON_TQDM_SOURCE = tqdm-$(PYTHON_TQDM_VERSION).tar.gz +PYTHON_TQDM_SITE = https://files.pythonhosted.org/packages/c1/c2/d8a40e5363fb01806870e444fc1d066282743292ff32a9da54af51ce36a2 +PYTHON_TQDM_SETUP_TYPE = setuptools +PYTHON_TQDM_LICENSE = MPL-2.0, MIT +PYTHON_TQDM_LICENSE_FILES = LICENCE +PYTHON_TQDM_CPE_ID_VENDOR = tqdm_project +PYTHON_TQDM_CPE_ID_PRODUCT = tqdm +PYTHON_TQDM_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-trafaret/Config.in b/package/python-trafaret/Config.in new file mode 100644 index 00000000..73c7216b --- /dev/null +++ b/package/python-trafaret/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_TRAFARET + bool "python-trafaret" + help + Ultimate transformation library that supports validation, + contexts and aiohttp. + + https://github.com/Deepwalker/trafaret/ diff --git a/package/python-trafaret/python-trafaret.hash b/package/python-trafaret/python-trafaret.hash new file mode 100644 index 00000000..d0d54c9f --- /dev/null +++ b/package/python-trafaret/python-trafaret.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/trafaret/json +md5 85085fe18dd133d3622a2f7a3b0acf6a trafaret-2.1.1.tar.gz +sha256 d9d00800318fbd343fdfb3353e947b2ebb5557159c844696c5ac24846f76d41c trafaret-2.1.1.tar.gz +# Locally computed sha256 checksums +sha256 724f8da8a7161f07d9448aa37d1d5c4eb44b14727021c3b5d60a50ecf9a24771 LICENSE.txt diff --git a/package/python-trafaret/python-trafaret.mk b/package/python-trafaret/python-trafaret.mk new file mode 100644 index 00000000..74d87a3d --- /dev/null +++ b/package/python-trafaret/python-trafaret.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-trafaret +# +################################################################################ + +PYTHON_TRAFARET_VERSION = 2.1.1 +PYTHON_TRAFARET_SOURCE = trafaret-$(PYTHON_TRAFARET_VERSION).tar.gz +PYTHON_TRAFARET_SITE = https://files.pythonhosted.org/packages/c9/ed/aac034e566f8846aee6472dcc90da6011a0b1829e3ffc768407df519a3b0 +PYTHON_TRAFARET_SETUP_TYPE = setuptools +PYTHON_TRAFARET_LICENSE = BSD-2-Clause +PYTHON_TRAFARET_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-traitlets/Config.in b/package/python-traitlets/Config.in new file mode 100644 index 00000000..a2736011 --- /dev/null +++ b/package/python-traitlets/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_TRAITLETS + bool "python-traitlets" + help + A configuration system for Python applications. + + https://pypi.python.org/pypi/traitlets diff --git a/package/python-traitlets/python-traitlets.hash b/package/python-traitlets/python-traitlets.hash new file mode 100644 index 00000000..80fa8d4d --- /dev/null +++ b/package/python-traitlets/python-traitlets.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/traitlets/json +md5 95b21c721316bbc06922df9d97af5158 traitlets-5.8.0.tar.gz +sha256 6cc57d6dc28c85d5365961726ffd19b538739347749e13ebe34e03323a0e8f84 traitlets-5.8.0.tar.gz +# Locally computed sha256 checksums +sha256 3dcd47086529bf178cf7d10f35a8c188a1e9710391acecceef700898a4cf099b COPYING.md diff --git a/package/python-traitlets/python-traitlets.mk b/package/python-traitlets/python-traitlets.mk new file mode 100644 index 00000000..7054557a --- /dev/null +++ b/package/python-traitlets/python-traitlets.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-traitlets +# +################################################################################ + +PYTHON_TRAITLETS_VERSION = 5.8.0 +PYTHON_TRAITLETS_SOURCE = traitlets-$(PYTHON_TRAITLETS_VERSION).tar.gz +PYTHON_TRAITLETS_SITE = https://files.pythonhosted.org/packages/56/48/0eb99357330a02974d537be8e4096bc58cfac1089e3153570119ccea7a40 +PYTHON_TRAITLETS_LICENSE = BSD-3-Clause +PYTHON_TRAITLETS_LICENSE_FILES = COPYING.md +PYTHON_TRAITLETS_SETUP_TYPE = pep517 +PYTHON_TRAITLETS_DEPENDENCIES = host-python-hatchling + +$(eval $(python-package)) diff --git a/package/python-treq/Config.in b/package/python-treq/Config.in new file mode 100644 index 00000000..5d76a5cd --- /dev/null +++ b/package/python-treq/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_PYTHON_TREQ + bool "python-treq" + # twisted TLS -> python-{pyopenssl,service-identity} + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_PYTHON_ATTRS # runtime + select BR2_PACKAGE_PYTHON_HYPERLINK # runtime + select BR2_PACKAGE_PYTHON_INCREMENTAL # runtime + select BR2_PACKAGE_PYTHON_REQUESTS # runtime + select BR2_PACKAGE_PYTHON_TWISTED # runtime + select BR2_PACKAGE_PYTHON_TWISTED_TLS # runtime + help + treq is an HTTP library inspired by requests but written on + top of Twisted's Agents. It provides a simple, higher level + API for making HTTP requests when using Twisted. + + https://github.com/twisted/treq diff --git a/package/python-treq/python-treq.hash b/package/python-treq/python-treq.hash new file mode 100644 index 00000000..aecf71aa --- /dev/null +++ b/package/python-treq/python-treq.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/treq/json +md5 43892086d556e7596392134f1e10bdef treq-22.2.0.tar.gz +sha256 df757e3f141fc782ede076a604521194ffcb40fa2645cf48e5a37060307f52ec treq-22.2.0.tar.gz +# Locally computed sha256 checksums +sha256 7cc1b65e1937b1cc07052bb864ec96d8e5fd413400c0842e5b89a8201a600293 LICENSE diff --git a/package/python-treq/python-treq.mk b/package/python-treq/python-treq.mk new file mode 100644 index 00000000..57dc50ee --- /dev/null +++ b/package/python-treq/python-treq.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-treq +# +################################################################################ + +PYTHON_TREQ_VERSION = 22.2.0 +PYTHON_TREQ_SOURCE = treq-$(PYTHON_TREQ_VERSION).tar.gz +PYTHON_TREQ_SITE = https://files.pythonhosted.org/packages/cd/c8/b68ab17d994133baf6edbcb5551ba81e1494bdc6d5e21a9d4f3bc4315140 +PYTHON_TREQ_LICENSE = MIT +PYTHON_TREQ_LICENSE_FILES = LICENSE +PYTHON_TREQ_SETUP_TYPE = setuptools +PYTHON_TREQ_DEPENDENCIES = host-python-incremental + +$(eval $(python-package)) diff --git a/package/python-trio-websocket/Config.in b/package/python-trio-websocket/Config.in new file mode 100644 index 00000000..7d35fd02 --- /dev/null +++ b/package/python-trio-websocket/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_TRIO_WEBSOCKET + bool "python-trio-websocket" + select BR2_PACKAGE_PYTHON_ASYNC_GENERATOR # runtime + select BR2_PACKAGE_PYTHON_TRIO # runtime + select BR2_PACKAGE_PYTHON_WSPROTO # runtime + help + WebSocket library for Trio. + + https://github.com/HyperionGray/trio-websocket diff --git a/package/python-trio-websocket/python-trio-websocket.hash b/package/python-trio-websocket/python-trio-websocket.hash new file mode 100644 index 00000000..3e6e832d --- /dev/null +++ b/package/python-trio-websocket/python-trio-websocket.hash @@ -0,0 +1,3 @@ +# md5, sha256 from https://pypi.org/pypi/trio-websocket/json +md5 37b141910bdafa3c9b6731aa16646acc trio-websocket-0.9.2.tar.gz +sha256 a3d34de8fac26023eee701ed1e7bf4da9a8326b61a62934ec9e53b64970fd8fe trio-websocket-0.9.2.tar.gz diff --git a/package/python-trio-websocket/python-trio-websocket.mk b/package/python-trio-websocket/python-trio-websocket.mk new file mode 100644 index 00000000..4522b87c --- /dev/null +++ b/package/python-trio-websocket/python-trio-websocket.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-trio-websocket +# +################################################################################ + +PYTHON_TRIO_WEBSOCKET_VERSION = 0.9.2 +PYTHON_TRIO_WEBSOCKET_SOURCE = trio-websocket-$(PYTHON_TRIO_WEBSOCKET_VERSION).tar.gz +PYTHON_TRIO_WEBSOCKET_SITE = https://files.pythonhosted.org/packages/75/91/44a0a016025794ba9fef530a6fbe59987153e2cbea7e11fe2f3d8c618740 +PYTHON_TRIO_WEBSOCKET_SETUP_TYPE = setuptools +PYTHON_TRIO_WEBSOCKET_LICENSE = MIT + +$(eval $(python-package)) diff --git a/package/python-trio/Config.in b/package/python-trio/Config.in new file mode 100644 index 00000000..0aa53c90 --- /dev/null +++ b/package/python-trio/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_TRIO + bool "python-trio" + select BR2_PACKAGE_PYTHON_ASYNC_GENERATOR # runtime + select BR2_PACKAGE_PYTHON_ATTRS # runtime + select BR2_PACKAGE_PYTHON_IDNA # runtime + select BR2_PACKAGE_PYTHON_OUTCOME # runtime + select BR2_PACKAGE_PYTHON_SNIFFIO # runtime + select BR2_PACKAGE_PYTHON_SORTEDCONTAINERS # runtime + help + A friendly Python library for async concurrency and I/O. + + https://github.com/python-trio/trio diff --git a/package/python-trio/python-trio.hash b/package/python-trio/python-trio.hash new file mode 100644 index 00000000..48719466 --- /dev/null +++ b/package/python-trio/python-trio.hash @@ -0,0 +1,7 @@ +# md5, sha256 from https://pypi.org/pypi/trio/json +md5 f7dbfa6a8722065f09da188641d8ed93 trio-0.22.0.tar.gz +sha256 ce68f1c5400a47b137c5a4de72c7c901bd4e7a24fbdebfe9b41de8c6c04eaacf trio-0.22.0.tar.gz +# Locally computed sha256 checksums +sha256 418d025e1284311f2690263e6efa6bf51585e5741818ece63e5862487e505bb9 LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.APACHE2 +sha256 faa301d72dcc023b432bd77dc08a773ca3449e5c27440b9d66eb46fb8500b430 LICENSE.MIT diff --git a/package/python-trio/python-trio.mk b/package/python-trio/python-trio.mk new file mode 100644 index 00000000..80da203c --- /dev/null +++ b/package/python-trio/python-trio.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-trio +# +################################################################################ + +PYTHON_TRIO_VERSION = 0.22.0 +PYTHON_TRIO_SOURCE = trio-$(PYTHON_TRIO_VERSION).tar.gz +PYTHON_TRIO_SITE = https://files.pythonhosted.org/packages/0b/b8/1b81d2149c3e2c25900d40b8e6c8d3ca502a3cc844b90c962b0854aaf3f3 +PYTHON_TRIO_SETUP_TYPE = setuptools +PYTHON_TRIO_LICENSE = Apache-2.0 or MIT +PYTHON_TRIO_LICENSE_FILES = LICENSE LICENSE.APACHE2 LICENSE.MIT + +$(eval $(python-package)) diff --git a/package/python-trove-classifiers/python-trove-classifiers.hash b/package/python-trove-classifiers/python-trove-classifiers.hash new file mode 100644 index 00000000..2aac714a --- /dev/null +++ b/package/python-trove-classifiers/python-trove-classifiers.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/trove-classifiers/json +md5 1e574abaf8803bab35289ab54d6bb251 trove-classifiers-2024.3.3.tar.gz +sha256 df7edff9c67ff86b733628998330b180e81d125b1e096536d83ac0fd79673fdc trove-classifiers-2024.3.3.tar.gz +# Locally computed sha256 checksums +sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE diff --git a/package/python-trove-classifiers/python-trove-classifiers.mk b/package/python-trove-classifiers/python-trove-classifiers.mk new file mode 100644 index 00000000..5bfd045c --- /dev/null +++ b/package/python-trove-classifiers/python-trove-classifiers.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-trove-classifiers +# +################################################################################ + +PYTHON_TROVE_CLASSIFIERS_VERSION = 2024.3.3 +PYTHON_TROVE_CLASSIFIERS_SOURCE = trove-classifiers-$(PYTHON_TROVE_CLASSIFIERS_VERSION).tar.gz +PYTHON_TROVE_CLASSIFIERS_SITE = https://files.pythonhosted.org/packages/13/11/e13906315b498cb8f5ce5a7ff39fc35941e8291e914158157937fd1c095d +PYTHON_TROVE_CLASSIFIERS_SETUP_TYPE = setuptools +PYTHON_TROVE_CLASSIFIERS_LICENSE = Apache-2.0 +PYTHON_TROVE_CLASSIFIERS_LICENSE_FILES = LICENSE +HOST_PYTHON_TROVE_CLASSIFIERS_DEPENDENCIES = host-python-calver + +$(eval $(host-python-package)) diff --git a/package/python-twisted/Config.in b/package/python-twisted/Config.in new file mode 100644 index 00000000..1f3baf57 --- /dev/null +++ b/package/python-twisted/Config.in @@ -0,0 +1,44 @@ +config BR2_PACKAGE_PYTHON_TWISTED + bool "python-twisted" + select BR2_PACKAGE_PYTHON_INCREMENTAL + select BR2_PACKAGE_PYTHON_ATTRS # runtime + select BR2_PACKAGE_PYTHON_AUTOMAT # runtime + select BR2_PACKAGE_PYTHON_CONSTANTLY # runtime + select BR2_PACKAGE_PYTHON_HYPERLINK # runtime + select BR2_PACKAGE_PYTHON_PYHAMCREST # runtime + select BR2_PACKAGE_PYTHON_ZOPE_INTERFACE # runtime + select BR2_PACKAGE_PYTHON_TYPING_EXTENSIONS # runtime + help + Twisted is an event-driven networking engine written in + Python. + + https://twistedmatrix.com/trac/ + +if BR2_PACKAGE_PYTHON_TWISTED + +config BR2_PACKAGE_PYTHON_TWISTED_HTTP2 + bool "HTTP2 support" + select BR2_PACKAGE_PYTHON_H2 # runtime + select BR2_PACKAGE_PYTHON_PRIORITY # runtime + +config BR2_PACKAGE_PYTHON_TWISTED_TLS + bool "TLS support" + # python-{pyopenssl,service-identity} + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_PYTHON_IDNA # runtime + select BR2_PACKAGE_PYTHON_PYOPENSSL # runtime + select BR2_PACKAGE_PYTHON_SERVICE_IDENTITY # runtime + +config BR2_PACKAGE_PYTHON_TWISTED_CONCH + bool "Conch support" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-cryptography, python-bcrypt + select BR2_PACKAGE_PYTHON_APPDIRS # runtime + select BR2_PACKAGE_PYTHON_BCRYPT # runtime + select BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime + select BR2_PACKAGE_PYTHON_PYASN1 # runtime + +config BR2_PACKAGE_PYTHON_TWISTED_SERIAL + bool "Serial support" + select BR2_PACKAGE_PYTHON_SERIAL # runtime + +endif diff --git a/package/python-twisted/python-twisted.hash b/package/python-twisted/python-twisted.hash new file mode 100644 index 00000000..36612ff5 --- /dev/null +++ b/package/python-twisted/python-twisted.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/twisted/json +md5 c9a5dad0813512fabd9de502738c0bf8 Twisted-22.10.0.tar.gz +sha256 32acbd40a94f5f46e7b42c109bfae2b302250945561783a8b7a059048f2d4d31 Twisted-22.10.0.tar.gz +# Locally computed sha256 +sha256 686f6426a775450eb3afd00bc3a5c2621f305ddb9c8478ee9bf28a368ef2dece LICENSE diff --git a/package/python-twisted/python-twisted.mk b/package/python-twisted/python-twisted.mk new file mode 100644 index 00000000..398baed2 --- /dev/null +++ b/package/python-twisted/python-twisted.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-twisted +# +################################################################################ + +PYTHON_TWISTED_VERSION = 22.10.0 +PYTHON_TWISTED_SOURCE = Twisted-$(PYTHON_TWISTED_VERSION).tar.gz +PYTHON_TWISTED_SITE = https://files.pythonhosted.org/packages/b2/ce/cbb56597127b1d51905b0cddcc3f314cc769769efc5e9a8a67f4617f7bca +PYTHON_TWISTED_SETUP_TYPE = setuptools +PYTHON_TWISTED_LICENSE = MIT +PYTHON_TWISTED_LICENSE_FILES = LICENSE +PYTHON_TWISTED_CPE_ID_VENDOR = twistedmatrix +PYTHON_TWISTED_CPE_ID_PRODUCT = twisted +PYTHON_TWISTED_DEPENDENCIES = python-incremental host-python-incremental + +$(eval $(python-package)) diff --git a/package/python-txaio/Config.in b/package/python-txaio/Config.in new file mode 100644 index 00000000..eddd983e --- /dev/null +++ b/package/python-txaio/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_TXAIO + bool "python-txaio" + help + Compatibility API between asyncio/Twisted/Trollius. + + https://pypi.python.org/pypi/txaio diff --git a/package/python-txaio/python-txaio.hash b/package/python-txaio/python-txaio.hash new file mode 100644 index 00000000..d561cec6 --- /dev/null +++ b/package/python-txaio/python-txaio.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/txaio/json +md5 297409f2dff8e71bad24467374aa8775 txaio-23.1.1.tar.gz +sha256 f9a9216e976e5e3246dfd112ad7ad55ca915606b60b84a757ac769bd404ff704 txaio-23.1.1.tar.gz +# Locally computed sha256 checksums +sha256 ab1dd7a42dbdae302346c5a4571f2149691cc1ec06836232bf4923527e3fe41c LICENSE diff --git a/package/python-txaio/python-txaio.mk b/package/python-txaio/python-txaio.mk new file mode 100644 index 00000000..585b3a5f --- /dev/null +++ b/package/python-txaio/python-txaio.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-txaio +# +################################################################################ + +PYTHON_TXAIO_VERSION = 23.1.1 +PYTHON_TXAIO_SOURCE = txaio-$(PYTHON_TXAIO_VERSION).tar.gz +PYTHON_TXAIO_SITE = https://files.pythonhosted.org/packages/51/91/bc9fd5aa84703f874dea27313b11fde505d343f3ef3ad702bddbe20bfd6e +PYTHON_TXAIO_LICENSE = MIT +PYTHON_TXAIO_LICENSE_FILES = LICENSE +PYTHON_TXAIO_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-txdbus/Config.in b/package/python-txdbus/Config.in new file mode 100644 index 00000000..e2995966 --- /dev/null +++ b/package/python-txdbus/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_TXDBUS + bool "python-txdbus" + # python-twisted -> python-cryptography + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_PYTHON_TWISTED # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + help + A native Python implementation of the DBus protocol for + Twisted applications. + + https://github.com/cocagne/txdbus diff --git a/package/python-txdbus/python-txdbus.hash b/package/python-txdbus/python-txdbus.hash new file mode 100644 index 00000000..5d386272 --- /dev/null +++ b/package/python-txdbus/python-txdbus.hash @@ -0,0 +1,3 @@ +# md5, sha256 from https://pypi.org/pypi/txdbus/json +md5 d397357dee78750385f92ca9c6c1f063 txdbus-1.1.2.tar.gz +sha256 8375a5fb68a12054f0def91af800c821fb2232949337756ed975f88d8ea2bc97 txdbus-1.1.2.tar.gz diff --git a/package/python-txdbus/python-txdbus.mk b/package/python-txdbus/python-txdbus.mk new file mode 100644 index 00000000..4e4ddf03 --- /dev/null +++ b/package/python-txdbus/python-txdbus.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-txdbus +# +################################################################################ + +PYTHON_TXDBUS_VERSION = 1.1.2 +PYTHON_TXDBUS_SOURCE = txdbus-$(PYTHON_TXDBUS_VERSION).tar.gz +PYTHON_TXDBUS_SITE = https://files.pythonhosted.org/packages/d6/ef/43377e975b8d37862fd1166a4998f908651f5e205ddc9bbd7a57c6e5b4b6 +PYTHON_TXDBUS_SETUP_TYPE = setuptools +PYTHON_TXDBUS_LICENSE = MIT + +$(eval $(python-package)) diff --git a/package/python-txtorcon/Config.in b/package/python-txtorcon/Config.in new file mode 100644 index 00000000..fbea7be8 --- /dev/null +++ b/package/python-txtorcon/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_PYTHON_TXTORCON + bool "python-txtorcon" + # python-pyopenssl -> python-cryptography + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_PYTHON_AUTOMAT # runtime + select BR2_PACKAGE_PYTHON_IDNA # runtime + select BR2_PACKAGE_PYTHON_INCREMENTAL # runtime + select BR2_PACKAGE_PYTHON_PYOPENSSL # runtime + select BR2_PACKAGE_PYTHON_SERVICE_IDENTITY # runtime + select BR2_PACKAGE_PYTHON_TWISTED # runtime + select BR2_PACKAGE_PYTHON_ZOPE_INTERFACE # runtime + help + Twisted-based Tor controller client, with state-tracking and + configuration abstractions. + + https://github.com/meejah/txtorcon diff --git a/package/python-txtorcon/python-txtorcon.hash b/package/python-txtorcon/python-txtorcon.hash new file mode 100644 index 00000000..9c8e3599 --- /dev/null +++ b/package/python-txtorcon/python-txtorcon.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/txtorcon/json +md5 17a84954a4ba13fa6ee443129bdc401a txtorcon-22.0.0.tar.gz +sha256 89a1b65e32a4b369d67e6c166387fbc468cc5d05227448d239a5e7e9718aa053 txtorcon-22.0.0.tar.gz +# Locally computed sha256 checksums +sha256 3ada1c32ef38c23d96d7f4e8f4a226c527f51e0202883c7543b06f9cc5228a2b LICENSE diff --git a/package/python-txtorcon/python-txtorcon.mk b/package/python-txtorcon/python-txtorcon.mk new file mode 100644 index 00000000..c17d5da0 --- /dev/null +++ b/package/python-txtorcon/python-txtorcon.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-txtorcon +# +################################################################################ + +PYTHON_TXTORCON_VERSION = 22.0.0 +PYTHON_TXTORCON_SOURCE = txtorcon-$(PYTHON_TXTORCON_VERSION).tar.gz +PYTHON_TXTORCON_SITE = https://files.pythonhosted.org/packages/47/ca/7941660345c769637a97bdbaf25202460fbab35eead55c538fb1fe61b71e +PYTHON_TXTORCON_SETUP_TYPE = setuptools +PYTHON_TXTORCON_LICENSE = MIT +PYTHON_TXTORCON_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-typeguard/Config.in b/package/python-typeguard/Config.in new file mode 100644 index 00000000..6fd83515 --- /dev/null +++ b/package/python-typeguard/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_TYPEGUARD + bool "python-typeguard" + help + Run-time type checker for Python. + + https://github.com/agronholm/typeguard diff --git a/package/python-typeguard/python-typeguard.hash b/package/python-typeguard/python-typeguard.hash new file mode 100644 index 00000000..76394bcb --- /dev/null +++ b/package/python-typeguard/python-typeguard.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/typeguard/json +md5 22d49971f62f3baa3525349b1e03723d typeguard-2.13.3.tar.gz +sha256 00edaa8da3a133674796cf5ea87d9f4b4c367d77476e185e80251cc13dfbb8c4 typeguard-2.13.3.tar.gz +# Locally computed sha256 checksums +sha256 6163f7987dfb38d6bc320ce2b70b2f02b862bc41126516d552ef1cd43247e758 LICENSE diff --git a/package/python-typeguard/python-typeguard.mk b/package/python-typeguard/python-typeguard.mk new file mode 100644 index 00000000..8471f2e4 --- /dev/null +++ b/package/python-typeguard/python-typeguard.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-typeguard +# +################################################################################ + +PYTHON_TYPEGUARD_VERSION = 2.13.3 +PYTHON_TYPEGUARD_SOURCE = typeguard-$(PYTHON_TYPEGUARD_VERSION).tar.gz +PYTHON_TYPEGUARD_SITE = https://files.pythonhosted.org/packages/3a/38/c61bfcf62a7b572b5e9363a802ff92559cb427ee963048e1442e3aef7490 +PYTHON_TYPEGUARD_SETUP_TYPE = setuptools +PYTHON_TYPEGUARD_LICENSE = MIT +PYTHON_TYPEGUARD_LICENSE_FILES = LICENSE +PYTHON_TYPEGUARD_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-typepy/Config.in b/package/python-typepy/Config.in new file mode 100644 index 00000000..3438e744 --- /dev/null +++ b/package/python-typepy/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_TYPEPY + bool "python-typepy" + select BR2_PACKAGE_PYTHON_MBSTRDECODER # runtime + help + A Python library for variable type + checker/validator/converter at a run time. + + https://github.com/thombashi/typepy diff --git a/package/python-typepy/python-typepy.hash b/package/python-typepy/python-typepy.hash new file mode 100644 index 00000000..eade6673 --- /dev/null +++ b/package/python-typepy/python-typepy.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/typepy/json +md5 9f73bef9ce9e9ccf49ed63a2dadada90 typepy-1.3.0.tar.gz +sha256 96788530614083164993d1443959f6c58e6bb8e2da839812ddf462c203e4b84c typepy-1.3.0.tar.gz +# Locally computed sha256 checksums +sha256 bebbdf0524a147f89a615fff53d79bdc90cbc7631550fb4b725cd3f3bdcd24f6 LICENSE diff --git a/package/python-typepy/python-typepy.mk b/package/python-typepy/python-typepy.mk new file mode 100644 index 00000000..6c556df9 --- /dev/null +++ b/package/python-typepy/python-typepy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-typepy +# +################################################################################ + +PYTHON_TYPEPY_VERSION = 1.3.0 +PYTHON_TYPEPY_SOURCE = typepy-$(PYTHON_TYPEPY_VERSION).tar.gz +PYTHON_TYPEPY_SITE = https://files.pythonhosted.org/packages/07/7b/fb32933f2a17992af75c0f96e5538a25fecebd439a82dcc31926ba55d336 +PYTHON_TYPEPY_SETUP_TYPE = setuptools +PYTHON_TYPEPY_LICENSE = MIT +PYTHON_TYPEPY_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-types-python-dateutil/Config.in b/package/python-types-python-dateutil/Config.in new file mode 100644 index 00000000..e2a8bb63 --- /dev/null +++ b/package/python-types-python-dateutil/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_TYPES_PYTHON_DATEUTIL + bool "python-types-python-dateutil" + help + Typing stubs for python-dateutil. + + https://github.com/python/typeshed diff --git a/package/python-types-python-dateutil/python-types-python-dateutil.hash b/package/python-types-python-dateutil/python-types-python-dateutil.hash new file mode 100644 index 00000000..ef5e9380 --- /dev/null +++ b/package/python-types-python-dateutil/python-types-python-dateutil.hash @@ -0,0 +1,3 @@ +# md5, sha256 from https://pypi.org/pypi/types-python-dateutil/json +md5 58072922ac0c740121e311e970f003bf types-python-dateutil-2.8.19.14.tar.gz +sha256 1f4f10ac98bb8b16ade9dbee3518d9ace017821d94b057a425b069f834737f4b types-python-dateutil-2.8.19.14.tar.gz diff --git a/package/python-types-python-dateutil/python-types-python-dateutil.mk b/package/python-types-python-dateutil/python-types-python-dateutil.mk new file mode 100644 index 00000000..b2303941 --- /dev/null +++ b/package/python-types-python-dateutil/python-types-python-dateutil.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-types-python-dateutil +# +################################################################################ + +PYTHON_TYPES_PYTHON_DATEUTIL_VERSION = 2.8.19.14 +PYTHON_TYPES_PYTHON_DATEUTIL_SOURCE = types-python-dateutil-$(PYTHON_TYPES_PYTHON_DATEUTIL_VERSION).tar.gz +PYTHON_TYPES_PYTHON_DATEUTIL_SITE = https://files.pythonhosted.org/packages/1b/2d/f189e5c03c22700c4ce5aece4b51bb73fa8adcfd7848629de0fb78af5f6f +PYTHON_TYPES_PYTHON_DATEUTIL_SETUP_TYPE = setuptools +PYTHON_TYPES_PYTHON_DATEUTIL_LICENSE = Apache-2.0 + +$(eval $(python-package)) diff --git a/package/python-typing-extensions/Config.in b/package/python-typing-extensions/Config.in new file mode 100644 index 00000000..b5969328 --- /dev/null +++ b/package/python-typing-extensions/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_TYPING_EXTENSIONS + bool "python-typing-extensions" + help + Backported and Experimental Type Hints for Python 3.5+. + + https://github.com/python/typing/blob/master/typing_extensions/README.rst diff --git a/package/python-typing-extensions/python-typing-extensions.hash b/package/python-typing-extensions/python-typing-extensions.hash new file mode 100644 index 00000000..8e2c4059 --- /dev/null +++ b/package/python-typing-extensions/python-typing-extensions.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/typing-extensions/json +md5 cf64c2313f5fa5eb04c1deb3fc93abe9 typing_extensions-4.12.2.tar.gz +sha256 1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8 typing_extensions-4.12.2.tar.gz +# Locally computed sha256 checksums +sha256 3b2f81fe21d181c499c59a256c8e1968455d6689d269aa85373bfb6af41da3bf LICENSE diff --git a/package/python-typing-extensions/python-typing-extensions.mk b/package/python-typing-extensions/python-typing-extensions.mk new file mode 100644 index 00000000..66f8872b --- /dev/null +++ b/package/python-typing-extensions/python-typing-extensions.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-typing-extensions +# +################################################################################ + +PYTHON_TYPING_EXTENSIONS_VERSION = 4.12.2 +PYTHON_TYPING_EXTENSIONS_SOURCE = typing_extensions-$(PYTHON_TYPING_EXTENSIONS_VERSION).tar.gz +PYTHON_TYPING_EXTENSIONS_SITE = https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557 +PYTHON_TYPING_EXTENSIONS_SETUP_TYPE = flit +PYTHON_TYPING_EXTENSIONS_LICENSE = Python-2.0 +PYTHON_TYPING_EXTENSIONS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-typing-inspect/Config.in b/package/python-typing-inspect/Config.in new file mode 100644 index 00000000..dda057a1 --- /dev/null +++ b/package/python-typing-inspect/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_TYPING_INSPECT + bool "python-typing-inspect" + select BR2_PACKAGE_PYTHON_MYPY_EXTENSIONS # runtime + help + Runtime inspection utilities for typing module. + + https://github.com/ilevkivskyi/typing_inspect diff --git a/package/python-typing-inspect/python-typing-inspect.hash b/package/python-typing-inspect/python-typing-inspect.hash new file mode 100644 index 00000000..737373d6 --- /dev/null +++ b/package/python-typing-inspect/python-typing-inspect.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/typing-inspect/json +md5 d56c8277a55d0bf061275df1ea3785d5 typing_inspect-0.8.0.tar.gz +sha256 8b1ff0c400943b6145df8119c41c244ca8207f1f10c9c057aeed1560e4806e3d typing_inspect-0.8.0.tar.gz +# Locally computed sha256 checksums +sha256 f9d3567d00ca2337f769fb28c553cc590213ecefed4ed599110c10ded2ea0117 LICENSE diff --git a/package/python-typing-inspect/python-typing-inspect.mk b/package/python-typing-inspect/python-typing-inspect.mk new file mode 100644 index 00000000..8573bb1c --- /dev/null +++ b/package/python-typing-inspect/python-typing-inspect.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-typing-inspect +# +################################################################################ + +PYTHON_TYPING_INSPECT_VERSION = 0.8.0 +PYTHON_TYPING_INSPECT_SOURCE = typing_inspect-$(PYTHON_TYPING_INSPECT_VERSION).tar.gz +PYTHON_TYPING_INSPECT_SITE = https://files.pythonhosted.org/packages/72/23/bed3ea644bcd77ffe9a7f591eb058c00739747e33ab94d80cc4319ddee8e +PYTHON_TYPING_INSPECT_SETUP_TYPE = setuptools +PYTHON_TYPING_INSPECT_LICENSE = MIT +PYTHON_TYPING_INSPECT_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-u-msgpack/Config.in b/package/python-u-msgpack/Config.in new file mode 100644 index 00000000..e0031649 --- /dev/null +++ b/package/python-u-msgpack/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_U_MSGPACK + bool "python-u-msgpack" + help + A portable, lightweight MessagePack serializer and + deserializer written in pure Python. + + https://github.com/vsergeev/u-msgpack-python diff --git a/package/python-u-msgpack/python-u-msgpack.hash b/package/python-u-msgpack/python-u-msgpack.hash new file mode 100644 index 00000000..0ec23855 --- /dev/null +++ b/package/python-u-msgpack/python-u-msgpack.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/u-msgpack-python/json +md5 6c4fbe9e1df1c1563ecc9e435b82fdcb u-msgpack-python-2.7.2.tar.gz +sha256 e86f7ac6aa0ef4c6c49f004b4fd435bce99c23e2dd5d73003f3f9816024c2bd8 u-msgpack-python-2.7.2.tar.gz +# Locally computed sha256 checksums +sha256 f938fe2d3b7b329005d4b2851f106fd4351ca55f0836335acbe52386312f7f31 LICENSE diff --git a/package/python-u-msgpack/python-u-msgpack.mk b/package/python-u-msgpack/python-u-msgpack.mk new file mode 100644 index 00000000..372c5a8d --- /dev/null +++ b/package/python-u-msgpack/python-u-msgpack.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-u-msgpack +# +################################################################################ + +PYTHON_U_MSGPACK_VERSION = 2.7.2 +PYTHON_U_MSGPACK_SOURCE = u-msgpack-python-$(PYTHON_U_MSGPACK_VERSION).tar.gz +PYTHON_U_MSGPACK_SITE = https://files.pythonhosted.org/packages/44/a7/1cb4f059bbf72ea24364f9ba3ef682725af09969e29df988aa5437f0044e +PYTHON_U_MSGPACK_SETUP_TYPE = setuptools +PYTHON_U_MSGPACK_LICENSE = MIT +PYTHON_U_MSGPACK_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-ubjson/Config.in b/package/python-ubjson/Config.in new file mode 100644 index 00000000..86ed3b2e --- /dev/null +++ b/package/python-ubjson/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_UBJSON + bool "python-ubjson" + help + This is a Python v3.2+ (and 2.7+) Universal Binary JSON + encoder/decoder based on the draft-12 specification. + + https://pypi.python.org/pypi/py-ubjson diff --git a/package/python-ubjson/python-ubjson.hash b/package/python-ubjson/python-ubjson.hash new file mode 100644 index 00000000..baf3ce7b --- /dev/null +++ b/package/python-ubjson/python-ubjson.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/py-ubjson/json +md5 0f9f2b4d68ae8e70c6f624b1cdaca161 py-ubjson-0.16.1.tar.gz +sha256 b9bfb8695a1c7e3632e800fb83c943bf67ed45ddd87cd0344851610c69a5a482 py-ubjson-0.16.1.tar.gz +# Locally computed sha256 checksums +sha256 ca182abcb84ad9984c9af2e30cb70c4fe0e1772674355207e8fcdb85e8c5e75f LICENSE diff --git a/package/python-ubjson/python-ubjson.mk b/package/python-ubjson/python-ubjson.mk new file mode 100644 index 00000000..93ab9dc1 --- /dev/null +++ b/package/python-ubjson/python-ubjson.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-ubjson +# +################################################################################ + +PYTHON_UBJSON_VERSION = 0.16.1 +PYTHON_UBJSON_SOURCE = py-ubjson-$(PYTHON_UBJSON_VERSION).tar.gz +PYTHON_UBJSON_SITE = https://files.pythonhosted.org/packages/1d/c7/28220d37e041fe1df03e857fe48f768dcd30cd151480bf6f00da8713214a +PYTHON_UBJSON_LICENSE = Apache-2.0 +PYTHON_UBJSON_LICENSE_FILES = LICENSE +PYTHON_UBJSON_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-uhid/Config.in b/package/python-uhid/Config.in new file mode 100644 index 00000000..6fdff951 --- /dev/null +++ b/package/python-uhid/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_UHID + bool "python-uhid" + help + Pure Python typed UHID wrapper. + + https://github.com/FFY00/python-uhid diff --git a/package/python-uhid/python-uhid.hash b/package/python-uhid/python-uhid.hash new file mode 100644 index 00000000..3faf6d9f --- /dev/null +++ b/package/python-uhid/python-uhid.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/uhid/json +md5 1c62bbefe10923545bbdf42355d9be07 uhid-0.0.1.tar.gz +sha256 3c782489890dbf33621fb2c30d1ac81fbc1b3ef1911ae7d4c73907cdc0f59aab uhid-0.0.1.tar.gz +# Locally computed sha256 checksums +sha256 106a8f7c2c26bd2acc597c79a36a2fe3979f98a14dc14c6065b7dc9c58b27f33 LICENSE diff --git a/package/python-uhid/python-uhid.mk b/package/python-uhid/python-uhid.mk new file mode 100644 index 00000000..215545b6 --- /dev/null +++ b/package/python-uhid/python-uhid.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# python-uhid +# +################################################################################ + +PYTHON_UHID_VERSION = 0.0.1 +PYTHON_UHID_SOURCE = uhid-$(PYTHON_UHID_VERSION).tar.gz +PYTHON_UHID_SITE = https://files.pythonhosted.org/packages/cb/44/6ebe9dceadc028507d16603e2bb542557a4c70c6032ef8ee507c3ce51283 +PYTHON_UHID_SETUP_TYPE = setuptools +PYTHON_UHID_LICENSE = MIT +PYTHON_UHID_LICENSE_FILES = LICENSE + +define PYTHON_UHID_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_INPUT) + $(call KCONFIG_ENABLE_OPT,CONFIG_HID) + $(call KCONFIG_ENABLE_OPT,CONFIG_UHID) +endef + +$(eval $(python-package)) diff --git a/package/python-ujson/Config.in b/package/python-ujson/Config.in new file mode 100644 index 00000000..31b4d484 --- /dev/null +++ b/package/python-ujson/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_UJSON + bool "python-ujson" + depends on BR2_INSTALL_LIBSTDCPP # double-conversion + select BR2_PACKAGE_DOUBLE_CONVERSION + help + UltraJSON is an ultra fast JSON encoder and decoder written + in pure C with bindings for Python 3. + + https://pypi.python.org/pypi/ujson + +comment "python-ujson needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/python-ujson/python-ujson.hash b/package/python-ujson/python-ujson.hash new file mode 100644 index 00000000..759cafc2 --- /dev/null +++ b/package/python-ujson/python-ujson.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/ujson/json +md5 f93bd7aa33e3e6ed41c9e3782abe7b48 ujson-5.7.0.tar.gz +sha256 e788e5d5dcae8f6118ac9b45d0b891a0d55f7ac480eddcb7f07263f2bcf37b23 ujson-5.7.0.tar.gz +# Locally computed sha256 checksums +sha256 6a00a8f8b4050303368b694147bde1aed9c96bdff869c181dbbf3ccb784a1501 LICENSE.txt diff --git a/package/python-ujson/python-ujson.mk b/package/python-ujson/python-ujson.mk new file mode 100644 index 00000000..3afd33cb --- /dev/null +++ b/package/python-ujson/python-ujson.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# python-ujson +# +################################################################################ + +PYTHON_UJSON_VERSION = 5.7.0 +PYTHON_UJSON_SOURCE = ujson-$(PYTHON_UJSON_VERSION).tar.gz +PYTHON_UJSON_SITE = https://files.pythonhosted.org/packages/43/1a/b0a027144aa5c8f4ea654f4afdd634578b450807bb70b9f8bad00d6f6d3c +PYTHON_UJSON_SETUP_TYPE = setuptools +PYTHON_UJSON_LICENSE = BSD-3-Clause +PYTHON_UJSON_LICENSE_FILES = LICENSE.txt +PYTHON_UJSON_DEPENDENCIES = host-python-setuptools-scm double-conversion +PYTHON_UJSON_ENV = \ + UJSON_BUILD_DC_INCLUDES="$(STAGING_DIR)/usr/include/double-conversion" \ + UJSON_BUILD_DC_LIBS="-ldouble-conversion" \ + UJSON_BUILD_NO_STRIP=1 + +$(eval $(python-package)) diff --git a/package/python-unittest-xml-reporting/0001-setup.py-drop-data_files-installs-LICENSE-to-incorre.patch b/package/python-unittest-xml-reporting/0001-setup.py-drop-data_files-installs-LICENSE-to-incorre.patch new file mode 100644 index 00000000..4bc005f4 --- /dev/null +++ b/package/python-unittest-xml-reporting/0001-setup.py-drop-data_files-installs-LICENSE-to-incorre.patch @@ -0,0 +1,40 @@ +From 662cd67695c31126d72035a818b0f5f1da5a31ca Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 17 Aug 2024 12:24:28 +0200 +Subject: [PATCH] setup.py: drop data_files, installs LICENSE to incorrect + place + +As reported in issue +https://github.com/xmlrunner/unittest-xml-reporting/issues/284, the +data_files statement in the setup() calls installs the LICENSE file in +the wrong place: in /usr/LICENSE, or even /LICENSE depending on the +configuration. + +So let's drop this, and let setuptools install the LICENSE file +automatically: since setuptools v56, the license_files attribute is +automatically assigned to a default value, which includes "LICENSE", +so there is in fact nothing to do to the get the LICENSE file +installed at the correct location. See +https://setuptools.pypa.io/en/latest/history.html#v56-0-0. + +Upstream: https://github.com/xmlrunner/unittest-xml-reporting/pull/287 +Signed-off-by: Thomas Petazzoni +--- + setup.py | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/setup.py b/setup.py +index c524ed4..afa5925 100755 +--- a/setup.py ++++ b/setup.py +@@ -27,7 +27,6 @@ setup( + description = 'unittest-based test runner with Ant/JUnit like XML reporting.', + long_description = long_description, + long_description_content_type = 'text/markdown', +- data_files = [('', ['LICENSE'])], + install_requires = ['lxml'], + license = 'BSD', + platforms = ['Any'], +-- +2.46.0 + diff --git a/package/python-unittest-xml-reporting/Config.in b/package/python-unittest-xml-reporting/Config.in new file mode 100644 index 00000000..43b054fa --- /dev/null +++ b/package/python-unittest-xml-reporting/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_UNITTEST_XML_REPORTING + bool "python-unittest-xml-reporting" + select BR2_PACKAGE_PYTHON3_PYEXPAT + help + unittest-based test runner with Ant/JUnit like XML + reporting. + + http://github.com/xmlrunner/unittest-xml-reporting/ diff --git a/package/python-unittest-xml-reporting/python-unittest-xml-reporting.hash b/package/python-unittest-xml-reporting/python-unittest-xml-reporting.hash new file mode 100644 index 00000000..674a533e --- /dev/null +++ b/package/python-unittest-xml-reporting/python-unittest-xml-reporting.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/unittest-xml-reporting/json +md5 f12aeab63ff44e295526e103313d66c8 unittest-xml-reporting-3.2.0.tar.gz +sha256 edd8d3170b40c3a81b8cf910f46c6a304ae2847ec01036d02e9c0f9b85762d28 unittest-xml-reporting-3.2.0.tar.gz +# Locally computed sha256 checksums +sha256 0596648105bee470f9cafd62753b931efe52392096439d88e2564cf7d7cf0e68 LICENSE diff --git a/package/python-unittest-xml-reporting/python-unittest-xml-reporting.mk b/package/python-unittest-xml-reporting/python-unittest-xml-reporting.mk new file mode 100644 index 00000000..05bbed79 --- /dev/null +++ b/package/python-unittest-xml-reporting/python-unittest-xml-reporting.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-unittest-xml-reporting +# +################################################################################ + +PYTHON_UNITTEST_XML_REPORTING_VERSION = 3.2.0 +PYTHON_UNITTEST_XML_REPORTING_SOURCE = unittest-xml-reporting-$(PYTHON_UNITTEST_XML_REPORTING_VERSION).tar.gz +PYTHON_UNITTEST_XML_REPORTING_SITE = https://files.pythonhosted.org/packages/ed/40/3bf1afc96e93c7322520981ac4593cbb29daa21b48d32746f05ab5563dca +PYTHON_UNITTEST_XML_REPORTING_SETUP_TYPE = setuptools +PYTHON_UNITTEST_XML_REPORTING_LICENSE = BSD-2-Clause +PYTHON_UNITTEST_XML_REPORTING_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-urllib3/Config.in b/package/python-urllib3/Config.in new file mode 100644 index 00000000..90e10b79 --- /dev/null +++ b/package/python-urllib3/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_URLLIB3 + bool "python-urllib3" + select BR2_PACKAGE_PYTHON3_ZLIB # runtime + help + Python HTTP library with thread-safe connection pooling, file + post support, sanity friendly, and more. + + http://urllib3.readthedocs.org/ diff --git a/package/python-urllib3/python-urllib3.hash b/package/python-urllib3/python-urllib3.hash new file mode 100644 index 00000000..209cfe27 --- /dev/null +++ b/package/python-urllib3/python-urllib3.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/urllib3/json +md5 5a264ef3ae827e5842bbc80536a343dd urllib3-2.0.7.tar.gz +sha256 c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84 urllib3-2.0.7.tar.gz +# Locally computed sha256 checksums +sha256 130e3a64d5fdd5d096a752694634a7d9df284469de86e5732100268041e3d686 LICENSE.txt diff --git a/package/python-urllib3/python-urllib3.mk b/package/python-urllib3/python-urllib3.mk new file mode 100644 index 00000000..ba041082 --- /dev/null +++ b/package/python-urllib3/python-urllib3.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# python-urllib3 +# +################################################################################ + +PYTHON_URLLIB3_VERSION = 2.0.7 +PYTHON_URLLIB3_SOURCE = urllib3-$(PYTHON_URLLIB3_VERSION).tar.gz +PYTHON_URLLIB3_SITE = https://files.pythonhosted.org/packages/af/47/b215df9f71b4fdba1025fc05a77db2ad243fa0926755a52c5e71659f4e3c +PYTHON_URLLIB3_LICENSE = MIT +PYTHON_URLLIB3_LICENSE_FILES = LICENSE.txt +PYTHON_URLLIB3_CPE_ID_VENDOR = python +PYTHON_URLLIB3_CPE_ID_PRODUCT = urllib3 +PYTHON_URLLIB3_SETUP_TYPE = pep517 +PYTHON_URLLIB3_DEPENDENCIES = host-python-hatchling +HOST_PYTHON_URLLIB3_DEPENDENCIES = host-python-hatchling + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-urwid-readline/Config.in b/package/python-urwid-readline/Config.in new file mode 100644 index 00000000..a8046fc2 --- /dev/null +++ b/package/python-urwid-readline/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_URWID_READLINE + bool "python-urwid-readline" + select BR2_PACKAGE_PYTHON_URWID # runtime + help + A textbox edit widget for urwid that supports readline + shortcuts. + + https://github.com/rr-/urwid_readline diff --git a/package/python-urwid-readline/python-urwid-readline.hash b/package/python-urwid-readline/python-urwid-readline.hash new file mode 100644 index 00000000..75220e93 --- /dev/null +++ b/package/python-urwid-readline/python-urwid-readline.hash @@ -0,0 +1,3 @@ +# md5, sha256 from https://pypi.org/pypi/urwid_readline/json +md5 6e0bd170f621f0ad3edab1875bdb5c5f urwid_readline-0.13.tar.gz +sha256 018020cbc864bb5ed87be17dc26b069eae2755cb29f3a9c569aac3bded1efaf4 urwid_readline-0.13.tar.gz diff --git a/package/python-urwid-readline/python-urwid-readline.mk b/package/python-urwid-readline/python-urwid-readline.mk new file mode 100644 index 00000000..782c425b --- /dev/null +++ b/package/python-urwid-readline/python-urwid-readline.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-urwid-readline +# +################################################################################ + +PYTHON_URWID_READLINE_VERSION = 0.13 +PYTHON_URWID_READLINE_SOURCE = urwid_readline-$(PYTHON_URWID_READLINE_VERSION).tar.gz +PYTHON_URWID_READLINE_SITE = https://files.pythonhosted.org/packages/ab/bb/c5b3fec22268d97ad30232f5533d4a5939d4df7ed3917a8d20d447f1d0a7 +PYTHON_URWID_READLINE_LICENSE = MIT +PYTHON_URWID_READLINE_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-urwid/Config.in b/package/python-urwid/Config.in new file mode 100644 index 00000000..f584a925 --- /dev/null +++ b/package/python-urwid/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_URWID + bool "python-urwid" + help + Urwid is a console user interface library for Python + + http://urwid.org/ diff --git a/package/python-urwid/python-urwid.hash b/package/python-urwid/python-urwid.hash new file mode 100644 index 00000000..aad6f6f6 --- /dev/null +++ b/package/python-urwid/python-urwid.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/urwid/json +md5 324cf0f877a5bc7b7d2de7d7f36b13ee urwid-2.6.10.tar.gz +sha256 ae33355c414c13214e541d3634f3c8a0bfb373914e62ffbcf2fa863527706321 urwid-2.6.10.tar.gz +# Locally computed sha256 checksums +sha256 36b6d3fa47916943fd5fec313c584784946047ec1337a78b440e5992cb595f89 COPYING diff --git a/package/python-urwid/python-urwid.mk b/package/python-urwid/python-urwid.mk new file mode 100644 index 00000000..d7943a8b --- /dev/null +++ b/package/python-urwid/python-urwid.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-urwid +# +################################################################################ + +PYTHON_URWID_VERSION = 2.6.10 +PYTHON_URWID_SOURCE = urwid-$(PYTHON_URWID_VERSION).tar.gz +PYTHON_URWID_SITE = https://files.pythonhosted.org/packages/8e/74/8c2082f2b07a72ff5d2438447c13a70f0cbede73584e0a262c166a30785c +PYTHON_URWID_LICENSE = LGPL-2.1+ +PYTHON_URWID_LICENSE_FILES = COPYING +PYTHON_URWID_SETUP_TYPE = setuptools +PYTHON_URWID_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-uswid/Config.in.host b/package/python-uswid/Config.in.host new file mode 100644 index 00000000..6605d519 --- /dev/null +++ b/package/python-uswid/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_PYTHON_USWID + bool "host python-uswid" + select BR2_PACKAGE_HOST_PYTHON3 + select BR2_PACKAGE_HOST_PYTHON3_XZ + help + A tiny tool for embedding CoSWID tags in EFI binaries. + + https://github.com/hughsie/python-uswid diff --git a/package/python-uswid/python-uswid.hash b/package/python-uswid/python-uswid.hash new file mode 100644 index 00000000..b6bf09c7 --- /dev/null +++ b/package/python-uswid/python-uswid.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/uswid/json +md5 e43ff6d49ddcda0c95338d3271694b91 uswid-0.5.0.tar.gz +sha256 bdcd7ee5afac1da60ee688c357aa12f5f8d74bc28012446b10e2b4a9cf52fc6d uswid-0.5.0.tar.gz +# Locally computed sha256 checksums +sha256 98bc07f3fb70d05b01ff740e8191b9f29c080159f01588991fbd872c611236f9 LICENSE diff --git a/package/python-uswid/python-uswid.mk b/package/python-uswid/python-uswid.mk new file mode 100644 index 00000000..2092a06f --- /dev/null +++ b/package/python-uswid/python-uswid.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# python-uswid +# +################################################################################ + +PYTHON_USWID_VERSION = 0.5.0 +PYTHON_USWID_SOURCE = uswid-$(PYTHON_USWID_VERSION).tar.gz +PYTHON_USWID_SITE = https://files.pythonhosted.org/packages/dc/bf/05291df12037befeacda2083c798e98691043978e07ca4a00b4eb94aeb61 +PYTHON_USWID_SETUP_TYPE = setuptools +PYTHON_USWID_LICENSE = BSD-2-Clause-Patent +PYTHON_USWID_LICENSE_FILES = LICENSE +HOST_PYTHON_USWID_DEPENDENCIES = \ + host-python-cbor2 \ + host-python-lxml \ + host-python-pefile + +$(eval $(host-python-package)) diff --git a/package/python-uvicorn/Config.in b/package/python-uvicorn/Config.in new file mode 100644 index 00000000..c84f5478 --- /dev/null +++ b/package/python-uvicorn/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_UVICORN + bool "python-uvicorn" + select BR2_PACKAGE_PYTHON_CLICK # runtime + select BR2_PACKAGE_PYTHON_H11 # runtime + select BR2_PACKAGE_PYTHON3_SSL # runtime + help + The lightning-fast ASGI server. + + https://www.uvicorn.org/ diff --git a/package/python-uvicorn/python-uvicorn.hash b/package/python-uvicorn/python-uvicorn.hash new file mode 100644 index 00000000..e662adda --- /dev/null +++ b/package/python-uvicorn/python-uvicorn.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/uvicorn/json +md5 c43ec29f83c3706b99c48a7eeb0208ac uvicorn-0.30.5.tar.gz +sha256 ac6fdbd4425c5fd17a9fe39daf4d4d075da6fdc80f653e5894cdc2fd98752bee uvicorn-0.30.5.tar.gz +# Locally computed sha256 checksums +sha256 efe1acf3e62fb99c288b0ec73e5a773b7268ef4320fe757ea994214e4b63c371 LICENSE.md diff --git a/package/python-uvicorn/python-uvicorn.mk b/package/python-uvicorn/python-uvicorn.mk new file mode 100644 index 00000000..276aa898 --- /dev/null +++ b/package/python-uvicorn/python-uvicorn.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-uvicorn +# +################################################################################ + +PYTHON_UVICORN_VERSION = 0.30.5 +PYTHON_UVICORN_SOURCE = uvicorn-$(PYTHON_UVICORN_VERSION).tar.gz +PYTHON_UVICORN_SITE = https://files.pythonhosted.org/packages/c3/ad/02b1b412e43605aa6aac8d0392c383ff3f6ae8267b7864e48e3b5f3f601e +PYTHON_UVICORN_SETUP_TYPE = pep517 +PYTHON_UVICORN_LICENSE = BSD-3-Clause +PYTHON_UVICORN_LICENSE_FILES = LICENSE.md +PYTHON_UVICORN_CPE_ID_VENDOR = encode +PYTHON_UVICORN_CPE_ID_PRODUCT = uvicorn +PYTHON_UVICORN_DEPENDENCIES = host-python-hatchling + +$(eval $(python-package)) diff --git a/package/python-uvloop/Config.in b/package/python-uvloop/Config.in new file mode 100644 index 00000000..c9a05111 --- /dev/null +++ b/package/python-uvloop/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_PYTHON_UVLOOP + bool "python-uvloop" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv + depends on BR2_USE_MMU # libuv + depends on !BR2_STATIC_LIBS # libuv + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libuv + select BR2_PACKAGE_LIBUV + select BR2_PACKAGE_PYTHON3_SSL + help + Fast implementation of asyncio event loop on top of libuv. + + http://github.com/MagicStack/uvloop + +comment "python-uvloop needs a toolchain w/ NPTL, dynamic library, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_USE_MMU diff --git a/package/python-uvloop/python-uvloop.hash b/package/python-uvloop/python-uvloop.hash new file mode 100644 index 00000000..481dbd05 --- /dev/null +++ b/package/python-uvloop/python-uvloop.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/uvloop/json +md5 0107f6e04c23bdcd93a0a712a0e52ffb uvloop-0.19.0.tar.gz +sha256 0246f4fd1bf2bf702e06b0d45ee91677ee5c31242f39aab4ea6fe0c51aedd0fd uvloop-0.19.0.tar.gz +# Locally computed sha256 checksums +sha256 377025287798f9dcd819e1f826fa5fc5e2f382528691ab0528c5cf8c8c282c27 LICENSE-APACHE +sha256 6dd4c399f26de043d77a2ad7e31db4cb5bf08ea8368b0a42d6e158635cc8ab62 LICENSE-MIT diff --git a/package/python-uvloop/python-uvloop.mk b/package/python-uvloop/python-uvloop.mk new file mode 100644 index 00000000..aaeab280 --- /dev/null +++ b/package/python-uvloop/python-uvloop.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# python-uvloop +# +################################################################################ + +PYTHON_UVLOOP_VERSION = 0.19.0 +PYTHON_UVLOOP_SOURCE = uvloop-$(PYTHON_UVLOOP_VERSION).tar.gz +PYTHON_UVLOOP_SITE = https://files.pythonhosted.org/packages/9c/16/728cc5dde368e6eddb299c5aec4d10eaf25335a5af04e8c0abd68e2e9d32 +PYTHON_UVLOOP_SETUP_TYPE = setuptools +PYTHON_UVLOOP_LICENSE = Apache-2.0, MIT +PYTHON_UVLOOP_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT +PYTHON_UVLOOP_DEPENDENCIES = libuv +PYTHON_UVLOOP_BUILD_OPTS = \ + --skip-dependency-check \ + -C--build-option=build_ext \ + -C--build-option=--inplace \ + -C--build-option=--use-system-libuv + +$(eval $(python-package)) diff --git a/package/python-validators/Config.in b/package/python-validators/Config.in new file mode 100644 index 00000000..6eb6913a --- /dev/null +++ b/package/python-validators/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_VALIDATORS + bool "python-validators" + help + Python Data Validation for Humans. + + https://python-validators.github.io/validators diff --git a/package/python-validators/python-validators.hash b/package/python-validators/python-validators.hash new file mode 100644 index 00000000..3682850c --- /dev/null +++ b/package/python-validators/python-validators.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/validators/json +md5 e7b36d935ebafe149629146cbfe5b0c8 validators-0.22.0.tar.gz +sha256 77b2689b172eeeb600d9605ab86194641670cdb73b60afd577142a9397873370 validators-0.22.0.tar.gz +# Locally computed sha256 checksums +sha256 7c1bdc4712afecb46d402ec79da0ea2877811711e76dbaf1e425ee0b0e331b1f LICENSE diff --git a/package/python-validators/python-validators.mk b/package/python-validators/python-validators.mk new file mode 100644 index 00000000..09ccbe6a --- /dev/null +++ b/package/python-validators/python-validators.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-validators +# +################################################################################ + +PYTHON_VALIDATORS_VERSION = 0.22.0 +PYTHON_VALIDATORS_SOURCE = validators-$(PYTHON_VALIDATORS_VERSION).tar.gz +PYTHON_VALIDATORS_SITE = https://files.pythonhosted.org/packages/9b/21/40a249498eee5a244a017582c06c0af01851179e2617928063a3d628bc8f +PYTHON_VALIDATORS_SETUP_TYPE = setuptools +PYTHON_VALIDATORS_LICENSE = MIT +PYTHON_VALIDATORS_LICENSE_FILES = LICENSE +PYTHON_VALIDATORS_CPE_ID_VENDOR = validators_project +PYTHON_VALIDATORS_CPE_ID_PRODUCT = validators + +$(eval $(python-package)) diff --git a/package/python-vcversioner/python-vcversioner.hash b/package/python-vcversioner/python-vcversioner.hash new file mode 100644 index 00000000..1f982cd4 --- /dev/null +++ b/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/package/python-vcversioner/python-vcversioner.mk b/package/python-vcversioner/python-vcversioner.mk new file mode 100644 index 00000000..e7a62f86 --- /dev/null +++ b/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/package/python-versioneer/python-versioneer.hash b/package/python-versioneer/python-versioneer.hash new file mode 100644 index 00000000..44cbeb15 --- /dev/null +++ b/package/python-versioneer/python-versioneer.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/versioneer/json +md5 1703d6ced3656553066fa71e42c5eee6 versioneer-0.29.tar.gz +sha256 5ab283b9857211d61b53318b7c792cf68e798e765ee17c27ade9f6c924235731 versioneer-0.29.tar.gz +# Locally computed sha256 checksums +sha256 b5065838cbac452dfc855ba6e6e031481ad2c68406f70d21ead9321374653e6c LICENSE diff --git a/package/python-versioneer/python-versioneer.mk b/package/python-versioneer/python-versioneer.mk new file mode 100644 index 00000000..5dbf0dd1 --- /dev/null +++ b/package/python-versioneer/python-versioneer.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-versioneer +# +################################################################################ + +PYTHON_VERSIONEER_VERSION = 0.29 +PYTHON_VERSIONEER_SOURCE = versioneer-$(PYTHON_VERSIONEER_VERSION).tar.gz +PYTHON_VERSIONEER_SITE = https://files.pythonhosted.org/packages/32/d7/854e45d2b03e1a8ee2aa6429dd396d002ce71e5d88b77551b2fb249cb382 +PYTHON_VERSIONEER_SETUP_TYPE = setuptools +PYTHON_VERSIONEER_LICENSE = Unlicense +PYTHON_VERSIONEER_LICENSE_FILES = LICENSE + +$(eval $(host-python-package)) diff --git a/package/python-versiontools/Config.in b/package/python-versiontools/Config.in new file mode 100644 index 00000000..d15de1f0 --- /dev/null +++ b/package/python-versiontools/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_VERSIONTOOLS + bool "python-versiontools" + help + Smart replacement for plain tuple used in __version__. + + https://pypi.python.org/pypi/versiontools diff --git a/package/python-versiontools/python-versiontools.hash b/package/python-versiontools/python-versiontools.hash new file mode 100644 index 00000000..1067c415 --- /dev/null +++ b/package/python-versiontools/python-versiontools.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 a969332887a18a9c98b0df0ea4d4ca75972f24ca94f06fb87d591377e83414f6 versiontools-1.9.1.tar.gz diff --git a/package/python-versiontools/python-versiontools.mk b/package/python-versiontools/python-versiontools.mk new file mode 100644 index 00000000..b99ddecb --- /dev/null +++ b/package/python-versiontools/python-versiontools.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-versiontools +# +################################################################################ + +PYTHON_VERSIONTOOLS_VERSION = 1.9.1 +PYTHON_VERSIONTOOLS_SOURCE = versiontools-$(PYTHON_VERSIONTOOLS_VERSION).tar.gz +PYTHON_VERSIONTOOLS_SITE = https://pypi.python.org/packages/source/v/versiontools +PYTHON_VERSIONTOOLS_SETUP_TYPE = setuptools +PYTHON_VERSIONTOOLS_LICENSE = LGPL-3.0 + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-visitor/Config.in b/package/python-visitor/Config.in new file mode 100644 index 00000000..f8be5ec9 --- /dev/null +++ b/package/python-visitor/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_VISITOR + bool "python-visitor" + help + A tiny pythonic visitor implementation. + + http://github.com/mbr/visitor diff --git a/package/python-visitor/python-visitor.hash b/package/python-visitor/python-visitor.hash new file mode 100644 index 00000000..a6f0ec71 --- /dev/null +++ b/package/python-visitor/python-visitor.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/visitor/json, sha256 locally computed +md5 94a024ed0ec1b02b4497c15267d319ca visitor-0.1.3.tar.gz +sha256 2c737903b2b6864ebc6167eef7cf3b997126f1aa94bdf590f90f1436d23e480a visitor-0.1.3.tar.gz +sha256 184d1ebb65da97ada36447f3c028f2fd4890b874f17b18c023ce200dd96639af LICENSE diff --git a/package/python-visitor/python-visitor.mk b/package/python-visitor/python-visitor.mk new file mode 100644 index 00000000..1313491c --- /dev/null +++ b/package/python-visitor/python-visitor.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-visitor +# +################################################################################ + +PYTHON_VISITOR_VERSION = 0.1.3 +PYTHON_VISITOR_SOURCE = visitor-$(PYTHON_VISITOR_VERSION).tar.gz +PYTHON_VISITOR_SITE = https://pypi.python.org/packages/d7/58/785fcd6de4210049da5fafe62301b197f044f3835393594be368547142b0 +PYTHON_VISITOR_SETUP_TYPE = setuptools +PYTHON_VISITOR_LICENSE = MIT +PYTHON_VISITOR_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-watchdog/Config.in b/package/python-watchdog/Config.in new file mode 100644 index 00000000..18f569ee --- /dev/null +++ b/package/python-watchdog/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_WATCHDOG + bool "python-watchdog" + select BR2_PACKAGE_PYTHON_ARGH # runtime + select BR2_PACKAGE_PYTHON_PATHTOOLS # runtime + select BR2_PACKAGE_PYTHON_PYYAML # runtime + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + help + Python API and shell utilities to monitor file system events. + + http://github.com/gorakhargosh/watchdog diff --git a/package/python-watchdog/python-watchdog.hash b/package/python-watchdog/python-watchdog.hash new file mode 100644 index 00000000..06537871 --- /dev/null +++ b/package/python-watchdog/python-watchdog.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/watchdog/json +md5 04cda210c7ffd04582d2466328ee7368 watchdog-2.2.1.tar.gz +sha256 cdcc23c9528601a8a293eb4369cbd14f6b4f34f07ae8769421252e9c22718b6f watchdog-2.2.1.tar.gz +# Locally computed sha256 checksums +sha256 02c8760f988a76e92a9d6cb525456a86f7b0fd1953870dd491de5955cb974d41 COPYING +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/python-watchdog/python-watchdog.mk b/package/python-watchdog/python-watchdog.mk new file mode 100644 index 00000000..9c058e38 --- /dev/null +++ b/package/python-watchdog/python-watchdog.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-watchdog +# +################################################################################ + +PYTHON_WATCHDOG_VERSION = 2.2.1 +PYTHON_WATCHDOG_SOURCE = watchdog-$(PYTHON_WATCHDOG_VERSION).tar.gz +PYTHON_WATCHDOG_SITE = https://files.pythonhosted.org/packages/11/6f/0396d373e039b89c60e23a1a9025edc6dd203121fe0af7d1427e85d5ec98 +PYTHON_WATCHDOG_SETUP_TYPE = setuptools +PYTHON_WATCHDOG_LICENSE = Apache-2.0 +PYTHON_WATCHDOG_LICENSE_FILES = LICENSE COPYING + +$(eval $(python-package)) diff --git a/package/python-wcwidth/Config.in b/package/python-wcwidth/Config.in new file mode 100644 index 00000000..c5cc0223 --- /dev/null +++ b/package/python-wcwidth/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_WCWIDTH + bool "python-wcwidth" + help + This library measures number of Terminal column cells of + wide-character codes. + + https://github.com/jquast/wcwidth diff --git a/package/python-wcwidth/python-wcwidth.hash b/package/python-wcwidth/python-wcwidth.hash new file mode 100644 index 00000000..216182c2 --- /dev/null +++ b/package/python-wcwidth/python-wcwidth.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/wcwidth/json +md5 a07a75f99d316e14838ac760c831ea37 wcwidth-0.2.5.tar.gz +sha256 c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83 wcwidth-0.2.5.tar.gz +# Locally computed sha256 checksums +sha256 70b98a95a2144eb70af8017fa8c6d95ce247e40867436e8bc649e137fe13d21a LICENSE diff --git a/package/python-wcwidth/python-wcwidth.mk b/package/python-wcwidth/python-wcwidth.mk new file mode 100644 index 00000000..a170a8e3 --- /dev/null +++ b/package/python-wcwidth/python-wcwidth.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-wcwidth +# +################################################################################ + +PYTHON_WCWIDTH_VERSION = 0.2.5 +PYTHON_WCWIDTH_SOURCE = wcwidth-$(PYTHON_WCWIDTH_VERSION).tar.gz +PYTHON_WCWIDTH_SITE = https://files.pythonhosted.org/packages/89/38/459b727c381504f361832b9e5ace19966de1a235d73cdbdea91c771a1155 +PYTHON_WCWIDTH_SETUP_TYPE = setuptools +PYTHON_WCWIDTH_LICENSE = MIT +PYTHON_WCWIDTH_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-weasyprint/Config.in b/package/python-weasyprint/Config.in new file mode 100644 index 00000000..65210fb1 --- /dev/null +++ b/package/python-weasyprint/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_PYTHON_WEASYPRINT + bool "python-weasyprint" + depends on BR2_INSTALL_LIBSTDCPP # python-zopfli + select BR2_PACKAGE_PYTHON_BROTLI # runtime + select BR2_PACKAGE_PYTHON_CFFI # runtime + select BR2_PACKAGE_PYTHON_CSSSELECT2 # runtime + select BR2_PACKAGE_PYTHON_FONTTOOLS # runtime + select BR2_PACKAGE_PYTHON_HTML5LIB # runtime + select BR2_PACKAGE_PYTHON_PILLOW # runtime + select BR2_PACKAGE_PYTHON_PYDYF # runtime + select BR2_PACKAGE_PYTHON_PYPHEN # runtime + select BR2_PACKAGE_PYTHON_TINYCSS2 # runtime + select BR2_PACKAGE_PYTHON_ZOPFLI # runtime + help + The Awesome Document Factory. + + https://www.courtbouillon.org/weasyprint + +comment "python-weasyprint needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/python-weasyprint/python-weasyprint.hash b/package/python-weasyprint/python-weasyprint.hash new file mode 100644 index 00000000..c22677ca --- /dev/null +++ b/package/python-weasyprint/python-weasyprint.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/weasyprint/json +md5 2cb135e7c5318bb1652205035f083922 weasyprint-59.0.tar.gz +sha256 223a76636b3744eaa4ab8a2885f50cf46cf8ebb1acb99b5276d02feccf507492 weasyprint-59.0.tar.gz +# Locally computed sha256 checksums +sha256 bfd14eccfa6100575460e685556b183399d4bd335904e3c9521b0116d21c54da LICENSE diff --git a/package/python-weasyprint/python-weasyprint.mk b/package/python-weasyprint/python-weasyprint.mk new file mode 100644 index 00000000..a1e3d23b --- /dev/null +++ b/package/python-weasyprint/python-weasyprint.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-weasyprint +# +################################################################################ + +PYTHON_WEASYPRINT_VERSION = 59.0 +PYTHON_WEASYPRINT_SOURCE = weasyprint-$(PYTHON_WEASYPRINT_VERSION).tar.gz +PYTHON_WEASYPRINT_SITE = https://files.pythonhosted.org/packages/1d/69/11343bbb46d4f2a311677058e19cc2f7bc55a769b64c547a64ea1e2b6045 +PYTHON_WEASYPRINT_SETUP_TYPE = flit +PYTHON_WEASYPRINT_LICENSE = BSD-3-Clause +PYTHON_WEASYPRINT_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-web2py/0001-fix-regexen-and-classname.patch b/package/python-web2py/0001-fix-regexen-and-classname.patch new file mode 100644 index 00000000..f134c3d3 --- /dev/null +++ b/package/python-web2py/0001-fix-regexen-and-classname.patch @@ -0,0 +1,294 @@ +From ad5cbbfdfacdcd3b4663e91a638de022d6e20477 Mon Sep 17 00:00:00 2001 +From: eevelweezel +Date: Mon, 6 Nov 2023 00:17:20 -0600 +Subject: [PATCH] fix regexen and classname + +Upstream: https://github.com/web2py/web2py/commit/ad5cbbfdfacdcd3b4663e91a638de022d6e20477 +[yann.morin.1998@free.fr: backport from upstream] +Signed-off-by: Yann E. MORIN + +--- + applications/admin/controllers/default.py | 64 +++++++++++------------ + gluon/compileapp.py | 4 +- + gluon/contrib/appconfig.py | 2 +- + 3 files changed, 35 insertions(+), 35 deletions(-) + +diff --git a/applications/admin/controllers/default.py b/applications/admin/controllers/default.py +index 88697267..c53a3a76 100644 +--- a/applications/admin/controllers/default.py ++++ b/applications/admin/controllers/default.py +@@ -85,7 +85,7 @@ def safe_open(a, b): + return tmp() + + a_for_check = os.path.abspath(os.path.normpath(a)) +- ++ + web2py_apps_root = os.path.abspath(up(request.folder)) + web2py_deposit_root = os.path.join(up(web2py_apps_root), 'deposit') + +@@ -230,7 +230,7 @@ def site(): + class IS_VALID_APPNAME(object): + + def __call__(self, value): +- if not re.compile('^\w+$').match(value): ++ if not re.compile(r'^\w+$').match(value): + return (value, T('Invalid application name')) + if not request.vars.overwrite and \ + os.path.exists(os.path.join(apath(r=request), value)): +@@ -321,7 +321,7 @@ def site(): + session.flash = T(msg, dict(appname=form_update.vars.name)) + redirect(URL(r=request)) + +- regex = re.compile('^\w+$') ++ regex = re.compile(r'^\w+$') + + if is_manager(): + apps = [a for a in os.listdir(apath(r=request)) if regex.match(a) and +@@ -341,7 +341,7 @@ def site(): + def report_progress(app): + import datetime + progress_file = os.path.join(apath(app, r=request), 'progress.log') +- regex = re.compile('\[(.*?)\][^\:]+\:\s+(\-?\d+)') ++ regex = re.compile(r'\[(.*?)\][^\:]+\:\s+(\-?\d+)') + if not os.path.exists(progress_file): + return [] + matches = regex.findall(open(progress_file, 'r').read()) +@@ -609,7 +609,7 @@ def test(): + if len(request.args) > 1: + file = request.args[1] + else: +- file = '.*\.py' ++ file = r'.*\.py' + + controllers = listdir( + apath('%s/controllers/' % app, r=request), file + '$') +@@ -869,12 +869,12 @@ def todolist(): + app_path = apath('%(app)s' % {'app': app}, r=request) + dirs = ['models', 'controllers', 'modules', 'private'] + +- def listfiles(app, dir, regexp='.*\.py$'): ++ def listfiles(app, dir, regexp=r'.*\.py$'): + files = sorted(listdir(apath('%(app)s/%(dir)s/' % {'app': app, 'dir': dir}, r=request), regexp)) + files = [x.replace(os.path.sep, '/') for x in files if not x.endswith('.bak')] + return files + +- pattern = '#\s*(todo)+\s+(.*)' ++ pattern = r'#\s*(todo)+\s+(.*)' + regex = re.compile(pattern, re.IGNORECASE) + + output = [] +@@ -1126,7 +1126,7 @@ def design(): + redirect(URL('site')) + + # Get all models +- models = listdir(apath('%s/models/' % app, r=request), '.*\.py$') ++ models = listdir(apath('%s/models/' % app, r=request), r'.*\.py$') + models = [x.replace('\\', '/') for x in models] + defines = {} + for m in models: +@@ -1136,7 +1136,7 @@ def design(): + + # Get all controllers + controllers = sorted( +- listdir(apath('%s/controllers/' % app, r=request), '.*\.py$')) ++ listdir(apath('%s/controllers/' % app, r=request), r'.*\.py$')) + controllers = [x.replace('\\', '/') for x in controllers] + functions = {} + for c in controllers: +@@ -1149,7 +1149,7 @@ def design(): + + # Get all views + views = sorted( +- listdir(apath('%s/views/' % app, r=request), '[\w/\-]+(\.\w+)+$')) ++ listdir(apath('%s/views/' % app, r=request), r'[\w/\-]+(\.\w+)+$')) + views = [x.replace('\\', '/') for x in views if not x.endswith('.bak')] + extend = {} + include = {} +@@ -1164,17 +1164,17 @@ def design(): + include[c] = [i[1] for i in items] + + # Get all modules +- modules = listdir(apath('%s/modules/' % app, r=request), '.*\.py$') ++ modules = listdir(apath('%s/modules/' % app, r=request), r'.*\.py$') + modules = modules = [x.replace('\\', '/') for x in modules] + modules.sort() + + # Get all private files +- privates = listdir(apath('%s/private/' % app, r=request), '[^\.#].*') ++ privates = listdir(apath('%s/private/' % app, r=request), r'[^\.#].*') + privates = [x.replace('\\', '/') for x in privates] + privates.sort() + + # Get all static files +- statics = listdir(apath('%s/static/' % app, r=request), '[^\.#].*', ++ statics = listdir(apath('%s/static/' % app, r=request), r'[^\.#].*', + maxnum=MAXNFILES) + statics = [x.replace(os.path.sep, '/') for x in statics] + statics.sort() +@@ -1267,7 +1267,7 @@ def plugin(): + redirect(URL('site')) + + # Get all models +- models = listdir(apath('%s/models/' % app, r=request), '.*\.py$') ++ models = listdir(apath('%s/models/' % app, r=request), r'.*\.py$') + models = [x.replace('\\', '/') for x in models] + defines = {} + for m in models: +@@ -1277,7 +1277,7 @@ def plugin(): + + # Get all controllers + controllers = sorted( +- listdir(apath('%s/controllers/' % app, r=request), '.*\.py$')) ++ listdir(apath('%s/controllers/' % app, r=request), r'.*\.py$')) + controllers = [x.replace('\\', '/') for x in controllers] + functions = {} + for c in controllers: +@@ -1290,7 +1290,7 @@ def plugin(): + + # Get all views + views = sorted( +- listdir(apath('%s/views/' % app, r=request), '[\w/\-]+\.\w+$')) ++ listdir(apath('%s/views/' % app, r=request), r'[\w/\-]+\.\w+$')) + views = [x.replace('\\', '/') for x in views] + extend = {} + include = {} +@@ -1304,17 +1304,17 @@ def plugin(): + include[c] = [i[1] for i in items] + + # Get all modules +- modules = listdir(apath('%s/modules/' % app, r=request), '.*\.py$') ++ modules = listdir(apath('%s/modules/' % app, r=request), r'.*\.py$') + modules = modules = [x.replace('\\', '/') for x in modules] + modules.sort() + + # Get all private files +- privates = listdir(apath('%s/private/' % app, r=request), '[^\.#].*') ++ privates = listdir(apath('%s/private/' % app, r=request), r'[^\.#].*') + privates = [x.replace('\\', '/') for x in privates] + privates.sort() + + # Get all static files +- statics = listdir(apath('%s/static/' % app, r=request), '[^\.#].*', ++ statics = listdir(apath('%s/static/' % app, r=request), r'[^\.#].*', + maxnum=MAXNFILES) + statics = [x.replace(os.path.sep, '/') for x in statics] + statics.sort() +@@ -1331,7 +1331,7 @@ def plugin(): + safe_write(crontab, '#crontab') + + def filter_plugins(items): +- regex = re.compile('^plugin_' + plugin + '(/.*|\..*)?$') ++ regex = re.compile(r'^plugin_' + plugin + r'(/.*|\..*)?$') + return [item for item in items if item and regex.match(item)] + + return dict(app=app, +@@ -1363,14 +1363,14 @@ def create_file(): + request.vars.location += request.vars.dir + '/' + app = get_app(name=request.vars.location.split('/')[0]) + path = apath(request.vars.location, r=request) +- filename = re.sub('[^\w./-]+', '_', request.vars.filename) ++ filename = re.sub(r'[^\w./-]+', '_', request.vars.filename) + if path[-7:] == '/rules/': + # Handle plural rules files + if len(filename) == 0: + raise SyntaxError + if not filename[-3:] == '.py': + filename += '.py' +- lang = re.match('^plural_rules-(.*)\.py$', filename).group(1) ++ lang = re.match(r'^plural_rules-(.*)\.py$', filename).group(1) + langinfo = read_possible_languages(apath(app, r=request))[lang] + text = dedent(""" + #!/usr/bin/env python +@@ -1518,7 +1518,7 @@ def create_file(): + redirect(request.vars.sender + anchor) + + +-def listfiles(app, dir, regexp='.*\.py$'): ++def listfiles(app, dir, regexp=r'.*\.py$'): + files = sorted( + listdir(apath('%(app)s/%(dir)s/' % {'app': app, 'dir': dir}, r=request), regexp)) + files = [x.replace('\\', '/') for x in files if not x.endswith('.bak')] +@@ -1533,12 +1533,12 @@ def editfile(path, file, vars={}, app=None): + + def files_menu(): + app = request.vars.app or 'welcome' +- dirs = [{'name': 'models', 'reg': '.*\.py$'}, +- {'name': 'controllers', 'reg': '.*\.py$'}, +- {'name': 'views', 'reg': '[\w/\-]+(\.\w+)+$'}, +- {'name': 'modules', 'reg': '.*\.py$'}, +- {'name': 'static', 'reg': '[^\.#].*'}, +- {'name': 'private', 'reg': '.*\.py$'}] ++ dirs = [{'name': 'models', 'reg': r'.*\.py$'}, ++ {'name': 'controllers', 'reg': r'.*\.py$'}, ++ {'name': 'views', 'reg': r'[\w/\-]+(\.\w+)+$'}, ++ {'name': 'modules', 'reg': r'.*\.py$'}, ++ {'name': 'static', 'reg': r'[^\.#].*'}, ++ {'name': 'private', 'reg': r'.*\.py$'}] + result_files = [] + for dir in dirs: + result_files.append(TAG[''](LI(dir['name'], _class="nav-header component", _onclick="collapse('" + dir['name'] + "_files');"), +@@ -1559,7 +1559,7 @@ def upload_file(): + path = apath(request.vars.location, r=request) + + if request.vars.filename: +- filename = re.sub('[^\w\./]+', '_', request.vars.filename) ++ filename = re.sub(r'[^\w\./]+', '_', request.vars.filename) + else: + filename = os.path.split(request.vars.file.filename)[-1] + +@@ -1628,7 +1628,7 @@ def errors(): + + hash2error = dict() + +- for fn in listdir(errors_path, '^[a-fA-F0-9.\-]+$'): ++ for fn in listdir(errors_path, r'^[a-fA-F0-9.\-]+$'): + fullpath = os.path.join(errors_path, fn) + if not os.path.isfile(fullpath): + continue +@@ -1727,7 +1727,7 @@ def errors(): + func = lambda p: os.stat(apath('%s/errors/%s' % + (app, p), r=request)).st_mtime + tickets = sorted( +- listdir(apath('%s/errors/' % app, r=request), '^\w.*'), ++ listdir(apath('%s/errors/' % app, r=request), r'^\w.*'), + key=func, + reverse=True) + +diff --git a/gluon/compileapp.py b/gluon/compileapp.py +index 45fa8a0e..be0446e1 100644 +--- a/gluon/compileapp.py ++++ b/gluon/compileapp.py +@@ -14,7 +14,7 @@ Note: + + import copy + import fnmatch +-import imp ++from importlib import import_module + import marshal + import os + import py_compile +@@ -345,7 +345,7 @@ def local_import_aux(name, reload_force=False, app="welcome"): + """ + items = name.replace("/", ".") + name = "applications.%s.modules.%s" % (app, items) +- module = __import__(name) ++ module = import_module(name) + for item in name.split(".")[1:]: + module = getattr(module, item) + if reload_force: +diff --git a/gluon/contrib/appconfig.py b/gluon/contrib/appconfig.py +index 1160e08a..2bf81841 100644 +--- a/gluon/contrib/appconfig.py ++++ b/gluon/contrib/appconfig.py +@@ -120,7 +120,7 @@ class AppConfigLoader(object): + self.read_config() + + def read_config_ini(self): +- config = configparser.SafeConfigParser() ++ config = configparser.RawConfigParser() + config.read(self.file) + settings = {} + for section in config.sections(): +-- +2.45.1 + diff --git a/package/python-web2py/Config.in b/package/python-web2py/Config.in new file mode 100644 index 00000000..e4308634 --- /dev/null +++ b/package/python-web2py/Config.in @@ -0,0 +1,40 @@ +config BR2_PACKAGE_PYTHON_WEB2PY + bool "python-web2py" + select BR2_PACKAGE_PYTHON_PYDAL # runtime + select BR2_PACKAGE_PYTHON3_ZLIB # runtime + select BR2_PACKAGE_PYTHON3_PYEXPAT # runtime + select BR2_PACKAGE_PYTHON3_SQLITE # runtime + select BR2_PACKAGE_PYTHON_YATL # runtime + help + web2py is a free open source full-stack framework for rapid + development of fast, scalable, secure and portable + database-driven web-based applications. + + http://web2py.com + +if BR2_PACKAGE_PYTHON_WEB2PY + +config BR2_PACKAGE_PYTHON_WEB2PY_INSTALL_ADMIN + bool "install admin panel application" + default y + select BR2_PACKAGE_HOST_PYTHON3 + # web2py will use pydal to generate the password (below), and that + # uses hashlib.pbkdf2_hmac(), which is only available when python + # is built with openssl since 3.12 (previously, there was a slow + # pure-python fallback, dropped in 3.12). + select BR2_PACKAGE_HOST_PYTHON3_SSL + help + This option install web2py admin panel application. + It can be removed to save space on embedded systems. + +if BR2_PACKAGE_PYTHON_WEB2PY_INSTALL_ADMIN + +config BR2_PACKAGE_PYTHON_WEB2PY_PASSWORD + string "admin panel password" + default "web2py" + help + Set the admin panel password. + +endif + +endif diff --git a/package/python-web2py/S51web2py b/package/python-web2py/S51web2py new file mode 100644 index 00000000..8d229e16 --- /dev/null +++ b/package/python-web2py/S51web2py @@ -0,0 +1,25 @@ +#!/bin/sh + +case "$1" in + start) + printf "Starting web2py: " + start-stop-daemon -S -q -m -p /run/web2py.pid \ + -c www-data \ + -b -x /var/www/web2py/web2py.py \ + -- --nogui -a '""' -i 0.0.0.0 -p 8000 + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping web2py: " + start-stop-daemon -K -q -p /run/web2py.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart) + "$0" stop + sleep 1 + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + ;; +esac diff --git a/package/python-web2py/python-web2py.hash b/package/python-web2py/python-web2py.hash new file mode 100644 index 00000000..1b4d8f56 --- /dev/null +++ b/package/python-web2py/python-web2py.hash @@ -0,0 +1,3 @@ +# sha256 locally computed +sha256 d5d79f6260ec9f53f90447ad59313a8fac0571fce0018aa5f6fcf95d28c04382 python-web2py-2.26.1.tar.gz +sha256 2aae96826184a492bc799add49aed7b29036e7aba2d2294fb65053bd30fe55fe LICENSE diff --git a/package/python-web2py/python-web2py.mk b/package/python-web2py/python-web2py.mk new file mode 100644 index 00000000..fe7774fc --- /dev/null +++ b/package/python-web2py/python-web2py.mk @@ -0,0 +1,76 @@ +################################################################################ +# +# python-web2py +# +################################################################################ + +PYTHON_WEB2PY_VERSION = 2.26.1 +PYTHON_WEB2PY_SITE = $(call github,web2py,web2py,v$(PYTHON_WEB2PY_VERSION)) +PYTHON_WEB2PY_LICENSE = LGPL-3.0 +PYTHON_WEB2PY_LICENSE_FILES = LICENSE +PYTHON_WEB2PY_CPE_ID_VENDOR = web2py +PYTHON_WEB2PY_CPE_ID_PRODUCT = web2py +PYTHON_WEB2PY_DEPENDENCIES = host-python3 python3 \ + host-python-pydal host-python-yatl + +PYTHON_WEB2PY_EXCLUSIONS = \ + welcome.w2p \ + applications/examples \ + applications/welcome \ + deposit \ + docs \ + examples \ + extras \ + handlers \ + scripts \ + ABOUT \ + anyserver.py \ + CHANGELOG \ + Makefile \ + MANIFEST.in \ + README.markdown \ + setup.py \ + tox.ini + +define PYTHON_WEB2PY_GENERATE_PASSWORD + $(HOST_DIR)/bin/python -c 'import os; \ + os.chdir("$(@D)"); \ + from gluon.main import save_password; \ + save_password($(BR2_PACKAGE_PYTHON_WEB2PY_PASSWORD),8000)' +endef + +ifeq ($(BR2_PACKAGE_PYTHON_WEB2PY_INSTALL_ADMIN),y) +PYTHON_WEB2PY_POST_BUILD_HOOKS += PYTHON_WEB2PY_GENERATE_PASSWORD +else +PYTHON_WEB2PY_EXCLUSIONS += applications/admin +endif + +define PYTHON_WEB2PY_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/var/www/web2py + rsync -a $(@D)/ $(TARGET_DIR)/var/www/web2py/ \ + $(addprefix --exclude=,$(PYTHON_WEB2PY_EXCLUSIONS)) +endef + +define PYTHON_WEB2PY_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/python-web2py/S51web2py \ + $(TARGET_DIR)/etc/init.d/S51web2py +endef + +define PYTHON_WEB2PY_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/python-web2py/web2py.service \ + $(TARGET_DIR)/usr/lib/systemd/system/web2py.service +endef + +# www-data user and group are used for web2py. Because these user and group +# are already set by buildroot, it is not necessary to redefine them. +# See system/skeleton/etc/passwd +# username: www-data uid: 33 +# groupname: www-data gid: 33 +# +# So, we just need to create the directories used by web2py with the right +# ownership. +define PYTHON_WEB2PY_PERMISSIONS + /var/www/web2py r 750 33 33 - - - - - +endef + +$(eval $(generic-package)) diff --git a/package/python-web2py/web2py.service b/package/python-web2py/web2py.service new file mode 100644 index 00000000..0274bd8c --- /dev/null +++ b/package/python-web2py/web2py.service @@ -0,0 +1,11 @@ +[Unit] +Description=Web2py daemon +After=network.target + +[Service] +Type=simple +ExecStart=/var/www/web2py/web2py.py --nogui -a '' -i 0.0.0.0 -p 8000 +User=www-data + +[Install] +WantedBy=multi-user.target diff --git a/package/python-webargs/Config.in b/package/python-webargs/Config.in new file mode 100644 index 00000000..f2332d3b --- /dev/null +++ b/package/python-webargs/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_WEBARGS + bool "python-webargs" + select BR2_PACKAGE_PYTHON_MARSHMALLOW # runtime + select BR2_PACKAGE_PYTHON_PACKAGING # runtime + help + Declarative parsing and validation of HTTP request objects, + with built-in support for popular web frameworks, including + Flask, Django, Bottle, Tornado, Pyramid, Falcon, and + aiohttp. + + https://github.com/marshmallow-code/webargs diff --git a/package/python-webargs/python-webargs.hash b/package/python-webargs/python-webargs.hash new file mode 100644 index 00000000..10bb3651 --- /dev/null +++ b/package/python-webargs/python-webargs.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/webargs/json +md5 9fff29294a5db748eca791da2b93e370 webargs-8.2.0.tar.gz +sha256 99d68940c452e07726485a15fef43f12f8ae6c0c5b391bcba76065d4527fb85d webargs-8.2.0.tar.gz +# Locally computed sha256 checksums +sha256 5973e5dcc20b65e4eb4b4acdf273bb78a18522914ab626f496f1b070f7e6294d LICENSE diff --git a/package/python-webargs/python-webargs.mk b/package/python-webargs/python-webargs.mk new file mode 100644 index 00000000..ce270842 --- /dev/null +++ b/package/python-webargs/python-webargs.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-webargs +# +################################################################################ + +PYTHON_WEBARGS_VERSION = 8.2.0 +PYTHON_WEBARGS_SOURCE = webargs-$(PYTHON_WEBARGS_VERSION).tar.gz +PYTHON_WEBARGS_SITE = https://files.pythonhosted.org/packages/4b/7d/fece8e6547b3edde8953b1c84a63da02e1a88efcb9d7d485e4d1b25d9c47 +PYTHON_WEBARGS_SETUP_TYPE = setuptools +PYTHON_WEBARGS_LICENSE = MIT +PYTHON_WEBARGS_LICENSE_FILES = LICENSE +PYTHON_WEBARGS_CPE_ID_VENDOR = webargs_project +PYTHON_WEBARGS_CPE_ID_PRODUCT = webargs + +$(eval $(python-package)) diff --git a/package/python-webencodings/Config.in b/package/python-webencodings/Config.in new file mode 100644 index 00000000..52c72354 --- /dev/null +++ b/package/python-webencodings/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_WEBENCODINGS + bool "python-webencodings" + help + Character encoding aliases for legacy web content. + + https://github.com/SimonSapin/python-webencodings diff --git a/package/python-webencodings/python-webencodings.hash b/package/python-webencodings/python-webencodings.hash new file mode 100644 index 00000000..47577a6d --- /dev/null +++ b/package/python-webencodings/python-webencodings.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/webencodings/json +md5 32f6e261d52e57bf7e1c4d41546d15b8 webencodings-0.5.1.tar.gz +sha256 b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923 webencodings-0.5.1.tar.gz +# Locally computed sha256 checksumms +sha256 c27693b0174d6d04dafd0242857ae72763f5404b675972c777fd865bc3c0abe1 PKG-INFO diff --git a/package/python-webencodings/python-webencodings.mk b/package/python-webencodings/python-webencodings.mk new file mode 100644 index 00000000..63c6d373 --- /dev/null +++ b/package/python-webencodings/python-webencodings.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-webencodings +# +################################################################################ + +PYTHON_WEBENCODINGS_VERSION = 0.5.1 +PYTHON_WEBENCODINGS_SOURCE = webencodings-$(PYTHON_WEBENCODINGS_VERSION).tar.gz +PYTHON_WEBENCODINGS_SITE = https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47 +PYTHON_WEBENCODINGS_SETUP_TYPE = setuptools +PYTHON_WEBENCODINGS_LICENSE = BSD-3-Clause +PYTHON_WEBENCODINGS_LICENSE_FILES = PKG-INFO + +$(eval $(python-package)) diff --git a/package/python-webob/Config.in b/package/python-webob/Config.in new file mode 100644 index 00000000..d3397587 --- /dev/null +++ b/package/python-webob/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_WEBOB + bool "python-webob" + select BR2_PACKAGE_PYTHON3_ZLIB # runtime + help + WSGI request and response object. + + http://webob.org/ diff --git a/package/python-webob/python-webob.hash b/package/python-webob/python-webob.hash new file mode 100644 index 00000000..a46c1dbc --- /dev/null +++ b/package/python-webob/python-webob.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/webob/json +md5 10191c69fa5a2c00f3b9abfb8937b415 WebOb-1.8.7.tar.gz +sha256 b64ef5141be559cfade448f044fa45c2260351edcb6a8ef6b7e00c7dcef0c323 WebOb-1.8.7.tar.gz +# Locally computed sha256 checksums +sha256 27bc4919e7e9e6b6cda40644517ca74d32203e32fba89ef832aba1ed93e457b3 docs/license.txt diff --git a/package/python-webob/python-webob.mk b/package/python-webob/python-webob.mk new file mode 100644 index 00000000..11ba1044 --- /dev/null +++ b/package/python-webob/python-webob.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-webob +# +################################################################################ + +PYTHON_WEBOB_VERSION = 1.8.7 +PYTHON_WEBOB_SOURCE = WebOb-$(PYTHON_WEBOB_VERSION).tar.gz +PYTHON_WEBOB_SITE = https://files.pythonhosted.org/packages/c7/45/ee5f034fb4ebe3236fa49e5a4fcbc54444dd22ecf33079cf56f9606d479d +PYTHON_WEBOB_SETUP_TYPE = setuptools +PYTHON_WEBOB_LICENSE = MIT +PYTHON_WEBOB_LICENSE_FILES = docs/license.txt + +$(eval $(python-package)) diff --git a/package/python-webpy/Config.in b/package/python-webpy/Config.in new file mode 100644 index 00000000..ed784095 --- /dev/null +++ b/package/python-webpy/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_WEBPY + bool "python-webpy" + select BR2_PACKAGE_PYTHON_CHEROOT # runtime + select BR2_PACKAGE_PYTHON_MARKDOWN # runtime + help + web.py is a web framework for Python that is as simple as it + is powerful. + + http://webpy.org/ diff --git a/package/python-webpy/python-webpy.hash b/package/python-webpy/python-webpy.hash new file mode 100644 index 00000000..540771a2 --- /dev/null +++ b/package/python-webpy/python-webpy.hash @@ -0,0 +1,3 @@ +# md5, sha256 from https://pypi.org/pypi/web.py/json +md5 cd2c0296ceffa1acb96ae5315214eb42 web.py-0.62.tar.gz +sha256 5ce684caa240654cae5950da8b4b7bc178812031e08f990518d072bd44ab525e web.py-0.62.tar.gz diff --git a/package/python-webpy/python-webpy.mk b/package/python-webpy/python-webpy.mk new file mode 100644 index 00000000..06d4ae03 --- /dev/null +++ b/package/python-webpy/python-webpy.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-webpy +# +################################################################################ + +PYTHON_WEBPY_VERSION = 0.62 +PYTHON_WEBPY_SOURCE = web.py-$(PYTHON_WEBPY_VERSION).tar.gz +PYTHON_WEBPY_SITE = https://files.pythonhosted.org/packages/cd/6e/338a060bb5b52ee8229bdada422eaa5f71b13f8d33467f37f870ed2cae4b +PYTHON_WEBPY_SETUP_TYPE = setuptools +PYTHON_WEBPY_LICENSE = Public Domain + +$(eval $(python-package)) diff --git a/package/python-websocket-client/Config.in b/package/python-websocket-client/Config.in new file mode 100644 index 00000000..f9159054 --- /dev/null +++ b/package/python-websocket-client/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_WEBSOCKET_CLIENT + bool "python-websocket-client" + select BR2_PACKAGE_PYTHON3_SSL # runtime + help + WebSocket client for python. hybi13 is supported. + + https://github.com/websocket-client/websocket-client.git diff --git a/package/python-websocket-client/python-websocket-client.hash b/package/python-websocket-client/python-websocket-client.hash new file mode 100644 index 00000000..5da77802 --- /dev/null +++ b/package/python-websocket-client/python-websocket-client.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/websocket-client/json +md5 26d1d8db59c9417570d8ec73ace1687b websocket-client-1.4.2.tar.gz +sha256 d6e8f90ca8e2dd4e8027c4561adeb9456b54044312dba655e7cae652ceb9ae59 websocket-client-1.4.2.tar.gz +# Locally computed sha256 checksums +sha256 638eb70dcc4af2e6d8388de0636ced399f7c24716e11b8573a6b06f879e80691 LICENSE diff --git a/package/python-websocket-client/python-websocket-client.mk b/package/python-websocket-client/python-websocket-client.mk new file mode 100644 index 00000000..79cde7e5 --- /dev/null +++ b/package/python-websocket-client/python-websocket-client.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-websocket-client +# +################################################################################ + +PYTHON_WEBSOCKET_CLIENT_VERSION = 1.4.2 +PYTHON_WEBSOCKET_CLIENT_SOURCE = websocket-client-$(PYTHON_WEBSOCKET_CLIENT_VERSION).tar.gz +PYTHON_WEBSOCKET_CLIENT_SITE = https://files.pythonhosted.org/packages/75/af/1d13b93e7a21aca7f8ab8645fcfcfad21fc39716dc9dce5dc2a97f73ff78 +PYTHON_WEBSOCKET_CLIENT_SETUP_TYPE = setuptools +PYTHON_WEBSOCKET_CLIENT_LICENSE = Apache-2.0 +PYTHON_WEBSOCKET_CLIENT_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-websockets/Config.in b/package/python-websockets/Config.in new file mode 100644 index 00000000..60495b62 --- /dev/null +++ b/package/python-websockets/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_WEBSOCKETS + bool "python-websockets" + select BR2_PACKAGE_PYTHON3_ZLIB + select BR2_PACKAGE_PYTHON3_SSL + help + An implementation of the WebSocket Protocol (RFC 6455 & + 7692). + + https://github.com/aaugustin/websockets diff --git a/package/python-websockets/python-websockets.hash b/package/python-websockets/python-websockets.hash new file mode 100644 index 00000000..8d0bda50 --- /dev/null +++ b/package/python-websockets/python-websockets.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/websockets/json +md5 49d033c8236aa56ba2524f65570a27c5 websockets-12.0.tar.gz +sha256 81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b websockets-12.0.tar.gz +# Locally computed sha256 checksums +sha256 3d6a0c050d8bec52fabad502e45fb25bd02bcadbd70dea34d447b6a0ff4e6da8 LICENSE diff --git a/package/python-websockets/python-websockets.mk b/package/python-websockets/python-websockets.mk new file mode 100644 index 00000000..2b8761c0 --- /dev/null +++ b/package/python-websockets/python-websockets.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-websockets +# +################################################################################ + +PYTHON_WEBSOCKETS_VERSION = 12.0 +PYTHON_WEBSOCKETS_SOURCE = websockets-$(PYTHON_WEBSOCKETS_VERSION).tar.gz +PYTHON_WEBSOCKETS_SITE = https://files.pythonhosted.org/packages/2e/62/7a7874b7285413c954a4cca3c11fd851f11b2fe5b4ae2d9bee4f6d9bdb10 +PYTHON_WEBSOCKETS_SETUP_TYPE = setuptools +PYTHON_WEBSOCKETS_LICENSE = BSD-3-Clause +PYTHON_WEBSOCKETS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-werkzeug/Config.in b/package/python-werkzeug/Config.in new file mode 100644 index 00000000..27b2fdea --- /dev/null +++ b/package/python-werkzeug/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_WERKZEUG + bool "python-werkzeug" + select BR2_PACKAGE_PYTHON3_ZLIB # runtime + help + Werkzeug is a WSGI utility library for Python. It's widely + used and BSD licensed. + + http://werkzeug.pocoo.org/ diff --git a/package/python-werkzeug/python-werkzeug.hash b/package/python-werkzeug/python-werkzeug.hash new file mode 100644 index 00000000..34adc670 --- /dev/null +++ b/package/python-werkzeug/python-werkzeug.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/werkzeug/json +md5 3bb49cd2f2b51a1c638532e9a935e207 werkzeug-2.3.8.tar.gz +sha256 554b257c74bbeb7a0d254160a4f8ffe185243f52a52035060b761ca62d977f03 werkzeug-2.3.8.tar.gz +# Locally computed sha256 checksums +sha256 3b49dcee4105eb37bac10faf1be260408fe85d252b8e9df2e0979fc1e094437b LICENSE.rst diff --git a/package/python-werkzeug/python-werkzeug.mk b/package/python-werkzeug/python-werkzeug.mk new file mode 100644 index 00000000..e8ef32bb --- /dev/null +++ b/package/python-werkzeug/python-werkzeug.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-werkzeug +# +################################################################################ + +PYTHON_WERKZEUG_VERSION = 2.3.8 +PYTHON_WERKZEUG_SOURCE = werkzeug-$(PYTHON_WERKZEUG_VERSION).tar.gz +PYTHON_WERKZEUG_SITE = https://files.pythonhosted.org/packages/3d/4b/d746f1000782c89d6c97df9df43ba8f4d126038608843d3560ae88d201b5 +PYTHON_WERKZEUG_SETUP_TYPE = setuptools +PYTHON_WERKZEUG_LICENSE = BSD-3-Clause +PYTHON_WERKZEUG_LICENSE_FILES = LICENSE.rst +PYTHON_WERKZEUG_CPE_ID_VENDOR = palletsprojects +PYTHON_WERKZEUG_CPE_ID_PRODUCT = werkzeug + +$(eval $(python-package)) diff --git a/package/python-wheel/python-wheel.hash b/package/python-wheel/python-wheel.hash new file mode 100644 index 00000000..377a85c8 --- /dev/null +++ b/package/python-wheel/python-wheel.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/wheel/json +md5 ec5004c46d1905da98bb5bc1a10ddd21 wheel-0.40.0.tar.gz +sha256 cd1196f3faee2b31968d626e1731c94f99cbdb67cf5a46e4f5656cbee7738873 wheel-0.40.0.tar.gz +# Locally computed sha256 checksums +sha256 30c23618679108f3e8ea1d2a658c7ca417bdfc891c98ef1a89fa4ff0c9828654 LICENSE.txt diff --git a/package/python-wheel/python-wheel.mk b/package/python-wheel/python-wheel.mk new file mode 100644 index 00000000..32099552 --- /dev/null +++ b/package/python-wheel/python-wheel.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-wheel +# +################################################################################ + +PYTHON_WHEEL_VERSION = 0.40.0 +PYTHON_WHEEL_SOURCE = wheel-$(PYTHON_WHEEL_VERSION).tar.gz +PYTHON_WHEEL_SITE = https://files.pythonhosted.org/packages/fc/ef/0335f7217dd1e8096a9e8383e1d472aa14717878ffe07c4772e68b6e8735 +PYTHON_WHEEL_SETUP_TYPE = flit +PYTHON_WHEEL_LICENSE = MIT +PYTHON_WHEEL_LICENSE_FILES = LICENSE.txt +PYTHON_WHEEL_CPE_ID_VENDOR = wheel_project +PYTHON_WHEEL_CPE_ID_PRODUCT = wheel + +$(eval $(host-python-package)) diff --git a/package/python-whoosh/Config.in b/package/python-whoosh/Config.in new file mode 100644 index 00000000..e1fb1449 --- /dev/null +++ b/package/python-whoosh/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_WHOOSH + bool "python-whoosh" + select BR2_PACKAGE_PYTHON3_ZLIB # 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/package/python-whoosh/python-whoosh.hash b/package/python-whoosh/python-whoosh.hash new file mode 100644 index 00000000..a1eced0e --- /dev/null +++ b/package/python-whoosh/python-whoosh.hash @@ -0,0 +1,5 @@ +# md5 from https://pypi.python.org/pypi/whoosh/json +md5 c2710105f20b3e29936bd2357383c325 Whoosh-2.7.4.tar.gz +# Locally computed +sha256 7ca5633dbfa9e0e0fa400d3151a8a0c4bec53bd2ecedc0a67705b17565c31a83 Whoosh-2.7.4.tar.gz +sha256 464ef68037a0e5545e4716b4ff99f3f85ca89cf9e9a7ecfd7a02039ba1c34a90 LICENSE.txt diff --git a/package/python-whoosh/python-whoosh.mk b/package/python-whoosh/python-whoosh.mk new file mode 100644 index 00000000..a100c446 --- /dev/null +++ b/package/python-whoosh/python-whoosh.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-whoosh +# +################################################################################ + +PYTHON_WHOOSH_VERSION = 2.7.4 +PYTHON_WHOOSH_SOURCE = Whoosh-$(PYTHON_WHOOSH_VERSION).tar.gz +PYTHON_WHOOSH_SITE = https://pypi.python.org/packages/25/2b/6beed2107b148edc1321da0d489afc4617b9ed317ef7b72d4993cad9b684 +PYTHON_WHOOSH_SETUP_TYPE = setuptools +PYTHON_WHOOSH_LICENSE = BSD-3-Clause +PYTHON_WHOOSH_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-wrapt/Config.in b/package/python-wrapt/Config.in new file mode 100644 index 00000000..da315c9a --- /dev/null +++ b/package/python-wrapt/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_WRAPT + bool "python-wrapt" + help + Module for decorators, wrappers and monkey patching. + + https://github.com/GrahamDumpleton/wrapt diff --git a/package/python-wrapt/python-wrapt.hash b/package/python-wrapt/python-wrapt.hash new file mode 100644 index 00000000..cb62e19a --- /dev/null +++ b/package/python-wrapt/python-wrapt.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/wrapt/json +md5 6e7340264f038efdefcba707250c91c2 wrapt-1.14.1.tar.gz +sha256 380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d wrapt-1.14.1.tar.gz +# Locally computed sha256 checksums +sha256 77d2a9159cffe12473f539a71a3e741f35117e61bfd005ebd60c3a1778e2c1f1 LICENSE diff --git a/package/python-wrapt/python-wrapt.mk b/package/python-wrapt/python-wrapt.mk new file mode 100644 index 00000000..406f6c3a --- /dev/null +++ b/package/python-wrapt/python-wrapt.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-wrapt +# +################################################################################ + +PYTHON_WRAPT_VERSION = 1.14.1 +PYTHON_WRAPT_SOURCE = wrapt-$(PYTHON_WRAPT_VERSION).tar.gz +PYTHON_WRAPT_SITE = https://files.pythonhosted.org/packages/11/eb/e06e77394d6cf09977d92bff310cb0392930c08a338f99af6066a5a98f92 +PYTHON_WRAPT_SETUP_TYPE = setuptools +PYTHON_WRAPT_LICENSE = BSD-2-Clause +PYTHON_WRAPT_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-ws4py/0001-Adjust-ws4py-for-Python-3.7-syntax.patch b/package/python-ws4py/0001-Adjust-ws4py-for-Python-3.7-syntax.patch new file mode 100644 index 00000000..12dac30d --- /dev/null +++ b/package/python-ws4py/0001-Adjust-ws4py-for-Python-3.7-syntax.patch @@ -0,0 +1,55 @@ +From dfe6f65b7078315c32cebb727e9c47ead7603475 Mon Sep 17 00:00:00 2001 +From: Asaf Kahlon +Date: Sun, 13 Oct 2019 16:44:44 +0300 +Subject: [PATCH] Adjust ws4py for Python 3.7 syntax + +Since Python 3.7, "async" has become a keyword and cannot be used. +Thus, instead of asyncio.async we will use asyncio.ensure_future. + +There's also a pull request with this change: +https://github.com/Lawouach/WebSocket-for-Python/pull/245 + +Signed-off-by: Asaf Kahlon +--- + ws4py/async_websocket.py | 4 ++-- + ws4py/server/tulipserver.py | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/ws4py/async_websocket.py b/ws4py/async_websocket.py +index 9e2a4c7..ea296b4 100644 +--- a/ws4py/async_websocket.py ++++ b/ws4py/async_websocket.py +@@ -84,7 +84,7 @@ class WebSocket(_WebSocket): + def closeit(): + yield from self.proto.writer.drain() + self.proto.writer.close() +- asyncio.async(closeit()) ++ asyncio.ensure_future(closeit()) + + def _write(self, data): + """ +@@ -94,7 +94,7 @@ class WebSocket(_WebSocket): + def sendit(data): + self.proto.writer.write(data) + yield from self.proto.writer.drain() +- asyncio.async(sendit(data)) ++ asyncio.ensure_future(sendit(data)) + + @asyncio.coroutine + def run(self): +diff --git a/ws4py/server/tulipserver.py b/ws4py/server/tulipserver.py +index 2786c16..85312a2 100644 +--- a/ws4py/server/tulipserver.py ++++ b/ws4py/server/tulipserver.py +@@ -40,7 +40,7 @@ class WebSocketProtocol(asyncio.StreamReaderProtocol): + #self.stream.set_transport(transport) + asyncio.StreamReaderProtocol.connection_made(self, transport) + # Let make it concurrent for others to tag along +- f = asyncio.async(self.handle_initial_handshake()) ++ f = asyncio.ensure_future(self.handle_initial_handshake()) + f.add_done_callback(self.terminated) + + @property +-- +2.20.1 + diff --git a/package/python-ws4py/Config.in b/package/python-ws4py/Config.in new file mode 100644 index 00000000..f4763a80 --- /dev/null +++ b/package/python-ws4py/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_WS4PY + bool "python-ws4py" + help + ws4py is a Python package implementing the WebSocket protocol + as defined in RFC 6455. + + https://ws4py.readthedocs.org diff --git a/package/python-ws4py/python-ws4py.hash b/package/python-ws4py/python-ws4py.hash new file mode 100644 index 00000000..1e809fee --- /dev/null +++ b/package/python-ws4py/python-ws4py.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/ws4py/json +md5 68e0cfae9659dd059ff7e7a8218af548 ws4py-0.5.1.tar.gz +sha256 29d073d7f2e006373e6a848b1d00951a1107eb81f3742952be905429dc5a5483 ws4py-0.5.1.tar.gz +# Locally computed sha256 checksums +sha256 3c98d9e820de01b1ae3be846419700ab9cefa22b09aa0ef441b3bfd5613c3ba1 LICENSE diff --git a/package/python-ws4py/python-ws4py.mk b/package/python-ws4py/python-ws4py.mk new file mode 100644 index 00000000..edfd5d0d --- /dev/null +++ b/package/python-ws4py/python-ws4py.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-ws4py +# +################################################################################ + +PYTHON_WS4PY_VERSION = 0.5.1 +PYTHON_WS4PY_SOURCE = ws4py-$(PYTHON_WS4PY_VERSION).tar.gz +PYTHON_WS4PY_SITE = https://files.pythonhosted.org/packages/53/20/4019a739b2eefe9282d3822ef6a225250af964b117356971bd55e274193c +PYTHON_WS4PY_SETUP_TYPE = setuptools +PYTHON_WS4PY_LICENSE = BSD-3-Clause +PYTHON_WS4PY_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-wsaccel/Config.in b/package/python-wsaccel/Config.in new file mode 100644 index 00000000..ee61e8a0 --- /dev/null +++ b/package/python-wsaccel/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_WSACCEL + bool "python-wsaccel" + help + Accelerator for ws4py and AutobahnPython. + + https://pypi.python.org/pypi/wsaccel diff --git a/package/python-wsaccel/python-wsaccel.hash b/package/python-wsaccel/python-wsaccel.hash new file mode 100644 index 00000000..9991f8f4 --- /dev/null +++ b/package/python-wsaccel/python-wsaccel.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/wsaccel/json +md5 b05eecfac9cb19326bfc3b538de495ac wsaccel-0.6.6.tar.gz +sha256 18efec0a7182587ba97102b4cd8df7b4f665f45d7ca36f19783f5f081ea114ea wsaccel-0.6.6.tar.gz +# Locally computed sha256 checksums +sha256 b6982974cb838b985b54b663d1780d280735086249c2e28015f25dd455df25da LICENSE diff --git a/package/python-wsaccel/python-wsaccel.mk b/package/python-wsaccel/python-wsaccel.mk new file mode 100644 index 00000000..7ccb0332 --- /dev/null +++ b/package/python-wsaccel/python-wsaccel.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-wsaccel +# +################################################################################ + +PYTHON_WSACCEL_VERSION = 0.6.6 +PYTHON_WSACCEL_SOURCE = wsaccel-$(PYTHON_WSACCEL_VERSION).tar.gz +PYTHON_WSACCEL_SITE = https://files.pythonhosted.org/packages/94/28/41c0e711b538f6031a247ab4ec5352267f12ed416e3a638b8d55fc33f609 +PYTHON_WSACCEL_LICENSE = Apache-2.0 +PYTHON_WSACCEL_LICENSE_FILES = LICENSE +PYTHON_WSACCEL_SETUP_TYPE = setuptools +PYTHON_WSACCEL_BUILD_OPTS = --skip-dependency-check + +$(eval $(python-package)) diff --git a/package/python-wsproto/Config.in b/package/python-wsproto/Config.in new file mode 100644 index 00000000..0610348b --- /dev/null +++ b/package/python-wsproto/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_WSPROTO + bool "python-wsproto" + select BR2_PACKAGE_PYTHON_H11 # runtime + help + WebSockets state-machine based protocol implementation. + + https://github.com/python-hyper/wsproto/ diff --git a/package/python-wsproto/python-wsproto.hash b/package/python-wsproto/python-wsproto.hash new file mode 100644 index 00000000..4eb31957 --- /dev/null +++ b/package/python-wsproto/python-wsproto.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/wsproto/json +md5 f64973434117e23d2079460ed64b05c3 wsproto-1.2.0.tar.gz +sha256 ad565f26ecb92588a3e43bc3d96164de84cd9902482b130d0ddbaa9664a85065 wsproto-1.2.0.tar.gz +# Locally computed sha256 checksums +sha256 c0329a8dbf3437b095f7f5cf4257d6bb855e07120cae8786586073ff7a699959 LICENSE diff --git a/package/python-wsproto/python-wsproto.mk b/package/python-wsproto/python-wsproto.mk new file mode 100644 index 00000000..629f4431 --- /dev/null +++ b/package/python-wsproto/python-wsproto.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-wsproto +# +################################################################################ + +PYTHON_WSPROTO_VERSION = 1.2.0 +PYTHON_WSPROTO_SOURCE = wsproto-$(PYTHON_WSPROTO_VERSION).tar.gz +PYTHON_WSPROTO_SITE = https://files.pythonhosted.org/packages/c9/4a/44d3c295350d776427904d73c189e10aeae66d7f555bb2feee16d1e4ba5a +PYTHON_WSPROTO_SETUP_TYPE = setuptools +PYTHON_WSPROTO_LICENSE = MIT +PYTHON_WSPROTO_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-wtforms/Config.in b/package/python-wtforms/Config.in new file mode 100644 index 00000000..33a17d3d --- /dev/null +++ b/package/python-wtforms/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_WTFORMS + bool "python-wtforms" + select BR2_PACKAGE_PYTHON_MARKUPSAFE # runtime + help + A flexible forms validation and rendering library for + Python web development. + + https://wtforms.readthedocs.io/ diff --git a/package/python-wtforms/python-wtforms.hash b/package/python-wtforms/python-wtforms.hash new file mode 100644 index 00000000..12b980de --- /dev/null +++ b/package/python-wtforms/python-wtforms.hash @@ -0,0 +1,6 @@ +# md5, sha256 from https://pypi.org/pypi/wtforms/json +md5 509a985769df13938c8307b55a614773 WTForms-3.0.1.tar.gz +sha256 6b351bbb12dd58af57ffef05bc78425d08d1914e0fd68ee14143b7ade023c5bc WTForms-3.0.1.tar.gz +# Locally computed sha256 checksums +sha256 cf40d60ff34f6b2b68a53d220f8b66567b5ac8dd1119b37b62fd15e9518fe59b LICENSE.rst +sha256 c9362a7258a11c84a8f7e825ccbbb5c425c6fc02368d3aee6494533fb99ba1f4 docs/license.rst diff --git a/package/python-wtforms/python-wtforms.mk b/package/python-wtforms/python-wtforms.mk new file mode 100644 index 00000000..65b5748b --- /dev/null +++ b/package/python-wtforms/python-wtforms.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-wtforms +# +################################################################################ + +PYTHON_WTFORMS_VERSION = 3.0.1 +PYTHON_WTFORMS_SOURCE = WTForms-$(PYTHON_WTFORMS_VERSION).tar.gz +PYTHON_WTFORMS_SITE = https://files.pythonhosted.org/packages/9a/7d/d4aa68f5bfcb91dd61a7faf0e862512ae7b3d531c41f24c217910aec0559 +PYTHON_WTFORMS_SETUP_TYPE = setuptools +PYTHON_WTFORMS_LICENSE = BSD-3-Clause +PYTHON_WTFORMS_LICENSE_FILES = LICENSE.rst docs/license.rst +PYTHON_WTFORMS_DEPENDENCIES = host-python-babel + +$(eval $(python-package)) diff --git a/package/python-xlib/Config.in b/package/python-xlib/Config.in new file mode 100644 index 00000000..081af6a2 --- /dev/null +++ b/package/python-xlib/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_XLIB + bool "python-xlib" + select BR2_PACKAGE_PYTHON_SIX # runtime + help + XLib in pure Python (Py2/Py3 compatible) + + https://github.com/python-xlib/python-xlib diff --git a/package/python-xlib/python-xlib.hash b/package/python-xlib/python-xlib.hash new file mode 100644 index 00000000..066f4504 --- /dev/null +++ b/package/python-xlib/python-xlib.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/python-xlib/json +md5 ba31623fb64a1e5a0b1ae1f6495c3bf6 python-xlib-0.32.tar.gz +sha256 20e1382f8a98d8ed0facfa45415c46fd0c8eeb6f9996e58c22d3382a4ed6e37b python-xlib-0.32.tar.gz +# Locally computed sha256 checksums +sha256 06eb1c441443cf15ac84f309003f4c43c62246939d37c75fc3e056c2d34cd300 LICENSE diff --git a/package/python-xlib/python-xlib.mk b/package/python-xlib/python-xlib.mk new file mode 100644 index 00000000..32f16e5d --- /dev/null +++ b/package/python-xlib/python-xlib.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-xlib +# +################################################################################ + +PYTHON_XLIB_VERSION = 0.32 +PYTHON_XLIB_SITE = https://files.pythonhosted.org/packages/4d/cf/a29ecb43a5c84a65ffd726e3b28806f56b3bc5e796ddb533ff52af107dcf +PYTHON_XLIB_SETUP_TYPE = setuptools +PYTHON_XLIB_LICENSE = LGPL-2.1+ +PYTHON_XLIB_LICENSE_FILES = LICENSE +PYTHON_XLIB_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/package/python-xlrd/Config.in b/package/python-xlrd/Config.in new file mode 100644 index 00000000..264ee93e --- /dev/null +++ b/package/python-xlrd/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_XLRD + bool "python-xlrd" + select BR2_PACKAGE_PYTHON3_PYEXPAT + select BR2_PACKAGE_PYTHON3_ZLIB + help + Library for developers to extract data from Microsoft + Excel(tm) spreadsheet files. + + http://www.python-excel.org/ diff --git a/package/python-xlrd/Config.in.host b/package/python-xlrd/Config.in.host new file mode 100644 index 00000000..cd98fd4d --- /dev/null +++ b/package/python-xlrd/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_PYTHON_XLRD + bool "host python-xlrd" + help + Library for developers to extract data from Microsoft + Excel(tm) spreadsheet files. + + http://www.python-excel.org/ diff --git a/package/python-xlrd/python-xlrd.hash b/package/python-xlrd/python-xlrd.hash new file mode 100644 index 00000000..003ccc9a --- /dev/null +++ b/package/python-xlrd/python-xlrd.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/xlrd/json +md5 ae3f951c857a490d432f0a7d722352bf xlrd-2.0.1.tar.gz +sha256 f72f148f54442c6b056bf931dbc34f986fd0c3b0b6b5a58d013c9aef274d0c88 xlrd-2.0.1.tar.gz +# Locally computed sha256 checksums +sha256 b5a5dbce60265e305a815a6cb83ed07f24519d8ba644f2a307994488bced8815 LICENSE diff --git a/package/python-xlrd/python-xlrd.mk b/package/python-xlrd/python-xlrd.mk new file mode 100644 index 00000000..1f280bd4 --- /dev/null +++ b/package/python-xlrd/python-xlrd.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-xlrd +# +################################################################################ + +PYTHON_XLRD_VERSION = 2.0.1 +PYTHON_XLRD_SOURCE = xlrd-$(PYTHON_XLRD_VERSION).tar.gz +PYTHON_XLRD_SITE = https://files.pythonhosted.org/packages/a6/b3/19a2540d21dea5f908304375bd43f5ed7a4c28a370dc9122c565423e6b44 +PYTHON_XLRD_SETUP_TYPE = setuptools +PYTHON_XLRD_LICENSE = BSD-3-Clause +PYTHON_XLRD_LICENSE_FILES = LICENSE + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-xlsxwriter/Config.in b/package/python-xlsxwriter/Config.in new file mode 100644 index 00000000..59fe3ba9 --- /dev/null +++ b/package/python-xlsxwriter/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_XLSXWRITER + bool "python-xlsxwriter" + select BR2_PACKAGE_PYTHON3_ZLIB + help + A Python module for creating Excel XLSX files. + + https://github.com/jmcnamara/XlsxWriter diff --git a/package/python-xlsxwriter/python-xlsxwriter.hash b/package/python-xlsxwriter/python-xlsxwriter.hash new file mode 100644 index 00000000..4a4b946f --- /dev/null +++ b/package/python-xlsxwriter/python-xlsxwriter.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/xlsxwriter/json +md5 3df433a1b6427d40af6e7cac36f0b5c4 XlsxWriter-3.0.6.tar.gz +sha256 2f9e5ea13343fe85486e349d4e5fdf746bb69dc7bc1dedfa9b5fae2bb48c0795 XlsxWriter-3.0.6.tar.gz +# Locally computed sha256 checksums +sha256 b3b494c7e7456dad12ac1b3e61c60e850d60d3ce865fa056c4ce0ae680c03677 LICENSE.txt diff --git a/package/python-xlsxwriter/python-xlsxwriter.mk b/package/python-xlsxwriter/python-xlsxwriter.mk new file mode 100644 index 00000000..f05b1067 --- /dev/null +++ b/package/python-xlsxwriter/python-xlsxwriter.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-xlsxwriter +# +################################################################################ + +PYTHON_XLSXWRITER_VERSION = 3.0.6 +PYTHON_XLSXWRITER_SOURCE = XlsxWriter-$(PYTHON_XLSXWRITER_VERSION).tar.gz +PYTHON_XLSXWRITER_SITE = https://files.pythonhosted.org/packages/d4/b5/cef6fadeaf316a3bbe82a506252081f2e6533cdf4b69ed64f8831ac01fb0 +PYTHON_XLSXWRITER_SETUP_TYPE = setuptools +PYTHON_XLSXWRITER_LICENSE = BSD-2-Clause +PYTHON_XLSXWRITER_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-xlutils/Config.in b/package/python-xlutils/Config.in new file mode 100644 index 00000000..9c12d766 --- /dev/null +++ b/package/python-xlutils/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_XLUTILS + bool "python-xlutils" + select BR2_PACKAGE_PYTHON_XLRD # runtime + select BR2_PACKAGE_PYTHON_XLWT # runtime + help + Utilities for working with Excel files that require both + xlrd and xlwt. + + http://www.python-excel.org diff --git a/package/python-xlutils/python-xlutils.hash b/package/python-xlutils/python-xlutils.hash new file mode 100644 index 00000000..908aa4d6 --- /dev/null +++ b/package/python-xlutils/python-xlutils.hash @@ -0,0 +1,6 @@ +# md5 from https://pypi.python.org/pypi/xlutils/json +md5 7a6a339ddaacabce244341582ee61353 xlutils-2.0.0.tar.gz +# sha256 calculated by scanpypi +sha256 7e0e2c233bd185fecf5e2bd3f4e9469ca4a3bd87da64c82cfe5b2af27e7f9e54 xlutils-2.0.0.tar.gz +# Locally computed +sha256 28907976ee86414cc720fafc966563b16eeb6a6aeb1da5f5ed40bac3a8808bcf xlutils/license.txt diff --git a/package/python-xlutils/python-xlutils.mk b/package/python-xlutils/python-xlutils.mk new file mode 100644 index 00000000..fc26b3ce --- /dev/null +++ b/package/python-xlutils/python-xlutils.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-xlutils +# +################################################################################ + +PYTHON_XLUTILS_VERSION = 2.0.0 +PYTHON_XLUTILS_SOURCE = xlutils-$(PYTHON_XLUTILS_VERSION).tar.gz +PYTHON_XLUTILS_SITE = https://pypi.python.org/packages/93/fe/af6d73e4bc7b0ce359d34bebb2e8d4d129763acfecd66a3a7efc587e54c9 +PYTHON_XLUTILS_SETUP_TYPE = setuptools +PYTHON_XLUTILS_LICENSE = MIT +PYTHON_XLUTILS_LICENSE_FILES = xlutils/license.txt + +$(eval $(python-package)) diff --git a/package/python-xlwt/Config.in b/package/python-xlwt/Config.in new file mode 100644 index 00000000..a48ac6fb --- /dev/null +++ b/package/python-xlwt/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_XLWT + bool "python-xlwt" + help + Library to create spreadsheet files compatible with MS Excel + 97/2000/XP/2003 XLS files, on any platform, with Python 2.6, + 2.7, 3.3+. + + http://www.python-excel.org/ diff --git a/package/python-xlwt/python-xlwt.hash b/package/python-xlwt/python-xlwt.hash new file mode 100644 index 00000000..826643d5 --- /dev/null +++ b/package/python-xlwt/python-xlwt.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/xlwt/json +md5 4b1ca8a3cef3261f4b4dc3f138e383a8 xlwt-1.3.0.tar.gz +sha256 c59912717a9b28f1a3c2a98fd60741014b06b043936dcecbc113eaaada156c88 xlwt-1.3.0.tar.gz +# Locally computed +sha256 7f7b66f23fdac4f68fe3b342dd16b329d511017a901784a5ceb83f505f2de7c6 docs/licenses.rst diff --git a/package/python-xlwt/python-xlwt.mk b/package/python-xlwt/python-xlwt.mk new file mode 100644 index 00000000..aaeeffc5 --- /dev/null +++ b/package/python-xlwt/python-xlwt.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-xlwt +# +################################################################################ + +PYTHON_XLWT_VERSION = 1.3.0 +PYTHON_XLWT_SOURCE = xlwt-$(PYTHON_XLWT_VERSION).tar.gz +PYTHON_XLWT_SITE = https://files.pythonhosted.org/packages/06/97/56a6f56ce44578a69343449aa5a0d98eefe04085d69da539f3034e2cd5c1 +PYTHON_XLWT_SETUP_TYPE = setuptools +PYTHON_XLWT_LICENSE = BSD-3-Clause, BSD-4-Clause +PYTHON_XLWT_LICENSE_FILES = docs/licenses.rst + +$(eval $(python-package)) diff --git a/package/python-xmljson/Config.in b/package/python-xmljson/Config.in new file mode 100644 index 00000000..486f3443 --- /dev/null +++ b/package/python-xmljson/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_XMLJSON + bool "python-xmljson" + help + Converts XML into JSON/Python dicts/arrays and vice-versa. + + https://github.com/sanand0/xmljson diff --git a/package/python-xmljson/python-xmljson.hash b/package/python-xmljson/python-xmljson.hash new file mode 100644 index 00000000..245a74a3 --- /dev/null +++ b/package/python-xmljson/python-xmljson.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/xmljson/json +md5 fc4df2390ad209928ee4311a3540cb17 xmljson-0.2.1.tar.gz +sha256 b4158e66aa1e62ee39f7f80eb2fe4f767670ba3c0d5de9804420dc53427fdec8 xmljson-0.2.1.tar.gz +# Locally computed sha256 checksums +sha256 5ce42ba7d76e81428bdacef83658eb6213dbd1ad4a3b6d380bb6e0e8c73f0fb7 LICENSE diff --git a/package/python-xmljson/python-xmljson.mk b/package/python-xmljson/python-xmljson.mk new file mode 100644 index 00000000..913dce26 --- /dev/null +++ b/package/python-xmljson/python-xmljson.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-xmljson +# +################################################################################ + +PYTHON_XMLJSON_VERSION = 0.2.1 +PYTHON_XMLJSON_SOURCE = xmljson-$(PYTHON_XMLJSON_VERSION).tar.gz +PYTHON_XMLJSON_SITE = https://files.pythonhosted.org/packages/e8/6f/d9f109ba19be510fd3098bcb72143c67ca6743cedb48ac75aef05ddfe960 +PYTHON_XMLJSON_SETUP_TYPE = setuptools +PYTHON_XMLJSON_LICENSE = MIT +PYTHON_XMLJSON_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-xmltodict/Config.in b/package/python-xmltodict/Config.in new file mode 100644 index 00000000..af2bbbf4 --- /dev/null +++ b/package/python-xmltodict/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_XMLTODICT + bool "python-xmltodict" + select BR2_PACKAGE_PYTHON3_PYEXPAT # runtime + help + Makes working with XML feel like you are working with JSON. + + https://github.com/martinblech/xmltodict diff --git a/package/python-xmltodict/python-xmltodict.hash b/package/python-xmltodict/python-xmltodict.hash new file mode 100644 index 00000000..48fb5265 --- /dev/null +++ b/package/python-xmltodict/python-xmltodict.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/xmltodict/json +md5 1ece0a5bbd494bac414058405606475e xmltodict-0.13.0.tar.gz +sha256 341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56 xmltodict-0.13.0.tar.gz +# Locally computed sha256 checksums +sha256 d66d5eb8f83a0ba21d3dd04318b8817588e8764daabea852d1035e3f07ffda55 LICENSE diff --git a/package/python-xmltodict/python-xmltodict.mk b/package/python-xmltodict/python-xmltodict.mk new file mode 100644 index 00000000..9201bc15 --- /dev/null +++ b/package/python-xmltodict/python-xmltodict.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-xmltodict +# +################################################################################ + +PYTHON_XMLTODICT_VERSION = 0.13.0 +PYTHON_XMLTODICT_SOURCE = xmltodict-$(PYTHON_XMLTODICT_VERSION).tar.gz +PYTHON_XMLTODICT_SITE = https://files.pythonhosted.org/packages/39/0d/40df5be1e684bbaecdb9d1e0e40d5d482465de6b00cbb92b84ee5d243c7f +PYTHON_XMLTODICT_SETUP_TYPE = setuptools +PYTHON_XMLTODICT_LICENSE = MIT +PYTHON_XMLTODICT_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-xmodem/Config.in b/package/python-xmodem/Config.in new file mode 100644 index 00000000..ef927f13 --- /dev/null +++ b/package/python-xmodem/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_XMODEM + bool "python-xmodem" + help + XMODEM protocol implementation. + + https://github.com/tehmaze/xmodem diff --git a/package/python-xmodem/python-xmodem.hash b/package/python-xmodem/python-xmodem.hash new file mode 100644 index 00000000..65a9b6af --- /dev/null +++ b/package/python-xmodem/python-xmodem.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/xmodem/json +md5 0a21c269cb4d3995d13a2615c24fed0a xmodem-0.4.7.tar.gz +sha256 2f1068aa8676f0d1d112498b5786c4f8ea4f89d8f25d07d3a0f293cd21db1c35 xmodem-0.4.7.tar.gz +# Locally computed sha256 checksums +sha256 e317b0ce19724327a41e09def456579b80a7b82f9bceb2ba6933eba406f78d88 LICENSE diff --git a/package/python-xmodem/python-xmodem.mk b/package/python-xmodem/python-xmodem.mk new file mode 100644 index 00000000..d7040f72 --- /dev/null +++ b/package/python-xmodem/python-xmodem.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-xmodem +# +################################################################################ + +PYTHON_XMODEM_VERSION = 0.4.7 +PYTHON_XMODEM_SOURCE = xmodem-$(PYTHON_XMODEM_VERSION).tar.gz +PYTHON_XMODEM_SITE = https://files.pythonhosted.org/packages/3d/17/fd6668a09afdc46c22990172b6f65e07dfb5bcf38960d063a7a887ca926d +PYTHON_XMODEM_SETUP_TYPE = setuptools +PYTHON_XMODEM_LICENSE = MIT +PYTHON_XMODEM_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-yamllint/Config.in b/package/python-yamllint/Config.in new file mode 100644 index 00000000..5c0962f0 --- /dev/null +++ b/package/python-yamllint/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_YAMLLINT + bool "python-yamllint" + select BR2_PACKAGE_PYTHON_PATHSPEC # runtime + select BR2_PACKAGE_PYTHON_PYYAML # runtime + help + A linter for YAML files. + + https://github.com/adrienverge/yamllint diff --git a/package/python-yamllint/python-yamllint.hash b/package/python-yamllint/python-yamllint.hash new file mode 100644 index 00000000..d80e0fdf --- /dev/null +++ b/package/python-yamllint/python-yamllint.hash @@ -0,0 +1,3 @@ +# Locally computed sha256 checksums +sha256 7a003809f88324fd2c877734f2d575ee7881dd9043360657cc8049c809eba6cd yamllint-1.35.1.tar.gz +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 LICENSE diff --git a/package/python-yamllint/python-yamllint.mk b/package/python-yamllint/python-yamllint.mk new file mode 100644 index 00000000..29344a14 --- /dev/null +++ b/package/python-yamllint/python-yamllint.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# python-yamllint +# +################################################################################ + +PYTHON_YAMLLINT_VERSION = 1.35.1 +PYTHON_YAMLLINT_SOURCE = yamllint-$(PYTHON_YAMLLINT_VERSION).tar.gz +PYTHON_YAMLLINT_SITE = https://files.pythonhosted.org/packages/da/06/d8cee5c3dfd550cc0a466ead8b321138198485d1034130ac1393cc49d63e +PYTHON_YAMLLINT_SETUP_TYPE = setuptools +PYTHON_YAMLLINT_LICENSE = GPL-3.0 +PYTHON_YAMLLINT_LICENSE_FILES = LICENSE + +HOST_PYTHON_YAMLLINT_DEPENDENCIES += \ + host-python-pathspec \ + host-python-pyyaml + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-yarl/Config.in b/package/python-yarl/Config.in new file mode 100644 index 00000000..84e14ce9 --- /dev/null +++ b/package/python-yarl/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_YARL + bool "python-yarl" + select BR2_PACKAGE_PYTHON_MULTIDICT + select BR2_PACKAGE_PYTHON_IDNA + help + Yet another URL library. + + http://yarl.readthedocs.io/ diff --git a/package/python-yarl/python-yarl.hash b/package/python-yarl/python-yarl.hash new file mode 100644 index 00000000..624297ae --- /dev/null +++ b/package/python-yarl/python-yarl.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/yarl/json +md5 4e46a0c7078d34d9734a7c5d182dee92 yarl-1.9.2.tar.gz +sha256 04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571 yarl-1.9.2.tar.gz +# Locally computed sha256 checksums +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/python-yarl/python-yarl.mk b/package/python-yarl/python-yarl.mk new file mode 100644 index 00000000..e4424ff5 --- /dev/null +++ b/package/python-yarl/python-yarl.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-yarl +# +################################################################################ + +PYTHON_YARL_VERSION = 1.9.2 +PYTHON_YARL_SOURCE = yarl-$(PYTHON_YARL_VERSION).tar.gz +PYTHON_YARL_SITE = https://files.pythonhosted.org/packages/5f/3f/04b3c5e57844fb9c034b09c5cb6d2b43de5d64a093c30529fd233e16cf09 +PYTHON_YARL_LICENSE = Apache-2.0 +PYTHON_YARL_LICENSE_FILES = LICENSE +PYTHON_YARL_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/package/python-yatl/Config.in b/package/python-yatl/Config.in new file mode 100644 index 00000000..88a79512 --- /dev/null +++ b/package/python-yatl/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_YATL + bool "python-yatl" + help + Yet Another Template Language. + + https://github.com/web2py/yatl diff --git a/package/python-yatl/python-yatl.hash b/package/python-yatl/python-yatl.hash new file mode 100644 index 00000000..61391f63 --- /dev/null +++ b/package/python-yatl/python-yatl.hash @@ -0,0 +1,3 @@ +# md5, sha256 from https://pypi.org/pypi/yatl/json +md5 f02b367e1c56af94eafd5bd1019c03be yatl-20220907.1.tar.gz +sha256 67d43ad79e1f58d8552718018470856a2ad210bdfeec42e978b28b1b21560d00 yatl-20220907.1.tar.gz diff --git a/package/python-yatl/python-yatl.mk b/package/python-yatl/python-yatl.mk new file mode 100644 index 00000000..0c33971b --- /dev/null +++ b/package/python-yatl/python-yatl.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-yatl +# +################################################################################ + +PYTHON_YATL_VERSION = 20220907.1 +PYTHON_YATL_SOURCE = yatl-$(PYTHON_YATL_VERSION).tar.gz +PYTHON_YATL_SITE = https://files.pythonhosted.org/packages/09/68/0c9d0a1192fdad5f3d38db096106c5adabb9b26c9ae107897997f56d1788 +PYTHON_YATL_SETUP_TYPE = setuptools +PYTHON_YATL_LICENSE = BSD-3-Clause + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/python-zc-lockfile/Config.in b/package/python-zc-lockfile/Config.in new file mode 100644 index 00000000..928f3604 --- /dev/null +++ b/package/python-zc-lockfile/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_ZC_LOCKFILE + bool "python-zc-lockfile" + help + Basic inter-process locks. + + https://github.com/zopefoundation/zc.lockfile diff --git a/package/python-zc-lockfile/python-zc-lockfile.hash b/package/python-zc-lockfile/python-zc-lockfile.hash new file mode 100644 index 00000000..181adda1 --- /dev/null +++ b/package/python-zc-lockfile/python-zc-lockfile.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/zc.lockfile/json +md5 3895445752278ddcc4578658c3c9a492 zc.lockfile-2.0.tar.gz +sha256 307ad78227e48be260e64896ec8886edc7eae22d8ec53e4d528ab5537a83203b zc.lockfile-2.0.tar.gz +# Locally computed sha256 checksums +sha256 3e671db11df687516cc1db5b3d65e4aa383eaca3c20cea3faf53a0f7335d0a3c LICENSE.txt diff --git a/package/python-zc-lockfile/python-zc-lockfile.mk b/package/python-zc-lockfile/python-zc-lockfile.mk new file mode 100644 index 00000000..a4621e6d --- /dev/null +++ b/package/python-zc-lockfile/python-zc-lockfile.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-zc-lockfile +# +################################################################################ + +PYTHON_ZC_LOCKFILE_VERSION = 2.0 +PYTHON_ZC_LOCKFILE_SOURCE = zc.lockfile-$(PYTHON_ZC_LOCKFILE_VERSION).tar.gz +PYTHON_ZC_LOCKFILE_SITE = https://files.pythonhosted.org/packages/11/98/f21922d501ab29d62665e7460c94f5ed485fd9d8348c126697947643a881 +PYTHON_ZC_LOCKFILE_SETUP_TYPE = setuptools +PYTHON_ZC_LOCKFILE_LICENSE = ZPL-2.1 +PYTHON_ZC_LOCKFILE_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-zeroconf/Config.in b/package/python-zeroconf/Config.in new file mode 100644 index 00000000..69ea81d9 --- /dev/null +++ b/package/python-zeroconf/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_ZEROCONF + bool "python-zeroconf" + select BR2_PACKAGE_PYTHON_ASYNC_TIMEOUT # runtime + select BR2_PACKAGE_PYTHON_IFADDR # runtime + help + Pure Python Multicast DNS Service Discovery Library + (Bonjour/Avahi compatible). + + https://github.com/jstasiak/python-zeroconf diff --git a/package/python-zeroconf/python-zeroconf.hash b/package/python-zeroconf/python-zeroconf.hash new file mode 100644 index 00000000..13e1d16c --- /dev/null +++ b/package/python-zeroconf/python-zeroconf.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/zeroconf/json +md5 f85fb9d239397b53836495fd49b85e5f zeroconf-0.39.4.tar.gz +sha256 701e4d697f89fe952aa9c13a512ed6bf472dcf4f0a6d275e71085604b3882295 zeroconf-0.39.4.tar.gz +# Locally computed sha256 checksums +sha256 35e4136e96aace60757a8b939741959d8627c4bc1fce62af99df325395276c56 COPYING diff --git a/package/python-zeroconf/python-zeroconf.mk b/package/python-zeroconf/python-zeroconf.mk new file mode 100644 index 00000000..d939b2e5 --- /dev/null +++ b/package/python-zeroconf/python-zeroconf.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-zeroconf +# +################################################################################ + +PYTHON_ZEROCONF_VERSION = 0.39.4 +PYTHON_ZEROCONF_SOURCE = zeroconf-$(PYTHON_ZEROCONF_VERSION).tar.gz +PYTHON_ZEROCONF_SITE = https://files.pythonhosted.org/packages/f5/4f/c47cea73d7ae5467b63de3999d7207fd5b14d70cb2f35ce81c4ab7d7a52e +PYTHON_ZEROCONF_SETUP_TYPE = setuptools +PYTHON_ZEROCONF_LICENSE = LGPL-2.1+ +PYTHON_ZEROCONF_LICENSE_FILES = COPYING + +$(eval $(python-package)) diff --git a/package/python-zlmdb/Config.in b/package/python-zlmdb/Config.in new file mode 100644 index 00000000..007ca727 --- /dev/null +++ b/package/python-zlmdb/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_PYTHON_ZLMDB + bool "python-zlmdb" + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS # python-numpy + depends on BR2_INSTALL_LIBSTDCPP # python-numpy + depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_9 # python-numpy + select BR2_PACKAGE_PYTHON_CBOR2 # runtime + select BR2_PACKAGE_PYTHON_CFFI # runtime + select BR2_PACKAGE_PYTHON_CLICK # runtime + select BR2_PACKAGE_PYTHON_FLATBUFFERS # runtime + select BR2_PACKAGE_PYTHON_LMDB # runtime + select BR2_PACKAGE_PYTHON_NUMPY # runtime + select BR2_PACKAGE_PYTHON_PYNACL # runtime + select BR2_PACKAGE_PYTHON_PYYAML # runtime + select BR2_PACKAGE_PYTHON_TXAIO # runtime + help + Object-relational zero-copy in-memory database layer for + LMDB. + + https://github.com/crossbario/zlmdb + +comment "python-zlmdb needs a glibc or musl toolchain w/ C++, gcc >= 9" + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_9 || \ + !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) diff --git a/package/python-zlmdb/python-zlmdb.hash b/package/python-zlmdb/python-zlmdb.hash new file mode 100644 index 00000000..1ae5d72e --- /dev/null +++ b/package/python-zlmdb/python-zlmdb.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/zlmdb/json +md5 1e217f3228cb4c2303f06461b79e593e zlmdb-22.6.1.tar.gz +sha256 aff353121c2eed3c18e53c82358c41932a21bf882995ee3a79c6eb1ae4c95397 zlmdb-22.6.1.tar.gz +# Locally computed sha256 checksums +sha256 8a139bf325dcca11e0e476ce537bf791a6cfbeed8899a9b6ddc55238e180d230 LICENSE diff --git a/package/python-zlmdb/python-zlmdb.mk b/package/python-zlmdb/python-zlmdb.mk new file mode 100644 index 00000000..d20ac9e0 --- /dev/null +++ b/package/python-zlmdb/python-zlmdb.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-zlmdb +# +################################################################################ + +PYTHON_ZLMDB_VERSION = 22.6.1 +PYTHON_ZLMDB_SOURCE = zlmdb-$(PYTHON_ZLMDB_VERSION).tar.gz +PYTHON_ZLMDB_SITE = https://files.pythonhosted.org/packages/97/15/992e61a18cb64b573814c9d92676b22d522f2cc2ea79ff78b834bd392b80 +PYTHON_ZLMDB_SETUP_TYPE = setuptools +PYTHON_ZLMDB_LICENSE = MIT +PYTHON_ZLMDB_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/package/python-zope-interface/Config.in b/package/python-zope-interface/Config.in new file mode 100644 index 00000000..17f7aed0 --- /dev/null +++ b/package/python-zope-interface/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_ZOPE_INTERFACE + bool "python-zope-interface" + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + help + This package provides an implementation of "object + interfaces" for Python. Interfaces are a mechanism for + labeling objects as conforming to a given API or + contract. So, this package can be considered as + implementation of the Design By Contract methodology support + in Python. + + https://zopeinterface.readthedocs.io/ diff --git a/package/python-zope-interface/python-zope-interface.hash b/package/python-zope-interface/python-zope-interface.hash new file mode 100644 index 00000000..7052f778 --- /dev/null +++ b/package/python-zope-interface/python-zope-interface.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/zope-interface/json +md5 5a383d71156ce6f89f59a86d957a8d65 zope.interface-5.5.2.tar.gz +sha256 bfee1f3ff62143819499e348f5b8a7f3aa0259f9aca5e0ddae7391d059dce671 zope.interface-5.5.2.tar.gz +# Locally computed sha256 checksums +sha256 3e671db11df687516cc1db5b3d65e4aa383eaca3c20cea3faf53a0f7335d0a3c LICENSE.txt diff --git a/package/python-zope-interface/python-zope-interface.mk b/package/python-zope-interface/python-zope-interface.mk new file mode 100644 index 00000000..2bada3a7 --- /dev/null +++ b/package/python-zope-interface/python-zope-interface.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-zope-interface +# +################################################################################ + +PYTHON_ZOPE_INTERFACE_VERSION = 5.5.2 +PYTHON_ZOPE_INTERFACE_SOURCE = zope.interface-$(PYTHON_ZOPE_INTERFACE_VERSION).tar.gz +PYTHON_ZOPE_INTERFACE_SITE = https://files.pythonhosted.org/packages/38/6f/fbfb7dde38be7e5644bb342c4c7cdc444cd5e2ffbd70d091263b3858a8cb +PYTHON_ZOPE_INTERFACE_SETUP_TYPE = setuptools +PYTHON_ZOPE_INTERFACE_LICENSE = ZPL-2.1 +PYTHON_ZOPE_INTERFACE_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/package/python-zopfli/Config.in b/package/python-zopfli/Config.in new file mode 100644 index 00000000..dc68a2fe --- /dev/null +++ b/package/python-zopfli/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_ZOPFLI + bool "python-zopfli" + depends on BR2_INSTALL_LIBSTDCPP + help + Zopfli module for python. + + https://github.com/fonttools/py-zopfli + +comment "python-zopfli needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/python-zopfli/python-zopfli.hash b/package/python-zopfli/python-zopfli.hash new file mode 100644 index 00000000..29bdfe5e --- /dev/null +++ b/package/python-zopfli/python-zopfli.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/zopfli/json +md5 0c1e41e5403524e0180f3ed9aaa356ec zopfli-0.2.2.zip +sha256 2d49db7540d9991976af464ebc1b9ed12988c04d90691bcb51dc4a373a9e2afc zopfli-0.2.2.zip +# Locally computed sha256 checksums +sha256 018b1cb87efdf7a04c2fcc13d57ed63f62149113fb207b27ea13430d64f13513 COPYING diff --git a/package/python-zopfli/python-zopfli.mk b/package/python-zopfli/python-zopfli.mk new file mode 100644 index 00000000..d6af6e4b --- /dev/null +++ b/package/python-zopfli/python-zopfli.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# python-zopfli +# +################################################################################ + +PYTHON_ZOPFLI_VERSION = 0.2.2 +PYTHON_ZOPFLI_SOURCE = zopfli-$(PYTHON_ZOPFLI_VERSION).zip +PYTHON_ZOPFLI_SITE = https://files.pythonhosted.org/packages/9a/ed/d004d5737f9546167eecf0ecd995ee1a796703e512deb2f2ea26cdbe4b3e +PYTHON_ZOPFLI_SETUP_TYPE = setuptools +PYTHON_ZOPFLI_LICENSE = Apache-2.0 +PYTHON_ZOPFLI_LICENSE_FILES = COPYING +PYTHON_ZOPFLI_DEPENDENCIES = host-python-setuptools-scm + +define PYTHON_ZOPFLI_EXTRACT_CMDS + $(UNZIP) -d $(@D) $(PYTHON_ZOPFLI_DL_DIR)/$(PYTHON_ZOPFLI_SOURCE) + mv $(@D)/zopfli-$(PYTHON_ZOPFLI_VERSION)/* $(@D) + $(RM) -r $(@D)/zopfli-$(PYTHON_ZOPFLI_VERSION) +endef + +$(eval $(python-package)) diff --git a/package/python3/0001-Make-the-build-of-pyc-files-conditional.patch b/package/python3/0001-Make-the-build-of-pyc-files-conditional.patch new file mode 100644 index 00000000..b35b0621 --- /dev/null +++ b/package/python3/0001-Make-the-build-of-pyc-files-conditional.patch @@ -0,0 +1,58 @@ +From 5d0f69ce7fc05adbd3c71e113c11da0aedbca33a Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 22 Feb 2017 16:21:31 -0800 +Subject: [PATCH] Make the build of pyc files conditional + +This commit adds a new configure option --disable-pyc-build to disable +the compilation of pyc. + +Signed-off-by: Thomas Petazzoni +[ Andrey Smrinov: ported to Python 3.6 ] +Signed-off-by: Andrey Smirnov +[ Adam Duskett: ported to Python 3.12.0 ] +Signed-off-by: Adam Duskett +--- + Makefile.pre.in | 2 ++ + configure.ac | 6 ++++++ + 2 files changed, 8 insertions(+) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 4a957fb004..9c5f3c031a 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -2329,6 +2329,7 @@ libinstall: all $(srcdir)/Modules/xxmodule.c + $(DESTDIR)$(LIBDEST); \ + $(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt + @ # Build PYC files for the 3 optimization levels (0, 1, 2) ++ifeq (@PYC_BUILD@,yes) + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \ + -o 0 -o 1 -o 2 $(COMPILEALL_OPTS) -d $(LIBDEST) -f \ +@@ -2338,6 +2339,7 @@ libinstall: all $(srcdir)/Modules/xxmodule.c + $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \ + -o 0 -o 1 -o 2 $(COMPILEALL_OPTS) -d $(LIBDEST)/site-packages -f \ + -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages ++endif + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ +diff --git a/configure.ac b/configure.ac +index 8a32cb58f4..611c33949a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1479,6 +1479,12 @@ fi + + AC_MSG_CHECKING([LDLIBRARY]) + ++AC_SUBST(PYC_BUILD) ++ ++AC_ARG_ENABLE(pyc-build, ++ AS_HELP_STRING([--disable-pyc-build], [disable build of pyc files]), ++ [ PYC_BUILD="${enableval}" ], [ PYC_BUILD=yes ]) ++ + # MacOSX framework builds need more magic. LDLIBRARY is the dynamic + # library that we build, but we do not want to link against it (we + # will find it with a -framework option). For this reason there is an +-- +2.34.1 + diff --git a/package/python3/0002-Disable-buggy_getaddrinfo-configure-test-when-cross-.patch b/package/python3/0002-Disable-buggy_getaddrinfo-configure-test-when-cross-.patch new file mode 100644 index 00000000..e774e442 --- /dev/null +++ b/package/python3/0002-Disable-buggy_getaddrinfo-configure-test-when-cross-.patch @@ -0,0 +1,27 @@ +From 3a0d7824f7ddd4dd0336c8419cb4246ba936d711 Mon Sep 17 00:00:00 2001 +From: Vanya Sergeev +Date: Wed, 23 Dec 2015 11:30:33 +0100 +Subject: [PATCH] Disable buggy_getaddrinfo configure test when cross-compiling + with IPv6 support + +Signed-off-by: Vanya Sergeev +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 611c33949a..059ac2f883 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -5428,7 +5428,7 @@ fi])) + dnl if ac_cv_func_getaddrinfo + ]) + +-if test "$ac_cv_func_getaddrinfo" = no -o "$ac_cv_buggy_getaddrinfo" = yes ++if test "$ac_cv_func_getaddrinfo" = no || test "$cross_compiling" != "yes" -a "$ac_cv_buggy_getaddrinfo" = yes + then + AS_VAR_IF([ipv6], [yes], [ + AC_MSG_ERROR([m4_normalize([ +-- +2.34.1 + diff --git a/package/python3/0003-Add-an-option-to-disable-pydoc.patch b/package/python3/0003-Add-an-option-to-disable-pydoc.patch new file mode 100644 index 00000000..01ce235a --- /dev/null +++ b/package/python3/0003-Add-an-option-to-disable-pydoc.patch @@ -0,0 +1,84 @@ +From f910bdee70b07792c136aaced3850a08eaaafdee Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 22 Feb 2017 17:07:56 -0800 +Subject: [PATCH] Add an option to disable pydoc + +It removes 0.5 MB of data from the target plus the pydoc script +itself. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Samuel Martin +[ Andrey Smirnov: ported to Python 3.6 ] +Signed-off-by: Andrey Smirnov +[ Adam Duskett: ported to Python 3.10.0 ] +Signed-off-by: Adam Duskett +[ Adam Duskett: ported to Python 3.12.1 ] +Signed-off-by: Adam Duskett +--- + Makefile.pre.in | 9 ++++++++- + configure.ac | 6 ++++++ + 2 files changed, 14 insertions(+), 1 deletion(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 9c5f3c031a..2243a658a9 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -2050,7 +2050,9 @@ bininstall: commoninstall altbininstall + -rm -f $(DESTDIR)$(BINDIR)/idle3 + (cd $(DESTDIR)$(BINDIR); $(LN) -s idle$(VERSION) idle3) + -rm -f $(DESTDIR)$(BINDIR)/pydoc3 ++ifeq (@PYDOC@,yes) + (cd $(DESTDIR)$(BINDIR); $(LN) -s pydoc$(VERSION) pydoc3) ++endif + -rm -f $(DESTDIR)$(BINDIR)/2to3 + (cd $(DESTDIR)$(BINDIR); $(LN) -s 2to3-$(VERSION) 2to3) + if test "x$(LIPO_32BIT_FLAGS)" != "x" ; then \ +@@ -2102,7 +2104,6 @@ LIBSUBDIRS= asyncio \ + lib2to3 lib2to3/fixes lib2to3/pgen2 \ + logging \ + multiprocessing multiprocessing/dummy \ +- pydoc_data \ + re \ + site-packages \ + sqlite3 \ +@@ -2257,6 +2258,10 @@ TESTSUBDIRS= idlelib/idle_test \ + + COMPILEALL_OPTS=-j0 + ++ifeq (@PYDOC@,yes) ++LIBSUBDIRS += pydoc_data ++endif ++ + TEST_MODULES=@TEST_MODULES@ + + .PHONY: libinstall +@@ -2471,7 +2476,9 @@ libainstall: all scripts + $(INSTALL_SCRIPT) python-config $(DESTDIR)$(BINDIR)/python$(LDVERSION)-config + $(INSTALL_SCRIPT) $(SCRIPT_2TO3) $(DESTDIR)$(BINDIR)/2to3-$(VERSION) + $(INSTALL_SCRIPT) $(SCRIPT_IDLE) $(DESTDIR)$(BINDIR)/idle$(VERSION) ++ifeq (@PYDOC@,yes) + $(INSTALL_SCRIPT) $(SCRIPT_PYDOC) $(DESTDIR)$(BINDIR)/pydoc$(VERSION) ++endif + @if [ -s Modules/python.exp -a \ + "`echo $(MACHDEP) | sed 's/^\(...\).*/\1/'`" = "aix" ]; then \ + echo; echo "Installing support files for building shared extension modules on AIX:"; \ +diff --git a/configure.ac b/configure.ac +index 059ac2f883..1a2dd28d1e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -4511,6 +4511,12 @@ AS_VAR_IF([posix_threads], [stub], [ + AC_DEFINE([HAVE_PTHREAD_STUBS], [1], [Define if platform requires stubbed pthreads support]) + ]) + ++AC_SUBST(PYDOC) ++ ++AC_ARG_ENABLE(pydoc, ++ AS_HELP_STRING([--disable-pydoc], [disable pydoc]), ++ [ PYDOC="${enableval}" ], [ PYDOC=yes ]) ++ + # Check for enable-ipv6 + AH_TEMPLATE([ENABLE_IPV6], [Define if --enable-ipv6 is specified]) + AC_MSG_CHECKING([if --enable-ipv6 is specified]) +-- +2.34.1 + diff --git a/package/python3/0004-Add-an-option-to-disable-lib2to3.patch b/package/python3/0004-Add-an-option-to-disable-lib2to3.patch new file mode 100644 index 00000000..cc21cbd0 --- /dev/null +++ b/package/python3/0004-Add-an-option-to-disable-lib2to3.patch @@ -0,0 +1,114 @@ +From 572f3164d1dce13db30e897ab0be7c706fa7b731 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 22 Feb 2017 17:15:31 -0800 +Subject: [PATCH] Add an option to disable lib2to3 + +lib2to3 is a library to convert Python 2.x code to Python 3.x. As +such, it is probably not very useful on embedded system targets. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Samuel Martin +[ Andrey Smirnov: ported to Python 3.6 ] +Signed-off-by: Andrey Smirnov +[ Adam Duskett: ported to Python 3.10.0 ] +Signed-off-by: Adam Duskett +[ Bernd Kuhls: ported to Python 3.11.4] +Signed-off-by: Bernd Kuhls +[ Adam Duskett: ported to Python 3.12.1 ] +Signed-off-by: Adam Duskett +--- + Makefile.pre.in | 19 ++++++++++++++----- + configure.ac | 6 ++++++ + 2 files changed, 20 insertions(+), 5 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 2243a658a9..3f314d1354 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -2054,7 +2054,9 @@ ifeq (@PYDOC@,yes) + (cd $(DESTDIR)$(BINDIR); $(LN) -s pydoc$(VERSION) pydoc3) + endif + -rm -f $(DESTDIR)$(BINDIR)/2to3 ++ifeq (@LIB2TO3@,yes) + (cd $(DESTDIR)$(BINDIR); $(LN) -s 2to3-$(VERSION) 2to3) ++endif + if test "x$(LIPO_32BIT_FLAGS)" != "x" ; then \ + rm -f $(DESTDIR)$(BINDIR)/python3-32$(EXE); \ + (cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-32$(EXE) python3-32$(EXE)) \ +@@ -2101,7 +2103,6 @@ LIBSUBDIRS= asyncio \ + idlelib idlelib/Icons \ + importlib importlib/resources importlib/metadata \ + json \ +- lib2to3 lib2to3/fixes lib2to3/pgen2 \ + logging \ + multiprocessing multiprocessing/dummy \ + re \ +@@ -2207,10 +2208,6 @@ TESTSUBDIRS= idlelib/idle_test \ + test/test_importlib/resources/zipdata02 \ + test/test_importlib/source \ + test/test_json \ +- test/test_lib2to3 \ +- test/test_lib2to3/data \ +- test/test_lib2to3/data/fixers \ +- test/test_lib2to3/data/fixers/myfixes \ + test/test_module \ + test/test_peg_generator \ + test/test_pydoc \ +@@ -2262,6 +2259,14 @@ ifeq (@PYDOC@,yes) + LIBSUBDIRS += pydoc_data + endif + ++ifeq (@LIB2TO3@,yes) ++LIBSUBDIRS += lib2to3 lib2to3/fixes lib2to3/pgen2 ++TESTSUBDIRS += test/test_lib2to3 \ ++ test/test_lib2to3/data \ ++ test/test_lib2to3/data/fixers \ ++ test/test_lib2to3/data/fixers/myfixes ++endif ++ + TEST_MODULES=@TEST_MODULES@ + + .PHONY: libinstall +@@ -2345,10 +2350,12 @@ ifeq (@PYC_BUILD@,yes) + -o 0 -o 1 -o 2 $(COMPILEALL_OPTS) -d $(LIBDEST)/site-packages -f \ + -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages + endif ++ifeq (@LIB2TO3@,yes) + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt ++endif + + # bpo-21536: Misc/python-config.sh is generated in the build directory + # from $(srcdir)Misc/python-config.sh.in. +@@ -2474,7 +2481,9 @@ libainstall: all scripts + $(INSTALL_SCRIPT) $(srcdir)/install-sh $(DESTDIR)$(LIBPL)/install-sh + $(INSTALL_SCRIPT) python-config.py $(DESTDIR)$(LIBPL)/python-config.py + $(INSTALL_SCRIPT) python-config $(DESTDIR)$(BINDIR)/python$(LDVERSION)-config ++ifeq (@LIB2TO3@,yes) + $(INSTALL_SCRIPT) $(SCRIPT_2TO3) $(DESTDIR)$(BINDIR)/2to3-$(VERSION) ++endif + $(INSTALL_SCRIPT) $(SCRIPT_IDLE) $(DESTDIR)$(BINDIR)/idle$(VERSION) + ifeq (@PYDOC@,yes) + $(INSTALL_SCRIPT) $(SCRIPT_PYDOC) $(DESTDIR)$(BINDIR)/pydoc$(VERSION) +diff --git a/configure.ac b/configure.ac +index 1a2dd28d1e..f0354c580d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -7561,6 +7561,12 @@ PY_STDLIB_MOD([xxlimited_35], [test "$with_trace_refs" = "no"], [test "$ac_cv_fu + # substitute multiline block, must come after last PY_STDLIB_MOD() + AC_SUBST([MODULE_BLOCK]) + ++AC_SUBST(LIB2TO3) ++ ++AC_ARG_ENABLE(lib2to3, ++ AS_HELP_STRING([--disable-lib2to3], [disable lib2to3]), ++ [ LIB2TO3="${enableval}" ], [ LIB2TO3=yes ]) ++ + # generate output files + AC_CONFIG_FILES(m4_normalize([ + Makefile.pre +-- +2.34.1 + diff --git a/package/python3/0005-Add-an-option-to-disable-IDLE.patch b/package/python3/0005-Add-an-option-to-disable-IDLE.patch new file mode 100644 index 00000000..e9218af1 --- /dev/null +++ b/package/python3/0005-Add-an-option-to-disable-IDLE.patch @@ -0,0 +1,83 @@ +From ffa7fbceb54918eb518474c8f821fda0a58cf181 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Wed, 22 Feb 2017 17:45:14 -0800 +Subject: [PATCH] Add an option to disable IDLE + +IDLE is an IDE embedded into python, written using Tk, so it doesn't make +much sense to have it into our build. + +Signed-off-by: Maxime Ripard +[ Andrey Smirnov: ported to Python 3.6 ] +Signed-off-by: Andrey Smirnov +[ Adam Duskett: ported to Python 3.10.0 ] +Signed-off-by: Adam Duskett +[ Adam Duskett: ported to Python 3.12.1 ] +Signed-off-by: Adam Duskett +--- + Makefile.pre.in | 9 ++++++++- + configure.ac | 6 ++++++ + 2 files changed, 14 insertions(+), 1 deletion(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 3f314d1354..5fad7f82fb 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -2048,7 +2048,9 @@ bininstall: commoninstall altbininstall + -rm -f $(DESTDIR)$(LIBPC)/python3-embed.pc + (cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION)-embed.pc python3-embed.pc) + -rm -f $(DESTDIR)$(BINDIR)/idle3 ++ifeq (@IDLE@,yes) + (cd $(DESTDIR)$(BINDIR); $(LN) -s idle$(VERSION) idle3) ++endif + -rm -f $(DESTDIR)$(BINDIR)/pydoc3 + ifeq (@PYDOC@,yes) + (cd $(DESTDIR)$(BINDIR); $(LN) -s pydoc$(VERSION) pydoc3) +@@ -2100,7 +2102,6 @@ LIBSUBDIRS= asyncio \ + ensurepip ensurepip/_bundled \ + html \ + http \ +- idlelib idlelib/Icons \ + importlib importlib/resources importlib/metadata \ + json \ + logging \ +@@ -2267,6 +2268,10 @@ TESTSUBDIRS += test/test_lib2to3 \ + test/test_lib2to3/data/fixers/myfixes + endif + ++ifeq (@IDLE@,yes) ++LIBSUBDIRS += idlelib idlelib/Icons ++endif ++ + TEST_MODULES=@TEST_MODULES@ + + .PHONY: libinstall +@@ -2484,7 +2489,9 @@ libainstall: all scripts + ifeq (@LIB2TO3@,yes) + $(INSTALL_SCRIPT) $(SCRIPT_2TO3) $(DESTDIR)$(BINDIR)/2to3-$(VERSION) + endif ++ifeq (@IDLE@,yes) + $(INSTALL_SCRIPT) $(SCRIPT_IDLE) $(DESTDIR)$(BINDIR)/idle$(VERSION) ++endif + ifeq (@PYDOC@,yes) + $(INSTALL_SCRIPT) $(SCRIPT_PYDOC) $(DESTDIR)$(BINDIR)/pydoc$(VERSION) + endif +diff --git a/configure.ac b/configure.ac +index f0354c580d..43086962e9 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -7567,6 +7567,12 @@ AC_ARG_ENABLE(lib2to3, + AS_HELP_STRING([--disable-lib2to3], [disable lib2to3]), + [ LIB2TO3="${enableval}" ], [ LIB2TO3=yes ]) + ++AC_SUBST(IDLE) ++ ++AC_ARG_ENABLE(idle3, ++ AS_HELP_STRING([--disable-idle3], [disable idle3 IDE]), ++ [ IDLE="${enableval}" ], [ IDLE=yes ]) ++ + # generate output files + AC_CONFIG_FILES(m4_normalize([ + Makefile.pre +-- +2.34.1 + diff --git a/package/python3/0006-configure.ac-move-PY_STDLIB_MOD_SET_NA-further-up.patch b/package/python3/0006-configure.ac-move-PY_STDLIB_MOD_SET_NA-further-up.patch new file mode 100644 index 00000000..e594e6cd --- /dev/null +++ b/package/python3/0006-configure.ac-move-PY_STDLIB_MOD_SET_NA-further-up.patch @@ -0,0 +1,44 @@ +From 267516c76208e63b5a3ec7d4dead6c329d8763bb Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 6 Feb 2024 22:46:59 +0100 +Subject: [PATCH] configure.ac: move PY_STDLIB_MOD_SET_NA further up + +We will need PY_STDLIB_MOD_SET_NA in next patches further up in the +configure.ac script. + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 43086962e9..561e33f550 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -95,6 +95,11 @@ AC_DEFUN([PY_CHECK_EMSCRIPTEN_PORT], [ + AS_VAR_POPDEF([py_libs]) + ]) + ++AC_DEFUN([PY_STDLIB_MOD_SET_NA], [ ++ m4_foreach([mod], [$@], [ ++ AS_VAR_SET([py_cv_module_]mod, [n/a])]) ++]) ++ + AC_SUBST([BASECPPFLAGS]) + if test "$srcdir" != . -a "$srcdir" != "$(pwd)"; then + # If we're building out-of-tree, we need to make sure the following +@@ -7258,11 +7263,6 @@ AC_ARG_ENABLE([test-modules], + AC_MSG_RESULT([$TEST_MODULES]) + AC_SUBST([TEST_MODULES]) + +-AC_DEFUN([PY_STDLIB_MOD_SET_NA], [ +- m4_foreach([mod], [$@], [ +- AS_VAR_SET([py_cv_module_]mod, [n/a])]) +-]) +- + # stdlib not available + dnl Modules that are not available on some platforms + dnl AIX has shadow passwords, but access is not via getspent() +-- +2.34.1 + diff --git a/package/python3/0007-Add-option-to-disable-the-sqlite3-module.patch b/package/python3/0007-Add-option-to-disable-the-sqlite3-module.patch new file mode 100644 index 00000000..f26091eb --- /dev/null +++ b/package/python3/0007-Add-option-to-disable-the-sqlite3-module.patch @@ -0,0 +1,61 @@ +From a8566f6ee2a2b859ba5562f2d9f06cb4d271f277 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 6 Feb 2024 22:12:20 +0100 +Subject: [PATCH] Add option to disable the sqlite3 module + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Samuel Martin +[ Andrey Smirnov: ported to Python 3.6 ] +Signed-off-by: Andrey Smirnov +[ Adam Duskett: ported to Python 3.10.0 ] +Signed-off-by: Adam Duskett +Signed-off-by: Thomas Petazzoni +--- + Makefile.pre.in | 5 ++++- + configure.ac | 7 +++++++ + 2 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 5fad7f82fb..7b6c9811a6 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -2108,7 +2108,6 @@ LIBSUBDIRS= asyncio \ + multiprocessing multiprocessing/dummy \ + re \ + site-packages \ +- sqlite3 \ + tkinter \ + tomllib \ + turtledemo \ +@@ -2272,6 +2271,10 @@ ifeq (@IDLE@,yes) + LIBSUBDIRS += idlelib idlelib/Icons + endif + ++ifeq (@SQLITE3@,yes) ++LIBSUBDIRS += sqlite3 ++endif ++ + TEST_MODULES=@TEST_MODULES@ + + .PHONY: libinstall +diff --git a/configure.ac b/configure.ac +index 561e33f550..d1c54bd67c 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -4516,6 +4516,13 @@ AS_VAR_IF([posix_threads], [stub], [ + AC_DEFINE([HAVE_PTHREAD_STUBS], [1], [Define if platform requires stubbed pthreads support]) + ]) + ++AC_SUBST(SQLITE3) ++AC_ARG_ENABLE(sqlite3, ++ AS_HELP_STRING([--disable-sqlite3], [disable sqlite3]), ++ [ SQLITE3="${enableval}" ], [ SQLITE3=yes ]) ++AS_IF([test "$SQLITE3" = "no"], ++ [PY_STDLIB_MOD_SET_NA([_sqlite3])]) ++ + AC_SUBST(PYDOC) + + AC_ARG_ENABLE(pydoc, +-- +2.34.1 + diff --git a/package/python3/0008-Add-an-option-to-disable-the-tk-module.patch b/package/python3/0008-Add-an-option-to-disable-the-tk-module.patch new file mode 100644 index 00000000..97ee2d71 --- /dev/null +++ b/package/python3/0008-Add-an-option-to-disable-the-tk-module.patch @@ -0,0 +1,81 @@ +From c1ec9fa46cd7679fd009f66a3ebed8de95d84f10 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 22 Feb 2017 17:23:42 -0800 +Subject: [PATCH] Add an option to disable the tk module + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Samuel Martin +[ Andrey Smirnov: ported to Python 3.6 ] +Signed-off-by: Andrey Smirnov +[ Adam Duskett: ported to Python 3.10.0 ] +Signed-off-by: Adam Duskett +[ Bernd Kuhls: ported to Python 3.11.4] +Signed-off-by: Bernd Kuhls +[ Adam Duskett: ported to Python 3.12.1 ] +Signed-off-by: Adam Duskett +--- + Makefile.pre.in | 8 +++++--- + configure.ac | 7 +++++++ + 2 files changed, 12 insertions(+), 3 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 7b6c9811a6..6d9527ddd0 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -2108,7 +2108,6 @@ LIBSUBDIRS= asyncio \ + multiprocessing multiprocessing/dummy \ + re \ + site-packages \ +- tkinter \ + tomllib \ + turtledemo \ + unittest \ +@@ -2212,7 +2211,6 @@ TESTSUBDIRS= idlelib/idle_test \ + test/test_peg_generator \ + test/test_pydoc \ + test/test_sqlite3 \ +- test/test_tkinter \ + test/test_tomllib \ + test/test_tomllib/data \ + test/test_tomllib/data/invalid \ +@@ -2232,7 +2230,6 @@ TESTSUBDIRS= idlelib/idle_test \ + test/test_tomllib/data/valid/dates-and-times \ + test/test_tomllib/data/valid/multiline-basic-str \ + test/test_tools \ +- test/test_ttk \ + test/test_unittest \ + test/test_unittest/testmock \ + test/test_warnings \ +@@ -2253,6 +2250,11 @@ TESTSUBDIRS= idlelib/idle_test \ + test/test_multiprocessing_forkserver \ + test/test_multiprocessing_spawn + ++ifeq (@TK@,yes) ++LIBSUBDIRS += tkinter ++TESTSUBDIRS += test/test_tkinter test/test_ttk ++endif ++ + COMPILEALL_OPTS=-j0 + + ifeq (@PYDOC@,yes) +diff --git a/configure.ac b/configure.ac +index d1c54bd67c..4c5cbe4153 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -4529,6 +4529,13 @@ AC_ARG_ENABLE(pydoc, + AS_HELP_STRING([--disable-pydoc], [disable pydoc]), + [ PYDOC="${enableval}" ], [ PYDOC=yes ]) + ++AC_SUBST(TK) ++AC_ARG_ENABLE(tk, ++ AS_HELP_STRING([--disable-tk], [disable tk]), ++ [ TK="${enableval}" ], [ TK=yes ]) ++AS_IF([test "$TK" = "no"], ++ [PY_STDLIB_MOD_SET_NA([_tkinter])]) ++ + # Check for enable-ipv6 + AH_TEMPLATE([ENABLE_IPV6], [Define if --enable-ipv6 is specified]) + AC_MSG_CHECKING([if --enable-ipv6 is specified]) +-- +2.34.1 + diff --git a/package/python3/0009-Add-an-option-to-disable-the-curses-module.patch b/package/python3/0009-Add-an-option-to-disable-the-curses-module.patch new file mode 100644 index 00000000..139bf154 --- /dev/null +++ b/package/python3/0009-Add-an-option-to-disable-the-curses-module.patch @@ -0,0 +1,60 @@ +From d7ea122e8ae506019761b92987b141fe7ea55f76 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 22 Feb 2017 17:31:51 -0800 +Subject: [PATCH] Add an option to disable the curses module + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Samuel Martin +[ Andrey Smirnov: ported to Python 3.6 ] +Signed-off-by: Andrey Smirnov +[ Adam Duskett: ported to Python 3.10.0 ] +Signed-off-by: Adam Duskett +--- + Makefile.pre.in | 5 ++++- + configure.ac | 7 +++++++ + 2 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 6d9527ddd0..283ca1bd60 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -2095,7 +2095,6 @@ LIBSUBDIRS= asyncio \ + concurrent concurrent/futures \ + csv \ + ctypes ctypes/macholib \ +- curses \ + dbm \ + email email/mime \ + encodings \ +@@ -2255,6 +2254,10 @@ LIBSUBDIRS += tkinter + TESTSUBDIRS += test/test_tkinter test/test_ttk + endif + ++ifeq (@CURSES@,yes) ++LIBSUBDIRS += curses ++endif ++ + COMPILEALL_OPTS=-j0 + + ifeq (@PYDOC@,yes) +diff --git a/configure.ac b/configure.ac +index 4c5cbe4153..92d663ed40 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -4523,6 +4523,13 @@ AC_ARG_ENABLE(sqlite3, + AS_IF([test "$SQLITE3" = "no"], + [PY_STDLIB_MOD_SET_NA([_sqlite3])]) + ++AC_SUBST(CURSES) ++AC_ARG_ENABLE(curses, ++ AS_HELP_STRING([--disable-curses], [disable curses]), ++ [ CURSES="${enableval}" ], [ CURSES=yes ]) ++AS_IF([test "$CURSES" = "no"], ++ [PY_STDLIB_MOD_SET_NA([_curses], [_curses_panel])]) ++ + AC_SUBST(PYDOC) + + AC_ARG_ENABLE(pydoc, +-- +2.34.1 + diff --git a/package/python3/0010-Add-an-option-to-disable-expat.patch b/package/python3/0010-Add-an-option-to-disable-expat.patch new file mode 100644 index 00000000..2363aeb0 --- /dev/null +++ b/package/python3/0010-Add-an-option-to-disable-expat.patch @@ -0,0 +1,83 @@ +From d1701f1c89e9d2319ede200052319183fbb4ae18 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 22 Feb 2017 17:40:45 -0800 +Subject: [PATCH] Add an option to disable expat + +This patch replaces the existing --with-system-expat option with a +--with-expat={system,builtin,none} option, which allows to tell Python +whether we want to use the system expat (already installed), the expat +builtin the Python sources, or no expat at all (which disables the +installation of XML modules). + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Samuel Martin +[ Andrey Smirnov: ported to Python 3.6 ] +Signed-off-by: Andrey Smirnov +[ Adam Duskett: ported to Python 3.10.0 ] +Signed-off-by: Adam Duskett +--- + Makefile.pre.in | 5 ++++- + configure.ac | 24 +++++++++++++----------- + 2 files changed, 17 insertions(+), 12 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 283ca1bd60..13f7512f42 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -2113,7 +2113,6 @@ LIBSUBDIRS= asyncio \ + urllib \ + venv venv/scripts venv/scripts/common venv/scripts/posix \ + wsgiref \ +- $(XMLLIBSUBDIRS) \ + xmlrpc \ + zipfile zipfile/_path \ + zoneinfo \ +@@ -2280,6 +2279,10 @@ ifeq (@SQLITE3@,yes) + LIBSUBDIRS += sqlite3 + endif + ++ifeq (@EXPAT@,yes) ++LIBSUBDIRS += $(XMLLIBSUBDIRS) ++endif ++ + TEST_MODULES=@TEST_MODULES@ + + .PHONY: libinstall +diff --git a/configure.ac b/configure.ac +index 92d663ed40..1cb95f41fd 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3823,17 +3823,19 @@ LIBS="$withval $LIBS" + [AC_MSG_RESULT([no])]) + + # Check for use of the system expat library +-AC_MSG_CHECKING([for --with-system-expat]) +-AC_ARG_WITH( +- [system_expat], +- [AS_HELP_STRING( +- [--with-system-expat], +- [build pyexpat module using an installed expat library, see Doc/library/pyexpat.rst (default is no)] +- )], [], [with_system_expat="no"]) +- +-AC_MSG_RESULT([$with_system_expat]) +- +-AS_VAR_IF([with_system_expat], [yes], [ ++AC_MSG_CHECKING(for --with-expat) ++AC_ARG_WITH(expat, ++ AS_HELP_STRING([--with-expat], [select which expat version to use: system, builtin, none]), ++ [], ++ [with_expat="builtin"]) ++AC_MSG_RESULT($with_expat) ++AS_IF([test "$with_expat" != "none"], ++ [EXPAT=yes], ++ [PY_STDLIB_MOD_SET_NA([pyexpat]) ++ EXPAT=no]) ++AC_SUBST(EXPAT) ++ ++AS_VAR_IF([with_expat], [system], [ + LIBEXPAT_CFLAGS=${LIBEXPAT_CFLAGS-""} + LIBEXPAT_LDFLAGS=${LIBEXPAT_LDFLAGS-"-lexpat"} + LIBEXPAT_INTERNAL= +-- +2.34.1 + diff --git a/package/python3/0011-configure.ac-fixup-CC-print-multiarch-output-for-mus.patch b/package/python3/0011-configure.ac-fixup-CC-print-multiarch-output-for-mus.patch new file mode 100644 index 00000000..a92f78fe --- /dev/null +++ b/package/python3/0011-configure.ac-fixup-CC-print-multiarch-output-for-mus.patch @@ -0,0 +1,53 @@ +From 3eccbd53df3c51c1c6ece217d19f1d01eb9575a7 Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Fri, 2 Aug 2019 15:53:16 +0200 +Subject: [PATCH] configure.ac: fixup $CC --print-multiarch output for + musl/uclibc GCC 8+ toolchains + +GCC commit 6834b83784dcf0364eb820e8 (multiarch support for non-glibc linux +systems), which is part of GCC 8+, changed the multiarch logic to use +$arch-linux-musl / $arch-linux-uclibc rather than $arch-linux-gnu. + +This then causes the python3 configure script to error out: + +checking for the platform triplet based on compiler characteristics... powerpc-linux-gnu +configure: error: internal configure error for the platform triplet, please file a bug report + +http://autobuild.buildroot.net/results/cb4/cb49c539501342e45cbe5ade82e588fcdf51f05b + +As it requires that the --print-multiarch output (if not empty) matches the +deduced triplet (which always uses -linux-gnu). + +It isn't quite clear why --print-multiarch returns something for a +non-multiarch toolchain on some architectures (E.G. PowerPC), but as a +workaround, rewrite the --print-multiarch output to match older GCC versions +to keep the configure script happy. + +Signed-off-by: Peter Korsgaard +[Peter: updated for 3.10.2] +Signed-off-by: Vincent Fazio +[Vincent: fixup offsets for 3.12.4] +--- + configure.ac | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 1cb95f41fd..d142af404a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1128,7 +1128,11 @@ AC_MSG_CHECKING([for multiarch]) + AS_CASE([$ac_sys_system], + [Darwin*], [MULTIARCH=""], + [FreeBSD*], [MULTIARCH=""], +- [MULTIARCH=$($CC --print-multiarch 2>/dev/null)] ++ [ ++ # GCC 8+ returns $arch-linux-{musl,uclibc} for musl/uClibc based ++ # toolchains confusing python. Fix that up ++ MULTIARCH=$($CC --print-multiarch 2>/dev/null | sed -E 's/-linux-(musl|uclibc)*$/-linux-gnu/') ++ ] + ) + AC_SUBST([MULTIARCH]) + AC_MSG_RESULT([$MULTIARCH]) +-- +2.34.1 + diff --git a/package/python3/0012-gh-115382-Fix-cross-compiles-when-host-and-target-us.patch b/package/python3/0012-gh-115382-Fix-cross-compiles-when-host-and-target-us.patch new file mode 100644 index 00000000..5a7949b2 --- /dev/null +++ b/package/python3/0012-gh-115382-Fix-cross-compiles-when-host-and-target-us.patch @@ -0,0 +1,140 @@ +From e7fa6023be567251b409527bd005b93335914501 Mon Sep 17 00:00:00 2001 +From: Vincent Fazio <5265893+vfazio@users.noreply.github.com> +Date: Wed, 28 Feb 2024 13:55:04 -0600 +Subject: [PATCH] gh-115382: Fix cross compiles when host and target use same + SOABI + +Previously, when a build was configured to use a host interpreter via +--with-build-python, the PYTHON_FOR_BUILD config value included a path +in PYTHONPATH that pointed to the target's built external modules. + +For "normal" foreign architecture cross compiles, when loading compiled +external libraries, the target libraries were processed first due to +their precedence in sys.path. These libraries were then ruled out due to +a mismatch in the SOABI so the import mechanism continued searching +until it found the host's native modules. + +However, if the host interpreter and the target python were on the same +version + SOABI combination, the host interpreter would attempt to load +the target's external modules due to their precedence in sys.path. + +Despite the "match", the target build may have been linked against a +different libc or may include unsupported instructions so loading or +executing the target's external modules can lead to crashes. + +Now, the path to the target's external modules is no longer defined in +PYTHONPATH to prevent accidentally loading these foreign modules. + +One caveat is that during certain build stages, the target's sysconfig +module requires higher precedence than the host's version in order to +accurately query the target build's configuration. + +This worked previously due to the target's sysconfig data module having +precedence over the host's (see above). In order to keep this desired +behavior, a new environment variable, _PYTHON_SYSCONFIGDATA_PATH, has +been defined so sysconfig can search this directory for the target's +sysconfig data. + +Signed-off-by: Vincent Fazio +Upstream-issue: https://github.com/python/cpython/issues/115382 +Upstream: https://github.com/python/cpython/pull/116294 +--- + Lib/sysconfig.py | 15 ++++++++++++++- + Lib/test/libregrtest/main.py | 1 + + Lib/test/pythoninfo.py | 1 + + Tools/scripts/run_tests.py | 1 + + configure | 2 +- + configure.ac | 2 +- + 6 files changed, 19 insertions(+), 3 deletions(-) + +diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py +index 122d441bd1..260aec3127 100644 +--- a/Lib/sysconfig.py ++++ b/Lib/sysconfig.py +@@ -533,7 +533,20 @@ def _init_posix(vars): + """Initialize the module as appropriate for POSIX systems.""" + # _sysconfigdata is generated at build time, see _generate_posix_vars() + name = _get_sysconfigdata_name() +- _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0) ++ ++ # For cross builds, the path to the target's sysconfigdata must be specified ++ # so it can be imported. It cannot be in PYTHONPATH, as foreign modules in ++ # sys.path can cause crashes when loaded by the host interpreter. ++ # Rely on truthiness as a valueless env variable is still an empty string. ++ # See OS X note in _generate_posix_vars re _sysconfigdata. ++ if (path := os.environ.get('_PYTHON_SYSCONFIGDATA_PATH')): ++ from importlib.machinery import FileFinder, SourceFileLoader, SOURCE_SUFFIXES ++ from importlib.util import module_from_spec ++ spec = FileFinder(path, (SourceFileLoader, SOURCE_SUFFIXES)).find_spec(name) ++ _temp = module_from_spec(spec) ++ spec.loader.exec_module(_temp) ++ else: ++ _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0) + build_time_vars = _temp.build_time_vars + vars.update(build_time_vars) + +diff --git a/Lib/test/libregrtest/main.py b/Lib/test/libregrtest/main.py +index e41646d2d1..f54e570728 100644 +--- a/Lib/test/libregrtest/main.py ++++ b/Lib/test/libregrtest/main.py +@@ -576,6 +576,7 @@ def _add_cross_compile_opts(self, regrtest_opts): + '_PYTHON_PROJECT_BASE', + '_PYTHON_HOST_PLATFORM', + '_PYTHON_SYSCONFIGDATA_NAME', ++ "_PYTHON_SYSCONFIGDATA_PATH", + 'PYTHONPATH' + } + old_environ = os.environ +diff --git a/Lib/test/pythoninfo.py b/Lib/test/pythoninfo.py +index 6efeaad812..d43e52c9e4 100644 +--- a/Lib/test/pythoninfo.py ++++ b/Lib/test/pythoninfo.py +@@ -326,6 +326,7 @@ def format_groups(groups): + "_PYTHON_HOST_PLATFORM", + "_PYTHON_PROJECT_BASE", + "_PYTHON_SYSCONFIGDATA_NAME", ++ "_PYTHON_SYSCONFIGDATA_PATH", + "__PYVENV_LAUNCHER__", + + # Sanitizer options +diff --git a/Tools/scripts/run_tests.py b/Tools/scripts/run_tests.py +index 445a34ae3e..4077a83424 100644 +--- a/Tools/scripts/run_tests.py ++++ b/Tools/scripts/run_tests.py +@@ -42,6 +42,7 @@ def main(regrtest_args): + '_PYTHON_PROJECT_BASE', + '_PYTHON_HOST_PLATFORM', + '_PYTHON_SYSCONFIGDATA_NAME', ++ "_PYTHON_SYSCONFIGDATA_PATH", + 'PYTHONPATH' + } + environ = { +diff --git a/configure b/configure +index 6dc8a66e48..a69346db8c 100755 +--- a/configure ++++ b/configure +@@ -3689,7 +3689,7 @@ fi + fi + ac_cv_prog_PYTHON_FOR_REGEN=$with_build_python + PYTHON_FOR_FREEZE="$with_build_python" +- PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$with_build_python ++ PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) _PYTHON_SYSCONFIGDATA_PATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`) '$with_build_python + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_build_python" >&5 + printf "%s\n" "$with_build_python" >&6; } + +diff --git a/configure.ac b/configure.ac +index 1cb95f41fd..de420dde2c 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -169,7 +169,7 @@ AC_ARG_WITH([build-python], + dnl Build Python interpreter is used for regeneration and freezing. + ac_cv_prog_PYTHON_FOR_REGEN=$with_build_python + PYTHON_FOR_FREEZE="$with_build_python" +- PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$with_build_python ++ PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) _PYTHON_SYSCONFIGDATA_PATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`) '$with_build_python + AC_MSG_RESULT([$with_build_python]) + ], [ + AS_VAR_IF([cross_compiling], [yes], +-- +2.34.1 + diff --git a/package/python3/Config.in b/package/python3/Config.in new file mode 100644 index 00000000..38f0580a --- /dev/null +++ b/package/python3/Config.in @@ -0,0 +1,131 @@ +comment "python3 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 + +config BR2_PACKAGE_PYTHON3 + bool "python3" + depends on BR2_USE_WCHAR + # uses fork() + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS # libffi + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBFFI + select BR2_PACKAGE_BLUEZ5_UTILS_HEADERS if BR2_PACKAGE_BLUEZ5_UTILS + help + The python language interpreter. + + http://www.python.org/ + +if BR2_PACKAGE_PYTHON3 + +choice + prompt "python3 module format to install" + default BR2_PACKAGE_PYTHON3_PYC_ONLY + help + Select Python module format to install on target (py, pyc or + both) + +config BR2_PACKAGE_PYTHON3_PY_ONLY + bool ".py sources only" + +config BR2_PACKAGE_PYTHON3_PYC_ONLY + bool ".pyc compiled sources only" + +config BR2_PACKAGE_PYTHON3_PY_PYC + bool ".py sources and .pyc compiled" + +endchoice + +menu "core python3 modules" + +comment "The following modules are unusual or require extra libraries" + +config BR2_PACKAGE_PYTHON3_2TO3 + bool "2to3 module" + help + code translation from python 2 to 3 + +config BR2_PACKAGE_PYTHON3_BERKELEYDB + bool "berkeleydb" + select BR2_PACKAGE_BERKELEYDB + select BR2_PACKAGE_BERKELEYDB_DBM + help + berkeleydb module for Python3 + +config BR2_PACKAGE_PYTHON3_BZIP2 + bool "bz2 module" + select BR2_PACKAGE_BZIP2 + help + bzip2 module for Python3 + +config BR2_PACKAGE_PYTHON3_CODECSCJK + bool "codecscjk module" + help + Chinese/Japanese/Korean codecs module for Python (large). + +config BR2_PACKAGE_PYTHON3_CURSES + bool "curses module" + select BR2_PACKAGE_NCURSES + help + curses module for Python3. + +config BR2_PACKAGE_PYTHON3_DECIMAL + bool "decimal module" + select BR2_PACKAGE_MPDECIMAL + help + decimal module for Python3. + +config BR2_PACKAGE_PYTHON3_OSSAUDIODEV + bool "ossaudiodev module" + help + ossaudiodev module for Python3. + +config BR2_PACKAGE_PYTHON3_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 + bool "ssl" + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_BLAKE2 + help + _ssl module for Python3 (required for https in urllib etc). + +config BR2_PACKAGE_PYTHON3_UNICODEDATA + bool "unicodedata module" + default y + help + Unicode character database (used by stringprep module) + (large). + +config BR2_PACKAGE_PYTHON3_SQLITE + bool "sqlite module" + select BR2_PACKAGE_SQLITE + help + SQLite database support + +config BR2_PACKAGE_PYTHON3_PYEXPAT + 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 + help + zlib support in Python3 + +endmenu + +endif diff --git a/package/python3/Config.in.host b/package/python3/Config.in.host new file mode 100644 index 00000000..f3fcd635 --- /dev/null +++ b/package/python3/Config.in.host @@ -0,0 +1,31 @@ +config BR2_PACKAGE_HOST_PYTHON3 + bool "host python3" + help + The python language interpreter. Host package. + + http://www.python.org/ + +if BR2_PACKAGE_HOST_PYTHON3 + +config BR2_PACKAGE_HOST_PYTHON3_BZIP2 + bool "bzip2" + help + bz2 module for host Python3. + +config BR2_PACKAGE_HOST_PYTHON3_XZ + bool "xz" + help + xz (a.k.a lzma) module for host Python3 + +config BR2_PACKAGE_HOST_PYTHON3_CURSES + bool "curses" + help + curses module for host Python3. + +config BR2_PACKAGE_HOST_PYTHON3_SSL + bool "ssl" + select BR2_PACKAGE_HOST_OPENSSL + help + _ssl module for host Python3. + +endif diff --git a/package/python3/python3.hash b/package/python3/python3.hash new file mode 100644 index 00000000..d680a968 --- /dev/null +++ b/package/python3/python3.hash @@ -0,0 +1,5 @@ +# From https://www.python.org/downloads/release/python-3125/ +md5 02c7d269e077f4034963bba6befdc715 Python-3.12.5.tar.xz +# Locally computed +sha256 fa8a2e12c5e620b09f53e65bcd87550d2e5a1e2e04bf8ba991dcc55113876397 Python-3.12.5.tar.xz +sha256 3b2f81fe21d181c499c59a256c8e1968455d6689d269aa85373bfb6af41da3bf LICENSE diff --git a/package/python3/python3.mk b/package/python3/python3.mk new file mode 100644 index 00000000..b31e6df1 --- /dev/null +++ b/package/python3/python3.mk @@ -0,0 +1,307 @@ +################################################################################ +# +# python3 +# +################################################################################ + +PYTHON3_VERSION_MAJOR = 3.12 +PYTHON3_VERSION = $(PYTHON3_VERSION_MAJOR).5 +PYTHON3_SOURCE = Python-$(PYTHON3_VERSION).tar.xz +PYTHON3_SITE = https://python.org/ftp/python/$(PYTHON3_VERSION) +PYTHON3_LICENSE = Python-2.0, others +PYTHON3_LICENSE_FILES = LICENSE +PYTHON3_CPE_ID_VENDOR = python +PYTHON3_CPE_ID_PRODUCT = python + +# This host Python is installed in $(HOST_DIR), as it is needed when +# cross-compiling third-party Python modules. + +HOST_PYTHON3_CONF_OPTS += \ + --without-ensurepip \ + --without-cxx-main \ + --disable-sqlite3 \ + --disable-tk \ + --with-expat=system \ + --disable-test-modules \ + --disable-idle3 + +# Make sure that LD_LIBRARY_PATH overrides -rpath. +# This is needed because libpython may be installed at the same time that +# python is called. +# TODO: nis and ossaudiodev modules will be dropped in 3.13: https://peps.python.org/pep-0594/ +HOST_PYTHON3_CONF_ENV += \ + LDFLAGS="$(HOST_LDFLAGS) -Wl,--enable-new-dtags" \ + py_cv_module_unicodedata=yes \ + py_cv_module__codecs_cn=n/a \ + py_cv_module__codecs_hk=n/a \ + py_cv_module__codecs_iso2022=n/a \ + py_cv_module__codecs_jp=n/a \ + py_cv_module__codecs_kr=n/a \ + py_cv_module__codecs_tw=n/a \ + py_cv_module__uuid=n/a \ + py_cv_module_nis=n/a \ + py_cv_module_ossaudiodev=n/a + +PYTHON3_DEPENDENCIES = host-python3 libffi + +HOST_PYTHON3_DEPENDENCIES = \ + host-autoconf-archive \ + host-expat \ + host-libffi \ + host-pkgconf \ + host-zlib + +ifeq ($(BR2_PACKAGE_HOST_PYTHON3_BZIP2),y) +HOST_PYTHON3_DEPENDENCIES += host-bzip2 +else +HOST_PYTHON3_CONF_ENV += py_cv_module__bz2=n/a +endif + +ifeq ($(BR2_PACKAGE_HOST_PYTHON3_XZ),y) +HOST_PYTHON3_DEPENDENCIES += host-xz +else +HOST_PYTHON3_CONF_ENV += py_cv_module__lzma=n/a +endif + +ifeq ($(BR2_PACKAGE_HOST_PYTHON3_CURSES),y) +HOST_PYTHON3_DEPENDENCIES += host-ncurses +else +HOST_PYTHON3_CONF_OPTS += --disable-curses +endif + +ifeq ($(BR2_PACKAGE_HOST_PYTHON3_SSL),y) +HOST_PYTHON3_DEPENDENCIES += host-openssl +else +HOST_PYTHON3_CONF_ENV += \ + py_cv_module__hashlib=n/a \ + py_cv_module__ssl=n/a +endif + +PYTHON3_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_PYTHON3_2TO3),y) +PYTHON3_CONF_OPTS += --enable-lib2to3 +else +PYTHON3_CONF_OPTS += --disable-lib2to3 +endif + +ifeq ($(BR2_PACKAGE_PYTHON3_BERKELEYDB),y) +PYTHON3_DEPENDENCIES += berkeleydb +else +PYTHON3_CONF_ENV += py_cv_module__dbm=n/a +endif + +ifeq ($(BR2_PACKAGE_PYTHON3_READLINE),y) +PYTHON3_CONF_OPTS += --with-readline +PYTHON3_DEPENDENCIES += readline +else +PYTHON3_CONF_OPTS += --without-readline +endif + +ifeq ($(BR2_PACKAGE_PYTHON3_CURSES),y) +PYTHON3_DEPENDENCIES += ncurses +else +PYTHON3_CONF_OPTS += --disable-curses +endif + +ifeq ($(BR2_PACKAGE_PYTHON3_DECIMAL),y) +PYTHON3_DEPENDENCIES += mpdecimal +PYTHON3_CONF_OPTS += --with-system-libmpdec +else +PYTHON3_CONF_ENV += py_cv_module__decimal=n/a +endif + +ifeq ($(BR2_PACKAGE_PYTHON3_PYEXPAT),y) +PYTHON3_DEPENDENCIES += expat +PYTHON3_CONF_OPTS += --with-expat=system +else +PYTHON3_CONF_OPTS += --with-expat=none +endif + +ifeq ($(BR2_PACKAGE_PYTHON3_SQLITE),y) +PYTHON3_DEPENDENCIES += sqlite +else +PYTHON3_CONF_OPTS += --disable-sqlite3 +endif + +ifeq ($(BR2_PACKAGE_PYTHON3_SSL),y) +PYTHON3_DEPENDENCIES += openssl +PYTHON3_CONF_OPTS += --with-openssl=$(STAGING_DIR)/usr +else +PYTHON3_CONF_ENV += \ + py_cv_module__hashlib=n/a \ + py_cv_module__ssl=n/a +endif + +ifneq ($(BR2_PACKAGE_PYTHON3_CODECSCJK),y) +PYTHON3_CONF_ENV += \ + py_cv_module__codecs_cn=n/a \ + py_cv_module__codecs_hk=n/a \ + py_cv_module__codecs_iso2022=n/a \ + py_cv_module__codecs_jp=n/a \ + py_cv_module__codecs_kr=n/a \ + py_cv_module__codecs_tw=n/a +endif + +ifneq ($(BR2_PACKAGE_PYTHON3_UNICODEDATA),y) +PYTHON3_CONF_ENV += py_cv_module_unicodedata=n/a +endif + +# Disable auto-detection of uuid.h (util-linux) +# which would add _uuid module support, instead +# default to the pure python implementation +PYTHON3_CONF_ENV += py_cv_module__uuid=n/a + +ifeq ($(BR2_PACKAGE_PYTHON3_BZIP2),y) +PYTHON3_DEPENDENCIES += bzip2 +else +PYTHON3_CONF_ENV += py_cv_module__bz2=n/a +endif + +ifeq ($(BR2_PACKAGE_PYTHON3_XZ),y) +PYTHON3_DEPENDENCIES += xz +else +PYTHON3_CONF_ENV += py_cv_module__lzma=n/a +endif + +ifeq ($(BR2_PACKAGE_PYTHON3_ZLIB),y) +PYTHON3_DEPENDENCIES += zlib +else +PYTHON3_CONF_ENV += py_cv_module_zlib=n/a +endif + +ifneq ($(BR2_PACKAGE_PYTHON3_OSSAUDIODEV),y) +PYTHON3_CONF_ENV += py_cv_module_ossaudiodev=n/a +endif + +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 \ + py_cv_module_nis=n/a + +# 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 + +ifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y) +PYTHON3_DEPENDENCIES += gettext +endif + +PYTHON3_CONF_OPTS += \ + --without-ensurepip \ + --without-cxx-main \ + --with-build-python=$(HOST_DIR)/bin/python3 \ + --with-system-ffi \ + --disable-pydoc \ + --disable-test-modules \ + --disable-tk \ + --disable-idle3 \ + --disable-pyc-build + +# +# Remove useless files. In the config/ directory, only the Makefile +# and the pyconfig.h files are needed at runtime. +# +define PYTHON3_REMOVE_USELESS_FILES + rm -f $(TARGET_DIR)/usr/bin/python$(PYTHON3_VERSION_MAJOR)-config + rm -f $(TARGET_DIR)/usr/bin/python3-config + find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/config-$(PYTHON3_VERSION_MAJOR)*/ \ + -depth -type f -not -name Makefile -exec rm -rf {} \; + find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/ -depth -type d \ + -name __pycache__ -exec rm -rf {} \; +endef + +PYTHON3_POST_INSTALL_TARGET_HOOKS += PYTHON3_REMOVE_USELESS_FILES + +# +# Make sure libpython gets stripped out on target +# +define PYTHON3_ENSURE_LIBPYTHON_STRIPPED + chmod u+w $(TARGET_DIR)/usr/lib/libpython$(PYTHON3_VERSION_MAJOR)*.so +endef + +PYTHON3_POST_INSTALL_TARGET_HOOKS += PYTHON3_ENSURE_LIBPYTHON_STRIPPED + +PYTHON3_AUTORECONF = YES +PYTHON3_AUTORECONF_OPTS = --include=$(HOST_DIR)/share/autoconf-archive + +define PYTHON3_INSTALL_SYMLINK + ln -fs python3 $(TARGET_DIR)/usr/bin/python +endef + +PYTHON3_POST_INSTALL_TARGET_HOOKS += PYTHON3_INSTALL_SYMLINK + +define HOST_PYTHON3_INSTALL_SYMLINK + ln -fs python3 $(HOST_DIR)/bin/python + ln -fs python3-config $(HOST_DIR)/bin/python-config +endef + +HOST_PYTHON3_POST_INSTALL_HOOKS += HOST_PYTHON3_INSTALL_SYMLINK + +# Provided to other packages +PYTHON3_PATH = $(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/ + +# Support for socket.AF_BLUETOOTH +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_HEADERS),y) +PYTHON3_DEPENDENCIES += bluez5_utils-headers +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) + +ifeq ($(BR2_REPRODUCIBLE),y) +define PYTHON3_FIX_TIME + find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR) -name '*.py' -print0 | \ + xargs -0 --no-run-if-empty touch -d @$(SOURCE_DATE_EPOCH) +endef +endif + +define PYTHON3_CREATE_PYC_FILES + $(PYTHON3_FIX_TIME) + PYTHONPATH="$(PYTHON3_PATH)" \ + $(HOST_DIR)/bin/python$(PYTHON3_VERSION_MAJOR) \ + $(PYTHON3_DIR)/Lib/compileall.py \ + $(if $(VERBOSE),,-q) \ + $(if $(BR2_PACKAGE_PYTHON3_PYC_ONLY),-b) \ + -s $(TARGET_DIR) \ + -p / \ + $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR) +endef + +ifeq ($(BR2_PACKAGE_PYTHON3_PYC_ONLY)$(BR2_PACKAGE_PYTHON3_PY_PYC),y) +PYTHON3_TARGET_FINALIZE_HOOKS += PYTHON3_CREATE_PYC_FILES +endif + +ifeq ($(BR2_PACKAGE_PYTHON3_PYC_ONLY),y) +define PYTHON3_REMOVE_PY_FILES + find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR) -name '*.py' \ + $(if $(strip $(KEEP_PYTHON_PY_FILES)),-not \( $(call finddirclauses,$(TARGET_DIR),$(KEEP_PYTHON_PY_FILES)) \) ) \ + -print0 | \ + xargs -0 --no-run-if-empty rm -f +endef +PYTHON3_TARGET_FINALIZE_HOOKS += PYTHON3_REMOVE_PY_FILES +endif + +# Normally, *.pyc files should not have been compiled, but just in +# case, we make sure we remove all of them. +ifeq ($(BR2_PACKAGE_PYTHON3_PY_ONLY),y) +define PYTHON3_REMOVE_PYC_FILES + find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR) -name '*.pyc' -print0 | \ + xargs -0 --no-run-if-empty rm -f +endef +PYTHON3_TARGET_FINALIZE_HOOKS += PYTHON3_REMOVE_PYC_FILES +endif + +# In all cases, we don't want to keep the optimized .opt-1.pyc and +# .opt-2.pyc files, since they can't work without their non-optimized +# variant. +define PYTHON3_REMOVE_OPTIMIZED_PYC_FILES + find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR) -name '*.opt-1.pyc' -print0 -o -name '*.opt-2.pyc' -print0 | \ + xargs -0 --no-run-if-empty rm -f +endef +PYTHON3_TARGET_FINALIZE_HOOKS += PYTHON3_REMOVE_OPTIMIZED_PYC_FILES diff --git a/package/qbee-agent/Config.in b/package/qbee-agent/Config.in new file mode 100644 index 00000000..4fbe6d40 --- /dev/null +++ b/package/qbee-agent/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_QBEE_AGENT + bool "qbee-agent" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_USE_MMU # bash + depends on !BR2_STATIC_LIBS # shadow + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 # shadow + select BR2_PACKAGE_HOST_GO + select BR2_PACKAGE_IPTABLES # runtime + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash + select BR2_PACKAGE_SHADOW # runtime + select BR2_PACKAGE_BASH # runtime + help + Qbee is a device management platform that comprise of an + open-source agent and a hosted SaaS backend. This config + installs pre-built static binaries made with the official + public signing key for qbee.io. The binaries will work + seamlessly with the qbee.io device management backend. + + https://github.com/qbee-io/qbee-agent + https://qbee.io + +comment "qbee-agent needs a toolchain w/ headers >= 4.14, dynamic library" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 diff --git a/package/qbee-agent/qbee-agent.hash b/package/qbee-agent/qbee-agent.hash new file mode 100644 index 00000000..9be642ef --- /dev/null +++ b/package/qbee-agent/qbee-agent.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1f77442186f29fa7a0bdf1382334cb05f48af3f1b606e62b316f0a99618b5a9f qbee-agent-2024.23-go2.tar.gz +sha256 02d07d96be99eb042b01ba650079a440ce26a78c5e0e1e8060c33a8c9e200404 LICENSE diff --git a/package/qbee-agent/qbee-agent.mk b/package/qbee-agent/qbee-agent.mk new file mode 100644 index 00000000..aba9edb8 --- /dev/null +++ b/package/qbee-agent/qbee-agent.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# qbee-agent package +# +################################################################################ + +# keep QBEE_AGENT_COMMIT_ID in sync when updating +QBEE_AGENT_VERSION = 2024.23 +QBEE_AGENT_SITE = $(call github,qbee-io,qbee-agent,$(QBEE_AGENT_VERSION)) +QBEE_AGENT_LICENSE = Apache-2.0 +QBEE_AGENT_LICENSE_FILES = LICENSE + +QBEE_AGENT_COMMIT_ID = 3219c17730eab4c80598494732b4bed4c4c18b51 + +QBEE_AGENT_GOMOD = go.qbee.io/agent + +QBEE_AGENT_LDFLAGS = -s -w \ + -X $(QBEE_AGENT_GOMOD)/app.Version=$(QBEE_AGENT_VERSION) \ + -X $(QBEE_AGENT_GOMOD)/app.Commit=$(QBEE_AGENT_COMMIT_ID) + +define QBEE_AGENT_INSTALL_CERT + $(INSTALL) -D -m 0600 $(@D)/package/share/ssl/ca.cert \ + $(TARGET_DIR)/etc/qbee/ppkeys/ca.cert +endef + +QBEE_AGENT_POST_INSTALL_TARGET_HOOKS += QBEE_AGENT_INSTALL_CERT + +define QBEE_AGENT_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(@D)/package/init-scripts/systemd/qbee-agent.service \ + $(TARGET_DIR)/usr/lib/systemd/system/qbee-agent.service +endef + +define QBEE_AGENT_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 $(@D)/package/init-scripts/sysvinit/qbee-agent \ + $(TARGET_DIR)/etc/init.d/S99qbee-agent +endef + +$(eval $(golang-package)) diff --git a/package/qcom-db410c-firmware/Config.in b/package/qcom-db410c-firmware/Config.in new file mode 100644 index 00000000..9f688574 --- /dev/null +++ b/package/qcom-db410c-firmware/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_QCOM_DB410C_FIRMWARE + bool "qcom-db410c-firmware" + select BR2_PACKAGE_HOST_MTOOLS + help + Wifi/BT firmware for Qualcomm Dragonboard 410c SBC. + + https://releases.linaro.org/96boards/dragonboard410c/qualcomm/firmware/ diff --git a/package/qcom-db410c-firmware/qcom-db410c-firmware.hash b/package/qcom-db410c-firmware/qcom-db410c-firmware.hash new file mode 100644 index 00000000..e8ac31eb --- /dev/null +++ b/package/qcom-db410c-firmware/qcom-db410c-firmware.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 46953b974c5c58c7ca66db414437c0268b033ac9d28127e98d9c4e1a49359da5 linux-board-support-package-r1034.2.1.zip +sha256 11e60ad6f83c2a86e40dca374c24230b53650dd3e0adf2e72c15f8cafedc2e5a LICENSE diff --git a/package/qcom-db410c-firmware/qcom-db410c-firmware.mk b/package/qcom-db410c-firmware/qcom-db410c-firmware.mk new file mode 100644 index 00000000..cf4b59b7 --- /dev/null +++ b/package/qcom-db410c-firmware/qcom-db410c-firmware.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# qcom-db410c-firmware +# +################################################################################ + +QCOM_DB410C_FIRMWARE_VERSION = 1034.2.1 +QCOM_DB410C_FIRMWARE_BASE = linux-board-support-package-r$(QCOM_DB410C_FIRMWARE_VERSION) +QCOM_DB410C_FIRMWARE_SOURCE = $(QCOM_DB410C_FIRMWARE_BASE).zip +QCOM_DB410C_FIRMWARE_SITE = https://releases.linaro.org/96boards/dragonboard410c/qualcomm/firmware +QCOM_DB410C_FIRMWARE_LICENSE = Qualcomm firmware license +QCOM_DB410C_FIRMWARE_LICENSE_FILES = LICENSE +QCOM_DB410C_FIRMWARE_DEPENDENCIES = host-mtools + +define QCOM_DB410C_FIRMWARE_EXTRACT_CMDS + $(UNZIP) -d $(@D) \ + $(QCOM_DB410C_FIRMWARE_DL_DIR)/$(QCOM_DB410C_FIRMWARE_SOURCE) + mv $(@D)/$(QCOM_DB410C_FIRMWARE_BASE)/* $(@D) + rmdir $(@D)/$(QCOM_DB410C_FIRMWARE_BASE) +endef + +# Install the Wifi/Bt firmware blobs to target. These commands are +# based on firmware-qcom-dragonboard410c_*.bb in the OpenEmbedded +# meta-qcom layer, see https://github.com/ndechesne/meta-qcom +define QCOM_DB410C_FIRMWARE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0644 \ + $(@D)/efs-seed/fs_image_linux.tar.gz.mbn.img \ + $(TARGET_DIR)/boot/modem_fsg + + $(INSTALL) -d $(TARGET_DIR)/lib/firmware + cp -r $(@D)/proprietary-linux/wlan \ + $(TARGET_DIR)/lib/firmware/ + + $(INSTALL) -d $(TARGET_DIR)/lib/firmware/qcom/msm8916 + MTOOLS_SKIP_CHECK=1 $(HOST_DIR)/bin/mcopy -n -i \ + $(@D)/bootloaders-linux/NON-HLOS.bin \ + ::image/modem.* ::image/mba.mbn ::image/wcnss.* \ + $(TARGET_DIR)/lib/firmware/qcom/msm8916 +endef + +$(eval $(generic-package)) diff --git a/package/qdecoder/Config.in b/package/qdecoder/Config.in new file mode 100644 index 00000000..48738776 --- /dev/null +++ b/package/qdecoder/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_QDECODER + bool "qdecoder" + depends on !BR2_STATIC_LIBS + help + qDecoder is a simple and powerful CGI library + for the C/C++ programming language. + + http://wolkykim.github.io/qdecoder diff --git a/package/qdecoder/qdecoder.hash b/package/qdecoder/qdecoder.hash new file mode 100644 index 00000000..05337777 --- /dev/null +++ b/package/qdecoder/qdecoder.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 edd32bd5119d276afa9e01cd54a1c23049cad4e96dc6a8e48ac324580e085ebb qdecoder-12.1.0.tar.gz +sha256 41f34ba1ed6e5d8d3488992311f474cd3f614b82bada88ae53216946026cfae7 COPYING diff --git a/package/qdecoder/qdecoder.mk b/package/qdecoder/qdecoder.mk new file mode 100644 index 00000000..9544dcf5 --- /dev/null +++ b/package/qdecoder/qdecoder.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# qdecoder +# +################################################################################ + +QDECODER_VERSION = 12.1.0 +QDECODER_SITE = $(call github,wolkykim,qdecoder,v$(QDECODER_VERSION)) +QDECODER_LICENSE = BSD-2-Clause +QDECODER_LICENSE_FILES = COPYING +QDECODER_CPE_ID_VALID = YES +QDECODER_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' + +QDECODER_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch b/package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch new file mode 100644 index 00000000..f9e523a6 --- /dev/null +++ b/package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch @@ -0,0 +1,50 @@ +From d6fea3c321c7eb18e6dd151f5d4b0cc46b77bcc0 Mon Sep 17 00:00:00 2001 +From: Dario Binacchi +Date: Tue, 30 Apr 2024 09:40:55 +0200 +Subject: [PATCH] tests/fp/meson: don't build fp-bench test if fenv.h is + missing + +The fp-bench test (i. e. tests/fp/fp-bench.c) use fenv.h that is not +always provided by the libc (uClibc). The patch disables its compilation +in case the header is not available. + +The patch is based on a suggestion from Paolo Bonzini, which you can +find at the following link. + +Link: https://lists.nongnu.org/archive/html/qemu-devel/2021-03/msg00492.html +Suggested-by: Paolo Bonzini +Signed-off-by: Dario Binacchi +[Dario: make the patch to be applied with fuzz factor 0] +Upstream: https://patchwork.ozlabs.org/project/qemu-devel/patch/20240430164752.645521-1-dario.binacchi@amarulasolutions.com/ +--- + tests/fp/meson.build | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +diff --git a/tests/fp/meson.build b/tests/fp/meson.build +index 114b4b483ea7..0e1237be54ed 100644 +--- a/tests/fp/meson.build ++++ b/tests/fp/meson.build +@@ -126,12 +126,14 @@ test('fp-test-mulAdd', fptest, + ['f16_mulAdd', 'f32_mulAdd', 'f64_mulAdd', 'f128_mulAdd'], + suite: ['softfloat-slow', 'softfloat-ops-slow', 'slow'], timeout: 180) + +-executable( +- 'fp-bench', +- ['fp-bench.c', '../../fpu/softfloat.c'], +- dependencies: [qemuutil, libtestfloat, libsoftfloat], +- c_args: fpcflags, +-) ++if cc.has_header('fenv.h') ++ executable( ++ 'fp-bench', ++ ['fp-bench.c', '../../fpu/softfloat.c'], ++ dependencies: [qemuutil, libtestfloat, libsoftfloat], ++ c_args: fpcflags, ++ ) ++endif + + fptestlog2 = executable( + 'fp-test-log2', +-- +2.34.1 + diff --git a/package/qemu/Config.in b/package/qemu/Config.in new file mode 100644 index 00000000..608e4d42 --- /dev/null +++ b/package/qemu/Config.in @@ -0,0 +1,373 @@ +config BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET + bool + # Only tested on these architectures + default y if BR2_aarch64 + default y if BR2_arm && !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV5 + default y if BR2_i386 + default y if BR2_mips + default y if BR2_mipsel + default y if BR2_powerpc64 + default y if BR2_powerpc64le + default y if BR2_riscv + default y if BR2_s390x + default y if BR2_x86_64 + +comment "QEMU requires a toolchain with wchar, threads, gcc >= 8" + depends on BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET + depends on BR2_USE_MMU + depends on !(BR2_TOOLCHAIN_HAS_THREADS && BR2_USE_WCHAR) || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_8 + +menuconfig BR2_PACKAGE_QEMU + bool "QEMU" + depends on BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR # gettext + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_ZLIB + help + QEMU is a generic and open source machine emulator and + virtualizer. + + When used as a machine emulator, QEMU can run OSes and + programs made for one machine (e.g. an ARM board) on a + different machine (e.g. your own PC). By using dynamic + translation, it achieves very good performance. + + When used as a virtualizer, QEMU achieves near native + performances by executing the guest code directly on the + host CPU. QEMU supports virtualization when executing under + the Xen hypervisor or using the KVM kernel module in + Linux. When using KVM, QEMU can virtualize x86, server and + embedded PowerPC, and S390 guests. + + https://www.qemu.org/ + +if BR2_PACKAGE_QEMU + +comment "Emulators selection" + +config BR2_PACKAGE_QEMU_SYSTEM + bool "Enable systems emulation" + depends on !BR2_STATIC_LIBS # dtc + select BR2_PACKAGE_PIXMAN + select BR2_PACKAGE_QEMU_FDT if !BR2_PACKAGE_QEMU_CHOOSE_TARGETS + help + Say 'y' to build system emulators/virtualisers. + +if BR2_PACKAGE_QEMU_SYSTEM + +config BR2_PACKAGE_QEMU_BLOBS + bool "Install binary blobs" + default y + help + Say 'y' here (the default) to install binary blobs (such as + BIOS or firmwares for the different machines simulated by + QEMU). Say 'n' to not install those blobs. + + Note: Some machines may be unbootable without those blobs. + If unsure, say 'y'. + +config BR2_PACKAGE_QEMU_SLIRP + bool "Enable user mode networking (SLIRP)" + select BR2_PACKAGE_SLIRP + help + Enable user mode network stack, which is the default + networking backend. It requires no administrator privileges + and generally is the easiest to use but has some + limitations: + + - there is a lot of overhead so the performance is poor; + - in general ICMP does not work (can't ping from/to a guest) + - on Linux hosts, ping does work from within the guest, but it + needs initial setup by root (once per host) + - the guest is not directly accessible from the host or the + external network + + User Networking is implemented using "slirp", which provides a + full TCP/IP stack within QEMU and uses that stack to implement + a virtual NAT'd network. + + Notice that this option does not disable other networking + modes. + +config BR2_PACKAGE_QEMU_SDL + bool "Enable SDL frontend" + select BR2_PACKAGE_SDL2 + help + Say 'y' to enable the SDL frontend, that is, a graphical + window presenting the VM's display. + +config BR2_PACKAGE_QEMU_FDT + bool "Enable FDT" + select BR2_PACKAGE_DTC + help + Say 'y' here to have QEMU capable of constructing Device + Trees, and passing them to the VMs. + +config BR2_PACKAGE_QEMU_TRACING + bool "Enable tracing" + help + Say 'y' to enable the "log" tracing infrastructure in QEMU, + used for debugging, profiling, and observing execution. For + detailed documentation, see + + https://www.qemu.org/docs/master/devel/tracing.html + +endif # BR2_PACKAGE_QEMU_SYSTEM + +comment "systems emulation needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_QEMU_LINUX_USER + bool "Enable Linux user-land emulation" + help + Say 'y' to build Linux user-land emulators. + +# Note: bsd-user can not be build on Linux + +config BR2_PACKAGE_QEMU_CHOOSE_TARGETS + bool "Select individual emulator targets" + depends on BR2_PACKAGE_QEMU_SYSTEM || BR2_PACKAGE_QEMU_LINUX_USER + help + By default, all targets (system and/or user, subject to the + corresponding options, above) are built. If you only need a + subset of the emulated targets, say 'y' here and enable at + least one target, below. + +if BR2_PACKAGE_QEMU_CHOOSE_TARGETS + +config BR2_PACKAGE_QEMU_TARGET_AARCH64 + bool "aarch64" + select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM + help + ARM 64-bit architecture. + +config BR2_PACKAGE_QEMU_TARGET_AARCH64_BE + bool "aarch64_be (linux-user, only)" + depends on BR2_PACKAGE_QEMU_LINUX_USER + help + ARM 64-bit architecture, big-endian. + +config BR2_PACKAGE_QEMU_TARGET_ALPHA + bool "alpha" + help + DEC Alpha 64-bit RISC architecture. + +config BR2_PACKAGE_QEMU_TARGET_ARM + bool "arm" + select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM + help + ARM EABI architecture, little-endian. + +config BR2_PACKAGE_QEMU_TARGET_ARMEB + bool "armeb (linux-user, only)" + depends on BR2_PACKAGE_QEMU_LINUX_USER + help + ARM EABI architecture, big-endian. + +config BR2_PACKAGE_QEMU_TARGET_AVR + bool "avr (system, only)" + depends on BR2_PACKAGE_QEMU_SYSTEM + help + AVR 8-bit microcontroller architecture. + +config BR2_PACKAGE_QEMU_TARGET_CRIS + bool "cris" + help + ETRAX CRIS microcontroller architecture. + +config BR2_PACKAGE_QEMU_TARGET_HEXAGON + bool "hexagon (linux-user, only)" + depends on BR2_PACKAGE_QEMU_LINUX_USER + help + Qualcomm's Hexagon VLSI DSP architecture. + +config BR2_PACKAGE_QEMU_TARGET_HPPA + bool "hppa" + help + HP PA-RISC architecture. + +config BR2_PACKAGE_QEMU_TARGET_I386 + bool "i386" + select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM + help + Intel i386 32-bit architecture. + +config BR2_PACKAGE_QEMU_TARGET_LOONGARCH64 + bool "loongarch64" + select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM + help + Loongson 64-bit RISC architecture. + +config BR2_PACKAGE_QEMU_TARGET_M68K + bool "m68k" + help + Motorola 68000 architecture. + +config BR2_PACKAGE_QEMU_TARGET_MICROBLAZE + bool "microblaze" + select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM + help + Xilinix MicroBlaze soft processor. + +config BR2_PACKAGE_QEMU_TARGET_MICROBLAZEEL + bool "microblazeel" + select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM + help + Xilinix MicroBlaze EL soft processor. + +config BR2_PACKAGE_QEMU_TARGET_MIPS + bool "mips" + help + MIPS 32-bit architecture. + +config BR2_PACKAGE_QEMU_TARGET_MIPSEL + bool "mipsel" + help + MIPS 32-bit architecture, little-endian. + +config BR2_PACKAGE_QEMU_TARGET_MIPS64 + bool "mips64" + help + MIPS 64-bit architecture. + +config BR2_PACKAGE_QEMU_TARGET_MIPS64EL + bool "mips64el" + select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM + help + MIPS 64-bit architecture, little-endian. + +config BR2_PACKAGE_QEMU_TARGET_MIPSN32 + bool "mipsn32 (linux-user, only)" + depends on BR2_PACKAGE_QEMU_LINUX_USER + help + MIPS N32 architecture. + +config BR2_PACKAGE_QEMU_TARGET_MIPSN32EL + bool "mipsn32el (linux-user, only)" + depends on BR2_PACKAGE_QEMU_LINUX_USER + help + MIPS N32 architecture, little-endian. + +config BR2_PACKAGE_QEMU_TARGET_NIOS2 + bool "nios2" + help + Nios II architecture. + +config BR2_PACKAGE_QEMU_TARGET_OR1K + bool "or1k" + select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM + help + OpenRISC 1000 architecture. + +config BR2_PACKAGE_QEMU_TARGET_PPC + bool "ppc" + select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM + help + PoewerPC 32-bit architecture. + +config BR2_PACKAGE_QEMU_TARGET_PPC64 + bool "ppc64" + select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM + help + PoewerPC 64-bit architecture. + +config BR2_PACKAGE_QEMU_TARGET_PPC64LE + bool "ppc64le (linux-user, only)" + depends on BR2_PACKAGE_QEMU_LINUX_USER + help + PoewerPC 64-bit architecture, little-endian. + +config BR2_PACKAGE_QEMU_TARGET_RISCV32 + bool "riscv32" + select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM + help + RISC-V 32-bit architecture. + +config BR2_PACKAGE_QEMU_TARGET_RISCV64 + bool "riscv64" + select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM + help + RISC-V 64-bit architecture. + +config BR2_PACKAGE_QEMU_TARGET_RX + bool "rx (system-only)" + depends on BR2_PACKAGE_QEMU_SYSTEM + select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM + help + Renesas Electronics RX 32-bit architecture. + +config BR2_PACKAGE_QEMU_TARGET_S390X + bool "s390x" + help + IBM z/Architecture 64-bit mainframe (s390x) + +config BR2_PACKAGE_QEMU_TARGET_SH4 + bool "sh4" + help + Super-H 32-bit RISC architecture. + +config BR2_PACKAGE_QEMU_TARGET_SH4EB + bool "sh4eb" + help + Super-H EB 32-bit RISC architecture. + +config BR2_PACKAGE_QEMU_TARGET_SPARC + bool "sparc" + help + SPARC 32-bit RISC architecture. + +config BR2_PACKAGE_QEMU_TARGET_SPARC32PLUS + bool "sparc32plus (linux-user, only)" + depends on BR2_PACKAGE_QEMU_LINUX_USER + help + SPARC 32-bit RISC architecture (Sun's v8plus). + +config BR2_PACKAGE_QEMU_TARGET_SPARC64 + bool "sparc64" + help + SPARC 64-bit RISC architecture. + +config BR2_PACKAGE_QEMU_TARGET_TRICORE + bool "tricore (system, only)" + depends on BR2_PACKAGE_QEMU_SYSTEM + help + Infineon TriCore 32-bit RISC architecture. + +config BR2_PACKAGE_QEMU_TARGET_X86_64 + bool "x86_64" + select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM + help + Intel x86 64-bit architecture. + +config BR2_PACKAGE_QEMU_TARGET_XTENSA + bool "xtensa" + help + Xtensa 32-bit RISC architecture. + +config BR2_PACKAGE_QEMU_TARGET_XTENSAEB + bool "xtensaeb" + help + Xtensa 32-bit RISC architecture, big-endian. + +endif # BR2_PACKAGE_QEMU_CHOOSE_TARGETS + +comment "Tools selection" + +config BR2_PACKAGE_QEMU_TOOLS + bool "Enable tools" + help + Say 'y' here to include tools packaged with QEMU + (e.g. qemu-img). + +config BR2_PACKAGE_QEMU_GUEST_AGENT + bool "Enable guest agent" + help + Say 'y' here to include an agent to run on guests, which + communicates with the host over a virtio-serial channel + named "org.qemu.guest_agent.0". + +endif # BR2_PACKAGE_QEMU diff --git a/package/qemu/Config.in.host b/package/qemu/Config.in.host new file mode 100644 index 00000000..8dd0c7d1 --- /dev/null +++ b/package/qemu/Config.in.host @@ -0,0 +1,105 @@ +config BR2_PACKAGE_HOST_QEMU_ARCH_SUPPORTS + bool + default y if BR2_arm + default y if BR2_armeb + default y if BR2_aarch64 + default y if BR2_i386 + default y if BR2_m68k + default y if BR2_microblazeel + default y if BR2_microblazebe + default y if BR2_mips + default y if BR2_mipsel + default y if BR2_nios2 + default y if BR2_or1k + default y if BR2_powerpc + default y if BR2_powerpc64 + default y if BR2_powerpc64le + default y if BR2_riscv + default y if BR2_s390x + default y if BR2_sh + default y if BR2_sparc + default y if BR2_sparc64 + default y if BR2_xtensa + default y if BR2_x86_64 + depends on !BR2_x86_steamroller && !BR2_x86_core_avx2 + depends on !BR2_powerpc_620 && !BR2_powerpc_630 + +config BR2_PACKAGE_HOST_QEMU_SYSTEM_ARCH_SUPPORTS + bool + default y if BR2_PACKAGE_HOST_QEMU_ARCH_SUPPORTS + default y if BR2_mips64 + default y if BR2_mips64el + +config BR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORTS + bool + default y if BR2_PACKAGE_HOST_QEMU_ARCH_SUPPORTS + +comment "host-qemu needs a host gcc >= 8" + depends on BR2_PACKAGE_HOST_QEMU_SYSTEM_ARCH_SUPPORTS || \ + BR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORT + depends on !BR2_HOST_GCC_AT_LEAST_8 + +config BR2_PACKAGE_HOST_QEMU + bool "host qemu" + depends on BR2_PACKAGE_HOST_QEMU_SYSTEM_ARCH_SUPPORTS || BR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORTS + depends on BR2_HOST_GCC_AT_LEAST_8 + select BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE \ + if !BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE && BR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE \ + if !BR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORTS + help + QEMU is a generic and open source machine emulator and + virtualizer. + + This option builds an emulator for your selected architecture. + + http://www.qemu.org + +if BR2_PACKAGE_HOST_QEMU + +comment "Emulators selection" + +config BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE + bool "Enable system emulation" + depends on BR2_PACKAGE_HOST_QEMU_SYSTEM_ARCH_SUPPORTS + help + Enables the build of the system emulator, which allows to + boot an entire system in Qemu. + +config BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE + bool "Enable Linux user-land emulation" + depends on BR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORTS + help + Enables the build of the user-land emulator, which allows to + run user-space applications. + + Note that system calls made by the emulated user-land are + serviced by the running host kernel. Therefore, if the + kernel headers used by your target are more recent than + the running host kernel, you may run into invalid system + calls, which may yield surprising effects. + +config BR2_PACKAGE_HOST_QEMU_USER_MODE_ARGS + string + default "-cpu Nehalem,check=false" if BR2_x86_corei7 + +config BR2_PACKAGE_HOST_QEMU_VDE2 + bool "VDE2 support" + help + Enables VDE2 support. VDE2 stands for Virtual Distributed + Ethernet and can be used to create virtual switches to + "plug" both physical and virtual machines in them. + +config BR2_PACKAGE_HOST_QEMU_VIRTFS + bool "Virtual filesystem support" + depends on BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE + help + Enables support for virtual filesystem in Qemu allowing + shared filesystem between Qemu and its emulated target. + +config BR2_PACKAGE_HOST_QEMU_USB + bool "USB passthrough support" + help + Enables USB passthrough support from guest to host. + +endif diff --git a/package/qemu/qemu.hash b/package/qemu/qemu.hash new file mode 100644 index 00000000..419dd0d1 --- /dev/null +++ b/package/qemu/qemu.hash @@ -0,0 +1,4 @@ +# Locally computed, tarball verified with GPG signature +sha256 a8c3f596aece96da3b00cafb74baafa0d14515eafb8ed1ee3f7f5c2d0ebf02b6 qemu-9.0.2.tar.xz +sha256 6f04ae8364d0079a192b14635f4b1da294ce18724c034c39a6a41d1b09df6100 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB diff --git a/package/qemu/qemu.mk b/package/qemu/qemu.mk new file mode 100644 index 00000000..16cff13d --- /dev/null +++ b/package/qemu/qemu.mk @@ -0,0 +1,538 @@ +################################################################################ +# +# qemu +# +################################################################################ + +# When updating the version, check whether the list of supported targets +# needs to be updated. +QEMU_VERSION = 9.0.2 +QEMU_SOURCE = qemu-$(QEMU_VERSION).tar.xz +QEMU_SITE = https://download.qemu.org +QEMU_SELINUX_MODULES = qemu virt +QEMU_LICENSE = GPL-2.0, LGPL-2.1, MIT, BSD-3-Clause, BSD-2-Clause, Others/BSD-1c +QEMU_LICENSE_FILES = COPYING COPYING.LIB +# NOTE: there is no top-level license file for non-(L)GPL licenses; +# the non-(L)GPL license texts are specified in the affected +# individual source files. +QEMU_CPE_ID_VENDOR = qemu + +# Need to ignore the following CVEs because the CPE database does +# not have an entry for the 8.1.1 version yet. +QEMU_IGNORE_CVES += CVE-2023-4135 +QEMU_IGNORE_CVES += CVE-2023-3354 +QEMU_IGNORE_CVES += CVE-2023-3180 + +#------------------------------------------------------------- + +# The build system is now partly based on Meson. +# However, building is still done with configure and make as in previous versions of QEMU. + +# Target-qemu +QEMU_DEPENDENCIES = \ + host-meson \ + host-pkgconf \ + host-python3 \ + host-python-distlib \ + libglib2 \ + zlib + +# Need the LIBS variable because librt and libm are +# not automatically pulled. :-( +QEMU_LIBS = -lrt -lm + +QEMU_OPTS = + +QEMU_VARS = LIBTOOL=$(HOST_DIR)/bin/libtool + +# If we want to build all emulation targets, we just need to either enable -user +# and/or -system emulation appropriately. +# Otherwise, if we want only a subset of targets, we must still enable all of +# them, so that QEMU properly builds a list of default targets from which it +# checks if the specified sub-set is valid. + +ifeq ($(BR2_PACKAGE_QEMU_SYSTEM),y) +QEMU_DEPENDENCIES += pixman +QEMU_OPTS += --enable-system +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_AARCH64) += aarch64-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_ALPHA) += alpha-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_ARM) += arm-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_AVR) += avr-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_CRIS) += cris-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_HPPA) += hppa-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_I386) += i386-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_LOONGARCH64) += loongarch64-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_M68K) += m68k-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MICROBLAZE) += microblaze-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MICROBLAZEEL) += microblazeel-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPS) += mips-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPS64) += mips64-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPS64EL) += mips64el-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPSEL) += mipsel-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_NIOS2) += nios2-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_OR1K) += or1k-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_PPC) += ppc-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_PPC64) += ppc64-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_RISCV32) += riscv32-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_RISCV64) += riscv64-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_RX) += rx-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_S390X) += s390x-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SH4) += sh4-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SH4EB) += sh4eb-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SPARC) += sparc-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SPARC64) += sparc64-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_TRICORE) += tricore-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_X86_64) += x86_64-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_XTENSA) += xtensa-softmmu +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_XTENSAEB) += xtensaeb-softmmu +else +QEMU_OPTS += --disable-system +endif + +ifeq ($(BR2_PACKAGE_QEMU_LINUX_USER),y) +QEMU_OPTS += --enable-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_AARCH64) += aarch64-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_AARCH64_BE) += aarch64_be-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_ALPHA) += alpha-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_ARM) += arm-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_ARMEB) += armeb-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_CRIS) += cris-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_HEXAGON) += hexagon-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_HPPA) += hppa-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_I386) += i386-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_LOONGARCH64) += loongarch64-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_M68K) += m68k-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MICROBLAZE) += microblaze-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MICROBLAZEEL) += microblazeel-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPS) += mips-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPS64) += mips64-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPS64EL) += mips64el-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPSEL) += mipsel-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPSN32) += mipsn32-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPSN32EL) += mipsn32el-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_NIOS2) += nios2-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_OR1K) += or1k-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_PPC) += ppc-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_PPC64) += ppc64-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_PPC64LE) += ppc64le-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_RISCV32) += riscv32-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_RISCV64) += riscv64-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_S390X) += s390x-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SH4) += sh4-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SH4EB) += sh4eb-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SPARC) += sparc-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SPARC32PLUS) += sparc32plus-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SPARC64) += sparc64-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_X86_64) += x86_64-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_XTENSA) += xtensa-linux-user +QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_XTENSAEB) += xtensaeb-linux-user +else +QEMU_OPTS += --disable-linux-user +endif + +# Build the list of desired targets, if any. +ifeq ($(BR2_PACKAGE_QEMU_CHOOSE_TARGETS),y) +QEMU_TARGET_LIST = $(strip $(QEMU_TARGET_LIST_y)) +ifeq ($(BR_BUILDING).$(QEMU_TARGET_LIST),y.) +$(error "No emulator target has ben chosen") +endif +QEMU_OPTS += --target-list="$(QEMU_TARGET_LIST)" +endif + +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +QEMU_OPTS += --disable-vhost-user +else +QEMU_OPTS += --enable-vhost-user +endif + +ifeq ($(BR2_PACKAGE_QEMU_SLIRP),y) +QEMU_OPTS += --enable-slirp +QEMU_DEPENDENCIES += slirp +else +QEMU_OPTS += --disable-slirp +endif + +ifeq ($(BR2_PACKAGE_QEMU_SDL),y) +QEMU_OPTS += --enable-sdl +QEMU_DEPENDENCIES += sdl2 +QEMU_VARS += SDL2_CONFIG=$(STAGING_DIR)/usr/bin/sdl2-config +else +QEMU_OPTS += --disable-sdl +endif + +ifeq ($(BR2_PACKAGE_QEMU_FDT),y) +QEMU_OPTS += --enable-fdt +QEMU_DEPENDENCIES += dtc +else +QEMU_OPTS += --disable-fdt +endif + +ifeq ($(BR2_PACKAGE_QEMU_TRACING),y) +QEMU_OPTS += --enable-trace-backends=log +else +QEMU_OPTS += --enable-trace-backends=nop +endif + +ifeq ($(BR2_PACKAGE_QEMU_TOOLS),y) +QEMU_OPTS += --enable-tools +else +QEMU_OPTS += --disable-tools +endif + +ifeq ($(BR2_PACKAGE_QEMU_GUEST_AGENT),y) +QEMU_OPTS += --enable-guest-agent +else +QEMU_OPTS += --disable-guest-agent +endif + +ifeq ($(BR2_PACKAGE_LIBFUSE3),y) +QEMU_OPTS += --enable-fuse --enable-fuse-lseek +QEMU_DEPENDENCIES += libfuse3 +else +QEMU_OPTS += --disable-fuse --disable-fuse-lseek +endif + +ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) +QEMU_OPTS += --enable-seccomp +QEMU_DEPENDENCIES += libseccomp +else +QEMU_OPTS += --disable-seccomp +endif + +ifeq ($(BR2_PACKAGE_LIBSSH),y) +QEMU_OPTS += --enable-libssh +QEMU_DEPENDENCIES += libssh +else +QEMU_OPTS += --disable-libssh +endif + +ifeq ($(BR2_PACKAGE_LIBUSB),y) +QEMU_OPTS += --enable-libusb +QEMU_DEPENDENCIES += libusb +else +QEMU_OPTS += --disable-libusb +endif + +ifeq ($(BR2_PACKAGE_LIBVNCSERVER),y) +QEMU_OPTS += \ + --enable-vnc \ + --disable-vnc-sasl +QEMU_DEPENDENCIES += libvncserver +ifeq ($(BR2_PACKAGE_LIBPNG),y) +QEMU_OPTS += --enable-png +QEMU_DEPENDENCIES += libpng +else +QEMU_OPTS += --disable-png +endif +ifeq ($(BR2_PACKAGE_JPEG),y) +QEMU_OPTS += --enable-vnc-jpeg +QEMU_DEPENDENCIES += jpeg +else +QEMU_OPTS += --disable-vnc-jpeg +endif +else +QEMU_OPTS += --disable-vnc +endif + +ifeq ($(BR2_PACKAGE_NETTLE),y) +QEMU_OPTS += --enable-nettle +QEMU_DEPENDENCIES += nettle +else +QEMU_OPTS += --disable-nettle +endif + +ifeq ($(BR2_PACKAGE_NUMACTL),y) +QEMU_OPTS += --enable-numa +QEMU_DEPENDENCIES += numactl +else +QEMU_OPTS += --disable-numa +endif + +ifeq ($(BR2_PACKAGE_PIPEWIRE),y) +QEMU_OPTS += --enable-pipewire +QEMU_DEPENDENCIES += pipewire +else +QEMU_OPTS += --disable-pipewire +endif + +ifeq ($(BR2_PACKAGE_SPICE),y) +QEMU_OPTS += --enable-spice +QEMU_DEPENDENCIES += spice +else +QEMU_OPTS += --disable-spice +endif + +ifeq ($(BR2_PACKAGE_USBREDIR),y) +QEMU_OPTS += --enable-usb-redir +QEMU_DEPENDENCIES += usbredir +else +QEMU_OPTS += --disable-usb-redir +endif + +ifeq ($(BR2_STATIC_LIBS),y) +QEMU_OPTS += --static +endif + +ifeq ($(BR2_PACKAGE_QEMU_BLOBS),y) +QEMU_OPTS += --enable-install-blobs +else +QEMU_OPTS += --disable-install-blobs +endif + +# Override CPP, as it expects to be able to call it like it'd +# call the compiler. +define QEMU_CONFIGURE_CMDS + unset TARGET_DIR; \ + cd $(@D); \ + LIBS='$(QEMU_LIBS)' \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + CPP="$(TARGET_CC) -E" \ + $(QEMU_VARS) \ + ./configure \ + --prefix=/usr \ + --cross-prefix=$(TARGET_CROSS) \ + --audio-drv-list= \ + --python=$(HOST_DIR)/bin/python3 \ + --ninja=$(HOST_DIR)/bin/ninja \ + --disable-alsa \ + --disable-bpf \ + --disable-brlapi \ + --disable-bsd-user \ + --disable-cap-ng \ + --disable-capstone \ + --disable-containers \ + --disable-coreaudio \ + --disable-curl \ + --disable-curses \ + --disable-dbus-display \ + --disable-docs \ + --disable-dsound \ + --disable-hvf \ + --disable-jack \ + --disable-libiscsi \ + --disable-linux-aio \ + --disable-linux-io-uring \ + --disable-malloc-trim \ + --disable-membarrier \ + --disable-mpath \ + --disable-netmap \ + --disable-opengl \ + --disable-oss \ + --disable-pa \ + --disable-plugins \ + --disable-rbd \ + --disable-sanitizers \ + --disable-selinux \ + --disable-sparse \ + --disable-strip \ + --disable-vde \ + --disable-vhost-crypto \ + --disable-vhost-user-blk-server \ + --disable-virtfs \ + --disable-whpx \ + --disable-xen \ + --enable-attr \ + --enable-kvm \ + --enable-vhost-net \ + --disable-download \ + --disable-hexagon-idef-parser \ + $(QEMU_OPTS) +endef + +define QEMU_BUILD_CMDS + unset TARGET_DIR; \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QEMU_INSTALL_TARGET_CMDS + unset TARGET_DIR; \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(QEMU_MAKE_ENV) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) + +#------------------------------------------------------------- +# Host-qemu + +HOST_QEMU_DEPENDENCIES = \ + host-libglib2 \ + host-meson \ + host-pixman \ + host-pkgconf \ + host-python3 \ + host-python-distlib \ + host-slirp \ + host-zlib + +# BR ARCH qemu +# ------- ---- +# arm arm +# armeb armeb +# i486 i386 +# i586 i386 +# i686 i386 +# x86_64 x86_64 +# m68k m68k +# microblaze microblaze +# mips mips +# mipsel mipsel +# mips64 mips64 +# mips64el mips64el +# nios2 nios2 +# or1k or1k +# powerpc ppc +# powerpc64 ppc64 +# powerpc64le ppc64 (system) / ppc64le (usermode) +# sh2a not supported +# sh4 sh4 +# sh4eb sh4eb +# sh4a sh4 +# sh4aeb sh4eb +# sparc sparc +# sparc64 sparc64 +# xtensa xtensa + +HOST_QEMU_ARCH = $(ARCH) +ifeq ($(HOST_QEMU_ARCH),armeb) +HOST_QEMU_SYS_ARCH = arm +endif +ifeq ($(HOST_QEMU_ARCH),i486) +HOST_QEMU_ARCH = i386 +endif +ifeq ($(HOST_QEMU_ARCH),i586) +HOST_QEMU_ARCH = i386 +endif +ifeq ($(HOST_QEMU_ARCH),i686) +HOST_QEMU_ARCH = i386 +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) + +HOST_QEMU_CFLAGS = $(HOST_CFLAGS) + +ifeq ($(BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE),y) +HOST_QEMU_TARGETS += $(HOST_QEMU_SYS_ARCH)-softmmu +HOST_QEMU_OPTS += --enable-system --enable-fdt +HOST_QEMU_CFLAGS += -I$(HOST_DIR)/include/libfdt +HOST_QEMU_DEPENDENCIES += host-dtc +else +HOST_QEMU_OPTS += --disable-system +endif + +ifeq ($(BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE),y) +HOST_QEMU_TARGETS += $(HOST_QEMU_ARCH)-linux-user +HOST_QEMU_OPTS += --enable-linux-user + +HOST_QEMU_HOST_SYSTEM_TYPE = $(shell uname -s) +ifneq ($(HOST_QEMU_HOST_SYSTEM_TYPE),Linux) +$(error "qemu-user can only be used on Linux hosts") +endif + +else # BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE +HOST_QEMU_OPTS += --disable-linux-user +endif # BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE + +ifeq ($(BR2_PACKAGE_HOST_QEMU_VDE2),y) +HOST_QEMU_OPTS += --enable-vde +HOST_QEMU_DEPENDENCIES += host-vde2 +endif + +# virtfs-proxy-helper is the only user of libcap-ng. +ifeq ($(BR2_PACKAGE_HOST_QEMU_VIRTFS),y) +HOST_QEMU_OPTS += --enable-virtfs --enable-cap-ng +HOST_QEMU_DEPENDENCIES += host-libcap-ng +else +HOST_QEMU_OPTS += --disable-virtfs --disable-cap-ng +endif + +ifeq ($(BR2_PACKAGE_HOST_QEMU_USB),y) +HOST_QEMU_OPTS += --enable-libusb +HOST_QEMU_DEPENDENCIES += host-libusb +else +HOST_QEMU_OPTS += --disable-libusb +endif + +# Override CPP, as it expects to be able to call it like it'd +# call the compiler. +define HOST_QEMU_CONFIGURE_CMDS + unset TARGET_DIR; \ + cd $(@D); $(HOST_CONFIGURE_OPTS) CPP="$(HOSTCC) -E" \ + ./configure \ + --target-list="$(HOST_QEMU_TARGETS)" \ + --prefix="$(HOST_DIR)" \ + --interp-prefix=$(STAGING_DIR) \ + --cc="$(HOSTCC)" \ + --host-cc="$(HOSTCC)" \ + --extra-cflags="$(HOST_QEMU_CFLAGS)" \ + --extra-ldflags="$(HOST_LDFLAGS)" \ + --python=$(HOST_DIR)/bin/python3 \ + --ninja=$(HOST_DIR)/bin/ninja \ + --disable-alsa \ + --disable-bpf \ + --disable-bzip2 \ + --disable-containers \ + --disable-coreaudio \ + --disable-curl \ + --disable-dbus-display \ + --disable-docs \ + --disable-dsound \ + --disable-jack \ + --disable-libssh \ + --disable-linux-aio \ + --disable-linux-io-uring \ + --disable-netmap \ + --disable-oss \ + --disable-pa \ + --disable-pipewire \ + --disable-sdl \ + --disable-selinux \ + --disable-vde \ + --disable-vhost-user-blk-server \ + --disable-vnc-jpeg \ + --disable-plugins \ + --disable-png \ + --disable-vnc-sasl \ + --enable-slirp \ + --enable-tools \ + --disable-guest-agent \ + $(HOST_QEMU_OPTS) +endef + +define HOST_QEMU_BUILD_CMDS + unset TARGET_DIR; \ + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_QEMU_INSTALL_CMDS + unset TARGET_DIR; \ + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install +endef + +# install symlink to qemu-system +ifeq ($(BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE),y) +define HOST_QEMU_POST_INSTALL_SYMLINK + ln -sf ./qemu-system-$(HOST_QEMU_ARCH) $(HOST_DIR)/bin/qemu-system +endef +HOST_QEMU_POST_INSTALL_HOOKS += HOST_QEMU_POST_INSTALL_SYMLINK +endif + +$(eval $(host-generic-package)) + +# variable used by other packages +QEMU_USER = $(HOST_DIR)/bin/qemu-$(HOST_QEMU_ARCH) diff --git a/package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch b/package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch new file mode 100644 index 00000000..e1d99f0f --- /dev/null +++ b/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/package/qextserialport/0002-Tell-qmake-to-add-a-pkgconfig-file-to-ease-usage-wit.patch b/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/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/package/qextserialport/Config.in b/package/qextserialport/Config.in new file mode 100644 index 00000000..f880d335 --- /dev/null +++ b/package/qextserialport/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_QEXTSERIALPORT + bool "qextserialport" + depends on BR2_PACKAGE_QT5 + help + A Qt library to manage serial ports + + http://qextserialport.github.io/ diff --git a/package/qextserialport/qextserialport.hash b/package/qextserialport/qextserialport.hash new file mode 100644 index 00000000..198ea022 --- /dev/null +++ b/package/qextserialport/qextserialport.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 23e3b10a8d8a1e2fb071047144222c43d150748ce6670e5d047ba5b0502ad0b2 qextserialport-ada321a9ee463f628e7b781b8ed00ff219152158.tar.gz +sha256 363f34c4e9ee62df5e88788723beb9d0ad2c62fa36625355f261f7e6d672aaf5 LICENSE.md diff --git a/package/qextserialport/qextserialport.mk b/package/qextserialport/qextserialport.mk new file mode 100644 index 00000000..419ea669 --- /dev/null +++ b/package/qextserialport/qextserialport.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# qextserialport +# +################################################################################ + +QEXTSERIALPORT_VERSION = ada321a9ee463f628e7b781b8ed00ff219152158 +QEXTSERIALPORT_SITE = $(call github,qextserialport,qextserialport,$(QEXTSERIALPORT_VERSION)) +QEXTSERIALPORT_LICENSE = MIT +QEXTSERIALPORT_LICENSE_FILES = LICENSE.md +QEXTSERIALPORT_INSTALL_STAGING = YES + +ifeq ($(BR2_STATIC_LIBS),y) +QEXTSERIALPORT_CONF_OPTS += CONFIG+=qesp_static +endif + +$(eval $(qmake-package)) diff --git a/package/qhull/Config.in b/package/qhull/Config.in new file mode 100644 index 00000000..cfd67b0d --- /dev/null +++ b/package/qhull/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_QHULL + bool "qhull" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 # needs gcc >= 4.4 + help + Qhull computes the convex hull, Delaunay triangulation, + Voronoi diagram, halfspace intersection about a point, + furthest-site Delaunay triangulation, and furthest-site + Voronoi diagram. The source code runs in 2-d, 3-d, 4-d, and + higher dimensions. Qhull implements the Quickhull algorithm + for computing the convex hull. It handles roundoff errors + from floating point arithmetic. It computes volumes, surface + areas, and approximations to the convex hull. + + http://www.qhull.org + +comment "qhull needs a toolchain w/ C++, gcc >= 4.4" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 diff --git a/package/qhull/qhull.hash b/package/qhull/qhull.hash new file mode 100644 index 00000000..f7d8c9e7 --- /dev/null +++ b/package/qhull/qhull.hash @@ -0,0 +1,5 @@ +# From http://www.qhull.org/download/qhull-2020-src-8.0.2-tgz.md5sum +md5 ed767244864488d5e9a22dfa788663a9 qhull-2020-src-8.0.2-tgz +# Locally computed +sha256 b5c2d7eb833278881b952c8a52d20179eab87766b00b865000469a45c1838b7e qhull-2020-src-8.0.2.tgz +sha256 106d55c931fd6a84822e5345d900273d059f1c27310d02567ccb313c5d18c55d COPYING.txt diff --git a/package/qhull/qhull.mk b/package/qhull/qhull.mk new file mode 100644 index 00000000..72f62704 --- /dev/null +++ b/package/qhull/qhull.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# qhull +# +################################################################################ + +QHULL_VERSION = 8.0.2 +QHULL_SITE = http://www.qhull.org/download +QHULL_SOURCE = qhull-2020-src-$(QHULL_VERSION).tgz +QHULL_INSTALL_STAGING = YES +QHULL_LICENSE = BSD-Style +QHULL_LICENSE_FILES = COPYING.txt + +# Force Release mode to always build qhull_r instead of qhull_rd +QHULL_CONF_OPTS = -DCMAKE_BUILD_TYPE=Release + +# BUILD_SHARED_LIBS is handled in pkg-cmake.mk as it is a generic cmake variable +# although BUILD_STATIC_LIBS=ON is default, make it explicit, +# cmake and static/shared libs is confusing enough already. +ifeq ($(BR2_STATIC_LIBS),y) +QHULL_CONF_OPTS += -DBUILD_STATIC_LIBS=ON +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +QHULL_CONF_OPTS += -DBUILD_STATIC_LIBS=ON +else ifeq ($(BR2_SHARED_LIBS),y) +QHULL_CONF_OPTS += -DBUILD_STATIC_LIBS=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/qjson/Config.in b/package/qjson/Config.in new file mode 100644 index 00000000..adb06cdd --- /dev/null +++ b/package/qjson/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_QJSON + bool "qjson" + depends on BR2_PACKAGE_QT5 + help + QJson is a Qt-based library that maps JSON data to + QVariant objects and vice versa. + + http://qjson.sourceforge.net diff --git a/package/qjson/qjson.hash b/package/qjson/qjson.hash new file mode 100644 index 00000000..ab22350e --- /dev/null +++ b/package/qjson/qjson.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 e812617477f3c2bb990561767a4cd8b1d3803a52018d4878da302529552610d4 qjson-0.9.0.tar.gz +sha256 758a0cd48d2bec59cbd04ab616737b7aa0cdceac87508adbc9468715ac90722b COPYING.lib diff --git a/package/qjson/qjson.mk b/package/qjson/qjson.mk new file mode 100644 index 00000000..718d6622 --- /dev/null +++ b/package/qjson/qjson.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# qjson +# +################################################################################ + +QJSON_VERSION = 0.9.0 +QJSON_SITE = $(call github,flavio,qjson,$(QJSON_VERSION)) +QJSON_INSTALL_STAGING = YES +QJSON_DEPENDENCIES = qt5base +QJSON_LICENSE = LGPL-2.1 +QJSON_LICENSE_FILES = COPYING.lib + +$(eval $(cmake-package)) diff --git a/package/qlibc/Config.in b/package/qlibc/Config.in new file mode 100644 index 00000000..ad6f1fee --- /dev/null +++ b/package/qlibc/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_QLIBC + bool "qlibc" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + qLibc is currently one of the most functionally complete + public licensed C/C++ libraries. The C/C++ library which + includes all kinds of containers and general library + routines. It provides ready-made set of common container + APIs with consistant API look. + + https://github.com/wolkykim/qlibc + +comment "qlibc needs a toolchain w/ threads, wchar, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || BR2_STATIC_LIBS diff --git a/package/qlibc/qlibc.hash b/package/qlibc/qlibc.hash new file mode 100644 index 00000000..9b2af1a4 --- /dev/null +++ b/package/qlibc/qlibc.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 ddb27da8ee6f3bf558e5d1d21d3d392c8a6f12d25767c5f70f4e757d814900c9 qlibc-2.4.7.tar.gz +sha256 7c9d03656af4c0acf0a35e29459086498dd64080eac6d2945bc1c064aaf18132 LICENSE diff --git a/package/qlibc/qlibc.mk b/package/qlibc/qlibc.mk new file mode 100644 index 00000000..838ba687 --- /dev/null +++ b/package/qlibc/qlibc.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# qlibc +# +################################################################################ + +QLIBC_VERSION = 2.4.7 +QLIBC_SITE = $(call github,wolkykim,qlibc,v$(QLIBC_VERSION)) +QLIBC_LICENSE = BSD-2-Clause +QLIBC_LICENSE_FILES = LICENSE + +QLIBC_INSTALL_STAGING = YES +QLIBC_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv) + +# The configure.ac checks for these use AC_CHECK_FILE() which doesn't +# work for cross-compilation. If someone wants to enable the support +# for OpenSSL or MySQL, some changes to the configure.ac will be +# needed. +QLIBC_CONF_OPTS = --without-mysql --without-openssl + +$(eval $(autotools-package)) diff --git a/package/qoriq-cadence-dp-firmware/Config.in b/package/qoriq-cadence-dp-firmware/Config.in new file mode 100644 index 00000000..3f494bd3 --- /dev/null +++ b/package/qoriq-cadence-dp-firmware/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_QORIQ_CADENCE_DP_FIRMWARE + bool "qoriq-cadence-dp-firmware" + help + NXP QorIQ cadence DP firmware, a resident EL3 firmware. diff --git a/package/qoriq-cadence-dp-firmware/qoriq-cadence-dp-firmware.hash b/package/qoriq-cadence-dp-firmware/qoriq-cadence-dp-firmware.hash new file mode 100644 index 00000000..6e5c7614 --- /dev/null +++ b/package/qoriq-cadence-dp-firmware/qoriq-cadence-dp-firmware.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 e267655a47fbe118f6960bca7994bd6b8986ef955344fe006a424be96f868602 firmware-cadence-lsdk2012.bin +sha256 9c16421e7c702f56756650b8ac954d34556327e598a8666e6e8f4eb3a1aa95f1 COPYING +sha256 72edc2072c86d93aa1993d15d4d19d96270af3749b0108995ad50c81d1461f52 EULA +sha256 53e3eb0b2bd81c171fa04c17514e20b39b7bb1fe1224c593f7717f615fb9d52b EULA.txt diff --git a/package/qoriq-cadence-dp-firmware/qoriq-cadence-dp-firmware.mk b/package/qoriq-cadence-dp-firmware/qoriq-cadence-dp-firmware.mk new file mode 100644 index 00000000..4f752872 --- /dev/null +++ b/package/qoriq-cadence-dp-firmware/qoriq-cadence-dp-firmware.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# qoriq-cadence-dp-firmware +# +################################################################################ + +QORIQ_CADENCE_DP_FIRMWARE_VERSION = lsdk2012 +QORIQ_CADENCE_DP_FIRMWARE_SITE = http://www.nxp.com/lgfiles/sdk/$(QORIQ_CADENCE_DP_FIRMWARE_VERSION) +QORIQ_CADENCE_DP_FIRMWARE_SOURCE = firmware-cadence-$(QORIQ_CADENCE_DP_FIRMWARE_VERSION).bin +QORIQ_CADENCE_DP_FIRMWARE_LICENSE = NXP Semiconductor Software License Agreement +QORIQ_CADENCE_DP_FIRMWARE_LICENSE_FILES = COPYING EULA EULA.txt +QORIQ_CADENCE_DP_FIRMWARE_REDISTRIBUTE = NO +QORIQ_CADENCE_DP_FIRMWARE_INSTALL_IMAGES = YES +ifeq ($(BR2_LINUX_KERNEL_INSTALL_TARGET),) +QORIQ_CADENCE_DP_FIRMWARE_INSTALL_TARGET = NO +endif + +define QORIQ_CADENCE_DP_FIRMWARE_EXTRACT_CMDS + $(call NXP_EXTRACT_HELPER,$(QORIQ_CADENCE_DP_FIRMWARE_DL_DIR)/$(QORIQ_CADENCE_DP_FIRMWARE_SOURCE)) +endef + +define QORIQ_CADENCE_DP_FIRMWARE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0644 $(@D)/dp/ls1028a-dp-fw.bin $(TARGET_DIR)/boot/ls1028a-dp-fw.bin +endef + +define QORIQ_CADENCE_DP_FIRMWARE_INSTALL_IMAGES_CMDS + $(INSTALL) -D -m 0644 $(@D)/dp/ls1028a-dp-fw.bin $(BINARIES_DIR)/ls1028a-dp-fw.bin +endef + +$(eval $(generic-package)) diff --git a/package/qoriq-fm-ucode/Config.in b/package/qoriq-fm-ucode/Config.in new file mode 100644 index 00000000..b9855f45 --- /dev/null +++ b/package/qoriq-fm-ucode/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_QORIQ_FM_UCODE + bool "qoriq-fm-ucode" + help + These are the microcode families of the Frame Manager + hardware block in QorIQ products. Specific platforms require + specific binaries, and those also have to further match + specific software versions (Frame Manager Driver -- FMD). + + https://github.com/nxp-qoriq/qoriq-fm-ucode + +if BR2_PACKAGE_QORIQ_FM_UCODE + +config BR2_PACKAGE_QORIQ_FM_UCODE_PLATFORM + string "platform" + default "ls1046" + help + This option specifies which platform's microcode to use. + + This string should match a file in qoriq-fm-ucode of the form + "fsl_fman_ucode_${PLATFORM}*.bin". + +endif diff --git a/package/qoriq-fm-ucode/qoriq-fm-ucode.hash b/package/qoriq-fm-ucode/qoriq-fm-ucode.hash new file mode 100644 index 00000000..5c664356 --- /dev/null +++ b/package/qoriq-fm-ucode/qoriq-fm-ucode.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2e431dd726c4aa1db558931d80b318149abdf71fec6e39de9d5aa33399df1fb1 qoriq-fm-ucode-LSDK-21.08.tar.gz +sha256 7a223031d76339df0e4e5a94d193a270fb9963d42b577aa42fe130a4657f3e17 NXP-Binary-EULA.txt diff --git a/package/qoriq-fm-ucode/qoriq-fm-ucode.mk b/package/qoriq-fm-ucode/qoriq-fm-ucode.mk new file mode 100644 index 00000000..5dfdf1e8 --- /dev/null +++ b/package/qoriq-fm-ucode/qoriq-fm-ucode.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# qoriq-fm-ucode +# +################################################################################ + +QORIQ_FM_UCODE_VERSION = LSDK-21.08 +QORIQ_FM_UCODE_SITE = $(call github,nxp-qoriq,qoriq-fm-ucode,$(QORIQ_FM_UCODE_VERSION)) +QORIQ_FM_UCODE_LICENSE = NXP Binary EULA +QORIQ_FM_UCODE_LICENSE_FILES = NXP-Binary-EULA.txt +QORIQ_FM_UCODE_INSTALL_IMAGES = YES +QORIQ_FM_UCODE_INSTALL_TARGET = NO + +QORIQ_FM_UCODE_PLATFORM = $(call qstrip,$(BR2_PACKAGE_QORIQ_FM_UCODE_PLATFORM)) + +define QORIQ_FM_UCODE_INSTALL_IMAGES_CMDS + cp $(@D)/fsl_fman_ucode_$(QORIQ_FM_UCODE_PLATFORM)*.bin \ + $(BINARIES_DIR) +endef + +$(eval $(generic-package)) diff --git a/package/qoriq-rcw/Config.in.host b/package/qoriq-rcw/Config.in.host new file mode 100644 index 00000000..58c16d49 --- /dev/null +++ b/package/qoriq-rcw/Config.in.host @@ -0,0 +1,40 @@ +config BR2_PACKAGE_HOST_QORIQ_RCW + bool "host qoriq-rcw" + help + This package provides an reset configuration word(RCW) + compiler to build NXP QoriQ/LS PBL/RCW binary(s). + + The package installs example configurations and scripts + for each devkit supported in the current release see + $(HOST_DIR)/share/rcw. Either a SDK or post scripts can + then use this toolset and examples. + + https://github.com/nxp-qoriq/rcw + +if BR2_PACKAGE_HOST_QORIQ_RCW + +config BR2_PACKAGE_HOST_QORIQ_RCW_CUSTOM_PATH + string "RCW Source file paths" + help + Space-separated list of .rcw and .rcwi files, that will be + used to generate a RCW binary. The entire list of .rcwi files + used by the .rcw file must be specified. There must be a + single .rcw file in the list. + + This is optional. If left empty, the rcw package will be + included for use in the SDK or with post scripts but no + RCW binary will not be generated. + +config BR2_PACKAGE_HOST_QORIQ_RCW_INTREE + string "In-tree RCW name" + depends on !BR2_PACKAGE_HOST_QORIQ_RCW_CUSTOM_PATH + help + This option is used to specify the RCW binary file for board. + which is composed as platform/serdes_value/rcw_file: platform + is the platform name, serdes_value is the setting of the + Serdes, and rcw_file is the file name of RCW. For example: + "ls1028ardb/R_SQPP_0x85bb/rcw_1300_sdboot.bin" + + If this option is empty, no rcw file is used. + +endif diff --git a/package/qoriq-rcw/qoriq-rcw.hash b/package/qoriq-rcw/qoriq-rcw.hash new file mode 100644 index 00000000..2a887d57 --- /dev/null +++ b/package/qoriq-rcw/qoriq-rcw.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 f199c10e50bd18d7bed0d60f5b68194240dea4f1aa164cec98332723727a4796 qoriq-rcw-LSDK-21.08.tar.gz +sha256 68f4b15ecc085729419bc60ca6eeadca5af0237bbfec791e8a79da9c943d42e9 LICENSE diff --git a/package/qoriq-rcw/qoriq-rcw.mk b/package/qoriq-rcw/qoriq-rcw.mk new file mode 100644 index 00000000..b9c9e992 --- /dev/null +++ b/package/qoriq-rcw/qoriq-rcw.mk @@ -0,0 +1,81 @@ +################################################################################ +# +# qoriq-rcw +# +################################################################################ + +QORIQ_RCW_VERSION = LSDK-21.08 +QORIQ_RCW_SITE = $(call github,nxp-qoriq,rcw,$(QORIQ_RCW_VERSION)) +QORIQ_RCW_LICENSE = BSD-3-Clause +QORIQ_RCW_LICENSE_FILES = LICENSE + +HOST_QORIQ_RCW_DEPENDENCIES = $(BR2_PYTHON3_HOST_DEPENDENCY) + +QORIQ_RCW_FILES = $(call qstrip,$(BR2_PACKAGE_HOST_QORIQ_RCW_CUSTOM_PATH)) +QORIQ_RCW_INTREE = $(call qstrip,$(BR2_PACKAGE_HOST_QORIQ_RCW_INTREE)) + +ifneq ($(QORIQ_RCW_FILES),) + +QORIQ_RCW_INCLUDES = $(filter-out %.rcw,$(QORIQ_RCW_FILES)) +# Get the name of the custom rcw file from the custom list +QORIQ_RCW_PROJECT = $(notdir $(filter %.rcw,$(QORIQ_RCW_FILES))) + +# Error if there are no or more than one .rcw file +ifeq ($(BR_BUILDING),y) +ifneq ($(words $(QORIQ_RCW_PROJECT)),1) +$(error BR2_PACKAGE_HOST_QORIQ_RCW_CUSTOM_PATH must have exactly one .rcw file) +endif +endif + +ifneq ($(QORIQ_RCW_INCLUDES),) +define HOST_QORIQ_RCW_ADD_CUSTOM_RCW_INCLUDES + mkdir -p $(@D)/custom_board + cp -f $(QORIQ_RCW_INCLUDES) $(@D)/custom_board +endef +HOST_QORIQ_RCW_POST_PATCH_HOOKS += HOST_QORIQ_RCW_ADD_CUSTOM_RCW_INCLUDES +endif + +define HOST_QORIQ_RCW_ADD_CUSTOM_RCW_FILES + mkdir -p $(@D)/custom_board/rcw + cp -f $(filter %.rcw,$(QORIQ_RCW_FILES)) $(@D)/custom_board/rcw +endef +HOST_QORIQ_RCW_POST_PATCH_HOOKS += HOST_QORIQ_RCW_ADD_CUSTOM_RCW_FILES + +# rcw.py is a python3-only script, and we can be using either the +# system-provided python3, or our own built with host-python3. +# Fortunately, rcw.py uses #!/usr/bin/env python3, so it will +# easily find it from PATH. +define HOST_QORIQ_RCW_BUILD_CMDS + PATH=$(BR_PATH) \ + $(@D)/rcw.py \ + -i $(@D)/custom_board/rcw/$(QORIQ_RCW_PROJECT) \ + -I $(@D)/custom_board -o $(@D)/PBL.bin +endef + +define HOST_QORIQ_RCW_INSTALL_DELIVERY_FILE + $(INSTALL) -D -m 0644 $(@D)/PBL.bin $(BINARIES_DIR)/PBL.bin +endef + +else ifneq ($(QORIQ_RCW_INTREE),) + +QORIQ_RCW_PLATFORM = $(firstword $(subst /, ,$(QORIQ_RCW_INTREE))) + +define HOST_QORIQ_RCW_BUILD_CMDS + $(MAKE) -C $(@D)/$(QORIQ_RCW_PLATFORM) +endef + +define HOST_QORIQ_RCW_INSTALL_DELIVERY_FILE + $(INSTALL) -D -m 0644 $(@D)/$(patsubst %.rcw,%.bin,$(QORIQ_RCW_INTREE)) \ + $(BINARIES_DIR)/PBL.bin +endef +endif + +# Copy source files and script into $(HOST_DIR)/share/rcw/ so a developer +# could use a post image or SDK to build/install PBL files. +define HOST_QORIQ_RCW_INSTALL_CMDS + mkdir -p $(HOST_DIR)/share/rcw + cp -a $(@D)/* $(HOST_DIR)/share/rcw + $(HOST_QORIQ_RCW_INSTALL_DELIVERY_FILE) +endef + +$(eval $(host-generic-package)) diff --git a/package/qpdf/Config.in b/package/qpdf/Config.in new file mode 100644 index 00000000..accf2b5f --- /dev/null +++ b/package/qpdf/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_QPDF + bool "qpdf" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14 + depends on BR2_TOOLCHAIN_HAS_ATOMIC + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 if BR2_PACKAGE_LIBOPENSSL + help + QPDF is a command-line program that does structural, + content- preserving transformations on PDF files. It could + have been called something like pdf-to-pdf. It also provides + many useful capabilities to developers of PDF-producing + software or for people who just want to look at the innards + of a PDF file to learn more about how they work. + + http://qpdf.sourceforge.net/ + +comment "qpdf needs a toolchain w/ C++, gcc >= 5" + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 diff --git a/package/qpdf/qpdf.hash b/package/qpdf/qpdf.hash new file mode 100644 index 00000000..08a048f2 --- /dev/null +++ b/package/qpdf/qpdf.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/qpdf/files/qpdf/10.5.0/qpdf-10.5.0.sha256/download +sha256 88257d36a44fd5c50b2879488324dd9cafc11686ae49d8c4922a4872203ce006 qpdf-10.5.0.tar.gz +# Locally computed: +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt +sha256 fb929ac30decb4dc3a2eea2bec6c43296a797c5d2d602deb3784ee39430583d5 Artistic-2.0 diff --git a/package/qpdf/qpdf.mk b/package/qpdf/qpdf.mk new file mode 100644 index 00000000..d4795157 --- /dev/null +++ b/package/qpdf/qpdf.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# qpdf +# +################################################################################ + +QPDF_VERSION = 10.5.0 +QPDF_SITE = http://downloads.sourceforge.net/project/qpdf/qpdf/$(QPDF_VERSION) +QPDF_INSTALL_STAGING = YES +QPDF_LICENSE = Apache-2.0 or Artistic-2.0 +QPDF_LICENSE_FILES = LICENSE.txt Artistic-2.0 +QPDF_CPE_ID_VALID = YES +QPDF_DEPENDENCIES = host-pkgconf zlib jpeg + +QPDF_CONF_OPTS = --with-random=/dev/urandom + +ifeq ($(BR2_USE_WCHAR),) +QPDF_CONF_ENV += CXXFLAGS="$(TARGET_CXXFLAGS) -DQPDF_NO_WCHAR_T" +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +QPDF_CONF_OPTS += --enable-crypto-gnutls +QPDF_DEPENDENCIES += gnutls +else +QPDF_CONF_OPTS += --disable-crypto-gnutls +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +QPDF_CONF_OPTS += --enable-crypto-openssl +QPDF_DEPENDENCIES += openssl +else +QPDF_CONF_OPTS += --disable-crypto-openssl +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +QPDF_CONF_ENV += LIBS=-latomic +endif + +$(eval $(autotools-package)) diff --git a/package/qpid-proton/Config.in b/package/qpid-proton/Config.in new file mode 100644 index 00000000..adddc6ec --- /dev/null +++ b/package/qpid-proton/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_QPID_PROTON + bool "qpid-proton" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS # build a shared library + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + The AMQP messaging toolkit + + Qpid Proton is a high-performance, lightweight messaging + library. It can be used in the widest range of messaging + applications, including brokers, client libraries, routers, + bridges, proxies, and more. + + https://qpid.apache.org/proton/ + +comment "qpid-proton needs a toolchain w/ C++, dynamic library, threads" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/qpid-proton/qpid-proton.hash b/package/qpid-proton/qpid-proton.hash new file mode 100644 index 00000000..bead3c18 --- /dev/null +++ b/package/qpid-proton/qpid-proton.hash @@ -0,0 +1,5 @@ +# Hash from: https://www.apache.org/dist/qpid/proton/0.35.0/qpid-proton-0.35.0.tar.gz.sha512 +sha512 1031e3d45854107a516699e1d18269c6acb22549b2709c1fc1cd25eb870096de109077445f1b400edf231bb21a476a268e2d6674e986fc50e92a281549085543 qpid-proton-0.35.0.tar.gz + +# Locally computed +sha256 52310e65489d30afeefc8589479fc02862a875349c19edd165658a915009da82 LICENSE.txt diff --git a/package/qpid-proton/qpid-proton.mk b/package/qpid-proton/qpid-proton.mk new file mode 100644 index 00000000..fae6ecc4 --- /dev/null +++ b/package/qpid-proton/qpid-proton.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# qpid-proton +# +################################################################################ + +QPID_PROTON_VERSION = 0.35.0 +QPID_PROTON_SITE = \ + https://downloads.apache.org/qpid/proton/$(QPID_PROTON_VERSION) +QPID_PROTON_LICENSE = Apache-2.0 +QPID_PROTON_LICENSE_FILES = LICENSE.txt +QPID_PROTON_CPE_ID_VENDOR = apache +QPID_PROTON_CPE_ID_PRODUCT = qpid_proton +QPID_PROTON_INSTALL_STAGING = YES +QPID_PROTON_DEPENDENCIES = \ + host-python3 \ + util-linux \ + $(if $(BR2_PACKAGE_LIBUV),libuv) \ + $(if $(BR2_PACKAGE_OPENSSL),openssl) + +# python and ruby language bindings are enabled when host-swig tool is present +# in HOST_DIR. +# go language binding is enabled when host-go is present +# For now, disable all of them. +QPID_PROTON_CONF_OPTS = \ + -DBUILD_CPP=ON \ + -DBUILD_GO=OFF \ + -DBUILD_PYTHON=OFF \ + -DBUILD_RUBY=OFF \ + -DENABLE_FUZZ_TESTING=OFF \ + -DENABLE_VALGRIND=OFF \ + -DENABLE_WARNING_ERROR=OFF \ + -DPYTHON_EXECUTABLE=$(HOST_DIR)/bin/python3 + +ifeq ($(BR2_PACKAGE_JSONCPP),y) +QPID_PROTON_DEPENDENCIES += jsoncpp +QPID_PROTON_CONF_OPTS += -DENABLE_JSONCPP=ON +else +QPID_PROTON_CONF_OPTS += -DENABLE_JSONCPP=OFF +endif + +define QPID_PROTON_REMOVE_USELESS_FILES + rm -fr $(TARGET_DIR)/usr/share/proton/ +endef + +QPID_PROTON_POST_INSTALL_TARGET_HOOKS += QPID_PROTON_REMOVE_USELESS_FILES + +$(eval $(cmake-package)) diff --git a/package/qprint/Config.in b/package/qprint/Config.in new file mode 100644 index 00000000..edfb92a5 --- /dev/null +++ b/package/qprint/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_QPRINT + bool "qprint" + help + qprint is a program that encodes and decodes binary data in + the Quoted-Printable encoding, defined as a part of the MIME + specification in RFC 1521. This encoding allows for efficient + transfer of mostly ASCII data over transports that are only + 7-bit clean, like SMTP without 8BITMIME or BINARYMIME + extensions. It also allows the transfer of long lines of text + by wrapping them every 76 characters. + + Usually, a sophisticated MUA will take care of automatically + choosing the best encodings for an e-mail. Nevertheless, this + utility may be useful when a MTA (e.g. msmtp) is used without + a MUA, or if using this encoding for other purposes is + desired. + + https://www.fourmilab.ch/webtools/qprint/ diff --git a/package/qprint/qprint.hash b/package/qprint/qprint.hash new file mode 100644 index 00000000..0412cf84 --- /dev/null +++ b/package/qprint/qprint.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 ffa9ca1d51c871fb3b56a4bf0165418348cf080f01ff7e59cd04511b9665019c qprint-1.1.tar.gz +sha256 3bd4089942977a357fed0d3c84b6ea877000c20c7c344c2feabf4b10db9f7495 COPYING diff --git a/package/qprint/qprint.mk b/package/qprint/qprint.mk new file mode 100644 index 00000000..e34fba54 --- /dev/null +++ b/package/qprint/qprint.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# qprint +# +################################################################################ + +QPRINT_VERSION = 1.1 +QPRINT_SITE = https://www.fourmilab.ch/webtools/qprint +QPRINT_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-bin +QPRINT_LICENSE = Public Domain +QPRINT_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/qt-webkit-kiosk/Config.in b/package/qt-webkit-kiosk/Config.in new file mode 100644 index 00000000..80f8e7c4 --- /dev/null +++ b/package/qt-webkit-kiosk/Config.in @@ -0,0 +1,34 @@ +config BR2_PACKAGE_QT_WEBKIT_KIOSK + bool "qt-webkit-kiosk" + depends on BR2_PACKAGE_QT5 + depends on !BR2_STATIC_LIBS # qt5webkit + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5webkit + depends on BR2_HOST_GCC_AT_LEAST_4_9 # qt5webkit -> icu + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # qt5webkit -> icu + depends on !BR2_BINFMT_FLAT # qt5webkit -> icu + depends on !BR2_MIPS_SOFT_FLOAT # qt5webkit + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_WIDGETS + select BR2_PACKAGE_QT5WEBKIT + select BR2_PACKAGE_QT5MULTIMEDIA + help + Simple kiosk-mode browser powered by Qt5Webkit + + https://github.com/sergey-dryabzhinsky/qt-webkit-kiosk + +if BR2_PACKAGE_QT_WEBKIT_KIOSK + +config BR2_PACKAGE_QT_WEBKIT_KIOSK_SOUNDS + bool "Install browser sound files" + help + Deploy browser sound files on target + +endif + +comment "qt-webkit-kiosk needs a toolchain w/ dynamic library, gcc >= 4.9, host gcc >= 4.9" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_HOST_GCC_AT_LEAST_4_9 + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + depends on !BR2_BINFMT_FLAT + depends on !BR2_MIPS_SOFT_FLOAT diff --git a/package/qt-webkit-kiosk/qt-webkit-kiosk.hash b/package/qt-webkit-kiosk/qt-webkit-kiosk.hash new file mode 100644 index 00000000..4eceb254 --- /dev/null +++ b/package/qt-webkit-kiosk/qt-webkit-kiosk.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 60cc4056277f1b24ec976b03e6ac6f07a46df1087cfb092a2fcb743776544392 qt-webkit-kiosk-a7720e50f2bd70aad99e0b465f5c4a57aca48127-git4.tar.gz +sha256 de59ec6c939f4c4def79c0a996b3bd5626895fcbd1ae108e7bddb1dac8218381 doc/lgpl.html diff --git a/package/qt-webkit-kiosk/qt-webkit-kiosk.mk b/package/qt-webkit-kiosk/qt-webkit-kiosk.mk new file mode 100644 index 00000000..cd1c21e2 --- /dev/null +++ b/package/qt-webkit-kiosk/qt-webkit-kiosk.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# qt-webkit-kiosk +# +################################################################################ + +QT_WEBKIT_KIOSK_VERSION = a7720e50f2bd70aad99e0b465f5c4a57aca48127 +QT_WEBKIT_KIOSK_SITE = https://github.com/sergey-dryabzhinsky/qt-webkit-kiosk.git +QT_WEBKIT_KIOSK_SITE_METHOD = git +QT_WEBKIT_KIOSK_DEPENDENCIES = qt5webkit qt5multimedia +QT_WEBKIT_KIOSK_LICENSE = LGPL-3.0 +QT_WEBKIT_KIOSK_LICENSE_FILES = doc/lgpl.html + +QT_WEBKIT_KIOSK_CONF_OPTS = PREFIX=/usr + +define QT_WEBKIT_KIOSK_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src -f Makefile.qt-webkit-kiosk \ + INSTALL_ROOT=$(TARGET_DIR) \ + install_target + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + INSTALL_ROOT=$(TARGET_DIR) \ + install_config \ + $(if $(BR2_PACKAGE_QT_WEBKIT_KIOSK_SOUNDS),install_sound) +endef + +$(eval $(qmake-package)) diff --git a/package/qt5/Config.in b/package/qt5/Config.in new file mode 100644 index 00000000..f1b16ff3 --- /dev/null +++ b/package/qt5/Config.in @@ -0,0 +1,76 @@ +config BR2_PACKAGE_QT5_GL_AVAILABLE + bool + default y + depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES + +config BR2_PACKAGE_QT5_JSCORE_AVAILABLE + bool + default y + # Javascript engine is only available on certain architectures + depends on BR2_arm || BR2_aarch64 || BR2_i386 || BR2_x86_64 || BR2_mipsel || BR2_arc + # ARM needs BLX, so v5t+ + depends on !BR2_ARM_CPU_ARMV4 + +comment "Qt5 needs host g++ >= 5.0, and a toolchain w/ gcc >= 5.0, wchar, NPTL, C++, dynamic library" + depends on !BR2_ARM_CPU_ARMV4 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS || \ + !BR2_HOST_GCC_AT_LEAST_5 || !BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +menuconfig BR2_PACKAGE_QT5 + bool "Qt5" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_HOST_GCC_AT_LEAST_5 # Full C++11 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++11, GCC_BUG_57694 + depends on !BR2_ARM_CPU_ARMV4 # needs ARMv5+ + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_QT5BASE + help + This option enables the Qt5 framework. Sub-options allow to + select which modules should be built. + + http://qt.io + +if BR2_PACKAGE_QT5 +source "package/qt5/qt53d/Config.in" +source "package/qt5/qt5base/Config.in" +source "package/qt5/qt5charts/Config.in" +source "package/qt5/qt5coap/Config.in" +source "package/qt5/qt5connectivity/Config.in" +source "package/qt5/qt5declarative/Config.in" +source "package/qt5/qt5doc/Config.in" +source "package/qt5/qt5enginio/Config.in" +source "package/qt5/qt5graphicaleffects/Config.in" +source "package/qt5/qt5imageformats/Config.in" +source "package/qt5/qt5knx/Config.in" +source "package/qt5/qt5location/Config.in" +source "package/qt5/qt5lottie/Config.in" +source "package/qt5/qt5mqtt/Config.in" +source "package/qt5/qt5multimedia/Config.in" +source "package/qt5/qt5opcua/Config.in" +source "package/qt5/qt5quickcontrols/Config.in" +source "package/qt5/qt5quickcontrols2/Config.in" +source "package/qt5/qt5quicktimeline/Config.in" +source "package/qt5/qt5remoteobjects/Config.in" +source "package/qt5/qt5script/Config.in" +source "package/qt5/qt5scxml/Config.in" +source "package/qt5/qt5sensors/Config.in" +source "package/qt5/qt5serialbus/Config.in" +source "package/qt5/qt5serialport/Config.in" +source "package/qt5/qt5speech/Config.in" +source "package/qt5/qt5svg/Config.in" +source "package/qt5/qt5tools/Config.in" +source "package/qt5/qt5virtualkeyboard/Config.in" +source "package/qt5/qt5wayland/Config.in" +source "package/qt5/qt5webchannel/Config.in" +source "package/qt5/qt5webkit/Config.in" +source "package/qt5/qt5webengine/Config.in" +source "package/qt5/qt5webengine-chromium/Config.in" +source "package/qt5/qt5webengine-chromium-catapult/Config.in" +source "package/qt5/qt5websockets/Config.in" +source "package/qt5/qt5webview/Config.in" +source "package/qt5/qt5x11extras/Config.in" +source "package/qt5/qt5xmlpatterns/Config.in" +endif diff --git a/package/qt5/qt5.mk b/package/qt5/qt5.mk new file mode 100644 index 00000000..783dbd8c --- /dev/null +++ b/package/qt5/qt5.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# qt5 +# +################################################################################ + +QT5_VERSION_MAJOR = 5.15 +QT5_VERSION = $(QT5_VERSION_MAJOR).14 +QT5_SITE = https://invent.kde.org/qt/qt + +include $(sort $(wildcard package/qt5/*/*.mk)) + +# The file "qt.conf" can be used to override the hard-coded paths that are +# compiled into the Qt library. We need it to make "qmake" relocatable and +# tweak the per-package install pathes +define QT5_INSTALL_QT_CONF + rm -f $(HOST_DIR)/bin/qt.conf + sed -e "s|@@HOST_DIR@@|$(HOST_DIR)|" -e "s|@@STAGING_DIR@@|$(STAGING_DIR)|" \ + $(QT5BASE_PKGDIR)/qt.conf.in > $(HOST_DIR)/bin/qt.conf +endef + +ifeq ($(BR2_PER_PACKAGE_DIRECTORIES),y) +define QT5_QT_CONF_FIXUP + $(QT5_INSTALL_QT_CONF) +endef +endif + +# Variable for other Qt applications to use +QT5_QMAKE = $(HOST_DIR)/bin/qmake -spec devices/linux-buildroot-g++ diff --git a/package/qt5/qt53d/Config.in b/package/qt5/qt53d/Config.in new file mode 100644 index 00000000..9187bee8 --- /dev/null +++ b/package/qt5/qt53d/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_QT53D + bool "qt53d" + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative + depends on BR2_PACKAGE_QT5_GL_AVAILABLE # qt5declarative_quick + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5DECLARATIVE + select BR2_PACKAGE_QT5DECLARATIVE_QUICK + help + Qt is a cross-platform application and UI framework for + developers using C++. + + 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. + + https://doc.qt.io/qt-5/qt3d-index.html + +comment "qt53d module needs an OpenGL-capable backend" + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + depends on !BR2_PACKAGE_QT5_GL_AVAILABLE diff --git a/package/qt5/qt53d/qt53d.hash b/package/qt5/qt53d/qt53d.hash new file mode 100644 index 00000000..65e6e8e3 --- /dev/null +++ b/package/qt5/qt53d/qt53d.hash @@ -0,0 +1,7 @@ +# Locally calculated +sha256 31b3e52fb0b28f1e99dd25342a0204d239f7f42bcb25fb56393956904ef412ea qt3d-9bf4d03e2515f7c454647d54542330b6e90f8191.tar.bz2 + +# Hashes for license files: +sha256 edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253 LICENSE.GPL +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 9ae1959e86bd49b9680f78e0b49d4e52ae88a3f234d497e175e42a7e8ed59216 LICENSE.LGPLv3 diff --git a/package/qt5/qt53d/qt53d.mk b/package/qt5/qt53d/qt53d.mk new file mode 100644 index 00000000..8d9babd7 --- /dev/null +++ b/package/qt5/qt53d/qt53d.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# qt53d +# +################################################################################ + +QT53D_VERSION = 9bf4d03e2515f7c454647d54542330b6e90f8191 +QT53D_SITE = $(QT5_SITE)/qt3d/-/archive/$(QT53D_VERSION) +QT53D_SOURCE = qt3d-$(QT53D_VERSION).tar.bz2 +QT53D_DEPENDENCIES = qt5declarative +QT53D_INSTALL_STAGING = YES +QT53D_SYNC_QT_HEADERS = YES + +ifeq ($(BR2_PACKAGE_ASSIMP),y) +QT53D_DEPENDENCIES += assimp +endif + +QT53D_LICENSE = GPL-2.0 or GPL-3.0 or LGPL-3.0 +QT53D_LICENSE_FILES = LICENSE.GPL LICENSE.GPLv3 LICENSE.LGPLv3 + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5base/0001-qtbase-Fix-build-error-when-using-EGL.patch b/package/qt5/qt5base/0001-qtbase-Fix-build-error-when-using-EGL.patch new file mode 100644 index 00000000..68764980 --- /dev/null +++ b/package/qt5/qt5base/0001-qtbase-Fix-build-error-when-using-EGL.patch @@ -0,0 +1,37 @@ +From c11299086b7718332e2b4fbc37ce6f6ff427c5ba Mon Sep 17 00:00:00 2001 +From: Yuqing Zhu +Date: Mon, 27 Mar 2017 15:33:35 +0800 +Subject: [PATCH] qtbase: Fix build error when using EGL +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 8bit + +A build error was occurring due to missing EGL configuration. + +Fixed by adding the necessary ties to the EGL pkg-config. + +Task-number: QTBUG-61712 +Change-Id: I87190ea39392b4604c563cf9d89edb85068d85fc +Upstream-Status: Pending +Signed-off-by: Gaël PORTAY +--- + mkspecs/features/egl.prf | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/mkspecs/features/egl.prf b/mkspecs/features/egl.prf +index 9fa0c9e219..85d5852ba6 100644 +--- a/mkspecs/features/egl.prf ++++ b/mkspecs/features/egl.prf +@@ -1,3 +1,9 @@ ++# egl headers need a definition ++PKG_CONFIG = $$pkgConfigExecutable() ++PKGCONFIG_CFLAGS = $$system($$PKG_CONFIG --cflags egl) ++PKGCONFIG_CFLAGS = $$find(PKGCONFIG_CFLAGS, ^-D.*) ++QMAKE_CFLAGS_EGL = $$PKGCONFIG_CFLAGS ++ + INCLUDEPATH += $$QMAKE_INCDIR_EGL + LIBS_PRIVATE += $$QMAKE_LIBS_EGL + QMAKE_CFLAGS += $$QMAKE_CFLAGS_EGL +-- +2.16.1 + diff --git a/package/qt5/qt5base/0002-double-conversion-enable-for-microblaze.patch b/package/qt5/qt5base/0002-double-conversion-enable-for-microblaze.patch new file mode 100644 index 00000000..a772eb97 --- /dev/null +++ b/package/qt5/qt5base/0002-double-conversion-enable-for-microblaze.patch @@ -0,0 +1,29 @@ +From a02b5e3bb41026ca6031d01942a093e9ce54edf3 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Tue, 21 Aug 2018 21:11:40 +0200 +Subject: [PATCH] double-conversion: enable for microblaze + +Signed-off-by: Peter Seiderer +[Rebased for Qt5.12.0] +Signed-off-by: Peter Seiderer +[Rebased for Qt5.14.0] +Signed-off-by: Peter Seiderer +--- + src/3rdparty/double-conversion/include/double-conversion/utils.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/3rdparty/double-conversion/include/double-conversion/utils.h b/src/3rdparty/double-conversion/include/double-conversion/utils.h +index 70e697ca..2bb8e389 100644 +--- a/src/3rdparty/double-conversion/include/double-conversion/utils.h ++++ b/src/3rdparty/double-conversion/include/double-conversion/utils.h +@@ -102,6 +102,7 @@ int main(int argc, char** argv) { + defined(__AARCH64EL__) || defined(__aarch64__) || defined(__AARCH64EB__) || \ + defined(__riscv) || \ + defined(__or1k__) || defined(__arc__) || \ ++ defined(__microblaze__) || \ + defined(__EMSCRIPTEN__) + #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 + #elif defined(__mc68000__) || \ +-- +2.23.0 + diff --git a/package/qt5/qt5base/0003-double-conversion-enable-for-nios2.patch b/package/qt5/qt5base/0003-double-conversion-enable-for-nios2.patch new file mode 100644 index 00000000..79e276b1 --- /dev/null +++ b/package/qt5/qt5base/0003-double-conversion-enable-for-nios2.patch @@ -0,0 +1,26 @@ +From e3f63db3124caf5bde9cf688eba563f7f025662d Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Sun, 8 Mar 2020 18:08:26 +0100 +Subject: [PATCH] double-conversion: enable for nios2 + +[Upstream: https://github.com/google/double-conversion/commit/a54561be5588ac9b16d3c20760b9b554168bb8aa] +Signed-off-by: Peter Seiderer +--- + src/3rdparty/double-conversion/include/double-conversion/utils.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/3rdparty/double-conversion/include/double-conversion/utils.h b/src/3rdparty/double-conversion/include/double-conversion/utils.h +index d29de950..55ca5bf5 100644 +--- a/src/3rdparty/double-conversion/include/double-conversion/utils.h ++++ b/src/3rdparty/double-conversion/include/double-conversion/utils.h +@@ -87,6 +87,7 @@ int main(int argc, char** argv) { + defined(__ARMEL__) || defined(__avr32__) || defined(_M_ARM) || defined(_M_ARM64) || \ + defined(__hppa__) || defined(__ia64__) || \ + defined(__mips__) || \ ++ defined(__nios2__) || \ + defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \ + defined(_POWER) || defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \ + defined(__sparc__) || defined(__sparc) || defined(__s390__) || \ +-- +2.25.1 + diff --git a/package/qt5/qt5base/0004-double-conversion-enable-for-xtensa.patch b/package/qt5/qt5base/0004-double-conversion-enable-for-xtensa.patch new file mode 100644 index 00000000..e2ead9bd --- /dev/null +++ b/package/qt5/qt5base/0004-double-conversion-enable-for-xtensa.patch @@ -0,0 +1,29 @@ +From f423f160b984c47d831b10447af046bfbd6a3ba1 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Tue, 10 Mar 2020 09:01:31 +0100 +Subject: [PATCH] double-conversion: enable for xtensa + +[Upstream: https://github.com/google/double-conversion/commit/a54561be5588ac9b16d3c20760b9b554168bb8aa] +Signed-off-by: Peter Seiderer +[Rebased for qtbase-everywhere-src-5.14.0] +Signed-off-by: Peter Seiderer +--- + .../double-conversion/include/double-conversion/utils.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/3rdparty/double-conversion/include/double-conversion/utils.h b/src/3rdparty/double-conversion/include/double-conversion/utils.h +index 89ab1a31..001ce55f 100644 +--- a/src/3rdparty/double-conversion/include/double-conversion/utils.h ++++ b/src/3rdparty/double-conversion/include/double-conversion/utils.h +@@ -103,7 +103,7 @@ int main(int argc, char** argv) { + defined(__AARCH64EL__) || defined(__aarch64__) || defined(__AARCH64EB__) || \ + defined(__riscv) || \ + defined(__or1k__) || defined(__arc__) || \ +- defined(__microblaze__) || \ ++ defined(__microblaze__) || defined(__XTENSA__) || \ + defined(__EMSCRIPTEN__) + #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 + #elif defined(__mc68000__) || \ +-- +2.26.0 + diff --git a/package/qt5/qt5base/0005-eglfs-avoid-breaking-compilation-for-obscure-EGLNativeDisplayType-types.patch b/package/qt5/qt5base/0005-eglfs-avoid-breaking-compilation-for-obscure-EGLNativeDisplayType-types.patch new file mode 100644 index 00000000..3621cdb2 --- /dev/null +++ b/package/qt5/qt5base/0005-eglfs-avoid-breaking-compilation-for-obscure-EGLNativeDisplayType-types.patch @@ -0,0 +1,63 @@ +From 0eb7058b473069a04cde60a800dfd04148c0c8b1 Mon Sep 17 00:00:00 2001 +From: Yann E. MORIN +Date: Sat, 14 Dec 2020 21:15:17 +0100 +Subject: [PATCH] plugins/eglfs/gbm: don't FTBFS when EGLNativeDisplayType is not a pointer + +On some platforms, EGLNativeDisplayType is not a pointer, but some kind +of integer, like an int (e.g. TI's SGX) or an unsigned int. In those +cases, the build breaks with: + + qeglfskmsgbmintegration.cpp: In member function ‘virtual void* QEglFSKmsGbmIntegration::createDisplay(EGLNativeDisplayType)’: + qeglfskmsgbmintegration.cpp:83:60: error: invalid conversion from ‘EGLNativeDisplayType’ {aka ‘int’} to ‘void*’ [-fpermissive] + 83 | display = getPlatformDisplay(EGL_PLATFORM_GBM_KHR, nativeDisplay, nullptr); + | ^~~~~~~~~~~~~ + | | + | EGLNativeDisplayType {aka int} + +We fix that by casting nativeDisplay to void* as expected by +getPlatformDisplay(). + +We can do that, because usually, nativeDisplay is already a pointer, and +thus this cast is a no-op. When it is not already a pointer, we either +don't care because the code path will not be taken at runtime, or the +integer really is an opaque handle to some internal, low-level memory +management, much like a void* is an pointer to an opaque memory type... + +It is to be noted, though, that in some ABIs (like x32), the size of a +nativeDisplay that is not already a pointer, might be bigger than that +of a pointer. There is not much we can do here anyway, since there would +be no way to fit that in a void* to begin with, and the build will still +fail for those situations. Those types of ABIs are far frome being +widespread, the most prominent one, x32, even being retired... + +To be noted further: a more usual solution (as suggested in QTBUG-72567 +or in Gerrit:248270) would be to first cast to a qintptr or a quintptr, +before finally casting to a void*. However, casting to either (resp.) +qintptr or quintptr first, risk the case that nativeDisplay is of the other +kind of signedness, (resp.) unsigned or signed, which would also cause +some compile-time breakage. + +Finally, if nativeDisplay is something that is not an int-like, and that +can't be cast into a void*, this would be hugely weird, so much so, that +we do not even attempt to catter for that case. + +Fixes: QTBUG-72567 +Inspired-by: https://codereview.qt-project.org/c/qt/qtbase/+/248270 +Signed-off-by: Yann E. MORIN +--- + +diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp +index d495a8d..059a580 100644 +--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp ++++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp +@@ -80,7 +80,9 @@ + } + + if (getPlatformDisplay) { +- display = getPlatformDisplay(EGL_PLATFORM_GBM_KHR, nativeDisplay, nullptr); ++ // EGLNativeDisplayType may be int on some platforms but those ++ // won't hit this path. Have to keep it compiling nonetheless. ++ display = getPlatformDisplay(EGL_PLATFORM_GBM_KHR, reinterpret_cast(nativeDisplay), nullptr); + } else { + qCDebug(qLcEglfsKmsDebug, "No eglGetPlatformDisplay for GBM, falling back to eglGetDisplay"); + display = eglGetDisplay(nativeDisplay); diff --git a/package/qt5/qt5base/0006-Fix-build-on-riscv32.patch b/package/qt5/qt5base/0006-Fix-build-on-riscv32.patch new file mode 100644 index 00000000..ff24fbff --- /dev/null +++ b/package/qt5/qt5base/0006-Fix-build-on-riscv32.patch @@ -0,0 +1,48 @@ +From 25a0057e8d7afaab3492e03efb3f85581f1cf9b2 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 27 Aug 2021 16:28:32 +0200 +Subject: [PATCH] Fix build on riscv32 + +riscv32 fails to build because __NR_futex is not defined on this +architecture: + +In file included from thread/qmutex_linux.cpp:45, + from thread/qmutex.cpp:804: +thread/qfutex_p.h: In function 'int QtLinuxFutex::_q_futex(int*, int, int, quintptr, int*, int)': +thread/qfutex_p.h:116:30: error: '__NR_futex' was not declared in this scope; did you mean '_q_futex'? + 116 | int result = syscall(__NR_futex, addr, op | FUTEX_PRIVATE_FLAG, val, val2, addr2, val3); + | ^~~~~~~~~~ + | _q_futex + +Pick-to: 6.1 6.2 +Fixes: QTBUG-96067 +Change-Id: Ib6a9bcc496f37e69ac39362cb0a021fccaf311f5 +Reviewed-by: Thiago Macieira +[Retrieved from: +https://code.qt.io/cgit/qt/qtbase.git/commit/?id=035dc537bee26e3b63a211b2835d8560439e161f] +Signed-off-by: Fabrice Fontaine +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + src/corelib/thread/qfutex_p.h | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/corelib/thread/qfutex_p.h b/src/corelib/thread/qfutex_p.h +index f287b752d75f..fd7d09ac8572 100644 +--- a/src/corelib/thread/qfutex_p.h ++++ b/src/corelib/thread/qfutex_p.h +@@ -81,6 +81,11 @@ QT_END_NAMESPACE + // if not defined in linux/futex.h + # define FUTEX_PRIVATE_FLAG 128 // added in v2.6.22 + ++// RISC-V does not supply __NR_futex ++# ifndef __NR_futex ++# define __NR_futex __NR_futex_time64 ++# endif ++ + # if __has_feature(thread_sanitizer) || defined(__SANITIZE_THREAD__) + # include + inline void _q_tsan_acquire(void *addr, void *addr2) +-- +2.43.0 + diff --git a/package/qt5/qt5base/0007-src-corelib-configure.json-fix-atomicfptr-detection.patch b/package/qt5/qt5base/0007-src-corelib-configure.json-fix-atomicfptr-detection.patch new file mode 100644 index 00000000..5f0f81a4 --- /dev/null +++ b/package/qt5/qt5base/0007-src-corelib-configure.json-fix-atomicfptr-detection.patch @@ -0,0 +1,48 @@ +From e9d1f80dffb4e29e44fc0b0627704af15cdd281a Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 13 Mar 2022 12:05:04 +0100 +Subject: [PATCH] src/corelib/configure.json: fix atomicfptr detection + +Fix atomicfptr detection on sparc v8 by linking with libatomic if needed +to avoid the following build failure: + +/sysroot -std=gnu++11 -w -fPIC -I. -I/home/peko/autobuild/instance-0/output-1/build/qt5base-d16bf02a11953dcac01dca73e6f3778f293adefe/mkspecs/devices/linux-buildroot-g++ -o main.o main.cpp +> /home/peko/autobuild/instance-0/output-1/host/bin/sparc-linux-g++ --sysroot=/home/peko/autobuild/instance-0/output-1/host/sparc-buildroot-linux-uclibc/sysroot --sysroot=/home/peko/autobuild/instance-0/output-1/host/sparc-buildroot-linux-uclibc/sysroot -Wl,-O1 -o atomicfptr main.o -lexecinfo -lrt -lpthread -ldl +> /home/peko/autobuild/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/sparc-buildroot-linux-uclibc/10.3.0/../../../../sparc-buildroot-linux-uclibc/bin/ld: main.o: in function `test(std::atomic volatile&)': +> main.cpp:(.text+0x40): undefined reference to `__atomic_compare_exchange_4' +> collect2: error: ld returned 1 exit status +> make[1]: *** [Makefile:69: atomicfptr] Error 1 + +[...] + +ERROR: detected a std::atomic implementation that fails for function pointers. +Please apply the patch corresponding to your Standard Library vendor, found in + qtbase/config.tests/atomicfptr + +Fixes: + - http://autobuild.buildroot.org/results/5a20e984a5536165056b3fbd93b8712e8ddbeed4 + +Signed-off-by: Fabrice Fontaine +[Upstream status: +https://invent.kde.org/qt/qt/qtbase/-/merge_requests/138] +--- + src/corelib/configure.json | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/corelib/configure.json b/src/corelib/configure.json +index 9b5d19d41b..ac88f5856c 100644 +--- a/src/corelib/configure.json ++++ b/src/corelib/configure.json +@@ -309,7 +309,8 @@ + "test(fptr);" + ], + "qmake": "CONFIG += c++11" +- } ++ }, ++ "use": "libatomic" + }, + "clock-monotonic": { + "label": "POSIX monotonic clock", +-- +2.34.1 + diff --git a/package/qt5/qt5base/0008-eglconvenience-add-missing-QList-include.patch b/package/qt5/qt5base/0008-eglconvenience-add-missing-QList-include.patch new file mode 100644 index 00000000..c7127291 --- /dev/null +++ b/package/qt5/qt5base/0008-eglconvenience-add-missing-QList-include.patch @@ -0,0 +1,37 @@ +From f681f428477812e54484f631b0da332cc2e00eaa Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Wed, 16 Mar 2022 19:08:55 +0100 +Subject: [PATCH] eglconvenience: add missing QList include +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes: + + qeglconvenience.cpp:418:23: error: variable ‘QList extensions’ has initializer but incomplete type + 418 | QList extensions = + | ^~~~~~~~~~ + qeglconvenience.cpp:420:65: error: invalid use of incomplete type ‘class QList’ + 420 | (eglQueryString(display, EGL_EXTENSIONS))).split(' '); + | ^ + +Signed-off-by: Peter Seiderer +--- + src/platformsupport/eglconvenience/qeglconvenience.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/platformsupport/eglconvenience/qeglconvenience.cpp b/src/platformsupport/eglconvenience/qeglconvenience.cpp +index 5303d37c..daceeb8b 100644 +--- a/src/platformsupport/eglconvenience/qeglconvenience.cpp ++++ b/src/platformsupport/eglconvenience/qeglconvenience.cpp +@@ -38,6 +38,7 @@ + ****************************************************************************/ + + #include ++#include + #include + + #ifdef Q_OS_LINUX +-- +2.35.1 + diff --git a/package/qt5/qt5base/Config.in b/package/qt5/qt5base/Config.in new file mode 100644 index 00000000..6e6a7cf9 --- /dev/null +++ b/package/qt5/qt5base/Config.in @@ -0,0 +1,315 @@ +config BR2_PACKAGE_QT5BASE + bool "qt5base" + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_PCRE2 + select BR2_PACKAGE_PCRE2_16 + select BR2_PACKAGE_LIBOPENSSL_ENABLE_PSK if BR2_PACKAGE_LIBOPENSSL + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt5base module, which + contains the base Qt libraries: QtCore, QtNetwork, QtGui, + QtWidgets, etc. + + https://qt.io + +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_CONFIG_FILE + string "Config file" + help + Configure options allow to set which modules are being + compiled or not in Qt, but Qt also provide a more + fine-grained mechanism to configure which features should be + enabled or disabled, through a header file. Examples of such + header files can be found in src/corelib/global/qconfig-*.h + in the Qt sources. + + This option allows to set the path of such a configuration + file, which Buildroot will give to Qt at compile time. + +config BR2_PACKAGE_QT5BASE_EXAMPLES + bool "Compile and install examples (with code)" + select BR2_PACKAGE_QT5BASE_NETWORK + select BR2_PACKAGE_QT5BASE_XML + help + If unsure, say N. + +config BR2_PACKAGE_QT5BASE_NETWORK + def_bool y + +config BR2_PACKAGE_QT5BASE_CONCURRENT + bool "concurrent module" + help + This options enables the Qt5Concurrent library. + +config BR2_PACKAGE_QT5BASE_SQL + def_bool y + +if BR2_PACKAGE_QT5BASE_SQL +config BR2_PACKAGE_QT5BASE_MYSQL + bool "MySQL Plugin" + depends on BR2_USE_MMU # mysql + select BR2_PACKAGE_MARIADB + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_READLINE + help + Build MySQL plugin + If unsure, say n. + +config BR2_PACKAGE_QT5BASE_PSQL + bool "PostgreSQL Plugin" + depends on BR2_USE_MMU # postgresql + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR # postgresql + depends on !BR2_OPTIMIZE_FAST # postgresql + select BR2_PACKAGE_POSTGRESQL + help + Build PostgreSQL plugin + If unsure, say n. + +comment "PostgreSQL plugin needs a toolchain w/ wchar, dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR + +comment "PostgreSQL plugin can't be built with Optimize for fast" + depends on BR2_OPTIMIZE_FAST + +choice + prompt "SQLite 3 support" + default BR2_PACKAGE_QT5BASE_SQLITE_NONE + help + Select SQLite support. + +config BR2_PACKAGE_QT5BASE_SQLITE_NONE + bool "No sqlite support" + help + Do not compile any kind of SQLite support. + +config BR2_PACKAGE_QT5BASE_SQLITE_QT + bool "Qt SQLite" + help + Use Qt bundled SQLite support. + +config BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM + bool "System SQLite" + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_SQLITE_ENABLE_COLUMN_METADATA + help + Use system SQLite. + +endchoice + +endif + +config BR2_PACKAGE_QT5BASE_TEST + def_bool y + +config BR2_PACKAGE_QT5BASE_XML + def_bool y + +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 \ + !BR2_PACKAGE_QT5BASE_DIRECTFB && \ + !BR2_PACKAGE_QT5BASE_XCB && \ + !BR2_PACKAGE_QT5BASE_EGLFS + help + This option enables the Qt5Gui library. + +if BR2_PACKAGE_QT5BASE_GUI + +config BR2_PACKAGE_QT5BASE_WIDGETS + bool "widgets module" + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_QT5BASE_XCB + help + This option enables the Qt5Widgets library. + +comment "OpenGL support needs an OpenGL-capable backend" + depends on !BR2_PACKAGE_QT5_GL_AVAILABLE + +config BR2_PACKAGE_QT5BASE_OPENGL + bool "OpenGL support" + depends on BR2_PACKAGE_QT5_GL_AVAILABLE + help + This option enables OpenGL support. + +if BR2_PACKAGE_QT5BASE_OPENGL + +choice + prompt "OpenGL API" + help + Select OpenGL API. + +config BR2_PACKAGE_QT5BASE_OPENGL_DESKTOP + bool "Desktop OpenGL" + depends on BR2_PACKAGE_HAS_LIBGL + help + Use desktop OpenGL. + +config BR2_PACKAGE_QT5BASE_OPENGL_ES2 + bool "OpenGL ES 2.0+" + depends on BR2_PACKAGE_HAS_LIBGLES + help + Use OpenGL ES 2.0 and later versions. + +endchoice + +config BR2_PACKAGE_QT5BASE_OPENGL_LIB + bool "opengl module" + select BR2_PACKAGE_QT5BASE_WIDGETS + help + This option enables the Qt5OpenGL library. This library + includes OpenGL support classes provided to ease porting + from Qt 4.x. + +endif + +config BR2_PACKAGE_QT5BASE_VULKAN + bool "Vulkan support" + depends on BR2_INSTALL_LIBSTDCPP # vulkan-loader + depends on !BR2_STATIC_LIBS # vulkan-loader + depends on BR2_TOOLCHAIN_HAS_THREADS # vulkan-loader + select BR2_PACKAGE_VULKAN_HEADERS + select BR2_PACKAGE_VULKAN_LOADER + help + This option enables Vulkan support. + +config BR2_PACKAGE_QT5BASE_LINUXFB + bool "linuxfb support" + +config BR2_PACKAGE_QT5BASE_DIRECTFB + bool "directfb support" + depends on BR2_PACKAGE_DIRECTFB + +comment "directfb backend available if directfb is enabled" + depends on !BR2_PACKAGE_DIRECTFB + +config BR2_PACKAGE_QT5BASE_XCB + bool "X.org XCB support" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_LIBXCB + select BR2_PACKAGE_XCB_UTIL_IMAGE + select BR2_PACKAGE_XCB_UTIL_KEYSYMS + select BR2_PACKAGE_XCB_UTIL_RENDERUTIL + select BR2_PACKAGE_XCB_UTIL_WM + select BR2_PACKAGE_LIBXKBCOMMON + +comment "X.org XCB backend available if X.org is enabled" + depends on !BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_QT5BASE_EGLFS + bool "eglfs support" + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_QT5_GL_AVAILABLE + select BR2_PACKAGE_QT5BASE_OPENGL + +comment "eglfs backend available if OpenGL and EGL are enabled" + depends on !BR2_PACKAGE_HAS_LIBEGL || !BR2_PACKAGE_QT5_GL_AVAILABLE + +config BR2_PACKAGE_QT5BASE_DEFAULT_QPA + string "Default graphical platform" + help + Choose the default platform abstraction to use for graphical + applications (e.g xcb, linuxfb, eglfs, ...). If this is + empty, the default for your architecture will be used + (usually this is eglfs). + + You can get a list of supported platforms by running a Qt + application with the option "-platform help" on your + target. You can choose a different platform at runtime with + the -platform option. + +config BR2_PACKAGE_QT5BASE_PRINTSUPPORT + depends on BR2_PACKAGE_QT5BASE_WIDGETS + def_bool y + +config BR2_PACKAGE_QT5BASE_FONTCONFIG + bool "fontconfig support" + select BR2_PACKAGE_FONTCONFIG + help + This option enables Fontconfig and Freetype support using + the system fontconfig and freetype2 libraries. + +config BR2_PACKAGE_QT5BASE_HARFBUZZ + bool "harfbuzz support" + select BR2_PACKAGE_HARFBUZZ if \ + BR2_TOOLCHAIN_HAS_SYNC_4 && \ + BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + help + This option enables HarfBuzz support (either system harfbuzz + if the toolchain supports __sync for 4 bytes, or the qt + provided one which avoids this dependency by using QAtomic). + +config BR2_PACKAGE_QT5BASE_GIF + bool "GIF support" + help + This compiles and installs the plugin for GIF reading support. + +config BR2_PACKAGE_QT5BASE_JPEG + bool "JPEG support" + select BR2_PACKAGE_JPEG + help + This option enables JPEG support using the system libjpeg + library. + +config BR2_PACKAGE_QT5BASE_PNG + bool "PNG support" + select BR2_PACKAGE_LIBPNG + help + This option enables PNG support using the system libpng + library. + +endif + +config BR2_PACKAGE_QT5BASE_SYSLOG + bool "syslog support" + help + Logs to the standard UNIX logging mechanism. + +config BR2_PACKAGE_QT5BASE_DBUS + bool "DBus module" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU + select BR2_PACKAGE_DBUS + help + This option enables the D-Bus module. + +config BR2_PACKAGE_QT5BASE_ICU + bool "Enable ICU support" + depends on !BR2_BINFMT_FLAT # icu + depends on BR2_HOST_GCC_AT_LEAST_4_9 # icu + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # icu + select BR2_PACKAGE_ICU + help + This option enables ICU support in Qt5. This is for example + needed for Qt5Webkit. + +comment "icu support needs a toolchain w/ gcc >= 4.9, host gcc >= 4.9" + depends on !BR2_BINFMT_FLAT + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_HOST_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_QT5BASE_TSLIB + bool "Enable Tslib support" + select BR2_PACKAGE_TSLIB + help + This options enables the Tslib plugin + +endif diff --git a/package/qt5/qt5base/qmake.conf.in b/package/qt5/qt5base/qmake.conf.in new file mode 100644 index 00000000..024c0749 --- /dev/null +++ b/package/qt5/qt5base/qmake.conf.in @@ -0,0 +1,38 @@ +# Qt5 has a mechanism to support "device" profiles, so that people can +# specify the compiler, compiler flags and so on for a specific device. + +# We leverage this mechanism in the Buildroot packaging of qt5 to +# simplify cross-compilation: we have our own "device" definition, which +# allows us to easily pass the cross-compiler paths and flags from our +# qt5.mk. + +include(../common/linux_device_pre.conf) + +# modifications to g++-unix.conf +QMAKE_CC = $${CROSS_COMPILE}gcc +QMAKE_CXX = $${CROSS_COMPILE}g++ + +# modifications to gcc-base.conf +QMAKE_CFLAGS += $${BR_COMPILER_CFLAGS} +QMAKE_CXXFLAGS += $${BR_COMPILER_CXXFLAGS} +# Remove all optimisation flags, we really only want our own. +QMAKE_CFLAGS_OPTIMIZE = +QMAKE_CFLAGS_OPTIMIZE_DEBUG = +QMAKE_CFLAGS_OPTIMIZE_FULL = +QMAKE_CFLAGS_OPTIMIZE_SIZE = +QMAKE_CFLAGS_DEBUG = +QMAKE_CXXFLAGS_DEBUG = +QMAKE_CFLAGS_RELEASE = +QMAKE_CXXFLAGS_RELEASE = +CONFIG += nostrip + +QMAKE_LIBS += -lrt -lpthread -ldl +QMAKE_CFLAGS_ISYSTEM = + +# Architecture specific configuration +include(arch.conf) + +@EGLFS_DEVICE@ + +include(../common/linux_device_post.conf) +load(qt_config) diff --git a/package/qt5/qt5base/qplatformdefs.h b/package/qt5/qt5base/qplatformdefs.h new file mode 100644 index 00000000..99e9a279 --- /dev/null +++ b/package/qt5/qt5base/qplatformdefs.h @@ -0,0 +1 @@ +#include "../../linux-g++/qplatformdefs.h" diff --git a/package/qt5/qt5base/qt.conf.in b/package/qt5/qt5base/qt.conf.in new file mode 100644 index 00000000..2215cbd4 --- /dev/null +++ b/package/qt5/qt5base/qt.conf.in @@ -0,0 +1,7 @@ +[Paths] +Prefix=/usr +HostPrefix=@@HOST_DIR@@ +Sysroot=@@STAGING_DIR@@ +Headers=/usr/include/qt5 +Plugins=/usr/lib/qt/plugins +Examples=/usr/lib/qt/examples diff --git a/package/qt5/qt5base/qt5base.hash b/package/qt5/qt5base/qt5base.hash new file mode 100644 index 00000000..14e0c9b6 --- /dev/null +++ b/package/qt5/qt5base/qt5base.hash @@ -0,0 +1,10 @@ +# Locally calculated +sha256 2d6ede564444b617a7fe6e8fa65b3d81df3a3308641cf7c35aef6aa471a21269 qt5base-2b9835f5c9bcfe3105b60a8dd33c1db7d8611378-git4.tar.gz + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 88ec689407cf2df9b2eb5c45952564d51ce73c129a3bdffb15c0d2d161ad7558 LICENSE.LGPLv3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL +sha256 2a886915de4f296cdae5ed67064f86dba01d0c55286d86e8487f2a5caaf40216 src/3rdparty/harfbuzz-ng/COPYING diff --git a/package/qt5/qt5base/qt5base.mk b/package/qt5/qt5base/qt5base.mk new file mode 100644 index 00000000..3fd5d302 --- /dev/null +++ b/package/qt5/qt5base/qt5base.mk @@ -0,0 +1,379 @@ +################################################################################ +# +# qt5base +# +################################################################################ + +QT5BASE_VERSION = 2b9835f5c9bcfe3105b60a8dd33c1db7d8611378 +QT5BASE_SITE = $(QT5_SITE)/qtbase +QT5BASE_SITE_METHOD = git +QT5BASE_CPE_ID_VENDOR = qt +QT5BASE_CPE_ID_PRODUCT = qt + +QT5BASE_DEPENDENCIES = host-pkgconf pcre2 zlib +QT5BASE_INSTALL_STAGING = YES +QT5BASE_SYNC_QT_HEADERS = YES + +# From commits: +# 4ce7053a59 "Avoid processing-intensive painting of high number of tiny dashes" +# e7ea2ed27c "Improve fix for avoiding huge number of tiny dashes" +QT5BASE_IGNORE_CVES += CVE-2021-38593 +# From commit 2766b2cba6ca4b1c430304df5437e2a6c874b107 "QProcess/Unix: ensure we don't accidentally execute something from CWD" +QT5BASE_IGNORE_CVES += CVE-2022-25255 +# From commit e68ca8e51375d963b2391715f70b42707992dbd8 "Windows: use QSystemLibrary instead of LoadLibrary directly" +QT5BASE_IGNORE_CVES += CVE-2022-25634 + +# A few comments: +# * -no-pch to workaround the issue described at +# http://comments.gmane.org/gmane.comp.lib.qt.devel/5933. +# * -system-zlib because zlib is mandatory for Qt build, and we +# want to use the Buildroot packaged zlib +# * -system-pcre because pcre is mandatory to build Qt, and we +# want to use the one packaged in Buildroot +# * -no-feature-relocatable to work around path mismatch +# while searching qml files and buildroot BR2_ROOTFS_MERGED_USR +# feature enabled +QT5BASE_CONFIGURE_OPTS += \ + -optimized-qmake \ + -no-iconv \ + -system-zlib \ + -system-pcre \ + -no-pch \ + -shared \ + -no-feature-relocatable + +# starting from version 5.9.0, -optimize-debug is enabled by default +# for debug builds and it overrides -O* with -Og which is not what we +# want. +QT5BASE_CONFIGURE_OPTS += -no-optimize-debug + +QT5BASE_CFLAGS = $(TARGET_CFLAGS) +QT5BASE_CXXFLAGS = $(TARGET_CXXFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_90620),y) +QT5BASE_CFLAGS += -O0 +QT5BASE_CXXFLAGS += -O0 +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE2),) +QT5BASE_CONFIGURE_OPTS += -no-sse2 +else ifeq ($(BR2_X86_CPU_HAS_SSE3),) +QT5BASE_CONFIGURE_OPTS += -no-sse3 +else ifeq ($(BR2_X86_CPU_HAS_SSSE3),) +QT5BASE_CONFIGURE_OPTS += -no-ssse3 +else ifeq ($(BR2_X86_CPU_HAS_SSE4),) +QT5BASE_CONFIGURE_OPTS += -no-sse4.1 +else ifeq ($(BR2_X86_CPU_HAS_SSE42),) +QT5BASE_CONFIGURE_OPTS += -no-sse4.2 +else ifeq ($(BR2_X86_CPU_HAS_AVX),) +QT5BASE_CONFIGURE_OPTS += -no-avx +else ifeq ($(BR2_X86_CPU_HAS_AVX2),) +QT5BASE_CONFIGURE_OPTS += -no-avx2 +else +# no buildroot BR2_X86_CPU_HAS_AVX512 option yet for qt configure +# option '-no-avx512' +endif + +ifeq ($(BR2_PACKAGE_LIBDRM),y) +QT5BASE_CONFIGURE_OPTS += -kms +QT5BASE_DEPENDENCIES += libdrm +else +QT5BASE_CONFIGURE_OPTS += -no-kms +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGBM),y) +QT5BASE_CONFIGURE_OPTS += -gbm +QT5BASE_DEPENDENCIES += libgbm +else +QT5BASE_CONFIGURE_OPTS += -no-gbm +endif + +ifeq ($(BR2_ENABLE_RUNTIME_DEBUG),y) +QT5BASE_CONFIGURE_OPTS += -debug +else +QT5BASE_CONFIGURE_OPTS += -release +endif + +QT5BASE_CONFIGURE_OPTS += -opensource -confirm-license +QT5BASE_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5BASE_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +QT5BASE_LICENSE += , BSD-3-Clause (examples) +endif + +QT5BASE_CONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_QT5BASE_CONFIG_FILE)) + +ifneq ($(QT5BASE_CONFIG_FILE),) +QT5BASE_CONFIGURE_OPTS += -qconfig buildroot +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +QT5BASE_DEPENDENCIES += udev +endif + +ifeq ($(BR2_PACKAGE_CUPS), y) +QT5BASE_DEPENDENCIES += cups +QT5BASE_CONFIGURE_OPTS += -cups +else +QT5BASE_CONFIGURE_OPTS += -no-cups +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +QT5BASE_DEPENDENCIES += zstd +QT5BASE_CONFIGURE_OPTS += -zstd +else +QT5BASE_CONFIGURE_OPTS += -no-zstd +endif + +# Qt5 SQL Plugins +ifeq ($(BR2_PACKAGE_QT5BASE_SQL),y) +ifeq ($(BR2_PACKAGE_QT5BASE_MYSQL),y) +QT5BASE_CONFIGURE_OPTS += -plugin-sql-mysql -mysql_config $(STAGING_DIR)/usr/bin/mysql_config +QT5BASE_DEPENDENCIES += mariadb +else +QT5BASE_CONFIGURE_OPTS += -no-sql-mysql +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_PSQL),y) +QT5BASE_CONFIGURE_OPTS += -plugin-sql-psql -psql_config $(STAGING_DIR)/usr/bin/pg_config +QT5BASE_DEPENDENCIES += postgresql +else +QT5BASE_CONFIGURE_OPTS += -no-sql-psql +endif + +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_SQLITE_QT),-plugin-sql-sqlite) +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM),-system-sqlite) +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_DEPENDENCIES += freetype +else +QT5BASE_CONFIGURE_OPTS += -no-gui -no-freetype +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_HARFBUZZ),y) +ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_4),y) +# system harfbuzz in case __sync for 4 bytes is supported +QT5BASE_CONFIGURE_OPTS += -system-harfbuzz +QT5BASE_DEPENDENCIES += harfbuzz +else +# qt harfbuzz otherwise (using QAtomic instead) +QT5BASE_CONFIGURE_OPTS += -qt-harfbuzz +QT5BASE_LICENSE += , MIT (harfbuzz) +QT5BASE_LICENSE_FILES += src/3rdparty/harfbuzz-ng/COPYING +endif +else +QT5BASE_CONFIGURE_OPTS += -no-harfbuzz +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_LINUXFB),--enable-linuxfb,-no-linuxfb) +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_DIRECTFB),-directfb,-no-directfb) +QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5BASE_DIRECTFB),directfb) + +ifeq ($(BR2_PACKAGE_LIBXKBCOMMON),y) +QT5BASE_CONFIGURE_OPTS += -xkbcommon +QT5BASE_DEPENDENCIES += libxkbcommon +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_XCB),y) +QT5BASE_CONFIGURE_OPTS += -xcb + +QT5BASE_DEPENDENCIES += \ + libxcb \ + xcb-util-wm \ + xcb-util-image \ + xcb-util-keysyms \ + xcb-util-renderutil \ + xlib_libX11 +ifeq ($(BR2_PACKAGE_QT5BASE_WIDGETS),y) +QT5BASE_DEPENDENCIES += xlib_libXext +endif +else +QT5BASE_CONFIGURE_OPTS += -no-xcb +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_OPENGL_DESKTOP),y) +QT5BASE_CONFIGURE_OPTS += -opengl desktop +QT5BASE_DEPENDENCIES += libgl +else ifeq ($(BR2_PACKAGE_QT5BASE_OPENGL_ES2),y) +QT5BASE_CONFIGURE_OPTS += -opengl es2 +QT5BASE_DEPENDENCIES += libgles +else +QT5BASE_CONFIGURE_OPTS += -no-opengl +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_VULKAN),y) +QT5BASE_CONFIGURE_OPTS += -feature-vulkan +QT5BASE_DEPENDENCIES += vulkan-headers vulkan-loader +else +QT5BASE_CONFIGURE_OPTS += -no-feature-vulkan +endif + +QT5BASE_DEFAULT_QPA = $(call qstrip,$(BR2_PACKAGE_QT5BASE_DEFAULT_QPA)) +QT5BASE_CONFIGURE_OPTS += $(if $(QT5BASE_DEFAULT_QPA),-qpa $(QT5BASE_DEFAULT_QPA)) + +ifeq ($(BR2_arc),y) +# In case of -Os (which is default in BR) gcc will use millicode implementation +# from libgcc. That along with performance degradation may lead to issues during +# linkage stage. In case of QtWebkit exactly that happens - millicode functions +# get put way too far from caller functions and so linker fails. +# To solve that problem we explicitly disable millicode call generation for Qt. +# Also due to some Qt5 libs being really huge (the best example is QtWebKit) +# it's good to firce compiler to not assume short or even medium-length calls +# could be used. I.e. always use long jump instaructions. +# Otherwise there's a high risk of hitting link-time failures. +QT5BASE_CFLAGS += -mno-millicode -mlong-calls +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_EGLFS),y) +QT5BASE_CONFIGURE_OPTS += -eglfs +QT5BASE_DEPENDENCIES += libegl +else +QT5BASE_CONFIGURE_OPTS += -no-eglfs +endif + +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_LIBOPENSSL),-openssl,-no-openssl) +QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBOPENSSL),openssl) + +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_FONTCONFIG),-fontconfig,-no-fontconfig) +QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5BASE_FONTCONFIG),fontconfig) +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_GIF),,-no-gif) +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_JPEG),-system-libjpeg,-no-libjpeg) +QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5BASE_JPEG),jpeg) +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_PNG),-system-libpng,-no-libpng) +QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5BASE_PNG),libpng) + +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_DBUS),-dbus,-no-dbus) +QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5BASE_DBUS),dbus) + +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_TSLIB),-tslib,-no-tslib) +QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5BASE_TSLIB),tslib) + +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_LIBGLIB2),-glib,-no-glib) +QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBGLIB2),libglib2) + +QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBKRB5),libkrb5) + +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_ICU),-icu,-no-icu) +QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5BASE_ICU),icu) + +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_EXAMPLES),-make,-nomake) examples + +# see qt5base-5.15.2/src/corelib/global/qlogging.cpp:110 - __has_include() +ifeq ($(BR2_PACKAGE_LIBEXECINFO),y) +QT5BASE_DEPENDENCIES += libexecinfo +define QT5BASE_CONFIGURE_ARCH_CONFIG_LIBEXECINFO + printf '!host_build { \n LIBS += -lexecinfo\n }' >$(QT5BASE_ARCH_CONFIG_FILE) +endef +endif + +ifeq ($(BR2_PACKAGE_LIBINPUT),y) +QT5BASE_CONFIGURE_OPTS += -libinput +QT5BASE_DEPENDENCIES += libinput +else +QT5BASE_CONFIGURE_OPTS += -no-libinput +endif + +# only enable gtk support if libgtk3 X11 backend is enabled +ifeq ($(BR2_PACKAGE_LIBGTK3)$(BR2_PACKAGE_LIBGTK3_X11),yy) +QT5BASE_CONFIGURE_OPTS += -gtk +QT5BASE_DEPENDENCIES += libgtk3 +else +QT5BASE_CONFIGURE_OPTS += -no-gtk +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +QT5BASE_CONFIGURE_OPTS += -journald +QT5BASE_DEPENDENCIES += systemd +else +QT5BASE_CONFIGURE_OPTS += -no-journald +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_SYSLOG),y) +QT5BASE_CONFIGURE_OPTS += -syslog +else +QT5BASE_CONFIGURE_OPTS += -no-syslog +endif + +ifeq ($(BR2_PACKAGE_IMX_GPU_VIV),y) +# use vivante backend +QT5BASE_EGLFS_DEVICE = EGLFS_DEVICE_INTEGRATION = eglfs_viv +else ifeq ($(BR2_PACKAGE_SUNXI_MALI_UTGARD),y) +# use mali backend +QT5BASE_EGLFS_DEVICE = EGLFS_DEVICE_INTEGRATION = eglfs_mali +else ifeq ($(BR2_PACKAGE_ROCKCHIP_MALI),y) +# use kms backend +QT5BASE_EGLFS_DEVICE = EGLFS_DEVICE_INTEGRATION = eglfs_kms +endif + +ifneq ($(QT5BASE_CONFIG_FILE),) +define QT5BASE_CONFIGURE_CONFIG_FILE + cp $(QT5BASE_CONFIG_FILE) $(@D)/src/corelib/global/qconfig-buildroot.h +endef +endif + +QT5BASE_ARCH_CONFIG_FILE = $(@D)/mkspecs/devices/linux-buildroot-g++/arch.conf +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +# Qt 5.8 needs atomics, which on various architectures are in -latomic +define QT5BASE_CONFIGURE_ARCH_CONFIG_LIBATOMIC + printf '!host_build { \n LIBS += -latomic\n }' >$(QT5BASE_ARCH_CONFIG_FILE) +endef +endif + +# This allows to use ccache when available +ifeq ($(BR2_CCACHE),y) +QT5BASE_CONFIGURE_OPTS += -ccache +endif + +# Ensure HOSTCC/CXX is used +define QT5BASE_CONFIGURE_HOSTCC + $(SED) 's,^QMAKE_CC\s*=.*,QMAKE_CC = $(HOSTCC_NOCCACHE),' $(@D)/mkspecs/common/g++-base.conf + $(SED) 's,^QMAKE_CXX\s*=.*,QMAKE_CXX = $(HOSTCXX_NOCCACHE),' $(@D)/mkspecs/common/g++-base.conf +endef + +# Must be last so can override all options set by Buildroot +QT5BASE_CONFIGURE_OPTS += $(call qstrip,$(BR2_PACKAGE_QT5BASE_CUSTOM_CONF_OPTS)) + +define QT5BASE_CONFIGURE_CMDS + mkdir -p $(@D)/mkspecs/devices/linux-buildroot-g++/ + sed 's/@EGLFS_DEVICE@/$(QT5BASE_EGLFS_DEVICE)/g' \ + $(QT5BASE_PKGDIR)/qmake.conf.in > \ + $(@D)/mkspecs/devices/linux-buildroot-g++/qmake.conf + $(INSTALL) -m 0644 -D $(QT5BASE_PKGDIR)/qplatformdefs.h \ + $(@D)/mkspecs/devices/linux-buildroot-g++/qplatformdefs.h + $(QT5BASE_CONFIGURE_CONFIG_FILE) + touch $(QT5BASE_ARCH_CONFIG_FILE) + $(QT5BASE_CONFIGURE_ARCH_CONFIG_LIBATOMIC) + $(QT5BASE_CONFIGURE_ARCH_CONFIG_LIBEXECINFO) + $(QT5BASE_CONFIGURE_HOSTCC) + (cd $(@D); \ + $(TARGET_MAKE_ENV) \ + PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ + MAKEFLAGS="-j$(PARALLEL_JOBS) $(MAKEFLAGS)" \ + ./configure \ + -v \ + -prefix /usr \ + -hostprefix $(HOST_DIR) \ + -headerdir /usr/include/qt5 \ + -sysroot $(STAGING_DIR) \ + -plugindir /usr/lib/qt/plugins \ + -examplesdir /usr/lib/qt/examples \ + -no-rpath \ + -nomake tests \ + -device buildroot \ + -device-option CROSS_COMPILE="$(TARGET_CROSS)" \ + -device-option BR_COMPILER_CFLAGS="$(QT5BASE_CFLAGS)" \ + -device-option BR_COMPILER_CXXFLAGS="$(QT5BASE_CXXFLAGS)" \ + $(QT5BASE_CONFIGURE_OPTS) \ + ) +endef + +QT5BASE_POST_INSTALL_STAGING_HOOKS += QT5_INSTALL_QT_CONF + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5charts/Config.in b/package/qt5/qt5charts/Config.in new file mode 100644 index 00000000..a72da65e --- /dev/null +++ b/package/qt5/qt5charts/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_QT5CHARTS + bool "qt5charts" + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_WIDGETS + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt Charts module provides a set of easy to use chart + components. + + https://doc.qt.io/qt-5/qtcharts-index.html diff --git a/package/qt5/qt5charts/qt5charts.hash b/package/qt5/qt5charts/qt5charts.hash new file mode 100644 index 00000000..009edbd2 --- /dev/null +++ b/package/qt5/qt5charts/qt5charts.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 c66fec01fedf753bee860aedc365730367026c28a2418a6819b0b2550336293c qtcharts-7315c48bcec88014e78165bbda54abfcd557e0af.tar.bz2 + +# Hashes for license files: +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 diff --git a/package/qt5/qt5charts/qt5charts.mk b/package/qt5/qt5charts/qt5charts.mk new file mode 100644 index 00000000..25da7f8e --- /dev/null +++ b/package/qt5/qt5charts/qt5charts.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# qt5charts +# +################################################################################ + +QT5CHARTS_VERSION = 7315c48bcec88014e78165bbda54abfcd557e0af +QT5CHARTS_SITE = $(QT5_SITE)/qtcharts/-/archive/$(QT5CHARTS_VERSION) +QT5CHARTS_SOURCE = qtcharts-$(QT5CHARTS_VERSION).tar.bz2 +QT5CHARTS_INSTALL_STAGING = YES +QT5CHARTS_SYNC_QT_HEADERS = YES + +QT5CHARTS_LICENSE = GPL-3.0 +QT5CHARTS_LICENSE_FILES = LICENSE.GPL3 + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) +QT5CHARTS_DEPENDENCIES += qt5declarative +endif + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5coap/Config.in b/package/qt5/qt5coap/Config.in new file mode 100644 index 00000000..b5bed342 --- /dev/null +++ b/package/qt5/qt5coap/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_QT5COAP + bool "qt5coap" + help + Qt is a cross-platform application and UI framework for + developers using C++. + + CoAP is a protocol for IoT devices, and machine to machine + communication. The Qt CoAP module implements the client side + of CoAP defined by RFC 7252. + + https://doc.qt.io/QtCoAP/qtcoap-index.html diff --git a/package/qt5/qt5coap/qt5coap.hash b/package/qt5/qt5coap/qt5coap.hash new file mode 100644 index 00000000..669b264e --- /dev/null +++ b/package/qt5/qt5coap/qt5coap.hash @@ -0,0 +1,6 @@ +# Hash locally calculated +sha256 de13d0160c2d0924558706e61382b84d8df7559c935e9873f7623d1dee18e476 qt5coap-5.15.2-git4.tar.gz + +# Hashes for license files: +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 f827ad079686ba92cc94811e35492d0e8966f704008b6da9eeda0b659fb58a8d LICENSE.FDL diff --git a/package/qt5/qt5coap/qt5coap.mk b/package/qt5/qt5coap/qt5coap.mk new file mode 100644 index 00000000..5feb1e5b --- /dev/null +++ b/package/qt5/qt5coap/qt5coap.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# qt5coap +# +################################################################################ + +QT5COAP_VERSION = 5.15.2 +QT5COAP_SITE = https://code.qt.io/qt/qtcoap.git +QT5COAP_SITE_METHOD = git +QT5COAP_INSTALL_STAGING = YES +QT5COAP_LICENSE = GPL-3.0, GFDL-1.3 +QT5COAP_LICENSE_FILES = LICENSE.GPL3 LICENSE.FDL +QT5COAP_SYNC_QT_HEADERS = YES + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5connectivity/Config.in b/package/qt5/qt5connectivity/Config.in new file mode 100644 index 00000000..244d0167 --- /dev/null +++ b/package/qt5/qt5connectivity/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_QT5CONNECTIVITY + bool "qt5connectivity" + depends on BR2_PACKAGE_NEARD || BR2_PACKAGE_BLUEZ5_UTILS + select BR2_PACKAGE_QT5BASE_CONCURRENT + select BR2_PACKAGE_QT5BASE_DBUS + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt Connectivity module provides support for Bluetooth/NFC + peripherials. + + https://doc.qt.io/qt-5/qtbluetooth-index.html + https://doc.qt.io/qt-5/qtnfc-index.html + +comment "qt5connectivity needs neard and/or bluez5_utils" + depends on !BR2_PACKAGE_NEARD && !BR2_PACKAGE_BLUEZ5_UTILS diff --git a/package/qt5/qt5connectivity/qt5connectivity.hash b/package/qt5/qt5connectivity/qt5connectivity.hash new file mode 100644 index 00000000..8185a272 --- /dev/null +++ b/package/qt5/qt5connectivity/qt5connectivity.hash @@ -0,0 +1,9 @@ +# Locally calculated +sha256 3f7ed280d234a50d21937aecaf5494bbd570fb80e71f49598e082cefe81d41fe qtconnectivity-99f30db37c63447c59d5fac15bc8feb832a7fd04.tar.bz2 + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL diff --git a/package/qt5/qt5connectivity/qt5connectivity.mk b/package/qt5/qt5connectivity/qt5connectivity.mk new file mode 100644 index 00000000..e1592e80 --- /dev/null +++ b/package/qt5/qt5connectivity/qt5connectivity.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# qt5connectivity +# +################################################################################ + +QT5CONNECTIVITY_VERSION = 99f30db37c63447c59d5fac15bc8feb832a7fd04 +QT5CONNECTIVITY_SITE = $(QT5_SITE)/qtconnectivity/-/archive/$(QT5CONNECTIVITY_VERSION) +QT5CONNECTIVITY_SOURCE = qtconnectivity-$(QT5CONNECTIVITY_VERSION).tar.bz2 +QT5CONNECTIVITY_INSTALL_STAGING = YES +QT5CONNECTIVITY_SYNC_QT_HEADERS = YES + +QT5CONNECTIVITY_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5CONNECTIVITY_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL + +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +QT5CONNECTIVITY_LICENSE += , BSD-3-Clause (examples) +endif + +QT5CONNECTIVITY_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5DECLARATIVE),qt5declarative) +QT5CONNECTIVITY_DEPENDENCIES += $(if $(BR2_PACKAGE_BLUEZ5_UTILS),bluez5_utils) +QT5CONNECTIVITY_DEPENDENCIES += $(if $(BR2_PACKAGE_NEARD),neard) + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5declarative/0001-qsgtexture-fix-debug-build-with-uclibc.patch b/package/qt5/qt5declarative/0001-qsgtexture-fix-debug-build-with-uclibc.patch new file mode 100644 index 00000000..b6de49e1 --- /dev/null +++ b/package/qt5/qt5declarative/0001-qsgtexture-fix-debug-build-with-uclibc.patch @@ -0,0 +1,47 @@ +From dfa9555010535003eac69788597f53d3ff44168f Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 29 Nov 2018 23:33:10 +0100 +Subject: [PATCH] qsgtexture: fix debug build with uclibc + +Debug build of gsgtexture fails on uclibc since version 5.11 and +https://github.com/qt/qtdeclarative/commit/7c507eaac3f848f92f2ebdafe8ded4a064d68351: + +scenegraph/util/qsgtexture.cpp:69:22: fatal error: execinfo.h: No such file or directory + #include + +Indeed, !defined(__UCLIBC__) has been replaced by defined(__GBLIBC__) to +fix build on musl but as a result, build fails on uclibc because uclibc +also defines __GLIBC__ (and it does not have execinfo like musl) + +This error is raised only when building in debug mode because +CAN_BACKTRACE_EXECINFO is undefined if QT_NO_DEBUG is set + +So keep defined(__GLIBC__), but put back !defined(__UCLIBC__) + +Fixes: + - http://autobuild.buildroot.org/results/6fce0ce5aea943e097532efbbc8d1e28f41e5866 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/qt/qtdeclarative/pull/4] +[Rebased for Qt5.14.0] +Signed-off-by: Peter Seiderer +--- + src/quick/scenegraph/coreapi/qsgtexture.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/quick/scenegraph/coreapi/qsgtexture.cpp b/src/quick/scenegraph/coreapi/qsgtexture.cpp +index dfbe4d3f..6a7bc79b 100644 +--- a/src/quick/scenegraph/coreapi/qsgtexture.cpp ++++ b/src/quick/scenegraph/coreapi/qsgtexture.cpp +@@ -46,7 +46,7 @@ + #include + #include + +-#if defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID) && defined(__GLIBC__) ++#if defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID) && defined(__GLIBC__) && !defined(__UCLIBC__) + #define CAN_BACKTRACE_EXECINFO + #endif + +-- +2.23.0 + diff --git a/package/qt5/qt5declarative/0002-qv4regexp_p-needs-c-limits-include-instead-of-plain-.patch b/package/qt5/qt5declarative/0002-qv4regexp_p-needs-c-limits-include-instead-of-plain-.patch new file mode 100644 index 00000000..d3344c64 --- /dev/null +++ b/package/qt5/qt5declarative/0002-qv4regexp_p-needs-c-limits-include-instead-of-plain-.patch @@ -0,0 +1,41 @@ +From bfd3d907f48aba870be00cd251f0b63d34985be2 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Thu, 22 Jul 2021 23:02:29 +0200 +Subject: [PATCH] qv4regexp_p: needs c++ limits include (instead of plain c + limit.h) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes gcc-11 compile: + + In file included from jsruntime/qv4regexp_p.h:62, + from jsruntime/qv4regexp.cpp:40: + ../3rdparty/masm/yarr/Yarr.h:46:44: error: ‘numeric_limits’ is not a member of ‘std’ + 46 | static const unsigned offsetNoMatch = std::numeric_limits::max(); + | ^~~~~~~~~~~~~~ + ../3rdparty/masm/yarr/Yarr.h:46:59: error: expected primary-expression before ‘unsigned’ + 46 | static const unsigned offsetNoMatch = std::numeric_limits::max(); + | ^~~~~~~~ + +Signed-off-by: Peter Seiderer +--- + src/qml/jsruntime/qv4regexp_p.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/qml/jsruntime/qv4regexp_p.h b/src/qml/jsruntime/qv4regexp_p.h +index 6afb10ea95..c64f3d3c38 100644 +--- a/src/qml/jsruntime/qv4regexp_p.h ++++ b/src/qml/jsruntime/qv4regexp_p.h +@@ -57,7 +57,7 @@ + #include + #include + +-#include ++#include + + #include + #include +-- +2.32.0 + diff --git a/package/qt5/qt5declarative/Config.in b/package/qt5/qt5declarative/Config.in new file mode 100644 index 00000000..477e1970 --- /dev/null +++ b/package/qt5/qt5declarative/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_QT5DECLARATIVE + bool "qt5declarative" + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt Declarative module provides the Qt QML and Qt Quick + modules for developing UIs with the QML language + + https://doc.qt.io/qt-5/qtqml-index.html + https://doc.qt.io/qt-5/qtquick-index.html + +if BR2_PACKAGE_QT5DECLARATIVE + +config BR2_PACKAGE_QT5DECLARATIVE_QUICK + bool "quick module" + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_OPENGL if BR2_PACKAGE_QT5_GL_AVAILABLE + +endif diff --git a/package/qt5/qt5declarative/qt5declarative.hash b/package/qt5/qt5declarative/qt5declarative.hash new file mode 100644 index 00000000..3a5fc443 --- /dev/null +++ b/package/qt5/qt5declarative/qt5declarative.hash @@ -0,0 +1,9 @@ +# Locally calculated +sha256 9a84a707411c0daa6b3292ebe264ac7e979639d9f6d5fd45bb18799b42ca0c33 qtdeclarative-50c8def854806485d66aabcf6918e8b987032e55.tar.bz2 + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL diff --git a/package/qt5/qt5declarative/qt5declarative.mk b/package/qt5/qt5declarative/qt5declarative.mk new file mode 100644 index 00000000..0dbb69f2 --- /dev/null +++ b/package/qt5/qt5declarative/qt5declarative.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# qt5declarative +# +################################################################################ + +QT5DECLARATIVE_VERSION = 50c8def854806485d66aabcf6918e8b987032e55 +QT5DECLARATIVE_SITE = $(QT5_SITE)/qtdeclarative/-/archive/$(QT5DECLARATIVE_VERSION) +QT5DECLARATIVE_SOURCE = qtdeclarative-$(QT5DECLARATIVE_VERSION).tar.bz2 +QT5DECLARATIVE_INSTALL_STAGING = YES +QT5DECLARATIVE_SYNC_QT_HEADERS = YES + +QT5DECLARATIVE_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5DECLARATIVE_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5doc/Config.in b/package/qt5/qt5doc/Config.in new file mode 100644 index 00000000..e9685a4d --- /dev/null +++ b/package/qt5/qt5doc/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_QT5DOC + bool "qt5doc (includes quick demos)" + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative + select BR2_PACKAGE_QT5BASE_EXAMPLES + select BR2_PACKAGE_QT5DECLARATIVE + select BR2_PACKAGE_QT5DECLARATIVE_QUICK + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qtdoc contains the main Qt Reference Documentation, which + includes overviews, Qt topics, and examples not specific to + any Qt module. The configuration files are located in + qtdoc/doc/config and the articles in qtdoc/doc/src. Note that + QDoc itself is located in qtbase. + + https://doc.qt.io/qt-5/overviews.html diff --git a/package/qt5/qt5doc/qt5doc.hash b/package/qt5/qt5doc/qt5doc.hash new file mode 100644 index 00000000..8139bfdd --- /dev/null +++ b/package/qt5/qt5doc/qt5doc.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 2fd5e9d12067e67c1e1cf77862e6e351ce7300a9eb9b3f089627114f40d45165 qtdoc-bc4503b8b70f4cd435d6e64a9e6c623ca44b9fcd.tar.bz2 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL diff --git a/package/qt5/qt5doc/qt5doc.mk b/package/qt5/qt5doc/qt5doc.mk new file mode 100644 index 00000000..597bc965 --- /dev/null +++ b/package/qt5/qt5doc/qt5doc.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# qt5doc +# +################################################################################ + +QT5DOC_VERSION = bc4503b8b70f4cd435d6e64a9e6c623ca44b9fcd +QT5DOC_SITE = $(QT5_SITE)/qtdoc/-/archive/$(QT5DOC_VERSION) +QT5DOC_SOURCE = qtdoc-$(QT5DOC_VERSION).tar.bz2 +QT5DOC_DEPENDENCIES = qt5declarative +QT5DOC_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_QT5QUICKCONTROLS),y) +QT5DOC_DEPENDENCIES += qt5quickcontrols +endif + +ifeq ($(BR2_PACKAGE_QT5QUICKCONTROLS2),y) +QT5DOC_DEPENDENCIES += qt5quickcontrols2 +endif + +ifeq ($(BR2_PACKAGE_QT5XMLPATTERNS),y) +QT5DOC_DEPENDENCIES += qt5xmlpatterns +endif + +QT5DOC_LICENSE = GFDL-1.3 +QT5DOC_LICENSE_FILES = LICENSE.FDL + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5enginio/0001-Do-not-use-deprecated-QLinkedList.patch b/package/qt5/qt5enginio/0001-Do-not-use-deprecated-QLinkedList.patch new file mode 100644 index 00000000..0a3fd807 --- /dev/null +++ b/package/qt5/qt5enginio/0001-Do-not-use-deprecated-QLinkedList.patch @@ -0,0 +1,39 @@ +From ca81a62bb3f8ce67d564631bb8d4e11619acf430 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Fri, 3 Apr 2020 19:59:47 +0200 +Subject: [PATCH] Do not use deprecated QLinkedList +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Do not use (internally already by QT_NO_LINKED_LIST) deprecated QLinkeList, +use QList instead. + +Fixes: + + ../../include/Enginio/1.6.3/Enginio/private/../../../../../src/enginio_client/enginioclient_p.h:293:5: error: ‘QLinkedList’ does not name a type + +Signed-off-by: Peter Seiderer +--- + src/enginio_client/enginioclient_p.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/enginio_client/enginioclient_p.h b/src/enginio_client/enginioclient_p.h +index 6b5dc53..f3fe68e 100644 +--- a/src/enginio_client/enginioclient_p.h ++++ b/src/enginio_client/enginioclient_p.h +@@ -290,7 +290,11 @@ public: + QByteArray _backendId; + EnginioIdentity *_identity; + ++#if defined(QT_NO_LINKED_LIST) ++ QList _connections; ++#else + QLinkedList _connections; ++#endif + QVarLengthArray _identityConnections; + QUrl _serviceUrl; + QSharedPointer _networkManager; +-- +2.26.0 + diff --git a/package/qt5/qt5enginio/Config.in b/package/qt5/qt5enginio/Config.in new file mode 100644 index 00000000..a1ac6f8c --- /dev/null +++ b/package/qt5/qt5enginio/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_QT5ENGINIO + bool "qt5enginio" + select BR2_PACKAGE_OPENSSL + # Only openssl is supported by qt5 + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_NETWORK + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Enginio is a Backend-as-a-Service solution for simplifying + backend development of connected and data-driven applications. + + This package has been tagged as deprecated since version + 5.6 and not recommended for new design. + + https://doc.qt.io/archives/qt-5.5/enginio-index.html diff --git a/package/qt5/qt5enginio/qt5enginio.hash b/package/qt5/qt5enginio/qt5enginio.hash new file mode 100644 index 00000000..f1ad364c --- /dev/null +++ b/package/qt5/qt5enginio/qt5enginio.hash @@ -0,0 +1,9 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtenginio-opensource-src-1.6.3.tar.xz.mirrorlist +sha256 d907060b355512ceb7a8c3f6980e3979c20d54320b6804303b6c5e8ed42d3912 qtenginio-opensource-src-1.6.3.tar.xz + +# Hashes for license files: +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 1996a36160b2158c2be264d2ddfa6148ebe0f1ececff55aca8d754a1ddcc7bb8 LICENSE.LGPLv21 +sha256 438c1f9a2b256e47dac33249f2ad6d4a9df643f1ec5312216d528a2f7ad82084 LGPL_EXCEPTION.txt +sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 +sha256 f827ad079686ba92cc94811e35492d0e8966f704008b6da9eeda0b659fb58a8d LICENSE.FDL diff --git a/package/qt5/qt5enginio/qt5enginio.mk b/package/qt5/qt5enginio/qt5enginio.mk new file mode 100644 index 00000000..a9572db2 --- /dev/null +++ b/package/qt5/qt5enginio/qt5enginio.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# qt5enginio +# +################################################################################ + +# Qt5Enginio does not follow Qt versionning +# see https://bugreports.qt.io/browse/QTBUG-50111 +QT5ENGINIO_VERSION = 1.6.3 +QT5ENGINIO_SITE = https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules +QT5ENGINIO_SOURCE = qtenginio-opensource-src-$(QT5ENGINIO_VERSION).tar.xz +QT5ENGINIO_DEPENDENCIES = openssl +QT5ENGINIO_INSTALL_STAGING = YES + +QT5ENGINIO_LICENSE = GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs) +QT5ENGINIO_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +QT5ENGINIO_LICENSE += , BSD-3-Clause (examples) +endif + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) +QT5ENGINIO_DEPENDENCIES += qt5declarative +endif + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5graphicaleffects/Config.in b/package/qt5/qt5graphicaleffects/Config.in new file mode 100644 index 00000000..01946d8b --- /dev/null +++ b/package/qt5/qt5graphicaleffects/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_QT5GRAPHICALEFFECTS + bool "qt5graphicaleffects" + depends on BR2_PACKAGE_QT5_GL_AVAILABLE + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + select BR2_PACKAGE_QT5DECLARATIVE + select BR2_PACKAGE_QT5DECLARATIVE_QUICK + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt Graphical Effects module provides a set of QML types + for adding visually impressive and configurable effects to + user interfaces. + + https://doc.qt.io/qt-5/qtgraphicaleffects-index.html + +comment "qt5graphicaleffects needs an OpenGL-capable backend" + depends on !BR2_PACKAGE_QT5_GL_AVAILABLE + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE diff --git a/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash b/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash new file mode 100644 index 00000000..900edaee --- /dev/null +++ b/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash @@ -0,0 +1,9 @@ +# Locally calculated +sha256 dca1697c8dd21e53999df67f0ac59c1c26531ef3a693bfc066408047ea511e7a qtgraphicaleffects-2c39e673d6c15a84dcc7882d3772fa04cc79f9ed.tar.bz2 + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL diff --git a/package/qt5/qt5graphicaleffects/qt5graphicaleffects.mk b/package/qt5/qt5graphicaleffects/qt5graphicaleffects.mk new file mode 100644 index 00000000..341f4a70 --- /dev/null +++ b/package/qt5/qt5graphicaleffects/qt5graphicaleffects.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# qt5graphicaleffects +# +################################################################################ + +QT5GRAPHICALEFFECTS_VERSION = 2c39e673d6c15a84dcc7882d3772fa04cc79f9ed +QT5GRAPHICALEFFECTS_SITE = $(QT5_SITE)/qtgraphicaleffects/-/archive/$(QT5GRAPHICALEFFECTS_VERSION) +QT5GRAPHICALEFFECTS_SOURCE = qtgraphicaleffects-$(QT5GRAPHICALEFFECTS_VERSION).tar.bz2 +QT5GRAPHICALEFFECTS_DEPENDENCIES = qt5declarative +QT5GRAPHICALEFFECTS_INSTALL_STAGING = YES +QT5GRAPHICALEFFECTS_SYNC_QT_HEADERS = YES + +QT5GRAPHICALEFFECTS_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5GRAPHICALEFFECTS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5imageformats/Config.in b/package/qt5/qt5imageformats/Config.in new file mode 100644 index 00000000..2504d23a --- /dev/null +++ b/package/qt5/qt5imageformats/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_QT5IMAGEFORMATS + bool "qt5imageformats" + select BR2_PACKAGE_QT5BASE_GUI + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt Image Formats module provides plugins for + additional image formats: TIFF, MNG, TGA, WBMP + + https://doc.qt.io/qt-5/qtimageformats-index.html diff --git a/package/qt5/qt5imageformats/qt5imageformats.hash b/package/qt5/qt5imageformats/qt5imageformats.hash new file mode 100644 index 00000000..5da25631 --- /dev/null +++ b/package/qt5/qt5imageformats/qt5imageformats.hash @@ -0,0 +1,9 @@ +# Locally calculated +sha256 d4805fadfd33243c4a1c9f81083f75b5162e25b92a39a56d87558ba03a2fb8a3 qtimageformats-4e4f5fc6bdac96f5281a3ebeb0fee78df7b1a498.tar.bz2 + +# Hashes for license files: +sha256 edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253 LICENSE.GPLv2 +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL diff --git a/package/qt5/qt5imageformats/qt5imageformats.mk b/package/qt5/qt5imageformats/qt5imageformats.mk new file mode 100644 index 00000000..1f51e002 --- /dev/null +++ b/package/qt5/qt5imageformats/qt5imageformats.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# qt5imageformats +# +################################################################################ + +QT5IMAGEFORMATS_VERSION = 4e4f5fc6bdac96f5281a3ebeb0fee78df7b1a498 +QT5IMAGEFORMATS_SITE = $(QT5_SITE)/qtimageformats/-/archive/$(QT5IMAGEFORMATS_VERSION) +QT5IMAGEFORMATS_SOURCE = qtimageformats-$(QT5IMAGEFORMATS_VERSION).tar.bz2 +QT5IMAGEFORMATS_INSTALL_STAGING = YES +QT5IMAGEFORMATS_SYNC_QT_HEADERS = YES + +QT5IMAGEFORMATS_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5IMAGEFORMATS_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5knx/Config.in b/package/qt5/qt5knx/Config.in new file mode 100644 index 00000000..991e93c8 --- /dev/null +++ b/package/qt5/qt5knx/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_QT5KNX + bool "qt5knx" + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt KNX module implements the client side of a connection + between a client and a KNXnet/IP server. This connection + can be used to send messages to the KNX bus and to control + the functionalities of the KNX devices. + + https://doc.qt.io/QtKNX/index.html diff --git a/package/qt5/qt5knx/qt5knx.hash b/package/qt5/qt5knx/qt5knx.hash new file mode 100644 index 00000000..750e4770 --- /dev/null +++ b/package/qt5/qt5knx/qt5knx.hash @@ -0,0 +1,6 @@ +# Hash locally calculated +sha256 1648bd6d7e5d8fc91aaa6db1bf9d2744d0385a087ba78a00080f99f1d5027c8b qt5knx-5.15.2-git4.tar.gz + +# Hashes for license files: +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 f827ad079686ba92cc94811e35492d0e8966f704008b6da9eeda0b659fb58a8d LICENSE.FDL diff --git a/package/qt5/qt5knx/qt5knx.mk b/package/qt5/qt5knx/qt5knx.mk new file mode 100644 index 00000000..91b99aaa --- /dev/null +++ b/package/qt5/qt5knx/qt5knx.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# qt5knx +# +################################################################################ + +QT5KNX_VERSION = 5.15.2 +QT5KNX_SITE = https://code.qt.io/qt/qtknx.git +QT5KNX_SITE_METHOD = git +QT5KNX_INSTALL_STAGING = YES +QT5KNX_LICENSE = GPL-3.0 with exception +QT5KNX_LICENSE_FILES = LICENSE.GPL3 LICENSE.GPL3-EXCEPT +QT5KNX_SYNC_QT_HEADERS = YES + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5location/0001-3rdparty-mapbox-gl-native-fix-musl-compile-pthread_g.patch b/package/qt5/qt5location/0001-3rdparty-mapbox-gl-native-fix-musl-compile-pthread_g.patch new file mode 100644 index 00000000..0894af9c --- /dev/null +++ b/package/qt5/qt5location/0001-3rdparty-mapbox-gl-native-fix-musl-compile-pthread_g.patch @@ -0,0 +1,47 @@ +From acf752757ee4bf2913289ee1142f4968fdb22a4a Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Wed, 15 Sep 2021 23:05:52 +0200 +Subject: [PATCH] 3rdparty: mapbox-gl-native: fix musl compile + (pthread_getname_np) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- pthread_getname_np not available with musl libc (patch inspired/ported + from [1]) + +Fixes: + + platform/default/thread.cpp: In function ‘std::string mbgl::platform::getCurrentThreadName()’: + platform/default/thread.cpp:14:5: error: ‘pthread_getname_np’ was not declared in this scope; did you mean ‘pthread_setname_np’? + 14 | pthread_getname_np(pthread_self(), name, sizeof(name)); + | ^~~~~~~~~~~~~~~~~~ + | pthread_setname_np + +[1] https://github.com/void-linux/void-packages/blob/e64dd67f43c409d2b2db08214084e842d92ad620/srcpkgs/qt5/patches/0014-musl-set_thread_name_np.patch + +Signed-off-by: Peter Seiderer +[yann.morin.1998@free.fr: add uClibc] +Signed-off-by: Yann E. MORIN +--- + src/3rdparty/mapbox-gl-native/platform/default/thread.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/3rdparty/mapbox-gl-native/platform/default/thread.cpp b/src/3rdparty/mapbox-gl-native/platform/default/thread.cpp +index c7c79b4..3f135eb 100644 +--- a/src/3rdparty/mapbox-gl-native/platform/default/thread.cpp ++++ b/src/3rdparty/mapbox-gl-native/platform/default/thread.cpp +@@ -11,8 +11,9 @@ namespace platform { + + std::string getCurrentThreadName() { + char name[32] = "unknown"; ++#if defined(__GLIBC__) || defined(__UCLIBC__) + pthread_getname_np(pthread_self(), name, sizeof(name)); +- ++#endif + return name; + } + +-- +2.33.0 + diff --git a/package/qt5/qt5location/Config.in b/package/qt5/qt5location/Config.in new file mode 100644 index 00000000..3d91adaf --- /dev/null +++ b/package/qt5/qt5location/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_QT5LOCATION + bool "qt5location" + select BR2_PACKAGE_QT5BASE_GUI + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt Location API helps you create viable mapping + solutions using the data available from some of the + popular location services. + + https://doc.qt.io/qt-5/qtlocation-index.html diff --git a/package/qt5/qt5location/qt5location.hash b/package/qt5/qt5location/qt5location.hash new file mode 100644 index 00000000..0b44f09c --- /dev/null +++ b/package/qt5/qt5location/qt5location.hash @@ -0,0 +1,9 @@ +# Locally calculated +sha256 fe3b037f9291352d11714a4c1101299d83e561c11b867d77273fb3f5c44384a3 qt5location-3beb9c810611337fde61d89aa981e9f177a9ede9-git4.tar.gz + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL diff --git a/package/qt5/qt5location/qt5location.mk b/package/qt5/qt5location/qt5location.mk new file mode 100644 index 00000000..01bb4f74 --- /dev/null +++ b/package/qt5/qt5location/qt5location.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# qt5location +# +################################################################################ + +QT5LOCATION_VERSION = 3beb9c810611337fde61d89aa981e9f177a9ede9 +QT5LOCATION_SITE = $(QT5_SITE)/qtlocation +QT5LOCATION_SITE_METHOD = git +QT5LOCATION_GIT_SUBMODULES = YES +QT5LOCATION_INSTALL_STAGING = YES +QT5LOCATION_SYNC_QT_HEADERS = YES + +QT5LOCATION_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5LOCATION_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) +QT5LOCATION_DEPENDENCIES += qt5declarative +endif + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5lottie/Config.in b/package/qt5/qt5lottie/Config.in new file mode 100644 index 00000000..de5f16d5 --- /dev/null +++ b/package/qt5/qt5lottie/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_QT5LOTTIE + bool "qt5lottie" + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + select BR2_PACKAGE_QT5DECLARATIVE + select BR2_PACKAGE_QT5DECLARATIVE_QUICK + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt5lottie module. + + https://doc.qt.io/qt-5/qtlottieanimation-index.html diff --git a/package/qt5/qt5lottie/qt5lottie.hash b/package/qt5/qt5lottie/qt5lottie.hash new file mode 100644 index 00000000..304b92de --- /dev/null +++ b/package/qt5/qt5lottie/qt5lottie.hash @@ -0,0 +1,6 @@ +# Locally calculated +sha256 514e4a8e334e69eb345e9ae7186f6254854077ebf5ca30f0ae216df3ea78bacd qtlottie-b8c1fa109dce6f8bff9f55738d2f1e21ff677796.tar.bz2 + +# Hashes for license files: +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT diff --git a/package/qt5/qt5lottie/qt5lottie.mk b/package/qt5/qt5lottie/qt5lottie.mk new file mode 100644 index 00000000..a364f2e1 --- /dev/null +++ b/package/qt5/qt5lottie/qt5lottie.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# qt5lottie +# +################################################################################ + +QT5LOTTIE_VERSION = b8c1fa109dce6f8bff9f55738d2f1e21ff677796 +QT5LOTTIE_SITE = $(QT5_SITE)/qtlottie/-/archive/$(QT5LOTTIE_VERSION) +QT5LOTTIE_SOURCE = qtlottie-$(QT5LOTTIE_VERSION).tar.bz2 +QT5LOTTIE_DEPENDENCIES = qt5declarative +QT5LOTTIE_INSTALL_STAGING = YES +QT5LOTTIE_SYNC_QT_HEADERS = YES + +QT5LOTTIE_LICENSE = GPL-3.0 +QT5LOTTIE_LICENSE_FILES = LICENSE.GPL3 LICENSE.GPL3-EXCEPT + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5mqtt/Config.in b/package/qt5/qt5mqtt/Config.in new file mode 100644 index 00000000..d81575ee --- /dev/null +++ b/package/qt5/qt5mqtt/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_QT5MQTT + bool "qt5mqtt" + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt MQTT module provides a standard compliant + implementation of the MQTT protocol specification. It + enables applications to act as telemetry displays and + devices to publish telemetry data. The supported versions + are MQTT 3.1, MQTT 3.1.1, and MQTT 5.0. + + https://doc.qt.io/QtMQTT/index.html diff --git a/package/qt5/qt5mqtt/qt5mqtt.hash b/package/qt5/qt5mqtt/qt5mqtt.hash new file mode 100644 index 00000000..6bbafac7 --- /dev/null +++ b/package/qt5/qt5mqtt/qt5mqtt.hash @@ -0,0 +1,6 @@ +# Hash locally calculated +sha256 cd92439c4d9597b8fd614e3c894b88860b5b9102d344b4b1195d14ae02c9275a qt5mqtt-5.15.2-git4.tar.gz + +# Hashes for license files: +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT diff --git a/package/qt5/qt5mqtt/qt5mqtt.mk b/package/qt5/qt5mqtt/qt5mqtt.mk new file mode 100644 index 00000000..824d58d1 --- /dev/null +++ b/package/qt5/qt5mqtt/qt5mqtt.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# qt5mqtt +# +################################################################################ + +QT5MQTT_VERSION = 5.15.2 +QT5MQTT_SITE = https://code.qt.io/qt/qtmqtt.git +QT5MQTT_SITE_METHOD = git +QT5MQTT_INSTALL_STAGING = YES +QT5MQTT_LICENSE = GPL-3.0 with exception +QT5MQTT_LICENSE_FILES = LICENSE.GPL3 LICENSE.GPL3-EXCEPT +QT5MQTT_SYNC_QT_HEADERS = YES + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5multimedia/Config.in b/package/qt5/qt5multimedia/Config.in new file mode 100644 index 00000000..46608555 --- /dev/null +++ b/package/qt5/qt5multimedia/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_QT5MULTIMEDIA + bool "qt5multimedia" + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_NETWORK + select BR2_PACKAGE_QT5BASE_OPENGL_LIB if BR2_PACKAGE_QT5BASE_OPENGL + help + Qt is a cross-platform application and UI framework for + developers using C++. + + 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. + + https://doc.qt.io/qt-5/multimediaoverview.html diff --git a/package/qt5/qt5multimedia/qt5multimedia.hash b/package/qt5/qt5multimedia/qt5multimedia.hash new file mode 100644 index 00000000..d6aca5c7 --- /dev/null +++ b/package/qt5/qt5multimedia/qt5multimedia.hash @@ -0,0 +1,10 @@ +# Locally calculated +sha256 62d9ab403bae05d3ca1335324143c371a33089ceed6f4124be74a1518b85906e qtmultimedia-53069c9c6eb52b744333812f42aed36c3db6e752.tar.bz2 + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL +sha256 c1d75c15db4409bcbb182180d582f410a263dc9a631cd546b256e95f1da42165 examples/multimedia/spectrum/3rdparty/fftreal/license.txt diff --git a/package/qt5/qt5multimedia/qt5multimedia.mk b/package/qt5/qt5multimedia/qt5multimedia.mk new file mode 100644 index 00000000..07314b3d --- /dev/null +++ b/package/qt5/qt5multimedia/qt5multimedia.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# qt5multimedia +# +################################################################################ + +QT5MULTIMEDIA_VERSION = 53069c9c6eb52b744333812f42aed36c3db6e752 +QT5MULTIMEDIA_SITE = $(QT5_SITE)/qtmultimedia/-/archive/$(QT5MULTIMEDIA_VERSION) +QT5MULTIMEDIA_SOURCE = qtmultimedia-$(QT5MULTIMEDIA_VERSION).tar.bz2 +QT5MULTIMEDIA_INSTALL_STAGING = YES +QT5MULTIMEDIA_SYNC_QT_HEADERS = YES + +QT5MULTIMEDIA_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5MULTIMEDIA_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y) +QT5MULTIMEDIA_DEPENDENCIES += gst1-plugins-base +endif + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) +QT5MULTIMEDIA_DEPENDENCIES += qt5declarative +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2)$(BR2_PACKAGE_PULSEAUDIO),yy) +QT5MULTIMEDIA_DEPENDENCIES += libglib2 pulseaudio +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +QT5MULTIMEDIA_DEPENDENCIES += alsa-lib +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +QT5MULTIMEDIA_LICENSE += , LGPL-2.1+ (examples/multimedia/spectrum/3rdparty/fftreal) +QT5MULTIMEDIA_LICENSE_FILES += examples/multimedia/spectrum/3rdparty/fftreal/license.txt +endif + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5opcua/Config.in b/package/qt5/qt5opcua/Config.in new file mode 100644 index 00000000..2b0ba37a --- /dev/null +++ b/package/qt5/qt5opcua/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_QT5OPCUA + bool "qt5opcua" + depends on BR2_PACKAGE_QT5 + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt OPC UA module implements a Qt API to interact with + OPC UA on top of a 3rd party OPC UA stack. diff --git a/package/qt5/qt5opcua/qt5opcua.hash b/package/qt5/qt5opcua/qt5opcua.hash new file mode 100644 index 00000000..a325653f --- /dev/null +++ b/package/qt5/qt5opcua/qt5opcua.hash @@ -0,0 +1,10 @@ +# Hash locally calculated +sha256 fa8e0e87aae6f321aecac2605e6ac1b858ba1ed4db3c4a78a193eb7b547ab224 qt5opcua-5.15.2-git4.tar.gz + +# Hashes for license files: +sha256 d93cc415382f0013088fa276d9cf82373badf244c78220a926f15ee46f0fe3c4 LICENSE-CC0 +sha256 f827ad079686ba92cc94811e35492d0e8966f704008b6da9eeda0b659fb58a8d LICENSE.FDL +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 6c3f3c31b93985f1b93bfbb35fb609d37281697d0efc220c9f91cf4b59eaabde LICENSE.GPLv2 +sha256 75d800e60c8d58c2e7f0338e8552ea6123a9ce7e5dd8e1cdf2095e013b737488 LICENSE.LGPLv3 diff --git a/package/qt5/qt5opcua/qt5opcua.mk b/package/qt5/qt5opcua/qt5opcua.mk new file mode 100644 index 00000000..ef51abdd --- /dev/null +++ b/package/qt5/qt5opcua/qt5opcua.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# qt5opcua +# +################################################################################ + +QT5OPCUA_VERSION = 5.15.2 +QT5OPCUA_SITE = https://code.qt.io/qt/qtopcua.git +QT5OPCUA_SITE_METHOD = git +QT5OPCUA_INSTALL_STAGING = YES +QT5OPCUA_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) CC0-1.0 +QT5OPCUA_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL LICENSE-CC0 +QT5OPCUA_SYNC_QT_HEADERS = YES + +ifeq ($(BR2_PACKAGE_MBEDTLS),y) +QT5OPCUA_DEPENDENCIES += mbedtls +endif + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5quickcontrols/Config.in b/package/qt5/qt5quickcontrols/Config.in new file mode 100644 index 00000000..ae090eb6 --- /dev/null +++ b/package/qt5/qt5quickcontrols/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_QT5QUICKCONTROLS + bool "qt5quickcontrols" + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + select BR2_PACKAGE_QT5DECLARATIVE + select BR2_PACKAGE_QT5DECLARATIVE_QUICK + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt Quick Controls module provides a set of controls + that can be used to build complete interfaces in Qt Quick. + + https://doc.qt.io/qt-5/qtquickcontrols-index.html diff --git a/package/qt5/qt5quickcontrols/qt5quickcontrols.hash b/package/qt5/qt5quickcontrols/qt5quickcontrols.hash new file mode 100644 index 00000000..fda31985 --- /dev/null +++ b/package/qt5/qt5quickcontrols/qt5quickcontrols.hash @@ -0,0 +1,8 @@ +# Locally calculated +sha256 0f2244f4425b8886bbeef77c92b807ef4749ace18d31e02ca88183e5af088c18 qtquickcontrols-9325659ec390eda5b160736a926ba58ccb445cce.tar.bz2 + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL diff --git a/package/qt5/qt5quickcontrols/qt5quickcontrols.mk b/package/qt5/qt5quickcontrols/qt5quickcontrols.mk new file mode 100644 index 00000000..ab7b49f0 --- /dev/null +++ b/package/qt5/qt5quickcontrols/qt5quickcontrols.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# qt5quickcontrols +# +################################################################################ + +QT5QUICKCONTROLS_VERSION = 9325659ec390eda5b160736a926ba58ccb445cce +QT5QUICKCONTROLS_SITE = $(QT5_SITE)/qtquickcontrols/-/archive/$(QT5QUICKCONTROLS_VERSION) +QT5QUICKCONTROLS_SOURCE = qtquickcontrols-$(QT5QUICKCONTROLS_VERSION).tar.bz2 +QT5QUICKCONTROLS_DEPENDENCIES = qt5declarative +QT5QUICKCONTROLS_INSTALL_STAGING = YES +QT5QUICKCONTROLS_SYNC_QT_HEADERS = YES + +QT5QUICKCONTROLS_LICENSE = GPL-2.0 or GPL-3.0 or LGPL-3.0, GFDL-1.3 (docs) +QT5QUICKCONTROLS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.LGPL3 LICENSE.FDL + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5quickcontrols2/Config.in b/package/qt5/qt5quickcontrols2/Config.in new file mode 100644 index 00000000..02e36257 --- /dev/null +++ b/package/qt5/qt5quickcontrols2/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_QT5QUICKCONTROLS2 + bool "qt5quickcontrols2" + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative/quick + select BR2_PACKAGE_QT5DECLARATIVE + select BR2_PACKAGE_QT5DECLARATIVE_QUICK + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt5quickcontrols2 module. + + 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/qtquickcontrols-index.html diff --git a/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash b/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash new file mode 100644 index 00000000..9c401c00 --- /dev/null +++ b/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash @@ -0,0 +1,7 @@ +# Locally calculated +sha256 90fb0d1b578af622b98a291f7bc1069695c180040b18e9cd8423fe86e325c290 qtquickcontrols2-69fea340f8f4c483a9b2889e4e24a4b1b52ebc87.tar.bz2 + +# Hashes for license files: +sha256 d2cfc059acb4abd8e513cd0a73cd8489f34cbafa7bc34d5d31fb3210821cf8ca LICENSE.GPLv3 +sha256 9e63a04ce021b8bf811b30881fa51c8c3db88afeead942cd59322f2fb69c75bc LICENSE.LGPLv3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL diff --git a/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk b/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk new file mode 100644 index 00000000..34c27b7c --- /dev/null +++ b/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# qt5quickcontrols2 +# +################################################################################ + +QT5QUICKCONTROLS2_VERSION = 69fea340f8f4c483a9b2889e4e24a4b1b52ebc87 +QT5QUICKCONTROLS2_SITE = $(QT5_SITE)/qtquickcontrols2/-/archive/$(QT5QUICKCONTROLS2_VERSION) +QT5QUICKCONTROLS2_SOURCE = qtquickcontrols2-$(QT5QUICKCONTROLS2_VERSION).tar.bz2 +QT5QUICKCONTROLS2_DEPENDENCIES = qt5declarative +QT5QUICKCONTROLS2_INSTALL_STAGING = YES +QT5QUICKCONTROLS2_SYNC_QT_HEADERS = YES + +QT5QUICKCONTROLS2_LICENSE = GPL-3.0 or LGPL-3.0, GFDL-1.3 (docs) +QT5QUICKCONTROLS2_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv3 LICENSE.FDL + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5quicktimeline/Config.in b/package/qt5/qt5quicktimeline/Config.in new file mode 100644 index 00000000..3c6fe3ef --- /dev/null +++ b/package/qt5/qt5quicktimeline/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_QT5QUICKTIMELINE + bool "qt5quicktimeline" + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative + select BR2_PACKAGE_QT5DECLARATIVE + select BR2_PACKAGE_QT5DECLARATIVE_QUICK + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt5quicktimeline module. + + https://doc.qt.io/qt-5/qtquicktimeline-index.html diff --git a/package/qt5/qt5quicktimeline/qt5quicktimeline.hash b/package/qt5/qt5quicktimeline/qt5quicktimeline.hash new file mode 100644 index 00000000..602127d7 --- /dev/null +++ b/package/qt5/qt5quicktimeline/qt5quicktimeline.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 72b1e95f7d4235b03c0d3ffcbc67ab3e7fbe4c96a4d9631cb8c9024a2b9d4f50 qtquicktimeline-bf6c73064c82b07fcb1f7e72c263b249e137e224.tar.bz2 + +# Hashes for license files: +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 diff --git a/package/qt5/qt5quicktimeline/qt5quicktimeline.mk b/package/qt5/qt5quicktimeline/qt5quicktimeline.mk new file mode 100644 index 00000000..4307c9b1 --- /dev/null +++ b/package/qt5/qt5quicktimeline/qt5quicktimeline.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# qt5quicktimeline +# +################################################################################ + +QT5QUICKTIMELINE_VERSION = bf6c73064c82b07fcb1f7e72c263b249e137e224 +QT5QUICKTIMELINE_SITE = $(QT5_SITE)/qtquicktimeline/-/archive/$(QT5QUICKTIMELINE_VERSION) +QT5QUICKTIMELINE_SOURCE = qtquicktimeline-$(QT5QUICKTIMELINE_VERSION).tar.bz2 +QT5QUICKTIMELINE_DEPENDENCIES = qt5declarative +QT5QUICKTIMELINE_INSTALL_STAGING = YES +QT5QUICKTIMELINE_SYNC_QT_HEADERS = YES + +QT5QUICKTIMELINE_LICENSE = GPL-3.0, GFDL-1.3 (docs) +QT5QUICKTIMELINE_LICENSE_FILES = LICENSE.GPL3 + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5remoteobjects/Config.in b/package/qt5/qt5remoteobjects/Config.in new file mode 100644 index 00000000..9d4a40a5 --- /dev/null +++ b/package/qt5/qt5remoteobjects/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_QT5REMOTEOBJECTS + bool "qt5remoteobjects" + select BR2_PACKAGE_QT5BASE + select BR2_PACKAGE_QT5BASE_NETWORK + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt Remote Objects (QtRO) is an Inter-Process + Communication (IPC) module developed for Qt. This + module extends Qt's existing functionalities to enable + information exchange between processes or computers, + easily. + + https://doc.qt.io/qt-5/qtremoteobjects-index.html diff --git a/package/qt5/qt5remoteobjects/qt5remoteobjects.hash b/package/qt5/qt5remoteobjects/qt5remoteobjects.hash new file mode 100644 index 00000000..943ecb26 --- /dev/null +++ b/package/qt5/qt5remoteobjects/qt5remoteobjects.hash @@ -0,0 +1,8 @@ +# Locally calculated +sha256 347c89c24480b1f20f12d7415706aba6536ff7277862d3450e34c40cc711016e qtremoteobjects-3873bdc809ca8d58d91968cb0de34da26646bc79.tar.bz2 + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 diff --git a/package/qt5/qt5remoteobjects/qt5remoteobjects.mk b/package/qt5/qt5remoteobjects/qt5remoteobjects.mk new file mode 100644 index 00000000..8848af3c --- /dev/null +++ b/package/qt5/qt5remoteobjects/qt5remoteobjects.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# qt5remoteobjects +# +################################################################################ + +QT5REMOTEOBJECTS_VERSION = 3873bdc809ca8d58d91968cb0de34da26646bc79 +QT5REMOTEOBJECTS_SITE = $(QT5_SITE)/qtremoteobjects/-/archive/$(QT5REMOTEOBJECTS_VERSION) +QT5REMOTEOBJECTS_SOURCE = qtremoteobjects-$(QT5REMOTEOBJECTS_VERSION).tar.bz2 +QT5REMOTEOBJECTS_DEPENDENCIES = qt5base +QT5REMOTEOBJECTS_INSTALL_STAGING = YES +QT5REMOTEOBJECTS_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception (tools), GFDL-1.3 (docs) +QT5REMOTEOBJECTS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 +QT5REMOTEOBJECTS_SYNC_QT_HEADERS = YES + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) +QT5REMOTEOBJECTS_DEPENDENCIES += qt5declarative +endif + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5script/0001-Detect-32-bits-armv8-a-architecture.patch b/package/qt5/qt5script/0001-Detect-32-bits-armv8-a-architecture.patch new file mode 100644 index 00000000..7e4e524d --- /dev/null +++ b/package/qt5/qt5script/0001-Detect-32-bits-armv8-a-architecture.patch @@ -0,0 +1,49 @@ +From daf2e222903bacf85f27dfb0fffc4459bbf58b77 Mon Sep 17 00:00:00 2001 +From: =?utf-8?q?Ga=C3=ABl=20PORTAY?= +Date: Sun, 10 Jun 2018 08:23:50 -0400 +Subject: [PATCH] Detect 32-bits armv8-a architecture +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 8bit + +These toolchains define __ARM_ARCH_8A__ (for ARM architecture version) +and __arm__ (for 32-bits word-size; __aarch64__ for 64-bits). + +This commit catches this new architecture (armv8a) within a #ifdef/#endif +inside the if statement dedicated for 32-bits ARM detection. See commit +from WebKit [1] and [2]. + +Fixes: + + In file included from ../3rdparty/javascriptcore/JavaScriptCore/config.h:26, + from ../3rdparty/javascriptcore/JavaScriptCore/pcre/pcre_compile.cpp:44: + ../3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h:370:6: error: #error "Not supported ARM architecture" + # error "Not supported ARM architecture" + ^~~~~ + +[1]: https://github.com/WebKit/webkit/commit/313d9fc4bdd2f020a5d0cf834c3c61982f161ebb +[2]: https://github.com/WebKit/webkit/commit/98f0de0709786f5d9b09dfd5908266990eb909d6 + +Signed-off-by: Gaël PORTAY +--- + src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h +index 00caa6d..c4b758e 100644 +--- a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h ++++ b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h +@@ -306,6 +306,10 @@ + || defined(__ARM_ARCH_7R__) + #define WTF_ARM_ARCH_VERSION 7 + ++#elif defined(__ARM_ARCH_8__) \ ++ || defined(__ARM_ARCH_8A__) ++#define WTF_ARM_ARCH_VERSION 8 ++ + /* RVCT sets _TARGET_ARCH_ARM */ + #elif defined(__TARGET_ARCH_ARM) + #define WTF_ARM_ARCH_VERSION __TARGET_ARCH_ARM +-- +2.17.1 + diff --git a/package/qt5/qt5script/Config.in b/package/qt5/qt5script/Config.in new file mode 100644 index 00000000..6e08a3df --- /dev/null +++ b/package/qt5/qt5script/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_QT5SCRIPT + bool "qt5script" + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + help + Qt is a cross-platform application and UI framework for + developers using C++. + + 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. + + https://doc.qt.io/qt-5/qtscript-index.html diff --git a/package/qt5/qt5script/qt5script.hash b/package/qt5/qt5script/qt5script.hash new file mode 100644 index 00000000..655b7725 --- /dev/null +++ b/package/qt5/qt5script/qt5script.hash @@ -0,0 +1,10 @@ +# Locally calculated +sha256 6462533cb1749d76c890cb3c325524835a6ee7f12682d425a2cf19628806b284 qtscript-572daa83e990ce88cca27909470c5404657ec9de.tar.bz2 + +# Hashes for license files: +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL +sha256 5094ecb9c9dcd0eadc34f3c11511d9b5535063032bc150164ecd1a5d5a445547 src/3rdparty/javascriptcore/JavaScriptCore/COPYING.LIB +sha256 43b007cd3ac7b7ea5284b13e9580334028e6f42e859059605d57558f39374197 src/3rdparty/javascriptcore/JavaScriptCore/pcre/COPYING diff --git a/package/qt5/qt5script/qt5script.mk b/package/qt5/qt5script/qt5script.mk new file mode 100644 index 00000000..4c8a7e16 --- /dev/null +++ b/package/qt5/qt5script/qt5script.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# qt5script +# +################################################################################ + +QT5SCRIPT_VERSION = 572daa83e990ce88cca27909470c5404657ec9de +QT5SCRIPT_SITE = $(QT5_SITE)/qtscript/-/archive/$(QT5SCRIPT_VERSION) +QT5SCRIPT_SOURCE = qtscript-$(QT5SCRIPT_VERSION).tar.bz2 +QT5SCRIPT_INSTALL_STAGING = YES +QT5SCRIPT_SYNC_QT_HEADERS = YES + +# JavaScriptCore contains files under BSD-2-Clause, BSD-3-Clause, and LGPL-2+. +# This is linked into libQt5Script, which also contains Qt sources under +# LGPL-2.1 (only). Therefore, the library is LGPL-2.1 and BSD-3-Clause. +# libQt5ScriptTools is under the normal Qt opensource license. +QT5SCRIPT_LICENSE = LGPL-2.1, BSD-3-Clause, LGPL-3.0 or GPL-2.0+ (libQt5ScriptTools), GFDL-1.3 (docs) +# LGPL-2.1 license file is missing +QT5SCRIPT_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.LGPL3 LICENSE.FDL +# License files from JavaScriptCore +QT5SCRIPT_LICENSE_FILES += \ + src/3rdparty/javascriptcore/JavaScriptCore/COPYING.LIB \ + src/3rdparty/javascriptcore/JavaScriptCore/pcre/COPYING + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5scxml/Config.in b/package/qt5/qt5scxml/Config.in new file mode 100644 index 00000000..24fb2d9c --- /dev/null +++ b/package/qt5/qt5scxml/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_QT5SCXML + bool "qt5scxml" + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative + select BR2_PACKAGE_QT5DECLARATIVE + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt SCXML module provides functionality to create state + machines from SCXML files. + + https://doc.qt.io/qt-5/qtscxml-index.html diff --git a/package/qt5/qt5scxml/qt5scxml.hash b/package/qt5/qt5scxml/qt5scxml.hash new file mode 100644 index 00000000..60e64feb --- /dev/null +++ b/package/qt5/qt5scxml/qt5scxml.hash @@ -0,0 +1,7 @@ +# Locally calculated +sha256 92191932423bdbb11e3005bf4c8bc43faa623d7b16558ecf884f20564ad8dbff qtscxml-6834b183966d08d9f061642ee7ea2d482cbbf073.tar.bz2 + +# Hashes for license files: +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 diff --git a/package/qt5/qt5scxml/qt5scxml.mk b/package/qt5/qt5scxml/qt5scxml.mk new file mode 100644 index 00000000..f92bfdf6 --- /dev/null +++ b/package/qt5/qt5scxml/qt5scxml.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# qt5scxml +# +################################################################################ + +QT5SCXML_VERSION = 6834b183966d08d9f061642ee7ea2d482cbbf073 +QT5SCXML_SITE = $(QT5_SITE)/qtscxml/-/archive/$(QT5SCXML_VERSION) +QT5SCXML_SOURCE = qtscxml-$(QT5SCXML_VERSION).tar.bz2 +QT5SCXML_DEPENDENCIES = qt5declarative +QT5SCXML_INSTALL_STAGING = YES +QT5SCXML_SYNC_QT_HEADERS = YES + +QT5SCXML_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5SCXML_LICENSE_FILES = LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +QT5SCXML_LICENSE += , BSD-3-Clause (examples) +endif + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5sensors/Config.in b/package/qt5/qt5sensors/Config.in new file mode 100644 index 00000000..31a42e64 --- /dev/null +++ b/package/qt5/qt5sensors/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_QT5SENSORS + bool "qt5sensors" + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt Sensors API provides access to sensor hardware + via QML and C++ interfaces. + + https://doc.qt.io/qt-5/qtsensors-index.html diff --git a/package/qt5/qt5sensors/qt5sensors.hash b/package/qt5/qt5sensors/qt5sensors.hash new file mode 100644 index 00000000..2955e651 --- /dev/null +++ b/package/qt5/qt5sensors/qt5sensors.hash @@ -0,0 +1,9 @@ +# Locally calculated +sha256 d01ee718ae1c00329a6b3cdadb190a2159e7d1e1e76d7345815cb17a42d48113 qtsensors-bf0b718cd0b6c7823e9d2037d3bdece44185f444.tar.bz2 + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL diff --git a/package/qt5/qt5sensors/qt5sensors.mk b/package/qt5/qt5sensors/qt5sensors.mk new file mode 100644 index 00000000..b99440e2 --- /dev/null +++ b/package/qt5/qt5sensors/qt5sensors.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# qt5sensors +# +################################################################################ + +QT5SENSORS_VERSION = bf0b718cd0b6c7823e9d2037d3bdece44185f444 +QT5SENSORS_SITE = $(QT5_SITE)/qtsensors/-/archive/$(QT5SENSORS_VERSION) +QT5SENSORS_SOURCE = qtsensors-$(QT5SENSORS_VERSION).tar.bz2 +QT5SENSORS_INSTALL_STAGING = YES +QT5SENSORS_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5SENSORS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL +QT5SENSORS_SYNC_QT_HEADERS = YES + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) +QT5SENSORS_DEPENDENCIES += qt5declarative +endif + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5serialbus/Config.in b/package/qt5/qt5serialbus/Config.in new file mode 100644 index 00000000..466ab7dc --- /dev/null +++ b/package/qt5/qt5serialbus/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_QT5SERIALBUS + bool "qt5serialbus" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6 # CAN FD + select BR2_PACKAGE_QT5SERIALPORT + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt5serialbus module. + + This module was in tech preview in Qt 5.6, and promoted + to a core module in Qt 5.8.0. + + https://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/package/qt5/qt5serialbus/qt5serialbus.hash b/package/qt5/qt5serialbus/qt5serialbus.hash new file mode 100644 index 00000000..64a51873 --- /dev/null +++ b/package/qt5/qt5serialbus/qt5serialbus.hash @@ -0,0 +1,8 @@ +# Locally calculated +sha256 45bf8a97ef2f2e85c023f4e7ce761b64f98ac6a9c3af2a8f232f2cc778762736 qtserialbus-616bc5b962cdcacb1c1ba985d7236392e9cadb8c.tar.bz2 + +# Hashes for license files: +sha256 edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253 LICENSE.GPLv2 +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL diff --git a/package/qt5/qt5serialbus/qt5serialbus.mk b/package/qt5/qt5serialbus/qt5serialbus.mk new file mode 100644 index 00000000..ca22a0ca --- /dev/null +++ b/package/qt5/qt5serialbus/qt5serialbus.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# qt5serialbus +# +################################################################################ + +QT5SERIALBUS_VERSION = 616bc5b962cdcacb1c1ba985d7236392e9cadb8c +QT5SERIALBUS_SITE = $(QT5_SITE)/qtserialbus/-/archive/$(QT5SERIALBUS_VERSION) +QT5SERIALBUS_SOURCE = qtserialbus-$(QT5SERIALBUS_VERSION).tar.bz2 +QT5SERIALBUS_DEPENDENCIES = qt5serialport +QT5SERIALBUS_INSTALL_STAGING = YES +QT5SERIALBUS_SYNC_QT_HEADERS = YES + +QT5SERIALBUS_LICENSE = GPL-2.0 or GPL-3.0 or LGPL-3.0, GFDL-1.3 (docs) +QT5SERIALBUS_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv3 LICENSE.FDL + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5serialport/Config.in b/package/qt5/qt5serialport/Config.in new file mode 100644 index 00000000..90cff864 --- /dev/null +++ b/package/qt5/qt5serialport/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_QT5SERIALPORT + bool "qt5serialport" + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt Serial Port provides the basic functionality, which + includes configuring, I/O operations, getting and setting + the control signals of the RS-232 pinouts. + + https://doc.qt.io/qt-5/qtserialport-index.html diff --git a/package/qt5/qt5serialport/qt5serialport.hash b/package/qt5/qt5serialport/qt5serialport.hash new file mode 100644 index 00000000..b18d0d05 --- /dev/null +++ b/package/qt5/qt5serialport/qt5serialport.hash @@ -0,0 +1,9 @@ +# Locally calculated +sha256 c8eea27d6fc031088fc84cf08cdfffda3b72b6fdd279144a0de7a1bcb9f19d91 qtserialport-34c19c6441cd440dc65b59ae7670eadf099d51f8.tar.bz2 + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL diff --git a/package/qt5/qt5serialport/qt5serialport.mk b/package/qt5/qt5serialport/qt5serialport.mk new file mode 100644 index 00000000..592de6f0 --- /dev/null +++ b/package/qt5/qt5serialport/qt5serialport.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# qt5serialport +# +################################################################################ + +QT5SERIALPORT_VERSION = 34c19c6441cd440dc65b59ae7670eadf099d51f8 +QT5SERIALPORT_SITE = $(QT5_SITE)/qtserialport/-/archive/$(QT5SERIALPORT_VERSION) +QT5SERIALPORT_SOURCE = qtserialport-$(QT5SERIALPORT_VERSION).tar.bz2 +QT5SERIALPORT_INSTALL_STAGING = YES +QT5SERIALPORT_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5SERIALPORT_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL +QT5SERIALPORT_SYNC_QT_HEADERS = YES + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5speech/Config.in b/package/qt5/qt5speech/Config.in new file mode 100644 index 00000000..cebd0605 --- /dev/null +++ b/package/qt5/qt5speech/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_QT5SPEECH + bool "qt5speech" + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt Speech enables support for accessibility features such as + text-to-speech. + + For output optional enable flite or speechd. + + https://doc.qt.io/qt-5/qtspeech-index.html diff --git a/package/qt5/qt5speech/qt5speech.hash b/package/qt5/qt5speech/qt5speech.hash new file mode 100644 index 00000000..a222b162 --- /dev/null +++ b/package/qt5/qt5speech/qt5speech.hash @@ -0,0 +1,7 @@ +# Locally calculated +sha256 8414b8e9cedc8bdd7bc70f5a1c5b83dda2147fba22c7c6fa6498ea4c1451d6df qtspeech-8ad0f08ad7e2a8d27dc5e69806812c6a3f298946.tar.bz2 + +# Hashes for license files: +sha256 6c3f3c31b93985f1b93bfbb35fb609d37281697d0efc220c9f91cf4b59eaabde LICENSE.GPLv2 +sha256 75d800e60c8d58c2e7f0338e8552ea6123a9ce7e5dd8e1cdf2095e013b737488 LICENSE.LGPLv3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL diff --git a/package/qt5/qt5speech/qt5speech.mk b/package/qt5/qt5speech/qt5speech.mk new file mode 100644 index 00000000..22f9d8c9 --- /dev/null +++ b/package/qt5/qt5speech/qt5speech.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# qt5speech +# +################################################################################ + +QT5SPEECH_VERSION = 8ad0f08ad7e2a8d27dc5e69806812c6a3f298946 +QT5SPEECH_SITE = $(QT5_SITE)/qtspeech/-/archive/$(QT5SPEECH_VERSION) +QT5SPEECH_SOURCE = qtspeech-$(QT5SPEECH_VERSION).tar.bz2 +QT5SPEECH_INSTALL_STAGING = YES +QT5SPEECH_LICENSE = GPL-2.0+ or LGPL-3.0, GFDL-1.3 (docs) +QT5SPEECH_LICENSE_FILES = LICENSE.GPLv2 LICENSE.LGPLv3 LICENSE.FDL +QT5SPEECH_SYNC_QT_HEADERS = YES + +ifeq ($(BR2_PACKAGE_FLITE),y) +QT5SPEECH_DEPENDENCIES += flite +endif + +ifeq ($(BR2_PACKAGE_SPEECHD),y) +QT5SPEECH_DEPENDENCIES += speechd +endif + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5svg/Config.in b/package/qt5/qt5svg/Config.in new file mode 100644 index 00000000..02a5089b --- /dev/null +++ b/package/qt5/qt5svg/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_QT5SVG + bool "qt5svg" + select BR2_PACKAGE_QT5BASE_GUI + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt SVG provides classes for rendering and displaying SVG + drawings in widgets and on other paint devices. + + https://doc.qt.io/qt-5/qtsvg-index.html diff --git a/package/qt5/qt5svg/qt5svg.hash b/package/qt5/qt5svg/qt5svg.hash new file mode 100644 index 00000000..654016d9 --- /dev/null +++ b/package/qt5/qt5svg/qt5svg.hash @@ -0,0 +1,8 @@ +# Locally calculated +sha256 8e4d0fbfdd8bd33ec23036af932b12f838974ac322a5d53f487190477b2be286 qtsvg-690128b2b8fb6d6fbdc43b2b2633f0f1de3f0638.tar.bz2 + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL diff --git a/package/qt5/qt5svg/qt5svg.mk b/package/qt5/qt5svg/qt5svg.mk new file mode 100644 index 00000000..1221dedc --- /dev/null +++ b/package/qt5/qt5svg/qt5svg.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# qt5svg +# +################################################################################ + +QT5SVG_VERSION = 690128b2b8fb6d6fbdc43b2b2633f0f1de3f0638 +QT5SVG_SITE = $(QT5_SITE)/qtsvg/-/archive/$(QT5SVG_VERSION) +QT5SVG_SOURCE = qtsvg-$(QT5SVG_VERSION).tar.bz2 +QT5SVG_INSTALL_STAGING = YES +QT5SVG_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5SVG_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPLv3 LICENSE.LGPLv3 LICENSE.FDL +QT5SVG_SYNC_QT_HEADERS = YES + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5tools/0001-Disable-designer-tool-fixes-configure-error.patch b/package/qt5/qt5tools/0001-Disable-designer-tool-fixes-configure-error.patch new file mode 100644 index 00000000..cf2cd94c --- /dev/null +++ b/package/qt5/qt5tools/0001-Disable-designer-tool-fixes-configure-error.patch @@ -0,0 +1,53 @@ +From 22d7a9050b04b021e33430d0f7e3c5ee80c24caa Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Tue, 17 Dec 2019 11:01:59 +0100 +Subject: [PATCH] Disable designer tool (fixes configure error). + +Fixes: + + .../build/qt5tools-5.14.0/src/designer/src/components/lib/lib.pro + Project ERROR: Multiple modules claim plugin type 'designer' (uitools, in addition to designer) + +Signed-off-by: Peter Seiderer +[Rebased for Qt5.15.0] +Signed-off-by: Peter Seiderer +[Rebased for Qt5.15.1] +Signed-off-by: Peter Seiderer +[Rebased for Qt5.15.2] +Signed-off-by: Peter Seiderer +--- + src/linguist/linguist/linguist.pro | 2 +- + src/src.pro | 5 +---- + 2 files changed, 2 insertions(+), 5 deletions(-) + +diff --git a/src/linguist/linguist/linguist.pro b/src/linguist/linguist/linguist.pro +index d083896..7d74cfc 100644 +--- a/src/linguist/linguist/linguist.pro ++++ b/src/linguist/linguist/linguist.pro +@@ -1,4 +1,4 @@ +-QT += core-private gui-private widgets uitools-private printsupport ++QT += core-private gui-private widgets printsupport + + DEFINES += QT_NO_CAST_FROM_ASCII QT_NO_CAST_TO_ASCII + +diff --git a/src/src.pro b/src/src.pro +index f2675c7..360de50 100644 +--- a/src/src.pro ++++ b/src/src.pro +@@ -6,12 +6,9 @@ qtHaveModule(widgets) { + } else { + QT_FOR_CONFIG += widgets + qtConfig(pushbutton):qtConfig(toolbutton) { +- SUBDIRS = designer \ +- pixeltool ++ SUBDIRS = pixeltool + + !static|contains(QT_PLUGINS, qsqlite): SUBDIRS += assistant +- +- linguist.depends = designer + } + qtHaveModule(quick):qtConfig(thread):qtConfig(toolbutton): SUBDIRS += distancefieldgenerator + } +-- +2.29.2 + diff --git a/package/qt5/qt5tools/Config.in b/package/qt5/qt5tools/Config.in new file mode 100644 index 00000000..47a9ad0f --- /dev/null +++ b/package/qt5/qt5tools/Config.in @@ -0,0 +1,60 @@ +config BR2_PACKAGE_QT5TOOLS + bool "qt5tools" + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt Tools provides tools facilitate the development + and design of applications. + + https://doc.qt.io/qt-5/qtmodules.html#qt-tools + +if BR2_PACKAGE_QT5TOOLS + +config BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS + bool "Linguist host tools (lconvert, lrelease, lupdate)" + help + This option enables the linguist host tools + lconvert, lrelease and lupdate. + +config BR2_PACKAGE_QT5TOOLS_QDOC_TOOL + bool "qdoc host tool" + # Needs llvm-config and libclang for the host, which is not + # currently supported in Buildroot, unless the target is + # already supported by llvm. + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS # llvm, clang + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # llvm, clang + depends on BR2_TOOLCHAIN_HAS_THREADS # llvm, clang + depends on BR2_INSTALL_LIBSTDCPP # llvm, clang + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # llvm, clang + depends on !BR2_STATIC_LIBS # llvm, clang + depends on BR2_USE_WCHAR # llvm, clang + depends on BR2_HOST_GCC_AT_LEAST_7 # llvm, clang + help + This option enables the qdoc host tool. + +config BR2_PACKAGE_QT5TOOLS_PIXELTOOL + bool "pixeltool" + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_WIDGETS + select BR2_PACKAGE_QT5BASE_PNG # saving png images + help + Compile and install the pixeltool program. + +config BR2_PACKAGE_QT5TOOLS_QTDIAG + bool "qtdiag" + select BR2_PACKAGE_QT5BASE_GUI + help + Compile and install the qtdiag program. + +config BR2_PACKAGE_QT5TOOLS_QTPATHS + bool "qtpaths" + help + Compile and install the qtpaths program. + +config BR2_PACKAGE_QT5TOOLS_QTPLUGININFO + bool "qtplugininfo" + help + Compile and install the qtplugininfo program. + +endif diff --git a/package/qt5/qt5tools/qt5tools.hash b/package/qt5/qt5tools/qt5tools.hash new file mode 100644 index 00000000..c19eb41e --- /dev/null +++ b/package/qt5/qt5tools/qt5tools.hash @@ -0,0 +1,9 @@ +# Locally calculated +sha256 46bd221011a6b4b1b9da6ce13099e10d09548af325a8b2082b8bc2f692a0d95d qttools-f82ed367d1b80b69d738cfcde534b75854a45476.tar.bz2 + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL diff --git a/package/qt5/qt5tools/qt5tools.mk b/package/qt5/qt5tools/qt5tools.mk new file mode 100644 index 00000000..c03d5d6e --- /dev/null +++ b/package/qt5/qt5tools/qt5tools.mk @@ -0,0 +1,65 @@ +################################################################################ +# +# qt5tools +# +################################################################################ + +QT5TOOLS_VERSION = f82ed367d1b80b69d738cfcde534b75854a45476 +QT5TOOLS_SITE = $(QT5_SITE)/qttools/-/archive/$(QT5TOOLS_VERSION) +QT5TOOLS_SOURCE = qttools-$(QT5TOOLS_VERSION).tar.bz2 + +QT5TOOLS_INSTALL_STAGING = YES +QT5TOOLS_SYNC_QT_HEADERS = YES + +# linguist tools compile conditionally on qtHaveModule(qmldevtools-private), +# but the condition is used only used to decide if lupdate will support +# parsing qml files (via setting QT_NO_QML define), no linking against +# target qt5 will happen +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) +QT5TOOLS_DEPENDENCIES += qt5declarative +endif + +QT5TOOLS_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5TOOLS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL + +QT5TOOLS_BUILD_DIRS_$(BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS) += \ + linguist/lconvert linguist/lrelease linguist/lupdate +QT5TOOLS_INSTALL_STAGING_DIR_$(BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS) += \ + linguist + +ifeq ($(BR2_PACKAGE_QT5TOOLS_QDOC_TOOL),y) +QT5TOOLS_BUILD_DIRS_y += qdoc +QT5TOOLS_INSTALL_STAGING_DIR_y += qdoc +QT5TOOLS_DEPENDENCIES += host-clang +endif + +QT5TOOLS_BUILD_DIRS_$(BR2_PACKAGE_QT5TOOLS_PIXELTOOL) += pixeltool +QT5TOOLS_INSTALL_TARGET_$(BR2_PACKAGE_QT5TOOLS_PIXELTOOL) += pixeltool + +QT5TOOLS_BUILD_DIRS_$(BR2_PACKAGE_QT5TOOLS_QTDIAG) += qtdiag +QT5TOOLS_INSTALL_TARGET_$(BR2_PACKAGE_QT5TOOLS_QTDIAG) += qtdiag + +QT5TOOLS_BUILD_DIRS_$(BR2_PACKAGE_QT5TOOLS_QTPATHS) += qtpaths +QT5TOOLS_INSTALL_TARGET_$(BR2_PACKAGE_QT5TOOLS_QTPATHS) += qtpaths + +QT5TOOLS_BUILD_DIRS_$(BR2_PACKAGE_QT5TOOLS_QTPLUGININFO) += qtplugininfo +QT5TOOLS_INSTALL_TARGET_$(BR2_PACKAGE_QT5TOOLS_QTPLUGININFO) += qtplugininfo + +define QT5TOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) sub-src-qmake_all + $(foreach p,$(QT5TOOLS_BUILD_DIRS_y), \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/$(p)$(sep)) +endef + +# use install target to copy cmake module files +define QT5TOOLS_INSTALL_STAGING_CMDS + $(foreach p,$(QT5TOOLS_INSTALL_STAGING_DIR_y), \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/$(p) install$(sep)) +endef + +define QT5TOOLS_INSTALL_TARGET_CMDS + $(foreach p,$(QT5TOOLS_INSTALL_TARGET_y), \ + $(INSTALL) -D -m0755 $(@D)/bin/$(p) $(TARGET_DIR)/usr/bin/$(p)$(sep)) +endef + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5virtualkeyboard/Config.in b/package/qt5/qt5virtualkeyboard/Config.in new file mode 100644 index 00000000..4cac6fd2 --- /dev/null +++ b/package/qt5/qt5virtualkeyboard/Config.in @@ -0,0 +1,59 @@ +config BR2_PACKAGE_QT5VIRTUALKEYBOARD + bool "qt5virtualkeyboard" + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative + select BR2_PACKAGE_QT5DECLARATIVE + select BR2_PACKAGE_QT5DECLARATIVE_QUICK + select BR2_PACKAGE_QT5SVG + help + Qt Virtual Keyboard is a virtual keyboard framework that + consists of a C++ backend supporting custom input methods as + well as a UI frontend implemented in QML. + + https://doc.qt.io/qt-5/qtvirtualkeyboard-index.html + +if BR2_PACKAGE_QT5VIRTUALKEYBOARD + +config BR2_PACKAGE_QT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS + string "language layouts" + default "en_GB" + help + The Virtual Keyboard supports the following languages: + - Arabic (ar_AR) + - Danish (da_DK) + - English (en_GB) + - Finnish (fi_FI) + - French (fr_FR) + - German (de_DE) + - Hindi (hi_IN) + - Italian (it_IT) + - Japanese (ja_JP) + - Korean (ko_KR) + - Norwegian (nb_NO) + - Persian/Farsi (fa_FA) + - Polish (pl_PL) + - Portugese (pt_PT) + - Romanian (ro_RO) + - Russian (ru_RU) + - Simplified Chinese (zh_CN) + - Traditional Chinese (zh_TW) + - Spanish (es_ES) + - Swedish (sv_SE) + + Note: the special value "all" can be used to install support + for all supported languages. + +config BR2_PACKAGE_QT5VIRTUALKEYBOARD_HANDWRITING + bool "handwriting" + help + Handwriting support, with gestures for fullscreen input. + + Lipi Toolkit (LipiTk) is an open source toolkit for online + Handwriting Recognition. + +config BR2_PACKAGE_QT5VIRTUALKEYBOARD_ARROW_KEY_NAVIGATION + bool "Arrow key navigation" + help + Allows controlling the keyboard using the arrow and return + keys. + +endif diff --git a/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.hash b/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.hash new file mode 100644 index 00000000..d091df1b --- /dev/null +++ b/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.hash @@ -0,0 +1,9 @@ +# Locally calculated +sha256 264d7fb33bc7cf1e9a387c7220c997f96e64a2659738a419d558e7c518718bd0 qtvirtualkeyboard-7389450a5de5fdd210f1459abcf73621ec0496bd.tar.bz2 + +# Hashes for license files: +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 7a45a9769d19545480a241230e6ea520b5156fac00930dcd69b6886749743d10 src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/MIT_LICENSE.txt +sha256 05cc719deafd0ab083b03296bb2911de10d116953b626a7629b9ca59938038b1 src/plugins/openwnn/3rdparty/openwnn/NOTICE +sha256 b5830d96fb5a7e7e7ebcc295f352846b4b998e78fdc8f9aa68e134d2e4b39986 src/plugins/pinyin/3rdparty/pinyin/NOTICE +sha256 9400a6128693d2f25653698e695f554660c71efccc8c21af28bf143e35199db6 src/plugins/tcime/3rdparty/tcime/COPYING diff --git a/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk b/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk new file mode 100644 index 00000000..b4673f7f --- /dev/null +++ b/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# qt5virtualkeyboard +# +################################################################################ + +QT5VIRTUALKEYBOARD_VERSION = 7389450a5de5fdd210f1459abcf73621ec0496bd +QT5VIRTUALKEYBOARD_SITE = $(QT5_SITE)/qtvirtualkeyboard/-/archive/$(QT5VIRTUALKEYBOARD_VERSION) +QT5VIRTUALKEYBOARD_SOURCE = qtvirtualkeyboard-$(QT5VIRTUALKEYBOARD_VERSION).tar.bz2 +QT5VIRTUALKEYBOARD_DEPENDENCIES = qt5declarative qt5svg +QT5VIRTUALKEYBOARD_INSTALL_STAGING = YES +QT5VIRTUALKEYBOARD_SYNC_QT_HEADERS = YES + +QT5VIRTUALKEYBOARD_LICENSE = GPL-3.0 +QT5VIRTUALKEYBOARD_LICENSE_FILES = LICENSE.GPL3 + +QT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS = $(call qstrip,$(BR2_PACKAGE_QT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS)) +ifneq ($(strip $(QT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS)),) +QT5VIRTUALKEYBOARD_CONF_OPTS += CONFIG+="$(foreach lang,$(QT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS),lang-$(lang))" + +ifneq ($(filter ja_JP all,$(QT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS)),) +QT5VIRTUALKEYBOARD_LICENSE += , Apache-2.0 (openwnn) +QT5VIRTUALKEYBOARD_LICENSE_FILES += src/plugins/openwnn/3rdparty/openwnn/NOTICE +endif + +ifneq ($(filter zh_CN all,$(QT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS)),) +QT5VIRTUALKEYBOARD_LICENSE += , Apache-2.0 (pinyin) +QT5VIRTUALKEYBOARD_LICENSE_FILES += src/plugins/pinyin/3rdparty/pinyin/NOTICE +endif + +ifneq ($(filter zh_TW all,$(QT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS)),) +QT5VIRTUALKEYBOARD_LICENSE += , Apache-2.0 (tcime), BSD-3-Clause (tcime) +QT5VIRTUALKEYBOARD_LICENSE_FILES += src/plugins/tcime/3rdparty/tcime/COPYING +endif +endif + +ifeq ($(BR2_PACKAGE_QT5VIRTUALKEYBOARD_HANDWRITING),y) +QT5VIRTUALKEYBOARD_CONF_OPTS += CONFIG+=handwriting +QT5VIRTUALKEYBOARD_LICENSE += , MIT (lipi-toolkit) +QT5VIRTUALKEYBOARD_LICENSE_FILES += src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/MIT_LICENSE.txt +endif + +ifeq ($(BR2_PACKAGE_QT5VIRTUALKEYBOARD_ARROW_KEY_NAVIGATION),y) +QT5VIRTUALKEYBOARD_CONF_OPTS += CONFIG+=arrow-key-navigation +endif + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5wayland/Config.in b/package/qt5/qt5wayland/Config.in new file mode 100644 index 00000000..fe698fe8 --- /dev/null +++ b/package/qt5/qt5wayland/Config.in @@ -0,0 +1,24 @@ +comment "qt5wayland needs an OpenGL-capable backend" + depends on !BR2_PACKAGE_QT5_GL_AVAILABLE + +config BR2_PACKAGE_QT5WAYLAND + bool "qt5wayland" + depends on BR2_PACKAGE_QT5_GL_AVAILABLE + select BR2_PACKAGE_WAYLAND + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt5wayland module. + + https://qt.io + +if BR2_PACKAGE_QT5WAYLAND + +config BR2_PACKAGE_QT5WAYLAND_COMPOSITOR + bool "Enable compositor (experimental)" + help + The compositor API is still experimental, and not built by + default. + +endif diff --git a/package/qt5/qt5wayland/qt5wayland.hash b/package/qt5/qt5wayland/qt5wayland.hash new file mode 100644 index 00000000..3e1aebb5 --- /dev/null +++ b/package/qt5/qt5wayland/qt5wayland.hash @@ -0,0 +1,9 @@ +# Locally calculated +sha256 49fa530747c14e6dbe17f6c683e3292340db8bbaf4f17f7699467d3004b45b5b qtwayland-11e099c6b7fbec0e198bffaf8016676ef430cfba.tar.bz2 + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL diff --git a/package/qt5/qt5wayland/qt5wayland.mk b/package/qt5/qt5wayland/qt5wayland.mk new file mode 100644 index 00000000..41f99801 --- /dev/null +++ b/package/qt5/qt5wayland/qt5wayland.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# qt5wayland +# +################################################################################ + +QT5WAYLAND_VERSION = 11e099c6b7fbec0e198bffaf8016676ef430cfba +QT5WAYLAND_SITE = $(QT5_SITE)/qtwayland/-/archive/$(QT5WAYLAND_VERSION) +QT5WAYLAND_SOURCE = qtwayland-$(QT5WAYLAND_VERSION).tar.bz2 +QT5WAYLAND_DEPENDENCIES = wayland +QT5WAYLAND_INSTALL_STAGING = YES +QT5WAYLAND_SYNC_QT_HEADERS = YES + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y) +QT5WAYLAND_DEPENDENCIES += qt5declarative +endif + +ifeq ($(BR2_PACKAGE_LIBXKBCOMMON),y) +QT5WAYLAND_DEPENDENCIES += libxkbcommon +endif + +QT5WAYLAND_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5WAYLAND_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL + +ifeq ($(BR2_PACKAGE_QT5WAYLAND_COMPOSITOR),y) +QT5WAYLAND_CONF_OPTS += CONFIG+=wayland-compositor +endif + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5webchannel/Config.in b/package/qt5/qt5webchannel/Config.in new file mode 100644 index 00000000..1cd295b1 --- /dev/null +++ b/package/qt5/qt5webchannel/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_QT5WEBCHANNEL + bool "qt5webchannel" + select BR2_PACKAGE_QT5WEBSOCKETS + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt WebChannel enables peer-to-peer communication between + a server (QML/C++ application) and a client + (HTML/JavaScript or QML application). + + https://doc.qt.io/qt-5/qtwebchannel-index.html diff --git a/package/qt5/qt5webchannel/qt5webchannel.hash b/package/qt5/qt5webchannel/qt5webchannel.hash new file mode 100644 index 00000000..bf613d07 --- /dev/null +++ b/package/qt5/qt5webchannel/qt5webchannel.hash @@ -0,0 +1,9 @@ +# Locally calculated +sha256 fef1e1180d479293b23569190ddfaff5643737f3da065f8954c24b3a1030ea71 qtwebchannel-fca83088ef430f96257d2014e77d08bd350259af.tar.bz2 + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL diff --git a/package/qt5/qt5webchannel/qt5webchannel.mk b/package/qt5/qt5webchannel/qt5webchannel.mk new file mode 100644 index 00000000..fe509045 --- /dev/null +++ b/package/qt5/qt5webchannel/qt5webchannel.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# qt5webchannel +# +################################################################################ + +QT5WEBCHANNEL_VERSION = fca83088ef430f96257d2014e77d08bd350259af +QT5WEBCHANNEL_SITE = $(QT5_SITE)/qtwebchannel/-/archive/$(QT5WEBCHANNEL_VERSION) +QT5WEBCHANNEL_SOURCE = qtwebchannel-$(QT5WEBCHANNEL_VERSION).tar.bz2 +QT5WEBCHANNEL_DEPENDENCIES = qt5websockets +QT5WEBCHANNEL_INSTALL_STAGING = YES +QT5WEBCHANNEL_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5WEBCHANNEL_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL +QT5WEBCHANNEL_SYNC_QT_HEADERS = YES + +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +QT5WEBCHANNEL_LICENSE += , BSD-3-Clause (examples) +endif + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) +QT5WEBCHANNEL_DEPENDENCIES += qt5declarative +endif + +define QT5WEBCHANNEL_INSTALL_TARGET_JAVASCRIPT + $(INSTALL) -m 0644 -D $(@D)/examples/webchannel/shared/qwebchannel.js \ + $(TARGET_DIR)/var/www/qwebchannel.js +endef +QT5WEBCHANNEL_POST_INSTALL_TARGET_HOOKS += QT5WEBCHANNEL_INSTALL_TARGET_JAVASCRIPT + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5webengine-chromium-catapult/Config.in b/package/qt5/qt5webengine-chromium-catapult/Config.in new file mode 100644 index 00000000..471c2a2d --- /dev/null +++ b/package/qt5/qt5webengine-chromium-catapult/Config.in @@ -0,0 +1,4 @@ +# Not user-selectable, it is only needed to be copied +# into the chromium source tree. +config BR2_PACKAGE_QT5WEBENGINE_CHROMIUM_CATAPULT + bool diff --git a/package/qt5/qt5webengine-chromium-catapult/qt5webengine-chromium-catapult.hash b/package/qt5/qt5webengine-chromium-catapult/qt5webengine-chromium-catapult.hash new file mode 100644 index 00000000..18bee4f5 --- /dev/null +++ b/package/qt5/qt5webengine-chromium-catapult/qt5webengine-chromium-catapult.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3dfcab349fd82c854b72fcc3f64e2e08f9a0d72c712a0d86a30d3a9994f244ba qt5webengine-chromium-catapult-7534569f99827c0ed4df818254ba7daca4606bca-git4.tar.gz +sha256 f0df289ba9d03d857ad1c2f5918861376b1510b71588ffc60eff5c7a7bfedb09 LICENSE diff --git a/package/qt5/qt5webengine-chromium-catapult/qt5webengine-chromium-catapult.mk b/package/qt5/qt5webengine-chromium-catapult/qt5webengine-chromium-catapult.mk new file mode 100644 index 00000000..bf577873 --- /dev/null +++ b/package/qt5/qt5webengine-chromium-catapult/qt5webengine-chromium-catapult.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# qt5webengine-chromium-catapult +# +################################################################################ + +QT5WEBENGINE_CHROMIUM_CATAPULT_VERSION = 7534569f99827c0ed4df818254ba7daca4606bca +QT5WEBENGINE_CHROMIUM_CATAPULT_SITE = https://chromium.googlesource.com/catapult.git +QT5WEBENGINE_CHROMIUM_CATAPULT_SITE_METHOD = git +QT5WEBENGINE_CHROMIUM_CATAPULT_LICENSE = BSD-3-Clause +QT5WEBENGINE_CHROMIUM_CATAPULT_LICENSE_FILES = LICENSE +QT5WEBENGINE_CHROMIUM_CATAPULT_INSTALL_TARGET = NO + +$(eval $(generic-package)) diff --git a/package/qt5/qt5webengine-chromium/0001-Add-python3-build-support.patch b/package/qt5/qt5webengine-chromium/0001-Add-python3-build-support.patch new file mode 100644 index 00000000..cc972641 --- /dev/null +++ b/package/qt5/qt5webengine-chromium/0001-Add-python3-build-support.patch @@ -0,0 +1,1858 @@ +From bf94b834e9beb4e7bc25dbc4c61f5e2db39e7cdc Mon Sep 17 00:00:00 2001 +From: James Hilliard +Date: Fri, 4 Feb 2022 15:43:35 -0700 +Subject: [PATCH] Add python3 build support + +Adapted from: +https://github.com/archlinux/svntogit-packages/blob/6edf5f1aaea952d046aff89a2e0175258fe77361/trunk/qt5-webengine-chromium-python3.patch + +Signed-off-by: James Hilliard +--- + .../protobufs/binary_proto_generator.py | 8 +- + .../tracing/generate_trace_viewer_grd.py | 2 +- + chromium/mojo/public/tools/bindings/BUILD.gn | 2 + + .../tools/bindings/gen_data_files_list.py | 8 +- + .../generators/mojom_java_generator.py | 4 + + .../tools/mojom/mojom/generate/generator.py | 14 ++-- + .../tools/mojom/mojom/generate/module.py | 3 +- + .../mojom/mojom/generate/template_expander.py | 12 +-- + .../scripts/bind_gen/blink_v8_bridge.py | 6 +- + .../scripts/bind_gen/callback_interface.py | 2 +- + .../bindings/scripts/bind_gen/code_node.py | 10 +-- + .../bindings/scripts/bind_gen/codegen_expr.py | 15 ++-- + .../scripts/bind_gen/codegen_format.py | 2 +- + .../scripts/bind_gen/codegen_utils.py | 2 +- + .../bindings/scripts/bind_gen/dictionary.py | 2 +- + .../bindings/scripts/bind_gen/interface.py | 82 +++++++++++-------- + .../scripts/bind_gen/mako_renderer.py | 2 +- + .../bindings/scripts/bind_gen/style_format.py | 9 +- + .../bindings/scripts/bind_gen/task_queue.py | 5 +- + .../bindings/scripts/code_generator.py | 10 +++ + .../scripts/generate_origin_trial_features.py | 4 +- + .../bindings/scripts/idl_definitions.py | 8 +- + .../renderer/bindings/scripts/idl_reader.py | 4 +- + .../renderer/bindings/scripts/idl_types.py | 2 +- + .../renderer/bindings/scripts/utilities.py | 28 +++---- + .../renderer/bindings/scripts/v8_interface.py | 9 +- + .../renderer/bindings/scripts/v8_methods.py | 4 + + .../renderer/bindings/scripts/v8_utilities.py | 2 +- + .../scripts/web_idl/callback_interface.py | 12 +-- + .../bindings/scripts/web_idl/database.py | 2 +- + .../bindings/scripts/web_idl/exposure.py | 5 +- + .../bindings/scripts/web_idl/function_like.py | 28 +++---- + .../bindings/scripts/web_idl/idl_compiler.py | 21 ++--- + .../bindings/scripts/web_idl/interface.py | 45 +++++----- + .../bindings/scripts/web_idl/ir_builder.py | 29 ++++--- + .../bindings/scripts/web_idl/make_copy.py | 7 ++ + .../bindings/scripts/web_idl/namespace.py | 12 +-- + .../bindings/templates/dictionary_v8.cc.tmpl | 8 +- + .../scripts/core/css/make_style_shorthands.py | 23 +++--- + .../properties/make_css_property_instances.py | 4 +- + .../blink/renderer/build/scripts/gperf.py | 2 +- + .../blink/renderer/build/scripts/in_file.py | 2 +- + .../renderer/build/scripts/in_generator.py | 5 ++ + .../build/scripts/make_runtime_features.py | 2 +- + .../scripts/templates/element_factory.cc.tmpl | 4 +- + .../templates/element_type_helpers.cc.tmpl | 4 +- + .../templates/element_type_helpers.h.tmpl | 2 +- + .../build/scripts/templates/macros.tmpl | 4 +- + .../templates/make_qualified_names.h.tmpl | 4 +- + .../dawn/generator/generator_lib.py | 4 + + .../devtools-frontend/src/BUILD.gn | 2 + + .../scripts/build/build_inspector_overlay.py | 3 +- + .../build/build_release_applications.py | 9 +- + .../scripts/build/generate_devtools_grd.py | 4 +- + .../src/scripts/build/modular_build.py | 6 +- + chromium/third_party/jinja2/tests.py | 2 +- + chromium/tools/metrics/ukm/gen_builders.py | 5 +- + .../ui/ozone/generate_constructor_list.py | 13 ++- + .../ui/ozone/generate_ozone_platform_list.py | 26 ++++-- + 59 files changed, 331 insertions(+), 229 deletions(-) + +diff --git a/chromium/components/resources/protobufs/binary_proto_generator.py b/chromium/components/resources/protobufs/binary_proto_generator.py +index 7422ead9697..16365515f26 100755 +--- a/chromium/components/resources/protobufs/binary_proto_generator.py ++++ b/chromium/components/resources/protobufs/binary_proto_generator.py +@@ -7,7 +7,7 @@ + Converts a given ASCII proto into a binary resource. + + """ +- ++from __future__ import print_function + import abc + import imp + import optparse +@@ -196,12 +196,12 @@ class BinaryProtoGenerator: + self._ImportProtoModules(opts.path) + + if not self.VerifyArgs(opts): +- print "Wrong arguments" ++ print("Wrong arguments") + return 1 + + try: + self._GenerateBinaryProtos(opts) + except Exception as e: +- print "ERROR: Failed to render binary version of %s:\n %s\n%s" % ( +- opts.infile, str(e), traceback.format_exc()) ++ print("ERROR: Failed to render binary version of %s:\n %s\n%s" % ++ (opts.infile, str(e), traceback.format_exc())) + return 1 +diff --git a/chromium/content/browser/tracing/generate_trace_viewer_grd.py b/chromium/content/browser/tracing/generate_trace_viewer_grd.py +index 037f9497dc2..be393d21f90 100755 +--- a/chromium/content/browser/tracing/generate_trace_viewer_grd.py ++++ b/chromium/content/browser/tracing/generate_trace_viewer_grd.py +@@ -74,7 +74,7 @@ def main(argv): + for filename in parsed_args.source_files: + add_file_to_grd(doc, os.path.basename(filename)) + +- with open(parsed_args.output_filename, 'w') as output_file: ++ with open(parsed_args.output_filename, 'wb') as output_file: + output_file.write(doc.toxml(encoding='UTF-8')) + + +diff --git a/chromium/mojo/public/tools/bindings/BUILD.gn b/chromium/mojo/public/tools/bindings/BUILD.gn +index fc04b5dd0b1..708958e438b 100644 +--- a/chromium/mojo/public/tools/bindings/BUILD.gn ++++ b/chromium/mojo/public/tools/bindings/BUILD.gn +@@ -2,9 +2,11 @@ + # Use of this source code is governed by a BSD-style license that can be + # found in the LICENSE file. + ++import("//build/config/python.gni") + import("//mojo/public/tools/bindings/mojom.gni") + import("//third_party/jinja2/jinja2.gni") + ++# TODO(crbug.com/1194274): Investigate nondeterminism in Py3 builds. + action("precompile_templates") { + sources = mojom_generator_sources + sources += [ +diff --git a/chromium/mojo/public/tools/bindings/gen_data_files_list.py b/chromium/mojo/public/tools/bindings/gen_data_files_list.py +index 79c9e50efce..8b78d092418 100644 +--- a/chromium/mojo/public/tools/bindings/gen_data_files_list.py ++++ b/chromium/mojo/public/tools/bindings/gen_data_files_list.py +@@ -18,7 +18,6 @@ import os + import re + import sys + +-from cStringIO import StringIO + from optparse import OptionParser + + sys.path.insert( +@@ -41,12 +40,9 @@ def main(): + pattern = re.compile(options.pattern) + files = [f for f in os.listdir(options.directory) if pattern.match(f)] + +- stream = StringIO() +- for f in files: +- print(f, file=stream) ++ contents = '\n'.join(f for f in files) + '\n' ++ WriteFile(contents, options.output) + +- WriteFile(stream.getvalue(), options.output) +- stream.close() + + if __name__ == '__main__': + sys.exit(main()) +diff --git a/chromium/mojo/public/tools/bindings/generators/mojom_java_generator.py b/chromium/mojo/public/tools/bindings/generators/mojom_java_generator.py +index 96b2fdfae0c..00b9dccd00c 100644 +--- a/chromium/mojo/public/tools/bindings/generators/mojom_java_generator.py ++++ b/chromium/mojo/public/tools/bindings/generators/mojom_java_generator.py +@@ -25,6 +25,10 @@ sys.path.append(os.path.join(os.path.dirname(__file__), os.pardir, + 'build', 'android', 'gyp')) + from util import build_utils + ++# TODO(crbug.com/1174969): Remove this once Python2 is obsoleted. ++if sys.version_info.major != 2: ++ basestring = str ++ long = int + + GENERATOR_PREFIX = 'java' + +diff --git a/chromium/mojo/public/tools/mojom/mojom/generate/generator.py b/chromium/mojo/public/tools/mojom/mojom/generate/generator.py +index de62260a5c9..4a1c73fcf82 100644 +--- a/chromium/mojo/public/tools/mojom/mojom/generate/generator.py ++++ b/chromium/mojo/public/tools/mojom/mojom/generate/generator.py +@@ -136,9 +136,14 @@ class Stylizer(object): + + def WriteFile(contents, full_path): + # If |contents| is same with the file content, we skip updating. ++ if not isinstance(contents, bytes): ++ data = contents.encode('utf8') ++ else: ++ data = contents ++ + if os.path.isfile(full_path): + with open(full_path, 'rb') as destination_file: +- if destination_file.read() == contents: ++ if destination_file.read() == data: + return + + # Make sure the containing directory exists. +@@ -146,11 +151,8 @@ def WriteFile(contents, full_path): + fileutil.EnsureDirectoryExists(full_dir) + + # Dump the data to disk. +- with open(full_path, "wb") as f: +- if not isinstance(contents, bytes): +- f.write(contents.encode('utf-8')) +- else: +- f.write(contents) ++ with open(full_path, 'wb') as f: ++ f.write(data) + + + def AddComputedData(module): +diff --git a/chromium/mojo/public/tools/mojom/mojom/generate/module.py b/chromium/mojo/public/tools/mojom/mojom/generate/module.py +index ebbc9b322ea..3d026429bbc 100644 +--- a/chromium/mojo/public/tools/mojom/mojom/generate/module.py ++++ b/chromium/mojo/public/tools/mojom/mojom/generate/module.py +@@ -398,7 +398,8 @@ class Field(object): + + + class StructField(Field): +- pass ++ def __hash__(self): ++ return super(Field, self).__hash__() + + + class UnionField(Field): +diff --git a/chromium/mojo/public/tools/mojom/mojom/generate/template_expander.py b/chromium/mojo/public/tools/mojom/mojom/generate/template_expander.py +index 7a300560246..8d9e26fb7f6 100644 +--- a/chromium/mojo/public/tools/mojom/mojom/generate/template_expander.py ++++ b/chromium/mojo/public/tools/mojom/mojom/generate/template_expander.py +@@ -75,9 +75,9 @@ def PrecompileTemplates(generator_modules, output_dir): + os.path.dirname(module.__file__), generator.GetTemplatePrefix()) + ])) + jinja_env.filters.update(generator.GetFilters()) +- jinja_env.compile_templates( +- os.path.join(output_dir, "%s.zip" % generator.GetTemplatePrefix()), +- extensions=["tmpl"], +- zip="stored", +- py_compile=True, +- ignore_errors=False) ++ jinja_env.compile_templates(os.path.join( ++ output_dir, "%s.zip" % generator.GetTemplatePrefix()), ++ extensions=["tmpl"], ++ zip="stored", ++ py_compile=sys.version_info.major < 3, ++ ignore_errors=False) +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/blink_v8_bridge.py b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/blink_v8_bridge.py +index 3225ecca6e4..fc078d31b55 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/blink_v8_bridge.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/blink_v8_bridge.py +@@ -344,7 +344,7 @@ def make_default_value_expr(idl_type, default_value): + """ + assert default_value.is_type_compatible_with(idl_type) + +- class DefaultValueExpr: ++ class DefaultValueExpr(object): + _ALLOWED_SYMBOLS_IN_DEPS = ("isolate") + + def __init__(self, initializer_expr, initializer_deps, +@@ -502,7 +502,7 @@ def make_v8_to_blink_value(blink_var_name, + assert isinstance(blink_var_name, str) + assert isinstance(v8_value_expr, str) + assert isinstance(idl_type, web_idl.IdlType) +- assert (argument_index is None or isinstance(argument_index, (int, long))) ++ assert (argument_index is None or isinstance(argument_index, int)) + assert (default_value is None + or isinstance(default_value, web_idl.LiteralConstant)) + +@@ -622,7 +622,7 @@ def make_v8_to_blink_value_variadic(blink_var_name, v8_array, + """ + assert isinstance(blink_var_name, str) + assert isinstance(v8_array, str) +- assert isinstance(v8_array_start_index, (int, long)) ++ assert isinstance(v8_array_start_index, int) + assert isinstance(idl_type, web_idl.IdlType) + + pattern = ("auto&& ${{{_1}}} = " +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/callback_interface.py b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/callback_interface.py +index 4a6df513068..8b51f23a409 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/callback_interface.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/callback_interface.py +@@ -177,7 +177,7 @@ def generate_callback_interface(callback_interface_identifier): + prop_install_mode=PropInstallMode.UNCONDITIONAL, + trampoline_var_name=None, + attribute_entries=[], +- constant_entries=filter(is_unconditional, constant_entries), ++ constant_entries=list(filter(is_unconditional, constant_entries)), + exposed_construct_entries=[], + operation_entries=[]) + (install_interface_template_decl, install_interface_template_def, +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/code_node.py b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/code_node.py +index 52972fefe20..e5ae9d9629e 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/code_node.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/code_node.py +@@ -503,13 +503,13 @@ class CompositeNode(CodeNode): + gensym_kwargs = {} + template_vars = {} + for arg in args: +- assert isinstance(arg, (CodeNode, int, long, str)) ++ assert isinstance(arg, (CodeNode, int, str)) + gensym = CodeNode.gensym() + gensym_args.append("${{{}}}".format(gensym)) + template_vars[gensym] = arg + for key, value in kwargs.items(): +- assert isinstance(key, (int, long, str)) +- assert isinstance(value, (CodeNode, int, long, str)) ++ assert isinstance(key, (int, str)) ++ assert isinstance(value, (CodeNode, int, str)) + gensym = CodeNode.gensym() + gensym_kwargs[key] = "${{{}}}".format(gensym) + template_vars[gensym] = value +@@ -602,7 +602,7 @@ class ListNode(CodeNode): + def insert(self, index, node): + if node is None: + return +- assert isinstance(index, (int, long)) ++ assert isinstance(index, int) + assert isinstance(node, CodeNode) + assert node.outer is None and node.prev is None + +@@ -721,7 +721,7 @@ class SymbolScopeNode(SequenceNode): + if not scope_chains: + return counts + +- self_index = iter(scope_chains).next().index(self) ++ self_index = next(iter(scope_chains)).index(self) + scope_chains = map( + lambda scope_chain: scope_chain[self_index + 1:], scope_chains) + scope_to_likeliness = {} +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_expr.py b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_expr.py +index a229a6c71c9..5fa288dabf2 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_expr.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_expr.py +@@ -109,7 +109,7 @@ def expr_and(terms): + + if any(term.is_always_false for term in terms): + return _Expr(False) +- terms = filter(lambda x: not x.is_always_true, terms) ++ terms = list(filter(lambda x: not x.is_always_true, terms)) + if not terms: + return _Expr(True) + if len(terms) == 1: +@@ -124,7 +124,7 @@ def expr_or(terms): + + if any(term.is_always_true for term in terms): + return _Expr(True) +- terms = filter(lambda x: not x.is_always_false, terms) ++ terms = list(filter(lambda x: not x.is_always_false, terms)) + if not terms: + return _Expr(False) + if len(terms) == 1: +@@ -222,7 +222,7 @@ def expr_from_exposure(exposure, + elif exposure.only_in_secure_contexts is False: + secure_context_term = _Expr(True) + else: +- terms = map(ref_enabled, exposure.only_in_secure_contexts) ++ terms = list(map(ref_enabled, exposure.only_in_secure_contexts)) + secure_context_term = expr_or( + [_Expr("${is_in_secure_context}"), + expr_not(expr_and(terms))]) +@@ -275,10 +275,11 @@ def expr_from_exposure(exposure, + + # [ContextEnabled] + if exposure.context_enabled_features: +- terms = map( +- lambda feature: _Expr( +- "${{context_feature_settings}}->is{}Enabled()".format( +- feature)), exposure.context_enabled_features) ++ terms = list( ++ map( ++ lambda feature: _Expr( ++ "${{context_feature_settings}}->is{}Enabled()".format( ++ feature)), exposure.context_enabled_features)) + context_enabled_terms.append( + expr_and([_Expr("${context_feature_settings}"), + expr_or(terms)])) +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_format.py b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_format.py +index 87d26eec3ca..f3e9d38247e 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_format.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_format.py +@@ -23,7 +23,7 @@ class _TemplateFormatter(string.Formatter): + self._template_formatter_indexing_count_ = 0 + + def get_value(self, key, args, kwargs): +- if isinstance(key, (int, long)): ++ if isinstance(key, int): + return args[key] + assert isinstance(key, str) + if not key: +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py +index 2bcc4fed49a..e72282aa696 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py +@@ -116,4 +116,4 @@ def write_code_node_to_file(code_node, filepath): + # stderr=format_result.error_message)) + # + # web_idl.file_io.write_to_file_if_changed(filepath, format_result.contents) +- web_idl.file_io.write_to_file_if_changed(filepath, rendered_text) ++ web_idl.file_io.write_to_file_if_changed(filepath, rendered_text.encode('utf-8')) +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/dictionary.py b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/dictionary.py +index b39f0100410..4d68202296b 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/dictionary.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/dictionary.py +@@ -993,7 +993,7 @@ def make_dict_trace_func(cg_context): + _2 = _blink_member_name(member).value_var + return TextNode(_format(pattern, _1=_1, _2=_2)) + +- body.extend(map(make_trace_member_node, own_members)) ++ body.extend(list(map(make_trace_member_node, own_members))) + body.append(TextNode("BaseClass::Trace(visitor);")) + + return func_decl, func_def +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py +index 10ff30656ad..bfdf7128aac 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py +@@ -582,7 +582,7 @@ def _make_blink_api_call(code_node, + overriding_args=None): + assert isinstance(code_node, SymbolScopeNode) + assert isinstance(cg_context, CodeGenContext) +- assert num_of_args is None or isinstance(num_of_args, (int, long)) ++ assert num_of_args is None or isinstance(num_of_args, int) + assert (overriding_args is None + or (isinstance(overriding_args, (list, tuple)) + and all(isinstance(arg, str) for arg in overriding_args))) +@@ -1196,8 +1196,10 @@ def make_overload_dispatcher(cg_context): + did_use_break = did_use_break or can_fail + + conditional = expr_or( +- map(lambda item: expr_from_exposure(item.function_like.exposure), +- items)) ++ list( ++ map( ++ lambda item: expr_from_exposure(item.function_like.exposure ++ ), items))) + if not conditional.is_always_true: + node = CxxUnlikelyIfNode(cond=conditional, body=node) + +@@ -4642,7 +4644,7 @@ class _PropEntryConstructorGroup(_PropEntryBase): + def __init__(self, is_context_dependent, exposure_conditional, world, + constructor_group, ctor_callback_name, ctor_func_length): + assert isinstance(ctor_callback_name, str) +- assert isinstance(ctor_func_length, (int, long)) ++ assert isinstance(ctor_func_length, int) + + _PropEntryBase.__init__(self, is_context_dependent, + exposure_conditional, world, constructor_group) +@@ -4670,7 +4672,7 @@ class _PropEntryOperationGroup(_PropEntryBase): + op_func_length, + no_alloc_direct_callback_name=None): + assert isinstance(op_callback_name, str) +- assert isinstance(op_func_length, (int, long)) ++ assert isinstance(op_func_length, int) + + _PropEntryBase.__init__(self, is_context_dependent, + exposure_conditional, world, operation_group) +@@ -5175,9 +5177,9 @@ def make_install_interface_template(cg_context, function_name, class_name, api_c + ]) + + if class_like.identifier == "CSSStyleDeclaration": +- css_properties = filter( +- lambda attr: "CSSProperty" in attr.extended_attributes, +- class_like.attributes) ++ css_properties = list( ++ filter(lambda attr: "CSSProperty" in attr.extended_attributes, ++ class_like.attributes)) + if css_properties: + prop_name_list = "".join( + map(lambda attr: "\"{}\", ".format(attr.identifier), +@@ -5567,8 +5569,8 @@ ${instance_object} = ${v8_context}->Global()->GetPrototype().As();\ + "V8DOMConfiguration::InstallConstants(${isolate}, " + "${interface_template}, ${prototype_template}, " + "kConstantCallbackTable, base::size(kConstantCallbackTable));") +- constant_callback_entries = filter(lambda entry: entry.const_callback_name, +- constant_entries) ++ constant_callback_entries = list(filter(lambda entry: entry.const_callback_name, ++ constant_entries)) + install_properties(table_name, constant_callback_entries, + _make_constant_callback_registration_table, + installer_call_text) +@@ -5584,8 +5586,8 @@ ${instance_object} = ${v8_context}->Global()->GetPrototype().As();\ + "V8DOMConfiguration::InstallConstants(${isolate}, " + "${interface_template}, ${prototype_template}, " + "kConstantValueTable, base::size(kConstantValueTable));") +- constant_value_entries = filter( +- lambda entry: not entry.const_callback_name, constant_entries) ++ constant_value_entries = list(filter( ++ lambda entry: not entry.const_callback_name, constant_entries)) + install_properties(table_name, constant_value_entries, + _make_constant_value_registration_table, + installer_call_text) +@@ -6336,8 +6338,8 @@ def make_v8_context_snapshot_api(cg_context, component, attribute_entries, + assert isinstance(component, web_idl.Component) + + derived_interfaces = cg_context.interface.deriveds +- derived_names = map(lambda interface: interface.identifier, +- derived_interfaces) ++ derived_names = list( ++ map(lambda interface: interface.identifier, derived_interfaces)) + derived_names.append(cg_context.interface.identifier) + if not ("Window" in derived_names or "HTMLDocument" in derived_names): + return None, None +@@ -6411,9 +6413,11 @@ def _make_v8_context_snapshot_get_reference_table_function( + collect_callbacks(named_properties_object_callback_defs) + collect_callbacks(cross_origin_property_callback_defs) + +- entry_nodes = map( +- lambda name: TextNode("reinterpret_cast({}),".format(name)), +- filter(None, callback_names)) ++ entry_nodes = list( ++ map( ++ lambda name: TextNode("reinterpret_cast({}),".format(name ++ )), ++ filter(None, callback_names))) + table_node = ListNode([ + TextNode("using namespace ${class_name}Callbacks;"), + TextNode("static const intptr_t kReferenceTable[] = {"), +@@ -6451,10 +6455,11 @@ def _make_v8_context_snapshot_install_props_per_context_function( + class_name=None, + prop_install_mode=PropInstallMode.V8_CONTEXT_SNAPSHOT, + trampoline_var_name=None, +- attribute_entries=filter(selector, attribute_entries), +- constant_entries=filter(selector, constant_entries), +- exposed_construct_entries=filter(selector, exposed_construct_entries), +- operation_entries=filter(selector, operation_entries)) ++ attribute_entries=list(filter(selector, attribute_entries)), ++ constant_entries=list(filter(selector, constant_entries)), ++ exposed_construct_entries=list( ++ filter(selector, exposed_construct_entries)), ++ operation_entries=list(filter(selector, operation_entries))) + + return func_decl, func_def + +@@ -6810,11 +6815,11 @@ def generate_interface(interface_identifier): + class_name=impl_class_name, + prop_install_mode=PropInstallMode.UNCONDITIONAL, + trampoline_var_name=tp_install_unconditional_props, +- attribute_entries=filter(is_unconditional, attribute_entries), +- constant_entries=filter(is_unconditional, constant_entries), +- exposed_construct_entries=filter(is_unconditional, +- exposed_construct_entries), +- operation_entries=filter(is_unconditional, operation_entries)) ++ attribute_entries=list(filter(is_unconditional, attribute_entries)), ++ constant_entries=list(filter(is_unconditional, constant_entries)), ++ exposed_construct_entries=list( ++ filter(is_unconditional, exposed_construct_entries)), ++ operation_entries=list(filter(is_unconditional, operation_entries))) + (install_context_independent_props_decl, + install_context_independent_props_def, + install_context_independent_props_trampoline) = make_install_properties( +@@ -6823,11 +6828,14 @@ def generate_interface(interface_identifier): + class_name=impl_class_name, + prop_install_mode=PropInstallMode.CONTEXT_INDEPENDENT, + trampoline_var_name=tp_install_context_independent_props, +- attribute_entries=filter(is_context_independent, attribute_entries), +- constant_entries=filter(is_context_independent, constant_entries), +- exposed_construct_entries=filter(is_context_independent, +- exposed_construct_entries), +- operation_entries=filter(is_context_independent, operation_entries)) ++ attribute_entries=list( ++ filter(is_context_independent, attribute_entries)), ++ constant_entries=list(filter(is_context_independent, ++ constant_entries)), ++ exposed_construct_entries=list( ++ filter(is_context_independent, exposed_construct_entries)), ++ operation_entries=list( ++ filter(is_context_independent, operation_entries))) + (install_context_dependent_props_decl, install_context_dependent_props_def, + install_context_dependent_props_trampoline) = make_install_properties( + cg_context, +@@ -6835,11 +6843,13 @@ def generate_interface(interface_identifier): + class_name=impl_class_name, + prop_install_mode=PropInstallMode.CONTEXT_DEPENDENT, + trampoline_var_name=tp_install_context_dependent_props, +- attribute_entries=filter(is_context_dependent, attribute_entries), +- constant_entries=filter(is_context_dependent, constant_entries), +- exposed_construct_entries=filter(is_context_dependent, +- exposed_construct_entries), +- operation_entries=filter(is_context_dependent, operation_entries)) ++ attribute_entries=list(filter(is_context_dependent, ++ attribute_entries)), ++ constant_entries=list(filter(is_context_dependent, constant_entries)), ++ exposed_construct_entries=list( ++ filter(is_context_dependent, exposed_construct_entries)), ++ operation_entries=list(filter(is_context_dependent, ++ operation_entries))) + (install_interface_template_decl, install_interface_template_def, + install_interface_template_trampoline) = make_install_interface_template( + cg_context, +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/mako_renderer.py b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/mako_renderer.py +index b4c70553863..f3a2fcd772d 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/mako_renderer.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/mako_renderer.py +@@ -105,7 +105,7 @@ class MakoRenderer(object): + on_error = self._caller_stack_on_error + if (len(current) <= len(on_error) + and all(current[i] == on_error[i] +- for i in xrange(len(current)))): ++ for i in range(len(current)))): + pass # Error happened in a deeper caller. + else: + self._caller_stack_on_error = list(self._caller_stack) +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py +index dc3493cc394..017d3d47bb3 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py +@@ -70,8 +70,13 @@ def gn_format(contents, filename=None): + + + def _invoke_format_command(command_line, filename, contents): +- proc = subprocess.Popen( +- command_line, stdin=subprocess.PIPE, stdout=subprocess.PIPE) ++ kwargs = {} ++ if sys.version_info.major != 2: ++ kwargs['encoding'] = 'utf-8' ++ proc = subprocess.Popen(command_line, ++ stdin=subprocess.PIPE, ++ stdout=subprocess.PIPE, ++ **kwargs) + stdout_output, stderr_output = proc.communicate(input=contents) + exit_code = proc.wait() + +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/task_queue.py b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/task_queue.py +index 0d8f4c0f303..e666a9b668e 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/task_queue.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/task_queue.py +@@ -2,6 +2,7 @@ + # Use of this source code is governed by a BSD-style license that can be + # found in the LICENSE file. + ++import functools + import multiprocessing + + from .package_initializer import package_initializer +@@ -76,7 +77,7 @@ class TaskQueue(object): + if not report_progress: + return + +- done_count = reduce( ++ done_count = functools.reduce( + lambda count, worker_task: count + bool(worker_task.ready()), + self._worker_tasks, 0) + report_progress(len(self._worker_tasks), done_count) +@@ -85,4 +86,4 @@ class TaskQueue(object): + def _task_queue_run_tasks(tasks): + for task in tasks: + func, args, kwargs = task +- apply(func, args, kwargs) ++ func(*args, **kwargs) +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/code_generator.py b/chromium/third_party/blink/renderer/bindings/scripts/code_generator.py +index e8280be7213..e49e6eb965e 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/code_generator.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/code_generator.py +@@ -13,6 +13,7 @@ import re + import sys + + from idl_types import set_ancestors, IdlType ++from itertools import groupby + from v8_globals import includes + from v8_interface import constant_filters + from v8_types import set_component_dirs +@@ -43,6 +44,7 @@ TEMPLATES_DIR = os.path.normpath( + # after path[0] == invoking script dir + sys.path.insert(1, THIRD_PARTY_DIR) + import jinja2 ++from jinja2.filters import make_attrgetter, environmentfilter + + + def generate_indented_conditional(code, conditional): +@@ -88,6 +90,13 @@ def runtime_enabled_if(code, name): + return generate_indented_conditional(code, function) + + ++@environmentfilter ++def do_stringify_key_group_by(environment, value, attribute): ++ expr = make_attrgetter(environment, attribute) ++ key = lambda item: '' if expr(item) is None else str(expr(item)) ++ return groupby(sorted(value, key=key), expr) ++ ++ + def initialize_jinja_env(cache_dir): + jinja_env = jinja2.Environment( + loader=jinja2.FileSystemLoader(TEMPLATES_DIR), +@@ -117,6 +126,7 @@ def initialize_jinja_env(cache_dir): + }) + jinja_env.filters.update(constant_filters()) + jinja_env.filters.update(method_filters()) ++ jinja_env.filters["stringifykeygroupby"] = do_stringify_key_group_by + return jinja_env + + +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/generate_origin_trial_features.py b/chromium/third_party/blink/renderer/bindings/scripts/generate_origin_trial_features.py +index 130004eae83..04c0fabcef2 100755 +--- a/chromium/third_party/blink/renderer/bindings/scripts/generate_origin_trial_features.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/generate_origin_trial_features.py +@@ -80,7 +80,7 @@ def read_idl_file(reader, idl_filename): + assert len(interfaces) == 1, ( + "Expected one interface in file %r, found %d" % + (idl_filename, len(interfaces))) +- return (interfaces.values()[0], includes) ++ return (list(interfaces.values())[0], includes) + + + def interface_is_global(interface): +@@ -281,7 +281,7 @@ def main(): + + info_provider = create_component_info_provider( + os.path.normpath(options.info_dir), options.target_component) +- idl_filenames = map(str.strip, open(options.idl_files_list)) ++ idl_filenames = list(map(str.strip, open(options.idl_files_list))) + + generate_origin_trial_features(info_provider, options, idl_filenames) + return 0 +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/idl_definitions.py b/chromium/third_party/blink/renderer/bindings/scripts/idl_definitions.py +index 14e6e9d3f87..b027818aef2 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/idl_definitions.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/idl_definitions.py +@@ -394,7 +394,8 @@ class IdlInterface(object): + else: + raise ValueError('Unrecognized node class: %s' % child_class) + +- if len(filter(None, [self.iterable, self.maplike, self.setlike])) > 1: ++ if len(list(filter(None, ++ [self.iterable, self.maplike, self.setlike]))) > 1: + raise ValueError( + 'Interface can only have one of iterable<>, maplike<> and setlike<>.' + ) +@@ -512,6 +513,9 @@ class IdlAttribute(TypedObject): + def accept(self, visitor): + visitor.visit_attribute(self) + ++ def __lt__(self, other): ++ return self.name < other.name ++ + + ################################################################################ + # Constants +@@ -852,7 +856,7 @@ class IdlIncludes(object): + ################################################################################ + + +-class Exposure: ++class Exposure(object): + """An Exposure holds one Exposed or RuntimeEnabled condition. + Each exposure has two properties: exposed and runtime_enabled. + Exposure(e, r) corresponds to [Exposed(e r)]. Exposure(e) corresponds to +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/idl_reader.py b/chromium/third_party/blink/renderer/bindings/scripts/idl_reader.py +index 8d72865a6ca..b80eebdcd61 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/idl_reader.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/idl_reader.py +@@ -55,8 +55,8 @@ def validate_blink_idl_definitions(idl_filename, idl_file_basename, + definitions. There is no filename convention in this case. + - Otherwise, an IDL file is invalid. + """ +- targets = ( +- definitions.interfaces.values() + definitions.dictionaries.values()) ++ targets = (list(definitions.interfaces.values()) + ++ list(definitions.dictionaries.values())) + number_of_targets = len(targets) + if number_of_targets > 1: + raise Exception( +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/idl_types.py b/chromium/third_party/blink/renderer/bindings/scripts/idl_types.py +index cd4f0c3513b..ab95e9c0b08 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/idl_types.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/idl_types.py +@@ -349,7 +349,7 @@ class IdlUnionType(IdlTypeBase): + return True + + def single_matching_member_type(self, predicate): +- matching_types = filter(predicate, self.flattened_member_types) ++ matching_types = list(filter(predicate, self.flattened_member_types)) + if len(matching_types) > 1: + raise ValueError('%s is ambiguous.' % self.name) + return matching_types[0] if matching_types else None +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/utilities.py b/chromium/third_party/blink/renderer/bindings/scripts/utilities.py +index e1677ee7bd6..3c5006f064f 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/utilities.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/utilities.py +@@ -196,8 +196,9 @@ class ComponentInfoProviderModules(ComponentInfoProvider): + + @property + def callback_functions(self): +- return dict(self._component_info_core['callback_functions'].items() + +- self._component_info_modules['callback_functions'].items()) ++ return dict( ++ list(self._component_info_core['callback_functions'].items()) + ++ list(self._component_info_modules['callback_functions'].items())) + + @property + def specifier_for_export(self): +@@ -209,8 +210,8 @@ class ComponentInfoProviderModules(ComponentInfoProvider): + + + def load_interfaces_info_overall_pickle(info_dir): +- with open(os.path.join(info_dir, +- 'interfaces_info.pickle')) as interface_info_file: ++ with open(os.path.join(info_dir, 'interfaces_info.pickle'), ++ mode='rb') as interface_info_file: + return pickle.load(interface_info_file) + + +@@ -236,23 +237,20 @@ def merge_dict_recursively(target, diff): + + def create_component_info_provider_core(info_dir): + interfaces_info = load_interfaces_info_overall_pickle(info_dir) +- with open( +- os.path.join(info_dir, 'core', +- 'component_info_core.pickle')) as component_info_file: ++ with open(os.path.join(info_dir, 'core', 'component_info_core.pickle'), ++ mode='rb') as component_info_file: + component_info = pickle.load(component_info_file) + return ComponentInfoProviderCore(interfaces_info, component_info) + + + def create_component_info_provider_modules(info_dir): + interfaces_info = load_interfaces_info_overall_pickle(info_dir) +- with open( +- os.path.join(info_dir, 'core', +- 'component_info_core.pickle')) as component_info_file: ++ with open(os.path.join(info_dir, 'core', 'component_info_core.pickle'), ++ mode='rb') as component_info_file: + component_info_core = pickle.load(component_info_file) +- with open( +- os.path.join( +- info_dir, 'modules', +- 'component_info_modules.pickle')) as component_info_file: ++ with open(os.path.join(info_dir, 'modules', ++ 'component_info_modules.pickle'), ++ mode='rb') as component_info_file: + component_info_modules = pickle.load(component_info_file) + return ComponentInfoProviderModules(interfaces_info, component_info_core, + component_info_modules) +@@ -356,7 +354,7 @@ def write_pickle_file(pickle_filename, data): + pickle_filename = abs(pickle_filename) + # If |data| is same with the file content, we skip updating. + if os.path.isfile(pickle_filename): +- with open(pickle_filename) as pickle_file: ++ with open(pickle_filename, 'rb') as pickle_file: + try: + if pickle.load(pickle_file) == data: + return +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/v8_interface.py b/chromium/third_party/blink/renderer/bindings/scripts/v8_interface.py +index a43260414db..a85b03abe75 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/v8_interface.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/v8_interface.py +@@ -189,7 +189,7 @@ def context_enabled_features(attributes): + return sorted([ + member for member in members + if member.get(KEY) and not member.get('exposed_test') +- ]) ++ ], key=lambda item: item['name']) + + def member_filter_by_name(members, name): + return [member for member in members if member[KEY] == name] +@@ -612,7 +612,8 @@ def interface_context(interface, interfaces, component_info): + sorted( + origin_trial_features(interface, context['constants'], + context['attributes'], context['methods']) + +- context_enabled_features(context['attributes'])), ++ context_enabled_features(context['attributes']), ++ key=lambda item: item['name']), + }) + if context['optional_features']: + includes.add('platform/bindings/v8_per_context_data.h') +@@ -1356,9 +1357,9 @@ def resolution_tests_methods(effective_overloads): + + # Extract argument and IDL type to simplify accessing these in each loop. + arguments = [method['arguments'][index] for method in methods] +- arguments_methods = zip(arguments, methods) ++ arguments_methods = list(zip(arguments, methods)) + idl_types = [argument['idl_type_object'] for argument in arguments] +- idl_types_methods = zip(idl_types, methods) ++ idl_types_methods = list(zip(idl_types, methods)) + + # We can’t do a single loop through all methods or simply sort them, because + # a method may be listed in multiple steps of the resolution algorithm, and +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/v8_methods.py b/chromium/third_party/blink/renderer/bindings/scripts/v8_methods.py +index 5f1f89a3def..6ee8a407798 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/v8_methods.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/v8_methods.py +@@ -46,6 +46,10 @@ import v8_types + import v8_utilities + from v8_utilities import (has_extended_attribute_value, is_unforgeable) + ++# TODO: Remove this once Python2 is obsoleted. ++if sys.version_info.major != 2: ++ basestring = str ++ + + def method_is_visible(method, interface_is_partial): + if 'overloads' in method: +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/v8_utilities.py b/chromium/third_party/blink/renderer/bindings/scripts/v8_utilities.py +index 2ecd6923320..fcfc48371b1 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/v8_utilities.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/v8_utilities.py +@@ -271,7 +271,7 @@ EXPOSED_WORKERS = set([ + ]) + + +-class ExposureSet: ++class ExposureSet(object): + """An ExposureSet is a collection of Exposure instructions.""" + + def __init__(self, exposures=None): +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/callback_interface.py b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/callback_interface.py +index 13fb7c7068d..b73b7710687 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/callback_interface.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/callback_interface.py +@@ -91,11 +91,13 @@ class CallbackInterface(UserDefinedType, WithExtendedAttributes, + for operation_ir in ir.operations + ]) + self._operation_groups = tuple([ +- OperationGroup( +- operation_group_ir, +- filter(lambda x: x.identifier == operation_group_ir.identifier, +- self._operations), +- owner=self) for operation_group_ir in ir.operation_groups ++ OperationGroup(operation_group_ir, ++ list( ++ filter( ++ lambda x: x.identifier == operation_group_ir ++ .identifier, self._operations)), ++ owner=self) ++ for operation_group_ir in ir.operation_groups + ]) + + @property +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/database.py b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/database.py +index c92cf48eb2a..f5d59129449 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/database.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/database.py +@@ -156,4 +156,4 @@ class Database(object): + return self._view_by_kind(Database._Kind.UNION) + + def _view_by_kind(self, kind): +- return self._impl.find_by_kind(kind).values() ++ return list(self._impl.find_by_kind(kind).values()) +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/exposure.py b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/exposure.py +index abaeef39c30..e36cf7439ae 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/exposure.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/exposure.py +@@ -8,8 +8,11 @@ from .runtime_enabled_features import RuntimeEnabledFeatures + class _Feature(str): + """Represents a runtime-enabled feature.""" + ++ def __new__(cls, value): ++ return str.__new__(cls, value) ++ + def __init__(self, value): +- str.__init__(self, value) ++ str.__init__(self) + self._is_context_dependent = ( + RuntimeEnabledFeatures.is_context_dependent(self)) + +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/function_like.py b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/function_like.py +index 648c70d803d..1712f19c672 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/function_like.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/function_like.py +@@ -71,8 +71,9 @@ class FunctionLike(WithIdentifier): + def num_of_required_arguments(self): + """Returns the number of required arguments.""" + return len( +- filter(lambda arg: not (arg.is_optional or arg.is_variadic), +- self.arguments)) ++ list( ++ filter(lambda arg: not (arg.is_optional or arg.is_variadic), ++ self.arguments))) + + + class OverloadGroup(WithIdentifier): +@@ -171,8 +172,7 @@ class OverloadGroup(WithIdentifier): + Returns the effective overload set. + https://heycam.github.io/webidl/#compute-the-effective-overload-set + """ +- assert argument_count is None or isinstance(argument_count, +- (int, long)) ++ assert argument_count is None or isinstance(argument_count, int) + + N = argument_count + S = [] +@@ -188,21 +188,21 @@ class OverloadGroup(WithIdentifier): + + S.append( + OverloadGroup.EffectiveOverloadItem( +- X, map(lambda arg: arg.idl_type, X.arguments), +- map(lambda arg: arg.optionality, X.arguments))) ++ X, list(map(lambda arg: arg.idl_type, X.arguments)), ++ list(map(lambda arg: arg.optionality, X.arguments)))) + + if X.is_variadic: +- for i in xrange(n, max(maxarg, N)): +- t = map(lambda arg: arg.idl_type, X.arguments) +- o = map(lambda arg: arg.optionality, X.arguments) +- for _ in xrange(n, i + 1): ++ for i in range(n, max(maxarg, N)): ++ t = list(map(lambda arg: arg.idl_type, X.arguments)) ++ o = list(map(lambda arg: arg.optionality, X.arguments)) ++ for _ in range(n, i + 1): + t.append(X.arguments[-1].idl_type) + o.append(X.arguments[-1].optionality) + S.append(OverloadGroup.EffectiveOverloadItem(X, t, o)) + +- t = map(lambda arg: arg.idl_type, X.arguments) +- o = map(lambda arg: arg.optionality, X.arguments) +- for i in xrange(n - 1, -1, -1): ++ t = list(map(lambda arg: arg.idl_type, X.arguments)) ++ o = list(map(lambda arg: arg.optionality, X.arguments)) ++ for i in range(n - 1, -1, -1): + if X.arguments[i].optionality == IdlType.Optionality.REQUIRED: + break + S.append(OverloadGroup.EffectiveOverloadItem(X, t[:i], o[:i])) +@@ -222,7 +222,7 @@ class OverloadGroup(WithIdentifier): + for item in items) + assert len(items) > 1 + +- for index in xrange(len(items[0].type_list)): ++ for index in range(len(items[0].type_list)): + # Assume that the given items are valid, and we only need to test + # the two types. + if OverloadGroup.are_distinguishable_types( +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/idl_compiler.py b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/idl_compiler.py +index c5ee2bd8a3d..58315072480 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/idl_compiler.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/idl_compiler.py +@@ -149,8 +149,8 @@ class IdlCompiler(object): + for old_ir in old_irs: + new_ir = make_copy(old_ir) + self._ir_map.add(new_ir) +- new_ir.attributes = filter(not_disabled, new_ir.attributes) +- new_ir.operations = filter(not_disabled, new_ir.operations) ++ new_ir.attributes = list(filter(not_disabled, new_ir.attributes)) ++ new_ir.operations = list(filter(not_disabled, new_ir.operations)) + + def _record_defined_in_partial_and_mixin(self): + old_irs = self._ir_map.irs_of_kinds( +@@ -231,7 +231,7 @@ class IdlCompiler(object): + only_to_members_of_partial_or_mixin=False) + propagate_to_exposure(propagate) + +- map(process_member_like, ir.iter_all_members()) ++ list(map(process_member_like, ir.iter_all_members())) + + def process_member_like(ir): + propagate = functools.partial(propagate_extattr, ir=ir) +@@ -257,7 +257,7 @@ class IdlCompiler(object): + + self._ir_map.move_to_new_phase() + +- map(process_interface_like, old_irs) ++ list(map(process_interface_like, old_irs)) + + def _determine_blink_headers(self): + irs = self._ir_map.irs_of_kinds( +@@ -422,9 +422,9 @@ class IdlCompiler(object): + assert not new_interface.deriveds + derived_set = identifier_to_derived_set.get( + new_interface.identifier, set()) +- new_interface.deriveds = map( +- lambda id_: self._ref_to_idl_def_factory.create(id_), +- sorted(derived_set)) ++ new_interface.deriveds = list( ++ map(lambda id_: self._ref_to_idl_def_factory.create(id_), ++ sorted(derived_set))) + + def _supplement_missing_html_constructor_operation(self): + # Temporary mitigation of misuse of [HTMLConstructor] +@@ -553,7 +553,8 @@ class IdlCompiler(object): + self._ir_map.add(new_ir) + + for group in new_ir.iter_all_overload_groups(): +- exposures = map(lambda overload: overload.exposure, group) ++ exposures = list(map(lambda overload: overload.exposure, ++ group)) + + # [Exposed] + if any(not exposure.global_names_and_features +@@ -653,8 +654,8 @@ class IdlCompiler(object): + constructs = set() + for global_name in global_names: + constructs.update(exposed_map.get(global_name, [])) +- new_ir.exposed_constructs = map( +- self._ref_to_idl_def_factory.create, sorted(constructs)) ++ new_ir.exposed_constructs = list( ++ map(self._ref_to_idl_def_factory.create, sorted(constructs))) + + assert not new_ir.legacy_window_aliases + if new_ir.identifier != 'Window': +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/interface.py b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/interface.py +index 65d24e529d1..067ef2eb0b2 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/interface.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/interface.py +@@ -180,8 +180,9 @@ class Interface(UserDefinedType, WithExtendedAttributes, WithCodeGeneratorInfo, + self._constructor_groups = tuple([ + ConstructorGroup( + group_ir, +- filter(lambda x: x.identifier == group_ir.identifier, +- self._constructors), ++ list( ++ filter(lambda x: x.identifier == group_ir.identifier, ++ self._constructors)), + owner=self) for group_ir in ir.constructor_groups + ]) + assert len(self._constructor_groups) <= 1 +@@ -192,8 +193,9 @@ class Interface(UserDefinedType, WithExtendedAttributes, WithCodeGeneratorInfo, + self._named_constructor_groups = tuple([ + ConstructorGroup( + group_ir, +- filter(lambda x: x.identifier == group_ir.identifier, +- self._named_constructors), ++ list( ++ filter(lambda x: x.identifier == group_ir.identifier, ++ self._named_constructors)), + owner=self) for group_ir in ir.named_constructor_groups + ]) + self._operations = tuple([ +@@ -203,22 +205,23 @@ class Interface(UserDefinedType, WithExtendedAttributes, WithCodeGeneratorInfo, + self._operation_groups = tuple([ + OperationGroup( + group_ir, +- filter(lambda x: x.identifier == group_ir.identifier, +- self._operations), ++ list( ++ filter(lambda x: x.identifier == group_ir.identifier, ++ self._operations)), + owner=self) for group_ir in ir.operation_groups + ]) + self._exposed_constructs = tuple(ir.exposed_constructs) + self._legacy_window_aliases = tuple(ir.legacy_window_aliases) + self._indexed_and_named_properties = None +- indexed_and_named_property_operations = filter( +- lambda x: x.is_indexed_or_named_property_operation, +- self._operations) ++ indexed_and_named_property_operations = list( ++ filter(lambda x: x.is_indexed_or_named_property_operation, ++ self._operations)) + if indexed_and_named_property_operations: + self._indexed_and_named_properties = IndexedAndNamedProperties( + indexed_and_named_property_operations, owner=self) + self._stringifier = None +- stringifier_operation_irs = filter(lambda x: x.is_stringifier, +- ir.operations) ++ stringifier_operation_irs = list( ++ filter(lambda x: x.is_stringifier, ir.operations)) + if stringifier_operation_irs: + assert len(stringifier_operation_irs) == 1 + op_ir = make_copy(stringifier_operation_irs[0]) +@@ -231,8 +234,9 @@ class Interface(UserDefinedType, WithExtendedAttributes, WithCodeGeneratorInfo, + attribute = None + if operation.stringifier_attribute: + attr_id = operation.stringifier_attribute +- attributes = filter(lambda x: x.identifier == attr_id, +- self._attributes) ++ attributes = list( ++ filter(lambda x: x.identifier == attr_id, ++ self._attributes)) + assert len(attributes) == 1 + attribute = attributes[0] + self._stringifier = Stringifier(operation, attribute, owner=self) +@@ -578,8 +582,9 @@ class Iterable(WithDebugInfo): + self._operation_groups = tuple([ + OperationGroup( + group_ir, +- filter(lambda x: x.identifier == group_ir.identifier, +- self._operations), ++ list( ++ filter(lambda x: x.identifier == group_ir.identifier, ++ self._operations)), + owner=owner) for group_ir in ir.operation_groups + ]) + +@@ -666,8 +671,9 @@ class Maplike(WithDebugInfo): + self._operation_groups = tuple([ + OperationGroup( + group_ir, +- filter(lambda x: x.identifier == group_ir.identifier, +- self._operations), ++ list( ++ filter(lambda x: x.identifier == group_ir.identifier, ++ self._operations)), + owner=owner) for group_ir in ir.operation_groups + ]) + +@@ -755,8 +761,9 @@ class Setlike(WithDebugInfo): + self._operation_groups = tuple([ + OperationGroup( + group_ir, +- filter(lambda x: x.identifier == group_ir.identifier, +- self._operations), ++ list( ++ filter(lambda x: x.identifier == group_ir.identifier, ++ self._operations)), + owner=owner) for group_ir in ir.operation_groups + ]) + +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/ir_builder.py b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/ir_builder.py +index e9aeff4ab82..d80554d603e 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/ir_builder.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/ir_builder.py +@@ -2,6 +2,8 @@ + # Use of this source code is governed by a BSD-style license that can be + # found in the LICENSE file. + ++import sys ++ + from .argument import Argument + from .ast_group import AstGroup + from .attribute import Attribute +@@ -30,6 +32,11 @@ from .operation import Operation + from .typedef import Typedef + + ++# TODO: Remove this once Python2 is obsoleted. ++if sys.version_info.major != 2: ++ long = int ++ ++ + def load_and_register_idl_definitions(filepaths, register_ir, + create_ref_to_idl_def, idl_type_factory): + """ +@@ -160,7 +167,7 @@ class _IRBuilder(object): + child_nodes = list(node.GetChildren()) + extended_attributes = self._take_extended_attributes(child_nodes) + +- members = map(self._build_interface_member, child_nodes) ++ members = list(map(self._build_interface_member, child_nodes)) + attributes = [] + constants = [] + operations = [] +@@ -302,7 +309,7 @@ class _IRBuilder(object): + child_nodes = list(node.GetChildren()) + inherited = self._take_inheritance(child_nodes) + extended_attributes = self._take_extended_attributes(child_nodes) +- own_members = map(self._build_dictionary_member, child_nodes) ++ own_members = list(map(self._build_dictionary_member, child_nodes)) + + return Dictionary.IR( + identifier=Identifier(node.GetName()), +@@ -336,7 +343,7 @@ class _IRBuilder(object): + + child_nodes = list(node.GetChildren()) + extended_attributes = self._take_extended_attributes(child_nodes) +- members = map(self._build_interface_member, child_nodes) ++ members = list(map(self._build_interface_member, child_nodes)) + constants = [] + operations = [] + for member in members: +@@ -456,8 +463,8 @@ class _IRBuilder(object): + assert len(child_nodes) == 1 + child = child_nodes[0] + if child.GetClass() == 'Arguments': +- arguments = map(build_extattr_argument, +- child.GetChildren()) ++ arguments = list( ++ map(build_extattr_argument, child.GetChildren())) + elif child.GetClass() == 'Call': + assert len(child.GetChildren()) == 1 + grand_child = child.GetChildren()[0] +@@ -486,7 +493,9 @@ class _IRBuilder(object): + + assert node.GetClass() == 'ExtAttributes' + return ExtendedAttributes( +- filter(None, map(build_extended_attribute, node.GetChildren()))) ++ list( ++ filter(None, map(build_extended_attribute, ++ node.GetChildren())))) + + def _build_inheritance(self, node): + assert node.GetClass() == 'Inherit' +@@ -506,7 +515,7 @@ class _IRBuilder(object): + + def _build_iterable(self, node): + assert node.GetClass() == 'Iterable' +- types = map(self._build_type, node.GetChildren()) ++ types = list(map(self._build_type, node.GetChildren())) + assert len(types) == 1 or len(types) == 2 + if len(types) == 1: # value iterator + key_type, value_type = (None, types[0]) +@@ -584,7 +593,7 @@ class _IRBuilder(object): + def _build_maplike(self, node, interface_identifier): + assert node.GetClass() == 'Maplike' + assert isinstance(interface_identifier, Identifier) +- types = map(self._build_type, node.GetChildren()) ++ types = list(map(self._build_type, node.GetChildren())) + assert len(types) == 2 + key_type, value_type = types + is_readonly = bool(node.GetProperty('READONLY')) +@@ -676,7 +685,7 @@ class _IRBuilder(object): + def _build_setlike(self, node, interface_identifier): + assert node.GetClass() == 'Setlike' + assert isinstance(interface_identifier, Identifier) +- types = map(self._build_type, node.GetChildren()) ++ types = list(map(self._build_type, node.GetChildren())) + assert len(types) == 1 + value_type = types[0] + is_readonly = bool(node.GetProperty('READONLY')) +@@ -838,7 +847,7 @@ class _IRBuilder(object): + + def build_union_type(node, extended_attributes): + return self._idl_type_factory.union_type( +- member_types=map(self._build_type, node.GetChildren()), ++ member_types=list(map(self._build_type, node.GetChildren())), + is_optional=is_optional, + extended_attributes=extended_attributes, + debug_info=self._build_debug_info(node)) +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/make_copy.py b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/make_copy.py +index a7a2b11f3f0..2f6b61300ff 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/make_copy.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/make_copy.py +@@ -3,6 +3,13 @@ + # found in the LICENSE file. + + ++import sys ++ ++# TODO: Remove this once Python2 is obsoleted. ++if sys.version_info.major != 2: ++ long = int ++ basestring = str ++ + def make_copy(obj, memo=None): + """ + Creates a copy of the given object, which should be an IR or part of IR. +diff --git a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/namespace.py b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/namespace.py +index eeabef97cbe..bd7e98907f3 100644 +--- a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/namespace.py ++++ b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/namespace.py +@@ -107,11 +107,13 @@ class Namespace(UserDefinedType, WithExtendedAttributes, WithCodeGeneratorInfo, + for operation_ir in ir.operations + ]) + self._operation_groups = tuple([ +- OperationGroup( +- operation_group_ir, +- filter(lambda x: x.identifier == operation_group_ir.identifier, +- self._operations), +- owner=self) for operation_group_ir in ir.operation_groups ++ OperationGroup(operation_group_ir, ++ list( ++ filter( ++ lambda x: x.identifier == operation_group_ir ++ .identifier, self._operations)), ++ owner=self) ++ for operation_group_ir in ir.operation_groups + ]) + + @property +diff --git a/chromium/third_party/blink/renderer/bindings/templates/dictionary_v8.cc.tmpl b/chromium/third_party/blink/renderer/bindings/templates/dictionary_v8.cc.tmpl +index 0add9c45a38..dc910f6d227 100644 +--- a/chromium/third_party/blink/renderer/bindings/templates/dictionary_v8.cc.tmpl ++++ b/chromium/third_party/blink/renderer/bindings/templates/dictionary_v8.cc.tmpl +@@ -59,9 +59,9 @@ void {{v8_class}}::ToImpl(v8::Isolate* isolate, v8::Local v8_value, { + DCHECK(executionContext); + {% endif %}{# has_origin_trial_members #} + {% endif %}{# members #} +- {% for origin_trial_test, origin_trial_member_list in members | groupby('origin_trial_feature_name') %} ++ {% for origin_trial_test, origin_trial_member_list in members | stringifykeygroupby('origin_trial_feature_name') %} + {% filter origin_trial_enabled(origin_trial_test, "executionContext") %} +- {% for feature_name, member_list in origin_trial_member_list | groupby('runtime_enabled_feature_name') %} ++ {% for feature_name, member_list in origin_trial_member_list | stringifykeygroupby('runtime_enabled_feature_name') %} + {% filter runtime_enabled(feature_name) %} + {% for member in member_list %} + v8::Local {{member.v8_value}}; +@@ -147,9 +147,9 @@ bool toV8{{cpp_class}}(const {{cpp_class}}* impl, v8::Local dictiona + DCHECK(executionContext); + {% endif %}{# has_origin_trial_members #} + {% endif %}{# members #} +- {% for origin_trial_test, origin_trial_member_list in members | groupby('origin_trial_feature_name') %} ++ {% for origin_trial_test, origin_trial_member_list in members | stringifykeygroupby('origin_trial_feature_name') %} + {% filter origin_trial_enabled(origin_trial_test, "executionContext") %} +- {% for feature_name, member_list in origin_trial_member_list | groupby('runtime_enabled_feature_name') %} ++ {% for feature_name, member_list in origin_trial_member_list | stringifykeygroupby('runtime_enabled_feature_name') %} + {% filter runtime_enabled(feature_name) %} + {% for member in member_list %} + v8::Local {{member.v8_value}}; +diff --git a/chromium/third_party/blink/renderer/build/scripts/core/css/make_style_shorthands.py b/chromium/third_party/blink/renderer/build/scripts/core/css/make_style_shorthands.py +index 1799cd5a153..5f43ffabc26 100755 +--- a/chromium/third_party/blink/renderer/build/scripts/core/css/make_style_shorthands.py ++++ b/chromium/third_party/blink/renderer/build/scripts/core/css/make_style_shorthands.py +@@ -71,7 +71,7 @@ class Expansion(object): + def enabled_longhands(self): + include = lambda longhand: not longhand[ + 'runtime_flag'] or self.is_enabled(longhand['runtime_flag']) +- return filter(include, self._longhands) ++ return list(filter(include, self._longhands)) + + @property + def index(self): +@@ -87,8 +87,9 @@ class Expansion(object): + + def create_expansions(longhands): + flags = collect_runtime_flags(longhands) +- expansions = map(lambda mask: Expansion(longhands, flags, mask), +- range(1 << len(flags))) ++ expansions = list( ++ map(lambda mask: Expansion(longhands, flags, mask), ++ range(1 << len(flags)))) + assert len(expansions) > 0 + # We generate 2^N expansions for N flags, so enforce some limit. + assert len(flags) <= 4, 'Too many runtime flags for a single shorthand' +@@ -114,14 +115,14 @@ class StylePropertyShorthandWriter(json5_generator.Writer): + + self._longhand_dictionary = defaultdict(list) + for property_ in json5_properties.shorthands: +- property_['longhand_enum_keys'] = map(enum_key_for_css_property, +- property_['longhands']) +- property_['longhand_property_ids'] = map(id_for_css_property, +- property_['longhands']) +- +- longhands = map( +- lambda name: json5_properties.properties_by_name[name], +- property_['longhands']) ++ property_['longhand_enum_keys'] = list( ++ map(enum_key_for_css_property, property_['longhands'])) ++ property_['longhand_property_ids'] = list( ++ map(id_for_css_property, property_['longhands'])) ++ ++ longhands = list( ++ map(lambda name: json5_properties.properties_by_name[name], ++ property_['longhands'])) + property_['expansions'] = create_expansions(longhands) + for longhand_enum_key in property_['longhand_enum_keys']: + self._longhand_dictionary[longhand_enum_key].append(property_) +diff --git a/chromium/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_instances.py b/chromium/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_instances.py +index 75030ac577e..f72aadee17d 100755 +--- a/chromium/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_instances.py ++++ b/chromium/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_instances.py +@@ -42,8 +42,8 @@ class CSSPropertyInstancesWriter(json5_generator.Writer): + aliases = self._css_properties.aliases + + # Lists of PropertyClassData. +- self._property_classes_by_id = map(self.get_class, properties) +- self._alias_classes_by_id = map(self.get_class, aliases) ++ self._property_classes_by_id = list(map(self.get_class, properties)) ++ self._alias_classes_by_id = list(map(self.get_class, aliases)) + + # Sort by enum value. + self._property_classes_by_id.sort(key=lambda t: t.enum_value) +diff --git a/chromium/third_party/blink/renderer/build/scripts/gperf.py b/chromium/third_party/blink/renderer/build/scripts/gperf.py +index 5ee49056be4..db72660d471 100644 +--- a/chromium/third_party/blink/renderer/build/scripts/gperf.py ++++ b/chromium/third_party/blink/renderer/build/scripts/gperf.py +@@ -95,7 +95,7 @@ def main(): + + open(args.output_file, 'wb').write( + generate_gperf(gperf_path, +- open(infile).read(), gperf_args)) ++ open(infile).read(), gperf_args).encode('utf-8')) + + + if __name__ == '__main__': +diff --git a/chromium/third_party/blink/renderer/build/scripts/in_file.py b/chromium/third_party/blink/renderer/build/scripts/in_file.py +index 28adc050f1e..58113483e57 100644 +--- a/chromium/third_party/blink/renderer/build/scripts/in_file.py ++++ b/chromium/third_party/blink/renderer/build/scripts/in_file.py +@@ -66,7 +66,7 @@ class InFile(object): + self._defaults = defaults + self._valid_values = copy.deepcopy( + valid_values if valid_values else {}) +- self._parse(map(str.strip, lines)) ++ self._parse(list(map(str.strip, lines))) + + @classmethod + def load_from_files(self, file_paths, defaults, valid_values, +diff --git a/chromium/third_party/blink/renderer/build/scripts/in_generator.py b/chromium/third_party/blink/renderer/build/scripts/in_generator.py +index e46740a2e85..ab1981ad1e3 100644 +--- a/chromium/third_party/blink/renderer/build/scripts/in_generator.py ++++ b/chromium/third_party/blink/renderer/build/scripts/in_generator.py +@@ -32,10 +32,15 @@ import os + import os.path + import shlex + import shutil ++import sys + import optparse + + from in_file import InFile + ++# TODO: Remove this once Python2 is obsoleted. ++if sys.version_info.major != 2: ++ basestring = str ++ + + ######################################################### + # This is now deprecated - use json5_generator.py instead +diff --git a/chromium/third_party/blink/renderer/build/scripts/make_runtime_features.py b/chromium/third_party/blink/renderer/build/scripts/make_runtime_features.py +index cafe8d94a8e..6925a4fa580 100755 +--- a/chromium/third_party/blink/renderer/build/scripts/make_runtime_features.py ++++ b/chromium/third_party/blink/renderer/build/scripts/make_runtime_features.py +@@ -138,7 +138,7 @@ class RuntimeFeatureWriter(BaseRuntimeFeatureWriter): + except Exception: + # If trouble unpickling, overwrite + pass +- with open(os.path.abspath(file_name), 'w') as pickle_file: ++ with open(os.path.abspath(file_name), 'wb') as pickle_file: + pickle.dump(features_map, pickle_file) + + def _template_inputs(self): +diff --git a/chromium/third_party/blink/renderer/build/scripts/templates/element_factory.cc.tmpl b/chromium/third_party/blink/renderer/build/scripts/templates/element_factory.cc.tmpl +index dc3f44c5b10..3eefcf9f0ee 100644 +--- a/chromium/third_party/blink/renderer/build/scripts/templates/element_factory.cc.tmpl ++++ b/chromium/third_party/blink/renderer/build/scripts/templates/element_factory.cc.tmpl +@@ -26,7 +26,7 @@ using {{namespace}}FunctionMap = HashMapGetExecutionContext())) { +diff --git a/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.h.tmpl b/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.h.tmpl +index 1b5297d52dc..edecc81d9d4 100644 +--- a/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.h.tmpl ++++ b/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.h.tmpl +@@ -15,7 +15,7 @@ namespace blink { + class Document; + + // Type checking. +-{% for tag in tags|sort if not tag.multipleTagNames and not tag.noTypeHelpers %} ++{% for tag in tags|sort(attribute='name') if not tag.multipleTagNames and not tag.noTypeHelpers %} + class {{tag.interface}}; + template <> + inline bool IsElementOfType(const Node& node) { +diff --git a/chromium/third_party/blink/renderer/build/scripts/templates/macros.tmpl b/chromium/third_party/blink/renderer/build/scripts/templates/macros.tmpl +index 0244433af2e..dcdbb02a56c 100644 +--- a/chromium/third_party/blink/renderer/build/scripts/templates/macros.tmpl ++++ b/chromium/third_party/blink/renderer/build/scripts/templates/macros.tmpl +@@ -25,7 +25,7 @@ + + + {% macro trie_leaf(index, object, return_macro, lowercase_data) %} +-{% set name, value = object.items()[0] %} ++{% set name, value = (object.items()|list)[0] %} + {% if name|length %} + if ( + {%- for c in name -%} +@@ -45,7 +45,7 @@ return {{ return_macro(value) }}; + + + {% macro trie_switch(trie, index, return_macro, lowercase_data) %} +-{% if trie|length == 1 and trie.values()[0] is string %} ++{% if trie|length == 1 and (trie.values()|list)[0] is string %} + {{ trie_leaf(index, trie, return_macro, lowercase_data) -}} + {% else %} + {% if lowercase_data %} +diff --git a/chromium/third_party/blink/renderer/build/scripts/templates/make_qualified_names.h.tmpl b/chromium/third_party/blink/renderer/build/scripts/templates/make_qualified_names.h.tmpl +index cb05c6c4315..bd5566b03e7 100644 +--- a/chromium/third_party/blink/renderer/build/scripts/templates/make_qualified_names.h.tmpl ++++ b/chromium/third_party/blink/renderer/build/scripts/templates/make_qualified_names.h.tmpl +@@ -24,12 +24,12 @@ namespace {{cpp_namespace}} { + {{symbol_export}}extern const WTF::AtomicString& {{namespace_prefix}}NamespaceURI; + + // Tags +-{% for tag in tags|sort %} ++{% for tag in tags|sort(attribute='name') %} + {{symbol_export}}extern const blink::{{namespace}}QualifiedName& {{tag|symbol}}Tag; + {% endfor %} + + // Attributes +-{% for attr in attrs|sort %} ++{% for attr in attrs|sort(attribute='name') %} + {{symbol_export}}extern const blink::QualifiedName& {{attr|symbol}}Attr; + {% endfor %} + +diff --git a/chromium/third_party/dawn/generator/generator_lib.py b/chromium/third_party/dawn/generator/generator_lib.py +index 5e3734d7833..e3d46bd194f 100644 +--- a/chromium/third_party/dawn/generator/generator_lib.py ++++ b/chromium/third_party/dawn/generator/generator_lib.py +@@ -201,6 +201,10 @@ def _compute_python_dependencies(root_dir=None): + + paths = set() + for path in module_paths: ++ # Builtin/namespaced modules may return None for the file path. ++ if not path: ++ continue ++ + path = os.path.abspath(path) + + if not path.startswith(root_dir): +diff --git a/chromium/third_party/devtools-frontend/src/BUILD.gn b/chromium/third_party/devtools-frontend/src/BUILD.gn +index cd488e88b60..ea1dc3d9a79 100644 +--- a/chromium/third_party/devtools-frontend/src/BUILD.gn ++++ b/chromium/third_party/devtools-frontend/src/BUILD.gn +@@ -2,6 +2,8 @@ + # Use of this source code is governed by a BSD-style license that can be + # found in the LICENSE file. + ++import("//build/config/python.gni") ++ + import("//third_party/blink/public/public_features.gni") + import("./all_devtools_files.gni") + import("./all_devtools_modules.gni") +diff --git a/chromium/third_party/devtools-frontend/src/scripts/build/build_inspector_overlay.py b/chromium/third_party/devtools-frontend/src/scripts/build/build_inspector_overlay.py +index d6666e8b74f..0f7a661e632 100644 +--- a/chromium/third_party/devtools-frontend/src/scripts/build/build_inspector_overlay.py ++++ b/chromium/third_party/devtools-frontend/src/scripts/build/build_inspector_overlay.py +@@ -45,7 +45,8 @@ def rollup(input_path, output_path, filename, max_size, rollup_plugin): + ['--format', 'iife', '-n', 'InspectorOverlay'] + ['--input', target] + + ['--plugin', rollup_plugin], + stdout=subprocess.PIPE, +- stderr=subprocess.PIPE) ++ stderr=subprocess.PIPE, ++ text=True) + out, error = rollup_process.communicate() + if not out: + raise Exception("rollup failed: " + error) +diff --git a/chromium/third_party/devtools-frontend/src/scripts/build/build_release_applications.py b/chromium/third_party/devtools-frontend/src/scripts/build/build_release_applications.py +index fa8e73d34af..7d0b84b2171 100644 +--- a/chromium/third_party/devtools-frontend/src/scripts/build/build_release_applications.py ++++ b/chromium/third_party/devtools-frontend/src/scripts/build/build_release_applications.py +@@ -10,7 +10,7 @@ Builds applications in release mode: + and the application loader into a single script. + """ + +-from cStringIO import StringIO ++from io import StringIO + from os import path + from os.path import join + import copy +@@ -145,8 +145,7 @@ class ReleaseBuilder(object): + resource_content = read_file(path.join(self.application_dir, resource_name)) + if not (resource_name.endswith('.html') + or resource_name.endswith('md')): +- resource_content += resource_source_url(resource_name).encode( +- 'utf-8') ++ resource_content += resource_source_url(resource_name) + resource_content = resource_content.replace('\\', '\\\\') + resource_content = resource_content.replace('\n', '\\n') + resource_content = resource_content.replace('"', '\\"') +@@ -173,7 +172,9 @@ class ReleaseBuilder(object): + def _concatenate_application_script(self, output): + output.write('Root.allDescriptors.push(...%s);' % self._release_module_descriptors()) + if self.descriptors.extends: +- output.write('Root.applicationDescriptor.modules.push(...%s);' % json.dumps(self.descriptors.application.values())) ++ output.write( ++ 'Root.applicationDescriptor.modules.push(...%s);' % ++ json.dumps(list(self.descriptors.application.values()))) + else: + output.write('Root.applicationDescriptor = %s;' % self.descriptors.application_json()) + +diff --git a/chromium/third_party/devtools-frontend/src/scripts/build/generate_devtools_grd.py b/chromium/third_party/devtools-frontend/src/scripts/build/generate_devtools_grd.py +index be510c48d76..c6a59c90298 100644 +--- a/chromium/third_party/devtools-frontend/src/scripts/build/generate_devtools_grd.py ++++ b/chromium/third_party/devtools-frontend/src/scripts/build/generate_devtools_grd.py +@@ -123,7 +123,7 @@ def main(argv): + + try: + os.makedirs(path.join(output_directory, 'Images')) +- except OSError, e: ++ except OSError as e: + if e.errno != errno.EEXIST: + raise e + +@@ -147,7 +147,7 @@ def main(argv): + shutil.copy(path.join(dirname, filename), path.join(output_directory, 'Images')) + add_file_to_grd(doc, path.join('Images', filename)) + +- with open(parsed_args.output_filename, 'w') as output_file: ++ with open(parsed_args.output_filename, 'wb') as output_file: + output_file.write(doc.toxml(encoding='UTF-8')) + + +diff --git a/chromium/third_party/devtools-frontend/src/scripts/build/modular_build.py b/chromium/third_party/devtools-frontend/src/scripts/build/modular_build.py +index 0ba695d3810..bb1da2f9f8d 100644 +--- a/chromium/third_party/devtools-frontend/src/scripts/build/modular_build.py ++++ b/chromium/third_party/devtools-frontend/src/scripts/build/modular_build.py +@@ -7,6 +7,8 @@ + Utilities for the modular DevTools build. + """ + ++from __future__ import print_function ++ + import collections + from os import path + import os +@@ -40,7 +42,7 @@ def load_and_parse_json(filename): + try: + return json.loads(read_file(filename)) + except: +- print 'ERROR: Failed to parse %s' % filename ++ print('ERROR: Failed to parse %s' % filename) + raise + + class Descriptors: +@@ -57,7 +59,7 @@ class Descriptors: + + def application_json(self): + result = dict() +- result['modules'] = self.application.values() ++ result['modules'] = list(self.application.values()) + return json.dumps(result) + + def all_compiled_files(self): +diff --git a/chromium/third_party/jinja2/tests.py b/chromium/third_party/jinja2/tests.py +index 0adc3d4dbcb..b14f85ff148 100644 +--- a/chromium/third_party/jinja2/tests.py ++++ b/chromium/third_party/jinja2/tests.py +@@ -10,7 +10,7 @@ + """ + import operator + import re +-from collections import Mapping ++from collections.abc import Mapping + from jinja2.runtime import Undefined + from jinja2._compat import text_type, string_types, integer_types + import decimal +diff --git a/chromium/tools/metrics/ukm/gen_builders.py b/chromium/tools/metrics/ukm/gen_builders.py +index f9f61d90a56..44e46fae8cc 100755 +--- a/chromium/tools/metrics/ukm/gen_builders.py ++++ b/chromium/tools/metrics/ukm/gen_builders.py +@@ -48,9 +48,10 @@ def ReadFilteredData(path): + data = ukm_model.UKM_XML_TYPE.Parse(ukm_file.read()) + event_tag = ukm_model._EVENT_TYPE.tag + metric_tag = ukm_model._METRIC_TYPE.tag +- data[event_tag] = filter(ukm_model.IsNotObsolete, data[event_tag]) ++ data[event_tag] = list(filter(ukm_model.IsNotObsolete, data[event_tag])) + for event in data[event_tag]: +- event[metric_tag] = filter(ukm_model.IsNotObsolete, event[metric_tag]) ++ event[metric_tag] = list( ++ filter(ukm_model.IsNotObsolete, event[metric_tag])) + return data + + +diff --git a/chromium/ui/ozone/generate_constructor_list.py b/chromium/ui/ozone/generate_constructor_list.py +index 8d800636c97..04fa18e93df 100755 +--- a/chromium/ui/ozone/generate_constructor_list.py ++++ b/chromium/ui/ozone/generate_constructor_list.py +@@ -45,12 +45,15 @@ Example Output: ./ui/ozone/generate_constructor_list.py \ + } // namespace ui + """ + ++try: ++ from StringIO import StringIO # for Python 2 ++except ImportError: ++ from io import StringIO # for Python 3 + import optparse + import os + import collections + import re + import sys +-import string + + + def GetTypedefName(typename): +@@ -68,7 +71,7 @@ def GetConstructorName(typename, platform): + This is just "Create" + typename + platform. + """ + +- return 'Create' + typename + string.capitalize(platform) ++ return 'Create' + typename + platform.capitalize() + + + def GenerateConstructorList(out, namespace, export, typenames, platforms, +@@ -163,12 +166,14 @@ def main(argv): + sys.exit(1) + + # Write to standard output or file specified by --output_cc. +- out_cc = sys.stdout ++ out_cc = getattr(sys.stdout, 'buffer', sys.stdout) + if options.output_cc: + out_cc = open(options.output_cc, 'wb') + +- GenerateConstructorList(out_cc, options.namespace, options.export, ++ out_cc_str = StringIO() ++ GenerateConstructorList(out_cc_str, options.namespace, options.export, + typenames, platforms, includes, usings) ++ out_cc.write(out_cc_str.getvalue().encode('utf-8')) + + if options.output_cc: + out_cc.close() +diff --git a/chromium/ui/ozone/generate_ozone_platform_list.py b/chromium/ui/ozone/generate_ozone_platform_list.py +index d47c398259b..2702b68b9bd 100755 +--- a/chromium/ui/ozone/generate_ozone_platform_list.py ++++ b/chromium/ui/ozone/generate_ozone_platform_list.py +@@ -49,12 +49,15 @@ Example Output: ./generate_ozone_platform_list.py --default wayland dri wayland + + """ + ++try: ++ from StringIO import StringIO # for Python 2 ++except ImportError: ++ from io import StringIO # for Python 3 + import optparse + import os + import collections + import re + import sys +-import string + + + def GetConstantName(name): +@@ -63,7 +66,7 @@ def GetConstantName(name): + We just capitalize the platform name and prepend "CreateOzonePlatform". + """ + +- return 'kPlatform' + string.capitalize(name) ++ return 'kPlatform' + name.capitalize() + + + def GeneratePlatformListText(out, platforms): +@@ -149,9 +152,9 @@ def main(argv): + platforms.insert(0, options.default) + + # Write to standard output or file specified by --output_{cc,h}. +- out_cc = sys.stdout +- out_h = sys.stdout +- out_txt = sys.stdout ++ out_cc = getattr(sys.stdout, 'buffer', sys.stdout) ++ out_h = getattr(sys.stdout, 'buffer', sys.stdout) ++ out_txt = getattr(sys.stdout, 'buffer', sys.stdout) + if options.output_cc: + out_cc = open(options.output_cc, 'wb') + if options.output_h: +@@ -159,9 +162,16 @@ def main(argv): + if options.output_txt: + out_txt = open(options.output_txt, 'wb') + +- GeneratePlatformListText(out_txt, platforms) +- GeneratePlatformListHeader(out_h, platforms) +- GeneratePlatformListSource(out_cc, platforms) ++ out_txt_str = StringIO() ++ out_h_str = StringIO() ++ out_cc_str = StringIO() ++ ++ GeneratePlatformListText(out_txt_str, platforms) ++ out_txt.write(out_txt_str.getvalue().encode('utf-8')) ++ GeneratePlatformListHeader(out_h_str, platforms) ++ out_h.write(out_h_str.getvalue().encode('utf-8')) ++ GeneratePlatformListSource(out_cc_str, platforms) ++ out_cc.write(out_cc_str.getvalue().encode('utf-8')) + + if options.output_cc: + out_cc.close() +-- +2.25.1 + diff --git a/package/qt5/qt5webengine-chromium/0002-Don-t-rebase-sysroot-path.patch b/package/qt5/qt5webengine-chromium/0002-Don-t-rebase-sysroot-path.patch new file mode 100644 index 00000000..c39f008a --- /dev/null +++ b/package/qt5/qt5webengine-chromium/0002-Don-t-rebase-sysroot-path.patch @@ -0,0 +1,32 @@ +From bfc520671693587a0b81842018326da35aa97f80 Mon Sep 17 00:00:00 2001 +From: James Hilliard +Date: Thu, 3 Feb 2022 20:41:08 -0700 +Subject: [PATCH] Don't rebase sysroot path + +Just use the actual sysroot as rebase_path will generate an invalid +sysroot path. + +Fixes: +/home/buildroot/buildroot/output/per-package/qt5webengine/host/opt/ext-toolchain/bin/../lib/gcc/aarch64-buildroot-linux-gnu/10.3.0/../../../../aarch64-buildroot-linux-gnu/bin/ld: cannot find crti.o: No such file or directory + +Signed-off-by: James Hilliard +--- + chromium/build/config/posix/BUILD.gn | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/chromium/build/config/posix/BUILD.gn b/chromium/build/config/posix/BUILD.gn +index e61554c5656..dc957225869 100644 +--- a/chromium/build/config/posix/BUILD.gn ++++ b/chromium/build/config/posix/BUILD.gn +@@ -27,7 +27,7 @@ config("runtime_library") { + + if (!is_apple && sysroot != "") { + # Pass the sysroot to all C compiler variants, the assembler, and linker. +- sysroot_flags = [ "--sysroot=" + rebase_path(sysroot, root_build_dir) ] ++ sysroot_flags = [ "--sysroot=" + sysroot ] + if (is_linux || is_chromeos) { + # This is here so that all files get recompiled after a sysroot roll and + # when turning the sysroot on or off. (defines are passed via the command +-- +2.25.1 + diff --git a/package/qt5/qt5webengine-chromium/0003-Remove-unused-python-import.patch b/package/qt5/qt5webengine-chromium/0003-Remove-unused-python-import.patch new file mode 100644 index 00000000..df9e9cfe --- /dev/null +++ b/package/qt5/qt5webengine-chromium/0003-Remove-unused-python-import.patch @@ -0,0 +1,47 @@ +From f684c6fb3532138e3408fa17d4b6610162647365 Mon Sep 17 00:00:00 2001 +From: Bruno Pitrus +Date: Tue, 25 Jul 2023 18:34:09 +0000 +Subject: [PATCH] Remove unused python import + +The `imp` module has been removed in Python 3.12 causing these scripts to error out. + +Change-Id: Ic7c038d21b86052bdda13015f80934db52a2143e +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4714859 +Auto-Submit: Bruno Pitrus +Reviewed-by: Ken Rockot +Commit-Queue: Ken Rockot +Cr-Commit-Position: refs/heads/main@{#1174966} +Upstream: https://github.com/chromium/chromium/commit/f5f6e361d037c31630661186e7bd7b31d2784cb8 +Signed-off-by: Thomas Petazzoni +--- + chromium/mojo/public/tools/mojom/mojom/fileutil.py | 1 - + chromium/mojo/public/tools/mojom/mojom/parse/lexer.py | 1 - + 2 files changed, 2 deletions(-) + +diff --git a/chromium/mojo/public/tools/mojom/mojom/fileutil.py b/chromium/mojo/public/tools/mojom/mojom/fileutil.py +index bf626f54798..e1c823daa3c 100644 +--- a/chromium/mojo/public/tools/mojom/mojom/fileutil.py ++++ b/chromium/mojo/public/tools/mojom/mojom/fileutil.py +@@ -3,7 +3,6 @@ + # found in the LICENSE file. + + import errno +-import imp + import os.path + import sys + +diff --git a/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py b/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py +index 3e084bbf22b..1e8b49f245f 100644 +--- a/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py ++++ b/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py +@@ -2,7 +2,6 @@ + # Use of this source code is governed by a BSD-style license that can be + # found in the LICENSE file. + +-import imp + import os.path + import sys + +-- +2.25.1 + diff --git a/package/qt5/qt5webengine-chromium/0004-Migrate-presubmit-to-python3.patch b/package/qt5/qt5webengine-chromium/0004-Migrate-presubmit-to-python3.patch new file mode 100644 index 00000000..9314e30c --- /dev/null +++ b/package/qt5/qt5webengine-chromium/0004-Migrate-presubmit-to-python3.patch @@ -0,0 +1,132 @@ +From 71d96b9be632b5231b28277d9e72f6a6c5308e24 Mon Sep 17 00:00:00 2001 +From: Dan Harrington +Date: Fri, 4 Jun 2021 16:46:25 +0000 +Subject: [PATCH] Migrate presubmit to python3 + +Fixed a couple warnings I found when running the unit +tests in python3. + +Bug: 1212110 +Change-Id: I3d1b5859b5c517ad5eea30cb816fad0389715f73 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2934203 +Reviewed-by: Jesse Doherty +Commit-Queue: Dan H +Cr-Commit-Position: refs/heads/master@{#889331} +Upstream: https://github.com/chromium/chromium/commit/f90f49df8db04dcb72f7ce0c4d0b2fe329bab00c +Signed-off-by: Thomas Petazzoni +--- + chromium/tools/metrics/ukm/PRESUBMIT.py | 2 + + .../tools/metrics/ukm/gen_builders_test.py | 4 +- + chromium/tools/metrics/ukm/ukm_model.py | 56 +++++++++++-------- + 3 files changed, 37 insertions(+), 25 deletions(-) + +diff --git a/chromium/tools/metrics/ukm/PRESUBMIT.py b/chromium/tools/metrics/ukm/PRESUBMIT.py +index 28fab1cffb7..99b13be681b 100644 +--- a/chromium/tools/metrics/ukm/PRESUBMIT.py ++++ b/chromium/tools/metrics/ukm/PRESUBMIT.py +@@ -8,6 +8,8 @@ See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts + for more details on the presubmit API built into gcl. + """ + ++USE_PYTHON3 = True ++ + UKM_XML = 'ukm.xml' + + +diff --git a/chromium/tools/metrics/ukm/gen_builders_test.py b/chromium/tools/metrics/ukm/gen_builders_test.py +index 1ca15e52c9a..0015320a524 100755 +--- a/chromium/tools/metrics/ukm/gen_builders_test.py ++++ b/chromium/tools/metrics/ukm/gen_builders_test.py +@@ -25,8 +25,8 @@ class GenBuildersTest(unittest.TestCase): + + def testGenerateCode(self): + relpath = '.' +- data = ukm_model.UKM_XML_TYPE.Parse( +- open('../../tools/metrics/ukm/ukm.xml').read()) ++ with open('../../tools/metrics/ukm/ukm.xml') as f: ++ data = ukm_model.UKM_XML_TYPE.Parse(f.read()) + event = data[ukm_model._EVENT_TYPE.tag][0] + metric = event[ukm_model._METRIC_TYPE.tag][0] + self.assertIsNotNone(event) +diff --git a/chromium/tools/metrics/ukm/ukm_model.py b/chromium/tools/metrics/ukm/ukm_model.py +index ec24dd57360..b36899db189 100644 +--- a/chromium/tools/metrics/ukm/ukm_model.py ++++ b/chromium/tools/metrics/ukm/ukm_model.py +@@ -39,15 +39,16 @@ _INDEX_TYPE = models.ObjectNodeType( + ], + single_line=True) + +-_STATISTICS_TYPE = models.ObjectNodeType( ++_STATISTICS_TYPE = models.ObjectNodeType( + 'statistics', + attributes=[ +- ('export', str, r'^(?i)(|true|false)$'), ++ ('export', str, r'(?i)^(|true|false)$'), + ], + children=[ + models.ChildType(_QUANTILES_TYPE.tag, _QUANTILES_TYPE, multiple=False), +- models.ChildType( +- _ENUMERATION_TYPE.tag, _ENUMERATION_TYPE, multiple=False), ++ models.ChildType(_ENUMERATION_TYPE.tag, ++ _ENUMERATION_TYPE, ++ multiple=False), + ]) + + _HISTORY_TYPE = models.ObjectNodeType( +@@ -90,25 +91,34 @@ _METRIC_TYPE = models.ObjectNodeType( + _AGGREGATION_TYPE.tag, _AGGREGATION_TYPE, multiple=True), + ]) + +-_EVENT_TYPE = models.ObjectNodeType( +- 'event', +- attributes=[ +- ('name', str, r'^[A-Za-z0-9.]+$'), +- ('singular', str, r'^(?i)(|true|false)$'), +- ], +- alphabetization=[ +- (_OBSOLETE_TYPE.tag, _KEEP_ORDER), +- (_OWNER_TYPE.tag, _KEEP_ORDER), +- (_SUMMARY_TYPE.tag, _KEEP_ORDER), +- (_METRIC_TYPE.tag, _LOWERCASE_FN('name')), +- ], +- extra_newlines=(1, 1, 1), +- children=[ +- models.ChildType(_OBSOLETE_TYPE.tag, _OBSOLETE_TYPE, multiple=False), +- models.ChildType(_OWNER_TYPE.tag, _OWNER_TYPE, multiple=True), +- models.ChildType(_SUMMARY_TYPE.tag, _SUMMARY_TYPE, multiple=False), +- models.ChildType(_METRIC_TYPE.tag, _METRIC_TYPE, multiple=True), +- ]) ++_EVENT_TYPE = models.ObjectNodeType('event', ++ attributes=[ ++ ('name', str, r'^[A-Za-z0-9.]+$'), ++ ('singular', str, ++ r'(?i)^(|true|false)$'), ++ ], ++ alphabetization=[ ++ (_OBSOLETE_TYPE.tag, _KEEP_ORDER), ++ (_OWNER_TYPE.tag, _KEEP_ORDER), ++ (_SUMMARY_TYPE.tag, _KEEP_ORDER), ++ (_METRIC_TYPE.tag, ++ _LOWERCASE_FN('name')), ++ ], ++ extra_newlines=(1, 1, 1), ++ children=[ ++ models.ChildType(_OBSOLETE_TYPE.tag, ++ _OBSOLETE_TYPE, ++ multiple=False), ++ models.ChildType(_OWNER_TYPE.tag, ++ _OWNER_TYPE, ++ multiple=True), ++ models.ChildType(_SUMMARY_TYPE.tag, ++ _SUMMARY_TYPE, ++ multiple=False), ++ models.ChildType(_METRIC_TYPE.tag, ++ _METRIC_TYPE, ++ multiple=True), ++ ]) + + _UKM_CONFIGURATION_TYPE = models.ObjectNodeType( + 'ukm-configuration', +-- +2.25.1 + diff --git a/package/qt5/qt5webengine-chromium/0005-tools-grit-grit-util.py-fix-Python-3.12-build-issue.patch b/package/qt5/qt5webengine-chromium/0005-tools-grit-grit-util.py-fix-Python-3.12-build-issue.patch new file mode 100644 index 00000000..f08f6467 --- /dev/null +++ b/package/qt5/qt5webengine-chromium/0005-tools-grit-grit-util.py-fix-Python-3.12-build-issue.patch @@ -0,0 +1,70 @@ +From 5201c34a4c0f2fed56f6cff3acada3da2405a363 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 13 Jul 2024 16:02:38 +0200 +Subject: [PATCH] tools/grit/grit/util.py: fix Python 3.12 build issue + +This commit is an extract from upstream commit +https://github.com/chromium/chromium/commit/b3abd7e4c9467415da3a5e13d9500d2ab3abc2ec +which is too large to be backported. + +It fixes: + +Traceback (most recent call last): + File "/home/thomas/buildroot/buildroot/output/build/qt5webengine-5.15.14/src/core/release/../../3rdparty/chromium/tools/grit/grit.py", line 14, in + import grit.grit_runner + File "/home/thomas/buildroot/buildroot/output/build/qt5webengine-5.15.14/src/3rdparty/chromium/tools/grit/grit/grit_runner.py", line 19, in + from grit import util + File "/home/thomas/buildroot/buildroot/output/build/qt5webengine-5.15.14/src/3rdparty/chromium/tools/grit/grit/util.py", line 21, in + from six.moves import html_entities as entities +ModuleNotFoundError: No module named 'six.moves' + +Upstream: https://github.com/chromium/chromium/commit/b3abd7e4c9467415da3a5e13d9500d2ab3abc2ec (part of) +Signed-off-by: Thomas Petazzoni +--- + chromium/tools/grit/grit/util.py | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +diff --git a/chromium/tools/grit/grit/util.py b/chromium/tools/grit/grit/util.py +index 528d766ad6b..77db06adffb 100644 +--- a/chromium/tools/grit/grit/util.py ++++ b/chromium/tools/grit/grit/util.py +@@ -8,6 +8,7 @@ + from __future__ import print_function + + import codecs ++import html.entities + import io + import os + import re +@@ -17,8 +18,6 @@ import tempfile + from xml.sax import saxutils + + import six +-from six import StringIO +-from six.moves import html_entities as entities + + from grit import lazy_re + +@@ -226,7 +225,7 @@ def WrapOutputStream(stream, encoding = 'utf-8'): + def ChangeStdoutEncoding(encoding = 'utf-8'): + '''Changes STDOUT to print characters using the specified encoding.''' + # If we're unittesting, don't reconfigure. +- if isinstance(sys.stdout, StringIO): ++ if isinstance(sys.stdout, io.StringIO): + return + + if sys.version_info.major < 3: +@@ -280,8 +279,8 @@ def UnescapeHtml(text, replace_nbsp=True): + if name == 'nbsp' and not replace_nbsp: + return match.group() # Don't replace   + assert name != None +- if name in entities.name2codepoint: +- return six.unichr(entities.name2codepoint[name]) ++ if name in html.entities.name2codepoint: ++ return six.unichr(html.entities.name2codepoint[name]) + else: + return match.group() # Unknown HTML character entity - don't replace + +-- +2.25.1 + diff --git a/package/qt5/qt5webengine-chromium/0006-Fix-build-in-Python-3.11-invalid-mode-rU.patch b/package/qt5/qt5webengine-chromium/0006-Fix-build-in-Python-3.11-invalid-mode-rU.patch new file mode 100644 index 00000000..61d45b18 --- /dev/null +++ b/package/qt5/qt5webengine-chromium/0006-Fix-build-in-Python-3.11-invalid-mode-rU.patch @@ -0,0 +1,55 @@ +From fad0069037ec39d853e215fcddd3d130d9781ffe Mon Sep 17 00:00:00 2001 +From: Joanmarie Diggs +Date: Tue, 30 Aug 2022 06:00:13 +0000 +Subject: [PATCH] Fix build in Python 3.11 (invalid mode: 'rU') + +In Python 3.11, 'U' ("universal newline") is no longer accepted in +the file mode, having been deprecated in Python 3.3. The "universal +newline" is used by default when a file is open in text mode. + +This commit removes the 'U' from the two (non-third-party) places +it is used. + +Bug: 1357549 +Change-Id: I3305707858d8ba7a9f518656a9b97dc1702bbe94 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3859535 +Reviewed-by: Mike Pinkerton +Commit-Queue: Joanmarie Diggs +Reviewed-by: Nico Weber +Cr-Commit-Position: refs/heads/main@{#1040794} +Upstream: https://github.com/chromium/chromium/commit/0991fc6acd3c85472000f2055af542515c3c6297 +Signed-off-by: Thomas Petazzoni +--- + chromium/PRESUBMIT_test_mocks.py | 2 +- + chromium/tools/grit/grit/util.py | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/chromium/PRESUBMIT_test_mocks.py b/chromium/PRESUBMIT_test_mocks.py +index 0a9e5a54ecd..6b0eca1e1c2 100644 +--- a/chromium/PRESUBMIT_test_mocks.py ++++ b/chromium/PRESUBMIT_test_mocks.py +@@ -119,7 +119,7 @@ class MockInputApi(object): + def PresubmitLocalPath(self): + return self.presubmit_local_path + +- def ReadFile(self, filename, mode='rU'): ++ def ReadFile(self, filename, mode='r'): + if hasattr(filename, 'AbsoluteLocalPath'): + filename = filename.AbsoluteLocalPath() + for file_ in self.files: +diff --git a/chromium/tools/grit/grit/util.py b/chromium/tools/grit/grit/util.py +index 77db06adffb..27f9aba5aa3 100644 +--- a/chromium/tools/grit/grit/util.py ++++ b/chromium/tools/grit/grit/util.py +@@ -210,7 +210,7 @@ def ReadFile(filename, encoding): + mode = 'rb' + encoding = None + else: +- mode = 'rU' ++ mode = 'r' + + with io.open(abs(filename), mode, encoding=encoding) as f: + return f.read() +-- +2.25.1 + diff --git a/package/qt5/qt5webengine-chromium/0007-Replace-imp.load_source-with-importlib-equivalent.patch b/package/qt5/qt5webengine-chromium/0007-Replace-imp.load_source-with-importlib-equivalent.patch new file mode 100644 index 00000000..d001a887 --- /dev/null +++ b/package/qt5/qt5webengine-chromium/0007-Replace-imp.load_source-with-importlib-equivalent.patch @@ -0,0 +1,55 @@ +From d08221f81f35f2755088c2a174cfdc230eb1dcc4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jacobo=20Aragunde=20P=C3=A9rez?= +Date: Wed, 25 Oct 2023 06:20:54 +0000 +Subject: [PATCH] Replace imp.load_source with importlib equivalent. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The imp module has been deprecated for years and the function +load_source was even removed from the documentation long ago. + +It will be removed in Python 3.12, which will be part of Fedora +version 39, due in late October 2023. + +Bug: 1487454 +Change-Id: If06a2f139225b62c7bdc70c3eaef6e5acb8972d2 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4894238 +Reviewed-by: Mustafa Emre Acer +Commit-Queue: Jacobo Aragunde Pérez +Cr-Commit-Position: refs/heads/main@{#1214660} +Upstream: https://github.com/chromium/chromium/commit/9e0c89a3b5638ba2b9b107fea34a01c774aa7805 +Signed-off-by: Thomas Petazzoni +--- + .../resources/protobufs/binary_proto_generator.py | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/chromium/components/resources/protobufs/binary_proto_generator.py b/chromium/components/resources/protobufs/binary_proto_generator.py +index 16365515f26..c8b11f1071a 100755 +--- a/chromium/components/resources/protobufs/binary_proto_generator.py ++++ b/chromium/components/resources/protobufs/binary_proto_generator.py +@@ -9,7 +9,7 @@ + """ + from __future__ import print_function + import abc +-import imp ++from importlib import util as imp_util + import optparse + import os + import re +@@ -68,7 +68,11 @@ class GoogleProtobufModuleImporter: + raise ImportError(fullname) + + filepath = self._fullname_to_filepath(fullname) +- return imp.load_source(fullname, filepath) ++ spec = imp_util.spec_from_file_location(fullname, filepath) ++ loaded = imp_util.module_from_spec(spec) ++ spec.loader.exec_module(loaded) ++ ++ return loaded + + class BinaryProtoGenerator: + +-- +2.25.1 + diff --git a/package/qt5/qt5webengine-chromium/0008-protobuf-python-google-protobuf-internal-python_mess.patch b/package/qt5/qt5webengine-chromium/0008-protobuf-python-google-protobuf-internal-python_mess.patch new file mode 100644 index 00000000..810e7147 --- /dev/null +++ b/package/qt5/qt5webengine-chromium/0008-protobuf-python-google-protobuf-internal-python_mess.patch @@ -0,0 +1,51 @@ +From f01ebcd09a0b43589671fc8573bd0c00781c618e Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 13 Jul 2024 17:34:13 +0200 +Subject: [PATCH] protobuf/python/google/protobuf/internal/python_message.py: + fix Python 3.12 compatibility + +This is a part of the larger commit +29527fb6f77bdf5f2393f2327fec590c6deab27f from Chromium, which updates +their internal copy of protobuf to 3.20.0. + +Upstream: https://github.com/chromium/chromium/commit/29527fb6f77bdf5f2393f2327fec590c6deab27f (part of) +Signed-off-by: Thomas Petazzoni +--- + .../python/google/protobuf/internal/python_message.py | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +diff --git a/chromium/third_party/protobuf/python/google/protobuf/internal/python_message.py b/chromium/third_party/protobuf/python/google/protobuf/internal/python_message.py +index 803ae848493..a1954ce88c9 100755 +--- a/chromium/third_party/protobuf/python/google/protobuf/internal/python_message.py ++++ b/chromium/third_party/protobuf/python/google/protobuf/internal/python_message.py +@@ -55,9 +55,6 @@ import struct + import sys + import weakref + +-import six +-from six.moves import range +- + # We use "as" to avoid name collisions with variables. + from google.protobuf.internal import api_implementation + from google.protobuf.internal import containers +@@ -467,7 +464,7 @@ def _ReraiseTypeErrorWithFieldName(message_name, field_name): + exc = TypeError('%s for field %s.%s' % (str(exc), message_name, field_name)) + + # re-raise possibly-amended exception with original traceback: +- six.reraise(type(exc), exc, sys.exc_info()[2]) ++ raise exc.with_traceback(sys.exc_info()[2]) + + + def _AddInitMethod(message_descriptor, cls): +@@ -480,7 +477,7 @@ def _AddInitMethod(message_descriptor, cls): + enum_type with the same name. If the value is not a string, it's + returned as-is. (No conversion or bounds-checking is done.) + """ +- if isinstance(value, six.string_types): ++ if isinstance(value, str): + try: + return enum_type.values_by_name[value].number + except KeyError: +-- +2.25.1 + diff --git a/package/qt5/qt5webengine-chromium/0009-chromium-gpu-command_buffer-service-program_manager..patch b/package/qt5/qt5webengine-chromium/0009-chromium-gpu-command_buffer-service-program_manager..patch new file mode 100644 index 00000000..4dc8514d --- /dev/null +++ b/package/qt5/qt5webengine-chromium/0009-chromium-gpu-command_buffer-service-program_manager..patch @@ -0,0 +1,38 @@ +From dbb4ea2d1f410df29eee5a0a06bfb8318b0781dc Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 13 Jul 2024 18:17:25 +0200 +Subject: [PATCH] chromium/gpu/command_buffer/service/program_manager.cc: + StringPiece::as_string() is gone +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fix: + +chromium/gpu/command_buffer/service/program_manager.cc:623:25: error: ‘using re2::StringPiece = class absl::string_view’ {aka ‘class absl::string_view’} has no member named ‘as_string’ + +By taking a small subset of upstream commit +https://github.com/chromium/chromium/commit/8d7cdb7b45abb2725200cde990d795024b405e79; + +Upstream: https://github.com/chromium/chromium/commit/8d7cdb7b45abb2725200cde990d795024b405e79 +Signed-off-by: Thomas Petazzoni +--- + chromium/gpu/command_buffer/service/program_manager.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/chromium/gpu/command_buffer/service/program_manager.cc b/chromium/gpu/command_buffer/service/program_manager.cc +index 021530c7e39..5fb3e2b768e 100644 +--- a/chromium/gpu/command_buffer/service/program_manager.cc ++++ b/chromium/gpu/command_buffer/service/program_manager.cc +@@ -620,7 +620,7 @@ std::string Program::ProcessLogInfo(const std::string& log) { + output += hashed_name; + } + +- return output + input.as_string(); ++ return output + std::string(input); + } + + void Program::UpdateLogInfo() { +-- +2.25.1 + diff --git a/package/qt5/qt5webengine-chromium/0010-Fix-building-with-system-libxml2.patch b/package/qt5/qt5webengine-chromium/0010-Fix-building-with-system-libxml2.patch new file mode 100644 index 00000000..4a4dade2 --- /dev/null +++ b/package/qt5/qt5webengine-chromium/0010-Fix-building-with-system-libxml2.patch @@ -0,0 +1,57 @@ +From 67ceca4b097a2d3de28020c9461641d9670009cc Mon Sep 17 00:00:00 2001 +From: Martin Negyokru +Date: Thu, 7 Dec 2023 15:37:53 +0100 +Subject: [PATCH] Fix building with system libxml2 + +Libxml2 2.12.0 has changed the const-ness of the +xmlError pointers, which results in a build error. + +Change-Id: Id86fcfbfe004f89109808b9bdb11c01133553884 +Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/523633 +Reviewed-by: Allan Sandfeld Jensen +(cherry picked from commit 159dff274a7f32f9b53711df6a5b6fbae8c64b4a) +Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/525714 +Reviewed-by: Qt Cherry-pick Bot +Upstream: https://github.com/qt/qtwebengine-chromium/commit/c98d28f2f0f23721 +Signed-off-by: Thomas Petazzoni +--- + .../third_party/blink/renderer/core/xml/xslt_processor.h | 5 +++++ + .../blink/renderer/core/xml/xslt_processor_libxslt.cc | 4 ++++ + 2 files changed, 9 insertions(+) + +diff --git a/chromium/third_party/blink/renderer/core/xml/xslt_processor.h b/chromium/third_party/blink/renderer/core/xml/xslt_processor.h +index e501cf17c37..e4550ec5009 100644 +--- a/chromium/third_party/blink/renderer/core/xml/xslt_processor.h ++++ b/chromium/third_party/blink/renderer/core/xml/xslt_processor.h +@@ -79,7 +79,12 @@ class XSLTProcessor final : public ScriptWrappable { + + void reset(); + ++#if LIBXML_VERSION >= 21200 ++ static void ParseErrorFunc(void* user_data, const xmlError*); ++#else + static void ParseErrorFunc(void* user_data, xmlError*); ++#endif ++ + static void GenericErrorFunc(void* user_data, const char* msg, ...); + + // Only for libXSLT callbacks +diff --git a/chromium/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc b/chromium/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc +index b3ce345f320..2174d1df1da 100644 +--- a/chromium/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc ++++ b/chromium/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc +@@ -60,7 +60,11 @@ void XSLTProcessor::GenericErrorFunc(void*, const char*, ...) { + // It would be nice to do something with this error message. + } + ++#if LIBXML_VERSION >= 21200 ++void XSLTProcessor::ParseErrorFunc(void* user_data, const xmlError* error) { ++#else + void XSLTProcessor::ParseErrorFunc(void* user_data, xmlError* error) { ++#endif + FrameConsole* console = static_cast(user_data); + if (!console) + return; +-- +2.25.1 + diff --git a/package/qt5/qt5webengine-chromium/Config.in b/package/qt5/qt5webengine-chromium/Config.in new file mode 100644 index 00000000..8ba9ad71 --- /dev/null +++ b/package/qt5/qt5webengine-chromium/Config.in @@ -0,0 +1,5 @@ +# Not user-selectable, it is only needed to be copied +# into the qt5webengine source tree. +config BR2_PACKAGE_QT5WEBENGINE_CHROMIUM + bool + select BR2_PACKAGE_QT5WEBENGINE_CHROMIUM_CATAPULT diff --git a/package/qt5/qt5webengine-chromium/chromium-latest.inc b/package/qt5/qt5webengine-chromium/chromium-latest.inc new file mode 100644 index 00000000..ced431c9 --- /dev/null +++ b/package/qt5/qt5webengine-chromium/chromium-latest.inc @@ -0,0 +1,1257 @@ +# (echo "QT5WEBENGINE_CHROMIUM_LICENSE_FILES = \\" ; \ +# find * -type f \ +# \( -iname 'license*' -o -iname 'copying*' -o -name 'APPLE_LICENSE' -o -name 'Copyright' -o -path '*/license_texts/*' -o -path '*/licenses/*' \) \ +# -a -not -name '*.cc' -not -name '*.py' -not -name '*.pyc' -not -name '*.h' -not -name 'LICENSE.sha1' -not -name 'licensecheck.pl*' -not -name 'license.after' -not -name 'license.before' -not -path 'chromium/third_party/catapult/*' | \ +# sort | sed 's%^\(.*\)$%\t\1 \\%') > package/qt5/qt5webengine-chromium/chromium-latest.inc +QT5WEBENGINE_CHROMIUM_LICENSE_FILES = \ + chromium/base/third_party/cityhash/COPYING \ + chromium/base/third_party/double_conversion/LICENSE \ + chromium/base/third_party/dynamic_annotations/LICENSE \ + chromium/base/third_party/icu/LICENSE \ + chromium/base/third_party/libevent/LICENSE \ + chromium/base/third_party/nspr/LICENSE \ + chromium/base/third_party/superfasthash/LICENSE \ + chromium/base/third_party/symbolize/LICENSE \ + chromium/base/third_party/valgrind/LICENSE \ + chromium/base/third_party/xdg_mime/LICENSE \ + chromium/base/third_party/xdg_user_dirs/LICENSE \ + chromium/buildtools/LICENSE \ + chromium/LICENSE \ + chromium/LICENSE.chromium_os \ + chromium/mojo/public/LICENSE \ + chromium/net/third_party/mozilla_security_manager/LICENSE \ + chromium/net/third_party/nss/LICENSE \ + chromium/net/third_party/quiche/src/LICENSE \ + chromium/net/third_party/uri_template/LICENSE \ + chromium/ppapi/LICENSE \ + chromium/third_party/abseil-cpp/LICENSE \ + chromium/third_party/angle/LICENSE \ + chromium/third_party/angle/src/common/third_party/smhasher/LICENSE \ + chromium/third_party/angle/src/common/third_party/xxhash/LICENSE \ + chromium/third_party/angle/src/libANGLE/renderer/vulkan/shaders/src/third_party/ffx_spd/LICENSE \ + chromium/third_party/angle/src/third_party/compiler/LICENSE \ + chromium/third_party/angle/src/third_party/libXNVCtrl/LICENSE \ + chromium/third_party/angle/src/third_party/volk/LICENSE.md \ + chromium/third_party/angle/third_party/rapidjson/src/bin/jsonschema/LICENSE \ + chromium/third_party/angle/third_party/rapidjson/src/contrib/natvis/LICENSE \ + chromium/third_party/angle/third_party/rapidjson/src/license.txt \ + chromium/third_party/angle/third_party/vulkan-headers/src/LICENSE.txt \ + chromium/third_party/angle/third_party/vulkan-loader/src/LICENSE.txt \ + chromium/third_party/angle/third_party/vulkan-tools/src/LICENSE.txt \ + chromium/third_party/angle/tools/flex-bison/third_party/m4sugar/LICENSE \ + chromium/third_party/angle/tools/flex-bison/third_party/skeletons/LICENSE \ + chromium/third_party/angle/util/windows/third_party/StackWalker/LICENSE \ + chromium/third_party/apple_apsl/LICENSE \ + chromium/third_party/arcore-android-sdk-client/LICENSE \ + chromium/third_party/arcore-android-sdk/LICENSE \ + chromium/third_party/axe-core/LICENSE \ + chromium/third_party/bazel/LICENSE \ + chromium/third_party/blanketjs/LICENSE \ + chromium/third_party/blink/LICENSE_FOR_ABOUT_CREDITS \ + chromium/third_party/blink/renderer/core/LICENSE-APPLE \ + chromium/third_party/blink/renderer/core/LICENSE-LGPL-2 \ + chromium/third_party/blink/renderer/core/LICENSE-LGPL-2.1 \ + chromium/third_party/blink/renderer/platform/testing/data/third_party/Noto/LICENSE_OFL.txt \ + chromium/third_party/blink/renderer/platform/testing/data/third_party/Roboto/LICENSE.txt \ + chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/LICENSE.md \ + chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/atomicwrites/LICENSE \ + chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/enum/enum/LICENSE \ + chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/h2/LICENSE \ + chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/hpack/LICENSE \ + chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/html5lib/LICENSE \ + chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/hyperframe/LICENSE \ + chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/six/LICENSE \ + chromium/third_party/boringssl/src/LICENSE \ + chromium/third_party/boringssl/src/third_party/fiat/LICENSE \ + chromium/third_party/boringssl/src/third_party/googletest/LICENSE \ + chromium/third_party/boringssl/src/third_party/wycheproof_testvectors/LICENSE \ + chromium/third_party/bouncycastle/LICENSE \ + chromium/third_party/breakpad/breakpad/LICENSE \ + chromium/third_party/breakpad/breakpad/src/third_party/curl/COPYING \ + chromium/third_party/breakpad/breakpad/src/third_party/libdisasm/LICENSE \ + chromium/third_party/breakpad/LICENSE \ + chromium/third_party/brotli/LICENSE \ + chromium/third_party/bspatch/LICENSE \ + chromium/third_party/byte_buddy/LICENSE \ + chromium/third_party/ced/LICENSE \ + chromium/third_party/ced/src/LICENSE \ + chromium/third_party/chaijs/LICENSE \ + chromium/third_party/checkstyle/LICENSE \ + chromium/third_party/checkstyle/LICENSE.apache20 \ + chromium/third_party/cld_3/LICENSE \ + chromium/third_party/cld_3/src/LICENSE \ + chromium/third_party/closure_compiler/compiler/COPYING \ + chromium/third_party/closure_compiler/LICENSE \ + chromium/third_party/crashpad/crashpad/LICENSE \ + chromium/third_party/crashpad/crashpad/third_party/apple_cf/APPLE_LICENSE \ + chromium/third_party/crashpad/crashpad/third_party/cpp-httplib/cpp-httplib/LICENSE \ + chromium/third_party/crashpad/crashpad/third_party/getopt/LICENSE \ + chromium/third_party/crashpad/crashpad/third_party/glibc/COPYING.LIB \ + chromium/third_party/crashpad/crashpad/third_party/xnu/APPLE_LICENSE \ + chromium/third_party/crc32c/src/LICENSE \ + chromium/third_party/cros_system_api/LICENSE \ + chromium/third_party/d3/src/LICENSE \ + chromium/third_party/dav1d/libdav1d/COPYING \ + chromium/third_party/dav1d/LICENSE \ + chromium/third_party/dawn/LICENSE \ + chromium/third_party/decklink/LICENSE \ + chromium/third_party/devscripts/COPYING \ + chromium/third_party/devtools-frontend/src/front_end/cm_modes/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/dagre_layout/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/sdk/wasm_source_map/LICENSES.deps \ + chromium/third_party/devtools-frontend/src/front_end/third_party/acorn/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/third_party/acorn-logical-assignment/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/third_party/acorn-logical-assignment/package/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/third_party/acorn-loose/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/third_party/acorn-loose/package/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/third_party/acorn-numeric-separator/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/third_party/acorn-numeric-separator/package/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/third_party/acorn/package/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/third_party/axe-core/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/third_party/codemirror/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/third_party/codemirror/package/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/third_party/fabricjs/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/third_party/i18n/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/third_party/intl-messageformat/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/third_party/intl-messageformat/package/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/third_party/lighthouse/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/third_party/lit-html/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/third_party/lit-html/package/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/third_party/lodash-isequal/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/third_party/lodash-isequal/package/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/third_party/marked/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/third_party/marked/package/LICENSE.md \ + chromium/third_party/devtools-frontend/src/front_end/third_party/puppeteer/package/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/third_party/wasmparser/LICENSE \ + chromium/third_party/devtools-frontend/src/front_end/third_party/wasmparser/package/LICENSE \ + chromium/third_party/devtools-frontend/src/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/abbrev/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/accepts/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/acorn-jsx/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/ajv/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/ansi-colors/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/ansi-escapes/license \ + chromium/third_party/devtools-frontend/src/node_modules/ansi-escapes/node_modules/type-fest/license \ + chromium/third_party/devtools-frontend/src/node_modules/ansi-regex/license \ + chromium/third_party/devtools-frontend/src/node_modules/ansi-styles/license \ + chromium/third_party/devtools-frontend/src/node_modules/anymatch/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/argparse/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/array-find-index/license \ + chromium/third_party/devtools-frontend/src/node_modules/array-includes/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/array-includes/node_modules/es-abstract/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/array-includes/node_modules/es-to-primitive/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/array-includes/node_modules/has-symbols/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/array-includes/node_modules/is-callable/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/array-includes/node_modules/is-regex/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/array-includes/node_modules/object-inspect/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/array-includes/node_modules/string.prototype.trimleft/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/array-includes/node_modules/string.prototype.trimright/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/array.prototype.flat/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/array.prototype.flat/node_modules/es-abstract/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/array.prototype.flat/node_modules/es-to-primitive/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/array.prototype.flat/node_modules/has-symbols/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/array.prototype.flat/node_modules/is-callable/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/array.prototype.flat/node_modules/is-regex/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/array.prototype.flat/node_modules/object-inspect/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/array.prototype.flat/node_modules/string.prototype.trimleft/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/array.prototype.flat/node_modules/string.prototype.trimright/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/array.prototype.map/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/array-union/license \ + chromium/third_party/devtools-frontend/src/node_modules/arrify/license \ + chromium/third_party/devtools-frontend/src/node_modules/asap/LICENSE.md \ + chromium/third_party/devtools-frontend/src/node_modules/astral-regex/license \ + chromium/third_party/devtools-frontend/src/node_modules/ast-types/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/async/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/async-limiter/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/autoprefixer/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/code-frame/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/core/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/@babel/code-frame/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/@babel/generator/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/@babel/helper-function-name/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/@babel/helper-get-function-arity/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/@babel/helper-split-export-declaration/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/@babel/highlight/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/@babel/parser/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/@babel/template/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/@babel/traverse/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/@babel/types/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/convert-source-map/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/resolve/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/safe-buffer/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/source-map/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-member-expression-to-functions/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/types/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-module-imports/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-module-imports/node_modules/@babel/types/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-module-transforms/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-module-transforms/node_modules/@babel/code-frame/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-split-export-declaration/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-module-transforms/node_modules/@babel/highlight/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-module-transforms/node_modules/@babel/parser/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-module-transforms/node_modules/@babel/template/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-module-transforms/node_modules/@babel/types/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-optimise-call-expression/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-optimise-call-expression/node_modules/@babel/types/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/node_modules/@babel/code-frame/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/node_modules/@babel/generator/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/node_modules/@babel/helper-function-name/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/node_modules/@babel/helper-get-function-arity/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/node_modules/@babel/helper-split-export-declaration/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/node_modules/@babel/highlight/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/node_modules/@babel/parser/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/node_modules/@babel/template/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/node_modules/@babel/traverse/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/node_modules/@babel/types/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/node_modules/source-map/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-simple-access/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-simple-access/node_modules/@babel/code-frame/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-simple-access/node_modules/@babel/highlight/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-simple-access/node_modules/@babel/parser/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-simple-access/node_modules/@babel/template/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-simple-access/node_modules/@babel/types/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/node_modules/@babel/code-frame/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/node_modules/@babel/generator/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/node_modules/@babel/helper-function-name/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/node_modules/@babel/helper-get-function-arity/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/node_modules/@babel/helper-split-export-declaration/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/node_modules/@babel/highlight/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/node_modules/@babel/parser/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/node_modules/@babel/template/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/node_modules/@babel/traverse/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/node_modules/@babel/types/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/node_modules/source-map/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-validator-identifier/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@babel/highlight/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/bail/license \ + chromium/third_party/devtools-frontend/src/node_modules/balanced-match/LICENSE.md \ + chromium/third_party/devtools-frontend/src/node_modules/base64-arraybuffer/LICENSE-MIT \ + chromium/third_party/devtools-frontend/src/node_modules/base64id/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/base64-js/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/binary-extensions/license \ + chromium/third_party/devtools-frontend/src/node_modules/bl/LICENSE.md \ + chromium/third_party/devtools-frontend/src/node_modules/blob/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/body-parser/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/body-parser/node_modules/debug/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/body-parser/node_modules/ms/license.md \ + chromium/third_party/devtools-frontend/src/node_modules/brace-expansion/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/braces/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/browserslist/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/browser-stdout/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/buffer-crc32/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/buffer-from/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/buffer/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/bytes/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/callsites/license \ + chromium/third_party/devtools-frontend/src/node_modules/camelcase-keys/license \ + chromium/third_party/devtools-frontend/src/node_modules/camelcase/license \ + chromium/third_party/devtools-frontend/src/node_modules/caniuse-lite/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/ccount/license \ + chromium/third_party/devtools-frontend/src/node_modules/chai/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/chalk/license \ + chromium/third_party/devtools-frontend/src/node_modules/character-entities-html4/license \ + chromium/third_party/devtools-frontend/src/node_modules/character-entities-legacy/license \ + chromium/third_party/devtools-frontend/src/node_modules/character-entities/license \ + chromium/third_party/devtools-frontend/src/node_modules/character-reference-invalid/license \ + chromium/third_party/devtools-frontend/src/node_modules/chardet/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/check-error/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/chokidar/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/chokidar/node_modules/fsevents/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/chokidar/node_modules/readdirp/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/chownr/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/cli-cursor/license \ + chromium/third_party/devtools-frontend/src/node_modules/cliui/LICENSE.txt \ + chromium/third_party/devtools-frontend/src/node_modules/cliui/node_modules/ansi-regex/license \ + chromium/third_party/devtools-frontend/src/node_modules/cliui/node_modules/emoji-regex/LICENSE-MIT.txt \ + chromium/third_party/devtools-frontend/src/node_modules/cliui/node_modules/string-width/license \ + chromium/third_party/devtools-frontend/src/node_modules/cliui/node_modules/strip-ansi/license \ + chromium/third_party/devtools-frontend/src/node_modules/cli-width/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/clone-regexp/license \ + chromium/third_party/devtools-frontend/src/node_modules/collapse-white-space/license \ + chromium/third_party/devtools-frontend/src/node_modules/color-convert/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/color-name/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/colors/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/commander/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/commondir/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/component-emitter/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/concat-map/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/connect/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/connect/node_modules/debug/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/connect/node_modules/ms/license.md \ + chromium/third_party/devtools-frontend/src/node_modules/contains-path/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/content-type/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/cookie/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/cosmiconfig/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/cosmiconfig/node_modules/parse-json/license \ + chromium/third_party/devtools-frontend/src/node_modules/cross-spawn/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/cssesc/LICENSE-MIT.txt \ + chromium/third_party/devtools-frontend/src/node_modules/custom-event/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/date-format/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/debug/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/debuglog/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/decamelize-keys/license \ + chromium/third_party/devtools-frontend/src/node_modules/decamelize-keys/node_modules/map-obj/license \ + chromium/third_party/devtools-frontend/src/node_modules/decamelize/license \ + chromium/third_party/devtools-frontend/src/node_modules/deep-eql/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/deep-is/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/define-properties/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/depd/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/devtools-protocol/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/dezalgo/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/diff/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/di/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/dir-glob/license \ + chromium/third_party/devtools-frontend/src/node_modules/doctrine/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/doctrine/LICENSE.closure-compiler \ + chromium/third_party/devtools-frontend/src/node_modules/doctrine/LICENSE.esprima \ + chromium/third_party/devtools-frontend/src/node_modules/domelementtype/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/domhandler/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/dom-serializer/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/dom-serializer/node_modules/domelementtype/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/dom-serializer/node_modules/entities/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/domutils/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/ee-first/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/electron-to-chromium/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/emoji-regex/LICENSE-MIT.txt \ + chromium/third_party/devtools-frontend/src/node_modules/encodeurl/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/end-of-stream/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/engine.io-client/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/engine.io-client/node_modules/debug/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/engine.io-client/node_modules/ms/license.md \ + chromium/third_party/devtools-frontend/src/node_modules/engine.io/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/engine.io/node_modules/debug/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/engine.io/node_modules/ms/license.md \ + chromium/third_party/devtools-frontend/src/node_modules/engine.io-parser/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/entities/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/ent/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/error-ex/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/es-abstract/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/es-abstract/node_modules/has-symbols/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/es-abstract/node_modules/string.prototype.trimend/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/es-abstract/node_modules/string.prototype.trimstart/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/es-array-method-boxes-properly/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/escape-html/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/escape-string-regexp/license \ + chromium/third_party/devtools-frontend/src/node_modules/escodegen/LICENSE.BSD \ + chromium/third_party/devtools-frontend/src/node_modules/escodegen/node_modules/esprima/LICENSE.BSD \ + chromium/third_party/devtools-frontend/src/node_modules/es-get-iterator/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/es-get-iterator/node_modules/has-symbols/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/es-get-iterator/node_modules/isarray/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-import-resolver-node/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-import-resolver-node/node_modules/debug/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-import-resolver-node/node_modules/ms/license.md \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-import-resolver-node/node_modules/resolve/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/eslint/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-module-utils/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-module-utils/node_modules/debug/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-module-utils/node_modules/ms/license.md \ + chromium/third_party/devtools-frontend/src/node_modules/eslint/node_modules/ansi-regex/license \ + chromium/third_party/devtools-frontend/src/node_modules/eslint/node_modules/globals/license \ + chromium/third_party/devtools-frontend/src/node_modules/eslint/node_modules/optionator/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/eslint/node_modules/semver/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/eslint/node_modules/strip-ansi/license \ + chromium/third_party/devtools-frontend/src/node_modules/eslint/node_modules/strip-json-comments/license \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/memo-parser/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/debug/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/doctrine/LICENSE.BSD \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/doctrine/LICENSE.closure-compiler \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/doctrine/LICENSE.esprima \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/find-up/license \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/load-json-file/license \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/locate-path/license \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/ms/license.md \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/path-exists/license \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/path-type/license \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/pify/license \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/p-limit/license \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/p-locate/license \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/p-try/license \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/read-pkg/license \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/read-pkg-up/license \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/resolve/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-mocha/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-rulesdir/LICENSE.md \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-scope/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-utils/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/eslint-visitor-keys/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/espree/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/espree/node_modules/acorn/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/esquery/license.txt \ + chromium/third_party/devtools-frontend/src/node_modules/esquery/node_modules/estraverse/LICENSE.BSD \ + chromium/third_party/devtools-frontend/src/node_modules/es-to-primitive/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/estraverse/LICENSE.BSD \ + chromium/third_party/devtools-frontend/src/node_modules/esutils/LICENSE.BSD \ + chromium/third_party/devtools-frontend/src/node_modules/eventemitter3/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/execall/license \ + chromium/third_party/devtools-frontend/src/node_modules/extend/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/external-editor/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/extract-zip/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/fast-deep-equal/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/fast-glob/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/fast-glob/node_modules/picomatch/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/fast-json-stable-stringify/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/fast-levenshtein/LICENSE.md \ + chromium/third_party/devtools-frontend/src/node_modules/fastq/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/fd-slicer/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/figures/license \ + chromium/third_party/devtools-frontend/src/node_modules/file-entry-cache/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/fill-range/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/finalhandler/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/finalhandler/node_modules/debug/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/finalhandler/node_modules/ms/license.md \ + chromium/third_party/devtools-frontend/src/node_modules/find-up/license \ + chromium/third_party/devtools-frontend/src/node_modules/find-up/node_modules/path-exists/license \ + chromium/third_party/devtools-frontend/src/node_modules/flat-cache/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/flat-cache/node_modules/rimraf/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/flat/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/flatted/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/follow-redirects/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/follow-redirects/node_modules/debug/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/fs-constants/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/fs-extra/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/fs.realpath/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/functional-red-black-tree/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/function-bind/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/gensync/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/get-caller-file/LICENSE.md \ + chromium/third_party/devtools-frontend/src/node_modules/get-func-name/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/get-stdin/license \ + chromium/third_party/devtools-frontend/src/node_modules/get-stream/license \ + chromium/third_party/devtools-frontend/src/node_modules/global-modules/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/global-prefix/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/globals/license \ + chromium/third_party/devtools-frontend/src/node_modules/globby/license \ + chromium/third_party/devtools-frontend/src/node_modules/globby/node_modules/ignore/LICENSE-MIT \ + chromium/third_party/devtools-frontend/src/node_modules/globby/node_modules/slash/license \ + chromium/third_party/devtools-frontend/src/node_modules/globjoin/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/glob/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/glob-parent/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/graceful-fs/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/hard-rejection/license \ + chromium/third_party/devtools-frontend/src/node_modules/has-binary2/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/has-flag/license \ + chromium/third_party/devtools-frontend/src/node_modules/has/LICENSE-MIT \ + chromium/third_party/devtools-frontend/src/node_modules/has-symbols/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/he/LICENSE-MIT.txt \ + chromium/third_party/devtools-frontend/src/node_modules/hosted-git-info/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/html-escaper/LICENSE.txt \ + chromium/third_party/devtools-frontend/src/node_modules/htmlparser2/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/html-tags/license \ + chromium/third_party/devtools-frontend/src/node_modules/http-errors/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/http-errors/node_modules/inherits/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/http-proxy/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/iconv-lite/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/ieee754/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/ignore/LICENSE-MIT \ + chromium/third_party/devtools-frontend/src/node_modules/import-fresh/license \ + chromium/third_party/devtools-frontend/src/node_modules/import-lazy/license \ + chromium/third_party/devtools-frontend/src/node_modules/indent-string/license \ + chromium/third_party/devtools-frontend/src/node_modules/indexes-of/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/inflight/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/inherits/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/ini/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/inquirer/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/ansi-regex/license \ + chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/ansi-styles/license \ + chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/chalk/license \ + chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/color-convert/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/color-name/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/has-flag/license \ + chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/is-fullwidth-code-point/license \ + chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/string-width/license \ + chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/strip-ansi/license \ + chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/supports-color/license \ + chromium/third_party/devtools-frontend/src/node_modules/is-alphabetical/license \ + chromium/third_party/devtools-frontend/src/node_modules/is-alphanumerical/license \ + chromium/third_party/devtools-frontend/src/node_modules/is-alphanumeric/license \ + chromium/third_party/devtools-frontend/src/node_modules/is-arguments/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/is-arrayish/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/isbinaryfile/LICENSE.txt \ + chromium/third_party/devtools-frontend/src/node_modules/is-binary-path/license \ + chromium/third_party/devtools-frontend/src/node_modules/is-buffer/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/is-callable/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/is-date-object/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/is-decimal/license \ + chromium/third_party/devtools-frontend/src/node_modules/isexe/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/is-extglob/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/is-fullwidth-code-point/license \ + chromium/third_party/devtools-frontend/src/node_modules/is-glob/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/is-hexadecimal/license \ + chromium/third_party/devtools-frontend/src/node_modules/is-map/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/is-number/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/is-plain-obj/license \ + chromium/third_party/devtools-frontend/src/node_modules/is-promise/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/is-regex/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/is-regex/node_modules/has-symbols/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/is-regexp/license \ + chromium/third_party/devtools-frontend/src/node_modules/is-set/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/is-string/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/is-symbol/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@istanbuljs/schema/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/is-typedarray/LICENSE.md \ + chromium/third_party/devtools-frontend/src/node_modules/is-whitespace-character/license \ + chromium/third_party/devtools-frontend/src/node_modules/is-word-character/license \ + chromium/third_party/devtools-frontend/src/node_modules/iterate-iterator/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/iterate-value/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/jest-worker/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/jest-worker/node_modules/supports-color/license \ + chromium/third_party/devtools-frontend/src/node_modules/jsesc/LICENSE-MIT.txt \ + chromium/third_party/devtools-frontend/src/node_modules/json5/LICENSE.md \ + chromium/third_party/devtools-frontend/src/node_modules/json5/node_modules/minimist/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/jsonfile/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/json-parse-better-errors/LICENSE.md \ + chromium/third_party/devtools-frontend/src/node_modules/json-schema-traverse/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/json-stable-stringify-without-jsonify/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/js-tokens/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/js-yaml/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/js-yaml/node_modules/esprima/LICENSE.BSD \ + chromium/third_party/devtools-frontend/src/node_modules/karma-chai/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma-chrome-launcher/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/@babel/code-frame/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/@babel/generator/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/@babel/helper-function-name/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/@babel/helper-get-function-arity/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/@babel/helper-split-export-declaration/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/@babel/highlight/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/@babel/parser/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/@babel/template/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/@babel/traverse/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/@babel/types/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/@babel/types/node_modules/@babel/helper-validator-identifier/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/has-flag/license \ + chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/istanbul-lib-coverage/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/istanbul-lib-instrument/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/istanbul-lib-report/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/istanbul-lib-source-maps/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/istanbul-lib-source-maps/node_modules/source-map/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/istanbul-reports/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/make-dir/license \ + chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/semver/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/source-map/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/supports-color/license \ + chromium/third_party/devtools-frontend/src/node_modules/karma/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma-mocha/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/ansi-regex/license \ + chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/ansi-styles/license \ + chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/cliui/LICENSE.txt \ + chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/color-convert/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/color-name/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/find-up/license \ + chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/is-fullwidth-code-point/license \ + chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/locate-path/license \ + chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/path-exists/license \ + chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/p-locate/license \ + chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/rimraf/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/string-width/license \ + chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/strip-ansi/license \ + chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/wrap-ansi/license \ + chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/yargs/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/yargs-parser/LICENSE.txt \ + chromium/third_party/devtools-frontend/src/node_modules/karma-sourcemap-loader/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/kind-of/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/known-css-properties/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/leven/license \ + chromium/third_party/devtools-frontend/src/node_modules/levn/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/license-checker/bin/license-checker \ + chromium/third_party/devtools-frontend/src/node_modules/license-checker/lib/license-files.js \ + chromium/third_party/devtools-frontend/src/node_modules/license-checker/lib/license.js \ + chromium/third_party/devtools-frontend/src/node_modules/license-checker/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/license-checker/node_modules/debug/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/license-checker/node_modules/nopt/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/lines-and-columns/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/locate-path/license \ + chromium/third_party/devtools-frontend/src/node_modules/lodash/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/log4js/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/log-symbols/license \ + chromium/third_party/devtools-frontend/src/node_modules/longest-streak/license \ + chromium/third_party/devtools-frontend/src/node_modules/magic-string/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/map-obj/license \ + chromium/third_party/devtools-frontend/src/node_modules/markdown-escapes/license \ + chromium/third_party/devtools-frontend/src/node_modules/markdown-table/license \ + chromium/third_party/devtools-frontend/src/node_modules/mathml-tag-names/license \ + chromium/third_party/devtools-frontend/src/node_modules/mdast-util-compact/license \ + chromium/third_party/devtools-frontend/src/node_modules/media-typer/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/meow/license \ + chromium/third_party/devtools-frontend/src/node_modules/meow/node_modules/camelcase/license \ + chromium/third_party/devtools-frontend/src/node_modules/meow/node_modules/type-fest/license \ + chromium/third_party/devtools-frontend/src/node_modules/meow/node_modules/yargs-parser/LICENSE.txt \ + chromium/third_party/devtools-frontend/src/node_modules/meow/node_modules/yargs-parser/node_modules/camelcase/license \ + chromium/third_party/devtools-frontend/src/node_modules/merge2/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/merge-stream/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/micromatch/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/mime-db/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/mime/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/mime-types/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/mimic-fn/license \ + chromium/third_party/devtools-frontend/src/node_modules/minimatch/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/minimist/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/minimist-options/license \ + chromium/third_party/devtools-frontend/src/node_modules/minimist-options/node_modules/arrify/license \ + chromium/third_party/devtools-frontend/src/node_modules/minimist-options/node_modules/is-plain-obj/license \ + chromium/third_party/devtools-frontend/src/node_modules/min-indent/license \ + chromium/third_party/devtools-frontend/src/node_modules/mkdirp-classic/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/mkdirp/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/mkdirp/node_modules/minimist/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/mocha/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/ansi-regex/license \ + chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/debug/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/emoji-regex/LICENSE-MIT.txt \ + chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/glob/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/has-flag/license \ + chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/locate-path/license \ + chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/p-locate/license \ + chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/serialize-javascript/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/string-width/license \ + chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/strip-ansi/license \ + chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/supports-color/license \ + chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/which/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/yargs/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/yargs/node_modules/find-up/license \ + chromium/third_party/devtools-frontend/src/node_modules/ms/license.md \ + chromium/third_party/devtools-frontend/src/node_modules/mute-stream/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/negotiator/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/nice-try/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@nodelib/fs.scandir/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@nodelib/fs.stat/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@nodelib/fs.walk/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/node-releases/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/normalize-package-data/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/normalize-package-data/node_modules/resolve/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/normalize-path/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/normalize-range/license \ + chromium/third_party/devtools-frontend/src/node_modules/num2fraction/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/object.assign/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/object-inspect/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/object-keys/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/object.values/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/object.values/node_modules/es-abstract/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/object.values/node_modules/es-to-primitive/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/object.values/node_modules/has-symbols/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/object.values/node_modules/is-callable/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/object.values/node_modules/is-regex/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/object.values/node_modules/object-inspect/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/object.values/node_modules/string.prototype.trimleft/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/object.values/node_modules/string.prototype.trimright/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/once/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/onetime/license \ + chromium/third_party/devtools-frontend/src/node_modules/on-finished/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/optionator/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/osenv/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/os-homedir/license \ + chromium/third_party/devtools-frontend/src/node_modules/os-tmpdir/license \ + chromium/third_party/devtools-frontend/src/node_modules/parent-module/license \ + chromium/third_party/devtools-frontend/src/node_modules/parse-entities/license \ + chromium/third_party/devtools-frontend/src/node_modules/parse-json/license \ + chromium/third_party/devtools-frontend/src/node_modules/parseqs/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/parseuri/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/parseurl/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/path-exists/license \ + chromium/third_party/devtools-frontend/src/node_modules/path-is-absolute/license \ + chromium/third_party/devtools-frontend/src/node_modules/path-key/license \ + chromium/third_party/devtools-frontend/src/node_modules/path-parse/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/path-type/license \ + chromium/third_party/devtools-frontend/src/node_modules/pathval/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/pend/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/picomatch/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/pkg-dir/license \ + chromium/third_party/devtools-frontend/src/node_modules/pkg-dir/node_modules/find-up/license \ + chromium/third_party/devtools-frontend/src/node_modules/pkg-dir/node_modules/locate-path/license \ + chromium/third_party/devtools-frontend/src/node_modules/pkg-dir/node_modules/path-exists/license \ + chromium/third_party/devtools-frontend/src/node_modules/pkg-dir/node_modules/p-limit/license \ + chromium/third_party/devtools-frontend/src/node_modules/pkg-dir/node_modules/p-locate/license \ + chromium/third_party/devtools-frontend/src/node_modules/pkg-dir/node_modules/p-try/license \ + chromium/third_party/devtools-frontend/src/node_modules/pkg-up/license \ + chromium/third_party/devtools-frontend/src/node_modules/pkg-up/node_modules/find-up/license \ + chromium/third_party/devtools-frontend/src/node_modules/pkg-up/node_modules/locate-path/license \ + chromium/third_party/devtools-frontend/src/node_modules/pkg-up/node_modules/p-limit/license \ + chromium/third_party/devtools-frontend/src/node_modules/pkg-up/node_modules/p-locate/license \ + chromium/third_party/devtools-frontend/src/node_modules/pkg-up/node_modules/p-try/license \ + chromium/third_party/devtools-frontend/src/node_modules/p-limit/license \ + chromium/third_party/devtools-frontend/src/node_modules/p-locate/license \ + chromium/third_party/devtools-frontend/src/node_modules/postcss-html/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/postcss-less/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/postcss/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/postcss/node_modules/supports-color/license \ + chromium/third_party/devtools-frontend/src/node_modules/postcss-reporter/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/postcss-reporter/node_modules/log-symbols/license \ + chromium/third_party/devtools-frontend/src/node_modules/postcss-resolve-nested-selector/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/postcss-safe-parser/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/postcss-sass/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/postcss-scss/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/postcss-selector-parser/LICENSE-MIT \ + chromium/third_party/devtools-frontend/src/node_modules/postcss-syntax/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/postcss-value-parser/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/prelude-ls/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/private/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/progress/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/promise.allsettled/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/proxy-from-env/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/p-try/license \ + chromium/third_party/devtools-frontend/src/node_modules/pump/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/punycode/LICENSE-MIT.txt \ + chromium/third_party/devtools-frontend/src/node_modules/puppeteer/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/puppeteer/node_modules/pkg-dir/license \ + chromium/third_party/devtools-frontend/src/node_modules/puppeteer/node_modules/ws/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/qs/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/quick-lru/license \ + chromium/third_party/devtools-frontend/src/node_modules/ramda/LICENSE.txt \ + chromium/third_party/devtools-frontend/src/node_modules/range-parser/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/raw-body/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/readable-stream/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/readdir-scoped-modules/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/read-installed/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/read-package-json/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/read-pkg/license \ + chromium/third_party/devtools-frontend/src/node_modules/read-pkg/node_modules/parse-json/license \ + chromium/third_party/devtools-frontend/src/node_modules/read-pkg/node_modules/type-fest/license \ + chromium/third_party/devtools-frontend/src/node_modules/read-pkg-up/license \ + chromium/third_party/devtools-frontend/src/node_modules/read-pkg-up/node_modules/find-up/license \ + chromium/third_party/devtools-frontend/src/node_modules/read-pkg-up/node_modules/locate-path/license \ + chromium/third_party/devtools-frontend/src/node_modules/read-pkg-up/node_modules/path-exists/license \ + chromium/third_party/devtools-frontend/src/node_modules/read-pkg-up/node_modules/p-locate/license \ + chromium/third_party/devtools-frontend/src/node_modules/recast/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/recast/node_modules/esprima/LICENSE.BSD \ + chromium/third_party/devtools-frontend/src/node_modules/redent/license \ + chromium/third_party/devtools-frontend/src/node_modules/regexpp/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/repeat-string/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/replace-ext/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/require-directory/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/require-main-filename/LICENSE.txt \ + chromium/third_party/devtools-frontend/src/node_modules/requires-port/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/resolve-from/license \ + chromium/third_party/devtools-frontend/src/node_modules/resolve/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/restore-cursor/license \ + chromium/third_party/devtools-frontend/src/node_modules/reusify/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/rfdc/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/rimraf/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/rollup/LICENSE.md \ + chromium/third_party/devtools-frontend/src/node_modules/rollup/node_modules/fsevents/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@rollup/plugin-commonjs/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/rollup-plugin-terser/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@rollup/pluginutils/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@rollup/pluginutils/node_modules/picomatch/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@rollup/pluginutils/node_modules/@types/estree/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/run-async/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/run-parallel/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/rxjs/_esm2015/LICENSE.txt \ + chromium/third_party/devtools-frontend/src/node_modules/rxjs/_esm5/LICENSE.txt \ + chromium/third_party/devtools-frontend/src/node_modules/rxjs/LICENSE.txt \ + chromium/third_party/devtools-frontend/src/node_modules/rxjs/src/LICENSE.txt \ + chromium/third_party/devtools-frontend/src/node_modules/safe-buffer/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/safer-buffer/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/semver/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/serialize-javascript/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/set-blocking/LICENSE.txt \ + chromium/third_party/devtools-frontend/src/node_modules/setprototypeof/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/shebang-command/license \ + chromium/third_party/devtools-frontend/src/node_modules/shebang-regex/license \ + chromium/third_party/devtools-frontend/src/node_modules/signal-exit/LICENSE.txt \ + chromium/third_party/devtools-frontend/src/node_modules/slice-ansi/license \ + chromium/third_party/devtools-frontend/src/node_modules/slide/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/socket.io-adapter/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/socket.io-client/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/socket.io-client/node_modules/debug/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/socket.io-client/node_modules/ms/license.md \ + chromium/third_party/devtools-frontend/src/node_modules/socket.io/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/socket.io/node_modules/debug/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/socket.io/node_modules/ms/license.md \ + chromium/third_party/devtools-frontend/src/node_modules/socket.io-parser/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/socket.io-parser/node_modules/debug/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/socket.io-parser/node_modules/ms/license.md \ + chromium/third_party/devtools-frontend/src/node_modules/sourcemap-codec/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/source-map/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/source-map-support/LICENSE.md \ + chromium/third_party/devtools-frontend/src/node_modules/spdx-compare/LICENSE.md \ + chromium/third_party/devtools-frontend/src/node_modules/spdx-correct/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/spdx-expression-parse/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/spdx-ranges/LICENSE.md \ + chromium/third_party/devtools-frontend/src/node_modules/spdx-satisfies/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/specificity/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/sprintf-js/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/state-toggle/license \ + chromium/third_party/devtools-frontend/src/node_modules/statuses/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/streamroller/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/streamroller/node_modules/debug/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/string_decoder/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/stringify-entities/license \ + chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimend/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimend/node_modules/es-abstract/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimend/node_modules/es-to-primitive/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimend/node_modules/has-symbols/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimend/node_modules/is-callable/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimend/node_modules/is-regex/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimend/node_modules/object-inspect/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimend/node_modules/string.prototype.trimleft/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimend/node_modules/string.prototype.trimright/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimstart/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimstart/node_modules/es-abstract/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimstart/node_modules/es-to-primitive/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimstart/node_modules/has-symbols/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimstart/node_modules/is-callable/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimstart/node_modules/is-regex/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimstart/node_modules/object-inspect/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimstart/node_modules/string.prototype.trimleft/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimstart/node_modules/string.prototype.trimright/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/string-width/license \ + chromium/third_party/devtools-frontend/src/node_modules/strip-ansi/license \ + chromium/third_party/devtools-frontend/src/node_modules/strip-bom/license \ + chromium/third_party/devtools-frontend/src/node_modules/strip-indent/license \ + chromium/third_party/devtools-frontend/src/node_modules/strip-json-comments/license \ + chromium/third_party/devtools-frontend/src/node_modules/stylelint-config-recommended/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/stylelint-config-standard/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/stylelint/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/ansi-regex/license \ + chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/ansi-styles/license \ + chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/chalk/license \ + chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/color-convert/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/color-name/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/has-flag/license \ + chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/ignore/LICENSE-MIT \ + chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/is-fullwidth-code-point/license \ + chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/log-symbols/license \ + chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/resolve-from/license \ + chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/slash/license \ + chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/string-width/license \ + chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/strip-ansi/license \ + chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/supports-color/license \ + chromium/third_party/devtools-frontend/src/node_modules/@stylelint/postcss-css-in-js/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@stylelint/postcss-markdown/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/style-search/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/sugarss/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/supports-color/license \ + chromium/third_party/devtools-frontend/src/node_modules/svg-tags/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/table/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/table/node_modules/ansi-regex/license \ + chromium/third_party/devtools-frontend/src/node_modules/table/node_modules/emoji-regex/LICENSE-MIT.txt \ + chromium/third_party/devtools-frontend/src/node_modules/table/node_modules/string-width/license \ + chromium/third_party/devtools-frontend/src/node_modules/table/node_modules/strip-ansi/license \ + chromium/third_party/devtools-frontend/src/node_modules/tar-fs/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/tar-stream/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/terser/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/text-table/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/through/LICENSE.APACHE2 \ + chromium/third_party/devtools-frontend/src/node_modules/through/LICENSE.MIT \ + chromium/third_party/devtools-frontend/src/node_modules/tmp/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/to-fast-properties/license \ + chromium/third_party/devtools-frontend/src/node_modules/toidentifier/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/to-regex-range/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/treeify/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/trim-newlines/license \ + chromium/third_party/devtools-frontend/src/node_modules/trim-trailing-lines/license \ + chromium/third_party/devtools-frontend/src/node_modules/trough/license \ + chromium/third_party/devtools-frontend/src/node_modules/tslib/LICENSE.txt \ + chromium/third_party/devtools-frontend/src/node_modules/tsutils/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/type-check/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/typedarray-to-buffer/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/type-detect/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/type-fest/license \ + chromium/third_party/devtools-frontend/src/node_modules/type-is/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@types/chai/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@types/codemirror/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@types/color-name/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/eslint-plugin/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/eslint-plugin/node_modules/regexpp/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/eslint-plugin/node_modules/semver/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/experimental-utils/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-utils/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/parser/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/typescript-estree/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/typescript-estree/node_modules/glob/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/typescript-estree/node_modules/semver/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/types/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/visitor-keys/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/typescript/LICENSE.txt \ + chromium/third_party/devtools-frontend/src/node_modules/@types/eslint-visitor-keys/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@types/estree/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@types/filesystem/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@types/json-schema/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@types/mocha/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@types/node/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@types/normalize-package-data/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@types/parse-json/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@types/puppeteer/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@types/tern/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@types/unist/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/@types/yauzl/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/ua-parser-js/license.md \ + chromium/third_party/devtools-frontend/src/node_modules/ultron/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/unbzip2-stream/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/unherit/license \ + chromium/third_party/devtools-frontend/src/node_modules/unified/license \ + chromium/third_party/devtools-frontend/src/node_modules/uniq/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/unist-util-find-all-after/license \ + chromium/third_party/devtools-frontend/src/node_modules/unist-util-is/license \ + chromium/third_party/devtools-frontend/src/node_modules/unist-util-remove-position/license \ + chromium/third_party/devtools-frontend/src/node_modules/unist-util-stringify-position/license \ + chromium/third_party/devtools-frontend/src/node_modules/unist-util-visit/license \ + chromium/third_party/devtools-frontend/src/node_modules/unist-util-visit-parents/license \ + chromium/third_party/devtools-frontend/src/node_modules/universalify/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/unpipe/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/util-deprecate/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/util-extend/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/utils-merge/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/v8-compile-cache/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/validate-npm-package-license/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/vfile/license \ + chromium/third_party/devtools-frontend/src/node_modules/vfile-location/license \ + chromium/third_party/devtools-frontend/src/node_modules/vfile-message/license \ + chromium/third_party/devtools-frontend/src/node_modules/void-elements/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/which/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/which-module/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/wide-align/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/word-wrap/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/wordwrap/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/workerpool/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/license \ + chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/node_modules/ansi-regex/license \ + chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/node_modules/emoji-regex/LICENSE-MIT.txt \ + chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/node_modules/string-width/license \ + chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/node_modules/strip-ansi/license \ + chromium/third_party/devtools-frontend/src/node_modules/wrappy/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/write-file-atomic/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/write/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/ws/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/ws/node_modules/safe-buffer/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/xmlhttprequest-ssl/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/xtend/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/y18n/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/yaml/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/yargs/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/ansi-regex/license \ + chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/ansi-styles/license \ + chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/cliui/LICENSE.txt \ + chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/color-convert/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/color-name/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/find-up/license \ + chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/is-fullwidth-code-point/license \ + chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/locate-path/license \ + chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/path-exists/license \ + chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/p-locate/license \ + chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/string-width/license \ + chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/strip-ansi/license \ + chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/wrap-ansi/license \ + chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/yargs-parser/LICENSE.txt \ + chromium/third_party/devtools-frontend/src/node_modules/yargs-parser/LICENSE.txt \ + chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/ansi-regex/license \ + chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/emoji-regex/LICENSE-MIT.txt \ + chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/find-up/license \ + chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/locate-path/license \ + chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/p-locate/license \ + chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/string-width/license \ + chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/strip-ansi/license \ + chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/yargs/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/yauzl/LICENSE \ + chromium/third_party/devtools-frontend/src/node_modules/yeast/LICENSE \ + chromium/third_party/devtools-frontend/src/scripts/closure/COPYING \ + chromium/third_party/devtools-frontend/src/third_party/i18n/LICENSE \ + chromium/third_party/devtools-frontend/src/third_party/pyjson5/src/LICENSE \ + chromium/third_party/dom_distiller_js/LICENSE \ + chromium/third_party/dpkg-shlibdeps/LICENSE \ + chromium/third_party/emoji-segmenter/LICENSE \ + chromium/third_party/emoji-segmenter/src/LICENSE \ + chromium/third_party/espresso/LICENSE \ + chromium/third_party/expat/src/expat/COPYING \ + chromium/third_party/ffmpeg/chromium/scripts/license_texts/full_lgpl.txt \ + chromium/third_party/ffmpeg/chromium/scripts/license_texts/jpeg.txt \ + chromium/third_party/ffmpeg/chromium/scripts/license_texts/mips.txt \ + chromium/third_party/ffmpeg/chromium/scripts/license_texts/oggparse_ahlberg_rullgayrd_2005.txt \ + chromium/third_party/ffmpeg/COPYING.GPLv2 \ + chromium/third_party/ffmpeg/COPYING.GPLv3 \ + chromium/third_party/ffmpeg/COPYING.LGPLv2.1 \ + chromium/third_party/ffmpeg/COPYING.LGPLv3 \ + chromium/third_party/ffmpeg/LICENSE.md \ + chromium/third_party/flac/COPYING.FDL \ + chromium/third_party/flac/COPYING.GPL \ + chromium/third_party/flac/COPYING.LGPL \ + chromium/third_party/flac/COPYING.Xiph \ + chromium/third_party/flatbuffers/LICENSE \ + chromium/third_party/flatbuffers/src/dart/LICENSE \ + chromium/third_party/flatbuffers/src/LICENSE.txt \ + chromium/third_party/fontconfig/LICENSE \ + chromium/third_party/fontconfig/src/COPYING \ + chromium/third_party/freetype/src/docs/LICENSE.TXT \ + chromium/third_party/fusejs/LICENSE \ + chromium/third_party/gif_player/LICENSE \ + chromium/third_party/glfw/src/LICENSE.md \ + chromium/third_party/glslang/LICENSE \ + chromium/third_party/glslang/src/license-checker.cfg \ + chromium/third_party/glslang/src/LICENSE.txt \ + chromium/third_party/google-closure-library/closure-deps/LICENSE \ + chromium/third_party/google-closure-library/doc/LICENSE \ + chromium/third_party/google-closure-library/LICENSE \ + chromium/third_party/googletest/src/googlemock/LICENSE \ + chromium/third_party/googletest/src/googlemock/scripts/generator/LICENSE \ + chromium/third_party/googletest/src/googletest/LICENSE \ + chromium/third_party/googletest/src/LICENSE \ + chromium/third_party/google-truth/LICENSE \ + chromium/third_party/guava/LICENSE \ + chromium/third_party/gvr-android-keyboard/LICENSE \ + chromium/third_party/gvr-android-sdk/LICENSE \ + chromium/third_party/hamcrest/LICENSE \ + chromium/third_party/harfbuzz-ng/src/COPYING \ + chromium/third_party/harfbuzz-ng/src/src/ms-use/COPYING \ + chromium/third_party/hunspell/COPYING \ + chromium/third_party/hunspell/COPYING.LESSER \ + chromium/third_party/hunspell/COPYING.MPL \ + chromium/third_party/hyphenation-patterns/LICENSE \ + chromium/third_party/hyphenation-patterns/src/pt/LICENSE \ + chromium/third_party/iaccessible2/LICENSE \ + chromium/third_party/iccjpeg/LICENSE \ + chromium/third_party/icu4j/LICENSE \ + chromium/third_party/icu/LICENSE \ + chromium/third_party/icu/license.html \ + chromium/third_party/icu/scripts/LICENSE \ + chromium/third_party/ijar/LICENSE \ + chromium/third_party/ink/LICENSE \ + chromium/third_party/inspector_protocol/LICENSE \ + chromium/third_party/isimpledom/LICENSE \ + chromium/third_party/jacoco/LICENSE \ + chromium/third_party/javalang/LICENSE \ + chromium/third_party/jetifier_standalone/LICENSE \ + chromium/third_party/jinja2/LICENSE \ + chromium/third_party/jsoncpp/LICENSE \ + chromium/third_party/jsoncpp/source/LICENSE \ + chromium/third_party/jstemplate/COPYING \ + chromium/third_party/khronos/LICENSE \ + chromium/third_party/leveldatabase/src/LICENSE \ + chromium/third_party/libaddressinput/LICENSE \ + chromium/third_party/libaddressinput/src/cpp/LICENSE.chromium \ + chromium/third_party/libaddressinput/src/LICENSE \ + chromium/third_party/libaom/source/libaom/LICENSE \ + chromium/third_party/libaom/source/libaom/third_party/fastfeat/LICENSE \ + chromium/third_party/libaom/source/libaom/third_party/googletest/src/googletest/LICENSE \ + chromium/third_party/libaom/source/libaom/third_party/libwebm/LICENSE.TXT \ + chromium/third_party/libaom/source/libaom/third_party/vector/LICENSE \ + chromium/third_party/libaom/source/libaom/third_party/x86inc/LICENSE \ + chromium/third_party/libavif/LICENSE \ + chromium/third_party/libavif/src/LICENSE \ + chromium/third_party/libbrlapi/LICENSE \ + chromium/third_party/libgav1/src/LICENSE \ + chromium/third_party/libgifcodec/LICENSE.md \ + chromium/third_party/libipp/LICENSE \ + chromium/third_party/libjingle_xmpp/LICENSE \ + chromium/third_party/libjpeg_turbo/LICENSE.md \ + chromium/third_party/libovr/LICENSE \ + chromium/third_party/libpng/LICENSE \ + chromium/third_party/libprotobuf-mutator/src/LICENSE \ + chromium/third_party/libsecret/LICENSE \ + chromium/third_party/libsrtp/LICENSE \ + chromium/third_party/libsync/LICENSE \ + chromium/third_party/libudev/LICENSE \ + chromium/third_party/libusb/src/COPYING \ + chromium/third_party/libvpx/source/libvpx/LICENSE \ + chromium/third_party/libvpx/source/libvpx/third_party/googletest/src/LICENSE \ + chromium/third_party/libvpx/source/libvpx/third_party/libwebm/LICENSE.TXT \ + chromium/third_party/libvpx/source/libvpx/third_party/libyuv/LICENSE \ + chromium/third_party/libvpx/source/libvpx/third_party/x86inc/LICENSE \ + chromium/third_party/libwebm/source/LICENSE.TXT \ + chromium/third_party/libwebp/LICENSE \ + chromium/third_party/libxml/src/Copyright \ + chromium/third_party/libXNVCtrl/LICENSE \ + chromium/third_party/libxslt/src/Copyright \ + chromium/third_party/libyuv/LICENSE \ + chromium/third_party/lottie/LICENSE \ + chromium/third_party/lzma_sdk/LICENSE \ + chromium/third_party/mako/LICENSE \ + chromium/third_party/markupsafe/LICENSE \ + chromium/third_party/material_design_icons/LICENSE \ + chromium/third_party/mesa_headers/LICENSE \ + chromium/third_party/metrics_proto/LICENSE \ + chromium/third_party/microsoft_webauthn/LICENSE \ + chromium/third_party/minigbm/LICENSE \ + chromium/third_party/minigbm/src/LICENSE \ + chromium/third_party/minizip/src/lib/bzip2/LICENSE \ + chromium/third_party/minizip/src/LICENSE \ + chromium/third_party/mocha/LICENSE \ + chromium/third_party/mockito/LICENSE \ + chromium/third_party/modp_b64/LICENSE \ + chromium/third_party/motemplate/LICENSE \ + chromium/third_party/mozilla/LICENSE \ + chromium/third_party/nasm/LICENSE \ + chromium/third_party/nearby/LICENSE \ + chromium/third_party/nearby/src/LICENSE \ + chromium/third_party/netty4/LICENSE \ + chromium/third_party/netty-tcnative/LICENSE \ + chromium/third_party/node/LICENSE \ + chromium/third_party/objenesis/LICENSE \ + chromium/third_party/ocmock/License.txt \ + chromium/third_party/one_euro_filter/LICENSE \ + chromium/third_party/opencv/src/LICENSE \ + chromium/third_party/openh264/src/LICENSE \ + chromium/third_party/openscreen/src/LICENSE \ + chromium/third_party/openscreen/src/third_party/mozilla/LICENSE.txt \ + chromium/third_party/openscreen/src/third_party/tinycbor/src/LICENSE \ + chromium/third_party/opus/src/COPYING \ + chromium/third_party/opus/src/LICENSE_PLEASE_READ.txt \ + chromium/third_party/ots/LICENSE \ + chromium/third_party/ow2_asm/LICENSE \ + chromium/third_party/pdfium/LICENSE \ + chromium/third_party/pdfium/third_party/bigint/LICENSE \ + chromium/third_party/pdfium/third_party/libpng16/LICENSE \ + chromium/third_party/pdfium/third_party/pymock/LICENSE.txt \ + chromium/third_party/perfetto/LICENSE \ + chromium/third_party/perfetto/src/trace_processor/python/LICENSE \ + chromium/third_party/pexpect/LICENSE \ + chromium/third_party/pffft/LICENSE \ + chromium/third_party/ply/LICENSE \ + chromium/third_party/ply/license.patch \ + chromium/third_party/polymer/LICENSE.polymer \ + chromium/third_party/polymer/v1_0/components-chromium/polymer2/LICENSE.txt \ + chromium/third_party/polymer/v3_0/components-chromium/polymer/LICENSE.txt \ + chromium/third_party/private-join-and-compute/src/crypto/LICENSE \ + chromium/third_party/private-join-and-compute/src/LICENSE \ + chromium/third_party/private-join-and-compute/src/util/LICENSE \ + chromium/third_party/private_membership/LICENSE \ + chromium/third_party/proguard/LICENSE \ + chromium/third_party/protobuf/LICENSE \ + chromium/third_party/pycoverage/LICENSE \ + chromium/third_party/pyelftools/elftools/construct/LICENSE \ + chromium/third_party/pyelftools/LICENSE \ + chromium/third_party/pyjson5/src/LICENSE \ + chromium/third_party/pystache/LICENSE \ + chromium/third_party/Python-Markdown/LICENSE.md \ + chromium/third_party/pywebsocket3/src/LICENSE \ + chromium/third_party/qcms/src/COPYING \ + chromium/third_party/quic_trace/src/LICENSE \ + chromium/third_party/quic_trace/src/third_party/fonts/LICENSE \ + chromium/third_party/quic_trace/src/third_party/glew/LICENSE.txt \ + chromium/third_party/qunit/LICENSE \ + chromium/third_party/r8/LICENSE \ + chromium/third_party/re2/LICENSE \ + chromium/third_party/re2/src/LICENSE \ + chromium/third_party/requests/LICENSE \ + chromium/third_party/rnnoise/COPYING \ + chromium/third_party/robolectric/LICENSE \ + chromium/third_party/robolectric/licenses/extreme.indiana.edu.license.txt \ + chromium/third_party/robolectric/licenses/javolution.license.txt \ + chromium/third_party/robolectric/licenses/pivotal.labs.license.txt \ + chromium/third_party/s2cellid/LICENSE \ + chromium/third_party/schema_org/LICENSE \ + chromium/third_party/securemessage/LICENSE \ + chromium/third_party/securemessage/src/LICENSE \ + chromium/third_party/shaderc/src/kokoro/linux/license_check_docker.sh \ + chromium/third_party/shaderc/src/kokoro/linux/license_check.sh \ + chromium/third_party/shaderc/src/LICENSE \ + chromium/third_party/shaderc/src/license-checker.cfg \ + chromium/third_party/shaderc/src/third_party/LICENSE.glslang \ + chromium/third_party/shaderc/src/third_party/LICENSE.spirv-tools \ + chromium/third_party/shaka-player/LICENSE \ + chromium/third_party/shell-encryption/src/glog/LICENSE \ + chromium/third_party/shell-encryption/src/LICENSE \ + chromium/third_party/shell-encryption/src/prng/LICENSE \ + chromium/third_party/shell-encryption/src/testing/LICENSE \ + chromium/third_party/simplejson/LICENSE.txt \ + chromium/third_party/sinonjs/LICENSE \ + chromium/third_party/six/LICENSE \ + chromium/third_party/six/src/LICENSE \ + chromium/third_party/skia/include/third_party/skcms/LICENSE \ + chromium/third_party/skia/include/third_party/vulkan/LICENSE \ + chromium/third_party/skia/LICENSE \ + chromium/third_party/skia/modules/canvaskit/canvaskit/LICENSE \ + chromium/third_party/skia/modules/pathkit/npm-asmjs/LICENSE \ + chromium/third_party/skia/modules/pathkit/npm-wasm/LICENSE \ + chromium/third_party/skia/third_party/etc1/LICENSE \ + chromium/third_party/skia/third_party/skcms/LICENSE \ + chromium/third_party/skia/third_party/vulkanmemoryallocator/include/LICENSE.txt \ + chromium/third_party/skia/third_party/vulkanmemoryallocator/LICENSE \ + chromium/third_party/skia/third_party/wuffs/LICENSE \ + chromium/third_party/smhasher/LICENSE \ + chromium/third_party/snappy/src/COPYING \ + chromium/third_party/spirv-cross/spirv-cross/LICENSE \ + chromium/third_party/spirv-headers/LICENSE \ + chromium/third_party/spirv-headers/src/LICENSE \ + chromium/third_party/SPIRV-Tools/LICENSE \ + chromium/third_party/SPIRV-Tools/src/LICENSE \ + chromium/third_party/SPIRV-Tools/src/utils/vscode/src/lsp/LICENSE \ + chromium/third_party/sqlite4java/LICENSE \ + chromium/third_party/sqlite/LICENSE \ + chromium/third_party/sqlite/src/autoconf/tea/license.terms \ + chromium/third_party/sqlite/src/LICENSE.md \ + chromium/third_party/subresource-filter-ruleset/LICENSE \ + chromium/third_party/sudden_motion_sensor/LICENSE \ + chromium/third_party/swiftshader/LICENSE.txt \ + chromium/third_party/tcmalloc/LICENSE \ + chromium/third_party/tcmalloc/vendor/COPYING \ + chromium/third_party/test_fonts/LICENSE \ + chromium/third_party/text-fragments-polyfill/LICENSE \ + chromium/third_party/tint/LICENSE \ + chromium/third_party/tint/src/LICENSE \ + chromium/third_party/tlslite/LICENSE \ + chromium/third_party/turbine/LICENSE \ + chromium/third_party/ub-uiautomator/LICENSE \ + chromium/third_party/ukey2/LICENSE \ + chromium/third_party/ukey2/src/LICENSE \ + chromium/third_party/unrar/LICENSE \ + chromium/third_party/unrar/src/license.txt \ + chromium/third_party/usb_ids/LICENSE \ + chromium/third_party/usrsctp/LICENSE \ + chromium/third_party/usrsctp/usrsctplib/LICENSE.md \ + chromium/third_party/v4l-utils/COPYING.libv4l \ + chromium/third_party/vulkan_headers/LICENSE.txt \ + chromium/third_party/vulkan_memory_allocator/LICENSE.txt \ + chromium/third_party/vulkan_memory_allocator/premake/LICENSE.txt \ + chromium/third_party/wds/LICENSE \ + chromium/third_party/wds/src/COPYING \ + chromium/third_party/web-animations-js/LICENSE \ + chromium/third_party/web-animations-js/sources/COPYING \ + chromium/third_party/webdriver/COPYING \ + chromium/third_party/webdriver/LICENSE \ + chromium/third_party/webgpu-cts/src/LICENSE.txt \ + chromium/third_party/webgpu-cts/src/standalone/third_party/jquery/LICENSE.txt \ + chromium/third_party/webpagereplay/LICENSE \ + chromium/third_party/webrtc/common_audio/third_party/ooura/LICENSE \ + chromium/third_party/webrtc/common_audio/third_party/spl_sqrt_floor/LICENSE \ + chromium/third_party/webrtc/examples/androidapp/third_party/autobanh/LICENSE \ + chromium/third_party/webrtc/examples/androidapp/third_party/autobanh/LICENSE.md \ + chromium/third_party/webrtc/examples/objc/AppRTCMobile/third_party/SocketRocket/LICENSE \ + chromium/third_party/webrtc/LICENSE \ + chromium/third_party/webrtc/license_template.txt \ + chromium/third_party/webrtc/modules/third_party/fft/LICENSE \ + chromium/third_party/webrtc/modules/third_party/g711/LICENSE \ + chromium/third_party/webrtc/modules/third_party/g722/LICENSE \ + chromium/third_party/webrtc/modules/third_party/portaudio/LICENSE \ + chromium/third_party/webrtc/rtc_base/third_party/base64/LICENSE \ + chromium/third_party/webrtc/rtc_base/third_party/sigslot/LICENSE \ + chromium/third_party/webxr_test_pages/LICENSE \ + chromium/third_party/webxr_test_pages/webxr-samples/js/cottontail/LICENSE.md \ + chromium/third_party/webxr_test_pages/webxr-samples/js/third-party/dat.gui/LICENSE \ + chromium/third_party/webxr_test_pages/webxr-samples/js/third-party/gl-matrix/LICENSE \ + chromium/third_party/webxr_test_pages/webxr-samples/LICENSE.md \ + chromium/third_party/weston/LICENSE \ + chromium/third_party/weston/src/COPYING \ + chromium/third_party/weston/src/data/COPYING \ + chromium/third_party/widevine/LICENSE \ + chromium/third_party/woff2/LICENSE \ + chromium/third_party/wuffs/LICENSE \ + chromium/third_party/wuffs/src/LICENSE \ + chromium/third_party/xcbproto/src/COPYING \ + chromium/third_party/xdg-utils/LICENSE \ + chromium/third_party/xstream/LICENSE \ + chromium/third_party/zlib/LICENSE \ + chromium/third_party/zxcvbn-cpp/LICENSE.txt \ + chromium/tools/grit/third_party/six/LICENSE \ + chromium/tools/origin_trials/third_party/ed25519/LICENSE \ + chromium/tools/page_cycler/acid3/LICENSE \ + chromium/tools/win/ChromeDebug/ChromeDebug/LICENSE \ + chromium/url/third_party/mozilla/LICENSE.txt \ + chromium/v8/LICENSE \ + chromium/v8/LICENSE.fdlibm \ + chromium/v8/LICENSE.strongtalk \ + chromium/v8/LICENSE.v8 \ + chromium/v8/src/third_party/siphash/LICENSE \ + chromium/v8/src/third_party/utf8-decoder/LICENSE \ + chromium/v8/src/third_party/valgrind/LICENSE \ + chromium/v8/src/third_party/vtune/LICENSE \ + chromium/v8/third_party/colorama/LICENSE \ + chromium/v8/third_party/inspector_protocol/LICENSE \ + chromium/v8/third_party/jsoncpp/LICENSE \ + chromium/v8/third_party/v8/builtins/LICENSE \ + chromium/v8/third_party/wasm-api/LICENSE \ + gn/base/third_party/icu/LICENSE \ + gn/LICENSE \ + ninja/COPYING \ diff --git a/package/qt5/qt5webengine-chromium/qt5webengine-chromium.hash b/package/qt5/qt5webengine-chromium/qt5webengine-chromium.hash new file mode 100644 index 00000000..270da153 --- /dev/null +++ b/package/qt5/qt5webengine-chromium/qt5webengine-chromium.hash @@ -0,0 +1,1256 @@ +# Locally calculated +sha256 fb0953b0cc7b980f128d5f66b8345eb4fbf2e05b70db3926958fb657953b64dc qtwebengine-chromium-18c9261dc5b8aa57a0bdd5b62ce6f648cca1ef5e.tar.bz2 + +# Locally calculated with: +# for i in $(find * -type f \( -iname 'license*' -o -iname 'copying*' -o -name 'APPLE_LICENSE' -o -name 'Copyright' -o -path '*/license_texts/*' -o -path '*/licenses/*' \) -a -not -name '*.cc' -not -name '*.py' -not -name '*.pyc' -not -name '*.h' -not -name 'LICENSE.sha1' -not -name 'licensecheck.pl*' -not -name 'license.after' -not -name 'license.before' -not -path 'chromium/third_party/catapult/*') ; do echo -n "sha256 " ; sha256sum $i ; done | sort --key=3 +sha256 3ed00dd93c75655599456c83cba2f69c6824fd53f24fc24206ba27b65057709d chromium/base/third_party/cityhash/COPYING +sha256 4af93c12062c58058378de2397dc1c92bbff9ddfb1d583a01c84127557ce97ca chromium/base/third_party/double_conversion/LICENSE +sha256 96e7ccbf8d17e319dd77c4ebd4965b64a820bbcc3142a2478fbf95af77417b6a chromium/base/third_party/dynamic_annotations/LICENSE +sha256 5d85142a5609ad177a2d7a2e7cae060b886b8b42f25c5b9803cf0cb5ee04ad2f chromium/base/third_party/icu/LICENSE +sha256 9ad1d4223b80349f3d3ab9cec92f93431b9da14a1b5d41de468ce054a28cf8aa chromium/base/third_party/libevent/LICENSE +sha256 d55a403514532af12dc2fbfb2e41900090a5dd6c7c76c8e4d9b20bcc737eac35 chromium/base/third_party/nspr/LICENSE +sha256 90b2201c340cee36b40a443f949d9eb416f0a0d204c32d350aff87fedeb67ae8 chromium/base/third_party/superfasthash/LICENSE +sha256 538edc6f52c563cf06eca1bac8dd785ff60ef5a371a950265700d5d40386db6e chromium/base/third_party/symbolize/LICENSE +sha256 79955cd80438f041387eb080f2675394e36a806b8b17eca63a4bc568d839509e chromium/base/third_party/valgrind/LICENSE +sha256 c45766baef552c59eeb1fdfbbc690e52e4cd5b135dfd325f21bdfe8ddfe28ce6 chromium/base/third_party/xdg_mime/LICENSE +sha256 18351de3d7e2dc469cc83e77d38a3e25d010251e34eb348bbd1a76275e313997 chromium/base/third_party/xdg_user_dirs/LICENSE +sha256 7a209dd1b94cabdb5ea9c6f9164b9546ffa5daaa671e7767d49510db055f5c51 chromium/buildtools/LICENSE +sha256 845022e0c1db1abb41a6ba4cd3c4b674ec290f3359d9d3c78ae558d4c0ed9308 chromium/LICENSE +sha256 212c5a071f61512786b5e5840b3d70c85e017f3f82939ad4d4a870fc48b33477 chromium/LICENSE.chromium_os +sha256 7a209dd1b94cabdb5ea9c6f9164b9546ffa5daaa671e7767d49510db055f5c51 chromium/mojo/public/LICENSE +sha256 bed70fc84f1bea2b4b144564b9a0f9a5a3bc7b0d78f6e62092aeb689cac56bdd chromium/net/third_party/mozilla_security_manager/LICENSE +sha256 a20c1a32d1f8102432360b42e932869f7c11c7cdbacf9cac554c422132af47f4 chromium/net/third_party/nss/LICENSE +sha256 845022e0c1db1abb41a6ba4cd3c4b674ec290f3359d9d3c78ae558d4c0ed9308 chromium/net/third_party/quiche/src/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/net/third_party/uri_template/LICENSE +sha256 834ee20e8fc3235722ed801bae30cc539c2775be656ff9cc2810fe674e53d5ec chromium/ppapi/LICENSE +sha256 c79a7fea0e3cac04cd43f20e7b648e5a0ff8fa5344e644b0ee09ca1162b62747 chromium/third_party/abseil-cpp/LICENSE +sha256 bf4da21bd20bcfb5b60b7ecc67fa864a79be049e21d6178076887f178dd6c71a chromium/third_party/angle/LICENSE +sha256 3f6f1b520bc53e878ccbb698ad0bacef3752a5f4e4b50a26552bd70f60b40748 chromium/third_party/angle/src/common/third_party/smhasher/LICENSE +sha256 86ec6953794503942b70fcd4f35b565d44f63f703b7037ce44dad965c4aaae91 chromium/third_party/angle/src/common/third_party/xxhash/LICENSE +sha256 09a7c3fbc0b4ae6a9ccc4ffdcbfa511c14b8647a24f24783838862cf6c226d4e chromium/third_party/angle/src/libANGLE/renderer/vulkan/shaders/src/third_party/ffx_spd/LICENSE +sha256 a08ba10adec47027ef8078848729837b1c5a42f140718d7afd65c23f1eeec392 chromium/third_party/angle/src/third_party/compiler/LICENSE +sha256 31346421254a3e6e12687cf17f19f6357ee73a617fa7b3d3ccefdcbabe49bdd3 chromium/third_party/angle/src/third_party/libXNVCtrl/LICENSE +sha256 336f505f8d5aa73ea40b4d798dde86953e9c1f6525757f1d7f18120fea09bb1d chromium/third_party/angle/src/third_party/volk/LICENSE.md +sha256 837402bd25fad9b704265801ca3f92566a98157c1f9a7acd6f446299ba1c305a chromium/third_party/angle/third_party/rapidjson/src/bin/jsonschema/LICENSE +sha256 394faaedb93c1da8ecbd61322518834908fee64381117e01a611bf9fac20baa6 chromium/third_party/angle/third_party/rapidjson/src/contrib/natvis/LICENSE +sha256 a140e5d46fe734a1c78f1a3c3ef207871dd75648be71fdda8e309b23ab8b1f32 chromium/third_party/angle/third_party/rapidjson/src/license.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/angle/third_party/vulkan-headers/src/LICENSE.txt +sha256 43c0a37e6a0fa7ff3c843b3ec5a4fac84b712558ddac103fbd4c1649662a9ece chromium/third_party/angle/third_party/vulkan-loader/src/LICENSE.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/angle/third_party/vulkan-tools/src/LICENSE.txt +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 chromium/third_party/angle/tools/flex-bison/third_party/m4sugar/LICENSE +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 chromium/third_party/angle/tools/flex-bison/third_party/skeletons/LICENSE +sha256 bfec18debedcb337f8af53f143ccf0b1575d0b7c30deaee137f10397eca0d353 chromium/third_party/angle/util/windows/third_party/StackWalker/LICENSE +sha256 b23e682fda7310afe43505ed6041919ccff8f9e0c6799ebd7542cbcef11102e3 chromium/third_party/apple_apsl/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/arcore-android-sdk-client/LICENSE +sha256 584e795ba5833279c327245594d6dc216fc664144fa3626a0bdf136bc00af76c chromium/third_party/arcore-android-sdk/LICENSE +sha256 af175b9d96ee93c21a036152e1b905b0b95304d4ae8c2c921c7609100ba8df7e chromium/third_party/axe-core/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/bazel/LICENSE +sha256 0518cf49c09398259d54fcfff0b5fd36456162c6439886660e53627b3073ef22 chromium/third_party/blanketjs/LICENSE +sha256 a661d10f8f194b1963a75bb4d308f17b078cc064624313a556902d89705f6876 chromium/third_party/blink/LICENSE_FOR_ABOUT_CREDITS +sha256 0b5d3a7cc325942567373b0ecd757d07c132e0ebd7c97bfc63f7e1a76094edb4 chromium/third_party/blink/renderer/core/LICENSE-APPLE +sha256 7555fa34bc131a75ca56d65c40cc1ea8f9515d23e353d4c15d58573a042f7805 chromium/third_party/blink/renderer/core/LICENSE-LGPL-2 +sha256 f2b3bd09663381deb99721109d22b47af1213bb43007a8b56a06c6375c8050ce chromium/third_party/blink/renderer/core/LICENSE-LGPL-2.1 +sha256 6a73f9541c2de74158c0e7cf6b0a58ef774f5a780bf191f2d7ec9cc53efe2bf2 chromium/third_party/blink/renderer/platform/testing/data/third_party/Noto/LICENSE_OFL.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/blink/renderer/platform/testing/data/third_party/Roboto/LICENSE.txt +sha256 5a7b465d39b5e018bc40cc34162176269f7c476989cb4dbcf0ec0b81701545a7 chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/LICENSE.md +sha256 878329f0bd878ad015129ce8bda82f481e86ec2e80831e909c0d67171d922e73 chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/atomicwrites/LICENSE +sha256 88ec6a6c8eafa3b9757e745783938bef3f5e4d5e3c76b1db576aa3ab520e5e1d chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/enum/enum/LICENSE +sha256 663f9253e13519b82ab4a6b1caab6bed05aada70517f28cd0254be8a9fa19ed6 chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/h2/LICENSE +sha256 763a9342a04df62046c9dc748a5287934eb0a5331c6863b3ca0aee20e18cb4ed chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/hpack/LICENSE +sha256 16a39991619e92f18680932da2a9199fdf7d95df3ecaedc52ea06218aabafd6f chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/html5lib/LICENSE +sha256 763a9342a04df62046c9dc748a5287934eb0a5331c6863b3ca0aee20e18cb4ed chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/hyperframe/LICENSE +sha256 b7529b8c07171a78a8c36c3283905528e4812945d977d125eb926e8ccbf245b6 chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/six/LICENSE +sha256 60bd7c54856bf9387221bde5ab55d516d7cea15870d0fed69406bcd1c8ec7c9d chromium/third_party/boringssl/src/LICENSE +sha256 0c125a4dab5ab869473e6491db22f6c0a7f8a4de58588d03bb2b16c0c8ebd7de chromium/third_party/boringssl/src/third_party/fiat/LICENSE +sha256 9702de7e4117a8e2b20dafab11ffda58c198aede066406496bef670d40a22138 chromium/third_party/boringssl/src/third_party/googletest/LICENSE +sha256 58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd chromium/third_party/boringssl/src/third_party/wycheproof_testvectors/LICENSE +sha256 5740985669353ef52e0f320413ff68dc62b6c23a596cd78b6d6b80764f1c50ab chromium/third_party/bouncycastle/LICENSE +sha256 8d5d1311342ed55b486d778a6763f54a26002698ac0cbab64026b98033300dfd chromium/third_party/breakpad/breakpad/LICENSE +sha256 4d03f91b94e0db3bdc9ddaf0060dd41cc94a2096094fbc1417713a2f059658c7 chromium/third_party/breakpad/breakpad/src/third_party/curl/COPYING +sha256 d8eaba95b8d03c5912da9b5823de2c920e84a993133039a22fc8100f9edb33a1 chromium/third_party/breakpad/breakpad/src/third_party/libdisasm/LICENSE +sha256 015b2d5cedb3024339446a63963d073fa831544cf253c5ddd713fccc8d83e939 chromium/third_party/breakpad/LICENSE +sha256 3d180008e36922a4e8daec11c34c7af264fed5962d07924aea928c38e8663c94 chromium/third_party/brotli/LICENSE +sha256 98f8746a39f9a42da35df7046a15b56d0e2f4f76eefc352d67f1bf76e85360b4 chromium/third_party/bspatch/LICENSE +sha256 b5730da9a26472a405b0b1c61d3d166714d9d654ab3282e54e4a01a5f66316c3 chromium/third_party/byte_buddy/LICENSE +sha256 ef5b39dfcafe08323262e3f51a3a9de649978a55ed8ef8eef3c451f2c1e78a53 chromium/third_party/ced/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/ced/src/LICENSE +sha256 3d1d2669d0ba87069b5e202f106193c4eb0e140a2aead31dca9670a0581dd979 chromium/third_party/chaijs/LICENSE +sha256 a190dc9c8043755d90f8b0a75fa66b9e42d4af4c980bf5ddc633f0124db3cee7 chromium/third_party/checkstyle/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/checkstyle/LICENSE.apache20 +sha256 c2d13ec3b431617beb314705c0f42d17ca579eed00032ed8a13dbcd23fc9bdd5 chromium/third_party/cld_3/LICENSE +sha256 c2d13ec3b431617beb314705c0f42d17ca579eed00032ed8a13dbcd23fc9bdd5 chromium/third_party/cld_3/src/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/closure_compiler/compiler/COPYING +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/closure_compiler/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/crashpad/crashpad/LICENSE +sha256 212846e0145aa50fb3a5aef254a370311a93acf6c1e792e47e0068d64c8c3885 chromium/third_party/crashpad/crashpad/third_party/apple_cf/APPLE_LICENSE +sha256 4b45cbe16d7b71b89ae6127e26e0d90a029198ca5e958ad8e3d0b8bbed364d8b chromium/third_party/crashpad/crashpad/third_party/cpp-httplib/cpp-httplib/LICENSE +sha256 f40ee07401827b6ac9cf0aee1aaffb00e42a3f2c729f9c83f96a3daafef5d944 chromium/third_party/crashpad/crashpad/third_party/getopt/LICENSE +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 chromium/third_party/crashpad/crashpad/third_party/glibc/COPYING.LIB +sha256 e5881019d8766c1e88a5fe1dbca4ba40c78011d41fcb18f6e9f50df60182685b chromium/third_party/crashpad/crashpad/third_party/xnu/APPLE_LICENSE +sha256 a1f30b77c01e0995fa32a00119e00749e8731ee8a3c4c3549bce74083c72b0b6 chromium/third_party/crc32c/src/LICENSE +sha256 e9427cf6abc4eaeda0bcd094fca46af4067970079f426b65d5cbacb87bff6366 chromium/third_party/cros_system_api/LICENSE +sha256 7a3cb0e5055874e67db9aa2d5fe26de23204fa994ffbad198901ffe9c812a717 chromium/third_party/d3/src/LICENSE +sha256 b327887de263238deaa80c34cdd2ff3e0ba1d35db585ce14a37ce3e74ee389e9 chromium/third_party/dav1d/libdav1d/COPYING +sha256 2da4494d2a8b5c742afbb905b10621e40129284c977ac138e3081ed0d9d83aed chromium/third_party/dav1d/LICENSE +sha256 b77e952e3feaebd807d27784988b19fb60f83f9fc9a0c03e6aedbbffd5d6f8ee chromium/third_party/dawn/LICENSE +sha256 43452b94e6aa0c2d076ad25b87f580c11571689d52f3aa1a1f7bdcab31a0bd15 chromium/third_party/decklink/LICENSE +sha256 5a2ed53cc5975569e9fa146c4245eaf53377dc1a88bdcb923da6487e53cba55e chromium/third_party/devscripts/COPYING +sha256 13110d66c514a7890c4b388a353bc08fa094fe13d5ed7f3a222cc0a0caa3fd17 chromium/third_party/devtools-frontend/src/front_end/cm_modes/LICENSE +sha256 9fea307fe830918e12b6822f943f4b59bd7715614efb68e834a141ca758bd5f2 chromium/third_party/devtools-frontend/src/front_end/dagre_layout/LICENSE +sha256 f734f7708439c275f3599e2df7de84cd9f360bd13620a30ab376af6c9deb213b chromium/third_party/devtools-frontend/src/front_end/sdk/wasm_source_map/LICENSES.deps +sha256 bdab450fad7ee5d78d9a02d840983f4bccf525a6ded619e1a8fc3e2044256626 chromium/third_party/devtools-frontend/src/front_end/third_party/acorn/LICENSE +sha256 a1930df5d7444dc71fb103d9c58768de1c2c13b96a83e58b7ed6b2eee6621744 chromium/third_party/devtools-frontend/src/front_end/third_party/acorn-logical-assignment/LICENSE +sha256 a1930df5d7444dc71fb103d9c58768de1c2c13b96a83e58b7ed6b2eee6621744 chromium/third_party/devtools-frontend/src/front_end/third_party/acorn-logical-assignment/package/LICENSE +sha256 bdab450fad7ee5d78d9a02d840983f4bccf525a6ded619e1a8fc3e2044256626 chromium/third_party/devtools-frontend/src/front_end/third_party/acorn-loose/LICENSE +sha256 7cdb44aabddbdd78998119d68a39c87424119b663945c79891fc1b022301824c chromium/third_party/devtools-frontend/src/front_end/third_party/acorn-loose/package/LICENSE +sha256 e56a1e867a6ebc064c9d027e022ae15d1878b32f9e546b2373cdb591788cd3fe chromium/third_party/devtools-frontend/src/front_end/third_party/acorn-numeric-separator/LICENSE +sha256 e56a1e867a6ebc064c9d027e022ae15d1878b32f9e546b2373cdb591788cd3fe chromium/third_party/devtools-frontend/src/front_end/third_party/acorn-numeric-separator/package/LICENSE +sha256 7cdb44aabddbdd78998119d68a39c87424119b663945c79891fc1b022301824c chromium/third_party/devtools-frontend/src/front_end/third_party/acorn/package/LICENSE +sha256 af175b9d96ee93c21a036152e1b905b0b95304d4ae8c2c921c7609100ba8df7e chromium/third_party/devtools-frontend/src/front_end/third_party/axe-core/LICENSE +sha256 298d10e24bcd783b150fc07cd64ad175f5084f3615ba0e7c579aa95c55f22eac chromium/third_party/devtools-frontend/src/front_end/third_party/codemirror/LICENSE +sha256 a3f2fe2ac6b471aa80c737c5d283dd049bdc903a73835ee6d4d2cac02fdd53bf chromium/third_party/devtools-frontend/src/front_end/third_party/codemirror/package/LICENSE +sha256 b60e9b66bf4f9ab3aa5d1d20b18410a632fd624cf4ce3aa1eb839087caf35958 chromium/third_party/devtools-frontend/src/front_end/third_party/fabricjs/LICENSE +sha256 7ec9661a8afafab1eee3523d6f1a193eff76314a5ab10b4ce96aefd87621b0c3 chromium/third_party/devtools-frontend/src/front_end/third_party/i18n/LICENSE +sha256 0212e9ffd60f4c2e05426ac172b91266256b9ff4c0f0156e85b761a1d6f5e17f chromium/third_party/devtools-frontend/src/front_end/third_party/intl-messageformat/LICENSE +sha256 fdd0dd22e95c4c8634fe28674547e55e6dad144433ca09493e59ed0f95902f10 chromium/third_party/devtools-frontend/src/front_end/third_party/intl-messageformat/package/LICENSE +sha256 7ec9661a8afafab1eee3523d6f1a193eff76314a5ab10b4ce96aefd87621b0c3 chromium/third_party/devtools-frontend/src/front_end/third_party/lighthouse/LICENSE +sha256 55efdea1a9fe503ed3cd89c2776d3d2131795defaebea421754b428333fbfba3 chromium/third_party/devtools-frontend/src/front_end/third_party/lit-html/LICENSE +sha256 1a5ae5ab221af81b68f4f4c156c0d2e044851272c5e2e6c07d685946557878ea chromium/third_party/devtools-frontend/src/front_end/third_party/lit-html/package/LICENSE +sha256 1b3235c9a9833dee5fcce1ac27d76157584dce78f1ca846bf217439323080234 chromium/third_party/devtools-frontend/src/front_end/third_party/lodash-isequal/LICENSE +sha256 e159c6d48c989185448658f276375bfb2300362ec6d4ae5525a2d49c4bcb947d chromium/third_party/devtools-frontend/src/front_end/third_party/lodash-isequal/package/LICENSE +sha256 91968bf678e8c3d94ebf8596e98ca9cb5fca1c6555b53f721a940cb50f1b3d66 chromium/third_party/devtools-frontend/src/front_end/third_party/marked/LICENSE +sha256 f6b8d4d6f4aff1b6744730b6943ac6e8b96315954e436f032cfaa5cbdcb07ff3 chromium/third_party/devtools-frontend/src/front_end/third_party/marked/package/LICENSE.md +sha256 a1e4522979cd422b42d0b464072eb7d0d218651659f56bf09f8c147384e3f105 chromium/third_party/devtools-frontend/src/front_end/third_party/puppeteer/package/LICENSE +sha256 0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594 chromium/third_party/devtools-frontend/src/front_end/third_party/wasmparser/LICENSE +sha256 0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594 chromium/third_party/devtools-frontend/src/front_end/third_party/wasmparser/package/LICENSE +sha256 7a209dd1b94cabdb5ea9c6f9164b9546ffa5daaa671e7767d49510db055f5c51 chromium/third_party/devtools-frontend/src/LICENSE +sha256 4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b chromium/third_party/devtools-frontend/src/node_modules/abbrev/LICENSE +sha256 71f83c4c0621102a56d9853812777b85751bce7e9726f686f5b056c1f8a4b0e6 chromium/third_party/devtools-frontend/src/node_modules/accepts/LICENSE +sha256 cfa72b62b9ae173078823a3796b25c027a9071046a263beddf966df67018ce06 chromium/third_party/devtools-frontend/src/node_modules/acorn-jsx/LICENSE +sha256 e85e131fa4ed25538ff1f4962ced1fb6f68b079bd9164a790597a0f30b8fd030 chromium/third_party/devtools-frontend/src/node_modules/ajv/LICENSE +sha256 94e1923e52409cfd50e97988d9772c0de15f65700097e3227fec367a39e82b94 chromium/third_party/devtools-frontend/src/node_modules/ansi-colors/LICENSE +sha256 5c932d88256b4ab958f64a856fa48e8bd1f55bc1d96b8149c65689e0c61789d3 chromium/third_party/devtools-frontend/src/node_modules/ansi-escapes/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/ansi-escapes/node_modules/type-fest/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/ansi-regex/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/ansi-styles/license +sha256 5a3b0007c4203f10fe11b3fe8747253eb994f135e10b73e1f88ada941af09c6e chromium/third_party/devtools-frontend/src/node_modules/anymatch/LICENSE +sha256 c8442419dc614089ea022b3da6bfc089b41a58fb7b9030d1e651f2f36189dce2 chromium/third_party/devtools-frontend/src/node_modules/argparse/LICENSE +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/array-find-index/license +sha256 00d402c2bbe7c67369bd01ce2c16b8ed46ccc949a1ee2d6bb8f9606afa8c7434 chromium/third_party/devtools-frontend/src/node_modules/array-includes/LICENSE +sha256 00d402c2bbe7c67369bd01ce2c16b8ed46ccc949a1ee2d6bb8f9606afa8c7434 chromium/third_party/devtools-frontend/src/node_modules/array-includes/node_modules/es-abstract/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/array-includes/node_modules/es-to-primitive/LICENSE +sha256 206c1adcf206dc0031b11232f5b054ec5f1662407ab1ca415247921cab2068ab chromium/third_party/devtools-frontend/src/node_modules/array-includes/node_modules/has-symbols/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/array-includes/node_modules/is-callable/LICENSE +sha256 dc0fe5a22d9336f345ee984f9bf56f11f22877a3aa5fd16a1db9a8ca0e23a5d1 chromium/third_party/devtools-frontend/src/node_modules/array-includes/node_modules/is-regex/LICENSE +sha256 bd40cc437e28a3ad7bef2ad34e6b72e757b182e67bda1acadbab4ef0476f8232 chromium/third_party/devtools-frontend/src/node_modules/array-includes/node_modules/object-inspect/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/array-includes/node_modules/string.prototype.trimleft/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/array-includes/node_modules/string.prototype.trimright/LICENSE +sha256 567b1f5e84afcfc97685f3c7fce4c7502e1ac7a91e79cf10980ecd6a9ad38583 chromium/third_party/devtools-frontend/src/node_modules/array.prototype.flat/LICENSE +sha256 00d402c2bbe7c67369bd01ce2c16b8ed46ccc949a1ee2d6bb8f9606afa8c7434 chromium/third_party/devtools-frontend/src/node_modules/array.prototype.flat/node_modules/es-abstract/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/array.prototype.flat/node_modules/es-to-primitive/LICENSE +sha256 206c1adcf206dc0031b11232f5b054ec5f1662407ab1ca415247921cab2068ab chromium/third_party/devtools-frontend/src/node_modules/array.prototype.flat/node_modules/has-symbols/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/array.prototype.flat/node_modules/is-callable/LICENSE +sha256 dc0fe5a22d9336f345ee984f9bf56f11f22877a3aa5fd16a1db9a8ca0e23a5d1 chromium/third_party/devtools-frontend/src/node_modules/array.prototype.flat/node_modules/is-regex/LICENSE +sha256 bd40cc437e28a3ad7bef2ad34e6b72e757b182e67bda1acadbab4ef0476f8232 chromium/third_party/devtools-frontend/src/node_modules/array.prototype.flat/node_modules/object-inspect/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/array.prototype.flat/node_modules/string.prototype.trimleft/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/array.prototype.flat/node_modules/string.prototype.trimright/LICENSE +sha256 cfc3f455254c0af0655cc3ff46a41ed644b67599f6043346169d285bf2b3cf3b chromium/third_party/devtools-frontend/src/node_modules/array.prototype.map/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/array-union/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/arrify/license +sha256 e80373b1ed0f33cecc47173b4b0c6afe0d0318b32dbd84116a1a957e3f7f43a8 chromium/third_party/devtools-frontend/src/node_modules/asap/LICENSE.md +sha256 69dee148a2cc470554dfa7142e830662062394d0fe67cddd379aba90dc60d6b3 chromium/third_party/devtools-frontend/src/node_modules/astral-regex/license +sha256 a374b737c41b30b1ec04c5fcc17d1b853f008f217cc43a9dbea441abd9afde70 chromium/third_party/devtools-frontend/src/node_modules/ast-types/LICENSE +sha256 d9fed24f132985934fca621c4dc1dfb53e03377a24d0568d424383d7eaa9c0ac chromium/third_party/devtools-frontend/src/node_modules/async/LICENSE +sha256 e5a57cdd72e279910183799153134d0e749a5664fc459c8eacbecf72532b7db3 chromium/third_party/devtools-frontend/src/node_modules/async-limiter/LICENSE +sha256 c4630ac8b89cb317ac5bdd60ac5e4e185eab9bd5151a0c7b3afa41aa83d7ec9b chromium/third_party/devtools-frontend/src/node_modules/autoprefixer/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/code-frame/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/core/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/@babel/code-frame/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/@babel/generator/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/@babel/helper-function-name/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/@babel/helper-get-function-arity/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/@babel/helper-split-export-declaration/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/@babel/highlight/LICENSE +sha256 2e97627cb278aa7556fb9e8817368302301a595b6c7582512b8d74c57b773652 chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/@babel/parser/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/@babel/template/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/@babel/traverse/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/@babel/types/LICENSE +sha256 1fa6ee8bb95a81ae3d73a5bd074a3ac380ffec13697051063ca1a601921b91db chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/convert-source-map/LICENSE +sha256 60acd7711e6c138e6041836e32d922705254cc1568a30fdf16aa8f59bb87aeaa chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/resolve/LICENSE +sha256 c7cc929b57080f4b9d0c6cf57669f0463fc5b39906344dfc8d3bc43426b30eac chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/safe-buffer/LICENSE +sha256 6cb0631f71c7749763fd3dd1d5bee52dd1070ec17f2edc1710079ad070bd2fbd chromium/third_party/devtools-frontend/src/node_modules/@babel/core/node_modules/source-map/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-member-expression-to-functions/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/types/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-module-imports/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-module-imports/node_modules/@babel/types/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-module-transforms/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-module-transforms/node_modules/@babel/code-frame/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-split-export-declaration/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-module-transforms/node_modules/@babel/highlight/LICENSE +sha256 2e97627cb278aa7556fb9e8817368302301a595b6c7582512b8d74c57b773652 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-module-transforms/node_modules/@babel/parser/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-module-transforms/node_modules/@babel/template/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-module-transforms/node_modules/@babel/types/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-optimise-call-expression/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-optimise-call-expression/node_modules/@babel/types/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/node_modules/@babel/code-frame/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/node_modules/@babel/generator/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/node_modules/@babel/helper-function-name/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/node_modules/@babel/helper-get-function-arity/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/node_modules/@babel/helper-split-export-declaration/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/node_modules/@babel/highlight/LICENSE +sha256 2e97627cb278aa7556fb9e8817368302301a595b6c7582512b8d74c57b773652 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/node_modules/@babel/parser/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/node_modules/@babel/template/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/node_modules/@babel/traverse/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/node_modules/@babel/types/LICENSE +sha256 6cb0631f71c7749763fd3dd1d5bee52dd1070ec17f2edc1710079ad070bd2fbd chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-replace-supers/node_modules/source-map/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-simple-access/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-simple-access/node_modules/@babel/code-frame/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-simple-access/node_modules/@babel/highlight/LICENSE +sha256 2e97627cb278aa7556fb9e8817368302301a595b6c7582512b8d74c57b773652 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-simple-access/node_modules/@babel/parser/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-simple-access/node_modules/@babel/template/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-simple-access/node_modules/@babel/types/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/node_modules/@babel/code-frame/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/node_modules/@babel/generator/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/node_modules/@babel/helper-function-name/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/node_modules/@babel/helper-get-function-arity/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/node_modules/@babel/helper-split-export-declaration/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/node_modules/@babel/highlight/LICENSE +sha256 2e97627cb278aa7556fb9e8817368302301a595b6c7582512b8d74c57b773652 chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/node_modules/@babel/parser/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/node_modules/@babel/template/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/node_modules/@babel/traverse/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/node_modules/@babel/types/LICENSE +sha256 6cb0631f71c7749763fd3dd1d5bee52dd1070ec17f2edc1710079ad070bd2fbd chromium/third_party/devtools-frontend/src/node_modules/@babel/helpers/node_modules/source-map/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-validator-identifier/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/@babel/highlight/LICENSE +sha256 63cb98b3f6abfb3c3592c16f88253c1bdc834087bf52671e8ce5609e4eb693cf chromium/third_party/devtools-frontend/src/node_modules/bail/license +sha256 a1bd5deadb6a06dd74efa852c1b8b23f63b67f2214fbe9c8bd591da51da69268 chromium/third_party/devtools-frontend/src/node_modules/balanced-match/LICENSE.md +sha256 f3eca6ff762533fa5a77caf954a143e48afa204668cf97dce758c45a9e006be3 chromium/third_party/devtools-frontend/src/node_modules/base64-arraybuffer/LICENSE-MIT +sha256 de6059eadd0c1327f30a22663392e57d36b97b0ac9bb48f4875c8008ba823c30 chromium/third_party/devtools-frontend/src/node_modules/base64id/LICENSE +sha256 5b37224c080cdcc97c871ada971c224e9926370fe74f11b539aa1cf9f3b1aca1 chromium/third_party/devtools-frontend/src/node_modules/base64-js/LICENSE +sha256 85fe65eefab89e2a683232b96e6f689279821a0bd3b351e9ab6a6ebd19dea567 chromium/third_party/devtools-frontend/src/node_modules/binary-extensions/license +sha256 9377db95383c8befacf05c6e465d969d756edf178487ca1344fdf3ba147c596f chromium/third_party/devtools-frontend/src/node_modules/bl/LICENSE.md +sha256 7d3e0d8d5604632b94ff9aea3001153c506566cd1c6c7bb37000acdb1fb37417 chromium/third_party/devtools-frontend/src/node_modules/blob/LICENSE +sha256 23d466b1b134b415b66fa50c6526b4cf3e7b9258554da88d3abb371721e7ce68 chromium/third_party/devtools-frontend/src/node_modules/body-parser/LICENSE +sha256 98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422 chromium/third_party/devtools-frontend/src/node_modules/body-parser/node_modules/debug/LICENSE +sha256 6652830c2607c722b66f1b57de15877ab8fc5dca406cc5b335afeb365d0f32c1 chromium/third_party/devtools-frontend/src/node_modules/body-parser/node_modules/ms/license.md +sha256 68f12f6e2c33688699249c01d8f9623c534da20aa71989c57b061b7bc1676d14 chromium/third_party/devtools-frontend/src/node_modules/brace-expansion/LICENSE +sha256 e70ff771504ba41f2be55de812a017ff46433d7a250c862e38fc419159e44500 chromium/third_party/devtools-frontend/src/node_modules/braces/LICENSE +sha256 f25bf9bf3ae8984bcd43bf7fb8f78e7eec8d577081fb8d0989cfa7c67ecebb8e chromium/third_party/devtools-frontend/src/node_modules/browserslist/LICENSE +sha256 fd595a25dd3c90492a8cc3b888aa9ae47630173181efed17f71b4c689d99d0ec chromium/third_party/devtools-frontend/src/node_modules/browser-stdout/LICENSE +sha256 14895b82e3367b66bdb127fe91505f8615491f2a23eb1c0b7d8f7c54be67f57a chromium/third_party/devtools-frontend/src/node_modules/buffer-crc32/LICENSE +sha256 14275f5c8139d02054c5259d52a88ccbba662a86af18c30f071c8d082dc6004c chromium/third_party/devtools-frontend/src/node_modules/buffer-from/LICENSE +sha256 06bafa45fdad2579ba0e43b0c9b2c6290287c99c4203c300254a462b38a307f6 chromium/third_party/devtools-frontend/src/node_modules/buffer/LICENSE +sha256 e3b44af066615de2ea48d18d852d0762f18c0b2efcea714fa48a6f729d405b85 chromium/third_party/devtools-frontend/src/node_modules/bytes/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/callsites/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/camelcase-keys/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/camelcase/license +sha256 fd3a263fe19ed8faa9068b43abaebafc02c77897b0c6fc09abc04bb592e5f16e chromium/third_party/devtools-frontend/src/node_modules/caniuse-lite/LICENSE +sha256 63cb98b3f6abfb3c3592c16f88253c1bdc834087bf52671e8ce5609e4eb693cf chromium/third_party/devtools-frontend/src/node_modules/ccount/license +sha256 b181da80336ff9dd1043fc8be1a764d7382363433319aa872e4d2cb5ce2a3066 chromium/third_party/devtools-frontend/src/node_modules/chai/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/chalk/license +sha256 63cb98b3f6abfb3c3592c16f88253c1bdc834087bf52671e8ce5609e4eb693cf chromium/third_party/devtools-frontend/src/node_modules/character-entities-html4/license +sha256 63cb98b3f6abfb3c3592c16f88253c1bdc834087bf52671e8ce5609e4eb693cf chromium/third_party/devtools-frontend/src/node_modules/character-entities-legacy/license +sha256 63cb98b3f6abfb3c3592c16f88253c1bdc834087bf52671e8ce5609e4eb693cf chromium/third_party/devtools-frontend/src/node_modules/character-entities/license +sha256 63cb98b3f6abfb3c3592c16f88253c1bdc834087bf52671e8ce5609e4eb693cf chromium/third_party/devtools-frontend/src/node_modules/character-reference-invalid/license +sha256 7df1d6cf5b4112cbe277a84269e02ae631603a9a3a21b8328a34c30b8c3dd1ab chromium/third_party/devtools-frontend/src/node_modules/chardet/LICENSE +sha256 e5aee0714b6ecc416454b968d1017570ef609f20d8722ab84b07acd550b78198 chromium/third_party/devtools-frontend/src/node_modules/check-error/LICENSE +sha256 db9ba183d4cbfbaf6c27db2effddbb84b46340c33ed32a066bc0b144a3ea1298 chromium/third_party/devtools-frontend/src/node_modules/chokidar/LICENSE +sha256 99de4c30f4643c00d4895d9c6ade0af4ec43d301449c191f5fbe41b53bb6a13a chromium/third_party/devtools-frontend/src/node_modules/chokidar/node_modules/fsevents/LICENSE +sha256 dffec71d93f273d2af7b54c6c7e7e70b3289c632ec0d7253210ec21ac336d5ac chromium/third_party/devtools-frontend/src/node_modules/chokidar/node_modules/readdirp/LICENSE +sha256 4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b chromium/third_party/devtools-frontend/src/node_modules/chownr/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/cli-cursor/license +sha256 2dc0465729366c3a7890dfa9e972a1ba7048a26c02116fb8b419a6a1ac110149 chromium/third_party/devtools-frontend/src/node_modules/cliui/LICENSE.txt +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/cliui/node_modules/ansi-regex/license +sha256 483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a chromium/third_party/devtools-frontend/src/node_modules/cliui/node_modules/emoji-regex/LICENSE-MIT.txt +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/cliui/node_modules/string-width/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/cliui/node_modules/strip-ansi/license +sha256 33fa5470b2195e410b075a32516b6ad27784b8a8ff74ae90cfd60c14b76e6644 chromium/third_party/devtools-frontend/src/node_modules/cli-width/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/clone-regexp/license +sha256 63cb98b3f6abfb3c3592c16f88253c1bdc834087bf52671e8ce5609e4eb693cf chromium/third_party/devtools-frontend/src/node_modules/collapse-white-space/license +sha256 693866fc419c6f61c8570438ec00659d156ec2b4d4a4d04091711f5f11a365d4 chromium/third_party/devtools-frontend/src/node_modules/color-convert/LICENSE +sha256 7357445bac398c76c0aef75a587009fe406d40de6a79789eb5b7ecbbad317ef2 chromium/third_party/devtools-frontend/src/node_modules/color-name/LICENSE +sha256 77ffe84006509949525fd57df06f4a6a80ad862c5314b66ab5bb6ac4cee6280b chromium/third_party/devtools-frontend/src/node_modules/colors/LICENSE +sha256 04512a63dce4d2d506ad612dc0bd7681ccf6e3655f7b6eaef7dfac8323d1ec0b chromium/third_party/devtools-frontend/src/node_modules/commander/LICENSE +sha256 8bb16db1b047019e4395965f2cf3611b06c34bf86dc2d0210b3c3f91b53c21fe chromium/third_party/devtools-frontend/src/node_modules/commondir/LICENSE +sha256 0f0b408b8b871d983e767528c6dc51e0ad7efaa022890c449fe2b2e1ee24dbb7 chromium/third_party/devtools-frontend/src/node_modules/component-emitter/LICENSE +sha256 435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b chromium/third_party/devtools-frontend/src/node_modules/concat-map/LICENSE +sha256 9913ff70f23424d49fda2b05902cfb72f17ae1e48aaf898c349a284289a74751 chromium/third_party/devtools-frontend/src/node_modules/connect/LICENSE +sha256 98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422 chromium/third_party/devtools-frontend/src/node_modules/connect/node_modules/debug/LICENSE +sha256 6652830c2607c722b66f1b57de15877ab8fc5dca406cc5b335afeb365d0f32c1 chromium/third_party/devtools-frontend/src/node_modules/connect/node_modules/ms/license.md +sha256 0798f37cff4a3f438c071316e41f94ffe110116a313ab0fc4f8caa07218f1f0f chromium/third_party/devtools-frontend/src/node_modules/contains-path/LICENSE +sha256 257aed98914108e91a337912727b6a802eef218248507f74b76faffaff517a38 chromium/third_party/devtools-frontend/src/node_modules/content-type/LICENSE +sha256 c02110eedc16c7114f1a9bdc026c65626ce1d9c7e27fd51a8e0feee8a48a6858 chromium/third_party/devtools-frontend/src/node_modules/cookie/LICENSE +sha256 8e714750725e75c8b31172ef84c0805f94873f86e3b5cfca8a948553f0778fa1 chromium/third_party/devtools-frontend/src/node_modules/cosmiconfig/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/cosmiconfig/node_modules/parse-json/license +sha256 aaa78451b6fecd1b9c4594c796c133c0e90cad100372ff8bc6de615e9ef9adf1 chromium/third_party/devtools-frontend/src/node_modules/cross-spawn/LICENSE +sha256 483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a chromium/third_party/devtools-frontend/src/node_modules/cssesc/LICENSE-MIT.txt +sha256 53ecc31e1632c07980cb0c97dcaf3d1d20323d21194b92150987a4fecf517b3c chromium/third_party/devtools-frontend/src/node_modules/custom-event/LICENSE +sha256 9660914267128b5f96a102bd7f6268c249110a39cb7c4bb7f536d856445d739c chromium/third_party/devtools-frontend/src/node_modules/date-format/LICENSE +sha256 98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422 chromium/third_party/devtools-frontend/src/node_modules/debug/LICENSE +sha256 5f9e03a50e10f262f7bd356fe323b12f461f14dae6762611285a0d7479340ae7 chromium/third_party/devtools-frontend/src/node_modules/debuglog/LICENSE +sha256 840c00ea351c8aab93f37ff132bc87e58711aac287baeaed5788132970aca500 chromium/third_party/devtools-frontend/src/node_modules/decamelize-keys/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/decamelize-keys/node_modules/map-obj/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/decamelize/license +sha256 e5aee0714b6ecc416454b968d1017570ef609f20d8722ab84b07acd550b78198 chromium/third_party/devtools-frontend/src/node_modules/deep-eql/LICENSE +sha256 f2042f3634c4136d06b5139c9c6aefb81a3a462b514548bc1845953233dfba98 chromium/third_party/devtools-frontend/src/node_modules/deep-is/LICENSE +sha256 00d402c2bbe7c67369bd01ce2c16b8ed46ccc949a1ee2d6bb8f9606afa8c7434 chromium/third_party/devtools-frontend/src/node_modules/define-properties/LICENSE +sha256 bd47ce7b88c7759630d1e2b9fcfa170a0f1fde522be09e13fb1581a79d090400 chromium/third_party/devtools-frontend/src/node_modules/depd/LICENSE +sha256 7a209dd1b94cabdb5ea9c6f9164b9546ffa5daaa671e7767d49510db055f5c51 chromium/third_party/devtools-frontend/src/node_modules/devtools-protocol/LICENSE +sha256 4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b chromium/third_party/devtools-frontend/src/node_modules/dezalgo/LICENSE +sha256 152f0fb43e953fcf5c56c5bfa4c834bb96b1603e4026319c613dd3e734f305cf chromium/third_party/devtools-frontend/src/node_modules/diff/LICENSE +sha256 545278991ee5f1fb4372f913ec44837cff9395175140f8f21118074330a659cb chromium/third_party/devtools-frontend/src/node_modules/di/LICENSE +sha256 69dee148a2cc470554dfa7142e830662062394d0fe67cddd379aba90dc60d6b3 chromium/third_party/devtools-frontend/src/node_modules/dir-glob/license +sha256 5c272e206669b79ee20fa89fa8fa888d5b56186f16c55a5614753ad3412e2ae9 chromium/third_party/devtools-frontend/src/node_modules/doctrine/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/devtools-frontend/src/node_modules/doctrine/LICENSE.closure-compiler +sha256 0e74697a68cebdcd61502c30fe80ab7f9e341d995dcd452023654d57133534b1 chromium/third_party/devtools-frontend/src/node_modules/doctrine/LICENSE.esprima +sha256 cb992345949ccd6e8394b2cd6c465f7b897c864f845937dbf64e8997f389e164 chromium/third_party/devtools-frontend/src/node_modules/domelementtype/LICENSE +sha256 cb992345949ccd6e8394b2cd6c465f7b897c864f845937dbf64e8997f389e164 chromium/third_party/devtools-frontend/src/node_modules/domhandler/LICENSE +sha256 94cfe87de9b178e8fee313a19178e625129e2ce559db32e772e7bd95114ee6ff chromium/third_party/devtools-frontend/src/node_modules/dom-serializer/LICENSE +sha256 cb992345949ccd6e8394b2cd6c465f7b897c864f845937dbf64e8997f389e164 chromium/third_party/devtools-frontend/src/node_modules/dom-serializer/node_modules/domelementtype/LICENSE +sha256 cb992345949ccd6e8394b2cd6c465f7b897c864f845937dbf64e8997f389e164 chromium/third_party/devtools-frontend/src/node_modules/dom-serializer/node_modules/entities/LICENSE +sha256 cb992345949ccd6e8394b2cd6c465f7b897c864f845937dbf64e8997f389e164 chromium/third_party/devtools-frontend/src/node_modules/domutils/LICENSE +sha256 965ef284f7f4c176842ec2e87fa13e79feed777d56d7a21a5a3b38f1bb6dc288 chromium/third_party/devtools-frontend/src/node_modules/ee-first/LICENSE +sha256 25ba5c59dad3e0dd8f9540beaa0f0a86a10e3aec35af5fdc8e88c5f6a5c0d8c6 chromium/third_party/devtools-frontend/src/node_modules/electron-to-chromium/LICENSE +sha256 483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a chromium/third_party/devtools-frontend/src/node_modules/emoji-regex/LICENSE-MIT.txt +sha256 7585ea7bba616ccbbe43cb54ecb67956688c3c5641bb84f3099a652a73193afe chromium/third_party/devtools-frontend/src/node_modules/encodeurl/LICENSE +sha256 3fe8d55a98dbf260eace67c00cf9bc53edb46234e840098a0b93df3096b97fb6 chromium/third_party/devtools-frontend/src/node_modules/end-of-stream/LICENSE +sha256 bb996a5665c8e18041251e833e52b590f0da5050c1878aa3e3a47f71bb16fa6d chromium/third_party/devtools-frontend/src/node_modules/engine.io-client/LICENSE +sha256 98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422 chromium/third_party/devtools-frontend/src/node_modules/engine.io-client/node_modules/debug/LICENSE +sha256 6652830c2607c722b66f1b57de15877ab8fc5dca406cc5b335afeb365d0f32c1 chromium/third_party/devtools-frontend/src/node_modules/engine.io-client/node_modules/ms/license.md +sha256 8e0349070612cb59fc604588974e193d8363f0a08752caf31d3f270a609d346a chromium/third_party/devtools-frontend/src/node_modules/engine.io/LICENSE +sha256 98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422 chromium/third_party/devtools-frontend/src/node_modules/engine.io/node_modules/debug/LICENSE +sha256 6652830c2607c722b66f1b57de15877ab8fc5dca406cc5b335afeb365d0f32c1 chromium/third_party/devtools-frontend/src/node_modules/engine.io/node_modules/ms/license.md +sha256 2a190271977c2ad47c85a9e08cc05d078fe9293643061d466d2ae89ce8e5c2f1 chromium/third_party/devtools-frontend/src/node_modules/engine.io-parser/LICENSE +sha256 cb992345949ccd6e8394b2cd6c465f7b897c864f845937dbf64e8997f389e164 chromium/third_party/devtools-frontend/src/node_modules/entities/LICENSE +sha256 435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b chromium/third_party/devtools-frontend/src/node_modules/ent/LICENSE +sha256 92b07a2e5b0e051d37dde85042c736d6d551cfcbc0983f39d7ef903b3986bbc1 chromium/third_party/devtools-frontend/src/node_modules/error-ex/LICENSE +sha256 00d402c2bbe7c67369bd01ce2c16b8ed46ccc949a1ee2d6bb8f9606afa8c7434 chromium/third_party/devtools-frontend/src/node_modules/es-abstract/LICENSE +sha256 206c1adcf206dc0031b11232f5b054ec5f1662407ab1ca415247921cab2068ab chromium/third_party/devtools-frontend/src/node_modules/es-abstract/node_modules/has-symbols/LICENSE +sha256 a5e49293b629194f16e08c965807b34a4a8f45aa2735658a3b0e3c1478a34b30 chromium/third_party/devtools-frontend/src/node_modules/es-abstract/node_modules/string.prototype.trimend/LICENSE +sha256 a5e49293b629194f16e08c965807b34a4a8f45aa2735658a3b0e3c1478a34b30 chromium/third_party/devtools-frontend/src/node_modules/es-abstract/node_modules/string.prototype.trimstart/LICENSE +sha256 cfc3f455254c0af0655cc3ff46a41ed644b67599f6043346169d285bf2b3cf3b chromium/third_party/devtools-frontend/src/node_modules/es-array-method-boxes-properly/LICENSE +sha256 255aa557a1f55224ce522f311629c0bf20854740a67955cefd798fbd1d3d1ded chromium/third_party/devtools-frontend/src/node_modules/escape-html/LICENSE +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/escape-string-regexp/license +sha256 0e74697a68cebdcd61502c30fe80ab7f9e341d995dcd452023654d57133534b1 chromium/third_party/devtools-frontend/src/node_modules/escodegen/LICENSE.BSD +sha256 94bcb9959136723aa4fb36e1a6c4d5c662a2369978cfae344dabfb83ae619e79 chromium/third_party/devtools-frontend/src/node_modules/escodegen/node_modules/esprima/LICENSE.BSD +sha256 cfc3f455254c0af0655cc3ff46a41ed644b67599f6043346169d285bf2b3cf3b chromium/third_party/devtools-frontend/src/node_modules/es-get-iterator/LICENSE +sha256 206c1adcf206dc0031b11232f5b054ec5f1662407ab1ca415247921cab2068ab chromium/third_party/devtools-frontend/src/node_modules/es-get-iterator/node_modules/has-symbols/LICENSE +sha256 68f12f6e2c33688699249c01d8f9623c534da20aa71989c57b061b7bc1676d14 chromium/third_party/devtools-frontend/src/node_modules/es-get-iterator/node_modules/isarray/LICENSE +sha256 7829efc4266fad5f57f7fc489429a3b35d0c62183c0bd617ef6591f64c980c92 chromium/third_party/devtools-frontend/src/node_modules/eslint-import-resolver-node/LICENSE +sha256 98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422 chromium/third_party/devtools-frontend/src/node_modules/eslint-import-resolver-node/node_modules/debug/LICENSE +sha256 6652830c2607c722b66f1b57de15877ab8fc5dca406cc5b335afeb365d0f32c1 chromium/third_party/devtools-frontend/src/node_modules/eslint-import-resolver-node/node_modules/ms/license.md +sha256 60acd7711e6c138e6041836e32d922705254cc1568a30fdf16aa8f59bb87aeaa chromium/third_party/devtools-frontend/src/node_modules/eslint-import-resolver-node/node_modules/resolve/LICENSE +sha256 db83f2ede67f36cfab1ea0721ea2ee97515863e9a65346881f305e430451cc91 chromium/third_party/devtools-frontend/src/node_modules/eslint/LICENSE +sha256 7829efc4266fad5f57f7fc489429a3b35d0c62183c0bd617ef6591f64c980c92 chromium/third_party/devtools-frontend/src/node_modules/eslint-module-utils/LICENSE +sha256 98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422 chromium/third_party/devtools-frontend/src/node_modules/eslint-module-utils/node_modules/debug/LICENSE +sha256 6652830c2607c722b66f1b57de15877ab8fc5dca406cc5b335afeb365d0f32c1 chromium/third_party/devtools-frontend/src/node_modules/eslint-module-utils/node_modules/ms/license.md +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/eslint/node_modules/ansi-regex/license +sha256 5c932d88256b4ab958f64a856fa48e8bd1f55bc1d96b8149c65689e0c61789d3 chromium/third_party/devtools-frontend/src/node_modules/eslint/node_modules/globals/license +sha256 b9eb082c39fe245e38793699074c394c43a722c51fce031c3c165cb92a31035c chromium/third_party/devtools-frontend/src/node_modules/eslint/node_modules/optionator/LICENSE +sha256 4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b chromium/third_party/devtools-frontend/src/node_modules/eslint/node_modules/semver/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/eslint/node_modules/strip-ansi/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/eslint/node_modules/strip-json-comments/license +sha256 7829efc4266fad5f57f7fc489429a3b35d0c62183c0bd617ef6591f64c980c92 chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/LICENSE +sha256 7829efc4266fad5f57f7fc489429a3b35d0c62183c0bd617ef6591f64c980c92 chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/memo-parser/LICENSE +sha256 98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422 chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/debug/LICENSE +sha256 1925669fabfda8475cb886afc52ad90d518fcdc5ca415d086f88db70bb1232eb chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/doctrine/LICENSE.BSD +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/doctrine/LICENSE.closure-compiler +sha256 0e74697a68cebdcd61502c30fe80ab7f9e341d995dcd452023654d57133534b1 chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/doctrine/LICENSE.esprima +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/find-up/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/load-json-file/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/locate-path/license +sha256 6652830c2607c722b66f1b57de15877ab8fc5dca406cc5b335afeb365d0f32c1 chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/ms/license.md +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/path-exists/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/path-type/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/pify/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/p-limit/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/p-locate/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/p-try/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/read-pkg/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/read-pkg-up/license +sha256 60acd7711e6c138e6041836e32d922705254cc1568a30fdf16aa8f59bb87aeaa chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-import/node_modules/resolve/LICENSE +sha256 b67ae8fe5f32d0e6164655de53075cba04bb69c23e7d11efcfed6a0fa265ef64 chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-mocha/LICENSE +sha256 541c415066b6139f0fb6ad55f633abbc62f0ba6b54543f1ff00c762e76a90239 chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-rulesdir/LICENSE.md +sha256 d3a724e2ed749f172ff70b62a1d0631b7d4b0ea273782365a3464d4e2d6b6dbd chromium/third_party/devtools-frontend/src/node_modules/eslint-scope/LICENSE +sha256 fcf6eabf68ca96988a6b506b4fdc6cc32535d80eb2e11c79724af5ac6f50262b chromium/third_party/devtools-frontend/src/node_modules/eslint-utils/LICENSE +sha256 d8bf34ff6d190640a01e7704ad78253fc181bc128949d71273fbbaa12f33c0b4 chromium/third_party/devtools-frontend/src/node_modules/eslint-visitor-keys/LICENSE +sha256 6273faa0d14a54972c0341a724010eb8cd928ee486745a9eea8cf80680ba5098 chromium/third_party/devtools-frontend/src/node_modules/espree/LICENSE +sha256 7cdb44aabddbdd78998119d68a39c87424119b663945c79891fc1b022301824c chromium/third_party/devtools-frontend/src/node_modules/espree/node_modules/acorn/LICENSE +sha256 ac68116ae73740de4190892f334992e449a124600924ec761e64319d3aac9e6e chromium/third_party/devtools-frontend/src/node_modules/esquery/license.txt +sha256 0e74697a68cebdcd61502c30fe80ab7f9e341d995dcd452023654d57133534b1 chromium/third_party/devtools-frontend/src/node_modules/esquery/node_modules/estraverse/LICENSE.BSD +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/es-to-primitive/LICENSE +sha256 0e74697a68cebdcd61502c30fe80ab7f9e341d995dcd452023654d57133534b1 chromium/third_party/devtools-frontend/src/node_modules/estraverse/LICENSE.BSD +sha256 0e74697a68cebdcd61502c30fe80ab7f9e341d995dcd452023654d57133534b1 chromium/third_party/devtools-frontend/src/node_modules/esutils/LICENSE.BSD +sha256 3aecc12b1cb28832b5f65ab64291de96568c3f236a74d646281b4491f7bcadbf chromium/third_party/devtools-frontend/src/node_modules/eventemitter3/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/execall/license +sha256 97af7428f93afbab9bf79cd09254da1357161794f4255eb1b4599f04dd2d2e7c chromium/third_party/devtools-frontend/src/node_modules/extend/LICENSE +sha256 e33b7bc13a0e5ea9ed6718e12e99a5b0b60276162f0195aa7f342397f4b0155d chromium/third_party/devtools-frontend/src/node_modules/external-editor/LICENSE +sha256 77b2de947c65f3062fb347118ca198ca50898ead84a8509d8153fa65741f029b chromium/third_party/devtools-frontend/src/node_modules/extract-zip/LICENSE +sha256 7bf9b2de73a6b356761c948d0e9eeb4be6c1270bd04c79cd489c1e400ffdfc1a chromium/third_party/devtools-frontend/src/node_modules/fast-deep-equal/LICENSE +sha256 9363d160bf41d46d83901a5d24fc3fe2094c2afc17b4a2378914b273977ee2de chromium/third_party/devtools-frontend/src/node_modules/fast-glob/LICENSE +sha256 d0cd141b0c322fded5dfad1d4645bb2fedfc05b7321fe1009469638190d59ef9 chromium/third_party/devtools-frontend/src/node_modules/fast-glob/node_modules/picomatch/LICENSE +sha256 a833d366242c298cf1b10263516572fb8dcbe68eb5072cdcac2b4546e2b4eb36 chromium/third_party/devtools-frontend/src/node_modules/fast-json-stable-stringify/LICENSE +sha256 942a98cb8846a6354266193f173c1354615827fbb7d67f68399599dff12c4d6a chromium/third_party/devtools-frontend/src/node_modules/fast-levenshtein/LICENSE.md +sha256 c3367f6d01a79d368fc4fbb41b3615fcd92f243d6597ab96742f6f976f9325af chromium/third_party/devtools-frontend/src/node_modules/fastq/LICENSE +sha256 176d95320d565cb034d8323797b6cd6160238f625453687f98aad2085c46c3b3 chromium/third_party/devtools-frontend/src/node_modules/fd-slicer/LICENSE +sha256 5c932d88256b4ab958f64a856fa48e8bd1f55bc1d96b8149c65689e0c61789d3 chromium/third_party/devtools-frontend/src/node_modules/figures/license +sha256 c8c8324aff32c44f9e501aac5b3b97540c26af7d6dd6af8bce5e34300596e27d chromium/third_party/devtools-frontend/src/node_modules/file-entry-cache/LICENSE +sha256 35bdd8a44339719441900fb50fbefc5e2dca1ca662cbaed7a687de842c8b70f2 chromium/third_party/devtools-frontend/src/node_modules/fill-range/LICENSE +sha256 24973d5320410e565ec92f18f73f12af7d97c634d414ba170d119fe3f98904c8 chromium/third_party/devtools-frontend/src/node_modules/finalhandler/LICENSE +sha256 98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422 chromium/third_party/devtools-frontend/src/node_modules/finalhandler/node_modules/debug/LICENSE +sha256 6652830c2607c722b66f1b57de15877ab8fc5dca406cc5b335afeb365d0f32c1 chromium/third_party/devtools-frontend/src/node_modules/finalhandler/node_modules/ms/license.md +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/find-up/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/find-up/node_modules/path-exists/license +sha256 c8c8324aff32c44f9e501aac5b3b97540c26af7d6dd6af8bce5e34300596e27d chromium/third_party/devtools-frontend/src/node_modules/flat-cache/LICENSE +sha256 4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b chromium/third_party/devtools-frontend/src/node_modules/flat-cache/node_modules/rimraf/LICENSE +sha256 95a61f61553614db5421a2cefb17c22ff6b2b4b2206f5bc8913d04f72a22b033 chromium/third_party/devtools-frontend/src/node_modules/flat/LICENSE +sha256 5097efeab30293dd7e26d6960b6b94f1aeca958d22f1eca3535c482a891e95a9 chromium/third_party/devtools-frontend/src/node_modules/flatted/LICENSE +sha256 bfa8a54bb952ccda79f0f1889721d108f5b605babbb2b8a3705ffb52f4132eb7 chromium/third_party/devtools-frontend/src/node_modules/follow-redirects/LICENSE +sha256 98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422 chromium/third_party/devtools-frontend/src/node_modules/follow-redirects/node_modules/debug/LICENSE +sha256 2281f2db407bdbb54f069eec38128b2dee2c0c952f52b786ef1faecb81767b3c chromium/third_party/devtools-frontend/src/node_modules/fs-constants/LICENSE +sha256 1e76029602ae9b21cc4e612db2496d92febed882ba13ba745f8b3309e85f9d39 chromium/third_party/devtools-frontend/src/node_modules/fs-extra/LICENSE +sha256 8465b04b67f473341171b5c9c8b2c741a4a395b3f6ed58339b3a4f4db3db7472 chromium/third_party/devtools-frontend/src/node_modules/fs.realpath/LICENSE +sha256 e67aed7df22dc8031e4fcf5338fe91cb33e3817e5c58a99a2a2802eea9069791 chromium/third_party/devtools-frontend/src/node_modules/functional-red-black-tree/LICENSE +sha256 773e131a7684726005a7e4688a80b4620033bc08499bc1404dd1a1eb3bca725e chromium/third_party/devtools-frontend/src/node_modules/function-bind/LICENSE +sha256 e3a956681ee067f971ac413994171b3d90ca801ec6324e76c9c55366cfe31cb0 chromium/third_party/devtools-frontend/src/node_modules/gensync/LICENSE +sha256 902dbb4154679fb2b8d7c33878183f45b268d01eae5e5033dddaa8852d45f213 chromium/third_party/devtools-frontend/src/node_modules/get-caller-file/LICENSE.md +sha256 e5aee0714b6ecc416454b968d1017570ef609f20d8722ab84b07acd550b78198 chromium/third_party/devtools-frontend/src/node_modules/get-func-name/LICENSE +sha256 5c932d88256b4ab958f64a856fa48e8bd1f55bc1d96b8149c65689e0c61789d3 chromium/third_party/devtools-frontend/src/node_modules/get-stdin/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/get-stream/license +sha256 e7d1fee7347ffddccc5fd03327ffdb50f8c112be0d5016d62388a92c4ae6e7a9 chromium/third_party/devtools-frontend/src/node_modules/global-modules/LICENSE +sha256 e7d1fee7347ffddccc5fd03327ffdb50f8c112be0d5016d62388a92c4ae6e7a9 chromium/third_party/devtools-frontend/src/node_modules/global-prefix/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/globals/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/globby/license +sha256 9c94db23dc4b1e9aaee5d195668b916afc71efed54af226b66cf0ccc4389c1c0 chromium/third_party/devtools-frontend/src/node_modules/globby/node_modules/ignore/LICENSE-MIT +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/globby/node_modules/slash/license +sha256 5947e11f30ab8264c45332a7d767447a71a52510ba467062cf3918e34cc67bff chromium/third_party/devtools-frontend/src/node_modules/globjoin/LICENSE +sha256 6236fa0b88a4a0cce3dda0367979491b2052b3c8d6b1c10b3668de083e86a7f0 chromium/third_party/devtools-frontend/src/node_modules/glob/LICENSE +sha256 2c46f1325bd3822a33c1e2c1e49c18d13127ac00f9c8b3b79196c7a126f73cd9 chromium/third_party/devtools-frontend/src/node_modules/glob-parent/LICENSE +sha256 2fc5460f1526810979054ecd18cd01349b57f38ea56d1e920afdea34d104540c chromium/third_party/devtools-frontend/src/node_modules/graceful-fs/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/hard-rejection/license +sha256 dc1fcc41f783463ed272ada875a7d3d1baf6c6279e5efada2c4ef2ca72db39e1 chromium/third_party/devtools-frontend/src/node_modules/has-binary2/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/has-flag/license +sha256 4fe5fd7b3318def0b74f8bf8c9276403f01da628fa8888822661519d80f237d3 chromium/third_party/devtools-frontend/src/node_modules/has/LICENSE-MIT +sha256 206c1adcf206dc0031b11232f5b054ec5f1662407ab1ca415247921cab2068ab chromium/third_party/devtools-frontend/src/node_modules/has-symbols/LICENSE +sha256 483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a chromium/third_party/devtools-frontend/src/node_modules/he/LICENSE-MIT.txt +sha256 c1476ec53119cd4c8370f91f5152ac76312a29b4fae2d49b5e0e0970fe0fa5ee chromium/third_party/devtools-frontend/src/node_modules/hosted-git-info/LICENSE +sha256 27d06bbb2eb031be8aa376868a2e1f11b6acba938d4cc8e1234b66b9739c54a3 chromium/third_party/devtools-frontend/src/node_modules/html-escaper/LICENSE.txt +sha256 204cfa747341660e4da64cd23e8c876c6b20279d247f48564993d3fc4a2eab47 chromium/third_party/devtools-frontend/src/node_modules/htmlparser2/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/html-tags/license +sha256 dcb94ff9b1e037a847bc20589dc81a1066d041fd4c16deb18b0fa968c66cf395 chromium/third_party/devtools-frontend/src/node_modules/http-errors/LICENSE +sha256 5ffe28e7ade7d8f10d85d5337a73fd793dac5c462fb9a28fbf8c5046c7fbca3b chromium/third_party/devtools-frontend/src/node_modules/http-errors/node_modules/inherits/LICENSE +sha256 589850dfc0a1d39a97c592d618d5772f84aec2b11c6898e020acb985299f3bab chromium/third_party/devtools-frontend/src/node_modules/http-proxy/LICENSE +sha256 ac779f7314c74f232ef847ea86e714abe25cf6eeb5cc97b69451b74e2af6492d chromium/third_party/devtools-frontend/src/node_modules/iconv-lite/LICENSE +sha256 18d45466ba3253deae04667e267a91ea8de8548f18c1125264d1c9db28194cc1 chromium/third_party/devtools-frontend/src/node_modules/ieee754/LICENSE +sha256 9c94db23dc4b1e9aaee5d195668b916afc71efed54af226b66cf0ccc4389c1c0 chromium/third_party/devtools-frontend/src/node_modules/ignore/LICENSE-MIT +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/import-fresh/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/import-lazy/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/indent-string/license +sha256 715f1f0f2eb7688e53e4e958acdc7fc9e365ae3eaf26efc2604b93cc65fdc3f5 chromium/third_party/devtools-frontend/src/node_modules/indexes-of/LICENSE +sha256 05dc4d785ac3a488676d3ed10e901b75ad89dafcc63f8e66610fd4a39cc5c7e8 chromium/third_party/devtools-frontend/src/node_modules/inflight/LICENSE +sha256 5ffe28e7ade7d8f10d85d5337a73fd793dac5c462fb9a28fbf8c5046c7fbca3b chromium/third_party/devtools-frontend/src/node_modules/inherits/LICENSE +sha256 4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b chromium/third_party/devtools-frontend/src/node_modules/ini/LICENSE +sha256 e6c3f1bc47f97cdeef953f6c109b6392be0d059ae94659faf550e61b7a75ebc7 chromium/third_party/devtools-frontend/src/node_modules/inquirer/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/ansi-regex/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/ansi-styles/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/chalk/license +sha256 693866fc419c6f61c8570438ec00659d156ec2b4d4a4d04091711f5f11a365d4 chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/color-convert/LICENSE +sha256 7357445bac398c76c0aef75a587009fe406d40de6a79789eb5b7ecbbad317ef2 chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/color-name/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/has-flag/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/is-fullwidth-code-point/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/string-width/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/strip-ansi/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/supports-color/license +sha256 ca4662cb5d1b738fbe5350c0d5485ba11773b4b7208974082ae6e129a52d631d chromium/third_party/devtools-frontend/src/node_modules/is-alphabetical/license +sha256 ca4662cb5d1b738fbe5350c0d5485ba11773b4b7208974082ae6e129a52d631d chromium/third_party/devtools-frontend/src/node_modules/is-alphanumerical/license +sha256 3a4909999d4cb5e4caee48395d9ac13085f4a8cb92245eef41526073601aaec8 chromium/third_party/devtools-frontend/src/node_modules/is-alphanumeric/license +sha256 dc0fe5a22d9336f345ee984f9bf56f11f22877a3aa5fd16a1db9a8ca0e23a5d1 chromium/third_party/devtools-frontend/src/node_modules/is-arguments/LICENSE +sha256 92b07a2e5b0e051d37dde85042c736d6d551cfcbc0983f39d7ef903b3986bbc1 chromium/third_party/devtools-frontend/src/node_modules/is-arrayish/LICENSE +sha256 2eedc70f2242aaf269e86e2c85eabeb875dc524d187d5953016b24091d26a843 chromium/third_party/devtools-frontend/src/node_modules/isbinaryfile/LICENSE.txt +sha256 85fe65eefab89e2a683232b96e6f689279821a0bd3b351e9ab6a6ebd19dea567 chromium/third_party/devtools-frontend/src/node_modules/is-binary-path/license +sha256 c7cc929b57080f4b9d0c6cf57669f0463fc5b39906344dfc8d3bc43426b30eac chromium/third_party/devtools-frontend/src/node_modules/is-buffer/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/is-callable/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/is-date-object/LICENSE +sha256 ca4662cb5d1b738fbe5350c0d5485ba11773b4b7208974082ae6e129a52d631d chromium/third_party/devtools-frontend/src/node_modules/is-decimal/license +sha256 4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b chromium/third_party/devtools-frontend/src/node_modules/isexe/LICENSE +sha256 73b5283588baa142c5baaef5f56d3e8fdea7a30b214e8c5737e87640f882453a chromium/third_party/devtools-frontend/src/node_modules/is-extglob/LICENSE +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/is-fullwidth-code-point/license +sha256 4cd903859549d4b20b571041f96dfae1136ed079c476126268f9d7cc1b611150 chromium/third_party/devtools-frontend/src/node_modules/is-glob/LICENSE +sha256 ca4662cb5d1b738fbe5350c0d5485ba11773b4b7208974082ae6e129a52d631d chromium/third_party/devtools-frontend/src/node_modules/is-hexadecimal/license +sha256 5a26e47b9d7020848f061bcad66f8e73cab95f529dab5c02588b21e57c4f876c chromium/third_party/devtools-frontend/src/node_modules/is-map/LICENSE +sha256 35bdd8a44339719441900fb50fbefc5e2dca1ca662cbaed7a687de842c8b70f2 chromium/third_party/devtools-frontend/src/node_modules/is-number/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/is-plain-obj/license +sha256 44191656d296391e0ec97e32f5385f0d02b6f2992694082d22ea04ba0f66f9e4 chromium/third_party/devtools-frontend/src/node_modules/is-promise/LICENSE +sha256 dc0fe5a22d9336f345ee984f9bf56f11f22877a3aa5fd16a1db9a8ca0e23a5d1 chromium/third_party/devtools-frontend/src/node_modules/is-regex/LICENSE +sha256 206c1adcf206dc0031b11232f5b054ec5f1662407ab1ca415247921cab2068ab chromium/third_party/devtools-frontend/src/node_modules/is-regex/node_modules/has-symbols/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/is-regexp/license +sha256 5a26e47b9d7020848f061bcad66f8e73cab95f529dab5c02588b21e57c4f876c chromium/third_party/devtools-frontend/src/node_modules/is-set/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/is-string/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/is-symbol/LICENSE +sha256 5a547aafe7b171c859ec64de1dd3c3363689f830133f508d043c83da12a6d0a2 chromium/third_party/devtools-frontend/src/node_modules/@istanbuljs/schema/LICENSE +sha256 435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b chromium/third_party/devtools-frontend/src/node_modules/is-typedarray/LICENSE.md +sha256 ca4662cb5d1b738fbe5350c0d5485ba11773b4b7208974082ae6e129a52d631d chromium/third_party/devtools-frontend/src/node_modules/is-whitespace-character/license +sha256 ca4662cb5d1b738fbe5350c0d5485ba11773b4b7208974082ae6e129a52d631d chromium/third_party/devtools-frontend/src/node_modules/is-word-character/license +sha256 39c5ec504cf6bd5cd782a7c695828e09189df79f5d94840e4f08feb97b9fd416 chromium/third_party/devtools-frontend/src/node_modules/iterate-iterator/LICENSE +sha256 cfc3f455254c0af0655cc3ff46a41ed644b67599f6043346169d285bf2b3cf3b chromium/third_party/devtools-frontend/src/node_modules/iterate-value/LICENSE +sha256 52412d7bc7ce4157ea628bbaacb8829e0a9cb3c58f57f99176126bc8cf2bfc85 chromium/third_party/devtools-frontend/src/node_modules/jest-worker/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/jest-worker/node_modules/supports-color/license +sha256 483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a chromium/third_party/devtools-frontend/src/node_modules/jsesc/LICENSE-MIT.txt +sha256 53e59feb13058722d977c699eb0407c7bce2f93c949b681bbd2ff31698535927 chromium/third_party/devtools-frontend/src/node_modules/json5/LICENSE.md +sha256 435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b chromium/third_party/devtools-frontend/src/node_modules/json5/node_modules/minimist/LICENSE +sha256 a9801fb52ba22ef808682a094da8a7a480584b7ed0dfd0d888ab543616335031 chromium/third_party/devtools-frontend/src/node_modules/jsonfile/LICENSE +sha256 6cf2891dd0e66460f7d2ed83e1e3fe4b4b4c1a8c1f1f96c222a3466ad12ff197 chromium/third_party/devtools-frontend/src/node_modules/json-parse-better-errors/LICENSE.md +sha256 7bf9b2de73a6b356761c948d0e9eeb4be6c1270bd04c79cd489c1e400ffdfc1a chromium/third_party/devtools-frontend/src/node_modules/json-schema-traverse/LICENSE +sha256 435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b chromium/third_party/devtools-frontend/src/node_modules/json-stable-stringify-without-jsonify/LICENSE +sha256 2213d91c606205c71eb051a199478cdc2adde945893404d7f1421436dd6d5cc1 chromium/third_party/devtools-frontend/src/node_modules/js-tokens/LICENSE +sha256 a07bc24468b9654ce76a547d47a2db282d07733b715db4c73a98bd63961f9550 chromium/third_party/devtools-frontend/src/node_modules/js-yaml/LICENSE +sha256 94bcb9959136723aa4fb36e1a6c4d5c662a2369978cfae344dabfb83ae619e79 chromium/third_party/devtools-frontend/src/node_modules/js-yaml/node_modules/esprima/LICENSE.BSD +sha256 e3d4ed2aa50e7583730b1531034331ba9093c8bef7414234c7c9306db3858913 chromium/third_party/devtools-frontend/src/node_modules/karma-chai/LICENSE +sha256 296b9a3c5e4eb7b79a6f1dca9a27ee31e48fe5c9d48a32ec31ac924b65ff287c chromium/third_party/devtools-frontend/src/node_modules/karma-chrome-launcher/LICENSE +sha256 296b9a3c5e4eb7b79a6f1dca9a27ee31e48fe5c9d48a32ec31ac924b65ff287c chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/@babel/code-frame/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/@babel/generator/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/@babel/helper-function-name/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/@babel/helper-get-function-arity/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/@babel/helper-split-export-declaration/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/@babel/highlight/LICENSE +sha256 2e97627cb278aa7556fb9e8817368302301a595b6c7582512b8d74c57b773652 chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/@babel/parser/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/@babel/template/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/@babel/traverse/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/@babel/types/LICENSE +sha256 117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76 chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/@babel/types/node_modules/@babel/helper-validator-identifier/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/has-flag/license +sha256 e09f9b52c6ce5c17ba8103cd0cbf446c33b5448b0c1d01d711b36a1f15a501ba chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/istanbul-lib-coverage/LICENSE +sha256 e09f9b52c6ce5c17ba8103cd0cbf446c33b5448b0c1d01d711b36a1f15a501ba chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/istanbul-lib-instrument/LICENSE +sha256 e09f9b52c6ce5c17ba8103cd0cbf446c33b5448b0c1d01d711b36a1f15a501ba chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/istanbul-lib-report/LICENSE +sha256 b661867c1d66a1b71ee3a6109159874334cd5c182a80d1bcc7353b5a4c6823c6 chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/istanbul-lib-source-maps/LICENSE +sha256 6cb0631f71c7749763fd3dd1d5bee52dd1070ec17f2edc1710079ad070bd2fbd chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/istanbul-lib-source-maps/node_modules/source-map/LICENSE +sha256 e09f9b52c6ce5c17ba8103cd0cbf446c33b5448b0c1d01d711b36a1f15a501ba chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/istanbul-reports/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/make-dir/license +sha256 4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/semver/LICENSE +sha256 6cb0631f71c7749763fd3dd1d5bee52dd1070ec17f2edc1710079ad070bd2fbd chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/source-map/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/supports-color/license +sha256 6e4e577107740b24ebd73cb813be506861d706129e502ca7160683a5cea4c129 chromium/third_party/devtools-frontend/src/node_modules/karma/LICENSE +sha256 296b9a3c5e4eb7b79a6f1dca9a27ee31e48fe5c9d48a32ec31ac924b65ff287c chromium/third_party/devtools-frontend/src/node_modules/karma-mocha/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/ansi-regex/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/ansi-styles/license +sha256 2dc0465729366c3a7890dfa9e972a1ba7048a26c02116fb8b419a6a1ac110149 chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/cliui/LICENSE.txt +sha256 693866fc419c6f61c8570438ec00659d156ec2b4d4a4d04091711f5f11a365d4 chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/color-convert/LICENSE +sha256 7357445bac398c76c0aef75a587009fe406d40de6a79789eb5b7ecbbad317ef2 chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/color-name/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/find-up/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/is-fullwidth-code-point/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/locate-path/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/path-exists/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/p-locate/license +sha256 4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/rimraf/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/string-width/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/strip-ansi/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/wrap-ansi/license +sha256 fe71524a15f30aab0f39af7165d38fc64a4269b7d2a0caffebc907355aec9c92 chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/yargs/LICENSE +sha256 365496ca1f56da40b23c9815fc40fa9005847b2f8f8fd1c1a4929ef25ec8cd1d chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/yargs-parser/LICENSE.txt +sha256 2b3adc1e55676b9443f76bdb17e42371de98a4be6abd3ae6e5f3590f6f3e4f6f chromium/third_party/devtools-frontend/src/node_modules/karma-sourcemap-loader/LICENSE +sha256 4cd903859549d4b20b571041f96dfae1136ed079c476126268f9d7cc1b611150 chromium/third_party/devtools-frontend/src/node_modules/kind-of/LICENSE +sha256 81294ebf877cb41ed610fa0566c6cf81cd62d47e9ae26e1b0870c9c532b11191 chromium/third_party/devtools-frontend/src/node_modules/known-css-properties/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/leven/license +sha256 b9eb082c39fe245e38793699074c394c43a722c51fce031c3c165cb92a31035c chromium/third_party/devtools-frontend/src/node_modules/levn/LICENSE +sha256 150d7707d4532d57bdb5718637ff62fff1f075921c5ffaa084df27f900bfea76 chromium/third_party/devtools-frontend/src/node_modules/license-checker/bin/license-checker +sha256 455629980585dfdadbdcbaf846659b65da3dd092ac9bfd10b07717a0e2f84ef5 chromium/third_party/devtools-frontend/src/node_modules/license-checker/lib/license-files.js +sha256 37932d5f93a7f9e762346358ae427e703d69fdaae6e7cd67158b35eea91c9eec chromium/third_party/devtools-frontend/src/node_modules/license-checker/lib/license.js +sha256 adeb5a7f7d027ec14c3698be7a0f248978516ab39ccec4fb70689ba4753cdd67 chromium/third_party/devtools-frontend/src/node_modules/license-checker/LICENSE +sha256 98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422 chromium/third_party/devtools-frontend/src/node_modules/license-checker/node_modules/debug/LICENSE +sha256 4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b chromium/third_party/devtools-frontend/src/node_modules/license-checker/node_modules/nopt/LICENSE +sha256 456fe85ad3e71db9523313cf7437b0f90c392d8a48c869908e46716b26d2cf53 chromium/third_party/devtools-frontend/src/node_modules/lines-and-columns/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/locate-path/license +sha256 f71e8ed126b46346494aad5486874cd8f0aafe95092ed67d2e3cb6110f939abc chromium/third_party/devtools-frontend/src/node_modules/lodash/LICENSE +sha256 66da8b277e527c270de6abc57727c58032267d161a81dbac02c3eed45fd13366 chromium/third_party/devtools-frontend/src/node_modules/log4js/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/log-symbols/license +sha256 9f084fac69d8cf1e6ce983ba5a3499c7695ed74a26ec625c38f0fd19fddd5e10 chromium/third_party/devtools-frontend/src/node_modules/longest-streak/license +sha256 1cbe51b907662f6cb1492b16c359384a595180bf0e4d101603ed525e75c4e484 chromium/third_party/devtools-frontend/src/node_modules/magic-string/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/map-obj/license +sha256 ca4662cb5d1b738fbe5350c0d5485ba11773b4b7208974082ae6e129a52d631d chromium/third_party/devtools-frontend/src/node_modules/markdown-escapes/license +sha256 9966260ba3ea9d6a5f839297dca80ddc99735a34b4ae82811cac7b956d2e3afd chromium/third_party/devtools-frontend/src/node_modules/markdown-table/license +sha256 ca4662cb5d1b738fbe5350c0d5485ba11773b4b7208974082ae6e129a52d631d chromium/third_party/devtools-frontend/src/node_modules/mathml-tag-names/license +sha256 ca4662cb5d1b738fbe5350c0d5485ba11773b4b7208974082ae6e129a52d631d chromium/third_party/devtools-frontend/src/node_modules/mdast-util-compact/license +sha256 74d8054d56d522bdaa340d3d71130cb204997d523a5292c85ac1264dd77c8d06 chromium/third_party/devtools-frontend/src/node_modules/media-typer/LICENSE +sha256 5c932d88256b4ab958f64a856fa48e8bd1f55bc1d96b8149c65689e0c61789d3 chromium/third_party/devtools-frontend/src/node_modules/meow/license +sha256 5c932d88256b4ab958f64a856fa48e8bd1f55bc1d96b8149c65689e0c61789d3 chromium/third_party/devtools-frontend/src/node_modules/meow/node_modules/camelcase/license +sha256 64a93ffc0a06a2266dbb57ed7ebe3b56ba66ab337b6347fabdbf86c76819fbae chromium/third_party/devtools-frontend/src/node_modules/meow/node_modules/type-fest/license +sha256 365496ca1f56da40b23c9815fc40fa9005847b2f8f8fd1c1a4929ef25ec8cd1d chromium/third_party/devtools-frontend/src/node_modules/meow/node_modules/yargs-parser/LICENSE.txt +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/meow/node_modules/yargs-parser/node_modules/camelcase/license +sha256 23d150eb1337116025fbb4de7cd2a757540feec928eef5ae30c91f9f500a4dbc chromium/third_party/devtools-frontend/src/node_modules/merge2/LICENSE +sha256 2cee71bf4612fc2efe1c6261e3f2b21f3c7259ef8a4f3593b095ae7a7bd65ad9 chromium/third_party/devtools-frontend/src/node_modules/merge-stream/LICENSE +sha256 35bdd8a44339719441900fb50fbefc5e2dca1ca662cbaed7a687de842c8b70f2 chromium/third_party/devtools-frontend/src/node_modules/micromatch/LICENSE +sha256 965ef284f7f4c176842ec2e87fa13e79feed777d56d7a21a5a3b38f1bb6dc288 chromium/third_party/devtools-frontend/src/node_modules/mime-db/LICENSE +sha256 8f2658c03422c408b2b2ce4d151decc3b1a6fd3d86e5ca9433777bccdcdf75a2 chromium/third_party/devtools-frontend/src/node_modules/mime/LICENSE +sha256 71f83c4c0621102a56d9853812777b85751bce7e9726f686f5b056c1f8a4b0e6 chromium/third_party/devtools-frontend/src/node_modules/mime-types/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/mimic-fn/license +sha256 4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b chromium/third_party/devtools-frontend/src/node_modules/minimatch/LICENSE +sha256 435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b chromium/third_party/devtools-frontend/src/node_modules/minimist/LICENSE +sha256 6158b1bc31ab9c05c0be562cf57a0590a1dc86a4ce8b8a48a5e73df6c259ed61 chromium/third_party/devtools-frontend/src/node_modules/minimist-options/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/minimist-options/node_modules/arrify/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/minimist-options/node_modules/is-plain-obj/license +sha256 9638fa87f845af6cecc56fab498c1f74f4a98522d3b53377bedcbdb44b5a8dcc chromium/third_party/devtools-frontend/src/node_modules/min-indent/license +sha256 a255b85c1a510ecfe660c4d442ecdbc1e9d07f4b4d3d7f90443f7e5570591e0a chromium/third_party/devtools-frontend/src/node_modules/mkdirp-classic/LICENSE +sha256 05991c2e8f070b69ec5b656c2c12fd07cd0153dd157d39b050b82af59b319a01 chromium/third_party/devtools-frontend/src/node_modules/mkdirp/LICENSE +sha256 435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b chromium/third_party/devtools-frontend/src/node_modules/mkdirp/node_modules/minimist/LICENSE +sha256 88597c9a3af6b6ae2fa6225a52344c7ddc705883d6fe1f2b3a95fdc72d2d1a20 chromium/third_party/devtools-frontend/src/node_modules/mocha/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/ansi-regex/license +sha256 98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422 chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/debug/LICENSE +sha256 483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/emoji-regex/LICENSE-MIT.txt +sha256 6236fa0b88a4a0cce3dda0367979491b2052b3c8d6b1c10b3668de083e86a7f0 chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/glob/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/has-flag/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/locate-path/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/p-locate/license +sha256 d3dfa68a3c80e64eb10e46cef10e4208502da5ffb1387b11db00e42a507ab8f7 chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/serialize-javascript/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/string-width/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/strip-ansi/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/supports-color/license +sha256 4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/which/LICENSE +sha256 fe71524a15f30aab0f39af7165d38fc64a4269b7d2a0caffebc907355aec9c92 chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/yargs/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/yargs/node_modules/find-up/license +sha256 6652830c2607c722b66f1b57de15877ab8fc5dca406cc5b335afeb365d0f32c1 chromium/third_party/devtools-frontend/src/node_modules/ms/license.md +sha256 4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b chromium/third_party/devtools-frontend/src/node_modules/mute-stream/LICENSE +sha256 553d4d20029a24e315b428a1a54a9e109eaa340f2e958a4f50a92362c2c4070b chromium/third_party/devtools-frontend/src/node_modules/negotiator/LICENSE +sha256 bd220c219b05e6c22b7c23613ca926f60932d07c9fe141dd6e04b80dbc4b4e52 chromium/third_party/devtools-frontend/src/node_modules/nice-try/LICENSE +sha256 9363d160bf41d46d83901a5d24fc3fe2094c2afc17b4a2378914b273977ee2de chromium/third_party/devtools-frontend/src/node_modules/@nodelib/fs.scandir/LICENSE +sha256 9363d160bf41d46d83901a5d24fc3fe2094c2afc17b4a2378914b273977ee2de chromium/third_party/devtools-frontend/src/node_modules/@nodelib/fs.stat/LICENSE +sha256 9363d160bf41d46d83901a5d24fc3fe2094c2afc17b4a2378914b273977ee2de chromium/third_party/devtools-frontend/src/node_modules/@nodelib/fs.walk/LICENSE +sha256 3706296ed611888111ceccc1dff4712844dea4bde0b185c82d718c3b69895abe chromium/third_party/devtools-frontend/src/node_modules/node-releases/LICENSE +sha256 d16b2b8c511d9f2bef8bbf49f0e2a94f032b6b8d181f71c83912c34c116a02e1 chromium/third_party/devtools-frontend/src/node_modules/normalize-package-data/LICENSE +sha256 60acd7711e6c138e6041836e32d922705254cc1568a30fdf16aa8f59bb87aeaa chromium/third_party/devtools-frontend/src/node_modules/normalize-package-data/node_modules/resolve/LICENSE +sha256 e70ff771504ba41f2be55de812a017ff46433d7a250c862e38fc419159e44500 chromium/third_party/devtools-frontend/src/node_modules/normalize-path/LICENSE +sha256 0b61ac8491c66669491fdb328200203822b91d2a0461f5cd898fe0944ea97e41 chromium/third_party/devtools-frontend/src/node_modules/normalize-range/license +sha256 65155820306c6f73fe67358bf14c2e1eb24e29e9d0cad280b8f0f7be3319e434 chromium/third_party/devtools-frontend/src/node_modules/num2fraction/LICENSE +sha256 a596744eec6b05682ed972bf93937668bbc8da2caed93fbf6510389de019b5c0 chromium/third_party/devtools-frontend/src/node_modules/object.assign/LICENSE +sha256 bd40cc437e28a3ad7bef2ad34e6b72e757b182e67bda1acadbab4ef0476f8232 chromium/third_party/devtools-frontend/src/node_modules/object-inspect/LICENSE +sha256 5640e5cbe2e9f57f6ccfdd8dbfbeadb875495bdbcb69d2666ce3177ccd0942e4 chromium/third_party/devtools-frontend/src/node_modules/object-keys/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/object.values/LICENSE +sha256 00d402c2bbe7c67369bd01ce2c16b8ed46ccc949a1ee2d6bb8f9606afa8c7434 chromium/third_party/devtools-frontend/src/node_modules/object.values/node_modules/es-abstract/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/object.values/node_modules/es-to-primitive/LICENSE +sha256 206c1adcf206dc0031b11232f5b054ec5f1662407ab1ca415247921cab2068ab chromium/third_party/devtools-frontend/src/node_modules/object.values/node_modules/has-symbols/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/object.values/node_modules/is-callable/LICENSE +sha256 dc0fe5a22d9336f345ee984f9bf56f11f22877a3aa5fd16a1db9a8ca0e23a5d1 chromium/third_party/devtools-frontend/src/node_modules/object.values/node_modules/is-regex/LICENSE +sha256 bd40cc437e28a3ad7bef2ad34e6b72e757b182e67bda1acadbab4ef0476f8232 chromium/third_party/devtools-frontend/src/node_modules/object.values/node_modules/object-inspect/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/object.values/node_modules/string.prototype.trimleft/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/object.values/node_modules/string.prototype.trimright/LICENSE +sha256 4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b chromium/third_party/devtools-frontend/src/node_modules/once/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/onetime/license +sha256 8089bcc08845ec143e5761f4a101a65b8c792a0dedbfeeb90a15560c0b77f768 chromium/third_party/devtools-frontend/src/node_modules/on-finished/LICENSE +sha256 b9eb082c39fe245e38793699074c394c43a722c51fce031c3c165cb92a31035c chromium/third_party/devtools-frontend/src/node_modules/optionator/LICENSE +sha256 4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b chromium/third_party/devtools-frontend/src/node_modules/osenv/LICENSE +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/os-homedir/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/os-tmpdir/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/parent-module/license +sha256 9f084fac69d8cf1e6ce983ba5a3499c7695ed74a26ec625c38f0fd19fddd5e10 chromium/third_party/devtools-frontend/src/node_modules/parse-entities/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/parse-json/license +sha256 a41d7b212c43bf90af534ec5d73d24a65e3a8cf17941b6d10e9398346a179698 chromium/third_party/devtools-frontend/src/node_modules/parseqs/LICENSE +sha256 15c35ddf8c82a5fc84e3801db12e279b744605d6ad810e1b52ad09832fc71806 chromium/third_party/devtools-frontend/src/node_modules/parseuri/LICENSE +sha256 11d017c3b9f1ee3f44caf7203035f0461d5b57e0db8ce1bc03a9af34fa7d3f6b chromium/third_party/devtools-frontend/src/node_modules/parseurl/LICENSE +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/path-exists/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/path-is-absolute/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/path-key/license +sha256 3f4609137f65070541b9214300ea0d640af8192857de0eeb2b03403003d9228a chromium/third_party/devtools-frontend/src/node_modules/path-parse/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/path-type/license +sha256 5d45910e7ed82fecc3e29b40a5b3a17ceb609fda19f860aa2ec180d87f4f9d4a chromium/third_party/devtools-frontend/src/node_modules/pathval/LICENSE +sha256 7e64acffcb0d20d33f5a86949ffd4a99ae045b10c7332a9c3a58635876c16880 chromium/third_party/devtools-frontend/src/node_modules/pend/LICENSE +sha256 d0cd141b0c322fded5dfad1d4645bb2fedfc05b7321fe1009469638190d59ef9 chromium/third_party/devtools-frontend/src/node_modules/picomatch/LICENSE +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/pkg-dir/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/pkg-dir/node_modules/find-up/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/pkg-dir/node_modules/locate-path/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/pkg-dir/node_modules/path-exists/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/pkg-dir/node_modules/p-limit/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/pkg-dir/node_modules/p-locate/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/pkg-dir/node_modules/p-try/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/pkg-up/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/pkg-up/node_modules/find-up/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/pkg-up/node_modules/locate-path/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/pkg-up/node_modules/p-limit/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/pkg-up/node_modules/p-locate/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/pkg-up/node_modules/p-try/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/p-limit/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/p-locate/license +sha256 2db459b0f45bd3b3836c374c6ef9ff5b2b2a31628e09f3c803e18f6c629b56b1 chromium/third_party/devtools-frontend/src/node_modules/postcss-html/LICENSE +sha256 ce4ef9c48a45bbfc480671256a45a191ece0622d78061599b09b0ee60cf517d6 chromium/third_party/devtools-frontend/src/node_modules/postcss-less/LICENSE +sha256 c4630ac8b89cb317ac5bdd60ac5e4e185eab9bd5151a0c7b3afa41aa83d7ec9b chromium/third_party/devtools-frontend/src/node_modules/postcss/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/postcss/node_modules/supports-color/license +sha256 8e714750725e75c8b31172ef84c0805f94873f86e3b5cfca8a948553f0778fa1 chromium/third_party/devtools-frontend/src/node_modules/postcss-reporter/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/postcss-reporter/node_modules/log-symbols/license +sha256 d060f91dafa4f2daaeb5a87bdaab60217a5beb87a31eb0c480420710368ebf15 chromium/third_party/devtools-frontend/src/node_modules/postcss-resolve-nested-selector/LICENSE +sha256 c4630ac8b89cb317ac5bdd60ac5e4e185eab9bd5151a0c7b3afa41aa83d7ec9b chromium/third_party/devtools-frontend/src/node_modules/postcss-safe-parser/LICENSE +sha256 e695904c289dbc8a8bca514639c4ec26e695cf21c3c1f12a917d325b26396917 chromium/third_party/devtools-frontend/src/node_modules/postcss-sass/LICENSE +sha256 c4630ac8b89cb317ac5bdd60ac5e4e185eab9bd5151a0c7b3afa41aa83d7ec9b chromium/third_party/devtools-frontend/src/node_modules/postcss-scss/LICENSE +sha256 2998094b38f7ace25f141fb36f334d8338f65a1812978d618b1161f4d77ae10e chromium/third_party/devtools-frontend/src/node_modules/postcss-selector-parser/LICENSE-MIT +sha256 2db459b0f45bd3b3836c374c6ef9ff5b2b2a31628e09f3c803e18f6c629b56b1 chromium/third_party/devtools-frontend/src/node_modules/postcss-syntax/LICENSE +sha256 3687447039151857a6ba378db062172c7f33d4aa70a615c87a43a9c50e990485 chromium/third_party/devtools-frontend/src/node_modules/postcss-value-parser/LICENSE +sha256 b9eb082c39fe245e38793699074c394c43a722c51fce031c3c165cb92a31035c chromium/third_party/devtools-frontend/src/node_modules/prelude-ls/LICENSE +sha256 f4bbb78fa28677ad9b9c0a4b7a255e23c0b24e619c873ed66a11d47c16c88114 chromium/third_party/devtools-frontend/src/node_modules/private/LICENSE +sha256 d7d2a7786de7c7cfd96f920c6f12927d74e1d2a861ca4498bf465c3bc3f4c21c chromium/third_party/devtools-frontend/src/node_modules/progress/LICENSE +sha256 cfc3f455254c0af0655cc3ff46a41ed644b67599f6043346169d285bf2b3cf3b chromium/third_party/devtools-frontend/src/node_modules/promise.allsettled/LICENSE +sha256 f55828df4b8752c48e765a806465b76a103e3cb363379c569b15a1df2ba2d79e chromium/third_party/devtools-frontend/src/node_modules/proxy-from-env/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/p-try/license +sha256 3fe8d55a98dbf260eace67c00cf9bc53edb46234e840098a0b93df3096b97fb6 chromium/third_party/devtools-frontend/src/node_modules/pump/LICENSE +sha256 483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a chromium/third_party/devtools-frontend/src/node_modules/punycode/LICENSE-MIT.txt +sha256 a27ca07269b3518550b2e83aed13eadd7d14d924b5864e14889b40cf227530ca chromium/third_party/devtools-frontend/src/node_modules/puppeteer/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/puppeteer/node_modules/pkg-dir/license +sha256 3de284c8e6fa7e8437eff6f53695471e0332129a5b42a79361e17b7637de94b3 chromium/third_party/devtools-frontend/src/node_modules/puppeteer/node_modules/ws/LICENSE +sha256 d2f9d2835eb09ccf673e118e4fdc372075437c1787e66c2202912fbe3e5ee9e1 chromium/third_party/devtools-frontend/src/node_modules/qs/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/quick-lru/license +sha256 f0606775704212c0b49fb4df8193f7ec190d057551fc857d9f3aaa482b878e29 chromium/third_party/devtools-frontend/src/node_modules/ramda/LICENSE.txt +sha256 f655e6291356ec0de7a8f0e69f294961a2cea86678ec94588be1e6a492e278ab chromium/third_party/devtools-frontend/src/node_modules/range-parser/LICENSE +sha256 c8e6bca7230689d536a3bd7158f66e9c4f89f95d0748743a0370ac229e9023ad chromium/third_party/devtools-frontend/src/node_modules/raw-body/LICENSE +sha256 ec62dc96da0099b87f4511736c87309335527fb7031639493e06c95728dc8c54 chromium/third_party/devtools-frontend/src/node_modules/readable-stream/LICENSE +sha256 4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b chromium/third_party/devtools-frontend/src/node_modules/readdir-scoped-modules/LICENSE +sha256 5ffe28e7ade7d8f10d85d5337a73fd793dac5c462fb9a28fbf8c5046c7fbca3b chromium/third_party/devtools-frontend/src/node_modules/read-installed/LICENSE +sha256 69be713b3d6c33e0dba76c4d23d986d568593abca04ce47d75162af255d6a345 chromium/third_party/devtools-frontend/src/node_modules/read-package-json/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/read-pkg/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/read-pkg/node_modules/parse-json/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/read-pkg/node_modules/type-fest/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/read-pkg-up/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/read-pkg-up/node_modules/find-up/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/read-pkg-up/node_modules/locate-path/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/read-pkg-up/node_modules/path-exists/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/read-pkg-up/node_modules/p-locate/license +sha256 6ca87d1dce5b82873603e566fd83dabe8771fb169013337d4a14bb9bbf794687 chromium/third_party/devtools-frontend/src/node_modules/recast/LICENSE +sha256 94bcb9959136723aa4fb36e1a6c4d5c662a2369978cfae344dabfb83ae619e79 chromium/third_party/devtools-frontend/src/node_modules/recast/node_modules/esprima/LICENSE.BSD +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/redent/license +sha256 fcf6eabf68ca96988a6b506b4fdc6cc32535d80eb2e11c79724af5ac6f50262b chromium/third_party/devtools-frontend/src/node_modules/regexpp/LICENSE +sha256 3672fb6ef1c214578dfee689643516c2685f61ab08d130517ca8ea24f383a840 chromium/third_party/devtools-frontend/src/node_modules/repeat-string/LICENSE +sha256 dcb55717e2528ce8ffcff58a26dbc456d03929422ef59b6efdabbb931ef09aea chromium/third_party/devtools-frontend/src/node_modules/replace-ext/LICENSE +sha256 a92e52eb1fa7cd746e3827bf01d3a3589bbc8e1e51348b1da042aad165525ad1 chromium/third_party/devtools-frontend/src/node_modules/require-directory/LICENSE +sha256 365496ca1f56da40b23c9815fc40fa9005847b2f8f8fd1c1a4929ef25ec8cd1d chromium/third_party/devtools-frontend/src/node_modules/require-main-filename/LICENSE.txt +sha256 3b2a6a268aa815dec121d614245e03b5c68db1f044d5b525e36db7d5dc7fb9c3 chromium/third_party/devtools-frontend/src/node_modules/requires-port/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/resolve-from/license +sha256 60acd7711e6c138e6041836e32d922705254cc1568a30fdf16aa8f59bb87aeaa chromium/third_party/devtools-frontend/src/node_modules/resolve/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/restore-cursor/license +sha256 db0054e6418412e4a265236c94d1d8935057c67f367240b01bb2b0b2f9091812 chromium/third_party/devtools-frontend/src/node_modules/reusify/LICENSE +sha256 1ce941682a96c7b898ecd125d0f2e22319758ea6f3adbf498a65d649b0f3f7dd chromium/third_party/devtools-frontend/src/node_modules/rfdc/LICENSE +sha256 4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b chromium/third_party/devtools-frontend/src/node_modules/rimraf/LICENSE +sha256 d6a61720669b71b4920ead9792298c3b4e27ce776282053c9df3b781fc8480ca chromium/third_party/devtools-frontend/src/node_modules/rollup/LICENSE.md +sha256 99de4c30f4643c00d4895d9c6ade0af4ec43d301449c191f5fbe41b53bb6a13a chromium/third_party/devtools-frontend/src/node_modules/rollup/node_modules/fsevents/LICENSE +sha256 7b8136f76c483d03597500bfa991aae9be68d4629e1121cbf9b93aa727efe305 chromium/third_party/devtools-frontend/src/node_modules/@rollup/plugin-commonjs/LICENSE +sha256 a361479777395f33fb109bd77c7888663f5dc6f3a18ddaba812cf81be29e0cc3 chromium/third_party/devtools-frontend/src/node_modules/rollup-plugin-terser/LICENSE +sha256 7b8136f76c483d03597500bfa991aae9be68d4629e1121cbf9b93aa727efe305 chromium/third_party/devtools-frontend/src/node_modules/@rollup/pluginutils/LICENSE +sha256 d0cd141b0c322fded5dfad1d4645bb2fedfc05b7321fe1009469638190d59ef9 chromium/third_party/devtools-frontend/src/node_modules/@rollup/pluginutils/node_modules/picomatch/LICENSE +sha256 27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0 chromium/third_party/devtools-frontend/src/node_modules/@rollup/pluginutils/node_modules/@types/estree/LICENSE +sha256 e5c1364118b39fa98b959138ce4aa4d0e68cfbee12d115e69730579fecb1dc1b chromium/third_party/devtools-frontend/src/node_modules/run-async/LICENSE +sha256 d4c2065e2b936e62a4eb400efb4576edec9ca1388a9f78aa288e147275e7bc8b chromium/third_party/devtools-frontend/src/node_modules/run-parallel/LICENSE +sha256 81c407ac717813b0e3795402960e04003c7bba8ba59b621624707028531c9ade chromium/third_party/devtools-frontend/src/node_modules/rxjs/_esm2015/LICENSE.txt +sha256 81c407ac717813b0e3795402960e04003c7bba8ba59b621624707028531c9ade chromium/third_party/devtools-frontend/src/node_modules/rxjs/_esm5/LICENSE.txt +sha256 81c407ac717813b0e3795402960e04003c7bba8ba59b621624707028531c9ade chromium/third_party/devtools-frontend/src/node_modules/rxjs/LICENSE.txt +sha256 81c407ac717813b0e3795402960e04003c7bba8ba59b621624707028531c9ade chromium/third_party/devtools-frontend/src/node_modules/rxjs/src/LICENSE.txt +sha256 c7cc929b57080f4b9d0c6cf57669f0463fc5b39906344dfc8d3bc43426b30eac chromium/third_party/devtools-frontend/src/node_modules/safe-buffer/LICENSE +sha256 4bc935e71be198c67ddf3c2b5fddb195f6edc182bfc155a96a6db61b44b494b9 chromium/third_party/devtools-frontend/src/node_modules/safer-buffer/LICENSE +sha256 4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b chromium/third_party/devtools-frontend/src/node_modules/semver/LICENSE +sha256 d3dfa68a3c80e64eb10e46cef10e4208502da5ffb1387b11db00e42a507ab8f7 chromium/third_party/devtools-frontend/src/node_modules/serialize-javascript/LICENSE +sha256 365496ca1f56da40b23c9815fc40fa9005847b2f8f8fd1c1a4929ef25ec8cd1d chromium/third_party/devtools-frontend/src/node_modules/set-blocking/LICENSE.txt +sha256 76d6d1ea0c268da37dd3c961b4fcfb23dee8417fff9e8786d4d44c585b781b69 chromium/third_party/devtools-frontend/src/node_modules/setprototypeof/LICENSE +sha256 e6fdf7ac2af533b4436d99aa75df32aa78690510f7d68a3e73e8576967298d2f chromium/third_party/devtools-frontend/src/node_modules/shebang-command/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/shebang-regex/license +sha256 e05b1eaf5b5f99b7ad75cd1f38858ff9a311780b97715ead67936d60bf96aa7e chromium/third_party/devtools-frontend/src/node_modules/signal-exit/LICENSE.txt +sha256 3dc3b3d3a284d871f7f307655c90fb101d73abbf87bbddeefd2f67883353bdbc chromium/third_party/devtools-frontend/src/node_modules/slice-ansi/license +sha256 05dc4d785ac3a488676d3ed10e901b75ad89dafcc63f8e66610fd4a39cc5c7e8 chromium/third_party/devtools-frontend/src/node_modules/slide/LICENSE +sha256 56b7b228fde8d638cc7f1c3d0022cf111764083ac4f803b7a50a90388dce3788 chromium/third_party/devtools-frontend/src/node_modules/socket.io-adapter/LICENSE +sha256 62e2032a1e1458b1d92a62f5fc51be48e08b95062295c91a9f3bd3686809d37e chromium/third_party/devtools-frontend/src/node_modules/socket.io-client/LICENSE +sha256 98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422 chromium/third_party/devtools-frontend/src/node_modules/socket.io-client/node_modules/debug/LICENSE +sha256 6652830c2607c722b66f1b57de15877ab8fc5dca406cc5b335afeb365d0f32c1 chromium/third_party/devtools-frontend/src/node_modules/socket.io-client/node_modules/ms/license.md +sha256 c10d192d935165dac336ae245f9eef4c42bb37e7c6f5c5f6f7663db778122df1 chromium/third_party/devtools-frontend/src/node_modules/socket.io/LICENSE +sha256 98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422 chromium/third_party/devtools-frontend/src/node_modules/socket.io/node_modules/debug/LICENSE +sha256 6652830c2607c722b66f1b57de15877ab8fc5dca406cc5b335afeb365d0f32c1 chromium/third_party/devtools-frontend/src/node_modules/socket.io/node_modules/ms/license.md +sha256 56b7b228fde8d638cc7f1c3d0022cf111764083ac4f803b7a50a90388dce3788 chromium/third_party/devtools-frontend/src/node_modules/socket.io-parser/LICENSE +sha256 98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422 chromium/third_party/devtools-frontend/src/node_modules/socket.io-parser/node_modules/debug/LICENSE +sha256 6652830c2607c722b66f1b57de15877ab8fc5dca406cc5b335afeb365d0f32c1 chromium/third_party/devtools-frontend/src/node_modules/socket.io-parser/node_modules/ms/license.md +sha256 1c632a84f7ba5a7b32d9c15e707f419b2393e7ad7de362bd9c837b5e435a197b chromium/third_party/devtools-frontend/src/node_modules/sourcemap-codec/LICENSE +sha256 6cb0631f71c7749763fd3dd1d5bee52dd1070ec17f2edc1710079ad070bd2fbd chromium/third_party/devtools-frontend/src/node_modules/source-map/LICENSE +sha256 3a7d3bb198e909ed642bd68bd29a7d7c09a636d27a51ec663d35f00c4760ec42 chromium/third_party/devtools-frontend/src/node_modules/source-map-support/LICENSE.md +sha256 c5ca60a739543ef97683dfa0a94773b214c86c826c76a27b8f8e6eb38148cbce chromium/third_party/devtools-frontend/src/node_modules/spdx-compare/LICENSE.md +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/devtools-frontend/src/node_modules/spdx-correct/LICENSE +sha256 7edb57f7065309027de249642341292a5b21410d5773cc55bba73ff9cf01060e chromium/third_party/devtools-frontend/src/node_modules/spdx-expression-parse/LICENSE +sha256 c5ca60a739543ef97683dfa0a94773b214c86c826c76a27b8f8e6eb38148cbce chromium/third_party/devtools-frontend/src/node_modules/spdx-ranges/LICENSE.md +sha256 a21ab121cef9bed38553faad40e49b27ae3d2578d07a70956664e681021c9875 chromium/third_party/devtools-frontend/src/node_modules/spdx-satisfies/LICENSE +sha256 b2aeda654259630ed67b54e9134623c38cfb11d26201730cdc6d311d3c7c78ed chromium/third_party/devtools-frontend/src/node_modules/specificity/LICENSE +sha256 a4cdda44b5adea4731d53dcae78fb5124f8fd853e994f01e25d8c33a7daf818b chromium/third_party/devtools-frontend/src/node_modules/sprintf-js/LICENSE +sha256 ca4662cb5d1b738fbe5350c0d5485ba11773b4b7208974082ae6e129a52d631d chromium/third_party/devtools-frontend/src/node_modules/state-toggle/license +sha256 512cfa4d5e7a7569c7ae4dd95241cb6ae2aaf648ef9ebd080c01bd24868d26e9 chromium/third_party/devtools-frontend/src/node_modules/statuses/LICENSE +sha256 9660914267128b5f96a102bd7f6268c249110a39cb7c4bb7f536d856445d739c chromium/third_party/devtools-frontend/src/node_modules/streamroller/LICENSE +sha256 98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422 chromium/third_party/devtools-frontend/src/node_modules/streamroller/node_modules/debug/LICENSE +sha256 11f2aafb37d06b3ee5bdaf06e9811141d0da05263c316f3d627f45c20d43261b chromium/third_party/devtools-frontend/src/node_modules/string_decoder/LICENSE +sha256 9f084fac69d8cf1e6ce983ba5a3499c7695ed74a26ec625c38f0fd19fddd5e10 chromium/third_party/devtools-frontend/src/node_modules/stringify-entities/license +sha256 a5e49293b629194f16e08c965807b34a4a8f45aa2735658a3b0e3c1478a34b30 chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimend/LICENSE +sha256 00d402c2bbe7c67369bd01ce2c16b8ed46ccc949a1ee2d6bb8f9606afa8c7434 chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimend/node_modules/es-abstract/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimend/node_modules/es-to-primitive/LICENSE +sha256 206c1adcf206dc0031b11232f5b054ec5f1662407ab1ca415247921cab2068ab chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimend/node_modules/has-symbols/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimend/node_modules/is-callable/LICENSE +sha256 dc0fe5a22d9336f345ee984f9bf56f11f22877a3aa5fd16a1db9a8ca0e23a5d1 chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimend/node_modules/is-regex/LICENSE +sha256 bd40cc437e28a3ad7bef2ad34e6b72e757b182e67bda1acadbab4ef0476f8232 chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimend/node_modules/object-inspect/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimend/node_modules/string.prototype.trimleft/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimend/node_modules/string.prototype.trimright/LICENSE +sha256 a5e49293b629194f16e08c965807b34a4a8f45aa2735658a3b0e3c1478a34b30 chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimstart/LICENSE +sha256 00d402c2bbe7c67369bd01ce2c16b8ed46ccc949a1ee2d6bb8f9606afa8c7434 chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimstart/node_modules/es-abstract/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimstart/node_modules/es-to-primitive/LICENSE +sha256 206c1adcf206dc0031b11232f5b054ec5f1662407ab1ca415247921cab2068ab chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimstart/node_modules/has-symbols/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimstart/node_modules/is-callable/LICENSE +sha256 dc0fe5a22d9336f345ee984f9bf56f11f22877a3aa5fd16a1db9a8ca0e23a5d1 chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimstart/node_modules/is-regex/LICENSE +sha256 bd40cc437e28a3ad7bef2ad34e6b72e757b182e67bda1acadbab4ef0476f8232 chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimstart/node_modules/object-inspect/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimstart/node_modules/string.prototype.trimleft/LICENSE +sha256 c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522 chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimstart/node_modules/string.prototype.trimright/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/string-width/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/strip-ansi/license +sha256 6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c chromium/third_party/devtools-frontend/src/node_modules/strip-bom/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/strip-indent/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/strip-json-comments/license +sha256 fef84a79e6f9d8ada80ddbdb877a2c48c5c89ace72d4684c7af57991f119006d chromium/third_party/devtools-frontend/src/node_modules/stylelint-config-recommended/LICENSE +sha256 5745227ba0bbe3fadd255f420c5f87b4f12fee5e442e6ee46e80c3c567102316 chromium/third_party/devtools-frontend/src/node_modules/stylelint-config-standard/LICENSE +sha256 75d7a49cb407946d65586e81b72265fbf5c87d5e4a7e03f9dcb4034ae3aba725 chromium/third_party/devtools-frontend/src/node_modules/stylelint/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/ansi-regex/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/ansi-styles/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/chalk/license +sha256 693866fc419c6f61c8570438ec00659d156ec2b4d4a4d04091711f5f11a365d4 chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/color-convert/LICENSE +sha256 7357445bac398c76c0aef75a587009fe406d40de6a79789eb5b7ecbbad317ef2 chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/color-name/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/has-flag/license +sha256 9c94db23dc4b1e9aaee5d195668b916afc71efed54af226b66cf0ccc4389c1c0 chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/ignore/LICENSE-MIT +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/is-fullwidth-code-point/license +sha256 5c932d88256b4ab958f64a856fa48e8bd1f55bc1d96b8149c65689e0c61789d3 chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/log-symbols/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/resolve-from/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/slash/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/string-width/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/strip-ansi/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/stylelint/node_modules/supports-color/license +sha256 2db459b0f45bd3b3836c374c6ef9ff5b2b2a31628e09f3c803e18f6c629b56b1 chromium/third_party/devtools-frontend/src/node_modules/@stylelint/postcss-css-in-js/LICENSE +sha256 2db459b0f45bd3b3836c374c6ef9ff5b2b2a31628e09f3c803e18f6c629b56b1 chromium/third_party/devtools-frontend/src/node_modules/@stylelint/postcss-markdown/LICENSE +sha256 9fb0656e79b3f61b6f49e2bf0cc19e667192d57344b91f91a8ce464659c620f7 chromium/third_party/devtools-frontend/src/node_modules/style-search/LICENSE +sha256 f20adb7ae92bfb7fde52791839ff1714564b4ea60a4cd031d77208a521592a4e chromium/third_party/devtools-frontend/src/node_modules/sugarss/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/supports-color/license +sha256 4fa26a349d96c6bf268296011d84a70d18a1e85dfbef9a3c3f785c97e28d1f5d chromium/third_party/devtools-frontend/src/node_modules/svg-tags/LICENSE +sha256 37b6932865726cf59cbfb8b32a5c9fd82c834c2deba4d53aa4a6b433ae69cdda chromium/third_party/devtools-frontend/src/node_modules/table/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/table/node_modules/ansi-regex/license +sha256 483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a chromium/third_party/devtools-frontend/src/node_modules/table/node_modules/emoji-regex/LICENSE-MIT.txt +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/table/node_modules/string-width/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/table/node_modules/strip-ansi/license +sha256 3fe8d55a98dbf260eace67c00cf9bc53edb46234e840098a0b93df3096b97fb6 chromium/third_party/devtools-frontend/src/node_modules/tar-fs/LICENSE +sha256 3fe8d55a98dbf260eace67c00cf9bc53edb46234e840098a0b93df3096b97fb6 chromium/third_party/devtools-frontend/src/node_modules/tar-stream/LICENSE +sha256 68335488ef8f917c0feb901ace385f8c919bc81b0b60448a92928a3769fcec8f chromium/third_party/devtools-frontend/src/node_modules/terser/LICENSE +sha256 435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b chromium/third_party/devtools-frontend/src/node_modules/text-table/LICENSE +sha256 e8734448285a2dd773d40136ed5d5e8163a70701dd540cdc796cfca232f67d55 chromium/third_party/devtools-frontend/src/node_modules/through/LICENSE.APACHE2 +sha256 d72dea1a8cdf3f4dfa2f594253d0c5b37baefc76e806f5ecb0e426393edcd505 chromium/third_party/devtools-frontend/src/node_modules/through/LICENSE.MIT +sha256 162413c61e0982abe89a06bf7a02ec760dc49a7364d838bd9f01daebb5b95954 chromium/third_party/devtools-frontend/src/node_modules/tmp/LICENSE +sha256 61b82d27e63b14eabc706960aabf6caa1b27d044eb00d7908f92e68085301c3a chromium/third_party/devtools-frontend/src/node_modules/to-fast-properties/license +sha256 a832d679750e49ab433626ab196350b89964b60eb0d3edd3341887c7d5f4c128 chromium/third_party/devtools-frontend/src/node_modules/toidentifier/LICENSE +sha256 e7d1fee7347ffddccc5fd03327ffdb50f8c112be0d5016d62388a92c4ae6e7a9 chromium/third_party/devtools-frontend/src/node_modules/to-regex-range/LICENSE +sha256 83927d1555a8e1d5ed9896991fbb2b4cdfb64f45f5e12b7446c3bff5cea538d3 chromium/third_party/devtools-frontend/src/node_modules/treeify/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/trim-newlines/license +sha256 9f084fac69d8cf1e6ce983ba5a3499c7695ed74a26ec625c38f0fd19fddd5e10 chromium/third_party/devtools-frontend/src/node_modules/trim-trailing-lines/license +sha256 6c03fd41cfd7c92d8aa8a2fa521b94b2683f059123281dcf921ddea9216b6254 chromium/third_party/devtools-frontend/src/node_modules/trough/license +sha256 a5e9f9b1575301c7a7a03508fdaa2e05a918cc17fd21c6e898096a96d6a34f61 chromium/third_party/devtools-frontend/src/node_modules/tslib/LICENSE.txt +sha256 ed0ff5ab79bc82703690fde4644e352c9ce73e9b890b87ea68b1a1fc5805792b chromium/third_party/devtools-frontend/src/node_modules/tsutils/LICENSE +sha256 b9eb082c39fe245e38793699074c394c43a722c51fce031c3c165cb92a31035c chromium/third_party/devtools-frontend/src/node_modules/type-check/LICENSE +sha256 c7cc929b57080f4b9d0c6cf57669f0463fc5b39906344dfc8d3bc43426b30eac chromium/third_party/devtools-frontend/src/node_modules/typedarray-to-buffer/LICENSE +sha256 e5aee0714b6ecc416454b968d1017570ef609f20d8722ab84b07acd550b78198 chromium/third_party/devtools-frontend/src/node_modules/type-detect/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/type-fest/license +sha256 23d466b1b134b415b66fa50c6526b4cf3e7b9258554da88d3abb371721e7ce68 chromium/third_party/devtools-frontend/src/node_modules/type-is/LICENSE +sha256 27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0 chromium/third_party/devtools-frontend/src/node_modules/@types/chai/LICENSE +sha256 c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383 chromium/third_party/devtools-frontend/src/node_modules/@types/codemirror/LICENSE +sha256 27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0 chromium/third_party/devtools-frontend/src/node_modules/@types/color-name/LICENSE +sha256 5938d4fe4890c79ad14e02e643c385b25b8b6c7bbb97ab08996034b586512df5 chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/eslint-plugin/LICENSE +sha256 fcf6eabf68ca96988a6b506b4fdc6cc32535d80eb2e11c79724af5ac6f50262b chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/eslint-plugin/node_modules/regexpp/LICENSE +sha256 4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/eslint-plugin/node_modules/semver/LICENSE +sha256 5938d4fe4890c79ad14e02e643c385b25b8b6c7bbb97ab08996034b586512df5 chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/experimental-utils/LICENSE +sha256 fcf6eabf68ca96988a6b506b4fdc6cc32535d80eb2e11c79724af5ac6f50262b chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-utils/LICENSE +sha256 e2fc706570305bcb7dfadb1cac951d5934ce0d7331a7a7ff1bbc254dbe1d9ef8 chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/parser/LICENSE +sha256 635818d8f39384751c8a5f3f3e735022f07afb3ccdb26eb17ff8eca28428f888 chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/typescript-estree/LICENSE +sha256 6236fa0b88a4a0cce3dda0367979491b2052b3c8d6b1c10b3668de083e86a7f0 chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/typescript-estree/node_modules/glob/LICENSE +sha256 4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/typescript-estree/node_modules/semver/LICENSE +sha256 5938d4fe4890c79ad14e02e643c385b25b8b6c7bbb97ab08996034b586512df5 chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/types/LICENSE +sha256 5938d4fe4890c79ad14e02e643c385b25b8b6c7bbb97ab08996034b586512df5 chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/visitor-keys/LICENSE +sha256 a5e9f9b1575301c7a7a03508fdaa2e05a918cc17fd21c6e898096a96d6a34f61 chromium/third_party/devtools-frontend/src/node_modules/typescript/LICENSE.txt +sha256 27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0 chromium/third_party/devtools-frontend/src/node_modules/@types/eslint-visitor-keys/LICENSE +sha256 c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383 chromium/third_party/devtools-frontend/src/node_modules/@types/estree/LICENSE +sha256 27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0 chromium/third_party/devtools-frontend/src/node_modules/@types/filesystem/LICENSE +sha256 c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383 chromium/third_party/devtools-frontend/src/node_modules/@types/json-schema/LICENSE +sha256 27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0 chromium/third_party/devtools-frontend/src/node_modules/@types/mocha/LICENSE +sha256 27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0 chromium/third_party/devtools-frontend/src/node_modules/@types/node/LICENSE +sha256 27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0 chromium/third_party/devtools-frontend/src/node_modules/@types/normalize-package-data/LICENSE +sha256 27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0 chromium/third_party/devtools-frontend/src/node_modules/@types/parse-json/LICENSE +sha256 27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0 chromium/third_party/devtools-frontend/src/node_modules/@types/puppeteer/LICENSE +sha256 27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0 chromium/third_party/devtools-frontend/src/node_modules/@types/tern/LICENSE +sha256 27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0 chromium/third_party/devtools-frontend/src/node_modules/@types/unist/LICENSE +sha256 27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0 chromium/third_party/devtools-frontend/src/node_modules/@types/yauzl/LICENSE +sha256 c427692fb89dcb92bb0cc0905a650f986a7736e4ef90f9e5356a4dfdcf243b9e chromium/third_party/devtools-frontend/src/node_modules/ua-parser-js/license.md +sha256 3b2a6a268aa815dec121d614245e03b5c68db1f044d5b525e36db7d5dc7fb9c3 chromium/third_party/devtools-frontend/src/node_modules/ultron/LICENSE +sha256 81ae93d537c22c0baf10928b8ee5e13d5addc50433e12cf52f1f8292ed70d108 chromium/third_party/devtools-frontend/src/node_modules/unbzip2-stream/LICENSE +sha256 05811400116ed61f1a7693b78fe8ca6598c155a12f3978e609db4df648a4cb3d chromium/third_party/devtools-frontend/src/node_modules/unherit/license +sha256 05811400116ed61f1a7693b78fe8ca6598c155a12f3978e609db4df648a4cb3d chromium/third_party/devtools-frontend/src/node_modules/unified/license +sha256 e67aed7df22dc8031e4fcf5338fe91cb33e3817e5c58a99a2a2802eea9069791 chromium/third_party/devtools-frontend/src/node_modules/uniq/LICENSE +sha256 63cb98b3f6abfb3c3592c16f88253c1bdc834087bf52671e8ce5609e4eb693cf chromium/third_party/devtools-frontend/src/node_modules/unist-util-find-all-after/license +sha256 82974dbf2639d13edab95c32ed9cb6c0867ede272cd2e07ce47ce8548fe55c05 chromium/third_party/devtools-frontend/src/node_modules/unist-util-is/license +sha256 ca4662cb5d1b738fbe5350c0d5485ba11773b4b7208974082ae6e129a52d631d chromium/third_party/devtools-frontend/src/node_modules/unist-util-remove-position/license +sha256 ca4662cb5d1b738fbe5350c0d5485ba11773b4b7208974082ae6e129a52d631d chromium/third_party/devtools-frontend/src/node_modules/unist-util-stringify-position/license +sha256 63cb98b3f6abfb3c3592c16f88253c1bdc834087bf52671e8ce5609e4eb693cf chromium/third_party/devtools-frontend/src/node_modules/unist-util-visit/license +sha256 ca4662cb5d1b738fbe5350c0d5485ba11773b4b7208974082ae6e129a52d631d chromium/third_party/devtools-frontend/src/node_modules/unist-util-visit-parents/license +sha256 3fda5977c0904e226190b4e21d64340c1731e2142d6fe5f3dee0090a216b8b63 chromium/third_party/devtools-frontend/src/node_modules/universalify/LICENSE +sha256 1a526fbe8d8577f5a4b1c2821842b55b7c0e18862531c62ae4ce69c9b19b74b6 chromium/third_party/devtools-frontend/src/node_modules/unpipe/LICENSE +sha256 0154425673db15cdfa80ecba2c9b1f1a867f7197a006764712849bfc3a93cbb7 chromium/third_party/devtools-frontend/src/node_modules/util-deprecate/LICENSE +sha256 6239c6144c31e58cf925c34483606969c555574d64ffa96518ab5d7f45c75d43 chromium/third_party/devtools-frontend/src/node_modules/util-extend/LICENSE +sha256 6e7d699cdd1e4fa837ba7718ea49841aa67201b449ea8b3f9cf274be15974a64 chromium/third_party/devtools-frontend/src/node_modules/utils-merge/LICENSE +sha256 c77674258a3fdf3036a5d13d2aecd30d7a25aa6191cb0a9a7dd45b975dc7fe69 chromium/third_party/devtools-frontend/src/node_modules/v8-compile-cache/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/devtools-frontend/src/node_modules/validate-npm-package-license/LICENSE +sha256 05811400116ed61f1a7693b78fe8ca6598c155a12f3978e609db4df648a4cb3d chromium/third_party/devtools-frontend/src/node_modules/vfile/license +sha256 ca4662cb5d1b738fbe5350c0d5485ba11773b4b7208974082ae6e129a52d631d chromium/third_party/devtools-frontend/src/node_modules/vfile-location/license +sha256 d8fc337aaf98fc7a0f5498edc18b47a9df8cdfcc1a0f013519105905722c7a4c chromium/third_party/devtools-frontend/src/node_modules/vfile-message/license +sha256 405a272eaef556691ad7dda96db3237c9544afe18725842a1a5b3ec308960222 chromium/third_party/devtools-frontend/src/node_modules/void-elements/LICENSE +sha256 4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b chromium/third_party/devtools-frontend/src/node_modules/which/LICENSE +sha256 852bf81203aa93aa89afc9f881ebb035322dc7334aaceff435c557634c94a815 chromium/third_party/devtools-frontend/src/node_modules/which-module/LICENSE +sha256 0cef05dfff8b6aa7f35596984f5709f0d17c2582924a751efa471a76de7cdc11 chromium/third_party/devtools-frontend/src/node_modules/wide-align/LICENSE +sha256 f4a48aa8354a257785aa534bab2ac5ff2c2a98cd59cdf4a637bb68ee185683f7 chromium/third_party/devtools-frontend/src/node_modules/word-wrap/LICENSE +sha256 435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b chromium/third_party/devtools-frontend/src/node_modules/wordwrap/LICENSE +sha256 6dc0e068dcf3a5bc8e054205b85b7720e1d49265bbc64bf515d2cf79197df69a chromium/third_party/devtools-frontend/src/node_modules/workerpool/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/node_modules/ansi-regex/license +sha256 483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/node_modules/emoji-regex/LICENSE-MIT.txt +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/node_modules/string-width/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/node_modules/strip-ansi/license +sha256 4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b chromium/third_party/devtools-frontend/src/node_modules/wrappy/LICENSE +sha256 ea7f376fe7a1fc28572b83ac8f806d92effb31852b9981bc9ba9d5266caa6b28 chromium/third_party/devtools-frontend/src/node_modules/write-file-atomic/LICENSE +sha256 0ead7e8cd8b0bc66a981ee69acaf1297ffa838cfce1b156a039bb24f997c0a27 chromium/third_party/devtools-frontend/src/node_modules/write/LICENSE +sha256 3de284c8e6fa7e8437eff6f53695471e0332129a5b42a79361e17b7637de94b3 chromium/third_party/devtools-frontend/src/node_modules/ws/LICENSE +sha256 c7cc929b57080f4b9d0c6cf57669f0463fc5b39906344dfc8d3bc43426b30eac chromium/third_party/devtools-frontend/src/node_modules/ws/node_modules/safe-buffer/LICENSE +sha256 a5f35901ee8b2039a7431144c23dd10bd47c1d07bcee0cd3a536421d86412214 chromium/third_party/devtools-frontend/src/node_modules/xmlhttprequest-ssl/LICENSE +sha256 82e67379203d5794e7c44549847d8d64ae6904591381682360470898bd306821 chromium/third_party/devtools-frontend/src/node_modules/xtend/LICENSE +sha256 2034cce3b6fafcddd642c4175e01d3ddfc332a53b9f20fdc46b1466dc89ac469 chromium/third_party/devtools-frontend/src/node_modules/y18n/LICENSE +sha256 0f10bab9eedc5d50183a6dbce9f76e8db974103bfd32d64674406dfeb7654ee7 chromium/third_party/devtools-frontend/src/node_modules/yaml/LICENSE +sha256 fe71524a15f30aab0f39af7165d38fc64a4269b7d2a0caffebc907355aec9c92 chromium/third_party/devtools-frontend/src/node_modules/yargs/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/ansi-regex/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/ansi-styles/license +sha256 2dc0465729366c3a7890dfa9e972a1ba7048a26c02116fb8b419a6a1ac110149 chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/cliui/LICENSE.txt +sha256 693866fc419c6f61c8570438ec00659d156ec2b4d4a4d04091711f5f11a365d4 chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/color-convert/LICENSE +sha256 7357445bac398c76c0aef75a587009fe406d40de6a79789eb5b7ecbbad317ef2 chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/color-name/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/find-up/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/is-fullwidth-code-point/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/locate-path/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/path-exists/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/p-locate/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/string-width/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/strip-ansi/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/wrap-ansi/license +sha256 365496ca1f56da40b23c9815fc40fa9005847b2f8f8fd1c1a4929ef25ec8cd1d chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/yargs-parser/LICENSE.txt +sha256 365496ca1f56da40b23c9815fc40fa9005847b2f8f8fd1c1a4929ef25ec8cd1d chromium/third_party/devtools-frontend/src/node_modules/yargs-parser/LICENSE.txt +sha256 30877d17f7e38530d46b49fb375ee98ce2e8b085b3ee72d4c2888710416ef139 chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/LICENSE +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/ansi-regex/license +sha256 483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/emoji-regex/LICENSE-MIT.txt +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/find-up/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/locate-path/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/p-locate/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/string-width/license +sha256 48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0 chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/strip-ansi/license +sha256 fe71524a15f30aab0f39af7165d38fc64a4269b7d2a0caffebc907355aec9c92 chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/yargs/LICENSE +sha256 b303783d5eb7ca50b853ffa5f145e4e7998fab339831d848f507ca6cd970577a chromium/third_party/devtools-frontend/src/node_modules/yauzl/LICENSE +sha256 3b2a6a268aa815dec121d614245e03b5c68db1f044d5b525e36db7d5dc7fb9c3 chromium/third_party/devtools-frontend/src/node_modules/yeast/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/devtools-frontend/src/scripts/closure/COPYING +sha256 7ec9661a8afafab1eee3523d6f1a193eff76314a5ab10b4ce96aefd87621b0c3 chromium/third_party/devtools-frontend/src/third_party/i18n/LICENSE +sha256 a8ad31b1c3f40dca5a84119351b8fa8ddc868edd77fad8a8ebf6d8f2d16fa4ae chromium/third_party/devtools-frontend/src/third_party/pyjson5/src/LICENSE +sha256 4f5753ce8acf3feafc758599058746d30bda07bc0d4cc3a6a1eb8e039fdba1dc chromium/third_party/dom_distiller_js/LICENSE +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 chromium/third_party/dpkg-shlibdeps/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/emoji-segmenter/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/emoji-segmenter/src/LICENSE +sha256 9021fdb5341ebbb2eb5c771ac5cfac527790673179d3b21a42de1ab2798ec30f chromium/third_party/espresso/LICENSE +sha256 8c6b5b6de8fae20b317f4992729abc0e520bfba4c7606cd1e9eeb87418eebdec chromium/third_party/expat/src/expat/COPYING +sha256 d9c904abd0ead61b3fbaef0a609285548076ff9c3f814cc1cf019c5d7150736d chromium/third_party/ffmpeg/chromium/scripts/license_texts/full_lgpl.txt +sha256 a8579e3fc40c11ab147bc299257733eb749cd455010385f7c117f70d7aef24e4 chromium/third_party/ffmpeg/chromium/scripts/license_texts/jpeg.txt +sha256 857d5f537af3aa164e7a27eda60147d34195e5781abe7b1d358d9fb01e222ae0 chromium/third_party/ffmpeg/chromium/scripts/license_texts/mips.txt +sha256 b4c85cce2b772f27d83f4562c20787057dc6949fcecc820a82c1d2e7047e89c3 chromium/third_party/ffmpeg/chromium/scripts/license_texts/oggparse_ahlberg_rullgayrd_2005.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 chromium/third_party/ffmpeg/COPYING.GPLv2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 chromium/third_party/ffmpeg/COPYING.GPLv3 +sha256 b634ab5640e258563c536e658cad87080553df6f34f62269a21d554844e58bfe chromium/third_party/ffmpeg/COPYING.LGPLv2.1 +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 chromium/third_party/ffmpeg/COPYING.LGPLv3 +sha256 cb48bf09a11f5fb576cddb0431c8f5ed0a60157a9ec942adffc13907cbe083f2 chromium/third_party/ffmpeg/LICENSE.md +sha256 f45cc81b400a048b56c9edbd4c3317f7a8958463dfd55aa96f268ecfd6baa12c chromium/third_party/flac/COPYING.FDL +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 chromium/third_party/flac/COPYING.GPL +sha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a chromium/third_party/flac/COPYING.LGPL +sha256 946b733afbaa20a192c8dc022b4e43090e78f28fd293494d1b307f7301552c9b chromium/third_party/flac/COPYING.Xiph +sha256 7ec9661a8afafab1eee3523d6f1a193eff76314a5ab10b4ce96aefd87621b0c3 chromium/third_party/flatbuffers/LICENSE +sha256 3112ebbfc0fe10ad40a97672f5590c4292536a28cbfe3506820b15dec70b2258 chromium/third_party/flatbuffers/src/dart/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/flatbuffers/src/LICENSE.txt +sha256 fa4cd9ab005185e10cd8f7504518856c7dd36c01e766c2bac87f4fc638e9f886 chromium/third_party/fontconfig/LICENSE +sha256 fa4cd9ab005185e10cd8f7504518856c7dd36c01e766c2bac87f4fc638e9f886 chromium/third_party/fontconfig/src/COPYING +sha256 fd056de4196903a676208ef58cfddafc7d583d1f28fa2e44c309cf84a59e62fb chromium/third_party/freetype/src/docs/LICENSE.TXT +sha256 cc807e3caa26cdee316bab2ff6fdb508a2f619b74959fe59e513ef6e61635ebe chromium/third_party/fusejs/LICENSE +sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 chromium/third_party/gif_player/LICENSE +sha256 8ea14fdc7efee7fe53c79101b97049bd547dc6686cfa05df4f0686146a561423 chromium/third_party/glfw/src/LICENSE.md +sha256 23353f4505b1c8ce4f8f72fc3b11dc74b4a8a7bf95921d93ff77f227c171a710 chromium/third_party/glslang/LICENSE +sha256 7ddbbe34e0371fb18be6ac34cae3424f091901dfe2bebd935b0795a4e7718ebb chromium/third_party/glslang/src/license-checker.cfg +sha256 130b2e98901db02a83e5e83c132b22d22d9279155feb53c49d6471b75af3c352 chromium/third_party/glslang/src/LICENSE.txt +sha256 a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9 chromium/third_party/google-closure-library/closure-deps/LICENSE +sha256 a7fd1637f41b8f56a911c8d11fd6b6b68619879f67256874232ff83c0c63a090 chromium/third_party/google-closure-library/doc/LICENSE +sha256 a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9 chromium/third_party/google-closure-library/LICENSE +sha256 9702de7e4117a8e2b20dafab11ffda58c198aede066406496bef670d40a22138 chromium/third_party/googletest/src/googlemock/LICENSE +sha256 5e0df8c845c742e76f2f64d2d9ce1b7e74a2422fddbc577ae6a56319083de0bf chromium/third_party/googletest/src/googlemock/scripts/generator/LICENSE +sha256 9702de7e4117a8e2b20dafab11ffda58c198aede066406496bef670d40a22138 chromium/third_party/googletest/src/googletest/LICENSE +sha256 9702de7e4117a8e2b20dafab11ffda58c198aede066406496bef670d40a22138 chromium/third_party/googletest/src/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/google-truth/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/guava/LICENSE +sha256 ca382aa537f8923d6c0991fb976d184a2009eb76080313bf10dcecdc9311f0dd chromium/third_party/gvr-android-keyboard/LICENSE +sha256 f54c49d3ff865458c5d3c68c3367a1f6e0d7b3f686f8c88a6a563ef90f84ad9e chromium/third_party/gvr-android-sdk/LICENSE +sha256 96e5bbd81970983d666e702fa56f67dfd2fdaa363b8a4266e8d98847374cd7c8 chromium/third_party/hamcrest/LICENSE +sha256 beb3f017ceb41387667f78237a7cecf84defa0ed257c505894663d6a9f13211b chromium/third_party/harfbuzz-ng/src/COPYING +sha256 c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383 chromium/third_party/harfbuzz-ng/src/src/ms-use/COPYING +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 chromium/third_party/hunspell/COPYING +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 chromium/third_party/hunspell/COPYING.LESSER +sha256 53692a2ed6c6a2c6ec9b32dd0b820dfae91e0a1fcdf625ca9ed0bdf8705fcc4f chromium/third_party/hunspell/COPYING.MPL +sha256 b794aa78066400af1be3d3fb3f89c4dddc680786f14dc4e3d23a0b2848054984 chromium/third_party/hyphenation-patterns/LICENSE +sha256 a03fed9ab6321742903f3f0095b389ce811c4cfeb3f671ddc8d33da57dc92493 chromium/third_party/hyphenation-patterns/src/pt/LICENSE +sha256 610809f1586ee4d22468f1e97c256153cea8be7a662193db70d6ca424e0f17c8 chromium/third_party/iaccessible2/LICENSE +sha256 a412a53925efc6b50800bf8519a2e033949243d5a5a8c5422bae8a5007ad09c8 chromium/third_party/iccjpeg/LICENSE +sha256 d18e75f216f177d41304f5e94c2cba7d1bf9f8f8583a0777cceb5cca0c5ad137 chromium/third_party/icu4j/LICENSE +sha256 25e21013a7bc2fad735e28c5278a120e4c7f1c327c8c8b9b4df1751748cddbb2 chromium/third_party/icu/LICENSE +sha256 c62d7697c03979f5056d28b338fafc7a1152820f7b379adf4a9d88cd37160f96 chromium/third_party/icu/license.html +sha256 845022e0c1db1abb41a6ba4cd3c4b674ec290f3359d9d3c78ae558d4c0ed9308 chromium/third_party/icu/scripts/LICENSE +sha256 8c6db340475136df3c1201d458fa5755698eace76e510471ecc9d857d6083dac chromium/third_party/ijar/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/ink/LICENSE +sha256 b9be92f13356083392d97da13cab8ae543c7911f44eff5289b693da8b17b9e08 chromium/third_party/inspector_protocol/LICENSE +sha256 7a92c5e7a83b5ddcc693bb84ea8bdb842308509c1758cffdfe24717609154c75 chromium/third_party/isimpledom/LICENSE +sha256 ed8d7a24769ac9d57d08769b5f8be27519dd8811d06b0995dbe8ca6714e96d08 chromium/third_party/jacoco/LICENSE +sha256 33b6816eb449962d307495946519ed78cef8743819f6f1d60e8b3d4e86c38b1c chromium/third_party/javalang/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/jetifier_standalone/LICENSE +sha256 7975c0027cfa5d08253fbb6ff4676acc38248bd5e046d0dbab3d810971e97970 chromium/third_party/jinja2/LICENSE +sha256 76c45ece83a26117f86f4e349e7df118708e061e87225328fb478ce1e8b3eb86 chromium/third_party/jsoncpp/LICENSE +sha256 95039d77a20e75b428207740d9a8f97b2dce3c89da4b21f1ad862b5997160e0a chromium/third_party/jsoncpp/source/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/jstemplate/COPYING +sha256 71a19392a0eb3255ab2055ed978bb0f93865cea84d31a3510eaffb74d8981e7f chromium/third_party/khronos/LICENSE +sha256 ccc19f1da0798ed666609b65a5b44dd8b3abe6fc08b9c0592eb76e82e174db19 chromium/third_party/leveldatabase/src/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/libaddressinput/LICENSE +sha256 c9a5bd7c8cc1267ddacdc5228c68ecd811cf6d74286e9141bc80d8af2eb1a025 chromium/third_party/libaddressinput/src/cpp/LICENSE.chromium +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/libaddressinput/src/LICENSE +sha256 4764a286d8b2faeaf42f4418e7d7a28d58fc8fd4d00a3d0a7f44b0a4099de7f2 chromium/third_party/libaom/source/libaom/LICENSE +sha256 043dcfd059386f9facd376351b2bd79325778744aa442177390cdfcca54babed chromium/third_party/libaom/source/libaom/third_party/fastfeat/LICENSE +sha256 9702de7e4117a8e2b20dafab11ffda58c198aede066406496bef670d40a22138 chromium/third_party/libaom/source/libaom/third_party/googletest/src/googletest/LICENSE +sha256 5aec868f669e384a22372a4e8a1a6cd7d44c64cd451f960ca69cc170d1e13acf chromium/third_party/libaom/source/libaom/third_party/libwebm/LICENSE.TXT +sha256 ff6c857ce2708e87701323078aef115c1872a1f80a9649f86dc899b48083bc60 chromium/third_party/libaom/source/libaom/third_party/vector/LICENSE +sha256 719d8fa235f2068e0ae6d6a7dceb0a7720d7840f0f0ebed29957989e6ded3cd8 chromium/third_party/libaom/source/libaom/third_party/x86inc/LICENSE +sha256 0b711483921350723ddef8dd3e52b10eb79e4877817a2ccf9a48dd2deb7947aa chromium/third_party/libavif/LICENSE +sha256 e0ba04d4885bf25b03e20c8078e5f4b241bfe6a941d4a9bcc14cab09e2c27e62 chromium/third_party/libavif/src/LICENSE +sha256 d80c9d084ebfb50ea1ed91bfbc2410d6ce542097a32c43b00781b83adcb8c77f chromium/third_party/libbrlapi/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/libgav1/src/LICENSE +sha256 d56bafdaeaa793331a29e9766b7efe66524c98533da798a57201e291863ef625 chromium/third_party/libgifcodec/LICENSE.md +sha256 37d8bfba91b745693ea58f846f2f1276229745adf532974b73c1911cfd144241 chromium/third_party/libipp/LICENSE +sha256 ab00a482b6a3902e40211b43c5d0441962ea99b6cc7c25c0f243fa270b78d482 chromium/third_party/libjingle_xmpp/LICENSE +sha256 7d8683a7f048e715e08b4cada8b7f0d9a6ab8afad88ed09c1143ef764ecbc0f2 chromium/third_party/libjpeg_turbo/LICENSE.md +sha256 3bf128851aff9f392953276ea8ade3e41da0f40b853fde58ec21034aa91ccc31 chromium/third_party/libovr/LICENSE +sha256 bf5e22b9dce8464064ae17a48ea1133c3369ac9e1d80ef9e320e5219aa14ea9b chromium/third_party/libpng/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/libprotobuf-mutator/src/LICENSE +sha256 a1a33180d02960ab1c5de36cf20b1a2f0fe9888d83826ad263da5db52f1b183b chromium/third_party/libsecret/LICENSE +sha256 8e19d42a1eec9561f3f347253ddf2e385c55f392f025bb0fd41b88dbf38db5ae chromium/third_party/libsrtp/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/libsync/LICENSE +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 chromium/third_party/libudev/LICENSE +sha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a chromium/third_party/libusb/src/COPYING +sha256 8267348d5af1262c11d1a08de2f5afc77457755f1ac658627dd9acf71011d615 chromium/third_party/libvpx/source/libvpx/LICENSE +sha256 9702de7e4117a8e2b20dafab11ffda58c198aede066406496bef670d40a22138 chromium/third_party/libvpx/source/libvpx/third_party/googletest/src/LICENSE +sha256 5aec868f669e384a22372a4e8a1a6cd7d44c64cd451f960ca69cc170d1e13acf chromium/third_party/libvpx/source/libvpx/third_party/libwebm/LICENSE.TXT +sha256 2b2cc1180c7e6988328ad2033b04b80117419db9c4c584918bbb3cfec7e9364f chromium/third_party/libvpx/source/libvpx/third_party/libyuv/LICENSE +sha256 719d8fa235f2068e0ae6d6a7dceb0a7720d7840f0f0ebed29957989e6ded3cd8 chromium/third_party/libvpx/source/libvpx/third_party/x86inc/LICENSE +sha256 5aec868f669e384a22372a4e8a1a6cd7d44c64cd451f960ca69cc170d1e13acf chromium/third_party/libwebm/source/LICENSE.TXT +sha256 6de6fe48ff7b249a51ec5522d1af618dd50effc6f030fd24e17878566ad2ca5d chromium/third_party/libwebp/LICENSE +sha256 c5c63674f8a83c4d2e385d96d1c670a03cb871ba2927755467017317878574bd chromium/third_party/libxml/src/Copyright +sha256 31346421254a3e6e12687cf17f19f6357ee73a617fa7b3d3ccefdcbabe49bdd3 chromium/third_party/libXNVCtrl/LICENSE +sha256 7e48e290b6bfccc2ec1b297023a1d77f2fd87417f71fbb9f50aabef40a851819 chromium/third_party/libxslt/src/Copyright +sha256 2b2cc1180c7e6988328ad2033b04b80117419db9c4c584918bbb3cfec7e9364f chromium/third_party/libyuv/LICENSE +sha256 0d4077a7055ead389c4c5a9a6ac4bb8b784fc6e9e37be2caf544fcceed26cb16 chromium/third_party/lottie/LICENSE +sha256 6e3e0a978f1e136cb3efb89702f4314671581a0c70c9a52447669e00f7b129e8 chromium/third_party/lzma_sdk/LICENSE +sha256 c3b124673c93872156757a934c75b498d68eec09510e25e549d9dc2013776499 chromium/third_party/mako/LICENSE +sha256 0bbe88228fd63d20ec097f64e58d5a0a465123ae139140a18d406c60b48824b5 chromium/third_party/markupsafe/LICENSE +sha256 58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd chromium/third_party/material_design_icons/LICENSE +sha256 536284e40c611f371f6ce5d74efac37a20d993cd3af96259b9b9e20b1669ff1e chromium/third_party/mesa_headers/LICENSE +sha256 845022e0c1db1abb41a6ba4cd3c4b674ec290f3359d9d3c78ae558d4c0ed9308 chromium/third_party/metrics_proto/LICENSE +sha256 27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0 chromium/third_party/microsoft_webauthn/LICENSE +sha256 83bb6bd9ccd2cf5230cb1807ed16258289768dc4d9cb80069a814e04415a1275 chromium/third_party/minigbm/LICENSE +sha256 8610954adbca6c6b85d8b1ae5613b44b0014e437d32fcad6683bb27541411686 chromium/third_party/minigbm/src/LICENSE +sha256 4919cfb14a73cd64fcef67b107613970cf1659a09aa675dba31314f373bc7204 chromium/third_party/minizip/src/lib/bzip2/LICENSE +sha256 87642305968765a4030fd202ff7006afa67274da7f9bde84506e51ae58ecc2b4 chromium/third_party/minizip/src/LICENSE +sha256 bd5663836feb58ffb7d0e6b9e62010f4c3399f2bb0a4cf6514a15d597bbdd577 chromium/third_party/mocha/LICENSE +sha256 380893a2f01aea5c3328b1a8b08cdc488bf236916abac3af0d1f1a5d2634c31a chromium/third_party/mockito/LICENSE +sha256 d47e8390fb0d7ad4a18f26aedd6283c7ab6b5b4fabab536ccb4db7f9f6d90c08 chromium/third_party/modp_b64/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/motemplate/LICENSE +sha256 7a92c5e7a83b5ddcc693bb84ea8bdb842308509c1758cffdfe24717609154c75 chromium/third_party/mozilla/LICENSE +sha256 1563996c52e220e15ef2418e67d39488255aa8c28c89e617074d3afe3ee329e0 chromium/third_party/nasm/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/nearby/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/nearby/src/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/netty4/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/netty-tcnative/LICENSE +sha256 0cd1bd4b934ffdc5e7f1bcfa9d08bd17295e5414bdca99c06b1036278b01f0b1 chromium/third_party/node/LICENSE +sha256 b5730da9a26472a405b0b1c61d3d166714d9d654ab3282e54e4a01a5f66316c3 chromium/third_party/objenesis/LICENSE +sha256 0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594 chromium/third_party/ocmock/License.txt +sha256 8bed129a6a15e631c93a624985e631eb62a55f7e072b78f4e1c3dde7c745283d chromium/third_party/one_euro_filter/LICENSE +sha256 a5a7cf90fe5ac9763baad852cf69cf9d9b89bff934a679fdc5c8fcecaeba9a25 chromium/third_party/opencv/src/LICENSE +sha256 dd5c1c9668512530fa5a96e4c29ac4033d70a7eeb0eed7a42fddb6dd794ebdbb chromium/third_party/openh264/src/LICENSE +sha256 34a5c58db7cc4d3265d14a9aa26e38067fe114311d8bec31f909d1c240e626c4 chromium/third_party/openscreen/src/LICENSE +sha256 284545e873c704952e5b1b39d457dd83a3b115a51d9f1eb5175137bd69b8fa1b chromium/third_party/openscreen/src/third_party/mozilla/LICENSE.txt +sha256 3c6ba0b5bfa7830505301ffb336a17b0748e0d61c4d34216e9dc98f10e40395e chromium/third_party/openscreen/src/third_party/tinycbor/src/LICENSE +sha256 8338ce8d922bb4416ce3dd1e5680173332435e3f0755007ac7801ccd674fe682 chromium/third_party/opus/src/COPYING +sha256 7efb4989e0cd1b256229bdf2f09300c5d14e35db0e7476bfb87fac243498273d chromium/third_party/opus/src/LICENSE_PLEASE_READ.txt +sha256 0d74de3c3cd3196a9ed1bc612cfd5f81d7509d66c4be34a50f99d61bd1ad00d4 chromium/third_party/ots/LICENSE +sha256 9dd8d2fb95ba862a5d166a167682c1c67a209acd3bf09b6fd03f76d3579729bc chromium/third_party/ow2_asm/LICENSE +sha256 76621fcfb65adfd6602b700708b74c8e20f3325b32f1a54bec83a5cf7c679f53 chromium/third_party/pdfium/LICENSE +sha256 32759d1397d8f7b9e15ece146e4038b22b90e93b4935b5a840bcef4d2ba5ea55 chromium/third_party/pdfium/third_party/bigint/LICENSE +sha256 bf5e22b9dce8464064ae17a48ea1133c3369ac9e1d80ef9e320e5219aa14ea9b chromium/third_party/pdfium/third_party/libpng16/LICENSE +sha256 c5b14f5a3814d2e57b9bb9520dcf57a2c3817b65c4f989e5c82e332c82af1038 chromium/third_party/pdfium/third_party/pymock/LICENSE.txt +sha256 00564d497642465d7f96d109f38ff144997f0abc04ef167410f6b172ad5e92cd chromium/third_party/perfetto/LICENSE +sha256 80f13607677e9932bf08e5f0bc025f8d77bde813d62bf3d5465c709025710d3d chromium/third_party/perfetto/src/trace_processor/python/LICENSE +sha256 9f98bab33648b77578d85ac0f1d1c3941a72aa6d7e65015ba181f2fe804bb85d chromium/third_party/pexpect/LICENSE +sha256 a46200592eb193853527250da098e6bb0c75424e7a2c7db8da526c4f301c3d88 chromium/third_party/pffft/LICENSE +sha256 dd4930c619afd8527591353c7d3d1c1d7f4bf62ed1cb411f4f507dbdee7738a2 chromium/third_party/ply/LICENSE +sha256 d6c873c08a8806f08fdafe1aa00ba38837f6ac29f91d6b26510614b0df2001e0 chromium/third_party/ply/license.patch +sha256 24699c6858472311aa9acc6c2b7112ff9de6e7792569158ba9e439deb0529ef6 chromium/third_party/polymer/LICENSE.polymer +sha256 a5adc2955c0dd848c97aa6afb14e0047a610f0fcfa6ce0011efad01a0e051406 chromium/third_party/polymer/v1_0/components-chromium/polymer2/LICENSE.txt +sha256 a5adc2955c0dd848c97aa6afb14e0047a610f0fcfa6ce0011efad01a0e051406 chromium/third_party/polymer/v3_0/components-chromium/polymer/LICENSE.txt +sha256 58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd chromium/third_party/private-join-and-compute/src/crypto/LICENSE +sha256 58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd chromium/third_party/private-join-and-compute/src/LICENSE +sha256 58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd chromium/third_party/private-join-and-compute/src/util/LICENSE +sha256 432959ed8cca3b44d8dd8dda9c8bf84ef982aa0cfdf9782ad9cdedc4e1146f8b chromium/third_party/private_membership/LICENSE +sha256 294f58267c6f473c4ce7270bf5c8d34b2003cb43804552459654c36553431276 chromium/third_party/proguard/LICENSE +sha256 6e5e117324afd944dcf67f36cf329843bc1a92229a8cd9bb573d7a83130fea7d chromium/third_party/protobuf/LICENSE +sha256 2ab28b982a7f3150e1597befaa87e1636b9973c80aef3752597945d270c4c4e4 chromium/third_party/pycoverage/LICENSE +sha256 f8d0c347a0dcc6ebe1671640dfae8d2411b6ded892e06a6764f8208b218b2af4 chromium/third_party/pyelftools/elftools/construct/LICENSE +sha256 f8c8ccecdbb044fd6fa1a586c596a055fb2b14fb3e335d8ed282db58d80b7410 chromium/third_party/pyelftools/LICENSE +sha256 cb5e8e7e5f4a3988e1063c142c60dc2df75605f4c46515e776e3aca6df976e14 chromium/third_party/pyjson5/src/LICENSE +sha256 318cea263a2fb726d767e2777771a431a3220008e6940dd5138a235a1fc498fc chromium/third_party/pystache/LICENSE +sha256 956c3b678228a216142df38d039bba56ee6509d3298e7a4b8dd5bc3eaa80fe33 chromium/third_party/Python-Markdown/LICENSE.md +sha256 5a2954f05e7fcc1bf240a3b58534f974760b5aae02438ce875c9c7fe0bdb4cf9 chromium/third_party/pywebsocket3/src/LICENSE +sha256 c903100da706172066fa1b6f02eba60f202fea63036492d2c4a01267e32aa7a8 chromium/third_party/qcms/src/COPYING +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/quic_trace/src/LICENSE +sha256 38751245389e1e23f73e6f5384b5cbe7fa972cc4410c5adc9c04b082a0b9561a chromium/third_party/quic_trace/src/third_party/fonts/LICENSE +sha256 8991cd11befec7c6a63662700f03c0cc42e864b6e77c7e70b80297c951a7f0ff chromium/third_party/quic_trace/src/third_party/glew/LICENSE.txt +sha256 f98f3db81b4dd3873d8672117e409286142cfae9b7673ab6d7aab4bae1527d20 chromium/third_party/qunit/LICENSE +sha256 68834f116f8ff545f05d14753357b620748156d60ee36b26beab4cb3f317efe4 chromium/third_party/r8/LICENSE +sha256 6040cda75d90b1738292a631d89934c411ef7ffd543c4d6a1b7edfc8edf29449 chromium/third_party/re2/LICENSE +sha256 6040cda75d90b1738292a631d89934c411ef7ffd543c4d6a1b7edfc8edf29449 chromium/third_party/re2/src/LICENSE +sha256 e479bcdfa777738226b4282bf8536cc5416a25cec3100cbe210b8be4d1e2ed84 chromium/third_party/requests/LICENSE +sha256 e2f59ff41d9d03adc3dcf3deff170f8c8cf4a6eb4a9b174762a7656d23200ffa chromium/third_party/rnnoise/COPYING +sha256 0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594 chromium/third_party/robolectric/LICENSE +sha256 19c9b910bec5a4f2c420747d1bf81e975ffdb1377ad91c5d9b1e8dd3e38f4c17 chromium/third_party/robolectric/licenses/extreme.indiana.edu.license.txt +sha256 a7436c952fa2dc0701860cf4187d1e8e8e6de6720dec0ae9e0b641bc50eebced chromium/third_party/robolectric/licenses/javolution.license.txt +sha256 5b6ac717e37db4f6d17bda7791f4ce3f99947aeb21e6e72b705aa3d1ee2de480 chromium/third_party/robolectric/licenses/pivotal.labs.license.txt +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/s2cellid/LICENSE +sha256 3f941b3b89cf7b8370ceb83cc76d2120d471b58735d8ca60238a751a48d7f72f chromium/third_party/schema_org/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/securemessage/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/securemessage/src/LICENSE +sha256 2534ec1a8b4d0c28c4fc8e4712dec2c693681e3261241d35302d0fd9abe02ea7 chromium/third_party/shaderc/src/kokoro/linux/license_check_docker.sh +sha256 5f832ba83b10050e308cdd072b5de1d873a25b4248c0ab58a0c52420276e06d2 chromium/third_party/shaderc/src/kokoro/linux/license_check.sh +sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 chromium/third_party/shaderc/src/LICENSE +sha256 085e979c8a83de3843aeaa49d57c74327c0e35da177339b54b353e32e63b0ca9 chromium/third_party/shaderc/src/license-checker.cfg +sha256 b5a00e94f058edc87e05978329b55730d8689abe61205d9018443d03de4f07da chromium/third_party/shaderc/src/third_party/LICENSE.glslang +sha256 47e20ce182bc68fab1a0cfb129b03c326aaf4f2b6b7905aa9d376d31018bd29f chromium/third_party/shaderc/src/third_party/LICENSE.spirv-tools +sha256 f1e9c0fdbee5f3a99152331418fd2ff44c08800486896667c1912ca5edf76f9e chromium/third_party/shaka-player/LICENSE +sha256 58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd chromium/third_party/shell-encryption/src/glog/LICENSE +sha256 bcf29b4fd3ec2cb5f9d40a0866da446f6da62170d2ccedf4aeca9cf9406dd20c chromium/third_party/shell-encryption/src/LICENSE +sha256 bcf29b4fd3ec2cb5f9d40a0866da446f6da62170d2ccedf4aeca9cf9406dd20c chromium/third_party/shell-encryption/src/prng/LICENSE +sha256 bcf29b4fd3ec2cb5f9d40a0866da446f6da62170d2ccedf4aeca9cf9406dd20c chromium/third_party/shell-encryption/src/testing/LICENSE +sha256 33c9a2fe619e1200937629f318895898ffcd1bf7d0ddd39adc382c030925e61e chromium/third_party/simplejson/LICENSE.txt +sha256 b25948e48c44312d04ffc626a9d52cae7c04539a1a8e0c1be47b7bfa0da03e1d chromium/third_party/sinonjs/LICENSE +sha256 8bb850c565aa389fdc16f3a46965ad23d82adff60f2393fc2762b63185e8e6c9 chromium/third_party/six/LICENSE +sha256 8bb850c565aa389fdc16f3a46965ad23d82adff60f2393fc2762b63185e8e6c9 chromium/third_party/six/src/LICENSE +sha256 e59bb5c5c6ba426a9ac4ba9fe667ad14c5166b12aa25be8af1d122b14fbe2e36 chromium/third_party/skia/include/third_party/skcms/LICENSE +sha256 e59bb5c5c6ba426a9ac4ba9fe667ad14c5166b12aa25be8af1d122b14fbe2e36 chromium/third_party/skia/include/third_party/vulkan/LICENSE +sha256 5f787c1dee3c56547f09ccc2906ab5f5293c4d8dd6c8654e573216c38e908dbd chromium/third_party/skia/LICENSE +sha256 d27678cba0d529e77201e2d2a053628143e986aad8f1e77f7039ad4366c8f978 chromium/third_party/skia/modules/canvaskit/canvaskit/LICENSE +sha256 d27678cba0d529e77201e2d2a053628143e986aad8f1e77f7039ad4366c8f978 chromium/third_party/skia/modules/pathkit/npm-asmjs/LICENSE +sha256 d27678cba0d529e77201e2d2a053628143e986aad8f1e77f7039ad4366c8f978 chromium/third_party/skia/modules/pathkit/npm-wasm/LICENSE +sha256 5366e97b4478f15a1e2fd7e6094337426597df28de50cd9fed3f2e7e87f1229e chromium/third_party/skia/third_party/etc1/LICENSE +sha256 e59bb5c5c6ba426a9ac4ba9fe667ad14c5166b12aa25be8af1d122b14fbe2e36 chromium/third_party/skia/third_party/skcms/LICENSE +sha256 e21477eed484b07902a861a1b18d1e4ecd3e6f22fa81e2410f0770cfb67290e8 chromium/third_party/skia/third_party/vulkanmemoryallocator/include/LICENSE.txt +sha256 d27678cba0d529e77201e2d2a053628143e986aad8f1e77f7039ad4366c8f978 chromium/third_party/skia/third_party/vulkanmemoryallocator/LICENSE +sha256 e59bb5c5c6ba426a9ac4ba9fe667ad14c5166b12aa25be8af1d122b14fbe2e36 chromium/third_party/skia/third_party/wuffs/LICENSE +sha256 3f6f1b520bc53e878ccbb698ad0bacef3752a5f4e4b50a26552bd70f60b40748 chromium/third_party/smhasher/LICENSE +sha256 55172044f7e241207117448a4d9d6ba1d0925c8ad66b5d4c08c70adfa9cc3de6 chromium/third_party/snappy/src/COPYING +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/spirv-cross/spirv-cross/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/spirv-headers/LICENSE +sha256 9b243f6f0bf44e295ff411a0f7b7642d1d0dff7cdc42507e9f7206f439e51b5a chromium/third_party/spirv-headers/src/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/SPIRV-Tools/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/SPIRV-Tools/src/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/SPIRV-Tools/src/utils/vscode/src/lsp/LICENSE +sha256 0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594 chromium/third_party/sqlite4java/LICENSE +sha256 06545a6ec25fbbff6c62f205f94a35be49e38f33bea827a8cfb07d7b82e4b083 chromium/third_party/sqlite/LICENSE +sha256 66e056b6e8687f32af30d5187611b98b12a8f46f07aaf62f43585f276e8f0ac9 chromium/third_party/sqlite/src/autoconf/tea/license.terms +sha256 9c6479123f32a1ed50d9a0af203dfe8972e65035b0cdeef436b5f8d0924517fe chromium/third_party/sqlite/src/LICENSE.md +sha256 033d0150b3bd78b36894c88fcc68da0c3f2e661d3b3485e8cc9a61b2c2bf7895 chromium/third_party/subresource-filter-ruleset/LICENSE +sha256 28113a6e9e2fd7584187c738a7c5484452a1c383307a1741bec50a73262fac08 chromium/third_party/sudden_motion_sensor/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/swiftshader/LICENSE.txt +sha256 ad4672b403488876635d2b455918f74b829d478da868ffc0c621a00fc99195f5 chromium/third_party/tcmalloc/LICENSE +sha256 81ebf38708899097aacaac9723679b3ffa17640c14cd3193c46b75197de18b2c chromium/third_party/tcmalloc/vendor/COPYING +sha256 81e32dadf795edf077c0e567963e598b64f3c6b1ffa8ebac907bf01d3e7b2c1a chromium/third_party/test_fonts/LICENSE +sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 chromium/third_party/text-fragments-polyfill/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/tint/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/tint/src/LICENSE +sha256 bb04dd22ee55fe3c24ee2a3c82bd1efdebbd965f7c178224a2977edc2457bb2f chromium/third_party/tlslite/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/turbine/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/ub-uiautomator/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/ukey2/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/ukey2/src/LICENSE +sha256 0a90947436dc17f047f8c95b64593e2cc9a2b6d4ff6618f2f0beba5a9b568c14 chromium/third_party/unrar/LICENSE +sha256 6ecc1687808b7d66b24f874755abfed7464d9751ed0001cd4e8e5d9bf397ff8a chromium/third_party/unrar/src/license.txt +sha256 6629d6edceffa9c68f4245b817137d2265fdab1e98068893420edb6689ccce9e chromium/third_party/usb_ids/LICENSE +sha256 7a4a31e05391919c05a996f09fc20ffc80c69af72cb3e69ac71b70c825fbdd1d chromium/third_party/usrsctp/LICENSE +sha256 fa53711b25af4b9a9b8dadfea3cb38166ec4b96760c8d62b284055554537d9ef chromium/third_party/usrsctp/usrsctplib/LICENSE.md +sha256 5a7f623a50e384aaf6d2ced068339ddf93d0a50d3a0ecbe86f125b07804ecc78 chromium/third_party/v4l-utils/COPYING.libv4l +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/vulkan_headers/LICENSE.txt +sha256 2a2f96ba4c477fde4c90bb294c5ff9141b0a6ae51989261837e63124b9fd5313 chromium/third_party/vulkan_memory_allocator/LICENSE.txt +sha256 602cb6e9e4c2697d1c5b25f8e55485b596a704d834d477b49b76795074210d9c chromium/third_party/vulkan_memory_allocator/premake/LICENSE.txt +sha256 376b54d4c5f4aa99421823fa4da93e3ab73096fce2400e89858632aa7da24a14 chromium/third_party/wds/LICENSE +sha256 376b54d4c5f4aa99421823fa4da93e3ab73096fce2400e89858632aa7da24a14 chromium/third_party/wds/src/COPYING +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/web-animations-js/LICENSE +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 chromium/third_party/web-animations-js/sources/COPYING +sha256 d51b39e7ed0391e75e0add75d1a162fdf4a0d6b49fba7635ed0ac4e16f324773 chromium/third_party/webdriver/COPYING +sha256 6d83e980b9b843cf6fe24cb94714d00f9b0cf69cb00d0e3b0bed018d49d6f24f chromium/third_party/webdriver/LICENSE +sha256 fec8eb2896784d7b9ef5bcb1c64b97156455a3c88df4fdd36538fb55c0decac4 chromium/third_party/webgpu-cts/src/LICENSE.txt +sha256 e30fbe869f1fa489901bb08888a919c5d50ddb5be6d16b9e4a2cb226263dd7db chromium/third_party/webgpu-cts/src/standalone/third_party/jquery/LICENSE.txt +sha256 18aab5821763cc13966eb59d4026fdb8f9f4e846fefbb429d43da0cb133dd2c4 chromium/third_party/webpagereplay/LICENSE +sha256 25b7731b70c77ecd5f3bb19303fbaa99be18860f81d44f71da670fdcd04829db chromium/third_party/webrtc/common_audio/third_party/ooura/LICENSE +sha256 41d791701e3e1c1073470403de7e342442d1e6a2af72681023b13a2f45f2125c chromium/third_party/webrtc/common_audio/third_party/spl_sqrt_floor/LICENSE +sha256 0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594 chromium/third_party/webrtc/examples/androidapp/third_party/autobanh/LICENSE +sha256 26d2d16d48825edf1194cb3907c5c0b7d01f9c5527eb0fefb949c51f304635e9 chromium/third_party/webrtc/examples/androidapp/third_party/autobanh/LICENSE.md +sha256 21a742dd8cceebb1d5df7c6f945c75ccf1ad4f0d4c17e404517500c1a7de86a4 chromium/third_party/webrtc/examples/objc/AppRTCMobile/third_party/SocketRocket/LICENSE +sha256 ab00a482b6a3902e40211b43c5d0441962ea99b6cc7c25c0f243fa270b78d482 chromium/third_party/webrtc/LICENSE +sha256 1f7a086c17fa2bdbe27d3eb6424a64b9bea9d7db89a4e220fef52ca24addb9e9 chromium/third_party/webrtc/license_template.txt +sha256 6fdbabd2c95c5efc6f1e46175278239afb9343120a3022ed0e0cb04267a6aeb3 chromium/third_party/webrtc/modules/third_party/fft/LICENSE +sha256 b29c8f13f91feb2dab7d6655444369fa9f29c0d7121a52dab90ff97e40343a85 chromium/third_party/webrtc/modules/third_party/g711/LICENSE +sha256 61862327fd00d6a4deb2c1276577782c2500f4fe103e072018fc369d8e37e876 chromium/third_party/webrtc/modules/third_party/g722/LICENSE +sha256 641007ea2810c4cfc10a5d1a44db33983ec1409305e953c7119cc2457ec5c536 chromium/third_party/webrtc/modules/third_party/portaudio/LICENSE +sha256 a508773ebf00f8c777a910e941e5fd0072195843e1b72a90eb8787d26d4ab1d7 chromium/third_party/webrtc/rtc_base/third_party/base64/LICENSE +sha256 905bc5ab1c66eea2669aee6cb5185488508264df6492f71ae1a6595180ff8c2b chromium/third_party/webrtc/rtc_base/third_party/sigslot/LICENSE +sha256 eb077b108bac4c81abe7410274af0930456790add09a6fe5316910e2b936c0f9 chromium/third_party/webxr_test_pages/LICENSE +sha256 eb077b108bac4c81abe7410274af0930456790add09a6fe5316910e2b936c0f9 chromium/third_party/webxr_test_pages/webxr-samples/js/cottontail/LICENSE.md +sha256 47754d3064047c300714af25258efa782e144fdf1e835bfd1edbeb7f8f4ef9e4 chromium/third_party/webxr_test_pages/webxr-samples/js/third-party/dat.gui/LICENSE +sha256 71819b5a0a080b6a3d35b3579817c2c558abcf3c92bb5abc052145a7c106573e chromium/third_party/webxr_test_pages/webxr-samples/js/third-party/gl-matrix/LICENSE +sha256 eb077b108bac4c81abe7410274af0930456790add09a6fe5316910e2b936c0f9 chromium/third_party/webxr_test_pages/webxr-samples/LICENSE.md +sha256 88d855a8e07a39df758fe9964f5d04d5c2fab39416e566e9d91588e254ca27dc chromium/third_party/weston/LICENSE +sha256 fdb65868f65d0fbdb05c2d3b779e10ce9969fa0c4b9262ba4f260e87086ab860 chromium/third_party/weston/src/COPYING +sha256 a34730970264d619f352598bf30295ad505a60fc3a493add8aa851645ce3ea47 chromium/third_party/weston/src/data/COPYING +sha256 20de375707692099b3132084695377ce5fec0aec05813dedcce094b8eda44386 chromium/third_party/widevine/LICENSE +sha256 d42a3e363d99da22b860ab760faa37dfa9781d74c9f3ed634d05109081616513 chromium/third_party/woff2/LICENSE +sha256 0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594 chromium/third_party/wuffs/LICENSE +sha256 0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594 chromium/third_party/wuffs/src/LICENSE +sha256 c5ffbfeaa501071ceeb97b7de2c0d703fdaa35de01c0fb6cbac1c28453a3e9fd chromium/third_party/xcbproto/src/COPYING +sha256 b244f73c3d21edaf44ec253b9a7c389ec43313c417f52f8b71914b0c40d87325 chromium/third_party/xdg-utils/LICENSE +sha256 1cf71700f3403ca26f002e2dc1d1861dcb3d2af9bb9d98d529a903be9d7f06fc chromium/third_party/xstream/LICENSE +sha256 942755efa272dbfbcd7afea7a38556801e36c16dcad002d572378367094a2593 chromium/third_party/zlib/LICENSE +sha256 1744e977d24e20e77b1e97d745fe43779430a1b84247b6c0e89d16e116e7ff92 chromium/third_party/zxcvbn-cpp/LICENSE.txt +sha256 a4c8c5abf82b36c22f8c9f8bd6229584f32eb9f7a2429dd9664dda43e63e9fda chromium/tools/grit/third_party/six/LICENSE +sha256 63f0c0039b477857e54708d9501ed91b7a46e828ac3c623bedbc318129ceb174 chromium/tools/origin_trials/third_party/ed25519/LICENSE +sha256 f5b244982699ca9fe5cc8fa8a7c08cf5dee5d3a0c8896892899e5df13316e1b7 chromium/tools/page_cycler/acid3/LICENSE +sha256 7389900fb68d920c6cb21b70702a2bc240523472a3fd091023d6135cf01d1c5c chromium/tools/win/ChromeDebug/ChromeDebug/LICENSE +sha256 284545e873c704952e5b1b39d457dd83a3b115a51d9f1eb5175137bd69b8fa1b chromium/url/third_party/mozilla/LICENSE.txt +sha256 f10a1808e442ae7dbfecf6b54ae4de84193a768770e189a67d5f397730acdbc9 chromium/v8/LICENSE +sha256 e7115e18444dae09d17f361ddc365fb1d342640fe500796209c63f7c80dfae10 chromium/v8/LICENSE.fdlibm +sha256 6a585a9f466654abc8fc0829d56b1bc987e3a073d31faa03bba37d33640a23cd chromium/v8/LICENSE.strongtalk +sha256 4af93c12062c58058378de2397dc1c92bbff9ddfb1d583a01c84127557ce97ca chromium/v8/LICENSE.v8 +sha256 36ffd9dc085d529a7e60e1276d73ae5a030b020313e6c5408593a6ae2af39673 chromium/v8/src/third_party/siphash/LICENSE +sha256 3f712e5fbdfdbd5ee7d9b8c8152580220df55de47f4eba2f26c95c4de19ad096 chromium/v8/src/third_party/utf8-decoder/LICENSE +sha256 ebf25b8ce59c9e8883acd1ca75b6fc121937ca034f666c4077d2be739d2e1622 chromium/v8/src/third_party/valgrind/LICENSE +sha256 cfe7599e45f340a35b4635090382897ca1526bc49b5e1889047f0168d131c415 chromium/v8/src/third_party/vtune/LICENSE +sha256 15137d6c822e3ab097093a33c3a39a9df699f373f6438867ad534ff60762a947 chromium/v8/third_party/colorama/LICENSE +sha256 b9be92f13356083392d97da13cab8ae543c7911f44eff5289b693da8b17b9e08 chromium/v8/third_party/inspector_protocol/LICENSE +sha256 76c45ece83a26117f86f4e349e7df118708e061e87225328fb478ce1e8b3eb86 chromium/v8/third_party/jsoncpp/LICENSE +sha256 b9a6d9320b8f2693e8d41e496ce56caadacaddcca9be2a64a61749278f425cf2 chromium/v8/third_party/v8/builtins/LICENSE +sha256 c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08 chromium/v8/third_party/wasm-api/LICENSE +sha256 5d85142a5609ad177a2d7a2e7cae060b886b8b42f25c5b9803cf0cb5ee04ad2f gn/base/third_party/icu/LICENSE +sha256 845022e0c1db1abb41a6ba4cd3c4b674ec290f3359d9d3c78ae558d4c0ed9308 gn/LICENSE +sha256 eb7e9ab9690124c5c9f42bdc81383d886a3dede26345b6ed15bbad7caf81f7ea ninja/COPYING diff --git a/package/qt5/qt5webengine-chromium/qt5webengine-chromium.mk b/package/qt5/qt5webengine-chromium/qt5webengine-chromium.mk new file mode 100644 index 00000000..fc48945e --- /dev/null +++ b/package/qt5/qt5webengine-chromium/qt5webengine-chromium.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# qt5webengine-chromium +# +################################################################################ + +QT5WEBENGINE_CHROMIUM_VERSION = 18c9261dc5b8aa57a0bdd5b62ce6f648cca1ef5e +QT5WEBENGINE_CHROMIUM_SITE = $(QT5_SITE)/qtwebengine-chromium/-/archive/$(QT5WEBENGINE_CHROMIUM_VERSION) +QT5WEBENGINE_CHROMIUM_SOURCE = qtwebengine-chromium-$(QT5WEBENGINE_CHROMIUM_VERSION).tar.bz2 +QT5WEBENGINE_CHROMIUM_PATCH_DEPENDENCIES = qt5webengine-chromium-catapult +QT5WEBENGINE_CHROMIUM_INSTALL_TARGET = NO + +include package/qt5/qt5webengine-chromium/chromium-latest.inc + +QT5WEBENGINE_CHROMIUM_LICENSE = BSD-3-Clause, GPL-2.0 or LGPL-3.0 or GPL-3.0 or GPL-3.0 with exception + +define QT5WEBENGINE_CHROMIUM_COPY_CATAPULT + rm -rf $(@D)/chromium/third_party/catapult + cp -a $(QT5WEBENGINE_CHROMIUM_CATAPULT_DIR) $(@D)/chromium/third_party/catapult +endef +QT5WEBENGINE_CHROMIUM_POST_PATCH_HOOKS += QT5WEBENGINE_CHROMIUM_COPY_CATAPULT + +$(eval $(generic-package)) diff --git a/package/qt5/qt5webengine/0001-gn.pro-don-t-link-statically-with-libstc.patch b/package/qt5/qt5webengine/0001-gn.pro-don-t-link-statically-with-libstc.patch new file mode 100644 index 00000000..aeec4c58 --- /dev/null +++ b/package/qt5/qt5webengine/0001-gn.pro-don-t-link-statically-with-libstc.patch @@ -0,0 +1,52 @@ +From 7ae73da23ad998bd1e63ad213cf7a02e61191951 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 23 May 2020 19:01:19 +0200 +Subject: [PATCH] gn.pro: don't link statically with libstc++ +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +While cross-compiling, qt5webengine is building a host tool but +want to link the libstdc++ statically. This requires to install +libstdc++-static package on the host (Fedora package name). + +Otherwise the link fail with: + + [185/185] LINK gn + FAILED: gn + /usr/bin/g++ -O3 -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-strip-all -Wl,--as-needed -static-libstdc++ -pthread -o gn -Wl,--start-group tools/gn/gn_main.o base.a gn_lib.a -Wl,--end-group -ldl + /usr/bin/ld : unable to find -lstdc++ + [...] + Project ERROR: GN build error! + +Add --no-static-libstdc++ argument to gn.pro to link to +libstdc++.so.6 instead of libstdc++.a. + +--no-static-libstdc++ has been added by [1] but it force +linking statically by default. + +[1] https://github.com/qt/qtwebengine-chromium/commit/cfab9198a9917f42cf08b1caf84ab9b71aac1911#diff-905c8f054808213577c0a92d1b704615 + +Signed-off-by: Romain Naour +Signed-off-by: Giulio Benetti +[Giulio: rebased to qt5.15.10] +--- + src/buildtools/gn.pro | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/buildtools/gn.pro b/src/buildtools/gn.pro +index f94694da0..19079a5b3 100644 +--- a/src/buildtools/gn.pro ++++ b/src/buildtools/gn.pro +@@ -20,7 +20,8 @@ build_pass|!debug_and_release { + + gn_gen_args = --no-last-commit-position --out-path $$out_path \ + --cc \"$$which($$QMAKE_CC)\" --cxx \"$$which($$QMAKE_CXX)\" \ +- --ld \"$$which($$QMAKE_LINK)\" ++ --ld \"$$which($$QMAKE_LINK)\" \ ++ --no-static-libstdc++ + !isEmpty(QMAKE_AR): gn_gen_args += --ar \"$$which($$first(QMAKE_AR))\" + + msvc:!clang_cl: gn_gen_args += --use-lto +-- +2.34.1 diff --git a/package/qt5/qt5webengine/0002-Add-python3-build-support.patch b/package/qt5/qt5webengine/0002-Add-python3-build-support.patch new file mode 100644 index 00000000..18fc1c1d --- /dev/null +++ b/package/qt5/qt5webengine/0002-Add-python3-build-support.patch @@ -0,0 +1,168 @@ +From 1e299a6c9eeb08555208b76623e453d8ab96b6e3 Mon Sep 17 00:00:00 2001 +From: James Hilliard +Date: Fri, 4 Feb 2022 16:16:35 -0700 +Subject: [PATCH] Add python3 build support + +Adapted from: +https://github.com/archlinux/svntogit-packages/blob/6edf5f1aaea952d046aff89a2e0175258fe77361/trunk/qt5-webengine-python3.patch + +Signed-off-by: James Hilliard +--- + configure.pri | 13 ++++++------- + mkspecs/features/functions.prf | 6 +++--- + src/buildtools/config/support.pri | 10 +++++----- + src/buildtools/configure.json | 18 +++++++++--------- + 4 files changed, 23 insertions(+), 24 deletions(-) + +diff --git a/configure.pri b/configure.pri +index e072961f..6fec7b20 100644 +--- a/configure.pri ++++ b/configure.pri +@@ -13,8 +13,7 @@ defineTest(isPythonVersionSupported) { + python_version = $$split(python_version, ',') + python_major_version = $$first(python_version) + greaterThan(python_major_version, 2) { +- qtLog("Python version 3 is not supported by Chromium.") +- return(false) ++ return(true) + } + python_minor_version = $$member(python_version, 1) + python_patch_version = $$member(python_version, 2) +@@ -52,10 +51,10 @@ defineTest(qtConfReport_jumboBuild) { + qtConfReportPadded($${1}, $$mergeLimit) + } + +-defineTest(qtConfTest_detectPython2) { +- python = $$qtConfFindInPath("python2$$EXE_SUFFIX") ++defineTest(qtConfTest_detectPython) { ++ python = $$qtConfFindInPath("python$$EXE_SUFFIX") + isEmpty(python) { +- qtLog("'python2$$EXE_SUFFIX' not found in PATH. Checking for 'python$$EXE_SUFFIX'.") ++ qtLog("'python$$EXE_SUFFIX' not found in PATH. Checking for 'python$$EXE_SUFFIX'.") + python = $$qtConfFindInPath("python$$EXE_SUFFIX") + } + isEmpty(python) { +@@ -63,11 +62,11 @@ defineTest(qtConfTest_detectPython2) { + return(false) + } + !isPythonVersionSupported($$python) { +- qtLog("A suitable Python 2 executable could not be located.") ++ qtLog("A suitable Python executable could not be located.") + return(false) + } + +- # Make tests.python2.location available in configure.json. ++ # Make tests.python.location available in configure.json. + $${1}.location = $$clean_path($$python) + export($${1}.location) + $${1}.cache += location +diff --git a/mkspecs/features/functions.prf b/mkspecs/features/functions.prf +index 2750d707..9fda13d0 100644 +--- a/mkspecs/features/functions.prf ++++ b/mkspecs/features/functions.prf +@@ -39,11 +39,11 @@ defineReplace(which) { + + # Returns the unquoted path to the python executable. + defineReplace(pythonPath) { +- isEmpty(QMAKE_PYTHON2) { ++ isEmpty(QMAKE_PYTHON) { + # Fallback for building QtWebEngine with Qt < 5.8 +- QMAKE_PYTHON2 = python ++ QMAKE_PYTHON = python + } +- return($$QMAKE_PYTHON2) ++ return($$QMAKE_PYTHON) + } + + # Returns the python executable for use with shell / make targets. +diff --git a/src/buildtools/config/support.pri b/src/buildtools/config/support.pri +index e7f869a1..1bf2c5d7 100644 +--- a/src/buildtools/config/support.pri ++++ b/src/buildtools/config/support.pri +@@ -21,7 +21,7 @@ defineReplace(qtwebengine_checkWebEngineCoreError) { + !qtwebengine_checkForGperf(QtWebEngine):return(false) + !qtwebengine_checkForBison(QtWebEngine):return(false) + !qtwebengine_checkForFlex(QtWebEngine):return(false) +- !qtwebengine_checkForPython2(QtWebEngine):return(false) ++ !qtwebengine_checkForPython(QtWebEngine):return(false) + !qtwebengine_checkForNodejs(QtWebEngine):return(false) + !qtwebengine_checkForSanitizer(QtWebEngine):return(false) + linux:!qtwebengine_checkForPkgCfg(QtWebEngine):return(false) +@@ -51,7 +51,7 @@ defineReplace(qtwebengine_checkPdfError) { + !qtwebengine_checkForGperf(QtPdf):return(false) + !qtwebengine_checkForBison(QtPdf):return(false) + !qtwebengine_checkForFlex(QtPdf):return(false) +- !qtwebengine_checkForPython2(QtPdf):return(false) ++ !qtwebengine_checkForPython(QtPdf):return(false) + !qtwebengine_checkForSanitizer(QtPdf):return(false) + linux:!qtwebengine_checkForPkgCfg(QtPdf):return(false) + linux:!qtwebengine_checkForHostPkgCfg(QtPdf):return(false) +@@ -143,10 +143,10 @@ defineTest(qtwebengine_checkForFlex) { + return(true) + } + +-defineTest(qtwebengine_checkForPython2) { ++defineTest(qtwebengine_checkForPython) { + module = $$1 +- !qtConfig(webengine-python2) { +- qtwebengine_skipBuild("Python version 2 (2.7.5 or later) is required to build $${module}.") ++ !qtConfig(webengine-python) { ++ qtwebengine_skipBuild("Python is required to build $${module}.") + return(false) + } + return(true) +diff --git a/src/buildtools/configure.json b/src/buildtools/configure.json +index 88d1790c..032aa665 100644 +--- a/src/buildtools/configure.json ++++ b/src/buildtools/configure.json +@@ -295,9 +295,9 @@ + "label": "system ninja", + "type": "detectNinja" + }, +- "webengine-python2": { +- "label": "python2", +- "type": "detectPython2", ++ "webengine-python": { ++ "label": "python", ++ "type": "detectPython", + "log": "location" + }, + "webengine-winversion": { +@@ -374,7 +374,7 @@ + && features.webengine-gperf + && features.webengine-bison + && features.webengine-flex +- && features.webengine-python2 ++ && features.webengine-python + && features.webengine-nodejs + && (!config.sanitizer || features.webengine-sanitizer) + && (!config.linux || features.pkg-config) +@@ -400,7 +400,7 @@ + && features.webengine-gperf + && features.webengine-bison + && features.webengine-flex +- && features.webengine-python2 ++ && features.webengine-python + && (!config.sanitizer || features.webengine-sanitizer) + && (!config.linux || features.pkg-config) + && (!config.linux || features.webengine-host-pkg-config) +@@ -423,12 +423,12 @@ + "autoDetect": "features.private_tests", + "output": [ "privateFeature" ] + }, +- "webengine-python2": { +- "label": "python2", +- "condition": "tests.webengine-python2", ++ "webengine-python": { ++ "label": "python", ++ "condition": "tests.webengine-python", + "output": [ + "privateFeature", +- { "type": "varAssign", "name": "QMAKE_PYTHON2", "value": "tests.webengine-python2.location" } ++ { "type": "varAssign", "name": "QMAKE_PYTHON", "value": "tests.webengine-python.location" } + ] + }, + "webengine-gperf": { +-- +2.25.1 + diff --git a/package/qt5/qt5webengine/Config.in b/package/qt5/qt5webengine/Config.in new file mode 100644 index 00000000..28786bd2 --- /dev/null +++ b/package/qt5/qt5webengine/Config.in @@ -0,0 +1,108 @@ +config BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS + bool + default y if BR2_aarch64 || BR2_arm || \ + BR2_i386 || BR2_x86_64 || \ + BR2_mips || BR2_mips64 + # -m32 flag is used for 32bit builds and host tools have + # limited architecture support + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative + depends on !BR2_BINFMT_FLAT # qt5base-icu + depends on BR2_USE_MMU # libglib2, qt5base-dbus + +comment "qt5webengine needs udev /dev management and a glibc toolchain w/ host gcc >= 4.9, threads, wchar" + depends on BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS + depends on !BR2_PACKAGE_HAS_UDEV || !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_HOST_GCC_AT_LEAST_4_9 || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR + +comment "qt5webengine needs an OpenGL and EGL-capable backend" + depends on BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS + depends on !BR2_PACKAGE_QT5_GL_AVAILABLE || !BR2_PACKAGE_HAS_LIBEGL + +config BR2_PACKAGE_QT5WEBENGINE + bool "qt5webengine" + depends on BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_USES_GLIBC # execinfo.h, mallinfo + depends on BR2_HOST_GCC_AT_LEAST_4_9 # qt5base-icu + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2, libvpx, qt5base-dbus + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_PACKAGE_QT5_GL_AVAILABLE # qt5declarative, qt5base-eglfs + depends on BR2_PACKAGE_HAS_LIBEGL # qt5base-eglfs + depends on BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_HOST_NODEJS + # v8 (a chromium 3rd-party) compiles its internal host-tools with the + # same word size as the target. For 32-bits targets, it adds the -m32 + # flag (for 64-bits, it adds the -m64 flag). + # https://github.com/v8/v8/blob/5.6.326.55/gypfiles/toolchain.gypi#L1036-L1037 + select BR2_HOSTARCH_NEEDS_IA32_COMPILER if !BR2_ARCH_IS_64 # v8/chromium + select BR2_PACKAGE_LCMS2 + select BR2_PACKAGE_LIBEVENT + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBNSS + select BR2_PACKAGE_LIBVPX + select BR2_PACKAGE_LIBXKBCOMMON + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_LIBXSLT + select BR2_PACKAGE_MINIZIP + select BR2_PACKAGE_OPUS + select BR2_PACKAGE_SNAPPY + select BR2_PACKAGE_WEBP + select BR2_PACKAGE_WEBP_DEMUX + select BR2_PACKAGE_WEBP_MUX + select BR2_PACKAGE_QT5BASE_DBUS + select BR2_PACKAGE_QT5BASE_EGLFS + select BR2_PACKAGE_QT5BASE_FONTCONFIG + select BR2_PACKAGE_QT5BASE_HARFBUZZ + select BR2_PACKAGE_QT5BASE_JPEG + select BR2_PACKAGE_QT5BASE_ICU + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_PNG + select BR2_PACKAGE_QT5BASE_WIDGETS + select BR2_PACKAGE_QT5DECLARATIVE + select BR2_PACKAGE_QT5DECLARATIVE_QUICK + select BR2_PACKAGE_QT5QUICKCONTROLS + select BR2_PACKAGE_QT5QUICKCONTROLS2 + select BR2_PACKAGE_QT5SVG if BR2_PACKAGE_QT5BASE_EXAMPLES + select BR2_PACKAGE_QT5WEBCHANNEL + select BR2_PACKAGE_QT5WEBENGINE_CHROMIUM + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE if BR2_PACKAGE_QT5BASE_XCB + select BR2_PACKAGE_XLIB_LIBXCURSOR if BR2_PACKAGE_QT5BASE_XCB + select BR2_PACKAGE_XLIB_LIBXI if BR2_PACKAGE_QT5BASE_XCB + select BR2_PACKAGE_XLIB_LIBXKBFILE if BR2_PACKAGE_QT5BASE_XCB + select BR2_PACKAGE_XLIB_LIBXRANDR if BR2_PACKAGE_QT5BASE_XCB + select BR2_PACKAGE_XLIB_LIBXSCRNSAVER if BR2_PACKAGE_QT5BASE_XCB + select BR2_PACKAGE_XLIB_LIBXTST if BR2_PACKAGE_QT5BASE_XCB + help + The Qt WebEngine module provides a web browser engine that + makes it easy to embed content from the World Wide Web into + your Qt application. + + Qt WebEngine provides C++ classes and QML types for rendering + HTML, XHTML, and SVG documents, styled using Cascading Style + Sheets (CSS) and scripted with JavaScript. HTML documents can + be made fully editable by the user through the use of the + contenteditable attribute on HTML elements. + + https://doc.qt.io/qt-5/qtwebengine-index.html + +if BR2_PACKAGE_QT5WEBENGINE + +config BR2_PACKAGE_QT5WEBENGINE_PROPRIETARY_CODECS + bool "proprietary codecs" + help + Qt WebEngine supports the MPEG-4 Part 14 (MP4) file format, + which includes required proprietary audio and video codecs, + such as H.264 and MPEG layer-3 (MP3). + +config BR2_PACKAGE_QT5WEBENGINE_ALSA + bool "alsa" + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_MIXER + select BR2_PACKAGE_ALSA_LIB_RAWMIDI + select BR2_PACKAGE_ALSA_LIB_HWDEP + select BR2_PACKAGE_ALSA_LIB_SEQ + help + Enable ALSA support. + +endif diff --git a/package/qt5/qt5webengine/chromium-latest.inc b/package/qt5/qt5webengine/chromium-latest.inc new file mode 100644 index 00000000..a5fdfdc1 --- /dev/null +++ b/package/qt5/qt5webengine/chromium-latest.inc @@ -0,0 +1,1000 @@ +# (echo "QT5WEBENGINE_CHROMIUM_LICENSE_FILES = \\" ; \ +# find src/3rdparty/ -type f \ +# \( -iname 'license*' -o -iname 'copying*' -o -name 'APPLE_LICENSE' -o -name 'Copyright' -o -path '*/license_texts/*' -o -path '*/licenses/*' \) \ +# -a -not -name '*.cc' -not -name '*.py' -not -name '*.pyc' -not -name '*.h' -not -name 'LICENSE.sha1' -not -name 'licensecheck.pl*' -not -name 'license.after' -not -name 'license.before' | \ +# sort | sed 's%^\(.*\)$%\t\1 \\%') > package/qt5/qt5webengine/chromium-latest.inc +QT5WEBENGINE_CHROMIUM_LICENSE_FILES = \ + src/3rdparty/chromium/base/third_party/cityhash/COPYING \ + src/3rdparty/chromium/base/third_party/double_conversion/LICENSE \ + src/3rdparty/chromium/base/third_party/dynamic_annotations/LICENSE \ + src/3rdparty/chromium/base/third_party/icu/LICENSE \ + src/3rdparty/chromium/base/third_party/libevent/LICENSE \ + src/3rdparty/chromium/base/third_party/nspr/LICENSE \ + src/3rdparty/chromium/base/third_party/superfasthash/LICENSE \ + src/3rdparty/chromium/base/third_party/symbolize/LICENSE \ + src/3rdparty/chromium/base/third_party/valgrind/LICENSE \ + src/3rdparty/chromium/base/third_party/xdg_mime/LICENSE \ + src/3rdparty/chromium/base/third_party/xdg_user_dirs/LICENSE \ + src/3rdparty/chromium/buildtools/LICENSE \ + src/3rdparty/chromium/LICENSE \ + src/3rdparty/chromium/LICENSE.chromium_os \ + src/3rdparty/chromium/mojo/public/LICENSE \ + src/3rdparty/chromium/net/third_party/mozilla_security_manager/LICENSE \ + src/3rdparty/chromium/net/third_party/nss/LICENSE \ + src/3rdparty/chromium/net/third_party/quiche/src/LICENSE \ + src/3rdparty/chromium/net/third_party/uri_template/LICENSE \ + src/3rdparty/chromium/ppapi/LICENSE \ + src/3rdparty/chromium/third_party/abseil-cpp/LICENSE \ + src/3rdparty/chromium/third_party/angle/LICENSE \ + src/3rdparty/chromium/third_party/angle/src/common/third_party/smhasher/LICENSE \ + src/3rdparty/chromium/third_party/angle/src/common/third_party/xxhash/LICENSE \ + src/3rdparty/chromium/third_party/angle/src/third_party/compiler/LICENSE \ + src/3rdparty/chromium/third_party/angle/src/third_party/libXNVCtrl/LICENSE \ + src/3rdparty/chromium/third_party/angle/src/third_party/volk/LICENSE.md \ + src/3rdparty/chromium/third_party/angle/third_party/rapidjson/src/bin/jsonschema/LICENSE \ + src/3rdparty/chromium/third_party/angle/third_party/rapidjson/src/contrib/natvis/LICENSE \ + src/3rdparty/chromium/third_party/angle/third_party/rapidjson/src/license.txt \ + src/3rdparty/chromium/third_party/angle/third_party/vulkan-headers/src/LICENSE.txt \ + src/3rdparty/chromium/third_party/angle/third_party/vulkan-loader/src/LICENSE.txt \ + src/3rdparty/chromium/third_party/angle/third_party/vulkan-tools/src/LICENSE.txt \ + src/3rdparty/chromium/third_party/angle/tools/flex-bison/third_party/m4sugar/LICENSE \ + src/3rdparty/chromium/third_party/angle/tools/flex-bison/third_party/skeletons/LICENSE \ + src/3rdparty/chromium/third_party/angle/util/windows/third_party/StackWalker/LICENSE \ + src/3rdparty/chromium/third_party/apple_apsl/LICENSE \ + src/3rdparty/chromium/third_party/arcore-android-sdk-client/LICENSE \ + src/3rdparty/chromium/third_party/arcore-android-sdk/LICENSE \ + src/3rdparty/chromium/third_party/axe-core/LICENSE \ + src/3rdparty/chromium/third_party/bazel/LICENSE \ + src/3rdparty/chromium/third_party/blanketjs/LICENSE \ + src/3rdparty/chromium/third_party/blink/LICENSE_FOR_ABOUT_CREDITS \ + src/3rdparty/chromium/third_party/blink/renderer/core/LICENSE-APPLE \ + src/3rdparty/chromium/third_party/blink/renderer/core/LICENSE-LGPL-2 \ + src/3rdparty/chromium/third_party/blink/renderer/core/LICENSE-LGPL-2.1 \ + src/3rdparty/chromium/third_party/blink/renderer/platform/testing/data/third_party/Noto/LICENSE_OFL.txt \ + src/3rdparty/chromium/third_party/blink/renderer/platform/testing/data/third_party/Roboto/LICENSE.txt \ + src/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/LICENSE.md \ + src/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/enum/enum/LICENSE \ + src/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/h2/LICENSE \ + src/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/hpack/LICENSE \ + src/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/html5lib/LICENSE \ + src/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/hyperframe/LICENSE \ + src/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/six/LICENSE \ + src/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/wptserve/LICENSE \ + src/3rdparty/chromium/third_party/boringssl/src/LICENSE \ + src/3rdparty/chromium/third_party/boringssl/src/third_party/fiat/LICENSE \ + src/3rdparty/chromium/third_party/boringssl/src/third_party/googletest/LICENSE \ + src/3rdparty/chromium/third_party/boringssl/src/third_party/wycheproof_testvectors/LICENSE \ + src/3rdparty/chromium/third_party/bouncycastle/LICENSE \ + src/3rdparty/chromium/third_party/breakpad/breakpad/LICENSE \ + src/3rdparty/chromium/third_party/breakpad/breakpad/src/third_party/curl/COPYING \ + src/3rdparty/chromium/third_party/breakpad/breakpad/src/third_party/libdisasm/LICENSE \ + src/3rdparty/chromium/third_party/breakpad/LICENSE \ + src/3rdparty/chromium/third_party/brotli/LICENSE \ + src/3rdparty/chromium/third_party/bspatch/LICENSE \ + src/3rdparty/chromium/third_party/byte_buddy/LICENSE \ + src/3rdparty/chromium/third_party/catapult/common/eslint/LICENSE \ + src/3rdparty/chromium/third_party/catapult/common/py_vulcanize/third_party/rcssmin/bench/LICENSE.cssmin \ + src/3rdparty/chromium/third_party/catapult/common/py_vulcanize/third_party/rcssmin/LICENSE \ + src/3rdparty/chromium/third_party/catapult/common/py_vulcanize/third_party/rjsmin/LICENSE \ + src/3rdparty/chromium/third_party/catapult/third_party/polymer/components/polymer/LICENSE.txt \ + src/3rdparty/chromium/third_party/catapult/tracing/LICENSE \ + src/3rdparty/chromium/third_party/catapult/tracing/third_party/chai/LICENSE \ + src/3rdparty/chromium/third_party/catapult/tracing/third_party/d3/LICENSE \ + src/3rdparty/chromium/third_party/catapult/tracing/third_party/devscripts/COPYING \ + src/3rdparty/chromium/third_party/catapult/tracing/third_party/gl-matrix/LICENSE.md \ + src/3rdparty/chromium/third_party/catapult/tracing/third_party/jpeg-js/LICENSE \ + src/3rdparty/chromium/third_party/catapult/tracing/third_party/jszip/LICENSE.markdown \ + src/3rdparty/chromium/third_party/catapult/tracing/third_party/mocha/LICENSE \ + src/3rdparty/chromium/third_party/catapult/tracing/third_party/pako/LICENSE \ + src/3rdparty/chromium/third_party/ced/LICENSE \ + src/3rdparty/chromium/third_party/ced/src/LICENSE \ + src/3rdparty/chromium/third_party/chaijs/LICENSE \ + src/3rdparty/chromium/third_party/checkstyle/LICENSE \ + src/3rdparty/chromium/third_party/checkstyle/LICENSE.apache20 \ + src/3rdparty/chromium/third_party/cld_3/LICENSE \ + src/3rdparty/chromium/third_party/cld_3/src/LICENSE \ + src/3rdparty/chromium/third_party/closure_compiler/compiler/COPYING \ + src/3rdparty/chromium/third_party/closure_compiler/LICENSE \ + src/3rdparty/chromium/third_party/crashpad/crashpad/LICENSE \ + src/3rdparty/chromium/third_party/crashpad/crashpad/third_party/apple_cf/APPLE_LICENSE \ + src/3rdparty/chromium/third_party/crashpad/crashpad/third_party/cpp-httplib/cpp-httplib/LICENSE \ + src/3rdparty/chromium/third_party/crashpad/crashpad/third_party/getopt/LICENSE \ + src/3rdparty/chromium/third_party/crashpad/crashpad/third_party/glibc/COPYING.LIB \ + src/3rdparty/chromium/third_party/crashpad/crashpad/third_party/xnu/APPLE_LICENSE \ + src/3rdparty/chromium/third_party/crc32c/src/LICENSE \ + src/3rdparty/chromium/third_party/cros_system_api/LICENSE \ + src/3rdparty/chromium/third_party/custom_tabs_client/LICENSE \ + src/3rdparty/chromium/third_party/d3/src/LICENSE \ + src/3rdparty/chromium/third_party/dav1d/libdav1d/COPYING \ + src/3rdparty/chromium/third_party/dav1d/LICENSE \ + src/3rdparty/chromium/third_party/dawn/LICENSE \ + src/3rdparty/chromium/third_party/decklink/LICENSE \ + src/3rdparty/chromium/third_party/devscripts/COPYING \ + src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/cm/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/cm/LICENSE_python \ + src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/cm_modes/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/dagre_layout/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/formatter_worker/acorn/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/sdk/wasm_source_map/LICENSES.deps \ + src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/third_party/fabricjs/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/third_party/lighthouse/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/third_party/lit-html/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/third_party/lit-html/package/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/third_party/wasmparser/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/abbrev/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/accepts/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/acorn-jsx/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/acorn/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/acorn-walk/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ajv/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/amdefine/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ansi-colors/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ansi-escapes/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ansi-regex/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ansi-styles/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ansi-wrap/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/anymatch/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/append-transform/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/argparse/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/array-find-index/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/arr-diff/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/arr-union/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/asap/LICENSE.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/assert/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/assign-symbols/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/astral-regex/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ast-types/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/async/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/async-limiter/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/code-frame/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/generator/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/generator/node_modules/source-map/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-function-name/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-get-function-arity/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-split-export-declaration/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/highlight/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/parser/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/template/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/traverse/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/types/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/balanced-match/LICENSE.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/base64-arraybuffer/LICENSE-MIT \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/base64id/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/base64-js/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/binary-extensions/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/.bin/license-checker \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/blob/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/bluebird/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/body-parser/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/body-parser/node_modules/debug/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/body-parser/node_modules/ms/license.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/brace-expansion/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/braces/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browserify-aes/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browserify-cipher/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browserify-des/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browserify-rsa/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browserify-sign/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browserify-zlib/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browser-resolve/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browser-stdout/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/buffer-from/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/buffer/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/buffer-xor/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/builtin-status-codes/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/bytes/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/callsites/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/camelcase-keys/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/camelcase/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/chai/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/chalk/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/chardet/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/check-error/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/chokidar/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/chokidar/node_modules/glob-parent/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/cipher-base/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/cli-cursor/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/cliui/LICENSE.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/cli-width/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/clone/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/code-point-at/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/color-convert/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/color-name/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/colors/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/combine-source-map/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/combine-source-map/node_modules/convert-source-map/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/combine-source-map/node_modules/source-map/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/commander/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/compare-versions/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/component-emitter/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/concat-map/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/concat-stream/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/concat-stream/node_modules/readable-stream/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/concat-stream/node_modules/safe-buffer/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/concat-stream/node_modules/string_decoder/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/connect/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/connect/node_modules/debug/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/connect/node_modules/ms/license.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/content-type/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/convert-source-map/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/convert-source-map/node_modules/safe-buffer/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/cookie/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/core-js/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/core-util-is/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/create-ecdh/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/create-hash/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/create-hmac/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/cross-spawn/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/crypto-browserify/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/currently-unhandled/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/custom-event/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/date-format/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/dateformat/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/debug/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/debuglog/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/decamelize/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/deep-eql/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/deep-is/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/default-require-extensions/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/defaults/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/define-properties/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/depd/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/dezalgo/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/diffie-hellman/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/diff/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/diff-match-patch/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/di/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/doctrine/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/doctrine/LICENSE.closure-compiler \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/doctrine/LICENSE.esprima \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/domain-browser/LICENSE.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ee-first/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/emoji-regex/LICENSE-MIT.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/encodeurl/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/end-of-stream/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/engine.io-client/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/engine.io-client/node_modules/debug/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/engine.io-client/node_modules/ms/license.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/engine.io/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/engine.io/node_modules/debug/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/engine.io/node_modules/ms/license.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/engine.io-parser/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ent/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/error-ex/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/es6-object-assign/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/es6-promise/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/es-abstract/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/escape-html/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/escape-string-regexp/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/escodegen/LICENSE.BSD \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/escodegen/node_modules/esprima/LICENSE.BSD \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/eslint/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-mocha/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-rulesdir/LICENSE.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/eslint-scope/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/eslint-utils/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/eslint-visitor-keys/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/espree/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/esprima/LICENSE.BSD \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/esquery/license.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/es-to-primitive/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/estraverse/LICENSE.BSD \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/esutils/LICENSE.BSD \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/eventemitter3/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/events/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/evp_bytestokey/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/execa/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/extend/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/extend-shallow/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/external-editor/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/extract-zip/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/extract-zip/node_modules/debug/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/extract-zip/node_modules/ms/license.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fast-deep-equal/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fast-json-stable-stringify/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fast-levenshtein/LICENSE.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fd-slicer/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/figures/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/file-entry-cache/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fileset/LICENSE-MIT \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fill-range/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/finalhandler/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/finalhandler/node_modules/debug/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/finalhandler/node_modules/ms/license.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/find-up/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/flat-cache/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/flat-cache/node_modules/rimraf/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/flat/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/flatted/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/follow-redirects/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/follow-redirects/node_modules/debug/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fsevents/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fs-extra/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fs.realpath/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/functional-red-black-tree/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/function-bind/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/get-caller-file/LICENSE.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/get-func-name/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/get-stream/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/globals/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/glob/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/glob-parent/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/glob-parent/node_modules/is-glob/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/graceful-fs/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/handlebars/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/has-binary2/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/has-flag/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/hash-base/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/has/LICENSE-MIT \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/has-symbols/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/he/LICENSE-MIT.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/hosted-git-info/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/http-errors/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/http-errors/node_modules/inherits/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/http-proxy/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/https-browserify/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/https-proxy-agent/node_modules/debug/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/iconv-lite/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ieee754/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ignore/LICENSE-MIT \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/import-fresh/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/indent-string/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/inflight/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/inherits/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/inline-source-map/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/inline-source-map/node_modules/source-map/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/inquirer/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/ansi-regex/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/strip-ansi/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/invert-kv/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-arguments/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-arrayish/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/isbinaryfile/LICENSE.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-binary-path/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-buffer/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-callable/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-date-object/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/isexe/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-extendable/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-extglob/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-finite/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-fullwidth-code-point/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-generator-function/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-glob/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-nan/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-number/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/isobject/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-plain-object/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-promise/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-regex/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-stream/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-symbol/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-api/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-diff/node_modules/minimist/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-coverage/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-hook/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-instrument/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-instrument/node_modules/semver/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-report/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-report/node_modules/supports-color/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-source-maps/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-source-maps/node_modules/rimraf/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/async/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/escodegen/LICENSE.BSD \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/escodegen/LICENSE.source-map \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/esprima/LICENSE.BSD \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/estraverse/LICENSE.BSD \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/glob/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/has-flag/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/source-map/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/supports-color/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-reports/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-utf8/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/jsesc/LICENSE-MIT.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/jsonfile/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/json-parse-better-errors/LICENSE.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/json-schema-traverse/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/json-stable-stringify-without-jsonify/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/json-stringify-safe/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/js-tokens/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/js-yaml/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/js-yaml/node_modules/esprima/LICENSE.BSD \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-chai/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-chrome-launcher/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-coverage-istanbul-instrumenter/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-coverage-istanbul-reporter/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/LICENSE-istanbul \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/source-map/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-mocha/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-mocha/node_modules/minimist/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/rimraf/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-sourcemap-loader/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-typescript/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-typescript/node_modules/acorn/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-typescript/node_modules/async/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-typescript/node_modules/source-map/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-typescript/node_modules/tmp/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-typescript/node_modules/tmp/node_modules/rimraf/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/lcid/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/levn/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/license-checker/bin/license-checker \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/license-checker/lib/license-files.js \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/license-checker/lib/license.js \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/license-checker/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/license-checker/node_modules/debug/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/license-checker/node_modules/nopt/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/load-json-file/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/load-json-file/node_modules/pify/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/load-json-file/node_modules/strip-bom/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/locate-path/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/locate-path/node_modules/path-exists/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/lodash-deep/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/lodash/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/lodash.memoize/LICENSE.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/log4js/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/log-symbols/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/loud-rejection/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/lru-cache/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/make-dir/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/map-age-cleaner/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/map-obj/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/md5.js/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/media-typer/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mem/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mem/node_modules/mimic-fn/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/meow/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/meow/node_modules/minimist/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mime-db/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mime/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mime-types/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mimic-fn/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/minimalistic-assert/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/minimatch/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/minimist/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mkdirp/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/ansi-colors/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/debug/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/diff/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/find-up/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/glob/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/ms/license.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/supports-color/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ms/license.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mute-stream/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/negotiator/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/neo-async/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/nice-try/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/nopt/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/normalize-package-data/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/normalize-package-data/node_modules/resolve/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/normalize-path/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/npm-run-path/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/number-is-nan/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/object-assign/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/object.assign/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/object.entries/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/object.getownpropertydescriptors/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/object-inspect/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/object-is/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/object-keys/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/omit-deep-lodash/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/once/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/onetime/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/on-finished/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/optimist/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/optimist/node_modules/wordwrap/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/optionator/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/os-browserify/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/osenv/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/os-homedir/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/os-locale/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/os-tmpdir/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pad/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pako/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/parent-module/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/parse-asn1/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/parse-json/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/parseqs/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/parseuri/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/parseurl/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-browserify/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-dirname/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-exists/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-is-absolute/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-key/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-parse/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-type/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-type/node_modules/pify/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pathval/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pbkdf2/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/p-defer/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pend/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/p-finally/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/picomatch/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pify/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pinkie/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pinkie-promise/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/p-is-promise/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/p-limit/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/p-locate/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/plugin-error/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/prelude-ls/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/private/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/process/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/process-nextick-args/license.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/progress/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pseudomap/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/p-try/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/public-encrypt/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pump/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/punycode/LICENSE-MIT.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/puppeteer/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/puppeteer/node_modules/rimraf/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/puppeteer/node_modules/ws/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/qs/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/querystring-es3/License.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/querystring/License.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ramda/LICENSE.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/randombytes/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/randomfill/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/range-parser/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/raw-body/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/readable-stream/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/readdirp/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/readdir-scoped-modules/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/read-installed/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/read-package-json/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/read-pkg/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/read-pkg-up/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/recast/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/recast/node_modules/esprima/LICENSE.BSD \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/redent/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/regexpp/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/remap-istanbul/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/repeating/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/require-directory/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/require-main-filename/LICENSE.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/requires-port/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/resolve-from/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/resolve/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/restore-cursor/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/rfdc/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/rimraf/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ripemd160/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/rollup/LICENSE.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/run-async/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/rxjs/_esm2015/LICENSE.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/rxjs/_esm5/LICENSE.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/rxjs/LICENSE.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/rxjs/src/LICENSE.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/safe-buffer/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/safer-buffer/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/semver/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/set-blocking/LICENSE.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/setimmediate/LICENSE.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/setprototypeof/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/sha.js/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/shebang-command/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/shebang-regex/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/signal-exit/LICENSE.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/slice-ansi/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/slide/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io-adapter/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io-client/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io-client/node_modules/debug/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io-client/node_modules/ms/license.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io/node_modules/debug/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io/node_modules/ms/license.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io-parser/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io-parser/node_modules/debug/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io-parser/node_modules/ms/license.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/source-map/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/spdx-compare/LICENSE.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/spdx-correct/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/spdx-expression-parse/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/spdx-ranges/LICENSE.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/spdx-satisfies/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/sprintf-js/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/statuses/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/stream-browserify/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/stream-browserify/node_modules/readable-stream/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/stream-browserify/node_modules/safe-buffer/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/stream-browserify/node_modules/string_decoder/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/stream-http/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/streamroller/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/streamroller/node_modules/debug/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/string_decoder/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimleft/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimright/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/string-width/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/strip-ansi/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/strip-bom/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/strip-eof/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/strip-indent/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/strip-json-comments/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/supports-color/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/table/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/table/node_modules/ansi-regex/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/table/node_modules/string-width/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/table/node_modules/strip-ansi/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/text-table/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/through2/LICENSE.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/through/LICENSE.APACHE2 \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/through/LICENSE.MIT \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/timers-browserify/LICENSE.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/tmp/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/to-fast-properties/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/toidentifier/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/to-regex-range/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/treeify/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/trim-newlines/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/tslib/LICENSE.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/tsutils/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/tty-browserify/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/type-check/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/typedarray/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/type-detect/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/type-is/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/chai/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/color-name/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/eslint-plugin/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/eslint-plugin/node_modules/regexpp/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/experimental-utils/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-scope/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/parser/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/typescript-estree/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/typescript-estree/node_modules/glob/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/typescript-estree/node_modules/semver/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/typescript/LICENSE.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/eslint-visitor-keys/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/estree/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/filesystem/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/json-schema/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/mocha/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/node/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/puppeteer/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/uglify-js/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ultron/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/universalify/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/unpipe/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/url/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/url/node_modules/punycode/LICENSE-MIT.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/useragent/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/util-deprecate/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/util-extend/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/util/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/utils-merge/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/validate-npm-package-license/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/vm-browserify/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/void-elements/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wcwidth/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/which/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/which-module/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wide-align/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wordwrap/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/node_modules/ansi-regex/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/node_modules/string-width/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/node_modules/strip-ansi/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wrappy/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/write/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ws/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ws/node_modules/safe-buffer/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/xmlhttprequest-ssl/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/xtend/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/y18n/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yallist/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/ansi-regex/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/ansi-styles/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/camelcase/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/cliui/LICENSE.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/color-convert/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/color-name/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/emoji-regex/LICENSE-MIT.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/find-up/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/is-fullwidth-code-point/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/locate-path/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/path-exists/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/p-locate/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/string-width/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/strip-ansi/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/wrap-ansi/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/yargs-parser/LICENSE.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-parser/LICENSE.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-parser/node_modules/camelcase/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/camelcase/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/find-up/license \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/get-caller-file/LICENSE.md \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/require-main-filename/LICENSE.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/yargs/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/yargs-parser/LICENSE.txt \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yauzl/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yeast/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/closure/COPYING \ + src/3rdparty/chromium/third_party/devtools-frontend/src/third_party/axe-core/LICENSE \ + src/3rdparty/chromium/third_party/devtools-frontend/src/third_party/pyjson5/src/LICENSE \ + src/3rdparty/chromium/third_party/dom_distiller_js/LICENSE \ + src/3rdparty/chromium/third_party/dpkg-shlibdeps/LICENSE \ + src/3rdparty/chromium/third_party/emoji-segmenter/LICENSE \ + src/3rdparty/chromium/third_party/emoji-segmenter/src/LICENSE \ + src/3rdparty/chromium/third_party/espresso/LICENSE \ + src/3rdparty/chromium/third_party/expat/src/expat/COPYING \ + src/3rdparty/chromium/third_party/ffmpeg/chromium/scripts/license_texts/full_lgpl.txt \ + src/3rdparty/chromium/third_party/ffmpeg/chromium/scripts/license_texts/jpeg.txt \ + src/3rdparty/chromium/third_party/ffmpeg/chromium/scripts/license_texts/mips.txt \ + src/3rdparty/chromium/third_party/ffmpeg/chromium/scripts/license_texts/oggparse_ahlberg_rullgayrd_2005.txt \ + src/3rdparty/chromium/third_party/ffmpeg/COPYING.GPLv2 \ + src/3rdparty/chromium/third_party/ffmpeg/COPYING.GPLv3 \ + src/3rdparty/chromium/third_party/ffmpeg/COPYING.LGPLv2.1 \ + src/3rdparty/chromium/third_party/ffmpeg/COPYING.LGPLv3 \ + src/3rdparty/chromium/third_party/ffmpeg/LICENSE.md \ + src/3rdparty/chromium/third_party/flac/COPYING.FDL \ + src/3rdparty/chromium/third_party/flac/COPYING.GPL \ + src/3rdparty/chromium/third_party/flac/COPYING.LGPL \ + src/3rdparty/chromium/third_party/flac/COPYING.Xiph \ + src/3rdparty/chromium/third_party/flatbuffers/LICENSE \ + src/3rdparty/chromium/third_party/flatbuffers/src/dart/LICENSE \ + src/3rdparty/chromium/third_party/flatbuffers/src/LICENSE.txt \ + src/3rdparty/chromium/third_party/fontconfig/LICENSE \ + src/3rdparty/chromium/third_party/fontconfig/src/COPYING \ + src/3rdparty/chromium/third_party/freetype/src/docs/LICENSE.TXT \ + src/3rdparty/chromium/third_party/fuchsia-sdk/LICENSE \ + src/3rdparty/chromium/third_party/gif_player/LICENSE \ + src/3rdparty/chromium/third_party/glfw/src/LICENSE.md \ + src/3rdparty/chromium/third_party/glslang/LICENSE \ + src/3rdparty/chromium/third_party/glslang/src/LICENSE.txt \ + src/3rdparty/chromium/third_party/googletest/src/googlemock/LICENSE \ + src/3rdparty/chromium/third_party/googletest/src/googlemock/scripts/generator/LICENSE \ + src/3rdparty/chromium/third_party/googletest/src/googletest/LICENSE \ + src/3rdparty/chromium/third_party/googletest/src/LICENSE \ + src/3rdparty/chromium/third_party/google-truth/LICENSE \ + src/3rdparty/chromium/third_party/guava/LICENSE \ + src/3rdparty/chromium/third_party/gvr-android-keyboard/LICENSE \ + src/3rdparty/chromium/third_party/gvr-android-sdk/LICENSE \ + src/3rdparty/chromium/third_party/hamcrest/LICENSE \ + src/3rdparty/chromium/third_party/harfbuzz-ng/src/COPYING \ + src/3rdparty/chromium/third_party/harfbuzz-ng/src/src/ms-use/COPYING \ + src/3rdparty/chromium/third_party/hunspell/COPYING \ + src/3rdparty/chromium/third_party/hunspell/COPYING.LESSER \ + src/3rdparty/chromium/third_party/hunspell/COPYING.MPL \ + src/3rdparty/chromium/third_party/iaccessible2/LICENSE \ + src/3rdparty/chromium/third_party/iccjpeg/LICENSE \ + src/3rdparty/chromium/third_party/icu4j/LICENSE \ + src/3rdparty/chromium/third_party/icu/LICENSE \ + src/3rdparty/chromium/third_party/icu/license.html \ + src/3rdparty/chromium/third_party/icu/scripts/LICENSE \ + src/3rdparty/chromium/third_party/ijar/LICENSE \ + src/3rdparty/chromium/third_party/ink/LICENSE \ + src/3rdparty/chromium/third_party/inspector_protocol/LICENSE \ + src/3rdparty/chromium/third_party/isimpledom/LICENSE \ + src/3rdparty/chromium/third_party/jacoco/LICENSE \ + src/3rdparty/chromium/third_party/javalang/LICENSE \ + src/3rdparty/chromium/third_party/jetifier_standalone/LICENSE \ + src/3rdparty/chromium/third_party/jinja2/LICENSE \ + src/3rdparty/chromium/third_party/jsoncpp/LICENSE \ + src/3rdparty/chromium/third_party/jsoncpp/source/LICENSE \ + src/3rdparty/chromium/third_party/jstemplate/COPYING \ + src/3rdparty/chromium/third_party/khronos/LICENSE \ + src/3rdparty/chromium/third_party/leveldatabase/src/LICENSE \ + src/3rdparty/chromium/third_party/libaddressinput/LICENSE \ + src/3rdparty/chromium/third_party/libaddressinput/src/cpp/LICENSE.chromium \ + src/3rdparty/chromium/third_party/libaddressinput/src/LICENSE \ + src/3rdparty/chromium/third_party/libaom/source/libaom/LICENSE \ + src/3rdparty/chromium/third_party/libaom/source/libaom/third_party/fastfeat/LICENSE \ + src/3rdparty/chromium/third_party/libaom/source/libaom/third_party/googletest/src/googletest/LICENSE \ + src/3rdparty/chromium/third_party/libaom/source/libaom/third_party/libwebm/LICENSE.TXT \ + src/3rdparty/chromium/third_party/libaom/source/libaom/third_party/vector/LICENSE \ + src/3rdparty/chromium/third_party/libaom/source/libaom/third_party/x86inc/LICENSE \ + src/3rdparty/chromium/third_party/libcxx-pretty-printers/LICENSE \ + src/3rdparty/chromium/third_party/libgav1/src/LICENSE \ + src/3rdparty/chromium/third_party/libgifcodec/LICENSE.md \ + src/3rdparty/chromium/third_party/libipp/LICENSE \ + src/3rdparty/chromium/third_party/libjingle_xmpp/LICENSE \ + src/3rdparty/chromium/third_party/libjpeg_turbo/LICENSE.md \ + src/3rdparty/chromium/third_party/libovr/LICENSE \ + src/3rdparty/chromium/third_party/libpng/LICENSE \ + src/3rdparty/chromium/third_party/libprotobuf-mutator/src/LICENSE \ + src/3rdparty/chromium/third_party/libsecret/LICENSE \ + src/3rdparty/chromium/third_party/libsrtp/LICENSE \ + src/3rdparty/chromium/third_party/libsync/LICENSE \ + src/3rdparty/chromium/third_party/libudev/LICENSE \ + src/3rdparty/chromium/third_party/libusb/src/COPYING \ + src/3rdparty/chromium/third_party/libvpx/source/libvpx/LICENSE \ + src/3rdparty/chromium/third_party/libvpx/source/libvpx/third_party/googletest/src/LICENSE \ + src/3rdparty/chromium/third_party/libvpx/source/libvpx/third_party/libwebm/LICENSE.TXT \ + src/3rdparty/chromium/third_party/libvpx/source/libvpx/third_party/libyuv/LICENSE \ + src/3rdparty/chromium/third_party/libvpx/source/libvpx/third_party/x86inc/LICENSE \ + src/3rdparty/chromium/third_party/libwebm/source/LICENSE.TXT \ + src/3rdparty/chromium/third_party/libwebp/LICENSE \ + src/3rdparty/chromium/third_party/libxml/src/COPYING \ + src/3rdparty/chromium/third_party/libxml/src/Copyright \ + src/3rdparty/chromium/third_party/libXNVCtrl/LICENSE \ + src/3rdparty/chromium/third_party/libxslt/linux/COPYING \ + src/3rdparty/chromium/third_party/libxslt/src/Copyright \ + src/3rdparty/chromium/third_party/libyuv/LICENSE \ + src/3rdparty/chromium/third_party/lottie/LICENSE \ + src/3rdparty/chromium/third_party/lzma_sdk/LICENSE \ + src/3rdparty/chromium/third_party/mako/LICENSE \ + src/3rdparty/chromium/third_party/markupsafe/LICENSE \ + src/3rdparty/chromium/third_party/material_design_icons/LICENSE \ + src/3rdparty/chromium/third_party/mesa_headers/LICENSE \ + src/3rdparty/chromium/third_party/metrics_proto/LICENSE \ + src/3rdparty/chromium/third_party/microsoft_webauthn/LICENSE \ + src/3rdparty/chromium/third_party/minigbm/LICENSE \ + src/3rdparty/chromium/third_party/minigbm/src/LICENSE \ + src/3rdparty/chromium/third_party/minizip/src/lib/bzip2/LICENSE \ + src/3rdparty/chromium/third_party/minizip/src/LICENSE \ + src/3rdparty/chromium/third_party/mocha/LICENSE \ + src/3rdparty/chromium/third_party/mockito/LICENSE \ + src/3rdparty/chromium/third_party/modp_b64/LICENSE \ + src/3rdparty/chromium/third_party/motemplate/LICENSE \ + src/3rdparty/chromium/third_party/mozilla/LICENSE \ + src/3rdparty/chromium/third_party/nasm/LICENSE \ + src/3rdparty/chromium/third_party/netty4/LICENSE \ + src/3rdparty/chromium/third_party/netty-tcnative/LICENSE \ + src/3rdparty/chromium/third_party/node/LICENSE \ + src/3rdparty/chromium/third_party/objenesis/LICENSE \ + src/3rdparty/chromium/third_party/ocmock/License.txt \ + src/3rdparty/chromium/third_party/one_euro_filter/LICENSE \ + src/3rdparty/chromium/third_party/openh264/src/LICENSE \ + src/3rdparty/chromium/third_party/openscreen/src/LICENSE \ + src/3rdparty/chromium/third_party/openscreen/src/third_party/mozilla/LICENSE.txt \ + src/3rdparty/chromium/third_party/openvr/src/LICENSE \ + src/3rdparty/chromium/third_party/opus/src/COPYING \ + src/3rdparty/chromium/third_party/opus/src/LICENSE_PLEASE_READ.txt \ + src/3rdparty/chromium/third_party/ots/LICENSE \ + src/3rdparty/chromium/third_party/ow2_asm/LICENSE \ + src/3rdparty/chromium/third_party/pdfium/LICENSE \ + src/3rdparty/chromium/third_party/pdfium/third_party/bigint/LICENSE \ + src/3rdparty/chromium/third_party/pdfium/third_party/libpng16/LICENSE \ + src/3rdparty/chromium/third_party/pdfium/third_party/pymock/LICENSE.txt \ + src/3rdparty/chromium/third_party/perfetto/LICENSE \ + src/3rdparty/chromium/third_party/pexpect/LICENSE \ + src/3rdparty/chromium/third_party/pffft/LICENSE \ + src/3rdparty/chromium/third_party/ply/LICENSE \ + src/3rdparty/chromium/third_party/ply/license.patch \ + src/3rdparty/chromium/third_party/polymer/LICENSE.polymer \ + src/3rdparty/chromium/third_party/polymer/v1_0/components-chromium/polymer2/LICENSE.txt \ + src/3rdparty/chromium/third_party/polymer/v1_0/components-chromium/polymer/LICENSE.txt \ + src/3rdparty/chromium/third_party/polymer/v3_0/components-chromium/polymer/LICENSE.txt \ + src/3rdparty/chromium/third_party/private-join-and-compute/src/crypto/LICENSE \ + src/3rdparty/chromium/third_party/private-join-and-compute/src/LICENSE \ + src/3rdparty/chromium/third_party/private-join-and-compute/src/util/LICENSE \ + src/3rdparty/chromium/third_party/proguard/LICENSE \ + src/3rdparty/chromium/third_party/protobuf/LICENSE \ + src/3rdparty/chromium/third_party/pycoverage/LICENSE \ + src/3rdparty/chromium/third_party/pyelftools/elftools/construct/LICENSE \ + src/3rdparty/chromium/third_party/pyelftools/LICENSE \ + src/3rdparty/chromium/third_party/pyjson5/src/LICENSE \ + src/3rdparty/chromium/third_party/pymock/LICENSE.txt \ + src/3rdparty/chromium/third_party/pystache/LICENSE \ + src/3rdparty/chromium/third_party/Python-Markdown/LICENSE.md \ + src/3rdparty/chromium/third_party/pywebsocket3/src/LICENSE \ + src/3rdparty/chromium/third_party/qcms/src/COPYING \ + src/3rdparty/chromium/third_party/quic_trace/src/LICENSE \ + src/3rdparty/chromium/third_party/quic_trace/src/third_party/fonts/LICENSE \ + src/3rdparty/chromium/third_party/quic_trace/src/third_party/glew/LICENSE.txt \ + src/3rdparty/chromium/third_party/qunit/LICENSE \ + src/3rdparty/chromium/third_party/r8/LICENSE \ + src/3rdparty/chromium/third_party/re2/LICENSE \ + src/3rdparty/chromium/third_party/re2/src/LICENSE \ + src/3rdparty/chromium/third_party/requests/LICENSE \ + src/3rdparty/chromium/third_party/rnnoise/COPYING \ + src/3rdparty/chromium/third_party/robolectric/LICENSE \ + src/3rdparty/chromium/third_party/robolectric/licenses/extreme.indiana.edu.license.txt \ + src/3rdparty/chromium/third_party/robolectric/licenses/javolution.license.txt \ + src/3rdparty/chromium/third_party/robolectric/licenses/pivotal.labs.license.txt \ + src/3rdparty/chromium/third_party/s2cellid/LICENSE \ + src/3rdparty/chromium/third_party/schema_org/LICENSE \ + src/3rdparty/chromium/third_party/shaderc/src/LICENSE \ + src/3rdparty/chromium/third_party/shaderc/src/third_party/LICENSE.glslang \ + src/3rdparty/chromium/third_party/shaderc/src/third_party/LICENSE.spirv-tools \ + src/3rdparty/chromium/third_party/simplejson/LICENSE.txt \ + src/3rdparty/chromium/third_party/sinonjs/LICENSE \ + src/3rdparty/chromium/third_party/six/LICENSE \ + src/3rdparty/chromium/third_party/six/src/LICENSE \ + src/3rdparty/chromium/third_party/skia/include/third_party/skcms/LICENSE \ + src/3rdparty/chromium/third_party/skia/include/third_party/vulkan/LICENSE \ + src/3rdparty/chromium/third_party/skia/LICENSE \ + src/3rdparty/chromium/third_party/skia/modules/canvaskit/canvaskit/LICENSE \ + src/3rdparty/chromium/third_party/skia/modules/pathkit/npm-asmjs/LICENSE \ + src/3rdparty/chromium/third_party/skia/modules/pathkit/npm-wasm/LICENSE \ + src/3rdparty/chromium/third_party/skia/third_party/etc1/LICENSE \ + src/3rdparty/chromium/third_party/skia/third_party/skcms/LICENSE \ + src/3rdparty/chromium/third_party/skia/third_party/vulkanmemoryallocator/include/LICENSE.txt \ + src/3rdparty/chromium/third_party/skia/third_party/vulkanmemoryallocator/LICENSE \ + src/3rdparty/chromium/third_party/skia/third_party/wuffs/LICENSE \ + src/3rdparty/chromium/third_party/smhasher/LICENSE \ + src/3rdparty/chromium/third_party/snappy/src/COPYING \ + src/3rdparty/chromium/third_party/spirv-cross/spirv-cross/LICENSE \ + src/3rdparty/chromium/third_party/spirv-headers/LICENSE \ + src/3rdparty/chromium/third_party/spirv-headers/src/LICENSE \ + src/3rdparty/chromium/third_party/SPIRV-Tools/LICENSE \ + src/3rdparty/chromium/third_party/SPIRV-Tools/src/LICENSE \ + src/3rdparty/chromium/third_party/SPIRV-Tools/src/utils/vscode/src/lsp/LICENSE \ + src/3rdparty/chromium/third_party/sqlite4java/LICENSE \ + src/3rdparty/chromium/third_party/sqlite/LICENSE \ + src/3rdparty/chromium/third_party/sqlite/src/autoconf/tea/license.terms \ + src/3rdparty/chromium/third_party/sqlite/src/LICENSE.md \ + src/3rdparty/chromium/third_party/subresource-filter-ruleset/LICENSE \ + src/3rdparty/chromium/third_party/sudden_motion_sensor/LICENSE \ + src/3rdparty/chromium/third_party/swiftshader/LICENSE.txt \ + src/3rdparty/chromium/third_party/tcmalloc/LICENSE \ + src/3rdparty/chromium/third_party/tcmalloc/vendor/COPYING \ + src/3rdparty/chromium/third_party/test_fonts/LICENSE \ + src/3rdparty/chromium/third_party/tlslite/LICENSE \ + src/3rdparty/chromium/third_party/turbine/LICENSE \ + src/3rdparty/chromium/third_party/ub-uiautomator/LICENSE \ + src/3rdparty/chromium/third_party/unrar/LICENSE \ + src/3rdparty/chromium/third_party/unrar/src/license.txt \ + src/3rdparty/chromium/third_party/usb_ids/LICENSE \ + src/3rdparty/chromium/third_party/usrsctp/LICENSE \ + src/3rdparty/chromium/third_party/usrsctp/usrsctplib/LICENSE.md \ + src/3rdparty/chromium/third_party/v4l-utils/COPYING.libv4l \ + src/3rdparty/chromium/third_party/wds/LICENSE \ + src/3rdparty/chromium/third_party/wds/src/COPYING \ + src/3rdparty/chromium/third_party/web-animations-js/LICENSE \ + src/3rdparty/chromium/third_party/web-animations-js/sources/COPYING \ + src/3rdparty/chromium/third_party/webdriver/COPYING \ + src/3rdparty/chromium/third_party/webdriver/LICENSE \ + src/3rdparty/chromium/third_party/webgpu-cts/src/LICENSE.txt \ + src/3rdparty/chromium/third_party/webgpu-cts/src/third_party/jquery/LICENSE.txt \ + src/3rdparty/chromium/third_party/webrtc/common_audio/third_party/fft4g/LICENSE \ + src/3rdparty/chromium/third_party/webrtc/common_audio/third_party/spl_sqrt_floor/LICENSE \ + src/3rdparty/chromium/third_party/webrtc/examples/androidapp/third_party/autobanh/LICENSE \ + src/3rdparty/chromium/third_party/webrtc/examples/androidapp/third_party/autobanh/LICENSE.md \ + src/3rdparty/chromium/third_party/webrtc/examples/objc/AppRTCMobile/third_party/SocketRocket/LICENSE \ + src/3rdparty/chromium/third_party/webrtc/LICENSE \ + src/3rdparty/chromium/third_party/webrtc/license_template.txt \ + src/3rdparty/chromium/third_party/webrtc/modules/third_party/fft/LICENSE \ + src/3rdparty/chromium/third_party/webrtc/modules/third_party/g711/LICENSE \ + src/3rdparty/chromium/third_party/webrtc/modules/third_party/g722/LICENSE \ + src/3rdparty/chromium/third_party/webrtc/modules/third_party/portaudio/LICENSE \ + src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/LICENSE \ + src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/sigslot/LICENSE \ + src/3rdparty/chromium/third_party/webxr_test_pages/LICENSE \ + src/3rdparty/chromium/third_party/webxr_test_pages/webxr-samples/js/cottontail/LICENSE.md \ + src/3rdparty/chromium/third_party/webxr_test_pages/webxr-samples/js/third-party/dat.gui/LICENSE \ + src/3rdparty/chromium/third_party/webxr_test_pages/webxr-samples/js/third-party/gl-matrix/LICENSE \ + src/3rdparty/chromium/third_party/webxr_test_pages/webxr-samples/LICENSE.md \ + src/3rdparty/chromium/third_party/weston/LICENSE \ + src/3rdparty/chromium/third_party/weston/src/COPYING \ + src/3rdparty/chromium/third_party/weston/src/data/COPYING \ + src/3rdparty/chromium/third_party/widevine/LICENSE \ + src/3rdparty/chromium/third_party/woff2/LICENSE \ + src/3rdparty/chromium/third_party/wuffs/LICENSE \ + src/3rdparty/chromium/third_party/wuffs/src/LICENSE \ + src/3rdparty/chromium/third_party/xdg-utils/LICENSE \ + src/3rdparty/chromium/third_party/xstream/LICENSE \ + src/3rdparty/chromium/third_party/yasm/source/patched-yasm/COPYING \ + src/3rdparty/chromium/third_party/zlib/LICENSE \ + src/3rdparty/chromium/tools/grit/third_party/six/LICENSE \ + src/3rdparty/chromium/tools/origin_trials/third_party/ed25519/LICENSE \ + src/3rdparty/chromium/tools/page_cycler/acid3/LICENSE \ + src/3rdparty/chromium/tools/win/ChromeDebug/ChromeDebug/LICENSE \ + src/3rdparty/chromium/url/third_party/mozilla/LICENSE.txt \ + src/3rdparty/chromium/v8/LICENSE \ + src/3rdparty/chromium/v8/LICENSE.fdlibm \ + src/3rdparty/chromium/v8/LICENSE.strongtalk \ + src/3rdparty/chromium/v8/LICENSE.v8 \ + src/3rdparty/chromium/v8/LICENSE.valgrind \ + src/3rdparty/chromium/v8/src/third_party/siphash/LICENSE \ + src/3rdparty/chromium/v8/src/third_party/utf8-decoder/LICENSE \ + src/3rdparty/chromium/v8/src/third_party/valgrind/LICENSE \ + src/3rdparty/chromium/v8/src/third_party/vtune/LICENSE \ + src/3rdparty/chromium/v8/third_party/colorama/LICENSE \ + src/3rdparty/chromium/v8/third_party/inspector_protocol/LICENSE \ + src/3rdparty/chromium/v8/third_party/v8/builtins/LICENSE \ + src/3rdparty/chromium/v8/third_party/wasm-api/LICENSE \ + src/3rdparty/gn/base/third_party/icu/LICENSE \ + src/3rdparty/gn/LICENSE \ + src/3rdparty/ninja/COPYING \ diff --git a/package/qt5/qt5webengine/host-pkg-config.in b/package/qt5/qt5webengine/host-pkg-config.in new file mode 100644 index 00000000..86a98064 --- /dev/null +++ b/package/qt5/qt5webengine/host-pkg-config.in @@ -0,0 +1,6 @@ +#!/bin/sh +PKG_CONFIG_SYSROOT_DIR="/" \ +PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \ +PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \ +PKG_CONFIG_LIBDIR="@HOST_DIR@/lib/pkgconfig:@HOST_DIR@/share/pkgconfig" \ +exec @HOST_DIR@/bin/pkgconf "$@" diff --git a/package/qt5/qt5webengine/host-python-wrapper.in b/package/qt5/qt5webengine/host-python-wrapper.in new file mode 100644 index 00000000..3400be1d --- /dev/null +++ b/package/qt5/qt5webengine/host-python-wrapper.in @@ -0,0 +1,3 @@ +#!/bin/sh +LD_LIBRARY_PATH="@HOST_DIR@/lib" \ +exec @HOST_DIR@/bin/python "$@" diff --git a/package/qt5/qt5webengine/qt5webengine.hash b/package/qt5/qt5webengine/qt5webengine.hash new file mode 100644 index 00000000..fcd6d4d3 --- /dev/null +++ b/package/qt5/qt5webengine/qt5webengine.hash @@ -0,0 +1,10 @@ +# Locally calculated +sha256 f760fbc14fec8fed3485cb757986e459f7b150cfc8484aced1116158f6b8a656 qtwebengine-v5.15.14-lts.tar.bz2 + +# Locally calculated +sha256 f34787ef0342c614b667186a6ec2f5d6b9d650e30142a2788a589a89743e88e9 LICENSE.Chromium +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 9ae1959e86bd49b9680f78e0b49d4e52ae88a3f234d497e175e42a7e8ed59216 LICENSE.LGPL3 diff --git a/package/qt5/qt5webengine/qt5webengine.mk b/package/qt5/qt5webengine/qt5webengine.mk new file mode 100644 index 00000000..529a83df --- /dev/null +++ b/package/qt5/qt5webengine/qt5webengine.mk @@ -0,0 +1,175 @@ +################################################################################ +# +# qt5webengine +# +################################################################################ + +QT5WEBENGINE_VERSION = $(QT5_VERSION) +QT5WEBENGINE_SITE = $(QT5_SITE)/qtwebengine/-/archive/v$(QT5WEBENGINE_VERSION)-lts +QT5WEBENGINE_SOURCE = qtwebengine-v$(QT5WEBENGINE_VERSION)-lts.tar.bz2 +QT5WEBENGINE_DEPENDENCIES = qt5declarative qt5webchannel +QT5WEBENGINE_PATCH_DEPENDENCIES = qt5webengine-chromium +QT5WEBENGINE_INSTALL_STAGING = YES +QT5WEBENGINE_SYNC_QT_HEADERS = YES + +QT5WEBENGINE_LICENSE = GPL-2.0 or LGPL-3.0 or GPL-3.0 or GPL-3.0 with exception +QT5WEBENGINE_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT \ + LICENSE.GPLv3 LICENSE.LGPL3 + +# command line argument separator +QT5WEBENGINE_CONF_OPTS = -- + +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +QT5WEBENGINE_DEPENDENCIES += qt5svg +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_XCB),y) +QT5WEBENGINE_DEPENDENCIES += \ + xlib_libXcomposite \ + xlib_libXcursor \ + xlib_libXi \ + xlib_libxkbfile \ + xlib_libXrandr \ + xlib_libXScrnSaver \ + xlib_libXtst +QT5WEBENGINE_CONF_OPTS += \ + -feature-webengine-ozone \ + -feature-webengine-system-libdrm \ + -feature-webengine-system-x11 \ + -feature-webengine-system-xkbfile \ + -feature-webengine-system-xcomposite \ + -feature-webengine-system-xcursor \ + -feature-webengine-system-xi \ + -feature-webengine-system-xproto-gl \ + -feature-webengine-system-xtst +else +QT5WEBENGINE_CONF_OPTS += \ + -no-feature-webengine-ozone \ + -no-feature-webengine-system-libdrm \ + -no-feature-webengine-system-x11 \ + -no-feature-webengine-system-xkbfile \ + -no-feature-webengine-system-xcomposite \ + -no-feature-webengine-system-xcursor \ + -no-feature-webengine-system-xi \ + -no-feature-webengine-system-xproto-gl \ + -no-feature-webengine-system-xtst +endif + +QT5WEBENGINE_DEPENDENCIES += \ + host-bison \ + host-flex \ + host-freetype \ + host-gperf \ + host-harfbuzz \ + host-ninja \ + host-nodejs \ + host-pkgconf \ + host-libjpeg \ + host-libnss \ + host-libpng \ + host-python3 \ + host-webp \ + host-zlib \ + freetype \ + jpeg \ + lcms2 \ + libevent \ + libnss \ + libvpx \ + libxml2 \ + libxslt \ + snappy \ + webp + +QT5WEBENGINE_CONF_OPTS += \ + -webengine-embedded-build \ + -webengine-opus \ + -webengine-webchannel \ + -webengine-webp \ + -feature-build-qtwebengine-core \ + -feature-webengine-core-support \ + -feature-webengine-system-dbus \ + -feature-webengine-system-fontconfig \ + -feature-webengine-system-freetype \ + -feature-webengine-system-glib \ + -feature-webengine-system-glibc \ + -feature-webengine-system-harfbuzz \ + -feature-webengine-system-jpeg \ + -feature-webengine-system-khr \ + -feature-webengine-system-lcms2 \ + -feature-webengine-system-libevent \ + -feature-webengine-system-libvpx \ + -feature-webengine-system-libxml2 \ + -feature-webengine-system-ninja \ + -feature-webengine-system-nss \ + -feature-webengine-system-png \ + -feature-webengine-system-snappy \ + -feature-webengine-system-zlib + +QT5WEBENGINE_CONF_OPTS += \ + -no-webengine-geolocation \ + -no-webengine-kerberos \ + -no-webengine-pepper-plugins \ + -no-webengine-printing-and-pdf \ + -no-webengine-spellchecker \ + -no-webengine-webrtc \ + -no-webengine-webrtc-pipewire \ + -no-feature-webengine-developer-build \ + -no-feature-webengine-full-debug-info \ + -no-feature-webengine-native-spellchecker \ + -no-feature-webengine-noexecstack \ + -no-feature-webengine-system-minizip \ + -no-feature-webengine-system-gn + +ifeq ($(BR2_PACKAGE_QT5WEBENGINE_PROPRIETARY_CODECS),y) +QT5WEBENGINE_CONF_OPTS += -webengine-proprietary-codecs +else +QT5WEBENGINE_CONF_OPTS += -no-webengine-proprietary-codecs +endif + +ifeq ($(BR2_PACKAGE_QT5WEBENGINE_ALSA),y) +QT5WEBENGINE_DEPENDENCIES += alsa-lib +QT5WEBENGINE_CONF_OPTS += -webengine-alsa +else +QT5WEBENGINE_CONF_OPTS += -no-webengine-alsa +endif + +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +QT5WEBENGINE_DEPENDENCIES += pulseaudio +QT5WEBENGINE_CONF_OPTS += -webengine-pulseaudio +else +QT5WEBENGINE_CONF_OPTS += -no-webengine-pulseaudio +endif + +QT5WEBENGINE_ENV = \ + PATH=$(@D)/host-bin:$(BR_PATH) \ + PKG_CONFIG_SYSROOT_DIR="/" +define QT5WEBENGINE_CREATE_HOST_PYTHON_WRAPPER + mkdir -p $(@D)/host-bin + sed s%@HOST_DIR@%$(HOST_DIR)%g $(QT5WEBENGINE_PKGDIR)/host-python-wrapper.in > $(@D)/host-bin/python + chmod +x $(@D)/host-bin/python +endef +QT5WEBENGINE_PRE_CONFIGURE_HOOKS += QT5WEBENGINE_CREATE_HOST_PYTHON_WRAPPER + +QT5WEBENGINE_ENV += NINJAFLAGS="-j$(PARALLEL_JOBS)" + +define QT5WEBENGINE_COPY_CHROMIUM + rm -rf $(@D)/src/3rdparty + cp -a $(QT5WEBENGINE_CHROMIUM_DIR) $(@D)/src/3rdparty +endef +QT5WEBENGINE_POST_PATCH_HOOKS += QT5WEBENGINE_COPY_CHROMIUM + +define QT5WEBENGINE_CREATE_HOST_PKG_CONFIG + mkdir -p $(@D)/host-bin + sed s%@HOST_DIR@%$(HOST_DIR)%g $(QT5WEBENGINE_PKGDIR)/host-pkg-config.in > $(@D)/host-bin/host-pkg-config + chmod +x $(@D)/host-bin/host-pkg-config +endef +QT5WEBENGINE_PRE_CONFIGURE_HOOKS += QT5WEBENGINE_CREATE_HOST_PKG_CONFIG +QT5WEBENGINE_ENV += \ + GN_PKG_CONFIG_HOST=$(@D)/host-bin/host-pkg-config \ + GN_HOST_TOOLCHAIN_EXTRA_CPPFLAGS="$(HOST_CPPFLAGS)" + +QT5WEBENGINE_CONF_ENV = $(QT5WEBENGINE_ENV) +QT5WEBENGINE_MAKE_ENV = $(QT5WEBENGINE_ENV) + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5webkit/0001-WinCairo-PlayStation-ICU-68.1-no-longer-exposes-FALS.patch b/package/qt5/qt5webkit/0001-WinCairo-PlayStation-ICU-68.1-no-longer-exposes-FALS.patch new file mode 100644 index 00000000..0c3e8b35 --- /dev/null +++ b/package/qt5/qt5webkit/0001-WinCairo-PlayStation-ICU-68.1-no-longer-exposes-FALS.patch @@ -0,0 +1,168 @@ +From 736e1d804d1efa2077c4f1fe0b9084927d82e249 Mon Sep 17 00:00:00 2001 +From: "stephan.szabo@sony.com" + +Date: Tue, 3 Nov 2020 20:06:15 +0000 +Subject: [PATCH] [WinCairo/PlayStation] ICU 68.1 no longer exposes FALSE and + TRUE macros by default https://bugs.webkit.org/show_bug.cgi?id=218522 + +Reviewed by Don Olmstead. + +Source/WebCore: + +* platform/text/TextCodecICU.cpp: Replace use of TRUE with true + +Source/WebKit: + +* UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp: Replace FALSE with false + +Source/WTF: + +Replace uses of FALSE and TRUE with false and true. + +* wtf/text/icu/UTextProvider.h: +* wtf/text/icu/UTextProviderLatin1.cpp: +* wtf/text/icu/UTextProviderUTF16.cpp: + +Change-Id: I876cf2b10b8c858c3d265113c062d159749a2f3e +git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269325 268f45cc-cd09-0410-ab3c-d52691b4dbfc +Signed-off-by: James Hilliard +[james.hilliard1@gmail.com: backport from upstream commit +736e1d804d1efa2077c4f1fe0b9084927d82e249] +--- + Source/WebCore/platform/text/TextCodecICU.cpp | 2 +- + Source/WebCore/platform/text/icu/UTextProvider.h | 8 ++++---- + .../platform/text/icu/UTextProviderLatin1.cpp | 14 +++++++------- + .../platform/text/icu/UTextProviderUTF16.cpp | 4 ++-- + 7 files changed, 45 insertions(+), 14 deletions(-) + +diff --git a/Source/WebCore/platform/text/TextCodecICU.cpp b/Source/WebCore/platform/text/TextCodecICU.cpp +index dd6ff0675bb1..e0f4bd718828 100644 +--- a/Source/WebCore/platform/text/TextCodecICU.cpp ++++ b/Source/WebCore/platform/text/TextCodecICU.cpp +@@ -308,7 +308,7 @@ void TextCodecICU::createICUConverter() const + m_converterICU = ucnv_open(m_canonicalConverterName, &err); + ASSERT(U_SUCCESS(err)); + if (m_converterICU) +- ucnv_setFallback(m_converterICU, TRUE); ++ ucnv_setFallback(m_converterICU, true); + } + + int TextCodecICU::decodeToBuffer(UChar* target, UChar* targetLimit, const char*& source, const char* sourceLimit, int32_t* offsets, bool flush, UErrorCode& err) +diff --git a/Source/WebCore/platform/text/icu/UTextProvider.h b/Source/WebCore/platform/text/icu/UTextProvider.h +index c254fc4c7ce2..6d1e1cbc5eb2 100644 +--- a/Source/WebCore/platform/text/icu/UTextProvider.h ++++ b/Source/WebCore/platform/text/icu/UTextProvider.h +@@ -80,12 +80,12 @@ inline bool uTextAccessInChunkOrOutOfRange(UText* text, int64_t nativeIndex, int + // Ensure chunk offset is well formed if computed offset exceeds int32_t range. + ASSERT(offset < std::numeric_limits::max()); + text->chunkOffset = offset < std::numeric_limits::max() ? static_cast(offset) : 0; +- isAccessible = TRUE; ++ isAccessible = true; + return true; + } + if (nativeIndex >= nativeLength && text->chunkNativeLimit == nativeLength) { + text->chunkOffset = text->chunkLength; +- isAccessible = FALSE; ++ isAccessible = false; + return true; + } + } else { +@@ -94,12 +94,12 @@ inline bool uTextAccessInChunkOrOutOfRange(UText* text, int64_t nativeIndex, int + // Ensure chunk offset is well formed if computed offset exceeds int32_t range. + ASSERT(offset < std::numeric_limits::max()); + text->chunkOffset = offset < std::numeric_limits::max() ? static_cast(offset) : 0; +- isAccessible = TRUE; ++ isAccessible = true; + return true; + } + if (nativeIndex <= 0 && !text->chunkNativeStart) { + text->chunkOffset = 0; +- isAccessible = FALSE; ++ isAccessible = false; + return true; + } + } +diff --git a/Source/WebCore/platform/text/icu/UTextProviderLatin1.cpp b/Source/WebCore/platform/text/icu/UTextProviderLatin1.cpp +index cd6852c71e55..6a864b1c1567 100644 +--- a/Source/WebCore/platform/text/icu/UTextProviderLatin1.cpp ++++ b/Source/WebCore/platform/text/icu/UTextProviderLatin1.cpp +@@ -100,23 +100,23 @@ static UBool uTextLatin1Access(UText* uText, int64_t index, UBool forward) + if (index < uText->chunkNativeLimit && index >= uText->chunkNativeStart) { + // Already inside the buffer. Set the new offset. + uText->chunkOffset = static_cast(index - uText->chunkNativeStart); +- return TRUE; ++ return true; + } + if (index >= length && uText->chunkNativeLimit == length) { + // Off the end of the buffer, but we can't get it. + uText->chunkOffset = static_cast(index - uText->chunkNativeStart); +- return FALSE; ++ return false; + } + } else { + if (index <= uText->chunkNativeLimit && index > uText->chunkNativeStart) { + // Already inside the buffer. Set the new offset. + uText->chunkOffset = static_cast(index - uText->chunkNativeStart); +- return TRUE; ++ return true; + } + if (!index && !uText->chunkNativeStart) { + // Already at the beginning; can't go any farther. + uText->chunkOffset = 0; +- return FALSE; ++ return false; + } + } + +@@ -144,7 +144,7 @@ static UBool uTextLatin1Access(UText* uText, int64_t index, UBool forward) + + uText->nativeIndexingLimit = uText->chunkLength; + +- return TRUE; ++ return true; + } + + static int32_t uTextLatin1Extract(UText* uText, int64_t start, int64_t limit, UChar* dest, int32_t destCapacity, UErrorCode* status) +@@ -336,7 +336,7 @@ static int64_t uTextLatin1ContextAwareNativeLength(UText* text) + static UBool uTextLatin1ContextAwareAccess(UText* text, int64_t nativeIndex, UBool forward) + { + if (!text->context) +- return FALSE; ++ return false; + int64_t nativeLength = uTextLatin1ContextAwareNativeLength(text); + UBool isAccessible; + if (uTextAccessInChunkOrOutOfRange(text, nativeIndex, nativeLength, forward, isAccessible)) +@@ -356,7 +356,7 @@ static UBool uTextLatin1ContextAwareAccess(UText* text, int64_t nativeIndex, UBo + ASSERT(newContext == UTextProviderContext::PriorContext); + textLatin1ContextAwareSwitchToPriorContext(text, nativeIndex, nativeLength, forward); + } +- return TRUE; ++ return true; + } + + static int32_t uTextLatin1ContextAwareExtract(UText*, int64_t, int64_t, UChar*, int32_t, UErrorCode* errorCode) +diff --git a/Source/WebCore/platform/text/icu/UTextProviderUTF16.cpp b/Source/WebCore/platform/text/icu/UTextProviderUTF16.cpp +index 7aaac48c8151..9ae0d367f1f6 100644 +--- a/Source/WebCore/platform/text/icu/UTextProviderUTF16.cpp ++++ b/Source/WebCore/platform/text/icu/UTextProviderUTF16.cpp +@@ -125,7 +125,7 @@ static inline int64_t uTextUTF16ContextAwareNativeLength(UText* text) + static UBool uTextUTF16ContextAwareAccess(UText* text, int64_t nativeIndex, UBool forward) + { + if (!text->context) +- return FALSE; ++ return false; + int64_t nativeLength = uTextUTF16ContextAwareNativeLength(text); + UBool isAccessible; + if (uTextAccessInChunkOrOutOfRange(text, nativeIndex, nativeLength, forward, isAccessible)) +@@ -145,7 +145,7 @@ static UBool uTextUTF16ContextAwareAccess(UText* text, int64_t nativeIndex, UBoo + ASSERT(newContext == UTextProviderContext::PriorContext); + textUTF16ContextAwareSwitchToPriorContext(text, nativeIndex, nativeLength, forward); + } +- return TRUE; ++ return true; + } + + static int32_t uTextUTF16ContextAwareExtract(UText*, int64_t, int64_t, UChar*, int32_t, UErrorCode* errorCode) +-- +2.25.1 + diff --git a/package/qt5/qt5webkit/0002-Fix-compilation-with-Python-3.9-avoid-passing-encodi.patch b/package/qt5/qt5webkit/0002-Fix-compilation-with-Python-3.9-avoid-passing-encodi.patch new file mode 100644 index 00000000..d167a44b --- /dev/null +++ b/package/qt5/qt5webkit/0002-Fix-compilation-with-Python-3.9-avoid-passing-encodi.patch @@ -0,0 +1,33 @@ +From 78360c01c796b6260bf828bc9c8a0ef73c5132fd Mon Sep 17 00:00:00 2001 +From: Konstantin Tokarev +Date: Wed, 3 Jun 2020 15:01:42 +0300 +Subject: [PATCH] Fix compilation with Python 3.9: avoid passing encoding to + json.load() + +In Python 2.7 UTF-8 is assumed by default, while in Python 3 this argument +is not supported. + +Change-Id: Ic459d60a6b20bc1838d8771bc36ac41614fe61a9 +Signed-off-by: James Hilliard +[james.hilliard1@gmail.com: backport from upstream commit +78360c01c796b6260bf828bc9c8a0ef73c5132fd] +--- + Source/JavaScriptCore/generate-bytecode-files | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Source/JavaScriptCore/generate-bytecode-files b/Source/JavaScriptCore/generate-bytecode-files +index c5dab429c7b0..af3431275ecf 100644 +--- a/Source/JavaScriptCore/generate-bytecode-files ++++ b/Source/JavaScriptCore/generate-bytecode-files +@@ -163,7 +163,7 @@ if __name__ == "__main__": + initBytecodesFile = openOrExit(initASMFileName, "w") + + try: +- bytecodeSections = json.load(bytecodeFile, encoding = "utf-8") ++ bytecodeSections = json.load(bytecodeFile) + except: + print("Unexpected error parsing {0}: {1}".format(bytecodeJSONFile, sys.exc_info())) + +-- +2.25.1 + diff --git a/package/qt5/qt5webkit/0003-Let-Bison-generate-the-header-directly-to-fix-build-.patch b/package/qt5/qt5webkit/0003-Let-Bison-generate-the-header-directly-to-fix-build-.patch new file mode 100644 index 00000000..1591b8a8 --- /dev/null +++ b/package/qt5/qt5webkit/0003-Let-Bison-generate-the-header-directly-to-fix-build-.patch @@ -0,0 +1,52 @@ +From d92b11fea65364fefa700249bd3340e0cd4c5b31 Mon Sep 17 00:00:00 2001 +From: Dmitry Shachnev +Date: Tue, 4 Aug 2020 21:04:06 +0300 +Subject: [PATCH] Let Bison generate the header directly, to fix build with + Bison 3.7 + +Starting with Bison 3.7, the generated C++ file #include's the header +by default, instead of duplicating it. So we should not delete it. + +Remove the code to add #ifdef guards to the header, since Bison adds +them itself since version 2.6.3. +Signed-off-by: James Hilliard +[james.hilliard1@gmail.com: backport from upstream commit +d92b11fea65364fefa700249bd3340e0cd4c5b31] +--- + Source/WebCore/css/makegrammar.pl | 21 +-------------------- + 1 file changed, 1 insertion(+), 20 deletions(-) + +diff --git a/Source/WebCore/css/makegrammar.pl b/Source/WebCore/css/makegrammar.pl +index 5d63b08102eb..9435701c7061 100644 +--- a/Source/WebCore/css/makegrammar.pl ++++ b/Source/WebCore/css/makegrammar.pl +@@ -73,25 +73,6 @@ if ($suffix eq ".y.in") { + } + + my $fileBase = File::Spec->join($outputDir, $filename); +-my @bisonCommand = ($bison, "-d", "-p", $symbolsPrefix, $grammarFilePath, "-o", "$fileBase.cpp"); ++my @bisonCommand = ($bison, "--defines=$fileBase.h", "-p", $symbolsPrefix, $grammarFilePath, "-o", "$fileBase.cpp"); + push @bisonCommand, "--no-lines" if $^O eq "MSWin32"; # Work around bug in bison >= 3.0 on Windows where it puts backslashes into #line directives. + system(@bisonCommand) == 0 or die; +- +-open HEADER, ">$fileBase.h" or die; +-print HEADER << "EOF"; +-#ifndef CSSGRAMMAR_H +-#define CSSGRAMMAR_H +-EOF +- +-open HPP, "<$fileBase.cpp.h" or open HPP, "<$fileBase.hpp" or die; +-while () { +- print HEADER; +-} +-close HPP; +- +-print HEADER "#endif\n"; +-close HEADER; +- +-unlink("$fileBase.cpp.h"); +-unlink("$fileBase.hpp"); +- +-- +2.25.1 + diff --git a/package/qt5/qt5webkit/0004-Remove-invalid-g_object-declarations-to-fix-build-wi.patch b/package/qt5/qt5webkit/0004-Remove-invalid-g_object-declarations-to-fix-build-wi.patch new file mode 100644 index 00000000..e3a1faec --- /dev/null +++ b/package/qt5/qt5webkit/0004-Remove-invalid-g_object-declarations-to-fix-build-wi.patch @@ -0,0 +1,33 @@ +From 5b698ba3faffd4e198a45be9fe74f53307395e4b Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Wed, 7 Apr 2021 13:38:09 +0200 +Subject: [PATCH] Remove invalid g_object declarations to fix build with glib + >= 2.68 + +g_object_ref_sink is defined as a macro meanwhile and so the build fails. +Just remove the declarations, glib.h is included anyway. +Signed-off-by: James Hilliard +[Retrieved from: https://github.com/qtwebkit/qtwebkit/pull/1058] +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + Source/WTF/wtf/glib/GRefPtr.h | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/Source/WTF/wtf/glib/GRefPtr.h b/Source/WTF/wtf/glib/GRefPtr.h +index 06133d82cb35..d9a1d2f145f5 100644 +--- a/Source/WTF/wtf/glib/GRefPtr.h ++++ b/Source/WTF/wtf/glib/GRefPtr.h +@@ -29,9 +29,6 @@ + #include + #include + +-extern "C" void g_object_unref(gpointer); +-extern "C" gpointer g_object_ref_sink(gpointer); +- + namespace WTF { + + enum GRefPtrAdoptType { GRefPtrAdopt }; +-- +2.25.1 + diff --git a/package/qt5/qt5webkit/0005-Add-support-for-ARC-processors.patch b/package/qt5/qt5webkit/0005-Add-support-for-ARC-processors.patch new file mode 100644 index 00000000..92f023ea --- /dev/null +++ b/package/qt5/qt5webkit/0005-Add-support-for-ARC-processors.patch @@ -0,0 +1,93 @@ +From 8da574cf8f30f69e47f76705aa2eb07000540aeb Mon Sep 17 00:00:00 2001 +From: Alexey Brodkin +Date: Mon, 21 Feb 2022 18:28:00 +0300 +Subject: [PATCH] Add support for ARC processors + +Signed-off-by: Alexey Brodkin +--- + CMakeLists.txt | 4 +++- + Source/JavaScriptCore/CMakeLists.txt | 3 ++- + Source/WTF/wtf/Platform.h | 8 ++++++++ + Source/WTF/wtf/dtoa/utils.h | 2 +- + Source/cmake/OptionsQt.cmake | 4 ++++ + 5 files changed, 18 insertions(+), 3 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 31a2ea1fd..f0dfbda5b 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -57,7 +57,9 @@ if (MSVC_CXX_ARCHITECTURE_ID) + else () + string(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} LOWERCASE_CMAKE_SYSTEM_PROCESSOR) + endif () +-if (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "^arm") ++if (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "^arc") ++ set(WTF_CPU_ARC 1) ++elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "^arm") + set(WTF_CPU_ARM 1) + elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64") + set(WTF_CPU_ARM64 1) +diff --git a/Source/JavaScriptCore/CMakeLists.txt b/Source/JavaScriptCore/CMakeLists.txt +index 937b3ed00..205dde288 100644 +--- a/Source/JavaScriptCore/CMakeLists.txt ++++ b/Source/JavaScriptCore/CMakeLists.txt +@@ -1275,7 +1275,8 @@ if (ENABLE_WEB_REPLAY) + list(APPEND JavaScriptCore_HEADERS ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/JSReplayInputs.h) + endif () + +-if (WTF_CPU_ARM) ++if (WTF_CPU_ARC) ++elseif (WTF_CPU_ARM) + elseif (WTF_CPU_ARM64) + elseif (WTF_CPU_ALPHA) + elseif (WTF_CPU_HPPA) +diff --git a/Source/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h +index 5717f3ea1..b327ed693 100644 +--- a/Source/WTF/wtf/Platform.h ++++ b/Source/WTF/wtf/Platform.h +@@ -349,6 +349,14 @@ + + #endif /* ARM */ + ++/* CPU(ARC) - ARC */ ++#if defined(__arc__) ++#define WTF_CPU_ARC 1 ++#if defined(__BIG_ENDIAN__) ++#define WTF_CPU_BIG_ENDIAN 1 ++#endif ++#endif ++ + #if CPU(ARM) || CPU(MIPS) || CPU(SH4) || CPU(ALPHA) || CPU(HPPA) + #define WTF_CPU_NEEDS_ALIGNED_ACCESS 1 + #endif +diff --git a/Source/WTF/wtf/dtoa/utils.h b/Source/WTF/wtf/dtoa/utils.h +index 889642cee..8f1e9933e 100644 +--- a/Source/WTF/wtf/dtoa/utils.h ++++ b/Source/WTF/wtf/dtoa/utils.h +@@ -49,7 +49,7 @@ + defined(__ARMEL__) || \ + defined(_MIPS_ARCH_MIPS32R2) + #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 +-#elif CPU(MIPS) || CPU(MIPS64) || CPU(PPC) || CPU(PPC64) || CPU(PPC64LE) || CPU(SH4) || CPU(S390) || CPU(S390X) || CPU(IA64) || CPU(ALPHA) || CPU(ARM64) || CPU(HPPA) ++#elif CPU(MIPS) || CPU(MIPS64) || CPU(PPC) || CPU(PPC64) || CPU(PPC64LE) || CPU(SH4) || CPU(S390) || CPU(S390X) || CPU(IA64) || CPU(ALPHA) || CPU(ARM64) || CPU(HPPA) || CPU(ARC) + #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 + #elif defined(_M_IX86) || defined(__i386__) + #if defined(_WIN32) +diff --git a/Source/cmake/OptionsQt.cmake b/Source/cmake/OptionsQt.cmake +index ec6081de0..e1a5efc1e 100644 +--- a/Source/cmake/OptionsQt.cmake ++++ b/Source/cmake/OptionsQt.cmake +@@ -365,6 +365,10 @@ if (MINGW AND CMAKE_SIZEOF_VOID_P EQUAL 8) + WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_JIT PRIVATE OFF) + endif () + ++if (WTF_CPU_ARC) ++ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_JIT PRIVATE OFF) ++endif () ++ + WEBKIT_OPTION_CONFLICT(USE_GSTREAMER USE_QT_MULTIMEDIA) + WEBKIT_OPTION_CONFLICT(USE_GSTREAMER USE_MEDIA_FOUNDATION) + WEBKIT_OPTION_CONFLICT(USE_QT_MULTIMEDIA USE_MEDIA_FOUNDATION) +-- +2.25.1 + diff --git a/package/qt5/qt5webkit/0006-Warnings-due-to-AppSinkCallbacks-struct-growth-https.patch b/package/qt5/qt5webkit/0006-Warnings-due-to-AppSinkCallbacks-struct-growth-https.patch new file mode 100644 index 00000000..610d99e3 --- /dev/null +++ b/package/qt5/qt5webkit/0006-Warnings-due-to-AppSinkCallbacks-struct-growth-https.patch @@ -0,0 +1,39 @@ +From 53d5bbf4d597a2fcb26149fab3185a3db09529af Mon Sep 17 00:00:00 2001 +From: Philippe Normand +Date: Fri, 23 Jul 2021 15:38:29 +0000 +Subject: [PATCH] Warnings due to AppSinkCallbacks struct growth + https://bugs.webkit.org/show_bug.cgi?id=228229 + +Patch by Philippe Normand on 2021-07-23 +Reviewed by Xabier Rodriguez-Calvar. + +A new callback was added, for event notifications. + +Canonical link: https://commits.webkit.org/239911@main +git-svn-id: https://svn.webkit.org/repository/webkit/trunk@280243268f45cc-cd09-0410-ab3c-d52691b4dbfc +[Thomas: backported from upstream, only the part touching +Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp +as other parts are not relevant] +Signed-off-by: Thomas Petazzoni +--- + .../platform/audio/gstreamer/AudioFileReaderGStreamer.cpp | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp b/Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp +index 2f24c0cf5..dd9d91cf3 100644 +--- a/Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp ++++ b/Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp +@@ -230,6 +230,10 @@ void AudioFileReader::handleNewDeinterleavePad(GstPad* pad) + [](GstAppSink* sink, gpointer userData) -> GstFlowReturn { + return static_cast(userData)->handleSample(sink); + }, ++#if GST_CHECK_VERSION(1, 19, 1) ++ // new_event ++ nullptr, ++#endif + { nullptr } + }; + gst_app_sink_set_callbacks(GST_APP_SINK(sink), &callbacks, this, 0); +-- +2.37.1 + diff --git a/package/qt5/qt5webkit/0007-Offlineasm-warnings-with-newer-Ruby-versions-https-b.patch b/package/qt5/qt5webkit/0007-Offlineasm-warnings-with-newer-Ruby-versions-https-b.patch new file mode 100644 index 00000000..c8e339c5 --- /dev/null +++ b/package/qt5/qt5webkit/0007-Offlineasm-warnings-with-newer-Ruby-versions-https-b.patch @@ -0,0 +1,48 @@ +From 47e03d4af292805bf304f09e34333b38a94c1789 Mon Sep 17 00:00:00 2001 +From: "aperez@igalia.com" +Date: Wed, 15 Jan 2020 22:15:38 +0000 +Subject: [PATCH] Offlineasm warnings with newer Ruby versions + https://bugs.webkit.org/show_bug.cgi?id=206233 + +Reviewed by Yusuke Suzuki. + +Avoid a warning about using Object#=~ on Annotation instances, which +has been deprecated in Ruby 2.7. + +* offlineasm/parser.rb: Swap checks to prevent applying the =~ operator +to Annotation instances, which do not define it. + +git-svn-id: http://svn.webkit.org/repository/webkit/trunk@254637 268f45cc-cd09-0410-ab3c-d52691b4dbfc +Upstream: https://github.com/WebKit/WebKit/commit/c7d19a492d97f9282a546831beb918e03315f6ef +Signed-off-by: Alexis Lothoré +--- + Source/JavaScriptCore/offlineasm/parser.rb | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/Source/JavaScriptCore/offlineasm/parser.rb b/Source/JavaScriptCore/offlineasm/parser.rb +index b4451124521f..cd1cffaec6ed 100644 +--- a/Source/JavaScriptCore/offlineasm/parser.rb ++++ b/Source/JavaScriptCore/offlineasm/parser.rb +@@ -584,9 +584,7 @@ class Parser + firstCodeOrigin = @tokens[@idx].codeOrigin + list = [] + loop { +- if (@idx == @tokens.length and not final) or (final and @tokens[@idx] =~ final) +- break +- elsif @tokens[@idx].is_a? Annotation ++ if @tokens[@idx].is_a? Annotation + # This is the only place where we can encounter a global + # annotation, and hence need to be able to distinguish between + # them. +@@ -600,6 +598,8 @@ class Parser + list << Instruction.new(codeOrigin, annotationOpcode, [], @tokens[@idx].string) + @annotation = nil + @idx += 2 # Consume the newline as well. ++ elsif (@idx == @tokens.length and not final) or (final and @tokens[@idx] =~ final) ++ break + elsif @tokens[@idx] == "\n" + # ignore + @idx += 1 +-- +2.43.1 + diff --git a/package/qt5/qt5webkit/0008-Build-fails-with-libxml2-version-2.12.0-due-to-API-c.patch b/package/qt5/qt5webkit/0008-Build-fails-with-libxml2-version-2.12.0-due-to-API-c.patch new file mode 100644 index 00000000..d6f379ae --- /dev/null +++ b/package/qt5/qt5webkit/0008-Build-fails-with-libxml2-version-2.12.0-due-to-API-c.patch @@ -0,0 +1,61 @@ +From df49bfc4c93001970c9b9266903ee7e8804fb576 Mon Sep 17 00:00:00 2001 +From: Adrian Perez de Castro +Date: Mon, 20 Nov 2023 07:42:30 -0800 +Subject: [PATCH] Build fails with libxml2 version 2.12.0 due to API change + https://bugs.webkit.org/show_bug.cgi?id=265128 + +Reviewed by Philippe Normand. + +Starting with libxml2 2.12.0, the API has changed the const-ness of the +xmlError pointers, which results in a build error due to a mismatched +type in the parsing error callback. This papers over the difference by +using preprocessor conditionals. + +* Source/WebCore/xml/XSLTProcessor.h: Use const when building against + libxml2 2.12.0 or newer. +* Source/WebCore/xml/XSLTProcessorLibxslt.cpp: +(WebCore::XSLTProcessor::parseErrorFunc): Ditto. + +Canonical link: https://commits.webkit.org/270977@main +Upstream: https://github.com/WebKit/WebKit/commit/1bad176b2496579d760852c80cff3ad9fb7c3a4b +Signed-off-by: Alexis Lothoré +--- + Source/WebCore/xml/XSLTProcessor.h | 4 ++++ + Source/WebCore/xml/XSLTProcessorLibxslt.cpp | 4 ++++ + 2 files changed, 8 insertions(+) + +diff --git a/Source/WebCore/xml/XSLTProcessor.h b/Source/WebCore/xml/XSLTProcessor.h +index 21bb45b5cbe1..5cf20557918f 100644 +--- a/Source/WebCore/xml/XSLTProcessor.h ++++ b/Source/WebCore/xml/XSLTProcessor.h +@@ -61,7 +61,11 @@ public: + + void reset(); + ++#if LIBXML_VERSION >= 21200 ++ static void parseErrorFunc(void* userData, const xmlError*); ++#else + static void parseErrorFunc(void* userData, xmlError*); ++#endif + static void genericErrorFunc(void* userData, const char* msg, ...); + + // Only for libXSLT callbacks +diff --git a/Source/WebCore/xml/XSLTProcessorLibxslt.cpp b/Source/WebCore/xml/XSLTProcessorLibxslt.cpp +index a65691087e3c..9f6b363dfc6c 100644 +--- a/Source/WebCore/xml/XSLTProcessorLibxslt.cpp ++++ b/Source/WebCore/xml/XSLTProcessorLibxslt.cpp +@@ -59,7 +59,11 @@ void XSLTProcessor::genericErrorFunc(void*, const char*, ...) + // It would be nice to do something with this error message. + } + ++#if LIBXML_VERSION >= 21200 ++void XSLTProcessor::parseErrorFunc(void* userData, const xmlError* error) ++#else + void XSLTProcessor::parseErrorFunc(void* userData, xmlError* error) ++#endif + { + PageConsoleClient* console = static_cast(userData); + if (!console) +-- +2.43.1 + diff --git a/package/qt5/qt5webkit/Config.in b/package/qt5/qt5webkit/Config.in new file mode 100644 index 00000000..9b84ac5f --- /dev/null +++ b/package/qt5/qt5webkit/Config.in @@ -0,0 +1,58 @@ +config BR2_PACKAGE_QT5WEBKIT + bool "qt5webkit" + depends on !BR2_STATIC_LIBS + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + depends on BR2_INSTALL_LIBSTDCPP # leveldb + depends on BR2_HOST_GCC_AT_LEAST_4_9 # icu, host-ruby + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # icu + depends on BR2_TOOLCHAIN_HAS_THREADS # leveldb + depends on !BR2_BINFMT_FLAT # icu + # assumes a FPU is available on MIPS + depends on !BR2_MIPS_SOFT_FLOAT + select BR2_PACKAGE_GSTREAMER1 + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_ICU + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LEVELDB + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_OPENSSL + # Only openssl is supported by qt5 + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + select BR2_PACKAGE_QT5BASE_ICU + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_WIDGETS + select BR2_PACKAGE_QT5LOCATION + select BR2_PACKAGE_QT5SENSORS + select BR2_PACKAGE_QT5WEBCHANNEL + select BR2_PACKAGE_LIBEXECINFO if !BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_LIBXSLT + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_WEBP + select BR2_PACKAGE_WEBP_DEMUX + select BR2_PACKAGE_WOFF2 + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE if BR2_PACKAGE_QT5BASE_XCB + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_QT5BASE_XCB + select BR2_PACKAGE_XLIB_LIBXRENDER if BR2_PACKAGE_QT5BASE_XCB + help + Qt is a cross-platform application and UI framework for + developers using C++. + + 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. + + https://doc.qt.io/archives/qt-5.5/qtwebkit-index.html + +comment "qt5webkit needs a toolchain w/ dynamic library, gcc >= 4.9, host gcc >= 4.9" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_HOST_GCC_AT_LEAST_4_9 + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + depends on !BR2_BINFMT_FLAT + depends on !BR2_MIPS_SOFT_FLOAT diff --git a/package/qt5/qt5webkit/qt5webkit.hash b/package/qt5/qt5webkit/qt5webkit.hash new file mode 100644 index 00000000..d7c8bd6c --- /dev/null +++ b/package/qt5/qt5webkit/qt5webkit.hash @@ -0,0 +1,7 @@ +# Locally calculated +sha256 9ca126da9273664dd23a3ccd0c9bebceb7bb534bddd743db31caf6a5a6d4a9e6 qtwebkit-5.212.0-alpha4.tar.xz + +# Hashes for license files: +sha256 7555fa34bc131a75ca56d65c40cc1ea8f9515d23e353d4c15d58573a042f7805 Source/WebCore/LICENSE-LGPL-2 +sha256 f2b3bd09663381deb99721109d22b47af1213bb43007a8b56a06c6375c8050ce Source/WebCore/LICENSE-LGPL-2.1 +sha256 a3db6c7f3027aa27489c25a2fa259185cdee945780c32e01c60cbfabf4743b6c LICENSE.LGPLv21 diff --git a/package/qt5/qt5webkit/qt5webkit.mk b/package/qt5/qt5webkit/qt5webkit.mk new file mode 100644 index 00000000..69123596 --- /dev/null +++ b/package/qt5/qt5webkit/qt5webkit.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# qt5webkit +# +################################################################################ + +QT5WEBKIT_VERSION = 5.212.0-alpha4 +QT5WEBKIT_SITE = https://github.com/qtwebkit/qtwebkit/releases/download/qtwebkit-$(QT5WEBKIT_VERSION) +QT5WEBKIT_SOURCE = qtwebkit-$(QT5WEBKIT_VERSION).tar.xz +QT5WEBKIT_DEPENDENCIES = \ + host-bison host-flex host-gperf host-python3 host-ruby gstreamer1 \ + gst1-plugins-base icu leveldb jpeg libpng libxml2 libxslt qt5location \ + openssl qt5sensors qt5webchannel sqlite webp woff2 +QT5WEBKIT_INSTALL_STAGING = YES + +QT5WEBKIT_LICENSE_FILES = Source/WebCore/LICENSE-LGPL-2 Source/WebCore/LICENSE-LGPL-2.1 + +QT5WEBKIT_LICENSE = LGPL-2.1+, BSD-3-Clause, BSD-2-Clause +# Source files contain references to LGPL_EXCEPTION.txt but it is not included +# in the archive. +QT5WEBKIT_LICENSE_FILES += LICENSE.LGPLv21 + +ifeq ($(BR2_MIPS_CPU_MIPS32R6),y) +QT5WEBKIT_CONF_OPTS += -DENABLE_JIT=OFF +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_OPENGL),y) +QT5WEBKIT_CONF_OPTS += \ + -DENABLE_OPENGL=ON \ + -DENABLE_WEBKIT2=ON +else +QT5WEBKIT_CONF_OPTS += \ + -DENABLE_OPENGL=OFF \ + -DENABLE_WEBKIT2=OFF +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_XCB),y) +QT5WEBKIT_DEPENDENCIES += xlib_libXcomposite xlib_libXext xlib_libXrender +endif + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) +QT5WEBKIT_DEPENDENCIES += qt5declarative +endif + +ifeq ($(BR2_PACKAGE_LIBEXECINFO),y) +QT5WEBKIT_DEPENDENCIES += libexecinfo +endif + +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +QT5WEBKIT_CONF_OPTS += -DENABLE_SAMPLING_PROFILER=OFF +endif + +QT5WEBKIT_CONF_OPTS += \ + -DENABLE_TOOLS=OFF \ + -DPORT=Qt \ + -DPYTHON_EXECUTABLE=$(HOST_DIR)/bin/python3 \ + -DSHARED_CORE=ON \ + -DUSE_LIBHYPHEN=OFF + +$(eval $(cmake-package)) diff --git a/package/qt5/qt5websockets/Config.in b/package/qt5/qt5websockets/Config.in new file mode 100644 index 00000000..e7bd71b2 --- /dev/null +++ b/package/qt5/qt5websockets/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_QT5WEBSOCKETS + bool "qt5websockets" + select BR2_PACKAGE_QT5BASE_NETWORK + help + Qt is a cross-platform application and UI framework for + developers using C++. + + 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. + + https://doc.qt.io/qt-5/qtwebsockets-index.html diff --git a/package/qt5/qt5websockets/qt5websockets.hash b/package/qt5/qt5websockets/qt5websockets.hash new file mode 100644 index 00000000..c7fe153f --- /dev/null +++ b/package/qt5/qt5websockets/qt5websockets.hash @@ -0,0 +1,8 @@ +# Locally calculated +sha256 00c915dc0f909d91c13aae4fb39e83e7c4bb5b8c6ad98de9f4e1e44f699cc605 qtwebsockets-dbbdc64b804f7c4d0ed92198aaab49b07fa15e7f.tar.bz2 + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 diff --git a/package/qt5/qt5websockets/qt5websockets.mk b/package/qt5/qt5websockets/qt5websockets.mk new file mode 100644 index 00000000..565894e0 --- /dev/null +++ b/package/qt5/qt5websockets/qt5websockets.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# qt5websockets +# +################################################################################ + +QT5WEBSOCKETS_VERSION = dbbdc64b804f7c4d0ed92198aaab49b07fa15e7f +QT5WEBSOCKETS_SITE = $(QT5_SITE)/qtwebsockets/-/archive/$(QT5WEBSOCKETS_VERSION) +QT5WEBSOCKETS_SOURCE = qtwebsockets-$(QT5WEBSOCKETS_VERSION).tar.bz2 +QT5WEBSOCKETS_INSTALL_STAGING = YES +QT5WEBSOCKETS_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools) +QT5WEBSOCKETS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 +QT5WEBSOCKETS_SYNC_QT_HEADERS = YES + +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +QT5WEBSOCKETS_LICENSE += , BSD-3-Clause (examples) +endif + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) +QT5WEBSOCKETS_DEPENDENCIES += qt5declarative +endif + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5webview/Config.in b/package/qt5/qt5webview/Config.in new file mode 100644 index 00000000..3a165c50 --- /dev/null +++ b/package/qt5/qt5webview/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_QT5WEBVIEW + bool "qt5webview" + depends on BR2_PACKAGE_QT5WEBENGINE + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt WebView provides a way to display web content in + a QML application without necessarily including + a full web browser stack by using native APIs where + it makes sense. + + https://doc.qt.io/qt-5/qtwebview-index.html + +comment "qt5webview needs qt5webengine module" + depends on !BR2_PACKAGE_QT5WEBENGINE diff --git a/package/qt5/qt5webview/qt5webview.hash b/package/qt5/qt5webview/qt5webview.hash new file mode 100644 index 00000000..55aedd54 --- /dev/null +++ b/package/qt5/qt5webview/qt5webview.hash @@ -0,0 +1,8 @@ +# Locally calculated +sha256 7b5bf69f3037f55a8ff7b9e153bfa5a42dcdecb322ce2749ace8f11562a0780d qtwebview-bbb1891595aba23ff3c6d137aa74442f9e54479b.tar.bz2 + +# Hashes for license files: +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL +sha256 edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253 LICENSE.GPLv2 +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 diff --git a/package/qt5/qt5webview/qt5webview.mk b/package/qt5/qt5webview/qt5webview.mk new file mode 100644 index 00000000..310bfbba --- /dev/null +++ b/package/qt5/qt5webview/qt5webview.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# qt5webview +# +################################################################################ + +QT5WEBVIEW_VERSION = bbb1891595aba23ff3c6d137aa74442f9e54479b +QT5WEBVIEW_SITE = $(QT5_SITE)/qtwebview/-/archive/$(QT5WEBVIEW_VERSION) +QT5WEBVIEW_SOURCE = qtwebview-$(QT5WEBVIEW_VERSION).tar.bz2 +QT5WEBVIEW_DEPENDENCIES = qt5webengine +QT5WEBVIEW_INSTALL_STAGING = YES +QT5WEBVIEW_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0, GFDL-1.3 (docs) +QT5WEBVIEW_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv3 LICENSE.FDL +QT5WEBVIEW_SYNC_QT_HEADERS = YES + +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +QT5WEBVIEW_LICENSE += , BSD-3-Clause (examples) +endif + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5x11extras/Config.in b/package/qt5/qt5x11extras/Config.in new file mode 100644 index 00000000..240443a3 --- /dev/null +++ b/package/qt5/qt5x11extras/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_QT5X11EXTRAS + bool "qt5x11extras" + depends on BR2_PACKAGE_QT5BASE_XCB + select BR2_PACKAGE_QT5BASE_WIDGETS + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt X11 Extras enables the Qt programmer to write + applications for the Linux/X11 platform. + + https://doc.qt.io/qt-5/qtx11extras-index.html diff --git a/package/qt5/qt5x11extras/qt5x11extras.hash b/package/qt5/qt5x11extras/qt5x11extras.hash new file mode 100644 index 00000000..a84df3f2 --- /dev/null +++ b/package/qt5/qt5x11extras/qt5x11extras.hash @@ -0,0 +1,9 @@ +# Locally calculated +sha256 85943a927c6e07a2a7b2cdf2b6006b554cd9b52271d8892f6475fe9db67d16f3 qtx11extras-6c3605fcb3b34e55951f597e06c135d97dfa6cd7.tar.bz2 + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL diff --git a/package/qt5/qt5x11extras/qt5x11extras.mk b/package/qt5/qt5x11extras/qt5x11extras.mk new file mode 100644 index 00000000..922730c4 --- /dev/null +++ b/package/qt5/qt5x11extras/qt5x11extras.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# qt5x11extras +# +################################################################################ + +QT5X11EXTRAS_VERSION = 6c3605fcb3b34e55951f597e06c135d97dfa6cd7 +QT5X11EXTRAS_SITE = $(QT5_SITE)/qtx11extras/-/archive/$(QT5X11EXTRAS_VERSION) +QT5X11EXTRAS_SOURCE = qtx11extras-$(QT5X11EXTRAS_VERSION).tar.bz2 +QT5X11EXTRAS_INSTALL_STAGING = YES +QT5X11EXTRAS_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5X11EXTRAS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL +QT5X11EXTRAS_SYNC_QT_HEADERS = YES + +$(eval $(qmake-package)) diff --git a/package/qt5/qt5xmlpatterns/Config.in b/package/qt5/qt5xmlpatterns/Config.in new file mode 100644 index 00000000..4fcf7e92 --- /dev/null +++ b/package/qt5/qt5xmlpatterns/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_QT5XMLPATTERNS + bool "qt5xmlpatterns" + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt XML Patterns module provides support for XPath, + XQuery, XSLT, and XML Schema validation. + + https://doc.qt.io/qt-5/qtxmlpatterns-index.html diff --git a/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash b/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash new file mode 100644 index 00000000..9531c02e --- /dev/null +++ b/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash @@ -0,0 +1,9 @@ +# Locally calculated +sha256 2dcac1941b2510ea6fd85fe700fead9443f737e93cc12bf9b90dc6b71ff8d844 qtxmlpatterns-087f6f35bd027f940818b1696d0aad822e034377.tar.bz2 + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL diff --git a/package/qt5/qt5xmlpatterns/qt5xmlpatterns.mk b/package/qt5/qt5xmlpatterns/qt5xmlpatterns.mk new file mode 100644 index 00000000..d346d92f --- /dev/null +++ b/package/qt5/qt5xmlpatterns/qt5xmlpatterns.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# qt5xmlpatterns +# +################################################################################ + +QT5XMLPATTERNS_VERSION = 087f6f35bd027f940818b1696d0aad822e034377 +QT5XMLPATTERNS_SITE = $(QT5_SITE)/qtxmlpatterns/-/archive/$(QT5XMLPATTERNS_VERSION) +QT5XMLPATTERNS_SOURCE = qtxmlpatterns-$(QT5XMLPATTERNS_VERSION).tar.bz2 +QT5XMLPATTERNS_INSTALL_STAGING = YES +QT5XMLPATTERNS_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5XMLPATTERNS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL +QT5XMLPATTERNS_SYNC_QT_HEADERS = YES + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) +QT5XMLPATTERNS_DEPENDENCIES += qt5declarative +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +QT5XMLPATTERNS_LICENSE += , BSD-3-Clause (examples) +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_90620),y) +QT5XMLPATTERNS_CONF_OPTS += "QMAKE_CXXFLAGS+=-O0" +endif + +$(eval $(qmake-package)) diff --git a/package/qt5cinex/0001-Fix-execution-problem-with-Qt5.3.patch b/package/qt5cinex/0001-Fix-execution-problem-with-Qt5.3.patch new file mode 100644 index 00000000..ceae8cc8 --- /dev/null +++ b/package/qt5cinex/0001-Fix-execution-problem-with-Qt5.3.patch @@ -0,0 +1,64 @@ +From 9b045ee7988daf3bb4c7cbe1ed1b9d744820e82b Mon Sep 17 00:00:00 2001 +From: Pierre Le Magourou +Date: Mon, 15 Dec 2014 11:54:51 +0100 +Subject: [PATCH] Fix execution problem with Qt5.3. + +This patch has been inspired from Open Embedded meta-qt5. + +Signed-off-by: Pierre Le Magourou +--- + content/SettingsView.qml | 4 ++-- + content/Switch.qml | 8 ++++---- + 2 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/content/SettingsView.qml b/content/SettingsView.qml +index 7944803..a0ddcc8 100644 +--- a/content/SettingsView.qml ++++ b/content/SettingsView.qml +@@ -127,8 +127,8 @@ Item { + Switch { + text: "Do you l-o-v-e colors?" + checked: settings.showColors +- onText: "Yes" +- offText: "No!" ++ textON: "Yes" ++ textOFF: "No!" + onCheckedChanged: { + settings.showColors = checked; + } +diff --git a/content/Switch.qml b/content/Switch.qml +index 967c03f..66955fc 100644 +--- a/content/Switch.qml ++++ b/content/Switch.qml +@@ -6,8 +6,8 @@ Item { + + property alias text: textItem.text + property bool checked: false +- property string onText: "On" +- property string offText: "Off" ++ property string textON: "On" ++ property string textOFF: "Off" + + QtObject { + id: priv +@@ -120,7 +120,7 @@ Item { + color: "#000000" + font.pixelSize: 18 + font.bold: true +- text: onText ++ text: textON + } + Text { + anchors.verticalCenter: parent.verticalCenter +@@ -129,7 +129,7 @@ Item { + color: "#ffffff" + font.pixelSize: 18 + font.bold: true +- text: offText ++ text: textOFF + } + + Image { +-- +2.1.3 + diff --git a/package/qt5cinex/CinematicExperience-demo b/package/qt5cinex/CinematicExperience-demo new file mode 100755 index 00000000..919958fa --- /dev/null +++ b/package/qt5cinex/CinematicExperience-demo @@ -0,0 +1,2 @@ +#!/bin/sh +exec /usr/share/Qt5/CinematicExperience/Qt5_CinematicExperience "$@" diff --git a/package/qt5cinex/Config.in b/package/qt5cinex/Config.in new file mode 100644 index 00000000..8dbf4842 --- /dev/null +++ b/package/qt5cinex/Config.in @@ -0,0 +1,34 @@ +comment "qt5cinex needs an Open(E)GL-capable backend" + depends on BR2_PACKAGE_QT5 + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + depends on !BR2_PACKAGE_QT5_GL_AVAILABLE || !BR2_PACKAGE_HAS_LIBEGL + +config BR2_PACKAGE_QT5CINEX + bool "qt5cinex" + depends on BR2_PACKAGE_QT5 + depends on BR2_PACKAGE_HAS_LIBEGL # qt5base-eglfs + depends on BR2_PACKAGE_QT5_GL_AVAILABLE + # No comment needed for this option, it's an architecture + # dependency. + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + select BR2_PACKAGE_QT5BASE_NETWORK + select BR2_PACKAGE_QT5BASE_PNG + select BR2_PACKAGE_QT5BASE_WIDGETS + select BR2_PACKAGE_QT5BASE_EGLFS + select BR2_PACKAGE_QT5GRAPHICALEFFECTS + help + This application demonstrates the power of Qt5 and few of + the new additions available in QtQuick 2.0. + + http://quitcoding.com/?page=work#cinex + +if BR2_PACKAGE_QT5CINEX + +config BR2_PACKAGE_QT5CINEX_HD + bool "High-definition version (aka RPi Edition)" + help + High definition version (1920x1080 resolution) of the + application, optimised for Raspberry PI cards. This version + can also be run on any platform supported by Qt5. + +endif diff --git a/package/qt5cinex/qt5cinex.hash b/package/qt5cinex/qt5cinex.hash new file mode 100644 index 00000000..ac62ee22 --- /dev/null +++ b/package/qt5cinex/qt5cinex.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 0dd602983ced5f7c0cfd5ad0fbfe2b0b7e3c9ff715e4ef23eef818ccc2b6c60b Qt5_CinematicExperience_rpi_1.0.tgz +sha256 0e547e0259667915a24e84ade5efdcd0c553f81786734452c2c8dbce19a19f44 Qt5_CinematicExperience_1.0.tgz +sha256 bf6206061bcffb43c82999b8845360f223ac5cb4f574219fe95543ffd6755614 README diff --git a/package/qt5cinex/qt5cinex.mk b/package/qt5cinex/qt5cinex.mk new file mode 100644 index 00000000..70038028 --- /dev/null +++ b/package/qt5cinex/qt5cinex.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# qt5cinex +# +################################################################################ + +QT5CINEX_VERSION = 1.0 +QT5CINEX_SITE = http://quitcoding.com/download + +ifeq ($(BR2_PACKAGE_QT5CINEX_HD),y) +QT5CINEX_HD = rpi_ +endif + +QT5CINEX_SOURCE = Qt5_CinematicExperience_$(QT5CINEX_HD)$(QT5CINEX_VERSION).tgz +QT5CINEX_DEPENDENCIES = qt5declarative + +QT5CINEX_LICENSE = CC-BY-3.0 +QT5CINEX_LICENSE_FILES = README + +# In addition to the Cinematic Experience itself, we also install a +# wrapper shell script to /usr/bin: the Cinematic Experience binary +# wants its resource files to be available directly under a contents/ +# sub-directory, which isn't very practical to install in /usr/bin/. +define QT5CINEX_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/Qt5_CinematicExperience \ + $(TARGET_DIR)/usr/share/Qt5/CinematicExperience/Qt5_CinematicExperience + $(INSTALL) -D -m 0664 $(@D)/Qt5_CinematicExperience.qml \ + $(TARGET_DIR)/usr/share/Qt5/CinematicExperience/Qt5_CinematicExperience.qml + cp -dpfr $(@D)/content $(TARGET_DIR)/usr/share/Qt5/CinematicExperience/content + $(INSTALL) -m 0755 -D package/qt5cinex/CinematicExperience-demo \ + $(TARGET_DIR)/usr/bin/CinematicExperience-demo +endef + +$(eval $(qmake-package)) diff --git a/package/qt6/Config.in b/package/qt6/Config.in new file mode 100644 index 00000000..29c1c25c --- /dev/null +++ b/package/qt6/Config.in @@ -0,0 +1,61 @@ +# based on src/corelib/global/qprocessordetection.h +config BR2_PACKAGE_QT6_ARCH_SUPPORTS + bool + # no support for ARMv4 + default y if BR2_ARM_CPU_ARMV5 || BR2_ARM_CPU_ARMV6 || BR2_ARM_CPU_ARMV7A || BR2_ARM_CPU_ARMV8A + default y if BR2_i386 + default y if BR2_x86_64 + default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + # sparc 32-bit is supposedly supported, but has issues due to + # the need of libatomic + default y if BR2_sparc64 + depends on BR2_USE_MMU + +config BR2_PACKAGE_QT6_GL_SUPPORTS + bool + default y + depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES + +comment "qt6 needs a toolchain w/ C++, threads, wchar, dynamic library, gcc >= 8, host gcc >= 8" + depends on !BR2_PACKAGE_QT5 + depends on BR2_PACKAGE_QT6_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_8 || \ + !BR2_HOST_GCC_AT_LEAST_8 || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS || !BR2_USE_WCHAR + +menuconfig BR2_PACKAGE_QT6 + bool "Qt6" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 + depends on BR2_HOST_GCC_AT_LEAST_8 + depends on BR2_PACKAGE_QT6_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR + depends on !BR2_PACKAGE_QT5 + select BR2_PACKAGE_QT6BASE + help + This option enables the Qt6 framework. Sub-options allow to + select which modules should be built. + + http://qt.io + +if BR2_PACKAGE_QT6 + +source "package/qt6/qt6base/Config.in" +source "package/qt6/qt6core5compat/Config.in" +source "package/qt6/qt6declarative/Config.in" +source "package/qt6/qt6languageserver/Config.in" +source "package/qt6/qt6mqtt/Config.in" +source "package/qt6/qt6opcua/Config.in" +source "package/qt6/qt6serialbus/Config.in" +source "package/qt6/qt6serialport/Config.in" +source "package/qt6/qt6shadertools/Config.in" +source "package/qt6/qt6svg/Config.in" +source "package/qt6/qt6tools/Config.in" +source "package/qt6/qt6virtualkeyboard/Config.in" +source "package/qt6/qt6wayland/Config.in" +source "package/qt6/qt6websockets/Config.in" + +endif diff --git a/package/qt6/Config.in.host b/package/qt6/Config.in.host new file mode 100644 index 00000000..dfe7865c --- /dev/null +++ b/package/qt6/Config.in.host @@ -0,0 +1,5 @@ +if BR2_PACKAGE_QT6 + +source "package/qt6/qt6base/Config.in.host" + +endif diff --git a/package/qt6/qt6.mk b/package/qt6/qt6.mk new file mode 100644 index 00000000..f2e0186f --- /dev/null +++ b/package/qt6/qt6.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# qt6 +# +################################################################################ + +QT6_VERSION_MAJOR = 6.7 +QT6_VERSION = $(QT6_VERSION_MAJOR).2 +QT6_SOURCE_TARBALL_PREFIX = everywhere-src +QT6_SITE = https://download.qt.io/archive/qt/$(QT6_VERSION_MAJOR)/$(QT6_VERSION)/submodules + +QT6_GIT = git://code.qt.io + +include $(sort $(wildcard package/qt6/*/*.mk)) diff --git a/package/qt6/qt6base/0001-fix-CVE-2024-39936.patch b/package/qt6/qt6base/0001-fix-CVE-2024-39936.patch new file mode 100644 index 00000000..a6778ce1 --- /dev/null +++ b/package/qt6/qt6base/0001-fix-CVE-2024-39936.patch @@ -0,0 +1,247 @@ +From fc1b8814f38c7d925d4590e9bdb16a02ca824025 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= +Date: Tue, 25 Jun 2024 17:09:35 +0200 +Subject: [PATCH] HTTP2: Delay any communication until encrypted() can be + responded to + +We have the encrypted() signal that lets users do extra checks on the +established connection. It is emitted as BlockingQueued, so the HTTP +thread stalls until it is done emitting. Users can potentially call +abort() on the QNetworkReply at that point, which is passed as a Queued +call back to the HTTP thread. That means that any currently queued +signal emission will be processed before the abort() call is processed. + +In the case of HTTP2 it is a little special since it is multiplexed and +the code is built to start requests as they are available. This means +that, while the code worked fine for HTTP1, since one connection only +has one request, it is not working for HTTP2, since we try to send more +requests in-between the encrypted() signal and the abort() call. + +This patch changes the code to delay any communication until the +encrypted() signal has been emitted and processed, for HTTP2 only. +It's done by adding a few booleans, both to know that we have to return +early and so we can keep track of what events arose and what we need to +resume once enough time has passed that any abort() call must have been +processed. + +Fixes: QTBUG-126610 +Pick-to: 6.5 6.2 5.15 5.12 +Change-Id: Ic25a600c278203256e35f541026f34a8783235ae +Reviewed-by: Marc Mutz +Reviewed-by: Volker Hilsheimer +(cherry picked from commit b1e75376cc3adfc7da5502a277dfe9711f3e0536) +Reviewed-by: Qt Cherry-pick Bot +(cherry picked from commit 0fb43e4395da34d561814242a0186999e4956e28) + +Upstream: https://github.com/qt/qtbase/commit/2b1e36e183ce75c224305c7a94457b92f7a5cf58 +Signed-off-by: Roy Kollen Svendsen +--- + src/network/access/qhttp2protocolhandler.cpp | 6 +-- + .../access/qhttpnetworkconnectionchannel.cpp | 48 ++++++++++++++++++- + .../access/qhttpnetworkconnectionchannel_p.h | 6 +++ + tests/auto/network/access/http2/tst_http2.cpp | 44 +++++++++++++++++ + 4 files changed, 99 insertions(+), 5 deletions(-) + +diff --git a/src/network/access/qhttp2protocolhandler.cpp b/src/network/access/qhttp2protocolhandler.cpp +index 0abd99b9bc..3631b13dc8 100644 +--- a/src/network/access/qhttp2protocolhandler.cpp ++++ b/src/network/access/qhttp2protocolhandler.cpp +@@ -303,12 +303,12 @@ bool QHttp2ProtocolHandler::sendRequest() + } + } + +- if (!prefaceSent && !sendClientPreface()) +- return false; +- + if (!requests.size()) + return true; + ++ if (!prefaceSent && !sendClientPreface()) ++ return false; ++ + m_channel->state = QHttpNetworkConnectionChannel::WritingState; + // Check what was promised/pushed, maybe we do not have to send a request + // and have a response already? +diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp +index 6766989690..1e4161d1fd 100644 +--- a/src/network/access/qhttpnetworkconnectionchannel.cpp ++++ b/src/network/access/qhttpnetworkconnectionchannel.cpp +@@ -209,6 +209,10 @@ void QHttpNetworkConnectionChannel::abort() + bool QHttpNetworkConnectionChannel::sendRequest() + { + Q_ASSERT(protocolHandler); ++ if (waitingForPotentialAbort) { ++ needInvokeSendRequest = true; ++ return false; // this return value is unused ++ } + return protocolHandler->sendRequest(); + } + +@@ -221,21 +225,28 @@ bool QHttpNetworkConnectionChannel::sendRequest() + void QHttpNetworkConnectionChannel::sendRequestDelayed() + { + QMetaObject::invokeMethod(this, [this] { +- Q_ASSERT(protocolHandler); + if (reply) +- protocolHandler->sendRequest(); ++ sendRequest(); + }, Qt::ConnectionType::QueuedConnection); + } + + void QHttpNetworkConnectionChannel::_q_receiveReply() + { + Q_ASSERT(protocolHandler); ++ if (waitingForPotentialAbort) { ++ needInvokeReceiveReply = true; ++ return; ++ } + protocolHandler->_q_receiveReply(); + } + + void QHttpNetworkConnectionChannel::_q_readyRead() + { + Q_ASSERT(protocolHandler); ++ if (waitingForPotentialAbort) { ++ needInvokeReadyRead = true; ++ return; ++ } + protocolHandler->_q_readyRead(); + } + +@@ -1239,7 +1250,18 @@ void QHttpNetworkConnectionChannel::_q_encrypted() + if (!h2RequestsToSend.isEmpty()) { + // Similar to HTTP/1.1 counterpart below: + const auto &pair = std::as_const(h2RequestsToSend).first(); ++ waitingForPotentialAbort = true; + emit pair.second->encrypted(); ++ ++ // We don't send or handle any received data until any effects from ++ // emitting encrypted() have been processed. This is necessary ++ // because the user may have called abort(). We may also abort the ++ // whole connection if the request has been aborted and there is ++ // no more requests to send. ++ QMetaObject::invokeMethod(this, ++ &QHttpNetworkConnectionChannel::checkAndResumeCommunication, ++ Qt::QueuedConnection); ++ + // In case our peer has sent us its settings (window size, max concurrent streams etc.) + // let's give _q_receiveReply a chance to read them first ('invokeMethod', QueuedConnection). + } +@@ -1257,6 +1279,28 @@ void QHttpNetworkConnectionChannel::_q_encrypted() + QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection); + } + ++ ++void QHttpNetworkConnectionChannel::checkAndResumeCommunication() ++{ ++ Q_ASSERT(connection->connectionType() == QHttpNetworkConnection::ConnectionTypeHTTP2 ++ || connection->connectionType() == QHttpNetworkConnection::ConnectionTypeHTTP2Direct); ++ ++ // Because HTTP/2 requires that we send a SETTINGS frame as the first thing we do, and respond ++ // to a SETTINGS frame with an ACK, we need to delay any handling until we can ensure that any ++ // effects from emitting encrypted() have been processed. ++ // This function is called after encrypted() was emitted, so check for changes. ++ ++ if (!reply && h2RequestsToSend.isEmpty()) ++ abort(); ++ waitingForPotentialAbort = false; ++ if (needInvokeReadyRead) ++ _q_readyRead(); ++ if (needInvokeReceiveReply) ++ _q_receiveReply(); ++ if (needInvokeSendRequest) ++ sendRequest(); ++} ++ + void QHttpNetworkConnectionChannel::requeueHttp2Requests() + { + const auto h2RequestsToSendCopy = std::exchange(h2RequestsToSend, {}); +diff --git a/src/network/access/qhttpnetworkconnectionchannel_p.h b/src/network/access/qhttpnetworkconnectionchannel_p.h +index c42290feca..061f20fd42 100644 +--- a/src/network/access/qhttpnetworkconnectionchannel_p.h ++++ b/src/network/access/qhttpnetworkconnectionchannel_p.h +@@ -74,6 +74,10 @@ public: + QAbstractSocket *socket; + bool ssl; + bool isInitialized; ++ bool waitingForPotentialAbort = false; ++ bool needInvokeReceiveReply = false; ++ bool needInvokeReadyRead = false; ++ bool needInvokeSendRequest = false; + ChannelState state; + QHttpNetworkRequest request; // current request, only used for HTTP + QHttpNetworkReply *reply; // current reply for this request, only used for HTTP +@@ -146,6 +150,8 @@ public: + void closeAndResendCurrentRequest(); + void resendCurrentRequest(); + ++ void checkAndResumeCommunication(); ++ + bool isSocketBusy() const; + bool isSocketWriting() const; + bool isSocketWaiting() const; +diff --git a/tests/auto/network/access/http2/tst_http2.cpp b/tests/auto/network/access/http2/tst_http2.cpp +index 00efbc9832..c02e7b7b5b 100644 +--- a/tests/auto/network/access/http2/tst_http2.cpp ++++ b/tests/auto/network/access/http2/tst_http2.cpp +@@ -106,6 +106,8 @@ private slots: + + void duplicateRequestsWithAborts(); + ++ void abortOnEncrypted(); ++ + protected slots: + // Slots to listen to our in-process server: + void serverStarted(quint16 port); +@@ -1479,6 +1481,48 @@ void tst_Http2::duplicateRequestsWithAborts() + QCOMPARE(finishedCount, ExpectedSuccessfulRequests); + } + ++void tst_Http2::abortOnEncrypted() ++{ ++#if !QT_CONFIG(ssl) ++ QSKIP("TLS support is needed for this test"); ++#else ++ clearHTTP2State(); ++ serverPort = 0; ++ ++ ServerPtr targetServer(newServer(defaultServerSettings, H2Type::h2Direct)); ++ ++ QMetaObject::invokeMethod(targetServer.data(), "startServer", Qt::QueuedConnection); ++ runEventLoop(); ++ ++ nRequests = 1; ++ nSentRequests = 0; ++ ++ const auto url = requestUrl(H2Type::h2Direct); ++ QNetworkRequest request(url); ++ request.setAttribute(QNetworkRequest::Http2DirectAttribute, true); ++ ++ std::unique_ptr reply{manager->get(request)}; ++ reply->ignoreSslErrors(); ++ connect(reply.get(), &QNetworkReply::encrypted, reply.get(), [reply = reply.get()](){ ++ reply->abort(); ++ }); ++ connect(reply.get(), &QNetworkReply::errorOccurred, this, &tst_Http2::replyFinishedWithError); ++ ++ runEventLoop(); ++ STOP_ON_FAILURE ++ ++ QCOMPARE(nRequests, 0); ++ QCOMPARE(reply->error(), QNetworkReply::OperationCanceledError); ++ ++ const bool res = QTest::qWaitFor( ++ [this, server = targetServer.get()]() { ++ return serverGotSettingsACK || prefaceOK || nSentRequests > 0; ++ }, ++ 500); ++ QVERIFY(!res); ++#endif // QT_CONFIG(ssl) ++} ++ + void tst_Http2::serverStarted(quint16 port) + { + serverPort = port; +-- +2.46.0 + diff --git a/package/qt6/qt6base/Config.in b/package/qt6/qt6base/Config.in new file mode 100644 index 00000000..3b15d40c --- /dev/null +++ b/package/qt6/qt6base/Config.in @@ -0,0 +1,249 @@ +config BR2_PACKAGE_QT6BASE + bool "qt6base" + select BR2_PACKAGE_DOUBLE_CONVERSION + select BR2_PACKAGE_LIBB2 + select BR2_PACKAGE_PCRE2 + select BR2_PACKAGE_PCRE2_16 + select BR2_PACKAGE_ZLIB + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6base module, which + contains the base Qt libraries: QtCore, QtNetwork, QtGui, + QtWidgets, etc. + + http://qt.io + +if BR2_PACKAGE_QT6BASE + +config BR2_PACKAGE_QT6BASE_CONCURRENT + bool "concurrent module" + help + This options enables the Qt6Concurrent library. + +config BR2_PACKAGE_QT6BASE_DBUS + bool "DBus module" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU + select BR2_PACKAGE_DBUS + help + This option enables the D-Bus module. + +config BR2_PACKAGE_QT6BASE_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_QT6BASE_LINUXFB if \ + !BR2_PACKAGE_QT6BASE_XCB && \ + !BR2_PACKAGE_QT6BASE_EGLFS + help + This option enables the Qt6Gui library. + +if BR2_PACKAGE_QT6BASE_GUI + +config BR2_PACKAGE_QT6BASE_VULKAN + bool "Vulkan support" + depends on BR2_INSTALL_LIBSTDCPP # vulkan-loader + depends on !BR2_STATIC_LIBS # vulkan-loader + depends on BR2_TOOLCHAIN_HAS_THREADS # vulkan-loader + select BR2_PACKAGE_VULKAN_HEADERS + select BR2_PACKAGE_VULKAN_LOADER + help + This option enables Vulkan support. + +config BR2_PACKAGE_QT6BASE_LINUXFB + bool "linuxfb support" + +config BR2_PACKAGE_QT6BASE_XCB + bool "X.org XCB support" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_LIBXCB + select BR2_PACKAGE_XCB_UTIL_IMAGE + select BR2_PACKAGE_XCB_UTIL_KEYSYMS + select BR2_PACKAGE_XCB_UTIL_RENDERUTIL + select BR2_PACKAGE_XCB_UTIL_WM + select BR2_PACKAGE_LIBXKBCOMMON + +comment "X.org XCB backend available if X.org is enabled" + depends on !BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_QT6BASE_EGLFS + bool "eglfs support" + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_HAS_LIBGBM + depends on BR2_PACKAGE_QT6_GL_SUPPORTS + select BR2_PACKAGE_QT6BASE_OPENGL + +config BR2_PACKAGE_QT6BASE_DEFAULT_QPA + string "Default graphical platform" + help + Choose the default platform abstraction to use for graphical + applications (e.g xcb, linuxfb, eglfs, ...). If this is + empty, the default for your architecture will be used + (usually this is eglfs). + + You can get a list of supported platforms by running a Qt + application with the option "-platform help" on your + target. You can choose a different platform at runtime with + the -platform option. + +config BR2_PACKAGE_QT6BASE_OPENGL + bool "OpenGL support" + depends on BR2_PACKAGE_QT6_GL_SUPPORTS + help + This option enables OpenGL support. + +comment "OpenGL support needs an OpenGL-capable backend" + depends on !BR2_PACKAGE_QT6_GL_SUPPORTS + +if BR2_PACKAGE_QT6BASE_OPENGL + +choice + prompt "OpenGL API" + help + Select OpenGL API. + +config BR2_PACKAGE_QT6BASE_OPENGL_DESKTOP + bool "Desktop OpenGL" + depends on BR2_PACKAGE_HAS_LIBGL + help + Use desktop OpenGL. + +config BR2_PACKAGE_QT6BASE_OPENGL_ES2 + bool "OpenGL ES 2.0+" + depends on BR2_PACKAGE_HAS_LIBGLES + help + Use OpenGL ES 2.0 and later versions. + +endchoice + +endif + +config BR2_PACKAGE_QT6BASE_FONTCONFIG + bool "fontconfig support" + select BR2_PACKAGE_FONTCONFIG + help + This option enables Fontconfig support using the system + fontconfig library. + +config BR2_PACKAGE_QT6BASE_HARFBUZZ + bool "harfbuzz support" + select BR2_PACKAGE_HARFBUZZ if \ + BR2_TOOLCHAIN_HAS_SYNC_4 && \ + BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + help + This option enables HarfBuzz support (either system harfbuzz + if the toolchain supports __sync for 4 bytes, or the qt + provided one which avoids this dependency by using QAtomic). + +config BR2_PACKAGE_QT6BASE_GIF + bool "GIF support" + help + This compiles and installs the plugin for GIF reading support. + +config BR2_PACKAGE_QT6BASE_JPEG + bool "JPEG support" + select BR2_PACKAGE_JPEG + help + This option enables JPEG support using the system libjpeg + library. + +config BR2_PACKAGE_QT6BASE_PNG + bool "PNG support" + select BR2_PACKAGE_LIBPNG + help + This option enables PNG support using the system libpng + library. + +config BR2_PACKAGE_QT6BASE_WIDGETS + bool "widgets module" + help + This option enables the Qt6Widgets library. + +config BR2_PACKAGE_QT6BASE_PRINTSUPPORT + bool "printing support" + # yes, print support needs widgets + depends on BR2_PACKAGE_QT6BASE_WIDGETS + help + This option enables printing support, optionally using CUPS + if available. + +endif + +config BR2_PACKAGE_QT6BASE_NETWORK + bool "network module" + select BR2_PACKAGE_LIBOPENSSL_ENABLE_PSK if BR2_PACKAGE_LIBOPENSSL + help + This options enables the Qt6Network library. + +config BR2_PACKAGE_QT6BASE_SQL + bool "sql module" + help + This options enables the Qt6Sql library. + +if BR2_PACKAGE_QT6BASE_SQL +config BR2_PACKAGE_QT6BASE_MYSQL + bool "MySQL Plugin" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_MARIADB + help + Build MySQL plugin + +comment "MySQL plugin needs a toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_QT6BASE_PSQL + bool "PostgreSQL Plugin" + depends on BR2_USE_MMU + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR + depends on !BR2_OPTIMIZE_FAST + select BR2_PACKAGE_POSTGRESQL + help + Build PostgreSQL plugin + +comment "PostgreSQL plugin needs a toolchain w/ wchar, dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR + +comment "PostgreSQL plugin can't be built with optimize for fast" + depends on BR2_USE_MMU + depends on BR2_OPTIMIZE_FAST + +config BR2_PACKAGE_QT6BASE_SQLITE + bool "SQLite plugin" + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_SQLITE_ENABLE_COLUMN_METADATA + help + Build SQLite plugin + +endif + +config BR2_PACKAGE_QT6BASE_SYSLOG + bool "syslog support" + help + Logs to the standard UNIX logging mechanism. + +config BR2_PACKAGE_QT6BASE_TEST + bool "test module" + help + This options enables the Qt6Test library. + +config BR2_PACKAGE_QT6BASE_TSLIB + bool "Enable Tslib support" + select BR2_PACKAGE_TSLIB + help + This options enables the Tslib plugin + +config BR2_PACKAGE_QT6BASE_XML + bool "XML module" + help + This options enables the Qt6Xml library. + +endif diff --git a/package/qt6/qt6base/Config.in.host b/package/qt6/qt6base/Config.in.host new file mode 100644 index 00000000..46fb6688 --- /dev/null +++ b/package/qt6/qt6base/Config.in.host @@ -0,0 +1,19 @@ +# Select this if you need host qt6 tools that require the Qt::Gui module (e.g. +# Qt Shader Baker(qsb)). +config BR2_PACKAGE_HOST_QT6BASE_GUI + bool + +# Select this if you need host qt6 tools that require the Qt::Network module +# (e.g. Qt Tools). +config BR2_PACKAGE_HOST_QT6BASE_NETWORK + bool + +# Select this if you need host qt6 tools that require the Qt::Test module +# (e.g. qmltestrunner). +config BR2_PACKAGE_HOST_QT6BASE_TEST + bool + +# Select this if you need host qt6 tools that require the Qt::Sql module +# (e.g. qhelpgenerator). +config BR2_PACKAGE_HOST_QT6BASE_SQL + bool diff --git a/package/qt6/qt6base/qt6base.hash b/package/qt6/qt6base/qt6base.hash new file mode 100644 index 00000000..b1b81b49 --- /dev/null +++ b/package/qt6/qt6base/qt6base.hash @@ -0,0 +1,14 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.2/submodules/qtbase-everywhere-src-6.7.2.tar.xz.sha256 +sha256 c5f22a5e10fb162895ded7de0963328e7307611c688487b5d152c9ee64767599 qtbase-everywhere-src-6.7.2.tar.xz + +# Hashes for license files +sha256 e3ba223bb1423f0aad8c3dfce0fe3148db48926d41e6fbc3afbbf5ff9e1c89cb LICENSES/Apache-2.0.txt +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 3abd6471b9a9a08d65ce771143f8e278bb4c1aeb10c1c2d476935a6b049653f5 LICENSES/BSL-1.0.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 d040359701c01996a017d5c515678929cd1b0625e64cb86db44025fbb6cdf1fc LICENSES/MIT.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt +sha256 2a886915de4f296cdae5ed67064f86dba01d0c55286d86e8487f2a5caaf40216 src/3rdparty/harfbuzz-ng/COPYING diff --git a/package/qt6/qt6base/qt6base.mk b/package/qt6/qt6base/qt6base.mk new file mode 100644 index 00000000..4c0392f9 --- /dev/null +++ b/package/qt6/qt6base/qt6base.mk @@ -0,0 +1,434 @@ +################################################################################ +# +# qt6base +# +################################################################################ + +QT6BASE_VERSION = $(QT6_VERSION) +QT6BASE_SITE = $(QT6_SITE) +QT6BASE_SOURCE = qtbase-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6BASE_VERSION).tar.xz +QT6BASE_CPE_ID_VENDOR = qt +QT6BASE_CPE_ID_PRODUCT = qt + +# 0001-fix-CVE-2024-39936.patch +QT6BASE_IGNORE_CVES += CVE-2024-39936 + +QT6BASE_CMAKE_BACKEND = ninja + +QT6BASE_LICENSE = \ + GPL-2.0+ or LGPL-3.0, \ + GPL-3.0 with exception (tools), \ + GFDL-1.3 (docs), \ + Apache-2.0, \ + BSD-3-Clause, \ + BSL-1.0, \ + MIT + +QT6BASE_LICENSE_FILES = \ + LICENSES/Apache-2.0.txt \ + LICENSES/BSD-3-Clause.txt \ + LICENSES/BSL-1.0.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/MIT.txt \ + LICENSES/Qt-GPL-exception-1.0.txt + +QT6BASE_DEPENDENCIES = \ + host-qt6base \ + double-conversion \ + libb2 \ + pcre2 \ + zlib +QT6BASE_INSTALL_STAGING = YES + +QT6BASE_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DINSTALL_ARCHDATADIR=lib/qt6 \ + -DFEATURE_concurrent=OFF \ + -DFEATURE_xml=OFF \ + -DFEATURE_sql=OFF \ + -DFEATURE_testlib=OFF \ + -DFEATURE_network=OFF \ + -DFEATURE_dbus=OFF \ + -DFEATURE_icu=OFF \ + -DFEATURE_glib=OFF \ + -DFEATURE_system_doubleconversion=ON \ + -DFEATURE_system_pcre2=ON \ + -DFEATURE_system_zlib=ON \ + -DFEATURE_system_libb2=ON + +# x86 optimization options. While we have a BR2_X86_CPU_HAS_AVX512, it +# is not clear yet how it maps to all the avx512* options of Qt, so we +# for now keeps them disabled. +QT6BASE_CONF_OPTS += \ + -DFEATURE_sse2=$(if $(BR2_X86_CPU_HAS_SSE2),ON,OFF) \ + -DFEATURE_sse3=$(if $(BR2_X86_CPU_HAS_SSE3),ON,OFF) \ + -DFEATURE_sse4_1=$(if $(BR2_X86_CPU_HAS_SSE4),ON,OFF) \ + -DFEATURE_sse4_2=$(if $(BR2_X86_CPU_HAS_SSE42),ON,OFF) \ + -DFEATURE_ssse3=$(if $(BR2_X86_CPU_HAS_SSSE3),ON,OFF) \ + -DFEATURE_avx=$(if $(BR2_X86_CPU_HAS_AVX),ON,OFF) \ + -DFEATURE_avx2=$(if $(BR2_X86_CPU_HAS_AVX2),ON,OFF) \ + -DFEATURE_avx512bw=OFF \ + -DFEATURE_avx512cd=OFF \ + -DFEATURE_avx512dq=OFF \ + -DFEATURE_avx512er=OFF \ + -DFEATURE_avx512f=OFF \ + -DFEATURE_avx512ifma=OFF \ + -DFEATURE_avx512pf=OFF \ + -DFEATURE_avx512vbmi=OFF \ + -DFEATURE_avx512vbmi2=OFF \ + -DFEATURE_avx512vl=OFF \ + -DFEATURE_vaes=OFF + +HOST_QT6BASE_DEPENDENCIES = \ + host-double-conversion \ + host-libb2 \ + host-pcre2 \ + host-zlib +HOST_QT6BASE_CONF_OPTS = \ + -DFEATURE_concurrent=OFF \ + -DFEATURE_xml=ON \ + -DFEATURE_dbus=OFF \ + -DFEATURE_icu=OFF \ + -DFEATURE_glib=OFF \ + -DFEATURE_system_doubleconversion=ON \ + -DFEATURE_system_libb2=ON \ + -DFEATURE_system_pcre2=ON \ + -DFEATURE_system_zlib=ON + +# We need host-qt6base with Gui support when building host-qt6shadertools, +# otherwise the build is skipped and no qsb host tool is generated. +# qt6shadertools fail to build if qsb is not available. +ifeq ($(BR2_PACKAGE_HOST_QT6BASE_GUI),y) +HOST_QT6BASE_CONF_OPTS += \ + -DFEATURE_gui=ON \ + -DFEATURE_freetype=OFF \ + -DFEATURE_vulkan=OFF \ + -DFEATURE_linuxfb=ON \ + -DFEATURE_xcb=OFF \ + -DFEATURE_opengl=OFF -DINPUT_opengl=no \ + -DFEATURE_harfbuzz=OFF \ + -DFEATURE_png=OFF \ + -DFEATURE_gif=OFF \ + -DFEATURE_jpeg=OFF \ + -DFEATURE_printsupport=OFF \ + -DFEATURE_kms=OFF \ + -DFEATURE_fontconfig=OFF \ + -DFEATURE_widgets=OFF \ + -DFEATURE_libinput=OFF \ + -DFEATURE_tslib=OFF \ + -DFEATURE_eglfs=OFF +else +HOST_QT6BASE_CONF_OPTS += -DFEATURE_gui=OFF +endif + +# The Network module is explicitly required by qt6tools. +ifeq ($(BR2_PACKAGE_HOST_QT6BASE_NETWORK),y) +HOST_QT6BASE_CONF_OPTS += -DFEATURE_network=ON +else +HOST_QT6BASE_CONF_OPTS += -DFEATURE_network=OFF +endif + +# We need host qt6base with Sql support for host-qt6tools to generate the +# qhelpgenerator host tool. qt6tools will fail to build if qhelpgenerator is not +# available. +ifeq ($(BR2_PACKAGE_HOST_QT6BASE_SQL),y) +HOST_QT6BASE_CONF_OPTS += -DFEATURE_sql=ON +else +HOST_QT6BASE_CONF_OPTS += -DFEATURE_sql=OFF +endif + +# We need host-qt6base with Testlib support when building host-qt6declarative +# with QuickTest support. QuickTest support is further required for building the +# qmltestrunner host tool. qt6declarative will fail to build if qmltestrunner is +# not available. +ifeq ($(BR2_PACKAGE_HOST_QT6BASE_TEST),y) +HOST_QT6BASE_CONF_OPTS += -DFEATURE_testlib=ON +else +HOST_QT6BASE_CONF_OPTS += -DFEATURE_testlib=OFF +endif + +# Conditional blocks below are ordered by alphabetic ordering of the +# BR2_PACKAGE_* option. + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +QT6BASE_CONF_OPTS += -DFEATURE_libudev=ON +QT6BASE_DEPENDENCIES += udev +else +QT6BASE_CONF_OPTS += -DFEATURE_libudev=OFF +endif + +ifeq ($(BR2_PACKAGE_ICU),y) +QT6BASE_CONF_OPTS += -DFEATURE_icu=ON +QT6BASE_DEPENDENCIES += icu +else +QT6BASE_CONF_OPTS += -DFEATURE_icu=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +QT6BASE_CONF_OPTS += -DFEATURE_glib=ON +QT6BASE_DEPENDENCIES += libglib2 +else +QT6BASE_CONF_OPTS += -DFEATURE_glib=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_GUI),y) +QT6BASE_CONF_OPTS += \ + -DFEATURE_gui=ON \ + -DFEATURE_freetype=ON \ + -DFEATURE_vulkan=OFF +QT6BASE_DEPENDENCIES += freetype + +ifeq ($(BR2_PACKAGE_QT6BASE_VULKAN),y) +QT6BASE_DEPENDENCIES += vulkan-headers vulkan-loader +QT6BASE_CONFIGURE_OPTS += -DFEATURE_vulkan=ON +else +QT6BASE_CONFIGURE_OPTS += -DFEATURE_vulkan=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_LINUXFB),y) +QT6BASE_CONF_OPTS += -DFEATURE_linuxfb=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_linuxfb=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_XCB),y) +QT6BASE_CONF_OPTS += \ + -DFEATURE_xcb=ON \ + -DFEATURE_xcb_xlib=ON \ + -DFEATURE_xkbcommon=ON \ + -DFEATURE_xkbcommon_x11=ON +QT6BASE_DEPENDENCIES += \ + libxcb \ + libxkbcommon \ + xcb-util-wm \ + xcb-util-image \ + xcb-util-keysyms \ + xcb-util-renderutil \ + xlib_libX11 +else +QT6BASE_CONF_OPTS += -DFEATURE_xcb=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_HARFBUZZ),y) +QT6BASE_CONF_OPTS += -DFEATURE_harfbuzz=ON +ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_4),y) +# system harfbuzz in case __sync for 4 bytes is supported +QT6BASE_CONF_OPTS += -DQT_USE_BUNDLED_BundledHarfbuzz=OFF +QT6BASE_DEPENDENCIES += harfbuzz +else #BR2_TOOLCHAIN_HAS_SYNC_4 +# qt harfbuzz otherwise (using QAtomic instead) +QT6BASE_CONF_OPTS += -DQT_USE_BUNDLED_BundledHarfbuzz=ON +QT6BASE_LICENSE += , MIT (harfbuzz) +QT6BASE_LICENSE_FILES += src/3rdparty/harfbuzz-ng/COPYING +endif +else +QT6BASE_CONF_OPTS += -DFEATURE_harfbuzz=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_PNG),y) +QT6BASE_CONF_OPTS += -DFEATURE_png=ON -DFEATURE_system_png=ON +QT6BASE_DEPENDENCIES += libpng +else +QT6BASE_CONF_OPTS += -DFEATURE_png=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_GIF),y) +QT6BASE_CONF_OPTS += -DFEATURE_gif=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_gif=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_JPEG),y) +QT6BASE_CONF_OPTS += -DFEATURE_jpeg=ON +QT6BASE_DEPENDENCIES += jpeg +else +QT6BASE_CONF_OPTS += -DFEATURE_jpeg=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_PRINTSUPPORT),y) +QT6BASE_CONF_OPTS += -DFEATURE_printsupport=ON +ifeq ($(BR2_PACKAGE_CUPS),y) +QT6BASE_CONF_OPTS += -DFEATURE_cups=ON +QT6BASE_DEPENDENCIES += cups +else +QT6BASE_CONF_OPTS += -DFEATURE_cups=OFF +endif +else +QT6BASE_CONF_OPTS += -DFEATURE_printsupport=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBDRM),y) +QT6BASE_CONF_OPTS += -DFEATURE_kms=ON +QT6BASE_DEPENDENCIES += libdrm +else +QT6BASE_CONF_OPTS += -DFEATURE_kms=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_FONTCONFIG),y) +QT6BASE_CONF_OPTS += -DFEATURE_fontconfig=ON +QT6BASE_DEPENDENCIES += fontconfig +else +QT6BASE_CONF_OPTS += -DFEATURE_fontconfig=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_WIDGETS),y) +QT6BASE_CONF_OPTS += -DFEATURE_widgets=ON + +# only enable gtk support if libgtk3 X11 backend is enabled +ifeq ($(BR2_PACKAGE_LIBGTK3)$(BR2_PACKAGE_LIBGTK3_X11),yy) +QT6BASE_CONF_OPTS += -DFEATURE_gtk3=ON +QT6BASE_DEPENDENCIES += libgtk3 +else +QT6BASE_CONF_OPTS += -DFEATURE_gtk3=OFF +endif + +else +QT6BASE_CONF_OPTS += -DFEATURE_widgets=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBINPUT),y) +QT6BASE_CONF_OPTS += -DFEATURE_libinput=ON +QT6BASE_DEPENDENCIES += libinput +else +QT6BASE_CONF_OPTS += -DFEATURE_libinput=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_TSLIB),y) +QT6BASE_CONF_OPTS += -DFEATURE_tslib=ON +QT6BASE_DEPENDENCIES += tslib +else +QT6BASE_CONF_OPTS += -DFEATURE_tslib=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_EGLFS),y) +QT6BASE_CONF_OPTS += -DFEATURE_egl=ON -DFEATURE_eglfs=ON +QT6BASE_DEPENDENCIES += libegl libgbm +else +QT6BASE_CONF_OPTS += -DFEATURE_eglfs=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_OPENGL_DESKTOP),y) +QT6BASE_CONF_OPTS += \ + -DFEATURE_opengl=ON \ + -DFEATURE_opengl_desktop=ON +QT6BASE_DEPENDENCIES += libgl +else ifeq ($(BR2_PACKAGE_QT6BASE_OPENGL_ES2),y) +QT6BASE_CONF_OPTS += \ + -DFEATURE_opengl=ON \ + -DFEATURE_opengles2=ON \ + -DFEATURE_opengl_desktop=OFF +QT6BASE_DEPENDENCIES += libgles +else +QT6BASE_CONF_OPTS += -DFEATURE_opengl=OFF -DINPUT_opengl=no +endif + +else +QT6BASE_CONF_OPTS += -DFEATURE_gui=OFF +endif + +QT6BASE_DEFAULT_QPA = $(call qstrip,$(BR2_PACKAGE_QT6BASE_DEFAULT_QPA)) +QT6BASE_CONF_OPTS += $(if $(QT6BASE_DEFAULT_QPA),-DQT_QPA_DEFAULT_PLATFORM=$(QT6BASE_DEFAULT_QPA)) + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +QT6BASE_CONF_OPTS += -DINPUT_openssl=yes +QT6BASE_DEPENDENCIES += openssl +else +QT6BASE_CONF_OPTS += -DINPUT_openssl=no +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_CONCURRENT),y) +QT6BASE_CONF_OPTS += -DFEATURE_concurrent=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_concurrent=OFF +endif + +# We need host-qt6base with D-Bus support, otherwise: "the tool +# "Qt6::qdbuscpp2xml" was not found in the Qt6DBusTools package." +ifeq ($(BR2_PACKAGE_QT6BASE_DBUS),y) +QT6BASE_CONF_OPTS += -DFEATURE_dbus=ON -DINPUT_dbus=linked +QT6BASE_DEPENDENCIES += dbus +HOST_QT6BASE_CONF_OPTS += -DFEATURE_dbus=ON +HOST_QT6BASE_DEPENDENCIES += host-dbus +else +QT6BASE_CONF_OPTS += -DFEATURE_dbus=OFF +HOST_QT6BASE_CONF_OPTS += -DFEATURE_dbus=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_NETWORK),y) +QT6BASE_CONF_OPTS += -DFEATURE_network=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_network=OFF +endif + +# Qt6 SQL Plugins +ifeq ($(BR2_PACKAGE_QT6BASE_SQL),y) +QT6BASE_CONF_OPTS += -DFEATURE_sql=ON +QT6BASE_CONF_OPTS += -DFEATURE_sql_db2=OFF -DFEATURE_sql_ibase=OFF -DFEATURE_sql_oci=OFF -DFEATURE_sql_odbc=OFF + +ifeq ($(BR2_PACKAGE_QT6BASE_MYSQL),y) +QT6BASE_CONF_OPTS += -DFEATURE_sql_mysql=ON +QT6BASE_DEPENDENCIES += mariadb +else +QT6BASE_CONF_OPTS += -DFEATURE_sql_mysql=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_PSQL),y) +QT6BASE_CONF_OPTS += -DFEATURE_sql_psql=ON +QT6BASE_DEPENDENCIES += postgresql +else +QT6BASE_CONF_OPTS += -DFEATURE_sql_psql=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_SQLITE),y) +QT6BASE_CONF_OPTS += -DFEATURE_sql_sqlite=ON -DFEATURE_system_sqlite=ON +QT6BASE_DEPENDENCIES += sqlite +else +QT6BASE_CONF_OPTS += -DFEATURE_sql_sqlite=OFF +endif + +else +QT6BASE_CONF_OPTS += -DFEATURE_sql=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_SYSLOG),y) +QT6BASE_CONF_OPTS += -DFEATURE_syslog=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_syslog=OFF +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +QT6BASE_CONF_OPTS += -DFEATURE_journald=ON +QT6BASE_DEPENDENCIES += systemd +else +QT6BASE_CONF_OPTS += -DFEATURE_journald=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_TEST),y) +QT6BASE_CONF_OPTS += -DFEATURE_testlib=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_testlib=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_XML),y) +QT6BASE_CONF_OPTS += -DFEATURE_xml=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_xml=OFF +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +QT6BASE_CONF_OPTS += -DFEATURE_zstd=ON +QT6BASE_DEPENDENCIES += zstd +else +QT6BASE_CONF_OPTS += -DFEATURE_zstd=OFF +endif + +define QT6BASE_RM_USR_MKSPECS + $(Q)rm -rf $(TARGET_DIR)/usr/mkspecs +endef +QT6BASE_TARGET_FINALIZE_HOOKS += QT6BASE_RM_USR_MKSPECS + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/qt6/qt6core5compat/Config.in b/package/qt6/qt6core5compat/Config.in new file mode 100644 index 00000000..9d9e0876 --- /dev/null +++ b/package/qt6/qt6core5compat/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_QT6CORE5COMPAT + bool "qt6core5compat" + select BR2_PACKAGE_QT6BASE_XML + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt 5 Core Compat module contains the Qt 5 Core APIs that + were removed in Qt 6. The module facilitates the transition + to Qt 6. + + https://doc.qt.io/qt-6/qtcore5-index.html diff --git a/package/qt6/qt6core5compat/qt6core5compat.hash b/package/qt6/qt6core5compat/qt6core5compat.hash new file mode 100644 index 00000000..36421b53 --- /dev/null +++ b/package/qt6/qt6core5compat/qt6core5compat.hash @@ -0,0 +1,10 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.2/submodules/qt5compat-everywhere-src-6.7.2.tar.xz.sha256 +sha256 8826b5189efc4d9bdb64fdb1aa89d0fdf4e53c60948ed7995621ed046e38c003 qt5compat-everywhere-src-6.7.2.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6core5compat/qt6core5compat.mk b/package/qt6/qt6core5compat/qt6core5compat.mk new file mode 100644 index 00000000..0b6d9369 --- /dev/null +++ b/package/qt6/qt6core5compat/qt6core5compat.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# qt6core5compat +# +################################################################################ + +QT6CORE5COMPAT_VERSION = $(QT6_VERSION) +QT6CORE5COMPAT_SITE = $(QT6_SITE) +QT6CORE5COMPAT_SOURCE = qt5compat-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6CORE5COMPAT_VERSION).tar.xz +QT6CORE5COMPAT_INSTALL_STAGING = YES +QT6CORE5COMPAT_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6CORE5COMPAT_CMAKE_BACKEND = ninja + +QT6CORE5COMPAT_LICENSE = \ + GPL-2.0+ or LGPL-3.0, \ + GPL-3.0 with exception (tools), \ + GFDL-1.3 (docs), \ + BSD-3-Clause + +QT6CORE5COMPAT_LICENSE_FILES = \ + LICENSES/BSD-3-Clause.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/Qt-GPL-exception-1.0.txt + +QT6CORE5COMPAT_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6CORE5COMPAT_DEPENDENCIES = \ + host-pkgconf \ + qt6base + +$(eval $(cmake-package)) diff --git a/package/qt6/qt6declarative/0001-Fix-build-with--no-feature-network.patch b/package/qt6/qt6declarative/0001-Fix-build-with--no-feature-network.patch new file mode 100644 index 00000000..bef57942 --- /dev/null +++ b/package/qt6/qt6declarative/0001-Fix-build-with--no-feature-network.patch @@ -0,0 +1,28 @@ +From 8377691a0998fd84e6fc8349a5db450bf2d79164 Mon Sep 17 00:00:00 2001 +From: Tasuku Suzuki +Date: Tue, 21 Nov 2023 23:58:43 +0900 +Subject: Fix build with -no-feature-network + +Change-Id: Ib21012301da6afb5458f707b39a9a8079d93eb93 +Reviewed-by: Ulf Hermann +Upstream: https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=8377691a0998fd84e6fc8349a5db450bf2d79164 +Signed-off-by: Roy Kollen Svendsen +--- + src/qml/configure.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/qml/configure.cmake b/src/qml/configure.cmake +index 2d0434643a..d1ff90bd54 100644 +--- a/src/qml/configure.cmake ++++ b/src/qml/configure.cmake +@@ -82,7 +82,7 @@ qt_feature("qml-ssl" PUBLIC + SECTION "QML" + LABEL "QML SSL support" + PURPOSE "Provides ssl support in QML." +- CONDITION QT_FEATURE_ssl ++ CONDITION QT_FEATURE_qml_network AND QT_FEATURE_ssl + ) + + # On arm and arm64 we need a specialization of cacheFlush() for each OS to be +-- +cgit v1.2.3 diff --git a/package/qt6/qt6declarative/Config.in b/package/qt6/qt6declarative/Config.in new file mode 100644 index 00000000..0a977ed8 --- /dev/null +++ b/package/qt6/qt6declarative/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_QT6DECLARATIVE + bool "qt6declarative" + # Enable host test module to ensure that qmltestrunner is built + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6declarative module. + + https://doc.qt.io/qt-6/qtdeclarative-index.html + +if BR2_PACKAGE_QT6DECLARATIVE + +config BR2_PACKAGE_QT6DECLARATIVE_QUICK + bool "quick module" + select BR2_PACKAGE_HOST_QT6BASE_TEST if BR2_PACKAGE_QT6BASE_TEST # qmltestrunner + select BR2_PACKAGE_HOST_QT6BASE_NETWORK if BR2_PACKAGE_QT6BASE_NETWORK # qmlprofiler + select BR2_PACKAGE_QT6BASE_GUI + select BR2_PACKAGE_QT6BASE_OPENGL if BR2_PACKAGE_QT6_GL_SUPPORTS + select BR2_PACKAGE_QT6SHADERTOOLS + +endif diff --git a/package/qt6/qt6declarative/qt6declarative.hash b/package/qt6/qt6declarative/qt6declarative.hash new file mode 100644 index 00000000..006b49e4 --- /dev/null +++ b/package/qt6/qt6declarative/qt6declarative.hash @@ -0,0 +1,11 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.2/submodules/qtdeclarative-everywhere-src-6.7.2.tar.xz.sha256 +sha256 4c29cba1af8c42d425d8eb6e01bad24cb80f4b983d71eef566a0542dfdb9b999 qtdeclarative-everywhere-src-6.7.2.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 9b1f50aae6267f9d5e0ceb6775ee86450262c25ec7c0573e151fe5d3f18a4700 LICENSES/LicenseRef-Qt-Commercial.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6declarative/qt6declarative.mk b/package/qt6/qt6declarative/qt6declarative.mk new file mode 100644 index 00000000..ecf14d33 --- /dev/null +++ b/package/qt6/qt6declarative/qt6declarative.mk @@ -0,0 +1,67 @@ +################################################################################ +# +# qt6declarative +# +################################################################################ + +QT6DECLARATIVE_VERSION = $(QT6_VERSION) +QT6DECLARATIVE_SITE = $(QT6_SITE) +QT6DECLARATIVE_SOURCE = qtdeclarative-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6DECLARATIVE_VERSION).tar.xz +QT6DECLARATIVE_INSTALL_STAGING = YES + +QT6DECLARATIVE_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6DECLARATIVE_CMAKE_BACKEND = ninja + +QT6DECLARATIVE_LICENSE = \ + LGPL-3.0 or GPL-3.0 or GPL-2.0, \ + BSD-3-Clause (docs), \ + GFDL-1.3 no invariants (docs), \ + BSD-3-Clause (examples), \ + GPL-3.0 (tests), \ + GPL-3.0 WITH Qt-GPL-exception-1.0 (tools) + +QT6DECLARATIVE_LICENSE_FILES = \ + LICENSES/BSD-3-Clause.txt \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt \ + LICENSES/Qt-GPL-exception-1.0.txt + +QT6DECLARATIVE_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +HOST_QT6DECLARATIVE_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +HOST_QT6DECLARATIVE_DEPENDENCIES = \ + host-qt6base + +QT6DECLARATIVE_DEPENDENCIES = \ + host-qt6declarative \ + qt6base + +ifeq ($(BR2_PACKAGE_QT6DECLARATIVE_QUICK),y) +HOST_QT6DECLARATIVE_DEPENDENCIES += \ + host-qt6shadertools +QT6DECLARATIVE_DEPENDENCIES += \ + host-qt6base \ + qt6shadertools + +# We need host-qt6svg, when qt6svg is available to build the required +# svgtoqml host tool +ifeq ($(BR2_PACKAGE_QT6SVG),y) +HOST_QT6DECLARATIVE_DEPENDENCIES += host-qt6svg +endif + +endif + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/qt6/qt6languageserver/Config.in b/package/qt6/qt6languageserver/Config.in new file mode 100644 index 00000000..cfbad858 --- /dev/null +++ b/package/qt6/qt6languageserver/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_QT6LANGUAGESERVER + bool "qt6languageserver" + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6languageserver module. + + https://github.com/qt/qtlanguageserver diff --git a/package/qt6/qt6languageserver/qt6languageserver.hash b/package/qt6/qt6languageserver/qt6languageserver.hash new file mode 100644 index 00000000..72664744 --- /dev/null +++ b/package/qt6/qt6languageserver/qt6languageserver.hash @@ -0,0 +1,11 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.2/submodules/qtlanguageserver-everywhere-src-6.7.2.tar.xz.sha256 +sha256 b659fe655144ffa061e3ae509eadb42ae373230517295a96935434340e101a92 qtlanguageserver-everywhere-src-6.7.2.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 9b1f50aae6267f9d5e0ceb6775ee86450262c25ec7c0573e151fe5d3f18a4700 LICENSES/LicenseRef-Qt-Commercial.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6languageserver/qt6languageserver.mk b/package/qt6/qt6languageserver/qt6languageserver.mk new file mode 100644 index 00000000..7ef5b9d9 --- /dev/null +++ b/package/qt6/qt6languageserver/qt6languageserver.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# qt6languageserver +# +################################################################################ + +QT6LANGUAGESERVER_VERSION = $(QT6_VERSION) +QT6LANGUAGESERVER_SITE = $(QT6_SITE) +QT6LANGUAGESERVER_SOURCE = qtlanguageserver-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6LANGUAGESERVER_VERSION).tar.xz +QT6LANGUAGESERVER_INSTALL_STAGING = YES +QT6LANGUAGESERVER_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6LANGUAGESERVER_CMAKE_BACKEND = ninja + +QT6LANGUAGESERVER_LICENSE = \ + GPL-2.0 or LGPL-3.0 or GPL-3.0, \ + GPL-3.0 (tests) + +QT6LANGUAGESERVER_LICENSE_FILES = \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt + +QT6LANGUAGESERVER_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6LANGUAGESERVER_DEPENDENCIES = \ + qt6base + +$(eval $(cmake-package)) diff --git a/package/qt6/qt6mqtt/Config.in b/package/qt6/qt6mqtt/Config.in new file mode 100644 index 00000000..2cda7e53 --- /dev/null +++ b/package/qt6/qt6mqtt/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_QT6MQTT + bool "qt6mqtt" + select BR2_PACKAGE_QT6BASE_NETWORK + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6mqtt module. + + https://doc.qt.io/qt-6/qtmqtt-index.html diff --git a/package/qt6/qt6mqtt/qt6mqtt.hash b/package/qt6/qt6mqtt/qt6mqtt.hash new file mode 100644 index 00000000..67ae6d0d --- /dev/null +++ b/package/qt6/qt6mqtt/qt6mqtt.hash @@ -0,0 +1,8 @@ +sha256 be2d3f12378a8e2a103c328201b1e308f8c6c09bd752322592b3164cebba5bde qt6mqtt-6.7.2-git4.tar.gz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 9b1f50aae6267f9d5e0ceb6775ee86450262c25ec7c0573e151fe5d3f18a4700 LICENSES/LicenseRef-Qt-Commercial.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6mqtt/qt6mqtt.mk b/package/qt6/qt6mqtt/qt6mqtt.mk new file mode 100644 index 00000000..00c6705c --- /dev/null +++ b/package/qt6/qt6mqtt/qt6mqtt.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# qt6mqtt +# +################################################################################ + +QT6MQTT_VERSION = $(QT6_VERSION) +QT6MQTT_SITE = $(QT6_GIT)/qt/qtmqtt.git + +QT6MQTT_INSTALL_STAGING = YES + +QT6MQTT_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6MQTT_CMAKE_BACKEND = ninja + +QT6MQTT_LICENSE = \ + BSD-3-Clause (examples), \ + GFDL-1.3-invariants-only (docs), \ + GPL-3.0 + +QT6MQTT_LICENSE_FILES = \ + LICENSES/BSD-3-Clause.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt \ + LICENSES/GPL-3.0-only.txt + +QT6MQTT_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6MQTT_DEPENDENCIES = \ + qt6base + +$(eval $(cmake-package)) diff --git a/package/qt6/qt6opcua/Config.in b/package/qt6/qt6opcua/Config.in new file mode 100644 index 00000000..68b73f7c --- /dev/null +++ b/package/qt6/qt6opcua/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_QT6OPCUA + bool "qt6opcua" + select BR2_PACKAGE_QT6BASE_NETWORK + # qt6opcuda needs host-qt6opcua, and host-qt6opcua needs + # network support in qt6base. + select BR2_PACKAGE_HOST_QT6BASE_NETWORK + + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6opcua module. + + https://doc.qt.io/qt-6/qtopcua-index.html diff --git a/package/qt6/qt6opcua/qt6opcua.hash b/package/qt6/qt6opcua/qt6opcua.hash new file mode 100644 index 00000000..cf54bef9 --- /dev/null +++ b/package/qt6/qt6opcua/qt6opcua.hash @@ -0,0 +1,9 @@ +sha256 653597e2926ddb512f078bab1e5d2a059202ba1bc1f68ff0b4a0e053ab1272b2 qt6opcua-6.7.2-git4.tar.gz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6opcua/qt6opcua.mk b/package/qt6/qt6opcua/qt6opcua.mk new file mode 100644 index 00000000..6c8ff7af --- /dev/null +++ b/package/qt6/qt6opcua/qt6opcua.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# qt6opcua +# +################################################################################ + +QT6OPCUA_VERSION = $(QT6_VERSION) +QT6OPCUA_SITE = $(QT6_GIT)/qt/qtopcua.git +QT6OPCUA_SITE_METHOD = git +QT6OPCUA_INSTALL_STAGING = YES +QT6OPCUA_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6OPCUA_CMAKE_BACKEND = ninja + +QT6OPCUA_LICENSE = \ + GPL-2.0 or GPL-3.0 or LGPL-3.0, \ + GFDL-1.3 no invariants (docs), \ + BSD-3-Clause (examples + buildsystem) + +QT6OPCUA_LICENSE_FILES = \ + LICENSES/BSD-3-Clause.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt + +QT6OPCUA_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF + +HOST_QT6OPCUA_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF + +QT6OPCUA_DEPENDENCIES = \ + qt6base \ + host-qt6opcua + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +QT6OPCUA_DEPENDENCIES += openssl +endif + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/qt6/qt6serialbus/Config.in b/package/qt6/qt6serialbus/Config.in new file mode 100644 index 00000000..1f24310e --- /dev/null +++ b/package/qt6/qt6serialbus/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_QT6SERIALBUS + bool "qt6serialbus" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6 # CAN FD + select BR2_PACKAGE_QT6SERIALPORT + select BR2_PACKAGE_QT6BASE_NETWORK + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6serialbus module. + + https://doc.qt.io/qt-6/qtserialbus-index.html + +comment "qt6serialbus needs headers >= 3.6" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6 diff --git a/package/qt6/qt6serialbus/qt6serialbus.hash b/package/qt6/qt6serialbus/qt6serialbus.hash new file mode 100644 index 00000000..1b854284 --- /dev/null +++ b/package/qt6/qt6serialbus/qt6serialbus.hash @@ -0,0 +1,11 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.2/submodules/qtserialbus-everywhere-src-6.7.2.tar.xz.sha256 +sha256 67641ca99b455746d7d956c516dfaa5f2c48696834c71d5720d63e736d374b2b qtserialbus-everywhere-src-6.7.2.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 9b1f50aae6267f9d5e0ceb6775ee86450262c25ec7c0573e151fe5d3f18a4700 LICENSES/LicenseRef-Qt-Commercial.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6serialbus/qt6serialbus.mk b/package/qt6/qt6serialbus/qt6serialbus.mk new file mode 100644 index 00000000..631531e1 --- /dev/null +++ b/package/qt6/qt6serialbus/qt6serialbus.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# qt6serialbus +# +################################################################################ + +QT6SERIALBUS_VERSION = $(QT6_VERSION) +QT6SERIALBUS_SITE = $(QT6_SITE) +QT6SERIALBUS_SOURCE = qtserialbus-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6SERIALBUS_VERSION).tar.xz +QT6SERIALBUS_INSTALL_STAGING = YES +QT6SERIALBUS_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6SERIALBUS_CMAKE_BACKEND = ninja + +QT6SERIALBUS_LICENSE = \ + GPL-2.0+ or LGPL-3.0, \ + GPL-3.0, GFDL-1.3 no invariants (docs) + +QT6SERIALBUS_LICENSE_FILES = \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt + +QT6SERIALBUS_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6SERIALBUS_DEPENDENCIES = \ + qt6serialport + +$(eval $(cmake-package)) diff --git a/package/qt6/qt6serialport/Config.in b/package/qt6/qt6serialport/Config.in new file mode 100644 index 00000000..f1fd844f --- /dev/null +++ b/package/qt6/qt6serialport/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_QT6SERIALPORT + bool "qt6serialport" + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt Serial Port provides the basic functionality, which + includes configuring, I/O operations, getting and setting + the control signals of the RS-232 pinouts. + + https://doc.qt.io/qt-6/qserialport.html diff --git a/package/qt6/qt6serialport/qt6serialport.hash b/package/qt6/qt6serialport/qt6serialport.hash new file mode 100644 index 00000000..c8708c22 --- /dev/null +++ b/package/qt6/qt6serialport/qt6serialport.hash @@ -0,0 +1,10 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.2/submodules/qtserialport-everywhere-src-6.7.2.tar.xz.sha256 +sha256 21c34cd1161cb5197bcec662d26a17647b59b6fdff5c364576883c42dbd3b4fc qtserialport-everywhere-src-6.7.2.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6serialport/qt6serialport.mk b/package/qt6/qt6serialport/qt6serialport.mk new file mode 100644 index 00000000..bdb16dd8 --- /dev/null +++ b/package/qt6/qt6serialport/qt6serialport.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# qt6serialport +# +################################################################################ + +QT6SERIALPORT_VERSION = $(QT6_VERSION) +QT6SERIALPORT_SITE = $(QT6_SITE) +QT6SERIALPORT_SOURCE = qtserialport-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6SERIALPORT_VERSION).tar.xz +QT6SERIALPORT_INSTALL_STAGING = YES +QT6SERIALPORT_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6SERIALPORT_CMAKE_BACKEND = ninja + +QT6SERIALPORT_LICENSE = \ + GPL-2.0+ or LGPL-3.0, \ + GPL-3.0 with exception (tools), \ + GFDL-1.3 (docs), \ + BSD-3-Clause + +QT6SERIALPORT_LICENSE_FILES = \ + LICENSES/BSD-3-Clause.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/Qt-GPL-exception-1.0.txt + +QT6SERIALPORT_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6SERIALPORT_DEPENDENCIES = \ + host-pkgconf \ + qt6base + +$(eval $(cmake-package)) diff --git a/package/qt6/qt6shadertools/Config.in b/package/qt6/qt6shadertools/Config.in new file mode 100644 index 00000000..7f207c15 --- /dev/null +++ b/package/qt6/qt6shadertools/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_QT6SHADERTOOLS + bool "qt6shadertools" + # We need host-qt6base with Gui support when building + # host-qt6shadertools (itself a dependency of target + # qt6shadertools), otherwise the build is skipped and no qsb + # host tool is generated. + select BR2_PACKAGE_HOST_QT6BASE_GUI + select BR2_PACKAGE_QT6BASE_GUI + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt Shader Tools module builds on the SPIR-V Open + Source Ecosystem as described at the Khronos SPIR-V web + site. + + https://doc.qt.io/qt-6/qtshadertools-index.html diff --git a/package/qt6/qt6shadertools/qt6shadertools.hash b/package/qt6/qt6shadertools/qt6shadertools.hash new file mode 100644 index 00000000..9cb423c9 --- /dev/null +++ b/package/qt6/qt6shadertools/qt6shadertools.hash @@ -0,0 +1,10 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.2/submodules/qtshadertools-everywhere-src-6.7.2.tar.xz.sha256 +sha256 edfa34c0ac8c00fcaa949df1d8e7a77d89dadd6386e683ce6c3e3b117e2f7cc1 qtshadertools-everywhere-src-6.7.2.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6shadertools/qt6shadertools.mk b/package/qt6/qt6shadertools/qt6shadertools.mk new file mode 100644 index 00000000..660dc5a7 --- /dev/null +++ b/package/qt6/qt6shadertools/qt6shadertools.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# qt6shadertools +# +################################################################################ + +QT6SHADERTOOLS_VERSION = $(QT6_VERSION) +QT6SHADERTOOLS_SITE = $(QT6_SITE) +QT6SHADERTOOLS_SOURCE = qtshadertools-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6SHADERTOOLS_VERSION).tar.xz +QT6SHADERTOOLS_INSTALL_STAGING = YES +QT6SHADERTOOLS_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6SHADERTOOLS_CMAKE_BACKEND = ninja + +QT6SHADERTOOLS_LICENSE = \ + Apache-2.0 or MIT (SPIRV-Cross), \ + GPL-2.0 or LGPL-3.0 or GPL-3.0, \ + GPL-3.0 (tests), GFDL-1.3 no invariants (docs), \ + GPL-3.0 WITH Qt-GPL-exception-1.0 (tools) + +QT6SHADERTOOLS_LICENSE_FILES = \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt \ + LICENSES/Qt-GPL-exception-1.0.txt + +QT6SHADERTOOLS_CONF_OPTS = \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6SHADERTOOLS_DEPENDENCIES = \ + host-pkgconf \ + qt6base \ + host-qt6shadertools + +HOST_QT6SHADERTOOLS_DEPENDENCIES = \ + host-qt6base + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/qt6/qt6svg/Config.in b/package/qt6/qt6svg/Config.in new file mode 100644 index 00000000..179101c9 --- /dev/null +++ b/package/qt6/qt6svg/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_QT6SVG + bool "qt6svg" + select BR2_PACKAGE_QT6BASE_GUI + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt SVG provides classes for rendering and displaying SVG + drawings in widgets and on other paint devices. + + https://doc.qt.io/qt-6/qtsvg-index.html diff --git a/package/qt6/qt6svg/qt6svg.hash b/package/qt6/qt6svg/qt6svg.hash new file mode 100644 index 00000000..7adfd7f2 --- /dev/null +++ b/package/qt6/qt6svg/qt6svg.hash @@ -0,0 +1,10 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.2/submodules/qtsvg-everywhere-src-6.7.2.tar.xz.sha256 +sha256 fb0d1286a35be3583fee34aeb5843c94719e07193bdf1d4d8b0dc14009caef01 qtsvg-everywhere-src-6.7.2.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6svg/qt6svg.mk b/package/qt6/qt6svg/qt6svg.mk new file mode 100644 index 00000000..a9d7eaef --- /dev/null +++ b/package/qt6/qt6svg/qt6svg.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# qt6svg +# +################################################################################ + +QT6SVG_VERSION = $(QT6_VERSION) +QT6SVG_SITE = $(QT6_SITE) +QT6SVG_SOURCE = qtsvg-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6SVG_VERSION).tar.xz +QT6SVG_INSTALL_STAGING = YES +QT6SVG_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6SVG_CMAKE_BACKEND = ninja + +QT6SVG_LICENSE = \ + GPL-2.0+ or LGPL-3.0, \ + GPL-3.0 with exception (tools), \ + GFDL-1.3 (docs), \ + BSD-3-Clause + +QT6SVG_LICENSE_FILES = \ + LICENSES/BSD-3-Clause.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/Qt-GPL-exception-1.0.txt + +QT6SVG_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6SVG_DEPENDENCIES = \ + host-pkgconf \ + qt6base + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/qt6/qt6tools/Config.in b/package/qt6/qt6tools/Config.in new file mode 100644 index 00000000..5f52c564 --- /dev/null +++ b/package/qt6/qt6tools/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_QT6TOOLS + bool "qt6tools" + select BR2_PACKAGE_QT6BASE_NETWORK + # qt6tools needs host-qt6tools, and host-qt6tools needs + # network support in qt6base. In addition, we also need + # host-qt6base with Sql support to build the qhelpgenerator + # tool, if target support for Sql is present + select BR2_PACKAGE_HOST_QT6BASE_NETWORK + select BR2_PACKAGE_HOST_QT6BASE_SQL if BR2_PACKAGE_QT6BASE_SQL + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt Tools provides tools facilitate the development + and design of applications. + + https://github.com/qt/qttools diff --git a/package/qt6/qt6tools/qt6tools.hash b/package/qt6/qt6tools/qt6tools.hash new file mode 100644 index 00000000..622df4a0 --- /dev/null +++ b/package/qt6/qt6tools/qt6tools.hash @@ -0,0 +1,12 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.2/submodules/qttools-everywhere-src-6.7.2.tar.xz.sha256 +sha256 58e855ad1b2533094726c8a425766b63a04a0eede2ed85086860e54593aa4b2a qttools-everywhere-src-6.7.2.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 3abd6471b9a9a08d65ce771143f8e278bb4c1aeb10c1c2d476935a6b049653f5 LICENSES/BSL-1.0.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 9b1f50aae6267f9d5e0ceb6775ee86450262c25ec7c0573e151fe5d3f18a4700 LICENSES/LicenseRef-Qt-Commercial.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6tools/qt6tools.mk b/package/qt6/qt6tools/qt6tools.mk new file mode 100644 index 00000000..09c986cf --- /dev/null +++ b/package/qt6/qt6tools/qt6tools.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# qt6tools +# +################################################################################ + +QT6TOOLS_VERSION = $(QT6_VERSION) +QT6TOOLS_SITE = $(QT6_SITE) +QT6TOOLS_SOURCE = qttools-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6TOOLS_VERSION).tar.xz +QT6TOOLS_INSTALL_STAGING = YES +QT6TOOLS_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6TOOLS_CMAKE_BACKEND = ninja + +QT6TOOLS_LICENSE = \ + BSD-3-Clause (examples), \ + BSD-3-Clause (corecon), \ + BSL-1.0 (catch), \ + LGPL-3.0 or GPL-3.0 or GPL-2.0, \ + GPL-3.0 WITH Qt-GPL-exception-1.0 + +QT6TOOLS_LICENSE_FILES = \ + LICENSES/BSD-3-Clause.txt \ + LICENSES/BSL-1.0.txt \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/Qt-GPL-exception-1.0.txt + +QT6TOOLS_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6TOOLS_DEPENDENCIES = \ + qt6base \ + host-qt6tools + +ifeq ($(BR2_PACKAGE_QT6DECLARATIVE),y) +QT6TOOLS_DEPENDENCIES += qt6declarative +endif + +HOST_QT6TOOLS_DEPENDENCIES = host-qt6base + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/qt6/qt6virtualkeyboard/Config.in b/package/qt6/qt6virtualkeyboard/Config.in new file mode 100644 index 00000000..4a9d6d57 --- /dev/null +++ b/package/qt6/qt6virtualkeyboard/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_QT6VIRTUALKEYBOARD + bool "qt6virtualkeyboard" + select BR2_PACKAGE_QT6DECLARATIVE + select BR2_PACKAGE_QT6SVG + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6virtualkeyboard module. + + https://doc.qt.io/qt-6/qtvirtualkeyboard-index.html diff --git a/package/qt6/qt6virtualkeyboard/qt6virtualkeyboard.hash b/package/qt6/qt6virtualkeyboard/qt6virtualkeyboard.hash new file mode 100644 index 00000000..f34eb11e --- /dev/null +++ b/package/qt6/qt6virtualkeyboard/qt6virtualkeyboard.hash @@ -0,0 +1,12 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.2/submodules/qtvirtualkeyboard-everywhere-src-6.7.2.tar.xz.sha256 +sha256 320664b55a0960ff79c1b822dcf6e8cebe3e08b791147d41b570996d81ce180f qtvirtualkeyboard-everywhere-src-6.7.2.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 9b1f50aae6267f9d5e0ceb6775ee86450262c25ec7c0573e151fe5d3f18a4700 LICENSES/LicenseRef-Qt-Commercial.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt +sha256 05cc719deafd0ab083b03296bb2911de10d116953b626a7629b9ca59938038b1 src/plugins/openwnn/3rdparty/openwnn/NOTICE +sha256 b5830d96fb5a7e7e7ebcc295f352846b4b998e78fdc8f9aa68e134d2e4b39986 src/plugins/pinyin/3rdparty/pinyin/NOTICE +sha256 9400a6128693d2f25653698e695f554660c71efccc8c21af28bf143e35199db6 src/plugins/tcime/3rdparty/tcime/COPYING diff --git a/package/qt6/qt6virtualkeyboard/qt6virtualkeyboard.mk b/package/qt6/qt6virtualkeyboard/qt6virtualkeyboard.mk new file mode 100644 index 00000000..5c61ed7e --- /dev/null +++ b/package/qt6/qt6virtualkeyboard/qt6virtualkeyboard.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# qt6virtualkeyboard +# +################################################################################ + +QT6VIRTUALKEYBOARD_VERSION = $(QT6_VERSION) +QT6VIRTUALKEYBOARD_SITE = $(QT6_SITE) +QT6VIRTUALKEYBOARD_SOURCE = qtvirtualkeyboard-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6VIRTUALKEYBOARD_VERSION).tar.xz +QT6VIRTUALKEYBOARD_INSTALL_STAGING = YES + +QT6VIRTUALKEYBOARD_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6VIRTUALKEYBOARD_CMAKE_BACKEND = ninja + +QT6VIRTUALKEYBOARD_LICENSE = \ + BSD-3-Clause (examples), \ + GPL-3.0, \ + Apache-2.0 (openwnn, pinyin, tcime plugins) + +QT6VIRTUALKEYBOARD_LICENSE_FILES = \ + LICENSES/BSD-3-Clause.txt \ + LICENSES/GPL-3.0-only.txt \ + src/plugins/openwnn/3rdparty/openwnn/NOTICE \ + src/plugins/pinyin/3rdparty/pinyin/NOTICE \ + src/plugins/tcime/3rdparty/tcime/COPYING + +QT6VIRTUALKEYBOARD_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6VIRTUALKEYBOARD_DEPENDENCIES = \ + qt6base \ + qt6declarative \ + qt6svg + +$(eval $(cmake-package)) diff --git a/package/qt6/qt6wayland/Config.in b/package/qt6/qt6wayland/Config.in new file mode 100644 index 00000000..bda13dd1 --- /dev/null +++ b/package/qt6/qt6wayland/Config.in @@ -0,0 +1,28 @@ +comment "qt6wayland needs an OpenGL-capable backend" + depends on !BR2_PACKAGE_QT6_GL_SUPPORTS + +config BR2_PACKAGE_QT6WAYLAND + bool "qt6wayland" + depends on BR2_PACKAGE_QT6_GL_SUPPORTS + select BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_QT6BASE_GUI + # needed because we build host-qt6wayland + select BR2_PACKAGE_HOST_QT6BASE_GUI + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6wayland module. + + https://doc.qt.io/qt-6/qtwayland-index.html + +if BR2_PACKAGE_QT6WAYLAND + +config BR2_PACKAGE_QT6WAYLAND_COMPOSITOR + bool "Enable compositor (experimental)" + select BR2_PACKAGE_LIBXKBCOMMON + help + The compositor API is still experimental, and not built by + default. + +endif diff --git a/package/qt6/qt6wayland/qt6wayland.hash b/package/qt6/qt6wayland/qt6wayland.hash new file mode 100644 index 00000000..3d0ded7b --- /dev/null +++ b/package/qt6/qt6wayland/qt6wayland.hash @@ -0,0 +1,11 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.2/submodules/qtwayland-everywhere-src-6.7.2.tar.xz.sha256 +sha256 a2a057e1dd644bd44abb9990fecc194b2e25c2e0f39e81aa9fee4c1e5e2a8a5b qtwayland-everywhere-src-6.7.2.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 9b1f50aae6267f9d5e0ceb6775ee86450262c25ec7c0573e151fe5d3f18a4700 LICENSES/LicenseRef-Qt-Commercial.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6wayland/qt6wayland.mk b/package/qt6/qt6wayland/qt6wayland.mk new file mode 100644 index 00000000..29fc25ed --- /dev/null +++ b/package/qt6/qt6wayland/qt6wayland.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# qt6wayland +# +################################################################################ + +QT6WAYLAND_VERSION = $(QT6_VERSION) +QT6WAYLAND_SITE = $(QT6_SITE) +QT6WAYLAND_SOURCE = qtwayland-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6WAYLAND_VERSION).tar.xz +QT6WAYLAND_INSTALL_STAGING = YES + +QT6WAYLAND_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6WAYLAND_CMAKE_BACKEND = ninja + +QT6WAYLAND_LICENSE = \ + BSD-3-Clause (examples, tests), \ + GPL-3.0 (compositor), \ + LGPL-3.0 or GPL-2.0 or GPL-3.0, \ + GPL-3.0 WITH Qt-GPL-exception-1.0 (tests), \ + GFDL-1.3 no invariants (docs) + +QT6WAYLAND_LICENSE_FILES = \ + LICENSES/BSD-3-Clause.txt \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt + +QT6WAYLAND_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF \ + -DFEATURE_wayland_client=ON + +# host-qt6wayland needed to build the qtwaylandscanner host tool +QT6WAYLAND_DEPENDENCIES = \ + qt6base \ + wayland \ + host-qt6wayland + +ifeq ($(BR2_PACKAGE_QT6DECLARATIVE),y) +QT6WAYLAND_DEPENDENCIES += qt6declarative +endif + +ifeq ($(BR2_PACKAGE_QT6WAYLAND_COMPOSITOR),y) +QT6WAYLAND_CONF_OPTS += -DFEATURE_wayland_server=ON +QT6WAYLAND_DEPENDENCIES += libxkbcommon +else +QT6WAYLAND_CONF_OPTS += -DFEATURE_wayland_server=OFF +endif + +HOST_QT6WAYLAND_CONF_OPTS = \ + -DFEATURE_wayland_client=OFF \ + -DFEATURE_wayland_server=OFF + +HOST_QT6WAYLAND_DEPENDENCIES = host-qt6base + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/qt6/qt6websockets/Config.in b/package/qt6/qt6websockets/Config.in new file mode 100644 index 00000000..7d65a8e6 --- /dev/null +++ b/package/qt6/qt6websockets/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_QT6WEBSOCKETS + bool "qt6websockets" + select BR2_PACKAGE_QT6BASE_NETWORK + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6websockets module. + + https://doc.qt.io/qt-6/qtwebsockets-index.html diff --git a/package/qt6/qt6websockets/qt6websockets.hash b/package/qt6/qt6websockets/qt6websockets.hash new file mode 100644 index 00000000..5dfeeef0 --- /dev/null +++ b/package/qt6/qt6websockets/qt6websockets.hash @@ -0,0 +1,11 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.2/submodules/qtwebsockets-everywhere-src-6.7.2.tar.xz.sha256 +sha256 5bde4af6ec9ce8c8632b782ab77b82d910721be2c714e6d38902521bcd1d215f qtwebsockets-everywhere-src-6.7.2.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 9b1f50aae6267f9d5e0ceb6775ee86450262c25ec7c0573e151fe5d3f18a4700 LICENSES/LicenseRef-Qt-Commercial.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6websockets/qt6websockets.mk b/package/qt6/qt6websockets/qt6websockets.mk new file mode 100644 index 00000000..5e6da70e --- /dev/null +++ b/package/qt6/qt6websockets/qt6websockets.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# qt6websockets +# +################################################################################ + +QT6WEBSOCKETS_VERSION = $(QT6_VERSION) +QT6WEBSOCKETS_SITE = $(QT6_SITE) +QT6WEBSOCKETS_SOURCE = qtwebsockets-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6WEBSOCKETS_VERSION).tar.xz +QT6WEBSOCKETS_INSTALL_STAGING = YES + +QT6WEBSOCKETS_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6WEBSOCKETS_CMAKE_BACKEND = ninja + +QT6WEBSOCKETS_LICENSE = \ + LGPL-3.0 or GPL-2.0 or GPL-3.0, \ + BSD-3-Clause (examples), \ + GPL-3.0 (tests) + +QT6WEBSOCKETS_LICENSE_FILES = \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/BSD-3-Clause.txt + +QT6WEBSOCKETS_CONF_OPTS = \ + -DQT_FEATURE_thread=ON \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6WEBSOCKETS_DEPENDENCIES = qt6base + +ifeq ($(BR2_PACKAGE_QT6DECLARATIVE),y) +QT6WEBSOCKETS_DEPENDENCIES += qt6declarative +endif + +$(eval $(cmake-package)) diff --git a/package/quagga/0001-fix-ipctl-forwarding.patch b/package/quagga/0001-fix-ipctl-forwarding.patch new file mode 100644 index 00000000..e2e3421e --- /dev/null +++ b/package/quagga/0001-fix-ipctl-forwarding.patch @@ -0,0 +1,27 @@ +Add definitions for IPCTL_FORWARDING and IP6CTL_FORWARDING. + +Inspired from +http://svn.gnumonks.org/trunk/grouter/build/src/quagga/quagga/quagga-0.99.1-forward_sysctl-2.6.14.patch + +Signed-off-by: Thomas Petazzoni + +Index: quagga-0.99.16/zebra/ipforward_sysctl.c +=================================================================== +--- quagga-0.99.16.orig/zebra/ipforward_sysctl.c 2010-06-20 23:40:45.000000000 +0200 ++++ quagga-0.99.16/zebra/ipforward_sysctl.c 2010-06-20 23:41:37.000000000 +0200 +@@ -31,6 +31,15 @@ + + #define MIB_SIZ 4 + ++/* Fix for recent (2.6.14) kernel headers */ ++#ifndef IPCTL_FORWARDING ++#define IPCTL_FORWARDING NET_IPV4_FORWARD ++#endif ++ ++#ifndef IP6CTL_FORWARDING ++#define IP6CTL_FORWARDING NET_IPV6_FORWARDING ++#endif ++ + extern struct zebra_privs_t zserv_privs; + + /* IPv4 forwarding control MIB. */ diff --git a/package/quagga/0002-lib-prefix.h-fix-build-with-gcc-10.patch b/package/quagga/0002-lib-prefix.h-fix-build-with-gcc-10.patch new file mode 100644 index 00000000..f2fc9cc6 --- /dev/null +++ b/package/quagga/0002-lib-prefix.h-fix-build-with-gcc-10.patch @@ -0,0 +1,36 @@ +From 01bcd0f7411f86eea44247bf91b48882cae35519 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 21 Sep 2020 23:12:25 +0200 +Subject: [PATCH] lib/prefix.h: fix build with gcc 10 + +Remove __packed to fix the following build failure with gcc 10 (which +defaults to -fno-common): + + CCLD libzebra.la +/tmp/instance-1/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: .libs/sockunion.o:(.bss+0x0): multiple definition of `__packed'; .libs/vty.o:(.bss+0x6c): first defined here + +Fixes: + - http://autobuild.buildroot.org/results/82b15cff3f7b943eb93d8270790f1b8561d31d6a + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://bugzilla.quagga.net/show_bug.cgi?id=1014] +--- + lib/prefix.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/prefix.h b/lib/prefix.h +index 2cf0b20b..a5306eee 100644 +--- a/lib/prefix.h ++++ b/lib/prefix.h +@@ -44,7 +44,7 @@ + */ + struct ethaddr { + u_char octet[ETHER_ADDR_LEN]; +-} __packed; ++}; + + + /* +-- +2.28.0 + diff --git a/package/quagga/0003-Fix-build-with-gcc-10.patch b/package/quagga/0003-Fix-build-with-gcc-10.patch new file mode 100644 index 00000000..fbe85165 --- /dev/null +++ b/package/quagga/0003-Fix-build-with-gcc-10.patch @@ -0,0 +1,127 @@ +From 7a446434302d7b71211b81b3c6cd12a7b35223d1 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 6 Mar 2021 16:28:37 +0100 +Subject: [PATCH] Fix build with gcc 10 + +Fix the following build failure with gcc 10 (which defaults to +-fno-common): + + CCLD pimd +/home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: pimd.o:(.bss+0x8): multiple definition of `qpim_static_route_list'; pim_main.o:(.bss+0x8): first defined here +/home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: pimd.o:(.bss+0x28): multiple definition of `qpim_mroute_del_last'; pim_main.o:(.bss+0x10): first defined here + +Fixes: + - http://autobuild.buildroot.org/results/fd5ee2b52a3cfaec268fafd3ffe4c30e51465c7e + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://bugzilla.quagga.net/show_bug.cgi?id=1014] +--- + pimd/pim_version.h | 2 +- + pimd/pimd.c | 1 + + pimd/pimd.h | 66 +++++++++++++++++++++++----------------------- + 3 files changed, 35 insertions(+), 34 deletions(-) + +diff --git a/pimd/pim_version.h b/pimd/pim_version.h +index ef9f370c..891d4314 100644 +--- a/pimd/pim_version.h ++++ b/pimd/pim_version.h +@@ -25,6 +25,6 @@ + + #define PIMD_VERSION_STR "0.166" + +-const char * const PIMD_VERSION; ++extern const char * const PIMD_VERSION; + + #endif /* PIM_VERSION_H */ +diff --git a/pimd/pimd.c b/pimd/pimd.c +index 97fb2233..d7340cc0 100644 +--- a/pimd/pimd.c ++++ b/pimd/pimd.c +@@ -50,6 +50,7 @@ int64_t qpim_mroute_socket_creation = 0; /* timestamp of creat + struct thread *qpim_mroute_socket_reader = 0; + int qpim_mroute_oif_highest_vif_index = -1; + struct list *qpim_channel_oil_list = 0; ++struct in_addr qpim_all_pim_routers_addr; + int qpim_t_periodic = PIM_DEFAULT_T_PERIODIC; /* Period between Join/Prune Messages */ + struct list *qpim_upstream_list = 0; + struct zclient *qpim_zclient_update = 0; +diff --git a/pimd/pimd.h b/pimd/pimd.h +index 9a7e6058..8b3496fd 100644 +--- a/pimd/pimd.h ++++ b/pimd/pimd.h +@@ -68,39 +68,39 @@ + #define PIM_MASK_PIM_J_P (1 << 12) + #define PIM_MASK_STATIC (1 << 13) + +-const char *const PIM_ALL_SYSTEMS; +-const char *const PIM_ALL_ROUTERS; +-const char *const PIM_ALL_PIM_ROUTERS; +-const char *const PIM_ALL_IGMP_ROUTERS; +- +-struct thread_master *master; +-uint32_t qpim_debugs; +-int qpim_mroute_socket_fd; +-int64_t qpim_mroute_socket_creation; /* timestamp of creation */ +-struct thread *qpim_mroute_socket_reader; +-int qpim_mroute_oif_highest_vif_index; +-struct list *qpim_channel_oil_list; /* list of struct channel_oil */ +-struct in_addr qpim_all_pim_routers_addr; +-int qpim_t_periodic; /* Period between Join/Prune Messages */ +-struct list *qpim_upstream_list; /* list of struct pim_upstream */ +-struct zclient *qpim_zclient_update; +-struct zclient *qpim_zclient_lookup; +-struct pim_assert_metric qpim_infinite_assert_metric; +-long qpim_rpf_cache_refresh_delay_msec; +-struct thread *qpim_rpf_cache_refresher; +-int64_t qpim_rpf_cache_refresh_requests; +-int64_t qpim_rpf_cache_refresh_events; +-int64_t qpim_rpf_cache_refresh_last; +-struct in_addr qpim_inaddr_any; +-struct list *qpim_ssmpingd_list; /* list of struct ssmpingd_sock */ +-struct in_addr qpim_ssmpingd_group_addr; +-int64_t qpim_scan_oil_events; +-int64_t qpim_scan_oil_last; +-int64_t qpim_mroute_add_events; +-int64_t qpim_mroute_add_last; +-int64_t qpim_mroute_del_events; +-int64_t qpim_mroute_del_last; +-struct list *qpim_static_route_list; /* list of routes added statically */ ++extern const char *const PIM_ALL_SYSTEMS; ++extern const char *const PIM_ALL_ROUTERS; ++extern const char *const PIM_ALL_PIM_ROUTERS; ++extern const char *const PIM_ALL_IGMP_ROUTERS; ++ ++extern struct thread_master *master; ++extern uint32_t qpim_debugs; ++extern int qpim_mroute_socket_fd; ++extern int64_t qpim_mroute_socket_creation; /* timestamp of creation */ ++extern struct thread *qpim_mroute_socket_reader; ++extern int qpim_mroute_oif_highest_vif_index; ++extern struct list *qpim_channel_oil_list; /* list of struct channel_oil */ ++extern struct in_addr qpim_all_pim_routers_addr; ++extern int qpim_t_periodic; /* Period between Join/Prune Messages */ ++extern struct list *qpim_upstream_list; /* list of struct pim_upstream */ ++extern struct zclient *qpim_zclient_update; ++extern struct zclient *qpim_zclient_lookup; ++extern struct pim_assert_metric qpim_infinite_assert_metric; ++extern long qpim_rpf_cache_refresh_delay_msec; ++extern struct thread *qpim_rpf_cache_refresher; ++extern int64_t qpim_rpf_cache_refresh_requests; ++extern int64_t qpim_rpf_cache_refresh_events; ++extern int64_t qpim_rpf_cache_refresh_last; ++extern struct in_addr qpim_inaddr_any; ++extern struct list *qpim_ssmpingd_list; /* list of struct ssmpingd_sock */ ++extern struct in_addr qpim_ssmpingd_group_addr; ++extern int64_t qpim_scan_oil_events; ++extern int64_t qpim_scan_oil_last; ++extern int64_t qpim_mroute_add_events; ++extern int64_t qpim_mroute_add_last; ++extern int64_t qpim_mroute_del_events; ++extern int64_t qpim_mroute_del_last; ++extern struct list *qpim_static_route_list; /* list of routes added statically */ + + #define PIM_JP_HOLDTIME (qpim_t_periodic * 7 / 2) + +-- +2.30.0 + diff --git a/package/quagga/Config.in b/package/quagga/Config.in new file mode 100644 index 00000000..9361b6a2 --- /dev/null +++ b/package/quagga/Config.in @@ -0,0 +1,95 @@ +config BR2_PACKAGE_QUAGGA + bool "quagga" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + Routing software suite, providing implementations of OSPFv2, + OSPFv3 (IPv6), RIP v1 and v2, RIPng (IPv6) and BGPv4+. + + http://www.quagga.net/ + +if BR2_PACKAGE_QUAGGA + +config BR2_PACKAGE_QUAGGA_ZEBRA + bool "zebra daemon" + help + Build zebra daemon. + +config BR2_PACKAGE_QUAGGA_TCP_ZEBRA + bool "Use TCP sockets between zebra and protocol daemons" + depends on BR2_PACKAGE_QUAGGA_ZEBRA + help + Use a TCP socket to communicate between zebra (supervisor) + and the different protocol daemons. + + You'll want this enabled if zebra and the protocol daemon(s) + run on different hosts. + +config BR2_PACKAGE_QUAGGA_BGPD + bool "BGPv4+ protocol" + help + Build bgpd daemon. + +config BR2_PACKAGE_QUAGGA_BGP_ANNOUNCE + bool "BGP route announcement" + depends on BR2_PACKAGE_QUAGGA_BGPD + +config BR2_PACKAGE_QUAGGA_ISISD + bool "IS-IS protocol" + help + Enable isisd support in quagga. + +config BR2_PACKAGE_QUAGGA_NHRPD + bool "NHRPD protocol" + select BR2_PACKAGE_C_ARES + help + Build Next Hop Routing Protocol daemon. + +config BR2_PACKAGE_QUAGGA_OSPFD + bool "OSPFv2 protocol" + help + Build ospfd daemon. + +config BR2_PACKAGE_QUAGGA_OSPF6D + bool "OSPFv3 (IPv6) protocol" + help + Build ospf6d daemon. + +config BR2_PACKAGE_QUAGGA_RIPD + bool "RIPv2/v3 protocol" + help + Build ripd daemon. + +config BR2_PACKAGE_QUAGGA_RIPNGD + bool "RIPng (IPv6) protocol" + help + Build ripngd daemon. + +config BR2_PACKAGE_QUAGGA_PIMD + bool "PIMd protocol" + help + Provides IPv4 PIM-SSM multicast routing. + +config BR2_PACKAGE_QUAGGA_WATCHQUAGGA + bool "Build watchquagga" + help + Build and install watchquagga, a zebra/protocol daemon + supervisor. + +config BR2_PACKAGE_QUAGGA_VTYSH + bool "Build vtysh" + select BR2_PACKAGE_READLINE + help + Build and install vtysh, a vty shell for Quagga. + +config BR2_PACKAGE_QUAGGA_SNMP + bool "SNMP support" + depends on BR2_USE_MMU # net-snmp + select BR2_PACKAGE_NETSNMP + help + Make quagga information available via SNMP SMUX. + +comment "AgentX support must be enabled in net-snmp or the build will break" + depends on BR2_PACKAGE_QUAGGA_SNMP + +endif diff --git a/package/quagga/quagga.hash b/package/quagga/quagga.hash new file mode 100644 index 00000000..d63908ad --- /dev/null +++ b/package/quagga/quagga.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +sha256 e364c082c3309910e1eb7b068bf39ee298e2f2f3f31a6431a5c115193bd653d3 quagga-1.2.4.tar.gz + +# Hash for license file +sha256 b39c1bad4e51e2a3389cd25fc4addebe41a3ae7c11100795683f9330de1536e5 COPYING diff --git a/package/quagga/quagga.mk b/package/quagga/quagga.mk new file mode 100644 index 00000000..5d8d5226 --- /dev/null +++ b/package/quagga/quagga.mk @@ -0,0 +1,114 @@ +################################################################################ +# +# quagga +# +################################################################################ + +QUAGGA_VERSION = 1.2.4 +QUAGGA_SITE = http://download.savannah.gnu.org/releases/quagga +QUAGGA_INSTALL_STAGING = YES +QUAGGA_DEPENDENCIES = host-gawk host-pkgconf +QUAGGA_LICENSE = GPL-2.0+ +QUAGGA_LICENSE_FILES = COPYING +QUAGGA_CPE_ID_VENDOR = quagga +QUAGGA_SELINUX_MODULES = zebra + +# We need to override the sysconf and localstate directories so that +# quagga can create files as the quagga user without extra +# intervention +QUAGGA_CONF_OPTS = \ + --program-transform-name='' \ + --sysconfdir=/etc/quagga \ + --localstatedir=/var/run/quagga + +# quagga has its own internal copy of getopt_long. To avoid conflicts with libc's +# getopt, we need to make sure that the getopt function itself is also built. +QUAGGA_CONF_ENV = \ + CFLAGS="$(TARGET_CFLAGS) -DREALLY_NEED_PLAIN_GETOPT" + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +QUAGGA_CONF_OPTS += --enable-capabilities +QUAGGA_DEPENDENCIES += libcap +else +QUAGGA_CONF_OPTS += --disable-capabilities +endif + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +QUAGGA_DEPENDENCIES += libxcrypt +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) +QUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_RIPNGD),--enable-ripngd,--disable-ripngd) +QUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_OSPFD),--enable-ospfd,--disable-ospfd --disable-ospfapi) +QUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_OSPF6D),--enable-ospf6d,--disable-ospf6d) +QUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_PIMD),--enable-pimd,--disable-pimd) +QUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_WATCHQUAGGA),--enable-watchquagga,--disable-watchquagga) +QUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_ISISD),--enable-isisd,--disable-isisd) +QUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_BGP_ANNOUNCE),--enable-bgp-announce,--disable-bgp-announce) +QUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_TCP_ZEBRA),--enable-tcp-zebra,--disable-tcp-zebra) + +define QUAGGA_USERS + quagga -1 quagga -1 * - - - Quagga priv drop user +endef + +# Set the permissions of /etc/quagga such that quagga (through vtysh) +# can save the configuration - set the folder recursively as the files +# need to be 600, and then set the folder (non-recursively) to 755 so +# it can used. Quagga also needs to write to the folder as it moves +# and creates, rather than overwriting. +define QUAGGA_PERMISSIONS + /etc/quagga r 600 quagga quagga - - - - - + /etc/quagga d 755 quagga quagga - - - - - +endef + +# In order for the QUAGGA_PERMISSIONS variable above to work, +# /etc/quagga has to exist. However, this package without any +# sub-option enabled will not create /etc/quagga, so let's create it +# unconditionally in a post-install hook, in case it hasn't been +# already created by the quagga installation. +define QUAGGA_CREATE_ETC_QUAGGA + mkdir -p $(TARGET_DIR)/etc/quagga +endef +QUAGGA_POST_INSTALL_TARGET_HOOKS += QUAGGA_CREATE_ETC_QUAGGA + +ifeq ($(BR2_PACKAGE_QUAGGA_NHRPD),y) +QUAGGA_CONF_OPTS += --enable-nhrpd +QUAGGA_DEPENDENCIES += c-ares +else +QUAGGA_CONF_OPTS += --disable-nhrpd +endif + +ifeq ($(BR2_PACKAGE_QUAGGA_SNMP),y) +QUAGGA_CONF_ENV += ac_cv_path_NETSNMP_CONFIG=$(STAGING_DIR)/usr/bin/net-snmp-config +QUAGGA_CONF_OPTS += --enable-snmp=agentx +QUAGGA_DEPENDENCIES += netsnmp +endif + +ifeq ($(BR2_PACKAGE_QUAGGA_VTYSH),y) +QUAGGA_CONF_OPTS += --enable-vtysh +QUAGGA_DEPENDENCIES += readline +else +QUAGGA_CONF_OPTS += --disable-vtysh +endif + +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) +QUAGGA_CONF_OPTS += --disable-pie +endif + +define QUAGGA_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/quagga/quagga_tmpfiles.conf \ + $(TARGET_DIR)/usr/lib/tmpfiles.d/quagga.conf + $(INSTALL) -D -m 644 package/quagga/quagga@.service \ + $(TARGET_DIR)/usr/lib/systemd/system/quagga@.service +endef + +$(eval $(autotools-package)) diff --git a/package/quagga/quagga@.service b/package/quagga/quagga@.service new file mode 100644 index 00000000..797af32e --- /dev/null +++ b/package/quagga/quagga@.service @@ -0,0 +1,17 @@ +[Unit] +Description=Quagga %i routing daemon +ConditionFileIsExecutable=/usr/sbin/%i +Wants=quagga@zebra.service + +[Service] +Type=simple +EnvironmentFile=/etc/default/quagga-%i +PrivateTmp=true +# Systemd doesn't like having %i in the executable path. +ExecStart=/usr/bin/env /usr/sbin/%i $OPTS -f /etc/quagga/%i.conf +ExecReload=/bin/kill -HUP $MAINPID +Restart=on-failure + +[Install] +WantedBy=multi-user.target + diff --git a/package/quagga/quagga_tmpfiles.conf b/package/quagga/quagga_tmpfiles.conf new file mode 100644 index 00000000..e16c475f --- /dev/null +++ b/package/quagga/quagga_tmpfiles.conf @@ -0,0 +1 @@ +d /var/run/quagga/ 1755 quagga quagga - diff --git a/package/quazip/Config.in b/package/quazip/Config.in new file mode 100644 index 00000000..4c7a1875 --- /dev/null +++ b/package/quazip/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_QUAZIP + bool "quazip" + depends on BR2_PACKAGE_QT5 || BR2_PACKAGE_QT6 + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_ZLIB_FORCE_LIBZLIB + select BR2_PACKAGE_QT6CORE5COMPAT if BR2_PACKAGE_QT6 + help + QuaZIP is a simple C++ wrapper over Gilles Vollant's + ZIP/UNZIP package that can be used to access ZIP + archives. It uses the Qt toolkit. + + http://quazip.sourceforge.net diff --git a/package/quazip/quazip.hash b/package/quazip/quazip.hash new file mode 100644 index 00000000..1c5c614c --- /dev/null +++ b/package/quazip/quazip.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 79633fd3a18e2d11a7d5c40c4c79c1786ba0c74b59ad752e8429746fe1781dd6 quazip-1.4.tar.gz +sha256 b455b21b0d31d6e51993f1fb7e0694c75fa0eb0519a9ea62e4815fcf48b140b0 COPYING diff --git a/package/quazip/quazip.mk b/package/quazip/quazip.mk new file mode 100644 index 00000000..ac28792f --- /dev/null +++ b/package/quazip/quazip.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# quazip +# +################################################################################ + +QUAZIP_VERSION = 1.4 +QUAZIP_SITE = $(call github,stachenov,quazip,v$(QUAZIP_VERSION)) +QUAZIP_INSTALL_STAGING = YES +QUAZIP_DEPENDENCIES = zlib + +ifeq ($(BR2_PACKAGE_QT5BASE),y) +QUAZIP_DEPENDENCIES += qt5base +endif +ifeq ($(BR2_PACKAGE_QT6BASE),y) +QUAZIP_DEPENDENCIES += qt6base qt6core5compat +endif + +QUAZIP_LICENSE = LGPL-2.1 +QUAZIP_LICENSE_FILES = COPYING +QUAZIP_CPE_ID_VALID = YES + +$(eval $(cmake-package)) diff --git a/package/quickjs/Config.in b/package/quickjs/Config.in new file mode 100644 index 00000000..fd174bc6 --- /dev/null +++ b/package/quickjs/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_QUICKJS + bool "quickjs" + depends on !BR2_microblaze # fenv.h lacks FE_{DOWN,UP}WARD + depends on !BR2_nios2 # fenv.h lacks FE_{DOWN,UP}WARD on nios2 + depends on !BR2_sh # fenv.h lacks FE_{DOWN,UP}WARD + depends on !BR2_STATIC_LIBS + # No way to check for fenv support. + depends on !BR2_TOOLCHAIN_USES_UCLIBC + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C11/stdatomic.h + depends on BR2_HOST_GCC_AT_LEAST_4_9 # C11/stdatomic.h + depends on BR2_USE_MMU # fork() + help + QuickJS is a small and embeddable Javascript engine. + It supports the ES2020 specification including modules, + asynchronous generators, proxies and BigInt. + + https://bellard.org/quickjs/ + +comment "quickjs needs a glibc or musl toolchain w/ gcc >= 4.9, host gcc >= 4.9, dynamic library" + depends on !BR2_microblaze + depends on !BR2_nios2 + depends on !BR2_sh + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_UCLIBC || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_HOST_GCC_AT_LEAST_4_9 diff --git a/package/quickjs/quickjs.hash b/package/quickjs/quickjs.hash new file mode 100644 index 00000000..30613b98 --- /dev/null +++ b/package/quickjs/quickjs.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3c4bf8f895bfa54beb486c8d1218112771ecfc5ac3be1036851ef41568212e03 quickjs-2024-01-13.tar.xz +sha256 f41baf09eef895d468d18c23055d74f711e4b8b2641cef279b5d71285c07bfe8 LICENSE diff --git a/package/quickjs/quickjs.mk b/package/quickjs/quickjs.mk new file mode 100644 index 00000000..e745923b --- /dev/null +++ b/package/quickjs/quickjs.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# quickjs +# +################################################################################ + +QUICKJS_VERSION = 2024-01-13 +QUICKJS_SOURCE = quickjs-$(QUICKJS_VERSION).tar.xz +QUICKJS_SITE = https://bellard.org/quickjs +QUICKJS_LICENSE = MIT +QUICKJS_LICENSE_FILES = LICENSE +QUICKJS_CPE_ID_VALID = YES +QUICKJS_INSTALL_STAGING = YES + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +QUICKJS_EXTRA_LIBS += -latomic +endif + +define QUICKJS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + CROSS_PREFIX="$(TARGET_CROSS)" \ + EXTRA_LIBS="$(QUICKJS_EXTRA_LIBS)" \ + all +endef + +define QUICKJS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + CROSS_PREFIX="$(TARGET_CROSS)" \ + EXTRA_LIBS="$(QUICKJS_EXTRA_LIBS)" \ + DESTDIR=$(STAGING_DIR) \ + STRIP=/bin/true \ + prefix=/usr \ + install +endef + +define QUICKJS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + CROSS_PREFIX="$(TARGET_CROSS)" \ + EXTRA_LIBS="$(QUICKJS_EXTRA_LIBS)" \ + DESTDIR=$(TARGET_DIR) \ + STRIP=/bin/true \ + prefix=/usr \ + install +endef + +$(eval $(generic-package)) diff --git a/package/quota/Config.in b/package/quota/Config.in new file mode 100644 index 00000000..051a7655 --- /dev/null +++ b/package/quota/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_QUOTA + bool "quota" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC || BR2_TOOLCHAIN_HAS_THREADS # libtirpc + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + help + Implementation of the disk quota system. + + http://sourceforge.net/projects/linuxquota/ + +comment "quota needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || \ + !(BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_HAS_NATIVE_RPC) diff --git a/package/quota/quota.hash b/package/quota/quota.hash new file mode 100644 index 00000000..5b083c91 --- /dev/null +++ b/package/quota/quota.hash @@ -0,0 +1,7 @@ +# From http://sourceforge.net/projects/linuxquota/files/quota-tools/4.09/ (click on info button) +md5 f85c2e15d9a735640675ff4977b57bb6 quota-4.09.tar.gz +sha1 5c215d869626b532be2773f4161bdcc8b9f97126 quota-4.09.tar.gz + +# Locally calculated +sha256 9cdaca154bc92afc3117f0e5f5b3208dd5f84583af1cf061c39baa0a2bb142f9 quota-4.09.tar.gz +sha256 32a5fd41e7a257f7f0373988ea8d45cebdbf376060703c242c11c000751b1203 COPYING diff --git a/package/quota/quota.mk b/package/quota/quota.mk new file mode 100644 index 00000000..1b6a4b19 --- /dev/null +++ b/package/quota/quota.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# quota +# +################################################################################ + +QUOTA_VERSION = 4.09 +QUOTA_SITE = http://downloads.sourceforge.net/project/linuxquota/quota-tools/$(QUOTA_VERSION) +QUOTA_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) host-nfs-utils +QUOTA_LICENSE = GPL-2.0+ +QUOTA_LICENSE_FILES = COPYING +QUOTA_CPE_ID_VENDOR = jan_kara +QUOTA_CPE_ID_PRODUCT = linux_diskquota +QUOTA_SELINUX_MODULES = quota +QUOTA_CONF_ENV = LIBS="$(TARGET_NLS_LIBS)" +QUOTA_CONF_OPTS = --disable-pie + +ifeq ($(BR2_PACKAGE_DBUS)$(BR2_PACKAGE_LIBNL),yy) +QUOTA_DEPENDENCIES += host-pkgconf dbus libnl +QUOTA_CONF_OPTS += --enable-netlink +else +QUOTA_CONF_OPTS += --disable-netlink +endif + +ifeq ($(BR2_PACKAGE_E2FSPROGS),y) +QUOTA_DEPENDENCIES += host-pkgconf e2fsprogs +QUOTA_CONF_OPTS += --enable-ext2direct +else +QUOTA_CONF_OPTS += --disable-ext2direct +endif + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +QUOTA_DEPENDENCIES += libtirpc host-pkgconf +endif + +ifeq ($(BR2_PACKAGE_OPENLDAP):$(BR2_STATIC_LIBS),y:) +QUOTA_DEPENDENCIES += openldap +QUOTA_CONF_OPTS += --enable-ldapmail +else +QUOTA_CONF_OPTS += --disable-ldapmail +endif + +$(eval $(autotools-package)) diff --git a/package/quotatool/0001-fix-missing-__P-definition-for-musl-compile.patch b/package/quotatool/0001-fix-missing-__P-definition-for-musl-compile.patch new file mode 100644 index 00000000..534c7fe9 --- /dev/null +++ b/package/quotatool/0001-fix-missing-__P-definition-for-musl-compile.patch @@ -0,0 +1,37 @@ +From 0e096badc901f755f3bcefabdc57091725a5a0c5 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Thu, 1 Feb 2018 23:50:43 +0100 +Subject: [PATCH] fix missing __P definition for musl compile +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes: + + In file included from src/quota.h:40:0, + from src/parse.c:26: + src/linux/linux_quota.h:120:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__P’ + long quotactl __P((int, const char *, qid_t, caddr_t)); + ^~~ + +Signed-off-by: Peter Seiderer +Upstream: https://github.com/ekenberg/quotatool/pull/28 +--- + src/linux/linux_quota.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/linux/linux_quota.h b/src/linux/linux_quota.h +index 11f9871..2b29a89 100644 +--- a/src/linux/linux_quota.h ++++ b/src/linux/linux_quota.h +@@ -14,6 +14,7 @@ + #ifndef LINUX_QUOTA_H + #define LINUX_QUOTA_H + ++#include + #include + #include "system.h" + +-- +2.16.1 + diff --git a/package/quotatool/Config.in b/package/quotatool/Config.in new file mode 100644 index 00000000..4015cef6 --- /dev/null +++ b/package/quotatool/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_QUOTATOOL + bool "quotatool" + help + Quotatool is a utility to manipulate filesystem quotas from + the commandline. + + http://quotatool.ekenberg.se/ diff --git a/package/quotatool/quotatool.hash b/package/quotatool/quotatool.hash new file mode 100644 index 00000000..9ce9ceae --- /dev/null +++ b/package/quotatool/quotatool.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 ef6b0494c505278ae140d1e105417d73703b4b9e08a1ee1f95dca1e0c19497b7 quotatool-1.6.4.tar.gz + +# Hash for license files: +sha256 94686eeb98a40edc64106c6f8644068d8a08816a510a3cde75e50f1bf470564d COPYING diff --git a/package/quotatool/quotatool.mk b/package/quotatool/quotatool.mk new file mode 100644 index 00000000..5a60ff7b --- /dev/null +++ b/package/quotatool/quotatool.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# quotatool +# +################################################################################ + +QUOTATOOL_VERSION = 1.6.4 +QUOTATOOL_SITE = $(call github,ekenberg,quotatool,v$(QUOTATOOL_VERSION)) +QUOTATOOL_LICENSE = GPL-2.0 +QUOTATOOL_LICENSE_FILES = COPYING + +# men="" allows to disable installing the man pages, which fails +# because the package Makefile doesn't create the appropriate +# directory. +QUOTATOOL_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install men="" + +$(eval $(autotools-package)) diff --git a/package/qwt/Config.in b/package/qwt/Config.in new file mode 100644 index 00000000..736ccc2a --- /dev/null +++ b/package/qwt/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_QWT + bool "qwt" + depends on BR2_PACKAGE_QT5 + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_WIDGETS # printsupport + select BR2_PACKAGE_QT5BASE_CONCURRENT + help + Qwt is a graphics extension to the Qt GUI application + framework. It provides a 2D plotting widget and more. + + http://qwt.sourceforge.net/ + +if BR2_PACKAGE_QWT + +config BR2_PACKAGE_QWT_SVG + bool "SVG support" + select BR2_PACKAGE_QT5SVG + +config BR2_PACKAGE_QWT_MATHML + bool "MathML support" + +config BR2_PACKAGE_QWT_OPENGL + bool "OpenGL support" + depends on BR2_PACKAGE_QT5_GL_AVAILABLE + select BR2_PACKAGE_QT5BASE_OPENGL + select BR2_PACKAGE_QT5BASE_OPENGL_LIB + +endif diff --git a/package/qwt/qwt.hash b/package/qwt/qwt.hash new file mode 100644 index 00000000..d4fd210c --- /dev/null +++ b/package/qwt/qwt.hash @@ -0,0 +1,7 @@ +# From https://sourceforge.net/projects/qwt/files/qwt/6.1.6 +md5 cc71be5d6c33c2fc19ae8082ccdd3e83 qwt-6.1.6.tar.bz2 +sha1 b1f17a86c9b1b0790a0c0067ef69fb6277efac79 qwt-6.1.6.tar.bz2 + +# Locally computed +sha256 99460d31c115ee4117b0175d885f47c2c590d784206f09815dc058fbe5ede1f6 qwt-6.1.6.tar.bz2 +sha256 d8737db330e1eeb439962e11654ab7f1aece3561d9415454a8c538643824ede6 COPYING diff --git a/package/qwt/qwt.mk b/package/qwt/qwt.mk new file mode 100644 index 00000000..9f0b7865 --- /dev/null +++ b/package/qwt/qwt.mk @@ -0,0 +1,64 @@ +################################################################################ +# +# qwt +# +################################################################################ + +QWT_VERSION = 6.1.6 +QWT_SOURCE = qwt-$(QWT_VERSION).tar.bz2 +QWT_SITE = http://downloads.sourceforge.net/project/qwt/qwt/$(QWT_VERSION) +QWT_INSTALL_STAGING = YES + +QWT_LICENSE = LGPL-2.1 with exceptions +QWT_LICENSE_FILES = COPYING + +QWT_CONFIG = 's%QWT_INSTALL_PREFIX.*/usr/local/.*%QWT_INSTALL_PREFIX = /usr%' +QWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtDesigner.*$$/\# QWT_CONFIG += QwtDesigner/' +QWT_CONFIG += -e 's%/features%/mkspecs/features%' + +ifeq ($(BR2_PACKAGE_QWT_SVG),y) +QWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtSvg.*$$/QWT_CONFIG += QwtSvg/' +QWT_DEPENDENCIES += qt5svg +else +QWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtSvg.*$$/\# QWT_CONFIG += QwtSvg/' +endif + +ifeq ($(BR2_PACKAGE_QWT_MATHML),y) +QWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtMathML.*$$/QWT_CONFIG += QwtMathML/' +else +QWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtMathML.*$$/\# QWT_CONFIG += QwtMathML/' +endif + +ifeq ($(BR2_PACKAGE_QWT_OPENGL),y) +QWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtOpenGL.*$$/QWT_CONFIG += QwtOpenGL/' +else +QWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtOpenGL.*$$/\# QWT_CONFIG += QwtOpenGL/' +endif + +ifeq ($(BR2_STATIC_LIBS),y) +QWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtDll.*$$/\# QWT_CONFIG += QwtDll/' +else +QWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtDll.*$$/QWT_CONFIG += QwtDll/' +endif + +define QWT_TWEAK_QWTCONFIG_PRI + $(SED) $(QWT_CONFIG) $(@D)/qwtconfig.pri +endef + +QWT_PRE_CONFIGURE_HOOKS += QWT_TWEAK_QWTCONFIG_PRI + +# After installation, we fixup the INSTALL_PREFIX in qwtconfig.pri so +# that when building with qmake, -L$(STAGING_DIR)/usr/lib is used and +# not -L/usr/lib. +define QWT_INSTALL_STAGING_CMDS + $(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 + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install INSTALL_ROOT=$(TARGET_DIR) + rm -Rf $(TARGET_DIR)/usr/mkspecs +endef + +$(eval $(qmake-package)) diff --git a/package/rabbitmq-c/Config.in b/package/rabbitmq-c/Config.in new file mode 100644 index 00000000..6dbd1467 --- /dev/null +++ b/package/rabbitmq-c/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_RABBITMQ_C + bool "rabbitmq-c" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + help + This is a C-language AMQP client library for use with v2.0+ + of the RabbitMQ broker. + + https://github.com/alanxz/rabbitmq-c + +comment "rabbitmq-c needs a toolchain w/ dynamic library, threads" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/rabbitmq-c/rabbitmq-c.hash b/package/rabbitmq-c/rabbitmq-c.hash new file mode 100644 index 00000000..3eed4678 --- /dev/null +++ b/package/rabbitmq-c/rabbitmq-c.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 839b28eae20075ac58f45925fe991d16a3138cbde015db0ee11df1acb1c493df rabbitmq-c-0.14.0.tar.gz +sha256 3111fdaa26e86dd844d7c6cbb2723d0ed31702a840978ef116c86963c2429b0f LICENSE +sha256 8d661859c72634a4f9315f134ba00d193e1b7308940bc44e82be9a376a490a06 README.md diff --git a/package/rabbitmq-c/rabbitmq-c.mk b/package/rabbitmq-c/rabbitmq-c.mk new file mode 100644 index 00000000..4545a43a --- /dev/null +++ b/package/rabbitmq-c/rabbitmq-c.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# rabbitmq-c +# +################################################################################ + +RABBITMQ_C_VERSION = 0.14.0 +RABBITMQ_C_SITE = $(call github,alanxz,rabbitmq-c,v$(RABBITMQ_C_VERSION)) +RABBITMQ_C_LICENSE = MIT +RABBITMQ_C_LICENSE_FILES = LICENSE README.md +RABBITMQ_C_CPE_ID_VALID = YES +RABBITMQ_C_INSTALL_STAGING = YES +RABBITMQ_C_CONF_OPTS = \ + -DBUILD_API_DOCS=OFF \ + -DBUILD_TOOLS_DOCS=OFF + +# BUILD_SHARED_LIBS is handled in pkg-cmake.mk as it is a generic cmake variable +ifeq ($(BR2_SHARED_STATIC_LIBS),y) +RABBITMQ_C_CONF_OPTS += -DBUILD_STATIC_LIBS=ON +else ifeq ($(BR2_SHARED_LIBS),y) +RABBITMQ_C_CONF_OPTS += -DBUILD_STATIC_LIBS=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +RABBITMQ_C_CONF_OPTS += -DENABLE_SSL_SUPPORT=ON +RABBITMQ_C_DEPENDENCIES += openssl +else +RABBITMQ_C_CONF_OPTS += -DENABLE_SSL_SUPPORT=OFF +endif + +ifeq ($(BR2_PACKAGE_POPT),y) +RABBITMQ_C_CONF_OPTS += -DBUILD_TOOLS=ON +RABBITMQ_C_DEPENDENCIES += popt +else +RABBITMQ_C_CONF_OPTS += -DBUILD_TOOLS=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/racehound/0001-Fix-module-install-path-lib-instead-of-usr-lib-prefi.patch b/package/racehound/0001-Fix-module-install-path-lib-instead-of-usr-lib-prefi.patch new file mode 100644 index 00000000..6cac55d3 --- /dev/null +++ b/package/racehound/0001-Fix-module-install-path-lib-instead-of-usr-lib-prefi.patch @@ -0,0 +1,26 @@ +From 4f8ed39ddaf17c7dd4ddbdb88e67097f00c98173 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Thu, 16 Jul 2015 23:11:25 +0200 +Subject: [PATCH] Fix module install path (/lib instead of /usr/lib prefix) + +Signed-off-by: Peter Seiderer +--- + cmake/modules/path_prefixes.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cmake/modules/path_prefixes.cmake b/cmake/modules/path_prefixes.cmake +index 3cb1fe2..9dc50a4 100644 +--- a/cmake/modules/path_prefixes.cmake ++++ b/cmake/modules/path_prefixes.cmake +@@ -113,7 +113,7 @@ set(RH_INSTALL_PREFIX_DOC + # Set derivative prefixes + + # additional, 1 +-set(RH_INSTALL_PREFIX_KMODULE "${RH_INSTALL_PREFIX_LIB}/modules/${KBUILD_VERSION_STRING}/misc") ++set(RH_INSTALL_PREFIX_KMODULE "/lib/modules/${KBUILD_VERSION_STRING}/misc") + # Another variant + #"${RH_INSTALL_PREFIX_LIB}/modules/${KBUILD_VERSION_STRING}/extra") + # additional, 2 +-- +2.1.4 + diff --git a/package/racehound/Config.in b/package/racehound/Config.in new file mode 100644 index 00000000..5b8bdc77 --- /dev/null +++ b/package/racehound/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_RACEHOUND + bool "racehound" + depends on BR2_LINUX_KERNEL + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR # elfutils + depends on !BR2_STATIC_LIBS # elfutils + depends on BR2_TOOLCHAIN_HAS_THREADS # elfutils + # only x86/x86_64 supported + depends on BR2_i386 || BR2_x86_64 + select BR2_PACKAGE_ELFUTILS + select BR2_LINUX_NEEDS_MODULES # not using kernel-module infra + help + RaceHound can be used to detect data races in the Linux + kernel on x86. + + RaceHound needs the following kernel configurations enabled: + - CONFIG_X86_32 or CONFIG_X86_64 + - CONFIG_MODULES + - CONFIG_MODULE_UNLOAD + - CONFIG_SYSFS + - CONFIG_DEBUG_FS + - CONFIG_KALLSYMS + - CONFIG_KALLSYMS_ALL + - CONFIG_KPROBES + + https://github.com/winnukem/racehound + +comment "racehound needs an Linux kernel >= 3.14 to be built" + depends on !BR2_LINUX_KERNEL + depends on BR2_i386 || BR2_x86_64 + +comment "racehound needs a toolchain w/ C++, wchar, dynamic library, threads" + depends on BR2_i386 || BR2_x86_64 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/racehound/racehound.hash b/package/racehound/racehound.hash new file mode 100644 index 00000000..fc642430 --- /dev/null +++ b/package/racehound/racehound.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 935bc4a7c7b645dee5b905f6e97d0db3f0ac4f48e71d15f4e3982811017ac43c racehound-f09f06fcc3c77c8c5541be3ba5be80aa8148ce0c.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/racehound/racehound.mk b/package/racehound/racehound.mk new file mode 100644 index 00000000..6499e166 --- /dev/null +++ b/package/racehound/racehound.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# racehound +# +################################################################################ + +RACEHOUND_VERSION = f09f06fcc3c77c8c5541be3ba5be80aa8148ce0c +RACEHOUND_SITE = $(call github,winnukem,racehound,$(RACEHOUND_VERSION)) +RACEHOUND_LICENSE = GPL-2.0 +RACEHOUND_LICENSE_FILES = LICENSE +RACEHOUND_SUPPORTS_IN_SOURCE_BUILD = NO + +RACEHOUND_DEPENDENCIES = elfutils linux + +# override auto detection (uses host parameters, not cross compile +# ready) +RACEHOUND_CONF_OPTS += \ + -DKERNEL_VERSION_OK=YES \ + -DMODULE_BUILD_SUPPORTED=YES \ + -DKERNEL_CONFIG_OK=YES \ + -DKBUILD_BUILD_DIR=$(LINUX_DIR) \ + -DKBUILD_VERSION_STRING=$(LINUX_VERSION_PROBED) + +# cross compile environment for linux kernel module +RACEHOUND_MAKE_ENV = $(LINUX_MAKE_FLAGS) + +$(eval $(cmake-package)) diff --git a/package/radvd/50-radvd.preset b/package/radvd/50-radvd.preset new file mode 100644 index 00000000..90d0ee4b --- /dev/null +++ b/package/radvd/50-radvd.preset @@ -0,0 +1 @@ +disable radvd.service diff --git a/package/radvd/Config.in b/package/radvd/Config.in new file mode 100644 index 00000000..f1df0c3c --- /dev/null +++ b/package/radvd/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_RADVD + bool "radvd" + depends on BR2_USE_MMU # fork() + help + IPv6 Router Advertisement Daemon. + + On busybox and sysvinit systems, radvd will be started only if + a /etc/radvd.conf exists. + + To enable it at build time with systemd, add /etc/radvd.conf + and a /etc/systemd/system-preset/40-radvd.preset file with + + enable radvd.service + + http://www.litech.org/radvd/ diff --git a/package/radvd/S50radvd b/package/radvd/S50radvd new file mode 100644 index 00000000..f73ce24e --- /dev/null +++ b/package/radvd/S50radvd @@ -0,0 +1,59 @@ +#!/bin/sh + +DAEMON="radvd" +PIDFILE="/var/run/$DAEMON.pid" + +RADVD_ARGS="-m syslog" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +[ -f /etc/radvd.conf ] || exit 0 + +[ -f /proc/sys/net/ipv6/conf/all/forwarding ] || { + echo "Error: radvd requires IPv6 forwarding support." + exit 1 +} + +start() { + printf 'Starting %s: ' "$DAEMON" + echo "1" > /proc/sys/net/ipv6/conf/all/forwarding + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -p "$PIDFILE" -x "/usr/sbin/$DAEMON" \ + -- $RADVD_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" -x "/usr/sbin/$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop) + "$1";; + restart|reload) + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/radvd/radvd.hash b/package/radvd/radvd.hash new file mode 100644 index 00000000..a624db24 --- /dev/null +++ b/package/radvd/radvd.hash @@ -0,0 +1,3 @@ +# From http://www.litech.org/radvd/dist/radvd-2.19.tar.gz.sha512 +sha512 caa621fd77e34ff6858d60a41b0ee02aff967ac14f2b84c402359744f4bece5c1563419860431c328adc0385e9893ed1f2421d652247a3aa0dfc0aaad1e01233 radvd-2.19.tar.gz +sha256 40a6db00cf0b97f031eaa6c6e87157788f40ced1b88e3ea6d78779bd2a39dc80 COPYRIGHT diff --git a/package/radvd/radvd.mk b/package/radvd/radvd.mk new file mode 100644 index 00000000..7a3b0a36 --- /dev/null +++ b/package/radvd/radvd.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# radvd +# +################################################################################ + +RADVD_VERSION = 2.19 +RADVD_SITE = http://www.litech.org/radvd/dist +RADVD_DEPENDENCIES = host-bison host-flex host-pkgconf +# We need to ignore , because radvd already includes +# , which conflicts with . +RADVD_CONF_ENV = \ + ac_cv_prog_cc_c99='-std=gnu99' \ + ac_cv_header_linux_if_arp_h=no +RADVD_LICENSE = BSD-4-Clause-like +RADVD_LICENSE_FILES = COPYRIGHT +RADVD_SELINUX_MODULES = radvd + +ifeq ($(BR2_TOOLCHAIN_HAS_SSP),y) +RADVD_CONF_OPTS += --with-stack-protector +else +RADVD_CONF_OPTS += --without-stack-protector +endif + +# We don't provide /etc/radvd.conf, so disable the service by default. +define RADVD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/radvd/50-radvd.preset \ + $(TARGET_DIR)/usr/lib/systemd/system-preset/50-radvd.preset +endef + +define RADVD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/radvd/S50radvd $(TARGET_DIR)/etc/init.d/S50radvd +endef + +$(eval $(autotools-package)) diff --git a/package/ragel/ragel.hash b/package/ragel/ragel.hash new file mode 100644 index 00000000..332f5874 --- /dev/null +++ b/package/ragel/ragel.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 5f156edb65d20b856d638dd9ee2dfb43285914d9aa2b6ec779dac0270cd56c3f ragel-6.10.tar.gz +sha256 05a87975accb539399d0c8a4f4402ac27a6762fb1e4f31d04d455a8bee3e3693 COPYING diff --git a/package/ragel/ragel.mk b/package/ragel/ragel.mk new file mode 100644 index 00000000..56afcd72 --- /dev/null +++ b/package/ragel/ragel.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# ragel +# +################################################################################ + +RAGEL_VERSION = 6.10 +RAGEL_SITE = https://www.colm.net/files/ragel/ +RAGEL_LICENSE = GPL-2.0 +RAGEL_LICENSE_FILES = COPYING +RAGEL_CONF_OPTS = \ + --disable-silent-rules \ + --disable-manual \ + --disable-dependency-tracking + +$(eval $(host-autotools-package)) diff --git a/package/ramsmp/Config.in b/package/ramsmp/Config.in new file mode 100644 index 00000000..411e7de9 --- /dev/null +++ b/package/ramsmp/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_RAMSMP + bool "ramspeed/smp" + depends on BR2_USE_MMU # fork() + help + RAMspeed/SMP is a free open source command line utility to + measure cache and memory performance of multiprocessor + machines. + + http://alasir.com/software/ramspeed/ diff --git a/package/ramsmp/Makefile b/package/ramsmp/Makefile new file mode 100644 index 00000000..5cd76e09 --- /dev/null +++ b/package/ramsmp/Makefile @@ -0,0 +1,14 @@ + +all: generic + +generic: ramsmp.c fltmem.c fltmark.c intmem.c intmark.c + $(CC) $(CFLAGS) $(LDFLAGS) $^ -o ramsmp + +i386: ramsmp.c i386/*.s i386/cpuinfo/*.s + $(CC) $(CFLAGS) -DI386_ASM $(LDFLAGS) $^ -o ramsmp + +x86_64: ramsmp.c amd64/*.s + $(CC) $(CFLAGS) -DAMD64_ASM $(LDFLAGS) $^ -o ramsmp + +clean: + rm -f *.o ramsmp diff --git a/package/ramsmp/ramsmp.hash b/package/ramsmp/ramsmp.hash new file mode 100644 index 00000000..c5e29a39 --- /dev/null +++ b/package/ramsmp/ramsmp.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 39fb15493fb3c293575746d56f6ab9faaa1d876d8b1f0d8e5a4042d2ace95839 ramsmp-3.5.0.tar.gz +sha256 2c308cffbab01762f8f6b11725725a227080746ef865f2756c9c9e1591dddaad LICENCE diff --git a/package/ramsmp/ramsmp.mk b/package/ramsmp/ramsmp.mk new file mode 100644 index 00000000..6098376d --- /dev/null +++ b/package/ramsmp/ramsmp.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# ramsmp +# +################################################################################ + +RAMSMP_VERSION = 3.5.0 +RAMSMP_SITE = http://www.alasir.com/software/ramspeed +RAMSMP_ARCH = $(if $(BR2_i386),i386)$(if $(BR2_x86_64),x86_64) +RAMSMP_LICENSE = Alasir License +RAMSMP_LICENSE_FILES = LICENCE + +define RAMSMP_BUILD_CMDS + cp -f package/ramsmp/Makefile $(@D) + $(TARGET_CONFIGURE_OPTS) make -C $(@D) $(RAMSMP_ARCH) +endef + +define RAMSMP_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/ramsmp $(TARGET_DIR)/usr/bin/ramsmp +endef + +$(eval $(generic-package)) diff --git a/package/ramspeed/Config.in b/package/ramspeed/Config.in new file mode 100644 index 00000000..bd0438ff --- /dev/null +++ b/package/ramspeed/Config.in @@ -0,0 +1,11 @@ +comment "ramspeed needs a toolchain not affected by GCC bug 43744" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_43744 + +config BR2_PACKAGE_RAMSPEED + bool "ramspeed" + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_43744 + help + RAMspeed is a free open source command line utility + to measure cache and memory performance. + + http://alasir.com/software/ramspeed/ diff --git a/package/ramspeed/Makefile b/package/ramspeed/Makefile new file mode 100644 index 00000000..f4a4de6a --- /dev/null +++ b/package/ramspeed/Makefile @@ -0,0 +1,14 @@ + +all: generic + +generic: ramspeed.c fltmem.c fltmark.c intmem.c intmark.c + $(CC) $(CFLAGS) $(LDFLAGS) $^ -o ramspeed + +i386: ramspeed.c i386/*.s i386/cpuinfo/*.s + $(CC) $(CFLAGS) -DI386_ASM $(LDFLAGS) $^ -o ramspeed + +x86_64: ramspeed.c amd64/*.s + $(CC) $(CFLAGS) -DAMD64_ASM $(LDFLAGS) $^ -o ramspeed + +clean: + rm -f *.o ramspeed diff --git a/package/ramspeed/ramspeed.hash b/package/ramspeed/ramspeed.hash new file mode 100644 index 00000000..5a6bfe3e --- /dev/null +++ b/package/ramspeed/ramspeed.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 f84e2e42b2b6b221ef9b586f6ae63d863db4ff21858e0ce7c84622a7c9522950 ramspeed-2.6.0.tar.gz +sha256 2c308cffbab01762f8f6b11725725a227080746ef865f2756c9c9e1591dddaad LICENCE diff --git a/package/ramspeed/ramspeed.mk b/package/ramspeed/ramspeed.mk new file mode 100644 index 00000000..7dc4faae --- /dev/null +++ b/package/ramspeed/ramspeed.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# ramspeed +# +################################################################################ + +RAMSPEED_VERSION = 2.6.0 +RAMSPEED_SITE = http://www.alasir.com/software/ramspeed +RAMSPEED_ARCH = $(if $(BR2_i386),i386)$(if $(BR2_x86_64),x86_64) +RAMSPEED_LICENSE = Alasir License +RAMSPEED_LICENSE_FILES = LICENCE + +define RAMSPEED_BUILD_CMDS + cp -f package/ramspeed/Makefile $(@D) + $(TARGET_CONFIGURE_OPTS) make -C $(@D) $(RAMSPEED_ARCH) +endef + +define RAMSPEED_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/ramspeed $(TARGET_DIR)/usr/bin/ramspeed +endef + +$(eval $(generic-package)) diff --git a/package/ranger/Config.in b/package/ranger/Config.in new file mode 100644 index 00000000..056f806c --- /dev/null +++ b/package/ranger/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_RANGER + bool "ranger" + depends on BR2_USE_MMU # python3 + depends on BR2_USE_WCHAR # python3 + depends on BR2_TOOLCHAIN_HAS_THREADS # python3 + depends on !BR2_STATIC_LIBS # python3 + select BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON3_CURSES + help + ranger is a console file manager with VI key bindings. It + provides a minimalistic and nice curses interface with a + view on the directory hierarchy. It ships with "rifle", a + file launcher that is good at automatically finding out + which program to use for what file type. + + https://ranger.github.io + +comment "ranger 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/package/ranger/ranger.hash b/package/ranger/ranger.hash new file mode 100644 index 00000000..b1ae8a8b --- /dev/null +++ b/package/ranger/ranger.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +sha256 ce088a04c91c25263a9675dc5c43514b7ec1b38c8ea43d9a9d00923ff6cdd251 ranger-1.9.3.tar.gz +# Locally computed +sha256 ef973501404bd0556fd47324411fc69679f30daf7128e042eafa64e2c4f9ecb9 AUTHORS +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE diff --git a/package/ranger/ranger.mk b/package/ranger/ranger.mk new file mode 100644 index 00000000..d8a55b1f --- /dev/null +++ b/package/ranger/ranger.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# ranger +# +################################################################################ + +RANGER_VERSION = 1.9.3 +RANGER_SITE = https://ranger.github.io +RANGER_SETUP_TYPE = setuptools +RANGER_LICENSE = GPL-3.0 +RANGER_LICENSE_FILES = AUTHORS LICENSE + +# The ranger script request python to be called with -O (optimize generated +# bytecode slightly; also PYTHONOPTIMIZE=x). This implicitly requires the python +# source files to be present. Therefore, the -O flag is removed when only the .pyc +# files are installed. + +define RANGER_DO_NOT_GENERATE_BYTECODE_AT_RUNTIME + $(SED) 's%/usr/bin/python -O%/usr/bin/python%g' $(@D)/ranger.py +endef + +ifeq ($(BR2_PACKAGE_PYTHON3_PYC_ONLY),y) +RANGER_POST_PATCH_HOOKS += RANGER_DO_NOT_GENERATE_BYTECODE_AT_RUNTIME +endif + +$(eval $(python-package)) diff --git a/package/rapidjson/Config.in b/package/rapidjson/Config.in new file mode 100644 index 00000000..abf8996a --- /dev/null +++ b/package/rapidjson/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_RAPIDJSON + bool "rapidjson" + depends on BR2_INSTALL_LIBSTDCPP + help + A fast JSON parser/generator for C++ with both SAX/DOM style + API. + + http://rapidjson.org/ + +comment "rapidjson needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/rapidjson/rapidjson.hash b/package/rapidjson/rapidjson.hash new file mode 100644 index 00000000..ca5befde --- /dev/null +++ b/package/rapidjson/rapidjson.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 39f96f17b40f7201042c9b45d6444cb7eae1b7adfb7455412a86f6140450d32d rapidjson-ab1842a2dae061284c0a62dca1cc6d5e7e37e346.tar.gz +sha256 a140e5d46fe734a1c78f1a3c3ef207871dd75648be71fdda8e309b23ab8b1f32 license.txt diff --git a/package/rapidjson/rapidjson.mk b/package/rapidjson/rapidjson.mk new file mode 100644 index 00000000..3091edea --- /dev/null +++ b/package/rapidjson/rapidjson.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# rapidjson +# +################################################################################ + +RAPIDJSON_VERSION = ab1842a2dae061284c0a62dca1cc6d5e7e37e346 +RAPIDJSON_SITE = $(call github,Tencent,rapidjson,$(RAPIDJSON_VERSION)) +RAPIDJSON_LICENSE = MIT +RAPIDJSON_LICENSE_FILES = license.txt +RAPIDJSON_CPE_ID_VENDOR = tencent + +# rapidjson is a header-only C++ library +RAPIDJSON_INSTALL_TARGET = NO +RAPIDJSON_INSTALL_STAGING = YES + +RAPIDJSON_CONF_OPTS = \ + -DRAPIDJSON_BUILD_DOC=OFF \ + -DRAPIDJSON_BUILD_EXAMPLES=OFF \ + -DRAPIDJSON_BUILD_TESTS=OFF + +$(eval $(cmake-package)) diff --git a/package/rapidxml/0001-ensure-internal-print-operations-are-declared-before.patch b/package/rapidxml/0001-ensure-internal-print-operations-are-declared-before.patch new file mode 100644 index 00000000..fcf1b3cc --- /dev/null +++ b/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/package/rapidxml/Config.in b/package/rapidxml/Config.in new file mode 100644 index 00000000..76b2248e --- /dev/null +++ b/package/rapidxml/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_RAPIDXML + bool "rapidxml" + help + RapidXml is an attempt to create the fastest XML parser + possible, while retaining useability, portability and + reasonable W3C compatibility. It is an in-situ parser with + parsing speed approaching speed of strlen function executed + on the same data. + + http://sourceforge.net/projects/rapidxml/ + https://en.wikipedia.org/wiki/RapidXml diff --git a/package/rapidxml/rapidxml.hash b/package/rapidxml/rapidxml.hash new file mode 100644 index 00000000..292901f4 --- /dev/null +++ b/package/rapidxml/rapidxml.hash @@ -0,0 +1,7 @@ +# From https://sourceforge.net/projects/rapidxml/files/rapidxml/rapidxml%201.13/ +sha1 f5fd4fbc5ad7e96045313697811d65ea8089a950 rapidxml-1.13.zip +md5 7b4b42c9331c90aded23bb55dc725d6a rapidxml-1.13.zip + +# Locally calculated +sha256 c3f0b886374981bb20fabcf323d755db4be6dba42064599481da64a85f5b3571 rapidxml-1.13.zip +sha256 794bf3b2ecf5cf0c740ac6c524d66ce6284c4b1de1f983d21a242b8abbeb9720 license.txt diff --git a/package/rapidxml/rapidxml.mk b/package/rapidxml/rapidxml.mk new file mode 100644 index 00000000..ef2dd397 --- /dev/null +++ b/package/rapidxml/rapidxml.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# rapidxml +# +################################################################################ + +RAPIDXML_VERSION = 1.13 +RAPIDXML_SOURCE = rapidxml-$(RAPIDXML_VERSION).zip +RAPIDXML_SITE = http://downloads.sourceforge.net/project/rapidxml/rapidxml/rapidxml%20$(RAPIDXML_VERSION) +RAPIDXML_LICENSE = BSL-1.0 or MIT +RAPIDXML_LICENSE_FILES = license.txt + +# C++ headers only +RAPIDXML_INSTALL_TARGET = NO +RAPIDXML_INSTALL_STAGING = YES + +define RAPIDXML_EXTRACT_CMDS + $(UNZIP) -d $(@D) $(RAPIDXML_DL_DIR)/$(RAPIDXML_SOURCE) + mv $(@D)/rapidxml-$(RAPIDXML_VERSION)/* $(@D)/ + rmdir $(@D)/rapidxml-$(RAPIDXML_VERSION) +endef + +define RAPIDXML_INSTALL_STAGING_CMDS + mkdir -p $(STAGING_DIR)/usr/include/rapidxml + cp -dpfr $(@D)/*hpp $(STAGING_DIR)/usr/include/rapidxml +endef + +$(eval $(generic-package)) diff --git a/package/raptor/0001-configure.ac-remove-conditional-lib-inclusion.patch b/package/raptor/0001-configure.ac-remove-conditional-lib-inclusion.patch new file mode 100644 index 00000000..7367ad23 --- /dev/null +++ b/package/raptor/0001-configure.ac-remove-conditional-lib-inclusion.patch @@ -0,0 +1,21 @@ +Removed header Include path from the configure file as path was +from the host, which is wrong for the cross compilation. +Upstream: None + +Signed-off-by: Nitin Mendiratta + +diff --git a/configure.ac b/configure.ac +index 10ff870..27b9957 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1145,9 +1145,7 @@ have_lininn=no + have_inn_parsedate=no + + oCPPFLAGS="$CPPFLAGS" +-if test -d /usr/include/inn; then +- CPPFLAGS="$CPPFLAGS -I/usr/include/inn" +-fi ++ + AC_CHECK_HEADER(libinn.h) + CPPFLAGS="$oCPPFLAGS" + diff --git a/package/raptor/0002-Remove-the-access-to-entities-checked-private-symbol.patch b/package/raptor/0002-Remove-the-access-to-entities-checked-private-symbol.patch new file mode 100644 index 00000000..cd9542a9 --- /dev/null +++ b/package/raptor/0002-Remove-the-access-to-entities-checked-private-symbol.patch @@ -0,0 +1,35 @@ +From 4dbc4c1da2a033c497d84a1291c46f416a9cac51 Mon Sep 17 00:00:00 2001 +From: David Anes +Date: Thu, 4 May 2023 11:54:02 +0200 +Subject: [PATCH] Remove the access to entities 'checked' private symbol for + libxml2 2.11.0 + +Since version 2.11.0, some private symbols that were never intended +as public API/ABI have been removed from libxml2, therefore the field +'checked' is no longer present and raptor fails to build in this +scenario. + +Upstream: https://github.com/dajobe/raptor/commit/4dbc4c1da2a033c497d84a1291c46f416a9cac51 + +Signed-off-by: Bernd Kuhls +--- + src/raptor_libxml.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/raptor_libxml.c b/src/raptor_libxml.c +index 538c2c8e..8bcee139 100644 +--- a/src/raptor_libxml.c ++++ b/src/raptor_libxml.c +@@ -246,10 +246,11 @@ raptor_libxml_getEntity(void* user_data, const xmlChar *name) + + ret->owner = 1; + +-#if LIBXML_VERSION >= 20627 ++#if LIBXML_VERSION >= 20627 && LIBXML_VERSION < 21100 + /* Checked field was released in 2.6.27 on 2006-10-25 + * http://git.gnome.org/browse/libxml2/commit/?id=a37a6ad91a61d168ecc4b29263def3363fff4da6 + * ++ * and was later removed in version 2.11.0 + */ + + /* Mark this entity as having been checked - never do this again */ diff --git a/package/raptor/Config.in b/package/raptor/Config.in new file mode 100644 index 00000000..65979a2b --- /dev/null +++ b/package/raptor/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_RAPTOR + bool "raptor" + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_LIBXSLT + help + A C library that provides a set of parsers and + serializers that generate Resource Description + Framework (RDF) triples by parsing syntaxes or + serialize the triples into a syntax. + + http://librdf.org/raptor/ diff --git a/package/raptor/raptor.hash b/package/raptor/raptor.hash new file mode 100644 index 00000000..05e9c539 --- /dev/null +++ b/package/raptor/raptor.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 089db78d7ac982354bdbf39d973baf09581e6904ac4c92a98c5caadb3de44680 raptor2-2.0.16.tar.gz +sha256 0f0c719a05c9f7a0be2051ab83c1470837f595ed23e34989f46fd8eb45cfc251 LICENSE.txt diff --git a/package/raptor/raptor.mk b/package/raptor/raptor.mk new file mode 100644 index 00000000..ec7643ce --- /dev/null +++ b/package/raptor/raptor.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# raptor +# +################################################################################ + +RAPTOR_VERSION = 2.0.16 +RAPTOR_SOURCE = raptor2-$(RAPTOR_VERSION).tar.gz +RAPTOR_SITE = http://download.librdf.org/source +RAPTOR_DEPENDENCIES = libxml2 libxslt +RAPTOR_LICENSE = GPL-2.0+ or LGPL-2.1+ or Apache-2.0+ +RAPTOR_LICENSE_FILES = LICENSE.txt +RAPTOR_CPE_ID_VENDOR = librdf +RAPTOR_CPE_ID_PRODUCT = raptor_rdf_syntax_library +RAPTOR_INSTALL_STAGING = YES + +# Flag is added to make sure the patch is applied for the configure.ac of raptor. +RAPTOR_AUTORECONF = YES + +RAPTOR_CONF_OPTS =\ + --with-xml2-config=$(STAGING_DIR)/usr/bin/xml2-config \ + --with-xslt-config=$(STAGING_DIR)/usr/bin/xslt-config + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +RAPTOR_DEPENDENCIES += libcurl +RAPTOR_CONF_OPTS += --with-curl-config=$(STAGING_DIR)/usr/bin/curl-config +else +RAPTOR_CONF_OPTS += --with-curl-config=no +endif + +ifeq ($(BR2_PACKAGE_YAJL),y) +RAPTOR_DEPENDENCIES += yajl +RAPTOR_CONF_ENV += LIBS="-lm" +RAPTOR_CONF_OPTS += --with-yajl=$(STAGING_DIR)/usr +else +RAPTOR_CONF_OPTS += --with-yajl=no +endif + +ifeq ($(BR2_PACKAGE_ICU),y) +RAPTOR_DEPENDENCIES += icu +RAPTOR_CONF_OPTS += --with-icu-config=$(STAGING_DIR)/usr/bin/icu-config +else +RAPTOR_CONF_OPTS += --with-icu-config=no +endif + +$(eval $(autotools-package)) diff --git a/package/raspberrypi-usbboot/0001-Makefile-allow-passing-CFLAGS-LDFLAGS.patch b/package/raspberrypi-usbboot/0001-Makefile-allow-passing-CFLAGS-LDFLAGS.patch new file mode 100644 index 00000000..29a93116 --- /dev/null +++ b/package/raspberrypi-usbboot/0001-Makefile-allow-passing-CFLAGS-LDFLAGS.patch @@ -0,0 +1,34 @@ +From acd175aa53af1f1b8422bf1f1fe57eafc710cdca 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 +[Rebased on 9324fd7] +Signed-off-by: Peter Seiderer +[Rebased on 20221215-105525-0-g1afa26c5] +Signed-off-by: Fiona Klute +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index dc78cfe..c9d4910 100755 +--- a/Makefile ++++ b/Makefile +@@ -1,7 +1,7 @@ + PKG_VER=$(shell grep rpiboot debian/changelog | head -n1 | sed 's/.*(\(.*\)).*/\1/g') + GIT_VER=$(shell git rev-parse HEAD 2>/dev/null | cut -c1-8 || echo "") + rpiboot: main.c msd/bootcode.h msd/start.h msd/bootcode4.h msd/start4.h +- $(CC) -Wall -Wextra -g -o $@ $< `pkg-config --cflags --libs libusb-1.0` -DGIT_VER="\"$(GIT_VER)\"" -DPKG_VER="\"$(PKG_VER)\"" ++ $(CC) -Wall -Wextra -g $(CFLAGS) -o $@ $< `pkg-config --cflags --libs libusb-1.0` -DGIT_VER="\"$(GIT_VER)\"" -DPKG_VER="\"$(PKG_VER)\"" $(LDFLAGS) + + %.h: %.bin ./bin2c + ./bin2c $< $@ +-- +2.45.2 + diff --git a/package/raspberrypi-usbboot/Config.in.host b/package/raspberrypi-usbboot/Config.in.host new file mode 100644 index 00000000..e5772e3a --- /dev/null +++ b/package/raspberrypi-usbboot/Config.in.host @@ -0,0 +1,17 @@ +config BR2_PACKAGE_HOST_RASPBERRYPI_USBBOOT + bool "host raspberrypi-usbboot" + depends on BR2_arm || BR2_aarch64 + depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb + 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 + +comment "host raspberrypi-usbboot needs a toolchain w/ host gcc >= 4.9" + depends on BR2_arm || BR2_aarch64 + depends on !BR2_HOST_GCC_AT_LEAST_4_9 diff --git a/package/raspberrypi-usbboot/raspberrypi-usbboot.hash b/package/raspberrypi-usbboot/raspberrypi-usbboot.hash new file mode 100644 index 00000000..830ead82 --- /dev/null +++ b/package/raspberrypi-usbboot/raspberrypi-usbboot.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 2f02dbe9a88e9dfad5f05e513e1f30afd47b1575820f7c3b09665dfefc45bbaa raspberrypi-usbboot-20221215-105525.tar.gz + +# License files +sha256 b40930bbcf80744c86c46a12bc9da056641d722716c378f5659b9e555ef833e1 LICENSE diff --git a/package/raspberrypi-usbboot/raspberrypi-usbboot.mk b/package/raspberrypi-usbboot/raspberrypi-usbboot.mk new file mode 100644 index 00000000..24a1f6d9 --- /dev/null +++ b/package/raspberrypi-usbboot/raspberrypi-usbboot.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# raspberrypi-usbboot +# +################################################################################ + +RASPBERRYPI_USBBOOT_VERSION = 20221215-105525 +RASPBERRYPI_USBBOOT_SITE = \ + $(call github,raspberrypi,usbboot,$(RASPBERRYPI_USBBOOT_VERSION)) +RASPBERRYPI_USBBOOT_LICENSE = Apache-2.0 +RASPBERRYPI_USBBOOT_LICENSE_FILES = LICENSE + +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 + $(INSTALL) -D -m 0755 $(@D)/rpiboot $(HOST_DIR)/bin/rpiboot +endef + +$(eval $(host-generic-package)) diff --git a/package/raspi-gpio/Config.in b/package/raspi-gpio/Config.in new file mode 100644 index 00000000..32a94483 --- /dev/null +++ b/package/raspi-gpio/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_RASPI_GPIO + bool "raspi-gpio" + help + Tool to help debug / hack at the BCM283x GPIO. You can dump + the state of a GPIO or (all GPIOs). You can change a GPIO + mode and pulls (and level if set as an output). + + Beware this tool writes directly to the BCM283x GPIO + registers, ignoring anything else that may be using them + (like Linux drivers). + + https://github.com/RPi-Distro/raspi-gpio diff --git a/package/raspi-gpio/raspi-gpio.hash b/package/raspi-gpio/raspi-gpio.hash new file mode 100644 index 00000000..c3d9540f --- /dev/null +++ b/package/raspi-gpio/raspi-gpio.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2526dcec1e5a171b13c44b1fb6f2faed5ec849f08021278e2be09bc18264a2fd raspi-gpio-4edfde183ff3ac9ed66cdc015ae25e45f3a5502d.tar.gz +sha256 6e02227e1fb942687163996678d94add7911890c50025912d0ae7ee66d256bb2 LICENSE diff --git a/package/raspi-gpio/raspi-gpio.mk b/package/raspi-gpio/raspi-gpio.mk new file mode 100644 index 00000000..d1241082 --- /dev/null +++ b/package/raspi-gpio/raspi-gpio.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# raspi-gpio +# +################################################################################ + +RASPI_GPIO_VERSION = 4edfde183ff3ac9ed66cdc015ae25e45f3a5502d +RASPI_GPIO_SITE = $(call github,RPi-Distro,raspi-gpio,$(RASPI_GPIO_VERSION)) +RASPI_GPIO_LICENSE = BSD-3-Clause +RASPI_GPIO_LICENSE_FILES = LICENSE + +$(eval $(autotools-package)) diff --git a/package/ratpoison/Config.in b/package/ratpoison/Config.in new file mode 100644 index 00000000..7b724290 --- /dev/null +++ b/package/ratpoison/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_RATPOISON + bool "ratpoison" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_LIBERATION + select BR2_PACKAGE_XLIB_LIBX11 + help + Ratpoison is a simple Window Manager. It is largely modelled + after GNU Screen and focuses on the keyboard instead of a + mouse. + + The screen can be split into non-overlapping frames. All + windows are kept maximized inside their frames to take full + advantage of your precious screen real estate. + + http://www.nongnu.org/ratpoison/ diff --git a/package/ratpoison/ratpoison.hash b/package/ratpoison/ratpoison.hash new file mode 100644 index 00000000..d003fadf --- /dev/null +++ b/package/ratpoison/ratpoison.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 d98fa4be025ecca453c407ff311ab3949f29f20d6d8abedf8f0716b85fc8d1f1 ratpoison-1.4.9.tar.xz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/ratpoison/ratpoison.mk b/package/ratpoison/ratpoison.mk new file mode 100644 index 00000000..27cca849 --- /dev/null +++ b/package/ratpoison/ratpoison.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# ratpoison +# +################################################################################ + +RATPOISON_VERSION = 1.4.9 +RATPOISON_SOURCE = ratpoison-$(RATPOISON_VERSION).tar.xz +RATPOISON_SITE = http://download.savannah.nongnu.org/releases/ratpoison +RATPOISON_LICENSE = GPL-2.0+ +RATPOISON_LICENSE_FILES = COPYING + +RATPOISON_CONF_OPTS = \ + --x-includes=$(STAGING_DIR)/usr/include/X11 \ + --x-libraries=$(STAGING_DIR)/usr/lib \ + --without-xkb \ + --without-xft + +RATPOISON_DEPENDENCIES = xlib_libX11 + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) +RATPOISON_DEPENDENCIES += xlib_libXrandr +RATPOISON_CONF_OPTS += --with-xrandr +else +RATPOISON_CONF_OPTS += --without-xrandr +endif + +$(eval $(autotools-package)) diff --git a/package/rauc-hawkbit-updater/Config.in b/package/rauc-hawkbit-updater/Config.in new file mode 100644 index 00000000..dafc2f88 --- /dev/null +++ b/package/rauc-hawkbit-updater/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_RAUC_HAWKBIT_UPDATER + bool "rauc-hawkbit-updater" + depends on BR2_TOOLCHAIN_HAS_THREADS # rauc, json-glib + depends on BR2_USE_MMU # rauc, json-glib + depends on BR2_USE_WCHAR # rauc, json-glib + select BR2_PACKAGE_JSON_GLIB + select BR2_PACKAGE_LIBCURL + # runtime + select BR2_PACKAGE_RAUC + help + rauc-hawkbit-updater is a link between Pengutronix RAUC and + the Eclipse Hawkbit API. Hawkbit can communicate to remote + update servers, and use the d-bus interface to trigger + updates from RAUC. + + http://rauc.io/ + +comment "rauc-hawkbit-updater needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/rauc-hawkbit-updater/rauc-hawkbit-updater.hash b/package/rauc-hawkbit-updater/rauc-hawkbit-updater.hash new file mode 100644 index 00000000..c65ead37 --- /dev/null +++ b/package/rauc-hawkbit-updater/rauc-hawkbit-updater.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 42318e96a464e6c716edb45c48bd3ec3b874462973db902fbe099a395e4acb4b rauc-hawkbit-updater-1.3.tar.xz +sha256 041234c81fd6fe6c531ea1a886b9e740b9ee06759d1a910a14edbd06f4aa62c7 LICENSE diff --git a/package/rauc-hawkbit-updater/rauc-hawkbit-updater.mk b/package/rauc-hawkbit-updater/rauc-hawkbit-updater.mk new file mode 100644 index 00000000..da1c020b --- /dev/null +++ b/package/rauc-hawkbit-updater/rauc-hawkbit-updater.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# rauc-hawkbit-updater +# +################################################################################ + +RAUC_HAWKBIT_UPDATER_VERSION = 1.3 +RAUC_HAWKBIT_UPDATER_SITE = https://github.com/rauc/rauc-hawkbit-updater/releases/download/v$(RAUC_HAWKBIT_UPDATER_VERSION) +RAUC_HAWKBIT_UPDATER_SOURCE = rauc-hawkbit-updater-$(RAUC_HAWKBIT_UPDATER_VERSION).tar.xz +RAUC_HAWKBIT_UPDATER_LICENSE = LGPL-2.1 +RAUC_HAWKBIT_UPDATER_LICENSE_FILES = LICENSE +RAUC_HAWKBIT_UPDATER_DEPENDENCIES = json-glib libcurl +RAUC_HAWKBIT_UPDATER_CFLAGS = $(TARGET_CFLAGS) -std=c99 + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +RAUC_HAWKBIT_UPDATER_DEPENDENCIES += systemd +RAUC_HAWKBIT_UPDATER_CONF_OPTS += -Dsystemd=enabled +else +RAUC_HAWKBIT_UPDATER_CONF_OPTS += -Dsystemd=disabled +endif + +$(eval $(meson-package)) diff --git a/package/rauc/Config.in b/package/rauc/Config.in new file mode 100644 index 00000000..01a321e3 --- /dev/null +++ b/package/rauc/Config.in @@ -0,0 +1,66 @@ +config BR2_PACKAGE_RAUC + bool "rauc" + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + depends on BR2_USE_WCHAR # glib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_OPENSSL + # uses ENGINE_* API + select BR2_PACKAGE_LIBOPENSSL_ENGINES if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_SQUASHFS # run-time dependency + select BR2_PACKAGE_UBOOT_TOOLS if BR2_TARGET_UBOOT # run-time dependency + select BR2_PACKAGE_UBOOT_TOOLS_FWPRINTENV if BR2_TARGET_UBOOT + help + RAUC is the Robust Auto-Update Controller developed by + Pengutronix. It supports updating embedded Linux + systems over the network or from disks and provides a + d-bus interface. + + http://rauc.io/ + +if BR2_PACKAGE_RAUC + +config BR2_PACKAGE_RAUC_DBUS + bool "dbus support" + select BR2_PACKAGE_DBUS + help + This option enables support for controlling rauc through + D-Bus. + +config BR2_PACKAGE_RAUC_GPT + bool "GPT support" + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBS + select BR2_PACKAGE_UTIL_LINUX_LIBFDISK + help + This option enables support for GPT partition tables. + +config BR2_PACKAGE_RAUC_NETWORK + bool "network support" + select BR2_PACKAGE_LIBCURL + help + This option enables support for updating firmware over + the network using libcurl. + +if BR2_PACKAGE_RAUC_NETWORK + +config BR2_PACKAGE_RAUC_STREAMING + bool "streaming update support" + select BR2_PACKAGE_LIBNL + help + This option enables support for streaming update mode. + +endif + +config BR2_PACKAGE_RAUC_JSON + bool "JSON output support" + select BR2_PACKAGE_JSON_GLIB + help + This option enables support for providing output in + JSON format. + +endif + +comment "rauc needs a toolchain w/ wchar, threads" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/package/rauc/Config.in.host b/package/rauc/Config.in.host new file mode 100644 index 00000000..1bd9a793 --- /dev/null +++ b/package/rauc/Config.in.host @@ -0,0 +1,10 @@ +config BR2_PACKAGE_HOST_RAUC + bool "host rauc" + select BR2_PACKAGE_HOST_SQUASHFS # run-time dependency + help + RAUC is the Robust Auto-Update Controller developed by + Pengutronix. Enable this option to build the rauc + host tool which may be used to generate firmware + bundles that are handled by the target rauc service. + + http://rauc.io/ diff --git a/package/rauc/rauc.hash b/package/rauc/rauc.hash new file mode 100644 index 00000000..391d89a8 --- /dev/null +++ b/package/rauc/rauc.hash @@ -0,0 +1,3 @@ +# Locally calculated after checking pgp signature +sha256 ef82ee452939c03a24fd40649afa96497f3cec965994e6c9c0d94239b640bc10 rauc-1.11.3.tar.xz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/rauc/rauc.mk b/package/rauc/rauc.mk new file mode 100644 index 00000000..7239d84c --- /dev/null +++ b/package/rauc/rauc.mk @@ -0,0 +1,78 @@ +################################################################################ +# +# rauc +# +################################################################################ + +RAUC_VERSION = 1.11.3 +RAUC_SITE = https://github.com/rauc/rauc/releases/download/v$(RAUC_VERSION) +RAUC_SOURCE = rauc-$(RAUC_VERSION).tar.xz +RAUC_LICENSE = LGPL-2.1 +RAUC_LICENSE_FILES = COPYING +RAUC_CPE_ID_VENDOR = pengutronix +RAUC_DEPENDENCIES = host-pkgconf openssl libglib2 +RAUC_CONF_OPTS += -Dtests=false + +ifeq ($(BR2_PACKAGE_RAUC_DBUS),y) +RAUC_CONF_OPTS += -Dservice=true +RAUC_DEPENDENCIES += dbus + +# systemd service uses dbus interface +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +# configure uses pkg-config --variable=systemdsystemunitdir systemd +RAUC_DEPENDENCIES += systemd +define RAUC_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/usr/lib/systemd/system/rauc.service.d + printf '[Install]\nWantedBy=multi-user.target\n' \ + >$(TARGET_DIR)/usr/lib/systemd/system/rauc.service.d/buildroot-enable.conf +endef +endif + +else +RAUC_CONF_OPTS += -Dservice=false +endif + +ifeq ($(BR2_PACKAGE_RAUC_GPT),y) +RAUC_CONF_OPTS += -Dgpt=enabled +RAUC_DEPENDENCIES += util-linux-libs +else +RAUC_CONF_OPTS += -Dgpt=disabled +endif + +ifeq ($(BR2_PACKAGE_RAUC_NETWORK),y) +RAUC_CONF_OPTS += -Dnetwork=true +RAUC_DEPENDENCIES += libcurl +else +RAUC_CONF_OPTS += -Dnetwork=false +endif + +ifeq ($(BR2_PACKAGE_RAUC_JSON),y) +RAUC_CONF_OPTS += -Djson=enabled +RAUC_DEPENDENCIES += json-glib +else +RAUC_CONF_OPTS += -Djson=disabled +endif + +ifeq ($(BR2_PACKAGE_RAUC_STREAMING),y) +RAUC_CONF_OPTS += -Dstreaming=true +RAUC_DEPENDENCIES += libnl +else +RAUC_CONF_OPTS += -Dstreaming=false +endif + +HOST_RAUC_DEPENDENCIES = \ + host-pkgconf \ + host-openssl \ + host-libglib2 \ + host-squashfs \ + $(if $(BR2_PACKAGE_HOST_LIBP11),host-libp11) + +HOST_RAUC_CONF_OPTS += \ + -Dnetwork=false \ + -Dstreaming=false \ + -Djson=disabled \ + -Dservice=false \ + -Dtests=false + +$(eval $(meson-package)) +$(eval $(host-meson-package)) diff --git a/package/rcw-smarc-sal28/Config.in b/package/rcw-smarc-sal28/Config.in new file mode 100644 index 00000000..2a46c9f8 --- /dev/null +++ b/package/rcw-smarc-sal28/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_RCW_SMARC_SAL28 + bool "rcw-smarc-sal28" + help + The reset configuration word for the SMARC-sAL28 board. All + available RCWs are copied into the images output directory. + Additionally, you have to choose one default RCW which is + used for booting the board. + +if BR2_PACKAGE_RCW_SMARC_SAL28 +config BR2_PACKAGE_RCW_SMARC_SAL28_BUILD_UPDATE_SCRIPT + bool "Build RCW u-boot update script" + select BR2_PACKAGE_HOST_UBOOT_TOOLS + help + Build the RCW updater script which can be used in the + bootloader to change the installed RCW during runtime. The + update script is called update-rcw.img and will be copied + to the output directory. + +config BR2_PACKAGE_RCW_SMARC_SAL28_BOOT_VARIANT + string "RCW variant for booting" + default "3-11_q" + help + The suffix of the RCW filename without the ".bin" part. + E.g. setting this to "3-11_q" will use "sl28-3-11_q.bin". +endif diff --git a/package/rcw-smarc-sal28/rcw-smarc-sal28.hash b/package/rcw-smarc-sal28/rcw-smarc-sal28.hash new file mode 100644 index 00000000..17562137 --- /dev/null +++ b/package/rcw-smarc-sal28/rcw-smarc-sal28.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 8c1c3e26407141ee8d8bd16a43c16c0459b01a60e6e25ca47e22c7499b3e4e65 rcw-smarc-sal28-11.tar.gz +sha256 803c65088eed36a6697ca9f03f4379bbad24e276dc8da7fef5eb4dc4008415a1 COPYING diff --git a/package/rcw-smarc-sal28/rcw-smarc-sal28.mk b/package/rcw-smarc-sal28/rcw-smarc-sal28.mk new file mode 100644 index 00000000..2bc74002 --- /dev/null +++ b/package/rcw-smarc-sal28/rcw-smarc-sal28.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# rcw-smarc-sal28 +# +################################################################################ + +RCW_SMARC_SAL28_VERSION = 11 +RCW_SMARC_SAL28_SITE = $(call github,kontron,rcw-smarc-sal28,v$(RCW_SMARC_SAL28_VERSION)) +RCW_SMARC_SAL28_LICENSE = BSD-2-Clause +RCW_SMARC_SAL28_LICENSE_FILES = COPYING +RCW_SMARC_SAL28_INSTALL_TARGET = NO +RCW_SMARC_SAL28_INSTALL_IMAGES = YES + +RCW_SMARC_SAL28_BOOT_VARIANT = $(call qstrip,$(BR2_PACKAGE_RCW_SMARC_SAL28_BOOT_VARIANT)) + +ifeq ($(BR2_PACKAGE_RCW_SMARC_SAL28_BUILD_UPDATE_SCRIPT),y) +RCW_SMARC_SAL28_DEPENDENCIES += host-uboot-tools +define RCW_SMARC_SAL28_UPDATE_SCRIPT_BUILD_CMDS + MKIMAGE=$(HOST_DIR)/bin/mkimage $(MAKE) -C $(@D)/contrib all +endef +define RCW_SMARC_SAL28_UPDATE_SCRIPT_INSTALL_CMDS + $(INSTALL) -D -m 0644 $(@D)/contrib/update-rcw.img $(BINARIES_DIR)/ +endef +endif + +define RCW_SMARC_SAL28_BUILD_CMDS + $(RCW_SMARC_SAL28_UPDATE_SCRIPT_BUILD_CMDS) +endef + +define RCW_SMARC_SAL28_INSTALL_IMAGES_CMDS + $(INSTALL) -d $(BINARIES_DIR)/rcw + $(INSTALL) -D -m 0644 $(@D)/sl28-*.bin $(BINARIES_DIR)/rcw/ + ln -sf rcw/sl28-$(RCW_SMARC_SAL28_BOOT_VARIANT).bin $(BINARIES_DIR)/rcw.bin + $(RCW_SMARC_SAL28_UPDATE_SCRIPT_INSTALL_CMDS) +endef + +$(eval $(generic-package)) diff --git a/package/rdesktop/0001-Allow-8-bit-colors.patch b/package/rdesktop/0001-Allow-8-bit-colors.patch new file mode 100644 index 00000000..0c2b820a --- /dev/null +++ b/package/rdesktop/0001-Allow-8-bit-colors.patch @@ -0,0 +1,38 @@ +From 2159684f1287b6bca2bd74c129b752a636ee807f Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Wed, 17 Jan 2007 13:58:01 +0000 +Subject: [PATCH] Allow 8-bit colors + +Upstream: Reported as unmaintained on homepage http://www.rdesktop.org/ +Signed-off-by: Peter Korsgaard +[Julien: refreshed the patch to be applied with fuzz factor 0] +Signed-off-by: Julien Olivain +--- + xwin.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/xwin.c b/xwin.c +index d96d0f4..d11f4a6 100644 +--- a/xwin.c ++++ b/xwin.c +@@ -1801,7 +1801,7 @@ select_visual(int screen_num) + } + + /* we use a colourmap, so the default visual should do */ +- g_owncolmap = True; ++// g_owncolmap = True; + g_visual = vmatches[0].visual; + g_depth = vmatches[0].depth; + } +@@ -2010,7 +2010,7 @@ ui_init(void) + { + g_xcolmap = + XCreateColormap(g_display, RootWindowOfScreen(g_screen), g_visual, +- AllocNone); ++ (g_depth <= 8) ? AllocAll : AllocNone); + if (g_depth <= 8) + logger(GUI, Warning, + "Display colour depth is %d bit: you may want to use -C for a private colourmap", +-- +2.45.2 + diff --git a/package/rdesktop/Config.in b/package/rdesktop/Config.in new file mode 100644 index 00000000..d07a1d5c --- /dev/null +++ b/package/rdesktop/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_RDESKTOP + bool "rdesktop" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # gnutls + depends on BR2_USE_WCHAR # gnutls + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_GNUTLS + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_LIBTASN1 + select BR2_PACKAGE_NETTLE + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXCURSOR + select BR2_PACKAGE_XLIB_LIBXT + help + rdesktop is an open source client for Windows NT Terminal + Server and Windows 2000/2003 Terminal Services, capable of + natively speaking Remote Desktop Protocol (RDP) in order to + present the user's NT desktop. + + http://rdesktop.sf.net/ + +comment "rdesktop needs a toolchain w/ wchar, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS diff --git a/package/rdesktop/rdesktop.hash b/package/rdesktop/rdesktop.hash new file mode 100644 index 00000000..f9715d2a --- /dev/null +++ b/package/rdesktop/rdesktop.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 473c2f312391379960efe41caad37852c59312bc8f100f9b5f26609ab5704288 rdesktop-1.9.0.tar.gz +sha256 fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7 COPYING diff --git a/package/rdesktop/rdesktop.mk b/package/rdesktop/rdesktop.mk new file mode 100644 index 00000000..5a1739a4 --- /dev/null +++ b/package/rdesktop/rdesktop.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# rdesktop +# +################################################################################ + +RDESKTOP_VERSION = 1.9.0 +RDESKTOP_SITE = \ + https://github.com/rdesktop/rdesktop/releases/download/v$(RDESKTOP_VERSION) +RDESKTOP_DEPENDENCIES = \ + host-pkgconf \ + gnutls \ + libtasn1 \ + nettle \ + xlib_libX11 \ + xlib_libXcursor \ + xlib_libXt \ + $(if $(BR2_PACKAGE_ALSA_LIB_PCM),alsa-lib) \ + $(if $(BR2_PACKAGE_LIBAO),libao) \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) \ + $(if $(BR2_PACKAGE_LIBSAMPLERATE),libsamplerate) \ + $(if $(BR2_PACKAGE_PULSEAUDIO),pulseaudio) \ + $(if $(BR2_PACKAGE_XLIB_LIBXRANDR),xlib_libXrandr) +RDESKTOP_CONF_OPTS = --disable-credssp +RDESKTOP_LICENSE = GPL-3.0+ +RDESKTOP_LICENSE_FILES = COPYING +RDESKTOP_CPE_ID_VENDOR = rdesktop + +ifeq ($(BR2_PACKAGE_PCSC_LITE),y) +RDESKTOP_DEPENDENCIES += pcsc-lite +else +RDESKTOP_CONF_OPTS += --disable-smartcard +endif + +$(eval $(autotools-package)) diff --git a/package/rdma-core/Config.in b/package/rdma-core/Config.in new file mode 100644 index 00000000..3360e687 --- /dev/null +++ b/package/rdma-core/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_RDMA_CORE + bool "rdma-core" + depends on BR2_USE_MMU # fork() used in rstream example + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # iproute2 + depends on !BR2_STATIC_LIBS # dlopen() + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_PACKAGE_IPROUTE2 # runtime + select BR2_PACKAGE_LIBNL + help + This is the userspace components for the Linux Kernel's + drivers/infiniband subsystem. + + https://github.com/linux-rdma/rdma-core + +comment "rdma-core needs a toolchain w/ headers >= 3.4, NPTL, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 \ + || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS diff --git a/package/rdma-core/rdma-core.hash b/package/rdma-core/rdma-core.hash new file mode 100644 index 00000000..0f28b560 --- /dev/null +++ b/package/rdma-core/rdma-core.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 05e111f560b7c5bef1a208880a3d94eb2e7f1ad484bf916a81780d2fde5d3dcc rdma-core-52.0.tar.gz +sha256 99e0df1d009a21d0dfb031600c550fd8f4efc0c6b2a4ef8b34a995aa6f79c9f4 COPYING.BSD_MIT +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING.GPL2 +sha256 c46a557f25b8ef9bec76526c4e593fc13e6cba27e7ba30d73b6497a689cf06f6 COPYING.md diff --git a/package/rdma-core/rdma-core.mk b/package/rdma-core/rdma-core.mk new file mode 100644 index 00000000..3ad3ad59 --- /dev/null +++ b/package/rdma-core/rdma-core.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# rdma-core +# +################################################################################ + +RDMA_CORE_VERSION = 52.0 +RDMA_CORE_SITE = $(call github,linux-rdma,rdma-core,v$(RDMA_CORE_VERSION)) +RDMA_CORE_LICENSE = GPL-2.0 or BSD-2-Clause +RDMA_CORE_LICENSE_FILES = COPYING.GPL2 COPYING.BSD_MIT COPYING.md +RDMA_CORE_DEPENDENCIES = libnl +RDMA_CORE_INSTALL_STAGING = YES + +RDMA_CORE_CONF_OPTS = \ + -DNO_MAN_PAGES=1 \ + -DNO_PYVERBS=1 + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +RDMA_CORE_CONF_OPTS += \ + -DCMAKE_EXE_LINKER_FLAGS=-latomic \ + -DCMAKE_SHARED_LINKER_FLAGS=-latomic +endif + +$(eval $(cmake-package)) diff --git a/package/rdma-core/readme.txt b/package/rdma-core/readme.txt new file mode 100644 index 00000000..9a95226e --- /dev/null +++ b/package/rdma-core/readme.txt @@ -0,0 +1,75 @@ +Testing rdma-core userspace tools +================================= + +Testing rdma-core using Linux software RoCE implementation: +https://en.wikipedia.org/wiki/RDMA_over_Converged_Ethernet + +Using two systems with working TCP/IP configuration, for example: +- Server IP: 192.168.123.10 +- Client IP: 192.168.123.20 + +Make sure firewall configurations are appropriate. Routable RoCE v2 +uses udp/4791. ibv_rc_pingpong uses tcp/18515 for initial +synchronization. + +Note: this test can be executed in two qemu virtual machines with +bridged networking. + + +Kernel configuration +-------------------- + +The Linux Kernel needs some InfiniBand configuration. In this example +the kernel "rdma_rxe" driver is needed (CONFIG_RDMA_RXE=y). The Kernel +config fragment file used for package test can be used as a starting +point. See: + + support/testing/tests/package/test_rdma_core/linux-rdma.fragment + + +Buildroot package configuration +------------------------------- + +For setting up a software RoCE link, the "rdma" program is needed. It +is provided by the "iproute2" package, when "libmnl" is also +selected. Make sure to have in your Buildroot configuration: + + BR2_PACKAGE_IPROUTE2=y + BR2_PACKAGE_LIBMNL=y + BR2_PACKAGE_RDMA_CORE=y + + +Setting up the rdma link +------------------------ + +On both server and client: + + modprobe rdma_rxe + rdma link add rxe0 type rxe netdev eth0 + + +Testing with rping +------------------ + +On the server side, run the command: + + rping -s -v + +On the client side, run the command: + + rping -c -v -a 192.168.123.10 + + +Testing with ibv_rc_pingpong +---------------------------- + +To test with the pingpong example using the reliable connected (RC) +transport: + +On the server side, run the command: + + ibv_rc_pingpong -d rxe0 -g 1 + +On the client side, run the command: + + ibv_rc_pingpong -d rxe0 -g 1 192.168.123.10 diff --git a/package/re2/Config.in b/package/re2/Config.in new file mode 100644 index 00000000..b79e711a --- /dev/null +++ b/package/re2/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_RE2 + bool "re2" + depends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # C++14 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS # libabseil-cpp + select BR2_PACKAGE_LIBABSEIL_CPP + help + RE2 is a fast, safe, thread-friendly alternative + to backtracking regular expression engines like + those used in PCRE, Perl, and Python. + It is a C++ library. + + https://github.com/google/re2 + +comment "re2 needs a toolchain w/ C++, threads, dynamic library, gcc >= 8" + depends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_8 diff --git a/package/re2/re2.hash b/package/re2/re2.hash new file mode 100644 index 00000000..1598d1ee --- /dev/null +++ b/package/re2/re2.hash @@ -0,0 +1,3 @@ +# locally calculated +sha256 3f6690c3393a613c3a0b566309cf04dc381d61470079b653afc47c67fb898198 re2-2024-04-01.tar.gz +sha256 6040cda75d90b1738292a631d89934c411ef7ffd543c4d6a1b7edfc8edf29449 LICENSE diff --git a/package/re2/re2.mk b/package/re2/re2.mk new file mode 100644 index 00000000..75dfdbaf --- /dev/null +++ b/package/re2/re2.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# re2 +# +################################################################################ + +RE2_VERSION = 2024-04-01 +RE2_SITE = $(call github,google,re2,$(RE2_VERSION)) +RE2_LICENSE = BSD-3-Clause +RE2_LICENSE_FILES = LICENSE +RE2_INSTALL_STAGING = YES +RE2_DEPENDENCIES = libabseil-cpp + +define RE2_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + -C $(@D) $(if $(BR2_STATIC_LIBS),static) +endef + +define RE2_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + DESTDIR="$(STAGING_DIR)" prefix=/usr -C $(@D) \ + $(if $(BR2_STATIC_LIBS),static-install,install) +endef + +define RE2_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + DESTDIR="$(TARGET_DIR)" prefix=/usr -C $(@D) \ + $(if $(BR2_STATIC_LIBS),static-install,install) +endef + +define HOST_RE2_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) \ + -C $(@D) +endef + +define HOST_RE2_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) \ + -C $(@D) DESTDIR="$(HOST_DIR)" prefix=/usr install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/read-edid/0001-Fix-install-file-list.patch b/package/read-edid/0001-Fix-install-file-list.patch new file mode 100644 index 00000000..622e97da --- /dev/null +++ b/package/read-edid/0001-Fix-install-file-list.patch @@ -0,0 +1,29 @@ +From 562f48bee3443bda0ac257f2b0c52a72208163e0 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Mon, 7 Dec 2015 21:20:38 +0100 +Subject: [PATCH] Fix install file list. + +Fixes: + CMake Error at cmake_install.cmake:40 (file): + file INSTALL cannot find + ".../build/read-edid-3.0.2/COPYING". + +Signed-off-by: Peter Seiderer +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 7bf4561..2b9bc86 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -13,5 +13,5 @@ endif () + add_subdirectory (parse-edid) + + INSTALL(FILES get-edid.1 DESTINATION share/man/man1) +-INSTALL(FILES AUTHORS ChangeLog COPYING README DESTINATION ++INSTALL(FILES AUTHORS ChangeLog README DESTINATION + share/doc/read-edid) +-- +2.1.4 + diff --git a/package/read-edid/0002-Fix-compiler-check.patch b/package/read-edid/0002-Fix-compiler-check.patch new file mode 100644 index 00000000..6c5f58c0 --- /dev/null +++ b/package/read-edid/0002-Fix-compiler-check.patch @@ -0,0 +1,19 @@ +Fix compiler check + +By default CMake looks for c++ which the project does not need. + +Patch by Thomas: +http://lists.busybox.net/pipermail/buildroot/2015-December/146865.html + +Signed-off-by: Bernd Kuhls + +diff -uNr read-edid-3.0.2.org/CMakeLists.txt read-edid-3.0.2/CMakeLists.txt +--- read-edid-3.0.2.org/CMakeLists.txt 2014-02-05 17:27:26.000000000 +0100 ++++ read-edid-3.0.2/CMakeLists.txt 2015-12-13 16:08:43.000000000 +0100 +@@ -1,5 +1,5 @@ + cmake_minimum_required (VERSION 2.6) +-project (read-edid) ++project (read-edid C) + + option(I2CBUILD "Build I2C get-edid implementation" ON) + option(CLASSICBUILD "Build VBE get-edid implementation" ON) diff --git a/package/read-edid/0003-fix-build-with-gcc-10.patch b/package/read-edid/0003-fix-build-with-gcc-10.patch new file mode 100644 index 00000000..713b09aa --- /dev/null +++ b/package/read-edid/0003-fix-build-with-gcc-10.patch @@ -0,0 +1,49 @@ +fix build with gcc 10 + +Define quiet as static to avoid the following build failure with gcc 10 +(which defaults to -fno-common): + +/home/naourr/work/instance-2/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: CMakeFiles/get-edid.dir/i2c.c.o:(.bss+0x0): multiple definition of `quiet'; CMakeFiles/get-edid.dir/get-edid.c.o:(.bss+0x0): first defined here + +Fixes: + - http://autobuild.buildroot.org/results/28bde8049b6610273bceae26eca407c819a37dcd + +Signed-off-by: Fabrice Fontaine +[Upstream status: sent to pyrophobicman@gmail.com] + +diff -Nura read-edid-3.0.2.orig/get-edid/classic.c read-edid-3.0.2/get-edid/classic.c +--- read-edid-3.0.2.orig/get-edid/classic.c 2020-09-25 23:25:01.928805414 +0200 ++++ read-edid-3.0.2/get-edid/classic.c 2020-09-25 23:26:37.440807301 +0200 +@@ -26,7 +26,7 @@ + #define dosmemput(buffer,length,offset) memcpy(offset,buffer,length) + + #define display(...) if (quiet == 0) { fprintf(stderr, __VA_ARGS__); } +-int quiet; ++static int quiet; + + real_ptr far_ptr_to_real_ptr( uint32 farptr ) + { +diff -Nura read-edid-3.0.2.orig/get-edid/get-edid.c read-edid-3.0.2/get-edid/get-edid.c +--- read-edid-3.0.2.orig/get-edid/get-edid.c 2020-09-25 23:25:01.928805414 +0200 ++++ read-edid-3.0.2/get-edid/get-edid.c 2020-09-25 23:28:20.740809341 +0200 +@@ -9,7 +9,7 @@ + #include + #include + +-int quiet=0; ++static int quiet=0; + int i2conly=0; //0=both, 1=i2conly, 2=classiconly + int i2cbus=-1; + int classmon=0; +diff -Nura read-edid-3.0.2.orig/get-edid/i2c.c read-edid-3.0.2/get-edid/i2c.c +--- read-edid-3.0.2.orig/get-edid/i2c.c 2020-09-25 23:25:01.928805414 +0200 ++++ read-edid-3.0.2/get-edid/i2c.c 2020-09-25 23:28:32.152809567 +0200 +@@ -15,7 +15,7 @@ + + //Ideas (but not too much actual code) taken from i2c-tools. Thanks guys. + +-int quiet; ++static int quiet; + + #define display(...) if (quiet == 0) { fprintf(stderr, __VA_ARGS__); } + diff --git a/package/read-edid/Config.in b/package/read-edid/Config.in new file mode 100644 index 00000000..c830e17f --- /dev/null +++ b/package/read-edid/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_READ_EDID + bool "read-edid" + help + Read-edid is a pair of tools for reading the EDID from a + monitor. It should work with most monitors made since 1996 + (except for newer ones with 256-byte EDID's - WiP), assuming + the video card supports the standard read commands (most + do). Read-edid is a set of two tools - get-edid, which gets + the raw edid information from the monitor, and parse-edid, + which turns the raw binary information into an + XF86Config-compatible monitor section. + + http://polypux.org/projects/read-edid/ diff --git a/package/read-edid/read-edid.hash b/package/read-edid/read-edid.hash new file mode 100644 index 00000000..d0911094 --- /dev/null +++ b/package/read-edid/read-edid.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c7c6d8440f5b90f98e276829271ccea5b2ff5a3413df8a0f87ec09f834af186f read-edid-3.0.2.tar.gz +sha256 1f8e8a59865d73076ab0a015330bc5bde7332384281260093878a3c366b778b7 LICENSE diff --git a/package/read-edid/read-edid.mk b/package/read-edid/read-edid.mk new file mode 100644 index 00000000..3e38f503 --- /dev/null +++ b/package/read-edid/read-edid.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# read-edid +# +################################################################################ + +READ_EDID_VERSION = 3.0.2 +READ_EDID_SITE = http://www.polypux.org/projects/read-edid +READ_EDID_LICENSE = BSD-like +READ_EDID_LICENSE_FILES = LICENSE + +# disable classic get-edid support (needs libx86) +READ_EDID_CONF_OPTS += -DCLASSICBUILD=OFF + +$(eval $(cmake-package)) diff --git a/package/readline/0001-curses-link.patch b/package/readline/0001-curses-link.patch new file mode 100644 index 00000000..6afc5ba0 --- /dev/null +++ b/package/readline/0001-curses-link.patch @@ -0,0 +1,18 @@ +link readline directly to ncurses since it needs symbols from it + +upstream readline does this on purpose (no direct linking), but +it doesn't make much sense in a Linux world + +Signed-off-by: Gustavo Zacarias + +--- a/support/shobj-conf ++++ b/support/shobj-conf +@@ -42,7 +42,7 @@ + SHOBJ_LIBS= + + SHLIB_XLDFLAGS= +-SHLIB_LIBS= ++SHLIB_LIBS=-lncurses + + SHLIB_DOT='.' + SHLIB_LIBPREF='lib' diff --git a/package/readline/0002-Readline-8.2-patch-1-fix-crash-when-readline-is-star.patch b/package/readline/0002-Readline-8.2-patch-1-fix-crash-when-readline-is-star.patch new file mode 100644 index 00000000..c2c2d812 --- /dev/null +++ b/package/readline/0002-Readline-8.2-patch-1-fix-crash-when-readline-is-star.patch @@ -0,0 +1,41 @@ +From b8d91eab12603fa88e095248855f5f772d182d05 Mon Sep 17 00:00:00 2001 +From: Chet Ramey +Date: Wed, 5 Oct 2022 10:41:16 -0400 +Subject: [PATCH] Readline-8.2 patch 1: fix crash when readline is started with + an invalid locale specification + +Upstream: https://git.savannah.gnu.org/cgit/readline.git/patch/?id=7274faabe97ce53d6b464272d7e6ab6c1392837b +[peter: stripped unrelated ._.gitignore change] +Signed-off-by: Peter Seiderer +--- + nls.c | 4 ++++ + patchlevel | 2 +- + 2 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/nls.c b/nls.c +index 5c6a13b..8c027d6 100644 +--- a/nls.c ++++ b/nls.c +@@ -141,6 +141,10 @@ _rl_init_locale (void) + if (lspec == 0) + lspec = ""; + ret = setlocale (LC_CTYPE, lspec); /* ok, since it does not change locale */ ++ if (ret == 0 || *ret == 0) ++ ret = setlocale (LC_CTYPE, (char *)NULL); ++ if (ret == 0 || *ret == 0) ++ ret = RL_DEFAULT_LOCALE; + #else + ret = (lspec == 0 || *lspec == 0) ? RL_DEFAULT_LOCALE : lspec; + #endif +diff --git a/patchlevel b/patchlevel +index d8c9df7..fdf4740 100644 +--- a/patchlevel ++++ b/patchlevel +@@ -1,3 +1,3 @@ + # Do not edit -- exists only for use by patch + +-0 ++1 +-- +2.39.2 + diff --git a/package/readline/Config.in b/package/readline/Config.in new file mode 100644 index 00000000..fd21cfea --- /dev/null +++ b/package/readline/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_READLINE + bool "readline" + select BR2_PACKAGE_NCURSES + help + The GNU Readline library provides a set of functions for use + by applications that allow users to edit command lines + as they are typed in. + + https://tiswww.case.edu/php/chet/readline/rltop.html + +config BR2_PACKAGE_READLINE_BRACKETED_PASTE + bool "Enable bracketed paste" + depends on BR2_PACKAGE_READLINE + help + Enable the "bracketed paste" feature in libreadline. + + Bracketed paste is helpful for interactive sessions when + one wants to prevent pasted text from being interpreted + as typed-in commands. However, it also causes control + characters to show up in the raw output of a (telnet) + session. This can cause issues and throw off pattern + matching if the session output is being captured for + automated processing. + + For further information on this feature and whether you + may want it, see: + https://cirw.in/blog/bracketed-paste diff --git a/package/readline/inputrc b/package/readline/inputrc new file mode 100644 index 00000000..2f1cb601 --- /dev/null +++ b/package/readline/inputrc @@ -0,0 +1,44 @@ +# /etc/inputrc - global inputrc for libreadline +# See readline(3readline) and `info readline' for more information. + +# Be 8 bit clean. +set input-meta on +set output-meta on +set bell-style visible + +# To allow the use of 8bit-characters like the german umlauts, comment out +# the line below. However this makes the meta key not work as a meta key, +# which is annoying to those which don't need to type in 8-bit characters. + +# set convert-meta off + +"\e0d": backward-word +"\e0c": forward-word +"\e[h": beginning-of-line +"\e[f": end-of-line +"\e[1~": beginning-of-line +"\e[4~": end-of-line +#"\e[5~": beginning-of-history +#"\e[6~": end-of-history +"\e[3~": delete-char +"\e[2~": quoted-insert + +# Common standard keypad and cursor +# (codes courtsey Werner Fink, ) +#"\e[1~": history-search-backward +"\e[2~": yank +"\e[3~": delete-char +#"\e[4~": set-mark +"\e[5~": history-search-backward +"\e[6~": history-search-forward +# Normal keypad and cursor of xterm +"\e[F": end-of-line +"\e[H": beginning-of-line +# Application keypad and cursor of xterm +"\eOA": previous-history +"\eOC": forward-char +"\eOB": next-history +"\eOD": backward-char +"\eOF": end-of-line +"\eOH": beginning-of-line + diff --git a/package/readline/readline.hash b/package/readline/readline.hash new file mode 100644 index 00000000..627746d8 --- /dev/null +++ b/package/readline/readline.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature from +# https://ftp.gnu.org/gnu/readline/readline-8.2.tar.gz.sig +sha256 3feb7171f16a84ee82ca18a36d7b9be109a52c04f492a053331d7d1095007c35 readline-8.2.tar.gz + +# Hash for license file +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/readline/readline.mk b/package/readline/readline.mk new file mode 100644 index 00000000..66812dee --- /dev/null +++ b/package/readline/readline.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# readline +# +################################################################################ + +READLINE_VERSION = 8.2 +READLINE_SITE = $(BR2_GNU_MIRROR)/readline +READLINE_INSTALL_STAGING = YES +READLINE_DEPENDENCIES = ncurses host-autoconf +HOST_READLINE_DEPENDENCIES = host-ncurses host-autoconf +READLINE_CONF_ENV = bash_cv_func_sigsetjmp=yes \ + bash_cv_wcwidth_broken=no +READLINE_CONF_OPTS = --disable-install-examples +READLINE_LICENSE = GPL-3.0+ +READLINE_LICENSE_FILES = COPYING +READLINE_CPE_ID_VENDOR = gnu + +ifeq ($(BR2_PACKAGE_READLINE_BRACKETED_PASTE),y) +READLINE_CONF_OPTS += --enable-bracketed-paste-default +else +READLINE_CONF_OPTS += --disable-bracketed-paste-default +endif + +define READLINE_INSTALL_INPUTRC + $(INSTALL) -D -m 644 package/readline/inputrc $(TARGET_DIR)/etc/inputrc +endef +READLINE_POST_INSTALL_TARGET_HOOKS += READLINE_INSTALL_INPUTRC + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/reaver/Config.in b/package/reaver/Config.in new file mode 100644 index 00000000..c286fa8d --- /dev/null +++ b/package/reaver/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_REAVER + bool "reaver" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBPCAP + help + Reaver is a tool to audit networks against brute WPS pins + attacks. It is complementary to "Aircrack-ng". + + https://code.google.com/archive/p/reaver-wps/wikis/README.wiki + https://github.com/t6x/reaver-wps-fork-t6x + +comment "reaver needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/reaver/reaver.hash b/package/reaver/reaver.hash new file mode 100644 index 00000000..cb01e520 --- /dev/null +++ b/package/reaver/reaver.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 73189782b208d12b8dddc4f29d32e1f72b1f3609e573c9ea9510deebec394583 reaver-1.6.6.tar.gz +sha256 bb40cfd5e9ca6e8465ea3c236f3f2293e8300af1bfe87e72fabe482ae6cc995a docs/LICENSE diff --git a/package/reaver/reaver.mk b/package/reaver/reaver.mk new file mode 100644 index 00000000..2b5f8296 --- /dev/null +++ b/package/reaver/reaver.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# reaver +# +################################################################################ + +# Older repos for this project will not cross-compile easily +# while this one works right away +REAVER_VERSION = 1.6.6 +REAVER_SITE = $(call github,t6x,reaver-wps-fork-t6x,v$(REAVER_VERSION)) +REAVER_LICENSE = GPL-2.0+ +REAVER_LICENSE_FILES = docs/LICENSE + +REAVER_SUBDIR = src +REAVER_DEPENDENCIES = libpcap + +ifeq ($(BR2_STATIC_LIBS),y) +REAVER_CONF_ENV += \ + LIBS="`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`" \ + LDFLAGS="$(TARGET_LDFLAGS) `$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`" +endif + +$(eval $(autotools-package)) diff --git a/package/redir/Config.in b/package/redir/Config.in new file mode 100644 index 00000000..6e51c642 --- /dev/null +++ b/package/redir/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_REDIR + bool "redir" + depends on BR2_USE_MMU # fork() + help + This is a TCP port redirector for UNIX. + + https://github.com/troglobit/redir diff --git a/package/redir/redir.hash b/package/redir/redir.hash new file mode 100644 index 00000000..8cc19f6a --- /dev/null +++ b/package/redir/redir.hash @@ -0,0 +1,4 @@ +# From https://github.com/troglobit/redir/releases/download/v3.3/redir-3.3.tar.xz.md5 +md5 b452e1ca6faded7bab9c76dd61d9d983 redir-3.3.tar.xz +# License files +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/redir/redir.mk b/package/redir/redir.mk new file mode 100644 index 00000000..ea02d43a --- /dev/null +++ b/package/redir/redir.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# redir +# +################################################################################ + +REDIR_VERSION = 3.3 +REDIR_SOURCE = redir-$(REDIR_VERSION).tar.xz +REDIR_SITE = https://github.com/troglobit/redir/releases/download/v$(REDIR_VERSION) +REDIR_LICENSE = GPL-2.0+ +REDIR_LICENSE_FILES = COPYING +REDIR_CONF_OPTS = \ + --disable-compat \ + --enable-shaper \ + --enable-ftp + +$(eval $(autotools-package)) diff --git a/package/redis-plus-plus/Config.in b/package/redis-plus-plus/Config.in new file mode 100644 index 00000000..64a84102 --- /dev/null +++ b/package/redis-plus-plus/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_REDIS_PLUS_PLUS + bool "redis-plus-plus" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_HIREDIS + help + Redis client written in C++ + + This is a C++ client library for Redis. + It's based on hiredis, and is compatible + with C++ 17, C++ 14, and C++ 11. + + https://github.com/sewenew/redis-plus-plus + +comment "redis-plus-plus needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/redis-plus-plus/redis-plus-plus.hash b/package/redis-plus-plus/redis-plus-plus.hash new file mode 100644 index 00000000..4cdc1760 --- /dev/null +++ b/package/redis-plus-plus/redis-plus-plus.hash @@ -0,0 +1,3 @@ +# Locally calculated: +sha256 26c1e45cdbafe1af4d2cf756957b2268baab6f802b53bcdd435864620e2c03c7 redis-plus-plus-1.3.12.tar.gz +sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE diff --git a/package/redis-plus-plus/redis-plus-plus.mk b/package/redis-plus-plus/redis-plus-plus.mk new file mode 100644 index 00000000..167d8bfa --- /dev/null +++ b/package/redis-plus-plus/redis-plus-plus.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# redis-plus-plus +# +################################################################################ + +REDIS_PLUS_PLUS_VERSION = 1.3.12 +REDIS_PLUS_PLUS_SITE = $(call github,sewenew,redis-plus-plus,$(REDIS_PLUS_PLUS_VERSION)) +REDIS_PLUS_PLUS_LICENSE = Apache-2.0 +REDIS_PLUS_PLUS_LICENSE_FILES = LICENSE +REDIS_PLUS_PLUS_INSTALL_STAGING = YES +REDIS_PLUS_PLUS_DEPENDENCIES = hiredis + +REDIS_PLUS_PLUS_CONF_OPTS = \ + -DREDIS_PLUS_PLUS_BUILD_SHARED=$(if $(BR2_STATIC_LIBS),OFF,ON) \ + -DREDIS_PLUS_PLUS_BUILD_TEST=OFF + +# since version 1.3.0, by default, redis-plus-plus is built with the +# -std=c++17 standard +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_8),) +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_5),y) +REDIS_PLUS_PLUS_CONF_OPTS += -DREDIS_PLUS_PLUS_CXX_STANDARD=14 +else +REDIS_PLUS_PLUS_CONF_OPTS += -DREDIS_PLUS_PLUS_CXX_STANDARD=11 +endif +endif + +$(eval $(cmake-package)) diff --git a/package/redis/0001-uclibc.patch b/package/redis/0001-uclibc.patch new file mode 100644 index 00000000..6761f9f3 --- /dev/null +++ b/package/redis/0001-uclibc.patch @@ -0,0 +1,30 @@ +redis-001-uclibc.patch: This patch fixes redis so that it can be compiled +against uclibc. Patch originates from: + + Support cross-compiling for uClibc targets + https://github.com/antirez/redis/pull/537 + Mike Steinert, mike.steinert@gmail.com + +Signed-off-by: Daniel Price +[Martin: adapt to 3.0.3] +Signed-off-by: Martin Bark +[Titouan: adapt to 5.0.4] +Signed-off-by: Titouan Christophe +[Fabrice: update for 6.0.9] +Signed-off-by: Fabrice Fontaine +[Titouan: adapt to 7.2.1] +Signed-off-by: Titouan Christophe + +========================================================================= +diff -ur old/src/config.h new/src/config.h +--- old/src/config.h 2012-10-26 07:20:24.000000000 -0700 ++++ new/src/config.h 2012-10-31 13:41:51.206309564 -0700 +@@ -71,7 +71,7 @@ + #endif + + /* Test for backtrace() */ +-#if defined(__APPLE__) || (defined(__linux__) && defined(__GLIBC__)) || \ ++#if defined(__APPLE__) || (defined(__linux__) && defined(__GLIBC__) && !defined(__UCLIBC__)) || \ + defined(__FreeBSD__) || ((defined(__OpenBSD__) || defined(__NetBSD__) || defined(__sun)) && defined(USE_BACKTRACE))\ + || defined(__DragonFly__) || (defined(__UCLIBC__) && defined(__UCLIBC_HAS_BACKTRACE__)) + #define HAVE_BACKTRACE 1 diff --git a/package/redis/0002-largefile-conditional-define.patch b/package/redis/0002-largefile-conditional-define.patch new file mode 100644 index 00000000..685a30cc --- /dev/null +++ b/package/redis/0002-largefile-conditional-define.patch @@ -0,0 +1,35 @@ +Define _LARGEFILE_SOURCE and _FILE_OFFSET_BITS conditionally + +In order to avoid ugly warnings at compile time, only define +_LARGEFILE_SOURCE and _FILE_OFFSET_BITS if they have not already been +defined through the build command line. + +Avoids: + + In file included from redis.h:33:0, + from migrate.c:1: + fmacros.h:45:0: warning: "_LARGEFILE_SOURCE" redefined + :0:0: note: this is the location of the previous definition + +Signed-off-by: Thomas Petazzoni +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi + +Index: redis-2.6.11/src/fmacros.h +=================================================================== +--- redis-2.6.11.orig/src/fmacros.h 2013-03-25 22:09:15.000000000 +0100 ++++ redis-2.6.11/src/fmacros.h 2013-03-25 22:09:40.000000000 +0100 +@@ -55,8 +55,13 @@ + #define _POSIX_C_SOURCE 199506L + #endif + ++#ifndef _LARGEFILE_SOURCE + #define _LARGEFILE_SOURCE ++#endif ++ ++#ifndef _FILE_OFFSET_BITS + #define _FILE_OFFSET_BITS 64 ++#endif + + /* deprecate unsafe functions + * diff --git a/package/redis/0003-redis.conf-adjust-defauts-for-buildroot.patch b/package/redis/0003-redis.conf-adjust-defauts-for-buildroot.patch new file mode 100644 index 00000000..6ad81a49 --- /dev/null +++ b/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/package/redis/Config.in b/package/redis/Config.in new file mode 100644 index 00000000..a2239b4a --- /dev/null +++ b/package/redis/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_REDIS + bool "redis" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # _Atomic keyword + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # pthread_setname_np() + help + Redis is an open source (BSD licensed), in-memory data + structure store, used as a database, cache and message + broker. It supports data structures such as strings, + hashes, lists, sets, sorted sets with range queries, + bitmaps, hyperloglogs, geospatial indexes with radius + queries and streams. + + http://www.redis.io + +comment "redis needs a toolchain w/ gcc>=4.9, dynamic library, nptl" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/redis/S50redis b/package/redis/S50redis new file mode 100644 index 00000000..ae2a3417 --- /dev/null +++ b/package/redis/S50redis @@ -0,0 +1,38 @@ +#!/bin/sh +# +# start redis +# + +start() { + printf "Starting redis: " + umask 077 + start-stop-daemon -S -q -c redis:redis -b \ + --exec /usr/bin/redis-server -- /etc/redis.conf + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping redis: " + /usr/bin/redis-cli shutdown + [ $? = 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/package/redis/redis.hash b/package/redis/redis.hash new file mode 100644 index 00000000..5c3a5ea4 --- /dev/null +++ b/package/redis/redis.hash @@ -0,0 +1,5 @@ +# From https://github.com/redis/redis-hashes/blob/master/README +sha256 5981179706f8391f03be91d951acafaeda91af7fac56beffb2701963103e423d redis-7.2.5.tar.gz + +# Locally calculated +sha256 97f0a15b7bbae580d2609dad2e11f1956ae167be296ab60f4691ab9c30ee9828 COPYING diff --git a/package/redis/redis.mk b/package/redis/redis.mk new file mode 100644 index 00000000..852bf31c --- /dev/null +++ b/package/redis/redis.mk @@ -0,0 +1,70 @@ +################################################################################ +# +# redis +# +################################################################################ + +REDIS_VERSION = 7.2.5 +REDIS_SITE = http://download.redis.io/releases +REDIS_LICENSE = BSD-3-Clause (core); MIT and BSD family licenses (Bundled components) +REDIS_LICENSE_FILES = COPYING +REDIS_CPE_ID_VENDOR = redislabs +REDIS_SELINUX_MODULES = redis + +define REDIS_USERS + redis -1 redis -1 * /var/lib/redis /bin/false - Redis Server +endef + +# Uses __atomic_fetch_add_4. Adding -latomic to LDFLAGS does not work, +# because LDFLAGS is used before the list of object files. We need to +# add -latomic to FINAL_LIBS to provide -latomic at the correct place +# in the linking command. +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +define REDIS_FIX_MAKEFILE + $(SED) 's/FINAL_LIBS=-lm/FINAL_LIBS=-lm -latomic/' $(@D)/src/Makefile +endef +REDIS_POST_PATCH_HOOKS = REDIS_FIX_MAKEFILE +endif + +# Redis doesn't support DESTDIR (yet, see +# https://github.com/antirez/redis/pull/609). We set PREFIX +# instead. +REDIS_BUILDOPTS = $(TARGET_CONFIGURE_OPTS) \ + PREFIX=$(TARGET_DIR)/usr MALLOC=libc WARNINGS= + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +REDIS_DEPENDENCIES += systemd +REDIS_BUILDOPTS += USE_SYSTEMD=yes +else +REDIS_BUILDOPTS += USE_SYSTEMD=no +endif + +ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) +REDIS_DEPENDENCIES += libopenssl +REDIS_BUILDOPTS += BUILD_TLS=yes +else +REDIS_BUILDOPTS += BUILD_TLS=no +endif + +define REDIS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(REDIS_BUILDOPTS) -C $(@D) +endef + +define REDIS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(REDIS_BUILDOPTS) -C $(@D) \ + LDCONFIG=true install + $(INSTALL) -D -m 0644 $(@D)/redis.conf \ + $(TARGET_DIR)/etc/redis.conf +endef + +define REDIS_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/redis/S50redis \ + $(TARGET_DIR)/etc/init.d/S50redis +endef + +define REDIS_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/redis/redis.service \ + $(TARGET_DIR)/usr/lib/systemd/system/redis.service +endef + +$(eval $(generic-package)) diff --git a/package/redis/redis.service b/package/redis/redis.service new file mode 100644 index 00000000..2cc82a19 --- /dev/null +++ b/package/redis/redis.service @@ -0,0 +1,24 @@ +[Unit] +Description=Redis data structure server +Documentation=https://redis.io/documentation +After=network.target + +[Service] +Type=notify +User=redis +Group=redis +ExecStart=/usr/bin/redis-server --supervised systemd --daemonize no +TimeoutStartSec=5 +TimeoutStopSec=5 +CapabilityBoundingSet= +PrivateTmp=true +PrivateDevices=true +ProtectSystem=full +ProtectHome=true +NoNewPrivileges=true +RuntimeDirectory=redis +RuntimeDirectoryMode=755 +LimitNOFILE=10032 + +[Install] +WantedBy=multi-user.target diff --git a/package/refpolicy/2.20231002/0001-policy-modules-services-smartmon.te-make-fstools-opt.patch b/package/refpolicy/2.20231002/0001-policy-modules-services-smartmon.te-make-fstools-opt.patch new file mode 100644 index 00000000..ddf2943b --- /dev/null +++ b/package/refpolicy/2.20231002/0001-policy-modules-services-smartmon.te-make-fstools-opt.patch @@ -0,0 +1,44 @@ +From c6d1345732c463cb45d8ba490081ad92936bfd69 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 28 Nov 2023 22:30:01 +0100 +Subject: [PATCH] policy/modules/services/smartmon.te: make fstools optional + +Make fstools optional to avoid the following build failure raised since +version 2.20231002 and +https://github.com/SELinuxProject/refpolicy/commit/cb068f09d224f90a97fa63a574fb423bbe1ceeda: + + Compiling targeted policy.33 + env LD_LIBRARY_PATH="/home/thomas/autobuild/instance-2/output-1/host/lib:/home/thomas/autobuild/instance-2/output-1/host/usr/lib" /home/thomas/autobuild/instance-2/output-1/host/usr/bin/checkpolicy -c 33 -U deny -S -O -E policy.conf -o policy.33 + policy/modules/services/smartmon.te:146:ERROR 'type fsadm_exec_t is not within scope' at token ';' on line 237472: + allow smartmon_update_drivedb_t fsadm_exec_t:file { { getattr open map read execute ioctl } ioctl lock execute_no_trans }; + #line 146 + checkpolicy: error(s) encountered while parsing configuration + make[1]: *** [Rules.monolithic:80: policy.33] Error 1 + +Fixes: + - http://autobuild.buildroot.org/results/a01123de9a8c1927060e7e4748666bebfc82ea44 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/SELinuxProject/refpolicy/pull/738 +--- + policy/modules/services/smartmon.te | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/policy/modules/services/smartmon.te b/policy/modules/services/smartmon.te +index 32c80f712..761280c11 100644 +--- a/policy/modules/services/smartmon.te ++++ b/policy/modules/services/smartmon.te +@@ -143,7 +143,9 @@ corenet_tcp_connect_http_port(smartmon_update_drivedb_t) + + files_read_etc_files(smartmon_update_drivedb_t) + +-fstools_exec(smartmon_update_drivedb_t) ++optional_policy(` ++ fstools_exec(smartmon_update_drivedb_t) ++') + + kernel_dontaudit_read_system_state(smartmon_update_drivedb_t) + +-- +2.42.0 + diff --git a/package/refpolicy/Config.in b/package/refpolicy/Config.in new file mode 100644 index 00000000..8ae8f044 --- /dev/null +++ b/package/refpolicy/Config.in @@ -0,0 +1,129 @@ +config BR2_PACKAGE_REFPOLICY + bool "refpolicy" + depends on BR2_TOOLCHAIN_HAS_THREADS # libsepol + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # libsepol + depends on BR2_HOST_GCC_AT_LEAST_5 # host-setools -> host-libsepol + # Even though libsepol is not necessary for building, we get + # the policy version from libsepol, so we select it, and treat + # it like a runtime dependency. + select BR2_PACKAGE_LIBSEPOL + help + The SELinux Reference Policy project (refpolicy) is a + complete SELinux policy that can be used as the system + policy for a variety of systems and used as the basis for + creating other policies. Reference Policy was originally + based on the NSA example policy, but aims to accomplish many + additional goals. + + The current refpolicy does not fully support Buildroot and + needs modifications to work with the default system file + layout. These changes should be added as patches to the + refpolicy that modify a single SELinux policy. + + The refpolicy works for the most part in permissive + mode. Only the basic set of utilities are enabled in the + example policy config and some of the pathing in the + policies is not correct. Individual policies would need to + be tweaked to get everything functioning properly. + + https://github.com/TresysTechnology/refpolicy + +if BR2_PACKAGE_REFPOLICY + +choice + prompt "Refpolicy version" + default BR2_PACKAGE_REFPOLICY_UPSTREAM_VERSION + +config BR2_PACKAGE_REFPOLICY_UPSTREAM_VERSION + bool "Upstream version" + # Consider reworking the following when adding new entries: + # Upstream refpolicy for openssh expects linux-pam to be used + select BR2_PACKAGE_LINUX_PAM if BR2_PACKAGE_OPENSSH \ + && BR2_USE_MMU \ + && BR2_ENABLE_LOCALE \ + && BR2_USE_WCHAR \ + && !BR2_STATIC_LIBS \ + && BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + help + Use the refpolicy as provided by Buildroot. + +config BR2_PACKAGE_REFPOLICY_CUSTOM_GIT + bool "Custom git repository" + help + Allows to get the refpolicy from a custom git repository. + + The custom refpolicy must define the full policy explicitly, + and must be a fork of the original refpolicy, to have the + same build system. When this is selected, only the custom + policy definition are taken into account and all the modules + of the policy are built into the binary policy. + +endchoice + +if BR2_PACKAGE_REFPOLICY_CUSTOM_GIT + +config BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_URL + string "URL of custom repository" + +config BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_VERSION + string "Custom repository version" + help + Revision to use in the typical format used by Git. + E.g. a sha id, tag, branch... + +endif + +choice + prompt "SELinux default state" + default BR2_PACKAGE_REFPOLICY_POLICY_STATE_PERMISSIVE + +config BR2_PACKAGE_REFPOLICY_POLICY_STATE_ENFORCING + bool "Enforcing" + help + SELinux security policy is enforced + +config BR2_PACKAGE_REFPOLICY_POLICY_STATE_PERMISSIVE + bool "Permissive" + help + SELinux prints warnings instead of enforcing + +config BR2_PACKAGE_REFPOLICY_POLICY_STATE_DISABLED + bool "Disabled" + help + No SELinux policy is loaded +endchoice + +config BR2_PACKAGE_REFPOLICY_POLICY_STATE + string + default "permissive" if BR2_PACKAGE_REFPOLICY_POLICY_STATE_PERMISSIVE + default "enforcing" if BR2_PACKAGE_REFPOLICY_POLICY_STATE_ENFORCING + default "disabled" if BR2_PACKAGE_REFPOLICY_POLICY_STATE_DISABLED + +if BR2_PACKAGE_REFPOLICY_UPSTREAM_VERSION + +config BR2_REFPOLICY_EXTRA_MODULES_DIRS + string "Extra modules directories" + help + Specify a space-separated list of directories containing + SELinux modules that will be built into the SELinux + policy. The modules will be automatically enabled in the + policy. + + Each of those directories must contain the SELinux policy + .fc, .if and .te files directly at the top-level, with no + sub-directories. Also, you cannot have several modules with + the same name in different directories. + +config BR2_REFPOLICY_EXTRA_MODULES + string "Extra modules to enable" + help + List of extra SELinux modules to enable in the refpolicy. + +endif + +endif + +comment "refpolicy needs a toolchain w/ threads, gcc >= 5, host gcc >= 5" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 || \ + !BR2_HOST_GCC_AT_LEAST_5 diff --git a/package/refpolicy/config b/package/refpolicy/config new file mode 100644 index 00000000..087297c1 --- /dev/null +++ b/package/refpolicy/config @@ -0,0 +1,8 @@ +# This file controls the state of SELinux on the system. +# SELINUX= can take one of these three values: +# enforcing - SELinux security policy is enforced. +# permissive - SELinux prints warnings instead of enforcing. +# disabled - No SELinux policy is loaded. +SELINUX=disabled + +SELINUXTYPE=targeted diff --git a/package/refpolicy/refpolicy.hash b/package/refpolicy/refpolicy.hash new file mode 100644 index 00000000..70d1acc9 --- /dev/null +++ b/package/refpolicy/refpolicy.hash @@ -0,0 +1,5 @@ +# From https://github.com/SELinuxProject/refpolicy/releases +sha256 c89cd3b2e5d99765cc24536fd8e76de83951ad23e05472350328b5a4f8bee410 refpolicy-2.20231002.tar.bz2 + +# Locally computed +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING diff --git a/package/refpolicy/refpolicy.mk b/package/refpolicy/refpolicy.mk new file mode 100644 index 00000000..fb1c213b --- /dev/null +++ b/package/refpolicy/refpolicy.mk @@ -0,0 +1,134 @@ +################################################################################ +# +# refpolicy +# +################################################################################ + +REFPOLICY_LICENSE = GPL-2.0 +REFPOLICY_LICENSE_FILES = COPYING +REFPOLICY_CPE_ID_VENDOR = selinuxproject +REFPOLICY_INSTALL_STAGING = YES +REFPOLICY_DEPENDENCIES = \ + host-m4 \ + host-checkpolicy \ + host-policycoreutils \ + host-python3 \ + host-setools \ + host-gawk \ + host-libxml2 + +ifeq ($(BR2_PACKAGE_REFPOLICY_CUSTOM_GIT),y) +REFPOLICY_VERSION = $(call qstrip,$(BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_VERSION)) +REFPOLICY_SITE = $(call qstrip,$(BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_URL)) +REFPOLICY_SITE_METHOD = git +BR_NO_CHECK_HASH_FOR += $(REFPOLICY_SOURCE) +else +REFPOLICY_VERSION = 2.20231002 +REFPOLICY_SOURCE = refpolicy-$(REFPOLICY_VERSION).tar.bz2 +REFPOLICY_SITE = https://github.com/SELinuxProject/refpolicy/releases/download/RELEASE_$(subst .,_,$(REFPOLICY_VERSION)) +endif + +# Cannot use multiple threads to build the reference policy +REFPOLICY_MAKE = \ + PYTHON=$(HOST_DIR)/bin/python3 \ + XMLLINT=$(LIBXML2_HOST_BINARY) \ + TEST_TOOLCHAIN=$(HOST_DIR) \ + $(TARGET_MAKE_ENV) \ + $(MAKE1) + +REFPOLICY_POLICY_VERSION = $(BR2_PACKAGE_LIBSEPOL_POLICY_VERSION) +REFPOLICY_POLICY_STATE = \ + $(call qstrip,$(BR2_PACKAGE_REFPOLICY_POLICY_STATE)) + +ifeq ($(BR2_PACKAGE_REFPOLICY_UPSTREAM_VERSION),y) + +# Allow to provide out-of-tree SELinux modules in addition to the ones +# in the refpolicy. +REFPOLICY_EXTRA_MODULES_DIRS = \ + $(strip \ + $(call qstrip,$(BR2_REFPOLICY_EXTRA_MODULES_DIRS)) \ + $(PACKAGES_SELINUX_EXTRA_MODULES_DIRS)) +$(foreach dir,$(REFPOLICY_EXTRA_MODULES_DIRS),\ + $(if $(wildcard $(dir)),,\ + $(error BR2_REFPOLICY_EXTRA_MODULES_DIRS contains nonexistent directory $(dir)))) + +REFPOLICY_MODULES = \ + application \ + authlogin \ + getty \ + init \ + libraries \ + locallogin \ + logging \ + miscfiles \ + modutils \ + mount \ + selinuxutil \ + storage \ + sysadm \ + sysnetwork \ + unconfined \ + userdomain \ + $(PACKAGES_SELINUX_MODULES) \ + $(call qstrip,$(BR2_REFPOLICY_EXTRA_MODULES)) \ + $(foreach d,$(REFPOLICY_EXTRA_MODULES_DIRS),\ + $(basename $(notdir $(wildcard $(d)/*.te)))) + +define REFPOLICY_COPY_EXTRA_MODULES + mkdir -p $(@D)/policy/modules/buildroot + rsync -au $(addsuffix /*,$(REFPOLICY_EXTRA_MODULES_DIRS)) \ + $(@D)/policy/modules/buildroot/ + if [ ! -f $(@D)/policy/modules/buildroot/metadata.xml ]; then \ + echo "Buildroot extra modules" > \ + $(@D)/policy/modules/buildroot/metadata.xml; \ + fi +endef + +# In the context of a monolithic policy enabling a piece of the policy as +# 'base' or 'module' is equivalent, so we enable them as 'base'. +define REFPOLICY_CONFIGURE_MODULES + $(SED) "s/ = module/ = no/g" $(@D)/policy/modules.conf + $(foreach m,$(sort $(REFPOLICY_MODULES)), + $(SED) "/^$(m) =/c\$(m) = base" $(@D)/policy/modules.conf + ) +endef + +endif # BR2_PACKAGE_REFPOLICY_UPSTREAM_VERSION = y + +ifeq ($(BR2_INIT_SYSTEMD),y) +define REFPOLICY_CONFIGURE_SYSTEMD + $(SED) "/SYSTEMD/c\SYSTEMD = y" $(@D)/build.conf +endef +endif + +define REFPOLICY_CONFIGURE_CMDS + $(SED) "/OUTPUT_POLICY/c\OUTPUT_POLICY = $(REFPOLICY_POLICY_VERSION)" \ + $(@D)/build.conf + $(SED) "/MONOLITHIC/c\MONOLITHIC = y" $(@D)/build.conf + $(SED) "/NAME/c\NAME = targeted" $(@D)/build.conf + $(REFPOLICY_CONFIGURE_SYSTEMD) + $(if $(REFPOLICY_EXTRA_MODULES_DIRS), \ + $(REFPOLICY_COPY_EXTRA_MODULES) + ) + $(REFPOLICY_MAKE) -C $(@D) bare conf + $(REFPOLICY_CONFIGURE_MODULES) +endef + +define REFPOLICY_BUILD_CMDS + $(REFPOLICY_MAKE) -C $(@D) policy +endef + +define REFPOLICY_INSTALL_STAGING_CMDS + $(REFPOLICY_MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) \ + install-src install-headers +endef + +define REFPOLICY_INSTALL_TARGET_CMDS + $(REFPOLICY_MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install + $(INSTALL) -m 0755 -D package/refpolicy/config \ + $(TARGET_DIR)/etc/selinux/config + $(SED) "/^SELINUX=/c\SELINUX=$(REFPOLICY_POLICY_STATE)" \ + $(TARGET_DIR)/etc/selinux/config +endef + +$(eval $(generic-package)) diff --git a/package/reproc/0001-reproc-Try-to-fix-gcc-13-build.patch b/package/reproc/0001-reproc-Try-to-fix-gcc-13-build.patch new file mode 100644 index 00000000..22b21bcb --- /dev/null +++ b/package/reproc/0001-reproc-Try-to-fix-gcc-13-build.patch @@ -0,0 +1,37 @@ +From 0b23d88894ccedde04537fa23ea55cb2f8365342 Mon Sep 17 00:00:00 2001 +From: Daan De Meyer +Date: Sat, 18 Mar 2023 19:38:19 +0100 +Subject: [PATCH] reproc++: Try to fix gcc 13 build + +Upstream: https://github.com/DaanDeMeyer/reproc/commit/0b23d88894ccedde04537fa23ea55cb2f8365342 +Signed-off-by: Fabrice Fontaine +--- + reproc++/include/reproc++/reproc.hpp | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/reproc++/include/reproc++/reproc.hpp b/reproc++/include/reproc++/reproc.hpp +index ab6f1394..e883ecec 100644 +--- a/reproc++/include/reproc++/reproc.hpp ++++ b/reproc++/include/reproc++/reproc.hpp +@@ -88,7 +88,7 @@ struct redirect { + + struct options { + struct { +- env::type behavior; ++ enum env::type behavior; + /*! Implicitly converts from any STL container of string pairs to the + environment format expected by `reproc_start`. */ + class env extra; +@@ -97,9 +97,9 @@ struct options { + const char *working_directory = nullptr; + + struct { +- redirect in; +- redirect out; +- redirect err; ++ struct redirect in; ++ struct redirect out; ++ struct redirect err; + bool parent; + bool discard; + FILE *file; diff --git a/package/reproc/0002-Fix-gcc-13-build.patch b/package/reproc/0002-Fix-gcc-13-build.patch new file mode 100644 index 00000000..3e06a2a3 --- /dev/null +++ b/package/reproc/0002-Fix-gcc-13-build.patch @@ -0,0 +1,28 @@ +From 9f399675b821e175f85ac3ee6e3fd2e6056573eb Mon Sep 17 00:00:00 2001 +From: Daan De Meyer +Date: Fri, 21 Apr 2023 19:36:45 +0200 +Subject: [PATCH] Fix gcc 13 build + +Upstream: https://github.com/DaanDeMeyer/reproc/commit/9f399675b821e175f85ac3ee6e3fd2e6056573eb +Signed-off-by: Fabrice Fontaine +--- + reproc++/include/reproc++/reproc.hpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/reproc++/include/reproc++/reproc.hpp b/reproc++/include/reproc++/reproc.hpp +index b52f495e..7b614a94 100644 +--- a/reproc++/include/reproc++/reproc.hpp ++++ b/reproc++/include/reproc++/reproc.hpp +@@ -88,10 +88,10 @@ struct redirect { + + struct options { + struct { +- enum env::type behavior; ++ reproc::env::type behavior; + /*! Implicitly converts from any STL container of string pairs to the + environment format expected by `reproc_start`. */ +- class env extra; ++ reproc::env extra; + } env = {}; + + const char *working_directory = nullptr; diff --git a/package/reproc/Config.in b/package/reproc/Config.in new file mode 100644 index 00000000..a4e9c893 --- /dev/null +++ b/package/reproc/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_REPROC + bool "reproc" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR # uses wchar_t + depends on BR2_TOOLCHAIN_HAS_THREADS # pthread + help + reproc is a cross-platform C/C++ library that simplifies + starting, stopping and communicating with external programs. + + https://github.com/DaanDeMeyer/reproc + +comment "reproc needs a toolchain w/ threads, wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/reproc/reproc.hash b/package/reproc/reproc.hash new file mode 100644 index 00000000..6da6d0a0 --- /dev/null +++ b/package/reproc/reproc.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 55c780f7faa5c8cabd83ebbb84b68e5e0e09732de70a129f6b3c801e905415dd reproc-14.2.4.tar.gz +sha256 8f91afbe266bebac2cf1b220e0e67ace4cb9a97d2b21940abef20eb6691cfa91 LICENSE diff --git a/package/reproc/reproc.mk b/package/reproc/reproc.mk new file mode 100644 index 00000000..3167911c --- /dev/null +++ b/package/reproc/reproc.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# reproc +# +################################################################################ + +REPROC_VERSION = 14.2.4 +REPROC_SITE = $(call github,DaanDeMeyer,reproc,v$(REPROC_VERSION)) +REPROC_LICENSE = MIT +REPROC_LICENSE_FILES = LICENSE +REPROC_INSTALL_STAGING = YES + +ifeq ($(BR2_INSTALL_LIBSTDCPP)$(BR2_TOOLCHAIN_GCC_AT_LEAST_4_8),yy) # C++11 +REPROC_CONF_OPTS += -DREPROC++=ON +endif + +$(eval $(cmake-package)) diff --git a/package/resiprocate/0001-Fix-some-issue-compiling-with-Visual-Studio.patch b/package/resiprocate/0001-Fix-some-issue-compiling-with-Visual-Studio.patch new file mode 100644 index 00000000..2157ea04 --- /dev/null +++ b/package/resiprocate/0001-Fix-some-issue-compiling-with-Visual-Studio.patch @@ -0,0 +1,95 @@ +From be76b10a50749e2e11dce8dcc38b414a7f9d8747 Mon Sep 17 00:00:00 2001 +From: Ben Walden +Date: Sat, 22 Aug 2020 23:14:11 +0100 +Subject: [PATCH] Fix some issue compiling with Visual Studio 16.7.0 and tidy + up Visual Studio 16 project files + +Upstream: https://github.com/resiprocate/resiprocate/commit/be76b10a50749e2e11dce8dcc38b414a7f9d8747 +[Retrieved (and updated to keep only RendKa.cxx update)] +Signed-off-by: Fabrice Fontaine +--- + VisualStudioReadme.htm | 65 + + contrib/GeoIP/GeoIP_12_0.vcxproj | 550 ------- + contrib/GeoIP/GeoIP_16_0.vcxproj | 93 +- + .../db/build_windows/db_static_12_0.vcxproj | 1260 ----------------- + .../db/build_windows/db_static_16_0.vcxproj | 696 +-------- + contrib/db/dbinc/atomic.h | 4 +- + contrib/db/mp/mp_fget.c | 4 +- + contrib/db/mp/mp_mvcc.c | 4 +- + contrib/db/mp/mp_region.c | 4 +- + contrib/db/mutex/mut_method.c | 2 +- + contrib/pcre/pcre_12_0.vcxproj | 466 ------ + contrib/pcre/pcre_16_0.vcxproj | 159 +-- + contrib/popt/popt_12_0.vcxproj | 394 ------ + contrib/popt/popt_16_0.vcxproj | 120 +- + reSIProcate_16_0.sln | 58 +- + .../queuetostream_12_0.vcxproj | 582 -------- + .../queuetostream_16_0.vcxproj | 207 ++- + repro/repro_12_0.vcxproj | 825 ----------- + repro/repro_12_0.vcxproj.filters | 47 - + repro/repro_16_0.vcxproj | 159 ++- + repro/reprocmd/reprocmd_12_0.vcxproj | 597 -------- + repro/reprocmd/reprocmd_16_0.vcxproj | 139 +- + repro/reprolib_12_0.vcxproj | 596 -------- + repro/reprolib_12_0.vcxproj.filters | 136 -- + repro/reprolib_16_0.vcxproj | 132 +- + resip/dum/dum_12_0.vcxproj | 615 -------- + resip/dum/dum_16_0.vcxproj | 124 +- + resip/dum/test/basicCall_12_0.vcxproj | 621 -------- + resip/dum/test/basicCall_16_0.vcxproj | 145 +- + resip/dum/test/basicClient_12_0.vcxproj | 653 --------- + resip/dum/test/basicClient_16_0.vcxproj | 158 +-- + resip/dum/test/basicMessage_12_0.vcxproj | 615 -------- + resip/dum/test/basicMessage_16_0.vcxproj | 141 +- + resip/dum/test/basicRegister_12_0.vcxproj | 615 -------- + resip/dum/test/basicRegister_16_0.vcxproj | 137 +- + resip/rend/RendKa.cxx | 2 +- + resip/rend/rend_12_0.vcxproj | 352 ----- + resip/rend/rend_16_0.vcxproj | 89 +- + resip/stack/resiprocate_12_0.vcxproj | 873 ------------ + resip/stack/resiprocate_12_0.vcxproj.filters | 351 ----- + resip/stack/resiprocate_16_0.vcxproj | 165 ++- + resip/stack/test/test_12_0.vcxproj | 627 -------- + resip/stack/test/test_16_0.vcxproj | 171 ++- + rutil/dns/ares/ares_12_0.vcxproj | 488 ------- + rutil/dns/ares/ares_12_0.vcxproj.filters | 34 - + rutil/dns/ares/ares_16_0.vcxproj | 159 +-- + rutil/rutil_12_0.vcxproj | 604 -------- + rutil/rutil_16_0.vcxproj | 153 +- + 48 files changed, 1409 insertions(+), 13782 deletions(-) + delete mode 100644 contrib/GeoIP/GeoIP_12_0.vcxproj + delete mode 100644 contrib/db/build_windows/db_static_12_0.vcxproj + delete mode 100644 contrib/pcre/pcre_12_0.vcxproj + delete mode 100644 contrib/popt/popt_12_0.vcxproj + delete mode 100644 repro/accountingconsumers/queuetostream_12_0.vcxproj + delete mode 100644 repro/repro_12_0.vcxproj + delete mode 100644 repro/repro_12_0.vcxproj.filters + delete mode 100644 repro/reprocmd/reprocmd_12_0.vcxproj + delete mode 100644 repro/reprolib_12_0.vcxproj + delete mode 100644 repro/reprolib_12_0.vcxproj.filters + delete mode 100644 resip/dum/dum_12_0.vcxproj + delete mode 100644 resip/dum/test/basicCall_12_0.vcxproj + delete mode 100644 resip/dum/test/basicClient_12_0.vcxproj + delete mode 100644 resip/dum/test/basicMessage_12_0.vcxproj + delete mode 100644 resip/dum/test/basicRegister_12_0.vcxproj + delete mode 100644 resip/rend/rend_12_0.vcxproj + delete mode 100644 resip/stack/resiprocate_12_0.vcxproj + delete mode 100644 resip/stack/resiprocate_12_0.vcxproj.filters + delete mode 100644 resip/stack/test/test_12_0.vcxproj + delete mode 100644 rutil/dns/ares/ares_12_0.vcxproj + delete mode 100644 rutil/dns/ares/ares_12_0.vcxproj.filters + delete mode 100644 rutil/rutil_12_0.vcxproj + +diff --git a/resip/rend/RendKa.cxx b/resip/rend/RendKa.cxx +index 8645f17636..8321ada1ee 100644 +--- a/resip/rend/RendKa.cxx ++++ b/resip/rend/RendKa.cxx +@@ -66,7 +66,7 @@ bool operator<(const RendKaAssoc& a, const RendKaAssoc& b) + + struct RendKaConn + { +- bool operator() (const RendKaAssocPtr& a, const RendKaAssocPtr& b) ++ bool operator()(const RendKaAssocPtr& a, const RendKaAssocPtr& b) const + { + return *a < *b; + } diff --git a/package/resiprocate/0002-rutil-OpenSSLInit-disable-use-of-legacy-OpenSSL-memo.patch b/package/resiprocate/0002-rutil-OpenSSLInit-disable-use-of-legacy-OpenSSL-memo.patch new file mode 100644 index 00000000..c333df84 --- /dev/null +++ b/package/resiprocate/0002-rutil-OpenSSLInit-disable-use-of-legacy-OpenSSL-memo.patch @@ -0,0 +1,38 @@ +From e7c33f4e078e6e5dfa7dea796fa4ffb88f48a37a Mon Sep 17 00:00:00 2001 +From: Daniel Pocock +Date: Thu, 4 Aug 2022 10:55:30 +0200 +Subject: [PATCH] rutil: OpenSSLInit: disable use of legacy OpenSSL memory leak + checking with OpenSSL 3.0 and later + +Upstream: https://github.com/resiprocate/resiprocate/commit/e7c33f4e078e6e5dfa7dea796fa4ffb88f48a37a + +Signed-off-by: Bernd Kuhls +--- + rutil/ssl/OpenSSLInit.cxx | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/rutil/ssl/OpenSSLInit.cxx b/rutil/ssl/OpenSSLInit.cxx +index d42486f96b..65afed09fe 100644 +--- a/rutil/ssl/OpenSSLInit.cxx ++++ b/rutil/ssl/OpenSSLInit.cxx +@@ -69,14 +69,19 @@ OpenSSLInit::OpenSSLInit() + CRYPTO_set_dynlock_lock_callback(::resip_OpenSSLInit_dynLockFunction); + #endif + ++/* The OpenSSL memory leak checking has been deprecated since ++ OpenSSL v3.0. OpenSSL developers recommend that we rely ++ on modern compilers to provide the same functionality. */ + #if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER) + CRYPTO_malloc_debug_init(); + CRYPTO_set_mem_debug_options(V_CRYPTO_MDEBUG_ALL); +-#else ++#elsif (OPENSSL_VERSION_NUMBER < 0x30000000L) + CRYPTO_set_mem_debug(1); + #endif + ++#if (OPENSSL_VERSION_NUMBER < 0x30000000L) || defined(LIBRESSL_VERSION_NUMBER) + CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON); ++#endif + + SSL_library_init(); + SSL_load_error_strings(); diff --git a/package/resiprocate/0003-rutil-fix-typo-in-preprocessor-condition.patch b/package/resiprocate/0003-rutil-fix-typo-in-preprocessor-condition.patch new file mode 100644 index 00000000..5cbe5871 --- /dev/null +++ b/package/resiprocate/0003-rutil-fix-typo-in-preprocessor-condition.patch @@ -0,0 +1,25 @@ +From 53302195c339dfaa104788a50aa900a48dbff777 Mon Sep 17 00:00:00 2001 +From: Andrey Semashev +Date: Sat, 10 Sep 2022 12:15:06 +0200 +Subject: [PATCH] rutil: fix typo in preprocessor condition + +Upstream: https://github.com/resiprocate/resiprocate/commit/53302195c339dfaa104788a50aa900a48dbff777 + +Signed-off-by: Bernd Kuhls +--- + rutil/ssl/OpenSSLInit.cxx | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/rutil/ssl/OpenSSLInit.cxx b/rutil/ssl/OpenSSLInit.cxx +index 65afed09fe..0d87a9f9d8 100644 +--- a/rutil/ssl/OpenSSLInit.cxx ++++ b/rutil/ssl/OpenSSLInit.cxx +@@ -75,7 +75,7 @@ OpenSSLInit::OpenSSLInit() + #if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER) + CRYPTO_malloc_debug_init(); + CRYPTO_set_mem_debug_options(V_CRYPTO_MDEBUG_ALL); +-#elsif (OPENSSL_VERSION_NUMBER < 0x30000000L) ++#elif (OPENSSL_VERSION_NUMBER < 0x30000000L) + CRYPTO_set_mem_debug(1); + #endif + diff --git a/package/resiprocate/0004-resip-stack-ssl-Security-cxx-remove-deprecated-OpenS.patch b/package/resiprocate/0004-resip-stack-ssl-Security-cxx-remove-deprecated-OpenS.patch new file mode 100644 index 00000000..2b595d64 --- /dev/null +++ b/package/resiprocate/0004-resip-stack-ssl-Security-cxx-remove-deprecated-OpenS.patch @@ -0,0 +1,26 @@ +From 88f98702d908549d888aa7f0ee1b0763e09662b1 Mon Sep 17 00:00:00 2001 +From: Daniel Pocock +Date: Thu, 4 Aug 2022 11:09:43 +0200 +Subject: [PATCH] resip/stack: ssl/Security.cxx: remove deprecated OpenSSL + ERR_GET_FUNC, not required + +Upstream: https://github.com/resiprocate/resiprocate/commit/88f98702d908549d888aa7f0ee1b0763e09662b1 + +Signed-off-by: Bernd Kuhls +--- + resip/stack/ssl/Security.cxx | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/resip/stack/ssl/Security.cxx b/resip/stack/ssl/Security.cxx +index 75dc6d838a..23c2ebbf09 100644 +--- a/resip/stack/ssl/Security.cxx ++++ b/resip/stack/ssl/Security.cxx +@@ -967,7 +967,7 @@ BaseSecurity::addPrivateKeyPEM( PEMType type, + char buffer[120]; + unsigned long err = ERR_get_error(); + ERR_error_string(err, buffer); +- if(ERR_GET_LIB(err) == ERR_LIB_EVP && ERR_GET_FUNC(err) == EVP_F_EVP_DECRYPTFINAL_EX && ERR_GET_REASON(err) == EVP_R_BAD_DECRYPT) ++ if(ERR_GET_LIB(err) == ERR_LIB_EVP && ERR_GET_REASON(err) == EVP_R_BAD_DECRYPT) + { + ErrLog(<< "Could not read private key (error=" << buffer << ") - likely incorrect password provided, may load correctly when transports are added with appropriate password"); + } diff --git a/package/resiprocate/Config.in b/package/resiprocate/Config.in new file mode 100644 index 00000000..7561b7c8 --- /dev/null +++ b/package/resiprocate/Config.in @@ -0,0 +1,50 @@ +comment "resiprocate needs a toolchain w/ C++, threads, wchar" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR + +config BR2_PACKAGE_RESIPROCATE + bool "resiprocate" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_C_ARES + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + help + reSIProcate is a framework that aims to fully implement the + SIP protocol in first class C++. It is intended for use in + other applications, such as the repro SIP proxy. + + By default this package provides the core libraries: librutil + (utilities), libresip (SIP stack/RFC compliant message + parsing) and libdum (SIP Dialog Usage Manager, a state + machine for SIP dialogs). + + https://www.resiprocate.org/ + +if BR2_PACKAGE_RESIPROCATE + +config BR2_PACKAGE_RESIPROCATE_DTLS_SUPPORT + bool "DTLS support" + select BR2_PACKAGE_OPENSSL + help + Enable DTLS support (requires OpenSSL) + +config BR2_PACKAGE_RESIPROCATE_REND + bool "resiprocate-rend" + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_POPT + help + Rend is tool that is was created specifically to load test + gtSIP based presence servers. + +config BR2_PACKAGE_RESIPROCATE_APPS + bool "resiprocate-apps" + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_PCRE + help + Build apps clicktocall and sipdial + +endif # BR2_PACKAGE_RESIPROCATE diff --git a/package/resiprocate/resiprocate.hash b/package/resiprocate/resiprocate.hash new file mode 100644 index 00000000..03336c64 --- /dev/null +++ b/package/resiprocate/resiprocate.hash @@ -0,0 +1,4 @@ +# http://list.resiprocate.org/pipermail/resiprocate-announce/2020-May/000000.html +sha256 046826503d3c8682ae0e42101b28f903c5f988235f1ff4a98dbfb9066d0d3d49 resiprocate-1.12.0.tar.gz +# Locally Computed +sha256 16b0fd1938a10fcd145904cc2dad74500fef9d27fc15b44cf8e8f92011f94d35 COPYING diff --git a/package/resiprocate/resiprocate.mk b/package/resiprocate/resiprocate.mk new file mode 100644 index 00000000..58b94246 --- /dev/null +++ b/package/resiprocate/resiprocate.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# resiprocate +# +################################################################################ + +RESIPROCATE_VERSION = 1.12.0 +RESIPROCATE_SITE = https://www.resiprocate.org/files/pub/reSIProcate/releases +# For complete details see https://www.resiprocate.org/License +RESIPROCATE_LICENSE = VSL-1.0, BSD-3-Clause +RESIPROCATE_LICENSE_FILES = COPYING +RESIPROCATE_CPE_ID_VENDOR = resiprocate +RESIPROCATE_INSTALL_STAGING = YES + +# Utilize c-ares from buildroot instead built in ARES library +# NOTE: resiprocate doesn't support --without- syntax as it will try +# to build with package if specified +RESIPROCATE_DEPENDENCIES = c-ares +RESIPROCATE_CONF_OPTS = -with-c-ares \ + --with-sysroot="$(STAGING_DIR)" + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +RESIPROCATE_DEPENDENCIES += openssl host-pkgconf +RESIPROCATE_CONF_OPTS += --with-ssl +# Configure.ac does not include '-lz' when statically linking against openssl +RESIPROCATE_CONF_ENV += LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl` +endif + +ifeq ($(BR2_PACKAGE_POPT),y) +RESIPROCATE_CONF_OPTS += --with-popt +RESIPROCATE_DEPENDENCIES += popt +endif + +ifeq ($(BR2_PACKAGE_RESIPROCATE_DTLS_SUPPORT),y) +RESIPROCATE_CONF_OPTS += --with-dtls +endif + +ifeq ($(BR2_PACKAGE_RESIPROCATE_REND),y) +RESIPROCATE_CONF_OPTS += --with-rend +RESIPROCATE_DEPENDENCIES += boost +endif + +ifeq ($(BR2_PACKAGE_RESIPROCATE_APPS),y) +RESIPROCATE_CONF_OPTS += --with-apps +RESIPROCATE_DEPENDENCIES += pcre +endif + +$(eval $(autotools-package)) diff --git a/package/restclient-cpp/Config.in b/package/restclient-cpp/Config.in new file mode 100644 index 00000000..9bf22408 --- /dev/null +++ b/package/restclient-cpp/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_RESTCLIENT_CPP + bool "restclient-cpp" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + select BR2_PACKAGE_LIBCURL + help + restclient-cpp is a C++ client library for + making HTTP/REST requests + + http://code.mrtazz.com/restclient-cpp/ + +comment "restclient-cpp needs a toolchain w/ C++, gcc >= 4.8" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 diff --git a/package/restclient-cpp/restclient-cpp.hash b/package/restclient-cpp/restclient-cpp.hash new file mode 100644 index 00000000..96c6d6c9 --- /dev/null +++ b/package/restclient-cpp/restclient-cpp.hash @@ -0,0 +1,3 @@ +# Computed locally +sha256 d62ba618f9a938652fd53b483289e8662a99451839e59058c8beb286dfbc65ec restclient-cpp-0.5.2.tar.gz +sha256 1c2f79e825a39eb61d8919044776627f4d079ff38975410a3bde340154fc94a4 LICENSE diff --git a/package/restclient-cpp/restclient-cpp.mk b/package/restclient-cpp/restclient-cpp.mk new file mode 100644 index 00000000..1ba9ed81 --- /dev/null +++ b/package/restclient-cpp/restclient-cpp.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# restclient-cpp +# +################################################################################ + +RESTCLIENT_CPP_VERSION = 0.5.2 +RESTCLIENT_CPP_SITE = $(call github,mrtazz,restclient-cpp,$(RESTCLIENT_CPP_VERSION)) +RESTCLIENT_CPP_LICENSE = MIT +RESTCLIENT_CPP_LICENSE_FILES = LICENSE +RESTCLIENT_CPP_INSTALL_STAGING = YES + +# Source from github, no configure script provided +RESTCLIENT_CPP_AUTORECONF = YES + +RESTCLIENT_CPP_DEPENDENCIES = libcurl + +$(eval $(autotools-package)) diff --git a/package/restorecond/Config.in b/package/restorecond/Config.in new file mode 100644 index 00000000..5e5567b2 --- /dev/null +++ b/package/restorecond/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_RESTORECOND + bool "restorecond" + depends on BR2_USE_MMU # libglib2 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on !BR2_STATIC_LIBS # libselinux + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # libsepol + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_DBUS_GLIB + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBSELINUX + select BR2_PACKAGE_LIBSEPOL + help + restorecond is a daemon that watches for file creation and + then sets the default SELinux file context for that file. + + https://github.com/SELinuxProject/selinux/wiki/Releases + +comment "restorecond needs a toolchain w/ wchar, threads, dynamic library, gcc >= 5" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \ + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_5 diff --git a/package/restorecond/S02restorecond b/package/restorecond/S02restorecond new file mode 100644 index 00000000..796b07a3 --- /dev/null +++ b/package/restorecond/S02restorecond @@ -0,0 +1,54 @@ +#!/bin/sh + +DAEMON=restorecond +PIDFILE=/var/run/$DAEMON.pid + +RESTORECOND_ARGS="" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() +{ + printf 'Starting %s: ' "$DAEMON" + start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/usr/sbin/$DAEMON" \ + -- $RESTORECOND_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() +{ + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p $PIDFILE -R TERM/30/KILL/5 -n $DAEMON + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() +{ + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + restart;; + *) + echo $"Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/restorecond/restorecond.hash b/package/restorecond/restorecond.hash new file mode 100644 index 00000000..5b86afdc --- /dev/null +++ b/package/restorecond/restorecond.hash @@ -0,0 +1,5 @@ +# https://github.com/SELinuxProject/selinux/wiki/Releases +sha256 8f8aa2c6c66bcc6d91c6edd63913e5d738de6428928f27d1019d89c31cf347b1 restorecond-3.6.tar.gz + +# Hash for license file +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 LICENSE diff --git a/package/restorecond/restorecond.mk b/package/restorecond/restorecond.mk new file mode 100644 index 00000000..93495d8b --- /dev/null +++ b/package/restorecond/restorecond.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# restorecond +# +################################################################################ + +RESTORECOND_VERSION = 3.6 +RESTORECOND_SITE = https://github.com/SELinuxProject/selinux/releases/download/$(RESTORECOND_VERSION) +RESTORECOND_LICENSE = GPL-2.0 +RESTORECOND_LICENSE_FILES = LICENSE + +RESTORECOND_DEPENDENCIES = libglib2 libsepol libselinux dbus-glib + +RESTORECOND_MAKE_OPTS += \ + $(TARGET_CONFIGURE_OPTS) \ + ARCH="$(BR2_ARCH)" + +# We need to pass DESTDIR at build time because it's used by +# restorecond build system to find headers and libraries. +define RESTORECOND_BUILD_CMDS + $(MAKE) -C $(@D) $(RESTORECOND_MAKE_OPTS) DESTDIR=$(STAGING_DIR) all +endef + +define RESTORECOND_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/restorecond/S02restorecond \ + $(TARGET_DIR)/etc/init.d/S02restorecond +endef + +define RESTORECOND_INSTALL_INIT_SYSTEMD + $(INSTALL) -m 0644 -D $(@D)/restorecond.service \ + $(TARGET_DIR)/usr/lib/systemd/system/restorecond.service + + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/restorecond.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/restorecond.service + + $(INSTALL) -m 0600 -D $(@D)/org.selinux.Restorecond.service \ + $(TARGET_DIR)/etc/systemd/system/org.selinux.Restorecond.service +endef + +define RESTORECOND_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/restorecond.conf $(TARGET_DIR)/etc/selinux/restorecond.conf + $(INSTALL) -m 0644 -D $(@D)/restorecond_user.conf $(TARGET_DIR)/etc/selinux/restorecond_user.conf + $(INSTALL) -m 0755 -D $(@D)/restorecond $(TARGET_DIR)/usr/sbin/restorecond +endef + +$(eval $(generic-package)) diff --git a/package/rhash/0001-Fix-243-Incorrect-assigment-in-the-configure-script.patch b/package/rhash/0001-Fix-243-Incorrect-assigment-in-the-configure-script.patch new file mode 100644 index 00000000..4a9a81db --- /dev/null +++ b/package/rhash/0001-Fix-243-Incorrect-assigment-in-the-configure-script.patch @@ -0,0 +1,24 @@ +From c804982d1b24c6533118b3068d2cfdca685076f3 Mon Sep 17 00:00:00 2001 +From: Aleksey Kravchenko +Date: Mon, 7 Aug 2023 01:00:37 +0300 +Subject: [PATCH] Fix #243: Incorrect assigment in the configure script + +Upstream: https://github.com/rhash/RHash/commit/c804982d1b24c6533118b3068d2cfdca685076f3 +Signed-off-by: Fabrice Fontaine +--- + configure | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure b/configure +index 39ef8c1..63cbd8d 100755 +--- a/configure ++++ b/configure +@@ -877,7 +877,7 @@ if test "$OPT_STATIC" = "no"; then + RHASH_TEST_OPTIONS=--shared + test "$INSTALL_LIB_SHARED" = "auto" && INSTALL_LIB_SHARED=yes + test "$INSTALL_LIB_STATIC" = "yes" && RHASH_BUILD_TARGETS="$RHASH_BUILD_TARGETS \$(LIBRHASH_STATIC)" +- RHASH_LDFLAGS=$RHASH_LDFLAGS $GETTEXT_LDFLAGS ++ RHASH_LDFLAGS=$(join_params $RHASH_LDFLAGS $GETTEXT_LDFLAGS) + else + LIBRHASH_TYPE=static + LIBRHASH_PATH="\$(LIBRHASH_STATIC)" diff --git a/package/rhash/Config.in b/package/rhash/Config.in new file mode 100644 index 00000000..35ccb383 --- /dev/null +++ b/package/rhash/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_RHASH + bool "rhash" + select BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 if BR2_PACKAGE_LIBOPENSSL + help + LibRHash is a professional, portable, thread-safe C library + for computing a wide variety of hash sums, such as CRC32, + MD4, MD5, SHA1, SHA256, SHA512, SHA3, AICH, ED2K, Tiger, + DC++ TTH, BitTorrent BTIH, GOST R 34.11-94, RIPEMD-160, + HAS-160, EDON-R, Whirlpool and Snefru. + + https://github.com/rhash/RHash + +if BR2_PACKAGE_RHASH + +config BR2_PACKAGE_RHASH_BIN + bool "rhash binary" + depends on !BR2_STATIC_LIBS + help + Install rhash console utility + +comment "rhash binary needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +endif diff --git a/package/rhash/rhash.hash b/package/rhash/rhash.hash new file mode 100644 index 00000000..4e03de87 --- /dev/null +++ b/package/rhash/rhash.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/rhash/files/rhash/1.4.4/ +sha1 feaee551aec9cc9a303a45aa8c864f97ece9ed2d rhash-1.4.4-src.tar.gz +# Locally calculated +sha256 8e7d1a8ccac0143c8fe9b68ebac67d485df119ea17a613f4038cda52f84ef52a rhash-1.4.4-src.tar.gz +sha256 953e55838353335148c90b5a38a4894292680b1d4c37228ffddddbf18ce54bf5 COPYING diff --git a/package/rhash/rhash.mk b/package/rhash/rhash.mk new file mode 100644 index 00000000..3cc9d427 --- /dev/null +++ b/package/rhash/rhash.mk @@ -0,0 +1,73 @@ +################################################################################ +# +# rhash +# +################################################################################ + +RHASH_VERSION = 1.4.4 +RHASH_SOURCE = rhash-$(RHASH_VERSION)-src.tar.gz +RHASH_SITE = https://sourceforge.net/projects/rhash/files/rhash/$(RHASH_VERSION) +RHASH_LICENSE = 0BSD +RHASH_LICENSE_FILES = COPYING +RHASH_CPE_ID_VALID = YES +RHASH_INSTALL_STAGING = YES +RHASH_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +RHASH_CONF_OPTS += --enable-gettext +else +RHASH_CONF_OPTS += --disable-gettext +endif + +ifeq ($(BR2_PACKAGE_OPENSSL)x$(BR2_STATIC_LIBS),yx) +RHASH_CONF_OPTS += --enable-openssl +RHASH_DEPENDENCIES += openssl +else +RHASH_CONF_OPTS += --disable-openssl +endif + +define RHASH_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure \ + --prefix=/usr \ + --cc=$(TARGET_CC) \ + --target=$(GNU_TARGET_NAME) \ + $(RHASH_CONF_OPTS) \ + ) +endef + +ifeq ($(BR2_SHARED_LIBS),y) +RHASH_BUILD_TARGETS = lib-shared build +RHASH_INSTALL_TARGETS = install-lib-shared install-so-link +else ifeq ($(BR2_STATIC_LIBS),y) +RHASH_BUILD_TARGETS = lib-static +RHASH_INSTALL_TARGETS = install-lib-static +else +RHASH_BUILD_TARGETS = lib-static lib-shared build +RHASH_INSTALL_TARGETS = install-lib-static install-lib-shared install-so-link +endif + +define RHASH_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(RHASH_MAKE_OPTS) $(RHASH_BUILD_TARGETS) +endef + +define RHASH_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/librhash \ + DESTDIR="$(STAGING_DIR)" $(RHASH_MAKE_OPTS) $(RHASH_INSTALL_TARGETS) \ + install-lib-headers +endef + +ifeq ($(BR2_PACKAGE_RHASH_BIN),y) +define RHASH_INSTALL_TARGET_RHASH_BIN + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + DESTDIR="$(TARGET_DIR)" $(RHASH_MAKE_OPTS) build-install-binary +endef +endif + +define RHASH_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/librhash \ + DESTDIR="$(TARGET_DIR)" $(RHASH_MAKE_OPTS) $(RHASH_INSTALL_TARGETS) + $(RHASH_INSTALL_TARGET_RHASH_BIN) +endef + +$(eval $(generic-package)) diff --git a/package/riemann-c-client/Config.in b/package/riemann-c-client/Config.in new file mode 100644 index 00000000..0985972a --- /dev/null +++ b/package/riemann-c-client/Config.in @@ -0,0 +1,19 @@ +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_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS # protobuf-c + depends on BR2_HOST_GCC_AT_LEAST_7 # 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, host gcc >= 7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_HOST_GCC_AT_LEAST_7 + depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS diff --git a/package/riemann-c-client/riemann-c-client.hash b/package/riemann-c-client/riemann-c-client.hash new file mode 100644 index 00000000..43d4cd45 --- /dev/null +++ b/package/riemann-c-client/riemann-c-client.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 568416d854d1c1e5eac743c9f56db6fa0d6a8144daa74a799d0556bb6b50e679 riemann-c-client-1.10.5.tar.gz +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE diff --git a/package/riemann-c-client/riemann-c-client.mk b/package/riemann-c-client/riemann-c-client.mk new file mode 100644 index 00000000..f942d560 --- /dev/null +++ b/package/riemann-c-client/riemann-c-client.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# riemann-c-client +# +################################################################################ + +RIEMANN_C_CLIENT_VERSION = 1.10.5 +RIEMANN_C_CLIENT_SITE = \ + $(call github,algernon,riemann-c-client,riemann-c-client-$(RIEMANN_C_CLIENT_VERSION)) +RIEMANN_C_CLIENT_LICENSE = LGPL-3.0+ +RIEMANN_C_CLIENT_LICENSE_FILES = LICENSE +RIEMANN_C_CLIENT_INSTALL_STAGING = YES +RIEMANN_C_CLIENT_MAKE = $(MAKE1) +# From git +RIEMANN_C_CLIENT_AUTORECONF = YES +RIEMANN_C_CLIENT_DEPENDENCIES = \ + host-pkgconf protobuf-c \ + $(if $(BR2_PACKAGE_GNUTLS),gnutls) \ + $(if $(BR2_PACKAGE_JSON_C),json-c) + +$(eval $(autotools-package)) diff --git a/package/rings/Config.in b/package/rings/Config.in new file mode 100644 index 00000000..d1f1efe5 --- /dev/null +++ b/package/rings/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_RINGS + bool "rings" + help + Provides a way to create new Lua states from within Lua. + + http://github.com/keplerproject/rings diff --git a/package/rings/rings.hash b/package/rings/rings.hash new file mode 100644 index 00000000..f1377d5a --- /dev/null +++ b/package/rings/rings.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 627ac55d4a420fab766e6870fcd82cb39da12fb4ec8efddc7220b188a4ad4bc3 rings-1.3.0-1.src.rock +sha256 f582a0c43737391070827ef273df0145b594b095ad2f49595701368b729e024f rings-v_1_3_0/doc/us/license.html diff --git a/package/rings/rings.mk b/package/rings/rings.mk new file mode 100644 index 00000000..92001bbf --- /dev/null +++ b/package/rings/rings.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# rings +# +################################################################################ + +RINGS_VERSION_MAJOR = 1.3.0 +RINGS_VERSION = $(RINGS_VERSION_MAJOR)-1 +RINGS_SUBDIR = rings-v_$(subst .,_,$(RINGS_VERSION_MAJOR)) +RINGS_LICENSE = MIT +RINGS_LICENSE_FILES = $(RINGS_SUBDIR)/doc/us/license.html + +$(eval $(luarocks-package)) diff --git a/package/ripgrep/0001-puts-jemalloc-allocator-behind-a-cargo-feature-flag.patch b/package/ripgrep/0001-puts-jemalloc-allocator-behind-a-cargo-feature-flag.patch new file mode 100644 index 00000000..e665a657 --- /dev/null +++ b/package/ripgrep/0001-puts-jemalloc-allocator-behind-a-cargo-feature-flag.patch @@ -0,0 +1,133 @@ +From 77f850969433b14769ade4281899373f3ebabf86 Mon Sep 17 00:00:00 2001 +From: Jonathan Stites +Date: Wed, 6 May 2020 12:55:35 +0000 +Subject: [PATCH] puts jemalloc allocator behind a cargo feature flag + +Retrieved from: https://github.com/BurntSushi/ripgrep/pull/1569 + +Moves jemalloc behind a feature for musl builds, where it is not +supported by the upstream project, so ripgrep will fail to build. + +Signed-off-by: Sam Voss +[Antoine: update for 14.1.0] +Signed-off-by: Antoine Coutant +--- + .github/workflows/ci.yml | 6 ++++++ + .github/workflows/release.yml | 8 +++++++- + Cargo.toml | 8 +++++++- + README.md | 9 +++++++++ + crates/core/main.rs | 8 ++++++-- + 5 files changed, 35 insertions(+), 4 deletions(-) + +diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml +index d21b85a..0c9ecb9 100644 +--- a/.github/workflows/ci.yml ++++ b/.github/workflows/ci.yml +@@ -172,6 +172,12 @@ jobs: + if: matrix.target != '' + run: ${{ env.CARGO }} test --verbose --workspace ${{ env.TARGET_FLAGS }} + ++ - name: Run tests with jemalloc (Musl) ++ # We only use the jemalloc allocator when building with musl. ++ # The system allocator is good enough for other platforms. ++ if: matrix.os == 'nightly-musl' ++ run: ${{ env.CARGO }} test --verbose --all --features jemalloc ${{ env.TARGET_FLAGS }} ++ + - name: Test zsh shell completions (Unix, sans cross) + # We could test this when using Cross, but we'd have to execute the + # 'rg' binary (done in test-complete) with qemu, which is a pain and +diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml +index f6ea3d9..ac18129 100644 +--- a/.github/workflows/release.yml ++++ b/.github/workflows/release.yml +@@ -171,7 +171,13 @@ jobs: + echo "target flag is: ${{ env.TARGET_FLAGS }}" + echo "target dir is: ${{ env.TARGET_DIR }}" + +- - name: Build release binary ++ - name: Build release binary (linux) ++ if: matrix.build == 'linux' ++ # Use jemalloc allocator for much better performance over the musl default allocator ++ run: ${{ env.CARGO }} build --verbose --release --features "pcre2 jemalloc" ${{ env.TARGET_FLAGS }} ++ ++ - name: Build release binary (non-linux) ++ if: matrix.build != 'linux' + shell: bash + run: | + ${{ env.CARGO }} build --verbose --release --features pcre2 ${{ env.TARGET_FLAGS }} +diff --git a/Cargo.toml b/Cargo.toml +index da350bc..1a0a48f 100644 +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -59,8 +59,9 @@ serde_json = "1.0.23" + termcolor = "1.1.0" + textwrap = { version = "0.16.0", default-features = false } + +-[target.'cfg(all(target_env = "musl", target_pointer_width = "64"))'.dependencies.jemallocator] ++[dependencies.jemallocator] + version = "0.5.0" ++optional = true + + [dev-dependencies] + serde = "1.0.77" +@@ -70,6 +71,11 @@ walkdir = "2" + [features] + simd-accel = ["grep/simd-accel"] + pcre2 = ["grep/pcre2"] ++# The jemalloc allocator is used for improved ++# performance on x86 musl builds. ++# Cargo does not yet support platform-specific features ++# https://github.com/rust-lang/cargo/issues/1197 ++jemalloc = ["jemallocator"] + + [profile.release] + debug = 1 +diff --git a/README.md b/README.md +index 0821fab..fdb9fb5 100644 +--- a/README.md ++++ b/README.md +@@ -478,6 +478,15 @@ build a static executable with MUSL and with PCRE2, then you will need to have + `musl-gcc` installed, which might be in a separate package from the actual + MUSL library, depending on your Linux distribution. + ++When building with the MUSL target on Linux, it is recommended to use the ++jemalloc allocator for performance: ++ ++``` ++$ rustup target add x86_64-unknown-linux-musl ++$ cargo build --release --target x86_64-unknown-linux-musl --features jemalloc ++``` ++ ++ + + ### Running tests + +diff --git a/crates/core/main.rs b/crates/core/main.rs +index 64f35ce..9aa6663 100644 +--- a/crates/core/main.rs ++++ b/crates/core/main.rs +@@ -27,7 +27,7 @@ mod search; + // have the fastest version of everything. Its goal is to be small and amenable + // to static compilation.) Even though ripgrep isn't particularly allocation + // heavy, musl's allocator appears to slow down ripgrep quite a bit. Therefore, +-// when building with musl, we use jemalloc. ++// we expose a feature for using jemalloc when building with musl. + // + // We don't unconditionally use jemalloc because it can be nice to use the + // system's default allocator by default. Moreover, jemalloc seems to increase +@@ -35,7 +35,11 @@ mod search; + // + // Moreover, we only do this on 64-bit systems since jemalloc doesn't support + // i686. +-#[cfg(all(target_env = "musl", target_pointer_width = "64"))] ++#[cfg(all( ++ target_env = "musl", ++ target_pointer_width = "64", ++ feature = "jemalloc" ++))] + #[global_allocator] + static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc; + +-- +2.25.1 + diff --git a/package/ripgrep/Config.in b/package/ripgrep/Config.in new file mode 100644 index 00000000..0ea2902b --- /dev/null +++ b/package/ripgrep/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_RIPGREP + bool "ripgrep" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_RUSTC + help + ripgrep is a line-oriented search tool that + recursively searches your current directory + for a regex pattern while respecting your gitignore + rules. + + ripgrep is similar to other popular search tools like + The Silver Searcher, ack and grep. + + https://github.com/BurntSushi/ripgrep diff --git a/package/ripgrep/ripgrep.hash b/package/ripgrep/ripgrep.hash new file mode 100644 index 00000000..39165770 --- /dev/null +++ b/package/ripgrep/ripgrep.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 7e1e66e2e9a7290a0a9445a82886a678ee8b2583b296fb851e1472c7403a681a ripgrep-14.1.0-cargo2.tar.gz +sha256 0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f LICENSE-MIT diff --git a/package/ripgrep/ripgrep.mk b/package/ripgrep/ripgrep.mk new file mode 100644 index 00000000..288c20ee --- /dev/null +++ b/package/ripgrep/ripgrep.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# ripgrep +# +################################################################################ + +RIPGREP_VERSION = 14.1.0 +RIPGREP_SITE = $(call github,burntsushi,ripgrep,$(RIPGREP_VERSION)) +RIPGREP_LICENSE = MIT +RIPGREP_LICENSE_FILES = LICENSE-MIT +RIPGREP_CPE_ID_VALID = YES + +# CVE only impacts ripgrep on Windows +RIPGREP_IGNORE_CVES += CVE-2021-3013 + +$(eval $(cargo-package)) diff --git a/package/riscv-isa-sim/0001-riscv-disable-precompiled-headers.patch b/package/riscv-isa-sim/0001-riscv-disable-precompiled-headers.patch new file mode 100644 index 00000000..9ce32e3b --- /dev/null +++ b/package/riscv-isa-sim/0001-riscv-disable-precompiled-headers.patch @@ -0,0 +1,34 @@ +From 12e0257495de41202827fabd5935f2e5a92ae8a6 Mon Sep 17 00:00:00 2001 +From: Julien Olivain +Date: Sun, 9 Jan 2022 13:38:48 +0100 +Subject: [PATCH] riscv: disable precompiled headers + +While precompiling header, some toolchains fail with the message: + + /path/to/toolchain/bin/ld: /path/to/sysroot/usr/lib/Scrt1.o: in function `_start': + (.text+0x54): undefined reference to `main' + +The patch totally disable precompiled headers. + +Signed-off-by: Julien Olivain +--- + riscv/riscv.mk.in | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/riscv/riscv.mk.in b/riscv/riscv.mk.in +index 469c48dc..c61cadaf 100644 +--- a/riscv/riscv.mk.in ++++ b/riscv/riscv.mk.in +@@ -45,9 +45,6 @@ riscv_install_hdrs = \ + triggers.h \ + vector_unit.h \ + +-riscv_precompiled_hdrs = \ +- insn_template.h \ +- + riscv_srcs = \ + processor.cc \ + execute.cc \ +-- +2.45.2 + diff --git a/package/riscv-isa-sim/Config.in.host b/package/riscv-isa-sim/Config.in.host new file mode 100644 index 00000000..4ccf6e95 --- /dev/null +++ b/package/riscv-isa-sim/Config.in.host @@ -0,0 +1,13 @@ +config BR2_PACKAGE_HOST_RISCV_ISA_SIM + bool "host riscv-isa-sim" + depends on BR2_HOST_GCC_AT_LEAST_4_9 # C++11 + help + Spike, the RISC-V ISA Simulator, implements a functional + model of one or more RISC-V harts. + + The host package provides an alternative solution to qemu. + + https://github.com/riscv-software-src/riscv-isa-sim + +comment "host riscv-isa-sim needs host gcc >= 4.9" + depends on !BR2_HOST_GCC_AT_LEAST_4_9 diff --git a/package/riscv-isa-sim/riscv-isa-sim.hash b/package/riscv-isa-sim/riscv-isa-sim.hash new file mode 100644 index 00000000..a935cdcf --- /dev/null +++ b/package/riscv-isa-sim/riscv-isa-sim.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 fb4420fbc8fe88799e5cd3195920afab99a18bc919e6c675a5e55c7c90079cb4 riscv-isa-sim-00dfa28cd71326a9b553052bf0160cb76f0e7e07.tar.gz +sha256 c65e436d18972c9c4bd192494fe4870bd2e158179474975b80a3559f27631632 LICENSE diff --git a/package/riscv-isa-sim/riscv-isa-sim.mk b/package/riscv-isa-sim/riscv-isa-sim.mk new file mode 100644 index 00000000..a31192da --- /dev/null +++ b/package/riscv-isa-sim/riscv-isa-sim.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# riscv-isa-sim +# +################################################################################ + +RISCV_ISA_SIM_VERSION = 00dfa28cd71326a9b553052bf0160cb76f0e7e07 +RISCV_ISA_SIM_SITE = $(call github,riscv-software-src,riscv-isa-sim,$(RISCV_ISA_SIM_VERSION)) +RISCV_ISA_SIM_LICENSE = BSD-3-Clause +RISCV_ISA_SIM_LICENSE_FILES = LICENSE +HOST_RISCV_ISA_SIM_DEPENDENCIES = host-boost host-dtc +HOST_RISCV_ISA_SIM_CONF_OPTS = --with-boost=$(HOST_DIR) + +$(eval $(host-autotools-package)) diff --git a/package/riscv64-elf-toolchain/riscv64-elf-toolchain.hash b/package/riscv64-elf-toolchain/riscv64-elf-toolchain.hash new file mode 100644 index 00000000..9f40da09 --- /dev/null +++ b/package/riscv64-elf-toolchain/riscv64-elf-toolchain.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 de2bb188300dc38d74103516ce5cfd1060dfd105e8a408e9e3991512cf27285e riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-centos6.tar.gz diff --git a/package/riscv64-elf-toolchain/riscv64-elf-toolchain.mk b/package/riscv64-elf-toolchain/riscv64-elf-toolchain.mk new file mode 100644 index 00000000..9b08ee0f --- /dev/null +++ b/package/riscv64-elf-toolchain/riscv64-elf-toolchain.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# riscv64-elf-toolchain +# +################################################################################ + +RISCV64_ELF_TOOLCHAIN_VERSION = 2020.12.8 +RISCV64_ELF_TOOLCHAIN_SITE = https://static.dev.sifive.com/dev-tools/freedom-tools/v2020.12 +RISCV64_ELF_TOOLCHAIN_SOURCE = riscv64-unknown-elf-toolchain-10.2.0-$(RISCV64_ELF_TOOLCHAIN_VERSION)-x86_64-linux-centos6.tar.gz + +HOST_RISCV64_ELF_TOOLCHAIN_INSTALL_DIR = $(HOST_DIR)/opt/riscv64-elf + +define HOST_RISCV64_ELF_TOOLCHAIN_INSTALL_CMDS + rm -rf $(HOST_RISCV64_ELF_TOOLCHAIN_INSTALL_DIR) + mkdir -p $(HOST_RISCV64_ELF_TOOLCHAIN_INSTALL_DIR) + cp -rf $(@D)/* $(HOST_RISCV64_ELF_TOOLCHAIN_INSTALL_DIR)/ + + mkdir -p $(HOST_DIR)/bin + cd $(HOST_DIR)/bin && \ + for i in ../opt/riscv64-elf/bin/*; do \ + ln -sf $$i; \ + done +endef + +$(eval $(host-generic-package)) diff --git a/package/rlwrap/Config.in b/package/rlwrap/Config.in new file mode 100644 index 00000000..4e18dfde --- /dev/null +++ b/package/rlwrap/Config.in @@ -0,0 +1,43 @@ +config BR2_PACKAGE_RLWRAP + bool "rlwrap" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_READLINE + help + rlwrap is a 'readline wrapper', a small utility that uses the + GNU Readline library to allow the editing of keyboard input + for any command. + + https://github.com/hanslub42/rlwrap + +if BR2_PACKAGE_RLWRAP + +config BR2_PACKAGE_RLWRAP_SPY_ON_READLINE + bool "spy on readline" + default y + help + If we want to keep the display tidy when re-sizing the + terminal window or printing multi-line prompts, we have to + know whether or not readline is in horizontal-scroll-mode + (i.e. wheter long lines are scrolled or wrapped). At present, + this involves a look at a private readline variable - if you + feel guilty about that, disable this option + +config BR2_PACKAGE_RLWRAP_HOMEGROWN_REDISPLAY + bool "homegrown redisplay" + help + Some people report double echoing of user input. Enabling this + option will cure the problem - though the display will then + flicker over slow connections (cf. BUGS) + +config BR2_PACKAGE_RLWRAP_MULTIBYTE_AWARE + bool "multibyte awareness" + default y + depends on BR2_USE_WCHAR + help + Prevent rlwrap from seeing multibyte characters as multiple + characters + +comment "rlwrap multibyte awareness needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +endif diff --git a/package/rlwrap/rlwrap.hash b/package/rlwrap/rlwrap.hash new file mode 100644 index 00000000..b7005e86 --- /dev/null +++ b/package/rlwrap/rlwrap.hash @@ -0,0 +1,6 @@ +# from https://github.com/hanslub42/rlwrap/releases/tag/0.46.1 +sha256 2711986a1248f6ac59e2aecf5586205835970040d300a42b4bf8014397e73e37 rlwrap-0.46.1.tar.gz + +# license files, locally calculated +sha256 656d25fab58016ac6ac11bb126709e4f860ea063d11795232eb55987172f78ff AUTHORS +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/rlwrap/rlwrap.mk b/package/rlwrap/rlwrap.mk new file mode 100644 index 00000000..e3973e84 --- /dev/null +++ b/package/rlwrap/rlwrap.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# rlwrap +# +################################################################################ + +RLWRAP_VERSION = 0.46.1 +RLWRAP_SITE = https://github.com/hanslub42/rlwrap/releases/download/$(RLWRAP_VERSION) +RLWRAP_LICENSE = GPL-2.0+ +RLWRAP_LICENSE_FILES = AUTHORS COPYING + +RLWRAP_DEPENDENCIES = readline + +ifeq ($(BR2_PACKAGE_RLWRAP_SPY_ON_READLINE),y) +RLWRAP_CONF_OPTS += --enable-spy-on-readline +else +RLWRAP_CONF_OPTS += --disable-spy-on-readline +endif + +ifeq ($(BR2_PACKAGE_RLWRAP_HOMEGROWN_REDISPLAY),y) +RLWRAP_CONF_OPTS += --enable-homegrown-redisplay +else +RLWRAP_CONF_OPTS += --disable-homegrown-redisplay +endif + +ifeq ($(BR2_PACKAGE_RLWRAP_MULTIBYTE_AWARE),y) +RLWRAP_CONF_OPTS += --enable-multibyte-aware +else +RLWRAP_CONF_OPTS += --disable-multibyte-aware +endif + +define RLWRAP_REMOVE_FILTERS + $(RM) -rf $(TARGET_DIR)/usr/share/rlwrap/filters +endef +RLWRAP_POST_INSTALL_TARGET_HOOKS += RLWRAP_REMOVE_FILTERS + +$(eval $(autotools-package)) diff --git a/package/rng-tools/Config.in b/package/rng-tools/Config.in new file mode 100644 index 00000000..7f08fa25 --- /dev/null +++ b/package/rng-tools/Config.in @@ -0,0 +1,57 @@ +config BR2_PACKAGE_RNG_TOOLS + bool "rng-tools" + # pthread_setaffinity_np + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_USE_MMU # libcap + select BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL + select BR2_PACKAGE_LIBCAP + select BR2_PACKAGE_OPENSSL + help + Daemon to use hardware random number generators. + + https://github.com/nhorman/rng-tools + +if BR2_PACKAGE_RNG_TOOLS + +config BR2_PACKAGE_RNG_TOOLS_JITTERENTROPY_LIBRARY + bool "Jitterentropy Library support" + default y + select BR2_PACKAGE_JITTERENTROPY_LIBRARY + help + Enable Jitterentropy Library support. + + The Jitter RNG provides a noise source using the CPU + execution timing jitter. It does not depend on any + system resource other than a high-resolution time stamp. + +config BR2_PACKAGE_RNG_TOOLS_NISTBEACON + bool "NIST Entropy Beacon support" + select BR2_PACKAGE_JANSSON + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBXML2 + help + Enable NIST Entropy Beacon support. + + Entropy gathered from the NIST network entropy beacon. Note + that this entropy source is disabled by default as it should + never be used for cryptographic purposes, or any use case in + which random data should be known only by a single entity. + +config BR2_PACKAGE_RNG_TOOLS_QRYPT + bool "Qrypt Entropy Beacon support" + select BR2_PACKAGE_JANSSON + select BR2_PACKAGE_LIBCURL + help + Enable Qrypt NIST-Beacon like entropy support. + + Entropy gathered from Qrypt server based entropy beacons. Like + NIST, it should likely not be used directly in cryptographic + operation, as the entropy may be intercepted over a network, + but can provide copius amounts of entropy for non-crypto + purposes. + +endif + +comment "rng-tools needs a toolchain w/ NPTL" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/package/rng-tools/S21rngd b/package/rng-tools/S21rngd new file mode 100644 index 00000000..b38be5a5 --- /dev/null +++ b/package/rng-tools/S21rngd @@ -0,0 +1,48 @@ +#!/bin/sh + +NAME="rngd" +DAEMON="/usr/sbin/${NAME}" +DAEMON_ARGS="" +CFG_FILE="/etc/default/${NAME}" +PID_FILE="/var/run/${NAME}.pid" + +# Read configuration variable file if it is present +[ -r "${CFG_FILE}" ] && . "${CFG_FILE}" + +start() +{ + printf "Starting ${NAME}: " + start-stop-daemon -S -q -x "${DAEMON}" -- ${DAEMON_ARGS} + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() +{ + printf "Stopping ${NAME}: " + # This daemon does not exit properly with the default TERM signal unless + # it's forced to work by something reading /dev/random. Killing it and + # removing its PID file is more straightforward. + if start-stop-daemon -K -q -s KILL -p "${PID_FILE}" -n "${NAME}"; then + rm -f "${PID_FILE}" + echo "OK" + else + echo "FAIL" + fi +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" >&2 + exit 1 + ;; +esac diff --git a/package/rng-tools/rng-tools.hash b/package/rng-tools/rng-tools.hash new file mode 100644 index 00000000..80d43edc --- /dev/null +++ b/package/rng-tools/rng-tools.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 4aa50994232da74499b60b3ebf79118e30a1943be375b7d931dcf18df5442fd3 rng-tools-6.17.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/rng-tools/rng-tools.mk b/package/rng-tools/rng-tools.mk new file mode 100644 index 00000000..d1f41fd4 --- /dev/null +++ b/package/rng-tools/rng-tools.mk @@ -0,0 +1,65 @@ +################################################################################ +# +# rng-tools +# +################################################################################ + +RNG_TOOLS_VERSION = 6.17 +RNG_TOOLS_SITE = $(call github,nhorman,rng-tools,v$(RNG_TOOLS_VERSION)) +RNG_TOOLS_LICENSE = GPL-2.0 +RNG_TOOLS_LICENSE_FILES = COPYING +RNG_TOOLS_CPE_ID_VALID = YES +RNG_TOOLS_SELINUX_MODULES = rngd + +RNG_TOOLS_DEPENDENCIES = host-pkgconf libcap openssl +# From git +RNG_TOOLS_AUTORECONF = YES + +RNG_TOOLS_CONF_OPTS = --without-pkcs11 + +# Work around for uClibc or musl toolchains which lack argp_*() +# functions. +ifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y) +RNG_TOOLS_CONF_ENV += LIBS="-largp $(TARGET_NLS_LIBS)" +RNG_TOOLS_DEPENDENCIES += argp-standalone $(TARGET_NLS_DEPENDENCIES) +endif + +ifeq ($(BR2_PACKAGE_LIBRTLSDR),y) +RNG_TOOLS_DEPENDENCIES += librtlsdr +RNG_TOOLS_CONF_OPTS += --with-rtlsdr +else +RNG_TOOLS_CONF_OPTS += --without-rtlsdr +endif + +ifeq ($(BR2_PACKAGE_RNG_TOOLS_JITTERENTROPY_LIBRARY),y) +RNG_TOOLS_DEPENDENCIES += jitterentropy-library +RNG_TOOLS_CONF_OPTS += --enable-jitterentropy +else +RNG_TOOLS_CONF_OPTS += --disable-jitterentropy +endif + +ifeq ($(BR2_PACKAGE_RNG_TOOLS_NISTBEACON),y) +RNG_TOOLS_DEPENDENCIES += jansson libcurl libxml2 +RNG_TOOLS_CONF_OPTS += --with-nistbeacon +else +RNG_TOOLS_CONF_OPTS += --without-nistbeacon +endif + +ifeq ($(BR2_PACKAGE_RNG_TOOLS_QRYPT),y) +RNG_TOOLS_DEPENDENCIES += jansson libcurl +RNG_TOOLS_CONF_OPTS += --with-qrypt +else +RNG_TOOLS_CONF_OPTS += --without-qrypt +endif + +define RNG_TOOLS_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/rng-tools/S21rngd \ + $(TARGET_DIR)/etc/init.d/S21rngd +endef + +define RNG_TOOLS_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/rng-tools/rngd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/rngd.service +endef + +$(eval $(autotools-package)) diff --git a/package/rng-tools/rngd.service b/package/rng-tools/rngd.service new file mode 100644 index 00000000..11386d1e --- /dev/null +++ b/package/rng-tools/rngd.service @@ -0,0 +1,9 @@ +[Unit] +Description=Hardware RNG Entropy Gatherer Daemon + +[Service] +ExecStart=/usr/sbin/rngd -f $DAEMON_ARGS +EnvironmentFile=-/etc/default/rngd + +[Install] +WantedBy=multi-user.target diff --git a/package/rockchip-mali/Config.in b/package/rockchip-mali/Config.in new file mode 100644 index 00000000..5a23954a --- /dev/null +++ b/package/rockchip-mali/Config.in @@ -0,0 +1,38 @@ +config BR2_PACKAGE_ROCKCHIP_MALI + bool "rockchip-mali" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_ARM_EABIHF || BR2_aarch64 + # lidbrm. This would normally need a Config.in comment, but + # these blobs are linked against glibc, so we are sure to have + # thread support, so don't bother. + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_HAS_LIBGLES + select BR2_PACKAGE_HAS_LIBGBM + select BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_MALI_DRIVER if BR2_LINUX_KERNEL + help + Install the binary user-space libraries for the ARM Mali GPU + suitable for Rockchip platforms. This package requires a + kernel with the ARM Mali GPU kernel driver enabled, as found + in the 'mali-driver' package. + +if BR2_PACKAGE_ROCKCHIP_MALI + +config BR2_PACKAGE_PROVIDES_LIBEGL + default "rockchip-mali" + +config BR2_PACKAGE_PROVIDES_LIBGLES + default "rockchip-mali" + +config BR2_PACKAGE_PROVIDES_LIBGBM + default "rockchip-mali" + +endif + +comment "rockchip-mali needs a glibc toolchain w/ C++, threads" + depends on BR2_ARM_EABIHF || BR2_aarch64 + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_USES_GLIBC || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/rockchip-mali/rockchip-mali.hash b/package/rockchip-mali/rockchip-mali.hash new file mode 100644 index 00000000..b19937fa --- /dev/null +++ b/package/rockchip-mali/rockchip-mali.hash @@ -0,0 +1,2 @@ +sha256 1a291bbd75f317ee9205eb356aed617ac269db166ad6528a1734361cc08f8f7c rockchip-mali-721653b5b3b525a4f80d15aa7e2f9df7b7e6042.tar.gz +sha256 a78acc73de9909efb879800d4daa4640c4aaa55cd751238a133954aba15e4285 END_USER_LICENCE_AGREEMENT.txt diff --git a/package/rockchip-mali/rockchip-mali.mk b/package/rockchip-mali/rockchip-mali.mk new file mode 100644 index 00000000..125b1c61 --- /dev/null +++ b/package/rockchip-mali/rockchip-mali.mk @@ -0,0 +1,85 @@ +################################################################################ +# +# rockchip-mali +# +################################################################################ + +# Full sha1 is 721653b5b3b525a4f80d15aa7e2f9df7b7e60427, but we use the +# "mirrors" repository, which names the top-level directory "mirrors-VERSION" +# while the original was the "libmali" repository which named the top-level +# directory "libmali-VERSION". Hence the content changes, and thus the hash +# changes. +# To avoid conflict with the old tarball on s.b.o. used by older versions of +# Buildroot, we can't use the same filename for the generated archive, so we +# drop the last char in the commit hash. +ROCKCHIP_MALI_VERSION = 721653b5b3b525a4f80d15aa7e2f9df7b7e6042 +ROCKCHIP_MALI_SITE = $(call github,JeffyCN,mirrors,$(ROCKCHIP_MALI_VERSION)) +ROCKCHIP_MALI_LICENSE = Proprietary +ROCKCHIP_MALI_LICENSE_FILES = END_USER_LICENCE_AGREEMENT.txt +ROCKCHIP_MALI_INSTALL_STAGING = YES +ROCKCHIP_MALI_DEPENDENCIES = host-patchelf libdrm +ROCKCHIP_MALI_PROVIDES = libegl libgles libgbm + +ROCKCHIP_MALI_LIB = libmali-bifrost-g31-rxp0$(ROCKCHIP_MALI_SUFFIX).so +ROCKCHIP_MALI_PKGCONFIG_FILES = egl gbm glesv2 mali +ROCKCHIP_MALI_ARCH_DIR = $(if $(BR2_arm)$(BR2_armeb),arm-linux-gnueabihf,aarch64-linux-gnu) +ROCKCHIP_MALI_HEADERS = EGL FBDEV GLES GLES2 GLES3 KHR gbm.h + +# We need to create: +# - The symlink that matches the library SONAME (libmali.so.1) +# - The .so symlinks needed at compile time by the compiler (*.so) +ROCKCHIP_MALI_LIB_SYMLINKS = \ + libmali.so.1 \ + libMali.so \ + libEGL.so \ + libgbm.so \ + libGLESv1_CM.so \ + libGLESv2.so + +ifeq ($(BR2_PACKAGE_WAYLAND),y) +ROCKCHIP_MALI_SUFFIX = -wayland-gbm +ROCKCHIP_MALI_PKGCONFIG_FILES += wayland-egl +ROCKCHIP_MALI_LIB_SYMLINKS += libwayland-egl.so +ROCKCHIP_MALI_DEPENDENCIES += wayland +else +ROCKCHIP_MALI_SUFFIX = -gbm +endif + +define ROCKCHIP_MALI_INSTALL_CMDS +# Install the library + $(INSTALL) -D -m 0755 \ + $(@D)/lib/$(ROCKCHIP_MALI_ARCH_DIR)/$(ROCKCHIP_MALI_LIB) \ + $(1)/usr/lib/$(ROCKCHIP_MALI_LIB) + +# Ensure it has a proper soname + $(HOST_DIR)/bin/patchelf --set-soname libmali.so.1 \ + $(1)/usr/lib/$(ROCKCHIP_MALI_LIB) + +# Generate and install the .pc files + mkdir -p $(1)/usr/lib/pkgconfig + $(foreach pkgconfig,$(ROCKCHIP_MALI_PKGCONFIG_FILES), \ + sed -e 's%@CMAKE_INSTALL_LIBDIR@%lib%;s%@CMAKE_INSTALL_INCLUDEDIR@%include%' \ + $(@D)/pkgconfig/$(pkgconfig).pc.cmake > \ + $(1)/usr/lib/pkgconfig/$(pkgconfig).pc + ) + +# Install all headers + $(foreach d,$(ROCKCHIP_MALI_HEADERS), \ + cp -dpfr $(@D)/include/$(d) $(1)/usr/include/ + ) + +# Create symlinks + $(foreach symlink,$(ROCKCHIP_MALI_LIB_SYMLINKS), \ + ln -sf $(ROCKCHIP_MALI_LIB) $(1)/usr/lib/$(symlink) + ) +endef + +define ROCKCHIP_MALI_INSTALL_TARGET_CMDS + $(call ROCKCHIP_MALI_INSTALL_CMDS,$(TARGET_DIR)) +endef + +define ROCKCHIP_MALI_INSTALL_STAGING_CMDS + $(call ROCKCHIP_MALI_INSTALL_CMDS,$(STAGING_DIR)) +endef + +$(eval $(generic-package)) diff --git a/package/rockchip-rkbin/Config.in b/package/rockchip-rkbin/Config.in new file mode 100644 index 00000000..6c66acb7 --- /dev/null +++ b/package/rockchip-rkbin/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_ROCKCHIP_RKBIN + bool "rockchip-rkbin" + depends on BR2_arm || BR2_aarch64 + help + This package provides Rockchip SoC binary blobs for U-Boot. + +if BR2_PACKAGE_ROCKCHIP_RKBIN + +config BR2_PACKAGE_ROCKCHIP_RKBIN_TPL_FILENAME + string "Rockchip rkbin tpl file path" + help + Path to the tpl file inside the rkbin repository. The + specified file will be copied and used by U-Boot as tpl. + +config BR2_PACKAGE_ROCKCHIP_RKBIN_BL31_FILENAME + string "Rockchip rkbin bl31 file path" + help + Path to the bl31 file inside the rkbin repository. The + specified file will be copied and used by U-Boot as bl31. + +config BR2_PACKAGE_ROCKCHIP_RKBIN_TEE_FILENAME + string "Rockchip rkbin tee file path" + help + Path to the TEE file inside the rkbin repository. The + specified file will be copied and used by U-Boot as TEE. + +endif # BR2_PACKAGE_ROCKCHIP_RKBIN diff --git a/package/rockchip-rkbin/rockchip-rkbin.hash b/package/rockchip-rkbin/rockchip-rkbin.hash new file mode 100644 index 00000000..3e25ffac --- /dev/null +++ b/package/rockchip-rkbin/rockchip-rkbin.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 7bb548b8c4dcd0f7d6b75c13e20d48eaac77f6218ad74e8a34c7f2097e793205 rockchip-rkbin-b4558da0860ca48bf1a571dd33ccba580b9abe23-git4.tar.gz +sha256 1f2e25ae65f3af774e6f141f84253d6a05d489fb0b88b311220d70471c023c9c LICENSE diff --git a/package/rockchip-rkbin/rockchip-rkbin.mk b/package/rockchip-rkbin/rockchip-rkbin.mk new file mode 100644 index 00000000..49271084 --- /dev/null +++ b/package/rockchip-rkbin/rockchip-rkbin.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# rockchip-rkbin +# +################################################################################ + +ROCKCHIP_RKBIN_VERSION = b4558da0860ca48bf1a571dd33ccba580b9abe23 +ROCKCHIP_RKBIN_SITE = https://github.com/rockchip-linux/rkbin.git +ROCKCHIP_RKBIN_SITE_METHOD = git +ROCKCHIP_RKBIN_LICENSE = PROPRIETARY +ROCKCHIP_RKBIN_LICENSE_FILES = LICENSE + +ROCKCHIP_RKBIN_INSTALL_IMAGES = YES +ROCKCHIP_RKBIN_INSTALL_TARGET = NO + +ROCKCHIP_RKBIN_BL31_FILENAME = $(call qstrip,$(BR2_PACKAGE_ROCKCHIP_RKBIN_BL31_FILENAME)) +ROCKCHIP_RKBIN_TPL_FILENAME = $(call qstrip,$(BR2_PACKAGE_ROCKCHIP_RKBIN_TPL_FILENAME)) +ROCKCHIP_RKBIN_TEE_FILENAME = $(call qstrip,$(BR2_PACKAGE_ROCKCHIP_RKBIN_TEE_FILENAME)) + +define ROCKCHIP_RKBIN_INSTALL_IMAGES_CMDS + $(foreach f, \ + $(ROCKCHIP_RKBIN_BL31_FILENAME) \ + $(ROCKCHIP_RKBIN_TPL_FILENAME) \ + $(ROCKCHIP_RKBIN_TEE_FILENAME) \ + , \ + $(INSTALL) -D -m 0644 -t $(BINARIES_DIR) $(@D)/$(f) + ) +endef + +$(eval $(generic-package)) diff --git a/package/rocksdb/0001-build_tools-build_detect_platform-fix-C-tests.patch b/package/rocksdb/0001-build_tools-build_detect_platform-fix-C-tests.patch new file mode 100644 index 00000000..ced4a3a3 --- /dev/null +++ b/package/rocksdb/0001-build_tools-build_detect_platform-fix-C-tests.patch @@ -0,0 +1,325 @@ +From 23739c6f9694d7fc436967439f170173dbb4c6b4 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 24 Feb 2020 10:22:13 +0100 +Subject: [PATCH] build_tools/build_detect_platform: fix C++ tests + +Replace -o /dev/null by -o test.o when testing for C++ features such as +-faligned-new otherwise tests will fail with some bugged binutils +(https://sourceware.org/bugzilla/show_bug.cgi?id=19526): + +output/host/bin/xtensa-buildroot-linux-uclibc-g++ -faligned-new -x c++ - -o /dev/null < +[Upstream status: https://github.com/facebook/rocksdb/pull/6479] +--- + build_tools/build_detect_platform | 66 +++++++++++++++---------------- + 1 file changed, 33 insertions(+), 33 deletions(-) + +diff --git a/build_tools/build_detect_platform b/build_tools/build_detect_platform +index 2535d8124..64a0ae76c 100755 +--- a/build_tools/build_detect_platform ++++ b/build_tools/build_detect_platform +@@ -172,7 +172,7 @@ case "$TARGET_OS" in + PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread -lrt -ldl" + if test $ROCKSDB_USE_IO_URING; then + # check for liburing +- $CXX $PLATFORM_CXXFLAGS -x c++ - -luring -o /dev/null 2>/dev/null </dev/null < + int main() { + struct io_uring ring; +@@ -245,7 +245,7 @@ if [ "$CROSS_COMPILE" = "true" -o "$FBCODE_BUILD" = "true" ]; then + else + if ! test $ROCKSDB_DISABLE_FALLOCATE; then + # Test whether fallocate is available +- $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null </dev/null < + #include + int main() { +@@ -261,7 +261,7 @@ EOF + if ! test $ROCKSDB_DISABLE_SNAPPY; then + # Test whether Snappy library is installed + # http://code.google.com/p/snappy/ +- $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null </dev/null < + int main() {} + EOF +@@ -276,7 +276,7 @@ EOF + # Test whether gflags library is installed + # http://gflags.github.io/gflags/ + # check if the namespace is gflags +- if $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null << EOF ++ if $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null << EOF + #include + using namespace GFLAGS_NAMESPACE; + int main() {} +@@ -323,7 +323,7 @@ EOF + COMMON_FLAGS="$COMMON_FLAGS -DGFLAGS=1" + PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lgflags" + # check if namespace is gflags +- elif $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null << EOF ++ elif $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null << EOF + #include + using namespace gflags; + int main() {} +@@ -285,7 +285,7 @@ EOF + COMMON_FLAGS="$COMMON_FLAGS -DGFLAGS=1 -DGFLAGS_NAMESPACE=gflags" + PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lgflags" + # check if namespace is google +- elif $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null << EOF ++ elif $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null << EOF + #include + using namespace google; + int main() {} +@@ -299,7 +299,7 @@ EOF + + if ! test $ROCKSDB_DISABLE_ZLIB; then + # Test whether zlib library is installed +- $CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null </dev/null < + int main() {} + EOF +@@ -312,7 +312,7 @@ EOF + + if ! test $ROCKSDB_DISABLE_BZIP; then + # Test whether bzip library is installed +- $CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null </dev/null < + int main() {} + EOF +@@ -325,7 +325,7 @@ EOF + + if ! test $ROCKSDB_DISABLE_LZ4; then + # Test whether lz4 library is installed +- $CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null </dev/null < + #include + int main() {} +@@ -339,7 +339,7 @@ EOF + + if ! test $ROCKSDB_DISABLE_ZSTD; then + # Test whether zstd library is installed +- $CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null </dev/null < + int main() {} + EOF +@@ -352,7 +352,7 @@ EOF + + if ! test $ROCKSDB_DISABLE_NUMA; then + # Test whether numa is available +- $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null -lnuma 2>/dev/null </dev/null < + #include + int main() {} +@@ -366,7 +366,7 @@ EOF + + if ! test $ROCKSDB_DISABLE_TBB; then + # Test whether tbb is available +- $CXX $PLATFORM_CXXFLAGS $LDFLAGS -x c++ - -o /dev/null -ltbb 2>/dev/null </dev/null < + int main() {} + EOF +@@ -379,7 +379,7 @@ EOF + + if ! test $ROCKSDB_DISABLE_JEMALLOC; then + # Test whether jemalloc is available +- if echo 'int main() {}' | $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null -ljemalloc \ ++ if echo 'int main() {}' | $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o -ljemalloc \ + 2>/dev/null; then + # This will enable some preprocessor identifiers in the Makefile + JEMALLOC=1 +@@ -400,7 +400,7 @@ EOF + fi + if ! test $JEMALLOC && ! test $ROCKSDB_DISABLE_TCMALLOC; then + # jemalloc is not available. Let's try tcmalloc +- if echo 'int main() {}' | $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null \ ++ if echo 'int main() {}' | $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o \ + -ltcmalloc 2>/dev/null; then + PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -ltcmalloc" + JAVA_LDFLAGS="$JAVA_LDFLAGS -ltcmalloc" +@@ -409,7 +409,7 @@ EOF + + if ! test $ROCKSDB_DISABLE_MALLOC_USABLE_SIZE; then + # Test whether malloc_usable_size is available +- $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null </dev/null < + int main() { + size_t res = malloc_usable_size(0); +@@ -424,7 +424,7 @@ EOF + + if ! test $ROCKSDB_DISABLE_MEMKIND; then + # Test whether memkind library is installed +- $CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -lmemkind -x c++ - -o /dev/null 2>/dev/null </dev/null < + int main() { + memkind_malloc(MEMKIND_DAX_KMEM, 1024); +@@ -486,7 +486,7 @@ EOF + + if ! test $ROCKSDB_DISABLE_PTHREAD_MUTEX_ADAPTIVE_NP; then + # Test whether PTHREAD_MUTEX_ADAPTIVE_NP mutex type is available +- $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null </dev/null < + int main() { + int x = PTHREAD_MUTEX_ADAPTIVE_NP; +@@ -439,7 +439,7 @@ EOF + + if ! test $ROCKSDB_DISABLE_BACKTRACE; then + # Test whether backtrace is available +- $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null </dev/null < + int main() { + void* frames[1]; +@@ -451,7 +451,7 @@ EOF + COMMON_FLAGS="$COMMON_FLAGS -DROCKSDB_BACKTRACE" + else + # Test whether execinfo library is installed +- $CXX $PLATFORM_CXXFLAGS -lexecinfo -x c++ - -o /dev/null 2>/dev/null </dev/null < + int main() { + void* frames[1]; +@@ -468,7 +468,7 @@ EOF + + if ! test $ROCKSDB_DISABLE_PG; then + # Test if -pg is supported +- $CXX $PLATFORM_CXXFLAGS -pg -x c++ - -o /dev/null 2>/dev/null </dev/null </dev/null </dev/null < + int main() { + int fd = open("/dev/null", 0); +@@ -494,7 +494,7 @@ EOF + + if ! test $ROCKSDB_DISABLE_SCHED_GETCPU; then + # Test whether sched_getcpu is supported +- $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null </dev/null < + int main() { + int cpuid = sched_getcpu(); +@@ -508,7 +508,7 @@ EOF + + if ! test $ROCKSDB_DISABLE_AUXV_GETAUXVAL; then + # Test whether getauxval is supported +- $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null </dev/null < + int main() { + uint64_t auxv = getauxval(AT_HWCAP); +@@ -522,7 +522,7 @@ EOF + + if ! test $ROCKSDB_DISABLE_ALIGNED_NEW; then + # Test whether c++17 aligned-new is supported +- $CXX $PLATFORM_CXXFLAGS -faligned-new -x c++ - -o /dev/null 2>/dev/null </dev/null </dev/null </dev/null </dev/null </dev/null < + #include + int main() { +@@ -617,7 +617,7 @@ elif test "$USE_SSE"; then + echo "warning: USE_SSE specified but compiler could not use SSE intrinsics, disabling" >&2 + fi + +-$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS $TRY_PCLMUL -x c++ - -o /dev/null 2>/dev/null </dev/null < + #include + int main() { +@@ -634,7 +634,7 @@ elif test "$USE_SSE"; then + echo "warning: USE_SSE specified but compiler could not use PCLMUL intrinsics, disabling" >&2 + fi + +-$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS $TRY_AVX2 -x c++ - -o /dev/null 2>/dev/null </dev/null < + #include + int main() { +@@ -649,7 +649,7 @@ elif test "$USE_SSE"; then + echo "warning: USE_SSE specified but compiler could not use AVX2 intrinsics, disabling" >&2 + fi + +-$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS $TRY_BMI -x c++ - -o /dev/null 2>/dev/null </dev/null < + #include + int main(int argc, char *argv[]) { +@@ -739,7 +739,7 @@ elif test "$USE_SSE"; then + echo "warning: USE_SSE specified but compiler could not use BMI intrinsics, disabling" >&2 + fi + +-$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS $TRY_LZCNT -x c++ - -o /dev/null 2>/dev/null </dev/null < + #include + int main(int argc, char *argv[]) { +@@ -753,7 +753,7 @@ elif test "$USE_SSE"; then + echo "warning: USE_SSE specified but compiler could not use LZCNT intrinsics, disabling" >&2 + fi + +-$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null </dev/null < + int main() { + uint64_t a = 0xffffFFFFffffFFFF; +@@ -666,7 +666,7 @@ fi + # succeed because the cross-compiler flags are added by the Makefile, not this + # script. + if [ "$PLATFORM" != IOS ]; then +- $CXX $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null </dev/null </dev/null ++ $CXX $COMMON_FLAGS $PLATFORM_SHARED_LDFLAGS test_dl.o -o test.o 2>/dev/null + if [ "$?" = 0 ]; then + EXEC_LDFLAGS+="-ldl" + rm -f test_dl.o +-- +2.25.0 + diff --git a/package/rocksdb/Config.in b/package/rocksdb/Config.in new file mode 100644 index 00000000..a706384a --- /dev/null +++ b/package/rocksdb/Config.in @@ -0,0 +1,36 @@ +config BR2_PACKAGE_ROCKSDB_ARCH_SUPPORTS + bool + # see utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h + default y if BR2_aarch64 || BR2_aarch64_be + default y if BR2_i386 || BR2_x86_64 + default y if BR2_powerpc64 || BR2_powerpc64le + +config BR2_PACKAGE_ROCKSDB + bool "rocksdb" + depends on BR2_PACKAGE_ROCKSDB_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::future + help + The RocksDB library provides a persistent key value store. + Keys and values are arbitrary byte arrays. The keys are + ordered within the key value store according to a + user-specified comparator function. + + The library is maintained by the Facebook Database Engineering + Team, and is based on LevelDB, by Sanjay Ghemawat and Jeff + Dean at Google. + + http://rocksdb.org + +comment "rocksdb needs a toolchain w/ C++, threads, wchar, gcc >= 4.8" + depends on BR2_PACKAGE_ROCKSDB_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +comment "rocksdb needs a toolchain not affected by GCC bug 64735" + depends on BR2_PACKAGE_ROCKSDB_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/rocksdb/rocksdb.hash b/package/rocksdb/rocksdb.hash new file mode 100644 index 00000000..935b498c --- /dev/null +++ b/package/rocksdb/rocksdb.hash @@ -0,0 +1,8 @@ +# Locally computed: +sha256 c6502c7aae641b7e20fafa6c2b92273d935d2b7b2707135ebd9a67b092169dca rocksdb-6.20.3.tar.gz + +# Hash for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.Apache +sha256 b568f1f37a5a1d37a3e981e7c8b7fc4856ca33b2ca0a45bc8e847aaaf7afe485 LICENSE.leveldb +sha256 e62e4f73402cf6a16969673f0b7eb46bc91782e50a2afe400dd0157547bc09f0 README.md diff --git a/package/rocksdb/rocksdb.mk b/package/rocksdb/rocksdb.mk new file mode 100644 index 00000000..bed06341 --- /dev/null +++ b/package/rocksdb/rocksdb.mk @@ -0,0 +1,107 @@ +################################################################################ +# +# rocksdb +# +################################################################################ + +ROCKSDB_VERSION = 6.20.3 +ROCKSDB_SITE = $(call github,facebook,rocksdb,v$(ROCKSDB_VERSION)) +ROCKSDB_LICENSE = GPL-2.0 or Apache-2.0 +ROCKSDB_LICENSE_FILES = COPYING LICENSE.Apache LICENSE.leveldb README.md +ROCKSDB_INSTALL_STAGING = YES + +ROCKSDB_MAKE_OPTS = \ + PORTABLE=1 \ + PREFIX=/usr + +# Internal error, aborting at dwarf2cfi.c:2802 in connect_traces +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58864 +ifeq ($(BR2_m68k_cf),y) +ROCKSDB_EXTRA_CXXFLAGS += -fno-defer-pop +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +ROCKSDB_DEPENDENCIES += bzip2 +ROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_BZ2=0 +else +ROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_BZ2=1 +endif + +ifeq ($(BR2_PACKAGE_GFLAGS),y) +ROCKSDB_DEPENDENCIES += gflags +ROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_GFLAGS=0 +else +ROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_GFLAGS=1 +endif + +ifeq ($(BR2_PACKAGE_JEMALLOC),y) +ROCKSDB_DEPENDENCIES += jemalloc +ROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_JEMALLOC=0 +else +ROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_JEMALLOC=1 +endif + +ifeq ($(BR2_PACKAGE_LZ4),y) +ROCKSDB_DEPENDENCIES += lz4 +ROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_LZ4=0 +else +ROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_LZ4=1 +endif + +ifeq ($(BR2_PACKAGE_SNAPPY),y) +ROCKSDB_DEPENDENCIES += snappy +ROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_SNAPPY=0 +else +ROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_SNAPPY=1 +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +ROCKSDB_DEPENDENCIES += zlib +ROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_ZLIB=0 +else +ROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_ZLIB=1 +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +ROCKSDB_DEPENDENCIES += zstd +ROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_ZSTD=0 +else +ROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_ZSTD=1 +endif + +ifeq ($(BR2_ENABLE_LTO),y) +ROCKSDB_MAKE_OPTS += USE_LTO=1 +else +ROCKSDB_MAKE_OPTS += USE_LTO=0 +endif + +ifeq ($(BR2_STATIC_LIBS),y) +ROCKSDB_BUILD_TARGETS += static_lib +ROCKSDB_INSTALL_TARGETS += install-static +ROCKSDB_EXTRA_CXXFLAGS += -DROCKSDB_NO_DYNAMIC_EXTENSION +else ifeq ($(BR2_SHARED_LIBS),y) +ROCKSDB_BUILD_TARGETS += shared_lib +ROCKSDB_INSTALL_TARGETS += install-shared +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +ROCKSDB_BUILD_TARGETS += shared_lib static_lib +ROCKSDB_INSTALL_TARGETS += install-shared install-static +endif + +ROCKSDB_MAKE_OPTS += EXTRA_CXXFLAGS="$(ROCKSDB_EXTRA_CXXFLAGS)" + +define ROCKSDB_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ROCKSDB_MAKE_OPTS) -C $(@D) \ + $(ROCKSDB_BUILD_TARGETS) +endef + +define ROCKSDB_INSTALL_STAGING_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ROCKSDB_MAKE_OPTS) -C $(@D) \ + DESTDIR=$(STAGING_DIR) $(ROCKSDB_INSTALL_TARGETS) +endef + +define ROCKSDB_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ROCKSDB_MAKE_OPTS) -C $(@D) \ + DESTDIR=$(TARGET_DIR) $(ROCKSDB_INSTALL_TARGETS) +endef + +$(eval $(generic-package)) diff --git a/package/rp-pppoe/0001-src-pppoe.h-fix-build-with-musl-libc.patch b/package/rp-pppoe/0001-src-pppoe.h-fix-build-with-musl-libc.patch new file mode 100644 index 00000000..29ba72be --- /dev/null +++ b/package/rp-pppoe/0001-src-pppoe.h-fix-build-with-musl-libc.patch @@ -0,0 +1,60 @@ +From bbf5b2759cff0c65b47fd6dbe5fe7341f205ad03 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 11 Dec 2021 22:03:16 +0100 +Subject: [PATCH] src/pppoe.h: fix build with musl libc + +musl libc defines its own struct ethhdr that conflicts with the kernel +define one. The kernel headers provide a way to suppress its struct +ethhdr. For that to work the libc headers must precede the kernel. Move +the kernel linux/if_ether.h include below libc netinet/if_ether.h. That +fixes the following build failure: + +In file included from pppoe.h:133, + from debug.c:19: +/home/giuliobenetti/autobuild/run/instance-0/output-1/host/riscv64-buildroot-linux-musl/sysroot/usr/include/netinet/if_ether.h:116:8: error: redefinition of 'struct ethhdr' + 116 | struct ethhdr { + | ^~~~~~ +In file included from pppoe.h:121, + from debug.c:19: +/home/giuliobenetti/autobuild/run/instance-0/output-1/host/riscv64-buildroot-linux-musl/sysroot/usr/include/linux/if_ether.h:163:8: note: originally defined here + 163 | struct ethhdr { + | ^~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/ccca18fcbcde65cb6784f5559eac68ca17ab14a3 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/dfskoll/rp-pppoe/pull/4] +--- + src/pppoe.h | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/pppoe.h b/src/pppoe.h +index 4780092..2b08111 100644 +--- a/src/pppoe.h ++++ b/src/pppoe.h +@@ -117,10 +117,6 @@ typedef unsigned long UINT32_t; + #error Could not find a 32-bit integer type + #endif + +-#ifdef HAVE_LINUX_IF_ETHER_H +-#include +-#endif +- + #include + + #ifdef HAVE_NETINET_IF_ETHER_H +@@ -134,6 +130,10 @@ typedef unsigned long UINT32_t; + #endif + #endif + ++#ifdef HAVE_LINUX_IF_ETHER_H ++#include ++#endif ++ + + + /* Ethernet frame types according to RFC 2516 */ +-- +2.33.0 + diff --git a/package/rp-pppoe/Config.in b/package/rp-pppoe/Config.in new file mode 100644 index 00000000..6ff005a1 --- /dev/null +++ b/package/rp-pppoe/Config.in @@ -0,0 +1,18 @@ +comment "rp-pppoe needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + depends on BR2_USE_MMU + +config BR2_PACKAGE_RP_PPPOE + bool "rp-pppoe" + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_PPPD + help + An implementation of the Point-to-point protocol over + Ethernet. Has userspace client and server daemons. You + likely only need this package if you are implementing the + pppoe server that will service other pppoe client + devices. Otherwise the normal client functionality already + exists in the pppd package (and kernel). + + https://dianne.skoll.ca/projects/rp-pppoe/ diff --git a/package/rp-pppoe/rp-pppoe.hash b/package/rp-pppoe/rp-pppoe.hash new file mode 100644 index 00000000..c883322d --- /dev/null +++ b/package/rp-pppoe/rp-pppoe.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 b1f318bc7e4e5b0fd8a8e23e8803f5e6e43165245a5a10a7162a92a6cf17829a rp-pppoe-3.15.tar.gz +# Locally computed +sha256 464006ba771074f4022db14f58a29a0b447b6fdde9529cf0331be396b6279162 doc/LICENSE diff --git a/package/rp-pppoe/rp-pppoe.mk b/package/rp-pppoe/rp-pppoe.mk new file mode 100644 index 00000000..f50f1e5a --- /dev/null +++ b/package/rp-pppoe/rp-pppoe.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# rp-pppoe +# +################################################################################ + +RP_PPPOE_VERSION = 3.15 +RP_PPPOE_SITE = https://dianne.skoll.ca/projects/rp-pppoe/download +RP_PPPOE_LICENSE = GPL-2.0 +RP_PPPOE_LICENSE_FILES = doc/LICENSE +RP_PPPOE_CPE_ID_VALID = YES + +RP_PPPOE_DEPENDENCIES = pppd +RP_PPPOE_SUBDIR = src +RP_PPPOE_TARGET_FILES = pppoe pppoe-server pppoe-relay pppoe-sniff +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 + $(INSTALL) -D -m 0644 $(@D)/configs/pppoe.conf \ + $(TARGET_DIR)/etc/ppp/pppoe.conf + for ff in $(RP_PPPOE_TARGET_FILES); do \ + $(INSTALL) -m 0755 $(@D)/src/$$ff $(TARGET_DIR)/usr/sbin/$$ff || exit 1; \ + done + for ff in $(RP_PPPOE_TARGET_SCRIPTS); do \ + $(INSTALL) -m 0755 $(@D)/scripts/$$ff $(TARGET_DIR)/usr/sbin/$$ff || exit 1; \ + done +endef + +$(eval $(autotools-package)) diff --git a/package/rpcbind/0001-Remove-yellow-pages-support.patch b/package/rpcbind/0001-Remove-yellow-pages-support.patch new file mode 100644 index 00000000..694f1ac9 --- /dev/null +++ b/package/rpcbind/0001-Remove-yellow-pages-support.patch @@ -0,0 +1,48 @@ +From 226b9c57ff403b407dbf1ff8a615da455a4cbd23 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 10 Nov 2012 22:03:43 +0100 +Subject: [PATCH] Remove yellow pages support + +This support requires yellow pages support in libtirpc, which isn't +available. As most Buildroot users are most likely never going to need +such feature, get rid of it. + +Signed-off-by: Thomas Petazzoni +[ rebased for 1.2.6 ] +Signed-off-by: Petr Vorel +--- + src/security.c | 15 --------------- + 1 file changed, 15 deletions(-) + +diff --git a/src/security.c b/src/security.c +index 38967dd..0a70635 100644 +--- a/src/security.c ++++ b/src/security.c +@@ -318,24 +318,9 @@ check_callit(SVCXPRT *xprt, struct r_rmtcall_args *args, int versnum /*__unused* + args->rmt_proc != MOUNTPROC_UMNT) + break; + goto deny; +- case YPBINDPROG: +- if (args->rmt_proc != YPBINDPROC_SETDOM) +- break; +- /* FALLTHROUGH */ +- case YPPASSWDPROG: + case NFS_PROGRAM: + case RQUOTAPROG: + goto deny; +- case YPPROG: +- switch (args->rmt_proc) { +- case YPPROC_ALL: +- case YPPROC_MATCH: +- case YPPROC_FIRST: +- case YPPROC_NEXT: +- goto deny; +- default: +- break; +- } + default: + break; + } +-- +2.31.1 + diff --git a/package/rpcbind/Config.in b/package/rpcbind/Config.in new file mode 100644 index 00000000..9cde7bba --- /dev/null +++ b/package/rpcbind/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_RPCBIND + bool "rpcbind" + # We really need libtirpc and can't work with the native RPC + # implementation of toolchains. + depends on BR2_TOOLCHAIN_HAS_THREADS # libtirpc + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBTIRPC + help + The rpcbind utility is a server that converts RPC program + numbers into universal addresses. + + https://sourceforge.net/projects/rpcbind/ + +comment "rpcbind needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/package/rpcbind/S30rpcbind b/package/rpcbind/S30rpcbind new file mode 100644 index 00000000..b224322e --- /dev/null +++ b/package/rpcbind/S30rpcbind @@ -0,0 +1,38 @@ +#!/bin/sh +# +# Starts rpcbind. +# + +start() { + printf "Starting rpcbind: " + umask 077 + start-stop-daemon -S -q -p /var/run/rpcbind.pid --exec /usr/sbin/rpcbind + echo "OK" +} +stop() { + printf "Stopping rpcbind daemon: " + start-stop-daemon -K -q -p /var/run/rpcbind.pid + echo "OK" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? + diff --git a/package/rpcbind/rpcbind.hash b/package/rpcbind/rpcbind.hash new file mode 100644 index 00000000..b5f117db --- /dev/null +++ b/package/rpcbind/rpcbind.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 5613746489cae5ae23a443bb85c05a11741a5f12c8f55d2bb5e83b9defeee8de rpcbind-1.2.6.tar.bz2 +sha256 2b9477d2f4ab277b29702958f0058546edc120aae4b5fb8b8d1a9652104e1ba3 COPYING diff --git a/package/rpcbind/rpcbind.mk b/package/rpcbind/rpcbind.mk new file mode 100644 index 00000000..2c158213 --- /dev/null +++ b/package/rpcbind/rpcbind.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# rpcbind +# +################################################################################ + +RPCBIND_VERSION = 1.2.6 +RPCBIND_SITE = http://downloads.sourceforge.net/project/rpcbind/rpcbind/$(RPCBIND_VERSION) +RPCBIND_SOURCE = rpcbind-$(RPCBIND_VERSION).tar.bz2 +RPCBIND_LICENSE = BSD-3-Clause +RPCBIND_LICENSE_FILES = COPYING +RPCBIND_CPE_ID_VALID = YES +RPCBIND_SELINUX_MODULES = rpcbind + +RPCBIND_CONF_ENV += \ + CFLAGS="$(TARGET_CFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`" +RPCBIND_DEPENDENCIES += libtirpc host-pkgconf +RPCBIND_CONF_OPTS += --with-rpcuser=root + +ifeq ($(BR2_INIT_SYSTEMD),y) +RPCBIND_CONF_OPTS += --enable-warmstarts \ + --with-systemdsystemunitdir=/usr/lib/systemd/system +RPCBIND_DEPENDENCIES += systemd +else +RPCBIND_CONF_OPTS += --with-systemdsystemunitdir=no +endif + +define RPCBIND_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/rpcbind/S30rpcbind \ + $(TARGET_DIR)/etc/init.d/S30rpcbind +endef + +$(eval $(autotools-package)) diff --git a/package/rpi-firmware/Config.in b/package/rpi-firmware/Config.in new file mode 100644 index 00000000..a9aeaed7 --- /dev/null +++ b/package/rpi-firmware/Config.in @@ -0,0 +1,115 @@ +config BR2_PACKAGE_RPI_FIRMWARE + bool "rpi-firmware" + depends on BR2_arm || BR2_aarch64 + help + RaspberryPi Firmware + + Pre-compiled binaries of the current bootloader and GPU + firmware + + https://github.com/raspberrypi/firmware + +if BR2_PACKAGE_RPI_FIRMWARE + +config BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN + bool "rpi 0/1/2/3 bootcode.bin" + help + The bootcode.bin for versions Zero/1/2/3 (not needed on rpi4, + because it has been replaced by boot code in the onboard + EEPROM). + +config BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI + bool "rpi 0/1/2/3 (default)" + help + The default set of files for versions Zero/1/2/3. + +config BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI_X + bool "rpi 0/1/2/3 (extended)" + help + The extended set of files for versions Zero/1/2/3 (additional + GPU features, eg. more audio/video codecs). + +config BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI_CD + bool "rpi 0/1/2/3 (cut-down)" + help + The cut-down set of files for versions Zero/1/2/3 (only + features required to boot a Linux kernel). + +config BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI_DB + bool "rpi 0/1/2/3 (debug)" + help + The debug set of files for versions Zero/1/2/3. + +config BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4 + bool "rpi 4 (default)" + help + The default set of files for versions 4 (standard GPU + features). + +config BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4_X + bool "rpi 4 (extended)" + help + The extended set of files for versions 4 (additional GPU + features, eg. more audio/video codecs). + +config BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4_CD + bool "rpi 4 (cut-down)" + help + The cut-down set of files for versions 4 (only features + required to boot a Linux kernel). + +config BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4_DB + bool "rpi 4 (debug)" + help + The debug set of files for versions 4. + +config BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE + string "Path to a file stored as boot/config.txt" + help + Path to a file stored as config.txt in the boot partiton + of the generated SD card image. + +config BR2_PACKAGE_RPI_FIRMWARE_CMDLINE_FILE + string "Path to a file stored as boot/cmdline.txt" + default "board/raspberrypi/cmdline.txt" # legacy + help + Path to a file stored as cmdline.txt in the boot partiton + of the generated SD card image. + +config BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTBS + bool "Install Device Tree Blobs (DTBs)" + default y + depends on !BR2_LINUX_KERNEL_DTS_SUPPORT + help + If you are using a Linux kernel <= 3.18, you should say 'y' + here. + + If you are using a Linux kernel >= 3.19, you should say 'n' + here, and enable BR2_LINUX_KERNEL_DTS_SUPPORT to let the + kernel build the DTB. + +config BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS + bool "Install DTB overlays" + default y + depends on BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTBS \ + || BR2_LINUX_KERNEL_DTS_SUPPORT + select BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT \ + if BR2_LINUX_KERNEL_DTS_SUPPORT + help + Say 'y' here if you need to load one or more of the DTB + overlays, to support HATs (Hardware Attached on Top, add-on + modules). + +config BR2_PACKAGE_RPI_FIRMWARE_INSTALL_VCDBG + bool "vcdbg" + depends on BR2_arm # prebuilt arm binary, rpi-userland + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_INSTALL_LIBSTDCPP # rpi-userland + help + Install vcdbg, to help debug communication with the GPU. + +comment "vcdbg needs a glibc toolchain w/ C++" + depends on BR2_arm + depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_INSTALL_LIBSTDCPP + +endif # BR2_PACKAGE_RPI_FIRMWARE diff --git a/package/rpi-firmware/rpi-firmware.hash b/package/rpi-firmware/rpi-firmware.hash new file mode 100644 index 00000000..4501db73 --- /dev/null +++ b/package/rpi-firmware/rpi-firmware.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 00fe5487376e9d5ed14cbc72a9b7a5bd8d6900c84aee10f6d656f192a26d161c rpi-firmware-5476720d52cf579dc1627715262b30ba1242525e.tar.gz +sha256 c7283ff51f863d93a275c66e3b4cb08021a5dd4d8c1e7acc47d872fbe52d3d6b boot/LICENCE.broadcom diff --git a/package/rpi-firmware/rpi-firmware.mk b/package/rpi-firmware/rpi-firmware.mk new file mode 100644 index 00000000..7ae9ff6c --- /dev/null +++ b/package/rpi-firmware/rpi-firmware.mk @@ -0,0 +1,92 @@ +################################################################################ +# +# rpi-firmware +# +################################################################################ + +RPI_FIRMWARE_VERSION = 5476720d52cf579dc1627715262b30ba1242525e +RPI_FIRMWARE_SITE = $(call github,raspberrypi,firmware,$(RPI_FIRMWARE_VERSION)) +RPI_FIRMWARE_LICENSE = BSD-3-Clause +RPI_FIRMWARE_LICENSE_FILES = boot/LICENCE.broadcom +RPI_FIRMWARE_INSTALL_IMAGES = YES + +RPI_FIRMWARE_FILES = \ + $(if $(BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN), bootcode.bin) \ + $(if $(BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI), start.elf fixup.dat) \ + $(if $(BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI_X), start_x.elf fixup_x.dat) \ + $(if $(BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI_CD), start_cd.elf fixup_cd.dat) \ + $(if $(BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI_DB), start_db.elf fixup_db.dat) \ + $(if $(BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4), start4.elf fixup4.dat) \ + $(if $(BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4_X), start4x.elf fixup4x.dat) \ + $(if $(BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4_CD), start4cd.elf fixup4cd.dat) \ + $(if $(BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4_DB), start4db.elf fixup4db.dat) + +define RPI_FIRMWARE_INSTALL_BIN + $(foreach f,$(RPI_FIRMWARE_FILES), \ + $(INSTALL) -D -m 0644 $(@D)/boot/$(f) $(BINARIES_DIR)/rpi-firmware/$(f) + ) +endef + +RPI_FIRMWARE_CONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE)) +ifneq ($(RPI_FIRMWARE_CONFIG_FILE),) +define RPI_FIRMWARE_INSTALL_CONFIG + $(INSTALL) -D -m 0644 $(RPI_FIRMWARE_CONFIG_FILE) \ + $(BINARIES_DIR)/rpi-firmware/config.txt +endef +endif + +RPI_FIRMWARE_CMDLINE_FILE = $(call qstrip,$(BR2_PACKAGE_RPI_FIRMWARE_CMDLINE_FILE)) +ifneq ($(RPI_FIRMWARE_CMDLINE_FILE),) +define RPI_FIRMWARE_INSTALL_CMDLINE + $(INSTALL) -D -m 0644 $(RPI_FIRMWARE_CMDLINE_FILE) \ + $(BINARIES_DIR)/rpi-firmware/cmdline.txt +endef +endif + +ifeq ($(BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTBS),y) +define RPI_FIRMWARE_INSTALL_DTB + $(foreach dtb,$(wildcard $(@D)/boot/*.dtb), \ + $(INSTALL) -D -m 0644 $(dtb) $(BINARIES_DIR)/rpi-firmware/$(notdir $(dtb)) + ) +endef +endif + +ifeq ($(BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS),y) +define RPI_FIRMWARE_INSTALL_DTB_OVERLAYS + $(foreach ovldtb,$(wildcard $(@D)/boot/overlays/*.dtbo), \ + $(INSTALL) -D -m 0644 $(ovldtb) $(BINARIES_DIR)/rpi-firmware/overlays/$(notdir $(ovldtb)) + ) + $(INSTALL) -D -m 0644 $(@D)/boot/overlays/overlay_map.dtb $(BINARIES_DIR)/rpi-firmware/overlays/ + touch $(BINARIES_DIR)/rpi-firmware/overlays/README +endef +endif + +# Install prebuilt libraries if RPI_USERLAND not enabled +ifneq ($(BR2_PACKAGE_RPI_USERLAND),y) +define RPI_FIRMWARE_INSTALL_TARGET_LIB + $(INSTALL) -D -m 0644 $(@D)/$(if BR2_ARM_EABIHF,hardfp/)opt/vc/lib/libvcos.so \ + $(TARGET_DIR)/usr/lib/libvcos.so + $(INSTALL) -D -m 0644 $(@D)/$(if BR2_ARM_EABIHF,hardfp/)opt/vc/lib/libdebug_sym.so \ + $(TARGET_DIR)/usr/lib/libdebug_sym.so +endef +endif + +ifeq ($(BR2_PACKAGE_RPI_FIRMWARE_INSTALL_VCDBG),y) +define RPI_FIRMWARE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0700 $(@D)/$(if BR2_ARM_EABIHF,hardfp/)opt/vc/bin/vcdbg \ + $(TARGET_DIR)/usr/sbin/vcdbg + $(INSTALL) -D -m 0644 $(@D)/$(if BR2_ARM_EABIHF,hardfp/)opt/vc/lib/libelftoolchain.so \ + $(TARGET_DIR)/usr/lib/libelftoolchain.so + $(RPI_FIRMWARE_INSTALL_TARGET_LIB) +endef +endif # INSTALL_VCDBG + +define RPI_FIRMWARE_INSTALL_IMAGES_CMDS + $(RPI_FIRMWARE_INSTALL_BIN) + $(RPI_FIRMWARE_INSTALL_CONFIG) + $(RPI_FIRMWARE_INSTALL_CMDLINE) + $(RPI_FIRMWARE_INSTALL_DTB) + $(RPI_FIRMWARE_INSTALL_DTB_OVERLAYS) +endef + +$(eval $(generic-package)) diff --git a/package/rpi-rgb-led-matrix/Config.in b/package/rpi-rgb-led-matrix/Config.in new file mode 100644 index 00000000..ca945a92 --- /dev/null +++ b/package/rpi-rgb-led-matrix/Config.in @@ -0,0 +1,43 @@ +config BR2_PACKAGE_RPI_RGB_LED_MATRIX + bool "rpi-rgb-led-matrix" + depends on BR2_aarch64 || BR2_arm + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + A library to control commonly available 64x64, 32x32 or 16x32 + RGB LED panels with the Raspberry Pi. Can support PWM up to + 11Bit per channel, providing true 24bpp color with CIE1931 + profile. + + https://github.com/hzeller/rpi-rgb-led-matrix + +if BR2_PACKAGE_RPI_RGB_LED_MATRIX + +config BR2_PACKAGE_RPI_RGB_LED_MATRIX_IMAGE_VIEWER + bool "Build led-image-viewer" + select BR2_PACKAGE_GRAPHICSMAGICK + help + The image viewer reads all kinds of image formats, + including animated gifs. + +config BR2_PACKAGE_RPI_RGB_LED_MATRIX_TEXT_SCROLLER + bool "Build text-scroller" + help + The text scroller allows to show some scrolling text. + +config BR2_PACKAGE_RPI_RGB_LED_MATRIX_VIDEO_VIEWER + bool "Build video-viewer" + select BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_FFMPEG_SWSCALE + help + The video viewer allows to play common video formats + on the RGB matrix (just the picture, no sound). + +endif + +comment "rpi-rgb-led-matrix needs a toolchain w/ C++, threads, dynamic library" + depends on BR2_aarch64 || BR2_arm + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/package/rpi-rgb-led-matrix/rpi-rgb-led-matrix.hash b/package/rpi-rgb-led-matrix/rpi-rgb-led-matrix.hash new file mode 100644 index 00000000..265e4c42 --- /dev/null +++ b/package/rpi-rgb-led-matrix/rpi-rgb-led-matrix.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 490ca6fa0c81451f2472b4aa85796a876790f2e212bf0882e3bb7caf5c47e2c3 rpi-rgb-led-matrix-a56338db0f003d5236f2ce98c73a591d64a70852.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/rpi-rgb-led-matrix/rpi-rgb-led-matrix.mk b/package/rpi-rgb-led-matrix/rpi-rgb-led-matrix.mk new file mode 100644 index 00000000..499fb408 --- /dev/null +++ b/package/rpi-rgb-led-matrix/rpi-rgb-led-matrix.mk @@ -0,0 +1,82 @@ +################################################################################ +# +# rpi-rgb-led-matrix +# +################################################################################ + +RPI_RGB_LED_MATRIX_VERSION = a56338db0f003d5236f2ce98c73a591d64a70852 +RPI_RGB_LED_MATRIX_SITE = $(call github,hzeller,rpi-rgb-led-matrix,$(RPI_RGB_LED_MATRIX_VERSION)) +RPI_RGB_LED_MATRIX_LICENSE = GPL-2.0 +RPI_RGB_LED_MATRIX_LICENSE_FILES = COPYING +RPI_RGB_LED_MATRIX_INSTALL_STAGING = YES + +RPI_RGB_LED_MATRIX_MAKE_OPTS = \ + $(TARGET_CONFIGURE_OPTS) \ + CXXFLAGS="$(TARGET_CXXFLAGS) -fPIC -std=c++11" + +define RPI_RGB_LED_MATRIX_BUILD_CMDS + $(MAKE) $(RPI_RGB_LED_MATRIX_MAKE_OPTS) -C $(@D)/lib all +endef + +define RPI_RGB_LED_MATRIX_INSTALL_STAGING_CMDS + $(INSTALL) -d -m 0755 $(STAGING_DIR)/usr/include/rpi-rgb-led-matrix/ + $(INSTALL) -m 0644 $(@D)/include/*.h $(STAGING_DIR)/usr/include/rpi-rgb-led-matrix/ + $(INSTALL) -D -m 0644 $(@D)/lib/librgbmatrix.a $(STAGING_DIR)/usr/lib/librgbmatrix.a + $(INSTALL) -D -m 0755 $(@D)/lib/librgbmatrix.so.1 $(STAGING_DIR)/usr/lib/librgbmatrix.so.1 + ln -sf librgbmatrix.so.1 $(STAGING_DIR)/usr/lib/librgbmatrix.so +endef + +define RPI_RGB_LED_MATRIX_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/lib/librgbmatrix.so.1 $(TARGET_DIR)/usr/lib/librgbmatrix.so.1 + ln -sf librgbmatrix.so.1 $(TARGET_DIR)/usr/lib/librgbmatrix.so +endef + +ifeq ($(BR2_PACKAGE_RPI_RGB_LED_MATRIX_IMAGE_VIEWER),y) +RPI_RGB_LED_MATRIX_DEPENDENCIES += graphicsmagick + +define RPI_RGB_LED_MATRIX_BUILD_IMAGE_VIEWER_CMDS + $(MAKE) $(RPI_RGB_LED_MATRIX_MAKE_OPTS) \ + MAGICK_CXXFLAGS="-I$(STAGING_DIR)/usr/include/GraphicsMagick $(shell $(STAGING_DIR)/usr/bin/GraphicsMagick++-config --cxxflags)" \ + MAGICK_LDFLAGS="-L$(STAGING_DIR)/usr/lib $(shell $(STAGING_DIR)/usr/bin/GraphicsMagick++-config --libs)" \ + -C $(@D)/utils led-image-viewer +endef +RPI_RGB_LED_MATRIX_POST_BUILD_HOOKS += RPI_RGB_LED_MATRIX_BUILD_IMAGE_VIEWER_CMDS + +define RPI_RGB_LED_MATRIX_INSTALL_IMAGE_VIEWER_CMDS + $(INSTALL) -D -m 0755 $(@D)/utils/led-image-viewer $(TARGET_DIR)/usr/bin/led-image-viewer +endef +RPI_RGB_LED_MATRIX_POST_INSTALL_TARGET_HOOKS += RPI_RGB_LED_MATRIX_INSTALL_IMAGE_VIEWER_CMDS +endif + +ifeq ($(BR2_PACKAGE_RPI_RGB_LED_MATRIX_TEXT_SCROLLER),y) +define RPI_RGB_LED_MATRIX_BUILD_TEXT_SCROLLER_CMDS + $(MAKE) $(RPI_RGB_LED_MATRIX_MAKE_OPTS) -C $(@D)/utils text-scroller +endef +RPI_RGB_LED_MATRIX_POST_BUILD_HOOKS += RPI_RGB_LED_MATRIX_BUILD_TEXT_SCROLLER_CMDS + +define RPI_RGB_LED_MATRIX_INSTALL_TEXT_SCROLLER_CMDS + $(INSTALL) -D -m 0755 $(@D)/utils/text-scroller $(TARGET_DIR)/usr/bin/text-scroller + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/share/rpi-rgb-led-matrix/fonts/ + $(INSTALL) -m 0644 $(@D)/fonts/*.bdf $(TARGET_DIR)/usr/share/rpi-rgb-led-matrix/fonts/ +endef +RPI_RGB_LED_MATRIX_POST_INSTALL_TARGET_HOOKS += RPI_RGB_LED_MATRIX_INSTALL_TEXT_SCROLLER_CMDS +endif + +ifeq ($(BR2_PACKAGE_RPI_RGB_LED_MATRIX_VIDEO_VIEWER),y) +RPI_RGB_LED_MATRIX_DEPENDENCIES += ffmpeg + +define RPI_RGB_LED_MATRIX_BUILD_VIDEO_VIEWER_CMDS + $(MAKE) $(RPI_RGB_LED_MATRIX_MAKE_OPTS) \ + AV_CXXFLAGS="$(shell $(HOST_DIR)/bin/pkg-config --cflags libavcodec libavformat libswscale libavutil)" \ + AV_LDFLAGS="$(shell $(HOST_DIR)/bin/pkg-config --libs libavcodec libavformat libswscale libavutil)" \ + -C $(@D)/utils video-viewer +endef +RPI_RGB_LED_MATRIX_POST_BUILD_HOOKS += RPI_RGB_LED_MATRIX_BUILD_VIDEO_VIEWER_CMDS + +define RPI_RGB_LED_MATRIX_INSTALL_VIDEO_VIEWER_CMDS + $(INSTALL) -D -m 0755 $(@D)/utils/video-viewer $(TARGET_DIR)/usr/bin/video-viewer +endef +RPI_RGB_LED_MATRIX_POST_INSTALL_TARGET_HOOKS += RPI_RGB_LED_MATRIX_INSTALL_VIDEO_VIEWER_CMDS +endif + +$(eval $(generic-package)) diff --git a/package/rpi-userland/0001-Add-.pc-files-for-the-OpenGLESv2-EGL-and-bcm_host-li.patch b/package/rpi-userland/0001-Add-.pc-files-for-the-OpenGLESv2-EGL-and-bcm_host-li.patch new file mode 100644 index 00000000..fb873371 --- /dev/null +++ b/package/rpi-userland/0001-Add-.pc-files-for-the-OpenGLESv2-EGL-and-bcm_host-li.patch @@ -0,0 +1,107 @@ +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 + +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 ++++++++++ + interface/khronos/CMakeLists.txt | 8 ++++++++ + interface/khronos/egl/egl.pc.in | 11 +++++++++++ + interface/khronos/glxx/glesv2.pc.in | 10 ++++++++++ + 5 files changed, 43 insertions(+) + create mode 100644 host_applications/linux/libs/bcm_host/bcm_host.pc.in + create mode 100644 interface/khronos/egl/egl.pc.in + create mode 100644 interface/khronos/glxx/glesv2.pc.in + +diff --git a/host_applications/linux/libs/bcm_host/CMakeLists.txt b/host_applications/linux/libs/bcm_host/CMakeLists.txt +index 1edf50a..1f29ead 100644 +--- a/host_applications/linux/libs/bcm_host/CMakeLists.txt ++++ b/host_applications/linux/libs/bcm_host/CMakeLists.txt +@@ -20,3 +20,7 @@ target_link_libraries(bcm_host vcos vchostif) + + install(TARGETS bcm_host DESTINATION lib) + ++configure_file("${CMAKE_CURRENT_SOURCE_DIR}/bcm_host.pc.in" ++ "${CMAKE_CURRENT_BINARY_DIR}/bcm_host.pc" @ONLY) ++install(FILES "${CMAKE_CURRENT_BINARY_DIR}/bcm_host.pc" ++ DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig") +diff --git a/host_applications/linux/libs/bcm_host/bcm_host.pc.in b/host_applications/linux/libs/bcm_host/bcm_host.pc.in +new file mode 100644 +index 0000000..d40d350 +--- /dev/null ++++ b/host_applications/linux/libs/bcm_host/bcm_host.pc.in +@@ -0,0 +1,10 @@ ++prefix=/usr ++exec_prefix=${prefix} ++libdir=${exec_prefix}/lib ++includedir=${prefix}/include ++ ++Name: bcm_host ++Description: Broadcom VideoCore host API library ++Version: 1 ++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 4231af4..2844ebd 100644 +--- a/interface/khronos/CMakeLists.txt ++++ b/interface/khronos/CMakeLists.txt +@@ -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) ++configure_file("${CMAKE_CURRENT_SOURCE_DIR}/egl/egl.pc.in" ++ "${CMAKE_CURRENT_BINARY_DIR}/egl/egl.pc" @ONLY) ++install(FILES "${CMAKE_CURRENT_BINARY_DIR}/egl/egl.pc" ++ DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig") ++configure_file("${CMAKE_CURRENT_SOURCE_DIR}/glxx/glesv2.pc.in" ++ "${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 +--- /dev/null ++++ b/interface/khronos/egl/egl.pc.in +@@ -0,0 +1,11 @@ ++prefix=@CMAKE_INSTALL_PREFIX@ ++exec_prefix=${prefix} ++libdir=${exec_prefix}/lib ++includedir=${prefix}/include ++ ++Name: egl ++Description: RasberryPi implementation of EGL ++Version: 10 ++Libs: -L${libdir} -lEGL -lGLESv2 -lbcm_host -lvchostif ++Cflags: -I${includedir}/ -I${includedir}/interface/vcos/pthreads/ \ ++ -I${includedir}/interface/vmcs_host/linux/ +diff --git a/interface/khronos/glxx/glesv2.pc.in b/interface/khronos/glxx/glesv2.pc.in +new file mode 100644 +index 0000000..2f58eed +--- /dev/null ++++ b/interface/khronos/glxx/glesv2.pc.in +@@ -0,0 +1,10 @@ ++prefix=@CMAKE_INSTALL_PREFIX@ ++exec_prefix=${prefix} ++libdir=${exec_prefix}/lib ++includedir=${prefix}/include ++ ++Name: glesv2 ++Description: RasberryPi implementation of OpenGL ESv2 ++Version: 2.0 ++Libs: -L${libdir} -lGLESv2 ++Cflags: -I${includedir}/ +-- +2.8.1 + diff --git a/package/rpi-userland/0002-interface-remove-faulty-assert-to-make-weston-happy-.patch b/package/rpi-userland/0002-interface-remove-faulty-assert-to-make-weston-happy-.patch new file mode 100644 index 00000000..0e9dede5 --- /dev/null +++ b/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/package/rpi-userland/0003-Disable-Werror-everywhere.patch b/package/rpi-userland/0003-Disable-Werror-everywhere.patch new file mode 100644 index 00000000..27c8acdd --- /dev/null +++ b/package/rpi-userland/0003-Disable-Werror-everywhere.patch @@ -0,0 +1,165 @@ +From cc9ac86bcff79697d354cc51d3a984fd0f362868 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 + +[Rebased for rpi-userland-8f0abfb07b96e7ee85f46e59d895014ec5e25f5e] +Signed-off-by: Peter Seiderer + +[Rebased for rpi-userland-5070cb7fc150fc98f1ed64a7739c3356970d9f76] +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 +- + 10 files changed, 10 insertions(+), 10 deletions(-) + +diff --git a/host_applications/android/apps/vidtex/CMakeLists.txt b/host_applications/android/apps/vidtex/CMakeLists.txt +index 6d66d69..06a3192 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) + + # Set --no-as-needed to stop the linker discarding mmal_vc_client + # as it can't see that the constructor registers a load of functionality +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 f7db21e..b94bdc3 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 ) + + # Set --no-as-needed to stop the linker discarding mmal_vc_client + # as it can't see that the constructor registers a load of functionality +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 2154e53..c23779b 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 () + + # set this as we want all the source of vchostif to be available in libbcm_host +diff --git a/host_applications/linux/libs/sm/CMakeLists.txt b/host_applications/linux/libs/sm/CMakeLists.txt +index 5ce5aca..02aea7c 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 46f149d..06273dc 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 a157db1..dc384ca 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) +-- +2.23.0 + diff --git a/package/rpi-userland/0004-host-applications-disable-missing-applications.patch b/package/rpi-userland/0004-host-applications-disable-missing-applications.patch new file mode 100644 index 00000000..08039123 --- /dev/null +++ b/package/rpi-userland/0004-host-applications-disable-missing-applications.patch @@ -0,0 +1,34 @@ +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 + +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 | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/host_applications/linux/CMakeLists.txt b/host_applications/linux/CMakeLists.txt +index 5a648e7..83bb66e 100644 +--- a/host_applications/linux/CMakeLists.txt ++++ b/host_applications/linux/CMakeLists.txt +@@ -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() + +-- +2.8.1 + diff --git a/package/rpi-userland/0005-dtmerge-add-missing-include-for-va_list.patch b/package/rpi-userland/0005-dtmerge-add-missing-include-for-va_list.patch new file mode 100644 index 00000000..f028f67b --- /dev/null +++ b/package/rpi-userland/0005-dtmerge-add-missing-include-for-va_list.patch @@ -0,0 +1,34 @@ +From 1ffed0e8601afb7e65545bd545772edd0fccc404 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Sat, 23 Apr 2016 17:48:13 +0200 +Subject: [PATCH] dtmerge: add missing include for va_list +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes compile error with uclibc-1.0.14: + + In file included from rpi-userland-52eca998aa43f278314579dba4798a3fe1da46c3/host_applications/linux/apps/dtmerge/dtmerge.c:32:0: + rpi-userland-52eca998aa43f278314579dba4798a3fe1da46c3/helpers/dtoverlay/dtoverlay.h:65:54: error: unknown type name ‘va_list’ + const char *fmt, va_list args); + +Signed-off-by: Peter Seiderer +--- + host_applications/linux/apps/dtmerge/dtmerge.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/host_applications/linux/apps/dtmerge/dtmerge.c b/host_applications/linux/apps/dtmerge/dtmerge.c +index 9243da1..2ac8d39 100644 +--- a/host_applications/linux/apps/dtmerge/dtmerge.c ++++ b/host_applications/linux/apps/dtmerge/dtmerge.c +@@ -28,6 +28,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + #include + #include + #include ++#include + + #include "dtoverlay.h" + +-- +2.8.1 + diff --git a/package/rpi-userland/0006-interface-vcos-pthreads-CMakeLists.txt-fix-build-wit.patch b/package/rpi-userland/0006-interface-vcos-pthreads-CMakeLists.txt-fix-build-wit.patch new file mode 100644 index 00000000..6c596395 --- /dev/null +++ b/package/rpi-userland/0006-interface-vcos-pthreads-CMakeLists.txt-fix-build-wit.patch @@ -0,0 +1,45 @@ +From c8270cea98bcce0d22ddc8e2f86eae2c9989efd4 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 25 Feb 2022 19:21:06 +0100 +Subject: [PATCH] interface/vcos/pthreads/CMakeLists.txt: fix build with + libexecinfo + +interface/vcos/glibc/vcos_backtrace.c uses execinfo.h which can be +provided by libexecinfo on uclibc or musl so link with it if needed to +avoid the following build failure: + +/home/peko/autobuild/instance-1/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/10.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: ../../build/lib/libvcos.so: undefined reference to `backtrace_symbols' + +Fixes: + - http://autobuild.buildroot.org/results/93d3b8cc2ac5dfa9d4b44946c0b4d8171e8f52a1 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/raspberrypi/userland/pull/719] +--- + interface/vcos/pthreads/CMakeLists.txt | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/interface/vcos/pthreads/CMakeLists.txt b/interface/vcos/pthreads/CMakeLists.txt +index 1d81ca3..100207f 100644 +--- a/interface/vcos/pthreads/CMakeLists.txt ++++ b/interface/vcos/pthreads/CMakeLists.txt +@@ -33,12 +33,14 @@ set (SOURCES + ../generic/vcos_generic_blockpool.c + ) + ++find_library (EXECINFO_LIBRARY execinfo) ++ + if (VCOS_PTHREADS_BUILD_SHARED) + add_library (vcos SHARED ${SOURCES}) +- target_link_libraries (vcos pthread dl rt) ++ target_link_libraries (vcos pthread dl rt $<$:${EXECINFO_LIBRARY}>) + else () + add_library (vcos ${SOURCES}) +- target_link_libraries (vcos pthread rt) ++ target_link_libraries (vcos pthread rt $<$:${EXECINFO_LIBRARY}>) + endif () + + +-- +2.35.1 + diff --git a/package/rpi-userland/0007-GLES2-gl2ext.h-add-GLint64-GLuint64-and-GLsync-typed.patch b/package/rpi-userland/0007-GLES2-gl2ext.h-add-GLint64-GLuint64-and-GLsync-typed.patch new file mode 100644 index 00000000..6dca2e7b --- /dev/null +++ b/package/rpi-userland/0007-GLES2-gl2ext.h-add-GLint64-GLuint64-and-GLsync-typed.patch @@ -0,0 +1,99 @@ +From ffb8eafe2d745ddf2f44101ffc4e6599ed096e69 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Mon, 10 May 2021 19:15:48 +0200 +Subject: [PATCH] GLES2/gl2ext.h: add GLint64, GLuint64 and GLsync typedefs +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes: + +.../host/arm-linucleus-linux-gnueabihf/sysroot/usr/include/gstreamer-1.0/gst/gl/glprototypes/gstgl_compat.h:40:18: error: conflicting declaration ‘typedef void* GLsync’ + 40 | typedef gpointer GLsync; + | ^~~~~~ + +.../host/arm-linucleus-linux-gnueabihf/sysroot/usr/include/qt5/QtGui/qopengles2ext.h:24:26: note: previous declaration as ‘typedef struct __GLsync* GLsync’ + 24 | typedef struct __GLsync *GLsync; + | ^~~~~~ + +File gstgl_compat.h: + + 39 #if !GST_GL_HAVE_GLSYNC + 40 typedef gpointer GLsync; + 41 #endif + +File qopengles2ext.h: + + 1 #ifndef __gles2_gl2ext_h_ + 2 #define __gles2_gl2ext_h_ 1 + 3 + 4 #if 0 + 5 #pragma qt_no_master_include + 6 #pragma qt_sync_skip_header_check + 7 #pragma qt_sync_stop_processing + 8 #endif + 9 + 10 #ifdef __cplusplus + 11 extern "C" { + 12 #endif + 13 + 14 #ifndef __gl3_h_ + 15 /* These types are defined with reference to + 16 * in the Apple extension spec, but here we use the Khronos + 17 * portable types in khrplatform.h, and assume those types + 18 * are always defined. + 19 * If any other extensions using these types are defined, + 20 * the typedefs must move out of this block and be shared. + 21 */ + 22 typedef khronos_int64_t GLint64; + 23 typedef khronos_uint64_t GLuint64; + 24 typedef struct __GLsync *GLsync; + 25 #endif + +The problem is that rpi-userland doesn't define GLsync, and both +GStreamer and Qt have their own definition of GLsync in this case, but +they are not the same. + +We reported this issue to: + + * rpi-userland, to get the headers updated: + https://github.com/raspberrypi/userland/issues/469#issuecomment-1193864294 + + * gstreamer, to get their bogus definition of GLsync fixed: + https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/973 + +In the mean time, fix this by adding the missing definitions to +rpi-userland, so that GStreamer and Qt don't try to provide their own. + +Signed-off-by: Peter Seiderer +--- + interface/khronos/include/GLES2/gl2ext.h | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/interface/khronos/include/GLES2/gl2ext.h b/interface/khronos/include/GLES2/gl2ext.h +index 4eacf7f..96e87ec 100644 +--- a/interface/khronos/include/GLES2/gl2ext.h ++++ b/interface/khronos/include/GLES2/gl2ext.h +@@ -33,6 +33,19 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + extern "C" { + #endif + ++#ifndef __gl3_h_ ++/* These types are defined with reference to ++ * in the Apple extension spec, but here we use the Khronos ++ * portable types in khrplatform.h, and assume those types ++ * are always defined. ++ * If any other extensions using these types are defined, ++ * the typedefs must move out of this block and be shared. ++ */ ++typedef khronos_int64_t GLint64; ++typedef khronos_uint64_t GLuint64; ++typedef struct __GLsync *GLsync; ++#endif ++ + /* We want this */ + #ifndef GL_GLEXT_PROTOTYPES + #define GL_GLEXT_PROTOTYPES +-- +2.31.1 + diff --git a/package/rpi-userland/Config.in b/package/rpi-userland/Config.in new file mode 100644 index 00000000..4219bdb9 --- /dev/null +++ b/package/rpi-userland/Config.in @@ -0,0 +1,45 @@ +config BR2_PACKAGE_RPI_USERLAND + bool "rpi-userland" + depends on BR2_arm || BR2_aarch64 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_HAS_LIBEGL if BR2_arm + select BR2_PACKAGE_HAS_LIBGLES if BR2_arm + select BR2_PACKAGE_HAS_LIBOPENVG if BR2_arm + select BR2_PACKAGE_HAS_LIBOPENMAX if BR2_arm + help + Raspberry Pi Userland contains the necessary library to use + the VideoCore driver. + + Includes source for the ARM side code to interface to: EGL, + mmal, GLESv2, vcos, openmaxil, vchiq_arm, bcm_host, WFC, + OpenVG. + + https://github.com/raspberrypi/userland/ + +if BR2_PACKAGE_RPI_USERLAND && BR2_arm + +config BR2_PACKAGE_PROVIDES_LIBEGL + default "rpi-userland" + +config BR2_PACKAGE_PROVIDES_LIBGLES + default "rpi-userland" + +config BR2_PACKAGE_PROVIDES_LIBOPENVG + default "rpi-userland" + +config BR2_PACKAGE_PROVIDES_LIBOPENMAX + default "rpi-userland" + +config BR2_PACKAGE_RPI_USERLAND_HELLO + bool "hello_pi examples" + help + Install the hello-pi examples to test the HW (GPU, camera...) + +endif + +comment "rpi-userland needs a toolchain w/ C++, threads, dynamic library" + depends on BR2_arm || BR2_aarch64 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/package/rpi-userland/rpi-userland.hash b/package/rpi-userland/rpi-userland.hash new file mode 100644 index 00000000..b837cfe7 --- /dev/null +++ b/package/rpi-userland/rpi-userland.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 bb682f3c20bc5c7877531d5666c8dcc674a2f347aa792cf979dc0b07b6261e77 rpi-userland-14b90ff9d9f031391a299e6e006965d02bfd1bb1.tar.gz +sha256 bee6f1249175683d8610651706e1aa7dffcbfd3f9c4c05bc1e5ab34f313c2db5 LICENCE diff --git a/package/rpi-userland/rpi-userland.mk b/package/rpi-userland/rpi-userland.mk new file mode 100644 index 00000000..cb089451 --- /dev/null +++ b/package/rpi-userland/rpi-userland.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# rpi-userland +# +################################################################################ + +RPI_USERLAND_VERSION = 14b90ff9d9f031391a299e6e006965d02bfd1bb1 +RPI_USERLAND_SITE = $(call github,raspberrypi,userland,$(RPI_USERLAND_VERSION)) +RPI_USERLAND_LICENSE = BSD-3-Clause +RPI_USERLAND_LICENSE_FILES = LICENCE +RPI_USERLAND_INSTALL_STAGING = YES +RPI_USERLAND_CONF_OPTS = -DVMCS_INSTALL_PREFIX=/usr + +ifeq ($(BR2_arm),y) +RPI_USERLAND_PROVIDES = libegl libgles libopenmax libopenvg +endif + +ifeq ($(BR2_PACKAGE_LIBEXECINFO),y) +RPI_USERLAND_DEPENDENCIES += libexecinfo +endif + +ifeq ($(BR2_aarch64),y) +RPI_USERLAND_CONF_OPTS += -DARM64=ON +endif + +ifeq ($(BR2_PACKAGE_RPI_USERLAND_HELLO),y) + +RPI_USERLAND_CONF_OPTS += -DALL_APPS=ON + +define RPI_USERLAND_EXTRA_LIBS_TARGET + $(INSTALL) -m 0644 -D \ + $(@D)/build/lib/libilclient.so \ + $(TARGET_DIR)/usr/lib/libilclient.so + $(INSTALL) -m 0644 -D \ + $(@D)/build/lib/librevision.so \ + $(TARGET_DIR)/usr/lib/librevision.so +endef +RPI_USERLAND_POST_INSTALL_TARGET_HOOKS += RPI_USERLAND_EXTRA_LIBS_TARGET + +define RPI_USERLAND_EXTRA_LIBS_STAGING + $(INSTALL) -m 0644 -D \ + $(@D)/build/lib/libilclient.so \ + $(STAGING_DIR)/usr/lib/libilclient.so + $(INSTALL) -m 0644 -D \ + $(@D)/build/lib/librevision.so \ + $(STAGING_DIR)/usr/lib/librevision.so +endef +RPI_USERLAND_POST_INSTALL_STAGING_HOOKS += RPI_USERLAND_EXTRA_LIBS_STAGING + +else + +RPI_USERLAND_CONF_OPTS += -DALL_APPS=OFF + +endif # BR2_PACKAGE_RPI_USERLAND_HELLO + +define RPI_USERLAND_POST_TARGET_CLEANUP + rm -Rf $(TARGET_DIR)/usr/src +endef +RPI_USERLAND_POST_INSTALL_TARGET_HOOKS += RPI_USERLAND_POST_TARGET_CLEANUP + +$(eval $(cmake-package)) diff --git a/package/rpm/0001-fix-var-declare-in-label-error.patch b/package/rpm/0001-fix-var-declare-in-label-error.patch new file mode 100644 index 00000000..648040c6 --- /dev/null +++ b/package/rpm/0001-fix-var-declare-in-label-error.patch @@ -0,0 +1,40 @@ +From b960c0b43a080287a7c13533eeb2d9f288db1414 Mon Sep 17 00:00:00 2001 +From: Florian Festi +Date: Thu, 16 Mar 2023 19:05:04 +0100 +Subject: [PATCH] Fix compiler error on clang + +Turns out variable declarations are not allowed after a label, even in +C99. And while some compilers don't seem to care others do. + +Moving the declaration of mayopen to the start of the function to avoid +this problem. + +Resolves: #2435 + +Upstream: b960c0b43a080287a7c13533eeb2d9f288db1414 +Signed-off-by: James Knight +--- + lib/fsm.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/lib/fsm.c b/lib/fsm.c +index 5671ac642d..183293edb0 100644 +--- a/lib/fsm.c ++++ b/lib/fsm.c +@@ -879,6 +879,7 @@ int rpmPackageFilesInstall(rpmts ts, rpmte te, rpmfiles files, + int nodigest = (rpmtsFlags(ts) & RPMTRANS_FLAG_NOFILEDIGEST) ? 1 : 0; + int nofcaps = (rpmtsFlags(ts) & RPMTRANS_FLAG_NOCAPS) ? 1 : 0; + int firstlinkfile = -1; ++ int mayopen = 0; + char *tid = NULL; + struct filedata_s *fdata = xcalloc(fc, sizeof(*fdata)); + struct filedata_s *firstlink = NULL; +@@ -1016,7 +1017,7 @@ int rpmPackageFilesInstall(rpmts ts, rpmte te, rpmfiles files, + + setmeta: + /* Special files require path-based ops */ +- int mayopen = S_ISREG(fp->sb.st_mode) || S_ISDIR(fp->sb.st_mode); ++ mayopen = S_ISREG(fp->sb.st_mode) || S_ISDIR(fp->sb.st_mode); + if (!rc && fd == -1 && mayopen) { + int flags = O_RDONLY; + /* Only follow safe symlinks, and never on temporary files */ diff --git a/package/rpm/Config.in b/package/rpm/Config.in new file mode 100644 index 00000000..8730e152 --- /dev/null +++ b/package/rpm/Config.in @@ -0,0 +1,36 @@ +comment "rpm needs a toolchain w/ dynamic library, threads and lua >= 5.3" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \ + || !BR2_PACKAGE_LUA || BR2_PACKAGE_LUA_5_1 + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + depends on BR2_USE_MMU + +config BR2_PACKAGE_RPM + bool "rpm" + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + depends on BR2_PACKAGE_LUA && !BR2_PACKAGE_LUA_5_1 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_LIBGCRYPT + select BR2_PACKAGE_FILE + select BR2_PACKAGE_POPT + select BR2_PACKAGE_ZLIB + help + The RPM Package Manager (RPM). + + http://www.rpm.org/ + +if BR2_PACKAGE_RPM + +comment "rpm2archive support needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +config BR2_PACKAGE_RPM_RPM2ARCHIVE + bool "rpm2archive command" + default y + depends on BR2_USE_WCHAR + select BR2_PACKAGE_LIBARCHIVE + help + Enable rpm2archive + +endif diff --git a/package/rpm/rpm.hash b/package/rpm/rpm.hash new file mode 100644 index 00000000..fd03f062 --- /dev/null +++ b/package/rpm/rpm.hash @@ -0,0 +1,5 @@ +# From https://rpm.org/wiki/Releases/4.18.1.html +sha256 37f3b42c0966941e2ad3f10fde3639824a6591d07197ba8fd0869ca0779e1f56 rpm-4.18.1.tar.bz2 + +# Hash for license file +sha256 171d94d9f1641316bff7f157a903237dc69cdb5fca405fed8c832c76ed8370f9 COPYING diff --git a/package/rpm/rpm.mk b/package/rpm/rpm.mk new file mode 100644 index 00000000..c66ce699 --- /dev/null +++ b/package/rpm/rpm.mk @@ -0,0 +1,125 @@ +################################################################################ +# +# rpm +# +################################################################################ + +RPM_VERSION_MAJOR = 4.18 +RPM_VERSION = $(RPM_VERSION_MAJOR).1 +RPM_SOURCE = rpm-$(RPM_VERSION).tar.bz2 +RPM_SITE = http://ftp.rpm.org/releases/rpm-$(RPM_VERSION_MAJOR).x +RPM_DEPENDENCIES = \ + host-pkgconf \ + $(if $(BR2_PACKAGE_BZIP2),bzip2) \ + $(if $(BR2_PACKAGE_ELFUTILS),elfutils) \ + file \ + lua \ + popt \ + $(if $(BR2_PACKAGE_XZ),xz) \ + zlib \ + $(TARGET_NLS_DEPENDENCIES) +RPM_LICENSE = GPL-2.0 or LGPL-2.0 (library only) +RPM_LICENSE_FILES = COPYING +RPM_CPE_ID_VENDOR = rpm +RPM_SELINUX_MODULES = rpm + +# Don't set --{dis,en}-openmp as upstream wants to abort the build if +# --enable-openmp is provided and OpenMP is < 4.5: +# https://github.com/rpm-software-management/rpm/pull/1433 +RPM_CONF_OPTS = \ + --disable-rpath \ + --with-gnu-ld \ + --without-fapolicyd \ + --without-fsverity \ + --without-imaevm + +ifeq ($(BR2_PACKAGE_ACL),y) +RPM_DEPENDENCIES += acl +RPM_CONF_OPTS += --with-acl +else +RPM_CONF_OPTS += --without-acl +endif + +ifeq ($(BR2_PACKAGE_AUDIT),y) +RPM_DEPENDENCIES += audit +RPM_CONF_OPTS += --with-audit +else +RPM_CONF_OPTS += --without-audit +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +RPM_DEPENDENCIES += dbus +RPM_CONF_OPTS += --enable-plugins +else +RPM_CONF_OPTS += --disable-plugins +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +RPM_DEPENDENCIES += libcap +RPM_CONF_OPTS += --with-cap +else +RPM_CONF_OPTS += --without-cap +endif + +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +RPM_DEPENDENCIES += libgcrypt +RPM_CONF_OPTS += --with-crypto=libgcrypt +else +RPM_DEPENDENCIES += openssl +RPM_CONF_OPTS += --with-crypto=openssl +endif + +ifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y) +RPM_CONF_OPTS += --with-libintl-prefix=$(STAGING_DIR)/usr +else +RPM_CONF_OPTS += --without-libintl-prefix +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +RPM_DEPENDENCIES += libselinux +RPM_CONF_OPTS += --with-selinux +else +RPM_CONF_OPTS += --without-selinux +endif + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +RPM_DEPENDENCIES += python3 +RPM_CONF_OPTS += --enable-python +else +RPM_CONF_OPTS += --disable-python +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +RPM_DEPENDENCIES += readline +RPM_CONF_OPTS += --with-readline +else +RPM_CONF_OPTS += --without-readline +endif + +ifeq ($(BR2_PACKAGE_SQLITE),y) +RPM_DEPENDENCIES += sqlite +RPM_CONF_OPTS += --enable-sqlite +else +RPM_CONF_OPTS += --disable-sqlite +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +RPM_DEPENDENCIES += zstd +RPM_CONF_OPTS += --enable-zstd +else +RPM_CONF_OPTS += --disable-zstd +endif + +ifeq ($(BR2_PACKAGE_RPM_RPM2ARCHIVE),y) +RPM_DEPENDENCIES += libarchive +RPM_CONF_OPTS += --with-archive +else +RPM_CONF_OPTS += --without-archive +endif + +# ac_cv_prog_cc_c99: RPM uses non-standard GCC extensions (ex. `asm`). +RPM_CONF_ENV = \ + ac_cv_prog_cc_c99='-std=gnu99' \ + LIBS=$(TARGET_NLS_LIBS) + +$(eval $(autotools-package)) diff --git a/package/rrdtool/0001-Fix-BUILD_DATE-in-rrdtool-help-output.patch b/package/rrdtool/0001-Fix-BUILD_DATE-in-rrdtool-help-output.patch new file mode 100644 index 00000000..9e5af9c1 --- /dev/null +++ b/package/rrdtool/0001-Fix-BUILD_DATE-in-rrdtool-help-output.patch @@ -0,0 +1,57 @@ +From e59f703bbcc0af949ee365206426b6394c340c6f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Wolfgang=20St=C3=B6ggl?= +Date: Wed, 23 Mar 2022 17:58:45 +0100 +Subject: [PATCH] Fix BUILD_DATE in rrdtool help output + +- This is a followup to #1102 +- Fixes segfault when running "rrdtool --help" +- Change DATE_FMT to the same date format as the __DATE__ macro [1]: + mmm dd yyyy + +[1] https://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html + +Upstream: https://github.com/oetiker/rrdtool-1.x/commit/e59f703bbcc0af949ee365206426b6394c340c6f + +Signed-off-by: Bernd Kuhls +--- + configure.ac | 2 +- + src/rrd_tool.c | 8 ++++++++ + 2 files changed, 9 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 4d2345855..5169b0d49 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -695,7 +695,7 @@ AC_MSG_RESULT(${COMP_PERL:-No Perl Modules will be built}) + + # Use reproducible build date and time + if test "$SOURCE_DATE_EPOCH"; then +- DATE_FMT="%d %b %Y %H:%M:%S" ++ DATE_FMT="%b %d %Y %H:%M:%S" + BUILD_DATE=$(LC_ALL=C date -u -d "@$SOURCE_DATE_EPOCH" "+$DATE_FMT") + AC_DEFINE_UNQUOTED([BUILD_DATE], ["$BUILD_DATE"], [Use reproducible build date]) + fi +diff --git a/src/rrd_tool.c b/src/rrd_tool.c +index 930d08272..cc6119d9a 100644 +--- a/src/rrd_tool.c ++++ b/src/rrd_tool.c +@@ -45,11 +45,19 @@ static void PrintUsage( + char *cmd) + { + ++#ifdef BUILD_DATE ++ const char *help_main = ++ N_("RRDtool %s" ++ " Copyright by Tobias Oetiker \n" ++ " Compiled %s\n\n" ++ "Usage: rrdtool [options] command command_options\n"); ++#else + const char *help_main = + N_("RRDtool %s" + " Copyright by Tobias Oetiker \n" + " Compiled %s %s\n\n" + "Usage: rrdtool [options] command command_options\n"); ++#endif + + const char *help_list = + N_ diff --git a/package/rrdtool/0002-Constify-argv-fix-warnings.patch b/package/rrdtool/0002-Constify-argv-fix-warnings.patch new file mode 100644 index 00000000..e41e729a --- /dev/null +++ b/package/rrdtool/0002-Constify-argv-fix-warnings.patch @@ -0,0 +1,1586 @@ +From b76e3c578f1e9f582e9c28f50d82b1f569602075 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michal=20Such=C3=A1nek?= +Date: Fri, 5 Jan 2024 15:31:48 +0100 +Subject: [PATCH] Constify argv, fix warnings. (#1242) + +* Fix perl warnings + + - cast POPs to void to avoid unused value warning + - declare functions that don't set RETVAL as returning void + +Signed-off-by: Michal Suchanek + +* Constify argv + +rrd has no business modifying the string pointed to by passed agrv, and +as far as gcc can see it does indeed not modify them because it compiles +with const argv. + +This fixes warnings when passing const strings into rrd, and avoids the +need to duplicate all strings in the tcl bindings. + +This fixes warnings like these: +[ 3s] prog/sensord/rrd.c: In function 'rrdInit': +[ 3s] prog/sensord/rrd.c:302:40: warning: cast discards 'const' qualifier from pointer target type [-Wcast-qual] +[ 3s] 302 | ret = rrd_create(argc, (char**) argv); +[ 3s] | ^ +[ 3s] prog/sensord/rrd.c: In function 'rrdUpdate': +[ 3s] prog/sensord/rrd.c:458:42: warning: cast discards 'const' qualifier from pointer target type [-Wcast-qual] +[ 3s] 458 | if ((ret = rrd_update(3, (char **) /* WEAK */ argv))) { +[ 3s] | ^ + +Signed-off-by: Michal Suchanek + +* tcl: Do not duplicate const strings + +--------- + +Signed-off-by: Michal Suchanek + +Upstream: https://github.com/oetiker/rrdtool-1.x/commit/b76e3c578f1e9f582e9c28f50d82b1f569602075 + +Signed-off-by: Bernd Kuhls +--- + CHANGES | 3 ++ + bindings/lua/rrdlua.c | 25 +++++----- + bindings/perl-shared/RRDs.xs | 36 +++++++------- + bindings/python/rrdtoolmodule.c | 38 +++++++-------- + bindings/ruby/main.c | 10 ++-- + bindings/tcl/tclrrd.c | 84 ++++++++------------------------- + src/optparse.c | 14 +++--- + src/optparse.h | 6 +-- + src/rrd.h | 38 +++++++-------- + src/rrd_cgi.c | 24 +++++----- + src/rrd_create.c | 2 +- + src/rrd_daemon.c | 12 ++--- + src/rrd_dump.c | 4 +- + src/rrd_fetch.c | 2 +- + src/rrd_first.c | 2 +- + src/rrd_flushcached.c | 2 +- + src/rrd_graph.c | 6 +-- + src/rrd_graph.h | 4 +- + src/rrd_graph_helper.c | 2 +- + src/rrd_info.c | 2 +- + src/rrd_last.c | 2 +- + src/rrd_lastupdate.c | 2 +- + src/rrd_list.c | 6 +-- + src/rrd_modify.c | 2 +- + src/rrd_modify.h | 2 +- + src/rrd_resize.c | 4 +- + src/rrd_restore.c | 2 +- + src/rrd_tool.c | 26 +++++----- + src/rrd_tune.c | 2 +- + src/rrd_update.c | 4 +- + src/rrd_xport.c | 2 +- + src/rrdupdate.c | 7 +-- + 32 files changed, 168 insertions(+), 209 deletions(-) + +diff --git a/bindings/lua/rrdlua.c b/bindings/lua/rrdlua.c +index d1a700641..2095c3b5b 100644 +--- a/bindings/lua/rrdlua.c ++++ b/bindings/lua/rrdlua.c +@@ -37,8 +37,8 @@ + extern void rrd_freemem(void *mem); + + extern int luaopen_rrd (lua_State * L); +-typedef int (*RRD_FUNCTION)(int, char **); +-typedef rrd_info_t *(RRD_FUNCTION_V)(int, char **); ++typedef int (*RRD_FUNCTION)(int, const char **); ++typedef rrd_info_t *(RRD_FUNCTION_V)(int, const char **); + + /**********************************************************/ + +@@ -49,9 +49,9 @@ static void reset_rrd_state(void) + rrd_clear_error(); + } + +-static char **make_argv(const char *cmd, lua_State * L) ++static const char **make_argv(const char *cmd, lua_State * L) + { +- char **argv; ++ const char **argv; + int i; + int argc = lua_gettop(L) + 1; + +@@ -60,13 +60,12 @@ static char **make_argv(const char *cmd, lua_State * L) + luaL_error(L, "Can't allocate memory for arguments array", cmd); + + /* fprintf(stderr, "Args:\n"); */ +- argv[0] = (char *) cmd; /* Dummy arg. Cast to (char *) because rrd */ +- /* functions don't expect (const * char) */ ++ argv[0] = cmd; + /* fprintf(stderr, "%s\n", argv[0]); */ + for (i=1; i + #include "../../src/rrd_tool.h" + #include "../../src/rrd_format.h" ++#include "../../src/unused.h" + + /* support pre-8.4 tcl */ + +@@ -41,47 +42,39 @@ extern int Tclrrd_SafeInit( + * Hence, we need to do some preparation before + * calling the rrd library functions. + */ +-static char **getopt_init( ++static const char **getopt_init( + int argc, + CONST84 char *argv[]) + { +- char **argv2; ++ const char **argv2; + int i; + + argv2 = calloc(argc, sizeof(char *)); + for (i = 0; i < argc; i++) { +- argv2[i] = strdup(argv[i]); ++ argv2[i] = argv[i]; + } + return argv2; + } + + static void getopt_cleanup( +- int argc, +- char **argv2) ++ int UNUSED(argc), ++ const char **argv2) + { +- int i; +- +- for (i = 0; i < argc; i++) { +- if (argv2[i] != NULL) { +- free(argv2[i]); +- } +- } +- free(argv2); ++ free((void *)argv2); + } + + static void getopt_free_element( +- char *argv2[], ++ const char *argv2[], + int argn) + { + if (argv2[argn] != NULL) { +- free(argv2[argn]); + argv2[argn] = NULL; + } + } + + static void getopt_squieeze( + int *argc, +- char *argv2[]) ++ const char *argv2[]) + { + int i, null_i = 0, argc_tmp = *argc; + +@@ -104,7 +97,7 @@ static int Rrd_Create( + CONST84 char *argv[]) + { + int argv_i; +- char **argv2; ++ const char **argv2; + char *parsetime_error = NULL; + time_t last_up = time(NULL) - 10; + long int long_tmp; +@@ -295,7 +288,7 @@ static int Rrd_Flushcached( + return TCL_ERROR; + } + +- rrd_flushcached(argc, (char**)argv); ++ rrd_flushcached(argc, argv); + + if (rrd_test_error()) { + Tcl_AppendResult(interp, "RRD Error: ", +@@ -380,7 +373,7 @@ static int Rrd_Update( + CONST84 char *argv[]) + { + int argv_i; +- char **argv2, *template = NULL; ++ const char **argv2, *template = NULL; + + argv2 = getopt_init(argc, argv); + +@@ -391,16 +384,10 @@ static int Rrd_Update( + Tcl_AppendResult(interp, "RRD Error: option '", + argv2[argv_i - 1], "' needs an argument", + (char *) NULL); +- if (template != NULL) { +- free(template); +- } + getopt_cleanup(argc, argv2); + return TCL_ERROR; + } +- if (template != NULL) { +- free(template); +- } +- template = strdup(argv2[argv_i]); ++ template = argv2[argv_i]; + getopt_free_element(argv2, argv_i - 1); + getopt_free_element(argv2, argv_i); + } else if (!strcmp(argv2[argv_i], "--")) { +@@ -409,9 +396,6 @@ static int Rrd_Update( + } else if (argv2[argv_i][0] == '-') { + Tcl_AppendResult(interp, "RRD Error: unknown option '", + argv2[argv_i], "'", (char *) NULL); +- if (template != NULL) { +- free(template); +- } + getopt_cleanup(argc, argv2); + return TCL_ERROR; + } +@@ -422,18 +406,12 @@ static int Rrd_Update( + if (argc < 2) { + Tcl_AppendResult(interp, "RRD Error: needs rrd filename", + (char *) NULL); +- if (template != NULL) { +- free(template); +- } + getopt_cleanup(argc, argv2); + return TCL_ERROR; + } + + rrd_update_r(argv2[1], template, argc - 2, (const char **)argv2 + 2); + +- if (template != NULL) { +- free(template); +- } + getopt_cleanup(argc, argv2); + + if (rrd_test_error()) { +@@ -454,7 +432,6 @@ static int Rrd_Info( + { + int status = TCL_OK; + rrd_info_t *data; +- char **argv2; + + /* TODO: support for rrdcached */ + if (argc != 2) { +@@ -463,9 +440,7 @@ static int Rrd_Info( + return TCL_ERROR; + } + +- argv2 = getopt_init(argc, argv); +- +- data = rrd_info_r(argv2[1]); ++ data = rrd_info_r(argv[1]); + + if (data) { + Tcl_SetObjResult(interp, convert_info(data)); +@@ -477,7 +452,6 @@ static int Rrd_Info( + status = TCL_ERROR; + } + +- getopt_cleanup(argc, argv2); + return status; + } + +@@ -488,7 +462,6 @@ static int Rrd_Lastupdate( + CONST84 char *argv[]) + { + time_t last_update; +- char **argv2; + char **ds_namv; + char **last_ds; + char s[30]; +@@ -502,8 +475,7 @@ static int Rrd_Lastupdate( + return TCL_ERROR; + } + +- argv2 = getopt_init(argc, argv); +- if (rrd_lastupdate_r(argv2[1], &last_update, ++ if (rrd_lastupdate_r(argv[1], &last_update, + &ds_cnt, &ds_namv, &last_ds) == 0) { + listPtr = Tcl_GetObjResult(interp); + for (i = 0; i < ds_cnt; i++) { +@@ -527,7 +499,6 @@ static int Rrd_Lastupdate( + free(ds_namv); + } + } +- getopt_cleanup(argc, argv2); + return TCL_OK; + } + +@@ -543,10 +514,8 @@ static int Rrd_Fetch( + char **ds_namv; + Tcl_Obj *listPtr; + char s[30]; +- char **argv2; + +- argv2 = getopt_init(argc, argv); +- if (rrd_fetch(argc, argv2, &start, &end, &step, ++ if (rrd_fetch(argc, argv, &start, &end, &step, + &ds_cnt, &ds_namv, &data) != -1) { + datai = data; + listPtr = Tcl_GetObjResult(interp); +@@ -562,7 +531,6 @@ static int Rrd_Fetch( + free(ds_namv); + free(data); + } +- getopt_cleanup(argc, argv2); + + if (rrd_test_error()) { + Tcl_AppendResult(interp, "RRD Error: ", +@@ -590,7 +558,7 @@ static int Rrd_Graph( + int rc, xsize, ysize; + double ymin, ymax; + char dimensions[50]; +- char **argv2; ++ const char **argv2; + CONST84 char *save; + + /* +@@ -692,11 +660,7 @@ static int Rrd_Tune( + int argc, + CONST84 char *argv[]) + { +- char **argv2; +- +- argv2 = getopt_init(argc, argv); +- rrd_tune(argc, argv2); +- getopt_cleanup(argc, argv2); ++ rrd_tune(argc, argv); + + if (rrd_test_error()) { + Tcl_AppendResult(interp, "RRD Error: ", +@@ -716,11 +680,7 @@ static int Rrd_Resize( + int argc, + CONST84 char *argv[]) + { +- char **argv2; +- +- argv2 = getopt_init(argc, argv); +- rrd_resize(argc, argv2); +- getopt_cleanup(argc, argv2); ++ rrd_resize(argc, argv); + + if (rrd_test_error()) { + Tcl_AppendResult(interp, "RRD Error: ", +@@ -740,11 +700,7 @@ static int Rrd_Restore( + int argc, + CONST84 char *argv[]) + { +- char **argv2; +- +- argv2 = getopt_init(argc, argv); +- rrd_restore(argc, argv2); +- getopt_cleanup(argc, argv2); ++ rrd_restore(argc, argv); + + if (rrd_test_error()) { + Tcl_AppendResult(interp, "RRD Error: ", +diff --git a/src/optparse.c b/src/optparse.c +index 9040ba8b2..79a3efe11 100644 +--- a/src/optparse.c ++++ b/src/optparse.c +@@ -10,7 +10,7 @@ + #define options_argv(i) \ + ((i) < options->argc ? options->argv[i] : NULL) + +-void optparse_init(struct optparse *options, int argc, char **argv) ++void optparse_init(struct optparse *options, int argc, const char **argv) + { + options->argv = argv; + options->argc = argc; +@@ -42,7 +42,7 @@ is_longopt(const char *arg) + static void + permute(struct optparse *options, int index) + { +- char *nonoption = options->argv[index]; ++ const char *nonoption = options->argv[index]; + for (int i = index; i < options->optind - 1; i++) + options->argv[i] = options->argv[i + 1]; + options->argv[options->optind - 1] = nonoption; +@@ -67,7 +67,7 @@ int optparse(struct optparse *options, const char *optstring) + options->errmsg[0] = '\0'; + options->optopt = 0; + options->optarg = NULL; +- char *option = options_argv(options->optind); ++ const char *option = options_argv(options->optind); + if (option == NULL) { + return -1; + } else if (is_dashdash(option)) { +@@ -88,7 +88,7 @@ int optparse(struct optparse *options, const char *optstring) + option += options->subopt + 1; + options->optopt = option[0]; + int type = argtype(optstring, option[0]); +- char *next = options_argv(options->optind + 1); ++ const char *next = options_argv(options->optind + 1); + switch (type) { + case -1: + opterror(options, "invalid option -- '%c'", option[0]); +@@ -128,10 +128,10 @@ int optparse(struct optparse *options, const char *optstring) + return 0; + } + +-char *optparse_arg(struct optparse *options) ++const char *optparse_arg(struct optparse *options) + { + options->subopt = 0; +- char *option = options->argv[options->optind]; ++ const char *option = options->argv[options->optind]; + if (option != NULL) + options->optind++; + return option; +@@ -222,7 +222,7 @@ optparse_long(struct optparse *options, + int *longindex) + { + // printf("%i < %i\n",options->optind,options->argc); +- char *option = options_argv(options->optind); ++ const char *option = options_argv(options->optind); + if (option == NULL) { + return -1; + } else if (is_dashdash(option)) { +diff --git a/src/optparse.h b/src/optparse.h +index c4b0ec19c..7a0bb3885 100644 +--- a/src/optparse.h ++++ b/src/optparse.h +@@ -44,7 +44,7 @@ + */ + + struct optparse { +- char **argv; ++ const char **argv; + int argc; + int permute; + int optind; +@@ -65,7 +65,7 @@ struct optparse_long { + /** + * Initializes the parser state. + */ +-void optparse_init(struct optparse *options, int argc, char **argv); ++void optparse_init(struct optparse *options, int argc, const char **argv); + + /** + * Read the next option in the argv array. +@@ -98,6 +98,6 @@ optparse_long(struct optparse *options, + * subcommand returned by optparse_arg(). This function allows you to + * ignore the value of optind. + */ +-char *optparse_arg(struct optparse *options); ++const char *optparse_arg(struct optparse *options); + + #endif +diff --git a/src/rrd.h b/src/rrd.h +index 184887ccc..b40f9a449 100644 +--- a/src/rrd.h ++++ b/src/rrd.h +@@ -155,10 +155,10 @@ extern "C" { + /* main function blocks */ + int rrd_create( + int, +- char **); ++ const char **); + rrd_info_t *rrd_info( + int, +- char **); ++ const char **); + rrd_info_t *rrd_info_push( + rrd_info_t *, + char *, +@@ -170,19 +170,19 @@ extern "C" { + rrd_info_t *); + char *rrd_list( + int, +- char **); ++ const char **); + char *rrd_list_r( + int, +- char *dirname); ++ const char *dirname); + int rrd_update( + int, +- char **); ++ const char **); + rrd_info_t *rrd_update_v( + int, +- char **); ++ const char **); + int rrd_graph( + int, +- char **, ++ const char **, + char ***, + int *, + int *, +@@ -191,11 +191,11 @@ extern "C" { + double *); + rrd_info_t *rrd_graph_v( + int, +- char **); ++ const char **); + + int rrd_fetch( + int, +- char **, ++ const char **, + time_t *, + time_t *, + unsigned long *, +@@ -204,32 +204,32 @@ extern "C" { + rrd_value_t **); + int rrd_restore( + int, +- char **); ++ const char **); + int rrd_dump( + int, +- char **); ++ const char **); + int rrd_tune( + int, +- char **); ++ const char **); + time_t rrd_last( + int, +- char **); ++ const char **); + int rrd_lastupdate( + int argc, +- char **argv); ++ const char **argv); + time_t rrd_first( + int, +- char **); ++ const char **); + int rrd_resize( + int, +- char **); ++ const char **); + char *rrd_strversion( + void); + double rrd_version( + void); + int rrd_xport( + int, +- char **, ++ const char **, + int *, + time_t *, + time_t *, +@@ -239,7 +239,7 @@ extern "C" { + rrd_value_t **); + int rrd_flushcached( + int argc, +- char **argv); ++ const char **argv); + + void rrd_freemem( + void *mem); +@@ -323,7 +323,7 @@ extern "C" { + const char **argv); + int rrd_dump_opt_r( + const char *filename, +- char *outname, ++ const char *outname, + int opt_noheader); + int rrd_dump_r( + const char *filename, +diff --git a/src/rrd_cgi.c b/src/rrd_cgi.c +index b82c310db..14a4f511a 100644 +--- a/src/rrd_cgi.c ++++ b/src/rrd_cgi.c +@@ -102,7 +102,7 @@ static char *rrdstrip( + static char *scanargs( + char *line, + int *argc, +- char ***args); ++ const char ***args); + + /* format at-time specified times using strftime */ + static char *printstrftime( +@@ -317,7 +317,7 @@ static const char *putvar( + } + + /* expand those RRD:* directives that can be used recursively */ +-static char *rrd_expand_vars( ++static const char *rrd_expand_vars( + char *buffer) + { + int i; +@@ -434,7 +434,7 @@ static int readfile( + + int main( + int argc, +- char *argv[]) ++ const char *argv[]) + { + char *buffer; + long i; +@@ -926,7 +926,7 @@ static char *drawgraph( + } + calfree(); + if (rrd_graph +- (argc + 1, (char **) args - 1, &calcpr, &xsize, &ysize, NULL, &ymin, ++ (argc + 1, args - 1, &calcpr, &xsize, &ysize, NULL, &ymin, + &ymax) != -1) { + return stralloc(calcpr[0]); + } else { +@@ -973,7 +973,7 @@ static char *printtimelast( + /* not raising argc in step with args - 1 since the last argument + will be used below for strftime */ + +- last = rrd_last(argc, (char **) args - 1); ++ last = rrd_last(argc, args - 1); + if (rrd_test_error()) { + char err[4096]; + +@@ -1027,7 +1027,7 @@ static char *printtimenow( + static char *scanargs( + char *line, + int *argument_count, +- char ***arguments) ++ const char ***arguments) + { + char *getP; /* read cursor */ + char *putP; /* write cursor */ +@@ -1039,8 +1039,8 @@ static char *scanargs( + + /* local array of arguments while parsing */ + int argc = 1; +- char **argv; +- char **argv_tmp; /* temp variable for realloc() */ ++ const char **argv; ++ const char **argv_tmp; /* temp variable for realloc() */ + + #ifdef DEBUG_PARSER + printf("<-- scanargs(%s) -->\n", line); +@@ -1051,7 +1051,7 @@ static char *scanargs( + + /* create initial argument array of char pointers */ + argsz = 32; +- argv = (char **) malloc(argsz * sizeof(char *)); ++ argv = malloc(argsz * sizeof(char *)); + if (!argv) { + return NULL; + } +@@ -1146,7 +1146,7 @@ static char *scanargs( + if (argc == argsz - 2) { + /* resize argument array */ + argsz *= 2; +- argv_tmp = (char **) rrd_realloc(argv, argsz * sizeof(char *)); ++ argv_tmp = rrd_realloc(argv, argsz * sizeof(char *)); + if (*argv_tmp == NULL) { + return NULL; + } +@@ -1213,7 +1213,7 @@ static int parse( + /* the name of the vairable ... */ + char *val; + long valln; +- char **args; ++ const char **args; + char *end; + long end_offset; + int argc; +@@ -1264,7 +1264,7 @@ static int parse( + /* make sure we do not shrink the mallocd block */ + size_t newbufsize = i + strlen(end) + valln + 1; + +- *buf = (char *) rrd_realloc(*buf, newbufsize); ++ *buf = rrd_realloc(*buf, newbufsize); + + if (*buf == NULL) { + perror("Realoc buf:"); +diff --git a/src/rrd_create.c b/src/rrd_create.c +index f9bad0866..919b4195a 100644 +--- a/src/rrd_create.c ++++ b/src/rrd_create.c +@@ -76,7 +76,7 @@ static void parseGENERIC_DS( + + int rrd_create( + int argc, +- char **argv) ++ const char **argv) + { + struct optparse_long longopts[] = { + {"start", 'b', OPTPARSE_REQUIRED}, +diff --git a/src/rrd_daemon.c b/src/rrd_daemon.c +index 751798aa1..21c38a11d 100644 +--- a/src/rrd_daemon.c ++++ b/src/rrd_daemon.c +@@ -1877,7 +1877,7 @@ static int handle_request_tune( + HANDLER_PROTO) + { /* {{{ */ + int status; +- char** argv = NULL; ++ const char** argv = NULL; + int argc, argc_tmp; + char* i; + int rc; +@@ -1916,7 +1916,7 @@ static int handle_request_tune( + goto done; + } + +- if ((argv = (char **) malloc(argc * sizeof(char*))) == NULL) { ++ if ((argv = malloc(argc * sizeof(char*))) == NULL) { + rc = send_response(sock, RESP_ERR, "%s\n", rrd_strerror(ENOMEM)); + goto done; + } +@@ -1927,7 +1927,7 @@ static int handle_request_tune( + argc_tmp += 1; + } + +- status = rrd_tune_r(file, argc, (const char **)argv); ++ status = rrd_tune_r(file, argc, argv); + if (status != 0) { + rc = send_response(sock, RESP_ERR, "Got error %s\n", rrd_get_error()); + goto done; +@@ -1935,7 +1935,7 @@ static int handle_request_tune( + rc = send_response(sock, RESP_OK, "Success\n"); + done: + free(file); +- free(argv); ++ free((void *)argv); + return rc; + } + +@@ -4505,7 +4505,7 @@ static int cleanup( + + static int read_options( + int argc, +- char **argv) ++ const char **argv) + { /* {{{ */ + struct optparse_long longopts[] = { + {NULL, 'a', OPTPARSE_REQUIRED}, +@@ -5050,7 +5050,7 @@ static int read_options( + + int main( + int argc, +- char **argv) ++ const char **argv) + { + int status; + +diff --git a/src/rrd_dump.c b/src/rrd_dump.c +index a4490d594..c58e0ee4a 100644 +--- a/src/rrd_dump.c ++++ b/src/rrd_dump.c +@@ -497,7 +497,7 @@ static size_t rrd_dump_opt_cb_fileout( + + int rrd_dump_opt_r( + const char *filename, +- char *outname, ++ const char *outname, + int opt_noheader) + { + FILE *out_file; +@@ -543,7 +543,7 @@ int rrd_dump_r( + + int rrd_dump( + int argc, +- char **argv) ++ const char **argv) + { + int opt; + struct optparse_long longopts[] = { +diff --git a/src/rrd_fetch.c b/src/rrd_fetch.c +index c739bfc45..54780f19b 100644 +--- a/src/rrd_fetch.c ++++ b/src/rrd_fetch.c +@@ -61,7 +61,7 @@ + + int rrd_fetch( + int argc, +- char **argv, ++ const char **argv, + time_t *start, + time_t *end, /* which time frame do you want ? + * will be changed to represent reality */ +diff --git a/src/rrd_first.c b/src/rrd_first.c +index a696c5c38..f3dde5404 100644 +--- a/src/rrd_first.c ++++ b/src/rrd_first.c +@@ -13,7 +13,7 @@ + + time_t rrd_first( + int argc, +- char **argv) ++ const char **argv) + { + struct optparse_long longopts[] = { + {"rraindex", 129, OPTPARSE_REQUIRED}, +diff --git a/src/rrd_flushcached.c b/src/rrd_flushcached.c +index 090bca749..3bf6cd29d 100644 +--- a/src/rrd_flushcached.c ++++ b/src/rrd_flushcached.c +@@ -22,7 +22,7 @@ + #include "rrd_tool.h" + #include "rrd_client.h" + +-int rrd_flushcached (int argc, char **argv) ++int rrd_flushcached (int argc, const char **argv) + { + struct optparse_long longopts[] = { + {"daemon", 'd', OPTPARSE_REQUIRED}, +diff --git a/src/rrd_graph.c b/src/rrd_graph.c +index b32d45085..46511e9a3 100644 +--- a/src/rrd_graph.c ++++ b/src/rrd_graph.c +@@ -4607,7 +4607,7 @@ int scan_for_col( + /* Now just a wrapper around rrd_graph_v */ + int rrd_graph( + int argc, +- char **argv, ++ const char **argv, + char ***prdata, + int *xsize, + int *ysize, +@@ -4690,7 +4690,7 @@ int rrd_graph( + + rrd_info_t *rrd_graph_v( + int argc, +- char **argv) ++ const char **argv) + { + image_desc_t im; + rrd_info_t *grinfo; +@@ -4953,7 +4953,7 @@ void rrd_graph_init( + + void rrd_graph_options( + int argc, +- char *argv[], ++ const char **argv, + struct optparse *poptions, + image_desc_t *im) + { +diff --git a/src/rrd_graph.h b/src/rrd_graph.h +index 4df32ec66..083cf3800 100644 +--- a/src/rrd_graph.h ++++ b/src/rrd_graph.h +@@ -473,12 +473,12 @@ void time_clean( + + void rrd_graph_options( + int, +- char **, ++ const char **, + struct optparse *, + image_desc_t *); + void rrd_graph_script( + int, +- char **, ++ const char **, + image_desc_t *const, + int); + int rrd_graph_color( +diff --git a/src/rrd_graph_helper.c b/src/rrd_graph_helper.c +index 99cdefa65..ba90e1a6c 100644 +--- a/src/rrd_graph_helper.c ++++ b/src/rrd_graph_helper.c +@@ -1952,7 +1952,7 @@ static int parse_xport( + + void rrd_graph_script( + int argc, +- char *argv[], ++ const char **argv, + image_desc_t *const im, + int optno) + { +diff --git a/src/rrd_info.c b/src/rrd_info.c +index c0c6f68c7..eb0d4e4de 100644 +--- a/src/rrd_info.c ++++ b/src/rrd_info.c +@@ -82,7 +82,7 @@ rrd_info_t + + rrd_info_t *rrd_info( + int argc, +- char **argv) ++ const char **argv) + { + struct optparse_long longopts[] = { + {"daemon", 'd', OPTPARSE_REQUIRED}, +diff --git a/src/rrd_last.c b/src/rrd_last.c +index 026a1e828..1aae72512 100644 +--- a/src/rrd_last.c ++++ b/src/rrd_last.c +@@ -11,7 +11,7 @@ + + time_t rrd_last( + int argc, +- char **argv) ++ const char **argv) + { + char *opt_daemon = NULL; + time_t lastupdate; +diff --git a/src/rrd_lastupdate.c b/src/rrd_lastupdate.c +index ab30dcf67..4f7f4770e 100644 +--- a/src/rrd_lastupdate.c ++++ b/src/rrd_lastupdate.c +@@ -14,7 +14,7 @@ + #include "rrd_client.h" + #include + +-int rrd_lastupdate (int argc, char **argv) ++int rrd_lastupdate (int argc, const char **argv) + { + struct optparse_long longopts[] = { + {"daemon", 'd', OPTPARSE_REQUIRED}, +diff --git a/src/rrd_list.c b/src/rrd_list.c +index e743b9b7d..6e96220ea 100644 +--- a/src/rrd_list.c ++++ b/src/rrd_list.c +@@ -37,7 +37,7 @@ static char *move_past_prefix(const char *prefix, const char *string) + return (char *)&(string[index]); + } + +-static char *rrd_list_rec(int recursive, char *root, char *dirname) ++static char *rrd_list_rec(int recursive, const char *root, const char *dirname) + { + #define SANE_ASPRINTF2(_dest_str, _format, ...) \ + if (asprintf(&_dest_str, _format, __VA_ARGS__) == -1) { \ +@@ -138,7 +138,7 @@ static char *rrd_list_rec(int recursive, char *root, char *dirname) + return out; + } + +-char *rrd_list_r(int recursive, char *dirname) ++char *rrd_list_r(int recursive, const char *dirname) + { + #define SANE_ASPRINTF(_dest_str, _format, ...) \ + if (asprintf(&_dest_str, _format, __VA_ARGS__) == -1) { \ +@@ -240,7 +240,7 @@ char *rrd_list_r(int recursive, char *dirname) + return rrd_list_rec(recursive, dirname, dirname); + } + +-char *rrd_list(int argc, char **argv) ++char *rrd_list(int argc, const char **argv) + { + char *opt_daemon = NULL; + int status; +diff --git a/src/rrd_modify.c b/src/rrd_modify.c +index a2b07f640..70ac9e77f 100644 +--- a/src/rrd_modify.c ++++ b/src/rrd_modify.c +@@ -1297,7 +1297,7 @@ static int add_rras(const rrd_t *in, rrd_t *out, const int *ds_map, + } + + int handle_modify(const rrd_t *in, const char *outfilename, +- int argc, char **argv, int optidx, ++ int argc, const char **argv, int optidx, + int newstep) { + // parse add/remove options + int rc = -1; +diff --git a/src/rrd_modify.h b/src/rrd_modify.h +index 52d8789be..64a39926e 100644 +--- a/src/rrd_modify.h ++++ b/src/rrd_modify.h +@@ -28,7 +28,7 @@ typedef struct { + } rra_mod_op_t; + + int handle_modify(const rrd_t *in, const char *outfilename, +- int argc, char **argv, int optind, ++ int argc, const char **argv, int optind, + int newstep); + + typedef union { +diff --git a/src/rrd_resize.c b/src/rrd_resize.c +index fb75d81ff..742e6d141 100644 +--- a/src/rrd_resize.c ++++ b/src/rrd_resize.c +@@ -12,9 +12,9 @@ + + int rrd_resize( + int argc, +- char **argv) ++ const char **argv) + { +- char *infilename, outfilename[11] = "resize.rrd"; ++ const char *infilename, outfilename[11] = "resize.rrd"; + rrd_t rrdold, rrdnew; + rrd_value_t buffer; + int version; +diff --git a/src/rrd_restore.c b/src/rrd_restore.c +index 85d481e0c..ebef5efe8 100644 +--- a/src/rrd_restore.c ++++ b/src/rrd_restore.c +@@ -1378,7 +1378,7 @@ int write_file( + + int rrd_restore( + int argc, +- char **argv) ++ const char **argv) + { + struct optparse_long longopts[] = { + {"range-check", 'r', OPTPARSE_NONE}, +diff --git a/src/rrd_tool.c b/src/rrd_tool.c +index cc6119d9a..56321ee1a 100644 +--- a/src/rrd_tool.c ++++ b/src/rrd_tool.c +@@ -22,16 +22,16 @@ + + + static void PrintUsage( +- char *cmd); ++ const char *cmd); + static int CountArgs( + char *aLine); + static int CreateArgs( ++ const char *, + char *, +- char *, +- char **); ++ const char **); + static int HandleInputLine( + int, +- char **, ++ const char **, + FILE *); + int RemoteMode = 0; + int ChangeRoot = 0; +@@ -42,7 +42,7 @@ int ChangeRoot = 0; + + + static void PrintUsage( +- char *cmd) ++ const char *cmd) + { + + #ifdef BUILD_DATE +@@ -443,11 +443,11 @@ static char *fgetslong( + + int main( + int argc, +- char *argv[]) ++ const char *argv[]) + { +- char **myargv; ++ const char **myargv; + char *aLine; +- char *firstdir = ""; ++ const char *firstdir = ""; + + #ifdef MUST_DISABLE_SIGFPE + signal(SIGFPE, SIG_IGN); +@@ -526,7 +526,7 @@ int main( + printf("ERROR: not enough arguments\n"); + continue; + } +- if ((myargv = (char **) malloc((argc + 1) * ++ if ((myargv = malloc((argc + 1) * + sizeof(char *))) == NULL) { + perror("malloc"); + exit(1); +@@ -572,7 +572,7 @@ int main( + resolving them portably is not really simple. */ + static int HandleInputLine( + int argc, +- char **argv, ++ const char **argv, + FILE * out) + { + #if defined(HAVE_OPENDIR) && defined (HAVE_READDIR) +@@ -887,12 +887,12 @@ static int CountArgs( + * CreateArgs - take a string (aLine) and tokenize + */ + static int CreateArgs( +- char *pName, ++ const char *pName, + char *aLine, +- char **argv) ++ const char **argv) + { + char *getP, *putP; +- char **pargv = argv; ++ const char **pargv = argv; + char Quote = 0; + int inArg = 0; + int len; +diff --git a/src/rrd_tune.c b/src/rrd_tune.c +index 198817f37..dd3f3f7cb 100644 +--- a/src/rrd_tune.c ++++ b/src/rrd_tune.c +@@ -71,7 +71,7 @@ static int set_hwsmootharg( + + int rrd_tune( + int argc, +- char **argv) ++ const char **argv) + { + char *opt_daemon = NULL; + const char *in_filename = NULL; +diff --git a/src/rrd_update.c b/src/rrd_update.c +index fbbe2820a..bb9a0602c 100644 +--- a/src/rrd_update.c ++++ b/src/rrd_update.c +@@ -299,7 +299,7 @@ static void initialize_time( + + rrd_info_t *rrd_update_v( + int argc, +- char **argv) ++ const char **argv) + { + struct optparse_long longopts[] = { + {"template", 't', OPTPARSE_REQUIRED}, +@@ -674,7 +674,7 @@ static int rrd_template_update(const char *filename, /* {{{ */ + + int rrd_update( + int argc, +- char **argv) ++ const char **argv) + { + struct optparse_long longopts[] = { + {"template", 't', OPTPARSE_REQUIRED}, +diff --git a/src/rrd_xport.c b/src/rrd_xport.c +index d15d33dd9..93c02f926 100644 +--- a/src/rrd_xport.c ++++ b/src/rrd_xport.c +@@ -73,7 +73,7 @@ static int rrd_xport_format_addprints( + + int rrd_xport( + int argc, +- char **argv, ++ const char **argv, + int UNUSED(*xsize), + time_t *start, + time_t *end, /* which time frame do you want ? +diff --git a/src/rrdupdate.c b/src/rrdupdate.c +index cbbf48cc1..e368516c8 100644 +--- a/src/rrdupdate.c ++++ b/src/rrdupdate.c +@@ -20,19 +20,20 @@ int main( + int argc, + char **argv) + { ++ const char **cargv = (const char **)argv; + char *name=basename(argv[0]); + rrd_info_t *info; + + if (!strcmp(name, "rrdcreate")) { +- rrd_create(argc, argv); ++ rrd_create(argc, cargv); + } + else if (!strcmp(name, "rrdinfo")) { +- info=rrd_info(argc, argv); ++ info=rrd_info(argc, cargv); + rrd_info_print(info); + rrd_info_free(info); + } + else { +- rrd_update(argc, argv); ++ rrd_update(argc, cargv); + } + + if (rrd_test_error()) { diff --git a/package/rrdtool/Config.in b/package/rrdtool/Config.in new file mode 100644 index 00000000..d954fd12 --- /dev/null +++ b/package/rrdtool/Config.in @@ -0,0 +1,38 @@ +config BR2_PACKAGE_RRDTOOL + bool "rrdtool" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + help + RRDtool is the OpenSource industry standard, high performance + data logging and graphing system for time series data. + + http://oss.oetiker.ch/rrdtool/ + +if BR2_PACKAGE_RRDTOOL + +config BR2_PACKAGE_RRDTOOL_RRDGRAPH + bool "rrd_graph" + default y + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # pango -> harfbuzz + depends on BR2_INSTALL_LIBSTDCPP # freetype support from pango + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_CAIRO_PNG + select BR2_PACKAGE_CAIRO_ZLIB + select BR2_PACKAGE_PANGO + help + This enables the graphing capabilities ('rrdgraph'). + Without this it will only act as a database backend. + +comment "rrd_graph support needs a toolchain w/ C++, gcc >= 4.9" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + +endif + +comment "rrdtool needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/rrdtool/rrdtool.hash b/package/rrdtool/rrdtool.hash new file mode 100644 index 00000000..1a6d18ae --- /dev/null +++ b/package/rrdtool/rrdtool.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 bd37614137d7a8dc523359648eb2a81631a34fd91a82ed5581916a52c08433f4 rrdtool-1.8.0.tar.gz +sha256 ab6b4646e9e01f1ec287c29c351c886c4cb7f945c11efc0a1be9f6e5e6cc5320 COPYRIGHT +sha256 d8c320ffc0030d1b096ae4732b50d2b811cf95e9a9b7377c1127b2563e0a0388 LICENSE diff --git a/package/rrdtool/rrdtool.mk b/package/rrdtool/rrdtool.mk new file mode 100644 index 00000000..f0cffd01 --- /dev/null +++ b/package/rrdtool/rrdtool.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# rrdtool +# +################################################################################ + +RRDTOOL_VERSION = 1.8.0 +RRDTOOL_SITE = https://github.com/oetiker/rrdtool-1.x/releases/download/v$(RRDTOOL_VERSION) +RRDTOOL_LICENSE = GPL-2.0+ with FLOSS license exceptions as explained in COPYRIGHT +RRDTOOL_LICENSE_FILES = COPYRIGHT LICENSE +RRDTOOL_DEPENDENCIES = host-pkgconf libglib2 $(TARGET_NLS_DEPENDENCIES) + +# 0001-Fix-BUILD_DATE-in-rrdtool-help-output.patch +# autoreconf also needed to avoid link failure due to missing -lintl, +# autopoint needed as a consequence of autoreconf +RRDTOOL_AUTORECONF = YES +RRDTOOL_AUTOPOINT = YES + +RRDTOOL_INSTALL_STAGING = YES +RRDTOOL_CONF_OPTS = \ + --disable-examples \ + --disable-libdbi \ + --disable-librados \ + --disable-libwrap \ + --disable-lua \ + --disable-perl \ + --disable-python \ + --disable-ruby \ + --disable-tcl + +ifeq ($(BR2_PACKAGE_RRDTOOL_RRDGRAPH),y) +RRDTOOL_DEPENDENCIES += cairo pango +else +RRDTOOL_CONF_OPTS += --disable-rrd_graph +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +RRDTOOL_DEPENDENCIES += libxml2 +else +RRDTOOL_CONF_OPTS += --disable-rrd_restore +endif + +$(eval $(autotools-package)) diff --git a/package/rs485conf/Config.in b/package/rs485conf/Config.in new file mode 100644 index 00000000..ff0b7432 --- /dev/null +++ b/package/rs485conf/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_RS485CONF + bool "rs485conf" + help + rs485conf is intended to be used on embedded boards with RS485 + interface. It can show as well as modify RS485 configuration + parameters of TTY device with easy to use command line + options. + + https://github.com/mniestroj/rs485conf diff --git a/package/rs485conf/rs485conf.hash b/package/rs485conf/rs485conf.hash new file mode 100644 index 00000000..d2fc1916 --- /dev/null +++ b/package/rs485conf/rs485conf.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 f163f81cd50aae6fa39cbb4f6408a3699da7a87a56649c4b96d6f168c9be6a7d rs485conf-5c8d00cf70950fab3454549b81dea843d844492a.tar.gz +sha256 3e5c80d50879a9572ac9e463215a942490a67b56dfd8a3e27004d7c62e0493c8 LICENSE diff --git a/package/rs485conf/rs485conf.mk b/package/rs485conf/rs485conf.mk new file mode 100644 index 00000000..9d1b7642 --- /dev/null +++ b/package/rs485conf/rs485conf.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# rs485conf +# +################################################################################ + +RS485CONF_VERSION = 5c8d00cf70950fab3454549b81dea843d844492a +RS485CONF_SITE = $(call github,mniestroj,rs485conf,$(RS485CONF_VERSION)) +RS485CONF_LICENSE = BSD-3-Clause +RS485CONF_LICENSE_FILES = LICENSE + +define RS485CONF_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define RS485CONF_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) PREFIX="$(TARGET_DIR)/usr" -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/rsh-redone/Config.in b/package/rsh-redone/Config.in new file mode 100644 index 00000000..fed643de --- /dev/null +++ b/package/rsh-redone/Config.in @@ -0,0 +1,45 @@ +config BR2_PACKAGE_RSH_REDONE + bool "rsh-redone" + help + Rsh-redone is a reimplementation of the remote shell clients + and servers. It is written from the ground up to avoid the + bugs found in the standard clients and servers. It also + fully supports IPv6. + + http://packages.debian.org/source/sid/rsh-redone + +if BR2_PACKAGE_RSH_REDONE + +config BR2_PACKAGE_RSH_REDONE_RLOGIN + bool "rlogin" + +config BR2_PACKAGE_RSH_REDONE_RLOGIND + bool "rlogind" + depends on !BR2_STATIC_LIBS + depends on BR2_ENABLE_LOCALE && BR2_USE_WCHAR + depends on !BR2_TOOLCHAIN_USES_MUSL + depends on BR2_USE_MMU # linux-pam + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # linux-pam + select BR2_PACKAGE_LINUX_PAM + +comment "rlogind needs a uClibc or glibc toolchain w/ wchar, locale, dynamic library, gcc >= 4.9" + depends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \ + || BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_RSH_REDONE_RSH + bool "rsh" + +config BR2_PACKAGE_RSH_REDONE_RSHD + bool "rshd" + depends on BR2_ENABLE_LOCALE && BR2_USE_WCHAR + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # linux-pam + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # linux-pam + select BR2_PACKAGE_LINUX_PAM + +comment "rshd needs a toolchain w/ wchar, locale, dynamic library, gcc >= 4.9" + depends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \ + || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +endif diff --git a/package/rsh-redone/rsh-redone.hash b/package/rsh-redone/rsh-redone.hash new file mode 100644 index 00000000..559ed42d --- /dev/null +++ b/package/rsh-redone/rsh-redone.hash @@ -0,0 +1,4 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/r/rsh-redone/rsh-redone_85-2.dsc +sha256 55ac8ee2acacbc3490f073e3922c0cde46ffe4ea3c593e05c48fed4c1e1a8811 rsh-redone_85.orig.tar.gz +# Locally computed +sha256 92c3a6a0efe5347c282081c6f67aebfec0f33b880c9efb87eb5232dcdd748369 rsh.c diff --git a/package/rsh-redone/rsh-redone.mk b/package/rsh-redone/rsh-redone.mk new file mode 100644 index 00000000..5ac12811 --- /dev/null +++ b/package/rsh-redone/rsh-redone.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# rsh-redone +# +################################################################################ + +RSH_REDONE_VERSION = 85 +RSH_REDONE_SOURCE = rsh-redone_$(RSH_REDONE_VERSION).orig.tar.gz +RSH_REDONE_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/r/rsh-redone +RSH_REDONE_LICENSE = GPL-2.0 +RSH_REDONE_LICENSE_FILES = rsh.c + +RSH_REDONE_BINS-y = +RSH_REDONE_BINS-$(BR2_PACKAGE_RSH_REDONE_RLOGIN) += rlogin +RSH_REDONE_BINS-$(BR2_PACKAGE_RSH_REDONE_RSH) += rsh +RSH_REDONE_SBINS-y = +RSH_REDONE_SBINS-$(BR2_PACKAGE_RSH_REDONE_RLOGIND) += in.rlogind +RSH_REDONE_SBINS-$(BR2_PACKAGE_RSH_REDONE_RSHD) += in.rshd + +RSH_REDONE_MAKE_FLAGS = \ + BIN="$(RSH_REDONE_BINS-y)" SBIN="$(RSH_REDONE_SBINS-y)" + +ifneq ($(BR2_PACKAGE_RSH_REDONE_RSHD)$(BR2_PACKAGE_RSH_REDONE_RLOGIND),) +RSH_REDONE_DEPENDENCIES += linux-pam +endif + +define RSH_REDONE_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(RSH_REDONE_MAKE_FLAGS) +endef + +define RSH_REDONE_INSTALL_TARGET_CMDS + $(if $(RSH_REDONE_BINS-y)$(RSH_REDONE_SBINS-y), + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(RSH_REDONE_MAKE_FLAGS) DESTDIR=$(TARGET_DIR) \ + $(if $(RSH_REDONE_BINS-y),install-bin) \ + $(if $(RSH_REDONE_SBINS-y),install-sbin)) +endef + +$(eval $(generic-package)) diff --git a/package/rsync/0001-configure.ac-use-pkg-config-to-retrieve-openssl-depe.patch b/package/rsync/0001-configure.ac-use-pkg-config-to-retrieve-openssl-depe.patch new file mode 100644 index 00000000..61fe4b02 --- /dev/null +++ b/package/rsync/0001-configure.ac-use-pkg-config-to-retrieve-openssl-depe.patch @@ -0,0 +1,48 @@ +From 93865bad4c00e7d3c867965663fdb9a1a0448db8 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 1 Jan 2023 16:53:23 +0100 +Subject: [PATCH] configure.ac: use pkg-config to retrieve openssl dependencies + +Use pkg-config to retrieve openssl dependencies such as -latomic and +avoids the following build failure when building statically on +architectures such as sparc: + +/home/autobuild/autobuild/instance-1/output-1/host/lib/gcc/sparc-buildroot-linux-uclibc/10.4.0/../../../../sparc-buildroot-linux-uclibc/bin/ld: /home/autobuild/autobuild/instance-1/output-1/host/sparc-buildroot-linux-uclibc/sysroot/usr/lib/libcrypto.a(threads_pthread.o): in function `CRYPTO_atomic_add': +threads_pthread.c:(.text+0x208): undefined reference to `__atomic_is_lock_free' + +Fixes: + - http://autobuild.buildroot.org/results/49abbaa1eab94b248bff434b40728065d687e278 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/WayneD/rsync/pull/426 +--- + configure.ac | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +diff --git a/configure.ac b/configure.ac +index ccad7f13..b9591866 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -432,11 +432,15 @@ AH_TEMPLATE([USE_OPENSSL], + if test x"$enable_openssl" != x"no"; then + if test x"$ac_cv_header_openssl_md4_h" = x"yes" && test x"$ac_cv_header_openssl_md5_h" = x"yes"; then + AC_MSG_RESULT(yes) +- AC_SEARCH_LIBS(EVP_MD_CTX_copy, crypto, ++ PKG_CHECK_MODULES(LIBCRYPTO, libcrypto, + [AC_DEFINE(USE_OPENSSL) +- enable_openssl=yes], +- [err_msg="$err_msg$nl- Failed to find EVP_MD_CTX_copy function in openssl crypto lib."; +- no_lib="$no_lib openssl"]) ++ enable_openssl=yes ++ LIBS="$LIBS $LIBCRYPTO_LIBS"], ++ [AC_SEARCH_LIBS(EVP_MD_CTX_copy, crypto, ++ [AC_DEFINE(USE_OPENSSL) ++ enable_openssl=yes], ++ [err_msg="$err_msg$nl- Failed to find EVP_MD_CTX_copy function in openssl crypto lib."; ++ no_lib="$no_lib openssl"])]) + else + AC_MSG_RESULT(no) + err_msg="$err_msg$nl- Failed to find openssl/md4.h and openssl/md5.h for openssl crypto lib support." +-- +2.35.1 + diff --git a/package/rsync/Config.in b/package/rsync/Config.in new file mode 100644 index 00000000..b572c701 --- /dev/null +++ b/package/rsync/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_RSYNC + bool "rsync" + # fork() + depends on BR2_USE_MMU + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_POPT + help + File transfer program to keep remote files in sync. + + https://rsync.samba.org/ diff --git a/package/rsync/rsync.hash b/package/rsync/rsync.hash new file mode 100644 index 00000000..edeca9c4 --- /dev/null +++ b/package/rsync/rsync.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +# https://rsync.samba.org/ftp/rsync/src/rsync-3.3.0.tar.gz.asc +sha256 7399e9a6708c32d678a72a63219e96f23be0be2336e50fd1348498d07041df90 rsync-3.3.0.tar.gz +# Locally calculated +sha256 85c19ea50a224c2d0067a69c083584e5717b40b76610ec1218f91385775067dd COPYING diff --git a/package/rsync/rsync.mk b/package/rsync/rsync.mk new file mode 100644 index 00000000..188c87e1 --- /dev/null +++ b/package/rsync/rsync.mk @@ -0,0 +1,65 @@ +################################################################################ +# +# rsync +# +################################################################################ + +RSYNC_VERSION = 3.3.0 +RSYNC_SITE = https://rsync.samba.org/ftp/rsync/src +RSYNC_LICENSE = GPL-3.0+ with exceptions +RSYNC_LICENSE_FILES = COPYING +RSYNC_CPE_ID_VENDOR = samba +RSYNC_SELINUX_MODULES = rsync +# We're patching configure.ac +RSYNC_AUTORECONF = YES +RSYNC_DEPENDENCIES = host-pkgconf zlib popt +# We know that our C library is modern enough for C99 vsnprintf(). Since +# configure can't detect this, we tell configure that vsnprintf() is safe. +RSYNC_CONF_ENV = rsync_cv_HAVE_C99_VSNPRINTF=yes +RSYNC_CONF_OPTS = \ + --with-included-zlib=no \ + --with-included-popt=no \ + --disable-roll-simd \ + --disable-md5-asm + +# reconfigure must be run after autoreconf +define RSYNC_RUN_RECONFIGURE + cd $(@D) && PATH=$(BR_PATH) make reconfigure +endef +RSYNC_POST_CONFIGURE_HOOKS += RSYNC_RUN_RECONFIGURE + +ifeq ($(BR2_PACKAGE_ACL),y) +RSYNC_DEPENDENCIES += acl +else +RSYNC_CONF_OPTS += --disable-acl-support +endif + +ifeq ($(BR2_PACKAGE_LZ4),y) +RSYNC_DEPENDENCIES += lz4 +RSYNC_CONF_OPTS += --enable-lz4 +else +RSYNC_CONF_OPTS += --disable-lz4 +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +RSYNC_DEPENDENCIES += openssl +RSYNC_CONF_OPTS += --enable-openssl +else +RSYNC_CONF_OPTS += --disable-openssl +endif + +ifeq ($(BR2_PACKAGE_XXHASH),y) +RSYNC_DEPENDENCIES += xxhash +RSYNC_CONF_OPTS += --enable-xxhash +else +RSYNC_CONF_OPTS += --disable-xxhash +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +RSYNC_DEPENDENCIES += zstd +RSYNC_CONF_OPTS += --enable-zstd +else +RSYNC_CONF_OPTS += --disable-zstd +endif + +$(eval $(autotools-package)) diff --git a/package/rsyslog/Config.in b/package/rsyslog/Config.in new file mode 100644 index 00000000..3ba32619 --- /dev/null +++ b/package/rsyslog/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_RSYSLOG + bool "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 + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_APR_UTIL if BR2_PACKAGE_CIVETWEB_LIB + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_LIBESTR + select BR2_PACKAGE_LIBLOGGING + select BR2_PACKAGE_LIBFASTJSON + help + Rsyslog is a powerful and flexible syslog implementation + + http://www.rsyslog.com + +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 \ + || BR2_TOOLCHAIN_USES_MUSL + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/package/rsyslog/S01rsyslogd b/package/rsyslog/S01rsyslogd new file mode 100644 index 00000000..78421876 --- /dev/null +++ b/package/rsyslog/S01rsyslogd @@ -0,0 +1,53 @@ +#!/bin/sh + +DAEMON="rsyslogd" +PIDFILE="/var/run/$DAEMON.pid" + +RSYSLOGD_ARGS="" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -p "$PIDFILE" -x "/usr/sbin/$DAEMON" \ + -- $RSYSLOGD_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature (does not + # reconfigure/restart on SIGHUP, just closes all open files). + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/rsyslog/rsyslog.hash b/package/rsyslog/rsyslog.hash new file mode 100644 index 00000000..212a1acc --- /dev/null +++ b/package/rsyslog/rsyslog.hash @@ -0,0 +1,7 @@ +# From http://www.rsyslog.com/downloads/download-v8-stable/ +sha256 acbdd8579489df36b4a383dc6909a61b7623807f0aff54c062115f2de7ea85ba rsyslog-8.2402.0.tar.gz + +# Locally calculated +sha256 054b3a047d9232376a46b87356b19b0c0c2924cb5e6911ab96a01fc4b515f083 COPYING +sha256 8743ad560dea1229d4f46cd603e10874db41a27f3c74f64e958ef123f3943fab COPYING.ASL20 +sha256 4038442ca5bde8ffd243cfc235cb4455e7d618d47558ea3d8284733f71d904ed COPYING.LESSER diff --git a/package/rsyslog/rsyslog.mk b/package/rsyslog/rsyslog.mk new file mode 100644 index 00000000..fac78795 --- /dev/null +++ b/package/rsyslog/rsyslog.mk @@ -0,0 +1,179 @@ +################################################################################ +# +# rsyslog +# +################################################################################ + +RSYSLOG_VERSION = 8.2402.0 +RSYSLOG_SITE = http://rsyslog.com/files/download/rsyslog +RSYSLOG_LICENSE = GPL-3.0, LGPL-3.0, Apache-2.0 +RSYSLOG_LICENSE_FILES = COPYING COPYING.LESSER COPYING.ASL20 +RSYSLOG_CPE_ID_VENDOR = rsyslog +# rsyslog uses weak permissions for generating log files. +# Ignoring this CVE as Buildroot normally doesn't have local users and a build +# could customize the rsyslog.conf to be more restrictive ($FileCreateMode 0640) +RSYSLOG_IGNORE_CVES += CVE-2015-3243 +RSYSLOG_DEPENDENCIES = zlib libestr liblogging libfastjson host-pkgconf +RSYSLOG_CONF_ENV = ac_cv_prog_cc_c99='-std=c99' +RSYSLOG_PLUGINS = imdiag imfile impstats imptcp \ + mmanon mmaudit mmfields mmjsonparse mmpstrucdata mmsequence mmutf8fix \ + mail omprog omruleset omstdout omuxsock \ + pmaixforwardedfrom pmciscoios pmcisconames pmlastmsg pmsnare + +ifeq ($(BR2_PACKAGE_LIBRELP),y) +RSYSLOG_DEPENDENCIES += librelp +RSYSLOG_PLUGINS += relp +endif + +RSYSLOG_CONF_OPTS = --disable-generate-man-pages \ + $(foreach x,$(call qstrip,$(RSYSLOG_PLUGINS)),--enable-$(x)) + +# Disable items requiring lognorm +RSYSLOG_CONF_OPTS += \ + --disable-mmkubernetes \ + --disable-mmnormalize + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +RSYSLOG_DEPENDENCIES += libcurl +RSYSLOG_CONF_OPTS += \ + --enable-clickhouse \ + --enable-elasticsearch \ + --enable-fmhttp \ + --enable-imdocker \ + --enable-omhttp \ + --enable-omhttpfs +else +RSYSLOG_CONF_OPTS += \ + --disable-clickhouse \ + --disable-elasticsearch \ + --disable-fmhttp \ + --disable-imdocker \ + --disable-omhttp \ + --disable-omhttpfs +endif + +ifeq ($(BR2_PACKAGE_CIVETWEB_LIB),y) +RSYSLOG_DEPENDENCIES += apr-util civetweb +RSYSLOG_CONF_OPTS += --enable-imhttp +else +RSYSLOG_CONF_OPTS += --disable-imhttp +endif + +ifeq ($(BR2_PACKAGE_CZMQ),y) +RSYSLOG_DEPENDENCIES += czmq +RSYSLOG_CONF_OPTS += --enable-imczmq --enable-omczmq +else +RSYSLOG_CONF_OPTS += --disable-imczmq --disable-omczmq +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +RSYSLOG_DEPENDENCIES += gnutls +RSYSLOG_CONF_OPTS += --enable-gnutls +else +RSYSLOG_CONF_OPTS += --disable-gnutls +endif + +ifeq ($(BR2_PACKAGE_HIREDIS),y) +RSYSLOG_DEPENDENCIES += hiredis +RSYSLOG_CONF_OPTS += --enable-omhiredis +else +RSYSLOG_CONF_OPTS += --disable-omhiredis +endif + +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +RSYSLOG_DEPENDENCIES += libgcrypt +RSYSLOG_CONF_ENV += LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config +RSYSLOG_CONF_OPTS += --enable-libgcrypt +else +RSYSLOG_CONF_OPTS += --disable-libgcrypt +endif + +ifeq ($(BR2_PACKAGE_LIBMAXMINDDB),y) +RSYSLOG_DEPENDENCIES += libmaxminddb +RSYSLOG_CONF_OPTS += --enable-mmdblookup +else +RSYSLOG_CONF_OPTS += --disable-mmdblookup +endif + +ifeq ($(BR2_PACKAGE_LIBPCAP),y) +RSYSLOG_DEPENDENCIES += libpcap +RSYSLOG_CONF_OPTS += --enable-impcap +else +RSYSLOG_CONF_OPTS += --disable-impcap +endif + +ifeq ($(BR2_PACKAGE_MARIADB),y) +RSYSLOG_DEPENDENCIES += mariadb +RSYSLOG_CONF_OPTS += --enable-mysql +RSYSLOG_CONF_ENV += ac_cv_prog_MYSQL_CONFIG=$(STAGING_DIR)/usr/bin/mysql_config +else +RSYSLOG_CONF_OPTS += --disable-mysql +endif + +ifeq ($(BR2_PACKAGE_POSTGRESQL),y) +RSYSLOG_DEPENDENCIES += postgresql +RSYSLOG_CONF_OPTS += --enable-pgsql +RSYSLOG_CONF_ENV += ac_cv_prog_PG_CONFIG=$(STAGING_DIR)/usr/bin/pg_config +else +RSYSLOG_CONF_OPTS += --disable-pgsql +endif + +ifeq ($(BR2_PACKAGE_QPID_PROTON),y) +RSYSLOG_DEPENDENCIES += qpid-proton +RSYSLOG_CONF_OPTS += --enable-omamqp1 +else +RSYSLOG_CONF_OPTS += --disable-omamqp1 +endif + +ifeq ($(BR2_PACKAGE_RABBITMQ_C),y) +RSYSLOG_DEPENDENCIES += rabbitmq-c +RSYSLOG_CONF_OPTS += --enable-omrabbitmq +else +RSYSLOG_CONF_OPTS += --disable-omrabbitmq +endif + +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y) +RSYSLOG_DEPENDENCIES += util-linux +RSYSLOG_CONF_OPTS += --enable-uuid +else +RSYSLOG_CONF_OPTS += --disable-uuid +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +RSYSLOG_CONF_OPTS += \ + --enable-imjournal \ + --enable-omjournal \ + --with-systemdsystemunitdir=/usr/lib/systemd/system +RSYSLOG_DEPENDENCIES += systemd +else +RSYSLOG_CONF_OPTS += \ + --disable-imjournal \ + --disable-omjournal +endif + +ifeq ($(BR2_PACKAGE_LIBDBI_DRIVERS),y) +RSYSLOG_CONF_OPTS += --enable-libdbi +RSYSLOG_DEPENDENCIES += libdbi-drivers +else +RSYSLOG_CONF_OPTS += --disable-libdbi +endif + +define RSYSLOG_INSTALL_INIT_SYSTEMD + $(INSTALL) -m 0644 -D package/rsyslog/rsyslog.service \ + $(TARGET_DIR)/usr/lib/systemd/system/rsyslog.service +endef + +define RSYSLOG_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/rsyslog/S01rsyslogd \ + $(TARGET_DIR)/etc/init.d/S01rsyslogd +endef + +define RSYSLOG_INSTALL_CONF + $(INSTALL) -m 0644 -D $(@D)/platform/redhat/rsyslog.conf \ + $(TARGET_DIR)/etc/rsyslog.conf + mkdir -p $(TARGET_DIR)/etc/rsyslog.d +endef + +RSYSLOG_POST_INSTALL_TARGET_HOOKS += RSYSLOG_INSTALL_CONF + +$(eval $(autotools-package)) diff --git a/package/rsyslog/rsyslog.service b/package/rsyslog/rsyslog.service new file mode 100644 index 00000000..40c7c220 --- /dev/null +++ b/package/rsyslog/rsyslog.service @@ -0,0 +1,19 @@ +[Unit] +Description=System Logging Service +Requires=syslog.socket +Documentation=man:rsyslogd(8) +Documentation=https://www.rsyslog.com/doc/ + +[Service] +Type=notify +ExecStart=/usr/sbin/rsyslogd -n -iNONE +StandardOutput=null +Restart=on-failure + +# Increase the default a bit in order to allow many simultaneous +# files to be monitored, we might need a lot of fds. +LimitNOFILE=16384 + +[Install] +WantedBy=multi-user.target +Alias=syslog.service diff --git a/package/rt-tests/0001-Fix-a-build-issue-with-uClibc-ng.patch b/package/rt-tests/0001-Fix-a-build-issue-with-uClibc-ng.patch new file mode 100644 index 00000000..ae89761e --- /dev/null +++ b/package/rt-tests/0001-Fix-a-build-issue-with-uClibc-ng.patch @@ -0,0 +1,35 @@ +From a621d8ee2a27ba44845f5232a3b2bf9b581623b1 Mon Sep 17 00:00:00 2001 +From: Alexey Brodkin +Date: Wed, 13 Jul 2016 23:46:38 +0200 +Subject: [PATCH] Fix a build issue with uClibc-ng + +uClibc-ng has clock_nanosleep() if built with UCLIBC_HAS_ADVANCED_REALTIME, + conflicting with emulation function. + +Signed-off-by: Peter Korsgaard +[Romain: + rebase on v1.0 + remove uClibc legacy support, uClibc-ng provide utmpx.h] +Signed-off-by: Romain Naour +[Julien: rebased patch on version 2.7] +Signed-off-by: Julien Olivain +--- + src/cyclictest/cyclictest.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c +index c5c3389..5ae1dd9 100644 +--- a/src/cyclictest/cyclictest.c ++++ b/src/cyclictest/cyclictest.c +@@ -51,7 +51,7 @@ + + #define sigev_notify_thread_id _sigev_un._tid + +-#ifdef __UCLIBC__ ++#if defined(__UCLIBC__) && !defined(__UCLIBC_HAS_ADVANCED_REALTIME__) + #define MAKE_PROCESS_CPUCLOCK(pid, clock) \ + ((~(clockid_t) (pid) << 3) | (clockid_t) (clock)) + #define CPUCLOCK_SCHED 2 +-- +2.45.2 + diff --git a/package/rt-tests/0002-Makefile-drop-explicit-undefine-PYLIB-for-compatibil.patch b/package/rt-tests/0002-Makefile-drop-explicit-undefine-PYLIB-for-compatibil.patch new file mode 100644 index 00000000..9212b8ee --- /dev/null +++ b/package/rt-tests/0002-Makefile-drop-explicit-undefine-PYLIB-for-compatibil.patch @@ -0,0 +1,50 @@ +From 063972eece2fb8157f0feb98a4608c2984c7c5ff Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Wed, 12 May 2021 09:18:33 +0200 +Subject: [PATCH] Makefile: drop explicit undefine PYLIB for compatibility with + make 3.81 + +GNU make 3.81 does not like the explicit tab-indented undefine: + +Makefile:41: *** commands commence before first target. Stop. + +Dropping the indentation also doesn't work: + +Makefile:41: *** missing separator. Stop. + +So simply drop the undefine logic. As explained in the GNU make manual, +undefine is not commonly needed as E.G. ifdef checks for a non-zero string: + +https://www.gnu.org/software/make/manual/html_node/Undefine-Directive.html +https://www.gnu.org/software/make/manual/html_node/Conditional-Syntax.html + +Fixes: +http://autobuild.buildroot.net/results/cf7c4f360f5464c700788cc8299fd086544c80e8/build-end.log + +Signed-off-by: Peter Korsgaard +Upstream: https://marc.info/?l=linux-rt-users&m=162080462211139&w=2 +[Julien: rebased patch on version 2.7] +Signed-off-by: Julien Olivain +--- + Makefile | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/Makefile b/Makefile +index e2f8579..62c906f 100644 +--- a/Makefile ++++ b/Makefile +@@ -37,11 +37,6 @@ LDFLAGS ?= + + PYLIB ?= $(shell python3 -m get_pylib) + +-# Check for errors, such as python3 not available +-ifeq (${PYLIB},) +- undefine PYLIB +-endif +- + MANPAGES = src/cyclictest/cyclictest.8 \ + src/pi_tests/pi_stress.8 \ + src/ptsematest/ptsematest.8 \ +-- +2.45.2 + diff --git a/package/rt-tests/Config.in b/package/rt-tests/Config.in new file mode 100644 index 00000000..ccfa040d --- /dev/null +++ b/package/rt-tests/Config.in @@ -0,0 +1,39 @@ +config BR2_PACKAGE_RT_TESTS + bool "rt-tests" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # __sync_*_4 intrisics + depends on BR2_TOOLCHAIN_HAS_ATOMIC # numactl + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5 + depends on BR2_USE_MMU # fork(), numactl + depends on !BR2_STATIC_LIBS # dlopen + depends on !BR2_TOOLCHAIN_USES_MUSL # cyclictest + select BR2_PACKAGE_NUMACTL + help + Set of utilities for testing the real-time behaviour of a + Linux system. + + All tools are simple C programs with no dependencies, except + the hwlatdetect utility, which is a Python script and + therefore requires the Python interpreter. It will only be + installed if a Python interpreter has been selected in the + Buildroot configuration. + + Note that this package requires a toolchain built with the + NPTL implementation of the pthread API (this is always the + case with glibc toolchains, but may not necessarily be the + case with uClibc toolchains, since the thread implementation + is configurable). + + https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/rt-tests + +comment "rt-tests may not work on MIPS with an external uClibc toolchain" + depends on BR2_PACKAGE_RT_TESTS + depends on BR2_TOOLCHAIN_EXTERNAL_UCLIBC + depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + +comment "rt-tests needs a uClibc or glibc toolchain w/ NPTL, headers >= 4.5, dynamic library" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS \ + || BR2_TOOLCHAIN_USES_MUSL || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5 + depends on BR2_USE_MMU diff --git a/package/rt-tests/rt-tests.hash b/package/rt-tests/rt-tests.hash new file mode 100644 index 00000000..9682fde4 --- /dev/null +++ b/package/rt-tests/rt-tests.hash @@ -0,0 +1,4 @@ +# From https://mirrors.edge.kernel.org/pub/linux/utils/rt-tests/sha256sums.asc +sha256 0e5b2fbc98ceb786bd113c9a30f0388d884b2d8c4bd6c569d94ae8b00a702bbb rt-tests-2.7.tar.xz +# locally computed hash +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/rt-tests/rt-tests.mk b/package/rt-tests/rt-tests.mk new file mode 100644 index 00000000..419260db --- /dev/null +++ b/package/rt-tests/rt-tests.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# rt-tests +# +################################################################################ + +RT_TESTS_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/rt-tests +RT_TESTS_SOURCE = rt-tests-$(RT_TESTS_VERSION).tar.xz +RT_TESTS_VERSION = 2.7 +RT_TESTS_LICENSE = GPL-2.0+ +RT_TESTS_LICENSE_FILES = COPYING + +RT_TESTS_DEPENDENCIES = numactl +RT_TESTS_CPE_ID_VENDOR = kernel + +define RT_TESTS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + CC="$(TARGET_CC)" \ + CFLAGS="$(TARGET_CFLAGS)" \ + prefix=/usr +endef + +define RT_TESTS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + DESTDIR="$(TARGET_DIR)" \ + prefix=/usr \ + PYLIB="$(if $(BR2_PACKAGE_PYTHON3),/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/)" \ + install +endef + +$(eval $(generic-package)) diff --git a/package/rtai/Config.in b/package/rtai/Config.in new file mode 100644 index 00000000..14b18548 --- /dev/null +++ b/package/rtai/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_RTAI + bool "rtai" + depends on BR2_LINUX_KERNEL_EXT_RTAI + select BR2_LINUX_NEEDS_MODULES # not using kernel-module infra + help + RTAI - the RealTime Application Interface for Linux. + + http://www.rtai.org diff --git a/package/rtai/rtai.hash b/package/rtai/rtai.hash new file mode 100644 index 00000000..f2eb7f33 --- /dev/null +++ b/package/rtai/rtai.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 57acd3ad46cc8f1e01dc21089a24587c59e7328cbac06abb62bb0152de0b9df7 rtai-5.3.tar.bz2 diff --git a/package/rtai/rtai.mk b/package/rtai/rtai.mk new file mode 100644 index 00000000..6b309ebf --- /dev/null +++ b/package/rtai/rtai.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# rtai +# +################################################################################ + +RTAI_VERSION = 5.3 +RTAI_SOURCE = rtai-$(RTAI_VERSION).tar.bz2 +RTAI_SITE = https://www.rtai.org/userfiles/downloads/RTAI +RTAI_INSTALL_STAGING = YES + +# The _CONFIG_SCRIPTS cannot apply here to the specificities of rtai-config +define RTAI_POST_PATCH_FIXUP + $(SED) 's%^staging=.*%staging=$(STAGING_DIR)%' $(STAGING_DIR)/usr/bin/rtai-config +endef + +RTAI_POST_INSTALL_STAGING_HOOKS += RTAI_POST_PATCH_FIXUP + +RTAI_DEPENDENCIES = linux + +RTAI_CONF_OPTS = \ + --includedir=/usr/include/rtai \ + --with-linux-dir=$(LINUX_DIR) \ + --disable-leds \ + --enable-usi \ + --enable-align-priority \ + --disable-rtailab \ + --with-module-dir=/lib/modules/$(LINUX_VERSION_PROBED)/rtai + +RTAI_MAKE = $(MAKE1) + +$(eval $(autotools-package)) diff --git a/package/rtc-tools/Config.in b/package/rtc-tools/Config.in new file mode 100644 index 00000000..78f5c060 --- /dev/null +++ b/package/rtc-tools/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_RTC_TOOLS + bool "rtc-tools" + help + This package provide a set of user-space tools that can be + used to manipulate Real Time Clock Devices. + + https://git.kernel.org/pub/scm/linux/kernel/git/abelloni/rtc-tools.git/ diff --git a/package/rtc-tools/rtc-tools.hash b/package/rtc-tools/rtc-tools.hash new file mode 100644 index 00000000..a3f3bdcc --- /dev/null +++ b/package/rtc-tools/rtc-tools.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 68b6820aeb8132b3f034fb79cf761c4549373d67641afb05b58641f1d32bb69f rtc-tools-33ef4aa1c92b0c92a351284d93d1ac5570de9cc7-git4.tar.gz +sha256 7ae50a5344af14d6231aff6814632a220b3127da4099aea2c6070fd79c407c1a COPYING diff --git a/package/rtc-tools/rtc-tools.mk b/package/rtc-tools/rtc-tools.mk new file mode 100644 index 00000000..2882c885 --- /dev/null +++ b/package/rtc-tools/rtc-tools.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# rtc-tools +# +################################################################################ + +RTC_TOOLS_VERSION = 33ef4aa1c92b0c92a351284d93d1ac5570de9cc7 +RTC_TOOLS_SITE = https://git.kernel.org/pub/scm/linux/kernel/git/abelloni/rtc-tools.git +RTC_TOOLS_SITE_METHOD = git +RTC_TOOLS_LICENSE = GPL-2.0 +RTC_TOOLS_LICENSE_FILES = COPYING + +RTC_TOOLS_BINARIES = rtc rtc-range + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +RTC_TOOLS_BINARIES += rtc-sync +endif + +define RTC_TOOLS_BUILD_CMDS + $(foreach bin,$(RTC_TOOLS_BINARIES),\ + $(TARGET_CC) $(TARGET_CFLAGS) -o $(@D)/$(bin) $(@D)/$(bin).c + ) +endef + +define RTC_TOOLS_INSTALL_TARGET_CMDS + $(foreach bin,$(RTC_TOOLS_BINARIES),\ + $(INSTALL) -D -m 0755 $(@D)/$(bin) $(TARGET_DIR)/usr/bin/$(bin) + ) +endef + +$(eval $(generic-package)) diff --git a/package/rtl8188eu/Config.in b/package/rtl8188eu/Config.in new file mode 100644 index 00000000..76d90852 --- /dev/null +++ b/package/rtl8188eu/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_RTL8188EU + bool "rtl8188eu" + depends on !BR2_s390x + depends on BR2_LINUX_KERNEL + help + A standalone driver for the RTL8188EU USB Wi-Fi adapter. + This is needed only for Linux kernels before 3.12. + Since 3.12, there is a (staging) driver in mainline, with a + similar codebase. + + Make sure your target kernel has the CONFIG_WIRELESS_EXT + config option enabled. + + Note: this package needs a firmware loading mechanism to load + the binary blob for the chip to work. + + https://github.com/lwfinger/rtl8188eu + +comment "rtl8188eu needs a Linux kernel to be built" + depends on !BR2_s390x + depends on !BR2_LINUX_KERNEL diff --git a/package/rtl8188eu/rtl8188eu.hash b/package/rtl8188eu/rtl8188eu.hash new file mode 100644 index 00000000..4f8f83e7 --- /dev/null +++ b/package/rtl8188eu/rtl8188eu.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 507d32eb91d3d407c7758319c81a36a9dc69e2b89378cabcd382411153927b7b rtl8188eu-f42fc9c45d2086c415dce70d3018031b54a7beef.tar.gz +sha256 af8067302947c01fd9eee72befa54c7e3ef8a48fecde7fd71277f2290b2bf0f7 COPYING diff --git a/package/rtl8188eu/rtl8188eu.mk b/package/rtl8188eu/rtl8188eu.mk new file mode 100644 index 00000000..eca0fb80 --- /dev/null +++ b/package/rtl8188eu/rtl8188eu.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# rtl8188eu +# +################################################################################ + +RTL8188EU_VERSION = f42fc9c45d2086c415dce70d3018031b54a7beef +RTL8188EU_SITE = $(call github,lwfinger,rtl8188eu,$(RTL8188EU_VERSION)) +RTL8188EU_LICENSE = GPL-2.0, proprietary (rtl8188eufw.bin firmware blob) +RTL8188EU_LICENSE_FILES = COPYING +RTL8188EU_MODULE_MAKE_OPTS = CONFIG_RTL8188EU=m + +define RTL8188EU_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_NET) + $(call KCONFIG_ENABLE_OPT,CONFIG_WIRELESS) + $(call KCONFIG_ENABLE_OPT,CONFIG_CFG80211) + $(call KCONFIG_ENABLE_OPT,CONFIG_USB_SUPPORT) + $(call KCONFIG_ENABLE_OPT,CONFIG_USB) +endef + +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/package/rtl8189es/Config.in b/package/rtl8189es/Config.in new file mode 100644 index 00000000..11dd2254 --- /dev/null +++ b/package/rtl8189es/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_RTL8189ES + bool "rtl8189es" + depends on !BR2_s390x + depends on BR2_LINUX_KERNEL + help + Wireless driver rtl8189es. + + https://github.com/jwrdegoede/rtl8189ES_linux.git + +comment "rtl8189es needs a Linux kernel to be built" + depends on !BR2_s390x + depends on !BR2_LINUX_KERNEL diff --git a/package/rtl8189es/rtl8189es.hash b/package/rtl8189es/rtl8189es.hash new file mode 100644 index 00000000..1b1aefdd --- /dev/null +++ b/package/rtl8189es/rtl8189es.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 5ab565057ac81527ac579edfdd2a1e42b9ceb2f2924b2ade88a11849443789e4 rtl8189es-30a52f789a0b933c4a7eb06cbf4a4d21c8e581aa.tar.gz diff --git a/package/rtl8189es/rtl8189es.mk b/package/rtl8189es/rtl8189es.mk new file mode 100644 index 00000000..11735ba1 --- /dev/null +++ b/package/rtl8189es/rtl8189es.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# rtl8189es +# +################################################################################ + +RTL8189ES_VERSION = 30a52f789a0b933c4a7eb06cbf4a4d21c8e581aa +RTL8189ES_SITE = $(call github,jwrdegoede,rtl8189ES_linux,$(RTL8189ES_VERSION)) +RTL8189ES_LICENSE = GPL-2.0 + +RTL8189ES_MODULE_MAKE_OPTS = \ + CONFIG_RTL8189ES=m \ + KVER=$(LINUX_VERSION_PROBED) \ + KSRC=$(LINUX_DIR) \ + USER_EXTRA_CFLAGS="-Wno-error" + +ifeq ($(BR2_ENABLE_RUNTIME_DEBUG),) +RTL8189ES_MODULE_MAKE_OPTS += CONFIG_RTW_DEBUG=n +endif + +define RTL8189ES_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_NET) + $(call KCONFIG_ENABLE_OPT,CONFIG_WIRELESS) + $(call KCONFIG_ENABLE_OPT,CONFIG_CFG80211) + $(call KCONFIG_ENABLE_OPT,CONFIG_MMC) +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/rtl8189fs/Config.in b/package/rtl8189fs/Config.in new file mode 100644 index 00000000..78eeed1a --- /dev/null +++ b/package/rtl8189fs/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_RTL8189FS + bool "rtl8189fs" + depends on !BR2_s390x + depends on BR2_LINUX_KERNEL + help + Wireless driver rtl8189fs. + + https://github.com/jwrdegoede/rtl8189ES_linux.git + +comment "rtl8189fs needs a Linux kernel to be built" + depends on !BR2_s390x + depends on !BR2_LINUX_KERNEL diff --git a/package/rtl8189fs/rtl8189fs.hash b/package/rtl8189fs/rtl8189fs.hash new file mode 100644 index 00000000..5ed0bbd3 --- /dev/null +++ b/package/rtl8189fs/rtl8189fs.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 a5063b1554acd08bcc084926d1ff80148fe8521a6aefb7061cae68b7c4a7cdb1 rtl8189fs-9a82349c2c40515f9d20b9f6721670f76b4e1c7a.tar.gz diff --git a/package/rtl8189fs/rtl8189fs.mk b/package/rtl8189fs/rtl8189fs.mk new file mode 100644 index 00000000..afb8685b --- /dev/null +++ b/package/rtl8189fs/rtl8189fs.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# rtl8189fs +# +################################################################################ + +RTL8189FS_VERSION = 9a82349c2c40515f9d20b9f6721670f76b4e1c7a +RTL8189FS_SITE = $(call github,jwrdegoede,rtl8189ES_linux,$(RTL8189FS_VERSION)) +RTL8189FS_LICENSE = GPL-2.0 + +RTL8189FS_USER_EXTRA_CFLAGS = \ + -UCONFIG_LITTLE_ENDIAN \ + -DCONFIG_$(call qstrip,$(BR2_ENDIAN))_ENDIAN + +RTL8189FS_MODULE_MAKE_OPTS = \ + CONFIG_RTL8189FS=m \ + KVER=$(LINUX_VERSION_PROBED) \ + KSRC=$(LINUX_DIR) \ + USER_EXTRA_CFLAGS="$(RTL8189FS_USER_EXTRA_CFLAGS)" + +ifeq ($(BR2_ENABLE_RUNTIME_DEBUG),) +RTL8189FS_MODULE_MAKE_OPTS += CONFIG_RTW_DEBUG=n +endif + +define RTL8189FS_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_WIRELESS) + $(call KCONFIG_ENABLE_OPT,CONFIG_CFG80211) + $(call KCONFIG_ENABLE_OPT,CONFIG_MAC80211) + $(call KCONFIG_ENABLE_OPT,CONFIG_MMC) +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/rtl8192eu/Config.in b/package/rtl8192eu/Config.in new file mode 100644 index 00000000..969ba090 --- /dev/null +++ b/package/rtl8192eu/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_RTL8192EU + bool "rtl8192eu" + depends on !BR2_s390x + depends on BR2_LINUX_KERNEL + help + A standalone driver for the RTL8192EU USB Wi-Fi adapter. + + Make sure your target kernel has the CONFIG_WIRELESS_EXT + config option enabled. + + https://github.com/clnhub/rtl8192eu-linux + +comment "rtl8192eu needs a Linux kernel to be built" + depends on !BR2_s390x + depends on !BR2_LINUX_KERNEL diff --git a/package/rtl8192eu/rtl8192eu.hash b/package/rtl8192eu/rtl8192eu.hash new file mode 100644 index 00000000..a8b7cb93 --- /dev/null +++ b/package/rtl8192eu/rtl8192eu.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 8da0f54bd9ae094b5f61fe3c4dd207b2df62b4286970e2828f7c5ce1146447fb rtl8192eu-56f672a8b9572c743148f2e60068fd341d52d5a3.tar.gz diff --git a/package/rtl8192eu/rtl8192eu.mk b/package/rtl8192eu/rtl8192eu.mk new file mode 100644 index 00000000..0f00d301 --- /dev/null +++ b/package/rtl8192eu/rtl8192eu.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# rtl8192eu +# +################################################################################ + +RTL8192EU_VERSION = 56f672a8b9572c743148f2e60068fd341d52d5a3 +RTL8192EU_SITE = $(call github,clnhub,rtl8192eu-linux,$(RTL8192EU_VERSION)) +RTL8192EU_LICENSE = GPL-2.0 + +RTL8192EU_USER_EXTRA_CFLAGS = -DCONFIG_$(call qstrip,$(BR2_ENDIAN))_ENDIAN \ + -DCONFIG_IOCTL_CFG80211 \ + -DRTW_USE_CFG80211_STA_EVENT \ + -Wno-error + +RTL8192EU_MODULE_MAKE_OPTS = \ + CONFIG_PLATFORM_I386_PC=n \ + CONFIG_RTL8192EU=m \ + USER_EXTRA_CFLAGS="$(RTL8192EU_USER_EXTRA_CFLAGS)" + +define RTL8192EU_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_NET) + $(call KCONFIG_ENABLE_OPT,CONFIG_WIRELESS) + $(call KCONFIG_ENABLE_OPT,CONFIG_CFG80211) + $(call KCONFIG_ENABLE_OPT,CONFIG_USB_SUPPORT) + $(call KCONFIG_ENABLE_OPT,CONFIG_USB) +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/rtl8723bu/Config.in b/package/rtl8723bu/Config.in new file mode 100644 index 00000000..7c624fc4 --- /dev/null +++ b/package/rtl8723bu/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_RTL8723BU + bool "rtl8723bu" + depends on !BR2_s390x + depends on BR2_LINUX_KERNEL + help + rtl8723bu wifi driver + + https://github.com/lwfinger/rtl8723bu + +comment "rtl8723bu needs a Linux kernel to be built" + depends on !BR2_s390x + depends on !BR2_LINUX_KERNEL diff --git a/package/rtl8723bu/rtl8723bu.hash b/package/rtl8723bu/rtl8723bu.hash new file mode 100644 index 00000000..236b9a67 --- /dev/null +++ b/package/rtl8723bu/rtl8723bu.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 357c78d6f86794d96530155f9ba102e56421efb6fa43eb33daa0fb57354e8215 rtl8723bu-af3a408d6399655b0db23c2c8720436ca725ca47.tar.gz diff --git a/package/rtl8723bu/rtl8723bu.mk b/package/rtl8723bu/rtl8723bu.mk new file mode 100644 index 00000000..0ce8b1af --- /dev/null +++ b/package/rtl8723bu/rtl8723bu.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# rtl8723bu +# +################################################################################ + +RTL8723BU_VERSION = af3a408d6399655b0db23c2c8720436ca725ca47 +RTL8723BU_SITE = $(call github,lwfinger,rtl8723bu,$(RTL8723BU_VERSION)) +RTL8723BU_LICENSE = GPL-2.0, proprietary (*.bin firmware blobs) + +RTL8723BU_MODULE_MAKE_OPTS = \ + KVER=$(LINUX_VERSION_PROBED) \ + KSRC=$(LINUX_DIR) + +define RTL8723BU_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_NET) + $(call KCONFIG_ENABLE_OPT,CONFIG_WIRELESS) + $(call KCONFIG_ENABLE_OPT,CONFIG_CFG80211) + $(call KCONFIG_ENABLE_OPT,CONFIG_USB_SUPPORT) + $(call KCONFIG_ENABLE_OPT,CONFIG_USB) +endef + +define RTL8723BU_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 644 $(@D)/rtl8723b_fw.bin $(TARGET_DIR)/lib/firmware/rtl_bt/rtl8723b_fw.bin +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/rtl8723ds-bt/Config.in b/package/rtl8723ds-bt/Config.in new file mode 100644 index 00000000..0a604310 --- /dev/null +++ b/package/rtl8723ds-bt/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_RTL8723DS_BT + bool "rtl8723ds-bt" + help + rtl8723ds UART attached Bluetooth module firmware. + + https://github.com/wsyco/RTL8723DS_BT_Linux diff --git a/package/rtl8723ds-bt/rtl8723ds-bt.hash b/package/rtl8723ds-bt/rtl8723ds-bt.hash new file mode 100644 index 00000000..1ec4e350 --- /dev/null +++ b/package/rtl8723ds-bt/rtl8723ds-bt.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 9e70a981946abeeb6437d9a27d8437cea15aa4df72f8d56ded0ae28af484d2f4 rtl8723ds-bt-14cedf3a9fec1aa8c500fa52f3e3acc433cbcf08.tar.gz diff --git a/package/rtl8723ds-bt/rtl8723ds-bt.mk b/package/rtl8723ds-bt/rtl8723ds-bt.mk new file mode 100644 index 00000000..423ad74d --- /dev/null +++ b/package/rtl8723ds-bt/rtl8723ds-bt.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# rtl8723ds-bt +# +################################################################################ + +RTL8723DS_BT_VERSION = 14cedf3a9fec1aa8c500fa52f3e3acc433cbcf08 +RTL8723DS_BT_SITE = $(call github,wsyco,RTL8723DS_BT_Linux,$(RTL8723DS_BT_VERSION)) +RTL8723DS_BT_LICENSE = PROPRIETARY + +define RTL8723DS_BT_INSTALL_TARGET_CMDS + $(INSTALL) -m 644 -D $(@D)/8723D/rtl8723d_fw \ + $(TARGET_DIR)/lib/firmware/rtl_bt/rtl8723ds_fw.bin + $(INSTALL) -m 644 -D $(@D)/8723D/rtl8723d_config \ + $(TARGET_DIR)/lib/firmware/rtl_bt/rtl8723ds_config.bin +endef + +$(eval $(generic-package)) diff --git a/package/rtl8723ds/Config.in b/package/rtl8723ds/Config.in new file mode 100644 index 00000000..e5123a2a --- /dev/null +++ b/package/rtl8723ds/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_RTL8723DS + bool "rtl8723ds" + depends on !BR2_s390x + depends on BR2_LINUX_KERNEL + help + rtl8723bs wifi driver + + https://github.com/lwfinger/rtl8723ds + +comment "rtl8723ds needs a Linux kernel to be built" + depends on !BR2_s390x + depends on !BR2_LINUX_KERNEL diff --git a/package/rtl8723ds/rtl8723ds.hash b/package/rtl8723ds/rtl8723ds.hash new file mode 100644 index 00000000..f2829d3f --- /dev/null +++ b/package/rtl8723ds/rtl8723ds.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 4f3006ffc1604854edbd6d25ad468ca57f6bcfd7814e4dab57725f144f00aa94 rtl8723ds-52e593e8c889b68ba58bd51cbdbcad7fe71362e4.tar.gz +sha256 cd5c66af63b509ccd75ec85fee41b6e5cbb77cd6bf9392a54900acc0f02be4a6 COPYING diff --git a/package/rtl8723ds/rtl8723ds.mk b/package/rtl8723ds/rtl8723ds.mk new file mode 100644 index 00000000..2536450d --- /dev/null +++ b/package/rtl8723ds/rtl8723ds.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# rtl8723ds +# +################################################################################ + +RTL8723DS_VERSION = 52e593e8c889b68ba58bd51cbdbcad7fe71362e4 +RTL8723DS_SITE = $(call github,lwfinger,rtl8723ds,$(RTL8723DS_VERSION)) +RTL8723DS_LICENSE = GPL-2.0 +RTL8723DS_LICENSE_FILES = COPYING + +RTL8723DS_USER_EXTRA_CFLAGS = \ + -DCONFIG_$(call qstrip,$(BR2_ENDIAN))_ENDIAN \ + -DCONFIG_IOCTL_CFG80211 \ + -DRTW_USE_CFG80211_STA_EVENT \ + -Wno-error + +RTL8723DS_MODULE_MAKE_OPTS = \ + CONFIG_PLATFORM_I386_PC=n \ + CONFIG_RTL8723DS=m \ + KVER=$(LINUX_VERSION_PROBED) \ + KSRC=$(LINUX_DIR) \ + USER_EXTRA_CFLAGS="$(RTL8723DS_USER_EXTRA_CFLAGS)" + +define RTL8723DS_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_NET) + $(call KCONFIG_ENABLE_OPT,CONFIG_WIRELESS) + $(call KCONFIG_ENABLE_OPT,CONFIG_CFG80211) + $(call KCONFIG_ENABLE_OPT,CONFIG_MMC) +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/rtl8812au-aircrack-ng/Config.in b/package/rtl8812au-aircrack-ng/Config.in new file mode 100644 index 00000000..d903ab2b --- /dev/null +++ b/package/rtl8812au-aircrack-ng/Config.in @@ -0,0 +1,12 @@ +comment "rtl8812au-aircrack-ng needs a Linux kernel to be built" + depends on !BR2_s390x + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_RTL8812AU_AIRCRACK_NG + bool "rtl8812au-aircrack-ng" + depends on !BR2_s390x + depends on BR2_LINUX_KERNEL + help + rtl8812au wifi driver (aircrack-ng repository) + + https://github.com/aircrack-ng/rtl8812au diff --git a/package/rtl8812au-aircrack-ng/rtl8812au-aircrack-ng.hash b/package/rtl8812au-aircrack-ng/rtl8812au-aircrack-ng.hash new file mode 100644 index 00000000..ea5ca3c5 --- /dev/null +++ b/package/rtl8812au-aircrack-ng/rtl8812au-aircrack-ng.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 d08bad19680047cb178d8984bfdd09d9ff7765b8c9ee35a9f8f87676f0c41a64 rtl8812au-aircrack-ng-b44d288f423ede0fc7cdbf92d07a7772cd727de4.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/rtl8812au-aircrack-ng/rtl8812au-aircrack-ng.mk b/package/rtl8812au-aircrack-ng/rtl8812au-aircrack-ng.mk new file mode 100644 index 00000000..3a7c56a3 --- /dev/null +++ b/package/rtl8812au-aircrack-ng/rtl8812au-aircrack-ng.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# rtl8812au-aircrack-ng +# +################################################################################ + +RTL8812AU_AIRCRACK_NG_VERSION = b44d288f423ede0fc7cdbf92d07a7772cd727de4 +RTL8812AU_AIRCRACK_NG_SITE = $(call github,aircrack-ng,rtl8812au,$(RTL8812AU_AIRCRACK_NG_VERSION)) +RTL8812AU_AIRCRACK_NG_LICENSE = GPL-2.0 +RTL8812AU_AIRCRACK_NG_LICENSE_FILES = LICENSE + +RTL8812AU_AIRCRACK_NG_EXTRA_CFLAGS = \ + -DCONFIG_$(call qstrip,$(BR2_ENDIAN))_ENDIAN \ + -DCONFIG_IOCTL_CFG80211 \ + -DRTW_USE_CFG80211_STA_EVENT \ + -Wno-error=address \ + -Wno-error=array-bounds \ + -Wno-error=cast-function-type + +RTL8812AU_AIRCRACK_NG_MODULE_MAKE_OPTS = \ + CONFIG_PLATFORM_I386_PC=n \ + CONFIG_88XXAU=m \ + KVER=$(LINUX_VERSION_PROBED) \ + USER_EXTRA_CFLAGS="$(RTL8812AU_AIRCRACK_NG_EXTRA_CFLAGS)" + +define RTL8812AU_AIRCRACK_NG_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_NET) + $(call KCONFIG_ENABLE_OPT,CONFIG_WIRELESS) + $(call KCONFIG_ENABLE_OPT,CONFIG_CFG80211) + $(call KCONFIG_ENABLE_OPT,CONFIG_USB_SUPPORT) + $(call KCONFIG_ENABLE_OPT,CONFIG_USB) +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/rtl8821au/Config.in b/package/rtl8821au/Config.in new file mode 100644 index 00000000..3d7bbf64 --- /dev/null +++ b/package/rtl8821au/Config.in @@ -0,0 +1,12 @@ +comment "rtl8821au needs a Linux kernel to be built" + depends on !BR2_s390x + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_RTL8821AU + bool "rtl8821au" + depends on !BR2_s390x + depends on BR2_LINUX_KERNEL + help + rtl8821au wifi driver + + https://github.com/abperiasamy/rtl8812AU_8821AU_linux diff --git a/package/rtl8821au/rtl8821au.hash b/package/rtl8821au/rtl8821au.hash new file mode 100644 index 00000000..56e5609e --- /dev/null +++ b/package/rtl8821au/rtl8821au.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 fde8ca9735a6c9c4c907fb6f565185a59b04bcfa78feb2309941cc09d49c4ac7 rtl8821au-8ea0ed9da764448c7310a27744ab5814289f35a8.tar.gz +sha256 640d90f6ee401241ff62834d0d1b33f83049e99b8bfdfa04ed1b0a1635dde3e7 LICENSE diff --git a/package/rtl8821au/rtl8821au.mk b/package/rtl8821au/rtl8821au.mk new file mode 100644 index 00000000..9a926964 --- /dev/null +++ b/package/rtl8821au/rtl8821au.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# rtl8821au +# +################################################################################ + +RTL8821AU_VERSION = 8ea0ed9da764448c7310a27744ab5814289f35a8 +RTL8821AU_SITE = $(call github,lwfinger,rtl8812au,$(RTL8821AU_VERSION)) +RTL8821AU_LICENSE = GPL-2.0 +RTL8821AU_LICENSE_FILES = LICENSE + +define RTL8821AU_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_NET) + $(call KCONFIG_ENABLE_OPT,CONFIG_WIRELESS) + $(call KCONFIG_ENABLE_OPT,CONFIG_CFG80211) + $(call KCONFIG_ENABLE_OPT,CONFIG_USB_SUPPORT) + $(call KCONFIG_ENABLE_OPT,CONFIG_USB) +endef + +RTL8821AU_MODULE_MAKE_OPTS = \ + CONFIG_RTL8812AU_8821AU=m \ + KVER=$(LINUX_VERSION_PROBED) \ + USER_EXTRA_CFLAGS="-DCONFIG_$(call qstrip,$(BR2_ENDIAN))_ENDIAN \ + -Wno-error" + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/rtl8821cu/Config.in b/package/rtl8821cu/Config.in new file mode 100644 index 00000000..00a41b51 --- /dev/null +++ b/package/rtl8821cu/Config.in @@ -0,0 +1,12 @@ +comment "rtl8821cu needs a Linux kernel to be built" + depends on !BR2_s390x + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_RTL8821CU + bool "rtl8821cu" + depends on !BR2_s390x + depends on BR2_LINUX_KERNEL + help + rtl8821cu wifi driver + + https://github.com/brektrou/rtl8821CU diff --git a/package/rtl8821cu/rtl8821cu.hash b/package/rtl8821cu/rtl8821cu.hash new file mode 100644 index 00000000..fba2f7a1 --- /dev/null +++ b/package/rtl8821cu/rtl8821cu.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c04741129e815c30c51e509012d1a21e4f6d568c211921e6bc46e1adc3d4d4e1 rtl8821cu-0b505f382ea67bd8bdc9288ba5dbe7f4c9de33c0.tar.gz +sha256 22cdb0a9cf492dbf05c5b27381a5c0e73ae0d4622427b522b0ba92b7495e5fb0 LICENSE diff --git a/package/rtl8821cu/rtl8821cu.mk b/package/rtl8821cu/rtl8821cu.mk new file mode 100644 index 00000000..39aea1d7 --- /dev/null +++ b/package/rtl8821cu/rtl8821cu.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# rtl8821cu +# +################################################################################ + +RTL8821CU_VERSION = 0b505f382ea67bd8bdc9288ba5dbe7f4c9de33c0 +RTL8821CU_SITE = $(call github,morrownr,8821cu-20210916,$(RTL8821CU_VERSION)) +RTL8821CU_LICENSE = GPL-2.0 +RTL8821CU_LICENSE_FILES = LICENSE + +define RTL8821CU_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_NET) + $(call KCONFIG_ENABLE_OPT,CONFIG_WIRELESS) + $(call KCONFIG_ENABLE_OPT,CONFIG_CFG80211) + $(call KCONFIG_ENABLE_OPT,CONFIG_USB_SUPPORT) + $(call KCONFIG_ENABLE_OPT,CONFIG_USB) +endef + +RTL8821CU_USER_EXTRA_CFLAGS = \ + -DCONFIG_$(call qstrip,$(BR2_ENDIAN))_ENDIAN \ + -DCONFIG_IOCTL_CFG80211 \ + -DRTW_USE_CFG80211_STA_EVENT \ + -Wno-error + +RTL8821CU_MODULE_MAKE_OPTS = \ + CONFIG_PLATFORM_AUTODETECT=n \ + CONFIG_RTL8821CU=m \ + KVER=$(LINUX_VERSION_PROBED) \ + USER_EXTRA_CFLAGS="$(RTL8821CU_USER_EXTRA_CFLAGS)" + +define RTL8821CU_INSTALL_MODPROBE_CONF + $(INSTALL) -m 0644 -D $(@D)/8821cu.conf \ + $(TARGET_DIR)/etc/modprobe.d/8821cu.conf +endef +RTL8821CU_POST_INSTALL_TARGET_HOOKS += RTL8821CU_INSTALL_MODPROBE_CONF + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/rtl8822cs/Config.in b/package/rtl8822cs/Config.in new file mode 100644 index 00000000..c827291a --- /dev/null +++ b/package/rtl8822cs/Config.in @@ -0,0 +1,13 @@ +comment "rl8822cs needs a Linux kernel to be built" + depends on !BR2_s390x + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_RTL8822CS + bool "rtl8822cs" + depends on !BR2_s390x + depends on BR2_LINUX_KERNEL + help + Realtek RTL8822CS Wi-Fi driver as a kernel module (JetHome + repository) + + https://github.com/jethome-ru/rtl88x2cs/ diff --git a/package/rtl8822cs/rtl8822cs.hash b/package/rtl8822cs/rtl8822cs.hash new file mode 100644 index 00000000..53fc06cc --- /dev/null +++ b/package/rtl8822cs/rtl8822cs.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9aea86233848e9edb497b27614c78680f7bb1962579d4b05333d9c1a189c62fe rtl8822cs-40450f759c8a930d271b5f0a663685f412debc72.tar.gz diff --git a/package/rtl8822cs/rtl8822cs.mk b/package/rtl8822cs/rtl8822cs.mk new file mode 100644 index 00000000..223d232c --- /dev/null +++ b/package/rtl8822cs/rtl8822cs.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# rtl8822cs +# +################################################################################ + +RTL8822CS_VERSION = 40450f759c8a930d271b5f0a663685f412debc72 +RTL8822CS_SITE = $(call github,jethome-ru,rtl88x2cs,$(RTL8822CS_VERSION)) +RTL8822CS_LICENSE = GPL-2.0 + +RTL8822CS_MODULE_MAKE_OPTS = \ + CONFIG_RTL8822CS=m \ + KVER=$(LINUX_VERSION_PROBED) \ + KSRC=$(LINUX_DIR) + +define RTL8822CS_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_NET) + $(call KCONFIG_ENABLE_OPT,CONFIG_WIRELESS) + $(call KCONFIG_ENABLE_OPT,CONFIG_CFG80211) + $(call KCONFIG_ENABLE_OPT,CONFIG_MAC80211) + $(call KCONFIG_ENABLE_OPT,CONFIG_MMC) +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/rtl_433/Config.in b/package/rtl_433/Config.in new file mode 100644 index 00000000..01c1e2f5 --- /dev/null +++ b/package/rtl_433/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_RTL_433 + bool "rtl_433" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBOPENSSL_ENABLE_PSK if BR2_PACKAGE_LIBOPENSSL + help + rtl_433 (despite the name) is a generic data receiver, mainly + for the 433.92 MHz, 868 MHz (SRD), 315 MHz, 345 MHz, and 915 + MHz ISM bands. + + https://github.com/merbanan/rtl_433 diff --git a/package/rtl_433/rtl_433.hash b/package/rtl_433/rtl_433.hash new file mode 100644 index 00000000..3a00e0ca --- /dev/null +++ b/package/rtl_433/rtl_433.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 1260c58400bf35832ac1b76cb3cccf3dc1335ffa2416909c63c7d7060c74663b rtl_433-23.11.tar.gz +# License file, locally calculated +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/rtl_433/rtl_433.mk b/package/rtl_433/rtl_433.mk new file mode 100644 index 00000000..0af25c79 --- /dev/null +++ b/package/rtl_433/rtl_433.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# rtl_433 +# +################################################################################ + +RTL_433_VERSION = 23.11 +RTL_433_SITE = $(call github,merbanan,rtl_433,$(RTL_433_VERSION)) +RTL_433_LICENSE = GPL-2.0+ +RTL_433_LICENSE_FILES = COPYING +RTL_433_CPE_ID_VALID = YES + +# Force Release build to remove ASAN. +RTL_433_CONF_OPTS = \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_DOCUMENTATION=OFF \ + -DBUILD_TESTING=OFF \ + -DBUILD_TESTING_ANALYZER=OFF \ + -DENABLE_SOAPYSDR=OFF + +ifeq ($(BR2_PACKAGE_LIBRTLSDR),y) +RTL_433_DEPENDENCIES += librtlsdr +RTL_433_CONF_OPTS += -DENABLE_RTLSDR=ON +else +RTL_433_CONF_OPTS += -DENABLE_RTLSDR=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +RTL_433_DEPENDENCIES += openssl +RTL_433_CONF_OPTS += -DENABLE_OPENSSL=ON +else +RTL_433_CONF_OPTS += -DENABLE_OPENSSL=OFF +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +RTL_433_CONF_OPTS += -DENABLE_THREADS=ON +else +RTL_433_CONF_OPTS += -DENABLE_THREADS=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/rtmpdump/Config.in b/package/rtmpdump/Config.in new file mode 100644 index 00000000..5e9c5084 --- /dev/null +++ b/package/rtmpdump/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_RTMPDUMP + bool "librtmp" + select BR2_PACKAGE_ZLIB + help + rtmpdump - RTMPDump Real-Time Messaging Protocol API + Only librtmp is installed by this package. + + http://rtmpdump.mplayerhq.hu diff --git a/package/rtmpdump/rtmpdump.hash b/package/rtmpdump/rtmpdump.hash new file mode 100644 index 00000000..3aca9bda --- /dev/null +++ b/package/rtmpdump/rtmpdump.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 372b5574af90ad3ec8cb7fde9bb3db76f7f7379c135a31d7af2c1ebba3051526 rtmpdump-6f6bb1353fc84f4cc37138baa99f586750028a01-git4.tar.gz +sha256 03fe7ca91cc28e99b4003d5b3bd4ce3b084d4c475fdf9975cf0e7fdf4dc739cd librtmp/COPYING diff --git a/package/rtmpdump/rtmpdump.mk b/package/rtmpdump/rtmpdump.mk new file mode 100644 index 00000000..4dfacb59 --- /dev/null +++ b/package/rtmpdump/rtmpdump.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# rtmpdump +# +################################################################################ + +RTMPDUMP_VERSION = 6f6bb1353fc84f4cc37138baa99f586750028a01 +RTMPDUMP_SITE = https://git.ffmpeg.org/rtmpdump +RTMPDUMP_SITE_METHOD = git +RTMPDUMP_INSTALL_STAGING = YES +# Note that rtmpdump is GPL-2.0 but librtmp has its own license and since we only +# care about librtmp, it's LGPL-2.1+ +RTMPDUMP_LICENSE = LGPL-2.1+ +RTMPDUMP_LICENSE_FILES = librtmp/COPYING +RTMPDUMP_CPE_ID_VALID = YES +RTMPDUMP_DEPENDENCIES = zlib + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +RTMPDUMP_DEPENDENCIES += gnutls +RTMPDUMP_CRYPTO = GNUTLS +else +# no crypto +RTMPDUMP_CRYPTO = +endif + +RTMPDUMP_CFLAGS = $(TARGET_CFLAGS) + +ifneq ($(BR2_STATIC_LIBS),y) +RTMPDUMP_CFLAGS += -fPIC +else +RTMPDUMP_SHARED = "SHARED=" +endif + +RTMPDUMP_MAKE_FLAGS = \ + CRYPTO=$(RTMPDUMP_CRYPTO) \ + prefix=/usr \ + $(RTMPDUMP_SHARED) + +define RTMPDUMP_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(RTMPDUMP_MAKE_FLAGS) \ + XCFLAGS="$(RTMPDUMP_CFLAGS)" \ + XLDFLAGS="$(TARGET_LDFLAGS)" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + -C $(@D)/librtmp +endef + +define RTMPDUMP_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/librtmp install DESTDIR=$(STAGING_DIR) $(RTMPDUMP_MAKE_FLAGS) +endef + +define RTMPDUMP_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/librtmp install DESTDIR=$(TARGET_DIR) $(RTMPDUMP_MAKE_FLAGS) +endef + +$(eval $(generic-package)) diff --git a/package/rtorrent/0001-Added--disable-execinfo-option-to-configure.patch b/package/rtorrent/0001-Added--disable-execinfo-option-to-configure.patch new file mode 100644 index 00000000..4ff4182b --- /dev/null +++ b/package/rtorrent/0001-Added--disable-execinfo-option-to-configure.patch @@ -0,0 +1,34 @@ +From 582e4e40256b43d3e5322168f1e1ed71ca70ab64 Mon Sep 17 00:00:00 2001 +From: rakshasa +Date: Wed, 16 Jun 2021 23:29:01 +0900 +Subject: [PATCH] Added '--disable-execinfo' option to configure. + +[Retrieved (and backported) from: +https://github.com/rakshasa/rtorrent/commit/582e4e40256b43d3e5322168f1e1ed71ca70ab64] +Signed-off-by: Fabrice Fontaine +--- + configure.ac | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index e3e7d3f1..0f45bc6a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -27,7 +27,15 @@ TORRENT_WITHOUT_VARIABLE_FDSET + + AC_SYS_LARGEFILE + +-TORRENT_CHECK_EXECINFO ++AC_ARG_ENABLE(execinfo, ++ AC_HELP_STRING([--disable-execinfo], [disable libexecinfo [[default=enable]]]), ++ [ ++ if test "$enableval" = "yes"; then ++ TORRENT_CHECK_EXECINFO ++ fi ++ ],[ ++ TORRENT_CHECK_EXECINFO ++ ]) + + TORRENT_ENABLE_ARCH + TORRENT_WITH_SYSROOT + diff --git a/package/rtorrent/Config.in b/package/rtorrent/Config.in new file mode 100644 index 00000000..6bbcaaf5 --- /dev/null +++ b/package/rtorrent/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_RTORRENT + bool "rtorrent" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + # gcc < 4.9 cause an "internal compiler error" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_TOOLCHAIN_HAS_SYNC_1 && BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBTORRENT + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_OPENSSL + help + BitTorrent Client using libtorrent + + https://github.com/rakshasa/rtorrent + +comment "rtorrent needs a toolchain w/ C++, threads, wchar, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_1 && BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR && \ + BR2_TOOLCHAIN_HAS_THREADS && BR2_TOOLCHAIN_GCC_AT_LEAST_4_9) diff --git a/package/rtorrent/rtorrent.hash b/package/rtorrent/rtorrent.hash new file mode 100644 index 00000000..04036646 --- /dev/null +++ b/package/rtorrent/rtorrent.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 9edf0304bf142215d3bc85a0771446b6a72d0ad8218efbe184b41e4c9c7542af rtorrent-0.9.8.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/rtorrent/rtorrent.mk b/package/rtorrent/rtorrent.mk new file mode 100644 index 00000000..210b1d34 --- /dev/null +++ b/package/rtorrent/rtorrent.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# rtorrent +# +################################################################################ + +RTORRENT_VERSION = 0.9.8 +RTORRENT_SITE = http://rtorrent.net/downloads +RTORRENT_DEPENDENCIES = host-pkgconf libcurl libtorrent ncurses +RTORRENT_LICENSE = GPL-2.0 +RTORRENT_LICENSE_FILES = COPYING +# We're patching configure.ac +RTORRENT_AUTORECONF = YES +RTORRENT_CONF_OPTS = --disable-execinfo + +$(eval $(autotools-package)) diff --git a/package/rtptools/Config.in b/package/rtptools/Config.in new file mode 100644 index 00000000..80bbb7a7 --- /dev/null +++ b/package/rtptools/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_RTPTOOLS + bool "rtptools" + help + The rtptools distribution consists of a number of small + applications that can be used for processing RTP data. + + http://www.cs.columbia.edu/irt/software/rtptools/ diff --git a/package/rtptools/rtptools.hash b/package/rtptools/rtptools.hash new file mode 100644 index 00000000..6988483b --- /dev/null +++ b/package/rtptools/rtptools.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2c76b2a423fb943820c91194372133a44cbdc456ebf69c51616ec50eeb068c28 rtptools-1.22.tar.gz +sha256 f864592065e232c0b444ae9682a7a1a2c6aafe96712999f794bec24d4441a6a9 LICENSE diff --git a/package/rtptools/rtptools.mk b/package/rtptools/rtptools.mk new file mode 100644 index 00000000..2148b759 --- /dev/null +++ b/package/rtptools/rtptools.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# rtptools +# +################################################################################ + +RTPTOOLS_VERSION = 1.22 +RTPTOOLS_SITE = http://www.cs.columbia.edu/irt/software/rtptools/download +RTPTOOLS_LICENSE = BSD-3-Clause +RTPTOOLS_LICENSE_FILES = LICENSE +RTPTOOLS_CONF_ENV = ac_cv_prog_FOUND_CLANG=no + +$(eval $(autotools-package)) diff --git a/package/rtty/Config.in b/package/rtty/Config.in new file mode 100644 index 00000000..da5afb83 --- /dev/null +++ b/package/rtty/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_RTTY + bool "rtty" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBEV + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + Access your device's terminal from anywhere via the web. + + https://github.com/zhaojh329/rtty diff --git a/package/rtty/rtty.hash b/package/rtty/rtty.hash new file mode 100644 index 00000000..004314ee --- /dev/null +++ b/package/rtty/rtty.hash @@ -0,0 +1,2 @@ +sha256 522b0fc5e032c3b84ac707abce8ac4ff5609900011f8f300ce4f4246abac0acc rtty-8.1.2.tar.gz +sha256 99efed4bbc0b62f96f999ef23399e38234fb91651af734fd389a52b033a85b55 LICENSE diff --git a/package/rtty/rtty.mk b/package/rtty/rtty.mk new file mode 100644 index 00000000..618971c9 --- /dev/null +++ b/package/rtty/rtty.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# rtty +# +################################################################################ + +RTTY_VERSION = 8.1.2 +RTTY_SITE = https://github.com/zhaojh329/rtty/releases/download/v$(RTTY_VERSION) +RTTY_LICENSE = MIT +RTTY_LICENSE_FILES = LICENSE +RTTY_DEPENDENCIES = libev + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +RTTY_DEPENDENCIES += libxcrypt +endif + +ifeq ($(BR2_PACKAGE_MBEDTLS),y) +RTTY_DEPENDENCIES += mbedtls +RTTY_CONF_OPTS += \ + -DSSL_SUPPORT=ON \ + -DUSE_MBEDTLS=ON \ + -DUSE_OPENSSL=OFF \ + -DUSE_WOLFSSL=OFF +else ifeq ($(BR2_PACKAGE_OPENSSL),y) +RTTY_DEPENDENCIES += host-pkgconf openssl +RTTY_CONF_OPTS += \ + -DSSL_SUPPORT=ON \ + -DUSE_MBEDTLS=OFF \ + -DUSE_OPENSSL=ON \ + -DUSE_WOLFSSL=OFF +else ifeq ($(BR2_PACKAGE_WOLFSSL_ALL),y) +RTTY_DEPENDENCIES += wolfssl +RTTY_CONF_OPTS += \ + -DSSL_SUPPORT=ON \ + -DUSE_MBEDTLS=OFF \ + -DUSE_OPENSSL=OFF \ + -DUSE_WOLFSSL=ON +else +RTTY_CONF_OPTS += -DSSL_SUPPORT=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/rubix/0001-dont-use-legacy-functions.patch b/package/rubix/0001-dont-use-legacy-functions.patch new file mode 100644 index 00000000..9c34aee6 --- /dev/null +++ b/package/rubix/0001-dont-use-legacy-functions.patch @@ -0,0 +1,18 @@ +Use strstr() instead of index(), since index() is a legacy function +and it may not be available in uClibc, depending on the configuration. + +Signed-off-by: Thomas Petazzoni + +Index: rubix-1.0.5/cube.c +=================================================================== +--- rubix-1.0.5.orig/cube.c 2010-02-14 14:19:05.000000000 +0100 ++++ rubix-1.0.5/cube.c 2010-02-14 14:19:14.000000000 +0100 +@@ -257,7 +257,7 @@ + if (i==-1) goto finish; + if (buffer[0]=='%') goto new_section; + buffer[0]=toupper(buffer[0]); +- ptr = index(buffer, '='); ++ ptr = strstr(buffer, '='); + if (ptr) { + ++ptr; + while (isspace(*ptr)) ++ptr; diff --git a/package/rubix/0002-misc-fixes.patch b/package/rubix/0002-misc-fixes.patch new file mode 100644 index 00000000..3ce6dad2 --- /dev/null +++ b/package/rubix/0002-misc-fixes.patch @@ -0,0 +1,135 @@ +diff -Nrup rubix-1.0.5/fillpoly.c rubix-1.0.5-avr32/fillpoly.c +--- rubix-1.0.5/fillpoly.c 2003-10-12 15:41:43.000000000 -0400 ++++ rubix-1.0.5-avr32/fillpoly.c 2008-02-29 12:39:51.000000000 -0500 +@@ -435,7 +435,7 @@ void fill_lines(device *d, int thecol) + ); + #endif + } +- } else if (d->depth==16) { /* here 16bpp */ ++ } else if ((d->depth==16) | (d->depth==15)) { /* here 16bpp */ + register int i; + #ifndef PC_ARCHI + register int j; +diff -Nrup rubix-1.0.5/line.c rubix-1.0.5-avr32/line.c +--- rubix-1.0.5/line.c 2003-10-12 14:15:19.000000000 -0400 ++++ rubix-1.0.5-avr32/line.c 2008-02-29 12:39:51.000000000 -0500 +@@ -1317,7 +1317,7 @@ void drawline(device *d, line *l) + #endif + if (d->depth==8) + drawline8(d, l); +- else if (d->depth==16) ++ else if ((d->depth==16) | (d->depth==15)) + drawline16(d, l); + else if (d->depth==24) + drawline24(d, l); +diff -Nrup rubix-1.0.5/Makefile rubix-1.0.5-avr32/Makefile +--- rubix-1.0.5/Makefile 2003-12-04 14:27:58.000000000 -0500 ++++ rubix-1.0.5-avr32/Makefile 2008-02-29 12:58:30.000000000 -0500 +@@ -11,21 +11,17 @@ + # Customize to fit your needs (especially if it does not work for now). + + LANGUAGE=ENGLISH +-GAMESDIR=/usr/games + + #architecture=-DPC_ARCHI + + # For Solaris + #EXTRALIBS=-lsocket + +-CC=gcc + CFLAGS=-Wall -O3 -fomit-frame-pointer -ffast-math \ + -DGAMESDIR="\"$(GAMESDIR)\"" \ + -D$(LANGUAGE) $(architecture) + + #CFLAGS=-Wall -g -ffast-math -Iplayer $(architecture) +-XINC=-I/usr/X11R6/include +-XLIB=-L/usr/X11R6/lib -lX11 + + #the following should not be changed. + +@@ -37,7 +33,7 @@ rubix : $(OBJ) + + install : + mkdir -p $(GAMESDIR) +- install -c -s rubix $(GAMESDIR) ++ install -c rubix $(GAMESDIR) + + clean : + rm -f *.o *~ core *.bak *.dat gmon.out +diff -Nrup rubix-1.0.5/screen.c rubix-1.0.5-avr32/screen.c +--- rubix-1.0.5/screen.c 2004-04-26 04:26:05.000000000 -0400 ++++ rubix-1.0.5-avr32/screen.c 2008-02-29 12:39:51.000000000 -0500 +@@ -80,11 +80,17 @@ void error_statement(SCREEN *s) + + int reset_data_buffers(SCREEN *s) + { ++ int temp; + + if (s->im) + XDestroyImage(s->im); ++ if (s->depth == 15) { ++ temp=16; ++ } else { ++ temp=s->depth; ++ } + +- s->buffer=(char *)malloc(((SCREEN_X+7)/8)*SCREEN_Y*s->depth); ++ s->buffer=(char *)malloc(((SCREEN_X+7)/8)*SCREEN_Y*temp); + + if (!s->buffer) { + error_statement(s); +@@ -106,7 +112,7 @@ int reset_data_buffers(SCREEN *s) + */ + /* Sed - december 2003 - no it has to be 8 */ + s->im=XCreateImage(s->d, DefaultVisual(s->d, DefaultScreen(s->d)), +- s->depth==32?24:s->depth, ZPixmap, ++ s->depth, ZPixmap, + 0, s->buffer, SCREEN_X, SCREEN_Y, 8, 0); + + if (!s->im) { +@@ -139,8 +145,8 @@ int init_screen(SCREEN *s) + + s->depth=DefaultDepth(s->d, DefaultScreen(s->d)); + +- if (s->depth!=8 && s->depth!=16 && s->depth!=24) { +- fprintf(stderr, "screen depth not supported (only 8, 16 and 24bpp (which means 32bpp too) handled\n"); ++ if (s->depth!=8 && s->depth!=15 && s->depth!=16 && s->depth!=24) { ++ fprintf(stderr, "screen depth not supported (only 8, 15, 16 and 24bpp (which means 32bpp too) handled\n"); + XCloseDisplay(s->d); + s->d=(Display *)0; + return -1; +@@ -182,10 +188,10 @@ int init_screen(SCREEN *s) + + /* let's create and map our window */ + s->w=XCreateWindow(s->d, DefaultRootWindow(s->d), 0, 0, +- SCREEN_X, SCREEN_Y, 3, s->depth==32?24:s->depth, ++ SCREEN_X, SCREEN_Y, 3, s->depth, + CopyFromParent, CopyFromParent, 0, NULL); + s->h=XCreateWindow(s->d, DefaultRootWindow(s->d), 0, 0, +- HELP_X, HELP_Y, 3, s->depth==32?24:s->depth, ++ HELP_X, HELP_Y, 3, s->depth, + CopyFromParent, CopyFromParent, 0, NULL); + + xch.res_name = "rubix"; +@@ -946,13 +952,18 @@ void close_screen(SCREEN *s) + void clear_screen(SCREEN *s) + { + /* fill s->im with pixel[10], avoid XPutPixel which is rather slow... */ +- int i, w, dw; ++ int i, w, dw, temp; ++ if (s->depth == 15) { ++ temp = 16; ++ } else { ++ temp = s->depth; ++ } + w = (SCREEN_X+7)/8; +- dw = s->depth/8; ++ dw = temp/8; + XPutPixel(s->im, 0, 0, pixel[10]); + for (i=1; i<8*w; i++) + memcpy(s->buffer + i*dw, s->buffer, dw); +- w = w * s->depth; ++ w = w * temp; + for (i=1; ibuffer + i*w, s->buffer, w); + } diff --git a/package/rubix/Config.in b/package/rubix/Config.in new file mode 100644 index 00000000..e814a95f --- /dev/null +++ b/package/rubix/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_RUBIX + bool "rubix" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + help + A 3D rubiks cube game for X + + http://sed.free.fr/rubix diff --git a/package/rubix/rubix.hash b/package/rubix/rubix.hash new file mode 100644 index 00000000..8ff54318 --- /dev/null +++ b/package/rubix/rubix.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 ccff4c98373f76c6bab751f5f5a60df7ad8691c79b56157e4aba2dd76f501a87 rubix-1.0.6.tar.bz2 +sha256 429d04118c02bc92d834c430601f8c0c8df1ab27e3617ec73ad3f66c5953475d LICENCE diff --git a/package/rubix/rubix.mk b/package/rubix/rubix.mk new file mode 100644 index 00000000..937339f5 --- /dev/null +++ b/package/rubix/rubix.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# rubix +# +################################################################################ + +RUBIX_VERSION = 1.0.6 +RUBIX_SOURCE = rubix-$(RUBIX_VERSION).tar.bz2 +RUBIX_SITE = http://sed.free.fr/rubix +RUBIX_LICENSE = Public Domain +RUBIX_LICENSE_FILES = LICENCE +RUBIX_DEPENDENCIES = xlib_libX11 + +RUBIX_MAKE_OPTS = \ + CC="$(TARGET_CC)" \ + XINC="-I$(STAGING_DIR)/usr/include/X11" \ + XLIB="-L$(STAGING_DIR)/usr/lib -lX11" + +RUBIX_INSTALL_TARGET_OPTS = GAMESDIR=$(TARGET_DIR)/usr/games install + +define RUBIX_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(RUBIX_MAKE_OPTS) rubix +endef + +define RUBIX_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(RUBIX_MAKE_OPTS) \ + $(RUBIX_INSTALL_TARGET_OPTS) +endef + +$(eval $(generic-package)) diff --git a/package/ruby/Config.in b/package/ruby/Config.in new file mode 100644 index 00000000..c2101209 --- /dev/null +++ b/package/ruby/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_RUBY + bool "ruby" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_HOST_GCC_AT_LEAST_4_9 + help + Object Oriented Scripting Language. + + http://www.ruby-lang.org/ + +comment "ruby needs a toolchain w/ wchar, threads, dynamic library, gcc >= 4.9, host gcc >= 4.9" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_HOST_GCC_AT_LEAST_4_9 diff --git a/package/ruby/ruby.hash b/package/ruby/ruby.hash new file mode 100644 index 00000000..3831e701 --- /dev/null +++ b/package/ruby/ruby.hash @@ -0,0 +1,7 @@ +# https://www.ruby-lang.org/en/news/2024/07/09/ruby-3-3-4-released/ +sha512 b26461a13ff82a08a282f10108028bb2a2e4a28da6182a291062fc54089c6655d79c22cc69d59156f9b11cb10a17fe8c69d489343fbae123a45f03361b95c9eb ruby-3.3.4.tar.xz + +# License files, Locally calculated +sha256 e849b28d324423e636a3e6bc5d583cdaf4bd046c2b20872c53886b612d01a4a1 LEGAL +sha256 967586d538a28955ec2541910cf63c5ac345fcdea94bfb1f1705a1f6eb36bcbb COPYING +sha256 36a9a6e7347214bbba599a412617204e65bff065dcbe5c46f5cb454c80de9eb0 BSDL diff --git a/package/ruby/ruby.mk b/package/ruby/ruby.mk new file mode 100644 index 00000000..08ecbf59 --- /dev/null +++ b/package/ruby/ruby.mk @@ -0,0 +1,110 @@ +################################################################################ +# +# ruby +# +################################################################################ + +RUBY_VERSION_MAJOR = 3.3 +RUBY_VERSION = $(RUBY_VERSION_MAJOR).4 +RUBY_VERSION_EXT = 3.3.0 +RUBY_SITE = http://cache.ruby-lang.org/pub/ruby/$(RUBY_VERSION_MAJOR) +RUBY_SOURCE = ruby-$(RUBY_VERSION).tar.xz + +RUBY_LICENSE = \ + Ruby or BSD-2-Clause, \ + BSD-3-Clause, \ + MIT, \ + others +RUBY_LICENSE_FILES = LEGAL COPYING BSDL + +RUBY_CPE_ID_VENDOR = ruby-lang + +RUBY_DEPENDENCIES = host-pkgconf host-ruby +HOST_RUBY_DEPENDENCIES = host-libyaml host-pkgconf host-openssl +RUBY_MAKE_ENV = $(TARGET_MAKE_ENV) +RUBY_CONF_OPTS = \ + --disable-install-doc \ + --disable-rpath \ + --disable-rubygems \ + --disable-yjit +HOST_RUBY_CONF_OPTS = \ + --disable-install-doc \ + --disable-yjit \ + --with-out-ext=curses,readline \ + --without-gmp + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +RUBY_CONF_ENV += LIBS=-latomic +endif + +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_TOOLCHAIN_HAS_SSP),) +RUBY_CONF_ENV += stack_protector=no +endif + +# Force optionals to build before we do +ifeq ($(BR2_PACKAGE_BERKELEYDB),y) +RUBY_DEPENDENCIES += berkeleydb +endif +ifeq ($(BR2_PACKAGE_LIBFFI),y) +RUBY_DEPENDENCIES += libffi +else +# Disable fiddle to avoid a build failure with bundled-libffi on MIPS +RUBY_CONF_OPTS += --with-out-ext=fiddle +endif +ifeq ($(BR2_PACKAGE_GDBM),y) +RUBY_DEPENDENCIES += gdbm +endif +ifeq ($(BR2_PACKAGE_LIBYAML),y) +RUBY_DEPENDENCIES += libyaml +endif +ifeq ($(BR2_PACKAGE_NCURSES),y) +RUBY_DEPENDENCIES += ncurses +endif +ifeq ($(BR2_PACKAGE_OPENSSL),y) +RUBY_DEPENDENCIES += openssl +endif +ifeq ($(BR2_PACKAGE_READLINE),y) +RUBY_DEPENDENCIES += readline +endif +ifeq ($(BR2_PACKAGE_ZLIB),y) +RUBY_DEPENDENCIES += zlib +endif +ifeq ($(BR2_PACKAGE_GMP),y) +RUBY_DEPENDENCIES += gmp +RUBY_CONF_OPTS += --with-gmp +else +RUBY_CONF_OPTS += --without-gmp +endif + +RUBY_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_83143),y) +RUBY_CFLAGS += -freorder-blocks-algorithm=simple +endif + +RUBY_CONF_OPTS += CFLAGS="$(RUBY_CFLAGS)" + +# Remove rubygems and friends, as they need extensions that aren't +# built and a target compiler. +RUBY_EXTENSIONS_REMOVE = rake* rdoc* rubygems* +define RUBY_REMOVE_RUBYGEMS + rm -f $(addprefix $(TARGET_DIR)/usr/bin/, gem rdoc ri rake) + rm -rf $(TARGET_DIR)/usr/lib/ruby/gems + rm -rf $(addprefix $(TARGET_DIR)/usr/lib/ruby/$(RUBY_VERSION_EXT)/, \ + $(RUBY_EXTENSIONS_REMOVE)) +endef +RUBY_POST_INSTALL_TARGET_HOOKS += RUBY_REMOVE_RUBYGEMS + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/runc/Config.in b/package/runc/Config.in new file mode 100644 index 00000000..73eac725 --- /dev/null +++ b/package/runc/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_RUNC + bool "runc" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_TOOLCHAIN_USES_UCLIBC # no fexecve + select BR2_PACKAGE_HOST_GO + help + runC is a CLI tool for spawning and running containers + according to the OCI specification. + + https://github.com/opencontainers/runc + +comment "runc needs a glibc or musl toolchain w/ threads" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS && \ + BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_UCLIBC diff --git a/package/runc/Config.in.host b/package/runc/Config.in.host new file mode 100644 index 00000000..78193cb4 --- /dev/null +++ b/package/runc/Config.in.host @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HOST_RUNC + bool "host runc" + depends on BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_GO + help + runC is a CLI tool for spawning and running containers + according to the OCI specification. + + https://github.com/opencontainers/runc diff --git a/package/runc/runc.hash b/package/runc/runc.hash new file mode 100644 index 00000000..95d6c2ed --- /dev/null +++ b/package/runc/runc.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 be31b07d6a54a8f234016501c300ad04b6c428c56588e7eca8c3b663308db208 runc-1.1.12-go2.tar.gz +sha256 552a739c3b25792263f731542238b92f6f8d07e9a488eae27e6c4690038a8243 LICENSE diff --git a/package/runc/runc.mk b/package/runc/runc.mk new file mode 100644 index 00000000..273509b8 --- /dev/null +++ b/package/runc/runc.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# runc +# +################################################################################ + +RUNC_VERSION = 1.1.12 +RUNC_SITE = $(call github,opencontainers,runc,v$(RUNC_VERSION)) +RUNC_LICENSE = Apache-2.0, LGPL-2.1 (libseccomp) +RUNC_LICENSE_FILES = LICENSE +RUNC_CPE_ID_VENDOR = linuxfoundation + +RUNC_LDFLAGS = -X main.version=$(RUNC_VERSION) +RUNC_TAGS = cgo static_build + +ifeq ($(BR2_PACKAGE_LIBAPPARMOR),y) +RUNC_DEPENDENCIES += libapparmor +RUNC_TAGS += apparmor +endif + +ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) +RUNC_TAGS += seccomp +RUNC_DEPENDENCIES += libseccomp host-pkgconf +endif + +HOST_RUNC_LDFLAGS = $(RUNC_LDFLAGS) +HOST_RUNC_TAGS = cgo static_build + +$(eval $(golang-package)) +$(eval $(host-golang-package)) diff --git a/package/rust-bin/rust-bin.hash b/package/rust-bin/rust-bin.hash new file mode 100644 index 00000000..853a5305 --- /dev/null +++ b/package/rust-bin/rust-bin.hash @@ -0,0 +1,70 @@ +# Generated with utils/update-rust +# Do not edit manually + +# From https://static.rust-lang.org/dist/rust-1.79.0-aarch64-unknown-linux-gnu.tar.xz.sha256 +sha256 8e7a2d514ee469325e5a7d0a2f0cad313aecb4c3da134f3bf84f7901a809d566 rust-1.79.0-aarch64-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-1.79.0-i686-unknown-linux-gnu.tar.xz.sha256 +sha256 74a4b17c7b80b87d2e1f4fa83c8c0c5e920eee6d72fe570df97aa96d85fc25ec rust-1.79.0-i686-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-1.79.0-powerpc-unknown-linux-gnu.tar.xz.sha256 +sha256 a640336f90db45a00e35444afd5f38ec8a9035b4f1f7ae17fb5d9357d3483773 rust-1.79.0-powerpc-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-1.79.0-powerpc64-unknown-linux-gnu.tar.xz.sha256 +sha256 dd5a1d8ec6c5810893388391f194b11876643d2add3918968ab1473bce9a2cc0 rust-1.79.0-powerpc64-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-1.79.0-powerpc64le-unknown-linux-gnu.tar.xz.sha256 +sha256 40d7dd809c873f9462a35735c511d82ba0e46edb56c74e8da01ff3a002bef2aa rust-1.79.0-powerpc64le-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-1.79.0-riscv64gc-unknown-linux-gnu.tar.xz.sha256 +sha256 acfb935d96986b05d6f8071a75ecc62f404d64faa65b81b1bb025821cfd3507b rust-1.79.0-riscv64gc-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-1.79.0-s390x-unknown-linux-gnu.tar.xz.sha256 +sha256 24aab3cef43b4d8319ad7976313cfcbd6942ebd7a1824d39707f5629dc615ba8 rust-1.79.0-s390x-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-1.79.0-x86_64-unknown-linux-gnu.tar.xz.sha256 +sha256 ce552d6bf22a2544ea78647d98cb405d5089af58dbcaa4efea711bf8becd71c5 rust-1.79.0-x86_64-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-aarch64-unknown-linux-gnu.tar.xz.sha256 +sha256 519abf4757fbd8d7e3bb4e4cfdc362ded972c1d95f04675684df2d31e8c0899b rust-std-1.79.0-aarch64-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-aarch64-unknown-linux-musl.tar.xz.sha256 +sha256 428bf4fb5a66e93c2e13a8cddae71e903559d8666c727f0d45ececc7da7d2404 rust-std-1.79.0-aarch64-unknown-linux-musl.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-arm-unknown-linux-gnueabi.tar.xz.sha256 +sha256 bae338708a07e26ac2f51c291478e33fb85fbff9632e2da2714f3d1a91c3773a rust-std-1.79.0-arm-unknown-linux-gnueabi.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-arm-unknown-linux-gnueabihf.tar.xz.sha256 +sha256 fa6f5f03b68faf9b4449266e4836bcae24027fba7a3822a48822d772fc76c064 rust-std-1.79.0-arm-unknown-linux-gnueabihf.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-arm-unknown-linux-musleabi.tar.xz.sha256 +sha256 1ba19c8e7dae60c7ae3f406545b65eef4fa6de31f3dd2fe83e0bbd06ade2c536 rust-std-1.79.0-arm-unknown-linux-musleabi.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-arm-unknown-linux-musleabihf.tar.xz.sha256 +sha256 24fa88bf0aa867be686c7d26233949ae9dbadc10b1e9c6ed36930cabe48d69b3 rust-std-1.79.0-arm-unknown-linux-musleabihf.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-armv5te-unknown-linux-gnueabi.tar.xz.sha256 +sha256 c2f906d1c9d130e06687eeea5ea50697485b321dd1a8e537200a52db508db361 rust-std-1.79.0-armv5te-unknown-linux-gnueabi.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-armv5te-unknown-linux-musleabi.tar.xz.sha256 +sha256 73f3bc406ce4bcd4d64b7101a07a82bfff0f3cf793ba071b04c250c1feb08a03 rust-std-1.79.0-armv5te-unknown-linux-musleabi.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-armv7-unknown-linux-gnueabi.tar.xz.sha256 +sha256 af7707874d52823cce0323a4ae900ed34201eefab97f4781c8280bf33ecb68b7 rust-std-1.79.0-armv7-unknown-linux-gnueabi.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-armv7-unknown-linux-gnueabihf.tar.xz.sha256 +sha256 a17fde385e3f420f5f825e019b4739a469a4aece9071a7ff7b7ff3c8a0486245 rust-std-1.79.0-armv7-unknown-linux-gnueabihf.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-armv7-unknown-linux-musleabi.tar.xz.sha256 +sha256 74957092140452f41f39eceaeb0490054181a36c4d2eec53ab3a611bd3c8c38f rust-std-1.79.0-armv7-unknown-linux-musleabi.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-armv7-unknown-linux-musleabihf.tar.xz.sha256 +sha256 344e2190418912eb4415ac38a819202fd05c51e2b8f926d42cf43f5121e479d2 rust-std-1.79.0-armv7-unknown-linux-musleabihf.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-i586-unknown-linux-gnu.tar.xz.sha256 +sha256 9c38f2cd4c19196fcf113166237ab03512bf19ce5a7f13c3bfe0e5cc3317eb44 rust-std-1.79.0-i586-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-i586-unknown-linux-musl.tar.xz.sha256 +sha256 a9ba68598744117d10fa074535bb48585d4f6ad77170cbcb43841a56dc76f5c7 rust-std-1.79.0-i586-unknown-linux-musl.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-i686-unknown-linux-gnu.tar.xz.sha256 +sha256 158294f7c424ef75d84046b573f225c15d531745cc79d416a18c11aa8253830e rust-std-1.79.0-i686-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-i686-unknown-linux-musl.tar.xz.sha256 +sha256 a0087ba6e159550aab8ff93390faec42e2687ec13908ab3e45946c2769aea00c rust-std-1.79.0-i686-unknown-linux-musl.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-powerpc-unknown-linux-gnu.tar.xz.sha256 +sha256 6aa2f351bc7dccb544781f4fecddb5ef67e05bb310c84e0106d968231384d9f4 rust-std-1.79.0-powerpc-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-powerpc64-unknown-linux-gnu.tar.xz.sha256 +sha256 af95929af71494ee3e6988ead07204ea05b6f2b729cdb1ffcc26db75e47bf318 rust-std-1.79.0-powerpc64-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-powerpc64le-unknown-linux-gnu.tar.xz.sha256 +sha256 3b5d53d70837d5ec942ec41a8da37ed932bbdc1e53f78dc54e218db458701588 rust-std-1.79.0-powerpc64le-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-riscv64gc-unknown-linux-gnu.tar.xz.sha256 +sha256 2b8af4060acb10f347c66a3477ae92151beba12192590ea40723dcf9b1f7f5b2 rust-std-1.79.0-riscv64gc-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-s390x-unknown-linux-gnu.tar.xz.sha256 +sha256 d70e710a5138871e8d972f195ced9f7aa639ccef23a87fa03cc527d2b9c3cd36 rust-std-1.79.0-s390x-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-sparc64-unknown-linux-gnu.tar.xz.sha256 +sha256 f7c7a73a8e5640f9d5aca6b26866b4da08cf3d3509ed1c4184309fb868acbff2 rust-std-1.79.0-sparc64-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-x86_64-unknown-linux-gnu.tar.xz.sha256 +sha256 2c914483c0882d44af2e50a181cbd2c953d672d50b31aa669ee2346cade1f108 rust-std-1.79.0-x86_64-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.79.0-x86_64-unknown-linux-musl.tar.xz.sha256 +sha256 30b9418561e6a7c18396a259304d3ddb4ad9d262f0ed6f227e08d232b8b32e8c rust-std-1.79.0-x86_64-unknown-linux-musl.tar.xz +# Locally generated +sha256 62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a LICENSE-APACHE +sha256 23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3 LICENSE-MIT diff --git a/package/rust-bin/rust-bin.mk b/package/rust-bin/rust-bin.mk new file mode 100644 index 00000000..1c9b0466 --- /dev/null +++ b/package/rust-bin/rust-bin.mk @@ -0,0 +1,64 @@ +################################################################################ +# +# rust-bin +# +################################################################################ + +# When updating this version, check whether support/download/cargo-post-process +# still generates the same archives. +RUST_BIN_VERSION = 1.79.0 +RUST_BIN_SITE = https://static.rust-lang.org/dist +RUST_BIN_LICENSE = Apache-2.0 or MIT +RUST_BIN_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT + +HOST_RUST_BIN_PROVIDES = host-rustc + +HOST_RUST_BIN_SOURCE = rust-$(RUST_BIN_VERSION)-$(RUSTC_HOST_NAME).tar.xz + +ifeq ($(BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS),y) +HOST_RUST_BIN_EXTRA_DOWNLOADS += rust-std-$(RUST_BIN_VERSION)-$(RUSTC_TARGET_NAME).tar.xz +endif + +HOST_RUST_BIN_LIBSTD_HOST_PREFIX = rust-std-$(RUSTC_HOST_NAME) + +define HOST_RUST_BIN_LIBSTD_EXTRACT + mkdir -p $(@D)/std + $(foreach f,$(HOST_RUST_BIN_EXTRA_DOWNLOADS), \ + $(call suitable-extractor,$(f)) $(HOST_RUST_BIN_DL_DIR)/$(f) | \ + $(TAR) -C $(@D)/std $(TAR_OPTIONS) - + ) + mkdir -p $(@D)/rustc/lib/rustlib/$(RUSTC_HOST_NAME)/lib + cd $(@D)/rustc/lib/rustlib/$(RUSTC_HOST_NAME)/lib; \ + ln -sf ../../../../../$(HOST_RUST_BIN_LIBSTD_HOST_PREFIX)/lib/rustlib/$(RUSTC_HOST_NAME)/lib/* . +endef + +HOST_RUST_BIN_POST_EXTRACT_HOOKS += HOST_RUST_BIN_LIBSTD_EXTRACT + +HOST_RUST_BIN_INSTALL_COMMON_OPTS = \ + --prefix=$(HOST_DIR) \ + --disable-ldconfig + +HOST_RUST_BIN_INSTALL_OPTS = \ + $(HOST_RUST_BIN_INSTALL_COMMON_OPTS) \ + --components=rustc,cargo,rust-std-$(RUSTC_HOST_NAME) + +define HOST_RUST_BIN_INSTALL_RUSTC + (cd $(@D); \ + ./install.sh $(HOST_RUST_BIN_INSTALL_OPTS)) +endef + +ifeq ($(BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS),y) +define HOST_RUST_BIN_INSTALL_LIBSTD_TARGET + (cd $(@D)/std/rust-std-$(RUST_BIN_VERSION)-$(RUSTC_TARGET_NAME); \ + ./install.sh $(HOST_RUST_BIN_INSTALL_COMMON_OPTS)) +endef +endif + +define HOST_RUST_BIN_INSTALL_CMDS + $(HOST_RUST_BIN_INSTALL_RUSTC) + $(HOST_RUST_BIN_INSTALL_LIBSTD_TARGET) +endef + +HOST_RUST_BIN_POST_INSTALL_HOOKS += HOST_RUST_INSTALL_CARGO_CONFIG + +$(eval $(host-generic-package)) diff --git a/package/rust-bindgen/rust-bindgen.hash b/package/rust-bindgen/rust-bindgen.hash new file mode 100644 index 00000000..7b222e57 --- /dev/null +++ b/package/rust-bindgen/rust-bindgen.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 618a92ac5e0e855a4e5cb16fb71258c4859679f3f7d7d95c7150e8b09cbbfbde rust-bindgen-0.65.1-cargo2.tar.gz +sha256 c23953d9deb0a3312dbeaf6c128a657f3591acee45067612fa68405eaa4525db LICENSE diff --git a/package/rust-bindgen/rust-bindgen.mk b/package/rust-bindgen/rust-bindgen.mk new file mode 100644 index 00000000..aa0d7d44 --- /dev/null +++ b/package/rust-bindgen/rust-bindgen.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# rust-bindgen +# +################################################################################ + +RUST_BINDGEN_VERSION = 0.65.1 +RUST_BINDGEN_SITE = $(call github,rust-lang,rust-bindgen,v$(RUST_BINDGEN_VERSION)) +RUST_BINDGEN_LICENSE = BSD-3-clause +RUST_BINDGEN_LICENSE_FILES = LICENSE + +# The Cargo.toml at the root directory is a "virtual manifest". +# Since we only want to build and install bindgen use the Cargo.toml +# from the bindgen-cli subdirectory. +RUST_BINDGEN_SUBDIR = bindgen-cli + +$(eval $(host-cargo-package)) diff --git a/package/rust/rust.hash b/package/rust/rust.hash new file mode 100644 index 00000000..1a0fb0de --- /dev/null +++ b/package/rust/rust.hash @@ -0,0 +1,8 @@ +# Generated with utils/update-rust +# Do not edit manually + +# From https://static.rust-lang.org/dist/rustc-1.79.0-src.tar.xz.sha256 +sha256 ab826e84b8d48ec6eda3370065034dea8c006f6a946d78a9ba12bcb50e6d3c7a rustc-1.79.0-src.tar.xz +# Locally generated +sha256 62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a LICENSE-APACHE +sha256 23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3 LICENSE-MIT diff --git a/package/rust/rust.mk b/package/rust/rust.mk new file mode 100644 index 00000000..9f644b71 --- /dev/null +++ b/package/rust/rust.mk @@ -0,0 +1,99 @@ +################################################################################ +# +# rust +# +################################################################################ + +# When updating this version, check whether support/download/cargo-post-process +# still generates the same archives. +RUST_VERSION = 1.79.0 +RUST_SOURCE = rustc-$(RUST_VERSION)-src.tar.xz +RUST_SITE = https://static.rust-lang.org/dist +RUST_LICENSE = Apache-2.0 or MIT +RUST_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT + +HOST_RUST_PROVIDES = host-rustc + +HOST_RUST_DEPENDENCIES = \ + toolchain \ + host-pkgconf \ + host-python3 \ + host-rust-bin \ + host-openssl \ + host-zlib \ + $(BR2_CMAKE_HOST_DEPENDENCY) + +HOST_RUST_VERBOSITY = $(if $(VERBOSE),2,0) + +# Some vendor crates contain Cargo.toml.orig files. The associated +# .cargo-checksum.json file will contain a checksum for Cargo.toml.orig but +# support/scripts/apply-patches.sh will delete them. This will cause the build +# to fail, as Cargo will not be able to find the file and verify the checksum. +# So, remove all Cargo.toml.orig entries from the affected .cargo-checksum.json +# files +define HOST_RUST_EXCLUDE_ORIG_FILES + for file in $$(find $(@D) -name '*.orig'); do \ + crate=$$(dirname $${file}); \ + fn=$${crate}/.cargo-checksum.json; \ + sed -i -e 's/"Cargo.toml.orig":"[a-z0-9]\+",//g' $${fn}; \ + done +endef + +HOST_RUST_POST_EXTRACT_HOOKS += HOST_RUST_EXCLUDE_ORIG_FILES + +define HOST_RUST_CONFIGURE_CMDS + ( \ + echo '[build]'; \ + echo 'target = ["$(RUSTC_TARGET_NAME)"]'; \ + echo 'cargo = "$(HOST_RUST_BIN_DIR)/cargo/bin/cargo"'; \ + echo 'rustc = "$(HOST_RUST_BIN_DIR)/rustc/bin/rustc"'; \ + echo 'python = "$(HOST_DIR)/bin/python$(PYTHON3_VERSION_MAJOR)"'; \ + echo 'submodules = false'; \ + echo 'vendor = true'; \ + echo 'extended = true'; \ + echo 'tools = ["cargo"]'; \ + echo 'compiler-docs = false'; \ + echo 'docs = false'; \ + echo 'verbose = $(HOST_RUST_VERBOSITY)'; \ + echo '[install]'; \ + echo 'prefix = "$(HOST_DIR)"'; \ + echo 'sysconfdir = "$(HOST_DIR)/etc"'; \ + echo '[rust]'; \ + echo 'channel = "stable"'; \ + echo 'musl-root = "$(STAGING_DIR)"' ; \ + echo '[target.$(RUSTC_TARGET_NAME)]'; \ + echo 'cc = "$(TARGET_CROSS)gcc"'; \ + echo '[llvm]'; \ + echo 'ninja = false'; \ + echo 'ldflags = "$(HOST_LDFLAGS)"'; \ + ) > $(@D)/config.toml +endef + +define HOST_RUST_BUILD_CMDS + cd $(@D); $(HOST_MAKE_ENV) $(HOST_PKG_CARGO_ENV) \ + $(HOST_DIR)/bin/python$(PYTHON3_VERSION_MAJOR) x.py build +endef + +HOST_RUST_INSTALL_OPTS = \ + --prefix=$(HOST_DIR) \ + --disable-ldconfig + +define HOST_RUST_INSTALL_RUSTC + cd $(@D)/build/tmp/tarball/rust/$(RUSTC_HOST_NAME)/rust-$(RUST_VERSION)-$(RUSTC_HOST_NAME); \ + ./install.sh $(HOST_RUST_INSTALL_OPTS) --components=rustc,cargo,rust-std-$(RUSTC_HOST_NAME) +endef + +ifeq ($(BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS),y) +define HOST_RUST_INSTALL_LIBSTD_TARGET + cd $(@D)/build/tmp/tarball/rust-std/$(RUSTC_TARGET_NAME)/rust-std-$(RUST_VERSION)-$(RUSTC_TARGET_NAME); \ + ./install.sh $(HOST_RUST_INSTALL_OPTS) +endef +endif + +define HOST_RUST_INSTALL_CMDS + cd $(@D); $(HOST_MAKE_ENV) $(HOST_DIR)/bin/python$(PYTHON3_VERSION_MAJOR) x.py dist + $(HOST_RUST_INSTALL_RUSTC) + $(HOST_RUST_INSTALL_LIBSTD_TARGET) +endef + +$(eval $(host-generic-package)) diff --git a/package/rustc/Config.in.host b/package/rustc/Config.in.host new file mode 100644 index 00000000..c3e9a13f --- /dev/null +++ b/package/rustc/Config.in.host @@ -0,0 +1,174 @@ +# All host rust packages should depend on this option +# When adding new entries below, update RUST_HOSTS in utils/update-rust +config BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS + bool + default y if BR2_HOSTARCH = "aarch64" + default y if BR2_HOSTARCH = "powerpc" + default y if BR2_HOSTARCH = "powerpc64" + default y if BR2_HOSTARCH = "powerpc64le" + default y if BR2_HOSTARCH = "riscv64" + default y if BR2_HOSTARCH = "s390x" + default y if BR2_HOSTARCH = "x86" + default y if BR2_HOSTARCH = "x86_64" + +# The pre-built Rust standard library is only available for a number +# of architectures/C libraries combinations, with different levels of +# support: Tier 1 platforms, Tier 2 platforms with host tools, Tier 2 +# platforms, Tier 3 platforms. Below, we support Tier 1, Tier 2 with +# host tools and Tier 2 platforms. + +# The below entries match Tier 1 platforms as described at +# https://doc.rust-lang.org/nightly/rustc/platform-support.html. +# When adding new entries below, update RUST_TARGETS in utils/update-rust +config BR2_PACKAGE_HOST_RUSTC_TARGET_TIER1_PLATFORMS + bool + # aarch64-unknown-linux-gnu + default y if BR2_aarch64 && BR2_TOOLCHAIN_USES_GLIBC + # i686-unknown-linux-gnu + default y if (BR2_x86_i686 || BR2_x86_pentiumpro || BR2_X86_CPU_HAS_MMX) && BR2_TOOLCHAIN_USES_GLIBC + # x86_64-unknown-linux-gnu + default y if BR2_x86_64 && BR2_TOOLCHAIN_USES_GLIBC + +# The below entries match Tier 2 platforms with host tools as +# described at +# https://doc.rust-lang.org/nightly/rustc/platform-support.html. +# When adding new entries below, update RUST_TARGETS in utils/update-rust +config BR2_PACKAGE_HOST_RUSTC_TARGET_TIER2_HOST_TOOLS_PLATFORMS + bool + # aarch64-unknown-linux-musl + default y if BR2_aarch64 && BR2_TOOLCHAIN_USES_MUSL + # arm-unknown-linux-gnueabi + default y if BR2_ARM_CPU_ARMV6 && BR2_ARM_EABI && BR2_TOOLCHAIN_USES_GLIBC + # arm-unknown-linux-gnueabihf + default y if BR2_ARM_CPU_ARMV6 && BR2_ARM_EABIHF && BR2_TOOLCHAIN_USES_GLIBC + # armv7-unknown-linux-gnueabihf + default y if BR2_ARM_CPU_ARMV7A && BR2_ARM_EABIHF && BR2_TOOLCHAIN_USES_GLIBC + # armv7-unknown-linux-gnueabihf for armv8 hardware with 32-bit + # userspace + default y if BR2_arm && BR2_ARM_CPU_ARMV8A && BR2_ARM_EABIHF && BR2_TOOLCHAIN_USES_GLIBC + # powerpc-unknown-linux-gnu + default y if BR2_powerpc && BR2_TOOLCHAIN_USES_GLIBC + # powerpc64-unknown-linux-gnu + default y if BR2_powerpc64 && BR2_TOOLCHAIN_USES_GLIBC + # powerpc64le-unknown-linux-gnu + default y if BR2_powerpc64le && BR2_TOOLCHAIN_USES_GLIBC + # riscv64gc-unknown-linux-gnu + # "g" stands for imafd, and we also need "c". + default y if BR2_RISCV_64 && BR2_RISCV_ISA_RVI && BR2_RISCV_ISA_RVM && \ + BR2_RISCV_ISA_RVA && BR2_RISCV_ISA_RVF && \ + BR2_RISCV_ISA_RVD && BR2_RISCV_ISA_RVC && \ + BR2_TOOLCHAIN_USES_GLIBC + # s390x-unknown-linux-gnu + default y if BR2_s390x && BR2_TOOLCHAIN_USES_GLIBC + # x86_64-unknown-linux-musl + default y if BR2_x86_64 && BR2_TOOLCHAIN_USES_MUSL + +# The below entries match Tier 2 platforms without host tools as +# described at +# https://doc.rust-lang.org/nightly/rustc/platform-support.html. +# When adding new entries below, update RUST_TARGETS in utils/update-rust +config BR2_PACKAGE_HOST_RUSTC_TARGET_TIER2_PLATFORMS + bool + # arm-unknown-linux-musleabi + default y if BR2_ARM_CPU_ARMV6 && BR2_ARM_EABI && BR2_TOOLCHAIN_USES_MUSL + # arm-unknown-linux-musleabihf + default y if BR2_ARM_CPU_ARMV6 && BR2_ARM_EABIHF && BR2_TOOLCHAIN_USES_MUSL + # armv5te-unknown-linux-gnueabi + default y if BR2_ARM_CPU_ARMV5 && BR2_ARM_EABI && BR2_TOOLCHAIN_USES_GLIBC + # armv5te-unknown-linux-musleabi + default y if BR2_ARM_CPU_ARMV5 && BR2_ARM_EABI && BR2_TOOLCHAIN_USES_MUSL + # armv7-unknown-linux-gnueabi + default y if BR2_ARM_CPU_ARMV7A && BR2_ARM_EABI && BR2_TOOLCHAIN_USES_GLIBC + # armv7-unknown-linux-musleabi + default y if BR2_ARM_CPU_ARMV7A && BR2_ARM_EABI && BR2_TOOLCHAIN_USES_MUSL + # armv7-unknown-linux-musleabihf + default y if BR2_ARM_CPU_ARMV7A && BR2_ARM_EABIHF && BR2_TOOLCHAIN_USES_MUSL + # armv7-unknown-linux-musleabihf for armv8 hardware with 32-bit + # userspace + default y if BR2_arm && BR2_ARM_CPU_ARMV8A && BR2_ARM_EABIHF && BR2_TOOLCHAIN_USES_MUSL + # i586-unknown-linux-gnu + default y if BR2_x86_i586 && BR2_TOOLCHAIN_USES_GLIBC + # i586-unknown-linux-musl + default y if BR2_x86_i586 && BR2_TOOLCHAIN_USES_MUSL + # i686-unknown-linux-musl + default y if (BR2_x86_i686 || BR2_x86_pentiumpro || BR2_X86_CPU_HAS_MMX) && BR2_TOOLCHAIN_USES_MUSL + # sparc64-unknown-linux-gnu + default y if BR2_sparc64 && BR2_TOOLCHAIN_USES_GLIBC + +# All target rust packages should depend on this option +# Note: With musl based toolchain, we need a C++ cross compiler to +# build host-rust some target libraries (libunwind) from llvm source +# code bundled in rust sources. +config BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + bool + default y if BR2_PACKAGE_HOST_RUSTC_TARGET_TIER1_PLATFORMS + default y if BR2_PACKAGE_HOST_RUSTC_TARGET_TIER2_HOST_TOOLS_PLATFORMS + default y if BR2_PACKAGE_HOST_RUSTC_TARGET_TIER2_PLATFORMS + depends on BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_USES_MUSL + depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS + +config BR2_PACKAGE_HOST_RUSTC_ARCH + string + default "armv5te" if BR2_ARM_CPU_ARMV5 + default "arm" if BR2_ARM_CPU_ARMV6 + default "armv7" if BR2_ARM_CPU_ARMV7A + default "armv7" if BR2_ARM_CPU_ARMV7A || (BR2_arm && BR2_ARM_CPU_ARMV8A) + default "riscv64gc" if BR2_RISCV_64 + default BR2_ARCH + +config BR2_PACKAGE_HOST_RUSTC_ABI + string + default "eabi" if BR2_ARM_EABI + default "eabihf" if BR2_ARM_EABIHF + default "abi64" if BR2_MIPS_NABI64 + +config BR2_PACKAGE_HOST_RUSTC + bool "host rustc" + depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS + help + Compiler for the Rust language + + http://www.rust-lang.org + +if BR2_PACKAGE_HOST_RUSTC + +choice + prompt "Rust compiler variant" + default BR2_PACKAGE_HOST_RUST_BIN + help + Select a Rust compiler + +config BR2_PACKAGE_HOST_RUST + bool "host rust" + # RUSTC_TARGET_NAME must be set for building host-rust + # otherwise config.toml is broken. + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + # triggers ICE on trunc_int_for_mode, at explow.c:56 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 || !BR2_aarch64 + # rust uses llvm >= 17 since 1.73.0 + select BR2_HOST_CMAKE_AT_LEAST_3_20 + help + This package will build the compiler for the host as well as + two flavors of the standard library: one for the host, another + for the target. Both are installed in the host directory. + +comment "host-rust needs a toolchain w/ gcc >= 5" + depends on BR2_aarch64 + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +config BR2_PACKAGE_HOST_RUST_BIN + bool "host rust (pre-built)" + help + This package will install pre-built versions of the compiler + for the host and the Rust standard library for the target. + +endchoice + +endif + +config BR2_PACKAGE_PROVIDES_HOST_RUSTC + string + default "host-rust" if BR2_PACKAGE_HOST_RUST + # Default to host-rust-bin as long as host arch supports it + default "host-rust-bin" if !BR2_PACKAGE_HOST_RUST + depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS diff --git a/package/rustc/rustc.mk b/package/rustc/rustc.mk new file mode 100644 index 00000000..b2cc131e --- /dev/null +++ b/package/rustc/rustc.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# rustc +# +################################################################################ + +RUSTC_ARCH = $(call qstrip,$(BR2_PACKAGE_HOST_RUSTC_ARCH)) +RUSTC_ABI = $(call qstrip,$(BR2_PACKAGE_HOST_RUSTC_ABI)) + +ifeq ($(BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS),y) +RUSTC_TARGET_NAME = $(RUSTC_ARCH)-unknown-linux-$(LIBC)$(RUSTC_ABI) +endif + +ifeq ($(HOSTARCH),riscv64) +RUSTC_HOST_ARCH = riscv64gc +else ifeq ($(HOSTARCH),x86) +RUSTC_HOST_ARCH = i686 +else +RUSTC_HOST_ARCH = $(HOSTARCH) +endif + +RUSTC_HOST_NAME = $(RUSTC_HOST_ARCH)-unknown-linux-gnu + +$(eval $(host-virtual-package)) diff --git a/package/rwmem/Config.in b/package/rwmem/Config.in new file mode 100644 index 00000000..690b0340 --- /dev/null +++ b/package/rwmem/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_RWMEM + bool "rwmem" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_10 # C++20 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR # fmt + select BR2_PACKAGE_FMT + select BR2_PACKAGE_INIH + help + Simple program to read/write from/to any location in memory. + + https://github.com/tomba/rwmem + +comment "rwmem needs a toolchain w/ C++, wchar, gcc >= 10" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_10 diff --git a/package/rwmem/rwmem.hash b/package/rwmem/rwmem.hash new file mode 100644 index 00000000..da74002c --- /dev/null +++ b/package/rwmem/rwmem.hash @@ -0,0 +1,2 @@ +sha256 e6cb76b77869aef9ec4a2c31d0d80af0182a5f9c9c3ae06225c8fb2f8266379f rwmem-c89bc9ad9a8f2359f358c510db57b7678eb156d1.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/rwmem/rwmem.mk b/package/rwmem/rwmem.mk new file mode 100644 index 00000000..d6ef0519 --- /dev/null +++ b/package/rwmem/rwmem.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# rwmem +# +################################################################################ + +RWMEM_VERSION = c89bc9ad9a8f2359f358c510db57b7678eb156d1 +RWMEM_SITE = $(call github,tomba,rwmem,$(RWMEM_VERSION)) +RWMEM_LICENSE = GPL-2.0 +RWMEM_LICENSE_FILES = LICENSE +RWMEM_CONF_OPTS = -Dpyrwmem=disabled +RWMEM_DEPENDENCIES = host-pkgconf fmt inih + +$(eval $(meson-package)) diff --git a/package/rygel/0001-meson.build-fix-g_ir_compiler-calls.patch b/package/rygel/0001-meson.build-fix-g_ir_compiler-calls.patch new file mode 100644 index 00000000..7b4d5a90 --- /dev/null +++ b/package/rygel/0001-meson.build-fix-g_ir_compiler-calls.patch @@ -0,0 +1,86 @@ +From bed9e2effae60f7d736731e93d9e699cb173f04e Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 15 Mar 2022 19:20:33 +0100 +Subject: [PATCH] meson.build: fix g_ir_compiler calls + +Fix the following build failure when cross-compiling which is raised +because rygel is using a custom_target target instead of the standard +gnome.generate_gir: + +[108/298] Generating src/librygel-core/RygelCore-2.6.typelib with a custom command +FAILED: src/librygel-core/RygelCore-2.6.typelib +/home/giuliobenetti/autobuild/run/instance-3/output-1/host/nios2-buildroot-linux-gnu/sysroot/usr/bin/g-ir-compiler --output src/librygel-core/RygelCore-2.6.typelib /home/giuliobenetti/autobuild/run/instance-3/output-1/build/rygel-0.40.2/build/src/librygel-core/RygelCore-2.6.gir +Could not find GIR file 'GUPnP-1.2.gir'; check XDG_DATA_DIRS or use --includedir +error parsing file /home/giuliobenetti/autobuild/run/instance-3/output-1/build/rygel-0.40.2/build/src/librygel-core/RygelCore-2.6.gir: Failed to parse included gir GUPnP-1.2 + +Indeed, the custom_target command is unable to retrieve the correct +--includedir from glib-2.0.pc so add an ugly hack to custom_target calls + +Fixes: + - http://autobuild.buildroot.org/results/2b8956818f03f66a53480f7ed5fc0abb4f05288d + +Signed-off-by: Fabrice Fontaine +Upstream: probably not upstreamable +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + src/librygel-core/meson.build | 4 +++- + src/librygel-renderer-gst/meson.build | 1 + + src/librygel-renderer/meson.build | 1 + + src/librygel-server/meson.build | 1 + + 4 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/src/librygel-core/meson.build b/src/librygel-core/meson.build +index fd43bebe..e6be2b5e 100644 +--- a/src/librygel-core/meson.build ++++ b/src/librygel-core/meson.build +@@ -73,7 +73,9 @@ + # so we depend on the custom_target from that step and pass the input through + # commandline. + custom_target('RygelCore-2.8.typelib', +- command: [g_ir_compiler, '--output', '@OUTPUT@', join_paths(meson.current_build_dir(), 'RygelCore-2.8.gir')], ++ command: [g_ir_compiler, '--output', '@OUTPUT@', ++ '--includedir', meson.get_external_property('sys_root') + get_option('prefix') + '/' + gir_dir, ++ join_paths(meson.current_build_dir(), 'RygelCore-2.8.gir')], + output: 'RygelCore-2.8.typelib', + depends: [ core_lib, core_gir ], + install: true, +diff --git a/src/librygel-renderer-gst/meson.build b/src/librygel-renderer-gst/meson.build +index ad98a3a7..e8baefe1 100644 +--- a/src/librygel-renderer-gst/meson.build ++++ b/src/librygel-renderer-gst/meson.build +@@ -37,6 +37,7 @@ + '--output', '@OUTPUT@', + '--includedir', core_girdir, + '--includedir', renderer_girdir, ++ '--includedir', meson.get_external_property('sys_root') + get_option('prefix') + '/' + gir_dir, + join_paths(meson.current_build_dir(), 'RygelRendererGst-2.8.gir')], + output: 'RygelRendererGst-2.8.typelib', + depends: [renderer_gst_lib, renderer_lib, renderer_gst_gir, renderer_gir], +diff --git a/src/librygel-renderer/meson.build b/src/librygel-renderer/meson.build +index 5f401527..821273ff 100644 +--- a/src/librygel-renderer/meson.build ++++ b/src/librygel-renderer/meson.build +@@ -44,6 +44,7 @@ + command: [g_ir_compiler, + '--output', '@OUTPUT@', + '--includedir', core_girdir, ++ '--includedir', meson.get_external_property('sys_root') + get_option('prefix') + '/' + gir_dir, + join_paths(meson.current_build_dir(), 'RygelRenderer-2.8.gir')], + output: 'RygelRenderer-2.8.typelib', + depends: [ renderer_lib, renderer_gir, core_gir ], +diff --git a/src/librygel-server/meson.build b/src/librygel-server/meson.build +index a3bd77d9..6b084eb6 100644 +--- a/src/librygel-server/meson.build ++++ b/src/librygel-server/meson.build +@@ -125,6 +125,7 @@ + command: [g_ir_compiler, + '--output', '@OUTPUT@', + '--includedir', core_girdir, ++ '--includedir', meson.get_external_property('sys_root') + get_option('prefix') + '/' + gir_dir, + join_paths(meson.current_build_dir(), 'RygelServer-2.8.gir')], + output: 'RygelServer-2.8.typelib', + depends: [ server_lib, server_gir, core_gir ], +-- +2.35.1 + diff --git a/package/rygel/Config.in b/package/rygel/Config.in new file mode 100644 index 00000000..a3c2bd29 --- /dev/null +++ b/package/rygel/Config.in @@ -0,0 +1,66 @@ +config BR2_PACKAGE_RYGEL + bool "rygel" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_WCHAR # gupnp-av + depends on BR2_TOOLCHAIN_HAS_THREADS # gupnp-av + depends on BR2_USE_MMU # gupnp-av, gobject-introspection + depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS # gobject-introspection + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # gobject-introspection + depends on BR2_HOST_GCC_AT_LEAST_8 # gobject-introspection -> host-qemu + depends on BR2_TOOLCHAIN_USES_GLIBC # gobject-introspection + depends on BR2_PACKAGE_PYTHON3 # gobject-introspection + select BR2_PACKAGE_GDK_PIXBUF + select BR2_PACKAGE_GOBJECT_INTROSPECTION + select BR2_PACKAGE_GUPNP_AV + select BR2_PACKAGE_GUPNP_DLNA + select BR2_PACKAGE_LIBGEE + select BR2_PACKAGE_LIBMEDIAART + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_XLIB_LIBX11 + help + Rygel is a home media solution (UPnP AV MediaServer) that + allows you to easily share audio, video and pictures to other + devices. + + Additionally, media player software may use Rygel to become a + MediaRenderer that may be controlled remotely by a UPnP or + DLNA Controller. + + Rygel achieves interoperability with other devices in the + market by trying to conform to the very strict requirements of + DLNA and by converting media on-the-fly to formats that client + devices can handle. + + Most Rygel functionality is implemented through a plug-in + mechanism. + + https://wiki.gnome.org/Projects/Rygel + +if BR2_PACKAGE_RYGEL + +choice + prompt "media engine" + default BR2_PACKAGE_RYGEL_MEDIA_ENGINE_SIMPLE + +config BR2_PACKAGE_RYGEL_MEDIA_ENGINE_SIMPLE + bool "simple" + +config BR2_PACKAGE_RYGEL_MEDIA_ENGINE_GSTREAMER1 + bool "gstreamer1" + depends on BR2_PACKAGE_GSTREAMER1_EDITING_SERVICES + +comment "gstreamer1 needs gst1-editing-services" + depends on !BR2_PACKAGE_GSTREAMER1_EDITING_SERVICES + +endchoice + +endif # BR2_PACKAGE_RYGEL + +comment "rygel needs python3 and a glibc toolchain w/ wchar, threads, gcc >= 4.9, host gcc >= 8" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS + depends on BR2_PACKAGE_XORG7 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_HOST_GCC_AT_LEAST_8 || !BR2_PACKAGE_PYTHON3 diff --git a/package/rygel/S99rygel b/package/rygel/S99rygel new file mode 100644 index 00000000..ee832e9b --- /dev/null +++ b/package/rygel/S99rygel @@ -0,0 +1,37 @@ +#!/bin/sh + +NAME=rygel +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/package/rygel/rygel.hash b/package/rygel/rygel.hash new file mode 100644 index 00000000..77db59cf --- /dev/null +++ b/package/rygel/rygel.hash @@ -0,0 +1,6 @@ +# Hash from: https://ftp.gnome.org/pub/gnome/sources/rygel/0.42/rygel-0.42.5.sha256sum: +sha256 1133602d2e6710aade6b22aa98d93384c8d56396f344763413e96e0110b7d89f rygel-0.42.5.tar.xz + +# Locally calculated +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING +sha256 c7d881be8ae01162510e982a32001446c6d6d18a9cecc89cc41a28bd215a0262 COPYING.logo diff --git a/package/rygel/rygel.mk b/package/rygel/rygel.mk new file mode 100644 index 00000000..5c155f8e --- /dev/null +++ b/package/rygel/rygel.mk @@ -0,0 +1,68 @@ +################################################################################ +# +# rygel +# +################################################################################ + +RYGEL_VERSION_MAJOR = 0.42 +RYGEL_VERSION = $(RYGEL_VERSION_MAJOR).5 +RYGEL_SOURCE = rygel-$(RYGEL_VERSION).tar.xz +RYGEL_SITE = https://download.gnome.org/sources/rygel/$(RYGEL_VERSION_MAJOR) +RYGEL_LICENSE = LGPL-2.1+, CC-BY-SA-3.0 (logo) +RYGEL_LICENSE_FILES = COPYING COPYING.logo +RYGEL_DEPENDENCIES = \ + gdk-pixbuf \ + gobject-introspection \ + gupnp-av \ + gupnp-dlna \ + libgee \ + libmediaart \ + sqlite \ + xlib_libX11 \ + $(TARGET_NLS_DEPENDENCIES) +RYGEL_INSTALL_STAGING = YES + +RYGEL_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) +RYGEL_CONF_OPTS += \ + -Dapi-docs=false \ + -Dexamples=false \ + -Dintrospection=enabled \ + -Dman_pages=false \ + -Dtests=false +RYGEL_PLUGINS = external,lms,mpris,ruih + +ifeq ($(BR2_PACKAGE_RYGEL_MEDIA_ENGINE_GSTREAMER1),y) +RYGEL_CONF_OPTS += \ + -Dengines=gstreamer \ + -Dgstreamer=enabled +RYGEL_PLUGINS += ,playbin,media-export,gst-launch +RYGEL_DEPENDENCIES += \ + gst1-plugins-base \ + gstreamer1 \ + gstreamer1-editing-services +else ifeq ($(BR2_PACKAGE_RYGEL_MEDIA_ENGINE_SIMPLE),y) +RYGEL_CONF_OPTS += \ + -Dengines=simple \ + -Dgstreamer=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) +RYGEL_CONF_OPTS += -Dgtk=enabled +RYGEL_DEPENDENCIES += libgtk3 +else +RYGEL_CONF_OPTS += -Dgtk=disabled +endif + +RYGEL_CONF_OPTS += -Dplugins="$(RYGEL_PLUGINS)" + +define RYGEL_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/rygel/S99rygel \ + $(TARGET_DIR)/etc/init.d/S99rygel +endef + +define RYGEL_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/rygel/rygel.service \ + $(TARGET_DIR)/usr/lib/systemd/system/rygel.service +endef + +$(eval $(meson-package)) diff --git a/package/rygel/rygel.service b/package/rygel/rygel.service new file mode 100644 index 00000000..6ae8ee72 --- /dev/null +++ b/package/rygel/rygel.service @@ -0,0 +1,10 @@ +[Unit] +Description=Rygel DLNA server +After=network.target + +[Service] +ExecStart=/usr/bin/rygel +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/s390-tools/Config.in b/package/s390-tools/Config.in new file mode 100644 index 00000000..23b7d31d --- /dev/null +++ b/package/s390-tools/Config.in @@ -0,0 +1,14 @@ +comment "s390-tools needs a glibc toolchain w/ C++, wchar, dynamic library" + depends on BR2_s390x + depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_S390_TOOLS + bool "s390-tools" + depends on BR2_s390x + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_ZLIB + help + Tools for use with the s390 Linux kernel and device drivers. + + https://github.com/ibm-s390-linux/s390-tools diff --git a/package/s390-tools/s390-tools.hash b/package/s390-tools/s390-tools.hash new file mode 100644 index 00000000..d5f6cc5e --- /dev/null +++ b/package/s390-tools/s390-tools.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 2933c6c5233cb70b7c47d9410458d8e4c26347de683e2c027956b9c67c7ebe9a s390-tools-2.33.1.tar.gz +sha256 cca17a9a944ebec769adee4aebd805c912c357785ff2705a99ffe68563021f75 LICENSE diff --git a/package/s390-tools/s390-tools.mk b/package/s390-tools/s390-tools.mk new file mode 100644 index 00000000..6b7a5244 --- /dev/null +++ b/package/s390-tools/s390-tools.mk @@ -0,0 +1,121 @@ +################################################################################ +# +# s390-tools +# +################################################################################ + +S390_TOOLS_VERSION = 2.33.1 +S390_TOOLS_SITE = $(call github,ibm-s390-linux,s390-tools,v$(S390_TOOLS_VERSION)) +S390_TOOLS_LICENSE = MIT +S390_TOOLS_LICENSE_FILES = LICENSE +S390_TOOLS_DEPENDENCIES = zlib + +S390_TOOLS_MAKE_OPTS = \ + ARCH=$(BR2_ARCH) \ + CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE" \ + HAVE_CARGO=0 + +ifeq ($(BR2_PACKAGE_LIBCURL_OPENSSL),y) +S390_TOOLS_DEPENDENCIES += libcurl +S390_TOOLS_MAKE_OPTS += \ + CURL_CONFIG=$(STAGING_DIR)/usr/bin/curl-config \ + HAVE_CURL=1 \ + HAVE_LIBCURL=1 +else +S390_TOOLS_MAKE_OPTS += \ + HAVE_CURL=0 \ + HAVE_LIBCURL=0 +endif + +ifeq ($(BR2_PACKAGE_JSON_C),y) +S390_TOOLS_DEPENDENCIES += json-c +S390_TOOLS_MAKE_OPTS += HAVE_JSONC=1 +else +S390_TOOLS_MAKE_OPTS += HAVE_JSONC=0 +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +S390_TOOLS_DEPENDENCIES += openssl +S390_TOOLS_MAKE_OPTS += HAVE_OPENSSL=1 +else +S390_TOOLS_MAKE_OPTS += HAVE_OPENSSL=0 +endif + +ifeq ($(BR2_PACKAGE_CRYPTSETUP),y) +S390_TOOLS_DEPENDENCIES += cryptsetup +S390_TOOLS_MAKE_OPTS += HAVE_CRYPTSETUP2=1 +else +S390_TOOLS_MAKE_OPTS += HAVE_CRYPTSETUP2=0 +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +S390_TOOLS_DEPENDENCIES += libglib2 +S390_TOOLS_MAKE_OPTS += HAVE_GLIB2=1 +else +S390_TOOLS_MAKE_OPTS += HAVE_GLIB2=0 +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +S390_TOOLS_DEPENDENCIES += libxml2 +S390_TOOLS_MAKE_OPTS += \ + HAVE_LIBXML2=1 \ + XML2_CONFIG=$(STAGING_DIR)/usr/bin/xml2-config +else +S390_TOOLS_MAKE_OPTS += HAVE_LIBXML2=0 +endif + +ifeq ($(BR2_PACKAGE_NCURSES),y) +S390_TOOLS_DEPENDENCIES += ncurses +S390_TOOLS_MAKE_OPTS += HAVE_NCURSES=1 +else +S390_TOOLS_MAKE_OPTS += HAVE_NCURSES=0 +endif + +ifeq ($(BR2_PACKAGE_LIBPFM4),y) +S390_TOOLS_DEPENDENCIES += libpfm4 +S390_TOOLS_MAKE_OPTS += HAVE_PFM=1 +else +S390_TOOLS_MAKE_OPTS += HAVE_PFM=0 +endif + +ifeq ($(BR2_PACKAGE_LIBFUSE3),y) +S390_TOOLS_DEPENDENCIES += libfuse3 +S390_TOOLS_MAKE_OPTS += HAVE_FUSE=1 +else +S390_TOOLS_MAKE_OPTS += HAVE_FUSE=0 +endif + +ifeq ($(BR2_PACKAGE_NETSNMP),y) +S390_TOOLS_DEPENDENCIES += netsnmp +S390_TOOLS_MAKE_OPTS += \ + NET_SNMP_CONFIG=$(STAGING_DIR)/usr/bin/net-snmp-config \ + HAVE_SNMP=1 +else +S390_TOOLS_MAKE_OPTS += HAVE_SNMP=0 +endif + +ifeq ($(BR2_PACKAGE_LIBLOCKFILE),y) +S390_TOOLS_DEPENDENCIES += liblockfile +S390_TOOLS_MAKE_OPTS += HAVE_LOCKFILE=1 +else +S390_TOOLS_MAKE_OPTS += HAVE_LOCKFILE=0 +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +S390_TOOLS_DEPENDENCIES += udev +S390_TOOLS_MAKE_OPTS += HAVE_LIBUDEV=1 +else +S390_TOOLS_MAKE_OPTS += HAVE_LIBUDEV=0 +endif + +define S390_TOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + $(S390_TOOLS_MAKE_OPTS) +endef + +define S390_TOOLS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) install \ + $(S390_TOOLS_MAKE_OPTS) DESTDIR="$(TARGET_DIR)" +endef + +$(eval $(generic-package)) diff --git a/package/s6-dns/Config.in b/package/s6-dns/Config.in new file mode 100644 index 00000000..e982fdad --- /dev/null +++ b/package/s6-dns/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_S6_DNS + bool "s6-dns" + depends on BR2_USE_MMU # skalibs + select BR2_PACKAGE_SKALIBS + help + s6-dns is a suite of DNS client programs and libraries for + Unix systems, as an alternative to the BIND, djbdns or other + DNS clients. + + http://skarnet.org/software/s6-dns/ diff --git a/package/s6-dns/s6-dns.hash b/package/s6-dns/s6-dns.hash new file mode 100644 index 00000000..dd6e6f36 --- /dev/null +++ b/package/s6-dns/s6-dns.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 6aee32bb68d01f5109f71e31a283213c668cd3c0e79fb9e469e6cabb58079f2b s6-dns-2.3.7.2.tar.gz +sha256 fdc931295525dd0009cdf339189cbecd228d65cefe33402f037f9b046f07989e COPYING diff --git a/package/s6-dns/s6-dns.mk b/package/s6-dns/s6-dns.mk new file mode 100644 index 00000000..8e175431 --- /dev/null +++ b/package/s6-dns/s6-dns.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# s6-dns +# +################################################################################ + +S6_DNS_VERSION = 2.3.7.2 +S6_DNS_SITE = https://skarnet.org/software/s6-dns +S6_DNS_LICENSE = ISC +S6_DNS_LICENSE_FILES = COPYING +S6_DNS_INSTALL_STAGING = YES +S6_DNS_DEPENDENCIES = skalibs + +S6_DNS_CONF_OPTS = \ + --prefix=/ \ + --with-sysdeps=$(STAGING_DIR)/lib/skalibs/sysdeps \ + --with-include=$(STAGING_DIR)/include \ + --with-dynlib=$(STAGING_DIR)/lib \ + --with-lib=$(STAGING_DIR)/lib/skalibs \ + $(if $(BR2_STATIC_LIBS),,--disable-allstatic) \ + $(SHARED_STATIC_LIBS_OPTS) + +define S6_DNS_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(S6_DNS_CONF_OPTS)) +endef + +define S6_DNS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define S6_DNS_REMOVE_STATIC_LIB_DIR + rm -rf $(TARGET_DIR)/usr/lib/s6-dns +endef + +S6_DNS_POST_INSTALL_TARGET_HOOKS += S6_DNS_REMOVE_STATIC_LIB_DIR + +define S6_DNS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +define S6_DNS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/s6-linux-init/0001-configure-add-D_GNU_SOURCE.patch b/package/s6-linux-init/0001-configure-add-D_GNU_SOURCE.patch new file mode 100644 index 00000000..e9a27267 --- /dev/null +++ b/package/s6-linux-init/0001-configure-add-D_GNU_SOURCE.patch @@ -0,0 +1,40 @@ +From dadb157df58e79c7f560cacae80ea51953606fca Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 11 Apr 2021 11:02:20 +0200 +Subject: [PATCH] configure: add -D_GNU_SOURCE +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This will fix the following build failure with uclibc-ng which is raised +since version 1.0.6.1 and +https://github.com/skarnet/s6-linux-init/commit/355a75e08bbc8af8af97576bad07471dd1b431d8: + +src/shutdown/s6-linux-init-shutdownd.c: In function ‘main’: +src/shutdown/s6-linux-init-shutdownd.c:294:24: error: ‘F_DUPFD_CLOEXEC’ undeclared (first use in this function); did you mean ‘FD_CLOEXEC’? + 294 | fd[0] = fcntl(1, F_DUPFD_CLOEXEC, 0) ; + | ^~~~~~~~~~~~~~~ + | FD_CLOEXEC + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/skarnet/s6-linux-init/pull/3] +--- + configure | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure b/configure +index 47db5b2..90fbb3b 100755 +--- a/configure ++++ b/configure +@@ -138,7 +138,7 @@ getmacrostring () { + # Actual script + + CC_AUTO= +-CPPFLAGS_AUTO="-D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -iquote src/include-local -Isrc/include" ++CPPFLAGS_AUTO="-D_GNU_SOURCE -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -iquote src/include-local -Isrc/include" + CPPFLAGS_POST="$CPPFLAGS" + CPPFLAGS= + CFLAGS_AUTO="-pipe -Wall" +-- +2.30.2 + diff --git a/package/s6-linux-init/Config.in b/package/s6-linux-init/Config.in new file mode 100644 index 00000000..b56b861f --- /dev/null +++ b/package/s6-linux-init/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_S6_LINUX_INIT + bool "s6-linux-init" + depends on BR2_USE_MMU # s6 + select BR2_PACKAGE_S6 + select BR2_PACKAGE_S6_LINUX_UTILS + select BR2_PACKAGE_S6_PORTABLE_UTILS + help + s6-linux-init is a set of minimalistic tools to create a + s6-based init system, including a /sbin/init binary, on a + Linux kernel. + + http://skarnet.org/software/s6-linux-init/ diff --git a/package/s6-linux-init/s6-linux-init.hash b/package/s6-linux-init/s6-linux-init.hash new file mode 100644 index 00000000..25292c35 --- /dev/null +++ b/package/s6-linux-init/s6-linux-init.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 11ae08d0a66210b5e56b6baee0f6b9b1b69fbedb05fda1285b115a31ca46c77f s6-linux-init-1.1.2.0.tar.gz +sha256 f68451e55e6686dc187df1ca427c574d9ac0d6f6926e1bdb909ad8b657668fe5 COPYING diff --git a/package/s6-linux-init/s6-linux-init.mk b/package/s6-linux-init/s6-linux-init.mk new file mode 100644 index 00000000..ae2bcdb8 --- /dev/null +++ b/package/s6-linux-init/s6-linux-init.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# s6-linux-init +# +################################################################################ + +S6_LINUX_INIT_VERSION = 1.1.2.0 +S6_LINUX_INIT_SITE = https://skarnet.org/software/s6-linux-init +S6_LINUX_INIT_LICENSE = ISC +S6_LINUX_INIT_LICENSE_FILES = COPYING +S6_LINUX_INIT_DEPENDENCIES = s6 s6-linux-utils s6-portable-utils + +S6_LINUX_INIT_CONF_OPTS = \ + --prefix=/ \ + --with-sysdeps=$(STAGING_DIR)/lib/skalibs/sysdeps \ + --with-include=$(STAGING_DIR)/include \ + --with-dynlib=$(STAGING_DIR)/lib \ + --with-lib=$(STAGING_DIR)/lib/execline \ + --with-lib=$(STAGING_DIR)/lib/s6 \ + --with-lib=$(STAGING_DIR)/lib/skalibs \ + $(if $(BR2_STATIC_LIBS),,--disable-allstatic) \ + $(SHARED_STATIC_LIBS_OPTS) + +define S6_LINUX_INIT_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(S6_LINUX_INIT_CONF_OPTS)) +endef + +define S6_LINUX_INIT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define S6_LINUX_INIT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/s6-linux-utils/Config.in b/package/s6-linux-utils/Config.in new file mode 100644 index 00000000..43e6bb91 --- /dev/null +++ b/package/s6-linux-utils/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_S6_LINUX_UTILS + bool "s6-linux-utils" + depends on BR2_USE_MMU # skalibs + select BR2_PACKAGE_SKALIBS + help + s6-linux-utils is a set of minimalistic Linux-specific + system utilities. + + http://skarnet.org/software/s6-linux-utils/ diff --git a/package/s6-linux-utils/s6-linux-utils.hash b/package/s6-linux-utils/s6-linux-utils.hash new file mode 100644 index 00000000..97a67c67 --- /dev/null +++ b/package/s6-linux-utils/s6-linux-utils.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 8f944633ca87d3d23e0f03c9c383d1502d508c9bac16d38c3fbf723a5eab2bb7 s6-linux-utils-2.6.2.0.tar.gz +sha256 aafa4f6a12b5b24ab2ae8ead5174e1ec03aecb5eb0e82012d74fd47ccfc57607 COPYING diff --git a/package/s6-linux-utils/s6-linux-utils.mk b/package/s6-linux-utils/s6-linux-utils.mk new file mode 100644 index 00000000..f83f47ac --- /dev/null +++ b/package/s6-linux-utils/s6-linux-utils.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# s6-linux-utils +# +################################################################################ + +S6_LINUX_UTILS_VERSION = 2.6.2.0 +S6_LINUX_UTILS_SITE = https://skarnet.org/software/s6-linux-utils +S6_LINUX_UTILS_LICENSE = ISC +S6_LINUX_UTILS_LICENSE_FILES = COPYING +S6_LINUX_UTILS_DEPENDENCIES = skalibs + +S6_LINUX_UTILS_CONF_OPTS = \ + --prefix=/ \ + --with-sysdeps=$(STAGING_DIR)/lib/skalibs/sysdeps \ + --with-include=$(STAGING_DIR)/include \ + --with-dynlib=$(STAGING_DIR)/lib \ + --with-lib=$(STAGING_DIR)/lib/skalibs \ + $(if $(BR2_STATIC_LIBS),,--disable-allstatic) \ + $(SHARED_STATIC_LIBS_OPTS) + +define S6_LINUX_UTILS_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(S6_LINUX_UTILS_CONF_OPTS)) +endef + +define S6_LINUX_UTILS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define S6_LINUX_UTILS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/s6-networking/Config.in b/package/s6-networking/Config.in new file mode 100644 index 00000000..bdf58476 --- /dev/null +++ b/package/s6-networking/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_S6_NETWORKING + bool "s6-networking" + depends on BR2_USE_MMU # s6 + select BR2_PACKAGE_S6_DNS + select BR2_PACKAGE_S6 + help + s6-networking is a suite of small networking utilities for + Unix systems. It includes command-line client and server + management, TCP access control, privilege escalation across + UNIX domain sockets, IDENT protocol management and clock + synchronization. + + http://skarnet.org/software/s6-networking/ diff --git a/package/s6-networking/s6-networking.hash b/package/s6-networking/s6-networking.hash new file mode 100644 index 00000000..4eff4d49 --- /dev/null +++ b/package/s6-networking/s6-networking.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 db411c54371a17ed7d4543dd86cf9530ce25fcf624bef83ae2b579520e5e70bf s6-networking-2.7.0.3.tar.gz +sha256 fdc931295525dd0009cdf339189cbecd228d65cefe33402f037f9b046f07989e COPYING diff --git a/package/s6-networking/s6-networking.mk b/package/s6-networking/s6-networking.mk new file mode 100644 index 00000000..212fae73 --- /dev/null +++ b/package/s6-networking/s6-networking.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# s6-networking +# +################################################################################ + +S6_NETWORKING_VERSION = 2.7.0.3 +S6_NETWORKING_SITE = https://skarnet.org/software/s6-networking +S6_NETWORKING_LICENSE = ISC +S6_NETWORKING_LICENSE_FILES = COPYING +S6_NETWORKING_INSTALL_STAGING = YES +S6_NETWORKING_DEPENDENCIES = s6-dns s6 + +S6_NETWORKING_CONF_OPTS = \ + --prefix=/ \ + --with-sysdeps=$(STAGING_DIR)/lib/skalibs/sysdeps \ + --with-include=$(STAGING_DIR)/include \ + --with-dynlib=$(STAGING_DIR)/lib \ + --with-lib=$(STAGING_DIR)/lib/execline \ + --with-lib=$(STAGING_DIR)/lib/s6 \ + --with-lib=$(STAGING_DIR)/lib/s6-dns \ + --with-lib=$(STAGING_DIR)/lib/skalibs \ + $(if $(BR2_STATIC_LIBS),,--disable-allstatic) \ + $(SHARED_STATIC_LIBS_OPTS) + +ifeq ($(BR2_PACKAGE_LIBRESSL),y) +S6_NETWORKING_CONF_OPTS += --enable-ssl=libressl +S6_NETWORKING_DEPENDENCIES += libressl +else ifeq ($(BR2_PACKAGE_BEARSSL),y) +S6_NETWORKING_CONF_OPTS += --enable-ssl=bearssl +S6_NETWORKING_DEPENDENCIES += bearssl +endif + +define S6_NETWORKING_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(S6_NETWORKING_CONF_OPTS)) +endef + +define S6_NETWORKING_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define S6_NETWORKING_REMOVE_STATIC_LIB_DIR + rm -rf $(TARGET_DIR)/usr/lib/s6-networking +endef + +S6_NETWORKING_POST_INSTALL_TARGET_HOOKS += S6_NETWORKING_REMOVE_STATIC_LIB_DIR + +define S6_NETWORKING_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +define S6_NETWORKING_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/s6-portable-utils/Config.in b/package/s6-portable-utils/Config.in new file mode 100644 index 00000000..8521ecfa --- /dev/null +++ b/package/s6-portable-utils/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_S6_PORTABLE_UTILS + bool "s6-portable-utils" + depends on BR2_USE_MMU # skalibs + select BR2_PACKAGE_SKALIBS + help + s6-portable-utils is a set of tiny general Unix utilities, + often performing well-known tasks such as cut and grep, but + optimized for simplicity and small size. They were designed + for embedded systems and other constrained environments, but + they work everywhere. + + http://skarnet.org/software/s6-portable-utils/ diff --git a/package/s6-portable-utils/s6-portable-utils.hash b/package/s6-portable-utils/s6-portable-utils.hash new file mode 100644 index 00000000..2454e91a --- /dev/null +++ b/package/s6-portable-utils/s6-portable-utils.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 3e4492055d160c25fb90153f0efc277d7d52bf981bbe3ea2e9dfe51c493561ff s6-portable-utils-2.3.0.3.tar.gz +sha256 aafa4f6a12b5b24ab2ae8ead5174e1ec03aecb5eb0e82012d74fd47ccfc57607 COPYING diff --git a/package/s6-portable-utils/s6-portable-utils.mk b/package/s6-portable-utils/s6-portable-utils.mk new file mode 100644 index 00000000..c40100b0 --- /dev/null +++ b/package/s6-portable-utils/s6-portable-utils.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# s6-portable-utils +# +################################################################################ + +S6_PORTABLE_UTILS_VERSION = 2.3.0.3 +S6_PORTABLE_UTILS_SITE = https://skarnet.org/software/s6-portable-utils +S6_PORTABLE_UTILS_LICENSE = ISC +S6_PORTABLE_UTILS_LICENSE_FILES = COPYING +S6_PORTABLE_UTILS_DEPENDENCIES = skalibs + +S6_PORTABLE_UTILS_CONF_OPTS = \ + --prefix=/ \ + --with-sysdeps=$(STAGING_DIR)/lib/skalibs/sysdeps \ + --with-include=$(STAGING_DIR)/include \ + --with-dynlib=$(STAGING_DIR)/lib \ + --with-lib=$(STAGING_DIR)/lib/skalibs \ + $(if $(BR2_STATIC_LIBS),,--disable-allstatic) \ + $(SHARED_STATIC_LIBS_OPTS) + +define S6_PORTABLE_UTILS_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(S6_PORTABLE_UTILS_CONF_OPTS)) +endef + +define S6_PORTABLE_UTILS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define S6_PORTABLE_UTILS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/s6-rc/Config.in b/package/s6-rc/Config.in new file mode 100644 index 00000000..39a924ea --- /dev/null +++ b/package/s6-rc/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_S6_RC + bool "s6-rc" + depends on BR2_USE_MMU # s6 + select BR2_PACKAGE_S6 + help + s6-rc is a service manager for s6-based systems, i.e. a + suite of programs that can start and stop services, both + long-running daemons and one-time initialization scripts, in + the proper order according to a dependency tree. + + http://skarnet.org/software/s6-rc/ diff --git a/package/s6-rc/Config.in.host b/package/s6-rc/Config.in.host new file mode 100644 index 00000000..f250b9fb --- /dev/null +++ b/package/s6-rc/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_S6_RC + bool "host s6-rc" + depends on BR2_PACKAGE_S6_RC + help + This package provides the host variant of the s6-rc tools, + required to build the s6-rc service database offline. + + http://skarnet.org/software/s6-rc/ diff --git a/package/s6-rc/s6-rc.hash b/package/s6-rc/s6-rc.hash new file mode 100644 index 00000000..72bd5d42 --- /dev/null +++ b/package/s6-rc/s6-rc.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 e3272796a947904de37ab34ec10430e26107b8ef05210d81059c8b36203e6a9f s6-rc-0.5.4.3.tar.gz +sha256 75b0b50d7bcb9b2fc174d01442536bce03333da1814df3e61cd6ef8f663548f1 COPYING diff --git a/package/s6-rc/s6-rc.mk b/package/s6-rc/s6-rc.mk new file mode 100644 index 00000000..301c7059 --- /dev/null +++ b/package/s6-rc/s6-rc.mk @@ -0,0 +1,73 @@ +################################################################################ +# +# s6-rc +# +################################################################################ + +S6_RC_VERSION = 0.5.4.3 +S6_RC_SITE = https://skarnet.org/software/s6-rc +S6_RC_LICENSE = ISC +S6_RC_LICENSE_FILES = COPYING +S6_RC_INSTALL_STAGING = YES +S6_RC_DEPENDENCIES = s6 + +S6_RC_CONF_OPTS = \ + --prefix=/ \ + --with-sysdeps=$(STAGING_DIR)/lib/skalibs/sysdeps \ + --with-include=$(STAGING_DIR)/include \ + --with-dynlib=$(STAGING_DIR)/lib \ + --with-lib=$(STAGING_DIR)/lib/execline \ + --with-lib=$(STAGING_DIR)/lib/s6 \ + --with-lib=$(STAGING_DIR)/lib/skalibs \ + $(if $(BR2_STATIC_LIBS),,--disable-allstatic) \ + $(SHARED_STATIC_LIBS_OPTS) + +define S6_RC_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(S6_RC_CONF_OPTS)) +endef + +define S6_RC_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define S6_RC_REMOVE_STATIC_LIB_DIR + rm -rf $(TARGET_DIR)/usr/lib/s6-rc +endef + +S6_RC_POST_INSTALL_TARGET_HOOKS += S6_RC_REMOVE_STATIC_LIB_DIR + +define S6_RC_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +define S6_RC_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +HOST_S6_RC_DEPENDENCIES = host-s6 + +HOST_S6_RC_CONF_OPTS = \ + --prefix=$(HOST_DIR) \ + --libexecdir=/usr/libexec \ + --with-sysdeps=$(HOST_DIR)/lib/skalibs/sysdeps \ + --with-include=$(HOST_DIR)/include \ + --with-dynlib=$(HOST_DIR)/lib \ + --disable-static \ + --enable-shared \ + --disable-allstatic + +define HOST_S6_RC_CONFIGURE_CMDS + (cd $(@D); $(HOST_CONFIGURE_OPTS) ./configure $(HOST_S6_RC_CONF_OPTS)) +endef + +define HOST_S6_RC_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_S6_RC_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install-dynlib install-bin + rm -f $(HOST_DIR)/bin/s6-rc-dryrun +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/s6/Config.in b/package/s6/Config.in new file mode 100644 index 00000000..043380f4 --- /dev/null +++ b/package/s6/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_S6 + bool "s6" + depends on BR2_USE_MMU # execline + select BR2_PACKAGE_EXECLINE + help + s6 is a small suite of programs for UNIX, designed to allow + process supervision (a.k.a service supervision), in the line + of daemontools and runit, as well as various operations on + processes and daemons. + + http://skarnet.org/software/s6/ diff --git a/package/s6/s6.hash b/package/s6/s6.hash new file mode 100644 index 00000000..6abeb806 --- /dev/null +++ b/package/s6/s6.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 7e46f8f55d80bb0e2025a64d5d649af4a4ac21e348020caaadde30ba5e5b4830 s6-2.13.0.0.tar.gz +sha256 fdc931295525dd0009cdf339189cbecd228d65cefe33402f037f9b046f07989e COPYING diff --git a/package/s6/s6.mk b/package/s6/s6.mk new file mode 100644 index 00000000..7e02c26d --- /dev/null +++ b/package/s6/s6.mk @@ -0,0 +1,70 @@ +################################################################################ +# +# s6 +# +################################################################################ + +S6_VERSION = 2.13.0.0 +S6_SITE = https://skarnet.org/software/s6 +S6_LICENSE = ISC +S6_LICENSE_FILES = COPYING +S6_INSTALL_STAGING = YES +S6_DEPENDENCIES = execline + +S6_CONF_OPTS = \ + --prefix=/ \ + --with-sysdeps=$(STAGING_DIR)/lib/skalibs/sysdeps \ + --with-include=$(STAGING_DIR)/include \ + --with-dynlib=$(STAGING_DIR)/lib \ + --with-lib=$(STAGING_DIR)/lib/execline \ + --with-lib=$(STAGING_DIR)/lib/skalibs \ + $(if $(BR2_STATIC_LIBS),,--disable-allstatic) \ + $(SHARED_STATIC_LIBS_OPTS) + +define S6_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(S6_CONF_OPTS)) +endef + +define S6_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define S6_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +define S6_REMOVE_STATIC_LIB_DIR + rm -rf $(TARGET_DIR)/usr/lib/s6 +endef + +S6_POST_INSTALL_TARGET_HOOKS += S6_REMOVE_STATIC_LIB_DIR + +define S6_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +HOST_S6_DEPENDENCIES = host-execline + +HOST_S6_CONF_OPTS = \ + --prefix=$(HOST_DIR) \ + --with-sysdeps=$(HOST_DIR)/lib/skalibs/sysdeps \ + --with-include=$(HOST_DIR)/include \ + --with-dynlib=$(HOST_DIR)/lib \ + --disable-static \ + --enable-shared \ + --disable-allstatic + +define HOST_S6_CONFIGURE_CMDS + (cd $(@D); $(HOST_CONFIGURE_OPTS) ./configure $(HOST_S6_CONF_OPTS)) +endef + +define HOST_S6_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_S6_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install-dynlib install-include +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/safeclib/0001-fix-armv7-asm-inline-error-GH-115.patch b/package/safeclib/0001-fix-armv7-asm-inline-error-GH-115.patch new file mode 100644 index 00000000..3cb37b96 --- /dev/null +++ b/package/safeclib/0001-fix-armv7-asm-inline-error-GH-115.patch @@ -0,0 +1,156 @@ +From 9c739800a8915d5f2a73c840190920e95ffa1c5c Mon Sep 17 00:00:00 2001 +From: Reini Urban +Date: Fri, 18 Feb 2022 09:46:45 +0100 +Subject: [PATCH] fix armv7 asm inline error GH #115 + +some armv7 buildroot variants fail on asm. +we already probe for that, so use it. +Fixes GH #115 + +[Retrieved from: +https://github.com/rurban/safeclib/commit/9c739800a8915d5f2a73c840190920e95ffa1c5c] +Signed-off-by: Fabrice Fontaine +--- + tests/perf_private.h | 49 +++++++++++++++++++++++++------------------- + 1 file changed, 28 insertions(+), 21 deletions(-) + +diff --git a/tests/perf_private.h b/tests/perf_private.h +index 3296cb3d..843674d3 100644 +--- a/tests/perf_private.h ++++ b/tests/perf_private.h +@@ -1,9 +1,9 @@ + /*------------------------------------------------------------------ + * perf_private.h - Internal benchmarking tools + * +- * 2020 Reini Urban ++ * 2020,2022 Reini Urban + * +- * Copyright (c) 2017, 2020 Reini Urban ++ * Copyright (c) 2017, 2020, 2022 Reini Urban + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person +@@ -55,13 +55,16 @@ static inline uint64_t timer_start(); + static inline uint64_t timer_end(); + + static inline clock_t rdtsc() { +-#ifdef __x86_64__ ++#ifndef ASM_INLINE ++#define NO_CYCLE_COUNTER ++ return clock(); ++#elif defined __x86_64__ + uint64_t a, d; +- __asm__ volatile("rdtsc" : "=a"(a), "=d"(d)); ++ ASM_INLINE volatile("rdtsc" : "=a"(a), "=d"(d)); + return (clock_t)(a | (d << 32)); + #elif defined(__i386__) + clock_t x; +- __asm__ volatile("rdtsc" : "=A"(x)); ++ ASM_INLINE volatile("rdtsc" : "=A"(x)); + return x; + #elif defined(__ARM_ARCH) && (__ARM_ARCH >= 7) && (SIZEOF_SIZE_T == 4) + // V7 is the earliest arch that has a standard cyclecount (some say 6) +@@ -69,11 +72,11 @@ static inline clock_t rdtsc() { + uint32_t pmuseren; + uint32_t pmcntenset; + // Read the user mode perf monitor counter access permissions. +- asm volatile("mrc p15, 0, %0, c9, c14, 0" : "=r"(pmuseren)); ++ ASM_INLINE volatile("mrc p15, 0, %0, c9, c14, 0" : "=r"(pmuseren)); + if (pmuseren & 1) { // Allows reading perfmon counters for user mode code. +- asm volatile("mrc p15, 0, %0, c9, c12, 1" : "=r"(pmcntenset)); ++ ASM_INLINE volatile("mrc p15, 0, %0, c9, c12, 1" : "=r"(pmcntenset)); + if (pmcntenset & 0x80000000ul) { // Is it counting? +- asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r"(pmccntr)); ++ ASM_INLINE volatile("mrc p15, 0, %0, c9, c13, 0" : "=r"(pmccntr)); + // The counter is set up to count every 64th cycle + return (int64_t)(pmccntr) * 64; // Should optimize to << 6 + } +@@ -83,22 +86,22 @@ static inline clock_t rdtsc() { + uint64_t pmccntr; + uint64_t pmuseren = 1UL; + // Read the user mode perf monitor counter access permissions. +- //asm volatile("mrs cntv_ctl_el0, %0" : "=r" (pmuseren)); ++ //ASM_INLINE volatile("mrs cntv_ctl_el0, %0" : "=r" (pmuseren)); + if (pmuseren & 1) { // Allows reading perfmon counters for user mode code. +- asm volatile("mrs %0, cntvct_el0" : "=r" (pmccntr)); ++ ASM_INLINE volatile("mrs %0, cntvct_el0" : "=r" (pmccntr)); + return (uint64_t)(pmccntr) * 64; // Should optimize to << 6 + } + return (uint64_t)rdtsc(); + #elif defined(__powerpc64__) || defined(__ppc64__) + uint64_t tb; +- __asm__ volatile (\ ++ ASM_INLINE volatile (\ + "mfspr %0, 268" + : "=r" (tb)); + return tb; + #elif defined(__powerpc__) || defined(__ppc__) + // This returns a time-base, which is not always precisely a cycle-count. + uint32_t tbu, tbl, tmp; +- __asm__ volatile (\ ++ ASM_INLINE volatile (\ + "0:\n" + "mftbu %0\n" + "mftbl %1\n" +@@ -109,12 +112,12 @@ static inline clock_t rdtsc() { + return (((uint64_t) tbu << 32) | tbl); + #elif defined(__sparc__) + uint64_t tick; +- asm(".byte 0x83, 0x41, 0x00, 0x00"); +- asm("mov %%g1, %0" : "=r" (tick)); ++ ASM_INLINE(".byte 0x83, 0x41, 0x00, 0x00"); ++ ASM_INLINE("mov %%g1, %0" : "=r" (tick)); + return tick; + #elif defined(__ia64__) + uint64_t itc; +- asm("mov %0 = ar.itc" : "=r" (itc)); ++ ASM_INLINE("mov %0 = ar.itc" : "=r" (itc)); + return itc; + #else + #define NO_CYCLE_COUNTER +@@ -126,9 +129,11 @@ static inline clock_t rdtsc() { + // 3.2.1 The Improved Benchmarking Method + static inline uint64_t timer_start() + { +-#if defined (__i386__) || (defined(__x86_64__) && SIZEOF_SIZE_T == 4) ++#ifndef ASM_INLINE ++ return (uint64_t)rdtsc(); ++#elif defined (__i386__) || (defined(__x86_64__) && SIZEOF_SIZE_T == 4) + uint32_t cycles_high, cycles_low; +- __asm__ volatile ++ ASM_INLINE volatile + ("cpuid\n\t" + "rdtsc\n\t" + "mov %%edx, %0\n\t" +@@ -137,7 +142,7 @@ static inline uint64_t timer_start() + return ((uint64_t)cycles_high << 32) | cycles_low; + #elif defined __x86_64__ + uint32_t cycles_high, cycles_low; +- __asm__ volatile ++ ASM_INLINE volatile + ("cpuid\n\t" + "rdtsc\n\t" + "mov %%edx, %0\n\t" +@@ -151,9 +156,11 @@ static inline uint64_t timer_start() + + static inline uint64_t timer_end() + { +-#if defined (__i386__) || (defined(__x86_64__) && defined (HAVE_BIT32)) ++#ifndef ASM_INLINE ++ return (uint64_t)rdtsc(); ++#elif defined (__i386__) || (defined(__x86_64__) && defined (HAVE_BIT32)) + uint32_t cycles_high, cycles_low; +- __asm__ volatile ++ ASM_INLINE volatile + ("rdtscp\n\t" + "mov %%edx, %0\n\t" + "mov %%eax, %1\n\t" +@@ -162,7 +169,7 @@ static inline uint64_t timer_end() + return ((uint64_t)cycles_high << 32) | cycles_low; + #elif defined __x86_64__ + uint32_t cycles_high, cycles_low; +- __asm__ volatile ++ ASM_INLINE volatile + ("rdtscp\n\t" + "mov %%edx, %0\n\t" + "mov %%eax, %1\n\t" diff --git a/package/safeclib/Config.in b/package/safeclib/Config.in new file mode 100644 index 00000000..5117c49d --- /dev/null +++ b/package/safeclib/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SAFECLIB + bool "safeclib" + help + safec fork with all C11 Annex K functions + + This library implements the secure C11 Annex K functions on + top of most libc implementations, which are missing from them. + + https://rurban.github.io/safeclib/ diff --git a/package/safeclib/safeclib.hash b/package/safeclib/safeclib.hash new file mode 100644 index 00000000..bca5d862 --- /dev/null +++ b/package/safeclib/safeclib.hash @@ -0,0 +1,5 @@ +# From https://github.com/rurban/safeclib/releases/tag/v3.7.1 +sha256 71d3ec970f930bd980f2a41127228eeedfc53749e4c6b203329adc4ff7df32a7 safeclib-3.7.1.tar.xz + +# Hash for license file +sha256 c33e77efd5781e3d59a2bb648c82d2a615035ef0d24cf58880380e3af906510b COPYING diff --git a/package/safeclib/safeclib.mk b/package/safeclib/safeclib.mk new file mode 100644 index 00000000..bc58c1a3 --- /dev/null +++ b/package/safeclib/safeclib.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# safeclib +# +################################################################################ + +SAFECLIB_VERSION = 3.7.1 +SAFECLIB_SITE = \ + https://github.com/rurban/safeclib/releases/download/v$(SAFECLIB_VERSION) +SAFECLIB_SOURCE = safeclib-$(SAFECLIB_VERSION).tar.xz +SAFECLIB_LICENSE = MIT +SAFECLIB_LICENSE_FILES = COPYING +SAFECLIB_INSTALL_STAGING = YES +SAFECLIB_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -std=c99" +# -fstack-protector-strong is used by default. Disable that so the +# BR2_SSP_* options in the toolchain wrapper are used instead +SAFECLIB_CONF_OPTS = --disable-hardening + +$(eval $(autotools-package)) diff --git a/package/sam-ba/Config.in.host b/package/sam-ba/Config.in.host new file mode 100644 index 00000000..cd11e863 --- /dev/null +++ b/package/sam-ba/Config.in.host @@ -0,0 +1,10 @@ +config BR2_PACKAGE_HOST_SAM_BA + bool "host sam-ba" + depends on BR2_HOSTARCH = "x86_64" + help + Atmel SAM-BA software provides an open set of tools for + programming the Atmel SAM3, SAM7 and SAM9 ARM-based + microcontrollers. + + https://www.linux4sam.org/bin/view/Linux4SAM/SoftwareTools + https://www.microchip.com/en-us/development-tool/SAM-BA-IN-SYSTEM-PROGRAMMER diff --git a/package/sam-ba/sam-ba.hash b/package/sam-ba/sam-ba.hash new file mode 100644 index 00000000..252a60db --- /dev/null +++ b/package/sam-ba/sam-ba.hash @@ -0,0 +1,3 @@ +# sha256 locally computed +sha256 d295567701914e21318f4c48ff3a57374c7c91f65f0814158e84bb07dd4d07c2 sam-ba_v3.7-linux_x86_64.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.txt diff --git a/package/sam-ba/sam-ba.mk b/package/sam-ba/sam-ba.mk new file mode 100644 index 00000000..0928c8f9 --- /dev/null +++ b/package/sam-ba/sam-ba.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# sam-ba +# +################################################################################ + +SAM_BA_VERSION = 3.7 +SAM_BA_SITE = https://ww1.microchip.com/downloads/aemDocuments/documents/MPU32/ProductDocuments/SoftwareLibraries/Firmware +SAM_BA_SOURCE = sam-ba_v$(SAM_BA_VERSION)-linux_x86_64.tar.gz +SAM_BA_LICENSE = GPLv2 +SAM_BA_LICENSE_FILES = LICENSE.txt + +# Since it's a prebuilt application and it does not conform to the +# usual Unix hierarchy, we install it in $(HOST_DIR)/opt/sam-ba and +# then create a symbolic link from $(HOST_DIR)/bin to the +# application binary, for easier usage. + +define HOST_SAM_BA_INSTALL_CMDS + mkdir -p $(HOST_DIR)/opt/sam-ba/ + cp -a $(@D)/* $(HOST_DIR)/opt/sam-ba/ + mkdir -p $(HOST_DIR)/bin/ + ln -sf ../opt/sam-ba/sam-ba $(HOST_DIR)/bin/sam-ba +endef + +$(eval $(host-generic-package)) diff --git a/package/samba4/0001-build-find-pre-built-heimdal-build-tools-in-case-of-.patch b/package/samba4/0001-build-find-pre-built-heimdal-build-tools-in-case-of-.patch new file mode 100644 index 00000000..eb0ea099 --- /dev/null +++ b/package/samba4/0001-build-find-pre-built-heimdal-build-tools-in-case-of-.patch @@ -0,0 +1,63 @@ +From 2e53f331104b29db7caf1641a30d3e9316b57184 Mon Sep 17 00:00:00 2001 +From: Uri Simchoni +Date: Sun, 20 Oct 2019 00:03:14 +0300 +Subject: [PATCH] build: find pre-built heimdal build tools in case of embedded + heimdal + +This patch fixes the case of finding asn1_compile and compile_et for +building embedded heimdal, by setting +--bundled-libraries='!asn1_compile,!compile_et' as configure flags. + +The Heimdal build tools compile_et and asn1_compile are needed *only* +if we use the embedded heimdal (otherwise we don't build heimdal and +use headers that have been generated by those tools elsewhere). + +For cross-compilation with embedded heimdal, it is vital to use host build +tools, and so asn1_compile and compile_et must be supplied and not +built. One way of doing this would be to set the COMPILE_ET and +ASN1_COMPILE env vars to the location of supplied binaries. Another way, +which is more commonly used, is to exclude asn1_compile and compile_et +from bundled packages via the switch +-bundled-libraries='!asn1_compile,!compile_et'. When this is done, +the build script searches the path for those tools and sets the +ASN1_COMPILE and COMPILE_ET vars accordingly. (this is admittedly +kind of a round-about way of doing things but this has become the +de-facto standard amongst embedded distro builders). + +In commit 8061983d4882f3ba3f12da71443b035d7b672eec, this process of +finding the binaris has been moved to be carried out only in the +system heimdal case. As explained above, we only need these tools, +and hence the check, in bundled mode. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=14164 + +Signed-off-by: Uri Simchoni +Signed-off-by: Bernd Kuhls +[Bernd: rebased for version 4.11.13, 4.17.7 & 4.20.3] +--- + wscript_configure_embedded_heimdal | 11 +++++++++++ + wscript_configure_system_heimdal | 11 ----------- + 2 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/wscript_configure_embedded_heimdal b/wscript_configure_embedded_heimdal +index 8c55ae2..4fdae80 100644 +--- a/wscript_configure_embedded_heimdal ++++ b/wscript_configure_embedded_heimdal +@@ -13,3 +13,14 @@ + # when this will be available also in + # system libraries... + conf.define('HAVE_CLIENT_GSS_C_CHANNEL_BOUND_FLAG', 1) ++ ++def check_system_heimdal_binary(name): ++ if conf.LIB_MAY_BE_BUNDLED(name): ++ return False ++ if not conf.find_program(name, var=name.upper()): ++ return False ++ conf.define('USING_SYSTEM_%s' % name.upper(), 1) ++ return True ++ ++check_system_heimdal_binary("compile_et") ++check_system_heimdal_binary("asn1_compile") +-- +2.20.1 + diff --git a/package/samba4/0002-ldap_message_test.c-include-stdint.h-before-cmoka.h.patch b/package/samba4/0002-ldap_message_test.c-include-stdint.h-before-cmoka.h.patch new file mode 100644 index 00000000..e63f43c2 --- /dev/null +++ b/package/samba4/0002-ldap_message_test.c-include-stdint.h-before-cmoka.h.patch @@ -0,0 +1,40 @@ +From b2ea5dc3639d68b878c6534f4992da446dbbf2d4 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 16 May 2020 18:15:38 +0200 +Subject: [PATCH] ldap_message_test.c: include stdint.h before cmoka.h + +This fix the following build failure on uclibc: + +In file included from /home/giuliobenetti/autobuild/run/instance-1/output-1/host/opt/ext-toolchain/lib/gcc/mips64el-buildroot-linux-uclibc/5.5.0/include/stdint.h:9:0, + from /home/giuliobenetti/autobuild/run/instance-1/output-1/host/mips64el-buildroot-linux-uclibc/sysroot/usr/include/inttypes.h:27, + from ../../lib/replace/../replace/replace.h:64, + from ../../source4/include/includes.h:23, + from ../../libcli/ldap/tests/ldap_message_test.c:41: +/home/giuliobenetti/autobuild/run/instance-1/output-1/host/mips64el-buildroot-linux-uclibc/sysroot/usr/include/stdint.h:122:27: error: conflicting types for 'uintptr_t' + typedef unsigned long int uintptr_t; + ^ + +Fixes: + - http://autobuild.buildroot.org/results/09e84d15efe755bdefa9f8c6b8355c49ddbc2f65 + +Signed-off-by: Fabrice Fontaine +[Upstream status: not sent yet] +--- + libcli/ldap/tests/ldap_message_test.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libcli/ldap/tests/ldap_message_test.c b/libcli/ldap/tests/ldap_message_test.c +index c5aacd4bc6b..51331e5c600 100644 +--- a/libcli/ldap/tests/ldap_message_test.c ++++ b/libcli/ldap/tests/ldap_message_test.c +@@ -34,6 +34,7 @@ + */ + #include + #include ++#include + #include + #include + +-- +2.26.2 + diff --git a/package/samba4/Config.in b/package/samba4/Config.in new file mode 100644 index 00000000..5907bdc4 --- /dev/null +++ b/package/samba4/Config.in @@ -0,0 +1,58 @@ +comment "samba4 needs a uClibc or glibc toolchain w/ wchar, dynamic library, NPTL" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || BR2_TOOLCHAIN_USES_MUSL \ + || 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 # python + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # python -> libffi + depends on !BR2_STATIC_LIBS # cmocka, python, gnutls + depends on !BR2_nios2 # binary too large, relocations don't fit + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_USES_MUSL + select BR2_PACKAGE_CMOCKA + select BR2_PACKAGE_E2FSPROGS + select BR2_PACKAGE_GNUTLS + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_PACKAGE_POPT + select BR2_PACKAGE_ZLIB + help + Provides secure, stable and fast file and print services + for all clients using the SMB/CIFS protocol, such as all + versions of DOS, Windows, OS/2, Linux and many others. + + http://www.samba.org/ + +if BR2_PACKAGE_SAMBA4 + +config BR2_PACKAGE_SAMBA4_AD_DC + bool "AD DC" + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_JANSSON + select BR2_PACKAGE_PYTHON_DNSPYTHON + select BR2_PACKAGE_PYTHON_MARKDOWN + select BR2_PACKAGE_SAMBA4_ADS + help + Enable Active Directory Domain Controller functionality. + +comment "AD DC depends on python3" + depends on !BR2_PACKAGE_PYTHON3 + +config BR2_PACKAGE_SAMBA4_ADS + bool "ADS" + select BR2_PACKAGE_OPENLDAP + help + Enable Active Directory member Server functionality. + +config BR2_PACKAGE_SAMBA4_SMBTORTURE + bool "smbtorture" + help + Install the smbtorture test suite. + It's normally used for validation and stress testing. + Approximately +5 MB of stripped uncompressed target space. + +endif diff --git a/package/samba4/S91smb b/package/samba4/S91smb new file mode 100644 index 00000000..c8c5fc86 --- /dev/null +++ b/package/samba4/S91smb @@ -0,0 +1,56 @@ +#!/bin/sh + +[ -f /etc/samba/smb.conf ] || exit 0 + +mkdir -p /var/log/samba + +start() { + printf "Starting SMB services: " + smbd -D + [ $? = 0 ] && echo "OK" || echo "FAIL" + + printf "Starting NMB services: " + nmbd -D + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Shutting down SMB services: " + kill -9 `pidof smbd` + [ $? = 0 ] && echo "OK" || echo "FAIL" + + printf "Shutting down NMB services: " + kill -9 `pidof nmbd` + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +restart() { + stop + start +} + +reload() { + printf "Reloading smb.conf file: " + kill -HUP `pidof smbd` + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + restart + ;; + reload) + reload + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac + +exit $? diff --git a/package/samba4/samba4-cache.txt b/package/samba4/samba4-cache.txt new file mode 100644 index 00000000..d95776a0 --- /dev/null +++ b/package/samba4/samba4-cache.txt @@ -0,0 +1,47 @@ +Checking simple C program: OK +rpath library support: OK +-Wl,--version-script support: OK +Checking getconf LFS_CFLAGS: NO +Checking for large file support without additional flags: OK +Checking for -D_LARGE_FILES: OK +Checking correct behavior of strtoll: NO +Checking for working strptime: OK +Checking for C99 vsnprintf: OK +Checking for HAVE_SHARED_MMAP: OK +Checking for HAVE_MREMAP: OK +Checking for HAVE_INCOHERENT_MMAP: NO +Checking for HAVE_SECURE_MKSTEMP: OK +Checking for HAVE_IFACE_GETIFADDRS: OK +Checking for kernel change notify support: OK +Checking for Linux kernel oplocks: OK +Checking for kernel share modes: OK +Checking if can we convert from CP850 to UCS-2LE: OK +Checking if can we convert from UTF-8 to UCS-2LE: OK +Checking whether we can use Linux thread-specific credentials with 32-bit system calls: OK +Checking whether we can use Linux thread-specific credentials: OK +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 +Checking for ftruncate extend: OK +vfs_fileid checking for statfs() and struct statfs.f_fsid: OK +getcwd takes a NULL argument: OK +Checking uname sysname type: "Linux" +Checking uname release type: "3.0.0" +Checking uname version type: "#1 Tue Nov 1 12:34:56 UTC 2013" +Checking value of NSIG: "65" +Checking value of _NSIG: "65" +Checking value of SIGRTMAX: "64" +Checking value of SIGRTMIN: "34" +Checking errno of iconv for illegal multibyte sequence: "0" +checking for clnt_create(): OK +Checking for a 64-bit host to support lmdb: NO +Checking value of GNUTLS_CIPHER_AES_128_CFB8: 29 +Checking value of GNUTLS_MAC_AES_CMAC_128: 203 +Checking whether fcntl supports flags to send direct I/O availability signals: OK +Checking for gnutls fips mode support: NO +Checking for readlink breakage: NO diff --git a/package/samba4/samba4.hash b/package/samba4/samba4.hash new file mode 100644 index 00000000..d2512f2e --- /dev/null +++ b/package/samba4/samba4.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +# https://download.samba.org/pub/samba/stable/samba-4.20.3.tar.asc +sha256 afd5a9bb03e5c921c4c1d4e4b4fa6ea16cf798d94e5e5bffb9fd61716641cf30 samba-4.20.3.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/samba4/samba4.mk b/package/samba4/samba4.mk new file mode 100644 index 00000000..d48a0214 --- /dev/null +++ b/package/samba4/samba4.mk @@ -0,0 +1,206 @@ +################################################################################ +# +# samba4 +# +################################################################################ + +SAMBA4_VERSION = 4.20.3 +SAMBA4_SITE = https://download.samba.org/pub/samba/stable +SAMBA4_SOURCE = samba-$(SAMBA4_VERSION).tar.gz +SAMBA4_INSTALL_STAGING = YES +SAMBA4_LICENSE = GPL-3.0+ +SAMBA4_LICENSE_FILES = COPYING +SAMBA4_CPE_ID_VENDOR = samba +SAMBA4_CPE_ID_PRODUCT = samba +SAMBA4_SELINUX_MODULES = samba +SAMBA4_DEPENDENCIES = \ + host-e2fsprogs host-flex host-heimdal host-nfs-utils \ + host-perl host-perl-parse-yapp host-python3 \ + cmocka e2fsprogs gnutls popt zlib \ + $(if $(BR2_PACKAGE_ICU),icu) \ + $(if $(BR2_PACKAGE_LIBAIO),libaio) \ + $(if $(BR2_PACKAGE_LIBCAP),libcap) \ + $(if $(BR2_PACKAGE_LIBGLIB2),libglib2) \ + $(if $(BR2_PACKAGE_READLINE),readline) \ + $(TARGET_NLS_DEPENDENCIES) +SAMBA4_CFLAGS = $(TARGET_CFLAGS) +SAMBA4_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) +SAMBA4_CONF_ENV = \ + CFLAGS="$(SAMBA4_CFLAGS)" \ + LDFLAGS="$(SAMBA4_LDFLAGS)" \ + XSLTPROC=false \ + WAF_NO_PREFORK=1 + +SAMBA4_PYTHON = PYTHON="$(HOST_DIR)/bin/python3" +ifeq ($(BR2_PACKAGE_PYTHON3),y) +SAMBA4_PYTHON += PYTHON_CONFIG="$(STAGING_DIR)/usr/bin/python3-config" +SAMBA4_DEPENDENCIES += python3 +else +SAMBA4_CONF_OPTS += --disable-python +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +SAMBA4_DEPENDENCIES += libiconv +SAMBA4_LDFLAGS += -liconv +endif + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +SAMBA4_CFLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc` +SAMBA4_LDFLAGS += `$(PKG_CONFIG_HOST_BINARY) --libs libtirpc` +SAMBA4_DEPENDENCIES += libtirpc host-pkgconf +endif + +ifeq ($(BR2_PACKAGE_ACL),y) +SAMBA4_CONF_OPTS += --with-acl-support +SAMBA4_DEPENDENCIES += acl +else +SAMBA4_CONF_OPTS += --without-acl-support +endif + +ifeq ($(BR2_PACKAGE_CUPS),y) +SAMBA4_CONF_ENV += CUPS_CONFIG="$(STAGING_DIR)/usr/bin/cups-config" +SAMBA4_CONF_OPTS += --enable-cups +SAMBA4_DEPENDENCIES += cups +else +SAMBA4_CONF_OPTS += --disable-cups +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +SAMBA4_DEPENDENCIES += dbus +SAMBA4_SHARED_MODULES += vfs_snapper +else +SAMBA4_SHARED_MODULES += !vfs_snapper +endif + +ifeq ($(BR2_PACKAGE_DBUS)$(BR2_PACKAGE_AVAHI_DAEMON),yy) +SAMBA4_CONF_OPTS += --enable-avahi +SAMBA4_DEPENDENCIES += avahi +else +SAMBA4_CONF_OPTS += --disable-avahi +endif + +ifeq ($(BR2_PACKAGE_LIBARCHIVE),y) +SAMBA4_CONF_OPTS += --with-libarchive +SAMBA4_DEPENDENCIES += libarchive +else +SAMBA4_CONF_OPTS += --without-libarchive +endif + +ifeq ($(BR2_PACKAGE_LIBUNWIND),y) +SAMBA4_CONF_OPTS += --with-libunwind +SAMBA4_DEPENDENCIES += libunwind +else +SAMBA4_CONF_OPTS += --without-libunwind +endif + +ifeq ($(BR2_PACKAGE_NCURSES),y) +SAMBA4_CONF_ENV += NCURSES_CONFIG="$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS)" +SAMBA4_DEPENDENCIES += ncurses +else +SAMBA4_CONF_OPTS += --without-regedit +endif + +# The ctdb tests (cluster) need bash and take up some space +# They're normally intended for debugging so remove them +define SAMBA4_REMOVE_CTDB_TESTS + rm -rf $(TARGET_DIR)/usr/lib/ctdb-tests + rm -rf $(TARGET_DIR)/usr/share/ctdb-tests + rm -f $(TARGET_DIR)/usr/bin/ctdb_run_*tests +endef +SAMBA4_POST_INSTALL_TARGET_HOOKS += SAMBA4_REMOVE_CTDB_TESTS + +define SAMBA4_CONFIGURE_CMDS + $(INSTALL) -m 0644 package/samba4/samba4-cache.txt $(@D)/cache.txt; + echo 'Checking whether fcntl supports setting/getting hints: $(if $(BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13),OK,NO)' >>$(@D)/cache.txt; + echo 'Checking uname machine type: $(BR2_ARCH)' >>$(@D)/cache.txt; + (cd $(@D); \ + $(SAMBA4_PYTHON) \ + python_LDFLAGS="" \ + python_LIBDIR="" \ + PERL="$(HOST_DIR)/bin/perl" \ + $(TARGET_CONFIGURE_OPTS) \ + $(SAMBA4_CONF_ENV) \ + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --with-libiconv=$(STAGING_DIR)/usr \ + --enable-fhs \ + --cross-compile \ + --cross-answers=$(@D)/cache.txt \ + --hostcc=gcc \ + --disable-rpath \ + --disable-rpath-install \ + --disable-iprint \ + --without-fam \ + --without-pam \ + --without-dmapi \ + --without-gpgme \ + --without-ldb-lmdb \ + --disable-glusterfs \ + --with-cluster-support \ + --bundled-libraries='!asn1_compile,!compile_et' \ + --with-shared-modules=$(subst $(space),$(comma),$(strip $(SAMBA4_SHARED_MODULES))) \ + $(SAMBA4_CONF_OPTS) \ + ) +endef + +define SAMBA4_BUILD_CMDS + $(TARGET_MAKE_ENV) $(SAMBA4_PYTHON) $(MAKE) -C $(@D) +endef + +define SAMBA4_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(SAMBA4_PYTHON) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +define SAMBA4_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(SAMBA4_PYTHON) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +ifeq ($(BR2_PACKAGE_SAMBA4_AD_DC),y) +# host-python-dnspython and host-python-markdown are not strictly +# needed on the host, but on the target. however, samba's configure +# tests for their availability on the host. +SAMBA4_DEPENDENCIES += \ + jansson \ + host-python-dnspython \ + host-python-markdown \ + python-dnspython \ + python-markdown +else +SAMBA4_CONF_OPTS += --without-ad-dc --without-json +endif + +ifeq ($(BR2_PACKAGE_SAMBA4_ADS),y) +SAMBA4_CONF_OPTS += --with-ads --with-ldap +SAMBA4_DEPENDENCIES += openldap +SAMBA4_SHARED_MODULES += idmap_ad +else +SAMBA4_CONF_OPTS += --without-ads --without-ldap +SAMBA4_SHARED_MODULES += !idmap_ad +endif + +ifeq ($(BR2_PACKAGE_SAMBA4_SMBTORTURE),) +define SAMBA4_REMOVE_SMBTORTURE + rm -f $(TARGET_DIR)/usr/bin/smbtorture +endef +SAMBA4_POST_INSTALL_TARGET_HOOKS += SAMBA4_REMOVE_SMBTORTURE +endif + +define SAMBA4_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/samba4/S91smb \ + $(TARGET_DIR)/etc/init.d/S91smb +endef + +ifeq ($(BR2_INIT_SYSTEMD),y) +SAMBA4_CONF_OPTS += --systemd-install-services +SAMBA4_DEPENDENCIES += systemd +endif + +define SAMBA4_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(@D)/packaging/systemd/samba.conf.tmp \ + $(TARGET_DIR)/usr/lib/tmpfiles.d/samba.conf + printf "d /var/log/samba 755 root root\n" >>$(TARGET_DIR)/usr/lib/tmpfiles.d/samba.conf +endef + +$(eval $(generic-package)) diff --git a/package/sane-backends/0001-sane_backend-add-missing-config.h.patch b/package/sane-backends/0001-sane_backend-add-missing-config.h.patch new file mode 100644 index 00000000..f3796933 --- /dev/null +++ b/package/sane-backends/0001-sane_backend-add-missing-config.h.patch @@ -0,0 +1,51 @@ +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 +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + 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" + + /** @name Compatibility macros + * @{ +-- +2.5.5 + diff --git a/package/sane-backends/Config.in b/package/sane-backends/Config.in new file mode 100644 index 00000000..48ae9f79 --- /dev/null +++ b/package/sane-backends/Config.in @@ -0,0 +1,16 @@ +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 + + http://www.sane-project.org + + 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/package/sane-backends/sane-backends.hash b/package/sane-backends/sane-backends.hash new file mode 100644 index 00000000..4282798d --- /dev/null +++ b/package/sane-backends/sane-backends.hash @@ -0,0 +1,5 @@ +# From https://gitlab.com/sane-project/backends/uploads/d7cf858db3e2abb8fad09cf6b944fc10/sane-backends-1.1.1.sha512.txt +sha512 25bd9f90d550cfe6a6d01c48e83716a53f4b0e3a294287e455ecb5e5b80c8fe1699f45c6c87f694475cceb85745c70597e18a7b1094669d5091c5fb183dfe94d sane-backends-1.1.1.tar.gz + +# Hash for license file +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/sane-backends/sane-backends.mk b/package/sane-backends/sane-backends.mk new file mode 100644 index 00000000..fe89e774 --- /dev/null +++ b/package/sane-backends/sane-backends.mk @@ -0,0 +1,95 @@ +################################################################################ +# +# sane-backends +# +################################################################################ + +SANE_BACKENDS_VERSION = 1.1.1 +SANE_BACKENDS_SITE = \ + https://gitlab.com/sane-project/backends/uploads/7d30fab4e115029d91027b6a58d64b43 +SANE_BACKENDS_CONFIG_SCRIPTS = sane-config +SANE_BACKENDS_LICENSE = GPL-2.0+ +SANE_BACKENDS_LICENSE_FILES = COPYING +SANE_BACKENDS_CPE_ID_VALID = YES +SANE_BACKENDS_INSTALL_STAGING = YES + +SANE_BACKENDS_CONF_OPTS = \ + $(if $(BR2_TOOLCHAIN_HAS_THREADS),--enable-pthread,--disable-pthread) + +ifeq ($(BR2_INIT_SYSTEMD),y) +SANE_BACKENDS_CONF_OPTS += --with-systemd +SANE_BACKENDS_DEPENDENCIES += systemd +else +SANE_BACKENDS_CONF_OPTS += --without-systemd +endif + +ifeq ($(BR2_PACKAGE_LIBUSB),y) +SANE_BACKENDS_DEPENDENCIES += libusb +SANE_BACKENDS_CONF_OPTS += --with-usb +else +SANE_BACKENDS_CONF_OPTS += --without-usb +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +SANE_BACKENDS_DEPENDENCIES += jpeg +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +SANE_BACKENDS_DEPENDENCIES += tiff +endif + +ifeq ($(BR2_PACKAGE_LIBV4L),y) +SANE_BACKENDS_DEPENDENCIES += libv4l +endif + +ifeq ($(BR2_PACKAGE_AVAHI)$(BR2_PACKAGE_DBUS)$(BR2_PACKAGE_LIBGLIB2),yyy) +SANE_BACKENDS_DEPENDENCIES += avahi +SANE_BACKENDS_CONF_OPTS += --with-avahi +endif + +ifeq ($(BR2_PACKAGE_NETSNMP),y) +SANE_BACKENDS_CONF_ENV += ac_cv_path_SNMP_CONFIG_PATH=$(STAGING_DIR)/usr/bin/net-snmp-config +SANE_BACKENDS_DEPENDENCIES += netsnmp +else +SANE_BACKENDS_CONF_OPTS += --without-snmp +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +SANE_BACKENDS_DEPENDENCIES += libcurl +SANE_BACKENDS_CONF_OPTS += --with-libcurl +else +SANE_BACKENDS_CONF_OPTS += --without-libcurl +endif + +ifeq ($(BR2_PACKAGE_POPPLER)$(BR2_PACKAGE_CAIRO)$(BR2_PACKAGE_LIBGLIB2),yyy) +SANE_BACKENDS_DEPENDENCIES += poppler libglib2 +SANE_BACKENDS_CONF_OPTS += --with-poppler-glib +else +SANE_BACKENDS_CONF_OPTS += --without-poppler-glib +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +SANE_BACKENDS_DEPENDENCIES += libxml2 +SANE_BACKENDS_CONF_OPTS += --with-usb-record-replay +else +SANE_BACKENDS_CONF_OPTS += --without-usb-record-replay +endif + +define SANE_BACKENDS_DISABLE_DOCS + $(SED) 's/ doc//' $(@D)/Makefile +endef + +SANE_BACKENDS_POST_CONFIGURE_HOOKS += SANE_BACKENDS_DISABLE_DOCS + +define SANE_BACKENDS_USERS + saned -1 saned -1 * /etc/sane.d - - Saned User +endef + +define SANE_BACKENDS_INSTALL_INIT_SYSTEMD + $(INSTALL) -m 0644 -D package/sane-backends/saned.socket \ + $(TARGET_DIR)/usr/lib/systemd/system/saned.socket + $(INSTALL) -m 0644 -D package/sane-backends/saned@.service \ + $(TARGET_DIR)/usr/lib/systemd/system/saned@.service +endef + +$(eval $(autotools-package)) diff --git a/package/sane-backends/saned.socket b/package/sane-backends/saned.socket new file mode 100644 index 00000000..1aa19e70 --- /dev/null +++ b/package/sane-backends/saned.socket @@ -0,0 +1,10 @@ +[Unit] +Description=saned incoming socket + +[Socket] +ListenStream=6566 +Accept=yes +MaxConnections=1 + +[Install] +WantedBy=sockets.target diff --git a/package/sane-backends/saned@.service b/package/sane-backends/saned@.service new file mode 100644 index 00000000..1905dbf5 --- /dev/null +++ b/package/sane-backends/saned@.service @@ -0,0 +1,18 @@ +[Unit] +Description=Scanner Service +Requires=saned.socket + +[Service] +ExecStart=/usr/sbin/saned +User=saned +Group=saned +StandardInput=null +StandardOutput=syslog +StandardError=syslog +Environment=SANE_CONFIG_DIR=/etc/sane.d +# If you need to debug your configuration uncomment the next line and +# change it as appropriate to set the desired debug options +# Environment=SANE_DEBUG_DLL=255 SANE_DEBUG_BJNP=5 + +[Install] +Also=saned.socket diff --git a/package/sbc/Config.in b/package/sbc/Config.in new file mode 100644 index 00000000..4d1f6297 --- /dev/null +++ b/package/sbc/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_SBC + bool "sbc" + help + An audio codec to connect bluetooth high quality audio + devices like headphones or loudspeakers. + + http://www.bluez.org/ + +if BR2_PACKAGE_SBC + +config BR2_PACKAGE_SBC_TOOLS + bool "tools" + select BR2_PACKAGE_LIBSNDFILE + help + Build the command-line SBC tools as well as the library. + +endif diff --git a/package/sbc/sbc.hash b/package/sbc/sbc.hash new file mode 100644 index 00000000..b080c062 --- /dev/null +++ b/package/sbc/sbc.hash @@ -0,0 +1,6 @@ +# From https://www.kernel.org/pub/linux/bluetooth/sha256sums.asc +sha256 8f12368e1dbbf55e14536520473cfb338c84b392939cc9b64298360fd4a07992 sbc-2.0.tar.xz + +# sha256 locally computed +sha256 b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259 COPYING +sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING.LIB diff --git a/package/sbc/sbc.mk b/package/sbc/sbc.mk new file mode 100644 index 00000000..7a37a996 --- /dev/null +++ b/package/sbc/sbc.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# sbc +# +################################################################################ + +SBC_VERSION = 2.0 +SBC_SOURCE = sbc-$(SBC_VERSION).tar.xz +SBC_SITE = $(BR2_KERNEL_MIRROR)/linux/bluetooth +SBC_INSTALL_STAGING = YES +SBC_DEPENDENCIES = host-pkgconf +SBC_LICENSE := LGPL-2.1+ (library) +SBC_LICENSE_FILES = COPYING COPYING.LIB + +ifeq ($(BR2_PACKAGE_SBC_TOOLS),y) +SBC_DEPENDENCIES += libsndfile +SBC_CONF_OPTS += --enable-tools --enable-tester +SBC_LICENSE += , GPL-2.0+ (programs) +else +SBC_CONF_OPTS += --disable-tools --disable-tester +endif + +$(eval $(autotools-package)) diff --git a/package/sconeserver/Config.in b/package/sconeserver/Config.in new file mode 100644 index 00000000..d1a8a031 --- /dev/null +++ b/package/sconeserver/Config.in @@ -0,0 +1,96 @@ +menuconfig BR2_PACKAGE_SCONESERVER + bool "sconeserver" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on !BR2_STATIC_LIBS # dlopen() + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_PCRE + select BR2_PACKAGE_ZLIB + help + Sconeserver is a modular, object-orientated and extremely + versatile network server framework for GNU/Linux and + UNIX-like platforms. + + http://www.sconemad.com/sconeserver/ + +if BR2_PACKAGE_SCONESERVER + +comment "Sconeserver modules" + +config BR2_PACKAGE_SCONESERVER_BLUETOOTH + bool "bluetooth" + depends on BR2_USE_WCHAR # bluez5_utils -> libglib2 + depends on BR2_USE_MMU # bluez5_utils -> dbus + depends on BR2_TOOLCHAIN_HAS_THREADS # bluez5_utils -> dbus, libglib2 + depends on !BR2_STATIC_LIBS # bluez5_utils + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # bluez5_utils + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # bluez5_utils + select BR2_PACKAGE_BLUEZ5_UTILS + help + Bluetooth module for Sconeserver + +comment "bluetooth support needs a toolchain w/ wchar, threads, dynamic library, headers >= 3.4" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 + +config BR2_PACKAGE_SCONESERVER_EXAMPLES + bool "examples" + help + Example modules for Sconeserver + +config BR2_PACKAGE_SCONESERVER_HTTP_SCONESITE + bool "http::sconesite" + select BR2_PACKAGE_LIBXML2 + help + http::sconesite module for Sconeserver + +config BR2_PACKAGE_SCONESERVER_LOCATION + bool "location" + depends on BR2_USE_MMU # gpsd + depends on BR2_TOOLCHAIN_HAS_THREADS # gpsd + depends on !BR2_STATIC_LIBS # gpsd + select BR2_PACKAGE_GPSD + help + Location module for Sconeserver + +comment "location support needs a toolchain w/ theads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +config BR2_PACKAGE_SCONESERVER_MATHS + bool "maths" + select BR2_PACKAGE_MPFR + help + Mathematics module for Sconeserver + +config BR2_PACKAGE_SCONESERVER_MYSQL + bool "mysql" + depends on BR2_USE_MMU # mysql + select BR2_PACKAGE_MARIADB + help + MySQL module for Sconeserver + +config BR2_PACKAGE_SCONESERVER_RSS + bool "rss" + select BR2_PACKAGE_LIBXML2 + help + RSS module for Sconeserver + +config BR2_PACKAGE_SCONESERVER_SQLITE + bool "sqlite" + select BR2_PACKAGE_SQLITE + help + SQLite module for Sconeserver + +config BR2_PACKAGE_SCONESERVER_TESTBUILDER + bool "testbuilder" + help + Testbuilder module for Sconeserver + +endif # BR2_PACKAGE_SCONESERVER + +comment "sconeserver needs a toolchain with dynamic library, C++, NPTL" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \ + || BR2_STATIC_LIBS diff --git a/package/sconeserver/sconeserver.hash b/package/sconeserver/sconeserver.hash new file mode 100644 index 00000000..ba86e44a --- /dev/null +++ b/package/sconeserver/sconeserver.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 47552b20579678e49150abe071d9eb55cf23bd13f7f6e4fa085d0612bf6a3431 sconeserver-8d1935919a2013358993a8e9dfa992cbde56e503.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/sconeserver/sconeserver.mk b/package/sconeserver/sconeserver.mk new file mode 100644 index 00000000..bb0da12d --- /dev/null +++ b/package/sconeserver/sconeserver.mk @@ -0,0 +1,93 @@ +################################################################################ +# +# sconeserver +# +################################################################################ + +SCONESERVER_VERSION = 8d1935919a2013358993a8e9dfa992cbde56e503 +SCONESERVER_SITE = $(call github,sconemad,sconeserver,$(SCONESERVER_VERSION)) +SCONESERVER_LICENSE = GPL-2.0+ +SCONESERVER_LICENSE_FILES = COPYING +SCONESERVER_DEPENDENCIES = \ + host-pkgconf \ + $(if $(BR2_PACKAGE_LIBXCRYPT),libxcrypt) \ + pcre \ + zlib +# disable image as it fails to build with ImageMagick +# disable markdown module because its git submodule cmark +# https://github.com/sconemad/sconeserver/tree/master/markdown +# has no cross-compile support provided by the sconeserver build system +SCONESERVER_CONF_OPTS += \ + -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) -std=c++11" \ + -DWITH_IMAGE=OFF \ + -DWITH_MARKDOWN=OFF + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +SCONESERVER_DEPENDENCIES += openssl +SCONESERVER_CONF_OPTS += -DWITH_SSL=ON +else +SCONESERVER_CONF_OPTS += -DWITH_SSL=OFF +endif + +ifeq ($(BR2_PACKAGE_SCONESERVER_BLUETOOTH),y) +SCONESERVER_DEPENDENCIES += bluez5_utils +SCONESERVER_CONF_OPTS += -DWITH_BLUETOOTH=ON +else +SCONESERVER_CONF_OPTS += -DWITH_BLUETOOTH=OFF +endif + +ifeq ($(BR2_PACKAGE_SCONESERVER_EXAMPLES),y) +SCONESERVER_CONF_OPTS += -DWITH_EXAMPLES=ON +else +SCONESERVER_CONF_OPTS += -DWITH_EXAMPLES=OFF +endif + +ifeq ($(BR2_PACKAGE_SCONESERVER_HTTP_SCONESITE),y) +SCONESERVER_DEPENDENCIES += libxml2 +SCONESERVER_CONF_OPTS += -DWITH_SCONESITE=ON +else +SCONESERVER_CONF_OPTS += -DWITH_SCONESITE=OFF +endif + +ifeq ($(BR2_PACKAGE_SCONESERVER_LOCATION),y) +SCONESERVER_DEPENDENCIES += gpsd +SCONESERVER_CONF_OPTS += -DWITH_LOCATION=ON +else +SCONESERVER_CONF_OPTS += -DWITH_LOCATION=OFF +endif + +ifeq ($(BR2_PACKAGE_SCONESERVER_MATHS),y) +SCONESERVER_DEPENDENCIES += mpfr +SCONESERVER_CONF_OPTS += -DWITH_MATHS=ON +else +SCONESERVER_CONF_OPTS += -DWITH_MATHS=OFF +endif + +ifeq ($(BR2_PACKAGE_SCONESERVER_MYSQL),y) +SCONESERVER_DEPENDENCIES += mariadb +SCONESERVER_CONF_OPTS += -DWITH_MYSQL=ON +else +SCONESERVER_CONF_OPTS += -DWITH_MYSQL=OFF +endif + +ifeq ($(BR2_PACKAGE_SCONESERVER_RSS),y) +SCONESERVER_DEPENDENCIES += libxml2 +SCONESERVER_CONF_OPTS += -DWITH_RSS=ON +else +SCONESERVER_CONF_OPTS += -DWITH_RSS=OFF +endif + +ifeq ($(BR2_PACKAGE_SCONESERVER_SQLITE),y) +SCONESERVER_DEPENDENCIES += sqlite +SCONESERVER_CONF_OPTS += -DWITH_SQLITE=ON +else +SCONESERVER_CONF_OPTS += -DWITH_SQLITE=OFF +endif + +ifeq ($(BR2_PACKAGE_SCONESERVER_TESTBUILDER),y) +SCONESERVER_CONF_OPTS += -DWITH_TESTBUILDER=ON +else +SCONESERVER_CONF_OPTS += -DWITH_TESTBUILDER=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/scons/scons.hash b/package/scons/scons.hash new file mode 100644 index 00000000..8dca9983 --- /dev/null +++ b/package/scons/scons.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/scons/json +md5 f5a740e94864408902c62bdb47687d9d SCons-4.7.0.tar.gz +sha256 d8b617f6610a73e46509de70dcf82f76861b79762ff602d546f4e80918ec81f3 SCons-4.7.0.tar.gz +# Locally computed sha256 checksums +sha256 2f6ac9a1fc98394d18b80dba9bedb9d5626006d44db3fecf7cf3e21cff7e8b1c LICENSE diff --git a/package/scons/scons.mk b/package/scons/scons.mk new file mode 100644 index 00000000..b6bfaa02 --- /dev/null +++ b/package/scons/scons.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# scons +# +################################################################################ + +SCONS_VERSION = 4.7.0 +SCONS_SOURCE = SCons-$(SCONS_VERSION).tar.gz +SCONS_SITE = https://files.pythonhosted.org/packages/7b/68/6895065c86c65a9388eb760a43ea695ec5b9b1c98a9675a3bcd682dbe9c0 +SCONS_LICENSE = MIT +SCONS_LICENSE_FILES = LICENSE +SCONS_SETUP_TYPE = setuptools + +$(eval $(host-python-package)) + +# variables used by other packages +SCONS = $(HOST_DIR)/bin/python3 $(HOST_DIR)/bin/scons $(if $(QUIET),-s) diff --git a/package/screen/0001-Do-not-use-memcpy-as-an-alternative-for-bcopy-memmov.patch b/package/screen/0001-Do-not-use-memcpy-as-an-alternative-for-bcopy-memmov.patch new file mode 100644 index 00000000..ab002701 --- /dev/null +++ b/package/screen/0001-Do-not-use-memcpy-as-an-alternative-for-bcopy-memmov.patch @@ -0,0 +1,133 @@ +From 545875ad0b6c9697fae41ae8770e95d117fe3cca Mon Sep 17 00:00:00 2001 +From: Maarten ter Huurne +Date: Sat, 13 Sep 2014 11:37:59 +0200 +Subject: [PATCH] Do not use memcpy as an alternative for bcopy/memmove + +The configure script runs a small test program to check whether +memcpy can handle overlapping memory areas. However, it is not valid +to conclude that if a single case of overlapping memory is handled +correctly, all cases will be handled correctly. + +Since screen already has its own bcopy implementation as a fallback +for the case that bcopy and memmove are unusable, removing the memcpy +option should not break any systems. + +Signed-off-by: Maarten ter Huurne +[Ricardo: rebase on top of 4.3.1] +Signed-off-by: Ricardo Martincoski +[Bernd: rebase on top of 4.7.0] +Signed-off-by: Bernd Kuhls +[Julien: rebase on top of 4.9.1] +Signed-off-by: Julien Olivain +--- + acconfig.h | 3 +-- + configure.ac | 22 +--------------------- + os.h | 8 ++------ + osdef.h.in | 10 +--------- + 4 files changed, 5 insertions(+), 38 deletions(-) + +diff --git a/acconfig.h b/acconfig.h +index 46d62b0..f83572c 100644 +--- a/acconfig.h ++++ b/acconfig.h +@@ -476,7 +476,7 @@ + #undef GETTTYENT + + /* +- * Define USEBCOPY if the bcopy/memcpy from your system's C library ++ * Define USEBCOPY if the bcopy from your system's C library + * supports the overlapping of source and destination blocks. When + * undefined, screen uses its own (probably slower) version of bcopy(). + * +@@ -487,7 +487,6 @@ + * Their memove fails the test in the configure script. Sigh. (Juergen) + */ + #undef USEBCOPY +-#undef USEMEMCPY + #undef USEMEMMOVE + + /* +diff --git a/configure.ac b/configure.ac +index 1a12c04..6f6c2da 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1278,7 +1278,7 @@ AC_TRY_LINK([ + fdwalk(NULL, NULL); + ],AC_DEFINE(HAVE_FDWALK)) + +-AC_CHECKING(whether memcpy/memmove/bcopy handles overlapping arguments) ++AC_CHECKING(whether memmove/bcopy handles overlapping arguments) + AC_TRY_RUN([ + #include + #include +@@ -1319,26 +1319,6 @@ main() { + }], AC_DEFINE(USEMEMMOVE),, + AC_NOTE(- skipping check because we are cross compiling; use memmove) AC_DEFINE(USEMEMMOVE)) + +-AC_TRY_RUN([ +-#include +-#include +- +-#define bcopy(s,d,l) memcpy(d,s,l) +- +-int +-main() { +- char buf[10]; +- strcpy(buf, "abcdefghi"); +- bcopy(buf, buf + 2, 3); +- if (strncmp(buf, "ababcf", 6)) +- return 1; +- strcpy(buf, "abcdefghi"); +- bcopy(buf + 2, buf, 3); +- if (strncmp(buf, "cdedef", 6)) +- return 1; +- return 0; /* libc version works properly. */ +-}], AC_DEFINE(USEMEMCPY),,:) +- + AC_SYS_LONG_FILE_NAMES + + AC_MSG_CHECKING(for vsprintf) +diff --git a/os.h b/os.h +index 2a1c2ca..d1ac87e 100644 +--- a/os.h ++++ b/os.h +@@ -142,12 +142,8 @@ extern int errno; + # ifdef USEMEMMOVE + # define bcopy(s,d,len) memmove(d,s,len) + # else +-# ifdef USEMEMCPY +-# define bcopy(s,d,len) memcpy(d,s,len) +-# else +-# define NEED_OWN_BCOPY +-# define bcopy xbcopy +-# endif ++# define NEED_OWN_BCOPY ++# define bcopy xbcopy + # endif + #endif + +diff --git a/osdef.h.in b/osdef.h.in +index 6ddbd66..abdacf7 100644 +--- a/osdef.h.in ++++ b/osdef.h.in +@@ -58,16 +58,8 @@ extern int bcmp __P((char *, char *, int)); + extern int killpg __P((int, int)); + #endif + +-#ifndef USEBCOPY +-# ifdef USEMEMCPY +-extern void memcpy __P((char *, char *, int)); +-# else +-# ifdef USEMEMMOVE ++#if defined(USEMEMMOVE) && !defined(USEBCOPY) + extern void memmove __P((char *, char *, int)); +-# else +-extern void bcopy __P((char *, char *, int)); +-# endif +-# endif + #else + extern void bcopy __P((char *, char *, int)); + #endif +-- +2.41.0 + diff --git a/package/screen/0002-Do-not-create-backup-of-old-installed-binary.patch b/package/screen/0002-Do-not-create-backup-of-old-installed-binary.patch new file mode 100644 index 00000000..ef82cd3e --- /dev/null +++ b/package/screen/0002-Do-not-create-backup-of-old-installed-binary.patch @@ -0,0 +1,44 @@ +From 86b5c7677c5bef780bd4c28cbbdaa97eda938230 Mon Sep 17 00:00:00 2001 +From: Maarten ter Huurne +Date: Sun, 14 Sep 2014 23:58:34 +0200 +Subject: [PATCH] Do not create backup of old installed binary + +This is a rather unusual feature that packagers will not expect. + +Signed-off-by: Maarten ter Huurne +[baruch: update for 4.6.2] +Signed-off-by: Baruch Siach +[Julien: rebase on top of 4.9.1] +Signed-off-by: Julien Olivain +--- + Makefile.in | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 26ec404..3efbbfd 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -83,12 +83,9 @@ screen: $(OFILES) + $(OPTIONS) $(CFLAGS) $< + + install_bin: .version screen installdirs +- -if [ -f $(DESTDIR)$(bindir)/$(SCREEN) ] && [ ! -f $(DESTDIR)$(bindir)/$(SCREEN).old ]; \ +- then mv $(DESTDIR)$(bindir)/$(SCREEN) $(DESTDIR)$(bindir)/$(SCREEN).old; fi + $(INSTALL_PROGRAM) screen $(DESTDIR)$(bindir)/$(SCREEN) + -chown root $(DESTDIR)$(bindir)/$(SCREEN) && chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN) + # This doesn't work if $(bindir)/screen is a symlink +- -if [ -f $(DESTDIR)$(bindir)/screen ] && [ ! -f $(DESTDIR)$(bindir)/screen.old ]; then mv $(DESTDIR)$(bindir)/screen $(DESTDIR)$(bindir)/screen.old; fi + rm -f $(DESTDIR)$(bindir)/screen + (cd $(DESTDIR)$(bindir) && ln -f -s $(SCREEN) screen) + cp $(srcdir)/utf8encodings/?? $(DESTDIR)$(SCREENENCODINGS) +@@ -113,7 +110,6 @@ installdirs: + uninstall: .version + rm -f $(DESTDIR)$(bindir)/$(SCREEN) + rm -f $(DESTDIR)$(bindir)/screen +- -mv $(DESTDIR)$(bindir)/screen.old $(DESTDIR)$(bindir)/screen + rm -f $(DESTDIR)$(ETCSCREENRC) + cd doc; $(MAKE) uninstall + +-- +2.41.0 + diff --git a/package/screen/0003-Change-binary-permission-flags-even-if-chown-fails.patch b/package/screen/0003-Change-binary-permission-flags-even-if-chown-fails.patch new file mode 100644 index 00000000..bc3f676a --- /dev/null +++ b/package/screen/0003-Change-binary-permission-flags-even-if-chown-fails.patch @@ -0,0 +1,32 @@ +From 4231969c47a8379f9113e0c9c9586bcfdd545c37 Mon Sep 17 00:00:00 2001 +From: Maarten ter Huurne +Date: Mon, 15 Sep 2014 00:03:05 +0200 +Subject: [PATCH] Change binary permission flags even if chown fails + +Typically when creating a package, the build is not run as root, so +the chown will fail. But the chmod can still be done. + +Signed-off-by: Maarten ter Huurne +[Julien: rebase on top of 4.9.1] +Signed-off-by: Julien Olivain +--- + Makefile.in | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/Makefile.in b/Makefile.in +index 3efbbfd..0315fde 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -84,7 +84,8 @@ screen: $(OFILES) + + install_bin: .version screen installdirs + $(INSTALL_PROGRAM) screen $(DESTDIR)$(bindir)/$(SCREEN) +- -chown root $(DESTDIR)$(bindir)/$(SCREEN) && chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN) ++ -chown root $(DESTDIR)$(bindir)/$(SCREEN) ++ -chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN) + # This doesn't work if $(bindir)/screen is a symlink + rm -f $(DESTDIR)$(bindir)/screen + (cd $(DESTDIR)$(bindir) && ln -f -s $(SCREEN) screen) +-- +2.41.0 + diff --git a/package/screen/0004-Support-overriding-SCREEN-to-get-a-non-versioned-bin.patch b/package/screen/0004-Support-overriding-SCREEN-to-get-a-non-versioned-bin.patch new file mode 100644 index 00000000..15795874 --- /dev/null +++ b/package/screen/0004-Support-overriding-SCREEN-to-get-a-non-versioned-bin.patch @@ -0,0 +1,34 @@ +From 07d6e4d9da8bc7c6ed31aa9b643410ea093d164f Mon Sep 17 00:00:00 2001 +From: Maarten ter Huurne +Date: Mon, 15 Sep 2014 00:06:20 +0200 +Subject: [PATCH] Support overriding SCREEN to get a non-versioned binary + +If a packager runs "make install SCREEN=screen", do not create +"screen" as a symlink to itself. + +Signed-off-by: Maarten ter Huurne +[Julien: rebase on top of 4.9.1] +Signed-off-by: Julien Olivain +--- + Makefile.in | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/Makefile.in b/Makefile.in +index 0315fde..4718f08 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -86,9 +86,11 @@ install_bin: .version screen installdirs + $(INSTALL_PROGRAM) screen $(DESTDIR)$(bindir)/$(SCREEN) + -chown root $(DESTDIR)$(bindir)/$(SCREEN) + -chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN) ++ifneq (${SCREEN},screen) + # This doesn't work if $(bindir)/screen is a symlink + rm -f $(DESTDIR)$(bindir)/screen + (cd $(DESTDIR)$(bindir) && ln -f -s $(SCREEN) screen) ++endif + cp $(srcdir)/utf8encodings/?? $(DESTDIR)$(SCREENENCODINGS) + + ############################################################################### +-- +2.41.0 + diff --git a/package/screen/0005-Renamed-sched.h-to-eventqueue.h.patch b/package/screen/0005-Renamed-sched.h-to-eventqueue.h.patch new file mode 100644 index 00000000..24df05de --- /dev/null +++ b/package/screen/0005-Renamed-sched.h-to-eventqueue.h.patch @@ -0,0 +1,39 @@ +From 8b066a777b61600ff2c60cad0725f2089299ff56 Mon Sep 17 00:00:00 2001 +From: Maarten ter Huurne +Date: Mon, 15 Sep 2014 00:24:41 +0200 +Subject: [PATCH] Renamed sched.h to eventqueue.h + +There is a system header that got shadowed by "sched.h". +While Screen itself doesn't include , other system headers +might include it indirectly. This broke the build when using uClibc +with pthread support. + +Signed-off-by: Maarten ter Huurne +[Julien: rebase on top of 4.9.1] +Signed-off-by: Julien Olivain +--- + sched.h => eventqueue.h | 0 + screen.h | 2 +- + 2 files changed, 1 insertion(+), 1 deletion(-) + rename sched.h => eventqueue.h (100%) + +diff --git a/sched.h b/eventqueue.h +similarity index 100% +rename from sched.h +rename to eventqueue.h +diff --git a/screen.h b/screen.h +index 4823efb..2d51788 100644 +--- a/screen.h ++++ b/screen.h +@@ -43,7 +43,7 @@ + #include "osdef.h" + + #include "ansi.h" +-#include "sched.h" ++#include "eventqueue.h" + #include "acls.h" + #include "comm.h" + #include "layer.h" +-- +2.41.0 + diff --git a/package/screen/0006-comm.h-now-depends-on-term.h.patch b/package/screen/0006-comm.h-now-depends-on-term.h.patch new file mode 100644 index 00000000..088dfb34 --- /dev/null +++ b/package/screen/0006-comm.h-now-depends-on-term.h.patch @@ -0,0 +1,30 @@ +From 23a8ca6be87ad374d66854cee66ab758880cc651 Mon Sep 17 00:00:00 2001 +From: Mike Gerwitz +Date: Tue, 24 Dec 2013 22:16:31 -0500 +Subject: [PATCH] comm.h now depends on term.h + +Signed-off-by: Fabrice Fontaine +[Patch retrieved and updated from: +http://git.savannah.gnu.org/cgit/screen.git/commit/?id=39c5f1c] +[Julien: rebase on top of 4.9.1] +Signed-off-by: Julien Olivain +--- + Makefile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.in b/Makefile.in +index 4718f08..7082a3e 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -132,7 +132,7 @@ kmapdef.c: term.h + tty.c: tty.sh + sh $(srcdir)/tty.sh tty.c + +-comm.h: comm.c comm.sh config.h ++comm.h: comm.c comm.sh config.h term.h + AWK=$(AWK) CC="$(CC) $(CFLAGS)" srcdir=${srcdir} sh $(srcdir)/comm.sh + + osdef.h: osdef.sh config.h osdef.h.in +-- +2.41.0 + diff --git a/package/screen/0007-comm.h-needed-for-list_-display-generic-.o.patch b/package/screen/0007-comm.h-needed-for-list_-display-generic-.o.patch new file mode 100644 index 00000000..d46bf723 --- /dev/null +++ b/package/screen/0007-comm.h-needed-for-list_-display-generic-.o.patch @@ -0,0 +1,37 @@ +From 8d8899b3ffd26d5049f8a9ccf12ff9ac65c352b4 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 3 Oct 2018 22:29:32 +0200 +Subject: [PATCH] comm.h needed for list_{display,generic}.o + +comm.h is needed to build list_display.o and list_generic.o otherwise +parallel builds will sometimes fail + +Fixes: + - http://autobuild.buildroot.org/results/43105f14857dbe72d8878fc7b3db67f7bdca93cc + - http://autobuild.buildroot.org/results/47f4ecbec1355285633df287fc9c4e7cccde9378 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://savannah.gnu.org/bugs/index.php?54776] +[Julien: rebase on top of 4.9.1] +Signed-off-by: Julien Olivain +--- + Makefile.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 7082a3e..cd363b7 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -349,7 +349,7 @@ layout.o: layout.h viewport.h canvas.h layout.c config.h screen.h os.h osdef.h a + viewport.o: layout.h viewport.h canvas.h viewport.c config.h screen.h os.h osdef.h ansi.h acls.h \ + comm.h layer.h term.h image.h display.h window.h extern.h \ + braille.h +-list_generic.o: list_generic.h list_generic.c layer.h screen.h osdef.h +-list_display.o: list_generic.h list_display.c layer.h screen.h osdef.h ++list_generic.o: list_generic.h list_generic.c layer.h screen.h osdef.h comm.h ++list_display.o: list_generic.h list_display.c layer.h screen.h osdef.h comm.h + list_window.o: list_generic.h list_window.c window.h layer.h screen.h osdef.h comm.h + +-- +2.41.0 + diff --git a/package/screen/Config.in b/package/screen/Config.in new file mode 100644 index 00000000..40cda77b --- /dev/null +++ b/package/screen/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_SCREEN + bool "screen" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_NCURSES + help + Screen is a full-screen window manager that multiplexes a + physical terminal between several processes, typically + interactive shells. Each virtual terminal provides the + functions of the DEC VT100 terminal and, in addition, + several control functions from the ANSI X3.64 (ISO 6429) and + ISO 2022 standards (e.g., insert/delete line and support for + multiple character sets). + + http://www.gnu.org/software/screen/ diff --git a/package/screen/screen.hash b/package/screen/screen.hash new file mode 100644 index 00000000..ef32eb06 --- /dev/null +++ b/package/screen/screen.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +# https://ftp.gnu.org/gnu/screen/screen-4.9.1.tar.gz.sig +sha256 26cef3e3c42571c0d484ad6faf110c5c15091fbf872b06fa7aa4766c7405ac69 screen-4.9.1.tar.gz +# Locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/screen/screen.mk b/package/screen/screen.mk new file mode 100644 index 00000000..55fecb89 --- /dev/null +++ b/package/screen/screen.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# screen +# +################################################################################ + +SCREEN_VERSION = 4.9.1 +SCREEN_SITE = $(BR2_GNU_MIRROR)/screen +SCREEN_LICENSE = GPL-3.0+ +SCREEN_LICENSE_FILES = COPYING +SCREEN_CPE_ID_VENDOR = gnu +SCREEN_SELINUX_MODULES = screen +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 + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +SCREEN_DEPENDENCIES += libxcrypt +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +SCREEN_DEPENDENCIES += linux-pam +SCREEN_CONF_OPTS += --enable-pam +else +SCREEN_CONF_OPTS += --disable-pam +endif + +define SCREEN_INSTALL_SCREENRC + $(INSTALL) -m 0755 -D $(@D)/etc/screenrc $(TARGET_DIR)/etc/screenrc +endef +SCREEN_POST_INSTALL_TARGET_HOOKS += SCREEN_INSTALL_SCREENRC + +# Add /usr/bin/screen to /etc/shells otherwise some login tools like dropbear +# can reject the user connection. See man shells. +define SCREEN_ADD_SCREEN_TO_SHELLS + grep -qsE '^/usr/bin/screen$$' $(TARGET_DIR)/etc/shells \ + || echo "/usr/bin/screen" >> $(TARGET_DIR)/etc/shells +endef +SCREEN_TARGET_FINALIZE_HOOKS += SCREEN_ADD_SCREEN_TO_SHELLS + +$(eval $(autotools-package)) diff --git a/package/screenfetch/0001-Detect-which-awk-to-use.patch b/package/screenfetch/0001-Detect-which-awk-to-use.patch new file mode 100644 index 00000000..86e51e55 --- /dev/null +++ b/package/screenfetch/0001-Detect-which-awk-to-use.patch @@ -0,0 +1,783 @@ +From 39b6eec51f0c2fa5f2b0e876b14dcfc9c1febf97 Mon Sep 17 00:00:00 2001 +From: Nicolas Boichat +Date: Fri, 4 Aug 2023 12:55:36 +0000 +Subject: [PATCH] Detect which awk to use + +Some embedded distributions (e.g. buildroot) may only provide mawk, +without a symlink to awk. + +At first glance, awk scripts to appear to work fine with either +gawk or mawk. + +Signed-off-by: Nicolas Boichat +Upstream: https://github.com/KittyKatt/screenFetch/commit/b49a2334b8ba806dbc532219e86363886a85d9c8 +[rebased on 3.9.1] +--- + screenfetch-dev | 245 +++++++++++++++++++++++++----------------------- + 1 file changed, 130 insertions(+), 115 deletions(-) + +diff --git a/screenfetch-dev b/screenfetch-dev +index 1e53b2c..765930f 100755 +--- a/screenfetch-dev ++++ b/screenfetch-dev +@@ -352,9 +352,9 @@ colorNumberToCode () { + + detectColors () { + my_colors=$(sed 's/^,/na,/;s/,$/,na/;s/,/ /' <<< "${OPTARG}") +- my_lcolor=$(awk -F' ' '{print $1}' <<< "${my_colors}") ++ my_lcolor=$("${AWK}" -F' ' '{print $1}' <<< "${my_colors}") + my_lcolor=$(colorNumberToCode "${my_lcolor}") +- my_hcolor=$(awk -F' ' '{print $2}' <<< "${my_colors}") ++ my_hcolor=$("${AWK}" -F' ' '{print $2}' <<< "${my_colors}") + my_hcolor=$(colorNumberToCode "${my_hcolor}") + } + +@@ -462,7 +462,22 @@ case $1 in + --version) displayVersion; exit 0;; + esac + ++# Detect which awk to use (unless already specified in environment) ++if [[ -z "${AWK}" ]]; then ++ for awk in awk gawk mawk; do ++ if command -v "${awk}" > /dev/null; then ++ AWK="${awk}" ++ break ++ fi ++ done ++fi ++ ++if ! command -v "${AWK}" > /dev/null; then ++ errorOut "No awk interpreter available (AWK=\"${AWK}\")." ++ exit 1 ++fi + ++# Parse the rest of the flags (some of these functions require awk) + while getopts ":hsu:evVEnLNtlS:A:D:o:c:d:pa:w" flags; do + case $flags in + h) displayHelp; exit 0 ;; +@@ -608,8 +623,8 @@ detectdistro () { + "Debian") + if [[ -f /etc/crunchbang-lsb-release || -f /etc/lsb-release-crunchbang ]]; then + distro="CrunchBang" +- distro_release=$(awk -F'=' '/^DISTRIB_RELEASE=/ {print $2}' /etc/lsb-release-crunchbang) +- distro_codename=$(awk -F'=' '/^DISTRIB_DESCRIPTION=/ {print $2}' /etc/lsb-release-crunchbang) ++ distro_release=$("${AWK}" -F'=' '/^DISTRIB_RELEASE=/ {print $2}' /etc/lsb-release-crunchbang) ++ distro_codename=$("${AWK}" -F'=' '/^DISTRIB_DESCRIPTION=/ {print $2}' /etc/lsb-release-crunchbang) + elif [[ -f /etc/siduction-version ]]; then + distro="Siduction" + distro_release="(Debian Sid)" +@@ -620,10 +635,10 @@ detectdistro () { + elif [[ -f /etc/os-release ]]; then + if grep -q -i 'Raspbian' /etc/os-release ; then + distro="Raspbian" +- distro_release=$(awk -F'=' '/^PRETTY_NAME=/ {print $2}' /etc/os-release) ++ distro_release=$("${AWK}" -F'=' '/^PRETTY_NAME=/ {print $2}' /etc/os-release) + elif grep -q -i 'BlankOn' /etc/os-release ; then + distro='BlankOn' +- distro_release=$(awk -F'=' '/^PRETTY_NAME=/ {print $2}' /etc/os-release) ++ distro_release=$("${AWK}" -F'=' '/^PRETTY_NAME=/ {print $2}' /etc/os-release) + else + distro="Debian" + fi +@@ -639,7 +654,7 @@ detectdistro () { + ;; + "Sulin") + distro="Sulin" +- distro_release=$(awk -F'=' '/^ID_LIKE=/ {print $2}' /etc/os-release) ++ distro_release=$("${AWK}" -F'=' '/^ID_LIKE=/ {print $2}' /etc/os-release) + distro_codename="Roolling donkey" # this is not wrong :D + ;; + "KaOS"|"kaos") +@@ -718,7 +733,7 @@ detectdistro () { + if grep -q 'SailfishOS' /etc/os-release; then + distro="SailfishOS" + distro_codename="$(grep 'VERSION=' /etc/os-release | cut -d '(' -f2 | cut -d ')' -f1)" +- distro_release="$(awk -F'=' '/^VERSION=/ {print $2}' /etc/os-release)" ++ distro_release="$("${AWK}" -F'=' '/^VERSION=/ {print $2}' /etc/os-release)" + fi + fi + ;; +@@ -753,7 +768,7 @@ detectdistro () { + if grep -q -i 'SUSE Linux Enterprise' /etc/os-release ; then + distro="SUSE Linux Enterprise" + distro_codename="n/a" +- distro_release=$(awk -F'=' '/^VERSION_ID=/ {print $2}' /etc/os-release | tr -d '"') ++ distro_release=$("${AWK}" -F'=' '/^VERSION_ID=/ {print $2}' /etc/os-release | tr -d '"') + fi + fi + if [[ "${distro_codename}" == "Tumbleweed" ]]; then +@@ -789,7 +804,7 @@ detectdistro () { + distro="SailfishOS" + if [[ -f /etc/os-release ]]; then + distro_codename="$(grep 'VERSION=' /etc/os-release | cut -d '(' -f2 | cut -d ')' -f1)" +- distro_release="$(awk -F'=' '/^VERSION=/ {print $2}' /etc/os-release)" ++ distro_release="$("${AWK}" -F'=' '/^VERSION=/ {print $2}' /etc/os-release)" + fi + ;; + "Sparky"|"SparkyLinux") +@@ -863,12 +878,12 @@ detectdistro () { + ;; + "Haiku") + distro="Haiku" +- distro_more="$(uname -v | awk '/^hrev/ {print $1}')" ++ distro_more="$(uname -v | "${AWK}" '/^hrev/ {print $1}')" + ;; + "GNU/Linux") + if type -p crux >/dev/null 2>&1; then + distro="CRUX" +- distro_more="$(crux | awk '{print $3}')" ++ distro_more="$(crux | "${AWK}" '{print $3}')" + fi + if type -p nixos-version >/dev/null 2>&1; then + distro="NixOS" +@@ -944,7 +959,7 @@ detectdistro () { + [[ "${distro}" == "Neon" ]] && distro="KDE neon" + [[ "${distro}" == "SLED" || "${distro}" == "sled" || "${distro}" == "SLES" || "${distro}" == "sles" ]] && distro="SUSE Linux Enterprise" + if [[ "${distro}" == "SUSE Linux Enterprise" && -f /etc/os-release ]]; then +- distro_more="$(awk -F'=' '/^VERSION_ID=/ {print $2}' /etc/os-release | tr -d '"')" ++ distro_more="$("${AWK}" -F'=' '/^VERSION_ID=/ {print $2}' /etc/os-release | tr -d '"')" + fi + if [[ "${distro}" == "Debian" && -f /usr/bin/pveversion ]]; then + distro="Proxmox VE" +@@ -955,7 +970,7 @@ detectdistro () { + + if [[ "${distro}" == "Unknown" && "${OSTYPE}" =~ "linux" && -f /etc/lsb-release ]]; then + LSB_RELEASE=$(/dev/null; then + distro="Mac OS X" + elif [[ -f /var/run/dmesg.boot ]]; then +- distro=$(awk 'BEGIN { ++ distro=$("${AWK}" 'BEGIN { + distro = "Unknown" + } + { +@@ -1080,7 +1095,7 @@ detectdistro () { + + if [[ "${distro}" == "Unknown" ]] && [[ "${OSTYPE}" =~ "linux" || "${OSTYPE}" == "gnu" ]]; then + if [[ -f /etc/issue ]]; then +- distro=$(awk 'BEGIN { ++ distro=$("${AWK}" 'BEGIN { + distro = "Unknown" + } + { +@@ -1123,8 +1138,8 @@ detectdistro () { + fi + elif [[ -f /etc/lsb-release ]]; then + if grep -q -i 'CHROMEOS_RELEASE_NAME' /etc/lsb-release; then +- distro="$(awk -F'=' '/^CHROMEOS_RELEASE_NAME=/ {print $2}' /etc/lsb-release)" +- distro_more="$(awk -F'=' '/^CHROMEOS_RELEASE_VERSION=/ {print $2}' /etc/lsb-release)" ++ distro="$("${AWK}" -F'=' '/^CHROMEOS_RELEASE_NAME=/ {print $2}' /etc/lsb-release)" ++ distro_more="$("${AWK}" -F'=' '/^CHROMEOS_RELEASE_VERSION=/ {print $2}' /etc/lsb-release)" + fi + fi + fi +@@ -1301,7 +1316,7 @@ detectuptime () { + now=$(date +%s) + uptime=$((now - boot)) + elif [[ "${distro}" == "Haiku" ]]; then +- uptime=$(uptime | awk -F', up ' '{gsub(/ *hours?,/, "h"); gsub(/ *minutes?/, "m"); print $2;}') ++ uptime=$(uptime | "${AWK}" -F', up ' '{gsub(/ *hours?,/, "h"); gsub(/ *minutes?/, "m"); print $2;}') + else + if [[ -f /proc/uptime ]]; then + uptime=$( /dev/null | awk '/OpenGL renderer string/ { sub(/OpenGL renderer string: /,""); print }') ++ gpu=$(glxinfo 2> /dev/null | "${AWK}" '/OpenGL renderer string/ { sub(/OpenGL renderer string: /,""); print }') + elif [[ "${distro}" == "Mac OS X" ]]; then +- gpu=$(system_profiler SPDisplaysDataType | awk -F': ' '/^ *Chipset Model:/ {print $2}' | awk '{ printf "%s / ", $0 }' | sed -e 's/\/ $//g') ++ gpu=$(system_profiler SPDisplaysDataType | "${AWK}" -F': ' '/^ *Chipset Model:/ {print $2}' | "${AWK}" '{ printf "%s / ", $0 }' | sed -e 's/\/ $//g') + elif [[ "${distro}" == "Cygwin" || "${distro}" == "Msys" ]]; then + gpu=$(wmic path Win32_VideoController get caption | sed -n '2p') + elif [[ "${distro}" == "Haiku" ]]; then +- gpu="$(listdev | grep -A2 -e 'device Display controller' | awk -F': ' '/^ +device/ {print $2}')" ++ gpu="$(listdev | grep -A2 -e 'device Display controller' | "${AWK}" -F': ' '/^ +device/ {print $2}')" + else + if [[ -n "$(PATH="/opt/bin:$PATH" type -p nvidia-smi)" ]]; then +- gpu=$($(PATH="/opt/bin:$PATH" type -p nvidia-smi | cut -f1) -q | awk -F':' '/Product Name/ {gsub(/: /,":"); print $2}' | sed ':a;N;$!ba;s/\n/, /g') ++ gpu=$($(PATH="/opt/bin:$PATH" type -p nvidia-smi | cut -f1) -q | "${AWK}" -F':' '/Product Name/ {gsub(/: /,":"); print $2}' | sed ':a;N;$!ba;s/\n/, /g') + elif [[ -n "$(PATH="/usr/sbin:$PATH" type -p glxinfo)" && -z "${gpu}" ]]; then + gpu_info=$($(PATH="/usr/sbin:$PATH" type -p glxinfo | cut -f1) 2>/dev/null) + gpu=$(grep "OpenGL renderer string" <<< "${gpu_info}" | cut -d ':' -f2 | sed -n -e '1h;2,$H;${g;s/\n/, /g' -e 'p' -e '}') +@@ -1650,12 +1665,12 @@ detectgpu () { + # Run it only on Intel Processors if GPU is unknown + DetectIntelGPU() { + if [ -r /proc/fb ]; then +- gpu=$(awk 'BEGIN {ORS = " &"} {$1="";print}' /proc/fb | sed -r s/'^\s+|\s*&$'//g) ++ gpu=$("${AWK}" 'BEGIN {ORS = " &"} {$1="";print}' /proc/fb | sed -r s/'^\s+|\s*&$'//g) + fi + + case $gpu in + *mfb) +- gpu=$(lspci | grep -i vga | awk -F ": " '{print $2}') ++ gpu=$(lspci | grep -i vga | "${AWK}" -F ": " '{print $2}') + ;; + *intel*) + gpu="intel" +@@ -1667,7 +1682,7 @@ DetectIntelGPU() { + + if [[ "$gpu" = "intel" ]]; then + #Detect CPU +- local CPU=$(uname -p | awk '{print $3}') ++ local CPU=$(uname -p | "${AWK}" '{print $3}') + CPU=${CPU#*'-'}; #Detect CPU number + + #Detect Intel GPU +@@ -1710,7 +1725,7 @@ detectdisk () { + if [[ "${distro}" =~ (Free|Net|DragonFly)BSD ]]; then + totaldisk=$(df -h -c 2>/dev/null | tail -1) + elif [[ "${distro}" == "OpenBSD" ]]; then +- totaldisk=$(df -Pk 2> /dev/null | awk ' ++ totaldisk=$(df -Pk 2> /dev/null | "${AWK}" ' + /^\// {total+=$2; used+=$3; avail+=$4} + END{printf("total %.1fG %.1fG %.1fG %d%%\n", total/1048576, used/1048576, avail/1048576, used*100/total)}') + elif [[ "${distro}" == "Mac OS X" ]]; then +@@ -1718,9 +1733,9 @@ detectdisk () { + else + totaldisk=$(df -h -x aufs -x tmpfs -x overlay --total 2>/dev/null | tail -1) + fi +- disktotal=$(awk '{print $2}' <<< "${totaldisk}") +- diskused=$(awk '{print $3}' <<< "${totaldisk}") +- diskusedper=$(awk '{print $5}' <<< "${totaldisk}") ++ disktotal=$("${AWK}" '{print $2}' <<< "${totaldisk}") ++ diskused=$("${AWK}" '{print $3}' <<< "${totaldisk}") ++ diskusedper=$("${AWK}" '{print $5}' <<< "${totaldisk}") + diskusage="${diskused} / ${disktotal} (${diskusedper})" + diskusage_verbose=$(sed 's/%/%%/' <<< "$diskusage") + fi +@@ -1733,17 +1748,17 @@ detectdisk () { + detectmem () { + if [ "$distro" == "Mac OS X" ]; then + totalmem=$(echo "$(sysctl -n hw.memsize)" / 1024^2 | bc) +- wiredmem=$(vm_stat | grep wired | awk '{ print $4 }' | sed 's/\.//') +- activemem=$(vm_stat | grep ' active' | awk '{ print $3 }' | sed 's/\.//') +- compressedmem=$(vm_stat | grep occupied | awk '{ print $5 }' | sed 's/\.//') ++ wiredmem=$(vm_stat | grep wired | "${AWK}" '{ print $4 }' | sed 's/\.//') ++ activemem=$(vm_stat | grep ' active' | "${AWK}" '{ print $3 }' | sed 's/\.//') ++ compressedmem=$(vm_stat | grep occupied | "${AWK}" '{ print $5 }' | sed 's/\.//') + if [[ ! -z "$compressedmem | tr -d" ]]; then # FIXME: is this line correct? + compressedmem=0 + fi + usedmem=$(((wiredmem + activemem + compressedmem) * 4 / 1024)) + elif [[ "${distro}" == "Cygwin" || "${distro}" == "Msys" ]]; then +- total_mem=$(awk '/MemTotal/ { print $2 }' /proc/meminfo) ++ total_mem=$("${AWK}" '/MemTotal/ { print $2 }' /proc/meminfo) + totalmem=$((total_mem / 1024)) +- free_mem=$(awk '/MemFree/ { print $2 }' /proc/meminfo) ++ free_mem=$("${AWK}" '/MemFree/ { print $2 }' /proc/meminfo) + used_mem=$((total_mem - free_mem)) + usedmem=$((used_mem / 1024)) + elif [[ "$distro" == "FreeBSD" || "$distro" == "DragonFlyBSD" ]]; then +@@ -1769,21 +1784,21 @@ detectmem () { + usedmem=$((used_mem / 1024 / 1024)) + elif [ "$distro" == "OpenBSD" ]; then + totalmem=$(($(sysctl -n hw.physmem) / 1024 / 1024)) +- usedmem=$(vmstat | awk '!/[a-z]/{gsub("M",""); print $3}') ++ usedmem=$(vmstat | "${AWK}" '!/[a-z]/{gsub("M",""); print $3}') + elif [ "$distro" == "NetBSD" ]; then +- phys_mem=$(awk '/MemTotal/ { print $2 }' /proc/meminfo) ++ phys_mem=$("${AWK}" '/MemTotal/ { print $2 }' /proc/meminfo) + totalmem=$((phys_mem / 1024)) + if grep -q 'Cached' /proc/meminfo; then +- cache=$(awk '/Cached/ {print $2}' /proc/meminfo) ++ cache=$("${AWK}" '/Cached/ {print $2}' /proc/meminfo) + usedmem=$((cache / 1024)) + else +- free_mem=$(awk '/MemFree/ { print $2 }' /proc/meminfo) ++ free_mem=$("${AWK}" '/MemFree/ { print $2 }' /proc/meminfo) + used_mem=$((phys_mem - free_mem)) + usedmem=$((used_mem / 1024)) + fi + elif [ "$distro" == "Haiku" ]; then +- totalmem=$(sysinfo -mem | awk 'NR == 1 {gsub(/[\(\)\/]/, ""); printf("%d", $6/1024**2)}') +- usedmem=$(sysinfo -mem | awk 'NR == 1 {gsub(/[\(\)\/]/, ""); printf("%d", $5/1024**2)}') ++ totalmem=$(sysinfo -mem | "${AWK}" 'NR == 1 {gsub(/[\(\)\/]/, ""); printf("%d", $6/1024**2)}') ++ usedmem=$(sysinfo -mem | "${AWK}" 'NR == 1 {gsub(/[\(\)\/]/, ""); printf("%d", $5/1024**2)}') + else + # MemUsed = Memtotal + Shmem - MemFree - Buffers - Cached - SReclaimable + # Source: https://github.com/dylanaraps/neofetch/pull/391/files#diff-e863270127ca6116fd30e708cdc582fc +@@ -1798,7 +1813,7 @@ detectmem () { + #done + #usedmem=$((usedmem / 1024)) + #totalmem=$((totalmem / 1024)) +- mem=$(free -b | awk 'NR==2{print $2"-"$7}') ++ mem=$(free -b | "${AWK}" 'NR==2{print $2"-"$7}') + usedmem=$((mem / 1024 / 1024)) + totalmem=$((${mem//-*} / 1024 / 1024)) + fi +@@ -1823,7 +1838,7 @@ detectshell_ver () { + esac + + if [[ -n $version_data ]];then +- version=$(awk ' ++ version=$("${AWK}" ' + BEGIN { + IGNORECASE=1 + } +@@ -1842,7 +1857,7 @@ detectshell () { + if [[ ! "${shell_type}" ]]; then + if [[ "${distro}" == "Cygwin" || "${distro}" == "Msys" || "${distro}" == "Haiku" || "${distro}" == "Alpine Linux" || + "${distro}" == "Mac OS X" || "${distro}" == "TinyCore" || "${distro}" == "Raspbian" || "${OSTYPE}" == "gnu" ]]; then +- shell_type=$(echo "$SHELL" | awk -F'/' '{print $NF}') ++ shell_type=$(echo "$SHELL" | "${AWK}" -F'/' '{print $NF}') + elif readlink -f "$SHELL" 2>&1 | grep -q -i 'busybox'; then + shell_type="BusyBox" + else +@@ -1851,7 +1866,7 @@ detectshell () { + elif [[ "${distro}" =~ "BSD" ]]; then + shell_type=$(ps -p $PPID -o command | tail -1) + else +- shell_type=$(ps -p "$(ps -p $PPID | awk '$1 !~ /PID/ {print $1}')" | awk 'FNR>1 {print $1}') ++ shell_type=$(ps -p "$(ps -p $PPID | "${AWK}" '$1 !~ /PID/ {print $1}')" | "${AWK}" 'FNR>1 {print $1}') + fi + shell_type=${shell_type/-} + shell_type=${shell_type//*\/} +@@ -1881,7 +1896,7 @@ detectshell () { + shell_version_data=$( detectshell_ver "$shell_type" "^zsh" "2" ) + ;; + fish) +- shell_version_data=$( fish --version | awk '{print $3}' ) ++ shell_version_data=$( fish --version | "${AWK}" '{print $3}' ) + ;; + esac + +@@ -1899,17 +1914,17 @@ detectshell () { + detectres () { + xResolution="No X Server" + if [[ ${distro} == "Mac OS X" ]]; then +- xResolution=$(system_profiler SPDisplaysDataType | awk '/Resolution:/ {print $2"x"$4" "}') ++ xResolution=$(system_profiler SPDisplaysDataType | "${AWK}" '/Resolution:/ {print $2"x"$4" "}') + if [[ "$(echo "$xResolution" | wc -l)" -ge 1 ]]; then + xResolution=$(echo "$xResolution" | tr "\\n" "," | sed 's/\(.*\),/\1/') + fi + elif [[ "${distro}" == "Cygwin" || "${distro}" == "Msys" ]]; then +- xResolution=$(wmic path Win32_VideoController get CurrentHorizontalResolution,CurrentVerticalResolution | awk 'NR==2 {print $1"x"$2}') ++ xResolution=$(wmic path Win32_VideoController get CurrentHorizontalResolution,CurrentVerticalResolution | "${AWK}" 'NR==2 {print $1"x"$2}') + elif [[ "${distro}" == "Haiku" ]]; then +- xResolution="$(screenmode | grep Resolution | awk '{gsub(/,/,""); print $2"x"$3}')" ++ xResolution="$(screenmode | grep Resolution | "${AWK}" '{gsub(/,/,""); print $2"x"$3}')" + elif [[ -n ${DISPLAY} ]]; then + if type -p xdpyinfo >/dev/null 2>&1; then +- xResolution=$(xdpyinfo | awk '/^ +dimensions/ {print $2}') ++ xResolution=$(xdpyinfo | "${AWK}" '/^ +dimensions/ {print $2}') + fi + fi + verboseOut "Finding current resolution(s)...found as '$xResolution'" +@@ -1937,7 +1952,7 @@ detectde () { + if type -p xprop >/dev/null 2>&1;then + xprop_root="$(xprop -root 2>/dev/null)" + if [[ -n ${xprop_root} ]]; then +- DE=$(echo "${xprop_root}" | awk 'BEGIN { ++ DE=$(echo "${xprop_root}" | "${AWK}" 'BEGIN { + de = "Not Present" + } + { +@@ -2099,7 +2114,7 @@ detectde () { + elif [[ ${KDE_FULL_SESSION} == 'true' ]]; then + DE="KDE" + DEver_data=$(kded --version 2>/dev/null) +- DEver=$(grep -si '^KDE:' <<< "$DEver_data" | awk '{print $2}') ++ DEver=$(grep -si '^KDE:' <<< "$DEver_data" | "${AWK}" '{print $2}') + fi + fi + fi +@@ -2154,7 +2169,7 @@ detectde () { + fi + elif [[ ${DE} == "LXQt" ]]; then + if type -p lxqt-about >/dev/null 2>&1; then +- DEver=$(lxqt-about --version | awk '/^liblxqt/ {print $2}') ++ DEver=$(lxqt-about --version | "${AWK}" '/^liblxqt/ {print $2}') + DE="${DE} ${DEver}" + fi + elif [[ ${DE} == "MATE" ]]; then +@@ -2169,12 +2184,12 @@ detectde () { + fi + elif [[ ${DE} == "Deepin" ]]; then + if [[ -f /etc/deepin-version ]]; then +- DEver="$(awk -F '=' '/Version/ {print $2}' /etc/deepin-version)" ++ DEver="$("${AWK}" -F '=' '/Version/ {print $2}' /etc/deepin-version)" + DE="${DE} ${DEver//* }" + fi + elif [[ ${DE} == "Trinity" ]]; then + if type -p tde-config >/dev/null 2>&1; then +- DEver="$(tde-config --version | awk -F ' ' '/TDE:/ {print $2}')" ++ DEver="$(tde-config --version | "${AWK}" -F ' ' '/TDE:/ {print $2}')" + DE="${DE} ${DEver//* }" + fi + fi +@@ -2418,7 +2433,7 @@ detectwmtheme () { + else + themeFile="$(reg query 'HKCU\Software\Microsoft\Windows\CurrentVersion\Themes' /v 'CurrentTheme')" + fi +- Win_theme=$(echo "$themeFile" | awk -F"\\" '{print $NF}' | sed 's|\.theme$||') ++ Win_theme=$(echo "$themeFile" | "${AWK}" -F"\\" '{print $NF}' | sed 's|\.theme$||') + fi + else + case $WM in +@@ -2433,7 +2448,7 @@ detectwmtheme () { + ;; + 'BlackBox') + if [ -f "$HOME/.blackboxrc" ]; then +- Win_theme="$(awk -F"/" '/styleFile/ {print $NF}' "$HOME/.blackboxrc")" ++ Win_theme="$("${AWK}" -F"/" '/styleFile/ {print $NF}' "$HOME/.blackboxrc")" + fi + ;; + 'BudgieWM') +@@ -2465,11 +2480,11 @@ detectwmtheme () { + fi + ;; + 'E16') +- Win_theme="$(awk -F"= " '/theme.name/ {print $2}' "$HOME/.e16/e_config--0.0.cfg")" ++ Win_theme="$("${AWK}" -F"= " '/theme.name/ {print $2}' "$HOME/.e16/e_config--0.0.cfg")" + ;; + 'E17'|'Enlightenment') + if [ "$(which eet 2>/dev/null)" ]; then +- econfig="$(eet -d "$HOME/.e/e/config/standard/e.cfg" config | awk '/value \"file\" string.*.edj/{ print $4 }')" ++ econfig="$(eet -d "$HOME/.e/e/config/standard/e.cfg" config | "${AWK}" '/value \"file\" string.*.edj/{ print $4 }')" + econfigend="${econfig##*/}" + Win_theme=${econfigend%.*} + elif [ -n "${E_CONF_PROFILE}" ]; then +@@ -2485,12 +2500,12 @@ detectwmtheme () { + ;; + 'FluxBox'|'Fluxbox') + if [ -f "$HOME/.fluxbox/init" ]; then +- Win_theme="$(awk -F"/" '/styleFile/ {print $NF}' "$HOME/.fluxbox/init")" ++ Win_theme="$("${AWK}" -F"/" '/styleFile/ {print $NF}' "$HOME/.fluxbox/init")" + fi + ;; + 'IceWM') + if [ -f "$HOME/.icewm/theme" ]; then +- Win_theme="$(awk -F"[\",/]" '!/#/ {print $2}' "$HOME/.icewm/theme")" ++ Win_theme="$("${AWK}" -F"[\",/]" '!/#/ {print $2}' "$HOME/.icewm/theme")" + fi + ;; + 'KWin'*) +@@ -2507,14 +2522,14 @@ detectwmtheme () { + Win_theme="Not Applicable" + KDE_CONFIG_DIR=${KDE_CONFIG_DIR%/} + if [[ -f $KDE_CONFIG_DIR/share/config/kwinrc ]]; then +- Win_theme="$(awk '/PluginLib=kwin3_/{gsub(/PluginLib=kwin3_/,"",$0); print $0; exit}' "$KDE_CONFIG_DIR/share/config/kwinrc")" ++ Win_theme="$("${AWK}" '/PluginLib=kwin3_/{gsub(/PluginLib=kwin3_/,"",$0); print $0; exit}' "$KDE_CONFIG_DIR/share/config/kwinrc")" + if [[ -z "$Win_theme" ]]; then + Win_theme="Not Applicable" + fi + fi + if [[ "$Win_theme" == "Not Applicable" ]]; then + if [[ -f $KDE_CONFIG_DIR/share/config/kdebugrc ]]; then +- Win_theme="$(awk '/(decoration)/ {gsub(/\[/,"",$1); print $1; exit}' "$KDE_CONFIG_DIR/share/config/kdebugrc")" ++ Win_theme="$("${AWK}" '/(decoration)/ {gsub(/\[/,"",$1); print $1; exit}' "$KDE_CONFIG_DIR/share/config/kdebugrc")" + if [[ -z "$Win_theme" ]]; then + Win_theme="Not Applicable" + fi +@@ -2522,7 +2537,7 @@ detectwmtheme () { + fi + if [[ "$Win_theme" == "Not Applicable" ]]; then + if [[ -f $KDE_CONFIG_DIR/share/config/kdeglobals ]]; then +- Win_theme="$(awk '/\[General\]/ {flag=1;next} /^$/{flag=0} flag {print}' "$KDE_CONFIG_DIR/share/config/kdeglobals" | grep -oP 'Name=\K.*')" ++ Win_theme="$("${AWK}" '/\[General\]/ {flag=1;next} /^$/{flag=0} flag {print}' "$KDE_CONFIG_DIR/share/config/kdeglobals" | grep -oP 'Name=\K.*')" + if [[ -z "$Win_theme" ]]; then + Win_theme="Not Applicable" + fi +@@ -2552,20 +2567,20 @@ detectwmtheme () { + ;; + 'OpenBox'|'Openbox') + if [ -f "${XDG_CONFIG_HOME:-${HOME}/.config}/openbox/rc.xml" ]; then +- Win_theme="$(awk -F"[<,>]" '/]" '/]" '/]" '//dev/null 2>&1; then + gtk2Theme=$(xfconf-query -c xsettings -p /Net/ThemeName 2>/dev/null) +@@ -2779,15 +2794,15 @@ detectgtk () { + fi + + if grep -q 'sNet\/ThemeName' "${config_home}${lxdeconf}" 2>/dev/null; then +- gtk2Theme=$(awk -F'=' '/sNet\/ThemeName/ {print $2}' "${config_home}${lxdeconf}") ++ gtk2Theme=$("${AWK}" -F'=' '/sNet\/ThemeName/ {print $2}' "${config_home}${lxdeconf}") + fi + + if grep -q 'IconThemeName' "${config_home}${lxdeconf}" 2>/dev/null; then +- gtkIcons=$(awk -F'=' '/sNet\/IconThemeName/ {print $2}' "${config_home}${lxdeconf}") ++ gtkIcons=$("${AWK}" -F'=' '/sNet\/IconThemeName/ {print $2}' "${config_home}${lxdeconf}") + fi + + if grep -q 'FontName' "${config_home}${lxdeconf}" 2>/dev/null; then +- gtkFont=$(awk -F'=' '/sGtk\/FontName/ {print $2}' "${config_home}${lxdeconf}") ++ gtkFont=$("${AWK}" -F'=' '/sGtk\/FontName/ {print $2}' "${config_home}${lxdeconf}") + fi + ;; + +@@ -2796,15 +2811,15 @@ detectgtk () { + *) # Lightweight or No DE Found + if [ -f "$HOME/.gtkrc-2.0" ]; then + if grep -q 'gtk-theme' "$HOME/.gtkrc-2.0"; then +- gtk2Theme=$(awk -F'"' '/^gtk-theme/ {print $2}' "$HOME/.gtkrc-2.0") ++ gtk2Theme=$("${AWK}" -F'"' '/^gtk-theme/ {print $2}' "$HOME/.gtkrc-2.0") + fi + + if grep -q 'icon-theme' "$HOME/.gtkrc-2.0"; then +- gtkIcons=$(awk -F'"' '/^gtk-icon-theme/ {print $2}' "$HOME/.gtkrc-2.0") ++ gtkIcons=$("${AWK}" -F'"' '/^gtk-icon-theme/ {print $2}' "$HOME/.gtkrc-2.0") + fi + + if grep -q 'font' "$HOME/.gtkrc-2.0"; then +- gtkFont=$(awk -F'"' '/^gtk-font-name/ {print $2}' "$HOME/.gtkrc-2.0") ++ gtkFont=$("${AWK}" -F'"' '/^gtk-font-name/ {print $2}' "$HOME/.gtkrc-2.0") + fi + fi + # $HOME/.gtkrc.mine theme detect only +@@ -2815,37 +2830,37 @@ detectgtk () { + fi + if [ -f "$minegtkrc" ]; then + if grep -q '^include' "$minegtkrc"; then +- gtk2Theme=$(grep '^include.*gtkrc' "$minegtkrc" | awk -F "/" '{ print $5 }') ++ gtk2Theme=$(grep '^include.*gtkrc' "$minegtkrc" | "${AWK}" -F "/" '{ print $5 }') + fi + if grep -q '^gtk-icon-theme-name' "$minegtkrc"; then +- gtkIcons=$(grep '^gtk-icon-theme-name' "$minegtkrc" | awk -F '"' '{print $2}') ++ gtkIcons=$(grep '^gtk-icon-theme-name' "$minegtkrc" | "${AWK}" -F '"' '{print $2}') + fi + fi + # /etc/gtk-2.0/gtkrc compatibility + if [[ -f /etc/gtk-2.0/gtkrc && ! -f "$HOME/.gtkrc-2.0" && ! -f "$HOME/.gtkrc.mine" && ! -f "$HOME/.gtkrc-2.0.mine" ]]; then + if grep -q 'gtk-theme-name' /etc/gtk-2.0/gtkrc; then +- gtk2Theme=$(awk -F'"' '/^gtk-theme-name/ {print $2}' /etc/gtk-2.0/gtkrc) ++ gtk2Theme=$("${AWK}" -F'"' '/^gtk-theme-name/ {print $2}' /etc/gtk-2.0/gtkrc) + fi + if grep -q 'gtk-fallback-theme-name' /etc/gtk-2.0/gtkrc && ! [ "x$gtk2Theme" = "x" ]; then +- gtk2Theme=$(awk -F'"' '/^gtk-fallback-theme-name/ {print $2}' /etc/gtk-2.0/gtkrc) ++ gtk2Theme=$("${AWK}" -F'"' '/^gtk-fallback-theme-name/ {print $2}' /etc/gtk-2.0/gtkrc) + fi + + if grep -q 'icon-theme' /etc/gtk-2.0/gtkrc; then +- gtkIcons=$(awk -F'"' '/^icon-theme/ {print $2}' /etc/gtk-2.0/gtkrc) ++ gtkIcons=$("${AWK}" -F'"' '/^icon-theme/ {print $2}' /etc/gtk-2.0/gtkrc) + fi + if grep -q 'gtk-fallback-icon-theme' /etc/gtk-2.0/gtkrc && ! [ "x$gtkIcons" = "x" ]; then +- gtkIcons=$(awk -F'"' '/^gtk-fallback-icon-theme/ {print $2}' /etc/gtk-2.0/gtkrc) ++ gtkIcons=$("${AWK}" -F'"' '/^gtk-fallback-icon-theme/ {print $2}' /etc/gtk-2.0/gtkrc) + fi + + if grep -q 'font' /etc/gtk-2.0/gtkrc; then +- gtkFont=$(awk -F'"' '/^gtk-font-name/ {print $2}' /etc/gtk-2.0/gtkrc) ++ gtkFont=$("${AWK}" -F'"' '/^gtk-font-name/ {print $2}' /etc/gtk-2.0/gtkrc) + fi + fi + + # EXPERIMENTAL gtk3 Theme detection + if [[ "$gtk3Theme" = "Not Found" && -f "$HOME/.config/gtk-3.0/settings.ini" ]]; then + if grep -q 'gtk-theme-name' "$HOME/.config/gtk-3.0/settings.ini"; then +- gtk3Theme=$(awk -F'=' '/^gtk-theme-name/ {print $2}' "$HOME/.config/gtk-3.0/settings.ini") ++ gtk3Theme=$("${AWK}" -F'=' '/^gtk-theme-name/ {print $2}' "$HOME/.config/gtk-3.0/settings.ini") + fi + fi + +@@ -2859,7 +2874,7 @@ detectgtk () { + + # ROX-Filer icon detect only + if [ -a "${XDG_CONFIG_HOME:-${HOME}/.config}/rox.sourceforge.net/ROX-Filer/Options" ]; then +- gtkIcons=$(awk -F'[>,<]' '/icon_theme/ {print $3}' "${XDG_CONFIG_HOME:-${HOME}/.config}/rox.sourceforge.net/ROX-Filer/Options") ++ gtkIcons=$("${AWK}" -F'[>,<]' '/icon_theme/ {print $3}' "${XDG_CONFIG_HOME:-${HOME}/.config}/rox.sourceforge.net/ROX-Filer/Options") + fi + + # E17 detection +@@ -2872,10 +2887,10 @@ detectgtk () { + # Background Detection (feh, nitrogen) + if [ "$background_detect" == "1" ]; then + if [ -a "$HOME/.fehbg" ]; then +- gtkBackgroundFull=$(awk -F"'" '/feh --bg/{print $2}' "$HOME/.fehbg" 2>/dev/null) +- gtkBackground=$(echo "$gtkBackgroundFull" | awk -F"/" '{print $NF}') ++ gtkBackgroundFull=$("${AWK}" -F"'" '/feh --bg/{print $2}' "$HOME/.fehbg" 2>/dev/null) ++ gtkBackground=$(echo "$gtkBackgroundFull" | "${AWK}" -F"/" '{print $NF}') + elif [ -a "${XDG_CONFIG_HOME:-${HOME}/.config}/nitrogen/bg-saved.cfg" ]; then +- gtkBackground=$(awk -F"/" '/file=/ {print $NF}' "${XDG_CONFIG_HOME:-${HOME}/.config}/nitrogen/bg-saved.cfg") ++ gtkBackground=$("${AWK}" -F"/" '/file=/ {print $NF}' "${XDG_CONFIG_HOME:-${HOME}/.config}/nitrogen/bg-saved.cfg") + fi + fi + +@@ -2910,7 +2925,7 @@ detectdroid () { + rom=$(getprop ro.build.display.id) + fi + baseband=$(getprop ro.baseband) +- cpu=$(awk -F': ' '/^Processor/ {P=$2} /^Hardware/ {H=$2} END {print H != "" ? H : P}' /proc/cpuinfo) ++ cpu=$("${AWK}" -F': ' '/^Processor/ {P=$2} /^Hardware/ {H=$2} END {print H != "" ? H : P}' /proc/cpuinfo) + } + + +@@ -6032,7 +6047,7 @@ asciiText () { + #n=${#fulloutput[*]} + for ((i=0; i<${#fulloutput[*]}; i++)); do + # echo "${out_array[@]}" +- case $(awk 'BEGIN{srand();print int(rand()*(1000-1))+1 }') in ++ case $("${AWK}" 'BEGIN{srand();print int(rand()*(1000-1))+1 }') in + 411|188|15|166|609) + f_size=${#fulloutput[*]} + o_size=${#out_array[*]} +-- +2.41.0.640.ga95def55d0-goog + diff --git a/package/screenfetch/Config.in b/package/screenfetch/Config.in new file mode 100644 index 00000000..c0e7100f --- /dev/null +++ b/package/screenfetch/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SCREENFETCH + bool "screenfetch" + depends on BR2_USE_MMU # bash + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash + select BR2_PACKAGE_BASH # runtime dependency + help + screenFetch is a bash script to display distro info. + + https://github.com/KittyKatt/screenFetch diff --git a/package/screenfetch/screenfetch.hash b/package/screenfetch/screenfetch.hash new file mode 100644 index 00000000..4f16c616 --- /dev/null +++ b/package/screenfetch/screenfetch.hash @@ -0,0 +1,2 @@ +sha256 aa97dcd2a8576ae18de6c16c19744aae1573a3da7541af4b98a91930a30a3178 screenfetch-3.9.1.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/screenfetch/screenfetch.mk b/package/screenfetch/screenfetch.mk new file mode 100644 index 00000000..d1315d24 --- /dev/null +++ b/package/screenfetch/screenfetch.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# screenfetch +# +################################################################################ + +SCREENFETCH_VERSION = 3.9.1 +SCREENFETCH_SITE = $(call github,KittyKatt,screenFetch,v$(SCREENFETCH_VERSION)) +SCREENFETCH_LICENSE = GPL-3.0+ +SCREENFETCH_LICENSE_FILES = COPYING + +define SCREENFETCH_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/screenfetch-dev \ + $(TARGET_DIR)/usr/bin/screenfetch +endef + +$(eval $(generic-package)) diff --git a/package/scrub/0001-configure-ac-make-sure-m4-macros-are-included-in-the-build.patch b/package/scrub/0001-configure-ac-make-sure-m4-macros-are-included-in-the-build.patch new file mode 100644 index 00000000..d8729b4a --- /dev/null +++ b/package/scrub/0001-configure-ac-make-sure-m4-macros-are-included-in-the-build.patch @@ -0,0 +1,45 @@ +From 11d30916dd9c11a26c7c8a0f6db9e6ebca301594 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Mon, 18 Jan 2016 21:45:23 +0100 +Subject: [PATCH] configure.ac: make sure m4 macros are included in the build + +This change prevents the following error to occur when calling +autoreconf: + + >>> scrub 2.6.1 Autoreconfiguring + cd /work/build/scrub/build/scrub-2.6.1/ && PATH="/work/build/scrub/host/bin:/work/build/scrub/host/sbin:/work/build/scrub/host/usr/bin:/work/build/scrub/host/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/sbin:/usr/sbin" AR="/usr/bin/ar" AS="/usr/bin/as" LD="/usr/bin/ld" NM="/usr/bin/nm" CC="/usr/bin/gcc" GCC="/usr/bin/gcc" CXX="/usr/bin/g++" CPP="/usr/bin/cpp" OBJCOPY="/usr/bin/objcopy" RANLIB="/usr/bin/ranlib" CPPFLAGS="-I/work/build/scrub/host/usr/include" CFLAGS="-O2 -I/work/build/scrub/host/usr/include" CXXFLAGS="-O2 -I/work/build/scrub/host/usr/include" LDFLAGS="-L/work/build/scrub/host/lib -L/work/build/scrub/host/usr/lib -Wl,-rpath,/work/build/scrub/host/usr/lib" PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 PKG_CONFIG="/work/build/scrub/host/usr/bin/pkg-config" PKG_CONFIG_SYSROOT_DIR="/" PKG_CONFIG_LIBDIR="/work/build/scrub/host/usr/lib/pkgconfig:/work/build/scrub/host/usr/share/pkgconfig" INTLTOOL_PERL=/usr/bin/perl ACLOCAL="/work/build/scrub/host/usr/bin/aclocal -I /work/build/scrub/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/share/aclocal" AUTOCONF="/work/build/scrub/host/usr/bin/autoconf" AUTOHEADER="/work/build/scrub/host/usr/bin/autoheader" AUTOMAKE="/work/build/scrub/host/usr/bin/automake" AUTOPOINT=/bin/true /work/build/scrub/host/usr/bin/autoreconf -f -i -I "/work/build/scrub/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/share/aclocal" -I "/work/build/scrub/host/usr/share/aclocal" + libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'config'. + libtoolize: copying file 'config/ltmain.sh' + libtoolize: Consider adding 'AC_CONFIG_MACRO_DIRS([m4])' to configure.ac, + libtoolize: and rerunning libtoolize and aclocal. + libtoolize: Consider adding '-I m4' to ACLOCAL_AMFLAGS in Makefile.am. + configure.ac:10: error possibly undefined macro: X_AC_META + If this token and others are legitimate, please use m4_pattern_allow. + See the Autoconf documentation. + configure.ac:11: error possibly undefined macro: X_AC_EXPAND_INSTALL_DIRS + configure.ac:51: error possibly undefined macro: AC_PKGCONFIG + configure.ac:70: error possibly undefined macro: X_AC_CHECK_PTHREADS + autoreconf: /work/build/scrub/host/usr/bin/autoconf failed with exit status: 1 + package/pkg-generic.mk:185: recipe for target '/work/build/scrub/build/scrub-2.6.1/.stamp_configured' failed + make: *** [/work/build/scrub/build/scrub-2.6.1/.stamp_configured] Error 1 + make: Leaving directory '/work/repos/buildroot' + +Signed-off-by: Samuel Martin +[Upstream commit: https://github.com/chaos/scrub/commit/11d30916dd9c11a26c7c8a0f6db9e6ebca301594] +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/configure.ac b/configure.ac +index 3d71289..07eaf33 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -7,6 +7,7 @@ AC_INIT(m4_esyscmd([awk '/Name:/ {printf "%s",$2; exit}' META]), + AC_CONFIG_AUX_DIR([config]) + AC_CONFIG_SRCDIR([NEWS]) + AC_CANONICAL_SYSTEM ++AC_CONFIG_MACRO_DIR([config]) + X_AC_META + X_AC_EXPAND_INSTALL_DIRS + diff --git a/package/scrub/Config.in b/package/scrub/Config.in new file mode 100644 index 00000000..84bcc296 --- /dev/null +++ b/package/scrub/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_SCRUB + bool "scrub" + help + Scrub iteratively writes patterns on files or disk devices + to make retrieving the data more difficult. + + https://github.com/chaos/scrub/ diff --git a/package/scrub/scrub.hash b/package/scrub/scrub.hash new file mode 100644 index 00000000..4cb8189c --- /dev/null +++ b/package/scrub/scrub.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 838b061b2e1932b342fb9695c5579cdff5d2d72506cb41d6d8032eba18aed969 scrub-2.6.1.tar.gz +# License files, locally calculated +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING +sha256 f76abbfb80cde1036cb553cdecb08bb846a48e33c91ef56c0f494172fd407f33 DISCLAIMER diff --git a/package/scrub/scrub.mk b/package/scrub/scrub.mk new file mode 100644 index 00000000..ace19d5b --- /dev/null +++ b/package/scrub/scrub.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# scrub +# +################################################################################ + +SCRUB_VERSION = 2.6.1 +SCRUB_SITE = $(call github,chaos,scrub,$(SCRUB_VERSION)) +SCRUB_LICENSE = GPL-2.0+ +SCRUB_LICENSE_FILES = COPYING DISCLAIMER + +# Fetching from the git repo, no configure/Makefile generated, and patching +# configure.ac +SCRUB_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/scrypt/Config.in b/package/scrypt/Config.in new file mode 100644 index 00000000..e6d1ac1a --- /dev/null +++ b/package/scrypt/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SCRYPT + bool "scrypt" + select BR2_PACKAGE_OPENSSL + help + A password-based key derivation function specifically + designed to make it costly to perform large-scale custom + hardware attacks by requiring large amounts of memory. + + http://www.tarsnap.com/scrypt.html diff --git a/package/scrypt/scrypt.hash b/package/scrypt/scrypt.hash new file mode 100644 index 00000000..fb78909b --- /dev/null +++ b/package/scrypt/scrypt.hash @@ -0,0 +1,4 @@ +# From http://www.tarsnap.com/scrypt/scrypt-sigs-1.3.2.asc +sha256 d632c1193420ac6faebf9482e65e33d3a5664eccd643b09a509d21d1c1f29be2 scrypt-1.3.2.tgz +# Locally computed +sha256 277ba0da6001b6c53c1da3f0d0d9107cf847eed49280e2cf4ca1421b8f707119 COPYRIGHT diff --git a/package/scrypt/scrypt.mk b/package/scrypt/scrypt.mk new file mode 100644 index 00000000..977045b8 --- /dev/null +++ b/package/scrypt/scrypt.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# scrypt +# +################################################################################ + +SCRYPT_VERSION = 1.3.2 +SCRYPT_SOURCE = scrypt-$(SCRYPT_VERSION).tgz +SCRYPT_SITE = http://www.tarsnap.com/scrypt +SCRYPT_LICENSE = BSD-2-Clause +SCRYPT_LICENSE_FILES = COPYRIGHT +SCRYPT_DEPENDENCIES = openssl +SCRYPT_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/sdbus-cpp/Config.in b/package/sdbus-cpp/Config.in new file mode 100644 index 00000000..010efaaf --- /dev/null +++ b/package/sdbus-cpp/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_SDBUS_CPP + bool "sdbus-c++" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_SYSTEMD + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # C++20 + help + sdbus-c++ is a high-level C++ D-Bus library for Linux + designed to provide expressive, easy-to-use API in modern C++. + + This will build the target library. + + https://github.com/Kistler-Group/sdbus-cpp + +comment "sdbus-c++ needs systemd and a toolchain w/ C++, gcc >= 8" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_PACKAGE_SYSTEMD || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_8 diff --git a/package/sdbus-cpp/Config.in.host b/package/sdbus-cpp/Config.in.host new file mode 100644 index 00000000..024a2e9a --- /dev/null +++ b/package/sdbus-cpp/Config.in.host @@ -0,0 +1,11 @@ +config BR2_PACKAGE_HOST_SDBUS_CPP + bool "host sdbus-c++" + depends on BR2_HOST_GCC_AT_LEAST_8 # C++20 + help + sdbus-c++ is a high-level C++ D-Bus library for Linux + designed to provide expressive, easy-to-use API in modern C++. + + This will build the stub code generator for the adaptor and + proxy interfaces from D-Bus IDL. + + https://github.com/Kistler-Group/sdbus-cpp diff --git a/package/sdbus-cpp/sdbus-cpp.hash b/package/sdbus-cpp/sdbus-cpp.hash new file mode 100644 index 00000000..1350fc67 --- /dev/null +++ b/package/sdbus-cpp/sdbus-cpp.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 88af4569161a0d0192f0f4a94582a1af4e75722499d06984fb7f91f638f5afb3 sdbus-cpp-2.0.0.tar.gz +sha256 20c17d8b8c48a600800dfd14f95d5cb9ff47066a9641ddeab48dc54aec96e331 COPYING +sha256 a1c9e75e25d8f2ce18017c88978edab2f0dbc7814ad0697d4ff2e5e59959f657 COPYING-LGPL-Exception diff --git a/package/sdbus-cpp/sdbus-cpp.mk b/package/sdbus-cpp/sdbus-cpp.mk new file mode 100644 index 00000000..2994f079 --- /dev/null +++ b/package/sdbus-cpp/sdbus-cpp.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# sdbus-c++ +# +################################################################################ + +SDBUS_CPP_VERSION = 2.0.0 +SDBUS_CPP_SITE = $(call github,Kistler-Group,sdbus-cpp,v$(SDBUS_CPP_VERSION)) +SDBUS_CPP_INSTALL_STAGING = YES +SDBUS_CPP_DEPENDENCIES = host-pkgconf systemd +SDBUS_CPP_LICENSE = LGPL-2.1+ with exception (headers) +SDBUS_CPP_LICENSE_FILES = COPYING COPYING-LGPL-Exception + +# Host build for sdbus-c++-xml2cpp +HOST_SDBUS_CPP_DEPENDENCIES = host-pkgconf host-systemd +HOST_SDBUS_CPP_CONF_OPTS = \ + -DSDBUSCPP_BUILD_CODEGEN=ON \ + -DSDBUSCPP_BUILD_DOCS=OFF \ + -DSDBUSCPP_BUILD_TESTS=OFF \ + -DSDBUSCPP_BUILD_LIBSYSTEMD=OFF + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/sdbusplus/Config.in b/package/sdbusplus/Config.in new file mode 100644 index 00000000..c66203c4 --- /dev/null +++ b/package/sdbusplus/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_SDBUSPLUS + bool "sdbusplus" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_SYSTEMD + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17 + help + A C++ library for sd-bus with a bindings and doc generator. + + This will build the target library. See the host package for + the bindings and documentation generation program. + + https://github.com/openbmc/sdbusplus + +comment "sdbusplus needs systemd and a toolchain w/ C++, gcc >= 7" + depends on !BR2_PACKAGE_SYSTEMD || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 diff --git a/package/sdbusplus/Config.in.host b/package/sdbusplus/Config.in.host new file mode 100644 index 00000000..2b1d1ce3 --- /dev/null +++ b/package/sdbusplus/Config.in.host @@ -0,0 +1,10 @@ +config BR2_PACKAGE_HOST_SDBUSPLUS + bool "host-sdbusplus" + select BR2_PACKAGE_HOST_PKGCONF + help + A C++ library for sd-bus with a bindings and doc generator. + + This will build the Python host side generation tool for + bindings and documentation. + + https://github.com/openbmc/sdbusplus diff --git a/package/sdbusplus/sdbusplus.hash b/package/sdbusplus/sdbusplus.hash new file mode 100644 index 00000000..b21d2ddd --- /dev/null +++ b/package/sdbusplus/sdbusplus.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 c67b8f3d9b74fd0d70eb6eec3b2ec2d496d0f169deedf6fc07dbff2c2f275d2b sdbusplus-4212292bcf136d04b38ba5116aa568b0fa312798.tar.gz + +# License file, locally calculated +sha256 b40930bbcf80744c86c46a12bc9da056641d722716c378f5659b9e555ef833e1 LICENSE diff --git a/package/sdbusplus/sdbusplus.mk b/package/sdbusplus/sdbusplus.mk new file mode 100644 index 00000000..498b8350 --- /dev/null +++ b/package/sdbusplus/sdbusplus.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# sdbusplus +# +################################################################################ + +SDBUSPLUS_VERSION = 4212292bcf136d04b38ba5116aa568b0fa312798 +SDBUSPLUS_SITE = $(call github,openbmc,sdbusplus,$(SDBUSPLUS_VERSION)) +SDBUSPLUS_DEPENDENCIES = host-autoconf-archive host-pkgconf systemd +HOST_SDBUSPLUS_DEPENDENCIES = \ + host-autoconf-archive \ + host-pkgconf \ + host-python3 \ + host-python-inflection \ + host-python-mako \ + host-python-pyyaml +SDBUSPLUS_CONF_OPTS = --disable-sdbuspp +HOST_SDBUSPLUS_CONF_OPTS = --disable-libsdbusplus +SDBUSPLUS_AUTORECONF = YES +SDBUSPLUS_AUTORECONF_OPTS = --include=$(HOST_DIR)/share/autoconf-archive +SDBUSPLUS_INSTALL_STAGING = YES +SDBUSPLUS_LICENSE = Apache-2.0 +SDBUSPLUS_LICENSE_FILES = LICENSE + +# Autoreconf is missing the m4/ directory, which might actually be missing +# iff it was the first argument, but unfortunately we are overriding the +# first include directory above. Thus we need that hook here. +define SDBUSPLUS_CREATE_M4 + mkdir -p $(@D)/m4 +endef +SDBUSPLUS_POST_PATCH_HOOKS += SDBUSPLUS_CREATE_M4 +HOST_SDBUSPLUS_POST_PATCH_HOOKS += SDBUSPLUS_CREATE_M4 + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/sdl/0001-use-correct-directfb-config.patch b/package/sdl/0001-use-correct-directfb-config.patch new file mode 100644 index 00000000..ef671a1d --- /dev/null +++ b/package/sdl/0001-use-correct-directfb-config.patch @@ -0,0 +1,25 @@ +[PATCH] configure.in: use correct directfb-config in version check + +The configure script has just checked for the correct directfb-config +script, so also use it for the version check instead of whatever +might be in the path. + +Signed-off-by: Peter Korsgaard +--- + configure.in | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +Index: SDL-1.2.15/configure.in +=================================================================== +--- SDL-1.2.15.orig/configure.in ++++ SDL-1.2.15/configure.in +@@ -1276,7 +1276,7 @@ + else + set -- `echo $DIRECTFB_REQUIRED_VERSION | sed 's/\./ /g'` + NEED_VERSION=`expr $1 \* 10000 + $2 \* 100 + $3` +- set -- `directfb-config --version | sed 's/\./ /g'` ++ set -- `$DIRECTFBCONFIG --version | sed 's/\./ /g'` + HAVE_VERSION=`expr $1 \* 10000 + $2 \* 100 + $3` + if test $HAVE_VERSION -ge $NEED_VERSION; then + DIRECTFB_CFLAGS=`$DIRECTFBCONFIG --cflags` + diff --git a/package/sdl/0002-fix-compilation-with-libx11.patch b/package/sdl/0002-fix-compilation-with-libx11.patch new file mode 100644 index 00000000..27f24488 --- /dev/null +++ b/package/sdl/0002-fix-compilation-with-libx11.patch @@ -0,0 +1,60 @@ +sdl: Fix compilation with libX11 >= 1.5.99.902 +Signed-off-by: Vicente Olivert Riera + +# HG changeset patch +# User Azamat H. Hackimov +# Date 1370184533 -21600 +# Node ID 91ad7b43317a6387e115ecdf63a49137f47e42c8 +# Parent f7fd5c3951b9ed922fdf696f7182e71b58a13268 +Fix compilation with libX11 >= 1.5.99.902. + +These changes fixes bug #1769 for SDL 1.2 +(http://bugzilla.libsdl.org/show_bug.cgi?id=1769). + +diff -r f7fd5c3951b9 -r 91ad7b43317a configure.in +--- a/configure.in Wed Apr 17 00:56:53 2013 -0700 ++++ b/configure.in Sun Jun 02 20:48:53 2013 +0600 +@@ -1169,6 +1169,17 @@ + if test x$definitely_enable_video_x11_xrandr = xyes; then + AC_DEFINE(SDL_VIDEO_DRIVER_X11_XRANDR) + fi ++ AC_MSG_CHECKING(for const parameter to _XData32) ++ have_const_param_xdata32=no ++ AC_TRY_COMPILE([ ++ #include ++ extern int _XData32(Display *dpy,register _Xconst long *data,unsigned len); ++ ],[ ++ ],[ ++ have_const_param_xdata32=yes ++ AC_DEFINE(SDL_VIDEO_DRIVER_X11_CONST_PARAM_XDATA32) ++ ]) ++ AC_MSG_RESULT($have_const_param_xdata32) + fi + fi + } +diff -r f7fd5c3951b9 -r 91ad7b43317a include/SDL_config.h.in +--- a/include/SDL_config.h.in Wed Apr 17 00:56:53 2013 -0700 ++++ b/include/SDL_config.h.in Sun Jun 02 20:48:53 2013 +0600 +@@ -283,6 +283,7 @@ + #undef SDL_VIDEO_DRIVER_WINDIB + #undef SDL_VIDEO_DRIVER_WSCONS + #undef SDL_VIDEO_DRIVER_X11 ++#undef SDL_VIDEO_DRIVER_X11_CONST_PARAM_XDATA32 + #undef SDL_VIDEO_DRIVER_X11_DGAMOUSE + #undef SDL_VIDEO_DRIVER_X11_DYNAMIC + #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT +diff -r f7fd5c3951b9 -r 91ad7b43317a src/video/x11/SDL_x11sym.h +--- a/src/video/x11/SDL_x11sym.h Wed Apr 17 00:56:53 2013 -0700 ++++ b/src/video/x11/SDL_x11sym.h Sun Jun 02 20:48:53 2013 +0600 +@@ -165,7 +165,11 @@ + */ + #ifdef LONG64 + SDL_X11_MODULE(IO_32BIT) ++#if SDL_VIDEO_DRIVER_X11_CONST_PARAM_XDATA32 ++SDL_X11_SYM(int,_XData32,(Display *dpy,register _Xconst long *data,unsigned len),(dpy,data,len),return) ++#else + SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return) ++#endif + SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long len),(dpy,data,len),) + #endif + diff --git a/package/sdl/0003-SDL_x11yuv.c-fix-possible-use-after-free.patch b/package/sdl/0003-SDL_x11yuv.c-fix-possible-use-after-free.patch new file mode 100644 index 00000000..d7858d0f --- /dev/null +++ b/package/sdl/0003-SDL_x11yuv.c-fix-possible-use-after-free.patch @@ -0,0 +1,28 @@ +From d7e00208738a0bc6af302723fe64908ac35b777b Mon Sep 17 00:00:00 2001 +From: Ozkan Sezer +Date: Sat, 18 Jun 2022 14:55:00 +0300 +Subject: [PATCH] SDL_x11yuv.c: fix possible use-after-free + +Fixes: https://github.com/libsdl-org/SDL-1.2/issues/863 +Signed-off-by: Peter Korsgaard +--- + src/video/x11/SDL_x11yuv.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/video/x11/SDL_x11yuv.c b/src/video/x11/SDL_x11yuv.c +index 62698dfd..0d5754e3 100644 +--- a/src/video/x11/SDL_x11yuv.c ++++ b/src/video/x11/SDL_x11yuv.c +@@ -374,8 +374,8 @@ SDL_Overlay *X11_CreateYUVOverlay(_THIS, int width, int height, Uint32 format, S + #ifdef PITCH_WORKAROUND + if ( hwdata->image != NULL && hwdata->image->pitches[0] != (width*bpp) ) { + /* Ajust overlay width according to pitch */ +- XFree(hwdata->image); + width = hwdata->image->pitches[0] / bpp; ++ XFree(hwdata->image); + hwdata->image = SDL_NAME(XvCreateImage)(GFX_Display, xv_port, format, + 0, width, height); + } +-- +2.30.2 + diff --git a/package/sdl/Config.in b/package/sdl/Config.in new file mode 100644 index 00000000..9f1e34de --- /dev/null +++ b/package/sdl/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_SDL + bool "SDL" + help + Simple DirectMedia Layer - SDL is a library that allows + programs portable low level access to a video framebuffer, + audio output, mouse, and keyboard. + + http://www.libsdl.org/ + +if BR2_PACKAGE_SDL + +config BR2_PACKAGE_SDL_FBCON + bool "SDL framebuffer console video driver" + default y + +config BR2_PACKAGE_SDL_DIRECTFB + bool "SDL DirectFB video driver" + depends on BR2_PACKAGE_DIRECTFB + +config BR2_PACKAGE_SDL_X11 + bool "SDL X11 video driver" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + +endif diff --git a/package/sdl/sdl.hash b/package/sdl/sdl.hash new file mode 100644 index 00000000..6154541a --- /dev/null +++ b/package/sdl/sdl.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 d6d316a793e5e348155f0dd93b979798933fb98aa1edebcc108829d6474aad00 SDL-1.2.15.tar.gz +# Locally computed +sha256 bb117c0fbd7f57f64170b690285d7df07c2371b578e3b3cd3aa2e1155ef461a0 COPYING diff --git a/package/sdl/sdl.mk b/package/sdl/sdl.mk new file mode 100644 index 00000000..462600de --- /dev/null +++ b/package/sdl/sdl.mk @@ -0,0 +1,101 @@ +################################################################################ +# +# sdl +# +################################################################################ + +SDL_VERSION = 1.2.15 +SDL_SOURCE = SDL-$(SDL_VERSION).tar.gz +SDL_SITE = http://www.libsdl.org/release +SDL_LICENSE = LGPL-2.1+ +SDL_LICENSE_FILES = COPYING +SDL_CPE_ID_VENDOR = libsdl +SDL_CPE_ID_PRODUCT = simple_directmedia_layer +SDL_INSTALL_STAGING = YES + +# 0003-SDL_x11yuv.c-fix-possible-use-after-free.patch +SDL_IGNORE_CVES += CVE-2022-34568 + +# we're patching configure.in, but package cannot autoreconf with our version of +# autotools, so we have to do it manually instead of setting SDL_AUTORECONF = YES +define SDL_RUN_AUTOGEN + cd $(@D) && PATH=$(BR_PATH) ./autogen.sh +endef + +SDL_PRE_CONFIGURE_HOOKS += SDL_RUN_AUTOGEN +HOST_SDL_PRE_CONFIGURE_HOOKS += SDL_RUN_AUTOGEN + +SDL_DEPENDENCIES += host-automake host-autoconf host-libtool +HOST_SDL_DEPENDENCIES += host-automake host-autoconf host-libtool + +SDL_CONF_OPTS += --enable-video-qtopia=no + +ifeq ($(BR2_PACKAGE_SDL_FBCON),y) +SDL_CONF_OPTS += --enable-video-fbcon=yes +else +SDL_CONF_OPTS += --enable-video-fbcon=no +endif + +ifeq ($(BR2_PACKAGE_SDL_DIRECTFB),y) +SDL_DEPENDENCIES += directfb +SDL_CONF_OPTS += --enable-video-directfb=yes +SDL_CONF_ENV = ac_cv_path_DIRECTFBCONFIG=$(STAGING_DIR)/usr/bin/directfb-config +else +SDL_CONF_OPTS += --enable-video-directfb=no +endif + +ifeq ($(BR2_PACKAGE_SDL_X11),y) +SDL_CONF_OPTS += --enable-video-x11=yes +SDL_DEPENDENCIES += \ + xlib_libX11 xlib_libXext \ + $(if $(BR2_PACKAGE_XLIB_LIBXRENDER), xlib_libXrender) \ + $(if $(BR2_PACKAGE_XLIB_LIBXRANDR), xlib_libXrandr) +else +SDL_CONF_OPTS += --enable-video-x11=no +endif + +ifneq ($(BR2_USE_MMU),y) +SDL_CONF_OPTS += --enable-dga=no +endif + +# overwrite autodection (prevents confusion with host libpth version) +ifeq ($(BR2_PACKAGE_LIBPTHSEM_COMPAT),y) +SDL_CONF_OPTS += --enable-pth +SDL_CONF_ENV += ac_cv_path_PTH_CONFIG=$(STAGING_DIR)/usr/bin/pth-config +SDL_DEPENDENCIES += libpthsem +else +SDL_CONF_OPTS += --disable-pth +endif + +ifeq ($(BR2_PACKAGE_TSLIB),y) +SDL_DEPENDENCIES += tslib +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +SDL_DEPENDENCIES += alsa-lib +endif + +ifeq ($(BR2_PACKAGE_MESA3D),y) +SDL_DEPENDENCIES += mesa3d +endif + +SDL_CONF_OPTS += \ + --disable-rpath \ + --enable-pulseaudio=no \ + --disable-arts \ + --disable-esd \ + --disable-nasm \ + --disable-video-ps3 + +HOST_SDL_CONF_OPTS += \ + --enable-pulseaudio=no \ + --enable-video-x11=no \ + --disable-arts \ + --disable-esd \ + --disable-nasm \ + --disable-video-ps3 + +SDL_CONFIG_SCRIPTS = sdl-config + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/sdl2/Config.in b/package/sdl2/Config.in new file mode 100644 index 00000000..7c8258fe --- /dev/null +++ b/package/sdl2/Config.in @@ -0,0 +1,69 @@ +config BR2_PACKAGE_SDL2 + bool "sdl2" + depends on !BR2_STATIC_LIBS + help + Simple DirectMedia Layer 2 - SDL2 is a library that allows + programs portable low level access to a video framebuffer, + audio output, mouse, and keyboard. It is not compatible with + SDL1. + + http://www.libsdl.org/ + +if BR2_PACKAGE_SDL2 + +config BR2_PACKAGE_SDL2_DIRECTFB + bool "DirectFB video driver" + depends on BR2_PACKAGE_DIRECTFB + +comment "DirectFB video driver needs directfb" + depends on !BR2_PACKAGE_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 + +config BR2_PACKAGE_SDL2_KMSDRM + bool "KMS/DRM video driver" + depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm + depends on BR2_PACKAGE_HAS_LIBGBM + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_SDL2_OPENGL || BR2_PACKAGE_SDL2_OPENGLES + select BR2_PACKAGE_LIBDRM + +comment "KMS/DRM video driver needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +comment "KMS/DRM video driver needs a GBM provider, and OpenGL or OpenGLES+EGL" + depends on !BR2_PACKAGE_HAS_LIBGBM || \ + !BR2_PACKAGE_HAS_LIBEGL || \ + !(BR2_PACKAGE_SDL2_OPENGL || BR2_PACKAGE_SDL2_OPENGLES) + +config BR2_PACKAGE_SDL2_OPENGL + bool "OpenGL (GLX)" + depends on BR2_PACKAGE_HAS_LIBGL + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU # X11 video driver + select BR2_PACKAGE_SDL2_X11 + +comment "OpenGL support needs X11 and an OpenGL provider" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_HAS_LIBGL || !BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_SDL2_OPENGLES + bool "OpenGL ES" + depends on BR2_PACKAGE_HAS_LIBGLES + +comment "OpenGL ES support needs an OpenGL ES provider" + depends on !BR2_PACKAGE_HAS_LIBGLES + +endif + +comment "sdl2 needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/sdl2/sdl2.hash b/package/sdl2/sdl2.hash new file mode 100644 index 00000000..30235844 --- /dev/null +++ b/package/sdl2/sdl2.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking http://www.libsdl.org/release/SDL2-2.30.5.tar.gz.sig +sha256 f374f3fa29c37dfcc20822d4a7d7dc57e58924d1a5f2ad511bfab4c8193de63b SDL2-2.30.5.tar.gz +# Locally calculated +sha256 9b9e1764f06701bcf7ce21e942c682d5921ba0900c6fca760321b1c8837a9662 LICENSE.txt diff --git a/package/sdl2/sdl2.mk b/package/sdl2/sdl2.mk new file mode 100644 index 00000000..d19bc0fb --- /dev/null +++ b/package/sdl2/sdl2.mk @@ -0,0 +1,174 @@ +################################################################################ +# +# sdl2 +# +################################################################################ + +SDL2_VERSION = 2.30.5 +SDL2_SOURCE = SDL2-$(SDL2_VERSION).tar.gz +SDL2_SITE = http://www.libsdl.org/release +SDL2_LICENSE = Zlib +SDL2_LICENSE_FILES = LICENSE.txt +SDL2_CPE_ID_VENDOR = libsdl +SDL2_CPE_ID_PRODUCT = simple_directmedia_layer +SDL2_INSTALL_STAGING = YES +SDL2_CONFIG_SCRIPTS = sdl2-config + +SDL2_CONF_OPTS += \ + --disable-rpath \ + --disable-arts \ + --disable-esd \ + --disable-dbus \ + --disable-pulseaudio \ + --disable-video-vivante \ + --disable-video-cocoa \ + --disable-video-metal \ + --disable-video-wayland \ + --disable-video-dummy \ + --disable-video-offscreen \ + --disable-video-vulkan \ + --disable-ime \ + --disable-ibus \ + --disable-fcitx \ + --disable-joystick-mfi \ + --disable-directx \ + --disable-xinput \ + --disable-wasapi \ + --disable-hidapi-joystick \ + --disable-hidapi-libusb \ + --disable-joystick-virtual \ + --disable-render-d3d + +# We are using autotools build system for sdl2, so the sdl2-config.cmake +# include path are not resolved like for sdl2-config script. +# Change the absolute /usr path to resolve relatively to the sdl2-config.cmake location. +# https://bugzilla.libsdl.org/show_bug.cgi?id=4597 +define SDL2_FIX_SDL2_CONFIG_CMAKE + $(SED) '2iget_filename_component(PACKAGE_PREFIX_DIR "$${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)\n' \ + $(STAGING_DIR)/usr/lib/cmake/SDL2/sdl2-config.cmake + $(SED) 's%"/usr"%$${PACKAGE_PREFIX_DIR}%' \ + $(STAGING_DIR)/usr/lib/cmake/SDL2/sdl2-config.cmake +endef +SDL2_POST_INSTALL_STAGING_HOOKS += SDL2_FIX_SDL2_CONFIG_CMAKE + +# We must enable static build to get compilation successful. +SDL2_CONF_OPTS += --enable-static + +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +SDL2_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -marm" +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +SDL2_DEPENDENCIES += udev +SDL2_CONF_OPTS += --enable-libudev +else +SDL2_CONF_OPTS += --disable-libudev +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE),y) +SDL2_CONF_OPTS += --enable-sse +else +SDL2_CONF_OPTS += --disable-sse +endif + +ifeq ($(BR2_X86_CPU_HAS_3DNOW),y) +SDL2_CONF_OPTS += --enable-3dnow +else +SDL2_CONF_OPTS += --disable-3dnow +endif + +ifeq ($(BR2_PACKAGE_SDL2_DIRECTFB),y) +SDL2_DEPENDENCIES += directfb +SDL2_CONF_OPTS += --enable-video-directfb +SDL2_CONF_ENV += ac_cv_path_DIRECTFBCONFIG=$(STAGING_DIR)/usr/bin/directfb-config +else +SDL2_CONF_OPTS += --disable-video-directfb +endif + +ifeq ($(BR2_PACKAGE_SDL2_OPENGLES)$(BR2_PACKAGE_RPI_USERLAND),yy) +SDL2_DEPENDENCIES += rpi-userland +SDL2_CONF_OPTS += --enable-video-rpi +else +SDL2_CONF_OPTS += --disable-video-rpi +endif + +# x-includes and x-libraries must be set for cross-compiling +# By default x_includes and x_libraries contains unsafe paths. +# (/usr/X11R6/include and /usr/X11R6/lib) +ifeq ($(BR2_PACKAGE_SDL2_X11),y) +SDL2_DEPENDENCIES += xlib_libX11 xlib_libXext + +# X11/extensions/shape.h is provided by libXext. +SDL2_CONF_OPTS += --enable-video-x11 \ + --with-x=$(STAGING_DIR) \ + --x-includes=$(STAGING_DIR)/usr/include \ + --x-libraries=$(STAGING_DIR)/usr/lib \ + --enable-video-x11-xshape + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y) +SDL2_DEPENDENCIES += xlib_libXcursor +SDL2_CONF_OPTS += --enable-video-x11-xcursor +else +SDL2_CONF_OPTS += --disable-video-x11-xcursor +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXI),y) +SDL2_DEPENDENCIES += xlib_libXi +SDL2_CONF_OPTS += --enable-video-x11-xinput +else +SDL2_CONF_OPTS += --disable-video-x11-xinput +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) +SDL2_DEPENDENCIES += xlib_libXrandr +SDL2_CONF_OPTS += --enable-video-x11-xrandr +else +SDL2_CONF_OPTS += --disable-video-x11-xrandr +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXSCRNSAVER),y) +SDL2_DEPENDENCIES += xlib_libXScrnSaver +SDL2_CONF_OPTS += --enable-video-x11-scrnsaver +else +SDL2_CONF_OPTS += --disable-video-x11-scrnsaver +endif + +else +SDL2_CONF_OPTS += --disable-video-x11 --without-x +endif + +ifeq ($(BR2_PACKAGE_SDL2_OPENGL),y) +SDL2_CONF_OPTS += --enable-video-opengl +SDL2_DEPENDENCIES += libgl +else +SDL2_CONF_OPTS += --disable-video-opengl +endif + +ifeq ($(BR2_PACKAGE_SDL2_OPENGLES),y) +SDL2_CONF_OPTS += \ + --enable-video-opengles \ + --enable-video-opengles1 \ + --enable-video-opengles2 +SDL2_DEPENDENCIES += libgles +else +SDL2_CONF_OPTS += \ + --disable-video-opengles \ + --disable-video-opengles1 \ + --disable-video-opengles2 +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +SDL2_DEPENDENCIES += alsa-lib +SDL2_CONF_OPTS += --enable-alsa +else +SDL2_CONF_OPTS += --disable-alsa +endif + +ifeq ($(BR2_PACKAGE_SDL2_KMSDRM),y) +SDL2_DEPENDENCIES += libdrm libgbm libegl +SDL2_CONF_OPTS += --enable-video-kmsdrm +else +SDL2_CONF_OPTS += --disable-video-kmsdrm +endif + +$(eval $(autotools-package)) diff --git a/package/sdl2_gfx/Config.in b/package/sdl2_gfx/Config.in new file mode 100644 index 00000000..f5dafc56 --- /dev/null +++ b/package/sdl2_gfx/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_SDL2_GFX + bool "sdl2_gfx" + depends on BR2_PACKAGE_SDL2 + help + The SDL2_gfx library is an extension to the SDL2 library + which provides basic antialiased drawing routines such as + lines, circles or polygons, an interpolating rotozoomer for + SDL surfaces, framerate control and MMX image filters. + + http://www.ferzkopp.net/wordpress/2016/01/02/sdl_gfx-sdl2_gfx diff --git a/package/sdl2_gfx/sdl2_gfx.hash b/package/sdl2_gfx/sdl2_gfx.hash new file mode 100644 index 00000000..190c997d --- /dev/null +++ b/package/sdl2_gfx/sdl2_gfx.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 63e0e01addedc9df2f85b93a248f06e8a04affa014a835c2ea34bfe34e576262 SDL2_gfx-1.0.4.tar.gz +sha256 ec9036525fe1adde787041cce6c4b7fbb262863c238bb9051037e29a57e27bfc COPYING +sha256 18e6fad60b809b0e30bd2576a0d33c179ca2ac694504a849d05b6579e3c481dd SDL2_framerate.h diff --git a/package/sdl2_gfx/sdl2_gfx.mk b/package/sdl2_gfx/sdl2_gfx.mk new file mode 100644 index 00000000..6817391b --- /dev/null +++ b/package/sdl2_gfx/sdl2_gfx.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# sdl2_gfx +# +################################################################################ + +SDL2_GFX_VERSION = 1.0.4 +SDL2_GFX_SOURCE = SDL2_gfx-$(SDL2_GFX_VERSION).tar.gz +SDL2_GFX_SITE = http://www.ferzkopp.net/Software/SDL2_gfx +SDL2_GFX_LICENSE = Zlib +SDL2_GFX_LICENSE_FILES = COPYING SDL2_framerate.h +SDL2_GFX_INSTALL_STAGING = YES +SDL2_GFX_DEPENDENCIES = sdl2 host-pkgconf +SDL2_GFX_CONF_OPTS = --disable-sdltest +# configure/Makefile.in not up-to-date, causing aclocal to be used at +# build time if we don't autoreconf. +SDL2_GFX_AUTORECONF = YES + +# Even though x86_64 processors support MMX, the MMX-specific assembly +# code in sdl2_gfx is IA32 specific, and does not build for x86_64. +ifeq ($(BR2_i386)$(BR2_X86_CPU_HAS_MMX),yy) +SDL2_GFX_CONF_OPTS += --enable-mmx +else +SDL2_GFX_CONF_OPTS += --disable-mmx +endif + +$(eval $(autotools-package)) diff --git a/package/sdl2_image/Config.in b/package/sdl2_image/Config.in new file mode 100644 index 00000000..9b4a3835 --- /dev/null +++ b/package/sdl2_image/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SDL2_IMAGE + bool "sdl2_image" + depends on BR2_PACKAGE_SDL2 + help + SDL2_image is an image file loading library. It loads images + as SDL surfaces, and supports the following formats: BMP, + GIF, JPEG, LBM, PCX, PNG, PNM, TGA, TIFF, XCF, XPM, XV. + + http://www.libsdl.org/projects/SDL_image/ diff --git a/package/sdl2_image/sdl2_image.hash b/package/sdl2_image/sdl2_image.hash new file mode 100644 index 00000000..53a887c6 --- /dev/null +++ b/package/sdl2_image/sdl2_image.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 8f486bbfbcf8464dd58c9e5d93394ab0255ce68b51c5a966a918244820a76ddc SDL2_image-2.8.2.tar.gz +sha256 a0e8ce06504966e45088ee1cc7583cc8af9aac615d4cf56d47d847da9cb15139 LICENSE.txt diff --git a/package/sdl2_image/sdl2_image.mk b/package/sdl2_image/sdl2_image.mk new file mode 100644 index 00000000..40b9e3c9 --- /dev/null +++ b/package/sdl2_image/sdl2_image.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# sdl2_image +# +################################################################################ + +SDL2_IMAGE_VERSION = 2.8.2 +SDL2_IMAGE_SOURCE = SDL2_image-$(SDL2_IMAGE_VERSION).tar.gz +SDL2_IMAGE_SITE = http://www.libsdl.org/projects/SDL_image/release +SDL2_IMAGE_INSTALL_STAGING = YES +SDL2_IMAGE_LICENSE = Zlib +SDL2_IMAGE_LICENSE_FILES = LICENSE.txt +SDL2_IMAGE_CPE_ID_VENDOR = libsdl +SDL2_IMAGE_CPE_ID_PRODUCT = sdl_image + +# Unconditionally enable support for image formats that don't require +# any dependency. +SDL2_IMAGE_CONF_OPTS = \ + --disable-sdltest \ + --enable-bmp \ + --enable-gif \ + --enable-lbm \ + --enable-pcx \ + --enable-pnm \ + --enable-tga \ + --enable-xcf \ + --enable-xpm \ + --enable-xv + +SDL2_IMAGE_DEPENDENCIES = sdl2 host-pkgconf + +ifeq ($(BR2_PACKAGE_JPEG),y) +SDL2_IMAGE_CONF_OPTS += --enable-jpg +SDL2_IMAGE_DEPENDENCIES += jpeg +else +SDL2_IMAGE_CONF_OPTS += --disable-jpg +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +SDL2_IMAGE_CONF_OPTS += --enable-png +SDL2_IMAGE_DEPENDENCIES += libpng +else +SDL2_IMAGE_CONF_OPTS += --disable-png +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +SDL2_IMAGE_CONF_OPTS += --enable-tif +SDL2_IMAGE_DEPENDENCIES += tiff +else +SDL2_IMAGE_CONF_OPTS += --disable-tif +endif + +ifeq ($(BR2_PACKAGE_WEBP),y) +SDL2_IMAGE_CONF_OPTS += --enable-webp +SDL2_IMAGE_DEPENDENCIES += webp +else +SDL2_IMAGE_CONF_OPTS += --disable-webp +endif + +$(eval $(autotools-package)) diff --git a/package/sdl2_mixer/Config.in b/package/sdl2_mixer/Config.in new file mode 100644 index 00000000..8e1cf585 --- /dev/null +++ b/package/sdl2_mixer/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_SDL2_MIXER + bool "sdl2_mixer" + depends on BR2_PACKAGE_SDL2 + help + SDL_mixer is a sample multi-channel audio mixer library. It + supports any number of simultaneously playing channels of 16 + bit stereo audio, plus a single channel of music, mixed by + the popular FLAC, MikMod MOD, Timidity MIDI, Ogg Vorbis, and + SMPEG MP3 libraries. + + http://www.libsdl.org/projects/SDL_mixer/ diff --git a/package/sdl2_mixer/sdl2_mixer.hash b/package/sdl2_mixer/sdl2_mixer.hash new file mode 100644 index 00000000..4592014d --- /dev/null +++ b/package/sdl2_mixer/sdl2_mixer.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 7a6ba86a478648ce617e3a5e9277181bc67f7ce9876605eea6affd4a0d6eea8f SDL2_mixer-2.6.3.tar.gz +sha256 1852c8549e3d154687197d46abababd3e8faae035f19991b2ca850fa3a43ad57 LICENSE.txt diff --git a/package/sdl2_mixer/sdl2_mixer.mk b/package/sdl2_mixer/sdl2_mixer.mk new file mode 100644 index 00000000..074e2822 --- /dev/null +++ b/package/sdl2_mixer/sdl2_mixer.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# sdl2_mixer +# +################################################################################ + +SDL2_MIXER_VERSION = 2.6.3 +SDL2_MIXER_SOURCE = SDL2_mixer-$(SDL2_MIXER_VERSION).tar.gz +SDL2_MIXER_SITE = http://www.libsdl.org/projects/SDL_mixer/release +SDL2_MIXER_LICENSE = Zlib +SDL2_MIXER_LICENSE_FILES = LICENSE.txt +SDL2_MIXER_INSTALL_STAGING = YES +SDL2_MIXER_DEPENDENCIES = sdl2 host-pkgconf + +SDL2_MIXER_CONF_OPTS = --disable-music-mp3 + +ifeq ($(BR2_PACKAGE_FLAC),y) +SDL2_MIXER_CONF_OPTS += --enable-music-flac +SDL2_MIXER_DEPENDENCIES += flac +else +SDL2_MIXER_CONF_OPTS += --disable-music-flac +endif + +ifeq ($(BR2_PACKAGE_FLUIDSYNTH),y) +SDL2_MIXER_CONF_OPTS += --enable-music-midi-fluidsynth +SDL2_MIXER_DEPENDENCIES += fluidsynth +else +SDL2_MIXER_CONF_OPTS += --disable-music-midi-fluidsynth +endif + +ifeq ($(BR2_PACKAGE_LIBMODPLUG),y) +SDL2_MIXER_CONF_OPTS += --enable-music-mod-modplug +SDL2_MIXER_DEPENDENCIES += libmodplug +else +SDL2_MIXER_CONF_OPTS += --disable-music-mod-modplug +endif + +ifeq ($(BR2_PACKAGE_OPUSFILE),y) +SDL2_MIXER_CONF_OPTS += --enable-music-opus +SDL2_MIXER_DEPENDENCIES += opusfile +else +SDL2_MIXER_CONF_OPTS += --disable-music-opus +endif + +ifeq ($(BR2_PACKAGE_TREMOR),y) +SDL2_MIXER_CONF_OPTS += --enable-music-ogg-tremor +SDL2_MIXER_DEPENDENCIES += tremor +else +SDL2_MIXER_CONF_OPTS += --disable-music-ogg-tremor +endif + +$(eval $(autotools-package)) diff --git a/package/sdl2_net/Config.in b/package/sdl2_net/Config.in new file mode 100644 index 00000000..d5e749f5 --- /dev/null +++ b/package/sdl2_net/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SDL2_NET + bool "sdl2_net" + depends on BR2_PACKAGE_SDL2 + help + This is a small sample cross-platform networking library, + with a sample chat client and server application. The chat + client uses the GUIlib GUI framework library. + + http://www.libsdl.org/projects/SDL_net/ diff --git a/package/sdl2_net/sdl2_net.hash b/package/sdl2_net/sdl2_net.hash new file mode 100644 index 00000000..eac0ac70 --- /dev/null +++ b/package/sdl2_net/sdl2_net.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 4e4a891988316271974ff4e9585ed1ef729a123d22c08bd473129179dc857feb SDL2_net-2.2.0.tar.gz +sha256 fcb07e07ac6bc8b2fcf047b50431ef4ebe5b619d7ca7c82212018309a9067426 LICENSE.txt diff --git a/package/sdl2_net/sdl2_net.mk b/package/sdl2_net/sdl2_net.mk new file mode 100644 index 00000000..85676af0 --- /dev/null +++ b/package/sdl2_net/sdl2_net.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# sdl2_net +# +################################################################################ + +SDL2_NET_VERSION = 2.2.0 +SDL2_NET_SOURCE = SDL2_net-$(SDL2_NET_VERSION).tar.gz +SDL2_NET_SITE = http://www.libsdl.org/projects/SDL_net/release +SDL2_NET_LICENSE = Zlib +SDL2_NET_LICENSE_FILES = LICENSE.txt +SDL2_NET_INSTALL_STAGING = YES +SDL2_NET_DEPENDENCIES = sdl2 host-pkgconf + +$(eval $(autotools-package)) diff --git a/package/sdl2_ttf/Config.in b/package/sdl2_ttf/Config.in new file mode 100644 index 00000000..fc870a71 --- /dev/null +++ b/package/sdl2_ttf/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SDL2_TTF + bool "sdl2_ttf" + depends on BR2_PACKAGE_SDL2 + select BR2_PACKAGE_FREETYPE + help + SDL2_ttf is a sample TrueType font library. It allows you to + use TrueType fonts in your SDL2 applications. + + http://www.libsdl.org/projects/SDL_ttf/ diff --git a/package/sdl2_ttf/sdl2_ttf.hash b/package/sdl2_ttf/sdl2_ttf.hash new file mode 100644 index 00000000..7693aeba --- /dev/null +++ b/package/sdl2_ttf/sdl2_ttf.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 d48cbd1ce475b9e178206bf3b72d56b66d84d44f64ac05803328396234d67723 SDL2_ttf-2.22.0.tar.gz +sha256 a0e8ce06504966e45088ee1cc7583cc8af9aac615d4cf56d47d847da9cb15139 LICENSE.txt diff --git a/package/sdl2_ttf/sdl2_ttf.mk b/package/sdl2_ttf/sdl2_ttf.mk new file mode 100644 index 00000000..f4f293ce --- /dev/null +++ b/package/sdl2_ttf/sdl2_ttf.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# sdl2_ttf +# +################################################################################ + +SDL2_TTF_VERSION = 2.22.0 +SDL2_TTF_SOURCE = SDL2_ttf-$(SDL2_TTF_VERSION).tar.gz +SDL2_TTF_SITE = http://www.libsdl.org/projects/SDL_ttf/release +SDL2_TTF_LICENSE = Zlib +SDL2_TTF_LICENSE_FILES = LICENSE.txt +SDL2_TTF_INSTALL_STAGING = YES +SDL2_TTF_DEPENDENCIES = sdl2 freetype host-pkgconf +SDL2_TTF_CONF_OPTS = --disable-freetype-builtin --disable-harfbuzz-builtin + +ifeq ($(BR2_PACKAGE_HARFBUZZ),y) +SDL2_TTF_DEPENDENCIES += harfbuzz +SDL2_TTF_CONF_OPTS += --enable-harfbuzz +else +SDL2_TTF_CONF_OPTS += --disable-harfbuzz +endif + +# x-includes and x-libraries must be set for cross-compiling +# By default x_includes and x_libraries contains unsafe paths. +# (/usr/include and /usr/lib) +ifeq ($(BR2_PACKAGE_SDL2_X11),y) +SDL2_TTF_CONF_OPTS += \ + --with-x \ + --x-includes=$(STAGING_DIR)/usr/include \ + --x-libraries=$(STAGING_DIR)/usr/lib +else +SDL2_TTF_CONF_OPTS += \ + --without-x +endif + +$(eval $(autotools-package)) diff --git a/package/sdl_gfx/Config.in b/package/sdl_gfx/Config.in new file mode 100644 index 00000000..b5d5cac5 --- /dev/null +++ b/package/sdl_gfx/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_SDL_GFX + bool "SDL_gfx" + depends on BR2_PACKAGE_SDL + help + The SDL_gfx library is an extension to the SDL library which + provides basic antialiased drawing routines such as lines, + circles or polygons, an interpolating rotozoomer for SDL + surfaces, framerate control and MMX image filters. + + http://cms.ferzkopp.net/index.php/software/13-sdl-gfx diff --git a/package/sdl_gfx/sdl_gfx.hash b/package/sdl_gfx/sdl_gfx.hash new file mode 100644 index 00000000..6e94b238 --- /dev/null +++ b/package/sdl_gfx/sdl_gfx.hash @@ -0,0 +1,6 @@ +# From http://sourceforge.net/projects/sdlgfx/files/ +md5 fcc3c4f2d1b4943409bf7e67dd65d03a SDL_gfx-2.0.23.tar.gz +sha1 aae60e7fed539f3f8a0a0bd6da3bbcf625642596 SDL_gfx-2.0.23.tar.gz +# Locally computed +sha256 4f5df842266c59b2d7e6ef35b53d7f37b13795d93baf3ed211f502c216f7bc89 COPYING +sha256 5f3bc98e0bd2de83279bd62868d4bc0c2b4f811ab828b036d36a4a6d1cd5672d LICENSE diff --git a/package/sdl_gfx/sdl_gfx.mk b/package/sdl_gfx/sdl_gfx.mk new file mode 100644 index 00000000..e7420de1 --- /dev/null +++ b/package/sdl_gfx/sdl_gfx.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# sdl_gfx +# +################################################################################ + +SDL_GFX_VERSION_MAJOR = 2.0 +SDL_GFX_VERSION = $(SDL_GFX_VERSION_MAJOR).23 +SDL_GFX_SOURCE = SDL_gfx-$(SDL_GFX_VERSION).tar.gz +SDL_GFX_SITE = http://www.ferzkopp.net/Software/SDL_gfx-$(SDL_GFX_VERSION_MAJOR) +SDL_GFX_LICENSE = Zlib +SDL_GFX_LICENSE_FILES = COPYING LICENSE +SDL_GFX_INSTALL_STAGING = YES +SDL_GFX_DEPENDENCIES = sdl +SDL_GFX_CONF_OPTS = \ + --with-sdl-prefix=$(STAGING_DIR)/usr \ + --disable-sdltest \ + --enable-static + +# Even though x86_64 processors support MMX, the MMX-specific assembly +# code in sdl_gfx is IA32 specific, and does not build for x86_64. +ifeq ($(BR2_i386)$(BR2_X86_CPU_HAS_MMX),yy) +SDL_GFX_CONF_OPTS += --enable-mmx +else +SDL_GFX_CONF_OPTS += --disable-mmx +endif + +$(eval $(autotools-package)) diff --git a/package/sdl_image/Config.in b/package/sdl_image/Config.in new file mode 100644 index 00000000..c719d441 --- /dev/null +++ b/package/sdl_image/Config.in @@ -0,0 +1,57 @@ +menuconfig BR2_PACKAGE_SDL_IMAGE + bool "SDL_image" + depends on BR2_PACKAGE_SDL + help + SDL_image is an image file loading library. It loads images + as SDL surfaces, and supports the following formats: + BMP, GIF, JPEG, LBM, PCX, PNG, PNM, TGA, TIFF, XCF, XPM, XV. + + http://www.libsdl.org/projects/SDL_image/ + +if BR2_PACKAGE_SDL_IMAGE + +config BR2_PACKAGE_SDL_IMAGE_BMP + bool "BMP support" + default y + +config BR2_PACKAGE_SDL_IMAGE_GIF + bool "GIF support" + +config BR2_PACKAGE_SDL_IMAGE_JPEG + bool "JPEG support" + select BR2_PACKAGE_JPEG + +config BR2_PACKAGE_SDL_IMAGE_LBM + bool "LBM support" + +config BR2_PACKAGE_SDL_IMAGE_PCX + bool "PCX support" + +config BR2_PACKAGE_SDL_IMAGE_PNG + bool "PNG support" + select BR2_PACKAGE_LIBPNG + +config BR2_PACKAGE_SDL_IMAGE_PNM + bool "PNM support" + +config BR2_PACKAGE_SDL_IMAGE_TARGA + bool "TARGA support" + +config BR2_PACKAGE_SDL_IMAGE_TIFF + bool "TIFF support" + select BR2_PACKAGE_TIFF + +config BR2_PACKAGE_SDL_IMAGE_WEBP + bool "WEBP support" + select BR2_PACKAGE_WEBP + +config BR2_PACKAGE_SDL_IMAGE_XCF + bool "XCF support" + +config BR2_PACKAGE_SDL_IMAGE_XPM + bool "XPM support" + +config BR2_PACKAGE_SDL_IMAGE_XV + bool "XV support" + +endif diff --git a/package/sdl_image/sdl_image.hash b/package/sdl_image/sdl_image.hash new file mode 100644 index 00000000..a0a2709f --- /dev/null +++ b/package/sdl_image/sdl_image.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 abaf55f6c3bbd7c7271b523767f360317f1fbb2a79e74c38c0523a123970ac89 sdl_image-5d792dde2f764daf15dc48521774a3354330db69.tar.gz +sha256 653649692218d56e5807bdc5b72f51aa6067bc44d30b757e18c03b32bcaf98da COPYING diff --git a/package/sdl_image/sdl_image.mk b/package/sdl_image/sdl_image.mk new file mode 100644 index 00000000..dafb64df --- /dev/null +++ b/package/sdl_image/sdl_image.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# sdl_image +# +################################################################################ + +# The latest officially released version of SDL_image is 1.2.12, released in 2012. +# Since then, there have been many bugfixes, including security fixes. +# +# This commit points to the SDL-1.2 branch from 14 Mar 2021. +SDL_IMAGE_VERSION = 5d792dde2f764daf15dc48521774a3354330db69 +SDL_IMAGE_SITE = $(call github,libsdl-org,SDL_image,$(SDL_IMAGE_VERSION)) +SDL_IMAGE_INSTALL_STAGING = YES +SDL_IMAGE_LICENSE = Zlib +SDL_IMAGE_LICENSE_FILES = COPYING +SDL_IMAGE_CPE_ID_VENDOR = libsdl + +SDL_IMAGE_CONF_OPTS = \ + --with-sdl-prefix=$(STAGING_DIR)/usr \ + --with-sdl-exec-prefix=$(STAGING_DIR)/usr \ + --disable-sdltest \ + --disable-static \ + --disable-jpg-shared \ + --disable-png-shared \ + --disable-tif-shared \ + --disable-webp-shared \ + --enable-bmp=$(if $(BR2_PACKAGE_SDL_IMAGE_BMP),yes,no) \ + --enable-gif=$(if $(BR2_PACKAGE_SDL_IMAGE_GIF),yes,no) \ + --enable-jpg=$(if $(BR2_PACKAGE_SDL_IMAGE_JPEG),yes,no) \ + --enable-lbm=$(if $(BR2_PACKAGE_SDL_IMAGE_LBM),yes,no) \ + --enable-pcx=$(if $(BR2_PACKAGE_SDL_IMAGE_PCX),yes,no) \ + --enable-png=$(if $(BR2_PACKAGE_SDL_IMAGE_PNG),yes,no) \ + --enable-pnm=$(if $(BR2_PACKAGE_SDL_IMAGE_PNM),yes,no) \ + --enable-tga=$(if $(BR2_PACKAGE_SDL_IMAGE_TARGA),yes,no) \ + --enable-tif=$(if $(BR2_PACKAGE_SDL_IMAGE_TIFF),yes,no) \ + --enable-webp=$(if $(BR2_PACKAGE_SDL_IMAGE_WEBP),yes,no) \ + --enable-xcf=$(if $(BR2_PACKAGE_SDL_IMAGE_XCF),yes,no) \ + --enable-xpm=$(if $(BR2_PACKAGE_SDL_IMAGE_XPM),yes,no) \ + --enable-xv=$(if $(BR2_PACKAGE_SDL_IMAGE_XV),yes,no) + +SDL_IMAGE_DEPENDENCIES = sdl \ + $(if $(BR2_PACKAGE_SDL_IMAGE_JPEG),jpeg) \ + $(if $(BR2_PACKAGE_SDL_IMAGE_PNG),libpng) \ + $(if $(BR2_PACKAGE_SDL_IMAGE_TIFF),tiff) \ + $(if $(BR2_PACKAGE_SDL_IMAGE_WEBP),webp) + +HOST_SDL_IMAGE_CONF_OPTS = \ + --with-sdl-prefix=$(HOST_DIR) \ + --with-sdl-exec-prefix=$(HOST_DIR) \ + --disable-sdltest \ + --disable-static \ + --disable-jpg-shared \ + --disable-png-shared \ + --disable-tif-shared \ + --disable-webp-shared + +HOST_SDL_IMAGE_DEPENDENCIES = host-libjpeg host-libpng host-sdl + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/sdl_mixer/0001-Add-Libs.private-field-to-pkg-config-file.patch b/package/sdl_mixer/0001-Add-Libs.private-field-to-pkg-config-file.patch new file mode 100644 index 00000000..569fb550 --- /dev/null +++ b/package/sdl_mixer/0001-Add-Libs.private-field-to-pkg-config-file.patch @@ -0,0 +1,63 @@ +From abf3a1b9c9cdacb574c2b9cdbf3f2a5e18c39ab9 Mon Sep 17 00:00:00 2001 +From: Rodrigo Rebello +Date: Mon, 29 Feb 2016 22:53:49 -0300 +Subject: [PATCH] Add 'Libs.private' field to pkg-config file + +In order to support static linking, SDL_mixer.pc should include a +'Libs.private' field listing all the libraries that SDL_mixer requires. + +This patch adds such a field and also modifies configure.ac so that +EXTRA_LDFLAGS (which is now also used as the value of 'Libs.private') +no longer includes SDL_LIBS. This is done so as to prevent libraries +required by SDL from being listed twice when 'pkg-config --libs --static +SDL_mixer' is run (they're already shown because of the 'Requires: sdl' +line in SDL_mixer.pc). Makefile.in is also adjusted accordingly. + +Upstream status: submitted +https://bugzilla.libsdl.org/show_bug.cgi?id=3278 + +Signed-off-by: Rodrigo Rebello +--- + Makefile.in | 2 +- + SDL_mixer.pc.in | 1 + + configure.ac | 1 - + 3 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 027a99b..18015a2 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -61,7 +61,7 @@ $(objects): + .PHONY: all install install-hdrs install-lib install-bin uninstall uninstall-hdrs uninstall-lib uninstall-bin clean distclean dist + + $(objects)/$(TARGET): $(OBJECTS) $(VERSION_OBJECTS) +- $(LIBTOOL) --mode=link $(CC) -o $@ $(OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS) ++ $(LIBTOOL) --mode=link $(CC) -o $@ $(OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(SDL_LIBS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS) + + $(objects)/playwave$(EXE): $(objects)/playwave.lo $(objects)/$(TARGET) + $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(SDL_LIBS) $(LDFLAGS) $(objects)/$(TARGET) +diff --git a/SDL_mixer.pc.in b/SDL_mixer.pc.in +index 1c4965d..d793521 100644 +--- a/SDL_mixer.pc.in ++++ b/SDL_mixer.pc.in +@@ -8,5 +8,6 @@ Description: mixer library for Simple DirectMedia Layer + Version: @VERSION@ + Requires: sdl >= @SDL_VERSION@ + Libs: -L${libdir} -lSDL_mixer ++Libs.private: @EXTRA_LDFLAGS@ + Cflags: -I${includedir}/SDL + +diff --git a/configure.ac b/configure.ac +index 01a3d83..3ad3b4f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -200,7 +200,6 @@ AM_PATH_SDL($SDL_VERSION, + AC_MSG_ERROR([*** SDL version $SDL_VERSION not found!]) + ) + EXTRA_CFLAGS="$EXTRA_CFLAGS $SDL_CFLAGS" +-EXTRA_LDFLAGS="$EXTRA_LDFLAGS $SDL_LIBS" + + dnl Check for math library + AC_CHECK_LIB(m, pow, [LIBM="-lm"]) +-- +2.27.0 diff --git a/package/sdl_mixer/0002-configure__set_macro_directory.patch b/package/sdl_mixer/0002-configure__set_macro_directory.patch new file mode 100644 index 00000000..cad9baa9 --- /dev/null +++ b/package/sdl_mixer/0002-configure__set_macro_directory.patch @@ -0,0 +1,36 @@ +# HG changeset patch +# User "Yann E. MORIN" +# Date 1581183281 -3600 +# Sat Feb 08 18:34:41 2020 +0100 +# Node ID 753a1f394620056c35790a571ff5f7c248445943 +# Parent eb5f08bf9994bf5164ca68015f2e030c2c9dddcd +configure: set macro directory + +Setting the macro directory in configure.in, rather than specifying it +on the command line, ensures that it is properly searched in the correct +order, and that autoreconf properly updates our macros with the newer +system ones, if any. + +Fixes: + http://autobuild.buildroot.org/results/63a/63ae0bddb3c4436efe967c318e299047f496c5a5/build-end.log + + libtool: Version mismatch error. This is libtool 2.4.6, but the + libtool: definition of this LT_INIT comes from libtool 2.2.6. + libtool: You should recreate aclocal.m4 with macros from libtool 2.4.6 + libtool: and run autoconf again. + +Signed-off-by: Yann E. MORIN +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi + +diff --git a/configure.ac b/configure.ac +--- a/configure.ac ++++ b/configure.ac +@@ -2,6 +2,7 @@ dnl Process this file with autoconf to produce a configure script. + AC_INIT + AC_CONFIG_SRCDIR([mixer.c]) + AC_CONFIG_AUX_DIR(build-scripts) ++AC_CONFIG_MACRO_DIR([acinclude]) + + dnl Set various version strings - taken gratefully from the GTk sources + diff --git a/package/sdl_mixer/0003-configure.ac-fix-static-linking-with-tremor.patch b/package/sdl_mixer/0003-configure.ac-fix-static-linking-with-tremor.patch new file mode 100644 index 00000000..c3c7f19e --- /dev/null +++ b/package/sdl_mixer/0003-configure.ac-fix-static-linking-with-tremor.patch @@ -0,0 +1,24 @@ +From 02e247a0b820753977315786087b969f3b2c53da Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 10 Apr 2021 11:50:17 +0200 +Subject: [PATCH] configure.ac: fix linking with tremor + +backported from: https://github.com/libsdl-org/SDL_mixer/pull/312 +Signed-off-by: Fabrice Fontaine +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index c8dbcdb..93d5db0 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -453,7 +453,7 @@ if test x$enable_music_ogg = xyes; then + echo "-- dynamic libvorbisidec -> $ogg_lib" + EXTRA_CFLAGS="$EXTRA_CFLAGS -DOGG_DYNAMIC=\\\"$ogg_lib\\\"" + else +- EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lvorbisidec -lvorbis" ++ EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lvorbisidec" + fi + else + AC_MSG_WARN([*** Unable to find Ogg Vorbis Tremor library (http://www.xiph.org/)]) diff --git a/package/sdl_mixer/Config.in b/package/sdl_mixer/Config.in new file mode 100644 index 00000000..a886b7c1 --- /dev/null +++ b/package/sdl_mixer/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_SDL_MIXER + bool "SDL_mixer" + depends on BR2_PACKAGE_SDL + help + SDL_mixer is a sample multi-channel audio mixer library. + It supports any number of simultaneously playing channels of + 16 bit stereo audio, plus a single channel of music, mixed + by the popular MikMod MOD, Timidity MIDI, Ogg Vorbis, and + SMPEG MP3 libraries. + + http://www.libsdl.org/projects/SDL_mixer/ + +if BR2_PACKAGE_SDL_MIXER + +config BR2_PACKAGE_SDL_MIXER_MIDI_TIMIDITY + bool "MIDI support with built-in Timidity synth" + help + Support MIDI audio using the built-in synth based on Timidity. + You will need MIDI instruments installed in the filesystem. + +endif diff --git a/package/sdl_mixer/sdl_mixer.hash b/package/sdl_mixer/sdl_mixer.hash new file mode 100644 index 00000000..57917089 --- /dev/null +++ b/package/sdl_mixer/sdl_mixer.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b3c0f36500b23a6f5832d472f3e07b74f1d3f6bd00bf6700bc5e99babc9ba2ab sdl_mixer-d1725fcb7c4e987aeb7ecdc94cb8b6375b702170.tar.gz +sha256 bc4c3bc32b311044d81c32b5e5402a6bc971a3b235850bb63445ec14bb6fe59e COPYING diff --git a/package/sdl_mixer/sdl_mixer.mk b/package/sdl_mixer/sdl_mixer.mk new file mode 100644 index 00000000..049ce15d --- /dev/null +++ b/package/sdl_mixer/sdl_mixer.mk @@ -0,0 +1,74 @@ +################################################################################ +# +# sdl_mixer +# +################################################################################ + +# The latest officially released version of SDL_mixer is 1.2.12, released in 2012. +# Since then, there have been many bugfixes on master. +# +# This commit points to the SDL-1.2 branch from 15 Mar 2021. +SDL_MIXER_VERSION = d1725fcb7c4e987aeb7ecdc94cb8b6375b702170 +SDL_MIXER_SITE = $(call github,libsdl-org,SDL_mixer,$(SDL_MIXER_VERSION)) +SDL_MIXER_LICENSE = Zlib +SDL_MIXER_LICENSE_FILES = COPYING + +# Package does not build in parallel due to improper make rules +SDL_MIXER_MAKE = $(MAKE1) + +SDL_MIXER_INSTALL_STAGING = YES +SDL_MIXER_DEPENDENCIES = sdl + +# We're patching configure.in, so we need to autoreconf +SDL_MIXER_AUTORECONF = YES + +SDL_MIXER_CONF_OPTS = \ + --with-sdl-prefix=$(STAGING_DIR)/usr \ + --disable-music-mod \ + --disable-music-mp3 \ + --disable-music-flac # configure script fails when cross compiling + +ifeq ($(BR2_PACKAGE_FLUIDSYNTH),y) +SDL_MIXER_DEPENDENCIES += fluidsynth +SDL_MIXER_CONF_OPTS += \ + --enable-music-midi \ + --enable-music-fluidsynth-midi +SDL_MIXER_HAS_MIDI = YES +endif + +ifeq ($(BR2_PACKAGE_SDL_MIXER_MIDI_TIMIDITY),y) +SDL_MIXER_CONF_OPTS += \ + --enable-music-midi \ + --enable-music-timidity-midi +SDL_MIXER_HAS_MIDI = YES +endif + +ifneq ($(SDL_MIXER_HAS_MIDI),YES) +SDL_MIXER_CONF_OPTS += --disable-music-midi +endif + +ifeq ($(BR2_PACKAGE_LIBMAD),y) +SDL_MIXER_CONF_OPTS += --enable-music-mp3-mad-gpl +SDL_MIXER_DEPENDENCIES += libmad +else +SDL_MIXER_CONF_OPTS += --disable-music-mp3-mad-gpl +endif + +ifeq ($(BR2_PACKAGE_LIBMODPLUG),y) +SDL_MIXER_CONF_OPTS += --enable-music-mod-modplug +SDL_MIXER_DEPENDENCIES += host-pkgconf libmodplug +else +SDL_MIXER_CONF_OPTS += --disable-music-mod-modplug +endif + +ifeq ($(BR2_PACKAGE_TREMOR),y) +SDL_MIXER_CONF_OPTS += --enable-music-ogg-tremor +SDL_MIXER_DEPENDENCIES += tremor +else ifeq ($(BR2_PACKAGE_LIBVORBIS),y) +SDL_MIXER_CONF_OPTS += --enable-music-ogg +SDL_MIXER_DEPENDENCIES += libvorbis +else +SDL_MIXER_CONF_OPTS += --disable-music-ogg +endif + +$(eval $(autotools-package)) diff --git a/package/sdl_net/Config.in b/package/sdl_net/Config.in new file mode 100644 index 00000000..2d9cbe1c --- /dev/null +++ b/package/sdl_net/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SDL_NET + bool "SDL_net" + depends on BR2_PACKAGE_SDL + help + SDL_net is a small, low-level, cross-platform network + library, that can be used with the Simple DirectMedia Layer + library (SDL). + + http://www.libsdl.org/projects/SDL_net/ diff --git a/package/sdl_net/sdl_net.hash b/package/sdl_net/sdl_net.hash new file mode 100644 index 00000000..e2b64336 --- /dev/null +++ b/package/sdl_net/sdl_net.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 7549dbc91813c37986300e7f34e63a068b42fd91abb41cabcaca63b4c7404ea5 SDL_net-620b0ba7dd84a0fdbd4cc8ef1b2be1cc10f90ae3.tar.gz +sha256 e542f822a6cd82deccf82cf0f50192917b0158d725a6bc6348ab1ccdd890ecbe COPYING diff --git a/package/sdl_net/sdl_net.mk b/package/sdl_net/sdl_net.mk new file mode 100644 index 00000000..5f014af1 --- /dev/null +++ b/package/sdl_net/sdl_net.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# sdl_net +# +################################################################################ + +# The latest officially released version of SDL_image is 1.2.8, released in 2012. +# Since then, there have been several bugfixes. +# +# This commit points to the SDL-1.2 branch from 18 Feb 2021. +SDL_NET_VERSION = 620b0ba7dd84a0fdbd4cc8ef1b2be1cc10f90ae3 +SDL_NET_SITE = $(call github,libsdl-org,SDL_net,$(SDL_NET_VERSION)) +SDL_NET_SOURCE = SDL_net-$(SDL_NET_VERSION).tar.gz +SDL_NET_LICENSE = Zlib +SDL_NET_LICENSE_FILES = COPYING + +SDL_NET_CONF_OPTS = \ + --with-sdl-prefix=$(STAGING_DIR)/usr \ + --with-sdl-exec-prefix=$(STAGING_DIR)/usr + +SDL_NET_INSTALL_STAGING = YES + +SDL_NET_DEPENDENCIES = sdl + +$(eval $(autotools-package)) diff --git a/package/sdl_sound/0001-fix-constness.patch b/package/sdl_sound/0001-fix-constness.patch new file mode 100644 index 00000000..1f27a071 --- /dev/null +++ b/package/sdl_sound/0001-fix-constness.patch @@ -0,0 +1,16 @@ +decoders/speex: fix constness of speex mode + +Signed-off-by: "Yann E. MORIN" + +diff -durN sdl_sound-1.0.3.orig/decoders/speex.c sdl_sound-1.0.3/decoders/speex.c +--- sdl_sound-1.0.3.orig/decoders/speex.c 2014-11-17 19:40:09.543553556 +0100 ++++ sdl_sound-1.0.3/decoders/speex.c 2014-11-17 19:40:37.119864580 +0100 +@@ -124,7 +124,7 @@ + + static int process_header(speex_t *speex, Sound_Sample *sample) + { +- SpeexMode *mode; ++ const SpeexMode * mode; + SpeexHeader *hptr; + SpeexHeader header; + int enh_enabled = SPEEX_USE_PERCEPTUAL_ENHANCER; diff --git a/package/sdl_sound/0002-remove-werror.patch b/package/sdl_sound/0002-remove-werror.patch new file mode 100644 index 00000000..c08bbdb8 --- /dev/null +++ b/package/sdl_sound/0002-remove-werror.patch @@ -0,0 +1,29 @@ +Do not add -Werror when --enable-debug is used + +Using -Werror causes some problems due to warnings in the SDL_sound +code, so let's disable it. + +We patch configure directly, because: + + 1/ configure.in doesn't autoreconf properly out of the box. + + 2/ the length of the configure or configure.in patch would be exactly + the same (one line), or maybe more for the configure.in patch if + we want the package to autoreconf properly + + 3/ the patch will never go upstream, because upstream is dead. + +Signed-off-by: Thomas Petazzoni + +Index: b/configure +=================================================================== +--- a/configure ++++ b/configure +@@ -19561,7 +19561,6 @@ + else + CFLAGS="-O0" + fi +- CFLAGS="$CFLAGS -Werror" + + cat >>confdefs.h <<\_ACEOF + #define DEBUG 1 diff --git a/package/sdl_sound/0003-renamed-physfs-export.patch b/package/sdl_sound/0003-renamed-physfs-export.patch new file mode 100644 index 00000000..3aeded32 --- /dev/null +++ b/package/sdl_sound/0003-renamed-physfs-export.patch @@ -0,0 +1,32 @@ +This patch is taken from the Arch Linux User Repository, see: +https://aur.archlinux.org/packages/sdl_sound-patched-hg/ + +Signed-off-by: Sam Bobroff + +diff -ru SDL_sound.orig/playsound/physfsrwops.h SDL_sound/playsound/physfsrwops.h +--- SDL_sound.orig/playsound/physfsrwops.h 2014-01-11 06:28:35.494936000 +0100 ++++ SDL_sound/playsound/physfsrwops.h 2014-01-11 06:31:38.315675483 +0100 +@@ -29,6 +29,11 @@ + extern "C" { + #endif + ++/* renamed in physfs dev, add alias */ ++#ifdef PHYSFS_DECL ++#define __EXPORT__ PHYSFS_DECL ++#endif ++ + /** + * Open a platform-independent filename for reading, and make it accessible + * via an SDL_RWops structure. The file will be closed in PhysicsFS when the +@@ -77,6 +82,11 @@ + */ + __EXPORT__ SDL_RWops *PHYSFSRWOPS_makeRWops(PHYSFS_file *handle); + ++/* renamed in physfs dev, remove alias */ ++#ifdef PHYSFS_DECL ++#undef __EXPORT__ ++#endif ++ + #ifdef __cplusplus + } + #endif diff --git a/package/sdl_sound/Config.in b/package/sdl_sound/Config.in new file mode 100644 index 00000000..6da19853 --- /dev/null +++ b/package/sdl_sound/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_SDL_SOUND + bool "SDL_sound" + depends on BR2_PACKAGE_SDL + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + SDL_sound is a library that handles the decoding of several + popular sound file formats, such as .WAV and .MP3. + It is meant to make the programmer's sound playback tasks + simpler. The programmer gives SDL_sound a filename, or feeds + it data directly from one of many sources, and then reads the + decoded waveform data back at her leisure. + + http://icculus.org/SDL_sound/ + +if BR2_PACKAGE_SDL_SOUND + +config BR2_PACKAGE_SDL_SOUND_PLAYSOUND + bool "install playsound tool" + help + Enable this option to install the playsound/playsound_simple + tools to target. + +endif diff --git a/package/sdl_sound/sdl_sound.hash b/package/sdl_sound/sdl_sound.hash new file mode 100644 index 00000000..1ea76b0b --- /dev/null +++ b/package/sdl_sound/sdl_sound.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3999fd0bbb485289a52be14b2f68b571cb84e380cc43387eadf778f64c79e6df SDL_sound-1.0.3.tar.gz +sha256 2a781dd2f8c5435c59cfa3b79dfea1c1d7df676ed318ecc802139f76ac345d07 COPYING diff --git a/package/sdl_sound/sdl_sound.mk b/package/sdl_sound/sdl_sound.mk new file mode 100644 index 00000000..c6028e79 --- /dev/null +++ b/package/sdl_sound/sdl_sound.mk @@ -0,0 +1,74 @@ +################################################################################ +# +# sdl_sound +# +################################################################################ + +SDL_SOUND_VERSION = 1.0.3 +SDL_SOUND_SOURCE = SDL_sound-$(SDL_SOUND_VERSION).tar.gz +SDL_SOUND_SITE = http://icculus.org/SDL_sound/downloads +SDL_SOUND_LICENSE = LGPL-2.1+ +SDL_SOUND_LICENSE_FILES = COPYING +SDL_SOUND_INSTALL_STAGING = YES +SDL_SOUND_DEPENDENCIES = sdl +SDL_SOUND_CONF_OPTS = \ + --with-sdl-prefix=$(STAGING_DIR)/usr \ + --with-sdl-exec-prefix=$(STAGING_DIR)/usr \ + --disable-sdltest \ + --enable-static + +ifneq ($(BR2_ENABLE_LOCALE),y) +SDL_SOUND_DEPENDENCIES += libiconv +endif + +# optional dependencies +ifeq ($(BR2_PACKAGE_FLAC)$(BR2_PACKAGE_LIBOGG),yy) +SDL_SOUND_CONF_OPTS += --enable-flac +SDL_SOUND_DEPENDENCIES += flac libogg +else +SDL_SOUND_CONF_OPTS += --disable-flac +endif + +ifeq ($(BR2_PACKAGE_LIBMODPLUG),y) +SDL_SOUND_CONF_OPTS += --enable-modplug +SDL_SOUND_DEPENDENCIES += libmodplug +else +SDL_SOUND_CONF_OPTS += --disable-modplug +endif + +ifeq ($(BR2_PACKAGE_LIBVORBIS),y) +SDL_SOUND_CONF_OPTS += --enable-ogg +SDL_SOUND_DEPENDENCIES += libvorbis +else +SDL_SOUND_CONF_OPTS += --disable-ogg +endif + +ifeq ($(BR2_PACKAGE_SPEEX),y) +SDL_SOUND_CONF_OPTS += --enable-speex +SDL_SOUND_DEPENDENCIES += speex +else +SDL_SOUND_CONF_OPTS += --disable-speex +endif + +ifeq ($(BR2_PACKAGE_PHYSFS),y) +SDL_SOUND_CONF_OPTS += --enable-physfs +SDL_SOUND_DEPENDENCIES += physfs +else +SDL_SOUND_CONF_OPTS += --disable-physfs +endif + +ifeq ($(BR2_X86_CPU_HAS_MMX),y) +SDL_SOUND_CONF_OPTS += --enable-mmx +else +SDL_SOUND_CONF_OPTS += --disable-mmx +endif + +define SDL_SOUND_REMOVE_PLAYSOUND + rm $(addprefix $(TARGET_DIR)/usr/bin/,playsound playsound_simple) +endef + +ifneq ($(BR2_PACKAGE_SDL_SOUND_PLAYSOUND),y) +SDL_SOUND_POST_INSTALL_TARGET_HOOKS += SDL_SOUND_REMOVE_PLAYSOUND +endif + +$(eval $(autotools-package)) diff --git a/package/sdl_ttf/Config.in b/package/sdl_ttf/Config.in new file mode 100644 index 00000000..efc92e5a --- /dev/null +++ b/package/sdl_ttf/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SDL_TTF + bool "SDL_TTF" + depends on BR2_PACKAGE_SDL + select BR2_PACKAGE_FREETYPE + help + SDL_ttf is a sample TrueType font library. It allows you to + use TrueType fonts in your SDL applications. + + http://www.libsdl.org/projects/SDL_ttf/ diff --git a/package/sdl_ttf/sdl_ttf.hash b/package/sdl_ttf/sdl_ttf.hash new file mode 100644 index 00000000..7c5a5326 --- /dev/null +++ b/package/sdl_ttf/sdl_ttf.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c24e3b48f5ffa5afb3256d23700506fad72117ac2834147c2e46ee94c3cb12b5 sdl_ttf-70b2940cc75e92aab02a67d2f827caf2836a2c74.tar.gz +sha256 b609721d3d4ac67facaf86f068c8b311b6c5f6cef89b6d84268aa38b7867ab7b COPYING diff --git a/package/sdl_ttf/sdl_ttf.mk b/package/sdl_ttf/sdl_ttf.mk new file mode 100644 index 00000000..c396830d --- /dev/null +++ b/package/sdl_ttf/sdl_ttf.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# sdl_ttf +# +################################################################################ + +# There is unlikely to be a new SDL_ttf release for the foreseeable future: +# https://bugzilla.libsdl.org/show_bug.cgi?id=5344#c1 +SDL_TTF_VERSION = 70b2940cc75e92aab02a67d2f827caf2836a2c74 +SDL_TTF_SITE = $(call github,libsdl-org,SDL_ttf,$(SDL_TTF_VERSION)) +SDL_TTF_LICENSE = Zlib +SDL_TTF_LICENSE_FILES = COPYING + +SDL_TTF_INSTALL_STAGING = YES +SDL_TTF_DEPENDENCIES = sdl freetype +SDL_TTF_CONF_OPTS = \ + --without-x \ + --with-freetype-prefix=$(STAGING_DIR)/usr \ + --with-sdl-prefix=$(STAGING_DIR)/usr + +SDL_TTF_MAKE_OPTS = \ + INCLUDES="-I$(STAGING_DIR)/usr/include/SDL" \ + LDFLAGS="-L$(STAGING_DIR)/usr/lib" + +$(eval $(autotools-package)) diff --git a/package/sdparm/Config.in b/package/sdparm/Config.in new file mode 100644 index 00000000..cec0f840 --- /dev/null +++ b/package/sdparm/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_SDPARM + bool "sdparm" + help + Utility to accesses SCSI device parameters. + + http://sg.danny.cz/sg/sdparm.html diff --git a/package/sdparm/sdparm.hash b/package/sdparm/sdparm.hash new file mode 100644 index 00000000..22d6b5b8 --- /dev/null +++ b/package/sdparm/sdparm.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 7dc9e148cef22744e00809dad21b59ac544e3615001bc1b2399978f73e1d58ca sdparm-1.10.tar.xz +sha256 4f98444e14adb18a94a65c3ded5f0dad42d382c6a2288b593a2d5bd5ecc4f46d COPYING diff --git a/package/sdparm/sdparm.mk b/package/sdparm/sdparm.mk new file mode 100644 index 00000000..b9fac518 --- /dev/null +++ b/package/sdparm/sdparm.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# sdparm +# +################################################################################ + +SDPARM_VERSION = 1.10 +SDPARM_SOURCE = sdparm-$(SDPARM_VERSION).tar.xz +SDPARM_SITE = http://sg.danny.cz/sg/p +SDPARM_LICENSE = BSD-3-Clause +SDPARM_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_SG3_UTILS),y) +SDPARM_DEPENDENCIES += sg3_utils +else +SDPARM_CONF_OPTS += --disable-libsgutils +endif + +$(eval $(autotools-package)) diff --git a/package/seatd/Config.in b/package/seatd/Config.in new file mode 100644 index 00000000..5473b237 --- /dev/null +++ b/package/seatd/Config.in @@ -0,0 +1,23 @@ +menuconfig BR2_PACKAGE_SEATD + bool "seatd" + select BR2_PACKAGE_SEATD_BUILTIN \ + if !BR2_PACKAGE_SYSTEMD_LOGIND && !BR2_PACKAGE_SEATD_DAEMON + help + Seat management daemon and support library. + + https://git.sr.ht/~kennylevinsen/seatd + +if BR2_PACKAGE_SEATD + +config BR2_PACKAGE_SEATD_BUILTIN + bool "builtin backend" + help + Builtin in-process seatd implementation inside libseat. + +config BR2_PACKAGE_SEATD_DAEMON + bool "seatd daemon" + depends on BR2_USE_MMU # fork() + help + Build the seatd daemon and support for it inside libseat. + +endif diff --git a/package/seatd/S70seatd b/package/seatd/S70seatd new file mode 100755 index 00000000..32bdc40f --- /dev/null +++ b/package/seatd/S70seatd @@ -0,0 +1,46 @@ +#! /bin/sh + +DAEMON="seatd" +DAEMON_EXE="/usr/bin/${DAEMON}" +PIDFILE="/run/${DAEMON}.pid" + +start() { + printf 'Starting %s: ' "${DAEMON}" + start-stop-daemon -S -x "${DAEMON_EXE}" -p "${PIDFILE}" -m -b -- -g video + status=$? + if [ "$status" -eq 0 ]; then + echo OK + else + echo FAIL + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "${DAEMON}" + start-stop-daemon -K -x "${DAEMON_EXE}" -p "${PIDFILE}" + status=$? + if [ "$status" -eq 0 ]; then + echo OK + else + echo FAIL + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "${1}" in + start|stop|restart) + "${1}";; + reload) + restart;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 + ;; +esac diff --git a/package/seatd/seatd.hash b/package/seatd/seatd.hash new file mode 100644 index 00000000..e1db897d --- /dev/null +++ b/package/seatd/seatd.hash @@ -0,0 +1,5 @@ +# Calculated locally +sha256 a562a44ee33ccb20954a1c1ec9a90ecb2db7a07ad6b18d0ac904328efbcf65a0 0.8.0.tar.gz + +# License files +sha256 282a494803d666616bd726e0279636b5f6a31387ae19a707459074050f2600d3 LICENSE diff --git a/package/seatd/seatd.mk b/package/seatd/seatd.mk new file mode 100644 index 00000000..27f3c864 --- /dev/null +++ b/package/seatd/seatd.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# seatd +# +################################################################################ + +SEATD_VERSION = 0.8.0 +SEATD_SOURCE = $(SEATD_VERSION).tar.gz +SEATD_SITE = https://git.sr.ht/~kennylevinsen/seatd/archive +SEATD_LICENSE = MIT +SEATD_LICENSE_FILES = LICENSE +SEATD_INSTALL_STAGING = YES + +SEATD_CONF_OPTS += \ + -Dman-pages=disabled \ + -Dexamples=disabled \ + -Dwerror=false + +ifeq ($(BR2_PACKAGE_SYSTEMD_LOGIND),y) +SEATD_CONF_OPTS += -Dlibseat-logind=systemd +SEATD_DEPENDENCIES += systemd +else +SEATD_CONF_OPTS += -Dlibseat-logind=disabled +endif + +ifeq ($(BR2_PACKAGE_SEATD_BUILTIN),y) +SEATD_CONF_OPTS += -Dlibseat-builtin=enabled +else +SEATD_CONF_OPTS += -Dlibseat-builtin=disabled +endif + +ifeq ($(BR2_PACKAGE_SEATD_DAEMON),y) +SEATD_CONF_OPTS += -Dlibseat-seatd=enabled -Dserver=enabled + +define SEATD_USERS + - - seat -1 - - - - - +endef + +define SEATD_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D $(SEATD_PKGDIR)/S70seatd \ + $(TARGET_DIR)/etc/init.d/S70seatd +endef + +define SEATD_INSTALL_INIT_SYSTEMD + $(INSTALL) -m 0644 -D $(@D)/contrib/systemd/seatd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/seatd.service +endef + +else +SEATD_CONF_OPTS += -Dlibseat-seatd=disabled -Dserver=disabled +endif + +$(eval $(meson-package)) diff --git a/package/sed/Config.in b/package/sed/Config.in new file mode 100644 index 00000000..b8d182aa --- /dev/null +++ b/package/sed/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_SED + bool "sed" + depends on BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + sed (stream editor) is a non-interactive command-line text + editor. + + https://www.gnu.org/software/sed/ + +comment "sed needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/package/sed/sed.hash b/package/sed/sed.hash new file mode 100644 index 00000000..10e2c36d --- /dev/null +++ b/package/sed/sed.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +# https://ftp.gnu.org/gnu/sed/sed-4.9.tar.xz.sig +# with the key 155D3FC500C834486D1EEA677FD9FCCB000BEEEE +sha256 6e226b732e1cd739464ad6862bd1a1aba42d7982922da7a53519631d24975181 sed-4.9.tar.xz +# Locally calculated +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 COPYING diff --git a/package/sed/sed.mk b/package/sed/sed.mk new file mode 100644 index 00000000..81650836 --- /dev/null +++ b/package/sed/sed.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# sed +# +################################################################################ + +SED_VERSION = 4.9 +SED_SOURCE = sed-$(SED_VERSION).tar.xz +SED_SITE = $(BR2_GNU_MIRROR)/sed +SED_LICENSE = GPL-3.0 +SED_LICENSE_FILES = COPYING +SED_CPE_ID_VENDOR = gnu + +SED_CONF_OPTS = \ + --bindir=/bin \ + --libdir=/lib \ + --libexecdir=/usr/lib \ + --sysconfdir=/etc \ + --datadir=/usr/share \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --include=$(STAGING_DIR)/usr/include + +$(eval $(autotools-package)) diff --git a/package/sedutil/0001-Common-log.h-time-2-needs-time.h.patch b/package/sedutil/0001-Common-log.h-time-2-needs-time.h.patch new file mode 100644 index 00000000..9cf74b67 --- /dev/null +++ b/package/sedutil/0001-Common-log.h-time-2-needs-time.h.patch @@ -0,0 +1,37 @@ +From a7a48e1cda997afbfcdd985c594c3ec0516b6279 Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Tue, 25 Sep 2018 22:49:58 +0200 +Subject: [PATCH] Common/log.h: time(2) needs +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Otherwise the build fails with: + +In file included from ./linux/os.h:28:0, + from Common/DtaOptions.cpp:20: +./Common/log.h: In function ‘std::__cxx11::string NowTime()’: +./Common/log.h:349:12: error: ‘time’ was not declared in this scope + time(&t); + +Upstream-status: https://github.com/Drive-Trust-Alliance/sedutil/pull/250 +Signed-off-by: Peter Korsgaard +--- + Common/log.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Common/log.h b/Common/log.h +index 8c08c40..2b718ad 100644 +--- a/Common/log.h ++++ b/Common/log.h +@@ -341,6 +341,7 @@ inline std::string NowTime() { + + #else + ++#include + #include + + inline std::string NowTime() { +-- +2.11.0 + diff --git a/package/sedutil/0002-include-missing-cstdint.patch b/package/sedutil/0002-include-missing-cstdint.patch new file mode 100644 index 00000000..07a617c5 --- /dev/null +++ b/package/sedutil/0002-include-missing-cstdint.patch @@ -0,0 +1,31 @@ +From 927cd88cad7bea94c2eebecc18f7881f0defaccb Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Thu, 26 Jan 2023 23:36:29 -0800 +Subject: [PATCH] include missing + +gcc 13 moved some includes around and as a result +is no longer transitively included [1]. Explicitly include +it for uint{32,64}_t. + +[1] https://gcc.gnu.org/gcc-13/porting_to.html#header-dep-changes + +Signed-off-by: Khem Raj + +Upstream: https://github.com/Drive-Trust-Alliance/sedutil/pull/425 +Signed-off-by: Fabrice Fontaine +--- + Common/DtaOptions.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Common/DtaOptions.h b/Common/DtaOptions.h +index c012af1d..7530a0b7 100644 +--- a/Common/DtaOptions.h ++++ b/Common/DtaOptions.h +@@ -21,6 +21,7 @@ along with sedutil. If not, see . + #ifndef _DTAOPTIONS_H + #define _DTAOPTIONS_H + ++#include + /** Output modes */ + typedef enum _sedutiloutput { + sedutilNormal, diff --git a/package/sedutil/Config.in b/package/sedutil/Config.in new file mode 100644 index 00000000..e695f2be --- /dev/null +++ b/package/sedutil/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_SEDUTIL_ARCH_SUPPORTS + bool + # no big endian support + default y if BR2_arcle || BR2_arm || BR2_aarch64 \ + || BR2_i386 || BR2_microblazeel || BR2_mipsel \ + || BR2_mips64el || BR2_nios2 || BR2_powerpc64le \ + || BR2_sh4 || BR2_sh4a || BR2_x86_64 \ + || BR2_XTENSA_LITTLE_ENDIAN + +config BR2_PACKAGE_SEDUTIL + bool "sedutil" + depends on BR2_PACKAGE_SEDUTIL_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 # linux/nvme.h + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS # 4.4.1 headers + depends on BR2_INSTALL_LIBSTDCPP + help + The Drive Trust Alliance Self Encrypting Drive Utility, + allowing configuration the SEDs that comply with the + TCG OPAL 2.00 standard. + + https://github.com/Drive-Trust-Alliance/sedutil + +comment "sedutil needs a toolchain w/ C++, gcc >= 4.8, headers >= 3.12" + depends on BR2_PACKAGE_SEDUTIL_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 diff --git a/package/sedutil/sedutil.hash b/package/sedutil/sedutil.hash new file mode 100644 index 00000000..2ceb5db6 --- /dev/null +++ b/package/sedutil/sedutil.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 88016b93cbbef98fa6f5c4e6f58e6c871662b6a7f1fc8dc788c8599fa37a44f3 sedutil-1.20.0.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 Common/LICENSE.txt diff --git a/package/sedutil/sedutil.mk b/package/sedutil/sedutil.mk new file mode 100644 index 00000000..566ed4fa --- /dev/null +++ b/package/sedutil/sedutil.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# sedutil +# +################################################################################ + +SEDUTIL_VERSION = 1.20.0 +SEDUTIL_SITE = $(call github,Drive-Trust-Alliance,sedutil,$(SEDUTIL_VERSION)) +SEDUTIL_LICENSE = GPL-3.0+ +SEDUTIL_LICENSE_FILES = Common/LICENSE.txt +# Fetched from Github with no configure script +SEDUTIL_AUTORECONF = YES + +# Calls git to figure out version info +define SEDUTIL_SET_VERSION + echo '#define GIT_VERSION "$(SEDUTIL_VERSION)"' > $(@D)/linux/Version.h +endef +SEDUTIL_POST_CONFIGURE_HOOKS += SEDUTIL_SET_VERSION + +$(eval $(autotools-package)) diff --git a/package/selinux-python/0001-python-sepolgen-fix-ausearch-path.patch b/package/selinux-python/0001-python-sepolgen-fix-ausearch-path.patch new file mode 100644 index 00000000..31c5013d --- /dev/null +++ b/package/selinux-python/0001-python-sepolgen-fix-ausearch-path.patch @@ -0,0 +1,63 @@ +From 8610efc1610a4e9d4cbfa19ed4a519a6425aee70 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Tue, 9 May 2023 22:28:36 +0200 +Subject: [PATCH] python?sepolgen: fix ausearch path + +ausearch is not always isntalled in /sbin; some systems install it in +/usr/sbin, or it can also be locally installed in /usr/local/sbin. + +The python doc [0] suggests using shutil.which() to find the path where +a command is. which() returns None if the command is not found. If +ausearch is not found, that would result in an exception being raised by +Popen(): + TypeError: expected str, bytes or os.PathLike object, not NoneType + +This is not very informative of what actually failed... + +However, the doc suggests so for portability. In our case, the python +tools are only ever going to run on a Linux host (by their virtue of +dealing with SELinux), so the search will be reliably done by looking in +PATH, so we can let Popen() bubble the resolving of an unqualified +command, down to execvpe() (or the similar actual syscall of the exec*() +familly). If ausearch is then not found, Popen() raises an exception +that is wy more informative then: + FileNotFoundError: [Errno 2] No such file or directory: 'ausearch' + +[0] https://docs.python.org/3/library/subprocess.html#subprocess.Popen + +Signed-off-by: Adam Duskett +[yann.morin.1998@free.fr: + - let Popen() resolve from PATH + - rewrite commit log +] +Signed-off-by: Yann E. MORIN +Upstream: not submitted +--- + python/sepolgen/src/sepolgen/audit.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/python/sepolgen/src/sepolgen/audit.py b/python/sepolgen/src/sepolgen/audit.py +index 4adb851f..5eafa587 100644 +--- a/sepolgen/src/sepolgen/audit.py ++++ b/sepolgen/src/sepolgen/audit.py +@@ -41,7 +41,7 @@ def get_audit_boot_msgs(): + s = time.localtime(time.time() - off) + bootdate = time.strftime("%x", s) + boottime = time.strftime("%X", s) +- output = subprocess.Popen(["/sbin/ausearch", "-m", "AVC,USER_AVC,MAC_POLICY_LOAD,DAEMON_START,SELINUX_ERR", "-ts", bootdate, boottime], ++ output = subprocess.Popen(["ausearch", "-m", "AVC,USER_AVC,MAC_POLICY_LOAD,DAEMON_START,SELINUX_ERR", "-ts", bootdate, boottime], + stdout=subprocess.PIPE).communicate()[0] + if util.PY3: + output = util.decode_input(output) +@@ -56,7 +56,7 @@ def get_audit_msgs(): + string contain all of the audit messages returned by ausearch. + """ + import subprocess +- output = subprocess.Popen(["/sbin/ausearch", "-m", "AVC,USER_AVC,MAC_POLICY_LOAD,DAEMON_START,SELINUX_ERR"], ++ output = subprocess.Popen(["ausearch", "-m", "AVC,USER_AVC,MAC_POLICY_LOAD,DAEMON_START,SELINUX_ERR"], + stdout=subprocess.PIPE).communicate()[0] + if util.PY3: + output = util.decode_input(output) +-- +2.25.1 + diff --git a/package/selinux-python/Config.in b/package/selinux-python/Config.in new file mode 100644 index 00000000..ad50cc07 --- /dev/null +++ b/package/selinux-python/Config.in @@ -0,0 +1,51 @@ +config BR2_PACKAGE_SELINUX_PYTHON + bool "selinux-python" + depends on BR2_USE_MMU + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_PYTHON3 + help + A set of SELinux tools written in python that help with + managing a system with SELinux enabled. If no packages are + selected nothing will actually be built. + + https://github.com/SELinuxProject/selinux/wiki + +if BR2_PACKAGE_SELINUX_PYTHON + +config BR2_PACKAGE_SELINUX_PYTHON_AUDIT2ALLOW + bool "audit2allow" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # semodule-utils -> libsepol + select BR2_PACKAGE_CHECKPOLICY + select BR2_PACKAGE_SELINUX_PYTHON_SEPOLGEN + select BR2_PACKAGE_SEMODULE_UTILS + help + This module installs two programs: + + audit2allow - Generate SELinux policy allow/dontaudit rules + from logs of denied operations. + + audit2why - translates SELinux audit messages into a + description of why the access was denied (audit2allow -w) + +comment "audit2allow needs a toolchain w/ gcc 5" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +config BR2_PACKAGE_SELINUX_PYTHON_SEPOLGEN + bool "sepolgen" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # semodule-utils -> libsepol + select BR2_PACKAGE_SEMODULE_UTILS + help + This package contains a Python module that allows you to + generate an initial SELinux policy module template. + +comment "sepolgen needs a toolchain w/ gcc 5" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +endif + +comment "selinux-python packages 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/package/selinux-python/selinux-python.hash b/package/selinux-python/selinux-python.hash new file mode 100644 index 00000000..96be214f --- /dev/null +++ b/package/selinux-python/selinux-python.hash @@ -0,0 +1,5 @@ +# https://github.com/SELinuxProject/selinux/wiki/Releases +sha256 e2867d4cd26f9869c55216cc20ca7d10442491a0fbf256116ade99ec39426ec0 selinux-python-3.6.tar.gz + +# Hash for license file +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 LICENSE diff --git a/package/selinux-python/selinux-python.mk b/package/selinux-python/selinux-python.mk new file mode 100644 index 00000000..84fc9cbc --- /dev/null +++ b/package/selinux-python/selinux-python.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# selinux-python +# +################################################################################ + +SELINUX_PYTHON_VERSION = 3.6 +SELINUX_PYTHON_SITE = https://github.com/SELinuxProject/selinux/releases/download/$(SELINUX_PYTHON_VERSION) +SELINUX_PYTHON_LICENSE = GPL-2.0 +SELINUX_PYTHON_LICENSE_FILES = LICENSE +SELINUX_PYTHON_DEPENDENCIES = python3 + +SELINUX_PYTHON_MAKE_OPTS += \ + $(TARGET_CONFIGURE_OPTS) \ + ARCH="$(BR2_ARCH)" \ + LIBDIR="$(STAGING_DIR)/usr/lib" \ + PYTHONLIBDIR="usr/lib/python$(PYTHON3_VERSION_MAJOR)" + +ifeq ($(BR2_PACKAGE_SELINUX_PYTHON_AUDIT2ALLOW),y) +SELINUX_PYTHON_DEPENDENCIES += checkpolicy +SELINUX_PYTHON_MAKE_DIRS += audit2allow +endif + +ifeq ($(BR2_PACKAGE_SELINUX_PYTHON_SEPOLGEN),y) +SELINUX_PYTHON_MAKE_DIRS += sepolgen/src/sepolgen +endif + +define SELINUX_PYTHON_BUILD_CMDS + $(foreach d,$(SELINUX_PYTHON_MAKE_DIRS), + $(MAKE) -C $(@D)/$(d) $(SELINUX_PYTHON_MAKE_OPTS) \ + all + ) +endef + +define SELINUX_PYTHON_INSTALL_TARGET_CMDS + $(foreach d,$(SELINUX_PYTHON_MAKE_DIRS), + $(MAKE) -C $(@D)/$(d) $(SELINUX_PYTHON_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) install + ) +endef + +$(eval $(generic-package)) diff --git a/package/semodule-utils/Config.in b/package/semodule-utils/Config.in new file mode 100644 index 00000000..5d98dc61 --- /dev/null +++ b/package/semodule-utils/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_SEMODULE_UTILS + bool "semodule-utils" + depends on BR2_TOOLCHAIN_HAS_THREADS # libsepol + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # libsepol + select BR2_PACKAGE_LIBSEPOL + help + semodule-utils is a package that contains tools for handling + selinux modules. + + The package will install the following utilities: + * semodule_deps - Show the dependencies between SELinux + policy packages. + * semodule_expand - Expand a SELinux policy module package. + * semodule_link - Link SELinux policy module packages together + * semodule_package - Create a SELinux policy module package. + + https://github.com/SELinuxProject/selinux/wiki/Releases + +comment "semodule-utils needs a toolchain w/ threads, gcc >= 5" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 diff --git a/package/semodule-utils/semodule-utils.hash b/package/semodule-utils/semodule-utils.hash new file mode 100644 index 00000000..5e7d698f --- /dev/null +++ b/package/semodule-utils/semodule-utils.hash @@ -0,0 +1,5 @@ +# https://github.com/SELinuxProject/selinux/wiki/Releases +sha256 eedb88f2b2124e538f2d614be063c0d9ac3eacc0c51a4da44500ca1ed1ba16f4 semodule-utils-3.6.tar.gz + +# Hash for license file +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 LICENSE diff --git a/package/semodule-utils/semodule-utils.mk b/package/semodule-utils/semodule-utils.mk new file mode 100644 index 00000000..b58f7535 --- /dev/null +++ b/package/semodule-utils/semodule-utils.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# semodule-utils +# +################################################################################ + +SEMODULE_UTILS_VERSION = 3.6 +SEMODULE_UTILS_SITE = https://github.com/SELinuxProject/selinux/releases/download/$(SEMODULE_UTILS_VERSION) +SEMODULE_UTILS_LICENSE = GPL-2.0 +SEMODULE_UTILS_LICENSE_FILES = LICENSE +SEMODULE_UTILS_DEPENDENCIES = libsepol + +SEMODULE_UTILS_MAKE_OPTS += \ + $(TARGET_CONFIGURE_OPTS) \ + LIBSEPOLA=$(STAGING_DIR)/usr/lib/libsepol.a + +# We need to pass DESTDIR at build time because it's used by +# semodule-utils build system to find headers and libraries. +define SEMODULE_UTILS_BUILD_CMDS + $(MAKE) -C $(@D) $(SEMODULE_UTILS_MAKE_OPTS) DESTDIR=$(STAGING_DIR) all +endef + +define SEMODULE_UTILS_INSTALL_TARGET_CMDS + $(MAKE) -C $(@D) $(SEMODULE_UTILS_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/sentry-cli/0001-Disable-SSL-support-for-the-curl-module.patch b/package/sentry-cli/0001-Disable-SSL-support-for-the-curl-module.patch new file mode 100644 index 00000000..819d8016 --- /dev/null +++ b/package/sentry-cli/0001-Disable-SSL-support-for-the-curl-module.patch @@ -0,0 +1,62 @@ +From 5b4179af15b435a476c006260718d4f6e22ea2ab Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Mon, 31 Jul 2023 22:34:04 +0200 +Subject: [PATCH] Disable SSL support for the curl module + +Fixes build with OpenSSL v3. + +Downloaded Cargo.toml patch from +https://cgit.freebsd.org/ports/tree/devel/sentry-cli/files/patch-Cargo.toml + +Upstream: https://github.com/getsentry/sentry-cli/issues/1706 + +Signed-off-by: Bernd Kuhls +--- + Cargo.lock | 10 ---------- + Cargo.toml | 2 +- + 2 files changed, 1 insertion(+), 11 deletions(-) + +diff --git a/Cargo.lock b/Cargo.lock +index e5031db..7357215 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -1521,15 +1521,6 @@ version = "0.1.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +-[[package]] +-name = "openssl-src" +-version = "111.25.0+1.1.1t" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3173cd3626c43e3854b1b727422a276e568d9ec5fe8cec197822cf52cfb743d6" +-dependencies = [ +- "cc", +-] +- + [[package]] + name = "openssl-sys" + version = "0.9.80" +@@ -1539,7 +1530,6 @@ dependencies = [ + "autocfg", + "cc", + "libc", +- "openssl-src", + "pkg-config", + "vcpkg", + ] +diff --git a/Cargo.toml b/Cargo.toml +index c8c9ca9..117e77d 100644 +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -25,7 +25,7 @@ clap = { version = "4.1.6", default-features = false, features = [ + "error-context", + ] } + console = "0.15.5" +-curl = { version = "0.4.44", features = ["static-curl", "static-ssl"] } ++curl = { version = "0.4.44" } + dirs = "4.0.0" + dotenv = "0.15.0" + elementtree = "1.2.3" +-- +2.39.2 + diff --git a/package/sentry-cli/Config.in.host b/package/sentry-cli/Config.in.host new file mode 100644 index 00000000..31240153 --- /dev/null +++ b/package/sentry-cli/Config.in.host @@ -0,0 +1,10 @@ +config BR2_PACKAGE_HOST_SENTRY_CLI + bool "host sentry-cli" + depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_RUSTC + help + Official Sentry command line interface + + For managing debug information files and source maps. + + https://docs.sentry.io/cli/ diff --git a/package/sentry-cli/sentry-cli.hash b/package/sentry-cli/sentry-cli.hash new file mode 100644 index 00000000..0335c57c --- /dev/null +++ b/package/sentry-cli/sentry-cli.hash @@ -0,0 +1,3 @@ +# locally calculated +sha256 997581bca5bdb6f7540ea9d6e1d25f0e9df06fcc338d26ed75fc81f9401d65d4 sentry-cli-2.20.3-cargo2.tar.gz +sha256 9503def7b54ceb6e3cd182fd59bc05d3a30d7eae481e65aaba4b495133c83c14 LICENSE diff --git a/package/sentry-cli/sentry-cli.mk b/package/sentry-cli/sentry-cli.mk new file mode 100644 index 00000000..3ddf5e44 --- /dev/null +++ b/package/sentry-cli/sentry-cli.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# sentry-cli +# +################################################################################ + +SENTRY_CLI_VERSION = 2.20.3 +SENTRY_CLI_SITE = $(call github,getsentry,sentry-cli,$(SENTRY_CLI_VERSION)) +SENTRY_CLI_LICENSE = BSD-3-clause +SENTRY_CLI_LICENSE_FILES = LICENSE + +HOST_SENTRY_CLI_DEPENDENCIES = host-pkgconf host-openssl host-zlib + +$(eval $(host-cargo-package)) diff --git a/package/sentry-native/0001-sentry.h-include-ucontext.h.patch b/package/sentry-native/0001-sentry.h-include-ucontext.h.patch new file mode 100644 index 00000000..108f3892 --- /dev/null +++ b/package/sentry-native/0001-sentry.h-include-ucontext.h.patch @@ -0,0 +1,27 @@ +From 6a3b7b28f34c91c72d8b849903d93de2997b82f1 Mon Sep 17 00:00:00 2001 +From: Joseph Kogut +Date: Tue, 8 Sep 2020 11:40:01 -0700 +Subject: [PATCH] sentry.h: include ucontext.h + +This is included by signal.h in newer versions of glibc, but results +in an unknown type name error in older versions. + +Signed-off-by: Joseph Kogut +--- + include/sentry.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/include/sentry.h b/include/sentry.h +index 25754d9..a55cc00 100644 +--- a/include/sentry.h ++++ b/include/sentry.h +@@ -78,6 +78,7 @@ extern "C" { + # include + #else + # include ++# include + #endif + + /** +-- +2.28.0 diff --git a/package/sentry-native/Config.in b/package/sentry-native/Config.in new file mode 100644 index 00000000..88db2779 --- /dev/null +++ b/package/sentry-native/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_SENTRY_NATIVE + bool "sentry-native" + depends on BR2_INSTALL_LIBSTDCPP # google-breakpad + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # google-breakpad + depends on BR2_USE_WCHAR # google-breakpad + depends on BR2_TOOLCHAIN_HAS_THREADS # google-breakpad + # google-breakpad is restricted to glibc or uClibc, but + # sentry-native needs , so it restricts further to + # just glibc. + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS # google-breakpad + depends on BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS # google-breakpad + select BR2_PACKAGE_GOOGLE_BREAKPAD + select BR2_PACKAGE_LIBCURL + help + The Sentry Native SDK is an error and crash + reporting client for native applications, + optimized for C and C++. + + https://github.com/getsentry/sentry-native + +comment "sentry-native needs a glibc toolchain with w/ wchar, threads, C++, gcc >= 7" + depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 diff --git a/package/sentry-native/sentry-native.hash b/package/sentry-native/sentry-native.hash new file mode 100644 index 00000000..dffc7aec --- /dev/null +++ b/package/sentry-native/sentry-native.hash @@ -0,0 +1,3 @@ +# locally calculated +sha256 a7d04fe9b9175c30a58ce20ae23b510595045a66884a447dd21ff2d0c749751b sentry-native-0.4.1.tar.gz +sha256 5ef07a3d95f1f779c1597c0fbaecbb7ba242128ff0587ed1e3214c7ac6154523 LICENSE diff --git a/package/sentry-native/sentry-native.mk b/package/sentry-native/sentry-native.mk new file mode 100644 index 00000000..f0743889 --- /dev/null +++ b/package/sentry-native/sentry-native.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# sentry-native +# +################################################################################ + +SENTRY_NATIVE_VERSION = 0.4.1 +SENTRY_NATIVE_SITE = $(call github,getsentry,sentry-native,$(SENTRY_NATIVE_VERSION)) +SENTRY_NATIVE_LICENSE = MIT +SENTRY_NATIVE_LICENSE_FILES = LICENSE +SENTRY_NATIVE_DEPENDENCIES = libcurl google-breakpad +SENTRY_NATIVE_INSTALL_STAGING = YES + +# Use the built system breakpad client instead of bundling +SENTRY_NATIVE_CONF_OPTS += -DSENTRY_BREAKPAD_SYSTEM=ON + +$(eval $(cmake-package)) diff --git a/package/ser2net/Config.in b/package/ser2net/Config.in new file mode 100644 index 00000000..1859d42c --- /dev/null +++ b/package/ser2net/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_SER2NET + bool "ser2net" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_ATOMIC # gensio + select BR2_PACKAGE_GENSIO + select BR2_PACKAGE_LIBYAML + help + Ser2net provides a way for a user to connect from a network + connection to a serial port. + + http://ser2net.sourceforge.net diff --git a/package/ser2net/S50ser2net b/package/ser2net/S50ser2net new file mode 100644 index 00000000..1b178c18 --- /dev/null +++ b/package/ser2net/S50ser2net @@ -0,0 +1,43 @@ +#!/bin/sh +# +# Startup script for ser2net +# + +start() { + printf "Starting ser2net: " + if [ ! -f /etc/ser2net.conf ] && [ ! -f /etc/ser2net/ser2net.yaml ] ; then + echo "no configuration file" + exit 1 + fi + + start-stop-daemon -S -q --exec /usr/sbin/ser2net -- -P /var/run/ser2net.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Shutting down ser2net: " + start-stop-daemon -K -q -p /var/run/ser2net.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + restart + ;; + *) + echo "Usage: ser2net {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/package/ser2net/ser2net.hash b/package/ser2net/ser2net.hash new file mode 100644 index 00000000..50a2efde --- /dev/null +++ b/package/ser2net/ser2net.hash @@ -0,0 +1,6 @@ +# From https://sourceforge.net/projects/ser2net/files/ser2net/ +md5 73b4ccc7e9d89034f1a1a20a780b9da9 ser2net-4.3.8.tar.gz +sha1 d1597d88d154489cb08bac69bb1772712d30cbcd ser2net-4.3.8.tar.gz +# Locally computed: +sha256 e5620975523059a38709bb53c0567600adbbcb8011066a2d2fe1b4db9efe0ba3 ser2net-4.3.8.tar.gz +sha256 501f3108e6c03e5a0a5585ebaaa369171aead5319cd0a7a4dc1f66211c1f09f1 COPYING diff --git a/package/ser2net/ser2net.mk b/package/ser2net/ser2net.mk new file mode 100644 index 00000000..679aaec2 --- /dev/null +++ b/package/ser2net/ser2net.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# ser2net +# +################################################################################ + +SER2NET_VERSION = 4.3.8 +SER2NET_SITE = https://downloads.sourceforge.net/project/ser2net/ser2net +SER2NET_LICENSE = GPL-2.0+ +SER2NET_LICENSE_FILES = COPYING +SER2NET_DEPENDENCIES = gensio libyaml + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +SER2NET_CONF_OPTS += --with-pthreads +else +SER2NET_CONF_OPTS += --without-pthreads +endif + +# fix gensio detection with openssl enabled +ifeq ($(BR2_PACKAGE_OPENSSL),y) +SER2NET_CONF_ENV += LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs openssl`" +endif + +define SER2NET_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/ser2net/S50ser2net \ + $(TARGET_DIR)/etc/init.d/S50ser2net +endef + +$(eval $(autotools-package)) diff --git a/package/serd/Config.in b/package/serd/Config.in new file mode 100644 index 00000000..7633a979 --- /dev/null +++ b/package/serd/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_SERD + bool "serd" + help + Serd is a lightweight C library for RDF syntax which + supports reading and writing Turtle, TriG, NTriples, and + NQuads. + + https://drobilla.net/software/serd.html diff --git a/package/serd/serd.hash b/package/serd/serd.hash new file mode 100644 index 00000000..c8a45a08 --- /dev/null +++ b/package/serd/serd.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking signature +# http://download.drobilla.net/serd-0.30.14.tar.xz.sig +sha256 a14137d47b11d6ad431e78da341ca9737998d9eaccf6a49263d4c8d79fd856e3 serd-0.30.14.tar.xz +sha256 13b62d3705cabee6a21730eb24f773249271c2d95e9ecbab16069e729d4ae147 COPYING diff --git a/package/serd/serd.mk b/package/serd/serd.mk new file mode 100644 index 00000000..7922e777 --- /dev/null +++ b/package/serd/serd.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# serd +# +################################################################################ + +SERD_VERSION = 0.30.14 +SERD_SITE = https://download.drobilla.net +SERD_SOURCE = serd-$(SERD_VERSION).tar.xz +SERD_LICENSE = ISC +SERD_LICENSE_FILES = COPYING +SERD_INSTALL_STAGING = YES + +SERD_CONF_OPTS += -Ddocs=disabled -Dstatic=false -Dtests=disabled + +$(eval $(meson-package)) diff --git a/package/setools/0001-Do-not-export-use-setools.InfoFlowAnalysis-and-setoo.patch b/package/setools/0001-Do-not-export-use-setools.InfoFlowAnalysis-and-setoo.patch new file mode 100644 index 00000000..67c306e9 --- /dev/null +++ b/package/setools/0001-Do-not-export-use-setools.InfoFlowAnalysis-and-setoo.patch @@ -0,0 +1,145 @@ +From ae84e5ef59bb24d5b8fd17e6756952f42c2d5c36 Mon Sep 17 00:00:00 2001 +From: rpm-build +Date: Thu, 23 Feb 2017 08:17:07 +0100 +Subject: [PATCH] Do not export/use setools.InfoFlowAnalysis and + setools.DomainTransitionAnalysis + +dta and infoflow modules require networkx which brings lot of dependencies. +These dependencies are not necessary for setools module itself as it's +used in policycoreutils. + +Therefore it's better to use setools.infoflow.InfoFlowAnalysis and +setools.dta.DomainTransitionAnalysis and let the package containing +sedta and seinfoflow to require python3-networkx + +Signed-off-by: Antoine Tenart +[Refreshed for 4.3.0] +Signed-off-by: Adam Duskett +[Refreshed for 4.4.2] +--- + sedta | 3 ++- + seinfoflow | 5 +++-- + setools/__init__.py | 4 ++-- + setoolsgui/apol/dta.py | 2 +- + setoolsgui/apol/infoflow.py | 2 +- + tests/test_dta.py | 2 +- + tests/test_infoflow.py | 2 +- + 7 files changed, 11 insertions(+), 9 deletions(-) + +diff --git a/sedta b/sedta +index ffd9ede..4c53825 100755 +--- a/sedta ++++ b/sedta +@@ -10,6 +10,7 @@ import logging + import signal + + import setools ++import setools.dta + + + def print_transition(trans: setools.DomainTransition) -> None: +@@ -104,7 +105,7 @@ else: + + try: + p = setools.SELinuxPolicy(args.policy) +- g = setools.DomainTransitionAnalysis(p, reverse=args.reverse, exclude=args.exclude) ++ g = setools.dta.DomainTransitionAnalysis(p, reverse=args.reverse, exclude=args.exclude) + + if args.shortest_path or args.all_paths: + if args.shortest_path: +diff --git a/seinfoflow b/seinfoflow +index 5f4e764..a27b781 100755 +--- a/seinfoflow ++++ b/seinfoflow +@@ -5,6 +5,7 @@ + # + + import setools ++import setools.infoflow + import argparse + import sys + import logging +@@ -94,8 +95,8 @@ elif args.booleans is not None: + try: + p = setools.SELinuxPolicy(args.policy) + m = setools.PermissionMap(args.map) +- g = setools.InfoFlowAnalysis(p, m, min_weight=args.min_weight, exclude=args.exclude, +- booleans=booleans) ++ g = setools.infoflow.InfoFlowAnalysis(p, m, min_weight=args.min_weight, exclude=args.exclude, ++ booleans=booleans) + + if args.shortest_path or args.all_paths: + if args.shortest_path: +diff --git a/setools/__init__.py b/setools/__init__.py +index ad9b36a..2bde01b 100644 +--- a/setools/__init__.py ++++ b/setools/__init__.py +@@ -77,11 +77,11 @@ from .pcideviceconquery import PcideviceconQuery + from .devicetreeconquery import DevicetreeconQuery + + # Information Flow Analysis +-from .infoflow import InfoFlowAnalysis ++# from .infoflow import InfoFlowAnalysis + from .permmap import PermissionMap, RuleWeight, Mapping + + # Domain Transition Analysis +-from .dta import DomainTransitionAnalysis, DomainEntrypoint, DomainTransition ++# from .dta import DomainTransitionAnalysis, DomainEntrypoint, DomainTransition + + # Policy difference + from .diff import PolicyDifference +diff --git a/setoolsgui/apol/dta.py b/setoolsgui/apol/dta.py +index a78d960..e71c70a 100644 +--- a/setoolsgui/apol/dta.py ++++ b/setoolsgui/apol/dta.py +@@ -11,7 +11,7 @@ from PyQt5.QtCore import pyqtSignal, Qt, QStringListModel, QThread + from PyQt5.QtGui import QPalette, QTextCursor + from PyQt5.QtWidgets import QCompleter, QHeaderView, QMessageBox, QProgressDialog, \ + QTreeWidgetItem +-from setools import DomainTransitionAnalysis ++from setools.dta import DomainTransitionAnalysis + + from ..logtosignal import LogHandlerToSignal + from .analysistab import AnalysisSection, AnalysisTab +diff --git a/setoolsgui/apol/infoflow.py b/setoolsgui/apol/infoflow.py +index fb9b409..738f1b8 100644 +--- a/setoolsgui/apol/infoflow.py ++++ b/setoolsgui/apol/infoflow.py +@@ -13,7 +13,7 @@ from PyQt5.QtCore import pyqtSignal, Qt, QStringListModel, QThread + from PyQt5.QtGui import QPalette, QTextCursor + from PyQt5.QtWidgets import QCompleter, QHeaderView, QMessageBox, QProgressDialog, \ + QTreeWidgetItem +-from setools import InfoFlowAnalysis ++from setools.infoflow import InfoFlowAnalysis + from setools.exception import UnmappedClass, UnmappedPermission + + from ..logtosignal import LogHandlerToSignal +diff --git a/tests/test_dta.py b/tests/test_dta.py +index 7f9bbc9..48338c5 100644 +--- a/tests/test_dta.py ++++ b/tests/test_dta.py +@@ -5,7 +5,7 @@ + import os + import unittest + +-from setools import DomainTransitionAnalysis ++from setools.dta import DomainTransitionAnalysis + from setools import TERuletype as TERT + from setools.exception import InvalidType + from setools.policyrep import Type +diff --git a/tests/test_infoflow.py b/tests/test_infoflow.py +index 5a8f745..e25993b 100644 +--- a/tests/test_infoflow.py ++++ b/tests/test_infoflow.py +@@ -5,7 +5,7 @@ + import os + import unittest + +-from setools import InfoFlowAnalysis ++from setools.infoflow import InfoFlowAnalysis + from setools import TERuletype as TERT + from setools.exception import InvalidType + from setools.permmap import PermissionMap +-- +2.26.2 + diff --git a/package/setools/Config.in b/package/setools/Config.in new file mode 100644 index 00000000..5a71672b --- /dev/null +++ b/package/setools/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_SETOOLS + bool "setools" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU + depends on BR2_PACKAGE_PYTHON3 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # libselinux -> libsepol + select BR2_PACKAGE_PYTHON_NETWORKX # runtime + select BR2_PACKAGE_PYTHON_SETUPTOOLS + select BR2_PACKAGE_LIBSELINUX + help + SETools is an open source project designed to facilitate + SELinux policy analysis. The primary tools are: + * apol - analyze a SELinux policy. (requires python-qt5) + * sediff - semantic policy difference tool for SELinux. + * sedta - Perform domain transition analyses + * seinfoflow - information flow analysis for SELinux + * sesearch - Search rules (allow, type_transition, etc.) + + https://github.com/SELinuxProject/setools/ + +comment "setools needs a toolchain w/ threads, wchar, dynamic library, gcc >= 5" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_USE_WCHAR || !BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +comment "setools needs python3" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_PYTHON3 diff --git a/package/setools/setools.hash b/package/setools/setools.hash new file mode 100644 index 00000000..bb98231d --- /dev/null +++ b/package/setools/setools.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 92afeea2f2433cbb981ff47f6ce4e2485d9202b530842f7f5d95f905b2ddaea4 setools-4.4.4.tar.gz +sha256 0e58d74751e394f39748c7b7b4039d6a883b5def9711160668ba962b52e69e01 COPYING +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING.GPL +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPL diff --git a/package/setools/setools.mk b/package/setools/setools.mk new file mode 100644 index 00000000..1ffc2852 --- /dev/null +++ b/package/setools/setools.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# setools +# +################################################################################ + +SETOOLS_VERSION = 4.4.4 +SETOOLS_SITE = $(call github,SELinuxProject,setools,$(SETOOLS_VERSION)) +SETOOLS_DEPENDENCIES = libselinux libsepol python-setuptools host-bison host-flex host-python-cython host-swig +SETOOLS_INSTALL_STAGING = YES +SETOOLS_LICENSE = GPL-2.0+, LGPL-2.1+ +SETOOLS_LICENSE_FILES = COPYING COPYING.GPL COPYING.LGPL +SETOOLS_CPE_ID_VENDOR = selinuxproject +SETOOLS_SETUP_TYPE = setuptools +HOST_SETOOLS_DEPENDENCIES = host-python-cython host-libselinux host-libsepol host-python-networkx + +define SETOOLS_FIX_SETUP + # By default, setup.py will look for libsepol.a in the host machines + # /usr/lib directory. This needs to be changed to the staging directory. + $(SED) "s@lib_dirs =.*@lib_dirs = ['$(STAGING_DIR)/usr/lib']@g" \ + $(@D)/setup.py +endef +SETOOLS_POST_PATCH_HOOKS += SETOOLS_FIX_SETUP + +define HOST_SETOOLS_FIX_SETUP + # By default, setup.py will look for libsepol.a in the host machines + # /usr/lib directory. This needs to be changed to the host directory. + $(SED) "s@lib_dirs =.*@lib_dirs = ['$(HOST_DIR)/lib']@g" \ + $(@D)/setup.py +endef +HOST_SETOOLS_POST_PATCH_HOOKS += HOST_SETOOLS_FIX_SETUP + +# apol requires pyqt5. However, the setools installation +# process will install apol even if pyqt5 is missing. +# Remove these scripts from the target it pyqt5 is not selected. +ifeq ($(BR2_PACKAGE_PYTHON_PYQT5),) +define SETOOLS_REMOVE_QT_SCRIPTS + $(RM) $(TARGET_DIR)/usr/bin/apol + $(RM) -r $(TARGET_DIR)/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/setoolsgui/ +endef +SETOOLS_POST_INSTALL_TARGET_HOOKS += SETOOLS_REMOVE_QT_SCRIPTS +endif + +# pyqt5 is not a host-package, remove apol from the host directory. +define HOST_SETOOLS_REMOVE_BROKEN_SCRIPTS + $(RM) $(HOST_DIR)/bin/apol +endef +HOST_SETOOLS_POST_INSTALL_HOOKS += HOST_SETOOLS_REMOVE_BROKEN_SCRIPTS + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/package/setserial/0001-build-system-fix.patch b/package/setserial/0001-build-system-fix.patch new file mode 100644 index 00000000..eec7993d --- /dev/null +++ b/package/setserial/0001-build-system-fix.patch @@ -0,0 +1,28 @@ +Install the setserial program in /usr/bin instead of /bin, and make +sure that the directories (especially the manpages directory) are +created before installing files to them. This is similar to what +automake does. + +Signed-off-by: Thomas Petazzoni +--- + Makefile.in | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +Index: setserial-2.17/Makefile.in +=================================================================== +--- setserial-2.17.orig/Makefile.in ++++ setserial-2.17/Makefile.in +@@ -26,9 +26,10 @@ setserial.cat: setserial.8 + nroff -man setserial.8 > setserial.cat + + install: setserial setserial.8 +- $(INSTALL_PROGRAM) setserial $(DESTDIR)/bin +- $(STRIP) $(DESTDIR)/bin/setserial +- $(INSTALL_DATA) setserial.8 $(DESTDIR)/usr/man/man8 ++ mkdir -p $(DESTDIR)/usr/bin ++ $(INSTALL_PROGRAM) setserial $(DESTDIR)/usr/bin ++ mkdir -p $(DESTDIR)/usr/share/man/man8 ++ $(INSTALL_DATA) setserial.8 $(DESTDIR)/usr/share/man/man8 + + clean: + $(RM) setserial setserial.o setserial.cat *~ diff --git a/package/setserial/0002-tiocghayesesp-build-fix.patch b/package/setserial/0002-tiocghayesesp-build-fix.patch new file mode 100644 index 00000000..176a0c9e --- /dev/null +++ b/package/setserial/0002-tiocghayesesp-build-fix.patch @@ -0,0 +1,28 @@ +[PATCH] setserial: fix build with 2.6.33+ kernel headers + +linux/hayesesp.h got removed in 2.6.33, but some archs (like x86) still +define the TIOCGHAYESESP ioctl, breaking the build. + +It's very unlikely to be of interest anymore, so just undef it. + +Signed-off-by: Peter Korsgaard +--- + setserial.c | 5 +++++ + 1 file changed, 5 insertions(+) + +Index: setserial-2.17/setserial.c +=================================================================== +--- setserial-2.17.orig/setserial.c ++++ setserial-2.17/setserial.c +@@ -24,6 +24,11 @@ + #endif + #include + ++/* linux/hayesesp.h got removed in 2.6.33 but some archs (like x86) ++ still define TIOCGHAYESESP. It's very unlikely to be of interest ++ anymore, so just undef it */ ++#undef TIOCGHAYESESP ++ + #include "version.h" + + static char version_str[] = "setserial version " SETSERIAL_VERSION ", " diff --git a/package/setserial/Config.in b/package/setserial/Config.in new file mode 100644 index 00000000..1182cb06 --- /dev/null +++ b/package/setserial/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_SETSERIAL + bool "setserial" + # Uses fork() + depends on BR2_USE_MMU + help + Setserial : configuration of serial ports + + http://setserial.sourceforge.net/ diff --git a/package/setserial/setserial.hash b/package/setserial/setserial.hash new file mode 100644 index 00000000..991d2860 --- /dev/null +++ b/package/setserial/setserial.hash @@ -0,0 +1,5 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/s/setserial/setserial_2.17-45.3.dsc +sha256 7e4487d320ac31558563424189435d396ddf77953bb23111a17a3d1487b5794a setserial_2.17.orig.tar.gz +sha256 33db87e8a86cf12b7c97efca9e056865e71358e8cfeb3931118b2647ce1eecc6 setserial_2.17-45.3.diff.gz +# Locally computed +sha256 1d7e810ed28daf370def626dfd4c502f2f77d2b678f1ac72e2ba675dd6f9af0d debian/copyright diff --git a/package/setserial/setserial.mk b/package/setserial/setserial.mk new file mode 100644 index 00000000..66ca59d7 --- /dev/null +++ b/package/setserial/setserial.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# setserial +# +################################################################################ + +SETSERIAL_VERSION = 2.17 +SETSERIAL_PATCH = setserial_2.17-45.3.diff.gz +SETSERIAL_SOURCE = setserial_$(SETSERIAL_VERSION).orig.tar.gz +SETSERIAL_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/s/setserial +SETSERIAL_LICENSE = GPL-2.0 +SETSERIAL_LICENSE_FILES = debian/copyright +# make all also builds setserial.cat which needs nroff +SETSERIAL_MAKE_OPTS = setserial + +define SETSERIAL_APPLY_DEBIAN_PATCHES + # Touching gorhack.h is needed for the Debian patch 18 to work + if [ -d $(@D)/debian/patches ]; then \ + touch $(@D)/gorhack.h; \ + rm $(@D)/debian/patches/01_makefile.dpatch; \ + $(APPLY_PATCHES) $(@D) $(@D)/debian/patches *.dpatch; \ + fi +endef + +SETSERIAL_POST_PATCH_HOOKS += SETSERIAL_APPLY_DEBIAN_PATCHES + +$(eval $(autotools-package)) diff --git a/package/sexpect/Config.in b/package/sexpect/Config.in new file mode 100644 index 00000000..e558af26 --- /dev/null +++ b/package/sexpect/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SEXPECT + bool "sexpect" + depends on BR2_USE_MMU # fork() + help + sexpect is another implementation of Expect which is + specifically designed for Shell scripts + (sh, bash, ksh, zsh, ...) + + https://github.com/clarkwang/sexpect diff --git a/package/sexpect/sexpect.hash b/package/sexpect/sexpect.hash new file mode 100644 index 00000000..d5121176 --- /dev/null +++ b/package/sexpect/sexpect.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 f6801c8b979d56eec54aedd7ede06e2342f382cee291beea88b52869186c557c sexpect-2.3.14.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE diff --git a/package/sexpect/sexpect.mk b/package/sexpect/sexpect.mk new file mode 100644 index 00000000..7b878600 --- /dev/null +++ b/package/sexpect/sexpect.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# sexpect +# +################################################################################ + +SEXPECT_VERSION = 2.3.14 +SEXPECT_SITE = $(call github,clarkwang,sexpect,v$(SEXPECT_VERSION)) +SEXPECT_LICENSE = GPL-3.0 +SEXPECT_LICENSE_FILES = LICENSE +SEXPECT_SUPPORTS_IN_SOURCE_BUILD = NO + +$(eval $(cmake-package)) diff --git a/package/sg3_utils/Config.in b/package/sg3_utils/Config.in new file mode 100644 index 00000000..f4db4b9b --- /dev/null +++ b/package/sg3_utils/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_SG3_UTILS + bool "sg3-utils" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Low level utilities for devices that use a SCSI command set. + This option install only libsgutils2 library not programs. + + http://sg.danny.cz/sg/sg3_utils.html + +if BR2_PACKAGE_SG3_UTILS + +config BR2_PACKAGE_SG3_UTILS_PROGS + bool "install programs" + +endif + +comment "sg3-utils needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/sg3_utils/sg3_utils.hash b/package/sg3_utils/sg3_utils.hash new file mode 100644 index 00000000..0a06595a --- /dev/null +++ b/package/sg3_utils/sg3_utils.hash @@ -0,0 +1,6 @@ +# Locally calculated from download (no sig, hash) +sha256 d6b9a41690d540e58d1e99c26ac8db37336c849ef6a03f96ea48ca2fe334dbfa sg3_utils-1.48.tar.xz + +# Hash for license files +sha256 d212debdb0a5d7754c977f6dc53bb6c88b4ace7ab784ddbccd06bb970adb1a37 COPYING +sha256 6b1a1de0b3394002973daaa407b93a1d2c13efd8dd1a32095d6872c36f09ba66 BSD_LICENSE diff --git a/package/sg3_utils/sg3_utils.mk b/package/sg3_utils/sg3_utils.mk new file mode 100644 index 00000000..3d85a59a --- /dev/null +++ b/package/sg3_utils/sg3_utils.mk @@ -0,0 +1,64 @@ +################################################################################ +# +# sg3_utils +# +################################################################################ + +SG3_UTILS_VERSION = 1.48 +SG3_UTILS_SOURCE = sg3_utils-$(SG3_UTILS_VERSION).tar.xz +SG3_UTILS_SITE = http://sg.danny.cz/sg/p +SG3_UTILS_LICENSE = BSD-2-Clause (library) +# Some utils progs are GPL-2.0+ licensed while others are BSD-3-Clause +ifeq ($(BR2_PACKAGE_SG3_UTILS_PROGS),y) +SG3_UTILS_LICENSE += , GPL-2.0+ (programs), BSD-2-Clause (programs) +endif +SG3_UTILS_LICENSE_FILES = COPYING BSD_LICENSE + +# install the libsgutils2 library +SG3_UTILS_INSTALL_STAGING = YES + +# Uses __atomic_fetch_add_4 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +SG3_UTILS_CONF_ENV += LIBS="-latomic" +endif + +SG3_UTILS_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_104028),y) +SG3_UTILS_CFLAGS += -O0 +endif + +SG3_UTILS_CONF_ENV += CFLAGS="$(SG3_UTILS_CFLAGS)" + +ifeq ($(BR2_PACKAGE_SG3_UTILS_PROGS),) +define SG3_UTILS_REMOVE_PROGS + for prog in \ + compare_and_write copy_results dd decode_sense \ + emc_trespass format get_config \ + get_lba_status ident inq logs luns map26 \ + map sgm_dd modes opcodes sgp_dd persist prevent \ + raw rbuf rdac read readcap read_block_limits \ + read_attr read_buffer read_long reassign referrals \ + rep_zones requests reset reset_wp rmsn rtpg safte sanitize \ + sat_identify sat_phy_event sat_read_gplog sat_set_features \ + scan senddiag ses ses_microcode start stpg sync test_rwbuf \ + timestamp turs unmap verify vpd write_buffer write_long \ + write_same write_verify wr_mode xcopy zone; do \ + $(RM) $(TARGET_DIR)/usr/bin/sg_$${prog} ; \ + done + for prog in \ + logging_level mandat readcap ready satl start stop \ + temperature; do \ + $(RM) $(TARGET_DIR)/usr/bin/scsi_$${prog} ; \ + done + for prog in \ + sginfo sgm_dd sgp_dd; do \ + $(RM) $(TARGET_DIR)/usr/bin/$${prog}; \ + done +endef + +SG3_UTILS_POST_INSTALL_TARGET_HOOKS += SG3_UTILS_REMOVE_PROGS +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/shadow/Config.in b/package/shadow/Config.in new file mode 100644 index 00000000..bbbea811 --- /dev/null +++ b/package/shadow/Config.in @@ -0,0 +1,60 @@ +menuconfig BR2_PACKAGE_SHADOW + bool "shadow" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + Utilities to deal with user accounts. + + https://github.com/shadow-maint/shadow + +if BR2_PACKAGE_SHADOW + +config BR2_PACKAGE_SHADOW_SHADOWGRP + bool "shadowgrp" + help + Enable shadow group support. + +config BR2_PACKAGE_SHADOW_ACCOUNT_TOOLS_SETUID + bool "account-tools-setuid" + depends on BR2_USE_MMU # linux-pam + depends on BR2_ENABLE_LOCALE # linux-pam + depends on BR2_USE_WCHAR # linux-pam + depends on !BR2_STATIC_LIBS # linux-pam + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # linux-pam + select BR2_PACKAGE_LINUX_PAM + help + Install the user and group management tools (e.g. groupadd) + with setuid and authenticate the callers via PAM. + +comment "account-tools-setuid needs a toolchain w/ dynamic library, wchar, locale, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR || \ + !BR2_ENABLE_LOCALE || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_SHADOW_SUBORDINATE_IDS + bool "subordinate-ids" + help + Support subordinate ids. Helpful to use container solution + like podman without root. + +config BR2_PACKAGE_SHADOW_SHA_CRYPT + bool "sha-crypt" + default y + help + Allow the SHA256 and SHA512 password encryption algorithms. + +config BR2_PACKAGE_SHADOW_BCRYPT + bool "bcrypt" + help + Allow the bcrypt password encryption algorithm. + +config BR2_PACKAGE_SHADOW_YESCRYPT + bool "yescrypt" + help + Allow the yescrypt password encryption algorithm. + +endif # BR2_PACKAGE_SHADOW + +comment "shadow needs a toolchain w/ headers >= 4.14, dynamic library" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 || BR2_STATIC_LIBS diff --git a/package/shadow/shadow.hash b/package/shadow/shadow.hash new file mode 100644 index 00000000..1d83272c --- /dev/null +++ b/package/shadow/shadow.hash @@ -0,0 +1,4 @@ +# Verified from https://github.com/shadow-maint/shadow/releases/download/4.14.5/shadow-4.14.5.tar.xz.asc +# with key 66D0387DB85D320F8408166DB175CFA98F192AF2 +sha256 bb5f70639a0581f9d626f227ce45b31ac137daa7c451c0f672ce14f2731a96ee shadow-4.15.1.tar.xz +sha256 3d25ab8f43fdc14624296a56ff8dc3e72e499ad35f32ae0c803f4959cfe17c0a COPYING diff --git a/package/shadow/shadow.mk b/package/shadow/shadow.mk new file mode 100644 index 00000000..59771b91 --- /dev/null +++ b/package/shadow/shadow.mk @@ -0,0 +1,142 @@ +################################################################################ +# +# shadow +# +################################################################################ + +SHADOW_VERSION = 4.15.1 +SHADOW_SITE = https://github.com/shadow-maint/shadow/releases/download/$(SHADOW_VERSION) +SHADOW_SOURCE = shadow-$(SHADOW_VERSION).tar.xz +SHADOW_LICENSE = BSD-3-Clause +SHADOW_LICENSE_FILES = COPYING +SHADOW_CPE_ID_VENDOR = debian +SHADOW_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) +SHADOW_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) + +SHADOW_CONF_OPTS = \ + --disable-man \ + --without-btrfs \ + --without-nscd \ + --without-skey \ + --without-sssd \ + --without-su \ + --without-tcb + +ifeq ($(BR2_PACKAGE_SHADOW_SHADOWGRP),y) +SHADOW_CONF_OPTS += --enable-shadowgrp +else +SHADOW_CONF_OPTS += --disable-shadowgrp +endif + +ifeq ($(BR2_PACKAGE_SHADOW_ACCOUNT_TOOLS_SETUID),y) +SHADOW_CONF_OPTS += --enable-account-tools-setuid +define SHADOW_ACCOUNT_TOOLS_SETUID_PERMISSIONS + /usr/sbin/chgpasswd f 4755 0 0 - - - - - + /usr/sbin/chpasswd f 4755 0 0 - - - - - + /usr/sbin/groupadd f 4755 0 0 - - - - - + /usr/sbin/groupdel f 4755 0 0 - - - - - + /usr/sbin/groupmod f 4755 0 0 - - - - - + /usr/sbin/newusers f 4755 0 0 - - - - - + /usr/sbin/useradd f 4755 0 0 - - - - - + /usr/sbin/userdel f 4755 0 0 - - - - - + /usr/sbin/usermod f 4755 0 0 - - - - - +endef +else +SHADOW_CONF_OPTS += --disable-account-tools-setuid +endif + +ifeq ($(BR2_PACKAGE_SHADOW_SUBORDINATE_IDS),y) +SHADOW_CONF_OPTS += --enable-subordinate-ids +define SHADOW_SUBORDINATE_IDS_PERMISSIONS + /usr/bin/newuidmap f 4755 0 0 - - - - - + /usr/bin/newgidmap f 4755 0 0 - - - - - +endef +else +SHADOW_CONF_OPTS += --disable-subordinate-ids +endif + +ifeq ($(BR2_PACKAGE_ACL),y) +SHADOW_CONF_OPTS += --with-acl +SHADOW_DEPENDENCIES += acl +else +SHADOW_CONF_OPTS += --without-acl +endif + +ifeq ($(BR2_PACKAGE_ATTR),y) +SHADOW_CONF_OPTS += --with-attr +SHADOW_DEPENDENCIES += attr +else +SHADOW_CONF_OPTS += --without-attr +endif + +ifeq ($(BR2_PACKAGE_AUDIT),y) +SHADOW_CONF_OPTS += --with-audit +SHADOW_DEPENDENCIES += audit +else +SHADOW_CONF_OPTS += --without-audit +endif + +ifeq ($(BR2_PACKAGE_CRACKLIB),y) +SHADOW_CONF_OPTS += --with-libcrack +SHADOW_DEPENDENCIES += cracklib +else +SHADOW_CONF_OPTS += --without-libcrack +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX)$(BR2_PACKAGE_LIBSEMANAGE),yy) +SHADOW_CONF_OPTS += --with-selinux +SHADOW_DEPENDENCIES += libselinux libsemanage +else +SHADOW_CONF_OPTS += --without-selinux +endif + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +SHADOW_DEPENDENCIES += libxcrypt +endif + +# linux-pam is also used without account-tools-setuid enabled +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +SHADOW_CONF_OPTS += --with-libpam +SHADOW_DEPENDENCIES += linux-pam +else +SHADOW_CONF_OPTS += --without-libpam +endif + +ifeq ($(BR2_PACKAGE_SHADOW_SHA_CRYPT),y) +SHADOW_CONF_OPTS += --with-sha-crypt +else +SHADOW_CONF_OPTS += --without-sha-crypt +endif + +ifeq ($(BR2_PACKAGE_SHADOW_BCRYPT),y) +SHADOW_CONF_OPTS += --with-bcrypt +else +SHADOW_CONF_OPTS += --without-bcrypt +endif + +ifeq ($(BR2_PACKAGE_SHADOW_YESCRYPT),y) +SHADOW_CONF_OPTS += --with-yescrypt +else +SHADOW_CONF_OPTS += --without-yescrypt +endif + +ifeq ($(BR2_PACKAGE_LIBBSD),y) +SHADOW_CONF_OPTS += --with-libbsd +SHADOW_DEPENDENCIES += libbsd +else +SHADOW_CONF_OPTS += --without-libbsd +endif + +define SHADOW_PERMISSIONS + /usr/bin/chage f 4755 0 0 - - - - - + /usr/bin/chfn f 4755 0 0 - - - - - + /usr/bin/chsh f 4755 0 0 - - - - - + /usr/bin/expiry f 4755 0 0 - - - - - + /usr/bin/gpasswd f 4755 0 0 - - - - - + /usr/bin/newgrp f 4755 0 0 - - - - - + /usr/bin/passwd f 4755 0 0 - - - - - + $(SHADOW_ACCOUNT_TOOLS_SETUID_PERMISSIONS) + $(SHADOW_SUBORDINATE_IDS_PERMISSIONS) +endef + +$(eval $(autotools-package)) diff --git a/package/shadowsocks-libev/0001-configure.ac-use-pkg-config-to-find-netfilter_conntr.patch b/package/shadowsocks-libev/0001-configure.ac-use-pkg-config-to-find-netfilter_conntr.patch new file mode 100644 index 00000000..781d3c0e --- /dev/null +++ b/package/shadowsocks-libev/0001-configure.ac-use-pkg-config-to-find-netfilter_conntr.patch @@ -0,0 +1,62 @@ +From b3c61360a93b7f08fc9c33526056211408301ea9 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 23 Nov 2020 21:16:38 +0100 +Subject: [PATCH] configure.ac: use pkg-config to find netfilter_conntrack + +Use pkg-config to retrieve the dependencies of netfilter_conntrack +and avoid the following build failure when building statically: + +configure:13096: /data/buildroot-test/instance-1/output-1/host/bin/x86_64-linux-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -static -I/data/buildroot-test/instance-1/output-1/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include -DPCRE_STATIC -pthread -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -static -L/data/buildroot-test/instance-1/output-1/host/x86_64-buildroot-linux-uclibc/sysroot/usr/lib conftest.c -lnetfilter_conntrack -lnfnetlink -lev -lcares -lsodium -lmbedcrypto -lpcre >&5 +/data/buildroot-test/instance-1/output-1/host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-uclibc/8.3.0/../../../../x86_64-buildroot-linux-uclibc/bin/ld: /data/buildroot-test/instance-1/output-1/host/x86_64-buildroot-linux-uclibc/sysroot/usr/lib/libnetfilter_conntrack.a(api.o): in function `nfct_fill_hdr.constprop.4': +api.c:(.text+0x3f): undefined reference to `mnl_nlmsg_put_header' + +Fixes: + - http://autobuild.buildroot.org/results/6cad497a7ab941a0ee3fd7007defc81e30cdcbe0 + +Signed-off-by: Fabrice Fontaine +[Upstream status: +https://github.com/shadowsocks/shadowsocks-libev/pull/2773] +--- + configure.ac | 5 +++-- + src/Makefile.am | 2 +- + 2 files changed, 4 insertions(+), 3 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 9787bc2..207c041 100755 +--- a/configure.ac ++++ b/configure.ac +@@ -252,7 +252,8 @@ AC_ARG_ENABLE(connmarktos, + if test x"$enable_connmarktos" = "xyes" ; then + AC_MSG_NOTICE([Linux Netfilter Conntrack support requested by --enable-connmarktos: ${enable_connmarktos}]) + if test "x$enable_connmarktos" != "xno"; then +- AC_SEARCH_LIBS([nfct_query], [netfilter_conntrack],,[ ++ PKG_CHECK_MODULES([NETFILTER_CONNTRACK], [libnetfilter_conntrack],, ++ [AC_SEARCH_LIBS([nfct_query], [netfilter_conntrack],,[ + if test x"$enable_connmarktos" = "xyes"; then + AC_MSG_ERROR([--enable-connmarktos specified but libnetfilter-conntrack library not found]) + fi +@@ -262,7 +263,7 @@ if test x"$enable_connmarktos" = "xyes" ; then + if test x"$enable_connmarktos" = "xyes"; then + AC_MSG_ERROR([--enable-connmarktos specified but libnetfilter-conntrack headers not found]) + fi +- with_netfilter_conntrack=no]) ++ with_netfilter_conntrack=no])]) + # If nothing is broken; enable the libraries usage. + if test "x$with_netfilter_conntrack" != "xno"; then + with_netfilter_conntrack=yes +diff --git a/src/Makefile.am b/src/Makefile.am +index c261ed0..b81ced7 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -9,7 +9,7 @@ AM_CFLAGS += -I$(top_srcdir)/libcork/include + endif + AM_CFLAGS += $(LIBPCRE_CFLAGS) + +-SS_COMMON_LIBS = $(INET_NTOP_LIB) $(LIBPCRE_LIBS) ++SS_COMMON_LIBS = $(INET_NTOP_LIB) $(LIBPCRE_LIBS) $(NETFILTER_CONNTRACK_LIBS) + if !USE_SYSTEM_SHARED_LIB + SS_COMMON_LIBS += $(top_builddir)/libbloom/libbloom.la \ + $(top_builddir)/libipset/libipset.la \ +-- +2.29.2 + diff --git a/package/shadowsocks-libev/0002-fix-maybe-uninitialized-errors.patch b/package/shadowsocks-libev/0002-fix-maybe-uninitialized-errors.patch new file mode 100644 index 00000000..5275323e --- /dev/null +++ b/package/shadowsocks-libev/0002-fix-maybe-uninitialized-errors.patch @@ -0,0 +1,93 @@ +From 0c23224e926463b1097414979367655a27fa6d60 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 7 Apr 2022 18:27:58 +0200 +Subject: [PATCH] fix maybe-uninitialized errors + +Set {listen,server}_sock to -1 when needed as already done in +src/manager.c by commit ecf1fcc84594b09ed2d61e3677cd8e62bd897ccb to +avoid the following build failure: + +local.c: In function 'create_and_bind': +local.c:218:12: error: 'listen_sock' may be used uninitialized in this function [-Werror=maybe-uninitialized] + 218 | return listen_sock; + | ^~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/27471a878ff52a972ac087d534e44fb0c50808f6 + +Signed-off-by: Fabrice Fontaine +[Retrieved from: +https://github.com/shadowsocks/shadowsocks-libev/commit/0c23224e926463b1097414979367655a27fa6d60] +--- + src/local.c | 2 +- + src/redir.c | 2 +- + src/server.c | 2 +- + src/tunnel.c | 2 +- + src/udprelay.c | 2 +- + 5 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/local.c b/src/local.c +index b1ab040bb..47d634ce5 100644 +--- a/src/local.c ++++ b/src/local.c +@@ -168,7 +168,7 @@ create_and_bind(const char *addr, const char *port) + { + struct addrinfo hints; + struct addrinfo *result, *rp; +- int s, listen_sock; ++ int s, listen_sock = -1; + + memset(&hints, 0, sizeof(struct addrinfo)); + hints.ai_family = AF_UNSPEC; /* Return IPv4 and IPv6 choices */ +diff --git a/src/redir.c b/src/redir.c +index 4a5a489f0..e60bd4870 100644 +--- a/src/redir.c ++++ b/src/redir.c +@@ -147,7 +147,7 @@ create_and_bind(const char *addr, const char *port) + { + struct addrinfo hints; + struct addrinfo *result, *rp; +- int s, listen_sock; ++ int s, listen_sock = -1; + + memset(&hints, 0, sizeof(struct addrinfo)); + hints.ai_family = AF_UNSPEC; /* Return IPv4 and IPv6 choices */ +diff --git a/src/server.c b/src/server.c +index e9cdc2619..073e38b22 100644 +--- a/src/server.c ++++ b/src/server.c +@@ -550,7 +550,7 @@ create_and_bind(const char *host, const char *port, int mptcp) + { + struct addrinfo hints; + struct addrinfo *result, *rp, *ipv4v6bindall; +- int s, listen_sock; ++ int s, listen_sock = -1; + + memset(&hints, 0, sizeof(struct addrinfo)); + hints.ai_family = AF_UNSPEC; /* Return IPv4 and IPv6 choices */ +diff --git a/src/tunnel.c b/src/tunnel.c +index e0886bdb9..6641fe62a 100644 +--- a/src/tunnel.c ++++ b/src/tunnel.c +@@ -129,7 +129,7 @@ create_and_bind(const char *addr, const char *port) + { + struct addrinfo hints; + struct addrinfo *result, *rp; +- int s, listen_sock; ++ int s, listen_sock = -1; + + memset(&hints, 0, sizeof(struct addrinfo)); + hints.ai_family = AF_UNSPEC; /* Return IPv4 and IPv6 choices */ +diff --git a/src/udprelay.c b/src/udprelay.c +index 23a042497..580ad4bd8 100644 +--- a/src/udprelay.c ++++ b/src/udprelay.c +@@ -446,7 +446,7 @@ create_server_socket(const char *host, const char *port) + { + struct addrinfo hints; + struct addrinfo *result, *rp, *ipv4v6bindall; +- int s, server_sock; ++ int s, server_sock = -1; + + memset(&hints, 0, sizeof(struct addrinfo)); + hints.ai_family = AF_UNSPEC; /* Return IPv4 and IPv6 choices */ diff --git a/package/shadowsocks-libev/0003-lib-Makefile.am-remove-static-from-LDFLAGS.patch b/package/shadowsocks-libev/0003-lib-Makefile.am-remove-static-from-LDFLAGS.patch new file mode 100644 index 00000000..aebdb230 --- /dev/null +++ b/package/shadowsocks-libev/0003-lib-Makefile.am-remove-static-from-LDFLAGS.patch @@ -0,0 +1,61 @@ +From e8ba4d6fd11ce795d9ed7b7a2c0ee0f6bf50f352 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 23 Jul 2022 18:20:00 +0200 +Subject: [PATCH] lib*/Makefile.am: remove -static from LDFLAGS + +The libbloom, libcork and libipset libraries are "convenience +libraries" in libtool speak, and their code ends up being used in a +shared library, so building them with -static does not work as it +causes the code to be built without fPIC. + +https://www.gnu.org/software/libtool/manual/html_node/Static-libraries.html +explains: + +""" +If you omit both -rpath and -static, libtool will create a convenience +library that can be used to create other libtool libraries, even +shared ones. Just like in the static case, the library behaves as an +alias to a set of object files and dependency libraries, but in this +case the object files are suitable for inclusion in shared libraries. +""" + +Signed-off-by: Thomas Petazzoni +--- + libbloom/Makefile.am | 2 -- + libcork/Makefile.am | 2 -- + libipset/Makefile.am | 2 -- + 3 files changed, 6 deletions(-) + +diff --git a/libbloom/Makefile.am b/libbloom/Makefile.am +index 17c0761..6b2eddd 100644 +--- a/libbloom/Makefile.am ++++ b/libbloom/Makefile.am +@@ -2,5 +2,3 @@ noinst_LTLIBRARIES = libbloom.la + + libbloom_la_SOURCES = bloom.c murmur2/MurmurHash2.c + libbloom_la_CFLAGS = -I$(top_srcdir)/libbloom -I$(top_srcdir)/libbloom/murmur2 +- +-libbloom_la_LDFLAGS = -static +diff --git a/libcork/Makefile.am b/libcork/Makefile.am +index 82ce062..e466a68 100644 +--- a/libcork/Makefile.am ++++ b/libcork/Makefile.am +@@ -17,5 +17,3 @@ endif + + libcork_la_SOURCES = $(cli_src) $(core_src) $(ds_src) $(pthreads_src) $(posix_src) + libcork_la_CFLAGS = -I$(top_srcdir)/libcork/include -DCORK_API=CORK_LOCAL +- +-libcork_la_LDFLAGS = -static +diff --git a/libipset/Makefile.am b/libipset/Makefile.am +index 3edfde6..bee8493 100644 +--- a/libipset/Makefile.am ++++ b/libipset/Makefile.am +@@ -23,5 +23,3 @@ set_src = src/libipset/set/allocation.c \ + + libipset_la_SOURCES = src/libipset/general.c ${bdd_src} ${map_src} ${set_src} + libipset_la_CFLAGS = -I$(top_srcdir)/libipset/include -I$(top_srcdir)/libcork/include +- +-libipset_la_LDFLAGS = -static +-- +2.37.1 + diff --git a/package/shadowsocks-libev/Config.in b/package/shadowsocks-libev/Config.in new file mode 100644 index 00000000..fefb27bc --- /dev/null +++ b/package/shadowsocks-libev/Config.in @@ -0,0 +1,34 @@ +config BR2_PACKAGE_SHADOWSOCKS_LIBEV + bool "shadowsocks-libev" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # for libcork + depends on BR2_TOOLCHAIN_HAS_SYNC_8 || !BR2_ARCH_IS_64 # for libcork + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_C_ARES + select BR2_PACKAGE_LIBEV + select BR2_PACKAGE_LIBSODIUM + select BR2_PACKAGE_MBEDTLS + select BR2_PACKAGE_PCRE + help + Shadowsocks-libev is a lightweight secured SOCKS5 proxy for + embedded devices and low-end boxes. + + https://github.com/shadowsocks/shadowsocks-libev + +config BR2_PACKAGE_SHADOWSOCKS_LIBEV_CONNMARKTOS + bool "connmarktos support in ss-server" + depends on BR2_PACKAGE_SHADOWSOCKS_LIBEV + select BR2_PACKAGE_LIBNETFILTER_CONNTRACK + help + Build ss-server with the connmark to TOS feature. + + This feature requires advanced tc, iptables and conntrack + rules to perform QoS on the server side. + + If unsure, don't enable this option + +comment "shadowsocks-libev needs a toolchain w/ threads" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_TOOLCHAIN_HAS_SYNC_8 || !BR2_ARCH_IS_64 + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/shadowsocks-libev/shadowsocks-libev.hash b/package/shadowsocks-libev/shadowsocks-libev.hash new file mode 100644 index 00000000..4f1d6d2f --- /dev/null +++ b/package/shadowsocks-libev/shadowsocks-libev.hash @@ -0,0 +1,7 @@ +# Locally computed +sha256 cfc8eded35360f4b67e18dc447b0c00cddb29cc57a3cec48b135e5fb87433488 shadowsocks-libev-3.3.5.tar.gz + +# License files, locally calculated +sha256 736883f97d44dbec288bb82819f18f4f86d02ae3192f6a9abefa00db76bace41 COPYING +sha256 c41a4bc2c4c43e4daa3051e77e31b2d5c8500498afaeac6d831d55a4bb8de3fb libbloom/LICENSE +sha256 4fa2ada54f8c0410ec243265378242ffe862386d5ac517f8dd30a1911d25ae93 libcork/COPYING diff --git a/package/shadowsocks-libev/shadowsocks-libev.mk b/package/shadowsocks-libev/shadowsocks-libev.mk new file mode 100644 index 00000000..c76983ce --- /dev/null +++ b/package/shadowsocks-libev/shadowsocks-libev.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# shadowsocks-libev +# +################################################################################ + +SHADOWSOCKS_LIBEV_VERSION = 3.3.5 +SHADOWSOCKS_LIBEV_SITE = https://github.com/shadowsocks/shadowsocks-libev/releases/download/v$(SHADOWSOCKS_LIBEV_VERSION) +SHADOWSOCKS_LIBEV_LICENSE = GPL-3.0+, BSD-2-Clause (libbloom), BSD-3-Clause (libcork, libipset) +SHADOWSOCKS_LIBEV_LICENSE_FILES = COPYING libbloom/LICENSE libcork/COPYING +SHADOWSOCKS_LIBEV_CPE_ID_VENDOR = shadowsocks +SHADOWSOCKS_LIBEV_DEPENDENCIES = host-pkgconf c-ares libev libsodium mbedtls pcre +SHADOWSOCKS_LIBEV_INSTALL_STAGING = YES +# We're patching configure.ac +SHADOWSOCKS_LIBEV_AUTORECONF = YES +SHADOWSOCKS_LIBEV_CONF_OPTS = \ + --with-pcre=$(STAGING_DIR)/usr \ + --disable-ssp + +ifeq ($(BR2_PACKAGE_SHADOWSOCKS_LIBEV_CONNMARKTOS),y) +SHADOWSOCKS_LIBEV_DEPENDENCIES += libnetfilter_conntrack +SHADOWSOCKS_LIBEV_CONF_OPTS += --enable-connmarktos +else +SHADOWSOCKS_LIBEV_CONF_OPTS += --disable-connmarktos +endif + +$(eval $(autotools-package)) diff --git a/package/shairport-sync/0001-configure.ac-find-sndfile-through-pkg-config.patch b/package/shairport-sync/0001-configure.ac-find-sndfile-through-pkg-config.patch new file mode 100644 index 00000000..b593703a --- /dev/null +++ b/package/shairport-sync/0001-configure.ac-find-sndfile-through-pkg-config.patch @@ -0,0 +1,45 @@ +From 900b1827c55cc6020b3242640075174c2e6b12a5 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 4 Aug 2021 22:16:40 +0200 +Subject: [PATCH] configure.ac: find sndfile through pkg-config + +Find sndfile through pkg-config to retrieve sndfile dependencies such as +flac and avoid the following static build failure: + +/tmp/instance-3/output-1/host/lib/gcc/xtensa-buildroot-linux-uclibc/10.3.0/../../../../xtensa-buildroot-linux-uclibc/bin/ld: /tmp/instance-3/output-1/host/bin/../xtensa-buildroot-linux-uclibc/sysroot/usr/lib/libsndfile.a(libsndfile_la-flac.o): in function `flac_byterate': +flac.c:(.text+0xfc): undefined reference to `FLAC__StreamDecoderErrorStatusString' + +Fixes: + - http://autobuild.buildroot.org/results/92ed30a6855ca11800b779718822bcba4a69c9a3 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/mikebrady/shairport-sync/pull/1263 +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + configure.ac | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index f77087c5..9b982c51 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -303,7 +303,14 @@ + AC_ARG_WITH(convolution, [AS_HELP_STRING([--with-convolution],[choose audio DSP convolution support])]) + if test "x$with_convolution" = "xyes" ; then + AC_DEFINE([CONFIG_CONVOLUTION], 1, [Include audio DSP convolution support.]) +- AC_CHECK_LIB([sndfile], [sf_open], , AC_MSG_ERROR(Convolution support requires the sndfile library -- libsndfile1-dev suggested!)) ++ if test "x${with_pkg_config}" = xyes ; then ++ PKG_CHECK_MODULES( ++ [sndfile], [sndfile], ++ [CFLAGS="${sndfile_CFLAGS} ${CFLAGS}" ++ LIBS="${sndfile_LIBS} ${LIBS}"], AC_MSG_ERROR(Convolution support requires the sndfile library -- libsndfile1-dev suggested!)) ++ else ++ AC_CHECK_LIB([sndfile], [sf_open], , AC_MSG_ERROR(Convolution support requires the sndfile library -- libsndfile1-dev suggested!)) ++ fi + fi + AM_CONDITIONAL([USE_CONVOLUTION], [test "x$with_convolution" = "xyes"]) + +-- +2.30.2 + diff --git a/package/shairport-sync/Config.in b/package/shairport-sync/Config.in new file mode 100644 index 00000000..528767ba --- /dev/null +++ b/package/shairport-sync/Config.in @@ -0,0 +1,76 @@ +config BR2_PACKAGE_SHAIRPORT_SYNC + bool "shairport-sync" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_MIXER + select BR2_PACKAGE_LIBCONFIG + select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_MBEDTLS + select BR2_PACKAGE_POPT + help + Shairport Sync emulates an AirPort Express for the purpose + of streaming audio from iTunes, iPods, iPhones, iPads and + AppleTVs. Audio played by a Shairport Sync-powered device + stays in synchrony with the source and thus with other + devices that are playing the same source + synchronously. Thus, for example, synchronised multi-room + audio is possible without difficulty. + + https://github.com/mikebrady/shairport-sync + +if BR2_PACKAGE_SHAIRPORT_SYNC + +config BR2_PACKAGE_SHAIRPORT_SYNC_CONVOLUTION + bool "convolution support" + select BR2_PACKAGE_LIBSNDFILE + help + Enable audio DSP convolution support. + +config BR2_PACKAGE_SHAIRPORT_SYNC_DBUS + bool "dbus support" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + help + Enable support for support for the MPRIS and native + Shairport Sync D-Bus interface. + +comment "shairport-sync dbus support needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_SHAIRPORT_SYNC_LIBSOXR + bool "libsoxr support" + select BR2_PACKAGE_LIBSOXR + help + Enable support for libsoxr, the SoX Resampler library. + + Briefly, Shairport Sync keeps in step with the audio source + by deleting or inserting frames of audio into the stream as + needed. This "interpolation" is normally inaudible, but it + can be heard in some circumstances. Libsoxr allows this + interpolation to be done much more smoothly and subtly. + +config BR2_PACKAGE_SHAIRPORT_SYNC_MQTT + bool "mqtt support" + depends on BR2_USE_MMU # avahi + depends on BR2_TOOLCHAIN_HAS_THREADS # avahi + depends on !BR2_STATIC_LIBS # avahi + select BR2_PACKAGE_AVAHI + select BR2_PACKAGE_AVAHI_DAEMON + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_MOSQUITTO + help + Enable support for the MQTT, the Message Queuing Telemetry + Transport protocol. + +comment "shairport-sync mqtt support needs a toolchain w/ dynamic library, threads" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS + +endif + +comment "shairport-sync needs a toolchain w/ C++, NPTL" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/package/shairport-sync/S99shairport-sync b/package/shairport-sync/S99shairport-sync new file mode 100644 index 00000000..80b2fddb --- /dev/null +++ b/package/shairport-sync/S99shairport-sync @@ -0,0 +1,27 @@ +#! /bin/sh + +# Additional options that are passed to Shairport Sync +OPTIONS="-d" + +case "$1" in + start) + printf "Starting shairport-sync: " + start-stop-daemon -S -q --exec /usr/bin/shairport-sync -- $OPTIONS + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping shairport-sync: " + start-stop-daemon -K -q --exec /usr/bin/shairport-sync \ + -p /var/run/shairport-sync/shairport-sync.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 + ;; +esac diff --git a/package/shairport-sync/shairport-sync.hash b/package/shairport-sync/shairport-sync.hash new file mode 100644 index 00000000..331866a3 --- /dev/null +++ b/package/shairport-sync/shairport-sync.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 17990cb2620551caa07a1c3b371889e55803071eaada04e958c356547a7e1795 shairport-sync-3.3.9.tar.gz +sha256 1daaa904985807b7f9f2fa91f6b19f3faadf8df4e813f7451a691f89a6965e3f LICENSES diff --git a/package/shairport-sync/shairport-sync.mk b/package/shairport-sync/shairport-sync.mk new file mode 100644 index 00000000..4430014e --- /dev/null +++ b/package/shairport-sync/shairport-sync.mk @@ -0,0 +1,101 @@ +################################################################################ +# +# shairport-sync +# +################################################################################ + +SHAIRPORT_SYNC_VERSION = 3.3.9 +SHAIRPORT_SYNC_SITE = $(call github,mikebrady,shairport-sync,$(SHAIRPORT_SYNC_VERSION)) + +SHAIRPORT_SYNC_LICENSE = MIT, BSD-3-Clause +SHAIRPORT_SYNC_LICENSE_FILES = LICENSES +SHAIRPORT_SYNC_DEPENDENCIES = alsa-lib libconfig popt host-pkgconf + +# git clone, no configure +SHAIRPORT_SYNC_AUTORECONF = YES + +SHAIRPORT_SYNC_CONF_OPTS = --with-alsa \ + --with-metadata \ + --with-pipe \ + --with-stdout + +SHAIRPORT_SYNC_CONF_ENV += LIBS="$(SHAIRPORT_SYNC_CONF_LIBS)" + +# Avahi or tinysvcmdns (shaiport-sync bundles its own version of tinysvcmdns). +ifeq ($(BR2_PACKAGE_AVAHI_LIBAVAHI_CLIENT),y) +SHAIRPORT_SYNC_DEPENDENCIES += avahi +SHAIRPORT_SYNC_CONF_OPTS += --with-avahi --without-tinysvcmdns +else +SHAIRPORT_SYNC_CONF_OPTS += --without-avahi --with-tinysvcmdns +endif + +ifeq ($(BR2_PACKAGE_LIBDAEMON),y) +SHAIRPORT_SYNC_DEPENDENCIES += libdaemon +SHAIRPORT_SYNC_CONF_OPTS += --with-libdaemon +else +SHAIRPORT_SYNC_CONF_OPTS += --without-libdaemon +endif + +# OpenSSL or mbedTLS +ifeq ($(BR2_PACKAGE_OPENSSL),y) +SHAIRPORT_SYNC_DEPENDENCIES += openssl +SHAIRPORT_SYNC_CONF_OPTS += --with-ssl=openssl +else +SHAIRPORT_SYNC_DEPENDENCIES += mbedtls +SHAIRPORT_SYNC_CONF_OPTS += --with-ssl=mbedtls +SHAIRPORT_SYNC_CONF_LIBS += -lmbedx509 -lmbedcrypto +ifeq ($(BR2_PACKAGE_MBEDTLS_COMPRESSION),y) +SHAIRPORT_SYNC_CONF_LIBS += -lz +endif +endif + +ifeq ($(BR2_PACKAGE_SHAIRPORT_SYNC_CONVOLUTION),y) +SHAIRPORT_SYNC_DEPENDENCIES += libsndfile +SHAIRPORT_SYNC_CONF_OPTS += --with-convolution +else +SHAIRPORT_SYNC_CONF_OPTS += --without-convolution +endif + +ifeq ($(BR2_PACKAGE_SHAIRPORT_SYNC_DBUS),y) +SHAIRPORT_SYNC_DEPENDENCIES += libglib2 +SHAIRPORT_SYNC_CONF_OPTS += --with-dbus-interface --with-mpris-interface +define SHAIRPORT_SYNC_INSTALL_DBUS + $(INSTALL) -m 0644 -D \ + $(@D)/scripts/shairport-sync-dbus-policy.conf \ + $(TARGET_DIR)/etc/dbus-1/system.d/shairport-sync-dbus.conf + $(INSTALL) -m 0644 -D \ + $(@D)/scripts/shairport-sync-mpris-policy.conf \ + $(TARGET_DIR)/etc/dbus-1/system.d/shairport-sync-mpris.conf +endef +else +SHAIRPORT_SYNC_CONF_OPTS += --without-dbus-interface --without-mpris-interface +endif + +ifeq ($(BR2_PACKAGE_SHAIRPORT_SYNC_LIBSOXR),y) +SHAIRPORT_SYNC_DEPENDENCIES += libsoxr +SHAIRPORT_SYNC_CONF_OPTS += --with-soxr +else +SHAIRPORT_SYNC_CONF_OPTS += --without-soxr +endif + +ifeq ($(BR2_PACKAGE_SHAIRPORT_SYNC_MQTT),y) +SHAIRPORT_SYNC_DEPENDENCIES += avahi dbus mosquitto +SHAIRPORT_SYNC_CONF_OPTS += --with-mqtt-client +else +SHAIRPORT_SYNC_CONF_OPTS += --without-mqtt-client +endif + +define SHAIRPORT_SYNC_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/shairport-sync \ + $(TARGET_DIR)/usr/bin/shairport-sync + $(INSTALL) -D -m 0644 $(@D)/scripts/shairport-sync.conf \ + $(TARGET_DIR)/etc/shairport-sync.conf + $(SHAIRPORT_SYNC_INSTALL_DBUS) +endef + +define SHAIRPORT_SYNC_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/shairport-sync/S99shairport-sync \ + $(TARGET_DIR)/etc/init.d/S99shairport-sync +endef + +$(eval $(autotools-package)) diff --git a/package/shapelib/Config.in b/package/shapelib/Config.in new file mode 100644 index 00000000..7c7b9c76 --- /dev/null +++ b/package/shapelib/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_SHAPELIB + bool "shapelib" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + 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/ + +comment "shapelib needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/shapelib/shapelib.hash b/package/shapelib/shapelib.hash new file mode 100644 index 00000000..f542ee79 --- /dev/null +++ b/package/shapelib/shapelib.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 19528b24377241705637320c367943031ad5088665d1fb0e1eaa52a71264a6c4 shapelib-1.6.0.tar.gz +sha256 681e386e44a19d7d0674b4320272c90e66b6610b741e7e6305f8219c42e85366 LICENSE-LGPL +sha256 67f1348ec73ef6343f0dbb3fa0612c321da4073e1ee68ffc99fcd3f2d2a65813 LICENSE-MIT +sha256 15e1205bb007d4d7821f7b1cc461ba8d051647e86dbc9baf1bb6f68b10588eeb web/license.html diff --git a/package/shapelib/shapelib.mk b/package/shapelib/shapelib.mk new file mode 100644 index 00000000..a36a65f8 --- /dev/null +++ b/package/shapelib/shapelib.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# shapelib +# +################################################################################ + +SHAPELIB_VERSION = 1.6.0 +SHAPELIB_SITE = http://download.osgeo.org/shapelib +SHAPELIB_LICENSE = MIT or LGPL-2.0 +SHAPELIB_LICENSE_FILES = LICENSE-LGPL LICENSE-MIT web/license.html +SHAPELIB_CPE_ID_VENDOR = osgeo +SHAPELIB_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/shared-mime-info/0001-Remove-incorrect-dependency-from-install-data-hook.patch b/package/shared-mime-info/0001-Remove-incorrect-dependency-from-install-data-hook.patch new file mode 100644 index 00000000..4fe7f521 --- /dev/null +++ b/package/shared-mime-info/0001-Remove-incorrect-dependency-from-install-data-hook.patch @@ -0,0 +1,47 @@ +From 3bcb00e27ab09c433fdfecace0d48a6a7ed55ea8 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 22 Apr 2016 23:14:32 +0200 +Subject: [PATCH] Remove incorrect dependency from install-data-hook + +Having install-binPROGRAMS as a dependency of install-data-hook is not +correct, as it causes the installation of programs to be executed +twice, and those two installations are racing with each other, causing +random installation failures. + +In addition, this dependency is not needed: the install-data-hook +calls the update-mime-database program in one of two ways: + + - When cross-compiling, using the program pointed by + UPDATE_MIME_DATABASE, which is already built, and is not installed + by install-binPROGRAMS. + + - When compiling natively, suing the update-mime-database from the + build directory, so there is no need to depend on + install-binPROGRAMS. + +This patch is similar to the patch used by the Yocto Project at +http://git.yoctoproject.org/cgit.cgi/poky/plain/meta/recipes-support/shared-mime-info/shared-mime-info/install-data-hook.patch. + +Signed-off-by: Thomas Petazzoni +[Upstream status: +https://gitlab.freedesktop.org/xdg/shared-mime-info/merge_requests/18] +--- + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 6fc4f73..c318dc3 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -52,7 +52,7 @@ else + update_mime_database="$(top_builddir)/update-mime-database$(EXEEXT)" + endif + +-install-data-hook: install-binPROGRAMS ++install-data-hook: + if ENABLE_UPDATE_MIMEDB + $(update_mime_database) -V "$(DESTDIR)$(datadir)/mime" + endif +-- +2.6.4 + diff --git a/package/shared-mime-info/Config.in b/package/shared-mime-info/Config.in new file mode 100644 index 00000000..514044be --- /dev/null +++ b/package/shared-mime-info/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_SHARED_MIME_INFO + bool "shared-mime-info" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBXML2 + help + The shared-mime-info package contains the core + database of common types and the update-mime-database + command used to extend it. + + https://freedesktop.org/wiki/Software/shared-mime-info/ + +comment "shared-mime-info needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/shared-mime-info/shared-mime-info.hash b/package/shared-mime-info/shared-mime-info.hash new file mode 100644 index 00000000..062d76da --- /dev/null +++ b/package/shared-mime-info/shared-mime-info.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 18b2f0fe07ed0d6f81951a5fd5ece44de9c8aeb4dc5bb20d4f595f6cc6bd403e shared-mime-info-1.12.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/shared-mime-info/shared-mime-info.mk b/package/shared-mime-info/shared-mime-info.mk new file mode 100644 index 00000000..9932bd2d --- /dev/null +++ b/package/shared-mime-info/shared-mime-info.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# shared-mime-info +# +################################################################################ + +SHARED_MIME_INFO_VERSION = 1.12 +SHARED_MIME_INFO_SOURCE = shared-mime-info-$(SHARED_MIME_INFO_VERSION).tar.xz +SHARED_MIME_INFO_SITE = \ + https://gitlab.freedesktop.org/xdg/shared-mime-info/uploads/80c7f1afbcad2769f38aeb9ba6317a51 +SHARED_MIME_INFO_INSTALL_STAGING = YES +# 0001-Remove-incorrect-dependency-from-install-data-hook.patch +SHARED_MIME_INFO_AUTORECONF = YES +SHARED_MIME_INFO_CONF_ENV = XMLLINT=$(HOST_DIR)/bin/xmllint +SHARED_MIME_INFO_DEPENDENCIES = host-shared-mime-info libxml2 libglib2 +SHARED_MIME_INFO_CONF_OPTS = \ + --disable-update-mimedb \ + --disable-default-make-check +HOST_SHARED_MIME_INFO_CONF_OPTS = \ + --disable-update-mimedb \ + --disable-default-make-check +SHARED_MIME_INFO_LICENSE = GPL-2.0 +SHARED_MIME_INFO_LICENSE_FILES = COPYING + +HOST_SHARED_MIME_INFO_DEPENDENCIES = \ + host-pkgconf host-intltool host-libxml2 host-libglib2 + +define SHARED_MIME_INFO_INSTALL_TARGET_CMDS + $(HOST_MAKE_ENV) $(SHARED_MIME_INFO_HOST_BINARY) $(STAGING_DIR)/usr/share/mime + $(INSTALL) -D $(STAGING_DIR)/usr/share/mime/mime.cache $(TARGET_DIR)/usr/share/mime/mime.cache +endef + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) + +# shared-mime-info for the host +SHARED_MIME_INFO_HOST_BINARY = $(HOST_DIR)/bin/update-mime-database diff --git a/package/shellinabox/0001-Makefile-disable-always-building-statically.patch b/package/shellinabox/0001-Makefile-disable-always-building-statically.patch new file mode 100644 index 00000000..2f2097e0 --- /dev/null +++ b/package/shellinabox/0001-Makefile-disable-always-building-statically.patch @@ -0,0 +1,26 @@ +From c060e6f06a81ffa400266a6d0bfc58511265a16f Mon Sep 17 00:00:00 2001 +From: Olivier Singla +Date: Thu, 4 Aug 2016 21:23:41 +0200 +Subject: [PATCH] Makefile: disable always building statically + +Signed-off-by: Olivier Singla +--- + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 7b8e7ab..5c4c71e 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -126,7 +126,7 @@ BUILT_SOURCES = shellinabox/beep.h \ + + shellinaboxd_LDADD = liblogging.la \ + libhttp.la +-shellinaboxd_LDFLAGS = -static ++shellinaboxd_LDFLAGS = + ## Added this for compatibility with older versions of autoconf/automake + docdir = ${datadir}/doc/${PACKAGE} + +-- +2.7.4 + diff --git a/package/shellinabox/0002-CVE-2018-16789-fix-for-broken-multipart-form-data.patch b/package/shellinabox/0002-CVE-2018-16789-fix-for-broken-multipart-form-data.patch new file mode 100644 index 00000000..4b15f419 --- /dev/null +++ b/package/shellinabox/0002-CVE-2018-16789-fix-for-broken-multipart-form-data.patch @@ -0,0 +1,26 @@ +From 7f47efe1717c381f86566fabe0b1ced8cb98fe8f Mon Sep 17 00:00:00 2001 +From: irsl +Date: Fri, 26 Oct 2018 11:51:15 +0200 +Subject: [PATCH] fix for broken multipart/form-data + +Malformed multipart/form-data payload results in infinite loop and thus denial of service +[Upstream status: https://github.com/shellinabox/shellinabox/pull/446] +Signed-off-by: Fabrice Fontaine +--- + libhttp/url.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/libhttp/url.c b/libhttp/url.c +index ed29475..4177871 100644 +--- a/libhttp/url.c ++++ b/libhttp/url.c +@@ -312,6 +312,9 @@ static void urlParsePostBody(struct URL *url, + } + } + } ++ } else { ++ warn("[http] broken multipart/form-data!"); ++ break; + } + } + if (lastPart) { diff --git a/package/shellinabox/Config.in b/package/shellinabox/Config.in new file mode 100644 index 00000000..63a298dc --- /dev/null +++ b/package/shellinabox/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_SHELLINABOX + bool "shellinabox" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # dlfcn.h + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + Shell In A Box implements a web server that can export + arbitrary command line tools to a web based terminal + emulator. This emulator is accessible to any JavaScript and + CSS enabled web browser and does not require any additional + browser plugins. + + https://github.com/shellinabox/shellinabox + +comment "shellinabox needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/package/shellinabox/shellinabox.hash b/package/shellinabox/shellinabox.hash new file mode 100644 index 00000000..6bbaf73c --- /dev/null +++ b/package/shellinabox/shellinabox.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 27a5ec6c3439f87aee238c47cc56e7357a6249e5ca9ed0f044f0057ef389d81e shellinabox-2.20.tar.gz +sha256 04ef60ab9b83cde6f0862ea18474454477efb34c52ebce1f8d8260a398a39362 COPYING +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 GPL-2 diff --git a/package/shellinabox/shellinabox.mk b/package/shellinabox/shellinabox.mk new file mode 100644 index 00000000..725b8d9c --- /dev/null +++ b/package/shellinabox/shellinabox.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# shellinabox +# +################################################################################ + +SHELLINABOX_VERSION = 2.20 +SHELLINABOX_SITE = $(call github,shellinabox,shellinabox,v$(SHELLINABOX_VERSION)) +SHELLINABOX_LICENSE = GPL-2.0 with OpenSSL exception +SHELLINABOX_LICENSE_FILES = COPYING GPL-2 +SHELLINABOX_CPE_ID_VALID = YES + +# 0002-CVE-2018-16789-fix-for-broken-multipart-form-data.patch +SHELLINABOX_IGNORE_CVES += CVE-2018-16789 + +# Fetching from Github, and patching Makefile.am, so we need to autoreconf +SHELLINABOX_AUTORECONF = YES + +# The OpenSSL support is supposed to be optional, but in practice, +# with OpenSSL disabled, it fails to build. See +# https://github.com/shellinabox/shellinabox/issues/385. +SHELLINABOX_DEPENDENCIES = zlib openssl +SHELLINABOX_CONF_OPTS = \ + --disable-runtime-loading \ + --enable-ssl + +# musl's implementation of utmpx is a dummy one, and some aspects of +# it cause build failures in shellinabox +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +SHELLINABOX_CONF_OPTS += --disable-utmp +endif + +$(eval $(autotools-package)) diff --git a/package/signal-estimator/Config.in b/package/signal-estimator/Config.in new file mode 100644 index 00000000..30c6e966 --- /dev/null +++ b/package/signal-estimator/Config.in @@ -0,0 +1,17 @@ +comment "signal-estimator needs a toochain w/ C++, threads, gcc >= 7" + depends on !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_7 \ + || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_SIGNAL_ESTIMATOR + bool "signal-estimator" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17 + depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib + select BR2_PACKAGE_ALSA_LIB + help + signal-estimator is a small command-line and GUI tool allowing + to measure different characteristics of the signal looped back + from audio output to audio input. + + https://github.com/gavv/signal-estimator diff --git a/package/signal-estimator/signal-estimator.hash b/package/signal-estimator/signal-estimator.hash new file mode 100644 index 00000000..656ca6ca --- /dev/null +++ b/package/signal-estimator/signal-estimator.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 cdf6ce2d0eec999c244e58159994ac304b41f6d299b6a3d8a5386105e6e966f5 signal-estimator-v0.0.4-git4.tar.gz +sha256 e836fc784cb6ed2d160f1c1ecdf1303ed57436a86f66f97e5406a1b79e6db55e LICENSE diff --git a/package/signal-estimator/signal-estimator.mk b/package/signal-estimator/signal-estimator.mk new file mode 100644 index 00000000..cb1594b5 --- /dev/null +++ b/package/signal-estimator/signal-estimator.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# signal-estimator +# +################################################################################ + +SIGNAL_ESTIMATOR_VERSION = v0.0.4 +SIGNAL_ESTIMATOR_SITE = https://github.com/gavv/signal-estimator +SIGNAL_ESTIMATOR_SITE_METHOD = git +SIGNAL_ESTIMATOR_GIT_SUBMODULES = YES + +SIGNAL_ESTIMATOR_LICENSE = MIT +SIGNAL_ESTIMATOR_LICENSE_FILES = LICENSE + +SIGNAL_ESTIMATOR_DEPENDENCIES = alsa-lib + +SIGNAL_ESTIMATOR_CONF_OPTS += -DBUILD_GUI=OFF + +$(eval $(cmake-package)) diff --git a/package/sigrok-cli/Config.in b/package/sigrok-cli/Config.in new file mode 100644 index 00000000..df1cd95b --- /dev/null +++ b/package/sigrok-cli/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_SIGROK_CLI + bool "sigrok-cli" + # libsigrok->libglib2: + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU + # libsigrok->libzip + depends on !BR2_STATIC_LIBS + # libsigrok + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + depends on BR2_ENABLE_LOCALE + select BR2_PACKAGE_LIBSIGROK + help + Sigrok-cli is a command-line frontend for the sigrok + software suite. + + http://sigrok.org/wiki/Sigrok-cli + +comment "sigrok-cli needs a toolchain w/ locale, wchar, threads, dynamic library, gcc >= 4.7" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || BR2_STATIC_LIBS \ + || !BR2_ENABLE_LOCALE diff --git a/package/sigrok-cli/sigrok-cli.hash b/package/sigrok-cli/sigrok-cli.hash new file mode 100644 index 00000000..cdf004fa --- /dev/null +++ b/package/sigrok-cli/sigrok-cli.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 71d0443f36897bf565732dec206830dbea0f2789b6601cf10536b286d1140ab8 sigrok-cli-0.7.2.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/sigrok-cli/sigrok-cli.mk b/package/sigrok-cli/sigrok-cli.mk new file mode 100644 index 00000000..af3c0a03 --- /dev/null +++ b/package/sigrok-cli/sigrok-cli.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# sigrok-cli +# +################################################################################ + +SIGROK_CLI_VERSION = 0.7.2 +SIGROK_CLI_SITE = http://sigrok.org/download/source/sigrok-cli +SIGROK_CLI_LICENSE = GPL-3.0+ +SIGROK_CLI_LICENSE_FILES = COPYING +SIGROK_CLI_SELINUX_MODULES = sigrok +SIGROK_CLI_DEPENDENCIES = host-pkgconf libsigrok + +ifeq ($(BR2_PACKAGE_LIBSIGROKDECODE),y) +SIGROK_CLI_CONF_OPTS += --with-libsigrokdecode +SIGROK_CLI_DEPENDENCIES += libsigrokdecode +else +SIGROK_CLI_CONF_OPTS += --with-libsigrokdecode=NO +endif + +$(eval $(autotools-package)) diff --git a/package/simple-mail/Config.in b/package/simple-mail/Config.in new file mode 100644 index 00000000..681a8410 --- /dev/null +++ b/package/simple-mail/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SIMPLE_MAIL + bool "simple-mail" + depends on BR2_PACKAGE_QT5 + select BR2_PACKAGE_QT5BASE_NETWORK + select BR2_PACKAGE_OPENSSL + help + An SMTP library written in C++ for Qt. + + https://github.com/cutelyst/simple-mail diff --git a/package/simple-mail/simple-mail.hash b/package/simple-mail/simple-mail.hash new file mode 100644 index 00000000..67d6caff --- /dev/null +++ b/package/simple-mail/simple-mail.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 2026f2017662508b0f25da72694f1dd13ab3ccf82c0454f7c40f8a6cc450c410 simple-mail-2.3.0.tar.gz + +# Hash for license file +sha256 592987e8510228d546540b84a22444bde98e48d03078d3b2eefcd889bec5ce8c LICENSE diff --git a/package/simple-mail/simple-mail.mk b/package/simple-mail/simple-mail.mk new file mode 100644 index 00000000..68484f79 --- /dev/null +++ b/package/simple-mail/simple-mail.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# simple-mail +# +################################################################################ + +SIMPLE_MAIL_VERSION = 2.3.0 +SIMPLE_MAIL_SITE = $(call github,cutelyst,simple-mail,v$(SIMPLE_MAIL_VERSION)) +SIMPLE_MAIL_INSTALL_STAGING = YES +SIMPLE_MAIL_LICENSE = LGPL-2.1+ +SIMPLE_MAIL_LICENSE_FILES = LICENSE +SIMPLE_MAIL_DEPENDENCIES = qt5base +SIMPLE_MAIL_CONF_OPTS = -DBUILD_DEMOS=OFF + +$(eval $(cmake-package)) diff --git a/package/siproxd/Config.in b/package/siproxd/Config.in new file mode 100644 index 00000000..24c710b3 --- /dev/null +++ b/package/siproxd/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_SIPROXD + bool "siproxd" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBOSIP2 + select BR2_PACKAGE_LIBTOOL + select BR2_PACKAGE_SQLITE + help + Siproxd is a proxy/masquerading daemon for SIP (Session + Initiation Protocol), which is used in IP telephony. It + handles registrations of SIP clients on a private IP network + and performs rewriting of the SIP message bodies to make SIP + connections work via a masquerading firewall (NAT). It allows + SIP software clients (like kphone, linphone) or SIP hardware + clients (Voice over IP phones which are SIP-compatible, such + as those from Cisco, Grandstream or Snom) to work behind an IP + masquerading firewall or NAT router. + + http://siproxd.sourceforge.net/ + +comment "siproxd needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/siproxd/siproxd.hash b/package/siproxd/siproxd.hash new file mode 100644 index 00000000..9c9b8b8f --- /dev/null +++ b/package/siproxd/siproxd.hash @@ -0,0 +1,10 @@ +# Locally calculated after checking pgp signature from: +# https://downloads.sourceforge.net/project/siproxd/siproxd/0.8.3/siproxd-0.8.3.tar.gz.asc +sha256 9a6d7a6bb6fff162775b1e1fb7018de9c69642cbf8626185dc6ffceeeba07736 siproxd-0.8.3.tar.gz + +# https://sourceforge.net/projects/siproxd/files/siproxd/0.8.3/ +sha1 d13d4a05b8a16dbe20d04b99b535610e49050d9d siproxd-0.8.3.tar.gz +md5 9a9d2c89e5f0c59fdde9444a66d8372c siproxd-0.8.3.tar.gz + +# Hash for license files: +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/package/siproxd/siproxd.mk b/package/siproxd/siproxd.mk new file mode 100644 index 00000000..228f0855 --- /dev/null +++ b/package/siproxd/siproxd.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# siproxd +# +################################################################################ + +SIPROXD_VERSION = 0.8.3 +SIPROXD_SITE = https://downloads.sourceforge.net/project/siproxd/siproxd/$(SIPROXD_VERSION) + +SIPROXD_LICENSE = GPL-2.0+ +SIPROXD_LICENSE_FILES = COPYING + +SIPROXD_DEPENDENCIES = libosip2 libtool sqlite + +SIPROXD_CONF_OPTS = --without-included-ltdl + +$(eval $(autotools-package)) diff --git a/package/sispmctl/Config.in b/package/sispmctl/Config.in new file mode 100644 index 00000000..b08116e8 --- /dev/null +++ b/package/sispmctl/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_SISPMCTL + bool "sispmctl" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + help + sispmctl is an application enabling the use of the GEMBIRD + SiS-PM and mSiS(sispm) USB-controlled power-outlet device + under Linux. Note that the device is also sold under + different Names, i.e. as "IntelliPlug" in Germany. + + http://sispmctl.sourceforge.net/ + +comment "sispmctl needs a toolchain w/ threads, wchar, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_USE_MMU diff --git a/package/sispmctl/sispmctl.hash b/package/sispmctl/sispmctl.hash new file mode 100644 index 00000000..f6cff191 --- /dev/null +++ b/package/sispmctl/sispmctl.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 74b94a3710046b15070c7311f0cacb81554c86b4227719cc2733cb96c7052578 sispmctl-4.11.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/sispmctl/sispmctl.mk b/package/sispmctl/sispmctl.mk new file mode 100644 index 00000000..df397938 --- /dev/null +++ b/package/sispmctl/sispmctl.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# sispmctl +# +################################################################################ + +SISPMCTL_VERSION = 4.11 +SISPMCTL_SITE = https://downloads.sourceforge.net/project/sispmctl/sispmctl/sispmctl-$(SISPMCTL_VERSION) +SISPMCTL_LICENSE = GPL-2.0+ +SISPMCTL_LICENSE_FILES = COPYING +SISPMCTL_DEPENDENCIES = libusb-compat + +SISPMCTL_CONF_OPTS = --enable-webless + +$(eval $(autotools-package)) diff --git a/package/skalibs/Config.in b/package/skalibs/Config.in new file mode 100644 index 00000000..7802ae30 --- /dev/null +++ b/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/package/skalibs/skalibs.hash b/package/skalibs/skalibs.hash new file mode 100644 index 00000000..1e6bd966 --- /dev/null +++ b/package/skalibs/skalibs.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 ddfec5730e5b2f19d0381ecf7f796b39a6e473236bda0ad8d3776a3fe7b07e43 skalibs-2.14.2.0.tar.gz +sha256 fdc931295525dd0009cdf339189cbecd228d65cefe33402f037f9b046f07989e COPYING diff --git a/package/skalibs/skalibs.mk b/package/skalibs/skalibs.mk new file mode 100644 index 00000000..45f3e15a --- /dev/null +++ b/package/skalibs/skalibs.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# skalibs +# +################################################################################ + +SKALIBS_VERSION = 2.14.2.0 +SKALIBS_SITE = https://skarnet.org/software/skalibs +SKALIBS_LICENSE = ISC +SKALIBS_LICENSE_FILES = COPYING +SKALIBS_INSTALL_STAGING = YES + +SKALIBS_CONF_OPTS = \ + --prefix=/ \ + --with-default-path=/sbin:/usr/sbin:/bin:/usr/bin \ + --with-sysdep-devurandom=yes \ + $(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) \ + --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/package/skeleton-custom/Config.in b/package/skeleton-custom/Config.in new file mode 100644 index 00000000..601c3b24 --- /dev/null +++ b/package/skeleton-custom/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_SKELETON_CUSTOM + bool + select BR2_PACKAGE_HAS_SKELETON + +config BR2_PACKAGE_PROVIDES_SKELETON + default "skeleton-custom" if BR2_PACKAGE_SKELETON_CUSTOM diff --git a/package/skeleton-custom/skeleton-custom.mk b/package/skeleton-custom/skeleton-custom.mk new file mode 100644 index 00000000..b05c834b --- /dev/null +++ b/package/skeleton-custom/skeleton-custom.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# skeleton-custom +# +################################################################################ + +# The skeleton can't depend on the toolchain, since all packages depends on the +# skeleton and the toolchain is a target package, as is skeleton. +# Hence, skeleton would depends on the toolchain and the toolchain would depend +# on skeleton. +SKELETON_CUSTOM_ADD_TOOLCHAIN_DEPENDENCY = NO +SKELETON_CUSTOM_ADD_SKELETON_DEPENDENCY = NO + +SKELETON_CUSTOM_PROVIDES = skeleton + +SKELETON_CUSTOM_INSTALL_STAGING = YES + +SKELETON_CUSTOM_PATH = $(call qstrip,$(BR2_ROOTFS_SKELETON_CUSTOM_PATH)) + +ifeq ($(BR2_PACKAGE_SKELETON_CUSTOM)$(BR_BUILDING),yy) +ifeq ($(SKELETON_CUSTOM_PATH),) +$(error No path specified for the custom skeleton) +endif +endif + +# For a merged /usr, ensure that /lib, /bin and /sbin and their /usr +# counterparts are appropriately setup as symlinks ones to the others. +ifeq ($(BR2_ROOTFS_MERGED_USR),y) +SKELETON_CUSTOM_NOT_MERGED_USR_DIRS = \ + $(shell support/scripts/check-merged-usr.sh $(SKELETON_CUSTOM_PATH)) +endif # merged /usr + +ifeq ($(BR2_PACKAGE_SKELETON_CUSTOM)$(BR_BUILDING),yy) +ifneq ($(SKELETON_CUSTOM_NOT_MERGED_USR_DIRS),) +$(error The custom skeleton in $(SKELETON_CUSTOM_PATH) is not \ + using a merged /usr for the following directories: \ + $(SKELETON_CUSTOM_NOT_MERGED_USR_DIRS)) +endif +endif + +# The target-dir-warning file and the lib{32,64} symlinks are the only +# things we customise in the custom skeleton. +define SKELETON_CUSTOM_INSTALL_TARGET_CMDS + $(call SYSTEM_RSYNC,$(SKELETON_CUSTOM_PATH),$(TARGET_DIR)) + $(call SYSTEM_USR_SYMLINKS_OR_DIRS,$(TARGET_DIR)) + $(call SYSTEM_LIB_SYMLINK,$(TARGET_DIR)) + $(INSTALL) -m 0644 support/misc/target-dir-warning.txt \ + $(TARGET_DIR_WARNING_FILE) +endef + +# For the staging dir, we don't really care what we install, but we +# need the /lib and /usr/lib appropriately setup. Since we ensure, +# above, that they are correct in the skeleton, we can simply copy the +# skeleton to staging. +define SKELETON_CUSTOM_INSTALL_STAGING_CMDS + $(call SYSTEM_RSYNC,$(SKELETON_CUSTOM_PATH),$(STAGING_DIR)) + $(call SYSTEM_USR_SYMLINKS_OR_DIRS,$(STAGING_DIR)) + $(call SYSTEM_LIB_SYMLINK,$(STAGING_DIR)) +endef + +$(eval $(generic-package)) diff --git a/package/skeleton-init-common/Config.in b/package/skeleton-init-common/Config.in new file mode 100644 index 00000000..0fd95de8 --- /dev/null +++ b/package/skeleton-init-common/Config.in @@ -0,0 +1,2 @@ +config BR2_PACKAGE_SKELETON_INIT_COMMON + bool diff --git a/package/skeleton-init-common/skeleton-init-common.mk b/package/skeleton-init-common/skeleton-init-common.mk new file mode 100644 index 00000000..4a67f51c --- /dev/null +++ b/package/skeleton-init-common/skeleton-init-common.mk @@ -0,0 +1,105 @@ +################################################################################ +# +# skeleton-init-common +# +################################################################################ + +# The skeleton can't depend on the toolchain, since all packages depends on the +# skeleton and the toolchain is a target package, as is skeleton. +# Hence, skeleton would depends on the toolchain and the toolchain would depend +# on skeleton. +SKELETON_INIT_COMMON_ADD_TOOLCHAIN_DEPENDENCY = NO +SKELETON_INIT_COMMON_ADD_SKELETON_DEPENDENCY = NO + +# The skeleton also handles the merged /usr case in the sysroot +SKELETON_INIT_COMMON_INSTALL_STAGING = YES + +SKELETON_INIT_COMMON_PATH = system/skeleton + +define SKELETON_INIT_COMMON_INSTALL_TARGET_CMDS + $(call SYSTEM_RSYNC,$(SKELETON_INIT_COMMON_PATH),$(TARGET_DIR)) + $(call SYSTEM_USR_SYMLINKS_OR_DIRS,$(TARGET_DIR)) + $(call SYSTEM_LIB_SYMLINK,$(TARGET_DIR)) + $(SED) 's,@PATH@,$(BR2_SYSTEM_DEFAULT_PATH),' $(TARGET_DIR)/etc/profile + $(INSTALL) -m 0644 support/misc/target-dir-warning.txt \ + $(TARGET_DIR_WARNING_FILE) +endef + +# We don't care much about what goes in staging, as long as it is +# correctly setup for merged/non-merged /usr. The simplest is to +# fill it in with the content of the skeleton. +define SKELETON_INIT_COMMON_INSTALL_STAGING_CMDS + $(call SYSTEM_RSYNC,$(SKELETON_INIT_COMMON_PATH),$(STAGING_DIR)) + $(call SYSTEM_USR_SYMLINKS_OR_DIRS,$(STAGING_DIR)) + $(call SYSTEM_LIB_SYMLINK,$(STAGING_DIR)) + $(INSTALL) -d -m 0755 $(STAGING_DIR)/usr/include +endef + +SKELETON_INIT_COMMON_HOSTNAME = $(call qstrip,$(BR2_TARGET_GENERIC_HOSTNAME)) +SKELETON_INIT_COMMON_ISSUE = $(call qstrip,$(BR2_TARGET_GENERIC_ISSUE)) +SKELETON_INIT_COMMON_ROOT_PASSWD = $(call qstrip,$(BR2_TARGET_GENERIC_ROOT_PASSWD)) +SKELETON_INIT_COMMON_PASSWD_METHOD = $(call qstrip,$(BR2_TARGET_GENERIC_PASSWD_METHOD)) +SKELETON_INIT_COMMON_BIN_SH = $(call qstrip,$(BR2_SYSTEM_BIN_SH)) + +ifneq ($(SKELETON_INIT_COMMON_HOSTNAME),) +SKELETON_INIT_COMMON_HOSTS_LINE = $(SKELETON_INIT_COMMON_HOSTNAME) +SKELETON_INIT_COMMON_SHORT_HOSTNAME = $(firstword $(subst ., ,$(SKELETON_INIT_COMMON_HOSTNAME))) +ifneq ($(SKELETON_INIT_COMMON_HOSTNAME),$(SKELETON_INIT_COMMON_SHORT_HOSTNAME)) +SKELETON_INIT_COMMON_HOSTS_LINE += $(SKELETON_INIT_COMMON_SHORT_HOSTNAME) +endif +define SKELETON_INIT_COMMON_SET_HOSTNAME + mkdir -p $(TARGET_DIR)/etc + echo "$(SKELETON_INIT_COMMON_HOSTNAME)" > $(TARGET_DIR)/etc/hostname + $(SED) '$$a \127.0.1.1\t$(SKELETON_INIT_COMMON_HOSTS_LINE)' \ + -e '/^127.0.1.1/d' $(TARGET_DIR)/etc/hosts +endef +SKELETON_INIT_COMMON_TARGET_FINALIZE_HOOKS += SKELETON_INIT_COMMON_SET_HOSTNAME +endif + +ifneq ($(SKELETON_INIT_COMMON_ISSUE),) +define SKELETON_INIT_COMMON_SET_ISSUE + mkdir -p $(TARGET_DIR)/etc + echo "$(SKELETON_INIT_COMMON_ISSUE)" > $(TARGET_DIR)/etc/issue +endef +SKELETON_INIT_COMMON_TARGET_FINALIZE_HOOKS += SKELETON_INIT_COMMON_SET_ISSUE +endif + +ifeq ($(BR2_TARGET_ENABLE_ROOT_LOGIN),y) +ifneq ($(filter $$1$$% $$5$$% $$6$$%,$(SKELETON_INIT_COMMON_ROOT_PASSWD)),) +SKELETON_INIT_COMMON_ROOT_PASSWORD = '$(SKELETON_INIT_COMMON_ROOT_PASSWD)' +else ifneq ($(SKELETON_INIT_COMMON_ROOT_PASSWD),) +# This variable will only be evaluated in the finalize stage, so we can +# be sure that host-mkpasswd will have already been built by that time. +SKELETON_INIT_COMMON_ROOT_PASSWORD = "`$(MKPASSWD) -m "$(SKELETON_INIT_COMMON_PASSWD_METHOD)" "$(SKELETON_INIT_COMMON_ROOT_PASSWD)"`" +endif +else # !BR2_TARGET_ENABLE_ROOT_LOGIN +SKELETON_INIT_COMMON_ROOT_PASSWORD = "*" +endif +define SKELETON_INIT_COMMON_SET_ROOT_PASSWD + $(SED) s,^root:[^:]*:,root:$(SKELETON_INIT_COMMON_ROOT_PASSWORD):, $(TARGET_DIR)/etc/shadow +endef +SKELETON_INIT_COMMON_TARGET_FINALIZE_HOOKS += SKELETON_INIT_COMMON_SET_ROOT_PASSWD + +ifeq ($(BR2_SYSTEM_BIN_SH_NONE),y) +define SKELETON_INIT_COMMON_SET_BIN_SH + rm -f $(TARGET_DIR)/bin/sh +endef +else +# Add /bin/sh to /etc/shells otherwise some login tools like dropbear +# can reject the user connection. See man shells. +define SKELETON_INIT_COMMON_ADD_SH_TO_SHELLS + grep -qsE '^/bin/sh$$' $(TARGET_DIR)/etc/shells \ + || echo "/bin/sh" >> $(TARGET_DIR)/etc/shells +endef +SKELETON_INIT_COMMON_TARGET_FINALIZE_HOOKS += SKELETON_INIT_COMMON_ADD_SH_TO_SHELLS +ifneq ($(SKELETON_INIT_COMMON_BIN_SH),) +define SKELETON_INIT_COMMON_SET_BIN_SH + ln -sf $(SKELETON_INIT_COMMON_BIN_SH) $(TARGET_DIR)/bin/sh + $(SED) '/^root:/s,[^/]*$$,$(SKELETON_INIT_COMMON_BIN_SH),' \ + $(TARGET_DIR)/etc/passwd +endef +endif +endif +SKELETON_INIT_COMMON_TARGET_FINALIZE_HOOKS += SKELETON_INIT_COMMON_SET_BIN_SH + +$(eval $(generic-package)) diff --git a/package/skeleton-init-none/Config.in b/package/skeleton-init-none/Config.in new file mode 100644 index 00000000..449bf661 --- /dev/null +++ b/package/skeleton-init-none/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_SKELETON_INIT_NONE + bool + select BR2_PACKAGE_HAS_SKELETON + select BR2_PACKAGE_SKELETON_INIT_COMMON + +config BR2_PACKAGE_PROVIDES_SKELETON + default "skeleton-init-none" if BR2_PACKAGE_SKELETON_INIT_NONE diff --git a/package/skeleton-init-none/skeleton-init-none.mk b/package/skeleton-init-none/skeleton-init-none.mk new file mode 100644 index 00000000..8181aa03 --- /dev/null +++ b/package/skeleton-init-none/skeleton-init-none.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# skeleton-init-none +# +################################################################################ + +# The skeleton can't depend on the toolchain, since all packages depends on the +# skeleton and the toolchain is a target package, as is skeleton. +# Hence, skeleton would depends on the toolchain and the toolchain would depend +# on skeleton. +SKELETON_INIT_NONE_ADD_TOOLCHAIN_DEPENDENCY = NO +SKELETON_INIT_NONE_ADD_SKELETON_DEPENDENCY = NO + +SKELETON_INIT_NONE_DEPENDENCIES = skeleton-init-common + +SKELETON_INIT_NONE_PROVIDES = skeleton + +$(eval $(generic-package)) diff --git a/package/skeleton-init-openrc/Config.in b/package/skeleton-init-openrc/Config.in new file mode 100644 index 00000000..8f4dd17e --- /dev/null +++ b/package/skeleton-init-openrc/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_SKELETON_INIT_OPENRC + bool + select BR2_PACKAGE_HAS_SKELETON + select BR2_PACKAGE_SKELETON_INIT_COMMON + +config BR2_PACKAGE_PROVIDES_SKELETON + default "skeleton-init-openrc" if BR2_PACKAGE_SKELETON_INIT_OPENRC diff --git a/package/skeleton-init-openrc/skeleton-init-openrc.mk b/package/skeleton-init-openrc/skeleton-init-openrc.mk new file mode 100644 index 00000000..b0538ad0 --- /dev/null +++ b/package/skeleton-init-openrc/skeleton-init-openrc.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# skeleton-init-openrc +# +################################################################################ + +# The skeleton can't depend on the toolchain, since all packages depends on the +# skeleton and the toolchain is a target package, as is skeleton. +# Hence, skeleton would depends on the toolchain and the toolchain would depend +# on skeleton. +SKELETON_INIT_OPENRC_ADD_TOOLCHAIN_DEPENDENCY = NO +SKELETON_INIT_OPENRC_ADD_SKELETON_DEPENDENCY = NO + +SKELETON_INIT_OPENRC_DEPENDENCIES = skeleton-init-common + +SKELETON_INIT_OPENRC_PROVIDES = skeleton + +ifeq ($(BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW),y) +# Comment /dev/root entry in fstab. When openrc does not find fstab entry for +# "/", it will try to remount "/" as "rw". +define SKELETON_INIT_OPENRC_ROOT_RO_OR_RW + $(SED) '\:^/dev/root[[:blank:]]:s/^/# /' $(TARGET_DIR)/etc/fstab +endef +else +# Uncomment /dev/root entry in fstab which has "ro" option so openrc notices +# it and doesn't remount root to rw. +define SKELETON_INIT_OPENRC_ROOT_RO_OR_RW + $(SED) '\:^#[[:blank:]]*/dev/root[[:blank:]]:s/^# //' $(TARGET_DIR)/etc/fstab +endef +endif # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW + +define SKELETON_INIT_OPENRC_INSTALL_TARGET_CMDS + $(call SYSTEM_RSYNC,$(SKELETON_INIT_OPENRC_PKGDIR)/skeleton,$(TARGET_DIR)) + $(SKELETON_INIT_OPENRC_ROOT_RO_OR_RW) +endef + +$(eval $(generic-package)) diff --git a/package/skeleton-init-openrc/skeleton/dev/log b/package/skeleton-init-openrc/skeleton/dev/log new file mode 120000 index 00000000..d96b3b1c --- /dev/null +++ b/package/skeleton-init-openrc/skeleton/dev/log @@ -0,0 +1 @@ +../tmp/log \ No newline at end of file diff --git a/package/skeleton-init-openrc/skeleton/etc/conf.d/.empty b/package/skeleton-init-openrc/skeleton/etc/conf.d/.empty new file mode 100644 index 00000000..e69de29b diff --git a/package/skeleton-init-openrc/skeleton/etc/fstab b/package/skeleton-init-openrc/skeleton/etc/fstab new file mode 100644 index 00000000..21cf49ba --- /dev/null +++ b/package/skeleton-init-openrc/skeleton/etc/fstab @@ -0,0 +1,4 @@ +# +/dev/root / ext2 ro,noauto 0 0 +tmpfs /tmp tmpfs mode=1777 0 0 +tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0 diff --git a/package/skeleton-init-openrc/skeleton/etc/runlevels/default/.empty b/package/skeleton-init-openrc/skeleton/etc/runlevels/default/.empty new file mode 100644 index 00000000..e69de29b diff --git a/package/skeleton-init-openrc/skeleton/etc/runlevels/default/sysv-rcs b/package/skeleton-init-openrc/skeleton/etc/runlevels/default/sysv-rcs new file mode 120000 index 00000000..ef5e0082 --- /dev/null +++ b/package/skeleton-init-openrc/skeleton/etc/runlevels/default/sysv-rcs @@ -0,0 +1 @@ +/etc/init.d/sysv-rcs \ No newline at end of file diff --git a/package/skeleton-init-openrc/skeleton/var/cache b/package/skeleton-init-openrc/skeleton/var/cache new file mode 120000 index 00000000..1431b0e4 --- /dev/null +++ b/package/skeleton-init-openrc/skeleton/var/cache @@ -0,0 +1 @@ +../tmp \ No newline at end of file diff --git a/package/skeleton-init-openrc/skeleton/var/lib/misc b/package/skeleton-init-openrc/skeleton/var/lib/misc new file mode 120000 index 00000000..f1fde8c1 --- /dev/null +++ b/package/skeleton-init-openrc/skeleton/var/lib/misc @@ -0,0 +1 @@ +../../tmp \ No newline at end of file diff --git a/package/skeleton-init-openrc/skeleton/var/lock b/package/skeleton-init-openrc/skeleton/var/lock new file mode 120000 index 00000000..386c09e7 --- /dev/null +++ b/package/skeleton-init-openrc/skeleton/var/lock @@ -0,0 +1 @@ +../run/lock \ No newline at end of file diff --git a/package/skeleton-init-openrc/skeleton/var/log b/package/skeleton-init-openrc/skeleton/var/log new file mode 120000 index 00000000..1431b0e4 --- /dev/null +++ b/package/skeleton-init-openrc/skeleton/var/log @@ -0,0 +1 @@ +../tmp \ No newline at end of file diff --git a/package/skeleton-init-openrc/skeleton/var/run b/package/skeleton-init-openrc/skeleton/var/run new file mode 120000 index 00000000..84ba55b9 --- /dev/null +++ b/package/skeleton-init-openrc/skeleton/var/run @@ -0,0 +1 @@ +../run \ No newline at end of file diff --git a/package/skeleton-init-openrc/skeleton/var/spool b/package/skeleton-init-openrc/skeleton/var/spool new file mode 120000 index 00000000..1431b0e4 --- /dev/null +++ b/package/skeleton-init-openrc/skeleton/var/spool @@ -0,0 +1 @@ +../tmp \ No newline at end of file diff --git a/package/skeleton-init-openrc/skeleton/var/tmp b/package/skeleton-init-openrc/skeleton/var/tmp new file mode 120000 index 00000000..1431b0e4 --- /dev/null +++ b/package/skeleton-init-openrc/skeleton/var/tmp @@ -0,0 +1 @@ +../tmp \ No newline at end of file diff --git a/package/skeleton-init-systemd/Config.in b/package/skeleton-init-systemd/Config.in new file mode 100644 index 00000000..59b21d15 --- /dev/null +++ b/package/skeleton-init-systemd/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_SKELETON_INIT_SYSTEMD + bool + select BR2_PACKAGE_HAS_SKELETON + select BR2_PACKAGE_SKELETON_INIT_COMMON + +config BR2_PACKAGE_PROVIDES_SKELETON + default "skeleton-init-systemd" if BR2_PACKAGE_SKELETON_INIT_SYSTEMD diff --git a/package/skeleton-init-systemd/factory/var.mount b/package/skeleton-init-systemd/factory/var.mount new file mode 100644 index 00000000..a681ab0c --- /dev/null +++ b/package/skeleton-init-systemd/factory/var.mount @@ -0,0 +1,15 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later +# Modelled after systemd's tmp.mount + +[Unit] +Description=Buildroot /var tmpfs +DefaultDependencies=no +Conflicts=umount.target +Before=local-fs.target umount.target +After=swap.target + +[Mount] +What=tmpfs +Where=/var +Type=tmpfs +Options=nosuid,nodev,size=50%%,nr_inodes=1m diff --git a/package/skeleton-init-systemd/fakeroot_tmpfiles.sh b/package/skeleton-init-systemd/fakeroot_tmpfiles.sh new file mode 100755 index 00000000..9498638f --- /dev/null +++ b/package/skeleton-init-systemd/fakeroot_tmpfiles.sh @@ -0,0 +1,59 @@ +#!/bin/sh +# +# The systemd-tmpfiles has the ability to grab information +# from the filesystem (instead from the running system). +# +# tmpfs directories (/tmp, /proc, ...) are skipped since they're not +# relevant for the rootfs image. +# +# However there are a few specifiers that *always* will grab +# information from the running system examples are %a, %b, %m, %H +# (Architecture, Boot UUID, Machine UUID, Hostname). +# +# See [1] for historic information. +# +# This script will (conservatively) skip tmpfiles lines that have +# such an specifier to prevent leaking host information. +# +# shell expansion is critical to be POSIX compliant, +# this script wont work with zsh in its default mode for example. +# +# The script takes several measures to handle more complex stuff +# like passing this correctly: +# f+ "/var/example" - - - - %B\n%o\n%w\n%W%%\n +# +# [1] - https://github.com/systemd/systemd/pull/16187 + +[ -n "${HOST_SYSTEMD_TMPFILES-}" ] || + HOST_SYSTEMD_TMPFILES=systemd-tmpfiles + +[ -n "${1-}" -a -d "${1-}"/usr/lib/tmpfiles.d ] || + { echo 1>&2 "$0: need ROOTFS argument"; exit 1; } + +${HOST_SYSTEMD_TMPFILES} --no-pager --cat-config --root="$1" | + sed -e '/^[[:space:]]*#/d' -e 's,^[[:space:]]*,,' -e '/^$/d' | + while read -r line; do + # it is allowed to use quotes around arguments, + # so let the shell pack the arguments + eval "set -- $line" + + # dont output warnings for directories we dont process + [ "${2#/dev}" = "${2}" ] && [ "${2#/proc}" = "${2}" ] && + [ "${2#/run}" = "${2}" ] && [ "${2#/sys}" = "${2}" ] && + [ "${2#/tmp}" = "${2}" ] && [ "${2#/mnt}" = "${2}" ] || + continue + + # blank out all specs that are ok to use, + # test if some remain. (Specs up to date with v250) + if echo "$2 ${7-}" | sed -e 's,%[%BCEgGhLMosStTuUVwW],,g' | grep -v -q '%'; then + # no "bad" specifiers, pass the line unmodified + eval "printf '%s\n' '$line'" + else + # warn + eval "printf 'ignored spec: %s\n' '$line' 1>&2" + fi + done | + TMPDIR= TEMP= TMP= ${HOST_SYSTEMD_TMPFILES} --create --boot --root="$1" \ + --exclude-prefix=/dev --exclude-prefix=/proc --exclude-prefix=/run \ + --exclude-prefix=/sys --exclude-prefix=/tmp --exclude-prefix=/mnt \ + - diff --git a/package/skeleton-init-systemd/legacy.conf b/package/skeleton-init-systemd/legacy.conf new file mode 100644 index 00000000..0a539340 --- /dev/null +++ b/package/skeleton-init-systemd/legacy.conf @@ -0,0 +1,7 @@ +# Create legacy directories for buildroot +# This is a subset of systemd's legacy.conf + +d /run/lock 0755 root root - +d /run/lock/subsys 0755 root root - + +L /var/lock - - - - ../run/lock diff --git a/package/skeleton-init-systemd/overlayfs/prepare-var-overlay.service b/package/skeleton-init-systemd/overlayfs/prepare-var-overlay.service new file mode 100644 index 00000000..281aa0ef --- /dev/null +++ b/package/skeleton-init-systemd/overlayfs/prepare-var-overlay.service @@ -0,0 +1,19 @@ +[Unit] +Description=Variable storage overlay setup +ConditionPathIsSymbolicLink=!/var +DefaultDependencies=no +RequiresMountsFor=/run/buildroot/mounts/var + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/mkdir -p /run/buildroot/mounts/var/lower /run/buildroot/mounts/var/upper /run/buildroot/mounts/var/work + +# Ideally, we would like to use a systemd mount unit to manage the bind +# mount. Unfortunately, that creates a circular dependency: such a unit +# would have What=/var while var.mount has Where=/var so that introduces +# an implicit dependency from that unit to var.mount, but var.mount +# would have an explicit dependency to be ordered after that unit. +# So we handle the bind mount manually. +ExecStart=/usr/bin/mount -n -o bind,private /var /run/buildroot/mounts/var/lower +ExecStop=/usr/bin/umount -l /run/buildroot/mounts/var/lower diff --git a/package/skeleton-init-systemd/overlayfs/var.mount b/package/skeleton-init-systemd/overlayfs/var.mount new file mode 100644 index 00000000..812e6ce7 --- /dev/null +++ b/package/skeleton-init-systemd/overlayfs/var.mount @@ -0,0 +1,14 @@ +[Unit] +Description=Variable storage overlay +Documentation=man:file-hierarchy(7) +ConditionPathIsSymbolicLink=!/var +DefaultDependencies=no +After=prepare-var-overlay.service +BindsTo=prepare-var-overlay.service + +[Mount] +What=overlay_var +Where=/var +Type=overlay +Options=lowerdir=/run/buildroot/mounts/var/lower,upperdir=/run/buildroot/mounts/var/upper,workdir=/run/buildroot/mounts/var/work,redirect_dir=on,index=on,xino=on +LazyUnmount=true diff --git a/package/skeleton-init-systemd/skeleton-init-systemd.mk b/package/skeleton-init-systemd/skeleton-init-systemd.mk new file mode 100644 index 00000000..b312fe33 --- /dev/null +++ b/package/skeleton-init-systemd/skeleton-init-systemd.mk @@ -0,0 +1,100 @@ +################################################################################ +# +# skeleton-init-systemd +# +################################################################################ + +# The skeleton can't depend on the toolchain, since all packages depends on the +# skeleton and the toolchain is a target package, as is skeleton. +# Hence, skeleton would depends on the toolchain and the toolchain would depend +# on skeleton. +SKELETON_INIT_SYSTEMD_ADD_TOOLCHAIN_DEPENDENCY = NO +SKELETON_INIT_SYSTEMD_ADD_SKELETON_DEPENDENCY = NO + +SKELETON_INIT_SYSTEMD_DEPENDENCIES = skeleton-init-common + +SKELETON_INIT_SYSTEMD_PROVIDES = skeleton + +ifeq ($(BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW),y) + +define SKELETON_INIT_SYSTEMD_ROOT_RO_OR_RW + echo "/dev/root / auto rw 0 1" >$(TARGET_DIR)/etc/fstab +endef + +else + +define SKELETON_INIT_SYSTEMD_ROOT_RO_OR_RW + echo "/dev/root / auto ro 0 1" >$(TARGET_DIR)/etc/fstab +endef + +# On a R/O rootfs, /var is a tmpfs filesystem. So, at build time, we +# redirect /var to the "factory settings" location. Just before the +# filesystem gets created, the /var symlink will be replaced with +# a real (but empty) directory, and the "factory files" will be copied +# back there by the tmpfiles.d mechanism. +ifeq ($(BR2_INIT_SYSTEMD_VAR_FACTORY),y) +define SKELETON_INIT_SYSTEMD_PRE_ROOTFS_VAR_FACTORY + rm -rf $(TARGET_DIR)/usr/share/factory/var + mv $(TARGET_DIR)/var $(TARGET_DIR)/usr/share/factory/var + mkdir -p $(TARGET_DIR)/var + mkdir -p $(TARGET_DIR)/usr/lib/tmpfiles.d + for i in $(TARGET_DIR)/usr/share/factory/var/* \ + $(TARGET_DIR)/usr/share/factory/var/lib/* \ + $(TARGET_DIR)/usr/share/factory/var/lib/systemd/*; do \ + [ -e "$${i}" ] || continue; \ + j="$${i#$(TARGET_DIR)/usr/share/factory}"; \ + if [ -L "$${i}" ]; then \ + printf "L+! %s - - - - %s\n" \ + "$${j}" "../usr/share/factory/$${j}" \ + || exit 1; \ + else \ + printf "C! %s - - - -\n" "$${j}" \ + || exit 1; \ + fi; \ + done >$(TARGET_DIR)/usr/lib/tmpfiles.d/00-buildroot-var.conf + $(INSTALL) -D -m 0644 $(SKELETON_INIT_SYSTEMD_PKGDIR)/factory/var.mount \ + $(TARGET_DIR)/usr/lib/systemd/system/var.mount +endef +SKELETON_INIT_SYSTEMD_ROOTFS_PRE_CMD_HOOKS += SKELETON_INIT_SYSTEMD_PRE_ROOTFS_VAR_FACTORY +endif # BR2_INIT_SYSTEMD_VAR_FACTORY + +ifeq ($(BR2_INIT_SYSTEMD_VAR_OVERLAYFS),y) + +define SKELETON_INIT_SYSTEMD_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_OVERLAY_FS) +endef + +define SKELETON_INIT_SYSTEMD_PRE_ROOTFS_VAR_OVERLAYFS + $(INSTALL) -D -m 0644 \ + $(SKELETON_INIT_SYSTEMD_PKGDIR)/overlayfs/prepare-var-overlay.service \ + $(TARGET_DIR)/usr/lib/systemd/system/prepare-var-overlay.service + $(INSTALL) -D -m 0644 \ + $(SKELETON_INIT_SYSTEMD_PKGDIR)/overlayfs/var.mount \ + $(TARGET_DIR)/usr/lib/systemd/system/var.mount +endef +SKELETON_INIT_SYSTEMD_POST_INSTALL_TARGET_HOOKS += SKELETON_INIT_SYSTEMD_PRE_ROOTFS_VAR_OVERLAYFS + +endif # BR2_INIT_SYSTEMD_VAR_OVERLAYFS + +endif # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW + +ifeq ($(BR2_INIT_SYSTEMD_POPULATE_TMPFILES),y) +define SKELETON_INIT_SYSTEMD_CREATE_TMPFILES_HOOK + HOST_SYSTEMD_TMPFILES=$(HOST_DIR)/bin/systemd-tmpfiles \ + $(SKELETON_INIT_SYSTEMD_PKGDIR)/fakeroot_tmpfiles.sh $(TARGET_DIR) +endef +SKELETON_INIT_SYSTEMD_ROOTFS_PRE_CMD_HOOKS += SKELETON_INIT_SYSTEMD_CREATE_TMPFILES_HOOK +endif # BR2_INIT_SYSTEMD_POPULATE_TMPFILES + +define SKELETON_INIT_SYSTEMD_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/home + mkdir -p $(TARGET_DIR)/srv + mkdir -p $(TARGET_DIR)/var + ln -s ../run $(TARGET_DIR)/var/run + # prevent install scripts to create var/lock as directory + ln -s ../run/lock $(TARGET_DIR)/var/lock + install -D -m644 $(SKELETON_INIT_SYSTEMD_PKGDIR)/legacy.conf $(TARGET_DIR)/usr/lib/tmpfiles.d/legacy.conf + $(SKELETON_INIT_SYSTEMD_ROOT_RO_OR_RW) +endef + +$(eval $(generic-package)) diff --git a/package/skeleton-init-sysv/Config.in b/package/skeleton-init-sysv/Config.in new file mode 100644 index 00000000..6f645f9e --- /dev/null +++ b/package/skeleton-init-sysv/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_SKELETON_INIT_SYSV + bool + select BR2_PACKAGE_HAS_SKELETON + select BR2_PACKAGE_SKELETON_INIT_COMMON + +config BR2_PACKAGE_PROVIDES_SKELETON + default "skeleton-init-sysv" if BR2_PACKAGE_SKELETON_INIT_SYSV diff --git a/package/skeleton-init-sysv/skeleton-init-sysv.mk b/package/skeleton-init-sysv/skeleton-init-sysv.mk new file mode 100644 index 00000000..009dc100 --- /dev/null +++ b/package/skeleton-init-sysv/skeleton-init-sysv.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# skeleton-init-sysv +# +################################################################################ + +# The skeleton can't depend on the toolchain, since all packages depends on the +# skeleton and the toolchain is a target package, as is skeleton. +# Hence, skeleton would depends on the toolchain and the toolchain would depend +# on skeleton. +SKELETON_INIT_SYSV_ADD_TOOLCHAIN_DEPENDENCY = NO +SKELETON_INIT_SYSV_ADD_SKELETON_DEPENDENCY = NO + +SKELETON_INIT_SYSV_DEPENDENCIES = skeleton-init-common + +SKELETON_INIT_SYSV_PROVIDES = skeleton + +define SKELETON_INIT_SYSV_INSTALL_TARGET_CMDS + $(call SYSTEM_RSYNC,$(SKELETON_INIT_SYSV_PKGDIR)/skeleton,$(TARGET_DIR)) +endef + +# enable/disable swapon/off calls depending on availability of the commands +define SKELETON_INIT_SYSV_SWAPON_SWAPOFF_INITTAB + if [ -x $(TARGET_DIR)/sbin/swapon -a -x $(TARGET_DIR)/sbin/swapoff ]; then \ + $(SED) '/^#.*\/sbin\/swap/s/^#\+[[:blank:]]*//' $(TARGET_DIR)/etc/inittab; \ + else \ + $(SED) '/^[^#].*\/sbin\/swap/s/^/#/' $(TARGET_DIR)/etc/inittab; \ + fi +endef + +SKELETON_INIT_SYSV_TARGET_FINALIZE_HOOKS += SKELETON_INIT_SYSV_SWAPON_SWAPOFF_INITTAB + +$(eval $(generic-package)) diff --git a/package/skeleton-init-sysv/skeleton/dev/log b/package/skeleton-init-sysv/skeleton/dev/log new file mode 120000 index 00000000..d96b3b1c --- /dev/null +++ b/package/skeleton-init-sysv/skeleton/dev/log @@ -0,0 +1 @@ +../tmp/log \ No newline at end of file diff --git a/package/skeleton-init-sysv/skeleton/dev/pts/.empty b/package/skeleton-init-sysv/skeleton/dev/pts/.empty new file mode 100644 index 00000000..e69de29b diff --git a/package/skeleton-init-sysv/skeleton/dev/shm/.empty b/package/skeleton-init-sysv/skeleton/dev/shm/.empty new file mode 100644 index 00000000..e69de29b diff --git a/package/skeleton-init-sysv/skeleton/etc/fstab b/package/skeleton-init-sysv/skeleton/etc/fstab new file mode 100644 index 00000000..06c20fe9 --- /dev/null +++ b/package/skeleton-init-sysv/skeleton/etc/fstab @@ -0,0 +1,8 @@ +# +/dev/root / ext2 rw,noauto 0 1 +proc /proc proc defaults 0 0 +devpts /dev/pts devpts defaults,gid=5,mode=620,ptmxmode=0666 0 0 +tmpfs /dev/shm tmpfs mode=1777 0 0 +tmpfs /tmp tmpfs mode=1777 0 0 +tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0 +sysfs /sys sysfs defaults 0 0 diff --git a/package/skeleton-init-sysv/skeleton/var/cache b/package/skeleton-init-sysv/skeleton/var/cache new file mode 120000 index 00000000..1431b0e4 --- /dev/null +++ b/package/skeleton-init-sysv/skeleton/var/cache @@ -0,0 +1 @@ +../tmp \ No newline at end of file diff --git a/package/skeleton-init-sysv/skeleton/var/lib/misc b/package/skeleton-init-sysv/skeleton/var/lib/misc new file mode 120000 index 00000000..f1fde8c1 --- /dev/null +++ b/package/skeleton-init-sysv/skeleton/var/lib/misc @@ -0,0 +1 @@ +../../tmp \ No newline at end of file diff --git a/package/skeleton-init-sysv/skeleton/var/lock b/package/skeleton-init-sysv/skeleton/var/lock new file mode 120000 index 00000000..386c09e7 --- /dev/null +++ b/package/skeleton-init-sysv/skeleton/var/lock @@ -0,0 +1 @@ +../run/lock \ No newline at end of file diff --git a/package/skeleton-init-sysv/skeleton/var/log b/package/skeleton-init-sysv/skeleton/var/log new file mode 120000 index 00000000..1431b0e4 --- /dev/null +++ b/package/skeleton-init-sysv/skeleton/var/log @@ -0,0 +1 @@ +../tmp \ No newline at end of file diff --git a/package/skeleton-init-sysv/skeleton/var/run b/package/skeleton-init-sysv/skeleton/var/run new file mode 120000 index 00000000..84ba55b9 --- /dev/null +++ b/package/skeleton-init-sysv/skeleton/var/run @@ -0,0 +1 @@ +../run \ No newline at end of file diff --git a/package/skeleton-init-sysv/skeleton/var/spool b/package/skeleton-init-sysv/skeleton/var/spool new file mode 120000 index 00000000..1431b0e4 --- /dev/null +++ b/package/skeleton-init-sysv/skeleton/var/spool @@ -0,0 +1 @@ +../tmp \ No newline at end of file diff --git a/package/skeleton-init-sysv/skeleton/var/tmp b/package/skeleton-init-sysv/skeleton/var/tmp new file mode 120000 index 00000000..1431b0e4 --- /dev/null +++ b/package/skeleton-init-sysv/skeleton/var/tmp @@ -0,0 +1 @@ +../tmp \ No newline at end of file diff --git a/package/skeleton/Config.in b/package/skeleton/Config.in new file mode 100644 index 00000000..efaa1e13 --- /dev/null +++ b/package/skeleton/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SKELETON + bool + default y + +config BR2_PACKAGE_HAS_SKELETON + bool + +config BR2_PACKAGE_PROVIDES_SKELETON + string diff --git a/package/skeleton/skeleton.mk b/package/skeleton/skeleton.mk new file mode 100644 index 00000000..1bb39711 --- /dev/null +++ b/package/skeleton/skeleton.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# skeleton +# +################################################################################ + +# The skeleton can't depend on the toolchain, since all packages depends on the +# skeleton and the toolchain is a target package, as is skeleton. +# Hence, skeleton would depends on the toolchain and the toolchain would depend +# on skeleton. +SKELETON_ADD_TOOLCHAIN_DEPENDENCY = NO +SKELETON_ADD_SKELETON_DEPENDENCY = NO + +# The package is a dependency to ccache so ccache cannot be a dependency +HOST_SKELETON_ADD_CCACHE_DEPENDENCY = NO + +# Although the $(HOST_DIR)/usr symlink is mostly for backward compatibility, +# there are weird packages that still require it (see host-systemd, and +# commit 35c11a027c88). +define HOST_SKELETON_INSTALL_CMDS +# check-package DoNotInstallToHostdirUsr + $(Q)ln -snf . $(HOST_DIR)/usr + $(Q)mkdir -p $(HOST_DIR)/lib + $(Q)mkdir -p $(HOST_DIR)/include + $(Q)case $(HOSTARCH) in \ + (*64) ln -snf lib $(HOST_DIR)/lib64;; \ + (*) ln -snf lib $(HOST_DIR)/lib32;; \ + esac +endef + +$(eval $(virtual-package)) +$(eval $(host-generic-package)) diff --git a/package/skopeo/Config.in.host b/package/skopeo/Config.in.host new file mode 100644 index 00000000..b3a1c155 --- /dev/null +++ b/package/skopeo/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_SKOPEO + bool "host skopeo" + depends on BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS + help + skopeo is a command line utility that performs various + operations on container images and image repositories. + + https://github.com/containers/skopeo diff --git a/package/skopeo/skopeo.hash b/package/skopeo/skopeo.hash new file mode 100644 index 00000000..d40585d5 --- /dev/null +++ b/package/skopeo/skopeo.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 0b788fc5725ac79327f7c29797821a2bafc1c3c87bbfcb2998c2a1be949e314d skopeo-1.13.3-go2.tar.gz +sha256 716a8b80635c394681e652823e1e42e411ad2d254e1f202403422d74f4b0b106 LICENSE diff --git a/package/skopeo/skopeo.mk b/package/skopeo/skopeo.mk new file mode 100644 index 00000000..58631629 --- /dev/null +++ b/package/skopeo/skopeo.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# skopeo +# +################################################################################ + +SKOPEO_VERSION = 1.13.3 +SKOPEO_SITE = $(call github,containers,skopeo,v$(SKOPEO_VERSION)) + +SKOPEO_LICENSE = Apache-2.0 +SKOPEO_LICENSE_FILES = LICENSE +SKOPEO_CPE_ID_VALID = YES + +HOST_SKOPEO_DEPENDENCIES = \ + host-btrfs-progs \ + host-libgpgme \ + host-lvm2 \ + host-pkgconf + +HOST_SKOPEO_GO_ENV = PKG_CONFIG_PATH=$(HOST_DIR)/lib/pkgconfig +HOST_SKOPEO_BUILD_TARGETS = cmd/skopeo + +$(eval $(host-golang-package)) diff --git a/package/sl/Config.in b/package/sl/Config.in new file mode 100644 index 00000000..7abe7056 --- /dev/null +++ b/package/sl/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SL + bool "sl" + select BR2_PACKAGE_NCURSES + help + SL (Steam Locomotive) runs across your terminal when you + type "sl" as you meant to type "ls". It's just a joke + command, and not useful at all. + + https://github.com/mtoyoda/sl diff --git a/package/sl/sl.hash b/package/sl/sl.hash new file mode 100644 index 00000000..908b1bd9 --- /dev/null +++ b/package/sl/sl.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1e5996757f879c81f202a18ad8e982195cf51c41727d3fea4af01fdcbbb5563a sl-5.02.tar.gz +sha256 72c7d262e2c9ddf019edc90af852a01a410338efff4e75e1c005b77ada4be7c4 LICENSE diff --git a/package/sl/sl.mk b/package/sl/sl.mk new file mode 100644 index 00000000..bb28b2a4 --- /dev/null +++ b/package/sl/sl.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# sl +# +################################################################################ + +SL_VERSION = 5.02 +SL_SITE = $(call github,mtoyoda,sl,$(SL_VERSION)) +SL_LICENSE = Custom +SL_LICENSE_FILES = LICENSE +SL_DEPENDENCIES = ncurses + +define SL_BUILD_CMDS + $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define SL_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/sl $(TARGET_DIR)/usr/bin/sl +endef + +$(eval $(generic-package)) diff --git a/package/slang/0001-slsh-libs.patch b/package/slang/0001-slsh-libs.patch new file mode 100644 index 00000000..100399e8 --- /dev/null +++ b/package/slang/0001-slsh-libs.patch @@ -0,0 +1,21 @@ +Link against sources instead of installation paths that aren't DESTDIRed. +Patch taken from gentoo portage, upstream status unknown, author +probably Diego Pettenò. + +Signed-off-by: Gustavo Zacarias +[Bernd: rebased against 2.3.1a] +Signed-off-by: Bernd Kuhls +[Fabrice: rebased against 2.3.3] +Signed-off-by: Fabrice Fontaine + +--- a/slsh/Makefile.in ++++ b/slsh/Makefile.in +@@ -92,7 +92,7 @@ + $(OBJDIR)/slsh_exe: $(OBJDIR)/slsh.o $(OBJDIR)/readline.o + $(CC) $(OBJDIR)/slsh.o $(OBJDIR)/readline.o -o $(OBJDIR)/slsh_exe $(LDFLAGS) $(DLINK_FLAGS) $(SRC_LIBS) + $(OBJDIR)/slsh: $(OBJDIR)/slsh.o $(OBJDIR)/readline.o +- $(CC) $(OBJDIR)/slsh.o $(OBJDIR)/readline.o -o $(OBJDIR)/slsh $(LDFLAGS) $(DLINK_FLAGS) $(INST_LIBS) ++ $(CC) $(OBJDIR)/slsh.o $(OBJDIR)/readline.o -o $(OBJDIR)/slsh $(LDFLAGS) $(DLINK_FLAGS) $(SRC_LIBS) + $(OBJDIR)/slsh.o: $(OBJDIR_TSTAMP) slsh.c slsh.h config.h Makefile + cd $(OBJDIR) && $(CC) $(SLANG_SRCINC) $(CFLAGS) -c $(DEFS) $(SRCDIR)/slsh.c + $(OBJDIR)/readline.o: $(OBJDIR_TSTAMP) readline.c slsh.h config.h Makefile diff --git a/package/slang/Config.in b/package/slang/Config.in new file mode 100644 index 00000000..0b2c987f --- /dev/null +++ b/package/slang/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_SLANG + bool "slang" + depends on BR2_USE_MMU # fork() + help + Multi-platform console display library. + + http://www.jedsoft.org/slang/index.html + +if BR2_PACKAGE_SLANG + +config BR2_PACKAGE_SLANG_SLSH + bool "enable slsh" + help + Enable the S-lang interpreter + +endif diff --git a/package/slang/slang.hash b/package/slang/slang.hash new file mode 100644 index 00000000..563117b4 --- /dev/null +++ b/package/slang/slang.hash @@ -0,0 +1,6 @@ +# sha1 from http://www.jedsoft.org/releases/slang/, sha256 locally computed +sha1 38d9b8e80e4336f76dff3e1d85761d2d0f713595 slang-2.3.3.tar.bz2 +sha256 f9145054ae131973c61208ea82486d5dd10e3c5cdad23b7c4a0617743c8f5a18 slang-2.3.3.tar.bz2 + +# License file, locally computed +sha256 ff05a90962e7773f8bdc47b2a9585130526039102759b524c1dffbd57cfe469b COPYING diff --git a/package/slang/slang.mk b/package/slang/slang.mk new file mode 100644 index 00000000..2b3cbdf2 --- /dev/null +++ b/package/slang/slang.mk @@ -0,0 +1,72 @@ +################################################################################ +# +# slang +# +################################################################################ + +SLANG_VERSION = 2.3.3 +SLANG_SOURCE = slang-$(SLANG_VERSION).tar.bz2 +SLANG_SITE = http://www.jedsoft.org/releases/slang +SLANG_LICENSE = GPL-2.0+ +SLANG_LICENSE_FILES = COPYING +SLANG_INSTALL_STAGING = YES +SLANG_CONF_OPTS = --with-onig=no +SLANG_MAKE = $(MAKE1) + +# Racy and we don't have/do libtermcap +define SLANG_DISABLE_TERMCAP + $(SED) '/^TERMCAP=/s:=.*:=:' $(@D)/configure +endef +SLANG_POST_PATCH_HOOKS += SLANG_DISABLE_TERMCAP + +# Absolute path hell, sigh... +ifeq ($(BR2_PACKAGE_LIBPNG),y) +SLANG_CONF_OPTS += --with-png=$(STAGING_DIR)/usr +SLANG_DEPENDENCIES += libpng +else +SLANG_CONF_OPTS += --with-png=no +endif +ifeq ($(BR2_PACKAGE_PCRE),y) +SLANG_CONF_OPTS += --with-pcre=$(STAGING_DIR)/usr +SLANG_DEPENDENCIES += pcre +else +SLANG_CONF_OPTS += --with-pcre=no +endif +ifeq ($(BR2_PACKAGE_ZLIB),y) +SLANG_CONF_OPTS += --with-z=$(STAGING_DIR)/usr +SLANG_DEPENDENCIES += zlib +else +SLANG_CONF_OPTS += --with-z=no +endif + +ifeq ($(BR2_PACKAGE_NCURSES),y) +SLANG_DEPENDENCIES += ncurses +SLANG_CONF_ENV += ac_cv_path_nc5config=$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS) +else +SLANG_CONF_OPTS += ac_cv_path_nc5config=no +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +SLANG_CONF_OPTS += --with-readline=gnu +SLANG_DEPENDENCIES += readline +ifeq ($(BR2_STATIC_LIBS),y) +SLANG_CONF_ENV += LIBS="`$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS) --libs`" +endif +endif + +ifeq ($(BR2_STATIC_LIBS),y) +SLANG_MAKE_OPTS = static +SLANG_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) install-static +SLANG_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-static +endif + +ifeq ($(BR2_PACKAGE_SLANG_SLSH),) +define SLANG_REMOVE_SLSH + rm -rf $(TARGET_DIR)/etc/slsh.rc \ + $(TARGET_DIR)/usr/share/slsh \ + $(TARGET_DIR)/usr/bin/slsh +endef +SLANG_POST_INSTALL_TARGET_HOOKS += SLANG_REMOVE_SLSH +endif + +$(eval $(autotools-package)) diff --git a/package/slirp/Config.in b/package/slirp/Config.in new file mode 100644 index 00000000..38fd5277 --- /dev/null +++ b/package/slirp/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_SLIRP + bool "slirp" + depends on BR2_USE_MMU # libglib2 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + select BR2_PACKAGE_LIBGLIB2 + help + libslirp is a user-mode networking library used by virtual + machines, containers or various tools. + + https://gitlab.freedesktop.org/slirp/libslirp/ + + NOTE: + This package has some history of a unique kind: + - originally developped as 'slirp' by Danny Gasparovski, and + seemingly abandonned (developper /disapeared/) + - then re-maintained at sourceforge by "Kelly", up to some + time around 2009: http://slirp.sourceforge.net/ + - during that period, QEMU (Fabrice BELLARD) forked the code + and included it in QEMU + - and it was imported from this breed by the Spice project + around May 2009 which archived it in 2012 + - So we switched to + https://gitlab.freedesktop.org/slirp/libslirp + +comment "slirp needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/slirp/slirp.hash b/package/slirp/slirp.hash new file mode 100644 index 00000000..3f7abdee --- /dev/null +++ b/package/slirp/slirp.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 358ce8b6ea59ec9deac937cc754f0115b992839e7b0cddf30ffb8f77dc21da82 libslirp-v4.7.0.tar.bz2 +sha256 b28aecf4796a6a22054167f0a976de13d9db335669d37afd2dc7ea4c335e1e13 COPYRIGHT diff --git a/package/slirp/slirp.mk b/package/slirp/slirp.mk new file mode 100644 index 00000000..2ad71f13 --- /dev/null +++ b/package/slirp/slirp.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# slirp +# +################################################################################ + +SLIRP_VERSION = 4.7.0 +SLIRP_SOURCE = libslirp-v$(SLIRP_VERSION).tar.bz2 +SLIRP_SITE = https://gitlab.freedesktop.org/slirp/libslirp/-/archive/v$(SLIRP_VERSION) +SLIRP_LICENSE = BSD-3-Clause +SLIRP_LICENSE_FILES = COPYRIGHT +SLIRP_CPE_ID_VENDOR = libslirp_project +SLIRP_CPE_ID_PRODUCT = libslirp +SLIRP_INSTALL_STAGING = YES +SLIRP_DEPENDENCIES = libglib2 + +HOST_SLIRP_DEPENDENCIES = host-libglib2 + +$(eval $(meson-package)) +$(eval $(host-meson-package)) diff --git a/package/slirp4netns/Config.in b/package/slirp4netns/Config.in new file mode 100644 index 00000000..22414dfb --- /dev/null +++ b/package/slirp4netns/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_SLIRP4NETNS + bool "slirp4netns" + depends on BR2_USE_MMU # libcap, libglib2, slirp + depends on BR2_USE_WCHAR # libglib2, slirp + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2, slirp + depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS # libseccomp + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # libseccomp + select BR2_PACKAGE_LIBCAP + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBSECCOMP + select BR2_PACKAGE_SLIRP + help + User-mode networking for unprivileged network namespaces. + + https://github.com/rootless-containers/slirp4netns + +comment "slirp4netns needs a toolchain w/ wchar, threads, headers >= 3.17" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 diff --git a/package/slirp4netns/slirp4netns.hash b/package/slirp4netns/slirp4netns.hash new file mode 100644 index 00000000..e310da1a --- /dev/null +++ b/package/slirp4netns/slirp4netns.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 acce648fab8fe5f113c41a8fd6d20177708519b4ddaa60f845e1998a17b22ca5 slirp4netns-1.2.3.tar.gz +sha256 58db3cfabf8ec806bc060e54ab5466a31de4a3ae80fe4a8aa02fb6b1c053c93f COPYING diff --git a/package/slirp4netns/slirp4netns.mk b/package/slirp4netns/slirp4netns.mk new file mode 100644 index 00000000..7fa992af --- /dev/null +++ b/package/slirp4netns/slirp4netns.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# slirp4netns +# +################################################################################ + +SLIRP4NETNS_VERSION = 1.2.3 +SLIRP4NETNS_SITE = $(call github,rootless-containers,slirp4netns,v$(SLIRP4NETNS_VERSION)) +SLIRP4NETNS_LICENSE = GPL-2.0 +SLIRP4NETNS_LICENSE_FILES = COPYING +SLIRP4NETNS_DEPENDENCIES = libcap libglib2 libseccomp slirp + +SLIRP4NETNS_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/sloci-image/Config.in.host b/package/sloci-image/Config.in.host new file mode 100644 index 00000000..d809f1f3 --- /dev/null +++ b/package/sloci-image/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_SLOCI_IMAGE + bool "host sloci-image" + help + A simple CLI tool for packing rootfs into a single-layer OCI + image. + + https://github.com/jirutka/sloci-image diff --git a/package/sloci-image/sloci-image.hash b/package/sloci-image/sloci-image.hash new file mode 100644 index 00000000..ea1368e4 --- /dev/null +++ b/package/sloci-image/sloci-image.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 4c5baee9a4915ca88e3a54befa1ccb8616be20208070cf54ac366c195647da79 sloci-image-0.1.2.tar.gz + +# Hash for license files: +sha256 4c86c21e003875b85b4b9299156f8cec72c8e8e1abf5aa1f2d3c4dc665a3bea0 LICENSE diff --git a/package/sloci-image/sloci-image.mk b/package/sloci-image/sloci-image.mk new file mode 100644 index 00000000..7361c49d --- /dev/null +++ b/package/sloci-image/sloci-image.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# sloci-image +# +################################################################################ + +SLOCI_IMAGE_VERSION = 0.1.2 +SLOCI_IMAGE_SITE = $(call github,jirutka,sloci-image,v$(SLOCI_IMAGE_VERSION)) + +SLOCI_IMAGE_LICENSE = MIT +SLOCI_IMAGE_LICENSE_FILES = LICENSE + +HOST_SLOCI_IMAGE_DEPENDENCIES = host-gawk + +define HOST_SLOCI_IMAGE_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) PREFIX=$(HOST_DIR) -C $(@D) install +endef + +$(eval $(host-generic-package)) diff --git a/package/smack/Config.in b/package/smack/Config.in new file mode 100644 index 00000000..3e88f8d0 --- /dev/null +++ b/package/smack/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_SMACK + bool "smack" + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 + help + User space programs and libraries for SMACK. + + SMACK stands for Simplified Mandatory Access Control Kernel. + It is a Linux Security Module which provides a Mandatory + Access Control mechanism, aimed towards simplicity. + + This package provides a library which allows applications to + work with SMACK and tools to load/unload rules from the + kernel, as well as query the policy. + + SMACK requires the following kernel options to be enabled: + + - CONFIG_SECURITY + - CONFIG_SECURITY_SMACK + - CONFIG_SECURITY_NETWORK + + These options will be automatically enabled by Buildroot if + it is responsible for building the kernel. Otherwise, if you + are building your kernel outside of Buildroot, make sure + these options are enabled. + + To activate SMACK, do not forget to add "security=smack" to + your kernel command line. + + https://github.com/smack-team/smack + +comment "smack needs a toolchain w/ dynamic library, threads, headers >= 3.0" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 \ + || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/smack/smack.hash b/package/smack/smack.hash new file mode 100644 index 00000000..a753f93f --- /dev/null +++ b/package/smack/smack.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 1a607da3b1a661dc76b7a5b8571f4a2d56b4d61d78376088d19f2d8637dc6822 smack-1.3.1.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/smack/smack.mk b/package/smack/smack.mk new file mode 100644 index 00000000..fec3ef98 --- /dev/null +++ b/package/smack/smack.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# smack +# +################################################################################ + +SMACK_VERSION = 1.3.1 +SMACK_SITE = $(call github,smack-team,smack,v$(SMACK_VERSION)) +SMACK_LICENSE = LGPL-2.1 +SMACK_LICENSE_FILES = COPYING +SMACK_INSTALL_STAGING = YES +SMACK_DEPENDENCIES = host-pkgconf + +# Sources from GitHub, no configure script included. +SMACK_AUTORECONF = YES + +define SMACK_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY) + $(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY_SMACK) + $(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY_NETWORK) +endef + +$(eval $(autotools-package)) diff --git a/package/smartmontools/Config.in b/package/smartmontools/Config.in new file mode 100644 index 00000000..92e0037a --- /dev/null +++ b/package/smartmontools/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_SMARTMONTOOLS + bool "smartmontools" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fork() + help + Control and monitor storage systems using S.M.A.R.T. + + http://smartmontools.sourceforge.net/ + +comment "smartmontools needs a toolchain w/ C++" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/smartmontools/smartmontools.hash b/package/smartmontools/smartmontools.hash new file mode 100644 index 00000000..e48e955d --- /dev/null +++ b/package/smartmontools/smartmontools.hash @@ -0,0 +1,7 @@ +# From http://sourceforge.net/projects/smartmontools/files/smartmontools/7.3/ +md5 7a71d388124e3cd43abf6586a43cb1ff smartmontools-7.3.tar.gz +sha1 5ce7adb606119148d725b91a00652d427ca0adc2 smartmontools-7.3.tar.gz + +# Locally computed +sha256 a544f8808d0c58cfb0e7424ca1841cb858a974922b035d505d4e4c248be3a22b smartmontools-7.3.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/smartmontools/smartmontools.mk b/package/smartmontools/smartmontools.mk new file mode 100644 index 00000000..d24f008d --- /dev/null +++ b/package/smartmontools/smartmontools.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# smartmontools +# +################################################################################ + +SMARTMONTOOLS_VERSION = 7.3 +SMARTMONTOOLS_SITE = http://downloads.sourceforge.net/project/smartmontools/smartmontools/$(SMARTMONTOOLS_VERSION) +SMARTMONTOOLS_LICENSE = GPL-2.0+ +SMARTMONTOOLS_LICENSE_FILES = COPYING +SMARTMONTOOLS_CPE_ID_VENDOR = smartmontools +SMARTMONTOOLS_SELINUX_MODULES = smartmon + +ifeq ($(BR2_PACKAGE_LIBCAP_NG),y) +SMARTMONTOOLS_CONF_OPTS += --with-libcap-ng +SMARTMONTOOLS_DEPENDENCIES += libcap-ng +else +SMARTMONTOOLS_CONF_OPTS += --without-libcap-ng +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +SMARTMONTOOLS_CONF_OPTS += --with-selinux +SMARTMONTOOLS_DEPENDENCIES += libselinux +else +SMARTMONTOOLS_CONF_OPTS += --without-selinux +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +SMARTMONTOOLS_CONF_OPTS += --with-libsystemd +SMARTMONTOOLS_DEPENDENCIES += systemd +else +SMARTMONTOOLS_CONF_OPTS += --without-libsystemd +endif + +$(eval $(autotools-package)) diff --git a/package/smcroute/Config.in b/package/smcroute/Config.in new file mode 100644 index 00000000..0d0f5f7a --- /dev/null +++ b/package/smcroute/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_SMCROUTE + bool "smcroute" + depends on BR2_USE_MMU # fork() + help + SMCRoute is a command line tool to manipulate the multicast + routes of a UNIX kernel. It supports both IPv4 and IPv6 + multicast routing. SMCRoute can be used as an alternative to + dynamic multicast routers like mrouted or pimd in setups + where static multicast routes should be maintained and/or no + proper IGMP or MLD signaling exists. + + https://github.com/troglobit/smcroute diff --git a/package/smcroute/S41smcroute b/package/smcroute/S41smcroute new file mode 100755 index 00000000..d243e8ec --- /dev/null +++ b/package/smcroute/S41smcroute @@ -0,0 +1,48 @@ +#!/bin/sh + +NAME="smcroute" +DAEMON="smcrouted" +PIDFILE="/var/run/$NAME.pid" + +# shellcheck source=/dev/null +[ -r "/etc/default/$NAME" ] && . "/etc/default/$NAME" + +cmd() +{ + start-stop-daemon -q -p "$PIDFILE" -x "/usr/sbin/$DAEMON" "$@" + status=$? + if [ $status -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return $status +} + +case "$1" in + start) + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + cmd -S -- $SMCROUTED_ARGS + ;; + + stop) + printf 'Stopping %s: ' "$DAEMON" + cmd -K + ;; + + restart) + $0 stop + sleep 1 + $0 start + ;; + + reload) + printf 'Reloading %s: ' "$DAEMON" + cmd -K -s HUP + ;; + + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/smcroute/smcroute.hash b/package/smcroute/smcroute.hash new file mode 100644 index 00000000..d51745c0 --- /dev/null +++ b/package/smcroute/smcroute.hash @@ -0,0 +1,4 @@ +# Hash from https://github.com/troglobit/smcroute/releases/ generated by GitHub +sha256 7d2c83e11908fe37844fa9b49ae50924555c4e1bb440fb059a95c94e442ea8a5 smcroute-2.5.7.tar.gz +# Locally generated +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/smcroute/smcroute.mk b/package/smcroute/smcroute.mk new file mode 100644 index 00000000..f7476f11 --- /dev/null +++ b/package/smcroute/smcroute.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# smcroute +# +################################################################################ + +SMCROUTE_VERSION = 2.5.7 +SMCROUTE_SITE = https://github.com/troglobit/smcroute/releases/download/$(SMCROUTE_VERSION) +SMCROUTE_LICENSE = GPL-2.0+ +SMCROUTE_LICENSE_FILES = COPYING +SMCROUTE_CPE_ID_VENDOR = troglobit + +SMCROUTE_CONF_OPTS = --enable-mrdisc + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +SMCROUTE_DEPENDENCIES += libcap +SMCROUTE_CONF_OPTS += --with-libcap +else +SMCROUTE_CONF_OPTS += --without-libcap +endif + +define SMCROUTE_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/smcroute/S41smcroute \ + $(TARGET_DIR)/etc/init.d/S41smcroute +endef + +define SMCROUTE_PRUNE_COMPAT_SCRIPT + rm -f $(TARGET_DIR)/usr/sbin/smcroute +endef + +SMCROUTE_POST_INSTALL_TARGET_HOOKS += SMCROUTE_PRUNE_COMPAT_SCRIPT + +# We will asume that CONFIG_NET and CONFIG_INET are already +# set in the kernel configuration provided by the user. +define SMCROUTE_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_MULTICAST) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_MROUTE) +endef + +$(eval $(autotools-package)) diff --git a/package/smstools3/0001-fix-Makefile.patch b/package/smstools3/0001-fix-Makefile.patch new file mode 100644 index 00000000..338a53e7 --- /dev/null +++ b/package/smstools3/0001-fix-Makefile.patch @@ -0,0 +1,31 @@ +Makefile: fix rules + +In a Makefile, recipes should follow rules, there can not be variable +definitions in-between. + +Although make-3.81 is happy about it, make-4.0 (and probably 3.82 too) +do whine loudly. + +Signed-off-by: "Yann E. MORIN" +[Fabrice: update for 3.1.21] +Signed-off-by: Fabrice Fontaine + +diff -durN smstools3-3.1.15.orig/src/Makefile smstools3-3.1.15/src/Makefile +--- smstools3-3.1.15.orig/src/Makefile 2010-09-21 13:29:14.000000000 +0200 ++++ smstools3-3.1.15/src/Makefile 2014-09-01 22:27:02.719939329 +0200 +@@ -39,14 +39,13 @@ + + all: smsd + +-smsd: smsd.c extras.o locking.o cfgfile.o logging.o alarm.o smsd_cfg.o charset.o stats.o blacklist.o whitelist.o modeminit.o pdu.o charshift.o +- + ifneq (,$(findstring SOLARIS,$(CFLAGS))) + ifeq (,$(findstring DISABLE_INET_SOCKET,$(CFLAGS))) + override LFLAGS += -lsocket -lnsl + endif + endif + ++smsd: smsd.c extras.o locking.o cfgfile.o logging.o alarm.o smsd_cfg.o charset.o stats.o blacklist.o whitelist.o modeminit.o pdu.o charshift.o + ifneq (,$(findstring NOSTATS,$(CFLAGS))) + $(CC) $(CFLAGS) -o $@ $^ $(LFLAGS) + else diff --git a/package/smstools3/0002-fix-build-with-gcc-10.x.patch b/package/smstools3/0002-fix-build-with-gcc-10.x.patch new file mode 100644 index 00000000..3242c140 --- /dev/null +++ b/package/smstools3/0002-fix-build-with-gcc-10.x.patch @@ -0,0 +1,753 @@ +Description: fix of FTBFS with gcc10 +Author: Thorsten Alteholz + +Fetch from: + +Signed-off-by: Michael Fischer + +Index: smstools/src/smsd_cfg.h +=================================================================== +--- smstools.orig/src/smsd_cfg.h 2020-08-05 19:02:50.536596441 +0000 ++++ smstools/src/smsd_cfg.h 2020-08-05 19:33:22.915005150 +0000 +@@ -126,17 +126,17 @@ + #define ALPHABET_UNKNOWN 4 + #define ALPHABET_DEFAULT 0 + +-char process_title[32]; // smsd for main task, NOTIFIER or CHILD, name of a modem for other tasks. +-int process_id; // -1 for main task, all modems have numbers starting with 0. ++extern char process_title[32]; // smsd for main task, NOTIFIER or CHILD, name of a modem for other tasks. ++extern int process_id; // -1 for main task, all modems have numbers starting with 0. + // This is the same as device, can be used like devices[process_id] if IS_MODEM_PROCESS. + +-time_t process_start_time; ++extern time_t process_start_time; + +-int modem_handle; // Handle for modem. ++extern int modem_handle; // Handle for modem. + +-int put_command_timeouts; +-unsigned long long put_command_sent; // 3.1.16beta. +-char tmpdir[PATH_MAX]; // 3.1.16beta. ++extern int put_command_timeouts; ++extern unsigned long long put_command_sent; // 3.1.16beta. ++extern char tmpdir[PATH_MAX]; // 3.1.16beta. + + typedef struct + { +@@ -284,204 +284,204 @@ + + // NOTE for regular run intervals: effective value is at least delaytime. + +-char configfile[PATH_MAX]; // Path to config file +-char d_spool[PATH_MAX]; // Spool directory +-char d_failed[PATH_MAX]; // Failed spool directory +-char d_failed_copy[PATH_MAX]; // 3.1.17. +-char d_incoming[PATH_MAX]; // Incoming spool directory +-char d_incoming_copy[PATH_MAX]; // 3.1.16beta2. +-char d_report[PATH_MAX]; // Incoming report spool directory +-char d_report_copy[PATH_MAX]; // 3.1.17. +-char d_phonecalls[PATH_MAX]; // Incoming phonecalls data directory +-char d_saved[PATH_MAX]; // Directory for smsd's internal use, concatenation storage files etc. +-char d_sent[PATH_MAX]; // Sent spool directory +-char d_sent_copy[PATH_MAX]; // 3.1.17. +-char d_checked[PATH_MAX]; // Spool directory for checked messages (only used when no provider queues used) +-char eventhandler[PATH_MAX]; // Global event handler program or script +-char alarmhandler[PATH_MAX]; // Global alarm handler program or script +-char checkhandler[PATH_MAX]; // Handler that checks if the sms file is valid. +-int alarmlevel; // Alarm Level (9=highest). Verbosity of alarm handler. +-char logfile[PATH_MAX]; // Name or Handle of Log File +-int loglevel; // Log Level (9=highest). Verbosity of log file. +-_queue queues[NUMBER_OF_MODEMS]; // Queues +-_device devices[NUMBER_OF_MODEMS]; // Modem devices +-int delaytime; // sleep-time after workless +-int delaytime_mainprocess; // sleep-time after workless, main process. If -1, delaytime is used. +-int blocktime; // sleep-time after multiple errors +-int blockafter; // Block modem after n errors +-int errorsleeptime; // sleep-time after each error +-int autosplit; // Splitting of large text messages 0=no, 1=yes 2=number with text, 3=number with UDH +-int receive_before_send; // if 1 smsd tries to receive one message before sending +-int store_received_pdu; // 0=no, 1=unsupported pdu's only, 2=unsupported and 8bit/unicode, 3=all +-int store_sent_pdu; // 0=no, 1=failed pdu's only, 2=failed and 8bit/unicode, 3=all +-int validity_period; // Validity period for messages. +-int decode_unicode_text; // 1 if unicode text is decoded internally. +-int internal_combine; // 1 if multipart message is combined internally. +-int internal_combine_binary; // 1 if multipart binary message is combined internally. Defaults to internal_combine. +-int keep_filename; // 0 if unique filename is created to each directory when a message file is moved. +-int store_original_filename; // 1 if an original filename is saved to message file when it's moved from +- // outgoing directory to spooler. Works together with keep_filename. +-int date_filename; // 1 or 2 if YYYYMMDD is included to the filename of incoming message. +-char regular_run[PATH_MAX]; // Script/program which is run regularly. +-int regular_run_interval; // Number of seconds between running a regular_run script/progdam. +-char admin_to[SIZE_TO]; // Destination number for administrative messages. +-int filename_preview; // Number of chars of message text to concatenate to filename. +-int incoming_utf8; // 1 if incoming files are saved using UTF-8 character set. +-int outgoing_utf8; // 1 if outgoing files are automatically converted from UTF-8 to ISO and GSM. +-int log_charconv; // 1 if character set conversion is logged. +-int log_single_lines; // 1 if linefeeds are removed from the modem response to be logged. +-int executable_check; // 0 if eventhandler and other executables are NOT checked during the startup checking. +-int keep_messages; // For testing purposes: messages are not deleted and smsd stops after first run. +-char priviledged_numbers[SIZE_PRIVILEDGED_NUMBERS]; // Priviledged numbers in incoming messages. +-int ic_purge_hours; // If internal_combine is used, concatenation storage is checked every ic_purge_interval minutes +-int ic_purge_minutes; // and if there is message parts older than defined, they are handled or deleted. +-int ic_purge_read; // 1 = message parts are stored as single messages. 0 = parts are just deleted. +-int ic_purge_interval; // +-char shell[PATH_MAX]; // Shell used to run eventhandler, defaults to /bin/sh +-char adminmessage_device[32]; // Name of device used to send administrative messages of mainspooler. +-int smart_logging; // 1 = if loglevel is less than 7, degug log is written is there has been any errors. +-int status_signal_quality; // 1 = signal quality is written to status file. +-int status_include_counters; // 1 = succeeded, failed and received counters are included in the status line. +-int status_include_uptime; // 3.1.16beta: 1 = include started & uptime line in the status file. +-int hangup_incoming_call; // 1 = if detected unexpected input contains RING and we want to end call. +-int max_continuous_sending; // Defines when sending is breaked to do check/do other tasks. Time in minutes. +-int voicecall_hangup_ath; // If ATH is used instead of AT+CHUP. ++extern char configfile[PATH_MAX]; // Path to config file ++extern char d_spool[PATH_MAX]; // Spool directory ++extern char d_failed[PATH_MAX]; // Failed spool directory ++extern char d_failed_copy[PATH_MAX]; // 3.1.17. ++extern char d_incoming[PATH_MAX]; // Incoming spool directory ++extern char d_incoming_copy[PATH_MAX]; // 3.1.16beta2. ++extern char d_report[PATH_MAX]; // Incoming report spool directory ++extern char d_report_copy[PATH_MAX]; // 3.1.17. ++extern char d_phonecalls[PATH_MAX]; // Incoming phonecalls data directory ++extern char d_saved[PATH_MAX]; // Directory for smsd's internal use, concatenation storage files etc. ++extern char d_sent[PATH_MAX]; // Sent spool directory ++extern char d_sent_copy[PATH_MAX]; // 3.1.17. ++extern char d_checked[PATH_MAX]; // Spool directory for checked messages (only used when no provider queues used) ++extern char eventhandler[PATH_MAX]; // Global event handler program or script ++extern char alarmhandler[PATH_MAX]; // Global alarm handler program or script ++extern char checkhandler[PATH_MAX]; // Handler that checks if the sms file is valid. ++extern int alarmlevel; // Alarm Level (9=highest). Verbosity of alarm handler. ++extern char logfile[PATH_MAX]; // Name or Handle of Log File ++extern int loglevel; // Log Level (9=highest). Verbosity of log file. ++extern _queue queues[NUMBER_OF_MODEMS]; // Queues ++extern _device devices[NUMBER_OF_MODEMS]; // Modem devices ++extern int delaytime; // sleep-time after workless ++extern int delaytime_mainprocess; // sleep-time after workless, main process. If -1, delaytime is used. ++extern int blocktime; // sleep-time after multiple errors ++extern int blockafter; // Block modem after n errors ++extern int errorsleeptime; // sleep-time after each error ++extern int autosplit; // Splitting of large text messages 0=no, 1=yes 2=number with text, 3=number with UDH ++extern int receive_before_send; // if 1 smsd tries to receive one message before sending ++extern int store_received_pdu; // 0=no, 1=unsupported pdu's only, 2=unsupported and 8bit/unicode, 3=all ++extern int store_sent_pdu; // 0=no, 1=failed pdu's only, 2=failed and 8bit/unicode, 3=all ++extern int validity_period; // Validity period for messages. ++extern int decode_unicode_text; // 1 if unicode text is decoded internally. ++extern int internal_combine; // 1 if multipart message is combined internally. ++extern int internal_combine_binary; // 1 if multipart binary message is combined internally. Defaults to internal_combine. ++extern int keep_filename; // 0 if unique filename is created to each directory when a message file is moved. ++extern int store_original_filename; // 1 if an original filename is saved to message file when it's moved from ++// outgoing directory to spooler. Works together with keep_filename. ++extern int date_filename; // 1 or 2 if YYYYMMDD is included to the filename of incoming message. ++extern char regular_run[PATH_MAX]; // Script/program which is run regularly. ++extern int regular_run_interval; // Number of seconds between running a regular_run script/progdam. ++extern char admin_to[SIZE_TO]; // Destination number for administrative messages. ++extern int filename_preview; // Number of chars of message text to concatenate to filename. ++extern int incoming_utf8; // 1 if incoming files are saved using UTF-8 character set. ++extern int outgoing_utf8; // 1 if outgoing files are automatically converted from UTF-8 to ISO and GSM. ++extern int log_charconv; // 1 if character set conversion is logged. ++extern int log_single_lines; // 1 if linefeeds are removed from the modem response to be logged. ++extern int executable_check; // 0 if eventhandler and other executables are NOT checked during the startup checking. ++extern int keep_messages; // For testing purposes: messages are not deleted and smsd stops after first run. ++extern char priviledged_numbers[SIZE_PRIVILEDGED_NUMBERS]; // Priviledged numbers in incoming messages. ++extern int ic_purge_hours; // If internal_combine is used, concatenation storage is checked every ic_purge_interval minutes ++extern int ic_purge_minutes; // and if there is message parts older than defined, they are handled or deleted. ++extern int ic_purge_read; // 1 = message parts are stored as single messages. 0 = parts are just deleted. ++extern int ic_purge_interval; // ++extern char shell[PATH_MAX]; // Shell used to run eventhandler, defaults to /bin/sh ++extern char adminmessage_device[32]; // Name of device used to send administrative messages of mainspooler. ++extern int smart_logging; // 1 = if loglevel is less than 7, degug log is written is there has been any errors. ++extern int status_signal_quality; // 1 = signal quality is written to status file. ++extern int status_include_counters; // 1 = succeeded, failed and received counters are included in the status line. ++extern int status_include_uptime; // 3.1.16beta: 1 = include started & uptime line in the status file. ++extern int hangup_incoming_call; // 1 = if detected unexpected input contains RING and we want to end call. ++extern int max_continuous_sending; // Defines when sending is breaked to do check/do other tasks. Time in minutes. ++extern int voicecall_hangup_ath; // If ATH is used instead of AT+CHUP. + + // 3.1.5: +-int trust_outgoing; // 1 = it's _sure_ that files are created by rename AND permissions are correct. Speeds up spooling. ++extern int trust_outgoing; // 1 = it's _sure_ that files are created by rename AND permissions are correct. Speeds up spooling. + + // 3.1.5: +-int ignore_outgoing_priority; // 1 = Priority: high header is not checked. Speeds up spooling. ++extern int ignore_outgoing_priority; // 1 = Priority: high header is not checked. Speeds up spooling. + + // 3.1.7: +-int ignore_exec_output; // 1 = stdout and stderr of eventhandlers is _not_ checked. ++extern int ignore_exec_output; // 1 = stdout and stderr of eventhandlers is _not_ checked. + + // 3.1.7: +-mode_t conf_umask; // File mode creation mask for smsd and modem processes. ++extern mode_t conf_umask; // File mode creation mask for smsd and modem processes. + + // 3.1.7: +-int trim_text; // 1 = trailing whitespaces are removed from text: ++extern int trim_text; // 1 = trailing whitespaces are removed from text: + + // 3.1.7: +-int use_linux_ps_trick; // 1 = change argv[0] to "smsd: MAINPROCESS", "smsd: GSM1" etc. ++extern int use_linux_ps_trick; // 1 = change argv[0] to "smsd: MAINPROCESS", "smsd: GSM1" etc. + + // 3.1.7: +-int log_unmodified; ++extern int log_unmodified; + + // 3.1.7: +-char suspend_filename[PATH_MAX]; ++extern char suspend_filename[PATH_MAX]; + + // 3.1.9: +-int spool_directory_order; ++extern int spool_directory_order; + + // 3.1.9: 1 if read_from_modem is logged. +-int log_read_from_modem; ++extern int log_read_from_modem; + + // 3.1.16beta2: log_read_timing for performance tuning. +-int log_read_timing; ++extern int log_read_timing; + + // 3.1.16beta: +-int log_response_time; ++extern int log_response_time; + + // 3.1.16beta2: +-int default_alphabet; ++extern int default_alphabet; + + // 3.1.17: Child process for the mainprocess: +-char mainprocess_child[PATH_MAX]; +-char mainprocess_child_args[PATH_MAX]; ++extern char mainprocess_child[PATH_MAX]; ++extern char mainprocess_child_args[PATH_MAX]; + + // 3.1.17: Notifier for the mainprocess: +-int mainprocess_notifier; ++extern int mainprocess_notifier; + + // 3.1.17: If *_copy was made, evenhandler can use it instead of original file: +-int eventhandler_use_copy; ++extern int eventhandler_use_copy; + + // 3.1.17: This defines how long to sleep while looping: +-int sleeptime_mainprocess; ++extern int sleeptime_mainprocess; + + // 3.1.17: Defines how often PID is checked to detect if another smsd is running: +-int check_pid_interval; ++extern int check_pid_interval; + + // 3.1.18: start script/program for mainprocess: +-char mainprocess_start[PATH_MAX]; +-char mainprocess_start_args[PATH_MAX]; ++extern char mainprocess_start[PATH_MAX]; ++extern char mainprocess_start_args[PATH_MAX]; + +-int message_count; // Counter for sent messages. Multipart message is one message. ++extern int message_count; // Counter for sent messages. Multipart message is one message. + +-volatile sig_atomic_t break_workless_delay; // To break the delay when SIGCONT is received. +-volatile sig_atomic_t terminate; // To terminate when SIGTERM is received. ++extern volatile sig_atomic_t break_workless_delay; // To break the delay when SIGCONT is received. ++extern volatile sig_atomic_t terminate; // To terminate when SIGTERM is received. + +-char username[65]; // user and group name which are used to run. +-char groupname[65]; // (max length is just a guess) ++extern char username[65]; // user and group name which are used to run. ++extern char groupname[65]; // (max length is just a guess) + +-char infofile[PATH_MAX]; // Hepler file for stopping the smsd smoothly. +-char pidfile[PATH_MAX]; // File where a process id is stored. ++extern char infofile[PATH_MAX]; // Hepler file for stopping the smsd smoothly. ++extern char pidfile[PATH_MAX]; // File where a process id is stored. + + // Command line arguments: +-char arg_username[65]; +-char arg_groupname[65]; +-char arg_infofile[PATH_MAX]; +-char arg_pidfile[PATH_MAX]; +-char arg_logfile[PATH_MAX]; +-int arg_terminal; ++extern char arg_username[65]; ++extern char arg_groupname[65]; ++extern char arg_infofile[PATH_MAX]; ++extern char arg_pidfile[PATH_MAX]; ++extern char arg_logfile[PATH_MAX]; ++extern int arg_terminal; + // 3.1.7: +-char arg_7bit_packed[512]; +-int do_encode_decode_arg_7bit_packed; ++extern char arg_7bit_packed[512]; ++extern int do_encode_decode_arg_7bit_packed; + +-int terminal; // 1 if smsd is communicating with terminal. +-pid_t device_pids[NUMBER_OF_MODEMS]; // Pid's of modem processes. +-char run_info[PATH_MAX]; // Information about external script/program execution. ++extern int terminal; // 1 if smsd is communicating with terminal. ++extern pid_t device_pids[NUMBER_OF_MODEMS]; // Pid's of modem processes. ++extern char run_info[PATH_MAX]; // Information about external script/program execution. + +-char communicate[32]; // Device name for terminal communication mode. ++extern char communicate[32]; // Device name for terminal communication mode. + +-char international_prefixes[PATH_MAX +1]; +-char national_prefixes[PATH_MAX +1]; ++extern char international_prefixes[PATH_MAX +1]; ++extern char national_prefixes[PATH_MAX +1]; + + // Storage for startup errors: +-char *startup_err_str; +-int startup_err_count; ++extern char *startup_err_str; ++extern int startup_err_count; + + // Storage for PDU's: +-char *incoming_pdu_store; +-char *outgoing_pdu_store; +-char *routed_pdu_store; ++extern char *incoming_pdu_store; ++extern char *outgoing_pdu_store; ++extern char *routed_pdu_store; + + // Storage for getfile errors: +-char *getfile_err_store; ++extern char *getfile_err_store; + + // Text buffer for error messages: +-char tb[SIZE_TB]; ++extern char tb[SIZE_TB]; + + // Buffer for SIM memory checking: +-char *check_memory_buffer; +-size_t check_memory_buffer_size; ++extern char *check_memory_buffer; ++extern size_t check_memory_buffer_size; + +-int os_cygwin; // 1 if we are on Cygwin. ++extern int os_cygwin; // 1 if we are on Cygwin. + +-char language_file[PATH_MAX]; // File name of translated headers. +-char yes_chars[SIZE_HEADER]; // Characters which mean "yes" in the yesno() question. +-char no_chars[SIZE_HEADER]; // See details inside read_translation() function. +-char yes_word[SIZE_HEADER]; // "yes" printed as an output. +-char no_word[SIZE_HEADER]; // "no" +-char datetime_format[SIZE_HEADER]; // strftime format string for time stamps (not inside status reports). +-char logtime_format[SIZE_HEADER]; // 3.1.7: strftime format string for logging time stamps +-char date_filename_format[SIZE_HEADER]; // 3.1.7: strftime format string for date_filename +-int translate_incoming; // 0 if incoming message headers are NOT transtaled. ++extern char language_file[PATH_MAX]; // File name of translated headers. ++extern char yes_chars[SIZE_HEADER]; // Characters which mean "yes" in the yesno() question. ++extern char no_chars[SIZE_HEADER]; // See details inside read_translation() function. ++extern char yes_word[SIZE_HEADER]; // "yes" printed as an output. ++extern char no_word[SIZE_HEADER]; // "no" ++extern char datetime_format[SIZE_HEADER]; // strftime format string for time stamps (not inside status reports). ++extern char logtime_format[SIZE_HEADER]; // 3.1.7: strftime format string for logging time stamps ++extern char date_filename_format[SIZE_HEADER]; // 3.1.7: strftime format string for date_filename ++extern int translate_incoming; // 0 if incoming message headers are NOT transtaled. + + // 3.1.14: +-int logtime_us; +-int logtime_ms; ++extern int logtime_us; ++extern int logtime_ms; + + // 3.1.14: +-int shell_test; ++extern int shell_test; + + // Next two are for debugging purposes: +-int enable_smsd_debug; +-char smsd_debug[SIZE_SMSD_DEBUG]; // Header of an outgoing message file. ++extern int enable_smsd_debug; ++extern char smsd_debug[SIZE_SMSD_DEBUG]; // Header of an outgoing message file. + + // 3.1.20: Alt keys in communication mode: + #define COMMUNICATE_A_KEY_COUNT 10 +-char communicate_a_keys[COMMUNICATE_A_KEY_COUNT][256]; ++extern char communicate_a_keys[COMMUNICATE_A_KEY_COUNT][256]; + + /* initialize all variable with default values */ + +Index: smstools/src/smsd_cfg.c +=================================================================== +--- smstools.orig/src/smsd_cfg.c 2020-07-27 19:00:41.616207603 +0000 ++++ smstools/src/smsd_cfg.c 2020-08-05 19:17:41.595712888 +0000 +@@ -38,6 +38,221 @@ + #include "modeminit.h" + #include "charshift.h" + ++ ++/* global variables */ ++char process_title[32]; // smsd for main task, NOTIFIER or CHILD, name of a modem for other tasks. ++int process_id; // -1 for main task, all modems have numbers starting with 0. ++ // This is the same as device, can be used like devices[process_id] if IS_MODEM_PROCESS. ++ ++time_t process_start_time; ++ ++int modem_handle; // Handle for modem. ++ ++int put_command_timeouts; ++unsigned long long put_command_sent; // 3.1.16beta. ++char tmpdir[PATH_MAX]; // 3.1.16beta. ++ ++// NOTE for regular run intervals: effective value is at least delaytime. ++ ++char configfile[PATH_MAX]; // Path to config file ++char d_spool[PATH_MAX]; // Spool directory ++char d_failed[PATH_MAX]; // Failed spool directory ++char d_failed_copy[PATH_MAX]; // 3.1.17. ++char d_incoming[PATH_MAX]; // Incoming spool directory ++char d_incoming_copy[PATH_MAX]; // 3.1.16beta2. ++char d_report[PATH_MAX]; // Incoming report spool directory ++char d_report_copy[PATH_MAX]; // 3.1.17. ++char d_phonecalls[PATH_MAX]; // Incoming phonecalls data directory ++char d_saved[PATH_MAX]; // Directory for smsd's internal use, concatenation storage files etc. ++char d_sent[PATH_MAX]; // Sent spool directory ++char d_sent_copy[PATH_MAX]; // 3.1.17. ++char d_checked[PATH_MAX]; // Spool directory for checked messages (only used when no provider queues used) ++char eventhandler[PATH_MAX]; // Global event handler program or script ++char alarmhandler[PATH_MAX]; // Global alarm handler program or script ++char checkhandler[PATH_MAX]; // Handler that checks if the sms file is valid. ++int alarmlevel; // Alarm Level (9=highest). Verbosity of alarm handler. ++char logfile[PATH_MAX]; // Name or Handle of Log File ++int loglevel; // Log Level (9=highest). Verbosity of log file. ++_queue queues[NUMBER_OF_MODEMS]; // Queues ++_device devices[NUMBER_OF_MODEMS]; // Modem devices ++int delaytime; // sleep-time after workless ++int delaytime_mainprocess; // sleep-time after workless, main process. If -1, delaytime is used. ++int blocktime; // sleep-time after multiple errors ++int blockafter; // Block modem after n errors ++int errorsleeptime; // sleep-time after each error ++int autosplit; // Splitting of large text messages 0=no, 1=yes 2=number with text, 3=number with UDH ++int receive_before_send; // if 1 smsd tries to receive one message before sending ++int store_received_pdu; // 0=no, 1=unsupported pdu's only, 2=unsupported and 8bit/unicode, 3=all ++int store_sent_pdu; // 0=no, 1=failed pdu's only, 2=failed and 8bit/unicode, 3=all ++int validity_period; // Validity period for messages. ++int decode_unicode_text; // 1 if unicode text is decoded internally. ++int internal_combine; // 1 if multipart message is combined internally. ++int internal_combine_binary; // 1 if multipart binary message is combined internally. Defaults to internal_combine. ++int keep_filename; // 0 if unique filename is created to each directory when a message file is moved. ++int store_original_filename; // 1 if an original filename is saved to message file when it's moved from ++ // outgoing directory to spooler. Works together with keep_filename. ++int date_filename; // 1 or 2 if YYYYMMDD is included to the filename of incoming message. ++char regular_run[PATH_MAX]; // Script/program which is run regularly. ++int regular_run_interval; // Number of seconds between running a regular_run script/progdam. ++char admin_to[SIZE_TO]; // Destination number for administrative messages. ++int filename_preview; // Number of chars of message text to concatenate to filename. ++int incoming_utf8; // 1 if incoming files are saved using UTF-8 character set. ++int outgoing_utf8; // 1 if outgoing files are automatically converted from UTF-8 to ISO and GSM. ++int log_charconv; // 1 if character set conversion is logged. ++int log_single_lines; // 1 if linefeeds are removed from the modem response to be logged. ++int executable_check; // 0 if eventhandler and other executables are NOT checked during the startup checking. ++int keep_messages; // For testing purposes: messages are not deleted and smsd stops after first run. ++char priviledged_numbers[SIZE_PRIVILEDGED_NUMBERS]; // Priviledged numbers in incoming messages. ++int ic_purge_hours; // If internal_combine is used, concatenation storage is checked every ic_purge_interval minutes ++int ic_purge_minutes; // and if there is message parts older than defined, they are handled or deleted. ++int ic_purge_read; // 1 = message parts are stored as single messages. 0 = parts are just deleted. ++int ic_purge_interval; // ++char shell[PATH_MAX]; // Shell used to run eventhandler, defaults to /bin/sh ++char adminmessage_device[32]; // Name of device used to send administrative messages of mainspooler. ++int smart_logging; // 1 = if loglevel is less than 7, degug log is written is there has been any errors. ++int status_signal_quality; // 1 = signal quality is written to status file. ++int status_include_counters; // 1 = succeeded, failed and received counters are included in the status line. ++int status_include_uptime; // 3.1.16beta: 1 = include started & uptime line in the status file. ++int hangup_incoming_call; // 1 = if detected unexpected input contains RING and we want to end call. ++int max_continuous_sending; // Defines when sending is breaked to do check/do other tasks. Time in minutes. ++int voicecall_hangup_ath; // If ATH is used instead of AT+CHUP. ++ ++// 3.1.5: ++int trust_outgoing; // 1 = it's _sure_ that files are created by rename AND permissions are correct. Speeds up spooling. ++ ++// 3.1.5: ++int ignore_outgoing_priority; // 1 = Priority: high header is not checked. Speeds up spooling. ++ ++// 3.1.7: ++int ignore_exec_output; // 1 = stdout and stderr of eventhandlers is _not_ checked. ++ ++// 3.1.7: ++mode_t conf_umask; // File mode creation mask for smsd and modem processes. ++ ++// 3.1.7: ++int trim_text; // 1 = trailing whitespaces are removed from text: ++ ++// 3.1.7: ++int use_linux_ps_trick; // 1 = change argv[0] to "smsd: MAINPROCESS", "smsd: GSM1" etc. ++ ++// 3.1.7: ++int log_unmodified; ++ ++// 3.1.7: ++char suspend_filename[PATH_MAX]; ++ ++// 3.1.9: ++int spool_directory_order; ++ ++// 3.1.9: 1 if read_from_modem is logged. ++int log_read_from_modem; ++ ++// 3.1.16beta2: log_read_timing for performance tuning. ++int log_read_timing; ++ ++// 3.1.16beta: ++int log_response_time; ++ ++// 3.1.16beta2: ++int default_alphabet; ++ ++// 3.1.17: Child process for the mainprocess: ++char mainprocess_child[PATH_MAX]; ++char mainprocess_child_args[PATH_MAX]; ++ ++// 3.1.17: Notifier for the mainprocess: ++int mainprocess_notifier; ++ ++// 3.1.17: If *_copy was made, evenhandler can use it instead of original file: ++int eventhandler_use_copy; ++ ++// 3.1.17: This defines how long to sleep while looping: ++int sleeptime_mainprocess; ++ ++// 3.1.17: Defines how often PID is checked to detect if another smsd is running: ++int check_pid_interval; ++ ++// 3.1.18: start script/program for mainprocess: ++char mainprocess_start[PATH_MAX]; ++char mainprocess_start_args[PATH_MAX]; ++ ++int message_count; // Counter for sent messages. Multipart message is one message. ++ ++volatile sig_atomic_t break_workless_delay; // To break the delay when SIGCONT is received. ++volatile sig_atomic_t terminate; // To terminate when SIGTERM is received. ++ ++char username[65]; // user and group name which are used to run. ++char groupname[65]; // (max length is just a guess) ++ ++char infofile[PATH_MAX]; // Hepler file for stopping the smsd smoothly. ++char pidfile[PATH_MAX]; // File where a process id is stored. ++ ++// Command line arguments: ++char arg_username[65]; ++char arg_groupname[65]; ++char arg_infofile[PATH_MAX]; ++char arg_pidfile[PATH_MAX]; ++char arg_logfile[PATH_MAX]; ++int arg_terminal; ++// 3.1.7: ++char arg_7bit_packed[512]; ++int do_encode_decode_arg_7bit_packed; ++ ++int terminal; // 1 if smsd is communicating with terminal. ++pid_t device_pids[NUMBER_OF_MODEMS]; // Pid's of modem processes. ++char run_info[PATH_MAX]; // Information about external script/program execution. ++ ++char communicate[32]; // Device name for terminal communication mode. ++ ++char international_prefixes[PATH_MAX +1]; ++char national_prefixes[PATH_MAX +1]; ++ ++// Storage for startup errors: ++char *startup_err_str; ++int startup_err_count; ++ ++// Storage for PDU's: ++char *incoming_pdu_store; ++char *outgoing_pdu_store; ++char *routed_pdu_store; ++ ++// Storage for getfile errors: ++char *getfile_err_store; ++ ++// Text buffer for error messages: ++char tb[SIZE_TB]; ++ ++// Buffer for SIM memory checking: ++char *check_memory_buffer; ++size_t check_memory_buffer_size; ++ ++int os_cygwin; // 1 if we are on Cygwin. ++ ++char language_file[PATH_MAX]; // File name of translated headers. ++char yes_chars[SIZE_HEADER]; // Characters which mean "yes" in the yesno() question. ++char no_chars[SIZE_HEADER]; // See details inside read_translation() function. ++char yes_word[SIZE_HEADER]; // "yes" printed as an output. ++char no_word[SIZE_HEADER]; // "no" ++char datetime_format[SIZE_HEADER]; // strftime format string for time stamps (not inside status reports). ++char logtime_format[SIZE_HEADER]; // 3.1.7: strftime format string for logging time stamps ++char date_filename_format[SIZE_HEADER]; // 3.1.7: strftime format string for date_filename ++int translate_incoming; // 0 if incoming message headers are NOT transtaled. ++ ++// 3.1.14: ++int logtime_us; ++int logtime_ms; ++ ++// 3.1.14: ++int shell_test; ++ ++// Next two are for debugging purposes: ++int enable_smsd_debug; ++char smsd_debug[SIZE_SMSD_DEBUG]; // Header of an outgoing message file. ++ ++// 3.1.20: Alt keys in communication mode: ++#define COMMUNICATE_A_KEY_COUNT 10 ++char communicate_a_keys[COMMUNICATE_A_KEY_COUNT][256]; ++ + char *msg_dir = "%s directory %s cannot be opened."; + char *msg_file = "%s directory %s is not writable."; + char *msg_not_executable = "is not executable for smsd."; +Index: smstools/src/logging.c +=================================================================== +--- smstools.orig/src/logging.c 2020-07-27 19:00:41.612207583 +0000 ++++ smstools/src/logging.c 2020-08-05 19:27:38.373800111 +0000 +@@ -25,6 +25,16 @@ + #include "smsd_cfg.h" + #include "stats.h" + ++ ++// 3.1.16beta2: Moved logch() and prch() from charset.c to logging.c: ++char logch_buffer[8192]; ++ ++char prch(char ch); ++ ++// 3.1.16beta: changed type: ++//int trouble_logging_started; ++time_t trouble_logging_started; ++ + int Filehandle = -1; + int Level; + int SavedLevel; +Index: smstools/src/logging.h +=================================================================== +--- smstools.orig/src/logging.h 2020-07-27 19:00:41.612207583 +0000 ++++ smstools/src/logging.h 2020-08-05 19:27:52.077848035 +0000 +@@ -18,7 +18,7 @@ + #include + + // 3.1.16beta2: Moved logch() and prch() from charset.c to logging.c: +-char logch_buffer[8192]; ++extern char logch_buffer[8192]; + + #ifdef __GNUC__ + void logch(char* format, ...) __attribute__ ((format(printf, 1, 2))); +@@ -26,11 +26,11 @@ + void logch(char* format, ...); + #endif + +-char prch(char ch); ++extern char prch(char ch); + + // 3.1.16beta: changed type: + //int trouble_logging_started; +-time_t trouble_logging_started; ++extern time_t trouble_logging_started; + + int change_loglevel(int new_level); + void restore_loglevel(); +Index: smstools/src/stats.c +=================================================================== +--- smstools.orig/src/stats.c 2020-07-27 19:00:41.616207603 +0000 ++++ smstools/src/stats.c 2020-08-05 19:28:58.094078936 +0000 +@@ -29,6 +29,20 @@ + #include + #endif + ++ ++_stats* statistics[NUMBER_OF_MODEMS]; // Statistic data (shared memory!) ++int rejected_counter; // Statistic counter, rejected SM, number does not fit into any queue ++time_t start_time; // Start time of smsd, allows statistic functions ++int printstatus; // if 1 smsd outputs status on stdout ++time_t last_stats; // time when the last stats file was created ++char d_stats[PATH_MAX]; // path to statistic files ++int stats_interval; // time between statistic files in seconds. ++int stats_no_zeroes; // Suppress files that contain only zeroes ++int status_interval; // time between updating status file in seconds ++ ++char *shared_buffer; ++ ++ + char newstatus[NUMBER_OF_MODEMS +1] = {0}; + char oldstatus[NUMBER_OF_MODEMS +1] = {0}; + +Index: smstools/src/stats.h +=================================================================== +--- smstools.orig/src/stats.h 2020-07-27 19:00:41.616207603 +0000 ++++ smstools/src/stats.h 2020-08-05 19:29:14.750137182 +0000 +@@ -33,17 +33,17 @@ + int ber; + } _stats; + +-_stats* statistics[NUMBER_OF_MODEMS]; // Statistic data (shared memory!) +-int rejected_counter; // Statistic counter, rejected SM, number does not fit into any queue +-time_t start_time; // Start time of smsd, allows statistic functions +-int printstatus; // if 1 smsd outputs status on stdout +-time_t last_stats; // time when the last stats file was created +-char d_stats[PATH_MAX]; // path to statistic files +-int stats_interval; // time between statistic files in seconds. +-int stats_no_zeroes; // Suppress files that contain only zeroes +-int status_interval; // time between updating status file in seconds ++extern _stats* statistics[NUMBER_OF_MODEMS]; // Statistic data (shared memory!) ++extern int rejected_counter; // Statistic counter, rejected SM, number does not fit into any queue ++extern time_t start_time; // Start time of smsd, allows statistic functions ++extern int printstatus; // if 1 smsd outputs status on stdout ++extern time_t last_stats; // time when the last stats file was created ++extern char d_stats[PATH_MAX]; // path to statistic files ++extern int stats_interval; // time between statistic files in seconds. ++extern int stats_no_zeroes; // Suppress files that contain only zeroes ++extern int status_interval; // time between updating status file in seconds + +-char *shared_buffer; ++extern char *shared_buffer; + + /* Creates shared memory variables for statistic data */ + +Index: smstools/src/blacklist.c +=================================================================== +--- smstools.orig/src/blacklist.c 2020-07-27 19:00:41.612207583 +0000 ++++ smstools/src/blacklist.c 2020-08-05 19:34:13.903183463 +0000 +@@ -23,6 +23,8 @@ + #include "alarm.h" + #include "smsd_cfg.h" + ++char blacklist[256]; // Filename of the black-list ++ + int inblacklist(char* msisdn) + { + FILE* file; +Index: smstools/src/blacklist.h +=================================================================== +--- smstools.orig/src/blacklist.h 2020-07-27 19:00:41.612207583 +0000 ++++ smstools/src/blacklist.h 2020-08-05 19:34:04.903151994 +0000 +@@ -15,7 +15,7 @@ + #ifndef BLACK_H + #define BLACK_H + +-char blacklist[256]; // Filename of the black-list ++extern char blacklist[256]; // Filename of the black-list + + int inblacklist(char* msisdn); + +Index: smstools/src/whitelist.c +=================================================================== +--- smstools.orig/src/whitelist.c 2020-07-27 19:00:41.616207603 +0000 ++++ smstools/src/whitelist.c 2020-08-05 19:39:23.436266057 +0000 +@@ -23,6 +23,8 @@ + #include "alarm.h" + #include "smsd_cfg.h" + ++char whitelist[256]; // Filename of the white-list ++ + /* Used with >= 3.1x */ + int inwhitelist_q(char* msisdn, char *queuename) + { +Index: smstools/src/whitelist.h +=================================================================== +--- smstools.orig/src/whitelist.h 2020-07-27 19:00:41.616207603 +0000 ++++ smstools/src/whitelist.h 2020-08-05 19:34:29.959239624 +0000 +@@ -15,7 +15,7 @@ + #ifndef WHITE_H + #define WHITE_H + +-char whitelist[256]; // Filename of the white-list ++extern char whitelist[256]; // Filename of the white-list + + /* Used with >= 3.1x */ + int inwhitelist_q(char* msisdn, char *queuename); diff --git a/package/smstools3/Config.in b/package/smstools3/Config.in new file mode 100644 index 00000000..dca3996e --- /dev/null +++ b/package/smstools3/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_SMSTOOLS3 + bool "smstools3" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + help + The SMS Server Tools 3 is a SMS Gateway software which can + send and receive short messages through GSM modems and + mobile phones. + + http://smstools3.kekekasvi.com/ + +if BR2_PACKAGE_SMSTOOLS3 + +config BR2_PACKAGE_SMSTOOLS3_NB_MODEMS + int "Number of modems to support" + default 1 + help + To reduce memory footprint of SMS Server Tools, you can + specify the exact number of modems connected to your + board. By default only 1 modem is used. + +endif + +comment "smstools3 needs a toolchain w/ wchar, threads" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/package/smstools3/S50smsd b/package/smstools3/S50smsd new file mode 100644 index 00000000..cd781508 --- /dev/null +++ b/package/smstools3/S50smsd @@ -0,0 +1,43 @@ +#!/bin/sh +# +# Starts the SMS Server Tools 3 +# + +NAME=smsd +DAEMON=/usr/bin/$NAME +PIDFILE=/var/run/$NAME.pid +SPOOL=/var/spool/sms + +start() +{ + printf "Starting $NAME: " + mkdir -p $SPOOL/outgoing + mkdir -p $SPOOL/incoming + mkdir -p $SPOOL/checked + start-stop-daemon -S -q -p $PIDFILE --exec $DAEMON -- -c /etc/smsd.conf && echo "OK" || echo "Failed" +} + +stop() +{ + printf "Stopping $NAME: " + start-stop-daemon -K -q -p $PIDFILE && echo "OK" || echo "Failed" + rm -f $PIDFILE +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/package/smstools3/smstools3.hash b/package/smstools3/smstools3.hash new file mode 100644 index 00000000..83831160 --- /dev/null +++ b/package/smstools3/smstools3.hash @@ -0,0 +1,7 @@ +# From http://smstools3.kekekasvi.com/packages/ +md5 6a9f038fb38a49cc3a4f8f14a88fb8af smstools-3.1.21.tar.gz +sha256 a26ba4c02b16f6cf13177bffca6c9230dc5fefaeba8e3030cd4e4905f6a92084 smstools3-3.1.21.tar.gz + +# Hash for license files +sha256 884d8f0377259f291432f4fa31d5a9720eefa0e0d797652ae686b6325a434624 doc/license.html +sha256 786b4da4dd900cad87a7dc17769458607bdeae575d62e6e98ad7144e9225f8d3 LICENSE diff --git a/package/smstools3/smstools3.mk b/package/smstools3/smstools3.mk new file mode 100644 index 00000000..d13900bc --- /dev/null +++ b/package/smstools3/smstools3.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# smstools3 +# +################################################################################ + +SMSTOOLS3_VERSION = 3.1.21 +SMSTOOLS3_SITE = http://smstools3.kekekasvi.com/packages +SMSTOOLS3_LICENSE = GPL-2.0+ +SMSTOOLS3_LICENSE_FILES = doc/license.html LICENSE +SMSTOOLS3_SELINUX_MODULES = smstools + +SMSTOOLS3_CFLAGS = $(TARGET_CFLAGS) +SMSTOOLS3_CFLAGS += -D NUMBER_OF_MODEMS=$(BR2_PACKAGE_SMSTOOLS3_NB_MODEMS) +SMSTOOLS3_CFLAGS += -D NOSTATS + +define SMSTOOLS3_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" CFLAGS="$(SMSTOOLS3_CFLAGS)" -C $(@D) +endef + +define SMSTOOLS3_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/smstools3/S50smsd \ + $(TARGET_DIR)/etc/init.d/S50smsd +endef + +define SMSTOOLS3_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/src/smsd \ + $(TARGET_DIR)/usr/bin/smsd + $(INSTALL) -m 0755 -D $(@D)/scripts/sendsms \ + $(TARGET_DIR)/usr/bin/sendsms + $(INSTALL) -m 0644 -D $(@D)/examples/smsd.conf.easy \ + $(TARGET_DIR)/etc/smsd.conf +endef + +$(eval $(generic-package)) diff --git a/package/snappy/0001-Fix-compilation-error-raised-by-vqtbl1q_u8-instructi.patch b/package/snappy/0001-Fix-compilation-error-raised-by-vqtbl1q_u8-instructi.patch new file mode 100644 index 00000000..b10ea7ec --- /dev/null +++ b/package/snappy/0001-Fix-compilation-error-raised-by-vqtbl1q_u8-instructi.patch @@ -0,0 +1,52 @@ +From 284d5a6f267d4962b2b88540f218c10740a6c053 Mon Sep 17 00:00:00 2001 +From: Dario Binacchi +Date: Sat, 8 Jun 2024 18:42:16 +0200 +Subject: [PATCH] Fix compilation error raised by vqtbl1q_u8 instruction +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The compilation in Buildroot for the raspberrypi3_qt5we_defconfig +configuration: + +make raspberrypi3_qt5we_defconfig +make + +raises the following error: + +In file included from buildroot/output/build/snappy-1.2.1/snappy.cc:29: +buildroot/output/build/snappy-1.2.1/snappy-internal.h: In function ‘snappy::internal::V128 snappy::internal::V128_Shuffle(V128, V128)’: +buildroot/output/build/snappy-1.2.1/snappy-internal.h:109:10: error: ‘vqtbl1q_u8’ was not declared in this scope; did you mean ‘vtbl1_u8’? + 109 | return vqtbl1q_u8(input, shuffle_mask); + | ^~~~~~~~~~ + | vtbl1_u8 +make[4]: *** [CMakeFiles/snappy.dir/build.make:118: CMakeFiles/snappy.dir/snappy.cc.o] Error 1 + +As reported by [1], the vqtbl1q_u8 instruction is supported by A64 +architectures. For this reason, the patch enables the use of the +instruction only for NEON of such architecture. + +[1] https://developer.arm.com/architectures/instruction-sets/intrinsics/vqtbl1q_u8 + +Signed-off-by: Dario Binacchi +Upstream: https://github.com/google/snappy/pull/185 +--- + snappy-internal.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/snappy-internal.h b/snappy-internal.h +index ae78247dbbc9..256d32344d1a 100644 +--- a/snappy-internal.h ++++ b/snappy-internal.h +@@ -46,7 +46,7 @@ + #include + #endif + +-#if SNAPPY_HAVE_SSSE3 || SNAPPY_HAVE_NEON ++#if SNAPPY_HAVE_SSSE3 || (SNAPPY_HAVE_NEON && defined(__aarch64__)) + #define SNAPPY_HAVE_VECTOR_BYTE_SHUFFLE 1 + #else + #define SNAPPY_HAVE_VECTOR_BYTE_SHUFFLE 0 +-- +2.43.0 + diff --git a/package/snappy/Config.in b/package/snappy/Config.in new file mode 100644 index 00000000..1bd3d6ec --- /dev/null +++ b/package/snappy/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_SNAPPY + bool "snappy" + depends on BR2_INSTALL_LIBSTDCPP + help + Snappy is a compression/decompression library. It does not + aim for maximum compression, or compatibility with any other + compression library; instead, it aims for very high speeds + and reasonable compression. + + http://google.github.io/snappy/ + +comment "snappy needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/snappy/snappy.hash b/package/snappy/snappy.hash new file mode 100644 index 00000000..0439ca8a --- /dev/null +++ b/package/snappy/snappy.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 736aeb64d86566d2236ddffa2865ee5d7a82d26c9016b36218fcc27ea4f09f86 snappy-1.2.1.tar.gz +sha256 55172044f7e241207117448a4d9d6ba1d0925c8ad66b5d4c08c70adfa9cc3de6 COPYING diff --git a/package/snappy/snappy.mk b/package/snappy/snappy.mk new file mode 100644 index 00000000..21c76cd5 --- /dev/null +++ b/package/snappy/snappy.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# snappy +# +################################################################################ + +SNAPPY_VERSION = 1.2.1 +SNAPPY_SITE = $(call github,google,snappy,$(SNAPPY_VERSION)) +SNAPPY_LICENSE = BSD-3-Clause +SNAPPY_LICENSE_FILES = COPYING +SNAPPY_CPE_ID_VENDOR = google +SNAPPY_INSTALL_STAGING = YES +SNAPPY_CONF_OPTS = -DSNAPPY_BUILD_BENCHMARKS=OFF -DSNAPPY_BUILD_TESTS=OFF + +$(eval $(cmake-package)) diff --git a/package/sngrep/Config.in b/package/sngrep/Config.in new file mode 100644 index 00000000..4d0d80c1 --- /dev/null +++ b/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/package/sngrep/sngrep.hash b/package/sngrep/sngrep.hash new file mode 100644 index 00000000..c9b9c8be --- /dev/null +++ b/package/sngrep/sngrep.hash @@ -0,0 +1,6 @@ +# From https://github.com/irontec/sngrep/releases/download/v1.7.0/sngrep-1.7.0.tar.gz.md5sum +md5 ee3cc7bd75adeb713411aa678e45ae4c sngrep-1.7.0.tar.gz + +# Locally computed +sha256 2e5ba3a4d6486ea00bd73d2cceff383ba162dcd6d0170ae74cfa3b1c206e2cb1 sngrep-1.7.0.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE diff --git a/package/sngrep/sngrep.mk b/package/sngrep/sngrep.mk new file mode 100644 index 00000000..b86d7e83 --- /dev/null +++ b/package/sngrep/sngrep.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# sngrep +# +################################################################################ + +SNGREP_VERSION = 1.7.0 +SNGREP_SITE = \ + https://github.com/irontec/sngrep/releases/download/v$(SNGREP_VERSION) +SNGREP_LICENSE = GPL-3.0+ +SNGREP_LICENSE_FILES = LICENSE +SNGREP_CPE_ID_VENDOR = irontec +SNGREP_AUTORECONF = YES +SNGREP_DEPENDENCIES = libpcap ncurses host-pkgconf + +SNGREP_CONF_ENV += \ + $(if $(BR2_STATIC_LIBS),LIBS="`$(STAGING_DIR)/usr/bin/pcap-config --static --libs`") + +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_CONF_ENV += LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config +SNGREP_DEPENDENCIES += gnutls libgcrypt +SNGREP_CONF_OPTS += --with-gnutls --without-openssl +else +SNGREP_CONF_OPTS += --without-gnutls --without-openssl +endif + +ifeq ($(BR2_PACKAGE_PCRE2),y) +SNGREP_DEPENDENCIES += pcre2 +SNGREP_CONF_OPTS += --without-pcre --with-pcre2 +else ifeq ($(BR2_PACKAGE_PCRE),y) +SNGREP_DEPENDENCIES += pcre +SNGREP_CONF_OPTS += --with-pcre --without-pcre2 +else +SNGREP_CONF_OPTS += --without-pcre --without-pcre2 +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +SNGREP_DEPENDENCIES += zlib +SNGREP_CONF_OPTS += --with-zlib +else +SNGREP_CONF_OPTS += --without-zlib +endif + +$(eval $(autotools-package)) diff --git a/package/snmpclitools/Config.in b/package/snmpclitools/Config.in new file mode 100644 index 00000000..bf3668a8 --- /dev/null +++ b/package/snmpclitools/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SNMPCLITOOLS + bool "snmpclitools" + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_PYSMI # runtime + select BR2_PACKAGE_PYTHON_PYSNMP # runtime + help + SNMP command-line tools. + + https://github.com/etingof/snmpclitools diff --git a/package/snmpclitools/snmpclitools.hash b/package/snmpclitools/snmpclitools.hash new file mode 100644 index 00000000..575bfbce --- /dev/null +++ b/package/snmpclitools/snmpclitools.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/snmpclitools/json +md5 132b100f5e7b80715e6c1d424e89687c snmpclitools-0.6.4.tar.gz +sha256 820c45de419bf355c845a96610a395ec18a15176ac0362d388da7740266ea1ac snmpclitools-0.6.4.tar.gz +# Locally computed sha256 checksums +sha256 ed5561a0f5b75e93aa026c1b9fdef58e7ccbf6b2e9a2458be732afc288209d23 PKG-INFO diff --git a/package/snmpclitools/snmpclitools.mk b/package/snmpclitools/snmpclitools.mk new file mode 100644 index 00000000..a4a90e5b --- /dev/null +++ b/package/snmpclitools/snmpclitools.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# snmpclitools +# +################################################################################ + +SNMPCLITOOLS_VERSION = 0.6.4 +SNMPCLITOOLS_SITE = https://files.pythonhosted.org/packages/03/2a/8488828e92a82c5416e33fba6089283162937b0f73e5b15205fb6ec3bbea +SNMPCLITOOLS_SETUP_TYPE = setuptools +SNMPCLITOOLS_LICENSE = BSD-2-Clause +SNMPCLITOOLS_LICENSE_FILES = PKG-INFO + +$(eval $(python-package)) diff --git a/package/snmppp/Config.in b/package/snmppp/Config.in new file mode 100644 index 00000000..f3a07671 --- /dev/null +++ b/package/snmppp/Config.in @@ -0,0 +1,37 @@ +config BR2_PACKAGE_SNMPPP + bool "snmp++" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + SNMP++v3.x is a C++ API which supports SNMP v1, v2c, and v3. + + https://www.agentpp.com/api/cpp/snmp_pp.html + +if BR2_PACKAGE_SNMPPP + +config BR2_PACKAGE_SNMPPP_LOGGING + bool "enable logging" + help + Enable logging output for SNMP++. + According to the SNMP++ documentation, disabling logging + "increases performance drastically and minimizes memory + consumption". + +config BR2_PACKAGE_SNMPPP_SNMPV3 + bool "enable SNMPv3" + default y + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + help + Enable optional support for SNMP++. This selects OpenSSL. + +comment "SNMPv3 needs a toolchain w/ gcc >= 4.8" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +endif + +comment "snmp++ needs a toolchain w/ threads, C++, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/package/snmppp/snmppp.hash b/package/snmppp/snmppp.hash new file mode 100644 index 00000000..b66056ef --- /dev/null +++ b/package/snmppp/snmppp.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 034553f7cb75d7ce1fe70cb3ba06e88587b6bca4fa062d10344ce4555a1395f7 snmp++-3.5.1.tar.gz +sha256 61337e799c8274e596e5783b22607beea8073ee296c6b27fc5c7487296e56851 src/v3.cpp diff --git a/package/snmppp/snmppp.mk b/package/snmppp/snmppp.mk new file mode 100644 index 00000000..966bb340 --- /dev/null +++ b/package/snmppp/snmppp.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# snmppp +# +################################################################################ + +SNMPPP_VERSION = 3.5.1 +SNMPPP_SOURCE = snmp++-$(SNMPPP_VERSION).tar.gz +SNMPPP_SITE = http://www.agentpp.com/download +SNMPPP_DEPENDENCIES = host-pkgconf +SNMPPP_INSTALL_STAGING = YES +SNMPPP_CONF_OPTS = $(if $(BR2_PACKAGE_SNMPPP_LOGGING),--enable-logging,--disable-logging) +SNMPPP_LICENSE = SNMP++ +SNMPPP_LICENSE_FILES = src/v3.cpp + +ifeq ($(BR2_PACKAGE_SNMPPP_SNMPV3),y) +SNMPPP_CONF_ENV += CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11" +SNMPPP_CONF_OPTS += --enable-snmpv3 +SNMPPP_DEPENDENCIES += openssl +else +SNMPPP_CONF_OPTS += --disable-snmpv3 +endif + +$(eval $(autotools-package)) diff --git a/package/snort/0001-configure.in-Avoid-path-poisoning-with-libpcap.patch b/package/snort/0001-configure.in-Avoid-path-poisoning-with-libpcap.patch new file mode 100644 index 00000000..286b6f58 --- /dev/null +++ b/package/snort/0001-configure.in-Avoid-path-poisoning-with-libpcap.patch @@ -0,0 +1,35 @@ +From 732459ca3423799ae3386df3de3f5d6ea2af1b95 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 1 Apr 2018 15:18:51 +0200 +Subject: [PATCH] configure.in: Avoid path poisoning with libpcap + +Prevent usage of unsafe libpcap header path when cross compiling. + +Signed-off-by: Romain Naour +Cc: Sergio Prado +--- +From http://patchwork.ozlabs.org/patch/860363/ +--- + configure.in | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/configure.in b/configure.in +index 4b3a5db..1e940b1 100644 +--- a/configure.in ++++ b/configure.in +@@ -70,8 +70,10 @@ case "$host" in + *-linux*) + linux="yes" + AC_DEFINE([LINUX],[1],[Define if Linux]) +- AC_SUBST(extra_incl) +- extra_incl="-I/usr/include/pcap" ++ if test -z "x$with_libpcap_includes"; then ++ AC_SUBST(extra_incl) ++ extra_incl="-I/usr/include/pcap" ++ fi + ;; + *-hpux10*|*-hpux11*) + AC_DEFINE([HPUX],[1],[Define if HP-UX 10 or 11]) +-- +2.14.3 + diff --git a/package/snort/0002-configure.in-Allow-to-override-the-INADDR_NONE-check.patch b/package/snort/0002-configure.in-Allow-to-override-the-INADDR_NONE-check.patch new file mode 100644 index 00000000..65751542 --- /dev/null +++ b/package/snort/0002-configure.in-Allow-to-override-the-INADDR_NONE-check.patch @@ -0,0 +1,44 @@ +From a6817677a42d1294f1a3ce7b9f46b10ec557ddfa Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 1 Apr 2018 15:23:59 +0200 +Subject: [PATCH] configure.in: Allow to override the INADDR_NONE check + +Prevent configure script from trying to run programs in a cross +compilation environment to check if INADDR_NONE is defined. + +In the context of Buildroot, INADDR_NONE is always defined. +The snort package will set have_inaddr_none=yes in +SNORT_CONF_ENV. + +Signed-off-by: Romain Naour +Cc: Sergio Prado +--- + configure.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.in b/configure.in +index 1e940b1..938409f 100644 +--- a/configure.in ++++ b/configure.in +@@ -284,8 +284,8 @@ AC_CHECK_TYPES([int8_t,int16_t,int32_t,int64_t]) + AC_CHECK_TYPES([boolean]) + + # In case INADDR_NONE is not defined (like on Solaris) ++AC_CACHE_CHECK([for INADDR_NONE], [have_inaddr_none], [ + have_inaddr_none="no" +-AC_MSG_CHECKING([for INADDR_NONE]) + AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[ +@@ -298,7 +298,7 @@ AC_RUN_IFELSE( + return 0; + ]])], + [have_inaddr_none="yes"], +-[have_inaddr_none="no"]) ++[have_inaddr_none="no"])]) + AC_MSG_RESULT($have_inaddr_none) + if test "x$have_inaddr_none" = "xno"; then + AC_DEFINE([INADDR_NONE],[-1],[For INADDR_NONE definition]) +-- +2.14.3 + diff --git a/package/snort/0003-configure.in-convert-AC_RUN_IFELSE-to-AC_CHECK_MEMBE.patch b/package/snort/0003-configure.in-convert-AC_RUN_IFELSE-to-AC_CHECK_MEMBE.patch new file mode 100644 index 00000000..059190ff --- /dev/null +++ b/package/snort/0003-configure.in-convert-AC_RUN_IFELSE-to-AC_CHECK_MEMBE.patch @@ -0,0 +1,239 @@ +From 1ef6bdaeb0463a208a14e5d90646ce337df738fc Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 1 Apr 2018 15:38:55 +0200 +Subject: [PATCH] configure.in: convert AC_RUN_IFELSE to AC_CHECK_MEMBERS + +With AC_CHECK_MEMBERS, we don't need to compile and run a test program +to check if a daq structure element is defined. + +Also check DAQ_Data_Channel_Params_t with params.flags + +typedef struct _DAQ_Data_Channel_Params_t +{ + unsigned flags; /* DAQ_DATA_CHANNEL_* flags*/ + unsigned timeout_ms;/* timeout of the data channel in milliseconds */ + unsigned length; /* [Future] length of the data associated with the data channel */ + uint8_t* data; /* [Future] opaque data blob to return with the data channel */ +} DAQ_Data_Channel_Params_t; + +https://github.com/Xiche/libdaq/blob/master/api/daq_common.h + +Signed-off-by: Romain Naour +Cc: Sergio Prado +--- + configure.in | 143 +++++++++++++++++------------------------------------------ + 1 file changed, 41 insertions(+), 102 deletions(-) + +diff --git a/configure.in b/configure.in +index 938409f..571322b 100644 +--- a/configure.in ++++ b/configure.in +@@ -718,17 +718,11 @@ fi + AC_CHECK_FUNCS([daq_hup_apply] [daq_acquire_with_meta] [daq_dp_add_dc]) + + AC_MSG_CHECKING([for daq real addresses]) +-AC_RUN_IFELSE( +-[AC_LANG_PROGRAM( +-[[ +-#include +-]], +-[[ +- DAQ_PktHdr_t hdr; +- hdr.n_real_dPort = 0; +-]])], +-[have_daq_real_addresses="yes"], +-[have_daq_real_addresses="no"]) ++ ++AC_CHECK_MEMBERS([DAQ_PktHdr_t hdr.n_real_dPort], ++ [have_daq_real_addresses="yes"], ++ [have_daq_real_addresses="no"], ++ [[#include ]]) + AC_MSG_RESULT($have_daq_real_addresses) + if test "x$have_daq_real_addresses" = "xyes"; then + AC_DEFINE([HAVE_DAQ_REAL_ADDRESSES],[1], +@@ -756,17 +750,11 @@ if test "x$ac_cv_func_daq_dp_add_dc" = "xyes"; then + fi + + AC_MSG_CHECKING([for daq address space ID]) +-AC_RUN_IFELSE( +-[AC_LANG_PROGRAM( +-[[ +-#include +-]], +-[[ +- DAQ_PktHdr_t hdr; +- hdr.address_space_id = 0; +-]])], +-[have_daq_address_space_id="yes"], +-[have_daq_address_space_id="no"]) ++ ++AC_CHECK_MEMBERS([DAQ_PktHdr_t hdr.address_space_id], ++ [have_daq_address_space_id="yes"], ++ [have_daq_address_space_id="no"], ++ [[#include ]]) + AC_MSG_RESULT($have_daq_address_space_id) + if test "x$have_daq_address_space_id" = "xyes"; then + AC_DEFINE([HAVE_DAQ_ADDRESS_SPACE_ID],[1], +@@ -774,17 +762,10 @@ if test "x$have_daq_address_space_id" = "xyes"; then + fi + + AC_MSG_CHECKING([for daq flow ID]) +-AC_RUN_IFELSE( +-[AC_LANG_PROGRAM( +-[[ +-#include +-]], +-[[ +- DAQ_PktHdr_t hdr; +- hdr.flow_id = 0; +-]])], +-[have_daq_flow_id="yes"], +-[have_daq_flow_id="no"]) ++AC_CHECK_MEMBERS([DAQ_PktHdr_t hdr.flow_id], ++ [have_daq_flow_id="yes"], ++ [have_daq_flow_id="no"], ++ [[#include ]]) + AC_MSG_RESULT($have_daq_flow_id) + if test "x$have_daq_flow_id" = "xyes"; then + AC_DEFINE([HAVE_DAQ_FLOW_ID],[1], +@@ -792,19 +773,10 @@ if test "x$have_daq_flow_id" = "xyes"; then + fi + + AC_MSG_CHECKING([for daq extended flow modifiers]) +-AC_RUN_IFELSE( +-[AC_LANG_PROGRAM( +-[[ +-#include +-]], +-[[ +- DAQ_ModFlow_t mod; +- mod.type = 0; +- mod.length = 0; +- mod.value = NULL; +-]])], +-[have_daq_ext_modflow="yes"], +-[have_daq_ext_modflow="no"]) ++AC_CHECK_MEMBERS([DAQ_ModFlow_t mod.type, DAQ_ModFlow_t mod.length, DAQ_ModFlow_t mod.value], ++ [have_daq_ext_modflow="yes"], ++ [have_daq_ext_modflow="no"], ++ [[#include ]]) + AC_MSG_RESULT($have_daq_ext_modflow) + if test "x$have_daq_ext_modflow" = "xyes"; then + CCONFIGFLAGS="${CCONFIGFLAGS} -DHAVE_DAQ_EXT_MODFLOW" +@@ -813,19 +785,11 @@ if test "x$have_daq_ext_modflow" = "xyes"; then + fi + + AC_MSG_CHECKING([for daq query flow]) +-AC_RUN_IFELSE( +-[AC_LANG_PROGRAM( +-[[ +-#include +-]], +-[[ +- DAQ_QueryFlow_t mod; +- mod.type = 0; +- mod.length = 0; +- mod.value = NULL; +-]])], +-[have_daq_queryflow="yes"], +-[have_daq_queryflow="no"]) ++ ++AC_CHECK_MEMBERS([DAQ_QueryFlow_t mod.type, DAQ_QueryFlow_t mod.length, DAQ_QueryFlow_t mod.value], ++ [have_daq_queryflow="yes"], ++ [have_daq_queryflow="no"], ++ [[#include ]]) + AC_MSG_RESULT($have_daq_queryflow) + if test "x$have_daq_queryflow" = "xyes"; then + CCONFIGFLAGS="${CCONFIGFLAGS} -DHAVE_DAQ_QUERYFLOW" +@@ -834,16 +798,11 @@ if test "x$have_daq_queryflow" = "xyes"; then + fi + + AC_MSG_CHECKING([for daq data channel flags]) +-AC_RUN_IFELSE( +-[AC_LANG_PROGRAM( +-[[ +-#include +-]], +-[[ +- DAQ_Data_Channel_Params_t params; +-]])], +-[have_daq_data_channel_flags="yes"], +-[have_daq_data_channel_flags="no"]) ++ ++AC_CHECK_MEMBERS([DAQ_Data_Channel_Params_t params.flags], ++ [have_daq_data_channel_flags="yes"], ++ [have_daq_data_channel_flags="no"], ++ [[#include ]]) + AC_MSG_RESULT($have_daq_data_channel_flags) + if test "x$have_daq_data_channel_flags" = "xyes"; then + CCONFIGFLAGS="${CCONFIGFLAGS} -DHAVE_DAQ_DATA_CHANNEL_PARAMS" +@@ -852,17 +811,10 @@ if test "x$have_daq_data_channel_flags" = "xyes"; then + fi + + AC_MSG_CHECKING([for separate IP versions on pinhole endpoints]) +-AC_RUN_IFELSE( +-[AC_LANG_PROGRAM( +-[[ +-#include +-]], +-[[ +- DAQ_DP_key_t dpKey; +- dpKey.src_af = 0; +-]])], +-[have_daq_data_channel_separate_ip_versions="yes"], +-[have_daq_data_channel_separate_ip_versions="no"]) ++AC_CHECK_MEMBERS([DAQ_DP_key_t dpKey.src_af], ++ [have_daq_data_channel_separate_ip_versions="yes"], ++ [have_daq_data_channel_separate_ip_versions="no"], ++ [[#include ]]) + AC_MSG_RESULT($have_daq_data_channel_separate_ip_versions) + if test "x$have_daq_data_channel_separate_ip_versions" = "xyes"; then + CCONFIGFLAGS="${CCONFIGFLAGS} -DHAVE_DAQ_DATA_CHANNEL_SEPARATE_IP_VERSIONS" +@@ -889,17 +841,10 @@ if test "x$have_daq_verdict_retry" = "xyes"; then + fi + + AC_MSG_CHECKING([for daq packet trace]) +-AC_RUN_IFELSE( +-[AC_LANG_PROGRAM( +-[[ +-#include +-]], +-[[ +- DAQ_PktHdr_t hdr; +- hdr.flags = DAQ_PKT_FLAG_TRACE_ENABLED; +-]])], +-[have_daq_packet_trace="yes"], +-[have_daq_packet_trace="no"]) ++AC_CHECK_MEMBERS([DAQ_PktHdr_t hdr.flags], ++ [have_daq_packet_trace="yes"], ++ [have_daq_packet_trace="no"], ++ [[#include ]]) + AC_MSG_RESULT($have_daq_packet_trace) + if test "x$have_daq_packet_trace" = "xyes"; then + AC_DEFINE([HAVE_DAQ_PKT_TRACE],[1], +@@ -909,17 +854,11 @@ else + fi + + AC_MSG_CHECKING([for daq verdict reason]) +-AC_RUN_IFELSE( +-[AC_LANG_PROGRAM( +-[[ +-#include +-]], +-[[ +- DAQ_ModFlow_t fl; +- fl.type = DAQ_MODFLOW_TYPE_VER_REASON; +-]])], +-[have_daq_verdict_reason="yes"], +-[have_daq_verdict_reason="no"]) ++ ++AC_CHECK_MEMBERS([DAQ_ModFlow_t fl.type], ++ [have_daq_verdict_reason="yes"], ++ [have_daq_verdict_reason="no"], ++ [[#include ]]) + AC_MSG_RESULT($have_daq_verdict_reason) + if test "x$have_daq_verdict_reason" = "xyes"; then + AC_DEFINE([HAVE_DAQ_VERDICT_REASON],[1], +-- +2.14.3 + diff --git a/package/snort/0004-configure.in-convert-AC_RUN_IFELSE-to-AC_COMPILE_IFE.patch b/package/snort/0004-configure.in-convert-AC_RUN_IFELSE-to-AC_COMPILE_IFE.patch new file mode 100644 index 00000000..9c5e611b --- /dev/null +++ b/package/snort/0004-configure.in-convert-AC_RUN_IFELSE-to-AC_COMPILE_IFE.patch @@ -0,0 +1,48 @@ +From 075b5cf8d3940ed2c39fb37c1e14a652e4a6f2fc Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 1 Apr 2018 16:21:31 +0200 +Subject: [PATCH] configure.in: convert AC_RUN_IFELSE to AC_COMPILE_IFELSE + +Prevent configure script from trying to run programs in a cross +compilation environment. + +Signed-off-by: Romain Naour +Cc: Sergio Prado +--- + configure.in | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/configure.in b/configure.in +index 571322b..e489037 100644 +--- a/configure.in ++++ b/configure.in +@@ -431,7 +431,7 @@ if test "x$LPCAP" = "xno"; then + fi + + AC_MSG_CHECKING([for pcap_lex_destroy]) +-AC_RUN_IFELSE( ++AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ + #include +@@ -823,7 +823,7 @@ if test "x$have_daq_data_channel_separate_ip_versions" = "xyes"; then + fi + + AC_MSG_CHECKING([for DAQ_VERDICT_RETRY]) +-AC_RUN_IFELSE( ++AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ + #include +@@ -886,7 +886,7 @@ if eval "echo $host_cpu|grep -i sparc >/dev/null"; then + OLD_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -mcpu=v9 " + AC_MSG_CHECKING([for sparc %time register]) +- AC_RUN_IFELSE( ++ AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[]], + [[ +-- +2.14.3 + diff --git a/package/snort/0005-fix-sparc.patch b/package/snort/0005-fix-sparc.patch new file mode 100644 index 00000000..56a29497 --- /dev/null +++ b/package/snort/0005-fix-sparc.patch @@ -0,0 +1,30 @@ +When checking if the architecture supports the %time register +instruction, do not force -mcpu to v9 while doing so. Otherwise it's +like "let's see if this v9 instruction exists when I force the compiler +to think I'm using v9", which is non-sensical. + +Signed-off-by: Fabrice Fontaine +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi + +diff -Naurp ./snort-2.9.11.1-orig/configure.in snort-2.9.11.1/configure.in +--- ./snort-2.9.11.1-orig/configure.in 2018-05-10 12:20:19.253510678 +0200 ++++ snort-2.9.11.1/configure.in 2018-05-10 12:40:18.547584998 +0200 +@@ -900,8 +900,6 @@ + + # check for sparc %time register + if eval "echo $host_cpu|grep -i sparc >/dev/null"; then +- OLD_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -mcpu=v9 " + AC_MSG_CHECKING([for sparc %time register]) + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( +@@ -915,8 +913,6 @@ + AC_MSG_RESULT($sparcv9) + if test "x$sparcv9" = "xyes"; then + AC_DEFINE([SPARCV9],[1],[For sparc v9 with %time register]) +- else +- CFLAGS="$OLD_CFLAGS" + fi + fi + diff --git a/package/snort/0006-Fix-compile-error-when-building-against-uclibc-or-mu.patch b/package/snort/0006-Fix-compile-error-when-building-against-uclibc-or-mu.patch new file mode 100644 index 00000000..ce9d5526 --- /dev/null +++ b/package/snort/0006-Fix-compile-error-when-building-against-uclibc-or-mu.patch @@ -0,0 +1,34 @@ +From dc2f54097da3cd493b8f4d06a14ef40be484d24f Mon Sep 17 00:00:00 2001 +From: Sergio Prado +Date: Thu, 21 Feb 2019 15:02:08 -0300 +Subject: [PATCH] Fix compile error when building against uclibc or musl + +The build fails when dereferencing the rpcent structure with uclibc or musl C libraries. + +../../../src/dynamic-preprocessors/appid/service_plugins/service_rpc.c:241:20: +error: dereferencing pointer to incomplete type ‘struct rpcent’ + if (rpc->r_name) + +That's because rpc.h should be included when using these C libraries. + +Signed-off-by: Sergio Prado +--- + src/dynamic-preprocessors/appid/service_plugins/service_rpc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/dynamic-preprocessors/appid/service_plugins/service_rpc.c b/src/dynamic-preprocessors/appid/service_plugins/service_rpc.c +index 81bc8a5db8ab..2e45246083a8 100644 +--- a/src/dynamic-preprocessors/appid/service_plugins/service_rpc.c ++++ b/src/dynamic-preprocessors/appid/service_plugins/service_rpc.c +@@ -32,7 +32,7 @@ + #include "flow.h" + #include "service_api.h" + +-#if defined(FREEBSD) || defined(OPENBSD) ++#if defined(FREEBSD) || defined(OPENBSD) || (defined(LINUX) && defined(__UCLIBC__) && !defined(__UCLIBC_HAS_RPC__) || !defined(__GLIBC__)) + #include "rpc/rpc.h" + #endif + +-- +2.7.4 + diff --git a/package/snort/0007-Fix-error-when-building-on-a-Fedora-host-machine.patch b/package/snort/0007-Fix-error-when-building-on-a-Fedora-host-machine.patch new file mode 100644 index 00000000..66d4fa28 --- /dev/null +++ b/package/snort/0007-Fix-error-when-building-on-a-Fedora-host-machine.patch @@ -0,0 +1,77 @@ +From eae97632157b73f0ca7c099232617b2777d0fa54 Mon Sep 17 00:00:00 2001 +From: Sergio Prado +Date: Sat, 21 Dec 2019 12:00:42 -0300 +Subject: [PATCH] Fix error when building on a Fedora host machine. + +Remove the code that adds unsafe header/library path when +cross-compiling on a Fedora host machine. + +Signed-off-by: Sergio Prado +[Fabrice: Update for 2.9.18.1 (also fix build on Centos host machine)] +Signed-off-by: Fabrice Fontaine +--- + configure.in | 24 ------------------------ + 1 file changed, 24 deletions(-) + +diff --git a/configure.in b/configure.in +index e6586f399898..fb35d4d7e3e3 100644 +--- a/configure.in ++++ b/configure.in +@@ -957,54 +957,6 @@ if test "x$enable_dlclose" = "xno"; then + AC_DEFINE([DISABLE_DLCLOSE_FOR_VALGRIND_TESTING],[1],[Don't close opened shared objects for valgrind leak testing of dynamic libraries]) + fi + +-################################################## +-# Fedora 28+ does not have inbuilt SunRPC support# +-# in glibc and is separately availble in tirpc # +-# package. Make sure we've got the library and # +-# link it # +-################################################## +- +-if test -f /etc/fedora-release ; then +- DISTRO_VERSION=$(awk '{ print $3 }' /etc/fedora-release) +- if test $DISTRO_VERSION -ge 28 ; then +- TIRPC="" +- AC_CHECK_LIB(tirpc,bindresvport,, TIRPC="no") +- echo "$TIRPC" +- if test "x$TIRPC" = "xno"; then +- echo +- echo " ERROR! tirpc not found, get it by running " +- echo " yum install libtirpc-devel " +- exit +- fi +- LIBS="${LIBS} -ltirpc" +- extra_incl="-I/usr/include/tirpc" +- fi +-fi +- +-################################################## +-# Centos 8+ does not have inbuilt SunRPC support # +-# in glibc and is separately availble in tirpc # +-# package. Make sure we've got the library and # +-# link it # +-################################################## +-if test -f /etc/centos-release ; then +- LINUX_FLAVOUR=$(awk '{ print $1 }' /etc/centos-release) +- DISTRO_VERSION=`cut -d ' ' -f 4 /etc/centos-release | cut -d '.' -f 1` +- if [[ "$LINUX_FLAVOUR" == "CentOS" ]] && [[ $DISTRO_VERSION -ge 8 ]]; then +- TIRPC="" +- AC_CHECK_LIB(tirpc,bindresvport,, TIRPC="no") +- echo "$TIRPC" +- if test "x$TIRPC" = "xno"; then +- echo +- echo " ERROR! tirpc not found, get it by running " +- echo " yum install libtirpc-devel or dnf install libtirpc-devel" +- exit +- fi +- LIBS="${LIBS} -ltirpc" +- extra_incl="-I/usr/include/tirpc" +- fi +-fi +- + Z_LIB="" + AC_CHECK_HEADERS(zlib.h,, Z_LIB="no") + if test "x$Z_LIB" = "xno"; then +-- +2.17.1 + diff --git a/package/snort/0008-Fix-NO-OPTIMIZE.patch b/package/snort/0008-Fix-NO-OPTIMIZE.patch new file mode 100644 index 00000000..936973fd --- /dev/null +++ b/package/snort/0008-Fix-NO-OPTIMIZE.patch @@ -0,0 +1,24 @@ +Fix NO_OPTIMIZE + +Fix the following build failure when NO_OPTIMIZE is enabled (e.g. on +sparc) and -Ofast: + +cc1: error: argument to '-O' should be a non-negative integer, 'g', 's' or 'fast' + +Fixes: + - http://autobuild.buildroot.org/results/e1a330e1a899fcdf4900e9156d62c90813321e30 + +Signed-off-by: Fabrice Fontaine + +diff -Nura snort-2.9.19.orig/configure.in snort-2.9.19/configure.in +--- snort-2.9.19.orig/configure.in 2022-08-09 20:21:00.236777320 +0200 ++++ snort-2.9.19/configure.in 2022-08-09 20:29:02.260993315 +0200 +@@ -1694,7 +1694,7 @@ + + # Set to no optimization regardless of what user or autostuff set + if test "x$NO_OPTIMIZE" = "xyes"; then +- CFLAGS=`echo $CFLAGS | sed -e "s/-O./-O0/"` ++ CFLAGS=`echo $CFLAGS | sed -e "s/-O[0-9a-z]*/-O0/"` + + # in case user override doesn't include -O + if echo $CFLAGS | grep -qve -O0 ; then diff --git a/package/snort/Config.in b/package/snort/Config.in new file mode 100644 index 00000000..fc74efcf --- /dev/null +++ b/package/snort/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_SNORT + bool "snort" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # daq + depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC || BR2_TOOLCHAIN_HAS_THREADS # libtirpc + select BR2_PACKAGE_LIBDNET + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_DAQ + select BR2_PACKAGE_PCRE + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_PACKAGE_ZLIB + help + Snort is a free and open source network intrusion + prevention system (IPS) and network intrusion detection + system (IDS). It can perform protocol analysis, content + searching/matching, and can be used to detect a variety + of attacks and probes, such as buffer overflows, stealth + port scans, CGI attacks, SMB probes, OS fingerprinting + attempts, and much more. + + https://www.snort.org + +comment "snort needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS || \ + !(BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_HAS_NATIVE_RPC) diff --git a/package/snort/snort.hash b/package/snort/snort.hash new file mode 100644 index 00000000..a807d051 --- /dev/null +++ b/package/snort/snort.hash @@ -0,0 +1,9 @@ +# From https://www.snort.org/downloads/snort/md5s +md5 b52cdf14e97ef953c800c3ef123beaa5 snort-2.9.20.tar.gz + +# Locally computed: +sha256 29400e13f53b1831e0b8b10ec1224a1cbaa6dc1533a5322a20dd80bb84b4981c snort-2.9.20.tar.gz + +# Hash for license files: +sha256 f98260a6d3e5ef4ede8a2a6b698e5ac91d64c09243f7171e1c5b17b920a835c7 LICENSE +sha256 3f1cbfb20bb2c608e1a474421880d08b8cba6abb00ab7736d22c481d71656a6d COPYING diff --git a/package/snort/snort.mk b/package/snort/snort.mk new file mode 100644 index 00000000..8ce8ed5f --- /dev/null +++ b/package/snort/snort.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# snort +# +################################################################################ + +SNORT_VERSION = 2.9.20 +SNORT_SITE = https://www.snort.org/downloads/snort +SNORT_LICENSE = GPL-2.0 +SNORT_LICENSE_FILES = LICENSE COPYING +SNORT_CPE_ID_VENDOR = snort +SNORT_SELINUX_MODULES = snort + +SNORT_DEPENDENCIES = libpcap libdnet daq pcre zlib host-pkgconf + +# patching configure.in +SNORT_AUTORECONF = YES + +SNORT_CONF_OPTS = \ + --with-libpcre-includes=$(STAGING_DIR)/usr/include \ + --with-libpcre-libraries=$(STAGING_DIR)/usr/lib \ + --with-libpcap-includes=$(STAGING_DIR)/usr/include/pcap \ + --disable-static-daq + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +SNORT_CFLAGS += -O0 +endif + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +SNORT_DEPENDENCIES += libtirpc +SNORT_CFLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc` +SNORT_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs libtirpc` +endif + +# luajit and openssl should be enabled to build with +# OpenAppID support +ifeq ($(BR2_PACKAGE_LUAJIT)$(BR2_PACKAGE_OPENSSL),yy) +SNORT_DEPENDENCIES += luajit openssl +SNORT_CONF_OPTS += --enable-open-appid +else +SNORT_CONF_OPTS += --disable-open-appid +endif + +SNORT_CONF_ENV = \ + CFLAGS="$(TARGET_CFLAGS) $(SNORT_CFLAGS)" \ + LIBS="$(SNORT_LIBS)" \ + have_inaddr_none=yes + +$(eval $(autotools-package)) diff --git a/package/snort3/0001-Pull-request-3925-build-fix-cstdint-related-clearlinux-errors.patch b/package/snort3/0001-Pull-request-3925-build-fix-cstdint-related-clearlinux-errors.patch new file mode 100644 index 00000000..4f24ee72 --- /dev/null +++ b/package/snort3/0001-Pull-request-3925-build-fix-cstdint-related-clearlinux-errors.patch @@ -0,0 +1,60 @@ +From 154cf0312b3652bdfdf241e6883d7c6de9b85e01 Mon Sep 17 00:00:00 2001 +From: "Maya Dagon (mdagon)" +Date: Mon, 24 Jul 2023 08:06:50 +0000 +Subject: [PATCH] Pull request #3925: build: fix cstdint related clearlinux + errors + +Merge in SNORT/snort3 from ~MDAGON/snort3:clearlinux to master + +Squashed commit of the following: + +commit 7ef2bc13851ffa2bf7908964242859a8c05ddd96 +Author: maya dagon +Date: Thu Jul 20 14:34:01 2023 -0400 + + build: fix cstdint related clearlinux errors + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/snort3/snort3/commit/154cf0312b3652bdfdf241e6883d7c6de9b85e01 +--- + src/js_norm/js_identifier_ctx.h | 1 + + src/packet_io/sfdaq_config.h | 1 + + src/service_inspectors/wizard/magic.h | 1 + + 3 files changed, 3 insertions(+) + +diff --git a/src/utils/js_identifier_ctx.h b/src/utils/js_identifier_ctx.h +index b8d5121a2c..6ef1ce2b23 100644 +--- a/src/utils/js_identifier_ctx.h ++++ b/src/utils/js_identifier_ctx.h +@@ -20,6 +20,7 @@ + #ifndef JS_IDENTIFIER_CTX + #define JS_IDENTIFIER_CTX + ++#include + #include + #include + #include +diff --git a/src/packet_io/sfdaq_config.h b/src/packet_io/sfdaq_config.h +index 990c45785b..f4c1042bc3 100644 +--- a/src/packet_io/sfdaq_config.h ++++ b/src/packet_io/sfdaq_config.h +@@ -21,6 +21,7 @@ + #ifndef SFDAQ_CONFIG_H + #define SFDAQ_CONFIG_H + ++#include + #include + #include + +diff --git a/src/service_inspectors/wizard/magic.h b/src/service_inspectors/wizard/magic.h +index fa24d0b5a4..b9477eb95c 100644 +--- a/src/service_inspectors/wizard/magic.h ++++ b/src/service_inspectors/wizard/magic.h +@@ -21,6 +21,7 @@ + #define MAGIC_H + + #include ++#include + #include + #include + diff --git a/package/snort3/Config.in b/package/snort3/Config.in new file mode 100644 index 00000000..9b96e7cb --- /dev/null +++ b/package/snort3/Config.in @@ -0,0 +1,44 @@ +config BR2_PACKAGE_SNORT3 + bool "snort3" + depends on !BR2_PACKAGE_LUA # luajit + depends on BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS # luajit + depends on !(BR2_PACKAGE_DAQ || BR2_PACKAGE_SNORT) + depends on BR2_USE_MMU # fork() + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS # daq3 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS # daq3, hwloc + depends on BR2_USE_WCHAR + select BR2_PACKAGE_DAQ3 + select BR2_PACKAGE_FLEX + select BR2_PACKAGE_HWLOC + select BR2_PACKAGE_LIBDNET + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_LUAJIT + select BR2_PACKAGE_PCRE + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + Snort 3 is the next generation Snort IPS (Intrusion + Prevention System). + + - Support multiple packet processing threads + - Shared configuration and attribute table + - Use a simple, scriptable configuration + - Make key components pluggable + - Autodetect services for portless configuration + - Support sticky buffers in rules + - Autogenerate reference documentation + - Provide better cross platform support + + https://www.snort.org/snort3 + +comment "snort3 needs a toolchain w/ C++, wchar, threads, dynamic library, gcc >= 4.9" + depends on !BR2_PACKAGE_LUA + depends on BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS + depends on !(BR2_PACKAGE_DAQ || BR2_PACKAGE_SNORT) + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/snort3/snort3.hash b/package/snort3/snort3.hash new file mode 100644 index 00000000..7746547d --- /dev/null +++ b/package/snort3/snort3.hash @@ -0,0 +1,6 @@ +# Locally computed: +sha256 d787d954f21d4cd6a048e10b8c53c78cb6287ec448108fc573b951639c8947b3 snort3-3.1.40.0.tar.gz + +# Hash for license files: +sha256 3f1cbfb20bb2c608e1a474421880d08b8cba6abb00ab7736d22c481d71656a6d COPYING +sha256 f98260a6d3e5ef4ede8a2a6b698e5ac91d64c09243f7171e1c5b17b920a835c7 LICENSE diff --git a/package/snort3/snort3.mk b/package/snort3/snort3.mk new file mode 100644 index 00000000..a76b8318 --- /dev/null +++ b/package/snort3/snort3.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# snort3 +# +################################################################################ + +SNORT3_VERSION = 3.1.40.0 +SNORT3_SITE = $(call github,snort3,snort3,$(SNORT3_VERSION)) +SNORT3_LICENSE = GPL-2.0 +SNORT3_LICENSE_FILES = COPYING LICENSE + +SNORT3_DEPENDENCIES = \ + host-pkgconf daq3 flex hwloc libdnet libpcap luajit openssl pcre zlib + +SNORT3_CONF_OPTS = \ + -DENABLE_GDB=OFF \ + -DENABLE_STATIC_DAQ=OFF \ + -DMAKE_DOC=OFF + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +SNORT3_DEPENDENCIES += libiconv +SNORT3_CONF_OPTS += -DHAVE_ICONV=ON +endif + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +SNORT3_DEPENDENCIES += libtirpc +endif + +ifeq ($(BR2_PACKAGE_SAFECLIB),y) +SNORT3_DEPENDENCIES += safeclib +SNORT3_CONF_OPTS += -DENABLE_SAFEC=ON +else +SNORT3_CONF_OPTS += -DENABLE_SAFEC=OFF +endif + +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y) +SNORT3_DEPENDENCIES += util-linux +SNORT3_CONF_OPTS += -DHAVE_UUID=ON +else +SNORT3_CONF_OPTS += -DHAVE_UUID=OFF +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +SNORT3_DEPENDENCIES += xz +SNORT3_CONF_OPTS += -DHAVE_LZMA=ON +else +SNORT3_CONF_OPTS += -DHAVE_LZMA=OFF +endif + +# Uses __atomic_load_8 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +SNORT3_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic +endif + +$(eval $(cmake-package)) diff --git a/package/socat/0001-no-documentation.patch b/package/socat/0001-no-documentation.patch new file mode 100644 index 00000000..b4c3e1ff --- /dev/null +++ b/package/socat/0001-no-documentation.patch @@ -0,0 +1,53 @@ +From 01463f5dbe19501948dec26160e0cc3b4e9167b4 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 27 Nov 2023 18:09:57 +0200 +Subject: [PATCH] socat: disable documentation build/installation + +The documentation generation process requires a special yold2man +program, for which we don't have a package in Buildroot. Since we +generally don't care much about documentation of packages, just adjust +the package Makefile.in to not build/install its documentation. + +Upstream: N/A +Signed-off-by: Thomas Petazzoni +[baruch: update for 1.8.0.0; git patch format] +Signed-off-by: Baruch Siach +--- + Makefile.in | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index c01b1a4a2306..fd89acb06f3c 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -82,7 +82,7 @@ SHFILES = socat-chain.sh socat-mux.sh socat-broker.sh \ + TESTFILES = test.sh socks4echo.sh proxyecho.sh readline-test.sh \ + proxy.sh socks4a-echo.sh + +-all: progs doc ++all: progs + + scmclean: gitclean + +@@ -128,7 +128,7 @@ libxio.a: $(XIOOBJS) $(UTLOBJS) + strip: progs + strip $(PROGS) + +-install: progs $(srcdir)/doc/socat.1 ++install: progs + mkdir -p $(DESTDIR)$(BINDEST) + $(INSTALL) -m 755 socat $(DESTDIR)$(BINDEST)/socat1 + ln -sf socat1 $(DESTDIR)$(BINDEST)/socat +@@ -137,9 +137,6 @@ install: progs $(srcdir)/doc/socat.1 + $(INSTALL) -m 755 socat-broker.sh $(DESTDIR)$(BINDEST) + $(INSTALL) -m 755 procan $(DESTDIR)$(BINDEST) + $(INSTALL) -m 755 filan $(DESTDIR)$(BINDEST) +- mkdir -p $(DESTDIR)$(MANDEST)/man1 +- $(INSTALL) -m 644 $(srcdir)/doc/socat.1 $(DESTDIR)$(MANDEST)/man1/socat1.1 +- ln -sf socat1.1 $(DESTDIR)$(MANDEST)/man1/socat.1 + + uninstall: + rm -f $(DESTDIR)$(BINDEST)/socat +-- +2.42.0 + diff --git a/package/socat/Config.in b/package/socat/Config.in new file mode 100644 index 00000000..af456ab7 --- /dev/null +++ b/package/socat/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_SOCAT + bool "socat" + depends on BR2_USE_MMU # fork() + help + Multipurpose socket relay program. + + http://www.dest-unreach.org/socat/ diff --git a/package/socat/socat.hash b/package/socat/socat.hash new file mode 100644 index 00000000..2a14d753 --- /dev/null +++ b/package/socat/socat.hash @@ -0,0 +1,8 @@ +# From http://www.dest-unreach.org/socat/download.md5sum +md5 51f9ecdf5d942d0a3c150ea400eb89ef socat-1.8.0.0.tar.bz2 +# From http://www.dest-unreach.org/socat/download.sha256sum +sha256 e1de683dd22ee0e3a6c6bbff269abe18ab0c9d7eb650204f125155b9005faca7 socat-1.8.0.0.tar.bz2 +# Locally calculated +sha256 de9d702354b2e748ea87eb20d18c3d90ebede5dc6d2fc3c2e0645d139a5181bc README +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 fd9e48ca316a5032069b9521f4f4b4d9b1c60365012bae1e62286bcd5bd2e761 COPYING.OpenSSL diff --git a/package/socat/socat.mk b/package/socat/socat.mk new file mode 100644 index 00000000..1e2880c0 --- /dev/null +++ b/package/socat/socat.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# socat +# +################################################################################ + +SOCAT_VERSION = 1.8.0.0 +SOCAT_SOURCE = socat-$(SOCAT_VERSION).tar.bz2 +SOCAT_SITE = http://www.dest-unreach.org/socat/download +SOCAT_LICENSE = GPL-2.0 with OpenSSL exception +SOCAT_LICENSE_FILES = README COPYING COPYING.OpenSSL +SOCAT_CPE_ID_VENDOR = dest-unreach + +SOCAT_CONF_ENV = ac_cv_have_c99_snprintf=yes + +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC)$(BR2_TOOLCHAIN_USES_UCLIBC),y) +SOCAT_CONF_ENV += ac_cv_have_z_modifier=yes +else +SOCAT_CONF_ENV += ac_cv_have_z_modifier=no +endif + +ifeq ($(BR2_powerpc)$(BR2_powerpc64)$(BR2_powerpc64le),y) +SOCAT_CONF_ENV += \ + sc_cv_sys_crdly_shift=12 \ + sc_cv_sys_tabdly_shift=10 \ + sc_cv_sys_csize_shift=8 +else +SOCAT_CONF_ENV += \ + sc_cv_sys_crdly_shift=9 \ + sc_cv_sys_tabdly_shift=11 \ + sc_cv_sys_csize_shift=4 +endif + +# We need to run autoconf to regenerate the configure script, since we patch +# Makefile.in. However, the package only uses autoconf and not +# automake, so we can't use the normal autoreconf logic. + +SOCAT_DEPENDENCIES = host-autoconf +# incompatibile license (GPL-3.0+) +SOCAT_CONF_OPTS = --disable-readline + +ifeq ($(BR2_PACKAGE_LIBOPENSSL):$(BR2_STATIC_LIBS),y:) +SOCAT_DEPENDENCIES += openssl +else +SOCAT_CONF_OPTS += --disable-openssl +endif + +define SOCAT_RUN_AUTOCONF + (cd $(@D); $(AUTOCONF)) +endef + +SOCAT_PRE_CONFIGURE_HOOKS += SOCAT_RUN_AUTOCONF + +$(eval $(autotools-package)) diff --git a/package/socketcand/0001-Fix-GCC10-build-failure.patch b/package/socketcand/0001-Fix-GCC10-build-failure.patch new file mode 100644 index 00000000..057cd406 --- /dev/null +++ b/package/socketcand/0001-Fix-GCC10-build-failure.patch @@ -0,0 +1,113 @@ +From ae0af080058a576d62c72ffc011d644d0b4dcb98 Mon Sep 17 00:00:00 2001 +From: Yegor Yefremov +Date: Tue, 7 Jul 2020 19:39:41 +0200 +Subject: [PATCH] Fix GCC10 build failure (#17) + +GCC10 breaks on multiple definitions: + +ld: /tmp/ccFiGYO7.o:(.bss+0x114): multiple definition of `tv'; /tmp/cc7f6J5h.o:(.bss+0x80): first defined here + +Change the scope of the related variables. + +Signed-off-by: Yegor Yefremov + +[Retrieved from: +https://github.com/linux-can/socketcand/commit/ae0af080058a576d62c72ffc011d644d0b4dcb98] +Signed-off-by: Fabrice Fontaine +--- + socketcand.c | 3 ++- + state_bcm.c | 4 ++-- + state_isotp.c | 2 +- + state_raw.c | 2 +- + 4 files changed, 6 insertions(+), 5 deletions(-) + +diff --git a/socketcand.c b/socketcand.c +index 8d84754..6125be9 100644 +--- a/socketcand.c ++++ b/socketcand.c +@@ -102,7 +102,6 @@ socklen_t unaddrlen; + struct sockaddr_un remote_unaddr; + socklen_t remote_unaddrlen; + char* interface_string; +-struct ifreq ifr, ifr_brd; + + int state_changed(char *buf, int current_state) + { +@@ -666,6 +665,8 @@ int receive_command(int socket, char *buffer) { + } + + void determine_adress() { ++ struct ifreq ifr, ifr_brd; ++ + int probe_socket = socket(AF_INET, SOCK_DGRAM, 0); + + if(probe_socket < 0) { +diff --git a/state_bcm.c b/state_bcm.c +index cfaa8ed..05a5f7c 100644 +--- a/state_bcm.c ++++ b/state_bcm.c +@@ -28,8 +28,6 @@ + #define RXLEN 128 + + int sc = -1; +-fd_set readfds; +-struct timeval tv; + + void state_bcm() { + int i, j, ret; +@@ -38,6 +36,7 @@ void state_bcm() { + struct ifreq ifr; + char rxmsg[RXLEN]; + char buf[MAXLEN]; ++ fd_set readfds; + + struct { + struct bcm_msg_head msg_head; +@@ -91,6 +90,7 @@ void state_bcm() { + } + + if (FD_ISSET(sc, &readfds)) { ++ struct timeval tv; + + ret = recvfrom(sc, &msg, sizeof(msg), 0, + (struct sockaddr*)&caddr, &caddrlen); +diff --git a/state_isotp.c b/state_isotp.c +index 5c671f9..e1b944b 100644 +--- a/state_isotp.c ++++ b/state_isotp.c +@@ -25,7 +25,6 @@ + #include + + int si = -1; +-fd_set readfds; + + void state_isotp() { + int i, items, ret; +@@ -39,6 +38,7 @@ void state_isotp() { + char buf[MAXLEN]; /* inet commands to can */ + unsigned char isobuf[ISOTPLEN+1]; /* binary buffer for isotp socket */ + unsigned char tmp; ++ fd_set readfds; + + while(previous_state != STATE_ISOTP) { + +diff --git a/state_raw.c b/state_raw.c +index e83e6ec..2c49975 100644 +--- a/state_raw.c ++++ b/state_raw.c +@@ -25,7 +25,6 @@ + int raw_socket; + struct ifreq ifr; + struct sockaddr_can addr; +-fd_set readfds; + struct msghdr msg; + struct can_frame frame; + struct iovec iov; +@@ -36,6 +35,7 @@ struct cmsghdr *cmsg; + void state_raw() { + char buf[MAXLEN]; + int i, ret, items; ++ fd_set readfds; + + if(previous_state != STATE_RAW) { + diff --git a/package/socketcand/Config.in b/package/socketcand/Config.in new file mode 100644 index 00000000..7d663251 --- /dev/null +++ b/package/socketcand/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_SOCKETCAND + bool "socketcand" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + help + Socketcand is a daemon that provides access to CAN interfaces + on a machine via a network interface. + + https://github.com/dschanoeh/socketcand + +comment "socketcand needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/socketcand/socketcand.hash b/package/socketcand/socketcand.hash new file mode 100644 index 00000000..71393989 --- /dev/null +++ b/package/socketcand/socketcand.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 3c5cc7af4ff707ac344e62d2e37a74b59aeccd14b88e837cc142c52b69d64a39 socketcand-69e2201222f015a1abe7a58ecf61325012cd91b1.tar.gz +sha256 18bda0db4e3c56cefdb1b9b01b7eada7764c0746f6321378c30d78f5ee81cfee socketcand.c diff --git a/package/socketcand/socketcand.mk b/package/socketcand/socketcand.mk new file mode 100644 index 00000000..1755d3ae --- /dev/null +++ b/package/socketcand/socketcand.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# socketcand +# +################################################################################ + +SOCKETCAND_VERSION = 69e2201222f015a1abe7a58ecf61325012cd91b1 +SOCKETCAND_SITE = $(call github,linux-can,socketcand,$(SOCKETCAND_VERSION)) +SOCKETCAND_AUTORECONF = YES +SOCKETCAND_LICENSE = BSD-3-Clause or GPL-2.0 +SOCKETCAND_LICENSE_FILES = socketcand.c + +ifeq ($(BR2_PACKAGE_LIBCONFIG),y) +SOCKETCAND_DEPENDENCIES += libconfig +else +SOCKETCAND_CONF_OPTS += --without-config +endif + +$(eval $(autotools-package)) diff --git a/package/sofia-sip/0001-Fix-incompatible-pointer-type-in-sip_basic-c.patch b/package/sofia-sip/0001-Fix-incompatible-pointer-type-in-sip_basic-c.patch new file mode 100644 index 00000000..7f890fd2 --- /dev/null +++ b/package/sofia-sip/0001-Fix-incompatible-pointer-type-in-sip_basic-c.patch @@ -0,0 +1,27 @@ +From 46b02f0655af0a9594e805f09a8ee99278f84777 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Tomi=20L=C3=A4hteenm=C3=A4ki?= +Date: Mon, 19 Feb 2024 09:06:20 +0200 +Subject: [PATCH] Fix incompatible pointer type in sip_basic.c + +Closes #248 + +Upstream: https://github.com/freeswitch/sofia-sip/pull/249 + +Signed-off-by: Bernd Kuhls +--- + libsofia-sip-ua/sip/sip_basic.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libsofia-sip-ua/sip/sip_basic.c b/libsofia-sip-ua/sip/sip_basic.c +index 3444fb25..82e824e3 100644 +--- a/libsofia-sip-ua/sip/sip_basic.c ++++ b/libsofia-sip-ua/sip/sip_basic.c +@@ -2901,7 +2901,7 @@ issize_t sip_identity_d(su_home_t *home, sip_header_t *h, char *s, isize_t slen) + ext = strchr(ppt, ';'); + + if (ext) { +- msg_param_t *params = su_alloc(home, sizeof(msg_param_t)); ++ msg_param_t const *params = su_alloc(home, sizeof(msg_param_t)); + if (msg_params_d(home, &ext, ¶ms) >= 0) { + id->id_info_params = params; + } diff --git a/package/sofia-sip/0002-fix-static-build-with-openssl-3.2.0.patch b/package/sofia-sip/0002-fix-static-build-with-openssl-3.2.0.patch new file mode 100644 index 00000000..03b17bcb --- /dev/null +++ b/package/sofia-sip/0002-fix-static-build-with-openssl-3.2.0.patch @@ -0,0 +1,109 @@ +From 145f80df25d23492ed3aa01b3750d7c002964332 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 5 Jan 2024 23:15:00 +0100 +Subject: [PATCH] fix static build with openssl >= 3.2.0 + +Rename tls_free into sofia_sip_tls_free as openssl also defines tls_free +since version 3.2.0 and +https://github.com/openssl/openssl/commit/1853d20a008a85d327f4faa9e07be40a85549f8e +resulting in the following static build failure: + +/home/autobuild/autobuild/instance-12/output-1/host/lib/gcc/powerpc-buildroot-linux-uclibcspe/8.4.0/../../../../powerpc-buildroot-linux-uclibcspe/bin/ld: /home/autobuild/autobuild/instance-12/output-1/host/bin/../powerpc-buildroot-linux-uclibcspe/sysroot/usr/lib/libssl.a(libssl-lib-tls_common.o): in function `tls_free': +tls_common.c:(.text+0x808): multiple definition of `tls_free'; ../libsofia-sip-ua/.libs/libsofia-sip-ua.a(tport_tls.o):tport_tls.c:(.text+0x1128): first defined here + +Fixes: + - http://autobuild.buildroot.org/results/ee862bdafd44c8c56f77e2702ee0a7462634fa0b + +Upstream: https://github.com/freeswitch/sofia-sip/pull/240 + +Signed-off-by: Fabrice Fontaine +--- + libsofia-sip-ua/tport/tport_tls.c | 10 +++++----- + libsofia-sip-ua/tport/tport_tls.h | 2 +- + libsofia-sip-ua/tport/tport_type_tls.c | 4 ++-- + 3 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/libsofia-sip-ua/tport/tport_tls.c b/libsofia-sip-ua/tport/tport_tls.c +index a17186de..0739c93f 100644 +--- a/libsofia-sip-ua/tport/tport_tls.c ++++ b/libsofia-sip-ua/tport/tport_tls.c +@@ -460,7 +460,7 @@ int tls_init_context(tls_t *tls, tls_issues_t const *ti) + return 0; + } + +-void tls_free(tls_t *tls) ++void sofia_sip_tls_free(tls_t *tls) + { + int ret; + if (!tls) +@@ -473,7 +473,7 @@ void tls_free(tls_t *tls) + /* The return value -1 means that the connection wasn't actually established */ + /* so it should be safe to not call shutdown again. We need to clear the eror */ + /* queue for other connections though. */ +- tls_log_errors(3, "tls_free", 0); ++ tls_log_errors(3, "sofia_sip_tls_free", 0); + ret = 1; + } + } while (ret != 1); +@@ -514,7 +514,7 @@ tls_t *tls_init_master(tls_issues_t *ti) + + if (tls_init_context(tls, ti) < 0) { + int err = errno; +- tls_free(tls); ++ sofia_sip_tls_free(tls); + errno = err; + return NULL; + } +@@ -544,7 +544,7 @@ tls_t *tls_init_master(tls_issues_t *ti) + + if (tls->bio_con == NULL) { + tls_log_errors(1, "tls_init_master", 0); +- tls_free(tls); ++ sofia_sip_tls_free(tls); + errno = EIO; + return NULL; + } +@@ -581,7 +581,7 @@ tls_t *tls_init_secondary(tls_t *master, int sock, int accept) + + if (tls->con == NULL) { + tls_log_errors(1, "tls_init_secondary", 0); +- tls_free(tls); ++ sofia_sip_tls_free(tls); + errno = EIO; + return NULL; + } +diff --git a/libsofia-sip-ua/tport/tport_tls.h b/libsofia-sip-ua/tport/tport_tls.h +index e8d04a14..3a5fde22 100644 +--- a/libsofia-sip-ua/tport/tport_tls.h ++++ b/libsofia-sip-ua/tport/tport_tls.h +@@ -81,7 +81,7 @@ typedef struct tport_tls_primary_s { + + tls_t *tls_init_master(tls_issues_t *tls_issues); + tls_t *tls_init_secondary(tls_t *tls_master, int sock, int accept); +-void tls_free(tls_t *tls); ++void sofia_sip_tls_free(tls_t *tls); + int tls_get_socket(tls_t *tls); + void tls_log_errors(unsigned level, char const *s, unsigned long e); + ssize_t tls_read(tls_t *tls); +diff --git a/libsofia-sip-ua/tport/tport_type_tls.c b/libsofia-sip-ua/tport/tport_type_tls.c +index e030e706..fa72eed8 100644 +--- a/libsofia-sip-ua/tport/tport_type_tls.c ++++ b/libsofia-sip-ua/tport/tport_type_tls.c +@@ -276,7 +276,7 @@ static int tport_tls_init_master(tport_primary_t *pri, + static void tport_tls_deinit_primary(tport_primary_t *pri) + { + tport_tls_primary_t *tlspri = (tport_tls_primary_t *)pri; +- tls_free(tlspri->tlspri_master), tlspri->tlspri_master = NULL; ++ sofia_sip_tls_free(tlspri->tlspri_master), tlspri->tlspri_master = NULL; + } + + static int tport_tls_init_secondary(tport_t *self, int socket, int accepted, +@@ -303,7 +303,7 @@ static void tport_tls_deinit_secondary(tport_t *self) + + /* XXX - PPe: does the tls_shutdown zap everything but socket? */ + if (tlstp->tlstp_context != NULL) +- tls_free(tlstp->tlstp_context); ++ sofia_sip_tls_free(tlstp->tlstp_context); + tlstp->tlstp_context = NULL; + + su_free(self->tp_home, tlstp->tlstp_buffer); diff --git a/package/sofia-sip/Config.in b/package/sofia-sip/Config.in new file mode 100644 index 00000000..2ad19408 --- /dev/null +++ b/package/sofia-sip/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_SOFIA_SIP + bool "sofia-sip" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Sofia-SIP is an open-source SIP User-Agent library, + compliant with the IETF RFC3261 specification (see the + feature table). It can be used as a building block for SIP + client software for uses such as VoIP, IM, and many other + real-time and person-to-person communication services. + + https://github.com/freeswitch/sofia-sip + +comment "sofia-sip needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/sofia-sip/sofia-sip.hash b/package/sofia-sip/sofia-sip.hash new file mode 100644 index 00000000..f4ce8d83 --- /dev/null +++ b/package/sofia-sip/sofia-sip.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 daca3d961b6aa2974ad5d3be69ed011726c3e4d511b2a0d4cb6d878821a2de7a sofia-sip-1.13.17.tar.gz +sha256 e1c0890440efe31b6cd2ee2abf895eb917c787799f079133f5809414d90d5d60 COPYING +sha256 b402ae58cf355b33be8fa023f704a039e3d41ecaccd2bbcda43ca31d703e4556 COPYRIGHTS diff --git a/package/sofia-sip/sofia-sip.mk b/package/sofia-sip/sofia-sip.mk new file mode 100644 index 00000000..a6471648 --- /dev/null +++ b/package/sofia-sip/sofia-sip.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# sofia-sip +# +################################################################################ + +SOFIA_SIP_VERSION = 1.13.17 +SOFIA_SIP_SITE = $(call github,freeswitch,sofia-sip,v$(SOFIA_SIP_VERSION)) +SOFIA_SIP_INSTALL_STAGING = YES +# Fetched from github, no pre-generated configure script provided +SOFIA_SIP_AUTORECONF = YES +SOFIA_SIP_DEPENDENCIES = host-pkgconf +SOFIA_SIP_LICENSE = LGPL-2.1+ +SOFIA_SIP_LICENSE_FILES = COPYING COPYRIGHTS +SOFIA_SIP_CPE_ID_VENDOR = signalwire +SOFIA_SIP_CONF_OPTS = --with-doxygen=no + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +SOFIA_SIP_CONF_OPTS += --with-glib +SOFIA_SIP_DEPENDENCIES += libglib2 +else +SOFIA_SIP_CONF_OPTS += --without-glib +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +SOFIA_SIP_CONF_OPTS += \ + --enable-nth \ + --with-openssl=pkg-config +SOFIA_SIP_DEPENDENCIES += openssl +else +SOFIA_SIP_CONF_OPTS += \ + --disable-nth \ + --without-openssl +endif + +$(eval $(autotools-package)) diff --git a/package/softether/0001-Create-autotools-plumbing-for-SoftEther.patch b/package/softether/0001-Create-autotools-plumbing-for-SoftEther.patch new file mode 100644 index 00000000..92c2885a --- /dev/null +++ b/package/softether/0001-Create-autotools-plumbing-for-SoftEther.patch @@ -0,0 +1,2107 @@ +From c5e5d7e93c6f3302adf5821c29c4efdb7630e418 Mon Sep 17 00:00:00 2001 +From: Darik Horn +Date: Sat, 12 Apr 2014 17:46:04 -0400 +Subject: [PATCH] Create autotools plumbing for SoftEther. + +Add autoconf and automake capabilities to SoftEther so that it can be built +like this: + + # autoreconf --force --install + # ./configure + # make install DESTDIR=/tmp/softether + +All standard configure parameters are supported, plus: + + # ./configure --enable-debug + +Autotools support makes porting, cross compiling, and optimization much easier. + +These GNU autoconf-archive components are used for dependency checking: + + * ax_check_openssl.m4 + * ax_check_zlib.m4 + * ax_lib_readline.m4 + * ax_pthread.m4 + * ax_with_curses.m4 + +NB: http://www.gnu.org/software/autoconf-archive/ + +[Upstream commit: https://github.com/dajhorn/SoftEtherVPN/commit/c5e5d7e93c6f3302adf5821c29c4efdb7630e418] +Signed-off-by: Thomas Petazzoni +[Fabrice: update for 4.30-9700-beta] +Signed-off-by: Fabrice Fontaine +--- + Makefile.am | 21 ++ + autotools/ax_check_openssl.m4 | 124 ++++++++++ + autotools/ax_check_zlib.m4 | 142 +++++++++++ + autotools/ax_lib_readline.m4 | 107 +++++++++ + autotools/ax_pthread.m4 | 332 ++++++++++++++++++++++++++ + autotools/ax_with_curses.m4 | 518 +++++++++++++++++++++++++++++++++++++++++ + autotools/softether.am | 39 ++++ + configure.ac | 96 ++++++++ + configure => manual_configure | 0 + src/Cedar/Makefile.am | 82 +++++++ + src/Makefile.am | 26 +++ + src/Mayaqua/Makefile.am | 43 ++++ + src/bin/hamcore/Makefile.am | 29 +++ + src/hamcorebuilder/Makefile.am | 29 +++ + src/vpnbridge/Makefile.am | 29 +++ + src/vpnclient/Makefile.am | 29 +++ + src/vpncmd/Makefile.am | 29 +++ + src/vpnserver/Makefile.am | 29 +++ + 18 files changed, 1704 insertions(+) + create mode 100644 Makefile.am + create mode 100644 autotools/ax_check_openssl.m4 + create mode 100644 autotools/ax_check_zlib.m4 + create mode 100644 autotools/ax_lib_readline.m4 + create mode 100644 autotools/ax_pthread.m4 + create mode 100644 autotools/ax_with_curses.m4 + create mode 100644 autotools/softether.am + create mode 100644 configure.ac + rename configure => manual_configure (100%) + create mode 100644 src/Cedar/Makefile.am + create mode 100644 src/Makefile.am + create mode 100644 src/Mayaqua/Makefile.am + create mode 100644 src/bin/hamcore/Makefile.am + create mode 100644 src/hamcorebuilder/Makefile.am + create mode 100644 src/vpnbridge/Makefile.am + create mode 100644 src/vpnclient/Makefile.am + create mode 100644 src/vpncmd/Makefile.am + create mode 100644 src/vpnserver/Makefile.am + +diff --git a/Makefile.am b/Makefile.am +new file mode 100644 +index 00000000..aa73b2ba +--- /dev/null ++++ b/Makefile.am +@@ -0,0 +1,21 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++ACLOCAL_AMFLAGS = -I autotools ++include $(top_srcdir)/autotools/softether.am ++SUBDIRS = src +diff --git a/autotools/ax_check_openssl.m4 b/autotools/ax_check_openssl.m4 +new file mode 100644 +index 00000000..a87c5a6b +--- /dev/null ++++ b/autotools/ax_check_openssl.m4 +@@ -0,0 +1,124 @@ ++# =========================================================================== ++# http://www.gnu.org/software/autoconf-archive/ax_check_openssl.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_CHECK_OPENSSL([action-if-found[, action-if-not-found]]) ++# ++# DESCRIPTION ++# ++# Look for OpenSSL in a number of default spots, or in a user-selected ++# spot (via --with-openssl). Sets ++# ++# OPENSSL_INCLUDES to the include directives required ++# OPENSSL_LIBS to the -l directives required ++# OPENSSL_LDFLAGS to the -L or -R flags required ++# ++# and calls ACTION-IF-FOUND or ACTION-IF-NOT-FOUND appropriately ++# ++# This macro sets OPENSSL_INCLUDES such that source files should use the ++# openssl/ directory in include directives: ++# ++# #include ++# ++# LICENSE ++# ++# Copyright (c) 2009,2010 Zmanda Inc. ++# Copyright (c) 2009,2010 Dustin J. Mitchell ++# ++# Copying and distribution of this file, with or without modification, are ++# permitted in any medium without royalty provided the copyright notice ++# and this notice are preserved. This file is offered as-is, without any ++# warranty. ++ ++#serial 8 ++ ++AU_ALIAS([CHECK_SSL], [AX_CHECK_OPENSSL]) ++AC_DEFUN([AX_CHECK_OPENSSL], [ ++ found=false ++ AC_ARG_WITH([openssl], ++ [AS_HELP_STRING([--with-openssl=DIR], ++ [root of the OpenSSL directory])], ++ [ ++ case "$withval" in ++ "" | y | ye | yes | n | no) ++ AC_MSG_ERROR([Invalid --with-openssl value]) ++ ;; ++ *) ssldirs="$withval" ++ ;; ++ esac ++ ], [ ++ # if pkg-config is installed and openssl has installed a .pc file, ++ # then use that information and don't search ssldirs ++ AC_PATH_PROG([PKG_CONFIG], [pkg-config]) ++ if test x"$PKG_CONFIG" != x""; then ++ OPENSSL_LDFLAGS=`$PKG_CONFIG openssl --libs-only-L 2>/dev/null` ++ if test $? = 0; then ++ OPENSSL_LIBS=`$PKG_CONFIG openssl --libs-only-l 2>/dev/null` ++ OPENSSL_INCLUDES=`$PKG_CONFIG openssl --cflags-only-I 2>/dev/null` ++ found=true ++ fi ++ fi ++ ++ # no such luck; use some default ssldirs ++ if ! $found; then ++ ssldirs="/usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr" ++ fi ++ ] ++ ) ++ ++ ++ # note that we #include , so the OpenSSL headers have to be in ++ # an 'openssl' subdirectory ++ ++ if ! $found; then ++ OPENSSL_INCLUDES= ++ for ssldir in $ssldirs; do ++ AC_MSG_CHECKING([for openssl/ssl.h in $ssldir]) ++ if test -f "$ssldir/include/openssl/ssl.h"; then ++ OPENSSL_INCLUDES="-I$ssldir/include" ++ OPENSSL_LDFLAGS="-L$ssldir/lib" ++ OPENSSL_LIBS="-lssl -lcrypto" ++ found=true ++ AC_MSG_RESULT([yes]) ++ break ++ else ++ AC_MSG_RESULT([no]) ++ fi ++ done ++ ++ # if the file wasn't found, well, go ahead and try the link anyway -- maybe ++ # it will just work! ++ fi ++ ++ # try the preprocessor and linker with our new flags, ++ # being careful not to pollute the global LIBS, LDFLAGS, and CPPFLAGS ++ ++ AC_MSG_CHECKING([whether compiling and linking against OpenSSL works]) ++ echo "Trying link with OPENSSL_LDFLAGS=$OPENSSL_LDFLAGS;" \ ++ "OPENSSL_LIBS=$OPENSSL_LIBS; OPENSSL_INCLUDES=$OPENSSL_INCLUDES" >&AS_MESSAGE_LOG_FD ++ ++ save_LIBS="$LIBS" ++ save_LDFLAGS="$LDFLAGS" ++ save_CPPFLAGS="$CPPFLAGS" ++ LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS" ++ LIBS="$OPENSSL_LIBS $LIBS" ++ CPPFLAGS="$OPENSSL_INCLUDES $CPPFLAGS" ++ AC_LINK_IFELSE( ++ [AC_LANG_PROGRAM([#include ], [SSL_new(NULL)])], ++ [ ++ AC_MSG_RESULT([yes]) ++ $1 ++ ], [ ++ AC_MSG_RESULT([no]) ++ $2 ++ ]) ++ CPPFLAGS="$save_CPPFLAGS" ++ LDFLAGS="$save_LDFLAGS" ++ LIBS="$save_LIBS" ++ ++ AC_SUBST([OPENSSL_INCLUDES]) ++ AC_SUBST([OPENSSL_LIBS]) ++ AC_SUBST([OPENSSL_LDFLAGS]) ++]) +diff --git a/autotools/ax_check_zlib.m4 b/autotools/ax_check_zlib.m4 +new file mode 100644 +index 00000000..ae5705f6 +--- /dev/null ++++ b/autotools/ax_check_zlib.m4 +@@ -0,0 +1,142 @@ ++# =========================================================================== ++# http://www.gnu.org/software/autoconf-archive/ax_check_zlib.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_CHECK_ZLIB([action-if-found], [action-if-not-found]) ++# ++# DESCRIPTION ++# ++# This macro searches for an installed zlib library. If nothing was ++# specified when calling configure, it searches first in /usr/local and ++# then in /usr, /opt/local and /sw. If the --with-zlib=DIR is specified, ++# it will try to find it in DIR/include/zlib.h and DIR/lib/libz.a. If ++# --without-zlib is specified, the library is not searched at all. ++# ++# If either the header file (zlib.h) or the library (libz) is not found, ++# shell commands 'action-if-not-found' is run. If 'action-if-not-found' is ++# not specified, the configuration exits on error, asking for a valid zlib ++# installation directory or --without-zlib. ++# ++# If both header file and library are found, shell commands ++# 'action-if-found' is run. If 'action-if-found' is not specified, the ++# default action appends '-I${ZLIB_HOME}/include' to CPFLAGS, appends ++# '-L$ZLIB_HOME}/lib' to LDFLAGS, prepends '-lz' to LIBS, and calls ++# AC_DEFINE(HAVE_LIBZ). You should use autoheader to include a definition ++# for this symbol in a config.h file. Sample usage in a C/C++ source is as ++# follows: ++# ++# #ifdef HAVE_LIBZ ++# #include ++# #endif /* HAVE_LIBZ */ ++# ++# LICENSE ++# ++# Copyright (c) 2008 Loic Dachary ++# Copyright (c) 2010 Bastien Chevreux ++# ++# 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, see . ++# ++# As a special exception, the respective Autoconf Macro's copyright owner ++# gives unlimited permission to copy, distribute and modify the configure ++# scripts that are the output of Autoconf when processing the Macro. You ++# need not follow the terms of the GNU General Public License when using ++# or distributing such scripts, even though portions of the text of the ++# Macro appear in them. The GNU General Public License (GPL) does govern ++# all other use of the material that constitutes the Autoconf Macro. ++# ++# This special exception to the GPL applies to versions of the Autoconf ++# Macro released by the Autoconf Archive. When you make and distribute a ++# modified version of the Autoconf Macro, you may extend this special ++# exception to the GPL to apply to your modified version as well. ++ ++#serial 14 ++ ++AU_ALIAS([CHECK_ZLIB], [AX_CHECK_ZLIB]) ++AC_DEFUN([AX_CHECK_ZLIB], ++# ++# Handle user hints ++# ++[AC_MSG_CHECKING(if zlib is wanted) ++zlib_places="/usr/local /usr /opt/local /sw" ++AC_ARG_WITH([zlib], ++[ --with-zlib=DIR root directory path of zlib installation @<:@defaults to ++ /usr/local or /usr if not found in /usr/local@:>@ ++ --without-zlib to disable zlib usage completely], ++[if test "$withval" != no ; then ++ AC_MSG_RESULT(yes) ++ if test -d "$withval" ++ then ++ zlib_places="$withval $zlib_places" ++ else ++ AC_MSG_WARN([Sorry, $withval does not exist, checking usual places]) ++ fi ++else ++ zlib_places= ++ AC_MSG_RESULT(no) ++fi], ++[AC_MSG_RESULT(yes)]) ++ ++# ++# Locate zlib, if wanted ++# ++if test -n "${zlib_places}" ++then ++ # check the user supplied or any other more or less 'standard' place: ++ # Most UNIX systems : /usr/local and /usr ++ # MacPorts / Fink on OSX : /opt/local respectively /sw ++ for ZLIB_HOME in ${zlib_places} ; do ++ if test -f "${ZLIB_HOME}/include/zlib.h"; then break; fi ++ ZLIB_HOME="" ++ done ++ ++ ZLIB_OLD_LDFLAGS=$LDFLAGS ++ ZLIB_OLD_CPPFLAGS=$CPPFLAGS ++ if test -n "${ZLIB_HOME}"; then ++ LDFLAGS="$LDFLAGS -L${ZLIB_HOME}/lib" ++ CPPFLAGS="$CPPFLAGS -I${ZLIB_HOME}/include" ++ fi ++ AC_LANG_SAVE ++ AC_LANG_C ++ AC_CHECK_LIB([z], [inflateEnd], [zlib_cv_libz=yes], [zlib_cv_libz=no]) ++ AC_CHECK_HEADER([zlib.h], [zlib_cv_zlib_h=yes], [zlib_cv_zlib_h=no]) ++ AC_LANG_RESTORE ++ if test "$zlib_cv_libz" = "yes" && test "$zlib_cv_zlib_h" = "yes" ++ then ++ # ++ # If both library and header were found, action-if-found ++ # ++ m4_ifblank([$1],[ ++ CPPFLAGS="$CPPFLAGS -I${ZLIB_HOME}/include" ++ LDFLAGS="$LDFLAGS -L${ZLIB_HOME}/lib" ++ LIBS="-lz $LIBS" ++ AC_DEFINE([HAVE_LIBZ], [1], ++ [Define to 1 if you have `z' library (-lz)]) ++ ],[ ++ # Restore variables ++ LDFLAGS="$ZLIB_OLD_LDFLAGS" ++ CPPFLAGS="$ZLIB_OLD_CPPFLAGS" ++ $1 ++ ]) ++ else ++ # ++ # If either header or library was not found, action-if-not-found ++ # ++ m4_default([$2],[ ++ AC_MSG_ERROR([either specify a valid zlib installation with --with-zlib=DIR or disable zlib usage with --without-zlib]) ++ ]) ++ fi ++fi ++]) +diff --git a/autotools/ax_lib_readline.m4 b/autotools/ax_lib_readline.m4 +new file mode 100644 +index 00000000..056f25c2 +--- /dev/null ++++ b/autotools/ax_lib_readline.m4 +@@ -0,0 +1,107 @@ ++# =========================================================================== ++# http://www.gnu.org/software/autoconf-archive/ax_lib_readline.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_LIB_READLINE ++# ++# DESCRIPTION ++# ++# Searches for a readline compatible library. If found, defines ++# `HAVE_LIBREADLINE'. If the found library has the `add_history' function, ++# sets also `HAVE_READLINE_HISTORY'. Also checks for the locations of the ++# necessary include files and sets `HAVE_READLINE_H' or ++# `HAVE_READLINE_READLINE_H' and `HAVE_READLINE_HISTORY_H' or ++# 'HAVE_HISTORY_H' if the corresponding include files exists. ++# ++# The libraries that may be readline compatible are `libedit', ++# `libeditline' and `libreadline'. Sometimes we need to link a termcap ++# library for readline to work, this macro tests these cases too by trying ++# to link with `libtermcap', `libcurses' or `libncurses' before giving up. ++# ++# Here is an example of how to use the information provided by this macro ++# to perform the necessary includes or declarations in a C file: ++# ++# #ifdef HAVE_LIBREADLINE ++# # if defined(HAVE_READLINE_READLINE_H) ++# # include ++# # elif defined(HAVE_READLINE_H) ++# # include ++# # else /* !defined(HAVE_READLINE_H) */ ++# extern char *readline (); ++# # endif /* !defined(HAVE_READLINE_H) */ ++# char *cmdline = NULL; ++# #else /* !defined(HAVE_READLINE_READLINE_H) */ ++# /* no readline */ ++# #endif /* HAVE_LIBREADLINE */ ++# ++# #ifdef HAVE_READLINE_HISTORY ++# # if defined(HAVE_READLINE_HISTORY_H) ++# # include ++# # elif defined(HAVE_HISTORY_H) ++# # include ++# # else /* !defined(HAVE_HISTORY_H) */ ++# extern void add_history (); ++# extern int write_history (); ++# extern int read_history (); ++# # endif /* defined(HAVE_READLINE_HISTORY_H) */ ++# /* no history */ ++# #endif /* HAVE_READLINE_HISTORY */ ++# ++# LICENSE ++# ++# Copyright (c) 2008 Ville Laurikari ++# ++# Copying and distribution of this file, with or without modification, are ++# permitted in any medium without royalty provided the copyright notice ++# and this notice are preserved. This file is offered as-is, without any ++# warranty. ++ ++#serial 6 ++ ++AU_ALIAS([VL_LIB_READLINE], [AX_LIB_READLINE]) ++AC_DEFUN([AX_LIB_READLINE], [ ++ AC_CACHE_CHECK([for a readline compatible library], ++ ax_cv_lib_readline, [ ++ ORIG_LIBS="$LIBS" ++ for readline_lib in readline edit editline; do ++ for termcap_lib in "" termcap curses ncurses; do ++ if test -z "$termcap_lib"; then ++ TRY_LIB="-l$readline_lib" ++ else ++ TRY_LIB="-l$readline_lib -l$termcap_lib" ++ fi ++ LIBS="$ORIG_LIBS $TRY_LIB" ++ AC_TRY_LINK_FUNC(readline, ax_cv_lib_readline="$TRY_LIB") ++ if test -n "$ax_cv_lib_readline"; then ++ break ++ fi ++ done ++ if test -n "$ax_cv_lib_readline"; then ++ break ++ fi ++ done ++ if test -z "$ax_cv_lib_readline"; then ++ ax_cv_lib_readline="no" ++ fi ++ LIBS="$ORIG_LIBS" ++ ]) ++ ++ if test "$ax_cv_lib_readline" != "no"; then ++ LIBS="$LIBS $ax_cv_lib_readline" ++ AC_DEFINE(HAVE_LIBREADLINE, 1, ++ [Define if you have a readline compatible library]) ++ AC_CHECK_HEADERS(readline.h readline/readline.h) ++ AC_CACHE_CHECK([whether readline supports history], ++ ax_cv_lib_readline_history, [ ++ ax_cv_lib_readline_history="no" ++ AC_TRY_LINK_FUNC(add_history, ax_cv_lib_readline_history="yes") ++ ]) ++ if test "$ax_cv_lib_readline_history" = "yes"; then ++ AC_DEFINE(HAVE_READLINE_HISTORY, 1, ++ [Define if your readline library has \`add_history']) ++ AC_CHECK_HEADERS(history.h readline/history.h) ++ fi ++ fi ++])dnl +diff --git a/autotools/ax_pthread.m4 b/autotools/ax_pthread.m4 +new file mode 100644 +index 00000000..d383ad5c +--- /dev/null ++++ b/autotools/ax_pthread.m4 +@@ -0,0 +1,332 @@ ++# =========================================================================== ++# http://www.gnu.org/software/autoconf-archive/ax_pthread.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) ++# ++# DESCRIPTION ++# ++# This macro figures out how to build C programs using POSIX threads. It ++# sets the PTHREAD_LIBS output variable to the threads library and linker ++# flags, and the PTHREAD_CFLAGS output variable to any special C compiler ++# flags that are needed. (The user can also force certain compiler ++# flags/libs to be tested by setting these environment variables.) ++# ++# Also sets PTHREAD_CC to any special C compiler that is needed for ++# multi-threaded programs (defaults to the value of CC otherwise). (This ++# is necessary on AIX to use the special cc_r compiler alias.) ++# ++# NOTE: You are assumed to not only compile your program with these flags, ++# but also link it with them as well. e.g. you should link with ++# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS ++# ++# If you are only building threads programs, you may wish to use these ++# variables in your default LIBS, CFLAGS, and CC: ++# ++# LIBS="$PTHREAD_LIBS $LIBS" ++# CFLAGS="$CFLAGS $PTHREAD_CFLAGS" ++# CC="$PTHREAD_CC" ++# ++# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant ++# has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name ++# (e.g. PTHREAD_CREATE_UNDETACHED on AIX). ++# ++# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the ++# PTHREAD_PRIO_INHERIT symbol is defined when compiling with ++# PTHREAD_CFLAGS. ++# ++# ACTION-IF-FOUND is a list of shell commands to run if a threads library ++# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it ++# is not found. If ACTION-IF-FOUND is not specified, the default action ++# will define HAVE_PTHREAD. ++# ++# Please let the authors know if this macro fails on any platform, or if ++# you have any other suggestions or comments. This macro was based on work ++# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help ++# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by ++# Alejandro Forero Cuervo to the autoconf macro repository. We are also ++# grateful for the helpful feedback of numerous users. ++# ++# Updated for Autoconf 2.68 by Daniel Richard G. ++# ++# LICENSE ++# ++# Copyright (c) 2008 Steven G. Johnson ++# Copyright (c) 2011 Daniel Richard G. ++# ++# This program is free software: you can redistribute it and/or modify it ++# under the terms of the GNU General Public License as published by the ++# Free Software Foundation, either version 3 of the License, or (at your ++# option) any later version. ++# ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General ++# Public License for more details. ++# ++# You should have received a copy of the GNU General Public License along ++# with this program. If not, see . ++# ++# As a special exception, the respective Autoconf Macro's copyright owner ++# gives unlimited permission to copy, distribute and modify the configure ++# scripts that are the output of Autoconf when processing the Macro. You ++# need not follow the terms of the GNU General Public License when using ++# or distributing such scripts, even though portions of the text of the ++# Macro appear in them. The GNU General Public License (GPL) does govern ++# all other use of the material that constitutes the Autoconf Macro. ++# ++# This special exception to the GPL applies to versions of the Autoconf ++# Macro released by the Autoconf Archive. When you make and distribute a ++# modified version of the Autoconf Macro, you may extend this special ++# exception to the GPL to apply to your modified version as well. ++ ++#serial 21 ++ ++AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) ++AC_DEFUN([AX_PTHREAD], [ ++AC_REQUIRE([AC_CANONICAL_HOST]) ++AC_LANG_PUSH([C]) ++ax_pthread_ok=no ++ ++# We used to check for pthread.h first, but this fails if pthread.h ++# requires special compiler flags (e.g. on True64 or Sequent). ++# It gets checked for in the link test anyway. ++ ++# First of all, check if the user has set any of the PTHREAD_LIBS, ++# etcetera environment variables, and if threads linking works using ++# them: ++if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then ++ save_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS $PTHREAD_CFLAGS" ++ save_LIBS="$LIBS" ++ LIBS="$PTHREAD_LIBS $LIBS" ++ AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) ++ AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes]) ++ AC_MSG_RESULT([$ax_pthread_ok]) ++ if test x"$ax_pthread_ok" = xno; then ++ PTHREAD_LIBS="" ++ PTHREAD_CFLAGS="" ++ fi ++ LIBS="$save_LIBS" ++ CFLAGS="$save_CFLAGS" ++fi ++ ++# We must check for the threads library under a number of different ++# names; the ordering is very important because some systems ++# (e.g. DEC) have both -lpthread and -lpthreads, where one of the ++# libraries is broken (non-POSIX). ++ ++# Create a list of thread flags to try. Items starting with a "-" are ++# C compiler flags, and other items are library names, except for "none" ++# which indicates that we try without any flags at all, and "pthread-config" ++# which is a program returning the flags for the Pth emulation library. ++ ++ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" ++ ++# The ordering *is* (sometimes) important. Some notes on the ++# individual items follow: ++ ++# pthreads: AIX (must check this before -lpthread) ++# none: in case threads are in libc; should be tried before -Kthread and ++# other compiler flags to prevent continual compiler warnings ++# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) ++# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) ++# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) ++# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) ++# -pthreads: Solaris/gcc ++# -mthreads: Mingw32/gcc, Lynx/gcc ++# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it ++# doesn't hurt to check since this sometimes defines pthreads too; ++# also defines -D_REENTRANT) ++# ... -mt is also the pthreads flag for HP/aCC ++# pthread: Linux, etcetera ++# --thread-safe: KAI C++ ++# pthread-config: use pthread-config program (for GNU Pth library) ++ ++case ${host_os} in ++ solaris*) ++ ++ # On Solaris (at least, for some versions), libc contains stubbed ++ # (non-functional) versions of the pthreads routines, so link-based ++ # tests will erroneously succeed. (We need to link with -pthreads/-mt/ ++ # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather ++ # a function called by this macro, so we could check for that, but ++ # who knows whether they'll stub that too in a future libc.) So, ++ # we'll just look for -pthreads and -lpthread first: ++ ++ ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags" ++ ;; ++ ++ darwin*) ++ ax_pthread_flags="-pthread $ax_pthread_flags" ++ ;; ++esac ++ ++# Clang doesn't consider unrecognized options an error unless we specify ++# -Werror. We throw in some extra Clang-specific options to ensure that ++# this doesn't happen for GCC, which also accepts -Werror. ++ ++AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags]) ++save_CFLAGS="$CFLAGS" ++ax_pthread_extra_flags="-Werror" ++CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument" ++AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])], ++ [AC_MSG_RESULT([yes])], ++ [ax_pthread_extra_flags= ++ AC_MSG_RESULT([no])]) ++CFLAGS="$save_CFLAGS" ++ ++if test x"$ax_pthread_ok" = xno; then ++for flag in $ax_pthread_flags; do ++ ++ case $flag in ++ none) ++ AC_MSG_CHECKING([whether pthreads work without any flags]) ++ ;; ++ ++ -*) ++ AC_MSG_CHECKING([whether pthreads work with $flag]) ++ PTHREAD_CFLAGS="$flag" ++ ;; ++ ++ pthread-config) ++ AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no]) ++ if test x"$ax_pthread_config" = xno; then continue; fi ++ PTHREAD_CFLAGS="`pthread-config --cflags`" ++ PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ++ ;; ++ ++ *) ++ AC_MSG_CHECKING([for the pthreads library -l$flag]) ++ PTHREAD_LIBS="-l$flag" ++ ;; ++ esac ++ ++ save_LIBS="$LIBS" ++ save_CFLAGS="$CFLAGS" ++ LIBS="$PTHREAD_LIBS $LIBS" ++ CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags" ++ ++ # Check for various functions. We must include pthread.h, ++ # since some functions may be macros. (On the Sequent, we ++ # need a special flag -Kthread to make this header compile.) ++ # We check for pthread_join because it is in -lpthread on IRIX ++ # while pthread_create is in libc. We check for pthread_attr_init ++ # due to DEC craziness with -lpthreads. We check for ++ # pthread_cleanup_push because it is one of the few pthread ++ # functions on Solaris that doesn't have a non-functional libc stub. ++ # We try pthread_create on general principles. ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ++ static void routine(void *a) { a = 0; } ++ static void *start_routine(void *a) { return a; }], ++ [pthread_t th; pthread_attr_t attr; ++ pthread_create(&th, 0, start_routine, 0); ++ pthread_join(th, 0); ++ pthread_attr_init(&attr); ++ pthread_cleanup_push(routine, 0); ++ pthread_cleanup_pop(0) /* ; */])], ++ [ax_pthread_ok=yes], ++ []) ++ ++ LIBS="$save_LIBS" ++ CFLAGS="$save_CFLAGS" ++ ++ AC_MSG_RESULT([$ax_pthread_ok]) ++ if test "x$ax_pthread_ok" = xyes; then ++ break; ++ fi ++ ++ PTHREAD_LIBS="" ++ PTHREAD_CFLAGS="" ++done ++fi ++ ++# Various other checks: ++if test "x$ax_pthread_ok" = xyes; then ++ save_LIBS="$LIBS" ++ LIBS="$PTHREAD_LIBS $LIBS" ++ save_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS $PTHREAD_CFLAGS" ++ ++ # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. ++ AC_MSG_CHECKING([for joinable pthread attribute]) ++ attr_name=unknown ++ for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ], ++ [int attr = $attr; return attr /* ; */])], ++ [attr_name=$attr; break], ++ []) ++ done ++ AC_MSG_RESULT([$attr_name]) ++ if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then ++ AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name], ++ [Define to necessary symbol if this constant ++ uses a non-standard name on your system.]) ++ fi ++ ++ AC_MSG_CHECKING([if more special flags are required for pthreads]) ++ flag=no ++ case ${host_os} in ++ aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";; ++ osf* | hpux*) flag="-D_REENTRANT";; ++ solaris*) ++ if test "$GCC" = "yes"; then ++ flag="-D_REENTRANT" ++ else ++ # TODO: What about Clang on Solaris? ++ flag="-mt -D_REENTRANT" ++ fi ++ ;; ++ esac ++ AC_MSG_RESULT([$flag]) ++ if test "x$flag" != xno; then ++ PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" ++ fi ++ ++ AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], ++ [ax_cv_PTHREAD_PRIO_INHERIT], [ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], ++ [[int i = PTHREAD_PRIO_INHERIT;]])], ++ [ax_cv_PTHREAD_PRIO_INHERIT=yes], ++ [ax_cv_PTHREAD_PRIO_INHERIT=no]) ++ ]) ++ AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"], ++ [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])]) ++ ++ LIBS="$save_LIBS" ++ CFLAGS="$save_CFLAGS" ++ ++ # More AIX lossage: compile with *_r variant ++ if test "x$GCC" != xyes; then ++ case $host_os in ++ aix*) ++ AS_CASE(["x/$CC"], ++ [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6], ++ [#handle absolute path differently from PATH based program lookup ++ AS_CASE(["x$CC"], ++ [x/*], ++ [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])], ++ [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])]) ++ ;; ++ esac ++ fi ++fi ++ ++test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" ++ ++AC_SUBST([PTHREAD_LIBS]) ++AC_SUBST([PTHREAD_CFLAGS]) ++AC_SUBST([PTHREAD_CC]) ++ ++# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: ++if test x"$ax_pthread_ok" = xyes; then ++ ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1]) ++ : ++else ++ ax_pthread_ok=no ++ $2 ++fi ++AC_LANG_POP ++])dnl AX_PTHREAD +diff --git a/autotools/ax_with_curses.m4 b/autotools/ax_with_curses.m4 +new file mode 100644 +index 00000000..e4cbd31b +--- /dev/null ++++ b/autotools/ax_with_curses.m4 +@@ -0,0 +1,518 @@ ++# =========================================================================== ++# http://www.gnu.org/software/autoconf-archive/ax_with_curses.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_WITH_CURSES ++# ++# DESCRIPTION ++# ++# This macro checks whether a SysV or X/Open-compatible Curses library is ++# present, along with the associated header file. The NcursesW ++# (wide-character) library is searched for first, followed by Ncurses, ++# then the system-default plain Curses. The first library found is the ++# one returned. ++# ++# The following options are understood: --with-ncursesw, --with-ncurses, ++# --without-ncursesw, --without-ncurses. The "--with" options force the ++# macro to use that particular library, terminating with an error if not ++# found. The "--without" options simply skip the check for that library. ++# The effect on the search pattern is: ++# ++# (no options) - NcursesW, Ncurses, Curses ++# --with-ncurses --with-ncursesw - NcursesW only [*] ++# --without-ncurses --with-ncursesw - NcursesW only [*] ++# --with-ncursesw - NcursesW only [*] ++# --with-ncurses --without-ncursesw - Ncurses only [*] ++# --with-ncurses - NcursesW, Ncurses [**] ++# --without-ncurses --without-ncursesw - Curses only ++# --without-ncursesw - Ncurses, Curses ++# --without-ncurses - NcursesW, Curses ++# ++# [*] If the library is not found, abort the configure script. ++# ++# [**] If the second library (Ncurses) is not found, abort configure. ++# ++# The following preprocessor symbols may be defined by this macro if the ++# appropriate conditions are met: ++# ++# HAVE_CURSES - if any SysV or X/Open Curses library found ++# HAVE_CURSES_ENHANCED - if library supports X/Open Enhanced functions ++# HAVE_CURSES_COLOR - if library supports color (enhanced functions) ++# HAVE_CURSES_OBSOLETE - if library supports certain obsolete features ++# HAVE_NCURSESW - if NcursesW (wide char) library is to be used ++# HAVE_NCURSES - if the Ncurses library is to be used ++# ++# HAVE_CURSES_H - if is present and should be used ++# HAVE_NCURSESW_H - if should be used ++# HAVE_NCURSES_H - if should be used ++# HAVE_NCURSESW_CURSES_H - if should be used ++# HAVE_NCURSES_CURSES_H - if should be used ++# ++# (These preprocessor symbols are discussed later in this document.) ++# ++# The following output variable is defined by this macro; it is precious ++# and may be overridden on the ./configure command line: ++# ++# CURSES_LIB - library to add to xxx_LDADD ++# ++# The library listed in CURSES_LIB is NOT added to LIBS by default. You ++# need to add CURSES_LIB to the appropriate xxx_LDADD line in your ++# Makefile.am. For example: ++# ++# prog_LDADD = @CURSES_LIB@ ++# ++# If CURSES_LIB is set on the configure command line (such as by running ++# "./configure CURSES_LIB=-lmycurses"), then the only header searched for ++# is . The user may use the CPPFLAGS precious variable to ++# override the standard #include search path. If the user needs to ++# specify an alternative path for a library (such as for a non-standard ++# NcurseW), the user should use the LDFLAGS variable. ++# ++# The following shell variables may be defined by this macro: ++# ++# ax_cv_curses - set to "yes" if any Curses library found ++# ax_cv_curses_enhanced - set to "yes" if Enhanced functions present ++# ax_cv_curses_color - set to "yes" if color functions present ++# ax_cv_curses_obsolete - set to "yes" if obsolete features present ++# ++# ax_cv_ncursesw - set to "yes" if NcursesW library found ++# ax_cv_ncurses - set to "yes" if Ncurses library found ++# ax_cv_plaincurses - set to "yes" if plain Curses library found ++# ax_cv_curses_which - set to "ncursesw", "ncurses", "plaincurses" or "no" ++# ++# These variables can be used in your configure.ac to determine the level ++# of support you need from the Curses library. For example, if you must ++# have either Ncurses or NcursesW, you could include: ++# ++# AX_WITH_CURSES ++# if test "x$ax_cv_ncursesw" != xyes && test "x$ax_cv_ncurses" != xyes; then ++# AC_MSG_ERROR([requires either NcursesW or Ncurses library]) ++# fi ++# ++# If any Curses library will do (but one must be present and must support ++# color), you could use: ++# ++# AX_WITH_CURSES ++# if test "x$ax_cv_curses" != xyes || test "x$ax_cv_curses_color" != xyes; then ++# AC_MSG_ERROR([requires an X/Open-compatible Curses library with color]) ++# fi ++# ++# Certain preprocessor symbols and shell variables defined by this macro ++# can be used to determine various features of the Curses library. In ++# particular, HAVE_CURSES and ax_cv_curses are defined if the Curses ++# library found conforms to the traditional SysV and/or X/Open Base Curses ++# definition. Any working Curses library conforms to this level. ++# ++# HAVE_CURSES_ENHANCED and ax_cv_curses_enhanced are defined if the ++# library supports the X/Open Enhanced Curses definition. In particular, ++# the wide-character types attr_t, cchar_t and wint_t, the functions ++# wattr_set() and wget_wch() and the macros WA_NORMAL and _XOPEN_CURSES ++# are checked. The Ncurses library does NOT conform to this definition, ++# although NcursesW does. ++# ++# HAVE_CURSES_COLOR and ax_cv_curses_color are defined if the library ++# supports color functions and macros such as COLOR_PAIR, A_COLOR, ++# COLOR_WHITE, COLOR_RED and init_pair(). These are NOT part of the ++# X/Open Base Curses definition, but are part of the Enhanced set of ++# functions. The Ncurses library DOES support these functions, as does ++# NcursesW. ++# ++# HAVE_CURSES_OBSOLETE and ax_cv_curses_obsolete are defined if the ++# library supports certain features present in SysV and BSD Curses but not ++# defined in the X/Open definition. In particular, the functions ++# getattrs(), getcurx() and getmaxx() are checked. ++# ++# To use the HAVE_xxx_H preprocessor symbols, insert the following into ++# your system.h (or equivalent) header file: ++# ++# #if defined HAVE_NCURSESW_CURSES_H ++# # include ++# #elif defined HAVE_NCURSESW_H ++# # include ++# #elif defined HAVE_NCURSES_CURSES_H ++# # include ++# #elif defined HAVE_NCURSES_H ++# # include ++# #elif defined HAVE_CURSES_H ++# # include ++# #else ++# # error "SysV or X/Open-compatible Curses header file required" ++# #endif ++# ++# For previous users of this macro: you should not need to change anything ++# in your configure.ac or Makefile.am, as the previous (serial 10) ++# semantics are still valid. However, you should update your system.h (or ++# equivalent) header file to the fragment shown above. You are encouraged ++# also to make use of the extended functionality provided by this version ++# of AX_WITH_CURSES, as well as in the additional macros ++# AX_WITH_CURSES_PANEL, AX_WITH_CURSES_MENU and AX_WITH_CURSES_FORM. ++# ++# LICENSE ++# ++# Copyright (c) 2009 Mark Pulford ++# Copyright (c) 2009 Damian Pietras ++# Copyright (c) 2012 Reuben Thomas ++# Copyright (c) 2011 John Zaitseff ++# ++# This program is free software: you can redistribute it and/or modify it ++# under the terms of the GNU General Public License as published by the ++# Free Software Foundation, either version 3 of the License, or (at your ++# option) any later version. ++# ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General ++# Public License for more details. ++# ++# You should have received a copy of the GNU General Public License along ++# with this program. If not, see . ++# ++# As a special exception, the respective Autoconf Macro's copyright owner ++# gives unlimited permission to copy, distribute and modify the configure ++# scripts that are the output of Autoconf when processing the Macro. You ++# need not follow the terms of the GNU General Public License when using ++# or distributing such scripts, even though portions of the text of the ++# Macro appear in them. The GNU General Public License (GPL) does govern ++# all other use of the material that constitutes the Autoconf Macro. ++# ++# This special exception to the GPL applies to versions of the Autoconf ++# Macro released by the Autoconf Archive. When you make and distribute a ++# modified version of the Autoconf Macro, you may extend this special ++# exception to the GPL to apply to your modified version as well. ++ ++#serial 15 ++ ++AU_ALIAS([MP_WITH_CURSES], [AX_WITH_CURSES]) ++AC_DEFUN([AX_WITH_CURSES], [ ++ AC_ARG_VAR([CURSES_LIB], [linker library for Curses, e.g. -lcurses]) ++ AC_ARG_WITH([ncurses], [AS_HELP_STRING([--with-ncurses], ++ [force the use of Ncurses or NcursesW])], ++ [], [with_ncurses=check]) ++ AC_ARG_WITH([ncursesw], [AS_HELP_STRING([--without-ncursesw], ++ [do not use NcursesW (wide character support)])], ++ [], [with_ncursesw=check]) ++ ++ ax_saved_LIBS=$LIBS ++ AS_IF([test "x$with_ncurses" = xyes || test "x$with_ncursesw" = xyes], ++ [ax_with_plaincurses=no], [ax_with_plaincurses=check]) ++ ++ ax_cv_curses_which=no ++ ++ # Test for NcursesW ++ ++ AS_IF([test "x$CURSES_LIB" = x && test "x$with_ncursesw" != xno], [ ++ LIBS="$ax_saved_LIBS -lncursesw" ++ ++ AC_CACHE_CHECK([for NcursesW wide-character library], [ax_cv_ncursesw], [ ++ AC_LINK_IFELSE([AC_LANG_CALL([], [initscr])], ++ [ax_cv_ncursesw=yes], [ax_cv_ncursesw=no]) ++ ]) ++ AS_IF([test "x$ax_cv_ncursesw" = xno && test "x$with_ncursesw" = xyes], [ ++ AC_MSG_ERROR([--with-ncursesw specified but could not find NcursesW library]) ++ ]) ++ ++ AS_IF([test "x$ax_cv_ncursesw" = xyes], [ ++ ax_cv_curses=yes ++ ax_cv_curses_which=ncursesw ++ CURSES_LIB="-lncursesw" ++ AC_DEFINE([HAVE_NCURSESW], [1], [Define to 1 if the NcursesW library is present]) ++ AC_DEFINE([HAVE_CURSES], [1], [Define to 1 if a SysV or X/Open compatible Curses library is present]) ++ ++ AC_CACHE_CHECK([for working ncursesw/curses.h], [ax_cv_header_ncursesw_curses_h], [ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ++ @%:@define _XOPEN_SOURCE_EXTENDED 1 ++ @%:@include ++ ]], [[ ++ chtype a = A_BOLD; ++ int b = KEY_LEFT; ++ chtype c = COLOR_PAIR(1) & A_COLOR; ++ attr_t d = WA_NORMAL; ++ cchar_t e; ++ wint_t f; ++ int g = getattrs(stdscr); ++ int h = getcurx(stdscr) + getmaxx(stdscr); ++ initscr(); ++ init_pair(1, COLOR_WHITE, COLOR_RED); ++ wattr_set(stdscr, d, 0, NULL); ++ wget_wch(stdscr, &f); ++ ]])], ++ [ax_cv_header_ncursesw_curses_h=yes], ++ [ax_cv_header_ncursesw_curses_h=no]) ++ ]) ++ AS_IF([test "x$ax_cv_header_ncursesw_curses_h" = xyes], [ ++ ax_cv_curses_enhanced=yes ++ ax_cv_curses_color=yes ++ ax_cv_curses_obsolete=yes ++ AC_DEFINE([HAVE_CURSES_ENHANCED], [1], [Define to 1 if library supports X/Open Enhanced functions]) ++ AC_DEFINE([HAVE_CURSES_COLOR], [1], [Define to 1 if library supports color (enhanced functions)]) ++ AC_DEFINE([HAVE_CURSES_OBSOLETE], [1], [Define to 1 if library supports certain obsolete features]) ++ AC_DEFINE([HAVE_NCURSESW_CURSES_H], [1], [Define to 1 if is present]) ++ ]) ++ ++ AC_CACHE_CHECK([for working ncursesw.h], [ax_cv_header_ncursesw_h], [ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ++ @%:@define _XOPEN_SOURCE_EXTENDED 1 ++ @%:@include ++ ]], [[ ++ chtype a = A_BOLD; ++ int b = KEY_LEFT; ++ chtype c = COLOR_PAIR(1) & A_COLOR; ++ attr_t d = WA_NORMAL; ++ cchar_t e; ++ wint_t f; ++ int g = getattrs(stdscr); ++ int h = getcurx(stdscr) + getmaxx(stdscr); ++ initscr(); ++ init_pair(1, COLOR_WHITE, COLOR_RED); ++ wattr_set(stdscr, d, 0, NULL); ++ wget_wch(stdscr, &f); ++ ]])], ++ [ax_cv_header_ncursesw_h=yes], ++ [ax_cv_header_ncursesw_h=no]) ++ ]) ++ AS_IF([test "x$ax_cv_header_ncursesw_h" = xyes], [ ++ ax_cv_curses_enhanced=yes ++ ax_cv_curses_color=yes ++ ax_cv_curses_obsolete=yes ++ AC_DEFINE([HAVE_CURSES_ENHANCED], [1], [Define to 1 if library supports X/Open Enhanced functions]) ++ AC_DEFINE([HAVE_CURSES_COLOR], [1], [Define to 1 if library supports color (enhanced functions)]) ++ AC_DEFINE([HAVE_CURSES_OBSOLETE], [1], [Define to 1 if library supports certain obsolete features]) ++ AC_DEFINE([HAVE_NCURSESW_H], [1], [Define to 1 if is present]) ++ ]) ++ ++ AC_CACHE_CHECK([for working ncurses.h], [ax_cv_header_ncurses_h_with_ncursesw], [ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ++ @%:@define _XOPEN_SOURCE_EXTENDED 1 ++ @%:@include ++ ]], [[ ++ chtype a = A_BOLD; ++ int b = KEY_LEFT; ++ chtype c = COLOR_PAIR(1) & A_COLOR; ++ attr_t d = WA_NORMAL; ++ cchar_t e; ++ wint_t f; ++ int g = getattrs(stdscr); ++ int h = getcurx(stdscr) + getmaxx(stdscr); ++ initscr(); ++ init_pair(1, COLOR_WHITE, COLOR_RED); ++ wattr_set(stdscr, d, 0, NULL); ++ wget_wch(stdscr, &f); ++ ]])], ++ [ax_cv_header_ncurses_h_with_ncursesw=yes], ++ [ax_cv_header_ncurses_h_with_ncursesw=no]) ++ ]) ++ AS_IF([test "x$ax_cv_header_ncurses_h_with_ncursesw" = xyes], [ ++ ax_cv_curses_enhanced=yes ++ ax_cv_curses_color=yes ++ ax_cv_curses_obsolete=yes ++ AC_DEFINE([HAVE_CURSES_ENHANCED], [1], [Define to 1 if library supports X/Open Enhanced functions]) ++ AC_DEFINE([HAVE_CURSES_COLOR], [1], [Define to 1 if library supports color (enhanced functions)]) ++ AC_DEFINE([HAVE_CURSES_OBSOLETE], [1], [Define to 1 if library supports certain obsolete features]) ++ AC_DEFINE([HAVE_NCURSES_H], [1], [Define to 1 if is present]) ++ ]) ++ ++ AS_IF([test "x$ax_cv_header_ncursesw_curses_h" = xno && test "x$ax_cv_header_ncursesw_h" = xno && test "x$ax_cv_header_ncurses_h_with_ncursesw" = xno], [ ++ AC_MSG_WARN([could not find a working ncursesw/curses.h, ncursesw.h or ncurses.h]) ++ ]) ++ ]) ++ ]) ++ ++ # Test for Ncurses ++ ++ AS_IF([test "x$CURSES_LIB" = x && test "x$with_ncurses" != xno && test "x$ax_cv_curses_which" = xno], [ ++ LIBS="$ax_saved_LIBS -lncurses" ++ ++ AC_CACHE_CHECK([for Ncurses library], [ax_cv_ncurses], [ ++ AC_LINK_IFELSE([AC_LANG_CALL([], [initscr])], ++ [ax_cv_ncurses=yes], [ax_cv_ncurses=no]) ++ ]) ++ AS_IF([test "x$ax_cv_ncurses" = xno && test "x$with_ncurses" = xyes], [ ++ AC_MSG_ERROR([--with-ncurses specified but could not find Ncurses library]) ++ ]) ++ ++ AS_IF([test "x$ax_cv_ncurses" = xyes], [ ++ ax_cv_curses=yes ++ ax_cv_curses_which=ncurses ++ CURSES_LIB="-lncurses" ++ AC_DEFINE([HAVE_NCURSES], [1], [Define to 1 if the Ncurses library is present]) ++ AC_DEFINE([HAVE_CURSES], [1], [Define to 1 if a SysV or X/Open compatible Curses library is present]) ++ ++ AC_CACHE_CHECK([for working ncurses/curses.h], [ax_cv_header_ncurses_curses_h], [ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ++ @%:@include ++ ]], [[ ++ chtype a = A_BOLD; ++ int b = KEY_LEFT; ++ chtype c = COLOR_PAIR(1) & A_COLOR; ++ int g = getattrs(stdscr); ++ int h = getcurx(stdscr) + getmaxx(stdscr); ++ initscr(); ++ init_pair(1, COLOR_WHITE, COLOR_RED); ++ ]])], ++ [ax_cv_header_ncurses_curses_h=yes], ++ [ax_cv_header_ncurses_curses_h=no]) ++ ]) ++ AS_IF([test "x$ax_cv_header_ncurses_curses_h" = xyes], [ ++ ax_cv_curses_color=yes ++ ax_cv_curses_obsolete=yes ++ AC_DEFINE([HAVE_CURSES_COLOR], [1], [Define to 1 if library supports color (enhanced functions)]) ++ AC_DEFINE([HAVE_CURSES_OBSOLETE], [1], [Define to 1 if library supports certain obsolete features]) ++ AC_DEFINE([HAVE_NCURSES_CURSES_H], [1], [Define to 1 if is present]) ++ ]) ++ ++ AC_CACHE_CHECK([for working ncurses.h], [ax_cv_header_ncurses_h], [ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ++ @%:@include ++ ]], [[ ++ chtype a = A_BOLD; ++ int b = KEY_LEFT; ++ chtype c = COLOR_PAIR(1) & A_COLOR; ++ int g = getattrs(stdscr); ++ int h = getcurx(stdscr) + getmaxx(stdscr); ++ initscr(); ++ init_pair(1, COLOR_WHITE, COLOR_RED); ++ ]])], ++ [ax_cv_header_ncurses_h=yes], ++ [ax_cv_header_ncurses_h=no]) ++ ]) ++ AS_IF([test "x$ax_cv_header_ncurses_h" = xyes], [ ++ ax_cv_curses_color=yes ++ ax_cv_curses_obsolete=yes ++ AC_DEFINE([HAVE_CURSES_COLOR], [1], [Define to 1 if library supports color (enhanced functions)]) ++ AC_DEFINE([HAVE_CURSES_OBSOLETE], [1], [Define to 1 if library supports certain obsolete features]) ++ AC_DEFINE([HAVE_NCURSES_H], [1], [Define to 1 if is present]) ++ ]) ++ ++ AS_IF([test "x$ax_cv_header_ncurses_curses_h" = xno && test "x$ax_cv_header_ncurses_h" = xno], [ ++ AC_MSG_WARN([could not find a working ncurses/curses.h or ncurses.h]) ++ ]) ++ ]) ++ ]) ++ ++ # Test for plain Curses (or if CURSES_LIB was set by user) ++ ++ AS_IF([test "x$with_plaincurses" != xno && test "x$ax_cv_curses_which" = xno], [ ++ AS_IF([test "x$CURSES_LIB" != x], [ ++ LIBS="$ax_saved_LIBS $CURSES_LIB" ++ ], [ ++ LIBS="$ax_saved_LIBS -lcurses" ++ ]) ++ ++ AC_CACHE_CHECK([for Curses library], [ax_cv_plaincurses], [ ++ AC_LINK_IFELSE([AC_LANG_CALL([], [initscr])], ++ [ax_cv_plaincurses=yes], [ax_cv_plaincurses=no]) ++ ]) ++ ++ AS_IF([test "x$ax_cv_plaincurses" = xyes], [ ++ ax_cv_curses=yes ++ ax_cv_curses_which=plaincurses ++ AS_IF([test "x$CURSES_LIB" = x], [ ++ CURSES_LIB="-lcurses" ++ ]) ++ AC_DEFINE([HAVE_CURSES], [1], [Define to 1 if a SysV or X/Open compatible Curses library is present]) ++ ++ # Check for base conformance (and header file) ++ ++ AC_CACHE_CHECK([for working curses.h], [ax_cv_header_curses_h], [ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ++ @%:@include ++ ]], [[ ++ chtype a = A_BOLD; ++ int b = KEY_LEFT; ++ initscr(); ++ ]])], ++ [ax_cv_header_curses_h=yes], ++ [ax_cv_header_curses_h=no]) ++ ]) ++ AS_IF([test "x$ax_cv_header_curses_h" = xyes], [ ++ AC_DEFINE([HAVE_CURSES_H], [1], [Define to 1 if is present]) ++ ++ # Check for X/Open Enhanced conformance ++ ++ AC_CACHE_CHECK([for X/Open Enhanced Curses conformance], [ax_cv_plaincurses_enhanced], [ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ++ @%:@define _XOPEN_SOURCE_EXTENDED 1 ++ @%:@include ++ @%:@ifndef _XOPEN_CURSES ++ @%:@error "this Curses library is not enhanced" ++ "this Curses library is not enhanced" ++ @%:@endif ++ ]], [[ ++ chtype a = A_BOLD; ++ int b = KEY_LEFT; ++ chtype c = COLOR_PAIR(1) & A_COLOR; ++ attr_t d = WA_NORMAL; ++ cchar_t e; ++ wint_t f; ++ initscr(); ++ init_pair(1, COLOR_WHITE, COLOR_RED); ++ wattr_set(stdscr, d, 0, NULL); ++ wget_wch(stdscr, &f); ++ ]])], ++ [ax_cv_plaincurses_enhanced=yes], ++ [ax_cv_plaincurses_enhanced=no]) ++ ]) ++ AS_IF([test "x$ax_cv_plaincurses_enhanced" = xyes], [ ++ ax_cv_curses_enhanced=yes ++ ax_cv_curses_color=yes ++ AC_DEFINE([HAVE_CURSES_ENHANCED], [1], [Define to 1 if library supports X/Open Enhanced functions]) ++ AC_DEFINE([HAVE_CURSES_COLOR], [1], [Define to 1 if library supports color (enhanced functions)]) ++ ]) ++ ++ # Check for color functions ++ ++ AC_CACHE_CHECK([for Curses color functions], [ax_cv_plaincurses_color], [ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ++ @%:@define _XOPEN_SOURCE_EXTENDED 1 ++ @%:@include ++ ]], [[ ++ chtype a = A_BOLD; ++ int b = KEY_LEFT; ++ chtype c = COLOR_PAIR(1) & A_COLOR; ++ initscr(); ++ init_pair(1, COLOR_WHITE, COLOR_RED); ++ ]])], ++ [ax_cv_plaincurses_color=yes], ++ [ax_cv_plaincurses_color=no]) ++ ]) ++ AS_IF([test "x$ax_cv_plaincurses_color" = xyes], [ ++ ax_cv_curses_color=yes ++ AC_DEFINE([HAVE_CURSES_COLOR], [1], [Define to 1 if library supports color (enhanced functions)]) ++ ]) ++ ++ # Check for obsolete functions ++ ++ AC_CACHE_CHECK([for obsolete Curses functions], [ax_cv_plaincurses_obsolete], [ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ++ @%:@include ++ ]], [[ ++ chtype a = A_BOLD; ++ int b = KEY_LEFT; ++ int g = getattrs(stdscr); ++ int h = getcurx(stdscr) + getmaxx(stdscr); ++ initscr(); ++ ]])], ++ [ax_cv_plaincurses_obsolete=yes], ++ [ax_cv_plaincurses_obsolete=no]) ++ ]) ++ AS_IF([test "x$ax_cv_plaincurses_obsolete" = xyes], [ ++ ax_cv_curses_obsolete=yes ++ AC_DEFINE([HAVE_CURSES_OBSOLETE], [1], [Define to 1 if library supports certain obsolete features]) ++ ]) ++ ]) ++ ++ AS_IF([test "x$ax_cv_header_curses_h" = xno], [ ++ AC_MSG_WARN([could not find a working curses.h]) ++ ]) ++ ]) ++ ]) ++ ++ AS_IF([test "x$ax_cv_curses" != xyes], [ax_cv_curses=no]) ++ AS_IF([test "x$ax_cv_curses_enhanced" != xyes], [ax_cv_curses_enhanced=no]) ++ AS_IF([test "x$ax_cv_curses_color" != xyes], [ax_cv_curses_color=no]) ++ AS_IF([test "x$ax_cv_curses_obsolete" != xyes], [ax_cv_curses_obsolete=no]) ++ ++ LIBS=$ax_saved_LIBS ++])dnl +diff --git a/autotools/softether.am b/autotools/softether.am +new file mode 100644 +index 00000000..e5e91eeb +--- /dev/null ++++ b/autotools/softether.am +@@ -0,0 +1,39 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++if CONFIGURE_ENABLE_DEBUG ++DEBUG_CFLAGS = -g -D_DEBUG -DDEBUG ++else ++DEBUG_CFLAGS = -DNDEBUG -DVPN_SPEED ++endif ++ ++AM_CFLAGS = \ ++ $(DEBUG_CFLAGS) \ ++ -I$(top_srcdir)/src \ ++ -I$(top_srcdir)/src/Mayaqua \ ++ -I$(top_srcdir)/src/Cedar \ ++ -DUNIX \ ++ -DUNIX_LINUX \ ++ -D_REENTRANT \ ++ -DREENTRANT \ ++ -D_THREAD_SAFE \ ++ -D_THREADSAFE \ ++ -DTHREAD_SAFE \ ++ -DTHREADSAFE \ ++ -D_FILE_OFFSET_BITS=64 \ ++ -fsigned-char +diff --git a/configure.ac b/configure.ac +new file mode 100644 +index 00000000..4a3fc2ba +--- /dev/null ++++ b/configure.ac +@@ -0,0 +1,96 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++AC_INIT([SoftEther], [1], [http://www.vpnusers.com/], [softether], [http://www.softether.org/]) ++AC_CONFIG_AUX_DIR([autotools]) ++AC_CONFIG_MACRO_DIR([autotools]) ++AM_INIT_AUTOMAKE([foreign -Wall -Werror]) ++AM_PROG_AR ++AC_PROG_CC ++AC_PROG_LIBTOOL ++AC_CONFIG_HEADERS([softether_config.h]) ++AC_CONFIG_FILES([ ++ Makefile ++ src/Makefile ++ src/Mayaqua/Makefile ++ src/Cedar/Makefile ++ src/hamcorebuilder/Makefile ++ src/bin/hamcore/Makefile ++ src/vpnserver/Makefile ++ src/vpnclient/Makefile ++ src/vpnbridge/Makefile ++ src/vpncmd/Makefile ++]) ++ ++ ++AC_ARG_ENABLE( ++ [debug], ++ AS_HELP_STRING([--enable-debug], [build SoftEther with debugging features]), ++ [debug=yes] ++) ++AM_CONDITIONAL([CONFIGURE_ENABLE_DEBUG], [test _"$debug" = _yes]) ++ ++ ++AX_PTHREAD([ ++ AC_SUBST(PTHREAD_CC) ++ AC_SUBST(PTHREAD_CFLAGS) ++ AC_SUBST(PTHREAD_LIBS) ++],[ ++ AC_MSG_ERROR([pthread capabilities not found]) ++]) ++ ++CC="$PTHREAD_CC" ++CFLAGS="$CFLAGS $PTHREAD_CFLAGS" ++LIBS="$PTHREAD_LIBS $LIBS" ++ ++ ++AX_CHECK_OPENSSL([ ++ AC_SUBST(OPENSSL_LIBS) ++ AC_SUBST(OPENSSL_LDFLAGS) ++],[ ++ AC_MSG_ERROR([openssl not found]) ++]) ++ ++LIBS="$LIBS $OPENSSL_LIBS" ++LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS" ++ ++ ++# This macro automatically updates build variables. ++AX_CHECK_ZLIB(, AC_MSG_ERROR([zlib not found])) ++ ++ ++AX_WITH_CURSES ++if test "_$ax_cv_curses" != _yes ++then ++ AC_MSG_ERROR([libcurses, libncurses, or libncursesw not found]) ++else ++ AC_SUBST(CURSES_LIB) ++ LIBS="$LIBS $CURSES_LIB" ++fi ++ ++ ++AX_LIB_READLINE ++if test "_$ax_cv_lib_readline" = _no ++then ++ AC_MSG_ERROR([libreadline not found]) ++else ++ : This macro automatically updates build variables. ++fi ++ ++ ++AC_OUTPUT +--- a/configure 2017-07-16 04:53:31.000000000 +0200 ++++ b/configure 1970-01-01 01:00:00.000000000 +0100 +@@ -1,112 +0,0 @@ +-#!/bin/sh +- +-echo '---------------------------------------------------------------------' +-echo 'SoftEther VPN for Unix' +-echo +-echo 'Copyright (c) Daiyuu Nobori.' +-echo 'Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.' +-echo 'Copyright (c) SoftEther Corporation.' +-echo 'Copyright (c) all contributors on SoftEther VPN project in GitHub.' +-echo +-echo 'License: The Apache License, Version 2.0' +-echo +-echo 'Read and understand README.TXT, LICENSE.TXT and WARNING.TXT before use.' +-echo '---------------------------------------------------------------------' +-echo +- +-echo 'Welcome to the corner-cutting configure script !' +-echo +- +-OS="" +-case "`uname -s`" in +-Linux) +- OS="linux" +- ;; +-FreeBSD) +- OS="freebsd" +- ;; +-SunOS) +- OS="solaris" +- ;; +-Darwin) +- OS="macos" +- ;; +-OpenBSD) +- OS="openbsd" +- ;; +-*) +- echo 'Select your operating system below:' +- echo ' 1: Linux' +- echo ' 2: FreeBSD' +- echo ' 3: Solaris' +- echo ' 4: Mac OS X' +- echo ' 5: OpenBSD' +- echo +- echo -n 'Which is your operating system (1 - 5) ? : ' +- read TMP +- echo +- if test "$TMP" = "1" +- then +- OS="linux" +- fi +- if test "$TMP" = "2" +- then +- OS="freebsd" +- fi +- if test "$TMP" = "3" +- then +- OS="solaris" +- fi +- if test "$TMP" = "4" +- then +- OS="macos" +- fi +- if test "$TMP" = "5" +- then +- OS="openbsd" +- fi +- +- if test "$OS" = "" +- then +- echo "Wrong number." +- exit 1 +- fi +- ;; +-esac +- +-CPU="" +-case "`uname -m`" in +-x86_64|amd64|aarch64|arm64|armv8*|mips64|ppc64|sparc64|alpha|ia64) +- CPU=64bit +- ;; +-i?86|x86pc|i86pc|armv4*|armv5*|armv6*|armv7*) +- CPU=32bit +- ;; +-*) +- echo 'Select your CPU bits below:' +- echo ' 1: 32-bit' +- echo ' 2: 64-bit' +- echo +- echo -n 'Which is the type of your CPU (1 - 2) ? : ' +- read TMP +- echo +- if test "$TMP" = "1" +- then +- CPU="32bit" +- fi +- if test "$TMP" = "2" +- then +- CPU="64bit" +- fi +- +- if test "$CPU" = "" +- then +- echo "Wrong number." +- exit 1 +- fi +- ;; +-esac +- +-cp src/makefiles/${OS}_${CPU}.mak Makefile +- +-echo "The Makefile is generated. Run 'make' to build SoftEther VPN." +--- a/manual_configure 1970-01-01 01:00:00.000000000 +0100 ++++ b/manual_configure 2017-07-16 04:53:31.000000000 +0200 +@@ -0,0 +1,112 @@ ++#!/bin/sh ++ ++echo '---------------------------------------------------------------------' ++echo 'SoftEther VPN for Unix' ++echo ++echo 'Copyright (c) SoftEther VPN Project at University of Tsukuba, Japan.' ++echo 'Copyright (c) Daiyuu Nobori. All Rights Reserved.' ++echo ++echo 'This program is free software; you can redistribute it and/or' ++echo 'modify it under the terms of the GNU General Public License' ++echo 'version 2 as published by the Free Software Foundation.' ++echo ++echo 'Read and understand README.TXT, LICENSE.TXT and WARNING.TXT before use.' ++echo '---------------------------------------------------------------------' ++echo ++ ++echo 'Welcome to the corner-cutting configure script !' ++echo ++ ++OS="" ++case "`uname -s`" in ++Linux) ++ OS="linux" ++ ;; ++FreeBSD) ++ OS="freebsd" ++ ;; ++SunOS) ++ OS="solaris" ++ ;; ++Darwin) ++ OS="macos" ++ ;; ++OpenBSD) ++ OS="openbsd" ++ ;; ++*) ++ echo 'Select your operating system below:' ++ echo ' 1: Linux' ++ echo ' 2: FreeBSD' ++ echo ' 3: Solaris' ++ echo ' 4: Mac OS X' ++ echo ' 5: OpenBSD' ++ echo ++ echo -n 'Which is your operating system (1 - 5) ? : ' ++ read TMP ++ echo ++ if test "$TMP" = "1" ++ then ++ OS="linux" ++ fi ++ if test "$TMP" = "2" ++ then ++ OS="freebsd" ++ fi ++ if test "$TMP" = "3" ++ then ++ OS="solaris" ++ fi ++ if test "$TMP" = "4" ++ then ++ OS="macos" ++ fi ++ if test "$TMP" = "5" ++ then ++ OS="openbsd" ++ fi ++ ++ if test "$OS" = "" ++ then ++ echo "Wrong number." ++ exit 1 ++ fi ++ ;; ++esac ++ ++CPU="" ++case "`uname -m`" in ++x86_64|amd64|aarch64|arm64|armv8*|mips64|ppc64|sparc64|alpha|ia64) ++ CPU=64bit ++ ;; ++i?86|x86pc|i86pc|armv4*|armv5*|armv6*|armv7*) ++ CPU=32bit ++ ;; ++*) ++ echo 'Select your CPU bits below:' ++ echo ' 1: 32-bit' ++ echo ' 2: 64-bit' ++ echo ++ echo -n 'Which is the type of your CPU (1 - 2) ? : ' ++ read TMP ++ echo ++ if test "$TMP" = "1" ++ then ++ CPU="32bit" ++ fi ++ if test "$TMP" = "2" ++ then ++ CPU="64bit" ++ fi ++ ++ if test "$CPU" = "" ++ then ++ echo "Wrong number." ++ exit 1 ++ fi ++ ;; ++esac ++ ++cp src/makefiles/${OS}_${CPU}.mak Makefile ++ ++echo "The Makefile is generated. Run 'make' to build SoftEther VPN." +diff --git a/src/Cedar/Makefile.am b/src/Cedar/Makefile.am +new file mode 100644 +index 00000000..5346537d +--- /dev/null ++++ b/src/Cedar/Makefile.am +@@ -0,0 +1,82 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++include $(top_srcdir)/autotools/softether.am ++ ++noinst_LTLIBRARIES = libcedar.la ++ ++libcedar_la_SOURCES = \ ++ Account.c \ ++ Admin.c \ ++ AzureClient.c \ ++ AzureServer.c \ ++ Bridge.c \ ++ BridgeUnix.c \ ++ BridgeWin32.c \ ++ Cedar.c \ ++ CedarPch.c \ ++ Client.c \ ++ CM.c \ ++ Command.c \ ++ Connection.c \ ++ Console.c \ ++ Database.c \ ++ DDNS.c \ ++ EM.c \ ++ EtherLog.c \ ++ Hub.c \ ++ Interop_OpenVPN.c \ ++ Interop_SSTP.c \ ++ IPsec.c \ ++ IPsec_EtherIP.c \ ++ IPsec_IKE.c \ ++ IPsec_IkePacket.c \ ++ IPsec_IPC.c \ ++ IPsec_L2TP.c \ ++ IPsec_PPP.c \ ++ IPsec_Win7.c \ ++ Layer3.c \ ++ Link.c \ ++ Listener.c \ ++ Logging.c \ ++ Nat.c \ ++ NativeStack.c \ ++ NM.c \ ++ NullLan.c \ ++ Protocol.c \ ++ Radius.c \ ++ Remote.c \ ++ Sam.c \ ++ SecureInfo.c \ ++ SecureNAT.c \ ++ SeLowUser.c \ ++ Server.c \ ++ Session.c \ ++ SM.c \ ++ SW.c \ ++ UdpAccel.c \ ++ UT.c \ ++ VG.c \ ++ Virtual.c \ ++ VLan.c \ ++ VLanUnix.c \ ++ VLanWin32.c \ ++ WaterMark.c \ ++ WebUI.c \ ++ WinUi.c \ ++ Wpc.c +diff --git a/src/Makefile.am b/src/Makefile.am +new file mode 100644 +index 00000000..dc745426 +--- /dev/null ++++ b/src/Makefile.am +@@ -0,0 +1,26 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++# These components are built as libtool convenience libraries. ++SUBDIRS = Mayaqua Cedar ++ ++# This is a nodist helper. ++SUBDIRS += hamcorebuilder ++ ++# These are final build products. ++SUBDIRS += bin/hamcore vpnserver vpnclient vpnbridge vpncmd +diff --git a/src/Mayaqua/Makefile.am b/src/Mayaqua/Makefile.am +new file mode 100644 +index 00000000..6b8dc1a6 +--- /dev/null ++++ b/src/Mayaqua/Makefile.am +@@ -0,0 +1,43 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++include $(top_srcdir)/autotools/softether.am ++ ++noinst_LTLIBRARIES = libmayaqua.la ++ ++libmayaqua_la_SOURCES = \ ++ Cfg.c \ ++ Encrypt.c \ ++ FileIO.c \ ++ Internat.c \ ++ Kernel.c \ ++ Mayaqua.c \ ++ Memory.c \ ++ Microsoft.c \ ++ Network.c \ ++ Object.c \ ++ OS.c \ ++ Pack.c \ ++ Secure.c \ ++ Str.c \ ++ Table.c \ ++ TcpIp.c \ ++ Tick64.c \ ++ Tracking.c \ ++ Unix.c \ ++ Win32.c +diff --git a/src/bin/hamcore/Makefile.am b/src/bin/hamcore/Makefile.am +new file mode 100644 +index 00000000..37b0291e +--- /dev/null ++++ b/src/bin/hamcore/Makefile.am +@@ -0,0 +1,29 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++include $(top_srcdir)/autotools/softether.am ++ ++# This is required to use a custom build rule with -Wall and -Werror enabled. ++AUTOMAKE_OPTIONS = -Wno-override ++EXEEXT = ++HAMCOREBUILDER = $(top_builddir)/src/hamcorebuilder/hamcorebuilder ++ ++sbin_PROGRAMS = hamcore.se2 ++ ++hamcore.se2$(EXEEXT): $(HAMCOREBUILDER) ++ $(HAMCOREBUILDER) $(top_srcdir)/src/bin/hamcore $@ +diff --git a/src/hamcorebuilder/Makefile.am b/src/hamcorebuilder/Makefile.am +new file mode 100644 +index 00000000..a22429f0 +--- /dev/null ++++ b/src/hamcorebuilder/Makefile.am +@@ -0,0 +1,29 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++include $(top_srcdir)/autotools/softether.am ++ ++noinst_PROGRAMS = \ ++ hamcorebuilder ++ ++hamcorebuilder_SOURCES = \ ++ hamcorebuilder.c ++ ++hamcorebuilder_LDADD = \ ++ $(top_builddir)/src/Mayaqua/libmayaqua.la \ ++ $(top_builddir)/src/Cedar/libcedar.la +diff --git a/src/vpnbridge/Makefile.am b/src/vpnbridge/Makefile.am +new file mode 100644 +index 00000000..35fe043d +--- /dev/null ++++ b/src/vpnbridge/Makefile.am +@@ -0,0 +1,29 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++include $(top_srcdir)/autotools/softether.am ++ ++sbin_PROGRAMS = \ ++ vpnbridge ++ ++vpnbridge_SOURCES = \ ++ vpnbridge.c ++ ++vpnbridge_LDADD = \ ++ $(top_builddir)/src/Mayaqua/libmayaqua.la \ ++ $(top_builddir)/src/Cedar/libcedar.la +diff --git a/src/vpnclient/Makefile.am b/src/vpnclient/Makefile.am +new file mode 100644 +index 00000000..1aa55330 +--- /dev/null ++++ b/src/vpnclient/Makefile.am +@@ -0,0 +1,29 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++include $(top_srcdir)/autotools/softether.am ++ ++sbin_PROGRAMS = \ ++ vpnclient ++ ++vpnclient_SOURCES = \ ++ vpncsvc.c ++ ++vpnclient_LDADD = \ ++ $(top_builddir)/src/Mayaqua/libmayaqua.la \ ++ $(top_builddir)/src/Cedar/libcedar.la +diff --git a/src/vpncmd/Makefile.am b/src/vpncmd/Makefile.am +new file mode 100644 +index 00000000..d8042aa2 +--- /dev/null ++++ b/src/vpncmd/Makefile.am +@@ -0,0 +1,29 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++include $(top_srcdir)/autotools/softether.am ++ ++sbin_PROGRAMS = \ ++ vpncmd ++ ++vpncmd_SOURCES = \ ++ vpncmd.c ++ ++vpncmd_LDADD = \ ++ $(top_builddir)/src/Mayaqua/libmayaqua.la \ ++ $(top_builddir)/src/Cedar/libcedar.la +diff --git a/src/vpnserver/Makefile.am b/src/vpnserver/Makefile.am +new file mode 100644 +index 00000000..c1c33570 +--- /dev/null ++++ b/src/vpnserver/Makefile.am +@@ -0,0 +1,29 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++include $(top_srcdir)/autotools/softether.am ++ ++sbin_PROGRAMS = \ ++ vpnserver ++ ++vpnserver_SOURCES = \ ++ vpnserver.c ++ ++vpnserver_LDADD = \ ++ $(top_builddir)/src/Mayaqua/libmayaqua.la \ ++ $(top_builddir)/src/Cedar/libcedar.la diff --git a/package/softether/0002-Create-libsoftether.so-and-dynamically-link.patch b/package/softether/0002-Create-libsoftether.so-and-dynamically-link.patch new file mode 100644 index 00000000..1fdf1187 --- /dev/null +++ b/package/softether/0002-Create-libsoftether.so-and-dynamically-link.patch @@ -0,0 +1,133 @@ +From 75625af541fd128f51079d0ffe5ef24645b8f421 Mon Sep 17 00:00:00 2001 +From: Darik Horn +Date: Sun, 13 Apr 2014 12:51:15 -0400 +Subject: [PATCH] Create libsoftether.so and dynamically link the userland. + +Sharing object code between vpnbridge, vpnclient, vpnserver, and vpncmd +reduces the binary size of SoftEther by 85% and its administrative memory +footprint by 50%. + +[Upstream commit https://github.com/dajhorn/SoftEtherVPN/commit/75625af541fd128f51079d0ffe5ef24645b8f421] +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 1 + + src/Makefile.am | 7 +++++-- + src/libsoftether/Makefile.am | 34 ++++++++++++++++++++++++++++++++++ + src/vpnbridge/Makefile.am | 3 +-- + src/vpnclient/Makefile.am | 3 +-- + src/vpncmd/Makefile.am | 3 +-- + src/vpnserver/Makefile.am | 3 +-- + 7 files changed, 44 insertions(+), 10 deletions(-) + create mode 100644 src/libsoftether/Makefile.am + +diff --git a/configure.ac b/configure.ac +index 4a3fc2ba..94639c44 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -30,6 +30,7 @@ AC_CONFIG_FILES([ + src/Mayaqua/Makefile + src/Cedar/Makefile + src/hamcorebuilder/Makefile ++ src/libsoftether/Makefile + src/bin/hamcore/Makefile + src/vpnserver/Makefile + src/vpnclient/Makefile +diff --git a/src/Makefile.am b/src/Makefile.am +index dc745426..1d041d47 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -22,5 +22,8 @@ SUBDIRS = Mayaqua Cedar + # This is a nodist helper. + SUBDIRS += hamcorebuilder + +-# These are final build products. +-SUBDIRS += bin/hamcore vpnserver vpnclient vpnbridge vpncmd ++# These are shared components. ++SUBDIRS += libsoftether bin/hamcore ++ ++# These are the final build products. ++SUBDIRS += vpnserver vpnclient vpnbridge vpncmd +diff --git a/src/libsoftether/Makefile.am b/src/libsoftether/Makefile.am +new file mode 100644 +index 00000000..601920d9 +--- /dev/null ++++ b/src/libsoftether/Makefile.am +@@ -0,0 +1,34 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++include $(top_srcdir)/autotools/softether.am ++ ++lib_LTLIBRARIES = \ ++ libsoftether.la ++ ++libsoftether_la_SOURCES = ++ ++libsoftether_la_LDFLAGS = \ ++ -avoid-version ++ ++libsoftether_la_LIBTOOLFLAGS = \ ++ --tag=disable-static ++ ++libsoftether_la_LIBADD = \ ++ $(top_builddir)/src/Mayaqua/libmayaqua.la \ ++ $(top_builddir)/src/Cedar/libcedar.la +diff --git a/src/vpnbridge/Makefile.am b/src/vpnbridge/Makefile.am +index 35fe043d..fb91dd2d 100644 +--- a/src/vpnbridge/Makefile.am ++++ b/src/vpnbridge/Makefile.am +@@ -25,5 +25,4 @@ vpnbridge_SOURCES = \ + vpnbridge.c + + vpnbridge_LDADD = \ +- $(top_builddir)/src/Mayaqua/libmayaqua.la \ +- $(top_builddir)/src/Cedar/libcedar.la ++ $(top_builddir)/src/libsoftether/libsoftether.la +diff --git a/src/vpnclient/Makefile.am b/src/vpnclient/Makefile.am +index 1aa55330..c225c416 100644 +--- a/src/vpnclient/Makefile.am ++++ b/src/vpnclient/Makefile.am +@@ -25,5 +25,4 @@ vpnclient_SOURCES = \ + vpncsvc.c + + vpnclient_LDADD = \ +- $(top_builddir)/src/Mayaqua/libmayaqua.la \ +- $(top_builddir)/src/Cedar/libcedar.la ++ $(top_builddir)/src/libsoftether/libsoftether.la +diff --git a/src/vpncmd/Makefile.am b/src/vpncmd/Makefile.am +index d8042aa2..271affb0 100644 +--- a/src/vpncmd/Makefile.am ++++ b/src/vpncmd/Makefile.am +@@ -25,5 +25,4 @@ vpncmd_SOURCES = \ + vpncmd.c + + vpncmd_LDADD = \ +- $(top_builddir)/src/Mayaqua/libmayaqua.la \ +- $(top_builddir)/src/Cedar/libcedar.la ++ $(top_builddir)/src/libsoftether/libsoftether.la +diff --git a/src/vpnserver/Makefile.am b/src/vpnserver/Makefile.am +index c1c33570..1f7b7f98 100644 +--- a/src/vpnserver/Makefile.am ++++ b/src/vpnserver/Makefile.am +@@ -25,5 +25,4 @@ vpnserver_SOURCES = \ + vpnserver.c + + vpnserver_LDADD = \ +- $(top_builddir)/src/Mayaqua/libmayaqua.la \ +- $(top_builddir)/src/Cedar/libcedar.la ++ $(top_builddir)/src/libsoftether/libsoftether.la diff --git a/package/softether/0003-use-fhs-install-directories.patch b/package/softether/0003-use-fhs-install-directories.patch new file mode 100644 index 00000000..ba00d9b6 --- /dev/null +++ b/package/softether/0003-use-fhs-install-directories.patch @@ -0,0 +1,307 @@ +From b9420c3bfc2a8b9d35d0c8e5f6849007c2bc21fa Mon Sep 17 00:00:00 2001 +From: Darik Horn +Date: Mon, 14 Apr 2014 13:22:24 -0400 +Subject: [PATCH] Use FHS installation directories. + +Install to `/usr/sbin`, `/usr/lib`, and `/var/lib` according to the Linux +filesystem hierarchy standard if SoftEther is built through autotools. + +In a managed installation, the FHS stipulates that the application must +accomodate a read-only installation path. This requires a new `GetStateDir` +function that substitues `GetExeDir` in some parts of the code. + +Taken from Github at +https://github.com/dajhorn/SoftEtherVPN/commit/b9420c3bfc2a8b9d35d0c8e5f6849007c2bc21fa. + +Signed-off-by: Bernd Kuhls +Signed-off-by: Thomas Petazzoni + +[Updated for 4.28 build 9669 beta - src/Mayaqua/Encrypt.c dropped IsXRevoked() +Signed-off-by: Matthew Weber +--- + autotools/softether.am | 1 + + src/Cedar/Admin.c | 2 +- + src/Cedar/Command.c | 6 +++++- + src/Cedar/Logging.c | 2 +- + src/Cedar/Server.c | 4 ++-- + src/Mayaqua/FileIO.c | 39 ++++++++++++++++++++++++++++++++++++--- + src/Mayaqua/FileIO.h | 2 ++ + src/Mayaqua/Mayaqua.c | 4 ++++ + src/Mayaqua/Table.c | 6 +++++- + src/Mayaqua/Unix.c | 6 +++--- + src/bin/hamcore/Makefile.am | 8 ++++++-- + 11 files changed, 66 insertions(+), 14 deletions(-) + +Index: b/autotools/softether.am +=================================================================== +--- a/autotools/softether.am ++++ b/autotools/softether.am +@@ -27,6 +27,7 @@ + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/Mayaqua \ + -I$(top_srcdir)/src/Cedar \ ++ -DSTATE_DIR='"@localstatedir@/lib/softether"' \ + -DUNIX \ + -DUNIX_LINUX \ + -D_REENTRANT \ +Index: b/src/Cedar/Admin.c +=================================================================== +--- a/src/Cedar/Admin.c ++++ b/src/Cedar/Admin.c +@@ -10334,7 +10334,7 @@ + + Zero(t, sizeof(RPC_READ_LOG_FILE)); + +- GetExeDir(exe_dir, sizeof(exe_dir)); ++ GetStateDir(exe_dir, sizeof(exe_dir)); + Format(full_path, sizeof(full_path), "%s/%s", exe_dir, filepath); + + // Read file +Index: b/src/Cedar/Command.c +=================================================================== +--- a/src/Cedar/Command.c ++++ b/src/Cedar/Command.c +@@ -527,7 +527,7 @@ + UINT i; + + GetExeName(exe, sizeof(exe)); +- GetExeDir(exe_dir, sizeof(exe_dir)); ++ GetStateDir(exe_dir, sizeof(exe_dir)); + + ok = false; + dirs = EnumDir(exe_dir); +@@ -552,7 +552,11 @@ + UCHAR *buf; + IO *io; + #ifndef OS_WIN32 ++#ifdef STATE_DIR ++ wchar_t *filename = L"" STATE_DIR L"/vpn_checker_tmp"; ++#else + wchar_t *filename = L"/tmp/vpn_checker_tmp"; ++#endif + #else // OS_WIN32 + wchar_t filename[MAX_PATH]; + CombinePathW(filename, sizeof(filename), MsGetMyTempDirW(), L"vpn_checker_tmp"); +Index: b/src/Cedar/Logging.c +=================================================================== +--- a/src/Cedar/Logging.c ++++ b/src/Cedar/Logging.c +@@ -508,7 +508,7 @@ + + e = ZeroMalloc(sizeof(ERASER)); + +- GetExeDir(dir, sizeof(dir)); ++ GetStateDir(dir, sizeof(dir)); + + e->Log = log; + e->MinFreeSpace = min_size; +Index: b/src/Cedar/Server.c +=================================================================== +--- a/src/Cedar/Server.c ++++ b/src/Cedar/Server.c +@@ -1060,7 +1060,7 @@ + hubname = NULL; + } + +- GetExeDir(exe_dir, sizeof(exe_dir)); ++ GetStateDir(exe_dir, sizeof(exe_dir)); + + // Enumerate in the server_log + if (hubname == NULL) +@@ -1134,7 +1134,7 @@ + return; + } + +- GetExeDir(exe_dir, sizeof(exe_dir)); ++ GetStateDir(exe_dir, sizeof(exe_dir)); + Format(dir_full_path, sizeof(dir_full_path), "%s/%s", exe_dir, dirname); + + dir = EnumDir(dir_full_path); +Index: b/src/Mayaqua/FileIO.c +=================================================================== +--- a/src/Mayaqua/FileIO.c ++++ b/src/Mayaqua/FileIO.c +@@ -122,8 +122,14 @@ + #include + #include + ++#ifdef STATE_DIR ++static char exe_file_name[MAX_SIZE] = STATE_DIR "/a.out"; ++static wchar_t exe_file_name_w[MAX_SIZE] = L"" STATE_DIR L"/a.out"; ++#else + static char exe_file_name[MAX_SIZE] = "/tmp/a.out"; + static wchar_t exe_file_name_w[MAX_SIZE] = L"/tmp/a.out"; ++#endif ++ + static LIST *hamcore = NULL; + static IO *hamcore_io = NULL; + +@@ -1038,7 +1044,7 @@ + } + + // If the file exist in hamcore/ directory on the local disk, read it +- GetExeDirW(exe_dir, sizeof(exe_dir)); ++ GetStateDirW(exe_dir, sizeof(exe_dir)); + + UniFormat(tmp, sizeof(tmp), L"%s/%S/%S", exe_dir, HAMCORE_DIR_NAME, filename); + +@@ -1154,7 +1160,7 @@ + return; + } + +- GetExeDirW(exe_dir, sizeof(exe_dir)); ++ GetStateDirW(exe_dir, sizeof(exe_dir)); + UniFormat(tmp, sizeof(tmp), L"%s/%S", exe_dir, HAMCORE_FILE_NAME); + + UniFormat(tmp2, sizeof(tmp2), L"%s/%S", exe_dir, HAMCORE_FILE_NAME_2); +@@ -1438,6 +1444,33 @@ + GetDirNameFromFilePathW(name, size, exe_file_name_w); + } + ++void GetStateDir(char *name, UINT size) ++{ ++ // Validate arguments ++ if (name == NULL) ++ { ++ return; ++ } ++#ifdef STATE_DIR ++ StrCpy(name, size, STATE_DIR); ++#else ++ GetExeDir(name, size) ++#endif ++} ++void GetStateDirW(wchar_t *name, UINT size) ++{ ++ // Validate arguments ++ if (name == NULL) ++ { ++ return; ++ } ++#ifdef STATE_DIR ++ UniStrCpy(name, size, L"" STATE_DIR L""); ++#else ++ GetExeDirW(name, size) ++#endif ++} ++ + // Get the EXE file name + void GetExeName(char *name, UINT size) + { +@@ -2389,7 +2422,7 @@ + else + { + wchar_t dir[MAX_SIZE]; +- GetExeDirW(dir, sizeof(dir)); ++ GetStateDirW(dir, sizeof(dir)); + ConbinePathW(dst, size, dir, &src[1]); + } + } +Index: b/src/Mayaqua/FileIO.h +=================================================================== +--- a/src/Mayaqua/FileIO.h ++++ b/src/Mayaqua/FileIO.h +@@ -349,6 +349,8 @@ + void GetExeNameW(wchar_t *name, UINT size); + void GetExeDir(char *name, UINT size); + void GetExeDirW(wchar_t *name, UINT size); ++void GetStateDir(char *name, UINT size); ++void GetStateDirW(wchar_t *name, UINT size); + void BuildHamcore(char *dst_filename, char *src_dir, bool unix_only); + int CompareHamcore(void *p1, void *p2); + void InitHamcore(); +Index: b/src/Mayaqua/Mayaqua.c +=================================================================== +--- a/src/Mayaqua/Mayaqua.c ++++ b/src/Mayaqua/Mayaqua.c +@@ -611,7 +611,11 @@ + _exit(0); + } + ++#ifndef STATE_DIR ++ // This check causes hamcorebuilder to fail in an unprivileged ++ // environment, and is unnecessary for a managed installation. + CheckUnixTempDir(); ++#endif + + // Initialization of Probe + InitProbe(); +Index: b/src/Mayaqua/Table.c +=================================================================== +--- a/src/Mayaqua/Table.c ++++ b/src/Mayaqua/Table.c +@@ -1191,7 +1191,7 @@ + return; + } + +- GetExeDirW(exe, sizeof(exe)); ++ GetStateDirW(exe, sizeof(exe)); + UniStrCpy(hashtemp, sizeof(hashtemp), strfilename); + BinToStrW(tmp, sizeof(tmp), filehash, MD5_SIZE); + UniStrCat(hashtemp, sizeof(hashtemp), tmp); +@@ -1204,7 +1204,11 @@ + UniStrLower(tmp); + + #ifndef OS_WIN32 ++#ifdef STATE_DIR ++ UniStrCpy(exe, sizeof(exe), L"" STATE_DIR L""); ++#else + UniStrCpy(exe, sizeof(exe), L"/tmp"); ++#endif + #else // OS_WIN32 + StrToUni(exe, sizeof(exe), MsGetTempDir()); + #endif // OS_WIN32 +Index: b/src/Mayaqua/Unix.c +=================================================================== +--- a/src/Mayaqua/Unix.c ++++ b/src/Mayaqua/Unix.c +@@ -928,7 +928,7 @@ + StrCpy(tmp, sizeof(tmp), instance_name); + } + +- GetExeDir(dir, sizeof(dir)); ++ GetStateDir(dir, sizeof(dir)); + + // File name generation + Format(name, sizeof(name), "%s/.%s", dir, tmp); +@@ -2260,7 +2260,7 @@ + return; + } + +- GetExeDir(dir, sizeof(dir)); ++ GetStateDir(dir, sizeof(dir)); + + GetExeName(exe_name, sizeof(exe_name)); + StrCat(exe_name, sizeof(exe_name), ":pid_hash"); +@@ -2305,7 +2305,7 @@ + return; + } + +- GetExeDir(dir, sizeof(dir)); ++ GetStateDir(dir, sizeof(dir)); + + GetExeName(exe_name, sizeof(exe_name)); + StrCat(exe_name, sizeof(exe_name), ":pid_hash"); +Index: b/src/bin/hamcore/Makefile.am +=================================================================== +--- a/src/bin/hamcore/Makefile.am ++++ b/src/bin/hamcore/Makefile.am +@@ -18,12 +18,16 @@ + + include $(top_srcdir)/autotools/softether.am + +-# This is required to use a custom build rule with -Wall and -Werror enabled. ++# An empty EXEEXT required for overrides with -Wall and -Werror enabled. + AUTOMAKE_OPTIONS = -Wno-override + EXEEXT = ++ + HAMCOREBUILDER = $(top_builddir)/src/hamcorebuilder/hamcorebuilder + +-sbin_PROGRAMS = hamcore.se2 ++noinst_PROGRAMS = hamcore.se2 + + hamcore.se2$(EXEEXT): $(HAMCOREBUILDER) + $(HAMCOREBUILDER) $(top_srcdir)/src/bin/hamcore $@ ++ ++install-exec-local: hamcore.se2$(EXEEXT) ++ $(INSTALL_DATA) -D hamcore.se2$(EXEEXT) $(DESTDIR)$(localstatedir)/lib/softether/hamcore.se2 diff --git a/package/softether/0004-create-non-forking-softetherd-for-upstart-and-systemd.patch b/package/softether/0004-create-non-forking-softetherd-for-upstart-and-systemd.patch new file mode 100644 index 00000000..72913b0b --- /dev/null +++ b/package/softether/0004-create-non-forking-softetherd-for-upstart-and-systemd.patch @@ -0,0 +1,218 @@ +From 64dd780905ae339a0a57e4aba541799016816a1a Mon Sep 17 00:00:00 2001 +From: Darik Horn +Date: Fri, 3 Oct 2014 13:30:24 -0400 +Subject: [PATCH] Create a non-forking softetherd for upstart and systemd. + +Implement a daemon that expects to be invoked by a new-style init like upstart +or systemd as: + + /usr/sbin/softetherd [vpnbridge|vpnclient|vpnserver] + +Alternatively, if the command line argument is empty, then use the +`SOFTETHER_MODE` environment variable instead. + +Conflicts: + src/bin/hamcore/strtable_en.stb + +Taken from Github at +https://github.com/dajhorn/SoftEtherVPN/commit/64dd780905ae339a0a57e4aba541799016816a1a. + +Signed-off-by: Bernd Kuhls +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 1 + + src/Makefile.am | 3 ++ + src/bin/hamcore/strtable_en.stb | 1 + + src/softetherd/Makefile.am | 28 ++++++++++ + src/softetherd/softetherd.c | 114 ++++++++++++++++++++++++++++++++++++++++ + 5 files changed, 147 insertions(+) + create mode 100644 src/softetherd/Makefile.am + create mode 100644 src/softetherd/softetherd.c + +Index: b/configure.ac +=================================================================== +--- a/configure.ac ++++ b/configure.ac +@@ -36,6 +36,7 @@ + src/vpnclient/Makefile + src/vpnbridge/Makefile + src/vpncmd/Makefile ++ src/softetherd/Makefile + ]) + + +Index: b/src/Makefile.am +=================================================================== +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -27,3 +27,6 @@ + + # These are the final build products. + SUBDIRS += vpnserver vpnclient vpnbridge vpncmd ++ ++# This is a daemon for upstart and systemd. ++SUBDIRS += softetherd +Index: b/src/bin/hamcore/strtable_en.stb +=================================================================== +--- a/src/bin/hamcore/strtable_en.stb ++++ b/src/bin/hamcore/strtable_en.stb +@@ -1062,6 +1062,7 @@ + + + # Concerning services (UNIX) ++UNIX_DAEMON_HELP SoftEther VPN non-forking daemon for upstart and systemd.\nCommand Usage:\n %S vpnbridge - Enable bridging features.\n %S vpnclient - Enable client features.\n %S vpnserver - Enable all features.\nThe parameter can be set in the SOFTETHER_MODE environment variable.\n\n + UNIX_SVC_HELP %S service program\nCopyright (c) SoftEther VPN Project. All Rights Reserved.\n\n%S command usage:\n %S start - Start the %S service.\n %S stop - Stop the %S service if the service has been already started.\n\n + UNIX_SVC_STARTED The %S service has been started.\n + UNIX_SVC_STOPPING Stopping the %S service ...\n +Index: b/src/softetherd/Makefile.am +=================================================================== +--- /dev/null ++++ b/src/softetherd/Makefile.am +@@ -0,0 +1,28 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++include $(top_srcdir)/autotools/softether.am ++ ++sbin_PROGRAMS = \ ++ softetherd ++ ++softetherd_SOURCES = \ ++ softetherd.c ++ ++softetherd_LDADD = \ ++ $(top_builddir)/src/libsoftether/libsoftether.la +Index: b/src/softetherd/softetherd.c +=================================================================== +--- /dev/null ++++ b/src/softetherd/softetherd.c +@@ -0,0 +1,114 @@ ++// SoftEther VPN daemon for upstart and systemd. ++// ++// Copyright 2014 Darik Horn ++// ++// This file is part of SoftEther. ++// ++// SoftEther 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. ++// ++// SoftEther 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 ++// SoftEther. If not, see . ++ ++ ++#include ++ ++#define VPN_EXE ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++void DaemonUsage(char *name) ++{ ++ UniPrint(_UU("UNIX_DAEMON_HELP"), name, name, name); ++} ++ ++ ++void DaemonStartProcess() ++{ ++ // This environment variable is exported by upstart. ++ char *upstart_job = getenv("UPSTART_JOB"); ++ ++ InitCedar(); ++ StInit(); ++ StStartServer(false); ++ ++ // Notify upstart that softetherd is ready. ++ if (upstart_job != NULL) ++ { ++ unsetenv("UPSTART_JOB"); ++ raise(SIGSTOP); ++ } ++} ++ ++ ++void DaemonStopProcess() ++{ ++ StStopServer(); ++ StFree(); ++ FreeCedar(); ++} ++ ++ ++int main(int argc, char *argv[]) ++{ ++ // This environment variable is sourced and exported by the init process from /etc/default/softether. ++ char *softether_mode = getenv("SOFTETHER_MODE"); ++ ++ InitMayaqua(false, false, argc, argv); ++ ++ // Check for an explicit invocation. (eg: "/usr/sbin/softetherd vpnserver") ++ if (argc >= 2) ++ { ++ if (StrCmpi(argv[1], "vpnbridge") == 0 ++ || StrCmpi(argv[1], "vpnclient") == 0 ++ || StrCmpi(argv[1], "vpnserver") == 0) ++ { ++ UnixExecService(argv[1], DaemonStartProcess, DaemonStopProcess); ++ FreeMayaqua(); ++ return 0; ++ } ++ ++ // Exit status codes 150..199 are reserved for the application by the LSB. ++ fprintf(stderr, "Error: Unrecognized parameter: %s\n", argv[1]); ++ fflush(stderr); ++ FreeMayaqua(); ++ return 150; ++ } ++ ++ // Alternatively, use the environment variable. ++ if (softether_mode != NULL) ++ { ++ if (StrCmpi(softether_mode, "vpnbridge") == 0 ++ || StrCmpi(softether_mode, "vpnclient") == 0 ++ || StrCmpi(softether_mode, "vpnserver") == 0) ++ { ++ UnixExecService(softether_mode, DaemonStartProcess, DaemonStopProcess); ++ FreeMayaqua(); ++ return 0; ++ } ++ ++ // Exit status codes 150..199 are reserved for the application by the LSB. ++ fprintf(stderr, "Error: Unrecognized environment variable: SOFTETHER_MODE=%s\n", softether_mode); ++ fflush(stderr); ++ FreeMayaqua(); ++ return 151; ++ } ++ ++ DaemonUsage(argv[0]); ++ FreeMayaqua(); ++ return 3; ++} diff --git a/package/softether/0005-change-GetExeDir-to-GetStateDir-in-Cedar-and-Mayaqua.patch b/package/softether/0005-change-GetExeDir-to-GetStateDir-in-Cedar-and-Mayaqua.patch new file mode 100644 index 00000000..6cb4e728 --- /dev/null +++ b/package/softether/0005-change-GetExeDir-to-GetStateDir-in-Cedar-and-Mayaqua.patch @@ -0,0 +1,90 @@ +From d68db9f2cee975aad5e07b44485615f3d842ab45 Mon Sep 17 00:00:00 2001 +From: Darik Horn +Date: Fri, 11 Jul 2014 16:17:18 -0400 +Subject: [PATCH] Change GetExeDir to GetStateDir in Cedar and Mayaqua. + +Resolve this AppArmor error by ensuring that certificate files files are +written into /var/lib/softether instead of the current working directory: + + Profile: /usr/sbin/softetherd + Operation: mkdir + Name: /usr/sbin/chain_certs + Denied: c + Logfile: /var/log/kern.log + + type=1400 audit: apparmor="DENIED" operation="mkdir" profile="/usr/sbin/softetherd" name="/usr/sbin/chain_certs/" pid=36448 comm="softetherd" requested_mask="c" denied_mask="c" fsuid=0 ouid=0 + +Taken from Github +https://github.com/dajhorn/SoftEtherVPN/commit/d68db9f2cee975aad5e07b44485615f3d842ab45. + +Signed-off-by: Bernd Kuhls +Signed-off-by: Thomas Petazzoni +--- + src/Cedar/Protocol.c | 12 ++++++------ + src/Mayaqua/Network.c | 6 +++--- + 2 files changed, 9 insertions(+), 9 deletions(-) + +Index: b/src/Cedar/Protocol.c +=================================================================== +--- a/src/Cedar/Protocol.c ++++ b/src/Cedar/Protocol.c +@@ -161,10 +161,10 @@ + UINT i; + DIRLIST *dir; + wchar_t dirname[MAX_SIZE]; +- wchar_t exedir[MAX_SIZE]; ++ wchar_t statedir[MAX_SIZE]; + +- GetExeDirW(exedir, sizeof(exedir)); +- CombinePathW(dirname, sizeof(dirname), exedir, L"chain_certs"); ++ GetStateDirW(statedir, sizeof(statedir)); ++ CombinePathW(dirname, sizeof(dirname), statedir, L"chain_certs"); + MakeDirExW(dirname); + + if (auto_save) +@@ -461,7 +461,7 @@ + void AddAllChainCertsToCertList(LIST *o) + { + wchar_t dirname[MAX_SIZE]; +- wchar_t exedir[MAX_SIZE]; ++ wchar_t statedir[MAX_SIZE]; + DIRLIST *dir; + // Validate arguments + if (o == NULL) +@@ -469,9 +469,9 @@ + return; + } + +- GetExeDirW(exedir, sizeof(exedir)); ++ GetStateDirW(statedir, sizeof(statedir)); + +- CombinePathW(dirname, sizeof(dirname), exedir, L"chain_certs"); ++ CombinePathW(dirname, sizeof(dirname), statedir, L"chain_certs"); + + MakeDirExW(dirname); + +Index: b/src/Mayaqua/Network.c +=================================================================== +--- a/src/Mayaqua/Network.c ++++ b/src/Mayaqua/Network.c +@@ -12588,7 +12588,7 @@ + void AddChainSslCertOnDirectory(struct ssl_ctx_st *ctx) + { + wchar_t dirname[MAX_SIZE]; +- wchar_t exedir[MAX_SIZE]; ++ wchar_t statedir[MAX_SIZE]; + wchar_t txtname[MAX_SIZE]; + DIRLIST *dir; + LIST *o; +@@ -12602,9 +12602,9 @@ + + o = NewListFast(NULL); + +- GetExeDirW(exedir, sizeof(exedir)); ++ GetStateDirW(statedir, sizeof(statedir)); + +- CombinePathW(dirname, sizeof(dirname), exedir, L"chain_certs"); ++ CombinePathW(dirname, sizeof(dirname), statedir, L"chain_certs"); + + MakeDirExW(dirname); + diff --git a/package/softether/0006-cross-compile.patch b/package/softether/0006-cross-compile.patch new file mode 100644 index 00000000..0b31eca6 --- /dev/null +++ b/package/softether/0006-cross-compile.patch @@ -0,0 +1,30 @@ +Host version of hamcorebuilder is needed during cross-compile + +Signed-off-by: Bernd Kuhls + +diff -uNr SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824.org/src/bin/hamcore/Makefile.am SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824/src/bin/hamcore/Makefile.am +--- SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824.org/src/bin/hamcore/Makefile.am 2014-09-27 12:56:53.108725793 +0200 ++++ SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824/src/bin/hamcore/Makefile.am 2014-09-27 12:57:50.280009025 +0200 +@@ -26,8 +26,8 @@ + + noinst_PROGRAMS = hamcore.se2 + +-hamcore.se2$(EXEEXT): $(HAMCOREBUILDER) +- $(HAMCOREBUILDER) $(top_srcdir)/src/bin/hamcore $@ ++hamcore.se2$(EXEEXT): ++ hamcorebuilder $(top_srcdir)/src/bin/hamcore $@ + + install-exec-local: hamcore.se2$(EXEEXT) + $(INSTALL_DATA) -D hamcore.se2$(EXEEXT) $(DESTDIR)$(localstatedir)/lib/softether/hamcore.se2 +diff -uNr SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824.org/src/Makefile.am SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824/src/Makefile.am +--- SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824.org/src/Makefile.am 2014-09-27 12:56:53.136726809 +0200 ++++ SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824/src/Makefile.am 2014-09-27 12:58:12.959723109 +0200 +@@ -20,7 +20,7 @@ + SUBDIRS = Mayaqua Cedar + + # This is a nodist helper. +-SUBDIRS += hamcorebuilder ++# SUBDIRS += hamcorebuilder + + # These are shared components. + SUBDIRS += libsoftether bin/hamcore diff --git a/package/softether/0007-iconv.patch b/package/softether/0007-iconv.patch new file mode 100644 index 00000000..09d7777e --- /dev/null +++ b/package/softether/0007-iconv.patch @@ -0,0 +1,28 @@ +Fix linking with libiconv + +Inspired by https://github.com/el1n/OpenWRT-package-softether/blob/4cb1cd9073a76edf34c512e587069626e02e2404/patches/120-fix-iconv-headers-common.patch + +Signed-off-by: Bernd Kuhls + +Index: b/src/Mayaqua/Mayaqua.h +=================================================================== +--- a/src/Mayaqua/Mayaqua.h ++++ b/src/Mayaqua/Mayaqua.h +@@ -282,17 +282,7 @@ + #include + #endif // MAYAQUA_SUPPORTS_GETIFADDRS + +-#ifdef UNIX_LINUX +-typedef void *iconv_t; +-iconv_t iconv_open (__const char *__tocode, __const char *__fromcode); +-size_t iconv (iconv_t __cd, char **__restrict __inbuf, +- size_t *__restrict __inbytesleft, +- char **__restrict __outbuf, +- size_t *__restrict __outbytesleft); +-int iconv_close (iconv_t __cd); +-#else // UNIX_LINUX + #include +-#endif // UNIX_LINUX + + + diff --git a/package/softether/0008-librt.patch b/package/softether/0008-librt.patch new file mode 100644 index 00000000..661c960a --- /dev/null +++ b/package/softether/0008-librt.patch @@ -0,0 +1,33 @@ +Downloaded from +https://github.com/dajhorn/SoftEtherVPN/commit/9a8538a6f2287fe8bebd0a7185de408e31e5a7df + +Fixes +http://autobuild.buildroot.net/results/48f/48f778a891e0bf6a60ed2e4bec057c338ec25ec9/ +and many others + +Signed-off-by: Bernd Kuhls + + +From 9a8538a6f2287fe8bebd0a7185de408e31e5a7df Mon Sep 17 00:00:00 2001 +From: Darik Horn +Date: Thu, 5 Jun 2014 21:02:02 -0400 +Subject: [PATCH] Add an explicit autoconf check for librt. + +The realtime extensions library is not automatically linked on Debian ARM +platforms, so do an AC_CHECK_LIB for it in the configuration macro. +--- + configure.ac | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/configure.ac b/configure.ac +index 165623a..6f85393 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -60,6 +60,7 @@ CC="$PTHREAD_CC" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + ++AC_CHECK_LIB([rt],[clock_gettime]) + + AX_CHECK_OPENSSL([ + AC_SUBST(OPENSSL_LIBS) diff --git a/package/softether/0009-uclibc-ai-addrconfig.patch b/package/softether/0009-uclibc-ai-addrconfig.patch new file mode 100644 index 00000000..7d8f1c67 --- /dev/null +++ b/package/softether/0009-uclibc-ai-addrconfig.patch @@ -0,0 +1,27 @@ +Only enable getifaddrs support when available + +On uClibc, the ifaddrs.h support is optional. While the default +Buildroot uClibc configuration has it enabled, some external +toolchains may not. Therefore this patch detects that and adjusts +softether usage of ifaddrs accordingly. + +Based on an initial patch from Bernd Kuhls. + +Signed-off-by: Thomas Petazzoni + +Index: b/src/Mayaqua/Mayaqua.h +=================================================================== +--- a/src/Mayaqua/Mayaqua.h ++++ b/src/Mayaqua/Mayaqua.h +@@ -235,9 +235,11 @@ + #ifdef OS_UNIX + #ifndef UNIX_SOLARIS + #ifndef CPU_SH4 ++#if !defined(__UCLIBC__) || defined(__UCLIBC_SUPPORT_AI_ADDRCONFIG__) + // Getifaddrs system call is supported on UNIX other than Solaris. + // However, it is not supported also by the Linux on SH4 CPU + #define MAYAQUA_SUPPORTS_GETIFADDRS ++#endif // !UCLIBC || UCLIBC_SUPPORT_AI_ADDRCONFIG + #endif // CPU_SH4 + #endif // UNIX_SOLARIS + #endif // OS_UNIX diff --git a/package/softether/Config.in b/package/softether/Config.in new file mode 100644 index 00000000..f8933cdc --- /dev/null +++ b/package/softether/Config.in @@ -0,0 +1,33 @@ +config BR2_PACKAGE_SOFTETHER + bool "softether" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES + select BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4 + select BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 + select BR2_PACKAGE_READLINE + help + The SoftEther Server is a fully integrated implementation of + the SSTP, L2TP, L2TPv3, OpenVPN, and IPSec virtual private + networking protocols on Linux and several other + platforms. It is generally compatible with other + implementations by Apple, Cisco, Juniper, Microsoft, et al. + + Convenient Layer-2 and Layer-3 bridging capabilities can + connect several branch offices into a single broadcast or + routing domain, even behind a NAT or without a static IPv4 + address. + + In addition to supporting most VPN protocols, the SoftEther + Client can penetrate hardened firewalls and captured + gateways through HTTPS, DNS, and ICMP exfiltration. + + http://www.softether.org + +comment "softether needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !(BR2_USE_WCHAR && BR2_TOOLCHAIN_HAS_THREADS) diff --git a/package/softether/softether.hash b/package/softether/softether.hash new file mode 100644 index 00000000..41bd8453 --- /dev/null +++ b/package/softether/softether.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 f579fa938f6d5d0622f23b3c163b3de5dc171e30175e44511bf269b3bb9fb1fc softether-4.30-9700-beta.tar.gz +sha256 5da6241ddb987c4543bf1cbba6b40a3cd3ecb624dbd4a63daf04440911656bde LICENSE diff --git a/package/softether/softether.mk b/package/softether/softether.mk new file mode 100644 index 00000000..2dbe7edb --- /dev/null +++ b/package/softether/softether.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# softether +# +################################################################################ + +SOFTETHER_VERSION = 4.30-9700-beta +SOFTETHER_SITE = $(call github,SoftEtherVPN,SoftEtherVPN_stable,v$(SOFTETHER_VERSION)) +SOFTETHER_LICENSE = Apache-2.0 +SOFTETHER_LICENSE_FILES = LICENSE +SOFTETHER_DEPENDENCIES = host-pkgconf host-softether libopenssl readline +SOFTETHER_AUTORECONF = YES + +ifeq ($(BR2_ENABLE_LOCALE),) +SOFTETHER_DEPENDENCIES += libiconv +SOFTETHER_CONF_ENV = LIBS+=" -liconv" +endif + +SOFTETHER_CONF_OPTS = --with-zlib="$(STAGING_DIR)/usr" + +# host-libiconv does not exist, therefore we need this extra line +HOST_SOFTETHER_DEPENDENCIES = host-pkgconf host-libopenssl 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 + $(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 + $(INSTALL) -m 0755 $(@D)/src/hamcorebuilder/hamcorebuilder $(HOST_DIR)/bin/hamcorebuilder +endef + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/softhsm2/Config.in b/package/softhsm2/Config.in new file mode 100644 index 00000000..ab409a2c --- /dev/null +++ b/package/softhsm2/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_SOFTHSM2 + bool "softhsm2" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS # dlopen() + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES + select BR2_PACKAGE_LIBOPENSSL_ENGINES + help + SoftHSM is an implementation of a cryptographic store + accessible through a PKCS#11 interface. You can use it + to explore PKCS#11 without having a Hardware Security + Module. + + https://www.opendnssec.org/softhsm + +comment "softhsm2 needs a toolchain w/ C++, threads, gcc >= 4.8 and dynamic library support" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 diff --git a/package/softhsm2/softhsm2.hash b/package/softhsm2/softhsm2.hash new file mode 100644 index 00000000..f59f0bf0 --- /dev/null +++ b/package/softhsm2/softhsm2.hash @@ -0,0 +1,4 @@ +# From https://www.opendnssec.org/2020/04/1602/ +sha256 61249473054bcd1811519ef9a989a880a7bdcc36d317c9c25457fc614df475f2 softhsm-2.6.1.tar.gz +# Locally computed +sha256 230cab7102816e99f7ce03ef476352fcad09d742fcbc6580d44393db6280b64c LICENSE diff --git a/package/softhsm2/softhsm2.mk b/package/softhsm2/softhsm2.mk new file mode 100644 index 00000000..5e37e42d --- /dev/null +++ b/package/softhsm2/softhsm2.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# softhsm2 +# +################################################################################ + +SOFTHSM2_VERSION = 2.6.1 +SOFTHSM2_SOURCE = softhsm-$(SOFTHSM2_VERSION).tar.gz +SOFTHSM2_SITE = https://dist.opendnssec.org/source +SOFTHSM2_LICENSE = BSD-2-Clause +SOFTHSM2_LICENSE_FILES = LICENSE +SOFTHSM2_DEPENDENCIES = openssl +SOFTHSM2_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_P11_KIT),y) +SOFTHSM2_CONF_OPTS += \ + --enable-p11-kit \ + --with-p11-kit=/usr/share/p11-kit/modules +SOFTHSM2_DEPENDENCIES += p11-kit +else +SOFTHSM2_CONF_OPTS += --disable-p11-kit +endif + +$(eval $(autotools-package)) diff --git a/package/solarus/0001-cmake-remove-Werror.patch b/package/solarus/0001-cmake-remove-Werror.patch new file mode 100644 index 00000000..533ac91c --- /dev/null +++ b/package/solarus/0001-cmake-remove-Werror.patch @@ -0,0 +1,26 @@ +From 5f372ba3502369c6501c77650a761300d26f64c0 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Thu, 22 Jun 2017 00:19:56 +0200 +Subject: [PATCH] cmake: remove Werror + +Signed-off-by: Romain Naour +--- + cmake/AddCompilationFlags.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cmake/AddCompilationFlags.cmake b/cmake/AddCompilationFlags.cmake +index 2c105db7f..cb5c5719a 100644 +--- a/cmake/AddCompilationFlags.cmake ++++ b/cmake/AddCompilationFlags.cmake +@@ -25,7 +25,7 @@ endif() + set(CMAKE_CXX_FLAGS_RELEASE "-Wno-error -Wall -Wextra -Wno-unknown-pragmas -Wno-fatal-errors ${CMAKE_CXX_FLAGS_RELEASE} -O3") + + # Be more pedantic in debug mode for developers. +-set(CMAKE_CXX_FLAGS_DEBUG "-Werror -Wall -Wextra -Wno-error=deprecated-declarations -pedantic ${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG") ++set(CMAKE_CXX_FLAGS_DEBUG "-Wno-error -Wall -Wextra -Wno-error=deprecated-declarations -pedantic ${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG") + if(CMAKE_COMPILER_IS_GNUCXX) + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wsuggest-override") + endif() +-- +2.14.5 + diff --git a/package/solarus/0002-Add-a-basic-FindOpenGLES2.cmake.patch b/package/solarus/0002-Add-a-basic-FindOpenGLES2.cmake.patch new file mode 100644 index 00000000..59bf9e8c --- /dev/null +++ b/package/solarus/0002-Add-a-basic-FindOpenGLES2.cmake.patch @@ -0,0 +1,48 @@ +From 2bf0e98f17d92fd86ee61be179e3cebe93f75ea7 Mon Sep 17 00:00:00 2001 +From: Gleb Mazovetskiy +Date: Sun, 3 Jan 2021 12:38:13 +0000 +Subject: [PATCH] Add a basic FindOpenGLES2.cmake + +Fixes #1324 +--- + cmake/modules/FindOpenGLES2.cmake | 28 ++++++++++++++++++++++++++++ + 1 file changed, 28 insertions(+) + create mode 100644 cmake/modules/FindOpenGLES2.cmake + +diff --git a/cmake/modules/FindOpenGLES2.cmake b/cmake/modules/FindOpenGLES2.cmake +new file mode 100644 +index 000000000..70fd5e6f0 +--- /dev/null ++++ b/cmake/modules/FindOpenGLES2.cmake +@@ -0,0 +1,28 @@ ++# Try to find OpenGLES2. Once done this will define: ++# OPENGLES2_FOUND ++# OPENGLES2_INCLUDE_DIRS ++# OPENGLES2_LIBRARIES ++# OPENGLES2_DEFINITIONS ++ ++find_package(PkgConfig QUIET) ++ ++pkg_check_modules(PC_OPENGLES2 glesv2) ++ ++if (PC_OPENGLES2_FOUND) ++ set(OPENGLES2_DEFINITIONS ${PC_OPENGLES2_CFLAGS_OTHER}) ++endif () ++ ++find_path(OPENGLES2_INCLUDE_DIRS NAMES GLES2/gl2.h ++ HINTS ${PC_OPENGLES2_INCLUDEDIR} ${PC_OPENGLES2_INCLUDE_DIRS} ++) ++ ++set(OPENGLES2_NAMES ${OPENGLES2_NAMES} glesv2 GLESv2) ++find_library(OPENGLES2_LIBRARIES NAMES ${OPENGLES2_NAMES} ++ HINTS ${PC_OPENGLES2_LIBDIR} ${PC_OPENGLES2_LIBRARY_DIRS} ++) ++ ++include(FindPackageHandleStandardArgs) ++find_package_handle_standard_args(OpenGLES2 REQUIRED_VARS OPENGLES2_INCLUDE_DIRS OPENGLES2_LIBRARIES ++ FOUND_VAR OPENGLES2_FOUND) ++ ++mark_as_advanced(OPENGLES2_INCLUDE_DIRS OPENGLES2_LIBRARIES) +-- +2.27.0 + diff --git a/package/solarus/Config.in b/package/solarus/Config.in new file mode 100644 index 00000000..bcfa6408 --- /dev/null +++ b/package/solarus/Config.in @@ -0,0 +1,33 @@ +config BR2_PACKAGE_SOLARUS + bool "solarus" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1 + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # openal + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # openal + depends on !BR2_STATIC_LIBS # SDL2 + depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES + select BR2_PACKAGE_GLM + select BR2_PACKAGE_LIBMODPLUG + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_LIBPNG # runtime + select BR2_PACKAGE_LIBVORBIS + select BR2_PACKAGE_OPENAL + select BR2_PACKAGE_PHYSFS + select BR2_PACKAGE_SDL2 + select BR2_PACKAGE_SDL2_IMAGE + select BR2_PACKAGE_SDL2_TTF + help + Solarus is an open-source Zelda-like 2D game engine written + in C++. It can run games scripted in Lua. This engine is used + by our Zelda fangames. Solarus is licensed under GPL v3. + + http://www.solarus-games.org + https://github.com/solarus-games/solarus + +comment "solarus needs OpenGL and a toolchain w/ C++, gcc >= 4.9, NPTL, dynamic library, and luajit or lua 5.1" + depends on !BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1 + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 \ + || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS \ + || !BR2_PACKAGE_HAS_LIBGL diff --git a/package/solarus/solarus.hash b/package/solarus/solarus.hash new file mode 100644 index 00000000..6e1200b1 --- /dev/null +++ b/package/solarus/solarus.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 4b4ac59df8ab63ee2e305cbf48118d6be0cf9665968eb0b06dd1acdf4346516f solarus-v1.6.5.tar.bz2 + +sha256 309875d925041d909bc705473d6c4b7905272aea15c1c2389088c26c161bae1f license.txt diff --git a/package/solarus/solarus.mk b/package/solarus/solarus.mk new file mode 100644 index 00000000..07d9af52 --- /dev/null +++ b/package/solarus/solarus.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# solarus +# +################################################################################ + +SOLARUS_VERSION = 1.6.5 +SOLARUS_SITE = \ + https://gitlab.com/solarus-games/solarus/-/archive/v$(SOLARUS_VERSION) +SOLARUS_SOURCE = solarus-v$(SOLARUS_VERSION).tar.bz2 + +SOLARUS_LICENSE = GPL-3.0 (code), CC-BY-SA-4.0 (Solarus logos and icons), \ + CC-BY-SA-3.0 (GUI icons) +SOLARUS_LICENSE_FILES = license.txt + +# Install libsolarus.so +SOLARUS_INSTALL_STAGING = YES + +SOLARUS_DEPENDENCIES = glm libmodplug libogg libvorbis openal physfs \ + sdl2 sdl2_image sdl2_ttf + +# Disable launcher GUI (requires Qt5) +SOLARUS_CONF_OPTS = \ + -DSOLARUS_GUI=OFF \ + -DSOLARUS_TESTS=OFF + +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +SOLARUS_DEPENDENCIES += libgl +else +SOLARUS_CONF_OPTS += -DSOLARUS_GL_ES=ON +SOLARUS_DEPENDENCIES += libgles +endif + +ifeq ($(BR2_PACKAGE_LUAJIT),y) +SOLARUS_CONF_OPTS += -DSOLARUS_USE_LUAJIT=ON +SOLARUS_DEPENDENCIES += luajit +else +SOLARUS_CONF_OPTS += -DSOLARUS_USE_LUAJIT=OFF +SOLARUS_DEPENDENCIES += lua +endif + +$(eval $(cmake-package)) diff --git a/package/sord/Config.in b/package/sord/Config.in new file mode 100644 index 00000000..91dfb41d --- /dev/null +++ b/package/sord/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_SORD + bool "sord" + select BR2_PACKAGE_SERD + help + Sord is a lightweight C library for storing RDF data in + memory. + + https://drobilla.net/software/sord.html diff --git a/package/sord/sord.hash b/package/sord/sord.hash new file mode 100644 index 00000000..ec5c88a4 --- /dev/null +++ b/package/sord/sord.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking signature +# https://download.drobilla.net/sord-0.16.12.tar.xz.sig +sha256 fde269893cb24b2ab7b75708d7a349c6e760c47a0d967aeca5b1c651294ff9f2 sord-0.16.12.tar.xz +sha256 e06562d6bcf0341b2ac2ad0f0ca36801d2ebf388d5ef297011625e4c36e963f0 COPYING diff --git a/package/sord/sord.mk b/package/sord/sord.mk new file mode 100644 index 00000000..9fcf9885 --- /dev/null +++ b/package/sord/sord.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# sord +# +################################################################################ + +SORD_VERSION = 0.16.12 +SORD_SITE = https://download.drobilla.net +SORD_SOURCE = sord-$(SORD_VERSION).tar.xz +SORD_LICENSE = ISC +SORD_LICENSE_FILES = COPYING +SORD_DEPENDENCIES = host-pkgconf serd +SORD_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_PCRE),y) +SORD_DEPENDENCIES += pcre +endif + +SORD_CONF_OPTS += -Ddocs=disabled -Dtests=disabled + +$(eval $(meson-package)) diff --git a/package/sound-theme-borealis/Config.in b/package/sound-theme-borealis/Config.in new file mode 100644 index 00000000..fcc109fe --- /dev/null +++ b/package/sound-theme-borealis/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_SOUND_THEME_BOREALIS + bool "sound-theme-borealis" + help + Borealis sound theme. + + http://kde-look.org/content/show.php?content=12584 diff --git a/package/sound-theme-borealis/sound-theme-borealis.hash b/package/sound-theme-borealis/sound-theme-borealis.hash new file mode 100644 index 00000000..575cf31c --- /dev/null +++ b/package/sound-theme-borealis/sound-theme-borealis.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 dd80a9c6317de29d42786ba7d95b114b64d06ec6c0c17dd18df853a5c668e727 Borealis_sound_theme_ogg-0.9a.tar.bz2 diff --git a/package/sound-theme-borealis/sound-theme-borealis.mk b/package/sound-theme-borealis/sound-theme-borealis.mk new file mode 100644 index 00000000..9242837b --- /dev/null +++ b/package/sound-theme-borealis/sound-theme-borealis.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# sound-theme-borealis +# +################################################################################ + +SOUND_THEME_BOREALIS_VERSION = 0.9a +SOUND_THEME_BOREALIS_SITE = http://ico.bukvic.net/Linux/Borealis_soundtheme +SOUND_THEME_BOREALIS_SOURCE = \ + Borealis_sound_theme_ogg-$(SOUND_THEME_BOREALIS_VERSION).tar.bz2 + +define SOUND_THEME_BOREALIS_INSTALL_TARGET_CMDS + for f in $(@D)/*.ogg ; do \ + $(INSTALL) -D -m 0644 $$f $(TARGET_DIR)/usr/share/sounds/borealis/stereo/`basename $$f` || exit 1; \ + done +endef + +$(eval $(generic-package)) diff --git a/package/sound-theme-freedesktop/Config.in b/package/sound-theme-freedesktop/Config.in new file mode 100644 index 00000000..8b48015f --- /dev/null +++ b/package/sound-theme-freedesktop/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_SOUND_THEME_FREEDESKTOP + bool "sound-theme-freedesktop" + help + Default theme for the XDG Sound Theme Specification. + + http://freedesktop.org/wiki/Specifications/sound-theme-spec diff --git a/package/sound-theme-freedesktop/sound-theme-freedesktop.hash b/package/sound-theme-freedesktop/sound-theme-freedesktop.hash new file mode 100644 index 00000000..55b6993e --- /dev/null +++ b/package/sound-theme-freedesktop/sound-theme-freedesktop.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 e6595afb02b76099ef6df42c2ac7c4f9680c21c3f26b2a7ca0943d1fdbbd9aef sound-theme-freedesktop-0.7.tar.bz2 diff --git a/package/sound-theme-freedesktop/sound-theme-freedesktop.mk b/package/sound-theme-freedesktop/sound-theme-freedesktop.mk new file mode 100644 index 00000000..ea4c8536 --- /dev/null +++ b/package/sound-theme-freedesktop/sound-theme-freedesktop.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# sound-theme-freedesktop +# +################################################################################ + +SOUND_THEME_FREEDESKTOP_VERSION = 0.7 +SOUND_THEME_FREEDESKTOP_SITE = \ + http://people.freedesktop.org/~mccann/dist +SOUND_THEME_FREEDESKTOP_SOURCE = \ + sound-theme-freedesktop-$(SOUND_THEME_FREEDESKTOP_VERSION).tar.bz2 +SOUND_THEME_FREEDESKTOP_DEPENDENCIES = host-intltool + +$(eval $(autotools-package)) diff --git a/package/sox/0001-Make-SoX-support-uclibc-based-toolchains.patch b/package/sox/0001-Make-SoX-support-uclibc-based-toolchains.patch new file mode 100644 index 00000000..3d21b570 --- /dev/null +++ b/package/sox/0001-Make-SoX-support-uclibc-based-toolchains.patch @@ -0,0 +1,40 @@ +From 5d51acafe9c38fb05939b4d2d6a9dcde12476458 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Sat, 29 Jun 2024 12:28:54 +0200 +Subject: [PATCH] Make SoX support uclibc-based toolchains + +From: +http://sourceforge.net/p/sox/bugs/179/ + +Signed-off-by: Gustavo Zacarias +[Julien: rebased patch on package git version 7524160, +and regenerated with git format-patch] +Signed-off-by: Julien Olivain +--- + src/formats.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/src/formats.c b/src/formats.c +index 3fcf4382..9fc001bd 100644 +--- a/src/formats.c ++++ b/src/formats.c +@@ -466,7 +466,7 @@ static void UNUSED rewind_pipe(FILE * fp) + #if defined _FSTDIO || defined _NEWLIB_VERSION || defined __APPLE__ + fp->_p -= PIPE_AUTO_DETECT_SIZE; + fp->_r += PIPE_AUTO_DETECT_SIZE; +-#elif defined __GLIBC__ ++#elif defined __GLIBC__ && ! defined __UCLIBC__ + fp->_IO_read_ptr = fp->_IO_read_base; + #elif defined _MSC_VER && _MSC_VER >= 1900 + #define NO_REWIND_PIPE +@@ -477,7 +477,6 @@ static void UNUSED rewind_pipe(FILE * fp) + /* To fix this #error, either simply remove the #error line and live without + * file-type detection with pipes, or add support for your compiler in the + * lines above. Test with cat monkey.wav | ./sox --info - */ +- #error FIX NEEDED HERE + #define NO_REWIND_PIPE + (void)fp; + #endif +-- +2.45.2 + diff --git a/package/sox/0002-configure.ac-put-back-disable-stack-protector.patch b/package/sox/0002-configure.ac-put-back-disable-stack-protector.patch new file mode 100644 index 00000000..28e2871f --- /dev/null +++ b/package/sox/0002-configure.ac-put-back-disable-stack-protector.patch @@ -0,0 +1,45 @@ +From 18ace560a15207503805d4df25b90c7a756bcbf6 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 2 Feb 2021 23:53:39 +0100 +Subject: [PATCH] configure.ac: put back --disable-stack-protector + +Put back --disable-stack-protector which has been removed by commit +70c85915eace83142b84e4f65f5db421cf0c09e3. This will allow the user to +disable it or to let a higher buildsystem such as buildroot to finely +configure it. + +Indeed, without this patch, build can fail as some compilers (such as +uclibc) could missed the needed library (-lssp or -lssp_nonshared) at +linking step: + + CCLD libsox.la +/home/fabrice/br-test-pkg/br-arm-full/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/5.5.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: cannot find -lssp_nonshared +/home/fabrice/br-test-pkg/br-arm-full/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/5.5.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: cannot find -lssp + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://sourceforge.net/p/sox/patches/122/] +--- + configure.ac | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 39306398..a1665467 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -32,7 +32,12 @@ AC_PROG_LN_S + PKG_PROG_PKG_CONFIG + PKG_INSTALLDIR + +-AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong]) ++AC_ARG_ENABLE([stack-protector], ++ AS_HELP_STRING([--disable-stack-protector], [Disable -fstack-protector-strong]), ++ [enable_stack_protector=$enableval], [enable_stack_protector=yes]) ++AS_IF([test x"$enable_stack_protector" = "xyes"], ++ [AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong])]) ++ + AX_APPEND_COMPILE_FLAGS([-Wall -Wmissing-prototypes -Wstrict-prototypes]) + AX_APPEND_LINK_FLAGS([-Wl,--as-needed]) + +-- +2.29.2 + diff --git a/package/sox/0003-configure.ac-fix-static-linking-with-id3tag.patch b/package/sox/0003-configure.ac-fix-static-linking-with-id3tag.patch new file mode 100644 index 00000000..2bb574b3 --- /dev/null +++ b/package/sox/0003-configure.ac-fix-static-linking-with-id3tag.patch @@ -0,0 +1,49 @@ +From 06e5cc069dbdfa060c3d9e75a798ec121ecc9349 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 6 Feb 2021 11:08:45 +0100 +Subject: [PATCH] configure.ac: fix static linking with id3tag + +Put back -lz (i.e. ZLIB_LIBS) when searching for id3tag which was +wrongly removed by commit 6ff0e9322f9891f5a6ac6c9b3bceffbfca16bec3. This +will fix the following static build failure: + +configure:15290: checking for id3_file_open in -lid3tag +configure:15315: /home/buildroot/autobuild/instance-0/output-1/host/bin/arm-linux-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -static -Wall -Wmissing-prototypes -Wstrict-prototypes -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -static -Wl,--as-needed conftest.c -lid3tag >&5 +conftest.c:60:1: warning: function declaration isn't a prototype [-Wstrict-prototypes] + 60 | char id3_file_open (); + | ^~~~ +conftest.c:62:1: warning: function declaration isn't a prototype [-Wstrict-prototypes] + 62 | main () + | ^~~~ +/home/buildroot/autobuild/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: /home/buildroot/autobuild/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libid3tag.a(util.o): in function `id3_util_compress': +util.c:(.text+0x1ac): undefined reference to `compress2' +/home/buildroot/autobuild/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: /home/buildroot/autobuild/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libid3tag.a(util.o): in function `id3_util_decompress': +util.c:(.text+0x240): undefined reference to `uncompress' + +Fixes: + - http://autobuild.buildroot.org/results/73efdacf237e3d567fa66f3b3f68e624f5e35bc7 + +Signed-off-by: Julien Olivain +[Julien: rebased patch on package git version 7524160] +Signed-off-by: Fabrice Fontaine +[Upstream status: https://sourceforge.net/p/sox/patches/123] +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index a1665467..8f47a978 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -88,7 +88,7 @@ dnl Various libraries + SOX_WITH_LIB([magic], [magic.h], [magic], [magic_open]) + SOX_CHECK_LIB([ZLIB], [zlib.h], [z], [uncompress]) + SOX_WITH_LIB([png], [png.h], [png], [png_set_rows], [], [], [], [$ZLIB_LIBS]) +-SOX_WITH_LIB([id3tag], [id3tag.h], [id3tag], [id3_file_open]) ++SOX_WITH_LIB([id3tag], [id3tag.h], [id3tag], [id3_file_open], [], [], [], [$ZLIB_LIBS]) + SOX_WITH_LIB([libgsm], [gsm/gsm.h gsm.h], [gsm], [gsm_create]) + + dnl Optional formats +-- +2.45.2 + diff --git a/package/sox/0004-configure.ac-fix-static-linking-with-magic.patch b/package/sox/0004-configure.ac-fix-static-linking-with-magic.patch new file mode 100644 index 00000000..ad36ecad --- /dev/null +++ b/package/sox/0004-configure.ac-fix-static-linking-with-magic.patch @@ -0,0 +1,50 @@ +From 76b78cb89cf8fc36b4ced568f3b34f778df53411 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 3 Mar 2021 16:48:57 +0100 +Subject: [PATCH] configure.ac: fix static linking with magic + +Use SOX_FMT_PKG to retrieve magic dependencies (e.g. bzip2 or zlib) +indeed -lz (i.e. ZLIB_LIBS) was wrongly removed by commit +6ff0e9322f9891f5a6ac6c9b3bceffbfca16bec3. This will fix the following +static build failure: + +configure:11677: checking for magic_open in -lmagic +configure:11702: /srv/storage/autobuild/run/instance-0/output-1/host/bin/arm-linux-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -static -Wall -Wmissing-prototypes -Wstrict-prototypes -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -static -Wl,--as-needed conftest.c -lmagic >&5 +conftest.c:53:1: warning: function declaration isn't a prototype [-Wstrict-prototypes] + 53 | char magic_open (); + | ^~~~ +conftest.c:55:1: warning: function declaration isn't a prototype [-Wstrict-prototypes] + 55 | main () + | ^~~~ +/srv/storage/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: /srv/storage/autobuild/run/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libmagic.a(compress.o): in function `uncompresszlib': +compress.c:(.text+0x1d0): undefined reference to `inflateInit_' +/srv/storage/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: compress.c:(.text+0x1e4): undefined reference to `inflate' +/srv/storage/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: compress.c:(.text+0x1fc): undefined reference to `inflateEnd' + +Fixes: + - http://autobuild.buildroot.org/results/d96f27cd96926060046e2e1115777f5bceda3741 + +Signed-off-by: Julien Olivain +[Julien: rebased patch on package git version 7524160] +Signed-off-by: Fabrice Fontaine +[Upstream status: not sent yet (waiting for feedback on third patch)] +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 8f47a978..20454ed5 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -85,7 +85,7 @@ SOX_REPORT([other], [LADSPA effect plugins], [$HAVE_LADSPA]) + + dnl Various libraries + +-SOX_WITH_LIB([magic], [magic.h], [magic], [magic_open]) ++SOX_FMT_PKG([magic], [libmagic]) + SOX_CHECK_LIB([ZLIB], [zlib.h], [z], [uncompress]) + SOX_WITH_LIB([png], [png.h], [png], [png_set_rows], [], [], [], [$ZLIB_LIBS]) + SOX_WITH_LIB([id3tag], [id3tag.h], [id3tag], [id3_file_open], [], [], [], [$ZLIB_LIBS]) +-- +2.45.2 + diff --git a/package/sox/0005-configure.ac-fix-static-linking-with-sndfile.patch b/package/sox/0005-configure.ac-fix-static-linking-with-sndfile.patch new file mode 100644 index 00000000..46e5ca0e --- /dev/null +++ b/package/sox/0005-configure.ac-fix-static-linking-with-sndfile.patch @@ -0,0 +1,46 @@ +From 7a2e270989037663e740487a8248db1227697c92 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 4 Aug 2021 10:27:16 +0200 +Subject: [PATCH] configure.ac: fix static linking with sndfile + +Use SOX_FMT_PKG to retrieve sndfile dependencies (e.g. flac, opus or +vorbis). This will fix the following static build failure: + +configure:14720: checking for sf_open_virtual in -lsndfile +configure:14745: /tmp/instance-1/output-1/host/bin/xtensa-buildroot-linux-uclibc-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -mlongcalls -mauto-litpools -Os -g0 -static -Wall -Wmissing-prototypes -Wstrict-prototypes -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -static -Wl,--as-needed conftest.c -lsndfile >&5 +conftest.c:73:1: warning: function declaration isn't a prototype [-Wstrict-prototypes] + 73 | char sf_open_virtual (); + | ^~~~ +conftest.c:75:1: warning: function declaration isn't a prototype [-Wstrict-prototypes] + 75 | main () + | ^~~~ +/tmp/instance-1/output-1/host/lib/gcc/xtensa-buildroot-linux-uclibc/10.3.0/../../../../xtensa-buildroot-linux-uclibc/bin/ld: /tmp/instance-1/output-1/host/xtensa-buildroot-linux-uclibc/sysroot/usr/lib/libsndfile.a(libsndfile_la-flac.o): in function `flac_byterate': +flac.c:(.text+0xfc): undefined reference to `FLAC__StreamDecoderErrorStatusString' + +Fixes: + - http://autobuild.buildroot.org/results/4bc58ed68b29642876bb02710d0cd4f31540de86 + +Signed-off-by: Julien Olivain +[Julien: rebased patch on package git version 7524160] +Signed-off-by: Fabrice Fontaine +[Upstream status: not sent yet (waiting for feedback on third patch)] +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 20454ed5..4330360b 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -122,7 +122,7 @@ SOX_FMT_REQ([mp3], [MAD LAME TWOLAME]) + SOX_FMT_PKG([oggvorbis], [ogg vorbis vorbisenc vorbisfile]) + SOX_FMT_PKG([opus], [opusfile]) + +-SOX_DL_LIB([libsndfile], [sndfile.h], [sndfile], [sf_open_virtual]) ++SOX_FMT_PKG([libsndfile], [sndfile]) + SOX_FMT_REQ([sndfile], [LIBSNDFILE]) + + SOX_FMT_LIB([wavpack], [wavpack/wavpack.h], [wavpack], [WavpackGetSampleRate]) +-- +2.45.2 + diff --git a/package/sox/Config.in b/package/sox/Config.in new file mode 100644 index 00000000..5325ed68 --- /dev/null +++ b/package/sox/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_SOX + bool "sox" + help + SoX is a cross-platform (Windows, Linux, MacOS X, etc.) + command line utility that can convert various formats of + computer audio files into other formats. + + It can also apply various effects to these sound files, and, + as an added bonus, SoX can play and record audio files on + most platforms. + + http://sox.sourceforge.net/ diff --git a/package/sox/sox.hash b/package/sox/sox.hash new file mode 100644 index 00000000..4e8a0682 --- /dev/null +++ b/package/sox/sox.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 acea032ef8543e4934bb1f4c821519456ad4bdad8d05b785043adbf07feba284 sox-7524160b29a476f7e87bc14fddf12d349f9a3c5e-git4.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 LICENSE.GPL +sha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a LICENSE.LGPL diff --git a/package/sox/sox.mk b/package/sox/sox.mk new file mode 100644 index 00000000..d0329bf5 --- /dev/null +++ b/package/sox/sox.mk @@ -0,0 +1,149 @@ +################################################################################ +# +# sox +# +################################################################################ + +SOX_VERSION = 7524160b29a476f7e87bc14fddf12d349f9a3c5e +SOX_SITE = https://git.code.sf.net/p/sox/code +SOX_SITE_METHOD = git +SOX_DEPENDENCIES = host-autoconf-archive host-pkgconf +SOX_LICENSE = GPL-2.0+ (sox binary), LGPL-2.1+ (libraries) +SOX_LICENSE_FILES = LICENSE.GPL LICENSE.LGPL +SOX_CPE_ID_VENDOR = sound_exchange_project +SOX_CPE_ID_PRODUCT = sound_exchange +# From git and we're patching configure.ac +SOX_AUTORECONF = YES +SOX_AUTORECONF_OPTS = --include=$(HOST_DIR)/share/autoconf-archive +SOX_INSTALL_STAGING = YES + +SOX_IGNORE_CVES += CVE-2017-11332 CVE-2017-11358 CVE-2017-11359 \ + CVE-2017-15370 CVE-2017-15371 CVE-2017-15372 CVE-2017-15642 \ + CVE-2017-18189 CVE-2019-8354 CVE-2019-8355 CVE-2019-8356 \ + CVE-2019-8357 CVE-2019-13590 + +SOX_CONF_OPTS = \ + --with-distro="Buildroot" \ + --disable-stack-protector + +SOX_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y) +SOX_CFLAGS += -O0 +endif + +SOX_CONF_ENV += CFLAGS="$(SOX_CFLAGS)" + +ifeq ($(BR2_PACKAGE_ALSA_LIB_PCM),y) +SOX_DEPENDENCIES += alsa-lib +SOX_CONF_OPTS += --enable-alsa +else +SOX_CONF_OPTS += --disable-alsa +endif + +ifeq ($(BR2_PACKAGE_FILE),y) +SOX_DEPENDENCIES += file +SOX_CONF_OPTS += --enable-magic +else +SOX_CONF_OPTS += --disable-magic +endif + +ifeq ($(BR2_PACKAGE_FLAC),y) +SOX_DEPENDENCIES += flac +SOX_CONF_OPTS += --enable-flac +else +SOX_CONF_OPTS += --disable-flac +endif + +ifeq ($(BR2_PACKAGE_LAME),y) +SOX_DEPENDENCIES += lame +SOX_CONF_OPTS += --with-lame +else +SOX_CONF_OPTS += --without-lame +endif + +ifeq ($(BR2_PACKAGE_LIBAO),y) +SOX_DEPENDENCIES += libao +SOX_CONF_OPTS += --enable-ao +else +SOX_CONF_OPTS += --disable-ao +endif + +ifeq ($(BR2_PACKAGE_LIBGSM),y) +SOX_DEPENDENCIES += libgsm +SOX_CONF_OPTS += --enable-gsm +else +SOX_CONF_OPTS += --disable-gsm +endif + +ifeq ($(BR2_PACKAGE_LIBID3TAG),y) +SOX_DEPENDENCIES += libid3tag +SOX_CONF_OPTS += --with-id3tag +else +SOX_CONF_OPTS += --without-id3tag +endif + +ifeq ($(BR2_PACKAGE_LIBMAD),y) +SOX_DEPENDENCIES += libmad +SOX_CONF_OPTS += --with-mad +else +SOX_CONF_OPTS += --without-mad +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +SOX_DEPENDENCIES += libpng +SOX_CONF_OPTS += --with-png +else +SOX_CONF_OPTS += --without-png +endif + +ifeq ($(BR2_PACKAGE_LIBSNDFILE),y) +SOX_DEPENDENCIES += libsndfile +SOX_CONF_OPTS += --enable-sndfile +else +SOX_CONF_OPTS += --disable-sndfile +endif + +ifeq ($(BR2_PACKAGE_LIBVORBIS),y) +SOX_DEPENDENCIES += libvorbis +SOX_CONF_OPTS += --enable-oggvorbis +else +SOX_CONF_OPTS += --disable-oggvorbis +endif + +ifeq ($(BR2_PACKAGE_OPENCORE_AMR),y) +SOX_DEPENDENCIES += opencore-amr +SOX_CONF_OPTS += --enable-amrwb --enable-amrnb +else +SOX_CONF_OPTS += --disable-amrwb --disable-amrnb +endif + +ifeq ($(BR2_PACKAGE_OPUSFILE),y) +SOX_DEPENDENCIES += opusfile +SOX_CONF_OPTS += --enable-opus +else +SOX_CONF_OPTS += --disable-opus +endif + +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +SOX_DEPENDENCIES += pulseaudio +SOX_CONF_OPTS += --enable-pulseaudio +else +SOX_CONF_OPTS += --disable-pulseaudio +endif + +ifeq ($(BR2_PACKAGE_TWOLAME),y) +SOX_DEPENDENCIES += twolame +SOX_CONF_OPTS += --with-twolame +else +SOX_CONF_OPTS += --without-twolame +endif + +ifeq ($(BR2_PACKAGE_WAVPACK),y) +SOX_DEPENDENCIES += wavpack +SOX_CONF_OPTS += --enable-wavpack +else +SOX_CONF_OPTS += --disable-wavpack +endif + +$(eval $(autotools-package)) diff --git a/package/sp-oops-extract/0001-Make-the-Makefile-more-cross-compiler-friendly.patch b/package/sp-oops-extract/0001-Make-the-Makefile-more-cross-compiler-friendly.patch new file mode 100644 index 00000000..67153c27 --- /dev/null +++ b/package/sp-oops-extract/0001-Make-the-Makefile-more-cross-compiler-friendly.patch @@ -0,0 +1,22 @@ +Fetch from: https://github.com/Schischu/ptxdist_sh/tree/master/patches/sp-oops-extract-0.0.7 + +From: Bernhard Walle +Date: Wed, 21 Mar 2012 15:55:06 +0100 +Subject: [PATCH] Make the Makefile more cross-compiler friendly + +Signed-off-by: Bernhard Walle +--- + src/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/Makefile b/src/Makefile +index cf5b550..e05eb1f 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -9,4 +9,4 @@ distclean: clean + $(RM) $(TARGETS) + + sp-oops-extract: oopslog.c +- gcc -Wall -s -o $@ $^ ++ $(CC) $(LDFLAGS) $(CPPFLAGS) $(CFLAGS) -Wall -o $@ $^ + diff --git a/package/sp-oops-extract/0002-stdint-cleanup.patch b/package/sp-oops-extract/0002-stdint-cleanup.patch new file mode 100644 index 00000000..255fe8a8 --- /dev/null +++ b/package/sp-oops-extract/0002-stdint-cleanup.patch @@ -0,0 +1,33 @@ +consolidate use of stdint types + +Change u_int*_t to uint*_t for compatibility with a larger number of C +libraries. + +Signed-off-by: Doug Kehn + +Index: sp-oops-extract-0.0.7-1/src/oopslog.c +=================================================================== +--- sp-oops-extract-0.0.7-1.orig/src/oopslog.c ++++ sp-oops-extract-0.0.7-1/src/oopslog.c +@@ -64,8 +64,8 @@ static int try_to_check_for_bad_blocks(v + + int main(const int argc, const char *argv[]) + { +- u_int32_t *count, maxcount = 0xffffffff; +- u_int32_t *magic_ptr, magic_value = 0x5d005d00; ++ uint32_t *count, maxcount = 0xffffffff; ++ uint32_t *magic_ptr, magic_value = 0x5d005d00; + + unsigned char *charbuf; + unsigned long size; +@@ -137,8 +137,8 @@ int main(const int argc, const char *arg + errx(-1, "%s is something weird", device); + + charbuf = buf; +- count = (u_int32_t *) buf; +- magic_ptr = (u_int32_t *) (buf + sizeof(u_int32_t)); ++ count = (uint32_t *) buf; ++ magic_ptr = (uint32_t *) (buf + sizeof(uint32_t)); + + for (i = 0; i < (size / OOPS_PAGE_SIZE); i++) { + pread(fd, buf, OOPS_PAGE_SIZE, i * OOPS_PAGE_SIZE); diff --git a/package/sp-oops-extract/Config.in b/package/sp-oops-extract/Config.in new file mode 100644 index 00000000..d4e0252c --- /dev/null +++ b/package/sp-oops-extract/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_SP_OOPS_EXTRACT + bool "sp-oops-extract" + help + A tool for extracting OOPS/panic logs from MTD. + + http://maemo.org/packages/view/sp-oops-extract/ diff --git a/package/sp-oops-extract/sp-oops-extract.hash b/package/sp-oops-extract/sp-oops-extract.hash new file mode 100644 index 00000000..666cce78 --- /dev/null +++ b/package/sp-oops-extract/sp-oops-extract.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 85601a569af1f4584db75fad21d3a70e377ce12d1bccad7dbe1112abd3b43d93 sp-oops-extract_0.0.7-1.tar.gz +sha256 c38aee9e3c8c4d5d594ff548a1be05453023016d6286931f6512db215ec1fd42 COPYING diff --git a/package/sp-oops-extract/sp-oops-extract.mk b/package/sp-oops-extract/sp-oops-extract.mk new file mode 100644 index 00000000..a3ff46c5 --- /dev/null +++ b/package/sp-oops-extract/sp-oops-extract.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# sp-oops-extract +# +################################################################################ + +SP_OOPS_EXTRACT_VERSION = 0.0.7-1 +SP_OOPS_EXTRACT_SITE = http://repository.maemo.org/pool/maemo5.0/free/s/sp-oops-extract +SP_OOPS_EXTRACT_SOURCE = sp-oops-extract_$(SP_OOPS_EXTRACT_VERSION).tar.gz +SP_OOPS_EXTRACT_LICENSE = GPL-2.0 +SP_OOPS_EXTRACT_LICENSE_FILES = COPYING + +define SP_OOPS_EXTRACT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define SP_OOPS_EXTRACT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install \ + DESTDIR=$(TARGET_DIR) +endef + +$(eval $(generic-package)) diff --git a/package/spandsp/0001-configure.ac-fix-AVX-SSE-and-MMX-options.patch b/package/spandsp/0001-configure.ac-fix-AVX-SSE-and-MMX-options.patch new file mode 100644 index 00000000..50eecfbf --- /dev/null +++ b/package/spandsp/0001-configure.ac-fix-AVX-SSE-and-MMX-options.patch @@ -0,0 +1,60 @@ +From e7330bfe63efd0062fa51d50a4aaa0f1abd5ff75 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 22 Nov 2020 17:02:43 +0100 +Subject: [PATCH] configure.ac: fix AVX, SSE and MMX options + +AVX, SSE and MMX options are broken since +https://github.com/freeswitch/spandsp/commit/87a900c70df73e128a5926587047f529105f5f64 + +For example, when the user enables SSE, it will also enable MMX and the +user can't disable MMX + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/freeswitch/spandsp/pull/20] +--- + configure.ac | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 83fb3fd..ac2592e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -486,35 +486,27 @@ armv7[bl] | armv7-*) + x86_64-* | i386-* | i686-*) + if test "$enable_avx2" = "yes" ; then + AC_DEFINE([SPANDSP_USE_AVX2], [1], [Use the AVX2 instruction set (i386 and x86_64 only).]) +- enable_avx="yes" + fi + if test "$enable_avx" = "yes" ; then + AC_DEFINE([SPANDSP_USE_AVX], [1], [Use the AVX instruction set (i386 and x86_64 only).]) +- enable_sse4_2="yes" + fi + if test "$enable_sse4_2" = "yes" ; then + AC_DEFINE([SPANDSP_USE_SSE4_2], [1], [Use the SSE4.2 instruction set (i386 and x86_64 only).]) +- enable_sse4_1="yes" + fi + if test "$enable_sse4_1" = "yes" ; then + AC_DEFINE([SPANDSP_USE_SSE4_1], [1], [Use the SSE4.1 instruction set (i386 and x86_64 only).]) +- enable_ssse3="yes" + fi + if test "$enable_ssse3" = "yes" ; then + AC_DEFINE([SPANDSP_USE_SSSE3], [1], [Use the SSSE3 instruction set (i386 and x86_64 only).]) +- enable_sse3="yes" + fi + if test "$enable_sse3" = "yes" ; then + AC_DEFINE([SPANDSP_USE_SSE3], [1], [Use the SSE3 instruction set (i386 and x86_64 only).]) +- enable_sse2="yes" + fi + if test "$enable_sse2" = "yes" ; then + AC_DEFINE([SPANDSP_USE_SSE2], [1], [Use the SSE2 instruction set (i386 and x86_64 only).]) +- enable_sse="yes" + fi + if test "$enable_sse" = "yes" ; then + AC_DEFINE([SPANDSP_USE_SSE], [1], [Use the SSE instruction set (i386 and x86_64 only).]) +- enable_mmx="yes" + fi + if test "$enable_mmx" = "yes" ; then + AC_DEFINE([SPANDSP_USE_MMX], [1], [Use the MMX instruction set (i386 and x86_64 only).]) +-- +2.29.2 + diff --git a/package/spandsp/Config.in b/package/spandsp/Config.in new file mode 100644 index 00000000..c64eee8a --- /dev/null +++ b/package/spandsp/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_SPANDSP + bool "spandsp" + select BR2_PACKAGE_TIFF + select BR2_PACKAGE_TIFF_JPEG + help + Spandsp is a library of many DSP functions for telephony. + These range from simple modules, such as DTMF detection, to + a complete software FAX machine. + + https://github.com/freeswitch/spandsp diff --git a/package/spandsp/spandsp.hash b/package/spandsp/spandsp.hash new file mode 100644 index 00000000..d38b0691 --- /dev/null +++ b/package/spandsp/spandsp.hash @@ -0,0 +1,3 @@ +# sha256 locally computed +sha256 a11beed46b488a4cac3b0c42042ad28448bcee4c0027a82d5449180bbb178836 spandsp-3.0.0-6ec23e5a7e.tar.gz +sha256 366576cb0b869cd9e95a4882878607314650488ac635e5df0692180382e9666a COPYING diff --git a/package/spandsp/spandsp.mk b/package/spandsp/spandsp.mk new file mode 100644 index 00000000..4735212f --- /dev/null +++ b/package/spandsp/spandsp.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# spandsp +# +################################################################################ + +SPANDSP_VERSION = 3.0.0-6ec23e5a7e +SPANDSP_SITE = https://files.freeswitch.org/downloads/libs +SPANDSP_LICENSE = LGPL-2.1 (library), GPL-2.0 (test suite) +SPANDSP_LICENSE_FILES = COPYING +# We're patching configure.ac +SPANDSP_AUTORECONF = YES + +SPANDSP_DEPENDENCIES = tiff host-pkgconf +SPANDSP_INSTALL_STAGING = YES +SPANDSP_CONF_ENV = LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs libtiff-4`" + +# MMX on i686 raises a build failure +SPANDSP_CONF_OPTS = \ + --disable-builtin-tiff \ + $(if $(BR2_x86_64),--enable-mmx,--disable-mmx) \ + $(if $(BR2_X86_CPU_HAS_SSE),--enable-sse,--disable-sse) \ + $(if $(BR2_X86_CPU_HAS_SSE2),--enable-sse2,--disable-sse2) \ + $(if $(BR2_X86_CPU_HAS_SSE3),--enable-sse3,--disable-sse3) \ + $(if $(BR2_X86_CPU_HAS_SSSE3),--enable-ssse3,--disable-ssse3) \ + $(if $(BR2_X86_CPU_HAS_SSE4),--enable-sse4-1,--disable-sse4-1) \ + $(if $(BR2_X86_CPU_HAS_SSE42),--enable-sse4-2,--disable-sse4-2) + +$(eval $(autotools-package)) diff --git a/package/spawn-fcgi/Config.in b/package/spawn-fcgi/Config.in new file mode 100644 index 00000000..59791e8d --- /dev/null +++ b/package/spawn-fcgi/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_SPAWN_FCGI + bool "spawn-fcgi" + depends on BR2_USE_MMU # fork() + help + FastCGI process spawner. + Project split from lighttpd. + + http://redmine.lighttpd.net/projects/spawn-fcgi diff --git a/package/spawn-fcgi/spawn-fcgi.hash b/package/spawn-fcgi/spawn-fcgi.hash new file mode 100644 index 00000000..b5c5c742 --- /dev/null +++ b/package/spawn-fcgi/spawn-fcgi.hash @@ -0,0 +1,4 @@ +# From http://redmine.lighttpd.net/news/9 +sha256 a3cfc7c9581b6ddc31084b379c9160323fa345d357ace6cd2d3d3af3593e2873 spawn-fcgi-1.6.4.tar.bz2 +# Locally computed +sha256 5c98cad2fbaf5c5e2562bcbab401a7c557c1bb1bac9914ecc63730925052fb13 COPYING diff --git a/package/spawn-fcgi/spawn-fcgi.mk b/package/spawn-fcgi/spawn-fcgi.mk new file mode 100644 index 00000000..8caa1e2b --- /dev/null +++ b/package/spawn-fcgi/spawn-fcgi.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# spawn-fcgi +# +################################################################################ + +SPAWN_FCGI_VERSION = 1.6.4 +SPAWN_FCGI_SITE = http://www.lighttpd.net/download +SPAWN_FCGI_SOURCE = spawn-fcgi-$(SPAWN_FCGI_VERSION).tar.bz2 +SPAWN_FCGI_LICENSE = BSD-3-Clause +SPAWN_FCGI_LICENSE_FILES = COPYING +SPAWN_FCGI_CPE_ID_VENDOR = lighttpd + +$(eval $(autotools-package)) diff --git a/package/spdlog/Config.in b/package/spdlog/Config.in new file mode 100644 index 00000000..877c1b6a --- /dev/null +++ b/package/spdlog/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_SPDLOG + bool "spdlog" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR # fmt + select BR2_PACKAGE_FMT + help + Very fast, header-only/compiled, C++ logging library. + + https://github.com/gabime/spdlog + +comment "spdlog needs a toolchain w/ C++, threads, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_USE_WCHAR diff --git a/package/spdlog/spdlog.hash b/package/spdlog/spdlog.hash new file mode 100644 index 00000000..16d84176 --- /dev/null +++ b/package/spdlog/spdlog.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1586508029a7d0670dfcb2d97575dcdc242d3868a259742b69f100801ab4e16b spdlog-1.14.1.tar.gz +sha256 4ccecab18d1ff0b61174fe3d6c430541625d3ddb865b0d5887db296f883c76e7 LICENSE diff --git a/package/spdlog/spdlog.mk b/package/spdlog/spdlog.mk new file mode 100644 index 00000000..6b243576 --- /dev/null +++ b/package/spdlog/spdlog.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# spdlog +# +################################################################################ + +SPDLOG_VERSION = 1.14.1 +SPDLOG_SITE = $(call github,gabime,spdlog,v$(SPDLOG_VERSION)) +SPDLOG_LICENSE = MIT +SPDLOG_LICENSE_FILES = LICENSE +SPDLOG_INSTALL_STAGING = YES +SPDLOG_DEPENDENCIES = fmt +SPDLOG_CONF_OPTS += \ + -DSPDLOG_BUILD_TESTS=OFF \ + -DSPDLOG_BUILD_EXAMPLE=OFF \ + -DSPDLOG_BUILD_BENCH=OFF \ + -DSPDLOG_FMT_EXTERNAL=ON + +ifeq ($(BR2_STATIC_LIBS),y) +SPDLOG_CONF_OPTS += -DSPDLOG_BUILD_SHARED=OFF +else +SPDLOG_CONF_OPTS += -DSPDLOG_BUILD_SHARED=ON +endif + +$(eval $(cmake-package)) diff --git a/package/speechd/Config.in b/package/speechd/Config.in new file mode 100644 index 00000000..8fdc452d --- /dev/null +++ b/package/speechd/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_SPEECHD + bool "speechd" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_DOTCONF + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBSNDFILE + help + Speech Dispatcher project provides a high-level device + independent layer for access to speech synthesis through + a simple, stable and well documented interface. + + https://freebsoft.org/speechd + +comment "speechd 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/package/speechd/speechd.hash b/package/speechd/speechd.hash new file mode 100644 index 00000000..0b02a357 --- /dev/null +++ b/package/speechd/speechd.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 cc4b388fce40681eaff3545e9cc0642216c13c420d5676a4d28c957ddcb916de speechd-0.11.5.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING.GPL-2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING.GPL-3 +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPL diff --git a/package/speechd/speechd.mk b/package/speechd/speechd.mk new file mode 100644 index 00000000..669bec06 --- /dev/null +++ b/package/speechd/speechd.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# speechd +# +################################################################################ + +SPEECHD_VERSION = 0.11.5 +SPEECHD_SITE = $(call github,brailcom,speechd,$(SPEECHD_VERSION)) +SPEECHD_LICENSE = GPL-2.0+, GPL-3.0+ (buildsystem), LGPL-2.1+ +SPEECHD_LICENSE_FILES = COPYING.GPL-2 COPYING.GPL-3 COPYING.LGPL +SPEECHD_CPE_ID_VENDOR = brailcom +SPEECHD_INSTALL_STAGING = YES +# speechd source code is released without configure script +SPEECHD_AUTORECONF = YES +SPEECHD_AUTOPOINT = YES +SPEECHD_DEPENDENCIES = \ + host-pkgconf dotconf libglib2 libsndfile $(TARGET_NLS_DEPENDENCIES) +SPEECHD_CONF_ENV = \ + ac_cv_prog_HELP2MAN="" \ + LIBS=$(TARGET_NLS_LIBS) +SPEECHD_CONF_OPTS = \ + --disable-python \ + --without-espeak \ + --without-espeak-ng \ + --without-flite \ + --without-ibmtts \ + --without-voxin \ + --without-ivona \ + --without-pico \ + --without-baratinoo \ + --without-kali \ + --without-pulse \ + --without-libao \ + --without-alsa \ + --with-oss \ + --without-nas + +# fix missing config.rpath (needed for autoreconf) in the codebase +define SPEECHD_TOUCH_CONFIG_RPATH + touch $(@D)/config.rpath +endef +SPEECHD_PRE_CONFIGURE_HOOKS += SPEECHD_TOUCH_CONFIG_RPATH + +ifeq ($(BR2_PACKAGE_LIBTOOL),y) +SPEECHD_DEPENDENCIES += libtool +SPEECHD_CONF_OPTS += --enable-ltdl +else +SPEECHD_CONF_OPTS += --disable-ltdl +endif + +define SPEECHD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(@D)/speech-dispatcherd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/speech-dispatcherd.service +endef + +$(eval $(autotools-package)) diff --git a/package/speex/0001-thumb2-support.patch b/package/speex/0001-thumb2-support.patch new file mode 100644 index 00000000..092fa132 --- /dev/null +++ b/package/speex/0001-thumb2-support.patch @@ -0,0 +1,222 @@ +Make speex Thumb2 compatible + +Patch written by Michael Hope from Linaro, available at +http://lists.xiph.org/pipermail/speex-dev/2010-November/008041.html. + +Signed-off-by: Thomas Petazzoni +[Bernd: rebased for 1.2.0] +Signed-off-by: Bernd Kuhls + +diff --git a/libspeex/filters_arm4.h b/libspeex/filters_arm4.h +index 7a74042..6ec1f75 100644 +--- a/libspeex/filters_arm4.h ++++ b/libspeex/filters_arm4.h +@@ -47,8 +47,10 @@ int normalize16(const spx_sig_t *x, spx_word16_t *y, spx_sig_t max_scale, int le + + "\tldr %4, [%0], #4 \n" + "\tcmp %4, %1 \n" ++ "\tit gt \n" + "\tmovgt %1, %4 \n" + "\tcmp %4, %3 \n" ++ "\tit lt \n" + "\tmovlt %3, %4 \n" + + "\tsubs %2, %2, #1 \n" +@@ -56,6 +58,7 @@ int normalize16(const spx_sig_t *x, spx_word16_t *y, spx_sig_t max_scale, int le + + "\trsb %3, %3, #0 \n" + "\tcmp %1, %3 \n" ++ "\tit lt \n" + "\tmovlt %1, %3 \n" + : "=r" (dead1), "=r" (max_val), "=r" (dead3), "=r" (dead4), + "=r" (dead5), "=r" (dead6) +diff --git a/libspeex/fixed_arm4.h b/libspeex/fixed_arm4.h +index b6981ca..b6218ca 100644 +--- a/libspeex/fixed_arm4.h ++++ b/libspeex/fixed_arm4.h +@@ -69,72 +69,90 @@ static inline short DIV32_16(int a, int b) + __asm__ __volatile__ ( + "\teor %5, %0, %1\n" + "\tmovs %4, %0\n" ++ "\tit mi \n" + "\trsbmi %0, %0, #0 \n" + "\tmovs %4, %1\n" ++ "\tit mi \n" + "\trsbmi %1, %1, #0 \n" + "\tmov %4, #1\n" + + "\tsubs %3, %0, %1, asl #14 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #14 \n" + + "\tsubs %3, %0, %1, asl #13 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #13 \n" + + "\tsubs %3, %0, %1, asl #12 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #12 \n" + + "\tsubs %3, %0, %1, asl #11 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #11 \n" + + "\tsubs %3, %0, %1, asl #10 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #10 \n" + + "\tsubs %3, %0, %1, asl #9 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #9 \n" + + "\tsubs %3, %0, %1, asl #8 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #8 \n" + + "\tsubs %3, %0, %1, asl #7 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #7 \n" + + "\tsubs %3, %0, %1, asl #6 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #6 \n" + + "\tsubs %3, %0, %1, asl #5 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #5 \n" + + "\tsubs %3, %0, %1, asl #4 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #4 \n" + + "\tsubs %3, %0, %1, asl #3 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #3 \n" + + "\tsubs %3, %0, %1, asl #2 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #2 \n" + + "\tsubs %3, %0, %1, asl #1 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #1 \n" + + "\tsubs %3, %0, %1 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4 \n" + + "\tmovs %5, %5, lsr #31 \n" ++ "\tit ne \n" + "\trsbne %2, %2, #0 \n" + : "=r" (dead1), "=r" (dead2), "=r" (res), + "=r" (dead3), "=r" (dead4), "=r" (dead5) +diff --git a/libspeex/fixed_arm5e.h b/libspeex/fixed_arm5e.h +index 9b4861c..bdadd02 100644 +--- a/libspeex/fixed_arm5e.h ++++ b/libspeex/fixed_arm5e.h +@@ -97,72 +97,90 @@ static inline short DIV32_16(int a, int b) + __asm__ __volatile__ ( + "\teor %5, %0, %1\n" + "\tmovs %4, %0\n" ++ "\tit mi \n" + "\trsbmi %0, %0, #0 \n" + "\tmovs %4, %1\n" ++ "\tit mi \n" + "\trsbmi %1, %1, #0 \n" + "\tmov %4, #1\n" + + "\tsubs %3, %0, %1, asl #14 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #14 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #13 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #13 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #12 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #12 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #11 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #11 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #10 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #10 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #9 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #9 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #8 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #8 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #7 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #7 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #6 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #6 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #5 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #5 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #4 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #4 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #3 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #3 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #2 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #2 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #1 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #1 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4 \n" + "\tmovpl %0, %3 \n" + + "\tmovs %5, %5, lsr #31 \n" ++ "\tit ne \n" + "\trsbne %2, %2, #0 \n" + : "=r" (dead1), "=r" (dead2), "=r" (res), + "=r" (dead3), "=r" (dead4), "=r" (dead5) diff --git a/package/speex/Config.in b/package/speex/Config.in new file mode 100644 index 00000000..134e6e4b --- /dev/null +++ b/package/speex/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_SPEEX + bool "speex" + select BR2_PACKAGE_LIBOGG + help + Speex is an Open Source/Free Software patent-free + audio compression format designed for speech. + It can be used for Voice over IP + + http://www.speex.org/ + +if BR2_PACKAGE_SPEEX + +config BR2_PACKAGE_SPEEX_ARM4 + bool + default y + depends on BR2_ARM_CPU_ARMV4 + +config BR2_PACKAGE_SPEEX_ARM5E + bool + default y + depends on BR2_arm && BR2_ARM_CPU_HAS_ARM && \ + !BR2_PACKAGE_SPEEX_ARM4 + +endif diff --git a/package/speex/speex.hash b/package/speex/speex.hash new file mode 100644 index 00000000..5a2f942e --- /dev/null +++ b/package/speex/speex.hash @@ -0,0 +1,4 @@ +# From https://downloads.xiph.org/releases/speex/SHA256SUMS.txt +sha256 4b44d4f2b38a370a2d98a78329fefc56a0cf93d1c1be70029217baae6628feea speex-1.2.1.tar.gz +# Locally computed +sha256 2654a4264b2bfe298dedc508748d140111840c315cc8eb646a3a68c13fa75b01 COPYING diff --git a/package/speex/speex.mk b/package/speex/speex.mk new file mode 100644 index 00000000..0bbcb2bd --- /dev/null +++ b/package/speex/speex.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# speex +# +################################################################################ + +SPEEX_VERSION = 1.2.1 +SPEEX_SITE = https://downloads.xiph.org/releases/speex +SPEEX_LICENSE = BSD-3-Clause +SPEEX_LICENSE_FILES = COPYING +SPEEX_CPE_ID_VENDOR = xiph +SPEEX_INSTALL_STAGING = YES +SPEEX_DEPENDENCIES = host-pkgconf libogg +SPEEX_CONF_OPTS = \ + --enable-fixed-point + +ifeq ($(BR2_PACKAGE_SPEEXDSP),y) +SPEEX_DEPENDENCIES += speexdsp +endif + +ifeq ($(BR2_PACKAGE_SPEEX_ARM4),y) +SPEEX_CONF_OPTS += --enable-arm4-asm +endif + +ifeq ($(BR2_PACKAGE_SPEEX_ARM5E),y) +SPEEX_CONF_OPTS += --enable-arm5e-asm +endif + +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +SPEEX_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -marm" +endif + +define SPEEX_LIBTOOL_FIXUP + $(SED) 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' $(@D)/libtool + $(SED) 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' $(@D)/libtool +endef + +SPEEX_POST_CONFIGURE_HOOKS += SPEEX_LIBTOOL_FIXUP + +$(eval $(autotools-package)) diff --git a/package/speexdsp/Config.in b/package/speexdsp/Config.in new file mode 100644 index 00000000..2ae5b59d --- /dev/null +++ b/package/speexdsp/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_SPEEXDSP + bool "speexdsp" + help + DSP library derived from speex. + + https://www.speex.org diff --git a/package/speexdsp/speexdsp.hash b/package/speexdsp/speexdsp.hash new file mode 100644 index 00000000..b46df791 --- /dev/null +++ b/package/speexdsp/speexdsp.hash @@ -0,0 +1,5 @@ +# From https://ftp.osuosl.org/pub/xiph/releases/speex/SHA256SUMS.txt +sha256 8c777343e4a6399569c72abc38a95b24db56882c83dbdb6c6424a5f4aeb54d3d speexdsp-1.2.1.tar.gz + +# Locally computed +sha256 2654a4264b2bfe298dedc508748d140111840c315cc8eb646a3a68c13fa75b01 COPYING diff --git a/package/speexdsp/speexdsp.mk b/package/speexdsp/speexdsp.mk new file mode 100644 index 00000000..8edad7c0 --- /dev/null +++ b/package/speexdsp/speexdsp.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# speexdsp +# +################################################################################ + +SPEEXDSP_VERSION = 1.2.1 +SPEEXDSP_SITE = https://downloads.xiph.org/releases/speex +SPEEXDSP_LICENSE = BSD-3-Clause +SPEEXDSP_LICENSE_FILES = COPYING +SPEEXDSP_INSTALL_STAGING = YES +SPEEXDSP_DEPENDENCIES = host-pkgconf + +$(eval $(autotools-package)) diff --git a/package/sphinxbase/Config.in b/package/sphinxbase/Config.in new file mode 100644 index 00000000..00a19f61 --- /dev/null +++ b/package/sphinxbase/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_SPHINXBASE + bool "sphinxbase" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + CMUSphinx toolkit is a leading speech recognition toolkit + with various tools used to build speech applications. CMU + Sphinx toolkit has a number of packages for different tasks + and applications. + + http://cmusphinx.sourceforge.net/ + +comment "sphinxbase needs a toolchain with threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/sphinxbase/sphinxbase.hash b/package/sphinxbase/sphinxbase.hash new file mode 100644 index 00000000..433fba68 --- /dev/null +++ b/package/sphinxbase/sphinxbase.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 06971dbe272d2f73bde0ef7b3538c0c8f8ea885cb171fd6b17a5975bced66e64 sphinxbase-5prealpha.tar.gz +sha256 26f12e0152a5d58c69904e439761a1b2fbb9267b5f04674dbf93667e3e6dd043 src/libsphinxbase/util/bio.c diff --git a/package/sphinxbase/sphinxbase.mk b/package/sphinxbase/sphinxbase.mk new file mode 100644 index 00000000..86f9089b --- /dev/null +++ b/package/sphinxbase/sphinxbase.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# sphinxbase +# +################################################################################ + +SPHINXBASE_VERSION = 5prealpha +SPHINXBASE_SITE = http://downloads.sourceforge.net/project/cmusphinx/sphinxbase/5prealpha +SPHINXBASE_LICENSE = BSD-2-Clause +# Note http://sourceforge.net/p/cmusphinx/bugs/441/ "LICENSE file missing in" +# 5prealpha tarballs". The license is contained in the copyright notice at the +# top of each source file. For example: +SPHINXBASE_LICENSE_FILES = src/libsphinxbase/util/bio.c + +SPHINXBASE_DEPENDENCIES = host-bison + +SPHINXBASE_CONF_OPTS = --without-python --without-lapack + +$(eval $(autotools-package)) diff --git a/package/spi-tools/Config.in b/package/spi-tools/Config.in new file mode 100644 index 00000000..8d263444 --- /dev/null +++ b/package/spi-tools/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_SPI_TOOLS + bool "spi-tools" + help + This package contains some simple command line tools to help + using Linux spidev devices. + + https://github.com/cpb-/spi-tools diff --git a/package/spi-tools/spi-tools.hash b/package/spi-tools/spi-tools.hash new file mode 100644 index 00000000..7a840b91 --- /dev/null +++ b/package/spi-tools/spi-tools.hash @@ -0,0 +1,3 @@ +# locally computed hash +sha256 f6a93ae4f729d42e9200ba491cf9088202b63cb88e011cf6bcb0a7d12432cdc4 spi-tools-1.0.2.tar.gz +sha256 a01259a1b522cf0de95824f9860613b453153eebac468e96196d5d7dba84786c LICENSE diff --git a/package/spi-tools/spi-tools.mk b/package/spi-tools/spi-tools.mk new file mode 100644 index 00000000..c3732fcb --- /dev/null +++ b/package/spi-tools/spi-tools.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# spi-tools +# +################################################################################ + +SPI_TOOLS_VERSION = 1.0.2 +SPI_TOOLS_SITE = $(call github,cpb-,spi-tools,$(SPI_TOOLS_VERSION)) +# autoreconf must be run as specified in package documentation +SPI_TOOLS_AUTORECONF = YES +SPI_TOOLS_LICENSE = GPL-2.0 +SPI_TOOLS_LICENSE_FILES = LICENSE + +$(eval $(autotools-package)) diff --git a/package/spice-protocol/Config.in b/package/spice-protocol/Config.in new file mode 100644 index 00000000..63b08aa0 --- /dev/null +++ b/package/spice-protocol/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_SPICE_PROTOCOL + bool "spice protocol" + help + The Spice project aims to provide a complete open source + solution for interaction with virtualized desktop devices. + The Spice project deals with both the virtualized devices + and the front-end. Interaction between front-end and + back-end is done using VD-Interfaces. + + This package implements the protocol-part of Spice. + + http://www.spice-space.org/ diff --git a/package/spice-protocol/spice-protocol.hash b/package/spice-protocol/spice-protocol.hash new file mode 100644 index 00000000..cd74c84e --- /dev/null +++ b/package/spice-protocol/spice-protocol.hash @@ -0,0 +1,5 @@ +# From https://www.spice-space.org/download/releases/spice-protocol-0.14.4.tar.xz.sha256sum +sha256 04ffba610d9fd441cfc47dfaa135d70096e60b1046d2119d8db2f8ea0d17d912 spice-protocol-0.14.4.tar.xz + +# Hash for license file +sha256 eb55ea746be694c449224c7ddce6340648b075fd377281712a19094e7fb7ef92 COPYING diff --git a/package/spice-protocol/spice-protocol.mk b/package/spice-protocol/spice-protocol.mk new file mode 100644 index 00000000..dbeeb90b --- /dev/null +++ b/package/spice-protocol/spice-protocol.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# spice-protocol +# +################################################################################ + +SPICE_PROTOCOL_VERSION = 0.14.4 +SPICE_PROTOCOL_SOURCE = spice-protocol-$(SPICE_PROTOCOL_VERSION).tar.xz +SPICE_PROTOCOL_SITE = http://www.spice-space.org/download/releases +SPICE_PROTOCOL_LICENSE = BSD-3-Clause +SPICE_PROTOCOL_LICENSE_FILES = COPYING +SPICE_PROTOCOL_INSTALL_STAGING = YES + +$(eval $(meson-package)) diff --git a/package/spice/0001-server-add-SSL_OP_NO_RENEGOTIATION-fallback-path.patch b/package/spice/0001-server-add-SSL_OP_NO_RENEGOTIATION-fallback-path.patch new file mode 100644 index 00000000..edb8b2ed --- /dev/null +++ b/package/spice/0001-server-add-SSL_OP_NO_RENEGOTIATION-fallback-path.patch @@ -0,0 +1,43 @@ +From 5e580eefac44d0c709afcf93eb5fca2fb353166a Mon Sep 17 00:00:00 2001 +From: orbea +Date: Fri, 26 May 2023 13:38:34 -0700 +Subject: [PATCH] server: add SSL_OP_NO_RENEGOTIATION fallback path + +With LibreSSL SSL_OP_NO_CLIENT_RENEGOTIATION is opaque which is not +compatible with the OpenSSL 1.0.2 and earlier code path in +red-stream.cpp while SSL_OP_NO_RENEGOTIATION is not yet defined for the +newer OpenSSL code path in reds.cpp. + +So with OpenSSL 1.1.0 and later if SSL_OP_NO_RENEGOTIATION is undefined +and SSL_OP_NO_CLIENT_RENEGOTIATION is defined then define the former as +the latter. This will allow the build to succeed with LibreSSL 3.7.2 and +in the future when newer LibreSSL versions add SSL_OP_NO_RENEGOTIATION +that code path will then be used automatically. + +Signed-off-by: orbea +Acked-by: Frediano Ziglio + +Upstream: https://gitlab.freedesktop.org/spice/spice/-/commit/5e580eefac44d0c709afcf93eb5fca2fb353166a +Signed-off-by: Fabrice Fontaine +--- + server/red-stream.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/server/red-stream.h b/server/red-stream.h +index 716e93317..8e57c5e5e 100644 +--- a/server/red-stream.h ++++ b/server/red-stream.h +@@ -25,6 +25,10 @@ + + SPICE_BEGIN_DECLS + ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(SSL_OP_NO_RENEGOTIATION) && defined(SSL_OP_NO_CLIENT_RENEGOTIATION) ++#define SSL_OP_NO_RENEGOTIATION SSL_OP_NO_CLIENT_RENEGOTIATION ++#endif ++ + typedef void (*AsyncReadDone)(void *opaque); + typedef void (*AsyncReadError)(void *opaque, int err); + +-- +GitLab + diff --git a/package/spice/Config.in b/package/spice/Config.in new file mode 100644 index 00000000..ca5c562c --- /dev/null +++ b/package/spice/Config.in @@ -0,0 +1,26 @@ +comment "spice server needs a toolchain w/ wchar, threads, C++" + depends on BR2_i386 || BR2_x86_64 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_SPICE + bool "spice server" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_PIXMAN + select BR2_PACKAGE_SPICE_PROTOCOL + help + The Spice project aims to provide a complete open source + solution for interaction with virtualized desktop devices. + The Spice project deals with both the virtualized devices + and the front-end. Interaction between front-end and + back-end is done using VD-Interfaces. + + This package implements the server-part of Spice. + + http://www.spice-space.org/ diff --git a/package/spice/spice.hash b/package/spice/spice.hash new file mode 100644 index 00000000..b228f213 --- /dev/null +++ b/package/spice/spice.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b320cf8f4bd2852750acb703c15b72856027e5a8554f8217dfbb3cc09deba0f5 spice-0.15.0.tar.bz2 +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/spice/spice.mk b/package/spice/spice.mk new file mode 100644 index 00000000..608a9413 --- /dev/null +++ b/package/spice/spice.mk @@ -0,0 +1,72 @@ +################################################################################ +# +# spice +# +################################################################################ + +SPICE_VERSION = 0.15.0 +SPICE_SOURCE = spice-$(SPICE_VERSION).tar.bz2 +SPICE_SITE = http://www.spice-space.org/download/releases/spice-server +SPICE_LICENSE = LGPL-2.1+ +SPICE_LICENSE_FILES = COPYING +SPICE_CPE_ID_VALID = YES +SPICE_INSTALL_STAGING = YES +SPICE_DEPENDENCIES = \ + host-pkgconf \ + jpeg \ + libglib2 \ + openssl \ + pixman \ + spice-protocol + +# We disable everything for now, because the dependency tree can become +# quite deep if we try to enable some features, and I have not tested that. +SPICE_CONF_OPTS = \ + --disable-gstreamer \ + --disable-opengl \ + --disable-smartcard \ + --without-sasl \ + --disable-manual \ + --disable-tests + +SPICE_DEPENDENCIES += host-pkgconf + +ifeq ($(BR2_PACKAGE_LZ4),y) +SPICE_CONF_OPTS += --enable-lz4 +SPICE_DEPENDENCIES += lz4 +else +SPICE_CONF_OPTS += --disable-lz4 +endif + +ifeq ($(BR2_PACKAGE_OPUS),y) +SPICE_CONF_OPTS += --enable-opus +SPICE_DEPENDENCIES += opus +else +SPICE_CONF_OPTS += --disable-opus +endif + +# We need to tweak spice.pc because it /forgets/ (for static linking) that +# it should link against libz and libjpeg. libz is pkg-config-aware, while +# libjpeg isn't, hence the two-line tweak +define SPICE_POST_INSTALL_STAGING_FIX_PC + $(SED) 's/^\(Requires.private:.*\)$$/\1 zlib/; s/^\(Libs.private:.*\)$$/\1 -ljpeg/;' \ + "$(STAGING_DIR)/usr/lib/pkgconfig/spice-server.pc" +endef +SPICE_POST_INSTALL_STAGING_HOOKS += SPICE_POST_INSTALL_STAGING_FIX_PC + +# It is currently not possible to detect if stack-protection is available +# or not, because it requires support from both the compiler *and* the +# C library, but the C library (eg. uClibc) can be compiled without that +# support, even if gcc accepts the -fstack-protector-all option. +# spice's ./configure only checks for gcc's -fstack-protector-all option, +# so it misses the case where the C library doe not provide the requires +# support. +# A correct fix would be to fix spice's ./configure to also check the C +# library, but it might be much more involved. +# So, we simply disable it for now. After all, as uClibc's help puts it: +# Note that NOEXECSTACK on a kernel with address space randomization +# is generally sufficient to prevent most buffer overflow exploits +# without increasing code size. +SPICE_CONF_OPTS += gl_cv_warn__fstack_protector_all=no + +$(eval $(autotools-package)) diff --git a/package/spidev_test/Config.in b/package/spidev_test/Config.in new file mode 100644 index 00000000..abfa885b --- /dev/null +++ b/package/spidev_test/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_SPIDEV_TEST + bool "spidev_test" + help + SPI testing utility (using spidev driver). + + This package builds and installs the userspace 'spidev_test' + command. It is up to the user to ensure that the kernel + configuration has all suitable options enabled to allow a + proper operation of 'spidev_test'. + + The version used is based on your toolchain headers version, + if it's older than 3.15 then 3.0 is used, up to headers 5.7 + version 4.10 is used and otherwise version 5.8. + This means you won't have quad-pumped SPI support if your + toolchain is too old. + + https://www.kernel.org/doc/html/latest/spi/index.html diff --git a/package/spidev_test/spidev_test.hash b/package/spidev_test/spidev_test.hash new file mode 100644 index 00000000..867920fc --- /dev/null +++ b/package/spidev_test/spidev_test.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 80471c330d8c0bf5ba6479c434a54a54bdd2dc59a703b9c76c2541ec04cfb8c3 spidev_test.c?id=v3.0 +sha256 3cf76b15d9a8644f3f5cbc0387cc02a7d4a392ade39788cbc6367cce98552e2f spidev_test.c?id=v4.10 +sha256 87329094ea3010eae9e65ad7ea2d2309e044845942414aa0ca8f1a7095b80178 spidev_test.c?id=v5.8 diff --git a/package/spidev_test/spidev_test.mk b/package/spidev_test/spidev_test.mk new file mode 100644 index 00000000..bd138b01 --- /dev/null +++ b/package/spidev_test/spidev_test.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# spidev_test +# +################################################################################ + +# Build the latest version that is compatible with the toolchain's kernel headers +# v3.15+ requires SPI_TX_QUAD/SPI_RX_QUAD to build +# Normally kernel headers can't be newer than kernel so switch based on that. +# If you need quad-pumped spi support you need to upgrade your toolchain. +# Note that the location of spidev_test.c changes from v4.5 onwards. + +ifeq ($(BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8),y) +SPIDEV_TEST_VERSION = 5.8 +SPIDEV_TEST_PATH = tools/spi +else ifeq ($(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15),y) +SPIDEV_TEST_VERSION = 4.10 +SPIDEV_TEST_PATH = tools/spi +else +SPIDEV_TEST_VERSION = 3.0 +SPIDEV_TEST_PATH = Documentation/spi +endif + +SPIDEV_TEST_SITE = http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/$(SPIDEV_TEST_PATH) +SPIDEV_TEST_SOURCE = spidev_test.c?id=v$(SPIDEV_TEST_VERSION) +SPIDEV_TEST_LICENSE = GPL-2.0 + +# musl libc requires linux/ioctl.h for _IOC_SIZEBITS. Do a sed patch to keep +# compatibility with different spidev_test.c versions that we support. +define SPIDEV_TEST_ADD_LINUX_IOCTL + $(SED) 's~^#include ~#include \n#include ~' \ + $(@D)/spidev_test.c +endef + +SPIDEV_TEST_POST_PATCH_HOOKS += SPIDEV_TEST_ADD_LINUX_IOCTL + +define SPIDEV_TEST_EXTRACT_CMDS + cp $(SPIDEV_TEST_DL_DIR)/$(SPIDEV_TEST_SOURCE) $(@D)/spidev_test.c +endef + +define SPIDEV_TEST_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CC) $(TARGET_CFLAGS) \ + -o $(@D)/spidev_test $(@D)/spidev_test.c +endef + +define SPIDEV_TEST_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/spidev_test \ + $(TARGET_DIR)/usr/sbin/spidev_test +endef + +$(eval $(generic-package)) diff --git a/package/spirv-headers/Config.in b/package/spirv-headers/Config.in new file mode 100644 index 00000000..e03a6ca1 --- /dev/null +++ b/package/spirv-headers/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_SPIRV_HEADERS + bool "spirv-headers" + depends on BR2_INSTALL_LIBSTDCPP + help + Machine-readable files for the SPIR-V Registry + + https://www.khronos.org/registry/spir-v + +comment "spirv-headers needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/spirv-headers/spirv-headers.hash b/package/spirv-headers/spirv-headers.hash new file mode 100644 index 00000000..136f3df7 --- /dev/null +++ b/package/spirv-headers/spirv-headers.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 32b4c6ae6a2fa9b56c2c17233c8056da47e331f76e117729925825ea3e77a739 spirv-headers-1.3.261.1.tar.gz +sha256 9b243f6f0bf44e295ff411a0f7b7642d1d0dff7cdc42507e9f7206f439e51b5a LICENSE diff --git a/package/spirv-headers/spirv-headers.mk b/package/spirv-headers/spirv-headers.mk new file mode 100644 index 00000000..9f84c42b --- /dev/null +++ b/package/spirv-headers/spirv-headers.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# spirv-headers +# +################################################################################ + +# Keep in sync with spirv-tools version +SPIRV_HEADERS_VERSION = 1.3.261.1 +SPIRV_HEADERS_SITE = $(call github,KhronosGroup,SPIRV-Headers,sdk-$(SPIRV_HEADERS_VERSION)) +SPIRV_HEADERS_LICENSE = MIT +SPIRV_HEADERS_LICENSE_FILES = LICENSE + +SPIRV_HEADERS_INSTALL_STAGING = YES +SPIRV_HEADERS_INSTALL_TARGET = NO + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/spirv-llvm-translator/spirv-llvm-translator.hash b/package/spirv-llvm-translator/spirv-llvm-translator.hash new file mode 100644 index 00000000..4500fc4f --- /dev/null +++ b/package/spirv-llvm-translator/spirv-llvm-translator.hash @@ -0,0 +1,3 @@ +# locally calculated +sha256 0a00a72a5b004eeb73f9c96c9c6ba2d6de232cbf3c22a7b322047604d24402ba spirv-llvm-translator-v15.0.0-46-ge82ecc2bd7295604fcf1824e47c95fa6a09c6e63.tar.gz +sha256 e3bc36440fc927c62d5cc24efeefe225a14d4e34ffeb0c92e430625cce9ee444 LICENSE.TXT diff --git a/package/spirv-llvm-translator/spirv-llvm-translator.mk b/package/spirv-llvm-translator/spirv-llvm-translator.mk new file mode 100644 index 00000000..523890a9 --- /dev/null +++ b/package/spirv-llvm-translator/spirv-llvm-translator.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# spirv-llvm-translator +# +################################################################################ + +# Generate version string using: +# git describe --tags --match 'v15*' --abbrev=40 origin/llvm_release_150 +SPIRV_LLVM_TRANSLATOR_VERSION = v15.0.0-46-ge82ecc2bd7295604fcf1824e47c95fa6a09c6e63 +SPIRV_LLVM_TRANSLATOR_SITE = $(call github,KhronosGroup,SPIRV-LLVM-Translator,$(SPIRV_LLVM_TRANSLATOR_VERSION)) +SPIRV_LLVM_TRANSLATOR_LICENSE = NCSA +SPIRV_LLVM_TRANSLATOR_LICENSE_FILES = LICENSE.TXT +HOST_SPIRV_LLVM_TRANSLATOR_DEPENDENCIES = host-clang host-llvm host-spirv-headers +HOST_SPIRV_LLVM_TRANSLATOR_CONF_OPTS = \ + -DLLVM_BUILD_TOOLS=ON \ + -DLLVM_DIR=$(HOST_DIR)/lib/cmake/llvm \ + -DLLVM_SPIRV_BUILD_EXTERNAL=YES \ + -DLLVM_SPIRV_INCLUDE_TESTS=OFF \ + -DLLVM_EXTERNAL_PROJECTS="SPIRV-Headers" \ + -DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=$(HOST_DIR)/include + +$(eval $(host-cmake-package)) diff --git a/package/spirv-tools/Config.in b/package/spirv-tools/Config.in new file mode 100644 index 00000000..98b0c465 --- /dev/null +++ b/package/spirv-tools/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_SPIRV_TOOLS + bool "spirv-tools" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # C++17 filesystem + select BR2_PACKAGE_SPIRV_HEADERS + help + The SPIR-V Tools project provides an API and commands for + processing SPIR-V modules. + + https://github.com/KhronosGroup/SPIRV-Tools + +comment "spirv-tools needs a toolchain w/ C++, dynamic library, gcc >= 8" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_8 diff --git a/package/spirv-tools/spirv-tools.hash b/package/spirv-tools/spirv-tools.hash new file mode 100644 index 00000000..65cb9c61 --- /dev/null +++ b/package/spirv-tools/spirv-tools.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 ead95c626ad482882a141d1aa0ce47b9453871f72c42c0b28d39c82f60a52008 spirv-tools-1.3.261.1.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/spirv-tools/spirv-tools.mk b/package/spirv-tools/spirv-tools.mk new file mode 100644 index 00000000..e863911b --- /dev/null +++ b/package/spirv-tools/spirv-tools.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# spirv-tools +# +################################################################################ + +# Keep in sync with spirv-headers version +SPIRV_TOOLS_VERSION = 1.3.261.1 +SPIRV_TOOLS_SITE = $(call github,KhronosGroup,SPIRV-Tools,sdk-$(SPIRV_TOOLS_VERSION)) +SPIRV_TOOLS_LICENSE = Apache-2.0 +SPIRV_TOOLS_LICENSE_FILES = LICENSE +SPIRV_TOOLS_DEPENDENCIES = spirv-headers +SPIRV_TOOLS_INSTALL_STAGING = YES + +SPIRV_TOOLS_CONF_OPTS = \ + -DSPIRV-Headers_SOURCE_DIR=$(STAGING_DIR)/usr \ + -DSPIRV_TOOLS_BUILD_STATIC=OFF \ + -DSPIRV_SKIP_TESTS=ON \ + -DSPIRV_WERROR=OFF + +$(eval $(cmake-package)) diff --git a/package/sqlcipher/Config.in b/package/sqlcipher/Config.in new file mode 100644 index 00000000..332754b1 --- /dev/null +++ b/package/sqlcipher/Config.in @@ -0,0 +1,37 @@ +config BR2_PACKAGE_SQLCIPHER + bool "sqlcipher" + depends on !BR2_PACKAGE_SQLITE + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_OPENSSL + help + SQLCipher is an SQLite extension that provides 256 bits AES + encryption of database files. Note that it is a fork of + SQLite and they cannot be installed side-by-side. + + http://sqlcipher.net + +if BR2_PACKAGE_SQLCIPHER + +config BR2_PACKAGE_SQLCIPHER_READLINE + bool "Command-line editing" + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_READLINE + help + Enable command-line editing. This requires ncurses and + readline. + +config BR2_PACKAGE_SQLCIPHER_STAT3 + bool "Additional query optimizations (stat3)" + help + Adds additional logic to the ANALYZE command and to the + query planner that can help SQLite to choose a better query + plan under certain situations. + +endif + +comment "sqlcipher conflicts with sqlite" + depends on BR2_PACKAGE_SQLITE + +comment "sqlcipher needs a toolchain w/ threads" + depends on !BR2_PACKAGE_SQLITE + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/sqlcipher/sqlcipher.hash b/package/sqlcipher/sqlcipher.hash new file mode 100644 index 00000000..7632c1c8 --- /dev/null +++ b/package/sqlcipher/sqlcipher.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 014ef9d4f5b5f4e7af4d93ad399667947bb55e31860e671f0def1b8ae6f05de0 sqlcipher-4.5.5.tar.gz +sha256 09e4af560ce2e3c9c2aa6b564e35947b03db7d1ae345f22a32793ed46542cc14 LICENSE diff --git a/package/sqlcipher/sqlcipher.mk b/package/sqlcipher/sqlcipher.mk new file mode 100644 index 00000000..8d062ccf --- /dev/null +++ b/package/sqlcipher/sqlcipher.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# sqlcipher +# +################################################################################ + +SQLCIPHER_VERSION = 4.5.5 +SQLCIPHER_SITE = $(call github,sqlcipher,sqlcipher,v$(SQLCIPHER_VERSION)) +SQLCIPHER_LICENSE = BSD-3-Clause +SQLCIPHER_LICENSE_FILES = LICENSE +SQLCIPHER_CPE_ID_VENDOR = zetetic +SQLCIPHER_DEPENDENCIES = host-pkgconf openssl host-tcl +SQLCIPHER_INSTALL_STAGING = YES + +SQLCIPHER_CONF_ENV = \ + CFLAGS="$(TARGET_CFLAGS) $(SQLCIPHER_CFLAGS)" \ + TCLSH_CMD=$(HOST_DIR)/bin/tclsh$(TCL_VERSION_MAJOR) + +SQLCIPHER_CONF_OPTS = \ + --enable-threadsafe \ + --disable-tcl + +SQLCIPHER_CFLAGS += -DSQLITE_HAS_CODEC # Required according to the README +SQLCIPHER_CONF_ENV += LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl` + +ifeq ($(BR2_PACKAGE_SQLCIPHER_STAT3),y) +SQLCIPHER_CFLAGS += -DSQLITE_ENABLE_STAT3 +endif + +ifeq ($(BR2_PACKAGE_SQLCIPHER_READLINE),y) +SQLCIPHER_DEPENDENCIES += ncurses readline +SQLCIPHER_CONF_OPTS += --with-readline-inc="-I$(STAGING_DIR)/usr/include" +else +SQLCIPHER_CONF_OPTS += --disable-readline +endif + +ifeq ($(BR2_STATIC_LIBS),y) +SQLCIPHER_CONF_OPTS += --disable-load-extension +else +SQLCIPHER_CONF_OPTS += --enable-load-extension +endif + +$(eval $(autotools-package)) diff --git a/package/sqlite/Config.in b/package/sqlite/Config.in new file mode 100644 index 00000000..0ae9878d --- /dev/null +++ b/package/sqlite/Config.in @@ -0,0 +1,73 @@ +config BR2_PACKAGE_SQLITE + bool "sqlite" + help + SQLite is a small C library that implements a + self-contained, embeddable, zero-configuration SQL database + engine. + + https://www.sqlite.org/ + +if BR2_PACKAGE_SQLITE + +config BR2_PACKAGE_SQLITE_STAT4 + bool "Additional query optimizations (stat4)" + help + Adds additional logic to the ANALYZE command and to the + query planner that can help SQLite to choose a better query + plan under certain situations. + +config BR2_PACKAGE_SQLITE_ENABLE_COLUMN_METADATA + bool "Enable convenient access to meta-data about tables and queries" + help + When this option is defined there are some additional APIs + enabled to acces meta-data about tables and queries (see + https://sqlite.org/compile.html). + +config BR2_PACKAGE_SQLITE_ENABLE_FTS3 + bool "Enable version 3 of the full-text search engine" + help + When this option is defined in the amalgamation (see + http://www.sqlite.org/amalgamation.html), version 3 of the + full-text search engine is added to the build automatically. + +config BR2_PACKAGE_SQLITE_ENABLE_JSON1 + bool "Enable the JSON extensions for SQLite" + help + When this option is defined in the amalgamation, the JSON + extensions are added to the build automatically. + +config BR2_PACKAGE_SQLITE_ENABLE_UNLOCK_NOTIFY + bool "Enable sqlite3_unlock_notify() interface" + help + This option enables the sqlite3_unlock_notify() interface + and its accosiated functionality. See the documentation + http://www.sqlite.org/unlock_notify.html for additional + information. + +config BR2_PACKAGE_SQLITE_SECURE_DELETE + bool "Set the secure_delete pragma on by default" + help + This compile-time option changes the default settings of the + secure_delete pragma. When this option is not used, + secure_delete defaults to off. When this option is present, + secure_delete defaults to on. + + The secure_delete setting causes deleted content to be + overwritten with zeros. There is a small performance penalty + for this since additional I/O must occur. On the other hand, + secure_delete can prevent sensitive information from + lingering in unused parts of the database file after it has + allegedly been deleted. See the documentation on the + http://www.sqlite.org/pragma.html#pragma_secure_delete for + additional information. + +config BR2_PACKAGE_SQLITE_NO_SYNC + bool "Disable fsync" + help + By default SQLite forces all database transactions to + storage immediately using fsync() to protect against data + loss in case of power failure. This option turns this + behavior off resulting in higher performance especially when + using slow flash storage. + +endif diff --git a/package/sqlite/sqlite.hash b/package/sqlite/sqlite.hash new file mode 100644 index 00000000..5eae86f1 --- /dev/null +++ b/package/sqlite/sqlite.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 6f8e6a7b335273748816f9b3b62bbdc372a889de8782d7f048c653a447417a7d sqlite-autoconf-3460000.tar.gz +sha256 66e056b6e8687f32af30d5187611b98b12a8f46f07aaf62f43585f276e8f0ac9 tea/license.terms diff --git a/package/sqlite/sqlite.mk b/package/sqlite/sqlite.mk new file mode 100644 index 00000000..8bd0a5cb --- /dev/null +++ b/package/sqlite/sqlite.mk @@ -0,0 +1,79 @@ +################################################################################ +# +# sqlite +# +################################################################################ + +SQLITE_VERSION = 3.46.0 +SQLITE_TAR_VERSION = 3460000 +SQLITE_SOURCE = sqlite-autoconf-$(SQLITE_TAR_VERSION).tar.gz +SQLITE_SITE = https://www.sqlite.org/2024 +SQLITE_LICENSE = blessing +SQLITE_LICENSE_FILES = tea/license.terms +SQLITE_CPE_ID_VENDOR = sqlite +SQLITE_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_SQLITE_STAT4),y) +SQLITE_CFLAGS += -DSQLITE_ENABLE_STAT4 +endif + +ifeq ($(BR2_PACKAGE_SQLITE_ENABLE_COLUMN_METADATA),y) +SQLITE_CFLAGS += -DSQLITE_ENABLE_COLUMN_METADATA +endif + +ifeq ($(BR2_PACKAGE_SQLITE_ENABLE_FTS3),y) +SQLITE_CFLAGS += -DSQLITE_ENABLE_FTS3 +endif + +ifeq ($(BR2_PACKAGE_SQLITE_ENABLE_JSON1),y) +SQLITE_CFLAGS += -DSQLITE_ENABLE_JSON1 +endif + +ifeq ($(BR2_PACKAGE_SQLITE_ENABLE_UNLOCK_NOTIFY),y) +SQLITE_CFLAGS += -DSQLITE_ENABLE_UNLOCK_NOTIFY +endif + +ifeq ($(BR2_PACKAGE_SQLITE_SECURE_DELETE),y) +SQLITE_CFLAGS += -DSQLITE_SECURE_DELETE +endif + +ifeq ($(BR2_PACKAGE_SQLITE_NO_SYNC),y) +SQLITE_CFLAGS += -DSQLITE_NO_SYNC +endif + +# Building with Microblaze Gcc 4.9 makes compiling to hang. +# Work around using -O0 +ifeq ($(BR2_microblaze):$(BR2_TOOLCHAIN_GCC_AT_LEAST_5),y:) +SQLITE_CFLAGS += $(TARGET_CFLAGS) -O0 +else +# fallback to standard -O3 when -Ofast is present to avoid -ffast-math +SQLITE_CFLAGS += $(subst -Ofast,-O3,$(TARGET_CFLAGS)) +endif + +SQLITE_CONF_ENV = CFLAGS="$(SQLITE_CFLAGS)" + +ifeq ($(BR2_STATIC_LIBS),y) +SQLITE_CONF_OPTS += --enable-dynamic-extensions=no +else +SQLITE_CONF_OPTS += --disable-static-shell +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +SQLITE_CONF_OPTS += --enable-threadsafe +else +SQLITE_CONF_OPTS += --disable-threadsafe +SQLITE_CFLAGS += -DSQLITE_THREADSAFE=0 +endif + +ifeq ($(BR2_PACKAGE_NCURSES)$(BR2_PACKAGE_READLINE),yy) +SQLITE_DEPENDENCIES += ncurses readline +SQLITE_CONF_OPTS += --disable-editline --enable-readline +else ifeq ($(BR2_PACKAGE_LIBEDIT),y) +SQLITE_DEPENDENCIES += libedit +SQLITE_CONF_OPTS += --enable-editline --disable-readline +else +SQLITE_CONF_OPTS += --disable-editline --disable-readline +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/sqlitecpp/Config.in b/package/sqlitecpp/Config.in new file mode 100644 index 00000000..31de9a39 --- /dev/null +++ b/package/sqlitecpp/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_SQLITECPP + bool "sqlitecpp" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_SQLITE_ENABLE_COLUMN_METADATA + help + SQLiteC++ (SQLiteCpp) is a lean and easy to use + C++ SQLite3 wrapper. + + https://github.com/SRombauts/SQLiteCpp + +comment "sqlitecpp needs a toolchain w/ C++11, gcc >= 4.9" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/sqlitecpp/sqlitecpp.hash b/package/sqlitecpp/sqlitecpp.hash new file mode 100644 index 00000000..1269abf6 --- /dev/null +++ b/package/sqlitecpp/sqlitecpp.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 71f990f9fb4b004533b6859ce40729af823b87fe691dd99ca084a7fd40db54b9 sqlitecpp-3.3.1.tar.gz +sha256 635de1440f6064c6ca9ca325c163d4d0771e783c6d77783d9470eaf56e346c67 LICENSE.txt diff --git a/package/sqlitecpp/sqlitecpp.mk b/package/sqlitecpp/sqlitecpp.mk new file mode 100644 index 00000000..5571d325 --- /dev/null +++ b/package/sqlitecpp/sqlitecpp.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# SQLiteC++ +# +################################################################################ + +SQLITECPP_VERSION = 3.3.1 +SQLITECPP_SITE = $(call github,SRombauts,SQLiteCpp,$(SQLITECPP_VERSION)) +SQLITECPP_LICENSE = MIT +SQLITECPP_LICENSE_FILES = LICENSE.txt +SQLITECPP_DEPENDENCIES = sqlite +SQLITECPP_INSTALL_STAGING = YES + +SQLITECPP_CONF_OPTS = \ + -DSQLITECPP_INTERNAL_SQLITE=OFF \ + -DSQLITECPP_RUN_CPPLINT=OFF \ + -DSQLITECPP_RUN_CPPCHECK=OFF + +$(eval $(cmake-package)) diff --git a/package/squashfs/Config.in b/package/squashfs/Config.in new file mode 100644 index 00000000..60b243d9 --- /dev/null +++ b/package/squashfs/Config.in @@ -0,0 +1,60 @@ +config BR2_PACKAGE_SQUASHFS + bool "squashfs" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + # ensure at least on compression backend (defaults to gzip) + select BR2_PACKAGE_SQUASHFS_GZIP if !( \ + BR2_PACKAGE_SQUASHFS_LZ4 || \ + BR2_PACKAGE_SQUASHFS_LZMA || \ + BR2_PACKAGE_SQUASHFS_LZO || \ + BR2_PACKAGE_SQUASHFS_XZ || \ + BR2_PACKAGE_SQUASHFS_ZSTD) + help + Tools to generate SquashFS filesystems. + + https://github.com/plougher/squashfs-tools + +if BR2_PACKAGE_SQUASHFS + +config BR2_PACKAGE_SQUASHFS_GZIP + bool "gzip support" + default y + select BR2_PACKAGE_ZLIB + help + Support GZIP compression algorithm + +config BR2_PACKAGE_SQUASHFS_LZ4 + bool "lz4 support" + select BR2_PACKAGE_LZ4 + help + Support LZ4 compression algorithm + +config BR2_PACKAGE_SQUASHFS_LZMA + bool "lzma support" + select BR2_PACKAGE_XZ + help + Support LZMA compression algorithm + +config BR2_PACKAGE_SQUASHFS_LZO + bool "lzo support" + select BR2_PACKAGE_LZO + help + Support LZO compression algorithm + +config BR2_PACKAGE_SQUASHFS_XZ + bool "xz support" + select BR2_PACKAGE_XZ + help + Support XZ compression algorithm + +config BR2_PACKAGE_SQUASHFS_ZSTD + bool "zstd support" + select BR2_PACKAGE_ZSTD + help + Support ZSTD compression algorithm + +endif + +comment "squashfs needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/package/squashfs/Config.in.host b/package/squashfs/Config.in.host new file mode 100644 index 00000000..aa25b376 --- /dev/null +++ b/package/squashfs/Config.in.host @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HOST_SQUASHFS + bool "host squashfs" + help + Tools to generate SquashFS filesystems. + + https://github.com/plougher/squashfs-tools diff --git a/package/squashfs/squashfs.hash b/package/squashfs/squashfs.hash new file mode 100644 index 00000000..bc45b4ab --- /dev/null +++ b/package/squashfs/squashfs.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 94201754b36121a9f022a190c75f718441df15402df32c2b520ca331a107511c squashfs-4.6.1.tar.gz + +# License files +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/squashfs/squashfs.mk b/package/squashfs/squashfs.mk new file mode 100644 index 00000000..b9fbf54b --- /dev/null +++ b/package/squashfs/squashfs.mk @@ -0,0 +1,98 @@ +################################################################################ +# +# squashfs +# +################################################################################ + +SQUASHFS_VERSION = 4.6.1 +SQUASHFS_SITE = $(call github,plougher,squashfs-tools,$(SQUASHFS_VERSION)) +SQUASHFS_LICENSE = GPL-2.0+ +SQUASHFS_LICENSE_FILES = COPYING +SQUASHFS_CPE_ID_VALID = YES +SQUASHFS_MAKE_ARGS = XATTR_SUPPORT=1 + +ifeq ($(BR2_PACKAGE_SQUASHFS_LZ4),y) +SQUASHFS_DEPENDENCIES += lz4 +SQUASHFS_MAKE_ARGS += LZ4_SUPPORT=1 COMP_DEFAULT=lz4 +else +SQUASHFS_MAKE_ARGS += LZ4_SUPPORT=0 +endif + +ifeq ($(BR2_PACKAGE_SQUASHFS_LZMA),y) +SQUASHFS_DEPENDENCIES += xz +SQUASHFS_MAKE_ARGS += LZMA_XZ_SUPPORT=1 COMP_DEFAULT=lzma +else +SQUASHFS_MAKE_ARGS += LZMA_XZ_SUPPORT=0 +endif + +ifeq ($(BR2_PACKAGE_SQUASHFS_XZ),y) +SQUASHFS_DEPENDENCIES += xz +SQUASHFS_MAKE_ARGS += XZ_SUPPORT=1 COMP_DEFAULT=xz +else +SQUASHFS_MAKE_ARGS += XZ_SUPPORT=0 +endif + +ifeq ($(BR2_PACKAGE_SQUASHFS_LZO),y) +SQUASHFS_DEPENDENCIES += lzo +SQUASHFS_MAKE_ARGS += LZO_SUPPORT=1 COMP_DEFAULT=lzo +else +SQUASHFS_MAKE_ARGS += LZO_SUPPORT=0 +endif + +ifeq ($(BR2_PACKAGE_SQUASHFS_ZSTD),y) +SQUASHFS_DEPENDENCIES += zstd +SQUASHFS_MAKE_ARGS += ZSTD_SUPPORT=1 COMP_DEFAULT=zstd +else +SQUASHFS_MAKE_ARGS += ZSTD_SUPPORT=0 +endif + +ifeq ($(BR2_PACKAGE_SQUASHFS_GZIP),y) +SQUASHFS_DEPENDENCIES += zlib +SQUASHFS_MAKE_ARGS += GZIP_SUPPORT=1 COMP_DEFAULT=gzip +else +SQUASHFS_MAKE_ARGS += GZIP_SUPPORT=0 +endif + +HOST_SQUASHFS_DEPENDENCIES = host-zlib host-lz4 host-lzo host-xz host-zstd + +HOST_SQUASHFS_MAKE_ARGS = \ + XATTR_SUPPORT=1 \ + XZ_SUPPORT=1 \ + GZIP_SUPPORT=1 \ + LZ4_SUPPORT=1 \ + LZO_SUPPORT=1 \ + LZMA_XZ_SUPPORT=1 \ + ZSTD_SUPPORT=1 + +define SQUASHFS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + CC="$(TARGET_CC)" \ + EXTRA_CFLAGS="$(TARGET_CFLAGS) -fgnu89-inline" \ + EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \ + $(SQUASHFS_MAKE_ARGS) \ + -C $(@D)/squashfs-tools/ +endef + +define SQUASHFS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(SQUASHFS_MAKE_ARGS) \ + -C $(@D)/squashfs-tools/ INSTALL_DIR=$(TARGET_DIR)/usr/bin \ + INSTALL_MANPAGES_DIR="" install +endef + +define HOST_SQUASHFS_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) \ + CC="$(HOSTCC)" \ + EXTRA_CFLAGS="$(HOST_CFLAGS)" \ + EXTRA_LDFLAGS="$(HOST_LDFLAGS)" \ + $(HOST_SQUASHFS_MAKE_ARGS) \ + -C $(@D)/squashfs-tools/ +endef + +define HOST_SQUASHFS_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_SQUASHFS_MAKE_ARGS) \ + -C $(@D)/squashfs-tools/ INSTALL_DIR=$(HOST_DIR)/bin \ + INSTALL_MANPAGES_DIR="" install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/squeezelite/Config.in b/package/squeezelite/Config.in new file mode 100644 index 00000000..a0347591 --- /dev/null +++ b/package/squeezelite/Config.in @@ -0,0 +1,49 @@ +config BR2_PACKAGE_SQUEEZELITE + bool "squeezelite" + depends on BR2_USE_WCHAR # flac + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_USE_MMU # mpg123 + depends on !BR2_STATIC_LIBS # dlopen + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_MIXER + select BR2_PACKAGE_FLAC + select BR2_PACKAGE_LIBMAD + select BR2_PACKAGE_LIBVORBIS + select BR2_PACKAGE_MPG123 + help + Logitech Media Server client + + https://github.com/ralph-irving/squeezelite/ + +if BR2_PACKAGE_SQUEEZELITE + +config BR2_PACKAGE_SQUEEZELITE_FFMPEG + bool "Enable WMA and ALAC decoding" + default y + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + select BR2_PACKAGE_FFMPEG + +config BR2_PACKAGE_SQUEEZELITE_DSD + bool "Enable DSD decoding" + +config BR2_PACKAGE_SQUEEZELITE_LIRC + bool "Enable lirc support" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LIRC_TOOLS + +comment "lirc support needs a toolchain with C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_SQUEEZELITE_RESAMPLE + bool "Enable resampling support" + select BR2_PACKAGE_LIBSOXR + +config BR2_PACKAGE_SQUEEZELITE_VISEXPORT + bool "Enable visualiser support" + +endif + +comment "squeezelite needs a toolchain w/ wchar, NPTL, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \ + || BR2_STATIC_LIBS diff --git a/package/squeezelite/squeezelite.hash b/package/squeezelite/squeezelite.hash new file mode 100644 index 00000000..67ed4c87 --- /dev/null +++ b/package/squeezelite/squeezelite.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 7f0342f4943d3c3498d930060f5a1e8d63ccb7282b9c21f964926e310449d592 squeezelite-71c012ad9ba102feb95823b7b9dc17e5305689c7.tar.gz +sha256 dc01c3da33fea11ed918f9e437b88baa59c70401aab0dad747e33dd9e8035706 LICENSE.txt diff --git a/package/squeezelite/squeezelite.mk b/package/squeezelite/squeezelite.mk new file mode 100644 index 00000000..b0347c4d --- /dev/null +++ b/package/squeezelite/squeezelite.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# squeezelite +# +################################################################################ + +SQUEEZELITE_VERSION = 71c012ad9ba102feb95823b7b9dc17e5305689c7 +SQUEEZELITE_SITE = $(call github,ralph-irving,squeezelite,$(SQUEEZELITE_VERSION)) +SQUEEZELITE_LICENSE = GPL-3.0 +SQUEEZELITE_LICENSE_FILES = LICENSE.txt +SQUEEZELITE_DEPENDENCIES = alsa-lib flac libmad libvorbis mpg123 +SQUEEZELITE_MAKE_OPTS = -DLINKALL + +ifeq ($(BR2_PACKAGE_FAAD2),y) +SQUEEZELITE_DEPENDENCIES += faad2 +else +SQUEEZELITE_MAKE_OPTS += -DNO_FAAD +endif + +ifeq ($(BR2_PACKAGE_SQUEEZELITE_FFMPEG),y) +SQUEEZELITE_DEPENDENCIES += ffmpeg +SQUEEZELITE_MAKE_OPTS += -DFFMPEG +endif + +ifeq ($(BR2_PACKAGE_SQUEEZELITE_DSD),y) +SQUEEZELITE_MAKE_OPTS += -DDSD +endif + +ifeq ($(BR2_PACKAGE_SQUEEZELITE_LIRC),y) +SQUEEZELITE_DEPENDENCIES += lirc-tools +SQUEEZELITE_MAKE_OPTS += -DIR +endif + +ifeq ($(BR2_PACKAGE_SQUEEZELITE_RESAMPLE),y) +SQUEEZELITE_DEPENDENCIES += libsoxr +SQUEEZELITE_MAKE_OPTS += -DRESAMPLE +endif + +ifeq ($(BR2_PACKAGE_SQUEEZELITE_VISEXPORT),y) +SQUEEZELITE_MAKE_OPTS += -DVISEXPORT +endif + +define SQUEEZELITE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + OPTS="$(SQUEEZELITE_MAKE_OPTS)" -C $(@D) all +endef + +define SQUEEZELITE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/squeezelite \ + $(TARGET_DIR)/usr/bin/squeezelite +endef + +$(eval $(generic-package)) diff --git a/package/squid/Config.in b/package/squid/Config.in new file mode 100644 index 00000000..ab13e735 --- /dev/null +++ b/package/squid/Config.in @@ -0,0 +1,26 @@ +comment "squid needs a toolchain w/ C++, threads, gcc >= 8, host gcc >= 8" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_8 || \ + !BR2_HOST_GCC_AT_LEAST_8 + +config BR2_PACKAGE_SQUID + bool "squid" + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # C++17 + depends on BR2_HOST_GCC_AT_LEAST_8 # C++17 + # needs fork() + depends on BR2_USE_MMU + select BR2_PACKAGE_LIBCAP + select BR2_PACKAGE_LIBTOOL + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_LIBXML2 + help + Caching proxy for the Web supporting HTTP, HTTPS, FTP, and + more. + + http://www.squid-cache.org/ diff --git a/package/squid/S97squid b/package/squid/S97squid new file mode 100644 index 00000000..05fb93e3 --- /dev/null +++ b/package/squid/S97squid @@ -0,0 +1,39 @@ +#!/bin/sh + +[ -f /etc/squid.conf ] || exit 0 + +case "$1" in + start) + printf "Starting squid: " + if [ ! -d /var/log/squid ]; then + mkdir -p /var/log/squid + chown squid:squid /var/log/squid + fi + start-stop-daemon -S -x /usr/sbin/squid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + + stop) + printf "Stopping squid: " + /usr/sbin/squid -k shutdown + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + + reload) + printf "Reloading squid configuration: " + /usr/sbin/squid -k reconfigure + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + + restart) + printf "Restarting squid: " + /usr/sbin/squid -k restart + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + + *) + echo "Usage: $0 {start|stop|reload|restart}" + exit 1 +esac + +exit 0 diff --git a/package/squid/squid.hash b/package/squid/squid.hash new file mode 100644 index 00000000..e0dede86 --- /dev/null +++ b/package/squid/squid.hash @@ -0,0 +1,6 @@ +# From http://www.squid-cache.org/Versions/v6/squid-6.10.tar.xz.asc +md5 86deefa7282c4388be95260aa4d4cf6a squid-6.10.tar.xz +sha1 70e90865df0e4e9ba7765b622da40bda9bb8fc5d squid-6.10.tar.xz +# Locally calculated +sha256 0b07b187e723f04770dd25beb89aec12030a158696aa8892d87c8b26853408a7 squid-6.10.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/squid/squid.mk b/package/squid/squid.mk new file mode 100644 index 00000000..bfb36640 --- /dev/null +++ b/package/squid/squid.mk @@ -0,0 +1,103 @@ +################################################################################ +# +# squid +# +################################################################################ + +SQUID_VERSION = 6.10 +SQUID_SOURCE = squid-$(SQUID_VERSION).tar.xz +SQUID_SITE = http://www.squid-cache.org/Versions/v6 +SQUID_LICENSE = GPL-2.0+ +SQUID_LICENSE_FILES = COPYING +SQUID_CPE_ID_VENDOR = squid-cache +SQUID_SELINUX_MODULES = apache squid +SQUID_DEPENDENCIES = libcap host-libcap libtool libxml2 host-pkgconf \ + $(if $(BR2_PACKAGE_LIBNETFILTER_CONNTRACK),libnetfilter_conntrack) +SQUID_CONF_ENV = \ + ac_cv_epoll_works=yes \ + ac_cv_func_setresuid=yes \ + ac_cv_func_va_copy=yes \ + ac_cv_func___va_copy=yes \ + ac_cv_func_strnstr=no \ + ac_cv_have_squid=yes \ + BUILDCXX="$(HOSTCXX)" \ + BUILDCXXFLAGS="$(HOST_CXXFLAGS) -std=c++17" +SQUID_CONF_OPTS = \ + --enable-async-io=8 \ + --enable-linux-netfilter \ + --enable-removal-policies="lru,heap" \ + --with-filedescriptors=1024 \ + --disable-ident-lookups \ + --enable-auth-basic="fake getpwnam" \ + --enable-auth-digest="file" \ + --enable-auth-negotiate="wrapper" \ + --enable-auth-ntlm="fake" \ + --disable-strict-error-checking \ + --enable-external-acl-helpers="file_userip" \ + --disable-ltdl-install \ + --without-included-ltdl \ + --with-logdir=/var/log/squid/ \ + --with-pidfile=/var/run/squid.pid \ + --with-swapdir=/var/cache/squid/ \ + --with-default-user=squid + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +SQUID_CONF_ENV += LIBS=-latomic +endif + +ifeq ($(BR2_PACKAGE_LIBKRB5),y) +SQUID_CONF_OPTS += --with-mit-krb5 +SQUID_DEPENDENCIES += libkrb5 +else +SQUID_CONF_OPTS += --without-mit-krb5 +endif + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +SQUID_DEPENDENCIES += libxcrypt +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +SQUID_CONF_OPTS += --with-openssl +SQUID_DEPENDENCIES += openssl +else +SQUID_CONF_OPTS += --without-openssl +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +SQUID_CONF_OPTS += --with-gnutls +SQUID_DEPENDENCIES += gnutls +else +SQUID_CONF_OPTS += --without-gnutls +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +SQUID_CONF_OPTS += --with-systemd +SQUID_DEPENDENCIES += systemd +else +SQUID_CONF_OPTS += --without-systemd +endif + +define SQUID_CLEANUP_TARGET + rm -f $(addprefix $(TARGET_DIR)/usr/bin/, \ + RunCache RunAccel) + rm -f $(addprefix $(TARGET_DIR)/etc/, \ + cachemgr.conf mime.conf.default squid.conf.default) +endef + +SQUID_POST_INSTALL_TARGET_HOOKS += SQUID_CLEANUP_TARGET + +define SQUID_USERS + squid -1 squid -1 * - - - Squid proxy cache +endef + +define SQUID_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/squid/S97squid \ + $(TARGET_DIR)/etc/init.d/S97squid +endef + +define SQUID_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(@D)/tools/systemd/squid.service \ + $(TARGET_DIR)/usr/lib/systemd/system/squid.service +endef + +$(eval $(autotools-package)) diff --git a/package/sratom/Config.in b/package/sratom/Config.in new file mode 100644 index 00000000..771e8207 --- /dev/null +++ b/package/sratom/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_SRATOM + bool "sratom" + select BR2_PACKAGE_LV2 + select BR2_PACKAGE_SERD + select BR2_PACKAGE_SORD + help + Sratom is a library for serialising LV2 atoms to and from + RDF, particularly the Turtle syntax. + + https://drobilla.net/software/sratom.html diff --git a/package/sratom/sratom.hash b/package/sratom/sratom.hash new file mode 100644 index 00000000..3b8fa653 --- /dev/null +++ b/package/sratom/sratom.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking signature +# https://download.drobilla.net/sratom-0.6.14.tar.xz.sig +sha256 9982faf40db83aedd9b3850e499fecd6852b8b4ba6dede514013655cffaca1e6 sratom-0.6.14.tar.xz +sha256 97742aacc982d8bb10d4450e3ce71dd02a9f26ba73a0eb822ef3356a74525597 COPYING diff --git a/package/sratom/sratom.mk b/package/sratom/sratom.mk new file mode 100644 index 00000000..25e7a091 --- /dev/null +++ b/package/sratom/sratom.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# sratom +# +################################################################################ + +SRATOM_VERSION = 0.6.14 +SRATOM_SITE = https://download.drobilla.net +SRATOM_SOURCE = sratom-$(SRATOM_VERSION).tar.xz +SRATOM_LICENSE = ISC +SRATOM_LICENSE_FILES = COPYING +SRATOM_DEPENDENCIES = host-pkgconf lv2 serd sord +SRATOM_INSTALL_STAGING = YES + +SRATOM_CONF_OPTS += -Ddocs=disabled -Dtests=disabled + +$(eval $(meson-package)) diff --git a/package/sredird/0001-termio.patch b/package/sredird/0001-termio.patch new file mode 100644 index 00000000..7c7c67f5 --- /dev/null +++ b/package/sredird/0001-termio.patch @@ -0,0 +1,20 @@ +Fix musl build + +Patch was inspired by +http://svnweb.freebsd.org/ports/head/comms/sredird/files/patch-sredird.c?revision=363168&view=markup +http://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/sysutils/sredird/patches/patch-aa +https://github.com/bitrig/bitrig-ports/blob/master/comms/sredird/patches/patch-sredird_c + +Signed-off-by: Bernd Kuhls + +diff -uNr sredird-2.2.2.org/sredird.c sredird-2.2.2/sredird.c +--- sredird-2.2.2.org/sredird.c 2005-08-12 16:10:46.000000000 +0200 ++++ sredird-2.2.2/sredird.c 2016-01-31 18:53:08.000000000 +0100 +@@ -110,7 +110,6 @@ + #include + #include + #include +-#include + #include + #include + #include diff --git a/package/sredird/Config.in b/package/sredird/Config.in new file mode 100644 index 00000000..d8c5ef9c --- /dev/null +++ b/package/sredird/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_SREDIRD + bool "sredird" + help + Sredird is a serial port redirector that is compliant with + the RFC 2217 "Telnet Com Port Control Option" protocol. This + protocol lets you share a serial port through the network. + + http://freecode.com/projects/sredird diff --git a/package/sredird/sredird.hash b/package/sredird/sredird.hash new file mode 100644 index 00000000..1181627a --- /dev/null +++ b/package/sredird/sredird.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 640c47dcd84b3b90640165a38eb336a675fdab06c14c09cae2f4a604cae560d3 sredird-2.2.2.tar.gz +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING diff --git a/package/sredird/sredird.mk b/package/sredird/sredird.mk new file mode 100644 index 00000000..723c10ac --- /dev/null +++ b/package/sredird/sredird.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# sredird +# +################################################################################ + +SREDIRD_VERSION = 2.2.2 +SREDIRD_SITE = http://www.ibiblio.org/pub/Linux/system/serial +SREDIRD_LICENSE = GPL-2.0+ +SREDIRD_LICENSE_FILES = COPYING + +define SREDIRD_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define SREDIRD_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/sredird $(TARGET_DIR)/usr/sbin/sredird +endef + +$(eval $(generic-package)) diff --git a/package/sscep/0001-Fix-getopt-linking-error.patch b/package/sscep/0001-Fix-getopt-linking-error.patch new file mode 100644 index 00000000..9427593c --- /dev/null +++ b/package/sscep/0001-Fix-getopt-linking-error.patch @@ -0,0 +1,57 @@ +From 65561b53344b834877e6b63320066a1e26038a3c Mon Sep 17 00:00:00 2001 +From: Dario Binacchi +Date: Fri, 9 Dec 2022 18:18:27 +0100 +Subject: [PATCH] Fix getopt linking error + +The buildroot project, to which the sscep application was added, has +configurations that raise the following linking error: +buildroot/output/host/lib/gcc/arc-buildroot-linux-uclibc/11.3.0/../../../../arc-buildroot-linux-uclibc/bin/ld: buildroot/output/host/bin/../arc-buildroot-linux-uclibc/sysroot/usr/lib/libc.a(getopt.os):(.data+0x8): multiple definition of `optind'; src/getopt.o:(.data+0x0): first defined here +buildroot/output/host/lib/gcc/arc-buildroot-linux-uclibc/11.3.0/../../../../arc-buildroot-linux-uclibc/bin/ld: buildroot/output/host/bin/../arc-buildroot-linux-uclibc/sysroot/usr/lib/libc.a(getopt.os): in function `__GI_getopt': +getopt.c:(.text+0x5a4): multiple definition of `getopt'; src/getopt.o:getopt.c:(.text+0x0): first defined here +buildroot/output/host/lib/gcc/arc-buildroot-linux-uclibc/11.3.0/../../../../arc-buildroot-linux-uclibc/bin/ld: buildroot/output/host/bin/../arc-buildroot-linux-uclibc/sysroot/usr/lib/libc.a(getopt.os): in function `getopt_long': +getopt.c:(.text+0x5b0): multiple definition of `getopt_long'; src/getopt.o:getopt.c:(.text+0x128): first defined here +collect2: error: ld returned 1 exit status +make[2]: *** [Makefile:507: sscep] Error 1 +make[1]: *** [package/pkg-generic.mk:293: buildroot/output/build/sscep-0.10.0/.stamp_built] Error 2 + +The patch re-added a check that commit +81f56f635259b9 ("Replaced GNU getopt by a BSD licensed alternative") +removed. + +Signed-off-by: Dario Binacchi +[yann.morin.1998@free.fr: make that an actual backport] +Signed-off-by: Yann E. MORIN +--- + src/getopt.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/src/getopt.c b/src/getopt.c +index eae36a6..0109406 100644 +--- a/src/getopt.c ++++ b/src/getopt.c +@@ -31,6 +31,16 @@ + #include + #include + ++#define GETOPT_INTERFACE_VERSION 2 ++#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 ++# include ++# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION ++# define ELIDE_CODE ++# endif ++#endif ++ ++#ifndef ELIDE_CODE ++ + char* optarg; + int optopt; + /* The variable optind [...] shall be initialized to 1 by the system. */ +@@ -226,3 +236,5 @@ int getopt_long(int argc, char* const argv[], const char* optstring, + ++optind; + return retval; + } ++ ++#endif /* Not ELIDE_CODE. */ +-- +2.25.1 + diff --git a/package/sscep/0002-Fix-getopt-linking-error-with-musl-libc.patch b/package/sscep/0002-Fix-getopt-linking-error-with-musl-libc.patch new file mode 100644 index 00000000..ebb9985e --- /dev/null +++ b/package/sscep/0002-Fix-getopt-linking-error-with-musl-libc.patch @@ -0,0 +1,67 @@ +From db7fab775d03438b4cfce6b49fab2d3176ecb1d3 Mon Sep 17 00:00:00 2001 +From: Dario Binacchi +Date: Sat, 11 May 2024 19:38:01 +0200 +Subject: [PATCH] Fix getopt linking error with musl-libc + +The buildroot project, to which the sscep application was added, has +configurations that raise the following linking error: +buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/i586-buildroot-linux-musl/9.3.0/../../../../i586-buildroot-linux-musl/bin/ld: buildroot/output/host/i586-buildroot-linux-musl/sysroot/lib/libc.a(getopt.o): in function `getopt': +getopt.c:(.text.getopt+0x0): multiple definition of `getopt'; src/getopt.o:getopt.c:(.text+0x0): first defined here +buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/i586-buildroot-linux-musl/9.3.0/../../../../i586-buildroot-linux-musl/bin/ld: buildroot/output/host/i586-buildroot-linux-musl/sysroot/lib/libc.a(getopt.o):(.data.optind+0x0): multiple definition of `optind'; src/getopt.o:(.data+0x0): first defined here +collect2: error: ld returned 1 exit status + +The commit 65561b53344b8 ("Fix getopt linking error") actually fixed the +linking error only for uclibc, but not for musl-libc. The patch fixes +the error for both uclibc and musl-libc. + +Link: http://autobuild.buildroot.net/results/d5b1b4e5e9d9c8eca5e75c345db4d1f3f0cd84ed/build-end.log +Signed-off-by: Dario Binacchi +Upstream: https://github.com/certnanny/sscep/pull/181 +--- + configure.ac | 2 +- + src/getopt.c | 12 ++---------- + 2 files changed, 3 insertions(+), 11 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 9f3ee15686a2..7a968d97dcaa 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -34,7 +34,7 @@ AC_TYPE_SIZE_T + # Checks for library functions. + AC_FUNC_MALLOC + AC_FUNC_REALLOC +-AC_CHECK_FUNCS([alarm gethostbyname memset socket strchr strdup strstr]) ++AC_CHECK_FUNCS([alarm gethostbyname getopt memset socket strchr strdup strstr]) + + AC_CONFIG_FILES([Makefile]) + AC_SUBST([LIBTOOL_DEPS]) +diff --git a/src/getopt.c b/src/getopt.c +index 0109406ba4ac..8793052845ed 100644 +--- a/src/getopt.c ++++ b/src/getopt.c +@@ -31,15 +31,7 @@ + #include + #include + +-#define GETOPT_INTERFACE_VERSION 2 +-#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 +-# include +-# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION +-# define ELIDE_CODE +-# endif +-#endif +- +-#ifndef ELIDE_CODE ++#ifndef HAVE_GETOPT + + char* optarg; + int optopt; +@@ -237,4 +229,4 @@ int getopt_long(int argc, char* const argv[], const char* optstring, + return retval; + } + +-#endif /* Not ELIDE_CODE. */ ++#endif /* HAVE_GETOPT */ +-- +2.43.0 + diff --git a/package/sscep/Config.in b/package/sscep/Config.in new file mode 100644 index 00000000..549c6527 --- /dev/null +++ b/package/sscep/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_SSCEP + bool "sscep" + select BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_OPENSSL + help + SSCEP is a client-only implementation of the SCEP + (Cisco System's Simple Certificate Enrollment Protocol). + + https://github.com/certnanny/sscep diff --git a/package/sscep/sscep.hash b/package/sscep/sscep.hash new file mode 100644 index 00000000..549c63b9 --- /dev/null +++ b/package/sscep/sscep.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 489cc8e093986776eb3f15082bf766778f707176f3cd604bf0ef1008da06b8e5 sscep-0.10.0.tar.gz +sha256 e1328c292102a22c10e8dcfbfda33740f603767c73f8c5b5189c5513eb6b4dea COPYING diff --git a/package/sscep/sscep.mk b/package/sscep/sscep.mk new file mode 100644 index 00000000..782bd358 --- /dev/null +++ b/package/sscep/sscep.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# sscep +# +################################################################################ + +SSCEP_VERSION = 0.10.0 +SSCEP_SITE = $(call github,certnanny,sscep,v$(SSCEP_VERSION)) +SSCEP_LICENSE = BSD-2-Clause, OpenSSL, OpenOSP +SSCEP_LICENSE_FILES = COPYING +SSCEP_AUTORECONF = YES +SSCEP_DEPENDENCIES = host-pkgconf openssl + +$(eval $(autotools-package)) diff --git a/package/ssdp-responder/Config.in b/package/ssdp-responder/Config.in new file mode 100644 index 00000000..8b5dfe67 --- /dev/null +++ b/package/ssdp-responder/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_SSDP_RESPONDER + bool "ssdp-responder" + depends on BR2_USE_MMU + help + Simple Service Discovery Protocol daemon (SSDP) for networked + Linux and UNIX devices. Useful in any setup, big or small, but + targeted more at embedded systems that need to announce + themselves to Windows systems. + + The project consists of ssdpd and ssdp-scan. The former is a + stand-alone UNIX daemon, it has no dependencies but a standard + C library. It comes with built-in web server for serving the + UPnP XML description on port 1901, the XML is used by Windows + to present the icon, by default an InternetGatewayDevice is + announced. + + ssdp-scan is a tool, similar to mdns-scan, to find other SSDP + capable hosts on the network. Take care to only use it for + debugging, or quicker device discovery operations, since it + scans the network quite aggressively. + + https://github.com/troglobit/ssdp-responder/ diff --git a/package/ssdp-responder/S50ssdpd b/package/ssdp-responder/S50ssdpd new file mode 100644 index 00000000..8654de4f --- /dev/null +++ b/package/ssdp-responder/S50ssdpd @@ -0,0 +1,49 @@ +#!/bin/sh + +DAEMON=ssdpd +PIDFILE=/var/run/$DAEMON.pid +CFGFILE=/etc/default/$DAEMON + +DAEMON_ARGS="" + +# Read configuration variable file if it is present +# shellcheck source=/dev/null +[ -r "$CFGFILE" ] && . "$CFGFILE" + +# shellcheck disable=SC2086 +start() { + printf 'Starting %s: ' "$DAEMON" + if start-stop-daemon -S -q -p "$PIDFILE" -x "$DAEMON" -- $DAEMON_ARGS; then + echo "OK" + else + echo "FAIL" + fi +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + if start-stop-daemon -K -q -p "$PIDFILE" -x "$DAEMON"; then + echo "OK" + else + echo "FAIL" + fi +} + +restart() { + stop + start +} + +case "$1" in + start|stop|restart) + "$1" + ;; + reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac + +exit $? diff --git a/package/ssdp-responder/ssdp-responder.hash b/package/ssdp-responder/ssdp-responder.hash new file mode 100644 index 00000000..7794c666 --- /dev/null +++ b/package/ssdp-responder/ssdp-responder.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 75787cd9c0a88329dd39437eb28a188b54a3a0cab8472968e2713d90076f321f ssdp-responder-2.1.tar.gz +sha256 b66025f1e568a8d80264550d7bd7683780ac248f2baa1e85b4da4b15e28d55a7 LICENSE diff --git a/package/ssdp-responder/ssdp-responder.mk b/package/ssdp-responder/ssdp-responder.mk new file mode 100644 index 00000000..bb17641a --- /dev/null +++ b/package/ssdp-responder/ssdp-responder.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# ssdp-responder +# +################################################################################ + +SSDP_RESPONDER_VERSION = 2.1 +SSDP_RESPONDER_SITE = https://github.com/troglobit/ssdp-responder/releases/download/v$(SSDP_RESPONDER_VERSION) +SSDP_RESPONDER_LICENSE = ISC +SSDP_RESPONDER_LICENSE_FILES = LICENSE +SSDP_RESPONDER_CPE_ID_VENDOR = \ + simple_service_discovery_protocol_responder_project +SSDP_RESPONDER_CPE_ID_PRODUCT = simple_service_discovery_protocol_responder +SSDP_RESPONDER_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +SSDP_RESPONDER_DEPENDENCIES += systemd +SSDP_RESPONDER_CONF_OPTS += --with-systemd +else +SSDP_RESPONDER_CONF_OPTS += --without-systemd +endif + +define SSDP_RESPONDER_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/ssdp-responder/S50ssdpd \ + $(TARGET_DIR)/etc/init.d/S50ssdpd +endef + +define SSDP_RESPONDER_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/var/lib/misc/ +endef + +$(eval $(autotools-package)) diff --git a/package/sshfs/Config.in b/package/sshfs/Config.in new file mode 100644 index 00000000..bc54b698 --- /dev/null +++ b/package/sshfs/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_SSHFS + bool "sshfs (FUSE)" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libfuse3, glib2 + depends on BR2_USE_MMU # libfuse3, glib2 + depends on !BR2_STATIC_LIBS # libfuse3 + select BR2_PACKAGE_LIBFUSE3 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_OPENSSH + help + FUSE filesystem client based on the SSH File Transfer + Protocol. + + https://github.com/libfuse/sshfs + +comment "sshfs 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/package/sshfs/sshfs.hash b/package/sshfs/sshfs.hash new file mode 100644 index 00000000..9372e471 --- /dev/null +++ b/package/sshfs/sshfs.hash @@ -0,0 +1,3 @@ +# Locally calculated after checking pgp signature +sha256 5218ce7bdd2ce0a34137a0d7798e0f6d09f0e6d21b1e98ee730a18b0699c2e99 sshfs-3.7.3.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/sshfs/sshfs.mk b/package/sshfs/sshfs.mk new file mode 100644 index 00000000..61f11af5 --- /dev/null +++ b/package/sshfs/sshfs.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# sshfs +# +################################################################################ + +SSHFS_VERSION = 3.7.3 +SSHFS_SOURCE = sshfs-$(SSHFS_VERSION).tar.xz +SSHFS_SITE = https://github.com/libfuse/sshfs/releases/download/sshfs-$(SSHFS_VERSION) +SSHFS_LICENSE = GPL-2.0 +SSHFS_LICENSE_FILES = COPYING +SSHFS_DEPENDENCIES = \ + libglib2 libfuse3 openssh \ + $(TARGET_NLS_DEPENDENCIES) \ + $(if $(BR2_ENABLE_LOCALE),,libiconv) + +$(eval $(meson-package)) diff --git a/package/sshguard/Config.in b/package/sshguard/Config.in new file mode 100644 index 00000000..7454c0a9 --- /dev/null +++ b/package/sshguard/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_SSHGUARD + bool "sshguard" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_IPTABLES # runtime + help + sshguard protects hosts from brute-force attacks against SSH + and other services. It aggregates system logs and blocks + repeat offenders using one of several firewall backends, + including iptables, ipfw, and pf. + + https://www.sshguard.net + +comment "sshguard needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/sshguard/S49sshguard b/package/sshguard/S49sshguard new file mode 100644 index 00000000..94776415 --- /dev/null +++ b/package/sshguard/S49sshguard @@ -0,0 +1,49 @@ +#!/bin/sh + +DAEMON="sshguard" +PIDFILE="/var/run/$DAEMON.pid" + +start() { + printf 'Starting %s: ' "$DAEMON" + iptables -L sshguard > /dev/null 2>&1 || \ + (iptables -N sshguard && iptables -A INPUT -j sshguard) + start-stop-daemon -S -q -b -p /run/sshguard.pid \ + -x /usr/sbin/sshguard -- -i /run/sshguard.pid + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/sshguard/sshguard.hash b/package/sshguard/sshguard.hash new file mode 100644 index 00000000..d018428d --- /dev/null +++ b/package/sshguard/sshguard.hash @@ -0,0 +1,4 @@ +# sha256 from https://sourceforge.net/projects/sshguard/files/sshguard/2.4.3/sshguard-2.4.3.sha256 +sha256 64029deff6de90fdeefb1f497d414f0e4045076693a91da1a70eb7595e97efeb sshguard-2.4.3.tar.gz +# Locally calculated +sha256 c3ae64f12153a1bc55bc234d09f40a08ab0e0149fffc972c0b7f02d5a12c1a5c COPYING diff --git a/package/sshguard/sshguard.mk b/package/sshguard/sshguard.mk new file mode 100644 index 00000000..8d036357 --- /dev/null +++ b/package/sshguard/sshguard.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# sshguard +# +################################################################################ + +SSHGUARD_VERSION = 2.4.3 +SSHGUARD_SITE = https://sourceforge.net/projects/sshguard/files/sshguard/$(SSHGUARD_VERSION) +SSHGUARD_LICENSE = ISC, Public Domain (fnv hash), BSD-3-Clause (SimCList) +SSHGUARD_LICENSE_FILES = COPYING + +define SSHGUARD_INSTALL_CONFIG + $(INSTALL) -D -m 0644 $(@D)/examples/sshguard.conf.sample \ + $(TARGET_DIR)/etc/sshguard.conf + $(SED) '/^#BACKEND/c\BACKEND="/usr/libexec/sshg-fw-iptables"' \ + -e '/^#FILES/c\FILES="/var/log/messages"' $(TARGET_DIR)/etc/sshguard.conf +endef +SSHGUARD_POST_INSTALL_TARGET_HOOKS += SSHGUARD_INSTALL_CONFIG + +define SSHGUARD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/sshguard/S49sshguard \ + $(TARGET_DIR)/etc/init.d/S49sshguard +endef + +define SSHGUARD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(@D)/examples/sshguard.service \ + $(TARGET_DIR)/usr/lib/systemd/system/sshguard.service +endef + +$(eval $(autotools-package)) diff --git a/package/sshpass/Config.in b/package/sshpass/Config.in new file mode 100644 index 00000000..24e46295 --- /dev/null +++ b/package/sshpass/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SSHPASS + bool "sshpass" + depends on BR2_USE_MMU # fork() + help + Sshpass is a tool for non-interactivly performing + password authentication with SSH's so called + "interactive keyboard password authentication". + + http://sshpass.sourceforge.net diff --git a/package/sshpass/sshpass.hash b/package/sshpass/sshpass.hash new file mode 100644 index 00000000..3fe95c8b --- /dev/null +++ b/package/sshpass/sshpass.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 ad1106c203cbb56185ca3bad8c6ccafca3b4064696194da879f81c8d7bdfeeda sshpass-1.10.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/sshpass/sshpass.mk b/package/sshpass/sshpass.mk new file mode 100644 index 00000000..beb0a639 --- /dev/null +++ b/package/sshpass/sshpass.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# sshpass +# +################################################################################ + +SSHPASS_VERSION = 1.10 +SSHPASS_SITE = http://downloads.sourceforge.net/project/sshpass/sshpass/$(SSHPASS_VERSION) +SSHPASS_LICENSE = GPL-2.0+ +SSHPASS_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/sslh/0001-Makefile-add-USE_LIBEV.patch b/package/sslh/0001-Makefile-add-USE_LIBEV.patch new file mode 100644 index 00000000..858d30fa --- /dev/null +++ b/package/sslh/0001-Makefile-add-USE_LIBEV.patch @@ -0,0 +1,59 @@ +From 3e93c1d43de8a662e402127462f28ef0bebf8997 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 1 Oct 2023 18:45:53 +0200 +Subject: [PATCH] Makefile: add USE_LIBEV + +Add USE_LIBEV to avoid the following build failure without libev raised +since version 2.0 and +https://github.com/yrutschle/sslh/commit/711c11c820f8be4f1399024bcaa1d7072de33217: + +sslh-ev.c:24:10: fatal error: ev.h: Aucun fichier ou dossier de ce type + 24 | #include + | ^~~~~~ + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/yrutschle/sslh/commit/3e93c1d43de8a662e402127462f28ef0bebf8997 +--- + Makefile | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index a4425c3..aa2689e 100644 +--- a/Makefile ++++ b/Makefile +@@ -6,6 +6,7 @@ VERSION=$(shell ./genver.sh -r) + ENABLE_SANITIZER= # Enable ASAN/LSAN/UBSAN + ENABLE_REGEX=1 # Enable regex probes + USELIBCONFIG=1 # Use libconfig? (necessary to use configuration files) ++USELIBEV=1 # Use libev? + USELIBWRAP?= # Use libwrap? + USELIBCAP= # Use libcap? + USESYSTEMD= # Make use of systemd socket activation +@@ -72,6 +73,9 @@ ifneq ($(strip $(USELIBBSD)),) + CPPFLAGS+=-DLIBBSD + endif + ++ifneq ($(strip $(USELIBEV)),) ++ CONDITIONAL_TARGETS+=sslh-ev ++endif + + all: sslh $(MAN) echosrv $(CONDITIONAL_TARGETS) + +@@ -84,7 +88,7 @@ $(OBJS_A): $(OBJS) + version.h: + ./genver.sh >version.h + +-sslh: sslh-fork sslh-select sslh-ev ++sslh: sslh-fork sslh-select + + $(OBJS) $(FORK_OBJS) $(SELECT_OBJS) $(EV_OBJS): argtable3.h collection.h common.h gap.h hash.h log.h probe.h processes.h sslh-conf.h tcp-listener.h tcp-probe.h tls.h udp-listener.h version.h + +@@ -153,7 +157,7 @@ distclean: clean + rm -f tags sslh-conf.[ch] echosrv-conf.[ch] cscope.* + + clean: +- rm -f sslh-fork sslh-select sslh-ev echosrv version.h $(MAN) systemd-sslh-generator *.o *.gcov *.gcno *.gcda *.png *.html *.css *.info ++ rm -f sslh-fork sslh-select $(CONDITIONAL_TARGETS) echosrv version.h $(MAN) systemd-sslh-generator *.o *.gcov *.gcno *.gcda *.png *.html *.css *.info + + tags: + ctags --globals -T *.[ch] diff --git a/package/sslh/Config.in b/package/sslh/Config.in new file mode 100644 index 00000000..a1d52118 --- /dev/null +++ b/package/sslh/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SSLH + bool "sslh" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBCONFIG if BR2_PACKAGE_SYSTEMD + select BR2_PACKAGE_PCRE2 + help + Applicative protocol multiplexer + + http://www.rutschle.net/tech/sslh.shtml diff --git a/package/sslh/S35sslh b/package/sslh/S35sslh new file mode 100644 index 00000000..4a613f84 --- /dev/null +++ b/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/package/sslh/sslh.hash b/package/sslh/sslh.hash new file mode 100644 index 00000000..839e7b7f --- /dev/null +++ b/package/sslh/sslh.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 d88d43ee11cf1324983c196c894b41766c33d957b6af53b62c8479703bbbd26c sslh-v2.0.1.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/sslh/sslh.mk b/package/sslh/sslh.mk new file mode 100644 index 00000000..e829af0b --- /dev/null +++ b/package/sslh/sslh.mk @@ -0,0 +1,65 @@ +################################################################################ +# +# sslh +# +################################################################################ + +SSLH_VERSION = 2.0.1 +SSLH_SOURCE = sslh-v$(SSLH_VERSION).tar.gz +SSLH_SITE = http://www.rutschle.net/tech/sslh +SSLH_LICENSE = GPL-2.0+ +SSLH_LICENSE_FILES = COPYING +SSLH_CPE_ID_VALID = YES +SSLH_DEPENDENCIES = pcre2 + +SSLH_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) CFLAGS="$(TARGET_CFLAGS) -std=gnu99" + +ifeq ($(BR2_PACKAGE_LIBBSD),y) +SSLH_DEPENDENCIES += libbsd +SSLH_MAKE_OPTS += USELIBBSD=1 +else +SSLH_MAKE_OPTS += USELIBBSD= +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +SSLH_DEPENDENCIES += libcap +SSLH_MAKE_OPTS += USELIBCAP=1 +else +SSLH_MAKE_OPTS += USELIBCAP= +endif + +ifeq ($(BR2_PACKAGE_LIBCONFIG),y) +SSLH_DEPENDENCIES += libconfig +SSLH_MAKE_OPTS += USELIBCONFIG=1 +else +SSLH_MAKE_OPTS += USELIBCONFIG= +endif + +ifeq ($(BR2_PACKAGE_LIBEV),y) +SSLH_DEPENDENCIES += libev +SSLH_MAKE_OPTS += USELIBEV=1 +else +SSLH_MAKE_OPTS += USELIBEV= +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +SSLH_DEPENDENCIES += systemd +SSLH_MAKE_OPTS += USESYSTEMD=1 +else +SSLH_MAKE_OPTS += USESYSTEMD= +endif + +define SSLH_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(SSLH_MAKE_OPTS) -C $(@D) +endef + +define SSLH_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(SSLH_MAKE_OPTS) -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/package/starfive-spltool/Config.in.host b/package/starfive-spltool/Config.in.host new file mode 100644 index 00000000..afb2777c --- /dev/null +++ b/package/starfive-spltool/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_STARFIVE_SPLTOOL + bool "host starfive-spltool" + depends on BR2_riscv + help + Add header to the Secondary Program Loader with the 3rd party + software given by Starfive-Tech for their SoCs. + + https://github.com/starfive-tech/soft_3rdpart/tree/JH7110_VisionFive2_devel/spl_tool diff --git a/package/starfive-spltool/starfive-spltool.hash b/package/starfive-spltool/starfive-spltool.hash new file mode 100644 index 00000000..55835de3 --- /dev/null +++ b/package/starfive-spltool/starfive-spltool.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 f5466225021fbe4e983cc85f32ce11d92ad30689b18e0d1390d16f6bfab74477 starfive-spltool-JH7110_VF2_515_v5.11.3.tar.gz diff --git a/package/starfive-spltool/starfive-spltool.mk b/package/starfive-spltool/starfive-spltool.mk new file mode 100644 index 00000000..559df350 --- /dev/null +++ b/package/starfive-spltool/starfive-spltool.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# starfive-spltool +# +################################################################################ + +STARFIVE_SPLTOOL_VERSION = JH7110_VF2_515_v5.11.3 +STARFIVE_SPLTOOL_SITE = $(call github,starfive-tech,soft_3rdpart,$(STARFIVE_SPLTOOL_VERSION)) +STARFIVE_SPLTOOL_LICENSE = GPL-2.0+ +STARFIVE_SPLTOOL_FILES = spl_tool/LICENSE + +define HOST_STARFIVE_SPLTOOL_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D)/spl_tool +endef + +define HOST_STARFIVE_SPLTOOL_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/spl_tool/spl_tool $(HOST_DIR)/bin/spl_tool +endef + +$(eval $(host-generic-package)) diff --git a/package/start-stop-daemon/0001-add-uclibc-alias-and-musl.patch b/package/start-stop-daemon/0001-add-uclibc-alias-and-musl.patch new file mode 100644 index 00000000..acba5ad8 --- /dev/null +++ b/package/start-stop-daemon/0001-add-uclibc-alias-and-musl.patch @@ -0,0 +1,44 @@ +From 31e4116ec355701e239cddcca720314523512a47 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Sun, 21 Mar 2021 17:59:15 +0100 +Subject: [PATCH] add uclibc alias and musl + +Make linux-uclibcgnueabi an alias for linux-uclibceabi since it's +what we use in buildroot toolchains. +Slightly tweak musleabi to match the buildroot-used tuple. + +Signed-off-by: Gustavo Zacarias +[Rebased on 1.20.7.1] +Signed-off-by: Peter Seiderer +--- + data/ostable | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/data/ostable b/data/ostable +index 99c1f88..087dc6e 100644 +--- a/data/ostable ++++ b/data/ostable +@@ -14,10 +14,10 @@ + # system part of the output of the GNU config.guess script. + # + # +-eabi-uclibc-linux linux-uclibceabi linux[^-]*-uclibceabi ++eabi-uclibc-linux linux-uclibceabi linux[^-]*-uclibc.*eabi + base-uclibc-linux linux-uclibc linux[^-]*-uclibc + eabihf-musl-linux linux-musleabihf linux[^-]*-musleabihf +-base-musl-linux linux-musl linux[^-]*-musl ++base-musl-linux linux-musl linux[^-]*-musl[^-]* + eabihf-gnu-linux linux-gnueabihf linux[^-]*-gnueabihf + eabi-gnu-linux linux-gnueabi linux[^-]*-gnueabi + abin32-gnu-linux linux-gnuabin32 linux[^-]*-gnuabin32 +@@ -38,6 +38,6 @@ base-bsd-netbsd netbsd netbsd[^-]* + base-bsd-openbsd openbsd openbsd[^-]* + base-sysv-aix aix aix[^-]* + base-sysv-solaris solaris solaris[^-]* +-eabi-uclibc-uclinux uclinux-uclibceabi uclinux[^-]*-uclibceabi ++eabi-uclibc-uclinux uclinux-uclibceabi uclinux[^-]*-uclibc.*eabi + base-uclibc-uclinux uclinux-uclibc uclinux[^-]*(-uclibc.*)? + base-tos-mint mint mint[^-]* +-- +2.30.2 + diff --git a/package/start-stop-daemon/0002-just-warn-on-missing-arch.patch b/package/start-stop-daemon/0002-just-warn-on-missing-arch.patch new file mode 100644 index 00000000..fc1f0f07 --- /dev/null +++ b/package/start-stop-daemon/0002-just-warn-on-missing-arch.patch @@ -0,0 +1,33 @@ +From 7b20d3f012013edd4e3bb48541bd2bda10dac186 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Sun, 21 Mar 2021 18:03:28 +0100 +Subject: [PATCH] just warn on missing arch + +Just warn on missing arch + +Some architectures are not listed in dpkg list (e.g. mips64el, xtensa, sh4a). +Don't break the build for that. + +Signed-off-by: Baruch Siach +[Rebased on 1.20.7.1] +Signed-off-by: Peter Seiderer +--- + m4/dpkg-arch.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/m4/dpkg-arch.m4 b/m4/dpkg-arch.m4 +index 71044c9..1394531 100644 +--- a/m4/dpkg-arch.m4 ++++ b/m4/dpkg-arch.m4 +@@ -58,7 +58,7 @@ AC_DEFUN([DPKG_ARCHITECTURE], [ + AC_MSG_CHECKING([dpkg architecture name]) + _DPKG_ARCHITECTURE([DEB_HOST_ARCH], [dpkg_arch]) + AS_IF([test "x$dpkg_arch" = "x"], [ +- AC_MSG_ERROR([cannot determine host dpkg architecture]) ++ AC_MSG_WARN([cannot determine host dpkg architecture]) + ], [ + AC_MSG_RESULT([$dpkg_arch]) + ]) +-- +2.30.2 + diff --git a/package/start-stop-daemon/Config.in b/package/start-stop-daemon/Config.in new file mode 100644 index 00000000..8f0dda13 --- /dev/null +++ b/package/start-stop-daemon/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_START_STOP_DAEMON + bool "start-stop-daemon" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + start-stop-daemon is used to control the creation and + termination of system-level processes. + + https://tracker.debian.org/pkg/dpkg diff --git a/package/start-stop-daemon/start-stop-daemon.hash b/package/start-stop-daemon/start-stop-daemon.hash new file mode 100644 index 00000000..61a15afb --- /dev/null +++ b/package/start-stop-daemon/start-stop-daemon.hash @@ -0,0 +1,4 @@ +# From https://snapshot.debian.org/archive/debian/20210109T083441Z/pool/main/d/dpkg/dpkg_1.20.7.1.dsc +sha256 0aad2de687f797ef8ebdabc7bafd16dc1497f1ce23bd9146f9aa73f396a5636f dpkg_1.20.7.1.tar.xz +# Locally computed +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/start-stop-daemon/start-stop-daemon.mk b/package/start-stop-daemon/start-stop-daemon.mk new file mode 100644 index 00000000..9db767dd --- /dev/null +++ b/package/start-stop-daemon/start-stop-daemon.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# start-stop-daemon +# +################################################################################ + +# 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.20.7.1 +START_STOP_DAEMON_SOURCE = dpkg_$(START_STOP_DAEMON_VERSION).tar.xz +START_STOP_DAEMON_SITE = https://snapshot.debian.org/archive/debian/20210109T083441Z/pool/main/d/dpkg +START_STOP_DAEMON_CONF_OPTS = \ + --disable-dselect \ + --disable-update-alternatives \ + --disable-install-info \ + --exec-prefix=/ +START_STOP_DAEMON_CONF_ENV = \ + dpkg_cv_va_copy=yes \ + dpkg_cv_c99_snprintf=yes \ + DPKG_DEVEL_MODE=1 +START_STOP_DAEMON_DEPENDENCIES = host-pkgconf +# Patching m4/dpkg-arch.m4 +START_STOP_DAEMON_AUTORECONF = YES +START_STOP_DAEMON_LICENSE = GPL-2.0+ +START_STOP_DAEMON_LICENSE_FILES = COPYING + +define START_STOP_DAEMON_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/lib/compat + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/utils +endef + +define START_STOP_DAEMON_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/utils/start-stop-daemon \ + $(TARGET_DIR)/sbin/start-stop-daemon +endef + +$(eval $(autotools-package)) diff --git a/package/startup-notification/Config.in b/package/startup-notification/Config.in new file mode 100644 index 00000000..606276e4 --- /dev/null +++ b/package/startup-notification/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_STARTUP_NOTIFICATION + bool "startup-notification" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XCB_UTIL + select BR2_PACKAGE_XLIB_LIBX11 + help + Startup-notification is a library used to monitor + application startup. + + http://freedesktop.org/software/startup-notification/releases diff --git a/package/startup-notification/startup-notification.hash b/package/startup-notification/startup-notification.hash new file mode 100644 index 00000000..9c571321 --- /dev/null +++ b/package/startup-notification/startup-notification.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3c391f7e930c583095045cd2d10eb73a64f085c7fde9d260f2652c7cb3cfbe4a startup-notification-0.12.tar.gz +sha256 29935974beae046f50da806b5f4e54532401dd7bcfbc696a0b645f4cbcce9dbb COPYING diff --git a/package/startup-notification/startup-notification.mk b/package/startup-notification/startup-notification.mk new file mode 100644 index 00000000..4a9e33e5 --- /dev/null +++ b/package/startup-notification/startup-notification.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# startup-notification +# +################################################################################ + +STARTUP_NOTIFICATION_VERSION = 0.12 +STARTUP_NOTIFICATION_SITE = http://freedesktop.org/software/startup-notification/releases +STARTUP_NOTIFICATION_INSTALL_STAGING = YES +STARTUP_NOTIFICATION_DEPENDENCIES = xcb-util xlib_libX11 +STARTUP_NOTIFICATION_CONF_ENV = lf_cv_sane_realloc=yes +STARTUP_NOTIFICATION_CONF_OPTS = --with-x \ + --x-includes="$(STAGING_DIR)/usr/include/X11" \ + --x-libraries="$(STAGING_DIR)/usr/lib" +STARTUP_NOTIFICATION_LICENSE = LGPL-2.0 +STARTUP_NOTIFICATION_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/statserial/0001-ncurses-link.patch b/package/statserial/0001-ncurses-link.patch new file mode 100644 index 00000000..b1c41e67 --- /dev/null +++ b/package/statserial/0001-ncurses-link.patch @@ -0,0 +1,16 @@ +Link to libncurses instead of the legacy libcurses. + +Signed-off-by: Gustavo Zacarias + +diff -Nura statserial-1.1.orig/Makefile statserial-1.1/Makefile +--- statserial-1.1.orig/Makefile 2014-07-04 12:47:41.279440415 -0300 ++++ statserial-1.1/Makefile 2014-07-04 12:47:47.948665740 -0300 +@@ -10,7 +10,7 @@ + LDFLAGS = -s -N + + statserial: statserial.o +- $(LD) $(LDFLAGS) -o statserial statserial.o -lcurses ++ $(LD) $(LDFLAGS) -o statserial statserial.o -lncurses + + statserial.o: statserial.c + $(CC) $(CFLAGS) -c statserial.c diff --git a/package/statserial/Config.in b/package/statserial/Config.in new file mode 100644 index 00000000..4db5eb1a --- /dev/null +++ b/package/statserial/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_STATSERIAL + bool "statserial" + select BR2_PACKAGE_NCURSES + help + Displays a table of the signals on a standard + 9-pin or 25-pin serial port, and indicates the + status of the handshaking lines. It can be + useful for debugging problems with serial + ports or modems. + + https://sites.google.com/site/tranter/software diff --git a/package/statserial/statserial.hash b/package/statserial/statserial.hash new file mode 100644 index 00000000..ca96b864 --- /dev/null +++ b/package/statserial/statserial.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 40cf3bd506852942aa98f468c90ed4ea66dbd343b93efacd40d617b55caf3967 statserial-1.1.tar.gz +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING diff --git a/package/statserial/statserial.mk b/package/statserial/statserial.mk new file mode 100644 index 00000000..f9b131fc --- /dev/null +++ b/package/statserial/statserial.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# statserial +# +################################################################################ + +STATSERIAL_VERSION = 1.1 +STATSERIAL_SITE = http://www.ibiblio.org/pub/Linux/system/serial +STATSERIAL_DEPENDENCIES = ncurses +STATSERIAL_LICENSE = GPL-2.0+ +STATSERIAL_LICENSE_FILES = COPYING + +define STATSERIAL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" LDFLAGS="$(TARGET_LDFLAGS)" -C $(@D) +endef + +define STATSERIAL_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/statserial $(TARGET_DIR)/usr/bin/statserial +endef + +$(eval $(generic-package)) diff --git a/package/stb/Config.in b/package/stb/Config.in new file mode 100644 index 00000000..41014d24 --- /dev/null +++ b/package/stb/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_STB + bool "stb" + help + Single-file image and audio processing libraries for C/C++. + + https://github.com/nothings/stb diff --git a/package/stb/stb.hash b/package/stb/stb.hash new file mode 100644 index 00000000..097ad342 --- /dev/null +++ b/package/stb/stb.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c47cf5abe21e1d620afccd159c23fe71dfa86eb270015a7646a4f79e9bfd5503 stb-8b5f1f37b5b75829fc72d38e7b5d4bcbf8a26d55.tar.gz +sha256 bebfe904b14301657e4e5d655c811d51fd31b97c455b9cc2d8600d6bac6cff63 LICENSE diff --git a/package/stb/stb.mk b/package/stb/stb.mk new file mode 100644 index 00000000..59358aec --- /dev/null +++ b/package/stb/stb.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# stb +# +################################################################################ + +STB_VERSION = 8b5f1f37b5b75829fc72d38e7b5d4bcbf8a26d55 +STB_SITE = $(call github,nothings,stb,$(STB_VERSION)) +STB_LICENSE = Public Domain or MIT +STB_LICENSE_FILES = LICENSE +STB_INSTALL_STAGING = YES +STB_INSTALL_TARGET = NO + +define STB_INSTALL_STAGING_CMDS + mkdir -p $(STAGING_DIR)/usr/include/stb + $(INSTALL) -m 0644 $(@D)/*.h $(STAGING_DIR)/usr/include/stb + $(INSTALL) -D -m 0644 $(STB_PKGDIR)/stb.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/stb.pc +endef + +$(eval $(generic-package)) diff --git a/package/stb/stb.pc b/package/stb/stb.pc new file mode 100644 index 00000000..165b6da9 --- /dev/null +++ b/package/stb/stb.pc @@ -0,0 +1,8 @@ +prefix=/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: stb +Description: single-file image and audio processing libraries for C/C++ +Version: 0.0 +Cflags: -I${includedir}/stb diff --git a/package/stella/Config.in b/package/stella/Config.in new file mode 100644 index 00000000..b5d14848 --- /dev/null +++ b/package/stella/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_STELLA + bool "stella" + depends on !BR2_STATIC_LIBS # sdl2 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17 + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr + select BR2_PACKAGE_SDL2 + help + Stella is a multi-platform Atari 2600 VCS emulator. + + https://stella-emu.github.io/ + +comment "stella needs a toolchain w/ dynamic library, C++, threads, gcc >= 7" + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 + +comment "stella needs a toolchain not affected by GCC bug 64735" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/stella/stella.hash b/package/stella/stella.hash new file mode 100644 index 00000000..59c68064 --- /dev/null +++ b/package/stella/stella.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 9ef880df87f2d3ffebfbad915247d1fd5a3aca41dfd6a754dcf7a142ac826752 stella-6.7.1-src.tar.xz +sha256 e82dd017fea2c70a16726aa1d7c05c5b7597e10f7229511c1b110bf84cb507c0 Copyright.txt +sha256 58530d09b6fcb91ae27071be0081af90e6c2d7fdf991d34a29e234a2a5e75455 License.txt diff --git a/package/stella/stella.mk b/package/stella/stella.mk new file mode 100644 index 00000000..c48bb593 --- /dev/null +++ b/package/stella/stella.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# stella +# +################################################################################ + +STELLA_VERSION = 6.7.1 +STELLA_SOURCE = stella-$(STELLA_VERSION)-src.tar.xz +STELLA_SITE = https://github.com/stella-emu/stella/releases/download/$(STELLA_VERSION) +STELLA_LICENSE = GPL-2.0+ +STELLA_LICENSE_FILES = Copyright.txt License.txt + +STELLA_DEPENDENCIES = sdl2 + +STELLA_CONF_OPTS = \ + --host=$(GNU_TARGET_NAME) \ + --prefix=/usr \ + --with-sdl-prefix=$(STAGING_DIR)/usr + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +STELLA_CONF_OPTS += --enable-png +STELLA_DEPENDENCIES += libpng +else +STELLA_CONF_OPTS += --disable-png +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +STELLA_CONF_OPTS += --enable-zip +STELLA_DEPENDENCIES += zlib +else +STELLA_CONF_OPTS += --disable-zip +endif + +# The configure script is not autoconf based, so we use the +# generic-package infrastructure +define STELLA_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + ./configure $(STELLA_CONF_OPTS) \ + ) +endef + +define STELLA_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define STELLA_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR="$(TARGET_DIR)" -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/stellarium/Config.in b/package/stellarium/Config.in new file mode 100644 index 00000000..566f8edc --- /dev/null +++ b/package/stellarium/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_STELLARIUM + bool "stellarium" + depends on BR2_PACKAGE_QT5 + depends on BR2_PACKAGE_QT5_GL_AVAILABLE + depends on BR2_PACKAGE_HAS_LIBGL # does not support OpenGL ES + select BR2_PACKAGE_QT5BASE_CONCURRENT + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_NETWORK + select BR2_PACKAGE_QT5BASE_OPENGL + select BR2_PACKAGE_QT5BASE_PRINTSUPPORT + select BR2_PACKAGE_QT5BASE_WIDGETS + select BR2_PACKAGE_QT5CHARTS + select BR2_PACKAGE_QT5LOCATION + select BR2_PACKAGE_QT5MULTIMEDIA + select BR2_PACKAGE_ZLIB + help + Stellarium is a free open source planetarium for your + computer. It shows a realistic sky in 3D, just like what + you see with the naked eye, binoculars or a telescope. + + https://stellarium.org + +comment "stellarium needs Qt5 and an OpenGL provider" + depends on !BR2_PACKAGE_QT5 || !BR2_PACKAGE_HAS_LIBGL diff --git a/package/stellarium/stellarium.hash b/package/stellarium/stellarium.hash new file mode 100644 index 00000000..6f831f29 --- /dev/null +++ b/package/stellarium/stellarium.hash @@ -0,0 +1,4 @@ +# From https://github.com/Stellarium/stellarium/releases +sha256 f9e8e114e34265194ffff0c2a2806a6fdc998449192749c4ef60b0a5302101af stellarium-24.2.tar.xz +# Locally computed +sha256 3aeeb5bb98bf7041ab82cffe15efa28ac58ee2bdf162b71301f5c192be631259 COPYING diff --git a/package/stellarium/stellarium.mk b/package/stellarium/stellarium.mk new file mode 100644 index 00000000..abbfe72a --- /dev/null +++ b/package/stellarium/stellarium.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# stellarium +# +################################################################################ + +STELLARIUM_VERSION = 24.2 +STELLARIUM_SOURCE = stellarium-$(STELLARIUM_VERSION).tar.xz +STELLARIUM_SITE = https://github.com/Stellarium/stellarium/releases/download/v$(STELLARIUM_VERSION) +STELLARIUM_LICENSE = GPL-2.0+ +STELLARIUM_LICENSE_FILES = COPYING +STELLARIUM_DEPENDENCIES = \ + qt5base \ + qt5charts \ + qt5location \ + qt5multimedia \ + zlib +STELLARIUM_CONF_OPTS = \ + -DENABLE_MEDIA=ON \ + -DENABLE_NLS=OFF \ + -DENABLE_SHOWMYSKY=OFF \ + -DENABLE_QTWEBENGINE=OFF \ + -DENABLE_QT6=OFF \ + -DENABLE_XLSX=OFF \ + -DUSE_PLUGIN_TELESCOPECONTROL=OFF \ + -DUSE_SYSTEM_ZLIB=ON + +ifeq ($(BR2_PACKAGE_QT5SCRIPT),y) +STELLARIUM_DEPENDENCIES += qt5script +STELLARIUM_CONF_OPTS += -DENABLE_SCRIPTING=ON +else +STELLARIUM_CONF_OPTS += -DENABLE_SCRIPTING=OFF +endif + +ifeq ($(BR2_PACKAGE_QT5SERIALPORT),y) +STELLARIUM_DEPENDENCIES += qt5serialport +ifeq ($(BR2_PACKAGE_GPSD),y) +STELLARIUM_DEPENDENCIES += gpsd +endif +STELLARIUM_CONF_OPTS += -DENABLE_GPS=ON +else +STELLARIUM_CONF_OPTS += -DENABLE_GPS=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/stm32flash/Config.in b/package/stm32flash/Config.in new file mode 100644 index 00000000..87afe3b8 --- /dev/null +++ b/package/stm32flash/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_STM32FLASH + bool "stm32flash" + help + Open source cross platform flash program for the STM32 ARM + microcontrollers using the built-in ST serial bootloader + over UART or I2C. + + http://sourceforge.net/projects/stm32flash/ diff --git a/package/stm32flash/stm32flash.hash b/package/stm32flash/stm32flash.hash new file mode 100644 index 00000000..afffbc68 --- /dev/null +++ b/package/stm32flash/stm32flash.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 c4c9cd8bec79da63b111d15713ef5cc2cd947deca411d35d6e3065e227dc414a stm32flash-0.7.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 gpl-2.0.txt diff --git a/package/stm32flash/stm32flash.mk b/package/stm32flash/stm32flash.mk new file mode 100644 index 00000000..1fff27df --- /dev/null +++ b/package/stm32flash/stm32flash.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# stm32flash +# +################################################################################ + +STM32FLASH_VERSION = 0.7 +STM32FLASH_SITE = http://downloads.sourceforge.net/project/stm32flash +STM32FLASH_LICENSE = GPL-2.0+ +STM32FLASH_LICENSE_FILES = gpl-2.0.txt + +define STM32FLASH_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define STM32FLASH_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR="$(TARGET_DIR)" PREFIX="/usr" \ + -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/strace/Config.in b/package/strace/Config.in new file mode 100644 index 00000000..e0551f38 --- /dev/null +++ b/package/strace/Config.in @@ -0,0 +1,33 @@ +config BR2_PACKAGE_STRACE + bool "strace" + # needs at least kernel headers 4.0 on nios2 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 || !BR2_nios2 + # needs at least kernel headers 5.0 on xtensa + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 || !BR2_xtensa + # needs at least kernel headers 5.0 on musl aarch64 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 || \ + !(BR2_aarch64 || BR2_aarch64_be) || \ + !BR2_TOOLCHAIN_USES_MUSL + depends on !BR2_RISCV_32 + help + A useful diagnostic, instructional, and debugging tool. + Allows you to track what system calls a program makes + while it is running. + + If you want 'strace -k' to work, make sure to enable the + 'libunwind' package. + + https://strace.io + +comment "strace needs a toolchain w/ headers >= 4.0 on nios2" + depends on BR2_nios2 + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 + +comment "strace needs a toolchain w/ headers >= 5.0 on xtensa" + depends on BR2_xtensa + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 + +comment "strace needs a musl toolchain w/ headers >= 5.0 on aarch64" + depends on BR2_aarch64 || BR2_aarch64_be + depends on BR2_TOOLCHAIN_USES_MUSL + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 diff --git a/package/strace/strace.hash b/package/strace/strace.hash new file mode 100644 index 00000000..dcaf1ad5 --- /dev/null +++ b/package/strace/strace.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking signature with RSA key 0xA8041FA839E16E36 +# https://strace.io/files/6.10/strace-6.10.tar.xz.asc +sha256 765ec71aa1de2fe37363c1e40c7b7669fc1d40c44bb5d38ba8e8cd82c4edcf07 strace-6.10.tar.xz +sha256 1988d0e1aa101d68855e8c4f940aacf2531051b82f6b608eb026c5fad1f33df1 COPYING +sha256 7c379436436a562834aa7d2f5dcae1f80a25230fa74201046ca1fba4367d39aa LGPL-2.1-or-later diff --git a/package/strace/strace.mk b/package/strace/strace.mk new file mode 100644 index 00000000..34a15435 --- /dev/null +++ b/package/strace/strace.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# strace +# +################################################################################ + +STRACE_VERSION = 6.10 +STRACE_SOURCE = strace-$(STRACE_VERSION).tar.xz +STRACE_SITE = https://github.com/strace/strace/releases/download/v$(STRACE_VERSION) +STRACE_LICENSE = LGPL-2.1+ +STRACE_LICENSE_FILES = COPYING LGPL-2.1-or-later +STRACE_CPE_ID_VALID = YES +STRACE_CONF_OPTS = --enable-mpers=no + +ifeq ($(BR2_PACKAGE_LIBUNWIND),y) +STRACE_DEPENDENCIES += libunwind +STRACE_CONF_OPTS += --with-libunwind +else +STRACE_CONF_OPTS += --without-libunwind +endif + +# Demangling symbols in stack trace needs libunwind and libiberty. +ifeq ($(BR2_PACKAGE_BINUTILS)$(BR2_PACKAGE_LIBUNWIND),yy) +STRACE_DEPENDENCIES += binutils +STRACE_CONF_OPTS += --with-libiberty=check +else +STRACE_CONF_OPTS += --without-libiberty +endif + +ifeq ($(BR2_PACKAGE_PERL),) +define STRACE_REMOVE_STRACE_GRAPH + rm -f $(TARGET_DIR)/usr/bin/strace-graph +endef + +STRACE_POST_INSTALL_TARGET_HOOKS += STRACE_REMOVE_STRACE_GRAPH +endif + +$(eval $(autotools-package)) diff --git a/package/stress-ng/0001-stress-sock.c-fix-build-without-SO_ZEROCOPY.patch b/package/stress-ng/0001-stress-sock.c-fix-build-without-SO_ZEROCOPY.patch new file mode 100644 index 00000000..f1f4ab56 --- /dev/null +++ b/package/stress-ng/0001-stress-sock.c-fix-build-without-SO_ZEROCOPY.patch @@ -0,0 +1,56 @@ +From 142c3b2414f0adfb13b59dea993054a0daa6cd52 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 4 May 2024 10:04:20 +0200 +Subject: [PATCH] stress-sock.c: fix build without SO_ZEROCOPY + +uclibc-ng defines MSG_ZEROCOPY but not SO_ZEROCOPY resulting in the +following build failure since version 0.17.04 and +https://github.com/ColinIanKing/stress-ng/commit/2ad8aff9bc1ab822cf615c72712c6031a8f60bbd: + +stress-sock.c: In function 'stress_sock_client': +stress-sock.c:656:35: error: 'SO_ZEROCOPY' undeclared (first use in this function); did you mean 'MSG_ZEROCOPY'? + 656 | if (setsockopt(fd, SOL_SOCKET, SO_ZEROCOPY, &so_zerocopy, sizeof(so_zerocopy)) == 0) { + | ^~~~~~~~~~~ + | MSG_ZEROCOPY +stress-sock.c:656:35: note: each undeclared identifier is reported only once for each function it appears in +CC stress-sockfd.c +stress-sock.c: In function 'stress_sock_server': +stress-sock.c:1060:34: error: 'SO_ZEROCOPY' undeclared (first use in this function); did you mean 'MSG_ZEROCOPY'? + 1060 | if (setsockopt(fd, SOL_SOCKET, SO_ZEROCOPY, &so_zerocopy, sizeof(so_zerocopy)) == 0) { + | ^~~~~~~~~~~ + | MSG_ZEROCOPY + +Fixes: + - http://autobuild.buildroot.org/results/bcff31bd9820cf0b95f8d8c6de44fd4ab8e2f065 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/ColinIanKing/stress-ng/commit/142c3b2414f0adfb13b59dea993054a0daa6cd52 +--- + stress-sock.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/stress-sock.c b/stress-sock.c +index 253730168..880530d04 100644 +--- a/stress-sock.c ++++ b/stress-sock.c +@@ -649,7 +649,7 @@ retry: + args->name, errno, strerror(errno)); + goto free_controls; + } +-#if defined(MSG_ZEROCOPY) ++#if defined(MSG_ZEROCOPY) && defined(SO_ZEROCOPY) + if (sock_zerocopy) { + int so_zerocopy = 1; + +@@ -1053,7 +1053,7 @@ static int OPTIMIZE3 stress_sock_server( + goto die; + } + +-#if defined(MSG_ZEROCOPY) ++#if defined(MSG_ZEROCOPY) && defined(SO_ZEROCOPY) + if (sock_zerocopy) { + int so_zerocopy = 1; + +-- +2.43.0 + diff --git a/package/stress-ng/0002-core-sched.c-fix-uclibc-ng-build.patch b/package/stress-ng/0002-core-sched.c-fix-uclibc-ng-build.patch new file mode 100644 index 00000000..c9c4e226 --- /dev/null +++ b/package/stress-ng/0002-core-sched.c-fix-uclibc-ng-build.patch @@ -0,0 +1,40 @@ +From f8dc9f790251562c3a4635edd29d7674298cd5f7 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 4 May 2024 17:52:32 +0200 +Subject: [PATCH] core-sched.c: fix uclibc-ng build + +Since version 0.17.02 and commit +e75ecbc8994e94b9e151b1191c1888bd2821fe72, sched.h is not included before +including core-shim.h. The issue is that core-shim.h defines its own +sched_priority parameter in shim_sched_attr. When sched.h is included +after core-shim.h, the build will fail because __sched_priority will not +be found: + +In file included from core-sched.c:25: +core-sched.c: In function 'stress_set_sched': +core-sched.c:170:22: error: 'struct shim_sched_attr' has no member named '__sched_priority'; did you mean 'sched_priority'? + 170 | attr.sched_priority = (unsigned int)sched_priority; + | ^~~~~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/d7d38dbb10f7f188da8dccc44a84a3c46a720bed + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/ColinIanKing/stress-ng/commit/f8dc9f790251562c3a4635edd29d7674298cd5f7 +--- + core-shim.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/core-shim.h b/core-shim.h +index bed4cf2f6..475aac512 100644 +--- a/core-shim.h ++++ b/core-shim.h +@@ -23,6 +23,8 @@ + #include + #endif + ++#include ++ + /* + * BeagleBoneBlack with 4.1.15 kernel does not + * define the following, these should be defined diff --git a/package/stress-ng/Config.in b/package/stress-ng/Config.in new file mode 100644 index 00000000..918c3db1 --- /dev/null +++ b/package/stress-ng/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_STRESS_NG + bool "stress-ng" + depends on BR2_USE_MMU # fork() + # perf.c needs PERF_COUNT_HW_REF_CPU_CYCLES + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3 + # fenv.h lacks FE_INVALID, FE_OVERFLOW & FE_UNDERFLOW on nios2 and ARC + depends on !BR2_nios2 + depends on !BR2_arc + help + stress-ng will stress test a computer system in various + selectable ways. It was designed to exercise various physical + subsystems of a computer as well as the various operating + system kernel interfaces. + + https://github.com/ColinIanKing/stress-ng + +comment "stress-ng needs a toolchain w/ headers >= 3.3" + depends on !BR2_nios2 && !BR2_arc + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3 diff --git a/package/stress-ng/stress-ng.hash b/package/stress-ng/stress-ng.hash new file mode 100644 index 00000000..1f704809 --- /dev/null +++ b/package/stress-ng/stress-ng.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b0bc1495adce6c7a1f82d53f363682b243d6d7e93a06be7f94c9559c0a311a6f stress-ng-0.17.07.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/stress-ng/stress-ng.mk b/package/stress-ng/stress-ng.mk new file mode 100644 index 00000000..04427f70 --- /dev/null +++ b/package/stress-ng/stress-ng.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# stress-ng +# +################################################################################ + +STRESS_NG_VERSION = 0.17.07 +STRESS_NG_SITE = $(call github,ColinIanKing,stress-ng,V$(STRESS_NG_VERSION)) +STRESS_NG_LICENSE = GPL-2.0+ +STRESS_NG_LICENSE_FILES = COPYING + +STRESS_NG_MAKE_FLAGS = \ + PRESERVE_CFLAGS=1 + +ifeq ($(BR2_PACKAGE_LIBBSD),y) +STRESS_NG_DEPENDENCIES += libbsd +endif + +ifeq ($(BR2_PACKAGE_KEYUTILS),y) +STRESS_NG_DEPENDENCIES += keyutils +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +STRESS_NG_MAKE_FLAGS += LDFLAGS="$(TARGET_LDFLAGS) -latomic" +endif + +define STRESS_NG_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(STRESS_NG_MAKE_FLAGS) +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 + $(INSTALL) -m 0755 -D $(@D)/stress-ng $(TARGET_DIR)/usr/bin/stress-ng +endef + +$(eval $(generic-package)) diff --git a/package/stress/Config.in b/package/stress/Config.in new file mode 100644 index 00000000..32a3e264 --- /dev/null +++ b/package/stress/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_STRESS + bool "stress" + depends on BR2_USE_MMU # fork() + help + A deliberately simple workload generator for POSIX systems. + It imposes a configurable amount of CPU, memory, I/O, and + disk stress on the system. + + https://github.com/resurrecting-open-source-projects/stress/ diff --git a/package/stress/stress.hash b/package/stress/stress.hash new file mode 100644 index 00000000..ac361225 --- /dev/null +++ b/package/stress/stress.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 e63adb57597e617c14ecb0d841b5d990460796d9e9ec69bd56fe645ef02eb239 stress-1.0.7.tar.bz2 +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/stress/stress.mk b/package/stress/stress.mk new file mode 100644 index 00000000..53f01b3b --- /dev/null +++ b/package/stress/stress.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# stress +# +################################################################################ + +STRESS_VERSION = 1.0.7 +STRESS_SOURCE = stress-$(STRESS_VERSION).tar.bz2 +STRESS_SITE = https://github.com/resurrecting-open-source-projects/stress/releases/download/$(STRESS_VERSION) +STRESS_LICENSE = GPL-2.0+ +STRESS_LICENSE_FILES = COPYING + +# Stress is linked statically if the --enable-static is specified. +# However, this option is always specified in the global +# SHARED_STATIC_LIBS_OPTS to tell packages to build static libraries, +# if supported. +# +# If the BR2_STATIC_LIBS is not defined, we have to specify +# --disable-static explicitly to get stress linked dynamically. +# +# Also, disable documentation by undefining makeinfo +STRESS_CONF_OPTS = \ + $(if $(BR2_STATIC_LIBS),,--disable-static) \ + MAKEINFO=: + +$(eval $(autotools-package)) diff --git a/package/strongswan/Config.in b/package/strongswan/Config.in new file mode 100644 index 00000000..a62688f9 --- /dev/null +++ b/package/strongswan/Config.in @@ -0,0 +1,212 @@ +comment "strongswan needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +menuconfig BR2_PACKAGE_STRONGSWAN + bool "strongswan" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_STATIC_LIBS + help + strongSwan is an OpenSource IPsec implementation for the + Linux operating system. It is based on the discontinued + FreeS/WAN project and the X.509 patch. + + The focus is on: + - simplicity of configuration + - strong encryption and authentication methods + - powerful IPsec policies supporting large and complex + VPN networks + + strongSwan provide many plugins. Only a few are presented + here. + + http://www.strongswan.org/ + +if BR2_PACKAGE_STRONGSWAN + +choice + prompt "Cryptographic backend" + default BR2_PACKAGE_STRONGSWAN_GMP + +config BR2_PACKAGE_STRONGSWAN_BOTAN + bool "botan" + depends on BR2_PACKAGE_BOTAN_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_10 # botan + select BR2_PACKAGE_BOTAN + +comment "botan backend needs a toolchain w/ C++, gcc >= 10" + depends on !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_10 + depends on BR2_PACKAGE_BOTAN_ARCH_SUPPORTS + +config BR2_PACKAGE_STRONGSWAN_OPENSSL + bool "OpenSSL" + select BR2_PACKAGE_OPENSSL + +config BR2_PACKAGE_STRONGSWAN_GCRYPT + bool "libgcrypt" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt + select BR2_PACKAGE_LIBGCRYPT + +config BR2_PACKAGE_STRONGSWAN_GMP + bool "GNU MP (libgmp)" + select BR2_PACKAGE_GMP + +config BR2_PACKAGE_STRONGSWAN_WOLFSSL + bool "wolfssl" + select BR2_PACKAGE_WOLFSSL + +endchoice + +config BR2_PACKAGE_STRONGSWAN_AF_ALG + bool "Enable AF_ALG crypto interface to Linux Crypto API" + +config BR2_PACKAGE_STRONGSWAN_CURL + bool "Enable CURL fetcher plugin to fetch files via libcurl" + select BR2_PACKAGE_LIBCURL + +config BR2_PACKAGE_STRONGSWAN_MD4 + bool "Enable MD4 hash algorithm" + +config BR2_PACKAGE_STRONGSWAN_CHARON + bool "Enable the IKEv1/IKEv2 keying daemon charon" + default y + +if BR2_PACKAGE_STRONGSWAN_CHARON + +config BR2_PACKAGE_STRONGSWAN_TNCCS_11 + bool "Enable TNCCS 1.1 protocol module" + select BR2_PACKAGE_LIBXML2 + +config BR2_PACKAGE_STRONGSWAN_TNCCS_20 + bool "Enable TNCCS 2.0 protocol module" + +config BR2_PACKAGE_STRONGSWAN_TNCCS_DYNAMIC + bool "Enable dynamic TNCCS protocol discovery module" + +config BR2_PACKAGE_STRONGSWAN_SYSTIME_FIX + bool "Enable systime-fix plugin" + +config BR2_PACKAGE_STRONGSWAN_EAP_SIM + bool "Enable EAP-SIM" + default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy + +config BR2_PACKAGE_STRONGSWAN_EAP_SIM_FILE + bool "Enable EAP-SIM file backend" + default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy + select BR2_PACKAGE_STRONGSWAN_EAP_SIM + +config BR2_PACKAGE_STRONGSWAN_EAP_SIM_PCSC + bool "Enable EAP-SIM smart card backend" + depends on !BR2_STATIC_LIBS # pcsc-lite + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # pcsc-lite + select BR2_PACKAGE_PCSC_LITE + select BR2_PACKAGE_STRONGSWAN_EAP_SIM + +comment "EAP-SIM smart backend needs a toolchain w/ dynamic library, gcc >= 4.9" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_STRONGSWAN_EAP_AKA + bool "Enable EAP-AKA" + default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy + +config BR2_PACKAGE_STRONGSWAN_EAP_AKA_3GPP2 + bool "Enable EAP-AKA 3GPP2 algorithms" + default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy + select BR2_PACKAGE_GMP + select BR2_PACKAGE_STRONGSWAN_EAP_AKA + +config BR2_PACKAGE_STRONGSWAN_EAP_SIMAKA_SQL + bool "Enable EAP-SIM/AKA backend based on a triplet/quintuplet SQL database" + default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy + select BR2_PACKAGE_STRONGSWAN_EAP_AKA + select BR2_PACKAGE_STRONGSWAN_EAP_SIM + +config BR2_PACKAGE_STRONGSWAN_EAP_SIMAKA_PSEUDONYM + bool "Enable EAP-SIM/AKA pseudonym storage" + default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy + select BR2_PACKAGE_STRONGSWAN_EAP_AKA + select BR2_PACKAGE_STRONGSWAN_EAP_SIM + +config BR2_PACKAGE_STRONGSWAN_EAP_SIMAKA_REAUTH + bool "Enable EAP-SIM/AKA reauthentication data storage" + default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy + select BR2_PACKAGE_STRONGSWAN_EAP_AKA + select BR2_PACKAGE_STRONGSWAN_EAP_SIM + +config BR2_PACKAGE_STRONGSWAN_EAP_IDENTITY + bool "Enable EAP-Identity" + default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy + +config BR2_PACKAGE_STRONGSWAN_EAP_MD5 + bool "Enable EAP-MD5" + default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy + +config BR2_PACKAGE_STRONGSWAN_EAP_GTC + bool "Enable EAP-GDC" + default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy + +config BR2_PACKAGE_STRONGSWAN_EAP_MSCHAPV2 + bool "Enable EAP-MSCHAPv2" + default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy + select BR2_PACKAGE_STRONGSWAN_MD4 + +config BR2_PACKAGE_STRONGSWAN_EAP_PEAP + bool "Enable EAP-PEAP" + default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy + +config BR2_PACKAGE_STRONGSWAN_EAP_RADIUS + bool "Enable EAP-RADIUS" + default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy + +config BR2_PACKAGE_STRONGSWAN_EAP_TLS + bool "Enable EAP-TLS" + default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy + +config BR2_PACKAGE_STRONGSWAN_EAP_TTLS + bool "Enable EAP-TTLS" + default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy + +config BR2_PACKAGE_STRONGSWAN_EAP_DYNAMIC + bool "Enable EAP-DYNAMIC" + default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy + +config BR2_PACKAGE_STRONGSWAN_EAP_TNC + bool "Enable EAP-TNC" + default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy + +config BR2_PACKAGE_STRONGSWAN_UNITY + bool "Enables Cisco Unity extension plugin" + +config BR2_PACKAGE_STRONGSWAN_STROKE + bool "Enable charons stroke configuration backend" + default y + +config BR2_PACKAGE_STRONGSWAN_SQL + bool "Enable SQL database configuration backend" + depends on BR2_PACKAGE_SQLITE || BR2_PACKAGE_MARIADB + +config BR2_PACKAGE_STRONGSWAN_BYPASS_LAN + bool "Enable BYPASS-LAN plugin" + +endif + +config BR2_PACKAGE_STRONGSWAN_PKI + bool "Enable pki certificate utility" + default y + +config BR2_PACKAGE_STRONGSWAN_SCRIPTS + bool "Enable additional utilities (found in scripts directory)" + default y + depends on BR2_PACKAGE_STRONGSWAN_CHARON + +config BR2_PACKAGE_STRONGSWAN_VICI + bool "Enable vici/swanctl" + default y + depends on BR2_PACKAGE_STRONGSWAN_CHARON + +endif diff --git a/package/strongswan/strongswan.hash b/package/strongswan/strongswan.hash new file mode 100644 index 00000000..ed8cf0ae --- /dev/null +++ b/package/strongswan/strongswan.hash @@ -0,0 +1,7 @@ +# From http://download.strongswan.org/strongswan-5.9.13.tar.bz2.md5 +md5 9ada6be0c89846fb7ded1787a17cfbb2 strongswan-5.9.13.tar.bz2 +# Calculated based on the hash above +sha256 56e30effb578fd9426d8457e3b76c8c3728cd8a5589594b55649b2719308ba55 strongswan-5.9.13.tar.bz2 +# Locally calculated +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 2292e21797754548dccdef9eef6aee7584e552fbd890fa914e1de8d3577d23f0 LICENSE diff --git a/package/strongswan/strongswan.mk b/package/strongswan/strongswan.mk new file mode 100644 index 00000000..57cadd3a --- /dev/null +++ b/package/strongswan/strongswan.mk @@ -0,0 +1,97 @@ +################################################################################ +# +# strongswan +# +################################################################################ + +STRONGSWAN_VERSION = 5.9.13 +STRONGSWAN_SOURCE = strongswan-$(STRONGSWAN_VERSION).tar.bz2 +STRONGSWAN_SITE = http://download.strongswan.org +STRONGSWAN_LICENSE = GPL-2.0+ +STRONGSWAN_LICENSE_FILES = COPYING LICENSE +STRONGSWAN_CPE_ID_VENDOR = strongswan +STRONGSWAN_DEPENDENCIES = host-pkgconf +STRONGSWAN_INSTALL_STAGING = YES +STRONGSWAN_CONF_OPTS += \ + --without-lib-prefix \ + --enable-led \ + --enable-pkcs11=yes \ + --enable-kernel-netlink=yes \ + --enable-socket-default=yes \ + --enable-botan=$(if $(BR2_PACKAGE_STRONGSWAN_BOTAN),yes,no) \ + --enable-openssl=$(if $(BR2_PACKAGE_STRONGSWAN_OPENSSL),yes,no) \ + --enable-gcrypt=$(if $(BR2_PACKAGE_STRONGSWAN_GCRYPT),yes,no) \ + --enable-gmp=$(if $(BR2_PACKAGE_STRONGSWAN_GMP),yes,no) \ + --enable-af-alg=$(if $(BR2_PACKAGE_STRONGSWAN_AF_ALG),yes,no) \ + --enable-curl=$(if $(BR2_PACKAGE_STRONGSWAN_CURL),yes,no) \ + --enable-charon=$(if $(BR2_PACKAGE_STRONGSWAN_CHARON),yes,no) \ + --enable-tnccs-11=$(if $(BR2_PACKAGE_STRONGSWAN_TNCCS_11),yes,no) \ + --enable-tnccs-20=$(if $(BR2_PACKAGE_STRONGSWAN_TNCCS_20),yes,no) \ + --enable-tnccs-dynamic=$(if $(BR2_PACKAGE_STRONGSWAN_TNCCS_DYNAMIC),yes,no) \ + --enable-eap-sim-pcsc=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_SIM_PCSC),yes,no) \ + --enable-unity=$(if $(BR2_PACKAGE_STRONGSWAN_UNITY),yes,no) \ + --enable-stroke=$(if $(BR2_PACKAGE_STRONGSWAN_STROKE),yes,no) \ + --enable-sql=$(if $(BR2_PACKAGE_STRONGSWAN_SQL),yes,no) \ + --enable-pki=$(if $(BR2_PACKAGE_STRONGSWAN_PKI),yes,no) \ + --enable-scripts=$(if $(BR2_PACKAGE_STRONGSWAN_SCRIPTS),yes,no) \ + --enable-vici=$(if $(BR2_PACKAGE_STRONGSWAN_VICI),yes,no) \ + --enable-swanctl=$(if $(BR2_PACKAGE_STRONGSWAN_VICI),yes,no) \ + --enable-wolfssl=$(if $(BR2_PACKAGE_STRONGSWAN_WOLFSSL),yes,no) \ + --enable-md4=$(if $(BR2_PACKAGE_STRONGSWAN_MD4),yes,no) \ + --enable-systime-fix=$(if $(BR2_PACKAGE_STRONGSWAN_SYSTIME_FIX),yes,no) \ + --enable-eap-sim=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_SIM),yes,no) \ + --enable-eap-sim-file=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_SIM_FILE),yes,no) \ + --enable-eap-aka=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_AKA),yes,no) \ + --enable-eap-aka-3gpp2=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_AKA_3GPP2),yes,no) \ + --enable-eap-simaka-sql=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_SIMAKA_SQL),yes,no) \ + --enable-eap-simaka-pseudonym=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_SIMAKA_PSEUDONYM),yes,no) \ + --enable-eap-simaka-reauth=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_SIMAKA_REAUTH),yes,no) \ + --enable-eap-identity=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_IDENTITY),yes,no) \ + --enable-eap-md5=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_MD5),yes,no) \ + --enable-eap-gtc=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_GTC),yes,no) \ + --enable-eap-mschapv2=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_MSCHAPV2),yes,no) \ + --enable-eap-tls=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_TLS),yes,no) \ + --enable-eap-ttls=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_TTLS),yes,no) \ + --enable-eap-peap=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_PEAP),yes,no) \ + --enable-eap-tnc=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_TNC),yes,no) \ + --enable-eap-dynamic=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_DYNAMIC),yes,no) \ + --enable-eap-radius=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_RADIUS),yes,no) \ + --enable-bypass-lan=$(if $(BR2_PACKAGE_STRONGSWAN_BYPASS_LAN),yes,no) \ + --with-ipseclibdir=/usr/lib \ + --with-plugindir=/usr/lib/ipsec/plugins \ + --with-imcvdir=/usr/lib/ipsec/imcvs \ + --with-dev-headers=/usr/include + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +STRONGSWAN_CONF_ENV += LIBS='-latomic' +endif + +STRONGSWAN_DEPENDENCIES += \ + $(if $(BR2_PACKAGE_STRONGSWAN_BOTAN),botan) \ + $(if $(BR2_PACKAGE_STRONGSWAN_OPENSSL),openssl) \ + $(if $(BR2_PACKAGE_STRONGSWAN_GCRYPT),libgcrypt) \ + $(if $(BR2_PACKAGE_STRONGSWAN_GMP),gmp) \ + $(if $(BR2_PACKAGE_STRONGSWAN_EAP_AKA_3GPP2),gmp) \ + $(if $(BR2_PACKAGE_STRONGSWAN_CURL),libcurl) \ + $(if $(BR2_PACKAGE_STRONGSWAN_TNCCS_11),libxml2) \ + $(if $(BR2_PACKAGE_STRONGSWAN_EAP_SIM_PCSC),pcsc-lite) \ + $(if $(BR2_PACKAGE_STRONGSWAN_WOLFSSL),wolfssl) + +ifeq ($(BR2_PACKAGE_STRONGSWAN_SQL),y) +STRONGSWAN_DEPENDENCIES += \ + $(if $(BR2_PACKAGE_SQLITE),sqlite) \ + $(if $(BR2_PACKAGE_MARIADB),mariadb) +endif + +# https://github.com/strongswan/strongswan/issues/2410 +ifeq ($(BR2_PACKAGE_STRONGSWAN_WOLFSSL),y) +STRONGSWAN_CONF_ENV += CPPFLAGS="$(TARGET_CPPFLAGS) -DWC_NO_RNG" +endif + +# disable connmark/forecast until net/if.h vs. linux/if.h conflict resolved +# problem exist since linux 4.5 header changes +STRONGSWAN_CONF_OPTS += \ + --disable-connmark \ + --disable-forecast + +$(eval $(autotools-package)) diff --git a/package/stunnel/0001-src-ocsp.c-fix-build-with-OPENSSL_NO_PSK.patch b/package/stunnel/0001-src-ocsp.c-fix-build-with-OPENSSL_NO_PSK.patch new file mode 100644 index 00000000..a8edc1d4 --- /dev/null +++ b/package/stunnel/0001-src-ocsp.c-fix-build-with-OPENSSL_NO_PSK.patch @@ -0,0 +1,45 @@ +From 93e5cdd68b13cc3161d9b0094b0f331bdaf07cbc Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 6 Jan 2024 17:28:20 +0100 +Subject: [PATCH] src/ocsp.c: fix build with OPENSSL_NO_PSK + +Fix the following build failure with OPENSSL_NO_PSK: + +ocsp.c: In function 'ocsp_init': +ocsp.c:112:20: error: 'SERVICE_OPTIONS' {aka 'struct service_options_struct'} has no member named 'psk_keys' + 112 | if(!section->psk_keys) { + | ^~ + +Fixes: + - http://autobuild.buildroot.org/results/1707beea413a8da8713ad2dc59db947329da45d2 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/mtrojnar/stunnel/pull/18 +--- + src/ocsp.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/ocsp.c b/src/ocsp.c +index 5073ded..12792af 100644 +--- a/src/ocsp.c ++++ b/src/ocsp.c +@@ -109,12 +109,16 @@ int ocsp_init(SERVICE_OPTIONS *section) { + s_log(LOG_DEBUG, "OCSP: Client OCSP stapling enabled"); + } else { + #if OPENSSL_VERSION_NUMBER>=0x10002000L ++#ifndef OPENSSL_NO_PSK + if(!section->psk_keys) { ++#endif + if(SSL_CTX_set_tlsext_status_cb(section->ctx, ocsp_server_cb)==TLSEXT_STATUSTYPE_ocsp) + s_log(LOG_DEBUG, "OCSP: Server OCSP stapling enabled"); ++#ifndef OPENSSL_NO_PSK + } else { + s_log(LOG_NOTICE, "OCSP: Server OCSP stapling is incompatible with PSK"); + } ++#endif + #else /* OpenSSL version 1.0.2 or later */ + s_log(LOG_NOTICE, "OCSP: Server OCSP stapling not supported"); + #endif /* OpenSSL version 1.0.2 or later */ +-- +2.43.0 + diff --git a/package/stunnel/Config.in b/package/stunnel/Config.in new file mode 100644 index 00000000..a46e2f03 --- /dev/null +++ b/package/stunnel/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_STUNNEL + bool "stunnel" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES + help + Stunnel is a program that wraps any TCP connection with an SSL + connection. + + http://www.stunnel.org/ diff --git a/package/stunnel/S50stunnel b/package/stunnel/S50stunnel new file mode 100644 index 00000000..04637b69 --- /dev/null +++ b/package/stunnel/S50stunnel @@ -0,0 +1,35 @@ +#!/bin/sh + +start() { + printf "Starting stunnel: " + start-stop-daemon -S -q -p /var/run/stunnel.pid --exec /usr/bin/stunnel + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping stunnel: " + start-stop-daemon -K -q -p /var/run/stunnel.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/package/stunnel/stunnel.hash b/package/stunnel/stunnel.hash new file mode 100644 index 00000000..6bfbc6d0 --- /dev/null +++ b/package/stunnel/stunnel.hash @@ -0,0 +1,5 @@ +# From https://www.stunnel.org/downloads/stunnel-5.71.tar.gz.sha256 +sha256 f023aae837c2d32deb920831a5ee1081e11c78a5d57340f8e6f0829f031017f5 stunnel-5.71.tar.gz +# Locally calculated +sha256 c172514e95e387eb4c77cdfbb55b635bf96e2dfcb85d785d993f64c40c4f89c4 COPYING.md +sha256 62f171d4d8b6726df61f18a6bbc0a70f79c4bc2134d837d35c81fc6289a2d84d COPYRIGHT.md diff --git a/package/stunnel/stunnel.mk b/package/stunnel/stunnel.mk new file mode 100644 index 00000000..9e9cf355 --- /dev/null +++ b/package/stunnel/stunnel.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# stunnel +# +################################################################################ + +STUNNEL_VERSION_MAJOR = 5 +STUNNEL_VERSION = $(STUNNEL_VERSION_MAJOR).71 +STUNNEL_SITE = http://www.usenix.org.uk/mirrors/stunnel/archive/$(STUNNEL_VERSION_MAJOR).x +STUNNEL_DEPENDENCIES = host-pkgconf 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) \ + LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl` +STUNNEL_LICENSE = GPL-2.0+ +STUNNEL_LICENSE_FILES = COPYING.md COPYRIGHT.md +STUNNEL_CPE_ID_VENDOR = stunnel +STUNNEL_SELINUX_MODULES = stunnel + +ifeq ($(BR2_INIT_SYSTEMD),y) +STUNNEL_DEPENDENCIES += systemd +else +STUNNEL_CONF_OPTS += --disable-systemd +endif + +define STUNNEL_INSTALL_CONF + $(INSTALL) -m 0644 -D $(@D)/tools/stunnel.conf \ + $(TARGET_DIR)/etc/stunnel/stunnel.conf + rm -f $(TARGET_DIR)/etc/stunnel/stunnel.conf-sample +endef + +STUNNEL_POST_INSTALL_TARGET_HOOKS += STUNNEL_INSTALL_CONF + +define STUNNEL_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/stunnel/S50stunnel $(TARGET_DIR)/etc/init.d/S50stunnel +endef + +$(eval $(autotools-package)) diff --git a/package/subversion/Config.in b/package/subversion/Config.in new file mode 100644 index 00000000..43e7dcca --- /dev/null +++ b/package/subversion/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_SUBVERSION + bool "subversion" + # apr really needs shared library support + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # apr + select BR2_PACKAGE_APR + select BR2_PACKAGE_APR_UTIL + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_LZ4 + select BR2_PACKAGE_UTF8PROC + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_SQLITE + help + Subversion is an open source version control system + + http://subversion.apache.org/ + +comment "subversion needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/package/subversion/subversion.hash b/package/subversion/subversion.hash new file mode 100644 index 00000000..2710e9e3 --- /dev/null +++ b/package/subversion/subversion.hash @@ -0,0 +1,5 @@ +# From https://www.apache.org/dist/subversion/subversion-1.14.3.tar.bz2.sha512 +sha512 40b172492005fd3b0cd9e457b4444af8ea5d8ff8fc161a9a0c6dc3a7314c6ad4ff75a4676f68a1919ae6273ae03e34d04eba8c1c37b8c0b4ec70d6731b527b41 subversion-1.14.3.tar.bz2 + +# Locally calculated +sha256 484aff0cfbb81155a10f903ed756e27e9fc65578c245a295bae295c4bb51eaad LICENSE diff --git a/package/subversion/subversion.mk b/package/subversion/subversion.mk new file mode 100644 index 00000000..bc0b9b45 --- /dev/null +++ b/package/subversion/subversion.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# subversion +# +################################################################################ + +SUBVERSION_VERSION = 1.14.3 +SUBVERSION_SOURCE = subversion-$(SUBVERSION_VERSION).tar.bz2 +SUBVERSION_SITE = https://downloads.apache.org/subversion +SUBVERSION_LICENSE = Apache-2.0 +SUBVERSION_LICENSE_FILES = LICENSE +SUBVERSION_CPE_ID_VENDOR = apache +SUBVERSION_DEPENDENCIES = \ + host-pkgconf \ + apr \ + apr-util \ + expat \ + lz4 \ + utf8proc \ + zlib \ + sqlite \ + $(TARGET_NLS_DEPENDENCIES) +SUBVERSION_CONF_OPTS = \ + --with-expat=$(STAGING_DIR)/usr/include:$(STAGING_DIR)/usr/lib: \ + --with-apr=$(STAGING_DIR)/usr \ + --with-apr-util=$(STAGING_DIR)/usr \ + --with-lz4=$(STAGING_DIR)/usr \ + --with-utf8proc=$(STAGING_DIR)/usr \ + --with-zlib=$(STAGING_DIR)/usr \ + --without-serf \ + --without-apxs \ + --without-berkeley-db \ + --without-sasl \ + --without-gnome-keyring \ + --without-libmagic +SUBVERSION_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) + +$(eval $(autotools-package)) diff --git a/package/sudo/0001-src-exec_ptrace-fix-build-without-precess_vm_readv.patch b/package/sudo/0001-src-exec_ptrace-fix-build-without-precess_vm_readv.patch new file mode 100644 index 00000000..446f1d17 --- /dev/null +++ b/package/sudo/0001-src-exec_ptrace-fix-build-without-precess_vm_readv.patch @@ -0,0 +1,41 @@ +From 5bbfaa8e68b5ee6f27d4fbfa3c4e789341724f9c Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sat, 17 Feb 2024 17:52:45 +0100 +Subject: [PATCH] src/exec_ptrace: fix build without precess_vm_readv() + +Commit 32f4b98f6b4a (sudo frontend: silence most -Wconversion warnings.) +broke the build on C libraries that miss process_vm_readv(), like +uClibc-ng. + +Indeed, the ssize_t nwritten is declared guarded by HAVE_PROCESS_VM_READV, +but is then re-assigned and used a few lines below, outside any guard. + +Fix that by always declaring the object, as it is always needed. + +Signed-off-by: Yann E. MORIN +Upstream: https://github.com/sudo-project/sudo/commit/5bbfaa8e68b5ee6f27d4fbfa3c4e789341724f9c +--- + src/exec_ptrace.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/exec_ptrace.c b/src/exec_ptrace.c +index 9dd36c275..3d44b82e2 100644 +--- a/src/exec_ptrace.c ++++ b/src/exec_ptrace.c +@@ -878,11 +878,12 @@ ptrace_write_vec(pid_t pid, struct sudo_ptrace_regs *regs, char **vec, + unsigned long addr, unsigned long strtab) + { + const unsigned long strtab0 = strtab; ++ ssize_t nwritten; + size_t i; + debug_decl(ptrace_write_vec, SUDO_DEBUG_EXEC); + + #ifdef HAVE_PROCESS_VM_READV +- ssize_t nwritten = ptrace_writev_vec(pid, regs, vec, addr, strtab); ++ nwritten = ptrace_writev_vec(pid, regs, vec, addr, strtab); + if (nwritten != -1 || errno != ENOSYS) + debug_return_ssize_t(nwritten); + #endif /* HAVE_PROCESS_VM_READV */ +-- +2.43.0 + diff --git a/package/sudo/Config.in b/package/sudo/Config.in new file mode 100644 index 00000000..ee5ea542 --- /dev/null +++ b/package/sudo/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_SUDO + bool "sudo" + # uses fork() + depends on BR2_USE_MMU + help + Sudo is a program designed to allow a sysadmin to give + limited root privileges to users and log root activity. The + basic philosophy is to give as few privileges as possible + but still allow people to get their work done. + + https://www.sudo.ws/sudo/ diff --git a/package/sudo/sudo.hash b/package/sudo/sudo.hash new file mode 100644 index 00000000..066d3b9d --- /dev/null +++ b/package/sudo/sudo.hash @@ -0,0 +1,4 @@ +# From: https://www.sudo.ws/getting/download/ +sha256 558d10b9a1991fb3b9fa7fa7b07ec4405b7aefb5b3cb0b0871dbc81e3a88e558 sudo-1.9.15p5.tar.gz +# Locally calculated +sha256 ea33b3971e8e4d9657cd6794a952aaa71b22bd16745f1645455b6ead010e0a28 LICENSE.md diff --git a/package/sudo/sudo.mk b/package/sudo/sudo.mk new file mode 100644 index 00000000..7961a990 --- /dev/null +++ b/package/sudo/sudo.mk @@ -0,0 +1,80 @@ +################################################################################ +# +# sudo +# +################################################################################ + +SUDO_VERSION_MAJOR = 1.9.15 +SUDO_VERSION_MINOR = p5 +SUDO_VERSION = $(SUDO_VERSION_MAJOR)$(SUDO_VERSION_MINOR) +SUDO_SITE = https://www.sudo.ws/sudo/dist +SUDO_LICENSE = ISC, BSD-3-Clause +SUDO_LICENSE_FILES = LICENSE.md +SUDO_CPE_ID_VERSION = $(SUDO_VERSION_MAJOR) +SUDO_CPE_ID_UPDATE = $(SUDO_VERSION_MINOR) +SUDO_SELINUX_MODULES = sudo +# This is to avoid sudo's make install from chown()ing files which fails +SUDO_INSTALL_TARGET_OPTS = INSTALL_OWNER="" DESTDIR="$(TARGET_DIR)" install +SUDO_CONF_OPTS = \ + --with-tzdir=$(if $(BR2_PACKAGE_TZDATA),/usr/share/zoneinfo,no) \ + --enable-tmpfiles.d=$(if $(BR2_PACKAGE_SYSTEMD),/usr/lib/tmpfiles.d,no) \ + --without-lecture \ + --without-sendmail \ + --without-umask \ + --with-logging=syslog \ + --without-interfaces \ + --with-env-editor + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +define SUDO_INSTALL_PAM_CONF + $(INSTALL) -D -m 0644 package/sudo/sudo.pam $(TARGET_DIR)/etc/pam.d/sudo +endef + +SUDO_DEPENDENCIES += linux-pam +SUDO_CONF_OPTS += --with-pam +SUDO_POST_INSTALL_TARGET_HOOKS += SUDO_INSTALL_PAM_CONF +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 + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +SUDO_DEPENDENCIES += host-pkgconf openssl +SUDO_CONF_OPTS += --enable-openssl +else +SUDO_CONF_OPTS += --disable-openssl +endif + +define SUDO_PERMISSIONS + /usr/bin/sudo f 4755 0 0 - - - - - +endef + +define SUDO_REMOVE_DIST_EXAMPLES + $(RM) $(TARGET_DIR)/etc/sudoers.dist + rmdir --ignore-fail-on-non-empty $(TARGET_DIR)/etc/sudoers.d +endef +SUDO_POST_INSTALL_TARGET_HOOKS += SUDO_REMOVE_DIST_EXAMPLES + +define SUDO_USERS + - - sudo -1 - - - - +endef + +define SUDO_ENABLE_SUDO_GROUP_RULE + $(SED) '/^# \%sudo\tALL=(ALL:ALL) ALL/s/^# //' $(TARGET_DIR)/etc/sudoers +endef +SUDO_POST_INSTALL_TARGET_HOOKS += SUDO_ENABLE_SUDO_GROUP_RULE + +$(eval $(autotools-package)) diff --git a/package/sudo/sudo.pam b/package/sudo/sudo.pam new file mode 100644 index 00000000..c6e6f20a --- /dev/null +++ b/package/sudo/sudo.pam @@ -0,0 +1,12 @@ +auth sufficient pam_rootok.so +auth required pam_wheel.so use_uid +auth required pam_env.so +auth required pam_unix.so nullok + +account required pam_unix.so + +password required pam_unix.so nullok + +session required pam_limits.so +session required pam_env.so +session required pam_unix.so diff --git a/package/sunwait/Config.in b/package/sunwait/Config.in new file mode 100644 index 00000000..e141c778 --- /dev/null +++ b/package/sunwait/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_SUNWAIT + bool "sunwait" + depends on BR2_INSTALL_LIBSTDCPP + help + Sunwait calculates sunrise or sunset times with civil, + nautical, astronomical and custom twilights. + + https://github.com/risacher/sunwait + +comment "sunwait needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/sunwait/sunwait.hash b/package/sunwait/sunwait.hash new file mode 100644 index 00000000..8396fa27 --- /dev/null +++ b/package/sunwait/sunwait.hash @@ -0,0 +1,3 @@ +# sha256 locally computed +sha256 ef26ed05882d5286a64a37c4044f99b877cc54f58a46f0e37ca60c93398df910 sunwait-7326b53e5406c7ebd552ae6dc0fc659252a18e7f.tar.gz +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 LICENSE diff --git a/package/sunwait/sunwait.mk b/package/sunwait/sunwait.mk new file mode 100644 index 00000000..4b27e826 --- /dev/null +++ b/package/sunwait/sunwait.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# sunwait +# +################################################################################ + +SUNWAIT_VERSION = 7326b53e5406c7ebd552ae6dc0fc659252a18e7f +SUNWAIT_SITE = $(call github,risacher,sunwait,$(SUNWAIT_VERSION)) +SUNWAIT_LICENSE = GPL-3.0 +SUNWAIT_LICENSE_FILES = LICENSE + +SUNWAIT_MAKE_OPTS = \ + $(TARGET_CONFIGURE_OPTS) \ + C=$(TARGET_CXX) \ + CFLAGS="$(TARGET_CFLAGS) -c" \ + LDFLAGS="$(TARGET_LDFLAGS) -lm" + +define SUNWAIT_BUILD_CMDS + $(MAKE) $(SUNWAIT_MAKE_OPTS) -C $(@D) all +endef + +define SUNWAIT_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/sunwait $(TARGET_DIR)/usr/bin/sunwait +endef + +$(eval $(generic-package)) diff --git a/package/sunxi-boards/Config.in b/package/sunxi-boards/Config.in new file mode 100644 index 00000000..eaf492f2 --- /dev/null +++ b/package/sunxi-boards/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_SUNXI_BOARDS + bool "sunxi script.bin board file" + depends on BR2_arm + depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-sunxi-tools + select BR2_PACKAGE_HOST_SUNXI_TOOLS + help + Sunxi-boards requires a compiled .fex files for hardware + description, used by the kernel during boot for hardware + initialization. This package is specific for linux-sunxi + kernel and it is useless for mainline kernel versions. + + https://github.com/linux-sunxi/sunxi-boards + +if BR2_PACKAGE_SUNXI_BOARDS +config BR2_PACKAGE_SUNXI_BOARDS_FEX_FILE + string ".fex file to compile" + help + This field defines the name of the .fex file for which the + .bin file should be generated. + + This should be the path of the .fex file relative to the + sys_config/ directory, and including the .fex extension. + + See inside sys_config/ directory in sunxi-boards source code + to see the list of valid .fex files. +endif + +comment "sunxi script.bin board file needs a toolchain w/ host gcc >= 4.9" + depends on BR2_arm + depends on !BR2_HOST_GCC_AT_LEAST_4_9 diff --git a/package/sunxi-boards/sunxi-boards.hash b/package/sunxi-boards/sunxi-boards.hash new file mode 100644 index 00000000..75568240 --- /dev/null +++ b/package/sunxi-boards/sunxi-boards.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 ff1fa509fd5716d26c23a82e59300876a848122f745713a610f8f3c47d448064 sunxi-boards-a6a4e94066f4ec6b26fc7060dc453a6bcf26a504.tar.gz diff --git a/package/sunxi-boards/sunxi-boards.mk b/package/sunxi-boards/sunxi-boards.mk new file mode 100644 index 00000000..83b3842c --- /dev/null +++ b/package/sunxi-boards/sunxi-boards.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# sunxi-boards +# +################################################################################ + +SUNXI_BOARDS_VERSION = a6a4e94066f4ec6b26fc7060dc453a6bcf26a504 +SUNXI_BOARDS_SITE = $(call github,linux-sunxi,sunxi-boards,$(SUNXI_BOARDS_VERSION)) +SUNXI_BOARDS_DEPENDENCIES = host-sunxi-tools +SUNXI_BOARDS_INSTALL_IMAGES = YES +SUNXI_BOARDS_INSTALL_TARGET = NO +SUNXI_BOARDS_FEX_FILE = $(call qstrip,$(BR2_PACKAGE_SUNXI_BOARDS_FEX_FILE)) + +define SUNXI_BOARDS_INSTALL_IMAGES_CMDS + $(FEX2BIN) $(@D)/sys_config/$(SUNXI_BOARDS_FEX_FILE) \ + $(BINARIES_DIR)/script.bin +endef + +ifeq ($(BR2_PACKAGE_SUNXI_BOARDS)$(BR_BUILDING),yy) +# we NEED a board name +ifeq ($(SUNXI_BOARDS_FEX_FILE),) +$(error No sunxi .fex file specified. Check your BR2_PACKAGE_SUNXI_BOARDS_FEX_FILE settings) +endif +endif + +$(eval $(generic-package)) diff --git a/package/sunxi-cedarx/Config.in b/package/sunxi-cedarx/Config.in new file mode 100644 index 00000000..43fcce58 --- /dev/null +++ b/package/sunxi-cedarx/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_SUNXI_CEDARX + bool "sunxi-cedarx" + depends on BR2_arm + depends on BR2_TOOLCHAIN_USES_GLIBC + help + Sunxi CedarX decoder libraries. CedarX is Allwinner's + multimedia co-processing technology for hardware accelerated + video and image decoding, as used inside their A10 SoC's and + others. + + http://github.com/linux-sunxi/cedarx-libs + http://linux-sunxi.org/CedarX + +comment "sunxi-cedarx needs a glibc toolchain" + depends on BR2_arm + depends on !BR2_TOOLCHAIN_USES_GLIBC diff --git a/package/sunxi-cedarx/sunxi-cedarx.hash b/package/sunxi-cedarx/sunxi-cedarx.hash new file mode 100644 index 00000000..048b8689 --- /dev/null +++ b/package/sunxi-cedarx/sunxi-cedarx.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 ea7426f83325d247ba0d4734eaf1cb53bab178a81f935e2535ddb3069f70ba84 sunxi-cedarx-b8f52d913f73720e50d8f1b2f8610467b575dc45.tar.gz diff --git a/package/sunxi-cedarx/sunxi-cedarx.mk b/package/sunxi-cedarx/sunxi-cedarx.mk new file mode 100644 index 00000000..5b99f041 --- /dev/null +++ b/package/sunxi-cedarx/sunxi-cedarx.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# sunxi-cedarx +# +################################################################################ + +SUNXI_CEDARX_VERSION = b8f52d913f73720e50d8f1b2f8610467b575dc45 +SUNXI_CEDARX_SITE = $(call github,linux-sunxi,cedarx-libs,$(SUNXI_CEDARX_VERSION)) + +SUNXI_CEDARX_INSTALL_STAGING = YES + +SUNXI_CEDARX_CONFIGURE_OPTS = \ + CROSS_COMPILE=$(TARGET_CROSS) + +ifeq ($(BR2_ARM_EABIHF),y) +SUNXI_CEDARX_BIN_DIR = $(@D)/libcedarv/linux-armhf +else +SUNXI_CEDARX_BIN_DIR = $(@D)/libcedarv/linux-armel2 +endif + +define SUNXI_CEDARX_BUILD_AVHEAP + $(TARGET_CC) $(TARGET_CFLAGS) -fPIC \ + -c $(SUNXI_CEDARX_BIN_DIR)/adapter/avheap/avheap.c \ + -o $(SUNXI_CEDARX_BIN_DIR)/adapter/avheap/avheap.o \ + -I $(SUNXI_CEDARX_BIN_DIR)/adapter/avheap \ + -I $(SUNXI_CEDARX_BIN_DIR)/ + $(TARGET_CC) -shared -L./ -Wl,-soname,libavheap.so \ + -o $(SUNXI_CEDARX_BIN_DIR)/adapter/avheap/libavheap.so \ + $(SUNXI_CEDARX_BIN_DIR)/adapter/avheap/avheap.o +endef + +define SUNXI_CEDARX_INSTALL_AVHEAP + $(INSTALL) -D -m 755 $(SUNXI_CEDARX_BIN_DIR)/adapter/avheap/libavheap.so \ + $(1)/usr/lib/libavheap.so +endef + +define SUNXI_CEDARX_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(SUNXI_CEDARX_BIN_DIR) \ + $(SUNXI_CEDARX_CONFIGURE_OPTS) + $(SUNXI_CEDARX_BUILD_AVHEAP) +endef + +define SUNXI_CEDARX_INSTALL_STAGING_CMDS + $(INSTALL) -d -m 755 $(STAGING_DIR)/usr/include/libvecore + $(INSTALL) -m 664 $(SUNXI_CEDARX_BIN_DIR)/libvecore/*.h \ + $(STAGING_DIR)/usr/include/libvecore + $(INSTALL) -m 644 $(SUNXI_CEDARX_BIN_DIR)/*.h \ + $(STAGING_DIR)/usr/include/ + $(INSTALL) -D -m 755 $(SUNXI_CEDARX_BIN_DIR)/libvecore/libvecore.so \ + $(STAGING_DIR)/usr/lib/libvecore.so + $(call SUNXI_CEDARX_INSTALL_AVHEAP, $(STAGING_DIR)) +endef + +define SUNXI_CEDARX_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(SUNXI_CEDARX_BIN_DIR)/libvecore/libvecore.so \ + $(TARGET_DIR)/usr/lib/libvecore.so + $(call SUNXI_CEDARX_INSTALL_AVHEAP, $(TARGET_DIR)) +endef + +$(eval $(generic-package)) diff --git a/package/sunxi-mali-utgard-driver/0001-build.sh-do-not-apply-patches.patch b/package/sunxi-mali-utgard-driver/0001-build.sh-do-not-apply-patches.patch new file mode 100644 index 00000000..02c6aa78 --- /dev/null +++ b/package/sunxi-mali-utgard-driver/0001-build.sh-do-not-apply-patches.patch @@ -0,0 +1,39 @@ +From 079ed8aa57ba6629b992c3d0d01904d3e5170d3b Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Wed, 5 Jun 2024 13:06:16 +0200 +Subject: [PATCH] build.sh: do not apply patches + +In Buildroot, we handle applying the patches in a generic way, with +appropriate tools (e.g. with a proper tar). + +Upstream: not applicable +Signed-off-by: Yann E. MORIN +--- + build.sh | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/build.sh b/build.sh +index d1fedff..26efc53 100755 +--- a/build.sh ++++ b/build.sh +@@ -10,6 +10,8 @@ BUILD_OPTS="USING_UMP=0 + USING_DEVFREQ=1" + + apply_patches() { ++ return 0 # Patching handled by Buildroot ++ + pushd $2 + + quilt push -a +@@ -22,6 +24,8 @@ apply_patches() { + } + + unapply_patches() { ++ return 0 # Patching handled by Buildroot ++ + pushd $2 + + quilt pop -a +-- +2.45.1 + diff --git a/package/sunxi-mali-utgard-driver/Config.in b/package/sunxi-mali-utgard-driver/Config.in new file mode 100644 index 00000000..ba4d1919 --- /dev/null +++ b/package/sunxi-mali-utgard-driver/Config.in @@ -0,0 +1,39 @@ +comment "sunxi-mali-utgard-driver needs a Linux kernel to be built" + depends on BR2_PACKAGE_SUNXI_MALI_UTGARD + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_SUNXI_MALI_UTGARD_DRIVER + bool "sunxi-mali-utgard-driver" + default y + depends on BR2_PACKAGE_SUNXI_MALI_UTGARD # runtime + depends on BR2_LINUX_KERNEL + select BR2_LINUX_NEEDS_MODULES # not using kernel-module infra + help + This package builds and installs the Linux kernel driver for + the Mali Utgard GPU on Allwinner platforms, compatible with + recent Linux kernels (>= 4.4). Note that it should be + installed together with the corresponding userspace OpenGL + libraries, which are provided as binaries only at: + https://github.com/bootlin/mali-blobs + + sunxi-mali-utgard-driver requires a Linux kernel >= 4.4 + with the following options enabled: + + - CONFIG_CMA + - CONFIG_DMA_CMA + + starting from Linux Kernel >= 4.20 following options must be + enabled: + - CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM + + The following kernel command line options must be passed: + + - drm_kms_helper.drm_leak_fbdev_smem = 1 + since drm_kms_helper.drm_leak_fbdev_smem is set to 0 by + default + + - drm_kms_helper.drm_fbdev_overalloc >= 200 + since the driver requires at least double buffering and + fails to work with the default value(100). + + https://github.com/giuliobenetti/sunxi-mali/blob/master/README.md diff --git a/package/sunxi-mali-utgard-driver/sunxi-mali-utgard-driver.hash b/package/sunxi-mali-utgard-driver/sunxi-mali-utgard-driver.hash new file mode 100644 index 00000000..5f3e0013 --- /dev/null +++ b/package/sunxi-mali-utgard-driver/sunxi-mali-utgard-driver.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 151a56eb6a47efee19369a1c08b7aec506e48f983683a3cd05c5494cedf0fb69 sunxi-mali-utgard-driver-ad7e98bc1e81c7ac9c897f854c1a429d33e45d58.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/sunxi-mali-utgard-driver/sunxi-mali-utgard-driver.mk b/package/sunxi-mali-utgard-driver/sunxi-mali-utgard-driver.mk new file mode 100644 index 00000000..ba7c5071 --- /dev/null +++ b/package/sunxi-mali-utgard-driver/sunxi-mali-utgard-driver.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# sunxi-mali-utgard-driver +# +################################################################################ + +SUNXI_MALI_UTGARD_DRIVER_VERSION = ad7e98bc1e81c7ac9c897f854c1a429d33e45d58 +SUNXI_MALI_UTGARD_DRIVER_SITE = $(call github,giuliobenetti,sunxi-mali,$(SUNXI_MALI_UTGARD_DRIVER_VERSION)) +SUNXI_MALI_UTGARD_DRIVER_DEPENDENCIES = linux +SUNXI_MALI_UTGARD_DRIVER_LICENSE = GPL-2.0 +SUNXI_MALI_UTGARD_DRIVER_LICENSE_FILES = LICENSE + +SUNXI_MALI_UTGARD_DRIVER_MAKE_OPTS = \ + $(LINUX_MAKE_FLAGS) \ + KDIR=$(LINUX_DIR) + +define SUNXI_MALI_UTGARD_DRIVER_USE_APPLY_PATCHES + ln -sf $(SUNXI_MALI_UTGARD_REV)/series $(@D)/patches + $(APPLY_PATCHES) $(@D)/$(SUNXI_MALI_UTGARD_REV) $(@D)/patches +endef + +SUNXI_MALI_UTGARD_DRIVER_POST_PATCH_HOOKS += SUNXI_MALI_UTGARD_DRIVER_USE_APPLY_PATCHES + +define SUNXI_MALI_UTGARD_DRIVER_BUILD_CMDS + cd $(@D) && $(SUNXI_MALI_UTGARD_DRIVER_MAKE_OPTS) \ + $(SHELL) ./build.sh -r $(SUNXI_MALI_UTGARD_REV) -j $(PARALLEL_JOBS) -b +endef + +define SUNXI_MALI_UTGARD_DRIVER_INSTALL_TARGET_CMDS + cd $(@D) && $(SUNXI_MALI_UTGARD_DRIVER_MAKE_OPTS) \ + $(SHELL) ./build.sh -r $(SUNXI_MALI_UTGARD_REV) -j $(PARALLEL_JOBS) -i +endef + +define SUNXI_MALI_UTGARD_DRIVER_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_CMA) + $(call KCONFIG_ENABLE_OPT,CONFIG_DMA_CMA) + $(call KCONFIG_ENABLE_OPT,CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM) +endef + +$(eval $(generic-package)) diff --git a/package/sunxi-mali-utgard/Config.in b/package/sunxi-mali-utgard/Config.in new file mode 100644 index 00000000..49da7e57 --- /dev/null +++ b/package/sunxi-mali-utgard/Config.in @@ -0,0 +1,73 @@ +config BR2_PACKAGE_SUNXI_MALI_UTGARD + bool "sunxi-mali-utgard" + depends on BR2_aarch64 || (BR2_ARM_EABIHF && BR2_arm) + depends on BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_HAS_LIBGLES + help + Install userspace Allwinner OpenGL libraries for Mali + Utgard GPUs. + + https://github.com/bootlin/mali-blobs + +if BR2_PACKAGE_SUNXI_MALI_UTGARD + +config BR2_PACKAGE_PROVIDES_LIBEGL + default "sunxi-mali-utgard" + +config BR2_PACKAGE_PROVIDES_LIBGLES + default "sunxi-mali-utgard" + +config BR2_PACKAGE_PROVIDES_LIBGBM + default "sunxi-mali-utgard" if BR2_PACKAGE_SUNXI_MALI_UTGARD_WAYLAND + +choice + prompt "Version" + default BR2_PACKAGE_SUNXI_MALI_UTGARD_R6P2 if BR2_PACKAGE_SUNXI_MALI_MAINLINE_R6P2 # legacy + default BR2_PACKAGE_SUNXI_MALI_UTGARD_R8P1 if BR2_PACKAGE_SUNXI_MALI_MAINLINE_R8P1 # legacy + default BR2_PACKAGE_SUNXI_MALI_UTGARD_R6P2 + help + Select the version of the userspace module. + +config BR2_PACKAGE_SUNXI_MALI_UTGARD_R6P2 + bool "r6p2" +config BR2_PACKAGE_SUNXI_MALI_UTGARD_R8P1 + bool "r8p1" + +endchoice + +config BR2_PACKAGE_SUNXI_MALI_UTGARD_REVISION + string + default "r6p2" if BR2_PACKAGE_SUNXI_MALI_UTGARD_R6P2 + default "r8p1" if BR2_PACKAGE_SUNXI_MALI_UTGARD_R8P1 + +choice + prompt "Platform" + default BR2_PACKAGE_SUNXI_MALI_UTGARD_FBDEV + help + Select the target EGL platform. + +config BR2_PACKAGE_SUNXI_MALI_UTGARD_FBDEV + bool "fbdev" + +config BR2_PACKAGE_SUNXI_MALI_UTGARD_WAYLAND + bool "wayland" + depends on BR2_PACKAGE_SUNXI_MALI_UTGARD_R6P2 + select BR2_PACKAGE_HAS_LIBGBM + select BR2_PACKAGE_WAYLAND + +comment "wayland support requires version r6p2" + depends on !BR2_PACKAGE_SUNXI_MALI_UTGARD_R6P2 + +endchoice + +config BR2_PACKAGE_SUNXI_MALI_UTGARD_PLATFORM + string + default "fbdev" if BR2_PACKAGE_SUNXI_MALI_UTGARD_FBDEV + default "wayland" if BR2_PACKAGE_SUNXI_MALI_UTGARD_WAYLAND + +endif + +comment "sunxi-mali-utgard needs an EABIhf glibc toolchain" + depends on BR2_arm + depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_ARM_EABIHF diff --git a/package/sunxi-mali-utgard/egl.pc b/package/sunxi-mali-utgard/egl.pc new file mode 100644 index 00000000..3854e5ff --- /dev/null +++ b/package/sunxi-mali-utgard/egl.pc @@ -0,0 +1,12 @@ +prefix=/usr/ +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: egl +Description: ARM Mali implementation of EGL +Version: 1.4 +Requires: +Libs: -L${libdir} -lEGL -lGLESv2 +Cflags: -I${includedir} + diff --git a/package/sunxi-mali-utgard/glesv2.pc b/package/sunxi-mali-utgard/glesv2.pc new file mode 100644 index 00000000..6910b46a --- /dev/null +++ b/package/sunxi-mali-utgard/glesv2.pc @@ -0,0 +1,12 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: glesv2 +Description: ARM Mali implementation of OpenGL ESv2 +Version: 2.0 +Requires: +Libs: -L${libdir} -lGLESv2 -lGLESv1_CM +Cflags: -I${includedir} + diff --git a/package/sunxi-mali-utgard/sunxi-mali-utgard.hash b/package/sunxi-mali-utgard/sunxi-mali-utgard.hash new file mode 100644 index 00000000..c86b927e --- /dev/null +++ b/package/sunxi-mali-utgard/sunxi-mali-utgard.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b5e7e8f9f2886ed0b273f72ea16ae4868711726fe33e3d80ef24e86269c90fd2 sunxi-mali-utgard-418f55585e76f375792dbebb3e97532f0c1c556d.tar.gz +sha256 8a06bcae44a41a886f339b4338422415a786787f113e9ed6456ae117104a0b6a EULA_for_Mali_400MP_AW.pdf diff --git a/package/sunxi-mali-utgard/sunxi-mali-utgard.mk b/package/sunxi-mali-utgard/sunxi-mali-utgard.mk new file mode 100644 index 00000000..cd03ad62 --- /dev/null +++ b/package/sunxi-mali-utgard/sunxi-mali-utgard.mk @@ -0,0 +1,62 @@ +################################################################################ +# +# sunxi-mali-utgard +# +################################################################################ + +SUNXI_MALI_UTGARD_VERSION = 418f55585e76f375792dbebb3e97532f0c1c556d +SUNXI_MALI_UTGARD_SITE = $(call github,bootlin,mali-blobs,$(SUNXI_MALI_UTGARD_VERSION)) +SUNXI_MALI_UTGARD_INSTALL_STAGING = YES +SUNXI_MALI_UTGARD_PROVIDES = libegl libgles +SUNXI_MALI_UTGARD_LICENSE = Allwinner End User Licence Agreement +SUNXI_MALI_UTGARD_EULA_ORIGINAL = EULA\ for\ Mali\ 400MP\ _AW.pdf +SUNXI_MALI_UTGARD_EULA_NO_SPACES = EULA_for_Mali_400MP_AW.pdf +SUNXI_MALI_UTGARD_LICENSE_FILES = $(SUNXI_MALI_UTGARD_EULA_NO_SPACES) + +SUNXI_MALI_UTGARD_REV = $(call qstrip,$(BR2_PACKAGE_SUNXI_MALI_UTGARD_REVISION)) +SUNXI_MALI_UTGARD_PLATFORM = $(call qstrip,$(BR2_PACKAGE_SUNXI_MALI_UTGARD_PLATFORM)) + +ifeq ($(BR2_arm),y) +SUNXI_MALI_UTGARD_ARCH=arm +else ifeq ($(BR2_aarch64),y) +SUNXI_MALI_UTGARD_ARCH=arm64 +endif + +define SUNXI_MALI_UTGARD_INSTALL_STAGING_CMDS + mkdir -p $(STAGING_DIR)/usr/lib $(STAGING_DIR)/usr/include + + cp -rf $(@D)/$(SUNXI_MALI_UTGARD_REV)/$(SUNXI_MALI_UTGARD_ARCH)/$(SUNXI_MALI_UTGARD_PLATFORM)/*.so* \ + $(STAGING_DIR)/usr/lib/ + cp -rf $(@D)/include/$(SUNXI_MALI_UTGARD_PLATFORM)/* $(STAGING_DIR)/usr/include/ + + $(INSTALL) -D -m 0644 package/sunxi-mali-utgard/egl.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/egl.pc + $(INSTALL) -D -m 0644 package/sunxi-mali-utgard/glesv2.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/glesv2.pc +endef + +ifeq ($(BR2_PACKAGE_SUNXI_MALI_UTGARD_WAYLAND),y) +define SUNXI_MALI_UTGARD_INSTALL_FIXUP_STAGING_PC_FILES + sed -e '/^Cflags:/s/$$/ -DWL_EGL_PLATFORM/' \ + -e '/^Requires:/s/$$/ wayland-client wayland-server/' \ + -i $(STAGING_DIR)/usr/lib/pkgconfig/egl.pc + sed -e '/^Requires:/s/$$/ wayland-client wayland-server/' \ + -i $(STAGING_DIR)/usr/lib/pkgconfig/glesv2.pc +endef +SUNXI_MALI_UTGARD_POST_INSTALL_TARGET_HOOKS += SUNXI_MALI_UTGARD_INSTALL_FIXUP_STAGING_PC_FILES +SUNXI_MALI_UTGARD_DEPENDENCIES += wayland +endif + +define SUNXI_MALI_UTGARD_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/lib + cp -rf $(@D)/$(SUNXI_MALI_UTGARD_REV)/$(SUNXI_MALI_UTGARD_ARCH)/$(SUNXI_MALI_UTGARD_PLATFORM)/*.so* \ + $(TARGET_DIR)/usr/lib/ +endef + +define SUNXI_MALI_UTGARD_FIXUP_LICENSE_FILE + mv $(@D)/$(SUNXI_MALI_UTGARD_EULA_ORIGINAL) $(@D)/$(SUNXI_MALI_UTGARD_EULA_NO_SPACES) +endef + +SUNXI_MALI_UTGARD_POST_PATCH_HOOKS += SUNXI_MALI_UTGARD_FIXUP_LICENSE_FILE + +$(eval $(generic-package)) diff --git a/package/sunxi-tools/Config.in b/package/sunxi-tools/Config.in new file mode 100644 index 00000000..16550f4e --- /dev/null +++ b/package/sunxi-tools/Config.in @@ -0,0 +1,74 @@ +config BR2_PACKAGE_SUNXI_TOOLS + bool "sunxi-tools" + depends on BR2_arm + help + Tools for Allwinner A10 (aka sun4i) and A13 (aka sun5i) + based devices. + + http://linux-sunxi.org/Sunxi-tools + +if BR2_PACKAGE_SUNXI_TOOLS + +config BR2_PACKAGE_SUNXI_TOOLS_FEXC + bool "sunxi-fexc (fex2bin & bin2fex)" + help + Convert between .fex board definition files and binary + format. These tools are specific for the linux-sunxi kernel + and do not apply to the mainline Linux kernel version. + +config BR2_PACKAGE_SUNXI_TOOLS_BOOTINFO + bool "sunxi-bootinfo" + help + Displays information about sunxi boot code. + +config BR2_PACKAGE_SUNXI_TOOLS_FEL + bool "sunxi-fel" + depends on !BR2_STATIC_LIBS # dtc + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_DTC + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_ZLIB + help + The sunxi-fel command can interact with a sunxi device in + fel mode. This allows do download code to memory and execute + it. + +comment "sunxi-fel needs a toolchain w/ dynamic library, threads, gcc >= 4.9" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_SUNXI_TOOLS_NAND_PART + bool "sunxi-nand-part" + default y + help + The sunxi-nand-part command allows to repartition the internal + NAND on sunxi devices. + +config BR2_PACKAGE_SUNXI_TOOLS_PIO + bool "sunxi-pio" + help + GPIO manipulation tool for sunxi boards. + +config BR2_PACKAGE_SUNXI_TOOLS_MEMINFO + bool "sunxi-meminfo" + help + Utility to retrieve DRAM information from registers on + Allwinner SoCs. Specific for the linux-sunxi kernel - does + not apply to the mainline Linux kernel version. + +config BR2_PACKAGE_SUNXI_TOOLS_PHOENIX_INFO + bool "phoenix_info" + help + Display information about self-installing SD card images + (created with Phoenix Card). + + https://linux-sunxi.org/PhoenixCard + +config BR2_PACKAGE_SUNXI_TOOLS_NAND_IMAGE_BUILDER + bool "sunxi-nand-image-builder" + help + Creates a raw NAND image that can be read by the sunxi NAND + controller. + +endif # BR2_PACKAGE_SUNXI_TOOLS diff --git a/package/sunxi-tools/Config.in.host b/package/sunxi-tools/Config.in.host new file mode 100644 index 00000000..f7c60b37 --- /dev/null +++ b/package/sunxi-tools/Config.in.host @@ -0,0 +1,18 @@ +config BR2_PACKAGE_HOST_SUNXI_TOOLS + bool "host sunxi-tools" + depends on BR2_arm + depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb + select BR2_PACKAGE_HOST_DTC + help + Tools for Allwinner A10 (aka sun4i) and A13 (aka sun5i) + based devices. This includes fex2bin which can be used to + compile .fex board definition files to the binary script.bin + format required by the linux-sunxi kernel. These tools are + specific for linux-sunxi kernel and do not apply to the + mainline Linux kernel version. + + http://linux-sunxi.org/Sunxi-tools + +comment "host sunxi-tools needs a toolchain w/ host gcc >= 4.9" + depends on BR2_arm + depends on !BR2_HOST_GCC_AT_LEAST_4_9 diff --git a/package/sunxi-tools/sunxi-tools.hash b/package/sunxi-tools/sunxi-tools.hash new file mode 100644 index 00000000..42d81144 --- /dev/null +++ b/package/sunxi-tools/sunxi-tools.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 6589f32e9c2a5991cc49928e83aceea675f0165ce6f13cdd2dd784139a8d4efd sunxi-tools-1.4.2-168-ged3039cdbeeb28fc0011c3585d8f7dfb91038292.tar.gz +sha256 2b0d4dda4bf8034e1506507a67f80f982131137afe62bf144d248f9faea31da4 LICENSE.md diff --git a/package/sunxi-tools/sunxi-tools.mk b/package/sunxi-tools/sunxi-tools.mk new file mode 100644 index 00000000..97863efc --- /dev/null +++ b/package/sunxi-tools/sunxi-tools.mk @@ -0,0 +1,64 @@ +################################################################################ +# +# sunxi-tools +# +################################################################################ + +SUNXI_TOOLS_VERSION = 1.4.2-168-ged3039cdbeeb28fc0011c3585d8f7dfb91038292 +SUNXI_TOOLS_SITE = $(call github,linux-sunxi,sunxi-tools,v$(SUNXI_TOOLS_VERSION)) +SUNXI_TOOLS_LICENSE = GPL-2.0+ +SUNXI_TOOLS_LICENSE_FILES = LICENSE.md +HOST_SUNXI_TOOLS_DEPENDENCIES = host-dtc host-libzlib host-libusb host-pkgconf +FEX2BIN = $(HOST_DIR)/bin/fex2bin + +SUNXI_TOOLS_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_FEXC) += sunxi-fexc +SUNXI_TOOLS_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_BOOTINFO) += sunxi-bootinfo +SUNXI_TOOLS_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_FEL) += sunxi-fel +SUNXI_TOOLS_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_NAND_PART) += sunxi-nand-part +SUNXI_TOOLS_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_PIO) += sunxi-pio +SUNXI_TOOLS_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_MEMINFO) += sunxi-meminfo +SUNXI_TOOLS_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_PHOENIX_INFO) += phoenix_info +SUNXI_TOOLS_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_NAND_IMAGE_BUILDER) += \ + sunxi-nand-image-builder + +ifeq ($(BR2_PACKAGE_SUNXI_TOOLS_FEXC),y) +SUNXI_TOOLS_FEXC_LINKS += fex2bin bin2fex +endif + +ifeq ($(BR2_PACKAGE_SUNXI_TOOLS_FEL),y) +SUNXI_TOOLS_DEPENDENCIES += dtc libusb zlib host-pkgconf +endif + +define HOST_SUNXI_TOOLS_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) CROSS_COMPILE="" CC="$(HOSTCC)" \ + PREFIX=$(HOST_DIR) EXTRA_CFLAGS="$(HOST_CFLAGS)" \ + LDFLAGS="$(HOST_LDFLAGS) -I$(HOST_DIR)/include/libfdt" \ + -C $(@D) tools misc +endef + +define HOST_SUNXI_TOOLS_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) CROSS_COMPILE="" CC="$(HOSTCC)" \ + PREFIX=$(HOST_DIR) EXTRA_CFLAGS="$(HOST_CFLAGS)" \ + LDFLAGS="$(HOST_LDFLAGS)" -C $(@D) install-tools install-misc +endef + +define SUNXI_TOOLS_BUILD_CMDS + $(foreach t,$(SUNXI_TOOLS_TARGETS_y), \ + $(TARGET_MAKE_ENV) $(MAKE) CROSS_COMPILE="$(TARGET_CROSS)" \ + CC="$(TARGET_CC)" PREFIX=/usr \ + EXTRA_CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" -C $(@D) $(t) + ) +endef + +define SUNXI_TOOLS_INSTALL_TARGET_CMDS + $(foreach t,$(SUNXI_TOOLS_TARGETS_y), \ + $(INSTALL) -D -m 0755 $(@D)/$(t) $(TARGET_DIR)/usr/bin/$(t) + ) + $(foreach t,$(SUNXI_TOOLS_FEXC_LINKS), \ + ln -nfs sunxi-fexc $(TARGET_DIR)/usr/bin/$(t) + ) +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/supertux/Config.in b/package/supertux/Config.in new file mode 100644 index 00000000..e8e96a3a --- /dev/null +++ b/package/supertux/Config.in @@ -0,0 +1,45 @@ +config BR2_PACKAGE_SUPERTUX + bool "supertux" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_HAS_LIBGL # libglew + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on BR2_PACKAGE_XORG7 # libglew, SDL2 OpenGL (GLX) + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_6 # C++14 + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # openal + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-filesystem + depends on BR2_USE_MMU # SDL2 OpenGL (GLX) + depends on !BR2_STATIC_LIBS # SDL2 + depends on BR2_USE_WCHAR # Boost + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_DATE_TIME + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_BOOST_LOCALE + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_GLM + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBGLEW + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_LIBVORBIS + select BR2_PACKAGE_OPENAL + select BR2_PACKAGE_PHYSFS + select BR2_PACKAGE_SDL2 + select BR2_PACKAGE_SDL2_IMAGE + select BR2_PACKAGE_SDL2_OPENGL + select BR2_PACKAGE_ZLIB + help + SuperTux is a free classic 2D jump'n run sidescroller game in + a style similar to the original Super Mario games covered + under the GNU GPL. + + http://supertux.github.io/ + +comment "supertux needs OpenGL and a toolchain w/ C++, gcc >= 6, NPTL, dynamic library, wchar" + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_PACKAGE_HAS_LIBGL || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_6 || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + BR2_STATIC_LIBS || !BR2_USE_WCHAR diff --git a/package/supertux/supertux.hash b/package/supertux/supertux.hash new file mode 100644 index 00000000..f28c06b5 --- /dev/null +++ b/package/supertux/supertux.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 f7940e6009c40226eb34ebab8ffb0e3a894892d891a07b35d0e5762dd41c79f6 SuperTux-v0.6.3-Source.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.txt +sha256 a000d91146a61b44bdb79c3d2737e82d488b6cd65a23e0415e56915233def0a0 data/AUTHORS diff --git a/package/supertux/supertux.mk b/package/supertux/supertux.mk new file mode 100644 index 00000000..3941632f --- /dev/null +++ b/package/supertux/supertux.mk @@ -0,0 +1,73 @@ +################################################################################ +# +# supertux +# +################################################################################ + +SUPERTUX_VERSION = 0.6.3 +SUPERTUX_SITE = https://github.com/SuperTux/supertux/releases/download/v$(SUPERTUX_VERSION) +SUPERTUX_SOURCE = SuperTux-v$(SUPERTUX_VERSION)-Source.tar.gz + +# Supertux itself is GPL-3.0+, but it bundles a few libraries with different +# licenses (sexp-cpp, squirrel, tinygettext) which are linked statically. +SUPERTUX_LICENSE = GPL-3.0+ (code), CC-BY-SA-2.0, CC-BY-SA-3.0, CC-BY-SA-4.0, GPL-2.0+ (images music sounds) +SUPERTUX_LICENSE_FILES = LICENSE.txt data/AUTHORS + +# Use bundled squirrel, tinygettext sexp-cpp packages which are hardcoded in +# the CMake build system. +SUPERTUX_DEPENDENCIES = host-pkgconf boost freetype glm libcurl libgl libglew \ + libogg libpng libvorbis openal physfs sdl2 sdl2_image zlib + +# CMAKE_BUILD_TYPE=Release: disable profiling code (-pg) +# ENABLE_BOOST_STATIC_LIBS=OFF: use boost shared libraries since supertux +# depends on !BR2_STATIC_LIBS and boost provide only shared libraries with +# BR2_SHARED_LIBS. +# ENABLE_OPENGL=ON: Can be disabled but will make SuperTux unplayable slow. +# GLBINDING_ENABLED=OFF: use GLEW (default) instead of glbinding. +# Install the game directly in /usr/bin and game data in /usr/share/supertux2. +# Force using physfs.so from staging since the check on PHYSFS_getPrefDir symbol +# in physfs.h (CHECK_SYMBOL_EXISTS) doesn't work. +# ENABLE_OPENGLES2=OFF: Disable opengles2 for now. +SUPERTUX_CONF_OPTS += \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) -DGLEW_NO_GLU" \ + -DENABLE_BOOST_STATIC_LIBS=OFF \ + -DBUILD_DOCUMENTATION=OFF \ + -DENABLE_OPENGL=ON \ + -DGLBINDING_ENABLED=OFF \ + -DINSTALL_SUBDIR_BIN="bin" \ + -DINSTALL_SUBDIR_SHARE="share/supertux2" \ + -DUSE_SYSTEM_PHYSFS=ON \ + -DENABLE_OPENGLES2=OFF + +# Avoid incompatible posix_memalign declaration on x86 and x86_64 with +# musl. +# https://gcc.gnu.org/ml/gcc-patches/2015-05/msg01425.html +ifeq ($(BR2_TOOLCHAIN_USES_MUSL):$(BR2_i386)$(BR2_x86_64),y:y) +define SUPERTUX_REMOVE_PEDANTIC + $(SED) 's% -pedantic%%' $(@D)/CMakeLists.txt + $(SED) 's%CHECK_CXX_FLAG(pedantic)%%' $(@D)/external/tinygettext/CMakeLists.txt +endef +SUPERTUX_POST_PATCH_HOOKS += SUPERTUX_REMOVE_PEDANTIC +endif + +# From https://bugs.debian.org/cgi-bin/bugreport.cgi/?bug=770670 +# "The problem lies within SDL_cpuinfo.h. It includes altivec.h, which by +# definition provides an unconditional vector, pixel and bool define in +# standard-c++ mode. In GNU-c++ mode this names are only defined +# context-sensitive by cpp. SDL_cpuinfo.h is included by SDL.h. +# Including altivec.h makes arbitrary code break." +# +# Acording to a bug report in GCC [1]: +# "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 use gnu++11 instead of c++11 only for altivec system. +# [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58241#c3 +ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y) +define SUPERTUX_FIX_ALTIVEC_ISSUE + $(SED) 's%std=c++0x%std=gnu++0x%' $(@D)/external/tinygettext/CMakeLists.txt +endef +SUPERTUX_POST_PATCH_HOOKS += SUPERTUX_FIX_ALTIVEC_ISSUE +endif + +$(eval $(cmake-package)) diff --git a/package/supertuxkart/Config.in b/package/supertuxkart/Config.in new file mode 100644 index 00000000..31941575 --- /dev/null +++ b/package/supertuxkart/Config.in @@ -0,0 +1,46 @@ +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_GCC_AT_LEAST_4_9 # harfbuzz, openal + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # openal + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS # openal + depends on BR2_PACKAGE_HAS_LIBGL + depends on BR2_PACKAGE_XORG7 + depends on !BR2_TOOLCHAIN_USES_MUSL + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_ENET + select BR2_PACKAGE_HARFBUZZ + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_LIBSQUISH + select BR2_PACKAGE_LIBVORBIS + select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_MBEDTLS + select BR2_PACKAGE_OPENAL + select BR2_PACKAGE_SDL2 + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HID if BR2_PACKAGE_BLUEZ5_UTILS && BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 # runtime + help + Karts. Nitro. Action! SuperTuxKart is a free 3D arcade kart + racer with multiple karts, tracks and modes you can play. + Beat the evil Nolok by any means necessary, and make the + mascot kingdom safe once again! + + http://supertuxkart.sourceforge.net/Main_Page + +comment "supertuxkart needs an OpenGL backend, a uClibc or glibc toolchain w/ NPTL, C++, gcc >= 4.9" + 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 + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL \ + || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 \ + || !BR2_PACKAGE_HAS_LIBGL \ + || BR2_TOOLCHAIN_USES_MUSL diff --git a/package/supertuxkart/supertuxkart.hash b/package/supertuxkart/supertuxkart.hash new file mode 100644 index 00000000..446a9de8 --- /dev/null +++ b/package/supertuxkart/supertuxkart.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 9890392419baf4715313f14d5ad60746f276eed36eb580636caf44e2532c0f03 SuperTuxKart-1.4-src.tar.xz +sha256 d27207a5213f746aac53893e9ecc18456e9595d3ffa662bd1ec9eb10787c214a COPYING diff --git a/package/supertuxkart/supertuxkart.mk b/package/supertuxkart/supertuxkart.mk new file mode 100644 index 00000000..6bdd512e --- /dev/null +++ b/package/supertuxkart/supertuxkart.mk @@ -0,0 +1,69 @@ +################################################################################ +# +# supertuxkart +# +################################################################################ + +SUPERTUXKART_VERSION = 1.4 +SUPERTUXKART_SOURCE = SuperTuxKart-$(SUPERTUXKART_VERSION)-src.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. +SUPERTUXKART_SITE = https://github.com/supertuxkart/stk-code/releases/download/$(SUPERTUXKART_VERSION) + +# Supertuxkart itself is GPL-3.0+, but it bundles a few libraries with different +# licenses. Irrlicht, bullet and angelscript have Zlib license, while glew is +# BSD-3-Clause. Since they are linked statically, the result is GPL-3.0+. +SUPERTUXKART_LICENSE = GPL-3.0+ +SUPERTUXKART_LICENSE_FILES = COPYING + +SUPERTUXKART_DEPENDENCIES = \ + host-pkgconf \ + freetype \ + enet \ + harfbuzz \ + jpeg \ + libcurl \ + libgl \ + libogg \ + libpng \ + libsquish \ + libvorbis \ + openal \ + sdl2 \ + xlib_libXrandr \ + zlib + +# Since supertuxkart is not installing libstkirrlicht.so, and since it is +# the only user of the bundled libraries, turn off shared libraries entirely. +# Disable In-game recorder (there is no libopenglrecorder package) +SUPERTUXKART_CONF_OPTS = -DBUILD_SHARED_LIBS=OFF \ + -DBUILD_RECORDER=OFF \ + -DUSE_SYSTEM_ENET=ON \ + -DUSE_SYSTEM_SQUISH=ON + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y) +SUPERTUXKART_DEPENDENCIES += bluez5_utils +SUPERTUXKART_CONF_OPTS += -DUSE_WIIUSE=ON -DUSE_SYSTEM_WIIUSE=ON +SUPERTUXKART_SUPPORTS_IN_SOURCE_BUILD = NO +else +# Wiimote support relies on bluez5. +SUPERTUXKART_CONF_OPTS += -DUSE_WIIUSE=OFF +endif + +# Prefer openssl (the default) over mbedtls +ifeq ($(BR2_PACKAGE_OPENSSL),y) +SUPERTUXKART_DEPENDENCIES += openssl +SUPERTUXKART_CONF_OPTS += -DUSE_CRYPTO_OPENSSL=ON +else +SUPERTUXKART_DEPENDENCIES += mbedtls +SUPERTUXKART_CONF_OPTS += -DUSE_CRYPTO_OPENSSL=OFF +endif + +ifeq ($(BR2_PACKAGE_SQLITE),y) +SUPERTUXKART_DEPENDENCIES += sqlite +SUPERTUXKART_CONF_OPTS += -DUSE_SQLITE3=ON +else +SUPERTUXKART_CONF_OPTS += -DUSE_SQLITE3=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/supervisor/Config.in b/package/supervisor/Config.in new file mode 100644 index 00000000..8ba19dc0 --- /dev/null +++ b/package/supervisor/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_SUPERVISOR + bool "supervisor" + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime dependency + help + A client/server system that allows its users to control a + number of processes on UNIX-like operating systems. + + http://supervisord.org/ + +comment "supervisor needs a python interpreter" + depends on !BR2_PACKAGE_PYTHON3 diff --git a/package/supervisor/S99supervisord b/package/supervisor/S99supervisord new file mode 100644 index 00000000..921dcf63 --- /dev/null +++ b/package/supervisor/S99supervisord @@ -0,0 +1,29 @@ +#!/bin/sh + +mkdir -p /var/log/supervisor + +case "$1" in + start) + printf "Starting supervisord: " + start-stop-daemon -S -q -p /var/run/supervisord.pid --exec /usr/bin/supervisord + echo "done" + ;; + stop) + printf "Stopping supervisord: " + start-stop-daemon -K -q -p /var/run/supervisord.pid + echo "done" + ;; + restart) + "$0" stop + sleep 5 + "$0" start + ;; + reload) + start-stop-daemon -K -q -p /var/run/supervisord.pid -s HUP + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac + +exit $? diff --git a/package/supervisor/supervisor.hash b/package/supervisor/supervisor.hash new file mode 100644 index 00000000..a61afc44 --- /dev/null +++ b/package/supervisor/supervisor.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 34761bae1a23c58192281a5115fb07fbf22c9b0133c08166beffc70fed3ebc12 supervisor-4.2.5.tar.gz +sha256 4c35fda9f70bb7883fd94e5a4d5addd88ad1a6d5d15e21c9d17c4d96fdc5e369 LICENSES.txt diff --git a/package/supervisor/supervisor.mk b/package/supervisor/supervisor.mk new file mode 100644 index 00000000..eb2a4990 --- /dev/null +++ b/package/supervisor/supervisor.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# supervisor +# +################################################################################ + +SUPERVISOR_VERSION = 4.2.5 +SUPERVISOR_SITE = https://files.pythonhosted.org/packages/ce/37/517989b05849dd6eaa76c148f24517544704895830a50289cbbf53c7efb9 +SUPERVISOR_LICENSE = BSD-like, rdflib (http_client.py), PSF (medusa) +SUPERVISOR_LICENSE_FILES = LICENSES.txt +SUPERVISOR_CPE_ID_VENDOR = supervisord +SUPERVISOR_SETUP_TYPE = setuptools + +define SUPERVISOR_INSTALL_CONF_FILES + $(INSTALL) -d -m 755 $(TARGET_DIR)/etc/supervisor.d + $(INSTALL) -D -m 644 package/supervisor/supervisord.conf \ + $(TARGET_DIR)/etc/supervisord.conf +endef + +SUPERVISOR_POST_INSTALL_TARGET_HOOKS += SUPERVISOR_INSTALL_CONF_FILES + +define SUPERVISOR_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/supervisor/S99supervisord \ + $(TARGET_DIR)/etc/init.d/S99supervisord +endef + +define SUPERVISOR_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/supervisor/supervisord.service \ + $(TARGET_DIR)/usr/lib/systemd/system/supervisord.service +endef + +$(eval $(python-package)) diff --git a/package/supervisor/supervisord.conf b/package/supervisor/supervisord.conf new file mode 100644 index 00000000..1372a688 --- /dev/null +++ b/package/supervisor/supervisord.conf @@ -0,0 +1,18 @@ +[unix_http_server] +file = /var/run/supervisor.sock + +[supervisord] +logfile = /var/log/supervisor/supervisord.log +logfile_maxbytes = 200KB +logfile_backups = 1 +pidfile = /var/run/supervisord.pid +childlogdir = /var/log/supervisor + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[supervisorctl] +serverurl = unix:///var/run/supervisor.sock + +[include] +files = /etc/supervisor.d/*.conf diff --git a/package/supervisor/supervisord.service b/package/supervisor/supervisord.service new file mode 100644 index 00000000..92c38c7d --- /dev/null +++ b/package/supervisor/supervisord.service @@ -0,0 +1,10 @@ +[Unit] +Description=Process Control System +After=syslog.target + +[Service] +ExecStart=/usr/bin/supervisord -n +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/suricata/0001-configure.ac-allow-the-user-to-override-RUST_TARGET.patch b/package/suricata/0001-configure.ac-allow-the-user-to-override-RUST_TARGET.patch new file mode 100644 index 00000000..ec876a68 --- /dev/null +++ b/package/suricata/0001-configure.ac-allow-the-user-to-override-RUST_TARGET.patch @@ -0,0 +1,35 @@ +From 7ab4d5eb55e1d3900390b76e5f46e80e22d4e80e Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 10 Oct 2020 21:34:21 +0200 +Subject: [PATCH] configure.ac: allow the user to override RUST_TARGET + +When cross-compiling, RUST_TARGET is not always equal to host_triplet +(e.g. buildroot) so allow the user to override this default value +through RUST_TARGET environment variable + +Signed-off-by: Fabrice Fontaine +--- + configure.ac | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 32c230209..7d7c9373f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2489,7 +2489,12 @@ fi + have_rust_vendor="no" + + if test "x$cross_compiling" = "xyes"; then +- RUST_SURICATA_LIB_XC_DIR="${host_alias}/" ++ if test "x$RUST_TARGET" != "x"; then ++ RUST_SURICATA_LIB_XC_DIR="$RUST_TARGET/" ++ AC_SUBST([RUST_TARGET],["--target $RUST_TARGET"]) ++ else ++ RUST_SURICATA_LIB_XC_DIR="${host_alias}/" ++ fi + else + if test "x$CARGO_BUILD_TARGET" = "x"; then + RUST_SURICATA_LIB_XC_DIR= +-- +2.28.0 + diff --git a/package/suricata/0002-configure.ac-fix-static-build.patch b/package/suricata/0002-configure.ac-fix-static-build.patch new file mode 100644 index 00000000..fc5384a1 --- /dev/null +++ b/package/suricata/0002-configure.ac-fix-static-build.patch @@ -0,0 +1,52 @@ +From 6e1d8aceea8c4e49f00d8e630b681641a36c688f Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 6 May 2024 09:31:05 +0200 +Subject: [PATCH] configure.ac: fix static build + +static build is broken since +https://github.com/OISF/suricata/commit/31ba4fd1522dd0d7f933767b9205c67a4e726fe5 +because AC_CHECK_LIB is called before PKG_CHECK_MODULES: + +configure:22378: checking for pcap_open_dead in -lpcap +configure:22407: /home/buildroot/autobuild/run/instance-3/output-1/host/bin/x86_64-linux-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -static -std=c11 -march=native -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -static -rdynamic conftest.c -lpcap -ljansson -lpthread -lyaml -lpcre -latomic -lz >&5 +/home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-musl/12.3.0/../../../../x86_64-buildroot-linux-musl/bin/ld: /home/buildroot/autobuild/run/instance-3/output-1/host/x86_64-buildroot-linux-musl/sysroot/usr/lib/../lib64/libpcap.a(pcap-linux.o): in function `nl80211_init': +pcap-linux.c:(.text+0xc34): undefined reference to `nl_socket_alloc' + +[...] + +checking for pcap_open_dead in -lpcap... no + +Fixes: + - http://autobuild.buildroot.org/results/9e25c2508bd4100d2d1d3180e79060d762361213 + +Signed-off-by: Fabrice Fontaine +Upstream: https://redmine.openinfosecfoundation.org/issues/7008 +--- + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 232ee9bed..6277cb9b6 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1219,6 +1219,8 @@ + fi + fi + ++ PKG_CHECK_MODULES([PCAP],libpcap,[CPPFLAGS="${CPPFLAGS} ${PCAP_CFLAGS}" LIBS="${LIBS} ${PCAP_LIBS}"],[:]) ++ + if test "$have_wpcap" != "yes"; then + AC_CHECK_LIB(pcap, pcap_open_dead, [], [ + echo +@@ -1234,8 +1236,6 @@ + PCAP_LIB_NAME="pcap" + fi + +- PKG_CHECK_MODULES([PCAP],libpcap,[CPPFLAGS="${CPPFLAGS} ${PCAP_CFLAGS}" LIBS="${LIBS} ${PCAP_LIBS}"],[:]) +- + AC_PATH_PROG(HAVE_PCAP_CONFIG, pcap-config, "no") + if test "$HAVE_PCAP_CONFIG" = "no" -o "$cross_compiling" = "yes"; then + AC_MSG_RESULT(no pcap-config is use) +-- +2.43.0 + diff --git a/package/suricata/Config.in b/package/suricata/Config.in new file mode 100644 index 00000000..5f7eb21d --- /dev/null +++ b/package/suricata/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_SURICATA + bool "suricata" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_HOST_RUSTC + select BR2_PACKAGE_JANSSON + select BR2_PACKAGE_LIBHTP + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_LIBYAML + select BR2_PACKAGE_PCRE + help + Suricata is a free and open source, mature, fast and robust + network threat detection engine. + + The Suricata engine is capable of real time intrusion + detection (IDS), inline intrusion prevention (IPS), network + security monitoring (NSM) and offline pcap processing. + + https://suricata-ids.org + +comment "suricata needs a toolchain w/ wchar, threads" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/suricata/S99suricata b/package/suricata/S99suricata new file mode 100644 index 00000000..7c2b9665 --- /dev/null +++ b/package/suricata/S99suricata @@ -0,0 +1,64 @@ +#!/bin/sh + +DAEMON=suricata +PIDFILE=/var/run/$DAEMON.pid + +SURICATA_ARGS="-c /etc/suricata/suricata.yaml -i eth0" + +SURICATA_RELOAD=0 + +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + mkdir -p /var/log/suricata + start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/usr/bin/$DAEMON" \ + -- $SURICATA_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +# SIGUSR2 makes suricata reload rules +reload() { + printf 'Reloading %s: ' "$DAEMON" + start-stop-daemon -K -s "$SURICATA_RELOAD" -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +case "$1" in + start|stop|restart|reload) + "$1";; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/suricata/suricata.hash b/package/suricata/suricata.hash new file mode 100644 index 00000000..58ab0d93 --- /dev/null +++ b/package/suricata/suricata.hash @@ -0,0 +1,6 @@ +# Locally computed: +sha256 98c812faef466d337f107f13ae37843f1c719942b93832d70f1a2fd7ee1b5c2c suricata-6.0.19.tar.gz + +# Hash for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/suricata/suricata.mk b/package/suricata/suricata.mk new file mode 100644 index 00000000..e60ed2fc --- /dev/null +++ b/package/suricata/suricata.mk @@ -0,0 +1,136 @@ +################################################################################ +# +# suricata +# +################################################################################ + +SURICATA_VERSION = 6.0.19 +SURICATA_SITE = https://www.openinfosecfoundation.org/download +SURICATA_LICENSE = GPL-2.0 +SURICATA_LICENSE_FILES = COPYING LICENSE +SURICATA_CPE_ID_VENDOR = oisf +# 0001-configure.ac-allow-the-user-to-override-RUST_TARGET.patch +# 0002-configure.ac-fix-static-build.patch +SURICATA_AUTORECONF = YES + +SURICATA_DEPENDENCIES = \ + host-pkgconf \ + host-rustc \ + jansson \ + $(if $(BR2_PACKAGE_LIBCAP_NG),libcap-ng) \ + $(if $(BR2_PACKAGE_LIBEVENT),libevent) \ + libhtp \ + $(if $(BR2_PACKAGE_LIBNFNETLINK),libnfnetlink) \ + libpcap \ + libyaml \ + $(if $(BR2_PACKAGE_LZ4),lz4) \ + pcre \ + $(if $(BR2_PACKAGE_XZ),xz) + +SURICATA_CONF_ENV = \ + ac_cv_path_HAVE_SPHINXBUILD=no \ + CARGO_HOME=$(BR_CARGO_HOME) \ + RUST_TARGET=$(RUSTC_TARGET_NAME) + +SURICATA_CONF_OPTS = \ + --disable-gccprotect \ + --disable-pie \ + --disable-suricata-update \ + --enable-non-bundled-htp + +# install: install binaries +# install-conf: install initial configuration files +# install-full: install binaries, configuration and rules (rules will be +# download through wget/curl) +SURICATA_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install install-conf + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +SURICATA_CONF_ENV += LIBS=-latomic +endif + +ifeq ($(BR2_PACKAGE_FILE),y) +SURICATA_DEPENDENCIES += file +SURICATA_CONF_OPTS += --enable-libmagic +else +SURICATA_CONF_OPTS += --disable-libmagic +endif + +ifeq ($(BR2_PACKAGE_LIBMAXMINDDB),y) +SURICATA_DEPENDENCIES += libmaxminddb +SURICATA_CONF_OPTS += --enable-geoip +else +SURICATA_CONF_OPTS += --disable-geoip +endif + +ifeq ($(BR2_PACKAGE_HIREDIS),y) +SURICATA_DEPENDENCIES += hiredis +SURICATA_CONF_OPTS += --enable-hiredis +else +SURICATA_CONF_OPTS += --disable-hiredis +endif + +ifeq ($(BR2_PACKAGE_LIBNET),y) +SURICATA_DEPENDENCIES += libnet +SURICATA_CONF_OPTS += --with-libnet-includes=$(STAGING_DIR)/usr/include +endif + +ifeq ($(BR2_PACKAGE_LIBNETFILTER_LOG),y) +SURICATA_DEPENDENCIES += libnetfilter_log +SURICATA_CONF_OPTS += --enable-nflog +else +SURICATA_CONF_OPTS += --disable-nflog +endif + +ifeq ($(BR2_PACKAGE_LIBNETFILTER_QUEUE),y) +SURICATA_DEPENDENCIES += libnetfilter_queue +SURICATA_CONF_OPTS += --enable-nfqueue +else +SURICATA_CONF_OPTS += --disable-nfqueue +endif + +ifeq ($(BR2_PACKAGE_LIBNSPR),y) +SURICATA_DEPENDENCIES += libnspr +SURICATA_CONF_OPTS += --enable-nspr +else +SURICATA_CONF_OPTS += --disable-nspr +endif + +ifeq ($(BR2_PACKAGE_LIBNSS),y) +SURICATA_DEPENDENCIES += libnss +SURICATA_CONF_OPTS += --enable-nss +else +SURICATA_CONF_OPTS += --disable-nss +endif + +ifeq ($(BR2_PACKAGE_LUA),y) +SURICATA_CONF_OPTS += --enable-lua +SURICATA_DEPENDENCIES += lua +else +SURICATA_CONF_OPTS += --disable-lua +endif + +ifeq ($(BR2_PACKAGE_LUAJIT),y) +SURICATA_CONF_OPTS += --enable-luajit +SURICATA_DEPENDENCIES += luajit +else +SURICATA_CONF_OPTS += --disable-luajit +endif + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +SURICATA_CONF_OPTS += --enable-python +SURICATA_DEPENDENCIES += python3 +else +SURICATA_CONF_OPTS += --disable-python +endif + +define SURICATA_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/suricata/S99suricata \ + $(TARGET_DIR)/etc/init.d/S99suricata +endef + +define SURICATA_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/suricata/suricata.service \ + $(TARGET_DIR)/usr/lib/systemd/system/suricata.service +endef + +$(eval $(autotools-package)) diff --git a/package/suricata/suricata.service b/package/suricata/suricata.service new file mode 100644 index 00000000..f5cd46ac --- /dev/null +++ b/package/suricata/suricata.service @@ -0,0 +1,14 @@ +[Unit] +Description=Suricata Intrusion Detection Service +After=network.target + +[Service] +EnvironmentFile=-/etc/default/suricata +ExecStartPre=/bin/rm -f /var/run/suricata.pid +ExecStartPre=/usr/bin/mkdir -p /var/log/suricata +ExecStart=/usr/bin/suricata -c /etc/suricata/suricata.yaml -i eth0 --pidfile /var/run/suricata.pid +ExecReload=/bin/kill -USR2 $MAINPID +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/sway/Config.in b/package/sway/Config.in new file mode 100644 index 00000000..d78f792c --- /dev/null +++ b/package/sway/Config.in @@ -0,0 +1,69 @@ +config BR2_PACKAGE_SWAY + bool "sway" + depends on BR2_PACKAGE_SYSTEMD # is required by the sd-bus provider + depends on !BR2_STATIC_LIBS # wlroots + depends on BR2_TOOLCHAIN_HAS_THREADS # pango, wlroots + depends on BR2_PACKAGE_HAS_LIBEGL # wlroots + depends on BR2_PACKAGE_HAS_LIBGLES # wlroots + depends on BR2_PACKAGE_HAS_UDEV # wlroots + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c, pango + depends on BR2_USE_WCHAR # pango + depends on BR2_USE_MMU # pango + depends on BR2_INSTALL_LIBSTDCPP # pango + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # pango + select BR2_PACKAGE_WLROOTS + select BR2_PACKAGE_JSON_C + select BR2_PACKAGE_PCRE + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_CAIRO_PNG + select BR2_PACKAGE_PANGO + select BR2_PACKAGE_XKEYBOARD_CONFIG # runtime + help + i3-compatible Wayland compositor + Note: + The default sway config uses the foot package as the + default terminal. If you plan on using the default + config, it is recommended to select the foot package! + + https://github.com/swaywm/sway + +if BR2_PACKAGE_SWAY + +config BR2_PACKAGE_SWAY_SWAYBAR + bool "swaybar" + select BR2_PACKAGE_DEJAVU + select BR2_PACKAGE_JQ if BR2_PACKAGE_BASH_COMPLETION # Runtime + select BR2_PACKAGE_DMENU_WAYLAND # Runtime + help + Enable support for swaybar + +if BR2_PACKAGE_SWAY_SWAYBAR + +config BR2_PACKAGE_SWAY_SWAYBAR_TRAY + bool "swaybar tray" + help + Enable support for swaybar tray + +endif # BR2_PACKAGE_SWAY_SWAYBAR + +config BR2_PACKAGE_SWAY_SWAYNAG + bool "swaynag" + help + Enable support for swaynag + +endif # BR2_PACKAGE_SWAY + +comment "sway needs systemd, udev, EGL and OpenGL ES support" + depends on !BR2_PACKAGE_SYSTEMD || \ + !BR2_PACKAGE_HAS_UDEV || \ + !BR2_PACKAGE_HAS_LIBEGL || \ + !BR2_PACKAGE_HAS_LIBGLES + +comment "sway needs a toolchain w/ wchar, threads, C++, dynamic library, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_INSTALL_LIBSTDCPP || \ + BR2_STATIC_LIBS diff --git a/package/sway/sway.hash b/package/sway/sway.hash new file mode 100644 index 00000000..86b6581f --- /dev/null +++ b/package/sway/sway.hash @@ -0,0 +1,3 @@ +# Locally computed, tarball verified with GPG signature +sha256 73f08fd2cf7948e8af900709efe44eae412ae11c5773960e25c9aa09f73bad41 sway-1.8.1.tar.gz +sha256 bd35722bff46327f5eded1d211207277bbe043d2a22048b282c42ef801593b8b LICENSE diff --git a/package/sway/sway.mk b/package/sway/sway.mk new file mode 100644 index 00000000..0aad9de7 --- /dev/null +++ b/package/sway/sway.mk @@ -0,0 +1,62 @@ +################################################################################ +# +# sway +# +################################################################################ + +SWAY_VERSION = 1.8.1 +SWAY_SITE = https://github.com/swaywm/sway/releases/download/$(SWAY_VERSION) +SWAY_LICENSE = MIT +SWAY_LICENSE_FILES = LICENSE +SWAY_DEPENDENCIES = systemd host-pkgconf wlroots json-c pcre cairo pango +SWAY_CONF_OPTS = \ + -Dwerror=false \ + -Dzsh-completions=false \ + -Dfish-completions=false \ + -Dman-pages=disabled \ + -Dsd-bus-provider=libsystemd + +ifeq ($(BR2_PACKAGE_WLROOTS_X11),y) +SWAY_CONF_OPTS += -Dxwayland=enabled +else +SWAY_CONF_OPTS += -Dxwayland=disabled +endif + +ifeq ($(BR2_PACKAGE_GDK_PIXBUF),y) +SWAY_CONF_OPTS += -Dgdk-pixbuf=enabled +SWAY_DEPENDENCIES += gdk-pixbuf +else +SWAY_CONF_OPTS += -Dgdk-pixbuf=disabled +endif + +ifeq ($(BR2_PACKAGE_BASH_COMPLETION),y) +SWAY_CONF_OPTS += -Dbash-completions=true +else +SWAY_CONF_OPTS += -Dbash-completions=false +endif + +ifeq ($(BR2_PACKAGE_SWAYBG),y) +SWAY_CONF_OPTS += -Ddefault-wallpaper=true +else +SWAY_CONF_OPTS += -Ddefault-wallpaper=false +endif + +ifeq ($(BR2_PACKAGE_SWAY_SWAYBAR),y) +SWAY_CONF_OPTS += -Dswaybar=true +else +SWAY_CONF_OPTS += -Dswaybar=false +endif + +ifeq ($(BR2_PACKAGE_SWAY_SWAYNAG),y) +SWAY_CONF_OPTS += -Dswaynag=true +else +SWAY_CONF_OPTS += -Dswaynag=false +endif + +ifeq ($(BR2_PACKAGE_SWAY_SWAYBAR_TRAY),y) +SWAY_CONF_OPTS += -Dtray=enabled +else +SWAY_CONF_OPTS += -Dtray=disabled +endif + +$(eval $(meson-package)) diff --git a/package/swaybg/Config.in b/package/swaybg/Config.in new file mode 100644 index 00000000..63aa8cdb --- /dev/null +++ b/package/swaybg/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_SWAYBG + bool "swaybg" + default y if BR2_PACKAGE_SWAY + depends on !BR2_STATIC_LIBS # wayland -> dlfcn.h + depends on BR2_TOOLCHAIN_HAS_THREADS # wayland + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_CAIRO_PNG + select BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_WAYLAND_PROTOCOLS + help + Wallpaper tool for Wayland compositors. + + https://github.com/swaywm/swaybg diff --git a/package/swaybg/swaybg.hash b/package/swaybg/swaybg.hash new file mode 100644 index 00000000..e528349d --- /dev/null +++ b/package/swaybg/swaybg.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature: +# https://github.com/swaywm/swaybg/releases/download/v1.2.1/swaybg-1.2.1.tar.gz.sig +sha256 6af1fdf0e57b1cc5345febed786b761fea0e170943a82639f94cfaed7df84f8f swaybg-1.2.1.tar.gz +sha256 95224d118a325daf31828afcca98cd958d53f0a7cdd856b50b1be8ac44832faf LICENSE diff --git a/package/swaybg/swaybg.mk b/package/swaybg/swaybg.mk new file mode 100644 index 00000000..87374e03 --- /dev/null +++ b/package/swaybg/swaybg.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# swaybg +# +################################################################################ + +SWAYBG_VERSION = 1.2.1 +SWAYBG_SITE = https://github.com/swaywm/swaybg/releases/download/v$(SWAYBG_VERSION) +SWAYBG_LICENSE = MIT +SWAYBG_LICENSE_FILES = LICENSE + +SWAYBG_DEPENDENCIES = \ + cairo \ + wayland \ + wayland-protocols + +SWAYBG_CONF_OPTS = \ + -Dman-pages=disabled \ + -Dwerror=false + +ifeq ($(BR2_PACKAGE_GDK_PIXBUF),y) +SWAYBG_CONF_OPTS += -Dgdk-pixbuf=enabled +SWAYBG_DEPENDENCIES += gdk-pixbuf +else +SWAYBG_CONF_OPTS += -Dgdk-pixbuf=disabled +endif + +$(eval $(meson-package)) diff --git a/package/swig/Config.in.host b/package/swig/Config.in.host new file mode 100644 index 00000000..4c0deebc --- /dev/null +++ b/package/swig/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_SWIG + bool "host swig" + help + swig is a software development tool that connects programs + written in C and C++ with a variety of high-level + programming languages. + + https://www.swig.org/ diff --git a/package/swig/swig.hash b/package/swig/swig.hash new file mode 100644 index 00000000..21590c42 --- /dev/null +++ b/package/swig/swig.hash @@ -0,0 +1,5 @@ +# Locally computed: +sha256 2af08aced8fcd65cdb5cc62426768914bedc735b1c250325203716f78e39ac9b swig-4.1.1.tar.gz +sha256 f53abaeed775018d519a1b9615f0ca17894772bd9ca21c2a156bf340ac41c13e LICENSE +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE-GPL +sha256 7f50d942373a871211c5efee03f3db2f9efd1cff1002b0ef8e3748baa611a5c2 LICENSE-UNIVERSITIES diff --git a/package/swig/swig.mk b/package/swig/swig.mk new file mode 100644 index 00000000..ad585c3f --- /dev/null +++ b/package/swig/swig.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# swig +# +################################################################################ + +SWIG_VERSION_MAJOR = 4.1 +SWIG_VERSION = $(SWIG_VERSION_MAJOR).1 +SWIG_SITE = http://downloads.sourceforge.net/project/swig/swig/swig-$(SWIG_VERSION) +HOST_SWIG_DEPENDENCIES = host-bison host-pcre2 +HOST_SWIG_CONF_OPTS = \ + --with-pcre \ + --disable-ccache \ + --without-octave +SWIG_LICENSE = GPL-3.0+, BSD-2-Clause, BSD-3-Clause +SWIG_LICENSE_FILES = LICENSE LICENSE-GPL LICENSE-UNIVERSITIES + +# CMake looks first at swig3.0, then swig2.0 and then swig. However, +# when doing the search, it will look into the PATH for swig2.0 first, +# and then for swig. +# While the PATH contains first our $(HOST_DIR)/bin, it also contains +# /usr/bin and other system directories. Therefore, if there is an +# installed swig3.0 on the system, it will get the preference over the +# swig installed in $(HOST_DIR)/bin, which isn't nice. To prevent +# this from happening we create a symbolic link swig3.0 -> swig, so that +# our swig always gets used. + +define HOST_SWIG_INSTALL_SYMLINK + ln -fs swig $(HOST_DIR)/bin/swig$(SWIG_VERSION_MAJOR) + ln -fs swig $(HOST_DIR)/bin/swig3.0 +endef + +HOST_SWIG_POST_INSTALL_HOOKS += HOST_SWIG_INSTALL_SYMLINK + +$(eval $(host-autotools-package)) + +SWIG = $(HOST_DIR)/bin/swig$(SWIG_VERSION_MAJOR) diff --git a/package/swipl/Config.in b/package/swipl/Config.in new file mode 100644 index 00000000..84b6ace4 --- /dev/null +++ b/package/swipl/Config.in @@ -0,0 +1,43 @@ +# swipl supports arch for which libc fenv.h provides all four macros: +# FE_DOWNWARD, FE_TONEAREST, FE_TOWARDZERO, FE_UPWARD +# See for example in glibc https://sourceware.org/git/glibc.git +# git grep -E '^[[:space:]]*#[[:space:]]*define[[:space:]]+FE_(TONEAREST|UPWARD|DOWNWARD|TOWARDZERO)' sysdeps/ +config BR2_PACKAGE_SWIPL_ARCH_SUPPORTS + bool + default y if BR2_aarch64 || BR2_aarch64_be + default y if BR2_arceb || BR2_arcle + default y if BR2_arm || BR2_armeb + default y if BR2_i386 + default y if BR2_m68k + # BR2_microblaze has only FE_TONEAREST + default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + # BR2_nios2 has only FE_TONEAREST + default y if BR2_or1k + default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + default y if BR2_riscv + default y if BR2_s390x + # BR2_sh has only FE_{TONEAREST,TOWARDZERO} + default y if BR2_sparc || BR2_sparc64 + default y if BR2_x86_64 + # BR2_xtensa supports only uclibc which does not have fenv.h + +config BR2_PACKAGE_SWIPL + bool "swipl" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # __has_attribute() + depends on BR2_PACKAGE_SWIPL_ARCH_SUPPORTS + # swipl needs fenv.h which is not provided by uclibc + depends on !BR2_TOOLCHAIN_USES_UCLIBC + select BR2_PACKAGE_ZLIB + help + SWI-Prolog offers a comprehensive free Prolog + environment. Since its start in 1987, SWI-Prolog development + has been driven by the needs of real world + applications. SWI-Prolog is widely used in research and + education as well as commercial applications. + + https://www.swi-prolog.org + +comment "swipl needs a glibc or musl toolchain w/ gcc >= 5" + depends on BR2_PACKAGE_SWIPL_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_5 || \ + BR2_TOOLCHAIN_USES_UCLIBC diff --git a/package/swipl/swipl.hash b/package/swipl/swipl.hash new file mode 100644 index 00000000..98611ffc --- /dev/null +++ b/package/swipl/swipl.hash @@ -0,0 +1,4 @@ +# From https://www.swi-prolog.org/download/stable +sha256 0cb9b80b9922be8165cbac384ebe050d94553e72cf7aebfc980b4395ff01d05d swipl-9.2.6.tar.gz +# Locally calculated +sha256 770594d0f4463b71f1485f00e4bc5cf4b6f667d62ef6bc9bde2fee236541992a LICENSE diff --git a/package/swipl/swipl.mk b/package/swipl/swipl.mk new file mode 100644 index 00000000..595f5e97 --- /dev/null +++ b/package/swipl/swipl.mk @@ -0,0 +1,57 @@ +################################################################################ +# +# swipl +# +################################################################################ + +SWIPL_VERSION = 9.2.6 +SWIPL_SITE = https://www.swi-prolog.org/download/stable/src +SWIPL_LICENSE = BSD-2-Clause +SWIPL_LICENSE_FILES = LICENSE + +HOST_SWIPL_DEPENDENCIES = host-zlib + +SWIPL_DEPENDENCIES = host-swipl zlib + +# A host-swipl is needed to compile the target prolog boot +# boot.prl file. +HOST_SWIPL_CONF_OPTS = \ + -DBUILD_PDF_DOCUMENTATION=OFF \ + -DSWIPL_PACKAGES=OFF \ + -DUSE_GMP=OFF \ + -DUSE_TCMALLOC=OFF + +# swipl uses cmake macros try_run() and check_c_source_runs(), which +# are not suitable for cross compilation. We add results in cache to +# avoid running those tests. The SWIPL_NATIVE_FRIEND variable, is +# meant to point to build directory of a host native swipl, rather +# than the binary itself. The Cmake macro will append "src/swipl" to +# the path set to this variable. Therefore, we cannot use the host +# "swipl" binary installed in $(HOST_DIR)/usr/bin. +SWIPL_CONF_OPTS = \ + -DBUILD_PDF_DOCUMENTATION=OFF \ + -DHAVE_WEAK_ATTRIBUTE=1 \ + -DLLROUND_OK=1 \ + -DMODF_OK=1 \ + -DQSORT_R_GNU=1 \ + -DSWIPL_NATIVE_FRIEND=$(HOST_SWIPL_SRCDIR) \ + -DSWIPL_PACKAGES=OFF \ + -DUSE_TCMALLOC=OFF + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +SWIPL_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic +endif + +ifeq ($(BR2_PACKAGE_GMP),y) +SWIPL_CONF_OPTS += -DUSE_GMP=ON +SWIPL_DEPENDENCIES += gmp +else +SWIPL_CONF_OPTS += -DUSE_GMP=OFF +endif + +ifeq ($(BR2_PACKAGE_NCURSES),y) +SWIPL_DEPENDENCIES += ncurses +endif + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/swtpm/Config.in.host b/package/swtpm/Config.in.host new file mode 100644 index 00000000..0dd984ff --- /dev/null +++ b/package/swtpm/Config.in.host @@ -0,0 +1,11 @@ +config BR2_PACKAGE_HOST_SWTPM + bool "host swtpm" + help + Compiles SWTPM software TPM emulator for the host. + + The SWTPM package provides TPM emulators with different + front-end interfaces to libtpms. TPM emulators provide socket + interfaces (TCP/IP and Unix) and the Linux CUSE interface for + the creation of multiple native /dev/vtpm* devices. + + https://github.com/stefanberger/swtpm/wiki diff --git a/package/swtpm/swtpm.hash b/package/swtpm/swtpm.hash new file mode 100644 index 00000000..934d3b6e --- /dev/null +++ b/package/swtpm/swtpm.hash @@ -0,0 +1,2 @@ +sha256 b281b4e8c39f68e1928675f788abc70072e4081152e129144359a8c5c304c06b swtpm-0.8.2.tar.gz +sha256 19d27d6e96d07022e5e688f75c974f1ceb9aae9e90e0fccae68666d02099cc4b LICENSE diff --git a/package/swtpm/swtpm.mk b/package/swtpm/swtpm.mk new file mode 100644 index 00000000..598d56cf --- /dev/null +++ b/package/swtpm/swtpm.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# swtpm +# +################################################################################ + +SWTPM_VERSION = 0.8.2 +SWTPM_SITE = $(call github,stefanberger,swtpm,v$(SWTPM_VERSION)) +SWTPM_LICENSE = BSD-4-Clause +SWTPM_LICENSE_FILES = LICENSE + +HOST_SWTPM_DEPENDENCIES = \ + host-json-glib \ + host-libopenssl \ + host-libtasn1 \ + host-libtool \ + host-libtpms \ + host-pkgconf + +# Required because a plain Git clone is used: +HOST_SWTPM_AUTORECONF = YES + +HOST_SWTPM_CONF_OPTS = \ + --disable-tests \ + --with-openssl \ + --without-seccomp + +$(eval $(host-autotools-package)) diff --git a/package/swugenerator/Config.in.host b/package/swugenerator/Config.in.host new file mode 100644 index 00000000..df0e9a51 --- /dev/null +++ b/package/swugenerator/Config.in.host @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HOST_SWUGENERATOR + bool "host swugenerator" + help + A host tool to generate SWU update package for SWUpdate. + + https://github.com/sbabic/swugenerator diff --git a/package/swugenerator/swugenerator.hash b/package/swugenerator/swugenerator.hash new file mode 100644 index 00000000..301f1686 --- /dev/null +++ b/package/swugenerator/swugenerator.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 3f4885242bce9523d26567578793c828e2f07122c6b7e44cce8ede33e5618a01 swugenerator-0.3.tar.gz +# Locally computed sha256 checksums +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 LICENSE diff --git a/package/swugenerator/swugenerator.mk b/package/swugenerator/swugenerator.mk new file mode 100644 index 00000000..22ed799e --- /dev/null +++ b/package/swugenerator/swugenerator.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# swugenerator +# +################################################################################ + +SWUGENERATOR_VERSION = 0.3 +SWUGENERATOR_SITE = $(call github,sbabic,swugenerator,$(SWUGENERATOR_VERSION)) +SWUGENERATOR_LICENSE = GPL-3.0 +SWUGENERATOR_LICENSE_FILES = LICENSE +HOST_SWUGENERATOR_SETUP_TYPE = setuptools +HOST_SWUGENERATOR_DEPENDENCIES = \ + host-gzip \ + host-openssl \ + host-python-libconf \ + host-zstd + +$(eval $(host-python-package)) diff --git a/package/swupdate/10-mongoose-args b/package/swupdate/10-mongoose-args new file mode 100644 index 00000000..d0b0f8be --- /dev/null +++ b/package/swupdate/10-mongoose-args @@ -0,0 +1 @@ +SWUPDATE_WEBSERVER_ARGS="-r /var/www/swupdate ${SWUPDATE_MONGOOSE_EXTRA_ARGS:--p 8080}" diff --git a/package/swupdate/90-start-progress b/package/swupdate/90-start-progress new file mode 100644 index 00000000..3b0eb5e7 --- /dev/null +++ b/package/swupdate/90-start-progress @@ -0,0 +1 @@ +exec /usr/bin/swupdate-progress -w -r & diff --git a/package/swupdate/Config.in b/package/swupdate/Config.in new file mode 100644 index 00000000..3708df08 --- /dev/null +++ b/package/swupdate/Config.in @@ -0,0 +1,91 @@ +config BR2_PACKAGE_SWUPDATE + bool "swupdate" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c + select BR2_PACKAGE_JSON_C + select BR2_PACKAGE_LIBUBOOTENV + help + swupdate provides a reliable way to update the software on + an embedded system. + + swupdate is highly configurable to fit the targets + requirements and to minimize the footprint. The provided + default configuration file BR2_PACKAGE_SWUPDATE_CONFIG will + enable swupdate with an embedded webserver, a parser and a + handler for raw NAND or NOR flash. + + The default configuration file builds a reasonable firmware + update system with minimal external dependencies in mind. + If you like to use your own modified configuration, + you have to select the necessary packages manually: + + * Select BR2_PACKAGE_LUA or BR2_PACKAGE_LUAJIT if you want + want to have Lua support. + * Select BR2_PACKAGE_LIBCURL if you want to use the download + feature. + * Select BR2_PACKAGE_OPENSSL or BR2_PACKAGE_MBEDTLS if you + want to add encryption support. + * Select BR2_PACKAGE_MTD if you want to use swupdate with + UBI partitions. + * Select BR2_PACKAGE_ZLIB if you want to deal with gzip + compressed archives. + * Select BR2_PACKAGE_ZSTD if you want to deal with zstd + compressed archives. + * Select BR2_PACKAGE_ZEROMQ to add support for using a + remote handler. + * Select BR2_PACKAGE_LIBRSYNC to add support for using + rdiff handler. + * Select BR2_PACKAGE_LIBGPIOD or BR2_PACKAGE_LIBGPIOD2 to add + support for microcontroller firmware update. + * Select BR2_PACKAGE_EFIBOOTMGR to add support for EFI Boot + Guard. + * Select BR2_PACKAGE_LIBCURL, BR2_PACKAGE_LIBWEBSOCKETS, + and BR2_PACKAGE_LIBURIPARSER + to add support for the SWU forwarder. + + https://sbabic.github.io/swupdate + +if BR2_PACKAGE_SWUPDATE + +config BR2_PACKAGE_SWUPDATE_CONFIG + string "swupdate configuration file" + default "package/swupdate/swupdate.config" + help + Path to the swupdate configuration file. + + I you wish to use your own modified swupdate configuration + file specify the config file location with this option. + +config BR2_PACKAGE_SWUPDATE_USB + bool "swupdate usb" + depends on BR2_PACKAGE_SYSTEMD + help + Enable update from USB disk. + +comment "swupdate usb needs systemd" + depends on !BR2_PACKAGE_SYSTEMD + +config BR2_PACKAGE_SWUPDATE_WEBSERVER + bool "swupdate webserver" + default y + help + Enable update from remote using a web server on the target. + +config BR2_PACKAGE_SWUPDATE_INSTALL_WEBSITE + bool "install default website" + default y + depends on BR2_PACKAGE_SWUPDATE_WEBSERVER + help + Install the provided website to /var/www/swupdate. + + This is necessary if you want to run swupdate with the + embedded webserver and do not provide an own website to be + installed to /var/www/swupdate. +endif + +comment "swupdate needs a toolchain w/ dynamic library, threads" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/swupdate/S80swupdate b/package/swupdate/S80swupdate new file mode 100644 index 00000000..4421084b --- /dev/null +++ b/package/swupdate/S80swupdate @@ -0,0 +1,47 @@ +#!/bin/sh + +DAEMON="swupdate" +DAEMON_WRAPPER="/usr/lib/swupdate/swupdate.sh" +PIDFILE="/var/run/$DAEMON.pid" + +start() { + printf 'Starting %s: ' "$DAEMON" + start-stop-daemon -S -q -b -m -p "$PIDFILE" -x $DAEMON_WRAPPER + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature (does not + # reconfigure/restart on SIGHUP, just closes all open files). + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/swupdate/swupdate-progress.service b/package/swupdate/swupdate-progress.service new file mode 100644 index 00000000..0d464bb4 --- /dev/null +++ b/package/swupdate/swupdate-progress.service @@ -0,0 +1,9 @@ +[Unit] +Description=swupdate progress service +After=swupdate.service + +[Service] +ExecStart=/usr/bin/swupdate-progress -r -w + +[Install] +WantedBy=swupdate.service diff --git a/package/swupdate/swupdate-usb.rules b/package/swupdate/swupdate-usb.rules new file mode 100644 index 00000000..72e003d7 --- /dev/null +++ b/package/swupdate/swupdate-usb.rules @@ -0,0 +1 @@ +ACTION=="add", KERNEL=="sd*", SUBSYSTEM=="block", ENV{ID_BUS}=="usb", ENV{ID_FS_USAGE}=="filesystem", TAG+="systemd", ENV{SYSTEMD_WANTS}+="swupdate-usb@%k.service" diff --git a/package/swupdate/swupdate-usb@.service b/package/swupdate/swupdate-usb@.service new file mode 100644 index 00000000..28d805f8 --- /dev/null +++ b/package/swupdate/swupdate-usb@.service @@ -0,0 +1,11 @@ +[Unit] +Description=usb media swupdate service +Requires=swupdate.service +Wants=swupdate-progress.service + +[Service] +ExecStartPre=/bin/mkdir -p /tmp/%I +ExecStartPre=/bin/mount /dev/%I /tmp/%I +ExecStart=/bin/sh -c "swupdate-client -v /tmp/%I/*.swu" +ExecStopPost=/bin/umount /tmp/%I +ExecStopPost=/bin/rmdir /tmp/%I diff --git a/package/swupdate/swupdate.config b/package/swupdate/swupdate.config new file mode 100644 index 00000000..a6b7a749 --- /dev/null +++ b/package/swupdate/swupdate.config @@ -0,0 +1,135 @@ +# +# Automatically generated file; DO NOT EDIT. +# Swupdate Configuration +# +CONFIG_HAVE_DOT_CONFIG=y + +# +# Swupdate Settings +# + +# +# General Configuration +# +# CONFIG_CURL is not set +# CONFIG_CURL_SSL is not set +# CONFIG_SYSTEMD is not set +CONFIG_DEFAULT_CONFIG_FILE="/etc/swupdate.cfg" +CONFIG_SCRIPTS=y +# CONFIG_HW_COMPATIBILITY is not set +CONFIG_SW_VERSIONS_FILE="/etc/sw-versions" + +# +# Socket Paths +# +CONFIG_SOCKET_CTRL_PATH="/tmp/sockinstctrl" +CONFIG_SOCKET_PROGRESS_PATH="/tmp/swupdateprog" +CONFIG_SOCKET_REMOTE_HANDLER_DIRECTORY="/tmp/" + +# +# MTD support needs libmtd +# + +# +# Lua support needs a Lua interpreter +# +# CONFIG_FEATURE_SYSLOG is not set + +# +# Build Options +# +CONFIG_CROSS_COMPILE="" +CONFIG_SYSROOT="" +CONFIG_EXTRA_CFLAGS="" +CONFIG_EXTRA_LDFLAGS="" +CONFIG_EXTRA_LDLIBS="" + +# +# Debugging Options +# +# CONFIG_DEBUG is not set +# CONFIG_WERROR is not set +# CONFIG_NOCLEANUP is not set + +# +# EFI Boot Guard needs libebgenv and libz +# +CONFIG_BOOTLOADER_NONE=y +# CONFIG_BOOTLOADER_GRUB is not set + +# +# U-Boot support needs libubootenv, libz +# +CONFIG_SSL_IMPL_NONE=y + +# +# Image downloading support needs libcurl +# + +# +# Hash checking needs an SSL implementation +# + +# +# Image signature verification needs an SSL implementation +# + +# +# Image encryption needs an SSL implementation +# +# CONFIG_SURICATTA is not set +CONFIG_WEBSERVER=y +CONFIG_MONGOOSE=y +CONFIG_MONGOOSEIPV6=y + +# +# SSL support needs an SSL implementation +# + +# +# Parser Features +# +CONFIG_LIBCONFIG=y +CONFIG_PARSERROOT="" + +# +# JSON config parser support needs json-c +# +# CONFIG_SETSWDESCRIPTION is not set + +# +# Image Handlers +# + +# +# ubivol support needs libubi +# +# CONFIG_DISKPART is not set +CONFIG_RAW=y +# CONFIG_RDIFFHANDLER is not set +# CONFIG_SHELLSCRIPTHANDLER is not set + +# +# archive support needs libarchive +# + +# +# remote handler needs zeromq +# + +# +# swuforward handler needs json-c and curl +# + +# +# SWU forwarder requires libcurl +# + +# +# swuforward handler needs json-c and curl +# +# CONFIG_BOOTLOADERHANDLER is not set + +# +# Microcontroller handler depends on libgpiod +# diff --git a/package/swupdate/swupdate.hash b/package/swupdate/swupdate.hash new file mode 100644 index 00000000..ac28acb1 --- /dev/null +++ b/package/swupdate/swupdate.hash @@ -0,0 +1,12 @@ +# Locally calculated +sha256 2736045e885ad6c5dcba8dcc6c7582d0b76ef29a3d6ab7c4080908356e35e3b2 swupdate-2024.05.2.tar.gz +sha256 4cf04ed34ff0ebbf5c71345b56e6af5093fc17206364cca0ebbae92ef3940683 LICENSES/BSD-1-Clause.txt +sha256 e27a3e87706b3aa5ff2e50eaafe2e6ed5397fbf2d7679eaf444a6d000518a3a6 LICENSES/BSD-3-Clause.txt +sha256 0558101984550fa84d1d13c2af11d116c20079d2be58711e8d99cadce7009192 LICENSES/CC0-1.0.txt +sha256 cde7883b9050a1104f4ac19a1572aafd6e5d7323b68351aaf51fbf4beba54966 LICENSES/CC-BY-SA-4.0.txt +sha256 5d51b52a40391a26cbb2accf5dc5d1c165de49a022d9d5efb50b22204d2682ec LICENSES/GPL-2.0-only.txt +sha256 43fd695e9b198a9a4997cc2d02e10d26cae937e2c4930b9eff9c6d349c85cd32 LICENSES/GPL-2.0-or-later.txt +sha256 f8f41f38133176a6db6c1bd8d7bd1a9c910e3563f1cb7bbe32b05e8b8d3a9c61 LICENSES/ISC.txt +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSES/LGPL-2.1-or-later.txt +sha256 89807acf2309bd285f033404ee78581602f3cd9b819a16ac2f0e5f60ff4a473e LICENSES/MIT.txt +sha256 8f2368a292194be10b1223a8875815240a9208bb30785cb13d8849eb6a750fe9 LICENSES/OFL-1.1.txt diff --git a/package/swupdate/swupdate.mk b/package/swupdate/swupdate.mk new file mode 100644 index 00000000..75e4af5d --- /dev/null +++ b/package/swupdate/swupdate.mk @@ -0,0 +1,283 @@ +################################################################################ +# +# swupdate +# +################################################################################ + +SWUPDATE_VERSION = 2024.05.2 +SWUPDATE_SITE = $(call github,sbabic,swupdate,$(SWUPDATE_VERSION)) +SWUPDATE_LICENSE = GPL-2.0, GPL-2.0+, LGPL-2.1+, MIT, ISC, BSD-1-Clause, BSD-3-Clause, CC0-1.0, CC-BY-SA-4.0, OFL-1.1 +SWUPDATE_LICENSE_FILES = LICENSES/BSD-1-Clause.txt \ + LICENSES/BSD-3-Clause.txt \ + LICENSES/CC0-1.0.txt \ + LICENSES/CC-BY-SA-4.0.txt \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-2.0-or-later.txt \ + LICENSES/ISC.txt \ + LICENSES/LGPL-2.1-or-later.txt \ + LICENSES/MIT.txt \ + LICENSES/OFL-1.1.txt +SWUPDATE_INSTALL_STAGING = YES +SWUPDATE_DEPENDENCIES = json-c libubootenv + +# swupdate uses $CROSS-cc instead of $CROSS-gcc, which is not +# available in all external toolchains, and use CC for linking. Ensure +# TARGET_CC is used for both. +SWUPDATE_MAKE_ENV = CC="$(TARGET_CC)" LD="$(TARGET_CC)" SKIP_STRIP=y + +# we don't package EFI Boot Guard/libebgenv +SWUPDATE_MAKE_ENV += HAVE_LIBEBGENV=n + +# swupdate bundles its own version of mongoose (version 6.16) + +ifeq ($(BR2_PACKAGE_E2FSPROGS),y) +SWUPDATE_DEPENDENCIES += e2fsprogs +SWUPDATE_MAKE_ENV += HAVE_LIBEXT2FS=y +else +SWUPDATE_MAKE_ENV += HAVE_LIBEXT2FS=n +endif + +ifeq ($(BR2_PACKAGE_LIBARCHIVE),y) +SWUPDATE_DEPENDENCIES += libarchive +SWUPDATE_MAKE_ENV += HAVE_LIBARCHIVE=y +else +SWUPDATE_MAKE_ENV += HAVE_LIBARCHIVE=n +endif + +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBBLKID),y) +SWUPDATE_DEPENDENCIES += util-linux +SWUPDATE_MAKE_ENV += HAVE_LIBBLKID=y +else +SWUPDATE_MAKE_ENV += HAVE_LIBBLKID=n +endif + +ifeq ($(BR2_PACKAGE_LIBCONFIG),y) +SWUPDATE_DEPENDENCIES += libconfig +SWUPDATE_MAKE_ENV += HAVE_LIBCONFIG=y +else +SWUPDATE_MAKE_ENV += HAVE_LIBCONFIG=n +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +SWUPDATE_DEPENDENCIES += libcurl +SWUPDATE_MAKE_ENV += HAVE_LIBCURL=y +else +SWUPDATE_MAKE_ENV += HAVE_LIBCURL=n +endif + +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBFDISK),y) +SWUPDATE_DEPENDENCIES += util-linux +SWUPDATE_MAKE_ENV += HAVE_LIBFDISK=y +else +SWUPDATE_MAKE_ENV += HAVE_LIBFDISK=n +endif + +ifeq ($(BR2_PACKAGE_LIBGPIOD2),y) +SWUPDATE_DEPENDENCIES += libgpiod2 +SWUPDATE_MAKE_ENV += HAVE_LIBGPIOD=y +else ifeq ($(BR2_PACKAGE_LIBGPIOD),y) +SWUPDATE_DEPENDENCIES += libgpiod +SWUPDATE_MAKE_ENV += HAVE_LIBGPIOD=y +else +SWUPDATE_MAKE_ENV += HAVE_LIBGPIOD=n +endif + +ifeq ($(BR2_PACKAGE_LIBURIPARSER),y) +SWUPDATE_DEPENDENCIES += liburiparser +SWUPDATE_MAKE_ENV += HAVE_URIPARSER=y +else +SWUPDATE_MAKE_ENV += HAVE_URIPARSER=n +endif + +ifeq ($(BR2_PACKAGE_LIBWEBSOCKETS),y) +SWUPDATE_DEPENDENCIES += libwebsockets +SWUPDATE_MAKE_ENV += HAVE_LIBWEBSOCKETS=y +else +SWUPDATE_MAKE_ENV += HAVE_LIBWEBSOCKETS=n +endif + +ifeq ($(BR2_PACKAGE_HAS_LUAINTERPRETER),y) +SWUPDATE_DEPENDENCIES += luainterpreter host-pkgconf +# defines the base name for the pkg-config file ("lua" or "luajit") +define SWUPDATE_SET_LUA_VERSION + $(call KCONFIG_SET_OPT,CONFIG_LUAPKG,$(BR2_PACKAGE_PROVIDES_LUAINTERPRETER)) +endef +SWUPDATE_MAKE_ENV += HAVE_LUA=y +else +SWUPDATE_MAKE_ENV += HAVE_LUA=n +endif + +ifeq ($(BR2_PACKAGE_MBEDTLS),y) +SWUPDATE_DEPENDENCIES += mbedtls +SWUPDATE_MAKE_ENV += HAVE_MBEDTLS=y +else +SWUPDATE_MAKE_ENV += HAVE_MBEDTLS=n +endif + +ifeq ($(BR2_PACKAGE_MTD),y) +SWUPDATE_DEPENDENCIES += mtd +SWUPDATE_MAKE_ENV += HAVE_LIBMTD=y +SWUPDATE_MAKE_ENV += HAVE_LIBUBI=y +else +SWUPDATE_MAKE_ENV += HAVE_LIBMTD=n +SWUPDATE_MAKE_ENV += HAVE_LIBUBI=n +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +SWUPDATE_DEPENDENCIES += openssl +SWUPDATE_MAKE_ENV += HAVE_LIBSSL=y +SWUPDATE_MAKE_ENV += HAVE_LIBCRYPTO=y +else +SWUPDATE_MAKE_ENV += HAVE_LIBSSL=n +SWUPDATE_MAKE_ENV += HAVE_LIBCRYPTO=n +endif + +ifeq ($(BR2_PACKAGE_P11_KIT),y) +SWUPDATE_DEPENDENCIES += p11-kit +SWUPDATE_MAKE_ENV += HAVE_P11KIT=y +else +SWUPDATE_MAKE_ENV += HAVE_P11KIT=n +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +SWUPDATE_DEPENDENCIES += systemd +SWUPDATE_MAKE_ENV += HAVE_LIBSYSTEMD=y +define SWUPDATE_SET_SYSTEMD + $(call KCONFIG_ENABLE_OPT,CONFIG_SYSTEMD) +endef +else +SWUPDATE_MAKE_ENV += HAVE_LIBSYSTEMD=n +define SWUPDATE_SET_SYSTEMD + $(call KCONFIG_DISABLE_OPT,CONFIG_SYSTEMD) +endef +endif + +ifeq ($(BR2_PACKAGE_WOLFSSL),y) +SWUPDATE_DEPENDENCIES += wolfssl +SWUPDATE_MAKE_ENV += HAVE_WOLFSSL=y +else +SWUPDATE_MAKE_ENV += HAVE_WOLFSSL=n +endif + +ifeq ($(BR2_PACKAGE_ZCHUNK),y) +SWUPDATE_DEPENDENCIES += zchunk +SWUPDATE_MAKE_ENV += HAVE_ZCK=y +else +SWUPDATE_MAKE_ENV += HAVE_ZCK=n +endif + +ifeq ($(BR2_PACKAGE_ZEROMQ),y) +SWUPDATE_DEPENDENCIES += zeromq +SWUPDATE_MAKE_ENV += HAVE_LIBZEROMQ=y +else +SWUPDATE_MAKE_ENV += HAVE_LIBZEROMQ=n +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +SWUPDATE_DEPENDENCIES += zlib +SWUPDATE_MAKE_ENV += HAVE_ZLIB=y +else +SWUPDATE_MAKE_ENV += HAVE_ZLIB=n +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +SWUPDATE_DEPENDENCIES += zstd +SWUPDATE_MAKE_ENV += HAVE_ZSTD=y +else +SWUPDATE_MAKE_ENV += HAVE_ZSTD=n +endif + +ifeq ($(BR2_PACKAGE_LIBRSYNC),y) +SWUPDATE_DEPENDENCIES += librsync +SWUPDATE_MAKE_ENV += HAVE_LIBRSYNC=y +else +SWUPDATE_MAKE_ENV += HAVE_LIBRSYNC=n +endif + +ifeq ($(BR2_PACKAGE_SWUPDATE_WEBSERVER),y) +define SWUPDATE_SET_WEBSERVER + $(call KCONFIG_ENABLE_OPT,CONFIG_WEBSERVER) +endef +else +define SWUPDATE_SET_WEBSERVER + $(call KCONFIG_DISABLE_OPT,CONFIG_WEBSERVER) +endef +endif + +SWUPDATE_KCONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_SWUPDATE_CONFIG)) +SWUPDATE_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig + +SWUPDATE_MAKE_OPTS = \ + SWU_VER="$(SWUPDATE_VERSION) (Buildroot $(BR2_VERSION_FULL))" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + CONFIG_EXTRA_CFLAGS="$(TARGET_CFLAGS)" \ + CONFIG_EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" + +define SWUPDATE_KCONFIG_FIXUP_CMDS + $(SWUPDATE_SET_LUA_VERSION) + $(SWUPDATE_SET_SYSTEMD) + $(SWUPDATE_SET_WEBSERVER) +endef + +define SWUPDATE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(SWUPDATE_MAKE_ENV) $(MAKE) -C $(@D) $(SWUPDATE_MAKE_OPTS) +endef + +define SWUPDATE_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(SWUPDATE_MAKE_ENV) $(MAKE) -C $(@D) \ + $(SWUPDATE_MAKE_OPTS) DESTDIR=$(STAGING_DIR) \ + install +endef + +define SWUPDATE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(SWUPDATE_MAKE_ENV) $(MAKE) -C $(@D) \ + $(SWUPDATE_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install + $(if $(BR2_PACKAGE_SWUPDATE_INSTALL_WEBSITE), \ + mkdir -p $(TARGET_DIR)/var/www/swupdate; \ + cp -dpfr $(@D)/examples/www/v2/* $(TARGET_DIR)/var/www/swupdate) +endef + +# Checks to give errors that the user can understand +# Must be before we call to kconfig-package +ifeq ($(BR2_PACKAGE_SWUPDATE)$(BR_BUILDING),yy) +ifeq ($(call qstrip,$(BR2_PACKAGE_SWUPDATE_CONFIG)),) +$(error No Swupdate configuration file specified, check your BR2_PACKAGE_SWUPDATE_CONFIG setting) +endif +endif + +# Services and configs derived from meta-swupdate(MIT license) +# https://github.com/sbabic/meta-swupdate/tree/master/recipes-support/swupdate/swupdate +define SWUPDATE_INSTALL_COMMON + mkdir -p $(TARGET_DIR)/etc/swupdate/conf.d \ + $(TARGET_DIR)/usr/lib/swupdate/conf.d + $(INSTALL) -D -m 755 $(SWUPDATE_PKGDIR)/swupdate.sh \ + $(TARGET_DIR)/usr/lib/swupdate/swupdate.sh + $(if $(BR2_PACKAGE_SWUPDATE_WEBSERVER), \ + $(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/10-mongoose-args \ + $(TARGET_DIR)/usr/lib/swupdate/conf.d/10-mongoose-args) +endef +define SWUPDATE_INSTALL_INIT_SYSTEMD + $(SWUPDATE_INSTALL_COMMON) + $(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/swupdate.service \ + $(TARGET_DIR)/usr/lib/systemd/system/swupdate.service + $(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/swupdate.socket \ + $(TARGET_DIR)/usr/lib/systemd/system/swupdate.socket + $(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/swupdate-usb@.service \ + $(TARGET_DIR)/usr/lib/systemd/system/swupdate-usb@.service + $(if $(BR2_PACKAGE_SWUPDATE_USB), \ + $(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/swupdate-usb.rules \ + $(TARGET_DIR)/lib/udev/rules.d/swupdate-usb.rules) + $(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/swupdate-progress.service \ + $(TARGET_DIR)/usr/lib/systemd/system/swupdate-progress.service + $(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/tmpfiles-swupdate.conf \ + $(TARGET_DIR)/usr/lib/tmpfiles.d/tmpfiles-swupdate.conf +endef +define SWUPDATE_INSTALL_INIT_SYSV + $(SWUPDATE_INSTALL_COMMON) + $(INSTALL) -D -m 755 $(SWUPDATE_PKGDIR)/S80swupdate \ + $(TARGET_DIR)/etc/init.d/S80swupdate + $(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/90-start-progress \ + $(TARGET_DIR)/usr/lib/swupdate/conf.d/90-start-progress +endef + +$(eval $(kconfig-package)) diff --git a/package/swupdate/swupdate.service b/package/swupdate/swupdate.service new file mode 100644 index 00000000..94d4526a --- /dev/null +++ b/package/swupdate/swupdate.service @@ -0,0 +1,12 @@ +[Unit] +Description=SWUpdate daemon +Documentation=https://github.com/sbabic/swupdate +Documentation=https://sbabic.github.io/swupdate + +[Service] +Type=notify +ExecStart=/usr/lib/swupdate/swupdate.sh +KillMode=mixed + +[Install] +WantedBy=multi-user.target diff --git a/package/swupdate/swupdate.sh b/package/swupdate/swupdate.sh new file mode 100644 index 00000000..31ec5363 --- /dev/null +++ b/package/swupdate/swupdate.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +# Based on example script created by Adrian Freihofer +# https://github.com/sbabic/meta-swupdate/blob/master/recipes-support/swupdate/swupdate/swupdate.sh + +# Override these variables in sourced script(s) located +# in /usr/lib/swupdate/conf.d or /etc/swupdate/conf.d +# NOTE: There are substrings used in some swupdate commands which will +# need to be wrapped in a script to prevent tokenizing +# ( -p/-P post/pre cmds are good examples) +SWUPDATE_ARGS="-v ${SWUPDATE_EXTRA_ARGS}" +SWUPDATE_WEBSERVER_ARGS="" +SWUPDATE_SURICATTA_ARGS="" + +# source all files from /etc/swupdate/conf.d and /usr/lib/swupdate/conf.d/ +# A file found in /etc replaces the same file in /usr +for f in `(test -d /usr/lib/swupdate/conf.d/ && ls -1 /usr/lib/swupdate/conf.d/; test -d /etc/swupdate/conf.d && ls -1 /etc/swupdate/conf.d) | sort -u`; do + if [ -f /etc/swupdate/conf.d/$f ]; then + . /etc/swupdate/conf.d/$f + else + . /usr/lib/swupdate/conf.d/$f + fi +done + +if [ "$SWUPDATE_WEBSERVER_ARGS" != "" -a "$SWUPDATE_SURICATTA_ARGS" != "" ]; then + exec /usr/bin/swupdate $SWUPDATE_ARGS -w "$SWUPDATE_WEBSERVER_ARGS" -u "$SWUPDATE_SURICATTA_ARGS" +elif [ "$SWUPDATE_WEBSERVER_ARGS" != "" ]; then + exec /usr/bin/swupdate $SWUPDATE_ARGS -w "$SWUPDATE_WEBSERVER_ARGS" +elif [ "$SWUPDATE_SURICATTA_ARGS" != "" ]; then + exec /usr/bin/swupdate $SWUPDATE_ARGS -u "$SWUPDATE_SURICATTA_ARGS" +else + exec /usr/bin/swupdate $SWUPDATE_ARGS +fi diff --git a/package/swupdate/swupdate.socket b/package/swupdate/swupdate.socket new file mode 100644 index 00000000..2b756714 --- /dev/null +++ b/package/swupdate/swupdate.socket @@ -0,0 +1,11 @@ +[Unit] +Description=SWUpdate socket listener +Documentation=https://github.com/sbabic/swupdate +Documentation=https://sbabic.github.io/swupdate + +[Socket] +ListenStream=/tmp/sockinstctrl +ListenStream=/tmp/swupdateprog + +[Install] +WantedBy=sockets.target diff --git a/package/swupdate/tmpfiles-swupdate.conf b/package/swupdate/tmpfiles-swupdate.conf new file mode 100644 index 00000000..4743672f --- /dev/null +++ b/package/swupdate/tmpfiles-swupdate.conf @@ -0,0 +1,2 @@ +X /tmp/datadst +X /tmp/scripts diff --git a/package/sylpheed/0001-harden-link-checker-before-accepting-click.patch b/package/sylpheed/0001-harden-link-checker-before-accepting-click.patch new file mode 100644 index 00000000..46b45058 --- /dev/null +++ b/package/sylpheed/0001-harden-link-checker-before-accepting-click.patch @@ -0,0 +1,39 @@ +From 876c54b2927e48ab6900e5e6b9395742f75e840e Mon Sep 17 00:00:00 2001 +From: Paul +Date: Sun, 23 May 2021 12:16:40 +0100 +Subject: [PATCH] harden link checker before accepting click + +[Retrieved from: +https://git.claws-mail.org/?p=claws.git;a=commit;h=ac286a71ed78429e16c612161251b9ea90ccd431] +Signed-off-by: Fabrice Fontaine +[Julien: rebased patch on version 3.7.0] +Signed-off-by: Julien Olivain +--- + src/textview.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/textview.c b/src/textview.c +index e55eea9..6fbb8a1 100644 +--- a/src/textview.c ++++ b/src/textview.c +@@ -2689,7 +2689,7 @@ static gboolean textview_uri_security_check(TextView *textview, RemoteURI *uri) + gboolean retval = TRUE; + + if (is_uri_string(uri->uri) == FALSE) +- return TRUE; ++ return FALSE; + + buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview->text)); + gtk_text_buffer_get_iter_at_offset(buffer, &start_iter, uri->start); +@@ -2725,6 +2725,8 @@ static gboolean textview_uri_security_check(TextView *textview, RemoteURI *uri) + if (aval == G_ALERTDEFAULT) + retval = TRUE; + } ++ if (strlen(uri->uri) > get_uri_len(uri->uri)) ++ retval = FALSE; + + g_free(visible_str); + +-- +2.45.2 + diff --git a/package/sylpheed/Config.in b/package/sylpheed/Config.in new file mode 100644 index 00000000..f03ae877 --- /dev/null +++ b/package/sylpheed/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_SYLPHEED + bool "sylpheed" + depends on BR2_PACKAGE_LIBGTK2 + help + lightweight and user-friendly e-mail client. + + http://sylpheed.sraoss.jp/en/ diff --git a/package/sylpheed/sylpheed.hash b/package/sylpheed/sylpheed.hash new file mode 100644 index 00000000..39fa7661 --- /dev/null +++ b/package/sylpheed/sylpheed.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 0d6bc5eb46f5d0a463757c62bc80b00d219b294b3c3662840e4540f6db2e3e49 sylpheed-3.7.0.tar.xz +sha256 c38aee9e3c8c4d5d594ff548a1be05453023016d6286931f6512db215ec1fd42 COPYING +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING.LIB diff --git a/package/sylpheed/sylpheed.mk b/package/sylpheed/sylpheed.mk new file mode 100644 index 00000000..fc419e28 --- /dev/null +++ b/package/sylpheed/sylpheed.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# sylpheed +# +################################################################################ + +SYLPHEED_VERSION_MAJOR = 3.7 +SYLPHEED_VERSION = $(SYLPHEED_VERSION_MAJOR).0 +SYLPHEED_SOURCE = sylpheed-$(SYLPHEED_VERSION).tar.xz +SYLPHEED_SITE = http://sylpheed.sraoss.jp/sylpheed/v$(SYLPHEED_VERSION_MAJOR) +SYLPHEED_LICENSE = GPL-2.0+ (executables), LGPL-2.1+ (library, attachment plugin) +SYLPHEED_LICENSE_FILES = COPYING COPYING.LIB +SYLPHEED_CPE_ID_VALID = YES +SYLPHEED_CONF_OPTS = --disable-gtkspell --disable-gpgme +SYLPHEED_DEPENDENCIES = host-pkgconf libgtk2 + +# 0001-harden-link-checker-before-accepting-click.patch +SYLPHEED_IGNORE_CVES += CVE-2021-37746 + +# Remove the -I$(includedir) from the Makefiles +# because it refers to the host /usr/include. +define SYLPHEED_PRECONFIGURE + for i in $$(find $(@D) -name "Makefile*"); do \ + sed -i 's:-I$$(includedir)::g' $$i; \ + done +endef + +SYLPHEED_PRE_CONFIGURE_HOOKS += SYLPHEED_PRECONFIGURE + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +SYLPHEED_DEPENDENCIES += openssl +SYLPHEED_CONF_OPTS += --enable-ssl +else +SYLPHEED_CONF_OPTS += --disable-ssl +endif + +$(eval $(autotools-package)) diff --git a/package/synergy/Config.in b/package/synergy/Config.in new file mode 100644 index 00000000..c1216c4b --- /dev/null +++ b/package/synergy/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_SYNERGY + bool "synergy" + depends on BR2_PACKAGE_XORG7 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXTST + help + Synergy lets you easily share a single mouse and + keyboard between multiple computers with different + operating systems, each with its own display, + without special hardware. + + https://github.com/symless/synergy-core/ + +comment "synergy needs a toolchain w/ C++, wchar, gcc >= 4.9" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR && \ + BR2_TOOLCHAIN_GCC_AT_LEAST_4_9) diff --git a/package/synergy/synergy.hash b/package/synergy/synergy.hash new file mode 100644 index 00000000..248fd9dc --- /dev/null +++ b/package/synergy/synergy.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 06d1cb1d43251b0b624212652e9c0ab2657d124ac4f7e7d0c7f3e448c953c2a8 synergy-2.0.12-beta.tar.gz +sha256 4921009cd76e7d38a8e873c362b25dbaf032c320bbb36a40dec775ddbdcbe1d8 LICENSE diff --git a/package/synergy/synergy.mk b/package/synergy/synergy.mk new file mode 100644 index 00000000..bc7ebea0 --- /dev/null +++ b/package/synergy/synergy.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# synergy +# +################################################################################ + +SYNERGY_VERSION = 2.0.12-beta +SYNERGY_SITE = $(call github,symless,synergy-core,v$(SYNERGY_VERSION)) +SYNERGY_LICENSE = GPL-2.0 +SYNERGY_LICENSE_FILES = LICENSE +SYNERGY_CPE_ID_VENDOR = symless +SYNERGY_DEPENDENCIES = xlib_libX11 xlib_libXtst + +# Avoid using buildroot commit hash inside cmake/Version.cmake +# by setting SYNERGY_VERSION_STAGE != snapshot +SYNERGY_CONF_ENV += SYNERGY_VERSION_STAGE="beta" + +ifeq ($(BR2_PACKAGE_XLIB_LIBXEXT),y) +SYNERGY_DEPENDENCIES += xlib_libXext +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXI),y) +SYNERGY_DEPENDENCIES += xlib_libXi +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +SYNERGY_DEPENDENCIES += xlib_libXinerama +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) +SYNERGY_DEPENDENCIES += xlib_libXrandr +endif + +define SYNERGY_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/bin/synergyc $(TARGET_DIR)/usr/bin/synergyc + $(INSTALL) -D -m 0755 $(@D)/bin/synergys $(TARGET_DIR)/usr/bin/synergys +endef + +$(eval $(cmake-package)) diff --git a/package/sysdig/Config.in b/package/sysdig/Config.in new file mode 100644 index 00000000..3a3670f5 --- /dev/null +++ b/package/sysdig/Config.in @@ -0,0 +1,34 @@ +config BR2_PACKAGE_SYSDIG + bool "sysdig" + depends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS # falcosecurity-libs + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # falcosecurity-libs + depends on BR2_LINUX_KERNEL # falcosecurity-libs + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # falcosecurity-libs -> grpc -> libabseil-cpp + depends on BR2_TOOLCHAIN_HAS_THREADS # falcosecurity-libs + depends on !BR2_STATIC_LIBS # falcosecurity-libs + depends on BR2_TOOLCHAIN_USES_GLIBC # falcosecurity-libs + depends on BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1 # falcosecurity-libs + depends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_ATOMIC # falcosecurity-libs + select BR2_PACKAGE_FALCOSECURITY_LIBS + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_JSON_FOR_MODERN_CPP + select BR2_PACKAGE_YAML_CPP + help + Sysdig is open source, system-level exploration: + capture system state and activity from a running Linux + instance, then save, filter and analyze. + Think of it as strace + tcpdump + lsof + awesome sauce. + With a little Lua cherry on top. + + https://github.com/draios/sysdig/wiki + +comment "sysdig needs a glibc toolchain w/ C++, threads, gcc >= 8, dynamic library, a Linux kernel, and luajit or lua 5.1 to be built" + depends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_LINUX_KERNEL || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_8 || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_USES_GLIBC \ + || !BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1 diff --git a/package/sysdig/sysdig.hash b/package/sysdig/sysdig.hash new file mode 100644 index 00000000..cda3de5e --- /dev/null +++ b/package/sysdig/sysdig.hash @@ -0,0 +1,3 @@ +# sha256 locally computed +sha256 6b96797859002ab69a2bed4fdba1c7fe8064ecf8661621ae7d8fbf8599ffa636 sysdig-0.29.3.tar.gz +sha256 a88fbf820b38b1c7fabc6efe291b8259e02ae21326f56fe31c6c9adf374b2702 COPYING diff --git a/package/sysdig/sysdig.mk b/package/sysdig/sysdig.mk new file mode 100644 index 00000000..bafe534a --- /dev/null +++ b/package/sysdig/sysdig.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# sysdig +# +################################################################################ + +SYSDIG_VERSION = 0.29.3 +SYSDIG_SITE = $(call github,draios,sysdig,$(SYSDIG_VERSION)) +SYSDIG_LICENSE = Apache-2.0 +SYSDIG_LICENSE_FILES = COPYING +SYSDIG_CPE_ID_VENDOR = sysdig +SYSDIG_CONF_OPTS = \ + -DENABLE_DKMS=OFF \ + -DUSE_BUNDLED_DEPS=OFF \ + -DCREATE_TEST_TARGETS=OFF +SYSDIG_SUPPORTS_IN_SOURCE_BUILD = NO + +SYSDIG_DEPENDENCIES = \ + falcosecurity-libs \ + ncurses \ + json-for-modern-cpp \ + yaml-cpp + +# Don't build the driver as part of the 'standard' procedure, it has been built +# by falcosecurity-libs.mk. +# grpc_cpp_plugin is needed to build falcosecurity libs, so we give the host +# one there. +SYSDIG_CONF_OPTS += -DFALCOSECURITY_LIBS_SOURCE_DIR=$(FALCOSECURITY_LIBS_SRCDIR) \ + -DBUILD_DRIVER=OFF \ + -DGRPC_CPP_PLUGIN=$(HOST_DIR)/bin/grpc_cpp_plugin \ + -DDRIVER_NAME=$(FALCOSECURITY_LIBS_DRIVER_NAME) \ + -DENABLE_DKMS=OFF \ + -DUSE_BUNDLED_DEPS=OFF \ + -DWITH_CHISEL=ON \ + -DVALIJSON_INCLUDE=$(BUILD_DIR)/valijson-0.6/include/valijson \ + -DSYSDIG_VERSION=$(SYSDIG_VERSION) + +$(eval $(cmake-package)) diff --git a/package/sysklogd/Config.in b/package/sysklogd/Config.in new file mode 100644 index 00000000..c9b9fe8c --- /dev/null +++ b/package/sysklogd/Config.in @@ -0,0 +1,58 @@ +config BR2_PACKAGE_SYSKLOGD + bool "sysklogd" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + The continuation of the original sysklogd package, based on + the original Berkeley syslog daemon. Now with kernel + logging, and log rotation built-in. It can both receive from + and send to remote syslog servers. The v2.x series include + extended support for RFC5424 with an alt. syslogp() API for + clients. + + https://github.com/troglobit/sysklogd/ + +if BR2_PACKAGE_SYSKLOGD + +config BR2_PACKAGE_SYSKLOGD_DNS_DELAY + int "Retry DNS delay (sec)" + default "60" + help + Retry delay (seconds) for attempting to resolve DNS names of + remote syslog servers. This is the internal retry delay, not + that of the resolver in your C library or DNS cache. + + Default: 60 seconds + +config BR2_PACKAGE_SYSKLOGD_REMOTE_DELAY + int "Retry remote delay (sec)" + default "180" + help + Retry delay (seconds) for sending to remote syslog servers. + + When set up to forward logs to a remote syslog server, the + network may not always be available. E.g., default interface + down, or no route to the remote server. This setting controls + the back-off time before retrying. + + Default: 180 seconds + +config BR2_PACKAGE_SYSKLOGD_LOGGER + bool "logger tool" + help + Generate log messages from scripts or from the command line. + + This version of logger is receommended for use with sysklogd. + It makes use of the new syslogp() API for RFC5424 style logs, + e.g. MSGID, strucutred data (SD), etc. + + The BusyBox, or util-linux, logger tools can also be used, but + are limited to RFC3164 style messages. + +endif + +comment "sysklogd needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/package/sysklogd/S01syslogd b/package/sysklogd/S01syslogd new file mode 100644 index 00000000..26036328 --- /dev/null +++ b/package/sysklogd/S01syslogd @@ -0,0 +1,62 @@ +#!/bin/sh + +DAEMON="syslogd" +PIDFILE="/var/run/$DAEMON.pid" + +SYSLOGD_ARGS="-m 0" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -p "$PIDFILE" -x "/sbin/$DAEMON" \ + -- $SYSLOGD_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +# SIGHUP makes syslogd reload its configuration +reload() { + printf 'Reloading %s: ' "$DAEMON" + start-stop-daemon -K -s HUP -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +case "$1" in + start|stop|restart|reload) + "$1";; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/sysklogd/sysklogd.hash b/package/sysklogd/sysklogd.hash new file mode 100644 index 00000000..0a5790a1 --- /dev/null +++ b/package/sysklogd/sysklogd.hash @@ -0,0 +1,5 @@ +# Upstream .sha256 from GitHub +sha256 e35d5c5f55019976302ac9818890bd6b6858db257506f0e9afaa718a8dee9cc3 sysklogd-2.6.1.tar.gz + +# Locally calculated +sha256 7a71d7603a7c4456df441463e54da35acf151c1be0879246de63544f1f34f477 LICENSE diff --git a/package/sysklogd/sysklogd.mk b/package/sysklogd/sysklogd.mk new file mode 100644 index 00000000..86bd4ef1 --- /dev/null +++ b/package/sysklogd/sysklogd.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# sysklogd +# +################################################################################ + +SYSKLOGD_VERSION = 2.6.1 +SYSKLOGD_SITE = https://github.com/troglobit/sysklogd/releases/download/v$(SYSKLOGD_VERSION) +SYSKLOGD_LICENSE = BSD-3-Clause +SYSKLOGD_LICENSE_FILES = LICENSE +SYSKLOGD_INSTALL_STAGING = YES +SYSKLOGD_CPE_ID_VALID = YES + +# Busybox install logger in /usr/bin, and syslogd in /sbin, so install in +# the same locations so that busybox does not install its applets in there. +SYSKLOGD_CONF_OPTS = \ + --bindir=/usr/bin \ + --sbindir=/sbin \ + --with-dns-delay=$(BR2_PACKAGE_SYSKLOGD_DNS_DELAY) \ + --with-suspend-time=$(BR2_PACKAGE_SYSKLOGD_REMOTE_DELAY) + +# Disable/Enable utilities +ifeq ($(BR2_PACKAGE_SYSKLOGD_LOGGER),y) +SYSKLOGD_CONF_OPTS += --with-logger +else +SYSKLOGD_CONF_OPTS += --without-logger +endif + +define SYSKLOGD_INSTALL_SAMPLE_CONFIG + $(INSTALL) -D -m 0644 $(@D)/syslog.conf \ + $(TARGET_DIR)/etc/syslog.conf +endef + +SYSKLOGD_POST_INSTALL_TARGET_HOOKS += SYSKLOGD_INSTALL_SAMPLE_CONFIG + +define SYSKLOGD_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/sysklogd/S01syslogd \ + $(TARGET_DIR)/etc/init.d/S01syslogd +endef + +define SYSKLOGD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(SYSKLOGD_PKGDIR)/syslogd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/syslogd.service +endef + +$(eval $(autotools-package)) diff --git a/package/sysklogd/syslogd.service b/package/sysklogd/syslogd.service new file mode 100644 index 00000000..c7e724e1 --- /dev/null +++ b/package/sysklogd/syslogd.service @@ -0,0 +1,13 @@ +[Unit] +Description=System Logging Service +Requires=syslog.socket + +[Service] +EnvironmentFile=-/etc/default/syslogd +ExecStart=/sbin/syslogd -m 0 -F $SYSLOGD_ARGS +StandardOutput=null +Restart=on-failure + +[Install] +WantedBy=multi-user.target +Alias=syslog.service diff --git a/package/syslog-ng/Config.in b/package/syslog-ng/Config.in new file mode 100644 index 00000000..1302e6ac --- /dev/null +++ b/package/syslog-ng/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_SYSLOG_NG + bool "syslog-ng" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c + select BR2_PACKAGE_JSON_C + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_PCRE2 + select BR2_PACKAGE_OPENSSL + help + syslog-ng is an enhanced log daemon, supporting a wide range + of input and output methods: syslog, unstructured text, + queueing, SQL & NoSQL + + https://www.syslog-ng.com/products/open-source-log-management/ + +comment "syslog-ng needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/package/syslog-ng/S01syslog-ng b/package/syslog-ng/S01syslog-ng new file mode 100644 index 00000000..2ced6f8b --- /dev/null +++ b/package/syslog-ng/S01syslog-ng @@ -0,0 +1,62 @@ +#!/bin/sh + +DAEMON="syslog-ng" +PIDFILE="/var/run/$DAEMON.pid" + +SYSLOG_NG_ARGS="" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -p "$PIDFILE" -x "/usr/sbin/$DAEMON" \ + -- $SYSLOG_NG_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +# SIGHUP makes syslog-ng reload its configuration +reload() { + printf 'Reloading %s: ' "$DAEMON" + start-stop-daemon -K -s HUP -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +case "$1" in + start|stop|restart|reload) + "$1";; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/syslog-ng/syslog-ng.conf b/package/syslog-ng/syslog-ng.conf new file mode 100644 index 00000000..bab628f5 --- /dev/null +++ b/package/syslog-ng/syslog-ng.conf @@ -0,0 +1,16 @@ +@version: 4.7 + +source s_sys { + file("/proc/kmsg" program_override("kernel")); + unix-stream ("/dev/log"); + internal(); +}; + +destination d_all { + file("/var/log/messages"); +}; + +log { + source(s_sys); + destination(d_all); +}; diff --git a/package/syslog-ng/syslog-ng.hash b/package/syslog-ng/syslog-ng.hash new file mode 100644 index 00000000..7f829c8b --- /dev/null +++ b/package/syslog-ng/syslog-ng.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 5477189a2d12325aa4faebfcf59f5bdd9084234732f0c3ec16dd253847dacf1c syslog-ng-4.7.1.tar.gz +sha256 d7d51f8d0f6ee9757a371080e7f5fa19ac73afbef14db6e981705cf1ec813d6b COPYING +sha256 ce3324c9f22299cfc7c281e5a6ab40fbe9c2ea1a67cee87226cb8cd39db1e1d2 GPL.txt +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LGPL.txt diff --git a/package/syslog-ng/syslog-ng.mk b/package/syslog-ng/syslog-ng.mk new file mode 100644 index 00000000..57ee46ce --- /dev/null +++ b/package/syslog-ng/syslog-ng.mk @@ -0,0 +1,125 @@ +################################################################################ +# +# syslog-ng +# +################################################################################ + +# When updating the version, please check at runtime if the version in +# syslog-ng.conf header needs to be updated +SYSLOG_NG_VERSION = 4.7.1 +SYSLOG_NG_SITE = https://github.com/balabit/syslog-ng/releases/download/syslog-ng-$(SYSLOG_NG_VERSION) +SYSLOG_NG_LICENSE = LGPL-2.1+ (syslog-ng core), GPL-2.0+ (modules) +SYSLOG_NG_LICENSE_FILES = COPYING GPL.txt LGPL.txt +SYSLOG_NG_CPE_ID_VENDOR = oneidentity +SYSLOG_NG_DEPENDENCIES = host-bison host-flex host-pkgconf \ + json-c libglib2 openssl pcre2 +SYSLOG_NG_CONF_OPTS = --disable-manpages --localstatedir=/var/run \ + --disable-java --disable-java-modules --disable-mongodb \ + --disable-python +SYSLOG_NG_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_101915),y) +SYSLOG_NG_CFLAGS += -O0 +endif + +SYSLOG_NG_CONF_ENV = CFLAGS="$(SYSLOG_NG_CFLAGS)" + +ifeq ($(BR2_PACKAGE_GEOIP),y) +SYSLOG_NG_DEPENDENCIES += geoip +SYSLOG_NG_CONF_OPTS += --enable-geoip +else +SYSLOG_NG_CONF_OPTS += --disable-geoip +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +SYSLOG_NG_DEPENDENCIES += libcap +SYSLOG_NG_CONF_OPTS += --enable-linux-caps +else +SYSLOG_NG_CONF_OPTS += --disable-linux-caps +endif + +ifeq ($(BR2_PACKAGE_LIBESMTP),y) +SYSLOG_NG_DEPENDENCIES += libesmtp +SYSLOG_NG_CONF_OPTS += --enable-smtp +SYSLOG_NG_CONF_OPTS += --with-libesmtp="$(STAGING_DIR)/usr" +else +SYSLOG_NG_CONF_OPTS += --disable-smtp +endif + +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 += \ + --with-libnet=$(STAGING_DIR)/usr/bin \ + --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" +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +SYSLOG_NG_CONF_OPTS += --enable-cloud-auth +else +SYSLOG_NG_CONF_OPTS += --disable-cloud-auth +endif +else +SYSLOG_NG_CONF_OPTS += --disable-http --disable-cloud-auth +endif + +ifeq ($(BR2_PACKAGE_RABBITMQ_C),y) +SYSLOG_NG_DEPENDENCIES += rabbitmq-c +SYSLOG_NG_CONF_OPTS += --enable-amqp +else +SYSLOG_NG_CONF_OPTS += --disable-amqp +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +SYSLOG_NG_DEPENDENCIES += systemd +SYSLOG_NG_CONF_OPTS += \ + --enable-systemd \ + --with-systemdsystemunitdir=/usr/lib/systemd/system +else +SYSLOG_NG_CONF_OPTS += --disable-systemd +endif + +ifeq ($(BR2_PACKAGE_NETSNMP),y) +SYSLOG_NG_DEPENDENCIES += netsnmp +SYSLOG_NG_CONF_OPTS += --enable-afsnmp +SYSLOG_NG_CONF_OPTS += --with-net-snmp="$(STAGING_DIR)/usr/bin" +else +SYSLOG_NG_CONF_OPTS += --disable-afsnmp +endif + +define SYSLOG_NG_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/syslog-ng/S01syslog-ng \ + $(TARGET_DIR)/etc/init.d/S01syslog-ng +endef + +# By default syslog-ng installs a .service that requires a config file at +# /etc/default, so provide one with the default values. +define SYSLOG_NG_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/usr/lib/systemd/system/syslog-ng@.service.d + printf '[Install]\nDefaultInstance=default\n' \ + >$(TARGET_DIR)/usr/lib/systemd/system/syslog-ng@.service.d/buildroot-default-instance.conf +endef + +# By default syslog-ng installs a number of sample configuration +# files. Some of these rely on optional features being +# enabled. Because of this buildroot uninstalls the shipped config +# files and provides a simplified configuration. +define SYSLOG_NG_FIXUP_CONFIG + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + DESTDIR=$(TARGET_DIR) scl-uninstall-local + $(INSTALL) -D -m 0644 package/syslog-ng/syslog-ng.conf \ + $(TARGET_DIR)/etc/syslog-ng.conf +endef + +SYSLOG_NG_POST_INSTALL_TARGET_HOOKS = SYSLOG_NG_FIXUP_CONFIG + +$(eval $(autotools-package)) diff --git a/package/sysprof/Config.in b/package/sysprof/Config.in new file mode 100644 index 00000000..a4f53a11 --- /dev/null +++ b/package/sysprof/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_SYSPROF + bool "sysprof" + depends on BR2_USE_WCHAR # glib2, libdex, json-glib + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2, libdex, json-glib, polkit + depends on BR2_USE_MMU # glib2, libdex, json-glib + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # libunwind, polkit + depends on BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS + depends on !BR2_STATIC_LIBS # libdex, libunwind, polkit + depends on !BR2_OPTIMIZE_FAST # polkit + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12 + select BR2_PACKAGE_JSON_GLIB + select BR2_PACKAGE_LIBDEX + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBUNWIND + select BR2_PACKAGE_POLKIT + help + Sysprof is a statistical, system-wide profiler that can + profile user and kernel code using the perf API. + + http://sysprof.com + +comment "sysprof needs a toolchain w/ dynamic library, wchar, threads, C++, gcc >= 7, headers >= 5.12" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \ + BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12 + +comment "sysprof can't be built with Optimize for fast" + depends on BR2_OPTIMIZE_FAST diff --git a/package/sysprof/sysprof.hash b/package/sysprof/sysprof.hash new file mode 100644 index 00000000..f21e7621 --- /dev/null +++ b/package/sysprof/sysprof.hash @@ -0,0 +1,5 @@ +# From https://download.gnome.org/sources/sysprof/46/sysprof-46.0.sha256sum +sha256 73aa7e75ebab3e4e0946a05a723df7e6ee4249e3b9e884dba35500aba2a1d176 sysprof-46.0.tar.xz + +# License files +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/sysprof/sysprof.mk b/package/sysprof/sysprof.mk new file mode 100644 index 00000000..8e69a704 --- /dev/null +++ b/package/sysprof/sysprof.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# sysprof +# +################################################################################ + +SYSPROF_VERSION_MAJOR = 46 +SYSPROF_VERSION = $(SYSPROF_VERSION_MAJOR).0 +SYSPROF_SOURCE = sysprof-$(SYSPROF_VERSION).tar.xz +SYSPROF_SITE = https://download.gnome.org/sources/sysprof/$(SYSPROF_VERSION_MAJOR) +SYSPROF_LICENSE = GPL-3.0+ +SYSPROF_LICENSE_FILES = COPYING +SYSPROF_DEPENDENCIES = libglib2 libdex libunwind json-glib polkit +SYSPROF_CONF_OPTS = \ + -Ddevelopment=false \ + -Dexamples=false \ + -Dgtk=false \ + -Dhelp=false \ + -Dinstall-static=false \ + -Dlibsysprof=true \ + -Dtests=false \ + -Dtools=true \ + -Dsystemdunitdir=/usr/lib/systemd/system + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +SYSPROF_DEPENDENCIES += systemd +endif + +$(eval $(meson-package)) diff --git a/package/sysrepo/Config.in b/package/sysrepo/Config.in new file mode 100644 index 00000000..b1535bed --- /dev/null +++ b/package/sysrepo/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_SYSREPO + bool "sysrepo" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libyang + depends on !BR2_STATIC_LIBS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + select BR2_PACKAGE_LIBYANG + select BR2_PACKAGE_PCRE2 + help + Sysrepo is an YANG-based configuration and operational state + data store for Unix/Linux applications. + + https://github.com/sysrepo + +if BR2_PACKAGE_SYSREPO + +config BR2_PACKAGE_SYSREPO_EXAMPLES + bool "enable examples" + help + Enable sysrepo examples. + +endif + +comment "sysrepo needs a toolchain w/ C++, NPTL, dynamic library, gcc >= 4.8" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/package/sysrepo/S51sysrepo-plugind b/package/sysrepo/S51sysrepo-plugind new file mode 100644 index 00000000..60ea3ba7 --- /dev/null +++ b/package/sysrepo/S51sysrepo-plugind @@ -0,0 +1,53 @@ +#!/bin/sh + +DAEMON="sysrepo-plugind" +EXECUTABLE="/usr/bin/$DAEMON" + +SYSREPO_PLUGIND_ARGS="" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + start-stop-daemon -S -q -x "$EXECUTABLE" \ + -- $SYSREPO_PLUGIND_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -x "$EXECUTABLE" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +reload() { + # we do not support real reload .. just restart + restart +} + +case "$1" in + start|stop|restart|reload) + "$1";; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/sysrepo/sysrepo.hash b/package/sysrepo/sysrepo.hash new file mode 100644 index 00000000..056f7078 --- /dev/null +++ b/package/sysrepo/sysrepo.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 467efed8d0f62c26a0d200602b911096eb2d67858e620937ab68f96b316fa9b7 sysrepo-2.2.150.tar.gz +sha256 88f1b7e5c64d2c113e07105aa9c0fb80639b40287565be1c2afd0949df83d826 LICENSE diff --git a/package/sysrepo/sysrepo.mk b/package/sysrepo/sysrepo.mk new file mode 100644 index 00000000..7f2570bd --- /dev/null +++ b/package/sysrepo/sysrepo.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# sysrepo +# +################################################################################ + +SYSREPO_VERSION = 2.2.150 +SYSREPO_SITE = $(call github,sysrepo,sysrepo,v$(SYSREPO_VERSION)) +SYSREPO_INSTALL_STAGING = YES +SYSREPO_LICENSE = BSD-3-Clause +SYSREPO_LICENSE_FILES = LICENSE +SYSREPO_DEPENDENCIES = libyang pcre2 host-sysrepo +HOST_SYSREPO_DEPENDENCIES = host-libyang host-pcre2 + +ifeq ($(BR2_INIT_SYSTEMD),y) +SYSREPO_DEPENDENCIES += systemd +endif + +SYSREPO_CONF_OPTS = \ + -DBUILD_EXAMPLES=$(if $(BR2_PACKAGE_SYSREPO_EXAMPLES),ON,OFF) \ + -DENABLE_TESTS=OFF \ + -DENABLE_VALGRIND_TESTS=OFF \ + -DREPO_PATH=/etc/sysrepo + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +SYSREPO_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic +endif + +define SYSREPO_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/sysrepo/S51sysrepo-plugind \ + $(TARGET_DIR)/etc/init.d/S51sysrepo-plugind +endef + +HOST_SYSREPO_CONF_OPTS = \ + -DBUILD_EXAMPLES=OFF \ + -DENABLE_TESTS=OFF \ + -DENABLE_VALGRIND_TESTS=OFF \ + -DREPO_PATH=$(TARGET_DIR)/etc/sysrepo + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/sysstat/Config.in b/package/sysstat/Config.in new file mode 100644 index 00000000..efb640fd --- /dev/null +++ b/package/sysstat/Config.in @@ -0,0 +1,39 @@ +config BR2_PACKAGE_SYSSTAT + bool "sysstat" + depends on BR2_USE_MMU # fork() + help + The sysstat utilities are a collection of performance + monitoring tools for Linux. These include sar, sadf, mpstat, + iostat, pidstat and sa tools. + + Some Features : + + * Input / Output and transfer rate statistics (global, per + device, per partition, per network filesystem and per + Linux task / PID) + * CPU statistics (global, per CPU and per Linux task / + PID), including support for virtualization architectures + * Memory and swap space utilization statistics + * Virtual memory, paging and fault statistics + * Per-task (per-PID) memory and page fault statistics + * Global CPU and page fault statistics for tasks and all + their children + * Process creation activity + * Interrupt statistics (global, per CPU and per interrupt, + including potential APIC interrupt sources) + * Extensive network statistics: network interface activity + (number of packets and kB received and transmitted per + second, etc.) including failures from network devices; + network traffic statistics for IP, TCP, ICMP and UDP + protocols based on SNMPv2 standards; support for + IPv6-related protocols. + * NFS server and client activity + * Socket statistics + * Run queue and system load statistics + * Kernel internal tables utilization statistics + * System and per Linux task switching activity + * Swapping statistics + * TTY device activity + * Power management statistics + + https://sysstat.github.io/ diff --git a/package/sysstat/sysstat.hash b/package/sysstat/sysstat.hash new file mode 100644 index 00000000..31821d9e --- /dev/null +++ b/package/sysstat/sysstat.hash @@ -0,0 +1,5 @@ +# From: https://sysstat.github.io/2023/12/17/sysstat-12.7.5.html +sha1 f329edff36f462385a7c20d2a136b667ab8db735 sysstat-12.7.5.tar.xz +# Locally calculated +sha256 57664040a549d33bb06a1121c7124d4cadd9b8b35f815856c194393047cd4d6b sysstat-12.7.5.tar.xz +sha256 db296f2f7f35bca3a174efb0eb392b3b17bd94b341851429a3dff411b1c2fc73 COPYING diff --git a/package/sysstat/sysstat.mk b/package/sysstat/sysstat.mk new file mode 100644 index 00000000..cfa97834 --- /dev/null +++ b/package/sysstat/sysstat.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# sysstat +# +################################################################################ + +SYSSTAT_VERSION = 12.7.5 +SYSSTAT_SOURCE = sysstat-$(SYSSTAT_VERSION).tar.xz +SYSSTAT_SITE = https://sysstat.github.io/sysstat-packages +SYSSTAT_CONF_OPTS = --disable-file-attr +SYSSTAT_DEPENDENCIES = host-gettext $(TARGET_NLS_DEPENDENCIES) +SYSSTAT_LICENSE = GPL-2.0+ +SYSSTAT_LICENSE_FILES = COPYING +SYSSTAT_CPE_ID_VALID = YES +SYSSTAT_SELINUX_MODULES = sysstat + +ifeq ($(BR2_PACKAGE_LM_SENSORS),y) +SYSSTAT_DEPENDENCIES += lm-sensors +SYSSTAT_CONF_OPTS += --enable-sensors +else +SYSSTAT_CONF_OPTS += --disable-sensors +endif +# do not look at host's /usr/lib64 +SYSSTAT_CONF_OPTS += sa_lib_dir=/usr/lib/sa + +$(eval $(autotools-package)) diff --git a/package/system-config-printer/Config.in b/package/system-config-printer/Config.in new file mode 100644 index 00000000..8ebc4d06 --- /dev/null +++ b/package/system-config-printer/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_SYSTEM_CONFIG_PRINTER + bool "system-config-printer" + depends on BR2_PACKAGE_CUPS + help + Graphical user interface for CUPS administration + + https://github.com/OpenPrinting/system-config-printer diff --git a/package/system-config-printer/system-config-printer.hash b/package/system-config-printer/system-config-printer.hash new file mode 100644 index 00000000..3bbc8707 --- /dev/null +++ b/package/system-config-printer/system-config-printer.hash @@ -0,0 +1,3 @@ +# Locally calculated: +sha256 b1a69e1b4ec2add569a87aeca811a37c5361ee6ae327ec852b79e64223e34bee system-config-printer-1.5.18.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/system-config-printer/system-config-printer.mk b/package/system-config-printer/system-config-printer.mk new file mode 100644 index 00000000..6b101e84 --- /dev/null +++ b/package/system-config-printer/system-config-printer.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# system-config-printer +# +################################################################################ + +SYSTEM_CONFIG_PRINTER_VERSION = 1.5.18 +SYSTEM_CONFIG_PRINTER_SOURCE = system-config-printer-$(SYSTEM_CONFIG_PRINTER_VERSION).tar.xz +SYSTEM_CONFIG_PRINTER_SITE = https://github.com/OpenPrinting/system-config-printer/releases/download/v$(SYSTEM_CONFIG_PRINTER_VERSION) +SYSTEM_CONFIG_PRINTER_LICENSE = GPL-2.0+ +SYSTEM_CONFIG_PRINTER_LICENSE_FILES = COPYING +SYSTEM_CONFIG_PRINTER_DEPENDENCIES = \ + cups host-desktop-file-utils $(TARGET_NLS_DEPENDENCIES) host-pkgconf + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +SYSTEM_CONFIG_PRINTER_DEPENDENCIES += libglib2 +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2)$(BR2_PACKAGE_LIBUSB)$(BR2_PACKAGE_HAS_UDEV),yyy) +SYSTEM_CONFIG_PRINTER_CONF_OPTS += --with-udev-rules=yes +SYSTEM_CONFIG_PRINTER_DEPENDENCIES += libusb udev +else +SYSTEM_CONFIG_PRINTER_CONF_OPTS += --with-udev-rules=no +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +SYSTEM_CONFIG_PRINTER_CONF_OPTS += --with-systemdsystemunitdir=/usr/lib/systemd/system +SYSTEM_CONFIG_PRINTER_DEPENDENCIES += systemd +else +SYSTEM_CONFIG_PRINTER_CONF_OPTS += --with-systemdsystemunitdir=no +endif + +$(eval $(autotools-package)) diff --git a/package/systemd-bootchart/Config.in b/package/systemd-bootchart/Config.in new file mode 100644 index 00000000..9af13db1 --- /dev/null +++ b/package/systemd-bootchart/Config.in @@ -0,0 +1,40 @@ +config BR2_PACKAGE_SYSTEMD_BOOTCHART_ARCH_SUPPORTS + bool + # see src/architecture.h + default y if BR2_aarch64 || BR2_aarch64_be + default y if BR2_arm || BR2_armeb + default y if BR2_i386 || BR2_x86_64 + default y if BR2_m68k + default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + default y if BR2_sh + default y if BR2_sparc || BR2_sparc64 + +config BR2_PACKAGE_SYSTEMD_BOOTCHART + bool "systemd-bootchart" + depends on BR2_PACKAGE_SYSTEMD_BOOTCHART_ARCH_SUPPORTS + depends on BR2_INIT_SYSTEMD + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 + help + systemd-bootchart is a tool, usually run at system startup, + that collects the CPU load, disk load, memory usage, as well + as per-process information from a running system. Collected + results are output as an SVG graph. + + systemd-bootchart requires a Linux kernel >= 3.0 with the + following options enabled: + + - CONFIG_SCHEDSTATS + - CONFIG_SCHED_DEBUG + + These options will be automatically enabled by Buildroot if + it is responsible for building the kernel. Otherwise, if you + are building your kernel outside of Buildroot, make sure + these options are enabled. + + http://www.freedesktop.org/software/systemd/man/systemd-bootchart.html + +comment "systemd-bootchart needs a toolchain w/ headers >= 3.17" + depends on BR2_PACKAGE_SYSTEMD_BOOTCHART_ARCH_SUPPORTS + depends on BR2_INIT_SYSTEMD + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 diff --git a/package/systemd-bootchart/systemd-bootchart.hash b/package/systemd-bootchart/systemd-bootchart.hash new file mode 100644 index 00000000..80858832 --- /dev/null +++ b/package/systemd-bootchart/systemd-bootchart.hash @@ -0,0 +1,3 @@ +# sha256 locally computed +sha256 f4cb17b21928e36ec27de5c5294dea6ec1de4acd7ee6c56d6ecc75319cbcaefa systemd-bootchart-233.tar.xz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSE.LGPL2.1 diff --git a/package/systemd-bootchart/systemd-bootchart.mk b/package/systemd-bootchart/systemd-bootchart.mk new file mode 100644 index 00000000..bcc3dbe2 --- /dev/null +++ b/package/systemd-bootchart/systemd-bootchart.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# systemd-bootchart +# +################################################################################ + +SYSTEMD_BOOTCHART_VERSION = 233 +SYSTEMD_BOOTCHART_SOURCE = systemd-bootchart-$(SYSTEMD_BOOTCHART_VERSION).tar.xz +# 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 = LGPL-2.1+ +SYSTEMD_BOOTCHART_LICENSE_FILES = LICENSE.LGPL2.1 +SYSTEMD_BOOTCHART_DEPENDENCIES = systemd + +SYSTEMD_BOOTCHART_CONF_OPTS = --disable-man + +$(eval $(autotools-package)) diff --git a/package/systemd/0001-src-basic-missing_loop.h-fix-missing-LOOP_SET_BLOCK_.patch b/package/systemd/0001-src-basic-missing_loop.h-fix-missing-LOOP_SET_BLOCK_.patch new file mode 100644 index 00000000..0ab5a4e9 --- /dev/null +++ b/package/systemd/0001-src-basic-missing_loop.h-fix-missing-LOOP_SET_BLOCK_.patch @@ -0,0 +1,38 @@ +From 56ab1c54497d9fac74380ff9e11aaf931a917d2b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rapha=C3=ABl=20M=C3=A9lotte?= +Date: Fri, 14 Jun 2024 14:37:29 +0200 +Subject: [PATCH] src/basic/missing_loop.h: fix missing LOOP_SET_BLOCK_SIZE +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Builds with kernels headers < 4.14 fail with: + +../src/shared/loop-util.c: In function ‘loop_configure_fallback’: +../src/shared/loop-util.c:237:31: error: ‘LOOP_SET_BLOCK_SIZE’ undeclared (first use in this function); did you mean ‘LOOP_SET_DIRECT_IO’? + if (ioctl(fd, LOOP_SET_BLOCK_SIZE, (unsigned long) c->block_size) < 0) + ^~~~~~~~~~~~~~~~~~~ + LOOP_SET_DIRECT_IO + +Fixes: https://github.com/systemd/systemd/issues/33341 +Upstream: https://github.com/systemd/systemd/commit/56ab1c54497d9fac74380ff9e11aaf931a917d2b +Signed-off-by: Raphaël Mélotte +--- + src/basic/missing_loop.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/basic/missing_loop.h b/src/basic/missing_loop.h +index b88501d78b..f83a14c914 100644 +--- a/src/basic/missing_loop.h ++++ b/src/basic/missing_loop.h +@@ -29,3 +29,7 @@ assert_cc(LOOP_SET_DIRECT_IO == 0x4C08); + #ifndef LOOP_SET_STATUS_SETTABLE_FLAGS + # define LOOP_SET_STATUS_SETTABLE_FLAGS (LO_FLAGS_AUTOCLEAR | LO_FLAGS_PARTSCAN) + #endif ++ ++#ifndef LOOP_SET_BLOCK_SIZE ++# define LOOP_SET_BLOCK_SIZE 0x4C09 ++#endif +-- +2.34.1 + diff --git a/package/systemd/80-buildroot.preset b/package/systemd/80-buildroot.preset new file mode 100644 index 00000000..778dab38 --- /dev/null +++ b/package/systemd/80-buildroot.preset @@ -0,0 +1,2 @@ +# Higher priority than systemd presets +# This file is currently empty, but is available for demonstration and future use diff --git a/package/systemd/Config.in b/package/systemd/Config.in new file mode 100644 index 00000000..345f0859 --- /dev/null +++ b/package/systemd/Config.in @@ -0,0 +1,626 @@ +config BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS + bool + # see src/basic/architecture.h + default y if BR2_arc + default y if BR2_aarch64 || BR2_aarch64_be + default y if BR2_arm || BR2_armeb + default y if BR2_i386 || BR2_x86_64 + default y if BR2_m68k + default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + default y if BR2_nios2 + default y if BR2_riscv + default y if BR2_sh4 || BR2_sh4eb || BR2_sh4a || BR2_sh4aeb + default y if BR2_sparc || BR2_sparc64 + default y if BR2_s390x + +menuconfig BR2_PACKAGE_SYSTEMD + bool "systemd" + depends on BR2_INIT_SYSTEMD + depends on BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_STATIC_LIBS # kmod + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_TOOLCHAIN_HAS_SSP + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 + depends on BR2_HOST_GCC_AT_LEAST_8 # host-systemd + select BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_DBUS if !BR2_PACKAGE_DBUS_BROKER # runtime + select BR2_PACKAGE_LIBCAP + select BR2_PACKAGE_LIBXCRYPT + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBS + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + select BR2_PACKAGE_UTIL_LINUX_AGETTY + select BR2_PACKAGE_UTIL_LINUX_MOUNT + select BR2_PACKAGE_UTIL_LINUX_FSCK + select BR2_PACKAGE_UTIL_LINUX_SULOGIN + select BR2_PACKAGE_KMOD + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # kmod-tools + select BR2_PACKAGE_KMOD_TOOLS + select BR2_TARGET_TZ_INFO + select BR2_NEEDS_HOST_UTF8_LOCALE + select BR2_PACKAGE_HOST_SYSTEMD # for systemctl preset-all, during target-finalize + help + systemd is a system and service manager for Linux, + compatible with SysV and LSB init scripts. systemd provides + aggressive parallelization capabilities, uses socket and + D-Bus activation for starting services, offers on-demand + starting of daemons, keeps track of processes using Linux + cgroups, supports snapshotting and restoring of the system + state, maintains mount and automount points and implements + an elaborate transactional dependency-based service control + logic. It can work as a drop-in replacement for sysvinit. + + Kernel versions below 4.15 ("recommended baseline") have + significant gaps in functionality and are not recommended + for use with this version of systemd. + + Systemd requires a Linux kernel >= 3.15 with the following + options enabled: + + - CONFIG_DEVTMPFS + - CONFIG_CGROUPS (it is OK to disable all controllers) + - CONFIG_INOTIFY_USER + - CONFIG_SIGNALFD + - CONFIG_TIMERFD + - CONFIG_EPOLL + - CONFIG_UNIX (it requires CONFIG_NET, but every other flag in + it is not necessary) + - CONFIG_SYSFS + - CONFIG_PROC_FS + - CONFIG_FHANDLE (libudev, mount and bind mount handling) + + - CONFIG_NET_NS (Required for PrivateNetwork=, used in some + systemd units) + + - CONFIG_USER_NS (Required for PrivateUsers=) + + - CONFIG_AUTOFS_FS / CONFIG_AUTOFS4_FS + - CONFIG_TMPFS_POSIX_ACL + - CONFIG_TMPFS_XATTR + + These options will be automatically enabled by Buildroot if + it is responsible for building the kernel. Otherwise, if you + are building your kernel outside of Buildroot, make sure + these options are enabled. + + Systemd also provides udev, the userspace device daemon. + + The selection of other packages will enable some features: + + - acl package will add support for multi-seat. + - xz and/or l4 packages will add compression support in + journal and coredump. + - libcurl package will add support for systemd-journal-upload. + - libgcrypt package will add support for journal sealing and + DNSSEC verification in resolved. + + Notice that systemd selects the fsck wrapper from util-linux + but no particular fsck. is selected. You must choose + the apropriate ones (e.g. e2fsck, from the e2fsprogs + package) according to the system configuration. + + https://freedesktop.org/wiki/Software/systemd/ + +if BR2_PACKAGE_SYSTEMD + +config BR2_PACKAGE_PROVIDES_UDEV + default "systemd" + +config BR2_PACKAGE_SYSTEMD_BOOT + bool "systemd-boot" + depends on BR2_i386 || BR2_x86_64 + select BR2_PACKAGE_GNU_EFI + help + systemd-boot is a simple UEFI boot manager which executes + configured EFI images. The default entry is selected by a + configured pattern (glob) or an on-screen menu. + + systemd-boot operates on the EFI System Partition (ESP) + only. Configuration file fragments, kernels, initrds, other + EFI images need to reside on the ESP. Linux kernels need to + be built with CONFIG_EFI_STUB to be able to be directly + executed as an EFI image. + + See the Grub2 help text for details on preparing an EFI + capable disk image using systemd-boot: the instructions are + exactly the same, except that the systemd-boot configuration + files will be located in /loader/ inside the EFI partition. + + https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/ + +config BR2_PACKAGE_SYSTEMD_INITRD + bool "Services for booting from initrd" + help + Install various services that are only useful if systemd is + run from an initrd. + +config BR2_PACKAGE_SYSTEMD_KERNELINSTALL + bool "install kernel-install and related files" + help + kernel-install is used to install and remove kernel and + initramfs images to and from the boot loader partition. + The boot loader partition will usually be one of + /boot, /efi, or /boot/efi. + +config BR2_PACKAGE_SYSTEMD_ANALYZE + bool "systemd-analyze" + help + systemd-analyze may be used to determine system boot-up + performance statistics and retrieve other state and tracing + information from the system and service manager, and to + verify the correctness of unit files. + It is also used to access special functions useful for + advanced system manager debugging. + +config BR2_PACKAGE_SYSTEMD_BOOT_EFI_ARCH + string + default "ia32" if BR2_i386 + default "x64" if BR2_x86_64 + depends on BR2_PACKAGE_SYSTEMD_BOOT + +config BR2_PACKAGE_SYSTEMD_JOURNAL_REMOTE + bool "enable journal remote tools" + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBMICROHTTPD + help + journal remote functionality adds three tools: + + systemd-journal-gatewayd serves journal events over the + network. + + systemd-journal-remote is a command to receive serialized + journal events and store them to journal files. + + systemd-journal-upload will upload journal entries to the + URL specified with --url=. + + https://www.freedesktop.org/software/systemd/man/systemd-journal-gatewayd.service.html + https://www.freedesktop.org/software/systemd/man/systemd-journal-remote.service.html + https://www.freedesktop.org/software/systemd/man/systemd-journal-upload.html + +config BR2_PACKAGE_SYSTEMD_BACKLIGHT + bool "enable backlight support" + help + systemd-backlight is a service that restores the display + backlight brightness at early boot and saves it at shutdown. + + https://www.freedesktop.org/software/systemd/man/systemd-backlight@.service.html + +config BR2_PACKAGE_SYSTEMD_BINFMT + bool "enable binfmt tool" + help + systemd-binfmt is an early boot service that registers + additional binary formats for executables in the kernel. + + http://www.freedesktop.org/software/systemd/man/systemd-binfmt.service.html + +config BR2_PACKAGE_SYSTEMD_COREDUMP + bool "enable coredump hook" + help + systemd-coredump can be used as a helper binary by the + kernel when a user space program receives a fatal signal and + dumps core. + + https://www.freedesktop.org/software/systemd/man/systemd-coredump.html + +config BR2_PACKAGE_SYSTEMD_PSTORE + bool "enable pstore support" + default y + help + When this features is enabled, additional tools and services + are built to support archiving contents of the persistent + storage filesytem. + + https://www.freedesktop.org/software/systemd/man/systemd-pstore.html + +config BR2_PACKAGE_SYSTEMD_FIRSTBOOT + bool "enable firstboot support" + help + systemd-firstboot initializes the most basic system settings + interactively on the first boot. + + https://www.freedesktop.org/software/systemd/man/systemd-firstboot.html + +config BR2_PACKAGE_SYSTEMD_HIBERNATE + bool "enable hibernation support" + select BR2_PACKAGE_SYSTEMD_INITRD + help + When this features is enabled, additional tools and services + are built to support suspending and resuming the system. + + https://www.freedesktop.org/software/systemd/man/systemd-sleep.html + +config BR2_PACKAGE_SYSTEMD_HOMED + bool "enable home daemon" + depends on BR2_TOOLCHAIN_HAS_THREADS # cryptsetup -> lvm2 + depends on BR2_USE_MMU # cryptsetup -> lvm2 + depends on !BR2_STATIC_LIBS # cryptsetup -> lvm2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # cryptsetup -> json-c + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 # fscrypt_key + select BR2_PACKAGE_CRYPTSETUP + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + select BR2_PACKAGE_UTIL_LINUX_LIBFDISK + help + systemd-homed is a system service that may be used to create, + remove, change or inspect home directories. + + https://www.freedesktop.org/software/systemd/man/systemd-homed.service.html + +comment "homed support needs a toolchain w/ threads, dynamic library, kernel headers >= 4.12" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 + +config BR2_PACKAGE_SYSTEMD_HOSTNAMED + bool "enable hostname daemon" + default y + help + systemd-hostnamed is a system service that may be used as a + mechanism to change the system's hostname. + + https://www.freedesktop.org/software/systemd/man/systemd-hostnamed.service.html + +config BR2_PACKAGE_SYSTEMD_HWDB + bool "enable hwdb installation" + default y + help + Enables hardware database installation to /usr/lib/udev/hwdb.d + + Disabling this option improves first boot time (or every boot + time in case of initramfs images) and saves several MB space. + + https://www.freedesktop.org/software/systemd/man/hwdb.html + +config BR2_PACKAGE_SYSTEMD_IMPORTD + bool "enable import daemon" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBGCRYPT + select BR2_PACKAGE_XZ + select BR2_PACKAGE_ZLIB + help + systemd-importd is a system service that manages virtual + machine and container images for systemd-machined and + machinectl. + + https://www.freedesktop.org/software/systemd/man/machinectl.html#Image%20Transfer%20Commands + +config BR2_PACKAGE_SYSTEMD_CATALOGDB + bool "enable journal catalog database installation" + depends on BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW # conflicting tmpfiles magic + help + Build and install the journal catalog database. + + catalog files are used to provide extended and potentially + localized messages for the journal. + + The original catalog files will be built into a DB at + /usr/share/factory/var/lib/systemd/catalog/database. + + https://www.freedesktop.org/wiki/Software/systemd/catalog/ + +config BR2_PACKAGE_SYSTEMD_LOCALED + bool "enable locale daemon" + help + systemd-localed is a system service that may be used as + mechanism to change the system locale settings, as well as + the console key mapping and default X11 key mapping. + + https://www.freedesktop.org/software/systemd/man/systemd-localed.service.html + +config BR2_PACKAGE_SYSTEMD_LOGIND + bool "enable login daemon" + help + systemd-logind is a system service that manages user logins. + + https://www.freedesktop.org/software/systemd/man/systemd-logind.service.html + +config BR2_PACKAGE_SYSTEMD_MACHINED + bool "enable machine daemon" + help + systemd-machined is a system service that keeps track of + virtual machines and containers, and processes belonging to + them. + + https://www.freedesktop.org/software/systemd/man/systemd-machined.service.html + +config BR2_PACKAGE_SYSTEMD_NSRESOURCED + bool "enable nsresourced" + help + systemd-nsresourced is a system service that permits + transient delegation of a a UID/GID range to a user + namespace allocated by a client, via a Varlink IPC API. + + https://www.freedesktop.org/software/systemd/man/systemd-nsresourced.service.html + +config BR2_PACKAGE_SYSTEMD_MYHOSTNAME + bool "enable myhostname NSS plugin" + default y + help + nss-myhostname is a plug-in module for the GNU Name Service + Switch (NSS) functionality of the GNU C Library (glibc), + primarily providing hostname resolution for the locally + configured system hostname as returned by gethostname(2). + + https://www.freedesktop.org/software/systemd/man/nss-myhostname.html + +config BR2_PACKAGE_SYSTEMD_NETWORKD + bool "enable network manager" + default y + help + systemd-networkd is a system service that manages networks. + It detects and configures network devices as they appear, as + well as creating virtual network devices. + + This simple network configuration solution is an alternative + to dhcpcd or ISC dhcp. + + https://www.freedesktop.org/software/systemd/man/systemd-networkd.html + +config BR2_PACKAGE_SYSTEMD_OOMD + bool "enable out-of-memory killer" + help + systemd-oomd is a system service that uses cgroups-v2 and + pressure stall information (PSI) to monitor and take action + on processes before an OOM occurs in kernel space. + + https://www.freedesktop.org/software/systemd/man/systemd-oomd.html + +config BR2_PACKAGE_SYSTEMD_POLKIT + bool "enable polkit support" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # polkit -> c++17 + depends on BR2_TOOLCHAIN_HAS_THREADS # polkit + depends on BR2_USE_WCHAR # libglib2 + depends on !BR2_OPTIMIZE_FAST # polkit -> duktape + select BR2_PACKAGE_POLKIT + help + If enabled, systemd is built with polkit support and policy + files for its services are generated and installed. It is + useful for allowing unprivileged processes to speak to + systemd's many privileged processes. + + https://wiki.freedesktop.org/www/Software/polkit/ + +comment "polkit support needs a toolchain with threads, wchar, gcc >= 7" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \ + !BR2_TOOLCHAIN_HAS_THREADS + +comment "polkit support can't be built with Optimize for fast" + depends on BR2_OPTIMIZE_FAST + +config BR2_PACKAGE_SYSTEMD_PORTABLED + bool "enable portable services" + help + Portable services are systemd services that can be dynamically + attached and detached from the system. + + These services must come with their own root directory which + they are bound to through an automatically generated drop-in. + + They also have restrictions applied by the host system in the + form of profiles. + + This functionality is provided by the system service + systemd-portabled along with the corresponding CLI + portablectl. + + https://systemd.io/PORTABLE_SERVICES/ + +config BR2_PACKAGE_SYSTEMD_QUOTACHECK + bool "enable quotacheck tools" + help + systemd-quotacheck is a service responsible for file system + quota checks. It is run once at boot after all necessary + file systems are mounted. It is pulled in only if at least + one file system has quotas enabled. + + https://www.freedesktop.org/software/systemd/man/systemd-quotacheck.service.html + +config BR2_PACKAGE_SYSTEMD_RANDOMSEED + bool "enable random-seed support" + help + systemd-random-seed is a service that restores the random + seed of the system at early boot and saves it at + shutdown. Saving/restoring the random seed across boots + increases the amount of available entropy early at boot. + + https://www.freedesktop.org/software/systemd/man/systemd-random-seed.service.html + +config BR2_PACKAGE_SYSTEMD_REPART + bool "enable repart support" + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + select BR2_PACKAGE_UTIL_LINUX_LIBFDISK + help + systemd-repart grows and adds partitions to a partition table, + based on the configuration files described in repart.d. + + https://www.freedesktop.org/software/systemd/man/systemd-repart.html + +config BR2_PACKAGE_SYSTEMD_RESOLVED + bool "enable resolve daemon" + default y + help + systemd-resolved is a system service that provides network + name resolution to local applications. It implements a + caching and validating DNS/DNSSEC stub resolver, as well as + an LLMNR resolver and responder. + + https://www.freedesktop.org/software/systemd/man/systemd-resolved.html + +config BR2_PACKAGE_SYSTEMD_RFKILL + bool "enable rfkill tools" + help + systemd-rfkill is a service that restores the RF kill switch + state at early boot and saves it at shutdown. + + https://www.freedesktop.org/software/systemd/man/systemd-rfkill.service.html + +config BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT + bool "enable SMACK support" + select BR2_PACKAGE_ATTR + select BR2_PACKAGE_SMACK + help + Enable support for SMACK, the Simple Mandatory Access + Control Kernel, a minimal approach to Access Control + implemented as a kernel LSM. + + This feature requires a kernel >= 3.8. + + When this feature is enabled, Systemd mounts smackfs and + manages security labels for sockets. + +config BR2_PACKAGE_SYSTEMD_SYSEXT + bool "enable sysext support" + help + systemd-sysext activates/deactivates system extension + images. + + System extension images may – dynamically at runtime — + extend the /usr/ and /opt/ directory hierarchies with + additional files. + + This is particularly useful on immutable system images where + a /usr/ and/or /opt/ hierarchy residing on a read-only file + system shall be extended temporarily at runtime without + making any persistent modifications. + + https://www.freedesktop.org/software/systemd/man/systemd-sysext.html + +config BR2_PACKAGE_SYSTEMD_MOUNTFSD + bool "enable mountfsd support" + help + systemd-mountfsd is a system service that dissects disk + images, and returns mount file descriptors for the file + systems contained therein to clients, via a Varlink IPC + API. + + https://www.freedesktop.org/software/systemd/man/systemd-mountfsd.service.html + +config BR2_PACKAGE_SYSTEMD_SYSUPDATE + bool "enable sysupdate support" + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + select BR2_PACKAGE_UTIL_LINUX_LIBFDISK + help + systemd-sysupdate atomically updates the host OS, container + images, portable service images or other sources, based on + the transfer configuration files described in sysupdate.d. + + Note that the bootloader must be configured specifically to + support the A/B update mechanism defined by sysupdate. Only + systemd-boot does this out of the box. + + https://www.freedesktop.org/software/systemd/man/systemd-sysupdate.html + +config BR2_PACKAGE_SYSTEMD_SYSUSERS + bool "enable sysusers support" + help + systemd-sysusers creates system users and groups, based on + the file format and location specified in sysusers.d(5). + + https://www.freedesktop.org/software/systemd/man/systemd-sysusers.html + +config BR2_PACKAGE_SYSTEMD_TIMEDATED + bool "enable timedate daemon" + default y + help + systemd-timedated is a system service that may be used as a + mechanism to change the system clock and timezone, as well + as to enable/disable NTP time synchronization. + + https://www.freedesktop.org/software/systemd/man/systemd-timedated.service.html + +config BR2_PACKAGE_SYSTEMD_TIMESYNCD + bool "enable timesync daemon" + default y + help + systemd-timesyncd is a service that may be used to + synchronize the local system clock with a Network Time + Protocol server. + + This simple NTP solution is an alternative to sntp/ntpd from + the ntp package. + + https://www.freedesktop.org/software/systemd/man/systemd-timesyncd.html + +config BR2_PACKAGE_SYSTEMD_USERDB + bool "enable userdb daemon" + help + systemd-userdbd is a system service that multiplexes + user/group lookups to all local services that provide JSON + user/group record definitions to the system. In addition it + synthesizes JSON user/group records from classic UNIX/glibc + NSS user/group records in order to provide full backwards + compatibility. + + https://www.freedesktop.org/software/systemd/man/systemd-userdbd.service.html + +config BR2_PACKAGE_SYSTEMD_UTMP + bool "enable utmp support" + help + systemd-update-utmp-runlevel.service is a service that writes + SysV runlevel changes to utmp and wtmp, as well as the audit + logs, as they occur. systemd-update-utmp.service does the + same for system reboots and shutdown requests. + + https://www.freedesktop.org/software/systemd/man/systemd-update-utmp.service.html + + Utmp keeps track of what users do on the system (where they + logged from, on which terminal, ...) along with a general + status of the system (list of reboots, current uptime, current + number of users logged in). + + You should only enable this if your system will have actual + users who log in. + + https://man7.org/linux/man-pages/man5/utmp.5.html + +config BR2_PACKAGE_SYSTEMD_VCONSOLE + bool "enable vconsole tool" + default y + select BR2_PACKAGE_KBD if BR2_PACKAGE_SYSTEMD_VCONSOLE_DEFAULT_KEYMAP != "" + help + systemd-vconsole-setup is an early boot service that + configures the virtual console font and console keymap. + + https://www.freedesktop.org/software/systemd/man/systemd-vconsole-setup.service.html + +config BR2_PACKAGE_SYSTEMD_VCONSOLE_DEFAULT_KEYMAP + string "default keymap" + default "us" + depends on BR2_PACKAGE_SYSTEMD_VCONSOLE + help + Default keymap for the system. Leave empty to not set a + default keymap. + +# See for which architectures QEMU_MACHINE_TYPE is defined in +# src/vmspawn/vmspawn-util.h +config BR2_PACKAGE_SYSTEMD_VMSPAWN_ARCH_SUPPORTS + bool + default y if BR2_aarch64 || BR2_aarch64_be + default y if BR2_arm || BR2_armeb + default y if BR2_i386 + default y if BR2_mips || BR2_mips64 || BR2_mipsel || BR2_mips64el + default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + default y if BR2_riscv + default y if BR2_s390x + default y if BR2_x86_64 + +config BR2_PACKAGE_SYSTEMD_VMSPAWN + bool "enable vmspawn" + depends on BR2_PACKAGE_SYSTEMD_VMSPAWN_ARCH_SUPPORTS + help + systemd-vmspawn may be used to start a virtual machine + from an OS image. In many ways it is similar to + systemd-nspawn, but launches a full virtual machine + instead of using namespaces. + + https://www.freedesktop.org/software/systemd/man/systemd-vmspawn.html + +endif diff --git a/package/systemd/Config.in.host b/package/systemd/Config.in.host new file mode 100644 index 00000000..fdbebaee --- /dev/null +++ b/package/systemd/Config.in.host @@ -0,0 +1,4 @@ +# Select this if you need host systemd tools (e.g. systemctl) +config BR2_PACKAGE_HOST_SYSTEMD + bool + depends on BR2_HOST_GCC_AT_LEAST_8 diff --git a/package/systemd/boot-files/buildroot.conf b/package/systemd/boot-files/buildroot.conf new file mode 100644 index 00000000..16d4d85f --- /dev/null +++ b/package/systemd/boot-files/buildroot.conf @@ -0,0 +1,3 @@ +title Buildroot +linux /bzImage +options root=/dev/sda2 rootwait console=tty1 diff --git a/package/systemd/boot-files/loader.conf b/package/systemd/boot-files/loader.conf new file mode 100644 index 00000000..93b77b8f --- /dev/null +++ b/package/systemd/boot-files/loader.conf @@ -0,0 +1,2 @@ +timeout 3 +default buildroot diff --git a/package/systemd/dhcp.network b/package/systemd/dhcp.network new file mode 100644 index 00000000..9b636fa9 --- /dev/null +++ b/package/systemd/dhcp.network @@ -0,0 +1,4 @@ +[Match] +Name=SYSTEMD_NETWORKD_DHCP_IFACE +[Network] +DHCP=ipv4 diff --git a/package/systemd/systemd.hash b/package/systemd/systemd.hash new file mode 100644 index 00000000..399ac614 --- /dev/null +++ b/package/systemd/systemd.hash @@ -0,0 +1,15 @@ +# sha256 locally computed +sha256 7861d544190f938cac1b242624d78c96fe2ebbc7b72f86166e88b50451c6fa58 systemd-256.4.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 LICENSE.GPL2 +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSE.LGPL2.1 +sha256 e5a8645ad94aab24e312dd0c6be2aa54236eb9374480b1b14ea5c61598874fd5 LICENSES/BSD-2-Clause.txt +sha256 83bb6bd9ccd2cf5230cb1807ed16258289768dc4d9cb80069a814e04415a1275 LICENSES/BSD-3-Clause.txt +sha256 a2010f343487d3f7618affe54f789f5487602331c0a8d03f49e9a7c547cf0499 LICENSES/CC0-1.0.txt +sha256 61778e80a2fd85955b626b29aa2bcf06144c714277bded65633e4a81479d9fb3 LICENSES/LGPL-2.0-or-later.txt +sha256 5bcef4fedbfc08776630e65d5d0d074dd31208037eddb167ca46a9ec4f737764 LICENSES/Linux-syscall-note.txt +sha256 790ac93fb2859097bdda4cf08b5a4feb5e479d0cb2c74f403248241bc3e7c216 LICENSES/lookup3-public-domain.txt +sha256 8a6fc0879cecc0b96bf4c08159b9d733bf0f15fcf32879aec98c4ffd05424554 LICENSES/MIT-0.txt +sha256 b85dcd3e453d05982552c52b5fc9e0bdd6d23c6f8e844b984a88af32570b0cc0 LICENSES/MIT.txt +sha256 2a98749f6bec00dfaed86fa9c1edea871aaae4f11ee4d100b671aaf4ce353a73 LICENSES/murmurhash2-public-domain.txt +sha256 1a7adaa2c86cedfd6c7f5c0c7c72fd6d3e02cd0c9593f21fdb53c89bb2b130ec LICENSES/OFL-1.1.txt +sha256 3df2dfbb09215ab1aecdd3c91d7fbe02fee4a0e75ef8967a25d1a6fe3b8abc06 LICENSES/README.md diff --git a/package/systemd/systemd.mk b/package/systemd/systemd.mk new file mode 100644 index 00000000..5dca8681 --- /dev/null +++ b/package/systemd/systemd.mk @@ -0,0 +1,1045 @@ +################################################################################ +# +# systemd +# +################################################################################ + +# When updating systemd, take care of the following: +# - Check if the requirements have changed (see README), in particular +# arch and headers +# - If yes, propagate the dependencies to BR2_INIT_SYSTEMD +# - If the required kernel options have changed, update the Config.in +# help text and the list of KCONFIG_ENABLE_OPT. +# - Check if there are new meson_options. Make sure all options are set +# explicitly (usually to default value). +# - If there are new services: +# - create new options for them (if they really are optional); +# - create a new _USER if necessary; +# - create new directory (with _PERMISSIONS) if necessary. +# - Diff sysusers.d with the previous version +# - Diff factory/etc/nsswitch.conf with the previous version +# (details are often sprinkled around in README and manpages) +SYSTEMD_VERSION = 256.4 +SYSTEMD_SITE = $(call github,systemd,systemd,v$(SYSTEMD_VERSION)) +SYSTEMD_LICENSE = \ + LGPL-2.1+, \ + GPL-2.0+ (udev), \ + Public Domain (few source files, see LICENSES/README.md), \ + BSD-2-Clause (eBPF instruction mini library), \ + BSD-3-Clause (tools/chromiumos), \ + CC0-1.0 (few source files, see LICENSES/README.md), \ + GPL-2.0 with Linux-syscall-note (linux kernel headers), \ + MIT-0 (few source files, see LICENSES/README.md), \ + MIT (few source files, see LICENSES/README.md), \ + OFL-1.1 (Heebo fonts) +SYSTEMD_LICENSE_FILES = \ + LICENSE.GPL2 \ + LICENSE.LGPL2.1 \ + LICENSES/BSD-2-Clause.txt \ + LICENSES/BSD-3-Clause.txt \ + LICENSES/CC0-1.0.txt \ + LICENSES/LGPL-2.0-or-later.txt \ + LICENSES/Linux-syscall-note.txt \ + LICENSES/lookup3-public-domain.txt \ + LICENSES/MIT-0.txt \ + LICENSES/MIT.txt \ + LICENSES/murmurhash2-public-domain.txt \ + LICENSES/OFL-1.1.txt \ + LICENSES/README.md +SYSTEMD_CPE_ID_VALID = YES +SYSTEMD_INSTALL_STAGING = YES +SYSTEMD_DEPENDENCIES = \ + $(BR2_COREUTILS_HOST_DEPENDENCY) \ + $(if $(BR2_PACKAGE_BASH_COMPLETION),bash-completion) \ + host-gperf \ + host-python-jinja2 \ + kmod \ + libcap \ + libxcrypt \ + util-linux-libs \ + $(TARGET_NLS_DEPENDENCIES) + +SYSTEMD_SELINUX_MODULES = systemd udev xdg + +SYSTEMD_PROVIDES = udev + +SYSTEMD_CONF_OPTS += \ + -Dcreate-log-dirs=false \ + -Ddbus=disabled \ + -Ddbus-interfaces-dir=no \ + -Ddefault-compression='auto' \ + -Ddefault-locale='C.UTF-8' \ + -Ddefault-user-shell=/bin/sh \ + -Dfirst-boot-full-preset=false \ + -Didn=true \ + -Dima=false \ + -Dkexec-path=/usr/sbin/kexec \ + -Dkmod-path=/usr/bin/kmod \ + -Dldconfig=false \ + -Dlink-boot-shared=true \ + -Dloadkeys-path=/usr/bin/loadkeys \ + -Dman=disabled \ + -Dmount-path=/usr/bin/mount \ + -Dvcs-tag=false \ + -Dmode=release \ + -Dnspawn-locale='C.UTF-8' \ + -Dnss-systemd=true \ + -Dpasswdqc=disabled \ + -Dlibfido2=disabled \ + -Dquotacheck-path=/usr/sbin/quotacheck \ + -Dquotaon-path=/usr/sbin/quotaon \ + -Dsetfont-path=/usr/bin/setfont \ + -Dsplit-bin=true \ + -Dsulogin-path=/usr/sbin/sulogin \ + -Dsystem-gid-max=999 \ + -Dsystem-uid-max=999 \ + -Dsysvinit-path= \ + -Dsysvrcnd-path= \ + -Dtests=false \ + -Dfuzz-tests=false \ + -Dinstall-tests=false \ + -Dlog-message-verification=disabled \ + -Dtmpfiles=true \ + -Dukify=disabled \ + -Dbpf-framework=disabled \ + -Dvmlinux-h=disabled \ + -Dumount-path=/usr/bin/umount \ + -Dxenctrl=disabled + +SYSTEMD_CFLAGS = $(TARGET_CFLAGS) +ifeq ($(BR2_OPTIMIZE_FAST),y) +SYSTEMD_CFLAGS += -O3 -fno-finite-math-only +endif + +ifeq ($(BR2_nios2),y) +# Nios2 ld emits warnings, make warnings not to be treated as errors +SYSTEMD_LDFLAGS = $(TARGET_LDFLAGS) -Wl,--no-fatal-warnings +endif + +ifeq ($(BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW),y) +SYSTEMD_JOURNALD_PERMISSIONS = /var/log/journal d 2755 root systemd-journal - - - - - +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +SYSTEMD_DEPENDENCIES += libglib2 +SYSTEMD_CONF_OPTS += -Dglib=enabled +else +SYSTEMD_CONF_OPTS += -Dglib=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBARCHIVE),y) +SYSTEMD_DEPENDENCIES += libarchive +SYSTEMD_CONF_OPTS += -Dlibarchive=enabled +else +SYSTEMD_CONF_OPTS += -Dlibarchive=disabled +endif + +ifeq ($(BR2_PACKAGE_ACL),y) +SYSTEMD_DEPENDENCIES += acl +SYSTEMD_CONF_OPTS += -Dacl=enabled +else +SYSTEMD_CONF_OPTS += -Dacl=disabled +endif + +ifeq ($(BR2_PACKAGE_LESS),y) +SYSTEMD_CONF_OPTS += -Durlify=true +else +SYSTEMD_CONF_OPTS += -Durlify=false +endif + +ifeq ($(BR2_PACKAGE_LIBAPPARMOR),y) +SYSTEMD_DEPENDENCIES += libapparmor +SYSTEMD_CONF_OPTS += -Dapparmor=enabled +else +SYSTEMD_CONF_OPTS += -Dapparmor=disabled +endif + +ifeq ($(BR2_PACKAGE_AUDIT),y) +SYSTEMD_DEPENDENCIES += audit +SYSTEMD_CONF_OPTS += -Daudit=enabled +else +SYSTEMD_CONF_OPTS += -Daudit=disabled +endif + +ifeq ($(BR2_PACKAGE_CRYPTSETUP),y) +SYSTEMD_DEPENDENCIES += cryptsetup +SYSTEMD_CONF_OPTS += -Dlibcryptsetup=enabled -Dlibcryptsetup-plugins=enabled +else +SYSTEMD_CONF_OPTS += -Dlibcryptsetup=disabled -Dlibcryptsetup-plugins=disabled +endif + +ifeq ($(BR2_PACKAGE_ELFUTILS),y) +SYSTEMD_DEPENDENCIES += elfutils +SYSTEMD_CONF_OPTS += -Delfutils=enabled +else +SYSTEMD_CONF_OPTS += -Delfutils=disabled +endif + +ifeq ($(BR2_PACKAGE_IPTABLES),y) +SYSTEMD_DEPENDENCIES += iptables +SYSTEMD_CONF_OPTS += -Dlibiptc=enabled +else +SYSTEMD_CONF_OPTS += -Dlibiptc=disabled +endif + +# Both options can't be selected at the same time so prefer libidn2 +ifeq ($(BR2_PACKAGE_LIBIDN2),y) +SYSTEMD_DEPENDENCIES += libidn2 +SYSTEMD_CONF_OPTS += -Dlibidn2=enabled -Dlibidn=disabled +else ifeq ($(BR2_PACKAGE_LIBIDN),y) +SYSTEMD_DEPENDENCIES += libidn +SYSTEMD_CONF_OPTS += -Dlibidn=enabled -Dlibidn2=disabled +else +SYSTEMD_CONF_OPTS += -Dlibidn=disabled -Dlibidn2=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) +SYSTEMD_DEPENDENCIES += libseccomp +SYSTEMD_CONF_OPTS += -Dseccomp=enabled +else +SYSTEMD_CONF_OPTS += -Dseccomp=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBXKBCOMMON),y) +SYSTEMD_DEPENDENCIES += libxkbcommon +SYSTEMD_CONF_OPTS += -Dxkbcommon=enabled +else +SYSTEMD_CONF_OPTS += -Dxkbcommon=disabled +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +SYSTEMD_DEPENDENCIES += bzip2 +SYSTEMD_CONF_OPTS += -Dbzip2=enabled +else +SYSTEMD_CONF_OPTS += -Dbzip2=disabled +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +SYSTEMD_DEPENDENCIES += zstd +SYSTEMD_CONF_OPTS += -Dzstd=enabled +else +SYSTEMD_CONF_OPTS += -Dzstd=disabled +endif + +ifeq ($(BR2_PACKAGE_LZ4),y) +SYSTEMD_DEPENDENCIES += lz4 +SYSTEMD_CONF_OPTS += -Dlz4=enabled +else +SYSTEMD_CONF_OPTS += -Dlz4=disabled +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +SYSTEMD_DEPENDENCIES += linux-pam +SYSTEMD_CONF_OPTS += -Dpam=enabled +else +SYSTEMD_CONF_OPTS += -Dpam=disabled +endif + +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBFDISK),y) +SYSTEMD_CONF_OPTS += -Dfdisk=enabled +else +SYSTEMD_CONF_OPTS += -Dfdisk=disabled +endif + +ifeq ($(BR2_PACKAGE_KMOD),y) +SYSTEMD_DEPENDENCIES += kmod +SYSTEMD_CONF_OPTS += -Dkmod=enabled +else +SYSTEMD_CONF_OPTS += -Dkmod=disabled +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +SYSTEMD_DEPENDENCIES += xz +SYSTEMD_CONF_OPTS += -Dxz=enabled +else +SYSTEMD_CONF_OPTS += -Dxz=disabled +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +SYSTEMD_DEPENDENCIES += zlib +SYSTEMD_CONF_OPTS += -Dzlib=enabled +else +SYSTEMD_CONF_OPTS += -Dzlib=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +SYSTEMD_DEPENDENCIES += libcurl +SYSTEMD_CONF_OPTS += -Dlibcurl=enabled +else +SYSTEMD_CONF_OPTS += -Dlibcurl=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +SYSTEMD_DEPENDENCIES += libgcrypt +SYSTEMD_CONF_OPTS += -Dgcrypt=enabled +else +SYSTEMD_CONF_OPTS += -Dgcrypt=disabled +endif + +ifeq ($(BR2_PACKAGE_P11_KIT),y) +SYSTEMD_DEPENDENCIES += p11-kit +SYSTEMD_CONF_OPTS += -Dp11kit=enabled +else +SYSTEMD_CONF_OPTS += -Dp11kit=disabled +endif + +ifeq ($(BR2_PACKAGE_PCRE2),y) +SYSTEMD_DEPENDENCIES += pcre2 +SYSTEMD_CONF_OPTS += -Dpcre2=enabled +else +SYSTEMD_CONF_OPTS += -Dpcre2=disabled +endif + +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBBLKID),y) +SYSTEMD_CONF_OPTS += -Dblkid=enabled +else +SYSTEMD_CONF_OPTS += -Dblkid=disabled +endif + +ifeq ($(BR2_PACKAGE_UTIL_LINUX_NOLOGIN),y) +SYSTEMD_CONF_OPTS += -Dnologin-path=/sbin/nologin +else +SYSTEMD_CONF_OPTS += -Dnologin-path=/bin/false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_INITRD),y) +SYSTEMD_CONF_OPTS += -Dinitrd=true +else +SYSTEMD_CONF_OPTS += -Dinitrd=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_KERNELINSTALL),y) +SYSTEMD_CONF_OPTS += -Dkernel-install=true +else +SYSTEMD_CONF_OPTS += -Dkernel-install=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_ANALYZE),y) +SYSTEMD_CONF_OPTS += -Danalyze=true +else +SYSTEMD_CONF_OPTS += -Danalyze=false +endif + +ifeq ($(BR2_PACKAGE_LIBPWQUALITY),y) +SYSTEMD_DEPENDENCIES += libpwquality +SYSTEMD_CONF_OPTS += -Dpwquality=enabled +else +SYSTEMD_CONF_OPTS += -Dpwquality=disabled +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_JOURNAL_REMOTE),y) +# remote also depends on libcurl, this is already added above. +SYSTEMD_DEPENDENCIES += libmicrohttpd +SYSTEMD_CONF_OPTS += -Dremote=enabled -Dmicrohttpd=enabled +SYSTEMD_REMOTE_USER = systemd-journal-remote -1 systemd-journal-remote -1 * - - - systemd Journal Remote +SYSTEMD_UPLOAD_USER = systemd-journal-upload -1 systemd-journal-upload -1 * - - - systemd Journal Upload +else +SYSTEMD_CONF_OPTS += -Dremote=disabled -Dmicrohttpd=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBQRENCODE),y) +SYSTEMD_DEPENDENCIES += libqrencode +SYSTEMD_CONF_OPTS += -Dqrencode=enabled +else +SYSTEMD_CONF_OPTS += -Dqrencode=disabled +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +SYSTEMD_DEPENDENCIES += libselinux +SYSTEMD_CONF_OPTS += -Dselinux=enabled +else +SYSTEMD_CONF_OPTS += -Dselinux=disabled +endif + +ifneq ($(BR2_PACKAGE_LIBGCRYPT)$(BR2_PACKAGE_LIBOPENSSL),) +SYSTEMD_CONF_OPTS += -Ddefault-dnssec=allow-downgrade +else +SYSTEMD_CONF_OPTS += -Ddefault-dnssec=no +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_HWDB),y) +SYSTEMD_CONF_OPTS += -Dhwdb=true +define SYSTEMD_BUILD_HWDB + $(HOST_DIR)/bin/systemd-hwdb update --root $(TARGET_DIR) --strict --usr +endef +SYSTEMD_TARGET_FINALIZE_HOOKS += SYSTEMD_BUILD_HWDB +define SYSTEMD_RM_HWBD_UPDATE_SERVICE + rm -rf $(TARGET_DIR)/usr/lib/systemd/system/systemd-hwdb-update.service \ + $(TARGET_DIR)/usr/lib/systemd/system/*/systemd-hwdb-update.service \ + $(TARGET_DIR)/usr/bin/systemd-hwdb +endef +SYSTEMD_POST_INSTALL_TARGET_HOOKS += SYSTEMD_RM_HWBD_UPDATE_SERVICE +else +SYSTEMD_CONF_OPTS += -Dhwdb=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_BINFMT),y) +SYSTEMD_CONF_OPTS += -Dbinfmt=true +else +SYSTEMD_CONF_OPTS += -Dbinfmt=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_UTMP),y) +SYSTEMD_CONF_OPTS += -Dutmp=true +else +SYSTEMD_CONF_OPTS += -Dutmp=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_VCONSOLE),y) +SYSTEMD_CONF_OPTS += \ + -Dvconsole=true \ + -Ddefault-keymap=$(call qstrip,$(BR2_PACKAGE_SYSTEMD_VCONSOLE_DEFAULT_KEYMAP)) +else +SYSTEMD_CONF_OPTS += -Dvconsole=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_VMSPAWN),y) +SYSTEMD_CONF_OPTS += -Dvmspawn=enabled +else +SYSTEMD_CONF_OPTS += -Dvmspawn=disabled +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_QUOTACHECK),y) +SYSTEMD_CONF_OPTS += -Dquotacheck=true +else +SYSTEMD_CONF_OPTS += -Dquotacheck=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_SYSUSERS),y) +SYSTEMD_CONF_OPTS += -Dsysusers=true +else +SYSTEMD_CONF_OPTS += -Dsysusers=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_SYSUSERS),y) +SYSTEMD_CONF_OPTS += -Dstoragetm=true +else +SYSTEMD_CONF_OPTS += -Dstoragetm=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_FIRSTBOOT),y) +SYSTEMD_CONF_OPTS += -Dfirstboot=true +else +SYSTEMD_CONF_OPTS += -Dfirstboot=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_RANDOMSEED),y) +SYSTEMD_CONF_OPTS += -Drandomseed=true +else +SYSTEMD_CONF_OPTS += -Drandomseed=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_BACKLIGHT),y) +SYSTEMD_CONF_OPTS += -Dbacklight=true +else +SYSTEMD_CONF_OPTS += -Dbacklight=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_RFKILL),y) +SYSTEMD_CONF_OPTS += -Drfkill=true +else +SYSTEMD_CONF_OPTS += -Drfkill=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_LOGIND),y) +SYSTEMD_CONF_OPTS += -Dlogind=true +SYSTEMD_LOGIND_PERMISSIONS = /var/lib/systemd/linger d 755 0 0 - - - - - +else +SYSTEMD_CONF_OPTS += -Dlogind=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_MACHINED),y) +SYSTEMD_CONF_OPTS += -Dmachined=true -Dnss-mymachines=enabled +SYSTEMD_MACHINED_PERMISSIONS = /var/lib/machines d 700 0 0 - - - - - +else +SYSTEMD_CONF_OPTS += -Dmachined=false -Dnss-mymachines=disabled +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_IMPORTD),y) +SYSTEMD_CONF_OPTS += -Dimportd=enabled +else +SYSTEMD_CONF_OPTS += -Dimportd=disabled +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_HOMED),y) +SYSTEMD_CONF_OPTS += -Dhomed=enabled +SYSTEMD_DEPENDENCIES += cryptsetup openssl +SYSTEMD_HOMED_PERMISSIONS = /var/lib/systemd/home d 755 0 0 - - - - - +else +SYSTEMD_CONF_OPTS += -Dhomed=disabled +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_HOSTNAMED),y) +SYSTEMD_CONF_OPTS += -Dhostnamed=true +else +SYSTEMD_CONF_OPTS += -Dhostnamed=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_NSRESOURCED),y) +SYSTEMD_CONF_OPTS += -Dnsresourced=true +else +SYSTEMD_CONF_OPTS += -Dnsresourced=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_MYHOSTNAME),y) +SYSTEMD_CONF_OPTS += -Dnss-myhostname=true +else +SYSTEMD_CONF_OPTS += -Dnss-myhostname=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_TIMEDATED),y) +SYSTEMD_CONF_OPTS += -Dtimedated=true +else +SYSTEMD_CONF_OPTS += -Dtimedated=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_LOCALED),y) +SYSTEMD_CONF_OPTS += -Dlocaled=true +else +SYSTEMD_CONF_OPTS += -Dlocaled=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_REPART),y) +SYSTEMD_CONF_OPTS += -Drepart=enabled +SYSTEMD_DEPENDENCIES += openssl +else +SYSTEMD_CONF_OPTS += -Drepart=disabled +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_MOUNTFSD),y) +SYSTEMD_CONF_OPTS += -Dmountfsd=true +else +SYSTEMD_CONF_OPTS += -Dmountfsd=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_USERDB),y) +SYSTEMD_CONF_OPTS += -Duserdb=true +else +SYSTEMD_CONF_OPTS += -Duserdb=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_COREDUMP),y) +SYSTEMD_CONF_OPTS += -Dcoredump=true +SYSTEMD_COREDUMP_USER = systemd-coredump -1 systemd-coredump -1 * - - - systemd core dump processing +SYSTEMD_COREDUMP_PERMISSIONS = /var/lib/systemd/coredump d 755 0 0 - - - - - +else +SYSTEMD_CONF_OPTS += -Dcoredump=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_PSTORE),y) +SYSTEMD_CONF_OPTS += -Dpstore=true +SYSTEMD_PSTORE_PERMISSIONS = /var/lib/systemd/pstore d 755 0 0 - - - - - +else +SYSTEMD_CONF_OPTS += -Dpstore=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_OOMD),y) +SYSTEMD_CONF_OPTS += -Doomd=true +SYSTEMD_OOMD_USER = systemd-oom -1 systemd-oom -1 * - - - systemd Userspace OOM Killer +define SYSTEMD_OOMD_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_PSI) + $(call KCONFIG_ENABLE_OPT,CONFIG_MEMCG) +endef +else +SYSTEMD_CONF_OPTS += -Doomd=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_POLKIT),y) +SYSTEMD_CONF_OPTS += -Dpolkit=enabled +SYSTEMD_DEPENDENCIES += polkit +else +SYSTEMD_CONF_OPTS += -Dpolkit=disabled +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_PORTABLED),y) +SYSTEMD_CONF_OPTS += -Dportabled=true +else +SYSTEMD_CONF_OPTS += -Dportabled=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_SYSEXT),y) +SYSTEMD_CONF_OPTS += -Dsysext=true +else +SYSTEMD_CONF_OPTS += -Dsysext=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_SYSUPDATE),y) +SYSTEMD_CONF_OPTS += -Dsysupdate=enabled +else +SYSTEMD_CONF_OPTS += -Dsysupdate=disabled +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_NETWORKD),y) +SYSTEMD_CONF_OPTS += -Dnetworkd=true +SYSTEMD_NETWORKD_USER = systemd-network -1 systemd-network -1 * - - - systemd Network Management +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)/ \ + $(SYSTEMD_PKGDIR)/dhcp.network > \ + $(TARGET_DIR)/etc/systemd/network/$(SYSTEMD_NETWORKD_DHCP_IFACE).network +endef +endif +else +SYSTEMD_CONF_OPTS += -Dnetworkd=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_RESOLVED),y) +define SYSTEMD_INSTALL_RESOLVCONF_HOOK + ln -sf ../run/systemd/resolve/resolv.conf \ + $(TARGET_DIR)/etc/resolv.conf +endef +SYSTEMD_CONF_OPTS += -Dnss-resolve=enabled -Dresolve=true +SYSTEMD_RESOLVED_USER = systemd-resolve -1 systemd-resolve -1 * - - - systemd Resolver +else +SYSTEMD_CONF_OPTS += -Dnss-resolve=disabled -Dresolve=false +endif + +ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) +SYSTEMD_CONF_OPTS += \ + -Dgnutls=disabled \ + -Dopenssl=enabled \ + -Ddns-over-tls=openssl \ + -Ddefault-dns-over-tls=opportunistic +SYSTEMD_DEPENDENCIES += openssl +else ifeq ($(BR2_PACKAGE_GNUTLS),y) +SYSTEMD_CONF_OPTS += \ + -Dgnutls=enabled \ + -Dopenssl=disabled \ + -Ddns-over-tls=gnutls \ + -Ddefault-dns-over-tls=opportunistic +SYSTEMD_DEPENDENCIES += gnutls +else +SYSTEMD_CONF_OPTS += \ + -Dgnutls=disabled \ + -Dopenssl=disabled \ + -Ddns-over-tls=false \ + -Ddefault-dns-over-tls=no +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_TIMESYNCD),y) +SYSTEMD_CONF_OPTS += -Dtimesyncd=true +SYSTEMD_TIMESYNCD_USER = systemd-timesync -1 systemd-timesync -1 * - - - systemd Time Synchronization +SYSTEMD_TIMESYNCD_PERMISSIONS = /var/lib/systemd/timesync d 755 systemd-timesync systemd-timesync - - - - - +else +SYSTEMD_CONF_OPTS += -Dtimesyncd=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT),y) +SYSTEMD_CONF_OPTS += -Dsmack=true +else +SYSTEMD_CONF_OPTS += -Dsmack=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_HIBERNATE),y) +SYSTEMD_CONF_OPTS += -Dhibernate=true +else +SYSTEMD_CONF_OPTS += -Dhibernate=false +endif + +ifeq ($(BR2_PACKAGE_TPM2_TSS),y) +SYSTEMD_DEPENDENCIES += tpm2-tss +SYSTEMD_CONF_OPTS += -Dtpm2=enabled +else +SYSTEMD_CONF_OPTS += -Dtpm2=disabled +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_BOOT),y) +SYSTEMD_INSTALL_IMAGES = YES +SYSTEMD_DEPENDENCIES += gnu-efi host-python-pyelftools +SYSTEMD_CONF_OPTS += -Defi=true -Dbootloader=enabled + +SYSTEMD_BOOT_EFI_ARCH = $(call qstrip,$(BR2_PACKAGE_SYSTEMD_BOOT_EFI_ARCH)) +define SYSTEMD_INSTALL_BOOT_FILES + $(INSTALL) -D -m 0644 $(@D)/build/src/boot/efi/systemd-boot$(SYSTEMD_BOOT_EFI_ARCH).efi \ + $(BINARIES_DIR)/efi-part/EFI/BOOT/boot$(SYSTEMD_BOOT_EFI_ARCH).efi + $(INSTALL) -D -m 0644 $(SYSTEMD_PKGDIR)/boot-files/loader.conf \ + $(BINARIES_DIR)/efi-part/loader/loader.conf + $(INSTALL) -D -m 0644 $(SYSTEMD_PKGDIR)/boot-files/buildroot.conf \ + $(BINARIES_DIR)/efi-part/loader/entries/buildroot.conf +endef + +else +SYSTEMD_CONF_OPTS += -Defi=false -Dbootloader=disabled +endif # BR2_PACKAGE_SYSTEMD_BOOT == y + +SYSTEMD_FALLBACK_HOSTNAME = $(call qstrip,$(BR2_TARGET_GENERIC_HOSTNAME)) +ifneq ($(SYSTEMD_FALLBACK_HOSTNAME),) +SYSTEMD_CONF_OPTS += -Dfallback-hostname=$(SYSTEMD_FALLBACK_HOSTNAME) +endif + +SYSTEMD_DEFAULT_TARGET = $(call qstrip,$(BR2_PACKAGE_SYSTEMD_DEFAULT_TARGET)) +ifneq ($(SYSTEMD_DEFAULT_TARGET),) +define SYSTEMD_INSTALL_INIT_HOOK + ln -fs "$(SYSTEMD_DEFAULT_TARGET)" \ + $(TARGET_DIR)/usr/lib/systemd/system/default.target +endef +SYSTEMD_POST_INSTALL_TARGET_HOOKS += SYSTEMD_INSTALL_INIT_HOOK +endif + +define SYSTEMD_INSTALL_MACHINEID_HOOK + touch $(TARGET_DIR)/etc/machine-id +endef + +SYSTEMD_POST_INSTALL_TARGET_HOOKS += \ + SYSTEMD_INSTALL_MACHINEID_HOOK + +define SYSTEMD_INSTALL_IMAGES_CMDS + $(SYSTEMD_INSTALL_BOOT_FILES) +endef + +define SYSTEMD_PERMISSIONS + /boot d 700 0 0 - - - - - + /var/spool d 755 0 0 - - - - - + /var/lib d 755 0 0 - - - - - + /var/lib/private d 700 0 0 - - - - - + /var/log/private d 700 0 0 - - - - - + /var/cache/private d 700 0 0 - - - - - + $(SYSTEMD_JOURNALD_PERMISSIONS) + $(SYSTEMD_LOGIND_PERMISSIONS) + $(SYSTEMD_MACHINED_PERMISSIONS) + $(SYSTEMD_HOMED_PERMISSIONS) + $(SYSTEMD_COREDUMP_PERMISSIONS) + $(SYSTEMD_PSTORE_PERMISSIONS) + $(SYSTEMD_TIMESYNCD_PERMISSIONS) +endef + +define SYSTEMD_USERS + # udev user groups + - - render -1 * - - - DRI rendering nodes + # systemd user groups + - - systemd-journal -1 * - - - Journal + $(SYSTEMD_REMOTE_USER) + $(SYSTEMD_UPLOAD_USER) + $(SYSTEMD_COREDUMP_USER) + $(SYSTEMD_OOMD_USER) + $(SYSTEMD_NETWORKD_USER) + $(SYSTEMD_RESOLVED_USER) + $(SYSTEMD_TIMESYNCD_USER) +endef + +define SYSTEMD_INSTALL_NSSCONFIG_HOOK + $(SED) '/^passwd:/ {/systemd/! s/$$/ systemd/}' \ + -e '/^group:/ {/systemd/! s/$$/ [SUCCESS=merge] systemd/}' \ + -e '/^shadow:/ {/systemd/! s/$$/ systemd/}' \ + -e '/^gshadow:/ {/systemd/! s/$$/ systemd/}' \ + $(if $(BR2_PACKAGE_SYSTEMD_RESOLVED), \ + -e '/^hosts:/ s/[[:space:]]*mymachines//' \ + -e '/^hosts:/ {/resolve/! s/files/resolve [!UNAVAIL=return] files/}' ) \ + $(if $(BR2_PACKAGE_SYSTEMD_MYHOSTNAME), \ + -e '/^hosts:/ {/myhostname/! s/files/files myhostname/}' ) \ + $(if $(BR2_PACKAGE_SYSTEMD_MACHINED), \ + -e '/^hosts:/ {/mymachines/! s/^\(hosts:[[:space:]]*\)/\1mymachines /}' ) \ + $(TARGET_DIR)/etc/nsswitch.conf +endef + +SYSTEMD_TARGET_FINALIZE_HOOKS += \ + SYSTEMD_INSTALL_NSSCONFIG_HOOK \ + SYSTEMD_INSTALL_RESOLVCONF_HOOK + +ifneq ($(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)),) +# systemd provides multiple units to autospawn getty as needed +# * getty@.service to start a getty on normal TTY +# * serial-getty@.service to start a getty on serial lines +# * console-getty.service for generic /dev/console +# * container-getty@.service for a getty on /dev/pts/* +# +# the generator systemd-getty-generator will +# * read the console= kernel command line parameter +# * enable one of the above units depending on what it finds +# +# Systemd defaults to enabling getty@tty1.service +# +# What we want to do +# * Enable a getty on $BR2_TARGET_GENERIC_GETTY_PORT +# * Set the baudrate for all units according to BR2_TARGET_GENERIC_GETTY_BAUDRATE +# * Always enable a getty on the console using systemd-getty-generator +# (backward compatibility with previous releases of buildroot) +# +# What we do +# * disable getty@tty1 (enabled by upstream systemd) +# * enable getty@xxx if $BR2_TARGET_GENERIC_GETTY_PORT is a tty +# * enable serial-getty@xxx for other $BR2_TARGET_GENERIC_GETTY_PORT +# * rewrite baudrates if a baudrate is provided +define SYSTEMD_INSTALL_SERVICE_TTY + mkdir -p $(TARGET_DIR)/usr/lib/systemd/system/getty@.service.d; \ + printf '[Install]\nDefaultInstance=\n' \ + >$(TARGET_DIR)/usr/lib/systemd/system/getty@.service.d/buildroot-console.conf; \ + if [ $(BR2_TARGET_GENERIC_GETTY_PORT) = "console" ]; \ + then \ + : ; \ + elif echo $(BR2_TARGET_GENERIC_GETTY_PORT) | egrep -q 'tty[0-9]*$$'; \ + then \ + printf '[Install]\nDefaultInstance=%s\n' \ + $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)) \ + >$(TARGET_DIR)/usr/lib/systemd/system/getty@.service.d/buildroot-console.conf; \ + else \ + mkdir -p $(TARGET_DIR)/usr/lib/systemd/system/serial-getty@.service.d;\ + printf '[Install]\nDefaultInstance=%s\n' \ + $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)) \ + >$(TARGET_DIR)/usr/lib/systemd/system/serial-getty@.service.d/buildroot-console.conf;\ + fi; \ + if [ $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_BAUDRATE)) -gt 0 ] ; \ + then \ + $(SED) 's/115200/$(BR2_TARGET_GENERIC_GETTY_BAUDRATE),115200/' $(TARGET_DIR)/lib/systemd/system/getty@.service; \ + $(SED) 's/115200/$(BR2_TARGET_GENERIC_GETTY_BAUDRATE),115200/' $(TARGET_DIR)/lib/systemd/system/serial-getty@.service; \ + $(SED) 's/115200/$(BR2_TARGET_GENERIC_GETTY_BAUDRATE),115200/' $(TARGET_DIR)/lib/systemd/system/console-getty@.service; \ + $(SED) 's/115200/$(BR2_TARGET_GENERIC_GETTY_BAUDRATE),115200/' $(TARGET_DIR)/lib/systemd/system/container-getty@.service; \ + fi +endef +endif + +define SYSTEMD_INSTALL_PRESET + $(INSTALL) -D -m 644 $(SYSTEMD_PKGDIR)/80-buildroot.preset $(TARGET_DIR)/usr/lib/systemd/system-preset/80-buildroot.preset +endef + +define SYSTEMD_INSTALL_INIT_SYSTEMD + $(SYSTEMD_INSTALL_PRESET) + $(SYSTEMD_INSTALL_SERVICE_TTY) + $(SYSTEMD_INSTALL_NETWORK_CONFS) +endef + +ifeq ($(BR2_ENABLE_LOCALE_PURGE),y) +# Go through all files with scheme ..catalog +# and remove those where is not in LOCALE_NOPURGE +define SYSTEMD_LOCALE_PURGE_CATALOGS + for cfile in `find $(TARGET_DIR)/usr/lib/systemd/catalog -name '*.*.catalog'`; \ + do \ + basename=$${cfile##*/}; \ + basename=$${basename%.catalog}; \ + langext=$${basename#*.}; \ + [ "$$langext" = "$${basename}" ] && continue; \ + expr '$(LOCALE_NOPURGE)' : ".*\b$${langext}\b" >/dev/null && continue; \ + rm -f "$$cfile"; \ + done +endef +SYSTEMD_ROOTFS_PRE_CMD_HOOKS += SYSTEMD_LOCALE_PURGE_CATALOGS +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_CATALOGDB),y) +define SYSTEMD_UPDATE_CATALOGS + $(HOST_DIR)/bin/journalctl --root=$(TARGET_DIR) --update-catalog + install -D $(TARGET_DIR)/var/lib/systemd/catalog/database \ + $(TARGET_DIR)/usr/share/factory/var/lib/systemd/catalog/database + rm $(TARGET_DIR)/var/lib/systemd/catalog/database + ln -sf /usr/share/factory/var/lib/systemd/catalog/database \ + $(TARGET_DIR)/var/lib/systemd/catalog/database + grep -q '^L /var/lib/systemd/catalog/database' $(TARGET_DIR)/usr/lib/tmpfiles.d/var.conf || \ + printf "\nL /var/lib/systemd/catalog/database\n" >> $(TARGET_DIR)/usr/lib/tmpfiles.d/var.conf +endef +SYSTEMD_ROOTFS_PRE_CMD_HOOKS += SYSTEMD_UPDATE_CATALOGS +endif + +define SYSTEMD_RM_CATALOG_UPDATE_SERVICE + rm -rf $(TARGET_DIR)/usr/lib/systemd/catalog \ + $(TARGET_DIR)/usr/lib/systemd/system/systemd-journal-catalog-update.service \ + $(TARGET_DIR)/usr/lib/systemd/system/*/systemd-journal-catalog-update.service +endef +SYSTEMD_ROOTFS_PRE_CMD_HOOKS += SYSTEMD_RM_CATALOG_UPDATE_SERVICE + +define SYSTEMD_PRESET_ALL + $(HOST_DIR)/bin/systemctl --root=$(TARGET_DIR) preset-all +endef +SYSTEMD_ROOTFS_PRE_CMD_HOOKS += SYSTEMD_PRESET_ALL + +SYSTEMD_CONF_ENV = $(HOST_UTF8_LOCALE_ENV) +SYSTEMD_NINJA_ENV = $(HOST_UTF8_LOCALE_ENV) + +define SYSTEMD_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_DEVTMPFS) + $(call KCONFIG_ENABLE_OPT,CONFIG_CGROUPS) + $(call KCONFIG_ENABLE_OPT,CONFIG_INOTIFY_USER) + $(call KCONFIG_ENABLE_OPT,CONFIG_SIGNALFD) + $(call KCONFIG_ENABLE_OPT,CONFIG_TIMERFD) + $(call KCONFIG_ENABLE_OPT,CONFIG_EPOLL) + $(call KCONFIG_ENABLE_OPT,CONFIG_UNIX) + $(call KCONFIG_ENABLE_OPT,CONFIG_SYSFS) + $(call KCONFIG_ENABLE_OPT,CONFIG_PROC_FS) + $(call KCONFIG_ENABLE_OPT,CONFIG_FHANDLE) + + $(call KCONFIG_DISABLE_OPT,CONFIG_FW_LOADER_USER_HELPER) + + $(call KCONFIG_ENABLE_OPT,CONFIG_DMIID) + + $(call KCONFIG_ENABLE_OPT,CONFIG_BLK_DEV_BSG) + + $(call KCONFIG_ENABLE_OPT,CONFIG_NET_NS) + + $(call KCONFIG_ENABLE_OPT,CONFIG_USER_NS) + + $(call KCONFIG_DISABLE_OPT,CONFIG_SYSFS_DEPRECATED) + + $(call KCONFIG_ENABLE_OPT,CONFIG_IPV6) + $(call KCONFIG_ENABLE_OPT,CONFIG_AUTOFS_FS) + $(call KCONFIG_ENABLE_OPT,CONFIG_AUTOFS4_FS) + $(call KCONFIG_ENABLE_OPT,CONFIG_TMPFS_POSIX_ACL) + $(call KCONFIG_ENABLE_OPT,CONFIG_TMPFS_XATTR) + $(call KCONFIG_ENABLE_OPT,CONFIG_SECCOMP) + $(call KCONFIG_ENABLE_OPT,CONFIG_SECCOMP_FILTER) + $(call KCONFIG_ENABLE_OPT,CONFIG_KCMP) + $(call KCONFIG_ENABLE_OPT,CONFIG_NET_SCHED) + $(call KCONFIG_ENABLE_OPT,CONFIG_NET_SCH_FQ_CODEL) + + $(call KCONFIG_ENABLE_OPT,CONFIG_CGROUP_SCHED) + $(call KCONFIG_ENABLE_OPT,CONFIG_FAIR_GROUP_SCHED) + + $(call KCONFIG_ENABLE_OPT,CONFIG_CFS_BANDWIDTH) + + $(call KCONFIG_ENABLE_OPT,CONFIG_EFIVAR_FS) + $(call KCONFIG_ENABLE_OPT,CONFIG_EFI_PARTITION) + + $(call KCONFIG_ENABLE_OPT,CONFIG_DMI) + $(call KCONFIG_ENABLE_OPT,CONFIG_DMI_SYSFS) + + $(call KCONFIG_DISABLE_OPT,CONFIG_RT_GROUP_SCHED) + + $(SYSTEMD_OOMD_LINUX_CONFIG_FIXUPS) +endef + +# We need a very minimal host variant, so we disable as much as possible. +HOST_SYSTEMD_CONF_OPTS = \ + -Dsplit-bin=true \ + --prefix=/usr \ + --libdir=lib \ + --sysconfdir=/etc \ + --localstatedir=/var \ + -Dcreate-log-dirs=false \ + -Dvcs-tag=false \ + -Dmode=release \ + -Dutmp=false \ + -Dhibernate=false \ + -Dtpm2=disabled \ + -Dldconfig=false \ + -Dresolve=false \ + -Dbootloader=disabled \ + -Defi=false \ + -Dtpm=false \ + -Denvironment-d=false \ + -Dbinfmt=false \ + -Drepart=disabled \ + -Dcoredump=false \ + -Ddbus=disabled \ + -Ddbus-interfaces-dir=no \ + -Dpstore=false \ + -Doomd=false \ + -Dlogind=false \ + -Dhostnamed=false \ + -Dlocaled=false \ + -Dmachined=false \ + -Dpasswdqc=disabled \ + -Dportabled=false \ + -Dsysext=false \ + -Dsysupdate=disabled \ + -Dmountfsd=false \ + -Duserdb=false \ + -Dhomed=disabled \ + -Dnetworkd=false \ + -Dtimedated=false \ + -Dtimesyncd=false \ + -Dremote=disabled \ + -Dcreate-log-dirs=false \ + -Dnsresourced=false \ + -Dnss-myhostname=false \ + -Dnss-mymachines=disabled \ + -Dnss-resolve=disabled \ + -Dnss-systemd=false \ + -Dfirstboot=false \ + -Drandomseed=false \ + -Dbacklight=false \ + -Dvconsole=false \ + -Dvmspawn=disabled \ + -Dquotacheck=false \ + -Dsysusers=false \ + -Dstoragetm=false \ + -Dtmpfiles=true \ + -Dimportd=disabled \ + -Dhwdb=true \ + -Drfkill=false \ + -Dman=disabled \ + -Dhtml=disabled \ + -Dsmack=false \ + -Dpolkit=disabled \ + -Dblkid=disabled \ + -Didn=false \ + -Dadm-group=false \ + -Dwheel-group=false \ + -Dzlib=disabled \ + -Dgshadow=false \ + -Dima=false \ + -Dtests=false \ + -Dfuzz-tests=false \ + -Dinstall-tests=false \ + -Dlog-message-verification=disabled \ + -Dglib=disabled \ + -Dlibarchive=disabled \ + -Dacl=disabled \ + -Dsysvinit-path='' \ + -Dinitrd=false \ + -Dxdg-autostart=false \ + -Dkernel-install=false \ + -Dukify=disabled \ + -Danalyze=false \ + -Dbpf-framework=disabled \ + -Dvmlinux-h=disabled \ + -Dpwquality=disabled \ + -Dmicrohttpd=disabled \ + -Dqrencode=disabled \ + -Dselinux=disabled \ + -Dlibcryptsetup=disabled \ + -Dlibcryptsetup-plugins=disabled \ + -Delfutils=disabled \ + -Dlibiptc=disabled \ + -Dapparmor=disabled \ + -Daudit=disabled \ + -Dxenctrl=disabled \ + -Dlibidn2=disabled \ + -Dlibidn=disabled \ + -Dseccomp=disabled \ + -Dxkbcommon=disabled \ + -Dbzip2=disabled \ + -Dzstd=disabled \ + -Dlz4=disabled \ + -Dpam=disabled \ + -Dfdisk=disabled \ + -Dkmod=disabled \ + -Dxz=disabled \ + -Dlibcurl=disabled \ + -Dgcrypt=disabled \ + -Dgnutls=disabled \ + -Dopenssl=disabled \ + -Dp11kit=disabled \ + -Dlibfido2=disabled \ + -Dpcre2=disabled + +HOST_SYSTEMD_DEPENDENCIES = \ + $(BR2_COREUTILS_HOST_DEPENDENCY) \ + host-util-linux \ + host-patchelf \ + host-libcap \ + host-libxcrypt \ + host-gperf \ + host-python-jinja2 + +HOST_SYSTEMD_NINJA_ENV = DESTDIR=$(HOST_DIR) + +# Fix RPATH After installation +# * systemd provides a install_rpath instruction to meson because the binaries +# need to link with libsystemd which is not in a standard path +# * meson can only replace the RPATH, not append to it +# * the original rpath is thus lost. +# * the original path had been tweaked by buildroot via LDFLAGS to add +# $(HOST_DIR)/lib +# * thus re-tweak rpath after the installation for all binaries that need it +HOST_SYSTEMD_HOST_TOOLS = busctl journalctl systemctl systemd-* udevadm + +define HOST_SYSTEMD_FIX_RPATH + for f in $(addprefix $(HOST_DIR)/bin/,$(HOST_SYSTEMD_HOST_TOOLS)); do \ + [ -e $$f ] || continue; \ + $(HOST_DIR)/bin/patchelf --set-rpath $(HOST_DIR)/lib:$(HOST_DIR)/lib/systemd $${f} \ + || exit 1; \ + done +endef +HOST_SYSTEMD_POST_INSTALL_HOOKS += HOST_SYSTEMD_FIX_RPATH + +$(eval $(meson-package)) +$(eval $(host-meson-package)) diff --git a/package/sysvinit/0001-Makefile-disable-stack-protector-strong.patch b/package/sysvinit/0001-Makefile-disable-stack-protector-strong.patch new file mode 100644 index 00000000..066bdb36 --- /dev/null +++ b/package/sysvinit/0001-Makefile-disable-stack-protector-strong.patch @@ -0,0 +1,33 @@ +From 0759f3f9bb2850df455599e7c82eda4ec804e3b6 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Wed, 10 Mar 2021 22:57:50 +0100 +Subject: [PATCH] Makefile: disable stack-protector-strong + +Fixes: + + .../aarch64-buildroot-linux-uclibc/bin/ld: runlevel.o: in function `main': + runlevel.c:(.text.startup+0x4): undefined reference to `__stack_chk_guard' + .../aarch64-buildroot-linux-uclibc/bin/ld: cannot find -lssp_nonshared + .../aarch64-buildroot-linux-uclibc/bin/ld: cannot find -lssp + +Signed-off-by: Peter Seiderer +--- + src/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/Makefile b/src/Makefile +index 1b368dc..1985929 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -10,7 +10,7 @@ + + CPPFLAGS = + CFLAGS ?= -O2 +-override CFLAGS += -ansi -fomit-frame-pointer -fstack-protector-strong -W -Wall -Wunreachable-code -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -D_XOPEN_SOURCE -D_GNU_SOURCE -DVERSION=\"$(VERSION)\" ++override CFLAGS += -ansi -fomit-frame-pointer -W -Wall -Wunreachable-code -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -D_XOPEN_SOURCE -D_GNU_SOURCE -DVERSION=\"$(VERSION)\" + override CFLAGS += $(shell getconf LFS_CFLAGS) + STATIC = + MANDB := s@^\('\\\\\"\)[^\*-]*-\*- coding: [^[:blank:]]\+ -\*-@\1@ +-- +2.30.1 + diff --git a/package/sysvinit/Config.in b/package/sysvinit/Config.in new file mode 100644 index 00000000..e5ca1d7f --- /dev/null +++ b/package/sysvinit/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_SYSVINIT + bool "sysvinit" + depends on BR2_USE_MMU # fork() + depends on BR2_INIT_SYSV + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + System V style implementation of /sbin/init, parent of all + processes + + http://savannah.nongnu.org/projects/sysvinit diff --git a/package/sysvinit/inittab b/package/sysvinit/inittab new file mode 100644 index 00000000..afc28e6c --- /dev/null +++ b/package/sysvinit/inittab @@ -0,0 +1,32 @@ +# /etc/inittab +# +# This inittab is a basic inittab sample for sysvinit, which mimics +# Buildroot's default inittab for BusyBox. +id:3:initdefault: + +si0::sysinit:/bin/mount -t proc proc /proc +si1::sysinit:/bin/mount -o remount,rw / +si2::sysinit:/bin/mkdir -p /dev/pts /dev/shm +si3::sysinit:/bin/mount -a +si4::sysinit:/bin/mkdir -p /run/lock/subsys +si5::sysinit:/sbin/swapon -a +si6::sysinit:/bin/ln -sf /proc/self/fd /dev/fd 2>/dev/null +si7::sysinit:/bin/ln -sf /proc/self/fd/0 /dev/stdin 2>/dev/null +si8::sysinit:/bin/ln -sf /proc/self/fd/1 /dev/stdout 2>/dev/null +si9::sysinit:/bin/ln -sf /proc/self/fd/2 /dev/stderr 2>/dev/null +si10::sysinit:/bin/hostname -F /etc/hostname +rcS:12345:wait:/etc/init.d/rcS + +# S0:1:respawn:/sbin/getty -L ttyS0 115200 vt100 # GENERIC_SERIAL + +# Stuff to do for the 3-finger salute +#ca::ctrlaltdel:/sbin/reboot + +# Stuff to do before rebooting +shd0:06:wait:/etc/init.d/rcK +shd1:06:wait:/sbin/swapoff -a +shd2:06:wait:/bin/umount -a -r + +# The usual halt or reboot actions +hlt0:0:wait:/sbin/halt -dhp +reb0:6:wait:/sbin/reboot diff --git a/package/sysvinit/sysvinit.hash b/package/sysvinit/sysvinit.hash new file mode 100644 index 00000000..67b0ab38 --- /dev/null +++ b/package/sysvinit/sysvinit.hash @@ -0,0 +1,5 @@ +# Locally computed: +sha256 2a621fe6e4528bc91308b74867ddaaebbdf7753f02395c0c5bae817bd2b7e3a5 sysvinit-3.04.tar.xz + +# Hash for license files: +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/sysvinit/sysvinit.mk b/package/sysvinit/sysvinit.mk new file mode 100644 index 00000000..7f37cea1 --- /dev/null +++ b/package/sysvinit/sysvinit.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# sysvinit +# +################################################################################ + +SYSVINIT_VERSION = 3.04 +SYSVINIT_SOURCE = sysvinit-$(SYSVINIT_VERSION).tar.xz +SYSVINIT_SITE = http://download.savannah.nongnu.org/releases/sysvinit +SYSVINIT_LICENSE = GPL-2.0+ +SYSVINIT_LICENSE_FILES = COPYING +SYSVINIT_CPE_ID_VALID = YES + +SYSVINIT_MAKE_OPTS = SYSROOT=$(STAGING_DIR) + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +SYSVINIT_DEPENDENCIES += libselinux +SYSVINIT_MAKE_OPTS += WITH_SELINUX="yes" +endif + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +SYSVINIT_DEPENDENCIES += libxcrypt +endif + +define SYSVINIT_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) $(SYSVINIT_MAKE_OPTS) -C $(@D)/src +endef + +define SYSVINIT_INSTALL_TARGET_CMDS + for x in halt init shutdown killall5; do \ + $(INSTALL) -D -m 0755 $(@D)/src/$$x $(TARGET_DIR)/sbin/$$x || exit 1; \ + done + $(INSTALL) -D -m 0644 package/sysvinit/inittab $(TARGET_DIR)/etc/inittab + ln -sf /sbin/halt $(TARGET_DIR)/sbin/reboot + ln -sf /sbin/halt $(TARGET_DIR)/sbin/poweroff + ln -sf killall5 $(TARGET_DIR)/sbin/pidof +endef + +ifeq ($(BR2_TARGET_GENERIC_GETTY),y) +define SYSVINIT_SET_GETTY + $(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(shell echo $(SYSTEM_GETTY_PORT) | tail -c+4)::respawn:/sbin/getty -L $(SYSTEM_GETTY_OPTIONS) $(SYSTEM_GETTY_PORT) $(SYSTEM_GETTY_BAUDRATE) $(SYSTEM_GETTY_TERM) #~' \ + $(TARGET_DIR)/etc/inittab +endef +else +define SYSVINIT_SET_GETTY + $(SED) '/# GENERIC_SERIAL$$/s~^.*#~# S0:1:respawn:/sbin/getty -L ttyS0 115200 vt100 #~' \ + $(TARGET_DIR)/etc/inittab +endef +endif # BR2_TARGET_GENERIC_GETTY +SYSVINIT_TARGET_FINALIZE_HOOKS += SYSVINIT_SET_GETTY + +SYSVINIT_TARGET_FINALIZE_HOOKS += SYSTEM_REMOUNT_ROOT_INITTAB + +$(eval $(generic-package)) diff --git a/package/szip/Config.in b/package/szip/Config.in new file mode 100644 index 00000000..5a24362f --- /dev/null +++ b/package/szip/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_SZIP + bool "szip" + help + Szip is an implementation of the extended-Rice lossless + compression algorithm. + + The Consultative Committee on Space Data Systems (CCSDS) has + adopted the extended-Rice algorithm for international + standards for space applications[1,6,7]. Szip is reported to + provide fast and effective compression, specifically for the + EOS data generated by the NASA Earth Observatory System + (EOS)[1]. It was originally developed at University of New + Mexico (UNM) and integrated with HDF4 by UNM researchers and + developers. + + http://www.hdfgroup.org/doc_resource/SZIP diff --git a/package/szip/szip.hash b/package/szip/szip.hash new file mode 100644 index 00000000..5d3ee042 --- /dev/null +++ b/package/szip/szip.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 21ee958b4f2d4be2c9cabfa5e1a94877043609ce86fde5f286f105f7ff84d412 szip-2.1.1.tar.gz +sha256 98cc66747133b26563fefc4630ad4c8c7848c722c7b8a60ecd4afbc4c7d7eb01 COPYING diff --git a/package/szip/szip.mk b/package/szip/szip.mk new file mode 100644 index 00000000..869fc9c3 --- /dev/null +++ b/package/szip/szip.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# szip +# +################################################################################ + +SZIP_VERSION = 2.1.1 +SZIP_SITE = https://docs.hdfgroup.org/archive/support/ftp/lib-external/szip/$(SZIP_VERSION)/src +SZIP_LICENSE = szip license +SZIP_LICENSE_FILES = COPYING +SZIP_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/taglib/Config.in b/package/taglib/Config.in new file mode 100644 index 00000000..6a87a132 --- /dev/null +++ b/package/taglib/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_TAGLIB + bool "taglib" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + help + TagLib is a library for reading and editing the meta-data of + several popular audio formats. Currently it supports both + ID3v1 and ID3v2 for MP3 files, Ogg Vorbis comments and ID3 + tags and Vorbis comments in FLAC, MPC, Speex, WavPack and + TrueAudio files. + + http://taglib.org/ + +comment "taglib needs a toolchain w/ C++, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR diff --git a/package/taglib/taglib.hash b/package/taglib/taglib.hash new file mode 100644 index 00000000..e83aa451 --- /dev/null +++ b/package/taglib/taglib.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 c8da2b10f1bfec2cd7dbfcd33f4a2338db0765d851a50583d410bacf055cfd0b taglib-1.13.1.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPL +sha256 53692a2ed6c6a2c6ec9b32dd0b820dfae91e0a1fcdf625ca9ed0bdf8705fcc4f COPYING.MPL diff --git a/package/taglib/taglib.mk b/package/taglib/taglib.mk new file mode 100644 index 00000000..9bdf05b8 --- /dev/null +++ b/package/taglib/taglib.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# taglib +# +################################################################################ + +TAGLIB_VERSION = 1.13.1 +TAGLIB_SITE = http://taglib.github.io/releases +TAGLIB_INSTALL_STAGING = YES +TAGLIB_LICENSE = LGPL-2.1 or MPL-1.1 +TAGLIB_LICENSE_FILES = COPYING.LGPL COPYING.MPL +TAGLIB_CPE_ID_VENDOR = taglib + +ifeq ($(BR2_PACKAGE_ZLIB),y) +TAGLIB_DEPENDENCIES += zlib +TAGLIB_CONF_OPTS += -DWITH_ZLIB=ON +else +TAGLIB_CONF_OPTS += -DWITH_ZLIB=OFF +endif + +define TAGLIB_REMOVE_DEVFILE + rm -f $(TARGET_DIR)/usr/bin/taglib-config +endef + +TAGLIB_POST_INSTALL_TARGET_HOOKS += TAGLIB_REMOVE_DEVFILE + +$(eval $(cmake-package)) diff --git a/package/tar/0001-lib-getrandom.c-fix-build-with-uclibc-1.0.35.patch b/package/tar/0001-lib-getrandom.c-fix-build-with-uclibc-1.0.35.patch new file mode 100644 index 00000000..fe55e4eb --- /dev/null +++ b/package/tar/0001-lib-getrandom.c-fix-build-with-uclibc-1.0.35.patch @@ -0,0 +1,46 @@ +From a0594387565e1e6b4a8a8ba04ad13b135cc1f0b5 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 1 Apr 2021 07:49:46 +0200 +Subject: [PATCH] lib/getrandom.c: fix build with uclibc < 1.0.35 + +Fix the following build failure with uclibc < 1.0.35 which is raised +since the addition of getrandom module in +https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=682cc4e678aceff32dea2a84b6e5147bdf5a20a7: + +In file included from ./sys/random.h:40, + from getrandom.c:22: +/tmp/instance-0/output-1/per-package/tar/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:27:35: error: unknown type name 'size_t' + 27 | extern int getrandom(void *__buf, size_t count, unsigned int flags) + | ^~~~~~ +/tmp/instance-0/output-1/per-package/tar/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:8:1: note: 'size_t' is defined in header ''; did you forget to '#include '? + 7 | #include + +++ |+#include + 8 | + +This patch is not upstreamable as it is only a workaround for +uclibc < 1.0.35, upstream uclibc has been patched with +https://github.com/wbx-github/uclibc-ng/commit/00972c02c2b6e0a95d5def4a71bdfb188e091782 + +Fixes: + - http://autobuild.buildroot.org/results/f40e09d621ab5ba66dd97138dec174acfb7fda2a + +Signed-off-by: Fabrice Fontaine +--- + gnu/getrandom.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/gnu/getrandom.c b/gnu/getrandom.c +index 41212fb32..0ad3f9648 100644 +--- a/gnu/getrandom.c ++++ b/gnu/getrandom.c +@@ -19,6 +19,7 @@ + + #include + ++#include + #include + + #include +-- +2.30.2 + diff --git a/package/tar/0002-Fix-savannah-bug-#64441.patch b/package/tar/0002-Fix-savannah-bug-#64441.patch new file mode 100644 index 00000000..049e08c2 --- /dev/null +++ b/package/tar/0002-Fix-savannah-bug-#64441.patch @@ -0,0 +1,28 @@ +From 8632df398b2f548465ebe68b8f494c0d6f8d913d Mon Sep 17 00:00:00 2001 +From: Sergey Poznyakoff +Date: Tue, 18 Jul 2023 17:02:23 +0300 +Subject: Fix savannah bug #64441 + +* src/Makefile.am (tar_LDADD): Add libiconv libraries. + +[yann.morin.1998@free.fr: backport from upstream] +Upstream: https://git.savannah.gnu.org/cgit/tar.git/commit/?id=8632df398b2f548465ebe68b8f494c0d6f8d913d +Signed-off-by: Yann E. MORIN +--- + src/Makefile.am | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/Makefile.am b/src/Makefile.am +index 36c9543..e2ec58d 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -52,4 +52,5 @@ AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS) + tar_LDADD = $(LIBS) ../lib/libtar.a ../gnu/libgnu.a\ + $(LIB_ACL) $(LIB_CLOCK_GETTIME) $(LIB_EACCESS)\ + $(LIB_GETRANDOM) $(LIB_HARD_LOCALE) $(FILE_HAS_ACL_LIB) $(LIB_MBRTOWC)\ +- $(LIB_SELINUX) $(LIB_SETLOCALE_NULL) ++ $(LIB_SELINUX) $(LIB_SETLOCALE_NULL) \ ++ $(LIBINTL) $(LIBICONV) +-- +cgit v1.1 + diff --git a/package/tar/0003-tests-fix-LDADD.patch b/package/tar/0003-tests-fix-LDADD.patch new file mode 100644 index 00000000..c00f14d2 --- /dev/null +++ b/package/tar/0003-tests-fix-LDADD.patch @@ -0,0 +1,30 @@ +From 71530f72d21d9af00b5688948111666f62f5ec4b Mon Sep 17 00:00:00 2001 +From: Paul Eggert +Date: Wed, 19 Jul 2023 15:48:25 -0700 +Subject: tests: fix LDADD + +Problem reported by Christian Weisgerber in: +https://lists.gnu.org/r/bug-tar/2023-07/msg00015.html +* tests/Makefile.am (LDADD): Add $(LIBINTL), $(LIBICONV). + +[yann.morin.1998@free.fr: backport from upstream] +Upstream: https://git.savannah.gnu.org/cgit/tar.git/commit/?id=71530f72d21d9af00b5688948111666f62f5ec4b +Signed-off-by: Yann E. MORIN +--- + tests/Makefile.am | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/tests/Makefile.am b/tests/Makefile.am +index 1884b72..b696f01 100644 +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -337,4 +337,5 @@ AM_CPPFLAGS = \ + LDADD = ../gnu/libgnu.a\ + $(LIB_ACL) $(LIB_CLOCK_GETTIME) $(LIB_EACCESS)\ + $(LIB_GETRANDOM) $(LIB_HARD_LOCALE) $(FILE_HAS_ACL_LIB) $(LIB_MBRTOWC)\ +- $(LIB_SELINUX) $(LIB_SETLOCALE_NULL) ++ $(LIB_SELINUX) $(LIB_SETLOCALE_NULL) \ ++ $(LIBINTL) $(LIBICONV) +-- +cgit v1.1 + diff --git a/package/tar/Config.in b/package/tar/Config.in new file mode 100644 index 00000000..caf12d6f --- /dev/null +++ b/package/tar/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_TAR + bool "tar" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + A program that saves many files together into a single tape + or disk archive, and can restore individual files from the + archive. + + http://www.gnu.org/software/tar/ + +comment "tar needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + depends on BR2_USE_MMU + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/package/tar/tar.hash b/package/tar/tar.hash new file mode 100644 index 00000000..108a95ee --- /dev/null +++ b/package/tar/tar.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking signature +sha256 4d62ff37342ec7aed748535323930c7cf94acf71c3591882b26a7ea50f3edc16 tar-1.35.tar.xz +sha256 c77a38fcf25b21fd8209d20d35638744344ded239cfc7df80138bf46d3c6b16d tar-1.35.cpio.gz +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 COPYING diff --git a/package/tar/tar.mk b/package/tar/tar.mk new file mode 100644 index 00000000..ab8d0fc6 --- /dev/null +++ b/package/tar/tar.mk @@ -0,0 +1,82 @@ +################################################################################ +# +# tar +# +################################################################################ + +TAR_VERSION = 1.35 +TAR_SOURCE = tar-$(TAR_VERSION).tar.xz +TAR_SITE = $(BR2_GNU_MIRROR)/tar +TAR_LICENSE = GPL-3.0+ +TAR_LICENSE_FILES = COPYING +TAR_CPE_ID_VENDOR = gnu +TAR_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) +TAR_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) +# 0002-Fix-savannah-bug-#64441.patch +# 0003-tests-fix-LDADD.patch +TAR_AUTORECONF = YES + +# The package is a dependency to ccache so ccache cannot be a dependency +HOST_TAR_ADD_CCACHE_DEPENDENCY = NO + +# busybox installs in /bin, so we need tar to install as well in /bin +# so that we don't end up with two different tar +# +# --disable-year2038: tells the configure script to not abort if the +# system is not Y2038 compliant. tar will support year2038 if the +# system is compliant even with this option passed +TAR_CONF_OPTS = \ + --exec-prefix=/ \ + --disable-year2038 + +ifeq ($(BR2_PACKAGE_ACL),y) +TAR_DEPENDENCIES += acl +TAR_CONF_OPTS += --with-posix-acls +else +TAR_CONF_OPTS += --without-posix-acls +endif + +ifeq ($(BR2_PACKAGE_ATTR),y) +TAR_DEPENDENCIES += attr +TAR_CONF_OPTS += --with-xattrs +else +TAR_CONF_OPTS += --without-xattrs +endif + +$(eval $(autotools-package)) + +# host-tar: use cpio.gz instead of tar.gz to prevent chicken-egg problem +# of needing tar to build tar. +HOST_TAR_SOURCE = tar-$(TAR_VERSION).cpio.gz + +define HOST_TAR_EXTRACT_CMDS + mkdir -p $(@D) + cd $(@D) && \ + $(call suitable-extractor,$(HOST_TAR_SOURCE)) $(TAR_DL_DIR)/$(HOST_TAR_SOURCE) | cpio -i --preserve-modification-time + mv $(@D)/tar-$(HOST_TAR_VERSION)/* $(@D) + rmdir $(@D)/tar-$(HOST_TAR_VERSION) +endef + +HOST_TAR_CONF_OPTS = --without-selinux + +# we are built before ccache +HOST_TAR_CONF_ENV = \ + CC="$(HOSTCC_NOCCACHE)" \ + CXX="$(HOSTCXX_NOCCACHE)" + +# Patches 0002-Fix-savannah-bug-#64441.patch and +# 0003-tests-fix-LDADD.patch are patching Makefile.am, so they do +# require TAR_AUTORECONF = YES above. However, for the host-tar +# package we can't do this: we can't have host-tar depend on +# host-{autoconf,automake,libtool} as those in turn might depend on +# host-tar. Since the patches 0002 and 0003 are only related to +# linking against libiconv, which is only an issue for the target tar, +# we do not autoreconf, and touch the corresponding Makefile.in to +# prevent them from being re-generated. +HOST_TAR_AUTORECONF = NO +define HOST_TAR_NO_AUTORECONF + touch $(@D)/src/Makefile.in $(@D)/tests/Makefile.in +endef +HOST_TAR_POST_PATCH_HOOKS += HOST_TAR_NO_AUTORECONF + +$(eval $(host-autotools-package)) diff --git a/package/targetcli-fb/Config.in b/package/targetcli-fb/Config.in new file mode 100644 index 00000000..eb7528fb --- /dev/null +++ b/package/targetcli-fb/Config.in @@ -0,0 +1,26 @@ +comment "targetcli-fb needs Python, a glibc toolchain, gcc >= 4.9, host gcc >= 8" + depends on !BR2_PACKAGE_PYTHON3 + depends on BR2_USE_MMU + depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS + depends on !BR2_HOST_GCC_AT_LEAST_8 || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_TOOLCHAIN_USES_GLIBC + +config BR2_PACKAGE_TARGETCLI_FB + bool "targetcli-fb" + depends on BR2_PACKAGE_PYTHON3 # python-configshell-fb + depends on BR2_USE_MMU # python-gobject -> gobject-introspection + depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS # python-gobject -> gobject-introspection + depends on BR2_HOST_GCC_AT_LEAST_8 # python-gobject -> gobject-introspection + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # python-gobject -> gobject-introspection + depends on BR2_TOOLCHAIN_USES_GLIBC # python-gobject -> gobject-introspection + select BR2_PACKAGE_PYTHON_CONFIGSHELL_FB + select BR2_PACKAGE_PYTHON_RTSLIB_FB + select BR2_PACKAGE_PYTHON_SIX + select BR2_PACKAGE_PYTHON_GOBJECT + help + targetcli-fb is a command-line interface for configuring the + LIO generic SCSI target, present in 3.x Linux kernel + versions. + + https://github.com/open-iscsi/targetcli-fb diff --git a/package/targetcli-fb/S50target b/package/targetcli-fb/S50target new file mode 100644 index 00000000..3ce55ab4 --- /dev/null +++ b/package/targetcli-fb/S50target @@ -0,0 +1,46 @@ +#!/bin/sh +# +# Restore / clear the Linux "SCSI target" driver configuration with `targetctl` +# + +start() { + local ret + + printf "Restoring target configuration: " + /usr/bin/targetctl restore >/dev/null 2>&1 + ret=$? + echo "done" + + return $ret +} + +stop() { + local ret + + printf "Clearing target configuration: " + /usr/bin/targetctl clear >/dev/null 2>&1 + ret=$? + echo "done" + + return $ret +} + +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/package/targetcli-fb/target.service b/package/targetcli-fb/target.service new file mode 100644 index 00000000..400284ed --- /dev/null +++ b/package/targetcli-fb/target.service @@ -0,0 +1,14 @@ +[Unit] +Description=Restore LIO kernel target configuration +Requires=sys-kernel-config.mount +After=sys-kernel-config.mount network.target local-fs.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/targetctl restore +ExecStop=/usr/bin/targetctl clear +SyslogIdentifier=target + +[Install] +WantedBy=multi-user.target diff --git a/package/targetcli-fb/targetcli-fb.hash b/package/targetcli-fb/targetcli-fb.hash new file mode 100644 index 00000000..1732fa99 --- /dev/null +++ b/package/targetcli-fb/targetcli-fb.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 605f4e4e4e7189d6a03f11a4f55e7ddb4671002d542c2f684f87dd68391dcdc2 targetcli-fb-2.1.58.tar.gz +sha256 5df2a0d87d6c562f0ea11c688ac52532aa28d744cabc7994ff0537f64b3b3320 COPYING diff --git a/package/targetcli-fb/targetcli-fb.mk b/package/targetcli-fb/targetcli-fb.mk new file mode 100644 index 00000000..503b9224 --- /dev/null +++ b/package/targetcli-fb/targetcli-fb.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# targetcli-fb +# +################################################################################ + +# When upgrading the version, be sure to also upgrade python-rtslib-fb +# and python-configshell-fb at the same time. +TARGETCLI_FB_VERSION = 2.1.58 +TARGETCLI_FB_SITE = $(call github,open-iscsi,targetcli-fb,v$(TARGETCLI_FB_VERSION)) +TARGETCLI_FB_LICENSE = Apache-2.0 +TARGETCLI_FB_LICENSE_FILES = COPYING +TARGETCLI_FB_CPE_ID_VALID = YES +TARGETCLI_FB_SETUP_TYPE = setuptools +TARGETCLI_FB_DEPENDENCIES = \ + python-configshell-fb \ + python-gobject \ + python-rtslib-fb \ + python-six + +define TARGETCLI_FB_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/targetcli-fb/S50target \ + $(TARGET_DIR)/etc/init.d/S50target +endef + +define TARGETCLI_FB_INSTALL_INIT_SYSTEMD + $(INSTALL) -m 0644 -D package/targetcli-fb/target.service \ + $(TARGET_DIR)/usr/lib/systemd/system/target.service +endef + +# Targetcli stores its configuration in /etc/target/saveconfig.json +# and complains if the /etc/target/ directory does not exist. +define TARGETCLI_FB_INSTALL_CONF_DIR + $(INSTALL) -m 0755 -d $(TARGET_DIR)/etc/target +endef + +TARGETCLI_FB_POST_INSTALL_TARGET_HOOKS += TARGETCLI_FB_INSTALL_CONF_DIR + +$(eval $(python-package)) diff --git a/package/taskd/0001-Fix-missing-cmakedefine-HAVE_GET_CURRENT_DIR_NAME.patch b/package/taskd/0001-Fix-missing-cmakedefine-HAVE_GET_CURRENT_DIR_NAME.patch new file mode 100644 index 00000000..960c71b9 --- /dev/null +++ b/package/taskd/0001-Fix-missing-cmakedefine-HAVE_GET_CURRENT_DIR_NAME.patch @@ -0,0 +1,28 @@ +From b067ab9bf667bb9257bb9eeaa6bf25f9a1a17f06 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Fri, 6 May 2016 23:35:42 +0200 +Subject: [PATCH] Fix missing cmakedefine HAVE_GET_CURRENT_DIR_NAME +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Jörg Krause +--- + cmake.h.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/cmake.h.in b/cmake.h.in +index 4124ce9..0b8f9d0 100644 +--- a/cmake.h.in ++++ b/cmake.h.in +@@ -51,6 +51,7 @@ + #cmakedefine HAVE_ST_BIRTHTIME + + /* Functions */ ++#cmakedefine HAVE_GET_CURRENT_DIR_NAME + #cmakedefine HAVE_TIMEGM + #cmakedefine HAVE_UUID_UNPARSE_LOWER + +-- +2.8.2 + diff --git a/package/taskd/0002-Use-correct-variables-for-GnuTLS-detection.patch b/package/taskd/0002-Use-correct-variables-for-GnuTLS-detection.patch new file mode 100644 index 00000000..f2365ea2 --- /dev/null +++ b/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/package/taskd/0003-CMakeLists-use-pkg-config-uuid-detection.patch b/package/taskd/0003-CMakeLists-use-pkg-config-uuid-detection.patch new file mode 100644 index 00000000..34139fef --- /dev/null +++ b/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/package/taskd/Config.in b/package/taskd/Config.in new file mode 100644 index 00000000..19d123fb --- /dev/null +++ b/package/taskd/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_TASKD + bool "taskd" + depends on !BR2_STATIC_LIBS # gnutls + depends on BR2_USE_WCHAR # gnutls + depends on BR2_USE_MMU # fork() + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_GNUTLS + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Task management synchronization daemon. + + http://taskwarrior.org/ + +comment "taskd needs a toolchain w/ C++, wchar, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \ + BR2_STATIC_LIBS diff --git a/package/taskd/taskd.hash b/package/taskd/taskd.hash new file mode 100644 index 00000000..d3f8bb25 --- /dev/null +++ b/package/taskd/taskd.hash @@ -0,0 +1,5 @@ +# From http://taskwarrior.org/download/ +sha1 ded339deeee65277e4712f71a9159502f8b20b52 taskd-1.1.0.tar.gz +# Locally calculated +sha256 7b8488e687971ae56729ff4e2e5209ff8806cf8cd57718bfd7e521be130621b4 taskd-1.1.0.tar.gz +sha256 84d1a8c2e6e306864ff350857a36b6c74756e61e2eae6822cf2fa88212720f68 COPYING diff --git a/package/taskd/taskd.mk b/package/taskd/taskd.mk new file mode 100644 index 00000000..b19be689 --- /dev/null +++ b/package/taskd/taskd.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# taskd +# +################################################################################ + +TASKD_VERSION = 1.1.0 +TASKD_SITE = http://taskwarrior.org/download +TASKD_LICENSE = MIT +TASKD_LICENSE_FILES = COPYING +TASKD_DEPENDENCIES = gnutls util-linux host-pkgconf + +$(eval $(cmake-package)) diff --git a/package/tbb/Config.in b/package/tbb/Config.in new file mode 100644 index 00000000..b2e97829 --- /dev/null +++ b/package/tbb/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_TBB + bool "tbb" + # tbb needs fenv.h which is not provided by uclibc + depends on !BR2_TOOLCHAIN_USES_UCLIBC + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr + help + Intel(R) Threading Building Blocks (Intel(R) TBB) lets you + easily write parallel C++ programs that take full advantage + of multicore performance, that are portable, composable and + have future-proof scalability. + + https://www.threadingbuildingblocks.org/ + +comment "tbb needs a glibc or musl toolchain w/ dynamic library, threads, C++" + depends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP + +comment "tbb needs exception_ptr" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/tbb/tbb.hash b/package/tbb/tbb.hash new file mode 100644 index 00000000..14c86068 --- /dev/null +++ b/package/tbb/tbb.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c7bb7aa69c254d91b8f0041a71c5bcc3936acb64408a1719aec0b2b7639dd84f tbb-2021.12.0.tar.gz +sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE.txt diff --git a/package/tbb/tbb.mk b/package/tbb/tbb.mk new file mode 100644 index 00000000..40fcb66d --- /dev/null +++ b/package/tbb/tbb.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# tbb +# +################################################################################ + +TBB_VERSION = 2021.12.0 +TBB_SITE = $(call github,01org,tbb,v$(TBB_VERSION)) +TBB_INSTALL_STAGING = YES +TBB_LICENSE = Apache-2.0 +TBB_LICENSE_FILES = LICENSE.txt +TBB_CPE_ID_VENDOR = intel +TBB_CPE_ID_PRODUCT = threading_building_blocks + +TBB_CONF_OPTS = \ + -DCMAKE_BUILD_TYPE=Release \ + -DTBB_STRICT=OFF \ + -DTBB_TEST=OFF + +$(eval $(cmake-package)) diff --git a/package/tbtools/Config.in b/package/tbtools/Config.in new file mode 100644 index 00000000..0f8980de --- /dev/null +++ b/package/tbtools/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_TBTOOLS + bool "tbtools" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_HOST_RUSTC + help + tbtools is a collection of tools for Linux Thunderbolt/USB4 + development, debugging and validation. + + https://github.com/intel/tbtools + +comment "tbtools needs udev /dev management w/ glibc toolchain" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + depends on !BR2_PACKAGE_HAS_UDEV || !BR2_TOOLCHAIN_USES_GLIBC diff --git a/package/tbtools/tbtools.hash b/package/tbtools/tbtools.hash new file mode 100644 index 00000000..85efbfa4 --- /dev/null +++ b/package/tbtools/tbtools.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 d35c50063b254a561d567926fe8e5280206f6144c12f3f82e832f87392b67510 tbtools-0.4.1-cargo2.tar.gz +sha256 9b16a3add311d607af8d9b348a842a37840d0f47dfcc6cf2a7756ee02c24ed69 LICENSE diff --git a/package/tbtools/tbtools.mk b/package/tbtools/tbtools.mk new file mode 100644 index 00000000..baba0e8a --- /dev/null +++ b/package/tbtools/tbtools.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# tbtools +# +################################################################################ + +TBTOOLS_VERSION = 0.4.1 +TBTOOLS_SITE = $(call github,intel,tbtools,v$(TBTOOLS_VERSION)) +TBTOOLS_LICENSE = MIT +TBTOOLS_LICENSE_FILES = LICENSE +TBTOOLS_DEPENDENCIES = udev + +define TBTOOLS_INSTALL_SCRIPTS + $(MAKE) -C $(@D) PREFIX=$(TARGET_DIR)/usr install-scripts +endef +TBTOOLS_POST_INSTALL_TARGET_HOOKS += TBTOOLS_INSTALL_SCRIPTS + +ifeq ($(BR2_PACKAGE_BASH_COMPLETION),y) +define TBTOOLS_INSTALL_COMPLETION + $(MAKE) -C $(@D) PREFIX=$(TARGET_DIR)/usr install-completion +endef +TBTOOLS_POST_INSTALL_TARGET_HOOKS += TBTOOLS_INSTALL_COMPLETION +endif + +$(eval $(cargo-package)) diff --git a/package/tcf-agent/0001-agent-tcf-services-tcf_elf.c-fix-x86-build.patch b/package/tcf-agent/0001-agent-tcf-services-tcf_elf.c-fix-x86-build.patch new file mode 100644 index 00000000..5f08fa48 --- /dev/null +++ b/package/tcf-agent/0001-agent-tcf-services-tcf_elf.c-fix-x86-build.patch @@ -0,0 +1,60 @@ +From 0a847ca035113540ee44d17f364bf4701fe78355 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 1 Mar 2024 22:31:05 +0100 +Subject: [PATCH] agent/tcf/services/tcf_elf.c: fix x86 build + +Fix the following x86 build failure raised since version 1.8.0 and +https://gitlab.eclipse.org/eclipse/tcf/tcf.agent/-/commit/8df5540c53b862d516ac25f908c2fff4a547b4a6: + +/home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c: In function 'unpack_elf_symbol_info': +/home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c:2079:27: error: 'STT_ARM_16BIT' undeclared (first use in this function) + 2079 | if (info->type == STT_ARM_16BIT) { + | ^~~~~~~~~~~~~ +/home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c:2079:27: note: each undeclared identifier is reported only once for each function it appears in +/home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c: In function 'create_symbol_addr_search_index': +/home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c:2228:78: error: 'STT_ARM_16BIT' undeclared (first use in this function) + 2228 | if (type == STT_FUNC || type == STT_ARM_TFUNC || type == STT_ARM_16BIT) { + | ^~~~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/8388acf59689ed7e621bdf158483e3df1cf9bef7 + +Signed-off-by: Fabrice Fontaine +Upstream: https://gitlab.eclipse.org/eclipse/tcf/tcf.agent/-/merge_requests/1 +--- + agent/tcf/services/tcf_elf.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/agent/tcf/services/tcf_elf.c b/agent/tcf/services/tcf_elf.c +index 1b3900ec..b0b948e4 100644 +--- a/agent/tcf/services/tcf_elf.c ++++ b/agent/tcf/services/tcf_elf.c +@@ -2076,10 +2076,12 @@ void unpack_elf_symbol_info(ELF_Section * sym_sec, U4_T index, ELF_SymbolInfo * + } + + if (file->machine == EM_ARM) { ++#ifdef STT_ARM_16BIT + if (info->type == STT_ARM_16BIT) { + info->type = STT_OBJECT; + info->type16bit = 1; + } ++#endif + if (info->type == STT_ARM_TFUNC) { + info->type = STT_FUNC; + info->type16bit = 1; +@@ -2225,7 +2227,11 @@ static void create_symbol_addr_search_index(ELF_Section * sec) { + } + add = add && type != STT_GNU_IFUNC; + if (add && file->machine == EM_ARM) { +- if (type == STT_FUNC || type == STT_ARM_TFUNC || type == STT_ARM_16BIT) { ++ if (type == STT_FUNC || type == STT_ARM_TFUNC ++#ifdef STT_ARM_16BIT ++ || type == STT_ARM_16BIT ++#endif ++ ) { + addr = addr & ~(U8_T)1; + } + } +-- +2.43.0 + diff --git a/package/tcf-agent/0001-fix-uClibc-ng-compile.patch b/package/tcf-agent/0001-fix-uClibc-ng-compile.patch new file mode 100644 index 00000000..b8f46f3c --- /dev/null +++ b/package/tcf-agent/0001-fix-uClibc-ng-compile.patch @@ -0,0 +1,27 @@ +From a78007cd139e1dea3d893f5fe1d1c3a47503e6a2 Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Sat, 12 Aug 2023 18:27:02 +0200 +Subject: [PATCH] fix uClibc-ng compile + +Signed-off-by: Waldemar Brodkorb +Upstream: N/A only mail available +--- + agent/machine/arm/tcf/cpudefs-mdep.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/agent/machine/arm/tcf/cpudefs-mdep.c b/agent/machine/arm/tcf/cpudefs-mdep.c +index 051631a0..7c4fbf3e 100644 +--- a/agent/machine/arm/tcf/cpudefs-mdep.c ++++ b/agent/machine/arm/tcf/cpudefs-mdep.c +@@ -21,7 +21,7 @@ + + #ifndef USE_getauxval + # include +-# define USE_getauxval (defined(__GLIBC__) && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 16))) ++# define USE_getauxval (defined(__GLIBC__) && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 16)) || (defined(__UCLIBC__) && defined(__HAVE_SHARED__))) + #endif + + #include +-- +2.39.2 + diff --git a/package/tcf-agent/Config.in b/package/tcf-agent/Config.in new file mode 100644 index 00000000..a016871e --- /dev/null +++ b/package/tcf-agent/Config.in @@ -0,0 +1,41 @@ +config BR2_PACKAGE_TCF_AGENT + bool "tcf-agent" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_TCF_AGENT_ARCH_SUPPORTS + depends on BR2_USE_MMU # util-linux + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Target Communication Framework Agent is an example + application using the Target Communication Framework + Library. + + Target Communication Framework is universal, extensible, + simple, lightweight, vendor agnostic framework for tools and + targets to communicate for purpose of debugging, profiling, + code patching and other device software development needs. + + tcf-agent is a daemon, which provides TCF services that can + be used by local and remote clients. + + https://wiki.eclipse.org/TCF + +config BR2_PACKAGE_TCF_AGENT_ARCH + string + default "arm" if BR2_arm || BR2_armeb + default "a64" if BR2_aarch64 || BR2_aarch64_be + default "i686" if BR2_i386 && BR2_ARCH="i686" + default "i386" if BR2_i386 && !BR2_ARCH="i686" + default "x86_64" if BR2_x86_64 + default "powerpc" if BR2_powerpc || BR2_powerpc64 || \ + BR2_powerpc64le + default "microblaze" if BR2_microblaze || BR2_microblazeel + +config BR2_PACKAGE_TCF_AGENT_ARCH_SUPPORTS + bool + default y if BR2_PACKAGE_TCF_AGENT_ARCH != "" + +comment "tcf-agent needs a toolchain w/ threads" + depends on BR2_PACKAGE_TCF_AGENT_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/tcf-agent/S55tcf-agent b/package/tcf-agent/S55tcf-agent new file mode 100644 index 00000000..4418a543 --- /dev/null +++ b/package/tcf-agent/S55tcf-agent @@ -0,0 +1,40 @@ +#!/bin/sh + +DAEMON_PATH=/usr/sbin/tcf-agent +DAEMON_NAME=tcf-agent +DAEMON_ARGS="-L- -l0" + +PIDFILE=/var/run/$DAEMON_NAME.pid +[ -r /etc/default/$DAEMON_NAME ] && . /etc/default/$DAEMON_NAME + +start() { + printf "Starting $DAEMON_NAME: " + start-stop-daemon -S -o -q -p $PIDFILE -m -b \ + -x $DAEMON_PATH -- $DAEMON_ARGS + + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping $DAEMON_NAME: " + start-stop-daemon -K -o -q -p $PIDFILE \ + -x $DAEMON_PATH + + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/package/tcf-agent/tcf-agent.hash b/package/tcf-agent/tcf-agent.hash new file mode 100644 index 00000000..34893d28 --- /dev/null +++ b/package/tcf-agent/tcf-agent.hash @@ -0,0 +1,5 @@ +# Locally computed: +sha256 64131790c7d4636d4abff8516d5b4b6329e4d3e691f44dc604e2c30f55edb0dd org.eclipse.tcf.agent-1.8.0.tar.xz + +# Hash for license files: +sha256 f82d01b74a513bd3504d08136026a5ac2a7e6ff62ebcde391fa74aa222d11ce0 agent/edl-v10.html diff --git a/package/tcf-agent/tcf-agent.mk b/package/tcf-agent/tcf-agent.mk new file mode 100644 index 00000000..cc998d82 --- /dev/null +++ b/package/tcf-agent/tcf-agent.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# tcf-agent +# +################################################################################ + +TCF_AGENT_VERSION = 1.8.0 +TCF_AGENT_SOURCE = org.eclipse.tcf.agent-$(TCF_AGENT_VERSION).tar.xz +TCF_AGENT_SITE = http://git.eclipse.org/c/tcf/org.eclipse.tcf.agent.git/snapshot +# see https://wiki.spdx.org/view/Legal_Team/License_List/Licenses_Under_Consideration +TCF_AGENT_LICENSE = BSD-3-Clause +TCF_AGENT_LICENSE_FILES = agent/edl-v10.html + +TCF_AGENT_DEPENDENCIES = util-linux +TCF_AGENT_SUBDIR = agent + +# there is not much purpose for the shared lib, +# if wont be used (unmodifed) outside the tcf-agent application +TCF_AGENT_CONF_OPTS = \ + -DBUILD_SHARED_LIBS=OFF \ + -DTCF_MACHINE=$(call qstrip,$(BR2_PACKAGE_TCF_AGENT_ARCH)) + +# tcf-agent uses some arm instructions in case getauxval is not available. +# unfortunately the uClibc-ng implementation of getauxval uses some features +# of ld.so to work +ifeq ($(BR2_STATIC_LIBS)$(BR2_TOOLCHAIN_USES_UCLIBC)$(BR2_ARM_INSTRUCTIONS_THUMB),yyy) +TCF_AGENT_CONF_OPTS += -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) -marm" +endif + +define TCF_AGENT_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/tcf-agent/tcf-agent.service \ + $(TARGET_DIR)/usr/lib/systemd/system/tcf-agent.service +endef + +define TCF_AGENT_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/tcf-agent/S55tcf-agent \ + $(TARGET_DIR)/etc/init.d/S55tcf-agent +endef + +$(eval $(cmake-package)) diff --git a/package/tcf-agent/tcf-agent.service b/package/tcf-agent/tcf-agent.service new file mode 100644 index 00000000..8d2023b1 --- /dev/null +++ b/package/tcf-agent/tcf-agent.service @@ -0,0 +1,9 @@ +[Unit] +Description=Target Communication Framework Agent +After=network.target + +[Service] +ExecStart=/usr/sbin/tcf-agent -L- -l0 + +[Install] +WantedBy=multi-user.target diff --git a/package/tcl/Config.in b/package/tcl/Config.in new file mode 100644 index 00000000..adb9f224 --- /dev/null +++ b/package/tcl/Config.in @@ -0,0 +1,40 @@ +comment "tcl needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +config BR2_PACKAGE_TCL + bool "tcl" + # fork() + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS + # See this mailing list thread: + # http://lists.busybox.net/pipermail/buildroot/2015-March/121198.html + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_ZLIB + help + TCL (Tool Command Language) is a simple textual language. + + http://www.tcl.tk + +if BR2_PACKAGE_TCL + +config BR2_PACKAGE_TCL_DEL_ENCODINGS + bool "delete encodings (saves 1.6Mb)" + default y + help + Delete encoding files for TCL. If your programs do not use + various tcl character recoding functions, you may safely + choose Y here. + + It saves approx. 1.6 Mb of space. + +config BR2_PACKAGE_TCL_SHLIB_ONLY + bool "install only shared library" + default y + help + Install only TCL shared library and not binary tcl + interpreter (tclsh). + + Saves ~14kb. + +endif diff --git a/package/tcl/tcl.hash b/package/tcl/tcl.hash new file mode 100644 index 00000000..9e1f8fca --- /dev/null +++ b/package/tcl/tcl.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 5880225babf7954c58d4fb0f5cf6279104ce1cd6aa9b71e9a6322540e1c4de66 tcl8.6.14-src.tar.gz +sha256 c0a69a2bfd757361ec7e6143973b103c90409316b49e9c88db26ad6388e79f16 license.terms diff --git a/package/tcl/tcl.mk b/package/tcl/tcl.mk new file mode 100644 index 00000000..8968f0f2 --- /dev/null +++ b/package/tcl/tcl.mk @@ -0,0 +1,82 @@ +################################################################################ +# +# tcl +# +################################################################################ + +TCL_VERSION_MAJOR = 8.6 +TCL_VERSION = $(TCL_VERSION_MAJOR).14 +TCL_SOURCE = tcl$(TCL_VERSION)-src.tar.gz +TCL_SITE = http://downloads.sourceforge.net/project/tcl/Tcl/$(TCL_VERSION) +TCL_LICENSE = TCL +TCL_LICENSE_FILES = license.terms +TCL_CPE_ID_VENDOR = tcl +TCL_SUBDIR = unix +TCL_INSTALL_STAGING = YES +TCL_AUTORECONF = YES + +TCL_CONF_OPTS = \ + --disable-symbols \ + --disable-langinfo \ + --disable-framework + +HOST_TCL_CONF_OPTS = \ + --disable-symbols \ + --disable-langinfo \ + --disable-framework + +# I haven't found a good way to force pkgs to not build +# or configure without just removing the entire pkg directory. +define HOST_TCL_REMOVE_PACKAGES + rm -fr $(@D)/pkgs/sqlite3* $(@D)/pkgs/tdbc* +endef +HOST_TCL_PRE_CONFIGURE_HOOKS += HOST_TCL_REMOVE_PACKAGES + +# We remove the bundled sqlite as we prefer to not use bundled stuff at all. +define TCL_REMOVE_PACKAGES + rm -fr $(@D)/pkgs/sqlite3* \ + $(if $(BR2_PACKAGE_MARIADB),,$(@D)/pkgs/tdbcmysql*) \ + $(@D)/pkgs/tdbcodbc* \ + $(if $(BR2_PACKAGE_POSTGRESQL),,$(@D)/pkgs/tdbcpostgres*) \ + $(if $(BR2_PACKAGE_SQLITE),,$(@D)/pkgs/tdbcsqlite3*) +endef +TCL_PRE_CONFIGURE_HOOKS += TCL_REMOVE_PACKAGES + +ifeq ($(BR2_PACKAGE_TCL_DEL_ENCODINGS),y) +define TCL_REMOVE_ENCODINGS + rm -rf $(TARGET_DIR)/usr/lib/tcl$(TCL_VERSION_MAJOR)/encoding/* +endef +TCL_POST_INSTALL_TARGET_HOOKS += TCL_REMOVE_ENCODINGS +endif + +ifeq ($(BR2_PACKAGE_TCL_SHLIB_ONLY),y) +define TCL_REMOVE_TCLSH + rm -f $(TARGET_DIR)/usr/bin/tclsh$(TCL_VERSION_MAJOR) +endef +TCL_POST_INSTALL_TARGET_HOOKS += TCL_REMOVE_TCLSH +else +define TCL_SYMLINK_TCLSH + ln -sf tclsh$(TCL_VERSION_MAJOR) $(TARGET_DIR)/usr/bin/tclsh +endef +TCL_POST_INSTALL_TARGET_HOOKS += TCL_SYMLINK_TCLSH +endif + +# Until someone needs it, we don't handle locale installation. tcl has +# a complicated method of translating LANG-style locale names into its internal +# .msg name which makes it difficult to save the correct locales per the +# configured whitelist. +define TCL_REMOVE_EXTRA + rm -fr $(TARGET_DIR)/usr/lib/tclConfig.sh \ + $(TARGET_DIR)/usr/lib/tclooConfig.sh \ + $(TARGET_DIR)/usr/lib/tcl$(TCL_VERSION_MAJOR)/tclAppInit.c \ + $(TARGET_DIR)/usr/lib/tcl$(TCL_VERSION_MAJOR)/msgs +endef +TCL_POST_INSTALL_TARGET_HOOKS += TCL_REMOVE_EXTRA + +TCL_DEPENDENCIES = $(if $(BR2_PACKAGE_SQLITE),sqlite) \ + $(if $(BR2_PACKAGE_MARIADB),mariadb) \ + $(if $(BR2_PACKAGE_POSTGRESQL),postgresql) \ + zlib + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/tclap/Config.in b/package/tclap/Config.in new file mode 100644 index 00000000..64b0b74c --- /dev/null +++ b/package/tclap/Config.in @@ -0,0 +1,18 @@ +comment "tclap needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_TCLAP + bool "tclap" + depends on BR2_INSTALL_LIBSTDCPP + help + This is a small, flexible library that provides a simple + interface for defining and accessing command line + arguments. It was initially inspired by the user friendly + CLAP library. The difference is that this library is + templatized, so the argument class is type independent. Type + independence avoids identical-except-for-type objects, such + as IntArg, FloatArg, and StringArg. While the library is not + strictly compliant with the GNU or POSIX standards, it is + close. + + http://tclap.sourceforge.net/ diff --git a/package/tclap/tclap.hash b/package/tclap/tclap.hash new file mode 100644 index 00000000..fdfd46a2 --- /dev/null +++ b/package/tclap/tclap.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 634c5b59dbb1ccbc9d6a5f6de494a257e29a3f59dcb6fc30445ff39b45188574 tclap-1.2.4.tar.gz +sha256 cd81a61d47aeb1ed63036ca260baee37719923bbd7ebd988ec4edae128f3b6eb COPYING diff --git a/package/tclap/tclap.mk b/package/tclap/tclap.mk new file mode 100644 index 00000000..665bec2d --- /dev/null +++ b/package/tclap/tclap.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# tclap +# +################################################################################ + +TCLAP_VERSION = 1.2.4 +TCLAP_SITE = http://downloads.sourceforge.net/project/tclap +TCLAP_LICENSE = MIT +TCLAP_LICENSE_FILES = COPYING +TCLAP_INSTALL_STAGING = YES +TCLAP_CPE_ID_VALID = YES + +# This package is a pure C++ template library, only made of headers. +TCLAP_INSTALL_TARGET = NO + +$(eval $(autotools-package)) diff --git a/package/tcllib/Config.in b/package/tcllib/Config.in new file mode 100644 index 00000000..3a307b9a --- /dev/null +++ b/package/tcllib/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_TCLLIB + bool "tcllib" + help + Tcllib is a collection of utility modules for Tcl. These + modules provide a wide variety of functionality, from + implementations of standard data structures to + implementations of common networking protocols. The intent + is to collect commonly used function into a single library, + which users can rely on to be available and stable + + https://www.tcl.tk/software/tcllib/ diff --git a/package/tcllib/tcllib.hash b/package/tcllib/tcllib.hash new file mode 100644 index 00000000..fe0ece23 --- /dev/null +++ b/package/tcllib/tcllib.hash @@ -0,0 +1,5 @@ +# From https://core.tcl-lang.org/tcllib/uv/tcllib-1.21.SHA256 +sha256 10c7749e30fdd6092251930e8a1aa289b193a3b7f1abf17fee1d4fa89814762f tcllib-1.21.tar.xz + +# Locally computed: +sha256 38e1f556213f4008cfd280457af57c76a1fe043dc026ece1c704c09b5f6e865c license.terms diff --git a/package/tcllib/tcllib.mk b/package/tcllib/tcllib.mk new file mode 100644 index 00000000..1f2b575b --- /dev/null +++ b/package/tcllib/tcllib.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# tcllib +# +################################################################################ + +TCLLIB_VERSION = 1.21 +TCLLIB_SOURCE = tcllib-$(TCLLIB_VERSION).tar.xz +TCLLIB_SITE = http://downloads.sourceforge.net/project/tcllib/tcllib/$(TCLLIB_VERSION) +TCLLIB_LICENSE = TCL +TCLLIB_LICENSE_FILES = license.terms +TCLLIB_DEPENDENCIES = host-tcl +TCLLIB_CONF_ENV = ac_cv_path_tclsh="$(HOST_DIR)/bin/tclsh$(TCL_VERSION_MAJOR)" + +$(eval $(autotools-package)) diff --git a/package/tcpdump/Config.in b/package/tcpdump/Config.in new file mode 100644 index 00000000..74294713 --- /dev/null +++ b/package/tcpdump/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_TCPDUMP + bool "tcpdump" + select BR2_PACKAGE_LIBPCAP + help + A tool for network monitoring and data acquisition. + + https://www.tcpdump.org/ + +if BR2_PACKAGE_TCPDUMP + +config BR2_PACKAGE_TCPDUMP_SMB + bool "smb dump support" + help + enable possibly-buggy SMB printer + +endif diff --git a/package/tcpdump/tcpdump.hash b/package/tcpdump/tcpdump.hash new file mode 100644 index 00000000..1a228898 --- /dev/null +++ b/package/tcpdump/tcpdump.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature at +# https://www.tcpdump.org/release/tcpdump-4.99.3.tar.gz.sig +# using key 1F166A5742ABB9E0249A8D30E089DEF1D9C15D0D +sha256 0232231bb2f29d6bf2426e70a08a7e0c63a0d59a9b44863b7f5e2357a6e49fea tcpdump-4.99.4.tar.gz +sha256 8a54594d257e14a5260ac770f1633516cb51e3fc28c40136ce2697014eda7afd LICENSE diff --git a/package/tcpdump/tcpdump.mk b/package/tcpdump/tcpdump.mk new file mode 100644 index 00000000..91643e7b --- /dev/null +++ b/package/tcpdump/tcpdump.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# tcpdump +# +################################################################################ + +TCPDUMP_VERSION = 4.99.4 +TCPDUMP_SITE = https://www.tcpdump.org/release +TCPDUMP_LICENSE = BSD-3-Clause +TCPDUMP_LICENSE_FILES = LICENSE +TCPDUMP_CPE_ID_VENDOR = tcpdump +TCPDUMP_CONF_ENV = \ + ac_cv_linux_vers=2 \ + td_cv_buggygetaddrinfo=no \ + PCAP_CONFIG=$(STAGING_DIR)/usr/bin/pcap-config +TCPDUMP_CONF_OPTS = \ + --without-crypto \ + --disable-local-libpcap \ + $(if $(BR2_PACKAGE_TCPDUMP_SMB),--enable-smb,--disable-smb) +TCPDUMP_DEPENDENCIES = libpcap host-pkgconf +TCPDUMP_SELINUX_MODULES = netutils + +# make install installs an unneeded extra copy of the tcpdump binary +define TCPDUMP_REMOVE_DUPLICATED_BINARY + rm -f $(TARGET_DIR)/usr/bin/tcpdump.$(TCPDUMP_VERSION) +endef + +TCPDUMP_POST_INSTALL_TARGET_HOOKS += TCPDUMP_REMOVE_DUPLICATED_BINARY + +$(eval $(autotools-package)) diff --git a/package/tcping/Config.in b/package/tcping/Config.in new file mode 100644 index 00000000..c963e681 --- /dev/null +++ b/package/tcping/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_TCPING + bool "tcping" + help + tcping does a TCP connect to the given ip/port + combination. The user can specify a timeout in seconds. This + is useful in shell scripts running in firewalled + environments. Often SYNs are just being dropped by + firewalls, thus connection establishment will be retried + several times (for minutes) until a TCP timeout is + reached. With tcping it is possible to check first if the + desired port is reachable and then start connection + establishment. + + https://github.com/mkirchner/tcping diff --git a/package/tcping/tcping.hash b/package/tcping/tcping.hash new file mode 100644 index 00000000..f706599c --- /dev/null +++ b/package/tcping/tcping.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b8aa427420fe00173b5a2c0013d78e52b010350f5438bf5903c1942cba7c39c9 tcping-2.1.0.tar.gz +sha256 4a35620e27ddb8de27898e4206c8f93633d877c1e128e98e95a035f760d94428 LICENSE diff --git a/package/tcping/tcping.mk b/package/tcping/tcping.mk new file mode 100644 index 00000000..9a068f56 --- /dev/null +++ b/package/tcping/tcping.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# tcping +# +################################################################################ + +TCPING_VERSION = 2.1.0 +TCPING_SITE = $(call github,mkirchner,tcping,$(TCPING_VERSION)) +TCPING_LICENSE = MIT +TCPING_LICENSE_FILES = LICENSE + +define TCPING_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" CCFLAGS="$(TARGET_CFLAGS) $(TARGET_LDFLAGS)" \ + -C $(@D) tcping.linux +endef + +define TCPING_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/tcping $(TARGET_DIR)/usr/bin/tcping +endef + +$(eval $(generic-package)) diff --git a/package/tcpreplay/Config.in b/package/tcpreplay/Config.in new file mode 100644 index 00000000..9e550911 --- /dev/null +++ b/package/tcpreplay/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_TCPREPLAY + bool "tcpreplay" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_MUSL_FTS if !BR2_TOOLCHAIN_USES_GLIBC + help + Tcpreplay is a tool for replaying network traffic from files + saved with tcpdump or other tools which write pcap(3) files. + + http://tcpreplay.appneta.com/ diff --git a/package/tcpreplay/tcpreplay.hash b/package/tcpreplay/tcpreplay.hash new file mode 100644 index 00000000..e73e2d2c --- /dev/null +++ b/package/tcpreplay/tcpreplay.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +# https://github.com/appneta/tcpreplay/releases/download/v4.4.4/tcpreplay-4.4.4.tar.xz.asc +# using key 84E4FA215C934A7D97DC76D5E9E2149793BDE17E +sha256 3ff9753cc43bb15e77832cee657e3030dbcdd957fa247e6abacc605689e24051 tcpreplay-4.4.4.tar.xz +sha256 07cf5e92d475287a7d1663b33097f40cae5adf03ed8920fcd4374e3dfb48c8ad docs/LICENSE diff --git a/package/tcpreplay/tcpreplay.mk b/package/tcpreplay/tcpreplay.mk new file mode 100644 index 00000000..c5b3f9ba --- /dev/null +++ b/package/tcpreplay/tcpreplay.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# tcpreplay +# +################################################################################ + +TCPREPLAY_VERSION = 4.4.4 +TCPREPLAY_SITE = https://github.com/appneta/tcpreplay/releases/download/v$(TCPREPLAY_VERSION) +TCPREPLAY_SOURCE = tcpreplay-$(TCPREPLAY_VERSION).tar.xz +TCPREPLAY_LICENSE = GPL-3.0 +TCPREPLAY_LICENSE_FILES = docs/LICENSE +TCPREPLAY_CPE_ID_VENDOR = broadcom +TCPREPLAY_CONF_ENV = \ + ac_cv_path_ac_pt_PCAP_CONFIG="$(STAGING_DIR)/usr/bin/pcap-config" \ + LIBS="$(TCPREPLAY_LIBS)" +TCPREPLAY_CONF_OPTS = --with-libpcap=$(STAGING_DIR)/usr \ + --enable-pcapconfig +TCPREPLAY_DEPENDENCIES = libpcap + +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),) +TCPREPLAY_DEPENDENCIES += musl-fts +TCPREPLAY_LIBS += -lfts +endif + +ifeq ($(BR2_STATIC_LIBS),y) +TCPREPLAY_CONF_OPTS += --enable-dynamic-link=no +TCPREPLAY_LIBS += `$(STAGING_DIR)/usr/bin/pcap-config --static --libs` +endif + +ifeq ($(BR2_PACKAGE_LIBDNET),y) +TCPREPLAY_DEPENDENCIES += libdnet +TCPREPLAY_CONF_OPTS += --with-libdnet=$(STAGING_DIR)/usr +else +TCPREPLAY_CONF_OPTS += --without-libdnet +endif + +ifeq ($(BR2_PACKAGE_TCPDUMP),y) +TCPREPLAY_CONF_ENV += ac_cv_path_tcpdump_path=/usr/sbin/tcpdump +else +TCPREPLAY_CONF_ENV += ac_cv_path_tcpdump_path=no +endif + +$(eval $(autotools-package)) diff --git a/package/tealdeer/Config.in b/package/tealdeer/Config.in new file mode 100644 index 00000000..662a937c --- /dev/null +++ b/package/tealdeer/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_TEALDEER + bool "tealdeer" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + # Crypto dependency (ring) not available for mips, PowerPC, Sparc, s390x + depends on !(BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el) + depends on !(BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le) + depends on !(BR2_sparc || BR2_sparc64) + depends on !BR2_s390x + select BR2_PACKAGE_HOST_RUSTC + help + A fast and full-featured tldr client. tldr pages are + simplified and community-driven man pages, see + https://tldr.sh/ for more information. + + https://github.com/dbrgn/tealdeer/ diff --git a/package/tealdeer/tealdeer.hash b/package/tealdeer/tealdeer.hash new file mode 100644 index 00000000..f5493ec8 --- /dev/null +++ b/package/tealdeer/tealdeer.hash @@ -0,0 +1,4 @@ +# Locally generated +sha256 f0be09eed89d25e44f954e9c25476176d9e4acc15171ae93b5977d7f244851ba tealdeer-1.6.1-cargo2.tar.gz +sha256 62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a LICENSE-APACHE +sha256 a313b5e62b80a08f3aae0fa62ff3de8482ef55247299eb352ab44f87ef456b1b LICENSE-MIT diff --git a/package/tealdeer/tealdeer.mk b/package/tealdeer/tealdeer.mk new file mode 100644 index 00000000..aabfe298 --- /dev/null +++ b/package/tealdeer/tealdeer.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# tealdeer +# +################################################################################ + +TEALDEER_VERSION = 1.6.1 +TEALDEER_SITE = $(call github,dbrgn,tealdeer,v$(TEALDEER_VERSION)) +TEALDEER_LICENSE = Apache-2.0 or MIT +TEALDEER_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT + +$(eval $(cargo-package)) diff --git a/package/tegrarcm/Config.in.host b/package/tegrarcm/Config.in.host new file mode 100644 index 00000000..937d81bd --- /dev/null +++ b/package/tegrarcm/Config.in.host @@ -0,0 +1,13 @@ +config BR2_PACKAGE_HOST_TEGRARCM + bool "host tegrarcm" + depends on BR2_arm || BR2_armeb + depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb + help + This program is used to send code to a Tegra device in + recovery mode. + + https://github.com/NVIDIA/tegrarcm + +comment "host tegrarcm needs a toolchain w/ host gcc >= 4.9" + depends on BR2_arm || BR2_armeb + depends on !BR2_HOST_GCC_AT_LEAST_4_9 diff --git a/package/tegrarcm/tegrarcm.hash b/package/tegrarcm/tegrarcm.hash new file mode 100644 index 00000000..38ff2809 --- /dev/null +++ b/package/tegrarcm/tegrarcm.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 08329ee0247499b28ec37b0cc639f35443792dfb9bc4a8a182eea63dae6f64ea tegrarcm-1.8.tar.gz +sha256 5f20d276321cb37346d911712a813cb7ce4c8e3a570bffc919bec820eeef13f6 LICENSE diff --git a/package/tegrarcm/tegrarcm.mk b/package/tegrarcm/tegrarcm.mk new file mode 100644 index 00000000..3ec5ea94 --- /dev/null +++ b/package/tegrarcm/tegrarcm.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# tegrarcm +# +################################################################################ + +TEGRARCM_VERSION = 1.8 +TEGRARCM_SITE = $(call github,NVIDIA,tegrarcm,v$(TEGRARCM_VERSION)) +TEGRARCM_LICENSE = BSD-3-Clause / NVIDIA Software License (src/miniloader) +TEGRARCM_LICENSE_FILES = LICENSE +TEGRARCM_AUTORECONF = YES +HOST_TEGRARCM_DEPENDENCIES = host-libusb host-pkgconf host-cryptopp + +$(eval $(host-autotools-package)) diff --git a/package/tekui/Config.in b/package/tekui/Config.in new file mode 100644 index 00000000..067a6dd7 --- /dev/null +++ b/package/tekui/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_TEKUI + bool "tekui" + depends on !BR2_STATIC_LIBS + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_LUAFILESYSTEM # runtime only + select BR2_PACKAGE_LUAEXPAT # runtime only + select BR2_PACKAGE_LUASOCKET # runtime only + select BR2_PACKAGE_LUAPOSIX # runtime only + help + TekUI is a small, freestanding and portable graphical user + interface (GUI) toolkit written in Lua and C. It was + initially developed for the X Window System and has been + ported to DirectFB, Windows, Nano-X and a raw framebuffer + since + + http://tekui.neoscientists.org/ + +comment "tekui needs a Lua interpreter and a toolchain w/ threads, dynamic library" + depends on !BR2_PACKAGE_HAS_LUAINTERPRETER || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/package/tekui/tekui.hash b/package/tekui/tekui.hash new file mode 100644 index 00000000..f82e7503 --- /dev/null +++ b/package/tekui/tekui.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 28abfaacc0f2ddae962afbbca862a7fb619c33a99a497be9edd746091013dd7f tekui-1.12.tgz +sha256 92cdb348af49efe4c769ccbaeb34a23be084ddda408eace8f1a3a2c5dd4aad14 COPYRIGHT diff --git a/package/tekui/tekui.mk b/package/tekui/tekui.mk new file mode 100644 index 00000000..3cb7ff51 --- /dev/null +++ b/package/tekui/tekui.mk @@ -0,0 +1,69 @@ +################################################################################ +# +# tekui +# +################################################################################ + +TEKUI_VERSION = 1.12 +TEKUI_SOURCE = tekui-$(TEKUI_VERSION).tgz +TEKUI_SITE = http://tekui.neoscientists.org/releases +TEKUI_LICENSE = MIT +TEKUI_LICENSE_FILES = COPYRIGHT +TEKUI_DEPENDENCIES = freetype luainterpreter + +# Package does not build in parallel due to improper make rules +TEKUI_MAKE = $(MAKE1) + +TEKUI_MAKE_OPTS = \ + CC="$(TARGET_CC) -fPIC" \ + AR="$(TARGET_AR) rcu" \ + INSTALL_S="install" \ + LUAVER=$(LUAINTERPRETER_ABIVER) \ + LUA_DEFS="" + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +TEKUI_DEPENDENCIES += libpng +TEKUI_MAKE_OPTS += TEKUI_DEFS="-DENABLE_GRADIENT -DENABLE_FILENO -DENABLE_PIXMAP_CACHE -DENABLE_PNG" +TEKUI_MAKE_OPTS += TEKUI_LIBS=-lpng +else +TEKUI_MAKE_OPTS += TEKUI_DEFS="-DENABLE_GRADIENT -DENABLE_FILENO -DENABLE_PIXMAP_CACHE" +endif + +ifeq ($(BR2_PACKAGE_DEJAVU),y) +TEKUI_FONTDIR=/usr/share/fonts/dejavu +else +TEKUI_FONTDIR=/usr/share/lua/$(LUAINTERPRETER_ABIVER)/tek/ui/font +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFT)$(BR2_PACKAGE_XLIB_LIBXXF86VM),yy) +TEKUI_DEPENDENCIES += xlib_libXft xlib_libXxf86vm +TEKUI_MAKE_OPTS += \ + X11_LIBS="-lXext -lXxf86vm -lXft -lfreetype -lfontconfig" \ + X11_DEFS="-D_XOPEN_SOURCE -DENABLE_XFT -DENABLE_XVID -I$(STAGING_DIR)/usr/include/freetype2 -I$(STAGING_DIR)/usr/include/fontconfig" \ + DISPLAY_DRIVER=x11 +else +ifeq ($(BR2_PACKAGE_DIRECTFB),y) +TEKUI_DEPENDENCIES += directfb +TEKUI_MAKE_OPTS += \ + DIRECTFB_LIBS="-lfreetype -ldirectfb -lpthread" \ + DIRECTFB_DEFS="-D_REENTRANT -I$(STAGING_DIR)/usr/include/directfb -I$(STAGING_DIR)/usr/include/freetype2" \ + DISPLAY_DRIVER=directfb +else +TEKUI_MAKE_OPTS += \ + FREETYPE_LIBS=-lfreetype \ + FREETYPE_DEFS="-I$(STAGING_DIR)/usr/include/freetype2" \ + RAWFB_SUB_LIBS="" \ + RAWFB_SUB_DEFS="-DDEF_FONTDIR=\\\"$(TEKUI_FONTDIR)\\\"" \ + DISPLAY_DRIVER=rawfb +endif +endif + +define TEKUI_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TEKUI_MAKE) $(TEKUI_MAKE_OPTS) PREFIX="/usr" -C $(@D) all +endef + +define TEKUI_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TEKUI_MAKE) $(TEKUI_MAKE_OPTS) PREFIX="$(TARGET_DIR)/usr" -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/termcolor/Config.in b/package/termcolor/Config.in new file mode 100644 index 00000000..979ad61d --- /dev/null +++ b/package/termcolor/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_TERMCOLOR + bool "termcolor" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + help + Termcolor is a header-only C++ library for printing colored + messages to the terminal. + + https://github.com/ikalnytskyi/termcolor + +comment "termcolor needs a toolchain w/ C++, gcc >= 4.8" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 diff --git a/package/termcolor/termcolor.hash b/package/termcolor/termcolor.hash new file mode 100644 index 00000000..dede06c9 --- /dev/null +++ b/package/termcolor/termcolor.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 435994c32557674469404cb1527c283fdcf45746f7df75fd2996bb200d6a759f termcolor-2.1.0.tar.gz +sha256 bab0f53c36b248df22e2298ddf9eeea14b28783f187fcbff6a38f2c47b3a3a7d LICENSE diff --git a/package/termcolor/termcolor.mk b/package/termcolor/termcolor.mk new file mode 100644 index 00000000..0374ce8b --- /dev/null +++ b/package/termcolor/termcolor.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# termcolor +# +################################################################################ + +TERMCOLOR_VERSION = 2.1.0 +TERMCOLOR_SITE = $(call github,ikalnytskyi,termcolor,v$(TERMCOLOR_VERSION)) +TERMCOLOR_LICENSE = BSD-3-Clause +TERMCOLOR_LICENSE_FILES = LICENSE +TERMCOLOR_INSTALL_STAGING = YES +TERMCOLOR_INSTALL_TARGET = NO + +$(eval $(cmake-package)) diff --git a/package/terminology/Config.in b/package/terminology/Config.in new file mode 100644 index 00000000..f367ce51 --- /dev/null +++ b/package/terminology/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_TERMINOLOGY + bool "terminology" + depends on BR2_PACKAGE_EFL + help + Terminology is an EFL terminal emulator with some extra + bells and whistles. + + https://www.enlightenment.org/about-terminology diff --git a/package/terminology/terminology.hash b/package/terminology/terminology.hash new file mode 100644 index 00000000..2ad10af7 --- /dev/null +++ b/package/terminology/terminology.hash @@ -0,0 +1,3 @@ +# From https://download.enlightenment.org/rel/apps/terminology/terminology-1.12.1.tar.xz.sha256sum +sha256 f8ced9584c2e9ae87452ce7425fd25b2d3e122c7489785d2917890215c6b5aa9 terminology-1.12.1.tar.xz +sha256 6863ee700fc82b9c3b82a1627136f6935a9eb68e6a64491f20e00b4023c33622 COPYING diff --git a/package/terminology/terminology.mk b/package/terminology/terminology.mk new file mode 100644 index 00000000..c3125c71 --- /dev/null +++ b/package/terminology/terminology.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# terminology +# +################################################################################ + +TERMINOLOGY_VERSION = 1.12.1 +TERMINOLOGY_SOURCE = terminology-$(TERMINOLOGY_VERSION).tar.xz +TERMINOLOGY_SITE = https://download.enlightenment.org/rel/apps/terminology +TERMINOLOGY_LICENSE = BSD-2-Clause +TERMINOLOGY_LICENSE_FILES = COPYING +TERMINOLOGY_CPE_ID_VENDOR = enlightenment + +TERMINOLOGY_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) efl host-pkgconf +TERMINOLOGY_CONF_OPTS = \ + -Dedje-cc=$(HOST_DIR)/bin/edje_cc \ + -Deet=$(HOST_DIR)/bin/eet + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +TERMINOLOGY_CONF_OPTS += -Dnls=true +else +TERMINOLOGY_CONF_OPTS += -Dnls=false +endif + +$(eval $(meson-package)) diff --git a/package/tesseract-ocr/Config.in b/package/tesseract-ocr/Config.in new file mode 100644 index 00000000..4d9b7873 --- /dev/null +++ b/package/tesseract-ocr/Config.in @@ -0,0 +1,44 @@ +comment "tesseract-ocr needs a toolchain w/ threads, C++, gcc >= 7, dynamic library, wchar" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || BR2_STATIC_LIBS || !BR2_USE_WCHAR + +menuconfig BR2_PACKAGE_TESSERACT_OCR + bool "tesseract-ocr" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17 + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR + select BR2_PACKAGE_LEPTONICA + help + Tesseract is an OCR (Optical Character Recognition) engine, + It can be used directly, or (for programmers) using an API. + It supports a wide variety of languages. + + https://github.com/tesseract-ocr/tesseract + +if BR2_PACKAGE_TESSERACT_OCR + +comment "tesseract-ocr languages support" + +config BR2_PACKAGE_TESSERACT_OCR_LANG_ENG + bool "English" + +config BR2_PACKAGE_TESSERACT_OCR_LANG_FRA + bool "French" + +config BR2_PACKAGE_TESSERACT_OCR_LANG_GER + bool "German" + +config BR2_PACKAGE_TESSERACT_OCR_LANG_SPA + bool "Spanish" + +config BR2_PACKAGE_TESSERACT_OCR_LANG_CHI_SIM + bool "Simplified Chinese" + +config BR2_PACKAGE_TESSERACT_OCR_LANG_CHI_TRA + bool "Traditional Chinese" + +endif diff --git a/package/tesseract-ocr/tesseract-ocr.hash b/package/tesseract-ocr/tesseract-ocr.hash new file mode 100644 index 00000000..41c8498b --- /dev/null +++ b/package/tesseract-ocr/tesseract-ocr.hash @@ -0,0 +1,9 @@ +# locally computed +sha256 141afc12b34a14bb691a939b4b122db0d51bd38feda7f41696822bacea7710c7 tesseract-ocr-5.3.4.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE +sha256 daa0c97d651c19fba3b25e81317cd697e9908c8208090c94c3905381c23fc047 eng.traineddata +sha256 eac01c1d72540d6090facb7b2f42dd0a2ee8fc57c5be1b20548ae668e2761913 fra.traineddata +sha256 896b3b4956503ab9daa10285db330881b2d74b70d889b79262cc534b9ec699a4 deu.traineddata +sha256 0b0fcbb4665189e01ab8019e591f014dd7260460de072543edd4b2cb4ede7c96 spa.traineddata +sha256 fc05d89ab31d8b4e226910f16a8bcbf78e43bae3e2580bb5feefd052efdab363 chi_sim.traineddata +sha256 559067dc0f7c94788884742129d66a0117dde7f4ff12b263d92147173497db14 chi_tra.traineddata diff --git a/package/tesseract-ocr/tesseract-ocr.mk b/package/tesseract-ocr/tesseract-ocr.mk new file mode 100644 index 00000000..0bc90f48 --- /dev/null +++ b/package/tesseract-ocr/tesseract-ocr.mk @@ -0,0 +1,72 @@ +################################################################################ +# +# tesseract-ocr +# +################################################################################ + +TESSERACT_OCR_VERSION = 5.3.4 +TESSERACT_OCR_DATA_VERSION = 4.1.0 +TESSERACT_OCR_SITE = $(call github,tesseract-ocr,tesseract,$(TESSERACT_OCR_VERSION)) +TESSERACT_OCR_LICENSE = Apache-2.0 +TESSERACT_OCR_LICENSE_FILES = LICENSE + +# Source from github, no configure script provided +TESSERACT_OCR_AUTORECONF = YES + +# cairo, pango and icu are optional dependencies, but only needed for +# building training tools, which are only built explicitly with "make +# training", which is not done by this package. +TESSERACT_OCR_DEPENDENCIES = leptonica host-pkgconf +TESSERACT_OCR_INSTALL_STAGING = YES +TESSERACT_OCR_CONF_ENV = \ + ac_cv_prog_have_asciidoc=false \ + LIBLEPT_HEADERSDIR=$(STAGING_DIR)/usr/include/leptonica +TESSERACT_OCR_CONF_OPTS = \ + --disable-opencl + +ifeq ($(BR2_ARM_CPU_HAS_NEON),y) +TESSERACT_OCR_CONF_ENV += ax_cv_check_cxxflags__mfpu_neon=yes +else +TESSERACT_OCR_CONF_ENV += ax_cv_check_cxxflags__mfpu_neon=no +endif + +# Language data files download +ifeq ($(BR2_PACKAGE_TESSERACT_OCR_LANG_ENG),y) +TESSERACT_OCR_DATA_FILES += eng.traineddata +endif + +ifeq ($(BR2_PACKAGE_TESSERACT_OCR_LANG_FRA),y) +TESSERACT_OCR_DATA_FILES += fra.traineddata +endif + +ifeq ($(BR2_PACKAGE_TESSERACT_OCR_LANG_GER),y) +TESSERACT_OCR_DATA_FILES += deu.traineddata +endif + +ifeq ($(BR2_PACKAGE_TESSERACT_OCR_LANG_SPA),y) +TESSERACT_OCR_DATA_FILES += spa.traineddata +endif + +ifeq ($(BR2_PACKAGE_TESSERACT_OCR_LANG_CHI_SIM),y) +TESSERACT_OCR_DATA_FILES += chi_sim.traineddata +endif + +ifeq ($(BR2_PACKAGE_TESSERACT_OCR_LANG_CHI_TRA),y) +TESSERACT_OCR_DATA_FILES += chi_tra.traineddata +endif + +TESSERACT_OCR_EXTRA_DOWNLOADS = \ + $(addprefix https://github.com/tesseract-ocr/tessdata/raw/$(TESSERACT_OCR_DATA_VERSION)/,\ + $(TESSERACT_OCR_DATA_FILES)) + +# Language data files installation +define TESSERACT_OCR_INSTALL_LANG_DATA + $(foreach langfile,$(TESSERACT_OCR_DATA_FILES), \ + $(INSTALL) -D -m 0644 $(TESSERACT_OCR_DL_DIR)/$(langfile) \ + $(TARGET_DIR)/usr/share/tessdata/$(langfile) + ) +endef + +TESSERACT_OCR_POST_INSTALL_TARGET_HOOKS += TESSERACT_OCR_INSTALL_LANG_DATA + +$(eval $(autotools-package)) diff --git a/package/tftpd/Config.in b/package/tftpd/Config.in new file mode 100644 index 00000000..d4e81e70 --- /dev/null +++ b/package/tftpd/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_TFTPD + bool "tftpd" + # linker issue with pre-6.x toolchains + depends on !(BR2_nios2 && !BR2_TOOLCHAIN_GCC_AT_LEAST_6) + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + HPA's Trivial File Transfer Protocol (tftp) server. + + https://git.kernel.org/pub/scm/network/tftp/tftp-hpa.git diff --git a/package/tftpd/S80tftpd-hpa b/package/tftpd/S80tftpd-hpa new file mode 100644 index 00000000..8ae15150 --- /dev/null +++ b/package/tftpd/S80tftpd-hpa @@ -0,0 +1,83 @@ +#! /bin/sh + +OPTIONS="-c -l -s /var/lib/tftpboot" + +set -e + +PATH=/sbin:/bin:/usr/sbin:/usr/bin +DESC="HPA's tftpd" +NAME=tftpd +DAEMON=/usr/sbin/$NAME +PIDFILE=/var/run/$NAME.pid +SCRIPTNAME=/etc/init.d/S80tftpd-hpa + +[ -r "/etc/default/$NAME" ] && . "/etc/default/$NAME" + +# +# Function that starts the daemon/service. +# +d_start() { + mkdir -p /var/lib/tftpboot + chmod 1777 /var/lib/tftpboot + $DAEMON $OPTIONS +} + +# +# Function that stops the daemon/service. +# +d_stop() { + killall -q $NAME +} + +# +# Function that sends a SIGHUP to the daemon/service. +# +d_reload() { + d_start + d_stop +} + +case "$1" in + start) + printf "Starting $DESC: " + d_start + echo "done" + ;; + stop) + printf "Stopping $DESC: " + d_stop + echo "done" + ;; + #reload) + # + # If the daemon can reload its configuration without + # restarting (for example, when it is sent a SIGHUP), + # then implement that here. + # + # If the daemon responds to changes in its config file + # directly anyway, make this an "exit 0". + # + # printf "Reloading $DESC configuration..." + # d_reload + # echo "done." + #;; + restart|force-reload) + # + # If the "reload" option is implemented, move the "force-reload" + # option to the "reload" entry above. If not, "force-reload" is + # just the same as "restart". + # + printf "Restarting $DESC: " + d_stop + sleep 1 + d_start + echo "done" + ;; + *) + # echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 + echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/package/tftpd/tftpd.hash b/package/tftpd/tftpd.hash new file mode 100644 index 00000000..5a4e87f6 --- /dev/null +++ b/package/tftpd/tftpd.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 452b2d630f884d80a7c4c324aa8248470224048ffb9473e3490460658b8ebea4 tftpd-2c86ff58dcc003107b47f2d35aa0fdc4a3fd95e1-git4.tar.gz + +# Hash for license file +sha256 9c46847a03d4cf290616a173d526b9bbdfcaf6846cbc01f361989b4e61f2d72e tftpd/tftpd.c diff --git a/package/tftpd/tftpd.mk b/package/tftpd/tftpd.mk new file mode 100644 index 00000000..73ac7006 --- /dev/null +++ b/package/tftpd/tftpd.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# tftpd +# +################################################################################ + +TFTPD_VERSION = 2c86ff58dcc003107b47f2d35aa0fdc4a3fd95e1 +TFTPD_SITE = https://git.kernel.org/pub/scm/network/tftp/tftp-hpa.git +TFTPD_SITE_METHOD = git +TFTPD_CONF_OPTS = --disable-tcpwrappers +TFTPD_LICENSE = BSD-4-Clause +TFTPD_LICENSE_FILES = tftpd/tftpd.c +TFTPD_CPE_ID_VENDOR = tftpd-hpa_project +TFTPD_CPE_ID_PRODUCT = tftpd-hpa +TFTPD_SELINUX_MODULES = tftp +# From git +TFTPD_AUTORECONF = YES +TFTPD_AUTORECONF_OPTS = --include=$(@D)/autoconf/m4 + +define TFTPD_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/tftp/tftp $(TARGET_DIR)/usr/bin/tftp + $(INSTALL) -D $(@D)/tftpd/tftpd $(TARGET_DIR)/usr/sbin/tftpd +endef + +define TFTPD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/tftpd/S80tftpd-hpa $(TARGET_DIR)/etc/init.d/S80tftpd-hpa +endef + +$(eval $(autotools-package)) diff --git a/package/thermald/Config.in b/package/thermald/Config.in new file mode 100644 index 00000000..353ce31a --- /dev/null +++ b/package/thermald/Config.in @@ -0,0 +1,33 @@ +config BR2_PACKAGE_THERMALD + bool "thermald" + depends on BR2_i386 || BR2_x86_64 # needs + depends on BR2_USE_MMU # uses fork() + depends on BR2_USE_WCHAR # upower -> libgudev + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus-glib -> glib2, dbus, upower + depends on BR2_USE_WCHAR # dbus-glib -> glib2 + depends on BR2_PACKAGE_HAS_UDEV # upower + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_DBUS_GLIB + select BR2_PACKAGE_LIBEVDEV + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_UPOWER + select BR2_PACKAGE_XZ + help + Thermal Daemon is a Linux daemon for monitoring and + controlling platform temperatures. Once the system temperature + reaches a certain threshold, the Linux daemon activates + various cooling methods to try to cool the system. + + https://github.com/intel/thermal_daemon + +comment "thermald needs a toolchain w/ C++, wchar, threads" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_INSTALL_LIBSTDCPP + +comment "thermald needs udev /dev management" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_HAS_UDEV diff --git a/package/thermald/thermald.hash b/package/thermald/thermald.hash new file mode 100644 index 00000000..fff5ae62 --- /dev/null +++ b/package/thermald/thermald.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 e5a452624f133d71f4aff0bd0c8f8258399a5ae1a7d5aea177fa6a6e33dad1fd thermald-2.5.6.tar.gz +sha256 e98be8bc482e038a14bfbc01caf800bbd0024fff275ef14cd999db6560254a8d COPYING diff --git a/package/thermald/thermald.mk b/package/thermald/thermald.mk new file mode 100644 index 00000000..9faa4768 --- /dev/null +++ b/package/thermald/thermald.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# thermald +# +################################################################################ + +THERMALD_VERSION = 2.5.6 +THERMALD_SITE = $(call github,intel,thermal_daemon,v$(THERMALD_VERSION)) +# fetched from Github, with no configure script +THERMALD_AUTORECONF = YES +THERMALD_AUTORECONF_OPTS = --include=$(HOST_DIR)/share/autoconf-archive +THERMALD_DEPENDENCIES = \ + $(TARGET_NLS_DEPENDENCIES) \ + host-autoconf-archive \ + dbus \ + dbus-glib \ + libevdev \ + libxml2 \ + upower \ + xz +# tools are GPL-3.0+ but are not added to the target +THERMALD_LICENSE = GPL-2.0+ +THERMALD_LICENSE_FILES = COPYING +THERMALD_CPE_ID_VENDOR = intel +THERMALD_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) + +# avoid this error when reconfiguring: +# automake: error: cannot open < gtk-doc.make: No such file or directory +define THERMALD_GTK_DOC_HOOK + echo "CLEANFILES=" > $(@D)/gtk-doc.make +endef +THERMALD_PRE_CONFIGURE_HOOKS += THERMALD_GTK_DOC_HOOK + +# Autoreconf is missing the m4/ directory, which might actually be missing +# iff it was the first argument, but unfortunately we are overriding the +# first include directory above. Thus we need that hook here. +define THERMALD_CREATE_M4 + mkdir -p $(@D)/m4 +endef +THERMALD_POST_PATCH_HOOKS += THERMALD_CREATE_M4 + +ifeq ($(BR2_INIT_SYSTEMD),y) +THERMALD_DEPENDENCIES += systemd +THERMALD_CONF_OPTS += --with-systemdsystemunitdir=/usr/lib/systemd/system +endif + +$(eval $(autotools-package)) diff --git a/package/thrift/Config.in b/package/thrift/Config.in new file mode 100644 index 00000000..2fa04705 --- /dev/null +++ b/package/thrift/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_THRIFT + bool "thrift" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_LIBEVENT + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + The Apache Thrift software framework, for scalable + cross-language services development, combines a software + stack with a code generation engine to build services that + work efficiently and seamlessly between C++, Java, Python, + PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, + Node.js, Smalltalk, OCaml and Delphi and other languages. + + http://thrift.apache.org/ + +comment "thrift needs a toolchain w/ C++, wchar, threads" + depends on !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP diff --git a/package/thrift/thrift.hash b/package/thrift/thrift.hash new file mode 100644 index 00000000..20d6baea --- /dev/null +++ b/package/thrift/thrift.hash @@ -0,0 +1,4 @@ +# From https://www.apache.org/dist/thrift/0.14.1/thrift-0.14.1.tar.gz.sha256 +sha256 13da5e1cd9c8a3bb89778c0337cc57eb0c29b08f3090b41cf6ab78594b410ca5 thrift-0.14.1.tar.gz +# License files, locally calculated +sha256 d315e6cdedc07c478de6992027bfb66f220886c6216fd7e9885ced30c3703646 LICENSE diff --git a/package/thrift/thrift.mk b/package/thrift/thrift.mk new file mode 100644 index 00000000..c36efce2 --- /dev/null +++ b/package/thrift/thrift.mk @@ -0,0 +1,71 @@ +################################################################################ +# +# thrift +# +################################################################################ + +THRIFT_VERSION = 0.14.1 +THRIFT_SITE = http://www.us.apache.org/dist/thrift/$(THRIFT_VERSION) +THRIFT_LICENSE = Apache-2.0 +THRIFT_LICENSE_FILES = LICENSE +THRIFT_CPE_ID_VENDOR = apache + +THRIFT_DEPENDENCIES = host-pkgconf host-thrift boost \ + libevent openssl zlib +THRIFT_INSTALL_STAGING = YES +HOST_THRIFT_DEPENDENCIES = host-bison host-boost \ + host-flex host-libevent host-openssl host-pkgconf host-zlib + +THRIFT_COMMON_CONF_OPTS = -DBUILD_TUTORIALS=OFF \ + -DBUILD_TESTING=OFF \ + -DWITH_NODEJS=OFF \ + -DWITH_PYTHON=OFF \ + -DWITH_JAVA=OFF \ + -DWITH_JAVASCRIPT=OFF \ + -DWITH_QT5=OFF + +THRIFT_CONF_OPTS = $(THRIFT_COMMON_CONF_OPTS) -DBUILD_COMPILER=OFF +HOST_THRIFT_CONF_OPTS = $(THRIFT_COMMON_CONF_OPTS) -DBUILD_COMPILER=ON + +# relocation truncated to fit: R_68K_GOT16O +ifeq ($(BR2_m68k_cf),y) +THRIFT_CONF_ENV += CXXFLAGS="$(TARGET_CXXFLAGS) -mxgot" +endif + +# thrift doesn't use the regular flags BUILD_{STATIC,SHARED}_LIBS +ifeq ($(BR2_STATIC_LIBS),y) +THRIFT_CONF_OPTS += -DWITH_STATIC_LIB=ON -DWITH_BOOST_STATIC=ON -DWITH_SHARED_LIB=OFF +else ifeq ($(BR2_SHARED_LIBS),y) +THRIFT_CONF_OPTS += -DWITH_STATIC_LIB=OFF -DWITH_BOOST_STATIC=OFF -DWITH_SHARED_LIB=ON +else +# BR2_SHARED_STATIC_LIBS +THRIFT_CONF_OPTS += -DWITH_STATIC_LIB=ON -DWITH_BOOST_STATIC=OFF -DWITH_SHARED_LIB=ON +endif + +# Language selection for the compiler +HOST_THRIFT_CONF_OPTS += -DTHRIFT_COMPILER_CSHARP=OFF \ + -DTHRIFT_COMPILER_JAVA=OFF \ + -DTHRIFT_COMPILER_ERL=OFF \ + -DTHRIFT_COMPILER_PY=OFF \ + -DTHRIFT_COMPILER_PERL=OFF \ + -DTHRIFT_COMPILER_PHP=OFF \ + -DTHRIFT_COMPILER_RB=OFF \ + -DTHRIFT_COMPILER_HS=OFF \ + -DTHRIFT_COMPILER_GO=OFF \ + -DTHRIFT_COMPILER_D=OFF \ + -DTHRIFT_COMPILER_LUA=OFF \ + -DBUILD_C_GLIB=OFF + +# C bindings +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +THRIFT_DEPENDENCIES += libglib2 +THRIFT_CONF_OPTS += -DBUILD_C_GLIB=ON +else +THRIFT_CONF_OPTS += -DBUILD_C_GLIB=OFF +endif + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) + +# to be used by other packages +THRIFT = $(HOST_DIR)/bin/thrift diff --git a/package/thttpd/Config.in b/package/thttpd/Config.in new file mode 100644 index 00000000..bd97bc7a --- /dev/null +++ b/package/thttpd/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_THTTPD + bool "thttpd" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + thttpd is a simple, small, portable, fast, and secure HTTP + server + + http://www.acme.com/software/thttpd/ diff --git a/package/thttpd/S90thttpd b/package/thttpd/S90thttpd new file mode 100644 index 00000000..94b079b0 --- /dev/null +++ b/package/thttpd/S90thttpd @@ -0,0 +1,54 @@ +#!/bin/sh + +DAEMON="thttpd" +PIDFILE="/var/run/$DAEMON.pid" + +THTTPD_ARGS="-C /etc/thttpd.conf" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -p "$PIDFILE" -x "/usr/sbin/$DAEMON" \ + -- $THTTPD_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + # thttpd does not remove the pid file on exit + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/thttpd/thttpd.hash b/package/thttpd/thttpd.hash new file mode 100644 index 00000000..a29b9b2d --- /dev/null +++ b/package/thttpd/thttpd.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 99c09f47da326b1e7b5295c45549d2b65534dce27c44812cf7eef1441681a397 thttpd-2.29.tar.gz +sha256 be059e6b8219d5bb5480fa6a2864bbb34892f56951d03d08b356bc1fa8c81a01 thttpd.c diff --git a/package/thttpd/thttpd.mk b/package/thttpd/thttpd.mk new file mode 100644 index 00000000..d9cb5c90 --- /dev/null +++ b/package/thttpd/thttpd.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# thttpd +# +################################################################################ + +THTTPD_VERSION = 2.29 +THTTPD_SITE = https://acme.com/software/thttpd +THTTPD_LICENSE = BSD-2-Clause +THTTPD_LICENSE_FILES = thttpd.c +THTTPD_CPE_ID_VENDOR = acme + +THTTPD_MAKE = $(MAKE1) + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +THTTPD_DEPENDENCIES += libxcrypt +endif + +define THTTPD_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/thttpd $(TARGET_DIR)/usr/sbin/thttpd + $(INSTALL) -D -m 0755 $(@D)/extras/htpasswd $(TARGET_DIR)/usr/bin/htpasswd + $(INSTALL) -D -m 0755 $(@D)/extras/makeweb $(TARGET_DIR)/usr/bin/makeweb + $(INSTALL) -D -m 0755 $(@D)/extras/syslogtocern $(TARGET_DIR)/usr/bin/syslogtocern + $(INSTALL) -D -m 0755 $(@D)/scripts/thttpd_wrapper $(TARGET_DIR)/usr/sbin/thttpd_wrapper + $(SED) 's:/usr/local/sbin:/usr/sbin:g' -e \ + 's:/usr/local/www/thttpd_config:/etc/thttpd.conf:g' \ + $(TARGET_DIR)/usr/sbin/thttpd_wrapper + $(INSTALL) -d $(TARGET_DIR)/var/www/data + $(INSTALL) -d $(TARGET_DIR)/var/www/logs + echo "dir=/var/www/data" > $(TARGET_DIR)/etc/thttpd.conf + echo 'cgipat=**.cgi' >> $(TARGET_DIR)/etc/thttpd.conf + echo "logfile=/var/www/logs/thttpd_log" >> $(TARGET_DIR)/etc/thttpd.conf + echo "pidfile=/var/run/thttpd.pid" >> $(TARGET_DIR)/etc/thttpd.conf +endef + +define THTTPD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/thttpd/S90thttpd \ + $(TARGET_DIR)/etc/init.d/S90thttpd +endef + +define THTTPD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/thttpd/thttpd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/thttpd.service +endef + +$(eval $(autotools-package)) diff --git a/package/thttpd/thttpd.service b/package/thttpd/thttpd.service new file mode 100644 index 00000000..e3c93e7b --- /dev/null +++ b/package/thttpd/thttpd.service @@ -0,0 +1,10 @@ +[Unit] +Description=Tiny HTTP Daemon + +[Service] +PIDFile=/run/thttpd.pid +ExecStart=/usr/sbin/thttpd -D -C /etc/thttpd.conf +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/ti-cgt-pru/Config.in.host b/package/ti-cgt-pru/Config.in.host new file mode 100644 index 00000000..eab3cd72 --- /dev/null +++ b/package/ti-cgt-pru/Config.in.host @@ -0,0 +1,18 @@ +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 + select BR2_HOSTARCH_NEEDS_IA32_LIBS + 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/package/ti-cgt-pru/ti-cgt-pru.hash b/package/ti-cgt-pru/ti-cgt-pru.hash new file mode 100644 index 00000000..f71ae0cf --- /dev/null +++ b/package/ti-cgt-pru/ti-cgt-pru.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 1f1405167214f2c0ef848591b17a7799fdcd9f55f11bc90db9ace3490d426215 ti_cgt_pru_2.3.3_linux_installer_x86.bin +sha256 913cb4ab564f874b7c9a11726a16c4ccdc7ecc60be2738201281a1e28dc93641 PRU_Code_Generation_Tools_2.3.x_manifest.html +sha256 5e198df9782c63cedc8363f0e298b241a9a8084398a925f6e1003dbcb60801cb pru_rts_2_3_0_82167478-F8C9-49b2-82BD-12F8550770F9.spdx diff --git a/package/ti-cgt-pru/ti-cgt-pru.mk b/package/ti-cgt-pru/ti-cgt-pru.mk new file mode 100644 index 00000000..8bf907cc --- /dev/null +++ b/package/ti-cgt-pru/ti-cgt-pru.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# ti-cgt-pru +# +################################################################################ + +TI_CGT_PRU_VERSION = 2.3.3 +TI_CGT_PRU_SOURCE = ti_cgt_pru_$(TI_CGT_PRU_VERSION)_linux_installer_x86.bin +TI_CGT_PRU_SITE = http://downloads.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), \ + BSL-1.0 (compiler), BSD-2-Clause, BSD-3-Clause, MIT, AFL-3.0, Hewlett-Packard (PRU library) +TI_CGT_PRU_LICENSE_FILES = PRU_Code_Generation_Tools_2.3.x_manifest.html \ + pru_rts_2_3_0_82167478-F8C9-49b2-82BD-12F8550770F9.spdx + +define HOST_TI_CGT_PRU_EXTRACT_CMDS + chmod +x $(HOST_TI_CGT_PRU_DL_DIR)/$(TI_CGT_PRU_SOURCE) + $(HOST_TI_CGT_PRU_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)/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)/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/package/ti-gfx/0001-newclkapi.patch b/package/ti-gfx/0001-newclkapi.patch new file mode 100644 index 00000000..69574c15 --- /dev/null +++ b/package/ti-gfx/0001-newclkapi.patch @@ -0,0 +1,118 @@ +This patch adjusts the omap3630 portion of the powervr driver to use the new +clk kernel api. + +Signed-off-by: Spenser Gilliland +[yann.morin.1998@free.fr: rebased ontop of 5.01.00.01] +Signed-off-by: "Yann E. MORIN" +diff -durN ti-gfx-5_01_00_01.orig/GFX_Linux_KM/services4/system/omap3630/sysutils_linux.c ti-gfx-5_01_00_01/GFX_Linux_KM/services4/system/omap3630/sysutils_linux.c +--- ti-gfx-5_01_00_01.orig/GFX_Linux_KM/services4/system/omap3630/sysutils_linux.c 2013-12-23 15:44:20.000000000 +0100 ++++ ti-gfx-5_01_00_01/GFX_Linux_KM/services4/system/omap3630/sysutils_linux.c 2014-02-26 19:17:39.829571846 +0100 +@@ -182,6 +182,49 @@ + @Return PVRSRV_ERROR + + ******************************************************************************/ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0) ++int clk_disable_unprepare(struct clk *clk) ++{ ++ return clk_disable(clk); ++} ++#elif LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0) ++int clk_disable_unprepare(struct clk *clk) ++{ ++ res = clk_disable(clk); ++ if (res < 0) ++ return res; ++ ++ res = clk_unprepare(clk); ++ if (ret < 0) ++ return res; ++ ++ return 0; ++} ++#endif ++ ++ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0) ++int clk_prepare_enable(struct clk *clk) ++{ ++ return clk_enable(clk); ++} ++#elif LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0) ++int clk_prepare_enable(struct clk *clk) ++{ ++ res = clk_prepare(clk); ++ if (ret < 0) ++ return res; ++ ++ res = clk_enable(clk); ++ if (res < 0) { ++ clk_unprepare(clk); ++ return res; ++ } ++ ++ return 0; ++} ++#endif ++ + PVRSRV_ERROR EnableSGXClocks(SYS_DATA *psSysData) + { + #if !defined(NO_HARDWARE) +@@ -198,7 +241,7 @@ + + #if !defined(PM_RUNTIME_SUPPORT) + PVR_DPF((PVR_DBG_MESSAGE, "EnableSGXClocks: Enabling SGX Clocks")); +- res=clk_enable(psSysSpecData->psSGX_FCK); ++ res=clk_prepare_enable(psSysSpecData->psSGX_FCK); + if (res < 0) + { + PVR_DPF((PVR_DBG_ERROR, "EnableSGXClocks: Couldn't enable SGX functional clock (%d)", res)); +@@ -324,7 +367,7 @@ + + PVR_DPF((PVR_DBG_MESSAGE, "DisableSGXClocks: Disabling SGX Clocks")); + #if !defined(PM_RUNTIME_SUPPORT) +- clk_disable(psSysSpecData->psSGX_FCK); ++ clk_disable_unprepare(psSysSpecData->psSGX_FCK); + #endif + SysDisableSGXInterrupts(psSysData); + +@@ -540,14 +583,14 @@ + rate = clk_get_rate(psSysSpecData->psGPT11_FCK); + PVR_TRACE(("GPTIMER11 clock is %dMHz", HZ_TO_MHZ(rate))); + +- res = clk_enable(psSysSpecData->psGPT11_FCK); ++ res = clk_prepare_enable(psSysSpecData->psGPT11_FCK); + if (res < 0) + { + PVR_DPF((PVR_DBG_ERROR, "EnableSystemClocks: Couldn't enable GPTIMER11 functional clock (%d)", res)); + goto ExitError; + } + +- res = clk_enable(psSysSpecData->psGPT11_ICK); ++ res = clk_prepare_enable(psSysSpecData->psGPT11_ICK); + if (res < 0) + { + PVR_DPF((PVR_DBG_ERROR, "EnableSystemClocks: Couldn't enable GPTIMER11 interface clock (%d)", res)); +@@ -610,9 +653,9 @@ + + ExitDisableGPT11ICK: + #if defined(PVR_OMAP4_TIMING_PRCM) +- clk_disable(psSysSpecData->psGPT11_ICK); ++ clk_disable_unprepare(psSysSpecData->psGPT11_ICK); + ExitDisableGPT11FCK: +- clk_disable(psSysSpecData->psGPT11_FCK); ++ clk_disable_unprepare(psSysSpecData->psGPT11_FCK); + ExitError: + #endif /* defined(PVR_OMAP4_TIMING_PRCM) */ + eError = PVRSRV_ERROR_CLOCK_REQUEST_FAILED; +@@ -664,9 +707,9 @@ + psSysSpecData->sTimerRegPhysBase.uiAddr = 0; + #endif + #if defined(PVR_OMAP4_TIMING_PRCM) +- clk_disable(psSysSpecData->psGPT11_ICK); ++ clk_disable_unprepare(psSysSpecData->psGPT11_ICK); + +- clk_disable(psSysSpecData->psGPT11_FCK); ++ clk_disable_unprepare(psSysSpecData->psGPT11_FCK); + #endif /* defined(PVR_OMAP4_TIMING_PRCM) */ + } + #endif /* PVR_OMAP_USE_DM_TIMER_API */ diff --git a/package/ti-gfx/0002-fix-build-omaplfb-linux.patch b/package/ti-gfx/0002-fix-build-omaplfb-linux.patch new file mode 100644 index 00000000..002d01c1 --- /dev/null +++ b/package/ti-gfx/0002-fix-build-omaplfb-linux.patch @@ -0,0 +1,21 @@ +Since commit a73fdc647417699833f22d0f239affe22e062827 in the kernel, +omap_dss_device's 'output' is renamed 'src'. + +Fix build with at least es5.x selected (AM35xx). + +Signed-off-by: Hadrien Boutteville + +--- a/GFX_Linux_KM/services4/3rdparty/dc_omapfb3_linux/omaplfb_linux.c ++++ b/GFX_Linux_KM/services4/3rdparty/dc_omapfb3_linux/omaplfb_linux.c +@@ -176,8 +176,10 @@ + #define OMAP_DSS_DRIVER(drv, dev) struct omap_dss_driver *drv = (dev) != NULL ? (dev)->driver : NULL + #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)) + #define OMAP_DSS_MANAGER(man, dev) struct omap_overlay_manager *man = (dev) != NULL ? (dev)->manager : NULL +-#else ++#elif (LINUX_VERSION_CODE < KERNEL_VERSION(3,12,0)) + #define OMAP_DSS_MANAGER(man, dev) struct omap_overlay_manager *man = (dev) != NULL ? (dev)->output->manager : NULL ++#else ++#define OMAP_DSS_MANAGER(man, dev) struct omap_overlay_manager *man = (dev) != NULL ? (dev)->src->manager : NULL + #endif + + #define WAIT_FOR_VSYNC(man) ((man)->wait_for_vsync) diff --git a/package/ti-gfx/0003-km_install_modules.patch b/package/ti-gfx/0003-km_install_modules.patch new file mode 100644 index 00000000..2cf6e815 --- /dev/null +++ b/package/ti-gfx/0003-km_install_modules.patch @@ -0,0 +1,19 @@ +Patch to add modules_install target to the modules makefile. This makes +installation a little easier. + +Signed-off-by: Spenser Gilliland +---- +Index: ti-gfx-4_09_00_01/GFX_Linux_KM/Makefile +=================================================================== +--- ti-gfx-4_09_00_01.orig/GFX_Linux_KM/Makefile 2013-03-07 11:00:11.000000000 -0600 ++++ ti-gfx-4_09_00_01/GFX_Linux_KM/Makefile 2013-05-23 01:36:29.356676281 -0500 +@@ -479,6 +479,9 @@ + all: + $(MAKE) -C $(KERNELDIR) M=`pwd` $* + ++install: ++ $(MAKE) -C $(KERNELDIR) M=`pwd` modules_install ++ + clean: + @find . -name "*.o" -exec rm -r {} \; + @find . -name "*.ko" -exec rm -r {} \; diff --git a/package/ti-gfx/Config.in b/package/ti-gfx/Config.in new file mode 100644 index 00000000..40f46335 --- /dev/null +++ b/package/ti-gfx/Config.in @@ -0,0 +1,84 @@ +config BR2_PACKAGE_TI_GFX + bool "ti-gfx" + depends on BR2_LINUX_KERNEL && BR2_TOOLCHAIN_USES_GLIBC && BR2_arm + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + select BR2_HOSTARCH_NEEDS_IA32_LIBS + select BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_HAS_LIBGLES + select BR2_PACKAGE_HAS_POWERVR + select BR2_PACKAGE_FBSET if !BR2_PACKAGE_BUSYBOX # Runtime dependency only + select BR2_LINUX_NEEDS_MODULES # not using kernel-module infra + help + Graphics libraries for TI boards using SGX acceleration. + + Supports OMAP35xx, DM37xx/AM37xx, DM816x, DM814x, AM335x and + AM43xx. + + For newer CPUs or kernels use the ti-sgx-{km,um} packages. + + http://downloads.ti.com/dsps/dsps_public_sw/gfxsdk/ + +if BR2_PACKAGE_TI_GFX + +config BR2_PACKAGE_PROVIDES_LIBEGL + default "ti-gfx" + +config BR2_PACKAGE_PROVIDES_LIBGLES + default "ti-gfx" + +config BR2_PACKAGE_PROVIDES_POWERVR + default "ti-gfx" + +config BR2_PACKAGE_TI_GFX_DEBUG + bool "enable debug support" + help + Turns on debugging in the kernel module, install libraries + built with debugging enabled, installs various tests and + installs esrev script. + +config BR2_PACKAGE_TI_GFX_DEMOS + bool "install demos" + default y + help + Install the OGLES2ChameleonMan and OGLES2MagicLantern demos + +config BR2_PACKAGE_TI_GFX_EGLIMAGE + bool "install eglimage version of libraries" + help + Installs OpenGL libraries which support the eglimage api. + +choice + prompt "Target" + default BR2_PACKAGE_TI_GFX_ES3 + help + Select the SOC for which you would like to install + drivers. Please use the chart at + http://processors.wiki.ti.com/index.php/OMAP35x_Graphics_SDK_Getting_Started_Guide + +config BR2_PACKAGE_TI_GFX_ES3 + bool "es3.x (OMAP35xx, AM35xx Rev 3.1+)" + help + OMAP35xx, AM35xx Rev 3.1+ + +config BR2_PACKAGE_TI_GFX_ES5 + bool "es5.x (AM37xx, DM37xx)" + help + AM37xx, DM37xx + +config BR2_PACKAGE_TI_GFX_ES6 + bool "es6.x (AM387x, DMA814x, AM389x, DM816x)" + help + AM387x, DM814x, AM389x, DM816x + +config BR2_PACKAGE_TI_GFX_ES8 + bool "es8.x (AM335x)" + help + AM335x + +endchoice + +endif + +comment "ti-gfx needs a glibc toolchain and a Linux kernel to be built" + depends on BR2_arm + depends on !(BR2_LINUX_KERNEL && BR2_TOOLCHAIN_USES_GLIBC) diff --git a/package/ti-gfx/S80ti-gfx b/package/ti-gfx/S80ti-gfx new file mode 100644 index 00000000..fc5999a8 --- /dev/null +++ b/package/ti-gfx/S80ti-gfx @@ -0,0 +1,53 @@ +#!/bin/sh + +start() { + echo "ti-gfx: starting pvr driver" + + BITSPERPIXEL="$(fbset | awk '/geom/ {print $6}')" + YRES="$(fbset | awk '/geom/ {print $3}')" + # Set RGBA ordering to something the drivers like + if [ "$BITSPERPIXEL" = "32" ] ; then + fbset -rgba 8/16,8/8,8/0,8/24 + fi + # Try to enable triple buffering when there's enough VRAM + fbset -vyres $(( YRES*3 )) + + modprobe pvrsrvkm + modprobe omaplfb + modprobe bufferclass_ti + + pvr_maj=$(awk '$2=="pvrsrvkm" { print $1; }' /proc/devices) + rm -f /dev/pvrsrvkm + + mknod /dev/pvrsrvkm c $pvr_maj 0 + chmod 600 /dev/pvrsrvkm + + if ! /usr/bin/pvrsrvctl --start --no-module; then + echo "ti-gfx: unable to start server" + fi +} + +stop() { + echo "ti-gfx: stopping pvr driver" + + rmmod bufferclass_ti + rmmod omaplfb + rmmod pvrsrvkm +} + +case "$1" in +start) + start +;; +stop) + stop +;; +restart) + stop + start +;; +*) + echo "ti-gfx: Please use start, stop, or restart." + exit 1 +;; +esac diff --git a/package/ti-gfx/egl.pc b/package/ti-gfx/egl.pc new file mode 100644 index 00000000..36ea4131 --- /dev/null +++ b/package/ti-gfx/egl.pc @@ -0,0 +1,11 @@ +prefix=/usr/ +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: egl +Description: TI Graphics SDK implementation of EGL +Version: 1.9.2188537 +Requires: +Libs: -L${libdir} -lEGL -lGLESv2 -lIMGegl +Cflags: -I${includedir} diff --git a/package/ti-gfx/esrev.sh b/package/ti-gfx/esrev.sh new file mode 100644 index 00000000..8109334b --- /dev/null +++ b/package/ti-gfx/esrev.sh @@ -0,0 +1,60 @@ +#!/bin/sh + +# Debug script to determine proper ES revision for the current board. The +# pvrsrvkm module must be insmoded before attempting to get the es rev. + +machine_id() { # return the machine ID + awk 'BEGIN { FS=": " } /Hardware/ \ + { gsub(" ", "_", $2); print tolower($2) } ' +Date: Sun, 10 Nov 2019 22:44:44 -0300 +Subject: [PATCH] Makefile: do not install init script + +Use a custom one, made for Buildroot, instead. + +Signed-off-by: Carlos Santos +--- + Makefile | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/Makefile b/Makefile +index 649111a..19016f3 100755 +--- a/Makefile ++++ b/Makefile +@@ -3,7 +3,6 @@ TARGET_PRODUCT ?= jacinto6evm + SRCDIR = ./targetfs/${TARGET_PRODUCT} + + prefix = /usr +-etcdir = /etc + bindir = ${prefix}/bin + incdir = ${prefix}/include + libdir = ${prefix}/lib +@@ -11,11 +10,9 @@ libdir = ${prefix}/lib + all: + + install: +- mkdir -p ${DESTDIR}${etcdir} + mkdir -p ${DESTDIR}${bindir} + mkdir -p ${DESTDIR}${incdir} + mkdir -p ${DESTDIR}${libdir} +- cp -ar ${SRCDIR}/etc/* ${DESTDIR}${etcdir} + cp -ar ${SRCDIR}/bin/* ${DESTDIR}${bindir} + cp -ar ${SRCDIR}/include/* ${DESTDIR}${incdir} + cp -ar ${SRCDIR}/lib/* ${DESTDIR}${libdir} +-- +2.18.1 + diff --git a/package/ti-sgx-um/Config.in b/package/ti-sgx-um/Config.in new file mode 100644 index 00000000..13c7cc88 --- /dev/null +++ b/package/ti-sgx-um/Config.in @@ -0,0 +1,44 @@ +comment "ti-sgx-um needs udev and a glibc toolchain w/ threads" + depends on BR2_arm + depends on !BR2_PACKAGE_HAS_UDEV || !BR2_TOOLCHAIN_USES_GLIBC \ + || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_TI_SGX_UM + bool "ti-sgx-um" + depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm + depends on BR2_PACKAGE_HAS_UDEV + # pre-built binaries + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_arm + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_LIBDRM_OMAP + select BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_HAS_LIBGBM + select BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF + select BR2_PACKAGE_HAS_LIBGLES + select BR2_PACKAGE_HAS_POWERVR + select BR2_PACKAGE_LIBFFI + select BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_TI_SGX_KM if BR2_LINUX_KERNEL + help + Graphics libraries for TI CPUs with SGX5xx GPU. + This package supports AM335x, AM437x, AM4430 and AM5430. + For older CPUs or kernels use the ti-gfx package. + + https://git.ti.com/cgit/graphics/omap5-sgx-ddk-um-linux + +if BR2_PACKAGE_TI_SGX_UM + +config BR2_PACKAGE_PROVIDES_LIBEGL + default "ti-sgx-um" + +config BR2_PACKAGE_PROVIDES_LIBGBM + default "ti-sgx-um" + +config BR2_PACKAGE_PROVIDES_LIBGLES + default "ti-sgx-um" + +config BR2_PACKAGE_PROVIDES_POWERVR + default "ti-sgx-um" + +endif diff --git a/package/ti-sgx-um/S80ti-sgx b/package/ti-sgx-um/S80ti-sgx new file mode 100644 index 00000000..2630a057 --- /dev/null +++ b/package/ti-sgx-um/S80ti-sgx @@ -0,0 +1,56 @@ +#!/bin/sh + +pvrsrvkm_ko="/lib/modules/$(/bin/uname -r)/extra/pvrsrvkm.ko" + +pvr_loaded() { + /sbin/lsmod | /bin/grep -q '^\' +} + +pvr_load() { + /sbin/insmod "$pvrsrvkm_ko" > /dev/null 2>&1 +} + +start() { + printf 'Loading pvrsrvkm module: ' + pvr_loaded || pvr_load + status=$? + if [ "$status" -eq 0 ]; then + printf 'Starting PowerVR services: ' + /usr/bin/pvrsrvctl --start --no-module > /dev/null 2>&1 + status=$? + fi + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Starting PowerVR services: ' + /usr/bin/pvrsrvctl --stop > /dev/null 2>&1 + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/ti-sgx-um/ti-sgx-um.hash b/package/ti-sgx-um/ti-sgx-um.hash new file mode 100644 index 00000000..ff83d386 --- /dev/null +++ b/package/ti-sgx-um/ti-sgx-um.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 1d82e42ed7114759424cf25167e95b20f2babbfad3ee2ae8ac60d12c908bc73d ti-sgx-um-909e237baf47d0bde006ff25552f5403fd7e359d-git4.tar.gz +sha256 368c306246c9130b5c90a6fef2f80085f70b6225b3f552654a288c0f39fc1531 TI-Linux-Graphics-DDK-UM-Manifest.doc diff --git a/package/ti-sgx-um/ti-sgx-um.mk b/package/ti-sgx-um/ti-sgx-um.mk new file mode 100644 index 00000000..aeee9068 --- /dev/null +++ b/package/ti-sgx-um/ti-sgx-um.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# ti-sgx-um +# +################################################################################ + +# This corresponds to SDK 06.01.00.08 +TI_SGX_UM_VERSION = 909e237baf47d0bde006ff25552f5403fd7e359d +TI_SGX_UM_SITE = http://git.ti.com/git/graphics/omap5-sgx-ddk-um-linux.git +TI_SGX_UM_SITE_METHOD = git +TI_SGX_UM_LICENSE = TI TSPA License +TI_SGX_UM_LICENSE_FILES = TI-Linux-Graphics-DDK-UM-Manifest.doc +TI_SGX_UM_INSTALL_STAGING = YES +TI_SGX_UM_PROVIDES = libegl libgbm libgles powervr +TI_SGX_UM_TARGET=ti335x + +# ti-sgx-um is a egl/gles provider only if libdrm is installed +TI_SGX_UM_DEPENDENCIES = libdrm wayland + +define TI_SGX_UM_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DISCIMAGE=$(STAGING_DIR) \ + TARGET_PRODUCT=$(TI_SGX_UM_TARGET) install +endef + +define TI_SGX_UM_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DISCIMAGE=$(TARGET_DIR) \ + TARGET_PRODUCT=$(TI_SGX_UM_TARGET) install +endef + +TI_SGX_UM_POST_INSTALL_TARGET_HOOKS += TI_SGX_UM_INSTALL_CONF + +define TI_SGX_UM_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/ti-sgx-um/S80ti-sgx \ + $(TARGET_DIR)/etc/init.d/S80ti-sgx +endef + +$(eval $(generic-package)) diff --git a/package/ti-uim/Config.in b/package/ti-uim/Config.in new file mode 100644 index 00000000..451aad13 --- /dev/null +++ b/package/ti-uim/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_TI_UIM + bool "ti-uim" + help + User Mode Initialization Manager for TI wl12xx connectivity + chip shared transport drivers. This daemon is needed to get + the btwilink driver to work. + + http://omappedia.org/wiki/Device_Driver_Interface_of_WiLink_Solution diff --git a/package/ti-uim/ti-uim.hash b/package/ti-uim/ti-uim.hash new file mode 100644 index 00000000..9c29b746 --- /dev/null +++ b/package/ti-uim/ti-uim.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 da8a66968f4bf99366ab2b63baf358d937a6b1a5636ef6179c3aa7c852cbd1b2 ti-uim-a0236bc252e6484835ce266ae4a50b361f6a902d.tar.gz +sha256 4e39276507524f938459b05d061ae77562f3f85926fe73027cfcac259cb03d0e uim.h diff --git a/package/ti-uim/ti-uim.mk b/package/ti-uim/ti-uim.mk new file mode 100644 index 00000000..8b1678f6 --- /dev/null +++ b/package/ti-uim/ti-uim.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# ti-uim +# +################################################################################ + +TI_UIM_VERSION = a0236bc252e6484835ce266ae4a50b361f6a902d +TI_UIM_SITE = $(call github,96boards,uim,$(TI_UIM_VERSION)) +TI_UIM_LICENSE = GPL-2.0+ +TI_UIM_LICENSE_FILES = uim.h + +define TI_UIM_BUILD_CMDS + $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define TI_UIM_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/uim \ + $(TARGET_DIR)/usr/sbin/uim +endef + +$(eval $(generic-package)) diff --git a/package/ti-utils/0001-plt.h-fix-build-with-gcc-10.patch b/package/ti-utils/0001-plt.h-fix-build-with-gcc-10.patch new file mode 100644 index 00000000..e36b735e --- /dev/null +++ b/package/ti-utils/0001-plt.h-fix-build-with-gcc-10.patch @@ -0,0 +1,35 @@ +From 9ed1946cef876acd5346ae806eecd7fc2e1e5341 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 3 Oct 2020 10:32:48 +0200 +Subject: [PATCH] plt.h: fix build with gcc 10 + +Drop EFUSE_PARAMETER_TYPE_ENM to avoid the following build failure with +gcc 10 (which defaults to -fno-common): + +/home/naourr/work/instance-1/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: misc_cmds.o:(.bss+0x0): multiple definition of `EFUSE_PARAMETER_TYPE_ENM'; nvs.o:(.bss+0x0): first defined here + +Fixes: + - http://autobuild.buildroot.org/results/e96c70910544085dc5299fa59f80ab9c5922fde2 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/gxk/ti-utils/pull/2] +--- + plt.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/plt.h b/plt.h +index 523fded..8ba01c9 100644 +--- a/plt.h ++++ b/plt.h +@@ -363,7 +363,7 @@ enum EFUSE_PARAMETER_TYPE_ENMT { + TX_BIP_PD_BUFFER_VBIAS_ERROR_E, + EFUSE_NUMBER_OF_PARAMETERS_E, + EFUSE_LAST_PARAMETER_E = (EFUSE_NUMBER_OF_PARAMETERS_E - 1) +-} EFUSE_PARAMETER_TYPE_ENM; ++}; + + int get_mac_addr(int ifc_num, unsigned char *mac_addr); + +-- +2.28.0 + diff --git a/package/ti-utils/Config.in b/package/ti-utils/Config.in new file mode 100644 index 00000000..99232348 --- /dev/null +++ b/package/ti-utils/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_TI_UTILS + bool "ti-utils" + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_LIBNL + help + The calibrator and other useful utilities for TI wireless + solution, based on wl12xx driver. + + http://linuxwireless.sipsolutions.net/en/users/Drivers/wl12xx/calibrator/ + +comment "ti-utils needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/ti-utils/ti-utils.hash b/package/ti-utils/ti-utils.hash new file mode 100644 index 00000000..0548427f --- /dev/null +++ b/package/ti-utils/ti-utils.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 d05d4e3ad3599fca7854109938aebd24bbab72ac7d69dd053260f735a36613f9 ti-utils-06dbdb2727354b5f3ad7c723897f40051fddee49.tar.gz +sha256 363cef40b276a7a91ebcff3f78626d9cfe5e5a51927c725236007259403d5fc4 COPYING diff --git a/package/ti-utils/ti-utils.mk b/package/ti-utils/ti-utils.mk new file mode 100644 index 00000000..73048080 --- /dev/null +++ b/package/ti-utils/ti-utils.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# ti-utils +# +################################################################################ + +TI_UTILS_VERSION = 06dbdb2727354b5f3ad7c723897f40051fddee49 +TI_UTILS_SITE = $(call github,gxk,ti-utils,$(TI_UTILS_VERSION)) +TI_UTILS_DEPENDENCIES = libnl host-pkgconf +TI_UTILS_LICENSE = BSD-3-Clause +TI_UTILS_LICENSE_FILES = COPYING + +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 + $(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 + +define TI_UTILS_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/calibrator \ + $(TARGET_DIR)/usr/bin/calibrator + $(INSTALL) -m 0755 -D $(@D)/scripts/go.sh \ + $(TARGET_DIR)/usr/share/ti-utils/scripts/go.sh + + cp -r $(@D)/ini_files $(TARGET_DIR)/usr/share/ti-utils +endef + +$(eval $(generic-package)) diff --git a/package/tiff/Config.in b/package/tiff/Config.in new file mode 100644 index 00000000..d357d084 --- /dev/null +++ b/package/tiff/Config.in @@ -0,0 +1,75 @@ +menuconfig BR2_PACKAGE_TIFF + bool "tiff" + help + Library for handling TIFF (Tag Image File Format) images. + + http://simplesystems.org/libtiff/ + +if BR2_PACKAGE_TIFF + +config BR2_PACKAGE_TIFF_CCITT + bool "CCITT Group 3 & 4 support" + default y + +config BR2_PACKAGE_TIFF_LIBDEFLATE + bool "Libdeflate usage (still requires Zlib)" + select BR2_PACKAGE_LIBDEFLATE + select BR2_PACKAGE_TIFF_ZLIB + +config BR2_PACKAGE_TIFF_PACKBITS + bool "Macintosh PackBits algorithm" + default y + +config BR2_PACKAGE_TIFF_LZW + bool "LZW algorithm" + default y + +config BR2_PACKAGE_TIFF_THUNDER + bool "ThunderScan 4-bit RLE algorithm" + default y + +config BR2_PACKAGE_TIFF_NEXT + bool "NeXT 2-bit RLE algorithm" + default y + +config BR2_PACKAGE_TIFF_LOGLUV + bool "LogLuv high dynamic range encoding" + default y + +config BR2_PACKAGE_TIFF_MDI + bool "Microsoft Document Imaging" + default y + +config BR2_PACKAGE_TIFF_ZLIB + bool "Zlib usage (required for Deflate compression)" + default y + select BR2_PACKAGE_ZLIB + +config BR2_PACKAGE_TIFF_XZ + bool "XZ compression" + select BR2_PACKAGE_XZ + +config BR2_PACKAGE_TIFF_PIXARLOG + bool "Pixar log-format algorithm (requires Zlib)" + default y + select BR2_PACKAGE_TIFF_ZLIB + +config BR2_PACKAGE_TIFF_JPEG + bool "JPEG compression" + default y + select BR2_PACKAGE_JPEG + +config BR2_PACKAGE_TIFF_OLD_JPEG + bool "Old JPEG decompression" + default y + +config BR2_PACKAGE_TIFF_UTILITIES + bool "tiff utilities" + help + Install all tiff utilities. + +config BR2_PACKAGE_TIFF_ZSTD + bool "ZSTD compression" + select BR2_PACKAGE_ZSTD + +endif diff --git a/package/tiff/tiff.hash b/package/tiff/tiff.hash new file mode 100644 index 00000000..3aae7dc4 --- /dev/null +++ b/package/tiff/tiff.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 88b3979e6d5c7e32b50d7ec72fb15af724f6ab2cbf7e10880c360a77e4b5d99a tiff-4.6.0.tar.gz +sha256 0780558a8bfba0af1160ec1ff11ade4f41c0d7deafd6ecfc796b492a788e380d LICENSE.md diff --git a/package/tiff/tiff.mk b/package/tiff/tiff.mk new file mode 100644 index 00000000..0e5e0dd4 --- /dev/null +++ b/package/tiff/tiff.mk @@ -0,0 +1,120 @@ +################################################################################ +# +# tiff +# +################################################################################ + +TIFF_VERSION = 4.6.0 +TIFF_SITE = http://download.osgeo.org/libtiff +TIFF_LICENSE = tiff license +TIFF_LICENSE_FILES = LICENSE.md +TIFF_CPE_ID_VENDOR = libtiff +TIFF_CPE_ID_PRODUCT = libtiff +TIFF_INSTALL_STAGING = YES + +# webp has a (optional) dependency on tiff, so we can't have webp +# support in tiff, or that would create a circular dependency. +TIFF_CONF_OPTS = \ + --disable-contrib \ + --disable-lerc \ + --disable-jbig \ + --disable-tests \ + --disable-webp + +TIFF_DEPENDENCIES = host-pkgconf + +HOST_TIFF_CONF_OPTS = \ + --disable-cxx \ + --disable-zlib \ + --disable-lerc \ + --disable-libdeflate \ + --disable-lzma \ + --disable-jbig \ + --disable-jpeg \ + --disable-tests \ + --disable-webp \ + --disable-zstd +HOST_TIFF_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +TIFF_CONF_OPTS += --enable-cxx +else +TIFF_CONF_OPTS += --disable-cxx +endif + +ifneq ($(BR2_PACKAGE_TIFF_CCITT),y) +TIFF_CONF_OPTS += --disable-ccitt +endif + +ifeq ($(BR2_PACKAGE_TIFF_LIBDEFLATE),y) +TIFF_CONF_OPTS += --enable-libdeflate +TIFF_DEPENDENCIES += libdeflate +else +TIFF_CONF_OPTS += --disable-libdeflate +endif + +ifneq ($(BR2_PACKAGE_TIFF_PACKBITS),y) +TIFF_CONF_OPTS += --disable-packbits +endif + +ifneq ($(BR2_PACKAGE_TIFF_LZW),y) +TIFF_CONF_OPTS += --disable-lzw +endif + +ifneq ($(BR2_PACKAGE_TIFF_THUNDER),y) +TIFF_CONF_OPTS += --disable-thunder +endif + +ifneq ($(BR2_PACKAGE_TIFF_NEXT),y) +TIFF_CONF_OPTS += --disable-next +endif + +ifneq ($(BR2_PACKAGE_TIFF_LOGLUV),y) +TIFF_CONF_OPTS += --disable-logluv +endif + +ifneq ($(BR2_PACKAGE_TIFF_MDI),y) +TIFF_CONF_OPTS += --disable-mdi +endif + +ifneq ($(BR2_PACKAGE_TIFF_ZLIB),y) +TIFF_CONF_OPTS += --disable-zlib +else +TIFF_DEPENDENCIES += zlib +endif + +ifneq ($(BR2_PACKAGE_TIFF_XZ),y) +TIFF_CONF_OPTS += --disable-lzma +else +TIFF_DEPENDENCIES += xz +endif + +ifneq ($(BR2_PACKAGE_TIFF_PIXARLOG),y) +TIFF_CONF_OPTS += --disable-pixarlog +endif + +ifneq ($(BR2_PACKAGE_TIFF_JPEG),y) +TIFF_CONF_OPTS += --disable-jpeg +else +TIFF_DEPENDENCIES += jpeg +endif + +ifneq ($(BR2_PACKAGE_TIFF_OLD_JPEG),y) +TIFF_CONF_OPTS += --disable-old-jpeg +endif + +ifeq ($(BR2_PACKAGE_TIFF_UTILITIES),y) +TIFF_CONF_OPTS += --enable-tools +else +TIFF_CONF_OPTS += --disable-tools +endif + +ifeq ($(BR2_PACKAGE_TIFF_ZSTD),y) +TIFF_CONF_OPTS += --enable-zstd +TIFF_DEPENDENCIES += zstd +else +TIFF_CONF_OPTS += --disable-zstd +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/tig/Config.in b/package/tig/Config.in new file mode 100644 index 00000000..0a1cc934 --- /dev/null +++ b/package/tig/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_TIG + bool "tig" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_GIT # runtime + select BR2_PACKAGE_NCURSES + help + Tig is an ncurses-based text-mode interface for git. It + functions mainly as a Git repository browser, but can also + assist in staging changes for commit at chunk level and act + as a pager for output from various Git commands. + + https://jonas.github.io/tig/ diff --git a/package/tig/tig.hash b/package/tig/tig.hash new file mode 100644 index 00000000..b5aebb9c --- /dev/null +++ b/package/tig/tig.hash @@ -0,0 +1,6 @@ +# From: +# https://github.com/jonas/tig/releases/download/tig-2.5.10/tig-2.5.10.tar.gz.sha256 +sha256 f655cc1366fc10058a2bd505bb88ca78e653ff7526c1b81774c44b9d841210e3 tig-2.5.10.tar.gz + +# Locally calculated +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/tig/tig.mk b/package/tig/tig.mk new file mode 100644 index 00000000..d3aa6df6 --- /dev/null +++ b/package/tig/tig.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# tig +# +################################################################################ + +TIG_VERSION = 2.5.10 +TIG_SITE = https://github.com/jonas/tig/releases/download/tig-$(TIG_VERSION) +TIG_LICENSE = GPL-2.0+ +TIG_LICENSE_FILES = COPYING + +TIG_DEPENDENCIES = ncurses + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +TIG_DEPENDENCIES += libiconv +TIG_CONF_OPTS += --with-iconv=$(STAGING_DIR)/usr +else +TIG_CONF_OPTS += --without-iconv +endif + +$(eval $(autotools-package)) diff --git a/package/time/Config.in b/package/time/Config.in new file mode 100644 index 00000000..40275cf0 --- /dev/null +++ b/package/time/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_TIME + bool "time" + depends on BR2_USE_MMU # fork() + # See https://savannah.gnu.org/bugs/index.php?48000 + depends on !BR2_STATIC_LIBS + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + The GNU time utility. + + http://savannah.gnu.org/projects/time/ + +comment "time needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/package/time/time.hash b/package/time/time.hash new file mode 100644 index 00000000..3afa0363 --- /dev/null +++ b/package/time/time.hash @@ -0,0 +1,5 @@ +# From https://lists.gnu.org/archive/html/info-gnu/2018-03/msg00004.html +sha1 75068c26abbed3ad3980685bae21d7202d288317 time-1.9.tar.gz +sha256 fbacf0c81e62429df3e33bda4cee38756604f18e01d977338e23306a3e3b521e time-1.9.tar.gz +# Locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/time/time.mk b/package/time/time.mk new file mode 100644 index 00000000..400eca0d --- /dev/null +++ b/package/time/time.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# time +# +################################################################################ + +TIME_VERSION = 1.9 +TIME_SITE = $(BR2_GNU_MIRROR)/time +TIME_CONF_ENV = ac_cv_func_wait3_rusage=yes +TIME_LICENSE = GPL-3.0+ +TIME_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/timescaledb/Config.in b/package/timescaledb/Config.in new file mode 100644 index 00000000..af4a8685 --- /dev/null +++ b/package/timescaledb/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_TIMESCALEDB + bool "timescaledb" + depends on BR2_PACKAGE_POSTGRESQL + help + TimescaleDB is an open-source database designed + to make SQL scalable for time-series data. + It is engineered up from PostgreSQL and packaged + as a PostgreSQL extension, providing automatic + partitioning across time and space (partitioning key), + as well as full SQL support. + + https://www.timescale.com/ diff --git a/package/timescaledb/timescaledb.hash b/package/timescaledb/timescaledb.hash new file mode 100644 index 00000000..ba81c74c --- /dev/null +++ b/package/timescaledb/timescaledb.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 ff2019f734566f73af0a8041db50f7f1d0ad6967f7e2e7d796d388cd38c0b5bb timescaledb-2.15.0.tar.gz +sha256 0378e0948feefd85f579319c74d6e2b671194037f550c7176ef26649d94c895b LICENSE diff --git a/package/timescaledb/timescaledb.mk b/package/timescaledb/timescaledb.mk new file mode 100644 index 00000000..d6c81642 --- /dev/null +++ b/package/timescaledb/timescaledb.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# timescaledb +# +################################################################################ + +TIMESCALEDB_VERSION = 2.15.0 +TIMESCALEDB_SITE = $(call github,timescale,timescaledb,$(TIMESCALEDB_VERSION)) +TIMESCALEDB_LICENSE = Apache-2.0 +TIMESCALEDB_LICENSE_FILES = LICENSE +TIMESCALEDB_CPE_ID_VENDOR = timescale + +TIMESCALEDB_DEPENDENCIES = postgresql + +# The PG_CPPFLAGS, PG_CFLAGS, PG_LDFLAGS and PG_LIBS variables must be +# non-empty, otherwise CMake will call the pg_config script, and our +# pg_config replacement doesn't implement --cppflags --cflags +# --ldflags and --libs. +TIMESCALEDB_CONF_OPTS = \ + -DTAP_CHECKS=OFF \ + -DREGRESS_CHECKS=OFF \ + -DWARNINGS_AS_ERRORS=OFF \ + -DPG_PKGLIBDIR=lib/postgresql \ + -DPG_SHAREDIR=share/postgresql \ + -DPG_BINDIR=bin \ + -DPG_CPPFLAGS="$(TARGET_CPPFLAGS) " \ + -DPG_CFLAGS="$(TARGET_CFLAGS) " \ + -DPG_LDFLAGS="$(TARGET_LDFLAGS) " \ + -DPG_LIBS=" " + +# There's no dependency on the OpenSSL package, because USE_OPENSSL +# only tells if postgresql was built with OpenSSL support or not. +ifeq ($(BR2_PACKAGE_OPENSSL),y) +TIMESCALEDB_CONF_OPTS += -DUSE_OPENSSL=1 +else +TIMESCALEDB_CONF_OPTS += -DUSE_OPENSSL=0 +endif + +$(eval $(cmake-package)) diff --git a/package/tinc/Config.in b/package/tinc/Config.in new file mode 100644 index 00000000..837f556b --- /dev/null +++ b/package/tinc/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_TINC + bool "tinc" + depends on !BR2_STATIC_LIBS # tinc requires libdl for OpenSSL + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LZO + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + tinc is a Virtual Private Network (VPN) daemon that uses + tunnelling and encryption to create a secure private network + between hosts on the Internet. + + http://www.tinc-vpn.org/ + +comment "tinc needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/tinc/tinc.hash b/package/tinc/tinc.hash new file mode 100644 index 00000000..4e12a290 --- /dev/null +++ b/package/tinc/tinc.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 40f73bb3facc480effe0e771442a706ff0488edea7a5f2505d4ccb2aa8163108 tinc-1.0.36.tar.gz +sha256 3b37ffbf3459f2aceeef169aa65ee8b111ac1f8ba24a2a1b90b079678a9c7faa COPYING +sha256 9bf76a8aa304d807df20bf3d221c21d259764be63e39b58f299b80ba3ac14b5b COPYING.README diff --git a/package/tinc/tinc.mk b/package/tinc/tinc.mk new file mode 100644 index 00000000..0726e81d --- /dev/null +++ b/package/tinc/tinc.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# tinc +# +################################################################################ + +TINC_VERSION = 1.0.36 +TINC_SITE = http://www.tinc-vpn.org/packages +TINC_DEPENDENCIES = lzo openssl zlib +TINC_LICENSE = GPL-2.0+ with OpenSSL exception +TINC_LICENSE_FILES = COPYING COPYING.README +TINC_CPE_ID_VENDOR = tinc-vpn +TINC_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -std=c99" + +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) +TINC_CONF_ENV += \ + ax_cv_check_cflags___fPIE=no \ + ax_cv_check_ldflags___pie=no +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +TINC_DEPENDENCIES += systemd +TINC_CONF_OPTS += --with-systemdsystemunitdir=/usr/lib/systemd/system +endif + +$(eval $(autotools-package)) diff --git a/package/tini/Config.in b/package/tini/Config.in new file mode 100644 index 00000000..719e1e1f --- /dev/null +++ b/package/tini/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_TINI + bool "tini" + depends on BR2_USE_MMU # fork() + help + tini is a simple but valid init binary to + act as PID 1 for containers. + + https://github.com/krallin/tini + +if BR2_PACKAGE_TINI + +config BR2_PACKAGE_TINI_MINIMAL + bool "build minimal variant" + help + Disables argument parsing and verbose output. + +endif diff --git a/package/tini/tini.hash b/package/tini/tini.hash new file mode 100644 index 00000000..83a97a40 --- /dev/null +++ b/package/tini/tini.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 e5f46bca81266bdd511cf08018d66866870531794569c04f9b45f50dd23c28b0 LICENSE +sha256 0fd35a7030052acd9f58948d1d900fe1e432ee37103c5561554408bdac6bbf0d tini-0.19.0.tar.gz diff --git a/package/tini/tini.mk b/package/tini/tini.mk new file mode 100644 index 00000000..83e86237 --- /dev/null +++ b/package/tini/tini.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# tini +# +################################################################################ + +TINI_VERSION = 0.19.0 +TINI_SITE = $(call github,krallin,tini,v$(TINI_VERSION)) +TINI_LICENSE = MIT +TINI_LICENSE_FILES = LICENSE +TINI_CPE_ID_VALID = YES + +TINI_CFLAGS = $(TARGET_CFLAGS) \ + -static \ + -DTINI_VERSION=\"$(TINI_VERSION)\" \ + -DTINI_GIT=\"\" + +ifeq ($(BR2_PACKAGE_TINI_MINIMAL),y) +TINI_CFLAGS += -DTINI_MINIMAL +endif + +define TINI_CONFIGURE_CMDS + printf "#pragma once\n" > $(@D)/src/tiniConfig.h +endef + +define TINI_BUILD_CMDS + mkdir -p $(@D)/bin + $(TARGET_CC) $(TINI_CFLAGS) \ + -o $(@D)/bin/tini $(@D)/src/tini.c +endef + +define TINI_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/bin/tini $(TARGET_DIR)/usr/bin/tini + mkdir -p $(TARGET_DIR)/usr/libexec/docker + ln -sf ../../bin/tini $(TARGET_DIR)/usr/libexec/docker/docker-init +endef + +# Tini's CMakeLists.txt is not suitable for Buildroot. +$(eval $(generic-package)) diff --git a/package/tinifier/Config.in b/package/tinifier/Config.in new file mode 100644 index 00000000..eae8b8f4 --- /dev/null +++ b/package/tinifier/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_TINIFIER + bool "tinifier" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_GO + help + CLI tool for images compressing + + This tool uses tinypng.com API endpoint for compressing your + local jpg/png images (it supports parallel jobs). + + https://github.com/tarampampam/tinifier diff --git a/package/tinifier/tinifier.hash b/package/tinifier/tinifier.hash new file mode 100644 index 00000000..c43e77b8 --- /dev/null +++ b/package/tinifier/tinifier.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a56fd648cdc86f82837fedfd3e1a9ecc5750f15be24630ea1533d64fc6d1c2bb tinifier-3.4.0-go2.tar.gz +sha256 18f524914c0df04e21289c3d9ca3e27c10abe5869cc4e4d4790a1b2c56df282c LICENSE diff --git a/package/tinifier/tinifier.mk b/package/tinifier/tinifier.mk new file mode 100644 index 00000000..d7ed6f7c --- /dev/null +++ b/package/tinifier/tinifier.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# tinifier +# +################################################################################ + +TINIFIER_VERSION = 3.4.0 +TINIFIER_SITE = $(call github,tarampampam,tinifier,v$(TINIFIER_VERSION)) +TINIFIER_LICENSE = MIT +TINIFIER_LICENSE_FILES = LICENSE +TINIFIER_GOMOD = ./cmd/tinifier + +$(eval $(golang-package)) diff --git a/package/tinyalsa/0001-include-time.h-before-asound.h.patch b/package/tinyalsa/0001-include-time.h-before-asound.h.patch new file mode 100644 index 00000000..c91213e2 --- /dev/null +++ b/package/tinyalsa/0001-include-time.h-before-asound.h.patch @@ -0,0 +1,76 @@ +From d91e947bda590765e1c791f40e8ffb4135ab1cd3 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 11 Jan 2022 00:01:49 +0100 +Subject: [PATCH] include time.h before asound.h + +Include time.h before asound.h to avoid the following build failure on +musl that was already fixed a long time with +https://github.com/tinyalsa/tinyalsa/commit/c8333f8c7a4e4b9549abeef7530b2cd20a18e537 +but reappeared on version 2.0.0: + +In file included from ../src/pcm_hw.c:42: +/home/peko/autobuild/instance-1/output-1/host/i586-buildroot-linux-musl/sysroot/usr/include/sound/asound.h:444:18: error: field 'trigger_tstamp' has incomplete type + 444 | struct timespec trigger_tstamp; /* time when stream was started/stopped/paused */ + | ^~~~~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/a75e23dc585bd071f4d65face5489ed6ac22edbe + +Signed-off-by: Fabrice Fontaine +[Retrieved from: +https://github.com/tinyalsa/tinyalsa/commit/c127110249967e0722d80bb41e33713accdcff8f] +--- + src/mixer.c | 1 + + src/mixer_hw.c | 1 + + src/pcm_hw.c | 1 + + src/pcm_plugin.c | 1 + + 4 files changed, 4 insertions(+) + +diff --git a/src/mixer.c b/src/mixer.c +index afbc015..029fc84 100644 +--- a/src/mixer.c ++++ b/src/mixer.c +@@ -55,6 +55,7 @@ + #define __user + #endif + ++#include + #include + + #include +diff --git a/src/mixer_hw.c b/src/mixer_hw.c +index da5a390..50e9d07 100644 +--- a/src/mixer_hw.c ++++ b/src/mixer_hw.c +@@ -42,6 +42,7 @@ + #include + + #include ++#include + #include + + #include "mixer_io.h" +diff --git a/src/pcm_hw.c b/src/pcm_hw.c +index 5eb53be..2383ae0 100644 +--- a/src/pcm_hw.c ++++ b/src/pcm_hw.c +@@ -41,6 +41,7 @@ + #include + #include + #include ++#include + #include + #include + +diff --git a/src/pcm_plugin.c b/src/pcm_plugin.c +index 47bf4a5..b6b69aa 100644 +--- a/src/pcm_plugin.c ++++ b/src/pcm_plugin.c +@@ -40,6 +40,7 @@ + + #include + #include ++#include + #include + #include + #include diff --git a/package/tinyalsa/Config.in b/package/tinyalsa/Config.in new file mode 100644 index 00000000..b4d4aeb2 --- /dev/null +++ b/package/tinyalsa/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_TINYALSA + bool "tinyalsa" + depends on !BR2_STATIC_LIBS + help + a small library to interface with ALSA in the Linux kernel + + The aims are: + + - Provide a basic pcm and mixer API + - If it's not absolutely needed, don't add it to the API + - Avoid supporting complex and unnecessary operations that + could be dealt with at a higher level + + https://github.com/tinyalsa/tinyalsa + +if BR2_PACKAGE_TINYALSA + +config BR2_PACKAGE_TINYALSA_TOOLS + bool "tinyalsa tools" + help + Build utility tools (tinyplay, tinycap, tinymix, tinypcminfo) + +endif #BR2_PACKAGE_TINYALSA + +comment "tinyalsa needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/tinyalsa/tinyalsa.hash b/package/tinyalsa/tinyalsa.hash new file mode 100644 index 00000000..f7673b17 --- /dev/null +++ b/package/tinyalsa/tinyalsa.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 573ae0b2d3480851c1d2a12503ead2beea27f92d44ed47b74b553ba947994ef1 tinyalsa-2.0.0.tar.gz +sha256 ea22a4711f5250f88a4d7011fbc65367d1b02ac954dcc49f5b6d7c135e6537c4 NOTICE diff --git a/package/tinyalsa/tinyalsa.mk b/package/tinyalsa/tinyalsa.mk new file mode 100644 index 00000000..fe6d373e --- /dev/null +++ b/package/tinyalsa/tinyalsa.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# tinyalsa +# +################################################################################ + +TINYALSA_VERSION = 2.0.0 +TINYALSA_SITE = $(call github,tinyalsa,tinyalsa,v$(TINYALSA_VERSION)) +TINYALSA_LICENSE = BSD-3-Clause +TINYALSA_LICENSE_FILES = NOTICE +TINYALSA_INSTALL_STAGING = YES +TINYALSA_CONF_OPTS = -Ddocs=disabled -Dexamples=disabled + +ifeq ($(BR2_PACKAGE_TINYALSA_TOOLS),y) +TINYALSA_CONF_OPTS += -Dutils=enabled +else +TINYALSA_CONF_OPTS += -Dutils=disabled +endif + +$(eval $(meson-package)) diff --git a/package/tinycbor/0001-Makefile-add-DISABLE_WERROR.patch b/package/tinycbor/0001-Makefile-add-DISABLE_WERROR.patch new file mode 100644 index 00000000..334bea7e --- /dev/null +++ b/package/tinycbor/0001-Makefile-add-DISABLE_WERROR.patch @@ -0,0 +1,44 @@ +From 5f26eaf8d7be760fafe11ef4a6e0f907e7e8c3f0 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 10 Jan 2022 23:17:45 +0100 +Subject: [PATCH] Makefile: add DISABLE_WERROR + +Allow the user to disable -Werror to avoid the following build failure +with gcc 4.8 raised since version 0.6.0 and +https://github.com/intel/tinycbor/commit/e2a4ed135c4d9101c4df83f2dd033cd249b6ef07: + +/home/buildroot/autobuild/instance-1/output-1/host/bin/arm-none-linux-gnueabi-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -I./src -std=gnu99 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -g0 -D_FORTIFY_SOURCE=1 -Werror=incompatible-pointer-types -Werror=implicit-function-declaration -Werror=int-conversion -fPIC -c -o src/cborerrorstrings.pic.o src/cborerrorstrings.c +cc1: error: -Werror=incompatible-pointer-types: no option -Wincompatible-pointer-types +cc1: error: -Werror=int-conversion: no option -Wint-conversion + +Fixes: + - http://autobuild.buildroot.org/results/a9f/a9fe64c42bb96f9e7b4af3050464f6570c1c00fa + +Signed-off-by: Fabrice Fontaine +[Retrieved from: +https://github.com/intel/tinycbor/commit/5f26eaf8d7be760fafe11ef4a6e0f907e7e8c3f0] +--- + Makefile | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 6492ea16..3cde2b3d 100644 +--- a/Makefile ++++ b/Makefile +@@ -236,10 +236,15 @@ tag: distcheck + .SECONDARY: + + cflags := $(CPPFLAGS) -I$(SRCDIR)src +-cflags += -std=gnu99 $(CFLAGS) \ ++cflags += -std=gnu99 $(CFLAGS) ++ ++ifneq ($(DISABLE_WERROR),1) ++cflags += \ + -Werror=incompatible-pointer-types \ + -Werror=implicit-function-declaration \ + -Werror=int-conversion ++endif ++ + %.o: %.c + @test -d $(@D) || $(MKDIR) $(@D) + $(CC) $(cflags) $($(basename $(notdir $@))_CCFLAGS) -c -o $@ $< diff --git a/package/tinycbor/Config.in b/package/tinycbor/Config.in new file mode 100644 index 00000000..41f0b5fa --- /dev/null +++ b/package/tinycbor/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_TINYCBOR + bool "tinycbor" + help + Concise Binary Object Representation (CBOR) Library + + https://github.com/01org/tinycbor diff --git a/package/tinycbor/tinycbor.hash b/package/tinycbor/tinycbor.hash new file mode 100644 index 00000000..0e616d1e --- /dev/null +++ b/package/tinycbor/tinycbor.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 512e2c9fce74f60ef9ed3af59161e905f9e19f30a52e433fc55f39f4c70d27e4 tinycbor-0.6.0.tar.gz +sha256 3c6ba0b5bfa7830505301ffb336a17b0748e0d61c4d34216e9dc98f10e40395e LICENSE diff --git a/package/tinycbor/tinycbor.mk b/package/tinycbor/tinycbor.mk new file mode 100644 index 00000000..d2fb583e --- /dev/null +++ b/package/tinycbor/tinycbor.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# tinycbor +# +################################################################################ + +TINYCBOR_VERSION = 0.6.0 +TINYCBOR_SITE = $(call github,intel,tinycbor,v$(TINYCBOR_VERSION)) +TINYCBOR_LICENSE = MIT +TINYCBOR_LICENSE_FILES = LICENSE + +TINYCBOR_DEPENDENCIES = host-pkgconf +TINYCBOR_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_CJSON),y) +TINYCBOR_DEPENDENCIES += cjson +endif + +TINYCBOR_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) DISABLE_WERROR=1 V=1 prefix=/usr + +ifeq ($(BR2_STATIC_LIBS),y) +TINYCBOR_MAKE_OPTS += BUILD_STATIC=1 BUILD_SHARED=0 +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +TINYCBOR_MAKE_OPTS += BUILD_STATIC=1 BUILD_SHARED=1 +else ifeq ($(BR2_SHARED_LIBS),y) +TINYCBOR_MAKE_OPTS += BUILD_STATIC=0 BUILD_SHARED=1 +endif + +# disabled parallel build because of build failures while +# producing the .config file +define TINYCBOR_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) $(TINYCBOR_MAKE_OPTS) -C $(@D) +endef + +define TINYCBOR_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TINYCBOR_MAKE_OPTS) -C $(@D) \ + DESTDIR=$(STAGING_DIR) install +endef + +define TINYCBOR_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TINYCBOR_MAKE_OPTS) -C $(@D) \ + DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/tinycompress/0001-wave-add-time.h-missing-header-inclusion.patch b/package/tinycompress/0001-wave-add-time.h-missing-header-inclusion.patch new file mode 100644 index 00000000..4068a540 --- /dev/null +++ b/package/tinycompress/0001-wave-add-time.h-missing-header-inclusion.patch @@ -0,0 +1,39 @@ +From 7d3b8ac47789545af5a4cd2fc1cf9bcfb91ae3b0 Mon Sep 17 00:00:00 2001 +From: Julien Olivain +Date: Sat, 29 Oct 2022 12:51:17 +0200 +Subject: [PATCH] wave: add missing header inclusion + +When compiling tinycompress with some libc other than glibc +(e.g. musl libc), compilation fails with the following error: + + In file included from wave.c:11:0: + /path/to/gcc/sysroot/usr/include/sound/asound.h:404:18: error: field 'trigger_tstamp' has incomplete type + struct timespec trigger_tstamp; /* time when stream was started/stopped/paused */ + [...] + +According to POSIX, "struct timespec" is defined in . See: +https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/time.h.html + +This patch fixes this build failure by including prior +. + +Signed-off-by: Julien Olivain +--- + src/utils/wave.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/utils/wave.c b/src/utils/wave.c +index a74149a..d17f66a 100644 +--- a/src/utils/wave.c ++++ b/src/utils/wave.c +@@ -8,6 +8,7 @@ + #include + #include + #include ++#include + #include + + #include "tinycompress/tinywave.h" +-- +2.38.1 + diff --git a/package/tinycompress/Config.in b/package/tinycompress/Config.in new file mode 100644 index 00000000..aff1943c --- /dev/null +++ b/package/tinycompress/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_TINYCOMPRESS + bool "tinycompress" + depends on !BR2_STATIC_LIBS # dlfcn.h + help + tinycompress is a library for compress audio offload in alsa. + + https://www.alsa-project.org/ + +comment "tinycompress needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/tinycompress/tinycompress.hash b/package/tinycompress/tinycompress.hash new file mode 100644 index 00000000..f86b75f3 --- /dev/null +++ b/package/tinycompress/tinycompress.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +sha256 ebbe788c28328e7cca245aaf9194a5ad0dc91e9e0dc883c2cf9feb6d42c9f3fc tinycompress-1.2.11.tar.bz2 + +# Locally calculated +sha256 912ea37a4435594a3b3c35f04efa4b5b7af2e68a05f5319c16c881711a31e4b7 COPYING diff --git a/package/tinycompress/tinycompress.mk b/package/tinycompress/tinycompress.mk new file mode 100644 index 00000000..fabd5884 --- /dev/null +++ b/package/tinycompress/tinycompress.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# tinycompress +# +################################################################################ + +TINYCOMPRESS_VERSION = 1.2.11 +TINYCOMPRESS_SOURCE = tinycompress-$(TINYCOMPRESS_VERSION).tar.bz2 +TINYCOMPRESS_SITE = https://www.alsa-project.org/files/pub/tinycompress +TINYCOMPRESS_LICENSE = BSD-3-Clause and LGPL-2.1 +TINYCOMPRESS_LICENSE_FILES = COPYING +TINYCOMPRESS_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/tinydtls/0001-sha2-sha2.c-fix-build-on-big-endian.patch b/package/tinydtls/0001-sha2-sha2.c-fix-build-on-big-endian.patch new file mode 100644 index 00000000..09d74d8a --- /dev/null +++ b/package/tinydtls/0001-sha2-sha2.c-fix-build-on-big-endian.patch @@ -0,0 +1,119 @@ +From 608738ccad9ac3743ccd535bde1e84f401e6176f Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 20 Jun 2020 12:50:40 +0200 +Subject: [PATCH] sha2/sha2.c: fix build on big endian + +Build is broken since 865ec9ba1d44e629c1107c299aebd20e901a19ff because +tmp is undefined in put32be and put64be: + +sha2.c: In function 'put32be': +sha2.c:177:34: error: 'tmp' undeclared (first use in this function) + MEMCPY_BCOPY(data, &val, sizeof(tmp)); + ^~~ + +Fix this error by replacing tmp by val + +Moreover, move MEMCPY_BCOPY before its usage or linking step will fail + +Fixes: + - http://autobuild.buildroot.org/results/e8704e02fdede7b63e22da552292977b23380b32 + +Signed-off-by: Fabrice Fontaine +[Upstream: https://github.com/eclipse/tinydtls/commit/78a2d32f47165eda10cbf8f5cf79f86fa1c4872b] +--- + sha2/sha2.c | 58 ++++++++++++++++++++++++++--------------------------- + 1 file changed, 29 insertions(+), 29 deletions(-) + +diff --git a/sha2/sha2.c b/sha2/sha2.c +index cb6d90f..5c794c6 100644 +--- a/sha2/sha2.c ++++ b/sha2/sha2.c +@@ -114,6 +114,33 @@ + #error Define BYTE_ORDER to be equal to either LITTLE_ENDIAN or BIG_ENDIAN + #endif + ++/* ++ * Macros for copying blocks of memory and for zeroing out ranges ++ * of memory. Using these macros makes it easy to switch from ++ * using memset()/memcpy() and using bzero()/bcopy(). ++ * ++ * Please define either SHA2_USE_MEMSET_MEMCPY or define ++ * SHA2_USE_BZERO_BCOPY depending on which function set you ++ * choose to use: ++ */ ++#if !defined(SHA2_USE_MEMSET_MEMCPY) && !defined(SHA2_USE_BZERO_BCOPY) ++/* Default to memset()/memcpy() if no option is specified */ ++#define SHA2_USE_MEMSET_MEMCPY 1 ++#endif ++#if defined(SHA2_USE_MEMSET_MEMCPY) && defined(SHA2_USE_BZERO_BCOPY) ++/* Abort with an error if BOTH options are defined */ ++#error Define either SHA2_USE_MEMSET_MEMCPY or SHA2_USE_BZERO_BCOPY, not both! ++#endif ++ ++#ifdef SHA2_USE_MEMSET_MEMCPY ++#define MEMSET_BZERO(p,l) memset((p), 0, (l)) ++#define MEMCPY_BCOPY(d,s,l) memcpy((d), (s), (l)) ++#endif ++#ifdef SHA2_USE_BZERO_BCOPY ++#define MEMSET_BZERO(p,l) bzero((p), (l)) ++#define MEMCPY_BCOPY(d,s,l) bcopy((s), (d), (l)) ++#endif ++ + /* + * Define the followingsha2_* types to types of the correct length on + * the native archtecture. Most BSD systems and Linux define u_intXX_t +@@ -174,7 +201,7 @@ static inline void put32be(sha2_byte* data, sha2_word32 val) + data[1] = val; val >>= 8; + data[0] = val; + #else /* BYTE_ORDER != LITTLE_ENDIAN */ +- MEMCPY_BCOPY(data, &val, sizeof(tmp)); ++ MEMCPY_BCOPY(data, &val, sizeof(val)); + #endif /* BYTE_ORDER != LITTLE_ENDIAN */ + } + +@@ -209,7 +236,7 @@ static inline void put64be(sha2_byte* data, sha2_word64 val) + data[1] = val; val >>= 8; + data[0] = val; + #else /* BYTE_ORDER != LITTLE_ENDIAN */ +- MEMCPY_BCOPY(data, &val, sizeof(tmp)); ++ MEMCPY_BCOPY(data, &val, sizeof(val)); + #endif /* BYTE_ORDER != LITTLE_ENDIAN */ + } + +@@ -225,33 +252,6 @@ static inline void put64be(sha2_byte* data, sha2_word64 val) + } \ + } + +-/* +- * Macros for copying blocks of memory and for zeroing out ranges +- * of memory. Using these macros makes it easy to switch from +- * using memset()/memcpy() and using bzero()/bcopy(). +- * +- * Please define either SHA2_USE_MEMSET_MEMCPY or define +- * SHA2_USE_BZERO_BCOPY depending on which function set you +- * choose to use: +- */ +-#if !defined(SHA2_USE_MEMSET_MEMCPY) && !defined(SHA2_USE_BZERO_BCOPY) +-/* Default to memset()/memcpy() if no option is specified */ +-#define SHA2_USE_MEMSET_MEMCPY 1 +-#endif +-#if defined(SHA2_USE_MEMSET_MEMCPY) && defined(SHA2_USE_BZERO_BCOPY) +-/* Abort with an error if BOTH options are defined */ +-#error Define either SHA2_USE_MEMSET_MEMCPY or SHA2_USE_BZERO_BCOPY, not both! +-#endif +- +-#ifdef SHA2_USE_MEMSET_MEMCPY +-#define MEMSET_BZERO(p,l) memset((p), 0, (l)) +-#define MEMCPY_BCOPY(d,s,l) memcpy((d), (s), (l)) +-#endif +-#ifdef SHA2_USE_BZERO_BCOPY +-#define MEMSET_BZERO(p,l) bzero((p), (l)) +-#define MEMCPY_BCOPY(d,s,l) bcopy((s), (d), (l)) +-#endif +- + + /*** THE SIX LOGICAL FUNCTIONS ****************************************/ + /* +-- +2.26.2 + diff --git a/package/tinydtls/Config.in b/package/tinydtls/Config.in new file mode 100644 index 00000000..98cbbb58 --- /dev/null +++ b/package/tinydtls/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_TINYDTLS + bool "tinydtls" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + tinydtls is a library for Datagram Transport Layer Security + (DTLS) covering both the client and the server state + machine. It is implemented in C and provides support for + the mandatory cipher suites specified in CoAP. + + https://projects.eclipse.org/projects/iot.tinydtls + +comment "tinydtls needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/tinydtls/tinydtls.hash b/package/tinydtls/tinydtls.hash new file mode 100644 index 00000000..be6bf182 --- /dev/null +++ b/package/tinydtls/tinydtls.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 af73742835b5a66dc0b4a9c126ca8243b5db2986b4969d76e2b4531aa7e13f67 tinydtls-0.9-rc1.tar.gz +sha256 7e906fb56da52bb6bba38e77eec00e7d37fe65b0b7b28c4bf68ff036573d0de5 LICENSE diff --git a/package/tinydtls/tinydtls.mk b/package/tinydtls/tinydtls.mk new file mode 100644 index 00000000..bba9e5f6 --- /dev/null +++ b/package/tinydtls/tinydtls.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# tinydtls +# +################################################################################ + +TINYDTLS_VERSION = 0.9-rc1 +TINYDTLS_SITE = $(call github,eclipse,tinydtls,v$(TINYDTLS_VERSION)) +TINYDTLS_LICENSE = EPL-1.0 or EDL-1.0 +TINYDTLS_LICENSE_FILES = LICENSE +TINYDTLS_CPE_ID_VENDOR = eclipse +TINYDTLS_INSTALL_STAGING = YES +TINYDTLS_DEPENDENCIES = host-pkgconf +# From git +TINYDTLS_AUTORECONF = YES +# use inttypes.h data types instead of u_intXX_t for musl compatibility +TINYDTLS_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -DSHA2_USE_INTTYPES_H" + +# Fix build with automake >= 1.16.4 +define TINYDTLS_TOUCH_AR_LIB + touch $(@D)/ar-lib +endef +TINYDTLS_PRE_CONFIGURE_HOOKS += TINYDTLS_TOUCH_AR_LIB + +$(eval $(autotools-package)) diff --git a/package/tinyproxy/Config.in b/package/tinyproxy/Config.in new file mode 100644 index 00000000..aec2ab81 --- /dev/null +++ b/package/tinyproxy/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_TINYPROXY + bool "tinyproxy" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + help + Tinyproxy is a small, efficient HTTP/SSL proxy daemon released + under the GNU General Public License. Tinyproxy is very + useful in a small network setting, where a larger proxy would + be too resource intensive. + + https://tinyproxy.github.io + +comment "tinyproxy needs a toolchain w/ threads, wchar" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR + depends on BR2_USE_MMU diff --git a/package/tinyproxy/tinyproxy.hash b/package/tinyproxy/tinyproxy.hash new file mode 100644 index 00000000..8d4bb695 --- /dev/null +++ b/package/tinyproxy/tinyproxy.hash @@ -0,0 +1,4 @@ +# From https://github.com/tinyproxy/tinyproxy/releases/tag/1.11.2 +sha512 008e43b770f946965d5a3fbad1881859e30b66a3a4a97cf9982e63d81139da7a8f23937601b72f32276166cd170008cafec9231b616fc840f05cae3c1329be35 tinyproxy-1.11.2.tar.xz +# locally computed +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/tinyproxy/tinyproxy.mk b/package/tinyproxy/tinyproxy.mk new file mode 100644 index 00000000..6656a752 --- /dev/null +++ b/package/tinyproxy/tinyproxy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# tinyproxy +# +################################################################################ + +TINYPROXY_VERSION = 1.11.2 +TINYPROXY_SITE = https://github.com/tinyproxy/tinyproxy/releases/download/$(TINYPROXY_VERSION) +TINYPROXY_SOURCE = tinyproxy-$(TINYPROXY_VERSION).tar.xz +TINYPROXY_LICENSE = GPL-2.0+ +TINYPROXY_LICENSE_FILES = COPYING +TINYPROXY_CPE_ID_VALID = YES + +$(eval $(autotools-package)) diff --git a/package/tinyssh/Config.in b/package/tinyssh/Config.in new file mode 100644 index 00000000..da19d2d4 --- /dev/null +++ b/package/tinyssh/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_TINYSSH + bool "tinyssh" + depends on BR2_USE_MMU # fork() + help + TinySSH is a minimalistic SSH server which implements only + a subset of SSHv2 features. + + https://tinyssh.org diff --git a/package/tinyssh/tinyssh.hash b/package/tinyssh/tinyssh.hash new file mode 100644 index 00000000..bdb15042 --- /dev/null +++ b/package/tinyssh/tinyssh.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 d2cd49d0e5e8bdb808d86f07f946a0cfbf2dc9a449a4b8243a82be267d852b62 tinyssh-20240101.tar.gz +sha256 a2010f343487d3f7618affe54f789f5487602331c0a8d03f49e9a7c547cf0499 LICENCE diff --git a/package/tinyssh/tinyssh.mk b/package/tinyssh/tinyssh.mk new file mode 100644 index 00000000..e92ac628 --- /dev/null +++ b/package/tinyssh/tinyssh.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# tinyssh +# +################################################################################ + +TINYSSH_VERSION = 20240101 +TINYSSH_SITE = $(call github,janmojzis,tinyssh,$(TINYSSH_VERSION)) +TINYSSH_LICENSE = CC0-1.0 +TINYSSH_LICENSE_FILES = LICENCE + +define TINYSSH_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) cross-compile +endef + +define TINYSSH_INSTALL_TARGET_CMDS + $(MAKE) DESTDIR="$(TARGET_DIR)" -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/tinyxml/0001-In-stamp-always-advance-the-pointer-if-p-0xef.patch b/package/tinyxml/0001-In-stamp-always-advance-the-pointer-if-p-0xef.patch new file mode 100644 index 00000000..ea0f6476 --- /dev/null +++ b/package/tinyxml/0001-In-stamp-always-advance-the-pointer-if-p-0xef.patch @@ -0,0 +1,37 @@ +From f7ca0035d17a663f55668e662b840afce7b86112 Mon Sep 17 00:00:00 2001 +From: Christian Voegl +Date: Wed, 27 Oct 2021 11:25:18 +0200 +Subject: [PATCH] In stamp always advance the pointer if *p= 0xef + +The current implementation only advanced if 0xef is followed +by two non-zero bytes. In case of malformed input (0xef should be +the start byte of a three byte character) this leads to an infinite +loop. (CVE-2021-42260) + +[Retrieved (and backported) from: +https://sourceforge.net/p/tinyxml/git/merge-requests/1] +Signed-off-by: Fabrice Fontaine +--- + tinyxmlparser.cpp | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/tinyxmlparser.cpp b/src/tinyxmlparser.cpp +index 81b7eae..8aa0dfa 100755 +--- a/src/tinyxmlparser.cpp ++++ b/src/tinyxmlparser.cpp +@@ -274,6 +274,12 @@ void TiXmlParsingData::Stamp( const char* now, TiXmlEncoding encoding ) + else + { p +=3; ++col; } // A normal character. + } ++ else ++ { ++ // TIXML_UTF_LEAD_0 (239) is the start character of a 3 byte sequence, so ++ // there is something wrong here. Just advance the pointer to evade infinite loops ++ ++p; ++ } + } + else + { +-- +2.34.1 + diff --git a/package/tinyxml/Config.in b/package/tinyxml/Config.in new file mode 100644 index 00000000..061ff671 --- /dev/null +++ b/package/tinyxml/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_TINYXML + bool "tinyxml" + depends on BR2_INSTALL_LIBSTDCPP + help + TinyXML is a simple, small, C++ XML parser that can be + easily integrating into other programs. + + https://github.com/leethomason/tinyxml2 + +comment "tinyxml needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/tinyxml/tinyxml.hash b/package/tinyxml/tinyxml.hash new file mode 100644 index 00000000..9e9a4f72 --- /dev/null +++ b/package/tinyxml/tinyxml.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 8164c9ad48b9028667768a584d62f7760cfbfb90d0dd6214ad174403058da10c tinyxml-2.6.2_2.tar.gz +sha256 a65b8363834ccbe31ab7b49dcba723ed204622df30326793e0121435624c1a8d README diff --git a/package/tinyxml/tinyxml.mk b/package/tinyxml/tinyxml.mk new file mode 100644 index 00000000..01c25f7c --- /dev/null +++ b/package/tinyxml/tinyxml.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# tinyxml +# +################################################################################ + +TINYXML_VERSION = 2.6.2_2 +TINYXML_SITE = http://mirrors.xbmc.org/build-deps/sources +# AUTORECONF is needed because the XBMC's version of TinyXML contains a +# configure.ac which is not present in mainline. +TINYXML_AUTORECONF = YES +TINYXML_INSTALL_STAGING = YES +TINYXML_LICENSE = Zlib +TINYXML_LICENSE_FILES = README +TINYXML_CPE_ID_VALID = YES + +# 0001-In-stamp-always-advance-the-pointer-if-p-0xef.patch +TINYXML_IGNORE_CVES += CVE-2021-42260 + +$(eval $(autotools-package)) diff --git a/package/tinyxml2/Config.in b/package/tinyxml2/Config.in new file mode 100644 index 00000000..2f575012 --- /dev/null +++ b/package/tinyxml2/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_TINYXML2 + bool "tinyxml2" + depends on BR2_INSTALL_LIBSTDCPP + help + TinyXML-2 is a simple, small, efficient, C++ XML parser that + can be easily integrating into other programs. + + http://www.grinninglizard.com/tinyxml2/index.html + +comment "tinyxml2 needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/tinyxml2/tinyxml2.hash b/package/tinyxml2/tinyxml2.hash new file mode 100644 index 00000000..a131b862 --- /dev/null +++ b/package/tinyxml2/tinyxml2.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3bdf15128ba16686e69bce256cc468e76c7b94ff2c7f391cc5ec09e40bff3839 tinyxml2-10.0.0.tar.gz +sha256 9332252e9b9e46db8285d4a3f0bf25f139bf1dca6781b956d57f2302efca6432 LICENSE.txt diff --git a/package/tinyxml2/tinyxml2.mk b/package/tinyxml2/tinyxml2.mk new file mode 100644 index 00000000..044b8f82 --- /dev/null +++ b/package/tinyxml2/tinyxml2.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# tinyxml2 +# +################################################################################ + +TINYXML2_VERSION = 10.0.0 +TINYXML2_SITE = $(call github,leethomason,tinyxml2,$(TINYXML2_VERSION)) +TINYXML2_LICENSE = Zlib +TINYXML2_LICENSE_FILES = LICENSE.txt +TINYXML2_INSTALL_STAGING = YES +TINYXML2_CPE_ID_VALID = YES + +ifeq ($(BR2_STATIC_LIBS),y) +TINYXML2_CONF_OPTS += -DBUILD_STATIC_LIBS=ON +endif + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/tio/Config.in b/package/tio/Config.in new file mode 100644 index 00000000..953b26a3 --- /dev/null +++ b/package/tio/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_TIO + bool "tio" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # glib2 + depends on BR2_USE_WCHAR # glib2 + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + depends on !BR2_PACKAGE_LUAJIT + help + "tio" is a simple TTY terminal application which features a + straightforward commandline interface to easily connect to + TTY devices for basic input/output. + + https://tio.github.io/ + +comment "tio needs a toolchain w/ threads, wchar" + depends on BR2_USE_MMU + depends on !BR2_sparc64 && !BR2_sparc + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR + +comment "tio needs lua (but not luajit)" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + depends on !BR2_PACKAGE_HAS_LUAINTERPRETER || BR2_PACKAGE_LUAJIT diff --git a/package/tio/tio.hash b/package/tio/tio.hash new file mode 100644 index 00000000..d1caeeeb --- /dev/null +++ b/package/tio/tio.hash @@ -0,0 +1,5 @@ +# From https://github.com/tio/tio/releases/download/v3.5/tio-3.5.tar.xz.sha256sum: +sha256 efd3e9a406f827ac22d4157e345079dde15ee5a948b24156561d6c97a54e6ec0 tio-3.5.tar.xz + +# Hash for license files: +sha256 9248dee77ee136321f24556a96e07ff8f90461013941884a9defd0ac825ef131 LICENSE diff --git a/package/tio/tio.mk b/package/tio/tio.mk new file mode 100644 index 00000000..637a7bdd --- /dev/null +++ b/package/tio/tio.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# tio +# +################################################################################ + +TIO_VERSION = 3.5 +TIO_SOURCE = tio-$(TIO_VERSION).tar.xz +TIO_SITE = https://github.com/tio/tio/releases/download/v$(TIO_VERSION) +TIO_LICENSE = GPL-2.0+ +TIO_LICENSE_FILES = LICENSE +TIO_DEPENDENCIES = libglib2 luainterpreter + +TIO_CONF_OPTS += -Dinstall_man_pages=false + +ifeq ($(BR2_PACKAGE_BASH_COMPLETION),y) +TIO_CONF_OPTS +=-Dbashcompletiondir=/usr/share/bash-completion/completions +else +TIO_CONF_OPTS +=-Dbashcompletiondir=no +endif + +$(eval $(meson-package)) diff --git a/package/tipidee/Config.in b/package/tipidee/Config.in new file mode 100644 index 00000000..b9e6b476 --- /dev/null +++ b/package/tipidee/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_TIPIDEE + bool "tipidee" + depends on BR2_USE_MMU # skalibs + select BR2_PACKAGE_SKALIBS + select BR2_PACKAGE_HOST_TIPIDEE if BR2_PACKAGE_TIPIDEE_CONFIG_FILE != "" + help + tipidee is a web server. It supports HTTP 1.0 and 1.1. It aims + to be compliant with RFC 9112: while it only implements a very + limited subset of the optional functionality in HTTP 1.1, it + implements all the mandatory parts. It is usable with both + HTTP and HTTPS. + + It runs under a super-server, e.g. inetd, s6-tcpserver, or + s6-tlsserver (for HTTPS). Traditionally, inetd-mode web + servers aren't considered performant, but tipidee aims to eke + out every single drop of performance that is attainable with + its programming model. + + https://skarnet.org/software/tipidee/ + +if BR2_PACKAGE_TIPIDEE + +config BR2_PACKAGE_TIPIDEE_CONFIG_FILE + string "configuration source file" + default "" + help + The configuration file in source (text) format, documented at: + + https://skarnet.org/software/tipidee/tipidee.conf.html + +endif diff --git a/package/tipidee/Config.in.host b/package/tipidee/Config.in.host new file mode 100644 index 00000000..e120a186 --- /dev/null +++ b/package/tipidee/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_TIPIDEE + bool "host tipidee" + depends on BR2_USE_MMU # skalibs + select BR2_PACKAGE_SKALIBS + help + This package builds the tipidee-config tool for the host. + + https://skarnet.org/software/tipidee/ diff --git a/package/tipidee/tipidee.hash b/package/tipidee/tipidee.hash new file mode 100644 index 00000000..ecc1ab34 --- /dev/null +++ b/package/tipidee/tipidee.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 d9e91fc719879a43d54329b99b02c6649c54e428e77bc96a0573506b52bf1422 tipidee-0.0.5.0.tar.gz +sha256 8feb7933c6e6506a7f20fbfc03fd37df3caff4becdf3b7a0ffad5016277e441e COPYING diff --git a/package/tipidee/tipidee.mk b/package/tipidee/tipidee.mk new file mode 100644 index 00000000..8ae18edd --- /dev/null +++ b/package/tipidee/tipidee.mk @@ -0,0 +1,74 @@ +################################################################################ +# +# tipidee +# +################################################################################ + +TIPIDEE_VERSION = 0.0.5.0 +TIPIDEE_SITE = https://skarnet.org/software/tipidee +TIPIDEE_LICENSE = ISC +TIPIDEE_LICENSE_FILES = COPYING +TIPIDEE_DEPENDENCIES = skalibs + +TIPIDEE_CONF_OPTS = \ + --prefix=/usr \ + --sysconfdir=/etc \ + --with-sysdeps=$(STAGING_DIR)/lib/skalibs/sysdeps \ + --with-include=$(STAGING_DIR)/include \ + --with-dynlib=$(STAGING_DIR)/lib \ + --with-lib=$(STAGING_DIR)/lib/skalibs \ + $(if $(BR2_STATIC_LIBS),,--disable-allstatic) \ + $(SHARED_STATIC_LIBS_OPTS) + +define TIPIDEE_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(TIPIDEE_CONF_OPTS)) +endef + +define TIPIDEE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define TIPIDEE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install + rm -f $(TARGET_DIR)/bin/tipidee-config + rm -f $(TARGET_DIR)/libexec/tipidee-config-preprocess +endef + +TIPIDEE_CONFIG_FILE = $(call qstrip, $(BR2_PACKAGE_TIPIDEE_CONFIG_FILE)) +ifneq ($(TIPIDEE_CONFIG_FILE),) +TIPIDEE_DEPENDENCIES += host-tipidee + +define TIPIDEE_INSTALL_CONFIG + $(HOST_DIR)/bin/tipidee-config \ + -i "$(TIPIDEE_CONFIG_FILE)" \ + -o $(TARGET_DIR)/etc/tipidee.conf.cdb +endef +TIPIDEE_POST_INSTALL_TARGET_HOOKS += TIPIDEE_INSTALL_CONFIG + +endif + +HOST_TIPIDEE_DEPENDENCIES = host-skalibs + +HOST_TIPIDEE_CONF_OPTS = \ + --prefix=$(HOST_DIR) \ + --with-sysdeps=$(HOST_DIR)/lib/skalibs/sysdeps \ + --with-include=$(HOST_DIR)/include \ + --with-dynlib=$(HOST_DIR)/lib \ + --disable-static \ + --enable-shared \ + --disable-allstatic + +define HOST_TIPIDEE_CONFIGURE_CMDS + (cd $(@D); $(HOST_CONFIGURE_OPTS) ./configure $(HOST_TIPIDEE_CONF_OPTS)) +endef + +define HOST_TIPIDEE_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_TIPIDEE_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install-dynlib install-bin install-libexec +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/tk/Config.in b/package/tk/Config.in new file mode 100644 index 00000000..507b0bf9 --- /dev/null +++ b/package/tk/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_TK + bool "tk" + depends on BR2_USE_MMU # tcl + depends on BR2_TOOLCHAIN_HAS_THREADS # tcl + depends on !BR2_STATIC_LIBS # tcl + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_TCL + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXFT + help + A windowing toolkit for use with tcl + + http://www.tcl.tk + +comment "tk needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_XORG7 + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/tk/tk.hash b/package/tk/tk.hash new file mode 100644 index 00000000..aee03a15 --- /dev/null +++ b/package/tk/tk.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 8ffdb720f47a6ca6107eac2dd877e30b0ef7fac14f3a84ebbd0b3612cee41a94 tk8.6.14-src.tar.gz +sha256 2cde822b93ca16ae535c954b7dfe658b4ad10df2a193628d1b358f1765e8b198 license.terms diff --git a/package/tk/tk.mk b/package/tk/tk.mk new file mode 100644 index 00000000..c8dd7bc3 --- /dev/null +++ b/package/tk/tk.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# tk +# +################################################################################ + +TK_VERSION_MAJOR = 8.6 +TK_VERSION = $(TK_VERSION_MAJOR).14 +TK_SOURCE = tk$(TK_VERSION)-src.tar.gz +TK_SITE = http://downloads.sourceforge.net/project/tcl/Tcl/$(TK_VERSION) +TK_LICENSE = TCL +TK_LICENSE_FILES = license.terms +TK_SUBDIR = unix +TK_INSTALL_STAGING = YES + +TK_DEPENDENCIES = tcl xlib_libX11 xlib_libXft + +# hopefully our strtod is not buggy +TK_CONF_ENV = tcl_cv_strtod_buggy=no + +TK_CONF_OPTS = --disable-rpath \ + --with-tcl=$(BUILD_DIR)/tcl-$(TCL_VERSION)/unix \ + --x-includes=$(STAGING_DIR)/usr/include \ + --x-libraries=$(STAGING_DIR)/usr/lib + +define TK_WISH_SYMLINK + ln -sf /usr/bin/wish$(TK_VERSION_MAJOR) $(TARGET_DIR)/usr/bin/wish +endef +TK_POST_INSTALL_TARGET_HOOKS += TK_WISH_SYMLINK + +$(eval $(autotools-package)) diff --git a/package/tl-expected/Config.in b/package/tl-expected/Config.in new file mode 100644 index 00000000..92758ffe --- /dev/null +++ b/package/tl-expected/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_TL_EXPECTED + bool "tl-expected" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + help + C++11/14/17 std::expected with functional-style extensions and + reference support. + + https://github.com/TartanLlama/expected + +comment "tl-expected needs a toolchain w/ C++, gcc >= 4.8" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 diff --git a/package/tl-expected/tl-expected.hash b/package/tl-expected/tl-expected.hash new file mode 100644 index 00000000..5e990637 --- /dev/null +++ b/package/tl-expected/tl-expected.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 628a0ec9ed258b596669494c679e7d6ec4d35f3a2629669499bc8ea20d410b58 tl-expected-v1.0.0-git4.tar.gz +sha256 a2010f343487d3f7618affe54f789f5487602331c0a8d03f49e9a7c547cf0499 COPYING diff --git a/package/tl-expected/tl-expected.mk b/package/tl-expected/tl-expected.mk new file mode 100644 index 00000000..8d62c75f --- /dev/null +++ b/package/tl-expected/tl-expected.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# tl-expected +# +################################################################################ + +TL_EXPECTED_VERSION = v1.0.0 +TL_EXPECTED_SITE = https://github.com/TartanLlama/expected +TL_EXPECTED_SITE_METHOD = git +TL_EXPECTED_GIT_SUBMODULES = YES +TL_EXPECTED_LICENSE = CC0-1.0 +TL_EXPECTED_LICENSE_FILES = COPYING +TL_EXPECTED_INSTALL_STAGING = YES +TL_EXPECTED_INSTALL_TARGET = NO +TL_EXPECTED_CONF_OPTS = \ + -DCMAKE_MODULE_PATH=$(TL_EXPECTED_DIR)/cmake/tl-cmake \ + -DEXPECTED_ENABLE_TESTS=OFF \ + -DFETCHCONTENT_FULLY_DISCONNECTED=ON + +$(eval $(cmake-package)) diff --git a/package/tllist/Config.in b/package/tllist/Config.in new file mode 100644 index 00000000..879119d1 --- /dev/null +++ b/package/tllist/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_TLLIST + bool "tllist" + help + A C header file only implementation of a typed linked list. + + https://codeberg.org/dnkl/tllist diff --git a/package/tllist/tllist.hash b/package/tllist/tllist.hash new file mode 100644 index 00000000..73d38276 --- /dev/null +++ b/package/tllist/tllist.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 a1f0ce0dc4fcb4ce59c37202a1d914c853a8bd2d7c5d57d623b15a8dd9778767 tllist-1.1.0.tar.gz +sha256 d534a23a31500a0ac958d9634b84f532bd73ff1aca1bb8f7debbcbebc16ff39a LICENSE diff --git a/package/tllist/tllist.mk b/package/tllist/tllist.mk new file mode 100644 index 00000000..26e21ccb --- /dev/null +++ b/package/tllist/tllist.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# tllist +# +################################################################################ + +TLLIST_VERSION = 1.1.0 +TLLIST_SITE = https://codeberg.org/dnkl/tllist/releases/download/$(TLLIST_VERSION) +TLLIST_LICENSE = MIT +TLLIST_LICENSE_FILES = LICENSE +# header only +TLLIST_INSTALL_TARGET = NO +TLLIST_INSTALL_STAGING = YES +TLLIST_CFLAGS = $(TARGET_CFLAGS) -std=c99 + +$(eval $(meson-package)) diff --git a/package/tmux/Config.in b/package/tmux/Config.in new file mode 100644 index 00000000..756f38a0 --- /dev/null +++ b/package/tmux/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_TMUX + bool "tmux" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR # mbtowc() + depends on BR2_ENABLE_LOCALE # runtime + select BR2_PACKAGE_LIBEVENT + select BR2_PACKAGE_NCURSES + help + tmux is a terminal multiplexer, it enables a number of + terminals (or windows) to be accessed and controlled from a + single terminal. + + NOTE: tmux needs a working UTF-8 locale (BR2_GENERATE_LOCALE) + + https://tmux.github.io/ + +comment "tmux needs a toolchain w/ wchar, locale" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_ENABLE_LOCALE diff --git a/package/tmux/tmux.hash b/package/tmux/tmux.hash new file mode 100644 index 00000000..b5c0fe58 --- /dev/null +++ b/package/tmux/tmux.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 e4fd347843bd0772c4f48d6dde625b0b109b7a380ff15db21e97c11a4dcdf93f tmux-3.3a.tar.gz +sha256 c031bd37f464c534277814f6aa38686fa023d094261d57fd2545ad592bb53ccd COPYING diff --git a/package/tmux/tmux.mk b/package/tmux/tmux.mk new file mode 100644 index 00000000..533a82bb --- /dev/null +++ b/package/tmux/tmux.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# tmux +# +################################################################################ + +TMUX_VERSION = 3.3a +TMUX_SITE = https://github.com/tmux/tmux/releases/download/$(TMUX_VERSION) +TMUX_LICENSE = ISC +TMUX_LICENSE_FILES = COPYING +TMUX_CPE_ID_VALID = YES +TMUX_DEPENDENCIES = libevent ncurses host-pkgconf + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +TMUX_DEPENDENCIES += systemd +TMUX_CONF_OPTS += --enable-systemd +else +TMUX_CONF_OPTS += --disable-systemd +endif + +ifeq ($(BR2_PACKAGE_UTF8PROC),y) +TMUX_DEPENDENCIES += utf8proc +TMUX_CONF_OPTS += --enable-utf8proc +else +TMUX_CONF_OPTS += --disable-utf8proc +endif + +# tmux uses custom --enable-static option, instead of standard libtool +# directive resulting in a build failure with systemd or utf8proc +ifeq ($(BR2_SHARED_STATIC_LIBS),y) +TMUX_CONF_OPTS += --disable-static +endif + +# Add /usr/bin/tmux to /etc/shells otherwise some login tools like dropbear +# can reject the user connection. See man shells. +define TMUX_ADD_TMUX_TO_SHELLS + grep -qsE '^/usr/bin/tmux$$' $(TARGET_DIR)/etc/shells \ + || echo "/usr/bin/tmux" >> $(TARGET_DIR)/etc/shells +endef +TMUX_TARGET_FINALIZE_HOOKS += TMUX_ADD_TMUX_TO_SHELLS + +$(eval $(autotools-package)) diff --git a/package/tor/0001-crypt_openssl_mgt-define-DISABLE_ENGINES-after-OPENS.patch b/package/tor/0001-crypt_openssl_mgt-define-DISABLE_ENGINES-after-OPENS.patch new file mode 100644 index 00000000..f8ad8032 --- /dev/null +++ b/package/tor/0001-crypt_openssl_mgt-define-DISABLE_ENGINES-after-OPENS.patch @@ -0,0 +1,58 @@ +From 48f8d6918977673125d53a85d19d709136106739 Mon Sep 17 00:00:00 2001 +From: orbea +Date: Thu, 31 Aug 2023 14:35:52 -0700 +Subject: [PATCH] crypt_openssl_mgt: define DISABLE_ENGINES after + OPENSSL_NO_ENGINE + +With LibreSSL-3.8.1 these engines are no long available causing a build +failure, but LibreSSL correctly defines OPENSSL_NO_ENGINE as part of its +opensslfeatures.h. However Tor includes crypto_openssl_mgt.h before any +of the openssl includes which would define OPENSSL_NO_ENGINE and then +fails to define DISABLE_ENGINES. + +As the define is used in only a single .c file it is best to move it +there. + +Signed-off-by: orbea +Upstream: https://gitlab.torproject.org/tpo/core/tor/-/commit/48f8d6918977673125d53a85d19d709136106739 +Signed-off-by: Bernd Kuhls +--- + src/lib/crypt_ops/crypto_openssl_mgt.c | 5 +++++ + src/lib/crypt_ops/crypto_openssl_mgt.h | 5 ----- + 2 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/lib/crypt_ops/crypto_openssl_mgt.c b/src/lib/crypt_ops/crypto_openssl_mgt.c +index 6c01cb6aa8..ca12a82518 100644 +--- a/src/lib/crypt_ops/crypto_openssl_mgt.c ++++ b/src/lib/crypt_ops/crypto_openssl_mgt.c +@@ -40,6 +40,11 @@ ENABLE_GCC_WARNING("-Wredundant-decls") + + #include + ++#ifdef OPENSSL_NO_ENGINE ++/* Android's OpenSSL seems to have removed all of its Engine support. */ ++#define DISABLE_ENGINES ++#endif ++ + #ifndef NEW_THREAD_API + /** A number of preallocated mutexes for use by OpenSSL. */ + static tor_mutex_t **openssl_mutexes_ = NULL; +diff --git a/src/lib/crypt_ops/crypto_openssl_mgt.h b/src/lib/crypt_ops/crypto_openssl_mgt.h +index 96a37721dd..eac0ec1977 100644 +--- a/src/lib/crypt_ops/crypto_openssl_mgt.h ++++ b/src/lib/crypt_ops/crypto_openssl_mgt.h +@@ -49,11 +49,6 @@ + #define OPENSSL_V_SERIES(a,b,c) \ + OPENSSL_VER((a),(b),(c),0,0) + +-#ifdef OPENSSL_NO_ENGINE +-/* Android's OpenSSL seems to have removed all of its Engine support. */ +-#define DISABLE_ENGINES +-#endif +- + #if OPENSSL_VERSION_NUMBER >= OPENSSL_VER(1,1,0,0,5) + /* OpenSSL as of 1.1.0pre4 has an "new" thread API, which doesn't require + * setting up various callbacks. +-- +GitLab + diff --git a/package/tor/Config.in b/package/tor/Config.in new file mode 100644 index 00000000..52009267 --- /dev/null +++ b/package/tor/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_TOR + bool "tor" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_PACKAGE_LIBEVENT + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + Tor is free software and an open network that helps you + defend against traffic analysis, a form of network + surveillance that threatens personal freedom and privacy, + confidential business activities and relationships, and + state security. + + https://www.torproject.org + +comment "tor needs a toolchain w/ NPTL" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/package/tor/tor.hash b/package/tor/tor.hash new file mode 100644 index 00000000..bea590b1 --- /dev/null +++ b/package/tor/tor.hash @@ -0,0 +1,4 @@ +# From https://dist.torproject.org/tor-0.4.8.12.tar.gz.sha256sum +sha256 ca7cc735d98e3747b58f2f3cc14f804dd789fa0fb333a84dcb6bd70adbb8c874 tor-0.4.8.12.tar.gz +# Locally computed +sha256 47b54ed17e8fdcab3c44729a1789a09b208f9a63a845a7e50def9df729eebad0 LICENSE diff --git a/package/tor/tor.mk b/package/tor/tor.mk new file mode 100644 index 00000000..4d7fabc7 --- /dev/null +++ b/package/tor/tor.mk @@ -0,0 +1,80 @@ +################################################################################ +# +# tor +# +################################################################################ + +TOR_VERSION = 0.4.8.12 +TOR_SITE = https://dist.torproject.org +TOR_LICENSE = BSD-3-Clause +TOR_LICENSE_FILES = LICENSE +TOR_CPE_ID_VENDOR = torproject +TOR_SELINUX_MODULES = tor +TOR_DEPENDENCIES = libevent openssl zlib + +TOR_CONF_OPTS = \ + --disable-gcc-hardening \ + --disable-unittests \ + --with-libevent-dir=$(STAGING_DIR)/usr \ + --with-openssl-dir=$(STAGING_DIR)/usr \ + --with-zlib-dir=$(STAGING_DIR)/usr + +ifeq ($(BR2_STATIC_LIBS),y) +TOR_CONF_OPTS += \ + --enable-static-libevent \ + --enable-static-openssl \ + --enable-static-tor \ + --enable-static-zlib +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +TOR_DEPENDENCIES += libcap +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +TOR_CONF_OPTS += --enable-systemd +TOR_DEPENDENCIES += host-pkgconf systemd +else +TOR_CONF_OPTS += --disable-systemd +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +TOR_CONF_OPTS += --enable-lzma +TOR_DEPENDENCIES += host-pkgconf xz +else +TOR_CONF_OPTS += --disable-lzma +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +TOR_CONF_OPTS += --enable-zstd +TOR_DEPENDENCIES += host-pkgconf zstd +else +TOR_CONF_OPTS += --disable-zstd +endif + +ifeq ($(BR2_arm)$(BR2_armeb)$(BR2_i386)$(BR2_x86_64)$(BR2_PACKAGE_LIBSECCOMP),yy) +TOR_CONF_OPTS += --enable-seccomp +TOR_DEPENDENCIES += libseccomp +else +TOR_CONF_OPTS += --disable-seccomp +endif + +# uses gnu extensions +TOR_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +TOR_LIBS += -latomic +endif +ifeq ($(BR2_STATIC_LIBS),y) +TOR_LIBS += -lz +endif +TOR_CONF_ENV += LIBS="$(TOR_LIBS)" + +define TOR_INSTALL_CONF + $(INSTALL) -D -m 644 $(@D)/src/config/torrc.minimal \ + $(TARGET_DIR)/etc/tor/torrc +endef + +TOR_POST_INSTALL_TARGET_HOOKS += TOR_INSTALL_CONF + +$(eval $(autotools-package)) diff --git a/package/tpm-tools/Config.in b/package/tpm-tools/Config.in new file mode 100644 index 00000000..3ce6391a --- /dev/null +++ b/package/tpm-tools/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_TPM_TOOLS + bool "tpm-tools" + depends on BR2_TOOLCHAIN_HAS_THREADS # trousers + depends on !BR2_STATIC_LIBS # trousers + select BR2_PACKAGE_TROUSERS + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + help + Tools to manage and diagnose a TPM + + http://trousers.sourceforge.net/ + +comment "tpm-tools needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/tpm-tools/tpm-tools.hash b/package/tpm-tools/tpm-tools.hash new file mode 100644 index 00000000..bfbdfb83 --- /dev/null +++ b/package/tpm-tools/tpm-tools.hash @@ -0,0 +1,7 @@ +# http://sourceforge.net/projects/trousers/files/tpm-tools/1.3.9.1/ +sha1 c35cb031c6b5220dd1c8a03995654fdd12aa3031 tpm-tools-1.3.9.1.tar.gz +md5 1532293aa632a0eaa7e60df87c779855 tpm-tools-1.3.9.1.tar.gz + +# Locally calculated +sha256 9cb714e2650826e2e932f65bc0ba9d61b927dc5fea47f2c2a2b64f0fdfcbfa68 tpm-tools-1.3.9.1.tar.gz +sha256 7b47225a5b77cb7825efc6a4d7e0ac57864c790542cf92f5080ec2bf310c00e5 LICENSE diff --git a/package/tpm-tools/tpm-tools.mk b/package/tpm-tools/tpm-tools.mk new file mode 100644 index 00000000..623e06fb --- /dev/null +++ b/package/tpm-tools/tpm-tools.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# tpm-tools +# +################################################################################ + +TPM_TOOLS_VERSION = 1.3.9.1 +TPM_TOOLS_SITE = http://downloads.sourceforge.net/project/trousers/tpm-tools/$(TPM_TOOLS_VERSION) +TPM_TOOLS_LICENSE = Common Public License Version 1.0 +TPM_TOOLS_LICENSE_FILES = LICENSE +TPM_TOOLS_DEPENDENCIES = trousers openssl $(TARGET_NLS_DEPENDENCIES) + +TPM_TOOLS_CONF_OPTS = --disable-pkcs11-support + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +TPM_TOOLS_CONF_ENV += LIBS='-liconv' +endif + +ifeq ($(BR2_arc770d)$(BR2_arc750d),y) +TPM_TOOLS_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -mno-compact-casesi" +endif + +$(eval $(autotools-package)) diff --git a/package/tpm2-abrmd/Config.in b/package/tpm2-abrmd/Config.in new file mode 100644 index 00000000..4931641a --- /dev/null +++ b/package/tpm2-abrmd/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_TPM2_ABRMD + bool "tpm2-abrmd" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + depends on !BR2_STATIC_LIBS # tpm2-tss + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_TPM2_TSS + help + A system daemon implementing the TPM2 access broker (TAB) & + Resource Manager (RM) spec from the TCG. It should be started + during the OS boot process. Communication between the daemon + and clients using the TPM is done with a combination of DBus + and Unix pipes. + + The package also provides a client library for interacting + with the daemon via TPM Command Transmission Interface (TCTI). + It is intended for use with the SAPI library (libtss2-sys) + like any other TCTI. + + https://github.com/tpm2-software/tpm2-abrmd + +comment "tpm2-abrmd needs a toolchain w/ dynamic library, wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/package/tpm2-abrmd/S80tpm2-abrmd b/package/tpm2-abrmd/S80tpm2-abrmd new file mode 100644 index 00000000..6a0bef0a --- /dev/null +++ b/package/tpm2-abrmd/S80tpm2-abrmd @@ -0,0 +1,74 @@ +#!/bin/sh + +my_name="$0" + +check_required_files() { + [ -f "$1" ] || { + echo "$my_name: $1 is missing" + exit 1 + } +} + +check_device() { + ls -1 /dev/tpm[0-9]* > /dev/null 2>&1 || { + echo "device driver not loaded, skipping." + exit 0 + } + chown tss:tss /dev/tpm[0-9]* && chmod 600 /dev/tpm* +} + +rm_stale_pidfile() { + if [ -e "$1" ]; then + exe="/proc/$(cat "$1")/exe" + { [ -s "$exe" ] && [ "$(readlink -f "$exe")" = "$2" ]; } || rm -f "$1" + fi +} + +start() { + printf "Starting tpm2-abrmd: " + check_device + rm_stale_pidfile /var/run/tpm2-abrmd.pid /usr/sbin/tpm2-abrmd + start-stop-daemon -S -q -o -b -m -p /var/run/tpm2-abrmd.pid -c tss:tss -x /usr/sbin/tpm2-abrmd -- ${DAEMON_OPTS} || { + echo "FAIL" + exit 1 + } + pidof /usr/sbin/tpm2-abrmd > /var/run/tpm2-abrmd.pid + echo "OK" +} + +stop() { + printf "Stopping tpm2-abrmd: " + start-stop-daemon -K -q -o -p /var/run/tpm2-abrmd.pid -u tss -x /usr/sbin/tpm2-abrmd || { + echo "FAIL" + exit 1 + } + rm_stale_pidfile /var/run/tpm2-abrmd.pid /usr/sbin/tpm2-abrmd + echo "OK" +} + +check_required_files /etc/dbus-1/system.d/tpm2-abrmd.conf + +# defaults +DAEMON_OPTS="--tcti=device --logger=syslog --max-connections=20" + +# Read configuration variable file if it is present +[ -r /etc/default/tpm2-abrmd ] && . /etc/default/tpm2-abrmd + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + stop + sleep 1 + start + ;; + *) + echo "Usage: tpm2-abrmd {start|stop|restart|reload}" >&2 + exit 1 +esac + +exit 0 diff --git a/package/tpm2-abrmd/tpm2-abrmd.hash b/package/tpm2-abrmd/tpm2-abrmd.hash new file mode 100644 index 00000000..1c6e7390 --- /dev/null +++ b/package/tpm2-abrmd/tpm2-abrmd.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 1e587808c6739079d59f124d9c1a0058f8d34dd84f1f656c946667fa0a181c48 tpm2-abrmd-2.3.3.tar.gz +sha256 18c1bf4b1ba1fb2c4ffa7398c234d83c0d55475298e470ae1e5e3a8a8bd2e448 LICENSE diff --git a/package/tpm2-abrmd/tpm2-abrmd.mk b/package/tpm2-abrmd/tpm2-abrmd.mk new file mode 100644 index 00000000..0e62cb17 --- /dev/null +++ b/package/tpm2-abrmd/tpm2-abrmd.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# tpm2-abrmd +# +################################################################################ + +TPM2_ABRMD_VERSION = 2.3.3 +TPM2_ABRMD_SITE = https://github.com/tpm2-software/tpm2-abrmd/releases/download/$(TPM2_ABRMD_VERSION) +TPM2_ABRMD_LICENSE = BSD-2-Clause +TPM2_ABRMD_LICENSE_FILES = LICENSE +TPM2_ABRMD_SELINUX_MODULES = tpm2 +TPM2_ABRMD_INSTALL_STAGING = YES +TPM2_ABRMD_DEPENDENCIES = libglib2 tpm2-tss host-pkgconf +TPM2_ABRMD_CONF_OPTS = \ + --disable-defaultflags \ + --with-systemdsystemunitdir=$(if $(BR2_INIT_SYSTEMD),/usr/lib/systemd/system,no) \ + --with-udevrulesdir=$(if $(BR2_PACKAGE_HAS_UDEV),/usr/lib/udev/rules.d,no) + +# uses C99 code but forgets to pass -std=c99 when --disable-defaultflags is used +TPM2_ABRMD_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -std=c99" + +define TPM2_ABRMD_INSTALL_INIT_SYSTEMD + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR=$(TARGET_DIR) \ + install-systemdpresetDATA install-systemdsystemunitDATA +endef + +define TPM2_ABRMD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 $(TPM2_ABRMD_PKGDIR)/S80tpm2-abrmd \ + $(TARGET_DIR)/etc/init.d/S80tpm2-abrmd +endef + +$(eval $(autotools-package)) diff --git a/package/tpm2-openssl/Config.in b/package/tpm2-openssl/Config.in new file mode 100644 index 00000000..0e151a94 --- /dev/null +++ b/package/tpm2-openssl/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_TPM2_OPENSSL + bool "tpm2-openssl" + depends on !BR2_STATIC_LIBS # tpm2-tss + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_TPM2_TSS + help + Provider for integration of TPM 2.0 to OpenSSL 3.0. + + tpm2-openssl is based on a major refactoring of the + tpm2-tss-engine. The code is still there, but largely + reshuffled to match the new OpenSSL API. + + https://github.com/tpm2-software/tpm2-openssl + +comment "tpm2-openssl needs a toolchain w/ dynamic library, threads" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/tpm2-openssl/tpm2-openssl.hash b/package/tpm2-openssl/tpm2-openssl.hash new file mode 100644 index 00000000..ee15ee88 --- /dev/null +++ b/package/tpm2-openssl/tpm2-openssl.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 2ee15da2dceae1466ffba868e75a00b119d752babc1b6a2792286336a3324fb0 tpm2-openssl-1.2.0.tar.gz +sha256 7ffba9d66226eb67abb9747ce1cd47477d566143a8ded597bbd974c6fb5fe9f5 LICENSE diff --git a/package/tpm2-openssl/tpm2-openssl.mk b/package/tpm2-openssl/tpm2-openssl.mk new file mode 100644 index 00000000..ed590c2f --- /dev/null +++ b/package/tpm2-openssl/tpm2-openssl.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# tpm2-openssl +# +################################################################################ + +TPM2_OPENSSL_VERSION = 1.2.0 +TPM2_OPENSSL_SITE = https://github.com/tpm2-software/tpm2-openssl/releases/download/$(TPM2_OPENSSL_VERSION) +TPM2_OPENSSL_LICENSE = BSD-3-Clause +TPM2_OPENSSL_LICENSE_FILES = LICENSE +TPM2_OPENSSL_INSTALL_STAGING = YES +TPM2_OPENSSL_DEPENDENCIES = host-pkgconf openssl tpm2-tss + +# Provide --with-modulesdir to avoid using abs_builddir and DESTDIR +# (also defined as absolute path) at the same time to define modules +# install path (am__installdirs). +TPM2_OPENSSL_CONF_OPTS = --with-modulesdir="/usr/lib/ossl-modules" + +$(eval $(autotools-package)) diff --git a/package/tpm2-pkcs11/Config.in b/package/tpm2-pkcs11/Config.in new file mode 100644 index 00000000..93aa4a84 --- /dev/null +++ b/package/tpm2-pkcs11/Config.in @@ -0,0 +1,37 @@ +config BR2_PACKAGE_TPM2_PKCS11 + bool "tpm2-pkcs11" + depends on !BR2_STATIC_LIBS # tpm2-tss + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBYAML + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_TPM2_TSS + help + A PKCS#11 interface for TPM2 hardware + + https://github.com/tpm2-software/tpm2-pkcs11 + +if BR2_PACKAGE_TPM2_PKCS11 + +config BR2_PACKAGE_TPM2_PKCS11_PYTHON_TOOLS + bool "Install python tools (tpm2_ptool)" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-bcrypt, python-cryptography + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_BCRYPT # runtime + select BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime + select BR2_PACKAGE_PYTHON_PYASN1 # runtime + select BR2_PACKAGE_PYTHON_PYASN1_MODULES # runtime + select BR2_PACKAGE_PYTHON_PYYAML # runtime + select BR2_PACKAGE_PYTHON_TPM2_PYTSS # runtime + select BR2_PACKAGE_PYTHON3_SQLITE # runtime + help + Enable Python-related tools (tpm2_ptool) + +comment "python tools needs python3" + depends on !BR2_PACKAGE_PYTHON3 + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + +endif + +comment "tpm2-pkcs11 needs a toolchain w/ dynamic library, threads" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/tpm2-pkcs11/tpm2-pkcs11.hash b/package/tpm2-pkcs11/tpm2-pkcs11.hash new file mode 100644 index 00000000..797955a6 --- /dev/null +++ b/package/tpm2-pkcs11/tpm2-pkcs11.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 35bf06c30cfa76fc0eba2c5f503cf7dd0d34a66afb2d292fee896b90362f633b tpm2-pkcs11-1.9.0.tar.gz +sha256 793aa007f793458434d7cc60b1c827053a399308658b32fcaa6023802adc22e1 LICENSE diff --git a/package/tpm2-pkcs11/tpm2-pkcs11.mk b/package/tpm2-pkcs11/tpm2-pkcs11.mk new file mode 100644 index 00000000..c6218d77 --- /dev/null +++ b/package/tpm2-pkcs11/tpm2-pkcs11.mk @@ -0,0 +1,67 @@ +################################################################################ +# +# tpm2-pkcs11 +# +################################################################################ + +TPM2_PKCS11_VERSION = 1.9.0 +TPM2_PKCS11_SITE = https://github.com/tpm2-software/tpm2-pkcs11/releases/download/$(TPM2_PKCS11_VERSION) +TPM2_PKCS11_LICENSE = BSD-2-Clause +TPM2_PKCS11_LICENSE_FILES = LICENSE +TPM2_PKCS11_DEPENDENCIES = host-pkgconf libyaml openssl sqlite tpm2-tss + +TPM2_PKCS11_CONF_OPTS += \ + --disable-hardening \ + --disable-ptool-checks + +# Fix tpm.c:746:5: error: 'for' loop initial declarations are only allowed in C99 mode +# Fix implicit declaration of function 'strnlen' +TPM2_PKCS11_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -std=gnu99" + +# do not build man pages +TPM2_PKCS11_CONF_ENV += ac_cv_prog_PANDOC='' + +# tpm2-pkcs11 checks for tpm2-tools programs and errors out if not +# found, even though they are only used by the (unused in Buildroot) +# python-based tools +TPM2_PKCS11_CONF_ENV += \ + ac_cv_prog_tpm2_createprimary=yes \ + ac_cv_prog_tpm2_create=yes \ + ac_cv_prog_tpm2_evictcontrol=yes \ + ac_cv_prog_tpm2_readpublic=yes \ + ac_cv_prog_tpm2_load=yes \ + ac_cv_prog_tpm2_loadexternal=yes \ + ac_cv_prog_tpm2_unseal=yes \ + ac_cv_prog_tpm2_encryptdecrypt=yes \ + ac_cv_prog_tpm2_sign=yes \ + ac_cv_prog_tpm2_getcap=yes \ + ac_cv_prog_tpm2_import=yes \ + ac_cv_prog_tpm2_changeauth=yes + +ifeq ($(BR2_PACKAGE_P11_KIT),y) +TPM2_PKCS11_DEPENDENCIES += p11-kit +TPM2_PKCS11_CONF_OPTS += \ + --with-p11kitconfigdir=/usr/share/p11-kit/modules +endif + +ifeq ($(BR2_PACKAGE_TPM2_PKCS11_PYTHON_TOOLS),y) +TPM2_PKCS11_DEPENDENCIES += python-tpm2-pytss + +define TPM2_PKCS11_BUILD_TOOLS + (cd $(@D)/tools; \ + $(PKG_PYTHON_SETUPTOOLS_ENV) \ + $(HOST_DIR)/bin/python setup.py build) +endef +TPM2_PKCS11_POST_BUILD_HOOKS += TPM2_PKCS11_BUILD_TOOLS + +define TPM2_PKCS11_INSTALL_TARGET_TOOLS + (cd $(@D)/tools; \ + $(PKG_PYTHON_SETUPTOOLS_ENV) \ + $(HOST_DIR)/bin/python setup.py install \ + $(PKG_PYTHON_SETUPTOOLS_INSTALL_OPTS) \ + --root=$(TARGET_DIR)) +endef +TPM2_PKCS11_POST_INSTALL_TARGET_HOOKS += TPM2_PKCS11_INSTALL_TARGET_TOOLS +endif + +$(eval $(autotools-package)) diff --git a/package/tpm2-tools/Config.in b/package/tpm2-tools/Config.in new file mode 100644 index 00000000..0dcf176d --- /dev/null +++ b/package/tpm2-tools/Config.in @@ -0,0 +1,38 @@ +config BR2_PACKAGE_TPM2_TOOLS + bool "tpm2-tools" + depends on !BR2_STATIC_LIBS # tpm2-tss + depends on BR2_USE_WCHAR + # c16rtomb() not implemented in uClibc + depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_TPM2_TSS + help + TPM (Trusted Platform Module) 2.0 CLI tools based on system + API of TPM2-TSS. These tools can be used to manage keys, + perform encryption/decryption/signing/etc crypto operations, + and manage non-volatile storage through a TPM2.0 HW + implementation. + + Notice: An in-kernel resource manager is provided by the + Linux kernel since 4.12. Depending on use cases and kernel + version, the user space resource manager provided by + tpm2-abrmd may be needed. + + https://github.com/tpm2-software/tpm2-tools + +if BR2_PACKAGE_TPM2_TOOLS + +config BR2_PACKAGE_TPM2_TOOLS_FAPI + bool "fapi tools" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_TPM2_TSS_FAPI + help + This option enables Feature API (FAPI) support in + tpm2-tools. The FAPI tools are prefixed with tss2_. + +endif + +comment "tpm2-tools needs a glibc or musl toolchain w/ dynamic library, wchar" + depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR || \ + !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) diff --git a/package/tpm2-tools/tpm2-tools.hash b/package/tpm2-tools/tpm2-tools.hash new file mode 100644 index 00000000..cb7e8085 --- /dev/null +++ b/package/tpm2-tools/tpm2-tools.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 3810d36b5079256f4f2f7ce552e22213d43b1031c131538df8a2dbc3c570983a tpm2-tools-5.7.tar.gz +sha256 f6995d52c8b8e4d2c3bace7fc9c330a77a90d808166fbad4d7ead7e8ba2fc66c docs/LICENSE diff --git a/package/tpm2-tools/tpm2-tools.mk b/package/tpm2-tools/tpm2-tools.mk new file mode 100644 index 00000000..cdb8931a --- /dev/null +++ b/package/tpm2-tools/tpm2-tools.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# tpm2-tools +# +################################################################################ + +TPM2_TOOLS_VERSION = 5.7 +TPM2_TOOLS_SITE = https://github.com/tpm2-software/tpm2-tools/releases/download/$(TPM2_TOOLS_VERSION) +TPM2_TOOLS_LICENSE = BSD-3-Clause +TPM2_TOOLS_LICENSE_FILES = docs/LICENSE +TPM2_TOOLS_CPE_ID_VALID = YES +TPM2_TOOLS_SELINUX_MODULES = tpm2 +TPM2_TOOLS_DEPENDENCIES = libcurl openssl tpm2-tss host-pkgconf + +# -fstack-protector-all and FORTIFY_SOURCE=2 is used by +# default. Disable that so the BR2_SSP_* / BR2_FORTIFY_SOURCE_* options +# in the toolchain wrapper and CFLAGS are used instead +TPM2_TOOLS_CONF_OPTS = --disable-hardening + +# do not build man pages +TPM2_TOOLS_CONF_ENV += ac_cv_prog_PANDOC='' + +ifeq ($(BR2_PACKAGE_TPM2_TOOLS_FAPI),y) +TPM2_TOOLS_CONF_OPTS += --enable-fapi +else +TPM2_TOOLS_CONF_OPTS += --disable-fapi +endif + +$(eval $(autotools-package)) diff --git a/package/tpm2-totp/Config.in b/package/tpm2-totp/Config.in new file mode 100644 index 00000000..a26604ab --- /dev/null +++ b/package/tpm2-totp/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_TPM2_TOTP + bool "tpm2-totp" + depends on !BR2_STATIC_LIBS # tpm2-tss + select BR2_PACKAGE_LIBQRENCODE + select BR2_PACKAGE_TPM2_TSS + help + This is a reimplementation of Matthew Garrett's tpmtotp + software for TPM 2.0 using the tpm2-tss software stack. Its + purpose is to attest the trustworthiness of a device against + a human using time-based one-time passwords (TOTP), + facilitating the Trusted Platform Module (TPM) to bind the + TOTP secret to the known trustworthy system state. In + addition to the original tpmtotp, given the new capabilities + of in-TPM hmac calculation, the tpm2-totp's secret HMAC keys + do not have to be exported from the TPM to the CPU's RAM on + boot anymore. + + https://github.com/tpm2-software/tpm2-totp + +comment "tpm2-totp needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/tpm2-totp/tpm2-totp.hash b/package/tpm2-totp/tpm2-totp.hash new file mode 100644 index 00000000..f7cf0616 --- /dev/null +++ b/package/tpm2-totp/tpm2-totp.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 0b2b63cc7ea74f5a6952f2cd689896c08f6b94ee6865f48af609f9a8ac247dc1 tpm2-totp-0.2.1.tar.gz +sha256 67bc21a0bff2b0890307cfaa883bd3f5337f461eb6d8a612a015cea6d704e9ed LICENSE diff --git a/package/tpm2-totp/tpm2-totp.mk b/package/tpm2-totp/tpm2-totp.mk new file mode 100644 index 00000000..42607c0b --- /dev/null +++ b/package/tpm2-totp/tpm2-totp.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# tpm2-totp +# +################################################################################ + +TPM2_TOTP_VERSION = 0.2.1 +TPM2_TOTP_SITE = https://github.com/tpm2-software/tpm2-totp/releases/download/v$(TPM2_TOTP_VERSION) +TPM2_TOTP_LICENSE = BSD-3-Clause +TPM2_TOTP_LICENSE_FILES = LICENSE +TPM2_TOTP_SELINUX_MODULES = tpm2 +TPM2_TOTP_DEPENDENCIES = libqrencode tpm2-tss host-pkgconf +TPM2_TOTP_CONF_OPTS = \ + --disable-defaultflags \ + --disable-doxygen-doc \ + --disable-plymouth \ + --without-initramfstoolsdir \ + --without-mkinitcpiodir + +# uses C99 code but forgets to pass -std=c99 when --disable-defaultflags is used +TPM2_TOTP_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -std=c99" + +# do not build man pages +TPM2_TOTP_CONF_ENV += ac_cv_path_PANDOC='' + +$(eval $(autotools-package)) diff --git a/package/tpm2-tss/0001-Temporary-fix-for-build-without-C.patch b/package/tpm2-tss/0001-Temporary-fix-for-build-without-C.patch new file mode 100644 index 00000000..812c753f --- /dev/null +++ b/package/tpm2-tss/0001-Temporary-fix-for-build-without-C.patch @@ -0,0 +1,44 @@ +From 7dc753ad27a8cd14c9b00be94ca89b847cf05ce9 Mon Sep 17 00:00:00 2001 +From: Carlos Santos +Date: Mon, 23 Dec 2019 08:02:19 -0300 +Subject: [PATCH] Temporary fix for build without C++ + +C++ is required only for the fuzzing tests but AC_PROG_CXX is included +by configure.ac even when fuzzing is not enabled (which we don't do on +Buildroot). + +The patch applied upstream had issues and was reverted[1]. Use a local +patch to solve the problem temporaryly. + +Fixes: + http://autobuild.buildroot.net/results/13f5e37b47b255da4158bec34e5459136f7e60d4 + http://autobuild.buildroot.net/results/1c26db2509c79e00c0de1165945277eaa57b149f + http://autobuild.buildroot.net/results/b7b6b7b7aca79e847b442cbd2305427d91fe5d70 + http://autobuild.buildroot.net/results/1cd5a82a0e799aa5027e2e2c03b246332cc3a15d + http://autobuild.buildroot.net/results/d7ec878907f714377c83e9a496e97cbf9382d787 + http://autobuild.buildroot.net/results/1c7f0c1b3ce4871cd87bd6059b1f0a6dc4e74a9c + http://autobuild.buildroot.net/results/196b81d580325607c8da90beeb79e1f6b8ab8b47 + http://autobuild.buildroot.net/results/f90f7b4ac710b56686635f8ae27059c11b963e47 + +1. https://github.com/tpm2-software/tpm2-tss/commit/60c26e4c4faba6ba12469485653e17092b510840 + +Signed-off-by: Carlos Santos +--- + configure.ac | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index ff59dd7c..3e4028fb 100755 +--- a/configure.ac ++++ b/configure.ac +@@ -26,7 +26,6 @@ AX_IS_RELEASE(dash-version) + AX_CHECK_ENABLE_DEBUG([info]) + + AC_PROG_CC +-AC_PROG_CXX + AC_PROG_LN_S + AC_USE_SYSTEM_EXTENSIONS + LT_INIT() +-- +2.26.2 + diff --git a/package/tpm2-tss/Config.in b/package/tpm2-tss/Config.in new file mode 100644 index 00000000..857987ae --- /dev/null +++ b/package/tpm2-tss/Config.in @@ -0,0 +1,57 @@ +config BR2_PACKAGE_TPM2_TSS + bool "tpm2-tss" + depends on !BR2_STATIC_LIBS # dlfcn.h + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + help + OSS implementation of the Trusted Computing Group's (TCG) TPM2 + Software Stack (TSS). This stack consists of the following + layers from top to bottom: + + * System API (SAPI) as described in the system level API and + TPM command transmission interface specification. This API + is a 1-to-1 mapping of the TPM2 commands documented in Part + 3 of the TPM2 specification. Additionally there are + asynchronous versions of each command. These asynchronous + variants may be useful for integration into event-driven + programming environments. Both the synchronous and + asynchronous API are exposed through a single library: + libtss2-sys. + + * TPM Command Transmission Interface (TCTI) that is described + in the same specification. This API provides a standard + interface to transmit / receive TPM command / response + buffers. It is expected that any number of libraries + implementing the TCTI API will be implemented as a way to + abstract various platform specific IPC mechanisms. Currently + this repository provides two TCTI implementations: + libtss2-tcti-device and libtss2-tcti-mssim. The prior should + be used for direct access to the TPM through the Linux + kernel driver. The later implements the protocol exposed by + the Microsoft software TPM2 simulator. + + https://github.com/tpm2-software/tpm2-tss + +if BR2_PACKAGE_TPM2_TSS + +config BR2_PACKAGE_TPM2_TSS_FAPI + bool "fapi support" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c + select BR2_PACKAGE_JSON_C + select BR2_PACKAGE_LIBCURL + help + This option allows to enable Feature API (FAPI). Feature + API (FAPI) as described in the "TSS 2.0 Feature API + Specification" along with "TSS 2.0 JSON Data Types and + Policy Language Specification" This API is designed to be + very high-level API, intended to make programming with the + TPM as simple as possible. The API functions are exposed + through a single library: libtss2-fapi. + + https://trustedcomputinggroup.org/wp-content/uploads/TSS_FAPI_v0.94_r04_pubrev.pdf + https://trustedcomputinggroup.org/wp-content/uploads/TSS_JSON_Policy_v0.7_r04_pubrev.pdf + +endif + +comment "tpm2-tss needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/tpm2-tss/tpm2-tss.hash b/package/tpm2-tss/tpm2-tss.hash new file mode 100644 index 00000000..c9fa4e6a --- /dev/null +++ b/package/tpm2-tss/tpm2-tss.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 ba9e52117f254f357ff502e7d60fce652b3bfb26327d236bbf5ab634235e40f1 tpm2-tss-3.2.2.tar.gz +sha256 18c1bf4b1ba1fb2c4ffa7398c234d83c0d55475298e470ae1e5e3a8a8bd2e448 LICENSE diff --git a/package/tpm2-tss/tpm2-tss.mk b/package/tpm2-tss/tpm2-tss.mk new file mode 100644 index 00000000..b76d16e7 --- /dev/null +++ b/package/tpm2-tss/tpm2-tss.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# tpm2-tss +# +################################################################################ + +TPM2_TSS_VERSION = 3.2.2 +TPM2_TSS_SITE = https://github.com/tpm2-software/tpm2-tss/releases/download/$(TPM2_TSS_VERSION) +TPM2_TSS_LICENSE = BSD-2-Clause +TPM2_TSS_LICENSE_FILES = LICENSE +TPM2_TSS_CPE_ID_VENDOR = tpm2_software_stack_project +TPM2_TSS_CPE_ID_PRODUCT = tpm2_software_stack +TPM2_TSS_INSTALL_STAGING = YES +TPM2_TSS_DEPENDENCIES = openssl host-pkgconf + +# 0001-configure-Only-use-CXX-when-fuzzing.patch +TPM2_TSS_AUTORECONF = YES + +# systemd-sysusers and systemd-tmpfiles are only used at install time +# to trigger the creation of users adn tmpfiles, which we do not care +# about at build time. groupadd, useradd, and setfacl are used in the +# fallback path when systemd-sysusers or systemd-tmpfiles are missing +# and their failure is ignored anyway. +TPM2_TSS_CONF_OPTS = \ + ac_cv_prog_result_groupadd=yes \ + ac_cv_prog_result_setfacl=yes \ + ac_cv_prog_systemd_sysusers=no \ + ac_cv_prog_systemd_tmpfiles=no \ + ac_cv_prog_useradd=yes \ + ac_cv_prog_groupadd=yes \ + --with-crypto=ossl \ + --disable-doxygen-doc \ + --disable-defaultflags + +# uses C99 code but forgets to pass -std=c99 when --disable-defaultflags is used +TPM2_TSS_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -std=c99" + +ifeq ($(BR2_PACKAGE_TPM2_TSS_FAPI),y) +TPM2_TSS_DEPENDENCIES += json-c libcurl +TPM2_TSS_CONF_OPTS += --enable-fapi +else +TPM2_TSS_CONF_OPTS += --disable-fapi +endif + +define TPM2_TSS_USERS + tss -1 tss -1 * - - - tss user for tpm2 +endef + +$(eval $(autotools-package)) diff --git a/package/trace-cmd/Config.in b/package/trace-cmd/Config.in new file mode 100644 index 00000000..c47b1f57 --- /dev/null +++ b/package/trace-cmd/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_TRACE_CMD + bool "trace-cmd" + # pthread_setaffinity_np + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # dlopen() + depends on BR2_TOOLCHAIN_HAS_THREADS # libtracefs + select BR2_PACKAGE_LIBTRACEEVENT + select BR2_PACKAGE_LIBTRACEFS + help + Command line reader for ftrace. + + To use this profiling tool, you should enable ftrace in your + kernel configuration. This command collect traces on your + target. You can analyse these traces on the target or on + the host via the gui "kernel shark" + + http://git.kernel.org/cgit/linux/kernel/git/rostedt/trace-cmd.git + +comment "trace-cmd needs a toolchain w/ threads, NPTL, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS diff --git a/package/trace-cmd/trace-cmd.hash b/package/trace-cmd/trace-cmd.hash new file mode 100644 index 00000000..ac30eae8 --- /dev/null +++ b/package/trace-cmd/trace-cmd.hash @@ -0,0 +1,6 @@ +# Locally computed +sha256 0671048dd2b8abdb8b2d0eb9cc91335c997620a7da72f858381ff4206f32065f trace-cmd-v3.3.tar.gz +sha256 b1d04b850c1c7471b0f0896f6c6f0fcfc9f07e2dd183a5f5826af269fe9e88fb COPYING +sha256 70f297763149e72306919c924e164f83041d5e512868d4c8c1826c171b3e49f9 COPYING.LIB +sha256 f6b78c087c3ebdf0f3c13415070dd480a3f35d8fc76f3d02180a407c1c812f79 LICENSES/GPL-2.0 +sha256 0b9a4febcdee6de55872501d5c1a8f5d8b0d1650cd4d5351995ceb22e889f8ca LICENSES/LGPL-2.1 diff --git a/package/trace-cmd/trace-cmd.mk b/package/trace-cmd/trace-cmd.mk new file mode 100644 index 00000000..14a59b2c --- /dev/null +++ b/package/trace-cmd/trace-cmd.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# trace-cmd +# +################################################################################ + +TRACE_CMD_VERSION = 3.3 +TRACE_CMD_SOURCE = trace-cmd-v$(TRACE_CMD_VERSION).tar.gz +TRACE_CMD_SITE = \ + https://git.kernel.org/pub/scm/utils/trace-cmd/trace-cmd.git/snapshot +TRACE_CMD_LICENSE = GPL-2.0, LGPL-2.1 +TRACE_CMD_LICENSE_FILES = COPYING COPYING.LIB LICENSES/GPL-2.0 LICENSES/LGPL-2.1 + +TRACE_CMD_DEPENDENCIES = host-pkgconf libtraceevent libtracefs +TRACE_CMD_MAKE_OPTS = prefix=/usr etcdir=/etc + +ifeq ($(BR2_PACKAGE_AUDIT),y) +TRACE_CMD_DEPENDENCIES += audit +endif + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +TRACE_CMD_DEPENDENCIES += python3 host-swig +TRACE_CMD_MAKE_OPTS += PYTHON_VERS=python3 +else +TRACE_CMD_MAKE_OPTS += NO_PYTHON=1 +endif + +# trace-cmd already defines _LARGEFILE64_SOURCE when necessary, +# redefining it on the command line causes build problems. +TRACE_CMD_CFLAGS = $(filter-out -D_LARGEFILE64_SOURCE,$(TARGET_CFLAGS)) + +# Sparc64 needs -fPIC +ifeq ($(BR2_sparc64),y) +TRACE_CMD_CFLAGS += -fPIC +endif + +TRACE_CMD_CFLAGS += $($(HOST_DIR)/bin/pkg-config --cflags libtracefs) + +# trace-cmd use CPPFLAGS to add some extra flags. +# But like for CFLAGS, $(TARGET_CPPFLAGS) contains _LARGEFILE64_SOURCE +# that causes build problems. +TRACE_CMD_CPPFLAGS = $(filter-out -D_LARGEFILE64_SOURCE,$(TARGET_CPPFLAGS)) + +define TRACE_CMD_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TRACE_CMD_CFLAGS)" \ + CPPFLAGS="$(TRACE_CMD_CPPFLAGS)" \ + $(MAKE) $(TRACE_CMD_MAKE_OPTS) -C $(@D) +endef + +define TRACE_CMD_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TRACE_CMD_CFLAGS)" \ + CPPFLAGS="$(TRACE_CMD_CPPFLAGS)" \ + DESTDIR=$(TARGET_DIR) \ + $(MAKE) $(TRACE_CMD_MAKE_OPTS) -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/traceroute/Config.in b/package/traceroute/Config.in new file mode 100644 index 00000000..42ae5a30 --- /dev/null +++ b/package/traceroute/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_TRACEROUTE + bool "traceroute" + help + A new modern implementation of the traceroute(8) utility for + Linux systems. It tracks the route packets taken from an IP + network on their way to a given host. + + http://traceroute.sourceforge.net/ diff --git a/package/traceroute/traceroute.hash b/package/traceroute/traceroute.hash new file mode 100644 index 00000000..cf2eb127 --- /dev/null +++ b/package/traceroute/traceroute.hash @@ -0,0 +1,6 @@ +# Locally computed: +sha256 05ebc7aba28a9100f9bbae54ceecbf75c82ccf46bdfce8b5d64806459a7e0412 traceroute-2.1.3.tar.gz + +# Hash for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB diff --git a/package/traceroute/traceroute.mk b/package/traceroute/traceroute.mk new file mode 100644 index 00000000..133f8d3c --- /dev/null +++ b/package/traceroute/traceroute.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# traceroute +# +################################################################################ + +TRACEROUTE_VERSION = 2.1.3 +TRACEROUTE_SITE = http://downloads.sourceforge.net/traceroute/traceroute/traceroute-$(TRACEROUTE_VERSION) + +TRACEROUTE_LICENSE = GPL-2.0+, LGPL-2.1+ +TRACEROUTE_LICENSE_FILES = COPYING COPYING.LIB +TRACEROUTE_CPE_ID_VENDOR = buc + +define TRACEROUTE_BUILD_CMDS + $(TARGET_MAKE_ENV) VPATH=$(STAGING_DIR)/usr/lib $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE" -C $(@D) +endef + +define TRACEROUTE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + DESTDIR=$(TARGET_DIR) prefix=/usr install \ + INSTALL=$(INSTALL) -C $(@D) +endef + +$(eval $(generic-package)) diff --git a/package/transmission/Config.in b/package/transmission/Config.in new file mode 100644 index 00000000..eeaa7890 --- /dev/null +++ b/package/transmission/Config.in @@ -0,0 +1,57 @@ +config BR2_PACKAGE_TRANSMISSION + bool "transmission" + depends on !BR2_BINFMT_FLAT # libnatpmp + depends on BR2_INSTALL_LIBSTDCPP # libutp + depends on !BR2_STATIC_LIBS # libnatpmp + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR # libpsl + select BR2_PACKAGE_DHT + select BR2_PACKAGE_LIBB64 + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBDEFLATE + select BR2_PACKAGE_LIBEVENT + select BR2_PACKAGE_LIBMINIUPNPC + select BR2_PACKAGE_LIBNATPMP + select BR2_PACKAGE_LIBPSL + select BR2_PACKAGE_LIBUTP + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + Transmission is a cross-platform BitTorrent client. + + http://www.transmissionbt.com/ + +if BR2_PACKAGE_TRANSMISSION + +config BR2_PACKAGE_TRANSMISSION_CLI + bool "transmission-cli" + help + Install transmission command line interface. + +config BR2_PACKAGE_TRANSMISSION_DAEMON + bool "transmission-daemon" + help + Install transmission daemon. + +config BR2_PACKAGE_TRANSMISSION_GTK + bool "transmission-gtk" + depends on !BR2_nios2 # gtkmm3 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pangomm, libgtk3 -> pango -> harfbuzz -> gtkmm3 + depends on BR2_PACKAGE_LIBGTK3 && BR2_SYSTEM_ENABLE_NLS + select BR2_PACKAGE_GTKMM3 + help + Install transmission GTK-based GUI interface. + +comment "transmission-gtk needs libgtk3 and a toolchain with NLS enabled" + depends on !BR2_nios2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_PACKAGE_LIBGTK3 && !BR2_SYSTEM_ENABLE_NLS +endif + +comment "transmission needs a toolchain w/ dynamic library, threads, C++, gcc >= 7" + depends on BR2_USE_MMU + depends on !BR2_BINFMT_FLAT + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || BR2_STATIC_LIBS diff --git a/package/transmission/S92transmission b/package/transmission/S92transmission new file mode 100644 index 00000000..85ff40ec --- /dev/null +++ b/package/transmission/S92transmission @@ -0,0 +1,156 @@ +#!/bin/sh + +# Original Author: Lennart A. Jtte, based on Rob Howell's script +# Modified by Maarten Van Coile & others (on IRC) + +# Changes for buildroot: +# USERNAME points to 'default' in standard installation +# TODO: set logfile with --logfile option + +# Do NOT "set -e" + +# +# ----- CONFIGURATION ----- +# +# For the default location Transmission uses, visit: +# http://trac.transmissionbt.com/wiki/ConfigFiles +# For a guide on how set the preferences, visit: +# http://trac.transmissionbt.com/wiki/EditConfigFiles +# For the available environement variables, visit: +# http://trac.transmissionbt.com/wiki/EnvironmentVariables +# +# The name of the user that should run Transmission. +# It's RECOMENDED to run Transmission in it's own user, +# by default, this is set to 'transmission'. +# For the sake of security you shouldn't set a password +# on this user +USERNAME=transmission + + +# ----- *ADVANCED* CONFIGURATION ----- +# Only change these options if you know what you are doing! +# +# The folder where Transmission stores the config & web files. +# ONLY change this you have it at a non-default location +#TRANSMISSION_HOME="/var/config/transmission-daemon" +#TRANSMISSION_WEB_HOME="/usr/share/transmission/web" +# +# The arguments passed on to transmission-daemon. +# ONLY change this you need to, otherwise use the +# settings file as per above. +#TRANSMISSION_ARGS="" + + +# ----- END OF CONFIGURATION ----- +# +# PATH should only include /usr/* if it runs after the mountnfs.sh script. +PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +DESC="bittorrent client" +NAME=transmission-daemon +DAEMON=$(which $NAME) +PIDFILE=/var/run/$NAME.pid +SCRIPTNAME=/etc/init.d/$NAME + +# Read configuration variable file if it is present +[ -r /etc/default/$NAME ] && . /etc/default/$NAME + +# Load the VERBOSE setting and other rcS variables +[ -f /etc/default/rcS ] && . /etc/default/rcS + +# +# Function that starts the daemon/service +# + +start() +{ + # Export the configuration/web directory, if set + if [ -n "$TRANSMISSION_HOME" ]; then + export TRANSMISSION_HOME + fi + if [ -n "$TRANSMISSION_WEB_HOME" ]; then + export TRANSMISSION_WEB_HOME + fi + + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # 2 if daemon could not be started + start-stop-daemon --chuid $USERNAME --start --pidfile $PIDFILE --make-pidfile \ + --exec $DAEMON --background --test -- -f $TRANSMISSION_ARGS > /dev/null \ + || return 1 + start-stop-daemon --chuid $USERNAME --start --pidfile $PIDFILE --make-pidfile \ + --exec $DAEMON --background -- -f $TRANSMISSION_ARGS \ + || return 2 +} + +# +# Function that stops the daemon/service +# +stop() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # 2 if daemon could not be stopped + # other if a failure occurred + start-stop-daemon --stop --quiet --retry=TERM/10/KILL/5 --pidfile $PIDFILE --exec $DAEMON + RETVAL="$?" + [ "$RETVAL" = 2 ] && return 2 + + # Wait for children to finish too if this is a daemon that forks + # and if the daemon is only ever run from this initscript. + # If the above conditions are not satisfied then add some other code + # that waits for the process to drop all resources that could be + # needed by services started subsequently. A last resort is to + # sleep for some time. + + start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON + [ "$?" = 2 ] && return 2 + + # Many daemons don't delete their pidfiles when they exit. + rm -f $PIDFILE + + return "$RETVAL" +} + +case "$1" in + start) + echo "Starting $DESC" "$NAME..." + start + case "$?" in + 0|1) echo " Starting $DESC $NAME succeeded" ;; + *) echo " Starting $DESC $NAME failed" ;; + esac + ;; + stop) + echo "Stopping $DESC $NAME..." + stop + case "$?" in + 0|1) echo " Stopping $DESC $NAME succeeded" ;; + *) echo " Stopping $DESC $NAME failed" ;; + esac + ;; + restart|force-reload) + # + # If the "reload" option is implemented then remove the + # 'force-reload' alias + # + echo "Restarting $DESC $NAME..." + stop + case "$?" in + 0|1) + start + case "$?" in + 0|1) echo " Restarting $DESC $NAME succeeded" ;; + *) echo " Restarting $DESC $NAME failed: couldn't start $NAME" ;; + esac + ;; + *) + echo " Restarting $DESC $NAME failed: couldn't stop $NAME" ;; + esac + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 + exit 3 + ;; +esac diff --git a/package/transmission/transmission.hash b/package/transmission/transmission.hash new file mode 100644 index 00000000..3e470a00 --- /dev/null +++ b/package/transmission/transmission.hash @@ -0,0 +1,4 @@ +# From https://transmissionbt.com/download +sha256 2a38fe6d8a23991680b691c277a335f8875bdeca2b97c6b26b598bc9c7b0c45f transmission-4.0.6.tar.xz +# Locally calculated +sha256 f56732960a61ecf3b9637404eef1a39221d2006336a98792b7b65a79f155449c COPYING diff --git a/package/transmission/transmission.mk b/package/transmission/transmission.mk new file mode 100644 index 00000000..1eab839f --- /dev/null +++ b/package/transmission/transmission.mk @@ -0,0 +1,82 @@ +################################################################################ +# +# transmission +# +################################################################################ + +TRANSMISSION_VERSION = 4.0.6 +TRANSMISSION_SOURCE = transmission-$(TRANSMISSION_VERSION).tar.xz +TRANSMISSION_SITE = https://github.com/transmission/transmission/releases/download/$(TRANSMISSION_VERSION) +TRANSMISSION_DEPENDENCIES = \ + host-pkgconf \ + dht \ + libb64 \ + libcurl \ + libdeflate \ + libevent \ + libminiupnpc \ + libnatpmp \ + libpsl \ + libutp \ + openssl \ + zlib +TRANSMISSION_CONF_OPTS = \ + -DENABLE_TESTS=OFF \ + -DRUN_CLANG_TIDY=OFF \ + -DUSE_SYSTEM_B64=ON \ + -DUSE_SYSTEM_DEFLATE=ON \ + -DUSE_SYSTEM_DHT=ON \ + -DUSE_SYSTEM_NATPMP=ON \ + -DUSE_SYSTEM_PSL=ON \ + -DWITH_INOTIFY=OFF +TRANSMISSION_LICENSE = GPL-2.0 or GPL-3.0 with OpenSSL exception +TRANSMISSION_LICENSE_FILES = COPYING +TRANSMISSION_CPE_ID_VENDOR = transmissionbt + +# Uses __atomic_load_8 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +TRANSMISSION_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic +endif + +ifeq ($(BR2_PACKAGE_TRANSMISSION_CLI),y) +TRANSMISSION_CONF_OPTS += -DENABLE_CLI=ON +else +TRANSMISSION_CONF_OPTS += -DENABLE_CLI=OFF +endif + +ifeq ($(BR2_PACKAGE_TRANSMISSION_DAEMON),y) +TRANSMISSION_CONF_OPTS += -DENABLE_DAEMON=ON + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +TRANSMISSION_DEPENDENCIES += systemd +TRANSMISSION_CONF_OPTS += -DWITH_SYSTEMD=ON +else +TRANSMISSION_CONF_OPTS += -DWITH_SYSTEMD=OFF +endif + +define TRANSMISSION_USERS + transmission -1 transmission -1 * /var/lib/transmission - transmission Transmission Daemon +endef + +define TRANSMISSION_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/transmission/S92transmission \ + $(TARGET_DIR)/etc/init.d/S92transmission +endef + +define TRANSMISSION_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(@D)/daemon/transmission-daemon.service \ + $(TARGET_DIR)/usr/lib/systemd/system/transmission-daemon.service +endef + +else +TRANSMISSION_CONF_OPTS += -DENABLE_DAEMON=OFF +endif + +ifeq ($(BR2_PACKAGE_TRANSMISSION_GTK),y) +TRANSMISSION_CONF_OPTS += -DENABLE_GTK=ON +TRANSMISSION_DEPENDENCIES += gtkmm3 libgtk3 +else +TRANSMISSION_CONF_OPTS += -DENABLE_GTK=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/tree/Config.in b/package/tree/Config.in new file mode 100644 index 00000000..4821b589 --- /dev/null +++ b/package/tree/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_TREE + bool "tree" + depends on BR2_USE_WCHAR + help + Tree is a recursive directory listing command that produces + a depth indented listing of files, which is colorized ala + dircolors if the LS_COLORS environment variable is set and + output is to tty. + + http://oldmanprogrammer.net/source.php?dir=projects/tree + +comment "tree needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/package/tree/tree.hash b/package/tree/tree.hash new file mode 100644 index 00000000..9ef48b1e --- /dev/null +++ b/package/tree/tree.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 d3c3d55f403af7c76556546325aa1eca90b918cbaaf6d3ab60a49d8367ab90d5 tree-2.1.1.tgz +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 LICENSE diff --git a/package/tree/tree.mk b/package/tree/tree.mk new file mode 100644 index 00000000..479a172a --- /dev/null +++ b/package/tree/tree.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# tree +# +################################################################################ + +TREE_VERSION = 2.1.1 +TREE_SOURCE = tree-$(TREE_VERSION).tgz +TREE_SITE = http://oldmanprogrammer.net/tar/tree +TREE_LICENSE = GPL-2.0+ +TREE_LICENSE_FILES = LICENSE + +define TREE_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) CFLAGS="$(TARGET_CFLAGS) -std=c99" \ + -C $(@D) +endef + +define TREE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/tree $(TARGET_DIR)/usr/bin/tree +endef + +$(eval $(generic-package)) diff --git a/package/tremor/Config.in b/package/tremor/Config.in new file mode 100644 index 00000000..ec7b8f8c --- /dev/null +++ b/package/tremor/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_TREMOR + bool "tremor (fixed point vorbis decoder)" + select BR2_PACKAGE_LIBOGG + help + Tremor is a fixed point implementation of an Ogg Vorbis + decoder. It provides a decoding API similar to libvorbis, + but gives much better performance on systems without a + floating-point unit. + + https://wiki.xiph.org/Tremor diff --git a/package/tremor/tremor.hash b/package/tremor/tremor.hash new file mode 100644 index 00000000..246378f5 --- /dev/null +++ b/package/tremor/tremor.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 4ff8e311a35218c3b411a617196b5c367f5e120fad394eb61400f9c2742e5d0a tremor-7c30a66346199f3f09017a09567c6c8a3a0eedc8-git4.tar.gz +sha256 d2ab5758336489da61c12cc5bb757da5339c4ae9001f9bb0562b4370249af814 COPYING diff --git a/package/tremor/tremor.mk b/package/tremor/tremor.mk new file mode 100644 index 00000000..a865e681 --- /dev/null +++ b/package/tremor/tremor.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# tremor +# +################################################################################ + +TREMOR_VERSION = 7c30a66346199f3f09017a09567c6c8a3a0eedc8 +TREMOR_SITE = https://gitlab.xiph.org/xiph/tremor.git +TREMOR_SITE_METHOD = git +TREMOR_LICENSE = BSD-3-Clause +TREMOR_LICENSE_FILES = COPYING + +TREMOR_AUTORECONF = YES +TREMOR_INSTALL_STAGING = YES +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) +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/package/triggerhappy/Config.in b/package/triggerhappy/Config.in new file mode 100644 index 00000000..a7864b37 --- /dev/null +++ b/package/triggerhappy/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_TRIGGERHAPPY + bool "triggerhappy" + depends on BR2_USE_MMU # fork() + help + Triggerhappy is a hotkey daemon developed with small and + embedded systems in mind, e.g. linux based routers. It + attaches to the input device files and interprets the event + data received and executes scripts configured in its + configuration. + + https://github.com/wertarbyte/triggerhappy diff --git a/package/triggerhappy/S10triggerhappy b/package/triggerhappy/S10triggerhappy new file mode 100644 index 00000000..48538730 --- /dev/null +++ b/package/triggerhappy/S10triggerhappy @@ -0,0 +1,36 @@ +#!/bin/sh + +NAME=thd +PIDFILE=/var/run/$NAME.pid +DAEMON_ARGS="--daemon --triggers /etc/triggerhappy/triggers.d --socket /var/run/thd.socket --pidfile $PIDFILE --user nobody /dev/input/event*" + +[ -r /etc/default/triggerhappy ] && . /etc/default/triggerhappy + +start() { + printf "Starting $NAME: " + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec /usr/sbin/thd -- $DAEMON_ARGS \ + && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping $NAME: " + start-stop-daemon --stop --quiet --pidfile $PIDFILE \ + && echo "OK" || echo "FAIL" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + sleep 1 + start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/package/triggerhappy/triggerhappy.hash b/package/triggerhappy/triggerhappy.hash new file mode 100644 index 00000000..0bb53f94 --- /dev/null +++ b/package/triggerhappy/triggerhappy.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 af0fc196202f2d35153be401769a9ad9107b5b6387146cfa8895ae9cafad631c triggerhappy-0.5.0.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/triggerhappy/triggerhappy.mk b/package/triggerhappy/triggerhappy.mk new file mode 100644 index 00000000..bb30e7ce --- /dev/null +++ b/package/triggerhappy/triggerhappy.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# triggerhappy +# +################################################################################ + +TRIGGERHAPPY_VERSION = 0.5.0 +TRIGGERHAPPY_SITE = \ + $(call github,wertarbyte,triggerhappy,release/$(TRIGGERHAPPY_VERSION)) +TRIGGERHAPPY_LICENSE = GPL-3.0+ +TRIGGERHAPPY_LICENSE_FILES = COPYING +TRIGGERHAPPY_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +TRIGGERHAPPY_DEPENDENCIES += systemd +endif + +define TRIGGERHAPPY_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) PKGCONFIG="$(PKG_CONFIG_HOST_BINARY)" \ + -C $(@D) thd th-cmd +endef + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +define TRIGGERHAPPY_INSTALL_UDEV_RULE + $(INSTALL) -D -m 0644 $(@D)/udev/triggerhappy-udev.rules \ + $(TARGET_DIR)/lib/udev/rules.d/triggerhappy.rules +endef +endif + +define TRIGGERHAPPY_INSTALL_TARGET_CMDS + $(INSTALL) -d $(TARGET_DIR)/etc/triggerhappy/triggers.d + $(INSTALL) -D -m 0755 $(@D)/thd $(TARGET_DIR)/usr/sbin/thd + $(INSTALL) -D -m 0755 $(@D)/th-cmd $(TARGET_DIR)/usr/sbin/th-cmd + $(TRIGGERHAPPY_INSTALL_UDEV_RULE) +endef + +define TRIGGERHAPPY_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/triggerhappy/S10triggerhappy \ + $(TARGET_DIR)/etc/init.d/S10triggerhappy +endef + +define TRIGGERHAPPY_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/triggerhappy/triggerhappy.service \ + $(TARGET_DIR)/usr/lib/systemd/system/triggerhappy.service +endef + +$(eval $(generic-package)) diff --git a/package/triggerhappy/triggerhappy.service b/package/triggerhappy/triggerhappy.service new file mode 100644 index 00000000..8431afe9 --- /dev/null +++ b/package/triggerhappy/triggerhappy.service @@ -0,0 +1,9 @@ +[Unit] +Description=Triggerhappy daemon + +[Service] +ExecStart=/usr/sbin/thd --triggers /etc/triggerhappy/triggers.d --socket /var/run/thd.socket --user nobody --deviceglob /dev/input/event* +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/trinity/0001-Fix-build-with-GCC-10.patch b/package/trinity/0001-Fix-build-with-GCC-10.patch new file mode 100644 index 00000000..5ae3735d --- /dev/null +++ b/package/trinity/0001-Fix-build-with-GCC-10.patch @@ -0,0 +1,38 @@ +From e53e25cc8dd5bdb5f7d9b4247de9e9921eec81d8 Mon Sep 17 00:00:00 2001 +From: Vinson Lee +Date: Thu, 30 Jan 2020 22:09:45 -0800 +Subject: [PATCH] Fix build with GCC 10. + + CC trinity +/usr/bin/ld: debug.o:include/logfile.h:8: multiple definition of `mainlogfile'; child.o:include/logfile.h:8: first defined here +/usr/bin/ld: log-files.o:include/logfile.h:8: multiple definition of `mainlogfile'; child.o:include/logfile.h:8: first defined here +/usr/bin/ld: log.o:include/logfile.h:8: multiple definition of `mainlogfile'; child.o:include/logfile.h:8: first defined here +/usr/bin/ld: main.o:include/logfile.h:8: multiple definition of `mainlogfile'; child.o:include/logfile.h:8: first defined here +/usr/bin/ld: output.o:include/logfile.h:8: multiple definition of `mainlogfile'; child.o:include/logfile.h:8: first defined here +/usr/bin/ld: params.o:include/logfile.h:8: multiple definition of `mainlogfile'; child.o:include/logfile.h:8: first defined here +/usr/bin/ld: shm.o:include/logfile.h:8: multiple definition of `mainlogfile'; child.o:include/logfile.h:8: first defined here +/usr/bin/ld: trinity.o:include/logfile.h:8: multiple definition of `mainlogfile'; child.o:include/logfile.h:8: first defined here + +Fixes: 13856316c259 ("reinstate the log-to-file code for now.") +Signed-off-by: Vinson Lee + +[Retrieved from: +https://github.com/kernelslacker/trinity/commit/e53e25cc8dd5bdb5f7d9b4247de9e9921eec81d8] +Signed-off-by: Fabrice Fontaine +--- + include/logfile.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/logfile.h b/include/logfile.h +index 90ea8b23..2305ac15 100644 +--- a/include/logfile.h ++++ b/include/logfile.h +@@ -5,7 +5,7 @@ + FILE *find_logfile_handle(void); + void synclogs(void); + +-FILE *mainlogfile; ++extern FILE *mainlogfile; + void open_main_logfile(void); + void close_logfile(FILE **handle); + diff --git a/package/trinity/0002-net-proto-ip-raw.c-fix-build-with-kernel-5.13.patch b/package/trinity/0002-net-proto-ip-raw.c-fix-build-with-kernel-5.13.patch new file mode 100644 index 00000000..4c747f41 --- /dev/null +++ b/package/trinity/0002-net-proto-ip-raw.c-fix-build-with-kernel-5.13.patch @@ -0,0 +1,37 @@ +From da65f0aa2bfcb4a2d9a77abfaa2955c6be3d37c9 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 17 Jul 2021 08:02:31 +0200 +Subject: [PATCH] net/proto-ip-raw.c: fix build with kernel >= 5.13 + +Fix the following build failure with kernel >= 5.13: + +In file included from /home/buildroot/autobuild/instance-2/output-1/host/powerpc-buildroot-linux-uclibc/sysroot/usr/include/linux/icmp.h:23, + from net/proto-ip-raw.c:1: +/home/buildroot/autobuild/instance-2/output-1/host/powerpc-buildroot-linux-uclibc/sysroot/usr/include/netinet/in.h:33:5: error: redeclaration of enumerator 'IPPROTO_IP' + 33 | IPPROTO_IP = 0, /* Dummy protocol for TCP. */ + | ^~~~~~~~~~ +/home/buildroot/autobuild/instance-2/output-1/host/powerpc-buildroot-linux-uclibc/sysroot/usr/include/linux/in.h:29:3: note: previous definition of 'IPPROTO_IP' was here + 29 | IPPROTO_IP = 0, /* Dummy protocol for TCP */ + | ^~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/c58119baed8d7711da799e34a5ee1117f46b96f4 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/kernelslacker/trinity/pull/35] +--- + net/proto-ip-raw.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/net/proto-ip-raw.c b/net/proto-ip-raw.c +index 95f2cb13..b407bb68 100644 +--- a/net/proto-ip-raw.c ++++ b/net/proto-ip-raw.c +@@ -1,3 +1,4 @@ ++#include + #include + #include "net.h" + #include "trinity.h" +-- +2.30.2 + diff --git a/package/trinity/0003-Use-fcntl-h-for-dev_t-mode_t.patch b/package/trinity/0003-Use-fcntl-h-for-dev_t-mode_t.patch new file mode 100644 index 00000000..c4d9811b --- /dev/null +++ b/package/trinity/0003-Use-fcntl-h-for-dev_t-mode_t.patch @@ -0,0 +1,46 @@ +From b1a0aef9978d4a41e7e601c277d4fb1b0cfbed89 Mon Sep 17 00:00:00 2001 +From: Dave Jones +Date: Thu, 26 Aug 2021 11:17:34 -0400 +Subject: [PATCH] Use fcntl.h for dev_t & mode_t +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Should fix: + +In file included from /usr/include/bits/statx.h:31, + from /usr/include/sys/stat.h:446, + from include/files.h:3, + from include/shm.h:6, + from syscalls/x86/modify_ldt.c:12: +/usr/include/linux/stat.h:57:2: error: unknown type name ‘__s64’ + __s64 tv_sec; + ^~~~~ +/usr/include/linux/stat.h:58:2: error: unknown type name ‘__u32’ + __u32 tv_nsec; + ^~~~~ +/usr/include/linux/stat.h:59:2: error: unknown type name ‘__s32’ + __s32 __reserved; + ^~~~~ +/usr/include/linux/stat.h:101:2: error: unknown type name ‘__u32’ + __u32 stx_mask; /* What results were written [uncond] */ + +[Retrieved from: +https://github.com/kernelslacker/trinity/commit/b1a0aef9978d4a41e7e601c277d4fb1b0cfbed89] +Signed-off-by: Fabrice Fontaine +--- + include/files.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/files.h b/include/files.h +index 2a8e0e2d..ba3cc98f 100644 +--- a/include/files.h ++++ b/include/files.h +@@ -1,6 +1,6 @@ + #pragma once + +-#include ++#include + #include "fd.h" + + unsigned long get_o_flags(void); diff --git a/package/trinity/0004-drop-decnet.patch b/package/trinity/0004-drop-decnet.patch new file mode 100644 index 00000000..15ba7f8e --- /dev/null +++ b/package/trinity/0004-drop-decnet.patch @@ -0,0 +1,130 @@ +From ec8dcc7faf13c57f5f6d785e4429818f1239a058 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 8 Jan 2023 20:50:18 +0100 +Subject: [PATCH] drop decnet + +Drop decnet as it has been removed since kernel 6.1 and +https://github.com/torvalds/linux/commit/1202cdd665315c525b5237e96e0bedc76d7e754f +resulting in the following build failure: + +net/proto-decnet.c:5:10: fatal error: linux/dn.h: No such file or directory + 5 | #include + | ^~~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/47e0a5e0b6fcf33ab4f9848d5d8c2be9e5283950 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/kernelslacker/trinity/pull/41] +--- + include/net.h | 1 - + net/proto-decnet.c | 59 ---------------------------------------------- + net/proto-unix.c | 1 - + net/protocols.c | 1 - + 4 files changed, 62 deletions(-) + delete mode 100644 net/proto-decnet.c + +diff --git a/include/net.h b/include/net.h +index 99d55363..791e8090 100644 +--- a/include/net.h ++++ b/include/net.h +@@ -80,7 +80,6 @@ extern const struct netproto proto_atmpvc; + extern const struct netproto proto_atmsvc; + extern const struct netproto proto_x25; + extern const struct netproto proto_rose; +-extern const struct netproto proto_decnet; + extern const struct netproto proto_llc; + extern const struct netproto proto_netlink; + extern const struct netproto proto_packet; +diff --git a/net/proto-decnet.c b/net/proto-decnet.c +deleted file mode 100644 +index 7711cf00..00000000 +--- a/net/proto-decnet.c ++++ /dev/null +@@ -1,59 +0,0 @@ +-#include +-#include +-#include +-#include +-#include +-#include +-#include "net.h" +-#include "random.h" +-#include "utils.h" // RAND_ARRAY +-#include "compat.h" +- +-static void decnet_gen_sockaddr(struct sockaddr **addr, socklen_t *addrlen) +-{ +- struct sockaddr_dn *dn; +- unsigned int i; +- +- dn = zmalloc(sizeof(struct sockaddr_dn)); +- +- dn->sdn_family = PF_DECnet; +- dn->sdn_flags = rnd(); +- dn->sdn_objnum = rnd(); +- dn->sdn_objnamel = rnd() % 16; +- for (i = 0; i < dn->sdn_objnamel; i++) +- dn->sdn_objname[i] = rnd(); +- dn->sdn_add.a_len = RAND_BOOL(); +- dn->sdn_add.a_addr[0] = rnd(); +- dn->sdn_add.a_addr[1] = rnd(); +- *addr = (struct sockaddr *) dn; +- *addrlen = sizeof(struct sockaddr_dn); +-} +- +-static const unsigned int decnet_opts[] = { +- SO_CONDATA, SO_CONACCESS, SO_PROXYUSR, SO_LINKINFO, +- DSO_CONDATA, DSO_DISDATA, DSO_CONACCESS, DSO_ACCEPTMODE, +- DSO_CONACCEPT, DSO_CONREJECT, DSO_LINKINFO, DSO_STREAM, +- DSO_SEQPACKET, DSO_MAXWINDOW, DSO_NODELAY, DSO_CORK, +- DSO_SERVICES, DSO_INFO +-}; +- +-static void decnet_setsockopt(struct sockopt *so, __unused__ struct socket_triplet *triplet) +-{ +- so->level = SOL_DECNET; +- so->optname = RAND_ARRAY(decnet_opts); +- +- // TODO: set optlen correctly +-} +- +-static struct socket_triplet decnet_triplets[] = { +- { .family = PF_DECnet, .protocol = DNPROTO_NSP, .type = SOCK_SEQPACKET }, +- { .family = PF_DECnet, .protocol = DNPROTO_NSP, .type = SOCK_STREAM }, +-}; +- +-const struct netproto proto_decnet = { +- .name = "decnet", +- .setsockopt = decnet_setsockopt, +- .gen_sockaddr = decnet_gen_sockaddr, +- .valid_triplets = decnet_triplets, +- .nr_triplets = ARRAY_SIZE(decnet_triplets), +-}; +diff --git a/net/proto-unix.c b/net/proto-unix.c +index f7427a22..119c1429 100644 +--- a/net/proto-unix.c ++++ b/net/proto-unix.c +@@ -2,7 +2,6 @@ + #include + #include + #include +-#include + #include + #include "net.h" + #include "random.h" +diff --git a/net/protocols.c b/net/protocols.c +index ea64d5f5..278f08b5 100644 +--- a/net/protocols.c ++++ b/net/protocols.c +@@ -18,7 +18,6 @@ const struct protoptr net_protocols[TRINITY_PF_MAX] = { + #ifdef USE_IPV6 + [PF_INET6] = { .proto = &proto_inet6 }, + #endif +- [PF_DECnet] = { .proto = &proto_decnet }, + [PF_PACKET] = { .proto = &proto_packet }, + #ifdef USE_NETECONET + [PF_ECONET] = { .proto = &proto_econet }, +-- +2.39.0 + diff --git a/package/trinity/0005-ioctls-drm-check-i810-mga-r128-and-savage-support-44.patch b/package/trinity/0005-ioctls-drm-check-i810-mga-r128-and-savage-support-44.patch new file mode 100644 index 00000000..b91fddb2 --- /dev/null +++ b/package/trinity/0005-ioctls-drm-check-i810-mga-r128-and-savage-support-44.patch @@ -0,0 +1,113 @@ +From 6823bacb3c2564bff5da3175c574fd6a6af4d8b2 Mon Sep 17 00:00:00 2001 +From: chuhu +Date: Sat, 1 Jul 2023 01:02:37 +0800 +Subject: [PATCH] ioctls/drm: check i810,mga,r128 and savage support (#44) + +kernel v6.3-rc1 removed some drm drivers, so add the extra check to make +the compile succeed. + +7872bc2cb13e drm: Remove the obsolete driver-savage +28483b8666bf drm: Remove the obsolete driver-r128 +96ed7db55bef drm: Remove the obsolete driver-mga +cab18866fead drm: Remove the obsolete driver-i810 + +Signed-off-by: Chunyu Hu +Signed-off-by: Waldemar Brodkorb +Upstream: https://github.com/kernelslacker/trinity/commit/6823bacb3c2564bff5da3175c574fd6a6af4d8b2 +--- + configure | 4 ++++ + ioctls/drm.c | 14 ++++++++++++++ + 2 files changed, 18 insertions(+) + +diff --git a/configure b/configure +index 944c8cf7..bbaf9afc 100755 +--- a/configure ++++ b/configure +@@ -320,6 +320,10 @@ check_header linux/irda.h USE_IRDA + check_header linux/rds.h USE_RDS + check_header linux/vfio.h USE_VFIO + check_header drm/drm.h USE_DRM ++check_header drm/i810_drm.h USE_DRM_I810 ++check_header drm/mga_drm.h USE_DRM_MGA ++check_header drm/r128_drm.h USE_DRM_R128 ++check_header drm/savage_drm.h USE_DRM_SAVAGE + check_header drm/exynos_drm.h USE_DRM_EXYNOS + check_header sound/compress_offload.h USE_SNDDRV_COMPRESS_OFFLOAD + check_header linux/kvm.h USE_KVM +diff --git a/ioctls/drm.c b/ioctls/drm.c +index 81ed3682..a07a8436 100644 +--- a/ioctls/drm.c ++++ b/ioctls/drm.c +@@ -8,13 +8,21 @@ + #ifdef USE_DRM_EXYNOS + #include + #endif ++#ifdef USE_DRM_I810 + #include ++#endif + #include ++#ifdef USE_DRM_MGA + #include ++#endif + #include ++#ifdef USE_DRM_R128 + #include ++#endif + #include ++#ifdef USE_DRM_SAVAGE + #include ++#endif + + #include "ioctls.h" + #include "utils.h" +@@ -293,6 +301,7 @@ static const struct ioctl drm_ioctls[] = { + #endif + #endif + ++#ifdef USE_DRM_I810 + /* i810_drm.h */ + IOCTL(DRM_IOCTL_I810_INIT), + IOCTL(DRM_IOCTL_I810_VERTEX), +@@ -309,6 +318,7 @@ static const struct ioctl drm_ioctls[] = { + IOCTL(DRM_IOCTL_I810_MC), + IOCTL(DRM_IOCTL_I810_RSTATUS), + IOCTL(DRM_IOCTL_I810_FLIP), ++#endif + + /* i915_drm.h */ + IOCTL(DRM_IOCTL_I915_INIT), +@@ -378,6 +388,7 @@ static const struct ioctl drm_ioctls[] = { + IOCTL(DRM_IOCTL_I915_REG_READ), + #endif + ++#ifdef USE_DRM_MGA + /* mga_drm.h */ + IOCTL(DRM_IOCTL_MGA_INIT), + IOCTL(DRM_IOCTL_MGA_FLUSH), +@@ -401,6 +412,7 @@ static const struct ioctl drm_ioctls[] = { + IOCTL(DRM_IOCTL_NOUVEAU_GROBJ_ALLOC), + IOCTL(DRM_IOCTL_NOUVEAU_NOTIFIEROBJ_ALLOC), + IOCTL(DRM_IOCTL_NOUVEAU_GPUOBJ_FREE), ++#endif + #ifdef DRM_IOCTL_NOUVEAU_GEM_NEW + IOCTL(DRM_IOCTL_NOUVEAU_GEM_NEW), + #endif +@@ -417,6 +429,7 @@ static const struct ioctl drm_ioctls[] = { + IOCTL(DRM_IOCTL_NOUVEAU_GEM_INFO), + #endif + ++#ifdef USE_DRM_R128 + /* r128_drm.h */ + IOCTL(DRM_IOCTL_R128_INIT), + IOCTL(DRM_IOCTL_R128_CCE_START), +@@ -435,6 +448,7 @@ static const struct ioctl drm_ioctls[] = { + IOCTL(DRM_IOCTL_R128_FULLSCREEN), + IOCTL(DRM_IOCTL_R128_GETPARAM), + IOCTL(DRM_IOCTL_R128_FLIP), ++#endif + + /* radeon_drm.h */ + IOCTL(DRM_IOCTL_RADEON_CP_INIT), +-- +2.39.2 + diff --git a/package/trinity/0006-kvm-drop-KVM_SET_MEMORY_REGION-42.patch b/package/trinity/0006-kvm-drop-KVM_SET_MEMORY_REGION-42.patch new file mode 100644 index 00000000..42779836 --- /dev/null +++ b/package/trinity/0006-kvm-drop-KVM_SET_MEMORY_REGION-42.patch @@ -0,0 +1,30 @@ +From ca07c86b2aeeb91213922eaf481c9e224679a7fd Mon Sep 17 00:00:00 2001 +From: Jiri Slaby +Date: Fri, 17 Mar 2023 20:28:24 +0100 +Subject: [PATCH] kvm: drop KVM_SET_MEMORY_REGION (#42) + +It was dropped in upstream in commit 61e15f871241 (KVM: Delete all +references to removed KVM_SET_MEMORY_REGION ioctl). + +Co-authored-by: Jiri Slaby +Signed-off-by: Waldemar Brodkorb +Upstream: https://github.com/kernelslacker/trinity/commit/ca07c86b2aeeb91213922eaf481c9e224679a7fd +--- + ioctls/kvm.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/ioctls/kvm.c b/ioctls/kvm.c +index 14c55ef1..30aeed7a 100644 +--- a/ioctls/kvm.c ++++ b/ioctls/kvm.c +@@ -8,7 +8,6 @@ + #include "utils.h" + + static const struct ioctl kvm_ioctls[] = { +- IOCTL(KVM_SET_MEMORY_REGION), + IOCTL(KVM_CREATE_VCPU), + IOCTL(KVM_GET_DIRTY_LOG), + IOCTL(KVM_SET_NR_MMU_PAGES), +-- +2.39.2 + diff --git a/package/trinity/Config.in b/package/trinity/Config.in new file mode 100644 index 00000000..31a93057 --- /dev/null +++ b/package/trinity/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_TRINITY_ARCH_SUPPORTS + bool + default y + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # __sync_val_compare_and_swap_4 + 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_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 toolchain w/ headers >= 3.4" + depends on BR2_PACKAGE_TRINITY_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 diff --git a/package/trinity/trinity.hash b/package/trinity/trinity.hash new file mode 100644 index 00000000..24da8ea6 --- /dev/null +++ b/package/trinity/trinity.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 7e0da953c2cc6fb3907d1f37d35f61836433fb50e97117a72eef113abb783dc6 trinity-1.9.tar.xz +sha256 35e3fc68c89fd7b8f72fd910b521cb3292f859e9181f3c26bd0df84d144bc1d4 COPYING diff --git a/package/trinity/trinity.mk b/package/trinity/trinity.mk new file mode 100644 index 00000000..f6b56f62 --- /dev/null +++ b/package/trinity/trinity.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# trinity +# +################################################################################ + +TRINITY_VERSION = 1.9 +TRINITY_SITE = http://codemonkey.org.uk/projects/trinity +TRINITY_SOURCE = trinity-$(TRINITY_VERSION).tar.xz +TRINITY_LICENSE = GPL-2.0 +TRINITY_LICENSE_FILES = COPYING +TRINITY_CPE_ID_VALID = YES + +TRINITY_LDFLAGS = $(TARGET_LDFLAGS) + +ifeq ($(BR2_PACKAGE_LIBEXECINFO),y) +TRINITY_DEPENDENCIES += libexecinfo +TRINITY_LDFLAGS += -lexecinfo +endif + +define TRINITY_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure) +endef + +define TRINITY_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) LDFLAGS="$(TRINITY_LDFLAGS)" +endef + +define TRINITY_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + LDFLAGS="$(TRINITY_LDFLAGS)" DESTDIR=$(TARGET_DIR)/usr install +endef + +# Install helper scripts +define TRINITY_INSTALL_HELPER_SCRIPTS + mkdir -p $(TARGET_DIR)/usr/libexec/trinity + cp -p $(@D)/scripts/* $(TARGET_DIR)/usr/libexec/trinity/ +endef +TRINITY_POST_INSTALL_TARGET_HOOKS += TRINITY_INSTALL_HELPER_SCRIPTS + +$(eval $(generic-package)) diff --git a/package/trousers/0001-Check-if-the-compiler-understands-pie-and-relro-options.patch b/package/trousers/0001-Check-if-the-compiler-understands-pie-and-relro-options.patch new file mode 100644 index 00000000..b1179eb4 --- /dev/null +++ b/package/trousers/0001-Check-if-the-compiler-understands-pie-and-relro-options.patch @@ -0,0 +1,214 @@ +From 9abda1bb380bdbef1affaec381742ced394ca118 Mon Sep 17 00:00:00 2001 +From: Lada Trimasova +Date: Mon, 18 Jan 2016 15:58:19 +0300 +Subject: [PATCH] Check if the compiler understands pie and relro options + +-pie and -fpie enable the building of position-independent +executables, and -Wl,-z,relro turns on read-only relocation support in gcc. +Add checks to ensure that the compiler and linker understand these options. + +Signed-off-by: Lada Trimasova +[Bernd: Rebased for version 0.3.14] +Signed-off-by: Bernd Kuhls +--- + configure.ac | 5 +++ + m4/ax_check_compile_flag.m4 | 72 ++++++++++++++++++++++++++++++++++++ + m4/ax_check_link_flag.m4 | 71 +++++++++++++++++++++++++++++++++++ + src/tcsd/Makefile.am | 4 +- + 4 files changed, 150 insertions(+), 2 deletions(-) + create mode 100644 m4/ax_check_compile_flag.m4 + create mode 100644 m4/ax_check_link_flag.m4 + +diff --git a/configure.in b/configure.in +index add23dc..9603353 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -12,6 +12,7 @@ TSS_VER_MINOR=3 + # compute $target + AC_CANONICAL_TARGET + AM_INIT_AUTOMAKE([foreign subdir-objects 1.6]) ++AC_CONFIG_MACRO_DIR([m4]) + + # Debugging support + AC_ARG_ENABLE([debug], +@@ -383,6 +384,10 @@ elif test x"${prefix}" = x"NONE"; then + localstatedir="/usr/local/var" + fi + ++AX_CHECK_COMPILE_FLAG([-fPIE -DPIE], [PIE_CFLAGS="-fPIE -DPIE"]) ++AX_CHECK_LINK_FLAG([-pie], [PIE_LDFLAGS="$PIE_LDFLAGS -pie"]) ++AX_CHECK_LINK_FLAG([-Wl,-z,relro], [LDFLAGS="$LDFLAGS -Wl,-z,relro"]) ++ + AC_OUTPUT(dist/tcsd.conf \ + dist/fedora/trousers.spec \ + dist/trousers.spec \ +diff --git a/m4/ax_check_compile_flag.m4 b/m4/ax_check_compile_flag.m4 +new file mode 100644 +index 0000000..c3a8d69 +--- /dev/null ++++ b/m4/ax_check_compile_flag.m4 +@@ -0,0 +1,72 @@ ++# =========================================================================== ++# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS]) ++# ++# DESCRIPTION ++# ++# Check whether the given FLAG works with the current language's compiler ++# or gives an error. (Warnings, however, are ignored) ++# ++# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on ++# success/failure. ++# ++# If EXTRA-FLAGS is defined, it is added to the current language's default ++# flags (e.g. CFLAGS) when the check is done. The check is thus made with ++# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to ++# force the compiler to issue an error when a bad flag is given. ++# ++# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this ++# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. ++# ++# LICENSE ++# ++# Copyright (c) 2008 Guido U. Draheim ++# Copyright (c) 2011 Maarten Bosmans ++# ++# This program is free software: you can redistribute it and/or modify it ++# under the terms of the GNU General Public License as published by the ++# Free Software Foundation, either version 3 of the License, or (at your ++# option) any later version. ++# ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General ++# Public License for more details. ++# ++# You should have received a copy of the GNU General Public License along ++# with this program. If not, see . ++# ++# As a special exception, the respective Autoconf Macro's copyright owner ++# gives unlimited permission to copy, distribute and modify the configure ++# scripts that are the output of Autoconf when processing the Macro. You ++# need not follow the terms of the GNU General Public License when using ++# or distributing such scripts, even though portions of the text of the ++# Macro appear in them. The GNU General Public License (GPL) does govern ++# all other use of the material that constitutes the Autoconf Macro. ++# ++# This special exception to the GPL applies to versions of the Autoconf ++# Macro released by the Autoconf Archive. When you make and distribute a ++# modified version of the Autoconf Macro, you may extend this special ++# exception to the GPL to apply to your modified version as well. ++ ++#serial 2 ++ ++AC_DEFUN([AX_CHECK_COMPILE_FLAG], ++[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX ++AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl ++AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ ++ ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS ++ _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" ++ AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], ++ [AS_VAR_SET(CACHEVAR,[yes])], ++ [AS_VAR_SET(CACHEVAR,[no])]) ++ _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) ++AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes], ++ [m4_default([$2], :)], ++ [m4_default([$3], :)]) ++AS_VAR_POPDEF([CACHEVAR])dnl ++])dnl AX_CHECK_COMPILE_FLAGS +diff --git a/m4/ax_check_link_flag.m4 b/m4/ax_check_link_flag.m4 +new file mode 100644 +index 0000000..e2d0d36 +--- /dev/null ++++ b/m4/ax_check_link_flag.m4 +@@ -0,0 +1,71 @@ ++# =========================================================================== ++# http://www.gnu.org/software/autoconf-archive/ax_check_link_flag.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS]) ++# ++# DESCRIPTION ++# ++# Check whether the given FLAG works with the linker or gives an error. ++# (Warnings, however, are ignored) ++# ++# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on ++# success/failure. ++# ++# If EXTRA-FLAGS is defined, it is added to the linker's default flags ++# when the check is done. The check is thus made with the flags: "LDFLAGS ++# EXTRA-FLAGS FLAG". This can for example be used to force the linker to ++# issue an error when a bad flag is given. ++# ++# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this ++# macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG. ++# ++# LICENSE ++# ++# Copyright (c) 2008 Guido U. Draheim ++# Copyright (c) 2011 Maarten Bosmans ++# ++# This program is free software: you can redistribute it and/or modify it ++# under the terms of the GNU General Public License as published by the ++# Free Software Foundation, either version 3 of the License, or (at your ++# option) any later version. ++# ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General ++# Public License for more details. ++# ++# You should have received a copy of the GNU General Public License along ++# with this program. If not, see . ++# ++# As a special exception, the respective Autoconf Macro's copyright owner ++# gives unlimited permission to copy, distribute and modify the configure ++# scripts that are the output of Autoconf when processing the Macro. You ++# need not follow the terms of the GNU General Public License when using ++# or distributing such scripts, even though portions of the text of the ++# Macro appear in them. The GNU General Public License (GPL) does govern ++# all other use of the material that constitutes the Autoconf Macro. ++# ++# This special exception to the GPL applies to versions of the Autoconf ++# Macro released by the Autoconf Archive. When you make and distribute a ++# modified version of the Autoconf Macro, you may extend this special ++# exception to the GPL to apply to your modified version as well. ++ ++#serial 2 ++ ++AC_DEFUN([AX_CHECK_LINK_FLAG], ++[AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl ++AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [ ++ ax_check_save_flags=$LDFLAGS ++ LDFLAGS="$LDFLAGS $4 $1" ++ AC_LINK_IFELSE([AC_LANG_PROGRAM()], ++ [AS_VAR_SET(CACHEVAR,[yes])], ++ [AS_VAR_SET(CACHEVAR,[no])]) ++ LDFLAGS=$ax_check_save_flags]) ++AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes], ++ [m4_default([$2], :)], ++ [m4_default([$3], :)]) ++AS_VAR_POPDEF([CACHEVAR])dnl ++])dnl AX_CHECK_LINK_FLAGS +diff --git a/src/tcsd/Makefile.am b/src/tcsd/Makefile.am +index 2210734..6640ab2 100644 +--- a/src/tcsd/Makefile.am ++++ b/src/tcsd/Makefile.am +@@ -1,8 +1,8 @@ + sbin_PROGRAMS=tcsd + +-tcsd_CFLAGS=-DAPPID=\"TCSD\" -DVAR_PREFIX=\"@localstatedir@\" -DETC_PREFIX=\"@sysconfdir@\" -I${top_srcdir}/src/include -fPIE -DPIE ++tcsd_CFLAGS=-DAPPID=\"TCSD\" -DVAR_PREFIX=\"@localstatedir@\" -DETC_PREFIX=\"@sysconfdir@\" -I${top_srcdir}/src/include $(PIE_CFLAGS) + tcsd_LDADD=${top_builddir}/src/tcs/libtcs.a ${top_builddir}/src/tddl/libtddl.a -lpthread @CRYPTOLIB@ +-tcsd_LDFLAGS=@TCSD_LDFLAGS@ ++tcsd_LDFLAGS=$(PIE_LDFLAGS) $(RELRO_LDFLAGS) + tcsd_SOURCES=svrside.c tcsd_conf.c tcsd_threads.c platform.c + + if TSS_BUILD_PS diff --git a/package/trousers/0002-Check-that-getpwent_r-is-available-before-using-it.patch b/package/trousers/0002-Check-that-getpwent_r-is-available-before-using-it.patch new file mode 100644 index 00000000..ab2418c7 --- /dev/null +++ b/package/trousers/0002-Check-that-getpwent_r-is-available-before-using-it.patch @@ -0,0 +1,82 @@ +From 9e42c405f30d2b52d019598436ea346ef8586f43 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?No=C3=A9=20Rubinstein?= +Date: Wed, 24 Aug 2016 18:55:25 +0200 +Subject: [PATCH] Check that getpwent_r is available before using it + +This fixes building trousers with musl + +Signed-off-by: Noé Rubinstein +[Bernd: Rebased for version 0.3.14] +Signed-off-by: Bernd Kuhls +--- + configure.ac | 4 ++++ + src/tspi/ps/tspps.c | 10 +++++----- + 2 files changed, 9 insertions(+), 5 deletions(-) + +diff --git a/configure.in b/configure.in +index fd3f5f1..e3d7acf 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -145,6 +145,10 @@ else + AC_MSG_ERROR(["gtk", "openssl" and "none" are the only supported gui options for trousers]) + fi + ++# Look for getpwent_r. If it is not found, getpwent will be used instead, with ++# an additional mutex. ++AC_CHECK_FUNC(getpwent_r, [AC_DEFINE(HAVE_GETPWENT_R)]) ++ + # + # The default port that the TCS daemon listens on + # +diff --git a/src/tspi/ps/tspps.c b/src/tspi/ps/tspps.c +index c6f9c3d..9d00d2a 100644 +--- a/src/tspi/ps/tspps.c ++++ b/src/tspi/ps/tspps.c +@@ -45,7 +45,7 @@ + + static int user_ps_fd = -1; + static MUTEX_DECLARE_INIT(user_ps_lock); +-#if (defined (__FreeBSD__) || defined (__OpenBSD__)) ++#ifndef HAVE_GETPWENT_R + static MUTEX_DECLARE_INIT(user_ps_path); + #endif + static struct flock fl; +@@ -60,7 +60,7 @@ get_user_ps_path(char **file) + TSS_RESULT result; + char *file_name = NULL, *home_dir = NULL; + struct passwd *pwp; +-#if (defined (__linux) || defined (linux) || defined(__GLIBC__)) ++#ifdef HAVE_GETPWENT_R + struct passwd pw; + #endif + struct stat stat_buf; +@@ -72,7 +72,7 @@ get_user_ps_path(char **file) + *file = strdup(file_name); + return (*file) ? TSS_SUCCESS : TSPERR(TSS_E_OUTOFMEMORY); + } +-#if (defined (__FreeBSD__) || defined (__OpenBSD__)) ++#ifndef HAVE_GETPWENT_R + MUTEX_LOCK(user_ps_path); + #endif + +@@ -90,7 +90,7 @@ get_user_ps_path(char **file) + #else + setpwent(); + while (1) { +-#if (defined (__linux) || defined (linux) || defined(__GLIBC__)) ++#ifdef HAVE_GETPWENT_R + rc = getpwent_r(&pw, buf, PASSWD_BUFSIZE, &pwp); + if (rc) { + LogDebugFn("USER PS: Error getting path to home directory: getpwent_r: %s", +@@ -99,7 +99,7 @@ get_user_ps_path(char **file) + return TSPERR(TSS_E_INTERNAL_ERROR); + } + +-#elif (defined (__FreeBSD__) || defined (__OpenBSD__)) ++#else + if ((pwp = getpwent()) == NULL) { + LogDebugFn("USER PS: Error getting path to home directory: getpwent: %s", + strerror(rc)); +-- +2.1.4 + diff --git a/package/trousers/0003-Fix-build-with-LibreSSL-2-7.patch b/package/trousers/0003-Fix-build-with-LibreSSL-2-7.patch new file mode 100644 index 00000000..65da979f --- /dev/null +++ b/package/trousers/0003-Fix-build-with-LibreSSL-2-7.patch @@ -0,0 +1,24 @@ +Fix build with LibreSSL 2.7 + +LibreSSL 2.7 implemented OpenSSL 1.1 API + +See also: https://reviews.freebsd.org/D14849#change-KhYbRXBMIBod + +Cheers, +Bernard Spil (brnrd@FreeBSD.org) + +[Retrieved (and backported) from: +https://sourceforge.net/p/trousers/bugs/234] +Signed-off-by: Fabrice Fontaine + +--- ./src/trspi/crypto/openssl/rsa.c.orig 2016-11-23 12:26:19 UTC ++++ ./src/trspi/crypto/openssl/rsa.c +@@ -38,7 +38,7 @@ + #define DEBUG_print_openssl_errors() + #endif + +-#if (OPENSSL_VERSION_NUMBER < 0x10100001L) || defined(LIBRESSL_VERSION_NUMBER) ++#if (OPENSSL_VERSION_NUMBER < 0x10100001L) || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x20700000L) + static int + RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d) + { diff --git a/package/trousers/Config.in b/package/trousers/Config.in new file mode 100644 index 00000000..998df983 --- /dev/null +++ b/package/trousers/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_TROUSERS + bool "trousers" + depends on BR2_TOOLCHAIN_HAS_THREADS + # doesn't build properly in static only configurations + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + The open-source TCG Software Stack (TSS). + + This library enables the use of a Trusted Platform Module + that complies with the TPM specification, version 1.2. It + implements the TSS specification, version 1.2. + + http://trousers.sourceforge.net/ + +comment "trousers needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/trousers/trousers.hash b/package/trousers/trousers.hash new file mode 100644 index 00000000..f6c34274 --- /dev/null +++ b/package/trousers/trousers.hash @@ -0,0 +1,6 @@ +# http://sourceforge.net/projects/trousers/files/trousers/0.3.15/ +sha1 75cd40e17c9385299e50ff2099905865442b59f1 trousers-0.3.15.tar.gz +md5 eb1b02e98c7d360749b9076196db3f0f trousers-0.3.15.tar.gz +# Locally computed +sha256 1e5be93e518372acf1d92d2f567d01a46fdb0b730487e544e6fb896c59cac77f trousers-0.3.15.tar.gz +sha256 1ad596d12e7471549663c03e280b5b5d084a2e853fb86e4d766109818f9d7dae LICENSE diff --git a/package/trousers/trousers.mk b/package/trousers/trousers.mk new file mode 100644 index 00000000..b84425de --- /dev/null +++ b/package/trousers/trousers.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# trousers +# +################################################################################ + +TROUSERS_VERSION = 0.3.15 +TROUSERS_SITE = http://downloads.sourceforge.net/project/trousers/trousers/$(TROUSERS_VERSION) +TROUSERS_LICENSE = BSD-3-Clause +TROUSERS_LICENSE_FILES = LICENSE +TROUSERS_CPE_ID_VENDOR = trustedcomputinggroup +TROUSERS_INSTALL_STAGING = YES +# Need autoreconf because of a patch touching configure.in and Makefile.am +TROUSERS_AUTORECONF = YES +TROUSERS_DEPENDENCIES = host-pkgconf openssl + +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. +TROUSERS_CONF_OPTS += --disable-usercheck + +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) +TROUSERS_CONF_ENV += \ + ax_cv_check_cflags___fPIE__DPIE=no \ + ax_cv_check_ldflags___pie=no +endif + +$(eval $(autotools-package)) diff --git a/package/ts4900-fpga/Config.in b/package/ts4900-fpga/Config.in new file mode 100644 index 00000000..9f704fbc --- /dev/null +++ b/package/ts4900-fpga/Config.in @@ -0,0 +1,11 @@ +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. + + https://docs.embeddedts.com/TS-4900#FPGA_Changelog diff --git a/package/ts4900-fpga/ts4900-fpga.hash b/package/ts4900-fpga/ts4900-fpga.hash new file mode 100644 index 00000000..1d3c62bf --- /dev/null +++ b/package/ts4900-fpga/ts4900-fpga.hash @@ -0,0 +1,5 @@ +# From https://files.embeddedts.com/ts-socket-macrocontrollers/ts-4900-linux/fpga//ts4900-fpga-20170510.bin.md5 +md5 86c7c3d7fb9c607af1ef55e1222b4416 ts4900-fpga-20170510.bin + +# Locally calculated +sha256 f15edd6813ee5e93e7f380d85df2dc31e764ebca465093fb9006d56ee15b476b ts4900-fpga-20170510.bin diff --git a/package/ts4900-fpga/ts4900-fpga.mk b/package/ts4900-fpga/ts4900-fpga.mk new file mode 100644 index 00000000..73e7a28e --- /dev/null +++ b/package/ts4900-fpga/ts4900-fpga.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# ts4900-fpga +# +################################################################################ + +TS4900_FPGA_VERSION = 20170510 +TS4900_FPGA_SOURCE = ts4900-fpga-$(TS4900_FPGA_VERSION).bin +TS4900_FPGA_SITE = https://files.embeddedts.com/ts-socket-macrocontrollers/ts-4900-linux/fpga +# No license file provided, Yocto recipe from the vendor claims MIT. +# https://github.com/embeddedTS/meta-ts/blob/f31860f1204b64f765a5380d3b93a2cf18234f90/recipes-extras/ts4900-fpga/ts4900-fpga.bb#L6 + +define TS4900_FPGA_EXTRACT_CMDS + cp $(TS4900_FPGA_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/package/tslib/Config.in b/package/tslib/Config.in new file mode 100644 index 00000000..a2e1e7ff --- /dev/null +++ b/package/tslib/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_TSLIB + bool "tslib" + help + Tslib is a filtering layer for touchscreen panel events. + + http://tslib.org diff --git a/package/tslib/tslib.hash b/package/tslib/tslib.hash new file mode 100644 index 00000000..6fe35633 --- /dev/null +++ b/package/tslib/tslib.hash @@ -0,0 +1,5 @@ +# https://github.com/libts/tslib/releases/download/1.23/tslib-1.23.tar.xz.sha256 +sha256 9b489a54d48006201f2fe955a88c3f857535ac93b6cf8e5a16c7b166c8991dac tslib-1.23.tar.xz + +# Locally computed +sha256 9b872a8a070b8ad329c4bd380fb1bf0000f564c75023ec8e1e6803f15364b9e9 COPYING diff --git a/package/tslib/tslib.mk b/package/tslib/tslib.mk new file mode 100644 index 00000000..e8eb3bee --- /dev/null +++ b/package/tslib/tslib.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# tslib +# +################################################################################ + +TSLIB_VERSION = 1.23 +TSLIB_SITE = https://github.com/libts/tslib/releases/download/$(TSLIB_VERSION) +TSLIB_SOURCE = tslib-$(TSLIB_VERSION).tar.xz +TSLIB_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries) +TSLIB_LICENSE_FILES = COPYING + +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 + +ifeq ($(BR2_STATIC_LIBS),y) +TSLIB_CONF_OPTS += \ + --enable-input=static \ + --enable-linear=static \ + --enable-median=static \ + --enable-pthres=static \ + --enable-iir=static \ + --enable-dejitter=static \ + --enable-debounce=static \ + --enable-skip=static \ + --enable-lowpass=static \ + --enable-invert=static \ + --enable-evthres=static \ + --enable-crop=static +endif + +$(eval $(autotools-package)) diff --git a/package/tstools/0001-build-get-along-with-buildroot.patch b/package/tstools/0001-build-get-along-with-buildroot.patch new file mode 100644 index 00000000..1e7a7482 --- /dev/null +++ b/package/tstools/0001-build-get-along-with-buildroot.patch @@ -0,0 +1,40 @@ +From 44f80bce0914d4d9c5e7486c7cdb521ba637b324 Mon Sep 17 00:00:00 2001 +From: Tzu-Jung Lee +Date: Fri, 19 Jul 2013 22:45:18 +0800 +Subject: [PATCH] build: get along with buildroot + +Signed-off-by: Tzu-Jung Lee +--- + Makefile | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/Makefile b/Makefile +index 2c3568e..98bb994 100644 +--- a/Makefile ++++ b/Makefile +@@ -34,12 +34,6 @@ SHELL = /bin/sh + .SUFFIXES: + .SUFFIXES: .c .o + +-ifdef CROSS_COMPILE +-CC = $(CROSS_COMPILE)gcc +-else +-CC = gcc +-endif +- + # Use WARN=1 periodically to get too many warnings... + ifdef WARN + WARNING_FLAGS = -Wall -W -Wfloat-equal -Wundef -Wshadow -Wpointer-arith -Wcast-qual -Wconversion -Wmissing-prototypes -Wmissing-declarations -Wunreachable-code -Winline +@@ -452,3 +446,9 @@ test_lists: $(BINDIR)/test_nal_unit_list $(BINDIR)/test_es_unit_list + @echo +++ Testing ES unit lists + $(BINDIR)/test_es_unit_list + @echo +++ Test succeeded ++ ++.PHONY: install ++install: ++ @for i in $(PROGS); do \ ++ cp -f $$i $(DESTDIR)/usr/bin/; \ ++ done +-- +1.8.3.2 + diff --git a/package/tstools/Config.in b/package/tstools/Config.in new file mode 100644 index 00000000..0c55bde9 --- /dev/null +++ b/package/tstools/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_TSTOOLS + bool "tstools" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + help + This is a set of cross-platform command line tools for + working with MPEG data. + + The emphasis is on relatively simple tools which concentrate + on MPEG (H.264 and H.262) data packaged according to H.222 + (i.e., TS or PS), with a particular interest in checking for + conformance. + + Transport Stream (TS) is typically used for distribution of + cable and satellite data. Program Stream (PS) is typically + used to store data on DVDs. + + https://github.com/kynesim/tstools/ + +comment "tstools needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/package/tstools/tstools.hash b/package/tstools/tstools.hash new file mode 100644 index 00000000..54f4ecc8 --- /dev/null +++ b/package/tstools/tstools.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 3d2b2375e2874933f9aa59d4f25bb6b334747219eb0d7a076974e61222d59bf6 tstools-08f6be304040e7b84760ac3920bcff4a563b6cd2.tar.gz diff --git a/package/tstools/tstools.mk b/package/tstools/tstools.mk new file mode 100644 index 00000000..99f7ca9b --- /dev/null +++ b/package/tstools/tstools.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# tstools +# +################################################################################ + +# No releases or tags yet. Use the latest commit ID from master branch. +TSTOOLS_VERSION = 08f6be304040e7b84760ac3920bcff4a563b6cd2 +TSTOOLS_SITE = $(call github,kynesim,tstools,$(TSTOOLS_VERSION)) +# tstools upstream doesn't contain any license file so far. See: +# https://github.com/kynesim/tstools/issues/32 +TSTOOLS_LICENSE = MPL-1.1 +TSTOOLS_LICENSE_FILES = + +define TSTOOLS_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) LD="$(TARGET_CC)" $(TARGET_MAKE_ENV) \ + $(MAKE1) -C $(@D) +endef + +define TSTOOLS_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/ttyd/Config.in b/package/ttyd/Config.in new file mode 100644 index 00000000..103a4ac4 --- /dev/null +++ b/package/ttyd/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_TTYD + bool "ttyd" + depends on !BR2_STATIC_LIBS # libuv, libwebsockets + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv, json-c + depends on BR2_USE_MMU # libuv + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libuv + select BR2_PACKAGE_JSON_C + select BR2_PACKAGE_LIBUV + select BR2_PACKAGE_LIBWEBSOCKETS + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + ttyd is a simple command-line tool for sharing terminal + over the web. + + https://github.com/tsl0922/ttyd + +comment "ttyd needs a toolchain w/ NPTL, dynamic library, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 diff --git a/package/ttyd/ttyd.hash b/package/ttyd/ttyd.hash new file mode 100644 index 00000000..9a407a68 --- /dev/null +++ b/package/ttyd/ttyd.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 039dd995229377caee919898b7bd54484accec3bba49c118e2d5cd6ec51e3650 ttyd-1.7.7.tar.gz +sha256 8b7e100f8311cb428c57609164d93099bada2599f948359045d1ac876a7a625b LICENSE diff --git a/package/ttyd/ttyd.mk b/package/ttyd/ttyd.mk new file mode 100644 index 00000000..e6cf7919 --- /dev/null +++ b/package/ttyd/ttyd.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# ttyd +# +################################################################################ + +TTYD_VERSION = 1.7.7 +TTYD_SITE = $(call github,tsl0922,ttyd,$(TTYD_VERSION)) +TTYD_LICENSE = MIT +TTYD_LICENSE_FILES = LICENSE +TTYD_DEPENDENCIES = json-c libuv libwebsockets openssl zlib +TTYD_CPE_ID_VALID = YES + +$(eval $(cmake-package)) diff --git a/package/tunctl/Config.in b/package/tunctl/Config.in new file mode 100644 index 00000000..26eed4c3 --- /dev/null +++ b/package/tunctl/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_TUNCTL + bool "tunctl" + help + Tunctl is a tool for controlling the TUN/TAP driver in Linux. + + https://sourceforge.net/projects/tunctl/ diff --git a/package/tunctl/tunctl.hash b/package/tunctl/tunctl.hash new file mode 100644 index 00000000..59a58cdb --- /dev/null +++ b/package/tunctl/tunctl.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 aa2a6c4cc6bfacb11e0d9f62334a6638a0d435475c61230116f00b6af8b14fff tunctl-1.5.tar.gz +sha256 bcd12b6749dbd86c051cc2ef9e838096741602d4db213cc866b1da6cfeda5f16 tunctl.c diff --git a/package/tunctl/tunctl.mk b/package/tunctl/tunctl.mk new file mode 100644 index 00000000..0d7b88df --- /dev/null +++ b/package/tunctl/tunctl.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# tunctl +# +################################################################################ + +TUNCTL_VERSION = 1.5 +TUNCTL_SITE = http://downloads.sourceforge.net/project/tunctl/tunctl/$(TUNCTL_VERSION) + +TUNCTL_LICENSE = GPL-2.0 +TUNCTL_LICENSE_FILES = tunctl.c + +define TUNCTL_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) tunctl +endef + +define TUNCTL_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/tunctl $(TARGET_DIR)/usr/sbin/tunctl +endef + +$(eval $(generic-package)) diff --git a/package/turbolua/Config.in b/package/turbolua/Config.in new file mode 100644 index 00000000..6e792ebb --- /dev/null +++ b/package/turbolua/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_TURBOLUA + bool "turbolua" + depends on BR2_PACKAGE_LUAJIT + help + Turbo.lua is a framework built for LuaJIT 2 to simplify the + task of building fast and scalable network applications. It + uses a event-driven, non-blocking, no thread design to deliver + excellent performance and minimal footprint to high-load + applications while also providing excellent support for + embedded uses. The toolkit can be used for HTTP REST API's, + traditional dynamic web pages through templating, open + connections like WebSockets, or just as high level building + blocks for native speed network applications. + + http://www.turbolua.org + +comment "turbolua needs LuaJIT" + depends on !BR2_PACKAGE_LUAJIT diff --git a/package/turbolua/turbolua.hash b/package/turbolua/turbolua.hash new file mode 100644 index 00000000..12c41c6e --- /dev/null +++ b/package/turbolua/turbolua.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 4dbfbe4919118977c2ca40a4da81054ffe407d09f38bf5420eec5ae1449299d3 turbolua-2.1.3.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/turbolua/turbolua.mk b/package/turbolua/turbolua.mk new file mode 100644 index 00000000..a85256a3 --- /dev/null +++ b/package/turbolua/turbolua.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# turbolua +# +################################################################################ + +TURBOLUA_VERSION = 2.1.3 +TURBOLUA_SITE = $(call github,kernelsauce,turbo,v$(TURBOLUA_VERSION)) +TURBOLUA_DEPENDENCIES = luajit +TURBOLUA_LICENSE = Apache-2.0 +TURBOLUA_LICENSE_FILES = LICENSE + +TURBOLUA_MAKE_OPTS = \ + $(TARGET_CONFIGURE_OPTS) \ + LUAJIT_VERSION="$(LUAJIT_VERSION)" + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +TURBOLUA_MAKE_OPTS += SSL=openssl +TURBOLUA_DEPENDENCIES += openssl +else +TURBOLUA_MAKE_OPTS += SSL=none +endif + +define TURBOLUA_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TURBOLUA_MAKE_OPTS) -C $(@D) all +endef + +define TURBOLUA_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TURBOLUA_MAKE_OPTS) LDCONFIG=true \ + PREFIX="$(TARGET_DIR)/usr" -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/tvheadend/0001-no-check_config.patch b/package/tvheadend/0001-no-check_config.patch new file mode 100644 index 00000000..45c862d3 --- /dev/null +++ b/package/tvheadend/0001-no-check_config.patch @@ -0,0 +1,23 @@ +Makefile: do not use check_config + +test(1) only uses the second to compare two files dates. +test(1) also does a strict comparison wrt. dates. + +But, on very fast systems, the configure and .config.mk +files may be created in the same second, and so would lead +to a false comparison of the files' dates. + +Signed-off-by: "Yann E. MORIN" + +diff -durN tvheadend-c84bc2b72b462ef2dbed305f3fd0bb3fa5046fc3.orig/Makefile tvheadend-c84bc2b72b462ef2dbed305f3fd0bb3fa5046fc3/Makefile +--- tvheadend-c84bc2b72b462ef2dbed305f3fd0bb3fa5046fc3.orig/Makefile 2014-03-09 14:47:43.780025330 +0100 ++++ tvheadend-c84bc2b72b462ef2dbed305f3fd0bb3fa5046fc3/Makefile 2014-03-09 14:48:40.836539093 +0100 +@@ -710,7 +710,7 @@ + $(ROOTDIR)/configure $(CONFIGURE_ARGS) + + # Binary +-${PROG}: .config.mk make_webui $(OBJS) ++${PROG}: make_webui $(OBJS) + $(pCC) -o $@ $(OBJS) $(CFLAGS) $(LDFLAGS) + + # Object diff --git a/package/tvheadend/Config.in b/package/tvheadend/Config.in new file mode 100644 index 00000000..fa06f345 --- /dev/null +++ b/package/tvheadend/Config.in @@ -0,0 +1,74 @@ +comment "tvheadend needs a toolchain w/ NPTL, headers >= 3.2, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 || BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_SYNC_8 + +menuconfig BR2_PACKAGE_TVHEADEND + bool "tvheadend" + depends on !BR2_STATIC_LIBS # dladdr() + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 + depends on BR2_TOOLCHAIN_HAS_SYNC_8 + select BR2_PACKAGE_DTV_SCAN_TABLES + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + help + + Tvheadend is a TV streaming server for Linux supporting + DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, IPTV, and Analog video + (V4L) as input sources. + + https://www.lonelycoder.com/redmine/projects/tvheadend/ + + Note: + - on first run, tvheadend will start in wizard mode; the + webUI is available on port 9981. + - if you want Avahi support, you'll need to enable: + Avahi, D-Bus, libdaemon + +if BR2_PACKAGE_TVHEADEND + +config BR2_PACKAGE_TVHEADEND_DESCRAMBLER + bool "descrambler support" + default y + help + Enable support for various descrambler modules. + +config BR2_PACKAGE_TVHEADEND_IPTV + bool "IPTV support" + default y + help + Enable IPTV support. + + Note that some IPTV streams will need to be piped through + ffmpeg (the commandline tool), so you may have to enable it + with: + BR2_PACKAGE_FFMPEG=y + BR2_PACKAGE_FFMPEG_FFMPEG=y + +config BR2_PACKAGE_TVHEADEND_SATIP + bool "SAT>IP support" + default y + help + Enable SAT>IP support. + +config BR2_PACKAGE_TVHEADEND_TIMESHIFT + bool "timeshift support" + default y + help + Enable timeshift support. + +config BR2_PACKAGE_TVHEADEND_TRANSCODING + bool "transcoding support" + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + select BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_FFMPEG_GPL # needed for x264 support + select BR2_PACKAGE_FFMPEG_SWSCALE + # vp8 encoder needs c++ + select BR2_PACKAGE_LIBVPX if BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_X264 + help + Enable transcoding support. + +endif diff --git a/package/tvheadend/S99tvheadend b/package/tvheadend/S99tvheadend new file mode 100644 index 00000000..fc125a23 --- /dev/null +++ b/package/tvheadend/S99tvheadend @@ -0,0 +1,56 @@ +#! /bin/sh +# tvheadend startup script inspired by the Debian one in the package + +# Author: Yann E. MORIN + +PATH=/usr/sbin:/usr/bin:/sbin:/bin +NAME=tvheadend +PIDFILE=/var/run/$NAME.pid + +# Read configuration variable file if it is present +[ -r "/etc/default/${NAME}" ] && . "/etc/default/${NAME}" + +ARGS="-f" +[ -z "${TVH_USER}" ] || ARGS="${ARGS} -u ${TVH_USER}" +[ -z "${TVH_GROUP}" ] || ARGS="${ARGS} -g ${TVH_GROUP}" +[ -z "${TVH_ADAPTERS}" ] || ARGS="${ARGS} -a ${TVH_ADAPTERS}" +[ -z "${TVH_HTTP_PORT}" ] || ARGS="${ARGS} -w ${TVH_HTTP_PORT}" +[ -z "${TVH_HTSP_PORT}" ] || ARGS="${ARGS} -e ${TVH_HTSP_PORT}" +[ "${TVH_DEBUG}" = "1" ] && ARGS="${ARGS} -s" + +# If first run, start in wizard mode +if [ -z "$(ls -1 /home/tvheadend/.hts/tvheadend/accesscontrol/ 2>/dev/null)" ]; then + ARGS="${ARGS} -C" +fi + +case "$1" in + start) + printf "Starting TVHeadend daemon: " + if start-stop-daemon -S -q -p ${PIDFILE} -m --exec /usr/bin/tvheadend -- ${ARGS}; then + printf "OK\n" + else + printf "failed\n" + fi + ;; + stop) + printf "Stopping TVHeadend daemon: " + start-stop-daemon -K -q -p ${PIDFILE} -s TERM + sleep 2 + if start-stop-daemon -K -q -p ${PIDFILE} -t; then + printf "failed, killing: " + start-stop-daemon -K -q -p ${PIDFILE} -s KILL -o + fi + printf "OK\n" + ;; + restart|force-reload) + "${0}" stop + sleep 2 + "${0}" start + ;; + *) + echo "Usage: $0 {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac + +: diff --git a/package/tvheadend/etc.default.tvheadend b/package/tvheadend/etc.default.tvheadend new file mode 100644 index 00000000..253f8320 --- /dev/null +++ b/package/tvheadend/etc.default.tvheadend @@ -0,0 +1,6 @@ +TVH_USER=tvheadend +TVH_GROUP=tvheadend +#TVH_ADAPTERS= +#TVH_HTTP_PORT=9981 +#TVH_HTSP_PORT=9982 +#TVH_DEBUG=1 diff --git a/package/tvheadend/tvheadend.hash b/package/tvheadend/tvheadend.hash new file mode 100644 index 00000000..871fc9ca --- /dev/null +++ b/package/tvheadend/tvheadend.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 192cf8d181eb03cbf18e4fd4beb16edf89ef34aa25bc1c73c891bc904342aade tvheadend-078a822cf548b37bc474475fa57e48e9604090ee.tar.gz +sha256 16aaf037a2d00e6e7804de64619887fc7539f1ede99e3282c86dfbc61c2af63e LICENSE.md diff --git a/package/tvheadend/tvheadend.mk b/package/tvheadend/tvheadend.mk new file mode 100644 index 00000000..ee82ecb1 --- /dev/null +++ b/package/tvheadend/tvheadend.mk @@ -0,0 +1,221 @@ +################################################################################ +# +# tvheadend +# +################################################################################ + +TVHEADEND_VERSION = 078a822cf548b37bc474475fa57e48e9604090ee +TVHEADEND_SITE = $(call github,tvheadend,tvheadend,$(TVHEADEND_VERSION)) +TVHEADEND_LICENSE = GPL-3.0+ +TVHEADEND_LICENSE_FILES = LICENSE.md +TVHEADEND_DEPENDENCIES = \ + host-gettext \ + host-pkgconf \ + host-pngquant \ + host-python3 \ + openssl + +ifeq ($(BR2_PACKAGE_AVAHI),y) +TVHEADEND_DEPENDENCIES += avahi +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +TVHEADEND_DEPENDENCIES += dbus +TVHEADEND_CONF_OPTS += --enable-dbus-1 +else +TVHEADEND_CONF_OPTS += --disable-dbus-1 +endif + +ifeq ($(BR2_PACKAGE_TVHEADEND_TRANSCODING),y) +TVHEADEND_CONF_OPTS += --enable-libav --enable-libx264 +TVHEADEND_DEPENDENCIES += ffmpeg x264 +ifeq ($(BR2_PACKAGE_LIBVA),y) +TVHEADEND_CONF_OPTS += --enable-vaapi +TVHEADEND_DEPENDENCIES += libva +else +TVHEADEND_CONF_OPTS += --disable-vaapi +endif +ifeq ($(BR2_PACKAGE_OPUS),y) +TVHEADEND_CONF_OPTS += --enable-libopus +TVHEADEND_DEPENDENCIES += opus +else +TVHEADEND_CONF_OPTS += --disable-libopus +endif +ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) +TVHEADEND_CONF_OPTS += --enable-omx +TVHEADEND_DEPENDENCIES += rpi-userland +else +TVHEADEND_CONF_OPTS += --disable-omx +endif +ifeq ($(BR2_PACKAGE_LIBVPX)$(BR2_INSTALL_LIBSTDCPP),yy) +TVHEADEND_CONF_OPTS += --enable-libvpx +TVHEADEND_DEPENDENCIES += libvpx +else +TVHEADEND_CONF_OPTS += --disable-libvpx +endif +ifeq ($(BR2_PACKAGE_X265),y) +TVHEADEND_CONF_OPTS += --enable-libx265 +TVHEADEND_DEPENDENCIES += x265 +else +TVHEADEND_CONF_OPTS += --disable-libx265 +endif +else +TVHEADEND_CONF_OPTS += \ + --disable-libav \ + --disable-libopus \ + --disable-omx \ + --disable-vaapi \ + --disable-libvpx \ + --disable-libx264 \ + --disable-libx265 +endif + +ifeq ($(BR2_PACKAGE_TVHEADEND_DESCRAMBLER),y) +TVHEADEND_CONF_OPTS += \ + --enable-cardclient \ + --enable-cwc \ + --enable-cccam \ + --enable-capmt \ + --enable-constcw +else +TVHEADEND_CONF_OPTS += \ + --disable-cardclient \ + --disable-cwc \ + --disable-cccam \ + --disable-capmt \ + --disable-constcw +endif + +ifeq ($(BR2_PACKAGE_TVHEADEND_IPTV),y) +TVHEADEND_CONF_OPTS += --enable-iptv +else +TVHEADEND_CONF_OPTS += --disable-iptv +endif + +ifeq ($(BR2_PACKAGE_TVHEADEND_SATIP),y) +TVHEADEND_CONF_OPTS += --enable-satip_client --enable-satip_server +else +TVHEADEND_CONF_OPTS += --disable-satip_client --disable-satip_server +endif + +ifeq ($(BR2_PACKAGE_TVHEADEND_TIMESHIFT),y) +TVHEADEND_CONF_OPTS += --enable-timeshift +else +TVHEADEND_CONF_OPTS += --disable-timeshift +endif + +ifeq ($(BR2_PACKAGE_LIBDVBCSA),y) +TVHEADEND_DEPENDENCIES += libdvbcsa +TVHEADEND_CONF_OPTS += --enable-tvhcsa +else +TVHEADEND_CONF_OPTS += --disable-tvhcsa +endif + +ifeq ($(BR2_PACKAGE_LIBHDHOMERUN),y) +TVHEADEND_DEPENDENCIES += libhdhomerun +TVHEADEND_CONF_OPTS += --enable-hdhomerun_client +else +TVHEADEND_CONF_OPTS += --disable-hdhomerun_client +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +TVHEADEND_DEPENDENCIES += libiconv +endif + +TVHEADEND_CFLAGS = $(TARGET_CFLAGS) +ifeq ($(BR2_PACKAGE_LIBURIPARSER),y) +TVHEADEND_DEPENDENCIES += liburiparser +TVHEADEND_CFLAGS += $(if $(BR2_USE_WCHAR),,-DURI_NO_UNICODE) +endif + +ifeq ($(BR2_PACKAGE_PCRE2),y) +TVHEADEND_DEPENDENCIES += pcre2 +TVHEADEND_CONF_OPTS += --disable-pcre --enable-pcre2 +else ifeq ($(BR2_PACKAGE_PCRE),y) +TVHEADEND_DEPENDENCIES += pcre +TVHEADEND_CONF_OPTS += --enable-pcre --disable-pcre2 +else +TVHEADEND_CONF_OPTS += --disable-pcre --disable-pcre2 +endif + +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) +TVHEADEND_CONF_OPTS += --disable-pie +endif + +TVHEADEND_DEPENDENCIES += dtv-scan-tables + +# The tvheadend build system expects the transponder data to be present inside +# its source tree. To prevent a download initiated by the build system just +# copy the data files in the right place and add the corresponding stamp file. +define TVHEADEND_INSTALL_DTV_SCAN_TABLES + $(INSTALL) -d $(@D)/data/dvb-scan + cp -r $(TARGET_DIR)/usr/share/dvb/* $(@D)/data/dvb-scan/ + touch $(@D)/data/dvb-scan/.stamp +endef +TVHEADEND_PRE_CONFIGURE_HOOKS += TVHEADEND_INSTALL_DTV_SCAN_TABLES + +define TVHEADEND_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + CFLAGS="$(TVHEADEND_CFLAGS)" \ + ./configure \ + --prefix=/usr \ + --arch="$(ARCH)" \ + --cpu="$(GCC_TARGET_CPU)" \ + --nowerror \ + --python="$(HOST_DIR)/bin/python3" \ + --enable-dvbscan \ + --enable-bundle \ + --enable-pngquant \ + --disable-execinfo \ + --disable-ffmpeg_static \ + --disable-hdhomerun_static \ + $(TVHEADEND_CONF_OPTS) \ + ) +endef + +define TVHEADEND_FIX_PNGQUANT_PATH + $(SED) "s%^pngquant_bin =.*%pngquant_bin = '$(HOST_DIR)/bin/pngquant'%" \ + $(@D)/support/mkbundle +endef +TVHEADEND_POST_CONFIGURE_HOOKS += TVHEADEND_FIX_PNGQUANT_PATH + +define TVHEADEND_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define TVHEADEND_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" install +endef + +# Remove documentation and source files that are not needed because we +# use the bundled web interface version. +define TVHEADEND_CLEAN_SHARE + rm -rf $(TARGET_DIR)/usr/share/tvheadend/docs + rm -rf $(TARGET_DIR)/usr/share/tvheadend/src +endef + +TVHEADEND_POST_INSTALL_TARGET_HOOKS += TVHEADEND_CLEAN_SHARE + +#---------------------------------------------------------------------------- +# To run tvheadend, we need: +# - a startup script, and its config file +# - a non-root user to run as, and a home for it that is not accessible +# to the other users (because there will be crendentials in there) + +define TVHEADEND_INSTALL_INIT_SYSV + $(INSTALL) -D package/tvheadend/etc.default.tvheadend \ + $(TARGET_DIR)/etc/default/tvheadend + $(INSTALL) -D package/tvheadend/S99tvheadend \ + $(TARGET_DIR)/etc/init.d/S99tvheadend +endef + +define TVHEADEND_USERS + tvheadend -1 tvheadend -1 * /home/tvheadend - video TVHeadend daemon +endef +define TVHEADEND_PERMISSIONS + /home/tvheadend r 0700 tvheadend tvheadend - - - - - +endef + +$(eval $(generic-package)) diff --git a/package/twolame/Config.in b/package/twolame/Config.in new file mode 100644 index 00000000..588afa48 --- /dev/null +++ b/package/twolame/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_TWOLAME + bool "twolame" + help + TwoLAME is an optimised MPEG Audio Layer 2 (MP2) encoder + based on tooLAME by Mike Cheng, which in turn is based upon + the ISO dist10 code and portions of LAME. + + http://www.twolame.org/ diff --git a/package/twolame/twolame.hash b/package/twolame/twolame.hash new file mode 100644 index 00000000..74941ae3 --- /dev/null +++ b/package/twolame/twolame.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 cc35424f6019a88c6f52570b63e1baf50f62963a3eac52a03a800bb070d7c87d twolame-0.4.0.tar.gz +sha256 257a842724705950b07da76ce0e22ffa80ec77b3e9dfc6702522ac342409da0f COPYING diff --git a/package/twolame/twolame.mk b/package/twolame/twolame.mk new file mode 100644 index 00000000..b1abf077 --- /dev/null +++ b/package/twolame/twolame.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# twolame +# +################################################################################ + +TWOLAME_VERSION = 0.4.0 +TWOLAME_SITE = http://downloads.sourceforge.net/project/twolame/twolame/$(TWOLAME_VERSION) +TWOLAME_INSTALL_STAGING = YES +TWOLAME_LICENSE = LGPL-2.1+ +TWOLAME_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_LIBSNDFILE),y) +TWOLAME_DEPENDENCIES += host-pkgconf libsndfile +TWOLAME_CONF_OPTS += --enable-sndfile +else +TWOLAME_CONF_OPTS += --disable-sndfile +endif + +$(eval $(autotools-package)) diff --git a/package/tz/Config.in b/package/tz/Config.in new file mode 100644 index 00000000..943dc5cc --- /dev/null +++ b/package/tz/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_TZ + bool + help + Timezone info for uClibc. diff --git a/package/tz/tz.mk b/package/tz/tz.mk new file mode 100644 index 00000000..135726c2 --- /dev/null +++ b/package/tz/tz.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# tz +# +################################################################################ + +TZ_DEPENDENCIES = host-tzdata host-tzdump +TZ_LICENSE = Public domain + +TZ_LOCALTIME = $(call qstrip,$(BR2_TARGET_LOCALTIME)) +ifneq ($(TZ_LOCALTIME),) +define TZ_SET_LOCALTIME + if [ ! -f $(TARGET_DIR)/usr/share/zoneinfo/uclibc/$(TZ_LOCALTIME) ]; then \ + printf "Error: '%s' is not a valid timezone, check your BR2_TARGET_LOCALTIME setting\n" \ + "$(TZ_LOCALTIME)"; \ + exit 1; \ + fi + ln -sf ../usr/share/zoneinfo/uclibc/$(TZ_LOCALTIME) $(TARGET_DIR)/etc/TZ +endef +endif + +define TZ_BUILD_CMDS + (cd $(HOST_DIR)/share/zoneinfo/posix/; \ + for i in $$(find . -type f); do \ + mkdir -p $(@D)/output/$$(dirname $$i); \ + $(TZDUMP) -p . -q $${i#./} | sed '1d' > $(@D)/output/$$i; \ + done \ + ) +endef + +define TZ_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0644 $(HOST_DIR)/share/zoneinfo/zone.tab \ + $(TARGET_DIR)/usr/share/zoneinfo/zone.tab + $(INSTALL) -D -m 0644 $(HOST_DIR)/share/zoneinfo/iso3166.tab \ + $(TARGET_DIR)/usr/share/zoneinfo/iso3166.tab + mkdir -p $(TARGET_DIR)/usr/share/zoneinfo/uclibc + cp -a $(@D)/output/* $(TARGET_DIR)/usr/share/zoneinfo/uclibc + $(TZ_SET_LOCALTIME) +endef + +$(eval $(generic-package)) diff --git a/package/tzdata/Config.in b/package/tzdata/Config.in new file mode 100644 index 00000000..31071afb --- /dev/null +++ b/package/tzdata/Config.in @@ -0,0 +1,9 @@ +# This package is not meant to be user-visible. +# It gets selected by BR2_TARGET_TZ in system/Config.in + +config BR2_PACKAGE_TZDATA + bool + help + Time zone database + + https://data.iana.org/time-zones/tz-link.html diff --git a/package/tzdata/tzdata.hash b/package/tzdata/tzdata.hash new file mode 100644 index 00000000..d353bc44 --- /dev/null +++ b/package/tzdata/tzdata.hash @@ -0,0 +1,4 @@ +# From https://mm.icann.org/pipermail/tz-announce/2024-February/000081.html +sha512 1f09f1b2327cc9e1afc7e9045e83ee3377918dafe1bee2f282b6991828d03b3c70a4d3a17f9207dfb1361bb25bc214a8922a756e84fa114e9ba476226db57236 tzdata2024a.tar.gz +# Locally computed: +sha256 0613408568889f5739e5ae252b722a2659c02002839ad970a63dc5e9174b27cf LICENSE diff --git a/package/tzdata/tzdata.mk b/package/tzdata/tzdata.mk new file mode 100644 index 00000000..e3672052 --- /dev/null +++ b/package/tzdata/tzdata.mk @@ -0,0 +1,67 @@ +################################################################################ +# +# tzdata +# +################################################################################ + +TZDATA_VERSION = 2024a +TZDATA_SOURCE = tzdata$(TZDATA_VERSION).tar.gz +TZDATA_SITE = https://www.iana.org/time-zones/repository/releases +TZDATA_SELINUX_MODULES = tzdata +TZDATA_STRIP_COMPONENTS = 0 +TZDATA_DEPENDENCIES = host-tzdata +HOST_TZDATA_DEPENDENCIES = host-zic +TZDATA_LICENSE = Public domain +TZDATA_LICENSE_FILES = LICENSE + +# Take care when re-ordering this list since this might break zone +# dependencies +TZDATA_DEFAULT_ZONELIST = \ + africa antarctica asia australasia europe northamerica \ + southamerica etcetera backward factory + +ifeq ($(call qstrip,$(BR2_TARGET_TZ_ZONELIST)),default) +TZDATA_ZONELIST = $(TZDATA_DEFAULT_ZONELIST) +else +TZDATA_ZONELIST = $(call qstrip,$(BR2_TARGET_TZ_ZONELIST)) +endif + +TZDATA_LOCALTIME = $(call qstrip,$(BR2_TARGET_LOCALTIME)) +ifneq ($(TZDATA_LOCALTIME),) +define TZDATA_SET_LOCALTIME + if [ ! -f $(TARGET_DIR)/usr/share/zoneinfo/$(TZDATA_LOCALTIME) ]; then \ + printf "Error: '%s' is not a valid timezone, check your BR2_TARGET_LOCALTIME setting\n" \ + "$(TZDATA_LOCALTIME)"; \ + exit 1; \ + fi + ln -sf ../usr/share/zoneinfo/$(TZDATA_LOCALTIME) $(TARGET_DIR)/etc/localtime + echo "$(TZDATA_LOCALTIME)" >$(TARGET_DIR)/etc/timezone +endef +endif + +define TZDATA_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/share/zoneinfo + cp -a $(HOST_DIR)/share/zoneinfo/* $(TARGET_DIR)/usr/share/zoneinfo + cd $(TARGET_DIR)/usr/share/zoneinfo; \ + for zone in posix/*; do \ + ln -sfn "$${zone}" "$${zone##*/}"; \ + done + $(TZDATA_SET_LOCALTIME) +endef + +define HOST_TZDATA_BUILD_CMDS + (cd $(@D); \ + for zone in $(TZDATA_ZONELIST); do \ + $(ZIC) -b fat -d _output/posix $$zone || exit 1; \ + $(ZIC) -b fat -d _output/right -L leapseconds $$zone || exit 1; \ + done; \ + ) +endef + +define HOST_TZDATA_INSTALL_CMDS + $(INSTALL) -d -m 0755 $(HOST_DIR)/share/zoneinfo + cp -a $(@D)/_output/* $(@D)/*.tab $(@D)/leap-seconds.list $(HOST_DIR)/share/zoneinfo +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/tzdump/tzdump.hash b/package/tzdump/tzdump.hash new file mode 100644 index 00000000..b0d58c62 --- /dev/null +++ b/package/tzdump/tzdump.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 e078ba9bd90cb46368beb3cfef2288194e5edefd53ad9565961a97d1c7d6c59f tzdump-e1a52ce12a701b8ea4163d6719713e38c0e53d35.tar.gz diff --git a/package/tzdump/tzdump.mk b/package/tzdump/tzdump.mk new file mode 100644 index 00000000..f6b6a1a7 --- /dev/null +++ b/package/tzdump/tzdump.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# tzdump +# +################################################################################ + +TZDUMP_VERSION = e1a52ce12a701b8ea4163d6719713e38c0e53d35 +TZDUMP_SITE = $(call github,alexandrebelloni,tzdump,$(TZDUMP_VERSION)) +HOST_TZDUMP_DEPENDENCIES = host-zic + +define HOST_TZDUMP_BUILD_CMDS + cd $(@D) && $(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o tzdump tzdump.c +endef + +define HOST_TZDUMP_INSTALL_CMDS + $(INSTALL) -m 0755 -D $(@D)/tzdump $(HOST_DIR)/sbin/tzdump +endef + +$(eval $(host-generic-package)) + +TZDUMP = $(HOST_DIR)/sbin/tzdump diff --git a/package/uacme/0001-Fix-cross-compilation.patch b/package/uacme/0001-Fix-cross-compilation.patch new file mode 100644 index 00000000..cc384f2c --- /dev/null +++ b/package/uacme/0001-Fix-cross-compilation.patch @@ -0,0 +1,29 @@ +From cdf63e24dc475a558400c68714e32d32904e4c57 Mon Sep 17 00:00:00 2001 +From: Nicola Di Lieto +Date: Tue, 20 Feb 2024 01:05:00 +0100 +Subject: [PATCH] Fix cross compilation + +Commit fe826f4b1931ae508047d8b2693b5b6ac2cb21fd broke cross compilation + +Closes https://github.com/ndilieto/uacme/issues/79 + +Upstream: https://github.com/ndilieto/uacme/commit/cdf63e24dc475a558400c68714e32d32904e4c57 +Signed-off-by: Fabrice Fontaine +--- + configure.ac | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 77d1230..3bec75b 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -355,7 +355,8 @@ if test "x$OPT_UALPN" != "xno"; then + AC_DEFINE(HAVE_MAP_DEVZERO, 1, [if mmap("/dev/zero", MAP_SHARED) works]) + AC_MSG_RESULT([yes]), + AC_MSG_RESULT([no]) +- AC_MSG_ERROR([ualpn requires MAP_ANON or mmap("/dev/zero", MAP_SHARED)])), ++ AC_MSG_ERROR([ualpn requires MAP_ANON or mmap("/dev/zero", MAP_SHARED)])) ++ ], [ + AC_COMPILE_IFELSE([AC_LANG_SOURCE([#include + int main() {return mmap(0, 4096, PROT_READ|PROT_WRITE, + MAP_ANON|MAP_SHARED, -1, 0) == MAP_FAILED;}])], diff --git a/package/uacme/Config.in b/package/uacme/Config.in new file mode 100644 index 00000000..2c686487 --- /dev/null +++ b/package/uacme/Config.in @@ -0,0 +1,33 @@ +config BR2_PACKAGE_UACME + bool "uacme" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_OPENSSL if !(BR2_PACKAGE_GNUTLS || BR2_PACKAGE_MBEDTLS) + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBCURL_FORCE_TLS + help + uacme is a client for the ACMEv2 protocol described in + RFC8555, written in plain C with minimal dependencies + (libcurl and either of GnuTLS, OpenSSL or mbedTLS). The + ACMEv2 protocol allows a Certificate Authority + (https://letsencrypt.org is a popular one) and an applicant + to automate the process of verification and certificate + issuance. + + https://github.com/ndilieto/uacme + +if BR2_PACKAGE_UACME + +config BR2_PACKAGE_UACME_UALPN + bool "enable ualpn" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBEV + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL \ + if !(BR2_PACKAGE_GNUTLS || BR2_PACKAGE_MBEDTLS) + help + Build and install ualpn, the transparent proxying tls-alpn-01 + challenge responder. + +comment "ualpn needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +endif diff --git a/package/uacme/uacme.hash b/package/uacme/uacme.hash new file mode 100644 index 00000000..9a274bf3 --- /dev/null +++ b/package/uacme/uacme.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 596b2fba75fedc7a410dd71583c828642ecd486dfdcfde109dfebb82a374abbe uacme-1.7.5.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/uacme/uacme.mk b/package/uacme/uacme.mk new file mode 100644 index 00000000..0fcb5c5c --- /dev/null +++ b/package/uacme/uacme.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# uacme +# +################################################################################ + +UACME_VERSION = 1.7.5 +# Released versions are on branch upstream/latest, tagged as +# upstream/X.Y.Z Do not use vX.Y.Z tags from master, as they do not +# include .tarball-version +UACME_SITE = $(call github,ndilieto,uacme,upstream/$(UACME_VERSION)) +UACME_LICENSE = GPL-3.0+ +UACME_LICENSE_FILES = COPYING +UACME_DEPENDENCIES = libcurl + +# 0001-Fix-cross-compilation.patch touches configure.ac +UACME_AUTORECONF = YES + +UACME_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' LIBS="$(UACME_LIBS)" + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +UACME_CONF_OPTS += --with-gnutls +UACME_DEPENDENCIES += gnutls +else ifeq ($(BR2_PACKAGE_MBEDTLS),y) +ifeq ($(BR2_PACKAGE_MBEDTLS_COMPRESSION),y) + UACME_LIBS += -lz +endif +UACME_CONF_OPTS += --with-mbedtls +UACME_DEPENDENCIES += mbedtls +else ifeq ($(BR2_PACKAGE_OPENSSL),y) +UACME_CONF_OPTS += --with-openssl +UACME_DEPENDENCIES += openssl +endif + +ifeq ($(BR2_PACKAGE_UACME_UALPN),y) +UACME_DEPENDENCIES += libev +UACME_CONF_OPTS += --with-ualpn +else +UACME_CONF_OPTS += --without-ualpn +endif + +$(eval $(autotools-package)) diff --git a/package/uboot-bootcount/Config.in b/package/uboot-bootcount/Config.in new file mode 100644 index 00000000..ae936b42 --- /dev/null +++ b/package/uboot-bootcount/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_UBOOT_BOOTCOUNT + bool "uboot-bootcount" + help + U-Boot implements a boot count scheme that can be used to + detect multiple failed attempts to boot Linux. This tool + allows to read and write bootcount from userspace for some + platforms (TI AM335X or STM32MP1) or from I2C EEPROM. + + https://github.com/VoltServer/uboot-bootcount diff --git a/package/uboot-bootcount/uboot-bootcount.hash b/package/uboot-bootcount/uboot-bootcount.hash new file mode 100644 index 00000000..7f46da22 --- /dev/null +++ b/package/uboot-bootcount/uboot-bootcount.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b26b9135716afb2ea967edc2327d1d307cdd15a643bd105dc223d062e18f2dda uboot-bootcount-3.0.0.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/uboot-bootcount/uboot-bootcount.mk b/package/uboot-bootcount/uboot-bootcount.mk new file mode 100644 index 00000000..48a45b91 --- /dev/null +++ b/package/uboot-bootcount/uboot-bootcount.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# uboot-bootcount +# +################################################################################ + +UBOOT_BOOTCOUNT_VERSION = 3.0.0 +UBOOT_BOOTCOUNT_SITE = $(call github,VoltServer,uboot-bootcount,v$(UBOOT_BOOTCOUNT_VERSION)) +UBOOT_BOOTCOUNT_LICENSE = GPL-3.0 +UBOOT_BOOTCOUNT_LICENSE_FILES = COPYING + +# sources fetched from github, no configure script +UBOOT_BOOTCOUNT_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/uboot-tools/0001-drop-configh-from-tools.patch b/package/uboot-tools/0001-drop-configh-from-tools.patch new file mode 100644 index 00000000..59e5686e --- /dev/null +++ b/package/uboot-tools/0001-drop-configh-from-tools.patch @@ -0,0 +1,49 @@ +From ab8b54cfc9d3fddba297c343a2d8dea9dbe20017 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Tue, 4 Aug 2015 22:13:20 +0200 +Subject: [PATCH] drop configh from tools +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +We need to build u-boot tools without a board configuration for the target. +fw_env just uses config.h to define the default environment of the created +image, so it really isn't mandatory. + +Signed-off-by: Gustavo Zacarias +[Jörg Krause: update for version 2015.07] +Signed-off-by: Jörg Krause +[Romain: update for version 2017.05 + after commit 9d80b49a671c9922931adcd823aab0ed319a42d1] +Signed-off-by: Romain Naour +[Pierre-Jean: update for version 2019.04] +Signed-off-by: Pierre-Jean Texier +--- + tools/env/fw_env_private.h | 11 ----------- + 1 file changed, 11 deletions(-) + +diff --git a/tools/env/fw_env_private.h b/tools/env/fw_env_private.h +index 86be16d..3c62ac4 100644 +--- a/tools/env/fw_env_private.h ++++ b/tools/env/fw_env_private.h +@@ -4,17 +4,6 @@ + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + */ + +-/* Pull in the current config to define the default environment */ +-#include +- +-#ifndef __ASSEMBLY__ +-#define __ASSEMBLY__ /* get only #defines from config.h */ +-#include +-#undef __ASSEMBLY__ +-#else +-#include +-#endif +- + /* + * To build the utility with the static configuration + * comment out the next line. +-- +2.9.4 + diff --git a/package/uboot-tools/0002-tools-only-in-no-dot-config-targets.patch b/package/uboot-tools/0002-tools-only-in-no-dot-config-targets.patch new file mode 100644 index 00000000..8557af49 --- /dev/null +++ b/package/uboot-tools/0002-tools-only-in-no-dot-config-targets.patch @@ -0,0 +1,44 @@ +From 460646b3c4c1718860915c38586ee8d2fbda38e4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Sun, 1 Feb 2015 21:53:47 +0100 +Subject: [PATCH] tools only in no dot config targets +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Revert upstream commit c7ad5cbb1ef2c33883f0fa7d0455095004fd306d: + + Makefile: drop "tools-only" from no-dot-config-targets + +This indirectly pulls in a build-dependency on libssl-dev used for FIT +image support, and possibly GPL/OpenSSL licensing incompatibility +issues. + +Based on Debian patch from u-boot-tools: +http://ftp.de.debian.org/debian/pool/main/u/u-boot/u-boot_2014.10+dfsg1-2.1.debian.tar.xz + +Signed-off-by: Jörg Krause +[fabio: adapt it to 2016.09] +Signed-off-by: Fabio Estevam +[Fabrice: adapt it to 2021.04] +Signed-off-by: Fabrice Fontaine +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 6aa08964ff..fcec83d183 100644 +--- a/Makefile ++++ b/Makefile +@@ -486,7 +486,7 @@ defaultenv_h := include/generated/defaultenv_autogenerated.h + + no-dot-config-targets := clean clobber mrproper distclean \ + help %docs check% coccicheck \ +- ubootversion backup tests check qcheck tcheck ++ ubootversion backup tests tools-only check qcheck tcheck + + config-targets := 0 + mixed-targets := 0 +-- +2.20.1 + diff --git a/package/uboot-tools/0003-tools-Makefile-fix-C-LD-FLAGS-with-CROSS_BUILD_TOOLS.patch b/package/uboot-tools/0003-tools-Makefile-fix-C-LD-FLAGS-with-CROSS_BUILD_TOOLS.patch new file mode 100644 index 00000000..502458e2 --- /dev/null +++ b/package/uboot-tools/0003-tools-Makefile-fix-C-LD-FLAGS-with-CROSS_BUILD_TOOLS.patch @@ -0,0 +1,34 @@ +From 3b89170333ef0fdfffee14751ce3e1d66d7dfa00 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 14 Sep 2021 19:08:02 +0200 +Subject: [PATCH] tools/Makefile: fix {C,LD}FLAGS with CROSS_BUILD_TOOLS + +When CROSS_BUILD_TOOLS is set, set KBUILD_HOST{CF,LD}FLAGS to +{C,LD}FLAGS otherwise CC will be used with HOST{C,LD}FLAGS which seems +wrong. + +It should be noted that, for an unknown reason, overriding +HOST{C,LD}FLAGS don't work. + +Signed-off-by: Fabrice Fontaine +--- + tools/Makefile | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/tools/Makefile b/tools/Makefile +index 4a86321f64..98bb92990d 100644 +--- a/tools/Makefile ++++ b/tools/Makefile +@@ -316,7 +316,8 @@ subdir- += env + + ifneq ($(CROSS_BUILD_TOOLS),) + override HOSTCC = $(CC) +-override HOSTCFLAGS = $(CFLAGS) ++override KBUILD_HOSTCFLAGS = $(CFLAGS) ++override KBUILD_HOSTLDFLAGS = $(LDFLAGS) + + quiet_cmd_crosstools_strip = STRIP $^ + cmd_crosstools_strip = $(STRIP) $^; touch $@ +-- +2.33.0 + diff --git a/package/uboot-tools/Config.in b/package/uboot-tools/Config.in new file mode 100644 index 00000000..e8bbf3a1 --- /dev/null +++ b/package/uboot-tools/Config.in @@ -0,0 +1,104 @@ +config BR2_PACKAGE_UBOOT_TOOLS + bool "u-boot tools" + help + Companion tools for Das U-Boot bootloader. + + http://www.denx.de/wiki/U-Boot/WebHome + +if BR2_PACKAGE_UBOOT_TOOLS + +config BR2_PACKAGE_UBOOT_TOOLS_FIT_SUPPORT + bool "Flattened Image Tree (FIT) support" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_DTC + select BR2_PACKAGE_DTC_PROGRAMS + help + Enables support for Flattened Image Tree (FIT). + + This option allows to boot the new uImage structure, + Flattened Image Tree. FIT is formally a FDT, which can include + images of various types (kernel, FDT blob, ramdisk, etc.) + in a single blob. To boot this new uImage structure, + pass the address of the blob to the "bootm" command. + +comment "u-boot tools FIT support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +if BR2_PACKAGE_UBOOT_TOOLS_FIT_SUPPORT + +config BR2_PACKAGE_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT + bool "FIT signature verification support" + select BR2_PACKAGE_OPENSSL + help + Enables support for FIT Signature Verification. + + Flat Image Trees (FIT) supports hashing of images so that + these hashes can be checked on loading. This protects + against corruption of the image. However it does not prevent + the substitution of one image for another. + + The signature feature allows the hash to be signed with a + private key such that it can be verified using a public key + later. Provided that the private key is kept secret and the + public key is stored in a non-volatile place, any image can + be verified in this way. + + Enabling this option pulls in a dependency on libssl and + libcrypto, and possibly GPL/OpenSSL licensing + incompatibility issues. + +config BR2_PACKAGE_UBOOT_TOOLS_FIT_CHECK_SIGN + bool "fit_check_sign" + depends on BR2_PACKAGE_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT + help + Install the fit_check_sign tool on the target system + + The fit_check_sign tool from Das U-Boot bootloader, which + allows FIT image signature validation on target system. + +endif + +config BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE + bool "mkimage" + help + Install the mkimage tool on the target system + + The mkimage tool from Das U-Boot bootloader, which allows + generation of U-Boot images in various formats. + +config BR2_PACKAGE_UBOOT_TOOLS_MKEFICAPSULE + bool "mkeficapsule" + help + Install the mkeficapsule tool on the target system + + The mkeficapsule tool from Das U-Boot bootloader, which allows + generation of UEFI capsule binaries. + +config BR2_PACKAGE_UBOOT_TOOLS_MKENVIMAGE + bool "mkenvimage" + help + Install the mkenvimage tool on the target system + + The mkenvimage tool from Das U-Boot bootloader, which allows + generation of a valid binary environment image from a text + file describing the key=value pairs of the environment. + +config BR2_PACKAGE_UBOOT_TOOLS_FWPRINTENV + bool "fw_printenv" + default y + help + Install the fw_printenv / fw_setenv tools on the target system + + The fw_printenv and fw_setenv tools from Das U-Boot + bootloader, which allows access to the U-Boot environment + from Linux. + +config BR2_PACKAGE_UBOOT_TOOLS_DUMPIMAGE + bool "dumpimage" + help + Install the dumpimage tool on the target system + + The dumpimage tool from Das U-Boot bootloader, which allows + extraction of data from U-Boot images. + +endif diff --git a/package/uboot-tools/Config.in.host b/package/uboot-tools/Config.in.host new file mode 100644 index 00000000..62207040 --- /dev/null +++ b/package/uboot-tools/Config.in.host @@ -0,0 +1,111 @@ +config BR2_PACKAGE_HOST_UBOOT_TOOLS + bool "host u-boot tools" + help + Companion tools for Das U-Boot bootloader. + + http://www.denx.de/wiki/U-Boot/WebHome + +if BR2_PACKAGE_HOST_UBOOT_TOOLS + +config BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT + bool "Flattened Image Tree (FIT) support" + select BR2_PACKAGE_HOST_DTC + help + Enables support for Flattened Image Tree (FIT). + + This option allows to boot the new uImage structure, + Flattened Image Tree. FIT is formally a FDT, which can include + images of various types (kernel, FDT blob, ramdisk, etc.) + in a single blob. To boot this new uImage structure, + pass the address of the blob to the "bootm" command. + +if BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT + +config BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT + bool "FIT signature verification support" + help + Enables support for FIT Signature Verification. + + Flat Image Trees (FIT) supports hashing of images so that + these hashes can be checked on loading. This protects + against corruption of the image. However it does not prevent + the substitution of one image for another. + + The signature feature allows the hash to be signed with a + private key such that it can be verified using a public key + later. Provided that the private key is kept secret and the + public key is stored in a non-volatile place, any image can + be verified in this way. + +endif # BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT + +config BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE + bool "Environment image" + help + Generate a valid binary environment image from a text file + describing the key=value pairs of the environment. + + This option can be useful to build environment configurations + as part of a Linux / rootfs only defconfig instead of using + post scripts. This supports a hardware use case of a single + bootloader only defconfig but multiple Linux / rootfs + defconfigs with different boot environments. + + The environment image will be called uboot-env.bin. + +if BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE + +config BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE + string "Source files for environment" + default BR2_TARGET_UBOOT_ENVIMAGE_SOURCE if BR2_TARGET_UBOOT_ENVIMAGE_SOURCE != "" # legacy + help + Text files describing the environment. Files should have + lines of the form var=value, one per line. Blank lines and + lines starting with a # are ignored. + + Multiple source files are concatenated in the order listed. + + Leave empty to generate image from compiled-in env if a U-boot + target build is configured (BR2_TARGET_UBOOT) + +config BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE + string "Size of environment" + default BR2_TARGET_UBOOT_ENVIMAGE_SIZE if BR2_TARGET_UBOOT_ENVIMAGE_SIZE != "" # legacy + help + Size of envronment, can be prefixed with 0x for hexadecimal + values. + +config BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_REDUNDANT + bool "Environment has two copies" + help + Some platforms define in their U-Boot configuration that the + U-Boot environment should be duplicated in two locations (for + extra safety). Check your U-Boot configuration for the + CONFIG_ENV_ADDR_REDUND and CONFIG_ENV_OFFSET_REDUND settings + to see if this is the case for your platform. + + If it is the case, then you should enable this option to + ensure that the U-Boot environment image generated by + Buildroot is compatible with the "redundant environment" + mechanism of U-Boot. + +endif # BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE + +config BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT + bool "Generate a U-Boot boot script" + help + Generate a U-Boot boot script, given a file listing U-Boot + commands to be executed at boot time. The generated boot + script will be called 'boot.scr'. + +if BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT + +config BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE + string "U-Boot boot script source" + default BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE if BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE != "" # legacy + help + Source file to generate the U-Boot boot script. + +endif # BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT + +endif # BR2_PACKAGE_HOST_UBOOT_TOOLS diff --git a/package/uboot-tools/uboot-tools.hash b/package/uboot-tools/uboot-tools.hash new file mode 100644 index 00000000..5a48926e --- /dev/null +++ b/package/uboot-tools/uboot-tools.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 312b7eeae44581d1362c3a3f02c28d806647756c82ba8c72241c7cdbe68ba77e u-boot-2021.07.tar.bz2 +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 Licenses/gpl-2.0.txt diff --git a/package/uboot-tools/uboot-tools.mk b/package/uboot-tools/uboot-tools.mk new file mode 100644 index 00000000..e9c7edb2 --- /dev/null +++ b/package/uboot-tools/uboot-tools.mk @@ -0,0 +1,246 @@ +################################################################################ +# +# uboot-tools +# +################################################################################ + +UBOOT_TOOLS_VERSION = 2021.07 +UBOOT_TOOLS_SOURCE = u-boot-$(UBOOT_TOOLS_VERSION).tar.bz2 +UBOOT_TOOLS_SITE = https://ftp.denx.de/pub/u-boot +UBOOT_TOOLS_LICENSE = GPL-2.0+ +UBOOT_TOOLS_LICENSE_FILES = Licenses/gpl-2.0.txt +UBOOT_TOOLS_CPE_ID_VENDOR = denx +UBOOT_TOOLS_CPE_ID_PRODUCT = u-boot +UBOOT_TOOLS_INSTALL_STAGING = YES + +# u-boot 2020.01+ needs make 4.0+ +UBOOT_TOOLS_DEPENDENCIES = $(BR2_MAKE_HOST_DEPENDENCY) +HOST_UBOOT_TOOLS_DEPENDENCIES = $(BR2_MAKE_HOST_DEPENDENCY) + +define UBOOT_TOOLS_CONFIGURE_CMDS + mkdir -p $(@D)/include/config + touch $(@D)/include/config/auto.conf + mkdir -p $(@D)/include/generated + touch $(@D)/include/generated/autoconf.h + echo $(if $(BR2_PACKAGE_UBOOT_TOOLS_FIT_SUPPORT),'#define CONFIG_FIT_PRINT 1') >> $(@D)/include/generated/autoconf.h + mkdir -p $(@D)/include/asm + touch $(@D)/include/asm/linkage.h +endef + +UBOOT_TOOLS_MAKE_OPTS = CROSS_COMPILE="$(TARGET_CROSS)" \ + CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + HOSTCFLAGS="$(HOST_CFLAGS)" \ + STRIP=$(TARGET_STRIP) + +ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_FIT_SUPPORT),y) +UBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT=y CONFIG_MKIMAGE_DTC_PATH=dtc +UBOOT_TOOLS_DEPENDENCIES += dtc +endif + +ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT),y) +UBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT_SIGNATURE=y CONFIG_FIT_SIGNATURE_MAX_SIZE=0x10000000 +UBOOT_TOOLS_DEPENDENCIES += openssl host-pkgconf +endif + +ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_MKEFICAPSULE),y) +UBOOT_TOOLS_MAKE_OPTS += CONFIG_EFI_HAVE_CAPSULE_SUPPORT=y +endif + +ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_FIT_CHECK_SIGN),y) +define UBOOT_TOOLS_INSTALL_FIT_CHECK_SIGN + $(INSTALL) -m 0755 -D $(@D)/tools/fit_check_sign $(TARGET_DIR)/usr/bin/fit_check_sign +endef +endif + +define UBOOT_TOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(BR2_MAKE) -C $(@D) $(UBOOT_TOOLS_MAKE_OPTS) \ + CROSS_BUILD_TOOLS=y tools-only + $(TARGET_MAKE_ENV) $(BR2_MAKE) -C $(@D) $(UBOOT_TOOLS_MAKE_OPTS) \ + envtools no-dot-config-targets=envtools +endef + +ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE),y) +define UBOOT_TOOLS_INSTALL_MKIMAGE + $(INSTALL) -m 0755 -D $(@D)/tools/mkimage $(TARGET_DIR)/usr/bin/mkimage +endef +endif + +ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_MKEFICAPSULE),y) +define UBOOT_TOOLS_INSTALL_MKEFICAPSULE + $(INSTALL) -m 0755 -D $(@D)/tools/mkeficapsule $(TARGET_DIR)/usr/bin/mkeficapsule +endef +endif + +ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_MKENVIMAGE),y) +define UBOOT_TOOLS_INSTALL_MKENVIMAGE + $(INSTALL) -m 0755 -D $(@D)/tools/mkenvimage $(TARGET_DIR)/usr/bin/mkenvimage +endef +endif + +ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_FWPRINTENV),y) +define UBOOT_TOOLS_INSTALL_FWPRINTENV + $(INSTALL) -m 0755 -D $(@D)/tools/env/fw_printenv $(TARGET_DIR)/usr/sbin/fw_printenv + ln -sf fw_printenv $(TARGET_DIR)/usr/sbin/fw_setenv +endef +endif + +ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_DUMPIMAGE),y) +define UBOOT_TOOLS_INSTALL_DUMPIMAGE + $(INSTALL) -m 0755 -D $(@D)/tools/dumpimage $(TARGET_DIR)/usr/sbin/dumpimage +endef +endif + +define UBOOT_TOOLS_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0755 $(@D)/tools/env/lib.a $(STAGING_DIR)/usr/lib/libubootenv.a + $(INSTALL) -D -m 0644 $(@D)/tools/env/fw_env.h $(STAGING_DIR)/usr/include/fw_env.h +endef + +define UBOOT_TOOLS_INSTALL_TARGET_CMDS + $(UBOOT_TOOLS_INSTALL_MKIMAGE) + $(UBOOT_TOOLS_INSTALL_MKEFICAPSULE) + $(UBOOT_TOOLS_INSTALL_MKENVIMAGE) + $(UBOOT_TOOLS_INSTALL_FWPRINTENV) + $(UBOOT_TOOLS_INSTALL_DUMPIMAGE) + $(UBOOT_TOOLS_INSTALL_FIT_CHECK_SIGN) +endef + +# host-uboot-tools + +define HOST_UBOOT_TOOLS_CONFIGURE_CMDS + mkdir -p $(@D)/include/config + touch $(@D)/include/config/auto.conf + mkdir -p $(@D)/include/generated + touch $(@D)/include/generated/autoconf.h + echo $(if $(BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT),'#define CONFIG_FIT_PRINT 1') >> $(@D)/include/generated/autoconf.h + mkdir -p $(@D)/include/asm + touch $(@D)/include/asm/linkage.h +endef + +HOST_UBOOT_TOOLS_MAKE_OPTS = HOSTCC="$(HOSTCC)" \ + HOSTCFLAGS="$(HOST_CFLAGS)" \ + HOSTLDFLAGS="$(HOST_LDFLAGS)" \ + CONFIG_EFI_HAVE_CAPSULE_SUPPORT=y + +ifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT),y) +HOST_UBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT=y CONFIG_MKIMAGE_DTC_PATH=dtc +HOST_UBOOT_TOOLS_DEPENDENCIES += host-dtc +endif + +ifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT),y) +HOST_UBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT_SIGNATURE=y CONFIG_FIT_SIGNATURE_MAX_SIZE=0x10000000 +HOST_UBOOT_TOOLS_DEPENDENCIES += host-openssl +define HOST_UBOOT_TOOLS_INSTALL_FIT_CHECK_SIGN + $(INSTALL) -m 0755 -D $(@D)/tools/fit_check_sign $(HOST_DIR)/bin/fit_check_sign +endef +endif + +ifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE),y) + +UBOOT_TOOLS_GENERATE_ENV_FILE = $(call qstrip,$(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE)) + +# If BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE is left empty, we +# will use the default environment provided in the U-Boot build +# directory as boot-env-defaults.txt, which requires having uboot as a +# dependency. +# If BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE is not empty, is +# might be referring to a file within the U-Boot source tree, so we +# also need to have uboot as a dependency. +ifeq ($(BR2_TARGET_UBOOT),y) +HOST_UBOOT_TOOLS_DEPENDENCIES += uboot + +# Handle the case where BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE +# is left empty, use the default U-Boot environment. +ifeq ($(UBOOT_TOOLS_GENERATE_ENV_FILE),) +UBOOT_TOOLS_GENERATE_ENV_FILE = $(@D)/boot-env-defaults.txt +define HOST_UBOOT_TOOLS_GENERATE_ENV_DEFAULTS + CROSS_COMPILE="$(TARGET_CROSS)" \ + $(UBOOT_SRCDIR)/scripts/get_default_envs.sh \ + $(UBOOT_SRCDIR) \ + > $(UBOOT_TOOLS_GENERATE_ENV_FILE) +endef +endif # UBOOT_TOOLS_GENERATE_ENV_FILE +endif # BR2_TARGET_UBOOT + +ifeq ($(BR_BUILDING),y) +ifeq ($(call qstrip,$(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE)),) +$(error Please provide U-Boot environment size (BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE setting)) +endif +# If U-Boot is not available, ENVIMAGE_SOURCE must be provided by user, +# otherwise it is optional because the default can be taken from U-Boot +ifeq ($(BR2_TARGET_UBOOT),) +ifeq ($(call qstrip,$(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE)),) +$(error Please provide U-Boot environment file (BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE setting)) +endif +endif #BR2_TARGET_UBOOT +endif #BR_BUILDING + +define HOST_UBOOT_TOOLS_GENERATE_ENVIMAGE + $(HOST_UBOOT_TOOLS_GENERATE_ENV_DEFAULTS) + cat $(UBOOT_TOOLS_GENERATE_ENV_FILE) | \ + $(@D)/tools/mkenvimage -s $(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE) \ + $(if $(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_REDUNDANT),-r) \ + $(if $(filter "BIG",$(BR2_ENDIAN)),-b) \ + -o $(@D)/tools/uboot-env.bin \ + - +endef +define HOST_UBOOT_TOOLS_INSTALL_ENVIMAGE + $(INSTALL) -m 0755 -D $(@D)/tools/uboot-env.bin $(BINARIES_DIR)/uboot-env.bin +endef +endif #BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE + +ifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT),y) +ifeq ($(BR_BUILDING),y) +ifeq ($(call qstrip,$(BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE)),) +$(error Please define a source file for U-Boot boot script (BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE setting)) +endif +endif #BR_BUILDING + +define HOST_UBOOT_TOOLS_GENERATE_BOOT_SCRIPT + $(@D)/tools/mkimage -C none -A $(MKIMAGE_ARCH) -T script \ + -d $(call qstrip,$(BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE)) \ + $(@D)/tools/boot.scr +endef +define HOST_UBOOT_TOOLS_INSTALL_BOOT_SCRIPT + $(INSTALL) -m 0755 -D $(@D)/tools/boot.scr $(BINARIES_DIR)/boot.scr +endef +endif #BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT + +define HOST_UBOOT_TOOLS_BUILD_CMDS + $(BR2_MAKE1) -C $(@D) $(HOST_UBOOT_TOOLS_MAKE_OPTS) tools-only + $(BR2_MAKE1) -C $(@D) $(HOST_UBOOT_TOOLS_MAKE_OPTS) envtools no-dot-config-targets=envtools + $(HOST_UBOOT_TOOLS_GENERATE_ENVIMAGE) + $(HOST_UBOOT_TOOLS_GENERATE_BOOT_SCRIPT) +endef + +define HOST_UBOOT_TOOLS_INSTALL_CMDS + $(INSTALL) -m 0755 -D $(@D)/tools/mkimage $(HOST_DIR)/bin/mkimage + $(INSTALL) -m 0755 -D $(@D)/tools/mkeficapsule $(HOST_DIR)/bin/mkeficapsule + $(INSTALL) -m 0755 -D $(@D)/tools/mkenvimage $(HOST_DIR)/bin/mkenvimage + $(INSTALL) -m 0755 -D $(@D)/tools/dumpimage $(HOST_DIR)/bin/dumpimage + $(HOST_UBOOT_TOOLS_INSTALL_FIT_CHECK_SIGN) + $(INSTALL) -m 0755 -D $(@D)/tools/env/fw_printenv $(HOST_DIR)/bin/fw_printenv + ln -sf $(HOST_DIR)/bin/fw_printenv $(HOST_DIR)/bin/fw_setenv + $(HOST_UBOOT_TOOLS_INSTALL_ENVIMAGE) + $(HOST_UBOOT_TOOLS_INSTALL_BOOT_SCRIPT) +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) + +# Convenience variables for other mk files that make use of mkimage + +MKIMAGE = $(HOST_DIR)/bin/mkimage + +# mkimage supports alpha arc arm arm64 blackfin ia64 invalid m68k microblaze mips mips64 nds32 nios2 or1k powerpc riscv s390 sandbox sh sparc sparc64 x86 x86_64 xtensa +# NORMALIZED_ARCH can be arm64 arc arm blackfin m68k microblaze mips nios2 powerpc sh sparc i386 x86_64 xtensa +# For i386, we need to convert +# For openrisc, we need to convert +# For others, we'll just keep NORMALIZED_ARCH +ifeq ($(NORMALIZED_ARCH),i386) +MKIMAGE_ARCH = x86 +else ifeq ($(NORMALIZED_ARCH),openrisc) +MKIMAGE_ARCH = or1k +else +MKIMAGE_ARCH = $(NORMALIZED_ARCH) +endif diff --git a/package/ubus/0001-Install-server-and-client-examples.patch b/package/ubus/0001-Install-server-and-client-examples.patch new file mode 100644 index 00000000..5c985d8c --- /dev/null +++ b/package/ubus/0001-Install-server-and-client-examples.patch @@ -0,0 +1,28 @@ +From aa4aea68a9d2a38fabb5ae8e5a0d05dfd7bcf907 Mon Sep 17 00:00:00 2001 +From: Rahul Jain +Date: Fri, 24 Mar 2017 18:03:24 +0530 +Subject: [PATCH] Install server and client examples + +Signed-off-by: Sergio Prado +Signed-off-by: Rahul Jain +[Rahul Jain: rebase the patch on latest version] +--- + examples/CMakeLists.txt | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt +index 81f9997..38f153f 100644 +--- a/examples/CMakeLists.txt ++++ b/examples/CMakeLists.txt +@@ -9,4 +9,8 @@ IF (BUILD_EXAMPLES) + + ADD_EXECUTABLE(client client.c count.c) + TARGET_LINK_LIBRARIES(client ubus ${ubox_library}) ++ ++ INSTALL(TARGETS server client ++ RUNTIME DESTINATION sbin ++ ) + ENDIF() +-- +2.6.2 + diff --git a/package/ubus/Config.in b/package/ubus/Config.in new file mode 100644 index 00000000..391893e8 --- /dev/null +++ b/package/ubus/Config.in @@ -0,0 +1,31 @@ +comment "ubus needs a toolchain w/ dynamic library" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_UBUS + bool "ubus" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c + depends on !BR2_STATIC_LIBS # libubox + select BR2_PACKAGE_LIBUBOX + select BR2_PACKAGE_JSON_C + help + IPC/RPC bus that allows communication between processes. + + It consists of few parts including a daemon (ubusd), a + library (libubus) and a command line interface + (ubus). Although created for the OpenWRT project, it can be + used as a general IPC/RPC mechanism in other projects. + + * Select BR2_PACKAGE_LUA_5_1 if you want to have Lua + support. + + https://openwrt.org/docs/techref/ubus + +if BR2_PACKAGE_UBUS + +config BR2_PACKAGE_UBUS_EXAMPLES + bool "build and install ubus examples" + help + Build and install client and server ubus examples. + +endif diff --git a/package/ubus/ubus.hash b/package/ubus/ubus.hash new file mode 100644 index 00000000..af70e86e --- /dev/null +++ b/package/ubus/ubus.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 0020c808d0ba74b1f4c9514e2b3dfa98ec13a142c97b86b9c229479c560aca19 ubus-f787c97b34894a38b15599886cacbca01271684f-git4.tar.gz +sha256 a3caa6c0e90c87b7c97c2ac3d0c0d416082ef777215faec2e9b24ea6e68f6988 ubusd_acl.h diff --git a/package/ubus/ubus.mk b/package/ubus/ubus.mk new file mode 100644 index 00000000..cc2ed817 --- /dev/null +++ b/package/ubus/ubus.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# ubus +# +################################################################################ + +UBUS_VERSION = f787c97b34894a38b15599886cacbca01271684f +UBUS_SITE = https://git.openwrt.org/project/ubus.git +UBUS_SITE_METHOD = git + +UBUS_LICENSE = LGPL-2.1 +UBUS_LICENSE_FILES = ubusd_acl.h + +UBUS_INSTALL_STAGING = YES + +UBUS_DEPENDENCIES = json-c libubox + +# package only compiles with Lua 5.1 +ifeq ($(BR2_PACKAGE_LUA_5_1),y) +UBUS_DEPENDENCIES += lua +UBUS_CONF_OPTS += -DBUILD_LUA=ON \ + -DLUA_CFLAGS=-I$(STAGING_DIR)/usr/include \ + -DLUAPATH=/usr/lib/lua/$(LUAINTERPRETER_ABIVER) +else +UBUS_CONF_OPTS += -DBUILD_LUA=OFF +endif + +ifeq ($(BR2_PACKAGE_UBUS_EXAMPLES),y) +UBUS_CONF_OPTS += -DBUILD_EXAMPLES=ON +else +UBUS_CONF_OPTS += -DBUILD_EXAMPLES=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/uclibc-ng-test/0001-Fix-error-absent-sys-asm-h.patch b/package/uclibc-ng-test/0001-Fix-error-absent-sys-asm-h.patch new file mode 100644 index 00000000..5c8cd3f4 --- /dev/null +++ b/package/uclibc-ng-test/0001-Fix-error-absent-sys-asm-h.patch @@ -0,0 +1,59 @@ +From a99d5bdb51bdab92a303c508b2b938ee0789d614 Mon Sep 17 00:00:00 2001 +From: Dmitry Chestnykh +Date: Thu, 25 Jul 2024 09:15:11 +0300 +Subject: [PATCH] Fix errors due to absent sys/asm.h in mips64 musl build + +Upstream: https://patchwork.ozlabs.org/project/uclibc-ng/patch/20240725081519.611076-1-dm.chestnykh@gmail.com/ +Signed-off-by: Dmitry Chestnykh +--- + test/tls/tls-macros-mips.h | 33 +++++++++++++++++++++++++++++++++ + 1 file changed, 33 insertions(+) + +diff --git a/test/tls/tls-macros-mips.h b/test/tls/tls-macros-mips.h +index eed0938..bd4c5c4 100644 +--- a/test/tls/tls-macros-mips.h ++++ b/test/tls/tls-macros-mips.h +@@ -1,7 +1,40 @@ + /* Macros to support TLS testing in times of missing compiler support. */ + + #include ++#if defined(__has_include) && __has_include() + #include ++#else ++ ++#define __STRING(x) #x ++ ++#if ((_MIPS_SIM == _MIPS_SIM_ABI32 || _MIPS_SIM == _ABI32) && _MIPS_SZPTR == 32) ++#define PTR_ADDIU addiu ++#define PTR_L lw ++#endif ++ ++#if _MIPS_SIM == _MIPS_SIM_NABI32 || _MIPS_SIM == _NABI32 ++ ++#if !defined __mips_isa_rev || __mips_isa_rev < 6 ++#define PTR_ADDU add ++#define PTR_ADDIU addi ++#else ++#define PTR_ADDU addu ++#define PTR_ADDIU addiu ++#endif ++ ++#define PTR_L lw ++#endif ++ ++#if ((_MIPS_SIM == _MIPS_SIM_ABI32 || _MIPS_SIM == _ABI32) && _MIPS_SZPTR == 64) \ ++ || _MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _ABIN32 ++ ++#define PTR_ADDU daddu ++#define PTR_ADDIU daddiu ++#define PTR_L ld ++ ++#endif ++ ++#endif + + #define __STRING2(X) __STRING(X) + #define ADDU __STRING2(PTR_ADDU) +-- +2.45.2 + diff --git a/package/uclibc-ng-test/Config.in b/package/uclibc-ng-test/Config.in new file mode 100644 index 00000000..0f093d1d --- /dev/null +++ b/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/package/uclibc-ng-test/uclibc-ng-test.hash b/package/uclibc-ng-test/uclibc-ng-test.hash new file mode 100644 index 00000000..38621062 --- /dev/null +++ b/package/uclibc-ng-test/uclibc-ng-test.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 fae9be86b0eb050e139047d934e7e02599d074d481523dead65ce164c8453500 uclibc-ng-test-132c6134d69146bcafbdda68ae3a9cbd9f8fb921-git4.tar.gz +sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 COPYING.LIB diff --git a/package/uclibc-ng-test/uclibc-ng-test.mk b/package/uclibc-ng-test/uclibc-ng-test.mk new file mode 100644 index 00000000..a80b6434 --- /dev/null +++ b/package/uclibc-ng-test/uclibc-ng-test.mk @@ -0,0 +1,64 @@ +################################################################################ +# +# uclibc-ng-test +# +################################################################################ + +UCLIBC_NG_TEST_VERSION = 132c6134d69146bcafbdda68ae3a9cbd9f8fb921 +UCLIBC_NG_TEST_SITE = https://git.uclibc-ng.org/git/uclibc-ng-test.git +UCLIBC_NG_TEST_SITE_METHOD = git +UCLIBC_NG_TEST_LICENSE = LGPL-2.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 + +# obsolete encrypt and setkey functions are not available since glibc 2.28 +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y) +UCLIBC_NG_TEST_MAKE_ENV += NO_CRYPT=1 +endif + +# 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 +# no TLS macros available +ifeq ($(BR2_s390x),y) +UCLIBC_NG_TEST_MAKE_ENV += NO_TLS=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/package/uclibc/0001-mips64-time64-for-n32-ABI-breaks-a-lot-of-tests-disa.patch b/package/uclibc/0001-mips64-time64-for-n32-ABI-breaks-a-lot-of-tests-disa.patch new file mode 100644 index 00000000..5a12231b --- /dev/null +++ b/package/uclibc/0001-mips64-time64-for-n32-ABI-breaks-a-lot-of-tests-disa.patch @@ -0,0 +1,28 @@ +From dd01754e21da71706af07f3e56eade66fc9164fb Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Fri, 16 Aug 2024 16:59:28 +0200 +Subject: [PATCH] mips64: time64 for n32 ABI breaks a lot of tests, disable it + for now + +Signed-off-by: Waldemar Brodkorb +Upstream: https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/commit/?id=dd01754e21da71706af07f3e56eade66fc9164fb +--- + extra/Configs/Config.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in +index 454b6ddb8..86bd20d76 100644 +--- a/extra/Configs/Config.in ++++ b/extra/Configs/Config.in +@@ -1032,7 +1032,7 @@ config UCLIBC_USE_TIME64 + TARGET_i386 || \ + TARGET_m68k || \ + TARGET_microblaze || \ +- (TARGET_mips && !CONFIG_MIPS_N64_ABI) || \ ++ (TARGET_mips && !(CONFIG_MIPS_N64_ABI || CONFIG_MIPS_N32_ABI)) || \ + TARGET_or1k || \ + TARGET_powerpc || \ + TARGET_riscv32 || \ +-- +2.30.2 + diff --git a/package/uclibc/Config.in b/package/uclibc/Config.in new file mode 100644 index 00000000..73ddd5ef --- /dev/null +++ b/package/uclibc/Config.in @@ -0,0 +1,185 @@ +config BR2_PACKAGE_UCLIBC_ARCH_SUPPORTS + bool + default y if BR2_aarch64 + default y if BR2_aarch64_be + default y if BR2_arcle + default y if BR2_arceb + default y if BR2_arm + default y if BR2_armeb + default y if BR2_i386 + default y if BR2_m68k + default y if BR2_microblaze + default y if BR2_mips + default y if BR2_mipsel + default y if BR2_mips64 + default y if BR2_mips64el + default y if BR2_or1k + default y if BR2_powerpc + # see libc/sysdeps/linux/riscv32/sys/asm.h + default y if BR2_RISCV_32 && (BR2_RISCV_ABI_ILP32 || BR2_RISCV_ABI_ILP32D) + # see libc/sysdeps/linux/riscv64/sys/asm.h + default y if BR2_RISCV_64 && (BR2_RISCV_ABI_LP64 || BR2_RISCV_ABI_LP64D) + default y if BR2_sh4 + default y if BR2_sh4eb + default y if BR2_sparc + default y if BR2_xtensa + default y if BR2_x86_64 + +config BR2_PACKAGE_UCLIBC_SUPPORTS + bool + default y if BR2_PACKAGE_UCLIBC_ARCH_SUPPORTS + +if BR2_TOOLCHAIN_BUILDROOT_UCLIBC + +comment "uClibc Options" + +config BR2_PACKAGE_UCLIBC + bool + default y + select BR2_PACKAGE_LINUX_HEADERS + +config BR2_UCLIBC_CONFIG + string "uClibc configuration file to use?" + default "package/uclibc/uClibc-ng.config" + help + Some people may wish to use their own modified uClibc + configuration file and will specify their config file + location with this option. See also docs/README in this + package. If unsure, use the default. + +config BR2_UCLIBC_CONFIG_FRAGMENT_FILES + string "Additional uClibc configuration fragment files" + help + A space-separated list of configuration fragment files, that + will be merged to the main uClibc configuration file. + +config BR2_TOOLCHAIN_BUILDROOT_WCHAR + bool "Enable WCHAR support" + select BR2_USE_WCHAR + help + Enable this option if you want your toolchain to support + wide characters (i.e characters longer than 8 bits, needed + for locale support). + +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. + +choice + prompt "Thread library implementation" + help + Use this option to select the thread library implementation + that should be used in your toolchain. + +config BR2_PTHREADS_NATIVE + bool "Native POSIX Threading (NPTL)" + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + +config BR2_PTHREADS + bool "linuxthreads" + depends on !BR2_aarch64 && !BR2_aarch64_be + select BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PTHREADS_NONE + bool "none" + +endchoice + +config BR2_PTHREAD_DEBUG + bool "Thread library debugging" + depends on BR2_PTHREADS || BR2_PTHREADS_NATIVE + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + help + Build the thread library with debugging enabled. + +config BR2_TOOLCHAIN_BUILDROOT_USE_SSP + bool "Enable stack protection support" + depends on BR2_PACKAGE_HOST_BINUTILS_SUPPORTS_CFI + select BR2_TOOLCHAIN_HAS_SSP + help + Enable stack smashing protection support using GCCs + -fstack-protector-all option in uClibc. + + See + http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt + for details. + +config BR2_UCLIBC_INSTALL_UTILS + bool "Compile and install uClibc utilities" + default y + help + Enabling this option will compile and install the getconf, + ldconfig and ldd uClibc utilities for the target. + + You can save ~32 KiB in target space by disabling them since + they're normally not needed. + +# Mapping from the Buildroot architecture configuration options to the +# uClibc architecture names. +config BR2_UCLIBC_TARGET_ARCH + string + default "aarch64" if BR2_aarch64 || BR2_aarch64_be + default "arc" if BR2_arcle || BR2_arceb + default "arm" if BR2_arm || BR2_armeb + 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 + default "xtensa" if BR2_xtensa + default "i386" if BR2_i386 + default "x86_64" if BR2_x86_64 + default "riscv64" if BR2_RISCV_64 + default "riscv32" if BR2_RISCV_32 + +config BR2_UCLIBC_MIPS_ABI + string + default "O32" if BR2_MIPS_OABI32 + default "N32" if BR2_MIPS_NABI32 + default "N64" if BR2_MIPS_NABI64 + depends on BR2_UCLIBC_TARGET_ARCH = "mips" + +config BR2_UCLIBC_MIPS_NAN + string + default "LEGACY" if BR2_MIPS_NAN_LEGACY + default "2008" if BR2_MIPS_NAN_2008 + depends on BR2_UCLIBC_TARGET_ARCH = "mips" + +config BR2_UCLIBC_SH_TYPE + string + default "SH4" if BR2_sh4 || BR2_sh4eb + depends on BR2_UCLIBC_TARGET_ARCH = "sh" + +config BR2_UCLIBC_SPARC_TYPE + string + default "V8" if BR2_sparc_v8 + depends on BR2_UCLIBC_TARGET_ARCH = "sparc" + +config BR2_UCLIBC_POWERPC_TYPE + string + default "CLASSIC" if !BR2_powerpc_8540 && !BR2_powerpc_8548 + default "E500" if BR2_powerpc_8540 || BR2_powerpc_8548 + depends on BR2_UCLIBC_TARGET_ARCH = "powerpc" + +config BR2_UCLIBC_X86_TYPE + string + default "486" if BR2_x86_i486 + default "586" if BR2_x86_i586 + default "586MMX" if BR2_x86_pentium_mmx + default "686" if BR2_x86_i686 || BR2_x86_pentiumpro + default "PENTIUMII" if BR2_x86_pentium2 + default "PENTIUMIII" if BR2_x86_pentium3 + default "PENTIUM4" if BR2_x86_pentium4 || BR2_x86_pentium_m || \ + BR2_x86_nocona || BR2_x86_core2 || BR2_x86_corei7 + depends on BR2_UCLIBC_TARGET_ARCH = "i386" + +endif # BR2_TOOLCHAIN_BUILDROOT_UCLIBC diff --git a/package/uclibc/uClibc-ng.config b/package/uclibc/uClibc-ng.config new file mode 100644 index 00000000..5beb2bd9 --- /dev/null +++ b/package/uclibc/uClibc-ng.config @@ -0,0 +1,42 @@ +DO_C99_MATH=y +DO_XSI_MATH=y +KERNEL_HEADERS="/usr/src/linux/include" +# LDSO_CACHE_SUPPORT is not set +# UCLIBC_STATIC_LDCONFIG is not set +LDSO_RUNPATH=y +LDSO_RUNPATH_OF_EXECUTABLE=y +UCLIBC_HAS_UTMPX=y +UCLIBC_HAS_UTMP=y +UCLIBC_SUSV2_LEGACY=y +UCLIBC_SUSV3_LEGACY=y +UCLIBC_HAS_CONTEXT_FUNCS=y +UCLIBC_SUSV4_LEGACY=y +UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y +UCLIBC_HAS_GETPT=y +UCLIBC_HAS_LIBUTIL=y +UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y +UCLIBC_HAS_SHA256_CRYPT_IMPL=y +UCLIBC_HAS_SHA512_CRYPT_IMPL=y +UCLIBC_USE_NETLINK=y +UCLIBC_SUPPORT_AI_ADDRCONFIG=y +UCLIBC_HAS_RESOLVER_SUPPORT=y +UCLIBC_HAS_LIBRESOLV_STUB=y +UCLIBC_HAS_LIBNSL_STUB=y +UCLIBC_HAS_CTYPE_CHECKED=y +UCLIBC_HAS_LIBINTL=y +UCLIBC_HAS_HEXADECIMAL_FLOATS=y +UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y +UCLIBC_HAS_STDIO_GETC_MACRO=y +UCLIBC_HAS_STDIO_PUTC_MACRO=y +UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y +UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y +UCLIBC_HAS_PRINTF_M_SPEC=y +UCLIBC_HAS_WORDEXP=y +UCLIBC_HAS_NFTW=y +UCLIBC_HAS_FTW=y +UCLIBC_HAS_GNU_GLOB=y +RUNTIME_PREFIX="/" +DEVEL_PREFIX="/usr/" +UCLIBC_HAS_SSP=y +UCLIBC_BUILD_NOW=y +# DOSTRIP is not set diff --git a/package/uclibc/uclibc.hash b/package/uclibc/uclibc.hash new file mode 100644 index 00000000..dbc39669 --- /dev/null +++ b/package/uclibc/uclibc.hash @@ -0,0 +1,4 @@ +# From https://downloads.uclibc-ng.org/releases/1.0.50/uClibc-ng-1.0.50.tar.xz.sha256 +sha256 aed867251f4823a74ea5e3a3993d3a7c123280abe15e38dc206770c3968f21cf uClibc-ng-1.0.50.tar.xz +# Locally calculated +sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING.LIB diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk new file mode 100644 index 00000000..de834bac --- /dev/null +++ b/package/uclibc/uclibc.mk @@ -0,0 +1,475 @@ +################################################################################ +# +# uclibc +# +################################################################################ + +UCLIBC_VERSION = 1.0.50 +UCLIBC_SOURCE = uClibc-ng-$(UCLIBC_VERSION).tar.xz +UCLIBC_SITE = https://downloads.uclibc-ng.org/releases/$(UCLIBC_VERSION) +UCLIBC_LICENSE = LGPL-2.1+ +UCLIBC_LICENSE_FILES = COPYING.LIB +UCLIBC_INSTALL_STAGING = YES +UCLIBC_CPE_ID_VENDOR = uclibc-ng_project +UCLIBC_CPE_ID_PRODUCT = uclibc-ng + +# uclibc is part of the toolchain so disable the toolchain dependency +UCLIBC_ADD_TOOLCHAIN_DEPENDENCY = NO + +# Before uClibc is configured, we must have the first stage +# cross-compiler and the kernel headers +UCLIBC_DEPENDENCIES = host-gcc-initial linux-headers + +# specifying UCLIBC_CONFIG_FILE on the command-line overrides the .config +# setting. +# check-package disable Ifdef +ifndef UCLIBC_CONFIG_FILE +UCLIBC_CONFIG_FILE = $(call qstrip,$(BR2_UCLIBC_CONFIG)) +endif + +UCLIBC_KCONFIG_EDITORS = menuconfig nconfig +UCLIBC_KCONFIG_FILE = $(UCLIBC_CONFIG_FILE) +UCLIBC_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_UCLIBC_CONFIG_FRAGMENT_FILES)) + +# UCLIBC_MAKE_FLAGS set HOSTCC to the default HOSTCC, which may be +# wrapped with ccache. However, host-ccache may not already be built +# and installed when we apply the configuration, so we override that +# to use the non-ccached host compiler. +UCLIBC_KCONFIG_OPTS = \ + $(UCLIBC_MAKE_FLAGS) \ + HOSTCC="$(HOSTCC_NOCCACHE)" \ + PREFIX=$(STAGING_DIR) \ + DEVEL_PREFIX=/usr/ \ + RUNTIME_PREFIX=$(STAGING_DIR)/ + +UCLIBC_TARGET_ARCH = $(call qstrip,$(BR2_UCLIBC_TARGET_ARCH)) + +UCLIBC_GENERATE_LOCALES = $(call qstrip,$(BR2_GENERATE_LOCALE)) + +ifeq ($(UCLIBC_GENERATE_LOCALES),) +# We need at least one locale +UCLIBC_LOCALES = en_US +else +# Strip out the encoding part of locale names, if any +UCLIBC_LOCALES = \ + $(foreach locale,$(UCLIBC_GENERATE_LOCALES),\ + $(firstword $(subst .,$(space),$(locale)))) +endif + +# noMMU binary formats +ifeq ($(BR2_BINFMT_FLAT),y) +define UCLIBC_BINFMT_CONFIG + $(call KCONFIG_ENABLE_OPT,UCLIBC_FORMAT_FLAT) + $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT_SEP_DATA) + $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FDPIC_ELF) +endef +endif + +# +# AArch64 definitions +# + +ifeq ($(UCLIBC_TARGET_ARCH),aarch64) +UCLIBC_ARM64_PAGE_SIZE = CONFIG_AARCH64_PAGE_SIZE_$(call qstrip,$(BR2_ARM64_PAGE_SIZE)) +define UCLIBC_AARCH64_PAGE_SIZE_CONFIG + $(SED) '/CONFIG_AARCH64_PAGE_SIZE_*/d' $(@D)/.config + $(call KCONFIG_ENABLE_OPT,$(UCLIBC_ARM64_PAGE_SIZE)) +endef +endif # aarch64 + +# +# ARC definitions +# + +ifeq ($(UCLIBC_TARGET_ARCH),arc) +UCLIBC_ARC_PAGE_SIZE = CONFIG_ARC_PAGE_SIZE_$(call qstrip,$(BR2_ARC_PAGE_SIZE)) +define UCLIBC_ARC_PAGE_SIZE_CONFIG + $(SED) '/CONFIG_ARC_PAGE_SIZE_*/d' $(@D)/.config + $(call KCONFIG_ENABLE_OPT,$(UCLIBC_ARC_PAGE_SIZE)) +endef + +ifeq ($(BR2_ARC_ATOMIC_EXT),) +define UCLIBC_ARC_ATOMICS_CONFIG + $(call KCONFIG_DISABLE_OPT,CONFIG_ARC_HAS_ATOMICS) +endef +endif + +endif # arc + +# +# ARM definitions +# + +ifeq ($(UCLIBC_TARGET_ARCH),arm) +define UCLIBC_ARM_ABI_CONFIG + $(SED) '/CONFIG_ARM_.ABI/d' $(@D)/.config + $(call KCONFIG_ENABLE_OPT,CONFIG_ARM_EABI) +endef + +ifeq ($(BR2_BINFMT_FLAT),y) +define UCLIBC_ARM_BINFMT_FLAT + $(call KCONFIG_DISABLE_OPT,DOPIC) +endef +endif + +# context functions are written with ARM instructions. Therefore, if +# we are using a Thumb2-only platform (i.e, Cortex-M), they must be +# disabled. Thumb1 platforms are not a problem, since they all also +# support the ARM instructions. +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB2):$(BR2_ARM_CPU_HAS_ARM),y:) +define UCLIBC_ARM_NO_CONTEXT_FUNCS + $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_CONTEXT_FUNCS) +endef +endif + +endif # arm + +# +# m68k/coldfire definitions +# + +ifeq ($(UCLIBC_TARGET_ARCH),m68k) + +# disable DOPIC for flat without separate data +ifeq ($(BR2_BINFMT_FLAT),y) +define UCLIBC_M68K_BINFMT_FLAT + $(call KCONFIG_DISABLE_OPT,DOPIC) +endef +endif + +endif # m68k/coldfire + +# +# MIPS definitions +# + +ifeq ($(UCLIBC_TARGET_ARCH),mips) +UCLIBC_MIPS_ABI = CONFIG_MIPS_$(call qstrip,$(BR2_UCLIBC_MIPS_ABI))_ABI +define UCLIBC_MIPS_ABI_CONFIG + $(SED) '/CONFIG_MIPS_[NO].._ABI/d' $(@D)/.config + $(call KCONFIG_ENABLE_OPT,$(UCLIBC_MIPS_ABI)) +endef + +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)) +endef +endif # mips + +# +# SH definitions +# + +ifeq ($(UCLIBC_TARGET_ARCH),sh) +UCLIBC_SH_TYPE = CONFIG_$(call qstrip,$(BR2_UCLIBC_SH_TYPE)) +define UCLIBC_SH_TYPE_CONFIG + $(SED) '/CONFIG_SH[234A]*/d' $(@D)/.config + $(call KCONFIG_ENABLE_OPT,$(UCLIBC_SH_TYPE)) +endef +endif # sh + +# +# SPARC definitions +# + +ifeq ($(UCLIBC_TARGET_ARCH),sparc) +UCLIBC_SPARC_TYPE = CONFIG_SPARC_$(call qstrip,$(BR2_UCLIBC_SPARC_TYPE)) +define UCLIBC_SPARC_TYPE_CONFIG + $(SED) 's/^\(CONFIG_[^_]*[_]*SPARC[^=]*\)=.*/# \1 is not set/g' \ + $(@D)/.config + $(call KCONFIG_ENABLE_OPT,$(UCLIBC_SPARC_TYPE)) +endef +endif # sparc + +# +# PowerPC definitions +# + +ifeq ($(UCLIBC_TARGET_ARCH),powerpc) +UCLIBC_POWERPC_TYPE = CONFIG_$(call qstrip,$(BR2_UCLIBC_POWERPC_TYPE)) +define UCLIBC_POWERPC_TYPE_CONFIG + $(call KCONFIG_DISABLE_OPT,CONFIG_GENERIC) + $(call KCONFIG_DISABLE_OPT,CONFIG_E500) + $(call KCONFIG_ENABLE_OPT,$(UCLIBC_POWERPC_TYPE)) +endef +endif # powerpc + +# +# x86 definitions +# +ifeq ($(UCLIBC_TARGET_ARCH),i386) +UCLIBC_X86_TYPE = CONFIG_$(call qstrip,$(BR2_UCLIBC_X86_TYPE)) +define UCLIBC_X86_TYPE_CONFIG + $(call KCONFIG_ENABLE_OPT,$(UCLIBC_X86_TYPE)) +endef +endif + +# +# Debug +# +ifeq ($(BR2_ENABLE_RUNTIME_DEBUG),y) +define UCLIBC_DEBUG_CONFIG + $(call KCONFIG_ENABLE_OPT,DODEBUG) +endef +endif + +# +# Endianness +# + +ifeq ($(call qstrip,$(BR2_ENDIAN)),BIG) +define UCLIBC_ENDIAN_CONFIG + $(call KCONFIG_ENABLE_OPT,ARCH_BIG_ENDIAN) + $(call KCONFIG_ENABLE_OPT,ARCH_WANTS_BIG_ENDIAN) + $(call KCONFIG_DISABLE_OPT,ARCH_LITTLE_ENDIAN) + $(call KCONFIG_DISABLE_OPT,ARCH_WANTS_LITTLE_ENDIAN) +endef +else +define UCLIBC_ENDIAN_CONFIG + $(call KCONFIG_ENABLE_OPT,ARCH_LITTLE_ENDIAN) + $(call KCONFIG_ENABLE_OPT,ARCH_WANTS_LITTLE_ENDIAN) + $(call KCONFIG_DISABLE_OPT,ARCH_BIG_ENDIAN) + $(call KCONFIG_DISABLE_OPT,ARCH_WANTS_BIG_ENDIAN) +endef +endif + +# +# MMU +# + +ifeq ($(BR2_USE_MMU),y) +define UCLIBC_MMU_CONFIG + $(call KCONFIG_ENABLE_OPT,ARCH_HAS_MMU) + $(call KCONFIG_ENABLE_OPT,ARCH_USE_MMU) +endef +else +define UCLIBC_MMU_CONFIG + $(call KCONFIG_DISABLE_OPT,ARCH_HAS_MMU) + $(call KCONFIG_DISABLE_OPT,ARCH_USE_MMU) +endef +endif + +# +# IPv6 +# + +UCLIBC_IPV6_CONFIG = $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_IPV6) + +# +# soft-float +# + +ifeq ($(BR2_SOFT_FLOAT),y) +define UCLIBC_FLOAT_CONFIG + $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_FPU) + $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_FLOATS) + $(call KCONFIG_ENABLE_OPT,DO_C99_MATH) +endef +else +define UCLIBC_FLOAT_CONFIG + $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_FPU) + $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_FLOATS) +endef +endif + +# +# SSP +# +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_USE_SSP),y) +define UCLIBC_SSP_CONFIG + $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_SSP) + $(call KCONFIG_ENABLE_OPT,UCLIBC_BUILD_SSP) +endef +else +define UCLIBC_SSP_CONFIG + $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_SSP) + $(call KCONFIG_DISABLE_OPT,UCLIBC_BUILD_SSP) +endef +endif + +# +# Threads +# +ifeq ($(BR2_PTHREADS_NONE),y) +define UCLIBC_THREAD_CONFIG + $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_THREADS) + $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_LINUXTHREADS) + $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_THREADS_NATIVE) +endef +else ifeq ($(BR2_PTHREADS),y) +define UCLIBC_THREAD_CONFIG + $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_THREADS) + $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_LINUXTHREADS) + $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_THREADS_NATIVE) +endef +else ifeq ($(BR2_PTHREADS_NATIVE),y) +define UCLIBC_THREAD_CONFIG + $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_THREADS) + $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_LINUXTHREADS) + $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_THREADS_NATIVE) +endef +endif + +# +# Thread debug +# + +ifeq ($(BR2_PTHREAD_DEBUG),y) +UCLIBC_THREAD_DEBUG_CONFIG = $(call KCONFIG_ENABLE_OPT,PTHREADS_DEBUG_SUPPORT) +else +UCLIBC_THREAD_DEBUG_CONFIG = $(call KCONFIG_DISABLE_OPT,PTHREADS_DEBUG_SUPPORT) +endif + +# +# Locale +# + +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_LOCALE),y) +define UCLIBC_LOCALE_CONFIG + $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_LOCALE) + $(call KCONFIG_DISABLE_OPT,UCLIBC_BUILD_ALL_LOCALE) + $(call KCONFIG_ENABLE_OPT,UCLIBC_BUILD_MINIMAL_LOCALE) + $(call KCONFIG_SET_OPT,UCLIBC_BUILD_MINIMAL_LOCALES,"$(UCLIBC_LOCALES)") + $(call KCONFIG_DISABLE_OPT,UCLIBC_PREGENERATED_LOCALE_DATA) + $(call KCONFIG_DISABLE_OPT,DOWNLOAD_PREGENERATED_LOCALE_DATA) + $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_XLOCALE) + $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_GLIBC_DIGIT_GROUPING) +endef +else +define UCLIBC_LOCALE_CONFIG + $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_LOCALE) +endef +endif + +# +# wchar +# + +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_WCHAR),y) +UCLIBC_WCHAR_CONFIG = $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_WCHAR) +else +UCLIBC_WCHAR_CONFIG = $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_WCHAR) +endif + +# +# static/shared libs +# + +ifeq ($(BR2_STATIC_LIBS),y) +UCLIBC_SHARED_LIBS_CONFIG = $(call KCONFIG_DISABLE_OPT,HAVE_SHARED) +else +UCLIBC_SHARED_LIBS_CONFIG = $(call KCONFIG_ENABLE_OPT,HAVE_SHARED) +endif + +# +# Commands +# + +UCLIBC_EXTRA_CFLAGS = $(TARGET_ABI) $(TARGET_DEBUGGING) + +# uClibc-ng does not build with LTO, so explicitly disable it +# when using a compiler that may have support for LTO +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_7),y) +UCLIBC_EXTRA_CFLAGS += -fno-lto +endif + +UCLIBC_MAKE_FLAGS = \ + ARCH="$(UCLIBC_TARGET_ARCH)" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + UCLIBC_EXTRA_CFLAGS="$(UCLIBC_EXTRA_CFLAGS)" \ + HOSTCC="$(HOSTCC)" + +define UCLIBC_KCONFIG_FIXUP_CMDS + $(call KCONFIG_SET_OPT,CROSS_COMPILER_PREFIX,"$(TARGET_CROSS)") + $(call KCONFIG_ENABLE_OPT,TARGET_$(UCLIBC_TARGET_ARCH)) + $(call KCONFIG_SET_OPT,TARGET_ARCH,"$(UCLIBC_TARGET_ARCH)") + $(call KCONFIG_SET_OPT,KERNEL_HEADERS,"$(LINUX_HEADERS_DIR)/usr/include") + $(call KCONFIG_SET_OPT,RUNTIME_PREFIX,"/") + $(call KCONFIG_SET_OPT,DEVEL_PREFIX,"/usr") + $(call KCONFIG_SET_OPT,SHARED_LIB_LOADER_PREFIX,"/lib") + $(call KCONFIG_DISABLE_OPT,DOSTRIP) + $(UCLIBC_MMU_CONFIG) + $(UCLIBC_BINFMT_CONFIG) + $(UCLIBC_AARCH64_PAGE_SIZE_CONFIG) + $(UCLIBC_ARC_PAGE_SIZE_CONFIG) + $(UCLIBC_ARC_ATOMICS_CONFIG) + $(UCLIBC_ARM_ABI_CONFIG) + $(UCLIBC_ARM_BINFMT_FLAT) + $(UCLIBC_ARM_NO_CONTEXT_FUNCS) + $(UCLIBC_M68K_BINFMT_FLAT) + $(UCLIBC_MIPS_ABI_CONFIG) + $(UCLIBC_MIPS_NAN_CONFIG) + $(UCLIBC_SH_TYPE_CONFIG) + $(UCLIBC_SPARC_TYPE_CONFIG) + $(UCLIBC_POWERPC_TYPE_CONFIG) + $(UCLIBC_X86_TYPE_CONFIG) + $(UCLIBC_DEBUG_CONFIG) + $(UCLIBC_ENDIAN_CONFIG) + $(UCLIBC_IPV6_CONFIG) + $(UCLIBC_FLOAT_CONFIG) + $(UCLIBC_SSP_CONFIG) + $(UCLIBC_THREAD_CONFIG) + $(UCLIBC_THREAD_DEBUG_CONFIG) + $(UCLIBC_LOCALE_CONFIG) + $(UCLIBC_WCHAR_CONFIG) + $(UCLIBC_SHARED_LIBS_CONFIG) +endef + +define UCLIBC_BUILD_CMDS + $(MAKE) -C $(@D) $(UCLIBC_MAKE_FLAGS) headers + $(MAKE) -C $(@D) $(UCLIBC_MAKE_FLAGS) + $(MAKE) -C $(@D)/utils \ + PREFIX=$(HOST_DIR) \ + HOSTCC="$(HOSTCC)" hostutils +endef + +ifeq ($(BR2_UCLIBC_INSTALL_UTILS),y) +define UCLIBC_INSTALL_UTILS_TARGET + $(MAKE1) -C $(@D) \ + CC="$(TARGET_CC)" CPP="$(TARGET_CPP)" LD="$(TARGET_LD)" \ + ARCH="$(UCLIBC_TARGET_ARCH)" \ + PREFIX=$(TARGET_DIR) \ + utils install_utils +endef +endif + +define UCLIBC_INSTALL_TARGET_CMDS + $(MAKE1) -C $(@D) \ + $(UCLIBC_MAKE_FLAGS) \ + PREFIX=$(TARGET_DIR) \ + DEVEL_PREFIX=/usr/ \ + RUNTIME_PREFIX=/ \ + install_runtime + $(UCLIBC_INSTALL_UTILS_TARGET) +endef + +# STATIC has no ld* tools, only getconf +ifeq ($(BR2_STATIC_LIBS),) +define UCLIBC_INSTALL_UTILS_STAGING + $(INSTALL) -D -m 0755 $(@D)/utils/ldd.host $(HOST_DIR)/bin/ldd + ln -sf ldd $(HOST_DIR)/bin/$(GNU_TARGET_NAME)-ldd + $(INSTALL) -D -m 0755 $(@D)/utils/ldconfig.host $(HOST_DIR)/bin/ldconfig + ln -sf ldconfig $(HOST_DIR)/bin/$(GNU_TARGET_NAME)-ldconfig +endef +endif + +define UCLIBC_INSTALL_STAGING_CMDS + $(MAKE1) -C $(@D) \ + $(UCLIBC_MAKE_FLAGS) \ + PREFIX=$(STAGING_DIR) \ + DEVEL_PREFIX=/usr/ \ + RUNTIME_PREFIX=/ \ + install_runtime install_dev + $(UCLIBC_INSTALL_UTILS_STAGING) +endef + +# Checks to give errors that the user can understand +# Must be before we call to kconfig-package +ifeq ($(BR2_PACKAGE_UCLIBC)$(BR_BUILDING),yy) +ifeq ($(call qstrip,$(BR2_UCLIBC_CONFIG)),) +$(error No uClibc configuration file specified, check your BR2_UCLIBC_CONFIG setting) +endif +endif + +$(eval $(kconfig-package)) diff --git a/package/udev-gentoo-scripts/Config.in b/package/udev-gentoo-scripts/Config.in new file mode 100644 index 00000000..9d694435 --- /dev/null +++ b/package/udev-gentoo-scripts/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_UDEV_GENTOO_SCRIPTS + bool + depends on BR2_PACKAGE_EUDEV + depends on BR2_INIT_OPENRC + help + Init scripts for eudev. diff --git a/package/udev-gentoo-scripts/udev-gentoo-scripts.hash b/package/udev-gentoo-scripts/udev-gentoo-scripts.hash new file mode 100644 index 00000000..99e6a9fe --- /dev/null +++ b/package/udev-gentoo-scripts/udev-gentoo-scripts.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b206f72c93cd2e51ed59061931918a9c23c3c1f7e6caffacc9d4f8915a42c30a udev-gentoo-scripts-33.tar.bz2 +sha256 329f95829088b95650b9012ae688f09baa1637985425a7964d33683363f48702 init.d/udev-settle diff --git a/package/udev-gentoo-scripts/udev-gentoo-scripts.mk b/package/udev-gentoo-scripts/udev-gentoo-scripts.mk new file mode 100644 index 00000000..a0598bca --- /dev/null +++ b/package/udev-gentoo-scripts/udev-gentoo-scripts.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# udev-gentoo-scripts +# +################################################################################ + +UDEV_GENTOO_SCRIPTS_VERSION = 33 +UDEV_GENTOO_SCRIPTS_SOURCE = udev-gentoo-scripts-$(UDEV_GENTOO_SCRIPTS_VERSION).tar.bz2 +UDEV_GENTOO_SCRIPTS_SITE = https://gitweb.gentoo.org/proj/udev-gentoo-scripts.git/snapshot +UDEV_GENTOO_SCRIPTS_LICENSE = GPL-2.0 +UDEV_GENTOO_SCRIPTS_LICENSE_FILES = init.d/udev-settle + +# We don't need to symlink /etc/init.d/udev to /etc/runlevels/sysinit, since +# it's in the udev-settle and udev-trigger "need" lists. +define UDEV_GENTOO_SCRIPTS_INSTALL_INIT_OPENRC + $(MAKE1) -C $(@D) install DESTDIR=$(TARGET_DIR) + $(INSTALL) -d -m 755 $(TARGET_DIR)/etc/runlevels/sysinit + ln -s -f /etc/init.d/udev-settle /etc/init.d/udev-trigger \ + $(TARGET_DIR)/etc/runlevels/sysinit +endef + +$(eval $(generic-package)) diff --git a/package/udev/Config.in b/package/udev/Config.in new file mode 100644 index 00000000..814a6251 --- /dev/null +++ b/package/udev/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HAS_UDEV + bool + +config BR2_PACKAGE_PROVIDES_UDEV + string + depends on BR2_PACKAGE_HAS_UDEV diff --git a/package/udev/udev.mk b/package/udev/udev.mk new file mode 100644 index 00000000..21c1a71f --- /dev/null +++ b/package/udev/udev.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# udev +# +################################################################################ + +# Required by default rules +define UDEV_USERS + - - input -1 * - - - Input device group + - - kvm -1 * - - - kvm nodes + - - sgx -1 * - - - SGX device nodes +endef + +$(eval $(virtual-package)) diff --git a/package/udftools/Config.in b/package/udftools/Config.in new file mode 100644 index 00000000..bbccd601 --- /dev/null +++ b/package/udftools/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_UDFTOOLS + bool "udftools" + depends on BR2_USE_WCHAR + select BR2_PACKAGE_READLINE + help + Tools for creating UDF filesystems + Maintained fork of the 2004 Sourcforge package + + https://github.com/pali/udftools + +comment "udftools needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/package/udftools/udftools.hash b/package/udftools/udftools.hash new file mode 100644 index 00000000..5b3f10d3 --- /dev/null +++ b/package/udftools/udftools.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 750dcf5c797765eb42265e0a56d1a99f97f94b7f6f4534263a5410503f0caf59 udftools-2.3.tar.gz +sha256 dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa COPYING diff --git a/package/udftools/udftools.mk b/package/udftools/udftools.mk new file mode 100644 index 00000000..7dc1c57e --- /dev/null +++ b/package/udftools/udftools.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# udftools +# +################################################################################ + +UDFTOOLS_VERSION = 2.3 +UDFTOOLS_SITE = https://github.com/pali/udftools/releases/download/$(UDFTOOLS_VERSION) +UDFTOOLS_LICENSE = GPL-2.0+ +UDFTOOLS_LICENSE_FILES = COPYING +UDFTOOLS_DEPENDENCIES = readline host-pkgconf + +$(eval $(autotools-package)) diff --git a/package/udisks/Config.in b/package/udisks/Config.in new file mode 100644 index 00000000..23eec1d7 --- /dev/null +++ b/package/udisks/Config.in @@ -0,0 +1,62 @@ +config BR2_PACKAGE_UDISKS + bool "udisks" + depends on BR2_ENABLE_LOCALE # libblockdev, parted + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # polkit -> C++17 + depends on BR2_TOOLCHAIN_HAS_THREADS # polkit + depends on BR2_USE_WCHAR # dbus-glib -> glib2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libblockdev -> cryptsetup -> json-c + depends on !BR2_STATIC_LIBS # polkit -> duktape + depends on !BR2_OPTIMIZE_FAST # polkit -> duktape + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_DBUS_GLIB + select BR2_PACKAGE_LIBATASMART + select BR2_PACKAGE_LIBBLOCKDEV + select BR2_PACKAGE_LIBBLOCKDEV_CRYPTO + select BR2_PACKAGE_LIBBLOCKDEV_FS + select BR2_PACKAGE_LIBBLOCKDEV_LOOP + select BR2_PACKAGE_LIBBLOCKDEV_MDRAID + select BR2_PACKAGE_LIBBLOCKDEV_NVME + select BR2_PACKAGE_LIBBLOCKDEV_PART + select BR2_PACKAGE_LIBBLOCKDEV_SWAP + select BR2_PACKAGE_LIBGUDEV + select BR2_PACKAGE_PARTED + select BR2_PACKAGE_POLKIT + select BR2_PACKAGE_SG3_UTILS + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + help + The udisks project provides + + o A storage daemon that implements well-defined D-Bus + interfaces that can be used to query and manipulate + storage devices. + + o a command-line tool, udisksctl(1), that can be used to + query and use the daemon + + http://www.freedesktop.org/wiki/Software/udisks + +comment "udisks needs udev /dev management" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_HAS_UDEV + +comment "udisks needs a toolchain with dynamic library, locale, wchar, threads, gcc >= 7" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_STATIC_LIBS || !BR2_ENABLE_LOCALE || \ + !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 + +comment "udisks can't be built with Optimize for fast" + depends on BR2_OPTIMIZE_FAST + +if BR2_PACKAGE_UDISKS + +config BR2_PACKAGE_UDISKS_FHS_MEDIA + bool "Mount devices in /media instead of /run/media" + help + Support mounting in /media for compatibility with the + Filesystem Hierarchy Standard (FHS) + +endif diff --git a/package/udisks/udisks.hash b/package/udisks/udisks.hash new file mode 100644 index 00000000..66f4be5e --- /dev/null +++ b/package/udisks/udisks.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b75734ccf602540dedb4068bec206adcb508a4c003725e117ae8f994d92d8ece udisks-2.10.1.tar.bz2 +sha256 98046e932dc6c739001e79d7079a3bd958fc55475dcd917d27f884c0c93525cc COPYING diff --git a/package/udisks/udisks.mk b/package/udisks/udisks.mk new file mode 100644 index 00000000..0d63532d --- /dev/null +++ b/package/udisks/udisks.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# udisks +# +################################################################################ + +UDISKS_VERSION = 2.10.1 +UDISKS_SOURCE = udisks-$(UDISKS_VERSION).tar.bz2 +UDISKS_SITE = https://github.com/storaged-project/udisks/releases/download/udisks-$(UDISKS_VERSION) +UDISKS_LICENSE = GPL-2.0+ +UDISKS_LICENSE_FILES = COPYING +UDISKS_CPE_ID_VENDOR = freedesktop +UDISKS_INSTALL_STAGING = YES + +UDISKS_DEPENDENCIES = \ + host-pkgconf \ + dbus \ + dbus-glib \ + libatasmart \ + libblockdev \ + libgudev \ + parted \ + polkit \ + sg3_utils \ + udev \ + util-linux + +UDISKS_CONF_OPTS = \ + --disable-acl \ + --disable-bcache \ + --disable-btrfs \ + --disable-introspection \ + --disable-iscsi \ + --disable-lsm \ + --disable-lvm2 \ + --disable-lvmcache \ + --disable-man \ + --disable-rpath \ + --disable-vdo \ + --disable-zram + +ifeq ($(BR2_PACKAGE_UDISKS_FHS_MEDIA),y) +UDISKS_CONF_OPTS += --enable-fhs-media +else +UDISKS_CONF_OPTS += --disable-fhs-media +endif + +$(eval $(autotools-package)) diff --git a/package/udpcast/0001-fix-musl-build.patch b/package/udpcast/0001-fix-musl-build.patch new file mode 100644 index 00000000..e24f3e9e --- /dev/null +++ b/package/udpcast/0001-fix-musl-build.patch @@ -0,0 +1,32 @@ +fix musl build + +Fix the following musl build failure: + +receivedata.c: In function 'findSlice': +receivedata.c:348:2: error: unknown type name 'ptrdiff_t' + 348 | ptrdiff_t pos = slice - clst->slices; + | ^~~~~~~~~ +receivedata.c:17:1: note: 'ptrdiff_t' is defined in header ''; did you forget to '#include '? + 16 | #include "fec.h" + +++ |+#include + 17 | + +Fixes: + - http://autobuild.buildroot.org/results/30208c6f175967fed6de690447a09e0c86547b24 + +Signed-off-by: Fabrice Fontaine +Upstream: https://udpcast.linux.lu/mailman3/hyperkitty/list/udpcast@udpcast.linux.lu/thread/4MBES2CPUSUNIZTC7NXCQYS2GAE4DQSG/ +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi + +diff '--color=auto' -Nura udpcast-20211207.orig/receivedata.c udpcast-20211207/receivedata.c +--- udpcast-20211207.orig/receivedata.c 2022-08-13 21:48:06.226588614 +0200 ++++ udpcast-20211207/receivedata.c 2022-08-13 21:48:40.242992238 +0200 +@@ -1,6 +1,7 @@ + #include + #include + #include ++#include + #include + #include + diff --git a/package/udpcast/Config.in b/package/udpcast/Config.in new file mode 100644 index 00000000..cc38c6e5 --- /dev/null +++ b/package/udpcast/Config.in @@ -0,0 +1,29 @@ +comment "udpcast needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_UDPCAST + bool "udpcast" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_UDPCAST_SENDER \ + if !BR2_PACKAGE_UDPCAST_RECEIVER + help + A multicast protocol implementation which happens to + be very handy for imaging drives over the network. + + http://www.udpcast.linux.lu/ + +if BR2_PACKAGE_UDPCAST + +config BR2_PACKAGE_UDPCAST_SENDER + bool "sender" + help + The udpcast transmitter. + +config BR2_PACKAGE_UDPCAST_RECEIVER + bool "receiver" + help + The udpcast receiver. + +endif diff --git a/package/udpcast/udpcast.hash b/package/udpcast/udpcast.hash new file mode 100644 index 00000000..aca098d9 --- /dev/null +++ b/package/udpcast/udpcast.hash @@ -0,0 +1,3 @@ +# locally computed hash +sha256 17b5cd8b1e54f7e2e53357ac02ee86e4198bf704096987a03a3b5c402a0ecea1 udpcast-20230924.tar.gz +sha256 422befd3503b1f39a6027017f639874c1f274e37ec60ba3174894646b584ccbc COPYING diff --git a/package/udpcast/udpcast.mk b/package/udpcast/udpcast.mk new file mode 100644 index 00000000..64a0bfbd --- /dev/null +++ b/package/udpcast/udpcast.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# udpcast +# +################################################################################ + +UDPCAST_VERSION = 20230924 +UDPCAST_SITE = http://www.udpcast.linux.lu/download +UDPCAST_DEPENDENCIES = host-m4 +UDPCAST_LICENSE = BSD-2-Clause, GPL-2.0+ +UDPCAST_LICENSE_FILES = COPYING +UDPCAST_TARGETS = \ + $(if $(BR2_PACKAGE_UDPCAST_RECEIVER),udp-receiver) \ + $(if $(BR2_PACKAGE_UDPCAST_SENDER),udp-sender) +UDPCAST_MAKE_OPTS = $(UDPCAST_TARGETS) + +define UDPCAST_INSTALL_TARGET_CMDS + $(foreach f,$(UDPCAST_TARGETS),\ + $(INSTALL) -D -m 755 $(@D)/$(f) $(TARGET_DIR)/usr/sbin/$(f) + ) +endef + +$(eval $(autotools-package)) diff --git a/package/udpxy/Config.in b/package/udpxy/Config.in new file mode 100644 index 00000000..84a754be --- /dev/null +++ b/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. + + https://github.com/pcherenkov/udpxy/ diff --git a/package/udpxy/udpxy.hash b/package/udpxy/udpxy.hash new file mode 100644 index 00000000..e0dbd06a --- /dev/null +++ b/package/udpxy/udpxy.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 a1a16e60895c6b2fd151321db47f5d5373843116f1b98ed9749e6c25a6c44497 udpxy-1.0-25.1.tar.gz +sha256 aac36b21c5afa931fd0e5d796814e29102a3b1f2742fb8694a26ef135aebf943 README diff --git a/package/udpxy/udpxy.mk b/package/udpxy/udpxy.mk new file mode 100644 index 00000000..787f6e58 --- /dev/null +++ b/package/udpxy/udpxy.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# udpxy +# +################################################################################ + +UDPXY_VERSION = 1.0-25.1 +UDPXY_SITE = $(call github,pcherenkov,udpxy,$(UDPXY_VERSION)) +UDPXY_LICENSE = GPL-3.0+ +UDPXY_LICENSE_FILES = README + +define UDPXY_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + ALL_CFLAGS="$(TARGET_CFLAGS)" -C $(@D)/chipmunk +endef + +define UDPXY_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/chipmunk DESTDIR=$(TARGET_DIR) \ + PREFIX=/usr -C $(@D)/chipmunk install +endef + +$(eval $(generic-package)) diff --git a/package/uemacs/01-clear-ixon-termios-flag.patch b/package/uemacs/01-clear-ixon-termios-flag.patch new file mode 100644 index 00000000..dde76420 --- /dev/null +++ b/package/uemacs/01-clear-ixon-termios-flag.patch @@ -0,0 +1,29 @@ +[PATCH] clear ixon termios flag on initialization + +Otherwise ctrl-S/Q gets intercepted by the tty layer instead of +handled by uemacs. + +Signed-off-by: Peter Korsgaard +diff --git a/posix.c b/posix.c +index 97edd9f052b1..352c4712b689 100644 +--- a/posix.c ++++ b/posix.c +@@ -53,17 +53,17 @@ void ttopen(void) + /* + * base new settings on old ones - don't change things + * we don't know about + */ + ntermios = otermios; + + /* raw CR/NL etc input handling, but keep ISTRIP if we're on a 7-bit line */ + ntermios.c_iflag &= ~(IGNBRK | BRKINT | IGNPAR | PARMRK +- | INPCK | INLCR | IGNCR | ICRNL); ++ | INPCK | INLCR | IGNCR | ICRNL | IXON); + + /* raw CR/NR etc output handling */ + ntermios.c_oflag &= + ~(OPOST | ONLCR | OLCUC | OCRNL | ONOCR | ONLRET); + + /* No signal handling, no echo etc */ + ntermios.c_lflag &= ~(ISIG | ICANON | XCASE | ECHO | ECHOE | ECHOK + | ECHONL | NOFLSH | TOSTOP | ECHOCTL | diff --git a/package/uemacs/Config.in b/package/uemacs/Config.in new file mode 100644 index 00000000..cfe98059 --- /dev/null +++ b/package/uemacs/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_UEMACS + bool "uemacs" + select BR2_PACKAGE_NCURSES + help + A small emacs. + + https://git.kernel.org/cgit/editors/uemacs/uemacs.git/ diff --git a/package/uemacs/uemacs.hash b/package/uemacs/uemacs.hash new file mode 100644 index 00000000..cc1d5fe7 --- /dev/null +++ b/package/uemacs/uemacs.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 f262345902e18569efd097f68705cfdfd9c2585dec108019629dd91b835c8ca6 uemacs-1cdcf9df88144049750116e36fe20c8c39fa2517-git4.tar.gz +sha256 6e2a4cf41ec8d4379c154923349733bc0d3935c6fa72c4337cf1bc137b98b90a README diff --git a/package/uemacs/uemacs.mk b/package/uemacs/uemacs.mk new file mode 100644 index 00000000..96868832 --- /dev/null +++ b/package/uemacs/uemacs.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# uemacs +# +################################################################################ + +UEMACS_VERSION = 1cdcf9df88144049750116e36fe20c8c39fa2517 +UEMACS_SITE = https://git.kernel.org/pub/scm/editors/uemacs/uemacs.git +UEMACS_SITE_METHOD = git +UEMACS_DEPENDENCIES = ncurses +UEMACS_LICENSE = MicroEMACS copyright notice +UEMACS_LICENSE_FILES = README + +define UEMACS_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + CC="$(TARGET_CC)" DEFINES="-DAUTOCONF -DPOSIX -DUSG" \ + CFLAGS+="$(TARGET_CFLAGS) " LIBS="$(TARGET_CFLAGS) -lncurses" +endef + +define UEMACS_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/em $(TARGET_DIR)/usr/bin/em +endef + +$(eval $(generic-package)) diff --git a/package/uftp/Config.in b/package/uftp/Config.in new file mode 100644 index 00000000..b88fb03a --- /dev/null +++ b/package/uftp/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_UFTP + bool "uftp" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + help + Encrypted UDP based FTP with multicast. + + http://uftp-multicast.sourceforge.net/ + +comment "uftp needs a toolchain w/ threads, wchar" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/package/uftp/uftp.hash b/package/uftp/uftp.hash new file mode 100644 index 00000000..d4d3450d --- /dev/null +++ b/package/uftp/uftp.hash @@ -0,0 +1,3 @@ +# Locally computed sha256 +sha256 cb8668c19b1f10bc63a16ffa893e205dc3ec86361037d477d8003260ebc40080 uftp-5.0.3.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.txt diff --git a/package/uftp/uftp.mk b/package/uftp/uftp.mk new file mode 100644 index 00000000..3dcd8646 --- /dev/null +++ b/package/uftp/uftp.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# uftp +# +################################################################################ + +UFTP_VERSION = 5.0.3 +UFTP_SITE = https://downloads.sourceforge.net/project/uftp-multicast/source-tar +UFTP_LICENSE = GPL-3.0+ +UFTP_LICENSE_FILES = LICENSE.txt + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +UFTP_DEPENDENCIES += host-pkgconf openssl +UFTP_MAKE_OPTS += CRYPT_LIB="`$(PKG_CONFIG_HOST_BINARY) --libs libcrypto`" +else +UFTP_MAKE_OPTS += NO_ENCRYPTION=1 +endif + +define UFTP_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(UFTP_MAKE_OPTS) +endef + +define UFTP_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(UFTP_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/uftrace/0001-cmds-records-replace-ADDR_NO_RANDOMIZE-by-its-value.patch b/package/uftrace/0001-cmds-records-replace-ADDR_NO_RANDOMIZE-by-its-value.patch new file mode 100644 index 00000000..2855be0d --- /dev/null +++ b/package/uftrace/0001-cmds-records-replace-ADDR_NO_RANDOMIZE-by-its-value.patch @@ -0,0 +1,34 @@ +From dc0a75b1679debbc3712b262e5127e90961f92db Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 23 Apr 2021 22:57:56 +0200 +Subject: [PATCH] cmds/records: replace ADDR_NO_RANDOMIZE by its value + +uClibc-ng lacks the definition of ADDR_NO_RANDOMIZE, causing a build +failure. A patch was submitted to upstream uClibc-ng to address this +issue, but in the mean time, use an hardcoded value. + +Using a #ifdef ... #endif test doesn't work as this value is defined +through an enum in glibc. + +Signed-off-by: Thomas Petazzoni +Upstream: https://github.com/namhyung/uftrace/pull/1389 +--- + cmds/record.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cmds/record.c b/cmds/record.c +index e750f053..fc4eaed4 100644 +--- a/cmds/record.c ++++ b/cmds/record.c +@@ -2110,7 +2110,7 @@ int do_child_exec(int ready, struct opts *opts, + + if (opts->no_randomize_addr) { + /* disable ASLR (Address Space Layout Randomization) */ +- if (personality(ADDR_NO_RANDOMIZE) < 0) ++ if (personality(0x0040000 /* ADDR_NO_RANDOMIZE */) < 0) + pr_dbg("disabling ASLR failed\n"); + } + +-- +2.30.2 + diff --git a/package/uftrace/Config.in b/package/uftrace/Config.in new file mode 100644 index 00000000..8f8c5d25 --- /dev/null +++ b/package/uftrace/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_UFTRACE_ARCH_SUPPORTS + bool + default y if BR2_ARM_CPU_ARMV6 || BR2_ARM_CPU_ARMV7A + default y if BR2_aarch64 + default y if BR2_i386 + default y if BR2_x86_64 + +config BR2_PACKAGE_UFTRACE + bool "uftrace" + depends on BR2_PACKAGE_UFTRACE_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # pthread_setname_np() + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_ARGP_STANDALONE if \ + BR2_TOOLCHAIN_USES_UCLIBC || \ + BR2_TOOLCHAIN_USES_MUSL + help + The uftrace tool is to trace and analyze execution of a + program written in C/C++. It was heavily inspired by the + ftrace framework of the Linux kernel (especially function + graph tracer) and supports userspace programs. + It supports various kind of commands and filters to help + analysis of the program execution and performance. + + https://github.com/namhyung/uftrace + +comment "uftrace needs a toolchain w/ NPTL, dynamic library" + depends on BR2_PACKAGE_UFTRACE_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS diff --git a/package/uftrace/uftrace.hash b/package/uftrace/uftrace.hash new file mode 100644 index 00000000..c4aad390 --- /dev/null +++ b/package/uftrace/uftrace.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 b81255bc288e79e96a5b158d4875fa6425ad51c85f4c4c8523c1defb9366ad12 uftrace-0.14.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/uftrace/uftrace.mk b/package/uftrace/uftrace.mk new file mode 100644 index 00000000..c005a32b --- /dev/null +++ b/package/uftrace/uftrace.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# uftrace +# +################################################################################ + +UFTRACE_VERSION = 0.14 +UFTRACE_SITE = $(call github,namhyung,uftrace,v$(UFTRACE_VERSION)) +UFTRACE_LICENSE = GPL-2.0 +UFTRACE_LICENSE_FILES = COPYING +UFTRACE_CONFIGURE_OPTS = \ + --without-libdw \ + --without-libpython \ + --without-libluajit \ + --without-libncurses \ + --without-capstone + +ifeq ($(BR2_i386),y) +UFTRACE_ARCH = i386 +else +UFTRACE_ARCH = $(BR2_ARCH) +endif + +# Only --without- options are supported. +ifeq ($(BR2_PACKAGE_ELFUTILS),y) +UFTRACE_DEPENDENCIES += elfutils +else +UFTRACE_CONFIGURE_OPTS += --without-libelf +endif + +ifeq ($(BR2_INSTALL_LIBSTDCPP),) +UFTRACE_CONFIGURE_OPTS += --without-libstdc++ +endif + +UFTRACE_LDFLAGS = $(TARGET_LDFLAGS) + +ifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y) +UFTRACE_DEPENDENCIES += argp-standalone +UFTRACE_LDFLAGS += -largp +endif + +define UFTRACE_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) \ + LDFLAGS="$(UFTRACE_LDFLAGS)" \ + ./configure \ + --arch=$(UFTRACE_ARCH) \ + --prefix=/usr \ + $(UFTRACE_CONFIGURE_OPTS) \ + -o $(@D)/.config) +endef + +define UFTRACE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define UFTRACE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/uhd/0001-host-CMakeLists-add-boost-unit_test_framework-requir.patch b/package/uhd/0001-host-CMakeLists-add-boost-unit_test_framework-requir.patch new file mode 100644 index 00000000..4c455d28 --- /dev/null +++ b/package/uhd/0001-host-CMakeLists-add-boost-unit_test_framework-requir.patch @@ -0,0 +1,40 @@ +From 881705ec581ab7cd61c8e4fe134db8854a83ec4e Mon Sep 17 00:00:00 2001 +From: Gwenhael Goavec-Merou +Date: Tue, 28 Apr 2020 16:56:29 +0200 +Subject: [PATCH] host: CMakeLists: add boost unit_test_framework required only + when ENABLE_TESTS=ON + +By default, boost unit_test_framework is always required, but only use +when ENABLE_TESTS=ON. +This PR suppress unit_test_framework to the default list and append +UHD_BOOST_REQUIRED_COMPONENTS when this library is needed + +Signed-off-by: Gwenhael Goavec-Merou +[Fabrice: updated for 4.3.0.0] +Signed-off-by: Fabrice Fontaine +[Upstream status: reverted (https://github.com/EttusResearch/uhd/commit/1a00949b19eaecb84af0f27c370400dc71a9fd84)] +--- + host/CMakeLists.txt | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/host/CMakeLists.txt b/host/CMakeLists.txt +index 8f72ece76..a7731ffbd 100644 +--- a/host/CMakeLists.txt ++++ b/host/CMakeLists.txt +@@ -291,9 +291,12 @@ set(UHD_BOOST_REQUIRED_COMPONENTS + system + serialization + thread +- unit_test_framework + ) + ++if(ENABLE_TESTS) ++ list(APPEND UHD_BOOST_REQUIRED_COMPONENTS unit_test_framework) ++endif(ENABLE_TESTS) ++ + include(UHDBoost) + + include_directories(${Boost_INCLUDE_DIRS}) +-- +2.26.2 + diff --git a/package/uhd/0002-Fix-build-with-GCC-13-add-missing-cstdint-include.patch b/package/uhd/0002-Fix-build-with-GCC-13-add-missing-cstdint-include.patch new file mode 100644 index 00000000..acf720a1 --- /dev/null +++ b/package/uhd/0002-Fix-build-with-GCC-13-add-missing-cstdint-include.patch @@ -0,0 +1,117 @@ +From 3acf784e988608cbce34cd0be0a8703ba53ea515 Mon Sep 17 00:00:00 2001 +From: Sam James +Date: Tue, 3 Jan 2023 23:04:52 +0000 +Subject: [PATCH] Fix build with GCC 13 (add missing include) + +GCC 13 (as usual for new compiler releases) shuffles around some +internal includes and so is no longer transitively included. + +Explicitly include for uint8_t. + +``` +/var/tmp/portage/net-wireless/uhd-4.3.0.0/work/uhd-4.3.0.0/host/include/uhd/rfnoc/defaults.hpp:43:14: error: 'uint32_t' does not name a type + 43 | static const uint32_t DEFAULT_NOC_ID = 0xFFFFFFFF; + | ^~~~~~~~ +/var/tmp/portage/net-wireless/uhd-4.3.0.0/work/uhd-4.3.0.0/host/include/uhd/rfnoc/defaults.hpp:1:1: note: 'uint32_t' is defined in header ''; did you forget to '#include '? + +++ |+#include + 1 | // +``` + +Signed-off-by: Sam James + +Upstream: https://github.com/EttusResearch/uhd/commit/3acf784e988608cbce34cd0be0a8703ba53ea515 +Signed-off-by: Fabrice Fontaine +--- + host/include/uhd/cal/database.hpp | 1 + + host/include/uhd/rfnoc/defaults.hpp | 1 + + host/include/uhd/types/eeprom.hpp | 1 + + host/include/uhd/usrp/zbx_tune_map_item.hpp | 1 + + host/lib/usrp/dboard/magnesium/magnesium_constants.hpp | 1 + + host/lib/usrp/dboard/rhodium/rhodium_constants.hpp | 1 + + host/lib/utils/serial_number.cpp | 1 + + 7 files changed, 7 insertions(+) + +diff --git a/host/include/uhd/cal/database.hpp b/host/include/uhd/cal/database.hpp +index b6abbb6df7..9d47febedd 100644 +--- a/host/include/uhd/cal/database.hpp ++++ b/host/include/uhd/cal/database.hpp +@@ -8,6 +8,7 @@ + + #include + #include ++#include + #include + #include + #include +diff --git a/host/include/uhd/rfnoc/defaults.hpp b/host/include/uhd/rfnoc/defaults.hpp +index aa7778aacf..6c878a8d70 100644 +--- a/host/include/uhd/rfnoc/defaults.hpp ++++ b/host/include/uhd/rfnoc/defaults.hpp +@@ -8,6 +8,7 @@ + + #pragma once + ++#include + #include + + namespace uhd { namespace rfnoc { +diff --git a/host/include/uhd/types/eeprom.hpp b/host/include/uhd/types/eeprom.hpp +index 3a7605d3cb..420440aa64 100644 +--- a/host/include/uhd/types/eeprom.hpp ++++ b/host/include/uhd/types/eeprom.hpp +@@ -6,6 +6,7 @@ + + #pragma once + ++#include + #include + #include + #include +diff --git a/host/include/uhd/usrp/zbx_tune_map_item.hpp b/host/include/uhd/usrp/zbx_tune_map_item.hpp +index e49f49f785..ce95623de2 100644 +--- a/host/include/uhd/usrp/zbx_tune_map_item.hpp ++++ b/host/include/uhd/usrp/zbx_tune_map_item.hpp +@@ -6,6 +6,7 @@ + + #pragma once + #include ++#include + #include + #include + #include +diff --git a/host/lib/usrp/dboard/magnesium/magnesium_constants.hpp b/host/lib/usrp/dboard/magnesium/magnesium_constants.hpp +index 99f2b910c6..99f5a4933f 100644 +--- a/host/lib/usrp/dboard/magnesium/magnesium_constants.hpp ++++ b/host/lib/usrp/dboard/magnesium/magnesium_constants.hpp +@@ -9,6 +9,7 @@ + + #include + #include ++#include + #include + #include + +diff --git a/host/lib/usrp/dboard/rhodium/rhodium_constants.hpp b/host/lib/usrp/dboard/rhodium/rhodium_constants.hpp +index 591d02d305..1577e02d9e 100644 +--- a/host/lib/usrp/dboard/rhodium/rhodium_constants.hpp ++++ b/host/lib/usrp/dboard/rhodium/rhodium_constants.hpp +@@ -9,6 +9,7 @@ + + #include + #include ++#include + #include + #include + +diff --git a/host/lib/utils/serial_number.cpp b/host/lib/utils/serial_number.cpp +index 61296a9139..c07730e24d 100644 +--- a/host/lib/utils/serial_number.cpp ++++ b/host/lib/utils/serial_number.cpp +@@ -5,6 +5,7 @@ + // + + #include ++#include + #include + #include + diff --git a/package/uhd/Config.in b/package/uhd/Config.in new file mode 100644 index 00000000..2ccfe3cc --- /dev/null +++ b/package/uhd/Config.in @@ -0,0 +1,156 @@ +comment "uhd needs a toolchain w/ C++, NPTL, wchar, dynamic library, gcc >= 5" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +comment "uhd needs a toolchain not affected by GCC bug 64735" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + +config BR2_PACKAGE_UHD + bool "uhd" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic, boost-filesystem + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_USE_MMU # use fork() + depends on BR2_USE_WCHAR # boost + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # boost-math + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_ATOMIC + select BR2_PACKAGE_BOOST_CHRONO + select BR2_PACKAGE_BOOST_DATE_TIME + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_BOOST_MATH + select BR2_PACKAGE_BOOST_PROGRAM_OPTIONS + select BR2_PACKAGE_BOOST_SERIALIZATION + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_THREAD + help + Universal Software Radio Peripheral (USRP) Hardware Driver + + https://kb.etthus.com + +if BR2_PACKAGE_UHD + +config BR2_PACKAGE_UHD_B100 + bool "b100 support" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_UHD_USB + help + enable B100 support + +comment "B100 support needs a toolchain w/ gcc >= 4.9" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_UHD_B200 + bool "b200 support" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_UHD_USB + help + enable B200 support + +comment "B200 support needs a toolchain w/ gcc >= 4.9" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_UHD_E300 + bool "E300 support" + select BR2_PACKAGE_UHD_MPMD + help + enable E300 support + +config BR2_PACKAGE_UHD_E320 + bool "E320 support" + select BR2_PACKAGE_UHD_MPMD + help + enable E320 support + +config BR2_PACKAGE_UHD_EXAMPLES + bool "uhd-examples" + help + Examples + +config BR2_PACKAGE_UHD_MPMD + bool "MPMD support" + help + enable MPMD support + +config BR2_PACKAGE_UHD_N300 + bool "N300 support" + select BR2_PACKAGE_UHD_MPMD + help + enable N300 support + +config BR2_PACKAGE_UHD_N320 + bool "N320 support" + select BR2_PACKAGE_UHD_MPMD + help + enable N320 support + +config BR2_PACKAGE_UHD_OCTOCLOCK + bool "OctoClock support" + help + enable OctoClock support + +comment "uhd python API needs python3 and a glibc or musl toolchain w/ gcc >= 9, host gcc >= 9" + depends on !BR2_PACKAGE_PYTHON3 + depends on !BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + depends on !BR2_HOST_GCC_AT_LEAST_9 || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_9 || \ + !(BR2_TOOLCHAIN_USES_GLIBC && BR2_TOOLCHAIN_USES_MUSL) # python-numpy + +config BR2_PACKAGE_UHD_PYTHON + bool "python API support" + depends on BR2_PACKAGE_PYTHON3 + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_9 # python-numpy + depends on BR2_HOST_GCC_AT_LEAST_9 # host-python-numpy + select BR2_PACKAGE_PYTHON_NUMPY + select BR2_PACKAGE_PYTHON_REQUESTS + help + enable python API support + +config BR2_PACKAGE_UHD_USB + bool "USB support" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + enable UHD USB support + +comment "USB support needs a toolchain w/ gcc >= 4.9" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_UHD_USRP1 + bool "USRP1 support" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_UHD_USB + help + enable USRP1 support + +comment "USRP1 support needs a toolchain w/ gcc >= 4.9" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_UHD_USRP2 + bool "USRP2 support" + help + enable USRP2 support + +comment "uhd utils depends on python API support" + depends on !BR2_PACKAGE_UHD_PYTHON + +config BR2_PACKAGE_UHD_UTILS + bool "uhd-utils" + depends on BR2_PACKAGE_UHD_PYTHON + select BR2_PACKAGE_PYTHON_SIX + help + uhd-utils + +config BR2_PACKAGE_UHD_X300 + bool "X300 support" + help + enable X300 support + +endif diff --git a/package/uhd/uhd.hash b/package/uhd/uhd.hash new file mode 100644 index 00000000..3af1bc92 --- /dev/null +++ b/package/uhd/uhd.hash @@ -0,0 +1,5 @@ +# Locally calculated: +sha256 8695800d593c58b557cbf9905b02bbf65a74ca68674e8c8c8c28bb6e203635ad uhd-4.3.0.0.tar.gz +sha256 94cc36ada2641d037980bf6c2418a750ac10a115ae11de5a5cda6177769dbd4c LICENSE.md +sha256 70bf7e79c8cd73a81f97ce81745ea0719a617eebe299a61868165daeae71fff2 host/LICENSE +sha256 206adc03412b6c5b71b9c9df9c1f2e60e11833e89393877d5031fd11d332b1d4 fpga/usrp3/LICENSE.md diff --git a/package/uhd/uhd.mk b/package/uhd/uhd.mk new file mode 100644 index 00000000..a9d711ac --- /dev/null +++ b/package/uhd/uhd.mk @@ -0,0 +1,140 @@ +################################################################################ +# +# uhd +# +################################################################################ + +UHD_VERSION = 4.3.0.0 +UHD_SITE = $(call github,EttusResearch,uhd,v$(UHD_VERSION)) +UHD_LICENSE = GPL-3.0+, LGPL-3.0+ (fpga/usrp3) +UHD_LICENSE_FILES = LICENSE.md host/LICENSE fpga/usrp3/LICENSE.md + +UHD_SUPPORTS_IN_SOURCE_BUILD = NO +UHD_SUBDIR = host +UHD_INSTALL_STAGING = YES + +UHD_DEPENDENCIES = \ + boost \ + host-python3 \ + host-python-mako + +UHD_CONF_OPTS = \ + -DPYTHON_EXECUTABLE=$(HOST_DIR)/bin/python3 \ + -DRUNTIME_PYTHON_EXECUTABLE=/usr/bin/python \ + -DENABLE_C_API=ON \ + -DENABLE_DOXYGEN=OFF \ + -DENABLE_DPDK=OFF \ + -DENABLE_LIBUHD=ON \ + -DENABLE_MANUAL=OFF \ + -DENABLE_MAN_PAGES=OFF \ + -DENABLE_TESTS=OFF + +# As soon as architecture is ARM, uhd will try to use NEON. +# But not all ARM cores have NEON support. +# When CPU support NEON -mfpu=neon must be added to CXX_FLAGS +ifeq ($(BR2_ARM_CPU_HAS_NEON),y) +UHD_CONF_OPTS += -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) -mfpu=neon" +UHD_CONF_OPTS += -DNEON_SIMD_ENABLE=ON +else +UHD_CONF_OPTS += -DNEON_SIMD_ENABLE=OFF +endif + +ifeq ($(BR2_PACKAGE_ORC),y) +UHD_DEPENDENCIES += orc +endif + +ifeq ($(BR2_PACKAGE_UHD_B100),y) +UHD_CONF_OPTS += -DENABLE_B100=ON +else +UHD_CONF_OPTS += -DENABLE_B100=OFF +endif + +ifeq ($(BR2_PACKAGE_UHD_B200),y) +UHD_CONF_OPTS += -DENABLE_B200=ON +else +UHD_CONF_OPTS += -DENABLE_B200=OFF +endif + +ifeq ($(BR2_PACKAGE_UHD_E300),y) +UHD_CONF_OPTS += -DENABLE_E300=ON +else +UHD_CONF_OPTS += -DENABLE_E300=OFF +endif + +ifeq ($(BR2_PACKAGE_UHD_E320),y) +UHD_CONF_OPTS += -DENABLE_E320=ON +else +UHD_CONF_OPTS += -DENABLE_E320=OFF +endif + +ifeq ($(BR2_PACKAGE_UHD_EXAMPLES),y) +UHD_CONF_OPTS += -DENABLE_EXAMPLES=ON +else +UHD_CONF_OPTS += -DENABLE_EXAMPLES=OFF +endif + +ifeq ($(BR2_PACKAGE_UHD_MPMD),y) +UHD_CONF_OPTS += -DENABLE_MPMD=ON +else +UHD_CONF_OPTS += -DENABLE_MPMD=OFF +endif + +ifeq ($(BR2_PACKAGE_UHD_N300),y) +UHD_CONF_OPTS += -DENABLE_N300=ON +else +UHD_CONF_OPTS += -DENABLE_N300=OFF +endif + +ifeq ($(BR2_PACKAGE_UHD_N320),y) +UHD_CONF_OPTS += -DENABLE_N320=ON +else +UHD_CONF_OPTS += -DENABLE_N320=OFF +endif + +ifeq ($(BR2_PACKAGE_UHD_OCTOCLOCK),y) +UHD_CONF_OPTS += -DENABLE_OCTOCLOCK=ON +else +UHD_CONF_OPTS += -DENABLE_OCTOCLOCK=OFF +endif + +ifeq ($(BR2_PACKAGE_UHD_PYTHON),y) +UHD_DEPENDENCIES += host-python-numpy host-python-requests \ + python-numpy python-requests +UHD_CONF_OPTS += -DENABLE_PYTHON_API=ON +else +UHD_CONF_OPTS += -DENABLE_PYTHON_API=OFF +endif + +ifeq ($(BR2_PACKAGE_UHD_USB),y) +UHD_DEPENDENCIES += libusb +UHD_CONF_OPTS += -DENABLE_USB=ON +else +UHD_CONF_OPTS += -DENABLE_USB=OFF +endif + +ifeq ($(BR2_PACKAGE_UHD_USRP1),y) +UHD_CONF_OPTS += -DENABLE_USRP1=ON +else +UHD_CONF_OPTS += -DENABLE_USRP1=OFF +endif + +ifeq ($(BR2_PACKAGE_UHD_USRP2),y) +UHD_CONF_OPTS += -DENABLE_USRP2=ON +else +UHD_CONF_OPTS += -DENABLE_USRP2=OFF +endif + +ifeq ($(BR2_PACKAGE_UHD_UTILS),y) +UHD_DEPENDENCIES += python-six +UHD_CONF_OPTS += -DENABLE_UTILS=ON +else +UHD_CONF_OPTS += -DENABLE_UTILS=OFF +endif + +ifeq ($(BR2_PACKAGE_UHD_X300),y) +UHD_CONF_OPTS += -DENABLE_X300=ON +else +UHD_CONF_OPTS += -DENABLE_X300=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/uhttpd/0001-Remove-Werror.patch b/package/uhttpd/0001-Remove-Werror.patch new file mode 100644 index 00000000..67028cfa --- /dev/null +++ b/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/package/uhttpd/0002-Fix-TCP_FASTOPEN-related-compile-error.patch b/package/uhttpd/0002-Fix-TCP_FASTOPEN-related-compile-error.patch new file mode 100644 index 00000000..fb3ff54a --- /dev/null +++ b/package/uhttpd/0002-Fix-TCP_FASTOPEN-related-compile-error.patch @@ -0,0 +1,30 @@ +From adbab70d3602d77736781be344cfdc5508cb0600 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Mon, 3 Apr 2017 19:22:30 +0200 +Subject: [PATCH] Fix TCP_FASTOPEN related compile error. + +Signed-off-by: Peter Seiderer +--- + listen.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/listen.c b/listen.c +index 2a54888..4dabe34 100644 +--- a/listen.c ++++ b/listen.c +@@ -96,6 +96,12 @@ static void listener_cb(struct uloop_fd *fd, unsigned int events) + uh_block_listener(l); + } + ++#ifdef linux ++#ifndef TCP_FASTOPEN ++#define TCP_FASTOPEN 23 ++#endif ++#endif ++ + void uh_setup_listeners(void) + { + struct listener *l; +-- +2.11.0 + diff --git a/package/uhttpd/Config.in b/package/uhttpd/Config.in new file mode 100644 index 00000000..eeb169a9 --- /dev/null +++ b/package/uhttpd/Config.in @@ -0,0 +1,19 @@ +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 + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + 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/package/uhttpd/uhttpd.hash b/package/uhttpd/uhttpd.hash new file mode 100644 index 00000000..e84d2dc3 --- /dev/null +++ b/package/uhttpd/uhttpd.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 397aa4bccc4acb06031270d4a549fb266fec3950a88fe3523f0d7de74caff010 uhttpd-15346de8d3ba422002496526ee24c62a3601ab8c-git4.tar.gz +sha256 ce1803f83f776cc88661e303fede0e5ff52faf1d9f74508fadbecf7705b4c84d uhttpd.h diff --git a/package/uhttpd/uhttpd.mk b/package/uhttpd/uhttpd.mk new file mode 100644 index 00000000..f4fcccfa --- /dev/null +++ b/package/uhttpd/uhttpd.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# uhttpd +# +################################################################################ + +UHTTPD_VERSION = 15346de8d3ba422002496526ee24c62a3601ab8c +UHTTPD_SITE = https://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_LIBXCRYPT),y) +UHTTPD_DEPENDENCIES += libxcrypt +endif + +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/package/uhubctl/Config.in b/package/uhubctl/Config.in new file mode 100644 index 00000000..52b0268a --- /dev/null +++ b/package/uhubctl/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_UHUBCTL + bool "uhubctl" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + Control USB power per-port on smart USB hubs. + + https://github.com/mvp/uhubctl + +comment "uhubctl needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/uhubctl/uhubctl.hash b/package/uhubctl/uhubctl.hash new file mode 100644 index 00000000..8a4581b8 --- /dev/null +++ b/package/uhubctl/uhubctl.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 d4452252f7862f7a45dd9c62f2ea7cd3a57ab5f5ab0e54a857d4c695699bbba3 uhubctl-2.5.0.tar.gz +sha256 5eb09049fafa91347386daf769223ba2ee6914cb26ab95b86854ad6edea49b5d LICENSE +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/uhubctl/uhubctl.mk b/package/uhubctl/uhubctl.mk new file mode 100644 index 00000000..f9815409 --- /dev/null +++ b/package/uhubctl/uhubctl.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# uhubctl +# +################################################################################ + +UHUBCTL_VERSION = 2.5.0 +UHUBCTL_SITE = $(call github,mvp,uhubctl,v$(UHUBCTL_VERSION)) +UHUBCTL_LICENSE = GPL-2.0 +UHUBCTL_LICENSE_FILES = LICENSE COPYING +UHUBCTL_DEPENDENCIES = libusb + +define UHUBCTL_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) GIT_VERSION=v$(UHUBCTL_VERSION) -C $(@D) +endef + +define UHUBCTL_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) DESTDIR=$(TARGET_DIR) \ + $(MAKE) -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/ulog/Config.in b/package/ulog/Config.in new file mode 100644 index 00000000..ef155005 --- /dev/null +++ b/package/ulog/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_ULOG + bool "ulog" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + This is a minimalistic logging library derived from + Android logger. + + https://github.com/Parrot-Developers/ulog + +comment "ulog needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/ulog/ulog.hash b/package/ulog/ulog.hash new file mode 100644 index 00000000..47adc093 --- /dev/null +++ b/package/ulog/ulog.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 14e5773b32a79fa5380bdc7ac73a39a7cd3ab182830f57cf6f2994fb49cf38dc ulog-0389d243352255f6182326dccdae3d56dadc078f.tar.gz +sha256 cbb97dd2528af2aa2b9aee6c1b3ff1caed758044c17b2c811cf44b2528c496da COPYING diff --git a/package/ulog/ulog.mk b/package/ulog/ulog.mk new file mode 100644 index 00000000..8e8b1aa1 --- /dev/null +++ b/package/ulog/ulog.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# ulog +# +################################################################################ + +ULOG_VERSION = 0389d243352255f6182326dccdae3d56dadc078f +ULOG_SITE = $(call github,Parrot-Developers,ulog,$(ULOG_VERSION)) +ULOG_LICENSE = Apache-2.0 +ULOG_LICENSE_FILES = COPYING +ULOG_DEPENDENCIES = host-alchemy +ULOG_INSTALL_STAGING = YES + +define ULOG_BUILD_CMDS + $(ALCHEMY_TARGET_ENV) $(ALCHEMY_MAKE) libulog +endef + +ifeq ($(BR2_SHARED_LIBS),) +define ULOG_INSTALL_STATIC_LIBS + $(INSTALL) -D -m 644 $(@D)/alchemy-out/staging/usr/lib/libulog.a \ + $(STAGING_DIR)/usr/lib/libulog.a +endef +endif + +ifeq ($(BR2_STATIC_LIBS),) +# $(1): destination directory: target or staging +define ULOG_INSTALL_SHARED_LIBS + mkdir -p $(1)/usr/lib/ + $(INSTALL) -m 644 $(@D)/alchemy-out/staging/usr/lib/libulog.so* \ + $(1)/usr/lib/ +endef +endif + +define ULOG_INSTALL_TARGET_CMDS + $(call ULOG_INSTALL_SHARED_LIBS, $(TARGET_DIR)) +endef + +define ULOG_INSTALL_STAGING_CMDS + mkdir -p $(STAGING_DIR)/usr/include/ + $(INSTALL) -m 644 $(@D)/libulog/include/* $(STAGING_DIR)/usr/include/ + $(ULOG_INSTALL_STATIC_LIBS) + $(call ULOG_INSTALL_SHARED_LIBS, $(STAGING_DIR)) + $(call ALCHEMY_INSTALL_LIB_SDK_FILE, libulog, libulog.so) +endef + +$(eval $(generic-package)) diff --git a/package/ulogd/Config.in b/package/ulogd/Config.in new file mode 100644 index 00000000..6631076a --- /dev/null +++ b/package/ulogd/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_ULOGD + bool "ulogd" + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU + select BR2_PACKAGE_LIBMNL + select BR2_PACKAGE_LIBNETFILTER_ACCT + select BR2_PACKAGE_LIBNETFILTER_CONNTRACK + select BR2_PACKAGE_LIBNETFILTER_LOG + select BR2_PACKAGE_LIBNFNETLINK + help + ulogd is a userspace logging daemon for netfilter/iptables + related logging. + + https://www.netfilter.org/projects/ulogd/ + +comment "ulogd needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + depends on BR2_USE_MMU diff --git a/package/ulogd/ulogd.hash b/package/ulogd/ulogd.hash new file mode 100644 index 00000000..8d729aeb --- /dev/null +++ b/package/ulogd/ulogd.hash @@ -0,0 +1,5 @@ +# From https://www.netfilter.org/projects/ulogd/files/ulogd-2.0.8.tar.bz2.sha256sum +sha256 4ead6c3970c3f57fa1e89fe2d7cc483ba6fe2bd1b08701521e0b3afd667df291 ulogd-2.0.8.tar.bz2 + +# Locally calculated +sha256 b8a2f73f743dc1a51aff23f1aacbca4b868564db52496fa3c0caba755bfd1eaf COPYING diff --git a/package/ulogd/ulogd.mk b/package/ulogd/ulogd.mk new file mode 100644 index 00000000..8ef8ec57 --- /dev/null +++ b/package/ulogd/ulogd.mk @@ -0,0 +1,67 @@ +################################################################################ +# +# ulogd +# +################################################################################ + +ULOGD_VERSION = 2.0.8 +ULOGD_SOURCE = ulogd-$(ULOGD_VERSION).tar.bz2 +ULOGD_SITE = https://www.netfilter.org/projects/ulogd/files +ULOGD_DEPENDENCIES = host-pkgconf \ + libmnl libnetfilter_acct libnetfilter_conntrack libnetfilter_log \ + libnfnetlink +ULOGD_LICENSE = GPL-2.0 +ULOGD_LICENSE_FILES = COPYING +ULOGD_SELINUX_MODULES = ulogd + +# DB backends need threads +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +ifeq ($(BR2_PACKAGE_LIBDBI),y) +ULOGD_CONF_OPTS += --enable-dbi +ULOGD_DEPENDENCIES += libdbi +else +ULOGD_CONF_OPTS += --disable-dbi +endif +ifeq ($(BR2_PACKAGE_MARIADB),y) +ULOGD_CONF_OPTS += \ + --enable-mysql \ + --with-mysql-config=$(STAGING_DIR)/usr/bin/mysql_config +ULOGD_DEPENDENCIES += mariadb +else +ULOGD_CONF_OPTS += --disable-mysql +endif +ifeq ($(BR2_PACKAGE_POSTGRESQL),y) +ULOGD_CONF_OPTS += --enable-pgsql +ULOGD_DEPENDENCIES += postgresql +else +ULOGD_CONF_OPTS += --disable-pgsql +endif +ifeq ($(BR2_PACKAGE_SQLITE),y) +ULOGD_CONF_OPTS += --enable-sqlite3 +ULOGD_DEPENDENCIES += sqlite +else +ULOGD_CONF_OPTS += --disable-sqlite3 +endif +else +ULOGD_CONF_OPTS += \ + --disable-dbi \ + --disable-mysql \ + --disable-pgsql \ + --disable-sqlite3 +endif + +ifeq ($(BR2_PACKAGE_LIBPCAP),y) +ULOGD_CONF_OPTS += --enable-pcap +ULOGD_DEPENDENCIES += libpcap +else +ULOGD_CONF_OPTS += --disable-pcap +endif + +ifeq ($(BR2_PACKAGE_JANSSON),y) +ULOGD_CONF_OPTS += --enable-json +ULOGD_DEPENDENCIES += jansson +else +ULOGD_CONF_OPTS += --disable-json +endif + +$(eval $(autotools-package)) diff --git a/package/umtprd/0001-Fix-output_dir-make-dependency.patch b/package/umtprd/0001-Fix-output_dir-make-dependency.patch new file mode 100644 index 00000000..fcbca6b0 --- /dev/null +++ b/package/umtprd/0001-Fix-output_dir-make-dependency.patch @@ -0,0 +1,46 @@ +From d84216a678edaca81c0899318231cdcca2100d38 Mon Sep 17 00:00:00 2001 +From: James Hilliard +Date: Mon, 17 Oct 2022 16:39:56 -0600 +Subject: [PATCH] Fix output_dir make dependency + +Object file targets need to depend on the output_dir target. + +Fixes: +make --shuffle=reverse -j1 +cc -o obj/mtp_op_truncateobject.o src/mtp_operations/mtp_op_truncateobject.c -c -I./inc -lpthread -Wall -O3 +Assembler messages: +Fatal error: can't create obj/mtp_op_truncateobject.o: No such file or directory +make: *** [Makefile:19: obj/mtp_op_truncateobject.o] Error 1 shuffle=reverse + +[paul@crapouillou.net: Backport from upstream commit d84216a] +Signed-off-by: Paul Cercueil +--- + Makefile | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/Makefile b/Makefile +index 7c98b63..c28e186 100644 +--- a/Makefile ++++ b/Makefile +@@ -7,15 +7,15 @@ objects := $(sources:src/%.c=obj/%.o) + ops_sources := $(wildcard src/mtp_operations/*.c) + ops_objects := $(ops_sources:src/mtp_operations/%.c=obj/%.o) + +-all: output_dir umtprd ++all: umtprd + + umtprd: $(objects) $(ops_objects) + ${CC} -o $@ $^ $(LDFLAGS) -lpthread + +-$(objects): obj/%.o: src/%.c ++$(objects): obj/%.o: src/%.c | output_dir + ${CC} -o $@ $^ -c $(CPPFLAGS) $(CFLAGS) + +-$(ops_objects): obj/%.o: src/mtp_operations/%.c ++$(ops_objects): obj/%.o: src/mtp_operations/%.c | output_dir + ${CC} -o $@ $^ -c $(CPPFLAGS) $(CFLAGS) + + output_dir: +-- +2.35.1 + diff --git a/package/umtprd/Config.in b/package/umtprd/Config.in new file mode 100644 index 00000000..24bf1195 --- /dev/null +++ b/package/umtprd/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_UMTPRD + bool "umtprd" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15 + help + Lightweight USB MTP responder daemon for GNU/Linux + + https://github.com/viveris/uMTP-Responder + +comment "umtprd needs a toolchain w/ threads, headers >= 3.15" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15 diff --git a/package/umtprd/umtprd.hash b/package/umtprd/umtprd.hash new file mode 100644 index 00000000..7cd75619 --- /dev/null +++ b/package/umtprd/umtprd.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 1de40511c1dd4618719cff2058dfe68a595f1b9284c80afa89d6d1a1c80aec29 umtprd-1.6.2.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE diff --git a/package/umtprd/umtprd.mk b/package/umtprd/umtprd.mk new file mode 100644 index 00000000..c5e0ee51 --- /dev/null +++ b/package/umtprd/umtprd.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# umtprd +# +################################################################################ + +UMTPRD_VERSION = 1.6.2 +UMTPRD_SITE = https://github.com/viveris/uMTP-Responder/archive +UMTPRD_LICENSE = GPL-3.0+ +UMTPRD_LICENSE_FILES = LICENSE + +define UMTPRD_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define UMTPRD_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/umtprd $(TARGET_DIR)/usr/sbin/umtprd +endef + +$(eval $(generic-package)) diff --git a/package/unbound/Config.in b/package/unbound/Config.in new file mode 100644 index 00000000..c8d69711 --- /dev/null +++ b/package/unbound/Config.in @@ -0,0 +1,39 @@ +config BR2_PACKAGE_UNBOUND + bool "unbound" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_LIBEVENT + select BR2_PACKAGE_LIBOPENSSL_ENGINES if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_OPENSSL + help + Unbound is a validating, recursive, and caching DNS resolver. + It supports DNSSEC, QNAME minimisation, DNS-over-TLS and + DNSCrypt. + + https://www.unbound.net + +if BR2_PACKAGE_UNBOUND +config BR2_PACKAGE_UNBOUND_DNSCRYPT + bool "enable DNSCrypt" + select BR2_PACKAGE_LIBSODIUM + help + DNSCrypt wraps unmodified DNS queries between a client and + a DNS resolver. Default port used is 443 and like with + normal unencrypted DNS, it uses UDP first and falling back + to TCP if response too large. + + There is also DNS-over-TLS, a TCP only version + of proposed standard for DNS encryption (RFC 7858). + Default port for DNS-over-TLS is 853 and Unbound has + built-in support for it. + + https://tools.ietf.org/html/rfc7858 + + Note: Neither DNSCrypt or DNS-over-TLS encrypt the SNI. + Here is some suggestions how to handle SNI encryption: + + https://tools.ietf.org/html/draft-ietf-tls-sni-encryption-00 +endif + +comment "unbound needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/unbound/S70unbound b/package/unbound/S70unbound new file mode 100644 index 00000000..cb722ce2 --- /dev/null +++ b/package/unbound/S70unbound @@ -0,0 +1,52 @@ +#!/bin/sh + +DAEMON="unbound" +PIDFILE="/var/run/$DAEMON.pid" + +UNBOUND_ARGS="" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + start-stop-daemon -S -q -p "$PIDFILE" -x "/usr/sbin/$DAEMON" \ + -- $UNBOUND_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/unbound/unbound.hash b/package/unbound/unbound.hash new file mode 100644 index 00000000..ba876299 --- /dev/null +++ b/package/unbound/unbound.hash @@ -0,0 +1,8 @@ +# From https://nlnetlabs.nl/downloads/unbound/unbound-1.21.0.tar.gz.sha256 +# After checking pgp signature from: +# https://nlnetlabs.nl/downloads/unbound/unbound-1.21.0.tar.gz.asc +# with key: EDFAA3F2CA4E6EB05681AF8E9F6F1C2D7E045F8D +sha256 e7dca7d6b0f81bdfa6fa64ebf1053b5a999a5ae9278a87ef182425067ea14521 unbound-1.21.0.tar.gz + +# Locally calculated +sha256 8eb9a16cbfb8703090bbfa3a2028fd46bb351509a2f90dc1001e51fbe6fd45db LICENSE diff --git a/package/unbound/unbound.mk b/package/unbound/unbound.mk new file mode 100644 index 00000000..8677cb4d --- /dev/null +++ b/package/unbound/unbound.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# unbound +# +################################################################################ + +UNBOUND_VERSION = 1.21.0 +UNBOUND_SITE = https://nlnetlabs.nl/downloads/unbound +UNBOUND_INSTALL_STAGING = YES +UNBOUND_DEPENDENCIES = host-pkgconf expat libevent openssl +UNBOUND_LICENSE = BSD-3-Clause +UNBOUND_LICENSE_FILES = LICENSE +UNBOUND_CPE_ID_VENDOR = nlnetlabs +UNBOUND_CONF_OPTS = \ + --disable-rpath \ + --disable-debug \ + --with-conf-file=/etc/unbound/unbound.conf \ + --with-pidfile=/var/run/unbound.pid \ + --with-rootkey-file=/etc/unbound/root.key \ + --enable-tfo-server \ + --with-libevent=$(STAGING_DIR)/usr \ + --with-libexpat=$(STAGING_DIR)/usr \ + --with-ssl=$(STAGING_DIR)/usr + +# uClibc-ng does not have MSG_FASTOPEN +# so TCP Fast Open client mode disabled for it +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +UNBOUND_CONF_OPTS += --disable-tfo-client +else +UNBOUND_CONF_OPTS += --enable-tfo-client +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS_NPTL),y) +UNBOUND_CONF_OPTS += --with-pthreads +else +UNBOUND_CONF_OPTS += --without-pthreads +endif + +ifeq ($(BR2_ENABLE_LTO),y) +UNBOUND_CONF_OPTS += --enable-flto +else +UNBOUND_CONF_OPTS += --disable-flto +endif + +ifeq ($(BR2_PACKAGE_UNBOUND_DNSCRYPT),y) +UNBOUND_CONF_OPTS += --enable-dnscrypt +UNBOUND_DEPENDENCIES += libsodium +else +UNBOUND_CONF_OPTS += --disable-dnscrypt +endif + +define UNBOUND_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/unbound/S70unbound \ + $(TARGET_DIR)/etc/init.d/S70unbound +endef + +define UNBOUND_USERS + unbound -1 unbound -1 * /etc/unbound - - unbound daemon +endef + +$(eval $(autotools-package)) diff --git a/package/unclutter-xfixes/Config.in b/package/unclutter-xfixes/Config.in new file mode 100644 index 00000000..852a8cfd --- /dev/null +++ b/package/unclutter-xfixes/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_UNCLUTTER_XFIXES + bool "unclutter-xfixes" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_LIBEV + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXFIXES + select BR2_PACKAGE_XLIB_LIBXI + help + Remove idle cursor image from screen. + + A rewrite of unclutter using the x11-xfixes extension. + + https://github.com/Airblader/unclutter-xfixes diff --git a/package/unclutter-xfixes/unclutter-xfixes.hash b/package/unclutter-xfixes/unclutter-xfixes.hash new file mode 100644 index 00000000..b0bd5532 --- /dev/null +++ b/package/unclutter-xfixes/unclutter-xfixes.hash @@ -0,0 +1,3 @@ +# locally calculated +sha256 6f7f248f16b7d4ec7cb144b6bc5a66bd49078130513a184f4dc16c498d457db9 unclutter-xfixes-1.6.tar.gz +sha256 33e94693849b57fdb34987c95fd0076b4aa4b70fcd9a3152313d00b86a3f7bf7 LICENSE diff --git a/package/unclutter-xfixes/unclutter-xfixes.mk b/package/unclutter-xfixes/unclutter-xfixes.mk new file mode 100644 index 00000000..6da607b6 --- /dev/null +++ b/package/unclutter-xfixes/unclutter-xfixes.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# unclutter-xfixes +# +################################################################################ + +UNCLUTTER_XFIXES_VERSION = 1.6 +UNCLUTTER_XFIXES_SITE = $(call github,Airblader,unclutter-xfixes,v$(UNCLUTTER_XFIXES_VERSION)) +UNCLUTTER_XFIXES_LICENSE = MIT +UNCLUTTER_XFIXES_LICENSE_FILES = LICENSE +UNCLUTTER_XFIXES_DEPENDENCIES = libev xlib_libX11 xlib_libXfixes xlib_libXi host-pkgconf + +define UNCLUTTER_XFIXES_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \ + $(MAKE) -C $(@D) unclutter CC="$(TARGET_CC)" +endef + +define UNCLUTTER_XFIXES_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/unclutter $(TARGET_DIR)/usr/bin/unclutter +endef + +$(eval $(generic-package)) diff --git a/package/unifdef/0001-Makefile-fix-error-on-install.patch b/package/unifdef/0001-Makefile-fix-error-on-install.patch new file mode 100644 index 00000000..c959a41c --- /dev/null +++ b/package/unifdef/0001-Makefile-fix-error-on-install.patch @@ -0,0 +1,31 @@ +From b5e4229918c13bc0c11a523105cdb3a464337b37 Mon Sep 17 00:00:00 2001 +From: Thomas Devoogdt +Date: Mon, 12 Dec 2022 12:59:59 +0100 +Subject: [PATCH] Makefile: fix error on install + +ln: failed to create symbolic link '/home/thomas/Documents/buildroot/output/host/share/man/man1/unifdefall.1': File exists + +Seen while trying to add this package to buildroot.org. + +(upstream: https://github.com/fanf2/unifdef/pull/16) +Signed-off-by: Thomas Devoogdt +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 36c7028..485927a 100644 +--- a/Makefile ++++ b/Makefile +@@ -28,7 +28,7 @@ install: unifdef unifdefall.sh unifdef.1 + : manual + install -m 755 -d ${man1dest} + install -m 644 unifdef.1 ${man1dest}/ +- ln -s unifdef.1 ${man1dest}/unifdefall.1 ++ ln -f -s unifdef.1 ${man1dest}/unifdefall.1 + + clean: + rm -f unifdef version.h +-- +2.38.1 + diff --git a/package/unifdef/Config.in b/package/unifdef/Config.in new file mode 100644 index 00000000..a1a44d9f --- /dev/null +++ b/package/unifdef/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_UNIFDEF + bool "unifdef" + help + The unifdef utility selectively processes conditional C + preprocessor #if and #ifdef directives. It removes from a file + both the #directives and the additional text that they + delimit, while otherwise leaving the file alone. + + http://dotat.at/prog/unifdef/ diff --git a/package/unifdef/unifdef.hash b/package/unifdef/unifdef.hash new file mode 100644 index 00000000..c3a6b746 --- /dev/null +++ b/package/unifdef/unifdef.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 fba564a24db7b97ebe9329713ac970627b902e5e9e8b14e19e024eb6e278d10b unifdef-2.12.tar.gz +sha256 37ed46a39446b15b08af418fda23b75c27a769d5aad236d817ee7522cc9caeee COPYING diff --git a/package/unifdef/unifdef.mk b/package/unifdef/unifdef.mk new file mode 100644 index 00000000..6761e32b --- /dev/null +++ b/package/unifdef/unifdef.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# unifdef +# +################################################################################ + +UNIFDEF_VERSION = 2.12 +UNIFDEF_SITE = https://dotat.at/prog/unifdef +UNIFDEF_LICENSE = BSD-2-Clause, BSD-3-Clause +UNIFDEF_LICENSE_FILES = COPYING + +define UNIFDEF_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define UNIFDEF_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) prefix=$(TARGET_DIR) install +endef + +define HOST_UNIFDEF_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define HOST_UNIFDEF_INSTALL_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) prefix=$(HOST_DIR) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/unionfs/Config.in b/package/unionfs/Config.in new file mode 100644 index 00000000..fe03b95f --- /dev/null +++ b/package/unionfs/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_UNIONFS + bool "unionfs (FUSE)" + depends on BR2_TOOLCHAIN_HAS_THREADS # libfuse + depends on BR2_USE_MMU # libfuse + depends on !BR2_STATIC_LIBS # libfuse + select BR2_PACKAGE_LIBFUSE + help + A userspace unionfs implementation. + + https://github.com/rpodgorny/unionfs-fuse + +comment "unionfs needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/unionfs/unionfs.hash b/package/unionfs/unionfs.hash new file mode 100644 index 00000000..7c4a9f4f --- /dev/null +++ b/package/unionfs/unionfs.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 f56a5579d670e18e0667700bc599acbc0b8217ca1f76b2adb3dad7d2953c4049 LICENSE +sha256 c705072a33a18cbc73ffe799331d43410b6deef5d6f2042038f8fd3ab17b6e2e unionfs-2.1.tar.gz diff --git a/package/unionfs/unionfs.mk b/package/unionfs/unionfs.mk new file mode 100644 index 00000000..12cd368f --- /dev/null +++ b/package/unionfs/unionfs.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# unionfs +# +################################################################################ + +UNIONFS_VERSION = 2.1 +UNIONFS_SITE = $(call github,rpodgorny,unionfs-fuse,v$(UNIONFS_VERSION)) +UNIONFS_DEPENDENCIES = libfuse host-pkgconf +UNIONFS_LICENSE = BSD-3-Clause +UNIONFS_LICENSE_FILES = LICENSE + +$(eval $(cmake-package)) diff --git a/package/unixodbc/0001-PostgreSQL-driver-Fix-incompatible-pointer-to-intege.patch b/package/unixodbc/0001-PostgreSQL-driver-Fix-incompatible-pointer-to-intege.patch new file mode 100644 index 00000000..8efe6dae --- /dev/null +++ b/package/unixodbc/0001-PostgreSQL-driver-Fix-incompatible-pointer-to-intege.patch @@ -0,0 +1,49 @@ +From 45f501e1be2db6b017cc242c79bfb9de32b332a1 Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Mon, 29 Jan 2024 08:27:29 +0100 +Subject: [PATCH] PostgreSQL driver: Fix incompatible pointer-to-integer types + +These result in out-of-bounds stack writes on 64-bit architectures +(caller has 4 bytes, callee writes 8 bytes), and seem to have gone +unnoticed on little-endian architectures (although big-endian +architectures must be broken). + +This change is required to avoid a build failure with GCC 14. + +Upstream: https://github.com/lurcher/unixODBC/commit/45f501e1be2db6b017cc242c79bfb9de32b332a1 + +Signed-off-by: Bernd Kuhls +--- + Drivers/Postgre7.1/info.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/Drivers/Postgre7.1/info.c b/Drivers/Postgre7.1/info.c +index 63ac91f..2216ecd 100644 +--- a/Drivers/Postgre7.1/info.c ++++ b/Drivers/Postgre7.1/info.c +@@ -1779,14 +1779,14 @@ char *table_name; + char index_name[MAX_INFO_STRING]; + short fields_vector[8]; + char isunique[10], isclustered[10]; +-SDWORD index_name_len, fields_vector_len; ++SQLLEN index_name_len, fields_vector_len; + TupleNode *row; + int i; + HSTMT hcol_stmt; + StatementClass *col_stmt, *indx_stmt; + char column_name[MAX_INFO_STRING], relhasrules[MAX_INFO_STRING]; + char **column_names = 0; +-Int4 column_name_len; ++SQLLEN column_name_len; + int total_columns = 0; + char error = TRUE; + ConnInfo *ci; +@@ -2136,7 +2136,7 @@ HSTMT htbl_stmt; + StatementClass *tbl_stmt; + char tables_query[STD_STATEMENT_LEN]; + char attname[MAX_INFO_STRING]; +-SDWORD attname_len; ++SQLLEN attname_len; + char pktab[MAX_TABLE_LEN + 1]; + Int2 result_cols; + diff --git a/package/unixodbc/Config.in b/package/unixodbc/Config.in new file mode 100644 index 00000000..eb0ad9c5 --- /dev/null +++ b/package/unixodbc/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_UNIXODBC + bool "unixodbc" + depends on !BR2_STATIC_LIBS # dlopen() + help + The unixODBC Project goals are to develop and promote + unixODBC to be the definitive standard for ODBC on non MS + Windows platforms. + + http://www.unixodbc.org + +comment "unixodbc needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/package/unixodbc/unixodbc.hash b/package/unixodbc/unixodbc.hash new file mode 100644 index 00000000..6262dab5 --- /dev/null +++ b/package/unixodbc/unixodbc.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 f210501445ce21bf607ba51ef8c125e10e22dffdffec377646462df5f01915ec unixODBC-2.3.12.tar.gz +sha256 a6b9aa1e9bfade121164c06fd975e9b913a8e38bf33d25ff967dfa3ed07d12f8 COPYING +sha256 1e594f4c7fd6d099eca4bd1340b39d871ce0298331d8ebd4b68935548ee45cf4 exe/COPYING diff --git a/package/unixodbc/unixodbc.mk b/package/unixodbc/unixodbc.mk new file mode 100644 index 00000000..28f1e5bc --- /dev/null +++ b/package/unixodbc/unixodbc.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# unixodbc +# +################################################################################ + +UNIXODBC_VERSION = 2.3.12 +UNIXODBC_SOURCE = unixODBC-$(UNIXODBC_VERSION).tar.gz +UNIXODBC_SITE = http://www.unixodbc.org +UNIXODBC_INSTALL_STAGING = YES +UNIXODBC_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (programs) +UNIXODBC_LICENSE_FILES = COPYING exe/COPYING +UNIXODBC_CPE_ID_VENDOR = unixodbc + +UNIXODBC_CONF_OPTS = --enable-drivers --enable-driver-conf + +ifeq ($(BR2_PACKAGE_LIBEDIT),y) +UNIXODBC_CONF_OPTS += --enable-editline +UNIXODBC_DEPENDENCIES += libedit +else +UNIXODBC_CONF_OPTS += --disable-editline +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +UNIXODBC_CONF_OPTS += --enable-iconv +UNIXODBC_DEPENDENCIES += libiconv +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 +else +UNIXODBC_CONF_OPTS += --disable-readline +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +UNIXODBC_CONF_OPTS += --enable-threads +else +UNIXODBC_CONF_OPTS += --disable-threads +endif + +$(eval $(autotools-package)) diff --git a/package/unrar/Config.in b/package/unrar/Config.in new file mode 100644 index 00000000..8a3def69 --- /dev/null +++ b/package/unrar/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_UNRAR + bool "unrar" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + help + RAR file uncompressor. + + http://www.rarlab.com/rar_add.htm + +comment "unrar needs a toolchain w/ C++, wchar, threads, gcc >= 4.8" + depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \ + || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/unrar/unrar.hash b/package/unrar/unrar.hash new file mode 100644 index 00000000..c9a5f521 --- /dev/null +++ b/package/unrar/unrar.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 a008b5f949bca9bb4ffa1bebbfc8b3c14b89df10a10354809b845232d5f582e5 unrarsrc-6.2.12.tar.gz +sha256 6ecc1687808b7d66b24f874755abfed7464d9751ed0001cd4e8e5d9bf397ff8a license.txt diff --git a/package/unrar/unrar.mk b/package/unrar/unrar.mk new file mode 100644 index 00000000..0a61bcfc --- /dev/null +++ b/package/unrar/unrar.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# unrar +# +################################################################################ + +UNRAR_VERSION = 6.2.12 +UNRAR_SOURCE = unrarsrc-$(UNRAR_VERSION).tar.gz +UNRAR_SITE = https://www.rarlab.com/rar +UNRAR_LICENSE = unrar +UNRAR_LICENSE_FILES = license.txt +UNRAR_CPE_ID_VENDOR = rarlab + +define UNRAR_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CXX="$(TARGET_CXX)" STRIP="/bin/true" \ + CXXFLAGS="$(TARGET_CXXFLAGS) -pthread -std=c++11" \ + LDFLAGS="$(TARGET_LDFLAGS) -pthread" -C $(@D) +endef + +define UNRAR_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR)/usr install +endef + +$(eval $(generic-package)) diff --git a/package/unscd/Config.in b/package/unscd/Config.in new file mode 100644 index 00000000..88f10621 --- /dev/null +++ b/package/unscd/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_UNSCD + bool "unscd" + depends on !BR2_RISCV_32 + depends on BR2_TOOLCHAIN_USES_GLIBC + help + Micro Name Service Caching Daemon + + A daemon which handles passwd, group and host lookups for + running programs and caches the results for the next query. + You only need this package if you are using slow Name Services + like LDAP, NIS or NIS+. + + This particular NSCD is a complete rewrite of the GNU glibc + nscd which is a single threaded server process which offloads + all NSS lookups to worker children; cache hits are handled by + the parent, and only cache misses start worker children, + making the parent immune to resource leaks, hangs, and crashes + in NSS libraries. + + It should mostly be a drop-in replacement for existing + installs using nscd. + + http://busybox.net/~vda/unscd + +comment "unscd needs a glibc toolchain" + depends on !BR2_RISCV_32 + depends on !BR2_TOOLCHAIN_USES_GLIBC diff --git a/package/unscd/S46unscd b/package/unscd/S46unscd new file mode 100644 index 00000000..6a51eec1 --- /dev/null +++ b/package/unscd/S46unscd @@ -0,0 +1,25 @@ +#!/bin/sh + +NAME="nscd" +DAEMON="/usr/sbin/${NAME}" +PID_F="/var/run/nscd/${NAME}.pid" + +case "$1" in +start) + printf "Starting ${NAME}: " + start-stop-daemon -S -p ${PID_F} -x ${DAEMON} + [ $? -eq 0 ] && echo "OK" || echo "FAIL" + ;; +stop) + printf "Stopping ${NAME}: " + start-stop-daemon -K -p ${PID_F} + [ $? -eq 0 ] && echo "OK" || echo "FAIL" + ;; +restart|reload) + $0 stop + $0 start + ;; +*) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/unscd/nscd.conf b/package/unscd/nscd.conf new file mode 100644 index 00000000..3eb08ab6 --- /dev/null +++ b/package/unscd/nscd.conf @@ -0,0 +1,33 @@ +# /etc/nscd.conf +# +# An example Name Service Cache config file. This file is needed by nscd. +# +server-user unscd +debug-level 0 + +enable-cache passwd yes +positive-time-to-live passwd 600 +negative-time-to-live passwd 20 +suggested-size passwd 1001 +check-files passwd yes + +enable-cache group yes +positive-time-to-live group 3600 +negative-time-to-live group 60 +suggested-size group 1001 +check-files group yes + +# hosts caching is broken with gethostby* calls, hence is now disabled +# by default. Specifically, the caching does not obey DNS TTLs, and +# thus could lead to problems if the positive-time-to-live is +# significantly larger than the actual TTL. +# +# You should really use a caching nameserver instead of nscd for this +# sort of request. However, you can easily re-enable this by default. +enable-cache hosts no +positive-time-to-live hosts 3600 +negative-time-to-live hosts 20 +suggested-size hosts 1001 +check-files hosts yes + +# unscd does not support services caching diff --git a/package/unscd/unscd.hash b/package/unscd/unscd.hash new file mode 100644 index 00000000..9ed698fd --- /dev/null +++ b/package/unscd/unscd.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 90e12c71732474cac4d055bf9d104e599178b4e1ecb6d3b8c556eaa11f8f6447 nscd-0.54.c diff --git a/package/unscd/unscd.mk b/package/unscd/unscd.mk new file mode 100644 index 00000000..94b46460 --- /dev/null +++ b/package/unscd/unscd.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# unscd +# +################################################################################ + +UNSCD_VERSION = 0.54 +UNSCD_SOURCE = nscd-$(UNSCD_VERSION).c +UNSCD_SITE = http://busybox.net/~vda/unscd +UNSCD_LICENSE = GPL-2.0 +UNSCD_LICENSE_FILES = $(UNSCD_SOURCE) + +define UNSCD_EXTRACT_CMDS + cp $(UNSCD_DL_DIR)/$($(PKG)_SOURCE) $(@D)/ +endef + +define UNSCD_BUILD_CMDS + cd $(@D); \ + $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) -o nscd $(UNSCD_SOURCE) +endef + +define UNSCD_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -D $(@D)/nscd $(TARGET_DIR)/usr/sbin/nscd + $(INSTALL) -m 600 -D package/unscd/nscd.conf $(TARGET_DIR)/etc/nscd.conf +endef + +define UNSCD_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/unscd/S46unscd \ + $(TARGET_DIR)/etc/init.d/S46unscd +endef + +define UNSCD_USERS + unscd -1 unscd -1 * - - - unscd user +endef + +$(eval $(generic-package)) diff --git a/package/unzip/0001-Add-a-CMakeFile.txt-to-ease-cross-compilation.patch b/package/unzip/0001-Add-a-CMakeFile.txt-to-ease-cross-compilation.patch new file mode 100644 index 00000000..cbc58e48 --- /dev/null +++ b/package/unzip/0001-Add-a-CMakeFile.txt-to-ease-cross-compilation.patch @@ -0,0 +1,53 @@ +From 992a497e9c5c421d3931e02a01e9d7c159f27135 Mon Sep 17 00:00:00 2001 +From: Luca Ceresoli +Date: Thu, 26 Nov 2015 12:49:10 +0100 +Subject: [PATCH] Add a CMakeFile.txt to ease cross-compilation + +Info-ZIP's UnZip 6.0 has a complex, hand-crafted Makefile with a +companion configure script which try to support an extremely wide +range of UNIX-like operating systems. The result is an overly complex +mass of code that does not support cross-compilation in several ways. + +Zip 3.0 has a similar build system, and has as many as 6 patches in +Buildroot to cross-compile [0]. UnZip fails at building even with +these patches adapted and a few more on top of them. + +Instead of tweaking and fixing a huge and complex build system, skip +it entirely and add a pretty simple CMakeLists.txt that cross-compiles +smoothly using CMake. It also preserves all of the Buildroot-provided +build options and flags as the original Makefile does. + +[0] http://git.buildroot.net/buildroot/tree/package/infozip?id=2015.11-rc3 + +Signed-off-by: Luca Ceresoli +--- + CMakeLists.txt | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + create mode 100644 CMakeLists.txt + +diff --git a/CMakeLists.txt b/CMakeLists.txt +new file mode 100644 +index 0000000..27951b4 +--- /dev/null ++++ b/CMakeLists.txt +@@ -0,0 +1,17 @@ ++cmake_minimum_required(VERSION 2.8) ++INCLUDE(CheckFunctionExists) ++ ++project(unzip C) ++ ++CHECK_FUNCTION_EXISTS(lchmod HAVE_LCHMOD) ++if(NOT HAVE_LCHMOD) ++add_definitions("-DNO_LCHMOD") ++endif() ++ ++set(UNZIP_SOURCES unzip.c crc32.c crypt.c envargs.c explode.c ++ extract.c fileio.c globals.c inflate.c list.c match.c process.c ++ ttyio.c ubz2err.c unreduce.c unshrink.c zipinfo.c unix/unix.c) ++ ++include_directories(.) ++add_executable(unzip ${UNZIP_SOURCES}) ++install(TARGETS unzip DESTINATION bin) +-- +1.9.1 + diff --git a/package/unzip/Config.in b/package/unzip/Config.in new file mode 100644 index 00000000..da6902e4 --- /dev/null +++ b/package/unzip/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_UNZIP + bool "unzip" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + UnZip is an extraction utility for archives compressed in + .zip format (also called "zipfiles"). Although highly + compatible both with PKWARE's PKZIP and PKUNZIP utilities + for MS-DOS and with Info-ZIP's own Zip program, our primary + objectives have been portability and non-MSDOS + functionality. + + http://www.info-zip.org/UnZip.html diff --git a/package/unzip/unzip.hash b/package/unzip/unzip.hash new file mode 100644 index 00000000..bbf4f7d7 --- /dev/null +++ b/package/unzip/unzip.hash @@ -0,0 +1,6 @@ +# From https://snapshot.debian.org/archive/debian/20210110T204103Z/pool/main/u/unzip/unzip_6.0-26.dsc +sha256 036d96991646d0449ed0aa952e4fbe21b476ce994abc276e49d30e686708bd37 unzip_6.0.orig.tar.gz +sha256 67bde7c71d52afd61aa936d4415c8d12fd90ca26e9637a3cd67cae9b71298c12 unzip_6.0-27.debian.tar.xz + +# Locally computed: +sha256 7469b81d5d29ac4fd670f7c86ba0cb9fa34f137a2d4d5198437d92ddf918984b LICENSE diff --git a/package/unzip/unzip.mk b/package/unzip/unzip.mk new file mode 100644 index 00000000..5effebee --- /dev/null +++ b/package/unzip/unzip.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# unzip +# +################################################################################ + +UNZIP_VERSION = 6.0 +UNZIP_SOURCE = unzip_$(UNZIP_VERSION).orig.tar.gz +UNZIP_PATCH = unzip_$(UNZIP_VERSION)-27.debian.tar.xz +UNZIP_SITE = https://snapshot.debian.org/archive/debian/20220916T090657Z/pool/main/u/unzip +UNZIP_LICENSE = Info-ZIP +UNZIP_LICENSE_FILES = LICENSE +UNZIP_CPE_ID_VALID = YES + +# unzip_$(UNZIP_VERSION)-27.debian.tar.xz has patches to fix: +UNZIP_IGNORE_CVES = \ + CVE-2014-8139 \ + CVE-2014-8140 \ + CVE-2014-8141 \ + CVE-2014-9636 \ + CVE-2014-9913 \ + CVE-2015-7696 \ + CVE-2015-7697 \ + CVE-2016-9844 \ + CVE-2018-18384 \ + CVE-2018-1000035 \ + CVE-2019-13232 \ + CVE-2022-0529 \ + CVE-2022-0530 + +# unzip already defines _LARGEFILE_SOURCE and _LARGEFILE64_SOURCE when +# necessary, redefining it on the command line causes some warnings. +UNZIP_TARGET_CFLAGS = \ + $(filter-out -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE,$(TARGET_CFLAGS)) + +# unzip already defines _LARGEFILE_SOURCE and _LARGEFILE64_SOURCE when +# necessary, redefining it on the command line causes some warnings. +UNZIP_TARGET_CXXFLAGS = \ + $(filter-out -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE,$(TARGET_CXXFLAGS)) + +UNZIP_CONF_OPTS += \ + -DCMAKE_C_FLAGS="$(UNZIP_TARGET_CFLAGS) -DLARGE_FILE_SUPPORT" \ + -DCMAKE_CXX_FLAGS="$(UNZIP_TARGET_CXXFLAGS) -DLARGE_FILE_SUPPORT" + +$(eval $(cmake-package)) diff --git a/package/upmpdcli/Config.in b/package/upmpdcli/Config.in new file mode 100644 index 00000000..74eb7688 --- /dev/null +++ b/package/upmpdcli/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_UPMPDCLI + bool "upmpdcli" + depends on BR2_USE_MMU # fork() + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11, libupnpp + select BR2_PACKAGE_JSONCPP + select BR2_PACKAGE_LIBMICROHTTPD + select BR2_PACKAGE_LIBMPDCLIENT + select BR2_PACKAGE_LIBUPNPP + help + upmpdcli is a UPnP Media Renderer front-end for MPD, the Music + Player Daemon. It supports UPnP gapless track transitions and + the OpenHome ohMedia services. + + http://www.lesbonscomptes.com/upmpdcli/ + +comment "upmpdcli needs a toolchain w/ C++, NPTL, gcc >= 4.9" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/upmpdcli/S99upmpdcli b/package/upmpdcli/S99upmpdcli new file mode 100644 index 00000000..c1586eb0 --- /dev/null +++ b/package/upmpdcli/S99upmpdcli @@ -0,0 +1,36 @@ +#!/bin/sh + +NAME=upmpdcli +CONFFILE=/etc/$NAME.conf +PIDFILE=/var/run/$NAME.pid +DAEMON_ARGS="-D -c $CONFFILE" + +start() { + printf "Starting $NAME: " + start-stop-daemon --start --quiet --background --exec /usr/bin/upmpdcli \ + -- $DAEMON_ARGS \ + && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping $NAME: " + start-stop-daemon --stop --quiet --pidfile $PIDFILE \ + && echo "OK" || echo "FAIL" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + sleep 1 + start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/package/upmpdcli/upmpdcli.hash b/package/upmpdcli/upmpdcli.hash new file mode 100644 index 00000000..f585a73d --- /dev/null +++ b/package/upmpdcli/upmpdcli.hash @@ -0,0 +1,5 @@ +# From http://www.lesbonscomptes.com/upmpdcli/downloads/upmpdcli-1.5.12.tar.gz.sha256: +sha256 1d7b6ab360c2549a7e3eff4f261471761dd837e18327a3ca29de1981c090ff3b upmpdcli-1.5.12.tar.gz + +# Hash for license file: +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/upmpdcli/upmpdcli.mk b/package/upmpdcli/upmpdcli.mk new file mode 100644 index 00000000..2f001c51 --- /dev/null +++ b/package/upmpdcli/upmpdcli.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# upmpdcli +# +################################################################################ + +UPMPDCLI_VERSION = 1.5.12 +UPMPDCLI_SITE = http://www.lesbonscomptes.com/upmpdcli/downloads +UPMPDCLI_LICENSE = LGPL-2.1+ +UPMPDCLI_LICENSE_FILES = COPYING +UPMPDCLI_DEPENDENCIES = host-pkgconf libmpdclient libupnpp libmicrohttpd jsoncpp + +# Disable spotify plugin which requires dlfcn.h +ifeq ($(BR2_STATIC_LIBS),y) +UPMPDCLI_CONF_OPTS += --disable-spotify +endif + +# Upmpdcli only runs if user upmpdcli exists +define UPMPDCLI_USERS + upmpdcli -1 upmpdcli -1 * - - audio Upmpdcli MPD UPnP Renderer Front-End +endef + +define UPMPDCLI_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/upmpdcli/S99upmpdcli $(TARGET_DIR)/etc/init.d/S99upmpdcli +endef + +define UPMPDCLI_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(@D)/systemd/upmpdcli.service \ + $(TARGET_DIR)/usr/lib/systemd/system/upmpdcli.service +endef + +define UPMPDCLI_INSTALL_CONF_FILE + $(INSTALL) -D -m 0755 $(@D)/src/upmpdcli.conf-dist $(TARGET_DIR)/etc/upmpdcli.conf +endef + +UPMPDCLI_POST_INSTALL_TARGET_HOOKS += UPMPDCLI_INSTALL_CONF_FILE + +$(eval $(autotools-package)) diff --git a/package/upower/Config.in b/package/upower/Config.in new file mode 100644 index 00000000..e2bcdd12 --- /dev/null +++ b/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 + depends on BR2_USE_MMU # libgudev + depends on BR2_USE_WCHAR # libgudev + select BR2_PACKAGE_LIBGUDEV + 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/package/upower/upower.hash b/package/upower/upower.hash new file mode 100644 index 00000000..cabce1f5 --- /dev/null +++ b/package/upower/upower.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 e5bda2f5837ee311f5b7b6ec9549b029c88f4958011c6a8f5550b54408ee06ae upower-v0.99.19.tar.bz2 +sha256 c1753877db41d798d63369a825ad9225bbeb5e10a407be5fcd8de96182f1c50d COPYING diff --git a/package/upower/upower.mk b/package/upower/upower.mk new file mode 100644 index 00000000..49aac8c7 --- /dev/null +++ b/package/upower/upower.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# upower +# +################################################################################ + +UPOWER_VERSION = 0.99.19 +UPOWER_SOURCE = upower-v$(UPOWER_VERSION).tar.bz2 +UPOWER_SITE = https://gitlab.freedesktop.org/upower/upower/-/archive/v$(UPOWER_VERSION) +UPOWER_LICENSE = GPL-2.0+ +UPOWER_LICENSE_FILES = COPYING + +# libupower-glib.so +UPOWER_INSTALL_STAGING = YES + +UPOWER_DEPENDENCIES = \ + $(TARGET_NLS_DEPENDENCIES) \ + host-pkgconf \ + libgudev \ + udev + +UPOWER_CONF_OPTS = \ + -Dgtk-doc=false \ + -Dman=false \ + -Dsystemdsystemunitdir=/usr/lib/systemd/system \ + -Dudevhwdbdir=/lib/udev/hwdb.d \ + -Dudevrulesdir=/lib/udev/rules.d + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +UPOWER_CONF_OPTS += -Dintrospection=enabled +UPOWER_DEPENDENCIES += gobject-introspection +else +UPOWER_CONF_OPTS += -Dintrospection=disabled +endif + +$(eval $(meson-package)) diff --git a/package/upx/upx.hash b/package/upx/upx.hash new file mode 100644 index 00000000..545eb29a --- /dev/null +++ b/package/upx/upx.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 cc562ea7dbd8cec4505edea68736e04030ec5891c1e2a300e3c0d0eac6364479 upx-4.2.1-src.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/upx/upx.mk b/package/upx/upx.mk new file mode 100644 index 00000000..65f4bac5 --- /dev/null +++ b/package/upx/upx.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# upx +# +################################################################################ + +UPX_VERSION = 4.2.1 +UPX_SITE = https://github.com/upx/upx/releases/download/v$(UPX_VERSION) +UPX_SOURCE = upx-$(UPX_VERSION)-src.tar.xz +UPX_LICENSE = GPL-2.0+ +UPX_LICENSE_FILES = COPYING +UPX_CPE_ID_VALID = YES +UPX_SUPPORTS_IN_SOURCE_BUILD = NO + +$(eval $(host-cmake-package)) diff --git a/package/uqmi/0001-uqmi-avoid-gcc-12.x-false-error-reporting-storing-th.patch b/package/uqmi/0001-uqmi-avoid-gcc-12.x-false-error-reporting-storing-th.patch new file mode 100644 index 00000000..e2199228 --- /dev/null +++ b/package/uqmi/0001-uqmi-avoid-gcc-12.x-false-error-reporting-storing-th.patch @@ -0,0 +1,57 @@ +From 63ab887be90c7fe37d537ea75e60eb95d6d87d3f Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Sun, 5 Mar 2023 22:08:13 +0100 +Subject: [PATCH] uqmi: avoid gcc-12.x false error reporting (storing the + address of local variable 'complete' in '*req.complete') + +Avoid gcc-12.x false error reporting (req->complete is later reset to NULL +in case of use of local complete): + + dev.c:217:23: error: storing the address of local variable 'complete' in '*req.complete' [-Werror=dangling-pointer=] + 217 | req->complete = &complete; + | ~~~~~~~~~~~~~~^~~~~~~~~~~ + +Signed-off-by: Peter Seiderer +[Upstream: http://lists.openwrt.org/pipermail/openwrt-devel/2023-March/040667.html] +Signed-off-by: Peter Seiderer +--- +Changes v1 -> v2: + - apply pragma ignored only for gcc >= 12.x (as the warning + '-Wdangling-pointer' was introduced with gcc-12.x) +--- + dev.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/dev.c b/dev.c +index bd10207..dbd42d4 100644 +--- a/dev.c ++++ b/dev.c +@@ -203,6 +203,15 @@ void qmi_request_cancel(struct qmi_dev *qmi, struct qmi_request *req) + __qmi_request_complete(qmi, req, NULL); + } + ++/* avoid gcc-12.x false error reporting: ++ * dev.c:217:23: error: storing the address of local variable ‘complete’ in ‘*req.complete’ [-Werror=dangling-pointer=] ++ * 217 | req->complete = &complete; ++ * | ~~~~~~~~~~~~~~^~~~~~~~~~~ ++ */ ++#if __GNUC__ >= 12 ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wdangling-pointer" ++#endif + int qmi_request_wait(struct qmi_dev *qmi, struct qmi_request *req) + { + bool complete = false; +@@ -231,6 +240,9 @@ int qmi_request_wait(struct qmi_dev *qmi, struct qmi_request *req) + + return req->ret; + } ++#if __GNUC__ >= 12 ++#pragma GCC diagnostic pop ++#endif + + struct qmi_connect_request { + struct qmi_request req; +-- +2.39.2 + diff --git a/package/uqmi/Config.in b/package/uqmi/Config.in new file mode 100644 index 00000000..21f0bd90 --- /dev/null +++ b/package/uqmi/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_UQMI + bool "uqmi" + depends on !BR2_STATIC_LIBS # libubox + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c + select BR2_PACKAGE_JSON_C + select BR2_PACKAGE_LIBUBOX + help + This command line tool originates from the OpenWrt project + to configure LTE modem in QMI mode for WAN connection. + + https://git.openwrt.org/project/uqmi.git + +comment "uqmi needs a toolchain w/ dynamic library" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_STATIC_LIBS diff --git a/package/uqmi/uqmi.hash b/package/uqmi/uqmi.hash new file mode 100644 index 00000000..3277b176 --- /dev/null +++ b/package/uqmi/uqmi.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 ecec1ab5a9cf91e54d29496d6793ce5821246261b99c743126899fcf9837af48 uqmi-0a19b5b77140465c29e2afa7d611fe93abc9672f-git4.tar.gz +sha256 a69bf44dbff15d727578d2069a654d60e9034c5e2cc3e199a012e72afef6c259 main.c diff --git a/package/uqmi/uqmi.mk b/package/uqmi/uqmi.mk new file mode 100644 index 00000000..f20c3f51 --- /dev/null +++ b/package/uqmi/uqmi.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# uqmi +# +################################################################################ + +UQMI_VERSION = 0a19b5b77140465c29e2afa7d611fe93abc9672f +UQMI_SITE = https://git.openwrt.org/project/uqmi.git +UQMI_SITE_METHOD = git +UQMI_LICENSE = LGPL-2.0+ +UQMI_LICENSE_FILES = main.c +UQMI_DEPENDENCIES = json-c libubox + +$(eval $(cmake-package)) diff --git a/package/urandom-scripts/Config.in b/package/urandom-scripts/Config.in new file mode 100644 index 00000000..6b4a609f --- /dev/null +++ b/package/urandom-scripts/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_URANDOM_SCRIPTS + bool "urandom-initscripts" + default y if BR2_PACKAGE_INITSCRIPTS + depends on BR2_PACKAGE_BUSYBOX + depends on !BR2_PACKAGE_SYSTEMD + help + Initscript to preserve the random seed between reboots. diff --git a/package/urandom-scripts/S01seedrng b/package/urandom-scripts/S01seedrng new file mode 100644 index 00000000..0fea0bea --- /dev/null +++ b/package/urandom-scripts/S01seedrng @@ -0,0 +1,40 @@ +#! /bin/sh +# +# Preserve the random seed between reboots. See urandom(4). +# +# This script can be called multiple times during operation (e.g. with +# "reload" argument) to refresh the seed. + +# The following arguments can be added to SEEDRNG_ARGS in +# /etc/default/seedrng: +# --seed-dir=/path/to/seed/directory +# Path to the directory where the seed and the lock files are stored. +# for optimal operation, this should be a persistent, writeable +# location. Default is /var/lib/seedrng +# +# --skip-credit +# Set this to true only if you do not want seed files to actually +# credit the RNG, for example if you plan to replicate this file +# system image and do not have the wherewithal to first delete the +# contents of /var/lib/seedrng. +# +# Example: +# SEEDRNG_ARGS="--seed-dir=/data/seedrng --skip-credit" +# + +DAEMON="seedrng" +SEEDRNG_ARGS="" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +case "$1" in + start|stop|restart|reload) + # Never fail, as this isn't worth making a fuss + # over if it doesn't go as planned. + # shellcheck disable=SC2086 # we need the word splitting + seedrng $SEEDRNG_ARGS || true;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/urandom-scripts/urandom-scripts.mk b/package/urandom-scripts/urandom-scripts.mk new file mode 100644 index 00000000..89abdfff --- /dev/null +++ b/package/urandom-scripts/urandom-scripts.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# urandom-scripts +# +################################################################################ + +define URANDOM_SCRIPTS_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 $(URANDOM_SCRIPTS_PKGDIR)/S01seedrng \ + $(TARGET_DIR)/etc/init.d/S01seedrng +endef + +$(eval $(generic-package)) diff --git a/package/uredir/Config.in b/package/uredir/Config.in new file mode 100644 index 00000000..99206cfe --- /dev/null +++ b/package/uredir/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_UREDIR + bool "uredir" + select BR2_PACKAGE_LIBUEV + help + A small Linux daemon to redirect UDP connections. It can be + used to forward connections on small and embedded systems that + do not have (or want to use) iptables. + + https://github.com/troglobit/uredir diff --git a/package/uredir/uredir.hash b/package/uredir/uredir.hash new file mode 100644 index 00000000..00c816c2 --- /dev/null +++ b/package/uredir/uredir.hash @@ -0,0 +1,4 @@ +# From https://github.com/troglobit/uredir/releases/download/v3.3/uredir-3.3.tar.gz.md5 +md5 a42ee27e84de2e08e35ee733508bb6ea uredir-3.3.tar.gz +# License files +sha256 e4b8fd3375ce44e5e03be199724a8785510ea5fa58ed92a7a34fd0ccbd35db10 LICENSE diff --git a/package/uredir/uredir.mk b/package/uredir/uredir.mk new file mode 100644 index 00000000..22ffaa74 --- /dev/null +++ b/package/uredir/uredir.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# uredir +# +################################################################################ + +UREDIR_VERSION = 3.3 +UREDIR_SITE = https://github.com/troglobit/uredir/releases/download/v$(UREDIR_VERSION) +UREDIR_LICENSE = ISC +UREDIR_LICENSE_FILES = LICENSE +UREDIR_DEPENDENCIES = host-pkgconf libuev + +$(eval $(autotools-package)) diff --git a/package/urg/0001-select-h.patch b/package/urg/0001-select-h.patch new file mode 100644 index 00000000..1d09bb57 --- /dev/null +++ b/package/urg/0001-select-h.patch @@ -0,0 +1,39 @@ +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/package/urg/0002-urg-gcc6-fix-narrowing-conversion.patch b/package/urg/0002-urg-gcc6-fix-narrowing-conversion.patch new file mode 100644 index 00000000..e3db8980 --- /dev/null +++ b/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; + // !!! Šù‚ɐݒè‘Ώۂ̃{�[ƒŒ�[ƒg�A‚̏ꍇ‚̖߂è’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/package/urg/Config.in b/package/urg/Config.in new file mode 100644 index 00000000..c6026242 --- /dev/null +++ b/package/urg/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_URG + bool "urg" + depends on BR2_INSTALL_LIBSTDCPP + help + Library to control Hokuyo's URG series sensors. + + https://sourceforge.net/p/urgnetwork/wiki/Home/ + +comment "urg needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/urg/urg.hash b/package/urg/urg.hash new file mode 100644 index 00000000..363504d2 --- /dev/null +++ b/package/urg/urg.hash @@ -0,0 +1,6 @@ +# 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 +# License files, locally calculated +sha256 9ccf26cfe845e0eb8bb58053e47366e7ab6b697ae010f7650978d4b71b7d1fc1 COPYING diff --git a/package/urg/urg.mk b/package/urg/urg.mk new file mode 100644 index 00000000..476f3629 --- /dev/null +++ b/package/urg/urg.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# urg +# +################################################################################ + +URG_VERSION = 0.8.18 +URG_SITE = http://pkgs.fedoraproject.org/repo/pkgs/urg/urg-0.8.18.zip/md5/93f90d2ccc36e784407c5282ef6bd2cb +URG_SOURCE = urg-$(URG_VERSION).zip +URG_LICENSE = LGPL-3.0 +URG_LICENSE_FILES = COPYING + +URG_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_SDL)$(BR2_PACKAGE_SDL_NET),yy) +URG_DEPENDENCIES += sdl sdl_net +URG_CONF_OPTS += \ + --with-sdl-prefix=$(STAGING_DIR)/usr \ + --with-sdl-exec-prefix=$(STAGING_DIR)/usr +else +URG_CONF_OPTS += --without-sdl +URG_CONF_ENV += ac_cv_path_SDL_CONFIG="" +endif + +URG_CONFIG_SCRIPTS = c_urg-config urg-config + +define URG_EXTRACT_CMDS + $(UNZIP) -d $(BUILD_DIR) $(URG_DL_DIR)/$(URG_SOURCE) +endef + +$(eval $(autotools-package)) diff --git a/package/usb_modeswitch/0001-fix-systemd-detection.patch b/package/usb_modeswitch/0001-fix-systemd-detection.patch new file mode 100644 index 00000000..d0b3e80a --- /dev/null +++ b/package/usb_modeswitch/0001-fix-systemd-detection.patch @@ -0,0 +1,18 @@ +Modify the Makefile to include '$(PREFIX)/bin/systemctl' in the list of paths. +This makes the udev intgeration work as intended when using systemd. + +Signed-off-by: Sol Bekic + +diff --git a/Makefile b/Makefile +index 22bd0e0..72321a4 100755 +--- a/Makefile ++++ b/Makefile +@@ -62,7 +62,7 @@ + install -D --mode=755 usb_modeswitch_dispatcher $(SBINDIR)/usb_modeswitch_dispatcher + install -d $(DESTDIR)/var/lib/usb_modeswitch + test -d $(UPSDIR) -a -e /sbin/initctl && install --mode=644 usb-modeswitch-upstart.conf $(UPSDIR) || test 1 +- test -d $(SYSDIR) -a \( -e /usr/bin/systemctl -o -e /bin/systemctl \) && install --mode=644 usb_modeswitch@.service $(SYSDIR) || test 1 ++ test -d $(SYSDIR) -a \( -e /usr/bin/systemctl -o -e /bin/systemctl -o -e $(PREFIX)/bin/systemctl \) && install --mode=644 usb_modeswitch@.service $(SYSDIR) || test 1 + + install: install-script + diff --git a/package/usb_modeswitch/Config.in b/package/usb_modeswitch/Config.in new file mode 100644 index 00000000..ecb043a1 --- /dev/null +++ b/package/usb_modeswitch/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_USB_MODESWITCH + bool "usb_modeswitch" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_JIMTCL if !BR2_PACKAGE_TCL || BR2_PACKAGE_TCL_SHLIB_ONLY + select BR2_PACKAGE_LIBUSB + help + Some USB devices such as 3G/4G broadband modems power-up + in mass storage mode to provide access to drivers + for the device's application mode. usb_modeswitch + changes the mode of such devices from the initial power-up + mode to the application mode. + Specific configuration data for each device model is required. + + usb_modeswitch can be used with the usb_modeswitch_data + package and eudev/systemd for automatic mode switching + when devices are connected. + + For more information search the Internet for "Virtual CD-ROM + switching utility". + + http://www.draisberghof.de/usb_modeswitch/ + +comment "usb_modeswitch needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/usb_modeswitch/usb_modeswitch.hash b/package/usb_modeswitch/usb_modeswitch.hash new file mode 100644 index 00000000..765a2438 --- /dev/null +++ b/package/usb_modeswitch/usb_modeswitch.hash @@ -0,0 +1,5 @@ +# From https://www.draisberghof.de/usb_modeswitch/usb-modeswitch-versions.xml +md5 69d00d6ed7097b97d972a159d14cfba1 usb-modeswitch-2.6.1.tar.bz2 +# Locally calculated +sha256 5195d9e136e52f658f19e9f93e4f982b1b67bffac197d0a455cd8c2cd245fa34 usb-modeswitch-2.6.1.tar.bz2 +sha256 6195429209313925c0eba6c0da4ee7a6cb4277b99e35c886913f80f91ec20b94 COPYING diff --git a/package/usb_modeswitch/usb_modeswitch.mk b/package/usb_modeswitch/usb_modeswitch.mk new file mode 100644 index 00000000..f2ee004b --- /dev/null +++ b/package/usb_modeswitch/usb_modeswitch.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# usb_modeswitch +# +################################################################################ + +USB_MODESWITCH_VERSION = 2.6.1 +USB_MODESWITCH_SOURCE = usb-modeswitch-$(USB_MODESWITCH_VERSION).tar.bz2 +USB_MODESWITCH_SITE = http://www.draisberghof.de/usb_modeswitch +USB_MODESWITCH_DEPENDENCIES = libusb +USB_MODESWITCH_LICENSE = GPL-2.0+, BSD-2-Clause +USB_MODESWITCH_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_TCL)$(BR2_PACKAGE_TCL_SHLIB_ONLY),y) +USB_MODESWITCH_DEPENDENCIES += tcl +USB_MODESWITCH_BUILD_TARGETS = all +USB_MODESWITCH_INSTALL_TARGETS = install-script +else +USB_MODESWITCH_DEPENDENCIES += jimtcl +USB_MODESWITCH_INSTALL_TARGETS = install-common +ifeq ($(BR2_STATIC_LIBS),y) +USB_MODESWITCH_BUILD_TARGETS = all-with-statlink-dispatcher +else +USB_MODESWITCH_BUILD_TARGETS = all-with-dynlink-dispatcher +endif +endif + +define USB_MODESWITCH_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + -C $(@D) $(USB_MODESWITCH_BUILD_TARGETS) +endef + +define USB_MODESWITCH_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + DESTDIR=$(TARGET_DIR) \ + -C $(@D) $(USB_MODESWITCH_INSTALL_TARGETS) +endef + +$(eval $(generic-package)) diff --git a/package/usb_modeswitch_data/Config.in b/package/usb_modeswitch_data/Config.in new file mode 100644 index 00000000..6da7d3bb --- /dev/null +++ b/package/usb_modeswitch_data/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_USB_MODESWITCH_DATA + bool "usb_modeswitch_data" + depends on BR2_TOOLCHAIN_HAS_THREADS # usb_modeswitch -> libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # usb_modeswitch -> libusb + select BR2_PACKAGE_USB_MODESWITCH + help + USB mode switch data + Contains udev rules and events to allow usb_modeswitch to + function automatically + + http://www.draisberghof.de/usb_modeswitch/ + +comment "usb_modeswitch_data needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/usb_modeswitch_data/usb_modeswitch_data.hash b/package/usb_modeswitch_data/usb_modeswitch_data.hash new file mode 100644 index 00000000..9071a724 --- /dev/null +++ b/package/usb_modeswitch_data/usb_modeswitch_data.hash @@ -0,0 +1,5 @@ +# From http://www.draisberghof.de/usb_modeswitch/ +md5 e8fce7eb949cbe16c61fb71bade4cc17 usb-modeswitch-data-20191128.tar.bz2 +# Locally calculated +sha256 3f039b60791c21c7cb15c7986cac89650f076dc274798fa242231b910785eaf9 usb-modeswitch-data-20191128.tar.bz2 +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/usb_modeswitch_data/usb_modeswitch_data.mk b/package/usb_modeswitch_data/usb_modeswitch_data.mk new file mode 100644 index 00000000..a3a98ad7 --- /dev/null +++ b/package/usb_modeswitch_data/usb_modeswitch_data.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# usb_modeswitch_data +# +################################################################################ + +USB_MODESWITCH_DATA_VERSION = 20191128 +USB_MODESWITCH_DATA_SOURCE = usb-modeswitch-data-$(USB_MODESWITCH_DATA_VERSION).tar.bz2 +USB_MODESWITCH_DATA_SITE = http://www.draisberghof.de/usb_modeswitch +USB_MODESWITCH_DATA_DEPENDENCIES = usb_modeswitch +USB_MODESWITCH_DATA_LICENSE = GPL-2.0+ +USB_MODESWITCH_DATA_LICENSE_FILES = COPYING + +# Nothing to build, it is a pure data package + +define USB_MODESWITCH_DATA_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/package/usbguard/0001-Fix-build-for-GCC-13-make-GitHub-Actions-cover-build-with-GCC-13.patch b/package/usbguard/0001-Fix-build-for-GCC-13-make-GitHub-Actions-cover-build-with-GCC-13.patch new file mode 100644 index 00000000..415b8e1d --- /dev/null +++ b/package/usbguard/0001-Fix-build-for-GCC-13-make-GitHub-Actions-cover-build-with-GCC-13.patch @@ -0,0 +1,114 @@ +From 22b1e0897af977cc96af926c730ff948bd120bb5 Mon Sep 17 00:00:00 2001 +From: Sebastian Pipping +Date: Fri, 31 Mar 2023 09:39:49 +0200 +Subject: [PATCH] Fix build for GCC 13 + make GitHub Actions cover build with + GCC 13 (#586) + +* include missing + +gcc 13 moved some includes around and as a result is no +longer transitively included [1]. Explicitly include it for +uint8_t. + +[1] https://gcc.gnu.org/gcc-13/porting_to.html#header-dep-changes + +Signed-off-by: Khem Raj + +* docker.yml: Cover openSUSE Tumbleweed with GCC 13+ + +Based on scripts/docker/build_on_centos_8_2.Dockerfile . + +--------- + +Signed-off-by: Khem Raj +Co-authored-by: Khem Raj +Upstream: https://github.com/USBGuard/usbguard/commit/22b1e0897af977cc96af926c730ff948bd120bb5 +Signed-off-by: Fabrice Fontaine +--- + .github/workflows/docker.yml | 1 + + .../build_on_opensuse_tumbleweed.Dockerfile | 50 +++++++++++++++++++ + src/Library/Base64.cpp | 1 - + src/Library/Base64.hpp | 1 + + 4 files changed, 52 insertions(+), 1 deletion(-) + create mode 100644 scripts/docker/build_on_opensuse_tumbleweed.Dockerfile + +diff --git a/scripts/docker/build_on_opensuse_tumbleweed.Dockerfile b/scripts/docker/build_on_opensuse_tumbleweed.Dockerfile +new file mode 100644 +index 00000000..d0993d8c +--- /dev/null ++++ b/scripts/docker/build_on_opensuse_tumbleweed.Dockerfile +@@ -0,0 +1,50 @@ ++## ++## Copyright (c) 2023 Sebastian Pipping ++## ++## 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, see . ++ ++FROM opensuse/tumbleweed:latest ++RUN zypper --non-interactive install dnf rpm-repos-openSUSE-Tumbleweed \ ++ && \ ++ dnf install -y \ ++ asciidoc \ ++ autoconf \ ++ automake \ ++ dbus-1-glib-devel \ ++ diffutils \ ++ file \ ++ gcc-c++ \ ++ git \ ++ libgcrypt-devel \ ++ libqb-devel \ ++ libsodium-devel \ ++ libtool \ ++ libxslt \ ++ make \ ++ polkit-devel \ ++ protobuf-devel ++ADD usbguard.tar usbguard/ ++ADD catch.tar usbguard/src/ThirdParty/Catch/ ++ADD pegtl.tar usbguard/src/ThirdParty/PEGTL/ ++WORKDIR usbguard ++RUN git init &>/dev/null && ./autogen.sh ++RUN ./configure --with-bundled-catch --with-bundled-pegtl || ! cat config.log ++RUN make dist ++RUN tar xf usbguard-*.tar.gz ++RUN mv -v usbguard-*.*.*/ usbguard-release/ ++RUN mkdir usbguard-release/build/ ++WORKDIR usbguard-release/build/ ++RUN ../configure --with-bundled-catch --with-bundled-pegtl || ! cat config.log ++RUN bash -c 'set -o pipefail; make V=1 "-j$(nproc)" |& tee build.log' ++RUN ! grep -F 'include file not found' build.log +diff --git a/src/Library/Base64.cpp b/src/Library/Base64.cpp +index ddb28dce..0246a134 100644 +--- a/src/Library/Base64.cpp ++++ b/src/Library/Base64.cpp +@@ -22,7 +22,6 @@ + + #include "Base64.hpp" + #include +-#include + + namespace usbguard + { +diff --git a/src/Library/Base64.hpp b/src/Library/Base64.hpp +index 0947f214..e0c745cb 100644 +--- a/src/Library/Base64.hpp ++++ b/src/Library/Base64.hpp +@@ -23,6 +23,7 @@ + #endif + + #include ++#include + #include + + namespace usbguard diff --git a/package/usbguard/Config.in b/package/usbguard/Config.in new file mode 100644 index 00000000..f207fa68 --- /dev/null +++ b/package/usbguard/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_USBGUARD + bool "usbguard" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # protobuf + depends on BR2_INSTALL_LIBSTDCPP # protobuf + depends on BR2_TOOLCHAIN_HAS_THREADS # libqb, protobuf + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # C++17 filesystem + depends on !BR2_STATIC_LIBS # libqb, protobuf + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::future + select BR2_PACKAGE_PROTOBUF + select BR2_PACKAGE_LIBQB + select BR2_PACKAGE_LIBSODIUM if !BR2_PACKAGE_LIBGCRYPT && !BR2_PACKAGE_LIBOPENSSL + help + The USBGuard software framework + + Install a custom accept/deny list in /etc/usbguard/rules.conf + (e.g. using an overlay). This file can be generated on the + target using "usbguard generate-policy". + + https://usbguard.github.io/ + +comment "usbguard needs a toolchain w/ C++, threads, dynamic library, gcc >= 8" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \ + || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_8 + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + +comment "usbguard needs a toolchain not affected by GCC bug 64735" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/usbguard/S20usbguard b/package/usbguard/S20usbguard new file mode 100644 index 00000000..b16d7b4a --- /dev/null +++ b/package/usbguard/S20usbguard @@ -0,0 +1,37 @@ +#!/bin/sh +# +# Start psplash +# + +PIDFILE=/var/run/$NAME.pid + +start() { + printf "Starting usbguard daemon: " + test -d /var/log/usbguard || mkdir -p /var/log/usbguard + start-stop-daemon -b -S -q -m -p $PIDFILE --exec /usr/sbin/usbguard-daemon -- -f -s -c /etc/usbguard/usbguard-daemon.conf + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping usbguard daemon: " + start-stop-daemon -K -q -p $PIDFILE + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/package/usbguard/usbguard.hash b/package/usbguard/usbguard.hash new file mode 100644 index 00000000..6c10dc9d --- /dev/null +++ b/package/usbguard/usbguard.hash @@ -0,0 +1,5 @@ +# From https://github.com/USBGuard/usbguard/releases/download/usbguard-1.1.2/usbguard-1.1.2.tar.gz.sum +sha256 dcf5c90f3f93030e04df1baeb8d388b678c40dd48b135ea12a7be7dee8944934 usbguard-1.1.2.tar.gz + +# Locally calculated +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/usbguard/usbguard.mk b/package/usbguard/usbguard.mk new file mode 100644 index 00000000..4a5028f5 --- /dev/null +++ b/package/usbguard/usbguard.mk @@ -0,0 +1,65 @@ +################################################################################ +# +## usbguard +# +################################################################################ + +USBGUARD_VERSION = 1.1.2 +USBGUARD_SITE = https://github.com/USBGuard/usbguard/releases/download/usbguard-$(USBGUARD_VERSION) +USBGUARD_LICENSE = GPL-2.0+ +USBGUARD_LICENSE_FILES = LICENSE +USBGUARD_CPE_ID_VALID = YES +USBGUARD_SELINUX_MODULES = usbguard +USBGUARD_CONF_ENV = ac_cv_prog_A2X="" +USBGUARD_CONF_OPTS = \ + --with-bundled-catch \ + --with-bundled-pegtl \ + --disable-debug-build \ + --without-dbus \ + --without-polkit \ + --disable-umockdev + +USBGUARD_DEPENDENCIES += libqb protobuf + +ifeq ($(BR2_PACKAGE_LIBSODIUM),y) +USBGUARD_CONF_OPTS += --with-crypto-library=sodium +USBGUARD_DEPENDENCIES += libsodium +else ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) +USBGUARD_CONF_OPTS += --with-crypto-library=openssl +USBGUARD_DEPENDENCIES += libopenssl +else ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +USBGUARD_CONF_ENV += \ + ac_cv_path_LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config +USBGUARD_CONF_OPTS += --with-crypto-library=gcrypt +USBGUARD_DEPENDENCIES += libgcrypt +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +USBGUARD_CONF_OPTS += --enable-systemd +USBGUARD_DEPENDENCIES += systemd +else +USBGUARD_CONF_OPTS += --disable-systemd +endif + +ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) +USBGUARD_CONF_OPTS += --enable-seccomp +USBGUARD_DEPENDENCIES += libseccomp +else +USBGUARD_CONF_OPTS += --disable-seccomp +endif + +ifeq ($(BR2_PACKAGE_LIBCAP_NG),y) +USBGUARD_CONF_OPTS += --enable-libcapng +USBGUARD_DEPENDENCIES += libcap-ng +endif + +define USBGUARD_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/usbguard/S20usbguard \ + $(TARGET_DIR)/etc/init.d/S20usbguard +endef + +define USBGUARD_PERMISSIONS + /etc/usbguard/rules.conf f 0600 0 0 - - - - - +endef + +$(eval $(autotools-package)) diff --git a/package/usbmount/0001-rules-fix.patch b/package/usbmount/0001-rules-fix.patch new file mode 100644 index 00000000..c71b613c --- /dev/null +++ b/package/usbmount/0001-rules-fix.patch @@ -0,0 +1,19 @@ +Signed-off-by: Yegor Yefremov +--- + usbmount.rules | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +Index: b/usbmount.rules +=================================================================== +--- a/usbmount.rules ++++ b/usbmount.rules +@@ -1,7 +1,7 @@ + # Rules for USBmount -*- conf -*- + + KERNEL=="sd*", DRIVERS=="sbp2", ACTION=="add", RUN+="/usr/share/usbmount/usbmount add" +-KERNEL=="sd*", SUBSYSTEMS=="usb", ACTION=="add", RUN+="/usr/share/usbmount/usbmount add" +-KERNEL=="ub*", SUBSYSTEMS=="usb", ACTION=="add", RUN+="/usr/share/usbmount/usbmount add" ++KERNEL=="sd*", SUBSYSTEM=="block", ACTION=="add", RUN+="/usr/share/usbmount/usbmount add" ++KERNEL=="ub*", SUBSYSTEM=="block", ACTION=="add", RUN+="/usr/share/usbmount/usbmount add" + KERNEL=="sd*", ACTION=="remove", RUN+="/usr/share/usbmount/usbmount remove" + KERNEL=="ub*", ACTION=="remove", RUN+="/usr/share/usbmount/usbmount remove" diff --git a/package/usbmount/0002-use-udev-environment-instead-of-blkid.patch b/package/usbmount/0002-use-udev-environment-instead-of-blkid.patch new file mode 100644 index 00000000..27928b5d --- /dev/null +++ b/package/usbmount/0002-use-udev-environment-instead-of-blkid.patch @@ -0,0 +1,71 @@ +udev can provide all the values that usbmount determined using the +blkid binary. This patch drops use of blkid in favor of using the +environment variables set by udev. Thus it removes the dependency +on blkid from usbmount. + +Signed-off-by: Sven Neumann +--- usbmount-0.0.22/usbmount.orig 2013-06-18 14:44:40.143096147 +0200 ++++ usbmount-0.0.22/usbmount 2013-06-19 16:13:09.882434896 +0200 +@@ -59,11 +59,6 @@ + exit 0 + fi + +-if [ ! -x /sbin/blkid ]; then +- log err "cannot execute /sbin/blkid" +- exit 1 +-fi +- + # Per Policy 9.3.2, directories under /var/run have to be created + # after every reboot. + if [ ! -e /var/run/usbmount ]; then +@@ -83,15 +78,7 @@ + trap '( lockfile-remove /var/run/usbmount/.mount )' 0 + log debug "acquired lock /var/run/usbmount/.mount.lock" + +- # Grab device information from device and "divide it" +- # FIXME: improvement: implement mounting by label (notice that labels +- # can contain spaces, which makes things a little bit less comfortable). +- DEVINFO=$(/sbin/blkid -p $DEVNAME) +- FSTYPE=$(echo "$DEVINFO" | sed 's/.*[[:blank:]]TYPE="\([^"]*\)".*/\1/g; s/[[:blank:]]*//g;') +- UUID=$(echo "$DEVINFO" | sed 's/.*[[:blank:]]UUID="\([^"]*\)".*/\1/g; s/[[:blank:]]*//g;') +- USAGE=$(echo "$DEVINFO" | sed 's/.*[[:blank:]]USAGE="\([^"]*\)".*/\1/g; s/[[:blank:]]*//g;') +- +- if ! echo $USAGE | egrep -q "(filesystem|disklabel)"; then ++ if ! echo $ID_FS_USAGE | egrep -q "(filesystem|disklabel)"; then + log info "$DEVNAME does not contain a filesystem or disklabel" + exit 1 + fi +@@ -101,14 +88,14 @@ + log info "executing command: mount $DEVNAME" + mount $DEVNAME || log err "mount by DEVNAME with $DEVNAME wasn't successful; return code $?" + +- elif grep -q "^[[:blank:]]*UUID=$UUID" /etc/fstab; then +- log info "executing command: mount -U $UUID" +- mount -U $UUID || log err "mount by UUID with $UUID wasn't successful; return code $?" ++ elif grep -q "^[[:blank:]]*UUID=$ID_FS_UUID" /etc/fstab; then ++ log info "executing command: mount -U $ID_FS_UUID" ++ mount -U $ID_FS_UUID || log err "mount by UUID with $ID_FS_UUID wasn't successful; return code $?" + + else +- log debug "$DEVNAME contains filesystem type $FSTYPE" ++ log debug "$DEVNAME contains filesystem type $ID_FS_TYPE" + +- fstype=$FSTYPE ++ fstype=$ID_FS_TYPE + # Test if the filesystem type is in the list of filesystem + # types to mount. + if in_list "$fstype" "$FILESYSTEMS"; then +@@ -176,11 +163,13 @@ + + # Run hook scripts; ignore errors. + export UM_DEVICE="$DEVNAME" ++ export UM_UUID="$ID_FS_UUID" + export UM_MOUNTPOINT="$mountpoint" + export UM_FILESYSTEM="$fstype" + export UM_MOUNTOPTIONS="$options" + export UM_VENDOR="$vendor" + export UM_MODEL="$model" ++ export UM_LABEL="$ID_FS_LABEL" + log info "executing command: run-parts /etc/usbmount/mount.d" + run-parts /etc/usbmount/mount.d || : + else diff --git a/package/usbmount/Config.in b/package/usbmount/Config.in new file mode 100644 index 00000000..7760356b --- /dev/null +++ b/package/usbmount/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_USBMOUNT + bool "usbmount" + depends on BR2_USE_MMU # lockfile-progs -> liblockfile + depends on BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_LOCKFILE_PROGS + help + The usbmount package automatically mounts USB mass storage + devices when they are plugged in, and unmounts them when + they are removed. + + https://wiki.debian.org/usbmount + +comment "usbmount requires udev to be enabled" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_HAS_UDEV diff --git a/package/usbmount/usbmount.hash b/package/usbmount/usbmount.hash new file mode 100644 index 00000000..64654616 --- /dev/null +++ b/package/usbmount/usbmount.hash @@ -0,0 +1,4 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/u/usbmount/usbmount_0.0.22.dsc +sha256 a2b8581534b6c92f0376d202639dbc28862d3834dac64c35bde752f84975527d usbmount_0.0.22.tar.gz +# Locally computed +sha256 797a416c87923338aa3ed05cce3cfdac6101f0142e72d5ab05c7bd76af5e527b debian/copyright diff --git a/package/usbmount/usbmount.mk b/package/usbmount/usbmount.mk new file mode 100644 index 00000000..538602fd --- /dev/null +++ b/package/usbmount/usbmount.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# usbmount +# +################################################################################ + +USBMOUNT_VERSION = 0.0.22 +USBMOUNT_SOURCE = usbmount_$(USBMOUNT_VERSION).tar.gz +USBMOUNT_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/u/usbmount +USBMOUNT_DEPENDENCIES = udev lockfile-progs +USBMOUNT_LICENSE = BSD-2-Clause +USBMOUNT_LICENSE_FILES = debian/copyright + +define USBMOUNT_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/usbmount $(TARGET_DIR)/usr/share/usbmount/usbmount + + $(INSTALL) -m 0755 -D $(@D)/00_create_model_symlink \ + $(TARGET_DIR)/etc/usbmount/mount.d/00_create_model_symlink + $(INSTALL) -m 0755 -D $(@D)/00_remove_model_symlink \ + $(TARGET_DIR)/etc/usbmount/umount.d/00_remove_model_symlink + + $(INSTALL) -m 0644 -D $(@D)/usbmount.rules $(TARGET_DIR)/lib/udev/rules.d/usbmount.rules + $(INSTALL) -m 0644 -D $(@D)/usbmount.conf $(TARGET_DIR)/etc/usbmount/usbmount.conf + + mkdir -p $(addprefix $(TARGET_DIR)/media/usb,0 1 2 3 4 5 6 7) +endef + +$(eval $(generic-package)) diff --git a/package/usbredir/Config.in b/package/usbredir/Config.in new file mode 100644 index 00000000..6de6227e --- /dev/null +++ b/package/usbredir/Config.in @@ -0,0 +1,40 @@ +comment "usbredir needs a toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_USBREDIR + bool "usbredir" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + select BR2_PACKAGE_LIBUSB + help + usbredir is the name of a network protocol for sending usb + device traffic over a network connection. It is also the + name of the software package offering a parsing library, a + usbredirhost library and several utilities implementing this + protocol. + + Note: only the library is installed, not the utilities. Say + 'y' below if you want the tools too. + + http://www.spice-space.org/page/UsbRedir + +if BR2_PACKAGE_USBREDIR + +config BR2_PACKAGE_USBREDIR_TOOLS + bool "enable tools" + depends on BR2_USE_MMU # libglib2 + depends on BR2_USE_WCHAR # libglib2 + select BR2_PACKAGE_LIBGLIB2 + help + If you want to serve usbredir requests on your target, say + 'y' here to have the tools built and installed on the target + (including usbredirect binary). + + Note: the tools are not required to use the library. + +comment "tools needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR + +endif diff --git a/package/usbredir/usbredir.hash b/package/usbredir/usbredir.hash new file mode 100644 index 00000000..577e08ef --- /dev/null +++ b/package/usbredir/usbredir.hash @@ -0,0 +1,6 @@ +# https://spice-space.org/download/usbredir/usbredir-0.13.0.tar.xz.sha256sum +sha256 4ba6faa02c0ae6deeb4c53883d66ab54b3a5899bead42ce4ded9568b9a7dc46e usbredir-0.13.0.tar.xz + +# Hash for license files +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 592987e8510228d546540b84a22444bde98e48d03078d3b2eefcd889bec5ce8c COPYING.LIB diff --git a/package/usbredir/usbredir.mk b/package/usbredir/usbredir.mk new file mode 100644 index 00000000..325e7313 --- /dev/null +++ b/package/usbredir/usbredir.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# usbredir +# +################################################################################ + +USBREDIR_VERSION = 0.13.0 +USBREDIR_SOURCE = usbredir-$(USBREDIR_VERSION).tar.xz +USBREDIR_SITE = http://spice-space.org/download/usbredir +USBREDIR_LICENSE = LGPL-2.1+ (libraries) +USBREDIR_LICENSE_FILES = COPYING.LIB +USBREDIR_INSTALL_STAGING = YES +USBREDIR_DEPENDENCIES = host-pkgconf libusb +USBREDIR_CONF_OPTS = \ + -Dgit_werror=disabled \ + -Dstack_protector=disabled \ + -Dtests=disabled + +ifeq ($(BR2_PACKAGE_USBREDIR_TOOLS),y) +USBREDIR_LICENSE += , GPL-2.0+ (program) +USBREDIR_LICENSE_FILES += COPYING +USBREDIR_DEPENDENCIES += libglib2 +USBREDIR_CONF_OPTS += -Dtools=enabled +else +USBREDIR_CONF_OPTS += -Dtools=disabled +endif + +$(eval $(meson-package)) diff --git a/package/usbutils/Config.in b/package/usbutils/Config.in new file mode 100644 index 00000000..a38eb2f2 --- /dev/null +++ b/package/usbutils/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_USBUTILS + bool "usbutils" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb + depends on BR2_PACKAGE_HAS_UDEV # needs hwdb + select BR2_PACKAGE_LIBUSB + help + USB enumeration utilities + + http://linux-usb.sourceforge.net/ + +comment "usbutils needs udev /dev management and toolchain w/ threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_PACKAGE_HAS_UDEV || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/usbutils/usbutils.hash b/package/usbutils/usbutils.hash new file mode 100644 index 00000000..2c863543 --- /dev/null +++ b/package/usbutils/usbutils.hash @@ -0,0 +1,5 @@ +# From https://www.kernel.org/pub/linux/utils/usb/usbutils/sha256sums.asc +sha256 a6a25ffdcf9103e38d7a44732aca17073f4e602b92e4ae55625231a82702e05b usbutils-017.tar.xz +# Locally calculated +sha256 91412672119c72352b76c1d48fa1a8b7cdc7f70be7929e468c8805db468e23e4 LICENSES/GPL-2.0-only.txt +sha256 4631da83311d27f99078d0d102e31bd34a4fcbcc2dae2aa40f1454a5b48125dc LICENSES/GPL-3.0-only.txt diff --git a/package/usbutils/usbutils.mk b/package/usbutils/usbutils.mk new file mode 100644 index 00000000..c2073df3 --- /dev/null +++ b/package/usbutils/usbutils.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# usbutils +# +################################################################################ + +USBUTILS_VERSION = 017 +USBUTILS_SOURCE = usbutils-$(USBUTILS_VERSION).tar.xz +USBUTILS_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/usb/usbutils +USBUTILS_DEPENDENCIES = host-pkgconf libusb udev +USBUTILS_LICENSE = GPL-2.0+ (utils) GPL-2.0 or GPL-3.0 (lsusb.py) +USBUTILS_LICENSE_FILES = LICENSES/GPL-2.0-only.txt LICENSES/GPL-3.0-only.txt + +# Nice lsusb.py script only if there's python 3.x +ifeq ($(BR2_PACKAGE_PYTHON3),) +define USBUTILS_REMOVE_PYTHON + rm -f $(TARGET_DIR)/usr/bin/lsusb.py +endef + +USBUTILS_POST_INSTALL_TARGET_HOOKS += USBUTILS_REMOVE_PYTHON +endif + +$(eval $(autotools-package)) diff --git a/package/ushare/0001-Don-t-build-po-files-if-NLS-is-disabled.patch b/package/ushare/0001-Don-t-build-po-files-if-NLS-is-disabled.patch new file mode 100644 index 00000000..3fbda283 --- /dev/null +++ b/package/ushare/0001-Don-t-build-po-files-if-NLS-is-disabled.patch @@ -0,0 +1,56 @@ +From c9f5783bb2df4a19c6281daeda30e8ab905d2ca3 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 22 Aug 2021 10:44:48 +0200 +Subject: [PATCH] Don't build po files if NLS is disabled + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/ddugovic/uShare/pull/12] +--- + Makefile | 7 +++++-- + configure | 3 +++ + 2 files changed, 8 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index ebd8f91..6686cfd 100644 +--- a/Makefile ++++ b/Makefile +@@ -14,10 +14,13 @@ EXTRADIST = AUTHORS \ + THANKS \ + TODO \ + +-SUBDIRS = po \ +- scripts \ ++SUBDIRS = scripts \ + src \ + ++ifeq ($(NLS),yes) ++SUBDIRS += po ++endif ++ + all: + for subdir in $(SUBDIRS); do \ + $(MAKE) -C $$subdir $@; \ +diff --git a/configure b/configure +index 4a3efe0..f48806a 100755 +--- a/configure ++++ b/configure +@@ -414,6 +414,8 @@ for opt do + ;; + --with-libdlna-dir=*) libdlnadir="$optval"; + ;; ++ --enable-nls) nls="yes" ++ ;; + --disable-nls) nls="no" + ;; + --enable-dlna) dlna="yes" +@@ -723,6 +725,7 @@ append_config "LDFLAGS=$LDFLAGS" + append_config "INSTALL=$INSTALL" + + append_config "DEBUG=$debug" ++append_config "NLS=$nls" + + + echolog "Creating $CONFIG_H ..." +-- +2.32.0 + diff --git a/package/ushare/Config.in b/package/ushare/Config.in new file mode 100644 index 00000000..2dcd7737 --- /dev/null +++ b/package/ushare/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_USHARE + bool "ushare" + depends on BR2_TOOLCHAIN_HAS_THREADS # libupnp + # ushare has a completely custom configure script that does + # broken things with library ordering, which breaks static + # linking. + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBUPNP + help + uShare is a UPnP (TM) A/V & DLNA Media Server. + It implements the server component that provides UPnP media + devices with information on available multimedia files. + + http://ushare.geexbox.org/ + +comment "ushare needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/ushare/ushare.hash b/package/ushare/ushare.hash new file mode 100644 index 00000000..013b2479 --- /dev/null +++ b/package/ushare/ushare.hash @@ -0,0 +1,3 @@ +# locally computed hash +sha256 e4563141a171138900540cc979f205cf666e820f709d47a98521bc77f53a99e6 ushare-2.1.tar.gz +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/package/ushare/ushare.mk b/package/ushare/ushare.mk new file mode 100644 index 00000000..df9da223 --- /dev/null +++ b/package/ushare/ushare.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# ushare +# +################################################################################ + +USHARE_VERSION = 2.1 +USHARE_SITE = $(call github,ddugovic,uShare,v$(USHARE_VERSION)) +USHARE_DEPENDENCIES = host-pkgconf libupnp $(TARGET_NLS_DEPENDENCIES) +USHARE_LICENSE = GPL-2.0+ +USHARE_LICENSE_FILES = COPYING +USHARE_LDFLAGS = $(TARGET_NLS_LIBS) + +USHARE_CONF_OPTS = \ + --prefix=/usr \ + --cross-compile \ + --cross-prefix="$(TARGET_CROSS)" \ + --sysconfdir=/etc \ + --disable-strip + +USHARE_MAKE_OPTS = LDFLAGS="$(TARGET_LDFLAGS) $(USHARE_LDFLAGS)" + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +USHARE_CONF_OPTS += --enable-nls +USHARE_MAKE_OPTS += GMSGFMT="$(HOST_DIR)/bin/msgfmt" +else +USHARE_CONF_OPTS += --disable-nls +endif + +define USHARE_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_CONFIGURE_OPTS) \ + ./configure \ + $(USHARE_CONF_OPTS) \ + ) +endef + +define USHARE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(USHARE_MAKE_OPTS) -C $(@D) +endef + +define USHARE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install + rm -f $(TARGET_DIR)/etc/init.d/ushare +endef + +# Even though configure is called it's not autoconf +$(eval $(generic-package)) diff --git a/package/ussp-push/0001-fix-build-against-bluez-4.patch b/package/ussp-push/0001-fix-build-against-bluez-4.patch new file mode 100644 index 00000000..0694bfba --- /dev/null +++ b/package/ussp-push/0001-fix-build-against-bluez-4.patch @@ -0,0 +1,15 @@ +Fix build against bluez4. + +Signed-off-by: Samuel Martin + +--- ussp-push-0.11.orig/src/obex_socket.c 2012-11-01 09:58:51.049538708 +0100 ++++ ussp-push-0.11/src/obex_socket.c 2012-11-01 12:10:10.719506951 +0100 +@@ -197,7 +197,7 @@ static int bt_sock_name2bth(int devid, c + for (i = 0; i < niinf; i++) { + char devname[128]; + +- if (hci_remote_name(dd, &piinf[i].bdaddr, sizeof(devname) - 1, ++ if (hci_read_remote_name(dd, &piinf[i].bdaddr, sizeof(devname) - 1, + devname, 100000) >= 0) { + if (strcasecmp(devname, btname) == 0) { + *btaddr = piinf[i].bdaddr; diff --git a/package/ussp-push/0002-fix-build-again-obex-bluez.patch b/package/ussp-push/0002-fix-build-again-obex-bluez.patch new file mode 100644 index 00000000..e98fe6ef --- /dev/null +++ b/package/ussp-push/0002-fix-build-again-obex-bluez.patch @@ -0,0 +1,28 @@ +From 2d732026044d8e6cd16465ee87a73ac9692c021b Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Fri, 3 Nov 2017 09:04:12 +0100 +Subject: [PATCH] fix build again obex/bluez + +[fetch from debian source: http://http.debian.net/debian/pool/main/u/ussp-push/ussp-push_0.11-4.debian.tar.xz] + +Signed-off-by: Samuel Martin +--- + src/obex_main.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/obex_main.c b/src/obex_main.c +index a7126e6..6233d7e 100644 +--- a/src/obex_main.c ++++ b/src/obex_main.c +@@ -197,7 +197,7 @@ obex_t *__obex_connect(int devid, void *addr, int timeout, int *err) + *err = -1; + return NULL; + } +- if (!(handle = OBEX_Init(OBEX_TRANS_CUST, obex_event, 0))) { ++ if (!(handle = OBEX_Init(OBEX_TRANS_CUSTOM, obex_event, 0))) { + BTERROR("OBEX_Init failed: %s\n", strerror(errno)); + obex_free(gt); + *err = -1; +-- +2.15.0 + diff --git a/package/ussp-push/0003-add-OBEX_CharToUnicode.patch b/package/ussp-push/0003-add-OBEX_CharToUnicode.patch new file mode 100644 index 00000000..a660b552 --- /dev/null +++ b/package/ussp-push/0003-add-OBEX_CharToUnicode.patch @@ -0,0 +1,47 @@ +From eafac77d76d2a23c191a56f715d6c4afc0800da8 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Fri, 3 Nov 2017 09:10:01 +0100 +Subject: [PATCH] add OBEX_CharToUnicode + +[fetch from debian source: http://http.debian.net/debian/pool/main/u/ussp-push/ussp-push_0.11-4.debian.tar.xz] + +Signed-off-by: Samuel Martin +--- + src/obex_main.c | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +diff --git a/src/obex_main.c b/src/obex_main.c +index 6233d7e..971cc37 100644 +--- a/src/obex_main.c ++++ b/src/obex_main.c +@@ -84,7 +84,27 @@ void request_done(obex_t * handle, obex_object_t * object, int obex_cmd, int obe + + int bt_debug; + ++static int OBEX_CharToUnicode(uint8_t *uc, const uint8_t *c, int size) ++{ ++ int len, n; ++ ++ if (uc == NULL || c == NULL) ++ return -1; ++ ++ len = n = strlen((char *) c); ++ if (n*2+2 > size) ++ return -1; ++ ++ uc[n*2+1] = 0; ++ uc[n*2] = 0; + ++ while (n--) { ++ uc[n*2+1] = c[n]; ++ uc[n*2] = 0; ++ } ++ ++ return (len * 2) + 2; ++} + + /* + * These two functions are from affix/profiles/obex/obex_io.c +-- +2.15.0 + diff --git a/package/ussp-push/Config.in b/package/ussp-push/Config.in new file mode 100644 index 00000000..276c8dca --- /dev/null +++ b/package/ussp-push/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_USSP_PUSH + bool "ussp-push" + depends on !BR2_STATIC_LIBS # bluez5_utils + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, alsa-lib, libglib2 + depends on BR2_USE_MMU # dbus + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # bluez5_utils + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # bluez5_utils + select BR2_PACKAGE_OPENOBEX + select BR2_PACKAGE_BLUEZ5_UTILS + help + ussp-push is an OBEX object pusher for Linux, using the BlueZ + BlueTooth stack. + + http://www.xmailserver.org/ussp-push.html + +comment "ussp-push needs a toolchain w/ wchar, threads, dynamic library, headers >= 3.4" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 diff --git a/package/ussp-push/ussp-push.hash b/package/ussp-push/ussp-push.hash new file mode 100644 index 00000000..58874ab1 --- /dev/null +++ b/package/ussp-push/ussp-push.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 bb2748eaed6164812555b4a1e186c4f2820c5ef9ce30f12d7aac28a452719bbd ussp-push-0.11.tar.gz +# License files, locally calculated +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING diff --git a/package/ussp-push/ussp-push.mk b/package/ussp-push/ussp-push.mk new file mode 100644 index 00000000..c0479270 --- /dev/null +++ b/package/ussp-push/ussp-push.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# ussp-push +# +################################################################################ + +USSP_PUSH_VERSION = 0.11 +USSP_PUSH_SITE = http://www.xmailserver.org +USSP_PUSH_LICENSE = GPL-2.0+ +USSP_PUSH_LICENSE_FILES = COPYING + +USSP_PUSH_DEPENDENCIES = bluez5_utils openobex + +$(eval $(autotools-package)) diff --git a/package/ustream-ssl/Config.in b/package/ustream-ssl/Config.in new file mode 100644 index 00000000..540e4368 --- /dev/null +++ b/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/package/ustream-ssl/ustream-ssl.hash b/package/ustream-ssl/ustream-ssl.hash new file mode 100644 index 00000000..30686e1c --- /dev/null +++ b/package/ustream-ssl/ustream-ssl.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 932703fb2875e589e6e0ffc787e5bc57a9f424cb23692fcefa78b1e6afa80700 ustream-ssl-68d09243b6fd4473004b27ff6483352e76e6af1a-git4.tar.gz +sha256 cf28f0f01a57423983fa062eb0f04bb1a78891863cb58c53059c3d8cb52c1dd4 ustream-ssl.h diff --git a/package/ustream-ssl/ustream-ssl.mk b/package/ustream-ssl/ustream-ssl.mk new file mode 100644 index 00000000..bee8d7de --- /dev/null +++ b/package/ustream-ssl/ustream-ssl.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# ustream-ssl +# +################################################################################ + +USTREAM_SSL_VERSION = 68d09243b6fd4473004b27ff6483352e76e6af1a +USTREAM_SSL_SITE = https://git.openwrt.org/project/ustream-ssl.git +USTREAM_SSL_SITE_METHOD = 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/package/ustreamer/0001-src-libs-types.h-include-sys-types.h.patch b/package/ustreamer/0001-src-libs-types.h-include-sys-types.h.patch new file mode 100644 index 00000000..82fe5969 --- /dev/null +++ b/package/ustreamer/0001-src-libs-types.h-include-sys-types.h.patch @@ -0,0 +1,36 @@ +From 6c24c9ea610e7cc0e47d1e7124697098d5ef365e Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 15 May 2024 19:56:49 +0200 +Subject: [PATCH] src/libs/types.h: include sys/types.h (#273) + +Include sys/types.h to avoid the following uclibc build failure since +version 5.52 and +https://github.com/pikvm/ustreamer/commit/2d6716aa4762151f0fb1b900d3cd3295d328cab6: + +In file included from libs/base64.h:25, + from libs/base64.c:23: +libs/types.h:30:9: error: unknown type name 'ssize_t' + 30 | typedef ssize_t sz; + | ^~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/24498049d7beb4afaaf9f9a0c2fc0bcd26a3ee04 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/pikvm/ustreamer/commit/6c24c9ea610e7cc0e47d1e7124697098d5ef365e +--- + src/libs/types.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/libs/types.h b/src/libs/types.h +index 54e42325..b35bbaea 100644 +--- a/src/libs/types.h ++++ b/src/libs/types.h +@@ -24,6 +24,7 @@ + #include + #include + #include ++#include + + + typedef long long sll; diff --git a/package/ustreamer/Config.in b/package/ustreamer/Config.in new file mode 100644 index 00000000..79c22ee6 --- /dev/null +++ b/package/ustreamer/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_USTREAMER + bool "ustreamer" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 # V4L2_EVENT_SOURCE_CHANGE + depends on BR2_TOOLCHAIN_HAS_THREADS # libbsd + depends on !BR2_STATIC_LIBS # libbsd + depends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS # libbsd + depends on BR2_USE_WCHAR # libbsd + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBBSD + select BR2_PACKAGE_LIBEVENT + help + Lightweight and fast MJPEG-HTTP streamer + + https://github.com/pikvm/ustreamer + +comment "ustreamer needs a toolchain w/ headers >= 3.16, threads, dynamic library, wchar" + depends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS || \ + !BR2_USE_WCHAR diff --git a/package/ustreamer/ustreamer.hash b/package/ustreamer/ustreamer.hash new file mode 100644 index 00000000..7c70f019 --- /dev/null +++ b/package/ustreamer/ustreamer.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 80ab01eeaa81c7d8e9c7f62304287d176fd729cb12ca5adb2e181b5a3da79216 ustreamer-6.11.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE diff --git a/package/ustreamer/ustreamer.mk b/package/ustreamer/ustreamer.mk new file mode 100644 index 00000000..5b73e387 --- /dev/null +++ b/package/ustreamer/ustreamer.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# ustreamer +# +################################################################################ + +USTREAMER_VERSION = 6.11 +USTREAMER_SITE = $(call github,pikvm,ustreamer,v$(USTREAMER_VERSION)) +USTREAMER_LICENSE = GPL-3.0+ +USTREAMER_LICENSE_FILES = LICENSE +USTREAMER_DEPENDENCIES = jpeg libevent libbsd + +USTREAMER_MAKE_OPTS = \ + $(TARGET_CONFIGURE_OPTS) \ + WITH_PTHREAD_NP=1 \ + WITH_SETPROCTITLE=1 \ + HAS_PDEATHSIG=1 + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +USTREAMER_MAKE_OPTS += WITH_SYSTEMD=1 +USTREAMER_DEPENDENCIES += systemd +endif + +ifeq ($(BR2_PACKAGE_LIBGPIOD),y) +USTREAMER_MAKE_OPTS += WITH_GPIO=1 +USTREAMER_DEPENDENCIES += libgpiod +endif + +define USTREAMER_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(USTREAMER_MAKE_OPTS) -C $(@D) +endef + +define USTREAMER_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/ustreamer \ + $(TARGET_DIR)/usr/bin/ustreamer + $(INSTALL) -D -m 0755 $(@D)/ustreamer-dump \ + $(TARGET_DIR)/usr/bin/ustreamer-dump +endef + +$(eval $(generic-package)) diff --git a/package/utf8proc/Config.in b/package/utf8proc/Config.in new file mode 100644 index 00000000..43b50738 --- /dev/null +++ b/package/utf8proc/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_UTF8PROC + bool "utf8proc" + help + A clean C library for processing UTF-8 Unicode data. + + https://juliastrings.github.io/utf8proc diff --git a/package/utf8proc/utf8proc.hash b/package/utf8proc/utf8proc.hash new file mode 100644 index 00000000..7fee8996 --- /dev/null +++ b/package/utf8proc/utf8proc.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 bd215d04313b5bc42c1abedbcb0a6574667e31acee1085543a232204e36384c4 utf8proc-2.9.0.tar.gz +sha256 3b510150d34f248a221bb88e1d811238d6c6c18b51231822c42974c39bb07256 LICENSE.md diff --git a/package/utf8proc/utf8proc.mk b/package/utf8proc/utf8proc.mk new file mode 100644 index 00000000..42ec48e0 --- /dev/null +++ b/package/utf8proc/utf8proc.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# utf8proc +# +################################################################################ + +UTF8PROC_VERSION = 2.9.0 +UTF8PROC_SITE = https://github.com/JuliaStrings/utf8proc/releases/download/v$(UTF8PROC_VERSION) +UTF8PROC_LICENSE = MIT +UTF8PROC_LICENSE_FILES = LICENSE.md +UTF8PROC_INSTALL_STAGING = YES +UTF8PROC_SUPPORTS_IN_SOURCE_BUILD = NO + +$(eval $(cmake-package)) diff --git a/package/util-linux/0001-sys-utils-setarch.c-fix-build-with-uclibc-ng-1.0.39.patch b/package/util-linux/0001-sys-utils-setarch.c-fix-build-with-uclibc-ng-1.0.39.patch new file mode 100644 index 00000000..12dd119e --- /dev/null +++ b/package/util-linux/0001-sys-utils-setarch.c-fix-build-with-uclibc-ng-1.0.39.patch @@ -0,0 +1,39 @@ +From beef18da4de87ca5aaadf2beb14187f35cc4f50f Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 15 May 2024 18:22:11 +0200 +Subject: [PATCH] sys-utils/setarch.c: fix build with uclibc-ng < 1.0.39 + +Fix the following build failure with uclibc-ng < 1.0.39 (i.e., without +https://github.com/wbx-github/uclibc-ng/commit/85ac4f04d94e98389a8315e720630d0f95bfdfd6) +raised since version 2.39 and +https://github.com/util-linux/util-linux/commit/03a254f010b08da1175f50a8ae7882e59228f1b4: + +sys-utils/setarch.c:106:7: error: 'PER_LINUX32_3GB' undeclared here (not in a function); did you mean 'PER_LINUX32'? + 106 | X(PER_LINUX32_3GB) \ + | ^~~~~~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/fb1feb47f2660882fa53f66bacc63e191fd52175 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/util-linux/util-linux/commit/4647fc6afbf7e99c49531600425df60f1243fcd2 +--- + sys-utils/setarch.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/sys-utils/setarch.c b/sys-utils/setarch.c +index 227bc6b5de..4bcb5e69e6 100644 +--- a/sys-utils/setarch.c ++++ b/sys-utils/setarch.c +@@ -89,6 +89,11 @@ + # define PER_LINUX_FDPIC (PER_LINUX | FDPIC_FUNCPTRS) + #endif + ++/* fallback for old uclibc-headers < 1.0.39 */ ++#ifndef PER_LINUX32_3GB ++# define PER_LINUX32_3GB (PER_LINUX32 | ADDR_LIMIT_3GB) ++#endif ++ + #define ALL_PERSONALITIES \ + X(PER_LINUX) \ + X(PER_LINUX_32BIT) \ diff --git a/package/util-linux/Config.in b/package/util-linux/Config.in new file mode 100644 index 00000000..1f5dacec --- /dev/null +++ b/package/util-linux/Config.in @@ -0,0 +1,500 @@ +menuconfig BR2_PACKAGE_UTIL_LINUX + bool "util-linux" + help + Various useful/essential linux libraries and utilities. + + Things like mkfs, mkswap, swapon, fdisk, mount, dmesg, etc... + + http://www.kernel.org/pub/linux/utils/util-linux/ + +if BR2_PACKAGE_UTIL_LINUX + +config BR2_PACKAGE_UTIL_LINUX_LIBS + bool + +config BR2_PACKAGE_UTIL_LINUX_LIBBLKID + bool "libblkid" + depends on BR2_USE_MMU # fork() + help + Install libblkid. + +config BR2_PACKAGE_UTIL_LINUX_LIBFDISK + bool "libfdisk" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_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() + help + Install libsmartcols. + +config BR2_PACKAGE_UTIL_LINUX_LIBUUID + bool "libuuid" + help + Install libuuid. + +config BR2_PACKAGE_UTIL_LINUX_BINARIES + 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. + + blkdiscard, blkid, blockdev, chcpu, choom, col, colcrt, colrm, + column, ctrlaltdel, dmesg, fdisk, fincore, 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, scriptlive, scriptreplay, setarch, setsid, + sfdisk, swaplabel, swapoff, swapon, uuidgen, uuidparse, + 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 + +config BR2_PACKAGE_UTIL_LINUX_BFS + bool "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 + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # linux-pam + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # linux-pam + select BR2_PACKAGE_LINUX_PAM + help + Change login shell, real user name and information + +comment "chfn/chsh needs a toolchain w/ wchar, locale, dynamic library, gcc >= 4.9" + depends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \ + || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_UTIL_LINUX_CHMEM + bool "chmem" + help + Sets a particular size or range of memory online or offline + +config BR2_PACKAGE_UTIL_LINUX_CRAMFS + bool "cramfs utilities" + select BR2_PACKAGE_ZLIB + help + 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 + +config BR2_PACKAGE_UTIL_LINUX_FALLOCATE + bool "fallocate" + help + Preallocate space to a file + +config BR2_PACKAGE_UTIL_LINUX_FDFORMAT + bool "fdformat" + help + Low-level format a floppy disk + +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 + +config BR2_PACKAGE_UTIL_LINUX_HARDLINK + bool "hardlink" + help + Consolidate duplicate files via hardlinks + +config BR2_PACKAGE_UTIL_LINUX_HWCLOCK + bool "hwclock" + help + Query or set the hardware clock (RTC) + +config BR2_PACKAGE_UTIL_LINUX_IPCMK + bool "ipcmk" + help + Make various IPC resources + +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_IRQTOP + bool "irqtop" + depends on BR2_USE_MMU # libsmartcols + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS + help + Show information on IRQs + +config BR2_PACKAGE_UTIL_LINUX_KILL + bool "kill" + help + Send a signal to a process + +config BR2_PACKAGE_UTIL_LINUX_LAST + bool "last" + help + Show a listing of last logged in users + +config BR2_PACKAGE_UTIL_LINUX_LINE + bool "line" + help + Read one line + +config BR2_PACKAGE_UTIL_LINUX_LOGGER + bool "logger" + help + Enter messages into the system log + +config BR2_PACKAGE_UTIL_LINUX_LOGIN + bool "login" + depends on BR2_ENABLE_LOCALE # linux-pam + depends on BR2_USE_WCHAR # linux-pam + depends on !BR2_STATIC_LIBS # linux-pam + depends on !BR2_TOOLCHAIN_USES_MUSL # linux-pam + depends on BR2_USE_MMU # fork(), linux-pam + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # linux-pam + select BR2_PACKAGE_LINUX_PAM + help + Begin a session on the system + +comment "login needs a uClibc or glibc toolchain w/ wchar, locale, dynamic library, gcc >= 4.9" + depends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \ + || BR2_STATIC_LIBS \ + || BR2_TOOLCHAIN_USES_MUSL \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +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_LSFD + bool "lsfd" + depends on BR2_USE_MMU # libsmartcols + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19 + select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS + help + List file descriptors (modern replacement for lsof) + +comment "lsfd needs a toolchain w/ headers >= 3.19" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19 + +config BR2_PACKAGE_UTIL_LINUX_LSLOGINS + bool "lslogins" + depends on BR2_USE_MMU # libsmartcols + select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS + help + Display information about known users in the system + +config BR2_PACKAGE_UTIL_LINUX_LSMEM + bool "lsmem" + depends on BR2_USE_MMU # libsmartcols + select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS + help + List the ranges of available memory with their online status + +config BR2_PACKAGE_UTIL_LINUX_MESG + bool "mesg" + help + Control write access to your terminal + +config BR2_PACKAGE_UTIL_LINUX_MINIX + bool "minix" + depends on BR2_USE_MMU # fork() + help + Minix filesystem support + +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 + +config BR2_PACKAGE_UTIL_LINUX_NEWGRP + bool "newgrp" + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + Log in to a new group + +config BR2_PACKAGE_UTIL_LINUX_NOLOGIN + bool "nologin" + help + Politely refuse a login + +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 + +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 utilities (addpart, delpart, partx) + +config BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT + bool "pivot_root" + help + Change the root filesystem + +config BR2_PACKAGE_UTIL_LINUX_RAW + bool "raw" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14 + help + Build a linux raw character device + +comment "raw needs a toolchain w/ headers < 5.14" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14 + +config BR2_PACKAGE_UTIL_LINUX_RENAME + bool "rename" + help + Rename files + +config BR2_PACKAGE_UTIL_LINUX_RFKILL + bool "rfkill" + depends on BR2_USE_MMU # libsmartcols + select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS + help + Tool for enabling and disabling wireless devices. This new + implementation is based upon, and backward compatible with, + the original rfkill from Johannes Berg and Marcel Holtmann. + +config BR2_PACKAGE_UTIL_LINUX_RUNUSER + bool "runuser" + 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 # fork(), linux-pam + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # linux-pam + select BR2_PACKAGE_LINUX_PAM + help + Run a command with substitute user and group ID (does not need + to ask for a password, because it may be executed by the root + user only) + +comment "runuser needs a uClibc or glibc toolchain w/ wchar, locale, dynamic library, gcc >= 4.9" + depends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \ + || BR2_STATIC_LIBS \ + || BR2_TOOLCHAIN_USES_MUSL \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_UTIL_LINUX_SCHEDUTILS + bool "scheduling utilities" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 + help + Scheduling utilities (chrt, ionice, taskset, uclampset) + +comment "scheduling utilities need a toolchain w/ headers >= 3.14" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 + +config BR2_PACKAGE_UTIL_LINUX_SETPRIV + bool "setpriv" + select BR2_PACKAGE_LIBCAP_NG + help + Run a program with different Linux privilege settings + +config BR2_PACKAGE_UTIL_LINUX_SETTERM + bool "setterm" + select BR2_PACKAGE_NCURSES + help + Set terminal attributes + +config BR2_PACKAGE_UTIL_LINUX_SU + bool "su" + 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 # fork(), linux-pam + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # linux-pam + select BR2_PACKAGE_LINUX_PAM + help + Run a command with substitute user and group ID + +comment "su needs a uClibc or glibc toolchain w/ wchar, locale, dynamic library, gcc >= 4.9" + depends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \ + || BR2_STATIC_LIBS \ + || BR2_TOOLCHAIN_USES_MUSL \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_UTIL_LINUX_SULOGIN + bool "sulogin" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + Single-user login + +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 + +config BR2_PACKAGE_UTIL_LINUX_TUNELP + bool "tunelp" + select BR2_PACKAGE_NCURSES + help + Set various parameters for the lp device + +config BR2_PACKAGE_UTIL_LINUX_UL + bool "ul" + select BR2_PACKAGE_NCURSES + help + Do underlining + +config BR2_PACKAGE_UTIL_LINUX_UNSHARE + bool "unshare" + depends on BR2_USE_MMU # fork() + help + Run program with some namespaces unshared from parent + +config BR2_PACKAGE_UTIL_LINUX_UTMPDUMP + bool "utmpdump" + help + Dump UTMP and WTMP files in raw format + +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_WAITPID + bool "waitpid" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3 # pidfd_open + help + Utility to wait for arbitrary processes + +comment "waitpid needs a toolchain w/ headers >= 5.3" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3 + +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_WIPEFS + bool "wipefs" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS + help + wipefs can erase filesystem, raid or partition-table + signatures (magic strings) from the specified device + to make the signatures invisible for libblkid. wipefs + does not erase the filesystem itself nor any other data + from the device. + +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 + +config BR2_PACKAGE_UTIL_LINUX_WRITE + bool "write" + help + Send a message to another user + +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 diff --git a/package/util-linux/Config.in.host b/package/util-linux/Config.in.host new file mode 100644 index 00000000..f73dc43d --- /dev/null +++ b/package/util-linux/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_UTIL_LINUX + bool "host util-linux" + help + Various useful/essential linux libraries and utilities. + + Things like mkfs, mkswap, swapon, fdisk, mount, dmesg, etc... + + http://www.kernel.org/pub/linux/utils/util-linux/ diff --git a/package/util-linux/su.pam b/package/util-linux/su.pam new file mode 100644 index 00000000..69b2a40c --- /dev/null +++ b/package/util-linux/su.pam @@ -0,0 +1,15 @@ +auth sufficient pam_rootok.so +auth required pam_wheel.so use_uid +auth required pam_env.so +auth required pam_unix.so nullok + +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/package/util-linux/util-linux-libs/util-linux-libs.hash b/package/util-linux/util-linux-libs/util-linux-libs.hash new file mode 120000 index 00000000..dc1b2f86 --- /dev/null +++ b/package/util-linux/util-linux-libs/util-linux-libs.hash @@ -0,0 +1 @@ +../util-linux.hash \ No newline at end of file diff --git a/package/util-linux/util-linux-libs/util-linux-libs.mk b/package/util-linux/util-linux-libs/util-linux-libs.mk new file mode 100644 index 00000000..0337e7e1 --- /dev/null +++ b/package/util-linux/util-linux-libs/util-linux-libs.mk @@ -0,0 +1,95 @@ +################################################################################ +# +# util-linux-libs +# +################################################################################ + +# Please keep this file as similar as possible to util-linux.mk + +UTIL_LINUX_LIBS_VERSION = $(UTIL_LINUX_VERSION) +UTIL_LINUX_LIBS_SOURCE = $(UTIL_LINUX_SOURCE) +UTIL_LINUX_LIBS_SITE = $(UTIL_LINUX_SITE) +UTIL_LINUX_LIBS_DL_SUBDIR = $(UTIL_LINUX_DL_SUBDIR) +UTIL_LINUX_LIBS_CPE_ID_VENDOR = $(UTIL_LINUX_CPE_ID_VENDOR) +UTIL_LINUX_LIBS_CPE_ID_PRODUCT = $(UTIL_LINUX_CPE_ID_PRODUCT) + +# README.licensing claims that some files are GPL-2.0 only, but this is not +# true. Some files are GPL-3.0+ but only in tests and optionally in hwclock +# (but we disable that option). rfkill uses an ISC-style license. +UTIL_LINUX_LIBS_LICENSE = LGPL-2.1+ (libblkid, libfdisk, libmount), BSD-3-Clause (libuuid) +UTIL_LINUX_LIBS_LICENSE_FILES = README.licensing \ + Documentation/licenses/COPYING.BSD-3-Clause \ + Documentation/licenses/COPYING.LGPL-2.1-or-later + +UTIL_LINUX_LIBS_INSTALL_STAGING = YES +UTIL_LINUX_LIBS_DEPENDENCIES = \ + host-pkgconf \ + $(if $(BR2_PACKAGE_LIBXCRYPT),libxcrypt) \ + $(TARGET_NLS_DEPENDENCIES) +UTIL_LINUX_LIBS_CONF_OPTS += \ + --disable-rpath \ + --disable-makeinstall-chown + +UTIL_LINUX_LIBS_LINK_LIBS = $(TARGET_NLS_LIBS) + +# Prevent the installation from attempting to move shared libraries from +# ${usrlib_execdir} (/usr/lib) to ${libdir} (/lib), since both paths are +# the same when merged usr is in use. +ifeq ($(BR2_ROOTFS_MERGED_USR),y) +UTIL_LINUX_LIBS_CONF_OPTS += --bindir=/usr/bin --sbindir=/usr/sbin --libdir=/usr/lib +endif + +# systemd depends on util-linux-libs so we disable systemd support +UTIL_LINUX_LIBS_CONF_OPTS += \ + --without-systemd \ + --with-systemdsystemunitdir=no + +# systemd/eudev depend on util-linux-libs so we disable udev support +UTIL_LINUX_LIBS_CONF_OPTS += --without-udev + +# No libs use wchar +UTIL_LINUX_LIBS_CONF_OPTS += --disable-widechar + +# No libs use ncurses +UTIL_LINUX_LIBS_CONF_OPTS += --without-ncursesw --without-ncurses + +# workaround for static_assert on uclibc-ng < 1.0.42 +UTIL_LINUX_LIBS_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -Dstatic_assert=_Static_assert" + +# 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_LIBS_CONF_ENV += LIBS="$(UTIL_LINUX_LIBS_LINK_LIBS)" +UTIL_LINUX_LIBS_MAKE_OPTS += LIBS="$(UTIL_LINUX_LIBS_LINK_LIBS)" + +# libmount optionally uses selinux +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBMOUNT)$(BR2_PACKAGE_LIBSELINUX),yy) +UTIL_LINUX_LIBS_DEPENDENCIES += libselinux +UTIL_LINUX_LIBS_CONF_OPTS += --with-selinux +else +UTIL_LINUX_LIBS_CONF_OPTS += --without-selinux +endif + +# Disable utilities +UTIL_LINUX_LIBS_CONF_OPTS += \ + --disable-all-programs \ + $(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) + +# libmount python bindings are separate, will be installed by full util-linux +UTIL_LINUX_LIBS_CONF_OPTS += --without-python --disable-pylibmount + +# No libs use readline +UTIL_LINUX_LIBS_CONF_OPTS += --without-readline + +# No libs use audit +UTIL_LINUX_LIBS_CONF_OPTS += --without-audit + +# No libs use libmagic +UTIL_LINUX_LIBS_CONF_OPTS += --without-libmagic + +$(eval $(autotools-package)) diff --git a/package/util-linux/util-linux.hash b/package/util-linux/util-linux.hash new file mode 100644 index 00000000..d47f47fd --- /dev/null +++ b/package/util-linux/util-linux.hash @@ -0,0 +1,9 @@ +# From https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.39/sha256sums.asc +sha256 7b6605e48d1a49f43cc4b4cfc59f313d0dd5402fa40b96810bd572e167dfed0f util-linux-2.39.3.tar.xz +# License files, locally calculated +sha256 13f0ea46d12d798c095a6ad39d7ddc988e2e4d274c6494115f6b463f7bc4f702 README.licensing +sha256 9b718a9460fed5952466421235bc79eb49d4e9eacc920d7a9dd6285ab8fd6c6d Documentation/licenses/COPYING.BSD-3-Clause +sha256 ba7640f00d93e72e92b94b9d71f25ec53bac2f1682f5c4adcccb0018359f60f8 Documentation/licenses/COPYING.BSD-4-Clause-UC +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 Documentation/licenses/COPYING.GPL-2.0-or-later +sha256 e53348ce276358e9997014071c5294b36a18c4b34f32f00ee57b9acce0aafd63 Documentation/licenses/COPYING.ISC +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 Documentation/licenses/COPYING.LGPL-2.1-or-later diff --git a/package/util-linux/util-linux.mk b/package/util-linux/util-linux.mk new file mode 100644 index 00000000..f2821978 --- /dev/null +++ b/package/util-linux/util-linux.mk @@ -0,0 +1,323 @@ +################################################################################ +# +# util-linux +# +################################################################################ + +# When making changes to this file, please check if +# util-linux-libs/util-linux-libs.mk needs to be updated accordingly as well. + +UTIL_LINUX_VERSION_MAJOR = 2.39 +UTIL_LINUX_VERSION = $(UTIL_LINUX_VERSION_MAJOR).3 +UTIL_LINUX_SOURCE = util-linux-$(UTIL_LINUX_VERSION).tar.xz +UTIL_LINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/util-linux/v$(UTIL_LINUX_VERSION_MAJOR) + +# README.licensing claims that some files are GPL-2.0 only, but this is not +# true. Some files are GPL-3.0+ but only in tests and optionally in hwclock +# (but we disable that option). rfkill uses an ISC-style license. +UTIL_LINUX_LICENSE = \ + GPL-2.0+, \ + BSD-4-Clause, \ + LGPL-2.1+ (libblkid, libfdisk, libmount), \ + BSD-3-Clause (libuuid), \ + BSD-2-Clause (xxhash), \ + ISC (rfkill) +UTIL_LINUX_LICENSE_FILES = README.licensing \ + Documentation/licenses/COPYING.BSD-3-Clause \ + Documentation/licenses/COPYING.BSD-4-Clause-UC \ + Documentation/licenses/COPYING.GPL-2.0-or-later \ + Documentation/licenses/COPYING.ISC \ + Documentation/licenses/COPYING.LGPL-2.1-or-later + +UTIL_LINUX_CPE_ID_VENDOR = kernel + +# 0001-libmount-ifdef-statx-call.patch +UTIL_LINUX_AUTORECONF = YES + +UTIL_LINUX_INSTALL_STAGING = YES +UTIL_LINUX_DEPENDENCIES = \ + host-pkgconf \ + $(if $(BR2_PACKAGE_LIBXCRYPT),libxcrypt) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_LIBS),util-linux-libs) \ + $(TARGET_NLS_DEPENDENCIES) +UTIL_LINUX_CONF_OPTS += \ + --disable-rpath \ + --disable-makeinstall-chown + +UTIL_LINUX_LINK_LIBS = $(TARGET_NLS_LIBS) + +HOST_UTIL_LINUX_DEPENDENCIES = host-pkgconf + +# We also don't want the host-python dependency +HOST_UTIL_LINUX_CONF_OPTS = \ + --without-systemd \ + --with-systemdsystemunitdir=no \ + --without-python + +ifneq ($(BR2_PACKAGE_UTIL_LINUX_BINARIES)$(BR2_PACKAGE_UTIL_LINUX_CRAMFS)$(BR2_PACKAGE_UTIL_LINUX_FSCK)$(BR2_PACKAGE_UTIL_LINUX_LOSETUP),) +UTIL_LINUX_SELINUX_MODULES = fstools +endif + +# Prevent the installation from attempting to move shared libraries from +# ${usrlib_execdir} (/usr/lib) to ${libdir} (/lib), since both paths are +# the same when merged usr is in use. +ifeq ($(BR2_ROOTFS_MERGED_USR),y) +UTIL_LINUX_CONF_OPTS += --bindir=/usr/bin --sbindir=/usr/sbin --libdir=/usr/lib +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +UTIL_LINUX_CONF_OPTS += --with-systemd --with-systemdsystemunitdir=/usr/lib/systemd/system +UTIL_LINUX_DEPENDENCIES += systemd +else +UTIL_LINUX_CONF_OPTS += --without-systemd --with-systemdsystemunitdir=no +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +UTIL_LINUX_CONF_OPTS += --with-udev +UTIL_LINUX_DEPENDENCIES += udev +else +UTIL_LINUX_CONF_OPTS += --without-udev +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 += NCURSESW6_CONFIG=$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS) +else +UTIL_LINUX_CONF_OPTS += --without-ncursesw --with-ncurses --disable-widechar +UTIL_LINUX_CONF_ENV += NCURSES6_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 + +# workaround for static_assert on uclibc-ng < 1.0.42 +UTIL_LINUX_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -Dstatic_assert=_Static_assert" + +# 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_LINK_LIBS)" +UTIL_LINUX_MAKE_OPTS += LIBS="$(UTIL_LINUX_LINK_LIBS)" + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +UTIL_LINUX_DEPENDENCIES += libselinux +UTIL_LINUX_CONF_OPTS += --with-selinux +else +UTIL_LINUX_CONF_OPTS += --without-selinux +define UTIL_LINUX_SELINUX_PAMFILES_TWEAK + $(foreach f,su su-l, + $(SED) '/^.*pam_selinux.so.*$$/d' \ + $(TARGET_DIR)/etc/pam.d/$(f) + ) +endef +endif + +# Used by setpriv +UTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBCAP_NG),libcap-ng) + +# Used by cramfs utils +UTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_ZLIB),zlib) + +# Used by login-utils +UTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_LINUX_PAM),linux-pam) + +# Used by hardlink +UTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_PCRE2),pcre2) + +# 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_CHMEM),--enable-chmem,--disable-chmem) \ + $(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_FSCK),--enable-fsck,--disable-fsck) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_HARDLINK),--enable-hardlink,--disable-hardlink) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_HWCLOCK),--enable-hwclock --disable-hwclock-gplv3,--disable-hwclock) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_IPCMK),--enable-ipcmk,--disable-ipcmk) \ + $(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_IRQTOP),--enable-irqtop,--disable-irqtop) \ + $(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),--enable-login,--disable-login) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_LOSETUP),--enable-losetup,--disable-losetup) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_LSFD),--enable-lsfd,--disable-lsfd) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_LSLOGINS),--enable-lslogins,--disable-lslogins) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_LSMEM),--enable-lsmem,--disable-lsmem) \ + $(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) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_MOUNT),--enable-mount,--disable-mount) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_MOUNTPOINT),--enable-mountpoint,--disable-mountpoint) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_NEWGRP),--enable-newgrp,--disable-newgrp) \ + $(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) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_RFKILL),--enable-rfkill,--disable-rfkill) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_RUNUSER),--enable-runuser,--disable-runuser) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_SCHEDUTILS),--enable-schedutils,--disable-schedutils) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_SETPRIV),--enable-setpriv,--disable-setpriv) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_SETTERM),--enable-setterm,--disable-setterm) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_SU),--enable-su,--disable-su) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_SULOGIN),--enable-sulogin,--disable-sulogin) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_SWITCH_ROOT),--enable-switch_root,--disable-switch_root) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_TUNELP),--enable-tunelp,--disable-tunelp) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_UL),--enable-ul,--disable-ul) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_UNSHARE),--enable-unshare,--disable-unshare) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_UTMPDUMP),--enable-utmpdump,--disable-utmpdump) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_UUIDD),--enable-uuidd,--disable-uuidd) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_VIPW),--enable-vipw,--disable-vipw) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_WAITPID),--enable-waitpid,--disable-waitpid) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_WALL),--enable-wall,--disable-wall) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_WDCTL),--enable-wdctl,--disable-wdctl) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_WIPEFS),--enable-wipefs,--disable-wipefs) \ + $(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 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 \ + --without-libmagic \ + --without-ncurses \ + --without-ncursesw \ + --without-tinfo + +# Disable raw command since starting from version 2.37 needs a +# work-around to build but in the end we don't need at all. +HOST_UTIL_LINUX_CONF_OPTS += \ + --disable-raw + +ifeq ($(BR2_PACKAGE_HOST_UTIL_LINUX),y) +HOST_UTIL_LINUX_CONF_OPTS += --disable-makeinstall-chown +# disable commands that have ncurses dependency, as well as +# other ones that are useless on the host +HOST_UTIL_LINUX_CONF_OPTS += \ + --disable-agetty \ + --disable-chfn-chsh \ + --disable-chmem \ + --disable-ipcmk \ + --disable-login \ + --disable-lsfd \ + --disable-lslogins \ + --disable-mesg \ + --disable-more \ + --disable-newgrp \ + --disable-nologin \ + --disable-nsenter \ + --disable-pg \ + --disable-rfkill \ + --disable-runuser \ + --disable-schedutils \ + --disable-setpriv \ + --disable-setterm \ + --disable-su \ + --disable-sulogin \ + --disable-tunelp \ + --disable-ul \ + --disable-unshare \ + --disable-uuidd \ + --disable-vipw \ + --disable-wall \ + --disable-wdctl \ + --disable-write \ + --disable-zramctl +# Used by cramfs utils +HOST_UTIL_LINUX_DEPENDENCIES += host-zlib +else +HOST_UTIL_LINUX_CONF_OPTS += --disable-all-programs +endif + +# Install libmount Python bindings +ifeq ($(BR2_PACKAGE_PYTHON3),y) +UTIL_LINUX_CONF_OPTS += --with-python +UTIL_LINUX_DEPENDENCIES += python3 +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBMOUNT),y) +UTIL_LINUX_CONF_OPTS += --enable-pylibmount +else +UTIL_LINUX_CONF_OPTS += --disable-pylibmount +endif +else +UTIL_LINUX_CONF_OPTS += --without-python +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +UTIL_LINUX_CONF_OPTS += --with-readline +UTIL_LINUX_LINK_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 + +ifeq ($(BR2_PACKAGE_FILE),y) +UTIL_LINUX_CONF_OPTS += --with-libmagic +UTIL_LINUX_DEPENDENCIES += file +else +UTIL_LINUX_CONF_OPTS += --without-libmagic +endif + +# Install PAM configuration files +ifeq ($(BR2_PACKAGE_UTIL_LINUX_SU)$(BR2_PACKAGE_LINUX_PAM),yy) +define UTIL_LINUX_INSTALL_PAMFILES + $(INSTALL) -D -m 0644 package/util-linux/su.pam \ + $(TARGET_DIR)/etc/pam.d/su + $(INSTALL) -D -m 0644 package/util-linux/su.pam \ + $(TARGET_DIR)/etc/pam.d/su-l + $(UTIL_LINUX_SELINUX_PAMFILES_TWEAK) +endef +UTIL_LINUX_POST_INSTALL_TARGET_HOOKS += UTIL_LINUX_INSTALL_PAMFILES +endif + +# Install agetty->getty symlink to avoid breakage when there's no busybox +ifeq ($(BR2_PACKAGE_UTIL_LINUX_AGETTY),y) +ifeq ($(BR2_PACKAGE_BUSYBOX),) +define UTIL_LINUX_GETTY_SYMLINK + ln -sf agetty $(TARGET_DIR)/sbin/getty +endef +endif +endif + +UTIL_LINUX_POST_INSTALL_TARGET_HOOKS += UTIL_LINUX_GETTY_SYMLINK + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) + +# Must be included after the autotools-package call, to make sure all variables +# are available +include package/util-linux/util-linux-libs/util-linux-libs.mk diff --git a/package/utp_com/Config.in.host b/package/utp_com/Config.in.host new file mode 100644 index 00000000..8f733de8 --- /dev/null +++ b/package/utp_com/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_UTP_COM + bool "host utp_com" + help + This package is used to send commands to hardware + via Freescale's UTP protocol (similar to MFGTools) + + https://github.com/ixonos/utp_com diff --git a/package/utp_com/utp_com.hash b/package/utp_com/utp_com.hash new file mode 100644 index 00000000..9a680f27 --- /dev/null +++ b/package/utp_com/utp_com.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 8b5ba0058a78de69faf6822bb10b457fff2f9e55dc112ccb81c35214b061c6e6 utp_com-dee512ced1e9367d223d22f10797fbf9aeacfab6.tar.gz +sha256 a45d0bb572ed792ed34627a72621834b3ba92aab6e2cc4e04301dee7a728d753 LICENSE diff --git a/package/utp_com/utp_com.mk b/package/utp_com/utp_com.mk new file mode 100644 index 00000000..5890a70d --- /dev/null +++ b/package/utp_com/utp_com.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# utp_com +# +################################################################################ + +UTP_COM_VERSION = dee512ced1e9367d223d22f10797fbf9aeacfab6 +UTP_COM_SITE = $(call github,freescale,utp_com,$(UTP_COM_VERSION)) +UTP_COM_LICENSE = GPL-2.0+ +UTP_COM_LICENSE_FILES = LICENSE +HOST_UTP_COM_DEPENDENCIES = host-sg3_utils + +define HOST_UTP_COM_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define HOST_UTP_COM_INSTALL_CMDS + $(INSTALL) -D -m 755 $(@D)/utp_com $(HOST_DIR)/bin/utp_com +endef + +$(eval $(host-generic-package)) diff --git a/package/uuu/Config.in.host b/package/uuu/Config.in.host new file mode 100644 index 00000000..99f20ee0 --- /dev/null +++ b/package/uuu/Config.in.host @@ -0,0 +1,18 @@ +config BR2_PACKAGE_HOST_UUU + bool "host uuu" + depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb + help + UUU (Universal Update Utility) is Freescale/NXP I.MX Chip + image deploy tool. UUU is an evolution of MFGTools + (aka MFGTools v3). + + To be able to run uuu without root privileges, execute the + following steps: + + sudo sh -c "uuu -udev >> /etc/udev/rules.d/70-uuu.rules" + sudo udevadm control --reload + + https://github.com/nxp-imx/mfgtools + +comment "host uuu needs a toolchain w/ host gcc >= 4.9" + depends on !BR2_HOST_GCC_AT_LEAST_4_9 diff --git a/package/uuu/readme.txt b/package/uuu/readme.txt new file mode 100644 index 00000000..80dd90b9 --- /dev/null +++ b/package/uuu/readme.txt @@ -0,0 +1,13 @@ +uuu Howto +========= + +Running uuu without root privileges +----------------------------------- + +Accessing USB devices on Linux requires root privileges by default. +To be able to run uuu without root priviles, execute the following +steps: + + sudo sh -c "uuu -udev >> /etc/udev/rules.d/70-uuu.rules" + sudo udevadm control --reload + diff --git a/package/uuu/uuu.hash b/package/uuu/uuu.hash new file mode 100644 index 00000000..9dc286c4 --- /dev/null +++ b/package/uuu/uuu.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 723d3da358e6af974a056e3adbcb105fac9dad4b87544de0d22b8c974a8037aa uuu_source-uuu_1.5.182.tar.gz +sha256 cc8d47f7b9260f6669ecd41c24554c552f17581d81ee8fc602c6d23edb8bf495 LICENSE diff --git a/package/uuu/uuu.mk b/package/uuu/uuu.mk new file mode 100644 index 00000000..e57828a0 --- /dev/null +++ b/package/uuu/uuu.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# uuu +# +################################################################################ + +UUU_VERSION = 1.5.182 +UUU_SOURCE = uuu_source-uuu_$(UUU_VERSION).tar.gz +UUU_SITE = https://github.com/nxp-imx/mfgtools/releases/download/uuu_$(UUU_VERSION) +UUU_LICENSE = BSD 3-Clause "New" or "Revised" License +UUU_LICENSE_FILES = LICENSE +HOST_UUU_DEPENDENCIES = \ + host-bzip2 \ + host-libusb \ + host-openssl \ + host-tinyxml2 \ + host-zlib \ + host-zstd + +$(eval $(host-cmake-package)) diff --git a/package/uvw/Config.in b/package/uvw/Config.in new file mode 100644 index 00000000..e5cfc541 --- /dev/null +++ b/package/uvw/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_UVW + bool "uvw" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv + depends on BR2_USE_MMU # libuv + depends on !BR2_STATIC_LIBS # libuv + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17 + select BR2_PACKAGE_LIBUV + help + Header-only, event based, tiny and easy to use + libuv wrapper in modern C++. + + https://github.com/skypjack/uvw + +comment "uvw needs a toolchain w/ NPTL, dynamic library, C++, gcc >= 7" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS || \ + !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_7 + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 diff --git a/package/uvw/uvw.hash b/package/uvw/uvw.hash new file mode 100644 index 00000000..d346ac16 --- /dev/null +++ b/package/uvw/uvw.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c16600573871a5feeb524234b378ab832c8971b2a68d030c6bd0e3077d416ade uvw-3.4.0_libuv_v1.48.tar.gz +sha256 5e439d0ad6e1b16f2f14023872c49cb2cf1b62a172c30b864cb45a5aa6533454 LICENSE diff --git a/package/uvw/uvw.mk b/package/uvw/uvw.mk new file mode 100644 index 00000000..a1eff0e4 --- /dev/null +++ b/package/uvw/uvw.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# uvw +# +################################################################################ + +UVW_VERSION = 3.4.0_libuv_v1.48 +UVW_SITE = $(call github,skypjack,uvw,v$(UVW_VERSION)) +UVW_INSTALL_STAGING = YES +UVW_INSTALL_TARGET = NO +UVW_SUPPORTS_IN_SOURCE_BUILD = NO +UVW_DEPENDENCIES = libuv +UVW_LICENSE = MIT +UVW_LICENSE_FILES = LICENSE + +$(eval $(cmake-package)) diff --git a/package/ux500-firmware/Config.in b/package/ux500-firmware/Config.in new file mode 100644 index 00000000..1c182373 --- /dev/null +++ b/package/ux500-firmware/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_UX500_FIRMWARE + bool "ux500-firmware" + help + This package provides various binary firmware files (closed + binary blobs) for the Azurewave AW-NH580 combo module (wifi, + bt, gps). + + https://launchpad.net/~igloocommunity-maintainers/+archive/snowball/+files/ diff --git a/package/ux500-firmware/ux500-firmware.hash b/package/ux500-firmware/ux500-firmware.hash new file mode 100644 index 00000000..b77ed204 --- /dev/null +++ b/package/ux500-firmware/ux500-firmware.hash @@ -0,0 +1,3 @@ +# locally computed hash +sha256 81633274a9157c076e5e09b5addd81fbcef504b829fc801041cea50eea774bcd ux500-firmware_1.1.3-6linaro1.tar.gz +sha256 b5bbc3fb3ff2f8e165b3bf60b25702d8970b3d7fe88b1c883f20615d550a7cb2 license.txt diff --git a/package/ux500-firmware/ux500-firmware.mk b/package/ux500-firmware/ux500-firmware.mk new file mode 100644 index 00000000..428ed342 --- /dev/null +++ b/package/ux500-firmware/ux500-firmware.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# ux500-firmware +# +################################################################################ + +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_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 + $(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 +endef + +$(eval $(generic-package)) diff --git a/package/v4l2grab/Config.in b/package/v4l2grab/Config.in new file mode 100644 index 00000000..ec3a7a8c --- /dev/null +++ b/package/v4l2grab/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_V4L2GRAB + bool "v4l2grab" + depends on BR2_TOOLCHAIN_HAS_THREADS # libv4l + depends on BR2_USE_MMU # libv4l + depends on !BR2_STATIC_LIBS # libv4l + depends on BR2_INSTALL_LIBSTDCPP # libv4l + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 # libv4l + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBV4L + help + Utility for grabbing JPEGs form V4L2 devices. This tool is + similar to v4l2grab available from libv4l contrib directory, + but provides additional features such as JPEG output. + + http://www.twam.info/software/v4l2grab-grabbing-jpegs-from-v4l2-devices + +comment "v4l2grab needs a toolchain w/ threads, dynamic library, C++ and headers >= 3.0" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 diff --git a/package/v4l2grab/v4l2grab.hash b/package/v4l2grab/v4l2grab.hash new file mode 100644 index 00000000..eba36b5c --- /dev/null +++ b/package/v4l2grab/v4l2grab.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 9a8d0d1ca5ac9fb9f66e00300bb3265d156cf1cb67eb30f6e6637c83b0b507a1 v4l2grab-f8d8844d52387b3db7b8736f5e86156d9374f781.tar.gz +sha256 7fa0d45fe86fda646fada21ecfa7672e951b01c521aecd358f586facd65fb5b3 LICENSE.md diff --git a/package/v4l2grab/v4l2grab.mk b/package/v4l2grab/v4l2grab.mk new file mode 100644 index 00000000..68efe27f --- /dev/null +++ b/package/v4l2grab/v4l2grab.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# v4l2grab +# +################################################################################ + +V4L2GRAB_VERSION = f8d8844d52387b3db7b8736f5e86156d9374f781 +V4L2GRAB_SITE = $(call github,twam,v4l2grab,$(V4L2GRAB_VERSION)) +V4L2GRAB_LICENSE = GPL-2.0+ +V4L2GRAB_LICENSE_FILES = LICENSE.md +# Fetched from github, no pre-generated configure script provided +V4L2GRAB_AUTORECONF = YES +V4L2GRAB_DEPENDENCIES = jpeg libv4l + +$(eval $(autotools-package)) diff --git a/package/v4l2loopback/Config.in b/package/v4l2loopback/Config.in new file mode 100644 index 00000000..d8ca31e5 --- /dev/null +++ b/package/v4l2loopback/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_V4L2LOOPBACK + bool "v4l2loopback" + depends on BR2_LINUX_KERNEL + help + This module allows you to create "virtual video devices". + Normal (v4l2) applications will read these devices as if + they were ordinary video devices, but the video will not be + read from e.g. a capture card but instead it is generated by + another application. + + https://github.com/umlaeute/v4l2loopback + +if BR2_PACKAGE_V4L2LOOPBACK + +config BR2_PACKAGE_V4L2LOOPBACK_UTILS + bool "utils" + depends on BR2_USE_MMU # bash + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash + select BR2_PACKAGE_BASH # runtime dependency + select BR2_PACKAGE_SUDO # runtime dependency + help + Install applications to interact with v4l2-loopback devices + ("virtual video devices"). Currently there is only a single + command line utility: v4l2loopback-ctl: tool to set + framerate, format and timeout image. + +endif + +comment "v4l2loopback needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL diff --git a/package/v4l2loopback/v4l2loopback.hash b/package/v4l2loopback/v4l2loopback.hash new file mode 100644 index 00000000..d897fd48 --- /dev/null +++ b/package/v4l2loopback/v4l2loopback.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 e0782b8abe8f2235e2734f725dc1533a0729e674c4b7834921ade43b9f04939b v4l2loopback-0.12.7.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/v4l2loopback/v4l2loopback.mk b/package/v4l2loopback/v4l2loopback.mk new file mode 100644 index 00000000..50a168fc --- /dev/null +++ b/package/v4l2loopback/v4l2loopback.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# v4l2loopback +# +################################################################################ + +V4L2LOOPBACK_VERSION = 0.12.7 +V4L2LOOPBACK_SITE = $(call github,umlaeute,v4l2loopback,v$(V4L2LOOPBACK_VERSION)) +V4L2LOOPBACK_LICENSE = GPL-2.0+ +V4L2LOOPBACK_LICENSE_FILES = COPYING +V4L2LOOPBACK_CPE_ID_PREFIX = cpe:2.3:o + +ifeq ($(BR2_PACKAGE_V4L2LOOPBACK_UTILS),y) +define V4L2LOOPBACK_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/utils/v4l2loopback-ctl $(TARGET_DIR)/usr/bin/v4l2loopback-ctl +endef +endif + +# CONFIG_MEDIA_SUPPORT depends on CONFIG_HAS_IOMEM, which is only +# available when CONFIG_PCI=y on S390. CONFIG_VIDEO_DEV needs +# CONFIG_I2C since Linux 5.18. +define V4L2LOOPBACK_LINUX_CONFIG_FIXUPS + $(if $(BR2_s390x),$(call KCONFIG_ENABLE_OPT,CONFIG_PCI)) + $(call KCONFIG_ENABLE_OPT,CONFIG_MEDIA_SUPPORT) + $(call KCONFIG_ENABLE_OPT,CONFIG_I2C) + $(call KCONFIG_ENABLE_OPT,CONFIG_VIDEO_DEV) +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/vala/0001-dont-add-dirty-to-valac-version.patch b/package/vala/0001-dont-add-dirty-to-valac-version.patch new file mode 100644 index 00000000..8d878cd4 --- /dev/null +++ b/package/vala/0001-dont-add-dirty-to-valac-version.patch @@ -0,0 +1,28 @@ +valac: don't append -dirty to version + +Don't append -dirty to the valac version number if the Buildroot Git +tree has uncommited changes. + +The patched script is meant for the valac developers, but it also +activates if you build valac in a subdirectory of a Git tree (e.g. +as is commonly done in Buildroot). + +The effect is that valac gets built as being version x.y.z-dirty, which +breaks programs (such as Midori) that explicitly check for valac-x.y.z. + +Signed-off-by: Simon Dawson +[Fabrice: update for 0.52.4] +Signed-off-by: Fabrice Fontaine +diff -Nur a/build-aux/git-version-gen b/build-aux/git-version-gen +--- a/build-aux/git-version-gen 2010-08-15 12:49:03.000000000 +0100 ++++ b/build-aux/git-version-gen 2012-05-14 10:17:19.977204570 +0100 +@@ -135,7 +135,7 @@ + *) # Append the suffix only if there isn't one already. + case $v in + *-dirty) ;; +- *) v="$v-dirty" ;; ++ #*) v="$v-dirty" ;; + esac ;; + esac + fi + diff --git a/package/vala/vala-wrapper b/package/vala/vala-wrapper new file mode 100644 index 00000000..84fc905b --- /dev/null +++ b/package/vala/vala-wrapper @@ -0,0 +1,2 @@ +#!/bin/sh +$0-@VALA_VERSION@ --vapidir=${STAGING_DIR}/usr/share/vala/vapi --girdir=${STAGING_DIR}/usr/share/gir-1.0 "$@" diff --git a/package/vala/vala.hash b/package/vala/vala.hash new file mode 100644 index 00000000..a16875ac --- /dev/null +++ b/package/vala/vala.hash @@ -0,0 +1,4 @@ +# From https://download.gnome.org/sources/vala/0.56/vala-0.56.17.sha256sum +sha256 26100c4e4ef0049c619275f140d97cf565883d00c7543c82bcce5a426934ed6a vala-0.56.17.tar.xz +# Locally computed +sha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a COPYING diff --git a/package/vala/vala.mk b/package/vala/vala.mk new file mode 100644 index 00000000..85f92820 --- /dev/null +++ b/package/vala/vala.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# vala +# +################################################################################ + +VALA_VERSION_MAJOR = 0.56 +VALA_VERSION = $(VALA_VERSION_MAJOR).17 +VALA_SITE = http://download.gnome.org/sources/vala/$(VALA_VERSION_MAJOR) +VALA_SOURCE = vala-$(VALA_VERSION).tar.xz +VALA_LICENSE = LGPL-2.1+ +VALA_LICENSE_FILES = COPYING +VALA_CPE_ID_VENDOR = gnome + +HOST_VALA_DEPENDENCIES = host-bison host-flex host-libglib2 +# Yes, the autoconf script understands ':' as "xsltproc is not +# available". +HOST_VALA_CONF_ENV = \ + ac_cv_path_XSLTPROC=: \ + GI_GIRDIR="$(STAGING_DIR)/usr/share/gir-1.0" +HOST_VALA_CONF_OPTS += --disable-valadoc + +# We wrap vala, valac and vapigen to point to the proper gir and vapi data dirs +# Otherwise we'll get host directory data which isn't enough +define HOST_VALA_INSTALL_WRAPPER + $(INSTALL) -D -m 0755 package/vala/vala-wrapper \ + $(HOST_DIR)/bin/vala + $(INSTALL) -D -m 0755 package/vala/vala-wrapper \ + $(HOST_DIR)/bin/valac + $(INSTALL) -D -m 0755 package/vala/vala-wrapper \ + $(HOST_DIR)/bin/vapigen + $(SED) 's,@VALA_VERSION@,$(VALA_VERSION_MAJOR),' \ + $(HOST_DIR)/bin/vala \ + $(HOST_DIR)/bin/valac \ + $(HOST_DIR)/bin/vapigen +endef +HOST_VALA_POST_INSTALL_HOOKS += HOST_VALA_INSTALL_WRAPPER + +$(eval $(host-autotools-package)) diff --git a/package/valgrind/0001-workaround-SIGSEGV-on-PPC.patch b/package/valgrind/0001-workaround-SIGSEGV-on-PPC.patch new file mode 100644 index 00000000..8a6003cb --- /dev/null +++ b/package/valgrind/0001-workaround-SIGSEGV-on-PPC.patch @@ -0,0 +1,32 @@ +From ff29b837f21a69c79289c3a87b03f8c23e05616e Mon Sep 17 00:00:00 2001 +From: Pierre Habouzit +Date: Tue, 10 May 2011 23:11:45 +0200 +Subject: [PATCH] workaround SIGSEGV on PPC. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Pierre Habouzit +Signed-off-by: Jérôme Pouiller +--- + coregrind/m_machine.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/coregrind/m_machine.c b/coregrind/m_machine.c +index 6110c93..298a00e 100644 +--- a/coregrind/m_machine.c ++++ b/coregrind/m_machine.c +@@ -27,6 +27,10 @@ + The GNU General Public License is contained in the file COPYING. + */ + ++#ifdef __powerpc__ ++# pragma GCC optimize ("-O0") ++#endif ++ + #include "pub_core_basics.h" + #include "pub_core_vki.h" + #include "pub_core_threadstate.h" +-- +2.1.4 + diff --git a/package/valgrind/0002-Define-PTRACE_GETSIGINFO-on-PowerPC-when-not-availab.patch b/package/valgrind/0002-Define-PTRACE_GETSIGINFO-on-PowerPC-when-not-availab.patch new file mode 100644 index 00000000..44adfc41 --- /dev/null +++ b/package/valgrind/0002-Define-PTRACE_GETSIGINFO-on-PowerPC-when-not-availab.patch @@ -0,0 +1,37 @@ +From 7311686d6286972ff97cc18b2416a4cdd7fc5c7e Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 31 Oct 2015 12:15:24 +0100 +Subject: [PATCH] Define PTRACE_GETSIGINFO on PowerPC when not available + +uClibc 0.9.33.2 does not define PTRACE_GETSIGINFO in PowerPC. Even +though Buildroot has a uClibc patch doing that, it doesn't solve the +case of external uClibc toolchain from other sources (such as +Crosstool-NG). Therefore, this patch modifies Valgrind to define +PTRACE_GETSIGINFO on PowerPC to the right value, when such definition +is not available from the C library. + +Signed-off-by: Thomas Petazzoni +--- + coregrind/vgdb-invoker-ptrace.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/coregrind/vgdb-invoker-ptrace.c b/coregrind/vgdb-invoker-ptrace.c +index d65f59a..bdefac2 100644 +--- a/coregrind/vgdb-invoker-ptrace.c ++++ b/coregrind/vgdb-invoker-ptrace.c +@@ -72,6 +72,12 @@ + # endif + #endif + ++#if defined(__powerpc__) ++# ifndef PTRACE_GETSIGINFO ++# define PTRACE_GETSIGINFO 0x4202 ++# endif ++#endif ++ + // 32-bit or 64-bit wide, depending on primary architecture. + typedef Addr CORE_ADDR; + typedef Addr PTRACE_XFER_TYPE; +-- +2.1.4 + diff --git a/package/valgrind/0003-Fix-uninitialized-err-in-handle_extension.patch b/package/valgrind/0003-Fix-uninitialized-err-in-handle_extension.patch new file mode 100644 index 00000000..c6a6b3dc --- /dev/null +++ b/package/valgrind/0003-Fix-uninitialized-err-in-handle_extension.patch @@ -0,0 +1,47 @@ +From 94c2e5c6be23c6323f24deacdad5f98fb9f0b1c2 Mon Sep 17 00:00:00 2001 +From: Andreas Arnez +Date: Wed, 15 May 2024 14:32:42 +0200 +Subject: [PATCH] Fix uninitialized `err' in handle_extension() + +In handle_extension(), in the case of a second return from SCHEDSETJMP the +variable `err' would be used uninitialized. Fix this by avoiding any +access to `err' in this case. + +Signed-off-by: Andreas Arnez +Signed-off-by: Waldemar Brodkorb +Upstream: https://sourceware.org/git/?p=valgrind.git;a=commit;h=94c2e5c6be23c6323f24deacdad5f98fb9f0b1c2 +--- + coregrind/m_scheduler/scheduler.c | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +diff --git a/coregrind/m_scheduler/scheduler.c b/coregrind/m_scheduler/scheduler.c +index fc8cf7c9c..29751bb28 100644 +--- a/coregrind/m_scheduler/scheduler.c ++++ b/coregrind/m_scheduler/scheduler.c +@@ -1233,7 +1233,10 @@ static void handle_extension(ThreadId tid) + SCHEDSETJMP(tid, jumped, err = VG_(client_extension)(tid)); + vg_assert(VG_(is_running_thread)(tid)); + +- if (err != ExtErr_OK) { ++ if (jumped != (UWord)0) { ++ block_signals(); ++ VG_(poll_signals)(tid); ++ } else if (err != ExtErr_OK) { + ThreadState* tst = VG_(get_ThreadState)(tid); + Addr addr = tst->arch.vex.guest_IP_AT_SYSCALL; + switch (err) { +@@ -1244,11 +1247,6 @@ static void handle_extension(ThreadId tid) + VG_(core_panic)("scheduler: bad return code from extension"); + } + } +- +- if (jumped != (UWord)0) { +- block_signals(); +- VG_(poll_signals)(tid); +- } + } + + /* tid just requested a jump to the noredir version of its current +-- +2.39.2 + diff --git a/package/valgrind/0004-Avoid-use-of-guest_IP_AT_SYSCALL-in-handle_extension.patch b/package/valgrind/0004-Avoid-use-of-guest_IP_AT_SYSCALL-in-handle_extension.patch new file mode 100644 index 00000000..006e2409 --- /dev/null +++ b/package/valgrind/0004-Avoid-use-of-guest_IP_AT_SYSCALL-in-handle_extension.patch @@ -0,0 +1,33 @@ +From 16249b21456d681b5d98400287b8dbd926050c75 Mon Sep 17 00:00:00 2001 +From: Andreas Arnez +Date: Wed, 15 May 2024 14:32:42 +0200 +Subject: [PATCH] Avoid use of guest_IP_AT_SYSCALL in handle_extension() + +The guest state field guest_IP_AT_SYSCALL is referenced in +handle_extension(), even though it may not be defined by all +architectures. Avoid its use altogether. + +Signed-off-by: Andreas Arnez +Signed-off-by: Waldemar Brodkorb +Upstream: https://sourceware.org/git/?p=valgrind.git;a=commit;h=16249b21456d681b5d98400287b8dbd926050c75 +--- + coregrind/m_scheduler/scheduler.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/coregrind/m_scheduler/scheduler.c b/coregrind/m_scheduler/scheduler.c +index 29751bb28..cc8d070b7 100644 +--- a/coregrind/m_scheduler/scheduler.c ++++ b/coregrind/m_scheduler/scheduler.c +@@ -1237,8 +1237,7 @@ static void handle_extension(ThreadId tid) + block_signals(); + VG_(poll_signals)(tid); + } else if (err != ExtErr_OK) { +- ThreadState* tst = VG_(get_ThreadState)(tid); +- Addr addr = tst->arch.vex.guest_IP_AT_SYSCALL; ++ Addr addr = VG_(get_IP)(tid); + switch (err) { + case ExtErr_Illop: + VG_(synth_sigill)(tid, addr); +-- +2.39.2 + diff --git a/package/valgrind/Config.in b/package/valgrind/Config.in new file mode 100644 index 00000000..56fda07d --- /dev/null +++ b/package/valgrind/Config.in @@ -0,0 +1,89 @@ +config BR2_PACKAGE_VALGRIND_ARCH_SUPPORTS + bool + default y if BR2_aarch64 + default y if BR2_ARM_CPU_ARMV7A + default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + default y if BR2_i386 || BR2_x86_64 + default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + default y if BR2_s390x + depends on !BR2_MIPS_SOFT_FLOAT + +comment "valgrind needs a toolchain w/ dynamic library, threads" + depends on BR2_PACKAGE_VALGRIND_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_VALGRIND + bool "valgrind" + depends on BR2_PACKAGE_VALGRIND_ARCH_SUPPORTS + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Tool for debugging and profiling Linux programs. + + http://valgrind.org/ + +if BR2_PACKAGE_VALGRIND + +config BR2_PACKAGE_VALGRIND_MEMCHECK + bool "Memcheck: a memory error detector" + default y + help + This option allows to install the Memcheck tool + +config BR2_PACKAGE_VALGRIND_CACHEGRIND + bool "Cachegrind: a cache and branch-prediction profiler" + default y + help + This option allows to install the Cachegrind tool + +config BR2_PACKAGE_VALGRIND_CALLGRIND + bool "Callgrind: a call-graph generating cache and branch prediction profiler" + default y + help + This option allows to install the Callgrind tool + +config BR2_PACKAGE_VALGRIND_HELGRIND + bool "Helgrind: a thread error detector" + default y + help + This option allows to install the Helgrind tool + +config BR2_PACKAGE_VALGRIND_DRD + bool "DRD: a thread error detector" + default y + help + This option allows to install the DRD tool + +config BR2_PACKAGE_VALGRIND_MASSIF + bool "Massif: a heap profiler" + default y + help + This option allows to install the Massif tool + +config BR2_PACKAGE_VALGRIND_DHAT + bool "DHAT: a dynamic heap analysis tool" + default y + help + This option allows to install the DHAT tool + +config BR2_PACKAGE_VALGRIND_SGCHECK + bool "SGCheck: an experimental stack and global array overrun detector" + help + This option allows to install the SGCheck tool + +config BR2_PACKAGE_VALGRIND_BBV + bool "BBV: an experimental basic block vector generation tool" + help + This option allows to install the BBV tool + +config BR2_PACKAGE_VALGRIND_LACKEY + bool "Lackey: an example tool" + help + This option allows to install the Lackey tool + +config BR2_PACKAGE_VALGRIND_NULGRIND + bool "Nulgrind: the minimal Valgrind tool" + help + This option allows to install the Nulgrind tool + +endif diff --git a/package/valgrind/uclibc.supp b/package/valgrind/uclibc.supp new file mode 100644 index 00000000..179d27b7 --- /dev/null +++ b/package/valgrind/uclibc.supp @@ -0,0 +1,212 @@ +{ + + Memcheck:Addr1 + fun:_dl_strdup + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr1 + fun:_dl_malloc + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Cond + fun:_dl_get_ready_to_run + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr1 + fun:_dl_get_ready_to_run + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr2 + fun:_dl_get_ready_to_run + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + fun:_dl_get_ready_to_run + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr1 + fun:_dl_add_elf_hash_table + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr2 + fun:_dl_add_elf_hash_table + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + fun:_dl_add_elf_hash_table + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr1 + fun:_dl_check_if_named_library_is_loaded + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + fun:_dl_check_if_named_library_is_loaded + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr1 + fun:_dl_check_hashed_files + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + fun:_dl_check_hashed_files + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr1 + fun:_dl_load_elf_shared_library + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr2 + fun:_dl_load_elf_shared_library + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + fun:_dl_load_elf_shared_library + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr2 + fun:_dl_load_shared_library + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr1 + fun:_dl_find_hash + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + fun:_dl_find_hash + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + fun:_dl_fixup + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr2 + fun:_dl_fixup + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + fun:_dl_linux_resolve + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + fun:_dl_linux_resolver + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr2 + fun:_dl_parse_lazy_relocation_information + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr2 + obj:/lib/ld-uClibc* + fun:_dl_parse_lazy_relocation_information +} +{ + + Memcheck:Addr4 + fun:_dl_parse_lazy_relocation_information + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + obj:/lib/ld-uClibc* + obj:/lib/ld-uClibc* + fun:_dl_parse_lazy_relocation_information +} +{ + + Memcheck:Addr4 + obj:/lib/ld-uClibc* + fun:_dl_parse_lazy_relocation_information +} +{ + + Memcheck:Addr2 + obj:/lib/ld-uClibc* + fun:_dl_parse_relocation_information +} +{ + + Memcheck:Addr2 + fun:_dl_parse_relocation_information + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + fun:_dl_parse_relocation_information + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + obj:/lib/ld-uClibc* + fun:_dl_parse_relocation_information +} +{ + + Memcheck:Addr4 + obj:/lib/ld-uClibc* + obj:/lib/ld-uClibc* + fun:_dl_parse_relocation_information +} +{ + + Memcheck:Addr2 + obj:/lib/ld-uClibc-0.9.27.so + fun:* +} +{ + + Memcheck:Addr4 + obj:/lib/ld-uClibc-0.9.27.so + fun:* +} diff --git a/package/valgrind/valgrind.hash b/package/valgrind/valgrind.hash new file mode 100644 index 00000000..9cb66b58 --- /dev/null +++ b/package/valgrind/valgrind.hash @@ -0,0 +1,8 @@ +# From https://valgrind.org/downloads/current.html +sha1 ec410c75d3920d4f9249a5cfa2cac31e1bf6d586 valgrind-3.23.0.tar.bz2 +# locally computed +sha256 c5c34a3380457b9b75606df890102e7df2c702b9420c2ebef9540f8b5d56264d valgrind-3.23.0.tar.bz2 + +# License files +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 56976e64523fa1e68db4e6f464f5b2cb89d7d08f54b1d012e317b8db286b3faf COPYING.DOCS diff --git a/package/valgrind/valgrind.mk b/package/valgrind/valgrind.mk new file mode 100644 index 00000000..a5cb4b1c --- /dev/null +++ b/package/valgrind/valgrind.mk @@ -0,0 +1,160 @@ +################################################################################ +# +# valgrind +# +################################################################################ + +VALGRIND_VERSION = 3.23.0 +VALGRIND_SITE = https://sourceware.org/pub/valgrind +VALGRIND_SOURCE = valgrind-$(VALGRIND_VERSION).tar.bz2 +VALGRIND_LICENSE = GPL-2.0, GFDL-1.2 +VALGRIND_LICENSE_FILES = COPYING COPYING.DOCS +VALGRIND_CPE_ID_VENDOR = valgrind +VALGRIND_CONF_OPTS = \ + --disable-ubsan \ + --without-mpicc +VALGRIND_INSTALL_STAGING = YES + +# 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, +# it forcibly adds -march=mips64. This causes Valgrind to be built +# always for the first ISA revision level (R1), even when the user has +# configured Buildroot for the second ISA revision level (R2). +# +# Override the CFLAGS variable (which Valgrind appends to its CFLAGS) +# 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_CFLAGS += -march="$(GCC_TARGET_ARCH)" +endif + +VALGRIND_CONF_ENV = CFLAGS="$(VALGRIND_CFLAGS)" + +# fix uclibc configure c99 support detection +VALGRIND_CONF_ENV += ac_cv_prog_cc_c99='-std=gnu99' + +# 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 +# ARMv7. The valgrind package is guaranteed, through Config.in, to +# only be selected on ARMv7-A platforms. +ifeq ($(BR2_ARM_CPU_ARMV7A),y) +VALGRIND_CONF_OPTS += \ + --host=$(patsubst arm-%,armv7-%,$(GNU_TARGET_NAME)) +endif + +ifeq ($(BR2_ENABLE_LTO),y) +VALGRIND_CONF_OPTS += --enable-lto +else +VALGRIND_CONF_OPTS += --disable-lto +endif + +define VALGRIND_INSTALL_UCLIBC_SUPP + $(INSTALL) -D -m 0644 package/valgrind/uclibc.supp $(TARGET_DIR)/usr/lib/valgrind/uclibc.supp +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_INSTALL_UCLIBC_SUPP + +ifeq ($(BR2_PACKAGE_VALGRIND_MEMCHECK),) +define VALGRIND_REMOVE_MEMCHECK + rm -f $(TARGET_DIR)/usr/libexec/valgrind/*memcheck* +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_MEMCHECK +endif + +ifeq ($(BR2_PACKAGE_VALGRIND_CACHEGRIND),) +define VALGRIND_REMOVE_CACHEGRIND + rm -f $(TARGET_DIR)/usr/libexec/valgrind/*cachegrind* + for i in cg_annotate cg_diff cg_merge; do \ + rm -f $(TARGET_DIR)/usr/bin/$$i ; \ + done +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_CACHEGRIND +endif + +ifeq ($(BR2_PACKAGE_VALGRIND_CALLGRIND),) +define VALGRIND_REMOVE_CALLGRIND + rm -f $(TARGET_DIR)/usr/libexec/valgrind/*callgrind* + for i in callgrind_annotate callgrind_control ; do \ + rm -f $(TARGET_DIR)/usr/bin/$$i ; \ + done +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_CALLGRIND +endif + +ifeq ($(BR2_PACKAGE_VALGRIND_HELGRIND),) +define VALGRIND_REMOVE_HELGRIND + rm -f $(TARGET_DIR)/usr/libexec/valgrind/*helgrind* +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_HELGRIND +endif + +ifeq ($(BR2_PACKAGE_VALGRIND_DRD),) +define VALGRIND_REMOVE_DRD + rm -f $(TARGET_DIR)/usr/libexec/valgrind/*drd* +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_DRD +endif + +ifeq ($(BR2_PACKAGE_VALGRIND_MASSIF),) +define VALGRIND_REMOVE_MASSIF + rm -f $(TARGET_DIR)/usr/libexec/valgrind/*massif* + rm -f $(TARGET_DIR)/usr/bin/ms_print +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_MASSIF +endif + +ifeq ($(BR2_PACKAGE_VALGRIND_DHAT),) +define VALGRIND_REMOVE_DHAT + rm -f $(TARGET_DIR)/usr/libexec/valgrind/*dhat* +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_DHAT +endif + +ifeq ($(BR2_PACKAGE_VALGRIND_SGCHECK),) +define VALGRIND_REMOVE_SGCHECK + rm -f $(TARGET_DIR)/usr/libexec/valgrind/*sgcheck* +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_SGCHECK +endif + +ifeq ($(BR2_PACKAGE_VALGRIND_BBV),) +define VALGRIND_REMOVE_BBV + rm -f $(TARGET_DIR)/usr/libexec/valgrind/*bbv* +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_BBV +endif + +ifeq ($(BR2_PACKAGE_VALGRIND_LACKEY),) +define VALGRIND_REMOVE_LACKEY + rm -f $(TARGET_DIR)/usr/libexec/valgrind/*lackey* +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_LACKEY +endif + +ifeq ($(BR2_PACKAGE_VALGRIND_NULGRIND),) +define VALGRIND_REMOVE_NULGRIND + rm -f $(TARGET_DIR)/usr/libexec/valgrind/*none* +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_NULGRIND +endif + +$(eval $(autotools-package)) diff --git a/package/valijson/Config.in b/package/valijson/Config.in new file mode 100644 index 00000000..07706cd9 --- /dev/null +++ b/package/valijson/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_VALIJSON + bool "valijson" + depends on BR2_INSTALL_LIBSTDCPP + help + Valijson is a header-only JSON Schema Validation library for + C++. Valijson provides a simple validation API that allows + you load JSON Schemas, and validate documents loaded by one + of several supported parser libraries like boost, jsoncpp, + rapidjson and picoJSON. + + https://github.com/tristanpenman/valijson + +comment "valijson needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/valijson/valijson.hash b/package/valijson/valijson.hash new file mode 100644 index 00000000..592d2c90 --- /dev/null +++ b/package/valijson/valijson.hash @@ -0,0 +1,3 @@ +# Locally Computed: +sha256 35d86e54fc727f1265226434dc996e33000a570f833537a25c8b702b0b824431 valijson-1.0.2.tar.gz +sha256 61b5766db38eaa3f320c366357956d7743424bfbf90fd78f5943866ba237589e LICENSE diff --git a/package/valijson/valijson.mk b/package/valijson/valijson.mk new file mode 100644 index 00000000..df640577 --- /dev/null +++ b/package/valijson/valijson.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# valijson +# +################################################################################ + +VALIJSON_VERSION = 1.0.2 +VALIJSON_SITE = $(call github,tristanpenman,valijson,v$(VALIJSON_VERSION)) +VALIJSON_LICENSE = BSD-2-Clause +VALIJSON_LICENSE_FILES = LICENSE +VALIJSON_CPE_ID_VALID = YES +VALIJSON_INSTALL_STAGING = YES +VALIJSON_INSTALL_TARGET = NO +VALIJSON_CONF_OPTS = -Dvalijson_BUILD_TESTS=FALSE + +$(eval $(cmake-package)) diff --git a/package/vboot-utils/0001-Add-missing-definition-of-MTD_CHAR_MAJOR.patch b/package/vboot-utils/0001-Add-missing-definition-of-MTD_CHAR_MAJOR.patch new file mode 100644 index 00000000..c988c795 --- /dev/null +++ b/package/vboot-utils/0001-Add-missing-definition-of-MTD_CHAR_MAJOR.patch @@ -0,0 +1,30 @@ +From 90ed7f5cbe088912fbe0f3f45606de75602c1404 Mon Sep 17 00:00:00 2001 +From: Alex Suykov +Date: Thu, 21 Jan 2016 21:59:46 +0100 +Subject: [PATCH] Add missing definition of MTD_CHAR_MAJOR + +This definition missing from for kernels <= 3.13 + +Signed-off-by: Alex Suykov +--- + cgpt/cgpt_wrapper.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/cgpt/cgpt_wrapper.c b/cgpt/cgpt_wrapper.c +index afa4940e..38504aa6 100644 +--- a/cgpt/cgpt_wrapper.c ++++ b/cgpt/cgpt_wrapper.c +@@ -33,6 +33,10 @@ + #include "cgpt_nor.h" + #include "file_keys.h" + ++#ifndef MTD_CHAR_MAJOR ++#define MTD_CHAR_MAJOR 90 ++#endif ++ + // Check if cmdline |argv| has "-D". "-D" signifies that GPT structs are stored + // off device, and hence we should not wrap around cgpt. + static bool has_dash_D(int argc, const char *const argv[]) { +-- +2.34.1 + diff --git a/package/vboot-utils/0002-futility-platform_csme-add-missing-USE_FLASHROM-guar.patch b/package/vboot-utils/0002-futility-platform_csme-add-missing-USE_FLASHROM-guar.patch new file mode 100644 index 00000000..890a732f --- /dev/null +++ b/package/vboot-utils/0002-futility-platform_csme-add-missing-USE_FLASHROM-guar.patch @@ -0,0 +1,76 @@ +From 3244ea140c1b5b07ebb30f3d17e467d853b0db0f Mon Sep 17 00:00:00 2001 +From: James Hilliard +Date: Tue, 13 Aug 2024 11:41:28 -0600 +Subject: [PATCH] futility/platform_csme: add missing USE_FLASHROM guards + +Fixes: +build/futility/platform_csme.o: in function `find_fmba': +futility/platform_csme.c:42: undefined reference to `find_firmware_section' +build/futility/platform_csme.o: in function `unlock_csme': +futility/platform_csme.c:200: undefined reference to `get_firmware_image_temp_file' +futility/platform_csme.c:230: undefined reference to `reload_firmware_image' + +Change-Id: I74140d38d119f2a0e6b8cf8eef3f9f05cd43bbd7 +Signed-off-by: James Hilliard +Upstream: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/5785792 +--- + futility/platform_csme.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/futility/platform_csme.c b/futility/platform_csme.c +index 2eb3ffcf..3829fe7b 100644 +--- a/futility/platform_csme.c ++++ b/futility/platform_csme.c +@@ -33,6 +33,7 @@ struct fmba { + } __attribute__((packed)); + + static struct fmba * const find_fmba(const struct firmware_image *image) { ++#ifdef USE_FLASHROM + struct firmware_section section; + const uint32_t signature = 0x0FF0A55A; + const struct fdbar *fd; +@@ -54,6 +55,9 @@ static struct fmba * const find_fmba(const struct firmware_image *image) { + return NULL; + + return (struct fmba * const)(section.data + offset); ++#else ++ return NULL; ++#endif /* USE_FLASHROM */ + } + + static bool is_flmstr1_locked(const struct fmba * const fmba) +@@ -132,6 +136,7 @@ int unlock_csme_eve(struct firmware_image *image) + return unlock_flmstrs(image, 0xffffff00, 0xffffff00, 0xffffff00); + } + ++#ifdef USE_FLASHROM + /* + * Determine the platform to pass to ifdtool (e.g. 'adl') by extracting + * CONFIG_IFD_CHIPSET from the config file in CBFS. However, old nissa firmware +@@ -183,6 +188,7 @@ static int run_ifdtool(const char *image_path, char *platform, const char *extra + free(command); + return ret; + } ++#endif /* USE_FLASHROM */ + + /* + * Unlock the CSME for recent Intel platforms (CML onwards). +@@ -193,6 +199,7 @@ static int run_ifdtool(const char *image_path, char *platform, const char *extra + */ + int unlock_csme(struct updater_config *cfg) + { ++#ifdef USE_FLASHROM + const char *temp_path; + char *platform; + int ret = -1; +@@ -245,4 +252,7 @@ cleanup: + free(platform); + + return ret; ++#else ++ return -1; ++#endif /* USE_FLASHROM */ + } +-- +2.34.1 + diff --git a/package/vboot-utils/Config.in.host b/package/vboot-utils/Config.in.host new file mode 100644 index 00000000..aa0caef2 --- /dev/null +++ b/package/vboot-utils/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_VBOOT_UTILS + bool "host vboot utils" + select BR2_PACKAGE_HOST_UTIL_LINUX + help + Chromium OS verified boot utilities: futility and cgpt. + + https://www.chromium.org/chromium-os/chromiumos-design-docs/verified-boot diff --git a/package/vboot-utils/vboot-utils.hash b/package/vboot-utils/vboot-utils.hash new file mode 100644 index 00000000..13752f3a --- /dev/null +++ b/package/vboot-utils/vboot-utils.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 d65c447d5b4624ffb87815071d2734c3802a73fdca56a06c910fd0ea8e82602d vboot-utils-4b12d392e5b12de29c582df4e717b1228e9f1594-git4.tar.gz +sha256 cb9dc8e96aedf9120b6757a60387db10f3c1a8e3fd97bb9d0f11327be5a7ed4d LICENSE diff --git a/package/vboot-utils/vboot-utils.mk b/package/vboot-utils/vboot-utils.mk new file mode 100644 index 00000000..3058d61a --- /dev/null +++ b/package/vboot-utils/vboot-utils.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# vboot-utils +# +################################################################################ + +VBOOT_UTILS_VERSION = 4b12d392e5b12de29c582df4e717b1228e9f1594 +VBOOT_UTILS_SITE = https://chromium.googlesource.com/chromiumos/platform/vboot_reference +VBOOT_UTILS_SITE_METHOD = git +VBOOT_UTILS_LICENSE = BSD-3-Clause +VBOOT_UTILS_LICENSE_FILES = LICENSE + +HOST_VBOOT_UTILS_DEPENDENCIES = host-openssl host-util-linux host-pkgconf + +# vboot_reference contains code that goes into bootloaders, +# utilities intended for the target system, and a bunch of scripts +# for Chromium OS build system. Most of that does not make sense +# in a buildroot host-package. +# +# We only need futility for signing images, the keys, and cgpt for boot +# media partitioning. +# +# make target for futility is "futil". +# +# The value of ARCH is only relevant for crossystem (a target tool) and +# does not affect futil or cgpt in any way as long as it is one of the +# supported targets. + +HOST_VBOOT_UTILS_MAKE_OPTS = USE_FLASHROM=0 + +define HOST_VBOOT_UTILS_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_VBOOT_UTILS_MAKE_OPTS) -C $(@D) \ + CC="$(HOSTCC)" \ + CPPFLAGS="$(HOST_CFLAGS) -D_LARGEFILE64_SOURCE -D_GNU_SOURCE" \ + LDFLAGS="$(HOST_LDFLAGS)" \ + ARCH=arm \ + futil cgpt +endef + +define HOST_VBOOT_UTILS_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_VBOOT_UTILS_MAKE_OPTS) -C $(@D) \ + DESTDIR=$(HOST_DIR) \ + futil_install cgpt_install devkeys_install +endef + +$(eval $(host-generic-package)) diff --git a/package/vde2/Config.in b/package/vde2/Config.in new file mode 100644 index 00000000..44bdf50d --- /dev/null +++ b/package/vde2/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_VDE2 + bool "vde2" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # dlopen() + help + VDE is an ethernet compliant virtual network that can be + spawned over a set of physical computers over the Internet. + VDE is part of the virtualsquare project. + + https://github.com/virtualsquare/vde-2/ + +comment "vde2 needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/package/vde2/vde2.hash b/package/vde2/vde2.hash new file mode 100644 index 00000000..11d6a282 --- /dev/null +++ b/package/vde2/vde2.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 a7d2cc4c3d0c0ffe6aff7eb0029212f2b098313029126dcd12dc542723972379 vde2-2.3.3.tar.gz +sha256 fb295d0c24b8ef4b39017ac68e772e8e6e839612ce10da12b9f48d1e8e512e2e COPYING +sha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a COPYING.libvdeplug diff --git a/package/vde2/vde2.mk b/package/vde2/vde2.mk new file mode 100644 index 00000000..ab4c3214 --- /dev/null +++ b/package/vde2/vde2.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# vde2 +# +################################################################################ + +VDE2_VERSION = 2.3.3 +VDE2_SITE = $(call github,virtualsquare,vde-2,v$(VDE2_VERSION)) +VDE2_LICENSE = GPL-2.0+, LGPL-2.1+ +VDE2_LICENSE_FILES = COPYING COPYING.libvdeplug +VDE2_CPE_ID_VENDOR = vde_project +VDE2_CPE_ID_PRODUCT = vde +VDE2_INSTALL_STAGING = YES + +# From git +VDE2_AUTORECONF = YES + +# Reasons for enabling/disabling stuff: +# - tuntap is enabled in the hope we're using a recent-enough toolchain +# that does have if_tun.h (virtually everything these days) +# - cryptcab is disabled to not depend on wolfssl +# - pcap is disabled to not depend on libpcap +# - profiling is disabled because we do not want to debug/profile +# +# Note: disabled features can be added with corresponding dependencies +# in future commits. +VDE2_CONF_OPTS = \ + --disable-cryptcab \ + --disable-experimental \ + --disable-pcap \ + --disable-profile \ + --enable-tuntap + +HOST_VDE2_CONF_OPTS = \ + --disable-cryptcab \ + --disable-experimental \ + --disable-pcap \ + --disable-profile \ + --enable-tuntap + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/vdr-plugin-vnsiserver/Config.in b/package/vdr-plugin-vnsiserver/Config.in new file mode 100644 index 00000000..0a0ab8d3 --- /dev/null +++ b/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/package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.hash b/package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.hash new file mode 100644 index 00000000..b31ba70a --- /dev/null +++ b/package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 d5989461541a91fe4de4ca9c396d4e7b2f4a8663fc9d6155d0830d2b143fce4d vdr-plugin-vnsiserver-1.8.0.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.mk b/package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.mk new file mode 100644 index 00000000..9b49736d --- /dev/null +++ b/package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# vdr-plugin-vnsiserver +# +################################################################################ + +VDR_PLUGIN_VNSISERVER_VERSION = 1.8.0 +VDR_PLUGIN_VNSISERVER_SITE = $(call github,FernetMenta,vdr-plugin-vnsiserver,v$(VDR_PLUGIN_VNSISERVER_VERSION)) +VDR_PLUGIN_VNSISERVER_LICENSE = GPL-2.0+ +VDR_PLUGIN_VNSISERVER_LICENSE_FILES = COPYING +VDR_PLUGIN_VNSISERVER_DEPENDENCIES = vdr + +VDR_PLUGIN_VNSISERVER_CXXFLAGS = CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11 -fPIC" + +VDR_PLUGIN_VNSISERVER_INSTALL_TARGETS = install-lib +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +VDR_PLUGIN_VNSISERVER_INSTALL_TARGETS += install-i18n +endif + +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) \ + $(VDR_PLUGIN_VNSISERVER_INSTALL_TARGETS) DESTDIR=$(TARGET_DIR) \ + LIBDIR=/usr/lib/vdr LOCDIR=/usr/share/locale +endef + +$(eval $(generic-package)) diff --git a/package/vdr/0001-getloadavg.patch b/package/vdr/0001-getloadavg.patch new file mode 100644 index 00000000..f6ba84c9 --- /dev/null +++ b/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 +@@ -1100,6 +1100,44 @@ + } + } + ++/* uclibc and dietlibc do not have this junk -ReneR */ ++#if defined (__UCLIBC__) || defined (__dietlibc__) ++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/package/vdr/0002-Fix-musl-build.patch b/package/vdr/0002-Fix-musl-build.patch new file mode 100644 index 00000000..8c0b8d66 --- /dev/null +++ b/package/vdr/0002-Fix-musl-build.patch @@ -0,0 +1,159 @@ +From fb44386acc2497ac250364bc08cebc26ded816cf Mon Sep 17 00:00:00 2001 +From: Carlo Landmeter +Date: Tue, 16 May 2023 19:57:39 +0200 +Subject: [PATCH] Fix musl build + +Downloaded from +https://git.alpinelinux.org/aports/tree/community/vdr/musl-compat.patch + +Initial commit: +https://git.alpinelinux.org/aports/commit/?id=140248605cee4a0160f80b47ce77a823be2f740a + +Upstream: https://www.linuxtv.org/pipermail/vdr/2023-May/029744.html + +Signed-off-by: Bernd Kuhls +--- + i18n.h | 2 +- + osd.c | 2 +- + thread.c | 4 +++- + tools.c | 4 ++-- + tools.h | 14 ++++++++++++-- + vdr.c | 6 ++++++ + 6 files changed, 25 insertions(+), 7 deletions(-) + +diff --git a/i18n.h b/i18n.h +index 03deb6f2..85ce4077 100644 +--- a/i18n.h ++++ b/i18n.h +@@ -46,7 +46,7 @@ const cStringList *I18nLanguages(void); + ///< have an actual locale installed. The rest are just dummy entries + ///< to allow having three letter language codes for other languages + ///< that have no actual locale on this system. +-const char *I18nTranslate(const char *s, const char *Plugin = NULL) __attribute_format_arg__(1); ++const char *I18nTranslate(const char *s, const char *Plugin = NULL) __attribute__((__format_arg__ (1))); + ///< Translates the given string (with optional Plugin context) into + ///< the current language. If no translation is available, the original + ///< string will be returned. +diff --git a/osd.c b/osd.c +index 47bda686..0d360c81 100644 +--- a/osd.c ++++ b/osd.c +@@ -12,7 +12,7 @@ + #include + #include + #include +-#include ++#include + #include "device.h" + #include "tools.h" + +diff --git a/thread.c b/thread.c +index 93eb8c0d..6e854541 100644 +--- a/thread.c ++++ b/thread.c +@@ -160,7 +160,9 @@ cRwLock::cRwLock(bool PreferWriter) + writeLockThreadId = 0; + pthread_rwlockattr_t attr; + pthread_rwlockattr_init(&attr); ++#if defined(__GLIBC__) + pthread_rwlockattr_setkind_np(&attr, PreferWriter ? PTHREAD_RWLOCK_PREFER_WRITER_NP : PTHREAD_RWLOCK_PREFER_READER_NP); ++#endif + pthread_rwlock_init(&rwlock, &attr); + } + +@@ -210,7 +212,7 @@ cMutex::cMutex(void) + locked = 0; + pthread_mutexattr_t attr; + pthread_mutexattr_init(&attr); +- pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK_NP); ++ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK); + pthread_mutex_init(&mutex, &attr); + } + +diff --git a/tools.c b/tools.c +index d04033b1..8b161eec 100644 +--- a/tools.c ++++ b/tools.c +@@ -672,7 +672,7 @@ char *ReadLink(const char *FileName) + { + if (!FileName) + return NULL; +- char *TargetName = canonicalize_file_name(FileName); ++ char *TargetName = realpath(FileName, NULL); + if (!TargetName) { + if (errno == ENOENT) // file doesn't exist + TargetName = strdup(FileName); +@@ -1562,7 +1562,7 @@ cReadDir::~cReadDir() + struct dirent *cReadDir::Next(void) + { + if (directory) { +-#if !__GLIBC_PREREQ(2, 24) // readdir_r() is deprecated as of GLIBC 2.24 ++#if __GLIBC__ + while (readdir_r(directory, &u.d, &result) == 0 && result) { + #else + while ((result = readdir(directory)) != NULL) { +diff --git a/tools.h b/tools.h +index ff6169ee..60eda179 100644 +--- a/tools.h ++++ b/tools.h +@@ -28,6 +28,16 @@ + #include + #include "thread.h" + ++#ifndef ACCESSPERMS ++# define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) /* 0777 */ ++#endif ++#ifndef ALLPERMS ++# define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO)/* 07777 */ ++#endif ++#ifndef DEFFILEMODE ++# define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)/* 0666*/ ++#endif ++ + typedef unsigned char uchar; + + extern int SysLogLevel; +@@ -444,7 +454,7 @@ class cReadDir { + private: + DIR *directory; + struct dirent *result; +-#if !__GLIBC_PREREQ(2, 24) // readdir_r() is deprecated as of GLIBC 2.24 ++#if __GLIBC__ + union { // according to "The GNU C Library Reference Manual" + struct dirent d; + char b[offsetof(struct dirent, d_name) + NAME_MAX + 1]; +@@ -818,7 +828,7 @@ public: + data[i] = T(0); + size = 0; + } +- void Sort(__compar_fn_t Compare) ++ void Sort(int (*Compare)(const void *, const void *)) + { + qsort(data, size, sizeof(T), Compare); + } +diff --git a/vdr.c b/vdr.c +index 1bdc51ab..0f426e61 100644 +--- a/vdr.c ++++ b/vdr.c +@@ -661,12 +661,18 @@ int main(int argc, char *argv[]) + } + } + else if (Terminal) { ++#ifdef __GLIBC__ + // Claim new controlling terminal + stdin = freopen(Terminal, "r", stdin); + stdout = freopen(Terminal, "w", stdout); + stderr = freopen(Terminal, "w", stderr); + HasStdin = true; + tcgetattr(STDIN_FILENO, &savedTm); ++#else ++ // stdin, stdout, stderr are declared FILE const* by musl C library ++ fprintf(stderr, "Option '-t' is only supported if VDR has been built against glibc.\n"); ++ return 2; ++#endif + } + + // Set user id in case we were started as root: +-- +2.39.2 + diff --git a/package/vdr/0003-Include-limits.h.patch b/package/vdr/0003-Include-limits.h.patch new file mode 100644 index 00000000..7ddfd170 --- /dev/null +++ b/package/vdr/0003-Include-limits.h.patch @@ -0,0 +1,51 @@ +From a4a3d9b012c12cd8aaa2526f0eacdcffcdd9f8f1 Mon Sep 17 00:00:00 2001 +From: Roberto Oliveira +Date: Tue, 16 May 2023 20:01:18 +0200 +Subject: [PATCH] Include limits.h + +vdr package uses some macros like HOST_NAME_MAX, NAME_MAX, which are defined +in limits.h. +Needs to be explicitly included on ppc64le and for all archs for debug build. + +Downloaded from +https://git.alpinelinux.org/aports/tree/community/vdr/include-missing-limits.patch + +Initial commits: +https://git.alpinelinux.org/aports/commit/?id=c9d8942ccf4825fd734b5f37157a49fc4f0b4339 +https://git.alpinelinux.org/aports/commit/?id=47965644c390b1be1117769b1e08b31858267e9a + +Upstream: https://www.linuxtv.org/pipermail/vdr/2023-May/029743.html + +Signed-off-by: Bernd Kuhls +--- + config.h | 1 + + tools.c | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/config.h b/config.h +index 72dd3d2a..b9ea769f 100644 +--- a/config.h ++++ b/config.h +@@ -19,6 +19,7 @@ + #include "i18n.h" + #include "font.h" + #include "tools.h" ++#include + + // VDR's own version number: + +diff --git a/tools.c b/tools.c +index 8b161eec..56a2e0dd 100644 +--- a/tools.c ++++ b/tools.c +@@ -27,6 +27,7 @@ extern "C" { + #include + #include "i18n.h" + #include "thread.h" ++#include + + int SysLogLevel = 3; + +-- +2.39.2 + diff --git a/package/vdr/0004-i18n.c-_nl_msg_cat_cntr-is-an-internal-symbol-of-som.patch b/package/vdr/0004-i18n.c-_nl_msg_cat_cntr-is-an-internal-symbol-of-som.patch new file mode 100644 index 00000000..7b1a4c2c --- /dev/null +++ b/package/vdr/0004-i18n.c-_nl_msg_cat_cntr-is-an-internal-symbol-of-som.patch @@ -0,0 +1,37 @@ +From 8711ce9c4ded311705f281c99e013a26987fbf1d Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 1 Jan 2022 23:35:29 +0100 +Subject: [PATCH] i18n.c: _nl_msg_cat_cntr is an internal symbol of some intl + implementation + +It is supported by glibc and uClibc (which both define __GLIBC__) but +not musl (which doesn't define __GLIBC__). On musl, it doesn't do +anything because musl has a basic NLS implementation. Even +gettext-tiny defines _nl_msg_cat_cntr as a dummy symbol in its stub +libintl-musl implementation. + +Upstream: https://www.linuxtv.org/pipermail/vdr/2023-May/029745.html + +Signed-off-by: Thomas Petazzoni +--- + i18n.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/i18n.c b/i18n.c +index 0ef08fd4..da2a3ede 100644 +--- a/i18n.c ++++ b/i18n.c +@@ -123,8 +123,10 @@ static const char *SkipContext(const char *s) + static void SetEnvLanguage(const char *Locale) + { + setenv("LANGUAGE", Locale, 1); ++#if defined(__GLIBC__) + extern int _nl_msg_cat_cntr; + ++_nl_msg_cat_cntr; ++#endif + } + + static void SetLanguageNames(void) +-- +2.31.1 + diff --git a/package/vdr/0005-Fix-musl-build.patch b/package/vdr/0005-Fix-musl-build.patch new file mode 100644 index 00000000..390e78ea --- /dev/null +++ b/package/vdr/0005-Fix-musl-build.patch @@ -0,0 +1,37 @@ +From 075472ec580e03cc89971f0c118cb363776a304d Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Tue, 16 May 2023 20:22:12 +0200 +Subject: [PATCH] Fix musl build + +malloc_trim is a GNU extension and therefore not present in non-glibc C +libraries such as musl. Wrapping this in an ifdef fixes musl builds. + +Upstream: https://www.linuxtv.org/pipermail/vdr/2023-May/029742.html + +Signed-off-by: Bernd Kuhls +--- + vdr.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/vdr.c b/vdr.c +index 0f426e61..bc4902de 100644 +--- a/vdr.c ++++ b/vdr.c +@@ -1588,12 +1588,14 @@ int main(int argc, char *argv[]) + cSchedules::Cleanup(); + // Plugins housekeeping: + PluginManager.Housekeeping(); ++#if defined(__GLIBC__) + // Memory cleanup: + static time_t LastMemoryCleanup = 0; + if ((Now - LastMemoryCleanup) > MEMCLEANUPDELTA) { + malloc_trim(0); + LastMemoryCleanup = Now; + } ++#endif + } + } + +-- +2.39.2 + diff --git a/package/vdr/Config.in b/package/vdr/Config.in new file mode 100644 index 00000000..38502729 --- /dev/null +++ b/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_HEADERS_AT_LEAST_3_9 + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBCAP + select BR2_PACKAGE_LIBEXECINFO if !BR2_TOOLCHAIN_USES_GLIBC + help + This project describes how to build your own digital + satellite receiver and Video Disk Recorder. + + http://www.tvdr.de + +comment "vdr needs a toolchain w/ C++, dynamic library, NPTL, wchar, headers >= 3.9" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 diff --git a/package/vdr/vdr.hash b/package/vdr/vdr.hash new file mode 100644 index 00000000..47179a99 --- /dev/null +++ b/package/vdr/vdr.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 293e355b2cc22e6152dae9c315d5b8903f3e647a2e60b6217d306ff4bceb83e1 vdr-2.6.5.tar.gz +sha256 ddb9db7630752f8fdc6898f7c99a99eaeeac5213627ecb093df9c82f56175dc7 COPYING diff --git a/package/vdr/vdr.mk b/package/vdr/vdr.mk new file mode 100644 index 00000000..c717d40e --- /dev/null +++ b/package/vdr/vdr.mk @@ -0,0 +1,66 @@ +################################################################################ +# +# vdr +# +################################################################################ + +VDR_VERSION = 2.6.5 +VDR_SITE = $(call github,vdr-projects,vdr,$(VDR_VERSION)) +VDR_LICENSE = GPL-2.0+ +VDR_LICENSE_FILES = COPYING +VDR_CPE_ID_VENDOR = tvdr +VDR_INSTALL_STAGING = YES +VDR_DEPENDENCIES = \ + host-pkgconf \ + freetype \ + fontconfig \ + jpeg \ + libcap \ + $(TARGET_NLS_DEPENDENCIES) + +VDR_MAKE_FLAGS = \ + NO_KBD=yes \ + PKG_CONFIG=$(PKG_CONFIG_HOST_BINARY) \ + PLUGINLIBDIR=/usr/lib/vdr \ + PREFIX=/usr \ + VIDEODIR=/var/lib/vdr +VDR_LDFLAGS = $(TARGET_NLS_LIBS) + +ifeq ($(BR2_PACKAGE_LIBEXECINFO),y) +VDR_DEPENDENCIES += libexecinfo +VDR_LDFLAGS += -lexecinfo +endif + +ifeq ($(BR2_PACKAGE_LIBFRIBIDI),y) +VDR_DEPENDENCIES += libfribidi +VDR_MAKE_FLAGS += BIDI=1 +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +VDR_DEPENDENCIES += libiconv +VDR_LDFLAGS += -liconv +endif + +VDR_MAKE_ENV = \ + 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/package/vim/Config.in b/package/vim/Config.in new file mode 100644 index 00000000..1469be8d --- /dev/null +++ b/package/vim/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_VIM + bool "vim" + depends on BR2_USE_MMU # uses fork() + depends on BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_NCURSES + help + VIM Text editor + + http://www.vim.org/ + +if BR2_PACKAGE_VIM + +config BR2_PACKAGE_VIM_RUNTIME + bool "install runtime" + default y + help + Install VIM runtime (syntax highlighing + macros). + This option adds about 11MB of data to /usr/share/ + +endif + +comment "vim needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + depends on BR2_USE_MMU + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/package/vim/vim.hash b/package/vim/vim.hash new file mode 100644 index 00000000..194bcb43 --- /dev/null +++ b/package/vim/vim.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 0056537cb57190aa41c12ba6c2ad04ce10e7f714cde4c1fe7193a37e1c44db46 vim-9.1.0145.tar.gz +sha256 0b3f1f330cb1b179bb17c7c687d4cec601e0aa3462bc7f890ad4c3888d37d720 LICENSE +sha256 7a2f621c8496396dae5eecdcc4dccff9d534dff4627193d3ebf7fa6d2cb27042 README.txt diff --git a/package/vim/vim.mk b/package/vim/vim.mk new file mode 100644 index 00000000..fb8062e1 --- /dev/null +++ b/package/vim/vim.mk @@ -0,0 +1,93 @@ +################################################################################ +# +# vim +# +################################################################################ + +VIM_VERSION = 9.1.0145 +VIM_SITE = $(call github,vim,vim,v$(VIM_VERSION)) +VIM_DEPENDENCIES = ncurses $(TARGET_NLS_DEPENDENCIES) +VIM_SUBDIR = src +VIM_CONF_ENV = \ + vim_cv_toupper_broken=no \ + vim_cv_terminfo=yes \ + vim_cv_tgetent=zero \ + vim_cv_tty_group=world \ + vim_cv_tty_mode=0620 \ + vim_cv_getcwd_broken=no \ + vim_cv_stat_ignores_slash=yes \ + vim_cv_memmove_handles_overlap=yes \ + ac_cv_sizeof_int=4 \ + ac_cv_small_wchar_t=no +# GUI/X11 headers leak from the host so forcibly disable them +VIM_CONF_OPTS = --with-tlib=ncurses --enable-gui=no --without-x +VIM_LICENSE = Charityware +VIM_LICENSE_FILES = LICENSE README.txt +VIM_CPE_ID_VENDOR = vim + +ifeq ($(BR2_PACKAGE_ACL),y) +VIM_CONF_OPTS += --enable-acl +VIM_DEPENDENCIES += acl +else +VIM_CONF_OPTS += --disable-acl +endif + +ifeq ($(BR2_PACKAGE_GPM),y) +VIM_CONF_OPTS += --enable-gpm +VIM_DEPENDENCIES += gpm +else +VIM_CONF_OPTS += --disable-gpm +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +VIM_CONF_OPTS += --enable-selinux +VIM_DEPENDENCIES += libselinux +else +VIM_CONF_OPTS += --disable-selinux +endif + +define VIM_INSTALL_TARGET_CMDS + cd $(@D)/src; \ + $(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; \ + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) installrtbase; \ + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) installmacros +endef + +define VIM_REMOVE_DOCS + $(RM) -rf $(TARGET_DIR)/usr/share/vim/vim*/doc/ +endef + +# Avoid oopses with vipw/vigr, lack of $EDITOR and 'vi' command expectation +ifeq ($(BR2_ROOTFS_MERGED_USR),y) +define VIM_INSTALL_VI_SYMLINK + ln -sf vim $(TARGET_DIR)/usr/bin/vi +endef +else +define VIM_INSTALL_VI_SYMLINK + ln -sf ../usr/bin/vim $(TARGET_DIR)/bin/vi +endef +endif +VIM_POST_INSTALL_TARGET_HOOKS += VIM_INSTALL_VI_SYMLINK + +ifeq ($(BR2_PACKAGE_VIM_RUNTIME),y) +VIM_POST_INSTALL_TARGET_HOOKS += VIM_INSTALL_RUNTIME_CMDS +VIM_POST_INSTALL_TARGET_HOOKS += VIM_REMOVE_DOCS +endif + +HOST_VIM_DEPENDENCIES = host-ncurses +HOST_VIM_CONF_OPTS = \ + --with-tlib=ncurses \ + --enable-gui=no \ + --without-x \ + --disable-acl \ + --disable-gpm \ + --disable-selinux + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/vis-network/Config.in b/package/vis-network/Config.in new file mode 100644 index 00000000..39e8ac54 --- /dev/null +++ b/package/vis-network/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_VIS_NETWORK + bool "vis-network" + help + Display dynamic, automatically organised, customizable network + views. Network uses HTML canvas for rendering. + + http://visjs.github.io/vis-network/ diff --git a/package/vis-network/vis-network.hash b/package/vis-network/vis-network.hash new file mode 100644 index 00000000..56f141f5 --- /dev/null +++ b/package/vis-network/vis-network.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 a9f7325cbe28147318476c63f09c1d5c894d2239bfa4b4dd2dfb3dbebb0705d3 vis-network-9.1.0.tgz +sha256 1509904280a272780fd69c04b858f512cf216f8e3464a0dd98d8f34416feced9 LICENSE-APACHE-2.0 +sha256 1f65085e54c036645082257618db2c7b787e68c3b02485e214ecd09e0834ee8f LICENSE-MIT diff --git a/package/vis-network/vis-network.mk b/package/vis-network/vis-network.mk new file mode 100644 index 00000000..4a8def37 --- /dev/null +++ b/package/vis-network/vis-network.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# vis-network +# +################################################################################ + +VIS_NETWORK_VERSION = 9.1.0 +VIS_NETWORK_SOURCE = vis-network-$(VIS_NETWORK_VERSION).tgz +VIS_NETWORK_SITE = https://registry.npmjs.org/vis-network/- +VIS_NETWORK_LICENSE = Apache-2.0 or MIT +VIS_NETWORK_LICENSE_FILES = LICENSE-APACHE-2.0 LICENSE-MIT + +# Install .min.js and .min.css as .js and .css, respectively. +define VIS_NETWORK_INSTALL_TARGET_CMDS + $(INSTALL) -m 644 -D $(@D)/dist/vis-network.min.js \ + $(TARGET_DIR)/var/www/vis-network.js + $(INSTALL) -m 644 -D $(@D)/dist/dist/vis-network.min.css \ + $(TARGET_DIR)/var/www/vis-network.css +endef + +$(eval $(generic-package)) diff --git a/package/vlc/0001-Disable-building-of-statically-linked-vlc-binary.patch b/package/vlc/0001-Disable-building-of-statically-linked-vlc-binary.patch new file mode 100644 index 00000000..784ffa35 --- /dev/null +++ b/package/vlc/0001-Disable-building-of-statically-linked-vlc-binary.patch @@ -0,0 +1,40 @@ +From 7c2b3343a30ee53a1cded2ca5e712d8cd7d50f5f Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Tue, 1 May 2018 22:27:21 +0200 +Subject: [PATCH] Disable building of statically linked vlc binary + +Signed-off-by: Bernd Kuhls +--- + Makefile.am | 2 +- + bin/Makefile.am | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 3ac82623ad..637504a3f5 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -108,7 +108,7 @@ libvlc: libvlccore + cd lib && $(MAKE) $(AM_MAKEFLAGS) libvlc.la + + core: libvlc vlc$(EXEEXT) +- cd bin && $(MAKE) $(AM_MAKEFLAGS) vlc$(EXEEXT) vlc-static$(EXEEXT) ++ cd bin && $(MAKE) $(AM_MAKEFLAGS) vlc$(EXEEXT) + + doc: + cd doc && $(MAKE) $(AM_MAKEFLAGS) doc +diff --git a/bin/Makefile.am b/bin/Makefile.am +index 2877e8b0ea..bef4160e8b 100644 +--- a/bin/Makefile.am ++++ b/bin/Makefile.am +@@ -6,7 +6,7 @@ bin_PROGRAMS = vlc-osx + noinst_PROGRAMS = vlc-osx-static + else + bin_PROGRAMS = vlc +-noinst_PROGRAMS = vlc-static ++noinst_PROGRAMS = + endif + endif + EXTRA_DIST = vlc_win32_rc.rc.in +-- +2.14.4 + diff --git a/package/vlc/0002-automake-add-subdir-objects-option.patch b/package/vlc/0002-automake-add-subdir-objects-option.patch new file mode 100644 index 00000000..d4493bdf --- /dev/null +++ b/package/vlc/0002-automake-add-subdir-objects-option.patch @@ -0,0 +1,32 @@ +From 54e7e0bda02099ae9d1c42abed1932ffa8d354e8 Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Tue, 1 May 2018 22:28:52 +0200 +Subject: [PATCH] automake: add subdir-objects option + +Our version of automake warns if this option is enabled and source files +in subdirectories are used. + +It doesn't really seems to have a noticable effect on the build, but it +does remove a lot of annoying warnings. + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 206690b468..dfb4c1c329 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -24,7 +24,7 @@ AC_CANONICAL_BUILD + AC_CANONICAL_HOST + AC_PRESERVE_HELP_ORDER + +-AM_INIT_AUTOMAKE(tar-ustar color-tests foreign) ++AM_INIT_AUTOMAKE(tar-ustar color-tests foreign subdir-objects) + AC_CONFIG_HEADERS([config.h]) + + AM_SILENT_RULES([yes]) +-- +2.14.4 + diff --git a/package/vlc/0003-build-use-pkg-config-to-get-tremor-libs.patch b/package/vlc/0003-build-use-pkg-config-to-get-tremor-libs.patch new file mode 100644 index 00000000..652718b0 --- /dev/null +++ b/package/vlc/0003-build-use-pkg-config-to-get-tremor-libs.patch @@ -0,0 +1,50 @@ +From fb257e1e204c30436b3509ea3fa9f7c5fe131dc1 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 16 Oct 2018 14:25:20 +0200 +Subject: [PATCH] build: use pkg-config to get tremor libs + +Use PKG_ENABLE_MODULES_VLC to enable tremor based on availability of +ogg and vorbisidec + +Signed-off-by: Fabrice Fontaine +--- + configure.ac | 9 +-------- + modules/codec/Makefile.am | 2 +- + 2 files changed, 2 insertions(+), 9 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 0d3222e00f..b506d735f2 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2710,14 +2710,7 @@ PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorb + dnl + dnl Tremor plugin + dnl +-AC_ARG_ENABLE(tremor, +- [ --enable-tremor Tremor decoder support (default disabled)]) +-if test "${enable_tremor}" = "yes" +-then +- AC_CHECK_HEADERS(tremor/ivorbiscodec.h, [ +- VLC_ADD_PLUGIN([tremor]) +- ],[]) +-fi ++PKG_ENABLE_MODULES_VLC([TREMOR], [], [vorbisidec ogg], [Tremor decoder support], [disabled]) + + dnl + dnl Speex plugins +diff --git a/modules/codec/Makefile.am b/modules/codec/Makefile.am +index 075ee2a0e9..637b1d45a6 100644 +--- a/modules/codec/Makefile.am ++++ b/modules/codec/Makefile.am +@@ -318,7 +318,7 @@ codec_LTLIBRARIES += $(LTLIBdaala) + libtremor_plugin_la_SOURCES = codec/vorbis.c + libtremor_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) -DMODULE_NAME_IS_tremor + libtremor_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(codecdir)' +-libtremor_plugin_la_LIBADD = -lvorbisdec -logg ++libtremor_plugin_la_LIBADD = $(TREMOR_LIBS) + EXTRA_LTLIBRARIES += libtremor_plugin.la + codec_LTLIBRARIES += $(LTLIBtremor) + +-- +2.17.1 + diff --git a/package/vlc/0004-Fix-build-error-using-uClibc-by-adding-sys-types.h.patch b/package/vlc/0004-Fix-build-error-using-uClibc-by-adding-sys-types.h.patch new file mode 100644 index 00000000..a1d71896 --- /dev/null +++ b/package/vlc/0004-Fix-build-error-using-uClibc-by-adding-sys-types.h.patch @@ -0,0 +1,44 @@ +From bbb15b9cbf9353423619f2c40abdf95d861e66ba Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sat, 2 Apr 2016 16:49:54 +0200 +Subject: [PATCH] Fix build error using uClibc by adding sys/types.h + +Fixes + + CC core.lo +In file included from libvlc_internal.h:35:0, + from core.c:28: +../include/vlc/libvlc_media.h:313:18: error: expected declaration specifiers or '...' before '*' token + typedef ssize_t (*libvlc_media_read_cb)(void *opaque, unsigned char *buf, + ^ +../include/vlc/libvlc_media.h:423:36: error: unknown type name 'libvlc_media_read_cb' + libvlc_media_read_cb read_cb, + ^ +Bug was reported to trac: +https://trac.videolan.org/vlc/ticket/16768 + +This patch was suggested by courmisch in the trac ticket. + +Signed-off-by: Bernd Kuhls +[Patch sent upstream: + https://mailman.videolan.org/pipermail/vlc-devel/2016-April/106952.html] +--- + include/vlc/libvlc_media.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/include/vlc/libvlc_media.h b/include/vlc/libvlc_media.h +index 383f366b69..1cbf00c3e3 100644 +--- a/include/vlc/libvlc_media.h ++++ b/include/vlc/libvlc_media.h +@@ -26,6 +26,8 @@ + #ifndef VLC_LIBVLC_MEDIA_H + #define VLC_LIBVLC_MEDIA_H 1 + ++#include /* for ssize_t */ ++ + # ifdef __cplusplus + extern "C" { + # endif +-- +2.14.4 + diff --git a/package/vlc/0005-Don-t-assume-strerror_l-is-available.patch b/package/vlc/0005-Don-t-assume-strerror_l-is-available.patch new file mode 100644 index 00000000..cd839b73 --- /dev/null +++ b/package/vlc/0005-Don-t-assume-strerror_l-is-available.patch @@ -0,0 +1,58 @@ +From 0435cf37308652af1cf244b6429e919fa7ffaa95 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Tue, 1 May 2018 22:31:23 +0200 +Subject: [PATCH] Don't assume strerror_l() is available + +Fix compile error + + CCLD vlc +/home/br/br3/output/build/vlc-2.2.1/src/.libs/libvlccore.so: undefined reference to `strerror_l' + +Code for #else condition was taken from +http://patches.osdyson.org/patch/series/view/vlc/2.2.0~rc2-1+dyson2/dyson.patch + +[Bernd: rebased for vlc-3.0.6 & 3.0.9.2] +Signed-off-by: Bernd Kuhls +--- + configure.ac | 2 +- + src/posix/error.c | 4 ++++ + 2 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index dfb4c1c329..bfe43512a2 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -590,7 +590,7 @@ dnl Check for system libs needed + need_libc=false + + dnl Check for usual libc functions +-AC_CHECK_FUNCS([accept4 daemon fcntl flock fstatvfs fork getenv getmntent_r getpwuid_r isatty lstat memalign mkostemp mmap newlocale open_memstream openat pipe2 pread posix_fadvise posix_madvise posix_memalign setlocale stricmp strnicmp strptime uselocale]) ++AC_CHECK_FUNCS([accept4 daemon fcntl flock fstatvfs fork getenv getmntent_r getpwuid_r isatty lstat memalign mkostemp mmap newlocale open_memstream openat pipe2 pread posix_fadvise posix_madvise posix_memalign setlocale strerror_l stricmp strnicmp strptime uselocale]) + AC_REPLACE_FUNCS([aligned_alloc atof atoll dirfd fdopendir ffsll flockfile fsync getdelim getpid lfind lldiv memrchr nrand48 poll recvmsg rewind sendmsg setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strnstr strsep strtof strtok_r strtoll swab tdestroy tfind timegm timespec_get strverscmp pathconf]) + AC_REPLACE_FUNCS([gettimeofday]) + AC_CHECK_FUNC(fdatasync,, +diff --git a/src/posix/error.c b/src/posix/error.c +index db51004601..b4aa6fb3ca 100644 +--- a/src/posix/error.c ++++ b/src/posix/error.c +@@ -31,6 +31,7 @@ + + static const char *vlc_strerror_l(int errnum, const char *lname) + { ++#ifdef HAVE_STRERROR_L + int saved_errno = errno; + locale_t loc = newlocale(LC_MESSAGES_MASK, lname, (locale_t)0); + +@@ -51,6 +52,9 @@ static const char *vlc_strerror_l(int errnum, const char *lname) + const char *buf = strerror_l(errnum, loc); + + freelocale(loc); ++#else ++ const char *buf = strerror(errnum); ++#endif + return buf; + } + +-- +2.14.4 + diff --git a/package/vlc/0006-posix-remove-ancient-run-time-fallback-to-real-time-.patch b/package/vlc/0006-posix-remove-ancient-run-time-fallback-to-real-time-.patch new file mode 100644 index 00000000..5211ef88 --- /dev/null +++ b/package/vlc/0006-posix-remove-ancient-run-time-fallback-to-real-time-.patch @@ -0,0 +1,188 @@ +From 5d561e1e2dcde3c9fca4d925f12447009d0d4a4c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= +Date: Wed, 18 Apr 2018 17:23:57 +0300 +Subject: [PATCH] posix: remove ancient run-time fallback to real-time clock +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +posix: remove ancient run-time fallback to real-time clock + +For hysterical raisins, GNU/Linux and possibly some other OSes still +report that monotonic clock must be checked at run-time, although I +doubt that VLC or even current glibc would run on such old kernel. + +Drop that to simplify and avoid the systematic one-time init check. + +Downloaded from upstream commit to fix build error on m68k: + +posix/thread.c:79:5: warning: #warning Monotonic clock not available. Expect timing issues. [-Wcpp] + # warning Monotonic clock not available. Expect timing issues. + ^~~~~~~ +posix/thread.c: In function ‘vlc_clock_setup_once’: +posix/thread.c:88:18: error: lvalue required as left operand of assignment + vlc_clock_id = (val < 0) ? CLOCK_REALTIME : CLOCK_MONOTONIC; + +[Bernd: rebased for 3.0.19] +Signed-off-by: Bernd Kuhls +--- + src/posix/thread.c | 96 +++++++----------------------------------------------- + 1 file changed, 11 insertions(+), 85 deletions(-) + +diff --git a/src/posix/thread.c b/src/posix/thread.c +index dab8b71f97..8878941913 100644 +--- a/src/posix/thread.c ++++ b/src/posix/thread.c +@@ -51,62 +51,16 @@ + # include + #endif + +-#if !defined (_POSIX_TIMERS) +-# define _POSIX_TIMERS (-1) +-#endif +-#if !defined (_POSIX_CLOCK_SELECTION) +-/* Clock selection was defined in 2001 and became mandatory in 2008. */ +-# define _POSIX_CLOCK_SELECTION (-1) +-#endif +-#if !defined (_POSIX_MONOTONIC_CLOCK) +-# define _POSIX_MONOTONIC_CLOCK (-1) +-#endif +- +-#if (_POSIX_TIMERS > 0) + static unsigned vlc_clock_prec; + +-# if (_POSIX_MONOTONIC_CLOCK > 0) && (_POSIX_CLOCK_SELECTION > 0) +-/* Compile-time POSIX monotonic clock support */ +-# define vlc_clock_id (CLOCK_MONOTONIC) +- +-# elif (_POSIX_MONOTONIC_CLOCK == 0) && (_POSIX_CLOCK_SELECTION > 0) +-/* Run-time POSIX monotonic clock support (see clock_setup() below) */ +-static clockid_t vlc_clock_id; +- +-# else +-/* No POSIX monotonic clock support */ +-# define vlc_clock_id (CLOCK_REALTIME) +-# warning Monotonic clock not available. Expect timing issues. +- +-# endif /* _POSIX_MONOTONIC_CLOKC */ +- + static void vlc_clock_setup_once (void) + { +-# if (_POSIX_MONOTONIC_CLOCK == 0) +- long val = sysconf (_SC_MONOTONIC_CLOCK); +- assert (val != 0); +- vlc_clock_id = (val < 0) ? CLOCK_REALTIME : CLOCK_MONOTONIC; +-# endif +- + struct timespec res; +- if (unlikely(clock_getres (vlc_clock_id, &res) != 0 || res.tv_sec != 0)) ++ if (unlikely(clock_getres(CLOCK_MONOTONIC, &res) != 0 || res.tv_sec != 0)) + abort (); + vlc_clock_prec = (res.tv_nsec + 500) / 1000; + } + +-static pthread_once_t vlc_clock_once = PTHREAD_ONCE_INIT; +- +-# define vlc_clock_setup() \ +- pthread_once(&vlc_clock_once, vlc_clock_setup_once) +- +-#else /* _POSIX_TIMERS */ +- +-# include /* gettimeofday() */ +- +-# define vlc_clock_setup() (void)0 +-# warning Monotonic clock not available. Expect timing issues. +-#endif /* _POSIX_TIMERS */ +- + static struct timespec mtime_to_ts (vlc_tick_t date) + { + lldiv_t d = lldiv (date, CLOCK_FREQ); +@@ -233,14 +187,11 @@ void vlc_cond_init (vlc_cond_t *p_condvar) + { + pthread_condattr_t attr; + +- if (unlikely(pthread_condattr_init (&attr))) +- abort (); +-#if (_POSIX_CLOCK_SELECTION > 0) +- vlc_clock_setup (); +- pthread_condattr_setclock (&attr, vlc_clock_id); +-#endif +- if (unlikely(pthread_cond_init (p_condvar, &attr))) ++ if (unlikely(pthread_condattr_init (&attr)) ++ || unlikely(pthread_condattr_setclock(&attr, CLOCK_MONOTONIC)) ++ || unlikely(pthread_cond_init (p_condvar, &attr))) + abort (); ++ + pthread_condattr_destroy (&attr); + } + +@@ -625,44 +576,27 @@ void vlc_control_cancel (int cmd, ...) + + vlc_tick_t mdate (void) + { +-#if (_POSIX_TIMERS > 0) + struct timespec ts; + +- vlc_clock_setup (); +- if (unlikely(clock_gettime (vlc_clock_id, &ts) != 0)) ++ if (unlikely(clock_gettime(CLOCK_MONOTONIC, &ts) != 0)) + abort (); + + return (INT64_C(1000000) * ts.tv_sec) + (ts.tv_nsec / 1000); +- +-#else +- struct timeval tv; +- +- if (unlikely(gettimeofday (&tv, NULL) != 0)) +- abort (); +- return (INT64_C(1000000) * tv.tv_sec) + tv.tv_usec; +- +-#endif + } + + #undef mwait + void mwait (vlc_tick_t deadline) + { +-#if (_POSIX_CLOCK_SELECTION > 0) +- vlc_clock_setup (); ++ static pthread_once_t vlc_clock_once = PTHREAD_ONCE_INIT; ++ + /* If the deadline is already elapsed, or within the clock precision, + * do not even bother the system timer. */ ++ pthread_once(&vlc_clock_once, vlc_clock_setup_once); + deadline -= vlc_clock_prec; + + struct timespec ts = mtime_to_ts (deadline); + +- while (clock_nanosleep (vlc_clock_id, TIMER_ABSTIME, &ts, NULL) == EINTR); +- +-#else +- deadline -= mdate (); +- if (deadline > 0) +- msleep (deadline); +- +-#endif ++ while (clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME, &ts, NULL) == EINTR); + } + + #undef msleep +@@ -670,15 +604,7 @@ void msleep (vlc_tick_t delay) + { + struct timespec ts = mtime_to_ts (delay); + +-#if (_POSIX_CLOCK_SELECTION > 0) +- vlc_clock_setup (); +- while (clock_nanosleep (vlc_clock_id, 0, &ts, &ts) == EINTR); +- +-#else +- while (nanosleep (&ts, &ts) == -1) +- assert (errno == EINTR); +- +-#endif ++ while (clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, &ts) == EINTR); + } + + unsigned vlc_GetCPUCount(void) +-- +2.14.4 + diff --git a/package/vlc/0007-Add-support-for-freerdp2.patch b/package/vlc/0007-Add-support-for-freerdp2.patch new file mode 100644 index 00000000..75f09554 --- /dev/null +++ b/package/vlc/0007-Add-support-for-freerdp2.patch @@ -0,0 +1,150 @@ +From 3780bbb20bf35aa8f21ac672da3f0c5f408468e9 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Thu, 16 Aug 2018 12:27:40 +0200 +Subject: [PATCH] Add support for freerdp2 + +Downloaded from +https://gitweb.gentoo.org/repo/gentoo.git/tree/media-video/vlc/files/vlc-2.2.8-freerdp-2.patch + +Signed-off-by: Bernd Kuhls +--- + configure.ac | 2 +- + modules/access/rdp.c | 51 ++++++++++++++------------------------------------- + 2 files changed, 15 insertions(+), 38 deletions(-) + +diff --git a/configure.ac b/configure.ac +index bfe43512a2..4808b8becf 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1992,7 +1992,7 @@ PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client su + + dnl RDP/Remote Desktop access module + dnl +-PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) ) ++PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp2 >= 1.0.1], (RDP/Remote Desktop client support) ) + + dnl + dnl Real RTSP plugin +diff --git a/modules/access/rdp.c b/modules/access/rdp.c +index 2992090219..49986f5da9 100644 +--- a/modules/access/rdp.c ++++ b/modules/access/rdp.c +@@ -45,18 +45,6 @@ + # include + #endif + +-#if !defined(FREERDP_VERSION_MAJOR) || \ +- (defined(FREERDP_VERSION_MAJOR) && !(FREERDP_VERSION_MAJOR > 1 || (FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR >= 1))) +-# define SoftwareGdi sw_gdi +-# define Fullscreen fullscreen +-# define ServerHostname hostname +-# define Username username +-# define Password password +-# define ServerPort port +-# define EncryptionMethods encryption +-# define ContextSize context_size +-#endif +- + #include + #ifdef HAVE_POLL + # include +@@ -144,6 +132,7 @@ static void desktopResizeHandler( rdpContext *p_context ) + vlcrdp_context_t * p_vlccontext = (vlcrdp_context_t *) p_context; + demux_sys_t *p_sys = p_vlccontext->p_demux->p_sys; + rdpGdi *p_gdi = p_context->gdi; ++ unsigned bytesPerPixel; + + if ( p_sys->es ) + { +@@ -153,17 +142,21 @@ static void desktopResizeHandler( rdpContext *p_context ) + + /* Now init and fill es format */ + vlc_fourcc_t i_chroma; +- switch( p_gdi->bytesPerPixel ) ++ switch( p_gdi->dstFormat ) + { + default: +- case 16: ++ msg_Dbg( p_vlccontext->p_demux, "unhandled dstFormat %x bpp", p_gdi->dstFormat); ++ case PIXEL_FORMAT_BGR16: + i_chroma = VLC_CODEC_RGB16; ++ bytesPerPixel = 16; + break; +- case 24: ++ case PIXEL_FORMAT_BGR24: + i_chroma = VLC_CODEC_RGB24; ++ bytesPerPixel = 24; + break; +- case 32: ++ case PIXEL_FORMAT_BGRA32: + i_chroma = VLC_CODEC_RGB32; ++ bytesPerPixel = 32; + break; + } + es_format_t fmt; +@@ -176,7 +169,7 @@ static void desktopResizeHandler( rdpContext *p_context ) + fmt.video.i_height = p_gdi->height; + fmt.video.i_frame_rate_base = 1000; + fmt.video.i_frame_rate = 1000 * p_sys->f_fps; +- p_sys->i_framebuffersize = p_gdi->width * p_gdi->height * p_gdi->bytesPerPixel; ++ p_sys->i_framebuffersize = p_gdi->width * p_gdi->height * bytesPerPixel; + + if ( p_sys->p_block ) + p_sys->p_block = block_Realloc( p_sys->p_block, 0, p_sys->i_framebuffersize ); +@@ -237,28 +230,19 @@ static bool postConnectHandler( freerdp *p_instance ) + vlcrdp_context_t * p_vlccontext = (vlcrdp_context_t *) p_instance->context; + + msg_Dbg( p_vlccontext->p_demux, "connected to desktop %dx%d (%d bpp)", +-#if defined(FREERDP_VERSION_MAJOR) && (FREERDP_VERSION_MAJOR > 1 || (FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR >= 1)) + p_instance->settings->DesktopWidth, + p_instance->settings->DesktopHeight, + p_instance->settings->ColorDepth +-#else +- p_instance->settings->width, +- p_instance->settings->height, +- p_instance->settings->color_depth +-#endif + ); + + p_instance->update->DesktopResize = desktopResizeHandler; + p_instance->update->BeginPaint = beginPaintHandler; + p_instance->update->EndPaint = endPaintHandler; + +- gdi_init( p_instance, +- CLRBUF_16BPP | +-#if defined(FREERDP_VERSION_MAJOR) && defined(FREERDP_VERSION_MINOR) && \ +- !(FREERDP_VERSION_MAJOR > 1 || (FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR >= 2)) +- CLRBUF_24BPP | +-#endif +- CLRBUF_32BPP, NULL ); ++ if ( p_instance->settings->ColorDepth > 16 ) ++ gdi_init( p_instance, PIXEL_FORMAT_XRGB32); ++ else ++ gdi_init( p_instance, PIXEL_FORMAT_RGB16); + + desktopResizeHandler( p_instance->context ); + return true; +@@ -432,10 +416,6 @@ static int Open( vlc_object_t *p_this ) + if ( p_sys->f_fps <= 0 ) p_sys->f_fps = 1.0; + p_sys->i_frame_interval = 1000000 / p_sys->f_fps; + +-#if FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR < 2 +- freerdp_channels_global_init(); +-#endif +- + p_sys->p_instance = freerdp_new(); + if ( !p_sys->p_instance ) + { +@@ -508,9 +488,6 @@ static void Close( vlc_object_t *p_this ) + + freerdp_disconnect( p_sys->p_instance ); + freerdp_free( p_sys->p_instance ); +-#if FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR < 2 +- freerdp_channels_global_uninit(); +-#endif + + if ( p_sys->p_block ) + block_Release( p_sys->p_block ); +-- +2.14.4 + diff --git a/package/vlc/0008-configure.ac-also-use-AC_PATH_PROG-to-check-for-wayl.patch b/package/vlc/0008-configure.ac-also-use-AC_PATH_PROG-to-check-for-wayl.patch new file mode 100644 index 00000000..2b74fe0d --- /dev/null +++ b/package/vlc/0008-configure.ac-also-use-AC_PATH_PROG-to-check-for-wayl.patch @@ -0,0 +1,50 @@ +From 27635f902831fac898586f1f3dc98369f12582c9 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sun, 26 Aug 2018 12:51:04 +0200 +Subject: [PATCH] configure.ac: also use AC_PATH_PROG to check for + wayland-scanner + +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: Bernd Kuhls +--- + configure.ac | 19 +++++++++++-------- + 1 file changed, 11 insertions(+), 8 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 4808b8becf..a18641ed23 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3140,14 +3140,17 @@ AS_IF([test "${enable_wayland}" != "no"], [ + AC_MSG_ERROR([$(${PKG_CONFIG} --print-errors 'wayland-protocols >= 1.4')]) + ]) + +- AC_MSG_CHECKING([for the Wayland scanner]) +- PKG_CHECK_EXISTS([wayland-scanner], [ +- WAYLAND_SCANNER="$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)" +- AC_MSG_RESULT([${WAYLAND_SCANNER}]) +- ], [ +- AC_MSG_RESULT([not found]) +- AC_MSG_ERROR([$(${PKG_CONFIG} --print-errors wayland-scanner)]) +- ]) ++ AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner]) ++ if test "x$WAYLAND_SCANNER" = x; then ++ AC_MSG_CHECKING([for the Wayland scanner]) ++ PKG_CHECK_EXISTS([wayland-scanner], [ ++ WAYLAND_SCANNER="$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)" ++ AC_MSG_RESULT([${WAYLAND_SCANNER}]) ++ ], [ ++ AC_MSG_RESULT([not found]) ++ AC_MSG_ERROR([$(${PKG_CONFIG} --print-errors wayland-scanner)]) ++ ]) ++ fi + + have_wayland="yes" + +-- +2.18.0 + diff --git a/package/vlc/0009-modules-video_filter-opencv_example.cpp-fix-build-wi.patch b/package/vlc/0009-modules-video_filter-opencv_example.cpp-fix-build-wi.patch new file mode 100644 index 00000000..952f9fdf --- /dev/null +++ b/package/vlc/0009-modules-video_filter-opencv_example.cpp-fix-build-wi.patch @@ -0,0 +1,42 @@ +From 57b1e723b73da4c8d42c20d4e28040ec4c0edd85 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 28 Feb 2020 14:29:47 +0100 +Subject: [PATCH] modules/video_filter/opencv_example.cpp: fix build with + opencv 3.4.9 + +Use cvScalar instead of CV_RGB to avoid the following build failure with +opencv 3.4.9: + +In file included from /home/naourr/work/instance-2/output-1/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/opencv2/imgproc/imgproc.hpp:48, + from video_filter/opencv_example.cpp:46: +video_filter/opencv_example.cpp: In function 'picture_t* Filter(filter_t*, picture_t*)': +video_filter/opencv_example.cpp:200:46: error: could not convert 'cv::Scalar_((double)0, (double)0, (double)0, (double)0)' from 'cv::Scalar' {aka 'cv::Scalar_'} to 'CvScalar' + cvRectangle( p_img[0], pt1, pt2, CV_RGB(0,0,0), 3, 8, 0 ); + ^~~~~~ + +Indeed, CV_RGB is defined as cv::Scalar instead of cvScalar since +version 3.4.2 and +https://github.com/opencv/opencv/commit/7f9253ea0a9fe2635926379420002dbf0c3fce0f + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://patches.videolan.org/patch/26655] +--- + modules/video_filter/opencv_example.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/video_filter/opencv_example.cpp b/modules/video_filter/opencv_example.cpp +index 1334cd4c36..1a8d574f7a 100644 +--- a/modules/video_filter/opencv_example.cpp ++++ b/modules/video_filter/opencv_example.cpp +@@ -202,7 +202,7 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic ) + pt2.x = (r->x+r->width)*scale; + pt1.y = r->y*scale; + pt2.y = (r->y+r->height)*scale; +- cvRectangle( p_img[0], pt1, pt2, CV_RGB(0,0,0), 3, 8, 0 ); ++ cvRectangle( p_img[0], pt1, pt2, cvScalar(0,0,0,0), 3, 8, 0 ); + + *(CvRect*)(&(p_sys->event_info.p_region[i])) = *r; + p_sys->event_info.p_region[i].i_id = p_sys->i_id++; +-- +2.25.0 + diff --git a/package/vlc/0010-opengl-missing-library-check.patch b/package/vlc/0010-opengl-missing-library-check.patch new file mode 100644 index 00000000..3a28fe34 --- /dev/null +++ b/package/vlc/0010-opengl-missing-library-check.patch @@ -0,0 +1,57 @@ +From 4ab41404cb85684125d73977cadebf83bbc246f5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= +Date: Sat, 22 Jan 2022 11:34:38 +0200 +Subject: [PATCH] opengl: missing library check + +Traditionally the presence of the header file was not considered +sufficient, though this was somewhat forgotten with the prevalence of +pkg-config. + +However most libraries have portable headers, while the shared library +is platform-dependent. It is common for the header to be present while +the library is absent with "multilib" installations (i.e. Linux +installation with multiple architectures). + +Downloaded from upstream commit: +https://code.videolan.org/videolan/vlc/-/commit/4ab41404cb85684125d73977cadebf83bbc246f5 + +Signed-off-by: Bernd Kuhls +--- + configure.ac | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 2f50808d597..0d57fadbf8b 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3169,7 +3169,6 @@ have_gl="no" + PKG_CHECK_MODULES([GL], [gl], [ + have_gl="yes" + ], [ +- AC_MSG_CHECKING([for OpenGL]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #ifdef _WIN32 + # include +@@ -3179,13 +3178,17 @@ PKG_CHECK_MODULES([GL], [gl], [ + [int t0 = GL_TEXTURE0;]]) + ], [ + GL_CFLAGS="" +- have_gl="yes" + AS_IF([test "${SYS}" != "mingw32"], [ +- GL_LIBS="-lGL" ++ AC_CHECK_LIB([GL], [glTexture2D], [ ++ have_gl="yes" ++ GL_LIBS="-lGL" ++ ]) + ], [ ++ have_gl="yes" + GL_LIBS="-lopengl32" + ]) + ]) ++ AC_MSG_CHECKING([for OpenGL]) + AC_MSG_RESULT([${have_gl}]) + ]) + AM_CONDITIONAL([HAVE_GL], [test "${have_gl}" = "yes"]) +-- +GitLab + diff --git a/package/vlc/Config.in b/package/vlc/Config.in new file mode 100644 index 00000000..964b7660 --- /dev/null +++ b/package/vlc/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_VLC + bool "vlc" + depends on !BR2_RISCV_32 + depends on BR2_USE_MMU # fork() + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 + select BR2_PACKAGE_LIBVORBIS if BR2_PACKAGE_OPUS + select BR2_PACKAGE_VLC_OPENCV3_BACKEND if BR2_PACKAGE_OPENCV3 + select BR2_PACKAGE_ZLIB if BR2_PACKAGE_TAGLIB + help + VLC is a free and open source cross-platform multimedia player + and framework that plays most multimedia files as well as DVD, + Audio CD, VCD, and various streaming protocols. + + http://www.videolan.org/vlc/ + +config BR2_PACKAGE_VLC_OPENCV3_BACKEND + bool + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + select BR2_PACKAGE_OPENCV3_LIB_OBJDETECT + +comment "vlc needs a toolchain w/ C++, dynamic library, wchar, threads, gcc >= 4.9, headers >= 3.7" + depends on !BR2_RISCV_32 + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS \ + || !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 \ + || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 diff --git a/package/vlc/vlc.hash b/package/vlc/vlc.hash new file mode 100644 index 00000000..b3d9a083 --- /dev/null +++ b/package/vlc/vlc.hash @@ -0,0 +1,7 @@ +# From https://get.videolan.org/vlc/3.0.21/vlc-3.0.21.tar.xz.sha256 +sha256 24dbbe1d7dfaeea0994d5def0bbde200177347136dbfe573f5b6a4cee25afbb0 vlc-3.0.21.tar.xz +# From https://get.videolan.org/vlc/3.0.21/vlc-3.0.21.tar.xz.sha1 +sha1 be8557fc2f4be58caebe4a8b1d70f03dc6b95792 vlc-3.0.21.tar.xz +# Locally computed +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB diff --git a/package/vlc/vlc.mk b/package/vlc/vlc.mk new file mode 100644 index 00000000..a5976164 --- /dev/null +++ b/package/vlc/vlc.mk @@ -0,0 +1,584 @@ +################################################################################ +# +# vlc +# +################################################################################ + +VLC_VERSION = 3.0.21 +VLC_SITE = https://get.videolan.org/vlc/$(VLC_VERSION) +VLC_SOURCE = vlc-$(VLC_VERSION).tar.xz +VLC_LICENSE = GPL-2.0+, LGPL-2.1+ +VLC_LICENSE_FILES = COPYING COPYING.LIB +VLC_CPE_ID_VENDOR = videolan +VLC_CPE_ID_PRODUCT = vlc_media_player +VLC_DEPENDENCIES = host-gettext host-pkgconf +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_or1k):$(BR2_TOOLCHAIN_GCC_AT_LEAST_6),y:) +VLC_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -O0" +VLC_CONF_OPTS += --disable-optimizations +endif + +# configure check for -fstack-protector-strong is broken +VLC_CONF_ENV += \ + ax_cv_check_cflags___fstack_protector_strong=$(if $(BR2_TOOLCHAIN_HAS_SSP),yes,no) + +# 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 +# VLC's definition, rename these two functions. +define VLC_OVERRIDE_PKG_M4 + $(SED) 's/PKG_WITH_MODULES/VLC_PKG_WITH_MODULES/g' \ + -e 's/PKG_HAVE_WITH_MODULES/VLC_PKG_HAVE_WITH_MODULES/g' \ + $(@D)/configure.ac $(@D)/m4/with_pkg.m4 +endef +VLC_POST_PATCH_HOOKS += VLC_OVERRIDE_PKG_M4 + +VLC_CONF_OPTS += \ + --disable-a52 \ + --disable-addonmanagermodules \ + --disable-aom \ + --disable-aribb25 \ + --disable-aribsub \ + --disable-asdcp \ + --disable-bpg \ + --disable-caca \ + --disable-chromaprint \ + --disable-chromecast \ + --disable-crystalhd \ + --disable-dc1394 \ + --disable-dca \ + --disable-decklink \ + --disable-dsm \ + --disable-dv1394 \ + --disable-fluidlite \ + --disable-gme \ + --disable-goom \ + --disable-jack \ + --disable-jpeg \ + --disable-kai \ + --disable-kate \ + --disable-kva \ + --disable-libplacebo \ + --disable-linsys \ + --disable-mfx \ + --disable-microdns \ + --disable-mmal \ + --disable-mtp \ + --disable-notify \ + --disable-projectm \ + --disable-schroedinger \ + --disable-shine \ + --disable-shout \ + --disable-sndio \ + --disable-spatialaudio \ + --disable-srt \ + --disable-telx \ + --disable-tiger \ + --disable-twolame \ + --disable-vdpau \ + --disable-vsxu \ + --disable-wasapi \ + --disable-x262 \ + --disable-zvbi \ + --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 +endif + +ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y) +VLC_CONF_OPTS += --enable-altivec +else +VLC_CONF_OPTS += --disable-altivec +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE),y) +VLC_CONF_OPTS += --enable-sse +else +VLC_CONF_OPTS += --disable-sse +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +VLC_CONF_OPTS += --enable-alsa +VLC_DEPENDENCIES += alsa-lib +else +VLC_CONF_OPTS += --disable-alsa +endif + +ifeq ($(BR2_PACKAGE_AVAHI_LIBAVAHI_CLIENT),y) +VLC_CONF_OPTS += --enable-avahi +VLC_DEPENDENCIES += avahi +else +VLC_CONF_OPTS += --disable-avahi +endif + +ifeq ($(BR2_PACKAGE_DAV1D),y) +VLC_CONF_OPTS += --enable-dav1d +VLC_DEPENDENCIES += dav1d +else +VLC_CONF_OPTS += --disable-dav1d +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +VLC_CONF_OPTS += --enable-dbus +VLC_DEPENDENCIES += dbus +else +VLC_CONF_OPTS += --disable-dbus +endif + +ifeq ($(BR2_PACKAGE_FAAD2),y) +VLC_CONF_OPTS += --enable-faad +VLC_DEPENDENCIES += faad2 +else +VLC_CONF_OPTS += --disable-faad +endif + +ifeq ($(BR2_PACKAGE_FFMPEG),y) +VLC_CONF_OPTS += --enable-avcodec +VLC_DEPENDENCIES += ffmpeg +else +VLC_CONF_OPTS += --disable-avcodec +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_POSTPROC),y) +VLC_CONF_OPTS += --enable-postproc +else +VLC_CONF_OPTS += --disable-postproc +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_SWSCALE),y) +VLC_CONF_OPTS += --enable-swscale +else +VLC_CONF_OPTS += --disable-swscale +endif + +ifeq ($(BR2_PACKAGE_FLAC),y) +VLC_CONF_OPTS += --enable-flac +VLC_DEPENDENCIES += flac +else +VLC_CONF_OPTS += --disable-flac +endif + +ifeq ($(BR2_PACKAGE_FLUIDSYNTH),y) +VLC_CONF_OPTS += --enable-fluidsynth +VLC_DEPENDENCIES += fluidsynth +else +VLC_CONF_OPTS += --disable-fluidsynth +endif + +ifeq ($(BR2_PACKAGE_FREERDP),y) +VLC_CONF_OPTS += --enable-freerdp +VLC_DEPENDENCIES += freerdp +else +VLC_CONF_OPTS += --disable-freerdp +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y) +VLC_CONF_OPTS += --enable-gst-decode +VLC_DEPENDENCIES += gst1-plugins-base +else +VLC_CONF_OPTS += --disable-gst-decode +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +VLC_DEPENDENCIES += libgl +endif + +ifeq ($(BR2_PACKAGE_HARFBUZZ),y) +VLC_CONF_OPTS += --enable-harfbuzz +VLC_DEPENDENCIES += harfbuzz +else +VLC_CONF_OPTS += --disable-harfbuzz +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y) +VLC_CONF_OPTS += --enable-gles2 +VLC_DEPENDENCIES += libgles +else +VLC_CONF_OPTS += --disable-gles2 +endif + +ifeq ($(BR2_PACKAGE_OPENCV3),y) +VLC_CONF_OPTS += --enable-opencv +VLC_DEPENDENCIES += opencv3 +else +VLC_CONF_OPTS += --disable-opencv +endif + +ifeq ($(BR2_PACKAGE_OPUS),y) +VLC_CONF_OPTS += --enable-opus +VLC_DEPENDENCIES += libvorbis opus +else +VLC_CONF_OPTS += --disable-opus +endif + +ifeq ($(BR2_PACKAGE_LIBARCHIVE),y) +VLC_CONF_OPTS += --enable-archive +VLC_DEPENDENCIES += libarchive +else +VLC_CONF_OPTS += --disable-archive +endif + +ifeq ($(BR2_PACKAGE_LIBASS),y) +VLC_CONF_OPTS += --enable-libass +VLC_DEPENDENCIES += libass +else +VLC_CONF_OPTS += --disable-libass +endif + +ifeq ($(BR2_PACKAGE_LIBBLURAY),y) +VLC_CONF_OPTS += --enable-bluray +VLC_DEPENDENCIES += libbluray +else +VLC_CONF_OPTS += --disable-bluray +endif + +ifeq ($(BR2_PACKAGE_LIBCDDB),y) +VLC_CONF_OPTS += --enable-libcddb +VLC_DEPENDENCIES += libcddb +else +VLC_CONF_OPTS += --disable-libcddb +endif + +ifeq ($(BR2_PACKAGE_LIBDVBPSI),y) +VLC_CONF_OPTS += --enable-dvbpsi +VLC_DEPENDENCIES += libdvbpsi +else +VLC_CONF_OPTS += --disable-dvbpsi +endif + +ifeq ($(BR2_PACKAGE_LIBDVDNAV),y) +VLC_CONF_OPTS += --enable-dvdnav +VLC_DEPENDENCIES += libdvdnav +else +VLC_CONF_OPTS += --disable-dvdnav +endif + +ifeq ($(BR2_PACKAGE_LIBDVDREAD),y) +VLC_CONF_OPTS += --enable-dvdread +VLC_DEPENDENCIES += libdvdread +else +VLC_CONF_OPTS += --disable-dvdread +endif + +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +VLC_CONF_OPTS += --enable-libgcrypt +VLC_DEPENDENCIES += libgcrypt +VLC_CONF_ENV += \ + GCRYPT_CONFIG="$(STAGING_DIR)/usr/bin/libgcrypt-config" +else +VLC_CONF_OPTS += --disable-libgcrypt +endif + +ifeq ($(BR2_PACKAGE_LIBIDN),y) +VLC_DEPENDENCIES += libidn +endif + +ifeq ($(BR2_PACKAGE_LIBMAD),y) +VLC_CONF_OPTS += --enable-mad +VLC_DEPENDENCIES += libmad +else +VLC_CONF_OPTS += --disable-mad +endif + +ifeq ($(BR2_PACKAGE_LIBMATROSKA),y) +VLC_CONF_OPTS += --enable-matroska +VLC_DEPENDENCIES += libmatroska +else +VLC_CONF_OPTS += --disable-matroska +endif + +ifeq ($(BR2_PACKAGE_LIBMODPLUG),y) +VLC_CONF_OPTS += --enable-mod +VLC_DEPENDENCIES += libmodplug +else +VLC_CONF_OPTS += --disable-mod +endif + +ifeq ($(BR2_PACKAGE_LIBMPEG2),y) +VLC_CONF_OPTS += --enable-libmpeg2 +VLC_DEPENDENCIES += libmpeg2 +else +VLC_CONF_OPTS += --disable-libmpeg2 +endif + +ifeq ($(BR2_PACKAGE_LIBNFS),y) +VLC_CONF_OPTS += --enable-nfs +VLC_DEPENDENCIES += libnfs +else +VLC_CONF_OPTS += --disable-nfs +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +VLC_CONF_OPTS += --enable-png +VLC_DEPENDENCIES += libpng +else +VLC_CONF_OPTS += --disable-png +endif + +ifeq ($(BR2_PACKAGE_LIBRSVG),y) +VLC_CONF_OPTS += --enable-svg --enable-svgdec +VLC_DEPENDENCIES += librsvg +else +VLC_CONF_OPTS += --disable-svg --disable-svgdec +endif + +ifeq ($(BR2_PACKAGE_LIBSAMPLERATE),y) +VLC_CONF_OPTS += --enable-samplerate +VLC_DEPENDENCIES += libsamplerate +else +VLC_CONF_OPTS += --disable-samplerate +endif + +ifeq ($(BR2_PACKAGE_LIBSECRET),y) +VLC_CONF_OPTS += --enable-secret +VLC_DEPENDENCIES += libsecret +else +VLC_CONF_OPTS += --disable-secret +endif + +ifeq ($(BR2_PACKAGE_LIBSOXR),y) +VLC_CONF_OPTS += --enable-soxr +VLC_DEPENDENCIES += libsoxr +else +VLC_CONF_OPTS += --disable-soxr +endif + +ifeq ($(BR2_PACKAGE_LIBSSH2),y) +VLC_CONF_OPTS += --enable-sftp +VLC_DEPENDENCIES += libssh2 +else +VLC_CONF_OPTS += --disable-sftp +endif + +ifeq ($(BR2_PACKAGE_LIBSIDPLAY2),y) +VLC_CONF_OPTS += --enable-sid +VLC_DEPENDENCIES += libsidplay2 +else +VLC_CONF_OPTS += --disable-sid +endif + +ifeq ($(BR2_PACKAGE_LIBTHEORA),y) +VLC_CONF_OPTS += --enable-theora +VLC_DEPENDENCIES += libtheora +else +VLC_CONF_OPTS += --disable-theora +endif + +ifeq ($(BR2_PACKAGE_LIBUPNP),y) +VLC_CONF_OPTS += --enable-upnp +VLC_DEPENDENCIES += libupnp +else +VLC_CONF_OPTS += --disable-upnp +endif + +# libva support depends on ffmpeg +ifeq ($(BR2_PACKAGE_FFMPEG)$(BR2_PACKAGE_LIBVA),yy) +VLC_CONF_OPTS += --enable-libva +VLC_DEPENDENCIES += libva +else +VLC_CONF_OPTS += --disable-libva +endif + +ifeq ($(BR2_PACKAGE_LIBVNCSERVER),y) +VLC_CONF_OPTS += --enable-vnc +VLC_DEPENDENCIES += libvncserver +else +VLC_CONF_OPTS += --disable-vnc +endif + +ifeq ($(BR2_PACKAGE_LIBVORBIS),y) +VLC_CONF_OPTS += --enable-vorbis +VLC_DEPENDENCIES += libvorbis +else +VLC_CONF_OPTS += --disable-vorbis +endif + +ifeq ($(BR2_PACKAGE_LIBV4L),y) +VLC_CONF_OPTS += --enable-v4l2 +VLC_DEPENDENCIES += libv4l +else +VLC_CONF_OPTS += --disable-v4l2 +endif + +ifeq ($(BR2_PACKAGE_LIBVPX),y) +VLC_CONF_OPTS += --enable-vpx +VLC_DEPENDENCIES += libvpx +else +VLC_CONF_OPTS += --disable-vpx +endif + +ifeq ($(BR2_PACKAGE_LIBXCB),y) +VLC_CONF_OPTS += --enable-xcb +VLC_DEPENDENCIES += libxcb +else +VLC_CONF_OPTS += --disable-xcb +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +VLC_CONF_OPTS += --enable-libxml2 +VLC_DEPENDENCIES += libxml2 +else +VLC_CONF_OPTS += --disable-libxml2 +endif + +ifeq ($(BR2_PACKAGE_LIVE555),y) +VLC_CONF_OPTS += --enable-live555 +VLC_DEPENDENCIES += live555 +ifneq ($(BR2_PACKAGE_OPENSSL),y) +VLC_CONF_ENV += CXXFLAGS="$(TARGET_CXXFLAGS) -DNO_OPENSSL" +endif +else +VLC_CONF_OPTS += --disable-live555 +endif + +ifeq ($(BR2_PACKAGE_LUA),y) +VLC_CONF_OPTS += --enable-lua +VLC_DEPENDENCIES += lua host-lua +else +VLC_CONF_OPTS += --disable-lua +endif + +ifeq ($(BR2_PACKAGE_MINIZIP),y) +VLC_DEPENDENCIES += minizip +endif + +ifeq ($(BR2_PACKAGE_MPG123),y) +VLC_CONF_OPTS += --enable-mpg123 +VLC_DEPENDENCIES += mpg123 +else +VLC_CONF_OPTS += --disable-mpg123 +endif + +ifeq ($(BR2_PACKAGE_MUSEPACK),y) +VLC_CONF_OPTS += --enable-mpc +VLC_DEPENDENCIES += musepack +else +VLC_CONF_OPTS += --disable-mpc +endif + +ifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y) +VLC_CONF_OPTS += --enable-ncurses +VLC_DEPENDENCIES += ncurses +else +VLC_CONF_OPTS += --disable-ncurses +endif + +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +VLC_CONF_OPTS += --enable-pulse +VLC_DEPENDENCIES += pulseaudio +else +VLC_CONF_OPTS += --disable-pulse +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_WIDGETS)$(BR2_PACKAGE_QT5SVG),yy) +VLC_CONF_OPTS += --enable-qt +VLC_DEPENDENCIES += qt5base qt5svg +ifeq ($(BR2_PACKAGE_XLIB_LIBXEXT)$(BR2_PACKAGE_XLIB_LIBXINERAMA)$(BR2_PACKAGE_XLIB_LIBXPM),yyy) +VLC_CONF_OPTS += --enable-skins2 +VLC_DEPENDENCIES += xlib_libXext xlib_libXinerama xlib_libXpm +else +VLC_CONF_OPTS += --disable-skins2 +endif +else +VLC_CONF_OPTS += --disable-qt --disable-skins2 +endif + +ifeq ($(BR2_PACKAGE_SDL_IMAGE),y) +VLC_CONF_OPTS += --enable-sdl-image +VLC_DEPENDENCIES += sdl_image +else +VLC_CONF_OPTS += --disable-sdl-image +endif + +ifeq ($(BR2_PACKAGE_SAMBA4),y) +VLC_CONF_OPTS += --enable-smbclient +VLC_DEPENDENCIES += samba4 +else +VLC_CONF_OPTS += --disable-smbclient +endif + +ifeq ($(BR2_PACKAGE_SPEEX)$(BR2_PACKAGE_SPEEXDSP),yy) +VLC_CONF_OPTS += --enable-speex +VLC_DEPENDENCIES += speex speexdsp +else +VLC_CONF_OPTS += --disable-speex +endif + +ifeq ($(BR2_PACKAGE_TAGLIB),y) +VLC_CONF_OPTS += --enable-taglib +VLC_DEPENDENCIES += taglib +else +VLC_CONF_OPTS += --disable-taglib +endif + +ifeq ($(BR2_PACKAGE_TREMOR),y) +VLC_CONF_OPTS += --enable-tremor +VLC_DEPENDENCIES += tremor +else +VLC_CONF_OPTS += --disable-tremor +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +VLC_CONF_OPTS += --enable-udev +VLC_DEPENDENCIES += udev +else +VLC_CONF_OPTS += --disable-udev +endif + +ifeq ($(BR2_PACKAGE_WAYLAND)$(BR2_PACKAGE_WAYLAND_PROTOCOLS),yy) +VLC_CONF_OPTS += --enable-wayland +VLC_DEPENDENCIES += wayland wayland-protocols +else +VLC_CONF_OPTS += --disable-wayland +endif + +ifeq ($(BR2_PACKAGE_X264),y) +VLC_CONF_OPTS += --enable-x264 +VLC_DEPENDENCIES += x264 +else +VLC_CONF_OPTS += --disable-x264 +endif + +ifeq ($(BR2_PACKAGE_X265),y) +VLC_CONF_OPTS += --enable-x265 +VLC_DEPENDENCIES += x265 +else +VLC_CONF_OPTS += --disable-x265 +endif + +ifeq ($(BR2_PACKAGE_XCB_UTIL_KEYSYMS),y) +VLC_DEPENDENCIES += xcb-util-keysyms +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) +VLC_CONF_OPTS += --with-x +VLC_DEPENDENCIES += xlib_libX11 +else +VLC_CONF_OPTS += --without-x +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +VLC_DEPENDENCIES += zlib +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +VLC_CONF_OPTS += --enable-gnutls +VLC_DEPENDENCIES += gnutls +else +VLC_CONF_OPTS += --disable-gnutls +endif + +$(eval $(autotools-package)) diff --git a/package/vmtouch/Config.in b/package/vmtouch/Config.in new file mode 100644 index 00000000..daae03aa --- /dev/null +++ b/package/vmtouch/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_VMTOUCH + bool "vmtouch" + depends on BR2_USE_MMU # fork() + help + vmtouch is a tool for learning about and controlling + the file system cache of unix and unix-like systems. It + can discover which files the OS is caching, tell the OS + to cache or evict some files or regions of files, lock + files into memory so the OS won't evict them, and more. + + https://hoytech.com/vmtouch/ diff --git a/package/vmtouch/vmtouch.hash b/package/vmtouch/vmtouch.hash new file mode 100644 index 00000000..197794f4 --- /dev/null +++ b/package/vmtouch/vmtouch.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 d57b7b3ae1146c4516429ab7d6db6f2122401db814ddd9cdaad10980e9c8428c vmtouch-1.3.1.tar.gz + +# Hash for license files: +sha256 13258709ed29c17394e0a3ba8c8b9360af35b85231db514f11a0ba385cecd08e LICENSE diff --git a/package/vmtouch/vmtouch.mk b/package/vmtouch/vmtouch.mk new file mode 100644 index 00000000..0aa7bfb4 --- /dev/null +++ b/package/vmtouch/vmtouch.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# vmtouch +# +################################################################################ + +VMTOUCH_VERSION = 1.3.1 +VMTOUCH_SITE = $(call github,hoytech,vmtouch,v$(VMTOUCH_VERSION)) +VMTOUCH_LICENSE = BSD-3-Clause +VMTOUCH_LICENSE_FILES = LICENSE + +define VMTOUCH_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define VMTOUCH_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install \ + DESTDIR=$(TARGET_DIR) PREFIX=/usr +endef + +$(eval $(generic-package)) diff --git a/package/vnstat/Config.in b/package/vnstat/Config.in new file mode 100644 index 00000000..677ff575 --- /dev/null +++ b/package/vnstat/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_VNSTAT + bool "vnstat" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR # mbstowcs() + select BR2_PACKAGE_SQLITE + help + vnStat is a console-based network traffic monitor that keeps a + log of network traffic for the selected interface(s). It uses + the network interface statistics provided by the kernel as + information source. This means that vnStat won't actually be + sniffing any traffic and also ensures light use of system + resources. + + http://humdi.net/vnstat + +comment "vnstat needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR diff --git a/package/vnstat/vnstat.hash b/package/vnstat/vnstat.hash new file mode 100644 index 00000000..87d2a6d6 --- /dev/null +++ b/package/vnstat/vnstat.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 babc3f1583cc40e4e8ffb2f53296d93d308cb5a5043e85054f6eaf7b4ae57856 vnstat-2.11.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/vnstat/vnstat.mk b/package/vnstat/vnstat.mk new file mode 100644 index 00000000..665c0fea --- /dev/null +++ b/package/vnstat/vnstat.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# vnstat +# +################################################################################ + +VNSTAT_VERSION = 2.11 +VNSTAT_SITE = http://humdi.net/vnstat +VNSTAT_LICENSE = GPL-2.0 +VNSTAT_LICENSE_FILES = COPYING +VNSTAT_SELINUX_MODULES = vnstatd +VNSTAT_DEPENDENCIES = host-pkgconf sqlite +VNSTAT_CONF_OPTS = --disable-extra-paths + +ifeq ($(BR2_PACKAGE_GD)$(BR2_PACKAGE_LIBPNG),yy) +VNSTAT_DEPENDENCIES += gd +VNSTAT_CONF_OPTS += --enable-image-output +else +VNSTAT_CONF_OPTS += --disable-image-output +endif + +$(eval $(autotools-package)) diff --git a/package/vo-aacenc/Config.in b/package/vo-aacenc/Config.in new file mode 100644 index 00000000..b5487dc9 --- /dev/null +++ b/package/vo-aacenc/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_VO_AACENC + bool "vo-aacenc" + help + This library contains an encoder implementation of the + Advanced Audio Coding (AAC) audio codec. The library is + based on a codec implementation by VisualOn as part of the + Stagefright framework from the Google Android project. + + http://sourceforge.net/projects/opencore-amr/ diff --git a/package/vo-aacenc/vo-aacenc.hash b/package/vo-aacenc/vo-aacenc.hash new file mode 100644 index 00000000..f0d352f8 --- /dev/null +++ b/package/vo-aacenc/vo-aacenc.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 e51a7477a359f18df7c4f82d195dab4e14e7414cbd48cf79cc195fc446850f36 vo-aacenc-0.1.3.tar.gz +sha256 8b3f1762349248d444ab9acbafe73941254e36e1064954da56bb9ddbd5873ddb COPYING diff --git a/package/vo-aacenc/vo-aacenc.mk b/package/vo-aacenc/vo-aacenc.mk new file mode 100644 index 00000000..ecdd5849 --- /dev/null +++ b/package/vo-aacenc/vo-aacenc.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# vo-aacenc +# +################################################################################ + +VO_AACENC_VERSION = 0.1.3 +VO_AACENC_SITE = http://downloads.sourceforge.net/project/opencore-amr/vo-aacenc +VO_AACENC_LICENSE = Apache-2.0 +VO_AACENC_LICENSE_FILES = COPYING +VO_AACENC_INSTALL_STAGING = YES + +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 + +ifeq ($(BR2_ARM_CPU_HAS_NEON),y) +VO_AACENC_CONF_OPTS += --enable-armv7neon +# mfpu=neon needed to assemble neon code +VO_AACENC_CFLAGS += -mfpu=neon +else +VO_AACENC_CONF_OPTS += --disable-armv7neon + +ifeq ($(BR2_ARM_CPU_ARMV4),) +VO_AACENC_CONF_OPTS += --enable-armv5e +else +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 = \ + CFLAGS="$(VO_AACENC_CFLAGS)" + +$(eval $(autotools-package)) diff --git a/package/volk/Config.in b/package/volk/Config.in new file mode 100644 index 00000000..6a343e07 --- /dev/null +++ b/package/volk/Config.in @@ -0,0 +1,28 @@ +comment "volk needs a toolchain w/ C++, NPTL, wchar, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS + +config BR2_PACKAGE_VOLK + bool "volk" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17 + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_USE_MMU # use fork() + help + VOLK is the Vector-Optimized Library of Kernels. It is a + library that contains kernels of hand-written SIMD code + for different mathematical operations. Since each SIMD + architecture can be very different and no compiler has yet + come along to handle vectorization properly or highly + efficiently, VOLK approaches the problem differently. + + For each architecture or platform that a developer wishes + to vectorize for, a new proto-kernel is added to VOLK. At + runtime, VOLK will select the correct proto-kernel. In this + way, the users of VOLK call a kernel for performing the + operation that is platform/architecture agnostic. This + allows us to write portable SIMD code. + + https://www.libvolk.org/ diff --git a/package/volk/volk.hash b/package/volk/volk.hash new file mode 100644 index 00000000..8047a68b --- /dev/null +++ b/package/volk/volk.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 88fd80638a3683f23a8cae6c551a8cfe9ea55735c701846f3eeeeeea8a14f6a3 volk-3.0.0.tar.xz +sha256 e3a994d82e644b03a792a930f574002658412f62407f5fee083f2555c5f23118 COPYING diff --git a/package/volk/volk.mk b/package/volk/volk.mk new file mode 100644 index 00000000..67475d5c --- /dev/null +++ b/package/volk/volk.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# volk +# +################################################################################ + +VOLK_VERSION = 3.0.0 +VOLK_SITE = https://github.com/gnuradio/volk/releases/download/v$(VOLK_VERSION) +VOLK_SOURCE = volk-$(VOLK_VERSION).tar.xz +VOLK_LICENSE = LGPL-3.0+ +VOLK_LICENSE_FILES = COPYING + +VOLK_SUPPORTS_IN_SOURCE_BUILD = NO + +# host-python-mako are needed for volk to compile +VOLK_DEPENDENCIES = host-python3 host-python-mako + +VOLK_CONF_OPTS = \ + -DPYTHON_EXECUTABLE=$(HOST_DIR)/bin/python3 \ + -DENABLE_MODTOOL=OFF \ + -DENABLE_TESTING=OFF \ + -DENABLE_PROFILING=OFF \ + -DVOLK_PYTHON_DIR=lib/python$(PYTHON3_VERSION_MAJOR)/site-packages + +# For third-party blocks, the volk library is mandatory at +# compile time. +VOLK_INSTALL_STAGING = YES + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +VOLK_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic +endif + +ifeq ($(BR2_PACKAGE_ORC),y) +VOLK_DEPENDENCIES += orc +VOLK_CONF_OPTS += -DENABLE_ORC=ON +else +VOLK_CONF_OPTS += -DENABLE_ORC=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/vorbis-tools/0001-fix-build-with-gcc-14.patch b/package/vorbis-tools/0001-fix-build-with-gcc-14.patch new file mode 100644 index 00000000..a05ce8a5 --- /dev/null +++ b/package/vorbis-tools/0001-fix-build-with-gcc-14.patch @@ -0,0 +1,51 @@ +From f4a31fe975ea37537f39ace4420aee893b7e0b1a Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 21 Jul 2024 21:57:38 +0200 +Subject: [PATCH] fix build with gcc >= 14 + +Add missing includes to avoid the following build failure with gcc >= +14: + +codec_skeleton.c: In function 'skeleton_process_fisbone_message_header': +codec_skeleton.c:119:9: error: implicit declaration of function 'utf8_decode' [-Wimplicit-function-declaration] + 119 | if (utf8_decode(header, &decoded) < 0) { + | ^~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/bb5d56d836e7d0f2a62daa9954878ad6e0b190ed + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/xiph/vorbis-tools/pull/48 +--- + ogginfo/codec_skeleton.c | 2 ++ + share/utf8.c | 1 + + 2 files changed, 3 insertions(+) + +diff --git a/ogginfo/codec_skeleton.c b/ogginfo/codec_skeleton.c +index a27f8da..f906f8c 100644 +--- a/ogginfo/codec_skeleton.c ++++ b/ogginfo/codec_skeleton.c +@@ -28,6 +28,8 @@ + + #include "private.h" + ++#include "utf8.h" ++ + typedef struct { + bool supported; + uint16_t version_major; +diff --git a/share/utf8.c b/share/utf8.c +index be378d1..e819b67 100644 +--- a/share/utf8.c ++++ b/share/utf8.c +@@ -28,6 +28,7 @@ + #include + #include + ++#include "charset.h" + #include "utf8.h" + + +-- +2.43.0 + diff --git a/package/vorbis-tools/Config.in b/package/vorbis-tools/Config.in new file mode 100644 index 00000000..6092e01a --- /dev/null +++ b/package/vorbis-tools/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_VORBIS_TOOLS + bool "vorbis-tools" + select BR2_PACKAGE_LIBAO + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_LIBVORBIS + select BR2_PACKAGE_LIBCURL + help + Standalone player, encoder and decoder for Ogg format files. + + Works also as a streaming player. + + http://www.vorbis.com/ diff --git a/package/vorbis-tools/vorbis-tools.hash b/package/vorbis-tools/vorbis-tools.hash new file mode 100644 index 00000000..a4f463e4 --- /dev/null +++ b/package/vorbis-tools/vorbis-tools.hash @@ -0,0 +1,4 @@ +# From http://downloads.xiph.org/releases/vorbis/SHA256SUMS +sha256 db7774ec2bf2c939b139452183669be84fda5774d6400fc57fde37f77624f0b0 vorbis-tools-1.4.2.tar.gz +# Locally computed +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/vorbis-tools/vorbis-tools.mk b/package/vorbis-tools/vorbis-tools.mk new file mode 100644 index 00000000..936d2d81 --- /dev/null +++ b/package/vorbis-tools/vorbis-tools.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# vorbis-tools +# +################################################################################ + +VORBIS_TOOLS_VERSION = 1.4.2 +VORBIS_TOOLS_SITE = http://downloads.xiph.org/releases/vorbis +VORBIS_TOOLS_LICENSE = GPL-2.0 +VORBIS_TOOLS_LICENSE_FILES = COPYING +VORBIS_TOOLS_CPE_ID_VENDOR = xiph +VORBIS_TOOLS_DEPENDENCIES = libao libogg libvorbis libcurl +VORBIS_TOOLS_CONF_OPTS = --program-transform-name='' + +# ogg123 calls math functions but forgets to link with libm +VORBIS_TOOLS_CONF_ENV = LIBS=-lm + +ifeq ($(BR2_PACKAGE_FLAC),y) +VORBIS_TOOLS_DEPENDENCIES += flac +endif + +ifeq ($(BR2_PACKAGE_OPUSFILE),y) +VORBIS_TOOLS_DEPENDENCIES += opusfile +endif + +ifeq ($(BR2_PACKAGE_SPEEX),y) +VORBIS_TOOLS_DEPENDENCIES += speex +endif + +$(eval $(autotools-package)) diff --git a/package/vpnc/0001-Makefile-allow-to-override-the-PREFIX-variable.patch b/package/vpnc/0001-Makefile-allow-to-override-the-PREFIX-variable.patch new file mode 100644 index 00000000..49909ada --- /dev/null +++ b/package/vpnc/0001-Makefile-allow-to-override-the-PREFIX-variable.patch @@ -0,0 +1,31 @@ +From 7314d232f8e85879d8f4c311ced44ee5b21fb239 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 10 Feb 2016 23:26:27 +0100 +Subject: [PATCH] Makefile: allow to override the PREFIX variable + +Some people may not want to install in /usr/local, so this commit +makes it possible to override the PREFIX variable from the make +command line. + +Signed-off-by: Thomas Petazzoni +--- + + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 69f5aca..f9a6781 100644 +--- a/Makefile ++++ b/Makefile +@@ -20,7 +20,7 @@ + # $Id$ + + DESTDIR= +-PREFIX=/usr/local ++PREFIX?=/usr/local + ETCDIR=/etc/vpnc + BINDIR=$(PREFIX)/bin + SBINDIR=$(PREFIX)/sbin +-- +2.6.4 + diff --git a/package/vpnc/0002-Makefile-allow-to-override-the-version.patch b/package/vpnc/0002-Makefile-allow-to-override-the-version.patch new file mode 100644 index 00000000..9d0bae3d --- /dev/null +++ b/package/vpnc/0002-Makefile-allow-to-override-the-version.patch @@ -0,0 +1,41 @@ +From 8b035de4867db4fb8da41298224d92bf5b18e86f Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 10 Feb 2016 23:27:30 +0100 +Subject: [PATCH] Makefile: allow to override the version + +The mk-version script makes the assumption that the build process runs +from a SVN checkout or a Git clone of the vpnc source code. However, +this is not always the case, for example when you are building from a +tarball, but inside a larger project that is versioned with Git. + +This is typically the case when building vpnc under a tool like +Buildroot, or potentially other embedded Linux build system: the build +system tool itself is versioned in Git, downloads tarballs of software +components and builds them. + +In order to support such situations, this commit adjusts the Makefile +to allow the VERSION variable to be overriden from the make command +line. + +Signed-off-by: Thomas Petazzoni +--- + + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index f9a6781..e80ef17 100644 +--- a/Makefile ++++ b/Makefile +@@ -57,7 +57,7 @@ OBJS = $(addsuffix .o,$(basename $(SRCS))) + CRYPTO_OBJS = $(addsuffix .o,$(basename $(CRYPTO_SRCS))) + BINOBJS = $(addsuffix .o,$(BINS)) + BINSRCS = $(addsuffix .c,$(BINS)) +-VERSION := $(shell sh mk-version) ++VERSION ?= $(shell sh mk-version) + RELEASE_VERSION := $(shell cat VERSION) + + CC ?= gcc +-- +2.6.4 + diff --git a/package/vpnc/0003-Makefile-allow-passing-custom-CFLAGS-CPPFLAGS.patch b/package/vpnc/0003-Makefile-allow-passing-custom-CFLAGS-CPPFLAGS.patch new file mode 100644 index 00000000..c232206a --- /dev/null +++ b/package/vpnc/0003-Makefile-allow-passing-custom-CFLAGS-CPPFLAGS.patch @@ -0,0 +1,45 @@ +From 014a8e04a0fa775b2ade78e5f7655a1453375884 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 10 Feb 2016 23:31:12 +0100 +Subject: [PATCH] Makefile: allow passing custom CFLAGS/CPPFLAGS + +vpnc's Makefile specifies some CFLAGS and CPPFLAGS value, but it may +be needed to pass additional custom flags on the make command line. To +make this possible, we switch from a plain += operator to the +"override ... +=" operator. + +Signed-off-by: Thomas Petazzoni +--- + + Makefile | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/Makefile b/Makefile +index e80ef17..7ac225a 100644 +--- a/Makefile ++++ b/Makefile +@@ -62,9 +62,9 @@ RELEASE_VERSION := $(shell cat VERSION) + + CC ?= gcc + CFLAGS ?= -O3 -g +-CFLAGS += -W -Wall -Wmissing-declarations -Wwrite-strings +-CFLAGS += $(shell libgcrypt-config --cflags) $(CRYPTO_CFLAGS) +-CPPFLAGS += -DVERSION=\"$(VERSION)\" ++override CFLAGS += -W -Wall -Wmissing-declarations -Wwrite-strings ++override CFLAGS += $(shell libgcrypt-config --cflags) $(CRYPTO_CFLAGS) ++override CPPFLAGS += -DVERSION=\"$(VERSION)\" + LDFLAGS ?= -g + LIBS += $(shell libgcrypt-config --libs) $(CRYPTO_LDADD) + +@@ -73,7 +73,7 @@ LIBS += -lnsl -lresolv -lsocket + endif + ifneq (,$(findstring Apple,$(shell $(CC) --version))) + # enabled in FSF GCC, disabled by default in Apple GCC +-CFLAGS += -fstrict-aliasing -freorder-blocks -fsched-interblock ++override CFLAGS += -fstrict-aliasing -freorder-blocks -fsched-interblock + endif + + all : $(BINS) vpnc.8 +-- +2.6.4 + diff --git a/package/vpnc/0004-Makefile-provide-an-option-to-not-build-manpages.patch b/package/vpnc/0004-Makefile-provide-an-option-to-not-build-manpages.patch new file mode 100644 index 00000000..f767a59b --- /dev/null +++ b/package/vpnc/0004-Makefile-provide-an-option-to-not-build-manpages.patch @@ -0,0 +1,57 @@ +From 3c16d0b7bf809a56affd6e1a4c0998027968b91a Mon Sep 17 00:00:00 2001 +From: Ulf Samuelsson +Date: Mon, 8 Feb 2016 23:03:48 +0100 +Subject: [PATCH] Makefile: provide an option to not build manpages + +The process of generating the vpnc.8 man page consists in running the +vpnc tool itself, and parse its --long-help output. While this is +perfectly fine when building natively, it fails completely when +cross-compiling: the vpnc binary that was built cannot be executed on +the build machine. + +In order to support such situations with minimal changes, this patch +adjusts the Makefile to make it understand a MANS variable. By +default, it's defined to "vpnc.8", which means the manpage continues +to be built as usual. However, if it's overriden to be empty, then no +manpage is built. + +Signed-off-by: Thomas Petazzoni +--- + + Makefile | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 7ac225a..ea2cd41 100644 +--- a/Makefile ++++ b/Makefile +@@ -54,6 +54,7 @@ endif + SRCS = sysdep.c vpnc-debug.c isakmp-pkt.c tunip.c config.c dh.c math_group.c supp.c decrypt-utils.c crypto.c $(CRYPTO_SRCS) + BINS = vpnc cisco-decrypt test-crypto + OBJS = $(addsuffix .o,$(basename $(SRCS))) ++MANS ?= vpnc.8 + CRYPTO_OBJS = $(addsuffix .o,$(basename $(CRYPTO_SRCS))) + BINOBJS = $(addsuffix .o,$(BINS)) + BINSRCS = $(addsuffix .c,$(BINS)) +@@ -76,7 +77,7 @@ ifneq (,$(findstring Apple,$(shell $(CC) --version))) + override CFLAGS += -fstrict-aliasing -freorder-blocks -fsched-interblock + endif + +-all : $(BINS) vpnc.8 ++all : $(BINS) $(MANS) + + vpnc : $(OBJS) vpnc.o + $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) +@@ -136,7 +137,9 @@ install-common: all + install -m600 vpnc.conf $(DESTDIR)$(ETCDIR)/default.conf + install -m755 vpnc-disconnect $(DESTDIR)$(SBINDIR) + install -m755 pcf2vpnc $(DESTDIR)$(BINDIR) ++ifneq ($(MANS),) + install -m644 vpnc.8 $(DESTDIR)$(MANDIR)/man8 ++endif + install -m644 pcf2vpnc.1 $(DESTDIR)$(MANDIR)/man1 + install -m644 cisco-decrypt.1 $(DESTDIR)$(MANDIR)/man1 + install -m644 COPYING $(DESTDIR)$(DOCDIR) +-- +2.6.4 + diff --git a/package/vpnc/0005-Makefile-allow-passing-a-custom-path-to-libgcrypt-co.patch b/package/vpnc/0005-Makefile-allow-passing-a-custom-path-to-libgcrypt-co.patch new file mode 100644 index 00000000..86239079 --- /dev/null +++ b/package/vpnc/0005-Makefile-allow-passing-a-custom-path-to-libgcrypt-co.patch @@ -0,0 +1,40 @@ +From 6180ca780e3a792bd632d8899c2b35991822c93d Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 8 Feb 2016 23:32:57 +0100 +Subject: [PATCH] Makefile: allow passing a custom path to libgcrypt-config + +The libgcrypt-config program may not be in the PATH, so this patch +adjusts the Makefile so that it understands a LIBGCRYPT_CONFIG +variable. By default, its value is libgcrypt-config so that the +behavior is unchanged. + +Signed-off-by: Thomas Petazzoni +--- + + Makefile | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index ea2cd41..649ddfb 100644 +--- a/Makefile ++++ b/Makefile +@@ -61,13 +61,14 @@ BINSRCS = $(addsuffix .c,$(BINS)) + VERSION ?= $(shell sh mk-version) + RELEASE_VERSION := $(shell cat VERSION) + ++LIBGCRYPT_CONFIG ?= libgcrypt-config + CC ?= gcc + CFLAGS ?= -O3 -g + override CFLAGS += -W -Wall -Wmissing-declarations -Wwrite-strings +-override CFLAGS += $(shell libgcrypt-config --cflags) $(CRYPTO_CFLAGS) ++override CFLAGS += $(shell $(LIBGCRYPT_CONFIG) --cflags) $(CRYPTO_CFLAGS) + override CPPFLAGS += -DVERSION=\"$(VERSION)\" + LDFLAGS ?= -g +-LIBS += $(shell libgcrypt-config --libs) $(CRYPTO_LDADD) ++LIBS += $(shell $(LIBGCRYPT_CONFIG) --libs) $(CRYPTO_LDADD) + + ifeq ($(shell uname -s), SunOS) + LIBS += -lnsl -lresolv -lsocket +-- +2.6.4 + diff --git a/package/vpnc/0006-config.c-Replace-deprecated-SUSv3-functions-with-POS.patch b/package/vpnc/0006-config.c-Replace-deprecated-SUSv3-functions-with-POS.patch new file mode 100644 index 00000000..5efe303b --- /dev/null +++ b/package/vpnc/0006-config.c-Replace-deprecated-SUSv3-functions-with-POS.patch @@ -0,0 +1,36 @@ +From 627a45d88acf236cb36326919e4a2fa975c688bd Mon Sep 17 00:00:00 2001 +From: Bernhard Reutner-Fischer +Date: Mon, 8 Feb 2016 23:05:23 +0100 +Subject: [PATCH] config.c: Replace deprecated SUSv3 functions with POSIX + equivalents + +Replace the deprecated SUSv3 function index() by its POSIX equivalent +strchr(). This is necessary to successfully build vpnc with uClibc, +when SUSv3 compatibility functions are not compiled in. + +Patch originally from Bernhard Reutner-Fischer +. + +Signed-off-by: Thomas Petazzoni +--- + + config.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/config.c b/config.c +index 57778e3..11b363b 100644 +--- a/config.c ++++ b/config.c +@@ -657,8 +657,7 @@ static const struct config_names_s { + static char *get_config_filename(const char *name, int add_dot_conf) + { + char *realname; +- +- asprintf(&realname, "%s%s%s", index(name, '/') ? "" : "/etc/vpnc/", name, add_dot_conf ? ".conf" : ""); ++ asprintf(&realname, "%s%s%s", strchr(name, '/') ? "" : "/etc/vpnc/", name, add_dot_conf ? ".conf" : ""); + return realname; + } + +-- +2.6.4 + diff --git a/package/vpnc/0007-sysdep.h-don-t-assume-error.h-is-available-on-all-Li.patch b/package/vpnc/0007-sysdep.h-don-t-assume-error.h-is-available-on-all-Li.patch new file mode 100644 index 00000000..41c6191e --- /dev/null +++ b/package/vpnc/0007-sysdep.h-don-t-assume-error.h-is-available-on-all-Li.patch @@ -0,0 +1,52 @@ +From 7f41ef32c8c887ee23ca83da4dfd7a4f27e01186 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 10 Feb 2016 23:09:51 +0100 +Subject: [PATCH] sysdep.h: don't assume is available on all Linux + platforms + +The current logic in sysdep.h assumes that whenever you have __linux__ +or __GLIBC__ defined, then functionality is +available. However, the functionality is a glibc-ism, not +available in more standard-conformant C libraries such as the musl C +library. With musl, __linux__ is defined (but of course not +__GLIBC__). With the current logic, sysdep.h assumes that is +available, which isn't the case. + +This patch therefore changes the logic to only use when +__GLIBC__ is defined. It fixes the following build error: + +In file included from tunip.c:87:0: +sysdep.h:41:19: fatal error: error.h: No such file or directory + #include + +Original patch from +http://git.alpinelinux.org/cgit/aports/tree/testing/vpnc/working.patch. + +Signed-off-by: Thomas Petazzoni +--- + sysdep.h | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/sysdep.h b/sysdep.h +index 137bf6d..fb65b31 100644 +--- a/sysdep.h ++++ b/sysdep.h +@@ -38,11 +38,14 @@ int tun_get_hwaddr(int fd, char *dev, uint8_t *hwaddr); + + /***************************************************************************/ + #if defined(__linux__) || defined(__GLIBC__) ++ ++#ifdef __GLIBC__ + #include ++#define HAVE_ERROR 1 ++#endif + + #define HAVE_VASPRINTF 1 + #define HAVE_ASPRINTF 1 +-#define HAVE_ERROR 1 + #define HAVE_UNSETENV 1 + #define HAVE_SETENV 1 + #endif +-- +2.6.4 + diff --git a/package/vpnc/0008-sysdep.c-don-t-include-linux-if_tun.h-on-Linux.patch b/package/vpnc/0008-sysdep.c-don-t-include-linux-if_tun.h-on-Linux.patch new file mode 100644 index 00000000..a4cfe11b --- /dev/null +++ b/package/vpnc/0008-sysdep.c-don-t-include-linux-if_tun.h-on-Linux.patch @@ -0,0 +1,54 @@ +From 2e2eab070384834036c1458c669070ed17d81dbe Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 10 Feb 2016 23:15:36 +0100 +Subject: [PATCH] sysdep.c: don't include on Linux +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Including in sysdep.c is not necessary since sysdep.h +already includes . And this is actually +potentially harmful since both files redefine the same 'struct +ethhdr', causing the following build failure with the musl C library: + +In file included from sysdep.h:28:0, + from sysdep.c:71: +.../buildroot/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/netinet/if_ether.h:96:8: error: redefinition of ‘struct ethhdr’ + struct ethhdr { + ^ +In file included from .../buildroot/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/if_tun.h:20:0, + from sysdep.c:62: +.../buildroot/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/if_ether.h:138:8: note: originally defined here + struct ethhdr { + ^ + +Original patch from: +http://git.alpinelinux.org/cgit/aports/tree/testing/vpnc/working.patch + +Signed-off-by: Thomas Petazzoni +--- + sysdep.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/sysdep.c b/sysdep.c +index d8f181d..f83543d 100644 +--- a/sysdep.c ++++ b/sysdep.c +@@ -58,13 +58,11 @@ + + #if defined(__DragonFly__) + #include +-#elif defined(__linux__) +-#include + #elif defined(__APPLE__) + /* no header for tun */ + #elif defined(__CYGWIN__) + #include "tap-win32.h" +-#else ++#elif !defined(__linux__) + #include + #endif + +-- +2.6.4 + diff --git a/package/vpnc/0009-config.c-add-missing-sys-ttydefaults.h-include.patch b/package/vpnc/0009-config.c-add-missing-sys-ttydefaults.h-include.patch new file mode 100644 index 00000000..bce552e5 --- /dev/null +++ b/package/vpnc/0009-config.c-add-missing-sys-ttydefaults.h-include.patch @@ -0,0 +1,36 @@ +From 17277915af703a4767de791916621d8f59aef516 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 10 Feb 2016 23:21:26 +0100 +Subject: [PATCH] config.c: add missing include +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This include is needed to get the definition of CEOT, otherwise the +build fails with: + +config.c: In function ‘vpnc_getline’: +config.c:145:25: error: ‘CEOT’ undeclared (first use in this function) + if (llen == 0 && c == CEOT) + ^ + +Signed-off-by: Thomas Petazzoni +--- + config.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/config.c b/config.c +index 11b363b..f47a534 100644 +--- a/config.c ++++ b/config.c +@@ -31,6 +31,7 @@ + #include + #include + #include ++#include + + #include + +-- +2.6.4 + diff --git a/package/vpnc/Config.in b/package/vpnc/Config.in new file mode 100644 index 00000000..6455b0d8 --- /dev/null +++ b/package/vpnc/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_VPNC + bool "vpnc" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt + depends on !BR2_STATIC_LIBS # gnutls + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR # gnutls + select BR2_PACKAGE_LIBGCRYPT + select BR2_PACKAGE_LIBGPG_ERROR + select BR2_PACKAGE_GNUTLS + help + Client for Cisco VPN concentrator + 3000 Series VPN Concentrator + IOS Routers + PIX/ASA Zecurity Appliances + Juniper/Netscreen + + http://www.unix-ag.uni-kl.de/~massar/vpnc + +comment "vpnc needs a toolchain w/ wchar, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS diff --git a/package/vpnc/vpnc.hash b/package/vpnc/vpnc.hash new file mode 100644 index 00000000..a1b3b3b2 --- /dev/null +++ b/package/vpnc/vpnc.hash @@ -0,0 +1,3 @@ +# locally computed hash +sha256 5929d3b7f72970c8f7850e0daba0d9d05aaaa1281c69f58ac8647be11385ede5 vpnc-0.5.3r550-2jnpr1.tar.gz +sha256 bf3ec1bd1dec31a6ab8980bfd04569f506432f35ee01e88a3910847784bc2de1 COPYING diff --git a/package/vpnc/vpnc.mk b/package/vpnc/vpnc.mk new file mode 100644 index 00000000..8db5e766 --- /dev/null +++ b/package/vpnc/vpnc.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# vpnc +# +################################################################################ + +VPNC_VERSION = 0.5.3r550-2jnpr1 +VPNC_SITE = $(call github,ndpgroup,vpnc,$(VPNC_VERSION)) +VPNC_LICENSE = GPL-2.0+ +VPNC_LICENSE_FILES = COPYING + +VPNC_DEPENDENCIES = libgcrypt libgpg-error gnutls host-pkgconf + +define VPNC_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + $(TARGET_CONFIGURE_OPTS) \ + LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config \ + VERSION=$(VPNC_VERSION) MANS= +endef + +define VPNC_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install $(TARGET_CONFIGURE_OPTS) \ + VERSION=$(VPNC_VERSION) MANS= \ + DESTDIR="$(TARGET_DIR)" PREFIX=/usr +endef + +$(eval $(generic-package)) diff --git a/package/vsftpd/0001-utmpx-builddef.patch b/package/vsftpd/0001-utmpx-builddef.patch new file mode 100644 index 00000000..07bf13c8 --- /dev/null +++ b/package/vsftpd/0001-utmpx-builddef.patch @@ -0,0 +1,49 @@ +Add build option to disable utmpx update code + +On some embedded systems the libc may have utmpx support, but the +feature would be redundant. So add a build switch to disable utmpx +updating, similar to compiling on systems without utmpx support. + +Signed-off-by: Maarten ter Huurne + +diff -ru vsftpd-3.0.2.orig/builddefs.h vsftpd-3.0.2/builddefs.h +--- vsftpd-3.0.2.orig/builddefs.h 2012-04-05 05:24:56.000000000 +0200 ++++ vsftpd-3.0.2/builddefs.h 2014-09-16 14:23:36.128003245 +0200 +@@ -4,6 +4,7 @@ + #undef VSF_BUILD_TCPWRAPPERS + #define VSF_BUILD_PAM + #undef VSF_BUILD_SSL ++#define VSF_BUILD_UTMPX + + #endif /* VSF_BUILDDEFS_H */ + +diff -ru vsftpd-3.0.2.orig/sysdeputil.c vsftpd-3.0.2/sysdeputil.c +--- vsftpd-3.0.2.orig/sysdeputil.c 2012-09-16 06:18:04.000000000 +0200 ++++ vsftpd-3.0.2/sysdeputil.c 2014-09-16 14:26:42.686887724 +0200 +@@ -1158,7 +1158,7 @@ + + #endif /* !VSF_SYSDEP_NEED_OLD_FD_PASSING */ + +-#ifndef VSF_SYSDEP_HAVE_UTMPX ++#if !defined(VSF_BUILD_UTMPX) || !defined(VSF_SYSDEP_HAVE_UTMPX) + + void + vsf_insert_uwtmp(const struct mystr* p_user_str, +@@ -1173,7 +1173,7 @@ + { + } + +-#else /* !VSF_SYSDEP_HAVE_UTMPX */ ++#else /* !VSF_BUILD_UTMPX || !VSF_SYSDEP_HAVE_UTMPX */ + + /* IMHO, the pam_unix module REALLY should be doing this in its SM component */ + /* Statics */ +@@ -1238,7 +1238,7 @@ + updwtmpx(WTMPX_FILE, &s_utent); + } + +-#endif /* !VSF_SYSDEP_HAVE_UTMPX */ ++#endif /* !VSF_BUILD_UTMPX || !VSF_SYSDEP_HAVE_UTMPX */ + + void + vsf_set_die_if_parent_dies() diff --git a/package/vsftpd/0002-fix-CVE-2015-1419.patch b/package/vsftpd/0002-fix-CVE-2015-1419.patch new file mode 100644 index 00000000..657af289 --- /dev/null +++ b/package/vsftpd/0002-fix-CVE-2015-1419.patch @@ -0,0 +1,102 @@ +Fix CVE-2015-1419 - config option deny_file is not handled correctly. +From SUSE: https://bugzilla.suse.com/show_bug.cgi?id=915522 + +Signed-off-by: Gustavo Zacarias + +Index: vsftpd-3.0.2/ls.c +=================================================================== +--- vsftpd-3.0.2.orig/ls.c ++++ vsftpd-3.0.2/ls.c +@@ -7,6 +7,7 @@ + * Would you believe, code to handle directory listing. + */ + ++#include + #include "ls.h" + #include "access.h" + #include "defs.h" +@@ -243,11 +244,42 @@ vsf_filename_passes_filter(const struct + struct mystr temp_str = INIT_MYSTR; + struct mystr brace_list_str = INIT_MYSTR; + struct mystr new_filter_str = INIT_MYSTR; ++ struct mystr normalize_filename_str = INIT_MYSTR; ++ const char *normname; ++ const char *path; + int ret = 0; + char last_token = 0; + int must_match_at_current_pos = 1; ++ + str_copy(&filter_remain_str, p_filter_str); +- str_copy(&name_remain_str, p_filename_str); ++ ++ /* normalize filepath */ ++ path = str_strdup(p_filename_str); ++ normname = realpath(path, NULL); ++ if (normname == NULL) ++ goto out; ++ str_alloc_text(&normalize_filename_str, normname); ++ ++ if (!str_isempty (&filter_remain_str) && !str_isempty(&normalize_filename_str)) { ++ if (str_get_char_at(p_filter_str, 0) == '/') { ++ if (str_get_char_at(&normalize_filename_str, 0) != '/') { ++ str_getcwd (&name_remain_str); ++ ++ if (str_getlen(&name_remain_str) > 1) /* cwd != root dir */ ++ str_append_char (&name_remain_str, '/'); ++ ++ str_append_str (&name_remain_str, &normalize_filename_str); ++ } ++ else ++ str_copy (&name_remain_str, &normalize_filename_str); ++ } else { ++ if (str_get_char_at(p_filter_str, 0) != '{') ++ str_basename (&name_remain_str, &normalize_filename_str); ++ else ++ str_copy (&name_remain_str, &normalize_filename_str); ++ } ++ } else ++ str_copy(&name_remain_str, &normalize_filename_str); + + while (!str_isempty(&filter_remain_str) && *iters < VSFTP_MATCHITERS_MAX) + { +@@ -360,6 +392,9 @@ vsf_filename_passes_filter(const struct + ret = 0; + } + out: ++ free(normname); ++ free(path); ++ str_free(&normalize_filename_str); + str_free(&filter_remain_str); + str_free(&name_remain_str); + str_free(&temp_str); +Index: vsftpd-3.0.2/str.c +=================================================================== +--- vsftpd-3.0.2.orig/str.c ++++ vsftpd-3.0.2/str.c +@@ -711,3 +711,14 @@ str_replace_unprintable(struct mystr* p_ + } + } + ++void ++str_basename (struct mystr* d_str, const struct mystr* path) ++{ ++ static struct mystr tmp; ++ ++ str_copy (&tmp, path); ++ str_split_char_reverse(&tmp, d_str, '/'); ++ ++ if (str_isempty(d_str)) ++ str_copy (d_str, path); ++} +Index: vsftpd-3.0.2/str.h +=================================================================== +--- vsftpd-3.0.2.orig/str.h ++++ vsftpd-3.0.2/str.h +@@ -100,6 +100,7 @@ void str_replace_unprintable(struct myst + int str_atoi(const struct mystr* p_str); + filesize_t str_a_to_filesize_t(const struct mystr* p_str); + unsigned int str_octal_to_uint(const struct mystr* p_str); ++void str_basename (struct mystr* d_str, const struct mystr* path); + + /* PURPOSE: Extract a line of text (delimited by \n or EOF) from a string + * buffer, starting at character position 'p_pos'. The extracted line will diff --git a/package/vsftpd/0003-Prevent-hang-in-SIGCHLD-handler.patch b/package/vsftpd/0003-Prevent-hang-in-SIGCHLD-handler.patch new file mode 100644 index 00000000..60561937 --- /dev/null +++ b/package/vsftpd/0003-Prevent-hang-in-SIGCHLD-handler.patch @@ -0,0 +1,87 @@ +From 1e65a0a15f819b8bf1b551bd84f71d0da1f5a00c Mon Sep 17 00:00:00 2001 +From: Martin Sehnoutka +Date: Thu, 17 Nov 2016 13:02:27 +0100 +Subject: [PATCH] Prevent hanging in SIGCHLD handler. + +vsftpd can now handle pam_exec.so in pam.d config without hanging +in SIGCHLD handler. + +[Abdelmalek: +Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1198259 +Fetched from: +https://src.fedoraproject.org/cgit/rpms/vsftpd.git/plain/0026-Prevent-hanging-in-SIGCHLD-handler.patch] +Signed-off-by: Abdelmalek Benelouezzane +--- + sysutil.c | 4 ++-- + sysutil.h | 2 +- + twoprocess.c | 13 +++++++++++-- + 3 files changed, 14 insertions(+), 5 deletions(-) + +diff --git a/sysutil.c b/sysutil.c +index 6d7cb3f..099748f 100644 +--- a/sysutil.c ++++ b/sysutil.c +@@ -592,13 +592,13 @@ vsf_sysutil_exit(int exit_code) + } + + struct vsf_sysutil_wait_retval +-vsf_sysutil_wait(void) ++vsf_sysutil_wait(int hang) + { + struct vsf_sysutil_wait_retval retval; + vsf_sysutil_memclr(&retval, sizeof(retval)); + while (1) + { +- int sys_ret = wait(&retval.exit_status); ++ int sys_ret = waitpid(-1, &retval.exit_status, hang ? 0 : WNOHANG); + if (sys_ret < 0 && errno == EINTR) + { + vsf_sysutil_check_pending_actions(kVSFSysUtilUnknown, 0, 0); +diff --git a/sysutil.h b/sysutil.h +index c145bdf..13153cd 100644 +--- a/sysutil.h ++++ b/sysutil.h +@@ -175,7 +175,7 @@ struct vsf_sysutil_wait_retval + int PRIVATE_HANDS_OFF_syscall_retval; + int PRIVATE_HANDS_OFF_exit_status; + }; +-struct vsf_sysutil_wait_retval vsf_sysutil_wait(void); ++struct vsf_sysutil_wait_retval vsf_sysutil_wait(int hang); + int vsf_sysutil_wait_reap_one(void); + int vsf_sysutil_wait_get_retval( + const struct vsf_sysutil_wait_retval* p_waitret); +diff --git a/twoprocess.c b/twoprocess.c +index 33d84dc..b1891e7 100644 +--- a/twoprocess.c ++++ b/twoprocess.c +@@ -47,8 +47,17 @@ static void + handle_sigchld(void* duff) + { + +- struct vsf_sysutil_wait_retval wait_retval = vsf_sysutil_wait(); ++ struct vsf_sysutil_wait_retval wait_retval = vsf_sysutil_wait(0); + (void) duff; ++ if (!vsf_sysutil_wait_get_exitcode(&wait_retval) && ++ !vsf_sysutil_wait_get_retval(&wait_retval)) ++ /* There was nobody to wait for, possibly caused by underlying library ++ * which created a new process through fork()/vfork() and already picked ++ * it up, e.g. by pam_exec.so or integrity check routines for libraries ++ * when FIPS mode is on (nss freebl), which can lead to calling prelink ++ * if the prelink package is installed. ++ */ ++ return; + /* Child died, so we'll do the same! Report it as an error unless the child + * exited normally with zero exit code + */ +@@ -390,7 +399,7 @@ common_do_login(struct vsf_session* p_sess, const struct mystr* p_user_str, + priv_sock_send_result(p_sess->parent_fd, PRIV_SOCK_RESULT_OK); + if (!p_sess->control_use_ssl) + { +- (void) vsf_sysutil_wait(); ++ (void) vsf_sysutil_wait(1); + } + else + { +-- +2.14.4 + diff --git a/package/vsftpd/Config.in b/package/vsftpd/Config.in new file mode 100644 index 00000000..fb74b145 --- /dev/null +++ b/package/vsftpd/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_VSFTPD + bool "vsftpd" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + vsftpd is an ftp daemon written with security in mind. + http://vsftpd.beasts.org/ + +if BR2_PACKAGE_VSFTPD + +config BR2_PACKAGE_VSFTPD_UTMPX + bool "log vsftpd access to utmpx" + # musl 1.1.4 has an empty utmpx implementation and no WTMPX_FILE + depends on !BR2_TOOLCHAIN_USES_MUSL + help + Enable logging of vsftpd access to utmpx. + Note that Buildroot does not generate utmpx by default. + +endif diff --git a/package/vsftpd/S70vsftpd b/package/vsftpd/S70vsftpd new file mode 100644 index 00000000..62f9a1b7 --- /dev/null +++ b/package/vsftpd/S70vsftpd @@ -0,0 +1,33 @@ +#! /bin/sh + +set -e + +DESC="vsftpd" +NAME=vsftpd +DAEMON=/usr/sbin/$NAME + +case "$1" in + start) + printf "Starting $DESC: " + start-stop-daemon -S -b -x $DAEMON + echo "OK" + ;; + stop) + printf "Stopping $DESC: " + start-stop-daemon -K -x $DAEMON + echo "OK" + ;; + restart|force-reload) + echo "Restarting $DESC: " + $0 stop + sleep 1 + $0 start + echo "" + ;; + *) + echo "Usage: $0 {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/package/vsftpd/vsftpd.hash b/package/vsftpd/vsftpd.hash new file mode 100644 index 00000000..485e5ba2 --- /dev/null +++ b/package/vsftpd/vsftpd.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 26b602ae454b0ba6d99ef44a09b6b9e0dfa7f67228106736df1f278c70bc91d3 vsftpd-3.0.5.tar.gz +# Locally computed +sha256 c9cf119e2f9dbcf187fb805ba5aded105db26a693803636fb7228c98460ffbf2 COPYING diff --git a/package/vsftpd/vsftpd.mk b/package/vsftpd/vsftpd.mk new file mode 100644 index 00000000..14c1b6be --- /dev/null +++ b/package/vsftpd/vsftpd.mk @@ -0,0 +1,78 @@ +################################################################################ +# +# vsftpd +# +################################################################################ + +VSFTPD_VERSION = 3.0.5 +VSFTPD_SITE = https://security.appspot.com/downloads +VSFTPD_LIBS = -lcrypt +VSFTPD_LICENSE = GPL-2.0 +VSFTPD_LICENSE_FILES = COPYING +VSFTPD_CPE_ID_VALID = YES +VSFTPD_SELINUX_MODULES = ftp + +define VSFTPD_DISABLE_UTMPX + $(SED) 's/.*VSF_BUILD_UTMPX/#undef VSF_BUILD_UTMPX/' $(@D)/builddefs.h +endef + +define VSFTPD_ENABLE_SSL + $(SED) 's/.*VSF_BUILD_SSL/#define VSF_BUILD_SSL/' $(@D)/builddefs.h +endef + +ifeq ($(BR2_PACKAGE_VSFTPD_UTMPX),) +VSFTPD_POST_CONFIGURE_HOOKS += VSFTPD_DISABLE_UTMPX +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +VSFTPD_DEPENDENCIES += openssl host-pkgconf +VSFTPD_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs libssl libcrypto` +VSFTPD_POST_CONFIGURE_HOOKS += VSFTPD_ENABLE_SSL +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +VSFTPD_DEPENDENCIES += libcap +VSFTPD_LIBS += -lcap +endif + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +VSFTPD_DEPENDENCIES += libxcrypt +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +VSFTPD_DEPENDENCIES += linux-pam +VSFTPD_LIBS += -lpam +endif + +define VSFTPD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" LIBS="$(VSFTPD_LIBS)" -C $(@D) +endef + +define VSFTPD_USERS + ftp -1 ftp -1 * /home/ftp - - Anonymous FTP User +endef + +define VSFTPD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/vsftpd/vsftpd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/vsftpd.service +endef + +define VSFTPD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/vsftpd/S70vsftpd $(TARGET_DIR)/etc/init.d/S70vsftpd +endef + +# vsftpd won't work if the jail directory is writable, it has to be +# readable only otherwise you get the following error: +# 500 OOPS: vsftpd: refusing to run with writable root inside chroot() +# That's why we have to adjust the permissions of /home/ftp +define VSFTPD_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/vsftpd $(TARGET_DIR)/usr/sbin/vsftpd + test -f $(TARGET_DIR)/etc/vsftpd.conf || \ + $(INSTALL) -D -m 644 $(@D)/vsftpd.conf \ + $(TARGET_DIR)/etc/vsftpd.conf + $(INSTALL) -d -m 700 $(TARGET_DIR)/usr/share/empty + $(INSTALL) -d -m 555 $(TARGET_DIR)/home/ftp +endef + +$(eval $(generic-package)) diff --git a/package/vsftpd/vsftpd.service b/package/vsftpd/vsftpd.service new file mode 100644 index 00000000..eba61add --- /dev/null +++ b/package/vsftpd/vsftpd.service @@ -0,0 +1,12 @@ +[Unit] +Description=vsftpd FTP server +After=network.target + +[Service] +Type=simple +ExecStart=/usr/sbin/vsftpd /etc/vsftpd.conf +ExecReload=/bin/kill -HUP $MAINPID +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/package/vte/0001-build-Fix-build-with-kernel-headers-from-linux-4-13.patch b/package/vte/0001-build-Fix-build-with-kernel-headers-from-linux-4-13.patch new file mode 100644 index 00000000..7c3a5ab0 --- /dev/null +++ b/package/vte/0001-build-Fix-build-with-kernel-headers-from-linux-4-13.patch @@ -0,0 +1,54 @@ +From 91123bb5201156e3d3adbe24305488f5eea2c8d7 Mon Sep 17 00:00:00 2001 +From: Christian Persch +Date: Mon, 27 Sep 2021 22:46:47 +0200 +Subject: [PATCH] build: Fix build with kernel headers from linux < 4.13 + +We already support running with a kernel that doesn't support this +ioctl, so let's also support building with one. Add the missing +ioctl definition to missing.hh. + +Fixes: https://gitlab.gnome.org/GNOME/vte/-/issues/2514 + +[Retrieved from: +https://gitlab.gnome.org/GNOME/vte/-/commit/91123bb5201156e3d3adbe24305488f5eea2c8d7] +Signed-off-by: Fabrice Fontaine +--- + src/missing.hh | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/src/missing.hh b/src/missing.hh +index e5a58727..7902e41e 100644 +--- a/src/missing.hh ++++ b/src/missing.hh +@@ -23,11 +23,14 @@ + #include + + #ifdef __linux__ ++ ++#include + #include + + #if defined(__mips__) || defined(__mips64__) + #include + #endif ++ + #endif + + /* NSIG isn't in POSIX, so if it doesn't exist use this here. See bug #759196 */ +@@ -128,4 +131,13 @@ char* strchrnul(char const* s, + #define CLOSE_RANGE_CLOEXEC (1u << 2) + #endif + ++#if !defined(TIOCGPTPEER) ++/* See linux commit 54ebbfb1603415d9953c150535850d30609ef077 */ ++#if defined(__sparc__) ++#define TIOCGPTPEER _IOR('t', 137, int) ++#else ++#define TIOCGPTPEER _IOR('T', 0x41, int) ++#endif ++#endif /* !TIOCGPTPEER */ ++ + #endif /* __linux__ */ +-- +GitLab + diff --git a/package/vte/0002-build-Fix-check-for-fstack-protector-compiler-support.patch b/package/vte/0002-build-Fix-check-for-fstack-protector-compiler-support.patch new file mode 100644 index 00000000..67b6c474 --- /dev/null +++ b/package/vte/0002-build-Fix-check-for-fstack-protector-compiler-support.patch @@ -0,0 +1,43 @@ +From e32dba1d5cf884959af5b2c0691db00c263ea048 Mon Sep 17 00:00:00 2001 +From: Christian Persch +Date: Mon, 27 Dec 2021 19:24:46 +0100 +Subject: [PATCH] build: Fix check for -fstack-protector* compiler support + +Need to use has_link_argument() on some platforms. + +Fixes: https://gitlab.gnome.org/GNOME/vte/-/issues/2535 + +[Retrieved from: +https://gitlab.gnome.org/GNOME/vte/-/commit/e32dba1d5cf884959af5b2c0691db00c263ea048] +Signed-off-by: Fabrice Fontaine +--- + meson.build | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/meson.build b/meson.build +index 93b7f376..381d5d58 100644 +--- a/meson.build ++++ b/meson.build +@@ -461,8 +461,6 @@ compiler_flags_common = [ + '-fdiagnostics-show-option', + '-fno-common', + '-fno-semantic-interposition', +- '-fstack-protector', +- '-fstack-protector-strong', + ] + + if enable_debug +@@ -550,6 +548,10 @@ add_project_arguments(global_cxxflags, language: 'cpp') + linker_flags = [ + ['-Wl,-Bsymbolic', false,], + ['-Wl,-Bsymbolic-functions', get_option('_b_symbolic_functions'),], ++ ++ # See issue vte#2535. ++ ['-fstack-protector', false], ++ ['-fstack-protector-strong', false], + ] + + foreach flag: linker_flags +-- +GitLab + diff --git a/package/vte/Config.in b/package/vte/Config.in new file mode 100644 index 00000000..8a231a21 --- /dev/null +++ b/package/vte/Config.in @@ -0,0 +1,39 @@ +config BR2_PACKAGE_VTE + bool "vte" + depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS # libgtk3 -> host-libgtk3 -> host-librsvg + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_10 # C++20 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_USES_MUSL + depends on BR2_PACKAGE_HAS_LIBEGL || \ + BR2_PACKAGE_HAS_LIBGL + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_LIBGTK3 + select BR2_PACKAGE_PCRE2 + help + VTE is a library (libvte) implementing a terminal emulator + widget for GTK+, and a minimal sample application (vte) + using that. Vte is mainly used in gnome-terminal, but + can also be used to embed a console/terminal in games, + editors, IDEs, etc. + + http://github.com/GNOME/vte + +comment "vte needs a uClibc or glibc toolchain w/ wchar, threads, C++, gcc >= 10" + depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_10 || \ + BR2_TOOLCHAIN_USES_MUSL + +comment "vte needs an OpenGL or an OpenGL-EGL backend" + depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_PACKAGE_HAS_LIBEGL && \ + !BR2_PACKAGE_HAS_LIBGL diff --git a/package/vte/vte.hash b/package/vte/vte.hash new file mode 100644 index 00000000..8c84dfce --- /dev/null +++ b/package/vte/vte.hash @@ -0,0 +1,5 @@ +# Hash from: https://download.gnome.org/sources/vte/0.66/vte-0.66.2.sha256sum +sha256 e89974673a72a0a06edac6d17830b82bb124decf0cb3b52cebc92ec3ff04d976 vte-0.66.2.tar.xz + +# Hash for license file: +sha256 9ccf26cfe845e0eb8bb58053e47366e7ab6b697ae010f7650978d4b71b7d1fc1 COPYING.LGPL3 diff --git a/package/vte/vte.mk b/package/vte/vte.mk new file mode 100644 index 00000000..a68d96aa --- /dev/null +++ b/package/vte/vte.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# vte +# +################################################################################ + +VTE_VERSION_MAJOR = 0.66 +VTE_VERSION = $(VTE_VERSION_MAJOR).2 +VTE_SOURCE = vte-$(VTE_VERSION).tar.xz +VTE_SITE = https://download.gnome.org/sources/vte/$(VTE_VERSION_MAJOR) +VTE_DEPENDENCIES = host-pkgconf libgtk3 pcre2 $(TARGET_NLS_DEPENDENCIES) +VTE_LICENSE = LGPL-3.0+ +VTE_LICENSE_FILES = COPYING.LGPL3 +VTE_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_ICU),y) +VTE_CONF_OPTS += -Dicu=true +VTE_DEPENDENCIES += icu +else +VTE_CONF_OPTS += -Dicu=false +endif + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +VTE_CONF_OPTS += -Dgir=true -Dvapi=true +VTE_DEPENDENCIES += host-vala gobject-introspection +else +VTE_CONF_OPTS += -Dgir=false -Dvapi=false +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +VTE_CONF_OPTS += -Dgnutls=true +VTE_DEPENDENCIES += gnutls +else +VTE_CONF_OPTS += -Dgnutls=false +endif + +ifeq ($(BR2_PACKAGE_LIBFRIBIDI),y) +VTE_CONF_OPTS += -Dfribidi=true +VTE_DEPENDENCIES += libfribidi +else +VTE_CONF_OPTS += -Dfribidi=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +VTE_CONF_OPTS += -D_systemd=true +VTE_DEPENDENCIES += systemd +else +VTE_CONF_OPTS += -D_systemd=false +endif + +$(eval $(meson-package)) diff --git a/package/vtun/0001-fix-installation.patch b/package/vtun/0001-fix-installation.patch new file mode 100644 index 00000000..d9659fa8 --- /dev/null +++ b/package/vtun/0001-fix-installation.patch @@ -0,0 +1,44 @@ +Makefile.in: fix installation steps + +Not sure what the reason for that patch is, but originally added by Ulf +Samuelsson , when upgrading from 2.6.x to 3.0.2. + +yann.morin.1998@free.fr: the initial commit in the Buildroot tree had the +SoB by Ulf, but it was not explicitly reproduced here in the patch; so I +added it here directly in the patch. + +Somewhat-signed-off-by: Ulf Samuelsson +Signed-off-by: "Yann E. MORIN" +diff -durN vtun-3.0.3.orig/Makefile.in vtun-3.0.3/Makefile.in +--- vtun-3.0.3.orig/Makefile.in 2012-07-09 06:55:38.000000000 +0200 ++++ vtun-3.0.3/Makefile.in 2013-02-16 23:28:47.034036869 +0100 +@@ -28,7 +28,7 @@ + LEXFLAGS = -t + + INSTALL = @INSTALL@ +-INSTALL_OWNER = -o root -g 0 ++INSTALL_OWNER = + + prefix = @prefix@ + exec_prefix = @exec_prefix@ +@@ -89,16 +89,15 @@ + + install_config: + $(INSTALL) -d -m 755 $(INSTALL_OWNER) $(DESTDIR)$(ETC_DIR) +- if [ ! -f $(ETC_DIR)/vtund.conf ]; then \ +- $(INSTALL) -m 600 $(INSTALL_OWNER) vtund.conf $(DESTDIR)$(ETC_DIR); \ +- fi ++ $(INSTALL) -m 600 $(INSTALL_OWNER) vtund.conf $(DESTDIR)$(ETC_DIR); ++ $(INSTALL) -m 600 $(INSTALL_OWNER) scripts/vtund-start.conf $(DESTDIR)$(ETC_DIR); + + install: vtund install_config install_man +- $(INSTALL) -d -m 755 $(INSTALL_OWNER) $(DESTDIR)$(VAR_DIR)/run + $(INSTALL) -d -m 755 $(INSTALL_OWNER) $(DESTDIR)$(STAT_DIR) + $(INSTALL) -d -m 755 $(INSTALL_OWNER) $(DESTDIR)$(LOCK_DIR) + $(INSTALL) -d -m 755 $(INSTALL_OWNER) $(DESTDIR)$(SBIN_DIR) + $(INSTALL) -m 755 $(INSTALL_OWNER) vtund $(DESTDIR)$(SBIN_DIR) +- $(BIN_DIR)/strip $(DESTDIR)$(SBIN_DIR)/vtund ++ $(INSTALL) -m 755 -D $(INSTALL_OWNER) scripts/vtund.rc.debian \ ++ $(DESTDIR)$(ETC_DIR)/init.d/S90vtun + + # DO NOT DELETE THIS LINE -- make depend depends on it. diff --git a/package/vtun/0002-fix-ssl-headers-checks.patch b/package/vtun/0002-fix-ssl-headers-checks.patch new file mode 100644 index 00000000..a095a1ba --- /dev/null +++ b/package/vtun/0002-fix-ssl-headers-checks.patch @@ -0,0 +1,49 @@ +configure.in: do not hard-code search patch for SSL headers + +Do. Not. Do. That. It breaks cross-compilation. + +Also use the SSL headers dir to look for blowfish headers. + +Signed-off-by: "Yann E. MORIN" +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi + +diff -durN vtun-3.0.3.orig/configure.in vtun-3.0.3/configure.in +--- vtun-3.0.3.orig/configure.in 2009-03-29 12:08:51.000000000 +0200 ++++ vtun-3.0.3/configure.in 2013-02-16 23:44:44.004339680 +0100 +@@ -169,7 +169,7 @@ + AC_MSG_RESULT() + AC_CHECKING( for md5 Library and Header files ... ) + AC_SEARCH_HEADERS(md5.h, +- $SSL_HDR_DIR /usr/include/openssl "" /usr/include /usr/include/ssl /usr/local/include /usr/local/ssl/include /usr/include/sys, ++ $SSL_HDR_DIR "" , + , + AC_MSG_ERROR( SSL headers not found. ) + ) +@@ -179,7 +179,7 @@ + AC_MSG_RESULT() + AC_CHECKING( for blowfish Library and Header files ... ) + AC_SEARCH_HEADERS(blowfish.h, +- $BLOWFISH_HDR_DIR /usr/include/ssl /usr/include/openssl /usr/include /usr/local/include /usr/local/ssl/include /usr/include/crypto, ++ $BLOWFISH_HDR_DIR $SSL_HDR_DIR, + AC_CHECK_LIB(crypto, BF_set_key, + [ + LIBS="$LIBS -lcrypto" +@@ -196,7 +196,7 @@ + AC_MSG_RESULT() + AC_CHECKING( for AES Library and Header files ... ) + AC_SEARCH_HEADERS(aes.h, +- $SSL_HDR_DIR /usr/include/ssl /usr/include/openssl /usr/include /usr/local/include /usr/local/ssl/include /usr/include/crypto, ++ $SSL_HDR_DIR , + AC_CHECK_LIB(crypto, AES_set_encrypt_key, + [ + AC_DEFINE(HAVE_SSL_AES, [1], [Define to 1 if you have AES in openssl]) +@@ -211,7 +211,7 @@ + AC_MSG_RESULT() + AC_CHECKING( for EVP Library and Header files ... ) + AC_SEARCH_HEADERS(evp.h, +- $SSL_HDR_DIR /usr/include/ssl /usr/include/openssl /usr/include /usr/local/include /usr/local/ssl/include /usr/include/crypto, ++ $SSL_HDR_DIR , + AC_CHECK_LIB(crypto, EVP_EncryptInit, + [ + AC_DEFINE(HAVE_SSL_EVP, [1], [Define to 1 if you have EVP in openssl]) diff --git a/package/vtun/0003-openssl11.patch b/package/vtun/0003-openssl11.patch new file mode 100644 index 00000000..2c6bb812 --- /dev/null +++ b/package/vtun/0003-openssl11.patch @@ -0,0 +1,294 @@ +Fix build with OpenSSL 1.1.x + +Extracted vtun-openssl.patch from +http://dl.fedoraproject.org/pub/fedora/linux/releases/27/Everything/source/tree/Packages/v/vtun-3.0.4-4.fc27.src.rpm + +Signed-off-by: Bernd Kuhls + +diff -NarU5 a/lfd_encrypt.c b/lfd_encrypt.c +--- a/lfd_encrypt.c 2016-10-01 17:27:51.000000000 -0400 ++++ b/lfd_encrypt.c 2017-03-20 08:43:48.013308435 -0400 +@@ -93,15 +93,15 @@ + static int dec_init_first_time; + static unsigned long sequence_num; + static char * pkey; + static char * iv_buf; + +-static EVP_CIPHER_CTX ctx_enc; /* encrypt */ +-static EVP_CIPHER_CTX ctx_dec; /* decrypt */ ++static EVP_CIPHER_CTX *ctx_enc; /* encrypt */ ++static EVP_CIPHER_CTX *ctx_dec; /* decrypt */ + +-static EVP_CIPHER_CTX ctx_enc_ecb; /* sideband ecb encrypt */ +-static EVP_CIPHER_CTX ctx_dec_ecb; /* sideband ecb decrypt */ ++static EVP_CIPHER_CTX *ctx_enc_ecb; /* sideband ecb encrypt */ ++static EVP_CIPHER_CTX *ctx_dec_ecb; /* sideband ecb decrypt */ + + static int send_msg(int len, char *in, char **out); + static int recv_msg(int len, char *in, char **out); + static int send_ib_mesg(int *len, char **in); + static int recv_ib_mesg(int *len, char **in); +@@ -180,37 +180,37 @@ + case VTUN_ENC_AES256CBC: + blocksize = 16; + keysize = 32; + sb_init = 1; + cipher_type = EVP_aes_256_ecb(); +- pctx_enc = &ctx_enc_ecb; +- pctx_dec = &ctx_dec_ecb; ++ pctx_enc = ctx_enc_ecb; ++ pctx_dec = ctx_dec_ecb; + break; + + case VTUN_ENC_AES256ECB: + blocksize = 16; + keysize = 32; +- pctx_enc = &ctx_enc; +- pctx_dec = &ctx_dec; ++ pctx_enc = ctx_enc; ++ pctx_dec = ctx_dec; + cipher_type = EVP_aes_256_ecb(); + strcpy(cipher_name,"AES-256-ECB"); + break; + case VTUN_ENC_AES128OFB: + case VTUN_ENC_AES128CFB: + case VTUN_ENC_AES128CBC: + blocksize = 16; + keysize = 16; + sb_init=1; + cipher_type = EVP_aes_128_ecb(); +- pctx_enc = &ctx_enc_ecb; +- pctx_dec = &ctx_dec_ecb; ++ pctx_enc = ctx_enc_ecb; ++ pctx_dec = ctx_dec_ecb; + break; + case VTUN_ENC_AES128ECB: + blocksize = 16; + keysize = 16; +- pctx_enc = &ctx_enc; +- pctx_dec = &ctx_dec; ++ pctx_enc = ctx_enc; ++ pctx_dec = ctx_dec; + cipher_type = EVP_aes_128_ecb(); + strcpy(cipher_name,"AES-128-ECB"); + break; + + case VTUN_ENC_BF256OFB: +@@ -219,20 +219,20 @@ + blocksize = 8; + keysize = 32; + var_key = 1; + sb_init = 1; + cipher_type = EVP_bf_ecb(); +- pctx_enc = &ctx_enc_ecb; +- pctx_dec = &ctx_dec_ecb; ++ pctx_enc = ctx_enc_ecb; ++ pctx_dec = ctx_dec_ecb; + break; + + case VTUN_ENC_BF256ECB: + blocksize = 8; + keysize = 32; + var_key = 1; +- pctx_enc = &ctx_enc; +- pctx_dec = &ctx_dec; ++ pctx_enc = ctx_enc; ++ pctx_dec = ctx_dec; + cipher_type = EVP_bf_ecb(); + strcpy(cipher_name,"Blowfish-256-ECB"); + break; + + case VTUN_ENC_BF128OFB: +@@ -241,26 +241,28 @@ + blocksize = 8; + keysize = 16; + var_key = 1; + sb_init = 1; + cipher_type = EVP_bf_ecb(); +- pctx_enc = &ctx_enc_ecb; +- pctx_dec = &ctx_dec_ecb; ++ pctx_enc = ctx_enc_ecb; ++ pctx_dec = ctx_dec_ecb; + break; + case VTUN_ENC_BF128ECB: /* blowfish 128 ecb is the default */ + default: + blocksize = 8; + keysize = 16; + var_key = 1; +- pctx_enc = &ctx_enc; +- pctx_dec = &ctx_dec; ++ pctx_enc = ctx_enc; ++ pctx_dec = ctx_dec; + cipher_type = EVP_bf_ecb(); + strcpy(cipher_name,"Blowfish-128-ECB"); + break; + } /* switch(host->cipher) */ + + if (prep_key(&pkey, keysize, host) != 0) return -1; ++ pctx_enc = EVP_CIPHER_CTX_new(); ++ pctx_dec = EVP_CIPHER_CTX_new(); + EVP_CIPHER_CTX_init(pctx_enc); + EVP_CIPHER_CTX_init(pctx_dec); + EVP_EncryptInit_ex(pctx_enc, cipher_type, NULL, NULL, NULL); + EVP_DecryptInit_ex(pctx_dec, cipher_type, NULL, NULL, NULL); + if (var_key) +@@ -292,14 +294,14 @@ + free_key(pkey); pkey = NULL; + + lfd_free(enc_buf); enc_buf = NULL; + lfd_free(dec_buf); dec_buf = NULL; + +- EVP_CIPHER_CTX_cleanup(&ctx_enc); +- EVP_CIPHER_CTX_cleanup(&ctx_dec); +- EVP_CIPHER_CTX_cleanup(&ctx_enc_ecb); +- EVP_CIPHER_CTX_cleanup(&ctx_dec_ecb); ++ EVP_CIPHER_CTX_free(ctx_enc); ++ EVP_CIPHER_CTX_free(ctx_dec); ++ EVP_CIPHER_CTX_free(ctx_enc_ecb); ++ EVP_CIPHER_CTX_free(ctx_dec_ecb); + + return 0; + } + + static int encrypt_buf(int len, char *in, char **out) +@@ -321,11 +323,11 @@ + + memset(in_ptr+len, pad, pad); + outlen=len+pad; + if (pad == blocksize) + RAND_bytes(in_ptr+len, blocksize-1); +- EVP_EncryptUpdate(&ctx_enc, out_ptr, &outlen, in_ptr, len+pad); ++ EVP_EncryptUpdate(ctx_enc, out_ptr, &outlen, in_ptr, len+pad); + *out = enc_buf; + + sequence_num++; + + return outlen+msg_len; +@@ -341,11 +343,11 @@ + in = *out; + in_ptr = in; + + outlen=len; + if (!len) return 0; +- EVP_DecryptUpdate(&ctx_dec, out_ptr, &outlen, in_ptr, len); ++ EVP_DecryptUpdate(ctx_dec, out_ptr, &outlen, in_ptr, len); + recv_ib_mesg(&outlen, &out_ptr); + if (!outlen) return 0; + tmp_ptr = out_ptr + outlen; tmp_ptr--; + pad = *tmp_ptr; + if (pad < 1 || pad > blocksize) { +@@ -429,17 +431,18 @@ + /* if we're here, something weird's going on */ + return -1; + break; + } /* switch(cipher) */ + +- EVP_CIPHER_CTX_init(&ctx_enc); +- EVP_EncryptInit_ex(&ctx_enc, cipher_type, NULL, NULL, NULL); ++ ctx_enc = EVP_CIPHER_CTX_new(); ++ EVP_CIPHER_CTX_init(ctx_enc); ++ EVP_EncryptInit_ex(ctx_enc, cipher_type, NULL, NULL, NULL); + if (var_key) +- EVP_CIPHER_CTX_set_key_length(&ctx_enc, keysize); +- EVP_EncryptInit_ex(&ctx_enc, NULL, NULL, pkey, NULL); +- EVP_EncryptInit_ex(&ctx_enc, NULL, NULL, NULL, iv); +- EVP_CIPHER_CTX_set_padding(&ctx_enc, 0); ++ EVP_CIPHER_CTX_set_key_length(ctx_enc, keysize); ++ EVP_EncryptInit_ex(ctx_enc, NULL, NULL, pkey, NULL); ++ EVP_EncryptInit_ex(ctx_enc, NULL, NULL, NULL, iv); ++ EVP_CIPHER_CTX_set_padding(ctx_enc, 0); + if (enc_init_first_time) + { + sprintf(tmpstr,"%s encryption initialized", cipher_name); + vtun_syslog(LOG_INFO, tmpstr); + enc_init_first_time = 0; +@@ -519,17 +522,18 @@ + /* if we're here, something weird's going on */ + return -1; + break; + } /* switch(cipher) */ + +- EVP_CIPHER_CTX_init(&ctx_dec); +- EVP_DecryptInit_ex(&ctx_dec, cipher_type, NULL, NULL, NULL); ++ ctx_dec = EVP_CIPHER_CTX_new(); ++ EVP_CIPHER_CTX_init(ctx_dec); ++ EVP_DecryptInit_ex(ctx_dec, cipher_type, NULL, NULL, NULL); + if (var_key) +- EVP_CIPHER_CTX_set_key_length(&ctx_dec, keysize); +- EVP_DecryptInit_ex(&ctx_dec, NULL, NULL, pkey, NULL); +- EVP_DecryptInit_ex(&ctx_dec, NULL, NULL, NULL, iv); +- EVP_CIPHER_CTX_set_padding(&ctx_dec, 0); ++ EVP_CIPHER_CTX_set_key_length(ctx_dec, keysize); ++ EVP_DecryptInit_ex(ctx_dec, NULL, NULL, pkey, NULL); ++ EVP_DecryptInit_ex(ctx_dec, NULL, NULL, NULL, iv); ++ EVP_CIPHER_CTX_set_padding(ctx_dec, 0); + if (dec_init_first_time) + { + sprintf(tmpstr,"%s decryption initialized", cipher_name); + vtun_syslog(LOG_INFO, tmpstr); + dec_init_first_time = 0; +@@ -557,11 +561,11 @@ + memset(iv,0,blocksize); free(iv); iv = NULL; + RAND_bytes(in_ptr, in - in_ptr); + + in_ptr = in - blocksize*2; + outlen = blocksize*2; +- EVP_EncryptUpdate(&ctx_enc_ecb, in_ptr, ++ EVP_EncryptUpdate(ctx_enc_ecb, in_ptr, + &outlen, in_ptr, blocksize*2); + *out = in_ptr; + len = outlen; + cipher_enc_state = CIPHER_SEQUENCE; + break; +@@ -584,11 +588,11 @@ + { + case CIPHER_INIT: + in_ptr = in; + iv = malloc(blocksize); + outlen = blocksize*2; +- EVP_DecryptUpdate(&ctx_dec_ecb, in_ptr, &outlen, in_ptr, blocksize*2); ++ EVP_DecryptUpdate(ctx_dec_ecb, in_ptr, &outlen, in_ptr, blocksize*2); + + if ( !strncmp(in_ptr, "ivec", 4) ) + { + memcpy(iv, in_ptr+4, blocksize); + cipher_dec_init(iv); +@@ -627,11 +631,11 @@ + "Max. gibberish threshold reached"); + #endif + if (cipher_enc_state != CIPHER_INIT) + { + cipher_enc_state = CIPHER_INIT; +- EVP_CIPHER_CTX_cleanup(&ctx_enc); ++ EVP_CIPHER_CTX_free(ctx_enc); + #ifdef LFD_ENCRYPT_DEBUG + vtun_syslog(LOG_INFO, + "Forcing local encryptor re-init"); + #endif + } +@@ -708,11 +712,11 @@ + *len -= blocksize; + + if (cipher_enc_state != CIPHER_INIT) + { + cipher_enc_state = CIPHER_INIT; +- EVP_CIPHER_CTX_cleanup(&ctx_enc); ++ EVP_CIPHER_CTX_free(ctx_enc); + } + #ifdef LFD_ENCRYPT_DEBUG + vtun_syslog(LOG_INFO, "Remote requests encryptor re-init"); + #endif + } +@@ -722,11 +726,11 @@ + + if (cipher_dec_state != CIPHER_INIT && + cipher_enc_state != CIPHER_REQ_INIT && + cipher_enc_state != CIPHER_INIT) + { +- EVP_CIPHER_CTX_cleanup (&ctx_dec); ++ EVP_CIPHER_CTX_free (ctx_dec); + cipher_dec_state = CIPHER_INIT; + cipher_enc_state = CIPHER_REQ_INIT; + } + #ifdef LFD_ENCRYPT_DEBUG + vtun_syslog(LOG_INFO, "Local decryptor out of sync"); diff --git a/package/vtun/Config.in b/package/vtun/Config.in new file mode 100644 index 00000000..eca6f679 --- /dev/null +++ b/package/vtun/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_VTUN + bool "vtun" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LZO + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_ZLIB + help + Tool for easily creating Virtual Tunnels over TCP/IP networks + with traffic shaping, compression, and encryption. + + It supports IP, PPP, SLIP, Ethernet and other tunnel types. + + http://vtun.sourceforge.net/ diff --git a/package/vtun/vtun.hash b/package/vtun/vtun.hash new file mode 100644 index 00000000..b69b987b --- /dev/null +++ b/package/vtun/vtun.hash @@ -0,0 +1,6 @@ +# From https://sourceforge.net/projects/vtun/files/vtun/3.0.4/ +md5 f952c5895ae8f40235aaad9a8f41a4bd vtun-3.0.4.tar.gz +sha1 2335c21b56fadf9ce851dd7f342fb0ed4f522c47 vtun-3.0.4.tar.gz +# Locally computed: +sha256 abf8df6b15e3febeaaeae2ce24ead7105eb1537ad4ec0d830c83cbb684fd98b9 vtun-3.0.4.tar.gz +sha256 5692a9a69dc5abc1aa9cbc54899d114b65c4cefbd9d7fcecc304316a2f26ced3 README.OpenSSL diff --git a/package/vtun/vtun.mk b/package/vtun/vtun.mk new file mode 100644 index 00000000..35b0dded --- /dev/null +++ b/package/vtun/vtun.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# vtun +# +################################################################################ + +VTUN_VERSION = 3.0.4 +VTUN_SITE = http://downloads.sourceforge.net/project/vtun/vtun/$(VTUN_VERSION) +VTUN_LICENSE = GPL-2.0+ with OpenSSL exception +VTUN_LICENSE_FILES = README.OpenSSL +VTUN_DEPENDENCIES = host-bison host-flex host-pkgconf zlib lzo openssl +VTUN_AUTORECONF = YES + +VTUN_CONF_OPTS = \ + --with-ssl-headers=$(STAGING_DIR)/usr/include/openssl \ + --with-lzo-headers=$(STAGING_DIR)/usr/include/lzo \ + --with-lzo-lib=$(STAGING_DIR)/usr/lib + +# Assumes old-style gcc inline symbol visibility rules +VTUN_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -std=gnu89" + +# configure.in forgets to link to dependent libraries of openssl breaking static +# linking +VTUN_CONF_ENV += LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl` + +$(eval $(autotools-package)) diff --git a/package/vuejs-router/Config.in b/package/vuejs-router/Config.in new file mode 100644 index 00000000..ac79b3ea --- /dev/null +++ b/package/vuejs-router/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_VUEJS_ROUTER + bool "vuejs-router" + help + The official router for Vue.js. + + http://router.vuejs.org diff --git a/package/vuejs-router/vuejs-router.hash b/package/vuejs-router/vuejs-router.hash new file mode 100644 index 00000000..e297667f --- /dev/null +++ b/package/vuejs-router/vuejs-router.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 ad4999f6c346053d93e9e600a69162c52759b1db3aa9a09ef4e9d2d8ffb2d167 vue-router-4.4.0.tgz +sha256 91a2845c4db44e7497b514b98634a674c737986ad0db81599307cf733bf850b2 LICENSE diff --git a/package/vuejs-router/vuejs-router.mk b/package/vuejs-router/vuejs-router.mk new file mode 100644 index 00000000..fb352fd1 --- /dev/null +++ b/package/vuejs-router/vuejs-router.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# vuejs-router +# +################################################################################ + +VUEJS_ROUTER_VERSION = 4.4.0 +VUEJS_ROUTER_SOURCE = vue-router-$(VUEJS_ROUTER_VERSION).tgz +VUEJS_ROUTER_SITE = https://registry.npmjs.org/vue-router/- +VUEJS_ROUTER_LICENSE = MIT +VUEJS_ROUTER_LICENSE_FILES = LICENSE + +# Install .prod.js as .js +define VUEJS_ROUTER_INSTALL_TARGET_CMDS + $(INSTALL) -m 644 -D $(@D)/dist/vue-router.global.prod.js \ + $(TARGET_DIR)/var/www/vue-router.js +endef + +$(eval $(generic-package)) diff --git a/package/vuejs/Config.in b/package/vuejs/Config.in new file mode 100644 index 00000000..6456d288 --- /dev/null +++ b/package/vuejs/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_VUEJS + bool "vuejs" + help + VueJS web application framework. + + http://vuejs.org diff --git a/package/vuejs/vuejs.hash b/package/vuejs/vuejs.hash new file mode 100644 index 00000000..a4011d80 --- /dev/null +++ b/package/vuejs/vuejs.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 01cb6ef41fdf1e2c1944bce553c254e216f507ed20ec1bd993766bf9554caf0f vue-3.4.31.tgz +sha256 1bb85cc9b13b81ef41c81c51866172fc345e0503c86726a6755b796590b70175 LICENSE diff --git a/package/vuejs/vuejs.mk b/package/vuejs/vuejs.mk new file mode 100644 index 00000000..e8a21c8c --- /dev/null +++ b/package/vuejs/vuejs.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# vuejs +# +################################################################################ + +VUEJS_VERSION = 3.4.31 +VUEJS_SOURCE = vue-$(VUEJS_VERSION).tgz +VUEJS_SITE = https://registry.npmjs.org/vue/- +VUEJS_LICENSE = MIT +VUEJS_LICENSE_FILES = LICENSE + +# Install .prod.js as .js +define VUEJS_INSTALL_TARGET_CMDS + $(INSTALL) -m 644 -D $(@D)/dist/vue.global.prod.js \ + $(TARGET_DIR)/var/www/vue.js +endef + +$(eval $(generic-package)) diff --git a/package/vulkan-headers/Config.in b/package/vulkan-headers/Config.in new file mode 100644 index 00000000..c0fc8f20 --- /dev/null +++ b/package/vulkan-headers/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_VULKAN_HEADERS + bool "vulkan-headers" + help + The Khronos official Vulkan header files and API + registry. + + https://github.com/KhronosGroup/Vulkan-Headers diff --git a/package/vulkan-headers/vulkan-headers.hash b/package/vulkan-headers/vulkan-headers.hash new file mode 100644 index 00000000..b38bfcff --- /dev/null +++ b/package/vulkan-headers/vulkan-headers.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 317e467a5fb2eaa6a18b984ec70fdbfaccd93595a3e6f4bcceca7d3fab280505 vulkan-headers-1.3.262.tar.gz +sha256 ac24e5ea920e4318e4d02c4086ae51f53cfb03feed06c18df1019e7ada1ec7bc LICENSE.md diff --git a/package/vulkan-headers/vulkan-headers.mk b/package/vulkan-headers/vulkan-headers.mk new file mode 100644 index 00000000..20b24836 --- /dev/null +++ b/package/vulkan-headers/vulkan-headers.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# vulkan-headers +# +################################################################################ + +# Note: changing this version will also affect vulkan-loader and +# vulkan-tools, so please update those packages as well. +VULKAN_HEADERS_VERSION = 1.3.262 +VULKAN_HEADERS_SITE = $(call github,KhronosGroup,Vulkan-Headers,v$(VULKAN_HEADERS_VERSION)) +VULKAN_HEADERS_LICENSE = Apache-2.0, MIT +VULKAN_HEADERS_LICENSE_FILES = LICENSE.md +VULKAN_HEADERS_INSTALL_STAGING = YES + +$(eval $(cmake-package)) diff --git a/package/vulkan-loader/Config.in b/package/vulkan-loader/Config.in new file mode 100644 index 00000000..9c215dc9 --- /dev/null +++ b/package/vulkan-loader/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_VULKAN_LOADER + bool "vulkan-loader" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_VULKAN_HEADERS + help + The Khronos official Vulkan ICD desktop loader. + + https://github.com/KhronosGroup/Vulkan-Loader + +comment "vulkan-loader needs a toolchain w/ C++, dynamic library, threads" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/vulkan-loader/vulkan-loader.hash b/package/vulkan-loader/vulkan-loader.hash new file mode 100644 index 00000000..e09ecda8 --- /dev/null +++ b/package/vulkan-loader/vulkan-loader.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3bbaa5ee64058a89949eb777de66ce94bfe3141892514172cfc9451c756802d5 vulkan-loader-1.3.262.tar.gz +sha256 43c0a37e6a0fa7ff3c843b3ec5a4fac84b712558ddac103fbd4c1649662a9ece LICENSE.txt diff --git a/package/vulkan-loader/vulkan-loader.mk b/package/vulkan-loader/vulkan-loader.mk new file mode 100644 index 00000000..b1545a49 --- /dev/null +++ b/package/vulkan-loader/vulkan-loader.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# vulkan-loader +# +################################################################################ + +VULKAN_LOADER_VERSION = $(VULKAN_HEADERS_VERSION) +VULKAN_LOADER_SITE = $(call github,KhronosGroup,Vulkan-Loader,v$(VULKAN_LOADER_VERSION)) +VULKAN_LOADER_LICENSE = Apache-2.0 +VULKAN_LOADER_LICENSE_FILES = LICENSE.txt +VULKAN_LOADER_INSTALL_STAGING = YES + +VULKAN_LOADER_DEPENDENCIES = host-pkgconf vulkan-headers + +VULKAN_LOADER_CONF_OPTS += \ + -DASSEMBLER_WORKS=FALSE \ + -DBUILD_WSI_SCREEN_QNX_SUPPORT=OFF \ + -DLOADER_CODEGEN=OFF + +ifeq ($(BR2_PACKAGE_DIRECTFB),y) +VULKAN_LOADER_DEPENDENCIES += directfb +VULKAN_LOADER_CONF_OPTS += -DBUILD_WSI_DIRECTFB_SUPPORT=ON +else +VULKAN_LOADER_CONF_OPTS += -DBUILD_WSI_DIRECTFB_SUPPORT=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBXCB),y) +VULKAN_LOADER_DEPENDENCIES += libxcb +VULKAN_LOADER_CONF_OPTS += -DBUILD_WSI_XCB_SUPPORT=ON +else +VULKAN_LOADER_CONF_OPTS += -DBUILD_WSI_XCB_SUPPORT=OFF +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBX11)$(BR2_PACKAGE_XLIB_LIBXRANDR),yy) +VULKAN_LOADER_DEPENDENCIES += xlib_libX11 xlib_libXrandr +VULKAN_LOADER_CONF_OPTS += -DBUILD_WSI_XLIB_SUPPORT=ON +else +VULKAN_LOADER_CONF_OPTS += -DBUILD_WSI_XLIB_SUPPORT=OFF +endif + +ifeq ($(BR2_PACKAGE_WAYLAND),y) +VULKAN_LOADER_DEPENDENCIES += wayland +VULKAN_LOADER_CONF_OPTS += -DBUILD_WSI_WAYLAND_SUPPORT=ON +else +VULKAN_LOADER_CONF_OPTS += -DBUILD_WSI_WAYLAND_SUPPORT=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/vulkan-tools/Config.in b/package/vulkan-tools/Config.in new file mode 100644 index 00000000..54fa539d --- /dev/null +++ b/package/vulkan-tools/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_VULKAN_TOOLS + bool "vulkan-tools" + depends on BR2_INSTALL_LIBSTDCPP # vulkan-loader + depends on !BR2_STATIC_LIBS # vullan-loader + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS # vulkan-loader + select BR2_PACKAGE_VULKAN_HEADERS + select BR2_PACKAGE_VULKAN_LOADER + + help + The Khronos official Vulkan Tools and Utilities. + + https://github.com/KhronosGroup/Vulkan-Tools + +comment "vulkan-tools needs a toolchain w/ C++, dynamic library, threads, gcc >= 4.9" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/vulkan-tools/vulkan-tools.hash b/package/vulkan-tools/vulkan-tools.hash new file mode 100644 index 00000000..24c06977 --- /dev/null +++ b/package/vulkan-tools/vulkan-tools.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 8c77d02694d0516ae2ba3f3718745647e87e788ef93faabb2e3674ff32608010 vulkan-tools-1.3.262.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/vulkan-tools/vulkan-tools.mk b/package/vulkan-tools/vulkan-tools.mk new file mode 100644 index 00000000..68f7c1c0 --- /dev/null +++ b/package/vulkan-tools/vulkan-tools.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# vulkan-tools +# +################################################################################ + +VULKAN_TOOLS_VERSION = $(VULKAN_HEADERS_VERSION) +VULKAN_TOOLS_SITE = $(call github,KhronosGroup,Vulkan-Tools,v$(VULKAN_TOOLS_VERSION)) +VULKAN_TOOLS_LICENSE = Apache-2.0 +VULKAN_TOOLS_LICENSE_FILES = LICENSE.txt + +VULKAN_TOOLS_DEPENDENCIES = \ + vulkan-headers \ + vulkan-loader + +VULKAN_TOOLS_CONF_OPTS += \ + -DBUILD_CUBE=OFF \ + -DBUILD_ICD=OFF \ + -DBUILD_VULKANINFO=ON \ + -DINSTALL_ICD=OFF + +ifeq ($(BR2_PACKAGE_DIRECTFB),y) +VULKAN_TOOLS_DEPENDENCIES += directfb +VULKAN_TOOLS_CONF_OPTS += -DBUILD_WSI_DIRECTFB_SUPPORT=ON +else +VULKAN_TOOLS_CONF_OPTS += -DBUILD_WSI_DIRECTFB_SUPPORT=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBXCB),y) +VULKAN_TOOLS_DEPENDENCIES += libxcb +VULKAN_TOOLS_CONF_OPTS += \ + -DBUILD_WSI_XCB_SUPPORT=ON \ + -DBUILD_WSI_XLIB_SUPPORT=ON +else +VULKAN_TOOLS_CONF_OPTS += \ + -DBUILD_WSI_XCB_SUPPORT=OFF \ + -DBUILD_WSI_XLIB_SUPPORT=OFF +endif + +ifeq ($(BR2_PACKAGE_WAYLAND),y) +VULKAN_TOOLS_DEPENDENCIES += wayland +VULKAN_TOOLS_CONF_OPTS += -DBUILD_WSI_WAYLAND_SUPPORT=ON +else +VULKAN_TOOLS_CONF_OPTS += -DBUILD_WSI_WAYLAND_SUPPORT=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/w_scan/0001-musl.patch b/package/w_scan/0001-musl.patch new file mode 100644 index 00000000..46d67677 --- /dev/null +++ b/package/w_scan/0001-musl.patch @@ -0,0 +1,26 @@ +Fix musl build + +Signed-off-by: Bernd Kuhls + +diff -uNr w_scan-20141122.org/descriptors.h w_scan-20141122/descriptors.h +--- w_scan-20141122.org/descriptors.h 2014-11-22 09:49:26.000000000 +0100 ++++ w_scan-20141122/descriptors.h 2016-01-24 14:05:21.000000000 +0100 +@@ -28,6 +28,7 @@ + #ifndef __DESCRIPTORS_H__ + #define __DESCRIPTORS_H__ + ++#include + #include "extended_frontend.h" + + /****************************************************************************** +diff -uNr w_scan-20141122.org/version.h w_scan-20141122/version.h +--- w_scan-20141122.org/version.h 2014-11-22 11:59:56.000000000 +0100 ++++ w_scan-20141122/version.h 2016-01-24 14:06:33.000000000 +0100 +@@ -1,6 +1,6 @@ + /* AUTOMATICALLY GENERATED - DO NOT EDIT MANUALLY */ + #ifndef W_SCAN_VERSION_H + #define W_SCAN_VERSION_H +-uint version=20170107; ++unsigned int version=20170107; + #endif + diff --git a/package/w_scan/0002-si_types-h-fix-build-with-gcc-10.patch b/package/w_scan/0002-si_types-h-fix-build-with-gcc-10.patch new file mode 100644 index 00000000..50d24881 --- /dev/null +++ b/package/w_scan/0002-si_types-h-fix-build-with-gcc-10.patch @@ -0,0 +1,37 @@ +si_types.h: fix build with gcc 10 + +Drop service_t, p_service_t, transponder_t and p_transponder_t to avoid +the following build failure with gcc 10 (which defaults to -fno-common): + +/home/giuliobenetti/autobuild/run/instance-3/output-1/host/bin/arm-buildroot-linux-gnueabihf-gcc -Wall -Wextra -Wno-comment -Wswitch-default -Wno-unused-parameter -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -lrt -o w_scan atsc_psip_section.o countries.o descriptors.o diseqc.o dump-dvbscan.o dump-vdr.o dump-xine.o dump-mplayer.o dump-vlc-m3u.o dvbscan.o lnb.o parse-dvbscan.o satellites.o scan.o section.o tools.o emulate.o dump-xml.o iconv_codes.o char-coding.o +/home/giuliobenetti/autobuild/run/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: descriptors.o:(.bss+0x404): multiple definition of `p_transponder_t'; countries.o:(.bss+0x0): first defined here +/home/giuliobenetti/autobuild/run/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: descriptors.o:(.bss+0x408): multiple definition of `transponder_t'; countries.o:(.bss+0x4): first defined here +/home/giuliobenetti/autobuild/run/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: descriptors.o:(.bss+0x480): multiple definition of `p_service_t'; countries.o:(.bss+0x7c): first defined here +/home/giuliobenetti/autobuild/run/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: descriptors.o:(.bss+0x484): multiple definition of `service_t'; countries.o:(.bss+0x80): first defined here + +Fixes: + - http://autobuild.buildroot.org/results/5640442cb4ba06bcbcf31540a64f5665862d39f7 + +Signed-off-by: Fabrice Fontaine + +diff -Nura w_scan-20170107.orig/si_types.h w_scan-20170107/si_types.h +--- w_scan-20170107.orig/si_types.h 2020-09-20 11:09:56.776963441 +0200 ++++ w_scan-20170107/si_types.h 2020-09-20 11:13:13.149232478 +0200 +@@ -114,7 +114,7 @@ + uint32_t logical_channel_number; + uint8_t running; + void * priv; +-} service_t, * p_service_t; ++}; + + /******************************************************************************* + /* transponder type. +@@ -201,7 +201,7 @@ + /*----------------------------*/ + char * network_name; + network_change_t network_change; +-} __attribute__((packed)) transponder_t, * p_transponder_t; ++} __attribute__((packed)); + + /******************************************************************************* + /* satellite channel routing type. diff --git a/package/w_scan/Config.in b/package/w_scan/Config.in new file mode 100644 index 00000000..d5471200 --- /dev/null +++ b/package/w_scan/Config.in @@ -0,0 +1,14 @@ +comment "w_scan needs a toolchain w/ headers >= 3.7" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 + +config BR2_PACKAGE_W_SCAN + bool "w_scan" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + w_scan is a small command line utility used to perform + frequency scans for DVB and ATSC transmissions. It is + capable of creating channels.conf files (in different output + formats !) as well as initial tuning data for scan. + + https://www.gen2vdr.de/wirbel/w_scan/index2.html diff --git a/package/w_scan/w_scan.hash b/package/w_scan/w_scan.hash new file mode 100644 index 00000000..fcb0e611 --- /dev/null +++ b/package/w_scan/w_scan.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 38e0f38a7bf06cff6d6ea01652ad4ee60da2cb0e937360468f936da785b46ffe w_scan-20170107.tar.bz2 +sha256 ddb9db7630752f8fdc6898f7c99a99eaeeac5213627ecb093df9c82f56175dc7 COPYING diff --git a/package/w_scan/w_scan.mk b/package/w_scan/w_scan.mk new file mode 100644 index 00000000..c63f20cc --- /dev/null +++ b/package/w_scan/w_scan.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# w_scan +# +################################################################################ + +W_SCAN_VERSION = 20170107 +W_SCAN_SOURCE = w_scan-$(W_SCAN_VERSION).tar.bz2 +W_SCAN_SITE = http://wirbel.htpc-forum.de/w_scan +W_SCAN_LICENSE = GPL-2.0+ +W_SCAN_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +W_SCAN_DEPENDENCIES += libiconv +W_SCAN_CONF_ENV += LIBS=-liconv +endif + +$(eval $(autotools-package)) diff --git a/package/waf/waf.hash b/package/waf/waf.hash new file mode 100644 index 00000000..543bea5d --- /dev/null +++ b/package/waf/waf.hash @@ -0,0 +1,7 @@ +# Locally computed +sha1 9ee587d802ffd15a2e7cae579560d00754db4fad waf-2.1.1 +sha256 2e66e01fd564f09106419389119c78143327c89a35f26ee3ed376f0ee410a14d waf-2.1.1 + +# The waf script also contains its license, but is renamed `waf` in the extract +# step, so this is a synonym for the above, to check WAF_LICENSE +sha256 2e66e01fd564f09106419389119c78143327c89a35f26ee3ed376f0ee410a14d waf diff --git a/package/waf/waf.mk b/package/waf/waf.mk new file mode 100644 index 00000000..a12d15a2 --- /dev/null +++ b/package/waf/waf.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# waf +# +################################################################################ + +WAF_VERSION = 2.1.1 +WAF_SOURCE = waf-$(WAF_VERSION) +WAF_SITE = https://waf.io +WAF_LICENSE = BSD-3-Clause +WAF_LICENSE_FILES = waf + +define HOST_WAF_EXTRACT_CMDS + $(INSTALL) -D -m 0755 $(HOST_WAF_DL_DIR)/waf-$(WAF_VERSION) $(@D)/waf +endef + +define HOST_WAF_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/waf $(HOST_DIR)/bin/waf +endef + +$(eval $(host-generic-package)) diff --git a/package/waffle/0001-cmake-forward-cflags-from-.pc-files-to-waffle-cflags.patch b/package/waffle/0001-cmake-forward-cflags-from-.pc-files-to-waffle-cflags.patch new file mode 100644 index 00000000..b2a1294f --- /dev/null +++ b/package/waffle/0001-cmake-forward-cflags-from-.pc-files-to-waffle-cflags.patch @@ -0,0 +1,42 @@ +From 8b0ae49c8bea78df73c3ecae0059d54a95c561fa Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 24 Dec 2017 00:11:45 +0100 +Subject: [PATCH] cmake: forward cflags from *.pc files to waffle cflags + +When building mesa egl without x11 and gles2 the headers need a +EGL_NO_X11 define to avoid including X11 headers. + +This define EGL_NO_X11 is lost while building waffle +since CFLAGS defined by pc files are not used. + +EGL_NO_X11 is defined in CFLAGS from egl.pc. + +Signed-off-by: Romain Naour +[Upstream status: +https://gitlab.freedesktop.org/mesa/waffle/-/merge_requests/111] +--- + src/waffle/CMakeLists.txt | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/src/waffle/CMakeLists.txt b/src/waffle/CMakeLists.txt +index d76e029..2ff72c8 100644 +--- a/src/waffle/CMakeLists.txt ++++ b/src/waffle/CMakeLists.txt +@@ -5,6 +5,14 @@ + add_definitions( + -DWAFFLE_API_VERSION=${waffle_api_version} + -DWAFFLE_API_EXPERIMENTAL ++ ${egl_CFLAGS} ++ ${gbm_CFLAGS} ++ ${gl_CFLAGS} ++ ${GLEXT_CFLAGS} ++ ${libudev_CFLAGS} ++ ${wayland-client_CFLAGS} ++ ${wayland-egl_CFLAGS} ++ ${x11-xcb_CFLAGS} + ) + + include_directories( +-- +2.14.3 + diff --git a/package/waffle/0002-wayland-fix-build-against-version-1-20.patch b/package/waffle/0002-wayland-fix-build-against-version-1-20.patch new file mode 100644 index 00000000..d3b66180 --- /dev/null +++ b/package/waffle/0002-wayland-fix-build-against-version-1-20.patch @@ -0,0 +1,59 @@ +From 2c33597245bb74f19104f0a858cd40e80b26991d Mon Sep 17 00:00:00 2001 +From: Philipp Zabel +Date: Fri, 17 Dec 2021 13:46:40 +0100 +Subject: [PATCH] wayland: fix build against version 1.20 + +Wayland 1.20 introduces two new symbols wl_proxy_marshal_flags and +wl_proxy_marshal_array_flags, which need to be wrapped as well. + +Closes: https://gitlab.freedesktop.org/mesa/waffle/-/issues/76 +Signed-off-by: Philipp Zabel +[Retrieved from: +https://gitlab.freedesktop.org/mesa/waffle/-/commit/2c33597245bb74f19104f0a858cd40e80b26991d] +Signed-off-by: Fabrice Fontaine +--- + src/waffle/wayland/wayland_sym.h | 18 ++++++++++++++++++ + src/waffle/wayland/wayland_wrapper.h | 2 ++ + 2 files changed, 20 insertions(+) + +diff --git a/src/waffle/wayland/wayland_sym.h b/src/waffle/wayland/wayland_sym.h +index 3d48625..4c6ac8d 100644 +--- a/src/waffle/wayland/wayland_sym.h ++++ b/src/waffle/wayland/wayland_sym.h +@@ -26,3 +26,21 @@ WAFFLE_WAYLAND_SYM(struct wl_proxy *, wl_proxy_marshal_constructor, + WAFFLE_WAYLAND_SYM(struct wl_proxy *, wl_proxy_marshal_constructor_versioned, + (struct wl_proxy *proxy, uint32_t opcode, + const struct wl_interface *interface, uint32_t version, ...)) ++ ++WAFFLE_WAYLAND_SYM(struct wl_proxy *, ++ wl_proxy_marshal_flags, ++ (struct wl_proxy * p, ++ uint32_t opcode, ++ const struct wl_interface *interface, ++ uint32_t version, ++ uint32_t flags, ++ ...)) ++ ++WAFFLE_WAYLAND_SYM(struct wl_proxy *, ++ wl_proxy_marshal_array_flags, ++ (struct wl_proxy * p, ++ uint32_t opcode, ++ const struct wl_interface *interface, ++ uint32_t version, ++ uint32_t flags, ++ union wl_argument *args)) +diff --git a/src/waffle/wayland/wayland_wrapper.h b/src/waffle/wayland/wayland_wrapper.h +index 4af2f64..6addf4f 100644 +--- a/src/waffle/wayland/wayland_wrapper.h ++++ b/src/waffle/wayland/wayland_wrapper.h +@@ -65,5 +65,7 @@ struct wl_display; + #define wl_proxy_marshal (*wfl_wl_proxy_marshal) + #define wl_proxy_marshal_constructor (*wfl_wl_proxy_marshal_constructor) + #define wl_proxy_marshal_constructor_versioned (*wfl_wl_proxy_marshal_constructor_versioned) ++#define wl_proxy_marshal_flags (*wfl_wl_proxy_marshal_flags) ++#define wl_proxy_marshal_array_flags (*wfl_wl_proxy_marshal_array_flags) + + #include +-- +GitLab + diff --git a/package/waffle/0003-drop-C-dependency.patch b/package/waffle/0003-drop-C-dependency.patch new file mode 100644 index 00000000..89c0cd09 --- /dev/null +++ b/package/waffle/0003-drop-C-dependency.patch @@ -0,0 +1,46 @@ +From a54a5d086c5f7e0751f68ac1a2942d8077922ebc Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 7 Aug 2022 16:18:22 +0200 +Subject: [PATCH] drop C++ dependency + +C++ dependency has been added for nacl backend which has been added by +https://gitlab.freedesktop.org/mesa/waffle/-/commit/6ca943584e593aec2bd4f9c66d91859e63e02d61 +and dropped by +https://gitlab.freedesktop.org/mesa/waffle/-/commit/a7c7152b054e6d2b9af36ed9db9a0df44731b279 + +Signed-off-by: Fabrice Fontaine +[Upstream status: not sent yet] +--- + CMakeLists.txt | 2 +- + src/waffle/CMakeLists.txt | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index acece86..04ea68c 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -23,7 +23,7 @@ + # 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. + +-project(waffle1 C CXX) ++project(waffle1 C) + + cmake_minimum_required(VERSION 2.8.12) + +diff --git a/src/waffle/CMakeLists.txt b/src/waffle/CMakeLists.txt +index 8014b51..276f276 100644 +--- a/src/waffle/CMakeLists.txt ++++ b/src/waffle/CMakeLists.txt +@@ -238,7 +238,7 @@ include_directories( + ${XCB_INCLUDE_DIRS} + ) + +-add_library(${waffle_libname} SHARED ${waffle_sources} ${waffle_cxx_sources}) ++add_library(${waffle_libname} SHARED ${waffle_sources}) + + # Debian's packaging system emits warnings if wflinfo directly links to any + # library that it doesn't directly use. Silence the warnings by annotating +-- +2.35.1 + diff --git a/package/waffle/Config.in b/package/waffle/Config.in new file mode 100644 index 00000000..79cb4ca2 --- /dev/null +++ b/package/waffle/Config.in @@ -0,0 +1,47 @@ +config BR2_PACKAGE_WAFFLE_SUPPORTS_GLX + bool + default y if BR2_PACKAGE_HAS_LIBGL && BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_WAFFLE_SUPPORTS_WAYLAND + bool + default y if BR2_PACKAGE_WAYLAND && BR2_PACKAGE_HAS_LIBEGL + +config BR2_PACKAGE_WAFFLE_SUPPORTS_X11_EGL + bool + default y if BR2_PACKAGE_HAS_LIBEGL && BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_WAFFLE_SUPPORTS_GBM + bool + # mesa3d is for now the only GBM provider, and it is enabled + # together with its EGL support + default y if BR2_PACKAGE_HAS_LIBEGL && BR2_PACKAGE_MESA3D_OPENGL_EGL && BR2_PACKAGE_HAS_UDEV + +config BR2_PACKAGE_WAFFLE + bool "waffle" + depends on BR2_PACKAGE_WAFFLE_SUPPORTS_GLX || \ + BR2_PACKAGE_WAFFLE_SUPPORTS_WAYLAND || \ + BR2_PACKAGE_WAFFLE_SUPPORTS_X11_EGL || \ + BR2_PACKAGE_WAFFLE_SUPPORTS_GBM + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_WAFFLE_SUPPORTS_GLX || BR2_PACKAGE_WAFFLE_SUPPORTS_X11_EGL + select BR2_PACKAGE_LIBXCB if BR2_PACKAGE_WAFFLE_SUPPORTS_GLX || BR2_PACKAGE_WAFFLE_SUPPORTS_X11_EGL + help + Waffle is a cross-platform library that allows one to defer + selection of an OpenGL API and of window system until + runtime. For example, on Linux, Waffle enables an application + to select X11/EGL with an OpenGL 3.3 core profile, Wayland + with OpenGL ES2, and other window system / API combinations. + + Waffle's immediate goal is to enable Piglit [1] to test + multiple OpenGL flavors in a cross-platform way, and to allow + each Piglit test to choose its OpenGL API and window system + at runtime. A future goal is to enable the ability to record + (with another tool such APITrace [2]) an application's OpenGL + calls on one operating system or window system, and then + replay that trace on a different system. + + For more information, visit to Waffle's website. + + [1] http://piglit.freedesktop.org + [2] http://github.com/apitrace/apitrace#readme + + http://www.waffle-gl.org diff --git a/package/waffle/waffle.hash b/package/waffle/waffle.hash new file mode 100644 index 00000000..8968dd6f --- /dev/null +++ b/package/waffle/waffle.hash @@ -0,0 +1,5 @@ +# From https://gitlab.freedesktop.org/mesa/waffle/uploads/42030b1cc0f81fd738152104e1811919/waffle-1.7.0.sha256sums +sha256 69e42d15d08f63e7a54a8b8770295a6eb04dfd1c6f86c328b6039dbe7de28ef3 waffle-1.7.0.tar.xz + +# Locally calculated +sha256 630844d1911c8a1b7b888a1de9097c4860b7e381362fd5aa64141d58ab7ecc9b LICENSE.txt diff --git a/package/waffle/waffle.mk b/package/waffle/waffle.mk new file mode 100644 index 00000000..87d44c42 --- /dev/null +++ b/package/waffle/waffle.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# waffle +# +################################################################################ + +WAFFLE_VERSION = 1.7.0 +WAFFLE_SOURCE = waffle-$(WAFFLE_VERSION).tar.xz +WAFFLE_SITE = https://gitlab.freedesktop.org/mesa/waffle/uploads/9eaadda4ec2ed1d8a26ddefd2cfd16be +WAFFLE_INSTALL_STAGING = YES +WAFFLE_LICENSE = BSD-2-Clause +WAFFLE_LICENSE_FILES = LICENSE.txt + +WAFFLE_DEPENDENCIES = host-pkgconf + +WAFFLE_CONF_OPTS = -Dwaffle_build_tests=OFF \ + -Dwaffle_build_examples=OFF \ + -Dwaffle_build_manpages=OFF \ + -Dwaffle_build_htmldocs=OFF \ + -Dwaffle_has_nacl=OFF + +ifeq ($(BR2_PACKAGE_WAFFLE_SUPPORTS_WAYLAND),y) +WAFFLE_DEPENDENCIES += libegl wayland +WAFFLE_CONF_OPTS += -Dwaffle_has_wayland=ON +else +WAFFLE_CONF_OPTS += -Dwaffle_has_wayland=OFF +endif + +ifeq ($(BR2_PACKAGE_WAFFLE_SUPPORTS_X11_EGL),y) +WAFFLE_DEPENDENCIES += libegl libxcb xlib_libX11 +WAFFLE_CONF_OPTS += -Dwaffle_has_x11_egl=ON +else +WAFFLE_CONF_OPTS += -Dwaffle_has_x11_egl=OFF +endif + +ifeq ($(BR2_PACKAGE_WAFFLE_SUPPORTS_GLX),y) +WAFFLE_DEPENDENCIES += libgl libxcb xlib_libX11 +WAFFLE_CONF_OPTS += -Dwaffle_has_glx=ON +else +WAFFLE_CONF_OPTS += -Dwaffle_has_glx=OFF +endif + +ifeq ($(BR2_PACKAGE_WAFFLE_SUPPORTS_GBM),y) +WAFFLE_DEPENDENCIES += libegl udev +WAFFLE_CONF_OPTS += -Dwaffle_has_gbm=ON +else +WAFFLE_CONF_OPTS += -Dwaffle_has_gbm=OFF +endif + +ifeq ($(BR2_PACKAGE_BASH_COMPLETION),y) +WAFFLE_DEPENDENCIES += bash-completion +endif + +ifeq ($(BR2_PACKAGE_MESA3D)$(BR2_PACKAGE_MESA3D_OPENGL_EGL),yy) +WAFFLE_DEPENDENCIES += mesa3d +WAFFLE_CONF_OPTS += -Dwaffle_has_surfaceless_egl=ON +else +WAFFLE_CONF_OPTS += -Dwaffle_has_surfaceless_egl=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/wampcc/0001-Add-RISC-V-endian-detection.patch b/package/wampcc/0001-Add-RISC-V-endian-detection.patch new file mode 100644 index 00000000..d23b44ee --- /dev/null +++ b/package/wampcc/0001-Add-RISC-V-endian-detection.patch @@ -0,0 +1,46 @@ +From e94589ed36c4a311355efc46ba3f76523c546057 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 7 Aug 2019 16:17:16 +0200 +Subject: [PATCH] Add RISC-V endian detection + +3rdparty/msgpack-c/include/msgpack/predef/other/endian.h (which comes +from Boost) two ways of detecting the endianess: + + (1) It includes if BOOST_LIB_C_GNU is defined, and then + use __BYTE_ORDER to decide the endianness. + + (2) Otherwise, if (1) was not possible for some reason, it uses + architecture defines to decide the endianness. + +(1) works perfectly fine with glibc toolchains, because +BOOST_LIB_C_GNU is defined, but it doesn't work with musl. Due to +this, is not included, __BYTE_ORDER is not defined, and +method (1) does not work, causing build failures on musl toolchains +that don't have explicit handling by architecture name (method 2). + +So this commit fixes RISC-V musl build by adding support for the +__riscv architecture define, to determine that the endianness is +little endian. + +Signed-off-by: Thomas Petazzoni +--- + 3rdparty/msgpack-c/include/msgpack/predef/other/endian.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/3rdparty/msgpack-c/include/msgpack/predef/other/endian.h b/3rdparty/msgpack-c/include/msgpack/predef/other/endian.h +index 3c609fa..63a5722 100644 +--- a/3rdparty/msgpack-c/include/msgpack/predef/other/endian.h ++++ b/3rdparty/msgpack-c/include/msgpack/predef/other/endian.h +@@ -127,7 +127,8 @@ information and acquired knowledge: + defined(__AARCH64EL__) || \ + defined(_MIPSEL) || \ + defined(__MIPSEL) || \ +- defined(__MIPSEL__) ++ defined(__MIPSEL__) || \ ++ defined(__riscv) + # undef MSGPACK_ENDIAN_LITTLE_BYTE + # define MSGPACK_ENDIAN_LITTLE_BYTE MSGPACK_VERSION_NUMBER_AVAILABLE + # endif +-- +2.21.0 + diff --git a/package/wampcc/0002-include-wampcc-platform.h-fix-build-with-musl-1.2.0.patch b/package/wampcc/0002-include-wampcc-platform.h-fix-build-with-musl-1.2.0.patch new file mode 100644 index 00000000..c7b8c786 --- /dev/null +++ b/package/wampcc/0002-include-wampcc-platform.h-fix-build-with-musl-1.2.0.patch @@ -0,0 +1,38 @@ +From 9c2559434b752df3dc8460ee242d321670a40847 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 1 Jun 2020 11:41:54 +0200 +Subject: [PATCH] include/wampcc/platform.h: fix build with musl 1.2.0 + +Fix the following build failure on musl 1.2.0 due to time_t being on 64 +bits: + +/home/naourr/work/instance-0/output-1/build/wampcc-1.6/libs/wampcc/utils.cc: In function 'std::__cxx11::string wampcc::local_timestamp()': +/home/naourr/work/instance-0/output-1/build/wampcc-1.6/libs/wampcc/utils.cc:205:15: error: cannot convert 'wampcc::time_val::type_type*' {aka 'long int*'} to 'const time_t*' {aka 'const long long int*'} + localtime_r(&now.sec, &parts); + ^~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/da996e189220499b85efbdb541a891ac18db38c6 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/darrenjs/wampcc/pull/62] +--- + include/wampcc/platform.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/wampcc/platform.h b/include/wampcc/platform.h +index 24d0868..aebf950 100644 +--- a/include/wampcc/platform.h ++++ b/include/wampcc/platform.h +@@ -27,7 +27,7 @@ namespace wampcc + struct time_val + { + #ifndef _WIN32 +- typedef long type_type; ++ typedef time_t type_type; + #else + typedef __time64_t type_type; + #endif +-- +2.26.2 + diff --git a/package/wampcc/0003-Broken-build-on-Windows.patch b/package/wampcc/0003-Broken-build-on-Windows.patch new file mode 100644 index 00000000..3c528cd8 --- /dev/null +++ b/package/wampcc/0003-Broken-build-on-Windows.patch @@ -0,0 +1,27 @@ +From eaa70a289288db1e8d90a2a9bcde435a8975fe74 Mon Sep 17 00:00:00 2001 +From: Sergey Lukashevich +Date: Fri, 26 Jul 2019 21:58:34 +0300 +Subject: [PATCH] Broken build on Windows: "http_parser.h(66,18): error C2039: + 'runtime_error': is not a member of 'std'" + +Add missing include. + +[Retrieved from: +https://github.com/darrenjs/wampcc/commit/eaa70a289288db1e8d90a2a9bcde435a8975fe74] +Signed-off-by: Fabrice Fontaine +--- + include/wampcc/http_parser.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/include/wampcc/http_parser.h b/include/wampcc/http_parser.h +index a9405dd..4c20417 100644 +--- a/include/wampcc/http_parser.h ++++ b/include/wampcc/http_parser.h +@@ -11,6 +11,7 @@ + #include + #include + #include ++#include + + // types brought in from nodejs http-parser project + struct http_parser; diff --git a/package/wampcc/Config.in b/package/wampcc/Config.in new file mode 100644 index 00000000..41919361 --- /dev/null +++ b/package/wampcc/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_WAMPCC + bool "wampcc" + depends on BR2_INSTALL_LIBSTDCPP + 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_ATOMIC + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libuv + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::shared_future + select BR2_PACKAGE_LIBUV + select BR2_PACKAGE_JANSSON + select BR2_PACKAGE_OPENSSL + help + wampcc is a C++ library that implements the Web Application + Messaging Protocol. + + https://github.com/darrenjs/wampcc + +comment "wampcc needs a toolchain w/ C++, NPTL, dynamic library, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +comment "wampcc needs a toolchain not affected by GCC bug 64735" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/package/wampcc/wampcc.hash b/package/wampcc/wampcc.hash new file mode 100644 index 00000000..0e47ea69 --- /dev/null +++ b/package/wampcc/wampcc.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b3c3633b4c6a74d7ac8a676a7ea30fbfde7ae19aa1fc37de3b8aa3a553b674a2 wampcc-1.6.tar.gz +sha256 bd185b1ec8a292d42b42346757ff6e198073e13c1e080e9ea548d34dd42d30d8 LICENSE diff --git a/package/wampcc/wampcc.mk b/package/wampcc/wampcc.mk new file mode 100644 index 00000000..11bb1f90 --- /dev/null +++ b/package/wampcc/wampcc.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# wampcc +# +################################################################################ + +WAMPCC_VERSION = 1.6 +WAMPCC_SITE = $(call github,darrenjs,wampcc,v$(WAMPCC_VERSION)) +WAMPCC_DEPENDENCIES = host-pkgconf libuv jansson openssl +WAMPCC_INSTALL_STAGING = YES +WAMPCC_LICENSE = MIT +WAMPCC_LICENSE_FILES = LICENSE + +# Uses __atomic_fetch_add_8 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +WAMPCC_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic +endif + +$(eval $(cmake-package)) diff --git a/package/watchdog/Config.in b/package/watchdog/Config.in new file mode 100644 index 00000000..bf485034 --- /dev/null +++ b/package/watchdog/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_WATCHDOG + bool "watchdog" + depends on BR2_USE_MMU + help + Watchdog is a daemon that periodically pets a watchdog device + if the configured system status checks pass. If they do not, + the daemon may execute repair commands, shutdown the system or + reboot it. + + https://sourceforge.net/projects/watchdog/ diff --git a/package/watchdog/watchdog.hash b/package/watchdog/watchdog.hash new file mode 100644 index 00000000..7366c1b5 --- /dev/null +++ b/package/watchdog/watchdog.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 b8e7c070e1b72aee2663bdc13b5cc39f76c9232669cfbb1ac0adc7275a3b019d watchdog-5.16.tar.gz +sha256 af7f3f94e85080204b37f7c53717a2c94c6b54d7fa516ebd74e008cb4c0391bd COPYING diff --git a/package/watchdog/watchdog.mk b/package/watchdog/watchdog.mk new file mode 100644 index 00000000..c5066ad5 --- /dev/null +++ b/package/watchdog/watchdog.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# watchdog +# +################################################################################ + +WATCHDOG_VERSION = 5.16 +WATCHDOG_SITE = http://downloads.sourceforge.net/sourceforge/watchdog +WATCHDOG_SELINUX_MODULES = watchdog +WATCHDOG_LICENSE = GPL-2.0+ +WATCHDOG_LICENSE_FILES = COPYING +# By default installs binaries in /usr/sbin/, but we want them in +# /sbin/ so that they fall at the same place as Busybox counterparts +WATCHDOG_CONF_OPTS = --sbindir=/sbin + +$(eval $(autotools-package)) diff --git a/package/watchdogd/Config.in b/package/watchdogd/Config.in new file mode 100644 index 00000000..0aeaad16 --- /dev/null +++ b/package/watchdogd/Config.in @@ -0,0 +1,64 @@ +config BR2_PACKAGE_WATCHDOGD + bool "watchdogd" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBCONFUSE + select BR2_PACKAGE_LIBITE + select BR2_PACKAGE_LIBUEV + help + Extended version of uClinux-dist watchdogd. Monitors loadavg, + file descriptors and memory leaks, and capable of supervising + your processes main loop using an instrumentation API. + + A reset reason is saved for power loss, CPU overload, or any + of the monitored conditions (above). The full capabilities + are limited by the kernel watchdog driver, but even the basic + "softdog" driver is supported. See /etc/watchdogd.conf for + details, and try watchdogctl for system status and available + commands. + + https://github.com/troglobit/watchdogd/ + +if BR2_PACKAGE_WATCHDOGD + +config BR2_PACKAGE_WATCHDOGD_TEST_SUITE + bool "Enable watchdogctl test cases" + help + The watchdogctl program comes with a suite of tests built-in. + They can be used to verify correct operation of watchdogd and + the kernel watchdog driver. + +config BR2_PACKAGE_WATCHDOGD_GENERIC + bool "Generic script monitor" + default y if BR2_PACKAGE_WATCHDOGD_GENERIC_POLL_WRAP # legacy 2024.02 + help + Enable generic script monitor. + +config BR2_PACKAGE_WATCHDOGD_LOADAVG + bool "CPU load average monitor" + default y if BR2_PACKAGE_WATCHDOGD_LOADAVG_POLL_WRAP # legacy 2024.02 + help + Enable CPU load average monitor. + +config BR2_PACKAGE_WATCHDOGD_FILENR + bool "File descriptor leak monitor" + default y if BR2_PACKAGE_WATCHDOGD_FILENR_POLL_WRAP # legacy 2024.02 + help + Enable file descriptor leak monitor. + +config BR2_PACKAGE_WATCHDOGD_MEMINFO + bool "Memory leak monitor" + default y if BR2_PACKAGE_WATCHDOGD_MEMINFO_POLL_WRAP # legacy 2024.02 + help + Enable memory leak monitor. + +config BR2_PACKAGE_WATCHDOGD_FSMON + bool "File system monitor" + help + Enable file system monitor. + +config BR2_PACKAGE_WATCHDOGD_TEMPMON + bool "Temperature monitor" + help + Enable temperature monitor. + +endif diff --git a/package/watchdogd/S01watchdogd b/package/watchdogd/S01watchdogd new file mode 100755 index 00000000..df57b8ad --- /dev/null +++ b/package/watchdogd/S01watchdogd @@ -0,0 +1,47 @@ +#!/bin/sh + +DAEMON="watchdogd" +PIDFILE="/var/run/$DAEMON.pid" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +cmd() +{ + start-stop-daemon -q -p "$PIDFILE" -x "/usr/sbin/$DAEMON" "$@" + status=$? + if [ $status -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return $status +} + +case "$1" in + start) + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + cmd -S -- $SMCROUTED_ARGS + ;; + + stop) + printf 'Stopping %s: ' "$DAEMON" + cmd -K + ;; + + restart) + $0 stop + sleep 1 + $0 start + ;; + + reload) + printf 'Reloading %s: ' "$DAEMON" + cmd -K -s HUP + ;; + + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/watchdogd/watchdogd.hash b/package/watchdogd/watchdogd.hash new file mode 100644 index 00000000..0c228666 --- /dev/null +++ b/package/watchdogd/watchdogd.hash @@ -0,0 +1,5 @@ +# Upstream .sha256 from GitHub +sha256 7f38bc691353a51fc6feb2ccab60417c0284dd3f4d55c50d8b1781fda70d8101 watchdogd-4.0.tar.gz + +# Locally calculated +sha256 e233c56d807c74c67f2eff47ad03c216144cdd374d8d7578b996c28c260eadda LICENSE diff --git a/package/watchdogd/watchdogd.mk b/package/watchdogd/watchdogd.mk new file mode 100644 index 00000000..189efc81 --- /dev/null +++ b/package/watchdogd/watchdogd.mk @@ -0,0 +1,73 @@ +################################################################################ +# +# watchdogd +# +################################################################################ + +WATCHDOGD_VERSION = 4.0 +WATCHDOGD_SITE = https://github.com/troglobit/watchdogd/releases/download/$(WATCHDOGD_VERSION) +WATCHDOGD_LICENSE = ISC +WATCHDOGD_LICENSE_FILES = LICENSE +WATCHDOGD_CPE_ID_VENDOR = troglobit +WATCHDOGD_INSTALL_STAGING = YES +WATCHDOGD_DEPENDENCIES = host-pkgconf libconfuse libite libuev +WATCHDOGD_SELINUX_MODULES = watchdog + +WATCHDOGD_CONF_OPTS = \ + --disable-compat \ + --disable-examples \ + --disable-test-mode + +ifneq ($(BR2_PACKAGE_WATCHDOGD_TEST_SUITE),y) +WATCHDOGD_CONF_OPTS += --disable-builtin-tests +else +WATCHDOGD_CONF_OPTS += --enable-builtin-tests +endif + +ifneq ($(BR2_PACKAGE_WATCHDOGD_GENERIC),y) +WATCHDOGD_CONF_OPTS += --without-generic +else +WATCHDOGD_CONF_OPTS += --with-generic +endif + +ifneq ($(BR2_PACKAGE_WATCHDOGD_LOADAVG),y) +WATCHDOGD_CONF_OPTS += --without-loadavg +else +WATCHDOGD_CONF_OPTS += --with-loadavg +endif + +ifneq ($(BR2_PACKAGE_WATCHDOGD_FILENR),y) +WATCHDOGD_CONF_OPTS += --without-filenr +else +WATCHDOGD_CONF_OPTS += --with-filenr +endif + +ifneq ($(BR2_PACKAGE_WATCHDOGD_MEMINFO),y) +WATCHDOGD_CONF_OPTS += --without-meminfo +else +WATCHDOGD_CONF_OPTS += --with-meminfo +endif + +ifneq ($(BR2_PACKAGE_WATCHDOGD_FSMON),y) +WATCHDOGD_CONF_OPTS += --without-fsmon +else +WATCHDOGD_CONF_OPTS += --with-fsmon +endif + +ifneq ($(BR2_PACKAGE_WATCHDOGD_TEMPMON),y) +WATCHDOGD_CONF_OPTS += --without-tempmon +else +WATCHDOGD_CONF_OPTS += --with-tempmon +endif + +define WATCHDOGD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/watchdogd/S01watchdogd \ + $(TARGET_DIR)/etc/init.d/S01watchdogd +endef + +define WATCHDOGD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(WATCHDOGD_SRCDIR)/watchdogd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/watchdogd.service +endef + +$(eval $(autotools-package)) diff --git a/package/wavemon/Config.in b/package/wavemon/Config.in new file mode 100644 index 00000000..0e087bd0 --- /dev/null +++ b/package/wavemon/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_WAVEMON + bool "wavemon" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS # libnl tools + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_LIBNL + select BR2_PACKAGE_LIBNL_TOOLS + help + wavemon is a wireless device monitoring application that + allows you to watch signal and noise levels, packet + statistics, device configuration and network parameters of + your wireless network hardware. + + Note that you need a Linux Kernel configuration with + wireless extensions or with wireless extensions + compatibility enabled. + + https://github.com/uoaerg/wavemon + +comment "wavemon needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/wavemon/wavemon.hash b/package/wavemon/wavemon.hash new file mode 100644 index 00000000..342f2f7d --- /dev/null +++ b/package/wavemon/wavemon.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 f84c55a40b470f2b98908d20cd0b38ffef6f587daed23b50281c9592df3331c6 wavemon-0.9.5.tar.gz +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 LICENSE diff --git a/package/wavemon/wavemon.mk b/package/wavemon/wavemon.mk new file mode 100644 index 00000000..74917e83 --- /dev/null +++ b/package/wavemon/wavemon.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# wavemon +# +################################################################################ + +WAVEMON_VERSION = 0.9.5 +WAVEMON_SITE = $(call github,uoaerg,wavemon,v$(WAVEMON_VERSION)) +WAVEMON_LICENSE = GPL-3.0+ +WAVEMON_LICENSE_FILES = LICENSE +WAVEMON_DEPENDENCIES = host-pkgconf libnl ncurses + +# Handwritten Makefile.in, automake isn't used +WAVEMON_MAKE_OPTS = CC="$(TARGET_CC)" + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +WAVEMON_CONF_OPTS += --with-libcap +WAVEMON_DEPENDENCIES += libcap +else +WAVEMON_CONF_OPTS += --without-libcap +endif + +$(eval $(autotools-package)) diff --git a/package/wavpack/Config.in b/package/wavpack/Config.in new file mode 100644 index 00000000..db7b8934 --- /dev/null +++ b/package/wavpack/Config.in @@ -0,0 +1,9 @@ +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. + + http://www.wavpack.com/ diff --git a/package/wavpack/wavpack.hash b/package/wavpack/wavpack.hash new file mode 100644 index 00000000..e938386b --- /dev/null +++ b/package/wavpack/wavpack.hash @@ -0,0 +1,3 @@ +# locally computed hash +sha256 e81510fd9ec5f309f58d5de83e9af6c95e267a13753d7e0bbfe7b91273a88bee wavpack-5.7.0.tar.xz +sha256 35a87c7390cd00e51e7a7cbb0486df7897201347e4625779248ace48e7e6cfbc COPYING diff --git a/package/wavpack/wavpack.mk b/package/wavpack/wavpack.mk new file mode 100644 index 00000000..25fe448c --- /dev/null +++ b/package/wavpack/wavpack.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# wavpack +# +################################################################################ + +WAVPACK_VERSION = 5.7.0 +WAVPACK_SITE = \ + https://github.com/dbry/WavPack/releases/download/$(WAVPACK_VERSION) +WAVPACK_SOURCE = wavpack-$(WAVPACK_VERSION).tar.xz +WAVPACK_INSTALL_STAGING = YES +WAVPACK_DEPENDENCIES = $(if $(BR2_ENABLE_LOCALE),,libiconv) +WAVPACK_LICENSE = BSD-3-Clause +WAVPACK_LICENSE_FILES = COPYING +WAVPACK_CPE_ID_VENDOR = wavpack + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +WAVPACK_CONF_OPTS += LIBS=-liconv +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +WAVPACK_CONF_OPTS += --enable-threads +else +WAVPACK_CONF_OPTS += --disable-threads +endif + +# WavPack "autodetects" CPU type to enable ASM code. However, the assembly code +# for ARM is written for ARMv7 only and building WavPack for an ARM-non-v7 +# architecture will fail. We explicitly enable ASM for the supported +# architectures x86, x64 and ARMv7 and disable it for all others. +ifeq ($(BR2_i386)$(BR2_x86_64)$(BR2_ARM_CPU_ARMV7A),y) +WAVPACK_CONF_OPTS += --enable-asm +else +WAVPACK_CONF_OPTS += --disable-asm +endif + +$(eval $(autotools-package)) diff --git a/package/wayland-protocols/Config.in b/package/wayland-protocols/Config.in new file mode 100644 index 00000000..8b4dedfd --- /dev/null +++ b/package/wayland-protocols/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_WAYLAND_PROTOCOLS + bool "wayland-protocols" + # Not really... but useless otherwise + depends on BR2_PACKAGE_WAYLAND + help + Wayland protocols that adds functionality not available in + the Wayland core protocol. + + http://wayland.freedesktop.org/ diff --git a/package/wayland-protocols/wayland-protocols.hash b/package/wayland-protocols/wayland-protocols.hash new file mode 100644 index 00000000..93d40a91 --- /dev/null +++ b/package/wayland-protocols/wayland-protocols.hash @@ -0,0 +1,4 @@ +# From https://lists.freedesktop.org/archives/wayland-devel/2024-April/043581.html +sha256 71fd4de05e79f9a1ca559fac30c1f8365fa10346422f9fe795f74d77b9ef7e92 wayland-protocols-1.36.tar.xz +sha512 5448b9aedc953ce6be0f378da900c195c8743cb6001f615823b5fc9cab3e3ee54271132055743278e10decef7f8e9dcdeef31593a2a12062575fb90eb0084be0 wayland-protocols-1.36.tar.xz +sha256 f1a2b233e8a9a71c40f4aa885be08a0842ac85bb8588703c1dd7e6e6502e3124 COPYING diff --git a/package/wayland-protocols/wayland-protocols.mk b/package/wayland-protocols/wayland-protocols.mk new file mode 100644 index 00000000..c0dfe694 --- /dev/null +++ b/package/wayland-protocols/wayland-protocols.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# wayland-protocols +# +################################################################################ + +WAYLAND_PROTOCOLS_VERSION = 1.36 +WAYLAND_PROTOCOLS_SITE = https://gitlab.freedesktop.org/wayland/wayland-protocols/-/releases/$(WAYLAND_PROTOCOLS_VERSION)/downloads +WAYLAND_PROTOCOLS_SOURCE = wayland-protocols-$(WAYLAND_PROTOCOLS_VERSION).tar.xz +WAYLAND_PROTOCOLS_LICENSE = MIT +WAYLAND_PROTOCOLS_LICENSE_FILES = COPYING +WAYLAND_PROTOCOLS_INSTALL_STAGING = YES +WAYLAND_PROTOCOLS_INSTALL_TARGET = NO + +WAYLAND_PROTOCOLS_CONF_OPTS = -Dtests=false + +$(eval $(meson-package)) diff --git a/package/wayland-utils/Config.in b/package/wayland-utils/Config.in new file mode 100644 index 00000000..d7842e61 --- /dev/null +++ b/package/wayland-utils/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_WAYLAND_UTILS + bool "wayland-utils" + depends on BR2_PACKAGE_WAYLAND # wayland-client, wayland-server + select BR2_PACKAGE_WAYLAND_PROTOCOLS + help + Wayland utils (wayland-info). + + https://gitlab.freedesktop.org/ofourdan/wayland-utils diff --git a/package/wayland-utils/wayland-utils.hash b/package/wayland-utils/wayland-utils.hash new file mode 100644 index 00000000..fd14b986 --- /dev/null +++ b/package/wayland-utils/wayland-utils.hash @@ -0,0 +1,4 @@ +# From https://lists.freedesktop.org/archives/wayland-devel/2023-June/042736.html +sha256 d9278c22554586881802540751bcc42569262bf80cd9ac9b0fd12ff4bd09a9e4 wayland-utils-1.2.0.tar.xz +sha512 dc69a2d88215b54486954bd9f6e91cd158b0c0b94dccd2c863477cf6b1e83a83db4466f0718aa7d2be4de8d06484c0672c79318bc5c2b1f082f893fe795c2c00 wayland-utils-1.2.0.tar.xz +sha256 1eba39c11640014a5841dd3017e5245fc31f47e1cf43a3287a286dd6a8de8a1a COPYING diff --git a/package/wayland-utils/wayland-utils.mk b/package/wayland-utils/wayland-utils.mk new file mode 100644 index 00000000..efeb7e57 --- /dev/null +++ b/package/wayland-utils/wayland-utils.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# wayland-utils +# +################################################################################ + +WAYLAND_UTILS_VERSION = 1.2.0 +WAYLAND_UTILS_SITE = https://gitlab.freedesktop.org/wayland/wayland-utils/-/releases/$(WAYLAND_UTILS_VERSION)/downloads +WAYLAND_UTILS_SOURCE = wayland-utils-$(WAYLAND_UTILS_VERSION).tar.xz +WAYLAND_UTILS_LICENSE = MIT +WAYLAND_UTILS_LICENSE_FILES = COPYING +WAYLAND_UTILS_DEPENDENCIES = host-pkgconf wayland wayland-protocols + +ifeq ($(BR2_PACKAGE_LIBDRM),y) +WAYLAND_UTILS_DEPENDENCIES += libdrm +WAYLAND_UTILS_CONF_OPTS += -Ddrm=enabled +else +WAYLAND_UTILS_CONF_OPTS += -Ddrm=disabled +endif + +$(eval $(meson-package)) diff --git a/package/wayland/Config.in b/package/wayland/Config.in new file mode 100644 index 00000000..c22d9c7e --- /dev/null +++ b/package/wayland/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_WAYLAND + bool "wayland" + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_LIBFFI + select BR2_PACKAGE_LIBXML2 + help + Wayland is a project to define a protocol for a compositor + to talk to its clients as well as a library implementation + of the protocol. + + https://wayland.freedesktop.org/ + +comment "wayland needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/wayland/wayland.hash b/package/wayland/wayland.hash new file mode 100644 index 00000000..627cb5a1 --- /dev/null +++ b/package/wayland/wayland.hash @@ -0,0 +1,6 @@ +# From https://lists.freedesktop.org/archives/wayland-devel/2024-May/043636.html +sha256 05b3e1574d3e67626b5974f862f36b5b427c7ceeb965cb36a4e6c2d342e45ab2 wayland-1.23.0.tar.xz +sha512 9c525231a7ea3e68d3178230d476285a960d23e38571ac96d885f86c0588c52ef01460bff6833db5adb9456ce8db7b996613611187aac972736748ba91b8fd81 wayland-1.23.0.tar.xz + +# Locally calculated +sha256 6eefcb023622a463168a5c20add95fd24a38c7482622a9254a23b99b7c153061 COPYING diff --git a/package/wayland/wayland.mk b/package/wayland/wayland.mk new file mode 100644 index 00000000..06adafc3 --- /dev/null +++ b/package/wayland/wayland.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# wayland +# +################################################################################ + +WAYLAND_VERSION = 1.23.0 +WAYLAND_SITE = https://gitlab.freedesktop.org/wayland/wayland/-/releases/$(WAYLAND_VERSION)/downloads +WAYLAND_SOURCE = wayland-$(WAYLAND_VERSION).tar.xz +WAYLAND_LICENSE = MIT +WAYLAND_LICENSE_FILES = COPYING +WAYLAND_CPE_ID_VENDOR = wayland +WAYLAND_INSTALL_STAGING = YES +WAYLAND_DEPENDENCIES = host-pkgconf host-wayland expat libffi libxml2 +HOST_WAYLAND_DEPENDENCIES = host-pkgconf host-expat host-libffi host-libxml2 + +WAYLAND_CONF_OPTS = -Dtests=false -Ddocumentation=false +HOST_WAYLAND_CONF_OPTS = -Dtests=false -Ddocumentation=false + +# Remove the DTD from the target, it's not needed at runtime +define WAYLAND_TARGET_CLEANUP + rm -rf $(TARGET_DIR)/usr/share/wayland +endef +WAYLAND_POST_INSTALL_TARGET_HOOKS += WAYLAND_TARGET_CLEANUP + +$(eval $(meson-package)) +$(eval $(host-meson-package)) diff --git a/package/waylandpp/0001-add-missing-cstdint-include.patch b/package/waylandpp/0001-add-missing-cstdint-include.patch new file mode 100644 index 00000000..13b0ce49 --- /dev/null +++ b/package/waylandpp/0001-add-missing-cstdint-include.patch @@ -0,0 +1,61 @@ +From 3c441910aa25f57df2a4db55f75f5d99cea86620 Mon Sep 17 00:00:00 2001 +From: Sergei Trofimovich +Date: Sun, 8 Jan 2023 18:24:53 +0000 +Subject: [PATCH] add missing include + +Upcoming `gcc-13` made `` leaner and does not include `` +implicitly anymore. As a result build fails without the change as: + + [ 2%] Building CXX object CMakeFiles/wayland-scanner++.dir/scanner/scanner.cpp.o + scanner/scanner.cpp:378:3: error: 'uint32_t' does not name a type + 378 | uint32_t width = 0; + | ^~~~~~~~ + +Upstream: https://github.com/NilsBrause/waylandpp/pull/71 + +Signed-off-by: Bernd Kuhls +--- + include/wayland-client.hpp | 1 + + scanner/scanner.cpp | 3 +++ + 2 files changed, 4 insertions(+) + +diff --git a/include/wayland-client.hpp b/include/wayland-client.hpp +index a3f782b..4598a0e 100644 +--- a/include/wayland-client.hpp ++++ b/include/wayland-client.hpp +@@ -29,6 +29,7 @@ + /** \file */ + + #include ++#include + #include + #include + #include +diff --git a/scanner/scanner.cpp b/scanner/scanner.cpp +index bebd71e..37cf7ff 100644 +--- a/scanner/scanner.cpp ++++ b/scanner/scanner.cpp +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + #include + + #include "pugixml.hpp" +@@ -1106,6 +1107,7 @@ int main(int argc, char *argv[]) + wayland_hpp << "#pragma once" << std::endl + << std::endl + << "#include " << std::endl ++ << "#include " << std::endl + << "#include " << std::endl + << "#include " << std::endl + << "#include " << std::endl +@@ -1125,6 +1127,7 @@ int main(int argc, char *argv[]) + wayland_server_hpp << "#pragma once" << std::endl + << std::endl + << "#include " << std::endl ++ << "#include " << std::endl + << "#include " << std::endl + << "#include " << std::endl + << "#include " << std::endl diff --git a/package/waylandpp/Config.in b/package/waylandpp/Config.in new file mode 100644 index 00000000..0713884d --- /dev/null +++ b/package/waylandpp/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_WAYLANDPP + bool "waylandpp" + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_HOST_GCC_AT_LEAST_4_9 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_WAYLAND + help + Wayland C++ bindings + + https://github.com/NilsBrause/waylandpp + +comment "waylandpp needs an OpenGL-EGL backend, a toolchain w/ gcc >= 4.9, host gcc >= 4.9, C++ support" + depends on BR2_PACKAGE_WAYLAND + depends on !BR2_PACKAGE_HAS_LIBEGL || \ + !BR2_HOST_GCC_AT_LEAST_4_9 || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_INSTALL_LIBSTDCPP diff --git a/package/waylandpp/waylandpp.hash b/package/waylandpp/waylandpp.hash new file mode 100644 index 00000000..a3eb5379 --- /dev/null +++ b/package/waylandpp/waylandpp.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 b20b45917382c6b87e9380130c9a1a1c563da2f498de5830df12fbce326dd9f5 waylandpp-1.0.0.tar.gz +sha256 3eee5022ce84ead344e1c51b9d00c7f450f53003fe096fe460d66c616fe56782 LICENSE +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 scanner/gpl-3.0.txt diff --git a/package/waylandpp/waylandpp.mk b/package/waylandpp/waylandpp.mk new file mode 100644 index 00000000..4a0d58ba --- /dev/null +++ b/package/waylandpp/waylandpp.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# waylandpp +# +################################################################################ + +WAYLANDPP_VERSION = 1.0.0 +WAYLANDPP_SITE = $(call github,NilsBrause,waylandpp,$(WAYLANDPP_VERSION)) +WAYLANDPP_LICENSE = MIT, GPL-3.0+ (wayland_scanner) +WAYLANDPP_LICENSE_FILES = LICENSE scanner/gpl-3.0.txt +WAYLANDPP_INSTALL_STAGING = YES +# pugixml is needed only to build the host version of wayland-scanner++ +HOST_WAYLANDPP_DEPENDENCIES = host-pugixml host-pkgconf host-wayland +WAYLANDPP_DEPENDENCIES = libegl host-pkgconf wayland host-waylandpp + +# host variant of wayland-scanner++ is needed for building the target +# package +HOST_WAYLANDPP_CONF_OPTS = \ + -DBUILD_LIBRARIES=OFF \ + -DBUILD_SCANNER=ON + +WAYLANDPP_CONF_OPTS = \ + -DBUILD_LIBRARIES=ON \ + -DBUILD_SCANNER=OFF \ + -DWAYLAND_SCANNERPP=$(HOST_DIR)/bin/wayland-scanner++ + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/webkitgtk/Config.in b/package/webkitgtk/Config.in new file mode 100644 index 00000000..8ee90dda --- /dev/null +++ b/package/webkitgtk/Config.in @@ -0,0 +1,142 @@ +config BR2_PACKAGE_WEBKITGTK_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_aarch64 || BR2_aarch64_be + 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 + # RISC-V needs the g/imafd ISA. + default y if BR2_riscv && BR2_RISCV_ISA_RVI \ + && BR2_RISCV_ISA_RVM && BR2_RISCV_ISA_RVA \ + && BR2_RISCV_ISA_RVF && BR2_RISCV_ISA_RVD + # Disabled on SuperH because of segfault + depends on BR2_USE_MMU # libglib2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt + +comment "webkitgtk needs libgtk3 and a toolchain w/ C++, wchar, threads, dynamic library, gcc >= 10, host gcc >= 4.9" + depends on BR2_PACKAGE_WEBKITGTK_ARCH_SUPPORTS + depends on !BR2_BINFMT_FLAT + depends on !BR2_PACKAGE_LIBGTK3 || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_10 || \ + !BR2_HOST_GCC_AT_LEAST_4_9 + depends on BR2_USE_MMU + +config BR2_PACKAGE_WEBKITGTK + bool "webkitgtk" + depends on !BR2_STATIC_LIBS # wayland + depends on !BR2_BINFMT_FLAT # icu + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_HOST_GCC_AT_LEAST_4_9 # icu, host-ruby + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # wayland, icu, libsoup3 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_10 + depends on BR2_USE_WCHAR # icu, libsoup3 + depends on BR2_PACKAGE_LIBGTK3 + depends on BR2_PACKAGE_WEBKITGTK_ARCH_SUPPORTS + 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_LIBEPOXY + select BR2_PACKAGE_LIBGCRYPT + select BR2_PACKAGE_LIBSECRET + select BR2_PACKAGE_LIBSOUP3 + select BR2_PACKAGE_LIBTASN1 + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_LIBXSLT + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_WEBP + select BR2_PACKAGE_WEBP_DEMUX + select BR2_PACKAGE_WOFF2 + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE if BR2_PACKAGE_LIBGTK3_X11 + select BR2_PACKAGE_XLIB_LIBXDAMAGE if BR2_PACKAGE_LIBGTK3_X11 + select BR2_PACKAGE_XLIB_LIBXRENDER if BR2_PACKAGE_LIBGTK3_X11 + select BR2_PACKAGE_XLIB_LIBXT if BR2_PACKAGE_LIBGTK3_X11 + help + WebKit is an open source, standards compliant web browser + engine. + + http://www.webkitgtk.org/ + +if BR2_PACKAGE_WEBKITGTK + +config BR2_PACKAGE_WEBKITGTK_SANDBOX + bool "sandboxing support" + depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS # libseccomp + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 # libseccomp + select BR2_PACKAGE_BUBBLEWRAP # runtime + select BR2_PACKAGE_XDG_DBUS_PROXY # runtime + select BR2_PACKAGE_LIBSECCOMP + help + Enable sandboxing of the processes used for network operation, + disk access, and Web content rendering. + +comment "sandboxing support needs a toolchain w/ headers >= 3.12" + depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + +config BR2_PACKAGE_WEBKITGTK_HTTPS + bool "HTTPS support" + depends on !BR2_STATIC_LIBS # libsoup3 -> glib-networking, gnutls + select BR2_PACKAGE_CA_CERTIFICATES # runtime + select BR2_PACKAGE_LIBSOUP3_SSL + help + Enable HTTPS protocol support. + +comment "webkitgtk https support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_WEBKITGTK_MULTIMEDIA + bool "multimedia support" + select BR2_PACKAGE_GSTREAMER1 + select BR2_PACKAGE_GST1_PLUGINS_BAD + select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DEBUGUTILS + select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSDEMUX + select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SUBENC + 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_VIDEOCONVERTSCALE + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VOLUME + select BR2_PACKAGE_GST1_PLUGINS_GOOD + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUDIOFX + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUTODETECT + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ISOMP4 + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VPX + select BR2_PACKAGE_GST1_LIBAV + help + This option pulls in all of the required dependencies + to enable multimedia (video/audio) support. + +if BR2_PACKAGE_WEBKITGTK_MULTIMEDIA + +config BR2_PACKAGE_WEBKITGTK_USE_GSTREAMER_GL + bool "use gstreamer-gl" + default y + depends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_PLATFORM + help + Use the GStreamer GL elements for handling video content. + This is recommended as it improves performance of video + playback. In some target configurations incorrect rendering + might be produced, and disabling this option may help. + +endif + +config BR2_PACKAGE_WEBKITGTK_WEBDRIVER + bool "WebDriver support" + help + Enable support for WebDriver. This will build and install the + WebKitWebDriver program in the target. + +endif diff --git a/package/webkitgtk/webkitgtk.hash b/package/webkitgtk/webkitgtk.hash new file mode 100644 index 00000000..7da0e97e --- /dev/null +++ b/package/webkitgtk/webkitgtk.hash @@ -0,0 +1,7 @@ +# From https://www.webkitgtk.org/releases/webkitgtk-2.44.2.tar.xz.sums +sha1 e62b2c545011a2f180a914529a68950c4d34a2ee webkitgtk-2.44.2.tar.xz +sha256 523f42c8ff24832add17631f6eaafe8f9303afe316ef1a7e1844b952a7f7521b webkitgtk-2.44.2.tar.xz + +# Hashes for license files: +sha256 0b5d3a7cc325942567373b0ecd757d07c132e0ebd7c97bfc63f7e1a76094edb4 Source/WebCore/LICENSE-APPLE +sha256 f2b3bd09663381deb99721109d22b47af1213bb43007a8b56a06c6375c8050ce Source/WebCore/LICENSE-LGPL-2.1 diff --git a/package/webkitgtk/webkitgtk.mk b/package/webkitgtk/webkitgtk.mk new file mode 100644 index 00000000..468fefab --- /dev/null +++ b/package/webkitgtk/webkitgtk.mk @@ -0,0 +1,150 @@ +################################################################################ +# +# webkitgtk +# +################################################################################ + +WEBKITGTK_VERSION = 2.44.2 +WEBKITGTK_SITE = https://www.webkitgtk.org/releases +WEBKITGTK_SOURCE = webkitgtk-$(WEBKITGTK_VERSION).tar.xz +WEBKITGTK_INSTALL_STAGING = YES +WEBKITGTK_LICENSE = LGPL-2.1+, BSD-2-Clause +WEBKITGTK_LICENSE_FILES = \ + Source/WebCore/LICENSE-APPLE \ + Source/WebCore/LICENSE-LGPL-2.1 +WEBKITGTK_CPE_ID_VENDOR = webkitgtk +WEBKITGTK_DEPENDENCIES = host-ruby host-python3 host-gperf host-unifdef \ + enchant harfbuzz icu jpeg libegl libepoxy libgcrypt libgtk3 libsecret \ + libsoup3 libtasn1 libxml2 libxslt sqlite webp woff2 + +WEBKITGTK_CMAKE_BACKEND = ninja + +WEBKITGTK_CONF_OPTS = \ + -DENABLE_API_TESTS=OFF \ + -DENABLE_DOCUMENTATION=OFF \ + -DENABLE_GEOLOCATION=OFF \ + -DENABLE_MINIBROWSER=ON \ + -DENABLE_SPELLCHECK=ON \ + -DENABLE_WEB_RTC=OFF \ + -DPORT=GTK \ + -DUSE_AVIF=OFF \ + -DUSE_GTK4=OFF \ + -DUSE_LIBHYPHEN=OFF \ + -DUSE_WOFF2=ON + +ifeq ($(BR2_PACKAGE_WEBKITGTK_SANDBOX),y) +WEBKITGTK_CONF_OPTS += \ + -DENABLE_BUBBLEWRAP_SANDBOX=ON \ + -DBWRAP_EXECUTABLE=/usr/bin/bwrap \ + -DDBUS_PROXY_EXECUTABLE=/usr/bin/xdg-dbus-proxy +WEBKITGTK_DEPENDENCIES += libseccomp +else +WEBKITGTK_CONF_OPTS += -DENABLE_BUBBLEWRAP_SANDBOX=OFF +endif + +ifeq ($(BR2_PACKAGE_WEBKITGTK_MULTIMEDIA),y) +WEBKITGTK_CONF_OPTS += \ + -DENABLE_VIDEO=ON \ + -DENABLE_WEB_AUDIO=ON \ + -DENABLE_WEB_CODECS=ON +WEBKITGTK_DEPENDENCIES += gstreamer1 gst1-libav gst1-plugins-base +else +WEBKITGTK_CONF_OPTS += \ + -DENABLE_VIDEO=OFF \ + -DENABLE_WEB_AUDIO=OFF \ + -DENABLE_WEB_CODECS=OFF +endif + +ifeq ($(BR2_PACKAGE_WEBKITGTK_WEBDRIVER),y) +WEBKITGTK_CONF_OPTS += -DENABLE_WEBDRIVER=ON +else +WEBKITGTK_CONF_OPTS += -DENABLE_WEBDRIVER=OFF +endif + +ifeq ($(BR2_PACKAGE_LCMS2),y) +WEBKITGTK_CONF_OPTS += -DUSE_LCMS=ON +WEBKITGTK_DEPENDENCIES += lcms2 +else +WEBKITGTK_CONF_OPTS += -DUSE_LCMS=OFF +endif + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +WEBKITGTK_CONF_OPTS += -DENABLE_INTROSPECTION=ON +WEBKITGTK_DEPENDENCIES += gobject-introspection +else +WEBKITGTK_CONF_OPTS += -DENABLE_INTROSPECTION=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBBACKTRACE),y) +WEBKITGTK_CONF_OPTS += -DUSE_LIBBACKTRACE=ON +WEBKITGTK_DEPENDENCIES += libbacktrace +else +WEBKITGTK_CONF_OPTS += -DUSE_LIBBACKTRACE=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBJXL),y) +WEBKITGTK_CONF_OPTS += -DUSE_JPEGXL=ON +WEBKITGTK_DEPENDENCIES += libjxl +else +WEBKITGTK_CONF_OPTS += -DUSE_JPEGXL=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBMANETTE),y) +WEBKITGTK_CONF_OPTS += -DENABLE_GAMEPAD=ON +WEBKITGTK_DEPENDENCIES += libmanette +else +WEBKITGTK_CONF_OPTS += -DENABLE_GAMEPAD=OFF +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGBM),y) +WEBKITGTK_CONF_OPTS += -DUSE_GBM=ON +WEBKITGTK_DEPENDENCIES += libgbm +else +WEBKITGTK_CONF_OPTS += -DUSE_GBM=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) +WEBKITGTK_CONF_OPTS += -DENABLE_X11_TARGET=ON +WEBKITGTK_DEPENDENCIES += libgl \ + xlib_libXcomposite xlib_libXdamage xlib_libXrender xlib_libXt +else +WEBKITGTK_CONF_OPTS += -DENABLE_X11_TARGET=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3_WAYLAND),y) +WEBKITGTK_CONF_OPTS += -DENABLE_WAYLAND_TARGET=ON +else +WEBKITGTK_CONF_OPTS += -DENABLE_WAYLAND_TARGET=OFF +endif + +ifeq ($(BR2_PACKAGE_WEBKITGTK_USE_GSTREAMER_GL),y) +WEBKITGTK_CONF_OPTS += -DUSE_GSTREAMER_GL=ON +else +WEBKITGTK_CONF_OPTS += -DUSE_GSTREAMER_GL=OFF +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +WEBKITGTK_CONF_OPTS += -DENABLE_JOURNALD_LOG=ON +WEBKITGTK_DEPENDENCIES += systemd +else +WEBKITGTK_CONF_OPTS += -DENABLE_JOURNALD_LOG=OFF +endif + +# JIT is not supported for MIPS r6, but the WebKit build system does not +# have a check for these processors. The same goes for ARMv5 and ARMv6. +# Disable JIT forcibly here and use the CLoop interpreter instead. +# +# Also, we have to disable the sampling profiler and webassembly, +# which does NOT work with ENABLE_C_LOOP. +# +# Upstream bugs: https://bugs.webkit.org/show_bug.cgi?id=191258 +# https://bugs.webkit.org/show_bug.cgi?id=172765 +# https://bugs.webkit.org/show_bug.cgi?id=265218 +# +ifeq ($(BR2_ARM_CPU_ARMV5)$(BR2_ARM_CPU_ARMV6)$(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6),y) +WEBKITGTK_CONF_OPTS += -DENABLE_JIT=OFF -DENABLE_C_LOOP=ON \ + -DENABLE_SAMPLING_PROFILER=OFF \ + -DENABLE_WEBASSEMBLY=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/webp/Config.in b/package/webp/Config.in new file mode 100644 index 00000000..e8263a95 --- /dev/null +++ b/package/webp/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_WEBP + bool "webp" + help + WebP is a new image format that provides lossless and lossy + compression for images on the web + + https://developers.google.com/speed/webp/ + +if BR2_PACKAGE_WEBP + +config BR2_PACKAGE_WEBP_DEMUX + bool "webpdemux" + help + Demux is a part of WebPMux for extraction and manipulation + of an extended format WebP file, which can have features + like color profile, metadata and animation. + +config BR2_PACKAGE_WEBP_MUX + bool "webpmux" + help + Mux is a part of WebPMux for creation and manipulation + of an extended format WebP file, which can have features + like color profile, metadata and animation. + +endif diff --git a/package/webp/webp.hash b/package/webp/webp.hash new file mode 100644 index 00000000..adc54305 --- /dev/null +++ b/package/webp/webp.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2a499607df669e40258e53d0ade8035ba4ec0175244869d1025d460562aa09b4 libwebp-1.3.2.tar.gz +sha256 5aec868f669e384a22372a4e8a1a6cd7d44c64cd451f960ca69cc170d1e13acf COPYING diff --git a/package/webp/webp.mk b/package/webp/webp.mk new file mode 100644 index 00000000..33cb4bd5 --- /dev/null +++ b/package/webp/webp.mk @@ -0,0 +1,84 @@ +################################################################################ +# +# webp +# +################################################################################ + +WEBP_VERSION = 1.3.2 +WEBP_SOURCE = libwebp-$(WEBP_VERSION).tar.gz +WEBP_SITE = http://downloads.webmproject.org/releases/webp +WEBP_LICENSE = BSD-3-Clause +WEBP_LICENSE_FILES = COPYING +WEBP_CPE_ID_VENDOR = webmproject +WEBP_CPE_ID_PRODUCT = libwebp +WEBP_INSTALL_STAGING = YES + +WEBP_CONF_OPTS += \ + --disable-sdl + +HOST_WEBP_CONF_OPTS += \ + --enable-libwebpdemux \ + --enable-libwebpmux \ + --disable-gif \ + --disable-gl \ + --disable-jpeg \ + --disable-png \ + --disable-sdl \ + --disable-tiff + +ifeq ($(BR2_PACKAGE_WEBP_DEMUX),y) +WEBP_CONF_OPTS += --enable-libwebpdemux +else +WEBP_CONF_OPTS += --disable-libwebpdemux +endif + +ifeq ($(BR2_PACKAGE_WEBP_MUX),y) +WEBP_CONF_OPTS += --enable-libwebpmux +else +WEBP_CONF_OPTS += --disable-libwebpmux +endif + +ifeq ($(BR2_PACKAGE_GIFLIB),y) +WEBP_DEPENDENCIES += giflib +WEBP_CONF_OPTS += --enable-gif +else +WEBP_CONF_OPTS += --disable-gif +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +WEBP_DEPENDENCIES += jpeg +WEBP_CONF_OPTS += \ + --enable-jpeg \ + --with-jpegincludedir=$(STAGING_DIR)/usr/include \ + --with-jpeglibdir=$(STAGING_DIR)/usr/lib +else +WEBP_CONF_OPTS += --disable-jpeg +endif + +ifeq ($(BR2_PACKAGE_LIBFREEGLUT),y) +WEBP_DEPENDENCIES += libfreeglut +WEBP_CONF_OPTS += --enable-gl +else +WEBP_CONF_OPTS += --disable-gl +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +WEBP_DEPENDENCIES += libpng +WEBP_CONF_OPTS += --enable-png +WEBP_CONF_ENV += ac_cv_path_LIBPNG_CONFIG=$(STAGING_DIR)/usr/bin/libpng-config +else +WEBP_CONF_OPTS += --disable-png +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +WEBP_DEPENDENCIES += tiff +WEBP_CONF_OPTS += \ + --enable-tiff \ + --with-tiffincludedir=$(STAGING_DIR)/usr/include \ + --with-tifflibdir=$(STAGING_DIR)/usr/lib +else +WEBP_CONF_OPTS += --disable-tiff +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/webrtc-audio-processing/Config.in b/package/webrtc-audio-processing/Config.in new file mode 100644 index 00000000..cb3b2136 --- /dev/null +++ b/package/webrtc-audio-processing/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS + bool + default y if BR2_aarch64 || BR2_arm || BR2_i386 || BR2_x86_64 + +config BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING + bool "webrtc-audio-processing" + depends on BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS + depends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # libabseil-cpp + # pthread_condattr_setclock + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on !BR2_STATIC_LIBS # libabseil-cpp + select BR2_PACKAGE_LIBABSEIL_CPP + help + AudioProcessing library based on Google's implementation of + WebRTC. + + http://freedesktop.org/software/pulseaudio/webrtc-audio-processing/ + +comment "webrtc-audio-processing needs a toolchain w/ C++, NPTL, dynamic library, gcc >= 8" + depends on BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS + depends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \ + || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_8 diff --git a/package/webrtc-audio-processing/webrtc-audio-processing.hash b/package/webrtc-audio-processing/webrtc-audio-processing.hash new file mode 100644 index 00000000..eb222936 --- /dev/null +++ b/package/webrtc-audio-processing/webrtc-audio-processing.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2365e93e778d7b61b5d6e02d21c47d97222e9c7deff9e1d0838ad6ec2e86f1b9 webrtc-audio-processing-1.3.tar.xz +sha256 9b79539028e216e813e152d45f5c1ed5fdd0554426ad50270fb03134e7082dac COPYING diff --git a/package/webrtc-audio-processing/webrtc-audio-processing.mk b/package/webrtc-audio-processing/webrtc-audio-processing.mk new file mode 100644 index 00000000..8aa5ee46 --- /dev/null +++ b/package/webrtc-audio-processing/webrtc-audio-processing.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# webrtc-audio-processing +# +################################################################################ + +WEBRTC_AUDIO_PROCESSING_VERSION = 1.3 +WEBRTC_AUDIO_PROCESSING_SOURCE = webrtc-audio-processing-$(WEBRTC_AUDIO_PROCESSING_VERSION).tar.xz +WEBRTC_AUDIO_PROCESSING_SITE = http://freedesktop.org/software/pulseaudio/webrtc-audio-processing +WEBRTC_AUDIO_PROCESSING_INSTALL_STAGING = YES +WEBRTC_AUDIO_PROCESSING_LICENSE = BSD-3-Clause +WEBRTC_AUDIO_PROCESSING_LICENSE_FILES = COPYING +WEBRTC_AUDIO_PROCESSING_DEPENDENCIES = host-pkgconf libabseil-cpp + +$(eval $(meson-package)) diff --git a/package/websocketpp/0001-fix_cpp20_build.patch b/package/websocketpp/0001-fix_cpp20_build.patch new file mode 100644 index 00000000..77b22920 --- /dev/null +++ b/package/websocketpp/0001-fix_cpp20_build.patch @@ -0,0 +1,108 @@ +From 3197a520eb4c1e4754860441918a5930160373eb Mon Sep 17 00:00:00 2001 +From: Peter Thorson +Date: Tue, 29 Jun 2021 09:13:12 -0500 +Subject: [PATCH] [core] Remove the use of simple template ids as they have + been removed in c++20. + https://timsong-cpp.github.io/cppwp/n4861/diff.cpp17.class#2 references #991 + +Signed-off-by: Michael Nosthoff +Upstream: https://github.com/zaphoyd/websocketpp/commit/3197a520eb4c1e4754860441918a5930160373eb +--- + websocketpp/endpoint.hpp | 2 +- + websocketpp/logger/basic.hpp | 14 +++++++------- + websocketpp/roles/server_endpoint.hpp | 6 +++--- + 3 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/websocketpp/endpoint.hpp b/websocketpp/endpoint.hpp +index 825eaa46d..10f525689 100644 +--- a/websocketpp/endpoint.hpp ++++ b/websocketpp/endpoint.hpp +@@ -111,7 +111,7 @@ class endpoint : public config::transport_type, public config::endpoint_base { + + + /// Destructor +- ~endpoint() {} ++ ~endpoint() {} + + #ifdef _WEBSOCKETPP_DEFAULT_DELETE_FUNCTIONS_ + // no copy constructor because endpoints are not copyable +diff --git a/websocketpp/logger/basic.hpp b/websocketpp/logger/basic.hpp +index 84514130e..4c9d83649 100644 +--- a/websocketpp/logger/basic.hpp ++++ b/websocketpp/logger/basic.hpp +@@ -58,33 +58,33 @@ namespace log { + template + class basic { + public: +- basic(channel_type_hint::value h = ++ basic(channel_type_hint::value h = + channel_type_hint::access) + : m_static_channels(0xffffffff) + , m_dynamic_channels(0) + , m_out(h == channel_type_hint::error ? &std::cerr : &std::cout) {} + +- basic(std::ostream * out) ++ basic(std::ostream * out) + : m_static_channels(0xffffffff) + , m_dynamic_channels(0) + , m_out(out) {} + +- basic(level c, channel_type_hint::value h = ++ basic(level c, channel_type_hint::value h = + channel_type_hint::access) + : m_static_channels(c) + , m_dynamic_channels(0) + , m_out(h == channel_type_hint::error ? &std::cerr : &std::cout) {} + +- basic(level c, std::ostream * out) ++ basic(level c, std::ostream * out) + : m_static_channels(c) + , m_dynamic_channels(0) + , m_out(out) {} + + /// Destructor +- ~basic() {} ++ ~basic() {} + + /// Copy constructor +- basic(basic const & other) ++ basic(basic const & other) + : m_static_channels(other.m_static_channels) + , m_dynamic_channels(other.m_dynamic_channels) + , m_out(other.m_out) +@@ -97,7 +97,7 @@ class basic { + + #ifdef _WEBSOCKETPP_MOVE_SEMANTICS_ + /// Move constructor +- basic(basic && other) ++ basic(basic && other) + : m_static_channels(other.m_static_channels) + , m_dynamic_channels(other.m_dynamic_channels) + , m_out(other.m_out) +diff --git a/websocketpp/roles/server_endpoint.hpp b/websocketpp/roles/server_endpoint.hpp +index 4a5865eff..04fee18f9 100644 +--- a/websocketpp/roles/server_endpoint.hpp ++++ b/websocketpp/roles/server_endpoint.hpp +@@ -75,11 +75,11 @@ class server : public endpoint,config> { + } + + /// Destructor +- ~server() {} ++ ~server() {} + + #ifdef _WEBSOCKETPP_DEFAULT_DELETE_FUNCTIONS_ + // no copy constructor because endpoints are not copyable +- server(server &) = delete; ++ server(server &) = delete; + + // no copy assignment operator because endpoints are not copyable + server & operator=(server const &) = delete; +@@ -87,7 +87,7 @@ class server : public endpoint,config> { + + #ifdef _WEBSOCKETPP_MOVE_SEMANTICS_ + /// Move constructor +- server(server && o) : endpoint,config>(std::move(o)) {} ++ server(server && o) : endpoint,config>(std::move(o)) {} + + #ifdef _WEBSOCKETPP_DEFAULT_DELETE_FUNCTIONS_ + // no move assignment operator because of const member variables diff --git a/package/websocketpp/Config.in b/package/websocketpp/Config.in new file mode 100644 index 00000000..cadb9ff6 --- /dev/null +++ b/package/websocketpp/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_WEBSOCKETPP + bool "websocketpp" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_INSTALL_LIBSTDCPP + help + WebSocket++ is a header only C++ library that implements + RFC6455 The WebSocket Protocol. It allows integrating + WebSocket client and server functionality into C++ programs. + It uses interchangeable network transport modules including + one based on C++ iostreams and one based on Boost Asio. + + http://www.zaphoyd.com/websocketpp + +comment "websocketpp needs a toolchain w/ C++ and gcc >= 4.8" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 diff --git a/package/websocketpp/websocketpp.hash b/package/websocketpp/websocketpp.hash new file mode 100644 index 00000000..e4d0c929 --- /dev/null +++ b/package/websocketpp/websocketpp.hash @@ -0,0 +1,3 @@ +# Locally Computed: +sha256 6ce889d85ecdc2d8fa07408d6787e7352510750daa66b5ad44aacb47bea76755 websocketpp-0.8.2.tar.gz +sha256 b31e597bc777d884a39663c11d0557a0af40780e1f451de11ea5103924a69667 COPYING diff --git a/package/websocketpp/websocketpp.mk b/package/websocketpp/websocketpp.mk new file mode 100644 index 00000000..dd31e644 --- /dev/null +++ b/package/websocketpp/websocketpp.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# websocketpp +# +################################################################################ + +WEBSOCKETPP_VERSION = 0.8.2 +WEBSOCKETPP_SITE = $(call github,zaphoyd,websocketpp,$(WEBSOCKETPP_VERSION)) +WEBSOCKETPP_LICENSE = BSD-3-Clause, MIT, Zlib +WEBSOCKETPP_LICENSE_FILES = COPYING +WEBSOCKETPP_CPE_ID_VENDOR = zaphoyd +WEBSOCKETPP_INSTALL_STAGING = YES +# Only installs headers +WEBSOCKETPP_INSTALL_TARGET = NO + +$(eval $(cmake-package)) diff --git a/package/weston/Config.in b/package/weston/Config.in new file mode 100644 index 00000000..d55c4564 --- /dev/null +++ b/package/weston/Config.in @@ -0,0 +1,220 @@ +comment "weston needs udev and a toolchain w/ locale, threads, dynamic library, headers >= 3.0" + depends on !BR2_PACKAGE_HAS_UDEV || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 || BR2_STATIC_LIBS || \ + !BR2_ENABLE_LOCALE + +config BR2_PACKAGE_WESTON + bool "weston" + depends on BR2_PACKAGE_HAS_UDEV + depends on !BR2_STATIC_LIBS # wayland + depends on BR2_TOOLCHAIN_HAS_THREADS # wayland + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 + select BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_WAYLAND_PROTOCOLS + select BR2_PACKAGE_LIBXKBCOMMON + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_CAIRO_PNG + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBINPUT + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_SEATD + # Runtime dependency + select BR2_PACKAGE_XKEYBOARD_CONFIG + select BR2_PACKAGE_WESTON_SHELL_DESKTOP if !BR2_PACKAGE_WESTON_HAS_SHELL + help + Weston is the reference implementation of a Wayland + compositor, and a useful compositor in its own right. + Weston has various backends that lets it run on Linux kernel + modesetting and evdev input as well as under X11. + + http://wayland.freedesktop.org/ + +if BR2_PACKAGE_WESTON + +choice + prompt "default compositor" + +config BR2_PACKAGE_WESTON_DEFAULT_DRM + bool "drm" + select BR2_PACKAGE_WESTON_DRM + +config BR2_PACKAGE_WESTON_DEFAULT_HEADLESS + bool "headless" + select BR2_PACKAGE_WESTON_HEADLESS + +config BR2_PACKAGE_WESTON_DEFAULT_RDP + bool "rdp" + 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 + depends on BR2_PACKAGE_XORG7 # freerdp-server + select BR2_PACKAGE_WESTON_RDP + +config BR2_PACKAGE_WESTON_DEFAULT_WAYLAND + bool "wayland (nested)" + select BR2_PACKAGE_WESTON_WAYLAND + +config BR2_PACKAGE_WESTON_DEFAULT_X11 + bool "X11 (nested)" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_WESTON_X11 + +comment "X11 (nested) backend needs X.org" + depends on !BR2_PACKAGE_XORG7 + +endchoice + +config BR2_PACKAGE_WESTON_DEFAULT_COMPOSITOR + string + default "drm" if BR2_PACKAGE_WESTON_DEFAULT_DRM + default "headless" if BR2_PACKAGE_WESTON_DEFAULT_HEADLESS + default "rdp" if BR2_PACKAGE_WESTON_DEFAULT_RDP + default "wayland" if BR2_PACKAGE_WESTON_DEFAULT_WAYLAND + default "x11" if BR2_PACKAGE_WESTON_DEFAULT_X11 + +config BR2_PACKAGE_WESTON_DRM + bool "DRM compositor" + +# FreeRDP needs threads and !static, already the case for weston +config BR2_PACKAGE_WESTON_RDP + bool "RDP compositor" + 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 + depends on BR2_PACKAGE_XORG7 # freerdp-server + select BR2_PACKAGE_FREERDP + select BR2_PACKAGE_FREERDP_SERVER + help + This enables the RDP backend, which allows accessing weston + through the network with any RDP-compliant client. + + Please note that one must pass those options to weston for RDP + to be functional: + --rdp-tls-cert=/path/to/server.crt + --rdp-tls-key=/path/to/server.key + + By default, Buildroot installs such files in + /etc/freerdp/server/ so you may want to change them in a + post-build script or a rootfs overlay. + +comment "RDP compositor needs a toolchain w/ wchar, C++, X.org" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_WESTON_HEADLESS + bool "headless (testing) compositor" + +config BR2_PACKAGE_WESTON_WAYLAND + bool "Wayland (nested) compositor" + +config BR2_PACKAGE_WESTON_X11 + bool "X11 (nested) compositor" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_LIBXCB + select BR2_PACKAGE_XLIB_LIBX11 + +comment "X11 (nested) compositor needs X.org enabled" + depends on !BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_WESTON_XWAYLAND + bool "XWayland support" + depends on BR2_PACKAGE_LIBEPOXY + depends on BR2_PACKAGE_XORG7 # xwayland + depends on BR2_USE_MMU # xwayland + depends on !BR2_STATIC_LIBS # xwayland + depends on BR2_TOOLCHAIN_HAS_THREADS # xwayland + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # xwayland -> xlib_libxshmfence + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_LIBXCB + select BR2_PACKAGE_XCB_UTIL_CURSOR + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXCURSOR + select BR2_PACKAGE_XWAYLAND + +comment "XWayland support needs libepoxy and X.org enabled" + depends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_LIBEPOXY + +comment "XWayland support needs a 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 + +# Weston needs at least one shell; this can be one of the bundled ones, +# below, of from a third-party package, which should then select this. +config BR2_PACKAGE_WESTON_HAS_SHELL + bool + +config BR2_PACKAGE_WESTON_SHELL_DESKTOP + bool "desktop shell" + default y + +config BR2_PACKAGE_WESTON_SHELL_FULLSCREEN + bool "fullscreen shell" + default y + select BR2_PACKAGE_WESTON_HAS_SHELL + +config BR2_PACKAGE_WESTON_SHELL_IVI + bool "ivi shell" + default y + select BR2_PACKAGE_WESTON_HAS_SHELL + +config BR2_PACKAGE_WESTON_SHELL_KIOSK + bool "kiosk shell" + default y + select BR2_PACKAGE_WESTON_HAS_SHELL + +config BR2_PACKAGE_WESTON_SCREENSHARE + bool "screenshare" + default y + +config BR2_PACKAGE_WESTON_SIMPLE_CLIENTS + bool "simple clients" + help + Simple clients includes application such as: + damage, dmabuf-feedback, dmabuf-egl, dmabuf-v4l, egl + + In the target filesystem, simple client program binaries are + prefixed with "weston-simple-". + + Note: Weston has two sets of clients. See also the weston + "demo clients" option. + +config BR2_PACKAGE_WESTON_DEMO_CLIENTS + bool "demo clients" + depends on BR2_USE_MMU # pango + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # pango + depends on BR2_INSTALL_LIBSTDCPP # pango + depends on BR2_TOOLCHAIN_HAS_THREADS # pango + depends on BR2_USE_WCHAR # pango + depends on BR2_PACKAGE_HAS_LIBGLES + depends on BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_PANGO + help + This enables the installation of Weston's demo clients. + + Demo clients includes application such as: + clickdot, confine, content_protection, dnd, editor, + eventdemo, flower, fullscreen, image, multi-resource, + presentation-shm, resizor, scaler, smoke, stacking, + subsurfaces, tablet, transformed... + + In the target filesystem, demo client program binaries are + prefixed with "weston-". + + Note: Weston has two sets of clients. See also the weston + "simple clients" option. + +comment "demo clients needs an OpenGL ES/EGL provider and a toolchain w/ wchar, threads, C++, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_USE_WCHAR || !BR2_PACKAGE_HAS_LIBGLES || \ + !BR2_PACKAGE_HAS_LIBEGL || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +endif diff --git a/package/weston/weston.hash b/package/weston/weston.hash new file mode 100644 index 00000000..62322ac6 --- /dev/null +++ b/package/weston/weston.hash @@ -0,0 +1,4 @@ +# From https://lists.freedesktop.org/archives/wayland-devel/2024-June/043655.html +sha256 27f68d96e3b97d98daadef13a202356524924fa381418fa6716b9136ef099093 weston-13.0.3.tar.xz +sha512 60e655b57cf418902ec6e4371883354165241d9a99a712aabe2165e11ac190dec22836fd885f5178def5416dc5f00e70042b022c96a8e0aa74827bbd4563f9cb weston-13.0.3.tar.xz +sha256 fdb65868f65d0fbdb05c2d3b779e10ce9969fa0c4b9262ba4f260e87086ab860 COPYING diff --git a/package/weston/weston.mk b/package/weston/weston.mk new file mode 100644 index 00000000..9292ba14 --- /dev/null +++ b/package/weston/weston.mk @@ -0,0 +1,180 @@ +################################################################################ +# +# weston +# +################################################################################ + +WESTON_VERSION = 13.0.3 +WESTON_SITE = https://gitlab.freedesktop.org/wayland/weston/-/releases/$(WESTON_VERSION)/downloads +WESTON_SOURCE = weston-$(WESTON_VERSION).tar.xz +WESTON_LICENSE = MIT +WESTON_LICENSE_FILES = COPYING +WESTON_CPE_ID_VENDOR = wayland +WESTON_INSTALL_STAGING = YES + +WESTON_DEPENDENCIES = host-pkgconf wayland wayland-protocols \ + libxkbcommon pixman libpng udev cairo libinput libdrm seatd + +WESTON_CONF_OPTS = \ + -Ddoc=false \ + -Dremoting=false \ + -Dbackend-vnc=false \ + -Dtools=calibrator,debug,info,terminal,touch-calibrator + +ifeq ($(BR2_PACKAGE_WESTON_SIMPLE_CLIENTS),y) +# Note: some clients are conditional, see further for the others. +WESTON_SIMPLE_CLIENTS = \ + damage \ + im \ + shm \ + touch + +ifeq ($(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8),y) +# dmabuf-v4l uses VIDIOC_EXPBUF, only available from 3.8+ +WESTON_SIMPLE_CLIENTS += dmabuf-v4l +endif +endif # BR2_PACKAGE_WESTON_SIMPLE_CLIENTS + +ifeq ($(BR2_PACKAGE_JPEG),y) +WESTON_CONF_OPTS += -Dimage-jpeg=true +WESTON_DEPENDENCIES += jpeg +else +WESTON_CONF_OPTS += -Dimage-jpeg=false +endif + +ifeq ($(BR2_PACKAGE_WEBP),y) +WESTON_CONF_OPTS += -Dimage-webp=true +WESTON_DEPENDENCIES += webp +else +WESTON_CONF_OPTS += -Dimage-webp=false +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBEGL)$(BR2_PACKAGE_HAS_LIBGBM)$(BR2_PACKAGE_HAS_LIBGLES),yyy) +WESTON_CONF_OPTS += -Drenderer-gl=true +WESTON_DEPENDENCIES += libegl libgbm libgles +ifeq ($(BR2_PACKAGE_WESTON_SIMPLE_CLIENTS),y) +WESTON_SIMPLE_CLIENTS += dmabuf-egl dmabuf-feedback egl +endif +ifeq ($(BR2_PACKAGE_PIPEWIRE)$(BR2_PACKAGE_WESTON_DRM),yy) +WESTON_CONF_OPTS += -Dpipewire=true -Dbackend-pipewire=true +WESTON_DEPENDENCIES += pipewire +else +WESTON_CONF_OPTS += -Dpipewire=false -Dbackend-pipewire=false +endif +else +WESTON_CONF_OPTS += \ + -Drenderer-gl=false \ + -Dpipewire=false \ + -Dbackend-pipewire=false +endif + +WESTON_CONF_OPTS += -Dsimple-clients=$(subst $(space),$(comma),$(strip $(WESTON_SIMPLE_CLIENTS))) + +ifeq ($(BR2_PACKAGE_WESTON_RDP),y) +WESTON_DEPENDENCIES += freerdp +WESTON_CONF_OPTS += -Dbackend-rdp=true +else +WESTON_CONF_OPTS += -Dbackend-rdp=false +endif + +ifeq ($(BR2_PACKAGE_WESTON_DRM),y) +WESTON_CONF_OPTS += -Dbackend-drm=true +else +WESTON_CONF_OPTS += -Dbackend-drm=false +endif + +ifeq ($(BR2_PACKAGE_WESTON_HEADLESS),y) +WESTON_CONF_OPTS += -Dbackend-headless=true +else +WESTON_CONF_OPTS += -Dbackend-headless=false +endif + +ifeq ($(BR2_PACKAGE_WESTON_WAYLAND),y) +WESTON_CONF_OPTS += -Dbackend-wayland=true +else +WESTON_CONF_OPTS += -Dbackend-wayland=false +endif + +ifeq ($(BR2_PACKAGE_WESTON_X11),y) +WESTON_CONF_OPTS += -Dbackend-x11=true +WESTON_DEPENDENCIES += libxcb xlib_libX11 +else +WESTON_CONF_OPTS += -Dbackend-x11=false +endif + +# We're guaranteed to have at least one backend +WESTON_CONF_OPTS += -Dbackend-default=$(call qstrip,$(BR2_PACKAGE_WESTON_DEFAULT_COMPOSITOR)) + +ifeq ($(BR2_PACKAGE_WESTON_XWAYLAND),y) +WESTON_CONF_OPTS += -Dxwayland=true +WESTON_DEPENDENCIES += cairo libepoxy libxcb xcb-util-cursor xlib_libX11 xlib_libXcursor xwayland +else +WESTON_CONF_OPTS += -Dxwayland=false +endif + +ifeq ($(BR2_PACKAGE_LIBVA),y) +WESTON_CONF_OPTS += -Dbackend-drm-screencast-vaapi=true +WESTON_DEPENDENCIES += libva +else +WESTON_CONF_OPTS += -Dbackend-drm-screencast-vaapi=false +endif + +ifeq ($(BR2_PACKAGE_LCMS2),y) +WESTON_CONF_OPTS += -Dcolor-management-lcms=true +WESTON_DEPENDENCIES += lcms2 +else +WESTON_CONF_OPTS += -Dcolor-management-lcms=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +WESTON_CONF_OPTS += -Dsystemd=true +WESTON_DEPENDENCIES += systemd +else +WESTON_CONF_OPTS += -Dsystemd=false +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +WESTON_CONF_OPTS += -Dtest-junit-xml=true +WESTON_DEPENDENCIES += libxml2 +else +WESTON_CONF_OPTS += -Dtest-junit-xml=false +endif + +ifeq ($(BR2_PACKAGE_WESTON_SHELL_DESKTOP),y) +WESTON_CONF_OPTS += -Dshell-desktop=true +else +WESTON_CONF_OPTS += -Dshell-desktop=false +endif + +ifeq ($(BR2_PACKAGE_WESTON_SHELL_FULLSCREEN),y) +WESTON_CONF_OPTS += -Dshell-fullscreen=true +else +WESTON_CONF_OPTS += -Dshell-fullscreen=false +endif + +ifeq ($(BR2_PACKAGE_WESTON_SHELL_IVI),y) +WESTON_CONF_OPTS += -Dshell-ivi=true +else +WESTON_CONF_OPTS += -Dshell-ivi=false +endif + +ifeq ($(BR2_PACKAGE_WESTON_SHELL_KIOSK),y) +WESTON_CONF_OPTS += -Dshell-kiosk=true +else +WESTON_CONF_OPTS += -Dshell-kiosk=false +endif + +ifeq ($(BR2_PACKAGE_WESTON_SCREENSHARE),y) +WESTON_CONF_OPTS += -Dscreenshare=true +else +WESTON_CONF_OPTS += -Dscreenshare=false +endif + +ifeq ($(BR2_PACKAGE_WESTON_DEMO_CLIENTS),y) +WESTON_CONF_OPTS += -Ddemo-clients=true +WESTON_DEPENDENCIES += pango +else +WESTON_CONF_OPTS += -Ddemo-clients=false +endif + +$(eval $(meson-package)) diff --git a/package/wf111/Config.in b/package/wf111/Config.in new file mode 100644 index 00000000..bb4b1a5d --- /dev/null +++ b/package/wf111/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_WF111 + bool "wf111" + depends on BR2_LINUX_KERNEL + depends on BR2_ARM_CPU_ARMV5 || BR2_ARM_CPU_ARMV7A || BR2_i386 + # Binary tools are distributed alongside the driver, and are + # dynamically linked against the glibc. + depends on BR2_TOOLCHAIN_USES_GLIBC + help + Silicon Labs WF111 WiFi driver and utilities. + + Warning: CONFIG_WIRELESS_EXT and CONFIG_WEXT_PRIV must be + selected in the Linux kernel configuration. These are blind + options (i.e. not selectable directly) so they cannot be + enabled by a change in linux/linux.mk. There are two choices + to enable these options: + - By making them non blind, with a "WF111 support" + configuration entry that selects them, for example. + - By enabling another random WiFi driver that select them. + + https://www.silabs.com/wireless/wi-fi/bluegiga-legacy-modules/device.wf111 + +comment "wf111 needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + depends on BR2_ARM_CPU_ARMV5 || BR2_ARM_CPU_ARMV7A || BR2_i386 + +comment "wf111 needs a glibc toolchain" + depends on BR2_LINUX_KERNEL + depends on BR2_ARM_CPU_ARMV5 || BR2_ARM_CPU_ARMV7A || BR2_i386 + depends on !BR2_TOOLCHAIN_USES_GLIBC diff --git a/package/wf111/wf111.hash b/package/wf111/wf111.hash new file mode 100644 index 00000000..604ce79e --- /dev/null +++ b/package/wf111/wf111.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 33de265d28702ce32bb292f29a43e9e946382a1e31f1e4feae0f4753cf18b4f4 wf111-linux-driver_5.2.2-r4_armv7-a.tar.gz +sha256 fbe86a30e4025b9f510feb4cb8f846aca82f8f3e8f6c8a28a74baf45c87f6e96 wf111-linux-driver_5.2.2-r4_armv5te.tar.gz +sha256 37983d73f60bab9768eb02a89695448f27cd1964e23cf462e76657344a9c67ac wf111-linux-driver-5-2-2-r3-x86.tar.gz diff --git a/package/wf111/wf111.mk b/package/wf111/wf111.mk new file mode 100644 index 00000000..fd9cb196 --- /dev/null +++ b/package/wf111/wf111.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# wf111 +# +################################################################################ + +ifeq ($(BR2_ARM_CPU_ARMV7A)$(BR2_ARM_CPU_ARMV5),y) +WF111_VERSION = 5.2.2-r4 +else +WF111_VERSION = 5-2-2-r3 +endif + +WF111_SITE = https://www.silabs.com/documents/login/software +WF111_DEPENDENCIES = linux + +ifeq ($(BR2_ARM_CPU_ARMV7A),y) +WF111_SOURCE = wf111-linux-driver_$(WF111_VERSION)_armv7-a.tar.gz +else ifeq ($(BR2_ARM_CPU_ARMV5),y) +WF111_SOURCE = wf111-linux-driver_$(WF111_VERSION)_armv5te.tar.gz +else ifeq ($(BR2_i386),y) +WF111_SOURCE = wf111-linux-driver-$(WF111_VERSION)-x86.tar.gz +endif + +# Due to the stupidity of the package Makefile, we can't invoke +# 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 + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PWD=$(@D) \ + $(LINUX_MAKE_FLAGS) KDIR=$(LINUX_DIR) \ + OUTPUT=$(TARGET_DIR) install_static +endef + +$(eval $(generic-package)) diff --git a/package/wget/0001-lib-getrandom.c-fix-build-with-uclibc-1.0.35.patch b/package/wget/0001-lib-getrandom.c-fix-build-with-uclibc-1.0.35.patch new file mode 100644 index 00000000..dd4b01f1 --- /dev/null +++ b/package/wget/0001-lib-getrandom.c-fix-build-with-uclibc-1.0.35.patch @@ -0,0 +1,46 @@ +From a0594387565e1e6b4a8a8ba04ad13b135cc1f0b5 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 1 Apr 2021 07:49:46 +0200 +Subject: [PATCH] lib/getrandom.c: fix build with uclibc < 1.0.35 + +Fix the following build failure with uclibc < 1.0.35 which is raised +since the addition of getrandom module in +https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=682cc4e678aceff32dea2a84b6e5147bdf5a20a7: + +In file included from ./sys/random.h:40, + from getrandom.c:22: +/home/fabrice/buildroot/output/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:27:35: error: unknown type name 'size_t' + 27 | extern int getrandom(void *__buf, size_t count, unsigned int flags) + | ^~~~~~ +/home/fabrice/buildroot/output/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:8:1: note: 'size_t' is defined in header ''; did you forget to '#include '? + 7 | #include + +++ |+#include + 8 | + +This patch is not upstreamable as it is only a workaround for +uclibc < 1.0.35, upstream uclibc has been patched with +https://github.com/wbx-github/uclibc-ng/commit/00972c02c2b6e0a95d5def4a71bdfb188e091782 + +Fixes: + - http://autobuild.buildroot.org/results/d507f8d8ae4dd6aac1e83b7cc81017caf0d2c30e + +Signed-off-by: Fabrice Fontaine +--- + lib/getrandom.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/lib/getrandom.c b/lib/getrandom.c +index 41212fb32..0ad3f9648 100644 +--- a/lib/getrandom.c ++++ b/lib/getrandom.c +@@ -19,6 +19,7 @@ + + #include + ++#include + #include + + #include +-- +2.30.2 + diff --git a/package/wget/Config.in b/package/wget/Config.in new file mode 100644 index 00000000..ba03a75e --- /dev/null +++ b/package/wget/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_WGET + bool "wget" + # fork() + depends on BR2_USE_MMU + depends on BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4 if BR2_PACKAGE_LIBOPENSSL + help + Network utility to retrieve files from http, https and ftp. + + http://www.gnu.org/software/wget/ + +comment "wget needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/package/wget/wget.hash b/package/wget/wget.hash new file mode 100644 index 00000000..75c3a913 --- /dev/null +++ b/package/wget/wget.hash @@ -0,0 +1,8 @@ +# From https://lists.gnu.org/archive/html/bug-wget/2023-05/msg00004.html +sha1 42384273c1937458c9db3766a5509afa636a2f00 wget-1.21.4.tar.lz +# Locally calculated after checking pgp signature +# https://ftp.gnu.org/gnu/wget/wget-1.21.4.tar.lz.sig +# with key 6B98F637D879C5236E277C5C64FF90AAE8C70AF9 +sha256 3683619a5f50edcbccb1720a79006fa37bf9b9a255a8c5b48048bc3c7a874bd9 wget-1.21.4.tar.lz +# Locally calculated +sha256 f7dc7522e7e1be9227f3dc8de8b39a4d1d2471968c893af15f00c1a2076a0eec COPYING diff --git a/package/wget/wget.mk b/package/wget/wget.mk new file mode 100644 index 00000000..d2d30879 --- /dev/null +++ b/package/wget/wget.mk @@ -0,0 +1,75 @@ +################################################################################ +# +# wget +# +################################################################################ + +WGET_VERSION = 1.21.4 +WGET_SOURCE = wget-$(WGET_VERSION).tar.lz +WGET_SITE = $(BR2_GNU_MIRROR)/wget +WGET_DEPENDENCIES = host-pkgconf +WGET_LICENSE = GPL-3.0+ +WGET_LICENSE_FILES = COPYING +WGET_CPE_ID_VENDOR = gnu + +ifeq ($(BR2_PACKAGE_LIBPSL),y) +WGET_CONF_OPTS += --with-libpsl +WGET_DEPENDENCIES += libpsl +else +WGET_CONF_OPTS += --without-libpsl +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +WGET_CONF_OPTS += --with-ssl=gnutls +WGET_DEPENDENCIES += gnutls +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_LIBICONV),y) +WGET_DEPENDENCIES += libiconv +endif + +# BR2_ENABLE_LOCALE and BR2_PACKAGE_LIBICONV are mutually exclusive +ifeq ($(BR2_ENABLE_LOCALE)$(BR2_PACKAGE_LIBICONV)$(BR2_PACKAGE_LIBIDN2),yy) +WGET_CONF_OPTS += --enable-iri +WGET_DEPENDENCIES += libidn2 +else +WGET_CONF_OPTS += --disable-iri +endif + +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y) +WGET_CONF_OPTS += --with-libuuid +WGET_DEPENDENCIES += util-linux +else +WGET_CONF_OPTS += --without-libuuid +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +WGET_CONF_OPTS += --with-zlib +WGET_DEPENDENCIES += zlib +else +WGET_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_C_ARES),y) +WGET_CONF_OPTS += --with-cares +WGET_DEPENDENCIES += c-ares +else +WGET_CONF_OPTS += --without-cares +endif + +ifeq ($(BR2_PACKAGE_PCRE2),y) +WGET_CONF_OPTS += --disable-pcre --enable-pcre2 +WGET_DEPENDENCIES += pcre2 +else ifeq ($(BR2_PACKAGE_PCRE),y) +WGET_CONF_OPTS += --enable-pcre --disable-pcre2 +WGET_DEPENDENCIES += pcre +else +WGET_CONF_OPTS += --disable-pcre --disable-pcre2 +endif + +$(eval $(autotools-package)) diff --git a/package/whetstone/Config.in b/package/whetstone/Config.in new file mode 100644 index 00000000..7a68160d --- /dev/null +++ b/package/whetstone/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_WHETSTONE + bool "whetstone" + help + C Converted Whetstone Double Precision Benchmark + + http://www.netlib.org/benchmark/ diff --git a/package/whetstone/whetstone.hash b/package/whetstone/whetstone.hash new file mode 100644 index 00000000..3f1dc63f --- /dev/null +++ b/package/whetstone/whetstone.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 333e4ceca042c146f63eec605573d16ae8b07166cbc44a17bec1ea97c6f1efbf whetstone.c diff --git a/package/whetstone/whetstone.mk b/package/whetstone/whetstone.mk new file mode 100644 index 00000000..3b6ec341 --- /dev/null +++ b/package/whetstone/whetstone.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# whetstone +# +################################################################################ + +WHETSTONE_VERSION = 1.2 +WHETSTONE_SOURCE = whetstone.c +WHETSTONE_SITE = http://www.netlib.org/benchmark + +define WHETSTONE_EXTRACT_CMDS + cp $(WHETSTONE_DL_DIR)/$($(PKG)_SOURCE) $(@D)/ +endef + +define WHETSTONE_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) LDLIBS="-lm" -C $(@D) whetstone +endef + +define WHETSTONE_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/whetstone $(TARGET_DIR)/usr/bin/whetstone +endef + +$(eval $(generic-package)) diff --git a/package/which/Config.in b/package/which/Config.in new file mode 100644 index 00000000..0dc31b22 --- /dev/null +++ b/package/which/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_WHICH + bool "which" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + The standard 'which' utility. + + http://carlowood.github.io/which/index.html diff --git a/package/which/which.hash b/package/which/which.hash new file mode 100644 index 00000000..edea4e5e --- /dev/null +++ b/package/which/which.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 f4a245b94124b377d8b49646bf421f9155d36aa7614b6ebf83705d3ffc76eaad which-2.21.tar.gz +# Locally computed +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/which/which.mk b/package/which/which.mk new file mode 100644 index 00000000..c96e8937 --- /dev/null +++ b/package/which/which.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# which +# +################################################################################ + +WHICH_VERSION = 2.21 +WHICH_SITE = $(BR2_GNU_MIRROR)/which +WHICH_LICENSE = GPL-3.0+ +WHICH_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/package/whois/Config.in b/package/whois/Config.in new file mode 100644 index 00000000..19c22b55 --- /dev/null +++ b/package/whois/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_WHOIS + bool "whois" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + Improved whois client. + + https://github.com/rfc1036/whois diff --git a/package/whois/whois.hash b/package/whois/whois.hash new file mode 100644 index 00000000..fb140fa1 --- /dev/null +++ b/package/whois/whois.hash @@ -0,0 +1,5 @@ +# From http://snapshot.debian.org/archive/debian/20221017T031443Z/pool/main/w/whois/whois_5.5.14.dsc +sha256 bf9c2cb307d5419b34ad401eecf2820b8f69660db41cf0762e5da71fa2df68e8 whois_5.5.14.tar.xz + +# Hash for license file: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/whois/whois.mk b/package/whois/whois.mk new file mode 100644 index 00000000..e98add4e --- /dev/null +++ b/package/whois/whois.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# whois +# +################################################################################ + +WHOIS_VERSION = 5.5.14 +WHOIS_SITE = http://snapshot.debian.org/archive/debian/20221017T031443Z/pool/main/w/whois +WHOIS_SOURCE = whois_$(WHOIS_VERSION).tar.xz +WHOIS_DEPENDENCIES = \ + host-pkgconf \ + $(if $(BR2_PACKAGE_LIBIDN2),libidn2) \ + $(if $(BR2_PACKAGE_LIBXCRYPT),libxcrypt) \ + $(TARGET_NLS_DEPENDENCIES) +WHOIS_MAKE_ENV = $(TARGET_MAKE_ENV) +WHOIS_MAKE_OPTS = CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" \ + LIBS="$(WHOIS_EXTRA_LIBS)" +WHOIS_LICENSE = GPL-2.0+ +WHOIS_LICENSE_FILES = COPYING +WHOIS_EXTRA_LIBS = $(TARGET_NLS_LIBS) + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +WHOIS_DEPENDENCIES += libiconv +WHOIS_EXTRA_LIBS += -liconv +WHOIS_MAKE_ENV += HAVE_ICONV=1 +endif + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +WHOIS_BUILD_TARGETS = +WHOIS_INSTALL_TARGETS = install +else +WHOIS_BUILD_TARGETS = Makefile.depend whois mkpasswd +WHOIS_INSTALL_TARGETS = install-whois install-mkpasswd +endif + +define WHOIS_BUILD_CMDS + $(WHOIS_MAKE_ENV) $(MAKE) $(WHOIS_MAKE_OPTS) \ + $(WHOIS_BUILD_TARGETS) -C $(@D) +endef + +define WHOIS_INSTALL_TARGET_CMDS + $(WHOIS_MAKE_ENV) $(MAKE) $(WHOIS_MAKE_OPTS) \ + BASEDIR="$(TARGET_DIR)" $(WHOIS_INSTALL_TARGETS) -C $(@D) +endef + +$(eval $(generic-package)) diff --git a/package/wilc-driver/0001-cfg80211.c-fix-missing-prandom_u32-with-Linux-6.1.0.patch b/package/wilc-driver/0001-cfg80211.c-fix-missing-prandom_u32-with-Linux-6.1.0.patch new file mode 100644 index 00000000..2f106273 --- /dev/null +++ b/package/wilc-driver/0001-cfg80211.c-fix-missing-prandom_u32-with-Linux-6.1.0.patch @@ -0,0 +1,34 @@ +From f80e4343fa0a4d8b22933d1704c85a771fe234a4 Mon Sep 17 00:00:00 2001 +From: Giulio Benetti +Date: Wed, 28 Dec 2022 19:56:46 +0100 +Subject: [PATCH] cfg80211.c: fix missing prandom_u32() with Linux >= 6.1.0 + +prandom_u32() previously was only calling get_random_u32() so it's been +dropped with Linux 6.1.0. So let's directly call get_random_u32() if Linux +version >= 6.1.0. + +[Upstream status: https://github.com/embeddedTS/wilc3000-external-module/pull/2] +Signed-off-by: Giulio Benetti +--- + cfg80211.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/cfg80211.c b/cfg80211.c +index 016aa06..41edd02 100644 +--- a/cfg80211.c ++++ b/cfg80211.c +@@ -1422,7 +1422,11 @@ static int mgmt_tx(struct wiphy *wiphy, + const u8 *vendor_ie; + int ret = 0; + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)) ++ *cookie = get_random_u32(); ++#else + *cookie = prandom_u32(); ++#endif + priv->tx_cookie = *cookie; + mgmt = (const struct ieee80211_mgmt *)buf; + +-- +2.34.1 + diff --git a/package/wilc-driver/0002-spi.c-fix-build-failure-on-remove-callback.patch b/package/wilc-driver/0002-spi.c-fix-build-failure-on-remove-callback.patch new file mode 100644 index 00000000..87306dfa --- /dev/null +++ b/package/wilc-driver/0002-spi.c-fix-build-failure-on-remove-callback.patch @@ -0,0 +1,44 @@ +From a88819bd63f977b5a33d72a2b9e264ce104726bd Mon Sep 17 00:00:00 2001 +From: Giulio Benetti +Date: Wed, 28 Dec 2022 21:02:12 +0100 +Subject: [PATCH] spi.c: fix build failure on remove callback + +Starting from Linux 5.18 remove callback returns void, so let's deal with +it depending on Linux version >= 5.18. + +[Upstream status: https://github.com/embeddedTS/wilc3000-external-module/pull/2] +Signed-off-by: Giulio Benetti +--- + spi.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/spi.c b/spi.c +index 96c51fe..f7b43e2 100644 +--- a/spi.c ++++ b/spi.c +@@ -211,7 +211,11 @@ free: + return ret; + } + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,18,0)) ++static void wilc_bus_remove(struct spi_device *spi) ++#else + static int wilc_bus_remove(struct spi_device *spi) ++#endif + { + struct wilc *wilc = spi_get_drvdata(spi); + +@@ -220,7 +224,10 @@ static int wilc_bus_remove(struct spi_device *spi) + + wilc_netdev_cleanup(wilc); + wilc_bt_deinit(); ++ ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,18,0)) + return 0; ++#endif + } + + static int wilc_spi_suspend(struct device *dev) +-- +2.34.1 + diff --git a/package/wilc-driver/0003-cfg80211.c-fix-build-failure-with-Linux-5.19-and-6.1.patch b/package/wilc-driver/0003-cfg80211.c-fix-build-failure-with-Linux-5.19-and-6.1.patch new file mode 100644 index 00000000..785b8904 --- /dev/null +++ b/package/wilc-driver/0003-cfg80211.c-fix-build-failure-with-Linux-5.19-and-6.1.patch @@ -0,0 +1,98 @@ +From a608cdd7903505217529317c04b5b58cb7e25081 Mon Sep 17 00:00:00 2001 +From: Giulio Benetti +Date: Wed, 28 Dec 2022 21:06:43 +0100 +Subject: [PATCH] cfg80211.c: fix build failure with Linux 5.19 and 6.1 + +Starting from Linux 5.19 stop_ap() requires unsigned int link_id as +parameter. Then from Linux 6.1 on lot of other cfg80211 APIs require +int link_id to deal with MLO, so let's add that parameter too. + +[Upstream status: https://github.com/embeddedTS/wilc3000-external-module/pull/2] +Signed-off-by: Giulio Benetti +--- + cfg80211.c | 35 +++++++++++++++++++++++++++++------ + 1 file changed, 29 insertions(+), 6 deletions(-) + +diff --git a/cfg80211.c b/cfg80211.c +index 41edd02..57c777d 100644 +--- a/cfg80211.c ++++ b/cfg80211.c +@@ -674,8 +674,12 @@ static int wilc_wfi_cfg_copy_wpa_info(struct wilc_wfi_key *key_info, + return 0; + } + +-static int add_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index, +- bool pairwise, const u8 *mac_addr, struct key_params *params) ++static int add_key(struct wiphy *wiphy, struct net_device *netdev, ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6,1,0)) ++ int link_id, ++#endif ++ u8 key_index, bool pairwise, const u8 *mac_addr, ++ struct key_params *params) + + { + int ret = 0, keylen = params->key_len, seqlen = params->seq_len; +@@ -792,6 +796,9 @@ static int add_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index, + } + + static int del_key(struct wiphy *wiphy, struct net_device *netdev, ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6,1,0)) ++ int link_id, ++#endif + u8 key_index, + bool pairwise, + const u8 *mac_addr) +@@ -833,9 +840,13 @@ static int del_key(struct wiphy *wiphy, struct net_device *netdev, + return ret; + } + +-static int get_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index, +- bool pairwise, const u8 *mac_addr, void *cookie, +- void (*callback)(void *cookie, struct key_params *)) ++static int get_key(struct wiphy *wiphy, struct net_device *netdev, ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6,1,0)) ++ int link_id, ++#endif ++ u8 key_index, bool pairwise, const u8 *mac_addr, ++ void *cookie, void (*callback)(void *cookie, ++ struct key_params *)) + { + struct wilc_vif *vif = netdev_priv(netdev); + struct wilc_priv *priv = &vif->priv; +@@ -877,12 +888,18 @@ static int get_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index, + + /* wiphy_new() will WARN if not present*/ + static int set_default_key(struct wiphy *wiphy, struct net_device *netdev, ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6,1,0)) ++ int link_id, ++#endif + u8 key_index, bool unicast, bool multicast) + { + return 0; + } + + static int set_default_mgmt_key (struct wiphy *wiphy,struct net_device *netdev, ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6,1,0)) ++ int link_id, ++#endif + u8 key_index) + { + return 0; +@@ -1814,7 +1831,13 @@ static int change_beacon(struct wiphy *wiphy, struct net_device *dev, + return wilc_add_beacon(vif, 0, 0, beacon); + } + +-static int stop_ap(struct wiphy *wiphy, struct net_device *dev) ++static int stop_ap(struct wiphy *wiphy, struct net_device *dev ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,19,0)) ++ , unsigned int link_id ++#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(6,1,0)) ++ , int link_id ++#endif ++ ) + { + int ret; + struct wilc_vif *vif = netdev_priv(dev); +-- +2.34.1 + diff --git a/package/wilc-driver/0004-Fix-struct-station_parameters-Linux-6.1-build-failur.patch b/package/wilc-driver/0004-Fix-struct-station_parameters-Linux-6.1-build-failur.patch new file mode 100644 index 00000000..faee805b --- /dev/null +++ b/package/wilc-driver/0004-Fix-struct-station_parameters-Linux-6.1-build-failur.patch @@ -0,0 +1,216 @@ +From 5f022c4d3be32493d500be82f51032ef4fb3cdc0 Mon Sep 17 00:00:00 2001 +From: Giulio Benetti +Date: Wed, 28 Dec 2022 21:08:45 +0100 +Subject: [PATCH] Fix struct station_parameters Linux 6.1 build failure + +Starting from Linux 6.1 struct station_parameters has changed by moving +some member to its child struct link_station_parameters. Let's extract the +values of the needed members into local values at the beginning of +functions and substitute the member access with the local variables. + +[Upstream status: https://github.com/embeddedTS/wilc3000-external-module/pull/2] +Signed-off-by: Giulio Benetti +--- + cfg80211.c | 48 ++++++++++++++++++++++++++++++++---------------- + hif.c | 44 ++++++++++++++++++++++++++++++++------------ + 2 files changed, 64 insertions(+), 28 deletions(-) + +diff --git a/cfg80211.c b/cfg80211.c +index 57c777d..bdd480c 100644 +--- a/cfg80211.c ++++ b/cfg80211.c +@@ -1866,6 +1866,14 @@ static int add_station(struct wiphy *wiphy, struct net_device *dev, + struct wilc_vif *vif = netdev_priv(dev); + struct wilc_priv *priv = &vif->priv; + u8 *assoc_bss = priv->assoc_stainfo.sta_associated_bss[params->aid]; ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)) ++ struct link_station_parameters *link_sta_params = ¶ms->link_sta_params; ++ const struct ieee80211_ht_cap *ht_capa = link_sta_params->ht_capa; ++ u8 supported_rates_len = link_sta_params->supported_rates_len; ++#else ++ const struct ieee80211_ht_cap *ht_capa = params->ht_capa; ++ u8 supported_rates_len = params->supported_rates_len; ++#endif + + if (vif->iftype == WILC_AP_MODE || vif->iftype == WILC_GO_MODE) { + memcpy(assoc_bss, mac, ETH_ALEN); +@@ -1879,27 +1887,27 @@ static int add_station(struct wiphy *wiphy, struct net_device *dev, + params->aid); + PRINT_INFO(vif->ndev, HOSTAPD_DBG, + "Number of supported rates = %d\n", +- params->supported_rates_len); ++ supported_rates_len); + + PRINT_INFO(vif->ndev, CFG80211_DBG, "IS HT supported = %d\n", +- (!params->ht_capa) ? false : true); ++ (!ht_capa) ? false : true); + +- if (params->ht_capa) { ++ if (ht_capa) { + PRINT_INFO(vif->ndev, CFG80211_DBG, + "Capability Info = %d\n", +- params->ht_capa->cap_info); ++ ht_capa->cap_info); + PRINT_INFO(vif->ndev, CFG80211_DBG, + "AMPDU Params = %d\n", +- params->ht_capa->ampdu_params_info); ++ ht_capa->ampdu_params_info); + PRINT_INFO(vif->ndev, CFG80211_DBG, + "HT Extended params= %d\n", +- params->ht_capa->extended_ht_cap_info); ++ ht_capa->extended_ht_cap_info); + PRINT_INFO(vif->ndev, CFG80211_DBG, + "Tx Beamforming Cap= %d\n", +- params->ht_capa->tx_BF_cap_info); ++ ht_capa->tx_BF_cap_info); + PRINT_INFO(vif->ndev, CFG80211_DBG, + "Antenna selection info = %d\n", +- params->ht_capa->antenna_selection_info); ++ ht_capa->antenna_selection_info); + } + + PRINT_INFO(vif->ndev, CFG80211_DBG, "Flag Mask = %d\n", +@@ -1966,6 +1974,14 @@ static int change_station(struct wiphy *wiphy, struct net_device *dev, + { + int ret = 0; + struct wilc_vif *vif = netdev_priv(dev); ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)) ++ struct link_station_parameters *link_sta_params = ¶ms->link_sta_params; ++ const struct ieee80211_ht_cap *ht_capa = link_sta_params->ht_capa; ++ u8 supported_rates_len = link_sta_params->supported_rates_len; ++#else ++ const struct ieee80211_ht_cap *ht_capa = params->ht_capa; ++ u8 supported_rates_len = params->supported_rates_len; ++#endif + + PRINT_D(vif->ndev, CFG80211_DBG, "Change station parameters\n"); + +@@ -1976,25 +1992,25 @@ static int change_station(struct wiphy *wiphy, struct net_device *dev, + params->aid); + PRINT_INFO(vif->ndev, CFG80211_DBG, + "Number of supported rates = %d\n", +- params->supported_rates_len); ++ supported_rates_len); + PRINT_INFO(vif->ndev, CFG80211_DBG, "IS HT supported = %d\n", +- (!params->ht_capa) ? false : true); +- if (params->ht_capa) { ++ (!ht_capa) ? false : true); ++ if (ht_capa) { + PRINT_INFO(vif->ndev, CFG80211_DBG, + "Capability Info = %d\n", +- params->ht_capa->cap_info); ++ ht_capa->cap_info); + PRINT_INFO(vif->ndev, CFG80211_DBG, + "AMPDU Params = %d\n", +- params->ht_capa->ampdu_params_info); ++ ht_capa->ampdu_params_info); + PRINT_INFO(vif->ndev, CFG80211_DBG, + "HT Extended params= %d\n", +- params->ht_capa->extended_ht_cap_info); ++ ht_capa->extended_ht_cap_info); + PRINT_INFO(vif->ndev, CFG80211_DBG, + "Tx Beamforming Cap= %d\n", +- params->ht_capa->tx_BF_cap_info); ++ ht_capa->tx_BF_cap_info); + PRINT_INFO(vif->ndev, CFG80211_DBG, + "Antenna selection info = %d\n", +- params->ht_capa->antenna_selection_info); ++ ht_capa->antenna_selection_info); + } + PRINT_INFO(vif->ndev, CFG80211_DBG, "Flag Mask = %d\n", + params->sta_flags_mask); +diff --git a/hif.c b/hif.c +index 3f672a0..1a7365b 100644 +--- a/hif.c ++++ b/hif.c +@@ -2249,6 +2249,16 @@ int wilc_add_station(struct wilc_vif *vif, const u8 *mac, + int result; + struct host_if_msg *msg; + struct add_sta_param *sta_params; ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)) ++ struct link_station_parameters *link_sta_params = ¶ms->link_sta_params; ++ const struct ieee80211_ht_cap *ht_capa = link_sta_params->ht_capa; ++ u8 supported_rates_len = link_sta_params->supported_rates_len; ++ const u8 *supported_rates = link_sta_params->supported_rates; ++#else ++ const struct ieee80211_ht_cap *ht_capa = params->ht_capa; ++ u8 supported_rates_len = params->supported_rates_len; ++ const u8 *supported_rates = params->supported_rates; ++#endif + + PRINT_INFO(vif->ndev, HOSTINF_DBG, + "Setting adding station message queue params\n"); +@@ -2260,20 +2270,20 @@ int wilc_add_station(struct wilc_vif *vif, const u8 *mac, + sta_params = &msg->body.add_sta_info; + memcpy(sta_params->bssid, mac, ETH_ALEN); + sta_params->aid = params->aid; +- if (!params->ht_capa) { ++ if (!ht_capa) { + sta_params->ht_supported = false; + } else { + sta_params->ht_supported = true; +- memcpy(&sta_params->ht_capa, params->ht_capa, ++ memcpy(&sta_params->ht_capa, ht_capa, + sizeof(struct ieee80211_ht_cap)); + } + sta_params->flags_mask = params->sta_flags_mask; + sta_params->flags_set = params->sta_flags_set; + +- sta_params->supported_rates_len = params->supported_rates_len; +- if (params->supported_rates_len > 0) { +- sta_params->supported_rates = kmemdup(params->supported_rates, +- params->supported_rates_len, ++ sta_params->supported_rates_len = supported_rates_len; ++ if (supported_rates_len > 0) { ++ sta_params->supported_rates = kmemdup(supported_rates, ++ supported_rates_len, + GFP_KERNEL); + if (!sta_params->supported_rates) { + kfree(msg); +@@ -2397,6 +2407,16 @@ int wilc_edit_station(struct wilc_vif *vif, const u8 *mac, + int result; + struct host_if_msg *msg; + struct add_sta_param *sta_params; ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)) ++ struct link_station_parameters *link_sta_params = ¶ms->link_sta_params; ++ const struct ieee80211_ht_cap *ht_capa = link_sta_params->ht_capa; ++ u8 supported_rates_len = link_sta_params->supported_rates_len; ++ const u8 *supported_rates = link_sta_params->supported_rates; ++#else ++ const struct ieee80211_ht_cap *ht_capa = params->ht_capa; ++ u8 supported_rates_len = params->supported_rates_len; ++ const u8 *supported_rates = params->supported_rates; ++#endif + + PRINT_INFO(vif->ndev, HOSTINF_DBG, + "Setting editing station message queue params\n"); +@@ -2408,20 +2428,20 @@ int wilc_edit_station(struct wilc_vif *vif, const u8 *mac, + sta_params = &msg->body.edit_sta_info; + memcpy(sta_params->bssid, mac, ETH_ALEN); + sta_params->aid = params->aid; +- if (!params->ht_capa) { ++ if (!ht_capa) { + sta_params->ht_supported = false; + } else { + sta_params->ht_supported = true; +- memcpy(&sta_params->ht_capa, params->ht_capa, ++ memcpy(&sta_params->ht_capa, ht_capa, + sizeof(struct ieee80211_ht_cap)); + } + sta_params->flags_mask = params->sta_flags_mask; + sta_params->flags_set = params->sta_flags_set; + +- sta_params->supported_rates_len = params->supported_rates_len; +- if (params->supported_rates_len > 0) { +- sta_params->supported_rates = kmemdup(params->supported_rates, +- params->supported_rates_len, ++ sta_params->supported_rates_len = supported_rates_len; ++ if (supported_rates_len > 0) { ++ sta_params->supported_rates = kmemdup(supported_rates, ++ supported_rates_len, + GFP_KERNEL); + if (!sta_params->supported_rates) { + kfree(msg); +-- +2.34.1 + diff --git a/package/wilc-driver/0005-Fix-cast-warnings.patch b/package/wilc-driver/0005-Fix-cast-warnings.patch new file mode 100644 index 00000000..713a15e6 --- /dev/null +++ b/package/wilc-driver/0005-Fix-cast-warnings.patch @@ -0,0 +1,43 @@ +From ebd083223883d479b2dd6f8a0da272797f90d236 Mon Sep 17 00:00:00 2001 +From: Giulio Benetti +Date: Sat, 31 Dec 2022 18:38:33 +0100 +Subject: [PATCH] Fix cast warnings + +Signed-off-by: Giulio Benetti +--- + cfg80211.c | 2 +- + netdev.c | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/cfg80211.c b/cfg80211.c +index 016aa06..2f40c9d 100644 +--- a/cfg80211.c ++++ b/cfg80211.c +@@ -1794,7 +1794,7 @@ static int start_ap(struct wiphy *wiphy, struct net_device *dev, + if (ret != 0) + netdev_err(dev, "Error in setting channel\n"); + +- wilc_wlan_set_bssid(dev, dev->dev_addr, WILC_AP_MODE); ++ wilc_wlan_set_bssid(dev, (u8 *)dev->dev_addr, WILC_AP_MODE); + + return wilc_add_beacon(vif, settings->beacon_interval, + settings->dtim_period, &settings->beacon); +diff --git a/netdev.c b/netdev.c +index 824afea..5a1a51d 100644 +--- a/netdev.c ++++ b/netdev.c +@@ -899,9 +899,9 @@ static int wilc_mac_open(struct net_device *ndev) + vif->idx); + + if (is_valid_ether_addr(ndev->dev_addr)) +- wilc_set_mac_address(vif, ndev->dev_addr); ++ wilc_set_mac_address(vif, (u8 *)ndev->dev_addr); + else +- wilc_get_mac_address(vif, ndev->dev_addr); ++ wilc_get_mac_address(vif, (u8 *)ndev->dev_addr); + netdev_dbg(ndev, "Mac address: %pM\n", ndev->dev_addr); + + if (!is_valid_ether_addr(ndev->dev_addr)) { +-- +2.34.1 + diff --git a/package/wilc-driver/0006-Support-Linux-6.3.patch b/package/wilc-driver/0006-Support-Linux-6.3.patch new file mode 100644 index 00000000..f5a92027 --- /dev/null +++ b/package/wilc-driver/0006-Support-Linux-6.3.patch @@ -0,0 +1,43 @@ +From 14b5eccf4145e7a5afc8bc65a15f26ac691f98d8 Mon Sep 17 00:00:00 2001 +From: Giulio Benetti +Date: Wed, 27 Sep 2023 10:54:18 +0200 +Subject: [PATCH] Support Linux 6.3 + +With Linux 6.3 commit: +https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=40fc56ee608cdb20022c225ac6f1e4b7ba63f8f1 +function of_get_named_gpio_flags() has been dropped but it was only a +wrapper to call of_get_named_gpio() if the flags passed was NULL and this +is the case. So let's use of_get_named_gpio() in place of +of_get_named_gpio_flags() since of_get_named_gpio() never changed +after its adding in Linux version 3.1. + +Upstream: https://github.com/embeddedTS/wilc3000-external-module/pull/4 + +Signed-off-by: Giulio Benetti +--- + power.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/power.c b/power.c +index 6c59e0b..6ab8d63 100644 +--- a/power.c ++++ b/power.c +@@ -25,13 +25,11 @@ int wilc_of_parse_power_pins(struct wilc *wilc) + const struct wilc_power_gpios *gpios = &default_gpios[0]; + int ret; + +- power->gpios.reset = of_get_named_gpio_flags(of, "reset-gpios", 0, +- NULL); ++ power->gpios.reset = of_get_named_gpio(of, "reset-gpios", 0); + if (!gpio_is_valid(power->gpios.reset)) + power->gpios.reset = gpios->reset; + +- power->gpios.chip_en = of_get_named_gpio_flags(of, "chip_en-gpios", 0, +- NULL); ++ power->gpios.chip_en = of_get_named_gpio(of, "chip_en-gpios", 0); + if (!gpio_is_valid(power->gpios.chip_en)) + power->gpios.chip_en = gpios->chip_en; + +-- +2.34.1 + diff --git a/package/wilc-driver/0007-Support-Linux-6.4.patch b/package/wilc-driver/0007-Support-Linux-6.4.patch new file mode 100644 index 00000000..8339cc3c --- /dev/null +++ b/package/wilc-driver/0007-Support-Linux-6.4.patch @@ -0,0 +1,36 @@ +From 94fc4594659494b8c5cbdf1a719aea4d66d3398d Mon Sep 17 00:00:00 2001 +From: Giulio Benetti +Date: Wed, 27 Sep 2023 11:20:50 +0200 +Subject: [PATCH] Support Linux 6.4 + +With Linux 6.4 commit: +https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1aaba11da9aa7d7d6b52a74d45b31cac118295a1 +class_create() doesn't require first argument THIS_MODULE anymore so let's +drop first argument if Linux version >= 6.4 + +Upstream: https://github.com/embeddedTS/wilc3000-external-module/pull/5 + +Signed-off-by: Giulio Benetti +--- + bt.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/bt.c b/bt.c +index 48a5302..a752457 100644 +--- a/bt.c ++++ b/bt.c +@@ -135,7 +135,11 @@ static void wilc_bt_create_device(void) + ret = alloc_chrdev_region(&chc_dev_no, 0, 1, "atmel"); + if (ret < 0) + return; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 4, 0) ++ chc_dev_class = class_create("atmel"); ++#else + chc_dev_class = class_create(THIS_MODULE, "atmel"); ++#endif + if (IS_ERR(chc_dev_class)) { + unregister_chrdev_region(chc_dev_no, 1); + return; +-- +2.34.1 + diff --git a/package/wilc-driver/Config.in b/package/wilc-driver/Config.in new file mode 100644 index 00000000..7f970bd3 --- /dev/null +++ b/package/wilc-driver/Config.in @@ -0,0 +1,64 @@ +config BR2_PACKAGE_WILC_DRIVER + bool "wilc kernel module" + depends on !BR2_s390x + depends on BR2_LINUX_KERNEL + help + External kernel module for WILC1000/3000 devices. + + wilc kernel driver source as found in Microchip's at91-linux + kernel tree with added Kbuild file to be built as a generic + external module. + + The wilc1000 driver currently maintained in Linux kernel does + not support BLE of the WILC3000 hardware. This package is + meant to bridge that gap until Microchip can get WILC3000 + support upstream. + + Supports both SDIO and SPI modes. + + https://github.com/embeddedTS/wilc3000-external-module + +if BR2_PACKAGE_WILC_DRIVER + +config BR2_PACKAGE_WILC_DRIVER_SPI + bool "SPI" + help + This module adds support for the SPI interface of adapters + using WILC1000/3000 chipset. The WILC1000/3000 has a Serial + Peripheral Interface (SPI) that operates as an SPI slave. + This SPI interface can be used for control and for serial + I/O of 802.11 data. The SPI is a full-duplex slave + synchronous serial interface that is available immediately + following reset when pin 9 (SDIO_SPI_CFG) is tied to VDDIO. + Select this if your platform is using the SPI bus. + +config BR2_PACKAGE_WILC_DRIVER_SDIO + bool "SDIO" + help + This module adds support for the SDIO interface of adapters + using WILC1000/3000 chipset. The WILC1000/3000 SDIO is a full + speed interface. It meets SDIO card specification version 2.0. + The interface supports the 1-bit/4-bit SD transfer mode at the + clock range of 0-50 MHz. The host can use this interface to + read and write from any register within the chip as well as + configure the WILC1000/3000 for data DMA. To use this + interface, pin9 (SDIO_SPI_CFG) must be grounded. Select this + if your platform is using the SDIO bus. + +if BR2_PACKAGE_WILC_DRIVER_SDIO + +config BR2_PACKAGE_WILC_DRIVER_SDIO_OOB + bool "Enable out-of-band interrupt" + help + This option enables out-of-band interrupt support for the + WILC1000/3000 chipset. This OOB interrupt is intended to + provide a faster interrupt mechanism for SDIO host controllers + that don't support SDIO interrupt. Select this option If the + SDIO host controller in your platform doesn't support SDIO + time division interrupt. +endif +endif + +comment "wilc kernel module needs a Linux kernel to be built" + depends on !BR2_s390x + depends on !BR2_LINUX_KERNEL diff --git a/package/wilc-driver/wilc-driver.hash b/package/wilc-driver/wilc-driver.hash new file mode 100644 index 00000000..4ada813e --- /dev/null +++ b/package/wilc-driver/wilc-driver.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 4796b1a53781f8702a335b0146d488a9422b71dab39f6f154f955b0ad1711199 wilc-driver-linux4microchip-2021.10-1.tar.gz +sha256 f6b78c087c3ebdf0f3c13415070dd480a3f35d8fc76f3d02180a407c1c812f79 LICENSE diff --git a/package/wilc-driver/wilc-driver.mk b/package/wilc-driver/wilc-driver.mk new file mode 100644 index 00000000..a7a902b6 --- /dev/null +++ b/package/wilc-driver/wilc-driver.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# wilc-driver +# +################################################################################ + +WILC_DRIVER_VERSION = linux4microchip-2021.10-1 +WILC_DRIVER_SITE = $(call github,embeddedTS,wilc3000-external-module,$(WILC_DRIVER_VERSION)) + +WILC_DRIVER_LICENSE = GPL-2.0 +WILC_DRIVER_LICENSE_FILES = LICENSE + +ifeq ($(BR2_PACKAGE_WILC_DRIVER_SPI),y) +WILC_DRIVER_MODULE_MAKE_OPTS += \ + CONFIG_WILC_SPI=m +define WILC_DRIVER_SPI_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_SPI) +endef +endif + +ifeq ($(BR2_PACKAGE_WILC_DRIVER_SDIO),y) +WILC_DRIVER_MODULE_MAKE_OPTS += \ + CONFIG_WILC_SDIO=m +define WILC_DRIVER_SDIO_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_MMC) +endef +endif + +ifeq ($(BR2_PACKAGE_WILC_DRIVER_SDIO_OOB),y) +WILC_DRIVER_MODULE_MAKE_OPTS += \ + CONFIG_WILC_HW_OOB_INTR=y +endif + +define WILC_DRIVER_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_NET) + $(call KCONFIG_ENABLE_OPT,CONFIG_WIRELESS) + $(call KCONFIG_ENABLE_OPT,CONFIG_CFG80211) + $(call KCONFIG_ENABLE_OPT,CONFIG_CRC_ITU_T) + $(call KCONFIG_ENABLE_OPT,CONFIG_CRC7) + $(WILC_DRIVER_SPI_LINUX_CONFIG_FIXUPS) + $(WILC_DRIVER_SDIO_LINUX_CONFIG_FIXUPS) +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/wilc-firmware/Config.in b/package/wilc-firmware/Config.in new file mode 100644 index 00000000..72a9c732 --- /dev/null +++ b/package/wilc-firmware/Config.in @@ -0,0 +1,34 @@ +config BR2_PACKAGE_WILC_FIRMWARE + bool + help + Provider package for WILC1000_FIRMWARE & WILC3000_FIRMWARE + +config BR2_PACKAGE_WILC1000_FIRMWARE + bool "wilc1000-firmware" + select BR2_PACKAGE_WILC_FIRMWARE + help + Firmware for Microchip WILC1000 wireless device + + These binary blobs are provided directly from Microchip. + Ideally, the firmware version should match driver version. + Generally, the latest firmware would be acceptible regardless + of driver version. + + These will be installed to /lib/firmware/mchp/ + + https://github.com/linux4wilc/firmware + +config BR2_PACKAGE_WILC3000_FIRMWARE + bool "wilc3000-firmware" + select BR2_PACKAGE_WILC_FIRMWARE + help + Firmware for Microchip WILC3000 wireless device + + These binary blobs are provided directly from Microchip. + Ideally, the firmware version should match driver version. + Generally, the latest firmware would be acceptible regardless + of driver version. + + These will be installed to /lib/firmware/mchp/ + + https://github.com/linux4wilc/firmware diff --git a/package/wilc-firmware/wilc-firmware.hash b/package/wilc-firmware/wilc-firmware.hash new file mode 100644 index 00000000..543aaa0f --- /dev/null +++ b/package/wilc-firmware/wilc-firmware.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b9305e1ed5a43eaffed880ba0486431c13cdf93b2e449aed650e7a605a291c83 wilc-firmware-wilc_linux_16_3.tar.gz +sha256 71355eee947a312594dbdaac039827544f93d23949b65c356b7b0ce09e2600fb LICENSE.wilc_fw diff --git a/package/wilc-firmware/wilc-firmware.mk b/package/wilc-firmware/wilc-firmware.mk new file mode 100644 index 00000000..ac0f3344 --- /dev/null +++ b/package/wilc-firmware/wilc-firmware.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# wilc-firmware +# +################################################################################ + +WILC_FIRMWARE_VERSION = wilc_linux_16_3 +WILC_FIRMWARE_SITE = $(call github,linux4wilc,firmware,$(WILC_FIRMWARE_VERSION)) + +WILC_FIRMWARE_LICENSE = PROPRIETARY +WILC_FIRMWARE_LICENSE_FILES = LICENSE.wilc_fw + +ifeq ($(BR2_PACKAGE_WILC1000_FIRMWARE),y) +WILC_FIRMWARE_FILES += \ + wilc1000_wifi_firmware.bin +endif + +ifeq ($(BR2_PACKAGE_WILC3000_FIRMWARE),y) +WILC_FIRMWARE_FILES += \ + wilc3000_ble_firmware.bin \ + wilc3000_wifi_firmware.bin +endif + +define WILC_FIRMWARE_INSTALL_FILES + cd $(@D) && \ + $(TAR) cf install.tar $(sort $(WILC_FIRMWARE_FILES)) && \ + $(TAR) xf install.tar -C $(TARGET_DIR)/lib/firmware/mchp +endef + +define WILC_FIRMWARE_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/lib/firmware/mchp/ + $(WILC_FIRMWARE_INSTALL_FILES) +endef + +$(eval $(generic-package)) diff --git a/package/wilink-bt-firmware/Config.in b/package/wilink-bt-firmware/Config.in new file mode 100644 index 00000000..26683043 --- /dev/null +++ b/package/wilink-bt-firmware/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_WILINK_BT_FIRMWARE + bool "wilink-bt-firmware" + help + Texas Instruments Wilink7 and Wilink8 (wl12xx/wl18xx) UART + attached Bluetooth firmware. + + https://github.com/TI-ECS/bt-firmware diff --git a/package/wilink-bt-firmware/wilink-bt-firmware.hash b/package/wilink-bt-firmware/wilink-bt-firmware.hash new file mode 100644 index 00000000..92da07ec --- /dev/null +++ b/package/wilink-bt-firmware/wilink-bt-firmware.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 74e5c8912f1a7e65799da5f3ad44fda570446af2c7324f3a8051a166065b643b wilink-bt-firmware-43fca73c6a98c63fcb98f82af5bf83761778e005-git4.tar.gz +sha256 21fd99ce784dc33b39ec0b4a383a9a9b8dafea261d73ad4548683c4eecd87f37 LICENSE diff --git a/package/wilink-bt-firmware/wilink-bt-firmware.mk b/package/wilink-bt-firmware/wilink-bt-firmware.mk new file mode 100644 index 00000000..a5f3a826 --- /dev/null +++ b/package/wilink-bt-firmware/wilink-bt-firmware.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# wilink-bt-firmware +# +################################################################################ + +WILINK_BT_FIRMWARE_VERSION = 43fca73c6a98c63fcb98f82af5bf83761778e005 +WILINK_BT_FIRMWARE_SITE = https://git.ti.com/git/ti-bt/service-packs.git +WILINK_BT_FIRMWARE_SITE_METHOD = git +WILINK_BT_FIRMWARE_LICENSE = PROPRIETARY +WILINK_BT_FIRMWARE_LICENSE_FILES = LICENSE + +define WILINK_BT_FIRMWARE_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/lib/firmware/ti-connectivity + cp $(@D)/initscripts/TIInit_*.bts $(TARGET_DIR)/lib/firmware/ti-connectivity +endef + +$(eval $(generic-package)) diff --git a/package/wine/Config.in b/package/wine/Config.in new file mode 100644 index 00000000..db3b1570 --- /dev/null +++ b/package/wine/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_WINE_ARCH_SUPPORTS + bool + default y + # Wine only builds on certain architectures + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" || \ + BR2_HOSTARCH = "powerpc" || BR2_HOSTARCH = "arm" || \ + BR2_HOSTARCH = "aarch64" + # Wine has much CPU specific code and mostly makes sense on x86 + depends on BR2_i386 + +config BR2_PACKAGE_WINE + bool "wine" + depends on BR2_PACKAGE_WINE_ARCH_SUPPORTS + # Wine unconditionally builds shared libraries + depends on !BR2_STATIC_LIBS + # pthread_attr_setstack + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_PACKAGE_ALSA_LIB_SEQ if BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_RAWMIDI if BR2_PACKAGE_ALSA_LIB + help + Wine is a compatibility layer capable of running Windows + applications on Linux. Instead of simulating internal + Windows logic like a virtual machine or emulator, Wine + translates Windows API calls into POSIX calls on-the-fly, + eliminating the performance and memory penalties of other + methods. + + http://www.winehq.org + +comment "wine needs a toolchain w/ dynamic library, NPTL" + depends on BR2_PACKAGE_WINE_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/package/wine/wine.hash b/package/wine/wine.hash new file mode 100644 index 00000000..756859c8 --- /dev/null +++ b/package/wine/wine.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +sha256 6ec8fb6f2c72d576cb11f52b2f8d59af64404802154651d122b98466d91dc847 wine-8.0.2.tar.xz +# Locally calculated +sha256 e237fa56668030e928551ddd60f05df5fe957f75eab874bbd017e085ed722e7c COPYING.LIB +sha256 793d045546467c8f49e35fbd6e02859e57e78f8bb53571e8200bffd0e966dfa8 LICENSE diff --git a/package/wine/wine.mk b/package/wine/wine.mk new file mode 100644 index 00000000..f47922dc --- /dev/null +++ b/package/wine/wine.mk @@ -0,0 +1,307 @@ +################################################################################ +# +# wine +# +################################################################################ + +WINE_VERSION = 8.0.2 +WINE_SOURCE = wine-$(WINE_VERSION).tar.xz +WINE_SITE = https://dl.winehq.org/wine/source/8.0 +WINE_LICENSE = LGPL-2.1+ +WINE_LICENSE_FILES = COPYING.LIB LICENSE +WINE_CPE_ID_VENDOR = winehq +WINE_SELINUX_MODULES = wine +WINE_DEPENDENCIES = host-bison host-flex host-wine +HOST_WINE_DEPENDENCIES = host-bison host-flex + +# Wine needs its own directory structure and tools for cross compiling +WINE_CONF_OPTS = \ + --with-wine-tools=../host-wine-$(WINE_VERSION) \ + --disable-tests \ + --disable-win64 \ + --without-capi \ + --without-coreaudio \ + --without-gettext \ + --without-gettextpo \ + --without-gphoto \ + --without-mingw \ + --without-opencl \ + --without-oss \ + --without-vulkan + +# Wine uses a wrapper around gcc, and uses the value of --host to +# construct the filename of the gcc to call. But for external +# toolchains, the GNU_TARGET_NAME tuple that we construct from our +# internal variables may differ from the actual gcc prefix for the +# external toolchains. So, we have to override whatever the gcc +# 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 $(TOOLCHAIN_EXTERNAL_PREFIX)" +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +WINE_CONF_OPTS += --with-alsa +WINE_DEPENDENCIES += alsa-lib +else +WINE_CONF_OPTS += --without-alsa +endif + +ifeq ($(BR2_PACKAGE_CUPS),y) +WINE_CONF_OPTS += --with-cups +WINE_DEPENDENCIES += cups +WINE_CONF_ENV += CUPS_CONFIG=$(STAGING_DIR)/usr/bin/cups-config +else +WINE_CONF_OPTS += --without-cups +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +WINE_CONF_OPTS += --with-dbus +WINE_DEPENDENCIES += dbus +else +WINE_CONF_OPTS += --without-dbus +endif + +ifeq ($(BR2_PACKAGE_FONTCONFIG),y) +WINE_CONF_OPTS += --with-fontconfig +WINE_DEPENDENCIES += fontconfig +else +WINE_CONF_OPTS += --without-fontconfig +endif + +# To support freetype in wine we also need freetype in host-wine for the cross compiling tools +ifeq ($(BR2_PACKAGE_FREETYPE),y) +WINE_CONF_OPTS += --with-freetype +HOST_WINE_CONF_OPTS += --with-freetype +WINE_DEPENDENCIES += freetype +HOST_WINE_DEPENDENCIES += host-freetype +WINE_CONF_ENV += FREETYPE_CONFIG=$(STAGING_DIR)/usr/bin/freetype-config +else +WINE_CONF_OPTS += --without-freetype +HOST_WINE_CONF_OPTS += --without-freetype +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +WINE_CONF_OPTS += --with-gnutls +WINE_DEPENDENCIES += gnutls +else +WINE_CONF_OPTS += --without-gnutls +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y) +WINE_CONF_OPTS += --with-gstreamer +WINE_DEPENDENCIES += gst1-plugins-base +else +WINE_CONF_OPTS += --without-gstreamer +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +WINE_CONF_OPTS += --with-opengl +WINE_DEPENDENCIES += libgl +else +WINE_CONF_OPTS += --without-opengl +endif + +ifeq ($(BR2_PACKAGE_LIBKRB5),y) +WINE_CONF_OPTS += --with-krb5 +WINE_DEPENDENCIES += libkrb5 +else +WINE_CONF_OPTS += --without-krb5 +endif + +ifeq ($(BR2_PACKAGE_LIBPCAP),y) +WINE_CONF_OPTS += --with-pcap +WINE_DEPENDENCIES += libpcap +else +WINE_CONF_OPTS += --without-pcap +endif + +ifeq ($(BR2_PACKAGE_LIBUSB),y) +WINE_CONF_OPTS += --with-usb +WINE_DEPENDENCIES += libusb +else +WINE_CONF_OPTS += --without-usb +endif + +ifeq ($(BR2_PACKAGE_LIBV4L),y) +WINE_CONF_OPTS += --with-v4l2 +WINE_DEPENDENCIES += libv4l +else +WINE_CONF_OPTS += --without-v4l2 +endif + +ifeq ($(BR2_PACKAGE_MESA3D_OSMESA_GALLIUM),y) +WINE_CONF_OPTS += --with-osmesa +WINE_DEPENDENCIES += mesa3d +else +WINE_CONF_OPTS += --without-osmesa +endif + +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +WINE_CONF_OPTS += --with-pulse +WINE_DEPENDENCIES += pulseaudio +else +WINE_CONF_OPTS += --without-pulse +endif + +ifeq ($(BR2_PACKAGE_SAMBA4),y) +WINE_CONF_OPTS += --with-netapi +WINE_DEPENDENCIES += samba4 +else +WINE_CONF_OPTS += --without-netapi +endif + +ifeq ($(BR2_PACKAGE_SANE_BACKENDS),y) +WINE_CONF_OPTS += --with-sane +WINE_DEPENDENCIES += sane-backends +WINE_CONF_ENV += SANE_CONFIG=$(STAGING_DIR)/usr/bin/sane-config +else +WINE_CONF_OPTS += --without-sane +endif + +ifeq ($(BR2_PACKAGE_SDL2),y) +WINE_CONF_OPTS += --with-sdl +WINE_DEPENDENCIES += sdl2 +else +WINE_CONF_OPTS += --without-sdl +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 +else +WINE_CONF_OPTS += --without-x +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),y) +WINE_CONF_OPTS += --with-xcomposite +WINE_DEPENDENCIES += xlib_libXcomposite +else +WINE_CONF_OPTS += --without-xcomposite +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y) +WINE_CONF_OPTS += --with-xcursor +WINE_DEPENDENCIES += xlib_libXcursor +else +WINE_CONF_OPTS += --without-xcursor +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXEXT),y) +WINE_CONF_OPTS += --with-xshape --with-xshm +WINE_DEPENDENCIES += xlib_libXext +else +WINE_CONF_OPTS += --without-xshape --without-xshm +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXI),y) +WINE_CONF_OPTS += --with-xinput --with-xinput2 +WINE_DEPENDENCIES += xlib_libXi +else +WINE_CONF_OPTS += --without-xinput --without-xinput2 +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +WINE_CONF_OPTS += --with-xinerama +WINE_DEPENDENCIES += xlib_libXinerama +else +WINE_CONF_OPTS += --without-xinerama +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) +WINE_CONF_OPTS += --with-xrandr +WINE_DEPENDENCIES += xlib_libXrandr +else +WINE_CONF_OPTS += --without-xrandr +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRENDER),y) +WINE_CONF_OPTS += --with-xrender +WINE_DEPENDENCIES += xlib_libXrender +else +WINE_CONF_OPTS += --without-xrender +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXXF86VM),y) +WINE_CONF_OPTS += --with-xxf86vm +WINE_DEPENDENCIES += xlib_libXxf86vm +else +WINE_CONF_OPTS += --without-xxf86vm +endif + +# host-gettext is essential for .po file support in host-wine wrc +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +HOST_WINE_DEPENDENCIES += host-gettext +HOST_WINE_CONF_OPTS += --with-gettext --with-gettextpo +else +HOST_WINE_CONF_OPTS += --without-gettext --without-gettextpo +endif + +# Wine needs to enable 64-bit build tools on 64-bit host +ifeq ($(HOSTARCH),x86_64) +HOST_WINE_CONF_OPTS += --enable-win64 +endif + +# Wine only needs the host tools to be built, so cut-down the +# build time by building just what we need. +define HOST_WINE_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) __tooldeps__ +endef + +# Wine only needs its host variant to be built, not that it is +# installed, as it uses the tools from the build directory. But +# we have no way in Buildroot to state that a host package should +# not be installed. So, just provide an noop install command. +define HOST_WINE_INSTALL_CMDS + : +endef + +# We are focused on the cross compiling tools, disable everything else +HOST_WINE_CONF_OPTS += \ + --disable-tests \ + --disable-win16 \ + --without-alsa \ + --without-capi \ + --without-coreaudio \ + --without-cups \ + --without-dbus \ + --without-fontconfig \ + --without-gphoto \ + --without-gnutls \ + --without-gssapi \ + --without-gstreamer \ + --without-krb5 \ + --without-mingw \ + --without-netapi \ + --without-opencl \ + --without-opengl \ + --without-osmesa \ + --without-oss \ + --without-pcap \ + --without-pulse \ + --without-sane \ + --without-sdl \ + --without-usb \ + --without-v4l2 \ + --without-vulkan \ + --without-x \ + --without-xcomposite \ + --without-xcursor \ + --without-xinerama \ + --without-xinput \ + --without-xinput2 \ + --without-xrandr \ + --without-xrender \ + --without-xshape \ + --without-xshm \ + --without-xxf86vm + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/wipe/0001-musl.patch b/package/wipe/0001-musl.patch new file mode 100644 index 00000000..35b3af80 --- /dev/null +++ b/package/wipe/0001-musl.patch @@ -0,0 +1,28 @@ +Fix musl build + +In file included from main.c:46:0: +rand.h:31:9: error: unknown type name ‘u_int32_t’ + typedef u_int32_t u_rand_t; + ^ +: recipe for target 'main.o' failed + +Patch sent upstream: https://sourceforge.net/p/wipe/patches/4/ + +Signed-off-by: Bernd Kuhls + +diff -uNr wipe-2.3.1.org/rand.h wipe-2.3.1/rand.h +--- wipe-2.3.1.org/rand.h 2003-12-03 04:01:02.000000000 +0100 ++++ wipe-2.3.1/rand.h 2016-01-31 21:39:54.000000000 +0100 +@@ -22,10 +22,9 @@ + + #ifdef HAVE_STDINT_H + # include "stdint.h" +-#else +-# ifndef LINUX ++#endif ++#if !defined(u_int32_t) + # define u_int32_t uint32_t +-# endif + #endif + + typedef u_int32_t u_rand_t; diff --git a/package/wipe/Config.in b/package/wipe/Config.in new file mode 100644 index 00000000..0241c137 --- /dev/null +++ b/package/wipe/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_WIPE + bool "wipe" + help + Wipe is a little command for securely erasing files + from magnetic media. It compiles under various unix platforms. + + http://wipe.sourceforge.net diff --git a/package/wipe/wipe.hash b/package/wipe/wipe.hash new file mode 100644 index 00000000..d607efde --- /dev/null +++ b/package/wipe/wipe.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 463916370f9b35bb34419c2c0ae3dc4c0a471db32e8595afa1d14c0337b61aa0 wipe-2.3.1.tar.bz2 +sha256 890cd89006bb57ce95b460e867c7bcc81d30cbc23067a9be4644bdac6882bc14 LICENSE diff --git a/package/wipe/wipe.mk b/package/wipe/wipe.mk new file mode 100644 index 00000000..83a8c875 --- /dev/null +++ b/package/wipe/wipe.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# wipe +# +################################################################################ + +WIPE_VERSION = 2.3.1 +WIPE_SITE = http://downloads.sourceforge.net/project/wipe/wipe/$(WIPE_VERSION) +WIPE_SOURCE = wipe-$(WIPE_VERSION).tar.bz2 +WIPE_LICENSE = GPL-2.0+ +WIPE_LICENSE_FILES = LICENSE + +define WIPE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/wipe $(TARGET_DIR)/usr/bin/wipe +endef + +$(eval $(autotools-package)) diff --git a/package/wireguard-linux-compat/Config.in b/package/wireguard-linux-compat/Config.in new file mode 100644 index 00000000..4e8e95bd --- /dev/null +++ b/package/wireguard-linux-compat/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_WIREGUARD_LINUX_COMPAT + bool "wireguard linux-compat" + depends on BR2_LINUX_KERNEL + # kernel module requires 3.10+ + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 + # kernel module in upstream linux since 5.6 + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6 + help + WireGuard is an extremely simple yet fast and modern VPN + that utilizes state-of-the-art cryptography. It aims to be + faster, simpler, leaner, and more useful than IPSec, while + avoiding the massive headache. It intends to be considerably + more performant than OpenVPN. WireGuard is designed as a + general purpose VPN for running on embedded interfaces and + super computers alike, fit for many different + circumstances. + + Support for WireGuard is included in Linux 5.6+. This + package provides a backport of the kernel support for older + kernels. + + https://www.wireguard.com + +comment "wireguard-linux-compat needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +comment "wireguard-linux-compat needs a toolchain w/ headers >= 3.10" + depends on BR2_LINUX_KERNEL + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 diff --git a/package/wireguard-linux-compat/wireguard-linux-compat.hash b/package/wireguard-linux-compat/wireguard-linux-compat.hash new file mode 100644 index 00000000..0f5713fc --- /dev/null +++ b/package/wireguard-linux-compat/wireguard-linux-compat.hash @@ -0,0 +1,4 @@ +# https://lists.zx2c4.com/pipermail/wireguard/2022-June/007660.html +sha256 362d412693c8fe82de00283435818d5c5def7f15e2433a07a9fe99d0518f63c0 wireguard-linux-compat-1.0.20220627.tar.xz +# Locally calculated +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/wireguard-linux-compat/wireguard-linux-compat.mk b/package/wireguard-linux-compat/wireguard-linux-compat.mk new file mode 100644 index 00000000..258e1847 --- /dev/null +++ b/package/wireguard-linux-compat/wireguard-linux-compat.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# wireguard +# +################################################################################ + +WIREGUARD_LINUX_COMPAT_VERSION = 1.0.20220627 +WIREGUARD_LINUX_COMPAT_SITE = https://git.zx2c4.com/wireguard-linux-compat/snapshot +WIREGUARD_LINUX_COMPAT_SOURCE = wireguard-linux-compat-$(WIREGUARD_LINUX_COMPAT_VERSION).tar.xz +WIREGUARD_LINUX_COMPAT_LICENSE = GPL-2.0 +WIREGUARD_LINUX_COMPAT_LICENSE_FILES = COPYING +WIREGUARD_LINUX_COMPAT_MODULE_SUBDIRS = src + +define WIREGUARD_LINUX_COMPAT_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_INET) + $(call KCONFIG_ENABLE_OPT,CONFIG_NET) + $(call KCONFIG_ENABLE_OPT,CONFIG_NET_FOU) + $(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO) + $(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_MANAGER) +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/wireguard-tools/Config.in b/package/wireguard-tools/Config.in new file mode 100644 index 00000000..130f4c48 --- /dev/null +++ b/package/wireguard-tools/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_WIREGUARD_TOOLS + bool "wireguard tools" + # kernel module requires 3.10+, userspace makes no sense without it + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 + help + WireGuard is an extremely simple yet fast and modern VPN + that utilizes state-of-the-art cryptography. It aims to be + faster, simpler, leaner, and more useful than IPSec, while + avoiding the massive headache. It intends to be considerably + more performant than OpenVPN. WireGuard is designed as a + general purpose VPN for running on embedded interfaces and + super computers alike, fit for many different + circumstances. + + This package provides the userspace tooling to configure + WireGuard tunnels. + + https://www.wireguard.com + +comment "wireguard-tools needs a toolchain w/ headers >= 3.10" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 diff --git a/package/wireguard-tools/wireguard-tools.hash b/package/wireguard-tools/wireguard-tools.hash new file mode 100644 index 00000000..b3eadec2 --- /dev/null +++ b/package/wireguard-tools/wireguard-tools.hash @@ -0,0 +1,4 @@ +# https://lists.zx2c4.com/pipermail/wireguard/2021-September/007049.html +sha256 97ff31489217bb265b7ae850d3d0f335ab07d2652ba1feec88b734bc96bd05ac wireguard-tools-1.0.20210914.tar.xz +# Locally calculated +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/wireguard-tools/wireguard-tools.mk b/package/wireguard-tools/wireguard-tools.mk new file mode 100644 index 00000000..d76e836a --- /dev/null +++ b/package/wireguard-tools/wireguard-tools.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# wireguard-tools +# +################################################################################ + +WIREGUARD_TOOLS_VERSION = 1.0.20210914 +WIREGUARD_TOOLS_SITE = https://git.zx2c4.com/wireguard-tools/snapshot +WIREGUARD_TOOLS_SOURCE = wireguard-tools-$(WIREGUARD_TOOLS_VERSION).tar.xz +WIREGUARD_TOOLS_LICENSE = GPL-2.0 +WIREGUARD_TOOLS_LICENSE_FILES = COPYING +WIREGUARD_TOOLS_SELINUX_MODULES = wireguard + +ifeq ($(BR2_INIT_SYSTEMD),y) +WIREGUARD_TOOLS_MAKE_OPTS += WITH_SYSTEMDUNITS=yes +WIREGUARD_TOOLS_DEPENDENCIES += host-pkgconf +else +WIREGUARD_TOOLS_MAKE_OPTS += WITH_SYSTEMDUNITS=no +endif + +ifeq ($(BR2_PACKAGE_BASH),y) +WIREGUARD_TOOLS_MAKE_OPTS += WITH_BASHCOMPLETION=yes WITH_WGQUICK=yes +else +WIREGUARD_TOOLS_MAKE_OPTS += WITH_BASHCOMPLETION=no WITH_WGQUICK=no +endif + +define WIREGUARD_TOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(WIREGUARD_TOOLS_MAKE_OPTS) \ + -C $(@D)/src +endef + +define WIREGUARD_TOOLS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(WIREGUARD_TOOLS_MAKE_OPTS) \ + -C $(@D)/src install DESTDIR=$(TARGET_DIR) +endef + +$(eval $(generic-package)) diff --git a/package/wireless-regdb/Config.in b/package/wireless-regdb/Config.in new file mode 100644 index 00000000..17350a41 --- /dev/null +++ b/package/wireless-regdb/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_WIRELESS_REGDB + bool "wireless-regdb" + help + Wireless regulatory database. + + Wireless regulatory database. The database lists the + allowed radio frequencies for each local jurisdiction. + + Since linux-4.15 the kernel supports loading the files + regulatory.db/regulatory.db.p7s directly from the + /lib/firmware directory, for earlier versions the crda helper + application is needed. + + https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb diff --git a/package/wireless-regdb/wireless-regdb.hash b/package/wireless-regdb/wireless-regdb.hash new file mode 100644 index 00000000..ca115515 --- /dev/null +++ b/package/wireless-regdb/wireless-regdb.hash @@ -0,0 +1,4 @@ +# From https://www.kernel.org/pub/software/network/wireless-regdb/sha256sums.asc +sha256 9832a14e1be24abff7be30dee3c9a1afb5fdfcf475a0d91aafef039f8d85f5eb wireless-regdb-2024.07.04.tar.xz +# Locally computed +sha256 678b0df753c86198fc496d1f1033429bbd57f101472132ee7eaaf9f5e0a7fae1 LICENSE diff --git a/package/wireless-regdb/wireless-regdb.mk b/package/wireless-regdb/wireless-regdb.mk new file mode 100644 index 00000000..fae21687 --- /dev/null +++ b/package/wireless-regdb/wireless-regdb.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# wireless-regdb +# +################################################################################ + +WIRELESS_REGDB_VERSION = 2024.07.04 +WIRELESS_REGDB_SOURCE = wireless-regdb-$(WIRELESS_REGDB_VERSION).tar.xz +WIRELESS_REGDB_SITE = $(BR2_KERNEL_MIRROR)/software/network/wireless-regdb +WIRELESS_REGDB_LICENSE = ISC +WIRELESS_REGDB_LICENSE_FILES = LICENSE + +ifeq ($(BR2_PACKAGE_CRDA),y) +define WIRELESS_REGDB_INSTALL_CRDA_TARGET_CMDS + $(INSTALL) -m 644 -D -T $(@D)/regulatory.bin \ + $(TARGET_DIR)/usr/lib/crda/regulatory.bin + $(INSTALL) -m 644 -D -T $(@D)/wens.key.pub.pem \ + $(TARGET_DIR)/etc/wireless-regdb/pubkeys/wens.key.pub.pem +endef +endif + +define WIRELESS_REGDB_INSTALL_TARGET_CMDS + $(WIRELESS_REGDB_INSTALL_CRDA_TARGET_CMDS) + $(INSTALL) -m 644 -D -T $(@D)/regulatory.db \ + $(TARGET_DIR)/lib/firmware/regulatory.db + $(INSTALL) -m 644 -D -T $(@D)/regulatory.db.p7s \ + $(TARGET_DIR)/lib/firmware/regulatory.db.p7s +endef + +$(eval $(generic-package)) diff --git a/package/wireless_tools/0001-remove-bzero.patch b/package/wireless_tools/0001-remove-bzero.patch new file mode 100644 index 00000000..53ef5886 --- /dev/null +++ b/package/wireless_tools/0001-remove-bzero.patch @@ -0,0 +1,95 @@ +Switch all instances of deprecated bzero() to memset() equivalent. + +Signed-off-by: Gustavo Zacarias + +diff -Nura wireless_tools.30/ifrename.c wireless_tools.30-bzero/ifrename.c +--- wireless_tools.30/ifrename.c 2007-10-16 20:12:41.000000000 -0300 ++++ wireless_tools.30-bzero/ifrename.c 2014-06-11 09:52:59.623741119 -0300 +@@ -541,7 +541,7 @@ + victimname, autoname); + + /* Prepare request */ +- bzero(&ifr, sizeof(struct ifreq)); ++ memset(&ifr, 0, sizeof(struct ifreq)); + strncpy(ifr.ifr_name, victimname, IFNAMSIZ); + strncpy(ifr.ifr_newname, autoname, IFNAMSIZ); + +@@ -587,7 +587,7 @@ + } + + /* Prepare request */ +- bzero(&ifr, sizeof(struct ifreq)); ++ memset(&ifr, 0, sizeof(struct ifreq)); + strncpy(ifr.ifr_name, oldname, IFNAMSIZ); + strncpy(ifr.ifr_newname, newname, IFNAMSIZ); + +@@ -747,7 +747,7 @@ + int i; + + /* Get MAC address */ +- bzero(&ifr, sizeof(struct ifreq)); ++ memset(&ifr, 0, sizeof(struct ifreq)); + strncpy(ifr.ifr_name, ifname, IFNAMSIZ); + ret = ioctl(skfd, SIOCGIFHWADDR, &ifr); + if(ret < 0) +@@ -1040,8 +1040,8 @@ + return(0); + + /* Prepare request */ +- bzero(&ifr, sizeof(struct ifreq)); +- bzero(&drvinfo, sizeof(struct ethtool_drvinfo)); ++ memset(&ifr, 0, sizeof(struct ifreq)); ++ memset(&drvinfo, 0, sizeof(struct ethtool_drvinfo)); + strncpy(ifr.ifr_name, ifname, IFNAMSIZ); + drvinfo.cmd = ETHTOOL_GDRVINFO; + ifr.ifr_data = (caddr_t) &drvinfo; +@@ -1206,8 +1206,8 @@ + return(0); + + /* Prepare request */ +- bzero(&ifr, sizeof(struct ifreq)); +- bzero(&map, sizeof(struct ifmap)); ++ memset(&ifr, 0, sizeof(struct ifreq)); ++ memset(&map, 0, sizeof(struct ifmap)); + strncpy(ifr.ifr_name, ifname, IFNAMSIZ); + + /* Do it */ +@@ -2050,7 +2050,7 @@ + struct add_extra extrainfo; + + /* Reset the list of filters */ +- bzero(selector_active, sizeof(selector_active)); ++ memset(selector_active, 0, sizeof(selector_active)); + + /* Check filename */ + if(!strcmp(filename, "-")) +diff -Nura wireless_tools.30/iwlib.c wireless_tools.30-bzero/iwlib.c +--- wireless_tools.30/iwlib.c 2009-11-23 23:28:59.000000000 -0300 ++++ wireless_tools.30-bzero/iwlib.c 2014-06-11 09:50:20.611371384 -0300 +@@ -484,7 +484,7 @@ + union iw_range_raw * range_raw; + + /* Cleanup */ +- bzero(buffer, sizeof(buffer)); ++ memset(buffer, 0, sizeof(buffer)); + + wrq.u.data.pointer = (caddr_t) buffer; + wrq.u.data.length = sizeof(buffer); +@@ -513,7 +513,7 @@ + else + { + /* Zero unknown fields */ +- bzero((char *) range, sizeof(struct iw_range)); ++ memset((char *) range, 0, sizeof(struct iw_range)); + + /* Initial part unmoved */ + memcpy((char *) range, +@@ -3064,7 +3064,7 @@ + oldwscan->next = wscan; + + /* Reset it */ +- bzero(wscan, sizeof(struct wireless_scan)); ++ memset(wscan, 0, sizeof(struct wireless_scan)); + + /* Save cell identifier */ + wscan->has_ap_addr = 1; diff --git a/package/wireless_tools/Config.in b/package/wireless_tools/Config.in new file mode 100644 index 00000000..1d83cb5a --- /dev/null +++ b/package/wireless_tools/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_WIRELESS_TOOLS + bool "wireless tools" + select BR2_PACKAGE_WIRELESS_TOOLS_IWCONFIG if \ + !BR2_PACKAGE_WIRELESS_TOOLS_IFRENAME && \ + !BR2_PACKAGE_WIRELESS_TOOLS_LIB + help + A collection of tools to configure wireless lan cards. + + https://hewlettpackard.github.io/wireless-tools/ + +if BR2_PACKAGE_WIRELESS_TOOLS + +config BR2_PACKAGE_WIRELESS_TOOLS_IWCONFIG + bool "Install tools" + default y + help + Build and install the iwconfig, iwlist, iwspy, iwpriv, and + iwgetid tools. + +config BR2_PACKAGE_WIRELESS_TOOLS_IFRENAME + bool "Install ifrename" + help + Build and install the ifrename tool + +config BR2_PACKAGE_WIRELESS_TOOLS_LIB + bool "Install shared library" + depends on !BR2_STATIC_LIBS + help + The shared library of wireless tools + +endif diff --git a/package/wireless_tools/wireless_tools.hash b/package/wireless_tools/wireless_tools.hash new file mode 100644 index 00000000..8ca73ef2 --- /dev/null +++ b/package/wireless_tools/wireless_tools.hash @@ -0,0 +1,3 @@ +# locally computed hash +sha256 abd9c5c98abf1fdd11892ac2f8a56737544fe101e1be27c6241a564948f34c63 wireless_tools.30.pre9.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/wireless_tools/wireless_tools.mk b/package/wireless_tools/wireless_tools.mk new file mode 100644 index 00000000..90c92866 --- /dev/null +++ b/package/wireless_tools/wireless_tools.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# wireless_tools +# +################################################################################ + +WIRELESS_TOOLS_VERSION_MAJOR = 30 +WIRELESS_TOOLS_VERSION = $(WIRELESS_TOOLS_VERSION_MAJOR).pre9 +WIRELESS_TOOLS_SITE = https://hewlettpackard.github.io/wireless-tools +WIRELESS_TOOLS_SOURCE = wireless_tools.$(WIRELESS_TOOLS_VERSION).tar.gz +WIRELESS_TOOLS_LICENSE = GPL-2.0 +WIRELESS_TOOLS_LICENSE_FILES = COPYING +WIRELESS_TOOLS_CPE_ID_VERSION = $(WIRELESS_TOOLS_VERSION_MAJOR) +WIRELESS_TOOLS_CPE_ID_UPDATE = pre9 +WIRELESS_TOOLS_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_WIRELESS_TOOLS_IWCONFIG),y) +WIRELESS_TOOLS_BUILD_TARGETS = iwmulticall +WIRELESS_TOOLS_INSTALL_TARGETS = install-iwmulticall +endif + +ifeq ($(BR2_PACKAGE_WIRELESS_TOOLS_IFRENAME),y) +WIRELESS_TOOLS_BUILD_TARGETS += ifrename +endif + +ifeq ($(BR2_PACKAGE_WIRELESS_TOOLS_LIB),y) +WIRELESS_TOOLS_BUILD_TARGETS += libiw.so.$(WIRELESS_TOOLS_VERSION_MAJOR) +WIRELESS_TOOLS_INSTALL_TARGETS += install-dynamic + +define WIRELESS_TOOLS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX="$(STAGING_DIR)" LDCONFIG=/bin/true \ + install-dynamic + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX="$(STAGING_DIR)/usr" install-hdr +endef + +endif + +define WIRELESS_TOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" \ + $(WIRELESS_TOOLS_BUILD_TARGETS) +endef + +define WIRELESS_TOOLS_INSTALL_TARGET_CMDS + $(if $(WIRELESS_TOOLS_INSTALL_TARGETS), + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX="$(TARGET_DIR)" \ + LDCONFIG=/bin/true $(WIRELESS_TOOLS_INSTALL_TARGETS)) + $(if $(BR2_PACKAGE_WIRELESS_TOOLS_IFRENAME), + $(INSTALL) -D -m 755 $(@D)/ifrename $(TARGET_DIR)/sbin/ifrename) +endef + +$(eval $(generic-package)) diff --git a/package/wireplumber/0001-fix-non-x86_64-architectures.patch b/package/wireplumber/0001-fix-non-x86_64-architectures.patch new file mode 100644 index 00000000..19c34e4e --- /dev/null +++ b/package/wireplumber/0001-fix-non-x86_64-architectures.patch @@ -0,0 +1,215 @@ +From e429db7e8c266045aee25e153fb2308bd61fe233 Mon Sep 17 00:00:00 2001 +From: Julian Bouzas +Date: Wed, 9 Feb 2022 07:59:59 -0500 +Subject: [PATCH] spa-json: fix va_list APIs for different architectures + +The va_list type might not always be a pointer in some architectures, so we +cannot guarantee it will be modified after using it for a second time in another +function. This fixes the issue by using macros so args does not get copied, and +always gets modified when using it more than once. + +Signed-off-by: Théo Lebrun +Upstream: https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/e429db7e8c266045aee25e153fb2308bd61fe233 +--- + lib/wp/spa-json.c | 156 ++++++++++++++++++++++++---------------------- + 1 file changed, 80 insertions(+), 76 deletions(-) + +diff --git a/lib/wp/spa-json.c b/lib/wp/spa-json.c +index f14f395d..c5e59a3e 100644 +--- a/lib/wp/spa-json.c ++++ b/lib/wp/spa-json.c +@@ -363,33 +363,33 @@ wp_spa_json_new_string (const gchar *value) + wp_spa_json_builder_new_formatted ("\"%s\"", value)); + } + +-static void +-wp_spa_json_builder_add_value (WpSpaJsonBuilder *self, const gchar *fmt, +- va_list args) +-{ +- switch (*fmt) { +- case 'n': +- wp_spa_json_builder_add_null (self); +- break; +- case 'b': +- wp_spa_json_builder_add_boolean (self, va_arg(args, gboolean)); +- break; +- case 'i': +- wp_spa_json_builder_add_int (self, va_arg(args, gint)); +- break; +- case 'f': +- wp_spa_json_builder_add_float (self, (float)va_arg(args, double)); +- break; +- case 's': +- wp_spa_json_builder_add_string (self, va_arg(args, const gchar *)); +- break; +- case 'J': +- wp_spa_json_builder_add_json (self, va_arg(args, WpSpaJson *)); +- break; +- default: +- return; +- } +-} ++/* Args is not a pointer in some architectures, so this needs to be a macro to ++ * avoid args being copied */ ++#define wp_spa_json_builder_add_value(self,fmt,args) \ ++do { \ ++ switch (*fmt) { \ ++ case 'n': \ ++ wp_spa_json_builder_add_null (self); \ ++ break; \ ++ case 'b': \ ++ wp_spa_json_builder_add_boolean (self, va_arg(args, gboolean)); \ ++ break; \ ++ case 'i': \ ++ wp_spa_json_builder_add_int (self, va_arg(args, gint)); \ ++ break; \ ++ case 'f': \ ++ wp_spa_json_builder_add_float (self, (float)va_arg(args, double)); \ ++ break; \ ++ case 's': \ ++ wp_spa_json_builder_add_string (self, va_arg(args, const gchar *)); \ ++ break; \ ++ case 'J': \ ++ wp_spa_json_builder_add_json (self, va_arg(args, WpSpaJson *)); \ ++ break; \ ++ default: \ ++ break; \ ++ } \ ++} while(false) + + /*! + * \brief Creates a spa json of type array +@@ -724,48 +724,46 @@ wp_spa_json_parse_object_valist (WpSpaJson *self, va_list args) + return res; + } + +-static gboolean +-wp_spa_json_parse_value (const gchar *data, int len, const gchar *fmt, +- va_list args) +-{ +- switch (*fmt) { +- case 'n': +- if (!spa_json_is_null (data, len)) +- return FALSE; +- break; +- case 'b': +- if (!wp_spa_json_parse_boolean_internal (data, len, +- va_arg(args, gboolean *))) +- return FALSE; +- break; +- case 'i': +- if (spa_json_parse_int (data, len, va_arg(args, gint *)) < 0) +- return FALSE; +- break; +- case 'f': +- if (spa_json_parse_float (data, len, +- (float *)va_arg(args, double *)) < 0) +- return FALSE; +- break; +- case 's': { +- gchar *str = wp_spa_json_parse_string_internal (data, len); +- if (!str) +- return FALSE; +- *va_arg(args, gchar **) = str; +- break; +- } +- case 'J': { +- WpSpaJson *j = wp_spa_json_new (data, len); +- if (!j) +- return FALSE; +- *va_arg(args, WpSpaJson **) = j; +- break; +- } +- default: +- return FALSE; +- } +- return TRUE; +-} ++/* Args is not a pointer in some architectures, so this needs to be a macro to ++ * avoid args being copied */ ++#define wp_spa_json_parse_value(data,len,fmt,args) \ ++do { \ ++ switch (*fmt) { \ ++ case 'n': \ ++ if (!spa_json_is_null (data, len)) \ ++ return FALSE; \ ++ break; \ ++ case 'b': \ ++ if (!wp_spa_json_parse_boolean_internal (data, len, \ ++ va_arg(args, gboolean *))) \ ++ return FALSE; \ ++ break; \ ++ case 'i': \ ++ if (spa_json_parse_int (data, len, va_arg(args, gint *)) < 0) \ ++ return FALSE; \ ++ break; \ ++ case 'f': \ ++ if (spa_json_parse_float (data, len, va_arg(args, float *)) < 0) \ ++ return FALSE; \ ++ break; \ ++ case 's': { \ ++ gchar *str = wp_spa_json_parse_string_internal (data, len); \ ++ if (!str) \ ++ return FALSE; \ ++ *va_arg(args, gchar **) = str; \ ++ break; \ ++ } \ ++ case 'J': { \ ++ WpSpaJson *j = wp_spa_json_new (data, len); \ ++ if (!j) \ ++ return FALSE; \ ++ *va_arg(args, WpSpaJson **) = j; \ ++ break; \ ++ } \ ++ default: \ ++ return FALSE; \ ++ } \ ++} while(false) + + /*! + * \brief Parses the object property values of a spa json object +@@ -827,8 +825,7 @@ wp_spa_json_object_get_valist (WpSpaJson *self, va_list args) + value = g_value_get_boxed (&item); + + if (g_strcmp0 (key_str, lookup_key) == 0) { +- if (!wp_spa_json_parse_value (value->data, value->size, lookup_fmt, args)) +- return FALSE; ++ wp_spa_json_parse_value (value->data, value->size, lookup_fmt, args); + lookup_key = va_arg(args, const gchar *); + if (!lookup_key) + return TRUE; +@@ -1366,9 +1363,12 @@ gboolean + wp_spa_json_parser_get_value (WpSpaJsonParser *self, const gchar *fmt, + va_list args) + { +- return wp_spa_json_parser_advance (self) && +- wp_spa_json_parse_value (self->curr.cur, +- self->curr.end - self->curr.cur, fmt, args); ++ if (wp_spa_json_parser_advance (self)) { ++ wp_spa_json_parse_value (self->curr.cur, self->curr.end - self->curr.cur, ++ fmt, args); ++ return TRUE; ++ } ++ return FALSE; + } + + /*! +@@ -1419,9 +1419,13 @@ wp_spa_json_parser_get_valist (WpSpaJsonParser *self, va_list args) + if (!format) + return TRUE; + +- /* parse value */ +- if (!wp_spa_json_parser_get_value (self, format, args)) ++ /* advance */ ++ if (!wp_spa_json_parser_advance (self)) + return FALSE; ++ ++ /* parse value */ ++ wp_spa_json_parse_value (self->curr.cur, self->curr.end - self->curr.cur, ++ format, args); + } while (TRUE); + + return FALSE; +-- +GitLab + diff --git a/package/wireplumber/Config.in b/package/wireplumber/Config.in new file mode 100644 index 00000000..6528a2e1 --- /dev/null +++ b/package/wireplumber/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_WIREPLUMBER + bool "wireplumber" + depends on BR2_PACKAGE_PIPEWIRE + depends on BR2_PACKAGE_LUA_5_3 || BR2_PACKAGE_LUA_5_4 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + help + WirePlumber is a modular session / policy manager for + PipeWire and a GObject-based high-level library that + wraps PipeWire’s API, providing convenience for writing + the daemon’s modules as well as external tools for + managing PipeWire. + + https://pipewire.pages.freedesktop.org/wireplumber/ + +comment "wireplumber needs a toolchain w/ wchar, threads and Lua >= 5.3" + depends on BR2_PACKAGE_PIPEWIRE + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + (!BR2_PACKAGE_LUA_5_3 && !BR2_PACKAGE_LUA_5_4) diff --git a/package/wireplumber/wireplumber.hash b/package/wireplumber/wireplumber.hash new file mode 100644 index 00000000..206d7d15 --- /dev/null +++ b/package/wireplumber/wireplumber.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 6429e8a95e355ce21b4c4f1a5ebc769f037e8dbeec51905ad909ce609a38d0ce wireplumber-0.4.8.tar.bz2 +sha256 ff2eb9af5b05d92ac3a38cffcad27582ef555a31ff1781e1c1d4e087f77c9c81 LICENSE diff --git a/package/wireplumber/wireplumber.mk b/package/wireplumber/wireplumber.mk new file mode 100644 index 00000000..763e3d76 --- /dev/null +++ b/package/wireplumber/wireplumber.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# wireplumber +# +################################################################################ + +WIREPLUMBER_VERSION = 0.4.8 +WIREPLUMBER_SOURCE = wireplumber-$(WIREPLUMBER_VERSION).tar.bz2 +WIREPLUMBER_SITE = https://gitlab.freedesktop.org/pipewire/wireplumber/-/archive/$(WIREPLUMBER_VERSION) +WIREPLUMBER_LICENSE = MIT +WIREPLUMBER_LICENSE_FILES = LICENSE +WIREPLUMBER_DEPENDENCIES = host-pkgconf pipewire libglib2 lua + +WIREPLUMBER_CONF_OPTS = \ + -Ddoc=disabled \ + -Dsystem-lua=true \ + -Dsystem-lua-version= + +ifeq ($(BR2_PACKAGE_DBUS),y) +WIREPLUMBER_DEPENDENCIES += dbus +endif + +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) +WIREPLUMBER_DEPENDENCIES += host-doxygen host-python-lxml gobject-introspection +WIREPLUMBER_CONF_OPTS += -Dintrospection=enabled +else +WIREPLUMBER_CONF_OPTS += -Dintrospection=disabled +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +WIREPLUMBER_DEPENDENCIES += systemd +WIREPLUMBER_CONF_OPTS += \ + -Dsystemd=enabled \ + -Dsystemd-system-service=true \ + -Dsystemd-user-service=true +else +WIREPLUMBER_CONF_OPTS += \ + -Dsystemd=disabled \ + -Dsystemd-system-service=false \ + -Dsystemd-user-service=false +endif + +$(eval $(meson-package)) diff --git a/package/wireshark/0001-cmake-lemon-wipe-CMAKE_-EXE_LINKER_FLAGS-SYSROOT-if-.patch b/package/wireshark/0001-cmake-lemon-wipe-CMAKE_-EXE_LINKER_FLAGS-SYSROOT-if-.patch new file mode 100644 index 00000000..edf24fc6 --- /dev/null +++ b/package/wireshark/0001-cmake-lemon-wipe-CMAKE_-EXE_LINKER_FLAGS-SYSROOT-if-.patch @@ -0,0 +1,31 @@ +From 33270f56477542dedf978e660cf8d08464f28797 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 26 Nov 2021 17:45:23 +0100 +Subject: [PATCH] cmake: lemon: wipe CMAKE_{EXE_LINKER_FLAGS,SYSROOT} if needed + +Wipe CMAKE_{EXE_LINKER_FLAGS,SYSROOT} when LEMON_C_COMPILER is set to +avoid a build failure when cross-compiling (e.g. with buildroot) + +Signed-off-by: Fabrice Fontaine +[Upstream status: +https://gitlab.com/wireshark/wireshark/-/merge_requests/5224] +--- + tools/lemon/CMakeLists.txt | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/tools/lemon/CMakeLists.txt b/tools/lemon/CMakeLists.txt +index 8742aa9fc9..7a9263fe0d 100644 +--- a/tools/lemon/CMakeLists.txt ++++ b/tools/lemon/CMakeLists.txt +@@ -12,6 +12,8 @@ add_executable(lemon lemon.c) + if(DEFINED LEMON_C_COMPILER) + set(CMAKE_C_COMPILER "${LEMON_C_COMPILER}") + set(CMAKE_C_FLAGS "") ++ set(CMAKE_EXE_LINKER_FLAGS "") ++ set(CMAKE_SYSROOT "") + endif() + + # To keep lemon.c as close to upstream as possible, deliberately ignore +-- +2.33.0 + diff --git a/package/wireshark/Config.in b/package/wireshark/Config.in new file mode 100644 index 00000000..8b05599e --- /dev/null +++ b/package/wireshark/Config.in @@ -0,0 +1,52 @@ +config BR2_PACKAGE_WIRESHARK + bool "wireshark" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt -> libgpg-error + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # fork(), glib2 + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_C_ARES + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_LIBGCRYPT + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_PCRE2 + select BR2_PACKAGE_SPEEXDSP + help + Network traffic sniffer and protocol decoder. + + https://www.wireshark.org + +if BR2_PACKAGE_WIRESHARK + +config BR2_PACKAGE_WIRESHARK_GUI + bool "Qt5 GUI" + default y + depends on BR2_INSTALL_LIBSTDCPP # qt5 + depends on BR2_HOST_GCC_AT_LEAST_5 # qt5 + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # qt5 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # qt5 + depends on BR2_PACKAGE_HAS_UDEV # qt5 input + select BR2_PACKAGE_QT5 + select BR2_PACKAGE_QT5BASE_FONTCONFIG # runtime + select BR2_PACKAGE_QT5BASE_PNG # runtime + select BR2_PACKAGE_QT5BASE_WIDGETS + select BR2_PACKAGE_QT5MULTIMEDIA + select BR2_PACKAGE_QT5SVG + select BR2_PACKAGE_QT5TOOLS + select BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS + help + Enable Qt5 GUI + +comment "Qt5 GUI needs a udev /dev management and a toolchain w/ C++, NPTL, host gcc >= 5.0, gcc >= 5.0" + depends on !BR2_PACKAGE_HAS_UDEV || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_TOOLCHAIN_GCC_AT_LEAST_5 || \ + !BR2_HOST_GCC_AT_LEAST_5 + +endif # BR2_PACKAGE_WIRESHARK + +comment "wireshark needs a toolchain w/ wchar, threads, dynamic library, C++" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP diff --git a/package/wireshark/wireshark.hash b/package/wireshark/wireshark.hash new file mode 100644 index 00000000..6610eb77 --- /dev/null +++ b/package/wireshark/wireshark.hash @@ -0,0 +1,7 @@ +# From https://www.wireshark.org/download/src/all-versions/SIGNATURES-4.0.12.txt +sha1 e00d90769995bf786b05c05bdd9a2c6c8e372e70 wireshark-4.0.12.tar.xz +sha256 e4e3d618ba11e159fb163f0dc4716a8b72a065aafd1111db9405332552a5a115 wireshark-4.0.12.tar.xz + +# Locally calculated +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 fce67c1558e448fac784ce9a30cb47956488bc3ef6ec16316c38b0668b3cad2e README.md diff --git a/package/wireshark/wireshark.mk b/package/wireshark/wireshark.mk new file mode 100644 index 00000000..3759f9bf --- /dev/null +++ b/package/wireshark/wireshark.mk @@ -0,0 +1,214 @@ +################################################################################ +# +# wireshark +# +################################################################################ + +WIRESHARK_VERSION = 4.0.12 +WIRESHARK_SOURCE = wireshark-$(WIRESHARK_VERSION).tar.xz +WIRESHARK_SITE = https://www.wireshark.org/download/src/all-versions +WIRESHARK_LICENSE = wireshark license +WIRESHARK_LICENSE_FILES = COPYING README.md +WIRESHARK_CPE_ID_VENDOR = wireshark +WIRESHARK_SELINUX_MODULES = wireshark +WIRESHARK_DEPENDENCIES = \ + c-ares \ + host-pkgconf \ + host-python3 \ + libgcrypt \ + libglib2 \ + libpcap \ + pcre2 \ + speexdsp + +WIRESHARK_CONF_OPTS = \ + -DENABLE_ILBC=OFF \ + -DENABLE_PCAP=ON \ + -DENABLE_SMI=OFF \ + -DENABLE_WERROR=OFF \ + -DHAVE_C99_VSNPRINTF=ON \ + -DLEMON_C_COMPILER=$(HOSTCC_NOCCACHE) + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +WIRESHARK_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic +endif + +ifeq ($(BR2_ENABLE_LTO),y) +WIRESHARK_CONF_OPTS += -DENABLE_LTO=ON +else +WIRESHARK_CONF_OPTS += -DENABLE_LTO=OFF +endif + +ifeq ($(BR2_PACKAGE_WIRESHARK_GUI),y) +WIRESHARK_CONF_OPTS += -DBUILD_wireshark=ON +WIRESHARK_DEPENDENCIES += qt5base qt5multimedia qt5svg qt5tools +else +WIRESHARK_CONF_OPTS += -DBUILD_wireshark=OFF +endif + +ifeq ($(BR2_PACKAGE_BCG729),y) +WIRESHARK_CONF_OPTS += -DENABLE_BCG729=ON +WIRESHARK_DEPENDENCIES += bcg729 +else +WIRESHARK_CONF_OPTS += -DENABLE_BCG729=OFF +endif + +ifeq ($(BR2_PACKAGE_BROTLI),y) +WIRESHARK_CONF_OPTS += -DENABLE_BROTLI=ON +WIRESHARK_DEPENDENCIES += brotli +else +WIRESHARK_CONF_OPTS += -DENABLE_BROTLI=OFF +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +WIRESHARK_CONF_OPTS += -DENABLE_GNUTLS=ON +WIRESHARK_DEPENDENCIES += gnutls +else +WIRESHARK_CONF_OPTS += -DENABLE_GNUTLS=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +WIRESHARK_CONF_OPTS += -DENABLE_CAP=ON +WIRESHARK_DEPENDENCIES += libcap +else +WIRESHARK_CONF_OPTS += -DENABLE_CAP=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBKRB5),y) +WIRESHARK_CONF_OPTS += -DENABLE_KERBEROS=ON +WIRESHARK_DEPENDENCIES += libkrb5 +else +WIRESHARK_CONF_OPTS += -DENABLE_KERBEROS=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBMAXMINDDB),y) +WIRESHARK_CONF_OPTS += -DBUILD_mmdbresolve=ON +WIRESHARK_DEPENDENCIES += libmaxminddb +else +WIRESHARK_CONF_OPTS += -DBUILD_mmdbresolve=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBNL),y) +WIRESHARK_CONF_OPTS += -DENABLE_NETLINK=ON +WIRESHARK_DEPENDENCIES += libnl +else +WIRESHARK_CONF_OPTS += -DENABLE_NETLINK=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBSSH),y) +WIRESHARK_CONF_OPTS += -DENABLE_LIBSSH=ON +WIRESHARK_DEPENDENCIES += libssh +else +WIRESHARK_CONF_OPTS += -DENABLE_LIBSSH=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +WIRESHARK_CONF_OPTS += -DENABLE_LIBXML2=ON +WIRESHARK_DEPENDENCIES += libxml2 +else +WIRESHARK_CONF_OPTS += -DENABLE_LIBXML2=OFF +endif + +# no support for lua53 yet +ifeq ($(BR2_PACKAGE_LUA_5_1),y) +WIRESHARK_CONF_OPTS += -DENABLE_LUA=ON +WIRESHARK_DEPENDENCIES += lua +else +WIRESHARK_CONF_OPTS += -DENABLE_LUA=OFF +endif + +ifeq ($(BR2_PACKAGE_LZ4),y) +WIRESHARK_CONF_OPTS += -DENABLE_LZ4=ON +WIRESHARK_DEPENDENCIES += lz4 +else +WIRESHARK_CONF_OPTS += -DENABLE_LZ4=OFF +endif + +ifeq ($(BR2_PACKAGE_MINIZIP_ZLIB),y) +WIRESHARK_CONF_OPTS += -DENABLE_MINIZIP=ON +WIRESHARK_DEPENDENCIES += minizip-zlib +else +WIRESHARK_CONF_OPTS += -DENABLE_MINIZIP=OFF +endif + +ifeq ($(BR2_PACKAGE_NGHTTP2),y) +WIRESHARK_CONF_OPTS += -DENABLE_NGHTTP2=ON +WIRESHARK_DEPENDENCIES += nghttp2 +else +WIRESHARK_CONF_OPTS += -DENABLE_NGHTTP2=OFF +endif + +ifeq ($(BR2_PACKAGE_OPUS),y) +WIRESHARK_CONF_OPTS += -DENABLE_OPUS=ON +WIRESHARK_DEPENDENCIES += opus +else +WIRESHARK_CONF_OPTS += -DENABLE_OPUS=OFF +endif + +ifeq ($(BR2_PACKAGE_SBC),y) +WIRESHARK_CONF_OPTS += -DENABLE_SBC=ON +WIRESHARK_DEPENDENCIES += sbc +else +WIRESHARK_CONF_OPTS += -DENABLE_SBC=OFF +endif + +ifeq ($(BR2_PACKAGE_SNAPPY),y) +WIRESHARK_CONF_OPTS += -DENABLE_SNAPPY=ON +WIRESHARK_DEPENDENCIES += snappy +else +WIRESHARK_CONF_OPTS += -DENABLE_SNAPPY=OFF +endif + +ifeq ($(BR2_PACKAGE_SPANDSP),y) +WIRESHARK_CONF_OPTS += -DENABLE_SPANDSP=ON +WIRESHARK_DEPENDENCIES += spandsp +else +WIRESHARK_CONF_OPTS += -DENABLE_SPANDSP=OFF +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +WIRESHARK_CONF_OPTS += -DBUILD_sdjournal=ON +WIRESHARK_DEPENDENCIES += systemd +else +WIRESHARK_CONF_OPTS += -DBUILD_sdjournal=OFF +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +WIRESHARK_CONF_OPTS += -DENABLE_ZLIB=ON +WIRESHARK_DEPENDENCIES += zlib +else +WIRESHARK_CONF_OPTS += -DENABLE_ZLIB=OFF +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +WIRESHARK_CONF_OPTS += -DENABLE_ZSTD=ON +WIRESHARK_DEPENDENCIES += zstd +else +WIRESHARK_CONF_OPTS += -DENABLE_ZSTD=OFF +endif + +# Disable plugins as some of them (like l16mono) can't be built +# statically. ENABLE_STATIC=ON actually means "disable shared library" +# and ENABLE_STATIC=OFF means "enable shared library". So for the +# BR2_SHARED_STATIC_LIBS=y case, we want ENABLE_STATIC=OFF even if +# that sounds counter-intuitive. +ifeq ($(BR2_STATIC_LIBS),y) +WIRESHARK_CONF_OPTS += \ + -DENABLE_PLUGINS=OFF \ + -DENABLE_STATIC=ON \ + -DUSE_STATIC=ON +else +WIRESHARK_CONF_OPTS += \ + -DENABLE_PLUGINS=ON \ + -DENABLE_STATIC=OFF \ + -DUSE_STATIC=OFF +endif + +define WIRESHARK_REMOVE_DOCS + find $(TARGET_DIR)/usr/share/wireshark -name '*.txt' -print0 \ + -o -name '*.html' -print0 | xargs -0 rm -f +endef + +WIRESHARK_POST_INSTALL_TARGET_HOOKS += WIRESHARK_REMOVE_DOCS + +$(eval $(cmake-package)) diff --git a/package/wlroots/0001-Add-feature-macros-to-more-C-files.patch b/package/wlroots/0001-Add-feature-macros-to-more-C-files.patch new file mode 100644 index 00000000..9467318b --- /dev/null +++ b/package/wlroots/0001-Add-feature-macros-to-more-C-files.patch @@ -0,0 +1,181 @@ +From 7854cd141f6f4c896afdc86229671d443ca7ba10 Mon Sep 17 00:00:00 2001 +From: Paul Cercueil +Date: Thu, 18 Feb 2021 22:31:39 +0000 +Subject: [PATCH] Add feature macros to more C files + +These source files use "struct timespec", which is POSIX 1993.09. + +Upstream: Rejected (Upstream does not want these workarounds) +see: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/2493 + +Signed-off-by: Paul Cercueil +[Retrieved from: https://github.com/swaywm/wlroots/pull/2493] +Signed-off-by: Fabrice Fontaine +[Julien: refreshed the patch to be applied with fuzz factor 0] +Signed-off-by: Julien Olivain +--- + backend/wayland/output.c | 1 + + types/data_device/wlr_data_device.c | 1 + + types/data_device/wlr_drag.c | 1 + + types/wlr_export_dmabuf_v1.c | 1 + + types/wlr_idle.c | 1 + + types/wlr_keyboard_shortcuts_inhibit_v1.c | 1 + + types/wlr_pointer_constraints_v1.c | 1 + + types/wlr_primary_selection.c | 1 + + types/wlr_relative_pointer_v1.c | 1 + + types/wlr_screencopy_v1.c | 1 + + types/wlr_virtual_pointer_v1.c | 1 + + types/wlr_xdg_decoration_v1.c | 1 + + types/xdg_shell/wlr_xdg_popup.c | 1 + + types/xdg_shell/wlr_xdg_positioner.c | 1 + + types/xdg_shell/wlr_xdg_shell.c | 1 + + types/xdg_shell/wlr_xdg_surface.c | 1 + + 16 files changed, 16 insertions(+) + +diff --git a/backend/wayland/output.c b/backend/wayland/output.c +index c4b95e1..d5699d3 100644 +--- a/backend/wayland/output.c ++++ b/backend/wayland/output.c +@@ -1,3 +1,4 @@ ++#define _POSIX_C_SOURCE 199309L + #include + #include + #include +diff --git a/types/data_device/wlr_data_device.c b/types/data_device/wlr_data_device.c +index 7e67479..2db13a6 100644 +--- a/types/data_device/wlr_data_device.c ++++ b/types/data_device/wlr_data_device.c +@@ -1,3 +1,4 @@ ++#define _POSIX_C_SOURCE 199309L + #include + #include + #include +diff --git a/types/data_device/wlr_drag.c b/types/data_device/wlr_drag.c +index c1fa801..8981ea0 100644 +--- a/types/data_device/wlr_drag.c ++++ b/types/data_device/wlr_drag.c +@@ -1,3 +1,4 @@ ++#define _POSIX_C_SOURCE 199309L + #include + #include + #include +diff --git a/types/wlr_export_dmabuf_v1.c b/types/wlr_export_dmabuf_v1.c +index c1d26e6..cd06615 100644 +--- a/types/wlr_export_dmabuf_v1.c ++++ b/types/wlr_export_dmabuf_v1.c +@@ -1,3 +1,4 @@ ++#define _POSIX_C_SOURCE 199309L + #include + #include + #include +diff --git a/types/wlr_idle.c b/types/wlr_idle.c +index cb3a1cc..5f1fa95 100644 +--- a/types/wlr_idle.c ++++ b/types/wlr_idle.c +@@ -1,3 +1,4 @@ ++#define _POSIX_C_SOURCE 199309L + #include + #include + #include +diff --git a/types/wlr_keyboard_shortcuts_inhibit_v1.c b/types/wlr_keyboard_shortcuts_inhibit_v1.c +index cc9bac1..3924893 100644 +--- a/types/wlr_keyboard_shortcuts_inhibit_v1.c ++++ b/types/wlr_keyboard_shortcuts_inhibit_v1.c +@@ -1,3 +1,4 @@ ++#define _POSIX_C_SOURCE 199309L + #include + #include + #include +diff --git a/types/wlr_pointer_constraints_v1.c b/types/wlr_pointer_constraints_v1.c +index 7a8d209..70b0984 100644 +--- a/types/wlr_pointer_constraints_v1.c ++++ b/types/wlr_pointer_constraints_v1.c +@@ -1,3 +1,4 @@ ++#define _POSIX_C_SOURCE 199309L + #include + #include + #include +diff --git a/types/wlr_primary_selection.c b/types/wlr_primary_selection.c +index d576bf0..bac4daa 100644 +--- a/types/wlr_primary_selection.c ++++ b/types/wlr_primary_selection.c +@@ -1,3 +1,4 @@ ++#define _POSIX_C_SOURCE 199309L + #include + #include + #include +diff --git a/types/wlr_relative_pointer_v1.c b/types/wlr_relative_pointer_v1.c +index 44da791..f6925b8 100644 +--- a/types/wlr_relative_pointer_v1.c ++++ b/types/wlr_relative_pointer_v1.c +@@ -1,3 +1,4 @@ ++#define _POSIX_C_SOURCE 199309L + #include + #include + #include +diff --git a/types/wlr_screencopy_v1.c b/types/wlr_screencopy_v1.c +index 4ca659a..76c582e 100644 +--- a/types/wlr_screencopy_v1.c ++++ b/types/wlr_screencopy_v1.c +@@ -1,3 +1,4 @@ ++#define _POSIX_C_SOURCE 199309L + #include + #include + #include +diff --git a/types/wlr_virtual_pointer_v1.c b/types/wlr_virtual_pointer_v1.c +index b452ff5..661e613 100644 +--- a/types/wlr_virtual_pointer_v1.c ++++ b/types/wlr_virtual_pointer_v1.c +@@ -1,3 +1,4 @@ ++#define _POSIX_C_SOURCE 199309L + #include + #include + #include +diff --git a/types/wlr_xdg_decoration_v1.c b/types/wlr_xdg_decoration_v1.c +index fcd97a5..1850665 100644 +--- a/types/wlr_xdg_decoration_v1.c ++++ b/types/wlr_xdg_decoration_v1.c +@@ -1,3 +1,4 @@ ++#define _POSIX_C_SOURCE 199309L + #include + #include + #include +diff --git a/types/xdg_shell/wlr_xdg_popup.c b/types/xdg_shell/wlr_xdg_popup.c +index fa99acd..8361eef 100644 +--- a/types/xdg_shell/wlr_xdg_popup.c ++++ b/types/xdg_shell/wlr_xdg_popup.c +@@ -1,3 +1,4 @@ ++#define _POSIX_C_SOURCE 199309L + #include + #include + #include +diff --git a/types/xdg_shell/wlr_xdg_positioner.c b/types/xdg_shell/wlr_xdg_positioner.c +index 6a991bb..dae879b 100644 +--- a/types/xdg_shell/wlr_xdg_positioner.c ++++ b/types/xdg_shell/wlr_xdg_positioner.c +@@ -1,3 +1,4 @@ ++#define _POSIX_C_SOURCE 199309L + #include + #include + #include +diff --git a/types/xdg_shell/wlr_xdg_shell.c b/types/xdg_shell/wlr_xdg_shell.c +index 70b777d..16d275a 100644 +--- a/types/xdg_shell/wlr_xdg_shell.c ++++ b/types/xdg_shell/wlr_xdg_shell.c +@@ -1,3 +1,4 @@ ++#define _POSIX_C_SOURCE 199309L + #include + #include + #include "types/wlr_xdg_shell.h" +diff --git a/types/xdg_shell/wlr_xdg_surface.c b/types/xdg_shell/wlr_xdg_surface.c +index a03b90a..a6267cf 100644 +--- a/types/xdg_shell/wlr_xdg_surface.c ++++ b/types/xdg_shell/wlr_xdg_surface.c +@@ -1,3 +1,4 @@ ++#define _POSIX_C_SOURCE 199309L + #include + #include + #include +-- +2.45.2 + diff --git a/package/wlroots/Config.in b/package/wlroots/Config.in new file mode 100644 index 00000000..d81506c3 --- /dev/null +++ b/package/wlroots/Config.in @@ -0,0 +1,66 @@ +comment "wlroots needs udev, EGL and OpenGL ES support" + depends on !BR2_PACKAGE_HAS_LIBEGL || \ + !BR2_PACKAGE_HAS_LIBEGL || \ + !BR2_PACKAGE_HAS_LIBGLES || \ + !BR2_PACKAGE_HAS_UDEV + +comment "wlroots needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS + +config BR2_PACKAGE_WLROOTS + bool "wlroots" + depends on !BR2_STATIC_LIBS # wayland + depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm, wayland + depends on BR2_PACKAGE_HAS_UDEV # libinput + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_HAS_LIBGLES + select BR2_PACKAGE_HWDATA + select BR2_PACKAGE_HWDATA_PNP_IDS + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_LIBINPUT + select BR2_PACKAGE_LIBXKBCOMMON + select BR2_PACKAGE_PIXMAN + select BR2_PACKAGE_SEATD + select BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_WAYLAND_PROTOCOLS + help + wlroots is a modular Wayland library for building compositors + which implements many of their common features. + + https://gitlab.freedesktop.org/wlroots/wlroots + +if BR2_PACKAGE_WLROOTS + +config BR2_PACKAGE_WLROOTS_X11 + bool "X11 backend" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_LIBXCB + select BR2_PACKAGE_XCB_UTIL_RENDERUTIL + select BR2_PACKAGE_XCB_UTIL_WM + select BR2_PACKAGE_XLIB_LIBX11 + help + Support Wayland sessions nested inside a X11 window + +config BR2_PACKAGE_WLROOTS_XWAYLAND + bool "XWayland support" + depends on BR2_PACKAGE_XORG7 # libxcb, xcb-util-wm, xwayland + depends on BR2_USE_MMU # xwayland + depends on !BR2_STATIC_LIBS # xwayland + depends on BR2_TOOLCHAIN_HAS_THREADS # xwayland + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # xwayland -> xlib_libxshmfence + select BR2_PACKAGE_LIBXCB + select BR2_PACKAGE_XCB_UTIL_WM + select BR2_PACKAGE_XWAYLAND + help + Support for running X11 applications under wayland + +comment "XWayland support needs X.org enabled" + depends on !BR2_PACKAGE_XORG7 + +comment "XWayland support needs a 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 + +endif diff --git a/package/wlroots/wlroots.hash b/package/wlroots/wlroots.hash new file mode 100644 index 00000000..8ab05393 --- /dev/null +++ b/package/wlroots/wlroots.hash @@ -0,0 +1,5 @@ +# Generated locally, after checking https://gitlab.freedesktop.org/wlroots/wlroots/-/releases/0.16.2/downloads/wlroots-0.16.2.tar.gz.sig +sha256 83e9a11605f23d4bf781ab1947089483d9ec3f7e9ba65398e0609593b77d44aa wlroots-0.16.2.tar.gz + +# Hashes for license files: +sha256 ffd3737a478b83a8b51b42757d3bf909ef36694508355879722e11fc1fa6736b LICENSE diff --git a/package/wlroots/wlroots.mk b/package/wlroots/wlroots.mk new file mode 100644 index 00000000..fdd2fb82 --- /dev/null +++ b/package/wlroots/wlroots.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# wlroots +# +################################################################################ + +WLROOTS_VERSION = 0.16.2 +WLROOTS_SITE = https://gitlab.freedesktop.org/wlroots/wlroots/-/releases/$(WLROOTS_VERSION)/downloads +WLROOTS_LICENSE = MIT +WLROOTS_LICENSE_FILES = LICENSE +WLROOTS_INSTALL_STAGING = YES + +WLROOTS_DEPENDENCIES = \ + host-pkgconf \ + host-wayland \ + hwdata \ + libinput \ + libxkbcommon \ + libegl \ + libgles \ + pixman \ + seatd \ + udev \ + wayland \ + wayland-protocols + +WLROOTS_CONF_OPTS = -Dexamples=false -Dxcb-errors=disabled + +WLROOTS_RENDERERS = gles2 +WLROOTS_BACKENDS = libinput drm + +ifeq ($(BR2_PACKAGE_WLROOTS_X11),y) +WLROOTS_BACKENDS += x11 +WLROOTS_DEPENDENCIES += libxcb xcb-util-wm xcb-util-renderutil xlib_libX11 +endif + +ifeq ($(BR2_PACKAGE_WLROOTS_XWAYLAND),y) +WLROOTS_CONF_OPTS += -Dxwayland=enabled +WLROOTS_DEPENDENCIES += libxcb xcb-util-wm xwayland +else +WLROOTS_CONF_OPTS += -Dxwayland=disabled +endif + +ifeq ($(BR2_PACKAGE_MESA3D_VULKAN_DRIVER)$(BR2_PACKAGE_VULKAN_LOADER),yy) +WLROOTS_RENDERERS += vulkan +WLROOTS_DEPENDENCIES += mesa3d vulkan-loader +endif + +WLROOTS_CONF_OPTS += \ + -Dbackends=$(subst $(space),$(comma),$(strip $(WLROOTS_BACKENDS))) \ + -Drenderers=$(subst $(space),$(comma),$(strip $(WLROOTS_RENDERERS))) + +$(eval $(meson-package)) diff --git a/package/wmctrl/Config.in b/package/wmctrl/Config.in new file mode 100644 index 00000000..37a1f252 --- /dev/null +++ b/package/wmctrl/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_WMCTRL + bool "wmctrl" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + select BR2_PACKAGE_LIBGLIB2 + help + Provides command line access to almost all the features + defined in the EWMH specification. It can be used, for + example, to get information about the window manager, to get + a detailed list of desktops and managed windows, to switch + and resize desktops, to make windows full-screen, + always-above or sticky, and to activate, close, move, + resize, maximize and minimize them. + + https://sites.google.com/site/tstyblo/wmctrl/ + +comment "wmctrl needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_XORG7 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/wmctrl/wmctrl.hash b/package/wmctrl/wmctrl.hash new file mode 100644 index 00000000..531f64a0 --- /dev/null +++ b/package/wmctrl/wmctrl.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 d78a1efdb62f18674298ad039c5cbdb1edb6e8e149bb3a8e3a01a4750aa3cca9 wmctrl-1.07.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/wmctrl/wmctrl.mk b/package/wmctrl/wmctrl.mk new file mode 100644 index 00000000..36ad3513 --- /dev/null +++ b/package/wmctrl/wmctrl.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# wmctrl +# +################################################################################ + +WMCTRL_VERSION = 1.07 +WMCTRL_SITE = https://sites.google.com/site/tstyblo/wmctrl +WMCTRL_LICENSE = GPL-2.0+ +WMCTRL_LICENSE_FILES = COPYING + +WMCTRL_DEPENDENCIES = libglib2 xlib_libX11 xlib_libXmu + +WMCTRL_CONF_OPTS = \ + --x-includes=$(STAGING_DIR)/usr/include \ + --x-libraries=$(STAGING_DIR)/usr/lib + +$(eval $(autotools-package)) diff --git a/package/woff2/0001-CMake-Handle-multiple-libraries-being-returned-for-B.patch b/package/woff2/0001-CMake-Handle-multiple-libraries-being-returned-for-B.patch new file mode 100644 index 00000000..142eab27 --- /dev/null +++ b/package/woff2/0001-CMake-Handle-multiple-libraries-being-returned-for-B.patch @@ -0,0 +1,80 @@ +From 9a6d50b3f355c1e4d72a235aa0bac4856dff1785 Mon Sep 17 00:00:00 2001 +From: Adrian Perez de Castro +Date: Tue, 27 Mar 2018 19:59:23 +0100 +Subject: [PATCH] CMake: Handle multiple libraries being returned for Brotli + +Brotli is built as three libraries: libbrotlienc, libbrotlidec, and +libbrotlicommon. When requesting the linker flags using pkg-config for +e.g. libbrotlidec, it will return both libbrotlidec and libbrotlicommon. +The FindBrotli*.cmake files ignore the names of the libraries returned +by pkg-config, and hardcode only the libbrotli{enc,dec} names. While +this is fine when using shared libraries (they contain an entry for +libbrotlicommon as required library in their headers), it will cause +linker errors when Brotli has been built as static libraries, due to +the missing symbols from libbrotlicommon being unknown to the linker. + +This fixes FindBrotli*.cmake files by using the library names reported +by pkg-config (instead of hardcoding them), and applying find_library() +to each of the libraries to find their absolute paths. If any of the +libraries is missing, the corresponding BROTLI{ENC,DEC}_LIBRARIES is +unset to let find_package_handle_standard_args() report an error. +--- + cmake/FindBrotliDec.cmake | 13 +++++++++---- + cmake/FindBrotliEnc.cmake | 14 ++++++++++---- + 2 files changed, 19 insertions(+), 8 deletions(-) + +Signed-off-by: Adrian Perez de Castro +Upstream-Status: Submitted [https://github.com/google/woff2/pull/112] + +diff --git a/cmake/FindBrotliDec.cmake b/cmake/FindBrotliDec.cmake +index abb06f4..9cbb415 100644 +--- a/cmake/FindBrotliDec.cmake ++++ b/cmake/FindBrotliDec.cmake +@@ -18,10 +18,15 @@ find_path(BROTLIDEC_INCLUDE_DIRS + HINTS ${PC_BROTLIDEC_INCLUDEDIR} + ) + +-find_library(BROTLIDEC_LIBRARIES +- NAMES brotlidec +- HINTS ${PC_BROTLIDEC_LIBDIR} +-) ++set(BROTLIDEC_LIBRARIES "") ++foreach(_lib ${PC_BROTLIDEC_LIBRARIES}) ++ find_library(PC_BROTLIDEC_PATH_${_lib} ${_lib} HINTS ${PC_BROTLIDEC_LIBRARY_DIRS}) ++ if(NOT PC_BROTLIDEC_PATH_${_lib}) ++ unset(BROTLIDEC_LIBRARIES) ++ break() ++ endif() ++ list(APPEND BROTLIDEC_LIBRARIES "${PC_BROTLIDEC_PATH_${_lib}}") ++endforeach() + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(BrotliDec +diff --git a/cmake/FindBrotliEnc.cmake b/cmake/FindBrotliEnc.cmake +index 4be347d..55f3932 100644 +--- a/cmake/FindBrotliEnc.cmake ++++ b/cmake/FindBrotliEnc.cmake +@@ -18,10 +18,16 @@ find_path(BROTLIENC_INCLUDE_DIRS + HINTS ${PC_BROTLIENC_INCLUDEDIR} + ) + +-find_library(BROTLIENC_LIBRARIES +- NAMES brotlienc +- HINTS ${PC_BROTLIENC_LIBDIR} +-) ++set(BROTLIENC_LIBRARIES "") ++foreach(_lib ${PC_BROTLIENC_LIBRARIES}) ++ find_library(PC_BROTLIENC_PATH_${_lib} ${_lib} ++ HINTS ${PC_BROTLIENC_LIBRARY_DIRS}) ++ if(NOT PC_BROTLIENC_PATH_${_lib}) ++ unset(BROTLIENC_LIBRARIES) ++ break() ++ endif() ++ list(APPEND BROTLIENC_LIBRARIES "${PC_BROTLIENC_PATH_${_lib}}") ++endforeach() + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(BrotliEnc +-- +2.16.3 + diff --git a/package/woff2/Config.in b/package/woff2/Config.in new file mode 100644 index 00000000..d280414d --- /dev/null +++ b/package/woff2/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_WOFF2 + bool "woff2" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_BROTLI + help + Reference implementation for the WOFF2 font file format, + typically used for Web fonts + + https://github.com/google/woff2 + +comment "woff2 needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/woff2/woff2.hash b/package/woff2/woff2.hash new file mode 100644 index 00000000..0812dabc --- /dev/null +++ b/package/woff2/woff2.hash @@ -0,0 +1,5 @@ +# Locally generated: +sha512 c788bba1530aec463e755e901f9342f4b599e3a07f54645fef1dc388ab5d5c30625535e5dd38e9e792e04a640574baa50eeefb6b7338ab403755f4a4e0c3044d woff2-1.0.2.tar.gz + +# Hash for license files: +sha512 8ee924da3fb5d16135adcf6a8fbe9e2e8f3d2d80468617e72ca4fa059a60f8455c9a5f68a8dc381b1297c8bf39c887a912d0f69246d2604ada74d3da9e8e490b LICENSE diff --git a/package/woff2/woff2.mk b/package/woff2/woff2.mk new file mode 100644 index 00000000..937e8cf7 --- /dev/null +++ b/package/woff2/woff2.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# woff2 +# +################################################################################ + +WOFF2_VERSION = 1.0.2 +WOFF2_SITE = $(call github,google,woff2,v$(WOFF2_VERSION)) +WOFF2_LICENSE = MIT +WOFF2_LICENSE_FILES = LICENSE +WOFF2_INSTALL_STAGING = YES +WOFF2_DEPENDENCIES = brotli +WOFF2_CONF_OPTS = \ + -DNOISY_LOGGING=OFF + +# The CMake build files for woff2 manually set some RPATH handling options +# which make the installation steps fail with static builds, so pass this +# to prevent any attempt of mangling RPATH that CMake would do. +ifneq ($(BR2_SHARED_LIBS),y) +WOFF2_CONF_OPTS += -DCMAKE_SKIP_RPATH=ON +endif + +$(eval $(cmake-package)) diff --git a/package/wolfssl/Config.in b/package/wolfssl/Config.in new file mode 100644 index 00000000..9d173412 --- /dev/null +++ b/package/wolfssl/Config.in @@ -0,0 +1,43 @@ +config BR2_PACKAGE_WOLFSSL_ASM_SUPPORTS + bool + default y if BR2_aarch64 + default y if (BR2_arm || BR2_armeb) && !BR2_ARM_CPU_ARMV4 # clz + default y if BR2_powerpc + default y if BR2_powerpc64 || BR2_powerpc64le + default y if BR2_mips64 && !BR2_MIPS_CPU_MIPS32R6 + default y if BR2_mips64el && !BR2_MIPS_CPU_MIPS32R6 + default y if BR2_mips || BR2_mipsel + default y if BR2_riscv && BR2_RISCV_ISA_RVM + default y if BR2_s390x + +config BR2_PACKAGE_WOLFSSL + bool "wolfssl" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + The wolfSSL embedded SSL library (formerly CyaSSL) is a + lightweight, portable, C-language-based SSL/TLS library + targeted at IoT, embedded, and RTOS environments primarily + because of its size, speed, and feature set. + + https://www.wolfssl.com/ + +if BR2_PACKAGE_WOLFSSL + +config BR2_PACKAGE_WOLFSSL_ALL + bool "enable all features, except SSLv3" + depends on !BR2_STATIC_LIBS + help + Enable all wolfSSL features, except SSL version 3.0 support. + +comment "all features, except SSLv3 needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_WOLFSSL_SSLV3 + bool "enable SSLv3" + help + Enable SSL version 3.0 support. + +endif + +comment "wolfssl needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/wolfssl/wolfssl.hash b/package/wolfssl/wolfssl.hash new file mode 100644 index 00000000..9a1e8bfd --- /dev/null +++ b/package/wolfssl/wolfssl.hash @@ -0,0 +1,6 @@ +# Locally computed: +sha256 0f2ed82e345b833242705bbc4b08a2a2037a33f7bf9c610efae6464f6b10e305 wolfssl-5.7.2.tar.gz + +# Hash for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 b23c1da1f85d699d3288d73c952b4cd02760d23dc1ddc1b221cbb8be82387189 LICENSING diff --git a/package/wolfssl/wolfssl.mk b/package/wolfssl/wolfssl.mk new file mode 100644 index 00000000..91ab7ca0 --- /dev/null +++ b/package/wolfssl/wolfssl.mk @@ -0,0 +1,57 @@ +################################################################################ +# +# wolfssl +# +################################################################################ + +WOLFSSL_VERSION = 5.7.2 +WOLFSSL_SITE = $(call github,wolfSSL,wolfssl,v$(WOLFSSL_VERSION)-stable) +WOLFSSL_INSTALL_STAGING = YES + +WOLFSSL_LICENSE = GPL-2.0+ +WOLFSSL_LICENSE_FILES = COPYING LICENSING +WOLFSSL_CPE_ID_VENDOR = wolfssl +WOLFSSL_CONFIG_SCRIPTS = wolfssl-config +# From git +WOLFSSL_AUTORECONF = YES +WOLFSSL_DEPENDENCIES = host-pkgconf + +WOLFSSL_CONF_OPTS = \ + --disable-examples \ + --disable-crypttests \ + --disable-option-checking + +ifeq ($(BR2_PACKAGE_WOLFSSL_ALL),y) +WOLFSSL_CONF_OPTS += --enable-all +else +WOLFSSL_CONF_OPTS += --disable-all +endif + +ifeq ($(BR2_PACKAGE_WOLFSSL_SSLV3),y) +WOLFSSL_CONF_OPTS += --enable-sslv3 +else +WOLFSSL_CONF_OPTS += --disable-sslv3 +endif + +ifeq ($(BR2_PACKAGE_WOLFSSL_ASM_SUPPORTS),y) +WOLFSSL_CONF_OPTS += --enable-asm +else +WOLFSSL_CONF_OPTS += --disable-asm +endif + +# enable ARMv8 hardware acceleration +ifeq ($(BR2_aarch64),y) +WOLFSSL_CONF_OPTS += --enable-armasm +# the flag -mstrict-align is needed to prevent build errors caused by +# some inline assembly in parts of the AES structure using the "m" +# constraint +WOLFSSL_CONF_ENV += CPPFLAGS="$(TARGET_CPPFLAGS) -mstrict-align" +else +WOLFSSL_CONF_OPTS += --disable-armasm +endif + +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +WOLFSSL_CONF_OPTS += --with-arm-target=thumb +endif + +$(eval $(autotools-package)) diff --git a/package/wolftpm/Config.in b/package/wolftpm/Config.in new file mode 100644 index 00000000..4ed1853b --- /dev/null +++ b/package/wolftpm/Config.in @@ -0,0 +1,46 @@ +config BR2_PACKAGE_WOLFTPM + bool "wolftpm" + help + wolfTPM is a portable, open-source TPM 2.0 stack with + backward API compatibility, designed for embedded use. + No external dependencies, compact code size with low + resource usage. + + https://www.wolfssl.com/ + +if BR2_PACKAGE_WOLFTPM + +config BR2_PACKAGE_WOLFTPM_WOLFCRYPT + bool "wolfCrypt hooks" + default y + depends on BR2_TOOLCHAIN_HAS_THREADS # wolfssl + depends on !BR2_STATIC_LIBS # wolfssl-all + select BR2_PACKAGE_WOLFSSL + # not mandatory, but needed to get all features + select BR2_PACKAGE_WOLFSSL_ALL + help + Enable wolfCrypt hooks for RNG, Auth Sessions and Parameter + encryption. Disabling this option is not recommended as it + could create a security breach in most environments. + +comment "wolfCrypt hooks need a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +config BR2_PACKAGE_WOLFTPM_ST33 + bool "ST33 extra functionality" + help + Enable support of TPM 2.0 extra functionality offered by the + STMicroelectronics ST33 chip. + +config BR2_PACKAGE_WOLFTPM_NUVOTON + bool "NPCT750 extra functionality" + help + Enable support of TPM 2.0 extra functionality offered by the + Nuvoton NPCT750 chip. + +config BR2_PACKAGE_WOLFTPM_DEBUG + bool "Debug output" + help + Enable debug messages in wolfTPM. + +endif diff --git a/package/wolftpm/wolftpm.hash b/package/wolftpm/wolftpm.hash new file mode 100644 index 00000000..33d0aa24 --- /dev/null +++ b/package/wolftpm/wolftpm.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b4f6c090cad7fdbd4fd976f1bd8f271694669459b240fa14bec60a89b749dc1b wolftpm-3.1.0.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/wolftpm/wolftpm.mk b/package/wolftpm/wolftpm.mk new file mode 100644 index 00000000..4d1d4598 --- /dev/null +++ b/package/wolftpm/wolftpm.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# wolftpm +# +################################################################################ + +WOLFTPM_VERSION = 3.1.0 +WOLFTPM_SITE = $(call github,wolfSSL,wolfTPM,v$(WOLFTPM_VERSION)) +WOLFTPM_INSTALL_STAGING = YES +WOLFTPM_LICENSE = GPL-2.0+ +WOLFTPM_LICENSE_FILES = LICENSE +WOLFTPM_CONFIG_SCRIPTS = wolftpm-config + +# wolfTPM's source code is released without a configure script, +# therefore we need autoreconf +WOLFTPM_AUTORECONF = YES + +WOLFTPM_CONF_OPTS = \ + --disable-examples \ + --enable-devtpm + +# Fix for missing config.rpath in the codebase +define WOLFTPM_TOUCH_CONFIG_RPATH + mkdir -p $(@D)/build-aux + touch $(@D)/build-aux/config.rpath +endef +WOLFTPM_PRE_CONFIGURE_HOOKS += WOLFTPM_TOUCH_CONFIG_RPATH + +ifeq ($(BR2_PACKAGE_WOLFTPM_WOLFCRYPT),y) +WOLFTPM_CONF_OPTS += \ + --enable-wolfcrypt \ + --with-wolfcrypt=$(STAGING_DIR)/usr +WOLFTPM_DEPENDENCIES += wolfssl +else +WOLFTPM_CONF_OPTS += --disable-wolfcrypt +endif + +ifeq ($(BR2_PACKAGE_WOLFTPM_ST33),y) +WOLFTPM_CONF_OPTS += --enable-st33 +else +WOLFTPM_CONF_OPTS += --disable-st33 +endif + +ifeq ($(BR2_PACKAGE_WOLFTPM_NUVOTON),y) +WOLFTPM_CONF_OPTS += --enable-nuvoton +else +WOLFTPM_CONF_OPTS += --disable-nuvoton +endif + +ifeq ($(BR2_PACKAGE_WOLFTPM_DEBUG),y) +WOLFTPM_CONF_OPTS += --enable-debug +else +WOLFTPM_CONF_OPTS += --disable-debug +endif + +$(eval $(autotools-package)) diff --git a/package/wpa_supplicant/0001-Revert-Mark-authorization-completed-on-driver-indica.patch b/package/wpa_supplicant/0001-Revert-Mark-authorization-completed-on-driver-indica.patch new file mode 100644 index 00000000..89954eb7 --- /dev/null +++ b/package/wpa_supplicant/0001-Revert-Mark-authorization-completed-on-driver-indica.patch @@ -0,0 +1,55 @@ +From 170d8a433308ee39f87af94acaef461f8e80b67b Mon Sep 17 00:00:00 2001 +From: Janne Grunau +Date: Sun, 4 Aug 2024 13:24:42 +0200 +Subject: [PATCH] Revert "Mark authorization completed on driver indication during 4-way HS offload" + +This reverts commit 41638606054a09867fe3f9a2b5523aa4678cbfa5. + +Signed-off-by: Janne Grunau +Signed-off-by: Sergey Matyukevich + +Upstream: not yet sent, ongoing discussion http://lists.infradead.org/pipermail/hostap/2024-August/042893.html + +--- + wpa_supplicant/events.c | 25 ++++++++----------------- + 1 file changed, 8 insertions(+), 17 deletions(-) + +diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c +index 49917f7aa..bbb3a3eda 100644 +--- a/wpa_supplicant/events.c ++++ b/wpa_supplicant/events.c +@@ -4327,23 +4327,14 @@ static void wpa_supplicant_event_assoc(struct wpa_supplicant *wpa_s, + eapol_sm_notify_eap_success(wpa_s->eapol, true); + } else if ((wpa_s->drv_flags & WPA_DRIVER_FLAGS_4WAY_HANDSHAKE_PSK) && + wpa_key_mgmt_wpa_psk(wpa_s->key_mgmt)) { +- if (already_authorized) { +- /* +- * We are done; the driver will take care of RSN 4-way +- * handshake. +- */ +- wpa_supplicant_cancel_auth_timeout(wpa_s); +- wpa_supplicant_set_state(wpa_s, WPA_COMPLETED); +- eapol_sm_notify_portValid(wpa_s->eapol, true); +- eapol_sm_notify_eap_success(wpa_s->eapol, true); +- } else { +- /* Update port, WPA_COMPLETED state from the +- * EVENT_PORT_AUTHORIZED handler when the driver is done +- * with the 4-way handshake. +- */ +- wpa_msg(wpa_s, MSG_DEBUG, +- "ASSOC INFO: wait for driver port authorized indication"); +- } ++ /* ++ * We are done; the driver will take care of RSN 4-way ++ * handshake. ++ */ ++ wpa_supplicant_cancel_auth_timeout(wpa_s); ++ wpa_supplicant_set_state(wpa_s, WPA_COMPLETED); ++ eapol_sm_notify_portValid(wpa_s->eapol, true); ++ eapol_sm_notify_eap_success(wpa_s->eapol, true); + } else if ((wpa_s->drv_flags & WPA_DRIVER_FLAGS_4WAY_HANDSHAKE_8021X) && + wpa_key_mgmt_wpa_ieee8021x(wpa_s->key_mgmt)) { + /* +-- +2.45.2 + diff --git a/package/wpa_supplicant/0002-macsec_linux-Hardware-offload-requires-Linux-headers.patch b/package/wpa_supplicant/0002-macsec_linux-Hardware-offload-requires-Linux-headers.patch new file mode 100644 index 00000000..7330319d --- /dev/null +++ b/package/wpa_supplicant/0002-macsec_linux-Hardware-offload-requires-Linux-headers.patch @@ -0,0 +1,53 @@ +From 809d9d8172db8e2a08ff639875f838b5b86d2641 Mon Sep 17 00:00:00 2001 +From: Sergey Matyukevich +Date: Thu, 22 Aug 2024 00:03:41 +0300 +Subject: [PATCH] macsec_linux: Hardware offload requires Linux headers >= v5.7 + +Hardware offload in Linux macsec driver is enabled in compile time if +libnl version is >= v3.6. This is not sufficient for successful build +since enum 'macsec_offload' has been added to Linux header if_link.h +in kernels v5.6 and v5.7, see commits: +- https://github.com/torvalds/linux/commit/21114b7feec29e4425a3ac48a037569c016a46c8 +- https://github.com/torvalds/linux/commit/76564261a7db80c5f5c624e0122a28787f266bdf + +New libnl with older Linux headers is a valid combination. This is how +hostapd build failure has been detected by Buildroot autobuilder, see: +- http://autobuild.buildroot.net/results/b59d5bc5bd17683a3a1e3577c40c802e81911f84/ + +Extend compile time condition for the enablement of the macsec hardware +offload adding Linux headers version check. + +Fixes: 40c139664439 ("macsec_linux: Add support for MACsec hardware offload") +Signed-off-by: Sergey Matyukevich + +Upstream: https://w1.fi/cgit/hostap/commit/?id=809d9d8172db8e2a08ff639875f838b5b86d2641 + +--- + src/drivers/driver_macsec_linux.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/drivers/driver_macsec_linux.c b/src/drivers/driver_macsec_linux.c +index c86715498..fad47a292 100644 +--- a/src/drivers/driver_macsec_linux.c ++++ b/src/drivers/driver_macsec_linux.c +@@ -19,6 +19,7 @@ + #include + #include + #include ++#include + #include + + #include "utils/common.h" +@@ -32,7 +33,8 @@ + + #define UNUSED_SCI 0xffffffffffffffff + +-#if LIBNL_VER_NUM >= LIBNL_VER(3, 6) ++#if (LIBNL_VER_NUM >= LIBNL_VER(3, 6) && \ ++ LINUX_VERSION_CODE >= KERNEL_VERSION(5, 7, 0)) + #define LIBNL_HAS_OFFLOAD + #endif + +-- +2.46.0 + diff --git a/package/wpa_supplicant/50-wpa_supplicant.preset b/package/wpa_supplicant/50-wpa_supplicant.preset new file mode 100644 index 00000000..9af8562c --- /dev/null +++ b/package/wpa_supplicant/50-wpa_supplicant.preset @@ -0,0 +1,4 @@ +disable wpa_supplicant@.service +disable wpa_supplicant-nl80211@.service +disable wpa_supplicant-wired@.service + diff --git a/package/wpa_supplicant/Config.in b/package/wpa_supplicant/Config.in new file mode 100644 index 00000000..92953f69 --- /dev/null +++ b/package/wpa_supplicant/Config.in @@ -0,0 +1,178 @@ +menuconfig BR2_PACKAGE_WPA_SUPPLICANT + bool "wpa_supplicant" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4 if BR2_PACKAGE_LIBOPENSSL + help + WPA supplicant for secure wireless networks + + http://w1.fi/wpa_supplicant/ + +if BR2_PACKAGE_WPA_SUPPLICANT + +config BR2_PACKAGE_WPA_SUPPLICANT_NL80211 + bool "Enable nl80211 support" + default y + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_LIBNL + help + Enable support for nl80211. This is the current wireless + API for Linux, supported by all wireless drivers in vanilla + Linux, but may not be supported by some out-of-tree Linux + wireless drivers. wpa_supplicant will still fall back to + using the Wireless Extensions (wext) API with these drivers. + + If this option is disabled, then only the deprecated wext + API will be supported, with far less features. Linux may + supports using wext with modern drivers using a + compatibility layer, but it must be enabled in the kernel + configuration. + +comment "nl80211 support needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_WPA_SUPPLICANT_WEXT + bool "Enable wext (deprecated)" + default y if !BR2_TOOLCHAIN_HAS_THREADS + help + Enable support for wext. This is the historic wireless API + for Linux, which is now deprecated and in maintenance-only in + the kernel. It may still be required by out-of-tree drivers. + +config BR2_PACKAGE_WPA_SUPPLICANT_WIRED + bool "Enable wired support" + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6 + select BR2_PACKAGE_LIBNL + select BR2_PACKAGE_WPA_SUPPLICANT_EAP + help + Include the "wired" driver, so the internal IEEE 802.1x + supplicant can be used with Ethernet. This also enables + support for MACSEC. + +comment "wired macsec support needs a toolchain w/ headers >= 4.6" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6 + +comment "wired support needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +comment "wpa_supplicant will be useless without at least one driver" + depends on !BR2_PACKAGE_WPA_SUPPLICANT_NL80211 && \ + !BR2_PACKAGE_WPA_SUPPLICANT_WEXT && \ + !BR2_PACKAGE_WPA_SUPPLICANT_WIRED + +config BR2_PACKAGE_WPA_SUPPLICANT_IBSS_RSN + bool "Enable IBSS RSN" + depends on BR2_PACKAGE_WPA_SUPPLICANT_NL80211 + help + Enable support for RSN/WPA2 in Ad-Hoc mode. + +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. This links in parts of hostapd functionality into + wpa_supplicant, making it bigger but dispensing the need for + a separate hostapd binary in some applications hence being + smaller overall. It also enables support for Wi-Fi Direct. + +config BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY + bool "Enable Wi-Fi Display" + depends on BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT + 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 + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + help + Enable support for open and secured mesh networking + (IEEE 802.11s) + +config BR2_PACKAGE_WPA_SUPPLICANT_OVERRIDES + bool "Enable HT/VHT/HE overrides" + help + Enable wpa_supplicant overrides for HT, VHT and HE (disable + HT/HT40, mask MCS rates, etc.) in wpa_supplicant + configuration file. + +config BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN + bool "Enable autoscan" + help + Enable support for the autoscan feature (allow periodic scan) + +config BR2_PACKAGE_WPA_SUPPLICANT_EAP + bool "Enable EAP" + help + Enable support for EAP, 802.1x/WPA-Enterprise and FILS. + +config BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT + bool "Enable HS20" + select BR2_PACKAGE_WPA_SUPPLICANT_EAP + help + Enable Hotspot 2.0 and IEEE 802.11u interworking + functionality. + +config BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG + bool "Enable syslog support" + help + Enable support for sending debug messages to syslog. + +config BR2_PACKAGE_WPA_SUPPLICANT_WPS + bool "Enable WPS" + help + Enable support for Wi-Fi Protected Setup (WPS). + +config BR2_PACKAGE_WPA_SUPPLICANT_WPA3 + bool "Enable WPA3 support" + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + help + Enable WPA3 support including OWE, SAE, DPP + +config BR2_PACKAGE_WPA_SUPPLICANT_CLI + bool "Install wpa_cli binary" + select BR2_PACKAGE_WPA_SUPPLICANT_CTRL_IFACE + help + Install wpa_cli command line utility + +config BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO + bool "Install wpa_client shared library" + depends on !BR2_STATIC_LIBS + help + Install libwpa_client.so. + +comment "wpa_client library needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE + bool "Install wpa_passphrase binary" + help + Install wpa_passphrase command line utility. + +config BR2_PACKAGE_WPA_SUPPLICANT_CTRL_IFACE + bool "Enable the Unix-socket control interface" + help + Enable support for the Unix-socket-based API. + +config BR2_PACKAGE_WPA_SUPPLICANT_DBUS + bool "Enable support for the DBus control interface" + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus + select BR2_PACKAGE_DBUS + help + Enable support for the DBus control interface. + +comment "dbus support needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_WPA_SUPPLICANT_DBUS_INTROSPECTION + bool "Introspection support" + depends on BR2_PACKAGE_WPA_SUPPLICANT_DBUS + help + Add introspection support for the DBus control interface. + +endif diff --git a/package/wpa_supplicant/ifupdown.sh b/package/wpa_supplicant/ifupdown.sh new file mode 100755 index 00000000..569344b6 --- /dev/null +++ b/package/wpa_supplicant/ifupdown.sh @@ -0,0 +1,49 @@ +#!/bin/sh + +# This file is executed by ifupdown in pre-up, post-up, pre-down and +# post-down phases of network interface configuration. + +WPA_SUP_BIN="/usr/sbin/wpa_supplicant" + +# run this script only for interfaces which have wpa-conf option +[ -z "$IF_WPA_CONF" ] && exit 0 + +# Allow wpa_supplicant interface to be specified via wpa-iface +# useful for starting wpa_supplicant on one interface of a bridge +if [ -n "$IF_WPA_IFACE" ]; then + WPA_IFACE="$IF_WPA_IFACE" +else + WPA_IFACE="$IFACE" +fi + +WPA_SUP_PIDFILE="/run/wpa_supplicant.${WPA_IFACE}.pid" + +do_start () { + if [ ! -s "$IF_WPA_CONF" ]; then + echo "cannot read contents of $IF_WPA_CONF" + exit 1 + fi + WPA_SUP_CONF="-c $IF_WPA_CONF" +} + +case "$MODE" in + start) + do_start + case "$PHASE" in + post-up) + start-stop-daemon -S -q -x ${WPA_SUP_BIN} \ + -- -B -i ${WPA_IFACE} ${WPA_SUP_CONF} -P ${WPA_SUP_PIDFILE} + ;; + esac + ;; + + stop) + case "$PHASE" in + pre-down) + start-stop-daemon -K -p ${WPA_SUP_PIDFILE} + ;; + esac + ;; +esac + +exit 0 diff --git a/package/wpa_supplicant/wpa_supplicant.conf b/package/wpa_supplicant/wpa_supplicant.conf new file mode 100644 index 00000000..20e9f7f8 --- /dev/null +++ b/package/wpa_supplicant/wpa_supplicant.conf @@ -0,0 +1,6 @@ +#ctrl_interface=/var/run/wpa_supplicant +ap_scan=1 + +network={ + key_mgmt=NONE +} diff --git a/package/wpa_supplicant/wpa_supplicant.hash b/package/wpa_supplicant/wpa_supplicant.hash new file mode 100644 index 00000000..2f38dc25 --- /dev/null +++ b/package/wpa_supplicant/wpa_supplicant.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 912ea06f74e30a8e36fbb68064d6cdff218d8d591db0fc5d75dee6c81ac7fc0a wpa_supplicant-2.11.tar.gz +sha256 f1b5992bbdd015c3ccb7faaadd62ef58ed821e15b9329bf2ceb27511ccc3f562 README diff --git a/package/wpa_supplicant/wpa_supplicant.mk b/package/wpa_supplicant/wpa_supplicant.mk new file mode 100644 index 00000000..984959f6 --- /dev/null +++ b/package/wpa_supplicant/wpa_supplicant.mk @@ -0,0 +1,291 @@ +################################################################################ +# +# wpa_supplicant +# +################################################################################ + +WPA_SUPPLICANT_VERSION = 2.11 +WPA_SUPPLICANT_SITE = http://w1.fi/releases +WPA_SUPPLICANT_LICENSE = BSD-3-Clause +WPA_SUPPLICANT_LICENSE_FILES = README +WPA_SUPPLICANT_CPE_ID_VENDOR = w1.fi +WPA_SUPPLICANT_CONFIG = $(WPA_SUPPLICANT_DIR)/wpa_supplicant/.config +WPA_SUPPLICANT_SUBDIR = wpa_supplicant +WPA_SUPPLICANT_DBUS_SERVICE = fi.w1.wpa_supplicant1 +WPA_SUPPLICANT_CFLAGS = $(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include/libnl3/ +WPA_SUPPLICANT_SELINUX_MODULES = networkmanager + +# install the wpa_client library +WPA_SUPPLICANT_INSTALL_STAGING = YES + +WPA_SUPPLICANT_CONFIG_EDITS = + +WPA_SUPPLICANT_CONFIG_ENABLE = \ + CONFIG_INTERNAL_LIBTOMMATH \ + CONFIG_MATCH_IFACE + +WPA_SUPPLICANT_CONFIG_DISABLE = \ + CONFIG_SMARTCARD + +# libnl-3 needs -lm (for rint) and -lpthread if linking statically +# And library order matters hence stick -lnl-3 first since it's appended +# in the wpa_supplicant Makefiles as in LIBS+=-lnl-3 ... thus failing +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_NL80211),y) +ifeq ($(BR2_STATIC_LIBS),y) +WPA_SUPPLICANT_LIBS += -lnl-3 -lm -lpthread +endif +WPA_SUPPLICANT_DEPENDENCIES += host-pkgconf libnl +WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_LIBNL32 +else +WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_DRIVER_NL80211 +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_WEXT),) +WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_DRIVER_WEXT +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_IBSS_RSN), ) +WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_IBSS_RSN +endif + +# Trailing underscore on purpose to not enable CONFIG_EAPOL_TEST +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_EAP),y) +WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_EAP_ +# uses dlopen() +ifeq ($(BR2_STATIC_LIBS),y) +WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_EAP_TNC +endif +else +WPA_SUPPLICANT_CONFIG_DISABLE += \ + CONFIG_EAP \ + CONFIG_IEEE8021X_EAPOL \ + CONFIG_FILS +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_WIRED),y) +WPA_SUPPLICANT_DEPENDENCIES += host-pkgconf libnl +WPA_SUPPLICANT_CONFIG_ENABLE += \ + CONFIG_LIBNL32 \ + CONFIG_DRIVER_WIRED \ + CONFIG_MACSEC \ + CONFIG_DRIVER_MACSEC_LINUX +else +WPA_SUPPLICANT_CONFIG_DISABLE += \ + CONFIG_DRIVER_WIRED \ + CONFIG_MACSEC \ + CONFIG_DRIVER_MACSEC_LINUX +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT),) +WPA_SUPPLICANT_CONFIG_DISABLE += \ + CONFIG_HS20 \ + CONFIG_INTERWORKING +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT),y) +WPA_SUPPLICANT_CONFIG_ENABLE += \ + CONFIG_AP \ + CONFIG_P2P +else +WPA_SUPPLICANT_CONFIG_DISABLE += \ + CONFIG_AP \ + CONFIG_P2P +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY),y) +WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_WIFI_DISPLAY +else +WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_WIFI_DISPLAY +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_MESH_NETWORKING),y) +WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_MESH +else +WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_MESH +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_OVERRIDES),y) +WPA_SUPPLICANT_CONFIG_ENABLE += \ + CONFIG_HT_OVERRIDES \ + CONFIG_VHT_OVERRIDES \ + CONFIG_HE_OVERRIDES +else +WPA_SUPPLICANT_CONFIG_DISABLE += \ + CONFIG_HT_OVERRIDES \ + CONFIG_VHT_OVERRIDES \ + CONFIG_HE_OVERRIDES +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN),y) +WPA_SUPPLICANT_CONFIG_ENABLE += \ + CONFIG_AUTOSCAN_EXPONENTIAL \ + CONFIG_AUTOSCAN_PERIODIC +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_WPS),) +WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_WPS +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_WPA3),y) +WPA_SUPPLICANT_CONFIG_ENABLE += \ + CONFIG_DPP \ + CONFIG_SAE \ + CONFIG_SAE_PK \ + CONFIG_OWE +else +WPA_SUPPLICANT_CONFIG_DISABLE += \ + CONFIG_DPP \ + CONFIG_SAE \ + CONFIG_SAE_PK \ + CONFIG_OWE +endif + +# Try to use openssl if it's already available +ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) +WPA_SUPPLICANT_DEPENDENCIES += host-pkgconf libopenssl +WPA_SUPPLICANT_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs openssl` +WPA_SUPPLICANT_CONFIG_EDITS += 's/\#\(CONFIG_TLS=openssl\)/\1/' +else +WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_EAP_PWD CONFIG_EAP_TEAP +WPA_SUPPLICANT_CONFIG_EDITS += 's/\#\(CONFIG_TLS=\).*/\1internal/' +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_CTRL_IFACE),) +WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_CTRL_IFACE\> +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_DBUS),y) +WPA_SUPPLICANT_DEPENDENCIES += host-pkgconf dbus +WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_CTRL_IFACE_DBUS_NEW +define WPA_SUPPLICANT_INSTALL_DBUS_NEW + $(INSTALL) -m 0644 -D \ + $(@D)/wpa_supplicant/dbus/$(WPA_SUPPLICANT_DBUS_SERVICE).service \ + $(TARGET_DIR)/usr/share/dbus-1/system-services/$(WPA_SUPPLICANT_DBUS_SERVICE).service +endef + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_DBUS_INTROSPECTION),y) +WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_CTRL_IFACE_DBUS_INTRO +endif + +else +WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_CTRL_IFACE_DBUS_NEW +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG),) +WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_DEBUG_SYSLOG +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +WPA_SUPPLICANT_DEPENDENCIES += readline +WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_READLINE +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_CTRL_IFACE),y) +define WPA_SUPPLICANT_ENABLE_CTRL_IFACE + sed -i '/ctrl_interface/s/^#//g' $(TARGET_DIR)/etc/wpa_supplicant.conf +endef +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO),y) +WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_BUILD_WPA_CLIENT_SO +define WPA_SUPPLICANT_INSTALL_WPA_CLIENT_SO + $(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/libwpa_client.so \ + $(TARGET_DIR)/usr/lib/libwpa_client.so + $(INSTALL) -m 0644 -D $(@D)/src/common/wpa_ctrl.h \ + $(TARGET_DIR)/usr/include/wpa_ctrl.h +endef +define WPA_SUPPLICANT_INSTALL_STAGING_WPA_CLIENT_SO + $(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/libwpa_client.so \ + $(STAGING_DIR)/usr/lib/libwpa_client.so + $(INSTALL) -m 0644 -D $(@D)/src/common/wpa_ctrl.h \ + $(STAGING_DIR)/usr/include/wpa_ctrl.h +endef +endif + +define WPA_SUPPLICANT_CONFIGURE_CMDS + cp $(@D)/wpa_supplicant/defconfig $(WPA_SUPPLICANT_CONFIG) + sed -i $(patsubst %,-e 's/^#\(%\)/\1/',$(WPA_SUPPLICANT_CONFIG_ENABLE)) \ + $(patsubst %,-e 's/^\(%\)/#\1/',$(WPA_SUPPLICANT_CONFIG_DISABLE)) \ + $(patsubst %,-e %,$(WPA_SUPPLICANT_CONFIG_EDITS)) \ + $(WPA_SUPPLICANT_CONFIG) + # set requested configuration options not listed in wpa_s defconfig + for s in $(WPA_SUPPLICANT_CONFIG_ENABLE) ; do \ + if ! grep -q "^$${s}" $(WPA_SUPPLICANT_CONFIG); then \ + echo "$${s}=y" >> $(WPA_SUPPLICANT_CONFIG) ; \ + fi \ + done +endef + +# LIBS for wpa_supplicant, LIBS_c for wpa_cli, LIBS_p for wpa_passphrase +define WPA_SUPPLICANT_BUILD_CMDS + $(TARGET_MAKE_ENV) CFLAGS="$(WPA_SUPPLICANT_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" BINDIR=/usr/sbin \ + LIBS="$(WPA_SUPPLICANT_LIBS)" LIBS_c="$(WPA_SUPPLICANT_LIBS)" \ + LIBS_p="$(WPA_SUPPLICANT_LIBS)" \ + $(MAKE) CC="$(TARGET_CC)" -C $(@D)/$(WPA_SUPPLICANT_SUBDIR) +endef + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_CLI),y) +define WPA_SUPPLICANT_INSTALL_CLI + $(INSTALL) -m 0755 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/wpa_cli \ + $(TARGET_DIR)/usr/sbin/wpa_cli +endef +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE),y) +define WPA_SUPPLICANT_INSTALL_PASSPHRASE + $(INSTALL) -m 0755 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/wpa_passphrase \ + $(TARGET_DIR)/usr/sbin/wpa_passphrase +endef +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +define WPA_SUPPLICANT_INSTALL_DBUS + $(INSTALL) -m 0644 -D \ + $(@D)/wpa_supplicant/dbus/dbus-wpa_supplicant.conf \ + $(TARGET_DIR)/etc/dbus-1/system.d/wpa_supplicant.conf + $(WPA_SUPPLICANT_INSTALL_DBUS_NEW) +endef +endif + +define WPA_SUPPLICANT_INSTALL_STAGING_CMDS + $(WPA_SUPPLICANT_INSTALL_STAGING_WPA_CLIENT_SO) +endef + +ifeq ($(BR2_PACKAGE_IFUPDOWN_SCRIPTS),y) +define WPA_SUPPLICANT_INSTALL_IFUP_SCRIPTS + $(INSTALL) -m 0755 -D package/wpa_supplicant/ifupdown.sh \ + $(TARGET_DIR)/etc/network/if-up.d/wpasupplicant + mkdir -p $(TARGET_DIR)/etc/network/if-down.d + ln -sf ../if-up.d/wpasupplicant \ + $(TARGET_DIR)/etc/network/if-down.d/wpasupplicant +endef +endif + +define WPA_SUPPLICANT_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/wpa_supplicant \ + $(TARGET_DIR)/usr/sbin/wpa_supplicant + $(INSTALL) -m 644 -D package/wpa_supplicant/wpa_supplicant.conf \ + $(TARGET_DIR)/etc/wpa_supplicant.conf + $(WPA_SUPPLICANT_INSTALL_CLI) + $(WPA_SUPPLICANT_INSTALL_PASSPHRASE) + $(WPA_SUPPLICANT_INSTALL_DBUS) + $(WPA_SUPPLICANT_INSTALL_WPA_CLIENT_SO) + $(WPA_SUPPLICANT_INSTALL_IFUP_SCRIPTS) + $(WPA_SUPPLICANT_ENABLE_CTRL_IFACE) +endef + +define WPA_SUPPLICANT_INSTALL_INIT_SYSTEMD + $(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/systemd/wpa_supplicant.service \ + $(TARGET_DIR)/usr/lib/systemd/system/wpa_supplicant.service + $(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/systemd/wpa_supplicant@.service \ + $(TARGET_DIR)/usr/lib/systemd/system/wpa_supplicant@.service + $(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/systemd/wpa_supplicant-nl80211@.service \ + $(TARGET_DIR)/usr/lib/systemd/system/wpa_supplicant-nl80211@.service + $(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/systemd/wpa_supplicant-wired@.service \ + $(TARGET_DIR)/usr/lib/systemd/system/wpa_supplicant-wired@.service + $(INSTALL) -D -m 644 $(WPA_SUPPLICANT_PKGDIR)/50-wpa_supplicant.preset \ + $(TARGET_DIR)/usr/lib/systemd/system-preset/50-wpa_supplicant.preset +endef + +$(eval $(generic-package)) diff --git a/package/wpan-tools/Config.in b/package/wpan-tools/Config.in new file mode 100644 index 00000000..9e327420 --- /dev/null +++ b/package/wpan-tools/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_WPAN_TOOLS + bool "wpan-tools" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBNL + help + Userspace tools for Linux IEEE 802.15.4 stack. + + http://wpan.cakelab.org/ + +comment "wpan-tools needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/wpan-tools/wpan-tools.hash b/package/wpan-tools/wpan-tools.hash new file mode 100644 index 00000000..814e3b0f --- /dev/null +++ b/package/wpan-tools/wpan-tools.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3e509d9ed838df1247cc9a0c6ca483cb356ae778851817bd7410044687b655e2 wpan-tools-0.9.tar.gz +sha256 fe8e595c24d821a60885eb259619df5e5e3976c48465fde0be29fcd78530798f COPYING diff --git a/package/wpan-tools/wpan-tools.mk b/package/wpan-tools/wpan-tools.mk new file mode 100644 index 00000000..d8898a72 --- /dev/null +++ b/package/wpan-tools/wpan-tools.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# wpan-tools +# +################################################################################ + +WPAN_TOOLS_VERSION = 0.9 +WPAN_TOOLS_SITE = $(call github,linux-wpan,wpan-tools,wpan-tools-$(WPAN_TOOLS_VERSION)) +WPAN_TOOLS_DEPENDENCIES = host-pkgconf libnl +WPAN_TOOLS_LICENSE = ISC +WPAN_TOOLS_LICENSE_FILES = COPYING +# From git +WPAN_TOOLS_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/wpebackend-fdo/0001-Cast-to-EGLNativeWindowType-explicitly.patch b/package/wpebackend-fdo/0001-Cast-to-EGLNativeWindowType-explicitly.patch new file mode 100644 index 00000000..eae0d22e --- /dev/null +++ b/package/wpebackend-fdo/0001-Cast-to-EGLNativeWindowType-explicitly.patch @@ -0,0 +1,36 @@ +From e56a2597eb66c2221b004aa3356b06c1b071b5b5 Mon Sep 17 00:00:00 2001 +From: Adrian Perez de Castro +Date: Wed, 14 Aug 2024 00:51:26 +0300 +Subject: [PATCH] Cast to EGLNativeWindowType explicitly + +In order to avoid off build failures due to mismatching (but +compatible) declarations of wl_egl_window and EGLNativeWindowType, +add an explicit cast to EGLNativeWindowType inside the +TargetWayland::nativeWindow() function. + +Solves the following build issue found by the Buildroot autobuilders: + + http://autobuild.buildroot.net/results/92c5cc3134e92c263a0cbb4c05ef8956569e434b/ + +Signed-off-by: Adrian Perez de Castro +Upstream: https://github.com/Igalia/WPEBackend-fdo/commit/e56a2597eb66c2221b004aa3356b06c1b071b5b5 +--- + src/egl-client-wayland.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/egl-client-wayland.cpp b/src/egl-client-wayland.cpp +index 10e02f0..22bb212 100644 +--- a/src/egl-client-wayland.cpp ++++ b/src/egl-client-wayland.cpp +@@ -63,7 +63,7 @@ TargetWayland::~TargetWayland() + + EGLNativeWindowType TargetWayland::nativeWindow() const + { +- return m_egl.window; ++ return (EGLNativeWindowType) m_egl.window; + } + + void TargetWayland::resize(uint32_t width, uint32_t height) +-- +2.46.0 + diff --git a/package/wpebackend-fdo/Config.in b/package/wpebackend-fdo/Config.in new file mode 100644 index 00000000..9b4dd287 --- /dev/null +++ b/package/wpebackend-fdo/Config.in @@ -0,0 +1,20 @@ +comment "wpebackend-fdo needs a toolchain w/ C++, wchar, threads, dynamic library and EGL support" + depends on !BR2_PACKAGE_HAS_LIBEGL || !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +config BR2_PACKAGE_WPEBACKEND_FDO + bool "wpebackend-fdo" + depends on !BR2_STATIC_LIBS # wayland + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # wayland, libglib2 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_USE_MMU # libglib2 + depends on BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_LIBEPOXY + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBWPE + select BR2_PACKAGE_WAYLAND + help + WPEBackend interface using freedesktop.org API. + + https://wpewebkit.org/ diff --git a/package/wpebackend-fdo/wpebackend-fdo.hash b/package/wpebackend-fdo/wpebackend-fdo.hash new file mode 100644 index 00000000..26ba1217 --- /dev/null +++ b/package/wpebackend-fdo/wpebackend-fdo.hash @@ -0,0 +1,6 @@ +# From https://wpewebkit.org/releases/wpebackend-fdo-1.14.2.tar.xz.sums +sha1 f453f8d77e93f4ac6ac81c1874d4d6bdcb45c253 wpebackend-fdo-1.14.2.tar.xz +sha256 93c9766ae9864eeaeaee2b0a74f22cbca08df42c1a1bdb55b086f2528e380d38 wpebackend-fdo-1.14.2.tar.xz + +# Hashes for license files: +sha256 c9f6803371047fad3e72200ec6cd226329a5ee08ac61104c8211c2761fb46825 COPYING diff --git a/package/wpebackend-fdo/wpebackend-fdo.mk b/package/wpebackend-fdo/wpebackend-fdo.mk new file mode 100644 index 00000000..7ef347b6 --- /dev/null +++ b/package/wpebackend-fdo/wpebackend-fdo.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# wpebackend-fdo +# +################################################################################ + +WPEBACKEND_FDO_VERSION = 1.14.2 +WPEBACKEND_FDO_SITE = https://wpewebkit.org/releases +WPEBACKEND_FDO_SOURCE = wpebackend-fdo-$(WPEBACKEND_FDO_VERSION).tar.xz +WPEBACKEND_FDO_INSTALL_STAGING = YES +WPEBACKEND_FDO_LICENSE = BSD-2-Clause +WPEBACKEND_FDO_LICENSE_FILES = COPYING +WPEBACKEND_FDO_DEPENDENCIES = libepoxy libglib2 libwpe wayland + +$(eval $(meson-package)) diff --git a/package/wpewebkit/0001-Remove-ARM-specific-declarations-in-FELighting.patch b/package/wpewebkit/0001-Remove-ARM-specific-declarations-in-FELighting.patch new file mode 100644 index 00000000..9e2bc86f --- /dev/null +++ b/package/wpewebkit/0001-Remove-ARM-specific-declarations-in-FELighting.patch @@ -0,0 +1,68 @@ +From 8863ceb3c8486f31e1ccfcd2c7c602fad9feac52 Mon Sep 17 00:00:00 2001 +From: Adrian Perez de Castro +Date: Mon, 27 May 2024 02:09:58 +0300 +Subject: [PATCH] Cherry-pick 279334@main (36d1b5d7c0ef). + + Remove ARM-specific declarations in FELighting.h unneeded after 272873@main + + Unreviewed build fix. + + * Source/WebCore/platform/graphics/filters/FELighting.h: Remove unneeded + declarations for the getPowerCoefficients() and platformApplyNeon() + functions, which are now defined elsewhere; and were causing a build + failure due to usage of the protected LightingData type. + * Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNeonParallelApplier.cpp: + (WebCore::FELightingNeonParallelApplier::applyPlatformParallel const): + Add missing LightType:: namespace to uses of LS_POINT and LS_SPOT. + + Canonical link: https://commits.webkit.org/279334@main + +Canonical link: https://commits.webkit.org/274313.261@webkitglib/2.44 + +Signed-off-by: Adrian Perez de Castro +Upstream: https://github.com/WebKit/WebKit/commit/8863ceb3c8486f31e1ccfcd2c7c602fad9feac52 +--- + .../cpu/arm/filters/FELightingNeonParallelApplier.cpp | 4 ++-- + Source/WebCore/platform/graphics/filters/FELighting.h | 5 ----- + 2 files changed, 2 insertions(+), 7 deletions(-) + +diff --git a/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNeonParallelApplier.cpp b/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNeonParallelApplier.cpp +index 04d855fa6d71..5f4250d87b61 100644 +--- a/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNeonParallelApplier.cpp ++++ b/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNeonParallelApplier.cpp +@@ -542,14 +542,14 @@ void FELightingNeonParallelApplier::applyPlatformParallel(const LightingData& da + floatArguments.colorBlue = color.blue; + floatArguments.padding4 = 0; + +- if (data.lightSource->type() == LS_POINT) { ++ if (data.lightSource->type() == LightType::LS_POINT) { + neonData.flags |= FLAG_POINT_LIGHT; + auto& pointLightSource = downcast(*data.lightSource); + floatArguments.lightX = pointLightSource.position().x(); + floatArguments.lightY = pointLightSource.position().y(); + floatArguments.lightZ = pointLightSource.position().z(); + floatArguments.padding2 = 0; +- } else if (data.lightSource->type() == LS_SPOT) { ++ } else if (data.lightSource->type() == LightType::LS_SPOT) { + neonData.flags |= FLAG_SPOT_LIGHT; + auto& spotLightSource = downcast(*data.lightSource); + floatArguments.lightX = spotLightSource.position().x(); +diff --git a/Source/WebCore/platform/graphics/filters/FELighting.h b/Source/WebCore/platform/graphics/filters/FELighting.h +index 4efab920b1c3..dcd80b6f42b7 100644 +--- a/Source/WebCore/platform/graphics/filters/FELighting.h ++++ b/Source/WebCore/platform/graphics/filters/FELighting.h +@@ -68,11 +68,6 @@ protected: + + std::unique_ptr createSoftwareApplier() const override; + +-#if CPU(ARM_NEON) && CPU(ARM_TRADITIONAL) && COMPILER(GCC_COMPATIBLE) +- static int getPowerCoefficients(float exponent); +- inline void platformApplyNeon(const LightingData&, const LightSource::PaintingData&); +-#endif +- + Color m_lightingColor; + float m_surfaceScale; + float m_diffuseConstant; +-- +2.45.2 + diff --git a/package/wpewebkit/Config.in b/package/wpewebkit/Config.in new file mode 100644 index 00000000..80163670 --- /dev/null +++ b/package/wpewebkit/Config.in @@ -0,0 +1,137 @@ +config BR2_PACKAGE_WPEWEBKIT_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_aarch64 || BR2_aarch64_be + 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 + # RISC-V needs the g/imafd ISA. + default y if BR2_riscv && BR2_RISCV_ISA_RVI \ + && BR2_RISCV_ISA_RVM && BR2_RISCV_ISA_RVA \ + && BR2_RISCV_ISA_RVF && BR2_RISCV_ISA_RVD + # Disabled on SuperH because of segfault + depends on BR2_USE_MMU # libglib2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt + +comment "wpewebkit needs a toolchain w/ C++, wchar, threads, dynamic library, gcc >= 10, host gcc >= 4.9" + depends on BR2_PACKAGE_WPEWEBKIT_ARCH_SUPPORTS + depends on !BR2_BINFMT_FLAT + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_10 \ + || !BR2_HOST_GCC_AT_LEAST_4_9 + +comment "wpewebkit needs an OpenGL ES w/ EGL-capable Wayland backend" + depends on BR2_PACKAGE_WPEWEBKIT_ARCH_SUPPORTS + depends on !BR2_BINFMT_FLAT + depends on !BR2_PACKAGE_HAS_LIBGLES || !BR2_PACKAGE_HAS_LIBEGL + +config BR2_PACKAGE_WPEWEBKIT + bool "wpewebkit" + depends on !BR2_STATIC_LIBS # wayland + depends on !BR2_BINFMT_FLAT # icu + depends on BR2_HOST_GCC_AT_LEAST_4_9 # icu, host-ruby + depends on BR2_INSTALL_LIBSTDCPP # harfbuzz, icu + depends on BR2_TOOLCHAIN_HAS_THREADS # wayland, icu, libsoup3 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_10 + depends on BR2_USE_WCHAR # icu, libsoup3 + depends on BR2_PACKAGE_HAS_LIBGLES # libepoxy + depends on BR2_PACKAGE_HAS_LIBEGL # libepoxy + depends on BR2_PACKAGE_WPEWEBKIT_ARCH_SUPPORTS + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_CAIRO_PNG + select BR2_PACKAGE_HARFBUZZ + select BR2_PACKAGE_ICU + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBEPOXY + select BR2_PACKAGE_LIBGCRYPT + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_LIBSOUP3 + select BR2_PACKAGE_LIBTASN1 + select BR2_PACKAGE_LIBXSLT + select BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_WAYLAND_PROTOCOLS + select BR2_PACKAGE_WEBP + select BR2_PACKAGE_WEBP_DEMUX + select BR2_PACKAGE_WPEBACKEND_FDO + help + WPE (Web Platform for Embedded) port of the WebKit engine, + to allow embedders to create simple and performant systems + based on Web platform technologies. + + https://wpewebkit.org/ + +if BR2_PACKAGE_WPEWEBKIT + +config BR2_PACKAGE_WPEWEBKIT_SANDBOX + bool "sandboxing support" + depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS # libseccomp + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 # libseccomp + select BR2_PACKAGE_BUBBLEWRAP # runtime + select BR2_PACKAGE_XDG_DBUS_PROXY # runtime + select BR2_PACKAGE_LIBSECCOMP + help + Enable sandboxing of the processes used for network operation, + disk asccess, and Web content rendering. + +comment "sandboxing supports needs a toolchain w/ headers >= 3.12" + depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + +config BR2_PACKAGE_WPEWEBKIT_MULTIMEDIA + bool "multimedia support" + select BR2_PACKAGE_GSTREAMER1 + select BR2_PACKAGE_GST1_PLUGINS_BAD + select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DEBUGUTILS + select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSDEMUX + select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SUBENC + 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_VIDEOCONVERTSCALE + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VOLUME + select BR2_PACKAGE_GST1_PLUGINS_GOOD + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUDIOFX + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUTODETECT + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ISOMP4 + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VPX + select BR2_PACKAGE_GST1_LIBAV + help + This option pulls in all of the required dependencies + to enable multimedia (video/audio) support. + +if BR2_PACKAGE_WPEWEBKIT_MULTIMEDIA + +config BR2_PACKAGE_WPEWEBKIT_MEDIA_STREAM + bool "media-stream support" + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEORATE + help + This option enables media-stream support. + +config BR2_PACKAGE_WPEWEBKIT_USE_GSTREAMER_GL + bool "use gstreamer-gl" + default y + depends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_PLATFORM + help + Use the GStreamer GL elements for handling video content. + This is recommended as it improves performance of video + playback. In some target configurations incorrect rendering + might be produced, and disabling this option may help. + +endif + +config BR2_PACKAGE_WPEWEBKIT_WEBDRIVER + bool "WebDriver support" + help + Enable support for WebDriver. This will build and install the + WebKitWebDriver program in the target. + +endif diff --git a/package/wpewebkit/wpewebkit.hash b/package/wpewebkit/wpewebkit.hash new file mode 100644 index 00000000..790adbb0 --- /dev/null +++ b/package/wpewebkit/wpewebkit.hash @@ -0,0 +1,8 @@ +# From https://wpewebkit.org/releases/wpewebkit-2.44.2.tar.xz.sums +md5 0e2a6d05b000e79c51c537ab3261b171 wpewebkit-2.44.2.tar.xz +sha1 5bded217fab25aea776e41158fcdbd72d69a612e wpewebkit-2.44.2.tar.xz +sha256 2a3d23cb4fb071ca0db3a09c5a85f27b8bcc6094a2026d3b7407bed4f99218f7 wpewebkit-2.44.2.tar.xz + +# Hashes for license files: +sha256 0b5d3a7cc325942567373b0ecd757d07c132e0ebd7c97bfc63f7e1a76094edb4 Source/WebCore/LICENSE-APPLE +sha256 f2b3bd09663381deb99721109d22b47af1213bb43007a8b56a06c6375c8050ce Source/WebCore/LICENSE-LGPL-2.1 diff --git a/package/wpewebkit/wpewebkit.mk b/package/wpewebkit/wpewebkit.mk new file mode 100644 index 00000000..36de0213 --- /dev/null +++ b/package/wpewebkit/wpewebkit.mk @@ -0,0 +1,150 @@ +################################################################################ +# +# wpewebkit +# +################################################################################ + +# The middle number is even for stable releases, odd for development ones. +WPEWEBKIT_VERSION = 2.44.2 +WPEWEBKIT_SITE = https://wpewebkit.org/releases +WPEWEBKIT_SOURCE = wpewebkit-$(WPEWEBKIT_VERSION).tar.xz +WPEWEBKIT_INSTALL_STAGING = YES +WPEWEBKIT_LICENSE = LGPL-2.1+, BSD-2-Clause +WPEWEBKIT_LICENSE_FILES = \ + Source/WebCore/LICENSE-APPLE \ + Source/WebCore/LICENSE-LGPL-2.1 +WPEWEBKIT_CPE_ID_VENDOR = wpewebkit +WPEWEBKIT_CPE_ID_PRODUCT = wpe_webkit +WPEWEBKIT_DEPENDENCIES = host-gperf host-python3 host-ruby host-unifdef \ + harfbuzz cairo icu jpeg libepoxy libgcrypt libgles libsoup3 libtasn1 \ + libpng libxslt wayland-protocols webp wpebackend-fdo + +WPEWEBKIT_CMAKE_BACKEND = ninja + +WPEWEBKIT_CONF_OPTS = \ + -DPORT=WPE \ + -DENABLE_API_TESTS=OFF \ + -DENABLE_DOCUMENTATION=OFF \ + -DENABLE_INTROSPECTION=OFF \ + -DENABLE_MINIBROWSER=OFF \ + -DENABLE_WEB_RTC=OFF \ + -DUSE_ATK=OFF + +ifeq ($(BR2_PACKAGE_WPEWEBKIT_SANDBOX),y) +WPEWEBKIT_CONF_OPTS += \ + -DENABLE_BUBBLEWRAP_SANDBOX=ON \ + -DBWRAP_EXECUTABLE=/usr/bin/bwrap \ + -DDBUS_PROXY_EXECUTABLE=/usr/bin/xdg-dbus-proxy +WPEWEBKIT_DEPENDENCIES += libseccomp +else +WPEWEBKIT_CONF_OPTS += -DENABLE_BUBBLEWRAP_SANDBOX=OFF +endif + +ifeq ($(BR2_PACKAGE_WPEWEBKIT_MULTIMEDIA),y) +WPEWEBKIT_CONF_OPTS += \ + -DENABLE_VIDEO=ON \ + -DENABLE_WEB_AUDIO=ON \ + -DENABLE_WEB_CODECS=ON +WPEWEBKIT_DEPENDENCIES += gstreamer1 gst1-libav gst1-plugins-base +else +WPEWEBKIT_CONF_OPTS += \ + -DENABLE_VIDEO=OFF \ + -DENABLE_WEB_AUDIO=OFF \ + -DENABLE_WEB_CODECS=OFF +endif + +ifeq ($(BR2_PACKAGE_WPEWEBKIT_MEDIA_STREAM),y) +WPEWEBKIT_CONF_OPTS += -DENABLE_MEDIA_STREAM=ON +WPEWEBKIT_DEPENDENCIES += gst1-plugins-bad +else +WPEWEBKIT_CONF_OPTS += -DENABLE_MEDIA_STREAM=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBAVIF),y) +WPEWEBKIT_CONF_OPTS += -DUSE_AVIF=ON +WPEWEBKIT_DEPENDENCIES += libavif +else +WPEWEBKIT_CONF_OPTS += -DUSE_AVIF=OFF +endif + +ifeq ($(BR2_PACKAGE_WPEWEBKIT_USE_GSTREAMER_GL),y) +WPEWEBKIT_CONF_OPTS += -DUSE_GSTREAMER_GL=ON +else +WPEWEBKIT_CONF_OPTS += -DUSE_GSTREAMER_GL=OFF +endif + +ifeq ($(BR2_PACKAGE_WPEWEBKIT_WEBDRIVER),y) +WPEWEBKIT_CONF_OPTS += -DENABLE_WEBDRIVER=ON +else +WPEWEBKIT_CONF_OPTS += -DENABLE_WEBDRIVER=OFF +endif + +ifeq ($(BR2_PACKAGE_LCMS2),y) +WPEWEBKIT_CONF_OPTS += -DUSE_LCMS=ON +WPEWEBKIT_DEPENDENCIES += lcms2 +else +WPEWEBKIT_CONF_OPTS += -DUSE_LCMS=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBBACKTRACE),y) +WPEWEBKIT_CONF_OPTS += -DUSE_LIBBACKTRACE=ON +WPEWEBKIT_DEPENDENCIES += libbacktrace +else +WPEWEBKIT_CONF_OPTS += -DUSE_LIBBACKTRACE=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBDRM),y) +WPEWEBKIT_CONF_OPTS += -DUSE_LIBDRM=ON +WPEWEBKIT_DEPENDENCIES += libdrm +else +WPEWEBKIT_CONF_OPTS += -DUSE_LIBDRM=OFF +endif + +ifeq ($(BR2_PACKAGE_WOFF2),y) +WPEWEBKIT_CONF_OPTS += -DUSE_WOFF2=ON +WPEWEBKIT_DEPENDENCIES += woff2 +else +WPEWEBKIT_CONF_OPTS += -DUSE_WOFF2=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBJXL),y) +WPEWEBKIT_CONF_OPTS += -DUSE_JPEGXL=ON +WPEWEBKIT_DEPENDENCIES += libjxl +else +WPEWEBKIT_CONF_OPTS += -DUSE_JPEGXL=OFF +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +WPEWEBKIT_CONF_OPTS += -DENABLE_JOURNALD_LOG=ON +WPEWEBKIT_DEPENDENCIES += systemd +else +WPEWEBKIT_CONF_OPTS += -DENABLE_JOURNALD_LOG=OFF +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGBM),y) +WPEWEBKIT_CONF_OPTS += -DUSE_GBM=ON +WPEWEBKIT_DEPENDENCIES += libgbm +else +WPEWEBKIT_CONF_OPTS += -DUSE_GBM=OFF +endif + +# JIT is not supported for MIPS r6, but the WebKit build system does not +# have a check for these processors. The same goes for ARMv5 and ARMv6. +# Disable JIT forcibly here and use the CLoop interpreter instead. +# +# Also, we have to disable the sampling profiler and WebAssembly, which +# do NOT work with ENABLE_C_LOOP. +# +# Upstream bugs: https://bugs.webkit.org/show_bug.cgi?id=191258 +# https://bugs.webkit.org/show_bug.cgi?id=172765 +# https://bugs.webkit.org/show_bug.cgi?id=265218 +# +ifeq ($(BR2_ARM_CPU_ARMV5)$(BR2_ARM_CPU_ARMV6)$(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6),y) +WPEWEBKIT_CONF_OPTS += \ + -DENABLE_JIT=OFF \ + -DENABLE_C_LOOP=ON \ + -DENABLE_SAMPLING_PROFILER=OFF \ + -DENABLE_WEBASSEMBLY=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/wqy-zenhei/Config.in b/package/wqy-zenhei/Config.in new file mode 100644 index 00000000..f9135e01 --- /dev/null +++ b/package/wqy-zenhei/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_WQY_ZENHEI + bool "wqy-zenhei" + help + "WenQuanYi Zen Hei" is a Hei-Ti Style (sans-serif) Chinese + font capable of text formatting and on-screen display of + both simplified and traditional forms of Chinese Hanzi + glyphs (among many other languages). Both the proportional + "WenQuanYi Zen Hei", as well as the monospaced typeface + "WenQuanYi Zen Hei Mono" provides over 35,000 glyphs, + including over 21,000 Chinese Hanzi. This font provides full + coverage of GBK (CP936) charset, CJK Unified Ideographs, as + well as the code-points needed for zh_CN, zh_SG, zh_TW, + zh_HK, zh_MO, ja (Japanese) and ko (Korean) locales for + fontconfig. + + https://sourceforge.net/projects/wqy/ diff --git a/package/wqy-zenhei/wqy-zenhei.hash b/package/wqy-zenhei/wqy-zenhei.hash new file mode 100644 index 00000000..386f16eb --- /dev/null +++ b/package/wqy-zenhei/wqy-zenhei.hash @@ -0,0 +1,6 @@ +# from https://sourceforge.net/projects/wqy/files/wqy-zenhei/0.9.45%20%28Fighting-state%20RC1%29/ +md5 4c6c3f4e902dd5ee0a121e8c41d040bd wqy-zenhei-0.9.45.tar.gz +sha1 b86b65d3048ade868fcc89229cfac6baf80a3e54 wqy-zenhei-0.9.45.tar.gz +# locally calculated +sha256 e4b7e306475bf9427d1757578f0e4528930c84c44eaa3f167d4c42f110ee75d6 wqy-zenhei-0.9.45.tar.gz +sha256 871c2a85e6bbf7bec65043820b706a265ed95d4e58c577fbb2c9f60c39c26ca7 COPYING diff --git a/package/wqy-zenhei/wqy-zenhei.mk b/package/wqy-zenhei/wqy-zenhei.mk new file mode 100644 index 00000000..375b0dd3 --- /dev/null +++ b/package/wqy-zenhei/wqy-zenhei.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# wqy-zenhei +# +################################################################################ + +WQY_ZENHEI_VERSION = 0.9.45 +WQY_ZENHEI_SITE = https://downloads.sourceforge.net/project/wqy/wqy-zenhei/$(WQY_ZENHEI_VERSION)%20%28Fighting-state%20RC1%29 +WQY_ZENHEI_LICENSE = GPL-2.0-with-font-exception +WQY_ZENHEI_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_FONTCONFIG),y) +define WQY_ZENHEI_FONTCONFIG_CONF_INSTALL_CMDS + $(INSTALL) -D -m 0644 $(@D)/43-wqy-zenhei-sharp.conf \ + $(TARGET_DIR)/usr/share/fontconfig/conf.avail/43-wqy-zenhei-sharp.conf + $(INSTALL) -D -m 0644 $(@D)/44-wqy-zenhei.conf \ + $(TARGET_DIR)/usr/share/fontconfig/conf.avail/44-wqy-zenhei.conf +endef +endif + +define WQY_ZENHEI_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0644 $(@D)/wqy-zenhei.ttc \ + $(TARGET_DIR)/usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc + $(WQY_ZENHEI_FONTCONFIG_CONF_INSTALL_CMDS) +endef + +$(eval $(generic-package)) diff --git a/package/wsapi-fcgi/Config.in b/package/wsapi-fcgi/Config.in new file mode 100644 index 00000000..657ae78c --- /dev/null +++ b/package/wsapi-fcgi/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_WSAPI_FCGI + bool "wsapi-fcgi" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBFCGI + select BR2_PACKAGE_WSAPI # runtime + help + WSAPI is an API that abstracts the web server from Lua web + applications. This is the rock that contains the FCGI module + lfcgi. + + https://luarocks.org/modules/mascarenhas/wsapi-fcgi diff --git a/package/wsapi-fcgi/wsapi-fcgi.hash b/package/wsapi-fcgi/wsapi-fcgi.hash new file mode 100644 index 00000000..591a76a9 --- /dev/null +++ b/package/wsapi-fcgi/wsapi-fcgi.hash @@ -0,0 +1,4 @@ +# computed by luarocks/buildroot +sha256 14b77861638a5e863fd10d60ad460a961dc108ea5b915f71461a18d5e6be8e4e wsapi-fcgi-1.7-1.src.rock +sha256 6aa14e3febf7a9e810ce672b015f5a5514241ce5d1c3a6a48f921f089d270159 wsapi/doc/us/license.html +sha256 c7bf3061d00a96d10cb9dbc3a737d0af22594e2ef8f788842d7ab92eeaa864f2 wsapi/doc/us/license.md diff --git a/package/wsapi-fcgi/wsapi-fcgi.mk b/package/wsapi-fcgi/wsapi-fcgi.mk new file mode 100644 index 00000000..677bb774 --- /dev/null +++ b/package/wsapi-fcgi/wsapi-fcgi.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# wsapi-fcgi +# +################################################################################ + +WSAPI_FCGI_VERSION = 1.7-1 +WSAPI_FCGI_SUBDIR = wsapi +WSAPI_FCGI_LICENSE = MIT +WSAPI_FCGI_LICENSE_FILES = \ + $(WSAPI_FCGI_SUBDIR)/doc/us/license.html \ + $(WSAPI_FCGI_SUBDIR)/doc/us/license.md +WSAPI_FCGI_DEPENDENCIES = libfcgi + +$(eval $(luarocks-package)) diff --git a/package/wsapi-xavante/Config.in b/package/wsapi-xavante/Config.in new file mode 100644 index 00000000..7af23b84 --- /dev/null +++ b/package/wsapi-xavante/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_WSAPI_XAVANTE + bool "wsapi-xavante" + select BR2_PACKAGE_WSAPI # runtime + select BR2_PACKAGE_XAVANTE # runtime + help + WSAPI is an API that abstracts the web server from Lua web + applications. This is the rock that contains the Xavante + adapter and launcher. + + https://keplerproject.github.io/wsapi/ diff --git a/package/wsapi-xavante/wsapi-xavante.hash b/package/wsapi-xavante/wsapi-xavante.hash new file mode 100644 index 00000000..aa089f7c --- /dev/null +++ b/package/wsapi-xavante/wsapi-xavante.hash @@ -0,0 +1,4 @@ +# computed by luarocks/buildroot +sha256 01211bb80dab92f87cece6e31854d73ae4a2ce06af7c48423a54313d72adf9fb wsapi-xavante-1.7-1.src.rock +sha256 6aa14e3febf7a9e810ce672b015f5a5514241ce5d1c3a6a48f921f089d270159 wsapi/doc/us/license.html +sha256 c7bf3061d00a96d10cb9dbc3a737d0af22594e2ef8f788842d7ab92eeaa864f2 wsapi/doc/us/license.md diff --git a/package/wsapi-xavante/wsapi-xavante.mk b/package/wsapi-xavante/wsapi-xavante.mk new file mode 100644 index 00000000..3a747e9b --- /dev/null +++ b/package/wsapi-xavante/wsapi-xavante.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# wsapi-xavante +# +################################################################################ + +WSAPI_XAVANTE_VERSION = 1.7-1 +WSAPI_XAVANTE_SUBDIR = wsapi +WSAPI_XAVANTE_LICENSE = MIT +WSAPI_XAVANTE_LICENSE_FILES = \ + $(WSAPI_XAVANTE_SUBDIR)/doc/us/license.html \ + $(WSAPI_XAVANTE_SUBDIR)/doc/us/license.md + +$(eval $(luarocks-package)) diff --git a/package/wsapi/Config.in b/package/wsapi/Config.in new file mode 100644 index 00000000..e758e8e0 --- /dev/null +++ b/package/wsapi/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_WSAPI + bool "wsapi" + select BR2_PACKAGE_COXPCALL if BR2_PACKAGE_LUA_5_1 # runtime + select BR2_PACKAGE_LUAFILESYSTEM # runtime + select BR2_PACKAGE_RINGS # runtime + help + API that abstracts the web server from Lua web applications. + + https://keplerproject.github.io/wsapi/ diff --git a/package/wsapi/wsapi.hash b/package/wsapi/wsapi.hash new file mode 100644 index 00000000..81895c71 --- /dev/null +++ b/package/wsapi/wsapi.hash @@ -0,0 +1,4 @@ +# computed by luarocks/buildroot +sha256 1a0829dffd6bdbf99f5c4278d504cda5ede9344d5089bdcf5216c9eb2999ae22 wsapi-1.7-1.src.rock +sha256 6aa14e3febf7a9e810ce672b015f5a5514241ce5d1c3a6a48f921f089d270159 wsapi/doc/us/license.html +sha256 c7bf3061d00a96d10cb9dbc3a737d0af22594e2ef8f788842d7ab92eeaa864f2 wsapi/doc/us/license.md diff --git a/package/wsapi/wsapi.mk b/package/wsapi/wsapi.mk new file mode 100644 index 00000000..d67efd0e --- /dev/null +++ b/package/wsapi/wsapi.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# wsapi +# +################################################################################ + +WSAPI_VERSION = 1.7-1 +WSAPI_SUBDIR = wsapi +WSAPI_LICENSE = MIT +WSAPI_LICENSE_FILES = \ + $(WSAPI_SUBDIR)/doc/us/license.html \ + $(WSAPI_SUBDIR)/doc/us/license.md + +$(eval $(luarocks-package)) diff --git a/package/wtfutil/Config.in b/package/wtfutil/Config.in new file mode 100644 index 00000000..3fd8c41b --- /dev/null +++ b/package/wtfutil/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_WTFUTIL + bool "wtfutil" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_GO + help + WTF is the personal information dashboard for your terminal. + + https://wtfutil.com/ diff --git a/package/wtfutil/wtfutil.hash b/package/wtfutil/wtfutil.hash new file mode 100644 index 00000000..d4afbdc0 --- /dev/null +++ b/package/wtfutil/wtfutil.hash @@ -0,0 +1,2 @@ +sha256 1f2a3a037b0e4967039d2241cbe2ba3693a60bd92bd0047cc3361b0faad2a7b6 wtfutil-0.41.0-go2.tar.gz +sha256 b59f3dbd83c6aa4e003b6eafa80bc53f0629e4d164e8b125c56869c2603dbc8f LICENSE.md diff --git a/package/wtfutil/wtfutil.mk b/package/wtfutil/wtfutil.mk new file mode 100644 index 00000000..54fea095 --- /dev/null +++ b/package/wtfutil/wtfutil.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# wtfutil +# +################################################################################ + +WTFUTIL_VERSION = 0.41.0 +WTFUTIL_SITE = $(call github,wtfutil,wtf,v$(WTFUTIL_VERSION)) +WTFUTIL_LICENSE = MPL-2.0 +WTFUTIL_LICENSE_FILES = LICENSE.md +WTFUTIL_CPE_ID_VENDOR = wtfutil +WTFUTIL_CPE_ID_PRODUCT = wtf + +$(eval $(golang-package)) diff --git a/package/x11r7/Config.in b/package/x11r7/Config.in new file mode 100644 index 00000000..0002dfe5 --- /dev/null +++ b/package/x11r7/Config.in @@ -0,0 +1,244 @@ +menuconfig BR2_PACKAGE_XORG7 + bool "X.org X Window System" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS # dlopen in xlib_libX11 + help + Support for X11R7 libraries, servers, drivers, and/or + applications in the target. + + http://xorg.freedesktop.org + +if BR2_PACKAGE_XORG7 + menu "X11R7 Servers" + source "package/x11r7/xserver_xorg-server/Config.in" + source "package/x11r7/xwayland/Config.in" + endmenu + menu "X11R7 Libraries" + source "package/x11r7/libxcb/Config.in" + source "package/x11r7/xcb-util/Config.in" + source "package/x11r7/xcb-util-cursor/Config.in" + source "package/x11r7/xcb-util-image/Config.in" + source "package/x11r7/xcb-util-keysyms/Config.in" + source "package/x11r7/xcb-util-renderutil/Config.in" + source "package/x11r7/xcb-util-wm/Config.in" + source "package/x11r7/xlib_libFS/Config.in" + source "package/x11r7/xlib_libICE/Config.in" + source "package/x11r7/xlib_libSM/Config.in" + source "package/x11r7/xlib_libX11/Config.in" + source "package/x11r7/xlib_libXScrnSaver/Config.in" + source "package/x11r7/xlib_libXau/Config.in" + source "package/x11r7/xlib_libXaw/Config.in" + source "package/x11r7/xlib_libXcomposite/Config.in" + source "package/x11r7/xlib_libXcursor/Config.in" + source "package/x11r7/xlib_libXdamage/Config.in" + source "package/x11r7/xlib_libXdmcp/Config.in" + 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" + source "package/x11r7/xlib_libXmu/Config.in" + source "package/x11r7/xlib_libXpm/Config.in" + source "package/x11r7/xlib_libXpresent/Config.in" + source "package/x11r7/xlib_libXrandr/Config.in" + source "package/x11r7/xlib_libXrender/Config.in" + source "package/x11r7/xlib_libXres/Config.in" + source "package/x11r7/xlib_libXt/Config.in" + source "package/x11r7/xlib_libXtst/Config.in" + source "package/x11r7/xlib_libXv/Config.in" + source "package/x11r7/xlib_libXvMC/Config.in" + source "package/x11r7/xlib_libXxf86dga/Config.in" + source "package/x11r7/xlib_libXxf86vm/Config.in" + source "package/x11r7/xlib_libdmx/Config.in" + source "package/x11r7/xlib_libfontenc/Config.in" + source "package/x11r7/xlib_libxcvt/Config.in" + source "package/x11r7/xlib_libxkbfile/Config.in" + source "package/x11r7/xlib_libxshmfence/Config.in" + source "package/x11r7/xlib_xtrans/Config.in" + endmenu + menu "X11R7 Applications" + source "package/x11r7/xapp_appres/Config.in" + source "package/x11r7/xapp_bdftopcf/Config.in" + source "package/x11r7/xapp_beforelight/Config.in" + source "package/x11r7/xapp_bitmap/Config.in" + source "package/x11r7/xapp_editres/Config.in" + source "package/x11r7/xapp_fonttosfnt/Config.in" + source "package/x11r7/xapp_fslsfonts/Config.in" + source "package/x11r7/xapp_fstobdf/Config.in" + source "package/x11r7/xapp_iceauth/Config.in" + source "package/x11r7/xapp_ico/Config.in" + source "package/x11r7/xapp_listres/Config.in" + source "package/x11r7/xapp_luit/Config.in" + source "package/x11r7/xapp_mkfontscale/Config.in" + source "package/x11r7/xapp_oclock/Config.in" + source "package/x11r7/xapp_rgb/Config.in" + source "package/x11r7/xapp_rstart/Config.in" + source "package/x11r7/xapp_scripts/Config.in" + source "package/x11r7/xapp_sessreg/Config.in" + source "package/x11r7/xapp_setxkbmap/Config.in" + source "package/x11r7/xapp_showfont/Config.in" + source "package/x11r7/xapp_smproxy/Config.in" + source "package/x11r7/xapp_twm/Config.in" + source "package/x11r7/xapp_viewres/Config.in" + source "package/x11r7/xapp_x11perf/Config.in" + source "package/x11r7/xapp_xauth/Config.in" + source "package/x11r7/xapp_xbacklight/Config.in" + source "package/x11r7/xapp_xbiff/Config.in" + source "package/x11r7/xapp_xcalc/Config.in" + source "package/x11r7/xapp_xclipboard/Config.in" + source "package/x11r7/xapp_xclock/Config.in" + source "package/x11r7/xapp_xcmsdb/Config.in" + source "package/x11r7/xapp_xcompmgr/Config.in" + source "package/x11r7/xapp_xconsole/Config.in" + source "package/x11r7/xapp_xcursorgen/Config.in" + source "package/x11r7/xapp_xdbedizzy/Config.in" + source "package/x11r7/xapp_xditview/Config.in" + source "package/x11r7/xapp_xdm/Config.in" + source "package/x11r7/xapp_xdpyinfo/Config.in" + source "package/x11r7/xapp_xdriinfo/Config.in" + source "package/x11r7/xapp_xedit/Config.in" + source "package/x11r7/xapp_xev/Config.in" + source "package/x11r7/xapp_xeyes/Config.in" + source "package/x11r7/xapp_xf86dga/Config.in" + source "package/x11r7/xapp_xfd/Config.in" + source "package/x11r7/xapp_xfindproxy/Config.in" + source "package/x11r7/xapp_xfontsel/Config.in" + source "package/x11r7/xapp_xfs/Config.in" + source "package/x11r7/xapp_xfsinfo/Config.in" + source "package/x11r7/xapp_xgamma/Config.in" + source "package/x11r7/xapp_xgc/Config.in" + source "package/x11r7/xapp_xhost/Config.in" + source "package/x11r7/xapp_xinit/Config.in" + source "package/x11r7/xapp_xinput/Config.in" + source "package/x11r7/xapp_xinput-calibrator/Config.in" + source "package/x11r7/xapp_xkbcomp/Config.in" + source "package/x11r7/xapp_xkbevd/Config.in" + source "package/x11r7/xapp_xkbprint/Config.in" + source "package/x11r7/xapp_xkbutils/Config.in" + source "package/x11r7/xapp_xkill/Config.in" + source "package/x11r7/xapp_xload/Config.in" + source "package/x11r7/xapp_xlogo/Config.in" + source "package/x11r7/xapp_xlsatoms/Config.in" + source "package/x11r7/xapp_xlsclients/Config.in" + source "package/x11r7/xapp_xlsfonts/Config.in" + source "package/x11r7/xapp_xmag/Config.in" + source "package/x11r7/xapp_xman/Config.in" + source "package/x11r7/xapp_xmessage/Config.in" + source "package/x11r7/xapp_xmh/Config.in" + source "package/x11r7/xapp_xmodmap/Config.in" + source "package/x11r7/xapp_xmore/Config.in" + source "package/x11r7/xapp_xpr/Config.in" + source "package/x11r7/xapp_xprop/Config.in" + source "package/x11r7/xapp_xrandr/Config.in" + source "package/x11r7/xapp_xrdb/Config.in" + source "package/x11r7/xapp_xrefresh/Config.in" + source "package/x11r7/xapp_xset/Config.in" + source "package/x11r7/xapp_xsetmode/Config.in" + source "package/x11r7/xapp_xsetpointer/Config.in" + source "package/x11r7/xapp_xsetroot/Config.in" + source "package/x11r7/xapp_xsm/Config.in" + source "package/x11r7/xapp_xstdcmap/Config.in" + source "package/x11r7/xapp_xvidtune/Config.in" + source "package/x11r7/xapp_xvinfo/Config.in" + source "package/x11r7/xapp_xwd/Config.in" + source "package/x11r7/xapp_xwininfo/Config.in" + source "package/x11r7/xapp_xwud/Config.in" + endmenu + if BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR + menu "X11R7 Drivers" + source "package/x11r7/xdriver_xf86-input-evdev/Config.in" + source "package/x11r7/xdriver_xf86-input-joystick/Config.in" + source "package/x11r7/xdriver_xf86-input-libinput/Config.in" + source "package/x11r7/xdriver_xf86-input-mouse/Config.in" + source "package/x11r7/xdriver_xf86-input-synaptics/Config.in" + source "package/x11r7/xdriver_xf86-input-tslib/Config.in" + source "package/x11r7/xdriver_xf86-input-vmmouse/Config.in" + source "package/x11r7/xdriver_xf86-video-amdgpu/Config.in" + source "package/x11r7/xdriver_xf86-video-ark/Config.in" + source "package/x11r7/xdriver_xf86-video-ast/Config.in" + source "package/x11r7/xdriver_xf86-video-ati/Config.in" + source "package/x11r7/xdriver_xf86-video-cirrus/Config.in" + source "package/x11r7/xdriver_xf86-video-dummy/Config.in" + source "package/x11r7/xdriver_xf86-video-fbdev/Config.in" + source "package/x11r7/xdriver_xf86-video-fbturbo/Config.in" + source "package/x11r7/xdriver_xf86-video-geode/Config.in" + source "package/x11r7/xdriver_xf86-video-i128/Config.in" + source "package/x11r7/xdriver_xf86-video-imx/Config.in" + source "package/x11r7/xdriver_xf86-video-intel/Config.in" + source "package/x11r7/xdriver_xf86-video-mach64/Config.in" + source "package/x11r7/xdriver_xf86-video-mga/Config.in" + source "package/x11r7/xdriver_xf86-video-neomagic/Config.in" + source "package/x11r7/xdriver_xf86-video-nouveau/Config.in" + source "package/x11r7/xdriver_xf86-video-nv/Config.in" + source "package/x11r7/xdriver_xf86-video-openchrome/Config.in" + source "package/x11r7/xdriver_xf86-video-qxl/Config.in" + source "package/x11r7/xdriver_xf86-video-r128/Config.in" + source "package/x11r7/xdriver_xf86-video-savage/Config.in" + source "package/x11r7/xdriver_xf86-video-siliconmotion/Config.in" + source "package/x11r7/xdriver_xf86-video-sis/Config.in" + source "package/x11r7/xdriver_xf86-video-tdfx/Config.in" + source "package/x11r7/xdriver_xf86-video-trident/Config.in" + source "package/x11r7/xdriver_xf86-video-vesa/Config.in" + source "package/x11r7/xdriver_xf86-video-vmware/Config.in" + source "package/x11r7/xdriver_xf86-video-voodoo/Config.in" + endmenu + endif + menu "X11R7 Fonts" + source "package/x11r7/xfont_font-util/Config.in" + source "package/x11r7/xfont_encodings/Config.in" + source "package/x11r7/xfont_font-adobe-100dpi/Config.in" + source "package/x11r7/xfont_font-adobe-75dpi/Config.in" + source "package/x11r7/xfont_font-adobe-utopia-100dpi/Config.in" + source "package/x11r7/xfont_font-adobe-utopia-75dpi/Config.in" + source "package/x11r7/xfont_font-adobe-utopia-type1/Config.in" + source "package/x11r7/xfont_font-alias/Config.in" + source "package/x11r7/xfont_font-arabic-misc/Config.in" + source "package/x11r7/xfont_font-bh-100dpi/Config.in" + source "package/x11r7/xfont_font-bh-75dpi/Config.in" + source "package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/Config.in" + source "package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/Config.in" + source "package/x11r7/xfont_font-bh-ttf/Config.in" + source "package/x11r7/xfont_font-bh-type1/Config.in" + source "package/x11r7/xfont_font-bitstream-100dpi/Config.in" + source "package/x11r7/xfont_font-bitstream-75dpi/Config.in" + source "package/x11r7/xfont_font-bitstream-type1/Config.in" + source "package/x11r7/xfont_font-cronyx-cyrillic/Config.in" + source "package/x11r7/xfont_font-cursor-misc/Config.in" + source "package/x11r7/xfont_font-daewoo-misc/Config.in" + source "package/x11r7/xfont_font-dec-misc/Config.in" + source "package/x11r7/xfont_font-ibm-type1/Config.in" + source "package/x11r7/xfont_font-isas-misc/Config.in" + source "package/x11r7/xfont_font-jis-misc/Config.in" + source "package/x11r7/xfont_font-micro-misc/Config.in" + source "package/x11r7/xfont_font-misc-cyrillic/Config.in" + source "package/x11r7/xfont_font-misc-ethiopic/Config.in" + source "package/x11r7/xfont_font-misc-meltho/Config.in" + source "package/x11r7/xfont_font-misc-misc/Config.in" + source "package/x11r7/xfont_font-mutt-misc/Config.in" + source "package/x11r7/xfont_font-schumacher-misc/Config.in" + source "package/x11r7/xfont_font-screen-cyrillic/Config.in" + source "package/x11r7/xfont_font-sony-misc/Config.in" + source "package/x11r7/xfont_font-sun-misc/Config.in" + source "package/x11r7/xfont_font-winitzki-cyrillic/Config.in" + source "package/x11r7/xfont_font-xfree86-type1/Config.in" + endmenu + menu "X11R7 X protocols" + source "package/x11r7/xcb-proto/Config.in" + source "package/x11r7/xorgproto/Config.in" + endmenu + menu "X11R7 Utilities" + source "package/x11r7/xutil_makedepend/Config.in" + source "package/x11r7/mcookie/Config.in" + endmenu + menu "X11R7 Other data" + source "package/x11r7/xdata_xbitmaps/Config.in" + source "package/x11r7/xdata_xcursor-themes/Config.in" + source "package/x11r7/xcursor-transparent-theme/Config.in" + endmenu +endif + +comment "X.org needs a toolchain w/ wchar, threads, dynamic library" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/x11r7/libxcb/Config.in b/package/x11r7/libxcb/Config.in new file mode 100644 index 00000000..e15dde3b --- /dev/null +++ b/package/x11r7/libxcb/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBXCB + bool "libxcb" + select BR2_PACKAGE_XCB_PROTO + select BR2_PACKAGE_XLIB_LIBXDMCP + select BR2_PACKAGE_XLIB_LIBXAU + help + The X protocol C-language Binding (XCB) is a replacement for + Xlib featuring a small footprint, latency hiding, direct + access to the protocol, improved threading support, and + extensibility. + + http://xcb.freedesktop.org/ diff --git a/package/x11r7/libxcb/libxcb.hash b/package/x11r7/libxcb/libxcb.hash new file mode 100644 index 00000000..2e2179e8 --- /dev/null +++ b/package/x11r7/libxcb/libxcb.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-May/003164.html +sha256 cc38744f817cf6814c847e2df37fcb8997357d72fa4bcbc228ae0fe47219a059 libxcb-1.15.tar.xz +sha512 f6c7d766b7cf9cab6abe948ee424cbae6951dbfe2f76fa58a109cdc05b0f0919dcc4e38176a22ff4b95fc1e38596115317e32ba33b24cae0035a4e30dbcbdad9 libxcb-1.15.tar.xz +# Locally computed +sha256 c5ffbfeaa501071ceeb97b7de2c0d703fdaa35de01c0fb6cbac1c28453a3e9fd COPYING diff --git a/package/x11r7/libxcb/libxcb.mk b/package/x11r7/libxcb/libxcb.mk new file mode 100644 index 00000000..4b293f98 --- /dev/null +++ b/package/x11r7/libxcb/libxcb.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# libxcb +# +################################################################################ + +LIBXCB_VERSION = 1.15 +LIBXCB_SOURCE = libxcb-$(LIBXCB_VERSION).tar.xz +LIBXCB_SITE = http://xcb.freedesktop.org/dist +LIBXCB_LICENSE = MIT +LIBXCB_LICENSE_FILES = COPYING +LIBXCB_CPE_ID_VENDOR = x + +LIBXCB_INSTALL_STAGING = YES + +LIBXCB_DEPENDENCIES = \ + host-libxslt xcb-proto xlib_libXdmcp xlib_libXau \ + host-xcb-proto host-python3 host-pkgconf +HOST_LIBXCB_DEPENDENCIES = \ + host-libxslt host-xcb-proto host-xlib_libXdmcp \ + host-xlib_libXau host-python3 host-pkgconf + +LIBXCB_CONF_OPTS = --with-doxygen=no +HOST_LIBXCB_CONF_OPTS = --with-doxygen=no + +# Force detection of Buildroot host-python3 over system python +LIBXCB_CONF_OPTS += ac_cv_path_PYTHON=$(HOST_DIR)/bin/python3 +HOST_LIBXCB_CONF_OPTS += ac_cv_path_PYTHON=$(HOST_DIR)/bin/python3 + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/x11r7/mcookie/Config.in b/package/x11r7/mcookie/Config.in new file mode 100644 index 00000000..2e9cfc76 --- /dev/null +++ b/package/x11r7/mcookie/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_MCOOKIE + bool "mcookie" + help + cookie generator for X server + + http://www.x.org diff --git a/package/x11r7/mcookie/mcookie.c b/package/x11r7/mcookie/mcookie.c new file mode 100644 index 00000000..3c38f6f3 --- /dev/null +++ b/package/x11r7/mcookie/mcookie.c @@ -0,0 +1,425 @@ +/* mcookie.c -- Generates random numbers for xauth + * Created: Fri Feb 3 10:42:48 1995 by faith@cs.unc.edu + * Revised: Fri Mar 19 07:48:01 1999 by faith@acm.org + * Public Domain 1995, 1999 Rickard E. Faith (faith@acm.org) + * This program comes with ABSOLUTELY NO WARRANTY. + * + * $Id: mcookie.c,v 1.5 1997/07/06 00:13:06 aebr Exp $ + * + * This program gathers some random bits of data and used the MD5 + * message-digest algorithm to generate a 128-bit hexadecimal number for + * use with xauth(1). + * + * NOTE: Unless /dev/random is available, this program does not actually + * gather 128 bits of random information, so the magic cookie generated + * will be considerably easier to guess than one might expect. + * + * 1999-02-22 Arkadiusz Mi¶kiewicz + * - added Native Language Support + * 1999-03-21 aeb: Added some fragments of code from Colin Plumb. + * + */ + +#include +#include +#include +#include +#include +#include + +#define BUFFERSIZE 4096 + + +#ifndef MD5_H +#define MD5_H + +#if defined (__alpha__) || defined (__ia64__) || defined (__x86_64__) +typedef unsigned int uint32; +#else +typedef unsigned long uint32; +#endif + +struct MD5Context { + uint32 buf[4]; + uint32 bits[2]; + unsigned char in[64]; +}; + +void MD5Init(struct MD5Context *context); +void MD5Update(struct MD5Context *context, unsigned char const *buf, + unsigned len); +void MD5Final(unsigned char digest[16], struct MD5Context *context); +void MD5Transform(uint32 buf[4], uint32 const in[16]); + +/* + * This is needed to make RSAREF happy on some MS-DOS compilers. + */ +typedef struct MD5Context MD5_CTX; + +#endif /* !MD5_H */ + + + +/* + * This code implements the MD5 message-digest algorithm. + * The algorithm is due to Ron Rivest. This code was + * written by Colin Plumb in 1993, no copyright is claimed. + * This code is in the public domain; do with it what you wish. + * + * Equivalent code is available from RSA Data Security, Inc. + * This code has been tested against that, and is equivalent, + * except that you don't need to include two pages of legalese + * with every copy. + * + * To compute the message digest of a chunk of bytes, declare an + * MD5Context structure, pass it to MD5Init, call MD5Update as + * needed on buffers full of bytes, and then call MD5Final, which + * will fill a supplied 16-byte array with the digest. + */ +#include /* for memcpy() */ +#include + +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define byteReverse(buf, len) /* Nothing */ +#else +void byteReverse(unsigned char *buf, unsigned longs); + +/* + * Note: this code is harmless on little-endian machines. + */ +void byteReverse(unsigned char *buf, unsigned longs) +{ + uint32 t; + do { + t = (uint32) ((unsigned) buf[3] << 8 | buf[2]) << 16 | + ((unsigned) buf[1] << 8 | buf[0]); + *(uint32 *) buf = t; + buf += 4; + } while (--longs); +} +#endif + +/* + * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious + * initialization constants. + */ +void MD5Init(struct MD5Context *ctx) +{ + ctx->buf[0] = 0x67452301; + ctx->buf[1] = 0xefcdab89; + ctx->buf[2] = 0x98badcfe; + ctx->buf[3] = 0x10325476; + + ctx->bits[0] = 0; + ctx->bits[1] = 0; +} + +/* + * Update context to reflect the concatenation of another buffer full + * of bytes. + */ +void MD5Update(struct MD5Context *ctx, unsigned char const *buf, unsigned len) +{ + uint32 t; + + /* Update bitcount */ + + t = ctx->bits[0]; + if ((ctx->bits[0] = t + ((uint32) len << 3)) < t) + ctx->bits[1]++; /* Carry from low to high */ + ctx->bits[1] += len >> 29; + + t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */ + + /* Handle any leading odd-sized chunks */ + + if (t) { + unsigned char *p = (unsigned char *) ctx->in + t; + + t = 64 - t; + if (len < t) { + memcpy(p, buf, len); + return; + } + memcpy(p, buf, t); + byteReverse(ctx->in, 16); + MD5Transform(ctx->buf, (uint32 *) ctx->in); + buf += t; + len -= t; + } + /* Process data in 64-byte chunks */ + + while (len >= 64) { + memcpy(ctx->in, buf, 64); + byteReverse(ctx->in, 16); + MD5Transform(ctx->buf, (uint32 *) ctx->in); + buf += 64; + len -= 64; + } + + /* Handle any remaining bytes of data. */ + + memcpy(ctx->in, buf, len); +} + +/* + * Final wrapup - pad to 64-byte boundary with the bit pattern + * 1 0* (64-bit count of bits processed, MSB-first) + */ +void MD5Final(unsigned char digest[16], struct MD5Context *ctx) +{ + unsigned count; + unsigned char *p; + + /* Compute number of bytes mod 64 */ + count = (ctx->bits[0] >> 3) & 0x3F; + + /* Set the first char of padding to 0x80. This is safe since there is + always at least one byte free */ + p = ctx->in + count; + *p++ = 0x80; + + /* Bytes of padding needed to make 64 bytes */ + count = 64 - 1 - count; + + /* Pad out to 56 mod 64 */ + if (count < 8) { + /* Two lots of padding: Pad the first block to 64 bytes */ + memset(p, 0, count); + byteReverse(ctx->in, 16); + MD5Transform(ctx->buf, (uint32 *) ctx->in); + + /* Now fill the next block with 56 bytes */ + memset(ctx->in, 0, 56); + } else { + /* Pad block to 56 bytes */ + memset(p, 0, count - 8); + } + byteReverse(ctx->in, 14); + + /* Append length in bits and transform */ + ((uint32 *) ctx->in)[14] = ctx->bits[0]; + ((uint32 *) ctx->in)[15] = ctx->bits[1]; + + MD5Transform(ctx->buf, (uint32 *) ctx->in); + byteReverse((unsigned char *) ctx->buf, 4); + memcpy(digest, ctx->buf, 16); + memset(ctx, 0, sizeof(*ctx)); /* In case it's sensitive */ +} + +/* The four core functions - F1 is optimized somewhat */ + +/* #define F1(x, y, z) (x & y | ~x & z) */ +#define F1(x, y, z) (z ^ (x & (y ^ z))) +#define F2(x, y, z) F1(z, x, y) +#define F3(x, y, z) (x ^ y ^ z) +#define F4(x, y, z) (y ^ (x | ~z)) + +/* This is the central step in the MD5 algorithm. */ +#define MD5STEP(f, w, x, y, z, data, s) \ + ( w += f(x, y, z) + data, w = w<>(32-s), w += x ) + +/* + * The core of the MD5 algorithm, this alters an existing MD5 hash to + * reflect the addition of 16 longwords of new data. MD5Update blocks + * the data and converts bytes into longwords for this routine. + */ +void MD5Transform(uint32 buf[4], uint32 const in[16]) +{ + register uint32 a, b, c, d; + + a = buf[0]; + b = buf[1]; + c = buf[2]; + d = buf[3]; + + MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7); + MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12); + MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17); + MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22); + MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7); + MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12); + MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17); + MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22); + MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7); + MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12); + MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); + MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22); + MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7); + MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12); + MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17); + MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22); + + MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5); + MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9); + MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14); + MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); + MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5); + MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9); + MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); + MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); + MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5); + MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9); + MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14); + MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20); + MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); + MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); + MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14); + MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); + + MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4); + MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11); + MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); + MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23); + MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4); + MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); + MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); + MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); + MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); + MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11); + MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16); + MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23); + MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4); + MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); + MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); + MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23); + + MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6); + MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10); + MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15); + MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21); + MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6); + MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); + MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15); + MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21); + MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); + MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); + MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15); + MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21); + MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6); + MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10); + MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); + MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21); + + buf[0] += a; + buf[1] += b; + buf[2] += c; + buf[3] += d; +} + + + + +struct rngs { + const char *path; + int minlength, maxlength; +} rngs[] = { + { "/dev/random", 16, 16 }, /* 16 bytes = 128 bits suffice */ + { "/proc/interrupts", 0, 0 }, + { "/proc/slabinfo", 0, 0 }, + { "/proc/stat", 0, 0 }, + { "/dev/urandom", 32, 64 }, +}; +#define RNGS (sizeof(rngs)/sizeof(struct rngs)) + +int Verbose = 0; + +/* The basic function to hash a file */ +static off_t +hash_file(struct MD5Context *ctx, int fd) +{ + off_t count = 0; + ssize_t r; + unsigned char buf[BUFFERSIZE]; + + while ((r = read(fd, buf, sizeof(buf))) > 0) { + MD5Update(ctx, buf, r); + count += r; + } + /* Separate files with a null byte */ + buf[0] = 0; + MD5Update(ctx, buf, 1); + return count; +} + +int main( int argc, char **argv ) +{ + int i; + struct MD5Context ctx; + unsigned char digest[16]; + unsigned char buf[BUFFERSIZE]; + int fd; + int c; + pid_t pid; + char *file = NULL; + int r; + struct timeval tv; + struct timezone tz; + + while ((c = getopt( argc, argv, "vf:" )) != -1) + switch (c) { + case 'v': ++Verbose; break; + case 'f': file = optarg; break; + } + + MD5Init( &ctx ); + + gettimeofday( &tv, &tz ); + MD5Update( &ctx, (unsigned char *)&tv, sizeof( tv ) ); + pid = getppid(); + MD5Update( &ctx, (unsigned char *)&pid, sizeof( pid )); + pid = getpid(); + MD5Update( &ctx, (unsigned char *)&pid, sizeof( pid )); + + if (file) { + int count = 0; + + if (file[0] == '-' && !file[1]) + fd = fileno(stdin); + else + fd = open( file, O_RDONLY ); + + if (fd < 0) { + fprintf( stderr, "Could not open %s\n", file ); + } else { + count = hash_file( &ctx, fd ); + if (Verbose) + fprintf( stderr, "Got %d bytes from %s\n", count, file ); + + if (file[0] != '-' || file[1]) close( fd ); + } + } + + for (i = 0; i < RNGS; i++) { + if ((fd = open( rngs[i].path, O_RDONLY|O_NONBLOCK )) >= 0) { + int count = sizeof(buf); + + if (rngs[i].maxlength && count > rngs[i].maxlength) + count = rngs[i].maxlength; + r = read( fd, buf, count ); + if (r > 0) + MD5Update( &ctx, buf, r ); + else + r = 0; + close( fd ); + if (Verbose) + fprintf( stderr, "Got %d bytes from %s\n", r, rngs[i].path ); + if (rngs[i].minlength && r >= rngs[i].minlength) + break; + } else if (Verbose) + fprintf( stderr, "Could not open %s\n", rngs[i].path ); + } + + MD5Final( digest, &ctx ); + for (i = 0; i < 16; i++) printf( "%02x", digest[i] ); + putchar ( '\n' ); + + /* + * The following is important for cases like disk full, so shell scripts + * can bomb out properly rather than think they succeeded. + */ + if (fflush(stdout) < 0 || fclose(stdout) < 0) + return 1; + + return 0; +} diff --git a/package/x11r7/mcookie/mcookie.mk b/package/x11r7/mcookie/mcookie.mk new file mode 100644 index 00000000..b14599d5 --- /dev/null +++ b/package/x11r7/mcookie/mcookie.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# mcookie +# +################################################################################ + +MCOOKIE_LICENSE = Public Domain + +define MCOOKIE_EXTRACT_CMDS + cp package/x11r7/mcookie/mcookie.c $(@D)/ +endef + +define MCOOKIE_BUILD_CMDS + (cd $(@D); $(TARGET_CC) -Wall -Os -s mcookie.c -o mcookie) +endef + +define MCOOKIE_INSTALL_TARGET_CMDS + install -m 0755 -D $(@D)/mcookie $(TARGET_DIR)/usr/bin/mcookie +endef + +$(eval $(generic-package)) diff --git a/package/x11r7/x11r7.mk b/package/x11r7/x11r7.mk new file mode 100644 index 00000000..85ecbc59 --- /dev/null +++ b/package/x11r7/x11r7.mk @@ -0,0 +1 @@ +include $(sort $(wildcard package/x11r7/*/*.mk)) diff --git a/package/x11r7/xapp_appres/Config.in b/package/x11r7/xapp_appres/Config.in new file mode 100644 index 00000000..7574659a --- /dev/null +++ b/package/x11r7/xapp_appres/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_APPRES + bool "appres" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXT + help + list X application resource database diff --git a/package/x11r7/xapp_appres/xapp_appres.hash b/package/x11r7/xapp_appres/xapp_appres.hash new file mode 100644 index 00000000..17190e60 --- /dev/null +++ b/package/x11r7/xapp_appres/xapp_appres.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-April/003141.html +sha256 8b2257e2a0a1ad8330323aec23f07c333075d7fe4e6efd88e0c18fba8223590b appres-1.0.6.tar.xz +sha512 6d14f6a2ad5c83a4d42d4c51ec9a9f32652dfe7624881f1f41c0b1f4946904e7e5ca81a2fd9f4f4824488ce1bd2a4047f92320626bf33b0f1afc5e6b89d3e2b9 appres-1.0.6.tar.xz +# Locally computed +sha256 5969302729a9621fd526a7f9942a51a29b858e0b682ffd28eeda5fc4dfaddf55 COPYING diff --git a/package/x11r7/xapp_appres/xapp_appres.mk b/package/x11r7/xapp_appres/xapp_appres.mk new file mode 100644 index 00000000..9beada29 --- /dev/null +++ b/package/x11r7/xapp_appres/xapp_appres.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_appres +# +################################################################################ + +XAPP_APPRES_VERSION = 1.0.6 +XAPP_APPRES_SOURCE = appres-$(XAPP_APPRES_VERSION).tar.xz +XAPP_APPRES_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_APPRES_LICENSE = MIT +XAPP_APPRES_LICENSE_FILES = COPYING +XAPP_APPRES_DEPENDENCIES = xlib_libX11 xlib_libXt + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_bdftopcf/Config.in b/package/x11r7/xapp_bdftopcf/Config.in new file mode 100644 index 00000000..a9caffa6 --- /dev/null +++ b/package/x11r7/xapp_bdftopcf/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_BDFTOPCF + bool "bdftopcf" + select BR2_PACKAGE_XLIB_LIBXFONT + help + X.Org bdftopcf application diff --git a/package/x11r7/xapp_bdftopcf/xapp_bdftopcf.hash b/package/x11r7/xapp_bdftopcf/xapp_bdftopcf.hash new file mode 100644 index 00000000..0596b65e --- /dev/null +++ b/package/x11r7/xapp_bdftopcf/xapp_bdftopcf.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003223.html +sha256 11c953d53c0f3ed349d0198dfb0a40000b5121df7eef09f2615a262892fed908 bdftopcf-1.1.1.tar.xz +sha512 257dc9ae29f2cf1496aad91ccba534348d87f881d75431aa6611a8154cb817d17588c464ab6c6c6bc51e6060baa8dcfcb9fd8c037cdaea8d18287651fa6b7ea9 bdftopcf-1.1.1.tar.xz +# Locally calculated +sha256 a437fb5272ba507c2977b2ef623bb391270f521b2a20271ed044785f4eaa5dbc COPYING diff --git a/package/x11r7/xapp_bdftopcf/xapp_bdftopcf.mk b/package/x11r7/xapp_bdftopcf/xapp_bdftopcf.mk new file mode 100644 index 00000000..d47f5c02 --- /dev/null +++ b/package/x11r7/xapp_bdftopcf/xapp_bdftopcf.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# xapp_bdftopcf +# +################################################################################ + +XAPP_BDFTOPCF_VERSION = 1.1.1 +XAPP_BDFTOPCF_SOURCE = bdftopcf-$(XAPP_BDFTOPCF_VERSION).tar.xz +XAPP_BDFTOPCF_SITE = https://xorg.freedesktop.org/archive/individual/util +XAPP_BDFTOPCF_LICENSE = MIT +XAPP_BDFTOPCF_LICENSE_FILES = COPYING +XAPP_BDFTOPCF_DEPENDENCIES = xlib_libXfont +HOST_XAPP_BDFTOPCF_DEPENDENCIES = host-xlib_libXfont + +# needed for linking against libXfont +XAPP_BDFTOPCF_MAKE_OPTS += LIBS=-ldl + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/x11r7/xapp_beforelight/Config.in b/package/x11r7/xapp_beforelight/Config.in new file mode 100644 index 00000000..3a111897 --- /dev/null +++ b/package/x11r7/xapp_beforelight/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_BEFORELIGHT + bool "beforelight" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXSCRNSAVER + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXT + help + screen saver diff --git a/package/x11r7/xapp_beforelight/xapp_beforelight.hash b/package/x11r7/xapp_beforelight/xapp_beforelight.hash new file mode 100644 index 00000000..f5b0cb21 --- /dev/null +++ b/package/x11r7/xapp_beforelight/xapp_beforelight.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-January/003317.html +sha256 53f0bf085b7272ebbf626d1b9b0ad320d1a07bc1fe7f3ae260c86a71a857ad28 beforelight-1.0.6.tar.xz +sha512 48a165d151676f6d213883bee98b34007403a77e025253c8649f9a0f5ea258b09381ab523a5e906030ac9fc8245fce2c6beaf9ad0f81116e302d51ad4a0fad5a beforelight-1.0.6.tar.xz +# Locally computed +sha256 3909739fae1ee37c3c7167a91f53d29317965aaf932813e16ef733f033619a7b COPYING diff --git a/package/x11r7/xapp_beforelight/xapp_beforelight.mk b/package/x11r7/xapp_beforelight/xapp_beforelight.mk new file mode 100644 index 00000000..6b753833 --- /dev/null +++ b/package/x11r7/xapp_beforelight/xapp_beforelight.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xapp_beforelight +# +################################################################################ + +XAPP_BEFORELIGHT_VERSION = 1.0.6 +XAPP_BEFORELIGHT_SOURCE = beforelight-$(XAPP_BEFORELIGHT_VERSION).tar.xz +XAPP_BEFORELIGHT_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_BEFORELIGHT_LICENSE = MIT +XAPP_BEFORELIGHT_LICENSE_FILES = COPYING +XAPP_BEFORELIGHT_DEPENDENCIES = xlib_libX11 xlib_libXScrnSaver xlib_libXaw xlib_libXt +XAPP_BEFORELIGHT_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_bitmap/Config.in b/package/x11r7/xapp_bitmap/Config.in new file mode 100644 index 00000000..e5bb5e83 --- /dev/null +++ b/package/x11r7/xapp_bitmap/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_BITMAP + bool "bitmap" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXMU + select BR2_PACKAGE_XDATA_XBITMAPS + help + X.Org bitmap application diff --git a/package/x11r7/xapp_bitmap/xapp_bitmap.hash b/package/x11r7/xapp_bitmap/xapp_bitmap.hash new file mode 100644 index 00000000..8953bfc5 --- /dev/null +++ b/package/x11r7/xapp_bitmap/xapp_bitmap.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-April/003162.html +sha256 8e86879c2feeece3f10e189330479cf51da0dd268355d1e3ee8a8497ab833690 bitmap-1.1.0.tar.xz +sha512 3d6c94675f10772daeb71598c3e0ddcb51569b1bfc4771159e9df89599bfeb8bf49f464c24fef54d30a8f737af32136f859f844be03e088d24ed962f88381193 bitmap-1.1.0.tar.xz +# Locally computed +sha256 03be44611edac06827bd13c0815a67ecd37ffe8fb1b9e210d6545d79bec89a3a COPYING diff --git a/package/x11r7/xapp_bitmap/xapp_bitmap.mk b/package/x11r7/xapp_bitmap/xapp_bitmap.mk new file mode 100644 index 00000000..ccc43856 --- /dev/null +++ b/package/x11r7/xapp_bitmap/xapp_bitmap.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xapp_bitmap +# +################################################################################ + +XAPP_BITMAP_VERSION = 1.1.0 +XAPP_BITMAP_SOURCE = bitmap-$(XAPP_BITMAP_VERSION).tar.xz +XAPP_BITMAP_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_BITMAP_LICENSE = MIT +XAPP_BITMAP_LICENSE_FILES = COPYING +XAPP_BITMAP_DEPENDENCIES = xlib_libX11 xlib_libXaw xlib_libXmu xdata_xbitmaps +XAPP_BITMAP_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_editres/Config.in b/package/x11r7/xapp_editres/Config.in new file mode 100644 index 00000000..390ec487 --- /dev/null +++ b/package/x11r7/xapp_editres/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_EDITRES + bool "editres" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXMU + select BR2_PACKAGE_XLIB_LIBXT + help + a dynamic resource editor for X Toolkit applications diff --git a/package/x11r7/xapp_editres/xapp_editres.hash b/package/x11r7/xapp_editres/xapp_editres.hash new file mode 100644 index 00000000..a1a8ab90 --- /dev/null +++ b/package/x11r7/xapp_editres/xapp_editres.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-April/003139.html +sha256 83cf5dffb1883635fd9c6a8dc48ff9e560f6c6d8ce1a0e929d5f409cba18b6f9 editres-1.0.8.tar.xz +sha512 9a007ed7a02abf61af8b65a163a7289a1e960db390db401bdfad162aa642e0eb887ecf85be14093efd8567c68f5e01450bb8321403a203a00065fa21985c7922 editres-1.0.8.tar.xz +# Locally computed +sha256 b1049cf96db2c00428b8313541ab333ec4e06f102955f3edd44f88ec43b0acd6 COPYING diff --git a/package/x11r7/xapp_editres/xapp_editres.mk b/package/x11r7/xapp_editres/xapp_editres.mk new file mode 100644 index 00000000..bd1bce73 --- /dev/null +++ b/package/x11r7/xapp_editres/xapp_editres.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xapp_editres +# +################################################################################ + +XAPP_EDITRES_VERSION = 1.0.8 +XAPP_EDITRES_SOURCE = editres-$(XAPP_EDITRES_VERSION).tar.xz +XAPP_EDITRES_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_EDITRES_LICENSE = MIT +XAPP_EDITRES_LICENSE_FILES = COPYING +XAPP_EDITRES_DEPENDENCIES = xlib_libX11 xlib_libXaw xlib_libXmu xlib_libXt +XAPP_EDITRES_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_fonttosfnt/Config.in b/package/x11r7/xapp_fonttosfnt/Config.in new file mode 100644 index 00000000..eb35710f --- /dev/null +++ b/package/x11r7/xapp_fonttosfnt/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XAPP_FONTTOSFNT + bool "fonttosfnt" + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBFONTENC + help + X.Org fonttosfnt application diff --git a/package/x11r7/xapp_fonttosfnt/xapp_fonttosfnt.hash b/package/x11r7/xapp_fonttosfnt/xapp_fonttosfnt.hash new file mode 100644 index 00000000..72077bee --- /dev/null +++ b/package/x11r7/xapp_fonttosfnt/xapp_fonttosfnt.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2021-June/003093.html +sha256 1a1bb4ef25856dea7de3d491ae7231493225b400bee0f6a1f949017ffd203a64 fonttosfnt-1.2.2.tar.bz2 +sha512 ceac6ccb064043d46f9f16f31fb89c6cbf7f026d049f7b5325d6af97e809b4cd068e6149413bb328c0af601a98b5070e21d469888a6853f6cabecd5b46f60240 fonttosfnt-1.2.2.tar.bz2 +# Locally computed +sha256 f83378580cb7909a98b52bf5cd6a29f4894d76318c5c5312dd3f17a3e92beef1 COPYING diff --git a/package/x11r7/xapp_fonttosfnt/xapp_fonttosfnt.mk b/package/x11r7/xapp_fonttosfnt/xapp_fonttosfnt.mk new file mode 100644 index 00000000..9fdccbb8 --- /dev/null +++ b/package/x11r7/xapp_fonttosfnt/xapp_fonttosfnt.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_fonttosfnt +# +################################################################################ + +XAPP_FONTTOSFNT_VERSION = 1.2.2 +XAPP_FONTTOSFNT_SOURCE = fonttosfnt-$(XAPP_FONTTOSFNT_VERSION).tar.bz2 +XAPP_FONTTOSFNT_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_FONTTOSFNT_LICENSE = MIT +XAPP_FONTTOSFNT_LICENSE_FILES = COPYING +XAPP_FONTTOSFNT_DEPENDENCIES = freetype xlib_libX11 xlib_libfontenc + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_fslsfonts/Config.in b/package/x11r7/xapp_fslsfonts/Config.in new file mode 100644 index 00000000..1917d615 --- /dev/null +++ b/package/x11r7/xapp_fslsfonts/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_FSLSFONTS + bool "fslsfonts" + select BR2_PACKAGE_XLIB_LIBFS + select BR2_PACKAGE_XLIB_LIBX11 + help + list fonts served by X font server diff --git a/package/x11r7/xapp_fslsfonts/xapp_fslsfonts.hash b/package/x11r7/xapp_fslsfonts/xapp_fslsfonts.hash new file mode 100644 index 00000000..20573576 --- /dev/null +++ b/package/x11r7/xapp_fslsfonts/xapp_fslsfonts.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-September/003210.html +sha256 01cb0c5a7dbddadef846ca3b52c2ab9c60f2c32c3f16584cd97a6c7f293341ee fslsfonts-1.0.6.tar.xz +sha512 1181a8e6cc820410d1deac98b3e5097506e4168c6515307b6b9aaf705cb57193a009cb331a51d46ce68e9548712f122b5c942d5a1bc1e01bdd191b7b1beab09e fslsfonts-1.0.6.tar.xz +# Locally computed +sha256 fbdfcafb5755565ad688bf3f7f808109d358040ec83ed3de496155105451fdf4 COPYING diff --git a/package/x11r7/xapp_fslsfonts/xapp_fslsfonts.mk b/package/x11r7/xapp_fslsfonts/xapp_fslsfonts.mk new file mode 100644 index 00000000..1b8d6301 --- /dev/null +++ b/package/x11r7/xapp_fslsfonts/xapp_fslsfonts.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_fslsfonts +# +################################################################################ + +XAPP_FSLSFONTS_VERSION = 1.0.6 +XAPP_FSLSFONTS_SOURCE = fslsfonts-$(XAPP_FSLSFONTS_VERSION).tar.xz +XAPP_FSLSFONTS_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_FSLSFONTS_LICENSE = MIT +XAPP_FSLSFONTS_LICENSE_FILES = COPYING +XAPP_FSLSFONTS_DEPENDENCIES = xlib_libFS xlib_libX11 + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_fstobdf/Config.in b/package/x11r7/xapp_fstobdf/Config.in new file mode 100644 index 00000000..0a1f62ba --- /dev/null +++ b/package/x11r7/xapp_fstobdf/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_FSTOBDF + bool "fstobdf" + select BR2_PACKAGE_XLIB_LIBFS + select BR2_PACKAGE_XLIB_LIBX11 + help + generate BDF font from X font server diff --git a/package/x11r7/xapp_fstobdf/xapp_fstobdf.hash b/package/x11r7/xapp_fstobdf/xapp_fstobdf.hash new file mode 100644 index 00000000..956c3ef0 --- /dev/null +++ b/package/x11r7/xapp_fstobdf/xapp_fstobdf.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003215.html +sha256 2624cbf071ccca89c2a6dadd65004784f478b2ba1c62b8209e03909954f36b50 fstobdf-1.0.7.tar.xz +sha512 b303cc2060e8ccaa139e855a7d377d28877158efa1087eeeebf9f30f7c9962764eceab5c4044b4b508890413cf38546da9b26756dd27a142b806dcd6fdb6ba59 fstobdf-1.0.7.tar.xz +# Locally computed +sha256 b76125d919ac2bfbff96955dec98b90729633b2df5fbfa2ad3f2e4376164febb COPYING diff --git a/package/x11r7/xapp_fstobdf/xapp_fstobdf.mk b/package/x11r7/xapp_fstobdf/xapp_fstobdf.mk new file mode 100644 index 00000000..989883d4 --- /dev/null +++ b/package/x11r7/xapp_fstobdf/xapp_fstobdf.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_fstobdf +# +################################################################################ + +XAPP_FSTOBDF_VERSION = 1.0.7 +XAPP_FSTOBDF_SOURCE = fstobdf-$(XAPP_FSTOBDF_VERSION).tar.xz +XAPP_FSTOBDF_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_FSTOBDF_LICENSE = MIT +XAPP_FSTOBDF_LICENSE_FILES = COPYING +XAPP_FSTOBDF_DEPENDENCIES = xlib_libFS xlib_libX11 + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_iceauth/Config.in b/package/x11r7/xapp_iceauth/Config.in new file mode 100644 index 00000000..ce2db988 --- /dev/null +++ b/package/x11r7/xapp_iceauth/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_ICEAUTH + bool "iceauth" + select BR2_PACKAGE_XLIB_LIBICE + select BR2_PACKAGE_XLIB_LIBX11 + help + ICE authority file utility diff --git a/package/x11r7/xapp_iceauth/xapp_iceauth.hash b/package/x11r7/xapp_iceauth/xapp_iceauth.hash new file mode 100644 index 00000000..694b6bea --- /dev/null +++ b/package/x11r7/xapp_iceauth/xapp_iceauth.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-April/003140.html +sha256 2cb9dfcb545683af77fb1029bea3fc52dcc8a0666f7b8b2d7373b6ed4c408c05 iceauth-1.0.9.tar.xz +sha512 16b2f58008587cf1544037ca8b1c76dbb75eb043b3048b3064e66ba6b147962233f1453c2cf18bfb136dd6dd21d3e27b5219e17e1ab7b81dbe93fb6aff801a72 iceauth-1.0.9.tar.xz +# Locally computed +sha256 fdd9ba8ccb92af2f31f542e7b7a18c27257e6cdce147d231bc9ba3654ad84976 COPYING diff --git a/package/x11r7/xapp_iceauth/xapp_iceauth.mk b/package/x11r7/xapp_iceauth/xapp_iceauth.mk new file mode 100644 index 00000000..ba1f5229 --- /dev/null +++ b/package/x11r7/xapp_iceauth/xapp_iceauth.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_iceauth +# +################################################################################ + +XAPP_ICEAUTH_VERSION = 1.0.9 +XAPP_ICEAUTH_SOURCE = iceauth-$(XAPP_ICEAUTH_VERSION).tar.xz +XAPP_ICEAUTH_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_ICEAUTH_LICENSE = MIT +XAPP_ICEAUTH_LICENSE_FILES = COPYING +XAPP_ICEAUTH_DEPENDENCIES = xlib_libICE xlib_libX11 + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_ico/Config.in b/package/x11r7/xapp_ico/Config.in new file mode 100644 index 00000000..892f2be8 --- /dev/null +++ b/package/x11r7/xapp_ico/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_ICO + bool "ico" + select BR2_PACKAGE_XLIB_LIBX11 + help + animate an icosahedron or other polyhedron diff --git a/package/x11r7/xapp_ico/xapp_ico.hash b/package/x11r7/xapp_ico/xapp_ico.hash new file mode 100644 index 00000000..0258537f --- /dev/null +++ b/package/x11r7/xapp_ico/xapp_ico.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-August/003205.html +sha256 38f369d431e753280fde70fa489cc94ce204f9f8eabd2f49fc7d32afa69f4405 ico-1.0.6.tar.xz +sha512 0ada451b8026ea10d1a5633f847b7bf833292e4cd01e3f1079d82c91fd142c06c6c4005b7146900ee34ac7acc8fd981db37ada9052dff49c2cfce995b9146c8c ico-1.0.6.tar.xz +# Locally computed +sha256 97ef3a622f2f385cabfc8ab7aff13dc46468c10a5520670b5edfa33f2c3999eb COPYING diff --git a/package/x11r7/xapp_ico/xapp_ico.mk b/package/x11r7/xapp_ico/xapp_ico.mk new file mode 100644 index 00000000..56dbd64b --- /dev/null +++ b/package/x11r7/xapp_ico/xapp_ico.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_ico +# +################################################################################ + +XAPP_ICO_VERSION = 1.0.6 +XAPP_ICO_SOURCE = ico-$(XAPP_ICO_VERSION).tar.xz +XAPP_ICO_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_ICO_LICENSE = MIT +XAPP_ICO_LICENSE_FILES = COPYING +XAPP_ICO_DEPENDENCIES = xlib_libX11 + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_listres/Config.in b/package/x11r7/xapp_listres/Config.in new file mode 100644 index 00000000..a3be6b38 --- /dev/null +++ b/package/x11r7/xapp_listres/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_LISTRES + bool "listres" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXMU + select BR2_PACKAGE_XLIB_LIBXT + help + list resources in widgets diff --git a/package/x11r7/xapp_listres/xapp_listres.hash b/package/x11r7/xapp_listres/xapp_listres.hash new file mode 100644 index 00000000..30fccec9 --- /dev/null +++ b/package/x11r7/xapp_listres/xapp_listres.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-April/003142.html +sha256 ce2a00bbe7d2eb8d75177006f343c80443a22d52570c48a43c6fe70ea074dc9d listres-1.0.5.tar.xz +sha512 caa3626773031fbf6d8bcc1f697afe6add64fe4a8d1d766c42d5c2346050869dd23a26a1718411134ab05c75835facf0786cab5595721a16df423cdc54dd813d listres-1.0.5.tar.xz +# Locally computed +sha256 aefb540c54bc95c68702cd2ae668c559e63cc1a84f55ae5c0e78547e7d75d2d5 COPYING diff --git a/package/x11r7/xapp_listres/xapp_listres.mk b/package/x11r7/xapp_listres/xapp_listres.mk new file mode 100644 index 00000000..e0d7487f --- /dev/null +++ b/package/x11r7/xapp_listres/xapp_listres.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_listres +# +################################################################################ + +XAPP_LISTRES_VERSION = 1.0.5 +XAPP_LISTRES_SOURCE = listres-$(XAPP_LISTRES_VERSION).tar.xz +XAPP_LISTRES_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_LISTRES_LICENSE = MIT +XAPP_LISTRES_LICENSE_FILES = COPYING +XAPP_LISTRES_DEPENDENCIES = xlib_libX11 xlib_libXaw xlib_libXmu xlib_libXt + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_luit/0001-posix-openpt.patch b/package/x11r7/xapp_luit/0001-posix-openpt.patch new file mode 100644 index 00000000..c8ff8e43 --- /dev/null +++ b/package/x11r7/xapp_luit/0001-posix-openpt.patch @@ -0,0 +1,19 @@ +Suggested workaround to build with recent gcc versions + +Upstream bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=47792 + +Signed-off-by: Markos Chandras + +Index: xapp_luit-1.1.1/sys.c +=================================================================== +--- xapp_luit-1.1.1.orig/sys.c ++++ xapp_luit-1.1.1/sys.c +@@ -20,6 +20,8 @@ OUT OF OR IN CONNECTION WITH THE SOFTWAR + THE SOFTWARE. + */ + ++#define _XOPEN_SOURCE 600 ++ + #ifdef HAVE_CONFIG_H + # include "config.h" + #endif diff --git a/package/x11r7/xapp_luit/Config.in b/package/x11r7/xapp_luit/Config.in new file mode 100644 index 00000000..69da5706 --- /dev/null +++ b/package/x11r7/xapp_luit/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XAPP_LUIT + bool "luit" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBFONTENC + help + Locale and ISO 2022 support for Unicode terminals diff --git a/package/x11r7/xapp_luit/xapp_luit.hash b/package/x11r7/xapp_luit/xapp_luit.hash new file mode 100644 index 00000000..55537b7f --- /dev/null +++ b/package/x11r7/xapp_luit/xapp_luit.hash @@ -0,0 +1,4 @@ +# From http://lists.x.org/archives/xorg-announce/2012-March/001894.html +sha256 30b0e787cb07a0f504b70f1d6123930522111ce9d4276f6683a69b322b49c636 luit-1.1.1.tar.bz2 +# Locally computed +sha256 20b6a1481d9dafeaa471e2ac497ecc651428e8369cc935b5bd9d0e5b77d78081 COPYING diff --git a/package/x11r7/xapp_luit/xapp_luit.mk b/package/x11r7/xapp_luit/xapp_luit.mk new file mode 100644 index 00000000..d3217fe5 --- /dev/null +++ b/package/x11r7/xapp_luit/xapp_luit.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_luit +# +################################################################################ + +XAPP_LUIT_VERSION = 1.1.1 +XAPP_LUIT_SOURCE = luit-$(XAPP_LUIT_VERSION).tar.bz2 +XAPP_LUIT_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_LUIT_LICENSE = MIT +XAPP_LUIT_LICENSE_FILES = COPYING +XAPP_LUIT_DEPENDENCIES = xlib_libX11 xlib_libfontenc + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_mkfontscale/Config.in b/package/x11r7/xapp_mkfontscale/Config.in new file mode 100644 index 00000000..d0a9d896 --- /dev/null +++ b/package/x11r7/xapp_mkfontscale/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XAPP_MKFONTSCALE + bool "mkfontscale" + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBFONTENC + select BR2_PACKAGE_XORGPROTO + select BR2_PACKAGE_ZLIB + help + create an index of scalable font files for X diff --git a/package/x11r7/xapp_mkfontscale/xapp_mkfontscale.hash b/package/x11r7/xapp_mkfontscale/xapp_mkfontscale.hash new file mode 100644 index 00000000..cad6c113 --- /dev/null +++ b/package/x11r7/xapp_mkfontscale/xapp_mkfontscale.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-April/003144.html +sha256 8ae3fb5b1fe7436e1f565060acaa3e2918fe745b0e4979b5593968914fe2d5c4 mkfontscale-1.2.2.tar.xz +sha512 4c846816325347c91008d76b3a5610c1e58a8414fd55117e7ccf51310db4b20b8397ecf6c9177ff77322e27ee088bf034fd175c9210465c50b094bab8dada4b3 mkfontscale-1.2.2.tar.xz +# Locally computed +sha256 80df6f5b759f7775042313e4586506db60f26fd15b98b532cf518bd8cf1e8488 COPYING diff --git a/package/x11r7/xapp_mkfontscale/xapp_mkfontscale.mk b/package/x11r7/xapp_mkfontscale/xapp_mkfontscale.mk new file mode 100644 index 00000000..23b2e228 --- /dev/null +++ b/package/x11r7/xapp_mkfontscale/xapp_mkfontscale.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xapp_mkfontscale +# +################################################################################ + +XAPP_MKFONTSCALE_VERSION = 1.2.2 +XAPP_MKFONTSCALE_SOURCE = mkfontscale-$(XAPP_MKFONTSCALE_VERSION).tar.xz +XAPP_MKFONTSCALE_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_MKFONTSCALE_LICENSE = MIT +XAPP_MKFONTSCALE_LICENSE_FILES = COPYING +XAPP_MKFONTSCALE_DEPENDENCIES = zlib freetype xlib_libfontenc xorgproto +HOST_XAPP_MKFONTSCALE_DEPENDENCIES = \ + host-zlib host-freetype host-xlib_libfontenc host-xorgproto + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/x11r7/xapp_oclock/Config.in b/package/x11r7/xapp_oclock/Config.in new file mode 100644 index 00000000..00cd4132 --- /dev/null +++ b/package/x11r7/xapp_oclock/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XAPP_OCLOCK + bool "oclock" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXMU + help + round X clock diff --git a/package/x11r7/xapp_oclock/xapp_oclock.hash b/package/x11r7/xapp_oclock/xapp_oclock.hash new file mode 100644 index 00000000..20e899b8 --- /dev/null +++ b/package/x11r7/xapp_oclock/xapp_oclock.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-August/003206.html +sha256 8f09979655e889d056b7a1e50b57f38b32529453e756b53ec659070fb3c3965c oclock-1.0.5.tar.xz +sha512 a87e89afdb25a91c36077e030b05c3907ddc063c6bdc0715a01bfc16edef8730b3b5a0347399ef4c8b2a13e70e068cba9ec5fe8d411f08548c0aa790a1873aff oclock-1.0.5.tar.xz +# Locally computed +sha256 f6cae4b0c603ef5bd76da2df96b38aa43aa7547e482adb8cb8b83f09af35e4a2 COPYING diff --git a/package/x11r7/xapp_oclock/xapp_oclock.mk b/package/x11r7/xapp_oclock/xapp_oclock.mk new file mode 100644 index 00000000..4f70df4c --- /dev/null +++ b/package/x11r7/xapp_oclock/xapp_oclock.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xapp_oclock +# +################################################################################ + +XAPP_OCLOCK_VERSION = 1.0.5 +XAPP_OCLOCK_SOURCE = oclock-$(XAPP_OCLOCK_VERSION).tar.xz +XAPP_OCLOCK_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_OCLOCK_LICENSE = MIT +XAPP_OCLOCK_LICENSE_FILES = COPYING +XAPP_OCLOCK_DEPENDENCIES = xlib_libX11 xlib_libXext xlib_libXmu +XAPP_OCLOCK_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults + +ifeq ($(BR2_PACKAGE_XLIB_LIBXKBFILE),y) +XAPP_OCLOCK_CONF_OPTS += --with-xkb +XAPP_OCLOCK_DEPENDENCIES += xlib_libxkbfile +else +XAPP_OCLOCK_CONF_OPTS += --without-xkb +endif + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_rgb/Config.in b/package/x11r7/xapp_rgb/Config.in new file mode 100644 index 00000000..7198b5f1 --- /dev/null +++ b/package/x11r7/xapp_rgb/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_RGB + bool "rgb" + select BR2_PACKAGE_XORGPROTO + help + uncompile an rgb color-name database diff --git a/package/x11r7/xapp_rgb/xapp_rgb.hash b/package/x11r7/xapp_rgb/xapp_rgb.hash new file mode 100644 index 00000000..11b2a839 --- /dev/null +++ b/package/x11r7/xapp_rgb/xapp_rgb.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003245.html +sha256 fc03d7f56e5b2a617668167f8927948cce54f93097e7ccd9f056077f479ed37b rgb-1.1.0.tar.xz +sha512 640888d64b2d328fff4a1652ba1299436e348bc3cbc90710d79c635acfa7f2fce0018adb818123b41ca008197ff1cbf87aab60501de36c163bed2d80d8556008 rgb-1.1.0.tar.xz +# Locally computed +sha256 1d08eb3384f5dedc7735bcfae1aa58cb64643ca9389edce3312b1c3cefbfdaa7 COPYING diff --git a/package/x11r7/xapp_rgb/xapp_rgb.mk b/package/x11r7/xapp_rgb/xapp_rgb.mk new file mode 100644 index 00000000..4b6399fc --- /dev/null +++ b/package/x11r7/xapp_rgb/xapp_rgb.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_rgb +# +################################################################################ + +XAPP_RGB_VERSION = 1.1.0 +XAPP_RGB_SOURCE = rgb-$(XAPP_RGB_VERSION).tar.xz +XAPP_RGB_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_RGB_LICENSE = MIT +XAPP_RGB_LICENSE_FILES = COPYING +XAPP_RGB_DEPENDENCIES = xorgproto host-pkgconf + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_rstart/Config.in b/package/x11r7/xapp_rstart/Config.in new file mode 100644 index 00000000..3c1d5a9e --- /dev/null +++ b/package/x11r7/xapp_rstart/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_RSTART + bool "rstart" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBX11 + help + X.Org rstart application diff --git a/package/x11r7/xapp_rstart/xapp_rstart.hash b/package/x11r7/xapp_rstart/xapp_rstart.hash new file mode 100644 index 00000000..70b8ab54 --- /dev/null +++ b/package/x11r7/xapp_rstart/xapp_rstart.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-April/003145.html +sha256 50273196a005615c9f242f029a92b3aabc01520145f6b2c61eabf9774972b20f rstart-1.0.6.tar.xz +sha512 8c0840f172c9efade4557e9a28de19e76e510bd17f1e964936a957dde5ada3d9ae8b2fa0502f61da15cdfc0c69d3308599253ee03571017086a45e4e83958e8f rstart-1.0.6.tar.xz +# Locally computed +sha256 7561fa083e87cd511669d8725ebe89dde6cd4f72cdea35b817262dc6ad6fbe9a COPYING diff --git a/package/x11r7/xapp_rstart/xapp_rstart.mk b/package/x11r7/xapp_rstart/xapp_rstart.mk new file mode 100644 index 00000000..eb6b712a --- /dev/null +++ b/package/x11r7/xapp_rstart/xapp_rstart.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_rstart +# +################################################################################ + +XAPP_RSTART_VERSION = 1.0.6 +XAPP_RSTART_SOURCE = rstart-$(XAPP_RSTART_VERSION).tar.xz +XAPP_RSTART_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_RSTART_LICENSE = MIT +XAPP_RSTART_LICENSE_FILES = COPYING +XAPP_RSTART_DEPENDENCIES = xlib_libX11 + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_scripts/Config.in b/package/x11r7/xapp_scripts/Config.in new file mode 100644 index 00000000..691f0e21 --- /dev/null +++ b/package/x11r7/xapp_scripts/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_SCRIPTS + bool "scripts" + select BR2_PACKAGE_XLIB_LIBX11 + help + start an X program on a remote machine diff --git a/package/x11r7/xapp_scripts/xapp_scripts.hash b/package/x11r7/xapp_scripts/xapp_scripts.hash new file mode 100644 index 00000000..cc561eb2 --- /dev/null +++ b/package/x11r7/xapp_scripts/xapp_scripts.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 1b154b4359302ca499818c45396325aef9ff364d6ff4ce5c3769e4803994a136 scripts-1.0.1.tar.bz2 +sha256 27d8cbdcde7a0bd062ce49cdf8c672201452a64e3e6823f09b1beffe2c4b8eff COPYING diff --git a/package/x11r7/xapp_scripts/xapp_scripts.mk b/package/x11r7/xapp_scripts/xapp_scripts.mk new file mode 100644 index 00000000..5146db57 --- /dev/null +++ b/package/x11r7/xapp_scripts/xapp_scripts.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_scripts +# +################################################################################ + +XAPP_SCRIPTS_VERSION = 1.0.1 +XAPP_SCRIPTS_SOURCE = scripts-$(XAPP_SCRIPTS_VERSION).tar.bz2 +XAPP_SCRIPTS_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_SCRIPTS_LICENSE = MIT +XAPP_SCRIPTS_LICENSE_FILES = COPYING +XAPP_SCRIPTS_DEPENDENCIES = xlib_libX11 + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_sessreg/Config.in b/package/x11r7/xapp_sessreg/Config.in new file mode 100644 index 00000000..c9048b3b --- /dev/null +++ b/package/x11r7/xapp_sessreg/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_SESSREG + bool "sessreg" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XORGPROTO + help + manage utmp/wtmp entries for non-init clients diff --git a/package/x11r7/xapp_sessreg/xapp_sessreg.hash b/package/x11r7/xapp_sessreg/xapp_sessreg.hash new file mode 100644 index 00000000..1f1b54b8 --- /dev/null +++ b/package/x11r7/xapp_sessreg/xapp_sessreg.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003246.html +sha256 022acd5de8077dddc4f919961f79e102ecd5f3228a333681af5cd0e7344facc2 sessreg-1.1.3.tar.xz +sha512 bc1e83afc598ac5b4c6ab0861799b6c8727c123ee662c1fb9cbdd9ee926973b7a00cc62e32f6b4e462c0da3516f8b824337d9cf17587ebabd3f4753502641a60 sessreg-1.1.3.tar.xz +# Locally computed +sha256 ac8f5cc696e6c473aea4caaf18650316dc8912fcf0f370cae1df5f395cea8631 COPYING diff --git a/package/x11r7/xapp_sessreg/xapp_sessreg.mk b/package/x11r7/xapp_sessreg/xapp_sessreg.mk new file mode 100644 index 00000000..b196bb94 --- /dev/null +++ b/package/x11r7/xapp_sessreg/xapp_sessreg.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_sessreg +# +################################################################################ + +XAPP_SESSREG_VERSION = 1.1.3 +XAPP_SESSREG_SOURCE = sessreg-$(XAPP_SESSREG_VERSION).tar.xz +XAPP_SESSREG_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_SESSREG_LICENSE = MIT +XAPP_SESSREG_LICENSE_FILES = COPYING +XAPP_SESSREG_DEPENDENCIES = xlib_libX11 xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_setxkbmap/Config.in b/package/x11r7/xapp_setxkbmap/Config.in new file mode 100644 index 00000000..add50813 --- /dev/null +++ b/package/x11r7/xapp_setxkbmap/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XAPP_SETXKBMAP + bool "setxkbmap" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXKBFILE + select BR2_PACKAGE_XLIB_LIBXRANDR + help + Controls the keyboard layout of a running X server. diff --git a/package/x11r7/xapp_setxkbmap/xapp_setxkbmap.hash b/package/x11r7/xapp_setxkbmap/xapp_setxkbmap.hash new file mode 100644 index 00000000..a3ad6ce3 --- /dev/null +++ b/package/x11r7/xapp_setxkbmap/xapp_setxkbmap.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-May/003397.html +sha256 be8d8554d40e981d1b93b5ff82497c9ad2259f59f675b38f1b5e84624c07fade setxkbmap-1.3.4.tar.xz +sha512 f4d026e7707656173f54d79b95ff3370ae06eaf252b89b79bc7175edeaf3ef79073d4d7d8a35fdee95608bf85d7d23514d74f00e55b613810ef6c3ccc0cf498b setxkbmap-1.3.4.tar.xz +# Locally computed +sha256 afb8ce58340b6a6b85b73e256425263ce46f5a427279785e275991cb660cce82 COPYING diff --git a/package/x11r7/xapp_setxkbmap/xapp_setxkbmap.mk b/package/x11r7/xapp_setxkbmap/xapp_setxkbmap.mk new file mode 100644 index 00000000..9049b369 --- /dev/null +++ b/package/x11r7/xapp_setxkbmap/xapp_setxkbmap.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_setxkbmap +# +################################################################################ + +XAPP_SETXKBMAP_VERSION = 1.3.4 +XAPP_SETXKBMAP_SOURCE = setxkbmap-$(XAPP_SETXKBMAP_VERSION).tar.xz +XAPP_SETXKBMAP_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_SETXKBMAP_LICENSE = MIT +XAPP_SETXKBMAP_LICENSE_FILES = COPYING +XAPP_SETXKBMAP_DEPENDENCIES = xlib_libX11 xlib_libxkbfile xlib_libXrandr + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_showfont/Config.in b/package/x11r7/xapp_showfont/Config.in new file mode 100644 index 00000000..edfab3fc --- /dev/null +++ b/package/x11r7/xapp_showfont/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_SHOWFONT + bool "showfont" + select BR2_PACKAGE_XLIB_LIBFS + help + font dumper for X font server diff --git a/package/x11r7/xapp_showfont/xapp_showfont.hash b/package/x11r7/xapp_showfont/xapp_showfont.hash new file mode 100644 index 00000000..7bec4e87 --- /dev/null +++ b/package/x11r7/xapp_showfont/xapp_showfont.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-August/003207.html +sha256 2b9b9f06e65e095ed76ce560b701b9fc47fa63310ee706b54c8787af061d0e56 showfont-1.0.6.tar.xz +sha512 21a318519492f4ba46a8bcb3590097fc5f96fe01fdb557257ae56bae813671952a2aad6c0df8cd69659e06708571c398e6d97969224cf692e22c8a35c8e6c363 showfont-1.0.6.tar.xz +# Locally computed +sha256 c32217021e0507207e2ee6da3fcee3d9e32816003a7153b3357c08cdc97934a8 COPYING diff --git a/package/x11r7/xapp_showfont/xapp_showfont.mk b/package/x11r7/xapp_showfont/xapp_showfont.mk new file mode 100644 index 00000000..a805f352 --- /dev/null +++ b/package/x11r7/xapp_showfont/xapp_showfont.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_showfont +# +################################################################################ + +XAPP_SHOWFONT_VERSION = 1.0.6 +XAPP_SHOWFONT_SOURCE = showfont-$(XAPP_SHOWFONT_VERSION).tar.xz +XAPP_SHOWFONT_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_SHOWFONT_LICENSE = MIT +XAPP_SHOWFONT_LICENSE_FILES = COPYING +XAPP_SHOWFONT_DEPENDENCIES = xlib_libFS + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_smproxy/Config.in b/package/x11r7/xapp_smproxy/Config.in new file mode 100644 index 00000000..80ab984e --- /dev/null +++ b/package/x11r7/xapp_smproxy/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_SMPROXY + bool "smproxy" + select BR2_PACKAGE_XLIB_LIBXMU + select BR2_PACKAGE_XLIB_LIBXT + help + Session Manager Proxy diff --git a/package/x11r7/xapp_smproxy/xapp_smproxy.hash b/package/x11r7/xapp_smproxy/xapp_smproxy.hash new file mode 100644 index 00000000..587864ba --- /dev/null +++ b/package/x11r7/xapp_smproxy/xapp_smproxy.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003218.html +sha256 4aa99237cc9dab7d87ce9bc7cca4116674a853b5f08dfe3f9db1bb2b2cf9f305 smproxy-1.0.7.tar.xz +sha512 cd6a6933b74f76ae65fb16504e57871724bc1102eae1d02e801e99c3fe73fe44e27f87cef3fbf9f75f369d18197b53bb677d637d94cc8185b55acae0cbd44f21 smproxy-1.0.7.tar.xz +# Locally computed +sha256 92dce6d8a1fcc0c6b5e56dc44e431e7f73bfa2ed5e83295662aa314067a671d8 COPYING diff --git a/package/x11r7/xapp_smproxy/xapp_smproxy.mk b/package/x11r7/xapp_smproxy/xapp_smproxy.mk new file mode 100644 index 00000000..f7675294 --- /dev/null +++ b/package/x11r7/xapp_smproxy/xapp_smproxy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_smproxy +# +################################################################################ + +XAPP_SMPROXY_VERSION = 1.0.7 +XAPP_SMPROXY_SOURCE = smproxy-$(XAPP_SMPROXY_VERSION).tar.xz +XAPP_SMPROXY_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_SMPROXY_LICENSE = MIT +XAPP_SMPROXY_LICENSE_FILES = COPYING +XAPP_SMPROXY_DEPENDENCIES = xlib_libXmu xlib_libXt + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_twm/Config.in b/package/x11r7/xapp_twm/Config.in new file mode 100644 index 00000000..25bf800f --- /dev/null +++ b/package/x11r7/xapp_twm/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_TWM + bool "twm" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_XLIB_LIBXMU + help + No description available diff --git a/package/x11r7/xapp_twm/xapp_twm.hash b/package/x11r7/xapp_twm/xapp_twm.hash new file mode 100644 index 00000000..75d89a99 --- /dev/null +++ b/package/x11r7/xapp_twm/xapp_twm.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-April/003135.html +sha256 aaf201d4de04c1bb11eed93de4bee0147217b7bdf61b7b761a56b2fdc276afe4 twm-1.0.12.tar.xz +sha512 f3d68df7e06516f6b74f19181efcfd9db2479c8ea0c72c3a6ed0dc1b222405b40d81a2dea17b662955e0c1783e87d0d3eb067c3b6e7c6eed8c0d38d03d362260 twm-1.0.12.tar.xz +# Locally computed +sha256 4809ffc9656bc9a704e19ab467d1cedc97c48c9d1f9a4018e6d99d2e61f75945 COPYING diff --git a/package/x11r7/xapp_twm/xapp_twm.mk b/package/x11r7/xapp_twm/xapp_twm.mk new file mode 100644 index 00000000..b2228304 --- /dev/null +++ b/package/x11r7/xapp_twm/xapp_twm.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xapp_twm +# +################################################################################ + +XAPP_TWM_VERSION = 1.0.12 +XAPP_TWM_SOURCE = twm-$(XAPP_TWM_VERSION).tar.xz +XAPP_TWM_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_TWM_LICENSE = MIT +XAPP_TWM_LICENSE_FILES = COPYING +XAPP_TWM_DEPENDENCIES = \ + host-bison xlib_libX11 xlib_libXext xlib_libXt xlib_libXmu + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_viewres/Config.in b/package/x11r7/xapp_viewres/Config.in new file mode 100644 index 00000000..32827c80 --- /dev/null +++ b/package/x11r7/xapp_viewres/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_VIEWRES + bool "viewres" + select BR2_PACKAGE_XLIB_LIBXAW + help + graphical class browser for Xt diff --git a/package/x11r7/xapp_viewres/xapp_viewres.hash b/package/x11r7/xapp_viewres/xapp_viewres.hash new file mode 100644 index 00000000..a662f4ef --- /dev/null +++ b/package/x11r7/xapp_viewres/xapp_viewres.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003219.html +sha256 b15a62085b1a10f55ae1cf17b7ded75b72b21be240c68071685db377c4afc628 viewres-1.0.7.tar.xz +sha512 75878faee001163891adf8472c79b31273f794e23dd775c80b33acdd1ce76df708eb27a49c20f79b7101ad676e1d50d9c857c2e2e0930c6209eeb7af8a11397c viewres-1.0.7.tar.xz +# Locally computed +sha256 aefb540c54bc95c68702cd2ae668c559e63cc1a84f55ae5c0e78547e7d75d2d5 COPYING diff --git a/package/x11r7/xapp_viewres/xapp_viewres.mk b/package/x11r7/xapp_viewres/xapp_viewres.mk new file mode 100644 index 00000000..49933d7a --- /dev/null +++ b/package/x11r7/xapp_viewres/xapp_viewres.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xapp_viewres +# +################################################################################ + +XAPP_VIEWRES_VERSION = 1.0.7 +XAPP_VIEWRES_SOURCE = viewres-$(XAPP_VIEWRES_VERSION).tar.xz +XAPP_VIEWRES_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_VIEWRES_LICENSE = MIT +XAPP_VIEWRES_LICENSE_FILES = COPYING +XAPP_VIEWRES_DEPENDENCIES = xlib_libXaw +XAPP_VIEWRES_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_x11perf/Config.in b/package/x11r7/xapp_x11perf/Config.in new file mode 100644 index 00000000..0f1eca89 --- /dev/null +++ b/package/x11r7/xapp_x11perf/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XAPP_X11PERF + bool "x11perf" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + select BR2_PACKAGE_XLIB_LIBXFT + help + summarize x11perf results diff --git a/package/x11r7/xapp_x11perf/xapp_x11perf.hash b/package/x11r7/xapp_x11perf/xapp_x11perf.hash new file mode 100644 index 00000000..3370d7df --- /dev/null +++ b/package/x11r7/xapp_x11perf/xapp_x11perf.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003242.html +sha256 5a0e7cea47716ad07ceca38bbd07ae06459ee4d837b9c9dfc21ccb94e3e24fcc x11perf-1.6.2.tar.xz +sha512 5be9e601071a42d103adbab5f30c1900a3779a5b2c06c709df99a85487c9790d36b835d43f5c6d74cc7d950cc3ad06927210d7b1f58939cfd0b4a6f3e5e32112 x11perf-1.6.2.tar.xz +# Locally computed +sha256 f467ff659142e2eb4cb7275c48c789d249af398b09a405d3e181dcc339b3b922 COPYING diff --git a/package/x11r7/xapp_x11perf/xapp_x11perf.mk b/package/x11r7/xapp_x11perf/xapp_x11perf.mk new file mode 100644 index 00000000..3a1d5799 --- /dev/null +++ b/package/x11r7/xapp_x11perf/xapp_x11perf.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_x11perf +# +################################################################################ + +XAPP_X11PERF_VERSION = 1.6.2 +XAPP_X11PERF_SOURCE = x11perf-$(XAPP_X11PERF_VERSION).tar.xz +XAPP_X11PERF_SITE = https://xorg.freedesktop.org/archive/individual/test +XAPP_X11PERF_LICENSE = MIT +XAPP_X11PERF_LICENSE_FILES = COPYING +XAPP_X11PERF_DEPENDENCIES = xlib_libX11 xlib_libXmu xlib_libXft + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xauth/Config.in b/package/x11r7/xapp_xauth/Config.in new file mode 100644 index 00000000..919fd50b --- /dev/null +++ b/package/x11r7/xapp_xauth/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_XAUTH + bool "xauth" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXAU + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXMU + help + X authority file utility diff --git a/package/x11r7/xapp_xauth/xapp_xauth.hash b/package/x11r7/xapp_xauth/xapp_xauth.hash new file mode 100644 index 00000000..966c3ba0 --- /dev/null +++ b/package/x11r7/xapp_xauth/xapp_xauth.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-April/003158.html +sha256 78ba6afd19536ced1dddb3276cba6e9555a211b468a06f95f6a97c62ff8ee200 xauth-1.1.2.tar.xz +sha512 ac23fcd166b45abf7b030994ff3332c9906023dc1ddfa9b9d3000e6a914dc5e0213c4a2aa409cb3ddb93e1f9f4f6374376109241a95ef8c36af842de1f6f76e8 xauth-1.1.2.tar.xz +# Locally computed +sha256 dcdf5fa36a652efbe61a21def1301739b0010334ae3f049f1cff433221a8c7a5 COPYING diff --git a/package/x11r7/xapp_xauth/xapp_xauth.mk b/package/x11r7/xapp_xauth/xapp_xauth.mk new file mode 100644 index 00000000..248a66e3 --- /dev/null +++ b/package/x11r7/xapp_xauth/xapp_xauth.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xauth +# +################################################################################ + +XAPP_XAUTH_VERSION = 1.1.2 +XAPP_XAUTH_SOURCE = xauth-$(XAPP_XAUTH_VERSION).tar.xz +XAPP_XAUTH_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XAUTH_LICENSE = MIT +XAPP_XAUTH_LICENSE_FILES = COPYING +XAPP_XAUTH_DEPENDENCIES = xlib_libX11 xlib_libXau xlib_libXext xlib_libXmu + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xbacklight/Config.in b/package/x11r7/xapp_xbacklight/Config.in new file mode 100644 index 00000000..5764056d --- /dev/null +++ b/package/x11r7/xapp_xbacklight/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_XBACKLIGHT + bool "xbacklight" + select BR2_PACKAGE_XCB_UTIL + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_XLIB_LIBXRENDER + help + xbacklight diff --git a/package/x11r7/xapp_xbacklight/xapp_xbacklight.hash b/package/x11r7/xapp_xbacklight/xapp_xbacklight.hash new file mode 100644 index 00000000..bda5c32c --- /dev/null +++ b/package/x11r7/xapp_xbacklight/xapp_xbacklight.hash @@ -0,0 +1,7 @@ +# From https://lists.x.org/archives/xorg-announce/2019-July/003008.html +md5 5b6405973db69c0443be2fba8e1a8ab7 xbacklight-1.2.3.tar.bz2 +sha1 f0a6163738143ec23542b459aef567309a119e0c xbacklight-1.2.3.tar.bz2 +sha256 3a27f324777ae99fee476cfb2f064576fb8cba4eb77f97cda37adda1c1d39ade xbacklight-1.2.3.tar.bz2 +sha512 717c87ce24634892fc4ac54fc59dcc0a5bc8f206aaf1d13410f95f7e4fe6e3dbc7ff8d951bcd8ea8c5e955357a00fea6ceadd4559e60b1a632e40f71290e12c7 xbacklight-1.2.3.tar.bz2 +# Locally computed +sha256 c9fbf1f272215babef31808c1235de8e4f7641ca5edfc4fc615b6556054b2b04 COPYING diff --git a/package/x11r7/xapp_xbacklight/xapp_xbacklight.mk b/package/x11r7/xapp_xbacklight/xapp_xbacklight.mk new file mode 100644 index 00000000..d52d562c --- /dev/null +++ b/package/x11r7/xapp_xbacklight/xapp_xbacklight.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xbacklight +# +################################################################################ + +XAPP_XBACKLIGHT_VERSION = 1.2.3 +XAPP_XBACKLIGHT_SOURCE = xbacklight-$(XAPP_XBACKLIGHT_VERSION).tar.bz2 +XAPP_XBACKLIGHT_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XBACKLIGHT_LICENSE = MIT +XAPP_XBACKLIGHT_LICENSE_FILES = COPYING +XAPP_XBACKLIGHT_DEPENDENCIES = xlib_libX11 xlib_libXrandr xlib_libXrender xcb-util + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xbiff/Config.in b/package/x11r7/xapp_xbiff/Config.in new file mode 100644 index 00000000..ea4b58aa --- /dev/null +++ b/package/x11r7/xapp_xbiff/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XBIFF + bool "xbiff" + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XDATA_XBITMAPS + help + mailbox flag for X diff --git a/package/x11r7/xapp_xbiff/xapp_xbiff.hash b/package/x11r7/xapp_xbiff/xapp_xbiff.hash new file mode 100644 index 00000000..690c932e --- /dev/null +++ b/package/x11r7/xapp_xbiff/xapp_xbiff.hash @@ -0,0 +1,7 @@ +# From https://lists.x.org/archives/xorg-announce/2019-July/003009.html +md5 66dd3ebd6351b1911b831b89b2dba8ec xbiff-1.0.4.tar.bz2 +sha1 193c0a2be1f7f374bb9d32217a198c92a63619e8 xbiff-1.0.4.tar.bz2 +sha256 e1e1a39628a5678585008ef7fb1ff2864edaaa0e062989c2331f8c74e0fec971 xbiff-1.0.4.tar.bz2 +sha512 0fb920a08640ec59f23d8a8a47bd244565dfbaff7a21c38a8a2abe1edb5eacabc970b5dbdc409163fc444fde5b75a2dc4e0114312938efec5b77228f3bf785ac xbiff-1.0.4.tar.bz2 +# Locally computed +sha256 9b840f2e1900889124cc999f3158da2b6b07bf6d0d77bdbb01ce65d2e702dc83 COPYING diff --git a/package/x11r7/xapp_xbiff/xapp_xbiff.mk b/package/x11r7/xapp_xbiff/xapp_xbiff.mk new file mode 100644 index 00000000..2c3975c1 --- /dev/null +++ b/package/x11r7/xapp_xbiff/xapp_xbiff.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xbiff +# +################################################################################ + +XAPP_XBIFF_VERSION = 1.0.4 +XAPP_XBIFF_SOURCE = xbiff-$(XAPP_XBIFF_VERSION).tar.bz2 +XAPP_XBIFF_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XBIFF_LICENSE = MIT +XAPP_XBIFF_LICENSE_FILES = COPYING +XAPP_XBIFF_DEPENDENCIES = xlib_libXaw xdata_xbitmaps + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xcalc/Config.in b/package/x11r7/xapp_xcalc/Config.in new file mode 100644 index 00000000..2552be02 --- /dev/null +++ b/package/x11r7/xapp_xcalc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XCALC + bool "xcalc" + select BR2_PACKAGE_XLIB_LIBXAW + help + scientific calculator for X diff --git a/package/x11r7/xapp_xcalc/xapp_xcalc.hash b/package/x11r7/xapp_xcalc/xapp_xcalc.hash new file mode 100644 index 00000000..12633a41 --- /dev/null +++ b/package/x11r7/xapp_xcalc/xapp_xcalc.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-May/003391.html +sha256 8578dfa1457e94289f6d6ed6146714307d8a73a1b54d2f42af1321b625fc1cd4 xcalc-1.1.2.tar.xz +sha512 51da677dc88bcd7299ed8d678cb26b048fdb82a1983e1496a06253ee2dceefca4ac87d1a74432b4a76dcc11921a61339bb3d292607be46228164140b430bbad2 xcalc-1.1.2.tar.xz +# Locally computed +sha256 8dd69dbec37866a41d3040c5c478aca46e0b50c30319f178064d5e2ed9d3f912 COPYING diff --git a/package/x11r7/xapp_xcalc/xapp_xcalc.mk b/package/x11r7/xapp_xcalc/xapp_xcalc.mk new file mode 100644 index 00000000..ffb724e3 --- /dev/null +++ b/package/x11r7/xapp_xcalc/xapp_xcalc.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xapp_xcalc +# +################################################################################ + +XAPP_XCALC_VERSION = 1.1.2 +XAPP_XCALC_SOURCE = xcalc-$(XAPP_XCALC_VERSION).tar.xz +XAPP_XCALC_SITE = https://xorg.freedesktop.org/releases/individual/app +XAPP_XCALC_LICENSE = MIT +XAPP_XCALC_LICENSE_FILES = COPYING +XAPP_XCALC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-exec install-data +XAPP_XCALC_DEPENDENCIES = xlib_libXaw +XAPP_XCALC_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xclipboard/Config.in b/package/x11r7/xapp_xclipboard/Config.in new file mode 100644 index 00000000..941c2197 --- /dev/null +++ b/package/x11r7/xapp_xclipboard/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XCLIPBOARD + bool "xclipboard" + select BR2_PACKAGE_XLIB_LIBXAW + help + interchange between cut buffer and selection diff --git a/package/x11r7/xapp_xclipboard/xapp_xclipboard.hash b/package/x11r7/xapp_xclipboard/xapp_xclipboard.hash new file mode 100644 index 00000000..d848a473 --- /dev/null +++ b/package/x11r7/xapp_xclipboard/xapp_xclipboard.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-July/003171.html +sha256 f43d4560d1464e8ff58e850212f6bdb703989b66d599fb61f351b5f9e077f253 xclipboard-1.1.4.tar.xz +sha512 efa7800e0c4fb0242362c4263d80182d591bded07d1064a36b157b6202b15b0c82f083658ced2b82392eca905fb57c04a537d67e75c1237a1667ed2ce0cb09fe xclipboard-1.1.4.tar.xz +# Locally computed +sha256 f0a362fc1b8e788845b1c0ad7ba9ade58fdfb73da750c3b9780db5d70b947657 COPYING diff --git a/package/x11r7/xapp_xclipboard/xapp_xclipboard.mk b/package/x11r7/xapp_xclipboard/xapp_xclipboard.mk new file mode 100644 index 00000000..c76d5ded --- /dev/null +++ b/package/x11r7/xapp_xclipboard/xapp_xclipboard.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xapp_xclipboard +# +################################################################################ + +XAPP_XCLIPBOARD_VERSION = 1.1.4 +XAPP_XCLIPBOARD_SOURCE = xclipboard-$(XAPP_XCLIPBOARD_VERSION).tar.xz +XAPP_XCLIPBOARD_SITE = https://xorg.freedesktop.org/releases/individual/app +XAPP_XCLIPBOARD_LICENSE = MIT +XAPP_XCLIPBOARD_LICENSE_FILES = COPYING +XAPP_XCLIPBOARD_DEPENDENCIES = xlib_libXaw xlib_libXmu xlib_libXt +XAPP_XCLIPBOARD_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xclock/Config.in b/package/x11r7/xapp_xclock/Config.in new file mode 100644 index 00000000..083a6d1e --- /dev/null +++ b/package/x11r7/xapp_xclock/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XAPP_XCLOCK + bool "xclock" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXFT + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XLIB_LIBXKBFILE + help + analog / digital clock for X diff --git a/package/x11r7/xapp_xclock/xapp_xclock.hash b/package/x11r7/xapp_xclock/xapp_xclock.hash new file mode 100644 index 00000000..0bc01173 --- /dev/null +++ b/package/x11r7/xapp_xclock/xapp_xclock.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-April/003156.html +sha256 df7ceabf8f07044a2fde4924d794554996811640a45de40cb12c2cf1f90f742c xclock-1.1.1.tar.xz +sha512 059ea986bc7537c2796e8855676e8357bd8a7852fbac0839b3f8a9e3ffa088de41bc4e4961973353f0a7b7293366b81bc764d74f3dc4e90e361da06185d976e7 xclock-1.1.1.tar.xz +# Locally computed +sha256 ee1f19f46801ef00e70498603e74df644d0b93fc82f06b55ce64c3a2c9f16e71 COPYING diff --git a/package/x11r7/xapp_xclock/xapp_xclock.mk b/package/x11r7/xapp_xclock/xapp_xclock.mk new file mode 100644 index 00000000..852ae5db --- /dev/null +++ b/package/x11r7/xapp_xclock/xapp_xclock.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xapp_xclock +# +################################################################################ + +XAPP_XCLOCK_VERSION = 1.1.1 +XAPP_XCLOCK_SOURCE = xclock-$(XAPP_XCLOCK_VERSION).tar.xz +XAPP_XCLOCK_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XCLOCK_LICENSE = MIT +XAPP_XCLOCK_LICENSE_FILES = COPYING +XAPP_XCLOCK_DEPENDENCIES = xlib_libX11 xlib_libXaw xlib_libXft xlib_libXrender xlib_libxkbfile +XAPP_XCLOCK_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xcmsdb/Config.in b/package/x11r7/xapp_xcmsdb/Config.in new file mode 100644 index 00000000..82c9da3a --- /dev/null +++ b/package/x11r7/xapp_xcmsdb/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XCMSDB + bool "xcmsdb" + select BR2_PACKAGE_XLIB_LIBX11 + help + Device Color Characterization utility for X Color Management + System diff --git a/package/x11r7/xapp_xcmsdb/xapp_xcmsdb.hash b/package/x11r7/xapp_xcmsdb/xapp_xcmsdb.hash new file mode 100644 index 00000000..7590580d --- /dev/null +++ b/package/x11r7/xapp_xcmsdb/xapp_xcmsdb.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-July/003172.html +sha256 3c77eec4537d5942bb0966973b787bfdaf7121f3125ffa81bb1c9708d4cf4f55 xcmsdb-1.0.6.tar.xz +sha512 e47d9498ce496effbc44a66e70af91d9fe65c344a17916fd4990a4c84fa8879aa09b6695aeb6ef595f475c16a13c7c31d4c48449234564de7de38d7436764fae xcmsdb-1.0.6.tar.xz +# Locally computed +sha256 c3bd4ac91beb08fee5272b17a3ddee8d2791cc5eaee5bce5271042a45fa4fa6a COPYING diff --git a/package/x11r7/xapp_xcmsdb/xapp_xcmsdb.mk b/package/x11r7/xapp_xcmsdb/xapp_xcmsdb.mk new file mode 100644 index 00000000..4af341a0 --- /dev/null +++ b/package/x11r7/xapp_xcmsdb/xapp_xcmsdb.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xcmsdb +# +################################################################################ + +XAPP_XCMSDB_VERSION = 1.0.6 +XAPP_XCMSDB_SOURCE = xcmsdb-$(XAPP_XCMSDB_VERSION).tar.xz +XAPP_XCMSDB_SITE = https://xorg.freedesktop.org/releases/individual/app +XAPP_XCMSDB_LICENSE = MIT +XAPP_XCMSDB_LICENSE_FILES = COPYING +XAPP_XCMSDB_DEPENDENCIES = xlib_libX11 + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xcompmgr/Config.in b/package/x11r7/xapp_xcompmgr/Config.in new file mode 100644 index 00000000..b46014db --- /dev/null +++ b/package/x11r7/xapp_xcompmgr/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XAPP_XCOMPMGR + bool "xcompmgr" + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE + select BR2_PACKAGE_XLIB_LIBXDAMAGE + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXFIXES + select BR2_PACKAGE_XLIB_LIBXRENDER + help + xcompmgr is a sample compositing manager that enables basic + eye-candy effects. diff --git a/package/x11r7/xapp_xcompmgr/xapp_xcompmgr.hash b/package/x11r7/xapp_xcompmgr/xapp_xcompmgr.hash new file mode 100644 index 00000000..b9675a5e --- /dev/null +++ b/package/x11r7/xapp_xcompmgr/xapp_xcompmgr.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-November/003254.html +sha256 4875b6698672d01eb3a5080bde6eac9a989d486a82226a2d5e23624f1527a6f0 xcompmgr-1.1.9.tar.xz +sha512 699117492af7fd84b36d317dcbf422d5ec86a7f21e29370caa737cd940d8ff866a5c8704ba2e7bd17a64e085d77fd23b628263d619813dead85cd669ff5b860e xcompmgr-1.1.9.tar.xz +# Locally computed +sha256 c843545f72771b3ff95eb88defc2e3ed8f9a1802d9bb6c32c196bb5eec3d3a5d COPYING diff --git a/package/x11r7/xapp_xcompmgr/xapp_xcompmgr.mk b/package/x11r7/xapp_xcompmgr/xapp_xcompmgr.mk new file mode 100644 index 00000000..c754ea37 --- /dev/null +++ b/package/x11r7/xapp_xcompmgr/xapp_xcompmgr.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# xapp_xcompmgr +# +################################################################################ + +XAPP_XCOMPMGR_VERSION = 1.1.9 +XAPP_XCOMPMGR_SOURCE = xcompmgr-$(XAPP_XCOMPMGR_VERSION).tar.xz +XAPP_XCOMPMGR_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XCOMPMGR_LICENSE = MIT +XAPP_XCOMPMGR_LICENSE_FILES = COPYING +XAPP_XCOMPMGR_DEPENDENCIES = \ + xlib_libXcomposite \ + xlib_libXdamage \ + xlib_libXext \ + xlib_libXfixes \ + xlib_libXrender + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xconsole/Config.in b/package/x11r7/xapp_xconsole/Config.in new file mode 100644 index 00000000..3d796bd3 --- /dev/null +++ b/package/x11r7/xapp_xconsole/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XAPP_XCONSOLE + bool "xconsole" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_XLIB_LIBXMU + select BR2_PACKAGE_XORGPROTO + help + xconsole - monitor system console messages with X diff --git a/package/x11r7/xapp_xconsole/xapp_xconsole.hash b/package/x11r7/xapp_xconsole/xapp_xconsole.hash new file mode 100644 index 00000000..59d4a671 --- /dev/null +++ b/package/x11r7/xapp_xconsole/xapp_xconsole.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-July/003173.html +sha256 7b4a6af068e40e2e6a4521d6f35c9253ec152c287d025fff9cc4c99f2586bba4 xconsole-1.0.8.tar.xz +sha512 93fd8527abed4faaf0f6a3804ab08dbcb926b0aaf67fd814c003b6b1102e2f643be5362a020c7028ae928925ffd423df6eb456d4ed48cf30a4c5f00a7ce648fa xconsole-1.0.8.tar.xz +# Locally computed +sha256 a29ea5dbcde7ba1695c95949be6303d1ca1de0b7786a38b60f33eccf03506f9d COPYING diff --git a/package/x11r7/xapp_xconsole/xapp_xconsole.mk b/package/x11r7/xapp_xconsole/xapp_xconsole.mk new file mode 100644 index 00000000..57ece561 --- /dev/null +++ b/package/x11r7/xapp_xconsole/xapp_xconsole.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xapp_xconsole +# +################################################################################ + +XAPP_XCONSOLE_VERSION = 1.0.8 +XAPP_XCONSOLE_SOURCE = xconsole-$(XAPP_XCONSOLE_VERSION).tar.xz +XAPP_XCONSOLE_SITE = https://xorg.freedesktop.org/releases/individual/app +XAPP_XCONSOLE_LICENSE = MIT +XAPP_XCONSOLE_LICENSE_FILES = COPYING +XAPP_XCONSOLE_DEPENDENCIES = \ + xlib_libX11 xlib_libXaw xlib_libXt xorgproto \ + xlib_libXmu +XAPP_XCONSOLE_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xcursorgen/Config.in b/package/x11r7/xapp_xcursorgen/Config.in new file mode 100644 index 00000000..c47ec28f --- /dev/null +++ b/package/x11r7/xapp_xcursorgen/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XAPP_XCURSORGEN + bool "xcursorgen" + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXCURSOR + help + create an X cursor file from a collection of PNG images diff --git a/package/x11r7/xapp_xcursorgen/xapp_xcursorgen.hash b/package/x11r7/xapp_xcursorgen/xapp_xcursorgen.hash new file mode 100644 index 00000000..45bff55e --- /dev/null +++ b/package/x11r7/xapp_xcursorgen/xapp_xcursorgen.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003264.html +sha256 32b33ce27b4e285e64ff375731806bb7988cc626ff10915c65f1dc4da640cc9b xcursorgen-1.0.8.tar.xz +sha512 dede5b9e1e09f9253365bbb83fdab26c681641913f3586cef52d4802db9cecc7e252344911cd969a873c3a5c5ebbd4b862f786de263f92ea1bcb2df90236f9c4 xcursorgen-1.0.8.tar.xz +# Locally computed +sha256 8c773336b654442ac8018715a52be1a8254895c57c898d5387016e9488cc2009 COPYING diff --git a/package/x11r7/xapp_xcursorgen/xapp_xcursorgen.mk b/package/x11r7/xapp_xcursorgen/xapp_xcursorgen.mk new file mode 100644 index 00000000..318cd562 --- /dev/null +++ b/package/x11r7/xapp_xcursorgen/xapp_xcursorgen.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xapp_xcursorgen +# +################################################################################ + +XAPP_XCURSORGEN_VERSION = 1.0.8 +XAPP_XCURSORGEN_SOURCE = xcursorgen-$(XAPP_XCURSORGEN_VERSION).tar.xz +XAPP_XCURSORGEN_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XCURSORGEN_LICENSE = MIT +XAPP_XCURSORGEN_LICENSE_FILES = COPYING +XAPP_XCURSORGEN_DEPENDENCIES = libpng xlib_libX11 xlib_libXcursor +HOST_XAPP_XCURSORGEN_DEPENDENCIES = \ + host-libpng host-xlib_libX11 host-xlib_libXcursor + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/x11r7/xapp_xdbedizzy/Config.in b/package/x11r7/xapp_xdbedizzy/Config.in new file mode 100644 index 00000000..e4a5960f --- /dev/null +++ b/package/x11r7/xapp_xdbedizzy/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XDBEDIZZY + bool "xdbedizzy" + select BR2_PACKAGE_XLIB_LIBXEXT + help + X.Org xdbedizzy application diff --git a/package/x11r7/xapp_xdbedizzy/xapp_xdbedizzy.hash b/package/x11r7/xapp_xdbedizzy/xapp_xdbedizzy.hash new file mode 100644 index 00000000..ad862c6e --- /dev/null +++ b/package/x11r7/xapp_xdbedizzy/xapp_xdbedizzy.hash @@ -0,0 +1,4 @@ +# From http://lists.x.org/archives/xorg-announce/2010-October/001514.html +sha1 281bee72116311e2d8393ae53ea832e9d267eded xdbedizzy-1.1.0.tar.bz2 +# Locally computed +sha256 27d8cbdcde7a0bd062ce49cdf8c672201452a64e3e6823f09b1beffe2c4b8eff COPYING diff --git a/package/x11r7/xapp_xdbedizzy/xapp_xdbedizzy.mk b/package/x11r7/xapp_xdbedizzy/xapp_xdbedizzy.mk new file mode 100644 index 00000000..72d04f83 --- /dev/null +++ b/package/x11r7/xapp_xdbedizzy/xapp_xdbedizzy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xdbedizzy +# +################################################################################ + +XAPP_XDBEDIZZY_VERSION = 1.1.0 +XAPP_XDBEDIZZY_SOURCE = xdbedizzy-$(XAPP_XDBEDIZZY_VERSION).tar.bz2 +XAPP_XDBEDIZZY_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XDBEDIZZY_LICENSE = MIT +XAPP_XDBEDIZZY_LICENSE_FILES = COPYING +XAPP_XDBEDIZZY_DEPENDENCIES = xlib_libXext + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xditview/Config.in b/package/x11r7/xapp_xditview/Config.in new file mode 100644 index 00000000..22944f70 --- /dev/null +++ b/package/x11r7/xapp_xditview/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XDITVIEW + bool "xditview" + select BR2_PACKAGE_XLIB_LIBXAW + help + display ditroff output diff --git a/package/x11r7/xapp_xditview/xapp_xditview.hash b/package/x11r7/xapp_xditview/xapp_xditview.hash new file mode 100644 index 00000000..dbaf5e42 --- /dev/null +++ b/package/x11r7/xapp_xditview/xapp_xditview.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003220.html +sha256 517700df205d4fdf65db182698157c959f1e7c10597670a7f45b1fcb2319819f xditview-1.0.6.tar.xz +sha512 249769d27980e9a69ac8f056f329dfa514f3ab6267d6ed69814c5695f315d2a7021c560a0e26fdd2568290a071793d7f2eafdd92f9981ed556047deb244ebf5a xditview-1.0.6.tar.xz +# Locally computed +sha256 023d879308a49249181f78bbb567e93c45138ad847fe969d191e4802e7a1a005 COPYING diff --git a/package/x11r7/xapp_xditview/xapp_xditview.mk b/package/x11r7/xapp_xditview/xapp_xditview.mk new file mode 100644 index 00000000..8655bd3e --- /dev/null +++ b/package/x11r7/xapp_xditview/xapp_xditview.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xapp_xditview +# +################################################################################ + +XAPP_XDITVIEW_VERSION = 1.0.6 +XAPP_XDITVIEW_SOURCE = xditview-$(XAPP_XDITVIEW_VERSION).tar.xz +XAPP_XDITVIEW_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XDITVIEW_LICENSE = MIT +XAPP_XDITVIEW_LICENSE_FILES = COPYING +XAPP_XDITVIEW_DEPENDENCIES = xlib_libXaw +XAPP_XDITVIEW_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xdm/Config.in b/package/x11r7/xapp_xdm/Config.in new file mode 100644 index 00000000..1ac15ce3 --- /dev/null +++ b/package/x11r7/xapp_xdm/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_XAPP_XDM + bool "xdm" + depends on BR2_USE_MMU # fork() + # Runtime dependency: can't start an X server unless there is one + depends on BR2_PACKAGE_XSERVER_XORG_SERVER + select BR2_PACKAGE_XAPP_SESSREG + select BR2_PACKAGE_XAPP_XRDB + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXDMCP + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_XORGPROTO + help + X.Org xdm application diff --git a/package/x11r7/xapp_xdm/S99xdm b/package/x11r7/xapp_xdm/S99xdm new file mode 100644 index 00000000..a2c0a1de --- /dev/null +++ b/package/x11r7/xapp_xdm/S99xdm @@ -0,0 +1,25 @@ +#!/bin/sh + +XDM_BIN=/usr/bin/xdm + +case "$1" in + start) + printf "Starting XDM: " + $XDM_BIN + echo "done" + ;; + stop) + echo "Stopping XDM" + killall -q xdm + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 + ;; +esac + +exit 0 diff --git a/package/x11r7/xapp_xdm/xapp_xdm.hash b/package/x11r7/xapp_xdm/xapp_xdm.hash new file mode 100644 index 00000000..daf1b085 --- /dev/null +++ b/package/x11r7/xapp_xdm/xapp_xdm.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003265.html +sha256 3e9bf25636797ec9e595286dd6820ecc33901439f07705eaf608ecda012c3d5f xdm-1.1.14.tar.xz +sha512 8ed1d2c946916c24cb4b2de9326f65629c97e53b145312c9cb9c6e4308d8b47d67d3981319fbd4feac9b3ed436b9dfb24a1c905d37d7bcf07b49c18a68c7a6e4 xdm-1.1.14.tar.xz +# Locally computed +sha256 b33b4bebbd6511b3e15315e8e29d67f25334ee45da8b7da6e6e97c53a70c6923 COPYING diff --git a/package/x11r7/xapp_xdm/xapp_xdm.mk b/package/x11r7/xapp_xdm/xapp_xdm.mk new file mode 100644 index 00000000..035f2e94 --- /dev/null +++ b/package/x11r7/xapp_xdm/xapp_xdm.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# xapp_xdm +# +################################################################################ + +XAPP_XDM_VERSION = 1.1.14 +XAPP_XDM_SOURCE = xdm-$(XAPP_XDM_VERSION).tar.xz +XAPP_XDM_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XDM_LICENSE = MIT +XAPP_XDM_LICENSE_FILES = COPYING +XAPP_XDM_CONF_ENV = ac_cv_file__dev_urandom=yes +XAPP_XDM_DEPENDENCIES = \ + xapp_sessreg \ + xapp_xrdb \ + xlib_libX11 \ + xlib_libXaw \ + xlib_libXdmcp \ + xlib_libXt \ + xorgproto +XAPP_XDM_CONF_OPTS = \ + --with-appdefaultdir=/usr/share/X11/app-defaults \ + --with-utmp-file=/var/adm/utmpx \ + --with-wtmp-file=/var/adm/wtmpx + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +XAPP_XDM_CONF_OPTS += --with-xinerama +XAPP_XDM_DEPENDENCIES += xlib_libXinerama +else +XAPP_XDM_CONF_OPTS += --without-xinerama +endif + +define XAPP_XDM_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/x11r7/xapp_xdm/S99xdm \ + $(TARGET_DIR)/etc/init.d/S99xdm +endef + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xdpyinfo/Config.in b/package/x11r7/xapp_xdpyinfo/Config.in new file mode 100644 index 00000000..85279038 --- /dev/null +++ b/package/x11r7/xapp_xdpyinfo/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_XDPYINFO + bool "xdpyinfo" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXTST + help + display information utility for X diff --git a/package/x11r7/xapp_xdpyinfo/xapp_xdpyinfo.hash b/package/x11r7/xapp_xdpyinfo/xapp_xdpyinfo.hash new file mode 100644 index 00000000..b0afdc15 --- /dev/null +++ b/package/x11r7/xapp_xdpyinfo/xapp_xdpyinfo.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-April/003388.html +sha256 a8ada581dbd7266440d7c3794fa89edf6b99b8857fc2e8c31042684f3af4822b xdpyinfo-1.3.4.tar.xz +sha512 9ef9f5c10e15a40895e8f008896b960fdd438277657c7159d16f05db79cd2374cfaca4af2f4e59335824bfd2f74a045ef89dd99ea4130ed436ea59fbbb1cbe12 xdpyinfo-1.3.4.tar.xz +# Locally computed +sha256 49733ead65fdfa1da0d176f9b965cc08dae74d73d66c9606488d52f6fc036abf COPYING diff --git a/package/x11r7/xapp_xdpyinfo/xapp_xdpyinfo.mk b/package/x11r7/xapp_xdpyinfo/xapp_xdpyinfo.mk new file mode 100644 index 00000000..a198fc44 --- /dev/null +++ b/package/x11r7/xapp_xdpyinfo/xapp_xdpyinfo.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# xapp_xdpyinfo +# +################################################################################ + +XAPP_XDPYINFO_VERSION = 1.3.4 +XAPP_XDPYINFO_SOURCE = xdpyinfo-$(XAPP_XDPYINFO_VERSION).tar.xz +XAPP_XDPYINFO_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XDPYINFO_LICENSE = MIT +XAPP_XDPYINFO_LICENSE_FILES = COPYING +XAPP_XDPYINFO_CONF_OPTS = --without-xf86misc # not in BR +XAPP_XDPYINFO_DEPENDENCIES = xlib_libX11 xlib_libXext xlib_libXtst \ + $(if $(BR2_PACKAGE_XLIB_LIBXI),xlib_libXi) \ + $(if $(BR2_PACKAGE_XLIB_LIBXRENDER),xlib_libXrender) \ + $(if $(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),xlib_libXcomposite) \ + $(if $(BR2_PACKAGE_XLIB_LIBXXF86VM),xlib_libXxf86vm) + +ifeq ($(BR2_PACKAGE_XLIB_LIBXXF86DGA),y) +XAPP_XDPYINFO_DEPENDENCIES += xlib_libXxf86dga +else +XAPP_XDPYINFO_CONF_OPTS += --without-dga +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBDMX),y) +XAPP_XDPYINFO_DEPENDENCIES += xlib_libdmx +else +XAPP_XDPYINFO_CONF_OPTS += --without-dmx +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +XAPP_XDPYINFO_DEPENDENCIES += xlib_libXinerama +else +XAPP_XDPYINFO_CONF_OPTS += --without-xinerama +endif + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xdriinfo/Config.in b/package/x11r7/xapp_xdriinfo/Config.in new file mode 100644 index 00000000..df65b491 --- /dev/null +++ b/package/x11r7/xapp_xdriinfo/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XAPP_XDRIINFO + bool "xdriinfo" + depends on BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XORGPROTO + help + query configuration information of DRI drivers + +comment "xdriinfo needs an OpenGL backend" + depends on !BR2_PACKAGE_HAS_LIBGL diff --git a/package/x11r7/xapp_xdriinfo/xapp_xdriinfo.hash b/package/x11r7/xapp_xdriinfo/xapp_xdriinfo.hash new file mode 100644 index 00000000..ce11d069 --- /dev/null +++ b/package/x11r7/xapp_xdriinfo/xapp_xdriinfo.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003308.html +sha256 dd838bae9d2b19ddd71fe6d30ed33abc7c85e19d223e79d35600db3fa44bf734 xdriinfo-1.0.7.tar.xz +sha512 a368cf32c606ca78f3a23bc5d88fb57b9c1a3827d0fec3e48cee153703135e47cecd3db8ee0eba93f309d7f03b4306c3f2e7f46f36d0d2970671c5e5b78093ad xdriinfo-1.0.7.tar.xz +# Locally computed +sha256 de2fbb160bbb64c48975d7a3ebe3636a312b73227df1efe37488a8cecb9c1932 COPYING diff --git a/package/x11r7/xapp_xdriinfo/xapp_xdriinfo.mk b/package/x11r7/xapp_xdriinfo/xapp_xdriinfo.mk new file mode 100644 index 00000000..7672dc88 --- /dev/null +++ b/package/x11r7/xapp_xdriinfo/xapp_xdriinfo.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xdriinfo +# +################################################################################ + +XAPP_XDRIINFO_VERSION = 1.0.7 +XAPP_XDRIINFO_SOURCE = xdriinfo-$(XAPP_XDRIINFO_VERSION).tar.xz +XAPP_XDRIINFO_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XDRIINFO_LICENSE = MIT +XAPP_XDRIINFO_LICENSE_FILES = COPYING +XAPP_XDRIINFO_DEPENDENCIES = libgl xlib_libX11 xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xedit/Config.in b/package/x11r7/xapp_xedit/Config.in new file mode 100644 index 00000000..876d5412 --- /dev/null +++ b/package/x11r7/xapp_xedit/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XEDIT + bool "xedit" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBXAW + help + simple text editor for X diff --git a/package/x11r7/xapp_xedit/xapp_xedit.hash b/package/x11r7/xapp_xedit/xapp_xedit.hash new file mode 100644 index 00000000..d550dbc8 --- /dev/null +++ b/package/x11r7/xapp_xedit/xapp_xedit.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-April/003149.html +sha256 bdd33afeeca881622e55d2cf28f07b4a98f083d0a2573c0b9048f25bdd62db2f xedit-1.2.3.tar.xz +sha512 1089c35ef961e53f74cc7d892960e1ee7f0da17529e3173e7f7764b0eb4ee94d1e068cb177d8502ca55c1dd6808962d4b1427e303adc7e6db80be8828557f45a xedit-1.2.3.tar.xz +# Locally computed +sha256 6d3e4092277ea08fc6b3180dba061120ea53ee965afb84fce16f8ab3d35bb47a COPYING diff --git a/package/x11r7/xapp_xedit/xapp_xedit.mk b/package/x11r7/xapp_xedit/xapp_xedit.mk new file mode 100644 index 00000000..5aae798f --- /dev/null +++ b/package/x11r7/xapp_xedit/xapp_xedit.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# xapp_xedit +# +################################################################################ + +XAPP_XEDIT_VERSION = 1.2.3 +XAPP_XEDIT_SOURCE = xedit-$(XAPP_XEDIT_VERSION).tar.xz +XAPP_XEDIT_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XEDIT_LICENSE = MIT +XAPP_XEDIT_LICENSE_FILES = COPYING +XAPP_XEDIT_DEPENDENCIES = xlib_libXaw + +XAPP_XEDIT_CONF_OPTS = \ + --disable-selective-werror \ + --with-appdefaultdir=/usr/share/X11/app-defaults + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xev/Config.in b/package/x11r7/xapp_xev/Config.in new file mode 100644 index 00000000..864d6424 --- /dev/null +++ b/package/x11r7/xapp_xev/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XEV + bool "xev" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXRANDR + help + print contents of X events diff --git a/package/x11r7/xapp_xev/xapp_xev.hash b/package/x11r7/xapp_xev/xapp_xev.hash new file mode 100644 index 00000000..94497813 --- /dev/null +++ b/package/x11r7/xapp_xev/xapp_xev.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-July/003185.html +sha256 c9461a4389714e0f33974f9e75934bdc38d836a0f059b8dc089c7cbf2ce36ec1 xev-1.2.5.tar.xz +sha512 9fbfb78c9547974c2256a678948bf4a694a40b1c2bd5c5dec5f365a713e6d938c6039f055a9629f49de27f02f3d7cb912f07c035df129798a4b2ddc20febe66a xev-1.2.5.tar.xz +# Locally computed +sha256 9b840f2e1900889124cc999f3158da2b6b07bf6d0d77bdbb01ce65d2e702dc83 COPYING diff --git a/package/x11r7/xapp_xev/xapp_xev.mk b/package/x11r7/xapp_xev/xapp_xev.mk new file mode 100644 index 00000000..0f29a731 --- /dev/null +++ b/package/x11r7/xapp_xev/xapp_xev.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xev +# +################################################################################ + +XAPP_XEV_VERSION = 1.2.5 +XAPP_XEV_SOURCE = xev-$(XAPP_XEV_VERSION).tar.xz +XAPP_XEV_SITE = https://xorg.freedesktop.org/releases/individual/app +XAPP_XEV_LICENSE = MIT +XAPP_XEV_LICENSE_FILES = COPYING +XAPP_XEV_DEPENDENCIES = xlib_libX11 xlib_libXrandr + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xeyes/Config.in b/package/x11r7/xapp_xeyes/Config.in new file mode 100644 index 00000000..268bc580 --- /dev/null +++ b/package/x11r7/xapp_xeyes/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XAPP_XEYES + bool "xeyes" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXI + select BR2_PACKAGE_XLIB_LIBXMU + select BR2_PACKAGE_XLIB_LIBXT + help + X.Org xeyes application diff --git a/package/x11r7/xapp_xeyes/xapp_xeyes.hash b/package/x11r7/xapp_xeyes/xapp_xeyes.hash new file mode 100644 index 00000000..734492b6 --- /dev/null +++ b/package/x11r7/xapp_xeyes/xapp_xeyes.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2021-August/003101.html +sha256 f8a17e23146bef1ab345a1e303c6749e42aaa7bcf4f25428afad41770721b6db xeyes-1.2.0.tar.bz2 +sha512 2d1614614b3ba3d1ebaa0e9801a2e159389b94aaacafb962d326b7e6dc712c1eb2c12a50ceb10b3135cf0eee6ae86bbf84e73098deb08e73792f14a60616b4d8 xeyes-1.2.0.tar.bz2 +# Locally computed +sha256 d8de1de40e16227d1eb4b19e95117ce3f990f71f71df096a2259b0bc9931e042 COPYING diff --git a/package/x11r7/xapp_xeyes/xapp_xeyes.mk b/package/x11r7/xapp_xeyes/xapp_xeyes.mk new file mode 100644 index 00000000..3f37aaee --- /dev/null +++ b/package/x11r7/xapp_xeyes/xapp_xeyes.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# xapp_xeyes +# +################################################################################ + +XAPP_XEYES_VERSION = 1.2.0 +XAPP_XEYES_SOURCE = xeyes-$(XAPP_XEYES_VERSION).tar.bz2 +XAPP_XEYES_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XEYES_LICENSE = MIT +XAPP_XEYES_LICENSE_FILES = COPYING +XAPP_XEYES_DEPENDENCIES = \ + xlib_libX11 \ + xlib_libXext \ + xlib_libXi \ + xlib_libXmu \ + xlib_libXt + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRENDER),y) +XAPP_XEYES_DEPENDENCIES += xlib_libXrender +XAPP_XEYES_CONF_OPTS += --with-xrender +else +XAPP_XEYES_CONF_OPTS += --without-xrender +endif + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xf86dga/Config.in b/package/x11r7/xapp_xf86dga/Config.in new file mode 100644 index 00000000..5d812033 --- /dev/null +++ b/package/x11r7/xapp_xf86dga/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XAPP_XF86DGA + bool "xf86dga" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXXF86DGA + help + test program for the XFree86-DGA extension diff --git a/package/x11r7/xapp_xf86dga/xapp_xf86dga.hash b/package/x11r7/xapp_xf86dga/xapp_xf86dga.hash new file mode 100644 index 00000000..1f898b8b --- /dev/null +++ b/package/x11r7/xapp_xf86dga/xapp_xf86dga.hash @@ -0,0 +1,4 @@ +# From http://lists.x.org/archives/xorg-announce/2010-October/001515.html +sha1 030659e3728f5f7142e1cf727f147aceeabe4b9e xf86dga-1.0.3.tar.bz2 +# Locally computed +sha256 27d8cbdcde7a0bd062ce49cdf8c672201452a64e3e6823f09b1beffe2c4b8eff COPYING diff --git a/package/x11r7/xapp_xf86dga/xapp_xf86dga.mk b/package/x11r7/xapp_xf86dga/xapp_xf86dga.mk new file mode 100644 index 00000000..fe8e4278 --- /dev/null +++ b/package/x11r7/xapp_xf86dga/xapp_xf86dga.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xapp_xf86dga +# +################################################################################ + +XAPP_XF86DGA_VERSION = 1.0.3 +XAPP_XF86DGA_SOURCE = xf86dga-$(XAPP_XF86DGA_VERSION).tar.bz2 +XAPP_XF86DGA_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XF86DGA_LICENSE = MIT +XAPP_XF86DGA_LICENSE_FILES = COPYING +XAPP_XF86DGA_DEPENDENCIES = \ + host-pkgconf \ + xlib_libX11 \ + xlib_libXxf86dga + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xfd/Config.in b/package/x11r7/xapp_xfd/Config.in new file mode 100644 index 00000000..f006b1e4 --- /dev/null +++ b/package/x11r7/xapp_xfd/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_XFD + bool "xfd" + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXFT + help + X.Org xfd application diff --git a/package/x11r7/xapp_xfd/xapp_xfd.hash b/package/x11r7/xapp_xfd/xapp_xfd.hash new file mode 100644 index 00000000..59659588 --- /dev/null +++ b/package/x11r7/xapp_xfd/xapp_xfd.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003266.html +sha256 d5470ffb66fd45a1e1b03d6df01f12d4caf0cf675cde0345cda237243e9076fd xfd-1.1.4.tar.xz +sha512 fa1f8a7b5d89be20fb2b1e3e0e8f4d7f9463e91fd385d21e1403a398c2e263112043b568417c420c5ee33bec60e06658498dd55df6d7ac19da3af0844f932209 xfd-1.1.4.tar.xz +# Locally computed +sha256 57ae10f24fc110dafb3b8d7735cf26b1905ff74e716745b2520e4ccd7751095c COPYING diff --git a/package/x11r7/xapp_xfd/xapp_xfd.mk b/package/x11r7/xapp_xfd/xapp_xfd.mk new file mode 100644 index 00000000..1ef1d69d --- /dev/null +++ b/package/x11r7/xapp_xfd/xapp_xfd.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# xapp_xfd +# +################################################################################ + +XAPP_XFD_VERSION = 1.1.4 +XAPP_XFD_SOURCE = xfd-$(XAPP_XFD_VERSION).tar.xz +XAPP_XFD_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XFD_LICENSE = MIT +XAPP_XFD_LICENSE_FILES = COPYING +XAPP_XFD_DEPENDENCIES = \ + freetype \ + fontconfig \ + xlib_libXaw \ + xlib_libXft \ + $(TARGET_NLS_DEPENDENCIES) +XAPP_XFD_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults +XAPP_XFD_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) + +ifeq ($(BR2_PACKAGE_XLIB_LIBXKBFILE),y) +XAPP_XFD_CONF_OPTS += --with-xkb +XAPP_XFD_DEPENDENCIES += xlib_libxkbfile +else +XAPP_XFD_CONF_OPTS += --without-xkb +endif + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xfindproxy/Config.in b/package/x11r7/xapp_xfindproxy/Config.in new file mode 100644 index 00000000..e452dc96 --- /dev/null +++ b/package/x11r7/xapp_xfindproxy/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XAPP_XFINDPROXY + bool "xfindproxy" + select BR2_PACKAGE_XLIB_LIBICE + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_XORGPROTO + help + xfindproxy utilizes the Proxy Management Protocol to + communicate with a proxy manager to locate available X11 + proxy services. diff --git a/package/x11r7/xapp_xfindproxy/xapp_xfindproxy.hash b/package/x11r7/xapp_xfindproxy/xapp_xfindproxy.hash new file mode 100644 index 00000000..55091ad2 --- /dev/null +++ b/package/x11r7/xapp_xfindproxy/xapp_xfindproxy.hash @@ -0,0 +1,4 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002573.html +sha256 5626bda27c7faa5cbe289a17f8552538fff08a96d542b85efdda1804ccf8a01f xfindproxy-1.0.4.tar.bz2 +# Locally computed +sha256 373984cd13212f3e2fbbcdf88694fd1f5a3658ed9184a6ac44f686fc2e8620f2 COPYING diff --git a/package/x11r7/xapp_xfindproxy/xapp_xfindproxy.mk b/package/x11r7/xapp_xfindproxy/xapp_xfindproxy.mk new file mode 100644 index 00000000..7832e0ca --- /dev/null +++ b/package/x11r7/xapp_xfindproxy/xapp_xfindproxy.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xapp_xfindproxy +# +################################################################################ + +XAPP_XFINDPROXY_VERSION = 1.0.4 +XAPP_XFINDPROXY_SOURCE = xfindproxy-$(XAPP_XFINDPROXY_VERSION).tar.bz2 +XAPP_XFINDPROXY_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XFINDPROXY_LICENSE = MIT +XAPP_XFINDPROXY_LICENSE_FILES = COPYING +XAPP_XFINDPROXY_DEPENDENCIES = \ + xlib_libICE \ + xlib_libXt \ + xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xfontsel/Config.in b/package/x11r7/xapp_xfontsel/Config.in new file mode 100644 index 00000000..0c6aa379 --- /dev/null +++ b/package/x11r7/xapp_xfontsel/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XFONTSEL + bool "xfontsel" + select BR2_PACKAGE_XLIB_LIBXAW + help + point and click selection of X11 font names diff --git a/package/x11r7/xapp_xfontsel/xapp_xfontsel.hash b/package/x11r7/xapp_xfontsel/xapp_xfontsel.hash new file mode 100644 index 00000000..8d7e546b --- /dev/null +++ b/package/x11r7/xapp_xfontsel/xapp_xfontsel.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-July/003174.html +sha256 17052c3357bbfe44b8468675ae3d099c2427ba9fcac10540aef524ae4d77d1b4 xfontsel-1.1.0.tar.xz +sha512 be67d223668431c9b5dd2ef74032d2f087be5f8f0ccc427bc7ee43e7ce42214edddb07d8c3d6d6de93ea35314392d384f1ab1ae5c48b2cfbce418610e3945a52 xfontsel-1.1.0.tar.xz +# Locally computed +sha256 a27097bcc5cdf4fa5d761dd4e5cea1f41911c51b0a7d9da6e3a48f69d9fd0c09 COPYING diff --git a/package/x11r7/xapp_xfontsel/xapp_xfontsel.mk b/package/x11r7/xapp_xfontsel/xapp_xfontsel.mk new file mode 100644 index 00000000..ac12f9c5 --- /dev/null +++ b/package/x11r7/xapp_xfontsel/xapp_xfontsel.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xfontsel +# +################################################################################ + +XAPP_XFONTSEL_VERSION = 1.1.0 +XAPP_XFONTSEL_SOURCE = xfontsel-$(XAPP_XFONTSEL_VERSION).tar.xz +XAPP_XFONTSEL_SITE = https://xorg.freedesktop.org/releases/individual/app +XAPP_XFONTSEL_LICENSE = MIT +XAPP_XFONTSEL_LICENSE_FILES = COPYING +XAPP_XFONTSEL_DEPENDENCIES = xlib_libXaw + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xfs/Config.in b/package/x11r7/xapp_xfs/Config.in new file mode 100644 index 00000000..19e675b2 --- /dev/null +++ b/package/x11r7/xapp_xfs/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_XFS + bool "xfs" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBFS + select BR2_PACKAGE_XLIB_LIBXFONT2 + select BR2_PACKAGE_XORGPROTO + help + X font server diff --git a/package/x11r7/xapp_xfs/xapp_xfs.hash b/package/x11r7/xapp_xfs/xapp_xfs.hash new file mode 100644 index 00000000..ed802f86 --- /dev/null +++ b/package/x11r7/xapp_xfs/xapp_xfs.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-July/003175.html +sha256 3d8ac3e8add7eeb1dc199dff6c59f90a2dbe7aa4332c1e12192350f2cda1c1e6 xfs-1.2.1.tar.xz +sha512 0f8b019e0d922b3d859110154e0ec58493f66507f9787cd41a6c03ad7a05b3293f088f1004e4aaa81e017a524c06d23915669f91ed5e1c2679b33c43de15e70d xfs-1.2.1.tar.xz +# Locally computed +sha256 0314ea37f40eff3c9ffe44b3924b2a768422f006a754e8286bfd1c73203d225e COPYING diff --git a/package/x11r7/xapp_xfs/xapp_xfs.mk b/package/x11r7/xapp_xfs/xapp_xfs.mk new file mode 100644 index 00000000..50a04121 --- /dev/null +++ b/package/x11r7/xapp_xfs/xapp_xfs.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xfs +# +################################################################################ + +XAPP_XFS_VERSION = 1.2.1 +XAPP_XFS_SOURCE = xfs-$(XAPP_XFS_VERSION).tar.xz +XAPP_XFS_SITE = https://xorg.freedesktop.org/releases/individual/app +XAPP_XFS_LICENSE = MIT +XAPP_XFS_LICENSE_FILES = COPYING +XAPP_XFS_DEPENDENCIES = xlib_libFS xlib_libXfont2 xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xfsinfo/Config.in b/package/x11r7/xapp_xfsinfo/Config.in new file mode 100644 index 00000000..84c8ac13 --- /dev/null +++ b/package/x11r7/xapp_xfsinfo/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XFSINFO + bool "xfsinfo" + select BR2_PACKAGE_XLIB_LIBFS + select BR2_PACKAGE_XLIB_LIBX11 + help + X font server information utility diff --git a/package/x11r7/xapp_xfsinfo/xapp_xfsinfo.hash b/package/x11r7/xapp_xfsinfo/xapp_xfsinfo.hash new file mode 100644 index 00000000..7d597647 --- /dev/null +++ b/package/x11r7/xapp_xfsinfo/xapp_xfsinfo.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003238.html +sha256 92f3ca451cba7717eed15f80de3c123aa56c82a1ee7d6e9116ba513021b98874 xfsinfo-1.0.7.tar.xz +sha512 1914916bf995c08a520bd009ddfa57c7e4a997a829380232d359f9bf68852c67650efb8f1fe3cc8a11889b2ec067f50ac38df711ffaf4536802a0b530dc1789c xfsinfo-1.0.7.tar.xz +# Locally computed +sha256 bae01fa08f30f21f9cfb75e8339d081b34e5e03d12677177f85a55b0ca41d0db COPYING diff --git a/package/x11r7/xapp_xfsinfo/xapp_xfsinfo.mk b/package/x11r7/xapp_xfsinfo/xapp_xfsinfo.mk new file mode 100644 index 00000000..29e9fc75 --- /dev/null +++ b/package/x11r7/xapp_xfsinfo/xapp_xfsinfo.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xfsinfo +# +################################################################################ + +XAPP_XFSINFO_VERSION = 1.0.7 +XAPP_XFSINFO_SOURCE = xfsinfo-$(XAPP_XFSINFO_VERSION).tar.xz +XAPP_XFSINFO_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XFSINFO_LICENSE = MIT +XAPP_XFSINFO_LICENSE_FILES = COPYING +XAPP_XFSINFO_DEPENDENCIES = xlib_libFS xlib_libX11 + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xgamma/Config.in b/package/x11r7/xapp_xgamma/Config.in new file mode 100644 index 00000000..b20a7840 --- /dev/null +++ b/package/x11r7/xapp_xgamma/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XGAMMA + bool "xgamma" + select BR2_PACKAGE_XLIB_LIBXXF86VM + help + Alter a monitor's gamma correction through the X server diff --git a/package/x11r7/xapp_xgamma/xapp_xgamma.hash b/package/x11r7/xapp_xgamma/xapp_xgamma.hash new file mode 100644 index 00000000..17efe0a9 --- /dev/null +++ b/package/x11r7/xapp_xgamma/xapp_xgamma.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003267.html +sha256 1c79dae85a8953a15f4fe5c2895a033307b43b8613456c87ec47b374b113bc8f xgamma-1.0.7.tar.xz +sha512 9eeee9b537dcae9e4d153774eb632a6a5e8dd32bebadc9bbd897a773e5b56f76848f32a1699b8c921d3094760c42b5083365d853b89ab31fd85c7a0d46feeceb xgamma-1.0.7.tar.xz +# Locally computed +sha256 78d354d348feaaab8d67a220e84137ec24fece04af4dface2e67132c72e216a2 COPYING diff --git a/package/x11r7/xapp_xgamma/xapp_xgamma.mk b/package/x11r7/xapp_xgamma/xapp_xgamma.mk new file mode 100644 index 00000000..f2e9e91e --- /dev/null +++ b/package/x11r7/xapp_xgamma/xapp_xgamma.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xgamma +# +################################################################################ + +XAPP_XGAMMA_VERSION = 1.0.7 +XAPP_XGAMMA_SOURCE = xgamma-$(XAPP_XGAMMA_VERSION).tar.xz +XAPP_XGAMMA_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XGAMMA_LICENSE = MIT +XAPP_XGAMMA_LICENSE_FILES = COPYING +XAPP_XGAMMA_DEPENDENCIES = xlib_libXxf86vm + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xgc/Config.in b/package/x11r7/xapp_xgc/Config.in new file mode 100644 index 00000000..98faba88 --- /dev/null +++ b/package/x11r7/xapp_xgc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XGC + bool "xgc" + select BR2_PACKAGE_XLIB_LIBXAW + help + X graphics demo diff --git a/package/x11r7/xapp_xgc/xapp_xgc.hash b/package/x11r7/xapp_xgc/xapp_xgc.hash new file mode 100644 index 00000000..7664e311 --- /dev/null +++ b/package/x11r7/xapp_xgc/xapp_xgc.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003221.html +sha256 7b87bbdbce4ec858738a3b81b8a3943aff01036001e2a1d00bb5384392a8b240 xgc-1.0.6.tar.xz +sha512 f449b9b2d313aeba1fe9bf33fef90291776403f1fdf4afc507c4b973045c97fc8ded65ddec4f8c58727e7e4c7c4ad6a65ae79581eb4bdfe9c79a5f909dbc0a1f xgc-1.0.6.tar.xz +# Locally computed +sha256 13ebeb3e59e406064d46e94a707ed5ec5d8d2bf840971265dd46db0850d22d02 COPYING diff --git a/package/x11r7/xapp_xgc/xapp_xgc.mk b/package/x11r7/xapp_xgc/xapp_xgc.mk new file mode 100644 index 00000000..fc055f57 --- /dev/null +++ b/package/x11r7/xapp_xgc/xapp_xgc.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xgc +# +################################################################################ + +XAPP_XGC_VERSION = 1.0.6 +XAPP_XGC_SOURCE = xgc-$(XAPP_XGC_VERSION).tar.xz +XAPP_XGC_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XGC_LICENSE = MIT +XAPP_XGC_LICENSE_FILES = COPYING +XAPP_XGC_DEPENDENCIES = xlib_libXaw + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xhost/Config.in b/package/x11r7/xapp_xhost/Config.in new file mode 100644 index 00000000..659b34de --- /dev/null +++ b/package/x11r7/xapp_xhost/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XHOST + bool "xhost" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + help + Controls host and/or user access to a running X server. diff --git a/package/x11r7/xapp_xhost/xapp_xhost.hash b/package/x11r7/xapp_xhost/xapp_xhost.hash new file mode 100644 index 00000000..fea2588c --- /dev/null +++ b/package/x11r7/xapp_xhost/xapp_xhost.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003301.html +sha256 ea86b531462035b19a2e5e01ef3d9a35cca7d984086645e2fc844d8f0e346645 xhost-1.0.9.tar.xz +sha512 d281a0df0a036d693ce7dbe0d1d53839110d203f42454bf4d33a49fbfddec078149969b6ad76641e40e207ddc8317ea563088c59025fc57d8245e5ed27f79818 xhost-1.0.9.tar.xz +# Locally computed +sha256 d3106697fb05dea4e9899b9e782ae7c3c17086d5b3dc7966494fc83fda9e468e COPYING diff --git a/package/x11r7/xapp_xhost/xapp_xhost.mk b/package/x11r7/xapp_xhost/xapp_xhost.mk new file mode 100644 index 00000000..55f7ca5c --- /dev/null +++ b/package/x11r7/xapp_xhost/xapp_xhost.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xapp_xhost +# +################################################################################ + +XAPP_XHOST_VERSION = 1.0.9 +XAPP_XHOST_SOURCE = xhost-$(XAPP_XHOST_VERSION).tar.xz +XAPP_XHOST_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XHOST_LICENSE = MIT +XAPP_XHOST_LICENSE_FILES = COPYING +XAPP_XHOST_DEPENDENCIES = xlib_libX11 xlib_libXmu $(TARGET_NLS_DEPENDENCIES) +XAPP_XHOST_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xinit/Config.in b/package/x11r7/xapp_xinit/Config.in new file mode 100644 index 00000000..d9fb1c5f --- /dev/null +++ b/package/x11r7/xapp_xinit/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_XAPP_XINIT + bool "xinit" + depends on BR2_USE_MMU # fork() + # Runtime dependency: can't start an X server unless there is one + depends on BR2_PACKAGE_XSERVER_XORG_SERVER + # Runtime dependency; mcookie is also in util-linux + select BR2_PACKAGE_MCOOKIE if !BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_XAPP_XAUTH + select BR2_PACKAGE_XLIB_LIBX11 + help + X Window System initializer diff --git a/package/x11r7/xapp_xinit/xapp_xinit.hash b/package/x11r7/xapp_xinit/xapp_xinit.hash new file mode 100644 index 00000000..4b7d8feb --- /dev/null +++ b/package/x11r7/xapp_xinit/xapp_xinit.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003268.html +sha256 b7d8dc8d22ef9f15985a10b606ee4f2aad6828befa437359934647e88d331f23 xinit-1.4.2.tar.xz +sha512 4b62c2edd97b40133577cbba88b3f31b36c5634b4eb667ef0c302e8358dc1c55a255abe42aaadc910d8aa9ea0e3add157a12a301382f1cdbe091df4e1215fae0 xinit-1.4.2.tar.xz +# Locally computed +sha256 c47001aa217d4ae7787121d80634db4bdba564e49a0ecab8d48b1bdc4edee1c7 COPYING diff --git a/package/x11r7/xapp_xinit/xapp_xinit.mk b/package/x11r7/xapp_xinit/xapp_xinit.mk new file mode 100644 index 00000000..795a1b54 --- /dev/null +++ b/package/x11r7/xapp_xinit/xapp_xinit.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xapp_xinit +# +################################################################################ + +XAPP_XINIT_VERSION = 1.4.2 +XAPP_XINIT_SOURCE = xinit-$(XAPP_XINIT_VERSION).tar.xz +XAPP_XINIT_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XINIT_DEPENDENCIES = xapp_xauth xlib_libX11 +XAPP_XINIT_LICENSE = MIT +XAPP_XINIT_LICENSE_FILES = COPYING +XAPP_XINIT_CONF_OPTS = MCOOKIE=/usr/bin/mcookie + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xinput-calibrator/Config.in b/package/x11r7/xapp_xinput-calibrator/Config.in new file mode 100644 index 00000000..76fbcd43 --- /dev/null +++ b/package/x11r7/xapp_xinput-calibrator/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_XAPP_XINPUT_CALIBRATOR + bool "xinput-calibrator" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXI + help + A generic touchscreen calibration program for X.Org. + + http://www.freedesktop.org/wiki/Software/xinput_calibrator + +comment "xinput-calibrator needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/x11r7/xapp_xinput-calibrator/xapp_xinput-calibrator.hash b/package/x11r7/xapp_xinput-calibrator/xapp_xinput-calibrator.hash new file mode 100644 index 00000000..b8fcaed0 --- /dev/null +++ b/package/x11r7/xapp_xinput-calibrator/xapp_xinput-calibrator.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 baa4ddca49ec94c27ba4c715bfa26692fec1132103e927213c3169e475d3d971 xinput_calibrator-0.7.5.tar.gz +sha256 ba6f260bba7d9640cfedfde3a6ae1790583ab8b9ee7c547233ecc0a214d1a6d3 COPYING diff --git a/package/x11r7/xapp_xinput-calibrator/xapp_xinput-calibrator.mk b/package/x11r7/xapp_xinput-calibrator/xapp_xinput-calibrator.mk new file mode 100644 index 00000000..be86608b --- /dev/null +++ b/package/x11r7/xapp_xinput-calibrator/xapp_xinput-calibrator.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xinput-calibrator +# +################################################################################ + +XAPP_XINPUT_CALIBRATOR_VERSION = 0.7.5 +XAPP_XINPUT_CALIBRATOR_SOURCE = xinput_calibrator-$(XAPP_XINPUT_CALIBRATOR_VERSION).tar.gz +XAPP_XINPUT_CALIBRATOR_SITE = https://github.com/downloads/tias/xinput_calibrator +XAPP_XINPUT_CALIBRATOR_LICENSE = MIT +XAPP_XINPUT_CALIBRATOR_LICENSE_FILES = COPYING +XAPP_XINPUT_CALIBRATOR_DEPENDENCIES = xlib_libX11 xlib_libXi + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xinput/Config.in b/package/x11r7/xapp_xinput/Config.in new file mode 100644 index 00000000..e438a45b --- /dev/null +++ b/package/x11r7/xapp_xinput/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_XINPUT + bool "xinput" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXI + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_XLIB_LIBXINERAMA + help + xinput diff --git a/package/x11r7/xapp_xinput/xapp_xinput.hash b/package/x11r7/xapp_xinput/xapp_xinput.hash new file mode 100644 index 00000000..d3a6a669 --- /dev/null +++ b/package/x11r7/xapp_xinput/xapp_xinput.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-April/003389.html +sha256 ad04d00d656884d133110eeddc34e9c69e626ebebbbab04dc95791c2907057c8 xinput-1.6.4.tar.xz +sha512 6734860852715e5cb9d26259a173e42413fc037546ed7fa4173ffa802c2619ee0322bed228a28cd1911be759d860070867d9b89b115f37323cca1c9ef75354b9 xinput-1.6.4.tar.xz +# Locally computed +sha256 bbd35c7a8e8c5cb073935e84b29b0c53f7131a4ef1ce737dc2be5616941e07e1 COPYING diff --git a/package/x11r7/xapp_xinput/xapp_xinput.mk b/package/x11r7/xapp_xinput/xapp_xinput.mk new file mode 100644 index 00000000..614b62fe --- /dev/null +++ b/package/x11r7/xapp_xinput/xapp_xinput.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xinput +# +################################################################################ + +XAPP_XINPUT_VERSION = 1.6.4 +XAPP_XINPUT_SOURCE = xinput-$(XAPP_XINPUT_VERSION).tar.xz +XAPP_XINPUT_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XINPUT_LICENSE = MIT +XAPP_XINPUT_LICENSE_FILES = COPYING +XAPP_XINPUT_DEPENDENCIES = xlib_libX11 xlib_libXi xlib_libXrandr xlib_libXinerama + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xkbcomp/Config.in b/package/x11r7/xapp_xkbcomp/Config.in new file mode 100644 index 00000000..2b575b25 --- /dev/null +++ b/package/x11r7/xapp_xkbcomp/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XKBCOMP + bool "xkbcomp" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXKBFILE + help + compile XKB keyboard description diff --git a/package/x11r7/xapp_xkbcomp/xapp_xkbcomp.hash b/package/x11r7/xapp_xkbcomp/xapp_xkbcomp.hash new file mode 100644 index 00000000..b626e502 --- /dev/null +++ b/package/x11r7/xapp_xkbcomp/xapp_xkbcomp.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003283.html +sha256 fa50d611ef41e034487af7bd8d8c718df53dd18002f591cca16b0384afc58e98 xkbcomp-1.4.6.tar.xz +sha512 90e69dd1c78c28f77a5acc7821b43afec1b9ac4895bc6f3462b4902baaadc26f3869da69e3bd023b4bc74adb5f1be0c43ca24b3dab37ac9a479c5622684baa81 xkbcomp-1.4.6.tar.xz +# Locally computed +sha256 6b833fdc05906ce57f016dc791db86830d49ee4da2861ce45806c50b3f4dda9e COPYING diff --git a/package/x11r7/xapp_xkbcomp/xapp_xkbcomp.mk b/package/x11r7/xapp_xkbcomp/xapp_xkbcomp.mk new file mode 100644 index 00000000..61922c7c --- /dev/null +++ b/package/x11r7/xapp_xkbcomp/xapp_xkbcomp.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xapp_xkbcomp +# +################################################################################ + +XAPP_XKBCOMP_VERSION = 1.4.6 +XAPP_XKBCOMP_SOURCE = xkbcomp-$(XAPP_XKBCOMP_VERSION).tar.xz +XAPP_XKBCOMP_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XKBCOMP_LICENSE = MIT +XAPP_XKBCOMP_LICENSE_FILES = COPYING +XAPP_XKBCOMP_DEPENDENCIES = xlib_libX11 xlib_libxkbfile +HOST_XAPP_XKBCOMP_DEPENDENCIES = host-xlib_libX11 host-xlib_libxkbfile +XAPP_XKBCOMP_CONF_ENV = ac_cv_file___xkbparse_c=yes + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/x11r7/xapp_xkbevd/Config.in b/package/x11r7/xapp_xkbevd/Config.in new file mode 100644 index 00000000..0cbb9e4f --- /dev/null +++ b/package/x11r7/xapp_xkbevd/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XKBEVD + bool "xkbevd" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBXKBFILE + help + XKB event daemon diff --git a/package/x11r7/xapp_xkbevd/xapp_xkbevd.hash b/package/x11r7/xapp_xkbevd/xapp_xkbevd.hash new file mode 100644 index 00000000..40b813fc --- /dev/null +++ b/package/x11r7/xapp_xkbevd/xapp_xkbevd.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-November/003255.html +sha256 38357b702de9d3457c4ff75053390f457b84c4accc7f088101255c37c684926b xkbevd-1.1.5.tar.xz +sha512 9e4a56484771e5eb5444fbd11e7d0bb952a2746eea79b84298e2000ada96896d501b886727c4ef08c120b5dcce550fca2d3e3dd762f4ca0327c38d9609961c5b xkbevd-1.1.5.tar.xz +# Locally computed +sha256 38c6dbf8f88b1c920561ff3a4d1ffdb85c069c664f5f8b64a9adb477ef347b7c COPYING diff --git a/package/x11r7/xapp_xkbevd/xapp_xkbevd.mk b/package/x11r7/xapp_xkbevd/xapp_xkbevd.mk new file mode 100644 index 00000000..5b99e696 --- /dev/null +++ b/package/x11r7/xapp_xkbevd/xapp_xkbevd.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xkbevd +# +################################################################################ + +XAPP_XKBEVD_VERSION = 1.1.5 +XAPP_XKBEVD_SOURCE = xkbevd-$(XAPP_XKBEVD_VERSION).tar.xz +XAPP_XKBEVD_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XKBEVD_LICENSE = MIT +XAPP_XKBEVD_LICENSE_FILES = COPYING +XAPP_XKBEVD_DEPENDENCIES = xlib_libxkbfile + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xkbprint/Config.in b/package/x11r7/xapp_xkbprint/Config.in new file mode 100644 index 00000000..e7a4242c --- /dev/null +++ b/package/x11r7/xapp_xkbprint/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XKBPRINT + bool "xkbprint" + select BR2_PACKAGE_XLIB_LIBXKBFILE + help + print an XKB keyboard description diff --git a/package/x11r7/xapp_xkbprint/xapp_xkbprint.hash b/package/x11r7/xapp_xkbprint/xapp_xkbprint.hash new file mode 100644 index 00000000..8ca7656b --- /dev/null +++ b/package/x11r7/xapp_xkbprint/xapp_xkbprint.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003222.html +sha256 99cc9404f7b90289ae04944c0d98a208cc8b158492ad6481386e31d4d09aa7b0 xkbprint-1.0.6.tar.xz +sha512 a1c2401b2a2ef4c6bd2efc18923ecb176adcf38b6c5dfdce25f22f1f5ab21e25f494b25dac25b1765fb9a0f6acc24d191cd41b9a098a9e3c6eaf9a9df490be29 xkbprint-1.0.6.tar.xz +# Locally computed +sha256 79b32f28f7f5063054a564e1fdeee56f82a525b6516303704a1f70e55fe7197e COPYING diff --git a/package/x11r7/xapp_xkbprint/xapp_xkbprint.mk b/package/x11r7/xapp_xkbprint/xapp_xkbprint.mk new file mode 100644 index 00000000..f374c18d --- /dev/null +++ b/package/x11r7/xapp_xkbprint/xapp_xkbprint.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xkbprint +# +################################################################################ + +XAPP_XKBPRINT_VERSION = 1.0.6 +XAPP_XKBPRINT_SOURCE = xkbprint-$(XAPP_XKBPRINT_VERSION).tar.xz +XAPP_XKBPRINT_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XKBPRINT_LICENSE = MIT +XAPP_XKBPRINT_LICENSE_FILES = COPYING +XAPP_XKBPRINT_DEPENDENCIES = xlib_libxkbfile + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xkbutils/Config.in b/package/x11r7/xapp_xkbutils/Config.in new file mode 100644 index 00000000..22a819b3 --- /dev/null +++ b/package/x11r7/xapp_xkbutils/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XKBUTILS + bool "xkbutils" + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXKBFILE + help + X.Org xkbutils application diff --git a/package/x11r7/xapp_xkbutils/xapp_xkbutils.hash b/package/x11r7/xapp_xkbutils/xapp_xkbutils.hash new file mode 100644 index 00000000..95287956 --- /dev/null +++ b/package/x11r7/xapp_xkbutils/xapp_xkbutils.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-July/003186.html +sha256 f6a4a8e9c54582beb3787b1faa8168caab125c1fee0ca9cfa5b6c9c1df25eea4 xkbutils-1.0.5.tar.xz +sha512 0d8d460f5e015e9034292688437511068dab61216c2493f2981cfb63aaa012976ac9435c1586a22c0940fbfcb779b48dce9b85832303fe2b854aa945b814ac77 xkbutils-1.0.5.tar.xz +# Locally computed +sha256 3d67b53c085de6d475705b60855b9277afac5d4c4ec531d0ffd1ef0d00571594 COPYING diff --git a/package/x11r7/xapp_xkbutils/xapp_xkbutils.mk b/package/x11r7/xapp_xkbutils/xapp_xkbutils.mk new file mode 100644 index 00000000..90501908 --- /dev/null +++ b/package/x11r7/xapp_xkbutils/xapp_xkbutils.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xkbutils +# +################################################################################ + +XAPP_XKBUTILS_VERSION = 1.0.5 +XAPP_XKBUTILS_SOURCE = xkbutils-$(XAPP_XKBUTILS_VERSION).tar.xz +XAPP_XKBUTILS_SITE = https://xorg.freedesktop.org/releases/individual/app +XAPP_XKBUTILS_LICENSE = MIT +XAPP_XKBUTILS_LICENSE_FILES = COPYING +XAPP_XKBUTILS_DEPENDENCIES = xlib_libXaw xlib_libxkbfile + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xkill/Config.in b/package/x11r7/xapp_xkill/Config.in new file mode 100644 index 00000000..fcab92a5 --- /dev/null +++ b/package/x11r7/xapp_xkill/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XKILL + bool "xkill" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + help + kill a client by its X resource diff --git a/package/x11r7/xapp_xkill/xapp_xkill.hash b/package/x11r7/xapp_xkill/xapp_xkill.hash new file mode 100644 index 00000000..8cee05d8 --- /dev/null +++ b/package/x11r7/xapp_xkill/xapp_xkill.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-November/003256.html +sha256 e5a8aa78c475677b11504646da8d93dacc30744258076a2ca418a24438aeb907 xkill-1.0.6.tar.xz +sha512 a755a8db51d7860b9942161776390007b9b530c2f7fcf8ddb3383311d36d185a6f08a44c5f6f7735576b146902e66aca21cbd7e746c1289d035e79332e8173b6 xkill-1.0.6.tar.xz +# Locally computed +sha256 13306c3890e4c8710bc468dee0eba7f9677cd94c7a67d2d81fa932d4f635b21f COPYING diff --git a/package/x11r7/xapp_xkill/xapp_xkill.mk b/package/x11r7/xapp_xkill/xapp_xkill.mk new file mode 100644 index 00000000..84dad0b5 --- /dev/null +++ b/package/x11r7/xapp_xkill/xapp_xkill.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xkill +# +################################################################################ + +XAPP_XKILL_VERSION = 1.0.6 +XAPP_XKILL_SOURCE = xkill-$(XAPP_XKILL_VERSION).tar.xz +XAPP_XKILL_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XKILL_LICENSE = MIT +XAPP_XKILL_LICENSE_FILES = COPYING +XAPP_XKILL_DEPENDENCIES = xlib_libX11 xlib_libXmu + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xload/Config.in b/package/x11r7/xapp_xload/Config.in new file mode 100644 index 00000000..25c79d2c --- /dev/null +++ b/package/x11r7/xapp_xload/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XLOAD + bool "xload" + select BR2_PACKAGE_XLIB_LIBXAW + help + system load average display for X diff --git a/package/x11r7/xapp_xload/xapp_xload.hash b/package/x11r7/xapp_xload/xapp_xload.hash new file mode 100644 index 00000000..9716fe15 --- /dev/null +++ b/package/x11r7/xapp_xload/xapp_xload.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-April/003150.html +sha256 8346b99120db24e0f42920f7f12e23e9b1b407d3a66ce419990387b608373031 xload-1.1.4.tar.xz +sha512 114babe4e5a60f4713f9e4627ee0a1bbb2f1f238cb46f24c38aecff67f25e6b0f58cbd554c71095ddc2b01398adbfa379550a34c23c413db52157648028554f2 xload-1.1.4.tar.xz +# Locally computed +sha256 a09b31d26e4d2781eef1e71f39789f86cad6d81153e72064f45875910fa6258f COPYING diff --git a/package/x11r7/xapp_xload/xapp_xload.mk b/package/x11r7/xapp_xload/xapp_xload.mk new file mode 100644 index 00000000..f2193594 --- /dev/null +++ b/package/x11r7/xapp_xload/xapp_xload.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# xapp_xload +# +################################################################################ + +XAPP_XLOAD_VERSION = 1.1.4 +XAPP_XLOAD_SOURCE = xload-$(XAPP_XLOAD_VERSION).tar.xz +XAPP_XLOAD_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XLOAD_LICENSE = MIT +XAPP_XLOAD_LICENSE_FILES = COPYING +XAPP_XLOAD_DEPENDENCIES = xlib_libXaw $(TARGET_NLS_DEPENDENCIES) +XAPP_XLOAD_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults +XAPP_XLOAD_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) + +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 + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),) +XAPP_XLOAD_CONF_ENV += ac_cv_search_gettext=no +endif + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xlogo/Config.in b/package/x11r7/xapp_xlogo/Config.in new file mode 100644 index 00000000..aacb75ff --- /dev/null +++ b/package/x11r7/xapp_xlogo/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XAPP_XLOGO + bool "xlogo" + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XLIB_LIBXFT + help + X Window System logo diff --git a/package/x11r7/xapp_xlogo/xapp_xlogo.hash b/package/x11r7/xapp_xlogo/xapp_xlogo.hash new file mode 100644 index 00000000..58f2ac40 --- /dev/null +++ b/package/x11r7/xapp_xlogo/xapp_xlogo.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-November/003257.html +sha256 c16ae461a7f7ea275f55c82acf3ee86ce0eb5e406f3a91ab2bb4d332693f32a0 xlogo-1.0.6.tar.xz +sha512 f0c921e0e34d2c0959d95ca0fcb7488395043280b8b35bcad4e8a528224f2b38581fbf60e82239d06760ecd637692cb29c3b1c0c46ac7f269f692a139d954ea0 xlogo-1.0.6.tar.xz +# Locally computed +sha256 972b454b6c0da17cec61225ab9dfd4afc69fd8e7e4c629497197c6f79adc6fb0 COPYING diff --git a/package/x11r7/xapp_xlogo/xapp_xlogo.mk b/package/x11r7/xapp_xlogo/xapp_xlogo.mk new file mode 100644 index 00000000..27d693be --- /dev/null +++ b/package/x11r7/xapp_xlogo/xapp_xlogo.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xapp_xlogo +# +################################################################################ + +XAPP_XLOGO_VERSION = 1.0.6 +XAPP_XLOGO_SOURCE = xlogo-$(XAPP_XLOGO_VERSION).tar.xz +XAPP_XLOGO_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XLOGO_LICENSE = MIT +XAPP_XLOGO_LICENSE_FILES = COPYING +XAPP_XLOGO_DEPENDENCIES = \ + xlib_libXaw xlib_libXrender \ + xlib_libXft host-pkgconf + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xlsatoms/Config.in b/package/x11r7/xapp_xlsatoms/Config.in new file mode 100644 index 00000000..2ad84845 --- /dev/null +++ b/package/x11r7/xapp_xlsatoms/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XLSATOMS + bool "xlsatoms" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + help + list interned atoms defined on server diff --git a/package/x11r7/xapp_xlsatoms/xapp_xlsatoms.hash b/package/x11r7/xapp_xlsatoms/xapp_xlsatoms.hash new file mode 100644 index 00000000..be9ed6f0 --- /dev/null +++ b/package/x11r7/xapp_xlsatoms/xapp_xlsatoms.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-November/003258.html +sha256 f4bfa15f56c066d326a5d5b292646708f25b9247506840b9047cd2687dcc71b7 xlsatoms-1.1.4.tar.xz +sha512 82f0d1e17850770537eac82947eff4514639f8122bd864e02685ede49db110a4c90c7782702ffb677a2b581f3eacd10dba80e63e29e7a1ed1c9255ee163fe0c4 xlsatoms-1.1.4.tar.xz +# Locally computed +sha256 f0a362fc1b8e788845b1c0ad7ba9ade58fdfb73da750c3b9780db5d70b947657 COPYING diff --git a/package/x11r7/xapp_xlsatoms/xapp_xlsatoms.mk b/package/x11r7/xapp_xlsatoms/xapp_xlsatoms.mk new file mode 100644 index 00000000..2ef09ef2 --- /dev/null +++ b/package/x11r7/xapp_xlsatoms/xapp_xlsatoms.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xlsatoms +# +################################################################################ + +XAPP_XLSATOMS_VERSION = 1.1.4 +XAPP_XLSATOMS_SOURCE = xlsatoms-$(XAPP_XLSATOMS_VERSION).tar.xz +XAPP_XLSATOMS_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XLSATOMS_LICENSE = MIT +XAPP_XLSATOMS_LICENSE_FILES = COPYING +XAPP_XLSATOMS_DEPENDENCIES = xlib_libX11 xlib_libXmu + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xlsclients/Config.in b/package/x11r7/xapp_xlsclients/Config.in new file mode 100644 index 00000000..a934af45 --- /dev/null +++ b/package/x11r7/xapp_xlsclients/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_XLSCLIENTS + bool "xlsclients" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + select BR2_PACKAGE_LIBXCB + select BR2_PACKAGE_XCB_UTIL + help + X.Org xlsclients application diff --git a/package/x11r7/xapp_xlsclients/xapp_xlsclients.hash b/package/x11r7/xapp_xlsclients/xapp_xlsclients.hash new file mode 100644 index 00000000..ac172acc --- /dev/null +++ b/package/x11r7/xapp_xlsclients/xapp_xlsclients.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-November/003259.html +sha256 68baee57e70250ac4a7759fb78221831f97d88bc8e51dcc2e64eb3f8ca56bae3 xlsclients-1.1.5.tar.xz +sha512 3896643378603876438772475e89ad5c066f98c16593245db5fa066418ff793798247f976d2bf7aa401d2590fc9807b80c9758bcbcc91566f02ceb856d9702bf xlsclients-1.1.5.tar.xz +# Locally computed +sha256 716d6f1d18cb97cdd4a2ef7b101d944a250ca9de57578a490c038b9aaf950648 COPYING diff --git a/package/x11r7/xapp_xlsclients/xapp_xlsclients.mk b/package/x11r7/xapp_xlsclients/xapp_xlsclients.mk new file mode 100644 index 00000000..a179e067 --- /dev/null +++ b/package/x11r7/xapp_xlsclients/xapp_xlsclients.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xlsclients +# +################################################################################ + +XAPP_XLSCLIENTS_VERSION = 1.1.5 +XAPP_XLSCLIENTS_SOURCE = xlsclients-$(XAPP_XLSCLIENTS_VERSION).tar.xz +XAPP_XLSCLIENTS_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XLSCLIENTS_LICENSE = MIT +XAPP_XLSCLIENTS_LICENSE_FILES = COPYING +XAPP_XLSCLIENTS_DEPENDENCIES = xlib_libX11 xlib_libXmu libxcb xcb-util + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xlsfonts/Config.in b/package/x11r7/xapp_xlsfonts/Config.in new file mode 100644 index 00000000..dab61ebf --- /dev/null +++ b/package/x11r7/xapp_xlsfonts/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XLSFONTS + bool "xlsfonts" + select BR2_PACKAGE_XLIB_LIBX11 + help + X.Org xlsfonts application diff --git a/package/x11r7/xapp_xlsfonts/xapp_xlsfonts.hash b/package/x11r7/xapp_xlsfonts/xapp_xlsfonts.hash new file mode 100644 index 00000000..cd8ae4f3 --- /dev/null +++ b/package/x11r7/xapp_xlsfonts/xapp_xlsfonts.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-April/003151.html +sha256 7b726945a967b44c35cddee5edd74802907a239ce2e2e515730b8a32c8e50465 xlsfonts-1.0.7.tar.xz +sha512 ec82be0a97500a9e64fb5a6adbbec470b249b1267c3081c2bd44cd3e7148107517d1234c1da2f81b0405230ab03ad2943ea53756c3380f4d561665b38d0cedc0 xlsfonts-1.0.7.tar.xz +# Locally computed +sha256 dcdf5fa36a652efbe61a21def1301739b0010334ae3f049f1cff433221a8c7a5 COPYING diff --git a/package/x11r7/xapp_xlsfonts/xapp_xlsfonts.mk b/package/x11r7/xapp_xlsfonts/xapp_xlsfonts.mk new file mode 100644 index 00000000..f8a35e56 --- /dev/null +++ b/package/x11r7/xapp_xlsfonts/xapp_xlsfonts.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xlsfonts +# +################################################################################ + +XAPP_XLSFONTS_VERSION = 1.0.7 +XAPP_XLSFONTS_SOURCE = xlsfonts-$(XAPP_XLSFONTS_VERSION).tar.xz +XAPP_XLSFONTS_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XLSFONTS_LICENSE = MIT +XAPP_XLSFONTS_LICENSE_FILES = COPYING +XAPP_XLSFONTS_DEPENDENCIES = xlib_libX11 + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xmag/Config.in b/package/x11r7/xapp_xmag/Config.in new file mode 100644 index 00000000..44d2c8e1 --- /dev/null +++ b/package/x11r7/xapp_xmag/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XMAG + bool "xmag" + select BR2_PACKAGE_XLIB_LIBXAW + help + X.Org xmag application diff --git a/package/x11r7/xapp_xmag/xapp_xmag.hash b/package/x11r7/xapp_xmag/xapp_xmag.hash new file mode 100644 index 00000000..c0cfbcfa --- /dev/null +++ b/package/x11r7/xapp_xmag/xapp_xmag.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-July/003191.html +sha256 009936cc5a2706084079127b26cf55c713767650a34cb69e5682d60e33ce7461 xmag-1.0.7.tar.xz +sha512 d35ac5d977b9f3bd03fb919bf178f68bdbc6ef2a57915b407d836fce0582f5cb78d0b79043bb6f8d015464ca113deb09469c3b724aed03901a4c3fc4a9982984 xmag-1.0.7.tar.xz +# Locally computed +sha256 ef8744e617719339c4934579f8558ee4a5aec4396bebd6af02562b63a7c16d27 COPYING diff --git a/package/x11r7/xapp_xmag/xapp_xmag.mk b/package/x11r7/xapp_xmag/xapp_xmag.mk new file mode 100644 index 00000000..0e8831d2 --- /dev/null +++ b/package/x11r7/xapp_xmag/xapp_xmag.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xapp_xmag +# +################################################################################ + +XAPP_XMAG_VERSION = 1.0.7 +XAPP_XMAG_SOURCE = xmag-$(XAPP_XMAG_VERSION).tar.xz +XAPP_XMAG_SITE = https://xorg.freedesktop.org/releases/individual/app +XAPP_XMAG_LICENSE = MIT +XAPP_XMAG_LICENSE_FILES = COPYING +XAPP_XMAG_DEPENDENCIES = xlib_libXaw +XAPP_XMAG_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xman/Config.in b/package/x11r7/xapp_xman/Config.in new file mode 100644 index 00000000..4f4f067e --- /dev/null +++ b/package/x11r7/xapp_xman/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XMAN + bool "xman" + select BR2_PACKAGE_XLIB_LIBXAW + help + Manual page display program for the X Window System diff --git a/package/x11r7/xapp_xman/xapp_xman.hash b/package/x11r7/xapp_xman/xapp_xman.hash new file mode 100644 index 00000000..4436ca31 --- /dev/null +++ b/package/x11r7/xapp_xman/xapp_xman.hash @@ -0,0 +1,7 @@ +# From https://lists.x.org/archives/xorg-announce/2019-July/003011.html +md5 629436867b202098967636b17c8d303c xman-1.1.5.tar.bz2 +sha1 ec76dbd010f68974e05dfe8bc4b91731a3b7285b xman-1.1.5.tar.bz2 +sha256 4e3c2c7497e9734a6d3c8e1b6a364612892bb31e9f33076c9fdae7177ab60978 xman-1.1.5.tar.bz2 +sha512 f6b2be424a79f298bf1a81edce4172572195c9efc9454e5b7b7046f344ed08154c77ccaa763ccdf3f1a30b64aa4802783bf813ee637437ccb1fba434fc5d4400 xman-1.1.5.tar.bz2 +# Locally computed +sha256 4c3d6d6fc5661c64285931a0871728f3745d962d877477235dc66e4043db3d36 COPYING diff --git a/package/x11r7/xapp_xman/xapp_xman.mk b/package/x11r7/xapp_xman/xapp_xman.mk new file mode 100644 index 00000000..f8abfe57 --- /dev/null +++ b/package/x11r7/xapp_xman/xapp_xman.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# xapp_xman +# +################################################################################ + +XAPP_XMAN_VERSION = 1.1.5 +XAPP_XMAN_SOURCE = xman-$(XAPP_XMAN_VERSION).tar.bz2 +XAPP_XMAN_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XMAN_LICENSE = MIT +XAPP_XMAN_LICENSE_FILES = COPYING +XAPP_XMAN_DEPENDENCIES = xlib_libXaw +XAPP_XMAN_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults + +XAPP_XMAN_CONF_ENV = \ + ac_cv_file__etc_man_conf=no \ + ac_cv_file__etc_man_config=no \ + ac_cv_file__etc_manpath_config=no \ + ac_cv_file__usr_share_misc_man_conf=no + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xmessage/Config.in b/package/x11r7/xapp_xmessage/Config.in new file mode 100644 index 00000000..e80562ff --- /dev/null +++ b/package/x11r7/xapp_xmessage/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XMESSAGE + bool "xmessage" + select BR2_PACKAGE_XLIB_LIBXAW + help + display a message or query in a window (X-based /bin/echo) diff --git a/package/x11r7/xapp_xmessage/xapp_xmessage.hash b/package/x11r7/xapp_xmessage/xapp_xmessage.hash new file mode 100644 index 00000000..07952220 --- /dev/null +++ b/package/x11r7/xapp_xmessage/xapp_xmessage.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-July/003187.html +sha256 d2eac545f137156b960877e052fcc8e29795ed735c02f7690fd7b439e6846a12 xmessage-1.0.6.tar.xz +sha512 89deb7a81bd047027f99cb92cd16a47f94479c61a6f9fbac4638e6d642037b3e9bbac2313db59ac8c5544175947c693f6a210537c6df2b88dc3de1c67498cba8 xmessage-1.0.6.tar.xz +# Locally computed +sha256 dfd5427188bd6d6647ad1a9a0644428403c6239f6aa7f9d1a17629d8cc0a4ecd COPYING diff --git a/package/x11r7/xapp_xmessage/xapp_xmessage.mk b/package/x11r7/xapp_xmessage/xapp_xmessage.mk new file mode 100644 index 00000000..52a9f326 --- /dev/null +++ b/package/x11r7/xapp_xmessage/xapp_xmessage.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xapp_xmessage +# +################################################################################ + +XAPP_XMESSAGE_VERSION = 1.0.6 +XAPP_XMESSAGE_SOURCE = xmessage-$(XAPP_XMESSAGE_VERSION).tar.xz +XAPP_XMESSAGE_SITE = https://xorg.freedesktop.org/releases/individual/app +XAPP_XMESSAGE_LICENSE = MIT +XAPP_XMESSAGE_LICENSE_FILES = COPYING +XAPP_XMESSAGE_DEPENDENCIES = xlib_libXaw +XAPP_XMESSAGE_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xmh/Config.in b/package/x11r7/xapp_xmh/Config.in new file mode 100644 index 00000000..4e86d0f4 --- /dev/null +++ b/package/x11r7/xapp_xmh/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XAPP_XMH + bool "xmh" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XDATA_XBITMAPS + help + send and read mail with an X interface to MH diff --git a/package/x11r7/xapp_xmh/xapp_xmh.hash b/package/x11r7/xapp_xmh/xapp_xmh.hash new file mode 100644 index 00000000..f0c9fa95 --- /dev/null +++ b/package/x11r7/xapp_xmh/xapp_xmh.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-August/003208.html +sha256 e82c425a4c4156eee2e344d2e952f3fd816e03973005cd656ec1e9acf6f329db xmh-1.0.4.tar.xz +sha512 03bba7d3e7c2070b03378335aed0188dd0fd0a488f19dc5ad3f26674a9b38e6599377d082328041dd3ab72123ed60acae32cff19d7149517545b80e1339db26a xmh-1.0.4.tar.xz +# Locally computed +sha256 27d8cbdcde7a0bd062ce49cdf8c672201452a64e3e6823f09b1beffe2c4b8eff COPYING diff --git a/package/x11r7/xapp_xmh/xapp_xmh.mk b/package/x11r7/xapp_xmh/xapp_xmh.mk new file mode 100644 index 00000000..db6102eb --- /dev/null +++ b/package/x11r7/xapp_xmh/xapp_xmh.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xmh +# +################################################################################ + +XAPP_XMH_VERSION = 1.0.4 +XAPP_XMH_SOURCE = xmh-$(XAPP_XMH_VERSION).tar.xz +XAPP_XMH_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XMH_LICENSE = MIT +XAPP_XMH_LICENSE_FILES = COPYING +XAPP_XMH_DEPENDENCIES = xlib_libXaw xdata_xbitmaps + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xmodmap/Config.in b/package/x11r7/xapp_xmodmap/Config.in new file mode 100644 index 00000000..9be79abf --- /dev/null +++ b/package/x11r7/xapp_xmodmap/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XMODMAP + bool "xmodmap" + select BR2_PACKAGE_XLIB_LIBX11 + help + utility for modifying keymaps and pointer button mappings in X diff --git a/package/x11r7/xapp_xmodmap/xapp_xmodmap.hash b/package/x11r7/xapp_xmodmap/xapp_xmodmap.hash new file mode 100644 index 00000000..db3d8f33 --- /dev/null +++ b/package/x11r7/xapp_xmodmap/xapp_xmodmap.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-July/003176.html +sha256 9a2f8168f7b0bc382828847403902cb6bf175e17658b36189eac87edda877e81 xmodmap-1.0.11.tar.xz +sha512 a78f916f048d2017f079733becc99232c087c360ece61ec6c4fa4b5b130b96a1b10c4ce1b64a15bdcab7ea05de3c7f16035503d5be6f8ce1a7612ce71d558510 xmodmap-1.0.11.tar.xz +# Locally computed +sha256 c149563cf2cb0ecfb1148b6eb8f604c62bed43452a0d0fbafb97286a97840f5c COPYING diff --git a/package/x11r7/xapp_xmodmap/xapp_xmodmap.mk b/package/x11r7/xapp_xmodmap/xapp_xmodmap.mk new file mode 100644 index 00000000..8fcb4716 --- /dev/null +++ b/package/x11r7/xapp_xmodmap/xapp_xmodmap.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xmodmap +# +################################################################################ + +XAPP_XMODMAP_VERSION = 1.0.11 +XAPP_XMODMAP_SOURCE = xmodmap-$(XAPP_XMODMAP_VERSION).tar.xz +XAPP_XMODMAP_SITE = https://xorg.freedesktop.org/releases/individual/app +XAPP_XMODMAP_LICENSE = MIT +XAPP_XMODMAP_LICENSE_FILES = COPYING +XAPP_XMODMAP_DEPENDENCIES = xlib_libX11 + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xmore/Config.in b/package/x11r7/xapp_xmore/Config.in new file mode 100644 index 00000000..80c3950b --- /dev/null +++ b/package/x11r7/xapp_xmore/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XMORE + bool "xmore" + select BR2_PACKAGE_XLIB_LIBXAW + help + plain text display program for the X Window System diff --git a/package/x11r7/xapp_xmore/xapp_xmore.hash b/package/x11r7/xapp_xmore/xapp_xmore.hash new file mode 100644 index 00000000..960a1e5f --- /dev/null +++ b/package/x11r7/xapp_xmore/xapp_xmore.hash @@ -0,0 +1,7 @@ +# From https://lists.x.org/archives/xorg-announce/2019-March/002964.html +md5 8e1279352192e4142740c21db58f9be9 xmore-1.0.3.tar.bz2 +sha1 b57b92afd783d28c4c505e0c95556939f24c3ec9 xmore-1.0.3.tar.bz2 +sha256 644a1e0d5182d7708d413722d0579a587dc56b9a8cb60640df076d302e09251b xmore-1.0.3.tar.bz2 +sha512 e3e44831cd87a54bb585f80ef0d87f69dc35f6c834a73241aad9f6e2b0999b53c51a0a3f915a94ae4d6dc9bdfb9f60b6576f0bdcec441443abd98efa6c51b1d3 xmore-1.0.3.tar.bz2 +# Locally computed +sha256 27d8cbdcde7a0bd062ce49cdf8c672201452a64e3e6823f09b1beffe2c4b8eff COPYING diff --git a/package/x11r7/xapp_xmore/xapp_xmore.mk b/package/x11r7/xapp_xmore/xapp_xmore.mk new file mode 100644 index 00000000..f8a3ba8c --- /dev/null +++ b/package/x11r7/xapp_xmore/xapp_xmore.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xmore +# +################################################################################ + +XAPP_XMORE_VERSION = 1.0.3 +XAPP_XMORE_SOURCE = xmore-$(XAPP_XMORE_VERSION).tar.bz2 +XAPP_XMORE_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XMORE_LICENSE = MIT +XAPP_XMORE_LICENSE_FILES = COPYING +XAPP_XMORE_DEPENDENCIES = xlib_libXaw + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xpr/Config.in b/package/x11r7/xapp_xpr/Config.in new file mode 100644 index 00000000..0710d62a --- /dev/null +++ b/package/x11r7/xapp_xpr/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XPR + bool "xpr" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + help + X.Org xpr application diff --git a/package/x11r7/xapp_xpr/xapp_xpr.hash b/package/x11r7/xapp_xpr/xapp_xpr.hash new file mode 100644 index 00000000..28ebd778 --- /dev/null +++ b/package/x11r7/xapp_xpr/xapp_xpr.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-July/003177.html +sha256 a0bbb11475366622632440b1c6f16d19964b4516483232fe5f46c169528557c5 xpr-1.1.0.tar.xz +sha512 53eb896cf1844036a13b1018ffcecbc6a0a56eebe0d7cb6331dbe691207498d2c41f3791655b7fc081acfef2ed9904987f363b710bf0eeff6c8d33f819a951cb xpr-1.1.0.tar.xz +# Locally computed +sha256 5e8ff9b5d3fc86b5d0bc5957c9ee0aa1a6d0fb9a6b116aae70762b628a0d5069 COPYING diff --git a/package/x11r7/xapp_xpr/xapp_xpr.mk b/package/x11r7/xapp_xpr/xapp_xpr.mk new file mode 100644 index 00000000..4db4cd33 --- /dev/null +++ b/package/x11r7/xapp_xpr/xapp_xpr.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xpr +# +################################################################################ + +XAPP_XPR_VERSION = 1.1.0 +XAPP_XPR_SOURCE = xpr-$(XAPP_XPR_VERSION).tar.xz +XAPP_XPR_SITE = https://xorg.freedesktop.org/releases/individual/app +XAPP_XPR_LICENSE = MIT +XAPP_XPR_LICENSE_FILES = COPYING +XAPP_XPR_DEPENDENCIES = xlib_libX11 xlib_libXmu + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xprop/Config.in b/package/x11r7/xapp_xprop/Config.in new file mode 100644 index 00000000..314e79f6 --- /dev/null +++ b/package/x11r7/xapp_xprop/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XPROP + bool "xprop" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + help + property displayer for X diff --git a/package/x11r7/xapp_xprop/xapp_xprop.hash b/package/x11r7/xapp_xprop/xapp_xprop.hash new file mode 100644 index 00000000..9db2fb91 --- /dev/null +++ b/package/x11r7/xapp_xprop/xapp_xprop.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003269.html +sha256 580b8525b12ecc0144aa16c88b0aafa76d2e799b44c8c6c50f9ce92788b5586e xprop-1.2.6.tar.xz +sha512 ab25d4b8bf9de8fb37149060ad4870ffed4d6846ac3b31903a42c36301fcb0d50d3ba15949fdd9079507db97d3f05d4bbd11711d825e5470482cc30772cc3f25 xprop-1.2.6.tar.xz +# Locally computed +sha256 f19ff982936cca133b9593a6561c3817512207e0b4c951d0e4eb5956d30d4415 COPYING diff --git a/package/x11r7/xapp_xprop/xapp_xprop.mk b/package/x11r7/xapp_xprop/xapp_xprop.mk new file mode 100644 index 00000000..888e9d3a --- /dev/null +++ b/package/x11r7/xapp_xprop/xapp_xprop.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xprop +# +################################################################################ + +XAPP_XPROP_VERSION = 1.2.6 +XAPP_XPROP_SOURCE = xprop-$(XAPP_XPROP_VERSION).tar.xz +XAPP_XPROP_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XPROP_LICENSE = MIT +XAPP_XPROP_LICENSE_FILES = COPYING +XAPP_XPROP_DEPENDENCIES = xlib_libX11 xlib_libXmu + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xrandr/Config.in b/package/x11r7/xapp_xrandr/Config.in new file mode 100644 index 00000000..fe9bd4e9 --- /dev/null +++ b/package/x11r7/xapp_xrandr/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XRANDR + bool "xrandr" + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_XLIB_LIBX11 + help + primitive command line interface to RandR extension diff --git a/package/x11r7/xapp_xrandr/xapp_xrandr.hash b/package/x11r7/xapp_xrandr/xapp_xrandr.hash new file mode 100644 index 00000000..a407326b --- /dev/null +++ b/package/x11r7/xapp_xrandr/xapp_xrandr.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003270.html +sha256 c8bee4790d9058bacc4b6246456c58021db58a87ddda1a9d0139bf5f18f1f240 xrandr-1.5.2.tar.xz +sha512 b536e8f1e04094894aa52ae496725c58691b043860b3327c41d737b07b642a939733321b62f698032b11ba857208a6177600a3ca3295ff1be6ade4341cdc2747 xrandr-1.5.2.tar.xz +# Locally computed +sha256 0dd9a3d62c48dd7b87790029e39fb5e11756d33fded3bc1644e11585c87b2038 COPYING diff --git a/package/x11r7/xapp_xrandr/xapp_xrandr.mk b/package/x11r7/xapp_xrandr/xapp_xrandr.mk new file mode 100644 index 00000000..d6b39b51 --- /dev/null +++ b/package/x11r7/xapp_xrandr/xapp_xrandr.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xapp_xrandr +# +################################################################################ + +XAPP_XRANDR_VERSION = 1.5.2 +XAPP_XRANDR_SOURCE = xrandr-$(XAPP_XRANDR_VERSION).tar.xz +XAPP_XRANDR_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XRANDR_LICENSE = MIT +XAPP_XRANDR_LICENSE_FILES = COPYING +XAPP_XRANDR_DEPENDENCIES = xlib_libXrandr xlib_libX11 +XAPP_XRANDR_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xrdb/Config.in b/package/x11r7/xapp_xrdb/Config.in new file mode 100644 index 00000000..8c078570 --- /dev/null +++ b/package/x11r7/xapp_xrdb/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XRDB + bool "xrdb" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + help + X server resource database utility diff --git a/package/x11r7/xapp_xrdb/xapp_xrdb.hash b/package/x11r7/xapp_xrdb/xapp_xrdb.hash new file mode 100644 index 00000000..d8b56bf2 --- /dev/null +++ b/package/x11r7/xapp_xrdb/xapp_xrdb.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-June/003401.html +sha256 31f5fcab231b38f255b00b066cf7ea3b496df712c9eb2d0d50c670b63e5033f4 xrdb-1.2.2.tar.xz +sha512 c8a6fc94e270e9cb5602e055150553de103d545298285157ecd8924f163a10ebeb9acfff56d1fafbf48d339809c76340213792478cdf3270012d3cd05486001c xrdb-1.2.2.tar.xz +# Locally computed +sha256 ca1b3e2f9f37c35876b69a9c1c5a7860fae59b7ba87a1d2dc541b722e29b1ecc COPYING diff --git a/package/x11r7/xapp_xrdb/xapp_xrdb.mk b/package/x11r7/xapp_xrdb/xapp_xrdb.mk new file mode 100644 index 00000000..769c5a06 --- /dev/null +++ b/package/x11r7/xapp_xrdb/xapp_xrdb.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xrdb +# +################################################################################ + +XAPP_XRDB_VERSION = 1.2.2 +XAPP_XRDB_SOURCE = xrdb-$(XAPP_XRDB_VERSION).tar.xz +XAPP_XRDB_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XRDB_LICENSE = MIT +XAPP_XRDB_LICENSE_FILES = COPYING +XAPP_XRDB_DEPENDENCIES = xlib_libX11 xlib_libXmu + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xrefresh/Config.in b/package/x11r7/xapp_xrefresh/Config.in new file mode 100644 index 00000000..16b1e50b --- /dev/null +++ b/package/x11r7/xapp_xrefresh/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XREFRESH + bool "xrefresh" + select BR2_PACKAGE_XLIB_LIBX11 + help + refresh all or part of an X screen diff --git a/package/x11r7/xapp_xrefresh/xapp_xrefresh.hash b/package/x11r7/xapp_xrefresh/xapp_xrefresh.hash new file mode 100644 index 00000000..a83bc849 --- /dev/null +++ b/package/x11r7/xapp_xrefresh/xapp_xrefresh.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-July/003188.html +sha256 a9f1d635f2f42283d0174e94d09ab69190c227faa5ab542bfe15ed9607771b1e xrefresh-1.0.7.tar.xz +sha512 8fcbb01aa368944ca536f050ab194b21bbd6b2a56265a7ed5807882e5c2f9660105283cdba0ea35b3e4a17a015586aeb82906e081da030332dfc49169a191c31 xrefresh-1.0.7.tar.xz +# Locally computed +sha256 4f51c9a91cd277697cbea6604bf4cb240c1ed14cdba82550cb9cac8f1286f663 COPYING diff --git a/package/x11r7/xapp_xrefresh/xapp_xrefresh.mk b/package/x11r7/xapp_xrefresh/xapp_xrefresh.mk new file mode 100644 index 00000000..9affbd46 --- /dev/null +++ b/package/x11r7/xapp_xrefresh/xapp_xrefresh.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xrefresh +# +################################################################################ + +XAPP_XREFRESH_VERSION = 1.0.7 +XAPP_XREFRESH_SOURCE = xrefresh-$(XAPP_XREFRESH_VERSION).tar.xz +XAPP_XREFRESH_SITE = https://xorg.freedesktop.org/releases/individual/app +XAPP_XREFRESH_LICENSE = MIT +XAPP_XREFRESH_LICENSE_FILES = COPYING +XAPP_XREFRESH_DEPENDENCIES = xlib_libX11 + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xset/Config.in b/package/x11r7/xapp_xset/Config.in new file mode 100644 index 00000000..71497ab7 --- /dev/null +++ b/package/x11r7/xapp_xset/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XSET + bool "xset" + select BR2_PACKAGE_XLIB_LIBXMU + help + X.Org xset application diff --git a/package/x11r7/xapp_xset/xapp_xset.hash b/package/x11r7/xapp_xset/xapp_xset.hash new file mode 100644 index 00000000..dea34a1a --- /dev/null +++ b/package/x11r7/xapp_xset/xapp_xset.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003271.html +sha256 9f692d55635b3862cd63633b1222a87680ec283c7a8e8ed6dd698a3147f75e2f xset-1.2.5.tar.xz +sha512 12b53d7cd6b7ccf6515c03f68151490fce6b2629e99b8d85ac5d760f4ed93394a457213c3947533809fbbb04acd1ed260aeea1256099a10397660eef3088150d xset-1.2.5.tar.xz +# Locally computed +sha256 6bfc619b6d37dd0e6ca575edcb3a05194136e04d1d9989b8e14e6f7850587382 COPYING diff --git a/package/x11r7/xapp_xset/xapp_xset.mk b/package/x11r7/xapp_xset/xapp_xset.mk new file mode 100644 index 00000000..498e6a12 --- /dev/null +++ b/package/x11r7/xapp_xset/xapp_xset.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xset +# +################################################################################ + +XAPP_XSET_VERSION = 1.2.5 +XAPP_XSET_SOURCE = xset-$(XAPP_XSET_VERSION).tar.xz +XAPP_XSET_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XSET_LICENSE = MIT +XAPP_XSET_LICENSE_FILES = COPYING +XAPP_XSET_DEPENDENCIES = xlib_libXmu + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xsetmode/Config.in b/package/x11r7/xapp_xsetmode/Config.in new file mode 100644 index 00000000..a08e02d7 --- /dev/null +++ b/package/x11r7/xapp_xsetmode/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XSETMODE + bool "xsetmode" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXI + help + set the mode for an X Input device diff --git a/package/x11r7/xapp_xsetmode/xapp_xsetmode.hash b/package/x11r7/xapp_xsetmode/xapp_xsetmode.hash new file mode 100644 index 00000000..5d4e1645 --- /dev/null +++ b/package/x11r7/xapp_xsetmode/xapp_xsetmode.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 988b47cd922991c6e6adbce15dc386ac75690b61744b526c3af5a4eaa9afa0aa xsetmode-1.0.0.tar.bz2 +sha256 8f22998f14924220f0f530660811d24e5371a8d7672287c9d22f1eafb7256863 COPYING diff --git a/package/x11r7/xapp_xsetmode/xapp_xsetmode.mk b/package/x11r7/xapp_xsetmode/xapp_xsetmode.mk new file mode 100644 index 00000000..c4599a9b --- /dev/null +++ b/package/x11r7/xapp_xsetmode/xapp_xsetmode.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xsetmode +# +################################################################################ + +XAPP_XSETMODE_VERSION = 1.0.0 +XAPP_XSETMODE_SOURCE = xsetmode-$(XAPP_XSETMODE_VERSION).tar.bz2 +XAPP_XSETMODE_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XSETMODE_LICENSE = MIT +XAPP_XSETMODE_LICENSE_FILES = COPYING +XAPP_XSETMODE_DEPENDENCIES = xlib_libX11 xlib_libXi + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xsetpointer/Config.in b/package/x11r7/xapp_xsetpointer/Config.in new file mode 100644 index 00000000..0deb6d81 --- /dev/null +++ b/package/x11r7/xapp_xsetpointer/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XAPP_XSETPOINTER + bool "xsetpointer" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXI + select BR2_PACKAGE_XORGPROTO + help + set an X Input device as the main pointer diff --git a/package/x11r7/xapp_xsetpointer/xapp_xsetpointer.hash b/package/x11r7/xapp_xsetpointer/xapp_xsetpointer.hash new file mode 100644 index 00000000..c7550eae --- /dev/null +++ b/package/x11r7/xapp_xsetpointer/xapp_xsetpointer.hash @@ -0,0 +1,6 @@ +# From https://lists.freedesktop.org/archives/xorg-announce/2006-November/000150.html +md5 9e5bcbeda4aaf02bfa095e41d30baee4 xsetpointer-1.0.1.tar.bz2 +sha1 a8b01c6f27625a6f6943f9be17b1e5511f69d710 xsetpointer-1.0.1.tar.bz2 +# locally computed +sha256 495d88871eb5081e98bbae55f813f73cb3ce4145d6ca3e8f2826800166c04571 xsetpointer-1.0.1.tar.bz2 +sha256 8f22998f14924220f0f530660811d24e5371a8d7672287c9d22f1eafb7256863 COPYING diff --git a/package/x11r7/xapp_xsetpointer/xapp_xsetpointer.mk b/package/x11r7/xapp_xsetpointer/xapp_xsetpointer.mk new file mode 100644 index 00000000..21630eb7 --- /dev/null +++ b/package/x11r7/xapp_xsetpointer/xapp_xsetpointer.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xsetpointer +# +################################################################################ + +XAPP_XSETPOINTER_VERSION = 1.0.1 +XAPP_XSETPOINTER_SOURCE = xsetpointer-$(XAPP_XSETPOINTER_VERSION).tar.bz2 +XAPP_XSETPOINTER_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XSETPOINTER_LICENSE = MIT +XAPP_XSETPOINTER_LICENSE_FILES = COPYING +XAPP_XSETPOINTER_DEPENDENCIES = xlib_libX11 xlib_libXi xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xsetroot/Config.in b/package/x11r7/xapp_xsetroot/Config.in new file mode 100644 index 00000000..a70df80d --- /dev/null +++ b/package/x11r7/xapp_xsetroot/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_XSETROOT + bool "xsetroot" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + select BR2_PACKAGE_XLIB_LIBXCURSOR + select BR2_PACKAGE_XDATA_XBITMAPS + help + X.Org xsetroot application diff --git a/package/x11r7/xapp_xsetroot/xapp_xsetroot.hash b/package/x11r7/xapp_xsetroot/xapp_xsetroot.hash new file mode 100644 index 00000000..43f7cd66 --- /dev/null +++ b/package/x11r7/xapp_xsetroot/xapp_xsetroot.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003240.html +sha256 6081b45a9eb4426e045d259d1e144b32417fb635e5b96aa90647365ac96638d1 xsetroot-1.1.3.tar.xz +sha512 f333d1bfd92bb943044da36331ae2cf68a811c8f3891719d9ebc1749e2dd0c67068f86face0794c3c4ae584c4dd189bad4998dccb38fe1ac37a8921e5713e7c0 xsetroot-1.1.3.tar.xz +# Locally computed +sha256 48e9c9572e0dc1c14b93b753542f780e7751dd7f035816374d8a8be0211a4520 COPYING diff --git a/package/x11r7/xapp_xsetroot/xapp_xsetroot.mk b/package/x11r7/xapp_xsetroot/xapp_xsetroot.mk new file mode 100644 index 00000000..1ffbb2b6 --- /dev/null +++ b/package/x11r7/xapp_xsetroot/xapp_xsetroot.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xsetroot +# +################################################################################ + +XAPP_XSETROOT_VERSION = 1.1.3 +XAPP_XSETROOT_SOURCE = xsetroot-$(XAPP_XSETROOT_VERSION).tar.xz +XAPP_XSETROOT_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XSETROOT_LICENSE = MIT +XAPP_XSETROOT_LICENSE_FILES = COPYING +XAPP_XSETROOT_DEPENDENCIES = xlib_libX11 xlib_libXmu xlib_libXcursor xdata_xbitmaps + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xsm/Config.in b/package/x11r7/xapp_xsm/Config.in new file mode 100644 index 00000000..88f20cf6 --- /dev/null +++ b/package/x11r7/xapp_xsm/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XSM + bool "xsm" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBXAW + help + X Session Manager diff --git a/package/x11r7/xapp_xsm/xapp_xsm.hash b/package/x11r7/xapp_xsm/xapp_xsm.hash new file mode 100644 index 00000000..9568836b --- /dev/null +++ b/package/x11r7/xapp_xsm/xapp_xsm.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-April/003152.html +sha256 9c30fdaa3fc132e4ff201cfc478669056e6e15502e77df88df11fb94e4e6fb2d xsm-1.0.5.tar.xz +sha512 df3777b3aab813ec8aa906f5a03f93b8ca645978970290cf7baf732e175c36c00ae19baeb45ea7404d35838c21e6f8fca28f0da3e2f398d17adac5f2acb7b351 xsm-1.0.5.tar.xz +# Locally computed +sha256 5531d18cfcc944dab39991f63f182cbbce3fe493ba0c7cf08a25c0d01ee84482 COPYING diff --git a/package/x11r7/xapp_xsm/xapp_xsm.mk b/package/x11r7/xapp_xsm/xapp_xsm.mk new file mode 100644 index 00000000..1c73f5c6 --- /dev/null +++ b/package/x11r7/xapp_xsm/xapp_xsm.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xsm +# +################################################################################ + +XAPP_XSM_VERSION = 1.0.5 +XAPP_XSM_SOURCE = xsm-$(XAPP_XSM_VERSION).tar.xz +XAPP_XSM_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XSM_LICENSE = MIT +XAPP_XSM_LICENSE_FILES = COPYING +XAPP_XSM_DEPENDENCIES = xlib_libXaw + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xstdcmap/Config.in b/package/x11r7/xapp_xstdcmap/Config.in new file mode 100644 index 00000000..f15c36b8 --- /dev/null +++ b/package/x11r7/xapp_xstdcmap/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XSTDCMAP + bool "xstdcmap" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + help + X standard colormap utility diff --git a/package/x11r7/xapp_xstdcmap/xapp_xstdcmap.hash b/package/x11r7/xapp_xstdcmap/xapp_xstdcmap.hash new file mode 100644 index 00000000..028980bd --- /dev/null +++ b/package/x11r7/xapp_xstdcmap/xapp_xstdcmap.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003272.html +sha256 365847e379398499ec9ad9a299cc47a0d6e7feba9546dfd4e5b422204b5ac180 xstdcmap-1.0.5.tar.xz +sha512 3f2047af1d328a34d38ededc13de00298db3300eab1d1dbdff7d2aa4a3cd543a79305bfbd2e6424c5e023cf866a4f7a70aa9a3014444d543268d2f812a322a49 xstdcmap-1.0.5.tar.xz +# Locally computed +sha256 f0a362fc1b8e788845b1c0ad7ba9ade58fdfb73da750c3b9780db5d70b947657 COPYING diff --git a/package/x11r7/xapp_xstdcmap/xapp_xstdcmap.mk b/package/x11r7/xapp_xstdcmap/xapp_xstdcmap.mk new file mode 100644 index 00000000..60825556 --- /dev/null +++ b/package/x11r7/xapp_xstdcmap/xapp_xstdcmap.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xstdcmap +# +################################################################################ + +XAPP_XSTDCMAP_VERSION = 1.0.5 +XAPP_XSTDCMAP_SOURCE = xstdcmap-$(XAPP_XSTDCMAP_VERSION).tar.xz +XAPP_XSTDCMAP_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XSTDCMAP_LICENSE = MIT +XAPP_XSTDCMAP_LICENSE_FILES = COPYING +XAPP_XSTDCMAP_DEPENDENCIES = xlib_libX11 xlib_libXmu + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xvidtune/Config.in b/package/x11r7/xapp_xvidtune/Config.in new file mode 100644 index 00000000..b1902cd9 --- /dev/null +++ b/package/x11r7/xapp_xvidtune/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XVIDTUNE + bool "xvidtune" + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXXF86VM + help + video mode tuner for Xorg diff --git a/package/x11r7/xapp_xvidtune/xapp_xvidtune.hash b/package/x11r7/xapp_xvidtune/xapp_xvidtune.hash new file mode 100644 index 00000000..0e7e2313 --- /dev/null +++ b/package/x11r7/xapp_xvidtune/xapp_xvidtune.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-February/003319.html +sha256 0d4eecd54e440cc11f1bdaaa23180fcf890f003444343f533f639086b05b2cc5 xvidtune-1.0.4.tar.xz +sha512 747d5358f4f7d3d7db508c3f034711ce4b9dd278160d35312e9c4d1604623e84a2438d039b536546fd2df7db8c5ea1907e8a6101985fad2932b6dee5a62c7b80 xvidtune-1.0.4.tar.xz +# Locally computed +sha256 f3da8eaed19e27e4f67e6f076d4ebdb8d649e15a8ad33a415fb65a23de1b6689 COPYING diff --git a/package/x11r7/xapp_xvidtune/xapp_xvidtune.mk b/package/x11r7/xapp_xvidtune/xapp_xvidtune.mk new file mode 100644 index 00000000..cc40d390 --- /dev/null +++ b/package/x11r7/xapp_xvidtune/xapp_xvidtune.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xvidtune +# +################################################################################ + +XAPP_XVIDTUNE_VERSION = 1.0.4 +XAPP_XVIDTUNE_SOURCE = xvidtune-$(XAPP_XVIDTUNE_VERSION).tar.xz +XAPP_XVIDTUNE_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XVIDTUNE_LICENSE = MIT +XAPP_XVIDTUNE_LICENSE_FILES = COPYING +XAPP_XVIDTUNE_DEPENDENCIES = xlib_libXaw xlib_libXxf86vm + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xvinfo/Config.in b/package/x11r7/xapp_xvinfo/Config.in new file mode 100644 index 00000000..2612c047 --- /dev/null +++ b/package/x11r7/xapp_xvinfo/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XVINFO + bool "xvinfo" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXV + help + Print out X-Video extension adaptor information diff --git a/package/x11r7/xapp_xvinfo/xapp_xvinfo.hash b/package/x11r7/xapp_xvinfo/xapp_xvinfo.hash new file mode 100644 index 00000000..7dd5820c --- /dev/null +++ b/package/x11r7/xapp_xvinfo/xapp_xvinfo.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003273.html +sha256 3ede71ecb26d9614ccbc6916720285e95a2c7e0c5e19b8570eaaf72ad7c5c404 xvinfo-1.1.5.tar.xz +sha512 18467161b248c68f6bde15e1c1b4b8cf812daf46777602558aee5fb7cb4d2649218de88fa93842fea4f316d954440f03a37d71fa4fda92eda3c7d80970e19cbb xvinfo-1.1.5.tar.xz +# Locally computed +sha256 7725b0484faa1832534814ecb577f5a86acc74f1bcce25f92c55dfc1b693717d COPYING diff --git a/package/x11r7/xapp_xvinfo/xapp_xvinfo.mk b/package/x11r7/xapp_xvinfo/xapp_xvinfo.mk new file mode 100644 index 00000000..6fa392f0 --- /dev/null +++ b/package/x11r7/xapp_xvinfo/xapp_xvinfo.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xvinfo +# +################################################################################ + +XAPP_XVINFO_VERSION = 1.1.5 +XAPP_XVINFO_SOURCE = xvinfo-$(XAPP_XVINFO_VERSION).tar.xz +XAPP_XVINFO_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XVINFO_LICENSE = MIT +XAPP_XVINFO_LICENSE_FILES = COPYING +XAPP_XVINFO_DEPENDENCIES = xlib_libX11 xlib_libXv + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xwd/Config.in b/package/x11r7/xapp_xwd/Config.in new file mode 100644 index 00000000..ada4820f --- /dev/null +++ b/package/x11r7/xapp_xwd/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XAPP_XWD + bool "xwd" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXKBFILE + select BR2_PACKAGE_XLIB_LIBXMU + help + dump an image of an X window diff --git a/package/x11r7/xapp_xwd/xapp_xwd.hash b/package/x11r7/xapp_xwd/xapp_xwd.hash new file mode 100644 index 00000000..cc81b05c --- /dev/null +++ b/package/x11r7/xapp_xwd/xapp_xwd.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-June/003400.html +sha256 dc121b84947eb4a3d1131bff1e9844cfa2124d95b47b35f9932340fa931fbd3f xwd-1.0.9.tar.xz +sha512 ae59661b05160f5658920fd79031b6b8548cb7bbfc734194edb0acef5c95f76b210ca4443e9506fc1a0cb9df47ee7c22948502971afe578b44c75aa2a1138d56 xwd-1.0.9.tar.xz +# Locally computed +sha256 7cfda56afd92a1ecd2f23bd0064e01b5141053390d854785504adfe2c0fbd946 COPYING diff --git a/package/x11r7/xapp_xwd/xapp_xwd.mk b/package/x11r7/xapp_xwd/xapp_xwd.mk new file mode 100644 index 00000000..8960aaff --- /dev/null +++ b/package/x11r7/xapp_xwd/xapp_xwd.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xwd +# +################################################################################ + +XAPP_XWD_VERSION = 1.0.9 +XAPP_XWD_SOURCE = xwd-$(XAPP_XWD_VERSION).tar.xz +XAPP_XWD_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XWD_LICENSE = MIT +XAPP_XWD_LICENSE_FILES = COPYING +XAPP_XWD_DEPENDENCIES = xlib_libX11 xlib_libXmu xlib_libxkbfile + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xwininfo/Config.in b/package/x11r7/xapp_xwininfo/Config.in new file mode 100644 index 00000000..4e095707 --- /dev/null +++ b/package/x11r7/xapp_xwininfo/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XWININFO + bool "xwininfo" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + help + window information utility for X diff --git a/package/x11r7/xapp_xwininfo/xapp_xwininfo.hash b/package/x11r7/xapp_xwininfo/xapp_xwininfo.hash new file mode 100644 index 00000000..bbf2e373 --- /dev/null +++ b/package/x11r7/xapp_xwininfo/xapp_xwininfo.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-April/003379.html +sha256 3518897c17448df9ba99ad6d9bb1ca0f17bc0ed7c0fd61281b34ceed29a9253f xwininfo-1.1.6.tar.xz +sha512 c6df4ed3dcf97772450612f2786ecab8313a43bb78e0b8020cc9ec228b3f466f55090313ad02c8159a73a6892d117322ad85e28d9d76e38bb84c9750712c20bc xwininfo-1.1.6.tar.xz +# Locally computed +sha256 1be1f0763a5efd08e48089c52728a822bf769b690a2fd82fbab456cfffee822f COPYING diff --git a/package/x11r7/xapp_xwininfo/xapp_xwininfo.mk b/package/x11r7/xapp_xwininfo/xapp_xwininfo.mk new file mode 100644 index 00000000..196b73c8 --- /dev/null +++ b/package/x11r7/xapp_xwininfo/xapp_xwininfo.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xwininfo +# +################################################################################ + +XAPP_XWININFO_VERSION = 1.1.6 +XAPP_XWININFO_SOURCE = xwininfo-$(XAPP_XWININFO_VERSION).tar.xz +XAPP_XWININFO_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_XWININFO_LICENSE = MIT +XAPP_XWININFO_LICENSE_FILES = COPYING +XAPP_XWININFO_DEPENDENCIES = xlib_libX11 xlib_libXmu + +$(eval $(autotools-package)) diff --git a/package/x11r7/xapp_xwud/Config.in b/package/x11r7/xapp_xwud/Config.in new file mode 100644 index 00000000..cb8337e9 --- /dev/null +++ b/package/x11r7/xapp_xwud/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XWUD + bool "xwud" + select BR2_PACKAGE_XLIB_LIBX11 + help + image displayer for X diff --git a/package/x11r7/xapp_xwud/xapp_xwud.hash b/package/x11r7/xapp_xwud/xapp_xwud.hash new file mode 100644 index 00000000..c47d6d88 --- /dev/null +++ b/package/x11r7/xapp_xwud/xapp_xwud.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-July/003179.html +sha256 64048cd15eba3cd9a3d2e3280650391259ebf6b529f2101d1a20f441038c1afe xwud-1.0.6.tar.xz +sha512 a7b964d9ef13e4726b2ef84dcc1040cdf510c8031c3e6e1dc1c711e65d9e56f1fc5921a7af3dbbd898b861c79e9da6242da23c2e73816e39152ae719052293e9 xwud-1.0.6.tar.xz +# Locally computed +sha256 be3db9aa060c462490a8c1ed44a4d059b32bba359f4688b1ecf3f794d363539e COPYING diff --git a/package/x11r7/xapp_xwud/xapp_xwud.mk b/package/x11r7/xapp_xwud/xapp_xwud.mk new file mode 100644 index 00000000..0ad001d9 --- /dev/null +++ b/package/x11r7/xapp_xwud/xapp_xwud.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xwud +# +################################################################################ + +XAPP_XWUD_VERSION = 1.0.6 +XAPP_XWUD_SOURCE = xwud-$(XAPP_XWUD_VERSION).tar.xz +XAPP_XWUD_SITE = https://xorg.freedesktop.org/releases/individual/app +XAPP_XWUD_LICENSE = MIT +XAPP_XWUD_LICENSE_FILES = COPYING +XAPP_XWUD_DEPENDENCIES = xlib_libX11 + +$(eval $(autotools-package)) diff --git a/package/x11r7/xcb-proto/Config.in b/package/x11r7/xcb-proto/Config.in new file mode 100644 index 00000000..a4c93831 --- /dev/null +++ b/package/x11r7/xcb-proto/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XCB_PROTO + bool "xcb-proto" + help + The protocol headers that define XCB. + + http://xcb.freedesktop.org/ diff --git a/package/x11r7/xcb-proto/xcb-proto.hash b/package/x11r7/xcb-proto/xcb-proto.hash new file mode 100644 index 00000000..1a49710d --- /dev/null +++ b/package/x11r7/xcb-proto/xcb-proto.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-June/003170.html +sha256 7072beb1f680a2fe3f9e535b797c146d22528990c72f63ddb49d2f350a3653ed xcb-proto-1.15.2.tar.xz +sha512 9d0b2f0a4dbbf2d64e32ff4658d1663e13d7e5f1bffc1e8d45be7b9dd5bab46e29fc1c2f6e66a7a569e374ba6756faf3c39b0b5e5560df6d7f8b68beec97659d xcb-proto-1.15.2.tar.xz +# Locally computed +sha256 c5ffbfeaa501071ceeb97b7de2c0d703fdaa35de01c0fb6cbac1c28453a3e9fd COPYING diff --git a/package/x11r7/xcb-proto/xcb-proto.mk b/package/x11r7/xcb-proto/xcb-proto.mk new file mode 100644 index 00000000..324b2942 --- /dev/null +++ b/package/x11r7/xcb-proto/xcb-proto.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# xcb-proto +# +################################################################################ + +XCB_PROTO_VERSION = 1.15.2 +XCB_PROTO_SOURCE = xcb-proto-$(XCB_PROTO_VERSION).tar.xz +XCB_PROTO_SITE = https://xorg.freedesktop.org/archive/individual/proto +XCB_PROTO_LICENSE = MIT +XCB_PROTO_LICENSE_FILES = COPYING + +XCB_PROTO_INSTALL_STAGING = YES + +XCB_PROTO_DEPENDENCIES = host-python3 +HOST_XCB_PROTO_DEPENDENCIES = host-python3 + +# Force detection of Buildroot host-python3 over system python +XCB_PROTO_CONF_OPTS += ac_cv_path_PYTHON=$(HOST_DIR)/bin/python3 +HOST_XCB_PROTO_CONF_OPTS += ac_cv_path_PYTHON=$(HOST_DIR)/bin/python3 + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/x11r7/xcb-util-cursor/Config.in b/package/x11r7/xcb-util-cursor/Config.in new file mode 100644 index 00000000..aa81615c --- /dev/null +++ b/package/x11r7/xcb-util-cursor/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_XCB_UTIL_CURSOR + bool "xcb-util-cursor" + depends on BR2_PACKAGE_LIBXCB + select BR2_PACKAGE_XCB_UTIL + select BR2_PACKAGE_XCB_UTIL_IMAGE + select BR2_PACKAGE_XCB_UTIL_RENDERUTIL + help + The XCB util modules provides a number of libraries which + sit on top of libxcb, the core X protocol library, and some + of the extension libraries. These experimental libraries + provide convenience functions and interfaces which make the + raw X protocol more usable. Some of the libraries also + provide client-side code which is not strictly part of the X + protocol but which have traditionally been provided by Xlib. + + XCB util-cursor module provides the following libraries: + - cursor: port of libxcursor + + http://xcb.freedesktop.org/ diff --git a/package/x11r7/xcb-util-cursor/xcb-util-cursor.hash b/package/x11r7/xcb-util-cursor/xcb-util-cursor.hash new file mode 100644 index 00000000..ca316d3c --- /dev/null +++ b/package/x11r7/xcb-util-cursor/xcb-util-cursor.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003230.html +sha256 28dcfe90bcab7b3561abe0dd58eb6832aa9cc77cfe42fcdfa4ebe20d605231fb xcb-util-cursor-0.1.4.tar.xz +sha512 d27dd59a4d7ded9994dca77774421dd9533e3ee823b880af35d3219bd7340c89fbc61d1d0fa10e2991de2cac9e6395e09497769d7b8728eedc691e76649107b1 xcb-util-cursor-0.1.4.tar.xz +# Locally computed +sha256 0dde91ae1d443105dc9e13cbaed6674c36683b7095836ad9ddfce26be270aad5 COPYING diff --git a/package/x11r7/xcb-util-cursor/xcb-util-cursor.mk b/package/x11r7/xcb-util-cursor/xcb-util-cursor.mk new file mode 100644 index 00000000..0fb13169 --- /dev/null +++ b/package/x11r7/xcb-util-cursor/xcb-util-cursor.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xcb-util-cursor +# +################################################################################ + +XCB_UTIL_CURSOR_VERSION = 0.1.4 +XCB_UTIL_CURSOR_SITE = https://xorg.freedesktop.org/archive/individual/lib +XCB_UTIL_CURSOR_SOURCE = xcb-util-cursor-$(XCB_UTIL_CURSOR_VERSION).tar.xz +XCB_UTIL_CURSOR_LICENSE = MIT +XCB_UTIL_CURSOR_LICENSE_FILES = COPYING +XCB_UTIL_CURSOR_INSTALL_STAGING = YES +XCB_UTIL_CURSOR_DEPENDENCIES = xcb-util xcb-util-image xcb-util-renderutil + +$(eval $(autotools-package)) diff --git a/package/x11r7/xcb-util-image/Config.in b/package/x11r7/xcb-util-image/Config.in new file mode 100644 index 00000000..c8d7ef8a --- /dev/null +++ b/package/x11r7/xcb-util-image/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_XCB_UTIL_IMAGE + bool "xcb-util-image" + select BR2_PACKAGE_XCB_UTIL + help + + The XCB util modules provides a number of libraries which + sit on top of libxcb, the core X protocol library, and some + of the extension libraries. These experimental libraries + provide convenience functions and interfaces which make the + raw X protocol more usable. Some of the libraries also + provide client-side code which is not strictly part of the X + protocol but which have traditionally been provided by Xlib. + + XCB util-image module provides the following library: + - image: Port of Xlib's XImage and XShmImage functions. + + http://xcb.freedesktop.org/ diff --git a/package/x11r7/xcb-util-image/xcb-util-image.hash b/package/x11r7/xcb-util-image/xcb-util-image.hash new file mode 100644 index 00000000..e200853e --- /dev/null +++ b/package/x11r7/xcb-util-image/xcb-util-image.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003231.html +sha256 ccad8ee5dadb1271fd4727ad14d9bd77a64e505608766c4e98267d9aede40d3d xcb-util-image-0.4.1.tar.xz +sha512 9b47ba38b91196d76541b6ccabeaf291d3b91036f15422909cd6a79b3fd1a9786d5b1728e411bc41cfdf3d60a253485f4ef7c65ffa6ae646fa93439ec782746e xcb-util-image-0.4.1.tar.xz +# License file, locally calculated +sha256 19672c6153d8c4870abe734fa4dd2197481a311f4788d02ad729be07e116b26b COPYING diff --git a/package/x11r7/xcb-util-image/xcb-util-image.mk b/package/x11r7/xcb-util-image/xcb-util-image.mk new file mode 100644 index 00000000..446d545e --- /dev/null +++ b/package/x11r7/xcb-util-image/xcb-util-image.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xcb-util-image +# +################################################################################ + +XCB_UTIL_IMAGE_VERSION = 0.4.1 +XCB_UTIL_IMAGE_SITE = https://xorg.freedesktop.org/archive/individual/lib +XCB_UTIL_IMAGE_SOURCE = xcb-util-image-$(XCB_UTIL_IMAGE_VERSION).tar.xz +XCB_UTIL_IMAGE_INSTALL_STAGING = YES +XCB_UTIL_IMAGE_LICENSE = MIT +XCB_UTIL_IMAGE_LICENSE_FILES = COPYING +XCB_UTIL_IMAGE_DEPENDENCIES = xcb-util + +$(eval $(autotools-package)) diff --git a/package/x11r7/xcb-util-keysyms/Config.in b/package/x11r7/xcb-util-keysyms/Config.in new file mode 100644 index 00000000..9ca2e0ef --- /dev/null +++ b/package/x11r7/xcb-util-keysyms/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_XCB_UTIL_KEYSYMS + bool "xcb-util-keysyms" + select BR2_PACKAGE_LIBXCB + help + The XCB util modules provides a number of libraries which + sit on top of libxcb, the core X protocol library, and some + of the extension libraries. These experimental libraries + provide convenience functions and interfaces which make the + raw X protocol more usable. Some of the libraries also + provide client-side code which is not strictly part of the X + protocol but which have traditionally been provided by Xlib. + + XCB util-keysyms module provides the following library: + keysyms: Standard X key constants and conversion to/from + keycodes. + + http://xcb.freedesktop.org/ diff --git a/package/x11r7/xcb-util-keysyms/xcb-util-keysyms.hash b/package/x11r7/xcb-util-keysyms/xcb-util-keysyms.hash new file mode 100644 index 00000000..20a341ca --- /dev/null +++ b/package/x11r7/xcb-util-keysyms/xcb-util-keysyms.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003233.html +sha256 7c260a5294412aed429df1da2f8afd3bd07b7cba3fec772fba15a613a6d5c638 xcb-util-keysyms-0.4.1.tar.xz +sha512 dd53a36b52647f22bf0da8cded4b2974a51899eaac799797017ed8534f14bc2d2d339a14fa5ef387ae4528b7d9a5d31920bb0c71b09ca34f58e5081e768e2bbf xcb-util-keysyms-0.4.1.tar.xz +# Locally computed +sha256 d499c1bf2c2a5f0a0498e5204d998388e308dcf2273dfbe2250a5b9a73f66537 COPYING diff --git a/package/x11r7/xcb-util-keysyms/xcb-util-keysyms.mk b/package/x11r7/xcb-util-keysyms/xcb-util-keysyms.mk new file mode 100644 index 00000000..364dc5b6 --- /dev/null +++ b/package/x11r7/xcb-util-keysyms/xcb-util-keysyms.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xcb-util-keysyms +# +################################################################################ + +XCB_UTIL_KEYSYMS_VERSION = 0.4.1 +XCB_UTIL_KEYSYMS_SOURCE = xcb-util-keysyms-$(XCB_UTIL_KEYSYMS_VERSION).tar.xz +XCB_UTIL_KEYSYMS_SITE = https://xorg.freedesktop.org/archive/individual/lib +XCB_UTIL_KEYSYMS_LICENSE = MIT +XCB_UTIL_KEYSYMS_LICENSE_FILES = COPYING +XCB_UTIL_KEYSYMS_INSTALL_STAGING = YES + +XCB_UTIL_KEYSYMS_DEPENDENCIES = host-pkgconf libxcb + +$(eval $(autotools-package)) diff --git a/package/x11r7/xcb-util-renderutil/Config.in b/package/x11r7/xcb-util-renderutil/Config.in new file mode 100644 index 00000000..088bb18f --- /dev/null +++ b/package/x11r7/xcb-util-renderutil/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_XCB_UTIL_RENDERUTIL + bool "xcb-util-renderutil" + depends on BR2_PACKAGE_LIBXCB # xcb-util + select BR2_PACKAGE_XCB_UTIL + help + The XCB util modules provides a number of libraries which + sit on top of libxcb, the core X protocol library, and some + of the extension libraries. These experimental libraries + provide convenience functions and interfaces which make the + raw X protocol more usable. Some of the libraries also + provide client-side code which is not strictly part of the X + protocol but which have traditionally been provided by Xlib. + + XCB util-renderutil module provides the following library: + - renderutil: Convenience functions for the Render + extension. + + http://xcb.freedesktop.org/ diff --git a/package/x11r7/xcb-util-renderutil/xcb-util-renderutil.hash b/package/x11r7/xcb-util-renderutil/xcb-util-renderutil.hash new file mode 100644 index 00000000..cb3ed55c --- /dev/null +++ b/package/x11r7/xcb-util-renderutil/xcb-util-renderutil.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003234.html +sha256 3e15d4f0e22d8ddbfbb9f5d77db43eacd7a304029bf25a6166cc63caa96d04ba xcb-util-renderutil-0.3.10.tar.xz +sha512 9cfa9201be2df7c0b832e1e1fe506e7c7a1e0f2b1b1d4a4b58620eadc241190a36478fa3ea27c32047fa79bf199f17dcd0b106853dbf5eda8cd584f3fc2b0c15 xcb-util-renderutil-0.3.10.tar.xz +# Locally computed +sha256 271169dd66674e9c396697af0b4822d1c59ccd2342b7740864d667a02963068b COPYING diff --git a/package/x11r7/xcb-util-renderutil/xcb-util-renderutil.mk b/package/x11r7/xcb-util-renderutil/xcb-util-renderutil.mk new file mode 100644 index 00000000..d15d19f7 --- /dev/null +++ b/package/x11r7/xcb-util-renderutil/xcb-util-renderutil.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xcb-util-renderutil +# +################################################################################ + +XCB_UTIL_RENDERUTIL_VERSION = 0.3.10 +XCB_UTIL_RENDERUTIL_SITE = https://xorg.freedesktop.org/archive/individual/lib +XCB_UTIL_RENDERUTIL_SOURCE = xcb-util-renderutil-$(XCB_UTIL_RENDERUTIL_VERSION).tar.xz +XCB_UTIL_RENDERUTIL_LICENSE = MIT +XCB_UTIL_RENDERUTIL_LICENSE_FILES = COPYING +XCB_UTIL_RENDERUTIL_INSTALL_STAGING = YES +XCB_UTIL_RENDERUTIL_DEPENDENCIES = xcb-util + +$(eval $(autotools-package)) diff --git a/package/x11r7/xcb-util-wm/Config.in b/package/x11r7/xcb-util-wm/Config.in new file mode 100644 index 00000000..26096008 --- /dev/null +++ b/package/x11r7/xcb-util-wm/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_XCB_UTIL_WM + bool "xcb-util-wm" + select BR2_PACKAGE_LIBXCB + help + The XCB util modules provides a number of libraries which + sit on top of libxcb, the core X protocol library, and some + of the extension libraries. These experimental libraries + provide convenience functions and interfaces which make the + raw X protocol more usable. Some of the libraries also + provide client-side code which is not strictly part of the X + protocol but which have traditionally been provided by Xlib. + + XCB util-wm module provides the following libraries: + - ewmh: Both client and window-manager helpers for EWMH. + - icccm: Both client and window-manager helpers for ICCCM. + + http://xcb.freedesktop.org/ diff --git a/package/x11r7/xcb-util-wm/xcb-util-wm.hash b/package/x11r7/xcb-util-wm/xcb-util-wm.hash new file mode 100644 index 00000000..7383f015 --- /dev/null +++ b/package/x11r7/xcb-util-wm/xcb-util-wm.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003235.html +sha256 62c34e21d06264687faea7edbf63632c9f04d55e72114aa4a57bb95e4f888a0b xcb-util-wm-0.4.2.tar.xz +sha512 eab6588e6a47d28a3b25ecd13b5018529419db6b49c74458c093699b60a194933be1e1f6f7799abf03344f7ebc7af88586ff2935938d53644bdd5c763a7fa9b0 xcb-util-wm-0.4.2.tar.xz +# License file, locally calculated +sha256 12ab3559977a4b22ae3030b90c64a386e6ec51ab0e4eab1ff530f81a2639400a COPYING diff --git a/package/x11r7/xcb-util-wm/xcb-util-wm.mk b/package/x11r7/xcb-util-wm/xcb-util-wm.mk new file mode 100644 index 00000000..0c4f6e86 --- /dev/null +++ b/package/x11r7/xcb-util-wm/xcb-util-wm.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xcb-util-wm +# +################################################################################ + +XCB_UTIL_WM_VERSION = 0.4.2 +XCB_UTIL_WM_SITE = https://xorg.freedesktop.org/archive/individual/lib +XCB_UTIL_WM_SOURCE = xcb-util-wm-$(XCB_UTIL_WM_VERSION).tar.xz +XCB_UTIL_WM_INSTALL_STAGING = YES +XCB_UTIL_WM_LICENSE = MIT +XCB_UTIL_WM_LICENSE_FILES = COPYING +XCB_UTIL_WM_DEPENDENCIES = libxcb + +$(eval $(autotools-package)) diff --git a/package/x11r7/xcb-util/Config.in b/package/x11r7/xcb-util/Config.in new file mode 100644 index 00000000..350afd06 --- /dev/null +++ b/package/x11r7/xcb-util/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XCB_UTIL + bool "xcb-util" + depends on BR2_PACKAGE_LIBXCB + help + Libraries which sit on top of libxcb, the core X protocol + library, and some of the extension libraries. + + http://xcb.freedesktop.org/ diff --git a/package/x11r7/xcb-util/xcb-util.hash b/package/x11r7/xcb-util/xcb-util.hash new file mode 100644 index 00000000..b9d66877 --- /dev/null +++ b/package/x11r7/xcb-util/xcb-util.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003306.html +sha256 5abe3bbbd8e54f0fa3ec945291b7e8fa8cfd3cccc43718f8758430f94126e512 xcb-util-0.4.1.tar.xz +sha512 da67f2f017d2a1788dcf35f28d6956e171303a622a1dd085cd3d69fdb2ed77965d83c557cc926ebf9b32e905eb2cbb5921987250192d78a2f5edc4d437ed7d2b xcb-util-0.4.1.tar.xz +# locally computed +sha256 325b64f0b0284e08bbb7a78ae3e55c1edc2a7cd77f603225ae4b8ffc35423e37 COPYING diff --git a/package/x11r7/xcb-util/xcb-util.mk b/package/x11r7/xcb-util/xcb-util.mk new file mode 100644 index 00000000..793c3dc7 --- /dev/null +++ b/package/x11r7/xcb-util/xcb-util.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xcb-util +# +################################################################################ + +XCB_UTIL_VERSION = 0.4.1 +XCB_UTIL_SOURCE = xcb-util-$(XCB_UTIL_VERSION).tar.xz +XCB_UTIL_SITE = https://xorg.freedesktop.org/archive/individual/lib +XCB_UTIL_LICENSE = MIT +XCB_UTIL_LICENSE_FILES = COPYING +XCB_UTIL_INSTALL_STAGING = YES +XCB_UTIL_DEPENDENCIES = libxcb + +$(eval $(autotools-package)) diff --git a/package/x11r7/xcursor-transparent-theme/0001-fix-symlink.patch b/package/x11r7/xcursor-transparent-theme/0001-fix-symlink.patch new file mode 100644 index 00000000..9cf351f2 --- /dev/null +++ b/package/x11r7/xcursor-transparent-theme/0001-fix-symlink.patch @@ -0,0 +1,37 @@ +Do not symlink to a host directory + +The installation of xcursor-transparent-theme creates many symbolic +links to the 'transp' cursor file, but it does so using an absolute +directory, that happens to point to the installation location, which +is incorrect when cross-compiling. + +Also add the -f option so that the package can be reinstalled even if +it has already been installed. + +Signed-off-by: Thomas Petazzoni + +Index: b/cursors/Makefile.am +=================================================================== +--- a/cursors/Makefile.am ++++ b/cursors/Makefile.am +@@ -91,6 +91,6 @@ + $(INSTALL_DATA) $(CURSOR_REAL) $(DESTDIR)$(CURSOR_DIR)/ + for CURSOR in $(CURSOR_NAMES); do \ + echo '-- Installing cursor '$$CURSOR; \ +- ln -s $(DESTDIR)$(CURSOR_DIR)/transp $(DESTDIR)$(CURSOR_DIR)/$$CURSOR; \ ++ ln -sf transp $(DESTDIR)$(CURSOR_DIR)/$$CURSOR; \ + done + +Index: b/cursors/Makefile.in +=================================================================== +--- a/cursors/Makefile.in ++++ b/cursors/Makefile.in +@@ -177,7 +177,7 @@ + $(INSTALL_DATA) $(CURSOR_REAL) $(DESTDIR)$(CURSOR_DIR)/ + for CURSOR in $(CURSOR_NAMES); do \ + echo '-- Installing cursor '$$CURSOR; \ +- ln -s $(DESTDIR)$(CURSOR_DIR)/transp $(DESTDIR)$(CURSOR_DIR)/$$CURSOR; \ ++ ln -sf transp $(DESTDIR)$(CURSOR_DIR)/$$CURSOR; \ + done + + # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/package/x11r7/xcursor-transparent-theme/Config.in b/package/x11r7/xcursor-transparent-theme/Config.in new file mode 100644 index 00000000..8282db89 --- /dev/null +++ b/package/x11r7/xcursor-transparent-theme/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XCURSOR_TRANSPARENT_THEME + bool "xcursor-transparent-theme" + select BR2_PACKAGE_XLIB_LIBXCURSOR + help + Completely transparent theme for hiding the X11 cursor. + + No upstream site. diff --git a/package/x11r7/xcursor-transparent-theme/index.theme b/package/x11r7/xcursor-transparent-theme/index.theme new file mode 100644 index 00000000..5300850f --- /dev/null +++ b/package/x11r7/xcursor-transparent-theme/index.theme @@ -0,0 +1,2 @@ +[Icon Theme] +Inherits=xcursor-transparent diff --git a/package/x11r7/xcursor-transparent-theme/xcursor-transparent-theme.hash b/package/x11r7/xcursor-transparent-theme/xcursor-transparent-theme.hash new file mode 100644 index 00000000..52d23076 --- /dev/null +++ b/package/x11r7/xcursor-transparent-theme/xcursor-transparent-theme.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 b26adf2d503d01299718390ae39dab4691a67220de09423be0364e9a060bf7e4 xcursor-transparent-theme-0.1.1.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/x11r7/xcursor-transparent-theme/xcursor-transparent-theme.mk b/package/x11r7/xcursor-transparent-theme/xcursor-transparent-theme.mk new file mode 100644 index 00000000..4706a522 --- /dev/null +++ b/package/x11r7/xcursor-transparent-theme/xcursor-transparent-theme.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# xcursor-transparent-theme +# +################################################################################ + +XCURSOR_TRANSPARENT_THEME_VERSION = 0.1.1 +XCURSOR_TRANSPARENT_THEME_SITE = http://downloads.yoctoproject.org/releases/matchbox/utils +XCURSOR_TRANSPARENT_THEME_DEPENDENCIES = xlib_libXcursor host-xapp_xcursorgen +XCURSOR_TRANSPARENT_THEME_LICENSE = GPL-2.0 +XCURSOR_TRANSPARENT_THEME_LICENSE_FILES = COPYING + +define XCURSOR_TRANSPARENT_THEME_ICONS_DEFAULT_CONFIG_INSTALL + $(INSTALL) -m 0755 -D package/x11r7/xcursor-transparent-theme/index.theme \ + $(TARGET_DIR)/usr/share/icons/default/index.theme +endef + +XCURSOR_TRANSPARENT_THEME_POST_INSTALL_TARGET_HOOKS += \ + XCURSOR_TRANSPARENT_THEME_ICONS_DEFAULT_CONFIG_INSTALL + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdata_xbitmaps/Config.in b/package/x11r7/xdata_xbitmaps/Config.in new file mode 100644 index 00000000..2308caec --- /dev/null +++ b/package/x11r7/xdata_xbitmaps/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XDATA_XBITMAPS + bool "xbitmaps" + help + No description available diff --git a/package/x11r7/xdata_xbitmaps/xdata_xbitmaps.hash b/package/x11r7/xdata_xbitmaps/xdata_xbitmaps.hash new file mode 100644 index 00000000..c9a39566 --- /dev/null +++ b/package/x11r7/xdata_xbitmaps/xdata_xbitmaps.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-February/003333.html +sha256 ad6cad54887832a17d86c2ccfc5e52a1dfab090f8307b152c78b0e1529cd0f7a xbitmaps-1.1.3.tar.xz +sha512 b9a7340385fcce2dcd0204f14a462685b14b72ff58f3ec53cd76695bef2b02af902bdac809622dcb27fd4075d5ba13587b5d059530aff502cd5288d161352814 xbitmaps-1.1.3.tar.xz +# Locally computed +sha256 e121ec6605558ee021674d33b1ab9306e16b9ea7d30453df42286556247be17a COPYING diff --git a/package/x11r7/xdata_xbitmaps/xdata_xbitmaps.mk b/package/x11r7/xdata_xbitmaps/xdata_xbitmaps.mk new file mode 100644 index 00000000..c8b64458 --- /dev/null +++ b/package/x11r7/xdata_xbitmaps/xdata_xbitmaps.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xdata_xbitmaps +# +################################################################################ + +XDATA_XBITMAPS_VERSION = 1.1.3 +XDATA_XBITMAPS_SOURCE = xbitmaps-$(XDATA_XBITMAPS_VERSION).tar.xz +XDATA_XBITMAPS_SITE = https://xorg.freedesktop.org/archive/individual/data +XDATA_XBITMAPS_LICENSE = MIT +XDATA_XBITMAPS_LICENSE_FILES = COPYING + +XDATA_XBITMAPS_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdata_xcursor-themes/Config.in b/package/x11r7/xdata_xcursor-themes/Config.in new file mode 100644 index 00000000..78d10209 --- /dev/null +++ b/package/x11r7/xdata_xcursor-themes/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XDATA_XCURSOR_THEMES + bool "xdata_xcursor-themes" + select BR2_PACKAGE_XLIB_LIBXCURSOR + help + No description available diff --git a/package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.hash b/package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.hash new file mode 100644 index 00000000..1bb3831c --- /dev/null +++ b/package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-February/003332.html +sha256 95bae8f48823d894a05bf42dfbf453674ab7dbdeb11e2bc079e8525ad47378c8 xcursor-themes-1.0.7.tar.xz +sha512 910925dd17c576028ae0d9dfe5683888648b941806b53cd9ff74ed18ff2de537664b07ab4c647a55290aeba37f6051f322b29e8ecd54f348e32abe2ccea1c902 xcursor-themes-1.0.7.tar.xz +# Locally computed +sha256 e437aed89c3440a9fe7e19968a3f2eeb97041ef6c9616837a3fd42d0874fc0e6 COPYING diff --git a/package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.mk b/package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.mk new file mode 100644 index 00000000..e5bf1e50 --- /dev/null +++ b/package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xdata_xcursor-themes +# +################################################################################ + +XDATA_XCURSOR_THEMES_VERSION = 1.0.7 +XDATA_XCURSOR_THEMES_SOURCE = xcursor-themes-$(XDATA_XCURSOR_THEMES_VERSION).tar.xz +XDATA_XCURSOR_THEMES_SITE = https://xorg.freedesktop.org/archive/individual/data +XDATA_XCURSOR_THEMES_LICENSE = MIT +XDATA_XCURSOR_THEMES_LICENSE_FILES = COPYING + +XDATA_XCURSOR_THEMES_INSTALL_STAGING = YES +XDATA_XCURSOR_THEMES_DEPENDENCIES = xlib_libXcursor host-xapp_xcursorgen + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-input-evdev/0001-build-get-rid-of-sdkdir.patch b/package/x11r7/xdriver_xf86-input-evdev/0001-build-get-rid-of-sdkdir.patch new file mode 100644 index 00000000..b3422954 --- /dev/null +++ b/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/package/x11r7/xdriver_xf86-input-evdev/Config.in b/package/x11r7/xdriver_xf86-input-evdev/Config.in new file mode 100644 index 00000000..fe4e451e --- /dev/null +++ b/package/x11r7/xdriver_xf86-input-evdev/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_XDRIVER_XF86_INPUT_EVDEV + bool "xf86-input-evdev" + depends on BR2_PACKAGE_HAS_UDEV # libudev is configure dependency + select BR2_PACKAGE_LIBEVDEV + select BR2_PACKAGE_MTDEV + select BR2_PACKAGE_XORGPROTO + help + Generic Linux input driver + +comment "xf86-input-evdev requires udev to be enabled" + depends on !BR2_PACKAGE_HAS_UDEV diff --git a/package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.hash b/package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.hash new file mode 100644 index 00000000..c80eaeb9 --- /dev/null +++ b/package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.hash @@ -0,0 +1,7 @@ +# From https://lists.x.org/archives/xorg-announce/2018-May/002898.html +md5 e8bd1edc6751f92e425cae7eba3c61eb xf86-input-evdev-2.10.6.tar.bz2 +sha1 660de292d5a40e2b8f385965c6a4e149c981ba59 xf86-input-evdev-2.10.6.tar.bz2 +sha256 8726073e81861bc7b2321e76272cbdbd33c7e1a121535a9827977265b9033ec0 xf86-input-evdev-2.10.6.tar.bz2 +sha512 560b0a6491d50a46913a5890a35c0367e59f550670993493bd9712d712a9747ddaa6fe5086daabf2fcafa24b0159383787eb273da4a2a60c089bfc0a77ad2ad1 xf86-input-evdev-2.10.6.tar.bz2 +# Locally computed +sha256 f6b9b4732932434cad03b29cb3151d20edcf7d6e5681f40ee3c47f03dbd92dc9 COPYING diff --git a/package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.mk b/package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.mk new file mode 100644 index 00000000..28923cb2 --- /dev/null +++ b/package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xdriver_xf86-input-evdev +# +################################################################################ + +XDRIVER_XF86_INPUT_EVDEV_VERSION = 2.10.6 +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 \ + mtdev \ + xorgproto \ + xserver_xorg-server \ + udev + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-input-joystick/0001-build-get-rid-of-sdkdir.patch b/package/x11r7/xdriver_xf86-input-joystick/0001-build-get-rid-of-sdkdir.patch new file mode 100644 index 00000000..a611f153 --- /dev/null +++ b/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/package/x11r7/xdriver_xf86-input-joystick/50-joystick.conf b/package/x11r7/xdriver_xf86-input-joystick/50-joystick.conf new file mode 100644 index 00000000..95a295ab --- /dev/null +++ b/package/x11r7/xdriver_xf86-input-joystick/50-joystick.conf @@ -0,0 +1,6 @@ +Section "InputClass" + Identifier "joystick catchall" + MatchIsJoystick "on" + MatchDevicePath "/dev/input/event*" + Driver "joystick" +EndSection diff --git a/package/x11r7/xdriver_xf86-input-joystick/Config.in b/package/x11r7/xdriver_xf86-input-joystick/Config.in new file mode 100644 index 00000000..892d1a16 --- /dev/null +++ b/package/x11r7/xdriver_xf86-input-joystick/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XDRIVER_XF86_INPUT_JOYSTICK + bool "xf86-input-joystick" + select BR2_PACKAGE_XORGPROTO + help + X.Org driver for joystick input devices diff --git a/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.hash b/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.hash new file mode 100644 index 00000000..0d7911bf --- /dev/null +++ b/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003290.html +sha256 905ec485fabc699b1cb21518cbd152246776fa83570e09c5822ca0973733ccd2 xf86-input-joystick-1.6.4.tar.xz +sha512 4e9127f125543060f9e6bc4b0aa384bc98a92acc52bfb240c9a114c565e0b24d2e9dcbc0e866845abc8aeb1e1a6c78cd5e3f0c0f22007aa93460b6a1910d67ef xf86-input-joystick-1.6.4.tar.xz +# Locally calculated +sha256 460cf612147407317a3911ce03a215707d8d6d5f3e604a53fefa6e54974ad07e COPYING diff --git a/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.mk b/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.mk new file mode 100644 index 00000000..0573f439 --- /dev/null +++ b/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xdriver_xf86-input-joystick +# +################################################################################ + +XDRIVER_XF86_INPUT_JOYSTICK_VERSION = 1.6.4 +XDRIVER_XF86_INPUT_JOYSTICK_SOURCE = xf86-input-joystick-$(XDRIVER_XF86_INPUT_JOYSTICK_VERSION).tar.xz +XDRIVER_XF86_INPUT_JOYSTICK_SITE = https://xorg.freedesktop.org/archive/individual/driver +XDRIVER_XF86_INPUT_JOYSTICK_LICENSE = MIT +XDRIVER_XF86_INPUT_JOYSTICK_LICENSE_FILES = COPYING +XDRIVER_XF86_INPUT_JOYSTICK_DEPENDENCIES = xserver_xorg-server xorgproto +XDRIVER_XF86_INPUT_JOYSTICK_AUTORECONF = YES + +define XDRIVER_XF86_INPUT_JOYSTICK_CONF + $(INSTALL) -m 0644 -D \ + $(XDRIVER_XF86_INPUT_JOYSTICK_PKGDIR)/50-joystick.conf \ + $(TARGET_DIR)/usr/share/X11/xorg.conf.d/50-joystick.conf +endef +XDRIVER_XF86_INPUT_JOYSTICK_POST_INSTALL_TARGET_HOOKS += XDRIVER_XF86_INPUT_JOYSTICK_CONF + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-input-libinput/0001-build-get-rid-of-sdkdir.patch b/package/x11r7/xdriver_xf86-input-libinput/0001-build-get-rid-of-sdkdir.patch new file mode 100644 index 00000000..2f9784c2 --- /dev/null +++ b/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/package/x11r7/xdriver_xf86-input-libinput/Config.in b/package/x11r7/xdriver_xf86-input-libinput/Config.in new file mode 100644 index 00000000..f66196a5 --- /dev/null +++ b/package/x11r7/xdriver_xf86-input-libinput/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_XDRIVER_XF86_INPUT_LIBINPUT + bool "xf86-input-libinput" + depends on BR2_PACKAGE_HAS_UDEV # libinput + select BR2_PACKAGE_LIBINPUT + select BR2_PACKAGE_XORGPROTO + help + This is an X driver based on libinput. It is a thin wrapper + around libinput, so while it does provide all features that + libinput supports it does little beyond. + +comment "xf86-input-libinput needs udev /dev management" + depends on !BR2_PACKAGE_HAS_UDEV diff --git a/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.hash b/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.hash new file mode 100644 index 00000000..cca2639d --- /dev/null +++ b/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-April/003378.html +sha256 1446ba20a22bc968b5a4a0b4dbc3b8e037c50d9c59ac75fa3f7fc506c58c1abb xf86-input-libinput-1.3.0.tar.xz +sha512 f81f408b37e5f98ee97337dc4da6e78449e554e0ab2a3c6791b089d2cb6d645d0206ddf9babbc2120ab8bfe3b1489314fe42503ee015cec41775024538f3a34f xf86-input-libinput-1.3.0.tar.xz +# Locally computed +sha256 4114220b281561e80f3422f0e7ae8d3e1fc85131ffc2e3b6265119e66f1adb27 COPYING diff --git a/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.mk b/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.mk new file mode 100644 index 00000000..381df31f --- /dev/null +++ b/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xdriver_xf86-input-libinput +# +################################################################################ + +XDRIVER_XF86_INPUT_LIBINPUT_VERSION = 1.3.0 +XDRIVER_XF86_INPUT_LIBINPUT_SOURCE = xf86-input-libinput-$(XDRIVER_XF86_INPUT_LIBINPUT_VERSION).tar.xz +XDRIVER_XF86_INPUT_LIBINPUT_SITE = https://xorg.freedesktop.org/archive/individual/driver +XDRIVER_XF86_INPUT_LIBINPUT_LICENSE = MIT +XDRIVER_XF86_INPUT_LIBINPUT_LICENSE_FILES = COPYING +XDRIVER_XF86_INPUT_LIBINPUT_DEPENDENCIES = libinput xserver_xorg-server xorgproto +XDRIVER_XF86_INPUT_LIBINPUT_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-input-mouse/0001-build-get-rid-of-sdkdir.patch b/package/x11r7/xdriver_xf86-input-mouse/0001-build-get-rid-of-sdkdir.patch new file mode 100644 index 00000000..d5f97f98 --- /dev/null +++ b/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/package/x11r7/xdriver_xf86-input-mouse/Config.in b/package/x11r7/xdriver_xf86-input-mouse/Config.in new file mode 100644 index 00000000..efa181e5 --- /dev/null +++ b/package/x11r7/xdriver_xf86-input-mouse/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XDRIVER_XF86_INPUT_MOUSE + bool "xf86-input-mouse" + select BR2_PACKAGE_XORGPROTO + help + X.Org driver for mouse input devices diff --git a/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.hash b/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.hash new file mode 100644 index 00000000..d654c362 --- /dev/null +++ b/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-May/003392.html +sha256 4fde8ae9b44352e2a208584c36528ee3ed13cf5fe4417208a9785daccefd9968 xf86-input-mouse-1.9.5.tar.xz +sha512 ed9bd9cb9a05dac0ff1bfb4e4704cb2e94117afb400aa9e0b7ccdbb102bc6db1b0d3af7cb6f99d0892f8fc306f1643286291c0fa7114af8e65864412bd6c1afa xf86-input-mouse-1.9.5.tar.xz +# Locally computed +sha256 5b066654bdb61a1ef41f38cceda752897bbddb6e60e20f5889cab436a9b7b813 COPYING diff --git a/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.mk b/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.mk new file mode 100644 index 00000000..25e25ab9 --- /dev/null +++ b/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xdriver_xf86-input-mouse +# +################################################################################ + +XDRIVER_XF86_INPUT_MOUSE_VERSION = 1.9.5 +XDRIVER_XF86_INPUT_MOUSE_SOURCE = xf86-input-mouse-$(XDRIVER_XF86_INPUT_MOUSE_VERSION).tar.xz +XDRIVER_XF86_INPUT_MOUSE_SITE = https://xorg.freedesktop.org/archive/individual/driver +XDRIVER_XF86_INPUT_MOUSE_LICENSE = MIT +XDRIVER_XF86_INPUT_MOUSE_LICENSE_FILES = COPYING +XDRIVER_XF86_INPUT_MOUSE_DEPENDENCIES = xserver_xorg-server xorgproto +XDRIVER_XF86_INPUT_MOUSE_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-input-synaptics/0001-build-get-rid-of-sdkdir.patch b/package/x11r7/xdriver_xf86-input-synaptics/0001-build-get-rid-of-sdkdir.patch new file mode 100644 index 00000000..62950b06 --- /dev/null +++ b/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/package/x11r7/xdriver_xf86-input-synaptics/Config.in b/package/x11r7/xdriver_xf86-input-synaptics/Config.in new file mode 100644 index 00000000..b974265b --- /dev/null +++ b/package/x11r7/xdriver_xf86-input-synaptics/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XDRIVER_XF86_INPUT_SYNAPTICS + bool "xf86-input-synaptics" + select BR2_PACKAGE_LIBEVDEV + select BR2_PACKAGE_MTDEV + select BR2_PACKAGE_XORGPROTO + help + X.Org driver for synaptics input devices diff --git a/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.hash b/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.hash new file mode 100644 index 00000000..97d55f2e --- /dev/null +++ b/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-July/003181.html +sha256 b8fa4aab913fc63754bbd6439e020658c412743a055201ddf212760593962c38 xf86-input-synaptics-1.9.2.tar.xz +sha512 6fd46505f22bba79f612fbd48dddd4818f7d874cc29caac71840744de27f1d224c68861e3a18d2a866b78178924d2f093f5260e27b221aa1fb17dbc09d66b649 xf86-input-synaptics-1.9.2.tar.xz +# Locally computed +sha256 e14dc9a27158cadaeea8bcc2c70069762f05adb29030a444336bfde268751dc7 COPYING diff --git a/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.mk b/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.mk new file mode 100644 index 00000000..888f60b2 --- /dev/null +++ b/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xdriver_xf86-input-synaptics +# +################################################################################ + +XDRIVER_XF86_INPUT_SYNAPTICS_VERSION = 1.9.2 +XDRIVER_XF86_INPUT_SYNAPTICS_SOURCE = xf86-input-synaptics-$(XDRIVER_XF86_INPUT_SYNAPTICS_VERSION).tar.xz +XDRIVER_XF86_INPUT_SYNAPTICS_SITE = https://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 xorgproto mtdev +XDRIVER_XF86_INPUT_SYNAPTICS_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-input-tslib/Config.in b/package/x11r7/xdriver_xf86-input-tslib/Config.in new file mode 100644 index 00000000..9205cba6 --- /dev/null +++ b/package/x11r7/xdriver_xf86-input-tslib/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XDRIVER_XF86_INPUT_TSLIB + bool "xf86-input-tslib" + select BR2_PACKAGE_XORGPROTO + select BR2_PACKAGE_TSLIB + help + Touch screen library input driver + + https://github.com/merge/xf86-input-tslib diff --git a/package/x11r7/xdriver_xf86-input-tslib/xdriver_xf86-input-tslib.hash b/package/x11r7/xdriver_xf86-input-tslib/xdriver_xf86-input-tslib.hash new file mode 100644 index 00000000..dca54571 --- /dev/null +++ b/package/x11r7/xdriver_xf86-input-tslib/xdriver_xf86-input-tslib.hash @@ -0,0 +1,5 @@ +# https://github.com/merge/xf86-input-tslib/releases/download/1.1.1/xf86-input-tslib-1.1.1.tar.bz2.sha256 +sha256 8b6a9f2ad73598a3619e66e252bd54b1792c4deba0213101fa4d272b5e9217ec xf86-input-tslib-1.1.1.tar.bz2 + +# Locally computed +sha256 edfc46c9b91499699fc54d39e986756a2dcce8a919c6066be177123441532856 COPYING diff --git a/package/x11r7/xdriver_xf86-input-tslib/xdriver_xf86-input-tslib.mk b/package/x11r7/xdriver_xf86-input-tslib/xdriver_xf86-input-tslib.mk new file mode 100644 index 00000000..f8944f35 --- /dev/null +++ b/package/x11r7/xdriver_xf86-input-tslib/xdriver_xf86-input-tslib.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xdriver_xf86-input-tslib +# +################################################################################ + +XDRIVER_XF86_INPUT_TSLIB_VERSION = 1.1.1 +XDRIVER_XF86_INPUT_TSLIB_SOURCE = xf86-input-tslib-$(XDRIVER_XF86_INPUT_TSLIB_VERSION).tar.bz2 +XDRIVER_XF86_INPUT_TSLIB_SITE = https://github.com/merge/xf86-input-tslib/releases/download/$(XDRIVER_XF86_INPUT_TSLIB_VERSION) +XDRIVER_XF86_INPUT_TSLIB_LICENSE = MIT +XDRIVER_XF86_INPUT_TSLIB_LICENSE_FILES = COPYING +XDRIVER_XF86_INPUT_TSLIB_DEPENDENCIES = \ + xserver_xorg-server \ + xorgproto \ + tslib + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-input-vmmouse/Config.in b/package/x11r7/xdriver_xf86-input-vmmouse/Config.in new file mode 100644 index 00000000..d77def02 --- /dev/null +++ b/package/x11r7/xdriver_xf86-input-vmmouse/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XDRIVER_XF86_INPUT_VMMOUSE + bool "xf86-input-vmmouse" + depends on BR2_i386 || BR2_x86_64 + select BR2_PACKAGE_XORGPROTO + help + VMWare mouse input driver diff --git a/package/x11r7/xdriver_xf86-input-vmmouse/xdriver_xf86-input-vmmouse.hash b/package/x11r7/xdriver_xf86-input-vmmouse/xdriver_xf86-input-vmmouse.hash new file mode 100644 index 00000000..2a221a4c --- /dev/null +++ b/package/x11r7/xdriver_xf86-input-vmmouse/xdriver_xf86-input-vmmouse.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003217.html +sha256 56f077580ab8f02e2f40358c5c46b0ae3e1828fc77744526b24adf1ceea339b8 xf86-input-vmmouse-13.2.0.tar.xz +sha512 26a01347a679db058abdc7cbd9a363bb4fccd1a727dc18e279d15b8a0dce71f67af5ff54df28b908391da8d2fc311d8c1813f26dcded4e9a2668db7b55ca5687 xf86-input-vmmouse-13.2.0.tar.xz +# Locally calculated +sha256 804737a1582428fdde4e2bfd1e9f3ca07971fc3bdce20ba2d06cc2bba6c84a9e COPYING diff --git a/package/x11r7/xdriver_xf86-input-vmmouse/xdriver_xf86-input-vmmouse.mk b/package/x11r7/xdriver_xf86-input-vmmouse/xdriver_xf86-input-vmmouse.mk new file mode 100644 index 00000000..178e1344 --- /dev/null +++ b/package/x11r7/xdriver_xf86-input-vmmouse/xdriver_xf86-input-vmmouse.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# xdriver_xf86-input-vmmouse +# +################################################################################ + +XDRIVER_XF86_INPUT_VMMOUSE_VERSION = 13.2.0 +XDRIVER_XF86_INPUT_VMMOUSE_SOURCE = xf86-input-vmmouse-$(XDRIVER_XF86_INPUT_VMMOUSE_VERSION).tar.xz +XDRIVER_XF86_INPUT_VMMOUSE_SITE = https://xorg.freedesktop.org/archive/individual/driver +XDRIVER_XF86_INPUT_VMMOUSE_LICENSE = MIT +XDRIVER_XF86_INPUT_VMMOUSE_LICENSE_FILES = COPYING +XDRIVER_XF86_INPUT_VMMOUSE_DEPENDENCIES = xserver_xorg-server xorgproto + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +XDRIVER_XF86_INPUT_VMMOUSE_CONF_OPTS += --with-libudev +XDRIVER_XF86_INPUT_VMMOUSE_DEPENDENCIES += udev +else +XDRIVER_XF86_INPUT_VMMOUSE_CONF_OPTS += --without-libudev +endif + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-amdgpu/Config.in b/package/x11r7/xdriver_xf86-video-amdgpu/Config.in new file mode 100644 index 00000000..fb23fc1f --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-amdgpu/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_AMDGPU + bool "xf86-video-amdgpu" + depends on BR2_USE_MMU # libdrm + depends on BR2_PACKAGE_HAS_LIBGBM + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_LIBDRM_AMDGPU + select BR2_PACKAGE_LIBEPOXY + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE + select BR2_PACKAGE_XORGPROTO + help + AMD GPU video driver + +comment "xf86-video-amdgpu needs GBM" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_HAS_LIBGBM diff --git a/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.hash b/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.hash new file mode 100644 index 00000000..962cb0e1 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-February/003334.html +sha256 4f04f0ea66f3ced0dcc58f617409860163a19c4e8c285cfb5285f36ba09cc061 xf86-video-amdgpu-23.0.0.tar.xz +sha512 bf26f147629a34e84a0ae8435119e170b9c95edafcab1995b63bb8f55abef32f2efbf4536eb070e64b2ae1460424b1b27a4206cb9836d33ddc6dfbee404f718b xf86-video-amdgpu-23.0.0.tar.xz +# Locally computed +sha256 58847c8e97190c401afa84b3f0b8b147379c876a184e99af2cb51bfd40ac8936 COPYING diff --git a/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.mk b/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.mk new file mode 100644 index 00000000..84f8e39d --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# xdriver_xf86-video-amdgpu +# +################################################################################ + +XDRIVER_XF86_VIDEO_AMDGPU_VERSION = 23.0.0 +XDRIVER_XF86_VIDEO_AMDGPU_SOURCE = xf86-video-amdgpu-$(XDRIVER_XF86_VIDEO_AMDGPU_VERSION).tar.xz +XDRIVER_XF86_VIDEO_AMDGPU_SITE = https://xorg.freedesktop.org/archive/individual/driver +XDRIVER_XF86_VIDEO_AMDGPU_LICENSE = MIT +XDRIVER_XF86_VIDEO_AMDGPU_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_AMDGPU_DEPENDENCIES = \ + libdrm \ + libgbm \ + xlib_libXcomposite \ + xorgproto \ + xserver_xorg-server + +ifeq ($(BR2_PACKAGE_HAS_LIBEGL)$(BR2_PACKAGE_HAS_LIBGL)$(BR2_PACKAGE_LIBEPOXY),yyy) +XDRIVER_XF86_VIDEO_AMDGPU_CONF_OPTS += --enable-glamor +else +XDRIVER_XF86_VIDEO_AMDGPU_CONF_OPTS += --disable-glamor +endif + +# xdriver_xf86-video-amdgpu requires O_CLOEXEC +XDRIVER_XF86_VIDEO_AMDGPU_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE" + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-ark/Config.in b/package/x11r7/xdriver_xf86-video-ark/Config.in new file mode 100644 index 00000000..e1219aff --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-ark/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_ARK + bool "xf86-video-ark" + select BR2_PACKAGE_XORGPROTO + help + X.Org driver for ark cards diff --git a/package/x11r7/xdriver_xf86-video-ark/xdriver_xf86-video-ark.hash b/package/x11r7/xdriver_xf86-video-ark/xdriver_xf86-video-ark.hash new file mode 100644 index 00000000..68131fdb --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-ark/xdriver_xf86-video-ark.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-February/003328.html +sha256 5acc9e78122ff6f4390787b2d0d44df81379bd613b6245983cc4bf3f325d085d xf86-video-ark-0.7.6.tar.xz +sha512 a52623e07eef6fa12d77b1afc55bb74b21662b850515b3a32bbf5988dcea2e787b4eddf4e020279aa4e4ddba436505ca9298548406913031e0ed5edaac835491 xf86-video-ark-0.7.6.tar.xz +# Locally calculated +sha256 8ba9850fb0ecd9033bb1d25c1be85625cb53ca56ce76b71f78f4a034f7310bda COPYING diff --git a/package/x11r7/xdriver_xf86-video-ark/xdriver_xf86-video-ark.mk b/package/x11r7/xdriver_xf86-video-ark/xdriver_xf86-video-ark.mk new file mode 100644 index 00000000..6301a973 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-ark/xdriver_xf86-video-ark.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-ark +# +################################################################################ + +XDRIVER_XF86_VIDEO_ARK_VERSION = 0.7.6 +XDRIVER_XF86_VIDEO_ARK_SOURCE = xf86-video-ark-$(XDRIVER_XF86_VIDEO_ARK_VERSION).tar.xz +XDRIVER_XF86_VIDEO_ARK_SITE = https://xorg.freedesktop.org/archive/individual/driver +XDRIVER_XF86_VIDEO_ARK_LICENSE = MIT +XDRIVER_XF86_VIDEO_ARK_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_ARK_DEPENDENCIES = xserver_xorg-server xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-ast/Config.in b/package/x11r7/xdriver_xf86-video-ast/Config.in new file mode 100644 index 00000000..2ebe8fc2 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-ast/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_AST + bool "xf86-video-ast" + select BR2_PACKAGE_XORGPROTO + help + No description available diff --git a/package/x11r7/xdriver_xf86-video-ast/xdriver_xf86-video-ast.hash b/package/x11r7/xdriver_xf86-video-ast/xdriver_xf86-video-ast.hash new file mode 100644 index 00000000..12ad79e4 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-ast/xdriver_xf86-video-ast.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003291.html +sha256 75754fa9c7f9a94fcc706d32cc118942d16c71934d88110442443a143b930daf xf86-video-ast-1.1.6.tar.xz +sha512 8482fec8d6be577f293cb820e623544475163f713fd74ec415f899bf5e9cf9453ffe4f96e141da3671437ebf616b47395d30d4b10858053c5893f5f5b7575ef1 xf86-video-ast-1.1.6.tar.xz +# Locally calculated +sha256 1cdd3d57e2fdcbd21b8a7b788ffbe6f809216a9bdd36b2225cff6c4b4404a170 COPYING diff --git a/package/x11r7/xdriver_xf86-video-ast/xdriver_xf86-video-ast.mk b/package/x11r7/xdriver_xf86-video-ast/xdriver_xf86-video-ast.mk new file mode 100644 index 00000000..f29dc29f --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-ast/xdriver_xf86-video-ast.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-ast +# +################################################################################ + +XDRIVER_XF86_VIDEO_AST_VERSION = 1.1.6 +XDRIVER_XF86_VIDEO_AST_SOURCE = xf86-video-ast-$(XDRIVER_XF86_VIDEO_AST_VERSION).tar.xz +XDRIVER_XF86_VIDEO_AST_SITE = https://xorg.freedesktop.org/archive/individual/driver +XDRIVER_XF86_VIDEO_AST_LICENSE = MIT +XDRIVER_XF86_VIDEO_AST_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_AST_DEPENDENCIES = xorgproto xserver_xorg-server + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-ati/Config.in b/package/x11r7/xdriver_xf86-video-ati/Config.in new file mode 100644 index 00000000..81255d5a --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-ati/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_ATI + bool "xf86-video-ati" + depends on BR2_i386 || BR2_x86_64 # DRI radeon r100 driver + depends on BR2_PACKAGE_HAS_LIBGBM + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_LIBDRM_RADEON + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE + select BR2_PACKAGE_XORGPROTO + help + ATI video driver + +comment "xf86-video-ati needs GBM" + depends on BR2_i386 || BR2_x86_64 + depends on !BR2_PACKAGE_HAS_LIBGBM diff --git a/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.hash b/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.hash new file mode 100644 index 00000000..74530c12 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-April/003386.html +sha256 c8c8bb56d3f6227c97e59c3a3c85a25133584ceb82ab5bc05a902a743ab7bf6d xf86-video-ati-22.0.0.tar.xz +sha512 fba9ffc7b0eeb0c369eb1a6f8ef0bb3061cfeca26bc269baf6e3d16dcd943fbf4092f1e37adfb1bc71051cee0b7a0e6fb253f0b8bcd210732ccaf99e8f2356fe xf86-video-ati-22.0.0.tar.xz +# Locally computed +sha256 58847c8e97190c401afa84b3f0b8b147379c876a184e99af2cb51bfd40ac8936 COPYING diff --git a/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.mk b/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.mk new file mode 100644 index 00000000..b663279c --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# xdriver_xf86-video-ati +# +################################################################################ + +XDRIVER_XF86_VIDEO_ATI_VERSION = 22.0.0 +XDRIVER_XF86_VIDEO_ATI_SOURCE = xf86-video-ati-$(XDRIVER_XF86_VIDEO_ATI_VERSION).tar.xz +XDRIVER_XF86_VIDEO_ATI_SITE = https://xorg.freedesktop.org/archive/individual/driver +XDRIVER_XF86_VIDEO_ATI_LICENSE = MIT +XDRIVER_XF86_VIDEO_ATI_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_ATI_DEPENDENCIES = \ + libdrm \ + libgbm \ + xlib_libXcomposite \ + xorgproto \ + xserver_xorg-server + +ifeq ($(BR2_PACKAGE_HAS_LIBEGL)$(BR2_PACKAGE_HAS_LIBGL)$(BR2_PACKAGE_LIBEPOXY),yyy) +XDRIVER_XF86_VIDEO_ATI_CONF_OPTS += --enable-glamor +else +XDRIVER_XF86_VIDEO_ATI_CONF_OPTS += --disable-glamor +endif + +# xdriver_xf86-video-ati requires O_CLOEXEC +XDRIVER_XF86_VIDEO_ATI_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE" + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-cirrus/Config.in b/package/x11r7/xdriver_xf86-video-cirrus/Config.in new file mode 100644 index 00000000..2987c3f0 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-cirrus/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_CIRRUS + bool "xf86-video-cirrus" + select BR2_PACKAGE_XORGPROTO + help + Cirrus Logic video driver diff --git a/package/x11r7/xdriver_xf86-video-cirrus/xdriver_xf86-video-cirrus.hash b/package/x11r7/xdriver_xf86-video-cirrus/xdriver_xf86-video-cirrus.hash new file mode 100644 index 00000000..98de98c0 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-cirrus/xdriver_xf86-video-cirrus.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-July/003182.html +sha256 0ef3fa0083de3d9a040f11b3af38598d8405f1165b908fdd6712c30038326401 xf86-video-cirrus-1.6.0.tar.xz +sha512 d18260bdc486fbadf619e41a9e9d9ad08bda2434b877ab7504ba13aa1fdeb1f87bb397d9090d5cf0883325ad08799115d5f0ce098b5f75088a06b0a96894ed76 xf86-video-cirrus-1.6.0.tar.xz +# Locally calculated +sha256 a113cf02dcfa523593727790a17172080ac87d8de16e766bda4cbbe73dd8dc62 COPYING diff --git a/package/x11r7/xdriver_xf86-video-cirrus/xdriver_xf86-video-cirrus.mk b/package/x11r7/xdriver_xf86-video-cirrus/xdriver_xf86-video-cirrus.mk new file mode 100644 index 00000000..d953b223 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-cirrus/xdriver_xf86-video-cirrus.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-cirrus +# +################################################################################ + +XDRIVER_XF86_VIDEO_CIRRUS_VERSION = 1.6.0 +XDRIVER_XF86_VIDEO_CIRRUS_SOURCE = xf86-video-cirrus-$(XDRIVER_XF86_VIDEO_CIRRUS_VERSION).tar.xz +XDRIVER_XF86_VIDEO_CIRRUS_SITE = https://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_CIRRUS_LICENSE = MIT +XDRIVER_XF86_VIDEO_CIRRUS_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_CIRRUS_DEPENDENCIES = xserver_xorg-server xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-dummy/Config.in b/package/x11r7/xdriver_xf86-video-dummy/Config.in new file mode 100644 index 00000000..58c70a84 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-dummy/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_DUMMY + bool "xf86-video-dummy" + select BR2_PACKAGE_XORGPROTO + help + X.Org driver for dummy cards diff --git a/package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.hash b/package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.hash new file mode 100644 index 00000000..6d7d0b4b --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-May/003394.html +sha256 351920a7fd0f759a3ac972a5999b3ffed46f07fb52a99f319bfb5b6a59d3dfaf xf86-video-dummy-0.4.1.tar.xz +sha512 ff7fd8b668e5e9f40a5d27f82599b7a455a8162fc1a247195335c17980f00ce10ae6b2c062239cbaa67d8684c86174f85b398dd7f7065d36f69294bd6f2469de xf86-video-dummy-0.4.1.tar.xz +# Locally calculated +sha256 e29aa81e74563d14e5633963107c030e74e8352ea7dafee1a9d7e19b7d0e887b COPYING diff --git a/package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.mk b/package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.mk new file mode 100644 index 00000000..f7f05c7c --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-dummy +# +################################################################################ + +XDRIVER_XF86_VIDEO_DUMMY_VERSION = 0.4.1 +XDRIVER_XF86_VIDEO_DUMMY_SOURCE = xf86-video-dummy-$(XDRIVER_XF86_VIDEO_DUMMY_VERSION).tar.xz +XDRIVER_XF86_VIDEO_DUMMY_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_DUMMY_LICENSE = MIT +XDRIVER_XF86_VIDEO_DUMMY_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_DUMMY_DEPENDENCIES = xserver_xorg-server xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-fbdev/Config.in b/package/x11r7/xdriver_xf86-video-fbdev/Config.in new file mode 100644 index 00000000..0ecba482 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-fbdev/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBDEV + bool "xf86-video-fbdev" + select BR2_PACKAGE_XORGPROTO + help + video driver for framebuffer device diff --git a/package/x11r7/xdriver_xf86-video-fbdev/xdriver_xf86-video-fbdev.hash b/package/x11r7/xdriver_xf86-video-fbdev/xdriver_xf86-video-fbdev.hash new file mode 100644 index 00000000..0b38a9b4 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-fbdev/xdriver_xf86-video-fbdev.hash @@ -0,0 +1,4 @@ +# From http://lists.x.org/archives/xorg-announce/2013-September/002324.html +sha256 dcc3d85f378022180e437a9ec00a59b6cb7680ff79c40394d695060af2374699 xf86-video-fbdev-0.5.0.tar.bz2 +# Locally calculated +sha256 e437aed89c3440a9fe7e19968a3f2eeb97041ef6c9616837a3fd42d0874fc0e6 COPYING diff --git a/package/x11r7/xdriver_xf86-video-fbdev/xdriver_xf86-video-fbdev.mk b/package/x11r7/xdriver_xf86-video-fbdev/xdriver_xf86-video-fbdev.mk new file mode 100644 index 00000000..a480befd --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-fbdev/xdriver_xf86-video-fbdev.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-fbdev +# +################################################################################ + +XDRIVER_XF86_VIDEO_FBDEV_VERSION = 0.5.0 +XDRIVER_XF86_VIDEO_FBDEV_SOURCE = xf86-video-fbdev-$(XDRIVER_XF86_VIDEO_FBDEV_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_FBDEV_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_FBDEV_LICENSE = MIT +XDRIVER_XF86_VIDEO_FBDEV_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_FBDEV_DEPENDENCIES = xserver_xorg-server xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-fbturbo/0001-sunxi_x_g2d-drop-unused-dri2-include.patch b/package/x11r7/xdriver_xf86-video-fbturbo/0001-sunxi_x_g2d-drop-unused-dri2-include.patch new file mode 100644 index 00000000..8b4e817b --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-fbturbo/0001-sunxi_x_g2d-drop-unused-dri2-include.patch @@ -0,0 +1,28 @@ +From 232c5b6924652f65ef5c047754e84b87b5fc6ac8 Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Sat, 3 Oct 2015 19:01:38 +0200 +Subject: [PATCH] sunxi_x_g2d: drop unused dri2 include + +The driver doesn't use DRI for anything. + +[Upstream-status: submitted (https://github.com/ssvb/xf86-video-fbturbo/pull/45)] +Signed-off-by: Peter Korsgaard +--- + src/sunxi_x_g2d.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/sunxi_x_g2d.c b/src/sunxi_x_g2d.c +index d826027..8888abe 100644 +--- a/src/sunxi_x_g2d.c ++++ b/src/sunxi_x_g2d.c +@@ -31,7 +31,6 @@ + #include "xf86_OSproc.h" + #include "xf86.h" + #include "xf86drm.h" +-#include "dri2.h" + #include "damage.h" + #include "fb.h" + #include "gcstruct.h" +-- +2.1.4 + diff --git a/package/x11r7/xdriver_xf86-video-fbturbo/0002-Use-own-thunk-functions-instead-of-fbdevHW-Weak.patch b/package/x11r7/xdriver_xf86-video-fbturbo/0002-Use-own-thunk-functions-instead-of-fbdevHW-Weak.patch new file mode 100644 index 00000000..709efba5 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-fbturbo/0002-Use-own-thunk-functions-instead-of-fbdevHW-Weak.patch @@ -0,0 +1,160 @@ +From 2186a4e5ed6b8b8f24ebd4d2045df10d1f895999 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Wed, 21 May 2014 09:49:56 -0400 +Subject: [PATCH] Use own thunk functions instead of fbdevHW*Weak + +I plan to remove the Weak functions from a future server. + +Signed-off-by: Adam Jackson +[Upstream https://gitlab.freedesktop.org/xorg/driver/xf86-video-fbdev/-/commit/2673e727063fe28310836f1e6e9eda552930218a + ported to xf86-video-fbturbo] +Signed-off-by: Peter Seiderer +--- + src/fbdev.c | 86 +++++++++++++++++++++++++++++++++++++++++++---------- + 1 file changed, 71 insertions(+), 15 deletions(-) + +diff --git a/src/fbdev.c b/src/fbdev.c +index 90d9f39..81bd1fb 100644 +--- a/src/fbdev.c ++++ b/src/fbdev.c +@@ -269,6 +269,35 @@ FBDevIdentify(int flags) + xf86PrintChipsets(FBDEV_NAME, "driver for framebuffer", FBDevChipsets); + } + ++static Bool ++fbdevSwitchMode(ScrnInfoPtr pScrn, DisplayModePtr mode) ++{ ++ return fbdevHWSwitchMode(pScrn, mode); ++} ++ ++static void ++fbdevAdjustFrame(ScrnInfoPtr pScrn, int x, int y) ++{ ++ fbdevHWAdjustFrame(pScrn, x, y); ++} ++ ++static Bool ++fbdevEnterVT(ScrnInfoPtr pScrn) ++{ ++ return fbdevHWEnterVT(pScrn); ++} ++ ++static void ++fbdevLeaveVT(ScrnInfoPtr pScrn) ++{ ++ fbdevHWLeaveVT(pScrn); ++} ++ ++static ModeStatus ++fbdevValidMode(ScrnInfoPtr pScrn, DisplayModePtr mode, Bool verbose, int flags) ++{ ++ return fbdevHWValidMode(pScrn, mode, verbose, flags); ++} + + #ifdef XSERVER_LIBPCIACCESS + static Bool FBDevPciProbe(DriverPtr drv, int entity_num, +@@ -294,11 +323,11 @@ static Bool FBDevPciProbe(DriverPtr drv, int entity_num, + pScrn->Probe = FBDevProbe; + pScrn->PreInit = FBDevPreInit; + pScrn->ScreenInit = FBDevScreenInit; +- pScrn->SwitchMode = fbdevHWSwitchModeWeak(); +- pScrn->AdjustFrame = fbdevHWAdjustFrameWeak(); +- pScrn->EnterVT = fbdevHWEnterVTWeak(); +- pScrn->LeaveVT = fbdevHWLeaveVTWeak(); +- pScrn->ValidMode = fbdevHWValidModeWeak(); ++ pScrn->SwitchMode = fbdevSwitchMode; ++ pScrn->AdjustFrame = fbdevAdjustFrame; ++ pScrn->EnterVT = fbdevEnterVT; ++ pScrn->LeaveVT = fbdevLeaveVT; ++ pScrn->ValidMode = fbdevValidMode; + + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, + "claimed PCI slot %d@%d:%d:%d\n", +@@ -411,11 +440,11 @@ FBDevProbe(DriverPtr drv, int flags) + pScrn->Probe = FBDevProbe; + pScrn->PreInit = FBDevPreInit; + pScrn->ScreenInit = FBDevScreenInit; +- pScrn->SwitchMode = fbdevHWSwitchModeWeak(); +- pScrn->AdjustFrame = fbdevHWAdjustFrameWeak(); +- pScrn->EnterVT = fbdevHWEnterVTWeak(); +- pScrn->LeaveVT = fbdevHWLeaveVTWeak(); +- pScrn->ValidMode = fbdevHWValidModeWeak(); ++ pScrn->SwitchMode = fbdevSwitchMode; ++ pScrn->AdjustFrame = fbdevAdjustFrame; ++ pScrn->EnterVT = fbdevEnterVT; ++ pScrn->LeaveVT = fbdevLeaveVT; ++ pScrn->ValidMode = fbdevValidMode; + + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "using %s\n", dev ? dev : "default device"); +@@ -656,6 +685,17 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) + return TRUE; + } + ++static void ++fbdevUpdateRotatePacked(ScreenPtr pScreen, shadowBufPtr pBuf) ++{ ++ shadowUpdateRotatePacked(pScreen, pBuf); ++} ++ ++static void ++fbdevUpdatePacked(ScreenPtr pScreen, shadowBufPtr pBuf) ++{ ++ shadowUpdatePacked(pScreen, pBuf); ++} + + static Bool + FBDevCreateScreenResources(ScreenPtr pScreen) +@@ -675,7 +715,7 @@ FBDevCreateScreenResources(ScreenPtr pScreen) + pPixmap = pScreen->GetScreenPixmap(pScreen); + + if (!shadowAdd(pScreen, pPixmap, fPtr->rotate ? +- shadowUpdateRotatePackedWeak() : shadowUpdatePackedWeak(), ++ fbdevUpdateRotatePacked : fbdevUpdatePacked, + FBDevWindowLinear, fPtr->rotate, NULL)) { + return FALSE; + } +@@ -699,6 +739,23 @@ FBDevShadowInit(ScreenPtr pScreen) + return TRUE; + } + ++static void ++fbdevLoadPalette(ScrnInfoPtr pScrn, int num, int *i, LOCO *col, VisualPtr pVis) ++{ ++ fbdevHWLoadPalette(pScrn, num, i, col, pVis); ++} ++ ++static void ++fbdevDPMSSet(ScrnInfoPtr pScrn, int mode, int flags) ++{ ++ fbdevHWDPMSSet(pScrn, mode, flags); ++} ++ ++static Bool ++fbdevSaveScreen(ScreenPtr pScreen, int mode) ++{ ++ return fbdevHWSaveScreen(pScreen, mode); ++} + + static Bool + FBDevScreenInit(SCREEN_INIT_ARGS_DECL) +@@ -1025,13 +1082,12 @@ FBDevScreenInit(SCREEN_INIT_ARGS_DECL) + return FALSE; + } + flags = CMAP_PALETTED_TRUECOLOR; +- if(!xf86HandleColormaps(pScreen, 256, 8, fbdevHWLoadPaletteWeak(), +- NULL, flags)) ++ if(!xf86HandleColormaps(pScreen, 256, 8, fbdevLoadPalette, NULL, flags)) + return FALSE; + +- xf86DPMSInit(pScreen, fbdevHWDPMSSetWeak(), 0); ++ xf86DPMSInit(pScreen, fbdevDPMSSet, 0); + +- pScreen->SaveScreen = fbdevHWSaveScreenWeak(); ++ pScreen->SaveScreen = fbdevSaveScreen; + + /* Wrap the current CloseScreen function */ + fPtr->CloseScreen = pScreen->CloseScreen; +-- +2.31.1 + diff --git a/package/x11r7/xdriver_xf86-video-fbturbo/0003-Update-for-1.20-ABI.patch b/package/x11r7/xdriver_xf86-video-fbturbo/0003-Update-for-1.20-ABI.patch new file mode 100644 index 00000000..99ccc7a1 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-fbturbo/0003-Update-for-1.20-ABI.patch @@ -0,0 +1,30 @@ +From 5112829fe3f9f4776276800a175bf460061f83b1 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Wed, 30 May 2018 12:31:04 -0400 +Subject: [PATCH] Update for 1.20 ABI + +Signed-off-by: Adam Jackson +[Upstream https://gitlab.freedesktop.org/xorg/driver/xf86-video-fbdev/-/commit/67525c485f3b32ce0c9bff250d905852f75dfc1c + ported to xf86-video-fbturbo] +Signed-off-by: Peter Seiderer +--- + src/fbdev.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/fbdev.c b/src/fbdev.c +index 81bd1fb..489a231 100644 +--- a/src/fbdev.c ++++ b/src/fbdev.c +@@ -1036,7 +1036,9 @@ FBDevScreenInit(SCREEN_INIT_ARGS_DECL) + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "display rotated; disabling DGA\n"); + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "using driver rotation; disabling " + "XRandR\n"); ++#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 24 + xf86DisableRandR(); ++#endif + if (pScrn->bitsPerPixel == 24) + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "rotation might be broken at 24 " + "bits per pixel\n"); +-- +2.31.1 + diff --git a/package/x11r7/xdriver_xf86-video-fbturbo/0004-xorg.conf-add-mandatory-modules-fb-shadow-fbdevhw.patch b/package/x11r7/xdriver_xf86-video-fbturbo/0004-xorg.conf-add-mandatory-modules-fb-shadow-fbdevhw.patch new file mode 100644 index 00000000..7da36a44 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-fbturbo/0004-xorg.conf-add-mandatory-modules-fb-shadow-fbdevhw.patch @@ -0,0 +1,53 @@ +From 04d1f756ac1204b8d5be1757499ac3a239bd93e1 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Wed, 2 Jun 2021 21:42:56 +0200 +Subject: [PATCH] xorg.conf: add mandatory modules (fb, shadow, fbdevhw) + +Xorg does not implement real dynamic linking and requires that its +modules get loaded so add mandatory modules: + +- fbdevhw, fixes: + [ 303.906] (II) LoadModule: "fbturbo" + [ 303.906] (II) Loading /usr/lib/xorg/modules/drivers/fbturbo_drv.so + [ 303.907] (EE) Failed to load /usr/lib/xorg/modules/drivers/fbturbo_drv.so: /usr/lib/xorg/modules/drivers/fbturbo_drv.so: undefined symbol: fbdevHWSave + [ 303.907] (EE) Failed to load module "fbturbo" (loader failed, 0) + [ 303.907] (EE) No drivers available. + +- shadow, fixes: + [ 426.403] (II) LoadModule: "fbturbo" + [ 426.404] (II) Loading /usr/lib/xorg/modules/drivers/fbturbo_drv.so + [ 426.404] (EE) Failed to load /usr/lib/xorg/modules/drivers/fbturbo_drv.so: /usr/lib/xorg/modules/drivers/fbturbo_drv.so: undefined symbol: shadowRemove + [ 426.404] (EE) Failed to load module "fbturbo" (loader failed, 0) + [ 426.404] (EE) No drivers available. + +- fb, fixes: + [ 471.912] (II) LoadModule: "shadow" + [ 471.913] (II) Loading /usr/lib/xorg/modules/libshadow.so + [ 471.913] (EE) Failed to load /usr/lib/xorg/modules/libshadow.so: /usr/lib/xorg/modules/libshadow.so: undefined symbol: fbGetScreenPrivateKey + [ 471.913] (EE) Failed to load module "shadow" (loader failed, 0) + +Signed-off-by: Peter Seiderer +--- + xorg.conf | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/xorg.conf b/xorg.conf +index 6217d11..fda62e3 100644 +--- a/xorg.conf ++++ b/xorg.conf +@@ -8,6 +8,12 @@ + # Run "man fbturbo" to get additional information about the extra + # configuration options for tuning the driver. + ++Section "Module" ++ Load "fb" ++ Load "shadow" ++ Load "fbdevhw" ++EndSection ++ + Section "Device" + Identifier "Allwinner A10/A13 FBDEV" + Driver "fbturbo" +-- +2.31.1 + diff --git a/package/x11r7/xdriver_xf86-video-fbturbo/0005-backing_store_tuner-struct-_Window-backStorage-is-go.patch b/package/x11r7/xdriver_xf86-video-fbturbo/0005-backing_store_tuner-struct-_Window-backStorage-is-go.patch new file mode 100644 index 00000000..097868ea --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-fbturbo/0005-backing_store_tuner-struct-_Window-backStorage-is-go.patch @@ -0,0 +1,65 @@ +From 93631c1f68678bf3e860b1bbc6192c8b6ac4c563 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Mon, 13 Dec 2021 19:55:08 +0100 +Subject: [PATCH] backing_store_tuner: struct _Window::backStorage is gone + +Fix struct _Window::backStorage related compile failure. + +Since xserver commit 'dix: Remove WindowRec::backStorage ' ([1]) +struct _Window::backStorage is gone, use struct _Window::backingStore instead. + +Fixes: + + backing_store_tuner.c: In function 'xPostValidateTree': + backing_store_tuner.c:112:48: error: 'struct _Window' has no member named 'backStorage' + 112 | if (!private->ForceBackingStore && focusWin->backStorage) { + | ^~ + backing_store_tuner.c:128:20: error: 'struct _Window' has no member named 'backStorage' + 128 | if (!curWin->backStorage && (private->ForceBackingStore || + | ^~ + backing_store_tuner.c: In function 'xReparentWindow': + backing_store_tuner.c:161:46: error: 'struct _Window' has no member named 'backStorage' + 161 | if (pPriorParent == pScreen->root && pWin->backStorage) { + | ^~ + +[1] https://gitlab.freedesktop.org/xorg/xserver/-/commit/6975807945d12c07f00e18df7fafeff43efa0267 + +Signed-off-by: Peter Seiderer +--- + src/backing_store_tuner.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/backing_store_tuner.c b/src/backing_store_tuner.c +index 067c05f..13f7ec3 100644 +--- a/src/backing_store_tuner.c ++++ b/src/backing_store_tuner.c +@@ -109,7 +109,7 @@ xPostValidateTree(WindowPtr pWin, WindowPtr pLayerWin, VTKind kind) + private->PostValidateTreeNestingLevel++; + + /* Disable backing store for the focus window */ +- if (!private->ForceBackingStore && focusWin->backStorage) { ++ if (!private->ForceBackingStore && (focusWin->backingStore != NotUseful)) { + DebugMsg("Disable backing store for the focus window 0x%x\n", + (unsigned int)focusWin->drawable.id); + pScreen->backingStoreSupport = Always; +@@ -125,7 +125,7 @@ xPostValidateTree(WindowPtr pWin, WindowPtr pLayerWin, VTKind kind) + /* And enable backing store for all the other children of root */ + curWin = pScreen->root->firstChild; + while (curWin) { +- if (!curWin->backStorage && (private->ForceBackingStore || ++ if ((curWin->backingStore == NotUseful) && (private->ForceBackingStore || + curWin != focusWin)) { + DebugMsg("Enable backing store for window 0x%x\n", + (unsigned int)curWin->drawable.id); +@@ -158,7 +158,7 @@ xReparentWindow(WindowPtr pWin, WindowPtr pPriorParent) + } + + /* We only want backing store set for direct children of root */ +- if (pPriorParent == pScreen->root && pWin->backStorage) { ++ if (pPriorParent == pScreen->root && (pWin->backingStore != NotUseful)) { + DebugMsg("Reparent window 0x%x from root, disabling backing store\n", + (unsigned int)pWin->drawable.id); + pScreen->backingStoreSupport = Always; +-- +2.34.1 + diff --git a/package/x11r7/xdriver_xf86-video-fbturbo/Config.in b/package/x11r7/xdriver_xf86-video-fbturbo/Config.in new file mode 100644 index 00000000..7acf93e2 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-fbturbo/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBTURBO + bool "xf86-video-fbturbo" + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_PIXMAN + select BR2_PACKAGE_XORGPROTO + help + video driver, primarily optimized for the devices powered + by the Allwinner SoC (A10, A13, A20). It can use some of + the 2D/3D hardware acceleration features. + + https://github.com/ssvb/xf86-video-fbturbo diff --git a/package/x11r7/xdriver_xf86-video-fbturbo/xdriver_xf86-video-fbturbo.hash b/package/x11r7/xdriver_xf86-video-fbturbo/xdriver_xf86-video-fbturbo.hash new file mode 100644 index 00000000..4b3cf8dd --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-fbturbo/xdriver_xf86-video-fbturbo.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 10411686de0a9d8b2cde300b0d68e9f1d22e3611470d357ef3afc337f123ca0f xdriver_xf86-video-fbturbo-0.4.0.tar.gz +sha256 8333e3fa5b0f8d8aceca2f060d4eceeb6033cefed2301b03c3e92f6e3ebbffce COPYING diff --git a/package/x11r7/xdriver_xf86-video-fbturbo/xdriver_xf86-video-fbturbo.mk b/package/x11r7/xdriver_xf86-video-fbturbo/xdriver_xf86-video-fbturbo.mk new file mode 100644 index 00000000..049a2b5b --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-fbturbo/xdriver_xf86-video-fbturbo.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# xdriver_xf86-video-fbturbo +# +################################################################################ + +XDRIVER_XF86_VIDEO_FBTURBO_VERSION = 0.4.0 +XDRIVER_XF86_VIDEO_FBTURBO_SITE = $(call github,ssvb,xf86-video-fbturbo,$(XDRIVER_XF86_VIDEO_FBTURBO_VERSION)) +XDRIVER_XF86_VIDEO_FBTURBO_LICENSE = MIT +XDRIVER_XF86_VIDEO_FBTURBO_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_FBTURBO_DEPENDENCIES = \ + xserver_xorg-server \ + libdrm \ + pixman \ + xorgproto + +ifeq ($(BR2_PACKAGE_LIBPCIACCESS),y) +XDRIVER_XF86_VIDEO_FBTURBO_DEPENDENCIES += libpciaccess +XDRIVER_XF86_VIDEO_FBTURBO_CONF_OPTS += --enable-pciaccess +else +XDRIVER_XF86_VIDEO_FBTURBO_CONF_OPTS += --disable-pciaccess +endif + +define XDRIVER_XF86_VIDEO_FBTURBO_INSTALL_CONF_FILE + $(INSTALL) -m 0644 -D $(@D)/xorg.conf $(TARGET_DIR)/etc/X11/xorg.conf +endef + +XDRIVER_XF86_VIDEO_FBTURBO_POST_INSTALL_TARGET_HOOKS += XDRIVER_XF86_VIDEO_FBTURBO_INSTALL_CONF_FILE + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-geode/Config.in b/package/x11r7/xdriver_xf86-video-geode/Config.in new file mode 100644 index 00000000..b432f2d4 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-geode/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_GEODE + bool "xf86-video-geode" + depends on BR2_i386 + select BR2_PACKAGE_XORGPROTO + help + video driver for geode device diff --git a/package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.hash b/package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.hash new file mode 100644 index 00000000..7dcb99fe --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-May/003393.html +sha256 8256ac3f14117324d00b7bfa8053645ca92562fe837c542489a502adbb5f9f1e xf86-video-geode-2.11.21.tar.xz +sha512 e12f74268ab7d16b57644a9465b4be1ca28d250625a31b8810e19a1f94a17e47e0a258455155fd8f336fa59fd78160cdf3763aa94b85c6ccc2c42edf3b65bc61 xf86-video-geode-2.11.21.tar.xz +# Locally calculated +sha256 3994ef7cee54f0935a4b57b1c34efd904da567931dd9e1a2d9390d22c8332ea2 COPYING diff --git a/package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.mk b/package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.mk new file mode 100644 index 00000000..8f84e486 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-geode +# +################################################################################ + +XDRIVER_XF86_VIDEO_GEODE_VERSION = 2.11.21 +XDRIVER_XF86_VIDEO_GEODE_SOURCE = xf86-video-geode-$(XDRIVER_XF86_VIDEO_GEODE_VERSION).tar.xz +XDRIVER_XF86_VIDEO_GEODE_SITE = https://xorg.freedesktop.org/archive/individual/driver +XDRIVER_XF86_VIDEO_GEODE_LICENSE = MIT +XDRIVER_XF86_VIDEO_GEODE_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_GEODE_DEPENDENCIES = xserver_xorg-server xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-i128/Config.in b/package/x11r7/xdriver_xf86-video-i128/Config.in new file mode 100644 index 00000000..4f4810cc --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-i128/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_I128 + bool "xf86-video-i128" + select BR2_PACKAGE_XORGPROTO + help + Number 9 I128 video driver diff --git a/package/x11r7/xdriver_xf86-video-i128/xdriver_xf86-video-i128.hash b/package/x11r7/xdriver_xf86-video-i128/xdriver_xf86-video-i128.hash new file mode 100644 index 00000000..c17d3086 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-i128/xdriver_xf86-video-i128.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-May/003395.html +sha256 7064b513ffe33efa040577c4d355ce2c76ed218989ab38feb8972750d5acbc46 xf86-video-i128-1.4.1.tar.xz +sha512 ec6b4dd9092292b5aabff7cf477090fe62c89944d251689817ac8114a65672f85880b719a442f4c742d63dc2d6c61ec315e53da5b5c625074d1aa0b9ace8e865 xf86-video-i128-1.4.1.tar.xz +# Locally computed +sha256 7677424d79633dbf255a81bd4e05dd621931b89997af33c31522269ec2ed391e COPYING diff --git a/package/x11r7/xdriver_xf86-video-i128/xdriver_xf86-video-i128.mk b/package/x11r7/xdriver_xf86-video-i128/xdriver_xf86-video-i128.mk new file mode 100644 index 00000000..26667810 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-i128/xdriver_xf86-video-i128.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-i128 +# +################################################################################ + +XDRIVER_XF86_VIDEO_I128_VERSION = 1.4.1 +XDRIVER_XF86_VIDEO_I128_SOURCE = xf86-video-i128-$(XDRIVER_XF86_VIDEO_I128_VERSION).tar.xz +XDRIVER_XF86_VIDEO_I128_SITE = https://xorg.freedesktop.org/archive/individual/driver +XDRIVER_XF86_VIDEO_I128_LICENSE = MIT +XDRIVER_XF86_VIDEO_I128_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_I128_DEPENDENCIES = xserver_xorg-server xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-imx/0001-Update-to-newer-swap-macros.patch b/package/x11r7/xdriver_xf86-video-imx/0001-Update-to-newer-swap-macros.patch new file mode 100644 index 00000000..90af6bf5 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-imx/0001-Update-to-newer-swap-macros.patch @@ -0,0 +1,65 @@ +From fc7f191a1a0f290a4e808dd8f9bd58ba1dbd2be4 Mon Sep 17 00:00:00 2001 +From: Otavio Salvador +Date: Sat, 29 Dec 2012 18:00:36 -0200 +Subject: [PATCH] ext: Update to newer swap macros + +The swap macros now use an internal temporary variable so we need to +adapt the code according. + +Upstream-Status: Pending + +Signed-off-by: Otavio Salvador +--- + src/imx_ext.c | 16 ++++++---------- + 1 file changed, 6 insertions(+), 10 deletions(-) + +diff --git a/src/imx_ext.c b/src/imx_ext.c +index f12469a..710cba4 100644 +--- a/src/imx_ext.c ++++ b/src/imx_ext.c +@@ -57,8 +57,6 @@ void imxExtInit() + static int + Proc_IMX_EXT_GetPixmapPhysAddr(ClientPtr client) + { +- int n; +- + REQUEST(xIMX_EXT_GetPixmapPhysAddrReq); + REQUEST_SIZE_MATCH(xIMX_EXT_GetPixmapPhysAddrReq); + +@@ -96,10 +94,10 @@ Proc_IMX_EXT_GetPixmapPhysAddr(ClientPtr client) + /* Check if any reply values need byte swapping */ + if (client->swapped) { + +- swaps(&rep.sequenceNumber, n); +- swapl(&rep.length, n); +- swapl(&rep.pixmapPhysAddr, n); +- swapl(&rep.pixmapPitch, n); ++ swaps(&rep.sequenceNumber); ++ swapl(&rep.length); ++ swapl(&rep.pixmapPhysAddr); ++ swapl(&rep.pixmapPitch); + } + + /* Reply to client */ +@@ -123,16 +121,14 @@ Proc_IMX_EXT_Dispatch(ClientPtr client) + static int + SProc_IMX_EXT_GetPixmapPhysAddr(ClientPtr client) + { +- int n; +- + REQUEST(xIMX_EXT_GetPixmapPhysAddrReq); + + /* Swap request message length and verify it is correct. */ +- swaps(&stuff->length, n); ++ swaps(&stuff->length); + REQUEST_SIZE_MATCH(xIMX_EXT_GetPixmapPhysAddrReq); + + /* Swap remaining request message parameters. */ +- swapl(&stuff->pixmap, n); ++ swapl(&stuff->pixmap); + + return Proc_IMX_EXT_GetPixmapPhysAddr(client); + } +-- +1.7.10.4 + diff --git a/package/x11r7/xdriver_xf86-video-imx/0002-Fix-error-unknown-type-name-uint.patch b/package/x11r7/xdriver_xf86-video-imx/0002-Fix-error-unknown-type-name-uint.patch new file mode 100644 index 00000000..6a2fcdf4 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-imx/0002-Fix-error-unknown-type-name-uint.patch @@ -0,0 +1,33 @@ +From ccdfce5e75ba707deacdd5808a8f3de8744848d0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Eric=20B=C3=A9nard?= +Date: Tue, 5 Feb 2013 10:57:47 +0100 +Subject: [PATCH] Fix "error: unknown type name 'uint'" +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +In file included from imx_driver.c:33:0: +.../sysroots/imx53qsb/usr/src/kernel/include/linux/mxcfb.h:107:2: error: unknown type name 'uint' + +Upstream-Status: Pending + +Signed-off-by: Eric Bénard +--- + src/imx_driver.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/imx_driver.c b/src/imx_driver.c +index f4b3e38..4cf662d 100644 +--- a/src/imx_driver.c ++++ b/src/imx_driver.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + #include + #include + +-- +1.7.10.4 + diff --git a/package/x11r7/xdriver_xf86-video-imx/0003-support-glibc-2.20.patch b/package/x11r7/xdriver_xf86-video-imx/0003-support-glibc-2.20.patch new file mode 100644 index 00000000..3b1b84d1 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-imx/0003-support-glibc-2.20.patch @@ -0,0 +1,57 @@ +Fix build errors seen with glibc 2.20 + +/home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/imx53qsb/usr/include/xorg/os.h:579:1: error: expected identifier or '(' before '__extension__' + strndup(const char *str, size_t n); + ^ + +Signed-off-by: Khem Raj +Upstream-Status: Pending +Index: xserver-xorg-video-imx-11.09.01/src/imx_accel.c +=================================================================== +--- xserver-xorg-video-imx-11.09.01.orig/src/imx_accel.c 2011-07-26 14:22:47.000000000 -0700 ++++ xserver-xorg-video-imx-11.09.01/src/imx_accel.c 2014-08-29 15:54:43.648070587 -0700 +@@ -21,6 +21,7 @@ + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ ++#include + + #include + #include "xf86.h" +Index: xserver-xorg-video-imx-11.09.01/src/imx_exa_offscreen.c +=================================================================== +--- xserver-xorg-video-imx-11.09.01.orig/src/imx_exa_offscreen.c 2014-08-29 15:26:31.992070587 -0700 ++++ xserver-xorg-video-imx-11.09.01/src/imx_exa_offscreen.c 2014-08-29 15:54:54.632070587 -0700 +@@ -53,7 +53,7 @@ + * When allocating, the contiguous block of areas with the minimum eviction + * cost is found and evicted in order to make room for the new allocation. + */ +- ++#include + + #include "xf86.h" + #include "exa.h" +Index: xserver-xorg-video-imx-11.09.01/src/imx_exa_z160.c +=================================================================== +--- xserver-xorg-video-imx-11.09.01.orig/src/imx_exa_z160.c 2014-08-29 15:26:31.992070587 -0700 ++++ xserver-xorg-video-imx-11.09.01/src/imx_exa_z160.c 2014-08-29 15:54:36.056070587 -0700 +@@ -21,6 +21,7 @@ + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ ++#include + + #include "xf86.h" + #include "xf86_OSproc.h" +Index: xserver-xorg-video-imx-11.09.01/src/imx_ext.c +=================================================================== +--- xserver-xorg-video-imx-11.09.01.orig/src/imx_ext.c 2014-08-29 15:26:32.064070587 -0700 ++++ xserver-xorg-video-imx-11.09.01/src/imx_ext.c 2014-08-29 15:55:18.048070587 -0700 +@@ -21,6 +21,7 @@ + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ ++#include + + #include + #include diff --git a/package/x11r7/xdriver_xf86-video-imx/0004-Make-video-API-forward-and-backward-compatible.patch b/package/x11r7/xdriver_xf86-video-imx/0004-Make-video-API-forward-and-backward-compatible.patch new file mode 100644 index 00000000..2ac6311f --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-imx/0004-Make-video-API-forward-and-backward-compatible.patch @@ -0,0 +1,787 @@ +From 5216cb0f14414b5451f58df48a36c1c62c035276 Mon Sep 17 00:00:00 2001 +From: Otavio Salvador +Date: Sat, 29 Dec 2012 18:02:11 -0200 +Subject: [PATCH] Make video API forward and backward compatible + +This updates the video API in a forward and backward compatible way +using the "compat-api.h" as used in Xorg maintained drivers. + +Upstream-Status: Pending + +Signed-off-by: Otavio Salvador +--- + src/compat-api.h | 106 +++++++++++++++++++++++++++++++++++++++++++++++ + src/imx_display.c | 22 +++++----- + src/imx_display.h | 8 ++-- + src/imx_driver.c | 60 ++++++++++++++------------- + src/imx_exa_offscreen.c | 12 +++--- + src/imx_exa_z160.c | 53 ++++++++++++------------ + src/imx_xv_ipu.c | 4 +- + 7 files changed, 188 insertions(+), 77 deletions(-) + create mode 100644 src/compat-api.h + +diff --git a/src/compat-api.h b/src/compat-api.h +new file mode 100644 +index 0000000..73ac8a2 +--- /dev/null ++++ b/src/compat-api.h +@@ -0,0 +1,106 @@ ++/* ++ * Copyright 2012 Red Hat, Inc. ++ * ++ * 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 (including the next ++ * paragraph) 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. ++ * ++ * Author: Dave Airlie ++ */ ++ ++/* this file provides API compat between server post 1.13 and pre it, ++ it should be reused inside as many drivers as possible */ ++#ifndef COMPAT_API_H ++#define COMPAT_API_H ++ ++#ifndef GLYPH_HAS_GLYPH_PICTURE_ACCESSOR ++#define GetGlyphPicture(g, s) GlyphPicture((g))[(s)->myNum] ++#define SetGlyphPicture(g, s, p) GlyphPicture((g))[(s)->myNum] = p ++#endif ++ ++#ifndef XF86_HAS_SCRN_CONV ++#define xf86ScreenToScrn(s) xf86Screens[(s)->myNum] ++#define xf86ScrnToScreen(s) screenInfo.screens[(s)->scrnIndex] ++#endif ++ ++#ifndef XF86_SCRN_INTERFACE ++ ++#define SCRN_ARG_TYPE int ++#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = xf86Screens[(arg1)] ++ ++#define SCREEN_ARG_TYPE int ++#define SCREEN_PTR(arg1) ScreenPtr pScreen = screenInfo.screens[(arg1)] ++ ++#define SCREEN_INIT_ARGS_DECL int index, ScreenPtr pScreen, int argc, char **argv ++ ++#define BLOCKHANDLER_ARGS_DECL int arg, pointer blockData, pointer pTimeout, pointer pReadmask ++#define BLOCKHANDLER_ARGS arg, blockData, pTimeout, pReadmask ++ ++#define CLOSE_SCREEN_ARGS_DECL int scrnIndex, ScreenPtr pScreen ++#define CLOSE_SCREEN_ARGS scrnIndex, pScreen ++#define CLOSE_SCREEN_DECL_ScrnInfoPtr ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; ++ ++#define FBDEVHWADJUSTFRAME_ARGS(x, y) scrnIndex, (x), (y), 0 ++ ++#define ADJUST_FRAME_ARGS_DECL int arg, int x, int y, int flags ++ ++#define SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags ++ ++#define FREE_SCREEN_ARGS_DECL int arg, int flags ++#define FREE_SCREEN_ARGS(x) (x)->scrnIndex, 0 ++ ++#define VT_FUNC_ARGS_DECL int arg, int flags ++#define VT_FUNC_ARGS(flags) pScrn->scrnIndex, (flags) ++ ++#define ENABLE_DISABLE_FB_ACCESS_ARGS(pScrn, b) pScrn->scrnIndex, b ++ ++#define XF86_ENABLEDISABLEFB_ARG(x) ((x)->scrnIndex) ++#else ++#define SCRN_ARG_TYPE ScrnInfoPtr ++#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = (arg1) ++ ++#define SCREEN_ARG_TYPE ScreenPtr ++#define SCREEN_PTR(arg1) ScreenPtr pScreen = (arg1) ++ ++#define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv ++ ++#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask ++#define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask ++ ++#define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen ++#define CLOSE_SCREEN_ARGS pScreen ++#define CLOSE_SCREEN_DECL_ScrnInfoPtr ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ++#define FBDEVHWADJUSTFRAME_ARGS(x, y) pScrn, (x), (y) ++ ++#define ADJUST_FRAME_ARGS_DECL ScrnInfoPtr arg, int x, int y ++#define SWITCH_MODE_ARGS_DECL ScrnInfoPtr arg, DisplayModePtr mode ++ ++#define FREE_SCREEN_ARGS_DECL ScrnInfoPtr arg ++#define FREE_SCREEN_ARGS(x) (x) ++ ++#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg ++#define VT_FUNC_ARGS(flags) pScrn ++ ++#define ENABLE_DISABLE_FB_ACCESS_ARGS(pScrn, b) pScrn, b ++ ++#define XF86_ENABLEDISABLEFB_ARG(x) (x) ++ ++#endif ++ ++#endif +diff --git a/src/imx_display.c b/src/imx_display.c +index fcb8195..e2dc36a 100644 +--- a/src/imx_display.c ++++ b/src/imx_display.c +@@ -42,6 +42,8 @@ + #include "imx.h" + #include "imx_display.h" + ++#include "compat-api.h" ++ + #include + + #if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,7,6,0,0) +@@ -1373,19 +1375,19 @@ imxDisplayPreInit(ScrnInfoPtr pScrn) + Bool + imxDisplayStartScreenInit(int scrnIndex, ScreenPtr pScreen) + { +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + ImxPtr fPtr = IMXPTR(pScrn); + + if (!xf86SetDesiredModes(pScrn)) { + +- xf86DrvMsg(scrnIndex, X_ERROR, "mode initialization failed\n"); ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "mode initialization failed\n"); + return FALSE; + } + + #if 0 + if (!fbdevHWModeInit(pScrn, pScrn->currentMode)) { + +- xf86DrvMsg(scrnIndex, X_ERROR, "mode initialization failed\n"); ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "mode initialization failed\n"); + return FALSE; + } + pScrn->displayWidth = +@@ -1463,29 +1465,29 @@ imxDisplayFinishScreenInit(int scrnIndex, ScreenPtr pScreen) + /* -------------------------------------------------------------------- */ + + Bool +-imxDisplaySwitchMode(int scrnIndex, DisplayModePtr mode, int flags) ++imxDisplaySwitchMode(SWITCH_MODE_ARGS_DECL) + { +- ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; ++ SCRN_INFO_PTR(arg); + + return xf86SetSingleMode(pScrn, mode, RR_Rotate_0); + } + + void +-imxDisplayAdjustFrame(int scrnIndex, int x, int y, int flags) ++imxDisplayAdjustFrame(ADJUST_FRAME_ARGS_DECL) + { +-// fbdevHWAdjustFrame(scrnIndex, x, y, flags); ++// fbdevHWAdjustFrame(pScrn->scrnIndex, x, y, flags); + } + + Bool +-imxDisplayEnterVT(int scrnIndex, int flags) ++imxDisplayEnterVT(VT_FUNC_ARGS_DECL) + { +- ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; ++ SCRN_INFO_PTR(arg); + + return xf86SetDesiredModes(pScrn); + } + + void +-imxDisplayLeaveVT(int scrnIndex, int flags) ++imxDisplayLeaveVT(VT_FUNC_ARGS_DECL) + { + } + +diff --git a/src/imx_display.h b/src/imx_display.h +index 4a5d5aa..3a3d43a 100644 +--- a/src/imx_display.h ++++ b/src/imx_display.h +@@ -59,16 +59,16 @@ imxDisplayValidMode(int scrnIndex, DisplayModePtr mode, + Bool verbose, int flags); + + extern Bool +-imxDisplaySwitchMode(int scrnIndex, DisplayModePtr mode, int flags); ++imxDisplaySwitchMode(SWITCH_MODE_ARGS_DECL); + + extern void +-imxDisplayAdjustFrame(int scrnIndex, int x, int y, int flags); ++imxDisplayAdjustFrame(ADJUST_FRAME_ARGS_DECL); + + extern Bool +-imxDisplayEnterVT(int scrnIndex, int flags); ++imxDisplayEnterVT(VT_FUNC_ARGS_DECL); + + extern void +-imxDisplayLeaveVT(int scrnIndex, int flags); ++imxDisplayLeaveVT(VT_FUNC_ARGS_DECL); + + extern Bool + imxDisplayChangeFrameBufferRotateEPDC(int scrnIndex, int fbRotate); +diff --git a/src/imx_driver.c b/src/imx_driver.c +index 178e36e..f4b3e38 100644 +--- a/src/imx_driver.c ++++ b/src/imx_driver.c +@@ -46,6 +46,8 @@ + #include "fb.h" + #include "fbdevhw.h" + ++#include "compat-api.h" ++ + #if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6 + #include "xf86Resources.h" + #include "xf86RAC.h" +@@ -435,17 +437,17 @@ errorPreInit: + } + + static void +-imxFreeScreen(int scrnIndex, int flags) ++imxFreeScreen(FREE_SCREEN_ARGS_DECL) + { +- ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; ++ SCRN_INFO_PTR(arg); + + imxFreeRec(pScrn); + } + + static Bool +-imxCloseScreen(int scrnIndex, ScreenPtr pScreen) ++imxCloseScreen(CLOSE_SCREEN_ARGS_DECL) + { +- ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; ++ CLOSE_SCREEN_DECL_ScrnInfoPtr; + ImxPtr fPtr = IMXPTR(pScrn); + + fbdevHWRestore(pScrn); +@@ -453,7 +455,7 @@ imxCloseScreen(int scrnIndex, ScreenPtr pScreen) + pScrn->vtSema = FALSE; + + pScreen->CloseScreen = fPtr->saveCloseScreen; +- return (*pScreen->CloseScreen)(scrnIndex, pScreen); ++ return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS); + } + + static int +@@ -488,9 +490,9 @@ LCM(a, b) + } + + static Bool +-imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) ++imxScreenInit(SCREEN_INIT_ARGS_DECL) + { +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + ImxPtr fPtr = IMXPTR(pScrn); + VisualPtr visual; + int init_picture = 0; +@@ -514,7 +516,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + /* Map frame buffer memory */ + fPtr->fbMemoryBase = fbdevHWMapVidmem(pScrn); + if (NULL == fPtr->fbMemoryBase) { +- xf86DrvMsg(scrnIndex,X_ERROR,"mapping of video memory" ++ xf86DrvMsg(pScrn->scrnIndex,X_ERROR,"mapping of video memory" + " failed\n"); + return FALSE; + } +@@ -558,7 +560,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + const int fbOffsetScreen2 = + IMX_ALIGN(fbMaxScreenSize, fbMaxAlignOffset); + fPtr->fbMemoryScreenReserve = fbMaxScreenSize; +- xf86DrvMsg(scrnIndex, X_INFO, ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "reserve %d bytes of frame buffer for screen\n", + fPtr->fbMemoryScreenReserve); + fPtr->fbMemoryStart2 = NULL; +@@ -568,12 +570,12 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + + fPtr->fbMemoryScreenReserve += fbOffsetScreen2; + +- xf86DrvMsg(scrnIndex, X_INFO, ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "reserve same number of bytes for XRandR rotated screen at offset %d\n", + fbOffsetScreen2); + } + +- if (!imxDisplayStartScreenInit(scrnIndex, pScreen)) { ++ if (!imxDisplayStartScreenInit(pScrn->scrnIndex, pScreen)) { + + return FALSE; + } +@@ -582,7 +584,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + miClearVisualTypes(); + if (pScrn->bitsPerPixel > 8) { + if (!miSetVisualTypes(pScrn->depth, TrueColorMask, pScrn->rgbBits, TrueColor)) { +- xf86DrvMsg(scrnIndex,X_ERROR,"visual type setup failed" ++ xf86DrvMsg(pScrn->scrnIndex,X_ERROR,"visual type setup failed" + " for %d bits per pixel [1]\n", + pScrn->bitsPerPixel); + return FALSE; +@@ -591,14 +593,14 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + if (!miSetVisualTypes(pScrn->depth, + miGetDefaultVisualMask(pScrn->depth), + pScrn->rgbBits, pScrn->defaultVisual)) { +- xf86DrvMsg(scrnIndex,X_ERROR,"visual type setup failed" ++ xf86DrvMsg(pScrn->scrnIndex,X_ERROR,"visual type setup failed" + " for %d bits per pixel [2]\n", + pScrn->bitsPerPixel); + return FALSE; + } + } + if (!miSetPixmapDepths()) { +- xf86DrvMsg(scrnIndex,X_ERROR,"pixmap depth setup failed\n"); ++ xf86DrvMsg(pScrn->scrnIndex,X_ERROR,"pixmap depth setup failed\n"); + return FALSE; + } + +@@ -607,10 +609,10 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + has a padding which is independent from the depth (controlfb) */ + pScrn->displayWidth = fbdevHWGetLineLength(pScrn) / + (pScrn->bitsPerPixel / 8); +- xf86DrvMsg(scrnIndex, X_INFO, "displayWidth = %d\n", pScrn->displayWidth); ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "displayWidth = %d\n", pScrn->displayWidth); + + if (pScrn->displayWidth != pScrn->virtualX) { +- xf86DrvMsg(scrnIndex, X_INFO, ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Pitch updated to %d after ModeInit\n", + pScrn->displayWidth); + } +@@ -633,7 +635,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + init_picture = 1; + break; + default: +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: invalid number of bits per" + " pixel (%d) encountered in" + " imxScreenInit()\n", pScrn->bitsPerPixel); +@@ -644,7 +646,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + case FBDEVHW_INTERLEAVED_PLANES: + /* This should never happen ... + * we should check for this much much earlier ... */ +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: interleaved planes are not yet " + "supported by the imx driver\n"); + ret = FALSE; +@@ -652,20 +654,20 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + case FBDEVHW_TEXT: + /* This should never happen ... + * we should check for this much much earlier ... */ +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: text mode is not supported by the " + "imx driver\n"); + ret = FALSE; + break; + case FBDEVHW_VGA_PLANES: + /* Not supported yet */ +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: EGA/VGA Planes are not yet " + "supported by the imx driver\n"); + ret = FALSE; + break; + default: +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: unrecognised hardware type (%d) " + "encountered in imxScreenInit()\n", type); + ret = FALSE; +@@ -699,7 +701,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + /* INIT ACCELERATION BEFORE INIT FOR BACKING STORE & SOFTWARE CURSOR */ + if (fPtr->useAccel) { + +- if (!imxExaZ160Setup(scrnIndex, pScreen)) { ++ if (!imxExaZ160Setup(pScrn->scrnIndex, pScreen)) { + + fPtr->useAccel = FALSE; + } +@@ -731,29 +733,29 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + /* XXX It would be simpler to use miCreateDefColormap() in all cases. */ + case FBDEVHW_PACKED_PIXELS: + if (!miCreateDefColormap(pScreen)) { +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: miCreateDefColormap failed " + "in imxScreenInit()\n"); + return FALSE; + } + break; + case FBDEVHW_INTERLEAVED_PLANES: +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: interleaved planes are not yet " + "supported by the imx driver\n"); + return FALSE; + case FBDEVHW_TEXT: +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: text mode is not supported by " + "the imx driver\n"); + return FALSE; + case FBDEVHW_VGA_PLANES: +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: EGA/VGA planes are not yet " + "supported by the imx driver\n"); + return FALSE; + default: +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: unrecognised imx hardware type " + "(%d) encountered in imxScreenInit()\n", type); + return FALSE; +@@ -782,7 +784,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + } + #endif + +- if (!imxDisplayFinishScreenInit(scrnIndex, pScreen)) { ++ if (!imxDisplayFinishScreenInit(pScrn->scrnIndex, pScreen)) { + return FALSE; + } + +@@ -810,7 +812,7 @@ IMXGetPixmapProperties( + } + + /* Access screen associated with this pixmap. */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen); + + /* Check if the screen associated with this pixmap has IMX driver. */ + if (0 != strcmp(IMX_DRIVER_NAME, pScrn->driverName)) { +diff --git a/src/imx_exa_offscreen.c b/src/imx_exa_offscreen.c +index 3a5c24d..0fbe2fc 100644 +--- a/src/imx_exa_offscreen.c ++++ b/src/imx_exa_offscreen.c +@@ -79,7 +79,7 @@ static void + imxExaOffscreenValidate (ScreenPtr pScreen) + { + /* Access the driver specific data. */ +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + ImxPtr imxPtr = IMXPTR(pScrn); + ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr); + ExaOffscreenArea *prev = 0, *area; +@@ -135,7 +135,7 @@ imxExaOffscreenMerge (ImxExaPtr imxExaPtr, ExaOffscreenArea *area) + ExaOffscreenArea * + imxExaOffscreenFree (ScreenPtr pScreen, ExaOffscreenArea *area) + { +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + ImxPtr imxPtr = IMXPTR(pScrn); + ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr); + ExaOffscreenArea *next = area->next; +@@ -281,7 +281,7 @@ imxExaOffscreenAlloc (ScreenPtr pScreen, int size, int align, + pointer privData) + { + ExaOffscreenArea *area; +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + ImxPtr imxPtr = IMXPTR(pScrn); + ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr); + int real_size = 0, largest_avail = 0; +@@ -418,7 +418,7 @@ imxExaOffscreenSwapIn (ScreenPtr pScreen) + Bool + imxExaOffscreenInit (ScreenPtr pScreen) + { +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + ImxPtr imxPtr = IMXPTR(pScrn); + ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr); + ExaOffscreenArea *area; +@@ -453,7 +453,7 @@ imxExaOffscreenInit (ScreenPtr pScreen) + void + imxExaOffscreenFini (ScreenPtr pScreen) + { +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + ImxPtr imxPtr = IMXPTR(pScrn); + ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr); + ExaOffscreenArea *area; +@@ -472,7 +472,7 @@ imxExaOffscreenFini (ScreenPtr pScreen) + void + imxExaOffscreenSwapOut (ScreenPtr pScreen) + { +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + ImxPtr imxPtr = IMXPTR(pScrn); + ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr); + +diff --git a/src/imx_exa_z160.c b/src/imx_exa_z160.c +index fb718e0..3d0bc96 100644 +--- a/src/imx_exa_z160.c ++++ b/src/imx_exa_z160.c +@@ -32,6 +32,7 @@ + #include + #include + ++#include "compat-api.h" + + /* Set if handles pixmap allocation and migration, i.e, EXA_HANDLES_PIXMAPS */ + #define IMX_EXA_ENABLE_HANDLES_PIXMAPS \ +@@ -299,7 +300,7 @@ imxExaZ160GetPixmapAddress(PixmapPtr pPixmap) + return fPixmapPtr->ptr; + #else + /* Access screen associated with this pixmap. */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -344,7 +345,7 @@ imxExaZ160GetPixmapProperties( + #else + + /* Access screen associated with this pixmap. */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen); + + /* Make sure pixmap is in framebuffer */ + if (!exaDrawableIsOffscreen(&(pPixmap->drawable))) { +@@ -856,7 +857,7 @@ imxExaZ160SyncIfBusyPixmap(PixmapPtr pPixmap) + { + /* Access screen associated with this pixmap. */ + ScreenPtr pScreen = pPixmap->drawable.pScreen; +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + + /* Access driver specific data for screen. */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -924,7 +925,7 @@ imxExaZ160CreatePixmap2(ScreenPtr pScreen, int width, int height, + } + + /* Access the driver specific data. */ +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + ImxPtr imxPtr = IMXPTR(pScrn); + ImxExaZ160Ptr fPtr = IMXEXAZ160PTR(imxPtr); + +@@ -1028,7 +1029,7 @@ imxExaZ160DestroyPixmap(ScreenPtr pScreen, void *driverPriv) + ImxExaPixmapPtr fPixmapPtr = (ImxExaPixmapPtr)driverPriv; + + /* Access the driver specific data. */ +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + ImxPtr imxPtr = IMXPTR(pScrn); + ImxExaZ160Ptr fPtr = IMXEXAZ160PTR(imxPtr); + +@@ -1068,7 +1069,7 @@ imxExaZ160ModifyPixmapHeader(PixmapPtr pPixmap, int width, int height, + } + + /* Access screen associated with this pixmap */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -1194,7 +1195,7 @@ imxExaZ160TrackBusyPixmap(ImxExaZ160Ptr fPtr, PixmapPtr pPixmap) + static void + imxExaZ160WaitMarker(ScreenPtr pScreen, int marker) + { +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + + /* Access driver specific data associated with the screen. */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -1249,7 +1250,7 @@ imxExaZ160PrepareSolid(PixmapPtr pPixmap, int alu, Pixel planemask, Pixel fg) + } + + /* Access screen associated with this pixmap */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -1352,7 +1353,7 @@ static void + imxExaZ160Solid(PixmapPtr pPixmap, int x1, int y1, int x2, int y2) + { + /* Access screen associated with this pixmap */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -1423,7 +1424,7 @@ static void + imxExaZ160DoneSolid(PixmapPtr pPixmap) + { + /* Access screen associated with this pixmap */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -1485,7 +1486,7 @@ imxExaZ160PrepareCopy( + } + + /* Access the screen associated with this pixmap. */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -1599,7 +1600,7 @@ static void + imxExaZ160Copy(PixmapPtr pPixmapDst, int srcX, int srcY, int dstX, int dstY, int width, int height) + { + /* Access screen associated with dst pixmap */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -1661,7 +1662,7 @@ static void + imxExaZ160DoneCopy(PixmapPtr pPixmapDst) + { + /* Access screen associated with this pixmap */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -1770,7 +1771,7 @@ imxExaZ160CheckComposite(int op, PicturePtr pPictureSrc, PicturePtr pPictureMask + } + + /* Access screen associated with dst pixmap (same screen as for src pixmap). */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen); + + /* Check the number of entities, and fail if it isn't one. */ + if (pScrn->numEntities != 1) { +@@ -1987,7 +1988,7 @@ imxExaZ160PrepareComposite( + { + /* Access screen associated with dst pixmap. */ + /* Should be same screen as for src pixmap. */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen); + + /* NOTE - many preconditions already verified in CheckComposite. */ + +@@ -2196,7 +2197,7 @@ imxExaZ160Composite( + int height) + { + /* Access screen associated with dst pixmap */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -2275,7 +2276,7 @@ static void + imxExaZ160DoneComposite(PixmapPtr pPixmapDst) + { + /* Access screen associated with this pixmap */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -2323,7 +2324,7 @@ imxExaZ160UploadToScreen( + + /* Access screen associated with this pixmap */ + ScreenPtr pScreen = pPixmapDst->drawable.pScreen; +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -2381,7 +2382,7 @@ imxExaZ160DownloadFromScreen( + + /* Access screen associated with this pixmap */ + ScreenPtr pScreen = pPixmapSrc->drawable.pScreen; +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -2412,9 +2413,9 @@ imxExaZ160DownloadFromScreen( + } + + Bool +-imxExaZ160CloseScreen(int scrnIndex, ScreenPtr pScreen) ++imxExaZ160CloseScreen(CLOSE_SCREEN_ARGS_DECL) + { +- ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; ++ CLOSE_SCREEN_DECL_ScrnInfoPtr; + ImxPtr imxPtr = IMXPTR(pScrn); + + ImxExaZ160Ptr fPtr = IMXEXAZ160PTR(imxPtr); +@@ -2504,7 +2505,7 @@ imxExaZ160CloseScreen(int scrnIndex, ScreenPtr pScreen) + /* Install our CloseScreen function so that it gets called. */ + if (NULL != pScreen->CloseScreen) { + +- return (*pScreen->CloseScreen)(scrnIndex, pScreen); ++ return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS); + } + + return TRUE; +@@ -2514,7 +2515,7 @@ Bool + imxExaZ160Setup(int scrnIndex, ScreenPtr pScreen) + { + /* Access the screen info and then private data structures. */ +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + ImxPtr imxPtr = IMXPTR(pScrn); + + /* Private data structure must not already be in use. */ +@@ -2582,7 +2583,7 @@ imxExaZ160Setup(int scrnIndex, ScreenPtr pScreen) + + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Initialize Z160 interfaces failed.\n"); +- imxExaZ160CloseScreen(scrnIndex, pScreen); ++ imxExaZ160CloseScreen(CLOSE_SCREEN_ARGS); + return FALSE; + } + +@@ -2592,7 +2593,7 @@ imxExaZ160Setup(int scrnIndex, ScreenPtr pScreen) + + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Allocate EXA driver structure.\n"); +- imxExaZ160CloseScreen(scrnIndex, pScreen); ++ imxExaZ160CloseScreen(CLOSE_SCREEN_ARGS); + return FALSE; + } + +@@ -2657,7 +2658,7 @@ imxExaZ160Setup(int scrnIndex, ScreenPtr pScreen) + if (!exaDriverInit(pScreen, exaDriverPtr)) { + + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "EXA initialization failed.\n"); +- imxExaZ160CloseScreen(scrnIndex, pScreen); ++ imxExaZ160CloseScreen(CLOSE_SCREEN_ARGS); + return FALSE; + } + fPtr->imxExaRec.exaDriverPtr = exaDriverPtr; +diff --git a/src/imx_xv_ipu.c b/src/imx_xv_ipu.c +index a517742..fc8a827 100644 +--- a/src/imx_xv_ipu.c ++++ b/src/imx_xv_ipu.c +@@ -398,7 +398,7 @@ xf86XVFillKeyHelper1 (ScreenPtr pScreen, CARD32 key, RegionPtr clipboxes) + xRectangle *rects; + GCPtr gc; + +- if(!xf86Screens[pScreen->myNum]->vtSema) return; ++ if(!xf86ScreenToScrn(pScreen)->vtSema) return; + + gc = GetScratchGC(root->depth, pScreen); + pval[0] = key; +@@ -771,7 +771,7 @@ MXXVInitializeAdaptor + XF86VideoAdaptorPtr **pppAdaptor + ) + { +- ScreenPtr pScreen = screenInfo.screens[pScreenInfo->scrnIndex]; ++ ScreenPtr pScreen = xf86ScrnToScreen(pScreenInfo); + XF86VideoAdaptorPtr *ppAdaptor = NULL; + IMXPtr fPtr = IMXPTR(pScreenInfo); + int nAdaptor; +-- +1.7.10.4 + diff --git a/package/x11r7/xdriver_xf86-video-imx/0005-xf86-video-imxfb-fix-m4-hardcodded-paths.patch b/package/x11r7/xdriver_xf86-video-imx/0005-xf86-video-imxfb-fix-m4-hardcodded-paths.patch new file mode 100644 index 00000000..64af7732 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-imx/0005-xf86-video-imxfb-fix-m4-hardcodded-paths.patch @@ -0,0 +1,53 @@ +From 5b348e7be67957f4be6fcfa4942128c04f6db905 Mon Sep 17 00:00:00 2001 +From: Adrian Alonso +Date: Thu, 4 Aug 2011 14:24:26 -0500 +Subject: [PATCH] xf86-video-imxfb: fix m4 hardcodded paths + +* Fix m4 macros lookup location; remove /usr/share/aclocal path + +Signed-off-by: Adrian Alonso +--- + Makefile.am | 2 +- + Makefile.in | 2 +- + configure.ac | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 6752256..e205657 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -20,4 +20,4 @@ + + AUTOMAKE_OPTIONS = foreign + SUBDIRS = src +-ACLOCAL_AMFLAGS = -I /usr/share/aclocal ++ACLOCAL_AMFLAGS = -I m4 +diff --git a/Makefile.in b/Makefile.in +index 5c0ba0e..f829db7 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -243,7 +243,7 @@ top_builddir = @top_builddir@ + top_srcdir = @top_srcdir@ + AUTOMAKE_OPTIONS = foreign + SUBDIRS = src +-ACLOCAL_AMFLAGS = -I /usr/share/aclocal ++ACLOCAL_AMFLAGS = -I m4 + all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +diff --git a/configure.ac b/configure.ac +index a1ac73b..0078b86 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -29,7 +29,7 @@ AC_INIT([xf86-video-imx], + AC_CONFIG_SRCDIR([Makefile.am]) + AM_CONFIG_HEADER([config.h]) + AC_CONFIG_AUX_DIR(.) +-AC_CONFIG_MACRO_DIR([/usr/share/aclocal]) ++AC_CONFIG_MACRO_DIR([m4]) + + AM_INIT_AUTOMAKE([dist-bzip2]) + +-- +1.7.4.1 + diff --git a/package/x11r7/xdriver_xf86-video-imx/0006-xserver-1.14-compat.patch b/package/x11r7/xdriver_xf86-video-imx/0006-xserver-1.14-compat.patch new file mode 100644 index 00000000..14ccbbf9 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-imx/0006-xserver-1.14-compat.patch @@ -0,0 +1,34 @@ +Fix building using new Xorg 1.14 + +mibstore functions are no longer supported. This patch removes them +from this driver, following the pattern in +http://patches.openembedded.org/patch/46133/ + +This checkin shows when/where the changes to the X server were made +that deleted the header mibstore.h and mentions the reasons. +http://lists.x.org/archives/xorg-devel/2012-September/033575.html + +Upstream-Status: Pending + +Signed-off-by: Otavio Salvador + +Index: xserver-xorg-video-imx-11.09.01/src/imx_driver.c +=================================================================== +--- xserver-xorg-video-imx-11.09.01.orig/src/imx_driver.c ++++ xserver-xorg-video-imx-11.09.01/src/imx_driver.c +@@ -37,7 +37,6 @@ + #include "xf86_OSproc.h" + + #include "mipointer.h" +-#include "mibstore.h" + #include "micmap.h" + #include "colormapst.h" + #include "xf86cmap.h" +@@ -722,7 +721,6 @@ imxScreenInit(SCREEN_INIT_ARGS_DECL) + /* Initialize for X extensions. */ + imxExtInit(); + +- miInitializeBackingStore(pScreen); + xf86SetBackingStore(pScreen); + + /* software cursor */ diff --git a/package/x11r7/xdriver_xf86-video-imx/Config.in b/package/x11r7/xdriver_xf86-video-imx/Config.in new file mode 100644 index 00000000..410a4584 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-imx/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_IMX + bool "xf86-video-imx" + depends on BR2_ARM_EABI # libz160 + depends on BR2_TOOLCHAIN_USES_GLIBC # libz160 + depends on BR2_LINUX_KERNEL # linux/mxcfb.h + depends on BR2_PACKAGE_GPU_AMD_BIN_MX51_OUTPUT_X11 + select BR2_PACKAGE_LIBZ160 + select BR2_PACKAGE_XORGPROTO + help + X.Org driver for iMX5 GPU + + To use this driver, add the correct configuration to your + /etc/X11/xorg.conf, as follows: + + Section "Device" + [...] + Driver "imx" + Option "fbdev" "/dev/fb0" + EndSection + +comment "xf86-video-imx needs an EABI toolchain w/ glibc" + depends on BR2_arm + depends on !BR2_ARM_EABI || !BR2_TOOLCHAIN_USES_GLIBC + +comment "xf86-video-imx needs gpu-amd-bin-mx51 with X11 output and a Linux kernel to be built" + depends on BR2_arm + depends on !BR2_LINUX_KERNEL || !BR2_PACKAGE_GPU_AMD_BIN_MX51_OUTPUT_X11 diff --git a/package/x11r7/xdriver_xf86-video-imx/xdriver_xf86-video-imx.hash b/package/x11r7/xdriver_xf86-video-imx/xdriver_xf86-video-imx.hash new file mode 100644 index 00000000..e2a36c55 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-imx/xdriver_xf86-video-imx.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 d7d85e9f13c6dd58addab89847f3a8a67f6382a54135c7978c9a95368af024d4 xserver-xorg-video-imx-11.09.01.tar.gz diff --git a/package/x11r7/xdriver_xf86-video-imx/xdriver_xf86-video-imx.mk b/package/x11r7/xdriver_xf86-video-imx/xdriver_xf86-video-imx.mk new file mode 100644 index 00000000..b80c6b77 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-imx/xdriver_xf86-video-imx.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-imx +# +################################################################################ + +XDRIVER_XF86_VIDEO_IMX_VERSION = 11.09.01 +XDRIVER_XF86_VIDEO_IMX_SOURCE = xserver-xorg-video-imx-$(XDRIVER_XF86_VIDEO_IMX_VERSION).tar.gz +XDRIVER_XF86_VIDEO_IMX_SITE = $(FREESCALE_IMX_SITE) +XDRIVER_XF86_VIDEO_IMX_DEPENDENCIES = linux libz160 xserver_xorg-server \ + xorgproto +XDRIVER_XF86_VIDEO_IMX_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -I$(LINUX_DIR)/include" + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-intel/Config.in b/package/x11r7/xdriver_xf86-video-intel/Config.in new file mode 100644 index 00000000..c4152b7c --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-intel/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_INTEL + bool "xf86-video-intel" + depends on (BR2_i386 || BR2_x86_64) + select BR2_PACKAGE_LIBPCIACCESS + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_LIBDRM_INTEL + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_XORGPROTO + help + Intel video driver diff --git a/package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.hash b/package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.hash new file mode 100644 index 00000000..8d091d62 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 31ae2330e07a23944e759ee2f320bdaa5760f6871cec34fd304205e8199c1dfd xdriver_xf86-video-intel-31486f40f8e8f8923ca0799aea84b58799754564-git4.tar.gz +sha256 5808e89f4b9a30afc59f335bfa8219ecf2dacb89a81d16b322bc6d92993a48fa COPYING diff --git a/package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.mk b/package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.mk new file mode 100644 index 00000000..879abdd7 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# xdriver_xf86-video-intel +# +################################################################################ + +XDRIVER_XF86_VIDEO_INTEL_VERSION = 31486f40f8e8f8923ca0799aea84b58799754564 +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 +XDRIVER_XF86_VIDEO_INTEL_AUTORECONF = YES + +# -D_GNU_SOURCE fixes a getline-related compile error in src/sna/kgem.c +# We force -O2 regardless of the optimization level chosen by the user, +# as compiling this package is known to be broken with -Os. +XDRIVER_XF86_VIDEO_INTEL_CONF_ENV = \ + CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE -O2" + +XDRIVER_XF86_VIDEO_INTEL_CONF_OPTS = \ + --disable-xvmc \ + --enable-sna \ + --disable-xaa \ + --disable-dga \ + --disable-tools \ + --disable-async-swap + +XDRIVER_XF86_VIDEO_INTEL_DEPENDENCIES = \ + libdrm \ + libpciaccess \ + xlib_libXrandr \ + xorgproto \ + xserver_xorg-server + +# DRI support is provided by xserver_xorg-server if libgl is enabled +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +XDRIVER_XF86_VIDEO_INTEL_CONF_OPTS += \ + --enable-dri2 \ + --enable-dri3 \ + --enable-uxa +else +XDRIVER_XF86_VIDEO_INTEL_CONF_OPTS += \ + --disable-dri2 \ + --disable-dri3 \ + --disable-uxa +endif + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-mach64/0001-cross-compile.patch b/package/x11r7/xdriver_xf86-video-mach64/0001-cross-compile.patch new file mode 100644 index 00000000..02d34ce9 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-mach64/0001-cross-compile.patch @@ -0,0 +1,29 @@ +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- a/configure.ac 2008-06-23 10:39:28.000000000 -0400 ++++ b/configure.ac 2008-06-23 10:40:46.000000000 -0400 +@@ -80,14 +80,20 @@ + # Checks for libraries. + + if test "$DRI" != no; then +- AC_CHECK_FILE([${sdkdir}/dri.h], ++ if test "$cross_compiling" = "no" ; then ++ AC_CHECK_FILE([${sdkdir}/dri.h], + [have_dri_h="yes"], [have_dri_h="no"]) +- AC_CHECK_FILE([${sdkdir}/sarea.h], ++ AC_CHECK_FILE([${sdkdir}/sarea.h], + [have_sarea_h="yes"], [have_sarea_h="no"]) +- AC_CHECK_FILE([${sdkdir}/dristruct.h], ++ AC_CHECK_FILE([${sdkdir}/dristruct.h], + [have_dristruct_h="yes"], [have_dristruct_h="no"]) +- AC_CHECK_FILE([${sdkdir}/damage.h], ++ AC_CHECK_FILE([${sdkdir}/damage.h], + [have_damage_h="yes"], [have_damage_h="no"]) ++ else ++ have_dri_h="yes" ++ have_sarea_h="yes" ++ have_dristruct_h="yes" ++ fi + fi + + AC_MSG_CHECKING([whether to include DRI support]) diff --git a/package/x11r7/xdriver_xf86-video-mach64/Config.in b/package/x11r7/xdriver_xf86-video-mach64/Config.in new file mode 100644 index 00000000..71c89dd2 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-mach64/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_MACH64 + bool "xf86-video-mach64" + select BR2_PACKAGE_XORGPROTO + help + mach64 video driver diff --git a/package/x11r7/xdriver_xf86-video-mach64/xdriver_xf86-video-mach64.hash b/package/x11r7/xdriver_xf86-video-mach64/xdriver_xf86-video-mach64.hash new file mode 100644 index 00000000..e33036f4 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-mach64/xdriver_xf86-video-mach64.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-July/003183.html +sha256 50d78abffa7c8227e6f187976f23a244ae2095e97f08de275529b70fba9481ba xf86-video-mach64-6.9.7.tar.xz +sha512 a511525ceb8eab95d28e815f462897ead8b99ac455c548598cc061907636e1acff8cad66621feeb33558dbfdbf59ca0648422aae8edaab7d1dcd7e386348177b xf86-video-mach64-6.9.7.tar.xz +# Locally computed +sha256 a7d68021893bced0d709338a59a137c74b11e624880e110e4a2f14ccef475120 COPYING diff --git a/package/x11r7/xdriver_xf86-video-mach64/xdriver_xf86-video-mach64.mk b/package/x11r7/xdriver_xf86-video-mach64/xdriver_xf86-video-mach64.mk new file mode 100644 index 00000000..2e41208a --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-mach64/xdriver_xf86-video-mach64.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# xdriver_xf86-video-mach64 +# +################################################################################ + +XDRIVER_XF86_VIDEO_MACH64_VERSION = 6.9.7 +XDRIVER_XF86_VIDEO_MACH64_SOURCE = xf86-video-mach64-$(XDRIVER_XF86_VIDEO_MACH64_VERSION).tar.xz +XDRIVER_XF86_VIDEO_MACH64_SITE = https://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_MACH64_LICENSE = MIT +XDRIVER_XF86_VIDEO_MACH64_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_MACH64_AUTORECONF = YES +XDRIVER_XF86_VIDEO_MACH64_DEPENDENCIES = xserver_xorg-server xorgproto + +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +XDRIVER_XF86_VIDEO_MACH64_CONF_OPTS += --enable-dri +else +XDRIVER_XF86_VIDEO_MACH64_CONF_OPTS += --disable-dri +endif + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-mga/Config.in b/package/x11r7/xdriver_xf86-video-mga/Config.in new file mode 100644 index 00000000..bac5e624 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-mga/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_MGA + bool "xf86-video-mga" + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_XORGPROTO + help + Matrox video driver diff --git a/package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.hash b/package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.hash new file mode 100644 index 00000000..81342978 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-July/003184.html +sha256 27a33b70837965bb4a5f27fd260be085ca5bba837a4e62907f093c2f205603ab xf86-video-mga-2.0.1.tar.xz +sha512 d9a0abedb71f3354788c2f91b770bc00c4118cfa2c99072dea82c28f025bc87bb88ebaf969962a8f0e97e1ff7938aebd9c682b730b0e07d5174dd9e8dc2cdfb6 xf86-video-mga-2.0.1.tar.xz +# Locally computed +sha256 f69c2f4fd11ec4de7fcc23146187836eed1755aade3fef28b9204ea1a4adf61b COPYING diff --git a/package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.mk b/package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.mk new file mode 100644 index 00000000..4841a643 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# xdriver_xf86-video-mga +# +################################################################################ + +XDRIVER_XF86_VIDEO_MGA_VERSION = 2.0.1 +XDRIVER_XF86_VIDEO_MGA_SOURCE = xf86-video-mga-$(XDRIVER_XF86_VIDEO_MGA_VERSION).tar.xz +XDRIVER_XF86_VIDEO_MGA_SITE = https://xorg.freedesktop.org/archive/individual/driver +XDRIVER_XF86_VIDEO_MGA_LICENSE = MIT +XDRIVER_XF86_VIDEO_MGA_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_MGA_DEPENDENCIES = xserver_xorg-server libdrm xorgproto + +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +XDRIVER_XF86_VIDEO_MGA_CONF_OPTS += --enable-dri +else +XDRIVER_XF86_VIDEO_MGA_CONF_OPTS += --disable-dri +endif + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-neomagic/Config.in b/package/x11r7/xdriver_xf86-video-neomagic/Config.in new file mode 100644 index 00000000..5f36a48f --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-neomagic/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_NEOMAGIC + bool "xf86-video-neomagic" + select BR2_PACKAGE_XORGPROTO + help + Neomagic video driver diff --git a/package/x11r7/xdriver_xf86-video-neomagic/xdriver_xf86-video-neomagic.hash b/package/x11r7/xdriver_xf86-video-neomagic/xdriver_xf86-video-neomagic.hash new file mode 100644 index 00000000..b5a139fd --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-neomagic/xdriver_xf86-video-neomagic.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-April/003380.html +sha256 b61fac7ec32971e92e34cfd51f88fef169e272a210455e0e1a0faa0d30fc7494 xf86-video-neomagic-1.3.1.tar.xz +sha512 b2425c4e9b8e6e816cbb6fa436da12bd242acf55c3c615352fc80ea072b1822abdb40838c2adcc3c450e429ec6e3b5112d194e739cf5d8ac22d430e273d5378b xf86-video-neomagic-1.3.1.tar.xz +# Locally computed +sha256 95063ce9aa09850025dd317549ce688519079a8d3cf66ceb3d882cb2bafcced9 COPYING diff --git a/package/x11r7/xdriver_xf86-video-neomagic/xdriver_xf86-video-neomagic.mk b/package/x11r7/xdriver_xf86-video-neomagic/xdriver_xf86-video-neomagic.mk new file mode 100644 index 00000000..8c7beeed --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-neomagic/xdriver_xf86-video-neomagic.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-neomagic +# +################################################################################ + +XDRIVER_XF86_VIDEO_NEOMAGIC_VERSION = 1.3.1 +XDRIVER_XF86_VIDEO_NEOMAGIC_SOURCE = xf86-video-neomagic-$(XDRIVER_XF86_VIDEO_NEOMAGIC_VERSION).tar.xz +XDRIVER_XF86_VIDEO_NEOMAGIC_SITE = https://xorg.freedesktop.org/archive/individual/driver +XDRIVER_XF86_VIDEO_NEOMAGIC_LICENSE = MIT +XDRIVER_XF86_VIDEO_NEOMAGIC_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_NEOMAGIC_DEPENDENCIES = xserver_xorg-server xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-nouveau/0001-nouveau-fixup-driver-for-new-X-server-ABI.patch b/package/x11r7/xdriver_xf86-video-nouveau/0001-nouveau-fixup-driver-for-new-X-server-ABI.patch new file mode 100644 index 00000000..96be4909 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-nouveau/0001-nouveau-fixup-driver-for-new-X-server-ABI.patch @@ -0,0 +1,68 @@ +From e80e73ced69b15662103d0fd6837db4ce6c6eb5b Mon Sep 17 00:00:00 2001 +From: Dave Airlie +Date: Mon, 13 Jul 2020 09:20:15 +1000 +Subject: [PATCH] nouveau: fixup driver for new X server ABI + +Downloaded from upstream commit +https://gitlab.freedesktop.org/xorg/driver/xf86-video-nouveau/-/commit/e80e73ced69b15662103d0fd6837db4ce6c6eb5b + +Signed-off-by: Bernd Kuhls +--- + src/compat-api.h | 4 ++++ + src/nouveau_exa.c | 2 +- + src/nv_driver.c | 6 +++--- + 3 files changed, 8 insertions(+), 4 deletions(-) + +diff --git a/src/compat-api.h b/src/compat-api.h +index fde2f4b..8a1fcf9 100644 +--- a/src/compat-api.h ++++ b/src/compat-api.h +@@ -102,4 +102,8 @@ + + #endif + ++#if ABI_VIDEODRV_VERSION < SET_ABI_VERSION(25, 2) ++#define secondary_dst slave_dst ++#endif ++ + #endif +diff --git a/src/nouveau_exa.c b/src/nouveau_exa.c +index 55df6f8..db3b112 100644 +--- a/src/nouveau_exa.c ++++ b/src/nouveau_exa.c +@@ -157,7 +157,7 @@ nouveau_exa_destroy_pixmap(ScreenPtr pScreen, void *priv) + + #ifdef NOUVEAU_PIXMAP_SHARING + static Bool +-nouveau_exa_share_pixmap_backing(PixmapPtr ppix, ScreenPtr slave, void **handle_p) ++nouveau_exa_share_pixmap_backing(PixmapPtr ppix, ScreenPtr secondary, void **handle_p) + { + struct nouveau_bo *bo = nouveau_pixmap_bo(ppix); + struct nouveau_pixmap *nvpix = nouveau_pixmap(ppix); +diff --git a/src/nv_driver.c b/src/nv_driver.c +index e72a6b6..f9ab4af 100644 +--- a/src/nv_driver.c ++++ b/src/nv_driver.c +@@ -559,16 +559,16 @@ redisplay_dirty(ScreenPtr screen, PixmapDirtyUpdatePtr dirty) + { + RegionRec pixregion; + +- PixmapRegionInit(&pixregion, dirty->slave_dst); ++ PixmapRegionInit(&pixregion, dirty->secondary_dst); + +- DamageRegionAppend(&dirty->slave_dst->drawable, &pixregion); ++ DamageRegionAppend(&dirty->secondary_dst->drawable, &pixregion); + #ifdef HAS_DIRTYTRACKING_ROTATION + PixmapSyncDirtyHelper(dirty); + #else + PixmapSyncDirtyHelper(dirty, &pixregion); + #endif + +- DamageRegionProcessPending(&dirty->slave_dst->drawable); ++ DamageRegionProcessPending(&dirty->secondary_dst->drawable); + RegionUninit(&pixregion); + } + +-- +GitLab + diff --git a/package/x11r7/xdriver_xf86-video-nouveau/Config.in b/package/x11r7/xdriver_xf86-video-nouveau/Config.in new file mode 100644 index 00000000..5b266b1b --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-nouveau/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_NOUVEAU + bool "xf86-video-nouveau" + depends on BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_LIBDRM_NOUVEAU + select BR2_PACKAGE_XORGPROTO + help + Nouveau video driver + + http://nouveau.freedesktop.org + +comment "xf86-video-nouveau needs an OpenGL backend" + depends on !BR2_PACKAGE_HAS_LIBGL diff --git a/package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.hash b/package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.hash new file mode 100644 index 00000000..336f29be --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.hash @@ -0,0 +1,6 @@ +# From https://lists.freedesktop.org/archives/nouveau/2021-January/037766.html +sha256 499322e27a55c8183166bf2dd1e47d085eb834143e0d7036baba8427b90c156b xf86-video-nouveau-1.0.17.tar.bz2 +sha512 adba58ba5298d1a5b3f9f8540f9ef2cb2e10e47bba8e374103ec2e1f92e915f5f4393ed0021168cd649646e12315135a1efcdf77e8fb1648e1295914d87279b2 xf86-video-nouveau-1.0.17.tar.bz2 + +# Locally computed +sha256 27d8cbdcde7a0bd062ce49cdf8c672201452a64e3e6823f09b1beffe2c4b8eff COPYING diff --git a/package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.mk b/package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.mk new file mode 100644 index 00000000..e63bc611 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# xdriver_xf86-video-nouveau +# +################################################################################ + +XDRIVER_XF86_VIDEO_NOUVEAU_VERSION = 1.0.17 +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 +XDRIVER_XF86_VIDEO_NOUVEAU_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_NOUVEAU_DEPENDENCIES = \ + host-pkgconf \ + libdrm \ + xorgproto \ + xserver_xorg-server + +# xdriver_xf86-video-nouveau requires O_CLOEXEC +XDRIVER_XF86_VIDEO_NOUVEAU_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE" + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-nv/Config.in b/package/x11r7/xdriver_xf86-video-nv/Config.in new file mode 100644 index 00000000..5ff8b798 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-nv/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_NV + bool "xf86-video-nv" + select BR2_PACKAGE_XORGPROTO + help + NVIDIA video driver diff --git a/package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.hash b/package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.hash new file mode 100644 index 00000000..ec7d198c --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-July/003196.html +sha256 6218932db5c389878d853b11b8fbb667c321b65276f55aa6842a56fb1a30d288 xf86-video-nv-2.1.22.tar.xz +sha512 a54767e9060404cafbb028ea36e582e8cfb7431a746cfc1d698c435fa73e41c4dfc12f84e50d002a582ac61e2d4c377f4defdf407250ee9e8656e5ff989b3cda xf86-video-nv-2.1.22.tar.xz +# Locally calculated +sha256 10d10e1ec37594d481c3de8dda22a40b731ebd43be7ccd462baaa7394738a9f3 COPYING diff --git a/package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.mk b/package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.mk new file mode 100644 index 00000000..2aab60aa --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-nv +# +################################################################################ + +XDRIVER_XF86_VIDEO_NV_VERSION = 2.1.22 +XDRIVER_XF86_VIDEO_NV_SOURCE = xf86-video-nv-$(XDRIVER_XF86_VIDEO_NV_VERSION).tar.xz +XDRIVER_XF86_VIDEO_NV_SITE = https://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_NV_LICENSE = MIT +XDRIVER_XF86_VIDEO_NV_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_NV_DEPENDENCIES = xserver_xorg-server xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-openchrome/Config.in b/package/x11r7/xdriver_xf86-video-openchrome/Config.in new file mode 100644 index 00000000..f95e959f --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-openchrome/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_OPENCHROME + bool "xf86-video-openchrome" + depends on BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE + select BR2_PACKAGE_XLIB_LIBXVMC + select BR2_PACKAGE_XORGPROTO + help + Openchrome, A free and Open Source video driver for the + VIA/S3G UniChrome and UniChrome Pro graphics chipsets. + + https://www.freedesktop.org/wiki/Openchrome/ + +comment "xf86-video-openchrome needs an OpenGL backend" + depends on !BR2_PACKAGE_HAS_LIBGL diff --git a/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.hash b/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.hash new file mode 100644 index 00000000..3b011c95 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 2495ef208415ef9d2173322df0ec3a29f2d0a83051b0a19c89cd4178d0def029 xdriver_xf86-video-openchrome-ab03de703b91c7e0fd3e4d1ca06ad5add7f077a1-git4.tar.gz +sha256 1fde58bce5cff8c32e9a0a80bfa3e60213a2767954e30a367127d5afa2884ca2 COPYING diff --git a/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.mk b/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.mk new file mode 100644 index 00000000..e8001004 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xdriver_xf86-video-openchrome +# +################################################################################ + +XDRIVER_XF86_VIDEO_OPENCHROME_VERSION = ab03de703b91c7e0fd3e4d1ca06ad5add7f077a1 +XDRIVER_XF86_VIDEO_OPENCHROME_SITE = https://anongit.freedesktop.org/git/openchrome/xf86-video-openchrome.git +XDRIVER_XF86_VIDEO_OPENCHROME_SITE_METHOD = git +XDRIVER_XF86_VIDEO_OPENCHROME_LICENSE = MIT +XDRIVER_XF86_VIDEO_OPENCHROME_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_OPENCHROME_AUTORECONF = YES + +XDRIVER_XF86_VIDEO_OPENCHROME_DEPENDENCIES = \ + xserver_xorg-server \ + libdrm \ + xlib_libX11 \ + xlib_libXcomposite \ + xlib_libXvMC \ + xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-qxl/Config.in b/package/x11r7/xdriver_xf86-video-qxl/Config.in new file mode 100644 index 00000000..0c6b13ed --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-qxl/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_QXL + bool "xf86-video-qxl" + depends on (BR2_i386 || BR2_x86_64) + 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_XORGPROTO + help + QEMU QXL paravirt video driver + + https://gitlab.freedesktop.org/xorg/driver/xf86-video-qxl diff --git a/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.hash b/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.hash new file mode 100644 index 00000000..2d728a7c --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-January/003316.html +sha256 2ad39558db47a8fcc036e290e0b084671e58d43344a57b279abd870c4c67965f xf86-video-qxl-0.1.6.tar.xz +sha512 f6a42355915d2e8f8a842dc24fe6d012d123aa6d23eedea1a4771fb08f88e0298d76741755b88304d76c66b3aae15f9fca74d062be395e499a82ee8f4507c7e0 xf86-video-qxl-0.1.6.tar.xz +# Locally calculated +sha256 83f3bf7be3fbf5e66174b8184bd837a6b44264f8e340126ea4d9e9ce956a1866 COPYING diff --git a/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.mk b/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.mk new file mode 100644 index 00000000..db0bbbaf --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# xdriver_xf86-video-qxl +# +################################################################################ + +XDRIVER_XF86_VIDEO_QXL_VERSION = 0.1.6 +XDRIVER_XF86_VIDEO_QXL_SOURCE = xf86-video-qxl-$(XDRIVER_XF86_VIDEO_QXL_VERSION).tar.xz +XDRIVER_XF86_VIDEO_QXL_SITE = https://xorg.freedesktop.org/archive/individual/driver +XDRIVER_XF86_VIDEO_QXL_LICENSE = MIT +XDRIVER_XF86_VIDEO_QXL_LICENSE_FILES = COPYING + +XDRIVER_XF86_VIDEO_QXL_CONF_OPTS = \ + --enable-xspice=no + +XDRIVER_XF86_VIDEO_QXL_DEPENDENCIES = \ + libpciaccess \ + spice-protocol \ + xorgproto \ + xserver_xorg-server + +# configure doesn't look for drm headers in the appropiate place, so help it +# libdrm is only useful with udev for KMS +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +XDRIVER_XF86_VIDEO_QXL_CONF_ENV += REQUIRED_MODULES=libdrm +XDRIVER_XF86_VIDEO_QXL_DEPENDENCIES += libdrm +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/package/x11r7/xdriver_xf86-video-r128/Config.in b/package/x11r7/xdriver_xf86-video-r128/Config.in new file mode 100644 index 00000000..e1e2dd2f --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-r128/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_R128 + bool "xf86-video-r128" + select BR2_PACKAGE_XORGPROTO + help + R128 video driver diff --git a/package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.hash b/package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.hash new file mode 100644 index 00000000..cf9b21eb --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003275.html +sha256 7d023c2b171f1664e43d12a1d21674079d8065536f82bb95b448bfce4981c741 xf86-video-r128-6.12.1.tar.xz +sha512 18b2408fe68161c32f84c7147717f8e6c6377e81e9d59e2f098843c54cd0ae757aab5059568da8c71ef38100807d56ee22447417c236c1b3deea292bb676e700 xf86-video-r128-6.12.1.tar.xz +# Locally computed +sha256 69f7c71859dc8f51aabdbe7a9ee915a480933eb81658f8af2bf4c918e65afe8b COPYING diff --git a/package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.mk b/package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.mk new file mode 100644 index 00000000..49514e3d --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# xdriver_xf86-video-r128 +# +################################################################################ + +XDRIVER_XF86_VIDEO_R128_VERSION = 6.12.1 +XDRIVER_XF86_VIDEO_R128_SOURCE = xf86-video-r128-$(XDRIVER_XF86_VIDEO_R128_VERSION).tar.xz +XDRIVER_XF86_VIDEO_R128_SITE = https://xorg.freedesktop.org/archive/individual/driver +XDRIVER_XF86_VIDEO_R128_LICENSE = MIT +XDRIVER_XF86_VIDEO_R128_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_R128_DEPENDENCIES = xserver_xorg-server xorgproto + +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +XDRIVER_XF86_VIDEO_R128_CONF_OPTS += --enable-dri +else +XDRIVER_XF86_VIDEO_R128_CONF_OPTS += --disable-dri +endif + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-savage/Config.in b/package/x11r7/xdriver_xf86-video-savage/Config.in new file mode 100644 index 00000000..ab6fd898 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-savage/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_SAVAGE + bool "xf86-video-savage" + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_XORGPROTO + help + S3 Savage video driver diff --git a/package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.hash b/package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.hash new file mode 100644 index 00000000..4482ff59 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-April/003381.html +sha256 b36cf02cfdd08a39423bb977c45397fbca5813267c727f0fd3c963ac38b601fd xf86-video-savage-2.4.0.tar.xz +sha512 a4db097c200f1430887e4c52bbe14aeaaa2c73dfc392beeed104c682114bd067f89b69994d649829cdc5d188cdbe7a41b22c82b0b49e3a02cdf366013ebbc161 xf86-video-savage-2.4.0.tar.xz +# Locally calculated +sha256 611f4020815e3d5011a39a58f0958262715cd3becd9cb1ef14cc166fd84ec5a6 COPYING diff --git a/package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.mk b/package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.mk new file mode 100644 index 00000000..03983d5c --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# xdriver_xf86-video-savage +# +################################################################################ + +XDRIVER_XF86_VIDEO_SAVAGE_VERSION = 2.4.0 +XDRIVER_XF86_VIDEO_SAVAGE_SOURCE = xf86-video-savage-$(XDRIVER_XF86_VIDEO_SAVAGE_VERSION).tar.xz +XDRIVER_XF86_VIDEO_SAVAGE_SITE = https://xorg.freedesktop.org/archive/individual/driver +XDRIVER_XF86_VIDEO_SAVAGE_LICENSE = MIT +XDRIVER_XF86_VIDEO_SAVAGE_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_SAVAGE_DEPENDENCIES = xserver_xorg-server libdrm xorgproto + +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +XDRIVER_XF86_VIDEO_SAVAGE_CONF_OPTS += --enable-dri +else +XDRIVER_XF86_VIDEO_SAVAGE_CONF_OPTS += --disable-dri +endif + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-siliconmotion/Config.in b/package/x11r7/xdriver_xf86-video-siliconmotion/Config.in new file mode 100644 index 00000000..036a2f1c --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-siliconmotion/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_SILICONMOTION + bool "xf86-video-siliconmotion" + select BR2_PACKAGE_XORGPROTO + help + Silicon Motion video driver diff --git a/package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.hash b/package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.hash new file mode 100644 index 00000000..eeff39fe --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.hash @@ -0,0 +1,4 @@ +# From https://lists.x.org/archives/xorg-announce/2017-January/002763.html +sha256 d0f3c691e71108d27a061beb62bf78b36ec35bd755905692734dd68cfb3359bc xf86-video-siliconmotion-1.7.9.tar.bz2 +# Locally calculated +sha256 e1e3ce7ce1f63fff96444206e09c8490ad7a4af7457c81ea6cdee4f1fee1f960 COPYING diff --git a/package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.mk b/package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.mk new file mode 100644 index 00000000..65fd8465 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xdriver_xf86-video-siliconmotion +# +################################################################################ + +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 +XDRIVER_XF86_VIDEO_SILICONMOTION_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_SILICONMOTION_DEPENDENCIES = xserver_xorg-server xorgproto + +XDRIVER_XF86_VIDEO_SILICONMOTION_CONF_OPTS = --disable-selective-werror + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-sis/Config.in b/package/x11r7/xdriver_xf86-video-sis/Config.in new file mode 100644 index 00000000..8e00589a --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-sis/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_SIS + bool "xf86-video-sis" + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_XORGPROTO + help + SiS and XGI video driver diff --git a/package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.hash b/package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.hash new file mode 100644 index 00000000..b2215383 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.hash @@ -0,0 +1,7 @@ +# From https://lists.x.org/archives/xorg-announce/2019-December/003033.html +md5 b8ec9c21758043b1480f11baec296f5d xf86-video-sis-0.12.0.tar.bz2 +sha1 d22f0d0081e222a62f9e788f5e73246c6d339f80 xf86-video-sis-0.12.0.tar.bz2 +sha256 119d3f17d53c862ec4bf891ed696a6f1d32cdf8bd11d944a9f0ad24625333a5b xf86-video-sis-0.12.0.tar.bz2 +sha512 5aa101e5217f15667f2c94f7a76f4afcf47717b61f5d206ce65efe35dc3f674ca294f98ca8586971c6467f31decdd94d8255ebfc7dc220fac0179afc61995952 xf86-video-sis-0.12.0.tar.bz2 +# Locally computed +sha256 e7958f9497a4daa3ae5aeaf885e4565520af2c540b6e4e04b52bf95d41d56c39 COPYING diff --git a/package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.mk b/package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.mk new file mode 100644 index 00000000..0417f8ae --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# xdriver_xf86-video-sis +# +################################################################################ + +XDRIVER_XF86_VIDEO_SIS_VERSION = 0.12.0 +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 +XDRIVER_XF86_VIDEO_SIS_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_SIS_DEPENDENCIES = xserver_xorg-server libdrm xorgproto + +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +XDRIVER_XF86_VIDEO_SIS_CONF_OPTS += --enable-dri +else +XDRIVER_XF86_VIDEO_SIS_CONF_OPTS += --disable-dri +endif + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-tdfx/0001-cross.patch b/package/x11r7/xdriver_xf86-video-tdfx/0001-cross.patch new file mode 100644 index 00000000..f9880afb --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-tdfx/0001-cross.patch @@ -0,0 +1,26 @@ +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- xf86-video-tdfx-1.3.0/configure.ac.orig 2007-06-10 21:01:54.000000000 +0200 ++++ xf86-video-tdfx-1.3.0/configure.ac 2007-06-10 21:02:06.000000000 +0200 +@@ -75,13 +75,20 @@ + [#include "xorg-server.h"]) + CPPFLAGS="$SAVE_CPPFLAGS" + +-if test "$DRI" != no; then ++if test "x$DRI" != xno; then ++ if test "$cross_compiling" = "no" ; then + AC_CHECK_FILE([${sdkdir}/dri.h], + [have_dri_h="yes"], [have_dri_h="no"]) + AC_CHECK_FILE([${sdkdir}/sarea.h], + [have_sarea_h="yes"], [have_sarea_h="no"]) + AC_CHECK_FILE([${sdkdir}/dristruct.h], + [have_dristruct_h="yes"], [have_dristruct_h="no"]) ++ AC_CHECK_HEADER ++ else ++ have_dri_h="yes" ++ have_sarea_h="yes" ++ have_dristruct_h="yes" ++ fi + fi + + AC_MSG_CHECKING([whether to include DRI support]) diff --git a/package/x11r7/xdriver_xf86-video-tdfx/Config.in b/package/x11r7/xdriver_xf86-video-tdfx/Config.in new file mode 100644 index 00000000..14b8f0ad --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-tdfx/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_TDFX + bool "xf86-video-tdfx" + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_XORGPROTO + help + 3Dfx video driver diff --git a/package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.hash b/package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.hash new file mode 100644 index 00000000..9602cb2c --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.hash @@ -0,0 +1,7 @@ +# From https://lists.x.org/archives/xorg-announce/2019-February/002944.html +md5 4697f0cc69ff1ff90bc770863c158d29 xf86-video-tdfx-1.5.0.tar.bz2 +sha1 8042dd0c2bc5a396b2cfeb5418b03059a089be25 xf86-video-tdfx-1.5.0.tar.bz2 +sha256 2f4580e1f66901dd578d6e1f73df8150fd4b8480eb0c9653d4c5d8e0f8e78561 xf86-video-tdfx-1.5.0.tar.bz2 +sha512 eca3359c7db56183a1cfcce7295e41ccc349005ee1cbcf75209f1e4e8e04e887ba511712ef35efc11c940713c8327b0b8ab8b6c86facf02062b3e84c0b1af5ff xf86-video-tdfx-1.5.0.tar.bz2 +# Locally computed +sha256 5bb3d3baff0b7bbef885215ca9c12a5be1a42c848c96601b699637557fbb41ec COPYING diff --git a/package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.mk b/package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.mk new file mode 100644 index 00000000..e6878768 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# xdriver_xf86-video-tdfx +# +################################################################################ + +XDRIVER_XF86_VIDEO_TDFX_VERSION = 1.5.0 +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 +XDRIVER_XF86_VIDEO_TDFX_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_TDFX_AUTORECONF = YES +XDRIVER_XF86_VIDEO_TDFX_DEPENDENCIES = \ + libdrm \ + xorgproto \ + xserver_xorg-server + +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +XDRIVER_XF86_VIDEO_TDFX_CONF_OPTS += --enable-dri +else +XDRIVER_XF86_VIDEO_TDFX_CONF_OPTS += --disable-dri +endif + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-trident/Config.in b/package/x11r7/xdriver_xf86-video-trident/Config.in new file mode 100644 index 00000000..ca7069c8 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-trident/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_TRIDENT + bool "xf86-video-trident" + select BR2_PACKAGE_XORGPROTO + help + Trident video driver diff --git a/package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.hash b/package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.hash new file mode 100644 index 00000000..2ef66448 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-February/003326.html +sha256 7f76219ca7d7dc6061aa3c2aa59bc2a63895b8e6217e413ce315949f57b0189b xf86-video-trident-1.4.0.tar.xz +sha512 86f349ccfcf7c704e77a95882f63ac92f55819a3a00388f294777762fed04dde2197dd6124cded9e787af1982fecc43ad4d0af34307845e616a73d5a2ba750b9 xf86-video-trident-1.4.0.tar.xz +# Locally calculated +sha256 4f065198c49eac1513b915bc4478152c21119f31a97919a6ea8f3e1d10133d15 COPYING diff --git a/package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.mk b/package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.mk new file mode 100644 index 00000000..53fe1504 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-trident +# +################################################################################ + +XDRIVER_XF86_VIDEO_TRIDENT_VERSION = 1.4.0 +XDRIVER_XF86_VIDEO_TRIDENT_SOURCE = xf86-video-trident-$(XDRIVER_XF86_VIDEO_TRIDENT_VERSION).tar.xz +XDRIVER_XF86_VIDEO_TRIDENT_SITE = https://xorg.freedesktop.org/archive/individual/driver +XDRIVER_XF86_VIDEO_TRIDENT_LICENSE = MIT +XDRIVER_XF86_VIDEO_TRIDENT_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_TRIDENT_DEPENDENCIES = xserver_xorg-server xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-vesa/Config.in b/package/x11r7/xdriver_xf86-video-vesa/Config.in new file mode 100644 index 00000000..fb4e4e8e --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-vesa/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_VESA + bool "xf86-video-vesa" + select BR2_PACKAGE_XORGPROTO + help + Generic VESA video driver diff --git a/package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.hash b/package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.hash new file mode 100644 index 00000000..3e32249f --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003297.html +sha256 10082771b1a8f659c60b3d9b70456a4b59948a75b3cade2dfa33b8b05e549bb1 xf86-video-vesa-2.6.0.tar.xz +sha512 494e117c1e6e0ce4c66ac7798de54667862c62605bfd76dd9373447d40dcd0521100810c9285cbe9c159440e217954c0cad6d5219c5894e075509c7c0bc353c7 xf86-video-vesa-2.6.0.tar.xz +# Locally computed +sha256 bda49ba1e860501c20fd444423bc790f6da4f769561b69acc0cbe5abff9409b6 COPYING diff --git a/package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.mk b/package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.mk new file mode 100644 index 00000000..8a5a5ebf --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-vesa +# +################################################################################ + +XDRIVER_XF86_VIDEO_VESA_VERSION = 2.6.0 +XDRIVER_XF86_VIDEO_VESA_SOURCE = xf86-video-vesa-$(XDRIVER_XF86_VIDEO_VESA_VERSION).tar.xz +XDRIVER_XF86_VIDEO_VESA_SITE = https://xorg.freedesktop.org/archive/individual/driver +XDRIVER_XF86_VIDEO_VESA_LICENSE = MIT +XDRIVER_XF86_VIDEO_VESA_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_VESA_DEPENDENCIES = xserver_xorg-server xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-vmware/Config.in b/package/x11r7/xdriver_xf86-video-vmware/Config.in new file mode 100644 index 00000000..6d937b47 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-vmware/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_VMWARE + bool "xf86-video-vmware" + depends on BR2_PACKAGE_MESA3D + depends on BR2_i386 || BR2_x86_64 + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SVGA + select BR2_PACKAGE_XORGPROTO + help + VMware SVGA video driver + +comment "xf86-video-vmware needs mesa3d" + depends on !BR2_PACKAGE_MESA3D diff --git a/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.hash b/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.hash new file mode 100644 index 00000000..a6415703 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-January/003315.html +sha256 aed31ee5ed5ecc6e2226705383e7ad06f7602c1376a295305f376b17af3eb81a xf86-video-vmware-13.4.0.tar.xz +sha512 7cacde21a490501dd9c2e9121040274c1f6ef64e6dc0ef49946b400f6297fab73a6e9548e45fe8930cee9028e65e45aaff9ba489dd69ac75a5133114726bf55d xf86-video-vmware-13.4.0.tar.xz +# Locally computed +sha256 7e59b8ca2a161855a60561f27ada8dfdbb678733eacdb23423fff6d21f9ad43b COPYING diff --git a/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.mk b/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.mk new file mode 100644 index 00000000..37c2d67c --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# xdriver_xf86-video-vmware +# +################################################################################ + +XDRIVER_XF86_VIDEO_VMWARE_VERSION = 13.4.0 +XDRIVER_XF86_VIDEO_VMWARE_SOURCE = xf86-video-vmware-$(XDRIVER_XF86_VIDEO_VMWARE_VERSION).tar.xz +XDRIVER_XF86_VIDEO_VMWARE_SITE = https://xorg.freedesktop.org/archive/individual/driver +XDRIVER_XF86_VIDEO_VMWARE_LICENSE = MIT +XDRIVER_XF86_VIDEO_VMWARE_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_VMWARE_DEPENDENCIES = mesa3d xserver_xorg-server xorgproto + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +XDRIVER_XF86_VIDEO_VMWARE_CONF_OPTS += --with-libudev +XDRIVER_XF86_VIDEO_VMWARE_DEPENDENCIES += udev +else +XDRIVER_XF86_VIDEO_VMWARE_CONF_OPTS += --without-libudev +endif + +$(eval $(autotools-package)) diff --git a/package/x11r7/xdriver_xf86-video-voodoo/Config.in b/package/x11r7/xdriver_xf86-video-voodoo/Config.in new file mode 100644 index 00000000..f4612120 --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-voodoo/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_VOODOO + bool "xf86-video-voodoo" + select BR2_PACKAGE_XORGPROTO + help + Voodoo video driver diff --git a/package/x11r7/xdriver_xf86-video-voodoo/xdriver_xf86-video-voodoo.hash b/package/x11r7/xdriver_xf86-video-voodoo/xdriver_xf86-video-voodoo.hash new file mode 100644 index 00000000..1220ec6c --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-voodoo/xdriver_xf86-video-voodoo.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003298.html +sha256 622973f03ac0bd0c854794ebeac268f15f4f831ec0dbe36e6cfa2b65042af602 xf86-video-voodoo-1.2.6.tar.xz +sha512 c889d79044438d6b15efceda07f63874063a2faa24a86d048e62c8ad1364efdfec04ff7ec662ad0749d2a7263abb14edb74e7d5ebf9a1aa880edb2b341a80a31 xf86-video-voodoo-1.2.6.tar.xz +# Locally computed +sha256 59ed98e3f6c6d0358d75183cf18a295d807acf2c3ea489197dd0a287b6e39bf1 COPYING diff --git a/package/x11r7/xdriver_xf86-video-voodoo/xdriver_xf86-video-voodoo.mk b/package/x11r7/xdriver_xf86-video-voodoo/xdriver_xf86-video-voodoo.mk new file mode 100644 index 00000000..33264a0b --- /dev/null +++ b/package/x11r7/xdriver_xf86-video-voodoo/xdriver_xf86-video-voodoo.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-voodoo +# +################################################################################ + +XDRIVER_XF86_VIDEO_VOODOO_VERSION = 1.2.6 +XDRIVER_XF86_VIDEO_VOODOO_SOURCE = xf86-video-voodoo-$(XDRIVER_XF86_VIDEO_VOODOO_VERSION).tar.xz +XDRIVER_XF86_VIDEO_VOODOO_SITE = https://xorg.freedesktop.org/archive/individual/driver +XDRIVER_XF86_VIDEO_VOODOO_LICENSE = MIT +XDRIVER_XF86_VIDEO_VOODOO_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_VOODOO_DEPENDENCIES = xserver_xorg-server xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_encodings/Config.in b/package/x11r7/xfont_encodings/Config.in new file mode 100644 index 00000000..d771ffb9 --- /dev/null +++ b/package/x11r7/xfont_encodings/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_ENCODINGS + bool "encodings" + select BR2_PACKAGE_XUTIL_UTIL_MACROS + help + No description available diff --git a/package/x11r7/xfont_encodings/xfont_encodings.hash b/package/x11r7/xfont_encodings/xfont_encodings.hash new file mode 100644 index 00000000..80d4a48c --- /dev/null +++ b/package/x11r7/xfont_encodings/xfont_encodings.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-February/003355.html +sha256 3a39a9f43b16521cdbd9f810090952af4f109b44fa7a865cd555f8febcea70a4 encodings-1.0.7.tar.xz +sha512 dc72982b14e5d89fe1eff1ab11f308796c89255a06337d8cd6bf65757f11dd0a5478b41d844793213db8fe9638389734f148abe9df9fb05027ea563dacde6ba8 encodings-1.0.7.tar.xz +# Locally computed +sha256 13b4a0f9431f0fdd6ee36ed386e0b7d1eb429c5cb88df73353896078cbb5a137 COPYING diff --git a/package/x11r7/xfont_encodings/xfont_encodings.mk b/package/x11r7/xfont_encodings/xfont_encodings.mk new file mode 100644 index 00000000..7825f411 --- /dev/null +++ b/package/x11r7/xfont_encodings/xfont_encodings.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# xfont_encodings +# +################################################################################ + +XFONT_ENCODINGS_VERSION = 1.0.7 +XFONT_ENCODINGS_SOURCE = encodings-$(XFONT_ENCODINGS_VERSION).tar.xz +XFONT_ENCODINGS_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_ENCODINGS_LICENSE = Public Domain +XFONT_ENCODINGS_LICENSE_FILES = COPYING + +XFONT_ENCODINGS_DEPENDENCIES = host-xapp_mkfontscale host-pkgconf xutil_util-macros +HOST_XFONT_ENCODINGS_DEPENDENCIES = \ + host-xapp_mkfontscale host-pkgconf host-xutil_util-macros + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/x11r7/xfont_font-adobe-100dpi/Config.in b/package/x11r7/xfont_font-adobe-100dpi/Config.in new file mode 100644 index 00000000..766c06e7 --- /dev/null +++ b/package/x11r7/xfont_font-adobe-100dpi/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_ADOBE_100DPI + bool "font-adobe-100dpi" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-adobe-100dpi/xfont_font-adobe-100dpi.hash b/package/x11r7/xfont_font-adobe-100dpi/xfont_font-adobe-100dpi.hash new file mode 100644 index 00000000..6c96f7df --- /dev/null +++ b/package/x11r7/xfont_font-adobe-100dpi/xfont_font-adobe-100dpi.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 b67aff445e056328d53f9732d39884f55dd8d303fc25af3dbba33a8ba35a9ccf font-adobe-100dpi-1.0.4.tar.xz +sha256 bf6d862672b4fcc86f3f38bc138ad44e52d52207dd8689b8d3701630fc331194 COPYING diff --git a/package/x11r7/xfont_font-adobe-100dpi/xfont_font-adobe-100dpi.mk b/package/x11r7/xfont_font-adobe-100dpi/xfont_font-adobe-100dpi.mk new file mode 100644 index 00000000..498f39d1 --- /dev/null +++ b/package/x11r7/xfont_font-adobe-100dpi/xfont_font-adobe-100dpi.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-adobe-100dpi +# +################################################################################ + +XFONT_FONT_ADOBE_100DPI_VERSION = 1.0.4 +XFONT_FONT_ADOBE_100DPI_SOURCE = font-adobe-100dpi-$(XFONT_FONT_ADOBE_100DPI_VERSION).tar.xz +XFONT_FONT_ADOBE_100DPI_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_ADOBE_100DPI_LICENSE = MIT +XFONT_FONT_ADOBE_100DPI_LICENSE_FILES = COPYING + +XFONT_FONT_ADOBE_100DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_ADOBE_100DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_ADOBE_100DPI_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-adobe-75dpi/Config.in b/package/x11r7/xfont_font-adobe-75dpi/Config.in new file mode 100644 index 00000000..1d79f416 --- /dev/null +++ b/package/x11r7/xfont_font-adobe-75dpi/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_ADOBE_75DPI + bool "font-adobe-75dpi" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-adobe-75dpi/xfont_font-adobe-75dpi.hash b/package/x11r7/xfont_font-adobe-75dpi/xfont_font-adobe-75dpi.hash new file mode 100644 index 00000000..057cc0f1 --- /dev/null +++ b/package/x11r7/xfont_font-adobe-75dpi/xfont_font-adobe-75dpi.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 1281a62dbeded169e495cae1a5b487e1f336f2b4d971d92911c59c103999b911 font-adobe-75dpi-1.0.4.tar.xz +sha256 bf6d862672b4fcc86f3f38bc138ad44e52d52207dd8689b8d3701630fc331194 COPYING diff --git a/package/x11r7/xfont_font-adobe-75dpi/xfont_font-adobe-75dpi.mk b/package/x11r7/xfont_font-adobe-75dpi/xfont_font-adobe-75dpi.mk new file mode 100644 index 00000000..a8480caf --- /dev/null +++ b/package/x11r7/xfont_font-adobe-75dpi/xfont_font-adobe-75dpi.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-adobe-75dpi +# +################################################################################ + +XFONT_FONT_ADOBE_75DPI_VERSION = 1.0.4 +XFONT_FONT_ADOBE_75DPI_SOURCE = font-adobe-75dpi-$(XFONT_FONT_ADOBE_75DPI_VERSION).tar.xz +XFONT_FONT_ADOBE_75DPI_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_ADOBE_75DPI_LICENSE = MIT +XFONT_FONT_ADOBE_75DPI_LICENSE_FILES = COPYING + +XFONT_FONT_ADOBE_75DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_ADOBE_75DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_ADOBE_75DPI_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-adobe-utopia-100dpi/Config.in b/package/x11r7/xfont_font-adobe-utopia-100dpi/Config.in new file mode 100644 index 00000000..a31ee5da --- /dev/null +++ b/package/x11r7/xfont_font-adobe-utopia-100dpi/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_ADOBE_UTOPIA_100DPI + bool "font-adobe-utopia-100dpi" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-adobe-utopia-100dpi/xfont_font-adobe-utopia-100dpi.hash b/package/x11r7/xfont_font-adobe-utopia-100dpi/xfont_font-adobe-utopia-100dpi.hash new file mode 100644 index 00000000..87e7894f --- /dev/null +++ b/package/x11r7/xfont_font-adobe-utopia-100dpi/xfont_font-adobe-utopia-100dpi.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 fb84ec297a906973548ca59b7c6daeaad21244bec5d3fb1e7c93df5ef43b024b font-adobe-utopia-100dpi-1.0.5.tar.xz +sha256 234c2a8109afa8034c787dbf69696a9bdd374914aadf937d2a103831d95c1867 COPYING diff --git a/package/x11r7/xfont_font-adobe-utopia-100dpi/xfont_font-adobe-utopia-100dpi.mk b/package/x11r7/xfont_font-adobe-utopia-100dpi/xfont_font-adobe-utopia-100dpi.mk new file mode 100644 index 00000000..8962db61 --- /dev/null +++ b/package/x11r7/xfont_font-adobe-utopia-100dpi/xfont_font-adobe-utopia-100dpi.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-adobe-utopia-100dpi +# +################################################################################ + +XFONT_FONT_ADOBE_UTOPIA_100DPI_VERSION = 1.0.5 +XFONT_FONT_ADOBE_UTOPIA_100DPI_SOURCE = font-adobe-utopia-100dpi-$(XFONT_FONT_ADOBE_UTOPIA_100DPI_VERSION).tar.xz +XFONT_FONT_ADOBE_UTOPIA_100DPI_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_ADOBE_UTOPIA_100DPI_LICENSE = Adobe License (no modification allowed) +XFONT_FONT_ADOBE_UTOPIA_100DPI_LICENSE_FILES = COPYING + +XFONT_FONT_ADOBE_UTOPIA_100DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_ADOBE_UTOPIA_100DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_ADOBE_UTOPIA_100DPI_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-adobe-utopia-75dpi/Config.in b/package/x11r7/xfont_font-adobe-utopia-75dpi/Config.in new file mode 100644 index 00000000..22797230 --- /dev/null +++ b/package/x11r7/xfont_font-adobe-utopia-75dpi/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_ADOBE_UTOPIA_75DPI + bool "font-adobe-utopia-75dpi" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-adobe-utopia-75dpi/xfont_font-adobe-utopia-75dpi.hash b/package/x11r7/xfont_font-adobe-utopia-75dpi/xfont_font-adobe-utopia-75dpi.hash new file mode 100644 index 00000000..0b6e1af6 --- /dev/null +++ b/package/x11r7/xfont_font-adobe-utopia-75dpi/xfont_font-adobe-utopia-75dpi.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 8732719c61f3661c8bad63804ebfd54fc7de21ab848e9a26a19b1778ef8b5c94 font-adobe-utopia-75dpi-1.0.4.tar.bz2 +sha256 234c2a8109afa8034c787dbf69696a9bdd374914aadf937d2a103831d95c1867 COPYING diff --git a/package/x11r7/xfont_font-adobe-utopia-75dpi/xfont_font-adobe-utopia-75dpi.mk b/package/x11r7/xfont_font-adobe-utopia-75dpi/xfont_font-adobe-utopia-75dpi.mk new file mode 100644 index 00000000..ac3bf2e2 --- /dev/null +++ b/package/x11r7/xfont_font-adobe-utopia-75dpi/xfont_font-adobe-utopia-75dpi.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-adobe-utopia-75dpi +# +################################################################################ + +XFONT_FONT_ADOBE_UTOPIA_75DPI_VERSION = 1.0.4 +XFONT_FONT_ADOBE_UTOPIA_75DPI_SOURCE = font-adobe-utopia-75dpi-$(XFONT_FONT_ADOBE_UTOPIA_75DPI_VERSION).tar.bz2 +XFONT_FONT_ADOBE_UTOPIA_75DPI_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_ADOBE_UTOPIA_75DPI_LICENSE = Adobe License (no modification allowed) +XFONT_FONT_ADOBE_UTOPIA_75DPI_LICENSE_FILES = COPYING + +XFONT_FONT_ADOBE_UTOPIA_75DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_ADOBE_UTOPIA_75DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_ADOBE_UTOPIA_75DPI_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-adobe-utopia-type1/Config.in b/package/x11r7/xfont_font-adobe-utopia-type1/Config.in new file mode 100644 index 00000000..60b631ed --- /dev/null +++ b/package/x11r7/xfont_font-adobe-utopia-type1/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_ADOBE_UTOPIA_TYPE1 + bool "font-adobe-utopia-type1" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-adobe-utopia-type1/xfont_font-adobe-utopia-type1.hash b/package/x11r7/xfont_font-adobe-utopia-type1/xfont_font-adobe-utopia-type1.hash new file mode 100644 index 00000000..0770018f --- /dev/null +++ b/package/x11r7/xfont_font-adobe-utopia-type1/xfont_font-adobe-utopia-type1.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 4cb280bc47693b07c5e00fd0e5ad5721aabebc0548c3f06774e5cc3cbcf75697 font-adobe-utopia-type1-1.0.5.tar.xz +sha256 234c2a8109afa8034c787dbf69696a9bdd374914aadf937d2a103831d95c1867 COPYING diff --git a/package/x11r7/xfont_font-adobe-utopia-type1/xfont_font-adobe-utopia-type1.mk b/package/x11r7/xfont_font-adobe-utopia-type1/xfont_font-adobe-utopia-type1.mk new file mode 100644 index 00000000..b53b499b --- /dev/null +++ b/package/x11r7/xfont_font-adobe-utopia-type1/xfont_font-adobe-utopia-type1.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-adobe-utopia-type1 +# +################################################################################ + +XFONT_FONT_ADOBE_UTOPIA_TYPE1_VERSION = 1.0.5 +XFONT_FONT_ADOBE_UTOPIA_TYPE1_SOURCE = font-adobe-utopia-type1-$(XFONT_FONT_ADOBE_UTOPIA_TYPE1_VERSION).tar.xz +XFONT_FONT_ADOBE_UTOPIA_TYPE1_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_ADOBE_UTOPIA_TYPE1_LICENSE = Adobe License (no modification allowed) +XFONT_FONT_ADOBE_UTOPIA_TYPE1_LICENSE_FILES = COPYING + +XFONT_FONT_ADOBE_UTOPIA_TYPE1_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_ADOBE_UTOPIA_TYPE1_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_ADOBE_UTOPIA_TYPE1_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-alias/Config.in b/package/x11r7/xfont_font-alias/Config.in new file mode 100644 index 00000000..b30e2221 --- /dev/null +++ b/package/x11r7/xfont_font-alias/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_ALIAS + bool "font-alias" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-alias/xfont_font-alias.hash b/package/x11r7/xfont_font-alias/xfont_font-alias.hash new file mode 100644 index 00000000..8b1ead9e --- /dev/null +++ b/package/x11r7/xfont_font-alias/xfont_font-alias.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 9f89e217bb73e0e3636a0a493fbf8b7c995156e0c53d9a0476d201b67c2d6b6e font-alias-1.0.5.tar.xz +sha256 bdba5452fc080c0f1a56d66978ac4150d1d1a00a9cc0248bba4f0b76c80ad47e COPYING diff --git a/package/x11r7/xfont_font-alias/xfont_font-alias.mk b/package/x11r7/xfont_font-alias/xfont_font-alias.mk new file mode 100644 index 00000000..fcd27066 --- /dev/null +++ b/package/x11r7/xfont_font-alias/xfont_font-alias.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-alias +# +################################################################################ + +XFONT_FONT_ALIAS_VERSION = 1.0.5 +XFONT_FONT_ALIAS_SOURCE = font-alias-$(XFONT_FONT_ALIAS_VERSION).tar.xz +XFONT_FONT_ALIAS_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_ALIAS_LICENSE = MIT +XFONT_FONT_ALIAS_LICENSE_FILES = COPYING + +XFONT_FONT_ALIAS_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_ALIAS_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_ALIAS_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-arabic-misc/Config.in b/package/x11r7/xfont_font-arabic-misc/Config.in new file mode 100644 index 00000000..1ec50901 --- /dev/null +++ b/package/x11r7/xfont_font-arabic-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_ARABIC_MISC + bool "font-arabic-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-arabic-misc/xfont_font-arabic-misc.hash b/package/x11r7/xfont_font-arabic-misc/xfont_font-arabic-misc.hash new file mode 100644 index 00000000..ae2503ef --- /dev/null +++ b/package/x11r7/xfont_font-arabic-misc/xfont_font-arabic-misc.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 46ffe61b52c78a1d2dca70ff20a9f2d84d69744639cab9a085c7a7ee17663467 font-arabic-misc-1.0.4.tar.xz +sha256 192b677a887c20f9671cc357cd5ea7bae586003d61c1f8f6e164e8f5530abf57 COPYING diff --git a/package/x11r7/xfont_font-arabic-misc/xfont_font-arabic-misc.mk b/package/x11r7/xfont_font-arabic-misc/xfont_font-arabic-misc.mk new file mode 100644 index 00000000..f8e95d8f --- /dev/null +++ b/package/x11r7/xfont_font-arabic-misc/xfont_font-arabic-misc.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-arabic-misc +# +################################################################################ + +XFONT_FONT_ARABIC_MISC_VERSION = 1.0.4 +XFONT_FONT_ARABIC_MISC_SOURCE = font-arabic-misc-$(XFONT_FONT_ARABIC_MISC_VERSION).tar.xz +XFONT_FONT_ARABIC_MISC_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_ARABIC_MISC_LICENSE = MIT +XFONT_FONT_ARABIC_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_ARABIC_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_ARABIC_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_ARABIC_MISC_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-bh-100dpi/Config.in b/package/x11r7/xfont_font-bh-100dpi/Config.in new file mode 100644 index 00000000..3bfb0b8f --- /dev/null +++ b/package/x11r7/xfont_font-bh-100dpi/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_BH_100DPI + bool "font-bh-100dpi" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-bh-100dpi/xfont_font-bh-100dpi.hash b/package/x11r7/xfont_font-bh-100dpi/xfont_font-bh-100dpi.hash new file mode 100644 index 00000000..6aa66d0b --- /dev/null +++ b/package/x11r7/xfont_font-bh-100dpi/xfont_font-bh-100dpi.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 fd8f5efe8491faabdd2744808d3d4eafdae5c83e617017c7fddd2716d049ab1e font-bh-100dpi-1.0.4.tar.xz +sha256 888fd79d2c7e6332559d661c62f7a50f92fc5842e6ff0e0bd4c59b0083dabce9 COPYING diff --git a/package/x11r7/xfont_font-bh-100dpi/xfont_font-bh-100dpi.mk b/package/x11r7/xfont_font-bh-100dpi/xfont_font-bh-100dpi.mk new file mode 100644 index 00000000..89c5a0d8 --- /dev/null +++ b/package/x11r7/xfont_font-bh-100dpi/xfont_font-bh-100dpi.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-bh-100dpi +# +################################################################################ + +XFONT_FONT_BH_100DPI_VERSION = 1.0.4 +XFONT_FONT_BH_100DPI_SOURCE = font-bh-100dpi-$(XFONT_FONT_BH_100DPI_VERSION).tar.xz +XFONT_FONT_BH_100DPI_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_BH_100DPI_LICENSE = Bigelow & Holmes License (no modification) +XFONT_FONT_BH_100DPI_LICENSE_FILES = COPYING + +XFONT_FONT_BH_100DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_BH_100DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_BH_100DPI_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-bh-75dpi/Config.in b/package/x11r7/xfont_font-bh-75dpi/Config.in new file mode 100644 index 00000000..0fe93bb6 --- /dev/null +++ b/package/x11r7/xfont_font-bh-75dpi/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_BH_75DPI + bool "font-bh-75dpi" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-bh-75dpi/xfont_font-bh-75dpi.hash b/package/x11r7/xfont_font-bh-75dpi/xfont_font-bh-75dpi.hash new file mode 100644 index 00000000..0336c1b2 --- /dev/null +++ b/package/x11r7/xfont_font-bh-75dpi/xfont_font-bh-75dpi.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 6026d8c073563dd3cbb4878d0076eed970debabd21423b3b61dd90441b9e7cda font-bh-75dpi-1.0.4.tar.xz +sha256 888fd79d2c7e6332559d661c62f7a50f92fc5842e6ff0e0bd4c59b0083dabce9 COPYING diff --git a/package/x11r7/xfont_font-bh-75dpi/xfont_font-bh-75dpi.mk b/package/x11r7/xfont_font-bh-75dpi/xfont_font-bh-75dpi.mk new file mode 100644 index 00000000..1bc03aff --- /dev/null +++ b/package/x11r7/xfont_font-bh-75dpi/xfont_font-bh-75dpi.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-bh-75dpi +# +################################################################################ + +XFONT_FONT_BH_75DPI_VERSION = 1.0.4 +XFONT_FONT_BH_75DPI_SOURCE = font-bh-75dpi-$(XFONT_FONT_BH_75DPI_VERSION).tar.xz +XFONT_FONT_BH_75DPI_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_BH_75DPI_LICENSE = Bigelow & Holmes License (no modification) +XFONT_FONT_BH_75DPI_LICENSE_FILES = COPYING + +XFONT_FONT_BH_75DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_BH_75DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_BH_75DPI_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/Config.in b/package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/Config.in new file mode 100644 index 00000000..0005cc11 --- /dev/null +++ b/package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI + bool "font-bh-lucidatypewriter-100dpi" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/xfont_font-bh-lucidatypewriter-100dpi.hash b/package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/xfont_font-bh-lucidatypewriter-100dpi.hash new file mode 100644 index 00000000..2e21d285 --- /dev/null +++ b/package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/xfont_font-bh-lucidatypewriter-100dpi.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 76ec09eda4094a29d47b91cf59c3eba229c8f7d1ca6bae2abbb3f925e33de8f2 font-bh-lucidatypewriter-100dpi-1.0.4.tar.xz +sha256 9428a98add4fada4c98e031ae0f29d27f8b15a2c8c6e8830591a4c18ea26a6cd COPYING diff --git a/package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/xfont_font-bh-lucidatypewriter-100dpi.mk b/package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/xfont_font-bh-lucidatypewriter-100dpi.mk new file mode 100644 index 00000000..bbbdd3d1 --- /dev/null +++ b/package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/xfont_font-bh-lucidatypewriter-100dpi.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-bh-lucidatypewriter-100dpi +# +################################################################################ + +XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_VERSION = 1.0.4 +XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_SOURCE = font-bh-lucidatypewriter-100dpi-$(XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_VERSION).tar.xz +XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_LICENSE = Bigelow & Holmes License (no modification) +XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_LICENSE_FILES = COPYING + +XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/Config.in b/package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/Config.in new file mode 100644 index 00000000..60dfb952 --- /dev/null +++ b/package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI + bool "font-bh-lucidatypewriter-75dpi" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/xfont_font-bh-lucidatypewriter-75dpi.hash b/package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/xfont_font-bh-lucidatypewriter-75dpi.hash new file mode 100644 index 00000000..17b1b3f4 --- /dev/null +++ b/package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/xfont_font-bh-lucidatypewriter-75dpi.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 864e2c39ac61f04f693fc2c8aaaed24b298c2cd40283cec12eee459c5635e8f5 font-bh-lucidatypewriter-75dpi-1.0.4.tar.xz +sha256 9428a98add4fada4c98e031ae0f29d27f8b15a2c8c6e8830591a4c18ea26a6cd COPYING diff --git a/package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/xfont_font-bh-lucidatypewriter-75dpi.mk b/package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/xfont_font-bh-lucidatypewriter-75dpi.mk new file mode 100644 index 00000000..86789dae --- /dev/null +++ b/package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/xfont_font-bh-lucidatypewriter-75dpi.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-bh-lucidatypewriter-75dpi +# +################################################################################ + +XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_VERSION = 1.0.4 +XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_SOURCE = font-bh-lucidatypewriter-75dpi-$(XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_VERSION).tar.xz +XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_LICENSE = Bigelow & Holmes License (no modification) +XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_LICENSE_FILES = COPYING + +XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-bh-ttf/Config.in b/package/x11r7/xfont_font-bh-ttf/Config.in new file mode 100644 index 00000000..d747989b --- /dev/null +++ b/package/x11r7/xfont_font-bh-ttf/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_BH_TTF + bool "font-bh-ttf" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-bh-ttf/xfont_font-bh-ttf.hash b/package/x11r7/xfont_font-bh-ttf/xfont_font-bh-ttf.hash new file mode 100644 index 00000000..a0c5eea2 --- /dev/null +++ b/package/x11r7/xfont_font-bh-ttf/xfont_font-bh-ttf.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 85a5f90d00c48c2b06fd125ea8adbc8b8ee97429e3075081c8710926efec3a56 font-bh-ttf-1.0.4.tar.xz +sha256 27d47d50006773f1c0bd97661252ae27bb8cfd6951f253bd9d3ef81ed1243934 COPYING diff --git a/package/x11r7/xfont_font-bh-ttf/xfont_font-bh-ttf.mk b/package/x11r7/xfont_font-bh-ttf/xfont_font-bh-ttf.mk new file mode 100644 index 00000000..3cc0deda --- /dev/null +++ b/package/x11r7/xfont_font-bh-ttf/xfont_font-bh-ttf.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-bh-ttf +# +################################################################################ + +XFONT_FONT_BH_TTF_VERSION = 1.0.4 +XFONT_FONT_BH_TTF_SOURCE = font-bh-ttf-$(XFONT_FONT_BH_TTF_VERSION).tar.xz +XFONT_FONT_BH_TTF_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_BH_TTF_LICENSE = Bigelow & Holmes License (no modification) +XFONT_FONT_BH_TTF_LICENSE_FILES = COPYING + +XFONT_FONT_BH_TTF_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_BH_TTF_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_BH_TTF_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-bh-type1/Config.in b/package/x11r7/xfont_font-bh-type1/Config.in new file mode 100644 index 00000000..0a3ab186 --- /dev/null +++ b/package/x11r7/xfont_font-bh-type1/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_BH_TYPE1 + bool "font-bh-type1" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-bh-type1/xfont_font-bh-type1.hash b/package/x11r7/xfont_font-bh-type1/xfont_font-bh-type1.hash new file mode 100644 index 00000000..81a6a76d --- /dev/null +++ b/package/x11r7/xfont_font-bh-type1/xfont_font-bh-type1.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 19dec3ec06abde6bedd10094579e928be0f0fc3bdb4fbe93f4c69cce406d72a6 font-bh-type1-1.0.4.tar.xz +sha256 27d47d50006773f1c0bd97661252ae27bb8cfd6951f253bd9d3ef81ed1243934 COPYING diff --git a/package/x11r7/xfont_font-bh-type1/xfont_font-bh-type1.mk b/package/x11r7/xfont_font-bh-type1/xfont_font-bh-type1.mk new file mode 100644 index 00000000..c4fd2e69 --- /dev/null +++ b/package/x11r7/xfont_font-bh-type1/xfont_font-bh-type1.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-bh-type1 +# +################################################################################ + +XFONT_FONT_BH_TYPE1_VERSION = 1.0.4 +XFONT_FONT_BH_TYPE1_SOURCE = font-bh-type1-$(XFONT_FONT_BH_TYPE1_VERSION).tar.xz +XFONT_FONT_BH_TYPE1_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_BH_TYPE1_LICENSE = Bigelow & Holmes License (no modification) +XFONT_FONT_BH_TYPE1_LICENSE_FILES = COPYING + +XFONT_FONT_BH_TYPE1_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_BH_TYPE1_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_BH_TYPE1_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-bitstream-100dpi/Config.in b/package/x11r7/xfont_font-bitstream-100dpi/Config.in new file mode 100644 index 00000000..5363fae3 --- /dev/null +++ b/package/x11r7/xfont_font-bitstream-100dpi/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_BITSTREAM_100DPI + bool "font-bitstream-100dpi" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-bitstream-100dpi/xfont_font-bitstream-100dpi.hash b/package/x11r7/xfont_font-bitstream-100dpi/xfont_font-bitstream-100dpi.hash new file mode 100644 index 00000000..9a97a16c --- /dev/null +++ b/package/x11r7/xfont_font-bitstream-100dpi/xfont_font-bitstream-100dpi.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 2d1cc682efe4f7ebdf5fbd88961d8ca32b2729968728633dea20a1627690c1a7 font-bitstream-100dpi-1.0.4.tar.xz +sha256 6faf32f092c2b92f3f99e0d63db9d802b11b4dd5aa0ce991f107a398d7f1ae80 COPYING diff --git a/package/x11r7/xfont_font-bitstream-100dpi/xfont_font-bitstream-100dpi.mk b/package/x11r7/xfont_font-bitstream-100dpi/xfont_font-bitstream-100dpi.mk new file mode 100644 index 00000000..f756f295 --- /dev/null +++ b/package/x11r7/xfont_font-bitstream-100dpi/xfont_font-bitstream-100dpi.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-bitstream-100dpi +# +################################################################################ + +XFONT_FONT_BITSTREAM_100DPI_VERSION = 1.0.4 +XFONT_FONT_BITSTREAM_100DPI_SOURCE = font-bitstream-100dpi-$(XFONT_FONT_BITSTREAM_100DPI_VERSION).tar.xz +XFONT_FONT_BITSTREAM_100DPI_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_BITSTREAM_100DPI_LICENSE = MIT +XFONT_FONT_BITSTREAM_100DPI_LICENSE_FILES = COPYING + +XFONT_FONT_BITSTREAM_100DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_BITSTREAM_100DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_BITSTREAM_100DPI_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-bitstream-75dpi/Config.in b/package/x11r7/xfont_font-bitstream-75dpi/Config.in new file mode 100644 index 00000000..34a4a19e --- /dev/null +++ b/package/x11r7/xfont_font-bitstream-75dpi/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_BITSTREAM_75DPI + bool "font-bitstream-75dpi" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-bitstream-75dpi/xfont_font-bitstream-75dpi.hash b/package/x11r7/xfont_font-bitstream-75dpi/xfont_font-bitstream-75dpi.hash new file mode 100644 index 00000000..03bcf66c --- /dev/null +++ b/package/x11r7/xfont_font-bitstream-75dpi/xfont_font-bitstream-75dpi.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 aaeb34d87424a9c2b0cf0e8590704c90cb5b42c6a3b6a0ef9e4676ef773bf826 font-bitstream-75dpi-1.0.4.tar.xz +sha256 6faf32f092c2b92f3f99e0d63db9d802b11b4dd5aa0ce991f107a398d7f1ae80 COPYING diff --git a/package/x11r7/xfont_font-bitstream-75dpi/xfont_font-bitstream-75dpi.mk b/package/x11r7/xfont_font-bitstream-75dpi/xfont_font-bitstream-75dpi.mk new file mode 100644 index 00000000..9c74f0c4 --- /dev/null +++ b/package/x11r7/xfont_font-bitstream-75dpi/xfont_font-bitstream-75dpi.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-bitstream-75dpi +# +################################################################################ + +XFONT_FONT_BITSTREAM_75DPI_VERSION = 1.0.4 +XFONT_FONT_BITSTREAM_75DPI_SOURCE = font-bitstream-75dpi-$(XFONT_FONT_BITSTREAM_75DPI_VERSION).tar.xz +XFONT_FONT_BITSTREAM_75DPI_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_BITSTREAM_75DPI_LICENSE = MIT +XFONT_FONT_BITSTREAM_75DPI_LICENSE_FILES = COPYING + +XFONT_FONT_BITSTREAM_75DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_BITSTREAM_75DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_BITSTREAM_75DPI_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-bitstream-type1/Config.in b/package/x11r7/xfont_font-bitstream-type1/Config.in new file mode 100644 index 00000000..c8cbc908 --- /dev/null +++ b/package/x11r7/xfont_font-bitstream-type1/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_BITSTREAM_TYPE1 + bool "font-bitstream-type1" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-bitstream-type1/xfont_font-bitstream-type1.hash b/package/x11r7/xfont_font-bitstream-type1/xfont_font-bitstream-type1.hash new file mode 100644 index 00000000..9e9e158f --- /dev/null +++ b/package/x11r7/xfont_font-bitstream-type1/xfont_font-bitstream-type1.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 de2f238b4cd72db4228a0ba67829d76a2b7c039e22993d66a722ee385248c628 font-bitstream-type1-1.0.4.tar.xz +sha256 ecad5afdbd1308634896744a4c962361e9eca73e7d9969bb3aad94533c66d046 COPYING diff --git a/package/x11r7/xfont_font-bitstream-type1/xfont_font-bitstream-type1.mk b/package/x11r7/xfont_font-bitstream-type1/xfont_font-bitstream-type1.mk new file mode 100644 index 00000000..880e49a1 --- /dev/null +++ b/package/x11r7/xfont_font-bitstream-type1/xfont_font-bitstream-type1.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-bitstream-type1 +# +################################################################################ + +XFONT_FONT_BITSTREAM_TYPE1_VERSION = 1.0.4 +XFONT_FONT_BITSTREAM_TYPE1_SOURCE = font-bitstream-type1-$(XFONT_FONT_BITSTREAM_TYPE1_VERSION).tar.xz +XFONT_FONT_BITSTREAM_TYPE1_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_BITSTREAM_TYPE1_LICENSE = MIT +XFONT_FONT_BITSTREAM_TYPE1_LICENSE_FILES = COPYING + +XFONT_FONT_BITSTREAM_TYPE1_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_BITSTREAM_TYPE1_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_BITSTREAM_TYPE1_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-cronyx-cyrillic/Config.in b/package/x11r7/xfont_font-cronyx-cyrillic/Config.in new file mode 100644 index 00000000..e92ab836 --- /dev/null +++ b/package/x11r7/xfont_font-cronyx-cyrillic/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_CRONYX_CYRILLIC + bool "font-cronyx-cyrillic" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-cronyx-cyrillic/xfont_font-cronyx-cyrillic.hash b/package/x11r7/xfont_font-cronyx-cyrillic/xfont_font-cronyx-cyrillic.hash new file mode 100644 index 00000000..480444e5 --- /dev/null +++ b/package/x11r7/xfont_font-cronyx-cyrillic/xfont_font-cronyx-cyrillic.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 dc0781ce0dcbffdbf6aae1a00173a13403f92b0de925bca5a9e117e4e2d6b789 font-cronyx-cyrillic-1.0.4.tar.xz +sha256 857fa9f8d12bd7ce7fb235393d775dd5e0b5130fac7a88fdea9156d75b609402 COPYING diff --git a/package/x11r7/xfont_font-cronyx-cyrillic/xfont_font-cronyx-cyrillic.mk b/package/x11r7/xfont_font-cronyx-cyrillic/xfont_font-cronyx-cyrillic.mk new file mode 100644 index 00000000..af759084 --- /dev/null +++ b/package/x11r7/xfont_font-cronyx-cyrillic/xfont_font-cronyx-cyrillic.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-cronyx-cyrillic +# +################################################################################ + +XFONT_FONT_CRONYX_CYRILLIC_VERSION = 1.0.4 +XFONT_FONT_CRONYX_CYRILLIC_SOURCE = font-cronyx-cyrillic-$(XFONT_FONT_CRONYX_CYRILLIC_VERSION).tar.xz +XFONT_FONT_CRONYX_CYRILLIC_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_CRONYX_CYRILLIC_LICENSE = MIT +XFONT_FONT_CRONYX_CYRILLIC_LICENSE_FILES = COPYING + +XFONT_FONT_CRONYX_CYRILLIC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_CRONYX_CYRILLIC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_CRONYX_CYRILLIC_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-cursor-misc/Config.in b/package/x11r7/xfont_font-cursor-misc/Config.in new file mode 100644 index 00000000..0e10da6a --- /dev/null +++ b/package/x11r7/xfont_font-cursor-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_CURSOR_MISC + bool "font-cursor-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-cursor-misc/xfont_font-cursor-misc.hash b/package/x11r7/xfont_font-cursor-misc/xfont_font-cursor-misc.hash new file mode 100644 index 00000000..3fe94b52 --- /dev/null +++ b/package/x11r7/xfont_font-cursor-misc/xfont_font-cursor-misc.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 25d9c9595013cb8ca08420509993a6434c917e53ca1fec3f63acd45a19d4f982 font-cursor-misc-1.0.4.tar.xz +sha256 c22415fb2144d7298e995dbeee2eb120822d653c61ae43c64fa0fda2cc3ca3a0 COPYING diff --git a/package/x11r7/xfont_font-cursor-misc/xfont_font-cursor-misc.mk b/package/x11r7/xfont_font-cursor-misc/xfont_font-cursor-misc.mk new file mode 100644 index 00000000..38366a80 --- /dev/null +++ b/package/x11r7/xfont_font-cursor-misc/xfont_font-cursor-misc.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-cursor-misc +# +################################################################################ + +XFONT_FONT_CURSOR_MISC_VERSION = 1.0.4 +XFONT_FONT_CURSOR_MISC_SOURCE = font-cursor-misc-$(XFONT_FONT_CURSOR_MISC_VERSION).tar.xz +XFONT_FONT_CURSOR_MISC_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_CURSOR_MISC_LICENSE = unencumbered +XFONT_FONT_CURSOR_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_CURSOR_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_CURSOR_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_CURSOR_MISC_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-daewoo-misc/Config.in b/package/x11r7/xfont_font-daewoo-misc/Config.in new file mode 100644 index 00000000..cffe81de --- /dev/null +++ b/package/x11r7/xfont_font-daewoo-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_DAEWOO_MISC + bool "font-daewoo-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-daewoo-misc/xfont_font-daewoo-misc.hash b/package/x11r7/xfont_font-daewoo-misc/xfont_font-daewoo-misc.hash new file mode 100644 index 00000000..cebdbbba --- /dev/null +++ b/package/x11r7/xfont_font-daewoo-misc/xfont_font-daewoo-misc.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 f63c8b3dc8f30098cb868b7db2c2c0c8b5b3fd2cefd044035697a43d4c7a4f31 font-daewoo-misc-1.0.4.tar.xz +sha256 294f786aa8f0ad8f92979d153e18f5cf7cc95d872cace25338f9c95e7b348ed9 COPYING diff --git a/package/x11r7/xfont_font-daewoo-misc/xfont_font-daewoo-misc.mk b/package/x11r7/xfont_font-daewoo-misc/xfont_font-daewoo-misc.mk new file mode 100644 index 00000000..57e15138 --- /dev/null +++ b/package/x11r7/xfont_font-daewoo-misc/xfont_font-daewoo-misc.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# xfont_font-daewoo-misc +# +################################################################################ + +XFONT_FONT_DAEWOO_MISC_VERSION = 1.0.4 +XFONT_FONT_DAEWOO_MISC_SOURCE = font-daewoo-misc-$(XFONT_FONT_DAEWOO_MISC_VERSION).tar.xz +XFONT_FONT_DAEWOO_MISC_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_DAEWOO_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_DAEWOO_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_DAEWOO_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_DAEWOO_MISC_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-dec-misc/Config.in b/package/x11r7/xfont_font-dec-misc/Config.in new file mode 100644 index 00000000..a926d9f9 --- /dev/null +++ b/package/x11r7/xfont_font-dec-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_DEC_MISC + bool "font-dec-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-dec-misc/xfont_font-dec-misc.hash b/package/x11r7/xfont_font-dec-misc/xfont_font-dec-misc.hash new file mode 100644 index 00000000..2dea72b8 --- /dev/null +++ b/package/x11r7/xfont_font-dec-misc/xfont_font-dec-misc.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 82d968201d8ff8bec0e51dccd781bb4d4ebf17e11004944279bdc0201e161af7 font-dec-misc-1.0.4.tar.xz +sha256 bf4d44be4b5eb66c53bf5f7eb2d9d4817fb937788b37ed6ceda1876fdb964817 COPYING diff --git a/package/x11r7/xfont_font-dec-misc/xfont_font-dec-misc.mk b/package/x11r7/xfont_font-dec-misc/xfont_font-dec-misc.mk new file mode 100644 index 00000000..6f404ab2 --- /dev/null +++ b/package/x11r7/xfont_font-dec-misc/xfont_font-dec-misc.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-dec-misc +# +################################################################################ + +XFONT_FONT_DEC_MISC_VERSION = 1.0.4 +XFONT_FONT_DEC_MISC_SOURCE = font-dec-misc-$(XFONT_FONT_DEC_MISC_VERSION).tar.xz +XFONT_FONT_DEC_MISC_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_DEC_MISC_LICENSE = MIT +XFONT_FONT_DEC_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_DEC_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_DEC_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_DEC_MISC_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-ibm-type1/Config.in b/package/x11r7/xfont_font-ibm-type1/Config.in new file mode 100644 index 00000000..d4ac1ae4 --- /dev/null +++ b/package/x11r7/xfont_font-ibm-type1/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_IBM_TYPE1 + bool "font-ibm-type1" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-ibm-type1/xfont_font-ibm-type1.hash b/package/x11r7/xfont_font-ibm-type1/xfont_font-ibm-type1.hash new file mode 100644 index 00000000..5a967f70 --- /dev/null +++ b/package/x11r7/xfont_font-ibm-type1/xfont_font-ibm-type1.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 c4395e95ba46d40c4ad1737e91cac20c0ab75411329b60db5d99fed92b60ce7f font-ibm-type1-1.0.4.tar.xz +sha256 fc0fd4df7ac7ac7f9b1ff3a221f28c52edea4506dc4c84f1869a3f4281360ca1 COPYING diff --git a/package/x11r7/xfont_font-ibm-type1/xfont_font-ibm-type1.mk b/package/x11r7/xfont_font-ibm-type1/xfont_font-ibm-type1.mk new file mode 100644 index 00000000..ea295cad --- /dev/null +++ b/package/x11r7/xfont_font-ibm-type1/xfont_font-ibm-type1.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-ibm-type1 +# +################################################################################ + +XFONT_FONT_IBM_TYPE1_VERSION = 1.0.4 +XFONT_FONT_IBM_TYPE1_SOURCE = font-ibm-type1-$(XFONT_FONT_IBM_TYPE1_VERSION).tar.xz +XFONT_FONT_IBM_TYPE1_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_IBM_TYPE1_LICENSE = IBM/MIT X Consortium Courier Typefont agreement (no modification) +XFONT_FONT_IBM_TYPE1_LICENSE_FILES = COPYING + +XFONT_FONT_IBM_TYPE1_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_IBM_TYPE1_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_IBM_TYPE1_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-isas-misc/Config.in b/package/x11r7/xfont_font-isas-misc/Config.in new file mode 100644 index 00000000..4dddaf75 --- /dev/null +++ b/package/x11r7/xfont_font-isas-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_ISAS_MISC + bool "font-isas-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-isas-misc/xfont_font-isas-misc.hash b/package/x11r7/xfont_font-isas-misc/xfont_font-isas-misc.hash new file mode 100644 index 00000000..bc2164b2 --- /dev/null +++ b/package/x11r7/xfont_font-isas-misc/xfont_font-isas-misc.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 47e595bbe6da444b9f6fcaa26539abc7ba1989e23afa6cdc49e22e484cc438fc font-isas-misc-1.0.4.tar.xz +sha256 32d5d082b8186051bbe75ea9cbedc646830217ca931b1b7a1e534a828c94e839 COPYING diff --git a/package/x11r7/xfont_font-isas-misc/xfont_font-isas-misc.mk b/package/x11r7/xfont_font-isas-misc/xfont_font-isas-misc.mk new file mode 100644 index 00000000..d1449252 --- /dev/null +++ b/package/x11r7/xfont_font-isas-misc/xfont_font-isas-misc.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-isas-misc +# +################################################################################ + +XFONT_FONT_ISAS_MISC_VERSION = 1.0.4 +XFONT_FONT_ISAS_MISC_SOURCE = font-isas-misc-$(XFONT_FONT_ISAS_MISC_VERSION).tar.xz +XFONT_FONT_ISAS_MISC_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_ISAS_MISC_LICENSE = MIT +XFONT_FONT_ISAS_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_ISAS_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_ISAS_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_ISAS_MISC_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-jis-misc/Config.in b/package/x11r7/xfont_font-jis-misc/Config.in new file mode 100644 index 00000000..1874ad82 --- /dev/null +++ b/package/x11r7/xfont_font-jis-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_JIS_MISC + bool "font-jis-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-jis-misc/xfont_font-jis-misc.hash b/package/x11r7/xfont_font-jis-misc/xfont_font-jis-misc.hash new file mode 100644 index 00000000..95cdaa9f --- /dev/null +++ b/package/x11r7/xfont_font-jis-misc/xfont_font-jis-misc.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 78d1eff6c471f7aa6802a26d62cccf51d8e5185586406d9b6e1ee691b0bffad0 font-jis-misc-1.0.4.tar.xz +sha256 7a94eaf8f051c95232d64b24b082eb02f827e1361c03b82e9bc7252263ea66c1 COPYING diff --git a/package/x11r7/xfont_font-jis-misc/xfont_font-jis-misc.mk b/package/x11r7/xfont_font-jis-misc/xfont_font-jis-misc.mk new file mode 100644 index 00000000..f0ba7fe9 --- /dev/null +++ b/package/x11r7/xfont_font-jis-misc/xfont_font-jis-misc.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# xfont_font-jis-misc +# +################################################################################ + +XFONT_FONT_JIS_MISC_VERSION = 1.0.4 +XFONT_FONT_JIS_MISC_SOURCE = font-jis-misc-$(XFONT_FONT_JIS_MISC_VERSION).tar.xz +XFONT_FONT_JIS_MISC_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_JIS_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_JIS_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_JIS_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_JIS_MISC_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-micro-misc/Config.in b/package/x11r7/xfont_font-micro-misc/Config.in new file mode 100644 index 00000000..2062e16e --- /dev/null +++ b/package/x11r7/xfont_font-micro-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_MICRO_MISC + bool "font-micro-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-micro-misc/xfont_font-micro-misc.hash b/package/x11r7/xfont_font-micro-misc/xfont_font-micro-misc.hash new file mode 100644 index 00000000..ace39dcd --- /dev/null +++ b/package/x11r7/xfont_font-micro-misc/xfont_font-micro-misc.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 2ee0b9d6bd7ae849aff1bd82efab44a1b6b368fbb5e11d12ff7f015a3df6f943 font-micro-misc-1.0.4.tar.xz +sha256 1711d038bca0efb51b5114e902412019d1c21531882866b1a6908c6386268cfb COPYING diff --git a/package/x11r7/xfont_font-micro-misc/xfont_font-micro-misc.mk b/package/x11r7/xfont_font-micro-misc/xfont_font-micro-misc.mk new file mode 100644 index 00000000..e76626bb --- /dev/null +++ b/package/x11r7/xfont_font-micro-misc/xfont_font-micro-misc.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-micro-misc +# +################################################################################ + +XFONT_FONT_MICRO_MISC_VERSION = 1.0.4 +XFONT_FONT_MICRO_MISC_SOURCE = font-micro-misc-$(XFONT_FONT_MICRO_MISC_VERSION).tar.xz +XFONT_FONT_MICRO_MISC_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_MICRO_MISC_LICENSE = Public Domain +XFONT_FONT_MICRO_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_MICRO_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_MICRO_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_MICRO_MISC_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-misc-cyrillic/Config.in b/package/x11r7/xfont_font-misc-cyrillic/Config.in new file mode 100644 index 00000000..58702c14 --- /dev/null +++ b/package/x11r7/xfont_font-misc-cyrillic/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_MISC_CYRILLIC + bool "font-misc-cyrillic" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-misc-cyrillic/xfont_font-misc-cyrillic.hash b/package/x11r7/xfont_font-misc-cyrillic/xfont_font-misc-cyrillic.hash new file mode 100644 index 00000000..5d2f1ded --- /dev/null +++ b/package/x11r7/xfont_font-misc-cyrillic/xfont_font-misc-cyrillic.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 76021a7f53064001914a57fd08efae57f76b68f0a24dca8ab1b245474ee8e993 font-misc-cyrillic-1.0.4.tar.xz +sha256 8765722448e0ca6ce113d0406554c40224f74abfc005f4b2ef927567349f1529 COPYING diff --git a/package/x11r7/xfont_font-misc-cyrillic/xfont_font-misc-cyrillic.mk b/package/x11r7/xfont_font-misc-cyrillic/xfont_font-misc-cyrillic.mk new file mode 100644 index 00000000..93a7973f --- /dev/null +++ b/package/x11r7/xfont_font-misc-cyrillic/xfont_font-misc-cyrillic.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-misc-cyrillic +# +################################################################################ + +XFONT_FONT_MISC_CYRILLIC_VERSION = 1.0.4 +XFONT_FONT_MISC_CYRILLIC_SOURCE = font-misc-cyrillic-$(XFONT_FONT_MISC_CYRILLIC_VERSION).tar.xz +XFONT_FONT_MISC_CYRILLIC_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_MISC_CYRILLIC_LICENSE = MIT / Public Domain +XFONT_FONT_MISC_CYRILLIC_LICENSE_FILES = COPYING + +XFONT_FONT_MISC_CYRILLIC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_MISC_CYRILLIC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_MISC_CYRILLIC_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-misc-ethiopic/Config.in b/package/x11r7/xfont_font-misc-ethiopic/Config.in new file mode 100644 index 00000000..af62ddc3 --- /dev/null +++ b/package/x11r7/xfont_font-misc-ethiopic/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_MISC_ETHIOPIC + bool "font-misc-ethiopic" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-misc-ethiopic/xfont_font-misc-ethiopic.hash b/package/x11r7/xfont_font-misc-ethiopic/xfont_font-misc-ethiopic.hash new file mode 100644 index 00000000..73f38186 --- /dev/null +++ b/package/x11r7/xfont_font-misc-ethiopic/xfont_font-misc-ethiopic.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 4749a7e6e1a1eef6c91fcc9a04e8b1c0ed027d40c1599e5a6c93270d8469b612 font-misc-ethiopic-1.0.5.tar.xz +sha256 94835f274f1ddad34f8fd3a06b2c493222a68e4094f4097000d101f22ee0d0d5 COPYING diff --git a/package/x11r7/xfont_font-misc-ethiopic/xfont_font-misc-ethiopic.mk b/package/x11r7/xfont_font-misc-ethiopic/xfont_font-misc-ethiopic.mk new file mode 100644 index 00000000..9a4e25bf --- /dev/null +++ b/package/x11r7/xfont_font-misc-ethiopic/xfont_font-misc-ethiopic.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-misc-ethiopic +# +################################################################################ + +XFONT_FONT_MISC_ETHIOPIC_VERSION = 1.0.5 +XFONT_FONT_MISC_ETHIOPIC_SOURCE = font-misc-ethiopic-$(XFONT_FONT_MISC_ETHIOPIC_VERSION).tar.xz +XFONT_FONT_MISC_ETHIOPIC_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_MISC_ETHIOPIC_LICENSE = MIT +XFONT_FONT_MISC_ETHIOPIC_LICENSE_FILES = COPYING + +XFONT_FONT_MISC_ETHIOPIC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_MISC_ETHIOPIC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_MISC_ETHIOPIC_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-misc-meltho/Config.in b/package/x11r7/xfont_font-misc-meltho/Config.in new file mode 100644 index 00000000..dd2d87d9 --- /dev/null +++ b/package/x11r7/xfont_font-misc-meltho/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_MISC_MELTHO + bool "font-misc-meltho" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-misc-meltho/xfont_font-misc-meltho.hash b/package/x11r7/xfont_font-misc-meltho/xfont_font-misc-meltho.hash new file mode 100644 index 00000000..63d033b4 --- /dev/null +++ b/package/x11r7/xfont_font-misc-meltho/xfont_font-misc-meltho.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 63be5ec17078898f263c24096a68b43ae5b06b88852e42549afa03d124d65219 font-misc-meltho-1.0.4.tar.xz +sha256 6a02b45e4877b9df8c1bdaa21e1e8fba86d85e3be4c90f2791183a501e0cbd25 COPYING diff --git a/package/x11r7/xfont_font-misc-meltho/xfont_font-misc-meltho.mk b/package/x11r7/xfont_font-misc-meltho/xfont_font-misc-meltho.mk new file mode 100644 index 00000000..727b82fc --- /dev/null +++ b/package/x11r7/xfont_font-misc-meltho/xfont_font-misc-meltho.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-misc-meltho +# +################################################################################ + +XFONT_FONT_MISC_MELTHO_VERSION = 1.0.4 +XFONT_FONT_MISC_MELTHO_SOURCE = font-misc-meltho-$(XFONT_FONT_MISC_MELTHO_VERSION).tar.xz +XFONT_FONT_MISC_MELTHO_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_MISC_MELTHO_LICENSE = Meltho License +XFONT_FONT_MISC_MELTHO_LICENSE_FILES = COPYING + +XFONT_FONT_MISC_MELTHO_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_MISC_MELTHO_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_MISC_MELTHO_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-misc-misc/Config.in b/package/x11r7/xfont_font-misc-misc/Config.in new file mode 100644 index 00000000..fc379a6e --- /dev/null +++ b/package/x11r7/xfont_font-misc-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_MISC_MISC + bool "font-misc-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-misc-misc/xfont_font-misc-misc.hash b/package/x11r7/xfont_font-misc-misc/xfont_font-misc-misc.hash new file mode 100644 index 00000000..2fbdcaf3 --- /dev/null +++ b/package/x11r7/xfont_font-misc-misc/xfont_font-misc-misc.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 79abe361f58bb21ade9f565898e486300ce1cc621d5285bec26e14b6a8618fed font-misc-misc-1.1.3.tar.xz +sha256 1711d038bca0efb51b5114e902412019d1c21531882866b1a6908c6386268cfb COPYING diff --git a/package/x11r7/xfont_font-misc-misc/xfont_font-misc-misc.mk b/package/x11r7/xfont_font-misc-misc/xfont_font-misc-misc.mk new file mode 100644 index 00000000..ee90e7a8 --- /dev/null +++ b/package/x11r7/xfont_font-misc-misc/xfont_font-misc-misc.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-misc-misc +# +################################################################################ + +XFONT_FONT_MISC_MISC_VERSION = 1.1.3 +XFONT_FONT_MISC_MISC_SOURCE = font-misc-misc-$(XFONT_FONT_MISC_MISC_VERSION).tar.xz +XFONT_FONT_MISC_MISC_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_MISC_MISC_LICENSE = Public Domain +XFONT_FONT_MISC_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_MISC_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_MISC_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_MISC_MISC_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-mutt-misc/Config.in b/package/x11r7/xfont_font-mutt-misc/Config.in new file mode 100644 index 00000000..563dc9f2 --- /dev/null +++ b/package/x11r7/xfont_font-mutt-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_MUTT_MISC + bool "font-mutt-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-mutt-misc/xfont_font-mutt-misc.hash b/package/x11r7/xfont_font-mutt-misc/xfont_font-mutt-misc.hash new file mode 100644 index 00000000..978c634e --- /dev/null +++ b/package/x11r7/xfont_font-mutt-misc/xfont_font-mutt-misc.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 b12359f4e12c23bcfcb448b918297e975fa91bef5293d88d3c25343cc768bb24 font-mutt-misc-1.0.4.tar.xz +sha256 81d42a6eeaf3ac2fcc1e1408fb6e2039d1162ca85d4abaf75e3daddcb250e4ff COPYING diff --git a/package/x11r7/xfont_font-mutt-misc/xfont_font-mutt-misc.mk b/package/x11r7/xfont_font-mutt-misc/xfont_font-mutt-misc.mk new file mode 100644 index 00000000..41179f4c --- /dev/null +++ b/package/x11r7/xfont_font-mutt-misc/xfont_font-mutt-misc.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-mutt-misc +# +################################################################################ + +XFONT_FONT_MUTT_MISC_VERSION = 1.0.4 +XFONT_FONT_MUTT_MISC_SOURCE = font-mutt-misc-$(XFONT_FONT_MUTT_MISC_VERSION).tar.xz +XFONT_FONT_MUTT_MISC_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_MUTT_MISC_LICENSE = MIT +XFONT_FONT_MUTT_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_MUTT_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_MUTT_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_MUTT_MISC_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-schumacher-misc/Config.in b/package/x11r7/xfont_font-schumacher-misc/Config.in new file mode 100644 index 00000000..e30940a6 --- /dev/null +++ b/package/x11r7/xfont_font-schumacher-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_SCHUMACHER_MISC + bool "font-schumacher-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-schumacher-misc/xfont_font-schumacher-misc.hash b/package/x11r7/xfont_font-schumacher-misc/xfont_font-schumacher-misc.hash new file mode 100644 index 00000000..44ce495e --- /dev/null +++ b/package/x11r7/xfont_font-schumacher-misc/xfont_font-schumacher-misc.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 8b849f0cdb1e55a34cc3dd8b0fb37443fabbc224d5ba44085569581244a68070 font-schumacher-misc-1.1.3.tar.xz +sha256 4e2b9933887950acad3a780dce91c71770c8887f132bcd0c2ba6146cdc372407 COPYING diff --git a/package/x11r7/xfont_font-schumacher-misc/xfont_font-schumacher-misc.mk b/package/x11r7/xfont_font-schumacher-misc/xfont_font-schumacher-misc.mk new file mode 100644 index 00000000..4e61b453 --- /dev/null +++ b/package/x11r7/xfont_font-schumacher-misc/xfont_font-schumacher-misc.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-schumacher-misc +# +################################################################################ + +XFONT_FONT_SCHUMACHER_MISC_VERSION = 1.1.3 +XFONT_FONT_SCHUMACHER_MISC_SOURCE = font-schumacher-misc-$(XFONT_FONT_SCHUMACHER_MISC_VERSION).tar.xz +XFONT_FONT_SCHUMACHER_MISC_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_SCHUMACHER_MISC_LICENSE = MIT +XFONT_FONT_SCHUMACHER_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_SCHUMACHER_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_SCHUMACHER_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_SCHUMACHER_MISC_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-screen-cyrillic/Config.in b/package/x11r7/xfont_font-screen-cyrillic/Config.in new file mode 100644 index 00000000..67f4ae6c --- /dev/null +++ b/package/x11r7/xfont_font-screen-cyrillic/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_SCREEN_CYRILLIC + bool "font-screen-cyrillic" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-screen-cyrillic/xfont_font-screen-cyrillic.hash b/package/x11r7/xfont_font-screen-cyrillic/xfont_font-screen-cyrillic.hash new file mode 100644 index 00000000..4d92cdaf --- /dev/null +++ b/package/x11r7/xfont_font-screen-cyrillic/xfont_font-screen-cyrillic.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 8f758bb8cd580c7e655487d1d0db69d319acae54d932b295d96d9d9b83fde5c0 font-screen-cyrillic-1.0.5.tar.xz +sha256 5234cbcbdcc9865ce2b576b5f67e77e40ccdc1aa01e6528bea5a17784934b894 COPYING diff --git a/package/x11r7/xfont_font-screen-cyrillic/xfont_font-screen-cyrillic.mk b/package/x11r7/xfont_font-screen-cyrillic/xfont_font-screen-cyrillic.mk new file mode 100644 index 00000000..144cec52 --- /dev/null +++ b/package/x11r7/xfont_font-screen-cyrillic/xfont_font-screen-cyrillic.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-screen-cyrillic +# +################################################################################ + +XFONT_FONT_SCREEN_CYRILLIC_VERSION = 1.0.5 +XFONT_FONT_SCREEN_CYRILLIC_SOURCE = font-screen-cyrillic-$(XFONT_FONT_SCREEN_CYRILLIC_VERSION).tar.xz +XFONT_FONT_SCREEN_CYRILLIC_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_SCREEN_CYRILLIC_LICENSE = MIT +XFONT_FONT_SCREEN_CYRILLIC_LICENSE_FILES = COPYING + +XFONT_FONT_SCREEN_CYRILLIC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_SCREEN_CYRILLIC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_SCREEN_CYRILLIC_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-sony-misc/Config.in b/package/x11r7/xfont_font-sony-misc/Config.in new file mode 100644 index 00000000..df558c43 --- /dev/null +++ b/package/x11r7/xfont_font-sony-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_SONY_MISC + bool "font-sony-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-sony-misc/xfont_font-sony-misc.hash b/package/x11r7/xfont_font-sony-misc/xfont_font-sony-misc.hash new file mode 100644 index 00000000..726e7480 --- /dev/null +++ b/package/x11r7/xfont_font-sony-misc/xfont_font-sony-misc.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 e6b09f823fccb06e0bd0b2062283b6514153323bd8a7486e9c2e3f55ab84946b font-sony-misc-1.0.4.tar.xz +sha256 8233ff7d7bc8b5b46cbba3f6cd0069d2ef875bd1b1e0090ca4145282aa096739 COPYING diff --git a/package/x11r7/xfont_font-sony-misc/xfont_font-sony-misc.mk b/package/x11r7/xfont_font-sony-misc/xfont_font-sony-misc.mk new file mode 100644 index 00000000..f77a5f00 --- /dev/null +++ b/package/x11r7/xfont_font-sony-misc/xfont_font-sony-misc.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-sony-misc +# +################################################################################ + +XFONT_FONT_SONY_MISC_VERSION = 1.0.4 +XFONT_FONT_SONY_MISC_SOURCE = font-sony-misc-$(XFONT_FONT_SONY_MISC_VERSION).tar.xz +XFONT_FONT_SONY_MISC_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_SONY_MISC_LICENSE = MIT +XFONT_FONT_SONY_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_SONY_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_SONY_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_SONY_MISC_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-sun-misc/Config.in b/package/x11r7/xfont_font-sun-misc/Config.in new file mode 100644 index 00000000..accc764a --- /dev/null +++ b/package/x11r7/xfont_font-sun-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_SUN_MISC + bool "font-sun-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-sun-misc/xfont_font-sun-misc.hash b/package/x11r7/xfont_font-sun-misc/xfont_font-sun-misc.hash new file mode 100644 index 00000000..ac2f3439 --- /dev/null +++ b/package/x11r7/xfont_font-sun-misc/xfont_font-sun-misc.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 dd84dd116d927affa4fa0fa29727b3ecfc0f064238817c0a1e552a0ac384db9f font-sun-misc-1.0.4.tar.xz +sha256 d76b96147b5c155642652ca15e2e4cb4cc249ee2eaa02292e274b723224b88de COPYING diff --git a/package/x11r7/xfont_font-sun-misc/xfont_font-sun-misc.mk b/package/x11r7/xfont_font-sun-misc/xfont_font-sun-misc.mk new file mode 100644 index 00000000..3d3596a9 --- /dev/null +++ b/package/x11r7/xfont_font-sun-misc/xfont_font-sun-misc.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-sun-misc +# +################################################################################ + +XFONT_FONT_SUN_MISC_VERSION = 1.0.4 +XFONT_FONT_SUN_MISC_SOURCE = font-sun-misc-$(XFONT_FONT_SUN_MISC_VERSION).tar.xz +XFONT_FONT_SUN_MISC_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_SUN_MISC_LICENSE = MIT +XFONT_FONT_SUN_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_SUN_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_SUN_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_SUN_MISC_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-util/Config.in b/package/x11r7/xfont_font-util/Config.in new file mode 100644 index 00000000..4edeffdd --- /dev/null +++ b/package/x11r7/xfont_font-util/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XFONT_FONT_UTIL + bool "font-util" + help + No description available diff --git a/package/x11r7/xfont_font-util/xfont_font-util.hash b/package/x11r7/xfont_font-util/xfont_font-util.hash new file mode 100644 index 00000000..cf52a234 --- /dev/null +++ b/package/x11r7/xfont_font-util/xfont_font-util.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-February/003331.html +sha256 9f724bf940128c7e39f7252bd961cd38cfac2359de2100a8bed696bf40d40f7d font-util-1.4.0.tar.xz +sha512 05fff613019718a4bd8537ff7eb270bd85345ffb006c16f81b739d6e8cdbfaa9d6503aef9bc48d6c7f70330bf90ff1a46bacdff3c99e8017191d935c85f73d60 font-util-1.4.0.tar.xz +# Locally calculated +sha256 ce16c3ee6f2a38db6870b66bdb54fce9dcf24acd1161840789e321f6faa1251c COPYING diff --git a/package/x11r7/xfont_font-util/xfont_font-util.mk b/package/x11r7/xfont_font-util/xfont_font-util.mk new file mode 100644 index 00000000..8a97c85d --- /dev/null +++ b/package/x11r7/xfont_font-util/xfont_font-util.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# xfont_font-util +# +################################################################################ + +XFONT_FONT_UTIL_VERSION = 1.4.0 +XFONT_FONT_UTIL_SOURCE = font-util-$(XFONT_FONT_UTIL_VERSION).tar.xz +XFONT_FONT_UTIL_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_UTIL_LICENSE = MIT/BSD-2-Clause +XFONT_FONT_UTIL_LICENSE_FILES = COPYING + +XFONT_FONT_UTIL_DEPENDENCIES = host-pkgconf +HOST_XFONT_FONT_UTIL_DEPENDENCIES = host-pkgconf +XFONT_FONT_UTIL_INSTALL_STAGING = YES +XFONT_FONT_UTIL_INSTALL_TARGET = NO + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/x11r7/xfont_font-winitzki-cyrillic/Config.in b/package/x11r7/xfont_font-winitzki-cyrillic/Config.in new file mode 100644 index 00000000..ccfb0802 --- /dev/null +++ b/package/x11r7/xfont_font-winitzki-cyrillic/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_WINITZKI_CYRILLIC + bool "font-winitzki-cyrillic" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-winitzki-cyrillic/xfont_font-winitzki-cyrillic.hash b/package/x11r7/xfont_font-winitzki-cyrillic/xfont_font-winitzki-cyrillic.hash new file mode 100644 index 00000000..a0200073 --- /dev/null +++ b/package/x11r7/xfont_font-winitzki-cyrillic/xfont_font-winitzki-cyrillic.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 3b6d82122dc14776e3afcd877833a7834e1f900c53fc1c7bb2d67c781cfa97a8 font-winitzki-cyrillic-1.0.4.tar.xz +sha256 ca60a2aa1133e39e8c72a01af06cf0c927f5ddfe70d469d1535231100618095d COPYING diff --git a/package/x11r7/xfont_font-winitzki-cyrillic/xfont_font-winitzki-cyrillic.mk b/package/x11r7/xfont_font-winitzki-cyrillic/xfont_font-winitzki-cyrillic.mk new file mode 100644 index 00000000..f1348399 --- /dev/null +++ b/package/x11r7/xfont_font-winitzki-cyrillic/xfont_font-winitzki-cyrillic.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xfont_font-winitzki-cyrillic +# +################################################################################ + +XFONT_FONT_WINITZKI_CYRILLIC_VERSION = 1.0.4 +XFONT_FONT_WINITZKI_CYRILLIC_SOURCE = font-winitzki-cyrillic-$(XFONT_FONT_WINITZKI_CYRILLIC_VERSION).tar.xz +XFONT_FONT_WINITZKI_CYRILLIC_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_WINITZKI_CYRILLIC_LICENSE = Public Domain +XFONT_FONT_WINITZKI_CYRILLIC_LICENSE_FILES = COPYING + +XFONT_FONT_WINITZKI_CYRILLIC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_WINITZKI_CYRILLIC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_WINITZKI_CYRILLIC_DEPENDENCIES = \ + xfont_font-util \ + host-xfont_font-util \ + host-xapp_mkfontscale \ + host-xapp_bdftopcf \ + host-gzip + +$(eval $(autotools-package)) diff --git a/package/x11r7/xfont_font-xfree86-type1/Config.in b/package/x11r7/xfont_font-xfree86-type1/Config.in new file mode 100644 index 00000000..1a897b24 --- /dev/null +++ b/package/x11r7/xfont_font-xfree86-type1/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_XFREE86_TYPE1 + bool "font-xfree86-type1" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/package/x11r7/xfont_font-xfree86-type1/xfont_font-xfree86-type1.hash b/package/x11r7/xfont_font-xfree86-type1/xfont_font-xfree86-type1.hash new file mode 100644 index 00000000..68035e41 --- /dev/null +++ b/package/x11r7/xfont_font-xfree86-type1/xfont_font-xfree86-type1.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 a93c2c788a5ea1c002af7c8662cf9d9821fb1df51b8d2b2c5e0026dfdfea4837 font-xfree86-type1-1.0.5.tar.xz +sha256 51e6bc6513b3fa94512d8dd570240498c878605f25292c3883d92fdfca18d0c6 COPYING diff --git a/package/x11r7/xfont_font-xfree86-type1/xfont_font-xfree86-type1.mk b/package/x11r7/xfont_font-xfree86-type1/xfont_font-xfree86-type1.mk new file mode 100644 index 00000000..0b332d20 --- /dev/null +++ b/package/x11r7/xfont_font-xfree86-type1/xfont_font-xfree86-type1.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-xfree86-type1 +# +################################################################################ + +XFONT_FONT_XFREE86_TYPE1_VERSION = 1.0.5 +XFONT_FONT_XFREE86_TYPE1_SOURCE = font-xfree86-type1-$(XFONT_FONT_XFREE86_TYPE1_VERSION).tar.xz +XFONT_FONT_XFREE86_TYPE1_SITE = https://xorg.freedesktop.org/archive/individual/font +XFONT_FONT_XFREE86_TYPE1_LICENSE = MIT +XFONT_FONT_XFREE86_TYPE1_LICENSE_FILES = COPYING + +XFONT_FONT_XFREE86_TYPE1_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_XFREE86_TYPE1_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_XFREE86_TYPE1_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/package/x11r7/xkeyboard-config/Config.in b/package/x11r7/xkeyboard-config/Config.in new file mode 100644 index 00000000..17cfe738 --- /dev/null +++ b/package/x11r7/xkeyboard-config/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XKEYBOARD_CONFIG + bool "xkeyboard-config" + # Runtime dependencies + select BR2_PACKAGE_XAPP_XKBCOMP if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XORGPROTO if BR2_PACKAGE_XORG7 + help + keyboard configuration database for X + + https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config diff --git a/package/x11r7/xkeyboard-config/xkeyboard-config.hash b/package/x11r7/xkeyboard-config/xkeyboard-config.hash new file mode 100644 index 00000000..3a19075b --- /dev/null +++ b/package/x11r7/xkeyboard-config/xkeyboard-config.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 0690a91bab86b18868f3eee6d41e9ec4ce6894f655443d490a2184bfac56c872 xkeyboard-config-2.38.tar.xz +sha256 6ca90f4b67dced4062894d6d77f4cc39343df9e359fc12f5e5d3c89ef2a3ef6d COPYING diff --git a/package/x11r7/xkeyboard-config/xkeyboard-config.mk b/package/x11r7/xkeyboard-config/xkeyboard-config.mk new file mode 100644 index 00000000..7c9c814d --- /dev/null +++ b/package/x11r7/xkeyboard-config/xkeyboard-config.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# xkeyboard-config +# +################################################################################ + +XKEYBOARD_CONFIG_VERSION = 2.38 +XKEYBOARD_CONFIG_SOURCE = xkeyboard-config-$(XKEYBOARD_CONFIG_VERSION).tar.xz +XKEYBOARD_CONFIG_SITE = https://www.x.org/releases/individual/data/xkeyboard-config +XKEYBOARD_CONFIG_LICENSE = MIT +XKEYBOARD_CONFIG_LICENSE_FILES = COPYING + +XKEYBOARD_CONFIG_DEPENDENCIES = \ + $(BR2_PYTHON3_HOST_DEPENDENCY) \ + host-gettext \ + host-xapp_xkbcomp + +# xkeyboard-config.pc +XKEYBOARD_CONFIG_INSTALL_STAGING = YES + +$(eval $(meson-package)) diff --git a/package/x11r7/xlib_libFS/Config.in b/package/x11r7/xlib_libFS/Config.in new file mode 100644 index 00000000..6ff0bcc3 --- /dev/null +++ b/package/x11r7/xlib_libFS/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XLIB_LIBFS + bool "libFS" + select BR2_PACKAGE_XLIB_XTRANS + select BR2_PACKAGE_XORGPROTO + help + X.Org FS library diff --git a/package/x11r7/xlib_libFS/xlib_libFS.hash b/package/x11r7/xlib_libFS/xlib_libFS.hash new file mode 100644 index 00000000..6ca152ac --- /dev/null +++ b/package/x11r7/xlib_libFS/xlib_libFS.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-August/003200.html +sha256 597379438b3242ccc7d7b0fc432dc6c844eca0d4a82a7b82518bfeb203fc208a libFS-1.0.9.tar.xz +sha512 7d012e62736c6d567931bad982eec221199d296f0fe41e1e7fde5575b8b928e9a8c644aa8746242bdfe72393635320b58774d9a519285765bd26d633588092b8 libFS-1.0.9.tar.xz +# Locally computed +sha256 5386724e7475b89394dd836b954a6688f875efab99e43e8eb7e8775f5b99a341 COPYING diff --git a/package/x11r7/xlib_libFS/xlib_libFS.mk b/package/x11r7/xlib_libFS/xlib_libFS.mk new file mode 100644 index 00000000..0fbf453c --- /dev/null +++ b/package/x11r7/xlib_libFS/xlib_libFS.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# xlib_libFS +# +################################################################################ + +XLIB_LIBFS_VERSION = 1.0.9 +XLIB_LIBFS_SOURCE = libFS-$(XLIB_LIBFS_VERSION).tar.xz +XLIB_LIBFS_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBFS_LICENSE = MIT +XLIB_LIBFS_LICENSE_FILES = COPYING +XLIB_LIBFS_CPE_ID_VENDOR = x +XLIB_LIBFS_CPE_ID_PRODUCT = libfs +XLIB_LIBFS_INSTALL_STAGING = YES +XLIB_LIBFS_DEPENDENCIES = xlib_xtrans xorgproto host-pkgconf +XLIB_LIBFS_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_libICE/Config.in b/package/x11r7/xlib_libICE/Config.in new file mode 100644 index 00000000..ccdd4003 --- /dev/null +++ b/package/x11r7/xlib_libICE/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XLIB_LIBICE + bool "libICE" + select BR2_PACKAGE_XLIB_XTRANS + select BR2_PACKAGE_XORGPROTO + help + X.Org ICE library diff --git a/package/x11r7/xlib_libICE/xlib_libICE.hash b/package/x11r7/xlib_libICE/xlib_libICE.hash new file mode 100644 index 00000000..4a58f976 --- /dev/null +++ b/package/x11r7/xlib_libICE/xlib_libICE.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003288.html +sha256 03e77afaf72942c7ac02ccebb19034e6e20f456dcf8dddadfeb572aa5ad3e451 libICE-1.1.1.tar.xz +sha512 2f7833a25f31cc743ca95cb88f9a8403b50e19ffb5bf43bfef87ba405857d359789daaa9ec2391351237d958f16d35dbf082adb76d301e46d3a54162a6b452d3 libICE-1.1.1.tar.xz +# Locally computed +sha256 60105b7ea93cb07a67fee8443b092b727e3db7f0dff4fbe05bc6cd7747fb53c8 COPYING diff --git a/package/x11r7/xlib_libICE/xlib_libICE.mk b/package/x11r7/xlib_libICE/xlib_libICE.mk new file mode 100644 index 00000000..d92e81c0 --- /dev/null +++ b/package/x11r7/xlib_libICE/xlib_libICE.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xlib_libICE +# +################################################################################ + +XLIB_LIBICE_VERSION = 1.1.1 +XLIB_LIBICE_SOURCE = libICE-$(XLIB_LIBICE_VERSION).tar.xz +XLIB_LIBICE_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBICE_LICENSE = MIT +XLIB_LIBICE_LICENSE_FILES = COPYING +XLIB_LIBICE_CPE_ID_VENDOR = freedesktop +XLIB_LIBICE_CPE_ID_PRODUCT = libice +XLIB_LIBICE_INSTALL_STAGING = YES +XLIB_LIBICE_DEPENDENCIES = xlib_xtrans xorgproto host-pkgconf + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_libSM/Config.in b/package/x11r7/xlib_libSM/Config.in new file mode 100644 index 00000000..02ee2bd2 --- /dev/null +++ b/package/x11r7/xlib_libSM/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XLIB_LIBSM + bool "libSM" + select BR2_PACKAGE_XLIB_LIBICE + select BR2_PACKAGE_XLIB_XTRANS + select BR2_PACKAGE_XORGPROTO + help + X.Org SM library diff --git a/package/x11r7/xlib_libSM/xlib_libSM.hash b/package/x11r7/xlib_libSM/xlib_libSM.hash new file mode 100644 index 00000000..3068c85b --- /dev/null +++ b/package/x11r7/xlib_libSM/xlib_libSM.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003307.html +sha256 fdcbe51e4d1276b1183da77a8a4e74a137ca203e0bcfb20972dd5f3347e97b84 libSM-1.2.4.tar.xz +sha512 7f1d41b7b6c5dd456c49ccad7740c3ba9791a2793fa50fd94814a4164ce2e20c4a0a0ad42a87708e494ed5c23f611be6d3ccd9ef1e9add6d46ac545e2b0f6f86 libSM-1.2.4.tar.xz +# Locally computed +sha256 af7926a14d85ad367622688636e8c9c6f7807c8a6867536af1c530b5c262bfba COPYING diff --git a/package/x11r7/xlib_libSM/xlib_libSM.mk b/package/x11r7/xlib_libSM/xlib_libSM.mk new file mode 100644 index 00000000..8e5c9012 --- /dev/null +++ b/package/x11r7/xlib_libSM/xlib_libSM.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xlib_libSM +# +################################################################################ + +XLIB_LIBSM_VERSION = 1.2.4 +XLIB_LIBSM_SOURCE = libSM-$(XLIB_LIBSM_VERSION).tar.xz +XLIB_LIBSM_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBSM_LICENSE = MIT +XLIB_LIBSM_LICENSE_FILES = COPYING +XLIB_LIBSM_INSTALL_STAGING = YES +XLIB_LIBSM_DEPENDENCIES = xlib_libICE xlib_xtrans xorgproto +XLIB_LIBSM_CONF_OPTS = --without-libuuid + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_libX11/Config.in b/package/x11r7/xlib_libX11/Config.in new file mode 100644 index 00000000..d69c51b9 --- /dev/null +++ b/package/x11r7/xlib_libX11/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XLIB_LIBX11 + bool "libX11" + select BR2_PACKAGE_LIBXCB + select BR2_PACKAGE_XUTIL_UTIL_MACROS + select BR2_PACKAGE_XLIB_XTRANS + select BR2_PACKAGE_XLIB_LIBXAU + select BR2_PACKAGE_XLIB_LIBXDMCP + select BR2_PACKAGE_XORGPROTO + help + X.Org X11 library diff --git a/package/x11r7/xlib_libX11/xlib_libX11.hash b/package/x11r7/xlib_libX11/xlib_libX11.hash new file mode 100644 index 00000000..56fecee9 --- /dev/null +++ b/package/x11r7/xlib_libX11/xlib_libX11.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-October/003426.html +sha256 05f267468e3c851ae2b5c830bcf74251a90f63f04dd7c709ca94dc155b7e99ee libX11-1.8.7.tar.xz +sha512 d53bfc18f38d339a6a695b09835b2ae96b323881678bfe7ddca697605e3bdf4102ff49cc3078880a6c55b5977fcdd0aadaf5429086132de3a5bda302f79a2fa6 libX11-1.8.7.tar.xz +# Locally computed +sha256 2e7012a140f000735a7172674a2d314398d79622444fba65d108b029b29ab283 COPYING diff --git a/package/x11r7/xlib_libX11/xlib_libX11.mk b/package/x11r7/xlib_libX11/xlib_libX11.mk new file mode 100644 index 00000000..920a5d9a --- /dev/null +++ b/package/x11r7/xlib_libX11/xlib_libX11.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# xlib_libX11 +# +################################################################################ + +XLIB_LIBX11_VERSION = 1.8.7 +XLIB_LIBX11_SOURCE = libX11-$(XLIB_LIBX11_VERSION).tar.xz +XLIB_LIBX11_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBX11_LICENSE = MIT +XLIB_LIBX11_LICENSE_FILES = COPYING +XLIB_LIBX11_CPE_ID_VENDOR = x.org +XLIB_LIBX11_CPE_ID_PRODUCT = libx11 +XLIB_LIBX11_INSTALL_STAGING = YES +XLIB_LIBX11_DEPENDENCIES = \ + libxcb \ + xutil_util-macros \ + xlib_xtrans \ + xlib_libXau \ + xlib_libXdmcp \ + xorgproto \ + host-xorgproto + +HOST_XLIB_LIBX11_DEPENDENCIES = \ + host-libxcb \ + host-xutil_util-macros \ + host-xlib_xtrans \ + host-xlib_libXau \ + host-xlib_libXdmcp \ + host-xorgproto + +XLIB_LIBX11_CONF_OPTS = \ + --disable-malloc0returnsnull \ + --disable-specs \ + --without-perl + +HOST_XLIB_LIBX11_CONF_OPTS = \ + --disable-specs \ + --without-perl + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/x11r7/xlib_libXScrnSaver/Config.in b/package/x11r7/xlib_libXScrnSaver/Config.in new file mode 100644 index 00000000..05c96d74 --- /dev/null +++ b/package/x11r7/xlib_libXScrnSaver/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XLIB_LIBXSCRNSAVER + bool "libXScrnSaver" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XORGPROTO + help + X.Org XScrnSaver library diff --git a/package/x11r7/xlib_libXScrnSaver/xlib_libXScrnSaver.hash b/package/x11r7/xlib_libXScrnSaver/xlib_libXScrnSaver.hash new file mode 100644 index 00000000..a32997e1 --- /dev/null +++ b/package/x11r7/xlib_libXScrnSaver/xlib_libXScrnSaver.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003279.html +sha256 75cd2859f38e207a090cac980d76bc71e9da99d48d09703584e00585abc920fe libXScrnSaver-1.2.4.tar.xz +sha512 e4395af85f8496618afb23ffdaca1a75f5e3d213478d8dc73249cbc9840d7b993ba7513dbf6015cb38b48fe3f2223496365158a148dd5e1ac7475c5ee569e28c libXScrnSaver-1.2.4.tar.xz +# Locally computed +sha256 5cf3e16f5dd753a4c0853e8227134ab65f5562d9ef89b1a2d7681f5c8ac9feb5 COPYING diff --git a/package/x11r7/xlib_libXScrnSaver/xlib_libXScrnSaver.mk b/package/x11r7/xlib_libXScrnSaver/xlib_libXScrnSaver.mk new file mode 100644 index 00000000..55ae7a68 --- /dev/null +++ b/package/x11r7/xlib_libXScrnSaver/xlib_libXScrnSaver.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xlib_libXScrnSaver +# +################################################################################ + +XLIB_LIBXSCRNSAVER_VERSION = 1.2.4 +XLIB_LIBXSCRNSAVER_SOURCE = libXScrnSaver-$(XLIB_LIBXSCRNSAVER_VERSION).tar.xz +XLIB_LIBXSCRNSAVER_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBXSCRNSAVER_LICENSE = MIT +XLIB_LIBXSCRNSAVER_LICENSE_FILES = COPYING +XLIB_LIBXSCRNSAVER_INSTALL_STAGING = YES +XLIB_LIBXSCRNSAVER_DEPENDENCIES = xlib_libX11 xlib_libXext xorgproto +XLIB_LIBXSCRNSAVER_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_libXau/Config.in b/package/x11r7/xlib_libXau/Config.in new file mode 100644 index 00000000..0323faa3 --- /dev/null +++ b/package/x11r7/xlib_libXau/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XLIB_LIBXAU + bool "libXau" + select BR2_PACKAGE_XORGPROTO + select BR2_PACKAGE_XUTIL_UTIL_MACROS + help + X.Org Xau library diff --git a/package/x11r7/xlib_libXau/xlib_libXau.hash b/package/x11r7/xlib_libXau/xlib_libXau.hash new file mode 100644 index 00000000..8d2a6ff4 --- /dev/null +++ b/package/x11r7/xlib_libXau/xlib_libXau.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003284.html +sha256 f3fa3282f5570c3f6bd620244438dbfbdd580fc80f02f549587a0f8ab329bbeb libXau-1.0.11.tar.xz +sha512 f56abba3bef3fdd4739dfa69367a4251b5fab7c89194c9aece9efa66b9ebbf0736690cc9bd654aab19d9db377e4b9a5268c9c020b3d293bb5351bff5fe75a4dd libXau-1.0.11.tar.xz +# Locally computed +sha256 56abe29bb1d9806a9e04fa9f80fed2c0f18027594df3f098148d814aef6bddfa COPYING diff --git a/package/x11r7/xlib_libXau/xlib_libXau.mk b/package/x11r7/xlib_libXau/xlib_libXau.mk new file mode 100644 index 00000000..0e9f79d3 --- /dev/null +++ b/package/x11r7/xlib_libXau/xlib_libXau.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# xlib_libXau +# +################################################################################ + +XLIB_LIBXAU_VERSION = 1.0.11 +XLIB_LIBXAU_SOURCE = libXau-$(XLIB_LIBXAU_VERSION).tar.xz +XLIB_LIBXAU_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXAU_LICENSE = MIT +XLIB_LIBXAU_LICENSE_FILES = COPYING +XLIB_LIBXAU_INSTALL_STAGING = YES +XLIB_LIBXAU_DEPENDENCIES = host-pkgconf xutil_util-macros xorgproto +HOST_XLIB_LIBXAU_DEPENDENCIES = \ + host-pkgconf host-xutil_util-macros host-xorgproto + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/x11r7/xlib_libXaw/Config.in b/package/x11r7/xlib_libXaw/Config.in new file mode 100644 index 00000000..bda4ded2 --- /dev/null +++ b/package/x11r7/xlib_libXaw/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XLIB_LIBXAW + bool "libXaw" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_XLIB_LIBXMU + select BR2_PACKAGE_XLIB_LIBXPM + select BR2_PACKAGE_XORGPROTO + help + X.Org Xaw library diff --git a/package/x11r7/xlib_libXaw/xlib_libXaw.hash b/package/x11r7/xlib_libXaw/xlib_libXaw.hash new file mode 100644 index 00000000..ce2ec4a3 --- /dev/null +++ b/package/x11r7/xlib_libXaw/xlib_libXaw.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-March/003372.html +sha256 ab35f70fde9fb02cc71b342f654846a74328b74cb3a0703c02d20eddb212754a libXaw-1.0.15.tar.xz +sha512 8edbf280b7b24b9040c291545053c1251d6af7e7f56da43a6065a1848245863eb52bdfc28c2f18dbb6597a4064394a44f4df5d8596a1a467549ccc9ce50a7821 libXaw-1.0.15.tar.xz +# Locally calculated +sha256 9f5adb26952f93b3e4650285b94ec6c61a27aab5a21088bfb6694001be1b360d COPYING diff --git a/package/x11r7/xlib_libXaw/xlib_libXaw.mk b/package/x11r7/xlib_libXaw/xlib_libXaw.mk new file mode 100644 index 00000000..f81a7b4a --- /dev/null +++ b/package/x11r7/xlib_libXaw/xlib_libXaw.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xlib_libXaw +# +################################################################################ + +XLIB_LIBXAW_VERSION = 1.0.15 +XLIB_LIBXAW_SOURCE = libXaw-$(XLIB_LIBXAW_VERSION).tar.xz +XLIB_LIBXAW_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBXAW_LICENSE = MIT +XLIB_LIBXAW_LICENSE_FILES = COPYING +XLIB_LIBXAW_INSTALL_STAGING = YES +XLIB_LIBXAW_DEPENDENCIES = xlib_libX11 xlib_libXt xlib_libXmu xlib_libXpm xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_libXcomposite/Config.in b/package/x11r7/xlib_libXcomposite/Config.in new file mode 100644 index 00000000..b417140a --- /dev/null +++ b/package/x11r7/xlib_libXcomposite/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XLIB_LIBXCOMPOSITE + bool "libXcomposite" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXFIXES + select BR2_PACKAGE_XORGPROTO + help + X.Org Xcomposite library diff --git a/package/x11r7/xlib_libXcomposite/xlib_libXcomposite.hash b/package/x11r7/xlib_libXcomposite/xlib_libXcomposite.hash new file mode 100644 index 00000000..62b5ea92 --- /dev/null +++ b/package/x11r7/xlib_libXcomposite/xlib_libXcomposite.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003276.html +sha256 fe40bcf0ae1a09070eba24088a5eb9810efe57453779ec1e20a55080c6dc2c87 libXcomposite-0.4.6.tar.xz +sha512 f35a0da8f9f22fd788eee01209557fe3a1b1abdc9744f76330ba42b21b6e3af5464ca4451c33415856417c30da5aa5624e3707980c644327249bfeda5a62a59b libXcomposite-0.4.6.tar.xz +# Locally computed +sha256 efa0219ed8485ac555c1a3fb82daf34539b2e0dcf4dadc99c01f1e39c69a4a68 COPYING diff --git a/package/x11r7/xlib_libXcomposite/xlib_libXcomposite.mk b/package/x11r7/xlib_libXcomposite/xlib_libXcomposite.mk new file mode 100644 index 00000000..c296ee6c --- /dev/null +++ b/package/x11r7/xlib_libXcomposite/xlib_libXcomposite.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xlib_libXcomposite +# +################################################################################ + +XLIB_LIBXCOMPOSITE_VERSION = 0.4.6 +XLIB_LIBXCOMPOSITE_SOURCE = libXcomposite-$(XLIB_LIBXCOMPOSITE_VERSION).tar.xz +XLIB_LIBXCOMPOSITE_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBXCOMPOSITE_LICENSE = MIT +XLIB_LIBXCOMPOSITE_LICENSE_FILES = COPYING +XLIB_LIBXCOMPOSITE_INSTALL_STAGING = YES +XLIB_LIBXCOMPOSITE_DEPENDENCIES = xlib_libX11 xlib_libXext xlib_libXfixes xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_libXcursor/Config.in b/package/x11r7/xlib_libXcursor/Config.in new file mode 100644 index 00000000..0c70f959 --- /dev/null +++ b/package/x11r7/xlib_libXcursor/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XLIB_LIBXCURSOR + bool "libXcursor" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXFIXES + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XORGPROTO + help + X.Org Xcursor library diff --git a/package/x11r7/xlib_libXcursor/xlib_libXcursor.hash b/package/x11r7/xlib_libXcursor/xlib_libXcursor.hash new file mode 100644 index 00000000..11575edb --- /dev/null +++ b/package/x11r7/xlib_libXcursor/xlib_libXcursor.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-April/003136.html +sha256 46c143731610bafd2070159a844571b287ac26192537d047a39df06155492104 libXcursor-1.2.1.tar.xz +sha512 ebb42a39855aab86d0c11fe6ad33d011cf56a6dc5c309bef643460319c03df239b7e09fe88777bb25c0e9ff8aceac6bf66e51cc04a2d5ee463b3bc3bbf1674e3 libXcursor-1.2.1.tar.xz +# Locally computed +sha256 ad2e9d279088c5d612fb0e506ea8bb7d9f01b411e7f4b97b64589c3cd48a68f1 COPYING diff --git a/package/x11r7/xlib_libXcursor/xlib_libXcursor.mk b/package/x11r7/xlib_libXcursor/xlib_libXcursor.mk new file mode 100644 index 00000000..4a1ffcce --- /dev/null +++ b/package/x11r7/xlib_libXcursor/xlib_libXcursor.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# xlib_libXcursor +# +################################################################################ + +XLIB_LIBXCURSOR_VERSION = 1.2.1 +XLIB_LIBXCURSOR_SOURCE = libXcursor-$(XLIB_LIBXCURSOR_VERSION).tar.xz +XLIB_LIBXCURSOR_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXCURSOR_LICENSE = MIT +XLIB_LIBXCURSOR_LICENSE_FILES = COPYING +XLIB_LIBXCURSOR_INSTALL_STAGING = YES +XLIB_LIBXCURSOR_CPE_ID_VENDOR = x +XLIB_LIBXCURSOR_CPE_ID_PRODUCT = libxcursor +XLIB_LIBXCURSOR_DEPENDENCIES = xlib_libX11 xlib_libXfixes xlib_libXrender xorgproto +HOST_XLIB_LIBXCURSOR_DEPENDENCIES = \ + host-xlib_libX11 host-xlib_libXfixes host-xlib_libXrender \ + host-xorgproto + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/x11r7/xlib_libXdamage/Config.in b/package/x11r7/xlib_libXdamage/Config.in new file mode 100644 index 00000000..d1a07dea --- /dev/null +++ b/package/x11r7/xlib_libXdamage/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XLIB_LIBXDAMAGE + bool "libXdamage" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXFIXES + select BR2_PACKAGE_XORGPROTO + help + X.Org Xdamage library diff --git a/package/x11r7/xlib_libXdamage/xlib_libXdamage.hash b/package/x11r7/xlib_libXdamage/xlib_libXdamage.hash new file mode 100644 index 00000000..41a809ad --- /dev/null +++ b/package/x11r7/xlib_libXdamage/xlib_libXdamage.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003277.html +sha256 52733c1f5262fca35f64e7d5060c6fcd81a880ba8e1e65c9621cf0727afb5d11 libXdamage-1.1.6.tar.xz +sha512 624dcefa1c79064569df952892f7f1351dc19ad338ce73d1a57041e406cb3e18abe531bab352b93d1f0f5c9b5c6b2652cc84a8f1fbfcbba648343812695a8acb libXdamage-1.1.6.tar.xz +# Locally computed +sha256 33effe928634be12e668465c3935c5570ff2787b970b15d9243d69df42302c57 COPYING diff --git a/package/x11r7/xlib_libXdamage/xlib_libXdamage.mk b/package/x11r7/xlib_libXdamage/xlib_libXdamage.mk new file mode 100644 index 00000000..dba08622 --- /dev/null +++ b/package/x11r7/xlib_libXdamage/xlib_libXdamage.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xlib_libXdamage +# +################################################################################ + +XLIB_LIBXDAMAGE_VERSION = 1.1.6 +XLIB_LIBXDAMAGE_SOURCE = libXdamage-$(XLIB_LIBXDAMAGE_VERSION).tar.xz +XLIB_LIBXDAMAGE_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBXDAMAGE_LICENSE = MIT +XLIB_LIBXDAMAGE_LICENSE_FILES = COPYING +XLIB_LIBXDAMAGE_INSTALL_STAGING = YES +XLIB_LIBXDAMAGE_DEPENDENCIES = xlib_libX11 xlib_libXfixes xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_libXdmcp/Config.in b/package/x11r7/xlib_libXdmcp/Config.in new file mode 100644 index 00000000..832822e9 --- /dev/null +++ b/package/x11r7/xlib_libXdmcp/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XLIB_LIBXDMCP + bool "libXdmcp" + select BR2_PACKAGE_XUTIL_UTIL_MACROS + select BR2_PACKAGE_XORGPROTO + help + X.Org Xdmcp library diff --git a/package/x11r7/xlib_libXdmcp/xlib_libXdmcp.hash b/package/x11r7/xlib_libXdmcp/xlib_libXdmcp.hash new file mode 100644 index 00000000..83609413 --- /dev/null +++ b/package/x11r7/xlib_libXdmcp/xlib_libXdmcp.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-November/003260.html +sha256 2dce5cc317f8f0b484ec347d87d81d552cdbebb178bd13c5d8193b6b7cd6ad00 libXdmcp-1.1.4.tar.xz +sha512 83b384d43bfb034c395f83f97d1c6e73aa3d5faa8f8756b08e697c0b9c3c87189651b51e8213fbd1f5f9cbc2d8136cbf143627481744345d78cfe0ff2ad074a9 libXdmcp-1.1.4.tar.xz +# Locally computed +sha256 8a3c3f35b0dbcb60a4e242b9e4394a352a65bb27deb2938ea1e2e62a626e16e9 COPYING diff --git a/package/x11r7/xlib_libXdmcp/xlib_libXdmcp.mk b/package/x11r7/xlib_libXdmcp/xlib_libXdmcp.mk new file mode 100644 index 00000000..a79e2615 --- /dev/null +++ b/package/x11r7/xlib_libXdmcp/xlib_libXdmcp.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# xlib_libXdmcp +# +################################################################################ + +XLIB_LIBXDMCP_VERSION = 1.1.4 +XLIB_LIBXDMCP_SOURCE = libXdmcp-$(XLIB_LIBXDMCP_VERSION).tar.xz +XLIB_LIBXDMCP_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBXDMCP_LICENSE = MIT +XLIB_LIBXDMCP_LICENSE_FILES = COPYING +XLIB_LIBXDMCP_CPE_ID_VENDOR = x.org +XLIB_LIBXDMCP_CPE_ID_PRODUCT = libxdmcp +XLIB_LIBXDMCP_INSTALL_STAGING = YES +XLIB_LIBXDMCP_DEPENDENCIES = xutil_util-macros xorgproto host-pkgconf +HOST_XLIB_LIBXDMCP_DEPENDENCIES = host-xutil_util-macros host-xorgproto host-pkgconf + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/x11r7/xlib_libXext/Config.in b/package/x11r7/xlib_libXext/Config.in new file mode 100644 index 00000000..58c9ce55 --- /dev/null +++ b/package/x11r7/xlib_libXext/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XLIB_LIBXEXT + bool "libXext" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XORGPROTO + help + X.Org Xext library diff --git a/package/x11r7/xlib_libXext/xlib_libXext.hash b/package/x11r7/xlib_libXext/xlib_libXext.hash new file mode 100644 index 00000000..2ab50959 --- /dev/null +++ b/package/x11r7/xlib_libXext/xlib_libXext.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003241.html +sha256 db14c0c895c57ea33a8559de8cb2b93dc76c42ea4a39e294d175938a133d7bca libXext-1.3.5.tar.xz +sha512 fd9805982dabfb14b1526c0cb71f94508003fa3fcd60560d387465afd891c1dca61927ae86278436d53f4b840cacd1f412071fdc3dce1d6f730610a9c163d59b libXext-1.3.5.tar.xz +# Locally computed +sha256 fd62910be4b13829d94e76c1447cf840953f0e225c4dc6c79349c84dd0557f22 COPYING diff --git a/package/x11r7/xlib_libXext/xlib_libXext.mk b/package/x11r7/xlib_libXext/xlib_libXext.mk new file mode 100644 index 00000000..0bb3efa3 --- /dev/null +++ b/package/x11r7/xlib_libXext/xlib_libXext.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# xlib_libXext +# +################################################################################ + +XLIB_LIBXEXT_VERSION = 1.3.5 +XLIB_LIBXEXT_SOURCE = libXext-$(XLIB_LIBXEXT_VERSION).tar.xz +XLIB_LIBXEXT_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBXEXT_LICENSE = MIT +XLIB_LIBXEXT_LICENSE_FILES = COPYING +XLIB_LIBXEXT_CPE_ID_VENDOR = x +XLIB_LIBXEXT_CPE_ID_PRODUCT = libxext +XLIB_LIBXEXT_INSTALL_STAGING = YES +XLIB_LIBXEXT_DEPENDENCIES = xlib_libX11 xorgproto +XLIB_LIBXEXT_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_libXfixes/Config.in b/package/x11r7/xlib_libXfixes/Config.in new file mode 100644 index 00000000..2c3b6684 --- /dev/null +++ b/package/x11r7/xlib_libXfixes/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XLIB_LIBXFIXES + bool "libXfixes" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XORGPROTO + help + X.Org Xfixes library diff --git a/package/x11r7/xlib_libXfixes/xlib_libXfixes.hash b/package/x11r7/xlib_libXfixes/xlib_libXfixes.hash new file mode 100644 index 00000000..03de9062 --- /dev/null +++ b/package/x11r7/xlib_libXfixes/xlib_libXfixes.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-April/003382.html +sha256 b695f93cd2499421ab02d22744458e650ccc88c1d4c8130d60200213abc02d58 libXfixes-6.0.1.tar.xz +sha512 b46deffb30cd73ec8a127390d99f2ba2f3ab78f334fdba227f1f461441644a0c169b0d13ffa47576fa458780e7a6db664ff8b93e9195fb217262efd8128f1ffe libXfixes-6.0.1.tar.xz +# Locally calculated +sha256 a07d8a5a6972638a745a03983207a1052881c24eea29021fdca7794bea8d7774 COPYING diff --git a/package/x11r7/xlib_libXfixes/xlib_libXfixes.mk b/package/x11r7/xlib_libXfixes/xlib_libXfixes.mk new file mode 100644 index 00000000..3f535fc1 --- /dev/null +++ b/package/x11r7/xlib_libXfixes/xlib_libXfixes.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# xlib_libXfixes +# +################################################################################ + +XLIB_LIBXFIXES_VERSION = 6.0.1 +XLIB_LIBXFIXES_SOURCE = libXfixes-$(XLIB_LIBXFIXES_VERSION).tar.xz +XLIB_LIBXFIXES_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBXFIXES_LICENSE = MIT +XLIB_LIBXFIXES_LICENSE_FILES = COPYING +XLIB_LIBXFIXES_CPE_ID_VENDOR = x +XLIB_LIBXFIXES_CPE_ID_PRODUCT = libxfixes +XLIB_LIBXFIXES_INSTALL_STAGING = YES +XLIB_LIBXFIXES_DEPENDENCIES = xlib_libX11 xorgproto +HOST_XLIB_LIBXFIXES_DEPENDENCIES = \ + host-xlib_libX11 host-xorgproto + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/x11r7/xlib_libXfont/Config.in b/package/x11r7/xlib_libXfont/Config.in new file mode 100644 index 00000000..4658027d --- /dev/null +++ b/package/x11r7/xlib_libXfont/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XLIB_LIBXFONT + bool "libXfont" + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_XLIB_LIBFONTENC + select BR2_PACKAGE_XLIB_XTRANS + select BR2_PACKAGE_XFONT_ENCODINGS + select BR2_PACKAGE_XORGPROTO + help + X.Org Xfont library diff --git a/package/x11r7/xlib_libXfont/xlib_libXfont.hash b/package/x11r7/xlib_libXfont/xlib_libXfont.hash new file mode 100644 index 00000000..72a58e4d --- /dev/null +++ b/package/x11r7/xlib_libXfont/xlib_libXfont.hash @@ -0,0 +1,8 @@ +# From https://lists.x.org/archives/xorg-announce/2017-November/002825.html +md5 16eaf156edd79b68038b6a7c44aa9e9b libXfont-1.5.4.tar.bz2 +sha1 9db050f63b9c4cb19e0dbb40575558ccb95719ca libXfont-1.5.4.tar.bz2 +sha256 1a7f7490774c87f2052d146d1e0e64518d32e6848184a18654e8d0bb57883242 libXfont-1.5.4.tar.bz2 +sha512 864edbaff45c44bd92bc4b06275c73fdf584a9b88bc523a297d4c75c01ca253f438463e929af70d753ddecfa648bb0b9bcf0ec72267db9f2b1704f7afa906cb3 libXfont-1.5.4.tar.bz2 + +# Locally calculated +sha256 97e413bb4962bbb5773085cd5405502bf1d4eadeaf98ff5be015eacacc840462 COPYING diff --git a/package/x11r7/xlib_libXfont/xlib_libXfont.mk b/package/x11r7/xlib_libXfont/xlib_libXfont.mk new file mode 100644 index 00000000..eeddfeeb --- /dev/null +++ b/package/x11r7/xlib_libXfont/xlib_libXfont.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# xlib_libXfont +# +################################################################################ + +XLIB_LIBXFONT_VERSION = 1.5.4 +XLIB_LIBXFONT_SOURCE = libXfont-$(XLIB_LIBXFONT_VERSION).tar.bz2 +XLIB_LIBXFONT_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXFONT_LICENSE = MIT +XLIB_LIBXFONT_LICENSE_FILES = COPYING +XLIB_LIBXFONT_INSTALL_STAGING = YES + +XLIB_LIBXFONT_DEPENDENCIES = freetype xlib_libfontenc xlib_xtrans xorgproto + +HOST_XLIB_LIBXFONT_DEPENDENCIES = \ + host-freetype host-xlib_libfontenc host-xlib_xtrans \ + host-xorgproto + +XLIB_LIBXFONT_CONF_OPTS = --disable-devel-docs +HOST_XLIB_LIBXFONT_CONF_OPTS = --disable-devel-docs + +ifeq ($(BR2_microblaze),y) +# The microblaze toolchains don't define the __ELF__ preprocessor +# symbol even though they do use the elf format. LibXfont checks for +# this symbol to know if weak symbols are supported, and otherwise +# falls back to emulation code using dlopen - Causing linker issues +# for stuff using libXfont. +# Work around it by defining the symbol here as well. +XLIB_LIBXFONT_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -D__ELF__" +endif + +XLIB_LIBXFONT_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +XLIB_LIBXFONT_CFLAGS += -O0 +endif + +XLIB_LIBXFONT_CONF_ENV += CFLAGS="$(XLIB_LIBXFONT_CFLAGS)" + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/x11r7/xlib_libXfont2/Config.in b/package/x11r7/xlib_libXfont2/Config.in new file mode 100644 index 00000000..fc2ebfe2 --- /dev/null +++ b/package/x11r7/xlib_libXfont2/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XLIB_LIBXFONT2 + bool "libXfont2" + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_XLIB_LIBFONTENC + select BR2_PACKAGE_XLIB_XTRANS + select BR2_PACKAGE_XFONT_ENCODINGS + select BR2_PACKAGE_XORGPROTO + help + X.Org Xfont library diff --git a/package/x11r7/xlib_libXfont2/xlib_libXfont2.hash b/package/x11r7/xlib_libXfont2/xlib_libXfont2.hash new file mode 100644 index 00000000..f2ae5925 --- /dev/null +++ b/package/x11r7/xlib_libXfont2/xlib_libXfont2.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-August/003203.html +sha256 74ca20017eb0fb3f56d8d5e60685f560fc85e5ff3d84c61c4cb891e40c27aef4 libXfont2-2.0.6.tar.xz +sha512 24d6baeef8dc2ca2730925c6b790a97f4a3f46ea7b4d908555e7df29cee6e27b63d638b50c88dd30c853cecff7d9b079402cb617f4498f96410c5770b8815cbd libXfont2-2.0.6.tar.xz +# Locally calculated +sha256 97e413bb4962bbb5773085cd5405502bf1d4eadeaf98ff5be015eacacc840462 COPYING diff --git a/package/x11r7/xlib_libXfont2/xlib_libXfont2.mk b/package/x11r7/xlib_libXfont2/xlib_libXfont2.mk new file mode 100644 index 00000000..7f90f670 --- /dev/null +++ b/package/x11r7/xlib_libXfont2/xlib_libXfont2.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# xlib_libXfont2 +# +################################################################################ + +XLIB_LIBXFONT2_VERSION = 2.0.6 +XLIB_LIBXFONT2_SOURCE = libXfont2-$(XLIB_LIBXFONT2_VERSION).tar.xz +XLIB_LIBXFONT2_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBXFONT2_LICENSE = MIT +XLIB_LIBXFONT2_LICENSE_FILES = COPYING +XLIB_LIBXFONT2_CPE_ID_VENDOR = x +XLIB_LIBXFONT2_CPE_ID_PRODUCT = libxfont +XLIB_LIBXFONT2_INSTALL_STAGING = YES +XLIB_LIBXFONT2_DEPENDENCIES = \ + freetype \ + xlib_libfontenc \ + xlib_xtrans \ + xorgproto \ + xfont_encodings + +ifeq ($(BR2_PACKAGE_LIBBSD),y) +XLIB_LIBXFONT2_DEPENDENCIES += libbsd +endif + +HOST_XLIB_LIBXFONT2_DEPENDENCIES = \ + host-freetype \ + host-xlib_libfontenc \ + host-xlib_xtrans \ + host-xorgproto \ + host-xfont_encodings + +XLIB_LIBXFONT2_CONF_OPTS = --disable-devel-docs +HOST_XLIB_LIBXFONT2_CONF_OPTS = --disable-devel-docs + +XLIB_LIBXFONT2_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +XLIB_LIBXFONT2_CFLAGS += -O0 +endif + +XLIB_LIBXFONT2_CONF_ENV = CFLAGS="$(XLIB_LIBXFONT2_CFLAGS)" + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/x11r7/xlib_libXft/Config.in b/package/x11r7/xlib_libXft/Config.in new file mode 100644 index 00000000..84967a55 --- /dev/null +++ b/package/x11r7/xlib_libXft/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XLIB_LIBXFT + bool "libXft" + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XORGPROTO + help + X.Org Xft library diff --git a/package/x11r7/xlib_libXft/xlib_libXft.hash b/package/x11r7/xlib_libXft/xlib_libXft.hash new file mode 100644 index 00000000..749aa0ad --- /dev/null +++ b/package/x11r7/xlib_libXft/xlib_libXft.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-April/003384.html +sha256 5e8c3c4bc2d4c0a40aef6b4b38ed2fb74301640da29f6528154b5009b1c6dd49 libXft-2.3.8.tar.xz +sha512 fc385d73e1acb701942c154ffb5a283d17891f21d3ac598c4a3fb375a7d6082734593062368c15cad67c1a94177dd15deed878ec5ea852188393b52e92c372c8 libXft-2.3.8.tar.xz +# Locally computed +sha256 7cda22286b1379b9b73df695f72cbad36595e65b039a5fbc5c89b69ecc44438c COPYING diff --git a/package/x11r7/xlib_libXft/xlib_libXft.mk b/package/x11r7/xlib_libXft/xlib_libXft.mk new file mode 100644 index 00000000..154c220a --- /dev/null +++ b/package/x11r7/xlib_libXft/xlib_libXft.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xlib_libXft +# +################################################################################ + +XLIB_LIBXFT_VERSION = 2.3.8 +XLIB_LIBXFT_SOURCE = libXft-$(XLIB_LIBXFT_VERSION).tar.xz +XLIB_LIBXFT_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBXFT_LICENSE = MIT +XLIB_LIBXFT_LICENSE_FILES = COPYING +XLIB_LIBXFT_INSTALL_STAGING = YES +XLIB_LIBXFT_DEPENDENCIES = fontconfig freetype xlib_libX11 xlib_libXext xlib_libXrender xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_libXi/Config.in b/package/x11r7/xlib_libXi/Config.in new file mode 100644 index 00000000..31313069 --- /dev/null +++ b/package/x11r7/xlib_libXi/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XLIB_LIBXI + bool "libXi" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXFIXES + select BR2_PACKAGE_XORGPROTO + help + X.Org Xi library diff --git a/package/x11r7/xlib_libXi/xlib_libXi.hash b/package/x11r7/xlib_libXi/xlib_libXi.hash new file mode 100644 index 00000000..545d4881 --- /dev/null +++ b/package/x11r7/xlib_libXi/xlib_libXi.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-May/003390.html +sha256 89bfc0e814f288f784202e6e5f9b362b788ccecdeb078670145eacd8749656a7 libXi-1.8.1.tar.xz +sha512 a30b1a07e6d710f5196e7477415d68074736f89d954e8f2d5ccc9b5f349e7d1d440c90fb512508176b5db5ecad55608cfb540872936b731963fd83343db3a0b9 libXi-1.8.1.tar.xz +# Locally computed +sha256 9392174bc86e291369fd2f61f3ed325962735a5f5c585ce8d7ebd365e2a5639f COPYING diff --git a/package/x11r7/xlib_libXi/xlib_libXi.mk b/package/x11r7/xlib_libXi/xlib_libXi.mk new file mode 100644 index 00000000..6ae5ec8b --- /dev/null +++ b/package/x11r7/xlib_libXi/xlib_libXi.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# xlib_libXi +# +################################################################################ + +XLIB_LIBXI_VERSION = 1.8.1 +XLIB_LIBXI_SOURCE = libXi-$(XLIB_LIBXI_VERSION).tar.xz +XLIB_LIBXI_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBXI_LICENSE = MIT +XLIB_LIBXI_LICENSE_FILES = COPYING +XLIB_LIBXI_CPE_ID_VENDOR = x.org +XLIB_LIBXI_CPE_ID_PRODUCT = libxi +XLIB_LIBXI_INSTALL_STAGING = YES +XLIB_LIBXI_DEPENDENCIES = \ + host-pkgconf \ + xlib_libX11 \ + xlib_libXext \ + xlib_libXfixes \ + xorgproto + +XLIB_LIBXI_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_libXinerama/Config.in b/package/x11r7/xlib_libXinerama/Config.in new file mode 100644 index 00000000..f8ea9595 --- /dev/null +++ b/package/x11r7/xlib_libXinerama/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XLIB_LIBXINERAMA + bool "libXinerama" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XORGPROTO + help + X.Org Xinerama library diff --git a/package/x11r7/xlib_libXinerama/xlib_libXinerama.hash b/package/x11r7/xlib_libXinerama/xlib_libXinerama.hash new file mode 100644 index 00000000..e3ac880b --- /dev/null +++ b/package/x11r7/xlib_libXinerama/xlib_libXinerama.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003244.html +sha256 5094d1f0fcc1828cb1696d0d39d9e866ae32520c54d01f618f1a3c1e30c2085c libXinerama-1.1.5.tar.xz +sha512 735b5320de4782005b379e409bf2f976131c17d496b297d33a0e127ca1443034778586b6b25c077b2ad73a4ab34d440d7510475e0041f38202bb40f15fb08ff7 libXinerama-1.1.5.tar.xz +# Locally computed +sha256 f661fd883b6e980b3b118e0fbe230fbf10eef8d4d4a35931355f29ed647ddbe3 COPYING diff --git a/package/x11r7/xlib_libXinerama/xlib_libXinerama.mk b/package/x11r7/xlib_libXinerama/xlib_libXinerama.mk new file mode 100644 index 00000000..67e3398c --- /dev/null +++ b/package/x11r7/xlib_libXinerama/xlib_libXinerama.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# xlib_libXinerama +# +################################################################################ + +XLIB_LIBXINERAMA_VERSION = 1.1.5 +XLIB_LIBXINERAMA_SOURCE = libXinerama-$(XLIB_LIBXINERAMA_VERSION).tar.xz +XLIB_LIBXINERAMA_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBXINERAMA_LICENSE = MIT +XLIB_LIBXINERAMA_LICENSE_FILES = COPYING +XLIB_LIBXINERAMA_CPE_ID_VENDOR = x +XLIB_LIBXINERAMA_CPE_ID_PRODUCT = libxinerama +XLIB_LIBXINERAMA_INSTALL_STAGING = YES +XLIB_LIBXINERAMA_DEPENDENCIES = xlib_libX11 xlib_libXext xorgproto +XLIB_LIBXINERAMA_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_libXmu/Config.in b/package/x11r7/xlib_libXmu/Config.in new file mode 100644 index 00000000..b5889208 --- /dev/null +++ b/package/x11r7/xlib_libXmu/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XLIB_LIBXMU + bool "libXmu" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_XORGPROTO + help + X.Org Xmu library diff --git a/package/x11r7/xlib_libXmu/xlib_libXmu.hash b/package/x11r7/xlib_libXmu/xlib_libXmu.hash new file mode 100644 index 00000000..58d35451 --- /dev/null +++ b/package/x11r7/xlib_libXmu/xlib_libXmu.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003224.html +sha256 210de3ab9c3e9382572c25d17c2518a854ce6e2c62c5f8315deac7579e758244 libXmu-1.1.4.tar.xz +sha512 3cf90cb3ff380aafefbb39297bdd95b9e1e6d6618cecb53ff09faf38f9b9c54599d28367f07a9ec77a20214c6c3e661b8d0a12b38082556790a79a59942039c1 libXmu-1.1.4.tar.xz +# Locally computed +sha256 8f0f2ca7a05cfd10bf9e307a272182de7cb52d7a603feaf17b9943c2c9a4838e COPYING diff --git a/package/x11r7/xlib_libXmu/xlib_libXmu.mk b/package/x11r7/xlib_libXmu/xlib_libXmu.mk new file mode 100644 index 00000000..05196805 --- /dev/null +++ b/package/x11r7/xlib_libXmu/xlib_libXmu.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xlib_libXmu +# +################################################################################ + +XLIB_LIBXMU_VERSION = 1.1.4 +XLIB_LIBXMU_SOURCE = libXmu-$(XLIB_LIBXMU_VERSION).tar.xz +XLIB_LIBXMU_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBXMU_LICENSE = MIT +XLIB_LIBXMU_LICENSE_FILES = COPYING +XLIB_LIBXMU_INSTALL_STAGING = YES +XLIB_LIBXMU_DEPENDENCIES = xlib_libX11 xlib_libXext xlib_libXt xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_libXpm/Config.in b/package/x11r7/xlib_libXpm/Config.in new file mode 100644 index 00000000..9a15d77d --- /dev/null +++ b/package/x11r7/xlib_libXpm/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XLIB_LIBXPM + bool "libXpm" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_XORGPROTO + help + X.Org Xpm library diff --git a/package/x11r7/xlib_libXpm/xlib_libXpm.hash b/package/x11r7/xlib_libXpm/xlib_libXpm.hash new file mode 100644 index 00000000..35821698 --- /dev/null +++ b/package/x11r7/xlib_libXpm/xlib_libXpm.hash @@ -0,0 +1,6 @@ +# From https://lists.x.org/archives/xorg-announce/2023-October/003425.html +sha256 64b31f81019e7d388c822b0b28af8d51c4622b83f1f0cb6fa3fc95e271226e43 libXpm-3.5.17.tar.xz +sha512 52f9d2664a47a26c1a6ad65d18867de870b66947b0b0d99cca3512756a0aaa6ce2a245c0b49f20b70c3ce48bf04c47c333e8119a147465c277bca727f6ab017e libXpm-3.5.17.tar.xz +# Locally calculated +sha256 a80d706759624a04aa90fd62bc644a360fc3d72e08dcbfb129f167c11ca285de COPYING +sha256 cbe4ced0abc8a32bea471204ae01038c202758ce4e772d3d329a341ffa761e71 COPYRIGHT diff --git a/package/x11r7/xlib_libXpm/xlib_libXpm.mk b/package/x11r7/xlib_libXpm/xlib_libXpm.mk new file mode 100644 index 00000000..1239ba0d --- /dev/null +++ b/package/x11r7/xlib_libXpm/xlib_libXpm.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# xlib_libXpm +# +################################################################################ + +XLIB_LIBXPM_VERSION = 3.5.17 +XLIB_LIBXPM_SOURCE = libXpm-$(XLIB_LIBXPM_VERSION).tar.xz +XLIB_LIBXPM_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBXPM_LICENSE = MIT +XLIB_LIBXPM_LICENSE_FILES = COPYING COPYRIGHT +XLIB_LIBXPM_CPE_ID_VENDOR = x.org +XLIB_LIBXPM_CPE_ID_PRODUCT = libxpm +XLIB_LIBXPM_INSTALL_STAGING = YES +XLIB_LIBXPM_DEPENDENCIES = xlib_libX11 xlib_libXext xlib_libXt xorgproto \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) \ + $(TARGET_NLS_DEPENDENCIES) +XLIB_LIBXPM_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) +XLIB_LIBXPM_CONF_OPTS = --disable-open-zfile + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),) +XLIB_LIBXPM_CONF_ENV += ac_cv_search_gettext=no +endif + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_libXpresent/Config.in b/package/x11r7/xlib_libXpresent/Config.in new file mode 100644 index 00000000..f6e2d93f --- /dev/null +++ b/package/x11r7/xlib_libXpresent/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XLIB_LIBXPRESENT + bool "libXpresent" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXFIXES + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_XORGPROTO + help + X.Org Xpresent library diff --git a/package/x11r7/xlib_libXpresent/xlib_libXpresent.hash b/package/x11r7/xlib_libXpresent/xlib_libXpresent.hash new file mode 100644 index 00000000..e7f6ac9e --- /dev/null +++ b/package/x11r7/xlib_libXpresent/xlib_libXpresent.hash @@ -0,0 +1,6 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003225.html +sha256 b964df9e5a066daa5e08d2dc82692c57ca27d00b8cc257e8e960c9f1cf26231b libXpresent-1.0.1.tar.xz +sha512 a4551f49a68f4487eb70dc5b50b7f745fbc8b6842cfa60422afe3834af41c504a37bcfddb4e7e9ee084b250df256034290776c8eb7d8838e392eb626fff55d25 libXpresent-1.0.1.tar.xz + +# Locally calculated +sha256 d64e671ffeb483d4543f98c842788ab34c77427e27d83d6b082065a4438d4885 COPYING diff --git a/package/x11r7/xlib_libXpresent/xlib_libXpresent.mk b/package/x11r7/xlib_libXpresent/xlib_libXpresent.mk new file mode 100644 index 00000000..4cb4fd19 --- /dev/null +++ b/package/x11r7/xlib_libXpresent/xlib_libXpresent.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# xlib_libXpresent +# +################################################################################ + +XLIB_LIBXPRESENT_VERSION = 1.0.1 +XLIB_LIBXPRESENT_SOURCE = libXpresent-$(XLIB_LIBXPRESENT_VERSION).tar.xz +XLIB_LIBXPRESENT_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXPRESENT_LICENSE = MIT +XLIB_LIBXPRESENT_LICENSE_FILES = COPYING +XLIB_LIBXPRESENT_INSTALL_STAGING = YES + +XLIB_LIBXPRESENT_DEPENDENCIES = \ + xlib_libX11 \ + xlib_libXext \ + xlib_libXfixes \ + xlib_libXrandr \ + xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_libXrandr/Config.in b/package/x11r7/xlib_libXrandr/Config.in new file mode 100644 index 00000000..e019ca5e --- /dev/null +++ b/package/x11r7/xlib_libXrandr/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XLIB_LIBXRANDR + bool "libXrandr" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XORGPROTO + help + X.Org Xrandr library diff --git a/package/x11r7/xlib_libXrandr/xlib_libXrandr.hash b/package/x11r7/xlib_libXrandr/xlib_libXrandr.hash new file mode 100644 index 00000000..3d3bb640 --- /dev/null +++ b/package/x11r7/xlib_libXrandr/xlib_libXrandr.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-November/003262.html +sha256 897639014a78e1497704d669c5dd5682d721931a4452c89a7ba62676064eb428 libXrandr-1.5.3.tar.xz +sha512 0c385fc304a872048ffca5cfb8789dfe3132e3126894d54b2fe642dff19d286e7ade1d2f6da894e03788df9c5cf31427c674e987143037b7d385b19285590edb libXrandr-1.5.3.tar.xz +# Locally computed +sha256 73777e5be1cef2827d843e4b186803f050c66db472cf8076d88e2b5f71696e67 COPYING diff --git a/package/x11r7/xlib_libXrandr/xlib_libXrandr.mk b/package/x11r7/xlib_libXrandr/xlib_libXrandr.mk new file mode 100644 index 00000000..5e88173e --- /dev/null +++ b/package/x11r7/xlib_libXrandr/xlib_libXrandr.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# xlib_libXrandr +# +################################################################################ + +XLIB_LIBXRANDR_VERSION = 1.5.3 +XLIB_LIBXRANDR_SOURCE = libXrandr-$(XLIB_LIBXRANDR_VERSION).tar.xz +XLIB_LIBXRANDR_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBXRANDR_LICENSE = MIT +XLIB_LIBXRANDR_LICENSE_FILES = COPYING +XLIB_LIBXRANDR_CPE_ID_VENDOR = x.org +XLIB_LIBXRANDR_CPE_ID_PRODUCT = libxrandr +XLIB_LIBXRANDR_INSTALL_STAGING = YES +XLIB_LIBXRANDR_DEPENDENCIES = xlib_libX11 xlib_libXext xlib_libXrender xorgproto +XLIB_LIBXRANDR_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_libXrender/Config.in b/package/x11r7/xlib_libXrender/Config.in new file mode 100644 index 00000000..4487ef1f --- /dev/null +++ b/package/x11r7/xlib_libXrender/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XLIB_LIBXRENDER + bool "libXrender" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XORGPROTO + help + X.Org Xrender library diff --git a/package/x11r7/xlib_libXrender/xlib_libXrender.hash b/package/x11r7/xlib_libXrender/xlib_libXrender.hash new file mode 100644 index 00000000..015fa0af --- /dev/null +++ b/package/x11r7/xlib_libXrender/xlib_libXrender.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-October/003239.html +sha256 bc53759a3a83d1ff702fb59641b3d2f7c56e05051fa0cfa93501166fa782dc24 libXrender-0.9.11.tar.xz +sha512 2327cc1b530382d81df29b8d579f801f1f990202107cc84506986bcf5d15010d414e9418987b200e3f222d188afce46f0d7754febcdca62a5fc1e541b3bb82de libXrender-0.9.11.tar.xz +# Locally calculated +sha256 bbe1db89c48816c48248796adac91defd8fbde1141b145f01511781ab87f29a1 COPYING diff --git a/package/x11r7/xlib_libXrender/xlib_libXrender.mk b/package/x11r7/xlib_libXrender/xlib_libXrender.mk new file mode 100644 index 00000000..fd97c83c --- /dev/null +++ b/package/x11r7/xlib_libXrender/xlib_libXrender.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xlib_libXrender +# +################################################################################ + +XLIB_LIBXRENDER_VERSION = 0.9.11 +XLIB_LIBXRENDER_SOURCE = libXrender-$(XLIB_LIBXRENDER_VERSION).tar.xz +XLIB_LIBXRENDER_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBXRENDER_LICENSE = MIT +XLIB_LIBXRENDER_LICENSE_FILES = COPYING +XLIB_LIBXRENDER_CPE_ID_VENDOR = x.org +XLIB_LIBXRENDER_CPE_ID_PRODUCT = libxrender +XLIB_LIBXRENDER_INSTALL_STAGING = YES +XLIB_LIBXRENDER_DEPENDENCIES = xlib_libX11 xorgproto +HOST_XLIB_LIBXRENDER_DEPENDENCIES = \ + host-xlib_libX11 host-xorgproto + +XLIB_LIBXRENDER_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/x11r7/xlib_libXres/Config.in b/package/x11r7/xlib_libXres/Config.in new file mode 100644 index 00000000..4e135ed3 --- /dev/null +++ b/package/x11r7/xlib_libXres/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XLIB_LIBXRES + bool "libXres" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XORGPROTO + help + X.Org XRes library diff --git a/package/x11r7/xlib_libXres/xlib_libXres.hash b/package/x11r7/xlib_libXres/xlib_libXres.hash new file mode 100644 index 00000000..2e6d3d5c --- /dev/null +++ b/package/x11r7/xlib_libXres/xlib_libXres.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003278.html +sha256 9a7446f3484b9b7538ac5ee30d2c1ce9e5b7fbbaf1440e02f6cca186a1fa745f libXres-1.2.2.tar.xz +sha512 897f2d426ea6f41169a5a52c356d1a1cb2ffb9144ae41b9fedd06455c3d81042930fe55be269ce4b8545ee65fcfe168101192a599053d810e8810f627c94f810 libXres-1.2.2.tar.xz +# Locally calculated +sha256 0d7300168f85833ea2564835f66a61e036ede90b33e76c06a7b4078096fedbcc COPYING diff --git a/package/x11r7/xlib_libXres/xlib_libXres.mk b/package/x11r7/xlib_libXres/xlib_libXres.mk new file mode 100644 index 00000000..25498090 --- /dev/null +++ b/package/x11r7/xlib_libXres/xlib_libXres.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# xlib_libXres +# +################################################################################ + +XLIB_LIBXRES_VERSION = 1.2.2 +XLIB_LIBXRES_SOURCE = libXres-$(XLIB_LIBXRES_VERSION).tar.xz +XLIB_LIBXRES_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBXRES_LICENSE = MIT +XLIB_LIBXRES_LICENSE_FILES = COPYING +XLIB_LIBXRES_CPE_ID_VENDOR = x +XLIB_LIBXRES_CPE_ID_PRODUCT = libxres +XLIB_LIBXRES_INSTALL_STAGING = YES +XLIB_LIBXRES_DEPENDENCIES = xlib_libX11 xlib_libXext xorgproto +XLIB_LIBXRES_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_libXt/Config.in b/package/x11r7/xlib_libXt/Config.in new file mode 100644 index 00000000..0f557808 --- /dev/null +++ b/package/x11r7/xlib_libXt/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XLIB_LIBXT + bool "libXt" + select BR2_PACKAGE_XLIB_LIBSM + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XORGPROTO + select BR2_PACKAGE_XCB_PROTO + select BR2_PACKAGE_LIBXCB + help + X.Org Xt library diff --git a/package/x11r7/xlib_libXt/xlib_libXt.hash b/package/x11r7/xlib_libXt/xlib_libXt.hash new file mode 100644 index 00000000..577896d3 --- /dev/null +++ b/package/x11r7/xlib_libXt/xlib_libXt.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-April/003383.html +sha256 52820b3cdb827d08dc90bdfd1b0022a3ad8919b57a39808b12591973b331bf91 libXt-1.3.0.tar.xz +sha512 64c5978655135b925c3aaad86b1aa6a3f3b57ad8b3592bf142be616b8aa339a02c2fc7badfab9564ea8076ea8f37acfe31709ed528f5a1d251f2d116aa074118 libXt-1.3.0.tar.xz +# Locally calculated +sha256 75c5574ca04731d739b1420f55f2b7b47f30df895817f1b03d0d7f5c1fbee534 COPYING diff --git a/package/x11r7/xlib_libXt/xlib_libXt.mk b/package/x11r7/xlib_libXt/xlib_libXt.mk new file mode 100644 index 00000000..cca89145 --- /dev/null +++ b/package/x11r7/xlib_libXt/xlib_libXt.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# xlib_libXt +# +################################################################################ + +XLIB_LIBXT_VERSION = 1.3.0 +XLIB_LIBXT_SOURCE = libXt-$(XLIB_LIBXT_VERSION).tar.xz +XLIB_LIBXT_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBXT_LICENSE = MIT +XLIB_LIBXT_LICENSE_FILES = COPYING +XLIB_LIBXT_INSTALL_STAGING = YES +XLIB_LIBXT_CPE_ID_VENDOR = x +XLIB_LIBXT_CPE_ID_PRODUCT = libxt +XLIB_LIBXT_DEPENDENCIES = xlib_libSM xlib_libX11 xorgproto xcb-proto libxcb host-xorgproto +XLIB_LIBXT_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_libXtst/Config.in b/package/x11r7/xlib_libXtst/Config.in new file mode 100644 index 00000000..2c7db224 --- /dev/null +++ b/package/x11r7/xlib_libXtst/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XLIB_LIBXTST + bool "libXtst" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXI + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XORGPROTO + help + X.Org Xtst library diff --git a/package/x11r7/xlib_libXtst/xlib_libXtst.hash b/package/x11r7/xlib_libXtst/xlib_libXtst.hash new file mode 100644 index 00000000..7bdcdb9c --- /dev/null +++ b/package/x11r7/xlib_libXtst/xlib_libXtst.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-September/003214.html +sha256 84f5f30b9254b4ffee14b5b0940e2622153b0d3aed8286a3c5b7eeb340ca33c8 libXtst-1.2.4.tar.xz +sha512 f2f4e01239b892b8e26284cede90feb4fe7738beb243bca0f6adb349029f8bf87b5a482911edcd2401733c92ef78eec07fcd455b92e5b8c4828374769e60098d libXtst-1.2.4.tar.xz +# Locally computed +sha256 940190489c7a0e5ae3d83fc4fcbd79e0cd1b765bf1a4efd408293c1ee0332ceb COPYING diff --git a/package/x11r7/xlib_libXtst/xlib_libXtst.mk b/package/x11r7/xlib_libXtst/xlib_libXtst.mk new file mode 100644 index 00000000..47103377 --- /dev/null +++ b/package/x11r7/xlib_libXtst/xlib_libXtst.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xlib_libXtst +# +################################################################################ + +XLIB_LIBXTST_VERSION = 1.2.4 +XLIB_LIBXTST_SOURCE = libXtst-$(XLIB_LIBXTST_VERSION).tar.xz +XLIB_LIBXTST_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBXTST_LICENSE = MIT +XLIB_LIBXTST_LICENSE_FILES = COPYING +XLIB_LIBXTST_INSTALL_STAGING = YES +XLIB_LIBXTST_CPE_ID_VENDOR = x +XLIB_LIBXTST_CPE_ID_PRODUCT = libxtst + +XLIB_LIBXTST_DEPENDENCIES = \ + xlib_libX11 \ + xlib_libXext \ + xlib_libXi \ + xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_libXv/Config.in b/package/x11r7/xlib_libXv/Config.in new file mode 100644 index 00000000..d3e57445 --- /dev/null +++ b/package/x11r7/xlib_libXv/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XLIB_LIBXV + bool "libXv" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XORGPROTO + help + X.Org Xv library diff --git a/package/x11r7/xlib_libXv/xlib_libXv.hash b/package/x11r7/xlib_libXv/xlib_libXv.hash new file mode 100644 index 00000000..0852f27f --- /dev/null +++ b/package/x11r7/xlib_libXv/xlib_libXv.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003280.html +sha256 aaf7fa09f689f7a2000fe493c0d64d1487a1210db154053e9e2336b860c63848 libXv-1.0.12.tar.xz +sha512 bdd00de1ce6a8911056181ab4de32f9e319a68567389162d4bc2e3c9946d5f3c60f87eb6c53f74c9b6a342255e591d5fef4a445a4ac8ca3c1b6fe87d42c51c1e libXv-1.0.12.tar.xz +# Locally calculated +sha256 4fac4d581d00f11c459d68b7cb970f3d4e5a5bbfb53784d85f59a90076280301 COPYING diff --git a/package/x11r7/xlib_libXv/xlib_libXv.mk b/package/x11r7/xlib_libXv/xlib_libXv.mk new file mode 100644 index 00000000..808b1e6e --- /dev/null +++ b/package/x11r7/xlib_libXv/xlib_libXv.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# xlib_libXv +# +################################################################################ + +XLIB_LIBXV_VERSION = 1.0.12 +XLIB_LIBXV_SOURCE = libXv-$(XLIB_LIBXV_VERSION).tar.xz +XLIB_LIBXV_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXV_LICENSE = ISC-like +XLIB_LIBXV_LICENSE_FILES = COPYING +XLIB_LIBXV_CPE_ID_VENDOR = x.org +XLIB_LIBXV_CPE_ID_PRODUCT = libxv +XLIB_LIBXV_INSTALL_STAGING = YES +XLIB_LIBXV_DEPENDENCIES = xlib_libX11 xlib_libXext xorgproto +XLIB_LIBXV_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_libXvMC/Config.in b/package/x11r7/xlib_libXvMC/Config.in new file mode 100644 index 00000000..5cc6ec76 --- /dev/null +++ b/package/x11r7/xlib_libXvMC/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XLIB_LIBXVMC + bool "libXvMC" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXV + select BR2_PACKAGE_XORGPROTO + help + X.Org XvMC library diff --git a/package/x11r7/xlib_libXvMC/xlib_libXvMC.hash b/package/x11r7/xlib_libXvMC/xlib_libXvMC.hash new file mode 100644 index 00000000..15221969 --- /dev/null +++ b/package/x11r7/xlib_libXvMC/xlib_libXvMC.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-March/003132.html +sha256 0a9ebe6dea7888a747e5aca1b891d53cd7d3a5f141a9645f77d9b6a12cee657c libXvMC-1.0.13.tar.xz +sha512 c9d0f73884a586efb9ea4f77fc8555f60d940077d7dff8eaa765b86345c8b4e3d80b860f68191d2830c272b9e464c08450fbb51bb64819753a6f4228c71861ac libXvMC-1.0.13.tar.xz +# Locally computed +sha256 b7c709df281675a07eb60a71c5fa2599d1ef538eb79ae7ad6e774b10e4a804c4 COPYING diff --git a/package/x11r7/xlib_libXvMC/xlib_libXvMC.mk b/package/x11r7/xlib_libXvMC/xlib_libXvMC.mk new file mode 100644 index 00000000..c1fe3127 --- /dev/null +++ b/package/x11r7/xlib_libXvMC/xlib_libXvMC.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# xlib_libXvMC +# +################################################################################ + +XLIB_LIBXVMC_VERSION = 1.0.13 +XLIB_LIBXVMC_SOURCE = libXvMC-$(XLIB_LIBXVMC_VERSION).tar.xz +XLIB_LIBXVMC_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXVMC_LICENSE = MIT +XLIB_LIBXVMC_LICENSE_FILES = COPYING +XLIB_LIBXVMC_CPE_ID_VENDOR = x.org +XLIB_LIBXVMC_CPE_ID_PRODUCT = libxvmc +XLIB_LIBXVMC_INSTALL_STAGING = YES +XLIB_LIBXVMC_DEPENDENCIES = xlib_libX11 xlib_libXext xlib_libXv xorgproto +XLIB_LIBXVMC_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_libXxf86dga/Config.in b/package/x11r7/xlib_libXxf86dga/Config.in new file mode 100644 index 00000000..918ea0f1 --- /dev/null +++ b/package/x11r7/xlib_libXxf86dga/Config.in @@ -0,0 +1,8 @@ +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_XORGPROTO + help + X.Org Xxf86dga library diff --git a/package/x11r7/xlib_libXxf86dga/xlib_libXxf86dga.hash b/package/x11r7/xlib_libXxf86dga/xlib_libXxf86dga.hash new file mode 100644 index 00000000..9057d4e8 --- /dev/null +++ b/package/x11r7/xlib_libXxf86dga/xlib_libXxf86dga.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003281.html +sha256 be44427579808fe3a217d59f51cae756a26913eb6e4c8738ccab65ff56d7980f libXxf86dga-1.1.6.tar.xz +sha512 61f7954471df63840ffb5e82347018e285d30d64d4d0a97770ca031c8554a0f52d1b007ab8342a283cd2f0d534f564fb59f57ec92515714f20a7d145912c65d9 libXxf86dga-1.1.6.tar.xz +# Locally computed +sha256 dd27933ebc5c063128b158b085e4c442a36b0e6f704cf753116da119610191da COPYING diff --git a/package/x11r7/xlib_libXxf86dga/xlib_libXxf86dga.mk b/package/x11r7/xlib_libXxf86dga/xlib_libXxf86dga.mk new file mode 100644 index 00000000..1094e1a1 --- /dev/null +++ b/package/x11r7/xlib_libXxf86dga/xlib_libXxf86dga.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# xlib_libXxf86dga +# +################################################################################ + +XLIB_LIBXXF86DGA_VERSION = 1.1.6 +XLIB_LIBXXF86DGA_SOURCE = libXxf86dga-$(XLIB_LIBXXF86DGA_VERSION).tar.xz +XLIB_LIBXXF86DGA_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXXF86DGA_LICENSE = MIT +XLIB_LIBXXF86DGA_LICENSE_FILES = COPYING +XLIB_LIBXXF86DGA_CPE_ID_VENDOR = x +XLIB_LIBXXF86DGA_CPE_ID_PRODUCT = libxxf86dga +XLIB_LIBXXF86DGA_INSTALL_STAGING = YES +XLIB_LIBXXF86DGA_DEPENDENCIES = xlib_libX11 xlib_libXext xorgproto +XLIB_LIBXXF86DGA_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_libXxf86vm/Config.in b/package/x11r7/xlib_libXxf86vm/Config.in new file mode 100644 index 00000000..c3b11f42 --- /dev/null +++ b/package/x11r7/xlib_libXxf86vm/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XLIB_LIBXXF86VM + bool "libXxf86vm" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XORGPROTO + help + X.Org Xxf86vm library diff --git a/package/x11r7/xlib_libXxf86vm/xlib_libXxf86vm.hash b/package/x11r7/xlib_libXxf86vm/xlib_libXxf86vm.hash new file mode 100644 index 00000000..d181310c --- /dev/null +++ b/package/x11r7/xlib_libXxf86vm/xlib_libXxf86vm.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-September/003213.html +sha256 247fef48b3e0e7e67129e41f1e789e8d006ba47dba1c0cdce684b9b703f888e7 libXxf86vm-1.1.5.tar.xz +sha512 68226fcb9773a583ea417ab413146203dd7db6ff8a4d388285da972353355e11e179861a77c9fa284aefac025bb3bbf5a9537fa0bf246c782e0116a667c9d9b6 libXxf86vm-1.1.5.tar.xz +# Locally calculated +sha256 f3da8eaed19e27e4f67e6f076d4ebdb8d649e15a8ad33a415fb65a23de1b6689 COPYING diff --git a/package/x11r7/xlib_libXxf86vm/xlib_libXxf86vm.mk b/package/x11r7/xlib_libXxf86vm/xlib_libXxf86vm.mk new file mode 100644 index 00000000..0f3decb0 --- /dev/null +++ b/package/x11r7/xlib_libXxf86vm/xlib_libXxf86vm.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# xlib_libXxf86vm +# +################################################################################ + +XLIB_LIBXXF86VM_VERSION = 1.1.5 +XLIB_LIBXXF86VM_SOURCE = libXxf86vm-$(XLIB_LIBXXF86VM_VERSION).tar.xz +XLIB_LIBXXF86VM_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBXXF86VM_LICENSE = MIT +XLIB_LIBXXF86VM_LICENSE_FILES = COPYING +XLIB_LIBXXF86VM_CPE_ID_VENDOR = x +XLIB_LIBXXF86VM_CPE_ID_PRODUCT = libxxf86vm +XLIB_LIBXXF86VM_INSTALL_STAGING = YES +XLIB_LIBXXF86VM_DEPENDENCIES = xlib_libX11 xlib_libXext xorgproto +XLIB_LIBXXF86VM_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_libdmx/Config.in b/package/x11r7/xlib_libdmx/Config.in new file mode 100644 index 00000000..99cddb63 --- /dev/null +++ b/package/x11r7/xlib_libdmx/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XLIB_LIBDMX + bool "libdmx" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XORGPROTO + help + X.Org dmx library diff --git a/package/x11r7/xlib_libdmx/xlib_libdmx.hash b/package/x11r7/xlib_libdmx/xlib_libdmx.hash new file mode 100644 index 00000000..8a4b1309 --- /dev/null +++ b/package/x11r7/xlib_libdmx/xlib_libdmx.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-June/003403.html +sha256 35a4e26a8b0b2b4fe36441dca463645c3fa52d282ac3520501a38ea942cbf74f libdmx-1.1.5.tar.xz +sha512 55df45a06bddbf19e0253362853e2f979d736ba1f1fdec5d392c0f6c0dc72684e7b8df0f0a99ac96ce9d9d59bc6c25146086b18c054b4dbe6be9aa3166f23464 libdmx-1.1.5.tar.xz +# Locally computed +sha256 819e8dcd3dd2a44850c350331aa492230f86bccb0983dd739dec5ba36d7d2b8e COPYING diff --git a/package/x11r7/xlib_libdmx/xlib_libdmx.mk b/package/x11r7/xlib_libdmx/xlib_libdmx.mk new file mode 100644 index 00000000..9aaf81eb --- /dev/null +++ b/package/x11r7/xlib_libdmx/xlib_libdmx.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# xlib_libdmx +# +################################################################################ + +XLIB_LIBDMX_VERSION = 1.1.5 +XLIB_LIBDMX_SOURCE = libdmx-$(XLIB_LIBDMX_VERSION).tar.xz +XLIB_LIBDMX_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBDMX_LICENSE = MIT +XLIB_LIBDMX_LICENSE_FILES = COPYING +XLIB_LIBDMX_CPE_ID_VENDOR = x +XLIB_LIBDMX_CPE_ID_PRODUCT = libdmx +XLIB_LIBDMX_INSTALL_STAGING = YES +XLIB_LIBDMX_DEPENDENCIES = xlib_libX11 xlib_libXext xorgproto +XLIB_LIBDMX_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_libfontenc/Config.in b/package/x11r7/xlib_libfontenc/Config.in new file mode 100644 index 00000000..38cb8333 --- /dev/null +++ b/package/x11r7/xlib_libfontenc/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XLIB_LIBFONTENC + bool "libfontenc" + select BR2_PACKAGE_XORGPROTO + select BR2_PACKAGE_ZLIB + help + X.Org fontenc library diff --git a/package/x11r7/xlib_libfontenc/xlib_libfontenc.hash b/package/x11r7/xlib_libfontenc/xlib_libfontenc.hash new file mode 100644 index 00000000..a061ca4a --- /dev/null +++ b/package/x11r7/xlib_libfontenc/xlib_libfontenc.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003285.html +sha256 c0d36991faee06551ddbaf5d99266e97becdc05edfae87a833c3ff7bf73cfec2 libfontenc-1.1.7.tar.xz +sha512 fd8578a81090fa938dd75ad9081ab62c6c54fa2535d1c6291afd799ac8dc7c344a43f07cea5cd4433af16df0d926c22e7c169877bc8b13d92584e7dec173d701 libfontenc-1.1.7.tar.xz +# Locally computed +sha256 a4dda7a643b517794bfa23dc9605da030055df38ac8a5b9e1905e690975a59c4 COPYING diff --git a/package/x11r7/xlib_libfontenc/xlib_libfontenc.mk b/package/x11r7/xlib_libfontenc/xlib_libfontenc.mk new file mode 100644 index 00000000..e12086b1 --- /dev/null +++ b/package/x11r7/xlib_libfontenc/xlib_libfontenc.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xlib_libfontenc +# +################################################################################ + +XLIB_LIBFONTENC_VERSION = 1.1.7 +XLIB_LIBFONTENC_SOURCE = libfontenc-$(XLIB_LIBFONTENC_VERSION).tar.xz +XLIB_LIBFONTENC_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBFONTENC_LICENSE = MIT +XLIB_LIBFONTENC_LICENSE_FILES = COPYING +XLIB_LIBFONTENC_INSTALL_STAGING = YES +XLIB_LIBFONTENC_DEPENDENCIES = zlib xorgproto host-pkgconf +HOST_XLIB_LIBFONTENC_DEPENDENCIES = host-zlib host-xorgproto host-pkgconf + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/x11r7/xlib_libxcvt/Config.in b/package/x11r7/xlib_libxcvt/Config.in new file mode 100644 index 00000000..4e51648d --- /dev/null +++ b/package/x11r7/xlib_libxcvt/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XLIB_LIBXCVT + bool "libxcvt" + help + libxcvt is a library providing a standalone version of the X + server implementation of the VESA CVT standard timing mode- + lines generator. + + https://gitlab.freedesktop.org/xorg/lib/libxcvt diff --git a/package/x11r7/xlib_libxcvt/xlib_libxcvt.hash b/package/x11r7/xlib_libxcvt/xlib_libxcvt.hash new file mode 100644 index 00000000..f635c90f --- /dev/null +++ b/package/x11r7/xlib_libxcvt/xlib_libxcvt.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-July/003195.html +sha256 0561690544796e25cfbd71806ba1b0d797ffe464e9796411123e79450f71db38 libxcvt-0.1.2.tar.xz +sha512 3f6b2baca712a4608780686932f8881255c07bb74b1a788f9b07d4e22975c038d75111cd6b452257882a0b2bad57eebb2002f80a3e435d2e2d16936597f039b0 libxcvt-0.1.2.tar.xz +# Locally calculated +sha256 4849851554bdeda9a2a85ce93946b786605e009685941b8b907a9a36b02ae068 COPYING diff --git a/package/x11r7/xlib_libxcvt/xlib_libxcvt.mk b/package/x11r7/xlib_libxcvt/xlib_libxcvt.mk new file mode 100644 index 00000000..7f61054d --- /dev/null +++ b/package/x11r7/xlib_libxcvt/xlib_libxcvt.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xlib_libxcvt +# +################################################################################ + +XLIB_LIBXCVT_VERSION = 0.1.2 +XLIB_LIBXCVT_SOURCE = libxcvt-$(XLIB_LIBXCVT_VERSION).tar.xz +XLIB_LIBXCVT_SITE = https://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXCVT_LICENSE = MIT +XLIB_LIBXCVT_LICENSE_FILES = COPYING +XLIB_LIBXCVT_INSTALL_STAGING = YES + +$(eval $(meson-package)) diff --git a/package/x11r7/xlib_libxkbfile/Config.in b/package/x11r7/xlib_libxkbfile/Config.in new file mode 100644 index 00000000..0d7e4660 --- /dev/null +++ b/package/x11r7/xlib_libxkbfile/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XLIB_LIBXKBFILE + bool "libxkbfile" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XORGPROTO + help + X.Org xkbfile library diff --git a/package/x11r7/xlib_libxkbfile/xlib_libxkbfile.hash b/package/x11r7/xlib_libxkbfile/xlib_libxkbfile.hash new file mode 100644 index 00000000..7e6199f1 --- /dev/null +++ b/package/x11r7/xlib_libxkbfile/xlib_libxkbfile.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003286.html +sha256 b8a3784fac420b201718047cfb6c2d5ee7e8b9481564c2667b4215f6616644b1 libxkbfile-1.1.2.tar.xz +sha512 0639fad7b64b36a85f8d24cdd40085e0ec18d7a671793b8b5c26449e9cc5a84c37117e7757fb1238ac353044935dd00013e42166de5af9dec428e873a47e598d libxkbfile-1.1.2.tar.xz +# Locally computed +sha256 e1b3fdad8037ab3f986ef9caaa7c8da47d8d55875e680c7d6011f6c07363ea7c COPYING diff --git a/package/x11r7/xlib_libxkbfile/xlib_libxkbfile.mk b/package/x11r7/xlib_libxkbfile/xlib_libxkbfile.mk new file mode 100644 index 00000000..2e7f8292 --- /dev/null +++ b/package/x11r7/xlib_libxkbfile/xlib_libxkbfile.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xlib_libxkbfile +# +################################################################################ + +XLIB_LIBXKBFILE_VERSION = 1.1.2 +XLIB_LIBXKBFILE_SOURCE = libxkbfile-$(XLIB_LIBXKBFILE_VERSION).tar.xz +XLIB_LIBXKBFILE_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXKBFILE_LICENSE = MIT +XLIB_LIBXKBFILE_LICENSE_FILES = COPYING +XLIB_LIBXKBFILE_INSTALL_STAGING = YES +XLIB_LIBXKBFILE_DEPENDENCIES = xlib_libX11 xorgproto +HOST_XLIB_LIBXKBFILE_DEPENDENCIES = host-xlib_libX11 host-xorgproto + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/x11r7/xlib_libxshmfence/0001-src-xshmfence_futex.h-fix-build-on-32-bit-architectu.patch b/package/x11r7/xlib_libxshmfence/0001-src-xshmfence_futex.h-fix-build-on-32-bit-architectu.patch new file mode 100644 index 00000000..40a796c4 --- /dev/null +++ b/package/x11r7/xlib_libxshmfence/0001-src-xshmfence_futex.h-fix-build-on-32-bit-architectu.patch @@ -0,0 +1,46 @@ +From 4fca45a71f08a5bebd12d39c85f49e0b0e4426bf Mon Sep 17 00:00:00 2001 +From: Thomas Devoogdt +Date: Fri, 5 Apr 2024 10:45:15 +0200 +Subject: [PATCH] src/xshmfence_futex.h: fix build on 32-bit architectures + using 64-bit time_t + +Fix the following build failure on 32-bit architectures using 64-bit +time_t (e.g. riscv32): + +xshmfence_futex.h: In function 'sys_futex': +xshmfence_futex.h:58:24: error: 'SYS_futex' undeclared (first use in this function); did you mean 'sys_futex'? + 58 | return syscall(SYS_futex, addr1, op, val1, timeout, addr2, val3); + | ^~~~~~~~~ + | sys_futex + +Similar to: +https://gitlab.freedesktop.org/mesa/mesa/-/commit/7d87478124061915582412ba410759afe863d679 + +Fixes: +https://gitlab.com/buildroot.org/buildroot/-/commit/e39ad96136a8c340b3aea6b036024e28f14584f3 + +Signed-off-by: Thomas Devoogdt +Part-of: +Upstream: https://gitlab.freedesktop.org/xorg/lib/libxshmfence/-/commit/4fca45a71f08a5bebd12d39c85f49e0b0e4426bf +--- + src/xshmfence_futex.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/xshmfence_futex.h b/src/xshmfence_futex.h +index 673ac0e..4476038 100644 +--- a/src/xshmfence_futex.h ++++ b/src/xshmfence_futex.h +@@ -53,6 +53,10 @@ static inline int futex_wait(int32_t *addr, int32_t value) { + #include + #include + ++#if defined(SYS_futex_time64) && !defined(SYS_futex) ++#define SYS_futex SYS_futex_time64 ++#endif ++ + static inline long sys_futex(void *addr1, int op, int val1, struct timespec *timeout, void *addr2, int val3) + { + return syscall(SYS_futex, addr1, op, val1, timeout, addr2, val3); +-- +2.34.1 + diff --git a/package/x11r7/xlib_libxshmfence/Config.in b/package/x11r7/xlib_libxshmfence/Config.in new file mode 100644 index 00000000..710476b3 --- /dev/null +++ b/package/x11r7/xlib_libxshmfence/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XLIB_LIBXSHMFENCE + bool "libxshmfence" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_XORGPROTO + help + X.Org shmfence library diff --git a/package/x11r7/xlib_libxshmfence/xlib_libxshmfence.hash b/package/x11r7/xlib_libxshmfence/xlib_libxshmfence.hash new file mode 100644 index 00000000..e8f83d42 --- /dev/null +++ b/package/x11r7/xlib_libxshmfence/xlib_libxshmfence.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003287.html +sha256 870df257bc40b126d91b5a8f1da6ca8a524555268c50b59c0acd1a27f361606f libxshmfence-1.3.2.tar.xz +sha512 e20a6827e370726cf50489a69f4a52b897f1c44e3eba8c72a4e626b08724e877d090770b8016765736d887d5d5eaba1fda9c29066e62d259b4d1e2064bc1626c libxshmfence-1.3.2.tar.xz +# Locally computed +sha256 64a579d1a0b3347301d87c94698a58ea7933d0ae6ca7e8fdd702fde2ea376301 COPYING diff --git a/package/x11r7/xlib_libxshmfence/xlib_libxshmfence.mk b/package/x11r7/xlib_libxshmfence/xlib_libxshmfence.mk new file mode 100644 index 00000000..42411028 --- /dev/null +++ b/package/x11r7/xlib_libxshmfence/xlib_libxshmfence.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xlib_libxshmfence +# +################################################################################ + +XLIB_LIBXSHMFENCE_VERSION = 1.3.2 +XLIB_LIBXSHMFENCE_SOURCE = libxshmfence-$(XLIB_LIBXSHMFENCE_VERSION).tar.xz +XLIB_LIBXSHMFENCE_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXSHMFENCE_LICENSE = MIT +XLIB_LIBXSHMFENCE_LICENSE_FILES = COPYING +XLIB_LIBXSHMFENCE_INSTALL_STAGING = YES +XLIB_LIBXSHMFENCE_DEPENDENCIES = host-pkgconf xorgproto + +$(eval $(autotools-package)) diff --git a/package/x11r7/xlib_xtrans/Config.in b/package/x11r7/xlib_xtrans/Config.in new file mode 100644 index 00000000..7c8bae79 --- /dev/null +++ b/package/x11r7/xlib_xtrans/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XLIB_XTRANS + bool "xtrans" + help + X.Org xtrans library diff --git a/package/x11r7/xlib_xtrans/xlib_xtrans.hash b/package/x11r7/xlib_xtrans/xlib_xtrans.hash new file mode 100644 index 00000000..9595a73d --- /dev/null +++ b/package/x11r7/xlib_xtrans/xlib_xtrans.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-June/003399.html +sha256 1ba4b703696bfddbf40bacf25bce4e3efb2a0088878f017a50e9884b0c8fb1bd xtrans-1.5.0.tar.xz +sha512 e8091f11d4ad2b14e01de3eac56bdf2267ea26687ce66e3056374d0d02e049480c0b27c482f8828a0efd086f1e4c485108ca4dce3f83d66c1896effa3b38b228 xtrans-1.5.0.tar.xz +# Locally computed +sha256 22616bf00b6db85ee3164775a95206894af987b85ff1a7703de55644bc722a39 COPYING diff --git a/package/x11r7/xlib_xtrans/xlib_xtrans.mk b/package/x11r7/xlib_xtrans/xlib_xtrans.mk new file mode 100644 index 00000000..001705bb --- /dev/null +++ b/package/x11r7/xlib_xtrans/xlib_xtrans.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xlib_xtrans +# +################################################################################ + +XLIB_XTRANS_VERSION = 1.5.0 +XLIB_XTRANS_SOURCE = xtrans-$(XLIB_XTRANS_VERSION).tar.xz +XLIB_XTRANS_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_XTRANS_LICENSE = MIT +XLIB_XTRANS_LICENSE_FILES = COPYING +XLIB_XTRANS_INSTALL_STAGING = YES +XLIB_XTRANS_INSTALL_TARGET = NO + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/x11r7/xorgproto/Config.in b/package/x11r7/xorgproto/Config.in new file mode 100644 index 00000000..af38eb43 --- /dev/null +++ b/package/x11r7/xorgproto/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XORGPROTO + bool "xorgproto" + help + This package combines the protocol headers, which were + formerly scattered in individual packages. diff --git a/package/x11r7/xorgproto/xorgproto.hash b/package/x11r7/xorgproto/xorgproto.hash new file mode 100644 index 00000000..37ad9c7c --- /dev/null +++ b/package/x11r7/xorgproto/xorgproto.hash @@ -0,0 +1,42 @@ +# From https://lists.x.org/archives/xorg-announce/2023-June/003408.html +sha256 b61fbc7db82b14ce2dc705ab590efc32b9ad800037113d1973811781d5118c2c xorgproto-2023.2.tar.xz +sha512 af0a8c8094fc6a490a886a8c048175762b6334798f2e48b6f6e19a7bb39ddbef05fa1237c4e9d9f1d870d24f5ca7a7c463044c41ceebd108f8ab0816677a582d xorgproto-2023.2.tar.xz + +# Locally computed +sha256 aacd931f191b610902aee1e526090c2858aabc07969441fa2537ffd3e7049555 COPYING-applewmproto +sha256 dabc025f93129a0eb2d17f37c719dbe5ecbcb5bc8f7bc7f4ce89fe04576cc0c2 COPYING-bigreqsproto +sha256 3e980a770506b448897638632974bbcbdf2da3b99191dd0a03d3770097a46738 COPYING-compositeproto +sha256 f67a18cb46c4c203c5122b4a901cfcc3178b2a62f83f31ca5fef5bdca3966094 COPYING-damageproto +sha256 819e8dcd3dd2a44850c350331aa492230f86bccb0983dd739dec5ba36d7d2b8e COPYING-dmxproto +sha256 0c306691492c4d7a8cda1ec3847668b797887dddcd7e986b4c166ae27619af7d COPYING-dri2proto +sha256 64a579d1a0b3347301d87c94698a58ea7933d0ae6ca7e8fdd702fde2ea376301 COPYING-dri3proto +sha256 9936421f7516f7a17ae560b6989636b493e55c01128b543c7e72441568c3cba4 COPYING-evieproto +sha256 fb361c7c4322e4919ae193c5a20055d5190c23aa50480fd0a41f4d439cae2bc6 COPYING-fixesproto +sha256 1ab381e978bff63d68be2e4f235d51935f3f16f3ba3bebf83afa99a70c0484a2 COPYING-fontcacheproto +sha256 f4af05774b02ae149357cc26f7bf5ef1116c2e09373c2492081a3a1892c58417 COPYING-fontsproto +sha256 823deb4673d3f26aa8c90e704888299648f00be3262f9363eaeecedcd65b936d COPYING-glproto +sha256 5e083a2ace0215a6084c877c023a6079952ba803d692488203ba4269196debe3 COPYING-inputproto +sha256 d397a67d4b28e897bc5fce79b2b917df9905b54f961fc3ad1f49c7fe3803f92c COPYING-kbproto +sha256 7a5dd5d4c989c167da50f15879959f42bbda960e06d0a0aea7197f61fe1dc846 COPYING-lg3dproto +sha256 8442b5f22f2fb13017a4302a906e7dedc899267b41f613558970941120170128 COPYING-pmproto +sha256 64a579d1a0b3347301d87c94698a58ea7933d0ae6ca7e8fdd702fde2ea376301 COPYING-presentproto +sha256 46f599055002bbf3e6ce244bde8d9ebe5ec24ae7906836db186773a9791d0b75 COPYING-printproto +sha256 41c13dcd09147ed2440286f2fb8151df8ebee06deee4ed78ddf094601c216d3d COPYING-randrproto +sha256 ee10aee0f1697ffdbe870a39f037361d4f7136f2976bb7919a41b3f66407caee COPYING-recordproto +sha256 9e48921a94da36d7a69fe71809223ee0bb46370db9842dccdeeb55b5a9946872 COPYING-renderproto +sha256 403e7be948674530ad40669b1e3a31adeddb656502f3b0ef810d5d3cc35d0b52 COPYING-resourceproto +sha256 fcbd3c628bf4d28ee3e6032054bf44bbe58f3b1a944dad856a8d3eb6b37ea412 COPYING-scrnsaverproto +sha256 d6d3513f5a7099748dc387f54498d799380b45f8a444f13aa98aa45a860ae55b COPYING-trapproto +sha256 f8f49bbad61967ebc890fb79fff5bfb7cfc1c341aa8f8dee13eb3fb534040b47 COPYING-videoproto +sha256 eb183a00c61bb47992f096b6993ed7ec17518bea9c285fe87efff7f622cc6c12 COPYING-windowswmproto +sha256 da835951edc6e3b8d168d6afe7447c65d0b9a99937293cf3f288bba8244a9f86 COPYING-x11proto +sha256 5531d18cfcc944dab39991f63f182cbbce3fe493ba0c7cf08a25c0d01ee84482 COPYING-xcmiscproto +sha256 fb42146c6c06a200a9b121220eb692ff9101ba0fbd0b224b9e16a016c59ae86a COPYING-xextproto +sha256 3591964e01a9cdfc9cc4149a847a431a3f3d98328cc9e5864c7a7831b29c4058 COPYING-xf86bigfontproto +sha256 3591964e01a9cdfc9cc4149a847a431a3f3d98328cc9e5864c7a7831b29c4058 COPYING-xf86dgaproto +sha256 4a05d06752388d9db71ee1006f371d4fb2c316a821fc2fc272db90b3ef978334 COPYING-xf86driproto +sha256 3591964e01a9cdfc9cc4149a847a431a3f3d98328cc9e5864c7a7831b29c4058 COPYING-xf86miscproto +sha256 3591964e01a9cdfc9cc4149a847a431a3f3d98328cc9e5864c7a7831b29c4058 COPYING-xf86rushproto +sha256 942bb46a3503a708948491699171b00b9e0dfb47818d9268b160bccc5f51a4b9 COPYING-xf86vidmodeproto +sha256 b2d8cda803e900915ce10f0ba735ff2c033b39c7cc5a8a436667ca583d4066fa COPYING-xineramaproto +sha256 309bd89bc2b30c6e3d3eb78f5377fa576475499e0ba936a9c3cba50ba5d6375c COPYING-xwaylandproto diff --git a/package/x11r7/xorgproto/xorgproto.mk b/package/x11r7/xorgproto/xorgproto.mk new file mode 100644 index 00000000..f6e5a5a4 --- /dev/null +++ b/package/x11r7/xorgproto/xorgproto.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# xorgproto +# +################################################################################ + +XORGPROTO_VERSION = 2023.2 +XORGPROTO_SOURCE = xorgproto-$(XORGPROTO_VERSION).tar.xz +XORGPROTO_SITE = https://xorg.freedesktop.org/archive/individual/proto +XORGPROTO_LICENSE = MIT +XORGPROTO_LICENSE_FILES = \ + COPYING-applewmproto \ + COPYING-bigreqsproto \ + COPYING-compositeproto \ + COPYING-damageproto \ + COPYING-dmxproto \ + COPYING-dri2proto \ + COPYING-dri3proto \ + COPYING-evieproto \ + COPYING-fixesproto \ + COPYING-fontcacheproto \ + COPYING-fontsproto \ + COPYING-glproto \ + COPYING-inputproto \ + COPYING-kbproto \ + COPYING-lg3dproto \ + COPYING-pmproto \ + COPYING-presentproto \ + COPYING-printproto \ + COPYING-randrproto \ + COPYING-recordproto \ + COPYING-renderproto \ + COPYING-resourceproto \ + COPYING-scrnsaverproto \ + COPYING-trapproto \ + COPYING-videoproto \ + COPYING-windowswmproto \ + COPYING-x11proto \ + COPYING-xcmiscproto \ + COPYING-xextproto \ + COPYING-xf86bigfontproto \ + COPYING-xf86dgaproto \ + COPYING-xf86driproto \ + COPYING-xf86miscproto \ + COPYING-xf86rushproto \ + COPYING-xf86vidmodeproto \ + COPYING-xineramaproto \ + COPYING-xwaylandproto +XORGPROTO_INSTALL_STAGING = YES +XORGPROTO_INSTALL_TARGET = NO +# xproxymngproto is needed by xfindproxy +XORGPROTO_CONF_OPTS += --enable-legacy + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/x11r7/xserver_xorg-server/0001-include-misc.h-fix-uClibc-build.patch b/package/x11r7/xserver_xorg-server/0001-include-misc.h-fix-uClibc-build.patch new file mode 100644 index 00000000..562aa79f --- /dev/null +++ b/package/x11r7/xserver_xorg-server/0001-include-misc.h-fix-uClibc-build.patch @@ -0,0 +1,31 @@ +From 2e8fca00f5bdb02f2f59aaa428d1e9d808ab0e86 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sat, 16 Jun 2018 19:20:16 +0200 +Subject: [PATCH] include/misc.h: fix uClibc build + +A similar fix was used for Dovecot: +https://www.dovecot.org/list/dovecot/2017-November/110019.html + +Signed-off-by: Bernd Kuhls +--- + include/misc.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/include/misc.h b/include/misc.h +index 14920c3c3..390e52b60 100644 +--- a/include/misc.h ++++ b/include/misc.h +@@ -185,6 +185,10 @@ typedef struct _xReq *xReqPtr; + #endif + #endif + ++#undef bswap_16 ++#undef bswap_32 ++#undef bswap_64 ++ + /** + * Calculate the number of bytes needed to hold bits. + * @param bits The minimum number of bits needed. +-- +2.17.1 + diff --git a/package/x11r7/xserver_xorg-server/Config.in b/package/x11r7/xserver_xorg-server/Config.in new file mode 100644 index 00000000..89410f22 --- /dev/null +++ b/package/x11r7/xserver_xorg-server/Config.in @@ -0,0 +1,89 @@ +config BR2_PACKAGE_XSERVER_XORG_SERVER + bool "xorg-server" + depends on BR2_USE_MMU # fork() + # 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_MCOOKIE + select BR2_PACKAGE_PIXMAN + select BR2_PACKAGE_XFONT_FONT_ALIAS + select BR2_PACKAGE_XFONT_FONT_MISC_MISC + select BR2_PACKAGE_XFONT_FONT_CURSOR_MISC + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXAU + select BR2_PACKAGE_XLIB_LIBXCURSOR + select BR2_PACKAGE_XLIB_LIBXCVT + select BR2_PACKAGE_XLIB_LIBXDAMAGE + select BR2_PACKAGE_XLIB_LIBXDMCP + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXFIXES + select BR2_PACKAGE_XLIB_LIBXFONT2 + select BR2_PACKAGE_XLIB_LIBXFT + select BR2_PACKAGE_XLIB_LIBXI + select BR2_PACKAGE_XLIB_LIBXINERAMA + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XLIB_LIBXRES + select BR2_PACKAGE_XLIB_LIBXXF86VM + select BR2_PACKAGE_XLIB_LIBXKBFILE + select BR2_PACKAGE_XLIB_XTRANS + select BR2_PACKAGE_XDATA_XBITMAPS + select BR2_PACKAGE_XORGPROTO + select BR2_PACKAGE_XUTIL_UTIL_MACROS + select BR2_PACKAGE_XKEYBOARD_CONFIG + help + X.Org X server + + http://xorg.freedesktop.org + +if BR2_PACKAGE_XSERVER_XORG_SERVER + +choice + prompt "X Window System server type" + help + Select the X Window System server to use + +config BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR + bool "Modular X.org" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_LIBPCIACCESS + select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_TOOLCHAIN_HAS_SYNC_4 + help + This variant of the X.org server is the full-blown variant, + as used by desktop GNU/Linux distributions. The drivers (for + input and graphics) are built separately from the X.org + server (see the xdriver* packages). + +comment "Modular X.org needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE + bool "KDrive / TinyX" + help + This variant of the X.org server is a lightweight version + intended for embedded systems. The drivers (for input and + graphics) are built into the server. It is generally used + directly on top of the Linux framebuffer without DRM or + video card specific drivers. + +endchoice + +comment "Optional Servers" + +config BR2_PACKAGE_XSERVER_XORG_SERVER_XVFB + bool "Xvfb server" + help + Virtual frame buffer X server. + +config BR2_PACKAGE_XSERVER_XORG_SERVER_XEPHYR + bool "Xephyr server" + select BR2_PACKAGE_XCB_UTIL_IMAGE if BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE + select BR2_PACKAGE_XCB_UTIL_KEYSYMS if BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE + select BR2_PACKAGE_XCB_UTIL_RENDERUTIL if BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE + select BR2_PACKAGE_XCB_UTIL_WM if BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE + help + Xephyr nested X server; successor to Xnest. + +endif diff --git a/package/x11r7/xserver_xorg-server/S40xorg b/package/x11r7/xserver_xorg-server/S40xorg new file mode 100644 index 00000000..215c0b7a --- /dev/null +++ b/package/x11r7/xserver_xorg-server/S40xorg @@ -0,0 +1,46 @@ +#!/bin/sh +# +# Starts Xorg +# + +BIN=/usr/bin/Xorg +PIDFILE=/var/run/xorg.pid + +# ":0.0 vt01" makes sure Xorg finds the correct terminal. +# -allowMouseOpenFail allows the server to start up even if the mouse device +# can't be opened or initialised. +# -noreset prevents a server reset when the last client connection is closed. +XORG_ARGS=":0.0 vt01 -s 0 -noreset -allowMouseOpenFail" + +start() { + printf "Starting Xorg: " + start-stop-daemon -S -q -b -m -p $PIDFILE --exec $BIN -- $XORG_ARGS + [ $? = 0 ] && sleep 3 && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping Xorg: " + start-stop-daemon -K -q -p $PIDFILE + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +restart() { + stop + sleep 2 + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/package/x11r7/xserver_xorg-server/xorg.service b/package/x11r7/xserver_xorg-server/xorg.service new file mode 100644 index 00000000..553d8b25 --- /dev/null +++ b/package/x11r7/xserver_xorg-server/xorg.service @@ -0,0 +1,11 @@ +[Unit] +Description=Xorg server +After=network.target + +[Service] +Type=simple +ExecStart=/usr/bin/Xorg :0.0 vt01 -s 0 -noreset -allowMouseOpenFail +Restart=always + +[Install] +WantedBy=graphical.target diff --git a/package/x11r7/xserver_xorg-server/xserver_xorg-server.hash b/package/x11r7/xserver_xorg-server/xserver_xorg-server.hash new file mode 100644 index 00000000..3520de24 --- /dev/null +++ b/package/x11r7/xserver_xorg-server/xserver_xorg-server.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2024-April/003504.html +sha256 2864b6a5359ab41c5a6132c69b5d0c9af6eb85ad26d433edb012c914029de752 xorg-server-21.1.13.tar.gz +sha512 9bf5617d577dd3526a9578daedc1f2e3527da6913841f8fc78a2bda311ebf1560e84e31942cb8133a2a2ac99487c13b9153db6fb2d00859fc24d053f6b91fe34 xorg-server-21.1.13.tar.gz +# Locally calculated +sha256 4cc0447a22635c7b2f1a93fec4aa94f1970fadeb72a063de006b51cf4963a06f COPYING diff --git a/package/x11r7/xserver_xorg-server/xserver_xorg-server.mk b/package/x11r7/xserver_xorg-server/xserver_xorg-server.mk new file mode 100644 index 00000000..05ba938c --- /dev/null +++ b/package/x11r7/xserver_xorg-server/xserver_xorg-server.mk @@ -0,0 +1,199 @@ +################################################################################ +# +# xserver_xorg-server +# +################################################################################ + +XSERVER_XORG_SERVER_VERSION = 21.1.13 +XSERVER_XORG_SERVER_SOURCE = xorg-server-$(XSERVER_XORG_SERVER_VERSION).tar.gz +XSERVER_XORG_SERVER_SITE = https://xorg.freedesktop.org/archive/individual/xserver +XSERVER_XORG_SERVER_LICENSE = MIT +XSERVER_XORG_SERVER_LICENSE_FILES = COPYING +XSERVER_XORG_SERVER_CPE_ID_VENDOR = x.org +XSERVER_XORG_SERVER_CPE_ID_PRODUCT = xorg-server +XSERVER_XORG_SERVER_SELINUX_MODULES = xdg xserver +XSERVER_XORG_SERVER_INSTALL_STAGING = YES + +XSERVER_XORG_SERVER_DEPENDENCIES = \ + xutil_util-macros \ + xlib_libX11 \ + xlib_libXau \ + xlib_libXdmcp \ + xlib_libXext \ + xlib_libXfixes \ + xlib_libXfont2 \ + xlib_libXi \ + xlib_libXrender \ + xlib_libXres \ + xlib_libXft \ + xlib_libXcursor \ + xlib_libXinerama \ + xlib_libXrandr \ + xlib_libXdamage \ + xlib_libXxf86vm \ + xlib_libxkbfile \ + xlib_libxcvt \ + xlib_xtrans \ + xdata_xbitmaps \ + xorgproto \ + xkeyboard-config \ + pixman \ + mcookie \ + host-pkgconf + +# We force -O2 regardless of the optimization level chosen by the +# user, as the X.org server is known to trigger some compiler bugs at +# -Os on several architectures. +XSERVER_XORG_SERVER_CONF_OPTS = \ + --disable-config-hal \ + --enable-record \ + --disable-xnest \ + --disable-unit-tests \ + --with-builder-addr=buildroot@buildroot.org \ + CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include/pixman-1 -O2" \ + --with-fontrootdir=/usr/share/fonts/X11/ \ + --$(if $(BR2_PACKAGE_XSERVER_XORG_SERVER_XEPHYR),en,dis)able-xephyr \ + --$(if $(BR2_PACKAGE_XSERVER_XORG_SERVER_XVFB),en,dis)able-xvfb + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +XSERVER_XORG_SERVER_CONF_OPTS += \ + --with-systemd-daemon \ + --enable-systemd-logind +XSERVER_XORG_SERVER_DEPENDENCIES += \ + systemd +else +XSERVER_XORG_SERVER_CONF_OPTS += \ + --without-systemd-daemon \ + --disable-systemd-logind +endif + +ifeq ($(BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR),y) +XSERVER_XORG_SERVER_CONF_OPTS += --enable-xorg +XSERVER_XORG_SERVER_DEPENDENCIES += libpciaccess +ifeq ($(BR2_PACKAGE_LIBDRM),y) +XSERVER_XORG_SERVER_DEPENDENCIES += libdrm +XSERVER_XORG_SERVER_CONF_OPTS += --enable-libdrm +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-libdrm +endif +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-xorg +endif + +ifeq ($(BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE),y) +XSERVER_XORG_SERVER_CONF_OPTS += \ + --enable-kdrive \ + --disable-glx \ + --disable-dri + +ifeq ($(BR2_PACKAGE_XSERVER_XORG_SERVER_XEPHYR),y) +XSERVER_XORG_SERVER_DEPENDENCIES += \ + xcb-util-image \ + xcb-util-keysyms \ + xcb-util-renderutil \ + xcb-util-wm +endif +else # modular +XSERVER_XORG_SERVER_CONF_OPTS += --disable-kdrive +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +XSERVER_XORG_SERVER_CONF_OPTS += --enable-dri --enable-glx +XSERVER_XORG_SERVER_DEPENDENCIES += libgl +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-dri --disable-glx +endif + +# Optional packages +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +XSERVER_XORG_SERVER_DEPENDENCIES += udev +XSERVER_XORG_SERVER_CONF_OPTS += --enable-config-udev +# udev kms support depends on libdrm and dri2 +ifeq ($(BR2_PACKAGE_LIBDRM),y) +XSERVER_XORG_SERVER_CONF_OPTS += --enable-config-udev-kms +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-config-udev-kms +endif +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +XSERVER_XORG_SERVER_DEPENDENCIES += dbus +XSERVER_XORG_SERVER_CONF_OPTS += --enable-config-dbus +endif + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +XSERVER_XORG_SERVER_DEPENDENCIES += freetype +endif + +ifeq ($(BR2_PACKAGE_LIBUNWIND),y) +XSERVER_XORG_SERVER_DEPENDENCIES += libunwind +XSERVER_XORG_SERVER_CONF_OPTS += --enable-libunwind +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-libunwind +endif + +ifneq ($(BR2_PACKAGE_XLIB_LIBXVMC),y) +XSERVER_XORG_SERVER_CONF_OPTS += --disable-xvmc +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),y) +XSERVER_XORG_SERVER_DEPENDENCIES += xlib_libXcomposite +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-composite +endif + +ifeq ($(BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR),y) +XSERVER_XORG_SERVER_CONF_OPTS += --enable-dri2 +ifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE),y) +XSERVER_XORG_SERVER_DEPENDENCIES += xlib_libxshmfence +XSERVER_XORG_SERVER_CONF_OPTS += --enable-dri3 +ifeq ($(BR2_PACKAGE_HAS_LIBEGL)$(BR2_PACKAGE_HAS_LIBGL)$(BR2_PACKAGE_LIBEPOXY),yyy) +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 +endif +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-dri2 --disable-dri3 --disable-glamor +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXSCRNSAVER),y) +XSERVER_XORG_SERVER_DEPENDENCIES += xlib_libXScrnSaver +XSERVER_XORG_SERVER_CONF_OPTS += --enable-screensaver +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-screensaver +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +XSERVER_XORG_SERVER_CONF_OPTS += --with-sha1=libcrypto +XSERVER_XORG_SERVER_DEPENDENCIES += openssl +else ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +XSERVER_XORG_SERVER_CONF_OPTS += --with-sha1=libgcrypt +XSERVER_XORG_SERVER_DEPENDENCIES += libgcrypt +else +XSERVER_XORG_SERVER_CONF_OPTS += --with-sha1=libsha1 +XSERVER_XORG_SERVER_DEPENDENCIES += libsha1 +endif + +# Install the systemd unit only when nodm nor xdm aren't enabled, as +# they would be responsible for starting the server. +ifeq ($(BR2_PACKAGE_NODM)$(BR2_PACKAGE_XAPP_XDM),) +define XSERVER_XORG_SERVER_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/x11r7/xserver_xorg-server/xorg.service \ + $(TARGET_DIR)/usr/lib/systemd/system/xorg.service +endef +endif + +# Install the init script only when neither nodm nor xdm are enabled, as +# they would be responsible for starting the server. +ifeq ($(BR2_PACKAGE_NODM)$(BR2_PACKAGE_XAPP_XDM),) +define XSERVER_XORG_SERVER_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/x11r7/xserver_xorg-server/S40xorg \ + $(TARGET_DIR)/etc/init.d/S40xorg +endef +endif + +$(eval $(autotools-package)) diff --git a/package/x11r7/xutil_makedepend/Config.in b/package/x11r7/xutil_makedepend/Config.in new file mode 100644 index 00000000..fdf2fb92 --- /dev/null +++ b/package/x11r7/xutil_makedepend/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XUTIL_MAKEDEPEND + bool "makedepend" + select BR2_PACKAGE_XORGPROTO + help + No description available diff --git a/package/x11r7/xutil_makedepend/xutil_makedepend.hash b/package/x11r7/xutil_makedepend/xutil_makedepend.hash new file mode 100644 index 00000000..e2fe117f --- /dev/null +++ b/package/x11r7/xutil_makedepend/xutil_makedepend.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2022-December/003300.html +sha256 bfb26f8025189b2a01286ce6daacc2af8fe647440b40bb741dd5c397572cba5b makedepend-1.0.8.tar.xz +sha512 6707b1107c07d4ffbcf008181e877d18a0bcc4aea03860ee1158f5630c7fdce4cf9ad7bee3b38ee420c3a44819ed4b56a6f2428a5b695c0dbd17fb3e60825a6d makedepend-1.0.8.tar.xz +# Locally computed +sha256 0530078db78c47ae978dc2bd77f4f427e6cd97df868672c95b1ef284113c8cb7 COPYING diff --git a/package/x11r7/xutil_makedepend/xutil_makedepend.mk b/package/x11r7/xutil_makedepend/xutil_makedepend.mk new file mode 100644 index 00000000..0c4a32c0 --- /dev/null +++ b/package/x11r7/xutil_makedepend/xutil_makedepend.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xutil_makedepend +# +################################################################################ + +XUTIL_MAKEDEPEND_VERSION = 1.0.8 +XUTIL_MAKEDEPEND_SOURCE = makedepend-$(XUTIL_MAKEDEPEND_VERSION).tar.xz +XUTIL_MAKEDEPEND_SITE = https://xorg.freedesktop.org/archive/individual/util +XUTIL_MAKEDEPEND_LICENSE = MIT +XUTIL_MAKEDEPEND_LICENSE_FILES = COPYING + +XUTIL_MAKEDEPEND_DEPENDENCIES = xorgproto host-pkgconf +HOST_XUTIL_MAKEDEPEND_DEPENDENCIES = host-xorgproto host-pkgconf + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/x11r7/xwayland/Config.in b/package/x11r7/xwayland/Config.in new file mode 100644 index 00000000..311dae25 --- /dev/null +++ b/package/x11r7/xwayland/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_XWAYLAND + bool "xwayland server" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # wayland + depends on BR2_TOOLCHAIN_HAS_THREADS # wayland + # 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. + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # xlib_libxshmfence + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_LIBSHA1 if (!BR2_PACKAGE_OPENSSL && !BR2_PACKAGE_LIBGCRYPT) + select BR2_PACKAGE_PIXMAN + select BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_WAYLAND_PROTOCOLS + select BR2_PACKAGE_XLIB_LIBXCVT + select BR2_PACKAGE_XLIB_LIBXFONT2 + select BR2_PACKAGE_XLIB_LIBXKBFILE + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_XLIB_LIBXSHMFENCE + select BR2_PACKAGE_XLIB_XTRANS + select BR2_PACKAGE_XORGPROTO + help + X.Org X server to run X clients under wayland + + http://xorg.freedesktop.org + +comment "xwayland needs a 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 diff --git a/package/x11r7/xwayland/xwayland.hash b/package/x11r7/xwayland/xwayland.hash new file mode 100644 index 00000000..5bb26bf1 --- /dev/null +++ b/package/x11r7/xwayland/xwayland.hash @@ -0,0 +1,6 @@ +# From https://lists.x.org/archives/xorg-announce/2024-January/003443.html +sha256 a99e159b6d0d33098b3b6ab22a88bfcece23c8b9d0ca72c535c55dcb0681b46b xwayland-23.2.4.tar.xz +sha512 ac3ff208cbef5bbe4637c335cfda226489c93b0a3768f2f4fb0201c588485ede38262fbce77ef1425b3d2a0be61b6580df53341c7b95e6072c8b6371ad29d187 xwayland-23.2.4.tar.xz + +# Locally calculated +sha256 4cc0447a22635c7b2f1a93fec4aa94f1970fadeb72a063de006b51cf4963a06f COPYING diff --git a/package/x11r7/xwayland/xwayland.mk b/package/x11r7/xwayland/xwayland.mk new file mode 100644 index 00000000..c66dd471 --- /dev/null +++ b/package/x11r7/xwayland/xwayland.mk @@ -0,0 +1,91 @@ +################################################################################ +# +# xwayland +# +################################################################################ + +XWAYLAND_VERSION = 23.2.4 +XWAYLAND_SOURCE = xwayland-$(XWAYLAND_VERSION).tar.xz +XWAYLAND_SITE = https://xorg.freedesktop.org/archive/individual/xserver +XWAYLAND_LICENSE = MIT +XWAYLAND_LICENSE_FILES = COPYING +XWAYLAND_CPE_ID_VENDOR = x.org +XWAYLAND_INSTALL_STAGING = YES +XWAYLAND_DEPENDENCIES = \ + libdrm \ + pixman \ + wayland \ + wayland-protocols \ + xlib_libxcvt \ + xlib_libXfont2 \ + xlib_libxkbfile \ + xlib_libXrandr \ + xlib_libxshmfence \ + xlib_xtrans \ + xorgproto +XWAYLAND_CONF_OPTS = \ + -Ddri3=true \ + -Dxwayland_eglstream=false \ + -Dxvfb=false \ + -Ddefault_font_path=/usr/share/fonts/X11/ \ + -Ddtrace=false \ + -Ddocs=false + +ifeq ($(BR2_PACKAGE_LIBEPOXY),y) +XWAYLAND_CONF_OPTS += -Dglamor=true +XWAYLAND_DEPENDENCIES += libepoxy +else +XWAYLAND_CONF_OPTS += -Dglamor=false +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +XWAYLAND_CONF_OPTS += -Dglx=true +XWAYLAND_DEPENDENCIES += libgl +else +XWAYLAND_CONF_OPTS += -Dglx=false +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXDMCP),y) +XWAYLAND_CONF_OPTS += \ + -Dxdmcp=true \ + -Dxdm-auth-1=true +XWAYLAND_DEPENDENCIES += xlib_libXdmcp +else +XWAYLAND_CONF_OPTS += \ + -Dxdmcp=false \ + -Dxdm-auth-1=false +endif + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +XWAYLAND_CONF_OPTS += -Dsecure-rpc=true +XWAYLAND_DEPENDENCIES += libtirpc +else +XWAYLAND_CONF_OPTS += -Dsecure-rpc=false +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX)$(BR2_PACKAGE_AUDIT),yy) +XWAYLAND_CONF_OPTS += -Dxselinux=true +XWAYLAND_DEPENDENCIES += libselinux audit +else +XWAYLAND_CONF_OPTS += -Dxselinux=false +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +XWAYLAND_CONF_OPTS += -Dsha1=libcrypto +XWAYLAND_DEPENDENCIES += openssl +else ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +XWAYLAND_CONF_OPTS += -Dsha1=libgcrypt +XWAYLAND_DEPENDENCIES += libgcrypt +else +XWAYLAND_CONF_OPTS += -Dsha1=libsha1 +XWAYLAND_DEPENDENCIES += libsha1 +endif + +ifeq ($(BR2_PACKAGE_LIBUNWIND),y) +XWAYLAND_CONF_OPTS += -Dlibunwind=true +XWAYLAND_DEPENDENCIES += libunwind +else +XWAYLAND_CONF_OPTS += -Dlibunwind=false +endif + +$(eval $(meson-package)) diff --git a/package/x11vnc/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch b/package/x11vnc/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch new file mode 100644 index 00000000..87dc3c99 --- /dev/null +++ b/package/x11vnc/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch @@ -0,0 +1,109 @@ +From daecf59cc8b294265666482a4766aaa3148c308b Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 30 Nov 2019 11:43:32 -0800 +Subject: [PATCH] Fix build on 32bit arches with 64bit time_t + +time element is deprecated on new input_event structure in kernel's +input.h [1] + +[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f + +[Retrieved from: +https://github.com/LibVNC/x11vnc/commit/daecf59cc8b294265666482a4766aaa3148c308b] +Signed-off-by: Fabrice Fontaine +--- + src/uinput.c | 25 +++++++++++++++++++++---- + 1 file changed, 21 insertions(+), 4 deletions(-) + +diff --git a/src/uinput.c b/src/uinput.c +index 28fbad3..d71bcde 100644 +--- a/src/uinput.c ++++ b/src/uinput.c +@@ -54,6 +54,11 @@ so, delete this exception statement from your version. + #include + #include + ++#ifndef input_event_sec ++#define input_event_sec time.tv_sec ++#define input_event_usec time.tv_usec ++#endif ++ + #if !defined(EV_SYN) || !defined(SYN_REPORT) + #undef UINPUT_OK + #endif +@@ -710,6 +715,7 @@ void parse_uinput_str(char *in) { + static void ptr_move(int dx, int dy) { + #ifdef UINPUT_OK + struct input_event ev; ++ struct timeval tval; + int d = direct_rel_fd < 0 ? fd : direct_rel_fd; + + if (injectable && strchr(injectable, 'M') == NULL) { +@@ -720,7 +726,9 @@ static void ptr_move(int dx, int dy) { + + if (db) fprintf(stderr, "ptr_move(%d, %d) fd=%d\n", dx, dy, d); + +- gettimeofday(&ev.time, NULL); ++ gettimeofday(&tval, NULL); ++ ev.input_event_sec = tval.tv_sec; ++ ev.input_event_usec = tval.tv_usec; + ev.type = EV_REL; + ev.code = REL_Y; + ev.value = dy; +@@ -755,6 +763,7 @@ static void apply_tslib(int *x, int *y) { + static void ptr_abs(int x, int y, int p) { + #ifdef UINPUT_OK + struct input_event ev; ++ struct timeval tval; + int x0, y0; + int d = direct_abs_fd < 0 ? fd : direct_abs_fd; + +@@ -773,7 +782,9 @@ static void ptr_abs(int x, int y, int p) { + + if (db) fprintf(stderr, "ptr_abs(%d, %d => %d %d, p=%d) fd=%d\n", x0, y0, x, y, p, d); + +- gettimeofday(&ev.time, NULL); ++ gettimeofday(&tval, NULL); ++ ev.input_event_sec = tval.tv_sec; ++ ev.input_event_usec = tval.tv_usec; + ev.type = EV_ABS; + ev.code = ABS_Y; + ev.value = y; +@@ -950,6 +961,7 @@ if (0) {usleep(100*1000) ;} + static void button_click(int down, int btn) { + #ifdef UINPUT_OK + struct input_event ev; ++ struct timeval tval; + int d = direct_btn_fd < 0 ? fd : direct_btn_fd; + + if (injectable && strchr(injectable, 'B') == NULL) { +@@ -959,7 +971,9 @@ static void button_click(int down, int btn) { + if (db) fprintf(stderr, "button_click: btn %d %s fd=%d\n", btn, down ? "down" : "up", d); + + memset(&ev, 0, sizeof(ev)); +- gettimeofday(&ev.time, NULL); ++ gettimeofday(&tval, NULL); ++ ev.input_event_sec = tval.tv_sec; ++ ev.input_event_usec = tval.tv_usec; + ev.type = EV_KEY; + ev.value = down; + +@@ -1230,6 +1244,7 @@ void uinput_pointer_command(int mask, int x, int y, rfbClientPtr client) { + void uinput_key_command(int down, int keysym, rfbClientPtr client) { + #ifdef UINPUT_OK + struct input_event ev; ++ struct timeval tval; + int scancode; + allowed_input_t input; + int d = direct_key_fd < 0 ? fd : direct_key_fd; +@@ -1253,7 +1268,9 @@ void uinput_key_command(int down, int keysym, rfbClientPtr client) { + if (db) fprintf(stderr, "uinput_key_command: %d -> %d %s fd=%d\n", keysym, scancode, down ? "down" : "up", d); + + memset(&ev, 0, sizeof(ev)); +- gettimeofday(&ev.time, NULL); ++ gettimeofday(&tval, NULL); ++ ev.input_event_sec = tval.tv_sec; ++ ev.input_event_usec = tval.tv_usec; + ev.type = EV_KEY; + ev.code = (unsigned char) scancode; + ev.value = down; diff --git a/package/x11vnc/0002-scan-limit-access-to-shared-memory-segments-to-current-user.patch b/package/x11vnc/0002-scan-limit-access-to-shared-memory-segments-to-current-user.patch new file mode 100644 index 00000000..e4dbdf18 --- /dev/null +++ b/package/x11vnc/0002-scan-limit-access-to-shared-memory-segments-to-current-user.patch @@ -0,0 +1,25 @@ +From 69eeb9f7baa14ca03b16c9de821f9876def7a36a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Gu=C3=A9nal=20DAVALAN?= +Date: Wed, 18 Nov 2020 08:40:45 +0100 +Subject: [PATCH] scan: limit access to shared memory segments to current user + +[Retrieved from: +https://github.com/LibVNC/x11vnc/commit/69eeb9f7baa14ca03b16c9de821f9876def7a36a] +Signed-off-by: Fabrice Fontaine +--- + src/scan.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/scan.c b/src/scan.c +index 43e00d2..12994d5 100644 +--- a/src/scan.c ++++ b/src/scan.c +@@ -320,7 +320,7 @@ static int shm_create(XShmSegmentInfo *shm, XImage **ximg_ptr, int w, int h, + + #if HAVE_XSHM + shm->shmid = shmget(IPC_PRIVATE, +- xim->bytes_per_line * xim->height, IPC_CREAT | 0777); ++ xim->bytes_per_line * xim->height, IPC_CREAT | 0600); + + if (shm->shmid == -1) { + rfbErr("shmget(%s) failed.\n", name); diff --git a/package/x11vnc/Config.in b/package/x11vnc/Config.in new file mode 100644 index 00000000..d2639fce --- /dev/null +++ b/package/x11vnc/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_X11VNC + bool "x11vnc" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU # fork() + depends on !BR2_nios2 # libvncserver + select BR2_PACKAGE_LIBVNCSERVER + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXTST + select BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 if BR2_PACKAGE_LIBOPENSSL + help + VNC server for X11 display + + http://www.karlrunge.com/x11vnc/ diff --git a/package/x11vnc/x11vnc.hash b/package/x11vnc/x11vnc.hash new file mode 100644 index 00000000..ca0b4896 --- /dev/null +++ b/package/x11vnc/x11vnc.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 885e5b5f5f25eec6f9e4a1e8be3d0ac71a686331ee1cfb442dba391111bd32bd x11vnc-0.9.16.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/x11vnc/x11vnc.mk b/package/x11vnc/x11vnc.mk new file mode 100644 index 00000000..645ef406 --- /dev/null +++ b/package/x11vnc/x11vnc.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# x11vnc +# +################################################################################ + +X11VNC_VERSION = 0.9.16 +X11VNC_SITE = $(call github,LibVNC,x11vnc,$(X11VNC_VERSION)) +X11VNC_DEPENDENCIES = xlib_libXt xlib_libXext xlib_libXtst libvncserver +X11VNC_LICENSE = GPL-2.0+ +X11VNC_LICENSE_FILES = COPYING +X11VNC_CPE_ID_VALID = YES +# 0002-scan-limit-access-to-shared-memory-segments-to-current-user.patch +X11VNC_IGNORE_CVES += CVE-2020-29074 + +# Source coming from github, no configure included +X11VNC_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_DBUS),yy) +X11VNC_DEPENDENCIES += avahi dbus +else +X11VNC_CONF_OPTS += --without-avahi +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +X11VNC_DEPENDENCIES += openssl +else +X11VNC_CONF_OPTS += --without-ssl --without-crypto +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +X11VNC_DEPENDENCIES += xlib_libXinerama +else +X11VNC_CONF_OPTS += --without-xinerama +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) +X11VNC_DEPENDENCIES += xlib_libXrandr +else +X11VNC_CONF_OPTS += --without-xrandr +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y) +X11VNC_DEPENDENCIES += xlib_libXfixes +else +X11VNC_CONF_OPTS += --without-xfixes +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXDAMAGE),y) +X11VNC_DEPENDENCIES += xlib_libXdamage +else +X11VNC_CONF_OPTS += --without-xdamage +endif + +$(eval $(autotools-package)) diff --git a/package/x264/Config.in b/package/x264/Config.in new file mode 100644 index 00000000..be3ab3f3 --- /dev/null +++ b/package/x264/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_X264 + bool "x264" + help + x264 is a free software library and application for + encoding video streams into the H.264/MPEG-4 AVC + compression format, and is released under the terms + of the GNU GPL. + + https://www.videolan.org/developers/x264.html + +if BR2_PACKAGE_X264 + +config BR2_PACKAGE_X264_CLI + bool "CLI" + help + Command-line tool to encode video streams into the + H.264/MPEG-4 AVC compression format. + +endif diff --git a/package/x264/x264.hash b/package/x264/x264.hash new file mode 100644 index 00000000..dc2d3d7b --- /dev/null +++ b/package/x264/x264.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 adb3f2f780607420134def42d0fac58be9c6de718a451f3f0ec56236a783f937 x264-baee400fa9ced6f5481a728138fed6e867b0ff7f-git4.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/package/x264/x264.mk b/package/x264/x264.mk new file mode 100644 index 00000000..e96d9930 --- /dev/null +++ b/package/x264/x264.mk @@ -0,0 +1,76 @@ +################################################################################ +# +# x264 +# +################################################################################ + +X264_VERSION = baee400fa9ced6f5481a728138fed6e867b0ff7f +X264_SITE = https://code.videolan.org/videolan/x264.git +X264_SITE_METHOD = git +X264_LICENSE = GPL-2.0+ +X264_DEPENDENCIES = host-pkgconf +X264_LICENSE_FILES = COPYING +X264_INSTALL_STAGING = YES +X264_CONF_OPTS = --disable-avs --disable-lavf --disable-swscale + +ifeq ($(BR2_i386)$(BR2_x86_64),y) +ifeq ($(BR2_TOOLCHAIN_USES_MUSL)$(BR2_PIC_PIE),yy) +# libx264 uses large amounts of non-pic assembly code, resulting in text +# section relocations, which are not supported on musl-libc's ld.so. +X264_CONF_OPTS += --disable-asm +else +# nasm needed for assembly files +X264_DEPENDENCIES += host-nasm +X264_CONF_ENV += AS="$(HOST_DIR)/bin/nasm" +endif +else ifeq ($(BR2_ARM_CPU_ARMV7A)$(BR2_aarch64),y) +# We need to pass gcc as AS, because the ARM assembly files have to be +# preprocessed +X264_CONF_ENV += AS="$(TARGET_CC)" +else +X264_CONF_OPTS += --disable-asm +endif + +ifeq ($(BR2_STATIC_LIBS),) +X264_CONF_OPTS += --enable-pic --enable-shared +endif + +ifeq ($(BR2_PACKAGE_X264_CLI),) +X264_CONF_OPTS += --disable-cli +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),) +X264_CONF_OPTS += --disable-thread +endif + +# Even though the configure script is not generated by autoconf, x264 +# uses config.sub/config.guess, so we want up-to-date versions of +# them. +X264_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK + +# the configure script is not generated by autoconf +define X264_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) $(X264_CONF_ENV) ./configure \ + --prefix=/usr \ + --host="$(GNU_TARGET_NAME)" \ + --cross-prefix="$(TARGET_CROSS)" \ + --disable-ffms \ + --enable-static \ + --disable-opencl \ + $(X264_CONF_OPTS) \ + ) +endef + +define X264_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define X264_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR="$(STAGING_DIR)" -C $(@D) install +endef + +define X264_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR="$(TARGET_DIR)" -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/x265/0001-CMakeLists.txt-do-not-force-compiler-flags.patch b/package/x265/0001-CMakeLists.txt-do-not-force-compiler-flags.patch new file mode 100644 index 00000000..af0e57f2 --- /dev/null +++ b/package/x265/0001-CMakeLists.txt-do-not-force-compiler-flags.patch @@ -0,0 +1,83 @@ +From b56e9125db34614b2157516df3ee724180f2084f Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 13 Jul 2024 09:59:26 +0200 +Subject: [PATCH] CMakeLists.txt: do not force compiler flags + +The compiler flags enforced by CMakeLists.txt can be problematic: + +- When CROSS_COMPILE_ARM is set, one is not necessarily building for + armv6 with soft float-abi: one may be using ARMv7 with hard float + +- When CROSS_COMPILE_ARM is not set, forcing -mfloat-abi=hard is + similarly wrong + +Those compiler flags should be passed by the user depending on the +exact target platform. + +Inspired from +https://gitweb.gentoo.org/repo/gentoo.git/tree/media-libs/x265/files/arm-r1.patch, +and earlier work from Bertrand Jacquin and +Bernd Kuhls . + +Upstream: https://bitbucket.org/multicoreware/x265_git/pull-requests/26 +Signed-off-by: Thomas Petazzoni +--- + source/CMakeLists.txt | 10 +++------- + source/dynamicHDR10/CMakeLists.txt | 6 +++--- + 2 files changed, 6 insertions(+), 10 deletions(-) + +diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt +index a407271b4..a34bf4d4f 100755 +--- a/source/CMakeLists.txt ++++ b/source/CMakeLists.txt +@@ -239,11 +239,7 @@ if(GCC) + endif() + endif() + if(ARM AND CROSS_COMPILE_ARM) +- if(ARM64) +- set(ARM_ARGS -fPIC) +- else() +- set(ARM_ARGS -march=armv6 -mfloat-abi=soft -mfpu=vfp -marm -fPIC) +- endif() ++ set(ARM_ARGS -fPIC) + message(STATUS "cross compile arm") + elseif(ARM) + if(ARM64) +@@ -252,10 +248,10 @@ if(GCC) + else() + find_package(Neon) + if(CPU_HAS_NEON) +- set(ARM_ARGS -mcpu=native -mfloat-abi=hard -mfpu=neon -marm -fPIC) ++ set(ARM_ARGS -mfpu=neon -fPIC) + add_definitions(-DHAVE_NEON) + else() +- set(ARM_ARGS -mcpu=native -mfloat-abi=hard -mfpu=vfp -marm) ++ set(ARM_ARGS -fPIC) + endif() + endif() + endif() +diff --git a/source/dynamicHDR10/CMakeLists.txt b/source/dynamicHDR10/CMakeLists.txt +index 22fb79d44..2cea7c48a 100644 +--- a/source/dynamicHDR10/CMakeLists.txt ++++ b/source/dynamicHDR10/CMakeLists.txt +@@ -43,14 +43,14 @@ if(GCC) + endif() + endif() + if(ARM AND CROSS_COMPILE_ARM) +- set(ARM_ARGS -march=armv6 -mfloat-abi=soft -mfpu=vfp -marm -fPIC) ++ set(ARM_ARGS -fPIC) + elseif(ARM) + find_package(Neon) + if(CPU_HAS_NEON) +- set(ARM_ARGS -mcpu=native -mfloat-abi=hard -mfpu=neon -marm -fPIC) ++ set(ARM_ARGS -fPIC) + add_definitions(-DHAVE_NEON) + else() +- set(ARM_ARGS -mcpu=native -mfloat-abi=hard -mfpu=vfp -marm) ++ set(ARM_ARGS -fPIC) + endif() + endif() + add_definitions(${ARM_ARGS}) +-- +2.45.2 + diff --git a/package/x265/0002-source-CMakeLists.txt-allow-setting-CPU_HAS_NEON-whe.patch b/package/x265/0002-source-CMakeLists.txt-allow-setting-CPU_HAS_NEON-whe.patch new file mode 100644 index 00000000..51be8f2d --- /dev/null +++ b/package/x265/0002-source-CMakeLists.txt-allow-setting-CPU_HAS_NEON-whe.patch @@ -0,0 +1,40 @@ +From 0088d29e7c75ea7f100a100aea4e2a797469427f Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 13 Jul 2024 10:10:54 +0200 +Subject: [PATCH] source/CMakeLists.txt: allow setting CPU_HAS_NEON when + CROSS_COMPILE_ARM + +The logic in source/cmake/FindNeon.cmake is not appropriate for +cross-compilation scenarios, so in order to allow cross-compiling for +ARM, CROSS_COMPILE_ARM needs to be defined. However that currently +doesn't allow the enabling of NEON support, so let's allow the user to +manually set CPU_HAS_NEON in this case. + +Upstream: https://bitbucket.org/multicoreware/x265_git/pull-requests/26 +Signed-off-by: Thomas Petazzoni +--- + source/CMakeLists.txt | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt +index a34bf4d4f..072bf62ab 100755 +--- a/source/CMakeLists.txt ++++ b/source/CMakeLists.txt +@@ -239,8 +239,13 @@ if(GCC) + endif() + endif() + if(ARM AND CROSS_COMPILE_ARM) +- set(ARM_ARGS -fPIC) + message(STATUS "cross compile arm") ++ if(CPU_HAS_NEON) ++ set(ARM_ARGS -mfpu=neon -fPIC) ++ add_definitions(-DHAVE_NEON) ++ else() ++ set(ARM_ARGS -fPIC) ++ endif() + elseif(ARM) + if(ARM64) + set(ARM_ARGS -fPIC) +-- +2.45.2 + diff --git a/package/x265/Config.in b/package/x265/Config.in new file mode 100644 index 00000000..1067505d --- /dev/null +++ b/package/x265/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_X265 + bool "x265" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS # dlfcn + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + help + x265 is an open source free software and library for + encoding video using the High Efficiency Video Coding + (HEVC/H.265) standard. x265 is offered under either the GNU + General Public License (GPL) 2 license or a commercial + license, similar to the x264 project. + + https://bitbucket.org/multicoreware/x265_git/wiki/Home + +if BR2_PACKAGE_X265 + +config BR2_PACKAGE_X265_CLI + bool "CLI" + help + Command-line tool to encode video streams into the + H.265/HEVC compression format. + +endif + +comment "x265 needs a toolchain w/ C++, threads, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 diff --git a/package/x265/x265.hash b/package/x265/x265.hash new file mode 100644 index 00000000..fb9a5b59 --- /dev/null +++ b/package/x265/x265.hash @@ -0,0 +1,5 @@ +# From https://mailman.videolan.org/pipermail/x265-devel/2021-March/013257.html +md5 deb5df5cb2ec17bdbae6ac6bbc3b1eef x265_3.5.tar.gz +# Locally generated +sha256 e70a3335cacacbba0b3a20ec6fecd6783932288ebc8163ad74bcc9606477cae8 x265_3.5.tar.gz +sha256 d8afb1bcc7a2cfc603683b168d6987ef0a48e59e0da3693bf55c5d33b67e2b49 COPYING diff --git a/package/x265/x265.mk b/package/x265/x265.mk new file mode 100644 index 00000000..bd5180b2 --- /dev/null +++ b/package/x265/x265.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# x265 +# +################################################################################ + +X265_VERSION = 3.5 +X265_SOURCE = x265_$(X265_VERSION).tar.gz +X265_SITE = https://bitbucket.org/multicoreware/x265_git/downloads +X265_LICENSE = GPL-2.0+ +X265_LICENSE_FILES = COPYING +X265_CPE_ID_VENDOR = multicorewareinc +X265_SUBDIR = source +X265_INSTALL_STAGING = YES + +# For CPUs before ARMv6, x265 does not consider them "ARM" but generic +# CPUs for which no optimized assembly is provided, hence we don't +# pass -DCROSS_COMPILE_ARM=1. +ifeq ($(BR2_ARM_CPU_ARMV6),y) +X265_CONF_OPTS += -DCROSS_COMPILE_ARM=1 +endif + +ifeq ($(BR2_ARM_CPU_ARMV7A),y) +X265_CONF_OPTS += -DCROSS_COMPILE_ARM=1 +ifeq ($(BR2_ARM_CPU_HAS_NEON),y) +X265_CONF_OPTS += -DCPU_HAS_NEON=1 +endif +endif + +ifeq ($(BR2_i386)$(BR2_x86_64),y) +X265_DEPENDENCIES += host-nasm +endif + +# disable altivec, it has build issues +# https://bitbucket.org/multicoreware/x265/issues/320/ +ifeq ($(BR2_powerpc64)$(BR2_powerpc64le),y) +X265_CONF_OPTS += -DENABLE_ALTIVEC=OFF +endif + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +X265_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_PIC=ON +else +X265_CONF_OPTS += -DENABLE_SHARED=OFF +endif + +ifeq ($(BR2_PACKAGE_X265_CLI),y) +X265_CONF_OPTS += -DENABLE_CLI=ON +else +X265_CONF_OPTS += -DENABLE_CLI=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/xapian/Config.in b/package/xapian/Config.in new file mode 100644 index 00000000..5d54ed3a --- /dev/null +++ b/package/xapian/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_XAPIAN + bool "xapian" + depends on BR2_USE_MMU # fork() + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_ZLIB + help + Xapian is an open Source search engine Library + It is a highly adaptable toolkit which allows developers + to easily add advanced indexing and search facilities to + their own applications. + It has built-in support for several families of weighting + models and supports a rich set of boolean query operators. + + https://xapian.org/ + +comment "xapian needs a toolchain w/ C++" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/xapian/xapian.hash b/package/xapian/xapian.hash new file mode 100644 index 00000000..16889b45 --- /dev/null +++ b/package/xapian/xapian.hash @@ -0,0 +1,5 @@ +# From https://lists.xapian.org/pipermail/xapian-discuss/2023-November/010009.html +sha256 eda5ae6dcf6b0553a8676af64b1fd304e998cd20f779031ccaaf7ab9a373531a xapian-core-1.4.24.tar.xz + +# locally computed +sha256 c38aee9e3c8c4d5d594ff548a1be05453023016d6286931f6512db215ec1fd42 COPYING diff --git a/package/xapian/xapian.mk b/package/xapian/xapian.mk new file mode 100644 index 00000000..33c36a5a --- /dev/null +++ b/package/xapian/xapian.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xapian +# +################################################################################ + +XAPIAN_VERSION = 1.4.24 +XAPIAN_SOURCE = xapian-core-$(XAPIAN_VERSION).tar.xz +XAPIAN_SITE = https://oligarchy.co.uk/xapian/$(XAPIAN_VERSION) +XAPIAN_LICENSE = GPL-2.0+ +XAPIAN_LICENSE_FILES = COPYING +XAPIAN_CPE_ID_VENDOR = xapian +XAPIAN_CPE_ID_PRODUCT = xapian-core +XAPIAN_INSTALL_STAGING = YES +XAPIAN_DEPENDENCIES = zlib + +$(eval $(autotools-package)) diff --git a/package/xavante/Config.in b/package/xavante/Config.in new file mode 100644 index 00000000..209ec2d2 --- /dev/null +++ b/package/xavante/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_XAVANTE + bool "xavante" + select BR2_PACKAGE_COPAS # runtime + select BR2_PACKAGE_LUAFILESYSTEM # runtime + select BR2_PACKAGE_LUASOCKET # runtime + help + Xavante is a Lua HTTP 1.1 Web server that uses a modular + architecture based on URI mapped handlers. Xavante currently + offers a file handler, a redirect handler and a WSAPI handler. + Those are used for general files, URI remapping and WSAPI + applications respectively. + + http://keplerproject.github.io/xavante diff --git a/package/xavante/xavante.hash b/package/xavante/xavante.hash new file mode 100644 index 00000000..842e2e32 --- /dev/null +++ b/package/xavante/xavante.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 67c738f981e7d65d18c717f3acac59a37f95d5139c00fb0de5d3167262025273 xavante-2.4.0-1.src.rock +sha256 57b2c50f08bf500c969fe13500f217adb36582e4d8e75c9e2ed04191cb4a045c xavante-2.4.0/doc/us/license.html diff --git a/package/xavante/xavante.mk b/package/xavante/xavante.mk new file mode 100644 index 00000000..d962e7bc --- /dev/null +++ b/package/xavante/xavante.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# xavante +# +################################################################################ + +XAVANTE_VERSION = 2.4.0-1 +XAVANTE_LICENSE = MIT +XAVANTE_LICENSE_FILES = $(XAVANTE_SUBDIR)/doc/us/license.html + +$(eval $(luarocks-package)) diff --git a/package/xdg-dbus-proxy/Config.in b/package/xdg-dbus-proxy/Config.in new file mode 100644 index 00000000..94c144fa --- /dev/null +++ b/package/xdg-dbus-proxy/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_XDG_DBUS_PROXY + bool "xdg-dbus-proxy" + depends on BR2_USE_WCHAR # libglib2 -> gettext + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + help + Filtering proxy for D-Bus connections. + + https://github.com/flatpak/xdg-dbus-proxy + +comment "xdg-dbus-proxy needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/xdg-dbus-proxy/xdg-dbus-proxy.hash b/package/xdg-dbus-proxy/xdg-dbus-proxy.hash new file mode 100644 index 00000000..f61a6a91 --- /dev/null +++ b/package/xdg-dbus-proxy/xdg-dbus-proxy.hash @@ -0,0 +1,5 @@ +# From https://github.com/flatpak/xdg-dbus-proxy/releases/tag/0.1.5 +sha256 061dcfaf8a0650e5fd9d5432dfe88bda749ea0d079dc136304bfecfbce0661fb xdg-dbus-proxy-0.1.5.tar.xz + +# Hash for license files: +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/xdg-dbus-proxy/xdg-dbus-proxy.mk b/package/xdg-dbus-proxy/xdg-dbus-proxy.mk new file mode 100644 index 00000000..2e8c0543 --- /dev/null +++ b/package/xdg-dbus-proxy/xdg-dbus-proxy.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# bubblewrap +# +################################################################################ + +XDG_DBUS_PROXY_VERSION = 0.1.5 +XDG_DBUS_PROXY_SITE = https://github.com/flatpak/xdg-dbus-proxy/releases/download/$(XDG_DBUS_PROXY_VERSION) +XDG_DBUS_PROXY_SOURCE = xdg-dbus-proxy-$(XDG_DBUS_PROXY_VERSION).tar.xz +XDG_DBUS_PROXY_DEPENDENCIES = host-pkgconf libglib2 + +XDG_DBUS_PROXY_LICENSE = LGPL-2.1+ +XDG_DBUS_PROXY_LICENSE_FILES = COPYING + +XDG_DBUS_PROXY_CONF_OPTS = -Dman=disabled -Dtests=false + +$(eval $(meson-package)) diff --git a/package/xdotool/Config.in b/package/xdotool/Config.in new file mode 100644 index 00000000..4fb8a495 --- /dev/null +++ b/package/xdotool/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_XDOTOOL + bool "xdotool" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBXTST + select BR2_PACKAGE_XLIB_LIBXINERAMA + select BR2_PACKAGE_LIBXKBCOMMON + select BR2_PACKAGE_XLIB_LIBX11 + help + Command-line X11 automation tool + + http://www.semicomplete.com/projects/xdotool diff --git a/package/xdotool/xdotool.hash b/package/xdotool/xdotool.hash new file mode 100644 index 00000000..549e807c --- /dev/null +++ b/package/xdotool/xdotool.hash @@ -0,0 +1,3 @@ +# locally computed hash +sha256 96f0facfde6d78eacad35b91b0f46fecd0b35e474c03e00e30da3fdd345f9ada xdotool-3.20211022.1.tar.gz +sha256 129d156c35b1cb19350f3716129173c8c89e019c0497d9df073db5b801becef2 COPYRIGHT diff --git a/package/xdotool/xdotool.mk b/package/xdotool/xdotool.mk new file mode 100644 index 00000000..c430a49d --- /dev/null +++ b/package/xdotool/xdotool.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# xdotool +# +################################################################################ + +XDOTOOL_VERSION = 3.20211022.1 +XDOTOOL_SITE = https://github.com/jordansissel/xdotool/releases/download/v$(XDOTOOL_VERSION) +XDOTOOL_LICENSE = BSD-3-Clause +XDOTOOL_LICENSE_FILES = COPYRIGHT +XDOTOOL_DEPENDENCIES = xlib_libXtst xlib_libXinerama libxkbcommon xlib_libX11 + +define XDOTOOL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +# Avoid 'install' target to skip 'post-install' which runs ldconfig on host +define XDOTOOL_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + pre-install installlib installprog installheader \ + PREFIX="$(TARGET_DIR)/usr" +endef + +$(eval $(generic-package)) diff --git a/package/xen/0001-9pfs-include-linux-limits.h-for-XATTR_SIZE_MAX.patch b/package/xen/0001-9pfs-include-linux-limits.h-for-XATTR_SIZE_MAX.patch new file mode 100644 index 00000000..b681b941 --- /dev/null +++ b/package/xen/0001-9pfs-include-linux-limits.h-for-XATTR_SIZE_MAX.patch @@ -0,0 +1,43 @@ +Message-Id: <07010a2ad79559c412949f0005dbe3cb03d8416e.1498504812.git.ps@pks.im> +From: Patrick Steinhardt +Date: Mon, 26 Jun 2017 21:20:45 +0200 +Subject: [PATCH] 9pfs: include for XATTR_SIZE_MAX + +The function `v9fs_xattrcreate` makes use of the define `XATTR_SIZE_MAX` +to reject attempts of creating xattrs with an invalid size, which is +defined in . On glibc-based systems, this header is +indirectly included via , , +, but on other platforms this is not guaranteed due +to not being part of the POSIX standard. One examples are systems based +on musl libc, which do not include the indirectly, +which leads to `XATTR_SIZE_MAX` being undefined. + +Fix this error by directly include . As the 9P fs code +is being Linux-based either way, we can simply do so without breaking +other platforms. This enables building 9pfs on musl-based systems. + +Signed-off-by: Patrick Steinhardt +[ Changes by AF + - Apply to the QEMU tree inside of Xen +] +Signed-off-by: Alistair Francis +--- +Upstream Status: Pending review and acceptance + + tools/qemu-xen/hw/9pfs/9p.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tools/qemu-xen/hw/9pfs/9p.c b/tools/qemu-xen/hw/9pfs/9p.c +index 96d2683348..48cd558e96 100644 +--- a/tools/qemu-xen/hw/9pfs/9p.c ++++ b/tools/qemu-xen/hw/9pfs/9p.c +@@ -13,6 +13,7 @@ + + #include "qemu/osdep.h" + #include ++#include + #include "hw/virtio/virtio.h" + #include "qapi/error.h" + #include "qemu/error-report.h" +-- +2.13.2 diff --git a/package/xen/0002-Fix-build-with-64-bits-time_t.patch b/package/xen/0002-Fix-build-with-64-bits-time_t.patch new file mode 100644 index 00000000..8559aece --- /dev/null +++ b/package/xen/0002-Fix-build-with-64-bits-time_t.patch @@ -0,0 +1,95 @@ +From f7a6df5f5bf3acc219352a1b25573ae2082d7e42 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 3 Dec 2020 20:58:19 +0100 +Subject: [PATCH] Fix build with 64 bits time_t + +time element is deprecated on new input_event structure in kernel's +input.h [1] + +This will avoid the following build failure: + +hw/input/virtio-input-host.c: In function 'virtio_input_host_handle_status': +hw/input/virtio-input-host.c:198:28: error: 'struct input_event' has no member named 'time' + 198 | if (gettimeofday(&evdev.time, NULL)) { + | ^ + +Fixes: + - http://autobuild.buildroot.org/results/a538167e288c14208d557cd45446df86d3d599d5 + - http://autobuild.buildroot.org/results/efd4474fb4b6c0ce0ab3838ce130429c51e43bbb + +[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f + +Signed-off-by: Fabrice Fontaine +Message-Id: <20201203195819.583626-1-fontaine.fabrice@gmail.com> +Fixes: https://gitlab.com/qemu-project/qemu/-/issues/246 +Reviewed-by: Michael S. Tsirkin +Signed-off-by: Michael S. Tsirkin + +[Retrieved (and updated for qemu-xen) from: +https://github.com/qemu/qemu/commit/f7a6df5f5bf3acc219352a1b25573ae2082d7e42] +Signed-off-by: Fabrice Fontaine +--- + contrib/vhost-user-input/main.c | 8 ++++++-- + hw/input/virtio-input-host.c | 5 ++++- + 2 files changed, 10 insertions(+), 3 deletions(-) + +diff --git a/tools/qemu-xen/contrib/vhost-user-input/main.c b/tools/qemu-xen/contrib/vhost-user-input/main.c +index c15d18c33f0c..081230da548a 100644 +--- a/tools/qemu-xen/contrib/vhost-user-input/main.c ++++ b/tools/qemu-xen/contrib/vhost-user-input/main.c +@@ -6,13 +6,14 @@ + #include "qemu/osdep.h" + + #include +-#include ++#include + + #include "qemu/iov.h" + #include "qemu/bswap.h" + #include "qemu/sockets.h" + #include "contrib/libvhost-user/libvhost-user.h" + #include "contrib/libvhost-user/libvhost-user-glib.h" ++#include "standard-headers/linux/input.h" + #include "standard-headers/linux/virtio_input.h" + #include "qapi/error.h" + +@@ -113,13 +114,16 @@ vi_evdev_watch(VuDev *dev, int condition, void *data) + static void vi_handle_status(VuInput *vi, virtio_input_event *event) + { + struct input_event evdev; ++ struct timeval tval; + int rc; + +- if (gettimeofday(&evdev.time, NULL)) { ++ if (gettimeofday(&tval, NULL)) { + perror("vi_handle_status: gettimeofday"); + return; + } + ++ evdev.input_event_sec = tval.tv_sec; ++ evdev.input_event_usec = tval.tv_usec; + evdev.type = le16toh(event->type); + evdev.code = le16toh(event->code); + evdev.value = le32toh(event->value); +diff --git a/tools/qemu-xen/hw/input/virtio-input-host.c b/tools/qemu-xen/hw/input/virtio-input-host.c +index 85daf73f1a80..137efba57b0f 100644 +--- a/tools/qemu-xen/hw/input/virtio-input-host.c ++++ b/tools/qemu-xen/hw/input/virtio-input-host.c +@@ -193,13 +193,16 @@ static void virtio_input_host_handle_status(VirtIOInput *vinput, + { + VirtIOInputHost *vih = VIRTIO_INPUT_HOST(vinput); + struct input_event evdev; ++ struct timeval tval; + int rc; + +- if (gettimeofday(&evdev.time, NULL)) { ++ if (gettimeofday(&tval, NULL)) { + perror("virtio_input_host_handle_status: gettimeofday"); + return; + } + ++ evdev.input_event_sec = tval.tv_sec; ++ evdev.input_event_usec = tval.tv_usec; + evdev.type = le16_to_cpu(event->type); + evdev.code = le16_to_cpu(event->code); + evdev.value = le32_to_cpu(event->value); diff --git a/package/xen/0003-libs-light-fix-tv_sec-printf-format.patch b/package/xen/0003-libs-light-fix-tv_sec-printf-format.patch new file mode 100644 index 00000000..fffc8d73 --- /dev/null +++ b/package/xen/0003-libs-light-fix-tv_sec-printf-format.patch @@ -0,0 +1,63 @@ +From a8ac01aa3e3ea5e6a9a1620aa8fa7e9da3458120 Mon Sep 17 00:00:00 2001 +From: Manuel Bouyer +Date: Tue, 26 Jan 2021 23:47:55 +0100 +Subject: [PATCH] libs/light: fix tv_sec printf format +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Don't assume tv_sec is a unsigned long, it is 64 bits on NetBSD 32 bits. +Use %jd and cast to (intmax_t) instead + +Signed-off-by: Manuel Bouyer +Reviewed-by: Roger Pau Monné +[Retrieved (and backported) from: +https://gitlab.com/xen-project/xen/-/commit/a8ac01aa3e3ea5e6a9a1620aa8fa7e9da3458120] +Signed-off-by: Fabrice Fontaine +--- + tools/libs/light/libxl_create.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c +index 8616113e72..9848d65f36 100644 +--- a/tools/libxl/libxl_create.c ++++ b/tools/libxl/libxl_create.c +@@ -496,7 +496,7 @@ int libxl__domain_build(libxl__gc *gc, + vments[2] = "image/ostype"; + vments[3] = "hvm"; + vments[4] = "start_time"; +- vments[5] = GCSPRINTF("%lu.%02d", start_time.tv_sec,(int)start_time.tv_usec/10000); ++ vments[5] = GCSPRINTF("%jd.%02d", (intmax_t)start_time.tv_sec,(int)start_time.tv_usec/10000); + + localents = libxl__calloc(gc, 13, sizeof(char *)); + i = 0; +@@ -535,7 +535,7 @@ int libxl__domain_build(libxl__gc *gc, + vments[i++] = "image/kernel"; + vments[i++] = (char *) state->pv_kernel.path; + vments[i++] = "start_time"; +- vments[i++] = GCSPRINTF("%lu.%02d", start_time.tv_sec,(int)start_time.tv_usec/10000); ++ vments[i++] = GCSPRINTF("%jd.%02d", (intmax_t)start_time.tv_sec,(int)start_time.tv_usec/10000); + if (state->pv_ramdisk.path) { + vments[i++] = "image/ramdisk"; + vments[i++] = (char *) state->pv_ramdisk.path; +@@ -1502,7 +1502,7 @@ static void domcreate_stream_done(libxl__egc *egc, + vments[2] = "image/ostype"; + vments[3] = "hvm"; + vments[4] = "start_time"; +- vments[5] = GCSPRINTF("%lu.%02d", start_time.tv_sec,(int)start_time.tv_usec/10000); ++ vments[5] = GCSPRINTF("%jd.%02d", (intmax_t)start_time.tv_sec,(int)start_time.tv_usec/10000); + break; + case LIBXL_DOMAIN_TYPE_PV: + vments = libxl__calloc(gc, 11, sizeof(char *)); +@@ -1512,7 +1512,7 @@ static void domcreate_stream_done(libxl__egc *egc, + vments[i++] = "image/kernel"; + vments[i++] = (char *) state->pv_kernel.path; + vments[i++] = "start_time"; +- vments[i++] = GCSPRINTF("%lu.%02d", start_time.tv_sec,(int)start_time.tv_usec/10000); ++ vments[i++] = GCSPRINTF("%jd.%02d", (intmax_t)start_time.tv_sec,(int)start_time.tv_usec/10000); + if (state->pv_ramdisk.path) { + vments[i++] = "image/ramdisk"; + vments[i++] = (char *) state->pv_ramdisk.path; +-- +GitLab + diff --git a/package/xen/0004-libs-light-fix-tv_sec-fprintf-format.patch b/package/xen/0004-libs-light-fix-tv_sec-fprintf-format.patch new file mode 100644 index 00000000..d677dce4 --- /dev/null +++ b/package/xen/0004-libs-light-fix-tv_sec-fprintf-format.patch @@ -0,0 +1,30 @@ +From 4881285bcfd8f2e2c913c6e9f011b1e90652f414 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 28 Aug 2021 11:00:07 +0200 +Subject: [PATCH] libs/light: fix tv_sec fprintf format + +Don't assume tv_sec is a unsigned long, it is 64 bits on NetBSD 32 bits. +Use %jd and cast to (intmax_t) instead + +Signed-off-by: Fabrice Fontaine +[Upstream status: sent to xen-devel@lists.xenproject.org] +--- + tools/libs/light/libxl_domain.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tools/libxl/libxl_domain.c b/tools/libxl/libxl_domain.c +index c00c36c928..51a6127552 100644 +--- a/tools/libxl/libxl_domain.c ++++ b/tools/libxl/libxl_domain.c +@@ -1444,7 +1444,7 @@ static int libxl__mark_domid_recent(libxl__gc *gc, uint32_t domid) + } + } + +- r = fprintf(nf, "%lu %u\n", ctxt.ts.tv_sec, domid); ++ r = fprintf(nf, "%jd %u\n", (intmax_t)ctxt.ts.tv_sec, domid); + if (r < 0) { + LOGED(ERROR, domid, "failed to write to '%s'", new); + goto out; +-- +2.32.0 + diff --git a/package/xen/Config.in b/package/xen/Config.in new file mode 100644 index 00000000..af6acd35 --- /dev/null +++ b/package/xen/Config.in @@ -0,0 +1,43 @@ +config BR2_PACKAGE_XEN + bool "xen" + # needs "dmb" on ARM, so ARM >= v7 + depends on BR2_ARM_CPU_ARMV7A || BR2_aarch64 + select BR2_PACKAGE_XEN_HYPERVISOR if !BR2_PACKAGE_XEN_TOOLS + help + This package builds the Xen hypervisor and toolstack. + + http://www.xenproject.org/ + +if BR2_PACKAGE_XEN + +config BR2_PACKAGE_XEN_HYPERVISOR + bool "Xen hypervisor" + help + The Xen binaries are avaliable in /usr/lib/xen/ See + http://wiki.xenproject.org/wiki/Getting_Started for using + the Xen hypervisor. + +config BR2_PACKAGE_XEN_TOOLS + bool "Xen tools" + depends on !BR2_STATIC_LIBS # dtc (libfdt) + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_WCHAR # libglib2 + select BR2_PACKAGE_DTC + select BR2_PACKAGE_LIBAIO + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_PIXMAN + select BR2_PACKAGE_SLIRP + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_YAJL + select BR2_PACKAGE_ARGP_STANDALONE if !BR2_TOOLCHAIN_USES_GLIBC + help + The Xen tools can be accessed by the xl command. + +comment "xen tools need a toolchain w/ wchar, threads, dynamic library" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS + +endif diff --git a/package/xen/xen.hash b/package/xen/xen.hash new file mode 100644 index 00000000..d2350ac5 --- /dev/null +++ b/package/xen/xen.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 7917681bc6e744789815131fcf7799e6b83a0d45b5801ac654322b037ce472f8 xen-4.14.6.tar.gz +sha256 ecca9538e9d3f7e3c2bff827502f4495e2ef9e22c451298696ea08886b176c2c COPYING diff --git a/package/xen/xen.mk b/package/xen/xen.mk new file mode 100644 index 00000000..80412cca --- /dev/null +++ b/package/xen/xen.mk @@ -0,0 +1,66 @@ +################################################################################ +# +# Xen +# +################################################################################ + +XEN_VERSION = 4.14.6 +XEN_SITE = https://downloads.xenproject.org/release/xen/$(XEN_VERSION) +XEN_SELINUX_MODULES = systemd udev xen +XEN_LICENSE = GPL-2.0 +XEN_LICENSE_FILES = COPYING +XEN_CPE_ID_VENDOR = xen +XEN_CPE_ID_PREFIX = cpe:2.3:o +XEN_DEPENDENCIES = host-acpica host-python3 + +# Calculate XEN_ARCH +ifeq ($(ARCH),aarch64) +XEN_ARCH = arm64 +else ifeq ($(ARCH),arm) +XEN_ARCH = arm32 +endif + +XEN_CONF_OPTS = \ + --disable-golang \ + --disable-ocamltools \ + --with-initddir=/etc/init.d + +XEN_CONF_ENV = PYTHON=$(HOST_DIR)/bin/python3 +XEN_MAKE_ENV = \ + XEN_TARGET_ARCH=$(XEN_ARCH) \ + CROSS_COMPILE=$(TARGET_CROSS) \ + HOST_EXTRACFLAGS="-Wno-error" \ + XEN_HAS_CHECKPOLICY=n \ + $(TARGET_CONFIGURE_OPTS) + +ifeq ($(BR2_PACKAGE_XEN_HYPERVISOR),y) +XEN_MAKE_OPTS += dist-xen +XEN_INSTALL_IMAGES = YES +define XEN_INSTALL_IMAGES_CMDS + cp $(@D)/xen/xen $(BINARIES_DIR) +endef +else +XEN_CONF_OPTS += --disable-xen +endif + +ifeq ($(BR2_PACKAGE_XEN_TOOLS),y) +XEN_DEPENDENCIES += \ + dtc libaio libglib2 ncurses openssl pixman slirp util-linux yajl +ifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y) +XEN_DEPENDENCIES += argp-standalone +endif +XEN_INSTALL_TARGET_OPTS += DESTDIR=$(TARGET_DIR) install-tools +XEN_MAKE_OPTS += dist-tools +XEN_CONF_OPTS += --with-extra-qemuu-configure-args="--disable-sdl --disable-opengl" + +define XEN_INSTALL_INIT_SYSV + mv $(TARGET_DIR)/etc/init.d/xencommons $(TARGET_DIR)/etc/init.d/S50xencommons + mv $(TARGET_DIR)/etc/init.d/xen-watchdog $(TARGET_DIR)/etc/init.d/S50xen-watchdog + mv $(TARGET_DIR)/etc/init.d/xendomains $(TARGET_DIR)/etc/init.d/S60xendomains +endef +else +XEN_INSTALL_TARGET = NO +XEN_CONF_OPTS += --disable-tools +endif + +$(eval $(autotools-package)) diff --git a/package/xenomai/3.0.10/0001-lib-boilerplate-iniparser-Allow-building-with-GCC-10-2-2020101.patch b/package/xenomai/3.0.10/0001-lib-boilerplate-iniparser-Allow-building-with-GCC-10-2-2020101.patch new file mode 100644 index 00000000..e4addea8 --- /dev/null +++ b/package/xenomai/3.0.10/0001-lib-boilerplate-iniparser-Allow-building-with-GCC-10-2-2020101.patch @@ -0,0 +1,1721 @@ +From 8acdbd718b7828b5d8903a6254b2fa198b866491 Mon Sep 17 00:00:00 2001 +From: Florian Bezdeka +Date: Thu, 12 Nov 2020 11:45:28 +0000 +Subject: [PATCH] lib/boilerplate/iniparser: Allow building with GCC 10.2 + 2020101 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Updating to upstream revision f858275f7f307eecba84c2f5429483f9f28007f8. +Upstream repository is located at [1]. + +The reason for updating was the following compiler error when trying +to compile with GCC 10.2 10.2.1 20201016. As it turned out the problem +was already addressed upstream: + +iniparser/iniparser.c: In function ‘iniparser_load’: +iniparser/iniparser.c:616:13: error: ‘sprintf’ arguments 3, 4 may +overlap destination object ‘buf’ [-Werror=restrict] + 616 | sprintf(tmp, "%s:%s", section, key); + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +I reviewed especially the API changes. Most of them are cleanups only +but two things should be pointed out: + + - The type of the size field of struct _dictionary_ changed from int + to ssize_t. The only user of this struct is + lib/analogy/calibration.c which uses this structure for internal + things only. It is never exposed to any public API so updating is + OK and fully backward compatible. + + - dictionary_new changed its signature + from dictionary_new(int size) + to dictionary_new(size_t size). + This function is not part of any public API. So updating does not + break backward compatibility. + +[1] https://github.com/ndevilla/iniparser + +Signed-off-by: Florian Bezdeka +Signed-off-by: Jan Kiszka + +[Retrieved from: +https://gitlab.denx.de/Xenomai/xenomai/-/commit/8acdbd718b7828b5d8903a6254b2fa198b866491] +Signed-off-by: Fabrice Fontaine +--- + lib/boilerplate/iniparser/dictionary.c | 409 ++++++++++---------- + lib/boilerplate/iniparser/dictionary.h | 43 ++- + lib/boilerplate/iniparser/iniparser.c | 491 +++++++++++++++++-------- + lib/boilerplate/iniparser/iniparser.h | 131 +++++-- + 4 files changed, 646 insertions(+), 428 deletions(-) + +diff --git a/lib/boilerplate/iniparser/dictionary.c b/lib/boilerplate/iniparser/dictionary.c +index 5299b77ed..cb7ccd49e 100644 +--- a/lib/boilerplate/iniparser/dictionary.c ++++ b/lib/boilerplate/iniparser/dictionary.c +@@ -1,10 +1,8 @@ + /*-------------------------------------------------------------------------*/ + /** +- @file dictionary.c +- @author N. Devillard +- @date Sep 2007 +- @version $Revision: 1.27 $ +- @brief Implements a dictionary for string variables. ++ @file dictionary.c ++ @author N. Devillard ++ @brief Implements a dictionary for string variables. + + This module implements a simple dictionary object, i.e. a list + of string/string associations. This object is useful to store e.g. +@@ -12,12 +10,8 @@ + */ + /*--------------------------------------------------------------------------*/ + +-/* +- $Id: dictionary.c,v 1.27 2007-11-23 21:39:18 ndevilla Exp $ +- $Revision: 1.27 $ +-*/ + /*--------------------------------------------------------------------------- +- Includes ++ Includes + ---------------------------------------------------------------------------*/ + #include "dictionary.h" + +@@ -27,33 +21,18 @@ + #include + + /** Maximum value size for integers and doubles. */ +-#define MAXVALSZ 1024 ++#define MAXVALSZ 1024 + + /** Minimal allocated number of entries in a dictionary */ +-#define DICTMINSZ 128 ++#define DICTMINSZ 128 + + /** Invalid key token */ + #define DICT_INVALID_KEY ((char*)-1) + + /*--------------------------------------------------------------------------- +- Private functions ++ Private functions + ---------------------------------------------------------------------------*/ + +-/* Doubles the allocated size associated to a pointer */ +-/* 'size' is the current allocated size. */ +-static void * mem_double(void * ptr, int size) +-{ +- void * newptr ; +- +- newptr = calloc(2*size, 1); +- if (newptr==NULL) { +- return NULL ; +- } +- memcpy(newptr, ptr, size); +- free(ptr); +- return newptr ; +-} +- + /*-------------------------------------------------------------------------*/ + /** + @brief Duplicate a string +@@ -67,23 +46,68 @@ static void * mem_double(void * ptr, int size) + static char * xstrdup(const char * s) + { + char * t ; ++ size_t len ; + if (!s) + return NULL ; +- t = malloc(strlen(s)+1) ; ++ ++ len = strlen(s) + 1 ; ++ t = (char*) malloc(len) ; + if (t) { +- strcpy(t,s); ++ memcpy(t, s, len) ; + } + return t ; + } + ++/*-------------------------------------------------------------------------*/ ++/** ++ @brief Double the size of the dictionary ++ @param d Dictionary to grow ++ @return This function returns non-zero in case of failure ++ */ ++/*--------------------------------------------------------------------------*/ ++static int dictionary_grow(dictionary * d) ++{ ++ char ** new_val ; ++ char ** new_key ; ++ unsigned * new_hash ; ++ ++ new_val = (char**) calloc(d->size * 2, sizeof *d->val); ++ new_key = (char**) calloc(d->size * 2, sizeof *d->key); ++ new_hash = (unsigned*) calloc(d->size * 2, sizeof *d->hash); ++ if (!new_val || !new_key || !new_hash) { ++ /* An allocation failed, leave the dictionary unchanged */ ++ if (new_val) ++ free(new_val); ++ if (new_key) ++ free(new_key); ++ if (new_hash) ++ free(new_hash); ++ return -1 ; ++ } ++ /* Initialize the newly allocated space */ ++ memcpy(new_val, d->val, d->size * sizeof(char *)); ++ memcpy(new_key, d->key, d->size * sizeof(char *)); ++ memcpy(new_hash, d->hash, d->size * sizeof(unsigned)); ++ /* Delete previous data */ ++ free(d->val); ++ free(d->key); ++ free(d->hash); ++ /* Actually update the dictionary */ ++ d->size *= 2 ; ++ d->val = new_val; ++ d->key = new_key; ++ d->hash = new_hash; ++ return 0 ; ++} ++ + /*--------------------------------------------------------------------------- +- Function codes ++ Function codes + ---------------------------------------------------------------------------*/ + /*-------------------------------------------------------------------------*/ + /** +- @brief Compute the hash key for a string. +- @param key Character string to use for key. +- @return 1 unsigned int on at least 32 bits. ++ @brief Compute the hash key for a string. ++ @param key Character string to use for key. ++ @return 1 unsigned int on at least 32 bits. + + This hash function has been taken from an Article in Dr Dobbs Journal. + This is normally a collision-free function, distributing keys evenly. +@@ -93,84 +117,88 @@ static char * xstrdup(const char * s) + /*--------------------------------------------------------------------------*/ + unsigned dictionary_hash(const char * key) + { +- int len ; +- unsigned hash ; +- int i ; +- +- len = strlen(key); +- for (hash=0, i=0 ; i>6) ; +- } +- hash += (hash <<3); +- hash ^= (hash >>11); +- hash += (hash <<15); +- return hash ; ++ size_t len ; ++ unsigned hash ; ++ size_t i ; ++ ++ if (!key) ++ return 0 ; ++ ++ len = strlen(key); ++ for (hash=0, i=0 ; i>6) ; ++ } ++ hash += (hash <<3); ++ hash ^= (hash >>11); ++ hash += (hash <<15); ++ return hash ; + } + + /*-------------------------------------------------------------------------*/ + /** +- @brief Create a new dictionary object. +- @param size Optional initial size of the dictionary. +- @return 1 newly allocated dictionary objet. ++ @brief Create a new dictionary object. ++ @param size Optional initial size of the dictionary. ++ @return 1 newly allocated dictionary objet. + + This function allocates a new dictionary object of given size and returns + it. If you do not know in advance (roughly) the number of entries in the + dictionary, give size=0. + */ +-/*--------------------------------------------------------------------------*/ +-dictionary * dictionary_new(int size) ++/*-------------------------------------------------------------------------*/ ++dictionary * dictionary_new(size_t size) + { +- dictionary * d ; +- +- /* If no size was specified, allocate space for DICTMINSZ */ +- if (sizesize = size ; +- d->val = (char **)calloc(size, sizeof(char*)); +- d->key = (char **)calloc(size, sizeof(char*)); +- d->hash = (unsigned int *)calloc(size, sizeof(unsigned)); +- return d ; ++ dictionary * d ; ++ ++ /* If no size was specified, allocate space for DICTMINSZ */ ++ if (sizesize = size ; ++ d->val = (char**) calloc(size, sizeof *d->val); ++ d->key = (char**) calloc(size, sizeof *d->key); ++ d->hash = (unsigned*) calloc(size, sizeof *d->hash); ++ } ++ return d ; + } + + /*-------------------------------------------------------------------------*/ + /** +- @brief Delete a dictionary object +- @param d dictionary object to deallocate. +- @return void ++ @brief Delete a dictionary object ++ @param d dictionary object to deallocate. ++ @return void + + Deallocate a dictionary object and all memory associated to it. + */ + /*--------------------------------------------------------------------------*/ + void dictionary_del(dictionary * d) + { +- int i ; +- +- if (d==NULL) return ; +- for (i=0 ; isize ; i++) { +- if (d->key[i]!=NULL) +- free(d->key[i]); +- if (d->val[i]!=NULL) +- free(d->val[i]); +- } +- free(d->val); +- free(d->key); +- free(d->hash); +- free(d); +- return ; ++ ssize_t i ; ++ ++ if (d==NULL) return ; ++ for (i=0 ; isize ; i++) { ++ if (d->key[i]!=NULL) ++ free(d->key[i]); ++ if (d->val[i]!=NULL) ++ free(d->val[i]); ++ } ++ free(d->val); ++ free(d->key); ++ free(d->hash); ++ free(d); ++ return ; + } + + /*-------------------------------------------------------------------------*/ + /** +- @brief Get a value from a dictionary. +- @param d dictionary object to search. +- @param key Key to look for in the dictionary. ++ @brief Get a value from a dictionary. ++ @param d dictionary object to search. ++ @param key Key to look for in the dictionary. + @param def Default value to return if key not found. +- @return 1 pointer to internally allocated character string. ++ @return 1 pointer to internally allocated character string. + + This function locates a key in a dictionary and returns a pointer to its + value, or the passed 'def' pointer if no such key can be found in +@@ -178,24 +206,24 @@ void dictionary_del(dictionary * d) + dictionary object, you should not try to free it or modify it. + */ + /*--------------------------------------------------------------------------*/ +-const char * dictionary_get(dictionary * d, const char * key, const char * def) ++const char * dictionary_get(const dictionary * d, const char * key, const char * def) + { +- unsigned hash ; +- int i ; ++ unsigned hash ; ++ ssize_t i ; + +- hash = dictionary_hash(key); +- for (i=0 ; isize ; i++) { ++ hash = dictionary_hash(key); ++ for (i=0 ; isize ; i++) { + if (d->key[i]==NULL) + continue ; + /* Compare hash */ +- if (hash==d->hash[i]) { ++ if (hash==d->hash[i]) { + /* Compare string, to avoid hash collisions */ + if (!strcmp(key, d->key[i])) { +- return d->val[i] ; +- } +- } +- } +- return def ; ++ return d->val[i] ; ++ } ++ } ++ } ++ return def ; + } + + /*-------------------------------------------------------------------------*/ +@@ -226,66 +254,57 @@ const char * dictionary_get(dictionary * d, const char * key, const char * def) + /*--------------------------------------------------------------------------*/ + int dictionary_set(dictionary * d, const char * key, const char * val) + { +- int i ; +- unsigned hash ; +- +- if (d==NULL || key==NULL) return -1 ; +- +- /* Compute hash for this key */ +- hash = dictionary_hash(key) ; +- /* Find if value is already in dictionary */ +- if (d->n>0) { +- for (i=0 ; isize ; i++) { ++ ssize_t i ; ++ unsigned hash ; ++ ++ if (d==NULL || key==NULL) return -1 ; ++ ++ /* Compute hash for this key */ ++ hash = dictionary_hash(key) ; ++ /* Find if value is already in dictionary */ ++ if (d->n>0) { ++ for (i=0 ; isize ; i++) { + if (d->key[i]==NULL) + continue ; +- if (hash==d->hash[i]) { /* Same hash value */ +- if (!strcmp(key, d->key[i])) { /* Same key */ +- /* Found a value: modify and return */ +- if (d->val[i]!=NULL) +- free(d->val[i]); +- d->val[i] = val ? xstrdup(val) : NULL ; ++ if (hash==d->hash[i]) { /* Same hash value */ ++ if (!strcmp(key, d->key[i])) { /* Same key */ ++ /* Found a value: modify and return */ ++ if (d->val[i]!=NULL) ++ free(d->val[i]); ++ d->val[i] = (val ? xstrdup(val) : NULL); + /* Value has been modified: return */ +- return 0 ; +- } +- } +- } +- } +- /* Add a new value */ +- /* See if dictionary needs to grow */ +- if (d->n==d->size) { +- +- /* Reached maximum size: reallocate dictionary */ +- d->val = (char **)mem_double(d->val, d->size * sizeof(char*)) ; +- d->key = (char **)mem_double(d->key, d->size * sizeof(char*)) ; +- d->hash = (unsigned int *)mem_double(d->hash, d->size * sizeof(unsigned)) ; +- if ((d->val==NULL) || (d->key==NULL) || (d->hash==NULL)) { +- /* Cannot grow dictionary */ +- return -1 ; ++ return 0 ; ++ } ++ } + } +- /* Double size */ +- d->size *= 2 ; +- } ++ } ++ /* Add a new value */ ++ /* See if dictionary needs to grow */ ++ if (d->n==d->size) { ++ /* Reached maximum size: reallocate dictionary */ ++ if (dictionary_grow(d) != 0) ++ return -1; ++ } + +- /* Insert key in the first empty slot */ +- for (i=0 ; isize ; i++) { +- if (d->key[i]==NULL) { +- /* Add key here */ +- break ; +- } ++ /* Insert key in the first empty slot. Start at d->n and wrap at ++ d->size. Because d->n < d->size this will necessarily ++ terminate. */ ++ for (i=d->n ; d->key[i] ; ) { ++ if(++i == d->size) i = 0; + } +- /* Copy key */ +- d->key[i] = xstrdup(key); +- d->val[i] = val ? xstrdup(val) : NULL ; +- d->hash[i] = hash; +- d->n ++ ; +- return 0 ; ++ /* Copy key */ ++ d->key[i] = xstrdup(key); ++ d->val[i] = (val ? xstrdup(val) : NULL) ; ++ d->hash[i] = hash; ++ d->n ++ ; ++ return 0 ; + } + + /*-------------------------------------------------------------------------*/ + /** +- @brief Delete a key in a dictionary +- @param d dictionary object to modify. +- @param key Key to remove. ++ @brief Delete a key in a dictionary ++ @param d dictionary object to modify. ++ @param key Key to remove. + @return void + + This function deletes a key in a dictionary. Nothing is done if the +@@ -294,26 +313,26 @@ int dictionary_set(dictionary * d, const char * key, const char * val) + /*--------------------------------------------------------------------------*/ + void dictionary_unset(dictionary * d, const char * key) + { +- unsigned hash ; +- int i ; ++ unsigned hash ; ++ ssize_t i ; + +- if (key == NULL) { +- return; +- } ++ if (key == NULL || d == NULL) { ++ return; ++ } + +- hash = dictionary_hash(key); +- for (i=0 ; isize ; i++) { ++ hash = dictionary_hash(key); ++ for (i=0 ; isize ; i++) { + if (d->key[i]==NULL) + continue ; + /* Compare hash */ +- if (hash==d->hash[i]) { ++ if (hash==d->hash[i]) { + /* Compare string, to avoid hash collisions */ + if (!strcmp(key, d->key[i])) { + /* Found key */ + break ; +- } +- } +- } ++ } ++ } ++ } + if (i>=d->size) + /* Key not found */ + return ; +@@ -331,75 +350,31 @@ void dictionary_unset(dictionary * d, const char * key) + + /*-------------------------------------------------------------------------*/ + /** +- @brief Dump a dictionary to an opened file pointer. +- @param d Dictionary to dump +- @param out Opened file pointer. +- @return void ++ @brief Dump a dictionary to an opened file pointer. ++ @param d Dictionary to dump ++ @param f Opened file pointer. ++ @return void + + Dumps a dictionary onto an opened file pointer. Key pairs are printed out + as @c [Key]=[Value], one per line. It is Ok to provide stdout or stderr as + output file pointers. + */ + /*--------------------------------------------------------------------------*/ +-void dictionary_dump(dictionary * d, FILE * out) ++void dictionary_dump(const dictionary * d, FILE * out) + { +- int i ; +- +- if (d==NULL || out==NULL) return ; +- if (d->n<1) { +- fprintf(out, "empty dictionary\n"); +- return ; +- } +- for (i=0 ; isize ; i++) { ++ ssize_t i ; ++ ++ if (d==NULL || out==NULL) return ; ++ if (d->n<1) { ++ fprintf(out, "empty dictionary\n"); ++ return ; ++ } ++ for (i=0 ; isize ; i++) { + if (d->key[i]) { + fprintf(out, "%20s\t[%s]\n", + d->key[i], + d->val[i] ? d->val[i] : "UNDEF"); + } +- } +- return ; +-} +- +- +-/* Test code */ +-#ifdef TESTDIC +-#define NVALS 20000 +-int main(int argc, char *argv[]) +-{ +- dictionary * d ; +- char * val ; +- int i ; +- char cval[90] ; +- +- /* Allocate dictionary */ +- printf("allocating...\n"); +- d = dictionary_new(0); +- +- /* Set values in dictionary */ +- printf("setting %d values...\n", NVALS); +- for (i=0 ; in != 0) { +- printf("error deleting values\n"); + } +- printf("deallocating...\n"); +- dictionary_del(d); +- return 0 ; ++ return ; + } +-#endif +-/* vim: set ts=4 et sw=4 tw=75 */ +diff --git a/lib/boilerplate/iniparser/dictionary.h b/lib/boilerplate/iniparser/dictionary.h +index fa4dcb727..d04b6ce71 100644 +--- a/lib/boilerplate/iniparser/dictionary.h ++++ b/lib/boilerplate/iniparser/dictionary.h +@@ -3,8 +3,6 @@ + /** + @file dictionary.h + @author N. Devillard +- @date Sep 2007 +- @version $Revision: 1.12 $ + @brief Implements a dictionary for string variables. + + This module implements a simple dictionary object, i.e. a list +@@ -13,18 +11,11 @@ + */ + /*--------------------------------------------------------------------------*/ + +-/* +- $Id: dictionary.h,v 1.12 2007-11-23 21:37:00 ndevilla Exp $ +- $Author: ndevilla $ +- $Date: 2007-11-23 21:37:00 $ +- $Revision: 1.12 $ +-*/ +- + #ifndef _DICTIONARY_H_ + #define _DICTIONARY_H_ + + /*--------------------------------------------------------------------------- +- Includes ++ Includes + ---------------------------------------------------------------------------*/ + + #include +@@ -32,14 +23,18 @@ + #include + #include + ++#ifdef __cplusplus ++extern "C" { ++#endif ++ + /*--------------------------------------------------------------------------- +- New types ++ New types + ---------------------------------------------------------------------------*/ + + + /*-------------------------------------------------------------------------*/ + /** +- @brief Dictionary object ++ @brief Dictionary object + + This object contains a list of string/string associations. Each + association is identified by a unique string key. Looking up values +@@ -48,16 +43,16 @@ + */ + /*-------------------------------------------------------------------------*/ + typedef struct _dictionary_ { +- int n ; /** Number of entries in dictionary */ +- int size ; /** Storage size */ +- char ** val ; /** List of string values */ +- char ** key ; /** List of string keys */ +- unsigned * hash ; /** List of hash values for keys */ ++ int n ; /** Number of entries in dictionary */ ++ ssize_t size ; /** Storage size */ ++ char ** val ; /** List of string values */ ++ char ** key ; /** List of string keys */ ++ unsigned * hash ; /** List of hash values for keys */ + } dictionary ; + + + /*--------------------------------------------------------------------------- +- Function prototypes ++ Function prototypes + ---------------------------------------------------------------------------*/ + + /*-------------------------------------------------------------------------*/ +@@ -85,7 +80,7 @@ unsigned dictionary_hash(const char * key); + dictionary, give size=0. + */ + /*--------------------------------------------------------------------------*/ +-dictionary * dictionary_new(int size); ++dictionary * dictionary_new(size_t size); + + /*-------------------------------------------------------------------------*/ + /** +@@ -112,7 +107,7 @@ void dictionary_del(dictionary * vd); + dictionary object, you should not try to free it or modify it. + */ + /*--------------------------------------------------------------------------*/ +-const char * dictionary_get(dictionary * d, const char * key, const char * def); ++const char * dictionary_get(const dictionary * d, const char * key, const char * def); + + + /*-------------------------------------------------------------------------*/ +@@ -161,7 +156,7 @@ void dictionary_unset(dictionary * d, const char * key); + /** + @brief Dump a dictionary to an opened file pointer. + @param d Dictionary to dump +- @param out Opened file pointer. ++ @param f Opened file pointer. + @return void + + Dumps a dictionary onto an opened file pointer. Key pairs are printed out +@@ -169,6 +164,10 @@ void dictionary_unset(dictionary * d, const char * key); + output file pointers. + */ + /*--------------------------------------------------------------------------*/ +-void dictionary_dump(dictionary * d, FILE * out); ++void dictionary_dump(const dictionary * d, FILE * out); ++ ++#ifdef __cplusplus ++} ++#endif + + #endif +diff --git a/lib/boilerplate/iniparser/iniparser.c b/lib/boilerplate/iniparser/iniparser.c +index 5b2094a00..f1d165896 100644 +--- a/lib/boilerplate/iniparser/iniparser.c ++++ b/lib/boilerplate/iniparser/iniparser.c +@@ -3,19 +3,12 @@ + /** + @file iniparser.c + @author N. Devillard +- @date Sep 2007 +- @version 3.0 + @brief Parser for ini files. + */ + /*--------------------------------------------------------------------------*/ +-/* +- $Id: iniparser.c,v 2.18 2008-01-03 18:35:39 ndevilla Exp $ +- $Revision: 2.18 $ +- $Date: 2008-01-03 18:35:39 $ +-*/ + /*---------------------------- Includes ------------------------------------*/ + #include +-#include ++#include + #include "iniparser.h" + + /*---------------------------- Defines -------------------------------------*/ +@@ -39,65 +32,115 @@ typedef enum _line_status_ { + + /*-------------------------------------------------------------------------*/ + /** +- @brief Convert a string to lowercase. +- @param s String to convert. +- @return ptr to statically allocated string. +- +- This function returns a pointer to a statically allocated string +- containing a lowercased version of the input string. Do not free +- or modify the returned string! Since the returned string is statically +- allocated, it will be modified at each function call (not re-entrant). ++ @brief Convert a string to lowercase. ++ @param in String to convert. ++ @param out Output buffer. ++ @param len Size of the out buffer. ++ @return ptr to the out buffer or NULL if an error occured. ++ ++ This function convert a string into lowercase. ++ At most len - 1 elements of the input string will be converted. + */ + /*--------------------------------------------------------------------------*/ +- +-static char strbuf[ASCIILINESZ+1]; +- +-static char * strlwc(const char * s) ++static const char * strlwc(const char * in, char *out, unsigned len) + { +- int i ; ++ unsigned i ; + +- if (s==NULL) return NULL ; +- memset(strbuf, 0, ASCIILINESZ+1); ++ if (in==NULL || out == NULL || len==0) return NULL ; + i=0 ; +- while (s[i] && i s) { ++ if (!isspace((int)*(last-1))) ++ break ; ++ last -- ; ++ } ++ *last = (char)0; ++ ++ memmove(dest,s,last - s + 1); ++ return last - s; ++} ++ ++/*-------------------------------------------------------------------------*/ ++/** ++ @brief Default error callback for iniparser: wraps `fprintf(stderr, ...)`. ++ */ ++/*--------------------------------------------------------------------------*/ ++static int default_error_callback(const char *format, ...) ++{ ++ int ret; ++ va_list argptr; ++ va_start(argptr, format); ++ ret = vfprintf(stderr, format, argptr); ++ va_end(argptr); ++ return ret; + } + ++static int (*iniparser_error_callback)(const char*, ...) = default_error_callback; ++ + /*-------------------------------------------------------------------------*/ + /** +- @brief Remove blanks at the beginning and the end of a string. +- @param s String to parse. +- @return ptr to statically allocated string. +- +- This function returns a pointer to a statically allocated string, +- which is identical to the input string, except that all blank +- characters at the end and the beg. of the string have been removed. +- Do not free or modify the returned string! Since the returned string +- is statically allocated, it will be modified at each function call +- (not re-entrant). ++ @brief Configure a function to receive the error messages. ++ @param errback Function to call. ++ ++ By default, the error will be printed on stderr. If a null pointer is passed ++ as errback the error callback will be switched back to default. + */ + /*--------------------------------------------------------------------------*/ +-static char * strstrip(const char * s) ++void iniparser_set_error_callback(int (*errback)(const char *, ...)) + { +- char * last ; +- +- if (s==NULL) return NULL ; +- +- while (isspace((int)*s) && *s) s++; +- memset(strbuf, 0, ASCIILINESZ+1); +- strcpy(strbuf, s); +- last = strbuf + strlen(strbuf); +- while (last > strbuf) { +- if (!isspace((int)*(last-1))) +- break ; +- last -- ; +- } +- *last = (char)0; +- return (char*)strbuf ; ++ if (errback) { ++ iniparser_error_callback = errback; ++ } else { ++ iniparser_error_callback = default_error_callback; ++ } + } + + /*-------------------------------------------------------------------------*/ +@@ -118,7 +161,7 @@ static char * strstrip(const char * s) + This function returns -1 in case of error. + */ + /*--------------------------------------------------------------------------*/ +-int iniparser_getnsec(dictionary * d) ++int iniparser_getnsec(const dictionary * d) + { + int i ; + int nsec ; +@@ -149,7 +192,7 @@ int iniparser_getnsec(dictionary * d) + This function returns NULL in case of error. + */ + /*--------------------------------------------------------------------------*/ +-const char * iniparser_getsecname(dictionary * d, int n) ++const char * iniparser_getsecname(const dictionary * d, int n) + { + int i ; + int foundsec ; +@@ -184,7 +227,7 @@ const char * iniparser_getsecname(dictionary * d, int n) + purposes mostly. + */ + /*--------------------------------------------------------------------------*/ +-void iniparser_dump(dictionary * d, FILE * f) ++void iniparser_dump(const dictionary * d, FILE * f) + { + int i ; + +@@ -212,13 +255,11 @@ void iniparser_dump(dictionary * d, FILE * f) + It is Ok to specify @c stderr or @c stdout as output files. + */ + /*--------------------------------------------------------------------------*/ +-void iniparser_dump_ini(dictionary * d, FILE * f) ++void iniparser_dump_ini(const dictionary * d, FILE * f) + { +- int i, j ; +- char keym[ASCIILINESZ+1]; +- int nsec ; +- const char * secname ; +- int seclen ; ++ int i ; ++ int nsec ; ++ const char * secname ; + + if (d==NULL || f==NULL) return ; + +@@ -234,24 +275,126 @@ void iniparser_dump_ini(dictionary * d, FILE * f) + } + for (i=0 ; isize ; j++) { +- if (d->key[j]==NULL) +- continue ; +- if (!strncmp(d->key[j], keym, seclen+1)) { +- fprintf(f, +- "%-30s = %s\n", +- d->key[j]+seclen+1, +- d->val[j] ? d->val[j] : ""); +- } ++ iniparser_dumpsection_ini(d, secname, f); ++ } ++ fprintf(f, "\n"); ++ return ; ++} ++ ++/*-------------------------------------------------------------------------*/ ++/** ++ @brief Save a dictionary section to a loadable ini file ++ @param d Dictionary to dump ++ @param s Section name of dictionary to dump ++ @param f Opened file pointer to dump to ++ @return void ++ ++ This function dumps a given section of a given dictionary into a loadable ini ++ file. It is Ok to specify @c stderr or @c stdout as output files. ++ */ ++/*--------------------------------------------------------------------------*/ ++void iniparser_dumpsection_ini(const dictionary * d, const char * s, FILE * f) ++{ ++ int j ; ++ char keym[ASCIILINESZ+1]; ++ int seclen ; ++ ++ if (d==NULL || f==NULL) return ; ++ if (! iniparser_find_entry(d, s)) return ; ++ ++ seclen = (int)strlen(s); ++ fprintf(f, "\n[%s]\n", s); ++ sprintf(keym, "%s:", s); ++ for (j=0 ; jsize ; j++) { ++ if (d->key[j]==NULL) ++ continue ; ++ if (!strncmp(d->key[j], keym, seclen+1)) { ++ fprintf(f, ++ "%-30s = %s\n", ++ d->key[j]+seclen+1, ++ d->val[j] ? d->val[j] : ""); + } + } + fprintf(f, "\n"); + return ; + } + ++/*-------------------------------------------------------------------------*/ ++/** ++ @brief Get the number of keys in a section of a dictionary. ++ @param d Dictionary to examine ++ @param s Section name of dictionary to examine ++ @return Number of keys in section ++ */ ++/*--------------------------------------------------------------------------*/ ++int iniparser_getsecnkeys(const dictionary * d, const char * s) ++{ ++ int seclen, nkeys ; ++ char keym[ASCIILINESZ+1]; ++ int j ; ++ ++ nkeys = 0; ++ ++ if (d==NULL) return nkeys; ++ if (! iniparser_find_entry(d, s)) return nkeys; ++ ++ seclen = (int)strlen(s); ++ strlwc(s, keym, sizeof(keym)); ++ keym[seclen] = ':'; ++ ++ for (j=0 ; jsize ; j++) { ++ if (d->key[j]==NULL) ++ continue ; ++ if (!strncmp(d->key[j], keym, seclen+1)) ++ nkeys++; ++ } ++ ++ return nkeys; ++ ++} ++ ++/*-------------------------------------------------------------------------*/ ++/** ++ @brief Get the number of keys in a section of a dictionary. ++ @param d Dictionary to examine ++ @param s Section name of dictionary to examine ++ @param keys Already allocated array to store the keys in ++ @return The pointer passed as `keys` argument or NULL in case of error ++ ++ This function queries a dictionary and finds all keys in a given section. ++ The keys argument should be an array of pointers which size has been ++ determined by calling `iniparser_getsecnkeys` function prior to this one. ++ ++ Each pointer in the returned char pointer-to-pointer is pointing to ++ a string allocated in the dictionary; do not free or modify them. ++ */ ++/*--------------------------------------------------------------------------*/ ++const char ** iniparser_getseckeys(const dictionary * d, const char * s, const char ** keys) ++{ ++ int i, j, seclen ; ++ char keym[ASCIILINESZ+1]; ++ ++ if (d==NULL || keys==NULL) return NULL; ++ if (! iniparser_find_entry(d, s)) return NULL; ++ ++ seclen = (int)strlen(s); ++ strlwc(s, keym, sizeof(keym)); ++ keym[seclen] = ':'; ++ ++ i = 0; ++ ++ for (j=0 ; jsize ; j++) { ++ if (d->key[j]==NULL) ++ continue ; ++ if (!strncmp(d->key[j], keym, seclen+1)) { ++ keys[i] = d->key[j]; ++ i++; ++ } ++ } ++ ++ return keys; ++} ++ + /*-------------------------------------------------------------------------*/ + /** + @brief Get the string associated to a key +@@ -267,24 +410,27 @@ void iniparser_dump_ini(dictionary * d, FILE * f) + the dictionary, do not free or modify it. + */ + /*--------------------------------------------------------------------------*/ +-const char * iniparser_getstring(dictionary * d, const char * key, const char * def) ++const char * iniparser_getstring(const dictionary * d, const char * key, const char * def) + { +- char * lc_key ; ++ const char * lc_key ; ++ const char * sval ; ++ char tmp_str[ASCIILINESZ+1]; + + if (d==NULL || key==NULL) + return def ; + +- lc_key = strlwc(key); +- return dictionary_get(d, lc_key, def); ++ lc_key = strlwc(key, tmp_str, sizeof(tmp_str)); ++ sval = dictionary_get(d, lc_key, def); ++ return sval ; + } + + /*-------------------------------------------------------------------------*/ + /** +- @brief Get the string associated to a key, convert to an int ++ @brief Get the string associated to a key, convert to an long int + @param d Dictionary to search + @param key Key string to look for + @param notfound Value to return in case of error +- @return integer ++ @return long integer + + This function queries a dictionary for a key. A key as read from an + ini file is given as "section:key". If the key cannot be found, +@@ -305,13 +451,46 @@ const char * iniparser_getstring(dictionary * d, const char * key, const char * + Credits: Thanks to A. Becker for suggesting strtol() + */ + /*--------------------------------------------------------------------------*/ +-int iniparser_getint(dictionary * d, const char * key, int notfound) ++long int iniparser_getlongint(const dictionary * d, const char * key, long int notfound) + { +- const char * str ; ++ const char * str ; + + str = iniparser_getstring(d, key, INI_INVALID_KEY); + if (str==INI_INVALID_KEY) return notfound ; +- return (int)strtol(str, NULL, 0); ++ return strtol(str, NULL, 0); ++} ++ ++ ++/*-------------------------------------------------------------------------*/ ++/** ++ @brief Get the string associated to a key, convert to an int ++ @param d Dictionary to search ++ @param key Key string to look for ++ @param notfound Value to return in case of error ++ @return integer ++ ++ This function queries a dictionary for a key. A key as read from an ++ ini file is given as "section:key". If the key cannot be found, ++ the notfound value is returned. ++ ++ Supported values for integers include the usual C notation ++ so decimal, octal (starting with 0) and hexadecimal (starting with 0x) ++ are supported. Examples: ++ ++ "42" -> 42 ++ "042" -> 34 (octal -> decimal) ++ "0x42" -> 66 (hexa -> decimal) ++ ++ Warning: the conversion may overflow in various ways. Conversion is ++ totally outsourced to strtol(), see the associated man page for overflow ++ handling. ++ ++ Credits: Thanks to A. Becker for suggesting strtol() ++ */ ++/*--------------------------------------------------------------------------*/ ++int iniparser_getint(const dictionary * d, const char * key, int notfound) ++{ ++ return (int)iniparser_getlongint(d, key, notfound); + } + + /*-------------------------------------------------------------------------*/ +@@ -327,9 +506,9 @@ int iniparser_getint(dictionary * d, const char * key, int notfound) + the notfound value is returned. + */ + /*--------------------------------------------------------------------------*/ +-double iniparser_getdouble(dictionary * d, const char * key, double notfound) ++double iniparser_getdouble(const dictionary * d, const char * key, double notfound) + { +- const char * str ; ++ const char * str ; + + str = iniparser_getstring(d, key, INI_INVALID_KEY); + if (str==INI_INVALID_KEY) return notfound ; +@@ -368,10 +547,10 @@ double iniparser_getdouble(dictionary * d, const char * key, double notfound) + necessarily have to be 0 or 1. + */ + /*--------------------------------------------------------------------------*/ +-int iniparser_getboolean(dictionary * d, const char * key, int notfound) ++int iniparser_getboolean(const dictionary * d, const char * key, int notfound) + { +- const char * c ; +- int ret ; ++ int ret ; ++ const char * c ; + + c = iniparser_getstring(d, key, INI_INVALID_KEY); + if (c==INI_INVALID_KEY) return notfound ; +@@ -397,10 +576,7 @@ int iniparser_getboolean(dictionary * d, const char * key, int notfound) + of querying for the presence of sections in a dictionary. + */ + /*--------------------------------------------------------------------------*/ +-int iniparser_find_entry( +- dictionary * ini, +- const char * entry +-) ++int iniparser_find_entry(const dictionary * ini, const char * entry) + { + int found=0 ; + if (iniparser_getstring(ini, entry, INI_INVALID_KEY)!=INI_INVALID_KEY) { +@@ -418,13 +594,14 @@ int iniparser_find_entry( + @return int 0 if Ok, -1 otherwise. + + If the given entry can be found in the dictionary, it is modified to +- contain the provided value. If it cannot be found, -1 is returned. ++ contain the provided value. If it cannot be found, the entry is created. + It is Ok to set val to NULL. + */ + /*--------------------------------------------------------------------------*/ + int iniparser_set(dictionary * ini, const char * entry, const char * val) + { +- return dictionary_set(ini, strlwc(entry), val) ; ++ char tmp_str[ASCIILINESZ+1]; ++ return dictionary_set(ini, strlwc(entry, tmp_str, sizeof(tmp_str)), val) ; + } + + /*-------------------------------------------------------------------------*/ +@@ -439,12 +616,13 @@ int iniparser_set(dictionary * ini, const char * entry, const char * val) + /*--------------------------------------------------------------------------*/ + void iniparser_unset(dictionary * ini, const char * entry) + { +- dictionary_unset(ini, strlwc(entry)); ++ char tmp_str[ASCIILINESZ+1]; ++ dictionary_unset(ini, strlwc(entry, tmp_str, sizeof(tmp_str))); + } + + /*-------------------------------------------------------------------------*/ + /** +- @brief Load a single line from an INI file ++ @brief Load a single line from an INI file + @param input_line Input line, may be concatenated multi-line input + @param section Output space to store section + @param key Output space to store key +@@ -457,34 +635,39 @@ static line_status iniparser_line( + char * section, + char * key, + char * value) +-{ ++{ + line_status sta ; +- char line[ASCIILINESZ+1]; +- int len ; ++ char * line = NULL; ++ size_t len ; + +- strcpy(line, strstrip(input_line)); +- len = (int)strlen(line); ++ line = xstrdup(input_line); ++ len = strstrip(line); + + sta = LINE_UNPROCESSED ; + if (len<1) { + /* Empty line */ + sta = LINE_EMPTY ; +- } else if (line[0]=='#') { ++ } else if (line[0]=='#' || line[0]==';') { + /* Comment line */ +- sta = LINE_COMMENT ; ++ sta = LINE_COMMENT ; + } else if (line[0]=='[' && line[len-1]==']') { + /* Section name */ + sscanf(line, "[%[^]]", section); +- strcpy(section, strstrip(section)); +- strcpy(section, strlwc(section)); ++ strstrip(section); ++ strlwc(section, section, len); + sta = LINE_SECTION ; + } else if (sscanf (line, "%[^=] = \"%[^\"]\"", key, value) == 2 +- || sscanf (line, "%[^=] = '%[^\']'", key, value) == 2 +- || sscanf (line, "%[^=] = %[^;#]", key, value) == 2) { +- /* Usual key=value, with or without comments */ +- strcpy(key, strstrip(key)); +- strcpy(key, strlwc(key)); +- strcpy(value, strstrip(value)); ++ || sscanf (line, "%[^=] = '%[^\']'", key, value) == 2) { ++ /* Usual key=value with quotes, with or without comments */ ++ strstrip(key); ++ strlwc(key, key, len); ++ /* Don't strip spaces from values surrounded with quotes */ ++ sta = LINE_VALUE ; ++ } else if (sscanf (line, "%[^=] = %[^;#]", key, value) == 2) { ++ /* Usual key=value without quotes, with or without comments */ ++ strstrip(key); ++ strlwc(key, key, len); ++ strstrip(value); + /* + * sscanf cannot handle '' or "" as empty values + * this is done here +@@ -501,14 +684,16 @@ static line_status iniparser_line( + * key=; + * key=# + */ +- strcpy(key, strstrip(key)); +- strcpy(key, strlwc(key)); ++ strstrip(key); ++ strlwc(key, key, len); + value[0]=0 ; + sta = LINE_VALUE ; + } else { + /* Generate syntax error */ + sta = LINE_ERROR ; + } ++ ++ free(line); + return sta ; + } + +@@ -528,44 +713,33 @@ static line_status iniparser_line( + /*--------------------------------------------------------------------------*/ + dictionary * iniparser_load(const char * ininame) + { +- char *buf; + FILE * in ; + +- char *line; +- char *section; +- char *key; +- char *tmp; +- char *val; ++ char line [ASCIILINESZ+1] ; ++ char section [ASCIILINESZ+1] ; ++ char key [ASCIILINESZ+1] ; ++ char tmp [(ASCIILINESZ * 2) + 2] ; ++ char val [ASCIILINESZ+1] ; + + int last=0 ; + int len ; + int lineno=0 ; + int errs=0; +- int ret; ++ int mem_err=0; + + dictionary * dict ; + +- if ((in=fopen(ininame, "r"))==NULL) ++ if ((in=fopen(ininame, "r"))==NULL) { ++ iniparser_error_callback("iniparser: cannot open %s\n", ininame); + return NULL ; ++ } + + dict = dictionary_new(0) ; + if (!dict) { + fclose(in); +- errno = ENOMEM; + return NULL ; + } + +- buf = malloc((ASCIILINESZ+1) * 5); +- if (buf == NULL) { +- errno = -ENOMEM; +- return NULL; +- } +- line = buf; +- section = line + ASCIILINESZ + 1; +- key = section + ASCIILINESZ + 1; +- tmp = key + ASCIILINESZ + 1; +- val = tmp + ASCIILINESZ + 1; +- + memset(line, 0, ASCIILINESZ); + memset(section, 0, ASCIILINESZ); + memset(key, 0, ASCIILINESZ); +@@ -575,18 +749,16 @@ dictionary * iniparser_load(const char * ininame) + while (fgets(line+last, ASCIILINESZ-last, in)!=NULL) { + lineno++ ; + len = (int)strlen(line)-1; ++ if (len<=0) ++ continue; + /* Safety check against buffer overflows */ +- if (last > 0 && line[len]!='\n') { +-#if 0 +- warning(anon_scope, +- "iniparser: input line too long in %s (%d)\n", +- ininame, +- lineno); +-#endif ++ if (line[len]!='\n' && !feof(in)) { ++ iniparser_error_callback( ++ "iniparser: input line too long in %s (%d)\n", ++ ininame, ++ lineno); + dictionary_del(dict); + fclose(in); +- free(buf); +- errno = EINVAL; + return NULL ; + } + /* Get rid of \n and spaces at end of line */ +@@ -595,8 +767,11 @@ dictionary * iniparser_load(const char * ininame) + line[len]=0 ; + len-- ; + } ++ if (len < 0) { /* Line was entirely \n and/or spaces */ ++ len = 0; ++ } + /* Detect multi-line */ +- if (len >= 0 && line[len]=='\\') { ++ if (line[len]=='\\') { + /* Multi-line value */ + last=len ; + continue ; +@@ -609,24 +784,20 @@ dictionary * iniparser_load(const char * ininame) + break ; + + case LINE_SECTION: +- errs = dictionary_set(dict, section, NULL); ++ mem_err = dictionary_set(dict, section, NULL); + break ; + + case LINE_VALUE: + sprintf(tmp, "%s:%s", section, key); +- errs = dictionary_set(dict, tmp, val) ; ++ mem_err = dictionary_set(dict, tmp, val); + break ; + +- case LINE_ERROR: +-#if 0 +- printf("iniparser: syntax error in %s (%d):\n", +- ininame, +- lineno); +- printf( "-> %s\n", line); +- +-#endif +- +- ret = EINVAL; ++ case LINE_ERROR: ++ iniparser_error_callback( ++ "iniparser: syntax error in %s (%d):\n-> %s\n", ++ ininame, ++ lineno, ++ line); + errs++ ; + break; + +@@ -635,18 +806,16 @@ dictionary * iniparser_load(const char * ininame) + } + memset(line, 0, ASCIILINESZ); + last=0; +- if (errs<0) { +- ret = ENOMEM; ++ if (mem_err<0) { ++ iniparser_error_callback("iniparser: memory allocation failure\n"); + break ; + } + } +- fclose(in); +- free(buf); + if (errs) { + dictionary_del(dict); + dict = NULL ; +- errno = ret; + } ++ fclose(in); + return dict ; + } + +@@ -665,5 +834,3 @@ void iniparser_freedict(dictionary * d) + { + dictionary_del(d); + } +- +-/* vim: set ts=4 et sw=4 tw=75 */ +diff --git a/lib/boilerplate/iniparser/iniparser.h b/lib/boilerplate/iniparser/iniparser.h +index d454cef34..37ff7b71b 100644 +--- a/lib/boilerplate/iniparser/iniparser.h ++++ b/lib/boilerplate/iniparser/iniparser.h +@@ -3,22 +3,15 @@ + /** + @file iniparser.h + @author N. Devillard +- @date Sep 2007 +- @version 3.0 + @brief Parser for ini files. + */ + /*--------------------------------------------------------------------------*/ + +-/* +- $Id: iniparser.h,v 1.24 2007-11-23 21:38:19 ndevilla Exp $ +- $Revision: 1.24 $ +-*/ +- + #ifndef _INIPARSER_H_ + #define _INIPARSER_H_ + + /*--------------------------------------------------------------------------- +- Includes ++ Includes + ---------------------------------------------------------------------------*/ + + #include +@@ -34,12 +27,21 @@ + + #include "dictionary.h" + +-/*--------------------------------------------------------------------------- +- Macros +- ---------------------------------------------------------------------------*/ +-/** For backwards compatibility only */ +-#define iniparser_getstr(d, k) iniparser_getstring(d, k, NULL) +-#define iniparser_setstr iniparser_setstring ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++/*-------------------------------------------------------------------------*/ ++/** ++ @brief Configure a function to receive the error messages. ++ @param errback Function to call. ++ ++ By default, the error will be printed on stderr. If a null pointer is passed ++ as errback the error callback will be switched back to default. ++ */ ++/*--------------------------------------------------------------------------*/ ++ ++void iniparser_set_error_callback(int (*errback)(const char *, ...)); + + /*-------------------------------------------------------------------------*/ + /** +@@ -60,7 +62,7 @@ + */ + /*--------------------------------------------------------------------------*/ + +-int iniparser_getnsec(dictionary * d); ++int iniparser_getnsec(const dictionary * d); + + + /*-------------------------------------------------------------------------*/ +@@ -78,7 +80,7 @@ int iniparser_getnsec(dictionary * d); + */ + /*--------------------------------------------------------------------------*/ + +-const char * iniparser_getsecname(dictionary * d, int n); ++const char * iniparser_getsecname(const dictionary * d, int n); + + + /*-------------------------------------------------------------------------*/ +@@ -93,7 +95,22 @@ const char * iniparser_getsecname(dictionary * d, int n); + */ + /*--------------------------------------------------------------------------*/ + +-void iniparser_dump_ini(dictionary * d, FILE * f); ++void iniparser_dump_ini(const dictionary * d, FILE * f); ++ ++/*-------------------------------------------------------------------------*/ ++/** ++ @brief Save a dictionary section to a loadable ini file ++ @param d Dictionary to dump ++ @param s Section name of dictionary to dump ++ @param f Opened file pointer to dump to ++ @return void ++ ++ This function dumps a given section of a given dictionary into a loadable ini ++ file. It is Ok to specify @c stderr or @c stdout as output files. ++ */ ++/*--------------------------------------------------------------------------*/ ++ ++void iniparser_dumpsection_ini(const dictionary * d, const char * s, FILE * f); + + /*-------------------------------------------------------------------------*/ + /** +@@ -108,7 +125,36 @@ void iniparser_dump_ini(dictionary * d, FILE * f); + purposes mostly. + */ + /*--------------------------------------------------------------------------*/ +-void iniparser_dump(dictionary * d, FILE * f); ++void iniparser_dump(const dictionary * d, FILE * f); ++ ++/*-------------------------------------------------------------------------*/ ++/** ++ @brief Get the number of keys in a section of a dictionary. ++ @param d Dictionary to examine ++ @param s Section name of dictionary to examine ++ @return Number of keys in section ++ */ ++/*--------------------------------------------------------------------------*/ ++int iniparser_getsecnkeys(const dictionary * d, const char * s); ++ ++/*-------------------------------------------------------------------------*/ ++/** ++ @brief Get the number of keys in a section of a dictionary. ++ @param d Dictionary to examine ++ @param s Section name of dictionary to examine ++ @param keys Already allocated array to store the keys in ++ @return The pointer passed as `keys` argument or NULL in case of error ++ ++ This function queries a dictionary and finds all keys in a given section. ++ The keys argument should be an array of pointers which size has been ++ determined by calling `iniparser_getsecnkeys` function prior to this one. ++ ++ Each pointer in the returned char pointer-to-pointer is pointing to ++ a string allocated in the dictionary; do not free or modify them. ++ */ ++/*--------------------------------------------------------------------------*/ ++const char ** iniparser_getseckeys(const dictionary * d, const char * s, const char ** keys); ++ + + /*-------------------------------------------------------------------------*/ + /** +@@ -125,7 +171,7 @@ void iniparser_dump(dictionary * d, FILE * f); + the dictionary, do not free or modify it. + */ + /*--------------------------------------------------------------------------*/ +-const char * iniparser_getstring(dictionary * d, const char * key, const char * def); ++const char * iniparser_getstring(const dictionary * d, const char * key, const char * def); + + /*-------------------------------------------------------------------------*/ + /** +@@ -154,7 +200,35 @@ const char * iniparser_getstring(dictionary * d, const char * key, const char * + Credits: Thanks to A. Becker for suggesting strtol() + */ + /*--------------------------------------------------------------------------*/ +-int iniparser_getint(dictionary * d, const char * key, int notfound); ++int iniparser_getint(const dictionary * d, const char * key, int notfound); ++ ++/*-------------------------------------------------------------------------*/ ++/** ++ @brief Get the string associated to a key, convert to an long int ++ @param d Dictionary to search ++ @param key Key string to look for ++ @param notfound Value to return in case of error ++ @return integer ++ ++ This function queries a dictionary for a key. A key as read from an ++ ini file is given as "section:key". If the key cannot be found, ++ the notfound value is returned. ++ ++ Supported values for integers include the usual C notation ++ so decimal, octal (starting with 0) and hexadecimal (starting with 0x) ++ are supported. Examples: ++ ++ - "42" -> 42 ++ - "042" -> 34 (octal -> decimal) ++ - "0x42" -> 66 (hexa -> decimal) ++ ++ Warning: the conversion may overflow in various ways. Conversion is ++ totally outsourced to strtol(), see the associated man page for overflow ++ handling. ++ */ ++/*--------------------------------------------------------------------------*/ ++long int iniparser_getlongint(const dictionary * d, const char * key, long int notfound); ++ + + /*-------------------------------------------------------------------------*/ + /** +@@ -169,7 +243,7 @@ int iniparser_getint(dictionary * d, const char * key, int notfound); + the notfound value is returned. + */ + /*--------------------------------------------------------------------------*/ +-double iniparser_getdouble(dictionary * d, const char * key, double notfound); ++double iniparser_getdouble(const dictionary * d, const char * key, double notfound); + + /*-------------------------------------------------------------------------*/ + /** +@@ -203,7 +277,7 @@ double iniparser_getdouble(dictionary * d, const char * key, double notfound); + necessarily have to be 0 or 1. + */ + /*--------------------------------------------------------------------------*/ +-int iniparser_getboolean(dictionary * d, const char * key, int notfound); ++int iniparser_getboolean(const dictionary * d, const char * key, int notfound); + + + /*-------------------------------------------------------------------------*/ +@@ -212,17 +286,16 @@ int iniparser_getboolean(dictionary * d, const char * key, int notfound); + @param ini Dictionary to modify. + @param entry Entry to modify (entry name) + @param val New value to associate to the entry. +- @return int 0 if Ok, -1 otherwise. ++ @return int 0 if Ok, -1 otherwise. + + If the given entry can be found in the dictionary, it is modified to +- contain the provided value. If it cannot be found, -1 is returned. ++ contain the provided value. If it cannot be found, the entry is created. + It is Ok to set val to NULL. + */ + /*--------------------------------------------------------------------------*/ +-int iniparser_setstring(dictionary * ini, const char * entry, const char * val); +- + int iniparser_set(dictionary * ini, const char * entry, const char * val); + ++ + /*-------------------------------------------------------------------------*/ + /** + @brief Delete an entry in a dictionary +@@ -247,7 +320,7 @@ void iniparser_unset(dictionary * ini, const char * entry); + of querying for the presence of sections in a dictionary. + */ + /*--------------------------------------------------------------------------*/ +-int iniparser_find_entry(dictionary * ini, const char * entry) ; ++int iniparser_find_entry(const dictionary * ini, const char * entry) ; + + /*-------------------------------------------------------------------------*/ + /** +@@ -278,4 +351,8 @@ dictionary * iniparser_load(const char * ininame); + /*--------------------------------------------------------------------------*/ + void iniparser_freedict(dictionary * d); + ++#ifdef __cplusplus ++} ++#endif ++ + #endif +-- +GitLab + diff --git a/package/xenomai/3.0.10/0002-Add-disable-demo-testsuite-options.patch b/package/xenomai/3.0.10/0002-Add-disable-demo-testsuite-options.patch new file mode 100644 index 00000000..0a817503 --- /dev/null +++ b/package/xenomai/3.0.10/0002-Add-disable-demo-testsuite-options.patch @@ -0,0 +1,94 @@ +From 702697cafcec735e55f075594a2990204c8ea17d Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 10 Aug 2021 18:01:48 +0200 +Subject: [PATCH] Add --disable-{demo,testsuite} options +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Allow the user to disable demo and testsuite to avoid the following +build failures on arc and riscv32: + +latency.c: In function 'display': +latency.c:326:21: error: format '%ld' expects argument of type 'long int', but argument 2 has type 'time_t' {aka 'long long int'} [-Werror=format=] + 326 | ("RTT| %.2ld:%.2ld:%.2ld (%s, %Ld us period, " + | ~~~~^ + | | + | long int + | %.2lld + 327 | "priority %d)\n", dt / 3600, + | ~~~~~~~~~ + | | + | time_t {aka long long int} + +altency.c: In function ‘display’: +altency.c:262:21: error: format ‘%ld’ expects argument of type ‘long int’, but argument 2 has type ‘time_t’ {aka ‘long long int’} [-Werror=format=] + 262 | ("RTT| %.2ld:%.2ld:%.2ld (%s, %Ld us period, " + | ~~~~^ + | | + | long int + | %.2lld + 263 | "priority %d)\n", dt / 3600, + | ~~~~~~~~~ + | | + | time_t {aka long long int} + +Fixes: + - http://autobuild.buildroot.org/results/448efe22e8fe058a1b354a3c124874e30b9ce138 + +Signed-off-by: Fabrice Fontaine +--- + Makefile.am | 12 ++++++++++-- + configure.ac | 12 ++++++++++++ + 2 files changed, 22 insertions(+), 2 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 891e53f66..604644277 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -6,9 +6,17 @@ SUBDIRS = \ + config \ + include \ + scripts \ +- testsuite \ +- utils \ ++ utils ++ ++if XENO_ENABLE_DEMO ++SUBDIRS += \ + demo ++endif ++ ++if XENO_ENABLE_TESTSUITE ++SUBDIRS += \ ++ testsuite ++endif + + EXTRA_DIST = kernel debian + +diff --git a/configure.ac b/configure.ac +index bd5fd5ba9..29dfd16e5 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -200,6 +200,18 @@ test \! x$debug_mode = x && AC_DEFINE(CONFIG_XENO_DEBUG,1,[config]) + AM_CONDITIONAL(XENO_DEBUG_FULL,[test x$debug_mode = xfull]) + test x$debug_mode = xfull && AC_DEFINE(CONFIG_XENO_DEBUG_FULL,1,[config]) + ++dnl Demo (default: on) ++ ++AC_ARG_ENABLE(demo, ++ AS_HELP_STRING([--disable-demo], [Disable demo])) ++AM_CONDITIONAL(XENO_ENABLE_DEMO,[test x$enable_demo != xno]) ++ ++dnl Testsuite (default: on) ++ ++AC_ARG_ENABLE(testsuite, ++ AS_HELP_STRING([--disable-testsuite], [Disable testsuite])) ++AM_CONDITIONAL(XENO_ENABLE_TESTSUITE,[test x$enable_testsuite != xno]) ++ + dnl Low resolution clock (default: off) + + unset lores_clock +-- +2.30.2 + diff --git a/package/xenomai/3.0.10/0003-lib-cobalt-copperplate-Use-valid-addresses-for-pthread_setspecific.patch b/package/xenomai/3.0.10/0003-lib-cobalt-copperplate-Use-valid-addresses-for-pthread_setspecific.patch new file mode 100644 index 00000000..0c39a4ec --- /dev/null +++ b/package/xenomai/3.0.10/0003-lib-cobalt-copperplate-Use-valid-addresses-for-pthread_setspecific.patch @@ -0,0 +1,57 @@ +From 627d488db3aa71406e32d4d8934629e8b0f35905 Mon Sep 17 00:00:00 2001 +From: Jan Kiszka +Date: Sat, 16 Oct 2021 15:46:33 +0200 +Subject: [PATCH] lib/{cobalt,copperplate}: Use valid addresses for + pthread_setspecific + +glibx 2.34 and newer annotated pthread_setspecific in a way that gcc-11 +complains about non-NULL pointers that are outside of what is considered +valid. So use dummy addresses instead. namely the related pthread keys. +Those pointers will never be dereferenced in both use cases. + +See also https://sourceware.org/bugzilla/show_bug.cgi?id=28458. + +Reported-by: Vitaly Chikunov +Signed-off-by: Jan Kiszka + +[Retrieved from: +https://source.denx.de/Xenomai/xenomai/-/commit/627d488db3aa71406e32d4d8934629e8b0f35905] +Signed-off-by: Fabrice Fontaine +--- + include/copperplate/threadobj.h | 6 +++++- + lib/cobalt/printf.c | 2 +- + 2 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/include/copperplate/threadobj.h b/include/copperplate/threadobj.h +index 7e6904f4c..c8363415b 100644 +--- a/include/copperplate/threadobj.h ++++ b/include/copperplate/threadobj.h +@@ -173,7 +173,11 @@ void threadobj_save_timeout(struct threadobj_corespec *corespec, + #define __THREAD_M_SPARE6 (1 << 22) + #define __THREAD_M_SPARE7 (1 << 23) + +-#define THREADOBJ_IRQCONTEXT ((struct threadobj *)-2UL) ++/* ++ * We need to use a valid address here. The object will never be dereferenced ++ * when it is identified as IRQ context, so the pthread key itself is fine. ++ */ ++#define THREADOBJ_IRQCONTEXT ((struct threadobj *)&threadobj_tskey) + + struct traceobj; + struct syncobj; +diff --git a/lib/cobalt/printf.c b/lib/cobalt/printf.c +index 8982ddc93..0aa5940c6 100644 +--- a/lib/cobalt/printf.c ++++ b/lib/cobalt/printf.c +@@ -729,7 +729,7 @@ done: + pthread_cond_init(&printer_wakeup, NULL); + spawn_printer_thread(); + /* We just need a non-zero TSD to trigger the dtor upon unwinding. */ +- pthread_setspecific(cleanup_key, (void *)1); ++ pthread_setspecific(cleanup_key, &cleanup_key); + + atexit(rt_print_flush_buffers); + } +-- +GitLab + diff --git a/package/xenomai/3.0.10/0004-lib-psos-task.c-fix-build-with-gcc-12.patch b/package/xenomai/3.0.10/0004-lib-psos-task.c-fix-build-with-gcc-12.patch new file mode 100644 index 00000000..fcc1f1e6 --- /dev/null +++ b/package/xenomai/3.0.10/0004-lib-psos-task.c-fix-build-with-gcc-12.patch @@ -0,0 +1,56 @@ +From 6c6da9e6d75ccfaa83c1efe14211f080c14181c6 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 3 Dec 2023 15:28:50 +0100 +Subject: [PATCH] lib/psos/task.c: fix build with gcc >= 12 + +Fix the following build failure with gcc >= 12: + +task.c: In function 't_start': +task.c:398:16: error: 'ret' may be used uninitialized [-Werror=maybe-uninitialized] + 398 | return ret; + | ^~~ +task.c:364:13: note: 'ret' was declared here + 364 | int ret; + | ^~~ +task.c: In function 't_resume': +task.c:444:16: error: 'ret' may be used uninitialized [-Werror=maybe-uninitialized] + 444 | return ret; + | ^~~ +task.c:428:13: note: 'ret' was declared here + 428 | int ret; + | ^~~ + +Fixes: + - http://autobuild.buildroot.org/results/bc1b40de22e563b704ad7f20b6bf4d1f73a6ed8a + +Signed-off-by: Fabrice Fontaine +Upstream: https://lore.kernel.org/xenomai/20231203144307.1940139-1-fontaine.fabrice@gmail.com/T/#u +--- + lib/psos/task.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/lib/psos/task.c b/lib/psos/task.c +index f678be61d..27bcc28a9 100644 +--- a/lib/psos/task.c ++++ b/lib/psos/task.c +@@ -362,7 +362,7 @@ u_long t_start(u_long tid, + { + struct psos_task *task; + struct service svc; +- int ret; ++ int ret = SUCCESS; + + CANCEL_DEFER(svc); + +@@ -426,7 +426,7 @@ u_long t_resume(u_long tid) + { + struct psos_task *task; + struct service svc; +- int ret; ++ int ret = SUCCESS; + + CANCEL_DEFER(svc); + +-- +2.42.0 + diff --git a/package/xenomai/Config.in b/package/xenomai/Config.in new file mode 100644 index 00000000..d4983b08 --- /dev/null +++ b/package/xenomai/Config.in @@ -0,0 +1,231 @@ +config BR2_PACKAGE_XENOMAI_COBALT_ARCH_SUPPORTS + bool + default y if BR2_i386 + default y if BR2_x86_64 + default y if BR2_powerpc + default y if BR2_arm && !BR2_ARM_CPU_ARMV7M && !BR2_ARM_CPU_ARMV8A + +comment "xenomai needs a glibc or uClibc toolchain w/ threads" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_MUSL + +config BR2_PACKAGE_XENOMAI + bool "Xenomai Userspace" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_TOOLCHAIN_HAS_THREADS + # uses , __WORDSIZE and bits/local_lim.h + depends on !BR2_TOOLCHAIN_USES_MUSL + help + Real-Time Framework for Linux + http://www.xenomai.org + + Xenomai is split in two parts: a kernel part and an + userspace part. + + This package contains the userspace part, which consists + mainly in libraries to write userspace real-time programs + that interact with the in-kernel Xenomai real-time core. + + For those libraries to work, you need a Xenomai-enabled + kernel. This is possible in two ways: + - if you compile your kernel with Buildroot, you need to go + to Linux Kernel -> Linux Kernel Extensions to enable the + Xenomai extension. + - if you compile your kernel outside of Buildroot, you need + to make sure that it is Xenomai-enabled. + + Finally, if you are using a static /dev, make sure to + uncomment the Xenomai entries listed in + target/generic/device_table_dev.txt. + +if BR2_PACKAGE_XENOMAI + +choice + bool "Xenomai version" + help + Make sure that the selected version has a patch for your + selected Linux kernel. If it does not, download and select a + patch manually with BR2_LINUX_KERNEL_EXT_XENOMAI_ADEOS_PATCH, + in the Linux Kernel -> Linux Kernel Extensions menu. + +config BR2_PACKAGE_XENOMAI_LATEST_VERSION + bool "Latest version (3.0.10)" + +config BR2_PACKAGE_XENOMAI_CUSTOM_VERSION + bool "Custom version" + +config BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL + bool "Custom tarball" + +config BR2_PACKAGE_XENOMAI_CUSTOM_GIT + bool "Custom Git repository" + +endchoice + +config BR2_PACKAGE_XENOMAI_CUSTOM_VERSION_VALUE + string "Xenomai version" + depends on BR2_PACKAGE_XENOMAI_CUSTOM_VERSION + +config BR2_PACKAGE_XENOMAI_REPOSITORY + string "URL of custom repository" + depends on BR2_PACKAGE_XENOMAI_CUSTOM_GIT + +config BR2_PACKAGE_XENOMAI_REPOSITORY_VERSION + string "Custom repository version" + depends on BR2_PACKAGE_XENOMAI_CUSTOM_GIT + help + Revision to use in the typical format used by Git, i.e a + SHA1 or a tag. + +config BR2_PACKAGE_XENOMAI_VERSION + string + default "3.0.10" if BR2_PACKAGE_XENOMAI_LATEST_VERSION + default BR2_PACKAGE_XENOMAI_CUSTOM_VERSION_VALUE \ + if BR2_PACKAGE_XENOMAI_CUSTOM_VERSION + default "custom" if BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL + default BR2_PACKAGE_XENOMAI_REPOSITORY_VERSION \ + if BR2_PACKAGE_XENOMAI_CUSTOM_GIT + +config BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL_URL + string "URL of custom tarball" + depends on BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL + +choice + prompt "Xenomai core" + default BR2_PACKAGE_XENOMAI_MERCURY + help + Select the Xenomai core: dual kernel (Cobalt) + or native Linux Kernel (Mercury). + +config BR2_PACKAGE_XENOMAI_MERCURY + bool "Mercury" + depends on !BR2_LINUX_KERNEL_EXT_XENOMAI + help + Select Mercury core for the Xenomai userspace. + You want to use it if you have the native Linux Kernel. + +config BR2_PACKAGE_XENOMAI_COBALT + bool "Cobalt" + depends on BR2_PACKAGE_XENOMAI_COBALT_ARCH_SUPPORTS + help + Select Cobalt core (dual kernel) for the Xenomai + userspace. Use this if you use a Xenomai-patched + Linux kernel. + + If you want to use Cobalt core, your kernel must have + the Adeos and Xenomai patches applied to it. You can + add these through the BR2_LINUX_KERNEL_EXT_XENOMAI option + in the Linux Kernel Extensions menu. +endchoice + +config BR2_PACKAGE_XENOMAI_ENABLE_SMP + bool "Enable SMP support" + default y + # SMP not supported below armv6 + depends on !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV5 + help + This option enables SMP support in Xenomai userspace. + + If this option is turned on while no SMP support is enabled + in the kernel, things will still work. However, if SMP is + enabled in the kernel but this option is not turned on, + Xenomai applications will complain with: + + feature mismatch: missing="smp/nosmp" + + Please refer to this troubleshooting guide for more + information: + + http://xenomai.org/troubleshooting-a-dual-kernel-configuration/#feature_mismatch_missing8221smpnosmp8221 + +config BR2_PACKAGE_XENOMAI_ENABLE_REGISTRY + bool "Enable registry" + depends on !BR2_STATIC_LIBS # libfuse + depends on BR2_TOOLCHAIN_HAS_THREADS # libfuse + depends on BR2_USE_MMU # libfuse + select BR2_PACKAGE_LIBFUSE + help + Xenomai APIs can export their internal state through a + pseudo-filesystem, whose files may be read to obtain + information about the existing real-time objects, such as + tasks, semaphores, message queues and so on. + +comment "registry needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_XENOMAI_ENABLE_REGISTRY_PATH + string "Custom registry root path" + depends on BR2_PACKAGE_XENOMAI_ENABLE_REGISTRY + help + Specify the root path of the registry here. + To use the Xenomai default (currently: /var/run/xenomai), + leave this option empty. + +config BR2_PACKAGE_XENOMAI_ADDITIONAL_CONF_OPTS + string "Additional configure options" + help + Specify any additional options to pass to the configure + script here. See Xenomai documentation for details. + +config BR2_PACKAGE_XENOMAI_TESTSUITE + bool "Install testsuite" + help + This option allows to install the Xenomai test programs. + +config BR2_PACKAGE_XENOMAI_RTCAN + bool "RTCan utilities" + help + This option allows to install the Xenomai RT-CAN utilities. + +config BR2_PACKAGE_XENOMAI_ANALOGY + bool "Analogy libs and utils" + help + This option allows to install the Xenomai Analogy utilities + and libraries + +menu "Skin selection" + +config BR2_PACKAGE_XENOMAI_NATIVE_SKIN + bool "Alchemy (native) skin" + default y + help + This option allows to install the Alchemy Xenomai skin, + previously called 'native' + +config BR2_PACKAGE_XENOMAI_POSIX_SKIN + bool "POSIX skin" + default y + help + This option allows to install the POSIX Xenomai skin + +config BR2_PACKAGE_XENOMAI_PSOS_SKIN + bool "pSOS skin" + help + This option allows to install the pSOS Xenomai skin + +config BR2_PACKAGE_XENOMAI_RTAI_SKIN + bool "RTAI skin" + help + This option allows to install the RTAI Xenomai skin + +config BR2_PACKAGE_XENOMAI_UITRON_SKIN + bool "uITRON skin" + help + This option allows to install the uITRON Xenomai skin + +config BR2_PACKAGE_XENOMAI_VRTX_SKIN + bool "VRTX skin" + help + This option allows to install the VRTX Xenomai skin + +config BR2_PACKAGE_XENOMAI_VXWORKS_SKIN + bool "VxWorks skin" + help + This option allows to install the VxWorks Xenomai skin + +endmenu + +endif diff --git a/package/xenomai/xenomai.hash b/package/xenomai/xenomai.hash new file mode 100644 index 00000000..7a07f061 --- /dev/null +++ b/package/xenomai/xenomai.hash @@ -0,0 +1,17 @@ +# Locally computed; +sha256 080f893d6ab8e3065285fbb482695477a0502b9490dccd1f744cebaac94691e5 xenomai-3.0.10.tar.bz2 +sha256 d37ebe86bf618942dad958927c44403f9b02fbebb3071a4a08408ccbdab5290f debian/copyright +sha256 f3380321da72ff509bf6939aa80e6d02fd22268f5c705137b34c205b39bc63a0 include/COPYING +sha256 d6b6d8ed1b12309085caf1cf775ea4acdad3288c7f7d993c2502bd19c87e4764 kernel/cobalt/COPYING +sha256 d6b6d8ed1b12309085caf1cf775ea4acdad3288c7f7d993c2502bd19c87e4764 kernel/cobalt/posix/COPYING +sha256 9c90501baa30534ffed6b39eef413bd1727170ef691fd9768dc8644c3042df54 kernel/cobalt/rtdm/COPYING +sha256 eea173a556abac0370461e57e12aab266894ea6be3874c2be05fd87871f75449 lib/alchemy/COPYING +sha256 eea173a556abac0370461e57e12aab266894ea6be3874c2be05fd87871f75449 lib/analogy/COPYING +sha256 0519083691511d71408f8c9a2794fa2f6ad13a5eec00717f4572b54d18d6f9da lib/boilerplate/iniparser/LICENSE +sha256 eea173a556abac0370461e57e12aab266894ea6be3874c2be05fd87871f75449 lib/boilerplate/COPYING +sha256 eea173a556abac0370461e57e12aab266894ea6be3874c2be05fd87871f75449 lib/cobalt/COPYING +sha256 eea173a556abac0370461e57e12aab266894ea6be3874c2be05fd87871f75449 lib/copperplate/COPYING +sha256 eea173a556abac0370461e57e12aab266894ea6be3874c2be05fd87871f75449 lib/psos/COPYING +sha256 eea173a556abac0370461e57e12aab266894ea6be3874c2be05fd87871f75449 lib/smokey/COPYING +sha256 eea173a556abac0370461e57e12aab266894ea6be3874c2be05fd87871f75449 lib/trank/COPYING +sha256 eea173a556abac0370461e57e12aab266894ea6be3874c2be05fd87871f75449 lib/vxworks/COPYING diff --git a/package/xenomai/xenomai.mk b/package/xenomai/xenomai.mk new file mode 100644 index 00000000..93569192 --- /dev/null +++ b/package/xenomai/xenomai.mk @@ -0,0 +1,158 @@ +################################################################################ +# +# xenomai +# +################################################################################ + +XENOMAI_VERSION = $(call qstrip,$(BR2_PACKAGE_XENOMAI_VERSION)) +ifeq ($(BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL),y) +XENOMAI_TARBALL = $(call qstrip,$(BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL_URL)) +XENOMAI_SOURCE = $(notdir $(XENOMAI_TARBALL)) +XENOMAI_SITE = $(patsubst %/,%,$(dir $(XENOMAI_TARBALL))) +else ifeq ($(BR2_PACKAGE_XENOMAI_CUSTOM_GIT),y) +XENOMAI_SITE = $(call qstrip,$(BR2_PACKAGE_XENOMAI_REPOSITORY)) +XENOMAI_SITE_METHOD = git +else +XENOMAI_SOURCE = xenomai-$(XENOMAI_VERSION).tar.bz2 +XENOMAI_SITE = http://xenomai.org/downloads/xenomai/stable +endif +# We're patching configure.ac +XENOMAI_AUTORECONF = YES + +# Exclude all from the hash check, but the latest version. +ifeq ($(BR2_PACKAGE_XENOMAI)$(BR2_PACKAGE_XENOMAI_LATEST_VERSION),y) +BR_NO_CHECK_HASH_FOR += $(XENOMAI_SOURCE) +endif + +XENOMAI_LICENSE = GPL-2.0+ with exception (headers), LGPL-2.1+ (libraries), GPL-2.0+ (kernel), GFDL-1.2+ (docs), GPL-2.0 (ipipe patch, can driver) +# GFDL is not included but refers to gnu.org +XENOMAI_LICENSE_FILES = debian/copyright include/COPYING kernel/cobalt/COPYING \ + kernel/cobalt/posix/COPYING kernel/cobalt/rtdm/COPYING \ + lib/alchemy/COPYING lib/analogy/COPYING \ + lib/boilerplate/iniparser/LICENSE lib/boilerplate/COPYING \ + lib/cobalt/COPYING lib/copperplate/COPYING lib/psos/COPYING \ + lib/smokey/COPYING lib/trank/COPYING lib/vxworks/COPYING + +XENOMAI_DEPENDENCIES = host-pkgconf + +XENOMAI_INSTALL_STAGING = YES +XENOMAI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-user +XENOMAI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) install-user + +XENOMAI_CONF_OPTS += \ + --disable-demo \ + --includedir=/usr/include/xenomai/ + +ifeq ($(BR2_PACKAGE_XENOMAI_MERCURY),y) +XENOMAI_CONF_OPTS += --with-core=mercury +else +XENOMAI_CONF_OPTS += --with-core=cobalt +endif + +ifeq ($(BR2_PACKAGE_XENOMAI_ENABLE_SMP),y) +XENOMAI_CONF_OPTS += --enable-smp +else +XENOMAI_CONF_OPTS += --disable-smp +endif + +ifeq ($(BR2_PACKAGE_XENOMAI_ENABLE_REGISTRY),y) +XENOMAI_DEPENDENCIES += libfuse +XENOMAI_REGISTRY_PATH = $(call qstrip,$(BR2_PACKAGE_XENOMAI_ENABLE_REGISTRY_PATH)) +ifeq ($(XENOMAI_REGISTRY_PATH),) +XENOMAI_CONF_OPTS += --enable-registry +else +XENOMAI_CONF_OPTS += --enable-registry=$(XENOMAI_REGISTRY_PATH) +endif +else +XENOMAI_CONF_OPTS += --disable-registry +endif + +XENOMAI_CONF_OPTS += $(call qstrip,$(BR2_PACKAGE_XENOMAI_ADDITIONAL_CONF_OPTS)) + +# Some of these files may be desired by some users -- at that point specific +# config options need to be added to keep a particular set. +define XENOMAI_REMOVE_UNNEEDED_FILES + for i in xeno xeno-config xeno-info wrap-link.sh ; do \ + rm -f $(TARGET_DIR)/usr/bin/$$i ; \ + done + for i in cobalt modechk ; do \ + rm -f $(TARGET_DIR)/usr/lib/$$i.wrappers ; \ + done + for i in autotune corectl hdb rtnet nomaccfg rtcfg rtifconfig \ + rtiwconfig rtping rtroute tdmacfg rtps slackspot version; do \ + rm -f $(TARGET_DIR)/usr/sbin/$$i ; \ + done +endef + +XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_UNNEEDED_FILES + +ifeq ($(BR2_PACKAGE_XENOMAI_TESTSUITE),y) +XENOMAI_CONF_OPTS += --enable-testsuite +else +XENOMAI_CONF_OPTS += --disable-testsuite +endif + +ifeq ($(BR2_PACKAGE_XENOMAI_RTCAN),) +define XENOMAI_REMOVE_RTCAN_PROGS + for i in rtcanrecv rtcansend ; do \ + rm -f $(TARGET_DIR)/usr/bin/$$i ; \ + done + rm -f $(TARGET_DIR)/usr/sbin/rtcanconfig +endef + +XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_RTCAN_PROGS +endif + +ifeq ($(BR2_PACKAGE_XENOMAI_ANALOGY),) +define XENOMAI_REMOVE_ANALOGY + for i in cmd_read cmd_write cmd_bits insn_read insn_write insn_bits \ + wf_generate ; do \ + rm -f $(TARGET_DIR)/usr/bin/$$i ; \ + done + for i in analogy_config analogy_calibrate ; do \ + rm -f $(TARGET_DIR)/usr/sbin/$$i ; \ + done + rm -f $(TARGET_DIR)/usr/lib/libanalogy.* +endef + +XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_ANALOGY +endif + +XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_NATIVE_SKIN),,alchemy) +XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_POSIX_SKIN),,posix) +XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_PSOS_SKIN),,psos) +XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_RTAI_SKIN),,rtai) +XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_TESTSUITE),,smokey) +XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_UITRON_SKIN),,uitron) +XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_VXWORKS_SKIN),,vxworks) +XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_VRTX_SKIN),,vrtx) + +define XENOMAI_REMOVE_LIBS + for i in $(XENOMAI_REMOVE_LIBS_LIST) ; do \ + rm -f $(TARGET_DIR)/usr/lib/lib$$i.* ; \ + done +endef + +XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_LIBS + +define XENOMAI_DEVICES + /dev/rtheap c 666 0 0 10 254 0 0 - + /dev/rtscope c 666 0 0 10 253 0 0 - + /dev/rtp c 666 0 0 150 0 0 1 32 +endef + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +XENOMAI_DEPENDENCIES += udev + +define XENOMAI_INSTALL_UDEV_RULES + if test -d $(TARGET_DIR)/etc/udev/rules.d ; then \ + for f in $(@D)/kernel/cobalt/udev/*.rules ; do \ + cp $$f $(TARGET_DIR)/etc/udev/rules.d/ || exit 1 ; \ + done ; \ + fi; +endef + +XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_INSTALL_UDEV_RULES +endif # udev + +$(eval $(autotools-package)) diff --git a/package/xerces/Config.in b/package/xerces/Config.in new file mode 100644 index 00000000..20cd2ab1 --- /dev/null +++ b/package/xerces/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_XERCES + bool "xerces-c++" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR + help + Xerces-C++ is a validating XML parser written in portable C++. + + http://xerces.apache.org/xerces-c/ + +if BR2_PACKAGE_XERCES + +config BR2_PACKAGE_XERCES_ENABLE_NETWORK + bool "Enable network support" + default y + help + Enable network support in xerces + +endif + +comment "xerces-c++ needs a toolchain w/ C++, dynamic library, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_USE_WCHAR diff --git a/package/xerces/xerces.hash b/package/xerces/xerces.hash new file mode 100644 index 00000000..e6b5b922 --- /dev/null +++ b/package/xerces/xerces.hash @@ -0,0 +1,5 @@ +# From http://www.apache.org/dist/xerces/c/3/sources/xerces-c-3.2.4.tar.xz.sha256 +sha256 075bc57940da0f9be6dd183c550c8ce0b9833e4550dc382048377a1a5e3b2bd9 xerces-c-3.2.4.tar.xz + +# Hash for license file +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/xerces/xerces.mk b/package/xerces/xerces.mk new file mode 100644 index 00000000..08efa6fb --- /dev/null +++ b/package/xerces/xerces.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# xerces +# +################################################################################ + +XERCES_VERSION = 3.2.4 +XERCES_SOURCE = xerces-c-$(XERCES_VERSION).tar.xz +XERCES_SITE = http://archive.apache.org/dist/xerces/c/3/sources +XERCES_LICENSE = Apache-2.0 +XERCES_LICENSE_FILES = LICENSE +XERCES_CPE_ID_VENDOR = apache +XERCES_CPE_ID_PRODUCT = xerces-c\+\+ +XERCES_INSTALL_STAGING = YES + +define XERCES_DISABLE_SAMPLES + $(SED) 's/add_subdirectory(samples)//' $(@D)/CMakeLists.txt +endef + +XERCES_POST_PATCH_HOOKS += XERCES_DISABLE_SAMPLES + +ifeq ($(BR2_PACKAGE_ICU),y) +XERCES_DEPENDENCIES += icu +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +XERCES_CONF_ENV += LIBS=-liconv +XERCES_DEPENDENCIES += libiconv +endif + +ifeq ($(BR2_PACKAGE_XERCES_ENABLE_NETWORK),y) +ifeq ($(BR2_PACKAGE_LIBCURL),y) +XERCES_CONF_OPTS += -Dnetwork-accessor=curl +XERCES_DEPENDENCIES += libcurl +else +XERCES_CONF_OPTS += -Dnetwork-accessor=socket +endif +else +XERCES_CONF_OPTS += -Dnetwork=OFF +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +XERCES_CONF_OPTS += -Dthreads=ON +else +XERCES_CONF_OPTS += -Dthreads=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/xfsprogs/0001-mdrestore-scrub-do-not-do-dynamic-linking-of-libtool.patch b/package/xfsprogs/0001-mdrestore-scrub-do-not-do-dynamic-linking-of-libtool.patch new file mode 100644 index 00000000..cb30e68d --- /dev/null +++ b/package/xfsprogs/0001-mdrestore-scrub-do-not-do-dynamic-linking-of-libtool.patch @@ -0,0 +1,54 @@ +From fa3a4e036c8c78325216ed21eff6145aeb186686 Mon Sep 17 00:00:00 2001 +From: Vicente Olivert Riera +Date: Wed, 25 Nov 2015 10:50:00 +0000 +Subject: [PATCH] mdrestore, scrub: do not do dynamic linking of libtool + libraries + +As explained in commit ece49daeff1a3cad765e106d678c608925c9d768, use +-static-libtool-libs instead of -static to allow fallback to the dynamic +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 +Upstream: Proposed: https://www.spinics.net/lists/xfs/msg36149.html +[baruch: update for v4.15.1; extend to include scrub] +Signed-off-by: Baruch Siach +[matt: update for v4.16.1; adjusted libunistring -> libicu] +Signed-off-by: Matt Weber +[Julien: rebased on v6.4.0] +Signed-off-by: Julien Olivain +--- + mdrestore/Makefile | 2 +- + scrub/Makefile | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/mdrestore/Makefile b/mdrestore/Makefile +index 4a932efb..7ea1fd45 100644 +--- a/mdrestore/Makefile ++++ b/mdrestore/Makefile +@@ -10,7 +10,7 @@ CFILES = xfs_mdrestore.c + + LLDLIBS = $(LIBXFS) $(LIBFROG) $(LIBRT) $(LIBUUID) $(LIBURCU) $(LIBPTHREAD) + LTDEPENDENCIES = $(LIBXFS) $(LIBFROG) +-LLDFLAGS = -static ++LLDFLAGS = -static-libtool-libs + + default: depend $(LTCOMMAND) + +diff --git a/scrub/Makefile b/scrub/Makefile +index aba14ed2..f0ef492f 100644 +--- a/scrub/Makefile ++++ b/scrub/Makefile +@@ -71,7 +71,7 @@ xfs_scrub.c + LLDLIBS += $(LIBHANDLE) $(LIBFROG) $(LIBICU_LIBS) $(LIBRT) $(LIBURCU) \ + $(LIBPTHREAD) + LTDEPENDENCIES += $(LIBHANDLE) $(LIBFROG) +-LLDFLAGS = -static ++LLDFLAGS = -static-libtool-libs + + ifeq ($(HAVE_MALLINFO),yes) + LCFLAGS += -DHAVE_MALLINFO +-- +2.45.2 + diff --git a/package/xfsprogs/0002-libxfs-do-not-try-to-run-the-crc32selftest.patch b/package/xfsprogs/0002-libxfs-do-not-try-to-run-the-crc32selftest.patch new file mode 100644 index 00000000..77bdc191 --- /dev/null +++ b/package/xfsprogs/0002-libxfs-do-not-try-to-run-the-crc32selftest.patch @@ -0,0 +1,47 @@ +From 94ae5db7d017480e103aa6f07cc86648b613d114 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 +required headers, like uuid/uuid.h (e.g. in a minimal environment). + +Moreover, running the crc32selftest natively is completely wrong, +because it passing on the host does not mean it would still pass n the +target (because endianness or bitness or alignment differences). + +So, just disable running the crc32selftest altogether. + +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" +Signed-off-by: "Fabrice Fontaine" +[Update for 4.18.0: crc32 has been moved from libxfs to libfrog] +[Julien: rebased on v6.4.0] +Signed-off-by: Julien Olivain +Upstream: patch to be superseded by https://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git/commit/?id=e51b89e657af7843d8c7aea3df49fe1f0f1d4ac2 +--- + libfrog/Makefile | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/libfrog/Makefile b/libfrog/Makefile +index f292afe3..1d0d2083 100644 +--- a/libfrog/Makefile ++++ b/libfrog/Makefile +@@ -57,9 +57,9 @@ ifeq ($(HAVE_GETMNTENT),yes) + LCFLAGS += -DHAVE_GETMNTENT + endif + +-LDIRT = gen_crc32table crc32table.h crc32selftest ++LDIRT = gen_crc32table crc32table.h + +-default: crc32selftest ltdepend $(LTLIBRARY) ++default: ltdepend $(LTLIBRARY) + + crc32table.h: gen_crc32table.c crc32defs.h + @echo " [CC] gen_crc32table" +-- +2.45.2 + diff --git a/package/xfsprogs/Config.in b/package/xfsprogs/Config.in new file mode 100644 index 00000000..1a29579d --- /dev/null +++ b/package/xfsprogs/Config.in @@ -0,0 +1,21 @@ +comment "xfsprogs needs a toolchain w/ threads, C++" + depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_XFSPROGS + bool "xfsprogs" + depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP # liburcu + select BR2_PACKAGE_INIH + select BR2_PACKAGE_LIBURCU + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + help + The XFS file system utilities and libraries + + https://xfs.wiki.kernel.org diff --git a/package/xfsprogs/xfsprogs.hash b/package/xfsprogs/xfsprogs.hash new file mode 100644 index 00000000..8c73e149 --- /dev/null +++ b/package/xfsprogs/xfsprogs.hash @@ -0,0 +1,6 @@ +# From https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/sha256sums.asc +sha256 c31868418bfbf49a3a9c47fc70cdffde9d96f4ff0051bd04a0881e6654648104 xfsprogs-6.4.0.tar.xz + +# Hash for license files +sha256 f6b78c087c3ebdf0f3c13415070dd480a3f35d8fc76f3d02180a407c1c812f79 LICENSES/GPL-2.0 +sha256 0b9a4febcdee6de55872501d5c1a8f5d8b0d1650cd4d5351995ceb22e889f8ca LICENSES/LGPL-2.1 diff --git a/package/xfsprogs/xfsprogs.mk b/package/xfsprogs/xfsprogs.mk new file mode 100644 index 00000000..e657c808 --- /dev/null +++ b/package/xfsprogs/xfsprogs.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# xfsprogs +# +################################################################################ + +XFSPROGS_VERSION = 6.4.0 +XFSPROGS_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/fs/xfs/xfsprogs +XFSPROGS_SOURCE = xfsprogs-$(XFSPROGS_VERSION).tar.xz +XFSPROGS_LICENSE = GPL-2.0, GPL-2.0+, LGPL-2.1 (libhandle, few headers) +XFSPROGS_LICENSE_FILES = LICENSES/GPL-2.0 LICENSES/LGPL-2.1 + +XFSPROGS_DEPENDENCIES = inih liburcu util-linux + +XFSPROGS_CONF_ENV = ac_cv_header_aio_h=yes ac_cv_lib_rt_lio_listio=yes PLATFORM="linux" +XFSPROGS_CONF_OPTS = \ + --enable-lib64=no \ + --enable-gettext=no \ + INSTALL_USER=root \ + INSTALL_GROUP=root \ + --enable-static + +ifeq ($(BR2_PACKAGE_ICU),y) +XFSPROGS_DEPENDENCIES += icu +XFSPROGS_CONF_OPTS += --enable-libicu +else +XFSPROGS_CONF_OPTS += --disable-libicu +endif + +ifeq ($(BR2_OPTIMIZE_0),y) +XFSPROGS_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -O1" +endif + +XFSPROGS_INSTALL_TARGET_OPTS = DIST_ROOT=$(TARGET_DIR) install + +$(eval $(autotools-package)) diff --git a/package/xinetd/0001-ar.patch b/package/xinetd/0001-ar.patch new file mode 100644 index 00000000..566f2f75 --- /dev/null +++ b/package/xinetd/0001-ar.patch @@ -0,0 +1,74 @@ +This patch changes all of the hard-coded invocations of "ar" to $(AR), to +support a cross-compilation toolchain. + +The content of this patch was copied from the OpenWrt project: +https://dev.openwrt.org/browser/packages/net/xinetd/patches/001-ar.patch + +Signed-off-by: Danomi Manchego + +--- a/libs/src/misc/Makefile.in ++++ b/libs/src/misc/Makefile.in +@@ -62,7 +62,7 @@ + + + $(LIBNAME): $(OBJECTS) +- ar r $@ $? ++ $(AR) r $@ $? + $(RANLIB) $@ + + install: $(LIBNAME) +--- a/libs/src/portable/Makefile.in ++++ b/libs/src/portable/Makefile.in +@@ -57,7 +57,7 @@ + + + $(LIBNAME): $(OBJECTS) +- ar r $@ $? ++ $(AR) r $@ $? + $(RANLIB) $@ + + install: $(LIBNAME) +--- a/libs/src/pset/Makefile.in ++++ b/libs/src/pset/Makefile.in +@@ -53,7 +53,7 @@ + mv $(LIBNAME) $(LIBDIR)/optimized + + $(LIBNAME): $(OBJECTS) +- ar r $@ $? ++ $(AR) r $@ $? + $(RANLIB) $@ + + install: $(LIBNAME) +--- a/libs/src/sio/Makefile.in ++++ b/libs/src/sio/Makefile.in +@@ -52,7 +52,7 @@ + $(INSTALL) $(FMODE) $(LIBNAME) $(LIBDIR)/optimized + + $(LIBNAME): $(OBJECTS) +- ar r $@ $? ++ $(AR) r $@ $? + $(RANLIB) $@ + + install: $(LIBNAME) +--- a/libs/src/str/Makefile.in ++++ b/libs/src/str/Makefile.in +@@ -63,7 +63,7 @@ + $(INSTALL) $(FMODE) $(LIBNAME) $(LIBDIR)-O + + $(LIBNAME): $(OBJECTS) +- ar r $@ $? ++ $(AR) r $@ $? + $(RANLIB) $@ + + LINT_IGNORE=possible pointer alignment|RCSid unused +--- a/libs/src/xlog/Makefile.in ++++ b/libs/src/xlog/Makefile.in +@@ -58,7 +58,7 @@ + $(INSTALL) $(FMODE) $(LIBNAME) $(LIBDIR)/optimized + + $(LIBNAME): $(OBJECTS) +- ar r $@ $? ++ $(AR) r $@ $? + $(RANLIB) $@ + + install: $(LIBNAME) diff --git a/package/xinetd/0002-destdir.patch b/package/xinetd/0002-destdir.patch new file mode 100644 index 00000000..7a323eb6 --- /dev/null +++ b/package/xinetd/0002-destdir.patch @@ -0,0 +1,55 @@ +This patch adds $(DESTDIR) to xinetd's installation paths, to support +installation to a cross-compiled RFS area. + +The content of this patch was inspired by the OpenWrt project: +https://dev.openwrt.org/browser/packages/net/xinetd/patches/002-destdir.patch + +Signed-off-by: Danomi Manchego + +diff -urN xinetd-2.3.15.ORIG/Makefile.in xinetd-2.3.15/Makefile.in +--- xinetd-2.3.15.ORIG/Makefile.in 2007-09-20 13:01:52.000000000 -0400 ++++ xinetd-2.3.15/Makefile.in 2012-06-18 10:20:00.540864388 -0400 +@@ -75,27 +75,27 @@ + + install: build + for i in $(DAEMONDIR) $(BINDIR) $(MANDIR)/man5 $(MANDIR)/man8 ; do \ +- test -d $$i || mkdir -p $$i ; done +- $(INSTALL_CMD) -m 755 xinetd/xinetd $(DAEMONDIR) +- $(INSTALL_CMD) -m 755 xinetd/itox $(DAEMONDIR) +- $(INSTALL_CMD) -m 755 $(SRCDIR)/xinetd/xconv.pl $(DAEMONDIR) +- $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.conf.man $(MANDIR)/man5/xinetd.conf.5 +- $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.log.man $(MANDIR)/man8/xinetd.log.8 +- $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.man $(MANDIR)/man8/xinetd.8 +- $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/itox.8 $(MANDIR)/man8/itox.8 +- $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xconv.pl.8 $(MANDIR)/man8/xconv.pl.8 ++ test -d $(DESTDIR)$$i || mkdir -p $(DESTDIR)$$i ; done ++ $(INSTALL_CMD) -m 755 xinetd/xinetd $(DESTDIR)$(DAEMONDIR) ++ $(INSTALL_CMD) -m 755 xinetd/itox $(DESTDIR)$(DAEMONDIR) ++ $(INSTALL_CMD) -m 755 $(SRCDIR)/xinetd/xconv.pl $(DESTDIR)$(DAEMONDIR) ++ $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.conf.man $(DESTDIR)$(MANDIR)/man5/xinetd.conf.5 ++ $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.log.man $(DESTDIR)$(MANDIR)/man8/xinetd.log.8 ++ $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.man $(DESTDIR)$(MANDIR)/man8/xinetd.8 ++ $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/itox.8 $(DESTDIR)$(MANDIR)/man8/itox.8 ++ $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xconv.pl.8 $(DESTDIR)$(MANDIR)/man8/xconv.pl.8 + @echo "You must put your xinetd.conf in /etc/xinetd.conf" + @echo "There is a sample config file in xinetd/sample.conf and you can" + @echo "use xconv.pl to convert your old inetd.conf file to an xinetd format" + + uninstall: +- rm -f $(DAEMONDIR)/xinetd +- rm -f $(DAEMONDIR)/itox +- rm -f $(DAEMONDIR)/xconv.pl +- rm -f $(MANDIR)/man5/xinetd.conf.5 +- rm -f $(MANDIR)/man8/xinetd.log.8 +- rm -f $(MANDIR)/man8/xinetd.8 +- rm -f $(MANDIR)/man8/itox.8 ++ rm -f $(DESTDIR)$(DAEMONDIR)/xinetd ++ rm -f $(DESTDIR)$(DAEMONDIR)/itox ++ rm -f $(DESTDIR)$(DAEMONDIR)/xconv.pl ++ rm -f $(DESTDIR)$(MANDIR)/man5/xinetd.conf.5 ++ rm -f $(DESTDIR)$(MANDIR)/man8/xinetd.log.8 ++ rm -f $(DESTDIR)$(MANDIR)/man8/xinetd.8 ++ rm -f $(DESTDIR)$(MANDIR)/man8/itox.8 + + distclean: clean + rm -f config.cache config.log Makefile config.status xinetd/itox diff --git a/package/xinetd/0003-rpc-fix.patch b/package/xinetd/0003-rpc-fix.patch new file mode 100644 index 00000000..6c32b729 --- /dev/null +++ b/package/xinetd/0003-rpc-fix.patch @@ -0,0 +1,26 @@ +This patch fixes compiling xinetd without RPC support. + +The content of this patch was copied from the OpenWrt project: +https://dev.openwrt.org/browser/packages/net/xinetd/patches/003-rpc_fix.patch + +Signed-off-by: Danomi Manchego + +--- a/xinetd/confparse.c ++++ b/xinetd/confparse.c +@@ -745,7 +745,7 @@ static status_e check_entry( struct serv + } + } + +-/* #ifndef NO_RPC */ ++#ifndef NO_RPC + #if defined(HAVE_RPC_RPCENT_H) || defined(HAVE_NETDB_H) + if ( SC_IS_RPC( scp ) && !SC_IS_UNLISTED( scp ) ) + { +@@ -759,6 +759,7 @@ static status_e check_entry( struct serv + SC_RPCDATA( scp )->rd_program_number = rep->r_number ; + } + else ++#endif + #endif /* ! NO_RPC */ + { + if ( !SC_IS_UNLISTED( scp ) ) diff --git a/package/xinetd/0004-configure-rlim_t.patch b/package/xinetd/0004-configure-rlim_t.patch new file mode 100644 index 00000000..e1cb48ac --- /dev/null +++ b/package/xinetd/0004-configure-rlim_t.patch @@ -0,0 +1,18 @@ +Have the configure script look for rlim_t in + +That's where POSIX says it should be. Some libcs will include its +definition via as well, but musl doesn't. + +Signed-off-by: Maarten ter Huurne + +--- xinetd-2.3.15.orig/configure 2007-09-20 16:58:27.000000000 +0200 ++++ xinetd-2.3.15/configure 2014-09-16 17:20:22.787665449 +0200 +@@ -7909,7 +7909,7 @@ + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include ++#include + #if STDC_HEADERS + #include + #endif diff --git a/package/xinetd/0005-CVE-2013-4342-xinetd-ignores-user-and-group-directiv.patch b/package/xinetd/0005-CVE-2013-4342-xinetd-ignores-user-and-group-directiv.patch new file mode 100644 index 00000000..bb2ee1fc --- /dev/null +++ b/package/xinetd/0005-CVE-2013-4342-xinetd-ignores-user-and-group-directiv.patch @@ -0,0 +1,29 @@ +From 91e2401a219121eae15244a6b25d2e79c1af5864 Mon Sep 17 00:00:00 2001 +From: Thomas Swan +Date: Wed, 2 Oct 2013 23:17:17 -0500 +Subject: [PATCH] CVE-2013-4342: xinetd: ignores user and group directives for + TCPMUX services + +Originally reported to Debian in 2005 and rediscovered , xinetd would execute TCPMUX services without dropping privilege to match the service configuration allowing the service to run with same privilege as the xinetd process (root). + +Signed-off-by: Peter Korsgaard +--- + xinetd/builtins.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/xinetd/builtins.c b/xinetd/builtins.c +index 3b85579..34a5bac 100644 +--- a/xinetd/builtins.c ++++ b/xinetd/builtins.c +@@ -617,7 +617,7 @@ static void tcpmux_handler( const struct server *serp ) + if( SC_IS_INTERNAL( scp ) ) { + SC_INTERNAL(scp, nserp); + } else { +- exec_server(nserp); ++ child_process(nserp); + } + } + +-- +2.20.1 + diff --git a/package/xinetd/Config.in b/package/xinetd/Config.in new file mode 100644 index 00000000..3bf3043d --- /dev/null +++ b/package/xinetd/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XINETD + bool "xinetd" + depends on BR2_USE_MMU # fork() + help + xinetd is a secure replacement for inetd. It was originally + written by panos@cs.colorado.edu. + + http://www.xinetd.org diff --git a/package/xinetd/xinetd.hash b/package/xinetd/xinetd.hash new file mode 100644 index 00000000..ce5a93f5 --- /dev/null +++ b/package/xinetd/xinetd.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 620b25f4ab4d72fdf32b13797156ea40df2049f1c07e640177e5fec544e9a94c xinetd-2.3.15.tar.gz +sha256 2f3dd19831b1837f7360f80a7700a130c04a59e387d4359299d6df712308bbed COPYRIGHT diff --git a/package/xinetd/xinetd.mk b/package/xinetd/xinetd.mk new file mode 100644 index 00000000..f58c26f0 --- /dev/null +++ b/package/xinetd/xinetd.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# xinetd +# +################################################################################ + +XINETD_VERSION = 2.3.15 +XINETD_SITE = \ + $(call github,xinetd-org,xinetd,xinetd-$(subst .,-,$(XINETD_VERSION))) +XINETD_LICENSE = xinetd license +XINETD_LICENSE_FILES = COPYRIGHT +XINETD_CPE_ID_VENDOR = xinetd + +# 0005-CVE-2013-4342-xinetd-ignores-user-and-group-directiv.patch +XINETD_IGNORE_CVES += CVE-2013-4342 + +XINETD_CFLAGS = $(TARGET_CFLAGS) + +# Three cases here: +# 1. We have libtirpc, use it by passing special flags +# 2. We have native RPC support, use it, no need to pass special +# flags (so this case 2 is implicit and not visible below) +# 3. We don't have RPC support, pass -DNO_RPC to disable it +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +XINETD_DEPENDENCIES += libtirpc host-pkgconf +XINETD_CFLAGS += "`$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`" +XINETD_LIBS += "`$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`" +else ifeq ($(BR2_TOOLCHAIN_HAS_NATIVE_RPC),) +XINETD_CFLAGS += -DNO_RPC +endif + +XINETD_CONF_ENV += \ + CFLAGS="$(XINETD_CFLAGS)" \ + LIBS="$(XINETD_LIBS)" + +XINETD_MAKE_OPTS = AR="$(TARGET_AR)" + +$(eval $(autotools-package)) diff --git a/package/xl2tp/Config.in b/package/xl2tp/Config.in new file mode 100644 index 00000000..7e2d2f6e --- /dev/null +++ b/package/xl2tp/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_XL2TP + bool "xl2tp" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBPCAP + help + Layer 2 Tunnelling Protocol (RFC2661). + + xl2tpd is an open source implementation of the L2TP tunneling + protocol. xl2tpd is forked from l2tpd and is maintained by + Xelerance Corporation. + + http://www.xelerance.com/software/xl2tpd/ diff --git a/package/xl2tp/xl2tp.hash b/package/xl2tp/xl2tp.hash new file mode 100644 index 00000000..64db273a --- /dev/null +++ b/package/xl2tp/xl2tp.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 47f52b9c56cabe77766533bca3736a8198581ff38443eb4b4c8971c885ac9329 xl2tp-1.3.18.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/xl2tp/xl2tp.mk b/package/xl2tp/xl2tp.mk new file mode 100644 index 00000000..e0205d4e --- /dev/null +++ b/package/xl2tp/xl2tp.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# xl2tp +# +################################################################################ + +XL2TP_VERSION = 1.3.18 +XL2TP_SITE = $(call github,xelerance,xl2tpd,v$(XL2TP_VERSION)) +XL2TP_DEPENDENCIES = libpcap +XL2TP_LICENSE = GPL-2.0 +XL2TP_LICENSE_FILES = LICENSE +XL2TP_SELINUX_MODULES = l2tp + +ifeq ($(BR2_STATIC_LIBS),y) +XL2TP_LDLIBS = LDLIBS="`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`" +endif + +define XL2TP_BUILD_CMDS + $(SED) 's/ -O2 //' $(@D)/Makefile + $(TARGET_CONFIGURE_OPTS) $(MAKE) $(XL2TP_LDLIBS) -C $(@D) +endef + +define XL2TP_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) DESTDIR=$(TARGET_DIR) PREFIX=/usr -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/xl2tp/xl2tpd b/package/xl2tp/xl2tpd new file mode 100755 index 00000000..36c12a23 --- /dev/null +++ b/package/xl2tp/xl2tpd @@ -0,0 +1,27 @@ +#!/bin/sh +# +PATH=/bin:/usr/bin:/sbin:/usr/sbin +DAEMON=/usr/sbin/xl2tpd +PIDFILE=/var/run/xl2tpd.pid + +test -f $DAEMON || exit 0 + +case "$1" in + start) + start-stop-daemon -S -p $PIDFILE -x $DAEMON -- -D & + ;; + stop) + start-stop-daemon -K -p $PIDFILE -x $DAEMON + ;; + restart|force-reload) + start-stop-daemon -K -p $PIDFILE -x $DAEMON + sleep 1 + start-stop-daemon -S -p $PIDFILE -x $DAEMON + ;; + *) + echo "Usage: /etc/init.d/xl2tdp {start|stop|restart|force-reload}" + exit 1 + ;; +esac + +exit 0 diff --git a/package/xml-security-c/0001-fix-build-with-libressl-3.5.0.patch b/package/xml-security-c/0001-fix-build-with-libressl-3.5.0.patch new file mode 100644 index 00000000..1b2591aa --- /dev/null +++ b/package/xml-security-c/0001-fix-build-with-libressl-3.5.0.patch @@ -0,0 +1,91 @@ +From 66d1d626cf1405119d89c6fd0fb7e9019bd67f6c Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 6 Jun 2022 10:24:58 +0200 +Subject: [PATCH] fix build with libressl >= 3.5.0 + +Fix the following build failure with libressl >= 3.5.0: + +In file included from ../xsec/enc/OpenSSL/OpenSSLCryptoBase64.hpp:36:0, + from enc/OpenSSL/OpenSSLCryptoKeyRSA.cpp:35: +../xsec/enc/OpenSSL/OpenSSLSupport.hpp:92:20: error: field 'mp_ctx_store' has incomplete type 'EVP_ENCODE_CTX {aka evp_Encode_Ctx_st}' + EVP_ENCODE_CTX mp_ctx_store; + ^~~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/e908e59ec5b8e1ac505c44900dcb39527f0ec1d3 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://issues.apache.org/jira/browse/SANTUARIO-588] +--- + xsec/enc/OpenSSL/OpenSSLCryptoBase64.cpp | 3 ++- + xsec/enc/OpenSSL/OpenSSLCryptoBase64.hpp | 3 ++- + xsec/enc/OpenSSL/OpenSSLSupport.cpp | 5 +++-- + xsec/enc/OpenSSL/OpenSSLSupport.hpp | 3 ++- + 4 files changed, 9 insertions(+), 5 deletions(-) + +diff --git a/xsec/enc/OpenSSL/OpenSSLCryptoBase64.cpp b/xsec/enc/OpenSSL/OpenSSLCryptoBase64.cpp +index a8ea9f1d..a9a84e3f 100644 +--- a/xsec/enc/OpenSSL/OpenSSLCryptoBase64.cpp ++++ b/xsec/enc/OpenSSL/OpenSSLCryptoBase64.cpp +@@ -48,7 +48,8 @@ XERCES_CPP_NAMESPACE_USE + // Construction/Destruction + // -------------------------------------------------------------------------------- + +-#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER) ++#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || \ ++ ((defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x30500000L)) + OpenSSLCryptoBase64::OpenSSLCryptoBase64() : mp_ectx(&m_ectx_store), mp_dctx(&m_dctx_store) { } + OpenSSLCryptoBase64::~OpenSSLCryptoBase64() { } + #else +diff --git a/xsec/enc/OpenSSL/OpenSSLCryptoBase64.hpp b/xsec/enc/OpenSSL/OpenSSLCryptoBase64.hpp +index 82aeb0a1..7c947d50 100644 +--- a/xsec/enc/OpenSSL/OpenSSLCryptoBase64.hpp ++++ b/xsec/enc/OpenSSL/OpenSSLCryptoBase64.hpp +@@ -205,7 +205,8 @@ private : + EVP_ENCODE_CTX *mp_ectx; // Encode context + EVP_ENCODE_CTX *mp_dctx; // Decode context + +-#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER) ++#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || \ ++ ((defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x30500000L)) + EVP_ENCODE_CTX m_ectx_store; + EVP_ENCODE_CTX m_dctx_store; + #endif +diff --git a/xsec/enc/OpenSSL/OpenSSLSupport.cpp b/xsec/enc/OpenSSL/OpenSSLSupport.cpp +index cf874f82..c4453004 100644 +--- a/xsec/enc/OpenSSL/OpenSSLSupport.cpp ++++ b/xsec/enc/OpenSSL/OpenSSLSupport.cpp +@@ -273,7 +273,8 @@ int ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s) + + #endif + +-#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER) ++#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || \ ++ ((defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x30500000L)) + EvpEncodeCtxRAII::EvpEncodeCtxRAII() : mp_ctx(&mp_ctx_store) { }; + EvpEncodeCtxRAII::~EvpEncodeCtxRAII() { } + #else +@@ -289,4 +290,4 @@ EVP_ENCODE_CTX + return mp_ctx; + } + +-#endif +\ No newline at end of file ++#endif +diff --git a/xsec/enc/OpenSSL/OpenSSLSupport.hpp b/xsec/enc/OpenSSL/OpenSSLSupport.hpp +index b5f67f26..09d50899 100644 +--- a/xsec/enc/OpenSSL/OpenSSLSupport.hpp ++++ b/xsec/enc/OpenSSL/OpenSSLSupport.hpp +@@ -88,7 +88,8 @@ public: + + private: + EVP_ENCODE_CTX *mp_ctx; +-#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER) ++#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || \ ++ ((defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x30500000L)) + EVP_ENCODE_CTX mp_ctx_store; + #endif + }; +-- +2.35.1 + diff --git a/package/xml-security-c/Config.in b/package/xml-security-c/Config.in new file mode 100644 index 00000000..c7963be6 --- /dev/null +++ b/package/xml-security-c/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_XML_SECURITY_C + bool "xml-security-c" + depends on BR2_INSTALL_LIBSTDCPP # xerces + depends on !BR2_STATIC_LIBS # xerces + depends on BR2_USE_WCHAR # xerces + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_XERCES + help + The xml-security-c library is a C++ implementation of + the XML Digital Signature and Encryption specifications. + + https://santuario.apache.org/cindex.html + +comment "xml-security-c needs a toolchain w/ C++, wchar, dynamic library, threads, gcc >= 4.7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || \ + !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/xml-security-c/xml-security-c.hash b/package/xml-security-c/xml-security-c.hash new file mode 100644 index 00000000..f4b7041a --- /dev/null +++ b/package/xml-security-c/xml-security-c.hash @@ -0,0 +1,3 @@ +# From http://www.apache.org/dist/santuario/c-library/xml-security-c-2.0.4.tar.gz.sha256 +sha256 a78da6720f6c2ba14100d2426131e0d33eac5a2dba5cc11bdd04974b7eb89003 xml-security-c-2.0.4.tar.gz +sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE.txt diff --git a/package/xml-security-c/xml-security-c.mk b/package/xml-security-c/xml-security-c.mk new file mode 100644 index 00000000..fda9af47 --- /dev/null +++ b/package/xml-security-c/xml-security-c.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# xml-security-c +# +################################################################################ + +XML_SECURITY_C_VERSION = 2.0.4 +XML_SECURITY_C_SITE = http://archive.apache.org/dist/santuario/c-library +XML_SECURITY_C_LICENSE = Apache-2.0 +XML_SECURITY_C_LICENSE_FILES = LICENSE.txt +XML_SECURITY_C_DEPENDENCIES = openssl xerces +XML_SECURITY_C_INSTALL_STAGING = YES + +XML_SECURITY_C_CONF_ENV = \ + xml_cv_func_getcwd_null=yes \ + CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11" + +$(eval $(autotools-package)) diff --git a/package/xmlstarlet/0001-Fix-build-issues-with-libxml2-2.12.patch b/package/xmlstarlet/0001-Fix-build-issues-with-libxml2-2.12.patch new file mode 100644 index 00000000..74034dad --- /dev/null +++ b/package/xmlstarlet/0001-Fix-build-issues-with-libxml2-2.12.patch @@ -0,0 +1,97 @@ +From 702988467d67c3a33255de4c543f56767c64c72e Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 23 Dec 2023 21:30:30 +0100 +Subject: [PATCH] Fix build issues with libxml2 2.12 + +Based on initial work from Bernd Kuhls , improved by +Yaakov Selkowitz. + +Upstream: https://sourceforge.net/p/xmlstar/patches/22/ +Signed-off-by: Thomas Petazzoni +--- + src/trans.h | 1 + + src/xml.c | 2 +- + src/xml_edit.c | 1 + + src/xml_elem.c | 2 +- + src/xml_format.c | 1 + + src/xmlstar.h | 2 +- + 6 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/src/trans.h b/src/trans.h +index 016304e..395462c 100644 +--- a/src/trans.h ++++ b/src/trans.h +@@ -36,6 +36,7 @@ THE SOFTWARE. + #include + #include + #include ++#include + + #include + #include +diff --git a/src/xml.c b/src/xml.c +index cf47cc2..e6f19c1 100644 +--- a/src/xml.c ++++ b/src/xml.c +@@ -104,7 +104,7 @@ void reportGenericError(void* ctx, const char * msg, ...) { + /* by default all errors are reported */ + static ErrorInfo errorInfo = { NULL, NULL, VERBOSE, CONTINUE }; + +-void reportError(void *ptr, xmlErrorPtr error) ++void reportError(void *ptr, const xmlError *error) + { + ErrorInfo *errorInfo = (ErrorInfo*) ptr; + assert(errorInfo); +diff --git a/src/xml_edit.c b/src/xml_edit.c +index e199178..b3da8a4 100644 +--- a/src/xml_edit.c ++++ b/src/xml_edit.c +@@ -42,6 +42,7 @@ THE SOFTWARE. + #include + #include + #include ++#include + #include + + #include "xmlstar.h" +diff --git a/src/xml_elem.c b/src/xml_elem.c +index 024e62a..a73038a 100644 +--- a/src/xml_elem.c ++++ b/src/xml_elem.c +@@ -186,7 +186,7 @@ typedef struct { + * put @name into @data->array[@data->offset] + */ + static void +-hash_key_put(void *payload, void *data, xmlChar *name) ++hash_key_put(void *payload, void *data, const xmlChar *name) + { + ArrayDest *dest = data; + dest->array[dest->offset++] = name; +diff --git a/src/xml_format.c b/src/xml_format.c +index e9da4df..ddd6614 100644 +--- a/src/xml_format.c ++++ b/src/xml_format.c +@@ -42,6 +42,7 @@ THE SOFTWARE. + #include + #include + #include ++#include + + #include "xmlstar.h" + +diff --git a/src/xmlstar.h b/src/xmlstar.h +index 3e1eed3..e8d7177 100644 +--- a/src/xmlstar.h ++++ b/src/xmlstar.h +@@ -32,7 +32,7 @@ typedef struct _errorInfo { + ErrorStop stop; + } ErrorInfo; + +-void reportError(void *ptr, xmlErrorPtr error); ++void reportError(void *ptr, const xmlError *error); + void suppressErrors(void); + + typedef struct _gOptions { +-- +2.43.0 + diff --git a/package/xmlstarlet/Config.in b/package/xmlstarlet/Config.in new file mode 100644 index 00000000..99762b87 --- /dev/null +++ b/package/xmlstarlet/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XMLSTARLET + bool "xmlstarlet" + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_LIBXSLT + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Command Line XML Toolkit + + http://xmlstar.sourceforge.net/ diff --git a/package/xmlstarlet/xmlstarlet.hash b/package/xmlstarlet/xmlstarlet.hash new file mode 100644 index 00000000..4b696bb2 --- /dev/null +++ b/package/xmlstarlet/xmlstarlet.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/xmlstar/files/xmlstarlet/1.6.1/ +sha1 87bb104f546caca71b9540807c5b2738944cb219 xmlstarlet-1.6.1.tar.gz +md5 f3c5dfa3b1a2ee06cd57c255cc8b70a0 xmlstarlet-1.6.1.tar.gz +# Locally computed +sha256 6641cc5b00c1651fa22175f34efd01695e64a348b1ba07048538276f44866862 COPYING diff --git a/package/xmlstarlet/xmlstarlet.mk b/package/xmlstarlet/xmlstarlet.mk new file mode 100644 index 00000000..b79c3f56 --- /dev/null +++ b/package/xmlstarlet/xmlstarlet.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# xmlstarlet +# +################################################################################ + +XMLSTARLET_VERSION = 1.6.1 +XMLSTARLET_SITE = http://downloads.sourceforge.net/project/xmlstar/xmlstarlet/$(XMLSTARLET_VERSION) +XMLSTARLET_LICENSE = MIT +XMLSTARLET_LICENSE_FILES = COPYING + +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 + +ifeq ($(BR2_STATIC_LIBS),y) +XMLSTARLET_CONF_OPTS += --enable-static-libs +XMLSTARLET_CONF_ENV = LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs libxml-2.0 libexslt`" +else +XMLSTARLET_CONF_OPTS += --disable-static-libs +endif + +HOST_XMLSTARLET_DEPENDENCIES += host-libxml2 host-libxslt + +HOST_XMLSTARLET_CONF_OPTS += \ + --with-libxml-prefix=$(HOST_DIR) \ + --with-libxslt-prefix=$(HOST_DIR) + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/xmrig/Config.in b/package/xmrig/Config.in new file mode 100644 index 00000000..0b5f5370 --- /dev/null +++ b/package/xmrig/Config.in @@ -0,0 +1,33 @@ +# archs officially supported by upstream +config BR2_PACKAGE_XMRIG_ARCH_SUPPORTS + bool + default y if BR2_ARM_CPU_ARMV7A + default y if BR2_aarch64 + default y if BR2_x86_64 + default y if BR2_i386 + +config BR2_PACKAGE_XMRIG + bool "xmrig" + depends on BR2_PACKAGE_XMRIG_ARCH_SUPPORTS + depends on BR2_USE_MMU # libuv + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv + # xmrig needs fenv.h which is not provided by uclibc + depends on !BR2_TOOLCHAIN_USES_UCLIBC + depends on !BR2_STATIC_LIBS # libuv + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libuv + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LIBUV + help + RandomX, CryptoNight, AstroBWT and Argon2 CPU/GPU miner. + + https://xmrig.com + +comment "xmrig needs a glibc or musl toolchain w/ NPTL, dynamic library, C++, gcc >= 4.9" + depends on BR2_PACKAGE_XMRIG_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + BR2_TOOLCHAIN_USES_UCLIBC || BR2_STATIC_LIBS || \ + !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/xmrig/xmrig.hash b/package/xmrig/xmrig.hash new file mode 100644 index 00000000..d7fdbe0d --- /dev/null +++ b/package/xmrig/xmrig.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 5d76fb19190956c564b405119315bc93db4ed8062b251d5e96bed70c5fa8033c xmrig-6.21.3.tar.gz +sha256 589ed823e9a84c56feb95ac58e7cf384626b9cbf4fda2a907bc36e103de1bad2 LICENSE diff --git a/package/xmrig/xmrig.mk b/package/xmrig/xmrig.mk new file mode 100644 index 00000000..d01b0018 --- /dev/null +++ b/package/xmrig/xmrig.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# xmrig +# +################################################################################ + +XMRIG_VERSION = 6.21.3 +XMRIG_SITE = $(call github,xmrig,xmrig,v$(XMRIG_VERSION)) +XMRIG_LICENSE = GPL-3.0+ +XMRIG_LICENSE_FILES = LICENSE +XMRIG_DEPENDENCIES = libuv +XMRIG_CONF_OPTS = -DWITH_CUDA=OFF + +ifeq ($(BR2_PACKAGE_HAS_LIBOPENCL),y) +XMRIG_CONF_OPTS += -DWITH_OPENCL=ON +XMRIG_DEPENDENCIES += libopencl +else +XMRIG_CONF_OPTS += -DWITH_OPENCL=OFF +endif + +ifeq ($(BR2_PACKAGE_HWLOC),y) +XMRIG_CONF_OPTS += -DWITH_HWLOC=ON +XMRIG_DEPENDENCIES += hwloc +else +XMRIG_CONF_OPTS += -DWITH_HWLOC=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +XMRIG_CONF_OPTS += -DWITH_TLS=ON +XMRIG_DEPENDENCIES += openssl +else +XMRIG_CONF_OPTS += -DWITH_TLS=OFF +XMRIG_SUFFIX = -notls +endif + +# Upstream provides no installation rule: +# *** No rule to make target 'install/fast'. Stop. +define XMRIG_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/xmrig$(XMRIG_SUFFIX) \ + $(TARGET_DIR)/usr/bin/xmrig$(XMRIG_SUFFIX) +endef + +$(eval $(cmake-package)) diff --git a/package/xorcurses/Config.in b/package/xorcurses/Config.in new file mode 100644 index 00000000..6a94a2ee --- /dev/null +++ b/package/xorcurses/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_XORCURSES + bool "xorcurses" + select BR2_PACKAGE_NCURSES + help + XorCurses is a game remake of the 8-bit game 'Xor'. Your task + is to roam around a series of mazes where you have to collect + all blue masks before finding the exit. Note that the game + needs a terminal with colors, i.e. make sure that the TERM + environment variable is set to "linux" ("vt100" won't work). + + https://github.com/jwm-art-net/XorCurses/ diff --git a/package/xorcurses/xorcurses.hash b/package/xorcurses/xorcurses.hash new file mode 100644 index 00000000..549b5adf --- /dev/null +++ b/package/xorcurses/xorcurses.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 6c60a41b9a74ecd5f6ded337b9982e81eaf7b31a654a4a32b219e3a2ff638ae3 xorcurses-04b664826c5bd30dd483f6a5c8c189ef97e255da.tar.gz +sha256 8632a67e5a76be4cdf7fd0fc6509e21bd6c647183bd9d2325310d5098c652a3a README diff --git a/package/xorcurses/xorcurses.mk b/package/xorcurses/xorcurses.mk new file mode 100644 index 00000000..10b746f2 --- /dev/null +++ b/package/xorcurses/xorcurses.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# xorcurses +# +################################################################################ + +XORCURSES_VERSION = 04b664826c5bd30dd483f6a5c8c189ef97e255da +XORCURSES_SITE = $(call github,jwm-art-net,XorCurses,$(XORCURSES_VERSION)) +XORCURSES_DEPENDENCIES = ncurses +XORCURSES_LICENSE = GPL-3.0 +XORCURSES_LICENSE_FILES = README + +define XORCURSES_BUILD_CMDS + $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) -std=gnu99 \ + -DDATADIR='\"/usr/share/xorcurses\"' \ + -DVERSION='\"$(XORCURSES_VERSION)\"'" +endef + +define XORCURSES_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/xorcurses $(TARGET_DIR)/usr/bin/xorcurses + mkdir -p $(TARGET_DIR)/usr/share/xorcurses/maps + $(INSTALL) -D -m 0644 $(@D)/maps/*.xcm \ + $(TARGET_DIR)/usr/share/xorcurses/maps/ +endef + +$(eval $(generic-package)) diff --git a/package/xorriso/Config.in b/package/xorriso/Config.in new file mode 100644 index 00000000..60b2642d --- /dev/null +++ b/package/xorriso/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_XORRISO + bool "xorriso" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + xorriso copies file objects from POSIX compliant + filesystems into Rock Ridge enhanced ISO 9660 filesystems + and allows session-wise manipulation of such filesystems. + It can load the management information of existing ISO + images and it writes the session results to optical media + or to filesystem objects. + + Vice versa xorriso is able to copy file objects out of ISO + 9660 filesystems. + + https://www.gnu.org/software/xorriso + +comment "xorriso needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/xorriso/Config.in.host b/package/xorriso/Config.in.host new file mode 100644 index 00000000..2baa0437 --- /dev/null +++ b/package/xorriso/Config.in.host @@ -0,0 +1,14 @@ +config BR2_PACKAGE_HOST_XORRISO + bool "host xorriso" + help + xorriso copies file objects from POSIX compliant + filesystems into Rock Ridge enhanced ISO 9660 filesystems + and allows session-wise manipulation of such filesystems. + It can load the management information of existing ISO + images and it writes the session results to optical media + or to filesystem objects. + + Vice versa xorriso is able to copy file objects out of ISO + 9660 filesystems. + + https://www.gnu.org/software/xorriso diff --git a/package/xorriso/xorriso.hash b/package/xorriso/xorriso.hash new file mode 100644 index 00000000..cbbd360d --- /dev/null +++ b/package/xorriso/xorriso.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 3ec7393d4a9dcbf5f74309c28a415f55227ec62770b95ae993ac8d7a3b152972 xorriso-1.5.4.pl02.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING +sha256 72e99e72cd68f226415e5d898f3b38e24ae7991ed038ed72d789fff5b060f028 COPYRIGHT diff --git a/package/xorriso/xorriso.mk b/package/xorriso/xorriso.mk new file mode 100644 index 00000000..ac6b0cdf --- /dev/null +++ b/package/xorriso/xorriso.mk @@ -0,0 +1,79 @@ +################################################################################ +# +# xorriso +# +################################################################################ + +XORRISO_VERSION = 1.5.4.pl02 +XORRISO_SITE = $(BR2_GNU_MIRROR)/xorriso +XORRISO_LICENSE = GPL-3.0+ +XORRISO_LICENSE_FILES = COPYING COPYRIGHT + +# Disable everything until we actually need those features, and add the correct +# host libraries +HOST_XORRISO_CONF_OPTS = \ + --enable-zlib \ + --disable-xattr-h-pref-attr \ + --disable-libbz2 \ + --disable-libcdio \ + --disable-libreadline \ + --disable-libedit \ + --disable-libacl + +HOST_XORRISO_DEPENDENCIES = host-zlib + +# libcdio doesn't make sense for Linux +# http://lists.gnu.org/archive/html/bug-xorriso/2017-04/msg00004.html +XORRISO_CONF_OPTS = --disable-libcdio + +# we need sys/xattr.h +XORRISO_CONF_OPTS += \ + --disable-xattr-h-pref-attr + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +XORRISO_DEPENDENCIES += libiconv +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +XORRISO_DEPENDENCIES += readline +XORRISO_CONF_OPTS += --enable-libreadline +else +XORRISO_CONF_OPTS += --disable-libreadline +endif + +ifeq ($(BR2_PACKAGE_ACL),y) +XORRISO_DEPENDENCIES += acl +XORRISO_CONF_OPTS += --enable-libacl +else +XORRISO_CONF_OPTS += --disable-libacl +endif + +ifeq ($(BR2_PACKAGE_ATTR),y) +XORRISO_DEPENDENCIES += attr +XORRISO_CONF_OPTS += --enable-xattr +else +XORRISO_CONF_OPTS += --disable-xattr +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +XORRISO_DEPENDENCIES += zlib +XORRISO_CONF_OPTS += --enable-zlib +else +XORRISO_CONF_OPTS += --disable-zlib +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +XORRISO_DEPENDENCIES += bzip2 +XORRISO_CONF_OPTS += --enable-libbz2 +else +XORRISO_CONF_OPTS += --disable-libbz2 +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +XORRISO_CONF_OPTS += --enable-jtethreads +else +XORRISO_CONF_OPTS += --disable-jtethreads +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/xr819-xradio/Config.in b/package/xr819-xradio/Config.in new file mode 100644 index 00000000..b8acd71b --- /dev/null +++ b/package/xr819-xradio/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_XR819_XRADIO + bool "xr819-xradio" + depends on BR2_LINUX_KERNEL + depends on BR2_arm || BR2_armeb || BR2_aarch64 || \ + BR2_aarch64_be || BR2_riscv + help + Wireless driver for SDIO WiFi chip XR819 + + https://github.com/fifteenhex/xradio + +comment "xr819-xradio driver needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL diff --git a/package/xr819-xradio/xr819-xradio.hash b/package/xr819-xradio/xr819-xradio.hash new file mode 100644 index 00000000..388a3a3c --- /dev/null +++ b/package/xr819-xradio/xr819-xradio.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 8bc3d745ed08b7f3a9c0413c2635d0faf647362b41494d04edc98709b869deef xr819-xradio-3a1f77fb2db248b7d18d93b67b16e0d6c91db184.tar.gz +# Locally computed +sha256 db296f2f7f35bca3a174efb0eb392b3b17bd94b341851429a3dff411b1c2fc73 LICENSE diff --git a/package/xr819-xradio/xr819-xradio.mk b/package/xr819-xradio/xr819-xradio.mk new file mode 100644 index 00000000..8b576a34 --- /dev/null +++ b/package/xr819-xradio/xr819-xradio.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# xr819-xradio +# +################################################################################ + +XR819_XRADIO_VERSION = 3a1f77fb2db248b7d18d93b67b16e0d6c91db184 +XR819_XRADIO_SITE = $(call github,fifteenhex,xradio,$(XR819_XRADIO_VERSION)) +XR819_XRADIO_LICENSE = GPL-2.0 +XR819_XRADIO_LICENSE_FILES = LICENSE + +define XR819_XRADIO_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_WIRELESS) + $(call KCONFIG_ENABLE_OPT,CONFIG_CFG80211) + $(call KCONFIG_ENABLE_OPT,CONFIG_MAC80211) + $(call KCONFIG_ENABLE_OPT,CONFIG_MMC) + $(call KCONFIG_ENABLE_OPT,CONFIG_PM) +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/package/xscreensaver/Config.in b/package/xscreensaver/Config.in new file mode 100644 index 00000000..ba259274 --- /dev/null +++ b/package/xscreensaver/Config.in @@ -0,0 +1,38 @@ +config BR2_PACKAGE_XSCREENSAVER + bool "xscreensaver" + depends on BR2_PACKAGE_XORG7 + depends on BR2_PACKAGE_HAS_LIBGL # libglu + depends on BR2_INSTALL_LIBSTDCPP # libgtk2 -> pango + depends on BR2_TOOLCHAIN_HAS_THREADS # gdk-pixbuf, libgtk2 -> glib2 + depends on BR2_USE_WCHAR # gdk-pixbuf, libgtk2 -> glib2 + depends on BR2_USE_MMU # gdk-pixbuf, libgtk2 -> glib2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libgtk2 -> pango -> harfbuzz + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libgtk2 -> pango -> harfbuzz + select BR2_PACKAGE_GDK_PIXBUF + select BR2_PACKAGE_GDK_PIXBUF_XLIB + select BR2_PACKAGE_LIBGLU + select BR2_PACKAGE_LIBGTK2 + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXFT + select BR2_PACKAGE_XLIB_LIBXI + select BR2_PACKAGE_XLIB_LIBXT + help + XScreenSaver is the standard screen saver collection shipped + on most Linux and Unix systems running the X11 Window + System. + + On X11 systems, XScreenSaver is two things: it is both a + large collection of screen savers; and it is also the + framework for blanking and locking the screen. + + http://www.jwz.org/xscreensaver/ + +comment "xscreensaver needs a toolchain w/ wchar, C++, threads, gcc >= 4.9, OpenGL backend" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_USE_WCHAR || !BR2_PACKAGE_HAS_LIBGL diff --git a/package/xscreensaver/xscreensaver.hash b/package/xscreensaver/xscreensaver.hash new file mode 100644 index 00000000..27ef7d8f --- /dev/null +++ b/package/xscreensaver/xscreensaver.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 328d51797352acf58ca5bab49e76fbf26034e7cad785f651ea11ce7b43fba25a xscreensaver-6.03.tar.gz +sha256 8a03451ba5c4c9af669b53e47e50c38c149b9e152d3d627809b962da7b760bbd hacks/screenhack.h +sha256 56db580415bb313a4a82c5e08f106304904d15d42faf8e6ab14b34e14e2087a5 hacks/glx/chessmodels.h diff --git a/package/xscreensaver/xscreensaver.mk b/package/xscreensaver/xscreensaver.mk new file mode 100644 index 00000000..466d3099 --- /dev/null +++ b/package/xscreensaver/xscreensaver.mk @@ -0,0 +1,75 @@ +################################################################################ +# +# xscreensaver +# +################################################################################ + +XSCREENSAVER_VERSION = 6.03 +XSCREENSAVER_SITE = https://www.jwz.org/xscreensaver + +# N.B. GPL-2.0+ code (in the hacks/glx subdirectory) is not currently built. +XSCREENSAVER_LICENSE = MIT-like, GPL-2.0+ +XSCREENSAVER_LICENSE_FILES = hacks/screenhack.h hacks/glx/chessmodels.h +XSCREENSAVER_CPE_ID_VALID = YES +XSCREENSAVER_SELINUX_MODULES = xdg xscreensaver xserver + +XSCREENSAVER_DEPENDENCIES = \ + gdk-pixbuf \ + gdk-pixbuf-xlib \ + jpeg \ + libgl \ + libglu \ + libgtk2 \ + libxml2 \ + xlib_libX11 \ + xlib_libXft \ + xlib_libXi \ + xlib_libXt \ + $(TARGET_NLS_DEPENDENCIES) \ + host-intltool + +# otherwise we end up with host include/library dirs passed to the +# compiler/linker +XSCREENSAVER_CONF_OPTS = \ + --includedir=$(STAGING_DIR)/usr/include \ + --libdir=$(STAGING_DIR)/usr/lib \ + --with-gl=yes + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +XSCREENSAVER_CONF_OPTS += --with-png=yes +XSCREENSAVER_DEPENDENCIES += libpng +else +XSCREENSAVER_CONF_OPTS += --with-png=no +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +XSCREENSAVER_CONF_OPTS += --with-systemd=yes +XSCREENSAVER_DEPENDENCIES += systemd +else +XSCREENSAVER_CONF_OPTS += --with-systemd=no +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +XSCREENSAVER_CONF_OPTS += --with-xinerama-ext=yes +XSCREENSAVER_DEPENDENCIES += xlib_libXinerama +else +XSCREENSAVER_CONF_OPTS += --with-xinerama-ext=no +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) +XSCREENSAVER_CONF_OPTS += --with-randr-ext=yes +XSCREENSAVER_DEPENDENCIES += xlib_libXrandr +else +XSCREENSAVER_CONF_OPTS += --with-randr-ext=no +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXXF86VM),y) +XSCREENSAVER_CONF_OPTS += --with-xf86vmode-ext=yes +XSCREENSAVER_DEPENDENCIES += xlib_libXxf86vm +else +XSCREENSAVER_CONF_OPTS += --with-xf86vmode-ext=no +endif + +XSCREENSAVER_INSTALL_TARGET_OPTS = install_prefix="$(TARGET_DIR)" install + +$(eval $(autotools-package)) diff --git a/package/xtables-addons/Config.in b/package/xtables-addons/Config.in new file mode 100644 index 00000000..36a42c7e --- /dev/null +++ b/package/xtables-addons/Config.in @@ -0,0 +1,19 @@ +comment "xtables-addons needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +comment "xtables-addons needs a toolchain w/ dynamic library, threads" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_XTABLES_ADDONS + bool "xtables-addons" + depends on BR2_LINUX_KERNEL + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS # extensions are .so + select BR2_PACKAGE_IPTABLES + select BR2_LINUX_NEEDS_MODULES # not using kernel-module infra + help + Xtables-addons is the successor to patch-o-matic(-ng). + Likewise, it contains extensions that were not, or are not + yet, accepted in the main kernel/iptables packages. + + https://inai.de/projects/xtables-addons/ diff --git a/package/xtables-addons/xtables-addons.hash b/package/xtables-addons/xtables-addons.hash new file mode 100644 index 00000000..7bdbbb85 --- /dev/null +++ b/package/xtables-addons/xtables-addons.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3e823f71720519ced31c4c7d2bfaf7120d9c01c59a0843dfcbe93c95c64d81c1 xtables-addons-3.24.tar.xz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 LICENSE diff --git a/package/xtables-addons/xtables-addons.mk b/package/xtables-addons/xtables-addons.mk new file mode 100644 index 00000000..efd8bd98 --- /dev/null +++ b/package/xtables-addons/xtables-addons.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# xtables-addons +# +################################################################################ + +XTABLES_ADDONS_VERSION = 3.24 +XTABLES_ADDONS_SOURCE = xtables-addons-$(XTABLES_ADDONS_VERSION).tar.xz +XTABLES_ADDONS_SITE = https://inai.de/files/xtables-addons +XTABLES_ADDONS_DEPENDENCIES = iptables linux host-pkgconf +XTABLES_ADDONS_LICENSE = GPL-2.0+ +XTABLES_ADDONS_LICENSE_FILES = LICENSE + +XTABLES_ADDONS_CONF_OPTS = \ + --with-kbuild="$(LINUX_DIR)" \ + --with-xtlibdir="/usr/lib/xtables" + +define XTABLES_ADDONS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LINUX_MAKE_FLAGS) +endef + +define XTABLES_ADDONS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LINUX_MAKE_FLAGS) DESTDIR="$(TARGET_DIR)" install +endef + +# geoip helpers need perl with modules and unzip so remove them +define XTABLES_ADDONS_REMOVE_GEOIP_HELPERS + $(RM) $(TARGET_DIR)/usr/bin/xt_geoip* + $(RM) $(TARGET_DIR)/usr/libexec/xtables-addons/xt_asn* + $(RM) $(TARGET_DIR)/usr/libexec/xtables-addons/xt_geoip* +endef + +XTABLES_ADDONS_POST_INSTALL_TARGET_HOOKS += XTABLES_ADDONS_REMOVE_GEOIP_HELPERS + +define XTABLES_ADDONS_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_ADVANCED) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_MARK) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT) +endef + +$(eval $(autotools-package)) diff --git a/package/xterm/Config.in b/package/xterm/Config.in new file mode 100644 index 00000000..eaa756a4 --- /dev/null +++ b/package/xterm/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XTERM + bool "xterm" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_XLIB_LIBXAW + help + xterm terminal emulator + + http://invisible-island.net/xterm/ diff --git a/package/xterm/xterm.hash b/package/xterm/xterm.hash new file mode 100644 index 00000000..e0fdcfe6 --- /dev/null +++ b/package/xterm/xterm.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 1cd5763d94d9370fed10d804e831a089b2ace0e7a74b6f56ef5a16a766bde7be xterm-389.tgz +# Locally calculated +sha256 e38de4a0780954b5a7e69b5fa6c571daa8a1bfbacb4f2c5b2f07099e1a1d7c93 COPYING diff --git a/package/xterm/xterm.mk b/package/xterm/xterm.mk new file mode 100644 index 00000000..c2c97dd3 --- /dev/null +++ b/package/xterm/xterm.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# xterm +# +################################################################################ + +XTERM_VERSION = 389 +XTERM_SOURCE = xterm-$(XTERM_VERSION).tgz +XTERM_SITE = http://invisible-mirror.net/archives/xterm +XTERM_DEPENDENCIES = ncurses xlib_libXaw host-pkgconf +XTERM_LICENSE = MIT +XTERM_LICENSE_FILES = COPYING +XTERM_CPE_ID_VENDOR = invisible-island +XTERM_CONF_OPTS = --enable-256-color \ + --x-includes=$(STAGING_DIR)/usr/include \ + --x-libraries=$(STAGING_DIR)/usr/lib + +# Avoid freetype2 path poisoning by imake +XTERM_CONF_ENV = ac_cv_path_IMAKE="" + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFT),y) +XTERM_DEPENDENCIES += xlib_libXft +XTERM_CONF_OPTS += --enable-freetype \ + --with-freetype-config=auto +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/package/xutil_util-macros/Config.in b/package/xutil_util-macros/Config.in new file mode 100644 index 00000000..10b1a59a --- /dev/null +++ b/package/xutil_util-macros/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XUTIL_UTIL_MACROS + bool "util-macros" + help + No description available diff --git a/package/xutil_util-macros/xutil_util-macros.hash b/package/xutil_util-macros/xutil_util-macros.hash new file mode 100644 index 00000000..4fcddb7a --- /dev/null +++ b/package/xutil_util-macros/xutil_util-macros.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2023-February/003324.html +sha256 0b86b262dbe971edb4ff233bc370dfad9f241d09f078a3f6d5b7f4b8ea4430db util-macros-1.20.0.tar.xz +sha512 76caefb118bf1675d7b2b96e1bbb04eb9a320b02e120839e55a22ef98538ecf00d0e686a67186fc8fdc8492d277ffe3125ae8b7ac61ce4739edc0de3f468d2eb util-macros-1.20.0.tar.xz +# Locally computed +sha256 7db0516389152a90c20ea910e8839d10204ebc25ccbc71fc7f5809dfb98e80ac COPYING diff --git a/package/xutil_util-macros/xutil_util-macros.mk b/package/xutil_util-macros/xutil_util-macros.mk new file mode 100644 index 00000000..e2e40eb8 --- /dev/null +++ b/package/xutil_util-macros/xutil_util-macros.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xutil_util-macros +# +################################################################################ + +XUTIL_UTIL_MACROS_VERSION = 1.20.0 +XUTIL_UTIL_MACROS_SOURCE = util-macros-$(XUTIL_UTIL_MACROS_VERSION).tar.xz +XUTIL_UTIL_MACROS_SITE = https://xorg.freedesktop.org/archive/individual/util +XUTIL_UTIL_MACROS_LICENSE = MIT +XUTIL_UTIL_MACROS_LICENSE_FILES = COPYING + +XUTIL_UTIL_MACROS_INSTALL_STAGING = YES +XUTIL_UTIL_MACROS_INSTALL_TARGET = NO + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/xvisor/0001-TOOLS-d2c-py-explicitly-use-the-python3-interpreter.patch b/package/xvisor/0001-TOOLS-d2c-py-explicitly-use-the-python3-interpreter.patch new file mode 100644 index 00000000..349d4415 --- /dev/null +++ b/package/xvisor/0001-TOOLS-d2c-py-explicitly-use-the-python3-interpreter.patch @@ -0,0 +1,35 @@ +From 888c94e7a121d96aa88f84c58fe7e2bd771fc5ac Mon Sep 17 00:00:00 2001 +From: Julien Olivain +Date: Fri, 25 Aug 2023 21:56:37 +0200 +Subject: [PATCH] TOOLS: d2c.py: explicitly use the python3 interpreter + +When compiling Xvisor on a system not providing the "python" +interpreter binary, compilation fails with output: + + (d2c) core/vio/keymaps/modifiers.c + /bin/sh: 1: /build/xvisor-0.3.2/tools/scripts/d2c.py: not found + +This commit fixes the issue following the PEP 394 recommendation: +https://peps.python.org/pep-0394/ + +It sets the "shebang" to `#! /usr/bin/env python3` to allow using other +interpreters in the PATH, or virtual environment. + +Signed-off-by: Julien Olivain + +Upstream: https://github.com/xvisor/xvisor/commit/888c94e7a121d96aa88f84c58fe7e2bd771fc5ac +Signed-off-by: Fabrice Fontaine +--- + tools/scripts/d2c.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tools/scripts/d2c.py b/tools/scripts/d2c.py +index b46a7bc468..daac4a5450 100755 +--- a/tools/scripts/d2c.py ++++ b/tools/scripts/d2c.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/python ++#! /usr/bin/env python3 + #/** + # Copyright (c) 2013 Anup Patel. + # All rights reserved. diff --git a/package/xvisor/0002-RISC-V-Force-no-pie-code-generation-and-static-link.patch b/package/xvisor/0002-RISC-V-Force-no-pie-code-generation-and-static-link.patch new file mode 100644 index 00000000..706fbbfb --- /dev/null +++ b/package/xvisor/0002-RISC-V-Force-no-pie-code-generation-and-static-link.patch @@ -0,0 +1,46 @@ +From 8491908238c4b3397571e9cff55765d59da03a45 Mon Sep 17 00:00:00 2001 +From: Julien Olivain +Date: Wed, 2 Aug 2023 23:57:17 +0200 +Subject: [PATCH] RISC-V: Force no-pie code generation and static link + +Some toolchains are now enabling PIE for security reasons by default. +When XVisor is built with such a RISC-V toolchain, it is crashing +just after OpenSBI, in early Xvisor startup (before any message is +printed on the console). + +Hangs looks like those described in: + +https://github.com/xvisor/xvisor/issues/144 +https://github.com/xvisor/xvisor/issues/159 + +Forcing -fno-pie code generation and -static link will explicitly disable +PIE with those toolchains, hence fixing those issues. + +This issue was observed while using a riscv64 gcc toolchain from: +https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs/riscv64-lp64d--glibc--bleeding-edge-2022.08-1.tar.bz2 + +Signed-off-by: Julien Olivain +Upstream: https://github.com/xvisor/xvisor/pull/170 +--- + arch/riscv/cpu/generic/objects.mk | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/arch/riscv/cpu/generic/objects.mk b/arch/riscv/cpu/generic/objects.mk +index 230da2a1..576603f6 100644 +--- a/arch/riscv/cpu/generic/objects.mk ++++ b/arch/riscv/cpu/generic/objects.mk +@@ -67,6 +67,11 @@ cpu-cflags += -fno-strict-aliasing -O2 + cpu-asflags += $(arch-cflags-y) -march=$(march-nonld-isa-y) + cpu-ldflags += $(arch-ldflags-y) -march=$(march-ld-isa-y) + ++cpu-cflags += -fno-pie ++cpu-asflags += -fno-pie ++cpu-ldflags += -static ++cpu-mergeflags += -static ++ + cpu-objs-y+= cpu_entry.o + cpu-objs-y+= cpu_proc.o + cpu-objs-y+= cpu_tlb.o +-- +2.41.0 + diff --git a/package/xvisor/Config.in b/package/xvisor/Config.in new file mode 100644 index 00000000..1eb50c8a --- /dev/null +++ b/package/xvisor/Config.in @@ -0,0 +1,69 @@ +config BR2_PACKAGE_XVISOR_ARCH_SUPPORTS + bool + default y if BR2_aarch64 + default y if BR2_cortex_a7 || BR2_cortex_a12 || BR2_cortex_a15 || BR2_cortex_a17 + default y if BR2_riscv + default y if BR2_x86_64 + depends on BR2_USE_MMU + +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" + default "generic-v7-ve" if BR2_ARM_CPU_ARMV7A + default "generic-v8" if BR2_aarch64 + default "generic-32b" if BR2_RISCV_32 + default "generic-64b" if BR2_RISCV_64 + default "x86_64_generic" if BR2_x86_64 + depends on BR2_PACKAGE_XVISOR_USE_DEFCONFIG + 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/package/xvisor/xvisor.hash b/package/xvisor/xvisor.hash new file mode 100644 index 00000000..4676db9e --- /dev/null +++ b/package/xvisor/xvisor.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 fbced0f74b75758d4859d329b86c213bd24662168179ebfb2b02b987a1070215 xvisor-0.3.2.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/xvisor/xvisor.mk b/package/xvisor/xvisor.mk new file mode 100644 index 00000000..c1b61270 --- /dev/null +++ b/package/xvisor/xvisor.mk @@ -0,0 +1,88 @@ +################################################################################ +# +# xvisor +# +################################################################################ + +XVISOR_VERSION = 0.3.2 +XVISOR_SOURCE = xvisor-$(XVISOR_VERSION).tar.xz +XVISOR_SITE = http://www.xhypervisor.org/tarball +XVISOR_LICENSE = GPL-2.0+ +XVISOR_LICENSE_FILES = COPYING +XVISOR_INSTALL_IMAGES = YES +XVISOR_INSTALL_TARGET = NO +XVISOR_DEPENDENCIES = host-bison host-dtc host-flex $(BR2_PYTHON3_HOST_DEPENDENCY) + +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 + +ifeq ($(BR2_x86_64),y) +XVISOR_ARCH = x86 +else ifeq ($(BR2_arm)$(BR2_aarch64),y) +XVISOR_ARCH = arm +else ifeq ($(BR2_riscv),y) +XVISOR_ARCH = riscv +endif + +ifeq ($(BR2_PACKAGE_XVISOR)$(BR_BUILDING),yy) +ifeq ($(XVISOR_ARCH),) +$(error "Architecture not supported by XVisor") +endif +endif + +XVISOR_MAKE_ENV = \ + ARCH=$(XVISOR_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/package/xvkbd/Config.in b/package/xvkbd/Config.in new file mode 100644 index 00000000..464a6ef7 --- /dev/null +++ b/package/xvkbd/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_XVKBD + bool "xvkbd" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBICE + select BR2_PACKAGE_XLIB_LIBSM + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXMU + select BR2_PACKAGE_XLIB_LIBXPM + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_XLIB_LIBXTST + help + on-screen keyboard for X + + http://t-sato.in.coocan.jp/xvkbd diff --git a/package/xvkbd/xvkbd.hash b/package/xvkbd/xvkbd.hash new file mode 100644 index 00000000..8f13ab7c --- /dev/null +++ b/package/xvkbd/xvkbd.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 952d07df0fe1e45286520b7c98b4fd00fd60dbf3e3e8ff61e12c259f76a3bef4 xvkbd-4.1.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 5dada320d6b4fb7c76ef110a027b019feaf1149576acf7ac5cacf0d0dcdc3671 README diff --git a/package/xvkbd/xvkbd.mk b/package/xvkbd/xvkbd.mk new file mode 100644 index 00000000..f65c02bc --- /dev/null +++ b/package/xvkbd/xvkbd.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# xvkbd +# +################################################################################ + +XVKBD_VERSION = 4.1 +XVKBD_SITE = http://t-sato.in.coocan.jp/xvkbd +XVKBD_LICENSE = GPL-2.0+ +XVKBD_LICENSE_FILES = COPYING README + +XVKBD_DEPENDENCIES = \ + xlib_libICE \ + xlib_libSM \ + xlib_libX11 \ + xlib_libXaw \ + xlib_libXext \ + xlib_libXmu \ + xlib_libXpm \ + xlib_libXt \ + xlib_libXtst + +$(eval $(autotools-package)) diff --git a/package/xxhash/Config.in b/package/xxhash/Config.in new file mode 100644 index 00000000..f2cccda2 --- /dev/null +++ b/package/xxhash/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XXHASH + bool "xxhash" + help + xxHash is an extremely fast hash algorithm, running at RAM + speed limits. + + https://github.com/Cyan4973/xxHash diff --git a/package/xxhash/xxhash.hash b/package/xxhash/xxhash.hash new file mode 100644 index 00000000..216d07dd --- /dev/null +++ b/package/xxhash/xxhash.hash @@ -0,0 +1,4 @@ +# locally computed +sha256 baee0c6afd4f03165de7a4e67988d16f0f2b257b51d0e3cb91909302a26a79c4 xxhash-0.8.2.tar.gz +sha256 6ffedbc0f7878612d2b23589f1ff2ab15633e1df7963a5d9fc750ec5500c7e7a LICENSE +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 cli/COPYING diff --git a/package/xxhash/xxhash.mk b/package/xxhash/xxhash.mk new file mode 100644 index 00000000..f16a7849 --- /dev/null +++ b/package/xxhash/xxhash.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# xxhash +# +################################################################################ + +XXHASH_VERSION = 0.8.2 +XXHASH_SITE = $(call github,Cyan4973,xxHash,v$(XXHASH_VERSION)) +XXHASH_LICENSE = BSD-2-Clause (library), GPL-2.0+ (xxhsum) +XXHASH_LICENSE_FILES = LICENSE cli/COPYING +XXHASH_INSTALL_STAGING = YES + +# The package is a dependency to ccache so ccache cannot be a dependency +HOST_XXHASH_ADD_CCACHE_DEPENDENCY = NO + +XXHASH_TARGETS = xxhsum libxxhash.pc +XXHASH_INSTALL_TARGETS = \ + install_libxxhash.includes \ + install_libxxhash.pc \ + install_xxhsum + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +XXHASH_TARGETS += libxxhash.a +XXHASH_INSTALL_TARGETS += install_libxxhash.a +endif + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +XXHASH_TARGETS += libxxhash +XXHASH_INSTALL_TARGETS += install_libxxhash +endif + +define XXHASH_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + MOREFLAGS=-DXXH_NO_INLINE_HINTS $(XXHASH_TARGETS) +endef + +define XXHASH_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + PREFIX=/usr DESTDIR=$(STAGING_DIR) $(XXHASH_INSTALL_TARGETS) +endef + +define XXHASH_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + PREFIX=/usr DESTDIR=$(TARGET_DIR) $(XXHASH_INSTALL_TARGETS) +endef + +# we are a ccache dependency, so we can't use ccache +HOST_XXHASH_ENV = $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) CC="$(HOSTCC_NOCCACHE)" CXX="$(HOSTCXX_NOCCACHE)" +HOST_XXHASH_OPTS += DESTDIR=$(HOST_DIR) PREFIX=/usr + +define HOST_XXHASH_BUILD_CMDS + $(HOST_XXHASH_ENV) $(MAKE) $(HOST_XXHASH_OPTS) -C $(@D) +endef + +define HOST_XXHASH_INSTALL_CMDS + $(HOST_XXHASH_ENV) $(MAKE) $(HOST_XXHASH_OPTS) -C $(@D) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/xz/Config.in b/package/xz/Config.in new file mode 100644 index 00000000..687bd554 --- /dev/null +++ b/package/xz/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_XZ + bool "xz-utils" + help + XZ is the successor to the Lempel-Ziv/Markov-chain Algorithm + compression format, which provides memory-hungry but + powerful compression (often better than bzip2) and fast, + easy decompression. + + This package provides the command line tools for working + with XZ compression, including xz, unxz, xzcat, xzgrep, and + so on. They can also handle the older LZMA format, and if + invoked via appropriate symlinks will emulate the behavior + of the commands in the lzma package. + + https://tukaani.org/xz/ diff --git a/package/xz/xz.hash b/package/xz/xz.hash new file mode 100644 index 00000000..6012e100 --- /dev/null +++ b/package/xz/xz.hash @@ -0,0 +1,11 @@ +# Locally calculated after checking pgp signature +# https://github.com/tukaani-project/xz/releases/download/v5.6.2/xz-5.6.2.tar.bz2.sig +# using key 3690C240CE51B4670D30AD1C38EE757D69184620 Lasse Collin +sha256 e12aa03cbd200597bd4ce11d97be2d09a6e6d39a9311ce72c91ac7deacde3171 xz-5.6.2.tar.bz2 + +# Hash for license files +sha256 ee3b35b82f7bb0ba5fd9f13ca34ebbe757a59c05bfde5ab9d50ff4188ed33396 COPYING +sha256 0b01625d853911cd0e2e088dcfb743261034a091bb379246cb25a14cc4c74bf1 COPYING.0BSD +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING.GPLv2 +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 COPYING.GPLv3 +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPLv2.1 diff --git a/package/xz/xz.mk b/package/xz/xz.mk new file mode 100644 index 00000000..3329d302 --- /dev/null +++ b/package/xz/xz.mk @@ -0,0 +1,81 @@ +################################################################################ +# +# xz +# +################################################################################ + +XZ_VERSION = 5.6.2 +XZ_SOURCE = xz-$(XZ_VERSION).tar.bz2 +XZ_SITE = https://github.com/tukaani-project/xz/releases/download/v$(XZ_VERSION) +XZ_INSTALL_STAGING = YES +XZ_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' +XZ_LICENSE = Public Domain, BSD-0-Clause, GPL-2.0+, GPL-3.0+, LGPL-2.1+ +XZ_LICENSE_FILES = COPYING COPYING.0BSD COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv2.1 +XZ_CPE_ID_VENDOR = tukaani +# autoreconf needed to fix a musl static build failure +XZ_AUTORECONF = YES + +# The package is a dependency to ccache so ccache cannot be a dependency +HOST_XZ_ADD_CCACHE_DEPENDENCY = NO + +XZ_CONF_OPTS = \ + --enable-encoders=lzma1,lzma2,delta,x86,powerpc,ia64,arm,armthumb,arm64,sparc,riscv \ + --enable-decoders=lzma1,lzma2,delta,x86,powerpc,ia64,arm,armthumb,arm64,sparc,riscv \ + --enable-match-finders=hc3,hc4,bt2,bt3,bt4 \ + --enable-checks=crc32,crc64,sha256 \ + --disable-external-sha256 \ + --enable-microlzma \ + --enable-lzip-decoder \ + --enable-assembler \ + --enable-clmul-crc \ + --enable-arm64-crc32 \ + --disable-small \ + --enable-assume-ram=128 \ + --enable-xz \ + --enable-xzdec \ + --enable-lzmadec \ + --enable-lzmainfo \ + --enable-lzma-links \ + --enable-scripts \ + --enable-sandbox=auto \ + --enable-symbol-versions \ + --enable-rpath \ + --enable-largefile \ + --enable-unaligned-access=auto \ + --disable-unsafe-type-punning \ + --disable-werror \ + --enable-year2038 + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +XZ_CONF_OPTS += --enable-nls +else +XZ_CONF_OPTS += --disable-nls +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +XZ_CONF_OPTS += --enable-threads +else +XZ_CONF_OPTS += --disable-threads +endif + +HOST_XZ_CONF_OPTS = \ + $(XZ_CONF_OPTS) \ + --enable-nls \ + --enable-threads + +# we are built before ccache +HOST_XZ_CONF_ENV = \ + CC="$(HOSTCC_NOCCACHE)" \ + CXX="$(HOSTCXX_NOCCACHE)" + +# We need to prevent XZ_AUTORECONF for host builds or we end up with a +# circular dependency. Since the autoconf build needs to extract a +# tar.xz archive, autoconf has an implicit dependency on HOST_XZ. By +# enabling XZ_AUTORECONF we also make host-xz depend on autoconf, +# which we can't do. It is also not necessary as we're autoreconfuring +# the target package to fix static build with musl, which is +# irrelevant for the host package. +HOST_XZ_AUTORECONF = NO + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/yad/Config.in b/package/yad/Config.in new file mode 100644 index 00000000..300525ee --- /dev/null +++ b/package/yad/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_YAD + bool "yad" + depends on BR2_PACKAGE_XORG7 + depends on BR2_PACKAGE_LIBGTK2 || BR2_PACKAGE_LIBGTK3_X11 + help + YAD (yet another dialog) is a tool for create graphical + dialogs from shell scripts. + + http://sourceforge.net/projects/yad-dialog/ + +comment "yad needs libgtk2 or libgtk3 w/ X11 backend" + depends on BR2_PACKAGE_XORG7 + depends on !BR2_PACKAGE_LIBGTK2 && !BR2_PACKAGE_LIBGTK3_X11 diff --git a/package/yad/yad.hash b/package/yad/yad.hash new file mode 100644 index 00000000..ec0edc52 --- /dev/null +++ b/package/yad/yad.hash @@ -0,0 +1,6 @@ +# From http://sourceforge.net/projects/yad-dialog/files/ +md5 82d458a2e1695dd0709f71ad26109812 yad-0.40.0.tar.xz +sha1 4376eb42f8e38972124dc81e534cbdc9088109fb yad-0.40.0.tar.xz + +# Hash for license file +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/yad/yad.mk b/package/yad/yad.mk new file mode 100644 index 00000000..15788efa --- /dev/null +++ b/package/yad/yad.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# yad +# +################################################################################ + +YAD_VERSION = 0.40.0 +YAD_SOURCE = yad-$(YAD_VERSION).tar.xz +YAD_SITE = http://sourceforge.net/projects/yad-dialog/files +YAD_LICENSE = GPL-3.0 +YAD_LICENSE_FILES = COPYING +YAD_DEPENDENCIES = host-intltool host-pkgconf $(TARGET_NLS_DEPENDENCIES) +YAD_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) +YAD_CONF_OPTS = --enable-html=no + +ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) +YAD_DEPENDENCIES += libgtk3 +YAD_CONF_OPTS += --with-gtk=gtk3 +else +YAD_DEPENDENCIES += libgtk2 +YAD_CONF_OPTS += --with-gtk=gtk2 +endif + +$(eval $(autotools-package)) diff --git a/package/yaffs2utils/yaffs2utils.hash b/package/yaffs2utils/yaffs2utils.hash new file mode 100644 index 00000000..547b55c5 --- /dev/null +++ b/package/yaffs2utils/yaffs2utils.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 9b0912bf683eb839b6e57c9255c83894c3b700d16489a49d319c54c1abf8f6d7 0.2.9.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/yaffs2utils/yaffs2utils.mk b/package/yaffs2utils/yaffs2utils.mk new file mode 100644 index 00000000..bcd5d6d6 --- /dev/null +++ b/package/yaffs2utils/yaffs2utils.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# yaffs2utils +# +################################################################################ + +YAFFS2UTILS_VERSION = 0.2.9 +YAFFS2UTILS_SOURCE = $(YAFFS2UTILS_VERSION).tar.gz +YAFFS2UTILS_SITE = https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/yaffs2utils +YAFFS2UTILS_LICENSE = GPL-2.0 +YAFFS2UTILS_LICENSE_FILES = COPYING + +define HOST_YAFFS2UTILS_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_YAFFS2UTILS_INSTALL_CMDS + mkdir -p $(HOST_DIR)/bin + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) INSTALLDIR=$(HOST_DIR)/bin install +endef + +$(eval $(host-generic-package)) diff --git a/package/yajl/0001-Let-the-shared-and-the-static-library-have-the-same-.patch b/package/yajl/0001-Let-the-shared-and-the-static-library-have-the-same-.patch new file mode 100644 index 00000000..0023a1da --- /dev/null +++ b/package/yajl/0001-Let-the-shared-and-the-static-library-have-the-same-.patch @@ -0,0 +1,34 @@ +From b08fe001e3d3f3564ef298e62342f07080807f7a Mon Sep 17 00:00:00 2001 +From: Vicente Olivert Riera +Date: Wed, 28 Oct 2015 15:45:10 +0000 +Subject: [PATCH] Let the shared and the static library have the same name +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The will be differentiated by the extension (.so or .a). + +Fetched from: +https://github.com/vriera/yajl/commit/6d09f11b8fd358cab0e31b965327e64a599f9ce9 + +Signed-off-by: Vicente Olivert Riera +Signed-off-by: Jörg Krause +--- + src/CMakeLists.txt | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 99cf9e9..1a900d3 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -36,6 +36,7 @@ SET (shareDir ${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/share/pkgconfig) + SET(LIBRARY_OUTPUT_PATH ${libDir}) + + ADD_LIBRARY(yajl_s STATIC ${SRCS} ${HDRS} ${PUB_HDRS}) ++SET_TARGET_PROPERTIES(yajl_s PROPERTIES OUTPUT_NAME yajl) + + ADD_LIBRARY(yajl SHARED ${SRCS} ${HDRS} ${PUB_HDRS}) + +-- +2.8.0 + diff --git a/package/yajl/0002-cmake-disable-shared-library-build-when-BUILD_SHARED.patch b/package/yajl/0002-cmake-disable-shared-library-build-when-BUILD_SHARED.patch new file mode 100644 index 00000000..e9170772 --- /dev/null +++ b/package/yajl/0002-cmake-disable-shared-library-build-when-BUILD_SHARED.patch @@ -0,0 +1,51 @@ +From b3cddf92adacfe5ca40574afb3e323cc7cdebc5c Mon Sep 17 00:00:00 2001 +From: Maxime Hadjinlian +Date: Tue, 2 Feb 2016 15:46:09 +0100 +Subject: [PATCH] cmake: Add shared library conditonnal build + +When BUILD_SHARED_LIBS is off, you don't want to build the shared +library. + +Signed-off-by: Samuel Martin +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + src/CMakeLists.txt | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 99cf9e9..9e9c77d 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -38,6 +38,7 @@ SET(LIBRARY_OUTPUT_PATH ${libDir}) + ADD_LIBRARY(yajl_s STATIC ${SRCS} ${HDRS} ${PUB_HDRS}) + SET_TARGET_PROPERTIES(yajl_s PROPERTIES OUTPUT_NAME yajl) + ++IF(BUILD_SHARED_LIBS) + ADD_LIBRARY(yajl SHARED ${SRCS} ${HDRS} ${PUB_HDRS}) + + #### setup shared library version number +@@ -52,6 +53,7 @@ IF(APPLE) + SET_TARGET_PROPERTIES(yajl PROPERTIES + INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib") + ENDIF(APPLE) ++ENDIF(BUILD_SHARED_LIBS) + + #### build up an sdk as a post build step + +@@ -78,10 +80,12 @@ INCLUDE_DIRECTORIES(${incDir}/..) + + # at build time you may specify the cmake variable LIB_SUFFIX to handle + # 64-bit systems which use 'lib64' ++IF(BUILD_SHARED_LIBS) + INSTALL(TARGETS yajl + RUNTIME DESTINATION lib${LIB_SUFFIX} + LIBRARY DESTINATION lib${LIB_SUFFIX} + ARCHIVE DESTINATION lib${LIB_SUFFIX}) ++ENDIF(BUILD_SHARED_LIBS) + INSTALL(TARGETS yajl_s ARCHIVE DESTINATION lib${LIB_SUFFIX}) + INSTALL(FILES ${PUB_HDRS} DESTINATION include/yajl) + INSTALL(FILES ${incDir}/yajl_version.h DESTINATION include/yajl) +-- +2.7.0 + diff --git a/package/yajl/0003-Link-with-shared-libyajl-in-a-shared-build.patch b/package/yajl/0003-Link-with-shared-libyajl-in-a-shared-build.patch new file mode 100644 index 00000000..d3c91f2b --- /dev/null +++ b/package/yajl/0003-Link-with-shared-libyajl-in-a-shared-build.patch @@ -0,0 +1,127 @@ +From 425b25993ef58d07aa18c5d4938876a90e22c47a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Sat, 9 Apr 2016 23:24:27 +0200 +Subject: [PATCH] Link with shared libyajl in a shared build +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Building yajl in a static context fails in a parallel build: + +[ 21%] Linking C executable gen-extra-close +[ 26%] Building C object src/CMakeFiles/yajl_s.dir/yajl_buf.c.o +/home/test/autobuild/instance-3/output/host/opt/ext-toolchain/bfin-uclinux/bfin-uclinux/bin/ld.real: cannot find -lyajl + +Fix this issue by linking against the shared libyail in a shared build. Apply +this fix also to all other build targets who are linking against the library. + +Upstream status: Pending +https://github.com/lloyd/yajl/pull/187 + +[Update: align with commit 302563539dacb284576a443401cdfd061eb2e1e8 and remove + linking with libm from test/api/CMakeLists.txt] +Signed-off-by: Jörg Krause +--- + example/CMakeLists.txt | 7 ++++++- + perf/CMakeLists.txt | 6 +++++- + reformatter/CMakeLists.txt | 6 +++++- + test/api/CMakeLists.txt | 6 +++++- + test/parsing/CMakeLists.txt | 6 +++++- + verify/CMakeLists.txt | 6 +++++- + 6 files changed, 31 insertions(+), 6 deletions(-) + +diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt +index 0a7f622..8cfcef8 100644 +--- a/example/CMakeLists.txt ++++ b/example/CMakeLists.txt +@@ -20,4 +20,9 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/lib) + + ADD_EXECUTABLE(parse_config ${SRCS}) + +-TARGET_LINK_LIBRARIES(parse_config yajl_s) ++IF(BUILD_SHARED_LIBS) ++ TARGET_LINK_LIBRARIES(parse_config yajl) ++ELSE() ++ TARGET_LINK_LIBRARIES(parse_config yajl_s) ++ENDIF() ++ +diff --git a/perf/CMakeLists.txt b/perf/CMakeLists.txt +index b438d7a..40ba363 100644 +--- a/perf/CMakeLists.txt ++++ b/perf/CMakeLists.txt +@@ -20,4 +20,8 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/lib) + + ADD_EXECUTABLE(perftest ${SRCS}) + +-TARGET_LINK_LIBRARIES(perftest yajl_s) ++IF(BUILD_SHARED_LIBS) ++ TARGET_LINK_LIBRARIES(perftest yajl) ++ELSE() ++ TARGET_LINK_LIBRARIES(perftest yajl_s) ++ENDIF() +diff --git a/reformatter/CMakeLists.txt b/reformatter/CMakeLists.txt +index 52a9bee..7629094 100644 +--- a/reformatter/CMakeLists.txt ++++ b/reformatter/CMakeLists.txt +@@ -26,7 +26,11 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/lib) + + ADD_EXECUTABLE(json_reformat ${SRCS}) + +-TARGET_LINK_LIBRARIES(json_reformat yajl_s) ++IF(BUILD_SHARED_LIBS) ++ TARGET_LINK_LIBRARIES(json_reformat yajl) ++ELSE() ++ TARGET_LINK_LIBRARIES(json_reformat yajl_s) ++ENDIF() + + # In some environments, we must explicitly link libm (like qnx, + # thanks @shahbag) +diff --git a/test/api/CMakeLists.txt b/test/api/CMakeLists.txt +index cd65a54..0c9debf 100644 +--- a/test/api/CMakeLists.txt ++++ b/test/api/CMakeLists.txt +@@ -21,5 +21,9 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../../${YAJL_DIST_NAME}/lib) + FOREACH (test ${TESTS}) + GET_FILENAME_COMPONENT(testProg ${test} NAME_WE) + ADD_EXECUTABLE(${testProg} ${test}) +- TARGET_LINK_LIBRARIES(${testProg} yajl) ++ IF(BUILD_SHARED_LIBS) ++ TARGET_LINK_LIBRARIES(${testProg} yajl) ++ ELSE() ++ TARGET_LINK_LIBRARIES(${testProg} yajl_s) ++ ENDIF() + ENDFOREACH() +diff --git a/test/parsing/CMakeLists.txt b/test/parsing/CMakeLists.txt +index c22a388..285f048 100644 +--- a/test/parsing/CMakeLists.txt ++++ b/test/parsing/CMakeLists.txt +@@ -20,4 +20,8 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../../${YAJL_DIST_NAME}/lib) + + ADD_EXECUTABLE(yajl_test ${SRCS}) + +-TARGET_LINK_LIBRARIES(yajl_test yajl_s) ++IF(BUILD_SHARED_LIBS) ++ TARGET_LINK_LIBRARIES(yajl_test yajl) ++ELSE() ++ TARGET_LINK_LIBRARIES(yajl_test yajl_s) ++ENDIF() +diff --git a/verify/CMakeLists.txt b/verify/CMakeLists.txt +index 967fca1..06cb2dc 100644 +--- a/verify/CMakeLists.txt ++++ b/verify/CMakeLists.txt +@@ -26,7 +26,11 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/lib) + + ADD_EXECUTABLE(json_verify ${SRCS}) + +-TARGET_LINK_LIBRARIES(json_verify yajl_s) ++IF(BUILD_SHARED_LIBS) ++ TARGET_LINK_LIBRARIES(json_verify yajl) ++ELSE() ++ TARGET_LINK_LIBRARIES(json_verify yajl_s) ++ENDIF() + + # copy in the binary + GET_TARGET_PROPERTY(binPath json_verify LOCATION) +-- +2.8.0 + diff --git a/package/yajl/0004-Link-libyajl-_s-with-libm-when-isnan-is-not-brought-.patch b/package/yajl/0004-Link-libyajl-_s-with-libm-when-isnan-is-not-brought-.patch new file mode 100644 index 00000000..71cf2958 --- /dev/null +++ b/package/yajl/0004-Link-libyajl-_s-with-libm-when-isnan-is-not-brought-.patch @@ -0,0 +1,64 @@ +From b47f6a50925efb8c8707b1faed5561a4b66ffdb1 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sun, 24 Apr 2016 18:45:27 +0200 +Subject: [PATCH] Link libyajl{,_s} with libm when isnan is not brought by the + libc + +Check whether isnan is provided by the libc library, otherwise make sure +yajl libraries are link against libm. + +Note that setting libm as PUBLIC link libraries enable the transitivity +[1, 2]; therefore it will be automatically passed to target linking +against libyajl{,_s}. + +This patch also makes sure the link libraries will appear in the yajl.pc +file. + +[1] https://cmake.org/cmake/help/v3.5/command/target_link_libraries.html +[2] https://cmake.org/cmake/help/v3.5/manual/cmake-buildsystem.7.html#target-usage-requirements + +Signed-off-by: Samuel Martin +--- + src/CMakeLists.txt | 10 ++++++++++ + src/yajl.pc.cmake | 2 +- + 2 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index b487bfd..a88698f 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -35,11 +35,21 @@ SET (shareDir ${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/share/pkgconfig) + # set the output path for libraries + SET(LIBRARY_OUTPUT_PATH ${libDir}) + ++SET(yajl_lib_link) ++INCLUDE(CheckLibraryExists) ++CHECK_LIBRARY_EXISTS(c isnan "" HAVE_LIBC_ISNAN) ++ ++IF(NOT HAVE_LIBC_ISNAN) ++ LIST(APPEND yajl_lib_link "-lm") ++ENDIF(NOT HAVE_LIBC_ISNAN) ++ + ADD_LIBRARY(yajl_s STATIC ${SRCS} ${HDRS} ${PUB_HDRS}) + SET_TARGET_PROPERTIES(yajl_s PROPERTIES OUTPUT_NAME yajl) ++TARGET_LINK_LIBRARIES(yajl_s PUBLIC ${yajl_lib_link}) + + IF(BUILD_SHARED_LIBS) + ADD_LIBRARY(yajl SHARED ${SRCS} ${HDRS} ${PUB_HDRS}) ++TARGET_LINK_LIBRARIES(yajl PUBLIC ${yajl_lib_link}) + + #### setup shared library version number + SET_TARGET_PROPERTIES(yajl PROPERTIES +diff --git a/src/yajl.pc.cmake b/src/yajl.pc.cmake +index 6eaca14..4681dd4 100644 +--- a/src/yajl.pc.cmake ++++ b/src/yajl.pc.cmake +@@ -6,4 +6,4 @@ Name: Yet Another JSON Library + Description: A Portable JSON parsing and serialization library in ANSI C + Version: ${YAJL_MAJOR}.${YAJL_MINOR}.${YAJL_MICRO} + Cflags: -I${dollar}{includedir} +-Libs: -L${dollar}{libdir} -lyajl ++Libs: -L${dollar}{libdir} -lyajl ${yajl_lib_link} +-- +2.8.0 + diff --git a/package/yajl/Config.in b/package/yajl/Config.in new file mode 100644 index 00000000..be2c133f --- /dev/null +++ b/package/yajl/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_YAJL + bool "yajl" + help + Yet Another JSON Library. YAJL is a small event-driven + (SAX-style) JSON parser written in ANSI C, and a small + validating JSON generator. + + http://lloyd.github.com/yajl/ diff --git a/package/yajl/yajl.hash b/package/yajl/yajl.hash new file mode 100644 index 00000000..47b0986c --- /dev/null +++ b/package/yajl/yajl.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3fb73364a5a30efe615046d07e6db9d09fd2b41c763c5f7d3bfb121cd5c5ac5a yajl-2.1.0.tar.gz +sha256 054bf2c11686c5442850b1da58ad592e3d1d2a236a362e67279b957f8e662f5a COPYING diff --git a/package/yajl/yajl.mk b/package/yajl/yajl.mk new file mode 100644 index 00000000..1a13cb9d --- /dev/null +++ b/package/yajl/yajl.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# yajl +# +################################################################################ + +YAJL_VERSION = 2.1.0 +YAJL_SITE = $(call github,lloyd,yajl,refs/tags/$(YAJL_VERSION)) +YAJL_INSTALL_STAGING = YES +YAJL_LICENSE = ISC +YAJL_LICENSE_FILES = COPYING +YAJL_CPE_ID_VALID = YES + +$(eval $(cmake-package)) diff --git a/package/yaml-cpp/Config.in b/package/yaml-cpp/Config.in new file mode 100644 index 00000000..e02b85df --- /dev/null +++ b/package/yaml-cpp/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_YAML_CPP + bool "yaml-cpp" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11 + help + yaml-cpp is a YAML parser and emitter in C++ matching + the YAML 1.2 spec. + + https://github.com/jbeder/yaml-cpp + +comment "yaml-cpp needs a toolchain w/ C++, gcc >= 4.7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 diff --git a/package/yaml-cpp/yaml-cpp.hash b/package/yaml-cpp/yaml-cpp.hash new file mode 100644 index 00000000..92bf65d2 --- /dev/null +++ b/package/yaml-cpp/yaml-cpp.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 fbe74bbdcee21d656715688706da3c8becfd946d92cd44705cc6098bb23b3a16 yaml-cpp-0.8.0.tar.gz +sha256 aa6fcc27be034e41e21dd832f9175bfe694a48491d9e14ff0fa278e19ad14f1b LICENSE diff --git a/package/yaml-cpp/yaml-cpp.mk b/package/yaml-cpp/yaml-cpp.mk new file mode 100644 index 00000000..c259f1e5 --- /dev/null +++ b/package/yaml-cpp/yaml-cpp.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# yaml-cpp +# +################################################################################ + +YAML_CPP_VERSION = 0.8.0 +YAML_CPP_SITE = $(call github,jbeder,yaml-cpp,$(YAML_CPP_VERSION)) +YAML_CPP_INSTALL_STAGING = YES +YAML_CPP_LICENSE = MIT +YAML_CPP_LICENSE_FILES = LICENSE +YAML_CPP_CPE_ID_VALID = YES + +# Disable testing and parse tools +YAML_CPP_CONF_OPTS += \ + -DCMAKE_DEBUG_POSTFIX="" \ + -DYAML_CPP_BUILD_TESTS=OFF \ + -DYAML_CPP_BUILD_TOOLS=OFF + +$(eval $(cmake-package)) diff --git a/package/yasm/Config.in b/package/yasm/Config.in new file mode 100644 index 00000000..2dc25aad --- /dev/null +++ b/package/yasm/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_YASM + bool "yasm" + depends on BR2_i386 || BR2_x86_64 + help + Yasm is a complete rewrite of the NASM-2.10.01 assembler. + It supports the x86 and AMD64 instruction sets, accepts NASM + and GAS assembler syntaxes and outputs binary, ELF32 and ELF64 + object formats. + + http://www.tortall.net/projects/yasm/ diff --git a/package/yasm/yasm.hash b/package/yasm/yasm.hash new file mode 100644 index 00000000..c343d32d --- /dev/null +++ b/package/yasm/yasm.hash @@ -0,0 +1,7 @@ +# Locally computed: +sha256 3dce6601b495f5b3d45b59f7d2492a340ee7e84b5beca17e48f862502bd5603f yasm-1.3.0.tar.gz +sha256 795f8d76eade6130129b680ac72ea81cb3e143467a65ea1f5f64946151d7fa20 COPYING +sha256 a84b45f23040624681ca6974ff48d8ef6b477a1cb51e4a1c842e49d00c231e0d BSD.txt +sha256 b7fd9b73ea99602016a326e0b62e6646060d18febdd065ceca8bb482208c3d88 Artistic.txt +sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 GNU_GPL-2.0 +sha256 1faefae1fe8838a2e48864df7d1376e421a50c551c5ae2f60c9f2093206e18a9 GNU_LGPL-2.0 diff --git a/package/yasm/yasm.mk b/package/yasm/yasm.mk new file mode 100644 index 00000000..cdb8e15b --- /dev/null +++ b/package/yasm/yasm.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# yasm +# +################################################################################ + +YASM_VERSION = 1.3.0 +YASM_SITE = http://www.tortall.net/projects/yasm/releases +YASM_LICENSE = BSD-2-Clause, BSD-3-Clause, Artistic, GPL-2.0, LGPL-2.0 +YASM_LICENSE_FILES = COPYING BSD.txt Artistic.txt GNU_GPL-2.0 GNU_LGPL-2.0 +YASM_CPE_ID_VENDOR = tortall + +# This sed prevents it compiling 2 programs (vsyasm and ytasm) +# that are only of use on Microsoft Windows. +define YASM_PRE_CONFIGURE_FIXUP + $(SED) 's#) ytasm.*#)#' $(@D)/Makefile.in +endef + +YASM_PRE_CONFIGURE_HOOKS += YASM_PRE_CONFIGURE_FIXUP +HOST_YASM_PRE_CONFIGURE_HOOKS += YASM_PRE_CONFIGURE_FIXUP + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/package/yavta/Config.in b/package/yavta/Config.in new file mode 100644 index 00000000..8119133c --- /dev/null +++ b/package/yavta/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_YAVTA + bool "yavta" + help + Yet Another V4L2 Test Application + + https://git.ideasonboard.org/yavta.git diff --git a/package/yavta/yavta.hash b/package/yavta/yavta.hash new file mode 100644 index 00000000..9809283f --- /dev/null +++ b/package/yavta/yavta.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 ede218b7f19088f87e8e2e7becf909e99d52efb3435c88748444a6f617986883 yavta-583bedefc2a247d2cfd32d1b4a0abbe3e2015c70-git4.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING.GPL diff --git a/package/yavta/yavta.mk b/package/yavta/yavta.mk new file mode 100644 index 00000000..db481b77 --- /dev/null +++ b/package/yavta/yavta.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# yavta +# +################################################################################ + +YAVTA_VERSION = 583bedefc2a247d2cfd32d1b4a0abbe3e2015c70 +YAVTA_SITE = https://git.ideasonboard.org/yavta.git +YAVTA_SITE_METHOD = git +YAVTA_LICENSE = GPL-2.0+ +YAVTA_LICENSE_FILES = COPYING.GPL +YAVTA_CONF_OPTS = -Dwerror=false + +$(eval $(meson-package)) diff --git a/package/ympd/0001-only-c-language.patch b/package/ympd/0001-only-c-language.patch new file mode 100644 index 00000000..df5734c3 --- /dev/null +++ b/package/ympd/0001-only-c-language.patch @@ -0,0 +1,21 @@ +ympd is implemented only in C + +By default, CMake assumes that the project is using both C and C++. By +explicitly passing 'C' as argument of the project() macro, we tell +CMake that only C is used, which prevents CMake from checking if a C++ +compiler exists. + +Signed-off-by: Thomas Petazzoni + +Index: b/CMakeLists.txt +=================================================================== +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,6 +1,6 @@ + cmake_minimum_required(VERSION 2.6) + +-project (ympd) ++project (ympd C) + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/") + set(CPACK_PACKAGE_VERSION_MAJOR "1") + set(CPACK_PACKAGE_VERSION_MINOR "2") diff --git a/package/ympd/0002-added-forward-declarations.patch b/package/ympd/0002-added-forward-declarations.patch new file mode 100644 index 00000000..d96307d2 --- /dev/null +++ b/package/ympd/0002-added-forward-declarations.patch @@ -0,0 +1,45 @@ +From 2268e0f0f372a61827b912155a1796490968b3ff Mon Sep 17 00:00:00 2001 +From: SuperBFG7 +Date: Tue, 2 Jun 2020 12:41:52 +0200 +Subject: [PATCH] added forward declarations + + +[Retrieved (and slightly updated to remove update of dirble_api_token) +from: +https://github.com/notandy/ympd/pull/191/commits/2268e0f0f372a61827b912155a1796490968b3ff] +Signed-off-by: Fabrice Fontaine +[Dario: make the patch to be applied with fuzz factor 0] +Signed-off-by: Dario Binacchi +--- + src/mpd_client.c | 2 ++ + src/mpd_client.h | 6 ++++-- + 2 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/src/mpd_client.c b/src/mpd_client.c +index 2911e461..9f003ab0 100644 +--- a/src/mpd_client.c ++++ b/src/mpd_client.c +@@ -29,6 +29,8 @@ + + /* forward declaration */ + static int mpd_notify_callback(struct mg_connection *c, enum mg_event ev); ++char dirble_api_token[28]; ++struct t_mpd mpd; + + const char * mpd_cmd_strs[] = { + MPD_CMDS(GEN_STR) +diff --git a/src/mpd_client.h b/src/mpd_client.h +index 447dd563..9342c550 100644 +--- a/src/mpd_client.h ++++ b/src/mpd_client.h +@@ -92,7 +92,9 @@ + + int song_id; + unsigned queue_version; +-} mpd; ++}; ++ ++extern struct t_mpd mpd; + + struct t_mpd_client_session { + int song_id; diff --git a/package/ympd/Config.in b/package/ympd/Config.in new file mode 100644 index 00000000..0a1c2b2f --- /dev/null +++ b/package/ympd/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_YMPD + bool "ympd" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBMPDCLIENT + help + ympd, a standalone MPD Web GUI written in C, utilizing + Websockets and Bootstrap/JS + + https://www.ympd.org/ + +comment "ympd needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/ympd/ympd.hash b/package/ympd/ympd.hash new file mode 100644 index 00000000..1157267c --- /dev/null +++ b/package/ympd/ympd.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 d9f68920cd93d1cfa971e1d7b9162a2b1724909bc9753c1338cecb3688d234d5 ympd-1.3.0.tar.gz +sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 LICENSE diff --git a/package/ympd/ympd.mk b/package/ympd/ympd.mk new file mode 100644 index 00000000..027dc1ca --- /dev/null +++ b/package/ympd/ympd.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# ympd +# +################################################################################ + +YMPD_VERSION = 1.3.0 +YMPD_SITE = $(call github,notandy,ympd,v$(YMPD_VERSION)) +YMPD_LICENSE = GPL-2.0 +YMPD_LICENSE_FILES = LICENSE +YMPD_DEPENDENCIES = libmpdclient + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +YMPD_DEPENDENCIES += openssl +YMPD_CONF_OPTS += -DWITH_SSL=ON +else +YMPD_CONF_OPTS += -DWITH_SSL=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/ytree/Config.in b/package/ytree/Config.in new file mode 100644 index 00000000..3ac9283a --- /dev/null +++ b/package/ytree/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_YTREE + bool "ytree" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_NCURSES + help + Ytree - a (curses-based) file manager similar to DOS Xtree(tm) + + https://www.han.de/~werner/ytree.html diff --git a/package/ytree/ytree.hash b/package/ytree/ytree.hash new file mode 100644 index 00000000..78357d4f --- /dev/null +++ b/package/ytree/ytree.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 6927bf7475d777c40ecc1a8e5125316605683d91a5829a9251b44f12b09e435b ytree-2.09.tar.gz +sha256 eb6bf7204569b4fe8eaf9d4dffc57e44047c5efb5deba1b2d99069ddbc99d031 COPYING diff --git a/package/ytree/ytree.mk b/package/ytree/ytree.mk new file mode 100644 index 00000000..ec59dd8d --- /dev/null +++ b/package/ytree/ytree.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# ytree +# +################################################################################ + +YTREE_VERSION = 2.09 +YTREE_SITE = https://www.han.de/~werner +YTREE_LICENSE = GPL-2.0+ +YTREE_LICENSE_FILES = COPYING +YTREE_DEPENDENCIES = ncurses + +YTREE_CFLAGS = -DCOLOR_SUPPORT $(TARGET_CFLAGS) +YTREE_LDFLAGS = -lncurses $(TARGET_LDFLAGS) + +ifeq ($(BR2_PACKAGE_READLINE),y) +YTREE_DEPENDENCIES += host-pkgconf readline +YTREE_CFLAGS += -DREADLINE_SUPPORT +YTREE_LDFLAGS += `$(PKG_CONFIG_HOST_BINARY) --libs readline` +endif + +define YTREE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(YTREE_CFLAGS)" LDFLAGS="$(YTREE_LDFLAGS)" +endef + +define YTREE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)/usr" install +endef + +$(eval $(generic-package)) diff --git a/package/z3/Config.in b/package/z3/Config.in new file mode 100644 index 00000000..8cd31286 --- /dev/null +++ b/package/z3/Config.in @@ -0,0 +1,45 @@ +# z3 supports arch for which libc fenv.h provides all four macros: +# FE_DOWNWARD, FE_TONEAREST, FE_TOWARDZERO, FE_UPWARD +# See for example in glibc https://sourceware.org/git/glibc.git +# git grep -E '^[[:space:]]*#[[:space:]]*define[[:space:]]+FE_(TONEAREST|UPWARD|DOWNWARD|TOWARDZERO)' sysdeps/ +config BR2_PACKAGE_Z3_ARCH_SUPPORTS + bool + default y if BR2_aarch64 || BR2_aarch64_be + default y if BR2_arceb || BR2_arcle + default y if BR2_arm || BR2_armeb + default y if BR2_i386 + default y if BR2_m68k + # BR2_microblaze has only FE_TONEAREST + default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + # BR2_nios2 has only FE_TONEAREST + default y if BR2_or1k + default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + default y if BR2_riscv + default y if BR2_s390x + # BR2_sh has only FE_{TONEAREST,TOWARDZERO} + default y if BR2_sparc || BR2_sparc64 + default y if BR2_x86_64 + # BR2_xtensa supports only uclibc which does not have fenv.h + +config BR2_PACKAGE_Z3 + bool "z3" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # c++17 + # z3 needs fenv.h which is not provided by uclibc + depends on !BR2_TOOLCHAIN_USES_UCLIBC + depends on BR2_PACKAGE_Z3_ARCH_SUPPORTS + help + Z3, also known as the Z3 Theorem Prover, is a cross-platform + satisfiability modulo theories (SMT) solver. + + https://github.com/Z3Prover/z3 + +if BR2_PACKAGE_Z3 + +config BR2_PACKAGE_Z3_PYTHON + bool "Python bindings" + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON3_PYEXPAT # runtime + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + +endif diff --git a/package/z3/z3.hash b/package/z3/z3.hash new file mode 100644 index 00000000..df78fd8b --- /dev/null +++ b/package/z3/z3.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 01bcc61c8362e37bb89fd2430f7e3385e86df7915019bd2ce45de9d9bd934502 z3-4.13.0.tar.gz +sha256 e617cad2ab9347e3129c2b171e87909332174e17961c5c3412d0799469111337 LICENSE.txt diff --git a/package/z3/z3.mk b/package/z3/z3.mk new file mode 100644 index 00000000..e436d48f --- /dev/null +++ b/package/z3/z3.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# z3 +# +################################################################################ + +Z3_VERSION = 4.13.0 +Z3_SITE = $(call github,Z3Prover,z3,z3-$(Z3_VERSION)) +Z3_LICENSE = MIT +Z3_LICENSE_FILES = LICENSE.txt +Z3_INSTALL_STAGING = YES +Z3_SUPPORTS_IN_SOURCE_BUILD = NO + +ifeq ($(BR2_PACKAGE_Z3_PYTHON),y) +Z3_CONF_OPTS += \ + -DCMAKE_INSTALL_PYTHON_PKG_DIR=/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages \ + -DZ3_BUILD_PYTHON_BINDINGS=ON +else +Z3_CONF_OPTS += -DZ3_BUILD_PYTHON_BINDINGS=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/zabbix/0001-m4-netsnmp.m4-fix-shared-netsnmp-build.patch b/package/zabbix/0001-m4-netsnmp.m4-fix-shared-netsnmp-build.patch new file mode 100644 index 00000000..6c742b0d --- /dev/null +++ b/package/zabbix/0001-m4-netsnmp.m4-fix-shared-netsnmp-build.patch @@ -0,0 +1,44 @@ +From 3e810c0804ec40ad6e111a9791cdb2033ecdad71 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 25 Feb 2022 23:30:19 +0100 +Subject: [PATCH] m4/netsnmp.m4: fix shared netsnmp build + +Since commit fe391e8689c523d3c7ea6b173d25aa5dba3a6902, the build fails +with the following error if the user provides the path of +net-snmp-config through the --with-net-snmp option: + +configure: error: "libnetsnmp.a static library was not found in /home/buildroot/autobuild/instance-0/output-1/host/powerpc64le-buildroot-linux-gnu/sysroot/usr/bin/../../usr/lib" + +However, the assumption that a static library will be provided by the +system is just plain wrong so replace AC_MSG_ERROR by AC_MSG_WARN + +Fixes: + - http://autobuild.buildroot.org/results/0f541e45d1fa27b3302968683bf64949131ec1c9 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/zabbix/zabbix/pull/61 +--- + m4/netsnmp.m4 | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/m4/netsnmp.m4 b/m4/netsnmp.m4 +index 5e84d84303..87e21a67e6 100644 +--- a/m4/netsnmp.m4 ++++ b/m4/netsnmp.m4 +@@ -140,8 +140,11 @@ AC_HELP_STRING([--with-net-snmp@<:@=ARG@:>@], + test [ "x$static_linking_support" = "xno" -o -z "$static_linking_support" ] -a -z "$_libsnmp_dir_lib" && AC_MSG_ERROR(["Compiler not support statically linked libs from default folders"]) + + if test "x$static_linking_support" = "xno" -o -z "$static_linking_support"; then +- test -f $_libsnmp_dir_lib/libnetsnmp.a || AC_MSG_ERROR(["libnetsnmp.a static library was not found in $_libsnmp_dir_lib"]) +- SNMP_LIBS=`echo "$SNMP_LIBS"|sed "s|-lnetsnmp|$_libsnmp_dir_lib/libnetsnmp.a|g"` ++ if test -f $_libsnmp_dir_lib/libnetsnmp.a; then ++ SNMP_LIBS=`echo "$SNMP_LIBS"|sed "s|-lnetsnmp|$_libsnmp_dir_lib/libnetsnmp.a|g"` ++ else ++ AC_MSG_WARN(["libnetsnmp.a static library was not found in $_libsnmp_dir_lib"]) ++ fi + else + SNMP_LIBS=`echo "$SNMP_LIBS"|sed "s/-lnetsnmp/${static_linking_support}static -lnetsnmp ${static_linking_support}dynamic/g"` + fi +-- +2.34.1 + diff --git a/package/zabbix/0002-fix-build-with-libressl-3.5.0.patch b/package/zabbix/0002-fix-build-with-libressl-3.5.0.patch new file mode 100644 index 00000000..ad6960f3 --- /dev/null +++ b/package/zabbix/0002-fix-build-with-libressl-3.5.0.patch @@ -0,0 +1,71 @@ +From 5c8511384f1d41f9c2a131604d5cb2dbc1c0aec9 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 24 Feb 2023 12:23:56 +0100 +Subject: [PATCH] fix build with libressl >= 3.5.0 + +Fix the following build failure with libressl >= 3.5.0: + +tls.c:113:17: error: static declaration of 'OPENSSL_cleanup' follows non-static declaration + 113 | static void OPENSSL_cleanup(void) + | ^~~~~~~~~~~~~~~ +In file included from /home/thomas/autobuild/instance-3/output-1/host/mips-buildroot-linux-gnu/sysroot/usr/include/openssl/bio.h:69, + from /home/thomas/autobuild/instance-3/output-1/host/mips-buildroot-linux-gnu/sysroot/usr/include/openssl/evp.h:67, + from /home/thomas/autobuild/instance-3/output-1/host/mips-buildroot-linux-gnu/sysroot/usr/include/openssl/hmac.h:67, + from /home/thomas/autobuild/instance-3/output-1/host/mips-buildroot-linux-gnu/sysroot/usr/include/openssl/ssl.h:150, + from ../../../include/zbxcomms.h:65, + from tls.c:20: +/home/thomas/autobuild/instance-3/output-1/host/mips-buildroot-linux-gnu/sysroot/usr/include/openssl/crypto.h:565:6: note: previous declaration of 'OPENSSL_cleanup' with type 'void(void)' + 565 | void OPENSSL_cleanup(void); + | ^~~~~~~~~~~~~~~ +In file included from tls.c:20: +tls.c: In function 'zbx_log_ciphersuites': +../../../include/zbxcomms.h:222:75: error: invalid use of incomplete typedef 'SSL_CTX' {aka 'struct ssl_ctx_st'} + 222 | # define SSL_CTX_get_ciphers(ciphers) ((ciphers)->cipher_list) + | ^~ +tls.c:1415:31: note: in expansion of macro 'SSL_CTX_get_ciphers' + 1415 | cipher_list = SSL_CTX_get_ciphers(ciphers); + | ^~~~~~~~~~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/acdfcb17b39d438ccf5e4621707a10f60577d233 + +Signed-off-by: Fabrice Fontaine +Upstream: not sent (no feedback on first patch) +--- + include/zbxcomms.h | 3 ++- + src/libs/zbxcomms/tls.c | 5 +++-- + 2 files changed, 5 insertions(+), 3 deletions(-) + +diff --git a/include/zbxcomms.h b/include/zbxcomms.h +index e7d74dbd0f..d6efa358fe 100644 +--- a/include/zbxcomms.h ++++ b/include/zbxcomms.h +@@ -253,7 +253,8 @@ int zbx_telnet_execute(ZBX_SOCKET socket_fd, const char *command, AGENT_RESULT * + /* TLS BLOCK */ + #if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL) + +-#if defined(HAVE_OPENSSL) && OPENSSL_VERSION_NUMBER < 0x1010000fL || defined(LIBRESSL_VERSION_NUMBER) ++#if defined(HAVE_OPENSSL) && OPENSSL_VERSION_NUMBER < 0x1010000fL || \ ++ defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x3050000fL + # if !defined(LIBRESSL_VERSION_NUMBER) + # define OPENSSL_INIT_LOAD_SSL_STRINGS 0 + # define OPENSSL_INIT_LOAD_CRYPTO_STRINGS 0 +diff --git a/src/libs/zbxcomms/tls.c b/src/libs/zbxcomms/tls.c +index 54ab0a6ef4..bd4075b3e4 100644 +--- a/src/libs/zbxcomms/tls.c ++++ b/src/libs/zbxcomms/tls.c +@@ -28,8 +28,9 @@ + #include "log.h" + #include "zbxcrypto.h" + +-#if defined(HAVE_OPENSSL) && OPENSSL_VERSION_NUMBER < 0x1010000fL || defined(LIBRESSL_VERSION_NUMBER) +-/* for OpenSSL 1.0.1/1.0.2 (before 1.1.0) or LibreSSL */ ++#if defined(HAVE_OPENSSL) && OPENSSL_VERSION_NUMBER < 0x1010000fL || \ ++ defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x3050000fL ++/* for OpenSSL 1.0.1/1.0.2 (before 1.1.0) or LibreSSL (before 3.5.0) */ + + /* mutexes for multi-threaded OpenSSL (see "man 3ssl threads" and example in crypto/threads/mttest.c) */ + +-- +2.39.1 + diff --git a/package/zabbix/Config.in b/package/zabbix/Config.in new file mode 100644 index 00000000..9ac66811 --- /dev/null +++ b/package/zabbix/Config.in @@ -0,0 +1,83 @@ +config BR2_PACKAGE_ZABBIX + bool "zabbix" + depends on BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_PCRE2 + help + Zabbix is an enterprise-class open source distributed + monitoring solution. Zabbix is free of cost. Zabbix is + written and distributed under the GPL General Public License + version 2. + + https://zabbix.com + +comment "zabbix need glibc" + depends on !BR2_TOOLCHAIN_USES_GLIBC + +if BR2_PACKAGE_ZABBIX + +comment "zabbix server needs C++ and threads or wchar and dynamic libs" + depends on BR2_USE_MMU + depends on \ + !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) && \ + !(BR2_USE_WCHAR && !BR2_STATIC_LIBS) + +config BR2_PACKAGE_ZABBIX_SERVER + bool "zabbix server" + depends on BR2_USE_MMU # mysql, postgresql + depends on \ + (BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) || \ + (BR2_USE_WCHAR && !BR2_STATIC_LIBS && !BR2_OPTIMIZE_FAST) + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_LIBEVENT + +if BR2_PACKAGE_ZABBIX_SERVER + +choice + prompt "server database backend" + +config BR2_PACKAGE_ZABBIX_SERVER_MYSQL + bool "mysql" + depends on BR2_INSTALL_LIBSTDCPP # mysql + depends on BR2_TOOLCHAIN_HAS_THREADS # mysql + select BR2_PACKAGE_MARIADB + +config BR2_PACKAGE_ZABBIX_SERVER_POSTGRESQL + bool "postgresql" + depends on BR2_USE_WCHAR # postgresql + depends on !BR2_STATIC_LIBS # postgresql + depends on !BR2_OPTIMIZE_FAST # postgresql + select BR2_PACKAGE_POSTGRESQL + +endchoice + +config BR2_PACKAGE_ZABBIX_SERVER_COPY_DUMPS + bool "install SQL dumps" + help + Copy initial database dumps to /var/lib/zabbix/schema + + These still need to be imported into the database by hand. + +config BR2_PACKAGE_ZABBIX_SERVER_COPY_FRONTEND + bool "install web UI to target" + depends on BR2_PACKAGE_PHP # runtime + select BR2_PACKAGE_PHP_EXT_MYSQLI if BR2_PACKAGE_ZABBIX_SERVER_MYSQL + select BR2_PACKAGE_PHP_EXT_PGSQL if BR2_PACKAGE_ZABBIX_SERVER_POSTGRESQL + select BR2_PACKAGE_PHP_EXT_BCMATH + select BR2_PACKAGE_PHP_EXT_SOCKETS + select BR2_PACKAGE_PHP_EXT_MBSTRING + select BR2_PACKAGE_PHP_EXT_GD + select BR2_PACKAGE_PHP_EXT_LIBXML2 + select BR2_PACKAGE_PHP_EXT_CTYPE + select BR2_PACKAGE_PHP_EXT_SESSION + select BR2_PACKAGE_PHP_EXT_XMLREADER + select BR2_PACKAGE_PHP_EXT_XMLWRITER + help + Copy web-UI to /var/www/zabbix. You need to set up a web + server to access it. + +comment "zabbix web UI requires PHP" + depends on !BR2_PACKAGE_PHP + +endif + +endif diff --git a/package/zabbix/zabbix-agent.service b/package/zabbix/zabbix-agent.service new file mode 100644 index 00000000..8b4f45a4 --- /dev/null +++ b/package/zabbix/zabbix-agent.service @@ -0,0 +1,17 @@ +[Unit] +Description=Zabbix Agent Daemon +After=network.target + +[Service] +Type=forking +ExecStart=/usr/sbin/zabbix_agentd +ExecReload=/usr/sbin/zabbix_agentd -R config_cache_reload +RuntimeDirectory=zabbix +PIDFile=/run/zabbix/zabbix_agentd.pid +User=zabbix +Group=zabbix +WatchdogSec=30s +Restart=on-failure + +[Install] +WantedBy=multi-user.target diff --git a/package/zabbix/zabbix-server.service b/package/zabbix/zabbix-server.service new file mode 100644 index 00000000..b8ba0d17 --- /dev/null +++ b/package/zabbix/zabbix-server.service @@ -0,0 +1,17 @@ +[Unit] +Description=Zabbix Server Daemon +After=network.target + +[Service] +Type=forking +ExecStart=/usr/sbin/zabbix_server +ExecReload=/usr/sbin/zabbix_server -R config_cache_reload +RuntimeDirectory=zabbix +PIDFile=/run/zabbix/zabbix_server.pid +User=zabbix +Group=zabbix +WatchdogSec=30s +Restart=on-failure + +[Install] +WantedBy=multi-user.target diff --git a/package/zabbix/zabbix.hash b/package/zabbix/zabbix.hash new file mode 100644 index 00000000..bb6127e5 --- /dev/null +++ b/package/zabbix/zabbix.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 6d423810667b948ed22052d9aa84a035e2d4b92cbe8efdb669cac529806b722d zabbix-6.2.7.tar.gz +sha256 f8fc3fd12521b60d53d8c5d48a883eb3c9c5ddec9de986a273e1b77f69d811db README +sha256 444fe54aecc95ac0f3314289c300afc73b3946a4dc9fbd7e022709b3e0924dd0 COPYING diff --git a/package/zabbix/zabbix.mk b/package/zabbix/zabbix.mk new file mode 100644 index 00000000..18fb01de --- /dev/null +++ b/package/zabbix/zabbix.mk @@ -0,0 +1,144 @@ +################################################################################ +# +# zabbix +# +################################################################################ + +ZABBIX_VERSION_MAJOR = 6.2 +ZABBIX_VERSION = $(ZABBIX_VERSION_MAJOR).7 +ZABBIX_SITE = https://cdn.zabbix.com/zabbix/sources/oldstable/$(ZABBIX_VERSION_MAJOR) +ZABBIX_SELINUX_MODULES = zabbix +ZABBIX_LICENSE = GPL-2.0+ +ZABBIX_LICENSE_FILES = README COPYING +ZABBIX_CPE_ID_VENDOR = zabbix +# We're patching m4/netsnmp.m4 +ZABBIX_AUTORECONF = YES + +ZABBIX_DEPENDENCIES = host-pkgconf pcre2 +ZABBIX_CONF_OPTS = \ + --with-libpcre2 \ + --without-sqlite3 \ + --enable-agent \ + --disable-agent2 \ + --disable-java \ + --disable-proxy \ + --disable-webservice + +define ZABBIX_USERS + zabbix -1 zabbix -1 * /var/lib/zabbix - - zabbix user +endef + +ZABBIX_SYSTEMD_UNITS += zabbix-agent.service + +define ZABBIX_CHANGE_PIDFILE_LOCATION + $(SED) 's%\#\ PidFile=/tmp/zabbix\(.*\).pid%PidFile=/run/zabbix/zabbix\1.pid%g' $(@D)/conf/zabbix_*.conf +endef +ZABBIX_POST_PATCH_HOOKS += ZABBIX_CHANGE_PIDFILE_LOCATION + +ifeq ($(BR2_PACKAGE_OPENIPMI),y) +ZABBIX_CONF_OPTS += --with-openipmi=$(STAGING_DIR)/usr +ZABBIX_DEPENDENCIES += openipmi +else +ZABBIX_CONF_OPTS += --without-openipmi +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +ZABBIX_CONF_OPTS += --with-libcurl=$(STAGING_DIR)/usr/bin/curl-config +ZABBIX_DEPENDENCIES += libcurl +else +ZABBIX_CONF_OPTS += --without-libcurl +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +ZABBIX_CONF_OPTS += --with-libxml2=$(STAGING_DIR)/usr/bin/xml2-config +ZABBIX_DEPENDENCIES += libxml2 +else +ZABBIX_CONF_OPTS += --without-libxml2 +endif + +ifeq ($(BR2_PACKAGE_NETSNMP_ENABLE_MIBS),y) +ZABBIX_CONF_OPTS += --with-net-snmp=$(STAGING_DIR)/usr/bin/net-snmp-config +ZABBIX_DEPENDENCIES += netsnmp +else +ZABBIX_CONF_OPTS += --without-net-snmp +endif + +ifeq ($(BR2_PACKAGE_OPENLDAP),y) +ZABBIX_CONF_OPTS += --with-ldap=$(STAGING_DIR)/usr +ZABBIX_DEPENDENCIES += openldap +else +ZABBIX_CONF_OPTS += --without-ldap +endif + +ifeq ($(BR2_PACKAGE_LIBSSH2),y) +ZABBIX_CONF_OPTS += --with-ssh2=$(STAGING_DIR)/usr +ZABBIX_DEPENDENCIES += libssh2 +else +ZABBIX_CONF_OPTS += --without-ssh2 +endif + +# Only one of openssl or gnutls should be enabled +ifeq ($(BR2_PACKAGE_OPENSSL),y) +ZABBIX_CONF_OPTS += --with-openssl=$(STAGING_DIR)/usr --without-gnutls +ZABBIX_DEPENDENCIES += openssl +else ifeq ($(BR2_PACKAGE_GNUTLS),y) +ZABBIX_CONF_OPTS += --with-gnutls=$(STAGING_DIR)/usr --without-openssl +ZABBIX_DEPENDENCIES += gnutls +else +ZABBIX_CONF_OPTS += --without-gnutls --without-openssl +endif + +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER),y) + +ZABBIX_DEPENDENCIES += libevent zlib +ZABBIX_CONF_OPTS += \ + --enable-server \ + --with-libevent=$(STAGING_DIR)/usr \ + --with-libpthread=$(STAGING_DIR)/usr \ + --with-zlib=$(STAGING_DIR)/usr +ZABBIX_SYSTEMD_UNITS += zabbix-server.service + +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_COPY_FRONTEND),y) +define ZABBIX_SERVER_COPY_FRONTEND + mkdir -p $(TARGET_DIR)/var/www/zabbix/ + cp -dpfr $(@D)/ui/* $(TARGET_DIR)/var/www/zabbix/ +endef +ZABBIX_POST_INSTALL_TARGET_HOOKS += ZABBIX_SERVER_COPY_FRONTEND +endif + +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_MYSQL),y) +ZABBIX_DEPENDENCIES += mariadb +ZABBIX_CONF_OPTS += --with-mysql=$(STAGING_DIR)/usr/bin/mysql_config --without-postgresql +ZABBIX_DATABASE = mysql +else ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_POSTGRESQL),y) +ZABBIX_DEPENDENCIES += postgresql +ZABBIX_CONF_OPTS += --with-postgresql=$(STAGING_DIR)/usr/bin/pg_config --without-mysql +ZABBIX_DATABASE = postgresql +endif + +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_COPY_DUMPS),y) +define ZABBIX_SERVER_COPY_DUMPS + mkdir -p $(TARGET_DIR)/var/lib/zabbix/schema/ + install -m 644 $(@D)/database/$(ZABBIX_DATABASE)/*.sql $(TARGET_DIR)/var/lib/zabbix/schema/ +endef +ZABBIX_POST_INSTALL_TARGET_HOOKS += ZABBIX_SERVER_COPY_DUMPS +endif + +endif # BR2_PACKAGE_ZABBIX_SERVER + +# zabbix uses custom --enable-{static,shared} options, instead of +# standard libtool directives resulting in a build failure with libcurl +# or openssl. +ifeq ($(BR2_SHARED_STATIC_LIBS),y) +ZABBIX_CONF_OPTS += --disable-static +endif + +define ZABBIX_INSTALL_INIT_SYSTEMD + $(foreach unit,$(ZABBIX_SYSTEMD_UNITS),\ + $(INSTALL) -D -m 0644 $(ZABBIX_PKGDIR)/$(unit) $(TARGET_DIR)/usr/lib/systemd/system/$(unit) && \ + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants && \ + ln -fs -r $(TARGET_DIR)/usr/lib/systemd/system/$(unit) $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/$(unit) + ) +endef + +$(eval $(autotools-package)) diff --git a/package/zbar/Config.in b/package/zbar/Config.in new file mode 100644 index 00000000..0f4d1157 --- /dev/null +++ b/package/zbar/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_ZBAR + bool "zbar" + depends on BR2_TOOLCHAIN_HAS_THREADS # libv4l + depends on BR2_USE_MMU # libv4l + depends on BR2_INSTALL_LIBSTDCPP # libv4l + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 # libv4l + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBV4L + help + QR and barcode scanner + + https://git.linuxtv.org/zbar.git/about/ + +comment "zbar needs a toolchain w/ threads, C++ and headers >= 3.0" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 diff --git a/package/zbar/zbar.hash b/package/zbar/zbar.hash new file mode 100644 index 00000000..0136b1d1 --- /dev/null +++ b/package/zbar/zbar.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 83be8f85fc7c288fd91f98d52fc55db7eedbddcf10a83d9221d7034636683fa0 zbar-0.23.93.tar.bz2 +sha256 44260f9252c7fe38ba8dfb645330504f4a375e3a5e9dd7d5d6b9f04adb4952f1 LICENSE.md diff --git a/package/zbar/zbar.mk b/package/zbar/zbar.mk new file mode 100644 index 00000000..86f33796 --- /dev/null +++ b/package/zbar/zbar.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# zbar +# +################################################################################ + +ZBAR_VERSION = 0.23.93 +ZBAR_SOURCE = zbar-$(ZBAR_VERSION).tar.bz2 +ZBAR_SITE = https://www.linuxtv.org/downloads/zbar +ZBAR_LICENSE = LGPL-2.1+ +ZBAR_LICENSE_FILES = LICENSE.md +ZBAR_CPE_ID_VALID = YES +ZBAR_INSTALL_STAGING = YES +ZBAR_DEPENDENCIES = libv4l jpeg $(TARGET_NLS_DEPENDENCIES) +# uses C99 features +ZBAR_CONF_ENV = \ + CFLAGS="$(TARGET_CFLAGS) -std=gnu99" \ + LIBS=$(TARGET_NLS_LIBS) +ZBAR_CONF_OPTS = \ + --disable-doc \ + --without-qt \ + --without-qt5 \ + --without-gtk \ + --without-x \ + --without-java + +ifeq ($(BR2_PACKAGE_DBUS),y) +ZBAR_DEPENDENCIES += dbus +ZBAR_CONF_OPTS += --with-dbus +else +ZBAR_CONF_OPTS += --without-dbus +endif + +ifeq ($(BR2_PACKAGE_IMAGEMAGICK),y) +ZBAR_DEPENDENCIES += imagemagick +ZBAR_CONF_OPTS += --with-imagemagick +else +ZBAR_CONF_OPTS += --without-imagemagick +endif + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +ZBAR_DEPENDENCIES += host-python3 python3 +ZBAR_CONF_OPTS += --with-python=python3 +ZBAR_CONF_ENV += PYTHON_CONFIG="$(STAGING_DIR)/usr/bin/python3-config" +else +ZBAR_CONF_OPTS += --with-python=no +endif + +$(eval $(autotools-package)) diff --git a/package/zchunk/Config.in b/package/zchunk/Config.in new file mode 100644 index 00000000..11463dd4 --- /dev/null +++ b/package/zchunk/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_ZCHUNK + bool "zchunk" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL + help + A file format designed for highly efficient deltas while + maintaining good compression. + + https://github.com/zchunk/zchunk diff --git a/package/zchunk/zchunk.hash b/package/zchunk/zchunk.hash new file mode 100644 index 00000000..15103a9e --- /dev/null +++ b/package/zchunk/zchunk.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 4d923d32af7db33f3c0a6655b258e857a2ca564912cf85ddce14e9b1b7d495bf zchunk-1.3.2.tar.gz +sha256 3c6a4fd5a93cacec6bf694d0537246bc15a95a274f5c5301749754e56d27b797 LICENSE diff --git a/package/zchunk/zchunk.mk b/package/zchunk/zchunk.mk new file mode 100644 index 00000000..39d51ac3 --- /dev/null +++ b/package/zchunk/zchunk.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# zchunk +# +################################################################################ + +ZCHUNK_VERSION = 1.3.2 +ZCHUNK_SITE = $(call github,zchunk,zchunk,$(ZCHUNK_VERSION)) +ZCHUNK_LICENSE = BSD-2-Clause +ZCHUNK_LICENSE_FILES = LICENSE +ZCHUNK_CPE_ID_VENDOR = zchunk +ZCHUNK_INSTALL_STAGING = YES +ZCHUNK_CONF_OPTS = -Ddocs=false -Dtests=false + +ifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y) +ZCHUNK_DEPENDENCIES += argp-standalone $(TARGET_NLS_DEPENDENCIES) +ZCHUNK_LDFLAGS += $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +ZCHUNK_DEPENDENCIES += libcurl +ZCHUNK_CONF_OPTS += -Dwith-curl=enabled +else +ZCHUNK_CONF_OPTS += -Dwith-curl=disabled +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +ZCHUNK_DEPENDENCIES += openssl +ZCHUNK_CONF_OPTS += -Dwith-openssl=enabled +else +ZCHUNK_CONF_OPTS += -Dwith-openssl=disabled +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +ZCHUNK_DEPENDENCIES += zstd +ZCHUNK_CONF_OPTS += -Dwith-zstd=enabled +else +ZCHUNK_CONF_OPTS += -Dwith-zstd=disabled +endif + +$(eval $(meson-package)) diff --git a/package/zd1211-firmware/Config.in b/package/zd1211-firmware/Config.in new file mode 100644 index 00000000..807c26f5 --- /dev/null +++ b/package/zd1211-firmware/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_ZD1211_FIRMWARE + bool "zd1211-firmware" + help + Firmware for the ZyDAS ZD1211 / Atheros AR5007UG wifi devices. + + https://sourceforge.net/projects/zd1211/ diff --git a/package/zd1211-firmware/zd1211-firmware.hash b/package/zd1211-firmware/zd1211-firmware.hash new file mode 100644 index 00000000..14e2c710 --- /dev/null +++ b/package/zd1211-firmware/zd1211-firmware.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 f11d3810d7f72833997f634584a586dcced71a353f965abf81062ec431d02b12 zd1211-firmware-1.5.tar.bz2 +sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 COPYING diff --git a/package/zd1211-firmware/zd1211-firmware.mk b/package/zd1211-firmware/zd1211-firmware.mk new file mode 100644 index 00000000..1836a9f7 --- /dev/null +++ b/package/zd1211-firmware/zd1211-firmware.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# zd1211-firmware +# +################################################################################ + +ZD1211_FIRMWARE_VERSION = 1.5 +ZD1211_FIRMWARE_SITE = http://downloads.sourceforge.net/project/zd1211/zd1211-firmware/$(ZD1211_FIRMWARE_VERSION) +ZD1211_FIRMWARE_SOURCE = zd1211-firmware-$(ZD1211_FIRMWARE_VERSION).tar.bz2 +ZD1211_FIRMWARE_LICENSE = GPL-2.0 +ZD1211_FIRMWARE_LICENSE_FILES = COPYING + +# Not all of the firmware files are used +define ZD1211_FIRMWARE_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/lib/firmware/zd1211/ + cp -dpf $(@D)/zd1211*{ub,uphr,ur} $(TARGET_DIR)/lib/firmware/zd1211 +endef + +$(eval $(generic-package)) diff --git a/package/zeek/Config.in b/package/zeek/Config.in new file mode 100644 index 00000000..730388de --- /dev/null +++ b/package/zeek/Config.in @@ -0,0 +1,44 @@ +config BR2_PACKAGE_ZEEK + bool "zeek" + depends on BR2_USE_MMU # fork() + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17 + depends on BR2_HOST_GCC_AT_LEAST_7 # host-zeek + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_MUSL_FTS if !BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + select BR2_PACKAGE_ZLIB + help + The Zeek Network Security Monitor + + Zeek is a powerful network analysis framework that is much + different from the typical IDS you may know. (Zeek is the new + name for the long-established Bro system.) + + https://www.zeek.org + +if BR2_PACKAGE_ZEEK + +config BR2_PACKAGE_ZEEK_ZEEKCTL + bool "zeekctl" + select BR2_PACKAGE_BASH # runtime + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash + select BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON3_CURSES + select BR2_PACKAGE_PYTHON3_SQLITE + select BR2_PACKAGE_PYTHON3_ZLIB + help + Tool for managing Zeek deployments + +endif + +comment "zeek needs a toolchain w/ C++, wchar, threads, dynamic library, gcc >= 7, host gcc >= 7" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \ + !BR2_HOST_GCC_AT_LEAST_7 diff --git a/package/zeek/zeek.hash b/package/zeek/zeek.hash new file mode 100644 index 00000000..05e57b50 --- /dev/null +++ b/package/zeek/zeek.hash @@ -0,0 +1,6 @@ +# Locally computed: +sha256 8c0afc999a8dd1c1f677a5cf818479b99c2d527e679e1ef99fb1b03f989c0373 zeek-4.1.1.tar.gz + +# Hash for license files: +sha256 b2817e2fb935805ec9fc0e90c6b971efd810d9aedfc646bc5fcb535221e0266a COPYING +sha256 1a451eca7b3826a7df62991ba90dd6d23ff03d28c2eefb7f8c4f8b1eac97a61b COPYING.3rdparty diff --git a/package/zeek/zeek.mk b/package/zeek/zeek.mk new file mode 100644 index 00000000..584bfb07 --- /dev/null +++ b/package/zeek/zeek.mk @@ -0,0 +1,92 @@ +################################################################################ +# +# zeek +# +################################################################################ + +ZEEK_VERSION = 4.1.1 +ZEEK_SITE = https://download.zeek.org +ZEEK_LICENSE = \ + BSD-3-Clause (zeek, C++ Actor Framework, ConvertUTF.c, CardinalityCounter.cc, pybind11), \ + Public Domain (sqlite), \ + MIT (doctest, libkqueue, RapidJSON, tsl-ordered-map, bro_inet_ntop.c), \ + LGPL-3.0+ (Multifast Project), \ + BSD-2-Clause (event.h), \ + BSD-3-Clause (in_cksum.cc) \ + BSD-4-Clause (Patricia.c, strsep.c, bsd-getopt-long.c), \ + Apache-2.0 (highwayhash, folly), \ + MPL-2.0 (mozilla-ca-list.zeek) +ZEEK_LICENSE_FILES = COPYING COPYING.3rdparty +ZEEK_CPE_ID_VENDOR = zeek +ZEEK_SUPPORTS_IN_SOURCE_BUILD = NO +ZEEK_DEPENDENCIES = \ + host-bison \ + host-flex \ + host-pkgconf \ + host-python3 \ + host-zeek \ + $(if $(BR2_PACKAGE_LIBKRB5),libkrb5) \ + $(if $(BR2_PACKAGE_LIBMAXMINDDB),libmaxminddb) \ + libpcap \ + openssl \ + $(if $(BR2_PACKAGE_ROCKSDB),rocksdb) \ + zlib +HOST_ZEEK_DEPENDENCIES = \ + host-bison \ + host-flex \ + host-pkgconf \ + host-python3 \ + host-libpcap \ + host-openssl \ + host-zlib + +ZEEK_CONF_OPTS = \ + -DBIFCL_EXE_PATH=$(HOST_DIR)/bin/bifcl \ + -DBINPAC_EXE_PATH=$(HOST_DIR)/bin/binpac \ + -DBROKER_DISABLE_DOCS=ON \ + -DBROKER_DISABLE_TESTS=ON \ + -DINSTALL_AUX_TOOLS=ON \ + -DZEEK_ETC_INSTALL_DIR=/etc + +define ZEEK_FIX_PYTHON_PATH + $(SED) 's,@PYTHON_EXECUTABLE@,/usr/bin/python,' \ + $(@D)/auxil/zeekctl/ZeekControl/ssh_runner.py +endef +ZEEK_POST_PATCH_HOOKS += ZEEK_FIX_PYTHON_PATH + +ifeq ($(BR2_PACKAGE_JEMALLOC),y) +ZEEK_DEPENDENCIES += jemalloc +ZEEK_CONF_OPTS += -DENABLE_JEMALLOC=ON +else +ZEEK_CONF_OPTS += -DENABLE_JEMALLOC=OFF +endif + +ifeq ($(BR2_PACKAGE_ZEEK_ZEEKCTL),y) +ZEEK_DEPENDENCIES += host-swig python3 +ZEEK_CONF_OPTS += \ + -DDISABLE_PYTHON_BINDINGS=OFF \ + -DINSTALL_ZEEKCTL=ON \ + -DPY_MOD_INSTALL_DIR=/usr/lib/zeekctl \ + -DZEEK_PYTHON_PREFIX=/usr +else +ZEEK_CONF_OPTS += \ + -DDISABLE_PYTHON_BINDINGS=ON \ + -DINSTALL_ZEEKCTL=OFF +endif + +ifneq ($(BR2_TOOLCHAIN_USES_GLIBC),y) +ZEEK_DEPENDENCIES += musl-fts +ZEEK_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-lfts +endif + +HOST_ZEEK_MAKE_OPTS = binpac bifcl + +define HOST_ZEEK_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(HOST_ZEEK_BUILDDIR)/auxil/bifcl/bifcl \ + $(HOST_DIR)/bin/bifcl + $(INSTALL) -D -m 0755 $(HOST_ZEEK_BUILDDIR)/auxil/binpac/src/binpac \ + $(HOST_DIR)/bin/binpac +endef + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/package/zerofree/Config.in b/package/zerofree/Config.in new file mode 100644 index 00000000..e7007819 --- /dev/null +++ b/package/zerofree/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_ZEROFREE + bool "zerofree" + depends on BR2_USE_MMU # e2fsprogs + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_E2FSPROGS + help + zerofree is a utility which scans the free blocks in an ext2 + filesystem and fills any non-zero blocks with zeroes. + + https://frippery.org/uml/ + +comment "zerofree needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/package/zerofree/zerofree.hash b/package/zerofree/zerofree.hash new file mode 100644 index 00000000..33996117 --- /dev/null +++ b/package/zerofree/zerofree.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 956bc861b55ba0a2b7593c58d32339dab1a0e7da6ea2b813d27c80f08b723867 zerofree-1.1.1.tgz +sha256 90daae00475a992a367da5b0658469a5d1c4449dbbe964c5b7246e1aec92f491 COPYING diff --git a/package/zerofree/zerofree.mk b/package/zerofree/zerofree.mk new file mode 100644 index 00000000..3a9c16ee --- /dev/null +++ b/package/zerofree/zerofree.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# zerofree +# +################################################################################ + +ZEROFREE_VERSION = 1.1.1 +ZEROFREE_SOURCE = zerofree-$(ZEROFREE_VERSION).tgz +ZEROFREE_SITE = https://frippery.org/uml +ZEROFREE_LICENSE = GPL-2.0 +ZEROFREE_LICENSE_FILES = COPYING +ZEROFREE_DEPENDENCIES = e2fsprogs + +# We use the same workaround as in https://bugs.gentoo.org/716136 +# to build with musl. +ZEROFREE_CFLAGS = \ + $(TARGET_CFLAGS) \ + $(if $(BR2_TOOLCHAIN_USES_MUSL),-DHAVE_SYS_TYPES_H) + +define ZEROFREE_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) CFLAGS="$(ZEROFREE_CFLAGS)" -C $(@D) +endef + +define ZEROFREE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/zerofree $(TARGET_DIR)/usr/bin/zerofree +endef + +$(eval $(generic-package)) diff --git a/package/zeromq/Config.in b/package/zeromq/Config.in new file mode 100644 index 00000000..209acf1a --- /dev/null +++ b/package/zeromq/Config.in @@ -0,0 +1,65 @@ +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_TOOLCHAIN_HAS_THREADS + help + ØMQ (ZeroMQ, 0MQ, zmq) looks like an embeddable networking + library but acts like a concurrency framework. It gives you + sockets that carry whole messages across various transports + like in-process, inter- process, TCP, and multicast. You can + connect sockets N-to-N with patterns like fanout, pub-sub, + task distribution, and request-reply. It's fast enough to + be the fabric for clustered products. Its asynchronous I/O + model gives you scalable multicore applications, built as + asynchronous message-processing tasks. It has a score of + language APIs and runs on most operating systems. + + ØMQ is from iMatix and is LGPL open source. + + http://www.zeromq.org/ + +if BR2_PACKAGE_ZEROMQ + +comment "norm support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_ZEROMQ_NORM + bool "NORM support" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_NORM + help + 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) implemented either over raw IP packets or UDP + datagrams (encapsulated PGM). + +config BR2_PACKAGE_ZEROMQ_DRAFTS + bool "Draft APIs support" + help + Enable unstable draft ZeroMQ APIs + + https://pyzmq.readthedocs.io/en/latest/draft.html + +config BR2_PACKAGE_ZEROMQ_WEBSOCKET + bool "WebSocket support" + help + Enable WebSocket transport + +endif diff --git a/package/zeromq/zeromq.hash b/package/zeromq/zeromq.hash new file mode 100644 index 00000000..e5ac2896 --- /dev/null +++ b/package/zeromq/zeromq.hash @@ -0,0 +1,6 @@ +# From https://github.com/zeromq/libzmq/releases +md5 ae933b1e98411fd7cb8309f9502d2737 zeromq-4.3.5.tar.gz +sha1 bdbf686c8a40ba638e21cf74e34dbb425e108500 zeromq-4.3.5.tar.gz +# Locally computed +sha256 6653ef5910f17954861fe72332e68b03ca6e4d9c7160eb3a8de5a5a913bfab43 zeromq-4.3.5.tar.gz +sha256 1f256ecad192880510e84ad60474eab7589218784b9a50bc7ceee34c2b91f1d5 LICENSE diff --git a/package/zeromq/zeromq.mk b/package/zeromq/zeromq.mk new file mode 100644 index 00000000..f1a1f02f --- /dev/null +++ b/package/zeromq/zeromq.mk @@ -0,0 +1,102 @@ +################################################################################ +# +# zeromq +# +################################################################################ + +ZEROMQ_VERSION = 4.3.5 +ZEROMQ_SITE = https://github.com/zeromq/libzmq/releases/download/v$(ZEROMQ_VERSION) +ZEROMQ_INSTALL_STAGING = YES +ZEROMQ_CONF_OPTS = --disable-perf --disable-Werror --without-documentation +ZEROMQ_LICENSE = MPL-2.0 +ZEROMQ_LICENSE_FILES = LICENSE +ZEROMQ_CPE_ID_VENDOR = zeromq +ZEROMQ_CPE_ID_PRODUCT = libzmq + +# Assume these flags are always available. It is true, at least for +# SOCK_CLOEXEC, since linux v2.6.27. +# Note: the flag TCP_KEEPALIVE is NOT available so we do not include it. +ZEROMQ_CONF_ENV = libzmq_cv_sock_cloexec=yes \ + libzmq_cv_o_cloexec=yes \ + libzmq_cv_so_keepalive=yes \ + libzmq_cv_so_priority=yes \ + libzmq_cv_so_bindtodevice=yes \ + libzmq_cv_tcp_keepcnt=yes \ + libzmq_cv_tcp_keepidle=yes \ + libzmq_cv_tcp_keepintvl=yes + +# Internal error, aborting at dwarf2cfi.c:2752 in connect_traces +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58864 +ifeq ($(BR2_m68k_cf),y) +ZEROMQ_CONF_OPTS += CXXFLAGS="$(TARGET_CXXFLAGS) -fno-defer-pop" +endif + +# Only tools/curve_keygen.c needs this, but it doesn't hurt to pass it +# for the rest of the build as well (which automatically includes stdc++). +ifeq ($(BR2_STATIC_LIBS),y) +ZEROMQ_CONF_OPTS += LIBS=-lstdc++ +endif + +ifeq ($(BR2_PACKAGE_ZEROMQ_NORM),y) +ZEROMQ_CONF_OPTS += --with-norm +ZEROMQ_DEPENDENCIES += norm +else +ZEROMQ_CONF_OPTS += --without-norm +endif + +ifeq ($(BR2_PACKAGE_ZEROMQ_PGM),y) +ZEROMQ_DEPENDENCIES += host-pkgconf openpgm +ZEROMQ_CONF_OPTS += --with-pgm +else +ZEROMQ_CONF_OPTS += --without-pgm +endif + +ifeq ($(BR2_PACKAGE_ZEROMQ_DRAFTS),y) +ZEROMQ_CONF_OPTS += --enable-drafts +else +ZEROMQ_CONF_OPTS += --disable-drafts +endif + +ifeq ($(BR2_PACKAGE_ZEROMQ_WEBSOCKET),y) +ZEROMQ_CONF_OPTS += --enable-ws +else +ZEROMQ_CONF_OPTS += --disable-ws +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +ZEROMQ_DEPENDENCIES += host-pkgconf gnutls +ZEROMQ_CONF_OPTS += --with-tls +else +ZEROMQ_CONF_OPTS += --without-tls +endif + +ifeq ($(BR2_PACKAGE_LIBBSD),y) +ZEROMQ_DEPENDENCIES += host-pkgconf libbsd +ZEROMQ_CONF_OPTS += --enable-libbsd +else +ZEROMQ_CONF_OPTS += --disable-libbsd +endif + +ifeq ($(BR2_PACKAGE_LIBNSS),y) +ZEROMQ_DEPENDENCIES += host-pkgconf libnss +ZEROMQ_CONF_OPTS += --with-nss +else +ZEROMQ_CONF_OPTS += --without-nss +endif + +# ZeroMQ uses libsodium if it's available. +ifeq ($(BR2_PACKAGE_LIBSODIUM),y) +ZEROMQ_DEPENDENCIES += libsodium +ZEROMQ_CONF_OPTS += --with-libsodium="$(STAGING_DIR)/usr" +else +ZEROMQ_CONF_OPTS += --without-libsodium +endif + +ifeq ($(BR2_PACKAGE_LIBUNWIND),y) +ZEROMQ_DEPENDENCIES += libunwind +ZEROMQ_CONF_OPTS += --enable-libunwind +else +ZEROMQ_CONF_OPTS += --disable-libunwind +endif + +$(eval $(autotools-package)) diff --git a/package/zfs/0001-ZTS-small-fix-for-SEEK_DATA-SEEK_HOLE-tests.patch b/package/zfs/0001-ZTS-small-fix-for-SEEK_DATA-SEEK_HOLE-tests.patch new file mode 100644 index 00000000..64972c4f --- /dev/null +++ b/package/zfs/0001-ZTS-small-fix-for-SEEK_DATA-SEEK_HOLE-tests.patch @@ -0,0 +1,70 @@ +From 2ccefd4aff98cf355c7d13b3f92bb4d390dfa522 Mon Sep 17 00:00:00 2001 +From: Tino Reichardt +Date: Sun, 4 Aug 2024 11:58:13 +0200 +Subject: [PATCH] ZTS: small fix for SEEK_DATA/SEEK_HOLE tests + +Some libc's like uClibc lag the proper definition of SEEK_DATA +and SEEK_HOLE. Since we have only two files in ZTS which use +these definitons, let's define them by hand: + +``` +#ifndef SEEK_DATA +#define SEEK_DATA 3 +#endif +#ifndef SEEK_HOLE +#define SEEK_HOLE 4 +#endif +``` + +There should be no failures, because: +- FreeBSD has support for SEEK_DATA/SEEK_HOLE since FreeBSD 8 +- Linux has it since Linux 3.1 +- the libc will submit the parameters unchanged to the kernel + +Signed-off-by: Tino Reichardt +Signed-off-by: José Luis Salvador Rufo +Upstream: https://github.com/openzfs/zfs/commit/bd949b10bed3d99e3b40249d9c8d74a0b4304774 +--- + tests/zfs-tests/cmd/mmap_seek.c | 10 ++++++++++ + tests/zfs-tests/tests/functional/cp_files/seekflood.c | 7 +++++++ + 2 files changed, 17 insertions(+) + +diff --git a/tests/zfs-tests/cmd/mmap_seek.c b/tests/zfs-tests/cmd/mmap_seek.c +index 7be92d109565..2d250554a13f 100644 +--- a/tests/zfs-tests/cmd/mmap_seek.c ++++ b/tests/zfs-tests/cmd/mmap_seek.c +@@ -35,6 +35,16 @@ + #include + #endif + ++/* some older uClibc's lack the defines, so we'll manually define them */ ++#ifdef __UCLIBC__ ++#ifndef SEEK_DATA ++#define SEEK_DATA 3 ++#endif ++#ifndef SEEK_HOLE ++#define SEEK_HOLE 4 ++#endif ++#endif ++ + static void + seek_data(int fd, off_t offset, off_t expected) + { +diff --git a/tests/zfs-tests/tests/functional/cp_files/seekflood.c b/tests/zfs-tests/tests/functional/cp_files/seekflood.c +index 02c2c8e6eca5..f832db85970d 100644 +--- a/tests/zfs-tests/tests/functional/cp_files/seekflood.c ++++ b/tests/zfs-tests/tests/functional/cp_files/seekflood.c +@@ -36,6 +36,13 @@ + #include + #include + ++/* some older uClibc's lack the defines, so we'll manually define them */ ++#ifdef __UCLIBC__ ++#ifndef SEEK_DATA ++#define SEEK_DATA 3 ++#endif ++#endif ++ + #define DATASIZE (4096) + char data[DATASIZE]; + diff --git a/package/zfs/Config.in b/package/zfs/Config.in new file mode 100644 index 00000000..049e0716 --- /dev/null +++ b/package/zfs/Config.in @@ -0,0 +1,34 @@ +comment "zfs needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +comment "zfs needs udev /dev management" + depends on BR2_LINUX_KERNEL + depends on !BR2_PACKAGE_HAS_UDEV + +config BR2_PACKAGE_ZFS + bool "zfs" + depends on BR2_LINUX_KERNEL + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_USE_MMU # util-linux (libblkid) + depends on BR2_TOOLCHAIN_HAS_THREADS # libtirpc + select BR2_LINUX_NEEDS_MODULES + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_PACKAGE_LIBAIO + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_LIBCURL + help + OpenZFS on Linux and FreeBSD + + OpenZFS is an advanced file system and volume manager which + was originally developed for Solaris and is now maintained by + the OpenZFS community. This repository contains the code for + running OpenZFS on Linux and FreeBSD. + + This package builds the kernel modules and userland utils + required to operates with ZFS volumes. + + http://zfsonlinux.org/ diff --git a/package/zfs/zfs.hash b/package/zfs/zfs.hash new file mode 100644 index 00000000..9598aed9 --- /dev/null +++ b/package/zfs/zfs.hash @@ -0,0 +1,6 @@ +# From https://github.com/openzfs/zfs/releases/download/zfs-2.2.4/zfs-2.2.4.sha256.asc +sha256 2388cf6f29cd75e87d6d05e4858a09d419c4f883a658d51ef57796121cd08897 zfs-2.2.5.tar.gz + +# Hash for license files: +sha256 1ffb70c33c4f79f04e947facc5c7851f289609256aacb47fc115f700427d9520 LICENSE +sha256 f125a37c829705eff3e6f77a9f6c58fd71060f84ab54180b98fafdf94a2021eb COPYRIGHT diff --git a/package/zfs/zfs.mk b/package/zfs/zfs.mk new file mode 100644 index 00000000..549f8641 --- /dev/null +++ b/package/zfs/zfs.mk @@ -0,0 +1,90 @@ +################################################################################ +# +# zfs +# +################################################################################ + +ZFS_VERSION = 2.2.5 +ZFS_SITE = https://github.com/openzfs/zfs/releases/download/zfs-$(ZFS_VERSION) +ZFS_SELINUX_MODULES = zfs +ZFS_LICENSE = CDDL +ZFS_LICENSE_FILES = LICENSE COPYRIGHT +ZFS_CPE_ID_VENDOR = openzfs +ZFS_CPE_ID_PRODUCT = openzfs + +ZFS_DEPENDENCIES = libaio openssl udev util-linux zlib libcurl linux + +# sysvinit installs only a commented-out modules-load.d/ config file +ZFS_CONF_OPTS = \ + --with-linux=$(LINUX_DIR) \ + --with-linux-obj=$(LINUX_DIR) \ + --disable-rpath \ + --disable-sysvinit + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +ZFS_DEPENDENCIES += libtirpc +ZFS_CONF_OPTS += --with-tirpc +else +ZFS_CONF_OPTS += --without-tirpc +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +# Installs the optional systemd generators, units, and presets files. +ZFS_CONF_OPTS += --enable-systemd +else +ZFS_CONF_OPTS += --disable-systemd +endif + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +ZFS_DEPENDENCIES += python3 python-setuptools host-python-cffi host-python-packaging +ZFS_CONF_ENV += \ + PYTHON=$(HOST_DIR)/bin/python3 \ + PYTHON_CPPFLAGS="`$(STAGING_DIR)/usr/bin/python3-config --includes`" \ + PYTHON_LIBS="`$(STAGING_DIR)/usr/bin/python3-config --ldflags`" \ + PYTHON_EXTRA_LIBS="`$(STAGING_DIR)/usr/bin/python3-config --libs --embed`" \ + PYTHON_SITE_PKG="/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages" +ZFS_CONF_OPTS += --enable-pyzfs +else +ZFS_CONF_OPTS += --disable-pyzfs --without-python +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +ZFS_DEPENDENCIES += linux-pam +ZFS_CONF_OPTS += --enable-pam +else +ZFS_CONF_OPTS += --disable-pam +endif + +# Sets the environment for the `make` that will be run ZFS autotools checks. +ZFS_CONF_ENV += \ + ARCH=$(KERNEL_ARCH) \ + CROSS_COMPILE="$(TARGET_CROSS)" +ZFS_MAKE_ENV += \ + ARCH=$(KERNEL_ARCH) \ + CROSS_COMPILE="$(TARGET_CROSS)" + +# ZFS userland tools are unfunctional without the Linux kernel modules. +ZFS_MODULE_SUBDIRS = \ + module/avl \ + module/icp \ + module/lua \ + module/nvpair \ + module/spl \ + module/unicode \ + module/zcommon \ + module/zstd \ + module/zfs + +# These requirements will be validated by zfs/config/kernel-config-defined.m4 +define ZFS_LINUX_CONFIG_FIXUPS + $(call KCONFIG_DISABLE_OPT,CONFIG_DEBUG_LOCK_ALLOC) + $(call KCONFIG_DISABLE_OPT,CONFIG_TRIM_UNUSED_KSYMS) + $(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_DEFLATE) + $(call KCONFIG_ENABLE_OPT,CONFIG_ZLIB_DEFLATE) + $(call KCONFIG_ENABLE_OPT,CONFIG_ZLIB_INFLATE) +endef + +# Even though zfs builds a kernel module, it gets built directly by +# the autotools logic, so we don't use the kernel-module +# infrastructure. +$(eval $(autotools-package)) diff --git a/package/zic/0001-remove-dependency-check-on-version-file.patch b/package/zic/0001-remove-dependency-check-on-version-file.patch new file mode 100644 index 00000000..cba7ed67 --- /dev/null +++ b/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 +@@ -615,7 +615,7 @@ INSTALL: ALL install date.1 + # Otherwise, use $(VERSION) unless it is "unknown" and there is already + # a 'version' file, in which case reuse the existing 'version' contents + # and append "-dirty" if the contents do not already end in "-dirty". +-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/package/zic/zic.hash b/package/zic/zic.hash new file mode 100644 index 00000000..80c96ed7 --- /dev/null +++ b/package/zic/zic.hash @@ -0,0 +1,4 @@ +# From https://mm.icann.org/pipermail/tz-announce/2024-February/000081.html +sha512 46da8bfa762c7d109db93e5c060789097fc0e1e38bdad5bb8fec886ef47f138bd03b913a743cd5f7e23dc359a72bfd63e7ffc0de199d2b51e6a174361dbdc43c tzcode2024a.tar.gz +# Locally computed: +sha256 0613408568889f5739e5ae252b722a2659c02002839ad970a63dc5e9174b27cf LICENSE diff --git a/package/zic/zic.mk b/package/zic/zic.mk new file mode 100644 index 00000000..8abcec93 --- /dev/null +++ b/package/zic/zic.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# zic +# +################################################################################ + +ZIC_VERSION = 2024a +ZIC_SOURCE = tzcode$(ZIC_VERSION).tar.gz +ZIC_SITE = https://www.iana.org/time-zones/repository/releases +ZIC_STRIP_COMPONENTS = 0 +ZIC_LICENSE = Public domain +ZIC_LICENSE_FILES = LICENSE + +define HOST_ZIC_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) zic +endef + +define HOST_ZIC_INSTALL_CMDS + $(INSTALL) -D -m 755 $(@D)/zic $(HOST_DIR)/sbin/zic + $(INSTALL) -D -m 644 $(@D)/tzfile.h $(HOST_DIR)/include/tzfile.h +endef + +$(eval $(host-generic-package)) + +ZIC = $(HOST_DIR)/sbin/zic diff --git a/package/zip/0001-configure-Remove-Check-C-compiler-type-optimization-.patch b/package/zip/0001-configure-Remove-Check-C-compiler-type-optimization-.patch new file mode 100644 index 00000000..c172bb11 --- /dev/null +++ b/package/zip/0001-configure-Remove-Check-C-compiler-type-optimization-.patch @@ -0,0 +1,130 @@ +From 0f5e1658c05746b17f05a1bade263cad19b37e79 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Thu, 22 Jan 2015 15:20:25 +0100 +Subject: [PATCH] configure: Remove "Check C compiler type (optimization + options)" + +This test force optimization to -O3 +while it is already set in CFLAGS + +Signed-off-by: Romain Naour +--- + unix/configure | 98 ---------------------------------------------------------- + 1 file changed, 98 deletions(-) + +diff --git a/unix/configure b/unix/configure +index 73ba803..4185fee 100644 +--- a/unix/configure ++++ b/unix/configure +@@ -22,108 +22,10 @@ LFLAGS1='' + LFLAGS2='' + LN="ln -s" + +-CFLAGS_OPT='' +- + # bzip2 + IZ_BZIP2=${3-} + CFLAGS_BZ='' + +- +-echo 'Check C compiler type (optimization options)' +-# Sun C? +-cat > conftest.c << _EOF_ +-int main() +-{ +-#ifndef __SUNPRO_C +- bad code +-#endif +- return 0; +-} +-_EOF_ +-$CC $CFLAGS -c conftest.c > /dev/null 2>/dev/null +-if test $? -eq 0; then +- CFLAGS_OPT='-xO3' +- echo " Sun C ($CFLAGS_OPT)" +-else +- # Tru64 DEC/Compaq/HP C? +- cat > conftest.c << _EOF_ +-int main() +-{ +-#ifndef __DECC +- bad code +-#endif +- return 0; +-} +-_EOF_ +- $CC $CFLAGS -c conftest.c > /dev/null 2>/dev/null +- if test $? -eq 0; then +- CFLAGS_OPT='-O3' +- echo " DEC C ($CFLAGS_OPT)" +- else +- # HP-UX HP C? +- cat > conftest.c << _EOF_ +-int main() +-{ +-#ifdef __GNUC__ +- bad code +-#endif +-#ifndef __hpux +- bad code +-#endif +- return 0; +-} +-_EOF_ +- $CC $CFLAGS -c conftest.c > /dev/null 2>/dev/null +- if test $? -eq 0; then +- # HP-UX, not GCC. Lame bundled or real ANSI compiler? +- CFLAGS_OPT_TRY="+O3 +Onolimit" +- $CC $CFLAGS $CFLAGS_OPT_TRY -c conftest.c 2>&1 | \ +- grep '(Bundled)' > /dev/null +- if test $? -ne 0; then +- CFLAGS_OPT="$CFLAGS_OPT_TRY" +- echo " HP-UX ANSI C ($CFLAGS_OPT)" +- else +- echo ' HP-UX Bundled C (no opt)' +- fi +- else +- # GNU C? +- cat > conftest.c << _EOF_ +-int main() +-{ +-#ifndef __GNUC__ +- bad code +-#endif +- return 0; +-} +-_EOF_ +- $CC $CFLAGS -c conftest.c > /dev/null 2>/dev/null +- if test $? -eq 0; then +- CFLAGS_OPT='-O3' +- echo " GNU C ($CFLAGS_OPT)" +- # Special Mac OS X shared library "ld" option? +- if test ` uname -s 2> /dev/null ` = 'Darwin'; then +- lf='-Wl,-search_paths_first' +- $CC $CFLAGS $lf conftest.c > /dev/null 2>/dev/null +- if test $? -eq 0; then +- LFLAGS2="${LFLAGS2} ${lf}" +- fi +- rm -f conftest +- fi +- else +- CFLAGS_OPT='-O' +- echo " Other-unknown C ($CFLAGS_OPT)" +- fi +- fi +- fi +-fi +- +-# optimization flags +-if test -n "${CFLAGS_OPT}"; then +- CFLAGS="${CFLAGS} ${CFLAGS_OPT}" +- CFLAGS_BZ="${CFLAGS_BZ} ${CFLAGS_OPT}" +-fi +- +- + # bzip2 + + echo "Check bzip2 support" +-- +1.9.3 + diff --git a/package/zip/0002-configure-Don-t-use-host-CPP.patch b/package/zip/0002-configure-Don-t-use-host-CPP.patch new file mode 100644 index 00000000..179d5817 --- /dev/null +++ b/package/zip/0002-configure-Don-t-use-host-CPP.patch @@ -0,0 +1,37 @@ +From fc5c889131ff6270e1028cc7edd87e7f10a7da6d Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Thu, 22 Jan 2015 15:21:31 +0100 +Subject: [PATCH] configure: Don't use host CPP + +CPP is redefined if a cpp binary (/lib/cpp) is found on the host. + +Use the CPP="${CC} -E" allows to pass the following checks: +Check if we can use asm code (for -DASMV) +Check if compiler generates underlines (for -DASM_CRC) + +Signed-off-by: Romain Naour +--- + unix/configure | 7 ------- + 1 file changed, 7 deletions(-) + +diff --git a/unix/configure b/unix/configure +index 4185fee..489009f 100644 +--- a/unix/configure ++++ b/unix/configure +@@ -122,13 +122,6 @@ fi + echo Check for the C preprocessor + # on SVR4, cc -E does not produce correct assembler files. Need /lib/cpp. + CPP="${CC} -E" +-# solaris as(1) needs -P, maybe others as well ? +-[ -f /usr/ccs/lib/cpp ] && CPP="/usr/ccs/lib/cpp -P" +-[ -f /usr/lib/cpp ] && CPP=/usr/lib/cpp +-[ -f /lib/cpp ] && CPP=/lib/cpp +-[ -f /usr/bin/cpp ] && CPP=/usr/bin/cpp +-[ -f /xenix ] && CPP="${CC} -E" +-[ -f /lynx.os ] && CPP="${CC} -E" + + echo "#include " > conftest.c + $CPP conftest.c >/dev/null 2>/dev/null || CPP="${CC} -E" +-- +1.9.3 + diff --git a/package/zip/0003-Makefile-Use-CFLAGS-from-command-line.patch b/package/zip/0003-Makefile-Use-CFLAGS-from-command-line.patch new file mode 100644 index 00000000..7c2b920d --- /dev/null +++ b/package/zip/0003-Makefile-Use-CFLAGS-from-command-line.patch @@ -0,0 +1,30 @@ +From 93189390de7322da78bc5b807f4cadaff46393c9 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Thu, 22 Jan 2015 22:45:30 +0100 +Subject: [PATCH] Makefile: Use CFLAGS from command line + +Replace CFLAGS_NOOPT by CFLAGS when calling unix/configure script +to create 'flags' file which contains all variables used to build +zip binary. + +Signed-off-by: Romain Naour +--- + unix/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/unix/Makefile b/unix/Makefile +index abd0c44..db62368 100644 +--- a/unix/Makefile ++++ b/unix/Makefile +@@ -177,7 +177,7 @@ uninstall: + + + flags: unix/configure +- sh unix/configure "${CC}" "${CFLAGS_NOOPT}" "${IZ_BZIP2}" ++ sh unix/configure "${CC}" "${CFLAGS}" "${IZ_BZIP2}" + + # These symbols, when #defined using -D have these effects on compilation: + # ZMEM - includes C language versions of memset(), memcpy(), +-- +1.9.3 + diff --git a/package/zip/0004-configure-use-LDFLAGS-from-command-line.patch b/package/zip/0004-configure-use-LDFLAGS-from-command-line.patch new file mode 100644 index 00000000..efb9fc78 --- /dev/null +++ b/package/zip/0004-configure-use-LDFLAGS-from-command-line.patch @@ -0,0 +1,35 @@ +From 5c58b8737dc9ccf9407f6725f6f07b764d6abb22 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Thu, 22 Jan 2015 23:47:55 +0100 +Subject: [PATCH] configure: use LDFLAGS from command line + +The bzip2 support may not enabled due to a build error +during the checking for bzip2 library. +The library path (-L) to bzip2 library is missing. + +Signed-off-by: Romain Naour +--- + unix/configure | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/unix/configure b/unix/configure +index 489009f..de9fd68 100644 +--- a/unix/configure ++++ b/unix/configure +@@ -106,11 +106,11 @@ int main() + return 0; + } + _EOF_ +- $CC $CFLAGS -o conftest conftest.c -lbz2 > /dev/null 2>/dev/null ++ $CC $CFLAGS $LDFLAGS -o conftest conftest.c -lbz2 > /dev/null 2>/dev/null + if test $? -eq 0; then + echo "-- OS supports bzip2 - linking in bzip2" + CFLAGS="${CFLAGS} -DBZIP2_SUPPORT" +- LFLAGS2="${LFLAGS2} -lbz2" ++ LFLAGS2="${LFLAGS2} ${LDFLAGS} -lbz2" + else + echo "-- Either bzlib.h or libbz2.a not found - no bzip2" + fi +-- +1.9.3 + diff --git a/package/zip/0005-unix-configure-remove-GID-UID-size-check.patch b/package/zip/0005-unix-configure-remove-GID-UID-size-check.patch new file mode 100644 index 00000000..fd6cdde1 --- /dev/null +++ b/package/zip/0005-unix-configure-remove-GID-UID-size-check.patch @@ -0,0 +1,85 @@ +From d8da4e5f0ebed000f880e60b6cca7c575f7ed1c7 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 23 Jan 2015 22:13:14 +0100 +Subject: [PATCH] unix/configure: remove GID/UID size check + +This check can't work for cross-compilation since it +try to run a target's binary on the host system. + +Reported-by: Richard Genoud +Signed-off-by: Romain Naour +--- + unix/configure | 57 --------------------------------------------------------- + 1 file changed, 57 deletions(-) + +diff --git a/unix/configure b/unix/configure +index de9fd68..7bfc9eb 100644 +--- a/unix/configure ++++ b/unix/configure +@@ -237,63 +237,6 @@ _EOF_ + $CC $CFLAGS -c conftest.c >/dev/null 2>/dev/null + [ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_OFF_T" + +- +-echo Check size of UIDs and GIDs +-echo "(Now zip stores variable size UIDs/GIDs using a new extra field. This" +-echo " tests if this OS uses 16-bit UIDs/GIDs and so if the old 16-bit storage" +-echo " should also be used for backward compatibility.)" +-# Added 2008-04-15 CS +-cat > conftest.c << _EOF_ +-# define _LARGEFILE_SOURCE /* some OSes need this for fseeko */ +-# define _LARGEFILE64_SOURCE +-# define _FILE_OFFSET_BITS 64 /* select default interface as 64 bit */ +-# define _LARGE_FILES /* some OSes need this for 64-bit off_t */ +-#include +-#include +-#include +-#include +-int main() +-{ +- struct stat s; +- +- printf(" s.st_uid is %u bytes\n", sizeof(s.st_uid)); +- printf(" s.st_gid is %u bytes\n", sizeof(s.st_gid)); +- +- /* see if have 16-bit UID */ +- if (sizeof(s.st_uid) != 2) { +- return 1; +- } +- /* see if have 16-bit GID */ +- if (sizeof(s.st_gid) != 2) { +- return 2; +- } +- return 3; +-} +-_EOF_ +-# compile it +-$CC -o conftest conftest.c >/dev/null 2>/dev/null +-if [ $? -ne 0 ]; then +- echo -- UID/GID test failed on compile - disabling old 16-bit UID/GID support +- CFLAGS="${CFLAGS} -DUIDGID_NOT_16BIT" +-else +-# run it +- ./conftest +- r=$? +- if [ $r -eq 1 ]; then +- echo -- UID not 2 bytes - disabling old 16-bit UID/GID support +- CFLAGS="${CFLAGS} -DUIDGID_NOT_16BIT" +- elif [ $r -eq 2 ]; then +- echo -- GID not 2 bytes - disabling old 16-bit UID/GID support +- CFLAGS="${CFLAGS} -DUIDGID_NOT_16BIT" +- elif [ $r -eq 3 ]; then +- echo -- 16-bit UIDs and GIDs - keeping old 16-bit UID/GID support +- else +- echo -- test failed - conftest returned $r - disabling old 16-bit UID/GID support +- CFLAGS="${CFLAGS} -DUIDGID_NOT_16BIT" +- fi +-fi +- +- + # Now we set the 64-bit file environment and check the size of off_t + # Added 11/4/2003 EG + # Revised 8/12/2004 EG +-- +1.9.3 + diff --git a/package/zip/0006-unix-configure-borrow-the-LFS-test-from-autotools.patch b/package/zip/0006-unix-configure-borrow-the-LFS-test-from-autotools.patch new file mode 100644 index 00000000..0276ad2f --- /dev/null +++ b/package/zip/0006-unix-configure-borrow-the-LFS-test-from-autotools.patch @@ -0,0 +1,101 @@ +From fc392c939b9a18959482f588aff0afc29dd6d30a Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 23 Jan 2015 22:20:18 +0100 +Subject: [PATCH] unix/configure: borrow the LFS test from autotools. + +Infozip's LFS check can't work for cross-compilation +since it try to run a target's binary on the host system. + +Instead, use to LFS test used by autotools which is a +compilation test. +(see autotools/lib/autoconf/specific.m4) + +Reported-by: Richard Genoud +Signed-off-by: Romain Naour +--- + unix/configure | 51 ++++++++++++++++++--------------------------------- + 1 file changed, 18 insertions(+), 33 deletions(-) + +diff --git a/unix/configure b/unix/configure +index 7bfc9eb..588f269 100644 +--- a/unix/configure ++++ b/unix/configure +@@ -237,9 +237,8 @@ _EOF_ + $CC $CFLAGS -c conftest.c >/dev/null 2>/dev/null + [ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_OFF_T" + +-# Now we set the 64-bit file environment and check the size of off_t +-# Added 11/4/2003 EG +-# Revised 8/12/2004 EG ++# LFS check borrowed from autotools sources ++# lib/autoconf/specific.m4 + + echo Check for Large File Support + cat > conftest.c << _EOF_ +@@ -247,24 +246,22 @@ cat > conftest.c << _EOF_ + # define _LARGEFILE64_SOURCE + # define _FILE_OFFSET_BITS 64 /* select default interface as 64 bit */ + # define _LARGE_FILES /* some OSes need this for 64-bit off_t */ ++ + #include +-#include +-#include +-#include +-int main() ++ /* Check that off_t can represent 2**63 - 1 correctly. ++ We can't simply define LARGE_OFF_T to be 9223372036854775807, ++ since some C++ compilers masquerading as C compilers ++ incorrectly reject 9223372036854775807. */ ++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 ++ && LARGE_OFF_T % 2147483647 == 1) ++ ? 1 : -1]; ++int ++main () + { +- off_t offset; +- struct stat s; +- /* see if have 64-bit off_t */ +- if (sizeof(offset) < 8) +- return 1; +- printf(" off_t is %d bytes\n", sizeof(off_t)); +- /* see if have 64-bit stat */ +- if (sizeof(s.st_size) < 8) { +- printf(" s.st_size is %d bytes\n", sizeof(s.st_size)); +- return 2; +- } +- return 3; ++ ++ ; ++ return 0; + } + _EOF_ + # compile it +@@ -272,22 +269,10 @@ $CC -o conftest conftest.c >/dev/null 2>/dev/null + if [ $? -ne 0 ]; then + echo -- no Large File Support + else +-# run it +- ./conftest +- r=$? +- if [ $r -eq 1 ]; then +- echo -- no Large File Support - no 64-bit off_t +- elif [ $r -eq 2 ]; then +- echo -- no Large File Support - no 64-bit stat +- elif [ $r -eq 3 ]; then +- echo -- yes we have Large File Support! +- CFLAGS="${CFLAGS} -DLARGE_FILE_SUPPORT" +- else +- echo -- no Large File Support - conftest returned $r +- fi ++ echo -- yes we have Large File Support! ++ CFLAGS="${CFLAGS} -DLARGE_FILE_SUPPORT" + fi + +- + # Check for wide char for Unicode support + # Added 11/24/2005 EG + +-- +1.9.3 + diff --git a/package/zip/0007-timezone.c-needs-time.h-fixes-musl-compile.patch b/package/zip/0007-timezone.c-needs-time.h-fixes-musl-compile.patch new file mode 100644 index 00000000..bdaa638f --- /dev/null +++ b/package/zip/0007-timezone.c-needs-time.h-fixes-musl-compile.patch @@ -0,0 +1,38 @@ +From 68abba9fb2ed114ac35712756b1f7700a865c498 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Tue, 17 Dec 2019 21:25:01 +0100 +Subject: [PATCH] timezone.c: needs time.h (fixes musl compile) + +Fixes: + + In file included from util.c:28: + timezone.c: In function 'mktime': + timezone.c:644:18: error: dereferencing pointer to incomplete type 'struct tm' + save_isdst = tm->tm_isdst; + + timezone.c:661:11: warning: implicit declaration of function 'localtime'; did you mean 'dostime'? [-Wimplicit-function-declaration] + ltm = localtime(&then); + + timezone.c:661:9: warning: assignment to 'struct tm *' from 'int' makes pointer from integer without a cast [-Wint-conversion] + ltm = localtime(&then); + +Signed-off-by: Peter Seiderer +--- + timezone.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/timezone.c b/timezone.c +index 485ec02..18aecbd 100644 +--- a/timezone.c ++++ b/timezone.c +@@ -41,6 +41,7 @@ + #include "timezone.h" + #include + #include ++#include + + #ifdef IZTZ_DEFINESTDGLOBALS + long timezone = 0; +-- +2.24.0 + diff --git a/package/zip/0008-fix-musl-static-build.patch b/package/zip/0008-fix-musl-static-build.patch new file mode 100644 index 00000000..a7a31eba --- /dev/null +++ b/package/zip/0008-fix-musl-static-build.patch @@ -0,0 +1,20 @@ +fix musl static build + +Don't define NO_DIR if no directory library is needed + +Signed-off-by: Fabrice Fontaine + +diff -Nura zip30.orig/unix/configure zip30/unix/configure +--- zip30.orig/unix/configure 2021-08-31 21:29:55.219967136 +0200 ++++ zip30/unix/configure 2021-08-31 21:50:48.239280513 +0200 +@@ -569,8 +569,8 @@ + done + if [ ${OPT} ]; then + LFLAGS2="${LFLAGS2} ${OPT}" +- else +- CFLAGS="${CFLAGS} -DNO_DIR" ++ #else ++ # CFLAGS="${CFLAGS} -DNO_DIR" + fi + fi + diff --git a/package/zip/Config.in b/package/zip/Config.in new file mode 100644 index 00000000..4b6360a4 --- /dev/null +++ b/package/zip/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_ZIP + bool "zip" + help + Zip is a compression and file packaging/archive utility. + Although highly compatible both with PKWARE's PKZIP and + PKUNZIP utilities for MS-DOS and with Info-ZIP's own UnZip, + our primary objectives have been portability and + other-than-MSDOS functionality. + + http://infozip.sourceforge.net/Zip.html diff --git a/package/zip/Config.in.host b/package/zip/Config.in.host new file mode 100644 index 00000000..b14ce55d --- /dev/null +++ b/package/zip/Config.in.host @@ -0,0 +1,10 @@ +config BR2_PACKAGE_HOST_ZIP + bool "host zip" + help + Zip is a compression and file packaging/archive utility. + Although highly compatible both with PKWARE's PKZIP and + PKUNZIP utilities for MS-DOS and with Info-ZIP's own UnZip, + our primary objectives have been portability and + other-than-MSDOS functionality. + + http://infozip.sourceforge.net/Zip.html diff --git a/package/zip/zip.hash b/package/zip/zip.hash new file mode 100644 index 00000000..cbb96beb --- /dev/null +++ b/package/zip/zip.hash @@ -0,0 +1,3 @@ +# Locally calculated from download (no sig, hash) +sha256 f0e8bb1f9b7eb0b01285495a2699df3a4b766784c1765a8f1aeedf63c0806369 zip30.tar.gz +sha256 8ecd6c1bab449127eb665cef1561e73a8bce52e217375f6f466939e137b1e110 LICENSE diff --git a/package/zip/zip.mk b/package/zip/zip.mk new file mode 100644 index 00000000..0457ba94 --- /dev/null +++ b/package/zip/zip.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# zip +# +################################################################################ + +ZIP_VERSION = 3.0 +# The version is really 3.0, but the tarball is named zip30.tar.gz +ZIP_SOURCE = zip$(subst .,,$(ZIP_VERSION)).tar.gz +ZIP_SITE = https://sourceforge.net/projects/infozip/files/Zip%203.x%20%28latest%29/$(ZIP_VERSION) +ZIP_LICENSE = Info-ZIP +ZIP_LICENSE_FILES = LICENSE +ZIP_CPE_ID_VENDOR = info-zip_project + +ifeq ($(BR2_PACKAGE_BZIP2),y) +ZIP_DEPENDENCIES += bzip2 +endif + +# Infozip's default CFLAGS. +ZIP_CFLAGS = -I. -DUNIX + +# Disable the support of 16-bit UIDs/GIDs, the test in unix/configure was +# removed since it can't work for cross-compilation. +ZIP_CFLAGS += -DUIDGID_NOT_16BIT + +# infozip already defines _LARGEFILE_SOURCE and _LARGEFILE64_SOURCE when +# necessary, redefining it on the command line causes some warnings. +ZIP_TARGET_CFLAGS = \ + $(filter-out -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE,$(TARGET_CFLAGS)) + +define ZIP_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + CFLAGS="$(ZIP_TARGET_CFLAGS) $(ZIP_CFLAGS)" \ + CC="$(TARGET_CC) -std=gnu89" AS="$(TARGET_CC) -c" \ + -f unix/Makefile generic +endef + +define ZIP_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) -f unix/Makefile install \ + prefix=$(TARGET_DIR)/usr +endef + +define HOST_ZIP_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) \ + CFLAGS="$(HOST_CFLAGS) $(ZIP_CFLAGS)" \ + CC="$(HOSTCC) -std=gnu89" AS="$(HOSTCC) -c" \ + -f unix/Makefile generic +endef + +define HOST_ZIP_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) -f unix/Makefile install \ + prefix=$(HOST_DIR) +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/zisofs-tools/zisofs-tools.hash b/package/zisofs-tools/zisofs-tools.hash new file mode 100644 index 00000000..d2f594c7 --- /dev/null +++ b/package/zisofs-tools/zisofs-tools.hash @@ -0,0 +1,5 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/c/cdrkit/cdrkit_1.1.11-3.dsc +sha256 d1c030756ecc182defee9fe885638c1785d35a2c2a297b4604c0e0dcc78e47da cdrkit_1.1.11.orig.tar.gz + +# Locally computed +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 3rd-party/zisofs_tools/COPYING diff --git a/package/zisofs-tools/zisofs-tools.mk b/package/zisofs-tools/zisofs-tools.mk new file mode 100644 index 00000000..fd8c371f --- /dev/null +++ b/package/zisofs-tools/zisofs-tools.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# zisofs-tools +# +################################################################################ + +ZISOFS_TOOLS_VERSION = 1.1.11 +ZISOFS_TOOLS_SOURCE = cdrkit_$(ZISOFS_TOOLS_VERSION).orig.tar.gz +ZISOFS_TOOLS_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/c/cdrkit +ZISOFS_TOOLS_LICENSE = GPL-2.0+ +ZISOFS_TOOLS_LICENSE_FILES = 3rd-party/zisofs_tools/COPYING +ZISOFS_TOOLS_SUBDIR = 3rd-party/zisofs_tools +HOST_ZISOFS_TOOLS_DEPENDENCIES = host-zlib + +$(eval $(host-autotools-package)) diff --git a/package/zlib-ng/0001-arch-riscv-riscv-features-c-fix-uclibc-build.patch b/package/zlib-ng/0001-arch-riscv-riscv-features-c-fix-uclibc-build.patch new file mode 100644 index 00000000..39cc93f9 --- /dev/null +++ b/package/zlib-ng/0001-arch-riscv-riscv-features-c-fix-uclibc-build.patch @@ -0,0 +1,51 @@ +From 3f35bfccff2d1dacdfe9844712be1e042d028700 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 17 Mar 2024 21:56:53 +0100 +Subject: [PATCH] arch/riscv/riscv_features.c: fix uclibc build + +Fix the following uclibc build failure raised since version 2.1.4 and +https://github.com/zlib-ng/zlib-ng/commit/6ff8b52cefe56a824fae1d53fdd687bcde2e53c9: + +/home/autobuild/autobuild/instance-2/output-1/build/zlib-ng-2.1.6/arch/riscv/riscv_features.c:4:10: fatal error: sys/auxv.h: No such file or directory + 4 | #include + | ^~~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/06a7d8e59ec4de7c711d3f4a4624f67b97d78afe + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/zlib-ng/zlib-ng/commit/3f35bfccff2d1dacdfe9844712be1e042d028700 +--- + arch/riscv/riscv_features.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/arch/riscv/riscv_features.c b/arch/riscv/riscv_features.c +index 506b480c11..1e3f45e0a7 100644 +--- a/arch/riscv/riscv_features.c ++++ b/arch/riscv/riscv_features.c +@@ -1,9 +1,12 @@ + #include + #include + #include +-#include + #include + ++#if defined(__linux__) && defined(HAVE_SYS_AUXV_H) ++# include ++#endif ++ + #include "../../zbuild.h" + #include "riscv_features.h" + +@@ -33,7 +36,11 @@ void Z_INTERNAL riscv_check_features_compile_time(struct riscv_cpu_features *fea + } + + void Z_INTERNAL riscv_check_features_runtime(struct riscv_cpu_features *features) { ++#if defined(__linux__) && defined(HAVE_SYS_AUXV_H) + unsigned long hw_cap = getauxval(AT_HWCAP); ++#else ++ unsigned long hw_cap = 0; ++#endif + features->has_rvv = hw_cap & ISA_V_HWCAP; + } + diff --git a/package/zlib-ng/zlib-ng.hash b/package/zlib-ng/zlib-ng.hash new file mode 100644 index 00000000..908164aa --- /dev/null +++ b/package/zlib-ng/zlib-ng.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a5d504c0d52e2e2721e7e7d86988dec2e290d723ced2307145dedd06aeb6fef2 zlib-ng-2.1.6.tar.gz +sha256 d3c80be055d94d798eaa786116e84fa0b010bc11420b5d2060d978ea77845436 LICENSE.md diff --git a/package/zlib-ng/zlib-ng.mk b/package/zlib-ng/zlib-ng.mk new file mode 100644 index 00000000..c9d022da --- /dev/null +++ b/package/zlib-ng/zlib-ng.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# zlib-ng +# +################################################################################ + +ZLIB_NG_VERSION = 2.1.6 +ZLIB_NG_SITE = $(call github,zlib-ng,zlib-ng,$(ZLIB_NG_VERSION)) +ZLIB_NG_LICENSE = Zlib +ZLIB_NG_LICENSE_FILES = LICENSE.md +ZLIB_NG_INSTALL_STAGING = YES +ZLIB_NG_PROVIDES = zlib + +# Build with zlib compatible API, gzFile support and optimizations on +ZLIB_NG_CONF_OPTS += \ + -DCMAKE_C_COMPILER_TARGET=$(BR2_ARCH) \ + -DWITH_GZFILEOP=1 \ + -DWITH_OPTIM=1 \ + -DZLIB_COMPAT=1 \ + -DZLIB_ENABLE_TESTS=OFF + +# Enable ACLE on ARM +ifeq ($(BR2_arm),y) +ZLIB_NG_CONF_OPTS += -DWITH_ACLE=1 +endif + +ifeq ($(BR2_ARM_CPU_HAS_NEON)$(BR2_aarch64),y) +ZLIB_NG_CONF_OPTS += -DWITH_NEON=ON +else +ZLIB_NG_CONF_OPTS += -DWITH_NEON=OFF +endif + +ifeq ($(BR2_powerpc_power8),y) +ZLIB_NG_CONF_OPTS += -DWITH_POWER8=ON +else +ZLIB_NG_CONF_OPTS += -DWITH_POWER8=OFF +endif + +ifeq ($(BR2_powerpc_power9),y) +ZLIB_NG_CONF_OPTS += -DWITH_POWER9=ON +else +ZLIB_NG_CONF_OPTS += -DWITH_POWER9=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/zlib/Config.in b/package/zlib/Config.in new file mode 100644 index 00000000..3a486376 --- /dev/null +++ b/package/zlib/Config.in @@ -0,0 +1,62 @@ +config BR2_PACKAGE_ZLIB_FORCE_LIBZLIB + bool + +config BR2_PACKAGE_ZLIB_NG_ARCH_SUPPORTS + bool + default y if BR2_arm + default y if BR2_aarch64 + default y if BR2_i386 + default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + default y if BR2_riscv + default y if BR2_s390x + default y if BR2_x86_64 + +config BR2_PACKAGE_ZLIB + bool "zlib support" + help + Select the desired Zlib library provider. + +if BR2_PACKAGE_ZLIB + +choice + prompt "zlib variant" + default BR2_PACKAGE_LIBZLIB + help + Select the desired Zlib library provider. + +config BR2_PACKAGE_LIBZLIB + bool "zlib" + select BR2_PACKAGE_HAS_ZLIB + help + Standard (de)compression library. Used by things like + gzip and libpng. + + http://www.zlib.net + +config BR2_PACKAGE_ZLIB_NG + bool "zlib-ng" + depends on BR2_PACKAGE_ZLIB_NG_ARCH_SUPPORTS + depends on !BR2_PACKAGE_ZLIB_FORCE_LIBZLIB + select BR2_PACKAGE_HAS_ZLIB + help + Zlib replacement with optimizations for + "next generation" systems. + + https://github.com/zlib-ng/zlib-ng + +endchoice + +config BR2_PACKAGE_HAS_ZLIB + bool + +config BR2_PACKAGE_PROVIDES_ZLIB + string + default "libzlib" if BR2_PACKAGE_LIBZLIB + default "zlib-ng" if BR2_PACKAGE_ZLIB_NG + +endif + +# ensure libzlib is used for the host variant +config BR2_PACKAGE_PROVIDES_HOST_ZLIB + string + default "host-libzlib" diff --git a/package/zlib/zlib.mk b/package/zlib/zlib.mk new file mode 100644 index 00000000..78f48ff0 --- /dev/null +++ b/package/zlib/zlib.mk @@ -0,0 +1,8 @@ +################################################################################ +# +# zlib +# +################################################################################ + +$(eval $(virtual-package)) +$(eval $(host-virtual-package)) diff --git a/package/zlog/Config.in b/package/zlog/Config.in new file mode 100644 index 00000000..cf86a261 --- /dev/null +++ b/package/zlog/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_ZLOG + bool "zlog" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + zlog is a reliable, high-performance, thread safe, flexible, + clear-model, pure C logging library. + + https://github.com/HardySimpson/zlog + +comment "zlog needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/package/zlog/zlog.hash b/package/zlog/zlog.hash new file mode 100644 index 00000000..19881183 --- /dev/null +++ b/package/zlog/zlog.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 7fe412130abbb75a0779df89ae407db5d8f594435cc4ff6b068d924e13fd5c68 zlog-1.2.17.tar.gz +sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE diff --git a/package/zlog/zlog.mk b/package/zlog/zlog.mk new file mode 100644 index 00000000..e5bbf6ff --- /dev/null +++ b/package/zlog/zlog.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# zlog +# +################################################################################ + +ZLOG_VERSION = 1.2.17 +ZLOG_SITE = $(call github,HardySimpson,zlog,$(ZLOG_VERSION)) +ZLOG_LICENSE = Apache-2.0 +ZLOG_LICENSE_FILES = LICENSE +ZLOG_CPE_ID_VALID = YES +ZLOG_INSTALL_STAGING = YES + +define ZLOG_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) \ + CC="$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS)" \ + WARNINGS="" -C $(@D) all +endef + +define ZLOG_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) PREFIX=$(STAGING_DIR)/usr -C $(@D) install +endef + +define ZLOG_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) PREFIX=$(TARGET_DIR)/usr -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/package/zmqpp/0001-Allow-building-shared-or-static-library-only.patch b/package/zmqpp/0001-Allow-building-shared-or-static-library-only.patch new file mode 100644 index 00000000..04fad80f --- /dev/null +++ b/package/zmqpp/0001-Allow-building-shared-or-static-library-only.patch @@ -0,0 +1,92 @@ +From 93005632eca13d8eda409f6e9496fd5dd69e75b0 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 4 May 2018 18:38:31 +0200 +Subject: [PATCH] Allow building shared or static library only +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Patchs retrieved from: + - https://git.buildroot.net/buildroot/tree/package/zmqpp/0001-Allow-building-shared-or-static-library-only.patch + - https://git.buildroot.net/buildroot/tree/package/zmqpp/0002-Install-static-library-for-static-builds.patch + +Both patches have been merged in a single one and slightly updated to +keep default behavior of building and installing static library +(BUILD_STATIC is set to yes by default) + +[Upstream status: merged (https://github.com/zeromq/zmqpp/pull/218)] +Signed-off-by: Jörg Krause +Signed-off-by: Gustavo Zacarias +Signed-off-by: Fabrice Fontaine +--- + Makefile | 24 ++++++++++++++++++++---- + 1 file changed, 20 insertions(+), 4 deletions(-) + +diff --git a/Makefile b/Makefile +index 689acaa..e43054c 100644 +--- a/Makefile ++++ b/Makefile +@@ -81,6 +81,9 @@ ifeq ($(UNAME_S),Darwin) + endif + + ++BUILD_SHARED ?= yes ++BUILD_STATIC ?= yes ++ + CONFIG_FLAGS = + ifeq ($(CONFIG),debug) + CONFIG_FLAGS = -g -fno-inline -ftemplate-depth-1000 +@@ -95,13 +98,22 @@ ifneq (,$(findstring $(CONFIG),release loadtest)) + CONFIG_FLAGS = -O3 -funroll-loops -ffast-math -finline-functions -fomit-frame-pointer -DNO_DEBUG_LOG -DNO_TRACE_LOG -DNDEBUG + endif + +-COMMON_FLAGS = -MMD -std=c++11 -pipe -Wall -fPIC \ ++COMMON_FLAGS = -MMD -std=c++11 -pipe -Wall \ + -DBUILD_ENV=$(CONFIG) \ + -DBUILD_DATESTAMP='$(APP_DATESTAMP)' \ + -DBUILD_LIBRARY_NAME='"$(LIBRARY_NAME)"' \ + -DBUILD_CLIENT_NAME='"$(CLIENT_TARGET)"' \ + -I$(SRC_PATH) $(CUSTOM_INCLUDE_PATH) + ++ifeq ($(BUILD_SHARED),yes) ++COMMON_FLAGS += -fPIC ++LIBRARY_TARGETS += $(LIBRARY_SHARED) ++endif ++ ++ifeq ($(BUILD_STATIC),yes) ++LIBRARY_TARGETS += $(LIBRARY_ARCHIVE) ++endif ++ + COMMON_LIBS = -lzmq + + LIBRARY_LIBS = +@@ -150,11 +162,15 @@ install: + mkdir -p $(LIBDIR) + mkdir -p $(PKGCONFIGDIR) + install -m 644 $(ALL_LIBRARY_INCLUDES) $(INCLUDEDIR)/$(LIBRARY_DIR) +- install -m 755 $(BUILD_PATH)/$(LIBRARY_VERSION_SHARED) $(LIBDIR)/$(LIBRARY_FULL_VERSION_SHARED) +- install -m 755 $(BUILD_PATH)/$(LIBRARY_ARCHIVE) $(LIBDIR)/$(LIBRARY_ARCHIVE) + install -m 755 $(BUILD_PATH)/$(PKGCONFIG_FILE) $(PKGCONFIGDIR)/$(PKGCONFIG_FILE) ++ifeq ($(BUILD_SHARED),yes) ++ install -m 755 $(BUILD_PATH)/$(LIBRARY_VERSION_SHARED) $(LIBDIR)/$(LIBRARY_FULL_VERSION_SHARED) + ln -sf $(LIBRARY_FULL_VERSION_SHARED) $(LIBDIR)/$(LIBRARY_VERSION_SHARED) + ln -sf $(LIBRARY_FULL_VERSION_SHARED) $(LIBDIR)/$(LIBRARY_SHARED) ++endif ++ifeq ($(BUILD_STATIC),yes) ++ install -m 755 $(BUILD_PATH)/$(LIBRARY_ARCHIVE) $(LIBDIR)/$(LIBRARY_ARCHIVE) ++endif + if [ -f $(BUILD_PATH)/$(CLIENT_TARGET) ]; then install -m 755 $(BUILD_PATH)/$(CLIENT_TARGET) $(BINDIR); fi + $(LDCONFIG) + @echo "use make installcheck to test the install" +@@ -176,7 +192,7 @@ clean: + + client: $(CLIENT_TARGET) + +-library: $(LIBRARY_SHARED) $(LIBRARY_ARCHIVE) ++library: $(LIBRARY_TARGETS) + + # + # BUILD Targets +-- +2.14.1 + diff --git a/package/zmqpp/Config.in b/package/zmqpp/Config.in new file mode 100644 index 00000000..2c80e288 --- /dev/null +++ b/package/zmqpp/Config.in @@ -0,0 +1,41 @@ +config BR2_PACKAGE_ZMQPP + bool "zmqpp" + # c++1x support + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr + select BR2_PACKAGE_ZEROMQ + help + C++ binding for zeromq (ZeroMQ, 0MQ, zmq). + + This C++ binding is a 'high-level' library that hides most + of the C-style interface core zeromq provides. + + http://github.com/benjamg/zmqpp + +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 + +comment "zmqpp needs exception_ptr" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + +if BR2_PACKAGE_ZMQPP + +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, wchar" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_USE_WCHAR + +endif diff --git a/package/zmqpp/zmqpp.hash b/package/zmqpp/zmqpp.hash new file mode 100644 index 00000000..af5acd53 --- /dev/null +++ b/package/zmqpp/zmqpp.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c1d4587df3562f73849d9e5f8c932ca7dcfc7d8bec31f62d7f35073ef81f4d29 zmqpp-4.2.0.tar.gz +sha256 fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85 LICENSE diff --git a/package/zmqpp/zmqpp.mk b/package/zmqpp/zmqpp.mk new file mode 100644 index 00000000..32fabf26 --- /dev/null +++ b/package/zmqpp/zmqpp.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# zmqpp +# +################################################################################ + +ZMQPP_VERSION = 4.2.0 +ZMQPP_SITE = $(call github,zeromq,zmqpp,$(ZMQPP_VERSION)) +ZMQPP_INSTALL_STAGING = YES +ZMQPP_DEPENDENCIES = zeromq +ZMQPP_LICENSE = MPL-2.0 +ZMQPP_LICENSE_FILES = LICENSE +ZMQPP_MAKE_OPTS = LD="$(TARGET_CXX)" BUILD_PATH=./build PREFIX=/usr +ZMQPP_LDFLAGS = $(TARGET_LDFLAGS) -lpthread + +# gcc bug internal compiler error: in merge_overlapping_regs, at +# regrename.c:304. This bug is fixed since gcc 6. +# By setting CONFIG to empty, all optimizations such as -funroll-loops +# -ffast-math -finline-functions -fomit-frame-pointer are disabled, +# so only set CONFIG for the non-affected cases. +ifneq ($(BR2_or1k):$(BR2_TOOLCHAIN_GCC_AT_LEAST_6),y:) +ZMQPP_CONFIG = $(if $(BR2_ENABLE_RUNTIME_DEBUG),buildroot,release) +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +ZMQPP_LDFLAGS += -latomic +endif + +ifeq ($(BR2_PACKAGE_ZMQPP_CLIENT),y) +ZMQPP_DEPENDENCIES += boost +endif + +ifeq ($(BR2_STATIC_LIBS),y) +ZMQPP_MAKE_OPTS += BUILD_STATIC=yes BUILD_SHARED=no +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +ZMQPP_MAKE_OPTS += BUILD_STATIC=yes BUILD_SHARED=yes +else ifeq ($(BR2_SHARED_LIBS),y) +ZMQPP_MAKE_OPTS += BUILD_STATIC=no BUILD_SHARED=yes +endif + +define ZMQPP_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + CONFIG=$(ZMQPP_CONFIG) LDFLAGS="$(ZMQPP_LDFLAGS)" \ + $(ZMQPP_MAKE_OPTS) $(if $(BR2_PACKAGE_ZMQPP_CLIENT),client,library) -C $(@D) +endef + +define ZMQPP_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -d $(TARGET_DIR)/usr/include/zmqpp + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + $(ZMQPP_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install -C $(@D) +endef + +define ZMQPP_INSTALL_STAGING_CMDS + $(INSTALL) -m 0755 -d $(STAGING_DIR)/usr/include/zmqpp + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + $(ZMQPP_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install -C $(@D) +endef + +$(eval $(generic-package)) diff --git a/package/znc/Config.in b/package/znc/Config.in new file mode 100644 index 00000000..3b8f0f71 --- /dev/null +++ b/package/znc/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_ZNC + bool "znc" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH if BR2_PACKAGE_LIBOPENSSL + help + Advanced IRC bouncer + + http://www.znc.in + +comment "znc needs a toolchain w/ C++, dynamic library, gcc >= 8, threads" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_8 || !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/package/znc/znc.hash b/package/znc/znc.hash new file mode 100644 index 00000000..7bac128a --- /dev/null +++ b/package/znc/znc.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 e8a7cf80e19aad510b4e282eaf61b56bc30df88ea2e0f64fadcdd303c4894f3c znc-1.9.1.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/znc/znc.mk b/package/znc/znc.mk new file mode 100644 index 00000000..ec6287e6 --- /dev/null +++ b/package/znc/znc.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# znc +# +################################################################################ + +ZNC_VERSION = 1.9.1 +ZNC_SITE = http://znc.in/releases/archive +ZNC_LICENSE = Apache-2.0 +ZNC_LICENSE_FILES = LICENSE +ZNC_CPE_ID_VENDOR = znc +ZNC_DEPENDENCIES = host-pkgconf +ZNC_CONF_OPTS = -DWANT_CYRUS=OFF -DWANT_I18N=OFF -DWANT_PERL=OFF + +ifeq ($(BR2_PACKAGE_ICU),y) +ZNC_DEPENDENCIES += icu +ZNC_CONF_OPTS += -DWANT_ICU=ON +else +ZNC_CONF_OPTS += -DWANT_ICU=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +ZNC_DEPENDENCIES += openssl +ZNC_CONF_OPTS += -DWANT_OPENSSL=ON +else +ZNC_CONF_OPTS += -DWANT_OPENSSL=OFF +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +ZNC_DEPENDENCIES += zlib +ZNC_CONF_OPTS += -DWANT_ZLIB=ON +else +ZNC_CONF_OPTS += -DWANT_ZLIB=OFF +endif + +# python support depends on icu +ifeq ($(BR2_PACKAGE_ICU)$(BR2_PACKAGE_PYTHON3),yy) +ZNC_DEPENDENCIES += python3 host-swig +ZNC_CONF_OPTS += \ + -DWANT_PYTHON=ON \ + -DWANT_PYTHON_VERSION=python3 \ + -DWANT_SWIG=ON +else +ZNC_CONF_OPTS += \ + -DWANT_PYTHON=OFF \ + -DWANT_SWIG=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/zoxide/Config.in b/package/zoxide/Config.in new file mode 100644 index 00000000..b2567dad --- /dev/null +++ b/package/zoxide/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_ZOXIDE + bool "zoxide" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_RUSTC + help + zoxide is a smarter cd command, inspired by z and autojump. + It remembers which directories you use most frequently, so + you can "jump" to them in just a few keystrokes. + zoxide works on all major shells. + + https://github.com/ajeetdsouza/zoxide.git diff --git a/package/zoxide/zoxide.hash b/package/zoxide/zoxide.hash new file mode 100644 index 00000000..1a3a066a --- /dev/null +++ b/package/zoxide/zoxide.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 f2d9b9448516919f6d5cf32a5f154c2dc3a90d9fdf0addab9cd6a7824020befc zoxide-0.9.4-cargo2.tar.gz +sha256 23aa3b08366e4ed6050f3d9950070201802aadbe5675fa1c19f24f4de91cf294 LICENSE diff --git a/package/zoxide/zoxide.mk b/package/zoxide/zoxide.mk new file mode 100644 index 00000000..92b4395a --- /dev/null +++ b/package/zoxide/zoxide.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# zoxide +# +################################################################################ + +ZOXIDE_VERSION = 0.9.4 +ZOXIDE_SITE = $(call github,ajeetdsouza,zoxide,v$(ZOXIDE_VERSION)) +ZOXIDE_LICENSE = MIT +ZOXIDE_LICENSE_FILES = LICENSE + +$(eval $(cargo-package)) diff --git a/package/zsh/0001-52383-Avoid-incompatible-pointer-types-in-terminfo-global-variable.patch b/package/zsh/0001-52383-Avoid-incompatible-pointer-types-in-terminfo-global-variable.patch new file mode 100644 index 00000000..c67c3749 --- /dev/null +++ b/package/zsh/0001-52383-Avoid-incompatible-pointer-types-in-terminfo-global-variable.patch @@ -0,0 +1,51 @@ +From 4c89849c98172c951a9def3690e8647dae76308f Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Fri, 8 Dec 2023 21:58:07 +0100 +Subject: [PATCH] 52383: Avoid incompatible pointer types in terminfo global + variable checks + +Upstream: https://sourceforge.net/p/zsh/code/ci/4c89849c98172c951a9def3690e8647dae76308f +Signed-off-by: Fabrice Fontaine +--- + ChangeLog | 3 +++ + configure.ac | 12 ++++++------ + 2 files changed, 9 insertions(+), 6 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 2a8221e1f..2871dcb7c 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1768,27 +1768,27 @@ if test x$zsh_cv_path_term_header != xnone; then + fi + + AC_MSG_CHECKING(if boolcodes is available) +- AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = boolcodes; puts(*test);]])],[AC_DEFINE(HAVE_BOOLCODES) boolcodes=yes],[boolcodes=no]) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)boolcodes; puts(*test);]])],[AC_DEFINE(HAVE_BOOLCODES) boolcodes=yes],[boolcodes=no]) + AC_MSG_RESULT($boolcodes) + + AC_MSG_CHECKING(if numcodes is available) +- AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = numcodes; puts(*test);]])],[AC_DEFINE(HAVE_NUMCODES) numcodes=yes],[numcodes=no]) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)numcodes; puts(*test);]])],[AC_DEFINE(HAVE_NUMCODES) numcodes=yes],[numcodes=no]) + AC_MSG_RESULT($numcodes) + + AC_MSG_CHECKING(if strcodes is available) +- AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = strcodes; puts(*test);]])],[AC_DEFINE(HAVE_STRCODES) strcodes=yes],[strcodes=no]) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)strcodes; puts(*test);]])],[AC_DEFINE(HAVE_STRCODES) strcodes=yes],[strcodes=no]) + AC_MSG_RESULT($strcodes) + + AC_MSG_CHECKING(if boolnames is available) +- AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = boolnames; puts(*test);]])],[AC_DEFINE(HAVE_BOOLNAMES) boolnames=yes],[boolnames=no]) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)boolnames; puts(*test);]])],[AC_DEFINE(HAVE_BOOLNAMES) boolnames=yes],[boolnames=no]) + AC_MSG_RESULT($boolnames) + + AC_MSG_CHECKING(if numnames is available) +- AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = numnames; puts(*test);]])],[AC_DEFINE(HAVE_NUMNAMES) numnames=yes],[numnames=no]) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)numnames; puts(*test);]])],[AC_DEFINE(HAVE_NUMNAMES) numnames=yes],[numnames=no]) + AC_MSG_RESULT($numnames) + + AC_MSG_CHECKING(if strnames is available) +- AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = strnames; puts(*test);]])],[AC_DEFINE(HAVE_STRNAMES) strnames=yes],[strnames=no]) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)strnames; puts(*test);]])],[AC_DEFINE(HAVE_STRNAMES) strnames=yes],[strnames=no]) + AC_MSG_RESULT($strnames) + + dnl There are apparently defective terminal library headers on some diff --git a/package/zsh/Config.in b/package/zsh/Config.in new file mode 100644 index 00000000..23194779 --- /dev/null +++ b/package/zsh/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_ZSH + bool "zsh" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_NCURSES + help + zsh is a shell designed for interactive use, although it is + also a powerful scripting language. Many of the useful + features of bash, ksh, and tcsh were incorporated into zsh; + many original features were added. + + http://www.zsh.org/ diff --git a/package/zsh/zsh.hash b/package/zsh/zsh.hash new file mode 100644 index 00000000..e04aa388 --- /dev/null +++ b/package/zsh/zsh.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 9b8d1ecedd5b5e81fbf1918e876752a7dd948e05c1a0dba10ab863842d45acd5 zsh-5.9.tar.xz +sha256 d06fdf3ef9b1ec69d6b9e170b0a9516fbad3523261ff1668bde3bfea6e0ef5f5 LICENCE diff --git a/package/zsh/zsh.mk b/package/zsh/zsh.mk new file mode 100644 index 00000000..7e577fa9 --- /dev/null +++ b/package/zsh/zsh.mk @@ -0,0 +1,82 @@ +################################################################################ +# +# zsh +# +################################################################################ + +ZSH_VERSION = 5.9 +ZSH_SITE = http://www.zsh.org/pub +ZSH_SOURCE = zsh-$(ZSH_VERSION).tar.xz +ZSH_DEPENDENCIES = ncurses +ZSH_CONF_OPTS = --bindir=/bin +ZSH_CONF_ENV = zsh_cv_sys_nis=no zsh_cv_sys_nis_plus=no +ZSH_LICENSE = MIT-like +ZSH_LICENSE_FILES = LICENCE +ZSH_CPE_ID_VENDOR = zsh +# 0001-52383-Avoid-incompatible-pointer-types-in-terminfo-global-variable.patch +ZSH_AUTORECONF = YES + +# zsh uses TRY_RUN to determine these +ZSH_CONF_OPTS += \ + zsh_cv_long_is_64_bit=$(if $(BR2_ARCH_IS_64),yes,no) \ + zsh_cv_off_t_is_64_bit=yes \ + zsh_cv_64_bit_type='long long' \ + zsh_cv_64_bit_utype='unsigned long long' \ + zsh_cv_printf_has_lld=yes + +ifeq ($(BR2_PACKAGE_GDBM),y) +ZSH_CONF_OPTS += --enable-gdbm +ZSH_DEPENDENCIES += gdbm +else +ZSH_CONF_OPTS += --disable-gdbm +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +ZSH_CONF_OPTS += --enable-cap +ZSH_DEPENDENCIES += libcap +else +ZSH_CONF_OPTS += --disable-cap +endif + +ifeq ($(BR2_PACKAGE_PCRE),y) +ZSH_CONF_OPTS += --enable-pcre +ZSH_CONF_ENV += ac_cv_prog_PCRECONF=$(STAGING_DIR)/usr/bin/pcre-config +ZSH_DEPENDENCIES += pcre +else +ZSH_CONF_OPTS += --disable-pcre +endif + +ifeq ($(BR2_STATIC_LIBS),) +# zsh uses TRY_RUN to determine these +ZSH_CONF_OPTS += \ + zsh_cv_shared_environ=yes \ + zsh_cv_shared_tgetent=yes \ + zsh_cv_shared_tigetstr=yes \ + zsh_cv_sys_dynamic_clash_ok=yes \ + zsh_cv_sys_dynamic_rtld_global=yes \ + zsh_cv_sys_dynamic_execsyms=yes \ + zsh_cv_sys_dynamic_strip_exe=yes \ + zsh_cv_sys_dynamic_strip_lib=yes +endif + +# regex is commonly used by completion scripts, link it statically +define ZSH_USE_STATIC_REGEX_MODULE + $(SED) 's,echo dynamic,echo static,' $(@D)/Src/Modules/regex.mdd +endef +ZSH_POST_PATCH_HOOKS += ZSH_USE_STATIC_REGEX_MODULE + +# Add /bin/zsh to /etc/shells otherwise some login tools like dropbear +# can reject the user connection. See man shells. +define ZSH_ADD_ZSH_TO_SHELLS + grep -qsE '^/bin/zsh$$' $(TARGET_DIR)/etc/shells \ + || echo "/bin/zsh" >> $(TARGET_DIR)/etc/shells +endef +ZSH_TARGET_FINALIZE_HOOKS += ZSH_ADD_ZSH_TO_SHELLS + +# Remove versioned zsh-x.y.z binary taking up space +define ZSH_TARGET_INSTALL_FIXUPS + rm -f $(TARGET_DIR)/bin/zsh-$(ZSH_VERSION) +endef +ZSH_POST_INSTALL_TARGET_HOOKS += ZSH_TARGET_INSTALL_FIXUPS + +$(eval $(autotools-package)) diff --git a/package/zstd/0001-lib-libzstd.mk-fix-typo-in-the-definition-of-LIB_BIN.patch b/package/zstd/0001-lib-libzstd.mk-fix-typo-in-the-definition-of-LIB_BIN.patch new file mode 100644 index 00000000..5fc93012 --- /dev/null +++ b/package/zstd/0001-lib-libzstd.mk-fix-typo-in-the-definition-of-LIB_BIN.patch @@ -0,0 +1,47 @@ +From 4de25344f7c01f00d99bc467e76bc6f9b6971dd7 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 13 Jul 2024 13:53:53 +0200 +Subject: [PATCH] lib/libzstd.mk: fix typo in the definition of LIB_BINDIR + +Commit f4dbfce79cb2b82fb496fcd2518ecd3315051b7d ("define LIB_SRCDIR +and LIB_BINDIR") significantly reworked the build logic, but in its +introduction of LIB_BINDIR a typo was made. + +It was introduced as such: + ++LIB_SRCDIR ?= $(dir $(realpath $(lastword $(MAKEFILE_LIST)))) ++LIB_BINDIR ?= $(LIBSRC_DIR) + +But the definition of LIB_BINDIR has a typo: it should use +$(LIB_SRCDIR) not $(LIBSRC_DIR). + +Due to this, $(LIB_BINDIR) is empty, therefore in programs/Makefile, +-L$(LIB_BINDIR) is expanded to just -L, and consequently when trying +to link the "zstd" binary with the libzstd library, it cannot find it: + +host/lib/gcc/powerpc64-buildroot-linux-gnu/13.3.0/../../../../powerpc64-buildroot-linux-gnu/bin/ld: cannot find -lzstd: No such file or directory + +This commit fixes the build by fixing this typo. + +Upstream: https://github.com/facebook/zstd/pull/4096 +Signed-off-by: Thomas Petazzoni +--- + lib/libzstd.mk | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/libzstd.mk b/lib/libzstd.mk +index a308a6ef..c7ae2ff4 100644 +--- a/lib/libzstd.mk ++++ b/lib/libzstd.mk +@@ -22,7 +22,7 @@ LIBZSTD_MK_INCLUDED := 1 + + # By default, library's directory is same as this included makefile + LIB_SRCDIR ?= $(dir $(realpath $(lastword $(MAKEFILE_LIST)))) +-LIB_BINDIR ?= $(LIBSRC_DIR) ++LIB_BINDIR ?= $(LIB_SRCDIR) + + # ZSTD_LIB_MINIFY is a helper variable that + # configures a bunch of other variables to space-optimized defaults. +-- +2.45.2 + diff --git a/package/zstd/Config.in b/package/zstd/Config.in new file mode 100644 index 00000000..9fa70c65 --- /dev/null +++ b/package/zstd/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_ZSTD + bool "zstd" + help + Zstandard, or zstd as short version, is a fast lossless + compression algorithm, targeting real-time compression + scenarios at zlib-level and better compression ratios + + The selection of other packages will enable some features: + xz, lz4 and/or zlib will enable support for corresponding + compression formats + + https://facebook.github.io/zstd diff --git a/package/zstd/Config.in.host b/package/zstd/Config.in.host new file mode 100644 index 00000000..05751f8f --- /dev/null +++ b/package/zstd/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_ZSTD + bool "host zstd" + help + Zstandard, or zstd as short version, is a fast lossless + compression algorithm, targeting real-time compression + scenarios at zlib-level and better compression ratios + + https://facebook.github.io/zstd diff --git a/package/zstd/zstd.hash b/package/zstd/zstd.hash new file mode 100644 index 00000000..8be85c35 --- /dev/null +++ b/package/zstd/zstd.hash @@ -0,0 +1,6 @@ +# From https://github.com/facebook/zstd/releases/download/v1.5.6/zstd-1.5.6.tar.gz.sha256 +sha256 8c29e06cf42aacc1eafc4077ae2ec6c6fcb96a626157e0593d5e82a34fd403c1 zstd-1.5.6.tar.gz + +# License files (locally computed) +sha256 7055266497633c9025b777c78eb7235af13922117480ed5c674677adc381c9d8 LICENSE +sha256 f9c375a1be4a41f7b70301dd83c91cb89e41567478859b77eef375a52d782505 COPYING diff --git a/package/zstd/zstd.mk b/package/zstd/zstd.mk new file mode 100644 index 00000000..575bb2c8 --- /dev/null +++ b/package/zstd/zstd.mk @@ -0,0 +1,118 @@ +################################################################################ +# +# zstd +# +################################################################################ + +ZSTD_VERSION = 1.5.6 +ZSTD_SITE = https://github.com/facebook/zstd/releases/download/v$(ZSTD_VERSION) +ZSTD_INSTALL_STAGING = YES +ZSTD_LICENSE = BSD-3-Clause or GPL-2.0 +ZSTD_LICENSE_FILES = LICENSE COPYING +ZSTD_CPE_ID_VENDOR = facebook +ZSTD_CPE_ID_PRODUCT = zstandard + +# The package is a dependency to ccache so ccache cannot be a dependency +HOST_ZSTD_ADD_CCACHE_DEPENDENCY = NO + +ZSTD_OPTS += PREFIX=/usr +ZSTD_OPTS += ZSTD_LEGACY_SUPPORT=0 +ifeq ($(BR2_PACKAGE_ZLIB),y) +ZSTD_DEPENDENCIES += zlib +ZSTD_OPTS += HAVE_ZLIB=1 +else +ZSTD_OPTS += HAVE_ZLIB=0 +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +ZSTD_DEPENDENCIES += xz +ZSTD_OPTS += HAVE_LZMA=1 +else +ZSTD_OPTS += HAVE_LZMA=0 +endif + +ifeq ($(BR2_PACKAGE_LZ4),y) +ZSTD_DEPENDENCIES += lz4 +ZSTD_OPTS += HAVE_LZ4=1 +else +ZSTD_OPTS += HAVE_LZ4=0 +endif + +# zstd will append -O3 after $(CFLAGS), use MOREFLAGS to override again +ZSTD_OPTS += MOREFLAGS="$(TARGET_OPTIMIZATION)" + +ZSTD_BUILD_LIBS_BASENAMES = libzstd.pc +ifeq ($(BR2_STATIC_LIBS),y) +ZSTD_BUILD_LIBS_BASENAMES += libzstd.a +ZSTD_INSTALL_LIBS = install-static +else ifeq ($(BR2_SHARED_LIBS),y) +ZSTD_BUILD_LIBS_BASENAMES += lib +ZSTD_INSTALL_LIBS = install-shared +else +ZSTD_BUILD_LIBS_BASENAMES += lib +ZSTD_INSTALL_LIBS = install-static install-shared +endif + +# prefer zstd-dll unless no library is available +ifeq ($(BR2_STATIC_LIBS),y) +ZSTD_BUILD_PROG_TARGET = zstd-release +else +ZSTD_BUILD_PROG_TARGET = zstd-dll +endif + +# The HAVE_THREAD flag is read by the 'programs' makefile but not by the 'lib' +# one. Building a multi-threaded binary with a static library (which defaults +# to single-threaded) gives a runtime error when compressing files. +# The 'lib' makefile provides specific '%-mt' and '%-nomt' targets for this +# purpose. +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +ZSTD_OPTS += HAVE_THREAD=1 +ZSTD_BUILD_LIBS_THREAD_SUFFIX = -mt +else +ZSTD_OPTS += HAVE_THREAD=0 +ZSTD_BUILD_LIBS_THREAD_SUFFIX = -nomt +endif +# check-package disable OverriddenVariable - override intended +ZSTD_BUILD_LIBS = \ + $(addsuffix -release, \ + $(addsuffix $(ZSTD_BUILD_LIBS_THREAD_SUFFIX), \ + $(ZSTD_BUILD_LIBS_BASENAMES))) + +define ZSTD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \ + -C $(@D)/lib $(ZSTD_BUILD_LIBS) + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \ + -C $(@D)/programs $(ZSTD_BUILD_PROG_TARGET) +endef + +define ZSTD_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \ + DESTDIR=$(STAGING_DIR) PREFIX=/usr -C $(@D)/lib \ + install-pc install-includes $(ZSTD_INSTALL_LIBS) +endef + +define ZSTD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \ + DESTDIR=$(TARGET_DIR) -C $(@D)/programs install + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \ + DESTDIR=$(TARGET_DIR) -C $(@D)/lib $(ZSTD_INSTALL_LIBS) +endef + +HOST_ZSTD_OPTS += PREFIX=$(HOST_DIR) +HOST_ZSTD_ENV = $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) + +# We are a ccache dependency, so we can't use ccache +HOST_ZSTD_ENV += CC="$(HOSTCC_NOCCACHE)" CXX="$(HOSTCXX_NOCCACHE)" + +define HOST_ZSTD_BUILD_CMDS + $(HOST_ZSTD_ENV) $(MAKE) $(HOST_ZSTD_OPTS) \ + -C $(@D) zstd-release lib-release +endef + +define HOST_ZSTD_INSTALL_CMDS + $(HOST_ZSTD_ENV) $(MAKE) $(HOST_ZSTD_OPTS) \ + -C $(@D) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/package/zxing-cpp/0001-Fix-building-when-only-writer-support-is-enabled.patch b/package/zxing-cpp/0001-Fix-building-when-only-writer-support-is-enabled.patch new file mode 100644 index 00000000..0d2a90f7 --- /dev/null +++ b/package/zxing-cpp/0001-Fix-building-when-only-writer-support-is-enabled.patch @@ -0,0 +1,164 @@ +From aef33b66df0ad6f085dc55b50d7847e0b8a2ccd8 Mon Sep 17 00:00:00 2001 +From: Dario Binacchi +Date: Wed, 17 Jul 2024 14:53:35 +0200 +Subject: [PATCH] Fix building when only writer support is enabled + +The compilation of the following code, which links the zxing-cpp library +built with only the writer (encoder) support, raises the following +linking errors: + +using namespace ZXing; + +int main(void) +{ + std::string str = "01"; + BitHacks::NumberOfLeadingZeros(0); + auto writer = MultiFormatWriter(BarcodeFormat::Code128); + writer.setEncoding(CharacterSet::UTF8); + writer.setMargin(0); + auto matrix = writer.encode(str, 0, 0 /*scaledImageWidth, pixelHeight*/); + + return EXIT_SUCCESS; +} + +arm-buildroot-linux-uclibcgnueabihf/bin/ld:host/arm-buildroot-linux-uclibcgnueabihf/sysroot/usr/lib/libZXing.so: +undefined reference to `ZXing::TextDecoder::GuessEncoding(unsigned char const*, unsigned int, ZXing::CharacterSet)' +arm-buildroot-linux-uclibcgnueabihf/bin/ld: host/arm-buildroot-linux-uclibcgnueabihf/sysroot/usr/lib/libZXing.so: +undefined reference to `ZXing::HRIFromGS1[abi:cxx11](std::basic_string_view >)' +arm-buildroot-linux-uclibcgnueabihf/bin/ld: host/arm-buildroot-linux-uclibcgnueabihf/sysroot/usr/lib/libZXing.so: +undefined reference to `ZXing::TextDecoder::Append(std::__cxx11::basic_string, std::allocator >&, unsigned char const*, unsigned int, ZXing::CharacterSet, bool)' +arm-buildroot-linux-uclibcgnueabihf/bin/ld: host/arm-buildroot-linux-uclibcgnueabihf/sysroot/usr/lib/libZXing.so: +undefined reference to `ZXing::HRIFromISO15434[abi:cxx11](std::basic_string_view >)' +collect2: error: ld returned 1 exit status + +The patch fixes these errors. + +Co-Developed-by: Francesco Nicoletta Puzzillo +Signed-off-by: Dario Binacchi +Upstream: backport from upstream https://github.com/zxing-cpp/zxing-cpp/pull/811 +--- + core/src/Content.cpp | 4 ++++ + core/src/Content.h | 6 ++++++ + core/src/DecoderResult.h | 2 ++ + core/src/GTIN.cpp | 2 ++ + core/src/GTIN.h | 2 ++ + 5 files changed, 16 insertions(+) + +diff --git a/core/src/Content.cpp b/core/src/Content.cpp +index 4d3c44657cf9..569d4e35614a 100644 +--- a/core/src/Content.cpp ++++ b/core/src/Content.cpp +@@ -93,6 +93,7 @@ bool Content::canProcess() const + return std::all_of(encodings.begin(), encodings.end(), [](Encoding e) { return CanProcess(e.eci); }); + } + ++#ifdef ZXING_READERS + std::string Content::render(bool withECI) const + { + if (empty() || !canProcess()) +@@ -165,6 +166,7 @@ std::wstring Content::utfW() const + { + return FromUtf8(render(false)); + } ++#endif // ZXING_READERS + + ByteArray Content::bytesECI() const + { +@@ -188,6 +190,7 @@ ByteArray Content::bytesECI() const + return ByteArray(res); + } + ++#ifdef ZXING_READERS + CharacterSet Content::guessEncoding() const + { + // assemble all blocks with unknown encoding +@@ -236,5 +239,6 @@ ContentType Content::type() const + + return ContentType::Mixed; + } ++#endif // ZXING_READERS + + } // namespace ZXing +diff --git a/core/src/Content.h b/core/src/Content.h +index 99e5a01e7140..aa77bda94d54 100644 +--- a/core/src/Content.h ++++ b/core/src/Content.h +@@ -38,7 +38,9 @@ class Content + void ForEachECIBlock(FUNC f) const; + + void switchEncoding(ECI eci, bool isECI); ++#ifdef ZXING_READERS + std::string render(bool withECI) const; ++#endif // ZXING_READERS + + public: + struct Encoding +@@ -75,13 +77,17 @@ public: + bool empty() const { return bytes.empty(); } + bool canProcess() const; + ++#ifdef ZXING_READERS + std::string text(TextMode mode) const; + std::wstring utfW() const; // utf16 or utf32 depending on the platform, i.e. on size_of(wchar_t) + std::string utf8() const { return render(false); } ++#endif // ZXING_READERS + + ByteArray bytesECI() const; ++#ifdef ZXING_READERS + CharacterSet guessEncoding() const; + ContentType type() const; ++#endif // ZXING_READERS + }; + + } // ZXing +diff --git a/core/src/DecoderResult.h b/core/src/DecoderResult.h +index 02b285084195..3117b03a923a 100644 +--- a/core/src/DecoderResult.h ++++ b/core/src/DecoderResult.h +@@ -50,7 +50,9 @@ public: + Content&& content() && { return std::move(_content); } + + // to keep the unit tests happy for now: ++#ifdef ZXING_READERS + std::wstring text() const { return _content.utfW(); } ++#endif // ZXING_READERS + std::string symbologyIdentifier() const { return _content.symbology.toString(false); } + + // Simple macro to set up getter/setter methods that save lots of boilerplate. +diff --git a/core/src/GTIN.cpp b/core/src/GTIN.cpp +index 256855a03070..690901062301 100644 +--- a/core/src/GTIN.cpp ++++ b/core/src/GTIN.cpp +@@ -199,6 +199,7 @@ std::string LookupCountryIdentifier(const std::string& GTIN, const BarcodeFormat + return it != std::end(COUNTRIES) && prefix >= it->first && prefix <= it->last ? it->id : std::string(); + } + ++#ifdef ZXING_READERS + std::string EanAddOn(const Result& result) + { + if (!(BarcodeFormat::EAN13 | BarcodeFormat::UPCA | BarcodeFormat::UPCE | BarcodeFormat::EAN8) +@@ -208,6 +209,7 @@ std::string EanAddOn(const Result& result) + auto pos = txt.find(' '); + return pos != std::string::npos ? std::string(txt.substr(pos + 1)) : std::string(); + } ++#endif // ZXING_READERS + + std::string IssueNr(const std::string& ean2AddOn) + { +diff --git a/core/src/GTIN.h b/core/src/GTIN.h +index d56b604e5f71..9af0b01200ce 100644 +--- a/core/src/GTIN.h ++++ b/core/src/GTIN.h +@@ -47,7 +47,9 @@ bool IsCheckDigitValid(const std::basic_string& s) + */ + std::string LookupCountryIdentifier(const std::string& GTIN, const BarcodeFormat format = BarcodeFormat::None); + ++#ifdef ZXING_READERS + std::string EanAddOn(const Result& result); ++#endif // ZXING_READERS + + std::string IssueNr(const std::string& ean2AddOn); + std::string Price(const std::string& ean5AddOn); +-- +2.43.0 + diff --git a/package/zxing-cpp/Config.in b/package/zxing-cpp/Config.in new file mode 100644 index 00000000..e5b8cfcd --- /dev/null +++ b/package/zxing-cpp/Config.in @@ -0,0 +1,36 @@ +comment "zxing-cpp needs a toolchain w/ C++, wchar, dynamic library, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_ZXING_CPP + bool "zxing-cpp" + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_STB + select BR2_PACKAGE_PYTHON_PYBIND if BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_ZXING_CPP_READERS if !BR2_PACKAGE_ZXING_CPP_WRITERS + help + ZXing-cpp (pronounced "zebra crossing") is an open-source, + multi-format 1D/2D barcode image processing library + implemented in Java, with ports to other languages. This + compiles the C++ port. + + https://github.com/zxing-cpp/zxing-cpp + +if BR2_PACKAGE_ZXING_CPP + +config BR2_PACKAGE_ZXING_CPP_READERS + bool "readers support" + default y + help + Build with readers (decoders) support + +config BR2_PACKAGE_ZXING_CPP_WRITERS + bool "writers support" + default y + help + Build with writers (encoders) support + +endif # BR2_PACKAGE_ZXING_CPP diff --git a/package/zxing-cpp/zxing-cpp.hash b/package/zxing-cpp/zxing-cpp.hash new file mode 100644 index 00000000..ff11896f --- /dev/null +++ b/package/zxing-cpp/zxing-cpp.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 02078ae15f19f9d423a441f205b1d1bee32349ddda7467e2c84e8f08876f8635 zxing-cpp-2.2.1.tar.gz + +# License files +sha256 c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08 LICENSE diff --git a/package/zxing-cpp/zxing-cpp.mk b/package/zxing-cpp/zxing-cpp.mk new file mode 100644 index 00000000..5f91bf2f --- /dev/null +++ b/package/zxing-cpp/zxing-cpp.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# zxing-cpp +# +################################################################################ + +ZXING_CPP_VERSION = 2.2.1 +ZXING_CPP_SITE = $(call github,zxing-cpp,zxing-cpp,v$(ZXING_CPP_VERSION)) +ZXING_CPP_LICENSE = Apache-2.0 +ZXING_CPP_LICENSE_FILES = LICENSE +ZXING_CPP_INSTALL_STAGING = YES +ZXING_CPP_SUPPORTS_IN_SOURCE_BUILD = NO +ZXING_CPP_DEPENDENCIES = host-pkgconf stb +ZXING_CPP_CONF_OPTS = \ + -DBUILD_BLACKBOX_TESTS=OFF \ + -DBUILD_UNIT_TESTS=OFF \ + -DBUILD_DEPENDENCIES=LOCAL + +ifeq ($(BR2_PACKAGE_PYTHON3)$(BR2_PACKAGE_PYTHON_PYBIND),yy) +ZXING_CPP_DEPENDENCIES += python3 python-pybind +ZXING_CPP_CONF_OPTS += \ + -DBUILD_PYTHON_MODULE=ON \ + -DPYTHON_EXECUTABLE=$(HOST_DIR)/bin/python3 \ + -DPYTHON_INCLUDE_DIRS=$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR) +else +ZXING_CPP_CONF_OPTS += -DBUILD_PYTHON_MODULE=OFF +endif + +ifeq ($(BR2_PACKAGE_ZXING_CPP_READERS),y) +ZXING_CPP_CONF_OPTS += -DBUILD_READERS=ON +else +ZXING_CPP_CONF_OPTS += -DBUILD_READERS=OFF +endif + +ifeq ($(BR2_PACKAGE_ZXING_CPP_WRITERS),y) +ZXING_CPP_CONF_OPTS += -DBUILD_WRITERS=ON +else +ZXING_CPP_CONF_OPTS += -DBUILD_WRITERS=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/zynaddsubfx/0001-MidiIn-Add-stdint.h-header-include.patch b/package/zynaddsubfx/0001-MidiIn-Add-stdint.h-header-include.patch new file mode 100644 index 00000000..ea4eb661 --- /dev/null +++ b/package/zynaddsubfx/0001-MidiIn-Add-stdint.h-header-include.patch @@ -0,0 +1,26 @@ +From 4f1565f18cf71867f25f31c50c3a5e6995f49ae6 Mon Sep 17 00:00:00 2001 +From: fundamental +Date: Sat, 22 Apr 2023 10:21:09 -0400 +Subject: [PATCH] MidiIn: Add stdint.h header include + +Upstream: https://github.com/zynaddsubfx/zynaddsubfx/commit/70905c96fe7b9ffde19bc4bc05b0dc53a1ed1707 +Signed-off-by: Julien Olivain +--- + src/Nio/MidiIn.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/Nio/MidiIn.h b/src/Nio/MidiIn.h +index ce0bcfec..c6b30c61 100644 +--- a/src/Nio/MidiIn.h ++++ b/src/Nio/MidiIn.h +@@ -17,6 +17,7 @@ + #define MIDI_IN_H + + #include "Engine.h" ++#include //uint8_t + + namespace zyn { + +-- +2.41.0 + diff --git a/package/zynaddsubfx/0002-Bank-Add-stdint.h-header-include.patch b/package/zynaddsubfx/0002-Bank-Add-stdint.h-header-include.patch new file mode 100644 index 00000000..556854a9 --- /dev/null +++ b/package/zynaddsubfx/0002-Bank-Add-stdint.h-header-include.patch @@ -0,0 +1,28 @@ +From eab3bc1712e5af7e6aef942a24e833ce2c429436 Mon Sep 17 00:00:00 2001 +From: fundamental +Date: Wed, 19 Apr 2023 21:52:01 -0400 +Subject: [PATCH] Bank: Add stdint.h header include + +As uint8_t is used, this header should be included. + +Upstream: https://github.com/zynaddsubfx/zynaddsubfx/commit/f384d92486d6b515cb628d0f52008a9e03341d8c +Signed-off-by: Julien Olivain +--- + src/Misc/Bank.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/Misc/Bank.h b/src/Misc/Bank.h +index 5120441a..3f324dd8 100644 +--- a/src/Misc/Bank.h ++++ b/src/Misc/Bank.h +@@ -18,6 +18,7 @@ + #include + #include "../globals.h" + #include "Config.h" ++#include + + //entries in a bank + #define BANK_SIZE 160 +-- +2.41.0 + diff --git a/package/zynaddsubfx/Config.in b/package/zynaddsubfx/Config.in new file mode 100644 index 00000000..f181a239 --- /dev/null +++ b/package/zynaddsubfx/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_ZYNADDSUBFX + bool "zynaddsubfx" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS # liblo + select BR2_PACKAGE_FFTW + select BR2_PACKAGE_FFTW_SINGLE + select BR2_PACKAGE_LIBLO + select BR2_PACKAGE_MXML + select BR2_PACKAGE_ZLIB + help + ZynAddSubFX is a fully featured open source software + synthesizer capable of making a countless number of + instruments, from some common heard from expensive hardware + to interesting sounds that you'll boost to an amazing + universe of sounds. + + Note: this Buildroot package does not include the graphical + user interface. It is meant to be executed as a headless + daemon to be controlled with MIDI events or network OSC + (Open Sound Control) events. OSC events can be generated + from an external system with the ZynAddSubFX external GUI + program zynaddsubfx-ext-gui. + + https://zynaddsubfx.sourceforge.io/ + +comment "zynaddsubfx needs a toolchain w/ C++11 and threads" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/zynaddsubfx/zynaddsubfx.hash b/package/zynaddsubfx/zynaddsubfx.hash new file mode 100644 index 00000000..2465d0b8 --- /dev/null +++ b/package/zynaddsubfx/zynaddsubfx.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 cbd160778f6cf147f9b0487719edc5197a1404f46d7c7bfd89e153f0d8ce71ae zynaddsubfx-3.0.6.tar.bz2 +sha256 c9bf7643726da4f149e9669cf6f00257e4b3a173e4ab307461b8bd42717dd9a4 COPYING diff --git a/package/zynaddsubfx/zynaddsubfx.mk b/package/zynaddsubfx/zynaddsubfx.mk new file mode 100644 index 00000000..aff9ac4b --- /dev/null +++ b/package/zynaddsubfx/zynaddsubfx.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# zynaddsubfx +# +################################################################################ + +ZYNADDSUBFX_VERSION = 3.0.6 +ZYNADDSUBFX_SOURCE = zynaddsubfx-$(ZYNADDSUBFX_VERSION).tar.bz2 +ZYNADDSUBFX_SITE = http://downloads.sourceforge.net/zynaddsubfx +ZYNADDSUBFX_LICENSE = GPL-2.0+ +ZYNADDSUBFX_LICENSE_FILES = COPYING + +# There is no package in buildroot using LV2 plugins: disabling +ZYNADDSUBFX_CONF_OPTS = -DCompileTests=OFF -DPluginEnable=OFF + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +ZYNADDSUBFX_CONF_OPTS += -DOS_LIBRARIES=-latomic +endif + +ZYNADDSUBFX_DEPENDENCIES = \ + fftw-single \ + liblo \ + mxml \ + zlib + +ifeq ($(BR2_PACKAGE_ALSA_LIB_SEQ),y) +ZYNADDSUBFX_DEPENDENCIES += alsa-lib +ZYNADDSUBFX_CONF_OPTS += -DAlsaEnable=ON +else +ZYNADDSUBFX_CONF_OPTS += -DAlsaEnable=OFF +endif + +ifeq ($(BR2_PACKAGE_JACK1)$(BR2_PACKAGE_JACK2),y) +ZYNADDSUBFX_DEPENDENCIES += $(if $(BR2_PACKAGE_JACK1),jack1,jack2) +ZYNADDSUBFX_CONF_OPTS += -DJackEnable=ON +else +ZYNADDSUBFX_CONF_OPTS += -DJackEnable=OFF +endif + +ifeq ($(BR2_PACKAGE_PORTAUDIO),y) +ZYNADDSUBFX_DEPENDENCIES += portaudio +ZYNADDSUBFX_CONF_OPTS += -DPaEnable=ON +else +ZYNADDSUBFX_CONF_OPTS += -DPaEnable=OFF +endif + +$(eval $(cmake-package)) diff --git a/package/zyre/Config.in b/package/zyre/Config.in new file mode 100644 index 00000000..21a0884e --- /dev/null +++ b/package/zyre/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_ZYRE + bool "zyre" + depends on BR2_INSTALL_LIBSTDCPP # zeromq + depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq + depends on BR2_USE_MMU # czmq + select BR2_PACKAGE_CZMQ + select BR2_PACKAGE_ZEROMQ + help + An open-source framework for proximity-based peer-to-peer + applications. + + http://zyre.org + +comment "zyre needs a toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) diff --git a/package/zyre/zyre.hash b/package/zyre/zyre.hash new file mode 100644 index 00000000..d9d92d78 --- /dev/null +++ b/package/zyre/zyre.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 624d379dc880025144f58d3a7dc35ea1be4a57ba4e2a58c98ec15a60891be12d zyre-2.0.1.tar.gz +sha256 1f256ecad192880510e84ad60474eab7589218784b9a50bc7ceee34c2b91f1d5 LICENSE diff --git a/package/zyre/zyre.mk b/package/zyre/zyre.mk new file mode 100644 index 00000000..a726859a --- /dev/null +++ b/package/zyre/zyre.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# zyre +# +################################################################################ + +ZYRE_VERSION = 2.0.1 +ZYRE_SITE = $(call github,zeromq,zyre,v$(ZYRE_VERSION)) +ZYRE_LICENSE = MPL-2.0 +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 +endef + +ZYRE_POST_PATCH_HOOKS += ZYRE_CREATE_CONFIG_DIR + +$(eval $(autotools-package)) diff --git a/package/zziplib/Config.in b/package/zziplib/Config.in new file mode 100644 index 00000000..6b55572a --- /dev/null +++ b/package/zziplib/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_ZZIPLIB + bool "zziplib" + select BR2_PACKAGE_ZLIB + help + The zziplib provides read access to zipped files in a + zip-archive, using compression based solely on free algorithms + provided by zlib. It also provides a functionality to overlay + the archive filesystem with the filesystem of the operating + system environment. + + http://zziplib.sourceforge.net diff --git a/package/zziplib/zziplib.hash b/package/zziplib/zziplib.hash new file mode 100644 index 00000000..3bff51f0 --- /dev/null +++ b/package/zziplib/zziplib.hash @@ -0,0 +1,5 @@ +# sha256 locally computed +sha256 319093aa98d39453f3ea2486a86d8a2fab2d5632f6633a2665318723a908eecf zziplib-0.13.74.tar.gz +sha256 94b03f1a60a7fd5007149530626a895a6ef5a8b9342abfd56860c5f3956f5d23 docs/COPYING.LIB +sha256 c2aa7d58cebd24cb877bbf11d6b13a4bb7cd08b9d7db5d3037ca06c46bf4cfd8 docs/COPYING.MPL +sha256 9418aca218090f0bebfa91298c8145c7342de095eced3d72ea241c178df59368 docs/copying.htm.md diff --git a/package/zziplib/zziplib.mk b/package/zziplib/zziplib.mk new file mode 100644 index 00000000..0ef53436 --- /dev/null +++ b/package/zziplib/zziplib.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# zziplib +# +################################################################################ + +ZZIPLIB_VERSION = 0.13.74 +ZZIPLIB_SITE = $(call github,gdraheim,zziplib,v$(ZZIPLIB_VERSION)) +ZZIPLIB_LICENSE = LGPL-2.0+ or MPL-1.1 +ZZIPLIB_LICENSE_FILES = docs/COPYING.LIB docs/COPYING.MPL docs/copying.htm.md +ZZIPLIB_CPE_ID_VALID = YES +ZZIPLIB_INSTALL_STAGING = YES +ZZIPLIB_CONF_OPTS += \ + -DZZIPDOCS=OFF \ + -DZZIPTEST=OFF +ZZIPLIB_DEPENDENCIES = host-pkgconf zlib + +define ZZIPLIB_POST_EXTRACT_FIXUP + rm $(@D)/GNUmakefile +endef +ZZIPLIB_POST_EXTRACT_HOOKS += ZZIPLIB_POST_EXTRACT_FIXUP + +ifeq ($(BR2_PACKAGE_SDL2),y) +ZZIPLIB_CONF_OPTS += -DZZIPSDL=ON +ZZIPLIB_DEPENDENCIES += sdl2 +else +ZZIPLIB_CONF_OPTS += -DZZIPSDL=OFF +endif + +$(eval $(cmake-package)) diff --git a/support/config-fragments/autobuild/arm-aarch64.config b/support/config-fragments/autobuild/arm-aarch64.config new file mode 100644 index 00000000..bed08dcb --- /dev/null +++ b/support/config-fragments/autobuild/arm-aarch64.config @@ -0,0 +1,4 @@ +BR2_aarch64=y +BR2_cortex_a72=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_ARM_AARCH64=y diff --git a/support/config-fragments/autobuild/bootlin-aarch64-glibc.config b/support/config-fragments/autobuild/bootlin-aarch64-glibc.config new file mode 100644 index 00000000..fe167e23 --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-aarch64-glibc.config @@ -0,0 +1,4 @@ +BR2_aarch64=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_STABLE=y diff --git a/support/config-fragments/autobuild/bootlin-arcle-hs38-uclibc.config b/support/config-fragments/autobuild/bootlin-arcle-hs38-uclibc.config new file mode 100644 index 00000000..c9e1d19e --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-arcle-hs38-uclibc.config @@ -0,0 +1,5 @@ +BR2_arcle=y +BR2_archs38=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_UCLIBC_STABLE=y diff --git a/support/config-fragments/autobuild/bootlin-armv5-uclibc.config b/support/config-fragments/autobuild/bootlin-armv5-uclibc.config new file mode 100644 index 00000000..c179c75d --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-armv5-uclibc.config @@ -0,0 +1,4 @@ +BR2_arm=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_UCLIBC_STABLE=y diff --git a/support/config-fragments/autobuild/bootlin-armv7-glibc.config b/support/config-fragments/autobuild/bootlin-armv7-glibc.config new file mode 100644 index 00000000..11ae28ff --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-armv7-glibc.config @@ -0,0 +1,6 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_VFP=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_GLIBC_BLEEDING_EDGE=y diff --git a/support/config-fragments/autobuild/bootlin-armv7-musl.config b/support/config-fragments/autobuild/bootlin-armv7-musl.config new file mode 100644 index 00000000..7ae72b21 --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-armv7-musl.config @@ -0,0 +1,6 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_VFP=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_MUSL_STABLE=y diff --git a/support/config-fragments/autobuild/bootlin-armv7m-uclibc.config b/support/config-fragments/autobuild/bootlin-armv7m-uclibc.config new file mode 100644 index 00000000..48f2bb34 --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-armv7m-uclibc.config @@ -0,0 +1,5 @@ +BR2_arm=y +BR2_cortex_m4=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7M_UCLIBC_STABLE=y diff --git a/support/config-fragments/autobuild/bootlin-m68k-5208-uclibc.config b/support/config-fragments/autobuild/bootlin-m68k-5208-uclibc.config new file mode 100644 index 00000000..c6000beb --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-m68k-5208-uclibc.config @@ -0,0 +1,4 @@ +BR2_m68k=y +BR2_m68k_cf5208=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_COLDFIRE_UCLIBC_STABLE=y diff --git a/support/config-fragments/autobuild/bootlin-m68k-68040-uclibc.config b/support/config-fragments/autobuild/bootlin-m68k-68040-uclibc.config new file mode 100644 index 00000000..f2c59e9d --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-m68k-68040-uclibc.config @@ -0,0 +1,4 @@ +BR2_m68k=y +BR2_m68k_68040=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_UCLIBC_STABLE=y diff --git a/support/config-fragments/autobuild/bootlin-microblazeel-uclibc.config b/support/config-fragments/autobuild/bootlin-microblazeel-uclibc.config new file mode 100644 index 00000000..206fb777 --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-microblazeel-uclibc.config @@ -0,0 +1,3 @@ +BR2_microblazeel=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_UCLIBC_STABLE=y diff --git a/support/config-fragments/autobuild/bootlin-mipsel-uclibc.config b/support/config-fragments/autobuild/bootlin-mipsel-uclibc.config new file mode 100644 index 00000000..ff523b25 --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-mipsel-uclibc.config @@ -0,0 +1,4 @@ +BR2_mipsel=y +# BR2_MIPS_SOFT_FLOAT is not set +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_UCLIBC_STABLE=y diff --git a/support/config-fragments/autobuild/bootlin-mipsel32r6-glibc.config b/support/config-fragments/autobuild/bootlin-mipsel32r6-glibc.config new file mode 100644 index 00000000..58a50121 --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-mipsel32r6-glibc.config @@ -0,0 +1,6 @@ +BR2_mipsel=y +BR2_mips_32r6=y +# BR2_MIPS_SOFT_FLOAT is not set +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_GLIBC_STABLE=y diff --git a/support/config-fragments/autobuild/bootlin-nios2-glibc.config b/support/config-fragments/autobuild/bootlin-nios2-glibc.config new file mode 100644 index 00000000..575a1b30 --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-nios2-glibc.config @@ -0,0 +1,4 @@ +BR2_nios2=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_NIOS2_GLIBC_STABLE=y diff --git a/support/config-fragments/autobuild/bootlin-openrisc-uclibc.config b/support/config-fragments/autobuild/bootlin-openrisc-uclibc.config new file mode 100644 index 00000000..bad08627 --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-openrisc-uclibc.config @@ -0,0 +1,3 @@ +BR2_or1k=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_UCLIBC_STABLE=y diff --git a/support/config-fragments/autobuild/bootlin-powerpc-e500mc-uclibc.config b/support/config-fragments/autobuild/bootlin-powerpc-e500mc-uclibc.config new file mode 100644 index 00000000..96461856 --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-powerpc-e500mc-uclibc.config @@ -0,0 +1,4 @@ +BR2_powerpc=y +BR2_powerpc_e500mc=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_UCLIBC_STABLE=y diff --git a/support/config-fragments/autobuild/bootlin-powerpc64le-power8-glibc.config b/support/config-fragments/autobuild/bootlin-powerpc64le-power8-glibc.config new file mode 100644 index 00000000..44f00963 --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-powerpc64le-power8-glibc.config @@ -0,0 +1,4 @@ +BR2_powerpc64le=y +BR2_powerpc_power8=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_GLIBC_STABLE=y diff --git a/support/config-fragments/autobuild/bootlin-riscv32-glibc.config b/support/config-fragments/autobuild/bootlin-riscv32-glibc.config new file mode 100644 index 00000000..cc45d018 --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-riscv32-glibc.config @@ -0,0 +1,5 @@ +BR2_riscv=y +BR2_RISCV_32=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV32_ILP32D_GLIBC_BLEEDING_EDGE=y diff --git a/support/config-fragments/autobuild/bootlin-riscv64-glibc.config b/support/config-fragments/autobuild/bootlin-riscv64-glibc.config new file mode 100644 index 00000000..433a6e89 --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-riscv64-glibc.config @@ -0,0 +1,5 @@ +BR2_riscv=y +BR2_RISCV_ABI_LP64D=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_LP64D_GLIBC_BLEEDING_EDGE=y diff --git a/support/config-fragments/autobuild/bootlin-riscv64-musl.config b/support/config-fragments/autobuild/bootlin-riscv64-musl.config new file mode 100644 index 00000000..fee1f29f --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-riscv64-musl.config @@ -0,0 +1,4 @@ +BR2_riscv=y +BR2_RISCV_ABI_LP64D=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_LP64D_MUSL_STABLE=y diff --git a/support/config-fragments/autobuild/bootlin-s390x-z13-glibc.config b/support/config-fragments/autobuild/bootlin-s390x-z13-glibc.config new file mode 100644 index 00000000..fe3f0380 --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-s390x-z13-glibc.config @@ -0,0 +1,5 @@ +BR2_s390x=y +BR2_s390x_z13=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_S390X_Z13_GLIBC_BLEEDING_EDGE=y diff --git a/support/config-fragments/autobuild/bootlin-sh4-uclibc.config b/support/config-fragments/autobuild/bootlin-sh4-uclibc.config new file mode 100644 index 00000000..8b4d40b5 --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-sh4-uclibc.config @@ -0,0 +1,3 @@ +BR2_sh=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_UCLIBC_STABLE=y diff --git a/support/config-fragments/autobuild/bootlin-sparc-uclibc.config b/support/config-fragments/autobuild/bootlin-sparc-uclibc.config new file mode 100644 index 00000000..cbe72240 --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-sparc-uclibc.config @@ -0,0 +1,3 @@ +BR2_sparc=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARCV8_UCLIBC_STABLE=y diff --git a/support/config-fragments/autobuild/bootlin-sparc64-glibc.config b/support/config-fragments/autobuild/bootlin-sparc64-glibc.config new file mode 100644 index 00000000..4f851d10 --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-sparc64-glibc.config @@ -0,0 +1,3 @@ +BR2_sparc64=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARC64_GLIBC_STABLE=y diff --git a/support/config-fragments/autobuild/bootlin-x86-64-glibc.config b/support/config-fragments/autobuild/bootlin-x86-64-glibc.config new file mode 100644 index 00000000..815eb658 --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-x86-64-glibc.config @@ -0,0 +1,5 @@ +BR2_x86_64=y +BR2_x86_corei7=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_BLEEDING_EDGE=y diff --git a/support/config-fragments/autobuild/bootlin-x86-64-musl.config b/support/config-fragments/autobuild/bootlin-x86-64-musl.config new file mode 100644 index 00000000..9763d8a6 --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-x86-64-musl.config @@ -0,0 +1,4 @@ +BR2_x86_64=y +BR2_x86_corei7=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_MUSL_STABLE=y diff --git a/support/config-fragments/autobuild/bootlin-x86-64-uclibc.config b/support/config-fragments/autobuild/bootlin-x86-64-uclibc.config new file mode 100644 index 00000000..70b940f1 --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-x86-64-uclibc.config @@ -0,0 +1,4 @@ +BR2_x86_64=y +BR2_x86_corei7=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_UCLIBC_STABLE=y diff --git a/support/config-fragments/autobuild/bootlin-x86-i686-musl.config b/support/config-fragments/autobuild/bootlin-x86-i686-musl.config new file mode 100644 index 00000000..697e9c62 --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-x86-i686-musl.config @@ -0,0 +1,5 @@ +BR2_i386=y +BR2_x86_i686=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_MUSL_STABLE=y diff --git a/support/config-fragments/autobuild/bootlin-xtensa-uclibc.config b/support/config-fragments/autobuild/bootlin-xtensa-uclibc.config new file mode 100644 index 00000000..c44525b2 --- /dev/null +++ b/support/config-fragments/autobuild/bootlin-xtensa-uclibc.config @@ -0,0 +1,5 @@ +BR2_xtensa=y +BR2_XTENSA_CUSTOM=y +BR2_XTENSA_LITTLE_ENDIAN=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_XTENSA_LX60_UCLIBC_STABLE=y diff --git a/support/config-fragments/autobuild/br-arc-full-internal.config b/support/config-fragments/autobuild/br-arc-full-internal.config new file mode 100644 index 00000000..4755c9e4 --- /dev/null +++ b/support/config-fragments/autobuild/br-arc-full-internal.config @@ -0,0 +1,3 @@ +BR2_arcle=y +BR2_TOOLCHAIN_BUILDROOT_LOCALE=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y diff --git a/support/config-fragments/autobuild/br-arc-internal-glibc.config b/support/config-fragments/autobuild/br-arc-internal-glibc.config new file mode 100644 index 00000000..b9d68572 --- /dev/null +++ b/support/config-fragments/autobuild/br-arc-internal-glibc.config @@ -0,0 +1,4 @@ +BR2_arcle=y +BR2_archs38=y +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y diff --git a/support/config-fragments/autobuild/br-arm-basic.config b/support/config-fragments/autobuild/br-arm-basic.config new file mode 100644 index 00000000..fbbeaaa7 --- /dev/null +++ b/support/config-fragments/autobuild/br-arm-basic.config @@ -0,0 +1,8 @@ +BR2_arm=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-basic-2020.11.2.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_9=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_9=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set diff --git a/support/config-fragments/autobuild/br-arm-full-nothread.config b/support/config-fragments/autobuild/br-arm-full-nothread.config new file mode 100644 index 00000000..71592d68 --- /dev/null +++ b/support/config-fragments/autobuild/br-arm-full-nothread.config @@ -0,0 +1,11 @@ +BR2_arm=y +BR2_arm1176jzf_s=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm11-full-nothread-2020.11.2.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_9=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_9=y +BR2_TOOLCHAIN_EXTERNAL_LOCALE=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/support/config-fragments/autobuild/br-arm-full-static.config b/support/config-fragments/autobuild/br-arm-full-static.config new file mode 100644 index 00000000..f3a4d91f --- /dev/null +++ b/support/config-fragments/autobuild/br-arm-full-static.config @@ -0,0 +1,11 @@ +BR2_arm=y +BR2_STATIC_LIBS=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-static-2020.11.2.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_9=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_4=y +BR2_TOOLCHAIN_EXTERNAL_LOCALE=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/support/config-fragments/autobuild/br-arm-internal-full.config b/support/config-fragments/autobuild/br-arm-internal-full.config new file mode 100644 index 00000000..b5f10069 --- /dev/null +++ b/support/config-fragments/autobuild/br-arm-internal-full.config @@ -0,0 +1,5 @@ +BR2_arm=y +BR2_ARM_EABI=y +BR2_TOOLCHAIN_BUILDROOT_LOCALE=y +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y diff --git a/support/config-fragments/autobuild/br-arm-internal-glibc.config b/support/config-fragments/autobuild/br-arm-internal-glibc.config new file mode 100644 index 00000000..4986d409 --- /dev/null +++ b/support/config-fragments/autobuild/br-arm-internal-glibc.config @@ -0,0 +1,6 @@ +BR2_arm=y +BR2_cortex_a8=y +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +BR2_BINUTILS_VERSION_2_42_X=y +BR2_GCC_VERSION_13_X=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y diff --git a/support/config-fragments/autobuild/br-arm-internal-musl.config b/support/config-fragments/autobuild/br-arm-internal-musl.config new file mode 100644 index 00000000..92788626 --- /dev/null +++ b/support/config-fragments/autobuild/br-arm-internal-musl.config @@ -0,0 +1,4 @@ +BR2_arm=y +BR2_cortex_a8=y +BR2_TOOLCHAIN_BUILDROOT_MUSL=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y diff --git a/support/config-fragments/autobuild/br-i386-pentium4-full.config b/support/config-fragments/autobuild/br-i386-pentium4-full.config new file mode 100644 index 00000000..c6806992 --- /dev/null +++ b/support/config-fragments/autobuild/br-i386-pentium4-full.config @@ -0,0 +1,10 @@ +BR2_x86_pentium4=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-i386-pentium4-full-2020.11.2.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_9=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_4=y +BR2_TOOLCHAIN_EXTERNAL_LOCALE=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/support/config-fragments/autobuild/br-microblazeel-full-internal.config b/support/config-fragments/autobuild/br-microblazeel-full-internal.config new file mode 100644 index 00000000..0d2d7df8 --- /dev/null +++ b/support/config-fragments/autobuild/br-microblazeel-full-internal.config @@ -0,0 +1 @@ +BR2_microblazeel=y diff --git a/support/config-fragments/autobuild/br-mips64-n64-full.config b/support/config-fragments/autobuild/br-mips64-n64-full.config new file mode 100644 index 00000000..b89b74e7 --- /dev/null +++ b/support/config-fragments/autobuild/br-mips64-n64-full.config @@ -0,0 +1,10 @@ +BR2_mips64el=y +BR2_MIPS_NABI64=y +# BR2_MIPS_SOFT_FLOAT is not set +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-mips64-n64-full-2020.11.2.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_8=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_9=y +BR2_TOOLCHAIN_EXTERNAL_LOCALE=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/support/config-fragments/autobuild/br-mips64r6-el-hf-glibc.config b/support/config-fragments/autobuild/br-mips64r6-el-hf-glibc.config new file mode 100644 index 00000000..edf04c35 --- /dev/null +++ b/support/config-fragments/autobuild/br-mips64r6-el-hf-glibc.config @@ -0,0 +1,12 @@ +BR2_mips64el=y +BR2_mips_64r6=y +BR2_MIPS_NABI64=y +# BR2_MIPS_SOFT_FLOAT is not set +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-mips64r6-n64-el-hf-2020.11.2.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_9=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_9=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/support/config-fragments/autobuild/br-powerpc-603e-basic-cpp.config b/support/config-fragments/autobuild/br-powerpc-603e-basic-cpp.config new file mode 100644 index 00000000..045428c1 --- /dev/null +++ b/support/config-fragments/autobuild/br-powerpc-603e-basic-cpp.config @@ -0,0 +1,10 @@ +BR2_powerpc=y +BR2_powerpc_603e=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-powerpc-603e-basic-cpp-2020.11.2.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_9=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_9=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/support/config-fragments/autobuild/br-powerpc-internal-full.config b/support/config-fragments/autobuild/br-powerpc-internal-full.config new file mode 100644 index 00000000..61b3e7a9 --- /dev/null +++ b/support/config-fragments/autobuild/br-powerpc-internal-full.config @@ -0,0 +1,4 @@ +BR2_powerpc=y +BR2_TOOLCHAIN_BUILDROOT_LOCALE=y +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y diff --git a/support/config-fragments/autobuild/br-powerpc64-power7-glibc.config b/support/config-fragments/autobuild/br-powerpc64-power7-glibc.config new file mode 100644 index 00000000..a80047ea --- /dev/null +++ b/support/config-fragments/autobuild/br-powerpc64-power7-glibc.config @@ -0,0 +1,9 @@ +BR2_powerpc64=y +BR2_powerpc_power7=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-powerpc64-power7-glibc-2020.11.2.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_9=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_9=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/support/config-fragments/autobuild/br-riscv64-full-internal.config b/support/config-fragments/autobuild/br-riscv64-full-internal.config new file mode 100644 index 00000000..5c1dfc47 --- /dev/null +++ b/support/config-fragments/autobuild/br-riscv64-full-internal.config @@ -0,0 +1,4 @@ +BR2_riscv=y +BR2_TOOLCHAIN_BUILDROOT_LOCALE=y +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y diff --git a/support/config-fragments/autobuild/br-s390x-z13-internal-glibc.config b/support/config-fragments/autobuild/br-s390x-z13-internal-glibc.config new file mode 100644 index 00000000..56af5fb1 --- /dev/null +++ b/support/config-fragments/autobuild/br-s390x-z13-internal-glibc.config @@ -0,0 +1,4 @@ +BR2_s390x=y +BR2_s390x_z13=y +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y diff --git a/support/config-fragments/autobuild/br-xtensa-full-internal.config b/support/config-fragments/autobuild/br-xtensa-full-internal.config new file mode 100644 index 00000000..89e81d4c --- /dev/null +++ b/support/config-fragments/autobuild/br-xtensa-full-internal.config @@ -0,0 +1,3 @@ +BR2_xtensa=y +BR2_TOOLCHAIN_BUILDROOT_LOCALE=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y diff --git a/support/config-fragments/autobuild/linaro-aarch64-be.config b/support/config-fragments/autobuild/linaro-aarch64-be.config new file mode 100644 index 00000000..e075fe7e --- /dev/null +++ b/support/config-fragments/autobuild/linaro-aarch64-be.config @@ -0,0 +1,3 @@ +BR2_aarch64_be=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE=y diff --git a/support/config-fragments/autobuild/linaro-aarch64.config b/support/config-fragments/autobuild/linaro-aarch64.config new file mode 100644 index 00000000..f65f78a3 --- /dev/null +++ b/support/config-fragments/autobuild/linaro-aarch64.config @@ -0,0 +1,3 @@ +BR2_aarch64=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64=y diff --git a/support/config-fragments/autobuild/linaro-arm.config b/support/config-fragments/autobuild/linaro-arm.config new file mode 100644 index 00000000..d72e19b3 --- /dev/null +++ b/support/config-fragments/autobuild/linaro-arm.config @@ -0,0 +1,5 @@ +BR2_arm=y +BR2_cortex_a8=y +BR2_ARM_EABIHF=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM=y diff --git a/support/config-fragments/autobuild/sourcery-mips.config b/support/config-fragments/autobuild/sourcery-mips.config new file mode 100644 index 00000000..103e20bf --- /dev/null +++ b/support/config-fragments/autobuild/sourcery-mips.config @@ -0,0 +1,4 @@ +BR2_mips=y +BR2_mips_32r2=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS=y diff --git a/support/config-fragments/autobuild/sourcery-mips64.config b/support/config-fragments/autobuild/sourcery-mips64.config new file mode 100644 index 00000000..77e3a853 --- /dev/null +++ b/support/config-fragments/autobuild/sourcery-mips64.config @@ -0,0 +1,5 @@ +BR2_mips64el=y +BR2_mips_64r2=y +BR2_MIPS_NABI64=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS=y diff --git a/support/config-fragments/autobuild/toolchain-configs.csv b/support/config-fragments/autobuild/toolchain-configs.csv new file mode 100644 index 00000000..654f11e2 --- /dev/null +++ b/support/config-fragments/autobuild/toolchain-configs.csv @@ -0,0 +1,67 @@ +# This file is sorted by "importance" of toolchains, so that by +# default test-pkg tests a useful subset of toolchains + +# Toolchains used by default by test-pkg: + +# Test a regular uClibc toolchain +support/config-fragments/autobuild/bootlin-armv5-uclibc.config,x86_64 + +# Test a toolchain with glibc and a very recent gcc version +support/config-fragments/autobuild/bootlin-armv7-glibc.config,x86_64 + +# Test a noMMU toolchain with no dynamic library support +support/config-fragments/autobuild/bootlin-armv7m-uclibc.config,x86_64 + +# Test a musl toolchain +support/config-fragments/autobuild/bootlin-x86-64-musl.config,x86_64 + +# Test a MMU toolchain without dynamic library support +support/config-fragments/autobuild/br-arm-full-static.config,x86_64 + +# Toolchains used by test-pkg only when the '-a' option is passed: +support/config-fragments/autobuild/arm-aarch64.config,x86_64 +support/config-fragments/autobuild/bootlin-aarch64-glibc.config,x86_64 +support/config-fragments/autobuild/bootlin-arcle-hs38-uclibc.config,x86_64 +support/config-fragments/autobuild/bootlin-armv7-musl.config,x86_64 +support/config-fragments/autobuild/bootlin-m68k-68040-uclibc.config,x86_64 +support/config-fragments/autobuild/bootlin-m68k-5208-uclibc.config,x86_64 +support/config-fragments/autobuild/bootlin-microblazeel-uclibc.config,x86_64 +support/config-fragments/autobuild/bootlin-mipsel-uclibc.config,x86_64 +support/config-fragments/autobuild/bootlin-mipsel32r6-glibc.config,x86_64 +support/config-fragments/autobuild/bootlin-nios2-glibc.config,x86_64 +support/config-fragments/autobuild/bootlin-openrisc-uclibc.config,x86_64 +support/config-fragments/autobuild/bootlin-powerpc64le-power8-glibc.config,x86_64 +support/config-fragments/autobuild/bootlin-powerpc-e500mc-uclibc.config,x86_64 +support/config-fragments/autobuild/bootlin-riscv32-glibc.config,x86_64 +support/config-fragments/autobuild/bootlin-riscv64-glibc.config,x86_64 +support/config-fragments/autobuild/bootlin-riscv64-musl.config,x86_64 +support/config-fragments/autobuild/bootlin-s390x-z13-glibc.config,x86_64 +support/config-fragments/autobuild/bootlin-sh4-uclibc.config,x86_64 +support/config-fragments/autobuild/bootlin-sparc-uclibc.config,x86_64 +support/config-fragments/autobuild/bootlin-sparc64-glibc.config,x86_64 +support/config-fragments/autobuild/bootlin-x86-i686-musl.config,x86_64 +support/config-fragments/autobuild/bootlin-x86-64-glibc.config,x86_64 +support/config-fragments/autobuild/bootlin-x86-64-uclibc.config,x86_64 +support/config-fragments/autobuild/bootlin-xtensa-uclibc.config,x86_64 +support/config-fragments/autobuild/br-arc-full-internal.config,any +support/config-fragments/autobuild/br-arc-internal-glibc.config,any +support/config-fragments/autobuild/br-arm-basic.config,x86_64 +support/config-fragments/autobuild/br-arm-full-nothread.config,x86_64 +support/config-fragments/autobuild/br-arm-internal-full.config,any +support/config-fragments/autobuild/br-arm-internal-glibc.config,any +support/config-fragments/autobuild/br-arm-internal-musl.config,any +support/config-fragments/autobuild/br-i386-pentium4-full.config,x86_64 +support/config-fragments/autobuild/br-microblazeel-full-internal.config,any +support/config-fragments/autobuild/br-mips64-n64-full.config,x86_64 +support/config-fragments/autobuild/br-mips64r6-el-hf-glibc.config,x86_64 +support/config-fragments/autobuild/br-powerpc-603e-basic-cpp.config,x86_64 +support/config-fragments/autobuild/br-powerpc64-power7-glibc.config,x86_64 +support/config-fragments/autobuild/br-powerpc-internal-full.config,any +support/config-fragments/autobuild/br-riscv64-full-internal.config,any +support/config-fragments/autobuild/br-s390x-z13-internal-glibc.config,any +support/config-fragments/autobuild/br-xtensa-full-internal.config,any +support/config-fragments/autobuild/linaro-aarch64.config,x86 +support/config-fragments/autobuild/linaro-aarch64-be.config,x86 +support/config-fragments/autobuild/linaro-arm.config,x86 +support/config-fragments/autobuild/sourcery-mips64.config,x86 +support/config-fragments/autobuild/sourcery-mips.config,x86 diff --git a/support/config-fragments/minimal.config b/support/config-fragments/minimal.config new file mode 100644 index 00000000..3430fcce --- /dev/null +++ b/support/config-fragments/minimal.config @@ -0,0 +1,7 @@ +# This config fragment disables Buildroot options that are turned on by +# default, in order to arrive at minimal build time. +BR2_INIT_NONE=y +BR2_SYSTEM_BIN_SH_NONE=y +# BR2_PACKAGE_BUSYBOX is not set +# BR2_TARGET_ROOTFS_TAR is not set +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y diff --git a/support/dependencies/check-host-asciidoc.sh b/support/dependencies/check-host-asciidoc.sh new file mode 100755 index 00000000..fc5fcba4 --- /dev/null +++ b/support/dependencies/check-host-asciidoc.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +candidate="$1" #ignored + +asciidoc=`which asciidoc` +if [ ! -x "$asciidoc" ]; then + # echo nothing: no suitable asciidoc found + exit 1 +fi + +# Output of 'asciidoc --version' examples: +# asciidoc 8.6.7 +version=`$asciidoc --version | cut -d\ -f2` +major=`echo "$version" | cut -d. -f1` +minor=`echo "$version" | cut -d. -f2` +bugfix=`echo "$version" | cut -d. -f3` + +# To generate the manual, we need asciidoc >= 8.6.3 +major_min=8 +minor_min=6 +bugfix_min=3 +if [ $major -gt $major_min ]; then + echo $asciidoc +else + if [ $major -eq $major_min -a $minor -ge $minor_min ]; then + echo $asciidoc + else + if [ $major -eq $major_min -a $minor -eq $minor_min \ + -a $bugfix -ge $bugfix_min ]; then + echo $asciidoc + else + # echo nothing: no suitable asciidoc found + exit 1 + fi + fi +fi diff --git a/support/dependencies/check-host-bison-flex.mk b/support/dependencies/check-host-bison-flex.mk new file mode 100644 index 00000000..14a232fd --- /dev/null +++ b/support/dependencies/check-host-bison-flex.mk @@ -0,0 +1,14 @@ +# If the system lacks bison or flex, add +# dependencies to suitable host packages +# +# BR2_{BISON,FLES}_HOST_DEPENDENCY should only be used to build code +# that runs on host, e.g. Kconfig. To build code for target use plain +# host-{bison,flex}. + +ifeq ($(shell which bison 2>/dev/null),) +BR2_BISON_HOST_DEPENDENCY = host-bison +endif + +ifeq ($(shell which flex 2>/dev/null),) +BR2_FLEX_HOST_DEPENDENCY = host-flex +endif diff --git a/support/dependencies/check-host-cmake.mk b/support/dependencies/check-host-cmake.mk new file mode 100644 index 00000000..e3676903 --- /dev/null +++ b/support/dependencies/check-host-cmake.mk @@ -0,0 +1,16 @@ +# The cmake minimum version is set to either 3.18 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 +# cmake version than the one provided by the host, our +# cmake infra will catch it and build its own. +# +BR2_CMAKE_VERSION_MIN = $(BR2_HOST_CMAKE_AT_LEAST) + +BR2_CMAKE_CANDIDATES ?= cmake cmake3 +BR2_CMAKE ?= $(call suitable-host-package,cmake,\ + $(BR2_CMAKE_VERSION_MIN) $(BR2_CMAKE_CANDIDATES)) +ifeq ($(BR2_CMAKE),) +BR2_CMAKE = $(HOST_DIR)/bin/cmake +BR2_CMAKE_HOST_DEPENDENCY = host-cmake +endif diff --git a/support/dependencies/check-host-cmake.sh b/support/dependencies/check-host-cmake.sh new file mode 100755 index 00000000..fadeae9f --- /dev/null +++ b/support/dependencies/check-host-cmake.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +# prevent shift error +[ $# -lt 2 ] && exit 1 + +major_min="${1%.*}" +minor_min="${1#*.}" + +shift + +for candidate; do + + # Try to locate the candidate. Discard it if not located. + cmake=`which "${candidate}" 2>/dev/null` + [ -n "${cmake}" ] || continue + + # 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 + # Discard the candidate if no version can be obtained + version="$(${cmake} --version \ + |sed -r -e '/.* ([[:digit:]]+\.[[:digit:]]+).*$/!d;' \ + -e 's//\1/' + )" + [ -n "${version}" ] || continue + + major="${version%.*}" + minor="${version#*.}" + + if [ ${major} -gt ${major_min} ]; then + echo "${cmake}" + exit + elif [ ${major} -eq ${major_min} -a ${minor} -ge ${minor_min} ]; then + echo "${cmake}" + exit + fi +done + +# echo nothing: no suitable cmake found +exit 1 diff --git a/support/dependencies/check-host-coreutils.mk b/support/dependencies/check-host-coreutils.mk new file mode 100644 index 00000000..87a3f446 --- /dev/null +++ b/support/dependencies/check-host-coreutils.mk @@ -0,0 +1,6 @@ +# Check whether the host's coreutils are up to date enough +# to provide 'ln --relative' and 'realpath'. + +ifeq (,$(call suitable-host-package,coreutils)) +BR2_COREUTILS_HOST_DEPENDENCY = host-coreutils +endif diff --git a/support/dependencies/check-host-coreutils.sh b/support/dependencies/check-host-coreutils.sh new file mode 100755 index 00000000..4d36d749 --- /dev/null +++ b/support/dependencies/check-host-coreutils.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +# Exit on the first error +set -e + +# Does ln supports the --relative/-r option? +ln --relative --help >/dev/null 2>&1 + +# Does realpath exist? +realpath --help >/dev/null 2>&1 + +echo OK diff --git a/support/dependencies/check-host-gzip.mk b/support/dependencies/check-host-gzip.mk new file mode 100644 index 00000000..bf9a369a --- /dev/null +++ b/support/dependencies/check-host-gzip.mk @@ -0,0 +1,3 @@ +ifeq (,$(call suitable-host-package,gzip)) +BR2_GZIP_HOST_DEPENDENCY = host-gzip +endif diff --git a/support/dependencies/check-host-gzip.sh b/support/dependencies/check-host-gzip.sh new file mode 100755 index 00000000..5f344c5f --- /dev/null +++ b/support/dependencies/check-host-gzip.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +candidate="$1" # ignored + +gzip="$(which gzip)" +if [ ! -x "${gzip}" ]; then + # echo nothing: no suitable gzip found + exit 1 +fi + +# gzip displays its version string on stdout +# pigz displays its version string on stderr +version="$("${gzip}" --version 2>&1)" +case "${version}" in + (*pigz*) + # echo nothing: no suitable gzip found + exit 1 + ;; +esac + +printf "%s" "${gzip}" diff --git a/support/dependencies/check-host-lzip.mk b/support/dependencies/check-host-lzip.mk new file mode 100644 index 00000000..98a4f423 --- /dev/null +++ b/support/dependencies/check-host-lzip.mk @@ -0,0 +1,4 @@ +ifeq (,$(call suitable-host-package,lzip,$(LZCAT))) +BR2_LZIP_HOST_DEPENDENCY = host-lzip +LZCAT = $(HOST_DIR)/bin/lzip -d -c +endif diff --git a/support/dependencies/check-host-lzip.sh b/support/dependencies/check-host-lzip.sh new file mode 100755 index 00000000..4f8a2ba3 --- /dev/null +++ b/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/support/dependencies/check-host-make.mk b/support/dependencies/check-host-make.mk new file mode 100644 index 00000000..66560ee8 --- /dev/null +++ b/support/dependencies/check-host-make.mk @@ -0,0 +1,21 @@ +# Since version 2.28, glibc requires GNU Make >= 4.0 +# https://www.sourceware.org/ml/libc-alpha/2018-08/msg00003.html +# +# Set this to either 4.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 package infra will catch it and whine. +# +BR2_MAKE_VERSION_MIN = 4.0 + +BR2_MAKE ?= $(call suitable-host-package,make,\ + $(BR2_MAKE_VERSION_MIN) $(MAKE)) + +ifeq ($(BR2_MAKE),) +BR2_MAKE = $(HOST_DIR)/bin/host-make -j$(PARALLEL_JOBS) +BR2_MAKE1 = $(HOST_DIR)/bin/host-make -j1 +BR2_MAKE_HOST_DEPENDENCY = host-make +else +BR2_MAKE = $(MAKE) +BR2_MAKE1 = $(MAKE1) +endif diff --git a/support/dependencies/check-host-make.sh b/support/dependencies/check-host-make.sh new file mode 100755 index 00000000..0de7e9f6 --- /dev/null +++ b/support/dependencies/check-host-make.sh @@ -0,0 +1,37 @@ +#!/bin/sh + +# prevent shift error +[ $# -lt 2 ] && exit 1 + +major_min="${1%.*}" +minor_min="${1#*.}" + +shift + +# The host make program is already checked by dependencies.sh but we +# want to check the version number even if Buildroot is able to use +# GNU make >= 3.81 but some packages may require a more recent version. +make="$1" + +# Output of 'make --version' examples: +# GNU Make 4.2.1 +# GNU Make 4.0 +# GNU Make 3.81 +version=`$make --version 2>&1 | sed -e 's/^.* \([0-9\.]\)/\1/g' -e 's/[-\ +].*//g' -e '1q'` + +major=`echo "$version" | cut -d. -f1` +minor=`echo "$version" | cut -d. -f2` + +if [ $major -lt $major_min ]; then + # echo nothing: no suitable make found + exit 1 +fi + +if [ $major -eq $major_min -a $minor -lt $minor_min ]; then + # echo nothing: no suitable make found + exit 1 +fi + +# valid +echo $make diff --git a/support/dependencies/check-host-python3.mk b/support/dependencies/check-host-python3.mk new file mode 100644 index 00000000..50ed933a --- /dev/null +++ b/support/dependencies/check-host-python3.mk @@ -0,0 +1,8 @@ +# Since version 2.29, glibc requires python 3.4 or later to build the GNU C Library. +# https://www.sourceware.org/ml/libc-alpha/2019-01/msg00723.html + +BR2_PYTHON3_VERSION_MIN = 3.4 + +ifeq (,$(call suitable-host-package,python3,$(BR2_PYTHON3_VERSION_MIN) python3 python)) +BR2_PYTHON3_HOST_DEPENDENCY = host-python3 +endif diff --git a/support/dependencies/check-host-python3.sh b/support/dependencies/check-host-python3.sh new file mode 100755 index 00000000..17cafd28 --- /dev/null +++ b/support/dependencies/check-host-python3.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +# prevent shift error +[ $# -lt 2 ] && exit 1 + +version_min="$(echo ${1} | awk '{ split($1, v, "."); print v[1] v[2] }')" + +shift + +# The host python interpreter is already checked by dependencies.sh but +# it only check if the version is at least 2.7. +# We want to check the version number of the python3 interpreter even +# if Buildroot is able to use any version but some packages may require +# a more recent version. + +for candidate in "${@}" ; do + python3=`which $candidate 2>/dev/null` + if [ ! -x "$python3" ]; then + continue + fi + version=`$python3 -V 2>&1 | awk '{ split($2, v, "."); print v[1] v[2] }'` + + if [ $version -lt $version_min ]; then + # no suitable python3 found + continue + fi + + # suitable python3 found + echo $python3 + break +done diff --git a/support/dependencies/check-host-tar.mk b/support/dependencies/check-host-tar.mk new file mode 100644 index 00000000..07d02fd1 --- /dev/null +++ b/support/dependencies/check-host-tar.mk @@ -0,0 +1,6 @@ +TAR ?= tar + +ifeq (,$(call suitable-host-package,tar,$(TAR))) +TAR = $(HOST_DIR)/bin/tar +BR2_TAR_HOST_DEPENDENCY = host-tar +endif diff --git a/support/dependencies/check-host-tar.sh b/support/dependencies/check-host-tar.sh new file mode 100755 index 00000000..271080e3 --- /dev/null +++ b/support/dependencies/check-host-tar.sh @@ -0,0 +1,46 @@ +#!/bin/sh + +candidate="$1" + +tar=`which $candidate` +if [ ! -x "$tar" ]; then + tar=`which tar` + if [ ! -x "$tar" ]; then + # echo nothing: no suitable tar found + exit 1 + fi +fi + +# Output of 'tar --version' examples: +# tar (GNU tar) 1.15.1 +# tar (GNU tar) 1.25 +# bsdtar 2.8.3 - libarchive 2.8.3 +version=`$tar --version | head -n 1 | sed 's/^.*\s\([0-9]\+\.\S\+\).*$/\1/'` +major=`echo "$version" | cut -d. -f1` +minor=`echo "$version" | cut -d. -f2` +bugfix=`echo "$version" | cut -d. -f3` +version_bsd=`$tar --version | grep 'bsdtar'` + +# BSD tar does not have all the command-line options +if [ -n "${version_bsd}" ] ; then + # echo nothing: no suitable tar found + exit 1 +fi + +# Minimal version = 1.35 (1.35 changed devmajor/devminor for files) +# https://lists.gnu.org/archive/html/info-gnu/2023-07/msg00005.html +major_min=1 +minor_min=35 + +if [ $major -lt $major_min ]; then + # echo nothing: no suitable tar found + exit 1 +fi + +if [ $major -eq $major_min -a $minor -lt $minor_min ]; then + # echo nothing: no suitable tar found + exit 1 +fi + +# valid +echo $tar diff --git a/support/dependencies/check-host-xzcat.mk b/support/dependencies/check-host-xzcat.mk new file mode 100644 index 00000000..9a78a8f3 --- /dev/null +++ b/support/dependencies/check-host-xzcat.mk @@ -0,0 +1,7 @@ +# XZCAT is taken from BR2_XZCAT (defaults to 'xzcat') (see Makefile) +# If it is not present, build our own host-xzcat + +ifeq (,$(call suitable-host-package,xzcat,$(XZCAT))) +BR2_XZCAT_HOST_DEPENDENCY = host-xz +XZCAT = $(HOST_DIR)/bin/xzcat +endif diff --git a/support/dependencies/check-host-xzcat.sh b/support/dependencies/check-host-xzcat.sh new file mode 100755 index 00000000..10f1c456 --- /dev/null +++ b/support/dependencies/check-host-xzcat.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +candidate="$1" + +xzcat=`which $candidate 2>/dev/null` +if [ ! -x "$xzcat" ]; then + xzcat=`which xzcat 2>/dev/null` + if [ ! -x "$xzcat" ]; then + # echo nothing: no suitable xzcat found + exit 1 + fi +fi + +echo $xzcat diff --git a/support/dependencies/check-host-zstd.mk b/support/dependencies/check-host-zstd.mk new file mode 100644 index 00000000..fa595ef2 --- /dev/null +++ b/support/dependencies/check-host-zstd.mk @@ -0,0 +1,4 @@ +ifeq (,$(call suitable-host-package,zstd,$(ZSTDCAT))) +BR2_ZSTD_HOST_DEPENDENCY = host-zstd +ZSTDCAT = $(HOST_DIR)/bin/zstdcat +endif diff --git a/support/dependencies/check-host-zstd.sh b/support/dependencies/check-host-zstd.sh new file mode 100755 index 00000000..2f469c46 --- /dev/null +++ b/support/dependencies/check-host-zstd.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +candidate="$1" + +zstdcat=$(which "$candidate" 2>/dev/null) +if [ ! -x "$zstdcat" ]; then + zstdcat=$(which zstdcat 2>/dev/null) + if [ ! -x "$zstdcat" ]; then + # echo nothing: no suitable zstdcat found + exit 1 + fi +fi + +echo "$zstdcat" diff --git a/support/dependencies/dependencies.mk b/support/dependencies/dependencies.mk new file mode 100644 index 00000000..a7bb1a60 --- /dev/null +++ b/support/dependencies/dependencies.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# Check buildroot dependencies and bail out if the user's +# system is judged to be lacking.... +# +################################################################################ + +ifeq ($(BR2_FORCE_HOST_BUILD),y) +# ignore all available host packages +define suitable-host-package +endef +else +# 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 +# the path to the suitable host tool, or nothing if no suitable tool was found. +define suitable-host-package +$(if $(1),$(shell support/dependencies/check-host-$(1).sh $(2))) +endef +endif +# host utilities needs host-tar to extract the source code tarballs, so +# ensure check-host-tar.mk is included before the rest +include support/dependencies/check-host-tar.mk +-include $(sort $(filter-out %-tar.mk,$(wildcard support/dependencies/check-host-*.mk))) + +dependencies: + @MAKE="$(MAKE)" DL_TOOLS="$(sort $(DL_TOOLS_DEPENDENCIES))" \ + $(TOPDIR)/support/dependencies/dependencies.sh + +################################################################################ +# +# Toplevel Makefile options +# +################################################################################ +.PHONY: dependencies diff --git a/support/dependencies/dependencies.sh b/support/dependencies/dependencies.sh new file mode 100755 index 00000000..6d5fc360 --- /dev/null +++ b/support/dependencies/dependencies.sh @@ -0,0 +1,339 @@ +#!/bin/sh +# vi: set sw=4 ts=4: + +export LC_ALL=C +TAB="$(printf '\t')" +NL=" +" + +# Verify that grep works +echo "WORKS" | grep "WORKS" >/dev/null 2>&1 +if test $? != 0 ; then + echo + echo "grep doesn't work" + exit 1 +fi + +# Sanity check for CWD in LD_LIBRARY_PATH +case ":${LD_LIBRARY_PATH:-unset}:" in +(*::*|*:.:*) + echo + echo "You seem to have the current working directory in your" + echo "LD_LIBRARY_PATH environment variable. This doesn't work." + exit 1 + ;; +esac + +# Sanity check for CWD in PATH. Having the current working directory +# in the PATH makes various packages (e.g. toolchain, coreutils...) +# build process break. +# PATH should not contain a newline, otherwise it fails in spectacular +# ways as soon as PATH is referenced in a package rule +# An empty PATH is technically possible, but in practice we would not +# even arrive here if that was the case. +case ":${PATH:-unset}:" in +(*::*|*:.:*) + echo + echo "You seem to have the current working directory in your" + echo "PATH environment variable. This doesn't work." + exit 1 + ;; +(*" "*|*"${TAB}"*|*"${NL}"*) + printf "\n" + printf "Your PATH contains spaces, TABs, and/or newline (\\\n) characters.\n" + printf "This doesn't work. Fix you PATH.\n" + exit 1 + ;; +esac + +check_prog_host() +{ + prog="$1" + if ! which $prog > /dev/null ; then + echo >&2 + echo "You must install '$prog' on your build machine" >&2 + exit 1 + fi +} + +# Verify that which is installed +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 + echo + echo "You must install 'make' on your build machine"; + exit 1; +fi; +MAKE_VERSION=$($MAKE --version 2>&1 | sed -e 's/^.* \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q') +if [ -z "$MAKE_VERSION" ] ; then + echo + echo "You must install 'make' on your build machine"; + exit 1; +fi; +MAKE_MAJOR=$(echo $MAKE_VERSION | sed -e "s/\..*//g") +MAKE_MINOR=$(echo $MAKE_VERSION | sed -e "s/^$MAKE_MAJOR\.//g" -e "s/\..*//g" -e "s/[a-zA-Z].*//g") +if [ $MAKE_MAJOR -lt 3 ] || [ $MAKE_MAJOR -eq 3 -a $MAKE_MINOR -lt 81 ] ; then + echo + echo "You have make '$MAKE_VERSION' installed. GNU make >=3.81 is required" + exit 1; +fi; + +# Check host gcc +COMPILER=$(which $HOSTCC_NOCCACHE 2> /dev/null) +if [ -z "$COMPILER" ] ; then + COMPILER=$(which cc 2> /dev/null) +fi; +if [ -z "$COMPILER" ] ; then + echo + echo "You must install 'gcc' on your build machine"; + exit 1; +fi; + +COMPILER_VERSION=$($COMPILER -v 2>&1 | sed -n '/^gcc version/p' | + sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q') +if [ -z "$COMPILER_VERSION" ] ; then + echo + echo "You must install 'gcc' on your build machine"; + exit 1; +fi; +COMPILER_MAJOR=$(echo $COMPILER_VERSION | sed -e "s/\..*//g") +COMPILER_MINOR=$(echo $COMPILER_VERSION | sed -e "s/^$COMPILER_MAJOR\.//g" -e "s/\..*//g") +if [ $COMPILER_MAJOR -lt 4 -o $COMPILER_MAJOR -eq 4 -a $COMPILER_MINOR -lt 8 ] ; then + echo + echo "You have gcc '$COMPILER_VERSION' installed. gcc >= 4.8 is required" + exit 1; +fi; + +# check for host CXX +CXXCOMPILER=$(which $HOSTCXX_NOCCACHE 2> /dev/null) +if [ -z "$CXXCOMPILER" ] ; then + CXXCOMPILER=$(which c++ 2> /dev/null) +fi + +if [ -z "$CXXCOMPILER" ] ; then + echo + echo "You may have to install 'g++' on your build machine" +fi +if [ ! -z "$CXXCOMPILER" ] ; then + CXXCOMPILER_VERSION=$($CXXCOMPILER -v 2>&1 | sed -n '/^gcc version/p' | + sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q') + if [ -z "$CXXCOMPILER_VERSION" ] ; then + echo + echo "You may have to install 'g++' on your build machine" + fi +fi + +if [ -n "$CXXCOMPILER_VERSION" ] ; then + CXXCOMPILER_MAJOR=$(echo $CXXCOMPILER_VERSION | sed -e "s/\..*//g") + CXXCOMPILER_MINOR=$(echo $CXXCOMPILER_VERSION | sed -e "s/^$CXXCOMPILER_MAJOR\.//g" -e "s/\..*//g") + if [ $CXXCOMPILER_MAJOR -lt 4 -o $CXXCOMPILER_MAJOR -eq 4 -a $CXXCOMPILER_MINOR -lt 8 ] ; then + echo + echo "You have g++ '$CXXCOMPILER_VERSION' installed. g++ >= 4.8 is required" + exit 1 + fi +fi + +# Check bash +# We only check bash is available, setting SHELL appropriately is done +# in the top-level Makefile, and we mimick the same sequence here +if [ -n "${BASH}" ]; then : +elif [ -x /bin/bash ]; then : +elif [ -z "$( sh -c 'echo $BASH' )" ]; then + echo + echo "You must install 'bash' on your build machine" + exit 1 +fi + +# Check that a few mandatory programs are installed +missing_progs="no" +for prog in perl tar wget cpio unzip rsync bc cmp find xargs ${DL_TOOLS} ; do + if ! which $prog > /dev/null ; then + echo "You must install '$prog' on your build machine"; + missing_progs="yes" + if test $prog = "svn" ; then + echo " svn is usually part of the subversion package in your distribution" + elif test $prog = "hg" ; then + echo " hg is usually part of the mercurial package in your distribution" + elif test $prog = "zcat" ; then + echo " zcat is usually part of the gzip package in your distribution" + elif test $prog = "bzcat" ; then + echo " bzcat is usually part of the bzip2 package in your distribution" + elif test $prog = "cmp" ; then + echo " cmp is usually part of the diffutils package in your distribution" + elif test $prog = "find" ; then + echo " find is usually part of the findutils package in your distribution" + elif test $prog = "xargs" ; then + echo " xargs is usually part of the findutils package in your distribution" + fi + fi + + # we need git >= 2.0.0 for shallow clones / vendoring + if test $prog = "git" ; then + GIT_VERSION="$(git --version | sed -n 's/^git version \(.*\)/\1/p')" + GIT_MAJOR="$(echo "${GIT_VERSION}" | cut -d . -f 1)" + if [ "${GIT_MAJOR}" -lt 2 ]; then + echo "You have git '${GIT_VERSION}' installed. Git >= 2.0.0 is required" + exit 1 + fi + fi +done + +if test "${missing_progs}" = "yes" ; then + exit 1 +fi + +PATCH_VERSION="$(patch -v 2>/dev/null | sed -n 's/^GNU patch \(.*\)/\1/p')" +if [ -z "${PATCH_VERSION}" ] ; then + echo + echo "You must install GNU patch" + exit 1 +fi +PATCH_MAJOR="$(echo "${PATCH_VERSION}" | cut -d . -f 1)" +PATCH_MINOR="$(echo "${PATCH_VERSION}" | cut -d . -f 2)" +if [ "${PATCH_MAJOR}" -lt 2 ] || [ "${PATCH_MAJOR}" -eq 2 -a "${PATCH_MINOR}" -lt 7 ] ; then + echo + echo "You have GNU patch '${PATCH_VERSION}' installed. GNU patch >= 2.7 is required" + exit 1; +fi + +if grep -q ^BR2_NEEDS_HOST_UTF8_LOCALE=y $BR2_CONFIG ; then + if ! which locale > /dev/null ; then + echo + echo "You need locale support on your build machine to build a toolchain supporting locales" + exit 1 ; + fi + if ! locale -a | grep -q -i -E 'utf-?8$' ; then + echo + echo "You need at least one UTF8 locale to build a toolchain supporting locales" + exit 1 ; + fi +fi + +if grep -q ^BR2_NEEDS_HOST_JAVA=y $BR2_CONFIG ; then + check_prog_host "java" + JAVA_GCJ=$(java -version 2>&1 | grep gcj) + if [ ! -z "$JAVA_GCJ" ] ; then + echo + echo "$JAVA_GCJ is not sufficient to compile your package selection." + echo "Please install an OpenJDK/IcedTea/Oracle Java." + exit 1 ; + fi +fi + +if grep -q ^BR2_HOSTARCH_NEEDS_IA32_LIBS=y $BR2_CONFIG ; then + if test ! -f /lib/ld-linux.so.2 ; then + echo + echo "Your Buildroot configuration uses pre-built tools for the x86 architecture," + echo "but your build machine uses the x86-64 architecture without the 32 bits compatibility" + echo "library." + echo "If you're running a Debian/Ubuntu distribution, install the libc6-i386," + echo "lib32stdc++6, and lib32z1 packages (or alternatively libc6:i386," + echo "libstdc++6:i386, and zlib1g:i386)." + echo "If you're running a RedHat/Fedora distribution, install the glibc.i686 and" + echo "zlib.i686 packages." + echo "If you're running an ArchLinux distribution, install lib32-glibc." + echo "For other distributions, refer to the documentation on how to install the 32 bits" + echo "compatibility libraries." + exit 1 + fi +fi + +if grep -q ^BR2_HOSTARCH_NEEDS_IA32_COMPILER=y $BR2_CONFIG ; then + if ! echo "int main(void) {}" | gcc -m32 -x c - -o /dev/null 2>/dev/null; then + echo + echo "Your Buildroot configuration needs a compiler capable of building 32 bits binaries." + echo "If you're running a Debian/Ubuntu distribution, install the gcc-multilib package." + echo "For other distributions, refer to their documentation." + exit 1 + fi + + if ! echo "int main(void) {}" | g++ -m32 -x c++ - -o /dev/null 2>/dev/null; then + echo + echo "Your Buildroot configuration needs a compiler capable of building 32 bits binaries." + echo "If you're running a Debian/Ubuntu distribution, install the g++-multilib package." + echo "For other distributions, refer to their documentation." + exit 1 + fi +fi + +if grep -q ^BR2_NEEDS_HOST_GCC_PLUGIN_SUPPORT=y $BR2_CONFIG ; then + if ! echo "#include " | $HOSTCXX_NOCCACHE -I$($HOSTCXX_NOCCACHE -print-file-name=plugin)/include -x c++ -c - -o /dev/null ; then + echo + echo "Your Buildroot configuration needs a host compiler capable of building gcc plugins." + echo "If you're running a Debian/Ubuntu distribution, install gcc-X-plugin-dev package." + echo "For other distributions, refer to their documentation." + exit 1 ; + fi +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 English" # Used by host-libxml-parser-perl +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 +required_perl_modules="$required_perl_modules FindBin" # Used by (host-)libopenssl +required_perl_modules="$required_perl_modules IPC::Cmd" # Used by (host-)libopenssl + +if grep -q ^BR2_PACKAGE_LIBOPENSSL=y $BR2_CONFIG && grep -q ^BR2_s390x=y $BR2_CONFIG ; then + required_perl_modules="$required_perl_modules bigint" +fi + +if grep -q ^BR2_PACKAGE_MOSH=y $BR2_CONFIG ; then + required_perl_modules="$required_perl_modules diagnostics" +fi + +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 + +if grep -q ^BR2_PACKAGE_NETSURF=y $BR2_CONFIG ; then + required_perl_modules="$required_perl_modules Digest::MD5" +fi + +if grep -q ^BR2_PACKAGE_WHOIS=y $BR2_CONFIG ; then + required_perl_modules="$required_perl_modules autodie" +fi + +if grep -q -E '^BR2_PACKAGE_(WEBKITGTK|WPEWEBKIT)=y' $BR2_CONFIG ; then + required_perl_modules="${required_perl_modules} JSON::PP" +fi + +if grep -q -E '^BR2_(PACKAGE_ACE|TARGET_SYSLINUX)=y' $BR2_CONFIG ; then + required_perl_modules="$required_perl_modules FileHandle" +fi + +# This variable will keep the modules that are missing in your system. +missing_perl_modules="" + +if grep -q ^BR2_PACKAGE_LIBXCRYPT=y $BR2_CONFIG ; then + # open cannot be used with require + if ! perl -e "use open ':std'" > /dev/null 2>&1 ; then + missing_perl_modules="$missing_perl_modules open" + fi +fi + +for pm in $required_perl_modules ; do + if ! perl -e "require $pm" > /dev/null 2>&1 ; then + missing_perl_modules="$missing_perl_modules $pm" + fi +done + +if [ -n "$missing_perl_modules" ] ; then + echo "Your Perl installation is not complete enough; at least the following" + echo "modules are missing:" + echo + for pm in $missing_perl_modules ; do + printf "\t $pm\n" + done + echo + exit 1 +fi diff --git a/support/docker/Dockerfile b/support/docker/Dockerfile new file mode 100644 index 00000000..8c6e2add --- /dev/null +++ b/support/docker/Dockerfile @@ -0,0 +1,68 @@ +# This Dockerfile generates the docker image that gets used by Gitlab CI +# To build it (YYYYMMDD.HHMM is the current date and time in UTC): +# docker build -t registry.gitlab.com/buildroot.org/buildroot/base:YYYYMMDD.HHMM support/docker +# docker push registry.gitlab.com/buildroot.org/buildroot/base:YYYYMMDD.HHMM + +# We use a specific tag for the base image *and* the corresponding date +# for the repository., so do not forget to update the apt-sources.list +# file that is shipped next to this Dockerfile. +FROM debian:bullseye-20230202 + +LABEL maintainer="Buildroot mailing list " \ + vendor="Buildroot" \ +description="Container with everything needed to run Buildroot" + +# Setup environment +ENV DEBIAN_FRONTEND noninteractive + +# This repository can be a bit slow at times. Don't panic... +COPY apt-sources.list /etc/apt/sources.list + +# The container has no package lists, so need to update first +RUN dpkg --add-architecture i386 && \ + apt-get -o APT::Retries=3 update -y +RUN apt-get -o APT::Retries=3 install -y --no-install-recommends \ + bc \ + build-essential \ + bzr \ + ca-certificates \ + cmake \ + cpio \ + cvs \ + file \ + g++-multilib \ + git \ + libc6:i386 \ + libncurses5-dev \ + locales \ + mercurial \ + openssh-server \ + python3 \ + python3-flake8 \ + python3-magic \ + python3-nose2 \ + python3-pexpect \ + python3-pytest \ + qemu-system-arm \ + qemu-system-misc \ + qemu-system-x86 \ + rsync \ + shellcheck \ + subversion \ + unzip \ + wget \ + && \ + apt-get -y autoremove && \ + apt-get -y clean + +# To be able to generate a toolchain with locales, enable one UTF-8 locale +RUN sed -i 's/# \(en_US.UTF-8\)/\1/' /etc/locale.gen && \ + /usr/sbin/locale-gen + +RUN useradd -ms /bin/bash br-user && \ + chown -R br-user:br-user /home/br-user + +USER br-user +WORKDIR /home/br-user +ENV HOME /home/br-user +ENV LC_ALL en_US.UTF-8 diff --git a/support/docker/apt-sources.list b/support/docker/apt-sources.list new file mode 100644 index 00000000..849996d9 --- /dev/null +++ b/support/docker/apt-sources.list @@ -0,0 +1,4 @@ +# Latest just before 20230207T102800Z: +deb [check-valid-until=no] http://snapshot.debian.org/archive/debian/20230206T092119Z/ bullseye main +deb [check-valid-until=no] http://snapshot.debian.org/archive/debian-security/20230206T092119Z/ bullseye-security main +deb [check-valid-until=no] http://snapshot.debian.org/archive/debian/20230206T092119Z/ bullseye-updates main diff --git a/support/download/bzr b/support/download/bzr new file mode 100755 index 00000000..6f77bc28 --- /dev/null +++ b/support/download/bzr @@ -0,0 +1,65 @@ +#!/usr/bin/env bash + +# We want to catch any unexpected failure, and exit immediately +set -e + +# Download helper for bzr, to be called from the download wrapper script +# +# Options: +# -q Be quiet +# -o FILE Generate archive in FILE. +# -u URI Clone from repository at URI. +# -c CSET Use changeset (or revision) CSET. +# -n NAME Use basename NAME. +# +# Environment: +# BZR : the bzr command to call + + +quiet= +while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do + case "${OPT}" in + q) quiet=-q;; + o) output="${OPTARG}";; + u) uri="${OPTARG}";; + c) cset="${OPTARG}";; + n) basename="${OPTARG}";; + :) printf "option '%s' expects a mandatory argument\n" "${OPTARG}"; exit 1;; + \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;; + esac +done + +shift $((OPTIND-1)) # 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() { + if [ -z "${quiet}" ]; then + printf '%s ' ${BZR} "${@}"; printf '\n' + fi + _plain_bzr "$@" +} +# Note: please keep command below aligned with what is printed above +_plain_bzr() { + eval ${BZR} "${@}" +} + +# --per-file-timestamps comes with bzr-2.2 (released August 2010), +# so only pass it if bzr is recent enough. We compute versions as: +# major*1000 + minor +bzr_min_version=2002 +bzr_version=$(($(bzr --version | + sed -r -n 's/^Bazaar \(bzr\) ([[:digit:]]+)\.([[:digit:]]+)\..*$/\1*1000+\2/p') + )) + +# If the version is recent enough, we can generate reproducible +# archives; otherwise, we just hope for the best (as it would +# be downloaded from the BR mirror if what we generate here does +# not match the hash we have for it). +if [ ${bzr_version} -ge ${bzr_min_version} ]; then + timestamp_opt="--per-file-timestamps" +fi + +_bzr export ${quiet} --root="'${basename}/'" --format=tgz \ + ${timestamp_opt} - "${@}" "'${uri}'" -r "'${cset}'" \ + >"${output}" diff --git a/support/download/cargo-post-process b/support/download/cargo-post-process new file mode 100755 index 00000000..12198051 --- /dev/null +++ b/support/download/cargo-post-process @@ -0,0 +1,51 @@ +#!/usr/bin/env bash + +set -e + +# shellcheck source=helpers source-path=SCRIPTDIR +. "${0%/*}/helpers" + +if [ "${BR_CARGO_MANIFEST_PATH}" ]; then + printf 'Setting BR_CARGO_MANIFEST_PATH is no longer supported; use post-process options.\n' >&2 + exit 1 +fi + +manifest=Cargo.toml +while getopts "n:o:m:" OPT; do + case "${OPT}" in + o) output="${OPTARG}";; + n) base_name="${OPTARG}";; + m) manifest="${OPTARG}";; + :) error "option '%s' expects a mandatory argument\n" "${OPTARG}";; + \?) error "unknown option '%s'\n" "${OPTARG}";; + esac +done + +# Already vendored tarball, nothing to do +if tar tf "${output}" | grep -q "^[^/]*/VENDOR" ; then + exit 0 +fi + +post_process_unpack "${base_name}" "${output}" + +# Do the Cargo vendoring +pushd "${base_name}" > /dev/null + +# Create the local .cargo/config with vendor info +mkdir -p .cargo/ +mkdir -p "${CARGO_HOME}" +flock "${CARGO_HOME}"/.br-lock \ +cargo vendor \ + --manifest-path "${manifest}" \ + --locked VENDOR \ + > .cargo/config + +# "cargo vendor' outputs on stderr a message directing to add some data +# to the project's .cargo/config.toml, data that it outputs on stdout. +# Since we redirect stdout to .cargo/config.toml, the message on stderr +# gets confusing, so instruct the user that it's been handled. +printf '(note: .cargo/config.toml automatically updated by Buildroot)\n\n' + +popd > /dev/null + +post_process_repack "$(pwd)" "${base_name}" "${output}" diff --git a/support/download/check-hash b/support/download/check-hash new file mode 100755 index 00000000..d18ec8b1 --- /dev/null +++ b/support/download/check-hash @@ -0,0 +1,116 @@ +#!/usr/bin/env bash +set -e + +# Helper to check a file matches its known hash +# Call it with: +# $1: the full path to the temporary file that was downloaded, and +# that is to be checked +# $2: the final basename of the file, to which it will be ultimately +# saved as, to be able to match it to the corresponding hashes +# in the .hash file +# $*: the paths of the files containing all the expected hashes +# +# Exit codes: +# 0: the hash file exists and the file to check matches all its hashes, +# or the hash file does not exist +# 1: unknown command-line option +# 2: the hash file exists and the file to check does not match at least +# one of its hashes +# 3: the hash file exists and there was no hash to check the file against +# 4: the hash file exists and at least one hash type is unknown + +while getopts :q OPT; do + case "${OPT}" in + q) exec >/dev/null;; + \?) exit 1;; + esac +done +shift $((OPTIND-1)) + +file="${1}" +base="${2}" +shift 2 +declare -a h_files=( "${@}" ) + +# Check one hash for a file +# $1: algo hash +# $2: known hash +# $3: file (full path) +# $4: hash file (full path) +check_one_hash() { + _h="${1}" + _known="${2}" + _file="${3}" + _h_file="${4}" + + # Note: md5 is supported, but undocumented on purpose. + # Note: sha3 is not supported, since there is currently no implementation + # (the NIST has yet to publish the parameters). + case "${_h}" in + md5|sha1) ;; + sha224|sha256|sha384|sha512) ;; + *) # Unknown hash, exit with error + printf "ERROR: unknown hash '%s' for '%s'\n" \ + "${_h}" "${base}" >&2 + exit 4 + ;; + esac + + # Do the hashes match? + _hash="$( "${_h}sum" "${_file}" |cut -d ' ' -f 1 )" + if [ "${_hash}" = "${_known}" ]; then + printf "%s: OK (%s: %s)\n" "${base}" "${_h}" "${_hash}" + return 0 + fi + + printf "ERROR: while checking hashes from %s\n" "${_h_file}" >&2 + printf "ERROR: %s has wrong %s hash:\n" "${base}" "${_h}" >&2 + printf "ERROR: expected: %s\n" "${_known}" >&2 + printf "ERROR: got : %s\n" "${_hash}" >&2 + printf "ERROR: Incomplete download, or man-in-the-middle (MITM) attack\n" >&2 + + exit 2 +} + +# Do we know one or more hashes for that file? +nb_h_files=0 +nb_checks=0 +for h_file in "${h_files[@]}"; do + [ -f "${h_file}" ] || continue + : $((nb_h_files++)) + # mapfile reads all lines, even the last one if it is missing a \n + mapfile -t hash_lines <"${h_file}" + for hash_line in "${hash_lines[@]}"; do + read -r t h f <<<"${hash_line}" + case "${t}" in + ''|'#'*) + # Skip comments and empty lines + continue + ;; + *) + if [ "${f}" = "${base}" ]; then + check_one_hash "${t}" "${h}" "${file}" "${h_file}" + : $((nb_checks++)) + fi + ;; + esac + done +done + +# shellcheck disable=SC2086 # nb_h_files is a non-empty int +if [ ${nb_h_files} -eq 0 ]; then + printf "WARNING: no hash file for %s\n" "${base}" >&2 + exit 0 +fi + +# shellcheck disable=SC2086 # nb_checks is a non-empty int +if [ ${nb_checks} -eq 0 ]; then + case " ${BR_NO_CHECK_HASH_FOR} " in + *" ${base} "*) + # File explicitly has no hash + exit 0 + ;; + esac + printf "ERROR: No hash found for %s\n" "${base}" >&2 + exit 3 +fi diff --git a/support/download/curl b/support/download/curl new file mode 100755 index 00000000..bea4485a --- /dev/null +++ b/support/download/curl @@ -0,0 +1,45 @@ +#!/usr/bin/env bash + +# We want to catch any unexpected failure, and exit immediately +set -e + +# Download helper for curl, to be called from the download wrapper script +# +# Options: +# -q Be quiet. +# -o FILE Save into file FILE. +# -f FILENAME The filename of the tarball to get at URL +# -u URL Download file at URL. +# +# Environment: +# CURL : the curl command to call + +quiet= +while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do + case "${OPT}" in + q) quiet=-s;; + o) output="${OPTARG}";; + f) filename="${OPTARG}";; + u) url="${OPTARG}";; + :) printf "option '%s' expects a mandatory argument\n" "${OPTARG}"; exit 1;; + \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;; + esac +done + +shift $((OPTIND-1)) # 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) +_curl() { + if [ -z "${quiet}" ]; then + printf '%s ' "${CURL}" "${@}"; printf '\n' + fi + _plain_curl "$@" +} +# Note: please keep command below aligned with what is printed above +_plain_curl() { + # shellcheck disable=SC2086 # We want splitting + eval ${CURL} "${@}" +} + +_curl ${quiet} "${@}" --output "'${output}'" "'${url}/${filename}'" diff --git a/support/download/cvs b/support/download/cvs new file mode 100755 index 00000000..a6840fea --- /dev/null +++ b/support/download/cvs @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +# We want to catch any unexpected failure, and exit immediately +set -e + +# Download helper for cvs, to be called from the download wrapper script +# +# Options: +# -q Be quiet +# -o FILE Generate archive in FILE. +# -u URI Checkout from repository at URI. +# -c REV Use revision REV. +# -N RAWNAME Use rawname (aka module name) RAWNAME. +# -n NAME Use basename NAME. +# +# Environment: +# CVS : the cvs command to call + +quiet= +while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do + case "${OPT}" in + q) quiet=-Q;; + o) output="${OPTARG}";; + u) uri="${OPTARG#*://}";; + c) rev="${OPTARG}";; + N) rawname="${OPTARG}";; + n) basename="${OPTARG}";; + :) printf "option '%s' expects a mandatory argument\n" "${OPTARG}"; exit 1;; + \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;; + esac +done + +shift $((OPTIND-1)) # 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). +# If the CVS server is deadlocked, the client will never return (cfr. +# http://autobuild.buildroot.net/results/23d/23d1034b33d0354de15de2ec4a8ccd0603e8db78/build-end.log +# ). Since nobody sane will put large code bases in CVS, a timeout of +# 10 minutes should do the trick. +_cvs() { + if [ -z "${quiet}" ]; then + printf '%s ' timeout 10m "${CVS}" "${@}"; printf '\n' + fi + _plain_cvs "$@" +} +# Note: please keep command below aligned with what is printed above +_plain_cvs() { + # shellcheck disable=SC2086 # We really want word splitting in CVS + eval timeout 10m ${CVS} "${@}" +} + +if [[ ${rev} =~ ^[0-9] ]]; then + # Date, because a tag or a branch cannot begin with a number + select="-D" +else + # Tag or branch + select="-r" +fi + +# The absence of an initial : on ${uri} means access method undefined +if [[ ! "${uri}" =~ ^: ]]; then + # defaults to anonymous pserver + uri=":pserver:anonymous@${uri}" +fi + +export TZ=UTC +_cvs ${quiet} -z3 -d"'${uri}'" \ + co "${@}" -d "'${basename}'" ${select} "'${rev}'" -P "'${rawname}'" + +${TAR} czf "${output}" "${basename}" diff --git a/support/download/dl-wrapper b/support/download/dl-wrapper new file mode 100755 index 00000000..5445aad5 --- /dev/null +++ b/support/download/dl-wrapper @@ -0,0 +1,242 @@ +#!/usr/bin/env bash + +# This script is a wrapper to the other download backends. +# Its role is to ensure atomicity when saving downloaded files +# back to BR2_DL_DIR, and not clutter BR2_DL_DIR with partial, +# failed downloads. + +# To avoid cluttering BR2_DL_DIR, we download to a trashable +# location, namely in $(BUILD_DIR). +# Then, we move the downloaded file to a temporary file in the +# same directory as the final output file. +# This allows us to finally atomically rename it to its final +# name. +# If anything goes wrong, we just remove all the temporaries +# created so far. + +# We want to catch any unexpected failure, and exit immediately. +set -e + +# shellcheck source=helpers source-path=SCRIPTDIR +. "${0%/*}/helpers" + +export BR_BACKEND_DL_GETOPTS=":hc:d:o:n:N:H:lru:qf:e" + +main() { + local OPT OPTARG + local backend output large_file recurse quiet rc + local -a uris hfiles backend_opts post_process_opts + + # Parse our options; anything after '--' is for the backend + while getopts ":c:d:D:o:n:N:H:lrf:u:qp:P:" OPT; do + case "${OPT}" in + c) cset="${OPTARG}";; + d) dl_dir="${OPTARG}";; + D) old_dl_dir="${OPTARG}";; + o) output="${OPTARG}";; + n) raw_base_name="${OPTARG}";; + N) base_name="${OPTARG}";; + H) hfiles+=( "${OPTARG}" );; + l) large_file="-l";; + r) recurse="-r";; + f) filename="${OPTARG}";; + u) uris+=( "${OPTARG}" );; + p) post_process="${OPTARG}";; + P) post_process_opts+=( "${OPTARG}" );; + q) quiet="-q";; + :) error "option '%s' expects a mandatory argument\n" "${OPTARG}";; + \?) error "unknown option '%s'\n" "${OPTARG}";; + esac + done + + # Forget our options, and keep only those for the backend + shift $((OPTIND-1)) + + if [ -z "${output}" ]; then + error "no output specified, use -o\n" + fi + + # Legacy handling: check if the file already exists in the global + # download directory. If it does, hard-link it. If it turns out it + # was an incorrect download, we'd still check it below anyway. + # If we can neither link nor copy, fallback to doing a download. + # NOTE! This is not atomic, is subject to TOCTTOU, but the whole + # dl-wrapper runs under an flock, so we're safe. + # shellcheck disable=SC2166 # -a works in this case + if [ ! -e "${output}" -a -e "${old_dl_dir}/${filename}" ]; then + ln "${old_dl_dir}/${filename}" "${output}" || \ + cp "${old_dl_dir}/${filename}" "${output}" || \ + true + fi + + # If the output file already exists and: + # - there's no .hash file: do not download it again and exit promptly + # - matches all its hashes: do not download it again and exit promptly + # - fails at least one of its hashes: force a re-download + # - there's no hash (but a .hash file): consider it a hard error + if [ -e "${output}" ]; then + if support/download/check-hash ${quiet} "${output}" "${output##*/}" "${hfiles[@]}"; then + exit 0 + elif [ ${?} -ne 2 ]; then + # Do not remove the file, otherwise it might get re-downloaded + # from a later location (i.e. primary -> upstream -> mirror). + # Do not print a message, check-hash already did. + exit 1 + fi + rm -f "${output}" + warn "Re-downloading '%s'...\n" "${output##*/}" + fi + + # Look through all the uris that we were given to download the package + # source + download_and_check=0 + rc=1 + for uri in "${uris[@]}"; do + backend_urlencode="${uri%%+*}" + backend="${backend_urlencode%|*}" + case "${backend}" in + git|svn|cvs|bzr|file|scp|hg|sftp) ;; + ftp|ftps) backend="curl" ;; + *) backend="wget" ;; + esac + uri=${uri#*+} + + urlencode=${backend_urlencode#*|} + # urlencode must be "urlencode" + [ "${urlencode}" != "urlencode" ] && urlencode="" + + # tmpd is a temporary directory in which backends may store + # intermediate by-products of the download. + # tmpf is the file in which the backends should put the downloaded + # content. + # tmpd is located in $(BUILD_DIR), so as not to clutter the (precious) + # $(BR2_DL_DIR) + # We let the backends create tmpf, so they are able to set whatever + # permission bits they want (although we're only really interested in + # the executable bit.) + tmpd="$(mktemp -d "${BUILD_DIR}/.${output##*/}.XXXXXX")" + tmpf="${tmpd}/output" + + # shellcheck disable=SC2206 # all three are dash-options + backend_opts=( ${quiet} ${large_file} ${recurse} ) + if [ "${urlencode}" ]; then + backend_opts+=( -e ) + fi + + # Helpers expect to run in a directory that is *really* trashable, so + # they are free to create whatever files and/or sub-dirs they might need. + # Doing the 'cd' here rather than in all backends is easier. + cd "${tmpd}" + + # If the backend fails, we can just remove the content of the temporary + # directory to remove all the cruft it may have left behind, and try + # the next URI until it succeeds. Once out of URI to try, we need to + # cleanup and exit. + if ! "${OLDPWD}/support/download/${backend}" \ + -c "${cset}" \ + -d "${dl_dir}" \ + -n "${raw_base_name}" \ + -N "${base_name}" \ + -f "${filename}" \ + -u "${uri}" \ + -o "${tmpf}" \ + "${backend_opts[@]}" \ + -- \ + "${@}" + then + # cd back to keep path coherence + cd "${OLDPWD}" + rm -rf "${tmpd}" + continue + fi + + if [ -n "${post_process}" ] ; then + if ! "${OLDPWD}/support/download/${post_process}-post-process" \ + -o "${tmpf}" \ + -n "${raw_base_name}" \ + "${post_process_opts[@]}" + then + # cd back to keep path coherence + cd "${OLDPWD}" + rm -rf "${tmpd}" + continue + fi + fi + + # cd back to free the temp-dir, so we can remove it later + cd "${OLDPWD}" + + # Check if the downloaded file is sane, and matches the stored hashes + # for that file + if support/download/check-hash ${quiet} "${tmpf}" "${output##*/}" "${hfiles[@]}"; then + rc=0 + else + if [ ${?} -ne 3 ]; then + rm -rf "${tmpd}" + continue + fi + + # the hash file exists and there was no hash to check the file + # against + rc=1 + fi + download_and_check=1 + break + done + + # We tried every URI possible, none seems to work or to check against the + # available hash. *ABORT MISSION* + if [ "${download_and_check}" -eq 0 ]; then + rm -rf "${tmpd}" + exit 1 + fi + + # tmp_output is in the same directory as the final output, so we can + # later move it atomically. + tmp_output="$(mktemp "${output}.XXXXXX")" + + # 'mktemp' creates files with 'go=-rwx', so the files are not accessible + # to users other than the one doing the download (and root, of course). + # This can be problematic when a shared BR2_DL_DIR is used by different + # users (e.g. on a build server), where all users may write to the shared + # location, since other users would not be allowed to read the files + # another user downloaded. + # So, we restore the 'go' access rights to a more sensible value, while + # still abiding by the current user's umask. We must do that before the + # final 'mv', so just do it now. + # Some backends (cp and scp) may create executable files, so we need to + # carry the executable bit if needed. + [ -x "${tmpf}" ] && new_mode=755 || new_mode=644 + new_mode="$(printf "%04o" $((0${new_mode} & ~0$(umask))))" + chmod "${new_mode}" "${tmp_output}" + + # We must *not* unlink tmp_output, otherwise there is a small window + # during which another download process may create the same tmp_output + # name (very, very unlikely; but not impossible.) + # Using 'cp' is not reliable, since 'cp' may unlink the destination file + # if it is unable to open it with O_WRONLY|O_TRUNC; see: + # http://pubs.opengroup.org/onlinepubs/9699919799/utilities/cp.html + # Since the destination filesystem can be anything, it might not support + # O_TRUNC, so 'cp' would unlink it first. + # Use 'cat' and append-redirection '>>' to save to the final location, + # since that is the only way we can be 100% sure of the behaviour. + if ! cat "${tmpf}" >>"${tmp_output}"; then + rm -rf "${tmpd}" "${tmp_output}" + exit 1 + fi + rm -rf "${tmpd}" + + # tmp_output and output are on the same filesystem, so POSIX guarantees + # that 'mv' is atomic, because it then uses rename() that POSIX mandates + # to be atomic, see: + # http://pubs.opengroup.org/onlinepubs/9699919799/functions/rename.html + if ! mv -f "${tmp_output}" "${output}"; then + rm -f "${tmp_output}" + exit 1 + fi + + return ${rc} +} + +my_name="${0##*/}" +main "${@}" diff --git a/support/download/file b/support/download/file new file mode 100755 index 00000000..a893ca5c --- /dev/null +++ b/support/download/file @@ -0,0 +1,49 @@ +#!/usr/bin/env bash + +# We want to catch any unexpected failure, and exit immediately +set -e + +# Download helper for cp, to be called from the download wrapper script +# +# Options: +# -q Be quiet. +# -o FILE Copy to file FILE. +# -f FILE Copy from basename file FILE. +# -u DIR Copy from FILE in DIR. +# +# Environment: +# LOCALFILES: the cp command to call + +# 'cp' usually does not print anything on its stdout, whereas the +# other download backends, even if not verbose, at least print some +# progress information. +# Make 'cp' verbose by default, so it behaves a bit like the others. +verbose=-v + +while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do + case "${OPT}" in + q) verbose=;; + o) output="${OPTARG}";; + f) file="${OPTARG}";; + u) dir="${OPTARG}";; + :) printf "option '%s' expects a mandatory argument\n" "${OPTARG}"; exit 1;; + \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;; + esac +done + +shift $((OPTIND-1)) # 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() { + if [ -n "${verbose}" ]; then + printf '%s ' ${LOCALFILES} "${@}"; printf '\n' + fi + _plain_localfiles "$@" +} +# Note: please keep command below aligned with what is printed above +_plain_localfiles() { + eval ${LOCALFILES} "${@}" +} + +_localfiles ${verbose} "'${dir##file://}/${file}'" "'${output}'" diff --git a/support/download/git b/support/download/git new file mode 100755 index 00000000..d49016e9 --- /dev/null +++ b/support/download/git @@ -0,0 +1,297 @@ +#!/usr/bin/env bash + +# NOTE: if the output of this backend has to change (e.g. we change what gets +# included in the archive (e.g. LFS), or we change the format of the archive +# (e.g. tar options, compression ratio or method)), we MUST update the format +# version in the variable BR_FMT_VERSION_git, in package/pkg-download.mk. + +# We want to catch any unexpected failure +set -e + +# Download helper for git, to be called from the download wrapper script +# +# Options: +# -q Be quiet. +# -r Clone and archive sub-modules. +# -o FILE Generate archive in FILE. +# -u URI Clone from repository at URI. +# -c CSET Use changeset CSET. +# -n NAME Use basename NAME. +# +# Environment: +# GIT : the git command to call + +# shellcheck disable=SC1090 # Only provides mk_tar_gz() +. "${0%/*}/helpers" + +# Save our path and options in case we need to call ourselves again +myname="${0}" +declare -a OPTS=("${@}") + +# This function is called when an error occurs. Its job is to attempt a +# clone from scratch (only once!) in case the git tree is borked, or in +# case an unexpected and unsupported situation arises with submodules +# or uncommitted stuff (e.g. if the user manually mucked around in the +# git cache). +_on_error() { + local ret=${?} + + printf "Detected a corrupted git cache.\n" >&2 + if ${BR_GIT_BACKEND_FIRST_FAULT:-false}; then + printf "This is the second time in a row; bailing out\n" >&2 + exit ${ret} + fi + export BR_GIT_BACKEND_FIRST_FAULT=true + + printf "Removing it and starting afresh.\n" >&2 + + popd >/dev/null + rm -rf "${git_cache}" + + exec "${myname}" "${OPTS[@]}" || exit ${ret} +} + +quiet= +large_file=0 +recurse=0 +while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do + case "${OPT}" in + q) quiet=-q; exec >/dev/null;; + l) large_file=1;; + r) recurse=1;; + o) output="${OPTARG}";; + u) uri="${OPTARG}";; + c) cset="${OPTARG}";; + d) dl_dir="${OPTARG}";; + n) basename="${OPTARG}";; + :) printf "option '%s' expects a mandatory argument\n" "${OPTARG}"; exit 1;; + \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;; + esac +done + +shift $((OPTIND-1)) # Get rid of our options + +# Create and cd into the directory that will contain the local git cache +git_cache="${dl_dir}/git" +mkdir -p "${git_cache}" +pushd "${git_cache}" >/dev/null + +# Any error now should try to recover +trap _on_error ERR +set -E + +# Caller needs to single-quote its arguments to prevent them from +# being expanded a second time (in case there are spaces in them) +_git() { + if [ -z "${quiet}" ]; then + printf '%s ' GIT_DIR="${git_cache}/.git" "${GIT}" "${@}"; printf '\n' + fi + _plain_git "$@" +} +# Note: please keep command below aligned with what is printed above +_plain_git() { + # shellcheck disable=SC2086 # We want word-splitting for GIT + eval GIT_DIR="${git_cache}/.git" ${GIT} "${@}" +} + +# Create a warning file, that the user should not use the git cache. +# It's ours. Our precious. +cat <<-_EOF_ >"${dl_dir}/git.readme" + IMPORTANT NOTE! + + The git tree located in this directory is for the exclusive use + by Buildroot, which uses it as a local cache to reduce bandwidth + usage. + + Buildroot *will* trash any changes in that tree whenever it needs + to use it. Buildroot may even remove it in case it detects the + repository may have been damaged or corrupted. + + Do *not* work in that directory; your changes will eventually get + lost. Do *not* even use it as a remote, or as the source for new + worktrees; your commits will eventually get lost. +_EOF_ + +# Initialise a repository in the git cache. If the repository already +# existed, this is a noop, unless the repository was broken, in which +# case this magically restores it to working conditions. In the latter +# case, we might be missing blobs, but that's not a problem: we'll +# fetch what we need later anyway. +# +# We can still go through the wrapper, because 'init' does not use the +# path pointed to by GIT_DIR, but really uses the directory passed as +# argument. +_git init . + +# Ensure the repo has an origin (in case a previous run was killed). +if ! _plain_git remote |grep -q -E '^origin$'; then + _git remote add origin "'${uri}'" +fi + +_git remote set-url origin "'${uri}'" + +printf "Fetching all references\n" +_git fetch origin +_git fetch origin -t -f + +# Try to get the special refs exposed by some forges (pull-requests for +# github, changes for gerrit...). There is no easy way to know whether +# the cset the user passed us is such a special ref or a tag or a sha1 +# or whatever else. We'll eventually fail at checking out that cset, +# below, if there is an issue anyway. Since most of the cset we're gonna +# have to clone are not such special refs, consign the output to oblivion +# so as not to alarm unsuspecting users, but still trace it as a warning. +if ! _git fetch origin "'${cset}:${cset}'" >/dev/null 2>&1; then + printf "Could not fetch special ref '%s'; assuming it is not special.\n" "${cset}" +fi + +# Check that the changeset does exist. If it does not, re-cloning from +# scratch won't help, so we don't want to trash the repository for a +# missing commit. We just exit without going through the ERR trap. +if ! _git rev-parse --quiet --verify "'${cset}^{commit}'" >/dev/null 2>&1; then + printf "Commit '%s' does not exist in this repository.\n" "${cset}" + exit 1 +fi + +# The new cset we want to checkout might have different submodules, or +# have sub-dirs converted to/from a submodule. So we would need to +# deregister _current_ submodules before we checkout. +# +# Using "git submodule deinit --all" would remove all the files for +# all submodules, including the corresponding .git files or directories. +# However, it was only introduced with git-1.8.3, which is too recent +# for some enterprise-grade distros. +# +# So, we fall-back to just removing all submodules directories. We do +# not need to be recursive, as removing a submodule will de-facto remove +# its own submodules. +# +# For recent git versions, the repository for submodules is stored +# inside the repository of the super repository, so the following will +# only remove the working copies of submodules, effectively caching the +# submodules. +# +# For older versions however, the repository is stored in the .git/ of +# the submodule directory, so the following will effectively remove the +# the working copy as well as the repository, which means submodules +# will not be cached for older versions. +# +# shellcheck disable=SC2016 # Will be expanded by git-foreach +cmd='printf "Deregistering submodule \"%s\"\n" "${path}" && cd .. && rm -rf "${path##*/}"' +_git submodule --quiet foreach "'${cmd}'" + +# Checkout the required changeset, so that we can update the required +# submodules. +_git checkout -f -q "'${cset}'" + +# Get rid of now-untracked directories (in case a git operation was +# interrupted in a previous run, or to get rid of empty directories +# that were parents of submodules removed above). +_git clean -ffdx + +# Get date of commit to generate a reproducible archive. +# %ci is ISO 8601, so it's fully qualified, with TZ and all. +date="$( _plain_git log -1 --pretty=format:%ci )" + +# There might be submodules, so fetch them. +if [ ${recurse} -eq 1 ]; then + _git submodule update --init --recursive + + # Older versions of git will store the absolute path of the git tree + # in the .git of submodules, while newer versions just use relative + # paths. Detect and fix the older variants to use relative paths, so + # that the archives are reproducible across a wider range of git + # versions. However, we can't do that if git is too old and uses + # full repositories for submodules. + # shellcheck disable=SC2016 # Will be expanded by git-foreach + cmd='printf "%s\n" "${path}/"' + for module_dir in $( _plain_git submodule --quiet foreach "'${cmd}'" ); do + [ -f "${module_dir}/.git" ] || continue + relative_dir="$( sed -r -e 's,/+,/,g; s,[^/]+/,../,g' <<<"${module_dir}" )" + sed -r -i -e "s:^gitdir\: $(pwd)/:gitdir\: ${relative_dir}:" "${module_dir}/.git" + done +fi + +# If there are large files then fetch them. +if [ ${large_file} -eq 1 ]; then + _git lfs install --local + _git lfs fetch + _git lfs checkout + # If there are also submodules, recurse into them, + # shellcheck disable=SC2086 # We want word-splitting for GIT + if [ ${recurse} -eq 1 ]; then + _git submodule foreach --recursive ${GIT} lfs install --local + _git submodule foreach --recursive ${GIT} lfs fetch + _git submodule foreach --recursive ${GIT} lfs checkout + fi +fi + +# Find files that are affected by the export-subst git-attribute. +# There might be a .gitattribute at the root of the repository, as well +# as in any arbitrary sub-directory, whether from the master repository +# or a submodule. +# "git check-attr -z" outputs results using \0 as separator for everything, +# so there is no difference between field or records (but there is a +# trailing \0): +# path_1\0attr_name\0attr_state\0path_2\0attr_name\0attr_state\0.... +mapfile -d "" files < <( + set -o pipefail # Constrained to this sub-shell + find . -print0 \ + |_plain_git check-attr --stdin -z export-subst \ + |(i=0 + while read -r -d "" val; do + case "$((i++%3))" in + (0) path="${val}";; + (1) ;; # Attribute name, always "export-subst", as requested + (2) + if [ "${val}" = "set" ]; then + printf "%s\0" "${path}" + fi;; + esac + done + ) +) +# Replace format hints in those files. Always use the master repository +# as the source of the git metadata, even for files found in submodules +# as this is the most practical: there is no way to chdir() in (g)awk, +# and recomputing GIT_DIR for each submodule would really be tedious... +# There might be any arbitrary number of hints on each line, so iterate +# over those one by one. +for f in "${files[@]}"; do + TZ=UTC \ + LC_ALL=C \ + GIT_DIR="${git_cache}/.git" \ + awk -v GIT="${GIT}" ' + { + l = $(0); + while( (i = match(l, /\$Format:[^\$]+\$/)) > 0 ) { + len = RLENGTH; + printf("%s", substr(l, 1, i-1) ); + fmt = substr(l, i, RLENGTH); + pretty = substr(fmt, 9, length(fmt)-9); + cmd = GIT " -c core.abbrev=40 log -s -n1 --pretty=format:'\''" pretty "'\''"; + while ( (cmd | getline replace) > 0) { + printf("%s", replace); + } + ret = close(cmd); + if (ret != 0) { + printf("%s:%d: error while executing command \"%s\"\n", FILENAME, NR, cmd) > "/dev/stderr"; + exit 1; + } + l = substr(l, i+len); + } + printf("%s\n", l); + } + ' "${f}" >"${f}.br-temp" + mv -f "${f}.br-temp" "${f}" +done + +popd >/dev/null + +# Generate the archive. +# We do not want the .git dir; we keep other .git files, in case they are the +# only files in their directory. +# The .git dir would generate non reproducible tarballs as it depends on +# the state of the remote server. It also would generate large tarballs +# (gigabytes for some linux trees) when a full clone took place. +mk_tar_gz "${git_cache}" "${basename}" "${date}" "${output}" ".git/*" diff --git a/support/download/go-post-process b/support/download/go-post-process new file mode 100755 index 00000000..ef96a769 --- /dev/null +++ b/support/download/go-post-process @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +set -e + +. "${0%/*}/helpers" + +# Parse our options +while getopts "n:o:" OPT; do + case "${OPT}" in + o) output="${OPTARG}";; + n) base_name="${OPTARG}";; + :) error "option '%s' expects a mandatory argument\n" "${OPTARG}";; + \?) error "unknown option '%s'\n" "${OPTARG}";; + esac +done + +# Already vendored tarball, nothing to do +if tar tf "${output}" | grep -q "^[^/]*/vendor" ; then + exit 0 +fi + +post_process_unpack "${base_name}" "${output}" + +# Do the Go vendoring +pushd "${base_name}" > /dev/null + +if [ ! -f go.mod ]; then + echo "ERROR: no vendor/ folder and no go.mod, aborting" + exit 1 +fi + +go mod vendor -v -modcacherw +popd > /dev/null + +post_process_repack $(pwd) "${base_name}" "${output}" diff --git a/support/download/helpers b/support/download/helpers new file mode 100755 index 00000000..f4102e3b --- /dev/null +++ b/support/download/helpers @@ -0,0 +1,102 @@ +# Generate a reproducible archive from the content of a directory +# +# $1 : input directory +# $2 : leading component in archive +# $3 : ISO8601 date: YYYY-MM-DDThh:mm:ssZZ +# $4 : output file +# $5... : globs of filenames to exclude from the archive, suitable for +# find's -path option, and relative to the input directory $1 +# +# Notes : +# - the timestamp is internally rounded to the highest entire second +# less than or equal to the timestamp (i.e. any sub-second fractional +# part is ignored) +# - must not be called with CWD as, or below, the input directory +# - some temporary files are created in CWD, and removed at the end +# +# Example: +# $ find /path/to/temp/dir +# /path/to/temp/dir/ +# /path/to/temp/dir/some-file +# /path/to/temp/dir/some-dir/ +# /path/to/temp/dir/some-dir/some-other-file +# +# $ mk_tar_gz /path/to/some/dir \ +# foo_bar-1.2.3 \ +# 1970-01-01T00:00:00Z \ +# /path/to/foo.tar.gz \ +# '.git/*' '.svn/*' +# +# $ tar tzf /path/to/foo.tar.gz +# foo_bar-1.2.3/some-file +# foo_bar-1.2.3/some-dir/some-other-file +# +mk_tar_gz() { + local in_dir="${1}" + local base_dir="${2}" + local date="${3}" + local out="${4}" + shift 4 + local glob tmp pax_options + local -a find_opts + + for glob; do + find_opts+=( -or -path "./${glob#./}" ) + done + + # Drop sub-second precision to play nice with GNU tar's valid_timespec check + date="$(date -d "${date}" -u +%Y-%m-%dT%H:%M:%S+00:00)" + + pax_options="delete=atime,delete=ctime,delete=mtime" + pax_options+=",exthdr.name=%d/PaxHeaders/%f,exthdr.mtime={${date}}" + + tmp="$(mktemp --tmpdir="$(pwd)")" + pushd "${in_dir}" >/dev/null + + # Establish list + find . -not -type d -and -not \( -false "${find_opts[@]}" \) >"${tmp}.list" + # Sort list for reproducibility + LC_ALL=C sort <"${tmp}.list" >"${tmp}.sorted" + + # Create POSIX tarballs, since that's the format the most reproducible + ${TAR} cf - --transform="s#^\./#${base_dir}/#S" \ + --numeric-owner --owner=0 --group=0 --mtime="${date}" \ + --format=posix --pax-option="${pax_options}" --mode='go=u,go-w' \ + -T "${tmp}.sorted" >"${tmp}.tar" + + # Compress the archive + gzip -6 -n <"${tmp}.tar" >"${out}" + + rm -f "${tmp}"{.list,.sorted,.tar} + + popd >/dev/null +} + +post_process_unpack() { + local dest="${1}" + local tarball="${2}" + local one_file + + mkdir "${dest}" + ${TAR} -C "${dest}" --strip-components=1 -xzf "${tarball}" + one_file="$(find "${dest}" -type f -print0 |LC_ALL=C sort -z |sed 's/\x0.*//')" + touch -r "${one_file}" "${dest}.timestamp" +} + +post_process_repack() { + local in_dir="${1}" + local base_dir="${2}" + local out="${3}" + local date + + date="@$(stat -c '%Y' "${in_dir}/${base_dir}.timestamp")" + + mk_tar_gz "${in_dir}/${base_dir}" "${base_dir}" "${date}" "${out}" +} + +trace() { local msg="${1}"; shift; printf "%s: ${msg}" "${my_name}" "${@}"; } +warn() { trace "${@}" >&2; } +error() { warn "${@}"; exit 1; } + +# Keep this line and the following as last lines in this file. +# vim: ft=bash diff --git a/support/download/hg b/support/download/hg new file mode 100755 index 00000000..768a27e0 --- /dev/null +++ b/support/download/hg @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +# We want to catch any unexpected failure, and exit immediately +set -e + +# Download helper for hg, to be called from the download wrapper script +# +# Options: +# -q Be quiet. +# -o FILE Generate archive in FILE. +# -u URI Clone from repository at URI. +# -c CSET Use changeset (or revision) CSET. +# -n NAME Use basename NAME. +# +# Environment: +# HG : the hg command to call + +quiet= +while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do + case "${OPT}" in + q) quiet=-q;; + o) output="${OPTARG}";; + u) uri="${OPTARG}";; + c) cset="${OPTARG}";; + n) basename="${OPTARG}";; + :) printf "option '%s' expects a mandatory argument\n" "${OPTARG}"; exit 1;; + \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;; + esac +done + +shift $((OPTIND-1)) # 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() { + if [ -z "${quiet}" ]; then + printf '%s ' ${HG} "${@}"; printf '\n' + fi + _plain_hg "$@" +} +# Note: please keep command below aligned with what is printed above +_plain_hg() { + eval ${HG} "${@}" +} + +_hg clone ${quiet} "${@}" --noupdate "'${uri}'" "'${basename}'" + +_plain_hg archive ${quiet} --repository "'${basename}'" --type tgz \ + --prefix "'${basename}'" --rev "'${cset}'" \ + - >"${output}" diff --git a/support/download/scp b/support/download/scp new file mode 100755 index 00000000..14e768b6 --- /dev/null +++ b/support/download/scp @@ -0,0 +1,47 @@ +#!/usr/bin/env bash + +# We want to catch any unexpected failure, and exit immediately +set -e + +# Download helper for scp, to be called from the download wrapper script +# +# Options: +# -q Be quiet. +# -o FILE Copy to local file FILE. +# -f FILE Copy from remote file FILE. +# -u URI Download file at URI. +# +# Environment: +# SCP : the scp command to call + +quiet= +while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do + case "${OPT}" in + q) quiet=-q;; + o) output="${OPTARG}";; + f) filename="${OPTARG}";; + u) uri="${OPTARG}";; + :) printf "option '%s' expects a mandatory argument\n" "${OPTARG}"; exit 1;; + \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;; + esac +done + +shift $((OPTIND-1)) # 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() { + if [ -z "${quiet}" ]; then + printf '%s ' ${SCP} "${@}"; printf '\n' + fi + _plain_scp "$@" +} +# Note: please keep command below aligned with what is printed above +_plain_scp() { + eval ${SCP} "${@}" +} + +# Remove any scheme prefix +uri="${uri##scp://}" + +_scp ${quiet} "${@}" "'${uri}/${filename}'" "'${output}'" diff --git a/support/download/sftp b/support/download/sftp new file mode 100755 index 00000000..0a44be7e --- /dev/null +++ b/support/download/sftp @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +# We want to catch any unexpected failure, and exit immediately +set -e + +# Download helper for sftp, to be called from the download wrapper script +# +# Options: +# -q Be quiet. +# -o FILE Copy to local file FILE. +# -f FILE Copy from remote file FILE. +# -u URI Download file at URI. +# +# Environment: +# SFTP : the sftp command to call + +quiet= +while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do + case "${OPT}" in + q) quiet=-q;; + o) output="${OPTARG}";; + f) filename="${OPTARG}";; + u) uri="${OPTARG}";; + :) printf "option '%s' expects a mandatory argument\n" "${OPTARG}"; exit 1;; + \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;; + esac +done + +shift $((OPTIND-1)) # 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) +_sftp() { + if [ -z "${quiet}" ]; then + printf '%s ' ${SFTP} "${@}"; printf '\n' + fi + # Note: please keep command below aligned with what is printed above + eval ${SFTP} "${@}" +} + +_sftp ${quiet} "${@}" "'${uri}/${filename}'" "'${output}'" diff --git a/support/download/svn b/support/download/svn new file mode 100755 index 00000000..1decb231 --- /dev/null +++ b/support/download/svn @@ -0,0 +1,89 @@ +#!/usr/bin/env bash + +# NOTE: if the output of this backend has to change (e.g. we change what gets +# included in the archive, or we change the format of the archive (e.g. tar +# options, compression ratio or method)), we MUST update the format version +# in the variable BR_FTM_VERSION_svn, in package/pkg-download.mk. + +# We want to catch any unexpected failure, and exit immediately +set -e + +# Download helper for svn, to be called from the download wrapper script +# +# Options: +# -q Be quiet. +# -o FILE Generate archive in FILE. +# -u URI Checkout from repository at URI. +# -c REV Use revision REV. +# -n NAME Use basename NAME. +# -r Recursive, i.e. use externals +# +# Environment: +# SVN : the svn command to call + +# shellcheck disable=SC1090 # Only provides mk_tar_gz() +. "${0%/*}/helpers" + +quiet= +externals=--ignore-externals +while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do + case "${OPT}" in + q) quiet=-q;; + o) output="${OPTARG}";; + u) uri="${OPTARG}";; + c) rev="${OPTARG}";; + n) basename="${OPTARG}";; + r) externals=;; + :) printf "option '%s' expects a mandatory argument\n" "${OPTARG}"; exit 1;; + \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;; + esac +done + +shift $((OPTIND-1)) # 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() { + if [ -z "${quiet}" ]; then + printf '%s ' "${SVN}" "${@}"; printf '\n' + fi + _plain_svn "$@" +} +# Note: please keep command below aligned with what is printed above +_plain_svn() { + # shellcheck disable=SC2086 # We want word-splitting for SVN + eval ${SVN} "${@}" +} + +# shellcheck disable=SC2086 # externals and quiet may be empty +_svn export --ignore-keywords ${quiet} ${externals} "${@}" "'${uri}@${rev}'" "'${basename}'" + +# For 'svn info', we only need the credentials, if any; other options +# would be invalid, as they are intended for 'svn export'. +# We can also consume the positional parameters, as we'll no longer +# be calling any other remote-reaching svn command. +creds= +while [ ${#} -gt 0 ]; do + case "${1}" in + --username=*) creds+=" ${1}"; shift;; + --password=*) creds+=" ${1}"; shift;; + --username) creds+=" ${1} ${2}"; shift 2;; + --password) creds+=" ${1} ${2}"; shift 2;; + *) shift;; + esac +done + +# Get the date of the revision, to generate reproducible archives. +# The output format is YYYY-MM-DDTHH:MM:SS.mmmuuuZ (i.e. always in the +# UTC timezone), which we can feed as-is to the --mtime option for tar. +# In case there is a redirection (e.g. http -> https), just keep the +# last line (svn outputs everything on stdout) +# shellcheck disable=SC2086 # creds may be empty +date="$( _plain_svn info ${creds} "'${uri}@${rev}'" \ + |sed -r -e '/^Last Changed Date: /!d; s///' + )" + +# Generate the archive. +# We did a 'svn export' above, so it's not a working copy (there is no .svn +# directory or file to ignore). +mk_tar_gz "${basename}" "${basename}" "${date}" "${output}" diff --git a/support/download/wget b/support/download/wget new file mode 100755 index 00000000..68bd0b13 --- /dev/null +++ b/support/download/wget @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +# We want to catch any unexpected failure, and exit immediately +set -e + +# Download helper for wget, to be called from the download wrapper script +# +# Options: +# -q Be quiet. +# -o FILE Save into file FILE. +# -f FILENAME The filename of the tarball to get at URL +# -u URL Download file at URL. +# -e ENCODE Tell wget to urlencode the filename passed to it +# +# Environment: +# WGET : the wget command to call + +quiet= +while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do + case "${OPT}" in + q) quiet=-q;; + o) output="${OPTARG}";; + f) filename="${OPTARG}";; + u) url="${OPTARG}";; + e) encode="-e";; + :) printf "option '%s' expects a mandatory argument\n" "${OPTARG}"; exit 1;; + \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;; + esac +done + +shift $((OPTIND-1)) # 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() { + if [ -z "${quiet}" ]; then + printf '%s ' ${WGET} "${@}"; printf '\n' + fi + _plain_wget "$@" +} +# Note: please keep command below aligned with what is printed above +_plain_wget() { + eval ${WGET} "${@}" +} + +# Replace every '?' with '%3F' in the filename; only for the PRIMARY and BACKUP +# mirror +[ -n "${encode}" ] && filename=${filename//\?/%3F} + +_wget ${quiet} "${@}" -O "'${output}'" "'${url}/${filename}'" diff --git a/support/gnuconfig/README.buildroot b/support/gnuconfig/README.buildroot new file mode 100644 index 00000000..f34a6566 --- /dev/null +++ b/support/gnuconfig/README.buildroot @@ -0,0 +1,21 @@ +--- HOWTO --- +If your package uses config.guess and/or config.sub, then it probably +relies on the autotools as its build system. In this case, you should +use the autotools-package infrastructure, which will take care of updating +the config.guess and/or config.sub files appropriately. See the +Buildroot documentation for details about the autotools-package +infrastructure. + +If for some reason your package does not use the autotools-package +infrastructure, you can request the config.guess and/or config.sub +files of your package to be updated by using: + +_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK + +--- UPDATE --- +Run the script 'update' in this directory, and commit the result. + +The current Buildroot version is based on this commit of the config.git +repository (leave alone on its own line, the script updates it): + +948ae97ca5703224bd3eada06b7a69f40dd15a02 diff --git a/support/gnuconfig/config.guess b/support/gnuconfig/config.guess new file mode 100755 index 00000000..f6d217a4 --- /dev/null +++ b/support/gnuconfig/config.guess @@ -0,0 +1,1812 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2024 Free Software Foundation, Inc. + +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2024-01-01' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# 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. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess +# +# Please send patches to . + + +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system '$me' is run on. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2024 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try '$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +# Just in case it came from the environment. +GUESS= + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still +# use 'HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 + +set_cc_for_build() { + # prevent multiple calls if $tmp is already set + test "$tmp" && return 0 + : "${TMPDIR=/tmp}" + # shellcheck disable=SC2039,SC3028 + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } + dummy=$tmp/dummy + case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c89 c99 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD=$driver + break + fi + done + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; + esac +} + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if test -f /.attbin/uname ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case $UNAME_SYSTEM in +Linux|GNU|GNU/*) + LIBC=unknown + + set_cc_for_build + cat <<-EOF > "$dummy.c" + #if defined(__ANDROID__) + LIBC=android + #else + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #elif defined(__GLIBC__) + LIBC=gnu + #elif defined(__LLVM_LIBC__) + LIBC=llvm + #else + #include + /* First heuristic to detect musl libc. */ + #ifdef __DEFINED_va_list + LIBC=musl + #endif + #endif + #endif + EOF + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" + + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu + fi + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + echo unknown)` + case $UNAME_MACHINE_ARCH in + aarch64eb) machine=aarch64_be-unknown ;; + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; + *) machine=$UNAME_MACHINE_ARCH-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. + case $UNAME_MACHINE_ARCH in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case $UNAME_MACHINE_ARCH in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case $UNAME_VERSION in + Debian*) + release='-gnu' + ;; + *) + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + GUESS=$machine-${os}${release}${abi-} + ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE + ;; + *:SecBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE + ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; + *:MidnightBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; + *:ekkoBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; + *:SolidBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; + *:OS108:*:*) + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; + macppc:MirBSD:*:*) + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; + *:MirBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; + *:Sortix:*:*) + GUESS=$UNAME_MACHINE-unknown-sortix + ;; + *:Twizzler:*:*) + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; + *:Redox:*:*) + GUESS=$UNAME_MACHINE-unknown-redox + ;; + mips:OSF1:*.*) + GUESS=mips-dec-osf1 + ;; + alpha:OSF1:*:*) + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + trap '' 0 + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case $ALPHA_CPU_TYPE in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + GUESS=$UNAME_MACHINE-dec-osf$OSF_REL + ;; + Amiga*:UNIX_System_V:4.0:*) + GUESS=m68k-unknown-sysv4 + ;; + *:[Aa]miga[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; + *:[Mm]orph[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-morphos + ;; + *:OS/390:*:*) + GUESS=i370-ibm-openedition + ;; + *:z/VM:*:*) + GUESS=s390-ibm-zvmoe + ;; + *:OS400:*:*) + GUESS=powerpc-ibm-os400 + ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + GUESS=arm-unknown-riscos + ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + GUESS=hppa1.1-hitachi-hiuxmpp + ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; + NILE*:*:*:dcosx) + GUESS=pyramid-pyramid-svr4 + ;; + DRS?6000:unix:4.0:6*) + GUESS=sparc-icl-nx6 + ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; + s390x:SunOS:*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; + sun4H:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + GUESS=i386-pc-auroraux$UNAME_RELEASE + ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + set_cc_for_build + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$SUN_ARCH-pc-solaris2$SUN_REL + ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; + sun4*:SunOS:*:*) + case `/usr/bin/arch -k` in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like '4.1.3-JL'. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; + sun3*:SunOS:*:*) + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 + case `/bin/arch` in + sun3) + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; + sun4) + GUESS=sparc-sun-sunos$UNAME_RELEASE + ;; + esac + ;; + aushp:SunOS:*:*) + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; + m68k:machten:*:*) + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; + powerpc:machten:*:*) + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; + RISC*:Mach:*:*) + GUESS=mips-dec-mach_bsd4.3 + ;; + RISC*:ULTRIX:*:*) + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; + VAX*:ULTRIX*:*:*) + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; + Motorola:PowerMAX_OS:*:*) + GUESS=powerpc-motorola-powermax + ;; + Motorola:*:4.3:PL8-*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:Power_UNIX:*:*) + GUESS=powerpc-harris-powerunix + ;; + m88k:CX/UX:7*:*) + GUESS=m88k-harris-cxux7 + ;; + m88k:*:4*:R4*) + GUESS=m88k-motorola-sysv4 + ;; + m88k:*:3*:R3*) + GUESS=m88k-motorola-sysv3 + ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 + then + if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ + test "$TARGET_BINARY_INTERFACE"x = x + then + GUESS=m88k-dg-dgux$UNAME_RELEASE + else + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE + fi + else + GUESS=i586-dg-dgux$UNAME_RELEASE + fi + ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + GUESS=m88k-dolphin-sysv3 + ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + GUESS=m88k-motorola-sysv3 + ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + GUESS=m88k-tektronix-sysv3 + ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + GUESS=m68k-tektronix-bsd + ;; + *:IRIX*:*:*) + IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` + GUESS=mips-sgi-irix$IRIX_REL + ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + GUESS=i386-ibm-aix + ;; + ia64:AIX:*:*) + if test -x /usr/bin/oslevel ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + fi + GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV + ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` + then + GUESS=$SYSTEM_NAME + else + GUESS=rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + GUESS=rs6000-ibm-aix3.2.4 + else + GUESS=rs6000-ibm-aix3.2 + fi + ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if test -x /usr/bin/lslpp ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + fi + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; + *:AIX:*:*) + GUESS=rs6000-ibm-aix + ;; + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) + GUESS=romp-ibm-bsd4.4 + ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + GUESS=rs6000-bull-bosx + ;; + DPX/2?00:B.O.S.:*:*) + GUESS=m68k-bull-sysv3 + ;; + 9000/[34]??:4.3bsd:1.*:*) + GUESS=m68k-hp-bsd + ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + GUESS=m68k-hp-bsd4.4 + ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + case $UNAME_MACHINE in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if test -x /usr/bin/getconf; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case $sc_cpu_version in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case $sc_kernel_bits in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if test "$HP_ARCH" = ""; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if test "$HP_ARCH" = hppa2.0w + then + set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + GUESS=ia64-hp-hpux$HPUX_REV + ;; + 3050*:HI-UX:*:*) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=unknown-hitachi-hiuxwe2 + ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) + GUESS=hppa1.1-hp-bsd + ;; + 9000/8??:4.3bsd:*:*) + GUESS=hppa1.0-hp-bsd + ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + GUESS=hppa1.0-hp-mpeix + ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) + GUESS=hppa1.1-hp-osf + ;; + hp8??:OSF1:*:*) + GUESS=hppa1.0-hp-osf + ;; + i*86:OSF1:*:*) + if test -x /usr/sbin/sysversion ; then + GUESS=$UNAME_MACHINE-unknown-osf1mk + else + GUESS=$UNAME_MACHINE-unknown-osf1 + fi + ;; + parisc*:Lites*:*:*) + GUESS=hppa1.1-hp-lites + ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + GUESS=c1-convex-bsd + ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + GUESS=c34-convex-bsd + ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + GUESS=c38-convex-bsd + ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + GUESS=c4-convex-bsd + ;; + CRAY*Y-MP:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=ymp-cray-unicos$CRAY_REL + ;; + CRAY*[A-Z]90:*:*:*) + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; + CRAY*T3E:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; + CRAY*SV1:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; + *:UNICOS/mp:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=craynv-cray-unicosmp$CRAY_REL + ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` + GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; + sparc*:BSD/OS:*:*) + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; + *:BSD/OS:*:*) + GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE + ;; + arm:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + set_cc_for_build + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi + else + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf + fi + ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + amd64) + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; + esac + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; + i*:CYGWIN*:*) + GUESS=$UNAME_MACHINE-pc-cygwin + ;; + *:MINGW64*:*) + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; + *:MINGW*:*) + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; + *:MSYS*:*) + GUESS=$UNAME_MACHINE-pc-msys + ;; + i*:PW*:*) + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; + *:Interix*:*) + case $UNAME_MACHINE in + x86) + GUESS=i586-pc-interix$UNAME_RELEASE + ;; + authenticamd | genuineintel | EM64T) + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; + IA64) + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; + esac ;; + i*:UWIN*:*) + GUESS=$UNAME_MACHINE-pc-uwin + ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + GUESS=x86_64-pc-cygwin + ;; + prep*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; + *:GNU:*:*) + # the GNU system + GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` + GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL + ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; + x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-pc-managarm-mlibc" + ;; + *:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" + ;; + *:Minix:*:*) + GUESS=$UNAME_MACHINE-unknown-minix + ;; + aarch64:Linux:*:*) + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __ARM_EABI__ + #ifdef __ARM_PCS_VFP + ABI=eabihf + #else + ABI=eabi + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;; + esac + fi + GUESS=$CPU-unknown-linux-$LIBCABI + ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arm*:Linux:*:*) + set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi + else + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf + fi + fi + ;; + avr32*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + cris:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + crisv32:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + e2k:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + frv:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + hexagon:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + i*86:Linux:*:*) + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; + ia64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + k1om:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:cos:*:*) + GUESS=$UNAME_MACHINE-unknown-cos + ;; + kvx:mbr:*:*) + GUESS=$UNAME_MACHINE-unknown-mbr + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m32r*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m68*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + mips:Linux:*:* | mips64:Linux:*:*) + set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 + sed 's/^ //' << EOF > "$dummy.c" + #undef CPU + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + MIPS_ENDIAN=el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + MIPS_ENDIAN= + #else + MIPS_ENDIAN= + #endif + #endif +EOF + cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` + eval "$cc_set_vars" + test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } + ;; + mips64el:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + openrisc*:Linux:*:*) + GUESS=or1k-unknown-linux-$LIBC + ;; + or32:Linux:*:* | or1k*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + padre:Linux:*:*) + GUESS=sparc-unknown-linux-$LIBC + ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + GUESS=hppa64-unknown-linux-$LIBC + ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; + esac + ;; + ppc64:Linux:*:*) + GUESS=powerpc64-unknown-linux-$LIBC + ;; + ppc:Linux:*:*) + GUESS=powerpc-unknown-linux-$LIBC + ;; + ppc64le:Linux:*:*) + GUESS=powerpc64le-unknown-linux-$LIBC + ;; + ppcle:Linux:*:*) + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + s390:Linux:*:* | s390x:Linux:*:*) + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; + sh64*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sh*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + tile*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + vax:Linux:*:*) + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; + x86_64:Linux:*:*) + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __i386__ + ABI=x86 + #else + #ifdef __ILP32__ + ABI=x32 + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + x86) CPU=i686 ;; + x32) LIBCABI=${LIBC}x32 ;; + esac + fi + GUESS=$CPU-pc-linux-$LIBCABI + ;; + xtensa*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + GUESS=i386-sequent-sysv4 + ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION + ;; + i*86:OS/2:*:*) + # If we were able to find 'uname', then EMX Unix compatibility + # is probably installed. + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; + i*86:XTS-300:*:STOP) + GUESS=$UNAME_MACHINE-unknown-stop + ;; + i*86:atheos:*:*) + GUESS=$UNAME_MACHINE-unknown-atheos + ;; + i*86:syllable:*:*) + GUESS=$UNAME_MACHINE-pc-syllable + ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; + i*86:*DOS:*:*) + GUESS=$UNAME_MACHINE-pc-msdosdjgpp + ;; + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL + fi + ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv32 + fi + ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. + GUESS=i586-pc-msdosdjgpp + ;; + Intel:Mach:3*:*) + GUESS=i386-pc-mach3 + ;; + paragon:*:*:*) + GUESS=i860-intel-osf1 + ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 + fi + ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + GUESS=m68010-convergent-sysv + ;; + mc68k:UNIX:SYSTEM5:3.51m) + GUESS=m68k-convergent-sysv + ;; + M680?0:D-NIX:5.3:*) + GUESS=m68k-diab-dnix + ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; + mc68030:UNIX_System_V:4.*:*) + GUESS=m68k-atari-sysv4 + ;; + TSUNAMI:LynxOS:2.*:*) + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; + rs6000:LynxOS:2.*:*) + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; + SM[BE]S:UNIX_SV:*:*) + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; + RM*:ReliantUNIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + RM*:SINIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + GUESS=$UNAME_MACHINE-sni-sysv4 + else + GUESS=ns32k-sni-sysv + fi + ;; + PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort + # says + GUESS=i586-unisys-sysv4 + ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + GUESS=hppa1.1-stratus-sysv4 + ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + GUESS=i860-stratus-sysv4 + ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=$UNAME_MACHINE-stratus-vos + ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=hppa1.1-stratus-vos + ;; + mc68*:A/UX:*:*) + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; + news*:NEWS-OS:6*:*) + GUESS=mips-sony-newsos6 + ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if test -d /usr/nec; then + GUESS=mips-nec-sysv$UNAME_RELEASE + else + GUESS=mips-unknown-sysv$UNAME_RELEASE + fi + ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + GUESS=powerpc-be-beos + ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + GUESS=powerpc-apple-beos + ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + GUESS=i586-pc-beos + ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + GUESS=i586-pc-haiku + ;; + ppc:Haiku:*:*) # Haiku running on Apple PowerPC + GUESS=powerpc-apple-haiku + ;; + *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) + GUESS=$UNAME_MACHINE-unknown-haiku + ;; + SX-4:SUPER-UX:*:*) + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; + SX-5:SUPER-UX:*:*) + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; + SX-6:SUPER-UX:*:*) + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; + SX-7:SUPER-UX:*:*) + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; + SX-8:SUPER-UX:*:*) + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; + SX-8R:SUPER-UX:*:*) + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; + SX-ACE:SUPER-UX:*:*) + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; + Power*:Rhapsody:*:*) + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; + *:Rhapsody:*:*) + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; + arm64:Darwin:*:*) + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build + fi + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE + fi + GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE + ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; + *:QNX:*:4*) + GUESS=i386-pc-qnx + ;; + NEO-*:NONSTOP_KERNEL:*:*) + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; + NSE-*:NONSTOP_KERNEL:*:*) + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; + NSR-*:NONSTOP_KERNEL:*:*) + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; + NSV-*:NONSTOP_KERNEL:*:*) + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; + NSX-*:NONSTOP_KERNEL:*:*) + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; + *:NonStop-UX:*:*) + GUESS=mips-compaq-nonstopux + ;; + BS2000:POSIX*:*:*) + GUESS=bs2000-siemens-sysv + ;; + DS/*:UNIX_System_V:*:*) + GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE + ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "${cputype-}" = 386; then + UNAME_MACHINE=i386 + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype + fi + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; + *:TOPS-10:*:*) + GUESS=pdp10-unknown-tops10 + ;; + *:TENEX:*:*) + GUESS=pdp10-unknown-tenex + ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + GUESS=pdp10-dec-tops20 + ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + GUESS=pdp10-xkl-tops20 + ;; + *:TOPS-20:*:*) + GUESS=pdp10-unknown-tops20 + ;; + *:ITS:*:*) + GUESS=pdp10-unknown-its + ;; + SEI:*:*:SEIUX) + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; + *:DragonFly:*:*) + DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL + ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case $UNAME_MACHINE in + A*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; + esac ;; + *:XENIX:*:SysV) + GUESS=i386-pc-xenix + ;; + i*86:skyos:*:*) + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; + i*86:rdos:*:*) + GUESS=$UNAME_MACHINE-pc-rdos + ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; + x86_64:VMkernel:*:*) + GUESS=$UNAME_MACHINE-unknown-esx + ;; + amd64:Isilon\ OneFS:*:*) + GUESS=x86_64-unknown-onefs + ;; + *:Unleashed:*:*) + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; + *:Ironclad:*:*) + GUESS=$UNAME_MACHINE-unknown-ironclad + ;; +esac + +# Do we have a guess based on uname results? +if test "x$GUESS" != x; then + echo "$GUESS" + exit +fi + +# No uname command or uname output not recognized. +set_cc_for_build +cat > "$dummy.c" < +#include +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include +#if defined(_SIZE_T_) || defined(SIGLOST) +#include +#endif +#endif +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); +#endif + +#if defined (vax) +#if !defined (ultrix) +#include +#if defined (BSD) +#if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +#else +#if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#endif +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("mips-dec-ultrix\n"); exit (0); +#endif +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } + +echo "$0: unable to guess system type" >&2 + +case $UNAME_MACHINE:$UNAME_SYSTEM in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 <&2 </dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" +EOF +fi + +exit 1 + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/support/gnuconfig/config.sub b/support/gnuconfig/config.sub new file mode 100755 index 00000000..2c6a07ab --- /dev/null +++ b/support/gnuconfig/config.sub @@ -0,0 +1,1971 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2024 Free Software Foundation, Inc. + +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2024-01-01' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# 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. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2024 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try '$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo "$1" + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Split fields of configuration type +# shellcheck disable=SC2162 +saved_IFS=$IFS +IFS="-" read field1 field2 field3 field4 <&2 + exit 1 + ;; + *-*-*-*) + basic_machine=$field1-$field2 + basic_os=$field3-$field4 + ;; + *-*-*) + # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two + # parts + maybe_os=$field2-$field3 + case $maybe_os in + nto-qnx* | linux-* | uclinux-uclibc* \ + | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ + | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ + | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \ + | windows-* ) + basic_machine=$field1 + basic_os=$maybe_os + ;; + android-linux) + basic_machine=$field1-unknown + basic_os=linux-android + ;; + *) + basic_machine=$field1-$field2 + basic_os=$field3 + ;; + esac + ;; + *-*) + # A lone config we happen to match not fitting any pattern + case $field1-$field2 in + decstation-3100) + basic_machine=mips-dec + basic_os= + ;; + *-*) + # Second component is usually, but not always the OS + case $field2 in + # Prevent following clause from handling this valid os + sun*os*) + basic_machine=$field1 + basic_os=$field2 + ;; + zephyr*) + basic_machine=$field1-unknown + basic_os=$field2 + ;; + # Manufacturers + dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ + | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ + | unicom* | ibm* | next | hp | isi* | apollo | altos* \ + | convergent* | ncr* | news | 32* | 3600* | 3100* \ + | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ + | ultra | tti* | harris | dolphin | highlevel | gould \ + | cbm | ns | masscomp | apple | axis | knuth | cray \ + | microblaze* | sim | cisco \ + | oki | wec | wrs | winbond) + basic_machine=$field1-$field2 + basic_os= + ;; + *) + basic_machine=$field1 + basic_os=$field2 + ;; + esac + ;; + esac + ;; + *) + # Convert single-component short-hands not valid as part of + # multi-component configurations. + case $field1 in + 386bsd) + basic_machine=i386-pc + basic_os=bsd + ;; + a29khif) + basic_machine=a29k-amd + basic_os=udi + ;; + adobe68k) + basic_machine=m68010-adobe + basic_os=scout + ;; + alliant) + basic_machine=fx80-alliant + basic_os= + ;; + altos | altos3068) + basic_machine=m68k-altos + basic_os= + ;; + am29k) + basic_machine=a29k-none + basic_os=bsd + ;; + amdahl) + basic_machine=580-amdahl + basic_os=sysv + ;; + amiga) + basic_machine=m68k-unknown + basic_os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown + basic_os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + basic_os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + basic_os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + basic_os=bsd + ;; + aros) + basic_machine=i386-pc + basic_os=aros + ;; + aux) + basic_machine=m68k-apple + basic_os=aux + ;; + balance) + basic_machine=ns32k-sequent + basic_os=dynix + ;; + blackfin) + basic_machine=bfin-unknown + basic_os=linux + ;; + cegcc) + basic_machine=arm-unknown + basic_os=cegcc + ;; + convex-c1) + basic_machine=c1-convex + basic_os=bsd + ;; + convex-c2) + basic_machine=c2-convex + basic_os=bsd + ;; + convex-c32) + basic_machine=c32-convex + basic_os=bsd + ;; + convex-c34) + basic_machine=c34-convex + basic_os=bsd + ;; + convex-c38) + basic_machine=c38-convex + basic_os=bsd + ;; + cray) + basic_machine=j90-cray + basic_os=unicos + ;; + crds | unos) + basic_machine=m68k-crds + basic_os= + ;; + da30) + basic_machine=m68k-da30 + basic_os= + ;; + decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec + basic_os= + ;; + delta88) + basic_machine=m88k-motorola + basic_os=sysv3 + ;; + dicos) + basic_machine=i686-pc + basic_os=dicos + ;; + djgpp) + basic_machine=i586-pc + basic_os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd + basic_os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + basic_os=ose + ;; + gmicro) + basic_machine=tron-gmicro + basic_os=sysv + ;; + go32) + basic_machine=i386-pc + basic_os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi + basic_os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi + basic_os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi + basic_os=hms + ;; + harris) + basic_machine=m88k-harris + basic_os=sysv3 + ;; + hp300 | hp300hpux) + basic_machine=m68k-hp + basic_os=hpux + ;; + hp300bsd) + basic_machine=m68k-hp + basic_os=bsd + ;; + hppaosf) + basic_machine=hppa1.1-hp + basic_os=osf + ;; + hppro) + basic_machine=hppa1.1-hp + basic_os=proelf + ;; + i386mach) + basic_machine=i386-mach + basic_os=mach + ;; + isi68 | isi) + basic_machine=m68k-isi + basic_os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown + basic_os=linux + ;; + magnum | m3230) + basic_machine=mips-mips + basic_os=sysv + ;; + merlin) + basic_machine=ns32k-utek + basic_os=sysv + ;; + mingw64) + basic_machine=x86_64-pc + basic_os=mingw64 + ;; + mingw32) + basic_machine=i686-pc + basic_os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + basic_os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k + basic_os=coff + ;; + morphos) + basic_machine=powerpc-unknown + basic_os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown + basic_os=moxiebox + ;; + msdos) + basic_machine=i386-pc + basic_os=msdos + ;; + msys) + basic_machine=i686-pc + basic_os=msys + ;; + mvs) + basic_machine=i370-ibm + basic_os=mvs + ;; + nacl) + basic_machine=le32-unknown + basic_os=nacl + ;; + ncr3000) + basic_machine=i486-ncr + basic_os=sysv4 + ;; + netbsd386) + basic_machine=i386-pc + basic_os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + basic_os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + basic_os=newsos + ;; + news1000) + basic_machine=m68030-sony + basic_os=newsos + ;; + necv70) + basic_machine=v70-nec + basic_os=sysv + ;; + nh3000) + basic_machine=m68k-harris + basic_os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris + basic_os=cxux + ;; + nindy960) + basic_machine=i960-intel + basic_os=nindy + ;; + mon960) + basic_machine=i960-intel + basic_os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq + basic_os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm + basic_os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + basic_os=ose + ;; + os68k) + basic_machine=m68k-none + basic_os=os68k + ;; + paragon) + basic_machine=i860-intel + basic_os=osf + ;; + parisc) + basic_machine=hppa-unknown + basic_os=linux + ;; + psp) + basic_machine=mipsallegrexel-sony + basic_os=psp + ;; + pw32) + basic_machine=i586-unknown + basic_os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + basic_os=rdos + ;; + rdos32) + basic_machine=i386-pc + basic_os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k + basic_os=coff + ;; + sa29200) + basic_machine=a29k-amd + basic_os=udi + ;; + sei) + basic_machine=mips-sei + basic_os=seiux + ;; + sequent) + basic_machine=i386-sequent + basic_os= + ;; + sps7) + basic_machine=m68k-bull + basic_os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem + basic_os= + ;; + stratus) + basic_machine=i860-stratus + basic_os=sysv4 + ;; + sun2) + basic_machine=m68000-sun + basic_os= + ;; + sun2os3) + basic_machine=m68000-sun + basic_os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + basic_os=sunos4 + ;; + sun3) + basic_machine=m68k-sun + basic_os= + ;; + sun3os3) + basic_machine=m68k-sun + basic_os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + basic_os=sunos4 + ;; + sun4) + basic_machine=sparc-sun + basic_os= + ;; + sun4os3) + basic_machine=sparc-sun + basic_os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + basic_os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + basic_os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + basic_os= + ;; + sv1) + basic_machine=sv1-cray + basic_os=unicos + ;; + symmetry) + basic_machine=i386-sequent + basic_os=dynix + ;; + t3e) + basic_machine=alphaev5-cray + basic_os=unicos + ;; + t90) + basic_machine=t90-cray + basic_os=unicos + ;; + toad1) + basic_machine=pdp10-xkl + basic_os=tops20 + ;; + tpf) + basic_machine=s390x-ibm + basic_os=tpf + ;; + udi29k) + basic_machine=a29k-amd + basic_os=udi + ;; + ultra3) + basic_machine=a29k-nyu + basic_os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + basic_os=none + ;; + vaxv) + basic_machine=vax-dec + basic_os=sysv + ;; + vms) + basic_machine=vax-dec + basic_os=vms + ;; + vsta) + basic_machine=i386-pc + basic_os=vsta + ;; + vxworks960) + basic_machine=i960-wrs + basic_os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + basic_os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + basic_os=vxworks + ;; + xbox) + basic_machine=i686-pc + basic_os=mingw32 + ;; + ymp) + basic_machine=ymp-cray + basic_os=unicos + ;; + *) + basic_machine=$1 + basic_os= + ;; + esac + ;; +esac + +# Decode 1-component or ad-hoc basic machines +case $basic_machine in + # Here we handle the default manufacturer of certain CPU types. It is in + # some cases the only manufacturer, in others, it is the most popular. + w89k) + cpu=hppa1.1 + vendor=winbond + ;; + op50n) + cpu=hppa1.1 + vendor=oki + ;; + op60c) + cpu=hppa1.1 + vendor=oki + ;; + ibm*) + cpu=i370 + vendor=ibm + ;; + orion105) + cpu=clipper + vendor=highlevel + ;; + mac | mpw | mac-mpw) + cpu=m68k + vendor=apple + ;; + pmac | pmac-mpw) + cpu=powerpc + vendor=apple + ;; + + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + cpu=m68000 + vendor=att + ;; + 3b*) + cpu=we32k + vendor=att + ;; + bluegene*) + cpu=powerpc + vendor=ibm + basic_os=cnk + ;; + decsystem10* | dec10*) + cpu=pdp10 + vendor=dec + basic_os=tops10 + ;; + decsystem20* | dec20*) + cpu=pdp10 + vendor=dec + basic_os=tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + cpu=m68k + vendor=motorola + ;; + dpx2*) + cpu=m68k + vendor=bull + basic_os=sysv3 + ;; + encore | umax | mmax) + cpu=ns32k + vendor=encore + ;; + elxsi) + cpu=elxsi + vendor=elxsi + basic_os=${basic_os:-bsd} + ;; + fx2800) + cpu=i860 + vendor=alliant + ;; + genix) + cpu=ns32k + vendor=ns + ;; + h3050r* | hiux*) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + cpu=m68000 + vendor=hp + ;; + hp9k3[2-9][0-9]) + cpu=m68k + vendor=hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + i*86v32) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv32 + ;; + i*86v4*) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv4 + ;; + i*86v) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv + ;; + i*86sol2) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=solaris2 + ;; + j90 | j90-cray) + cpu=j90 + vendor=cray + basic_os=${basic_os:-unicos} + ;; + iris | iris4d) + cpu=mips + vendor=sgi + case $basic_os in + irix*) + ;; + *) + basic_os=irix4 + ;; + esac + ;; + miniframe) + cpu=m68000 + vendor=convergent + ;; + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + cpu=m68k + vendor=atari + basic_os=mint + ;; + news-3600 | risc-news) + cpu=mips + vendor=sony + basic_os=newsos + ;; + next | m*-next) + cpu=m68k + vendor=next + case $basic_os in + openstep*) + ;; + nextstep*) + ;; + ns2*) + basic_os=nextstep2 + ;; + *) + basic_os=nextstep3 + ;; + esac + ;; + np1) + cpu=np1 + vendor=gould + ;; + op50n-* | op60c-*) + cpu=hppa1.1 + vendor=oki + basic_os=proelf + ;; + pa-hitachi) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + pbd) + cpu=sparc + vendor=tti + ;; + pbb) + cpu=m68k + vendor=tti + ;; + pc532) + cpu=ns32k + vendor=pc532 + ;; + pn) + cpu=pn + vendor=gould + ;; + power) + cpu=power + vendor=ibm + ;; + ps2) + cpu=i386 + vendor=ibm + ;; + rm[46]00) + cpu=mips + vendor=siemens + ;; + rtpc | rtpc-*) + cpu=romp + vendor=ibm + ;; + sde) + cpu=mipsisa32 + vendor=sde + basic_os=${basic_os:-elf} + ;; + simso-wrs) + cpu=sparclite + vendor=wrs + basic_os=vxworks + ;; + tower | tower-32) + cpu=m68k + vendor=ncr + ;; + vpp*|vx|vx-*) + cpu=f301 + vendor=fujitsu + ;; + w65) + cpu=w65 + vendor=wdc + ;; + w89k-*) + cpu=hppa1.1 + vendor=winbond + basic_os=proelf + ;; + none) + cpu=none + vendor=none + ;; + leon|leon[3-9]) + cpu=sparc + vendor=$basic_machine + ;; + leon-*|leon[3-9]-*) + cpu=sparc + vendor=`echo "$basic_machine" | sed 's/-.*//'` + ;; + + *-*) + # shellcheck disable=SC2162 + saved_IFS=$IFS + IFS="-" read cpu vendor <&2 + exit 1 + ;; + esac + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $vendor in + digital*) + vendor=dec + ;; + commodore*) + vendor=cbm + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if test x"$basic_os" != x +then + +# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just +# set os. +obj= +case $basic_os in + gnu/linux*) + kernel=linux + os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` + ;; + os2-emx) + kernel=os2 + os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` + ;; + nto-qnx*) + kernel=nto + os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` + ;; + *-*) + # shellcheck disable=SC2162 + saved_IFS=$IFS + IFS="-" read kernel os <&2 + fi + ;; + *) + echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 + exit 1 + ;; +esac + +case $obj in + aout* | coff* | elf* | pe*) + ;; + '') + # empty is fine + ;; + *) + echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 + exit 1 + ;; +esac + +# Here we handle the constraint that a (synthetic) cpu and os are +# valid only in combination with each other and nowhere else. +case $cpu-$os in + # The "javascript-unknown-ghcjs" triple is used by GHC; we + # accept it here in order to tolerate that, but reject any + # variations. + javascript-ghcjs) + ;; + javascript-* | *-ghcjs) + echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 + exit 1 + ;; +esac + +# As a final step for OS-related things, validate the OS-kernel combination +# (given a valid OS), if there is a kernel. +case $kernel-$os-$obj in + linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ + | linux-mlibc*- | linux-musl*- | linux-newlib*- \ + | linux-relibc*- | linux-uclibc*- ) + ;; + uclinux-uclibc*- ) + ;; + managarm-mlibc*- | managarm-kernel*- ) + ;; + windows*-msvc*-) + ;; + -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ + | -uclibc*- ) + # These are just libc implementations, not actual OSes, and thus + # require a kernel. + echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 + exit 1 + ;; + -kernel*- ) + echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 + exit 1 + ;; + *-kernel*- ) + echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 + exit 1 + ;; + *-msvc*- ) + echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 + exit 1 + ;; + kfreebsd*-gnu*- | kopensolaris*-gnu*-) + ;; + vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) + ;; + nto-qnx*-) + ;; + os2-emx-) + ;; + *-eabi*- | *-gnueabi*-) + ;; + none--*) + # None (no kernel, i.e. freestanding / bare metal), + # can be paired with an machine code file format + ;; + -*-) + # Blank kernel with real OS is always fine. + ;; + --*) + # Blank kernel and OS with real machine code file format is always fine. + ;; + *-*-*) + echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 + exit 1 + ;; +esac + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +case $vendor in + unknown) + case $cpu-$os in + *-riscix*) + vendor=acorn + ;; + *-sunos*) + vendor=sun + ;; + *-cnk* | *-aix*) + vendor=ibm + ;; + *-beos*) + vendor=be + ;; + *-hpux*) + vendor=hp + ;; + *-mpeix*) + vendor=hp + ;; + *-hiux*) + vendor=hitachi + ;; + *-unos*) + vendor=crds + ;; + *-dgux*) + vendor=dg + ;; + *-luna*) + vendor=omron + ;; + *-genix*) + vendor=ns + ;; + *-clix*) + vendor=intergraph + ;; + *-mvs* | *-opened*) + vendor=ibm + ;; + *-os400*) + vendor=ibm + ;; + s390-* | s390x-*) + vendor=ibm + ;; + *-ptx*) + vendor=sequent + ;; + *-tpf*) + vendor=ibm + ;; + *-vxsim* | *-vxworks* | *-windiss*) + vendor=wrs + ;; + *-aux*) + vendor=apple + ;; + *-hms*) + vendor=hitachi + ;; + *-mpw* | *-macos*) + vendor=apple + ;; + *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) + vendor=atari + ;; + *-vos*) + vendor=stratus + ;; + esac + ;; +esac + +echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" +exit + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/support/gnuconfig/update b/support/gnuconfig/update new file mode 100755 index 00000000..c8728ead --- /dev/null +++ b/support/gnuconfig/update @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +set -e + +cd "${0%/*}" + +git clone https://git.savannah.gnu.org/git/config.git +sha="$(cd config; git log -1 --pretty=tformat:%H)" +sed -r -i -e "\$s/.*/${sha}/" README.buildroot +cp config/config.* . +for p in $(ls patches/*.patch 2>/dev/null); do + patch -p1 < "${p}" +done +rm -rf config diff --git a/support/kconfig/.gitignore b/support/kconfig/.gitignore new file mode 100644 index 00000000..2694c9a2 --- /dev/null +++ b/support/kconfig/.gitignore @@ -0,0 +1,4 @@ +# +# Quilt is being used to handle the patch series +# +.pc diff --git a/support/kconfig/Makefile b/support/kconfig/Makefile new file mode 100644 index 00000000..b0bcc262 --- /dev/null +++ b/support/kconfig/Makefile @@ -0,0 +1,342 @@ +# SPDX-License-Identifier: GPL-2.0 +# =========================================================================== +# Kernel configuration targets +# These targets are used from top-level makefile + +PHONY += xconfig gconfig menuconfig config syncconfig update-po-config \ + localmodconfig localyesconfig + +# Easy method for doing a status message + kecho := : + quiet_kecho := echo +silent_kecho := : +kecho := $($(quiet)kecho) + +ifdef KBUILD_KCONFIG +Kconfig := $(KBUILD_KCONFIG) +else +Kconfig := Kconfig +endif + +ifeq ($(quiet),silent_) +silent := -s +endif + +# We need this, in case the user has it in its environment +unexport CONFIG_ + +xconfig: $(obj)/qconf + $< $(silent) $(Kconfig) + +gconfig: $(obj)/gconf + $< $(silent) $(Kconfig) + +menuconfig: $(obj)/mconf + $< $(silent) $(Kconfig) + +config: $(obj)/conf + $< $(silent) --oldaskconfig $(Kconfig) + +nconfig: $(obj)/nconf + $< $(silent) $(Kconfig) + +# This has become an internal implementation detail and is now deprecated +# for external use. +syncconfig: $(obj)/conf + $(Q)mkdir -p include/config include/generated + $< $(silent) --$@ $(Kconfig) + +localyesconfig localmodconfig: $(obj)/conf + $(Q)mkdir -p include/config include/generated + $(Q)perl $(srctree)/$(src)/streamline_config.pl --$@ $(srctree) $(Kconfig) > .tmp.config + $(Q)if [ -f .config ]; then \ + cmp -s .tmp.config .config || \ + (mv -f .config .config.old.1; \ + mv -f .tmp.config .config; \ + $< $(silent) --oldconfig $(Kconfig); \ + mv -f .config.old.1 .config.old) \ + else \ + mv -f .tmp.config .config; \ + $< $(silent) --oldconfig $(Kconfig); \ + fi + $(Q)rm -f .tmp.config + +# Create new linux.pot file +# Adjust charset to UTF-8 in .po file to accept UTF-8 in Kconfig files +update-po-config: $(obj)/kxgettext $(obj)/gconf.glade.h + $(Q)$(kecho) " GEN config.pot" + $(Q)xgettext --default-domain=linux \ + --add-comments --keyword=_ --keyword=N_ \ + --from-code=UTF-8 \ + --files-from=$(srctree)/scripts/kconfig/POTFILES.in \ + --directory=$(srctree) --directory=$(objtree) \ + --output $(obj)/config.pot + $(Q)sed -i s/CHARSET/UTF-8/ $(obj)/config.pot + $(Q)(for i in `ls $(srctree)/arch/*/Kconfig \ + $(srctree)/arch/*/um/Kconfig`; \ + do \ + $(kecho) " GEN $$i"; \ + $(obj)/kxgettext $$i \ + >> $(obj)/config.pot; \ + done ) + $(Q)$(kecho) " GEN linux.pot" + $(Q)msguniq --sort-by-file --to-code=UTF-8 $(obj)/config.pot \ + --output $(obj)/linux.pot + $(Q)rm -f $(obj)/config.pot + +# These targets map 1:1 to the commandline options of 'conf' +simple-targets := oldconfig allnoconfig allyesconfig allmodconfig \ + alldefconfig randconfig listnewconfig olddefconfig +PHONY += $(simple-targets) + +$(simple-targets): $(obj)/conf + $< $(silent) --$@ $(Kconfig) + +PHONY += oldnoconfig silentoldconfig savedefconfig defconfig + +# oldnoconfig is an alias of olddefconfig, because people already are dependent +# on its behavior (sets new symbols to their default value but not 'n') with the +# counter-intuitive name. +oldnoconfig: olddefconfig + @echo " WARNING: \"oldnoconfig\" target will be removed after Linux 4.19" + @echo " Please use \"olddefconfig\" instead, which is an alias." + +# We do not expect manual invokcation of "silentoldcofig" (or "syncconfig"). +silentoldconfig: syncconfig + @echo " WARNING: \"silentoldconfig\" has been renamed to \"syncconfig\"" + @echo " and is now an internal implementation detail." + @echo " What you want is probably \"oldconfig\"." + @echo " \"silentoldconfig\" will be removed after Linux 4.19" + +savedefconfig: $(obj)/conf + $< $(silent) --$@=defconfig $(Kconfig) + +defconfig: $(obj)/conf +ifeq ($(KBUILD_DEFCONFIG),) + $< $(silent) --defconfig $(Kconfig) +else +ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)),) + @$(kecho) "*** Default configuration is based on '$(KBUILD_DEFCONFIG)'" + $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig) +else + @$(kecho) "*** Default configuration is based on target '$(KBUILD_DEFCONFIG)'" + $(Q)$(MAKE) -f $(srctree)/Makefile $(KBUILD_DEFCONFIG) +endif +endif + +%_defconfig: $(obj)/conf + $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig) + +configfiles=$(wildcard $(srctree)/kernel/configs/$@ $(srctree)/arch/$(SRCARCH)/configs/$@) + +%.config: $(obj)/conf + $(if $(call configfiles),, $(error No configuration exists for this target on this architecture)) + $(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh -m .config $(configfiles) + +$(Q)yes "" | $(MAKE) -f $(srctree)/Makefile oldconfig + +PHONY += kvmconfig +kvmconfig: kvm_guest.config + @: + +PHONY += xenconfig +xenconfig: xen.config + @: + +PHONY += tinyconfig +tinyconfig: + $(Q)$(MAKE) -f $(srctree)/Makefile allnoconfig tiny.config + +# CHECK: -o cache_dir= working? +PHONY += testconfig +testconfig: $(obj)/conf + $(PYTHON3) -B -m pytest $(srctree)/$(src)/tests \ + -o cache_dir=$(abspath $(obj)/tests/.cache) \ + $(if $(findstring 1,$(KBUILD_VERBOSE)),--capture=no) +clean-dirs += tests/.cache + +# Help text used by make help +help: + @echo ' config - Update current config utilising a line-oriented program' + @echo ' nconfig - Update current config utilising a ncurses menu based' + @echo ' program' + @echo ' menuconfig - Update current config utilising a menu based program' + @echo ' xconfig - Update current config utilising a Qt based front-end' + @echo ' gconfig - Update current config utilising a GTK+ based front-end' + @echo ' oldconfig - Update current config utilising a provided .config as base' + @echo ' localmodconfig - Update current config disabling modules not loaded' + @echo ' localyesconfig - Update current config converting local mods to core' + @echo ' defconfig - New config with default from ARCH supplied defconfig' + @echo ' savedefconfig - Save current config as ./defconfig (minimal config)' + @echo ' allnoconfig - New config where all options are answered with no' + @echo ' allyesconfig - New config where all options are accepted with yes' + @echo ' allmodconfig - New config selecting modules when possible' + @echo ' alldefconfig - New config with all symbols set to default' + @echo ' randconfig - New config with random answer to all options' + @echo ' listnewconfig - List new options' + @echo ' olddefconfig - Same as oldconfig but sets new symbols to their' + @echo ' default value without prompting' + @echo ' kvmconfig - Enable additional options for kvm guest kernel support' + @echo ' xenconfig - Enable additional options for xen dom0 and guest kernel support' + @echo ' tinyconfig - Configure the tiniest possible kernel' + +# lxdialog stuff +check-lxdialog := $(srctree)/$(src)/lxdialog/check-lxdialog.sh + +# Use recursively expanded variables so we do not call gcc unless +# we really need to do so. (Do not call gcc as part of make mrproper) +HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags) \ + -DLOCALE + +# =========================================================================== +# Shared Makefile for the various kconfig executables: +# conf: Used for defconfig, oldconfig and related targets +# nconf: Used for the nconfig target. +# Utilizes ncurses +# mconf: Used for the menuconfig target +# Utilizes the lxdialog package +# qconf: Used for the xconfig target +# Based on Qt which needs to be installed to compile it +# gconf: Used for the gconfig target +# Based on GTK+ which needs to be installed to compile it +# object files used by all kconfig flavours + +lxdialog := lxdialog/checklist.o lxdialog/util.o lxdialog/inputbox.o +lxdialog += lxdialog/textbox.o lxdialog/yesno.o lxdialog/menubox.o + +conf-objs := conf.o zconf.tab.o +mconf-objs := mconf.o zconf.tab.o $(lxdialog) +nconf-objs := nconf.o zconf.tab.o nconf.gui.o +kxgettext-objs := kxgettext.o zconf.tab.o +qconf-cxxobjs := qconf.o +qconf-objs := zconf.tab.o +gconf-objs := gconf.o zconf.tab.o + +hostprogs-y := conf + +ifeq ($(MAKECMDGOALS),nconf) + hostprogs-y += nconf +endif + +ifeq ($(MAKECMDGOALS),mconf) + hostprogs-y += mconf +endif + +ifeq ($(MAKECMDGOALS),update-po-config) + hostprogs-y += kxgettext +endif + +ifeq ($(MAKECMDGOALS),qconf) + qconf-target := 1 +endif + +ifeq ($(MAKECMDGOALS),gconf) + gconf-target := 1 +endif + +ifeq ($(qconf-target),1) + hostprogs-y += qconf +endif + +ifeq ($(gconf-target),1) + hostprogs-y += gconf +endif + +targets += zconf.lex.c +clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck +clean-files += gconf.glade.h +clean-files += config.pot linux.pot + +# Check that we have the required ncurses stuff installed for lxdialog (menuconfig) +PHONY += $(obj)/dochecklxdialog +$(addprefix $(obj)/, mconf.o $(lxdialog)): $(obj)/dochecklxdialog +$(obj)/dochecklxdialog: + $(Q)$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTLOADLIBES_mconf) + +always := dochecklxdialog + +# Add environment specific flags +HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/$(src)/check.sh $(HOSTCC) $(HOSTCFLAGS)) +HOST_EXTRACXXFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/$(src)/check.sh $(HOSTCXX) $(HOSTCXXFLAGS)) + +# generated files seem to need this to find local include files +HOSTCFLAGS_zconf.lex.o := -I$(src) +HOSTCFLAGS_zconf.tab.o := -I$(src) + +HOSTLOADLIBES_qconf = $(KC_QT_LIBS) +HOSTCXXFLAGS_qconf.o = $(KC_QT_CFLAGS) + +HOSTLOADLIBES_gconf = `pkg-config --libs gtk+-2.0 gmodule-2.0 libglade-2.0` +HOSTCFLAGS_gconf.o = `pkg-config --cflags gtk+-2.0 gmodule-2.0 libglade-2.0` \ + -Wno-missing-prototypes + +HOSTLOADLIBES_mconf = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC)) + +HOSTLOADLIBES_nconf = $(shell \ + pkg-config --libs menuw panelw ncursesw 2>/dev/null \ + || pkg-config --libs menu panel ncurses 2>/dev/null \ + || echo "-lmenu -lpanel -lncurses" ) +$(obj)/qconf.o: $(obj)/.tmp_qtcheck + +ifeq ($(MAKECMDGOALS),qconf) +$(obj)/.tmp_qtcheck: $(src)/Makefile +-include $(obj)/.tmp_qtcheck + +# Qt needs some extra effort... +$(obj)/.tmp_qtcheck: + @set -e; $(kecho) " CHECK qt"; \ + if pkg-config --exists Qt5Core; then \ + cflags="-std=c++11 -fPIC `pkg-config --cflags Qt5Core Qt5Gui Qt5Widgets`"; \ + libs=`pkg-config --libs Qt5Core Qt5Gui Qt5Widgets`; \ + moc=`pkg-config --variable=host_bins Qt5Core`/moc; \ + elif pkg-config --exists QtCore; then \ + cflags=`pkg-config --cflags QtCore QtGui`; \ + libs=`pkg-config --libs QtCore QtGui`; \ + moc=`pkg-config --variable=moc_location QtCore`; \ + else \ + echo >&2 "*"; \ + echo >&2 "* Could not find Qt via pkg-config."; \ + echo >&2 "* Please install either Qt 4.8 or 5.x. and make sure it's in PKG_CONFIG_PATH"; \ + echo >&2 "*"; \ + exit 1; \ + fi; \ + echo "KC_QT_CFLAGS=$$cflags" > $@; \ + echo "KC_QT_LIBS=$$libs" >> $@; \ + echo "KC_QT_MOC=$$moc" >> $@ +endif + +ifeq ($(MAKECMDGOALS),gconf) +$(obj)/gconf.o: $(obj)/.tmp_gtkcheck +-include $(obj)/.tmp_gtkcheck + +# GTK+ needs some extra effort, too... +$(obj)/.tmp_gtkcheck: + @if `pkg-config --exists gtk+-2.0 gmodule-2.0 libglade-2.0`; then \ + if `pkg-config --atleast-version=2.0.0 gtk+-2.0`; then \ + touch $@; \ + else \ + echo >&2 "*"; \ + echo >&2 "* GTK+ is present but version >= 2.0.0 is required."; \ + echo >&2 "*"; \ + false; \ + fi \ + else \ + echo >&2 "*"; \ + echo >&2 "* Unable to find the GTK+ installation. Please make sure that"; \ + echo >&2 "* the GTK+ 2.0 development package is correctly installed..."; \ + echo >&2 "* You need gtk+-2.0, glib-2.0 and libglade-2.0."; \ + echo >&2 "*"; \ + false; \ + fi +endif + +$(obj)/zconf.tab.o: $(obj)/zconf.lex.c + +$(obj)/qconf.o: $(obj)/qconf.moc + +$(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck + $(KC_QT_MOC) -i $< -o $@ + +# Extract gconf menu items for i18n support +$(obj)/gconf.glade.h: $(obj)/gconf.glade + $(Q)intltool-extract --type=gettext/glade --srcdir=$(srctree) \ + $(obj)/gconf.glade diff --git a/support/kconfig/Makefile.br b/support/kconfig/Makefile.br new file mode 100644 index 00000000..41c5ce16 --- /dev/null +++ b/support/kconfig/Makefile.br @@ -0,0 +1,53 @@ +src := . +top_srcdir=../../ +top_builddir=../../ +srctree := . +obj ?= . + +include Makefile +#HOSTCFLAGS+=-Dinline="" -include foo.h +-include $(obj)/.depend +$(obj)/.depend: $(wildcard *.h *.c) + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) -MM *.c > $@ 2>/dev/null || : + +__hostprogs := $(sort $(hostprogs-y) $(hostprogs-m)) +host-csingle := $(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m))) +host-cmulti := $(foreach m,$(__hostprogs),\ + $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m)))) +host-cxxmulti := $(foreach m,$(__hostprogs),\ + $(if $($(m)-cxxobjs),$(m),$(if $($(m)-objs),))) +host-cobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(__hostprogs),$($(m)-objs)))) +host-cxxobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(__hostprogs),$($(m)-cxxobjs)))) + +HOST_EXTRACFLAGS += -I$(obj) -DCONFIG_=\"\" + +$(host-csingle): %: %.c + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< -o $(obj)/$@ + +$(host-cmulti): %: $(host-cobjs) $(host-cshlib) + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ + +$(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib) + $(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ + +$(obj)/%.o: %.c + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@ + +$(obj)/%.o: $(obj)/%.c + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@ + +$(obj)/%.o: %.cc + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@ + +$(obj)/%:: $(src)/%_shipped + $(Q)cat $< > $@ + +clean: + $(Q)rm -f $(addprefix $(obj)/,$(clean-files)) +distclean: clean + $(Q)rm -f $(addprefix $(obj)/,$(lxdialog) $(conf-objs) $(mconf-objs) $(kxgettext-objs) \ + $(hostprogs-y) $(qconf-cxxobjs) $(qconf-objs) $(gconf-objs) \ + mconf .depend) + +FORCE: +.PHONY: FORCE clean distclean diff --git a/support/kconfig/POTFILES.in b/support/kconfig/POTFILES.in new file mode 100644 index 00000000..96745739 --- /dev/null +++ b/support/kconfig/POTFILES.in @@ -0,0 +1,12 @@ +scripts/kconfig/lxdialog/checklist.c +scripts/kconfig/lxdialog/inputbox.c +scripts/kconfig/lxdialog/menubox.c +scripts/kconfig/lxdialog/textbox.c +scripts/kconfig/lxdialog/util.c +scripts/kconfig/lxdialog/yesno.c +scripts/kconfig/mconf.c +scripts/kconfig/conf.c +scripts/kconfig/confdata.c +scripts/kconfig/gconf.c +scripts/kconfig/gconf.glade.h +scripts/kconfig/qconf.cc diff --git a/support/kconfig/README.buildroot b/support/kconfig/README.buildroot new file mode 100644 index 00000000..76808f85 --- /dev/null +++ b/support/kconfig/README.buildroot @@ -0,0 +1,25 @@ +This is a copy of the kconfig code in the kernel (currently 4.17-rc2) tweaked +to suit Buildroot. + +To update: + cp -r /usr/src/linux/scripts/kconfig support/kconfig.new + cd support/kconfig.new + # zconf.lex.c and zconf.tab.c needs to be generated by 'make menuconfig' + mv zconf.lex.c zconf.lex.c_shipped + mv zconf.tab.c zconf.tab.c_shipped + rm -rf tests/ + cp -a ../kconfig/patches ../kconfig/README.buildroot ../kconfig/.gitignore . + quilt push -a + # Fix any conflict + cd .. + rm -rf kconfig + mv kconfig.new kconfig + +Then verify the toplevel targets work: + config + defconfig + menuconfig + nconfig + xconfig + gconfig + oldconfig diff --git a/support/kconfig/check.sh b/support/kconfig/check.sh new file mode 100755 index 00000000..97f0fee7 --- /dev/null +++ b/support/kconfig/check.sh @@ -0,0 +1,14 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Needed for systems without gettext +$* -x c -o /dev/null - > /dev/null 2>&1 << EOF +#include +int main() +{ + gettext(""); + return 0; +} +EOF +if [ ! "$?" -eq "0" ]; then + echo -DKBUILD_NO_NLS; +fi diff --git a/support/kconfig/conf.c b/support/kconfig/conf.c new file mode 100644 index 00000000..2d7a7ac4 --- /dev/null +++ b/support/kconfig/conf.c @@ -0,0 +1,716 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lkc.h" + +static void conf(struct menu *menu); +static void check_conf(struct menu *menu); + +enum input_mode { + oldaskconfig, + syncconfig, + oldconfig, + allnoconfig, + allyesconfig, + allmodconfig, + alldefconfig, + randconfig, + defconfig, + savedefconfig, + listnewconfig, + olddefconfig, +}; +static enum input_mode input_mode = oldaskconfig; + +static int indent = 1; +static int tty_stdio; +static int sync_kconfig; +static int conf_cnt; +static char line[PATH_MAX]; +static struct menu *rootEntry; + +static void print_help(struct menu *menu) +{ + struct gstr help = str_new(); + + menu_get_ext_help(menu, &help); + + printf("\n%s\n", str_get(&help)); + str_free(&help); +} + +static void strip(char *str) +{ + char *p = str; + int l; + + while ((isspace(*p))) + p++; + l = strlen(p); + if (p != str) + memmove(str, p, l + 1); + if (!l) + return; + p = str + l - 1; + while ((isspace(*p))) + *p-- = 0; +} + +/* Helper function to facilitate fgets() by Jean Sacren. */ +static void xfgets(char *str, int size, FILE *in) +{ + if (!fgets(str, size, in)) + fprintf(stderr, "\nError in reading or end of file.\n"); + + if (!tty_stdio) + printf("%s", str); +} + +static int conf_askvalue(struct symbol *sym, const char *def) +{ + enum symbol_type type = sym_get_type(sym); + + if (!sym_has_value(sym)) + printf(_("(NEW) ")); + + line[0] = '\n'; + line[1] = 0; + + if (!sym_is_changable(sym)) { + printf("%s\n", def); + line[0] = '\n'; + line[1] = 0; + return 0; + } + + switch (input_mode) { + case oldconfig: + case syncconfig: + if (sym_has_value(sym)) { + printf("%s\n", def); + return 0; + } + /* fall through */ + case oldaskconfig: + fflush(stdout); + xfgets(line, sizeof(line), stdin); + return 1; + default: + break; + } + + switch (type) { + case S_INT: + case S_HEX: + case S_STRING: + printf("%s\n", def); + return 1; + default: + ; + } + printf("%s", line); + return 1; +} + +static int conf_string(struct menu *menu) +{ + struct symbol *sym = menu->sym; + const char *def; + + while (1) { + printf("%*s%s ", indent - 1, "", _(menu->prompt->text)); + printf("(%s) ", sym->name); + def = sym_get_string_value(sym); + if (sym_get_string_value(sym)) + printf("[%s] ", def); + if (!conf_askvalue(sym, def)) + return 0; + switch (line[0]) { + case '\n': + break; + case '?': + /* print help */ + if (line[1] == '\n') { + print_help(menu); + def = NULL; + break; + } + /* fall through */ + default: + line[strlen(line)-1] = 0; + def = line; + } + if (def && sym_set_string_value(sym, def)) + return 0; + } +} + +static int conf_sym(struct menu *menu) +{ + struct symbol *sym = menu->sym; + tristate oldval, newval; + + while (1) { + printf("%*s%s ", indent - 1, "", _(menu->prompt->text)); + if (sym->name) + printf("(%s) ", sym->name); + putchar('['); + oldval = sym_get_tristate_value(sym); + switch (oldval) { + case no: + putchar('N'); + break; + case mod: + putchar('M'); + break; + case yes: + putchar('Y'); + break; + } + if (oldval != no && sym_tristate_within_range(sym, no)) + printf("/n"); + if (oldval != mod && sym_tristate_within_range(sym, mod)) + printf("/m"); + if (oldval != yes && sym_tristate_within_range(sym, yes)) + printf("/y"); + printf("/?] "); + if (!conf_askvalue(sym, sym_get_string_value(sym))) + return 0; + strip(line); + + switch (line[0]) { + case 'n': + case 'N': + newval = no; + if (!line[1] || !strcmp(&line[1], "o")) + break; + continue; + case 'm': + case 'M': + newval = mod; + if (!line[1]) + break; + continue; + case 'y': + case 'Y': + newval = yes; + if (!line[1] || !strcmp(&line[1], "es")) + break; + continue; + case 0: + newval = oldval; + break; + case '?': + goto help; + default: + continue; + } + if (sym_set_tristate_value(sym, newval)) + return 0; +help: + print_help(menu); + } +} + +static int conf_choice(struct menu *menu) +{ + struct symbol *sym, *def_sym; + struct menu *child; + bool is_new; + + sym = menu->sym; + is_new = !sym_has_value(sym); + if (sym_is_changable(sym)) { + conf_sym(menu); + sym_calc_value(sym); + switch (sym_get_tristate_value(sym)) { + case no: + return 1; + case mod: + return 0; + case yes: + break; + } + } else { + switch (sym_get_tristate_value(sym)) { + case no: + return 1; + case mod: + printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu))); + return 0; + case yes: + break; + } + } + + while (1) { + int cnt, def; + + printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu))); + def_sym = sym_get_choice_value(sym); + cnt = def = 0; + line[0] = 0; + for (child = menu->list; child; child = child->next) { + if (!menu_is_visible(child)) + continue; + if (!child->sym) { + printf("%*c %s\n", indent, '*', _(menu_get_prompt(child))); + continue; + } + cnt++; + if (child->sym == def_sym) { + def = cnt; + printf("%*c", indent, '>'); + } else + printf("%*c", indent, ' '); + printf(" %d. %s", cnt, _(menu_get_prompt(child))); + if (child->sym->name) + printf(" (%s)", child->sym->name); + if (!sym_has_value(child->sym)) + printf(_(" (NEW)")); + printf("\n"); + } + printf(_("%*schoice"), indent - 1, ""); + if (cnt == 1) { + printf("[1]: 1\n"); + goto conf_childs; + } + printf("[1-%d?]: ", cnt); + switch (input_mode) { + case oldconfig: + case syncconfig: + if (!is_new) { + cnt = def; + printf("%d\n", cnt); + break; + } + /* fall through */ + case oldaskconfig: + fflush(stdout); + xfgets(line, sizeof(line), stdin); + strip(line); + if (line[0] == '?') { + print_help(menu); + continue; + } + if (!line[0]) + cnt = def; + else if (isdigit(line[0])) + cnt = atoi(line); + else + continue; + break; + default: + break; + } + + conf_childs: + for (child = menu->list; child; child = child->next) { + if (!child->sym || !menu_is_visible(child)) + continue; + if (!--cnt) + break; + } + if (!child) + continue; + if (line[0] && line[strlen(line) - 1] == '?') { + print_help(child); + continue; + } + sym_set_choice_value(sym, child->sym); + for (child = child->list; child; child = child->next) { + indent += 2; + conf(child); + indent -= 2; + } + return 1; + } +} + +static void conf(struct menu *menu) +{ + struct symbol *sym; + struct property *prop; + struct menu *child; + + if (!menu_is_visible(menu)) + return; + + sym = menu->sym; + prop = menu->prompt; + if (prop) { + const char *prompt; + + switch (prop->type) { + case P_MENU: + /* + * Except in oldaskconfig mode, we show only menus that + * contain new symbols. + */ + if (input_mode != oldaskconfig && rootEntry != menu) { + check_conf(menu); + return; + } + /* fall through */ + case P_COMMENT: + prompt = menu_get_prompt(menu); + if (prompt) + printf("%*c\n%*c %s\n%*c\n", + indent, '*', + indent, '*', _(prompt), + indent, '*'); + default: + ; + } + } + + if (!sym) + goto conf_childs; + + if (sym_is_choice(sym)) { + conf_choice(menu); + if (sym->curr.tri != mod) + return; + goto conf_childs; + } + + switch (sym->type) { + case S_INT: + case S_HEX: + case S_STRING: + conf_string(menu); + break; + default: + conf_sym(menu); + break; + } + +conf_childs: + if (sym) + indent += 2; + for (child = menu->list; child; child = child->next) + conf(child); + if (sym) + indent -= 2; +} + +static void check_conf(struct menu *menu) +{ + struct symbol *sym; + struct menu *child; + + if (!menu_is_visible(menu)) + return; + + sym = menu->sym; + if (sym && !sym_has_value(sym)) { + if (sym_is_changable(sym) || + (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) { + if (input_mode == listnewconfig) { + if (sym->name) { + const char *str; + + if (sym->type == S_STRING) { + str = sym_get_string_value(sym); + str = sym_escape_string_value(str); + printf("%s%s=%s\n", CONFIG_, sym->name, str); + free((void *)str); + } else { + str = sym_get_string_value(sym); + printf("%s%s=%s\n", CONFIG_, sym->name, str); + } + } + } else { + if (!conf_cnt++) + printf(_("*\n* Restart config...\n*\n")); + rootEntry = menu_get_parent_menu(menu); + conf(rootEntry); + } + } + } + + for (child = menu->list; child; child = child->next) + check_conf(child); +} + +static struct option long_opts[] = { + {"oldaskconfig", no_argument, NULL, oldaskconfig}, + {"oldconfig", no_argument, NULL, oldconfig}, + {"syncconfig", no_argument, NULL, syncconfig}, + {"defconfig", optional_argument, NULL, defconfig}, + {"savedefconfig", required_argument, NULL, savedefconfig}, + {"allnoconfig", no_argument, NULL, allnoconfig}, + {"allyesconfig", no_argument, NULL, allyesconfig}, + {"allmodconfig", no_argument, NULL, allmodconfig}, + {"alldefconfig", no_argument, NULL, alldefconfig}, + {"randconfig", no_argument, NULL, randconfig}, + {"listnewconfig", no_argument, NULL, listnewconfig}, + {"olddefconfig", no_argument, NULL, olddefconfig}, + /* + * oldnoconfig is an alias of olddefconfig, because people already + * are dependent on its behavior(sets new symbols to their default + * value but not 'n') with the counter-intuitive name. + */ + {"oldnoconfig", no_argument, NULL, olddefconfig}, + {NULL, 0, NULL, 0} +}; + +static void conf_usage(const char *progname) +{ + + printf("Usage: %s [-s] [option] \n", progname); + printf("[option] is _one_ of the following:\n"); + printf(" --listnewconfig List new options\n"); + printf(" --oldaskconfig Start a new configuration using a line-oriented program\n"); + printf(" --oldconfig Update a configuration using a provided .config as base\n"); + printf(" --syncconfig Similar to oldconfig but generates configuration in\n" + " include/{generated/,config/}\n"); + printf(" --olddefconfig Same as oldconfig but sets new symbols to their default value\n"); + printf(" --oldnoconfig An alias of olddefconfig\n"); + printf(" --defconfig New config with default defined in \n"); + printf(" --savedefconfig Save the minimal current configuration to \n"); + printf(" --allnoconfig New config where all options are answered with no\n"); + printf(" --allyesconfig New config where all options are answered with yes\n"); + printf(" --allmodconfig New config where all options are answered with mod\n"); + printf(" --alldefconfig New config with all symbols set to default\n"); + printf(" --randconfig New config with random answer to all options\n"); +} + +int main(int ac, char **av) +{ + const char *progname = av[0]; + int opt; + const char *name, *defconfig_file = NULL /* gcc uninit */; + struct stat tmpstat; + + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + tty_stdio = isatty(0) && isatty(1); + + while ((opt = getopt_long(ac, av, "s", long_opts, NULL)) != -1) { + if (opt == 's') { + conf_set_message_callback(NULL); + continue; + } + input_mode = (enum input_mode)opt; + switch (opt) { + case syncconfig: + sync_kconfig = 1; + break; + case defconfig: + case savedefconfig: + defconfig_file = optarg; + break; + case randconfig: + { + struct timeval now; + unsigned int seed; + char *seed_env; + + /* + * Use microseconds derived seed, + * compensate for systems where it may be zero + */ + gettimeofday(&now, NULL); + seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1)); + + seed_env = getenv("KCONFIG_SEED"); + if( seed_env && *seed_env ) { + char *endp; + int tmp = (int)strtol(seed_env, &endp, 0); + if (*endp == '\0') { + seed = tmp; + } + } + fprintf( stderr, "KCONFIG_SEED=0x%X\n", seed ); + srand(seed); + break; + } + case oldaskconfig: + case oldconfig: + case allnoconfig: + case allyesconfig: + case allmodconfig: + case alldefconfig: + case listnewconfig: + case olddefconfig: + break; + case '?': + conf_usage(progname); + exit(1); + break; + } + } + if (ac == optind) { + fprintf(stderr, _("%s: Kconfig file missing\n"), av[0]); + conf_usage(progname); + exit(1); + } + name = av[optind]; + conf_parse(name); + if (sync_kconfig) { + name = conf_get_configname(); + if (stat(name, &tmpstat)) { + fprintf(stderr, _("***\n" + "*** Configuration file \"%s\" not found!\n" + "***\n" + "*** Please run some configurator (e.g. \"make oldconfig\" or\n" + "*** \"make menuconfig\" or \"make xconfig\").\n" + "***\n"), name); + exit(1); + } + } + + switch (input_mode) { + case defconfig: + if (!defconfig_file) + defconfig_file = conf_get_default_confname(); + if (conf_read(defconfig_file)) { + fprintf(stderr, + _("***\n" + "*** Can't find default configuration \"%s\"!\n" + "***\n"), + defconfig_file); + exit(1); + } + break; + case savedefconfig: + case syncconfig: + case oldaskconfig: + case oldconfig: + case listnewconfig: + case olddefconfig: + conf_read(NULL); + break; + case allnoconfig: + case allyesconfig: + case allmodconfig: + case alldefconfig: + case randconfig: + name = getenv("KCONFIG_ALLCONFIG"); + if (!name) + break; + if ((strcmp(name, "") != 0) && (strcmp(name, "1") != 0)) { + if (conf_read_simple(name, S_DEF_USER)) { + fprintf(stderr, + _("*** Can't read seed configuration \"%s\"!\n"), + name); + exit(1); + } + break; + } + switch (input_mode) { + case allnoconfig: name = "allno.config"; break; + case allyesconfig: name = "allyes.config"; break; + case allmodconfig: name = "allmod.config"; break; + case alldefconfig: name = "alldef.config"; break; + case randconfig: name = "allrandom.config"; break; + default: break; + } + if (conf_read_simple(name, S_DEF_USER) && + conf_read_simple("all.config", S_DEF_USER)) { + fprintf(stderr, + _("*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n"), + name); + exit(1); + } + break; + default: + break; + } + + if (sync_kconfig) { + if (conf_get_changed()) { + name = getenv("KCONFIG_NOSILENTUPDATE"); + if (name && *name) { + fprintf(stderr, + _("\n*** The configuration requires explicit update.\n\n")); + return 1; + } + } + } + + switch (input_mode) { + case allnoconfig: + conf_set_all_new_symbols(def_no); + break; + case allyesconfig: + conf_set_all_new_symbols(def_yes); + break; + case allmodconfig: + conf_set_all_new_symbols(def_mod); + break; + case alldefconfig: + conf_set_all_new_symbols(def_default); + break; + case randconfig: + /* Really nothing to do in this loop */ + while (conf_set_all_new_symbols(def_random)) ; + break; + case defconfig: + conf_set_all_new_symbols(def_default); + break; + case savedefconfig: + break; + case oldaskconfig: + rootEntry = &rootmenu; + conf(&rootmenu); + input_mode = oldconfig; + /* fall through */ + case oldconfig: + case listnewconfig: + case syncconfig: + /* Update until a loop caused no more changes */ + do { + conf_cnt = 0; + check_conf(&rootmenu); + } while (conf_cnt); + break; + case olddefconfig: + default: + break; + } + + if (sync_kconfig) { + /* syncconfig is used during the build so we shall update autoconf. + * All other commands are only used to generate a config. + */ + if (conf_get_changed() && conf_write(NULL)) { + fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n")); + exit(1); + } + if (conf_write_autoconf()) { + fprintf(stderr, _("\n*** Error during update of the configuration.\n\n")); + return 1; + } + } else if (input_mode == savedefconfig) { + if (conf_write_defconfig(defconfig_file)) { + fprintf(stderr, _("n*** Error while saving defconfig to: %s\n\n"), + defconfig_file); + return 1; + } + } else if (input_mode != listnewconfig) { + if (conf_write(NULL)) { + fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n")); + exit(1); + } + } + return 0; +} diff --git a/support/kconfig/confdata.c b/support/kconfig/confdata.c new file mode 100644 index 00000000..9ab980ed --- /dev/null +++ b/support/kconfig/confdata.c @@ -0,0 +1,1282 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lkc.h" + +struct conf_printer { + void (*print_symbol)(FILE *, struct symbol *, const char *, void *); + void (*print_comment)(FILE *, const char *, void *); +}; + +static void conf_warning(const char *fmt, ...) + __attribute__ ((format (printf, 1, 2))); + +static void conf_message(const char *fmt, ...) + __attribute__ ((format (printf, 1, 2))); + +static const char *conf_filename; +static int conf_lineno, conf_warnings; + +const char conf_defname[] = ".defconfig"; + +static void conf_warning(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + fprintf(stderr, "%s:%d:warning: ", conf_filename, conf_lineno); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + va_end(ap); + conf_warnings++; +} + +static void conf_default_message_callback(const char *fmt, va_list ap) +{ + printf("#\n# "); + vprintf(fmt, ap); + printf("\n#\n"); +} + +static void (*conf_message_callback) (const char *fmt, va_list ap) = + conf_default_message_callback; +void conf_set_message_callback(void (*fn) (const char *fmt, va_list ap)) +{ + conf_message_callback = fn; +} + +static void conf_message(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + if (conf_message_callback) + conf_message_callback(fmt, ap); + va_end(ap); +} + +const char *conf_get_configname(void) +{ + char *name = getenv("BR2_CONFIG"); + + return name ? name : ".config"; +} + +const char *conf_get_autoconfig_name(void) +{ + return getenv("KCONFIG_AUTOCONFIG"); +} + +static char *conf_expand_value(const char *in) +{ + struct symbol *sym; + const char *src; + static char res_value[SYMBOL_MAXLENGTH]; + char *dst, name[SYMBOL_MAXLENGTH]; + + res_value[0] = 0; + dst = name; + while ((src = strchr(in, '$'))) { + strncat(res_value, in, src - in); + src++; + dst = name; + while (isalnum(*src) || *src == '_') + *dst++ = *src++; + *dst = 0; + sym = sym_lookup(name, 0); + sym_calc_value(sym); + strcat(res_value, sym_get_string_value(sym)); + in = src; + } + strcat(res_value, in); + + return res_value; +} + +char *conf_get_default_confname(void) +{ + struct stat buf; + static char fullname[PATH_MAX+1]; + char *env, *name; + + name = conf_expand_value(conf_defname); + env = getenv(SRCTREE); + if (env) { + sprintf(fullname, "%s/%s", env, name); + if (!stat(fullname, &buf)) + return fullname; + } + return name; +} + +static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p) +{ + char *p2; + + switch (sym->type) { + case S_TRISTATE: + if (p[0] == 'm') { + sym->def[def].tri = mod; + sym->flags |= def_flags; + break; + } + /* fall through */ + case S_BOOLEAN: + if (p[0] == 'y') { + sym->def[def].tri = yes; + sym->flags |= def_flags; + break; + } + if (p[0] == 'n') { + sym->def[def].tri = no; + sym->flags |= def_flags; + break; + } + if (def != S_DEF_AUTO) + conf_warning("symbol value '%s' invalid for %s", + p, sym->name); + return 1; + case S_OTHER: + if (*p != '"') { + for (p2 = p; *p2 && !isspace(*p2); p2++) + ; + sym->type = S_STRING; + goto done; + } + /* fall through */ + case S_STRING: + if (*p++ != '"') + break; + for (p2 = p; (p2 = strpbrk(p2, "\"\\")); p2++) { + if (*p2 == '"') { + *p2 = 0; + break; + } + memmove(p2, p2 + 1, strlen(p2)); + } + if (!p2) { + if (def != S_DEF_AUTO) + conf_warning("invalid string found"); + return 1; + } + /* fall through */ + case S_INT: + case S_HEX: + done: + if (sym_string_valid(sym, p)) { + sym->def[def].val = xstrdup(p); + sym->flags |= def_flags; + } else { + if (def != S_DEF_AUTO) + conf_warning("symbol value '%s' invalid for %s", + p, sym->name); + return 1; + } + break; + default: + ; + } + return 0; +} + +#define LINE_GROWTH 16 +static int add_byte(int c, char **lineptr, size_t slen, size_t *n) +{ + char *nline; + size_t new_size = slen + 1; + if (new_size > *n) { + new_size += LINE_GROWTH - 1; + new_size *= 2; + nline = xrealloc(*lineptr, new_size); + if (!nline) + return -1; + + *lineptr = nline; + *n = new_size; + } + + (*lineptr)[slen] = c; + + return 0; +} + +static ssize_t compat_getline(char **lineptr, size_t *n, FILE *stream) +{ + char *line = *lineptr; + size_t slen = 0; + + for (;;) { + int c = getc(stream); + + switch (c) { + case '\n': + if (add_byte(c, &line, slen, n) < 0) + goto e_out; + slen++; + /* fall through */ + case EOF: + if (add_byte('\0', &line, slen, n) < 0) + goto e_out; + *lineptr = line; + if (slen == 0) + return -1; + return slen; + default: + if (add_byte(c, &line, slen, n) < 0) + goto e_out; + slen++; + } + } + +e_out: + line[slen-1] = '\0'; + *lineptr = line; + return -1; +} + +int conf_read_simple(const char *name, int def) +{ + FILE *in = NULL; + char *line = NULL; + size_t line_asize = 0; + char *p, *p2; + struct symbol *sym; + int i, def_flags; + + if (name) { + in = zconf_fopen(name); + } else { + struct property *prop; + + name = conf_get_configname(); + in = zconf_fopen(name); + if (in) + goto load; + sym_add_change_count(1); + if (!sym_defconfig_list) + return 1; + + for_all_defaults(sym_defconfig_list, prop) { + if (expr_calc_value(prop->visible.expr) == no || + prop->expr->type != E_SYMBOL) + continue; + name = conf_expand_value(prop->expr->left.sym->name); + in = zconf_fopen(name); + if (in) { + conf_message(_("using defaults found in %s"), + name); + goto load; + } + } + } + if (!in) + return 1; + +load: + conf_filename = name; + conf_lineno = 0; + conf_warnings = 0; + + def_flags = SYMBOL_DEF << def; + for_all_symbols(i, sym) { + sym->flags |= SYMBOL_CHANGED; + sym->flags &= ~(def_flags|SYMBOL_VALID); + if (sym_is_choice(sym)) + sym->flags |= def_flags; + switch (sym->type) { + case S_INT: + case S_HEX: + case S_STRING: + if (sym->def[def].val) + free(sym->def[def].val); + /* fall through */ + default: + sym->def[def].val = NULL; + sym->def[def].tri = no; + } + } + + while (compat_getline(&line, &line_asize, in) != -1) { + conf_lineno++; + sym = NULL; + if (line[0] == '#') { + if (memcmp(line + 2, CONFIG_, strlen(CONFIG_))) + continue; + p = strchr(line + 2 + strlen(CONFIG_), ' '); + if (!p) + continue; + *p++ = 0; + if (strncmp(p, "is not set", 10)) + continue; + if (def == S_DEF_USER) { + sym = sym_find(line + 2 + strlen(CONFIG_)); + if (!sym) { + sym_add_change_count(1); + goto setsym; + } + } else { + sym = sym_lookup(line + 2 + strlen(CONFIG_), 0); + if (sym->type == S_UNKNOWN) + sym->type = S_BOOLEAN; + } + if (sym->flags & def_flags) { + conf_warning("override: reassigning to symbol %s", sym->name); + } + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + sym->def[def].tri = no; + sym->flags |= def_flags; + break; + default: + ; + } + } else if (memcmp(line, CONFIG_, strlen(CONFIG_)) == 0) { + p = strchr(line + strlen(CONFIG_), '='); + if (!p) + continue; + *p++ = 0; + p2 = strchr(p, '\n'); + if (p2) { + *p2-- = 0; + if (*p2 == '\r') + *p2 = 0; + } + if (def == S_DEF_USER) { + sym = sym_find(line + strlen(CONFIG_)); + if (!sym) { + sym_add_change_count(1); + goto setsym; + } + } else { + sym = sym_lookup(line + strlen(CONFIG_), 0); + if (sym->type == S_UNKNOWN) + sym->type = S_OTHER; + } + if (sym->flags & def_flags) { + conf_warning("override: reassigning to symbol %s", sym->name); + } + if (conf_set_sym_val(sym, def, def_flags, p)) + continue; + } else { + if (line[0] != '\r' && line[0] != '\n') + conf_warning("unexpected data: %.*s", + (int)strcspn(line, "\r\n"), line); + + continue; + } +setsym: + if (sym && sym_is_choice_value(sym)) { + struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym)); + switch (sym->def[def].tri) { + case no: + break; + case mod: + if (cs->def[def].tri == yes) { + conf_warning("%s creates inconsistent choice state", sym->name); + cs->flags &= ~def_flags; + } + break; + case yes: + if (cs->def[def].tri != no) + conf_warning("override: %s changes choice state", sym->name); + cs->def[def].val = sym; + break; + } + cs->def[def].tri = EXPR_OR(cs->def[def].tri, sym->def[def].tri); + } + } + free(line); + fclose(in); + return 0; +} + +int conf_read(const char *name) +{ + struct symbol *sym; + int conf_unsaved = 0; + int i; + + sym_set_change_count(0); + + if (conf_read_simple(name, S_DEF_USER)) { + sym_calc_value(modules_sym); + return 1; + } + + sym_calc_value(modules_sym); + + for_all_symbols(i, sym) { + sym_calc_value(sym); + if (sym_is_choice(sym) || (sym->flags & SYMBOL_AUTO)) + continue; + if (sym_has_value(sym) && (sym->flags & SYMBOL_WRITE)) { + /* check that calculated value agrees with saved value */ + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (sym->def[S_DEF_USER].tri != sym_get_tristate_value(sym)) + break; + if (!sym_is_choice(sym)) + continue; + /* fall through */ + default: + if (!strcmp(sym->curr.val, sym->def[S_DEF_USER].val)) + continue; + break; + } + } else if (!sym_has_value(sym) && !(sym->flags & SYMBOL_WRITE)) + /* no previous value and not saved */ + continue; + conf_unsaved++; + /* maybe print value in verbose mode... */ + } + + for_all_symbols(i, sym) { + if (sym_has_value(sym) && !sym_is_choice_value(sym)) { + /* Reset values of generates values, so they'll appear + * as new, if they should become visible, but that + * doesn't quite work if the Kconfig and the saved + * configuration disagree. + */ + if (sym->visible == no && !conf_unsaved) + sym->flags &= ~SYMBOL_DEF_USER; + switch (sym->type) { + case S_STRING: + case S_INT: + case S_HEX: + /* Reset a string value if it's out of range */ + if (sym_string_within_range(sym, sym->def[S_DEF_USER].val)) + break; + sym->flags &= ~(SYMBOL_VALID|SYMBOL_DEF_USER); + conf_unsaved++; + break; + default: + break; + } + } + } + + sym_add_change_count(conf_warnings || conf_unsaved); + + return 0; +} + +/* + * Kconfig configuration printer + * + * This printer is used when generating the resulting configuration after + * kconfig invocation and `defconfig' files. Unset symbol might be omitted by + * passing a non-NULL argument to the printer. + * + */ +static void +kconfig_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +{ + + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (*value == 'n') { + bool skip_unset = (arg != NULL); + + if (!skip_unset) + fprintf(fp, "# %s%s is not set\n", + CONFIG_, sym->name); + return; + } + break; + default: + break; + } + + fprintf(fp, "%s%s=%s\n", CONFIG_, sym->name, value); +} + +static void +kconfig_print_comment(FILE *fp, const char *value, void *arg) +{ + const char *p = value; + size_t l; + + for (;;) { + l = strcspn(p, "\n"); + fprintf(fp, "#"); + if (l) { + fprintf(fp, " "); + xfwrite(p, l, 1, fp); + p += l; + } + fprintf(fp, "\n"); + if (*p++ == '\0') + break; + } +} + +static struct conf_printer kconfig_printer_cb = +{ + .print_symbol = kconfig_print_symbol, + .print_comment = kconfig_print_comment, +}; + +/* + * Header printer + * + * This printer is used when generating the `include/generated/autoconf.h' file. + */ +static void +header_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +{ + + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: { + const char *suffix = ""; + + switch (*value) { + case 'n': + break; + case 'm': + suffix = "_MODULE"; + /* fall through */ + default: + fprintf(fp, "#define %s%s%s 1\n", + CONFIG_, sym->name, suffix); + } + break; + } + case S_HEX: { + const char *prefix = ""; + + if (value[0] != '0' || (value[1] != 'x' && value[1] != 'X')) + prefix = "0x"; + fprintf(fp, "#define %s%s %s%s\n", + CONFIG_, sym->name, prefix, value); + break; + } + case S_STRING: + case S_INT: + fprintf(fp, "#define %s%s %s\n", + CONFIG_, sym->name, value); + break; + default: + break; + } + +} + +static void +header_print_comment(FILE *fp, const char *value, void *arg) +{ + const char *p = value; + size_t l; + + fprintf(fp, "/*\n"); + for (;;) { + l = strcspn(p, "\n"); + fprintf(fp, " *"); + if (l) { + fprintf(fp, " "); + xfwrite(p, l, 1, fp); + p += l; + } + fprintf(fp, "\n"); + if (*p++ == '\0') + break; + } + fprintf(fp, " */\n"); +} + +static struct conf_printer header_printer_cb = +{ + .print_symbol = header_print_symbol, + .print_comment = header_print_comment, +}; + +/* + * Tristate printer + * + * This printer is used when generating the `include/config/tristate.conf' file. + */ +static void +tristate_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +{ + + if (sym->type == S_TRISTATE && *value != 'n') + fprintf(fp, "%s%s=%c\n", CONFIG_, sym->name, (char)toupper(*value)); +} + +static struct conf_printer tristate_printer_cb = +{ + .print_symbol = tristate_print_symbol, + .print_comment = kconfig_print_comment, +}; + +static void conf_write_symbol(FILE *fp, struct symbol *sym, + struct conf_printer *printer, void *printer_arg) +{ + const char *str; + + switch (sym->type) { + case S_OTHER: + case S_UNKNOWN: + break; + case S_STRING: + str = sym_get_string_value(sym); + str = sym_escape_string_value(str); + printer->print_symbol(fp, sym, str, printer_arg); + free((void *)str); + break; + default: + str = sym_get_string_value(sym); + printer->print_symbol(fp, sym, str, printer_arg); + } +} + +static void +conf_write_heading(FILE *fp, struct conf_printer *printer, void *printer_arg) +{ + char buf[256]; + + snprintf(buf, sizeof(buf), + "\n" + "Automatically generated file; DO NOT EDIT.\n" + "%s\n", + rootmenu.prompt->text); + + printer->print_comment(fp, buf, printer_arg); +} + +/* + * Write out a minimal config. + * All values that has default values are skipped as this is redundant. + */ +int conf_write_defconfig(const char *filename) +{ + struct symbol *sym; + struct menu *menu; + FILE *out; + + out = fopen(filename, "w"); + if (!out) + return 1; + + sym_clear_all_valid(); + + /* Traverse all menus to find all relevant symbols */ + menu = rootmenu.list; + + while (menu != NULL) + { + sym = menu->sym; + if (sym == NULL) { + if (!menu_is_visible(menu)) + goto next_menu; + } else if (!sym_is_choice(sym)) { + sym_calc_value(sym); + if (!(sym->flags & SYMBOL_WRITE)) + goto next_menu; + sym->flags &= ~SYMBOL_WRITE; + /* If we cannot change the symbol - skip */ + if (!sym_is_changable(sym)) + goto next_menu; + /* If symbol equals to default value - skip */ + if (strcmp(sym_get_string_value(sym), sym_get_string_default(sym)) == 0) + goto next_menu; + + /* + * If symbol is a choice value and equals to the + * default for a choice - skip. + * But only if value is bool and equal to "y" and + * choice is not "optional". + * (If choice is "optional" then all values can be "n") + */ + if (sym_is_choice_value(sym)) { + struct symbol *cs; + struct symbol *ds; + + cs = prop_get_symbol(sym_get_choice_prop(sym)); + ds = sym_choice_default(cs); + if (!sym_is_optional(cs) && sym == ds) { + if ((sym->type == S_BOOLEAN) && + sym_get_tristate_value(sym) == yes) + goto next_menu; + } + } + conf_write_symbol(out, sym, &kconfig_printer_cb, NULL); + } +next_menu: + if (menu->list != NULL) { + menu = menu->list; + } + else if (menu->next != NULL) { + menu = menu->next; + } else { + while ((menu = menu->parent)) { + if (menu->next != NULL) { + menu = menu->next; + break; + } + } + } + } + fclose(out); + return 0; +} + +int conf_write(const char *name) +{ + FILE *out; + struct symbol *sym; + struct menu *menu; + const char *basename; + const char *str; + char dirname[PATH_MAX+1], tmpname[PATH_MAX+20], newname[PATH_MAX+1]; + char *env; + + if (!name) + name = conf_get_configname(); + + dirname[0] = 0; + if (name && name[0]) { + struct stat st; + char *slash; + + if (!stat(name, &st) && S_ISDIR(st.st_mode)) { + strcpy(dirname, name); + strcat(dirname, "/"); + basename = conf_get_configname(); + } else if ((slash = strrchr(name, '/'))) { + int size = slash - name + 1; + memcpy(dirname, name, size); + dirname[size] = 0; + if (slash[1]) + basename = slash + 1; + else + basename = conf_get_configname(); + } else + basename = name; + } else + basename = conf_get_configname(); + + sprintf(newname, "%s%s", dirname, basename); + env = getenv("KCONFIG_OVERWRITECONFIG"); + if (!env || !*env) { + sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid()); + out = fopen(tmpname, "w"); + } else { + *tmpname = 0; + out = fopen(newname, "w"); + } + if (!out) + return 1; + + conf_write_heading(out, &kconfig_printer_cb, NULL); + + if (!conf_get_changed()) + sym_clear_all_valid(); + + menu = rootmenu.list; + while (menu) { + sym = menu->sym; + if (!sym) { + if (!menu_is_visible(menu)) + goto next; + str = menu_get_prompt(menu); + fprintf(out, "\n" + "#\n" + "# %s\n" + "#\n", str); + } else if (!(sym->flags & SYMBOL_CHOICE)) { + sym_calc_value(sym); + if (!(sym->flags & SYMBOL_WRITE)) + goto next; + sym->flags &= ~SYMBOL_WRITE; + + conf_write_symbol(out, sym, &kconfig_printer_cb, NULL); + } + +next: + if (menu->list) { + menu = menu->list; + continue; + } + if (menu->next) + menu = menu->next; + else while ((menu = menu->parent)) { + if (menu->next) { + menu = menu->next; + break; + } + } + } + fclose(out); + + if (*tmpname) { + strcat(dirname, basename); + strcat(dirname, ".old"); + rename(newname, dirname); + if (rename(tmpname, newname)) + return 1; + } + + conf_message(_("configuration written to %s"), newname); + + sym_set_change_count(0); + + return 0; +} + +static int conf_split_config(void) +{ + const char *name; + char path[PATH_MAX+1]; + char *opwd, *dir, *_name; + char *s, *d, c; + struct symbol *sym; + struct stat sb; + int res, i, fd; + + name = conf_get_autoconfig_name(); + conf_read_simple(name, S_DEF_AUTO); + sym_calc_value(modules_sym); + + opwd = malloc(256); + _name = strdup(name); + if (opwd == NULL || _name == NULL) + return 1; + opwd = getcwd(opwd, 256); + dir = dirname(_name); + if (dir == NULL) { + res = 1; + goto err; + } + if (chdir(dir)) { + res = 1; + goto err; + } + + res = 0; + for_all_symbols(i, sym) { + sym_calc_value(sym); + if ((sym->flags & SYMBOL_AUTO) || !sym->name) + continue; + if (sym->flags & SYMBOL_WRITE) { + if (sym->flags & SYMBOL_DEF_AUTO) { + /* + * symbol has old and new value, + * so compare them... + */ + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (sym_get_tristate_value(sym) == + sym->def[S_DEF_AUTO].tri) + continue; + break; + case S_STRING: + case S_HEX: + case S_INT: + if (!strcmp(sym_get_string_value(sym), + sym->def[S_DEF_AUTO].val)) + continue; + break; + default: + break; + } + } else { + /* + * If there is no old value, only 'no' (unset) + * is allowed as new value. + */ + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (sym_get_tristate_value(sym) == no) + continue; + break; + default: + break; + } + } + } else if (!(sym->flags & SYMBOL_DEF_AUTO)) + /* There is neither an old nor a new value. */ + continue; + /* else + * There is an old value, but no new value ('no' (unset) + * isn't saved in auto.conf, so the old value is always + * different from 'no'). + */ + + /* Replace all '_' and append ".h" */ + s = sym->name; + d = path; + while ((c = *s++)) { + c = tolower(c); + *d++ = (c == '_') ? '/' : c; + } + strcpy(d, ".h"); + + /* Assume directory path already exists. */ + fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); + if (fd == -1) { + if (errno != ENOENT) { + res = 1; + break; + } + /* + * Create directory components, + * unless they exist already. + */ + d = path; + while ((d = strchr(d, '/'))) { + *d = 0; + if (stat(path, &sb) && mkdir(path, 0755)) { + res = 1; + goto out; + } + *d++ = '/'; + } + /* Try it again. */ + fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); + if (fd == -1) { + res = 1; + break; + } + } + close(fd); + } +out: + if (chdir(opwd)) + res = 1; +err: + free(opwd); + free(_name); + return res; +} + +int conf_write_autoconf(void) +{ + struct symbol *sym; + const char *name; + FILE *out, *tristate, *out_h; + int i; + char dir[PATH_MAX+1], buf[PATH_MAX+20]; + char *s; + + strcpy(dir, conf_get_configname()); + s = strrchr(dir, '/'); + if (s) + s[1] = 0; + else + dir[0] = 0; + + sym_clear_all_valid(); + + sprintf(buf, "%s.config.cmd", dir); + file_write_dep(buf); + + if (conf_split_config()) + return 1; + + sprintf(buf, "%s.tmpconfig", dir); + out = fopen(buf, "w"); + if (!out) + return 1; + + sprintf(buf, "%s.tmpconfig_tristate", dir); + tristate = fopen(buf, "w"); + if (!tristate) { + fclose(out); + return 1; + } + + sprintf(buf, "%s.tmpconfig.h", dir); + out_h = fopen(buf, "w"); + if (!out_h) { + fclose(out); + fclose(tristate); + return 1; + } + + conf_write_heading(out, &kconfig_printer_cb, NULL); + + conf_write_heading(tristate, &tristate_printer_cb, NULL); + + conf_write_heading(out_h, &header_printer_cb, NULL); + + for_all_symbols(i, sym) { + sym_calc_value(sym); + if (!(sym->flags & SYMBOL_WRITE) || !sym->name) + continue; + + /* write symbol to auto.conf, tristate and header files */ + conf_write_symbol(out, sym, &kconfig_printer_cb, (void *)1); + + conf_write_symbol(tristate, sym, &tristate_printer_cb, (void *)1); + + conf_write_symbol(out_h, sym, &header_printer_cb, NULL); + } + fclose(out); + fclose(tristate); + fclose(out_h); + + name = getenv("KCONFIG_AUTOHEADER"); + if (!name) + name = "include/generated/autoconf.h"; + sprintf(buf, "%s.tmpconfig.h", dir); + if (rename(buf, name)) + return 1; + name = getenv("KCONFIG_TRISTATE"); + if (!name) + name = "include/config/tristate.conf"; + sprintf(buf, "%s.tmpconfig_tristate", dir); + if (rename(buf, name)) + return 1; + name = conf_get_autoconfig_name(); + /* + * This must be the last step, kbuild has a dependency on auto.conf + * and this marks the successful completion of the previous steps. + */ + sprintf(buf, "%s.tmpconfig", dir); + if (rename(buf, name)) + return 1; + + return 0; +} + +static int sym_change_count; +static void (*conf_changed_callback)(void); + +void sym_set_change_count(int count) +{ + int _sym_change_count = sym_change_count; + sym_change_count = count; + if (conf_changed_callback && + (bool)_sym_change_count != (bool)count) + conf_changed_callback(); +} + +void sym_add_change_count(int count) +{ + sym_set_change_count(count + sym_change_count); +} + +bool conf_get_changed(void) +{ + return sym_change_count; +} + +void conf_set_changed_callback(void (*fn)(void)) +{ + conf_changed_callback = fn; +} + +static bool randomize_choice_values(struct symbol *csym) +{ + struct property *prop; + struct symbol *sym; + struct expr *e; + int cnt, def; + + /* + * If choice is mod then we may have more items selected + * and if no then no-one. + * In both cases stop. + */ + if (csym->curr.tri != yes) + return false; + + prop = sym_get_choice_prop(csym); + + /* count entries in choice block */ + cnt = 0; + expr_list_for_each_sym(prop->expr, e, sym) + cnt++; + + /* + * find a random value and set it to yes, + * set the rest to no so we have only one set + */ + def = (rand() % cnt); + + cnt = 0; + expr_list_for_each_sym(prop->expr, e, sym) { + if (def == cnt++) { + sym->def[S_DEF_USER].tri = yes; + csym->def[S_DEF_USER].val = sym; + } + else { + sym->def[S_DEF_USER].tri = no; + } + sym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + sym->flags &= ~SYMBOL_VALID; + } + csym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + csym->flags &= ~(SYMBOL_VALID); + + return true; +} + +void set_all_choice_values(struct symbol *csym) +{ + struct property *prop; + struct symbol *sym; + struct expr *e; + + prop = sym_get_choice_prop(csym); + + /* + * Set all non-assinged choice values to no + */ + expr_list_for_each_sym(prop->expr, e, sym) { + if (!sym_has_value(sym)) + sym->def[S_DEF_USER].tri = no; + } + csym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + csym->flags &= ~(SYMBOL_VALID | SYMBOL_NEED_SET_CHOICE_VALUES); +} + +bool conf_set_all_new_symbols(enum conf_def_mode mode) +{ + struct symbol *sym, *csym; + int i, cnt, pby, pty, ptm; /* pby: probability of bool = y + * pty: probability of tristate = y + * ptm: probability of tristate = m + */ + + pby = 50; pty = ptm = 33; /* can't go as the default in switch-case + * below, otherwise gcc whines about + * -Wmaybe-uninitialized */ + if (mode == def_random) { + int n, p[3]; + char *env = getenv("KCONFIG_PROBABILITY"); + n = 0; + while( env && *env ) { + char *endp; + int tmp = strtol( env, &endp, 10 ); + if( tmp >= 0 && tmp <= 100 ) { + p[n++] = tmp; + } else { + errno = ERANGE; + perror( "KCONFIG_PROBABILITY" ); + exit( 1 ); + } + env = (*endp == ':') ? endp+1 : endp; + if( n >=3 ) { + break; + } + } + switch( n ) { + case 1: + pby = p[0]; ptm = pby/2; pty = pby-ptm; + break; + case 2: + pty = p[0]; ptm = p[1]; pby = pty + ptm; + break; + case 3: + pby = p[0]; pty = p[1]; ptm = p[2]; + break; + } + + if( pty+ptm > 100 ) { + errno = ERANGE; + perror( "KCONFIG_PROBABILITY" ); + exit( 1 ); + } + } + bool has_changed = false; + + for_all_symbols(i, sym) { + if (sym_has_value(sym) || (sym->flags & SYMBOL_VALID)) + continue; + switch (sym_get_type(sym)) { + case S_BOOLEAN: + case S_TRISTATE: + has_changed = true; + switch (mode) { + case def_yes: + sym->def[S_DEF_USER].tri = yes; + break; + case def_mod: + sym->def[S_DEF_USER].tri = mod; + break; + case def_no: + if (sym->flags & SYMBOL_ALLNOCONFIG_Y) + sym->def[S_DEF_USER].tri = yes; + else + sym->def[S_DEF_USER].tri = no; + break; + case def_random: + sym->def[S_DEF_USER].tri = no; + cnt = rand() % 100; + if (sym->type == S_TRISTATE) { + if (cnt < pty) + sym->def[S_DEF_USER].tri = yes; + else if (cnt < (pty+ptm)) + sym->def[S_DEF_USER].tri = mod; + } else if (cnt < pby) + sym->def[S_DEF_USER].tri = yes; + break; + default: + continue; + } + if (!(sym_is_choice(sym) && mode == def_random)) + sym->flags |= SYMBOL_DEF_USER; + break; + default: + break; + } + + } + + sym_clear_all_valid(); + + /* + * We have different type of choice blocks. + * If curr.tri equals to mod then we can select several + * choice symbols in one block. + * In this case we do nothing. + * If curr.tri equals yes then only one symbol can be + * selected in a choice block and we set it to yes, + * and the rest to no. + */ + if (mode != def_random) { + for_all_symbols(i, csym) { + if ((sym_is_choice(csym) && !sym_has_value(csym)) || + sym_is_choice_value(csym)) + csym->flags |= SYMBOL_NEED_SET_CHOICE_VALUES; + } + } + + for_all_symbols(i, csym) { + if (sym_has_value(csym) || !sym_is_choice(csym)) + continue; + + sym_calc_value(csym); + if (mode == def_random) + has_changed = randomize_choice_values(csym); + else { + set_all_choice_values(csym); + has_changed = true; + } + } + + return has_changed; +} diff --git a/support/kconfig/expr.c b/support/kconfig/expr.c new file mode 100644 index 00000000..e1a39e90 --- /dev/null +++ b/support/kconfig/expr.c @@ -0,0 +1,1305 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include + +#include "lkc.h" + +#define DEBUG_EXPR 0 + +static int expr_eq(struct expr *e1, struct expr *e2); +static struct expr *expr_eliminate_yn(struct expr *e); + +struct expr *expr_alloc_symbol(struct symbol *sym) +{ + struct expr *e = xcalloc(1, sizeof(*e)); + e->type = E_SYMBOL; + e->left.sym = sym; + return e; +} + +struct expr *expr_alloc_one(enum expr_type type, struct expr *ce) +{ + struct expr *e = xcalloc(1, sizeof(*e)); + e->type = type; + e->left.expr = ce; + return e; +} + +struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2) +{ + struct expr *e = xcalloc(1, sizeof(*e)); + e->type = type; + e->left.expr = e1; + e->right.expr = e2; + return e; +} + +struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2) +{ + struct expr *e = xcalloc(1, sizeof(*e)); + e->type = type; + e->left.sym = s1; + e->right.sym = s2; + return e; +} + +struct expr *expr_alloc_and(struct expr *e1, struct expr *e2) +{ + if (!e1) + return e2; + return e2 ? expr_alloc_two(E_AND, e1, e2) : e1; +} + +struct expr *expr_alloc_or(struct expr *e1, struct expr *e2) +{ + if (!e1) + return e2; + return e2 ? expr_alloc_two(E_OR, e1, e2) : e1; +} + +struct expr *expr_copy(const struct expr *org) +{ + struct expr *e; + + if (!org) + return NULL; + + e = xmalloc(sizeof(*org)); + memcpy(e, org, sizeof(*org)); + switch (org->type) { + case E_SYMBOL: + e->left = org->left; + break; + case E_NOT: + e->left.expr = expr_copy(org->left.expr); + break; + case E_EQUAL: + case E_GEQ: + case E_GTH: + case E_LEQ: + case E_LTH: + case E_UNEQUAL: + e->left.sym = org->left.sym; + e->right.sym = org->right.sym; + break; + case E_AND: + case E_OR: + case E_LIST: + e->left.expr = expr_copy(org->left.expr); + e->right.expr = expr_copy(org->right.expr); + break; + default: + fprintf(stderr, "can't copy type %d\n", e->type); + free(e); + e = NULL; + break; + } + + return e; +} + +void expr_free(struct expr *e) +{ + if (!e) + return; + + switch (e->type) { + case E_SYMBOL: + break; + case E_NOT: + expr_free(e->left.expr); + break; + case E_EQUAL: + case E_GEQ: + case E_GTH: + case E_LEQ: + case E_LTH: + case E_UNEQUAL: + break; + case E_OR: + case E_AND: + expr_free(e->left.expr); + expr_free(e->right.expr); + break; + default: + fprintf(stderr, "how to free type %d?\n", e->type); + break; + } + free(e); +} + +static int trans_count; + +#define e1 (*ep1) +#define e2 (*ep2) + +/* + * expr_eliminate_eq() helper. + * + * Walks the two expression trees given in 'ep1' and 'ep2'. Any node that does + * not have type 'type' (E_OR/E_AND) is considered a leaf, and is compared + * against all other leaves. Two equal leaves are both replaced with either 'y' + * or 'n' as appropriate for 'type', to be eliminated later. + */ +static void __expr_eliminate_eq(enum expr_type type, struct expr **ep1, struct expr **ep2) +{ + /* Recurse down to leaves */ + + if (e1->type == type) { + __expr_eliminate_eq(type, &e1->left.expr, &e2); + __expr_eliminate_eq(type, &e1->right.expr, &e2); + return; + } + if (e2->type == type) { + __expr_eliminate_eq(type, &e1, &e2->left.expr); + __expr_eliminate_eq(type, &e1, &e2->right.expr); + return; + } + + /* e1 and e2 are leaves. Compare them. */ + + if (e1->type == E_SYMBOL && e2->type == E_SYMBOL && + e1->left.sym == e2->left.sym && + (e1->left.sym == &symbol_yes || e1->left.sym == &symbol_no)) + return; + if (!expr_eq(e1, e2)) + return; + + /* e1 and e2 are equal leaves. Prepare them for elimination. */ + + trans_count++; + expr_free(e1); expr_free(e2); + switch (type) { + case E_OR: + e1 = expr_alloc_symbol(&symbol_no); + e2 = expr_alloc_symbol(&symbol_no); + break; + case E_AND: + e1 = expr_alloc_symbol(&symbol_yes); + e2 = expr_alloc_symbol(&symbol_yes); + break; + default: + ; + } +} + +/* + * Rewrites the expressions 'ep1' and 'ep2' to remove operands common to both. + * Example reductions: + * + * ep1: A && B -> ep1: y + * ep2: A && B && C -> ep2: C + * + * ep1: A || B -> ep1: n + * ep2: A || B || C -> ep2: C + * + * ep1: A && (B && FOO) -> ep1: FOO + * ep2: (BAR && B) && A -> ep2: BAR + * + * ep1: A && (B || C) -> ep1: y + * ep2: (C || B) && A -> ep2: y + * + * Comparisons are done between all operands at the same "level" of && or ||. + * For example, in the expression 'e1 && (e2 || e3) && (e4 || e5)', the + * following operands will be compared: + * + * - 'e1', 'e2 || e3', and 'e4 || e5', against each other + * - e2 against e3 + * - e4 against e5 + * + * Parentheses are irrelevant within a single level. 'e1 && (e2 && e3)' and + * '(e1 && e2) && e3' are both a single level. + * + * See __expr_eliminate_eq() as well. + */ +void expr_eliminate_eq(struct expr **ep1, struct expr **ep2) +{ + if (!e1 || !e2) + return; + switch (e1->type) { + case E_OR: + case E_AND: + __expr_eliminate_eq(e1->type, ep1, ep2); + default: + ; + } + if (e1->type != e2->type) switch (e2->type) { + case E_OR: + case E_AND: + __expr_eliminate_eq(e2->type, ep1, ep2); + default: + ; + } + e1 = expr_eliminate_yn(e1); + e2 = expr_eliminate_yn(e2); +} + +#undef e1 +#undef e2 + +/* + * Returns true if 'e1' and 'e2' are equal, after minor simplification. Two + * &&/|| expressions are considered equal if every operand in one expression + * equals some operand in the other (operands do not need to appear in the same + * order), recursively. + */ +static int expr_eq(struct expr *e1, struct expr *e2) +{ + int res, old_count; + + if (e1->type != e2->type) + return 0; + switch (e1->type) { + case E_EQUAL: + case E_GEQ: + case E_GTH: + case E_LEQ: + case E_LTH: + case E_UNEQUAL: + return e1->left.sym == e2->left.sym && e1->right.sym == e2->right.sym; + case E_SYMBOL: + return e1->left.sym == e2->left.sym; + case E_NOT: + return expr_eq(e1->left.expr, e2->left.expr); + case E_AND: + case E_OR: + e1 = expr_copy(e1); + e2 = expr_copy(e2); + old_count = trans_count; + expr_eliminate_eq(&e1, &e2); + res = (e1->type == E_SYMBOL && e2->type == E_SYMBOL && + e1->left.sym == e2->left.sym); + expr_free(e1); + expr_free(e2); + trans_count = old_count; + return res; + case E_LIST: + case E_RANGE: + case E_NONE: + /* panic */; + } + + if (DEBUG_EXPR) { + expr_fprint(e1, stdout); + printf(" = "); + expr_fprint(e2, stdout); + printf(" ?\n"); + } + + return 0; +} + +/* + * Recursively performs the following simplifications in-place (as well as the + * corresponding simplifications with swapped operands): + * + * expr && n -> n + * expr && y -> expr + * expr || n -> expr + * expr || y -> y + * + * Returns the optimized expression. + */ +static struct expr *expr_eliminate_yn(struct expr *e) +{ + struct expr *tmp; + + if (e) switch (e->type) { + case E_AND: + e->left.expr = expr_eliminate_yn(e->left.expr); + e->right.expr = expr_eliminate_yn(e->right.expr); + if (e->left.expr->type == E_SYMBOL) { + if (e->left.expr->left.sym == &symbol_no) { + expr_free(e->left.expr); + expr_free(e->right.expr); + e->type = E_SYMBOL; + e->left.sym = &symbol_no; + e->right.expr = NULL; + return e; + } else if (e->left.expr->left.sym == &symbol_yes) { + free(e->left.expr); + tmp = e->right.expr; + *e = *(e->right.expr); + free(tmp); + return e; + } + } + if (e->right.expr->type == E_SYMBOL) { + if (e->right.expr->left.sym == &symbol_no) { + expr_free(e->left.expr); + expr_free(e->right.expr); + e->type = E_SYMBOL; + e->left.sym = &symbol_no; + e->right.expr = NULL; + return e; + } else if (e->right.expr->left.sym == &symbol_yes) { + free(e->right.expr); + tmp = e->left.expr; + *e = *(e->left.expr); + free(tmp); + return e; + } + } + break; + case E_OR: + e->left.expr = expr_eliminate_yn(e->left.expr); + e->right.expr = expr_eliminate_yn(e->right.expr); + if (e->left.expr->type == E_SYMBOL) { + if (e->left.expr->left.sym == &symbol_no) { + free(e->left.expr); + tmp = e->right.expr; + *e = *(e->right.expr); + free(tmp); + return e; + } else if (e->left.expr->left.sym == &symbol_yes) { + expr_free(e->left.expr); + expr_free(e->right.expr); + e->type = E_SYMBOL; + e->left.sym = &symbol_yes; + e->right.expr = NULL; + return e; + } + } + if (e->right.expr->type == E_SYMBOL) { + if (e->right.expr->left.sym == &symbol_no) { + free(e->right.expr); + tmp = e->left.expr; + *e = *(e->left.expr); + free(tmp); + return e; + } else if (e->right.expr->left.sym == &symbol_yes) { + expr_free(e->left.expr); + expr_free(e->right.expr); + e->type = E_SYMBOL; + e->left.sym = &symbol_yes; + e->right.expr = NULL; + return e; + } + } + break; + default: + ; + } + return e; +} + +/* + * bool FOO!=n => FOO + */ +struct expr *expr_trans_bool(struct expr *e) +{ + if (!e) + return NULL; + switch (e->type) { + case E_AND: + case E_OR: + case E_NOT: + e->left.expr = expr_trans_bool(e->left.expr); + e->right.expr = expr_trans_bool(e->right.expr); + break; + case E_UNEQUAL: + // FOO!=n -> FOO + if (e->left.sym->type == S_TRISTATE) { + if (e->right.sym == &symbol_no) { + e->type = E_SYMBOL; + e->right.sym = NULL; + } + } + break; + default: + ; + } + return e; +} + +/* + * e1 || e2 -> ? + */ +static struct expr *expr_join_or(struct expr *e1, struct expr *e2) +{ + struct expr *tmp; + struct symbol *sym1, *sym2; + + if (expr_eq(e1, e2)) + return expr_copy(e1); + if (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT) + return NULL; + if (e2->type != E_EQUAL && e2->type != E_UNEQUAL && e2->type != E_SYMBOL && e2->type != E_NOT) + return NULL; + if (e1->type == E_NOT) { + tmp = e1->left.expr; + if (tmp->type != E_EQUAL && tmp->type != E_UNEQUAL && tmp->type != E_SYMBOL) + return NULL; + sym1 = tmp->left.sym; + } else + sym1 = e1->left.sym; + if (e2->type == E_NOT) { + if (e2->left.expr->type != E_SYMBOL) + return NULL; + sym2 = e2->left.expr->left.sym; + } else + sym2 = e2->left.sym; + if (sym1 != sym2) + return NULL; + if (sym1->type != S_BOOLEAN && sym1->type != S_TRISTATE) + return NULL; + if (sym1->type == S_TRISTATE) { + if (e1->type == E_EQUAL && e2->type == E_EQUAL && + ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) || + (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) { + // (a='y') || (a='m') -> (a!='n') + return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_no); + } + if (e1->type == E_EQUAL && e2->type == E_EQUAL && + ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) || + (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) { + // (a='y') || (a='n') -> (a!='m') + return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_mod); + } + if (e1->type == E_EQUAL && e2->type == E_EQUAL && + ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) || + (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) { + // (a='m') || (a='n') -> (a!='y') + return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_yes); + } + } + if (sym1->type == S_BOOLEAN && sym1 == sym2) { + if ((e1->type == E_NOT && e1->left.expr->type == E_SYMBOL && e2->type == E_SYMBOL) || + (e2->type == E_NOT && e2->left.expr->type == E_SYMBOL && e1->type == E_SYMBOL)) + return expr_alloc_symbol(&symbol_yes); + } + + if (DEBUG_EXPR) { + printf("optimize ("); + expr_fprint(e1, stdout); + printf(") || ("); + expr_fprint(e2, stdout); + printf(")?\n"); + } + return NULL; +} + +static struct expr *expr_join_and(struct expr *e1, struct expr *e2) +{ + struct expr *tmp; + struct symbol *sym1, *sym2; + + if (expr_eq(e1, e2)) + return expr_copy(e1); + if (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT) + return NULL; + if (e2->type != E_EQUAL && e2->type != E_UNEQUAL && e2->type != E_SYMBOL && e2->type != E_NOT) + return NULL; + if (e1->type == E_NOT) { + tmp = e1->left.expr; + if (tmp->type != E_EQUAL && tmp->type != E_UNEQUAL && tmp->type != E_SYMBOL) + return NULL; + sym1 = tmp->left.sym; + } else + sym1 = e1->left.sym; + if (e2->type == E_NOT) { + if (e2->left.expr->type != E_SYMBOL) + return NULL; + sym2 = e2->left.expr->left.sym; + } else + sym2 = e2->left.sym; + if (sym1 != sym2) + return NULL; + if (sym1->type != S_BOOLEAN && sym1->type != S_TRISTATE) + return NULL; + + if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_yes) || + (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_yes)) + // (a) && (a='y') -> (a='y') + return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes); + + if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_no) || + (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_no)) + // (a) && (a!='n') -> (a) + return expr_alloc_symbol(sym1); + + if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_mod) || + (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_mod)) + // (a) && (a!='m') -> (a='y') + return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes); + + if (sym1->type == S_TRISTATE) { + if (e1->type == E_EQUAL && e2->type == E_UNEQUAL) { + // (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b' + sym2 = e1->right.sym; + if ((e2->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST)) + return sym2 != e2->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2) + : expr_alloc_symbol(&symbol_no); + } + if (e1->type == E_UNEQUAL && e2->type == E_EQUAL) { + // (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b' + sym2 = e2->right.sym; + if ((e1->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST)) + return sym2 != e1->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2) + : expr_alloc_symbol(&symbol_no); + } + if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && + ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) || + (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) + // (a!='y') && (a!='n') -> (a='m') + return expr_alloc_comp(E_EQUAL, sym1, &symbol_mod); + + if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && + ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) || + (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) + // (a!='y') && (a!='m') -> (a='n') + return expr_alloc_comp(E_EQUAL, sym1, &symbol_no); + + if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && + ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) || + (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) + // (a!='m') && (a!='n') -> (a='m') + return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes); + + if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_mod) || + (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_mod) || + (e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_yes) || + (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_yes)) + return NULL; + } + + if (DEBUG_EXPR) { + printf("optimize ("); + expr_fprint(e1, stdout); + printf(") && ("); + expr_fprint(e2, stdout); + printf(")?\n"); + } + return NULL; +} + +/* + * expr_eliminate_dups() helper. + * + * Walks the two expression trees given in 'ep1' and 'ep2'. Any node that does + * not have type 'type' (E_OR/E_AND) is considered a leaf, and is compared + * against all other leaves to look for simplifications. + */ +static void expr_eliminate_dups1(enum expr_type type, struct expr **ep1, struct expr **ep2) +{ +#define e1 (*ep1) +#define e2 (*ep2) + struct expr *tmp; + + /* Recurse down to leaves */ + + if (e1->type == type) { + expr_eliminate_dups1(type, &e1->left.expr, &e2); + expr_eliminate_dups1(type, &e1->right.expr, &e2); + return; + } + if (e2->type == type) { + expr_eliminate_dups1(type, &e1, &e2->left.expr); + expr_eliminate_dups1(type, &e1, &e2->right.expr); + return; + } + + /* e1 and e2 are leaves. Compare and process them. */ + + if (e1 == e2) + return; + + switch (e1->type) { + case E_OR: case E_AND: + expr_eliminate_dups1(e1->type, &e1, &e1); + default: + ; + } + + switch (type) { + case E_OR: + tmp = expr_join_or(e1, e2); + if (tmp) { + expr_free(e1); expr_free(e2); + e1 = expr_alloc_symbol(&symbol_no); + e2 = tmp; + trans_count++; + } + break; + case E_AND: + tmp = expr_join_and(e1, e2); + if (tmp) { + expr_free(e1); expr_free(e2); + e1 = expr_alloc_symbol(&symbol_yes); + e2 = tmp; + trans_count++; + } + break; + default: + ; + } +#undef e1 +#undef e2 +} + +/* + * Rewrites 'e' in-place to remove ("join") duplicate and other redundant + * operands. + * + * Example simplifications: + * + * A || B || A -> A || B + * A && B && A=y -> A=y && B + * + * Returns the deduplicated expression. + */ +struct expr *expr_eliminate_dups(struct expr *e) +{ + int oldcount; + if (!e) + return e; + + oldcount = trans_count; + while (1) { + trans_count = 0; + switch (e->type) { + case E_OR: case E_AND: + expr_eliminate_dups1(e->type, &e, &e); + default: + ; + } + if (!trans_count) + /* No simplifications done in this pass. We're done */ + break; + e = expr_eliminate_yn(e); + } + trans_count = oldcount; + return e; +} + +/* + * Performs various simplifications involving logical operators and + * comparisons. + * + * Allocates and returns a new expression. + */ +struct expr *expr_transform(struct expr *e) +{ + struct expr *tmp; + + if (!e) + return NULL; + switch (e->type) { + case E_EQUAL: + case E_GEQ: + case E_GTH: + case E_LEQ: + case E_LTH: + case E_UNEQUAL: + case E_SYMBOL: + case E_LIST: + break; + default: + e->left.expr = expr_transform(e->left.expr); + e->right.expr = expr_transform(e->right.expr); + } + + switch (e->type) { + case E_EQUAL: + if (e->left.sym->type != S_BOOLEAN) + break; + if (e->right.sym == &symbol_no) { + e->type = E_NOT; + e->left.expr = expr_alloc_symbol(e->left.sym); + e->right.sym = NULL; + break; + } + if (e->right.sym == &symbol_mod) { + printf("boolean symbol %s tested for 'm'? test forced to 'n'\n", e->left.sym->name); + e->type = E_SYMBOL; + e->left.sym = &symbol_no; + e->right.sym = NULL; + break; + } + if (e->right.sym == &symbol_yes) { + e->type = E_SYMBOL; + e->right.sym = NULL; + break; + } + break; + case E_UNEQUAL: + if (e->left.sym->type != S_BOOLEAN) + break; + if (e->right.sym == &symbol_no) { + e->type = E_SYMBOL; + e->right.sym = NULL; + break; + } + if (e->right.sym == &symbol_mod) { + printf("boolean symbol %s tested for 'm'? test forced to 'y'\n", e->left.sym->name); + e->type = E_SYMBOL; + e->left.sym = &symbol_yes; + e->right.sym = NULL; + break; + } + if (e->right.sym == &symbol_yes) { + e->type = E_NOT; + e->left.expr = expr_alloc_symbol(e->left.sym); + e->right.sym = NULL; + break; + } + break; + case E_NOT: + switch (e->left.expr->type) { + case E_NOT: + // !!a -> a + tmp = e->left.expr->left.expr; + free(e->left.expr); + free(e); + e = tmp; + e = expr_transform(e); + break; + case E_EQUAL: + case E_UNEQUAL: + // !a='x' -> a!='x' + tmp = e->left.expr; + free(e); + e = tmp; + e->type = e->type == E_EQUAL ? E_UNEQUAL : E_EQUAL; + break; + case E_LEQ: + case E_GEQ: + // !a<='x' -> a>'x' + tmp = e->left.expr; + free(e); + e = tmp; + e->type = e->type == E_LEQ ? E_GTH : E_LTH; + break; + case E_LTH: + case E_GTH: + // !a<'x' -> a>='x' + tmp = e->left.expr; + free(e); + e = tmp; + e->type = e->type == E_LTH ? E_GEQ : E_LEQ; + break; + case E_OR: + // !(a || b) -> !a && !b + tmp = e->left.expr; + e->type = E_AND; + e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr); + tmp->type = E_NOT; + tmp->right.expr = NULL; + e = expr_transform(e); + break; + case E_AND: + // !(a && b) -> !a || !b + tmp = e->left.expr; + e->type = E_OR; + e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr); + tmp->type = E_NOT; + tmp->right.expr = NULL; + e = expr_transform(e); + break; + case E_SYMBOL: + if (e->left.expr->left.sym == &symbol_yes) { + // !'y' -> 'n' + tmp = e->left.expr; + free(e); + e = tmp; + e->type = E_SYMBOL; + e->left.sym = &symbol_no; + break; + } + if (e->left.expr->left.sym == &symbol_mod) { + // !'m' -> 'm' + tmp = e->left.expr; + free(e); + e = tmp; + e->type = E_SYMBOL; + e->left.sym = &symbol_mod; + break; + } + if (e->left.expr->left.sym == &symbol_no) { + // !'n' -> 'y' + tmp = e->left.expr; + free(e); + e = tmp; + e->type = E_SYMBOL; + e->left.sym = &symbol_yes; + break; + } + break; + default: + ; + } + break; + default: + ; + } + return e; +} + +int expr_contains_symbol(struct expr *dep, struct symbol *sym) +{ + if (!dep) + return 0; + + switch (dep->type) { + case E_AND: + case E_OR: + return expr_contains_symbol(dep->left.expr, sym) || + expr_contains_symbol(dep->right.expr, sym); + case E_SYMBOL: + return dep->left.sym == sym; + case E_EQUAL: + case E_GEQ: + case E_GTH: + case E_LEQ: + case E_LTH: + case E_UNEQUAL: + return dep->left.sym == sym || + dep->right.sym == sym; + case E_NOT: + return expr_contains_symbol(dep->left.expr, sym); + default: + ; + } + return 0; +} + +bool expr_depends_symbol(struct expr *dep, struct symbol *sym) +{ + if (!dep) + return false; + + switch (dep->type) { + case E_AND: + return expr_depends_symbol(dep->left.expr, sym) || + expr_depends_symbol(dep->right.expr, sym); + case E_SYMBOL: + return dep->left.sym == sym; + case E_EQUAL: + if (dep->left.sym == sym) { + if (dep->right.sym == &symbol_yes || dep->right.sym == &symbol_mod) + return true; + } + break; + case E_UNEQUAL: + if (dep->left.sym == sym) { + if (dep->right.sym == &symbol_no) + return true; + } + break; + default: + ; + } + return false; +} + +/* + * Inserts explicit comparisons of type 'type' to symbol 'sym' into the + * expression 'e'. + * + * Examples transformations for type == E_UNEQUAL, sym == &symbol_no: + * + * A -> A!=n + * !A -> A=n + * A && B -> !(A=n || B=n) + * A || B -> !(A=n && B=n) + * A && (B || C) -> !(A=n || (B=n && C=n)) + * + * Allocates and returns a new expression. + */ +struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym) +{ + struct expr *e1, *e2; + + if (!e) { + e = expr_alloc_symbol(sym); + if (type == E_UNEQUAL) + e = expr_alloc_one(E_NOT, e); + return e; + } + switch (e->type) { + case E_AND: + e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym); + e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym); + if (sym == &symbol_yes) + e = expr_alloc_two(E_AND, e1, e2); + if (sym == &symbol_no) + e = expr_alloc_two(E_OR, e1, e2); + if (type == E_UNEQUAL) + e = expr_alloc_one(E_NOT, e); + return e; + case E_OR: + e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym); + e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym); + if (sym == &symbol_yes) + e = expr_alloc_two(E_OR, e1, e2); + if (sym == &symbol_no) + e = expr_alloc_two(E_AND, e1, e2); + if (type == E_UNEQUAL) + e = expr_alloc_one(E_NOT, e); + return e; + case E_NOT: + return expr_trans_compare(e->left.expr, type == E_EQUAL ? E_UNEQUAL : E_EQUAL, sym); + case E_UNEQUAL: + case E_LTH: + case E_LEQ: + case E_GTH: + case E_GEQ: + case E_EQUAL: + if (type == E_EQUAL) { + if (sym == &symbol_yes) + return expr_copy(e); + if (sym == &symbol_mod) + return expr_alloc_symbol(&symbol_no); + if (sym == &symbol_no) + return expr_alloc_one(E_NOT, expr_copy(e)); + } else { + if (sym == &symbol_yes) + return expr_alloc_one(E_NOT, expr_copy(e)); + if (sym == &symbol_mod) + return expr_alloc_symbol(&symbol_yes); + if (sym == &symbol_no) + return expr_copy(e); + } + break; + case E_SYMBOL: + return expr_alloc_comp(type, e->left.sym, sym); + case E_LIST: + case E_RANGE: + case E_NONE: + /* panic */; + } + return NULL; +} + +enum string_value_kind { + k_string, + k_signed, + k_unsigned, + k_invalid +}; + +union string_value { + unsigned long long u; + signed long long s; +}; + +static enum string_value_kind expr_parse_string(const char *str, + enum symbol_type type, + union string_value *val) +{ + char *tail; + enum string_value_kind kind; + + errno = 0; + switch (type) { + case S_BOOLEAN: + case S_TRISTATE: + val->s = !strcmp(str, "n") ? 0 : + !strcmp(str, "m") ? 1 : + !strcmp(str, "y") ? 2 : -1; + return k_signed; + case S_INT: + val->s = strtoll(str, &tail, 10); + kind = k_signed; + break; + case S_HEX: + val->u = strtoull(str, &tail, 16); + kind = k_unsigned; + break; + case S_STRING: + case S_UNKNOWN: + val->s = strtoll(str, &tail, 0); + kind = k_signed; + break; + default: + return k_invalid; + } + return !errno && !*tail && tail > str && isxdigit(tail[-1]) + ? kind : k_string; +} + +tristate expr_calc_value(struct expr *e) +{ + tristate val1, val2; + const char *str1, *str2; + enum string_value_kind k1 = k_string, k2 = k_string; + union string_value lval = {}, rval = {}; + int res; + + if (!e) + return yes; + + switch (e->type) { + case E_SYMBOL: + sym_calc_value(e->left.sym); + return e->left.sym->curr.tri; + case E_AND: + val1 = expr_calc_value(e->left.expr); + val2 = expr_calc_value(e->right.expr); + return EXPR_AND(val1, val2); + case E_OR: + val1 = expr_calc_value(e->left.expr); + val2 = expr_calc_value(e->right.expr); + return EXPR_OR(val1, val2); + case E_NOT: + val1 = expr_calc_value(e->left.expr); + return EXPR_NOT(val1); + case E_EQUAL: + case E_GEQ: + case E_GTH: + case E_LEQ: + case E_LTH: + case E_UNEQUAL: + break; + default: + printf("expr_calc_value: %d?\n", e->type); + return no; + } + + sym_calc_value(e->left.sym); + sym_calc_value(e->right.sym); + str1 = sym_get_string_value(e->left.sym); + str2 = sym_get_string_value(e->right.sym); + + if (e->left.sym->type != S_STRING || e->right.sym->type != S_STRING) { + k1 = expr_parse_string(str1, e->left.sym->type, &lval); + k2 = expr_parse_string(str2, e->right.sym->type, &rval); + } + + if (k1 == k_string || k2 == k_string) + res = strcmp(str1, str2); + else if (k1 == k_invalid || k2 == k_invalid) { + if (e->type != E_EQUAL && e->type != E_UNEQUAL) { + printf("Cannot compare \"%s\" and \"%s\"\n", str1, str2); + return no; + } + res = strcmp(str1, str2); + } else if (k1 == k_unsigned || k2 == k_unsigned) + res = (lval.u > rval.u) - (lval.u < rval.u); + else /* if (k1 == k_signed && k2 == k_signed) */ + res = (lval.s > rval.s) - (lval.s < rval.s); + + switch(e->type) { + case E_EQUAL: + return res ? no : yes; + case E_GEQ: + return res >= 0 ? yes : no; + case E_GTH: + return res > 0 ? yes : no; + case E_LEQ: + return res <= 0 ? yes : no; + case E_LTH: + return res < 0 ? yes : no; + case E_UNEQUAL: + return res ? yes : no; + default: + printf("expr_calc_value: relation %d?\n", e->type); + return no; + } +} + +static int expr_compare_type(enum expr_type t1, enum expr_type t2) +{ + if (t1 == t2) + return 0; + switch (t1) { + case E_LEQ: + case E_LTH: + case E_GEQ: + case E_GTH: + if (t2 == E_EQUAL || t2 == E_UNEQUAL) + return 1; + case E_EQUAL: + case E_UNEQUAL: + if (t2 == E_NOT) + return 1; + case E_NOT: + if (t2 == E_AND) + return 1; + case E_AND: + if (t2 == E_OR) + return 1; + case E_OR: + if (t2 == E_LIST) + return 1; + case E_LIST: + if (t2 == 0) + return 1; + default: + return -1; + } + printf("[%dgt%d?]", t1, t2); + return 0; +} + +void expr_print(struct expr *e, + void (*fn)(void *, struct symbol *, const char *), + void *data, int prevtoken) +{ + if (!e) { + fn(data, NULL, "y"); + return; + } + + if (expr_compare_type(prevtoken, e->type) > 0) + fn(data, NULL, "("); + switch (e->type) { + case E_SYMBOL: + if (e->left.sym->name) + fn(data, e->left.sym, e->left.sym->name); + else + fn(data, NULL, ""); + break; + case E_NOT: + fn(data, NULL, "!"); + expr_print(e->left.expr, fn, data, E_NOT); + break; + case E_EQUAL: + if (e->left.sym->name) + fn(data, e->left.sym, e->left.sym->name); + else + fn(data, NULL, ""); + fn(data, NULL, "="); + fn(data, e->right.sym, e->right.sym->name); + break; + case E_LEQ: + case E_LTH: + if (e->left.sym->name) + fn(data, e->left.sym, e->left.sym->name); + else + fn(data, NULL, ""); + fn(data, NULL, e->type == E_LEQ ? "<=" : "<"); + fn(data, e->right.sym, e->right.sym->name); + break; + case E_GEQ: + case E_GTH: + if (e->left.sym->name) + fn(data, e->left.sym, e->left.sym->name); + else + fn(data, NULL, ""); + fn(data, NULL, e->type == E_GEQ ? ">=" : ">"); + fn(data, e->right.sym, e->right.sym->name); + break; + case E_UNEQUAL: + if (e->left.sym->name) + fn(data, e->left.sym, e->left.sym->name); + else + fn(data, NULL, ""); + fn(data, NULL, "!="); + fn(data, e->right.sym, e->right.sym->name); + break; + case E_OR: + expr_print(e->left.expr, fn, data, E_OR); + fn(data, NULL, " || "); + expr_print(e->right.expr, fn, data, E_OR); + break; + case E_AND: + expr_print(e->left.expr, fn, data, E_AND); + fn(data, NULL, " && "); + expr_print(e->right.expr, fn, data, E_AND); + break; + case E_LIST: + fn(data, e->right.sym, e->right.sym->name); + if (e->left.expr) { + fn(data, NULL, " ^ "); + expr_print(e->left.expr, fn, data, E_LIST); + } + break; + case E_RANGE: + fn(data, NULL, "["); + fn(data, e->left.sym, e->left.sym->name); + fn(data, NULL, " "); + fn(data, e->right.sym, e->right.sym->name); + fn(data, NULL, "]"); + break; + default: + { + char buf[32]; + sprintf(buf, "", e->type); + fn(data, NULL, buf); + break; + } + } + if (expr_compare_type(prevtoken, e->type) > 0) + fn(data, NULL, ")"); +} + +static void expr_print_file_helper(void *data, struct symbol *sym, const char *str) +{ + xfwrite(str, strlen(str), 1, data); +} + +void expr_fprint(struct expr *e, FILE *out) +{ + expr_print(e, expr_print_file_helper, out, E_NONE); +} + +static void expr_print_gstr_helper(void *data, struct symbol *sym, const char *str) +{ + struct gstr *gs = (struct gstr*)data; + const char *sym_str = NULL; + + if (sym) + sym_str = sym_get_string_value(sym); + + if (gs->max_width) { + unsigned extra_length = strlen(str); + const char *last_cr = strrchr(gs->s, '\n'); + unsigned last_line_length; + + if (sym_str) + extra_length += 4 + strlen(sym_str); + + if (!last_cr) + last_cr = gs->s; + + last_line_length = strlen(gs->s) - (last_cr - gs->s); + + if ((last_line_length + extra_length) > gs->max_width) + str_append(gs, "\\\n"); + } + + str_append(gs, str); + if (sym && sym->type != S_UNKNOWN) + str_printf(gs, " [=%s]", sym_str); +} + +void expr_gstr_print(struct expr *e, struct gstr *gs) +{ + expr_print(e, expr_print_gstr_helper, gs, E_NONE); +} + +/* + * Transform the top level "||" tokens into newlines and prepend each + * line with a minus. This makes expressions much easier to read. + * Suitable for reverse dependency expressions. + */ +static void expr_print_revdep(struct expr *e, + void (*fn)(void *, struct symbol *, const char *), + void *data, tristate pr_type, const char **title) +{ + if (e->type == E_OR) { + expr_print_revdep(e->left.expr, fn, data, pr_type, title); + expr_print_revdep(e->right.expr, fn, data, pr_type, title); + } else if (expr_calc_value(e) == pr_type) { + if (*title) { + fn(data, NULL, *title); + *title = NULL; + } + + fn(data, NULL, " - "); + expr_print(e, fn, data, E_NONE); + fn(data, NULL, "\n"); + } +} + +void expr_gstr_print_revdep(struct expr *e, struct gstr *gs, + tristate pr_type, const char *title) +{ + expr_print_revdep(e, expr_print_gstr_helper, gs, pr_type, &title); +} diff --git a/support/kconfig/expr.h b/support/kconfig/expr.h new file mode 100644 index 00000000..94a383b2 --- /dev/null +++ b/support/kconfig/expr.h @@ -0,0 +1,329 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#ifndef EXPR_H +#define EXPR_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "list.h" +#ifndef __cplusplus +#include +#endif + +struct file { + struct file *next; + struct file *parent; + const char *name; + int lineno; +}; + +typedef enum tristate { + no, mod, yes +} tristate; + +enum expr_type { + E_NONE, E_OR, E_AND, E_NOT, + E_EQUAL, E_UNEQUAL, E_LTH, E_LEQ, E_GTH, E_GEQ, + E_LIST, E_SYMBOL, E_RANGE +}; + +union expr_data { + struct expr *expr; + struct symbol *sym; +}; + +struct expr { + enum expr_type type; + union expr_data left, right; +}; + +#define EXPR_OR(dep1, dep2) (((dep1)>(dep2))?(dep1):(dep2)) +#define EXPR_AND(dep1, dep2) (((dep1)<(dep2))?(dep1):(dep2)) +#define EXPR_NOT(dep) (2-(dep)) + +#define expr_list_for_each_sym(l, e, s) \ + for (e = (l); e && (s = e->right.sym); e = e->left.expr) + +struct expr_value { + struct expr *expr; + tristate tri; +}; + +struct symbol_value { + void *val; + tristate tri; +}; + +enum symbol_type { + S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER +}; + +/* enum values are used as index to symbol.def[] */ +enum { + S_DEF_USER, /* main user value */ + S_DEF_AUTO, /* values read from auto.conf */ + S_DEF_DEF3, /* Reserved for UI usage */ + S_DEF_DEF4, /* Reserved for UI usage */ + S_DEF_COUNT +}; + +/* + * Represents a configuration symbol. + * + * Choices are represented as a special kind of symbol and have the + * SYMBOL_CHOICE bit set in 'flags'. + */ +struct symbol { + /* The next symbol in the same bucket in the symbol hash table */ + struct symbol *next; + + /* The name of the symbol, e.g. "FOO" for 'config FOO' */ + char *name; + + /* S_BOOLEAN, S_TRISTATE, ... */ + enum symbol_type type; + + /* + * The calculated value of the symbol. The SYMBOL_VALID bit is set in + * 'flags' when this is up to date. Note that this value might differ + * from the user value set in e.g. a .config file, due to visibility. + */ + struct symbol_value curr; + + /* + * Values for the symbol provided from outside. def[S_DEF_USER] holds + * the .config value. + */ + struct symbol_value def[S_DEF_COUNT]; + + /* + * An upper bound on the tristate value the user can set for the symbol + * if it is a boolean or tristate. Calculated from prompt dependencies, + * which also inherit dependencies from enclosing menus, choices, and + * ifs. If 'n', the user value will be ignored. + * + * Symbols lacking prompts always have visibility 'n'. + */ + tristate visible; + + /* SYMBOL_* flags */ + int flags; + + /* List of properties. See prop_type. */ + struct property *prop; + + /* Dependencies from enclosing menus, choices, and ifs */ + struct expr_value dir_dep; + + /* Reverse dependencies through being selected by other symbols */ + struct expr_value rev_dep; + + /* + * "Weak" reverse dependencies through being implied by other symbols + */ + struct expr_value implied; +}; + +#define for_all_symbols(i, sym) for (i = 0; i < SYMBOL_HASHSIZE; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER) + +#define SYMBOL_CONST 0x0001 /* symbol is const */ +#define SYMBOL_CHECK 0x0008 /* used during dependency checking */ +#define SYMBOL_CHOICE 0x0010 /* start of a choice block (null name) */ +#define SYMBOL_CHOICEVAL 0x0020 /* used as a value in a choice block */ +#define SYMBOL_VALID 0x0080 /* set when symbol.curr is calculated */ +#define SYMBOL_OPTIONAL 0x0100 /* choice is optional - values can be 'n' */ +#define SYMBOL_WRITE 0x0200 /* write symbol to file (KCONFIG_CONFIG) */ +#define SYMBOL_CHANGED 0x0400 /* ? */ +#define SYMBOL_AUTO 0x1000 /* value from environment variable */ +#define SYMBOL_CHECKED 0x2000 /* used during dependency checking */ +#define SYMBOL_WARNED 0x8000 /* warning has been issued */ + +/* Set when symbol.def[] is used */ +#define SYMBOL_DEF 0x10000 /* First bit of SYMBOL_DEF */ +#define SYMBOL_DEF_USER 0x10000 /* symbol.def[S_DEF_USER] is valid */ +#define SYMBOL_DEF_AUTO 0x20000 /* symbol.def[S_DEF_AUTO] is valid */ +#define SYMBOL_DEF3 0x40000 /* symbol.def[S_DEF_3] is valid */ +#define SYMBOL_DEF4 0x80000 /* symbol.def[S_DEF_4] is valid */ + +/* choice values need to be set before calculating this symbol value */ +#define SYMBOL_NEED_SET_CHOICE_VALUES 0x100000 + +/* Set symbol to y if allnoconfig; used for symbols that hide others */ +#define SYMBOL_ALLNOCONFIG_Y 0x200000 + +#define SYMBOL_MAXLENGTH 256 +#define SYMBOL_HASHSIZE 9973 + +/* A property represent the config options that can be associated + * with a config "symbol". + * Sample: + * config FOO + * default y + * prompt "foo prompt" + * select BAR + * config BAZ + * int "BAZ Value" + * range 1..255 + */ +enum prop_type { + P_UNKNOWN, + P_PROMPT, /* prompt "foo prompt" or "BAZ Value" */ + P_COMMENT, /* text associated with a comment */ + P_MENU, /* prompt associated with a menu or menuconfig symbol */ + P_DEFAULT, /* default y */ + P_CHOICE, /* choice value */ + P_SELECT, /* select BAR */ + P_IMPLY, /* imply BAR */ + P_RANGE, /* range 7..100 (for a symbol) */ + P_ENV, /* value from environment variable */ + P_SYMBOL, /* where a symbol is defined */ +}; + +struct property { + struct property *next; /* next property - null if last */ + struct symbol *sym; /* the symbol for which the property is associated */ + enum prop_type type; /* type of property */ + const char *text; /* the prompt value - P_PROMPT, P_MENU, P_COMMENT */ + struct expr_value visible; + struct expr *expr; /* the optional conditional part of the property */ + struct menu *menu; /* the menu the property are associated with + * valid for: P_SELECT, P_RANGE, P_CHOICE, + * P_PROMPT, P_DEFAULT, P_MENU, P_COMMENT */ + struct file *file; /* what file was this property defined */ + int lineno; /* what lineno was this property defined */ +}; + +#define for_all_properties(sym, st, tok) \ + for (st = sym->prop; st; st = st->next) \ + if (st->type == (tok)) +#define for_all_defaults(sym, st) for_all_properties(sym, st, P_DEFAULT) +#define for_all_choices(sym, st) for_all_properties(sym, st, P_CHOICE) +#define for_all_prompts(sym, st) \ + for (st = sym->prop; st; st = st->next) \ + if (st->text) + +/* + * Represents a node in the menu tree, as seen in e.g. menuconfig (though used + * for all front ends). Each symbol, menu, etc. defined in the Kconfig files + * gets a node. A symbol defined in multiple locations gets one node at each + * location. + */ +struct menu { + /* The next menu node at the same level */ + struct menu *next; + + /* The parent menu node, corresponding to e.g. a menu or choice */ + struct menu *parent; + + /* The first child menu node, for e.g. menus and choices */ + struct menu *list; + + /* + * The symbol associated with the menu node. Choices are implemented as + * a special kind of symbol. NULL for menus, comments, and ifs. + */ + struct symbol *sym; + + /* + * The prompt associated with the node. This holds the prompt for a + * symbol as well as the text for a menu or comment, along with the + * type (P_PROMPT, P_MENU, etc.) + */ + struct property *prompt; + + /* + * 'visible if' dependencies. If more than one is given, they will be + * ANDed together. + */ + struct expr *visibility; + + /* + * Ordinary dependencies from e.g. 'depends on' and 'if', ANDed + * together + */ + struct expr *dep; + + /* MENU_* flags */ + unsigned int flags; + + /* Any help text associated with the node */ + char *help; + + /* The location where the menu node appears in the Kconfig files */ + struct file *file; + int lineno; + + /* For use by front ends that need to store auxiliary data */ + void *data; +}; + +/* + * Set on a menu node when the corresponding symbol changes state in some way. + * Can be checked by front ends. + */ +#define MENU_CHANGED 0x0001 + +#define MENU_ROOT 0x0002 + +struct jump_key { + struct list_head entries; + size_t offset; + struct menu *target; + int index; +}; + +#define JUMP_NB 9 + +extern struct file *file_list; +extern struct file *current_file; +struct file *lookup_file(const char *name); + +extern struct symbol symbol_yes, symbol_no, symbol_mod; +extern struct symbol *modules_sym; +extern struct symbol *sym_defconfig_list; +extern int cdebug; +struct expr *expr_alloc_symbol(struct symbol *sym); +struct expr *expr_alloc_one(enum expr_type type, struct expr *ce); +struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2); +struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2); +struct expr *expr_alloc_and(struct expr *e1, struct expr *e2); +struct expr *expr_alloc_or(struct expr *e1, struct expr *e2); +struct expr *expr_copy(const struct expr *org); +void expr_free(struct expr *e); +void expr_eliminate_eq(struct expr **ep1, struct expr **ep2); +tristate expr_calc_value(struct expr *e); +struct expr *expr_trans_bool(struct expr *e); +struct expr *expr_eliminate_dups(struct expr *e); +struct expr *expr_transform(struct expr *e); +int expr_contains_symbol(struct expr *dep, struct symbol *sym); +bool expr_depends_symbol(struct expr *dep, struct symbol *sym); +struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym); + +void expr_fprint(struct expr *e, FILE *out); +struct gstr; /* forward */ +void expr_gstr_print(struct expr *e, struct gstr *gs); +void expr_gstr_print_revdep(struct expr *e, struct gstr *gs, + tristate pr_type, const char *title); + +static inline int expr_is_yes(struct expr *e) +{ + return !e || (e->type == E_SYMBOL && e->left.sym == &symbol_yes); +} + +static inline int expr_is_no(struct expr *e) +{ + return e && (e->type == E_SYMBOL && e->left.sym == &symbol_no); +} + +#ifdef __cplusplus +} +#endif + +#endif /* EXPR_H */ diff --git a/support/kconfig/foo.h b/support/kconfig/foo.h new file mode 100644 index 00000000..b9cfdf83 --- /dev/null +++ b/support/kconfig/foo.h @@ -0,0 +1,12 @@ +#ifndef __KCONFIG_FOO_H +#define __KCONFIG_FOO_H + +#ifndef __APPLE__ +#include +#endif +#include + +#ifndef PATH_MAX +#define PATH_MAX 1024 +#endif +#endif /* __KCONFIG_FOO_H */ diff --git a/support/kconfig/gconf.c b/support/kconfig/gconf.c new file mode 100644 index 00000000..0c2d1c18 --- /dev/null +++ b/support/kconfig/gconf.c @@ -0,0 +1,1521 @@ +/* Hey EMACS -*- linux-c -*- */ +/* + * + * Copyright (C) 2002-2003 Romain Lievin + * Released under the terms of the GNU GPL v2.0. + * + */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include "lkc.h" +#include "images.c" + +#include +#include +#include +#include + +#include +#include +#include +#include + +//#define DEBUG + +enum { + SINGLE_VIEW, SPLIT_VIEW, FULL_VIEW +}; + +enum { + OPT_NORMAL, OPT_ALL, OPT_PROMPT +}; + +static gint view_mode = FULL_VIEW; +static gboolean show_name = TRUE; +static gboolean show_range = TRUE; +static gboolean show_value = TRUE; +static gboolean resizeable = FALSE; +static int opt_mode = OPT_NORMAL; + +GtkWidget *main_wnd = NULL; +GtkWidget *tree1_w = NULL; // left frame +GtkWidget *tree2_w = NULL; // right frame +GtkWidget *text_w = NULL; +GtkWidget *hpaned = NULL; +GtkWidget *vpaned = NULL; +GtkWidget *back_btn = NULL; +GtkWidget *save_btn = NULL; +GtkWidget *save_menu_item = NULL; + +GtkTextTag *tag1, *tag2; +GdkColor color; + +GtkTreeStore *tree1, *tree2, *tree; +GtkTreeModel *model1, *model2; +static GtkTreeIter *parents[256]; +static gint indent; + +static struct menu *current; // current node for SINGLE view +static struct menu *browsed; // browsed node for SPLIT view + +enum { + COL_OPTION, COL_NAME, COL_NO, COL_MOD, COL_YES, COL_VALUE, + COL_MENU, COL_COLOR, COL_EDIT, COL_PIXBUF, + COL_PIXVIS, COL_BTNVIS, COL_BTNACT, COL_BTNINC, COL_BTNRAD, + COL_NUMBER +}; + +static void display_list(void); +static void display_tree(struct menu *menu); +static void display_tree_part(void); +static void update_tree(struct menu *src, GtkTreeIter * dst); +static void set_node(GtkTreeIter * node, struct menu *menu, gchar ** row); +static gchar **fill_row(struct menu *menu); +static void conf_changed(void); + +/* Helping/Debugging Functions */ + +const char *dbg_sym_flags(int val) +{ + static char buf[256]; + + bzero(buf, 256); + + if (val & SYMBOL_CONST) + strcat(buf, "const/"); + if (val & SYMBOL_CHECK) + strcat(buf, "check/"); + if (val & SYMBOL_CHOICE) + strcat(buf, "choice/"); + if (val & SYMBOL_CHOICEVAL) + strcat(buf, "choiceval/"); + if (val & SYMBOL_VALID) + strcat(buf, "valid/"); + if (val & SYMBOL_OPTIONAL) + strcat(buf, "optional/"); + if (val & SYMBOL_WRITE) + strcat(buf, "write/"); + if (val & SYMBOL_CHANGED) + strcat(buf, "changed/"); + if (val & SYMBOL_AUTO) + strcat(buf, "auto/"); + + buf[strlen(buf) - 1] = '\0'; + + return buf; +} + +void replace_button_icon(GladeXML * xml, GdkDrawable * window, + GtkStyle * style, gchar * btn_name, gchar ** xpm) +{ + GdkPixmap *pixmap; + GdkBitmap *mask; + GtkToolButton *button; + GtkWidget *image; + + pixmap = gdk_pixmap_create_from_xpm_d(window, &mask, + &style->bg[GTK_STATE_NORMAL], + xpm); + + button = GTK_TOOL_BUTTON(glade_xml_get_widget(xml, btn_name)); + image = gtk_image_new_from_pixmap(pixmap, mask); + gtk_widget_show(image); + gtk_tool_button_set_icon_widget(button, image); +} + +/* Main Window Initialization */ +void init_main_window(const gchar * glade_file) +{ + GladeXML *xml; + GtkWidget *widget; + GtkTextBuffer *txtbuf; + GtkStyle *style; + + xml = glade_xml_new(glade_file, "window1", NULL); + if (!xml) + g_error(_("GUI loading failed !\n")); + glade_xml_signal_autoconnect(xml); + + main_wnd = glade_xml_get_widget(xml, "window1"); + hpaned = glade_xml_get_widget(xml, "hpaned1"); + vpaned = glade_xml_get_widget(xml, "vpaned1"); + tree1_w = glade_xml_get_widget(xml, "treeview1"); + tree2_w = glade_xml_get_widget(xml, "treeview2"); + text_w = glade_xml_get_widget(xml, "textview3"); + + back_btn = glade_xml_get_widget(xml, "button1"); + gtk_widget_set_sensitive(back_btn, FALSE); + + widget = glade_xml_get_widget(xml, "show_name1"); + gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget, + show_name); + + widget = glade_xml_get_widget(xml, "show_range1"); + gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget, + show_range); + + widget = glade_xml_get_widget(xml, "show_data1"); + gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget, + show_value); + + save_btn = glade_xml_get_widget(xml, "button3"); + save_menu_item = glade_xml_get_widget(xml, "save1"); + conf_set_changed_callback(conf_changed); + + style = gtk_widget_get_style(main_wnd); + widget = glade_xml_get_widget(xml, "toolbar1"); + + replace_button_icon(xml, main_wnd->window, style, + "button4", (gchar **) xpm_single_view); + replace_button_icon(xml, main_wnd->window, style, + "button5", (gchar **) xpm_split_view); + replace_button_icon(xml, main_wnd->window, style, + "button6", (gchar **) xpm_tree_view); + + txtbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w)); + tag1 = gtk_text_buffer_create_tag(txtbuf, "mytag1", + "foreground", "red", + "weight", PANGO_WEIGHT_BOLD, + NULL); + tag2 = gtk_text_buffer_create_tag(txtbuf, "mytag2", + /*"style", PANGO_STYLE_OBLIQUE, */ + NULL); + + gtk_window_set_title(GTK_WINDOW(main_wnd), rootmenu.prompt->text); + + gtk_widget_show(main_wnd); +} + +void init_tree_model(void) +{ + gint i; + + tree = tree2 = gtk_tree_store_new(COL_NUMBER, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_POINTER, GDK_TYPE_COLOR, + G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN); + model2 = GTK_TREE_MODEL(tree2); + + for (parents[0] = NULL, i = 1; i < 256; i++) + parents[i] = (GtkTreeIter *) g_malloc(sizeof(GtkTreeIter)); + + tree1 = gtk_tree_store_new(COL_NUMBER, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_POINTER, GDK_TYPE_COLOR, + G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN); + model1 = GTK_TREE_MODEL(tree1); +} + +void init_left_tree(void) +{ + GtkTreeView *view = GTK_TREE_VIEW(tree1_w); + GtkCellRenderer *renderer; + GtkTreeSelection *sel; + GtkTreeViewColumn *column; + + gtk_tree_view_set_model(view, model1); + gtk_tree_view_set_headers_visible(view, TRUE); + gtk_tree_view_set_rules_hint(view, TRUE); + + column = gtk_tree_view_column_new(); + gtk_tree_view_append_column(view, column); + gtk_tree_view_column_set_title(column, _("Options")); + + renderer = gtk_cell_renderer_toggle_new(); + gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), + renderer, FALSE); + gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), + renderer, + "active", COL_BTNACT, + "inconsistent", COL_BTNINC, + "visible", COL_BTNVIS, + "radio", COL_BTNRAD, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), + renderer, FALSE); + gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), + renderer, + "text", COL_OPTION, + "foreground-gdk", + COL_COLOR, NULL); + + sel = gtk_tree_view_get_selection(view); + gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE); + gtk_widget_realize(tree1_w); +} + +static void renderer_edited(GtkCellRendererText * cell, + const gchar * path_string, + const gchar * new_text, gpointer user_data); + +void init_right_tree(void) +{ + GtkTreeView *view = GTK_TREE_VIEW(tree2_w); + GtkCellRenderer *renderer; + GtkTreeSelection *sel; + GtkTreeViewColumn *column; + gint i; + + gtk_tree_view_set_model(view, model2); + gtk_tree_view_set_headers_visible(view, TRUE); + gtk_tree_view_set_rules_hint(view, TRUE); + + column = gtk_tree_view_column_new(); + gtk_tree_view_append_column(view, column); + gtk_tree_view_column_set_title(column, _("Options")); + + renderer = gtk_cell_renderer_pixbuf_new(); + gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), + renderer, FALSE); + gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), + renderer, + "pixbuf", COL_PIXBUF, + "visible", COL_PIXVIS, NULL); + renderer = gtk_cell_renderer_toggle_new(); + gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), + renderer, FALSE); + gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), + renderer, + "active", COL_BTNACT, + "inconsistent", COL_BTNINC, + "visible", COL_BTNVIS, + "radio", COL_BTNRAD, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), + renderer, FALSE); + gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), + renderer, + "text", COL_OPTION, + "foreground-gdk", + COL_COLOR, NULL); + + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(view, -1, + _("Name"), renderer, + "text", COL_NAME, + "foreground-gdk", + COL_COLOR, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(view, -1, + "N", renderer, + "text", COL_NO, + "foreground-gdk", + COL_COLOR, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(view, -1, + "M", renderer, + "text", COL_MOD, + "foreground-gdk", + COL_COLOR, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(view, -1, + "Y", renderer, + "text", COL_YES, + "foreground-gdk", + COL_COLOR, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(view, -1, + _("Value"), renderer, + "text", COL_VALUE, + "editable", + COL_EDIT, + "foreground-gdk", + COL_COLOR, NULL); + g_signal_connect(G_OBJECT(renderer), "edited", + G_CALLBACK(renderer_edited), NULL); + + column = gtk_tree_view_get_column(view, COL_NAME); + gtk_tree_view_column_set_visible(column, show_name); + column = gtk_tree_view_get_column(view, COL_NO); + gtk_tree_view_column_set_visible(column, show_range); + column = gtk_tree_view_get_column(view, COL_MOD); + gtk_tree_view_column_set_visible(column, show_range); + column = gtk_tree_view_get_column(view, COL_YES); + gtk_tree_view_column_set_visible(column, show_range); + column = gtk_tree_view_get_column(view, COL_VALUE); + gtk_tree_view_column_set_visible(column, show_value); + + if (resizeable) { + for (i = 0; i < COL_VALUE; i++) { + column = gtk_tree_view_get_column(view, i); + gtk_tree_view_column_set_resizable(column, TRUE); + } + } + + sel = gtk_tree_view_get_selection(view); + gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE); +} + + +/* Utility Functions */ + + +static void text_insert_help(struct menu *menu) +{ + GtkTextBuffer *buffer; + GtkTextIter start, end; + const char *prompt = _(menu_get_prompt(menu)); + struct gstr help = str_new(); + + menu_get_ext_help(menu, &help); + + buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w)); + gtk_text_buffer_get_bounds(buffer, &start, &end); + gtk_text_buffer_delete(buffer, &start, &end); + gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text_w), 15); + + gtk_text_buffer_get_end_iter(buffer, &end); + gtk_text_buffer_insert_with_tags(buffer, &end, prompt, -1, tag1, + NULL); + gtk_text_buffer_insert_at_cursor(buffer, "\n\n", 2); + gtk_text_buffer_get_end_iter(buffer, &end); + gtk_text_buffer_insert_with_tags(buffer, &end, str_get(&help), -1, tag2, + NULL); + str_free(&help); +} + + +static void text_insert_msg(const char *title, const char *message) +{ + GtkTextBuffer *buffer; + GtkTextIter start, end; + const char *msg = message; + + buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w)); + gtk_text_buffer_get_bounds(buffer, &start, &end); + gtk_text_buffer_delete(buffer, &start, &end); + gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text_w), 15); + + gtk_text_buffer_get_end_iter(buffer, &end); + gtk_text_buffer_insert_with_tags(buffer, &end, title, -1, tag1, + NULL); + gtk_text_buffer_insert_at_cursor(buffer, "\n\n", 2); + gtk_text_buffer_get_end_iter(buffer, &end); + gtk_text_buffer_insert_with_tags(buffer, &end, msg, -1, tag2, + NULL); +} + + +/* Main Windows Callbacks */ + +void on_save_activate(GtkMenuItem * menuitem, gpointer user_data); +gboolean on_window1_delete_event(GtkWidget * widget, GdkEvent * event, + gpointer user_data) +{ + GtkWidget *dialog, *label; + gint result; + + if (!conf_get_changed()) + return FALSE; + + dialog = gtk_dialog_new_with_buttons(_("Warning !"), + GTK_WINDOW(main_wnd), + (GtkDialogFlags) + (GTK_DIALOG_MODAL | + GTK_DIALOG_DESTROY_WITH_PARENT), + GTK_STOCK_OK, + GTK_RESPONSE_YES, + GTK_STOCK_NO, + GTK_RESPONSE_NO, + GTK_STOCK_CANCEL, + GTK_RESPONSE_CANCEL, NULL); + gtk_dialog_set_default_response(GTK_DIALOG(dialog), + GTK_RESPONSE_CANCEL); + + label = gtk_label_new(_("\nSave configuration ?\n")); + gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label); + gtk_widget_show(label); + + result = gtk_dialog_run(GTK_DIALOG(dialog)); + switch (result) { + case GTK_RESPONSE_YES: + on_save_activate(NULL, NULL); + return FALSE; + case GTK_RESPONSE_NO: + return FALSE; + case GTK_RESPONSE_CANCEL: + case GTK_RESPONSE_DELETE_EVENT: + default: + gtk_widget_destroy(dialog); + return TRUE; + } + + return FALSE; +} + + +void on_window1_destroy(GtkObject * object, gpointer user_data) +{ + gtk_main_quit(); +} + + +void +on_window1_size_request(GtkWidget * widget, + GtkRequisition * requisition, gpointer user_data) +{ + static gint old_h; + gint w, h; + + if (widget->window == NULL) + gtk_window_get_default_size(GTK_WINDOW(main_wnd), &w, &h); + else + gdk_window_get_size(widget->window, &w, &h); + + if (h == old_h) + return; + old_h = h; + + gtk_paned_set_position(GTK_PANED(vpaned), 2 * h / 3); +} + + +/* Menu & Toolbar Callbacks */ + + +static void +load_filename(GtkFileSelection * file_selector, gpointer user_data) +{ + const gchar *fn; + + fn = gtk_file_selection_get_filename(GTK_FILE_SELECTION + (user_data)); + + if (conf_read(fn)) + text_insert_msg(_("Error"), _("Unable to load configuration !")); + else + display_tree(&rootmenu); +} + +void on_load1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkWidget *fs; + + fs = gtk_file_selection_new(_("Load file...")); + g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button), + "clicked", + G_CALLBACK(load_filename), (gpointer) fs); + g_signal_connect_swapped(GTK_OBJECT + (GTK_FILE_SELECTION(fs)->ok_button), + "clicked", G_CALLBACK(gtk_widget_destroy), + (gpointer) fs); + g_signal_connect_swapped(GTK_OBJECT + (GTK_FILE_SELECTION(fs)->cancel_button), + "clicked", G_CALLBACK(gtk_widget_destroy), + (gpointer) fs); + gtk_widget_show(fs); +} + + +void on_save_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + if (conf_write(NULL)) + text_insert_msg(_("Error"), _("Unable to save configuration !")); +} + + +static void +store_filename(GtkFileSelection * file_selector, gpointer user_data) +{ + const gchar *fn; + + fn = gtk_file_selection_get_filename(GTK_FILE_SELECTION + (user_data)); + + if (conf_write(fn)) + text_insert_msg(_("Error"), _("Unable to save configuration !")); + + gtk_widget_destroy(GTK_WIDGET(user_data)); +} + +void on_save_as1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkWidget *fs; + + fs = gtk_file_selection_new(_("Save file as...")); + g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button), + "clicked", + G_CALLBACK(store_filename), (gpointer) fs); + g_signal_connect_swapped(GTK_OBJECT + (GTK_FILE_SELECTION(fs)->ok_button), + "clicked", G_CALLBACK(gtk_widget_destroy), + (gpointer) fs); + g_signal_connect_swapped(GTK_OBJECT + (GTK_FILE_SELECTION(fs)->cancel_button), + "clicked", G_CALLBACK(gtk_widget_destroy), + (gpointer) fs); + gtk_widget_show(fs); +} + + +void on_quit1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + if (!on_window1_delete_event(NULL, NULL, NULL)) + gtk_widget_destroy(GTK_WIDGET(main_wnd)); +} + + +void on_show_name1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkTreeViewColumn *col; + + show_name = GTK_CHECK_MENU_ITEM(menuitem)->active; + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_NAME); + if (col) + gtk_tree_view_column_set_visible(col, show_name); +} + + +void on_show_range1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkTreeViewColumn *col; + + show_range = GTK_CHECK_MENU_ITEM(menuitem)->active; + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_NO); + if (col) + gtk_tree_view_column_set_visible(col, show_range); + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_MOD); + if (col) + gtk_tree_view_column_set_visible(col, show_range); + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_YES); + if (col) + gtk_tree_view_column_set_visible(col, show_range); + +} + + +void on_show_data1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkTreeViewColumn *col; + + show_value = GTK_CHECK_MENU_ITEM(menuitem)->active; + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_VALUE); + if (col) + gtk_tree_view_column_set_visible(col, show_value); +} + + +void +on_set_option_mode1_activate(GtkMenuItem *menuitem, gpointer user_data) +{ + opt_mode = OPT_NORMAL; + gtk_tree_store_clear(tree2); + display_tree(&rootmenu); /* instead of update_tree to speed-up */ +} + + +void +on_set_option_mode2_activate(GtkMenuItem *menuitem, gpointer user_data) +{ + opt_mode = OPT_ALL; + gtk_tree_store_clear(tree2); + display_tree(&rootmenu); /* instead of update_tree to speed-up */ +} + + +void +on_set_option_mode3_activate(GtkMenuItem *menuitem, gpointer user_data) +{ + opt_mode = OPT_PROMPT; + gtk_tree_store_clear(tree2); + display_tree(&rootmenu); /* instead of update_tree to speed-up */ +} + + +void on_introduction1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkWidget *dialog; + const gchar *intro_text = _( + "Welcome to gkc, the GTK+ graphical configuration tool\n" + "For each option, a blank box indicates the feature is disabled, a\n" + "check indicates it is enabled, and a dot indicates that it is to\n" + "be compiled as a module. Clicking on the box will cycle through the three states.\n" + "\n" + "If you do not see an option (e.g., a device driver) that you\n" + "believe should be present, try turning on Show All Options\n" + "under the Options menu.\n" + "Although there is no cross reference yet to help you figure out\n" + "what other options must be enabled to support the option you\n" + "are interested in, you can still view the help of a grayed-out\n" + "option.\n" + "\n" + "Toggling Show Debug Info under the Options menu will show \n" + "the dependencies, which you can then match by examining other options."); + + dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_INFO, + GTK_BUTTONS_CLOSE, "%s", intro_text); + g_signal_connect_swapped(GTK_OBJECT(dialog), "response", + G_CALLBACK(gtk_widget_destroy), + GTK_OBJECT(dialog)); + gtk_widget_show_all(dialog); +} + + +void on_about1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkWidget *dialog; + const gchar *about_text = + _("gkc is copyright (c) 2002 Romain Lievin .\n" + "Based on the source code from Roman Zippel.\n"); + + dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_INFO, + GTK_BUTTONS_CLOSE, "%s", about_text); + g_signal_connect_swapped(GTK_OBJECT(dialog), "response", + G_CALLBACK(gtk_widget_destroy), + GTK_OBJECT(dialog)); + gtk_widget_show_all(dialog); +} + + +void on_license1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkWidget *dialog; + const gchar *license_text = + _("gkc is released under the terms of the GNU GPL v2.\n" + "For more information, please see the source code or\n" + "visit http://www.fsf.org/licenses/licenses.html\n"); + + dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_INFO, + GTK_BUTTONS_CLOSE, "%s", license_text); + g_signal_connect_swapped(GTK_OBJECT(dialog), "response", + G_CALLBACK(gtk_widget_destroy), + GTK_OBJECT(dialog)); + gtk_widget_show_all(dialog); +} + + +void on_back_clicked(GtkButton * button, gpointer user_data) +{ + enum prop_type ptype; + + current = current->parent; + ptype = current->prompt ? current->prompt->type : P_UNKNOWN; + if (ptype != P_MENU) + current = current->parent; + display_tree_part(); + + if (current == &rootmenu) + gtk_widget_set_sensitive(back_btn, FALSE); +} + + +void on_load_clicked(GtkButton * button, gpointer user_data) +{ + on_load1_activate(NULL, user_data); +} + + +void on_single_clicked(GtkButton * button, gpointer user_data) +{ + view_mode = SINGLE_VIEW; + gtk_widget_hide(tree1_w); + current = &rootmenu; + display_tree_part(); +} + + +void on_split_clicked(GtkButton * button, gpointer user_data) +{ + gint w, h; + view_mode = SPLIT_VIEW; + gtk_widget_show(tree1_w); + gtk_window_get_default_size(GTK_WINDOW(main_wnd), &w, &h); + gtk_paned_set_position(GTK_PANED(hpaned), w / 2); + if (tree2) + gtk_tree_store_clear(tree2); + display_list(); + + /* Disable back btn, like in full mode. */ + gtk_widget_set_sensitive(back_btn, FALSE); +} + + +void on_full_clicked(GtkButton * button, gpointer user_data) +{ + view_mode = FULL_VIEW; + gtk_widget_hide(tree1_w); + if (tree2) + gtk_tree_store_clear(tree2); + display_tree(&rootmenu); + gtk_widget_set_sensitive(back_btn, FALSE); +} + + +void on_collapse_clicked(GtkButton * button, gpointer user_data) +{ + gtk_tree_view_collapse_all(GTK_TREE_VIEW(tree2_w)); +} + + +void on_expand_clicked(GtkButton * button, gpointer user_data) +{ + gtk_tree_view_expand_all(GTK_TREE_VIEW(tree2_w)); +} + + +/* CTree Callbacks */ + +/* Change hex/int/string value in the cell */ +static void renderer_edited(GtkCellRendererText * cell, + const gchar * path_string, + const gchar * new_text, gpointer user_data) +{ + GtkTreePath *path = gtk_tree_path_new_from_string(path_string); + GtkTreeIter iter; + const char *old_def, *new_def; + struct menu *menu; + struct symbol *sym; + + if (!gtk_tree_model_get_iter(model2, &iter, path)) + return; + + gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1); + sym = menu->sym; + + gtk_tree_model_get(model2, &iter, COL_VALUE, &old_def, -1); + new_def = new_text; + + sym_set_string_value(sym, new_def); + + update_tree(&rootmenu, NULL); + + gtk_tree_path_free(path); +} + +/* Change the value of a symbol and update the tree */ +static void change_sym_value(struct menu *menu, gint col) +{ + struct symbol *sym = menu->sym; + tristate newval; + + if (!sym) + return; + + if (col == COL_NO) + newval = no; + else if (col == COL_MOD) + newval = mod; + else if (col == COL_YES) + newval = yes; + else + return; + + switch (sym_get_type(sym)) { + case S_BOOLEAN: + case S_TRISTATE: + if (!sym_tristate_within_range(sym, newval)) + newval = yes; + sym_set_tristate_value(sym, newval); + if (view_mode == FULL_VIEW) + update_tree(&rootmenu, NULL); + else if (view_mode == SPLIT_VIEW) { + update_tree(browsed, NULL); + display_list(); + } + else if (view_mode == SINGLE_VIEW) + display_tree_part(); //fixme: keep exp/coll + break; + case S_INT: + case S_HEX: + case S_STRING: + default: + break; + } +} + +static void toggle_sym_value(struct menu *menu) +{ + if (!menu->sym) + return; + + sym_toggle_tristate_value(menu->sym); + if (view_mode == FULL_VIEW) + update_tree(&rootmenu, NULL); + else if (view_mode == SPLIT_VIEW) { + update_tree(browsed, NULL); + display_list(); + } + else if (view_mode == SINGLE_VIEW) + display_tree_part(); //fixme: keep exp/coll +} + +static gint column2index(GtkTreeViewColumn * column) +{ + gint i; + + for (i = 0; i < COL_NUMBER; i++) { + GtkTreeViewColumn *col; + + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), i); + if (col == column) + return i; + } + + return -1; +} + + +/* User click: update choice (full) or goes down (single) */ +gboolean +on_treeview2_button_press_event(GtkWidget * widget, + GdkEventButton * event, gpointer user_data) +{ + GtkTreeView *view = GTK_TREE_VIEW(widget); + GtkTreePath *path; + GtkTreeViewColumn *column; + GtkTreeIter iter; + struct menu *menu; + gint col; + +#if GTK_CHECK_VERSION(2,1,4) // bug in ctree with earlier version of GTK + gint tx = (gint) event->x; + gint ty = (gint) event->y; + gint cx, cy; + + gtk_tree_view_get_path_at_pos(view, tx, ty, &path, &column, &cx, + &cy); +#else + gtk_tree_view_get_cursor(view, &path, &column); +#endif + if (path == NULL) + return FALSE; + + if (!gtk_tree_model_get_iter(model2, &iter, path)) + return FALSE; + gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1); + + col = column2index(column); + if (event->type == GDK_2BUTTON_PRESS) { + enum prop_type ptype; + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + + if (ptype == P_MENU && view_mode != FULL_VIEW && col == COL_OPTION) { + // goes down into menu + current = menu; + display_tree_part(); + gtk_widget_set_sensitive(back_btn, TRUE); + } else if (col == COL_OPTION) { + toggle_sym_value(menu); + gtk_tree_view_expand_row(view, path, TRUE); + } + } else { + if (col == COL_VALUE) { + toggle_sym_value(menu); + gtk_tree_view_expand_row(view, path, TRUE); + } else if (col == COL_NO || col == COL_MOD + || col == COL_YES) { + change_sym_value(menu, col); + gtk_tree_view_expand_row(view, path, TRUE); + } + } + + return FALSE; +} + +/* Key pressed: update choice */ +gboolean +on_treeview2_key_press_event(GtkWidget * widget, + GdkEventKey * event, gpointer user_data) +{ + GtkTreeView *view = GTK_TREE_VIEW(widget); + GtkTreePath *path; + GtkTreeViewColumn *column; + GtkTreeIter iter; + struct menu *menu; + gint col; + + gtk_tree_view_get_cursor(view, &path, &column); + if (path == NULL) + return FALSE; + + if (event->keyval == GDK_space) { + if (gtk_tree_view_row_expanded(view, path)) + gtk_tree_view_collapse_row(view, path); + else + gtk_tree_view_expand_row(view, path, FALSE); + return TRUE; + } + if (event->keyval == GDK_KP_Enter) { + } + if (widget == tree1_w) + return FALSE; + + gtk_tree_model_get_iter(model2, &iter, path); + gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1); + + if (!strcasecmp(event->string, "n")) + col = COL_NO; + else if (!strcasecmp(event->string, "m")) + col = COL_MOD; + else if (!strcasecmp(event->string, "y")) + col = COL_YES; + else + col = -1; + change_sym_value(menu, col); + + return FALSE; +} + + +/* Row selection changed: update help */ +void +on_treeview2_cursor_changed(GtkTreeView * treeview, gpointer user_data) +{ + GtkTreeSelection *selection; + GtkTreeIter iter; + struct menu *menu; + + selection = gtk_tree_view_get_selection(treeview); + if (gtk_tree_selection_get_selected(selection, &model2, &iter)) { + gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1); + text_insert_help(menu); + } +} + + +/* User click: display sub-tree in the right frame. */ +gboolean +on_treeview1_button_press_event(GtkWidget * widget, + GdkEventButton * event, gpointer user_data) +{ + GtkTreeView *view = GTK_TREE_VIEW(widget); + GtkTreePath *path; + GtkTreeViewColumn *column; + GtkTreeIter iter; + struct menu *menu; + + gint tx = (gint) event->x; + gint ty = (gint) event->y; + gint cx, cy; + + gtk_tree_view_get_path_at_pos(view, tx, ty, &path, &column, &cx, + &cy); + if (path == NULL) + return FALSE; + + gtk_tree_model_get_iter(model1, &iter, path); + gtk_tree_model_get(model1, &iter, COL_MENU, &menu, -1); + + if (event->type == GDK_2BUTTON_PRESS) { + toggle_sym_value(menu); + current = menu; + display_tree_part(); + } else { + browsed = menu; + display_tree_part(); + } + + gtk_widget_realize(tree2_w); + gtk_tree_view_set_cursor(view, path, NULL, FALSE); + gtk_widget_grab_focus(tree2_w); + + return FALSE; +} + + +/* Fill a row of strings */ +static gchar **fill_row(struct menu *menu) +{ + static gchar *row[COL_NUMBER]; + struct symbol *sym = menu->sym; + const char *def; + int stype; + tristate val; + enum prop_type ptype; + int i; + + for (i = COL_OPTION; i <= COL_COLOR; i++) + g_free(row[i]); + bzero(row, sizeof(row)); + + row[COL_OPTION] = + g_strdup_printf("%s %s", _(menu_get_prompt(menu)), + sym && !sym_has_value(sym) ? "(NEW)" : ""); + + if (opt_mode == OPT_ALL && !menu_is_visible(menu)) + row[COL_COLOR] = g_strdup("DarkGray"); + else if (opt_mode == OPT_PROMPT && + menu_has_prompt(menu) && !menu_is_visible(menu)) + row[COL_COLOR] = g_strdup("DarkGray"); + else + row[COL_COLOR] = g_strdup("Black"); + + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + switch (ptype) { + case P_MENU: + row[COL_PIXBUF] = (gchar *) xpm_menu; + if (view_mode == SINGLE_VIEW) + row[COL_PIXVIS] = GINT_TO_POINTER(TRUE); + row[COL_BTNVIS] = GINT_TO_POINTER(FALSE); + break; + case P_COMMENT: + row[COL_PIXBUF] = (gchar *) xpm_void; + row[COL_PIXVIS] = GINT_TO_POINTER(FALSE); + row[COL_BTNVIS] = GINT_TO_POINTER(FALSE); + break; + default: + row[COL_PIXBUF] = (gchar *) xpm_void; + row[COL_PIXVIS] = GINT_TO_POINTER(FALSE); + row[COL_BTNVIS] = GINT_TO_POINTER(TRUE); + break; + } + + if (!sym) + return row; + row[COL_NAME] = g_strdup(sym->name); + + sym_calc_value(sym); + sym->flags &= ~SYMBOL_CHANGED; + + if (sym_is_choice(sym)) { // parse childs for getting final value + struct menu *child; + struct symbol *def_sym = sym_get_choice_value(sym); + struct menu *def_menu = NULL; + + row[COL_BTNVIS] = GINT_TO_POINTER(FALSE); + + for (child = menu->list; child; child = child->next) { + if (menu_is_visible(child) + && child->sym == def_sym) + def_menu = child; + } + + if (def_menu) + row[COL_VALUE] = + g_strdup(_(menu_get_prompt(def_menu))); + } + if (sym->flags & SYMBOL_CHOICEVAL) + row[COL_BTNRAD] = GINT_TO_POINTER(TRUE); + + stype = sym_get_type(sym); + switch (stype) { + case S_BOOLEAN: + if (GPOINTER_TO_INT(row[COL_PIXVIS]) == FALSE) + row[COL_BTNVIS] = GINT_TO_POINTER(TRUE); + if (sym_is_choice(sym)) + break; + /* fall through */ + case S_TRISTATE: + val = sym_get_tristate_value(sym); + switch (val) { + case no: + row[COL_NO] = g_strdup("N"); + row[COL_VALUE] = g_strdup("N"); + row[COL_BTNACT] = GINT_TO_POINTER(FALSE); + row[COL_BTNINC] = GINT_TO_POINTER(FALSE); + break; + case mod: + row[COL_MOD] = g_strdup("M"); + row[COL_VALUE] = g_strdup("M"); + row[COL_BTNINC] = GINT_TO_POINTER(TRUE); + break; + case yes: + row[COL_YES] = g_strdup("Y"); + row[COL_VALUE] = g_strdup("Y"); + row[COL_BTNACT] = GINT_TO_POINTER(TRUE); + row[COL_BTNINC] = GINT_TO_POINTER(FALSE); + break; + } + + if (val != no && sym_tristate_within_range(sym, no)) + row[COL_NO] = g_strdup("_"); + if (val != mod && sym_tristate_within_range(sym, mod)) + row[COL_MOD] = g_strdup("_"); + if (val != yes && sym_tristate_within_range(sym, yes)) + row[COL_YES] = g_strdup("_"); + break; + case S_INT: + case S_HEX: + case S_STRING: + def = sym_get_string_value(sym); + row[COL_VALUE] = g_strdup(def); + row[COL_EDIT] = GINT_TO_POINTER(TRUE); + row[COL_BTNVIS] = GINT_TO_POINTER(FALSE); + break; + } + + return row; +} + + +/* Set the node content with a row of strings */ +static void set_node(GtkTreeIter * node, struct menu *menu, gchar ** row) +{ + GdkColor color; + gboolean success; + GdkPixbuf *pix; + + pix = gdk_pixbuf_new_from_xpm_data((const char **) + row[COL_PIXBUF]); + + gdk_color_parse(row[COL_COLOR], &color); + gdk_colormap_alloc_colors(gdk_colormap_get_system(), &color, 1, + FALSE, FALSE, &success); + + gtk_tree_store_set(tree, node, + COL_OPTION, row[COL_OPTION], + COL_NAME, row[COL_NAME], + COL_NO, row[COL_NO], + COL_MOD, row[COL_MOD], + COL_YES, row[COL_YES], + COL_VALUE, row[COL_VALUE], + COL_MENU, (gpointer) menu, + COL_COLOR, &color, + COL_EDIT, GPOINTER_TO_INT(row[COL_EDIT]), + COL_PIXBUF, pix, + COL_PIXVIS, GPOINTER_TO_INT(row[COL_PIXVIS]), + COL_BTNVIS, GPOINTER_TO_INT(row[COL_BTNVIS]), + COL_BTNACT, GPOINTER_TO_INT(row[COL_BTNACT]), + COL_BTNINC, GPOINTER_TO_INT(row[COL_BTNINC]), + COL_BTNRAD, GPOINTER_TO_INT(row[COL_BTNRAD]), + -1); + + g_object_unref(pix); +} + + +/* Add a node to the tree */ +static void place_node(struct menu *menu, char **row) +{ + GtkTreeIter *parent = parents[indent - 1]; + GtkTreeIter *node = parents[indent]; + + gtk_tree_store_append(tree, node, parent); + set_node(node, menu, row); +} + + +/* Find a node in the GTK+ tree */ +static GtkTreeIter found; + +/* + * Find a menu in the GtkTree starting at parent. + */ +GtkTreeIter *gtktree_iter_find_node(GtkTreeIter * parent, + struct menu *tofind) +{ + GtkTreeIter iter; + GtkTreeIter *child = &iter; + gboolean valid; + GtkTreeIter *ret; + + valid = gtk_tree_model_iter_children(model2, child, parent); + while (valid) { + struct menu *menu; + + gtk_tree_model_get(model2, child, 6, &menu, -1); + + if (menu == tofind) { + memcpy(&found, child, sizeof(GtkTreeIter)); + return &found; + } + + ret = gtktree_iter_find_node(child, tofind); + if (ret) + return ret; + + valid = gtk_tree_model_iter_next(model2, child); + } + + return NULL; +} + + +/* + * Update the tree by adding/removing entries + * Does not change other nodes + */ +static void update_tree(struct menu *src, GtkTreeIter * dst) +{ + struct menu *child1; + GtkTreeIter iter, tmp; + GtkTreeIter *child2 = &iter; + gboolean valid; + GtkTreeIter *sibling; + struct symbol *sym; + struct menu *menu1, *menu2; + + if (src == &rootmenu) + indent = 1; + + valid = gtk_tree_model_iter_children(model2, child2, dst); + for (child1 = src->list; child1; child1 = child1->next) { + + sym = child1->sym; + + reparse: + menu1 = child1; + if (valid) + gtk_tree_model_get(model2, child2, COL_MENU, + &menu2, -1); + else + menu2 = NULL; // force adding of a first child + +#ifdef DEBUG + printf("%*c%s | %s\n", indent, ' ', + menu1 ? menu_get_prompt(menu1) : "nil", + menu2 ? menu_get_prompt(menu2) : "nil"); +#endif + + if ((opt_mode == OPT_NORMAL && !menu_is_visible(child1)) || + (opt_mode == OPT_PROMPT && !menu_has_prompt(child1)) || + (opt_mode == OPT_ALL && !menu_get_prompt(child1))) { + + /* remove node */ + if (gtktree_iter_find_node(dst, menu1) != NULL) { + memcpy(&tmp, child2, sizeof(GtkTreeIter)); + valid = gtk_tree_model_iter_next(model2, + child2); + gtk_tree_store_remove(tree2, &tmp); + if (!valid) + return; /* next parent */ + else + goto reparse; /* next child */ + } else + continue; + } + + if (menu1 != menu2) { + if (gtktree_iter_find_node(dst, menu1) == NULL) { // add node + if (!valid && !menu2) + sibling = NULL; + else + sibling = child2; + gtk_tree_store_insert_before(tree2, + child2, + dst, sibling); + set_node(child2, menu1, fill_row(menu1)); + if (menu2 == NULL) + valid = TRUE; + } else { // remove node + memcpy(&tmp, child2, sizeof(GtkTreeIter)); + valid = gtk_tree_model_iter_next(model2, + child2); + gtk_tree_store_remove(tree2, &tmp); + if (!valid) + return; // next parent + else + goto reparse; // next child + } + } else if (sym && (sym->flags & SYMBOL_CHANGED)) { + set_node(child2, menu1, fill_row(menu1)); + } + + indent++; + update_tree(child1, child2); + indent--; + + valid = gtk_tree_model_iter_next(model2, child2); + } +} + + +/* Display the whole tree (single/split/full view) */ +static void display_tree(struct menu *menu) +{ + struct symbol *sym; + struct property *prop; + struct menu *child; + enum prop_type ptype; + + if (menu == &rootmenu) { + indent = 1; + current = &rootmenu; + } + + for (child = menu->list; child; child = child->next) { + prop = child->prompt; + sym = child->sym; + ptype = prop ? prop->type : P_UNKNOWN; + + if (sym) + sym->flags &= ~SYMBOL_CHANGED; + + if ((view_mode == SPLIT_VIEW) + && !(child->flags & MENU_ROOT) && (tree == tree1)) + continue; + + if ((view_mode == SPLIT_VIEW) && (child->flags & MENU_ROOT) + && (tree == tree2)) + continue; + + if ((opt_mode == OPT_NORMAL && menu_is_visible(child)) || + (opt_mode == OPT_PROMPT && menu_has_prompt(child)) || + (opt_mode == OPT_ALL && menu_get_prompt(child))) + place_node(child, fill_row(child)); +#ifdef DEBUG + printf("%*c%s: ", indent, ' ', menu_get_prompt(child)); + printf("%s", child->flags & MENU_ROOT ? "rootmenu | " : ""); + printf("%s", prop_get_type_name(ptype)); + printf(" | "); + if (sym) { + printf("%s", sym_type_name(sym->type)); + printf(" | "); + printf("%s", dbg_sym_flags(sym->flags)); + printf("\n"); + } else + printf("\n"); +#endif + if ((view_mode != FULL_VIEW) && (ptype == P_MENU) + && (tree == tree2)) + continue; +/* + if (((menu != &rootmenu) && !(menu->flags & MENU_ROOT)) + || (view_mode == FULL_VIEW) + || (view_mode == SPLIT_VIEW))*/ + + /* Change paned position if the view is not in 'split mode' */ + if (view_mode == SINGLE_VIEW || view_mode == FULL_VIEW) { + gtk_paned_set_position(GTK_PANED(hpaned), 0); + } + + if (((view_mode == SINGLE_VIEW) && (menu->flags & MENU_ROOT)) + || (view_mode == FULL_VIEW) + || (view_mode == SPLIT_VIEW)) { + indent++; + display_tree(child); + indent--; + } + } +} + +/* Display a part of the tree starting at current node (single/split view) */ +static void display_tree_part(void) +{ + if (tree2) + gtk_tree_store_clear(tree2); + if (view_mode == SINGLE_VIEW) + display_tree(current); + else if (view_mode == SPLIT_VIEW) + display_tree(browsed); + gtk_tree_view_expand_all(GTK_TREE_VIEW(tree2_w)); +} + +/* Display the list in the left frame (split view) */ +static void display_list(void) +{ + if (tree1) + gtk_tree_store_clear(tree1); + + tree = tree1; + display_tree(&rootmenu); + gtk_tree_view_expand_all(GTK_TREE_VIEW(tree1_w)); + tree = tree2; +} + +void fixup_rootmenu(struct menu *menu) +{ + struct menu *child; + static int menu_cnt = 0; + + menu->flags |= MENU_ROOT; + for (child = menu->list; child; child = child->next) { + if (child->prompt && child->prompt->type == P_MENU) { + menu_cnt++; + fixup_rootmenu(child); + menu_cnt--; + } else if (!menu_cnt) + fixup_rootmenu(child); + } +} + + +/* Main */ +int main(int ac, char *av[]) +{ + const char *name; + char *env; + gchar *glade_file; + + bindtextdomain(PACKAGE, LOCALEDIR); + bind_textdomain_codeset(PACKAGE, "UTF-8"); + textdomain(PACKAGE); + + /* GTK stuffs */ + gtk_set_locale(); + gtk_init(&ac, &av); + glade_init(); + + //add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps"); + //add_pixmap_directory (PACKAGE_SOURCE_DIR "/pixmaps"); + + /* Determine GUI path */ + env = getenv(SRCTREE); + if (env) + glade_file = g_strconcat(env, "/support/kconfig/gconf.glade", NULL); + else if (av[0][0] == '/') + glade_file = g_strconcat(av[0], ".glade", NULL); + else + glade_file = g_strconcat(g_get_current_dir(), "/", av[0], ".glade", NULL); + + /* Conf stuffs */ + if (ac > 1 && av[1][0] == '-') { + switch (av[1][1]) { + case 'a': + //showAll = 1; + break; + case 's': + conf_set_message_callback(NULL); + break; + case 'h': + case '?': + printf("%s [-s] \n", av[0]); + exit(0); + } + name = av[2]; + } else + name = av[1]; + + conf_parse(name); + fixup_rootmenu(&rootmenu); + conf_read(NULL); + + /* Load the interface and connect signals */ + init_main_window(glade_file); + init_tree_model(); + init_left_tree(); + init_right_tree(); + + switch (view_mode) { + case SINGLE_VIEW: + display_tree_part(); + break; + case SPLIT_VIEW: + display_list(); + break; + case FULL_VIEW: + display_tree(&rootmenu); + break; + } + + gtk_main(); + + return 0; +} + +static void conf_changed(void) +{ + bool changed = conf_get_changed(); + gtk_widget_set_sensitive(save_btn, changed); + gtk_widget_set_sensitive(save_menu_item, changed); +} diff --git a/support/kconfig/gconf.glade b/support/kconfig/gconf.glade new file mode 100644 index 00000000..6cbc1bb4 --- /dev/null +++ b/support/kconfig/gconf.glade @@ -0,0 +1,661 @@ + + + + + + True + Gtk Buildroot Configurator + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + 640 + 480 + True + False + True + False + False + GDK_WINDOW_TYPE_HINT_NORMAL + GDK_GRAVITY_NORTH_WEST + + + + + + + True + False + 0 + + + + True + + + + True + _File + True + + + + + + + True + Load a config file + _Load + True + + + + + + True + gtk-open + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + Save the config in .config + _Save + True + + + + + + True + gtk-save + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + Save the config in a file + Save _as + True + + + + + True + gtk-save-as + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + + + + + + True + _Quit + True + + + + + + True + gtk-quit + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + + + + + True + _Options + True + + + + + + + True + Show name + Show _name + True + False + + + + + + + True + Show range (Y/M/N) + Show _range + True + False + + + + + + + True + Show value of the option + Show _data + True + False + + + + + + + True + + + + + + True + Show normal options + Show normal options + True + True + + + + + + + True + Show all options + Show all _options + True + False + set_option_mode1 + + + + + + + True + Show all options with prompts + Show all prompt options + True + False + set_option_mode1 + + + + + + + + + + + + True + _Help + True + + + + + + + True + _Introduction + True + + + + + + True + gtk-dialog-question + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + _About + True + + + + + + True + gtk-properties + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + _License + True + + + + + True + gtk-justify-fill + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + + + + 0 + False + False + + + + + + True + GTK_SHADOW_OUT + GTK_POS_LEFT + GTK_POS_TOP + + + + True + GTK_ORIENTATION_HORIZONTAL + GTK_TOOLBAR_BOTH + True + True + + + + True + Goes up of one level (single view) + Back + True + gtk-undo + True + True + False + + + + False + True + + + + + + True + True + True + False + + + + True + + + + + False + False + + + + + + True + Load a config file + Load + True + gtk-open + True + True + False + + + + False + True + + + + + + True + Save a config file + Save + True + gtk-save + True + True + False + + + + False + True + + + + + + True + True + True + False + + + + True + + + + + False + False + + + + + + True + Single view + Single + True + gtk-missing-image + True + True + False + + + + False + True + + + + + + True + Split view + Split + True + gtk-missing-image + True + True + False + + + + False + True + + + + + + True + Full view + Full + True + gtk-missing-image + True + True + False + + + + False + True + + + + + + True + True + True + False + + + + True + + + + + False + False + + + + + + True + Collapse the whole tree in the right frame + Collapse + True + gtk-remove + True + True + False + + + + False + True + + + + + + True + Expand the whole tree in the right frame + Expand + True + gtk-add + True + True + False + + + + False + True + + + + + + + 0 + False + False + + + + + + 1 + True + True + 0 + + + + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + False + False + False + + + + + + + + True + False + + + + + + True + True + 0 + + + + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + True + False + False + False + + + + + + + + True + False + + + + + + True + GTK_POLICY_NEVER + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + False + False + True + GTK_JUSTIFY_LEFT + GTK_WRAP_WORD + True + 0 + 0 + 0 + 0 + 0 + 0 + Sorry, no help available for this option yet. + + + + + True + True + + + + + True + True + + + + + 0 + True + True + + + + + + + diff --git a/support/kconfig/images.c b/support/kconfig/images.c new file mode 100644 index 00000000..d4f84bd4 --- /dev/null +++ b/support/kconfig/images.c @@ -0,0 +1,326 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +static const char *xpm_load[] = { +"22 22 5 1", +". c None", +"# c #000000", +"c c #838100", +"a c #ffff00", +"b c #ffffff", +"......................", +"......................", +"......................", +"............####....#.", +"...........#....##.##.", +"..................###.", +".................####.", +".####...........#####.", +"#abab##########.......", +"#babababababab#.......", +"#ababababababa#.......", +"#babababababab#.......", +"#ababab###############", +"#babab##cccccccccccc##", +"#abab##cccccccccccc##.", +"#bab##cccccccccccc##..", +"#ab##cccccccccccc##...", +"#b##cccccccccccc##....", +"###cccccccccccc##.....", +"##cccccccccccc##......", +"###############.......", +"......................"}; + +static const char *xpm_save[] = { +"22 22 5 1", +". c None", +"# c #000000", +"a c #838100", +"b c #c5c2c5", +"c c #cdb6d5", +"......................", +".####################.", +".#aa#bbbbbbbbbbbb#bb#.", +".#aa#bbbbbbbbbbbb#bb#.", +".#aa#bbbbbbbbbcbb####.", +".#aa#bbbccbbbbbbb#aa#.", +".#aa#bbbccbbbbbbb#aa#.", +".#aa#bbbbbbbbbbbb#aa#.", +".#aa#bbbbbbbbbbbb#aa#.", +".#aa#bbbbbbbbbbbb#aa#.", +".#aa#bbbbbbbbbbbb#aa#.", +".#aaa############aaa#.", +".#aaaaaaaaaaaaaaaaaa#.", +".#aaaaaaaaaaaaaaaaaa#.", +".#aaa#############aa#.", +".#aaa#########bbb#aa#.", +".#aaa#########bbb#aa#.", +".#aaa#########bbb#aa#.", +".#aaa#########bbb#aa#.", +".#aaa#########bbb#aa#.", +"..##################..", +"......................"}; + +static const char *xpm_back[] = { +"22 22 3 1", +". c None", +"# c #000083", +"a c #838183", +"......................", +"......................", +"......................", +"......................", +"......................", +"...........######a....", +"..#......##########...", +"..##...####......##a..", +"..###.###.........##..", +"..######..........##..", +"..#####...........##..", +"..######..........##..", +"..#######.........##..", +"..########.......##a..", +"...............a###...", +"...............###....", +"......................", +"......................", +"......................", +"......................", +"......................", +"......................"}; + +static const char *xpm_tree_view[] = { +"22 22 2 1", +". c None", +"# c #000000", +"......................", +"......................", +"......#...............", +"......#...............", +"......#...............", +"......#...............", +"......#...............", +"......########........", +"......#...............", +"......#...............", +"......#...............", +"......#...............", +"......#...............", +"......########........", +"......#...............", +"......#...............", +"......#...............", +"......#...............", +"......#...............", +"......########........", +"......................", +"......................"}; + +static const char *xpm_single_view[] = { +"22 22 2 1", +". c None", +"# c #000000", +"......................", +"......................", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"......................", +"......................"}; + +static const char *xpm_split_view[] = { +"22 22 2 1", +". c None", +"# c #000000", +"......................", +"......................", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......................", +"......................"}; + +static const char *xpm_symbol_no[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .......... ", +" . . ", +" . . ", +" . . ", +" . . ", +" . . ", +" . . ", +" . . ", +" . . ", +" .......... ", +" "}; + +static const char *xpm_symbol_mod[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .......... ", +" . . ", +" . . ", +" . .. . ", +" . .... . ", +" . .... . ", +" . .. . ", +" . . ", +" . . ", +" .......... ", +" "}; + +static const char *xpm_symbol_yes[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .......... ", +" . . ", +" . . ", +" . . . ", +" . .. . ", +" . . .. . ", +" . .... . ", +" . .. . ", +" . . ", +" .......... ", +" "}; + +static const char *xpm_choice_no[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .... ", +" .. .. ", +" . . ", +" . . ", +" . . ", +" . . ", +" . . ", +" . . ", +" .. .. ", +" .... ", +" "}; + +static const char *xpm_choice_yes[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .... ", +" .. .. ", +" . . ", +" . .. . ", +" . .... . ", +" . .... . ", +" . .. . ", +" . . ", +" .. .. ", +" .... ", +" "}; + +static const char *xpm_menu[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .......... ", +" . . ", +" . .. . ", +" . .... . ", +" . ...... . ", +" . ...... . ", +" . .... . ", +" . .. . ", +" . . ", +" .......... ", +" "}; + +static const char *xpm_menu_inv[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .......... ", +" .......... ", +" .. ...... ", +" .. .... ", +" .. .. ", +" .. .. ", +" .. .... ", +" .. ...... ", +" .......... ", +" .......... ", +" "}; + +static const char *xpm_menuback[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .......... ", +" . . ", +" . .. . ", +" . .... . ", +" . ...... . ", +" . ...... . ", +" . .... . ", +" . .. . ", +" . . ", +" .......... ", +" "}; + +static const char *xpm_void[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/support/kconfig/kconf_id.c b/support/kconfig/kconf_id.c new file mode 100644 index 00000000..3ea9c5f9 --- /dev/null +++ b/support/kconfig/kconf_id.c @@ -0,0 +1,53 @@ + +static struct kconf_id kconf_id_array[] = { + { "mainmenu", T_MAINMENU, TF_COMMAND }, + { "menu", T_MENU, TF_COMMAND }, + { "endmenu", T_ENDMENU, TF_COMMAND }, + { "source", T_SOURCE, TF_COMMAND }, + { "choice", T_CHOICE, TF_COMMAND }, + { "endchoice", T_ENDCHOICE, TF_COMMAND }, + { "comment", T_COMMENT, TF_COMMAND }, + { "config", T_CONFIG, TF_COMMAND }, + { "menuconfig", T_MENUCONFIG, TF_COMMAND }, + { "help", T_HELP, TF_COMMAND }, + { "---help---", T_HELP, TF_COMMAND }, + { "if", T_IF, TF_COMMAND|TF_PARAM }, + { "endif", T_ENDIF, TF_COMMAND }, + { "depends", T_DEPENDS, TF_COMMAND }, + { "optional", T_OPTIONAL, TF_COMMAND }, + { "default", T_DEFAULT, TF_COMMAND, S_UNKNOWN }, + { "prompt", T_PROMPT, TF_COMMAND }, + { "tristate", T_TYPE, TF_COMMAND, S_TRISTATE }, + { "def_tristate", T_DEFAULT, TF_COMMAND, S_TRISTATE }, + { "bool", T_TYPE, TF_COMMAND, S_BOOLEAN }, + { "def_bool", T_DEFAULT, TF_COMMAND, S_BOOLEAN }, + { "int", T_TYPE, TF_COMMAND, S_INT }, + { "hex", T_TYPE, TF_COMMAND, S_HEX }, + { "string", T_TYPE, TF_COMMAND, S_STRING }, + { "select", T_SELECT, TF_COMMAND }, + { "imply", T_IMPLY, TF_COMMAND }, + { "range", T_RANGE, TF_COMMAND }, + { "visible", T_VISIBLE, TF_COMMAND }, + { "option", T_OPTION, TF_COMMAND }, + { "on", T_ON, TF_PARAM }, + { "modules", T_OPT_MODULES, TF_OPTION }, + { "defconfig_list", T_OPT_DEFCONFIG_LIST, TF_OPTION }, + { "env", T_OPT_ENV, TF_OPTION }, + { "allnoconfig_y", T_OPT_ALLNOCONFIG_Y, TF_OPTION }, +}; + +#define KCONF_ID_ARRAY_SIZE (sizeof(kconf_id_array)/sizeof(struct kconf_id)) + +static const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len) +{ + int i; + + for (i = 0; i < KCONF_ID_ARRAY_SIZE; i++) { + struct kconf_id *id = kconf_id_array+i; + int l = strlen(id->name); + + if (len == l && !memcmp(str, id->name, len)) + return id; + } + return NULL; +} diff --git a/support/kconfig/kxgettext.c b/support/kconfig/kxgettext.c new file mode 100644 index 00000000..240880a8 --- /dev/null +++ b/support/kconfig/kxgettext.c @@ -0,0 +1,235 @@ +/* + * Arnaldo Carvalho de Melo , 2005 + * + * Released under the terms of the GNU GPL v2.0 + */ + +#include +#include + +#include "lkc.h" + +static char *escape(const char* text, char *bf, int len) +{ + char *bfp = bf; + int multiline = strchr(text, '\n') != NULL; + int eol = 0; + int textlen = strlen(text); + + if ((textlen > 0) && (text[textlen-1] == '\n')) + eol = 1; + + *bfp++ = '"'; + --len; + + if (multiline) { + *bfp++ = '"'; + *bfp++ = '\n'; + *bfp++ = '"'; + len -= 3; + } + + while (*text != '\0' && len > 1) { + if (*text == '"') + *bfp++ = '\\'; + else if (*text == '\n') { + *bfp++ = '\\'; + *bfp++ = 'n'; + *bfp++ = '"'; + *bfp++ = '\n'; + *bfp++ = '"'; + len -= 5; + ++text; + goto next; + } + else if (*text == '\\') { + *bfp++ = '\\'; + len--; + } + *bfp++ = *text++; +next: + --len; + } + + if (multiline && eol) + bfp -= 3; + + *bfp++ = '"'; + *bfp = '\0'; + + return bf; +} + +struct file_line { + struct file_line *next; + const char *file; + int lineno; +}; + +static struct file_line *file_line__new(const char *file, int lineno) +{ + struct file_line *self = malloc(sizeof(*self)); + + if (self == NULL) + goto out; + + self->file = file; + self->lineno = lineno; + self->next = NULL; +out: + return self; +} + +struct message { + const char *msg; + const char *option; + struct message *next; + struct file_line *files; +}; + +static struct message *message__list; + +static struct message *message__new(const char *msg, char *option, + const char *file, int lineno) +{ + struct message *self = malloc(sizeof(*self)); + + if (self == NULL) + goto out; + + self->files = file_line__new(file, lineno); + if (self->files == NULL) + goto out_fail; + + self->msg = xstrdup(msg); + if (self->msg == NULL) + goto out_fail_msg; + + self->option = option; + self->next = NULL; +out: + return self; +out_fail_msg: + free(self->files); +out_fail: + free(self); + self = NULL; + goto out; +} + +static struct message *mesage__find(const char *msg) +{ + struct message *m = message__list; + + while (m != NULL) { + if (strcmp(m->msg, msg) == 0) + break; + m = m->next; + } + + return m; +} + +static int message__add_file_line(struct message *self, const char *file, + int lineno) +{ + int rc = -1; + struct file_line *fl = file_line__new(file, lineno); + + if (fl == NULL) + goto out; + + fl->next = self->files; + self->files = fl; + rc = 0; +out: + return rc; +} + +static int message__add(const char *msg, char *option, const char *file, + int lineno) +{ + int rc = 0; + char bf[16384]; + char *escaped = escape(msg, bf, sizeof(bf)); + struct message *m = mesage__find(escaped); + + if (m != NULL) + rc = message__add_file_line(m, file, lineno); + else { + m = message__new(escaped, option, file, lineno); + + if (m != NULL) { + m->next = message__list; + message__list = m; + } else + rc = -1; + } + return rc; +} + +static void menu_build_message_list(struct menu *menu) +{ + struct menu *child; + + message__add(menu_get_prompt(menu), NULL, + menu->file == NULL ? "Root Menu" : menu->file->name, + menu->lineno); + + if (menu->sym != NULL && menu_has_help(menu)) + message__add(menu_get_help(menu), menu->sym->name, + menu->file == NULL ? "Root Menu" : menu->file->name, + menu->lineno); + + for (child = menu->list; child != NULL; child = child->next) + if (child->prompt != NULL) + menu_build_message_list(child); +} + +static void message__print_file_lineno(struct message *self) +{ + struct file_line *fl = self->files; + + putchar('\n'); + if (self->option != NULL) + printf("# %s:00000\n", self->option); + + printf("#: %s:%d", fl->file, fl->lineno); + fl = fl->next; + + while (fl != NULL) { + printf(", %s:%d", fl->file, fl->lineno); + fl = fl->next; + } + + putchar('\n'); +} + +static void message__print_gettext_msgid_msgstr(struct message *self) +{ + message__print_file_lineno(self); + + printf("msgid %s\n" + "msgstr \"\"\n", self->msg); +} + +static void menu__xgettext(void) +{ + struct message *m = message__list; + + while (m != NULL) { + /* skip empty lines ("") */ + if (strlen(m->msg) > sizeof("\"\"")) + message__print_gettext_msgid_msgstr(m); + m = m->next; + } +} + +int main(int ac, char **av) +{ + conf_parse(av[1]); + + menu_build_message_list(menu_get_root_menu(NULL)); + menu__xgettext(); + return 0; +} diff --git a/support/kconfig/list.h b/support/kconfig/list.h new file mode 100644 index 00000000..45cb237a --- /dev/null +++ b/support/kconfig/list.h @@ -0,0 +1,132 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef LIST_H +#define LIST_H + +/* + * Copied from include/linux/... + */ + +#undef offsetof +#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) + +/** + * container_of - cast a member of a structure out to the containing structure + * @ptr: the pointer to the member. + * @type: the type of the container struct this is embedded in. + * @member: the name of the member within the struct. + * + */ +#define container_of(ptr, type, member) ({ \ + const typeof( ((type *)0)->member ) *__mptr = (ptr); \ + (type *)( (char *)__mptr - offsetof(type,member) );}) + + +struct list_head { + struct list_head *next, *prev; +}; + + +#define LIST_HEAD_INIT(name) { &(name), &(name) } + +#define LIST_HEAD(name) \ + struct list_head name = LIST_HEAD_INIT(name) + +/** + * list_entry - get the struct for this entry + * @ptr: the &struct list_head pointer. + * @type: the type of the struct this is embedded in. + * @member: the name of the list_head within the struct. + */ +#define list_entry(ptr, type, member) \ + container_of(ptr, type, member) + +/** + * list_for_each_entry - iterate over list of given type + * @pos: the type * to use as a loop cursor. + * @head: the head for your list. + * @member: the name of the list_head within the struct. + */ +#define list_for_each_entry(pos, head, member) \ + for (pos = list_entry((head)->next, typeof(*pos), member); \ + &pos->member != (head); \ + pos = list_entry(pos->member.next, typeof(*pos), member)) + +/** + * list_for_each_entry_safe - iterate over list of given type safe against removal of list entry + * @pos: the type * to use as a loop cursor. + * @n: another type * to use as temporary storage + * @head: the head for your list. + * @member: the name of the list_head within the struct. + */ +#define list_for_each_entry_safe(pos, n, head, member) \ + for (pos = list_entry((head)->next, typeof(*pos), member), \ + n = list_entry(pos->member.next, typeof(*pos), member); \ + &pos->member != (head); \ + pos = n, n = list_entry(n->member.next, typeof(*n), member)) + +/** + * list_empty - tests whether a list is empty + * @head: the list to test. + */ +static inline int list_empty(const struct list_head *head) +{ + return head->next == head; +} + +/* + * Insert a new entry between two known consecutive entries. + * + * This is only for internal list manipulation where we know + * the prev/next entries already! + */ +static inline void __list_add(struct list_head *_new, + struct list_head *prev, + struct list_head *next) +{ + next->prev = _new; + _new->next = next; + _new->prev = prev; + prev->next = _new; +} + +/** + * list_add_tail - add a new entry + * @new: new entry to be added + * @head: list head to add it before + * + * Insert a new entry before the specified head. + * This is useful for implementing queues. + */ +static inline void list_add_tail(struct list_head *_new, struct list_head *head) +{ + __list_add(_new, head->prev, head); +} + +/* + * Delete a list entry by making the prev/next entries + * point to each other. + * + * This is only for internal list manipulation where we know + * the prev/next entries already! + */ +static inline void __list_del(struct list_head *prev, struct list_head *next) +{ + next->prev = prev; + prev->next = next; +} + +#define LIST_POISON1 ((void *) 0x00100100) +#define LIST_POISON2 ((void *) 0x00200200) +/** + * list_del - deletes entry from list. + * @entry: the element to delete from the list. + * Note: list_empty() on entry does not return true after this, the entry is + * in an undefined state. + */ +static inline void list_del(struct list_head *entry) +{ + __list_del(entry->prev, entry->next); + entry->next = (struct list_head*)LIST_POISON1; + entry->prev = (struct list_head*)LIST_POISON2; +} +#endif diff --git a/support/kconfig/lkc.h b/support/kconfig/lkc.h new file mode 100644 index 00000000..f4394af6 --- /dev/null +++ b/support/kconfig/lkc.h @@ -0,0 +1,188 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#ifndef LKC_H +#define LKC_H + +#include "expr.h" + +#ifndef KBUILD_NO_NLS +# include +#else +static inline const char *gettext(const char *txt) { return txt; } +static inline void textdomain(const char *domainname) {} +static inline void bindtextdomain(const char *name, const char *dir) {} +static inline char *bind_textdomain_codeset(const char *dn, char *c) { return c; } +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include "lkc_proto.h" + +#define SRCTREE "srctree" + +#ifndef PACKAGE +#define PACKAGE "linux" +#endif + +#define LOCALEDIR "/usr/share/locale" + +#define _(text) gettext(text) +#define N_(text) (text) + +#ifndef CONFIG_ +#define CONFIG_ "CONFIG_" +#endif +static inline const char *CONFIG_prefix(void) +{ + return getenv( "CONFIG_" ) ?: CONFIG_; +} +#undef CONFIG_ +#define CONFIG_ CONFIG_prefix() + +#define TF_COMMAND 0x0001 +#define TF_PARAM 0x0002 +#define TF_OPTION 0x0004 + +enum conf_def_mode { + def_default, + def_yes, + def_mod, + def_no, + def_random +}; + +#define T_OPT_MODULES 1 +#define T_OPT_DEFCONFIG_LIST 2 +#define T_OPT_ENV 3 +#define T_OPT_ALLNOCONFIG_Y 4 + +struct kconf_id { + const char *name; + int token; + unsigned int flags; + enum symbol_type stype; +}; + +extern int yylineno; +void zconfdump(FILE *out); +void zconf_starthelp(void); +FILE *zconf_fopen(const char *name); +void zconf_initscan(const char *name); +void zconf_nextfile(const char *name); +int zconf_lineno(void); +const char *zconf_curname(void); + +/* confdata.c */ +const char *conf_get_configname(void); +const char *conf_get_autoconfig_name(void); +char *conf_get_default_confname(void); +void sym_set_change_count(int count); +void sym_add_change_count(int count); +bool conf_set_all_new_symbols(enum conf_def_mode mode); +void set_all_choice_values(struct symbol *csym); + +/* confdata.c and expr.c */ +static inline void xfwrite(const void *str, size_t len, size_t count, FILE *out) +{ + assert(len != 0); + + if (fwrite(str, len, count, out) != count) + fprintf(stderr, "Error in writing or end of file.\n"); +} + +/* menu.c */ +void _menu_init(void); +void menu_warn(struct menu *menu, const char *fmt, ...); +struct menu *menu_add_menu(void); +void menu_end_menu(void); +void menu_add_entry(struct symbol *sym); +void menu_add_dep(struct expr *dep); +void menu_add_visibility(struct expr *dep); +struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep); +void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep); +void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep); +void menu_add_option(int token, char *arg); +void menu_finalize(struct menu *parent); +void menu_set_type(int type); + +/* util.c */ +struct file *file_lookup(const char *name); +int file_write_dep(const char *name); +void *xmalloc(size_t size); +void *xcalloc(size_t nmemb, size_t size); +void *xrealloc(void *p, size_t size); +char *xstrdup(const char *s); + +struct gstr { + size_t len; + char *s; + /* + * when max_width is not zero long lines in string s (if any) get + * wrapped not to exceed the max_width value + */ + int max_width; +}; +struct gstr str_new(void); +void str_free(struct gstr *gs); +void str_append(struct gstr *gs, const char *s); +void str_printf(struct gstr *gs, const char *fmt, ...); +const char *str_get(struct gstr *gs); + +/* symbol.c */ +extern struct expr *sym_env_list; + +void sym_init(void); +void sym_clear_all_valid(void); +struct symbol *sym_choice_default(struct symbol *sym); +const char *sym_get_string_default(struct symbol *sym); +struct symbol *sym_check_deps(struct symbol *sym); +struct property *prop_alloc(enum prop_type type, struct symbol *sym); +struct symbol *prop_get_symbol(struct property *prop); +struct property *sym_get_env_prop(struct symbol *sym); + +static inline tristate sym_get_tristate_value(struct symbol *sym) +{ + return sym->curr.tri; +} + + +static inline struct symbol *sym_get_choice_value(struct symbol *sym) +{ + return (struct symbol *)sym->curr.val; +} + +static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval) +{ + return sym_set_tristate_value(chval, yes); +} + +static inline bool sym_is_choice(struct symbol *sym) +{ + return sym->flags & SYMBOL_CHOICE ? true : false; +} + +static inline bool sym_is_choice_value(struct symbol *sym) +{ + return sym->flags & SYMBOL_CHOICEVAL ? true : false; +} + +static inline bool sym_is_optional(struct symbol *sym) +{ + return sym->flags & SYMBOL_OPTIONAL ? true : false; +} + +static inline bool sym_has_value(struct symbol *sym) +{ + return sym->flags & SYMBOL_DEF_USER ? true : false; +} + +#ifdef __cplusplus +} +#endif + +#endif /* LKC_H */ diff --git a/support/kconfig/lkc_proto.h b/support/kconfig/lkc_proto.h new file mode 100644 index 00000000..9dc8abfb --- /dev/null +++ b/support/kconfig/lkc_proto.h @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#include + +/* confdata.c */ +void conf_parse(const char *name); +int conf_read(const char *name); +int conf_read_simple(const char *name, int); +int conf_write_defconfig(const char *name); +int conf_write(const char *name); +int conf_write_autoconf(void); +bool conf_get_changed(void); +void conf_set_changed_callback(void (*fn)(void)); +void conf_set_message_callback(void (*fn)(const char *fmt, va_list ap)); + +/* menu.c */ +extern struct menu rootmenu; + +bool menu_is_empty(struct menu *menu); +bool menu_is_visible(struct menu *menu); +bool menu_has_prompt(struct menu *menu); +const char * menu_get_prompt(struct menu *menu); +struct menu * menu_get_root_menu(struct menu *menu); +struct menu * menu_get_parent_menu(struct menu *menu); +bool menu_has_help(struct menu *menu); +const char * menu_get_help(struct menu *menu); +struct gstr get_relations_str(struct symbol **sym_arr, struct list_head *head); +void menu_get_ext_help(struct menu *menu, struct gstr *help); + +/* symbol.c */ +extern struct symbol * symbol_hash[SYMBOL_HASHSIZE]; + +struct symbol * sym_lookup(const char *name, int flags); +struct symbol * sym_find(const char *name); +char *sym_expand_string_value(const char *in); +const char * sym_escape_string_value(const char *in); +struct symbol ** sym_re_search(const char *pattern); +const char * sym_type_name(enum symbol_type type); +void sym_calc_value(struct symbol *sym); +enum symbol_type sym_get_type(struct symbol *sym); +bool sym_tristate_within_range(struct symbol *sym,tristate tri); +bool sym_set_tristate_value(struct symbol *sym,tristate tri); +tristate sym_toggle_tristate_value(struct symbol *sym); +bool sym_string_valid(struct symbol *sym, const char *newval); +bool sym_string_within_range(struct symbol *sym, const char *str); +bool sym_set_string_value(struct symbol *sym, const char *newval); +bool sym_is_changable(struct symbol *sym); +struct property * sym_get_choice_prop(struct symbol *sym); +const char * sym_get_string_value(struct symbol *sym); + +const char * prop_get_type_name(enum prop_type type); + +/* expr.c */ +void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken); diff --git a/support/kconfig/lxdialog/.gitignore b/support/kconfig/lxdialog/.gitignore new file mode 100644 index 00000000..90b08ff0 --- /dev/null +++ b/support/kconfig/lxdialog/.gitignore @@ -0,0 +1,4 @@ +# +# Generated files +# +lxdialog diff --git a/support/kconfig/lxdialog/BIG.FAT.WARNING b/support/kconfig/lxdialog/BIG.FAT.WARNING new file mode 100644 index 00000000..a8999d82 --- /dev/null +++ b/support/kconfig/lxdialog/BIG.FAT.WARNING @@ -0,0 +1,4 @@ +This is NOT the official version of dialog. This version has been +significantly modified from the original. It is for use by the Linux +kernel configuration script. Please do not bother Savio Lam with +questions about this program. diff --git a/support/kconfig/lxdialog/check-lxdialog.sh b/support/kconfig/lxdialog/check-lxdialog.sh new file mode 100755 index 00000000..27d6c30a --- /dev/null +++ b/support/kconfig/lxdialog/check-lxdialog.sh @@ -0,0 +1,93 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Check ncurses compatibility + +# What library to link +ldflags() +{ + pkg-config --libs ncursesw 2>/dev/null && exit + pkg-config --libs ncurses 2>/dev/null && exit + for ext in so a dll.a dylib ; do + for lib in ncursesw ncurses curses ; do + $cc -print-file-name=lib${lib}.${ext} | grep -q / + if [ $? -eq 0 ]; then + echo "-l${lib}" + exit + fi + done + done + exit 1 +} + +# Where is ncurses.h? +ccflags() +{ + if pkg-config --cflags ncursesw 2>/dev/null; then + echo '-DCURSES_LOC="" -DNCURSES_WIDECHAR=1' + elif pkg-config --cflags ncurses 2>/dev/null; then + echo '-DCURSES_LOC=""' + elif [ -f /usr/include/ncursesw/curses.h ]; then + echo '-I/usr/include/ncursesw -DCURSES_LOC=""' + echo ' -DNCURSES_WIDECHAR=1' + elif [ -f /usr/include/ncurses/ncurses.h ]; then + echo '-I/usr/include/ncurses -DCURSES_LOC=""' + elif [ -f /usr/include/ncurses/curses.h ]; then + echo '-I/usr/include/ncurses -DCURSES_LOC=""' + elif [ -f /usr/include/ncurses.h ]; then + echo '-DCURSES_LOC=""' + else + echo '-DCURSES_LOC=""' + fi +} + +# Temp file, try to clean up after us +tmp=$(mktemp) +trap "rm -f $tmp" 0 1 2 3 15 + +# Check if we can link to ncurses +check() { + $cc -x c - -o $tmp 2>/dev/null <<'EOF' +#include CURSES_LOC +int main() {} +EOF + if [ $? != 0 ]; then + echo " *** Unable to find the ncurses libraries or the" 1>&2 + echo " *** required header files." 1>&2 + echo " *** 'make menuconfig' requires the ncurses libraries." 1>&2 + echo " *** " 1>&2 + echo " *** Install ncurses (ncurses-devel or libncurses-dev " 1>&2 + echo " *** depending on your distribution) and try again." 1>&2 + echo " *** " 1>&2 + exit 1 + fi +} + +usage() { + printf "Usage: $0 [-check compiler options|-ccflags|-ldflags compiler options]\n" +} + +if [ $# -eq 0 ]; then + usage + exit 1 +fi + +cc="" +case "$1" in + "-check") + shift + cc="$@" + check + ;; + "-ccflags") + ccflags + ;; + "-ldflags") + shift + cc="$@" + ldflags + ;; + "*") + usage + exit 1 + ;; +esac diff --git a/support/kconfig/lxdialog/checklist.c b/support/kconfig/lxdialog/checklist.c new file mode 100644 index 00000000..8d016faa --- /dev/null +++ b/support/kconfig/lxdialog/checklist.c @@ -0,0 +1,332 @@ +/* + * checklist.c -- implements the checklist box + * + * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) + * Stuart Herbert - S.Herbert@sheffield.ac.uk: radiolist extension + * Alessandro Rubini - rubini@ipvvis.unipv.it: merged the two + * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "dialog.h" + +static int list_width, check_x, item_x; + +/* + * Print list item + */ +static void print_item(WINDOW * win, int choice, int selected) +{ + int i; + char *list_item = malloc(list_width + 1); + + strncpy(list_item, item_str(), list_width - item_x); + list_item[list_width - item_x] = '\0'; + + /* Clear 'residue' of last item */ + wattrset(win, dlg.menubox.atr); + wmove(win, choice, 0); + for (i = 0; i < list_width; i++) + waddch(win, ' '); + + wmove(win, choice, check_x); + wattrset(win, selected ? dlg.check_selected.atr + : dlg.check.atr); + if (!item_is_tag(':')) + wprintw(win, "(%c)", item_is_tag('X') ? 'X' : ' '); + + wattrset(win, selected ? dlg.tag_selected.atr : dlg.tag.atr); + mvwaddch(win, choice, item_x, list_item[0]); + wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr); + waddstr(win, list_item + 1); + if (selected) { + wmove(win, choice, check_x + 1); + wrefresh(win); + } + free(list_item); +} + +/* + * Print the scroll indicators. + */ +static void print_arrows(WINDOW * win, int choice, int item_no, int scroll, + int y, int x, int height) +{ + wmove(win, y, x); + + if (scroll > 0) { + wattrset(win, dlg.uarrow.atr); + waddch(win, ACS_UARROW); + waddstr(win, "(-)"); + } else { + wattrset(win, dlg.menubox.atr); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + } + + y = y + height + 1; + wmove(win, y, x); + + if ((height < item_no) && (scroll + choice < item_no - 1)) { + wattrset(win, dlg.darrow.atr); + waddch(win, ACS_DARROW); + waddstr(win, "(+)"); + } else { + wattrset(win, dlg.menubox_border.atr); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + } +} + +/* + * Display the termination buttons + */ +static void print_buttons(WINDOW * dialog, int height, int width, int selected) +{ + int x = width / 2 - 11; + int y = height - 2; + + print_button(dialog, gettext("Select"), y, x, selected == 0); + print_button(dialog, gettext(" Help "), y, x + 14, selected == 1); + + wmove(dialog, y, x + 1 + 14 * selected); + wrefresh(dialog); +} + +/* + * Display a dialog box with a list of options that can be turned on or off + * in the style of radiolist (only one option turned on at a time). + */ +int dialog_checklist(const char *title, const char *prompt, int height, + int width, int list_height) +{ + int i, x, y, box_x, box_y; + int key = 0, button = 0, choice = 0, scroll = 0, max_choice; + WINDOW *dialog, *list; + + /* which item to highlight */ + item_foreach() { + if (item_is_tag('X')) + choice = item_n(); + if (item_is_selected()) { + choice = item_n(); + break; + } + } + +do_resize: + if (getmaxy(stdscr) < (height + CHECKLIST_HEIGTH_MIN)) + return -ERRDISPLAYTOOSMALL; + if (getmaxx(stdscr) < (width + CHECKLIST_WIDTH_MIN)) + return -ERRDISPLAYTOOSMALL; + + max_choice = MIN(list_height, item_count()); + + /* center dialog box on screen */ + x = (getmaxx(stdscr) - width) / 2; + y = (getmaxy(stdscr) - height) / 2; + + draw_shadow(stdscr, y, x, height, width); + + dialog = newwin(height, width, y, x); + keypad(dialog, TRUE); + + draw_box(dialog, 0, 0, height, width, + dlg.dialog.atr, dlg.border.atr); + wattrset(dialog, dlg.border.atr); + mvwaddch(dialog, height - 3, 0, ACS_LTEE); + for (i = 0; i < width - 2; i++) + waddch(dialog, ACS_HLINE); + wattrset(dialog, dlg.dialog.atr); + waddch(dialog, ACS_RTEE); + + print_title(dialog, title, width); + + wattrset(dialog, dlg.dialog.atr); + print_autowrap(dialog, prompt, width - 2, 1, 3); + + list_width = width - 6; + box_y = height - list_height - 5; + box_x = (width - list_width) / 2 - 1; + + /* create new window for the list */ + list = subwin(dialog, list_height, list_width, y + box_y + 1, + x + box_x + 1); + + keypad(list, TRUE); + + /* draw a box around the list items */ + draw_box(dialog, box_y, box_x, list_height + 2, list_width + 2, + dlg.menubox_border.atr, dlg.menubox.atr); + + /* Find length of longest item in order to center checklist */ + check_x = 0; + item_foreach() + check_x = MAX(check_x, strlen(item_str()) + 4); + check_x = MIN(check_x, list_width); + + check_x = (list_width - check_x) / 2; + item_x = check_x + 4; + + if (choice >= list_height) { + scroll = choice - list_height + 1; + choice -= scroll; + } + + /* Print the list */ + for (i = 0; i < max_choice; i++) { + item_set(scroll + i); + print_item(list, i, i == choice); + } + + print_arrows(dialog, choice, item_count(), scroll, + box_y, box_x + check_x + 5, list_height); + + print_buttons(dialog, height, width, 0); + + wnoutrefresh(dialog); + wnoutrefresh(list); + doupdate(); + + while (key != KEY_ESC) { + key = wgetch(dialog); + + for (i = 0; i < max_choice; i++) { + item_set(i + scroll); + if (toupper(key) == toupper(item_str()[0])) + break; + } + + if (i < max_choice || key == KEY_UP || key == KEY_DOWN || + key == '+' || key == '-') { + if (key == KEY_UP || key == '-') { + if (!choice) { + if (!scroll) + continue; + /* Scroll list down */ + if (list_height > 1) { + /* De-highlight current first item */ + item_set(scroll); + print_item(list, 0, FALSE); + scrollok(list, TRUE); + wscrl(list, -1); + scrollok(list, FALSE); + } + scroll--; + item_set(scroll); + print_item(list, 0, TRUE); + print_arrows(dialog, choice, item_count(), + scroll, box_y, box_x + check_x + 5, list_height); + + wnoutrefresh(dialog); + wrefresh(list); + + continue; /* wait for another key press */ + } else + i = choice - 1; + } else if (key == KEY_DOWN || key == '+') { + if (choice == max_choice - 1) { + if (scroll + choice >= item_count() - 1) + continue; + /* Scroll list up */ + if (list_height > 1) { + /* De-highlight current last item before scrolling up */ + item_set(scroll + max_choice - 1); + print_item(list, + max_choice - 1, + FALSE); + scrollok(list, TRUE); + wscrl(list, 1); + scrollok(list, FALSE); + } + scroll++; + item_set(scroll + max_choice - 1); + print_item(list, max_choice - 1, TRUE); + + print_arrows(dialog, choice, item_count(), + scroll, box_y, box_x + check_x + 5, list_height); + + wnoutrefresh(dialog); + wrefresh(list); + + continue; /* wait for another key press */ + } else + i = choice + 1; + } + if (i != choice) { + /* De-highlight current item */ + item_set(scroll + choice); + print_item(list, choice, FALSE); + /* Highlight new item */ + choice = i; + item_set(scroll + choice); + print_item(list, choice, TRUE); + wnoutrefresh(dialog); + wrefresh(list); + } + continue; /* wait for another key press */ + } + switch (key) { + case 'H': + case 'h': + case '?': + button = 1; + /* fall-through */ + case 'S': + case 's': + case ' ': + case '\n': + item_foreach() + item_set_selected(0); + item_set(scroll + choice); + item_set_selected(1); + delwin(list); + delwin(dialog); + return button; + case TAB: + case KEY_LEFT: + case KEY_RIGHT: + button = ((key == KEY_LEFT ? --button : ++button) < 0) + ? 1 : (button > 1 ? 0 : button); + + print_buttons(dialog, height, width, button); + wrefresh(dialog); + break; + case 'X': + case 'x': + key = KEY_ESC; + break; + case KEY_ESC: + key = on_key_esc(dialog); + break; + case KEY_RESIZE: + delwin(list); + delwin(dialog); + on_key_resize(); + goto do_resize; + } + + /* Now, update everything... */ + doupdate(); + } + delwin(list); + delwin(dialog); + return key; /* ESC pressed */ +} diff --git a/support/kconfig/lxdialog/dialog.h b/support/kconfig/lxdialog/dialog.h new file mode 100644 index 00000000..fcffd5b4 --- /dev/null +++ b/support/kconfig/lxdialog/dialog.h @@ -0,0 +1,257 @@ +/* + * dialog.h -- common declarations for all dialog modules + * + * AUTHOR: Savio Lam (lam836@cs.cuhk.hk) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +#ifndef KBUILD_NO_NLS +# include +#else +# define gettext(Msgid) ((const char *) (Msgid)) +#endif + +#ifdef __sun__ +#define CURS_MACROS +#endif +#include CURSES_LOC + +/* + * Colors in ncurses 1.9.9e do not work properly since foreground and + * background colors are OR'd rather than separately masked. This version + * of dialog was hacked to work with ncurses 1.9.9e, making it incompatible + * with standard curses. The simplest fix (to make this work with standard + * curses) uses the wbkgdset() function, not used in the original hack. + * Turn it off if we're building with 1.9.9e, since it just confuses things. + */ +#if defined(NCURSES_VERSION) && defined(_NEED_WRAP) && !defined(GCC_PRINTFLIKE) +#define OLD_NCURSES 1 +#undef wbkgdset +#define wbkgdset(w,p) /*nothing */ +#else +#define OLD_NCURSES 0 +#endif + +#define TR(params) _tracef params + +#define KEY_ESC 27 +#define TAB 9 +#define MAX_LEN 2048 +#define BUF_SIZE (10*1024) +#define MIN(x,y) (x < y ? x : y) +#define MAX(x,y) (x > y ? x : y) + +#ifndef ACS_ULCORNER +#define ACS_ULCORNER '+' +#endif +#ifndef ACS_LLCORNER +#define ACS_LLCORNER '+' +#endif +#ifndef ACS_URCORNER +#define ACS_URCORNER '+' +#endif +#ifndef ACS_LRCORNER +#define ACS_LRCORNER '+' +#endif +#ifndef ACS_HLINE +#define ACS_HLINE '-' +#endif +#ifndef ACS_VLINE +#define ACS_VLINE '|' +#endif +#ifndef ACS_LTEE +#define ACS_LTEE '+' +#endif +#ifndef ACS_RTEE +#define ACS_RTEE '+' +#endif +#ifndef ACS_UARROW +#define ACS_UARROW '^' +#endif +#ifndef ACS_DARROW +#define ACS_DARROW 'v' +#endif + +/* error return codes */ +#define ERRDISPLAYTOOSMALL (KEY_MAX + 1) + +/* + * Color definitions + */ +struct dialog_color { + chtype atr; /* Color attribute */ + int fg; /* foreground */ + int bg; /* background */ + int hl; /* highlight this item */ +}; + +struct subtitle_list { + struct subtitle_list *next; + const char *text; +}; + +struct dialog_info { + const char *backtitle; + struct subtitle_list *subtitles; + struct dialog_color screen; + struct dialog_color shadow; + struct dialog_color dialog; + struct dialog_color title; + struct dialog_color border; + struct dialog_color button_active; + struct dialog_color button_inactive; + struct dialog_color button_key_active; + struct dialog_color button_key_inactive; + struct dialog_color button_label_active; + struct dialog_color button_label_inactive; + struct dialog_color inputbox; + struct dialog_color inputbox_border; + struct dialog_color searchbox; + struct dialog_color searchbox_title; + struct dialog_color searchbox_border; + struct dialog_color position_indicator; + struct dialog_color menubox; + struct dialog_color menubox_border; + struct dialog_color item; + struct dialog_color item_selected; + struct dialog_color tag; + struct dialog_color tag_selected; + struct dialog_color tag_key; + struct dialog_color tag_key_selected; + struct dialog_color check; + struct dialog_color check_selected; + struct dialog_color uarrow; + struct dialog_color darrow; +}; + +/* + * Global variables + */ +extern struct dialog_info dlg; +extern char dialog_input_result[]; +extern int saved_x, saved_y; /* Needed in signal handler in mconf.c */ + +/* + * Function prototypes + */ + +/* item list as used by checklist and menubox */ +void item_reset(void); +void item_make(const char *fmt, ...); +void item_add_str(const char *fmt, ...); +void item_set_tag(char tag); +void item_set_data(void *p); +void item_set_selected(int val); +int item_activate_selected(void); +void *item_data(void); +char item_tag(void); + +/* item list manipulation for lxdialog use */ +#define MAXITEMSTR 200 +struct dialog_item { + char str[MAXITEMSTR]; /* prompt displayed */ + char tag; + void *data; /* pointer to menu item - used by menubox+checklist */ + int selected; /* Set to 1 by dialog_*() function if selected. */ +}; + +/* list of lialog_items */ +struct dialog_list { + struct dialog_item node; + struct dialog_list *next; +}; + +extern struct dialog_list *item_cur; +extern struct dialog_list item_nil; +extern struct dialog_list *item_head; + +int item_count(void); +void item_set(int n); +int item_n(void); +const char *item_str(void); +int item_is_selected(void); +int item_is_tag(char tag); +#define item_foreach() \ + for (item_cur = item_head ? item_head: item_cur; \ + item_cur && (item_cur != &item_nil); item_cur = item_cur->next) + +/* generic key handlers */ +int on_key_esc(WINDOW *win); +int on_key_resize(void); + +/* minimum (re)size values */ +#define CHECKLIST_HEIGTH_MIN 6 /* For dialog_checklist() */ +#define CHECKLIST_WIDTH_MIN 6 +#define INPUTBOX_HEIGTH_MIN 2 /* For dialog_inputbox() */ +#define INPUTBOX_WIDTH_MIN 2 +#define MENUBOX_HEIGTH_MIN 15 /* For dialog_menu() */ +#define MENUBOX_WIDTH_MIN 65 +#define TEXTBOX_HEIGTH_MIN 8 /* For dialog_textbox() */ +#define TEXTBOX_WIDTH_MIN 8 +#define YESNO_HEIGTH_MIN 4 /* For dialog_yesno() */ +#define YESNO_WIDTH_MIN 4 +#define WINDOW_HEIGTH_MIN 19 /* For init_dialog() */ +#define WINDOW_WIDTH_MIN 80 + +int init_dialog(const char *backtitle); +void set_dialog_backtitle(const char *backtitle); +void set_dialog_subtitles(struct subtitle_list *subtitles); +void end_dialog(int x, int y); +void attr_clear(WINDOW * win, int height, int width, chtype attr); +void dialog_clear(void); +void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x); +void print_button(WINDOW * win, const char *label, int y, int x, int selected); +void print_title(WINDOW *dialog, const char *title, int width); +void draw_box(WINDOW * win, int y, int x, int height, int width, chtype box, + chtype border); +void draw_shadow(WINDOW * win, int y, int x, int height, int width); + +int first_alpha(const char *string, const char *exempt); +int dialog_yesno(const char *title, const char *prompt, int height, int width); +int dialog_msgbox(const char *title, const char *prompt, int height, + int width, int pause); + + +typedef void (*update_text_fn)(char *buf, size_t start, size_t end, void + *_data); +int dialog_textbox(const char *title, char *tbuf, int initial_height, + int initial_width, int *keys, int *_vscroll, int *_hscroll, + update_text_fn update_text, void *data); +int dialog_menu(const char *title, const char *prompt, + const void *selected, int *s_scroll); +int dialog_checklist(const char *title, const char *prompt, int height, + int width, int list_height); +int dialog_inputbox(const char *title, const char *prompt, int height, + int width, const char *init); + +/* + * This is the base for fictitious keys, which activate + * the buttons. + * + * Mouse-generated keys are the following: + * -- the first 32 are used as numbers, in addition to '0'-'9' + * -- the lowercase are used to signal mouse-enter events (M_EVENT + 'o') + * -- uppercase chars are used to invoke the button (M_EVENT + 'O') + */ +#define M_EVENT (KEY_MAX+1) diff --git a/support/kconfig/lxdialog/inputbox.c b/support/kconfig/lxdialog/inputbox.c new file mode 100644 index 00000000..d58de1dc --- /dev/null +++ b/support/kconfig/lxdialog/inputbox.c @@ -0,0 +1,301 @@ +/* + * inputbox.c -- implements the input box + * + * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) + * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "dialog.h" + +char dialog_input_result[MAX_LEN + 1]; + +/* + * Print the termination buttons + */ +static void print_buttons(WINDOW * dialog, int height, int width, int selected) +{ + int x = width / 2 - 11; + int y = height - 2; + + print_button(dialog, gettext(" Ok "), y, x, selected == 0); + print_button(dialog, gettext(" Help "), y, x + 14, selected == 1); + + wmove(dialog, y, x + 1 + 14 * selected); + wrefresh(dialog); +} + +/* + * Display a dialog box for inputing a string + */ +int dialog_inputbox(const char *title, const char *prompt, int height, int width, + const char *init) +{ + int i, x, y, box_y, box_x, box_width; + int input_x = 0, key = 0, button = -1; + int show_x, len, pos; + char *instr = dialog_input_result; + WINDOW *dialog; + + if (!init) + instr[0] = '\0'; + else + strcpy(instr, init); + +do_resize: + if (getmaxy(stdscr) <= (height - INPUTBOX_HEIGTH_MIN)) + return -ERRDISPLAYTOOSMALL; + if (getmaxx(stdscr) <= (width - INPUTBOX_WIDTH_MIN)) + return -ERRDISPLAYTOOSMALL; + + /* center dialog box on screen */ + x = (getmaxx(stdscr) - width) / 2; + y = (getmaxy(stdscr) - height) / 2; + + draw_shadow(stdscr, y, x, height, width); + + dialog = newwin(height, width, y, x); + keypad(dialog, TRUE); + + draw_box(dialog, 0, 0, height, width, + dlg.dialog.atr, dlg.border.atr); + wattrset(dialog, dlg.border.atr); + mvwaddch(dialog, height - 3, 0, ACS_LTEE); + for (i = 0; i < width - 2; i++) + waddch(dialog, ACS_HLINE); + wattrset(dialog, dlg.dialog.atr); + waddch(dialog, ACS_RTEE); + + print_title(dialog, title, width); + + wattrset(dialog, dlg.dialog.atr); + print_autowrap(dialog, prompt, width - 2, 1, 3); + + /* Draw the input field box */ + box_width = width - 6; + getyx(dialog, y, x); + box_y = y + 2; + box_x = (width - box_width) / 2; + draw_box(dialog, y + 1, box_x - 1, 3, box_width + 2, + dlg.dialog.atr, dlg.border.atr); + + print_buttons(dialog, height, width, 0); + + /* Set up the initial value */ + wmove(dialog, box_y, box_x); + wattrset(dialog, dlg.inputbox.atr); + + len = strlen(instr); + pos = len; + + if (len >= box_width) { + show_x = len - box_width + 1; + input_x = box_width - 1; + for (i = 0; i < box_width - 1; i++) + waddch(dialog, instr[show_x + i]); + } else { + show_x = 0; + input_x = len; + waddstr(dialog, instr); + } + + wmove(dialog, box_y, box_x + input_x); + + wrefresh(dialog); + + while (key != KEY_ESC) { + key = wgetch(dialog); + + if (button == -1) { /* Input box selected */ + switch (key) { + case TAB: + case KEY_UP: + case KEY_DOWN: + break; + case KEY_BACKSPACE: + case 127: + if (pos) { + wattrset(dialog, dlg.inputbox.atr); + if (input_x == 0) { + show_x--; + } else + input_x--; + + if (pos < len) { + for (i = pos - 1; i < len; i++) { + instr[i] = instr[i+1]; + } + } + + pos--; + len--; + instr[len] = '\0'; + wmove(dialog, box_y, box_x); + for (i = 0; i < box_width; i++) { + if (!instr[show_x + i]) { + waddch(dialog, ' '); + break; + } + waddch(dialog, instr[show_x + i]); + } + wmove(dialog, box_y, input_x + box_x); + wrefresh(dialog); + } + continue; + case KEY_LEFT: + if (pos > 0) { + if (input_x > 0) { + wmove(dialog, box_y, --input_x + box_x); + } else if (input_x == 0) { + show_x--; + wmove(dialog, box_y, box_x); + for (i = 0; i < box_width; i++) { + if (!instr[show_x + i]) { + waddch(dialog, ' '); + break; + } + waddch(dialog, instr[show_x + i]); + } + wmove(dialog, box_y, box_x); + } + pos--; + } + continue; + case KEY_RIGHT: + if (pos < len) { + if (input_x < box_width - 1) { + wmove(dialog, box_y, ++input_x + box_x); + } else if (input_x == box_width - 1) { + show_x++; + wmove(dialog, box_y, box_x); + for (i = 0; i < box_width; i++) { + if (!instr[show_x + i]) { + waddch(dialog, ' '); + break; + } + waddch(dialog, instr[show_x + i]); + } + wmove(dialog, box_y, input_x + box_x); + } + pos++; + } + continue; + default: + if (key < 0x100 && isprint(key)) { + if (len < MAX_LEN) { + wattrset(dialog, dlg.inputbox.atr); + if (pos < len) { + for (i = len; i > pos; i--) + instr[i] = instr[i-1]; + instr[pos] = key; + } else { + instr[len] = key; + } + pos++; + len++; + instr[len] = '\0'; + + if (input_x == box_width - 1) { + show_x++; + } else { + input_x++; + } + + wmove(dialog, box_y, box_x); + for (i = 0; i < box_width; i++) { + if (!instr[show_x + i]) { + waddch(dialog, ' '); + break; + } + waddch(dialog, instr[show_x + i]); + } + wmove(dialog, box_y, input_x + box_x); + wrefresh(dialog); + } else + flash(); /* Alarm user about overflow */ + continue; + } + } + } + switch (key) { + case 'O': + case 'o': + delwin(dialog); + return 0; + case 'H': + case 'h': + delwin(dialog); + return 1; + case KEY_UP: + case KEY_LEFT: + switch (button) { + case -1: + button = 1; /* Indicates "Help" button is selected */ + print_buttons(dialog, height, width, 1); + break; + case 0: + button = -1; /* Indicates input box is selected */ + print_buttons(dialog, height, width, 0); + wmove(dialog, box_y, box_x + input_x); + wrefresh(dialog); + break; + case 1: + button = 0; /* Indicates "OK" button is selected */ + print_buttons(dialog, height, width, 0); + break; + } + break; + case TAB: + case KEY_DOWN: + case KEY_RIGHT: + switch (button) { + case -1: + button = 0; /* Indicates "OK" button is selected */ + print_buttons(dialog, height, width, 0); + break; + case 0: + button = 1; /* Indicates "Help" button is selected */ + print_buttons(dialog, height, width, 1); + break; + case 1: + button = -1; /* Indicates input box is selected */ + print_buttons(dialog, height, width, 0); + wmove(dialog, box_y, box_x + input_x); + wrefresh(dialog); + break; + } + break; + case ' ': + case '\n': + delwin(dialog); + return (button == -1 ? 0 : button); + case 'X': + case 'x': + key = KEY_ESC; + break; + case KEY_ESC: + key = on_key_esc(dialog); + break; + case KEY_RESIZE: + delwin(dialog); + on_key_resize(); + goto do_resize; + } + } + + delwin(dialog); + return KEY_ESC; /* ESC pressed */ +} diff --git a/support/kconfig/lxdialog/menubox.c b/support/kconfig/lxdialog/menubox.c new file mode 100644 index 00000000..18552490 --- /dev/null +++ b/support/kconfig/lxdialog/menubox.c @@ -0,0 +1,437 @@ +/* + * menubox.c -- implements the menu box + * + * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) + * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcapw@cfw.com) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* + * Changes by Clifford Wolf (god@clifford.at) + * + * [ 1998-06-13 ] + * + * *) A bugfix for the Page-Down problem + * + * *) Formerly when I used Page Down and Page Up, the cursor would be set + * to the first position in the menu box. Now lxdialog is a bit + * smarter and works more like other menu systems (just have a look at + * it). + * + * *) Formerly if I selected something my scrolling would be broken because + * lxdialog is re-invoked by the Menuconfig shell script, can't + * remember the last scrolling position, and just sets it so that the + * cursor is at the bottom of the box. Now it writes the temporary file + * lxdialog.scrltmp which contains this information. The file is + * deleted by lxdialog if the user leaves a submenu or enters a new + * one, but it would be nice if Menuconfig could make another "rm -f" + * just to be sure. Just try it out - you will recognise a difference! + * + * [ 1998-06-14 ] + * + * *) Now lxdialog is crash-safe against broken "lxdialog.scrltmp" files + * and menus change their size on the fly. + * + * *) If for some reason the last scrolling position is not saved by + * lxdialog, it sets the scrolling so that the selected item is in the + * middle of the menu box, not at the bottom. + * + * 02 January 1999, Michael Elizabeth Chastain (mec@shout.net) + * Reset 'scroll' to 0 if the value from lxdialog.scrltmp is bogus. + * This fixes a bug in Menuconfig where using ' ' to descend into menus + * would leave mis-synchronized lxdialog.scrltmp files lying around, + * fscanf would read in 'scroll', and eventually that value would get used. + */ + +#include "dialog.h" + +static int menu_width, item_x; + +/* + * Print menu item + */ +static void do_print_item(WINDOW * win, const char *item, int line_y, + int selected, int hotkey) +{ + int j; + char *menu_item = malloc(menu_width + 1); + + strncpy(menu_item, item, menu_width - item_x); + menu_item[menu_width - item_x] = '\0'; + j = first_alpha(menu_item, "YyNnMmHh"); + + /* Clear 'residue' of last item */ + wattrset(win, dlg.menubox.atr); + wmove(win, line_y, 0); +#if OLD_NCURSES + { + int i; + for (i = 0; i < menu_width; i++) + waddch(win, ' '); + } +#else + wclrtoeol(win); +#endif + wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr); + mvwaddstr(win, line_y, item_x, menu_item); + if (hotkey) { + wattrset(win, selected ? dlg.tag_key_selected.atr + : dlg.tag_key.atr); + mvwaddch(win, line_y, item_x + j, menu_item[j]); + } + if (selected) { + wmove(win, line_y, item_x + 1); + } + free(menu_item); + wrefresh(win); +} + +#define print_item(index, choice, selected) \ +do { \ + item_set(index); \ + do_print_item(menu, item_str(), choice, selected, !item_is_tag(':')); \ +} while (0) + +/* + * Print the scroll indicators. + */ +static void print_arrows(WINDOW * win, int item_no, int scroll, int y, int x, + int height) +{ + int cur_y, cur_x; + + getyx(win, cur_y, cur_x); + + wmove(win, y, x); + + if (scroll > 0) { + wattrset(win, dlg.uarrow.atr); + waddch(win, ACS_UARROW); + waddstr(win, "(-)"); + } else { + wattrset(win, dlg.menubox.atr); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + } + + y = y + height + 1; + wmove(win, y, x); + wrefresh(win); + + if ((height < item_no) && (scroll + height < item_no)) { + wattrset(win, dlg.darrow.atr); + waddch(win, ACS_DARROW); + waddstr(win, "(+)"); + } else { + wattrset(win, dlg.menubox_border.atr); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + } + + wmove(win, cur_y, cur_x); + wrefresh(win); +} + +/* + * Display the termination buttons. + */ +static void print_buttons(WINDOW * win, int height, int width, int selected) +{ + int x = width / 2 - 28; + int y = height - 2; + + print_button(win, gettext("Select"), y, x, selected == 0); + print_button(win, gettext(" Exit "), y, x + 12, selected == 1); + print_button(win, gettext(" Help "), y, x + 24, selected == 2); + print_button(win, gettext(" Save "), y, x + 36, selected == 3); + print_button(win, gettext(" Load "), y, x + 48, selected == 4); + + wmove(win, y, x + 1 + 12 * selected); + wrefresh(win); +} + +/* scroll up n lines (n may be negative) */ +static void do_scroll(WINDOW *win, int *scroll, int n) +{ + /* Scroll menu up */ + scrollok(win, TRUE); + wscrl(win, n); + scrollok(win, FALSE); + *scroll = *scroll + n; + wrefresh(win); +} + +/* + * Display a menu for choosing among a number of options + */ +int dialog_menu(const char *title, const char *prompt, + const void *selected, int *s_scroll) +{ + int i, j, x, y, box_x, box_y; + int height, width, menu_height; + int key = 0, button = 0, scroll = 0, choice = 0; + int first_item = 0, max_choice; + WINDOW *dialog, *menu; + +do_resize: + height = getmaxy(stdscr); + width = getmaxx(stdscr); + if (height < MENUBOX_HEIGTH_MIN || width < MENUBOX_WIDTH_MIN) + return -ERRDISPLAYTOOSMALL; + + height -= 4; + width -= 5; + menu_height = height - 10; + + max_choice = MIN(menu_height, item_count()); + + /* center dialog box on screen */ + x = (getmaxx(stdscr) - width) / 2; + y = (getmaxy(stdscr) - height) / 2; + + draw_shadow(stdscr, y, x, height, width); + + dialog = newwin(height, width, y, x); + keypad(dialog, TRUE); + + draw_box(dialog, 0, 0, height, width, + dlg.dialog.atr, dlg.border.atr); + wattrset(dialog, dlg.border.atr); + mvwaddch(dialog, height - 3, 0, ACS_LTEE); + for (i = 0; i < width - 2; i++) + waddch(dialog, ACS_HLINE); + wattrset(dialog, dlg.dialog.atr); + wbkgdset(dialog, dlg.dialog.atr & A_COLOR); + waddch(dialog, ACS_RTEE); + + print_title(dialog, title, width); + + wattrset(dialog, dlg.dialog.atr); + print_autowrap(dialog, prompt, width - 2, 1, 3); + + menu_width = width - 6; + box_y = height - menu_height - 5; + box_x = (width - menu_width) / 2 - 1; + + /* create new window for the menu */ + menu = subwin(dialog, menu_height, menu_width, + y + box_y + 1, x + box_x + 1); + keypad(menu, TRUE); + + /* draw a box around the menu items */ + draw_box(dialog, box_y, box_x, menu_height + 2, menu_width + 2, + dlg.menubox_border.atr, dlg.menubox.atr); + + if (menu_width >= 80) + item_x = (menu_width - 70) / 2; + else + item_x = 4; + + /* Set choice to default item */ + item_foreach() + if (selected && (selected == item_data())) + choice = item_n(); + /* get the saved scroll info */ + scroll = *s_scroll; + if ((scroll <= choice) && (scroll + max_choice > choice) && + (scroll >= 0) && (scroll + max_choice <= item_count())) { + first_item = scroll; + choice = choice - scroll; + } else { + scroll = 0; + } + if ((choice >= max_choice)) { + if (choice >= item_count() - max_choice / 2) + scroll = first_item = item_count() - max_choice; + else + scroll = first_item = choice - max_choice / 2; + choice = choice - scroll; + } + + /* Print the menu */ + for (i = 0; i < max_choice; i++) { + print_item(first_item + i, i, i == choice); + } + + wnoutrefresh(menu); + + print_arrows(dialog, item_count(), scroll, + box_y, box_x + item_x + 1, menu_height); + + print_buttons(dialog, height, width, 0); + wmove(menu, choice, item_x + 1); + wrefresh(menu); + + while (key != KEY_ESC) { + key = wgetch(menu); + + if (key < 256 && isalpha(key)) + key = tolower(key); + + if (strchr("ynmh ", key)) + i = max_choice; + else { + for (i = choice + 1; i < max_choice; i++) { + item_set(scroll + i); + j = first_alpha(item_str(), "YyNnMmHh"); + if (key == tolower(item_str()[j])) + break; + } + if (i == max_choice) + for (i = 0; i < max_choice; i++) { + item_set(scroll + i); + j = first_alpha(item_str(), "YyNnMmHh"); + if (key == tolower(item_str()[j])) + break; + } + } + + if (item_count() != 0 && + (i < max_choice || + key == KEY_UP || key == KEY_DOWN || + key == '-' || key == '+' || + key == KEY_PPAGE || key == KEY_NPAGE)) { + /* Remove highligt of current item */ + print_item(scroll + choice, choice, FALSE); + + if (key == KEY_UP || key == '-') { + if (choice < 2 && scroll) { + /* Scroll menu down */ + do_scroll(menu, &scroll, -1); + + print_item(scroll, 0, FALSE); + } else + choice = MAX(choice - 1, 0); + + } else if (key == KEY_DOWN || key == '+') { + print_item(scroll+choice, choice, FALSE); + + if ((choice > max_choice - 3) && + (scroll + max_choice < item_count())) { + /* Scroll menu up */ + do_scroll(menu, &scroll, 1); + + print_item(scroll+max_choice - 1, + max_choice - 1, FALSE); + } else + choice = MIN(choice + 1, max_choice - 1); + + } else if (key == KEY_PPAGE) { + scrollok(menu, TRUE); + for (i = 0; (i < max_choice); i++) { + if (scroll > 0) { + do_scroll(menu, &scroll, -1); + print_item(scroll, 0, FALSE); + } else { + if (choice > 0) + choice--; + } + } + + } else if (key == KEY_NPAGE) { + for (i = 0; (i < max_choice); i++) { + if (scroll + max_choice < item_count()) { + do_scroll(menu, &scroll, 1); + print_item(scroll+max_choice-1, + max_choice - 1, FALSE); + } else { + if (choice + 1 < max_choice) + choice++; + } + } + } else + choice = i; + + print_item(scroll + choice, choice, TRUE); + + print_arrows(dialog, item_count(), scroll, + box_y, box_x + item_x + 1, menu_height); + + wnoutrefresh(dialog); + wrefresh(menu); + + continue; /* wait for another key press */ + } + + switch (key) { + case KEY_LEFT: + case TAB: + case KEY_RIGHT: + button = ((key == KEY_LEFT ? --button : ++button) < 0) + ? 4 : (button > 4 ? 0 : button); + + print_buttons(dialog, height, width, button); + wrefresh(menu); + break; + case ' ': + case 's': + case 'y': + case 'n': + case 'm': + case '/': + case 'h': + case '?': + case 'z': + case '\n': + /* save scroll info */ + *s_scroll = scroll; + delwin(menu); + delwin(dialog); + item_set(scroll + choice); + item_set_selected(1); + switch (key) { + case 'h': + case '?': + return 2; + case 's': + case 'y': + return 5; + case 'n': + return 6; + case 'm': + return 7; + case ' ': + return 8; + case '/': + return 9; + case 'z': + return 10; + case '\n': + return button; + } + return 0; + case 'e': + case 'x': + key = KEY_ESC; + break; + case KEY_ESC: + key = on_key_esc(menu); + break; + case KEY_RESIZE: + on_key_resize(); + delwin(menu); + delwin(dialog); + goto do_resize; + } + } + delwin(menu); + delwin(dialog); + return key; /* ESC pressed */ +} diff --git a/support/kconfig/lxdialog/textbox.c b/support/kconfig/lxdialog/textbox.c new file mode 100644 index 00000000..1773319b --- /dev/null +++ b/support/kconfig/lxdialog/textbox.c @@ -0,0 +1,408 @@ +/* + * textbox.c -- implements the text box + * + * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) + * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "dialog.h" + +static void back_lines(int n); +static void print_page(WINDOW *win, int height, int width, update_text_fn + update_text, void *data); +static void print_line(WINDOW *win, int row, int width); +static char *get_line(void); +static void print_position(WINDOW * win); + +static int hscroll; +static int begin_reached, end_reached, page_length; +static char *buf; +static char *page; + +/* + * refresh window content + */ +static void refresh_text_box(WINDOW *dialog, WINDOW *box, int boxh, int boxw, + int cur_y, int cur_x, update_text_fn update_text, + void *data) +{ + print_page(box, boxh, boxw, update_text, data); + print_position(dialog); + wmove(dialog, cur_y, cur_x); /* Restore cursor position */ + wrefresh(dialog); +} + + +/* + * Display text from a file in a dialog box. + * + * keys is a null-terminated array + * update_text() may not add or remove any '\n' or '\0' in tbuf + */ +int dialog_textbox(const char *title, char *tbuf, int initial_height, + int initial_width, int *keys, int *_vscroll, int *_hscroll, + update_text_fn update_text, void *data) +{ + int i, x, y, cur_x, cur_y, key = 0; + int height, width, boxh, boxw; + WINDOW *dialog, *box; + bool done = false; + + begin_reached = 1; + end_reached = 0; + page_length = 0; + hscroll = 0; + buf = tbuf; + page = buf; /* page is pointer to start of page to be displayed */ + + if (_vscroll && *_vscroll) { + begin_reached = 0; + + for (i = 0; i < *_vscroll; i++) + get_line(); + } + if (_hscroll) + hscroll = *_hscroll; + +do_resize: + getmaxyx(stdscr, height, width); + if (height < TEXTBOX_HEIGTH_MIN || width < TEXTBOX_WIDTH_MIN) + return -ERRDISPLAYTOOSMALL; + if (initial_height != 0) + height = initial_height; + else + if (height > 4) + height -= 4; + else + height = 0; + if (initial_width != 0) + width = initial_width; + else + if (width > 5) + width -= 5; + else + width = 0; + + /* center dialog box on screen */ + x = (getmaxx(stdscr) - width) / 2; + y = (getmaxy(stdscr) - height) / 2; + + draw_shadow(stdscr, y, x, height, width); + + dialog = newwin(height, width, y, x); + keypad(dialog, TRUE); + + /* Create window for box region, used for scrolling text */ + boxh = height - 4; + boxw = width - 2; + box = subwin(dialog, boxh, boxw, y + 1, x + 1); + wattrset(box, dlg.dialog.atr); + wbkgdset(box, dlg.dialog.atr & A_COLOR); + + keypad(box, TRUE); + + /* register the new window, along with its borders */ + draw_box(dialog, 0, 0, height, width, + dlg.dialog.atr, dlg.border.atr); + + wattrset(dialog, dlg.border.atr); + mvwaddch(dialog, height - 3, 0, ACS_LTEE); + for (i = 0; i < width - 2; i++) + waddch(dialog, ACS_HLINE); + wattrset(dialog, dlg.dialog.atr); + wbkgdset(dialog, dlg.dialog.atr & A_COLOR); + waddch(dialog, ACS_RTEE); + + print_title(dialog, title, width); + + print_button(dialog, gettext(" Exit "), height - 2, width / 2 - 4, TRUE); + wnoutrefresh(dialog); + getyx(dialog, cur_y, cur_x); /* Save cursor position */ + + /* Print first page of text */ + attr_clear(box, boxh, boxw, dlg.dialog.atr); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x, update_text, + data); + + while (!done) { + key = wgetch(dialog); + switch (key) { + case 'E': /* Exit */ + case 'e': + case 'X': + case 'x': + case 'q': + case '\n': + done = true; + break; + case 'g': /* First page */ + case KEY_HOME: + if (!begin_reached) { + begin_reached = 1; + page = buf; + refresh_text_box(dialog, box, boxh, boxw, + cur_y, cur_x, update_text, + data); + } + break; + case 'G': /* Last page */ + case KEY_END: + + end_reached = 1; + /* point to last char in buf */ + page = buf + strlen(buf); + back_lines(boxh); + refresh_text_box(dialog, box, boxh, boxw, cur_y, + cur_x, update_text, data); + break; + case 'K': /* Previous line */ + case 'k': + case KEY_UP: + if (begin_reached) + break; + + back_lines(page_length + 1); + refresh_text_box(dialog, box, boxh, boxw, cur_y, + cur_x, update_text, data); + break; + case 'B': /* Previous page */ + case 'b': + case 'u': + case KEY_PPAGE: + if (begin_reached) + break; + back_lines(page_length + boxh); + refresh_text_box(dialog, box, boxh, boxw, cur_y, + cur_x, update_text, data); + break; + case 'J': /* Next line */ + case 'j': + case KEY_DOWN: + if (end_reached) + break; + + back_lines(page_length - 1); + refresh_text_box(dialog, box, boxh, boxw, cur_y, + cur_x, update_text, data); + break; + case KEY_NPAGE: /* Next page */ + case ' ': + case 'd': + if (end_reached) + break; + + begin_reached = 0; + refresh_text_box(dialog, box, boxh, boxw, cur_y, + cur_x, update_text, data); + break; + case '0': /* Beginning of line */ + case 'H': /* Scroll left */ + case 'h': + case KEY_LEFT: + if (hscroll <= 0) + break; + + if (key == '0') + hscroll = 0; + else + hscroll--; + /* Reprint current page to scroll horizontally */ + back_lines(page_length); + refresh_text_box(dialog, box, boxh, boxw, cur_y, + cur_x, update_text, data); + break; + case 'L': /* Scroll right */ + case 'l': + case KEY_RIGHT: + if (hscroll >= MAX_LEN) + break; + hscroll++; + /* Reprint current page to scroll horizontally */ + back_lines(page_length); + refresh_text_box(dialog, box, boxh, boxw, cur_y, + cur_x, update_text, data); + break; + case KEY_ESC: + if (on_key_esc(dialog) == KEY_ESC) + done = true; + break; + case KEY_RESIZE: + back_lines(height); + delwin(box); + delwin(dialog); + on_key_resize(); + goto do_resize; + default: + for (i = 0; keys[i]; i++) { + if (key == keys[i]) { + done = true; + break; + } + } + } + } + delwin(box); + delwin(dialog); + if (_vscroll) { + const char *s; + + s = buf; + *_vscroll = 0; + back_lines(page_length); + while (s < page && (s = strchr(s, '\n'))) { + (*_vscroll)++; + s++; + } + } + if (_hscroll) + *_hscroll = hscroll; + return key; +} + +/* + * Go back 'n' lines in text. Called by dialog_textbox(). + * 'page' will be updated to point to the desired line in 'buf'. + */ +static void back_lines(int n) +{ + int i; + + begin_reached = 0; + /* Go back 'n' lines */ + for (i = 0; i < n; i++) { + if (*page == '\0') { + if (end_reached) { + end_reached = 0; + continue; + } + } + if (page == buf) { + begin_reached = 1; + return; + } + page--; + do { + if (page == buf) { + begin_reached = 1; + return; + } + page--; + } while (*page != '\n'); + page++; + } +} + +/* + * Print a new page of text. + */ +static void print_page(WINDOW *win, int height, int width, update_text_fn + update_text, void *data) +{ + int i, passed_end = 0; + + if (update_text) { + char *end; + + for (i = 0; i < height; i++) + get_line(); + end = page; + back_lines(height); + update_text(buf, page - buf, end - buf, data); + } + + page_length = 0; + for (i = 0; i < height; i++) { + print_line(win, i, width); + if (!passed_end) + page_length++; + if (end_reached && !passed_end) + passed_end = 1; + } + wnoutrefresh(win); +} + +/* + * Print a new line of text. + */ +static void print_line(WINDOW * win, int row, int width) +{ + char *line; + + line = get_line(); + line += MIN(strlen(line), hscroll); /* Scroll horizontally */ + wmove(win, row, 0); /* move cursor to correct line */ + waddch(win, ' '); + waddnstr(win, line, MIN(strlen(line), width - 2)); + + /* Clear 'residue' of previous line */ +#if OLD_NCURSES + { + int x = getcurx(win); + int i; + for (i = 0; i < width - x; i++) + waddch(win, ' '); + } +#else + wclrtoeol(win); +#endif +} + +/* + * Return current line of text. Called by dialog_textbox() and print_line(). + * 'page' should point to start of current line before calling, and will be + * updated to point to start of next line. + */ +static char *get_line(void) +{ + int i = 0; + static char line[MAX_LEN + 1]; + + end_reached = 0; + while (*page != '\n') { + if (*page == '\0') { + end_reached = 1; + break; + } else if (i < MAX_LEN) + line[i++] = *(page++); + else { + /* Truncate lines longer than MAX_LEN characters */ + if (i == MAX_LEN) + line[i++] = '\0'; + page++; + } + } + if (i <= MAX_LEN) + line[i] = '\0'; + if (!end_reached) + page++; /* move past '\n' */ + + return line; +} + +/* + * Print current position + */ +static void print_position(WINDOW * win) +{ + int percent; + + wattrset(win, dlg.position_indicator.atr); + wbkgdset(win, dlg.position_indicator.atr & A_COLOR); + percent = (page - buf) * 100 / strlen(buf); + wmove(win, getmaxy(win) - 3, getmaxx(win) - 9); + wprintw(win, "(%3d%%)", percent); +} diff --git a/support/kconfig/lxdialog/util.c b/support/kconfig/lxdialog/util.c new file mode 100644 index 00000000..f7abdeb9 --- /dev/null +++ b/support/kconfig/lxdialog/util.c @@ -0,0 +1,713 @@ +/* + * util.c + * + * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) + * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include + +#include "dialog.h" + +/* Needed in signal handler in mconf.c */ +int saved_x, saved_y; + +struct dialog_info dlg; + +static void set_mono_theme(void) +{ + dlg.screen.atr = A_NORMAL; + dlg.shadow.atr = A_NORMAL; + dlg.dialog.atr = A_NORMAL; + dlg.title.atr = A_BOLD; + dlg.border.atr = A_NORMAL; + dlg.button_active.atr = A_REVERSE; + dlg.button_inactive.atr = A_DIM; + dlg.button_key_active.atr = A_REVERSE; + dlg.button_key_inactive.atr = A_BOLD; + dlg.button_label_active.atr = A_REVERSE; + dlg.button_label_inactive.atr = A_NORMAL; + dlg.inputbox.atr = A_NORMAL; + dlg.inputbox_border.atr = A_NORMAL; + dlg.searchbox.atr = A_NORMAL; + dlg.searchbox_title.atr = A_BOLD; + dlg.searchbox_border.atr = A_NORMAL; + dlg.position_indicator.atr = A_BOLD; + dlg.menubox.atr = A_NORMAL; + dlg.menubox_border.atr = A_NORMAL; + dlg.item.atr = A_NORMAL; + dlg.item_selected.atr = A_REVERSE; + dlg.tag.atr = A_BOLD; + dlg.tag_selected.atr = A_REVERSE; + dlg.tag_key.atr = A_BOLD; + dlg.tag_key_selected.atr = A_REVERSE; + dlg.check.atr = A_BOLD; + dlg.check_selected.atr = A_REVERSE; + dlg.uarrow.atr = A_BOLD; + dlg.darrow.atr = A_BOLD; +} + +#define DLG_COLOR(dialog, f, b, h) \ +do { \ + dlg.dialog.fg = (f); \ + dlg.dialog.bg = (b); \ + dlg.dialog.hl = (h); \ +} while (0) + +static void set_classic_theme(void) +{ + DLG_COLOR(screen, COLOR_CYAN, COLOR_BLUE, true); + DLG_COLOR(shadow, COLOR_BLACK, COLOR_BLACK, true); + DLG_COLOR(dialog, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(title, COLOR_YELLOW, COLOR_WHITE, true); + DLG_COLOR(border, COLOR_WHITE, COLOR_WHITE, true); + DLG_COLOR(button_active, COLOR_WHITE, COLOR_BLUE, true); + DLG_COLOR(button_inactive, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(button_key_active, COLOR_WHITE, COLOR_BLUE, true); + DLG_COLOR(button_key_inactive, COLOR_RED, COLOR_WHITE, false); + DLG_COLOR(button_label_active, COLOR_YELLOW, COLOR_BLUE, true); + DLG_COLOR(button_label_inactive, COLOR_BLACK, COLOR_WHITE, true); + DLG_COLOR(inputbox, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(inputbox_border, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(searchbox, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(searchbox_title, COLOR_YELLOW, COLOR_WHITE, true); + DLG_COLOR(searchbox_border, COLOR_WHITE, COLOR_WHITE, true); + DLG_COLOR(position_indicator, COLOR_YELLOW, COLOR_WHITE, true); + DLG_COLOR(menubox, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(menubox_border, COLOR_WHITE, COLOR_WHITE, true); + DLG_COLOR(item, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(item_selected, COLOR_WHITE, COLOR_BLUE, true); + DLG_COLOR(tag, COLOR_YELLOW, COLOR_WHITE, true); + DLG_COLOR(tag_selected, COLOR_YELLOW, COLOR_BLUE, true); + DLG_COLOR(tag_key, COLOR_YELLOW, COLOR_WHITE, true); + DLG_COLOR(tag_key_selected, COLOR_YELLOW, COLOR_BLUE, true); + DLG_COLOR(check, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(check_selected, COLOR_WHITE, COLOR_BLUE, true); + DLG_COLOR(uarrow, COLOR_GREEN, COLOR_WHITE, true); + DLG_COLOR(darrow, COLOR_GREEN, COLOR_WHITE, true); +} + +static void set_blackbg_theme(void) +{ + DLG_COLOR(screen, COLOR_RED, COLOR_BLACK, true); + DLG_COLOR(shadow, COLOR_BLACK, COLOR_BLACK, false); + DLG_COLOR(dialog, COLOR_WHITE, COLOR_BLACK, false); + DLG_COLOR(title, COLOR_RED, COLOR_BLACK, false); + DLG_COLOR(border, COLOR_BLACK, COLOR_BLACK, true); + + DLG_COLOR(button_active, COLOR_YELLOW, COLOR_RED, false); + DLG_COLOR(button_inactive, COLOR_YELLOW, COLOR_BLACK, false); + DLG_COLOR(button_key_active, COLOR_YELLOW, COLOR_RED, true); + DLG_COLOR(button_key_inactive, COLOR_RED, COLOR_BLACK, false); + DLG_COLOR(button_label_active, COLOR_WHITE, COLOR_RED, false); + DLG_COLOR(button_label_inactive, COLOR_BLACK, COLOR_BLACK, true); + + DLG_COLOR(inputbox, COLOR_YELLOW, COLOR_BLACK, false); + DLG_COLOR(inputbox_border, COLOR_YELLOW, COLOR_BLACK, false); + + DLG_COLOR(searchbox, COLOR_YELLOW, COLOR_BLACK, false); + DLG_COLOR(searchbox_title, COLOR_YELLOW, COLOR_BLACK, true); + DLG_COLOR(searchbox_border, COLOR_BLACK, COLOR_BLACK, true); + + DLG_COLOR(position_indicator, COLOR_RED, COLOR_BLACK, false); + + DLG_COLOR(menubox, COLOR_YELLOW, COLOR_BLACK, false); + DLG_COLOR(menubox_border, COLOR_BLACK, COLOR_BLACK, true); + + DLG_COLOR(item, COLOR_WHITE, COLOR_BLACK, false); + DLG_COLOR(item_selected, COLOR_WHITE, COLOR_RED, false); + + DLG_COLOR(tag, COLOR_RED, COLOR_BLACK, false); + DLG_COLOR(tag_selected, COLOR_YELLOW, COLOR_RED, true); + DLG_COLOR(tag_key, COLOR_RED, COLOR_BLACK, false); + DLG_COLOR(tag_key_selected, COLOR_YELLOW, COLOR_RED, true); + + DLG_COLOR(check, COLOR_YELLOW, COLOR_BLACK, false); + DLG_COLOR(check_selected, COLOR_YELLOW, COLOR_RED, true); + + DLG_COLOR(uarrow, COLOR_RED, COLOR_BLACK, false); + DLG_COLOR(darrow, COLOR_RED, COLOR_BLACK, false); +} + +static void set_bluetitle_theme(void) +{ + set_classic_theme(); + DLG_COLOR(title, COLOR_BLUE, COLOR_WHITE, true); + DLG_COLOR(button_key_active, COLOR_YELLOW, COLOR_BLUE, true); + DLG_COLOR(button_label_active, COLOR_WHITE, COLOR_BLUE, true); + DLG_COLOR(searchbox_title, COLOR_BLUE, COLOR_WHITE, true); + DLG_COLOR(position_indicator, COLOR_BLUE, COLOR_WHITE, true); + DLG_COLOR(tag, COLOR_BLUE, COLOR_WHITE, true); + DLG_COLOR(tag_key, COLOR_BLUE, COLOR_WHITE, true); + +} + +/* + * Select color theme + */ +static int set_theme(const char *theme) +{ + int use_color = 1; + if (!theme) + set_bluetitle_theme(); + else if (strcmp(theme, "classic") == 0) + set_classic_theme(); + else if (strcmp(theme, "bluetitle") == 0) + set_bluetitle_theme(); + else if (strcmp(theme, "blackbg") == 0) + set_blackbg_theme(); + else if (strcmp(theme, "mono") == 0) + use_color = 0; + + return use_color; +} + +static void init_one_color(struct dialog_color *color) +{ + static int pair = 0; + + pair++; + init_pair(pair, color->fg, color->bg); + if (color->hl) + color->atr = A_BOLD | COLOR_PAIR(pair); + else + color->atr = COLOR_PAIR(pair); +} + +static void init_dialog_colors(void) +{ + init_one_color(&dlg.screen); + init_one_color(&dlg.shadow); + init_one_color(&dlg.dialog); + init_one_color(&dlg.title); + init_one_color(&dlg.border); + init_one_color(&dlg.button_active); + init_one_color(&dlg.button_inactive); + init_one_color(&dlg.button_key_active); + init_one_color(&dlg.button_key_inactive); + init_one_color(&dlg.button_label_active); + init_one_color(&dlg.button_label_inactive); + init_one_color(&dlg.inputbox); + init_one_color(&dlg.inputbox_border); + init_one_color(&dlg.searchbox); + init_one_color(&dlg.searchbox_title); + init_one_color(&dlg.searchbox_border); + init_one_color(&dlg.position_indicator); + init_one_color(&dlg.menubox); + init_one_color(&dlg.menubox_border); + init_one_color(&dlg.item); + init_one_color(&dlg.item_selected); + init_one_color(&dlg.tag); + init_one_color(&dlg.tag_selected); + init_one_color(&dlg.tag_key); + init_one_color(&dlg.tag_key_selected); + init_one_color(&dlg.check); + init_one_color(&dlg.check_selected); + init_one_color(&dlg.uarrow); + init_one_color(&dlg.darrow); +} + +/* + * Setup for color display + */ +static void color_setup(const char *theme) +{ + int use_color; + + use_color = set_theme(theme); + if (use_color && has_colors()) { + start_color(); + init_dialog_colors(); + } else + set_mono_theme(); +} + +/* + * Set window to attribute 'attr' + */ +void attr_clear(WINDOW * win, int height, int width, chtype attr) +{ + int i, j; + + wattrset(win, attr); + for (i = 0; i < height; i++) { + wmove(win, i, 0); + for (j = 0; j < width; j++) + waddch(win, ' '); + } + touchwin(win); +} + +void dialog_clear(void) +{ + int lines, columns; + + lines = getmaxy(stdscr); + columns = getmaxx(stdscr); + + attr_clear(stdscr, lines, columns, dlg.screen.atr); + /* Display background title if it exists ... - SLH */ + if (dlg.backtitle != NULL) { + int i, len = 0, skip = 0; + struct subtitle_list *pos; + + wattrset(stdscr, dlg.screen.atr); + mvwaddstr(stdscr, 0, 1, (char *)dlg.backtitle); + + for (pos = dlg.subtitles; pos != NULL; pos = pos->next) { + /* 3 is for the arrow and spaces */ + len += strlen(pos->text) + 3; + } + + wmove(stdscr, 1, 1); + if (len > columns - 2) { + const char *ellipsis = "[...] "; + waddstr(stdscr, ellipsis); + skip = len - (columns - 2 - strlen(ellipsis)); + } + + for (pos = dlg.subtitles; pos != NULL; pos = pos->next) { + if (skip == 0) + waddch(stdscr, ACS_RARROW); + else + skip--; + + if (skip == 0) + waddch(stdscr, ' '); + else + skip--; + + if (skip < strlen(pos->text)) { + waddstr(stdscr, pos->text + skip); + skip = 0; + } else + skip -= strlen(pos->text); + + if (skip == 0) + waddch(stdscr, ' '); + else + skip--; + } + + for (i = len + 1; i < columns - 1; i++) + waddch(stdscr, ACS_HLINE); + } + wnoutrefresh(stdscr); +} + +/* + * Do some initialization for dialog + */ +int init_dialog(const char *backtitle) +{ + int height, width; + + initscr(); /* Init curses */ + + /* Get current cursor position for signal handler in mconf.c */ + getyx(stdscr, saved_y, saved_x); + + getmaxyx(stdscr, height, width); + if (height < WINDOW_HEIGTH_MIN || width < WINDOW_WIDTH_MIN) { + endwin(); + return -ERRDISPLAYTOOSMALL; + } + + dlg.backtitle = backtitle; + color_setup(getenv("MENUCONFIG_COLOR")); + + keypad(stdscr, TRUE); + cbreak(); + noecho(); + dialog_clear(); + + return 0; +} + +void set_dialog_backtitle(const char *backtitle) +{ + dlg.backtitle = backtitle; +} + +void set_dialog_subtitles(struct subtitle_list *subtitles) +{ + dlg.subtitles = subtitles; +} + +/* + * End using dialog functions. + */ +void end_dialog(int x, int y) +{ + /* move cursor back to original position */ + move(y, x); + refresh(); + endwin(); +} + +/* Print the title of the dialog. Center the title and truncate + * tile if wider than dialog (- 2 chars). + **/ +void print_title(WINDOW *dialog, const char *title, int width) +{ + if (title) { + int tlen = MIN(width - 2, strlen(title)); + wattrset(dialog, dlg.title.atr); + mvwaddch(dialog, 0, (width - tlen) / 2 - 1, ' '); + mvwaddnstr(dialog, 0, (width - tlen)/2, title, tlen); + waddch(dialog, ' '); + } +} + +/* + * Print a string of text in a window, automatically wrap around to the + * next line if the string is too long to fit on one line. Newline + * characters '\n' are propperly processed. We start on a new line + * if there is no room for at least 4 nonblanks following a double-space. + */ +void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x) +{ + int newl, cur_x, cur_y; + int prompt_len, room, wlen; + char tempstr[MAX_LEN + 1], *word, *sp, *sp2, *newline_separator = 0; + + strcpy(tempstr, prompt); + + prompt_len = strlen(tempstr); + + if (prompt_len <= width - x * 2) { /* If prompt is short */ + wmove(win, y, (width - prompt_len) / 2); + waddstr(win, tempstr); + } else { + cur_x = x; + cur_y = y; + newl = 1; + word = tempstr; + while (word && *word) { + sp = strpbrk(word, "\n "); + if (sp && *sp == '\n') + newline_separator = sp; + + if (sp) + *sp++ = 0; + + /* Wrap to next line if either the word does not fit, + or it is the first word of a new sentence, and it is + short, and the next word does not fit. */ + room = width - cur_x; + wlen = strlen(word); + if (wlen > room || + (newl && wlen < 4 && sp + && wlen + 1 + strlen(sp) > room + && (!(sp2 = strpbrk(sp, "\n ")) + || wlen + 1 + (sp2 - sp) > room))) { + cur_y++; + cur_x = x; + } + wmove(win, cur_y, cur_x); + waddstr(win, word); + getyx(win, cur_y, cur_x); + + /* Move to the next line if the word separator was a newline */ + if (newline_separator) { + cur_y++; + cur_x = x; + newline_separator = 0; + } else + cur_x++; + + if (sp && *sp == ' ') { + cur_x++; /* double space */ + while (*++sp == ' ') ; + newl = 1; + } else + newl = 0; + word = sp; + } + } +} + +/* + * Print a button + */ +void print_button(WINDOW * win, const char *label, int y, int x, int selected) +{ + int i, temp; + + wmove(win, y, x); + wattrset(win, selected ? dlg.button_active.atr + : dlg.button_inactive.atr); + waddstr(win, "<"); + temp = strspn(label, " "); + label += temp; + wattrset(win, selected ? dlg.button_label_active.atr + : dlg.button_label_inactive.atr); + for (i = 0; i < temp; i++) + waddch(win, ' '); + wattrset(win, selected ? dlg.button_key_active.atr + : dlg.button_key_inactive.atr); + waddch(win, label[0]); + wattrset(win, selected ? dlg.button_label_active.atr + : dlg.button_label_inactive.atr); + waddstr(win, (char *)label + 1); + wattrset(win, selected ? dlg.button_active.atr + : dlg.button_inactive.atr); + waddstr(win, ">"); + wmove(win, y, x + temp + 1); +} + +/* + * Draw a rectangular box with line drawing characters + */ +void +draw_box(WINDOW * win, int y, int x, int height, int width, + chtype box, chtype border) +{ + int i, j; + + wattrset(win, 0); + for (i = 0; i < height; i++) { + wmove(win, y + i, x); + for (j = 0; j < width; j++) + if (!i && !j) + waddch(win, border | ACS_ULCORNER); + else if (i == height - 1 && !j) + waddch(win, border | ACS_LLCORNER); + else if (!i && j == width - 1) + waddch(win, box | ACS_URCORNER); + else if (i == height - 1 && j == width - 1) + waddch(win, box | ACS_LRCORNER); + else if (!i) + waddch(win, border | ACS_HLINE); + else if (i == height - 1) + waddch(win, box | ACS_HLINE); + else if (!j) + waddch(win, border | ACS_VLINE); + else if (j == width - 1) + waddch(win, box | ACS_VLINE); + else + waddch(win, box | ' '); + } +} + +/* + * Draw shadows along the right and bottom edge to give a more 3D look + * to the boxes + */ +void draw_shadow(WINDOW * win, int y, int x, int height, int width) +{ + int i; + + if (has_colors()) { /* Whether terminal supports color? */ + wattrset(win, dlg.shadow.atr); + wmove(win, y + height, x + 2); + for (i = 0; i < width; i++) + waddch(win, winch(win) & A_CHARTEXT); + for (i = y + 1; i < y + height + 1; i++) { + wmove(win, i, x + width); + waddch(win, winch(win) & A_CHARTEXT); + waddch(win, winch(win) & A_CHARTEXT); + } + wnoutrefresh(win); + } +} + +/* + * Return the position of the first alphabetic character in a string. + */ +int first_alpha(const char *string, const char *exempt) +{ + int i, in_paren = 0, c; + + for (i = 0; i < strlen(string); i++) { + c = tolower(string[i]); + + if (strchr("<[(", c)) + ++in_paren; + if (strchr(">])", c) && in_paren > 0) + --in_paren; + + if ((!in_paren) && isalpha(c) && strchr(exempt, c) == 0) + return i; + } + + return 0; +} + +/* + * ncurses uses ESC to detect escaped char sequences. This resutl in + * a small timeout before ESC is actually delivered to the application. + * lxdialog suggest which is correctly translated to two + * times esc. But then we need to ignore the second esc to avoid stepping + * out one menu too much. Filter away all escaped key sequences since + * keypad(FALSE) turn off ncurses support for escape sequences - and thats + * needed to make notimeout() do as expected. + */ +int on_key_esc(WINDOW *win) +{ + int key; + int key2; + int key3; + + nodelay(win, TRUE); + keypad(win, FALSE); + key = wgetch(win); + key2 = wgetch(win); + do { + key3 = wgetch(win); + } while (key3 != ERR); + nodelay(win, FALSE); + keypad(win, TRUE); + if (key == KEY_ESC && key2 == ERR) + return KEY_ESC; + else if (key != ERR && key != KEY_ESC && key2 == ERR) + ungetch(key); + + return -1; +} + +/* redraw screen in new size */ +int on_key_resize(void) +{ + dialog_clear(); + return KEY_RESIZE; +} + +struct dialog_list *item_cur; +struct dialog_list item_nil; +struct dialog_list *item_head; + +void item_reset(void) +{ + struct dialog_list *p, *next; + + for (p = item_head; p; p = next) { + next = p->next; + free(p); + } + item_head = NULL; + item_cur = &item_nil; +} + +void item_make(const char *fmt, ...) +{ + va_list ap; + struct dialog_list *p = malloc(sizeof(*p)); + + if (item_head) + item_cur->next = p; + else + item_head = p; + item_cur = p; + memset(p, 0, sizeof(*p)); + + va_start(ap, fmt); + vsnprintf(item_cur->node.str, sizeof(item_cur->node.str), fmt, ap); + va_end(ap); +} + +void item_add_str(const char *fmt, ...) +{ + va_list ap; + size_t avail; + + avail = sizeof(item_cur->node.str) - strlen(item_cur->node.str); + + va_start(ap, fmt); + vsnprintf(item_cur->node.str + strlen(item_cur->node.str), + avail, fmt, ap); + item_cur->node.str[sizeof(item_cur->node.str) - 1] = '\0'; + va_end(ap); +} + +void item_set_tag(char tag) +{ + item_cur->node.tag = tag; +} +void item_set_data(void *ptr) +{ + item_cur->node.data = ptr; +} + +void item_set_selected(int val) +{ + item_cur->node.selected = val; +} + +int item_activate_selected(void) +{ + item_foreach() + if (item_is_selected()) + return 1; + return 0; +} + +void *item_data(void) +{ + return item_cur->node.data; +} + +char item_tag(void) +{ + return item_cur->node.tag; +} + +int item_count(void) +{ + int n = 0; + struct dialog_list *p; + + for (p = item_head; p; p = p->next) + n++; + return n; +} + +void item_set(int n) +{ + int i = 0; + item_foreach() + if (i++ == n) + return; +} + +int item_n(void) +{ + int n = 0; + struct dialog_list *p; + + for (p = item_head; p; p = p->next) { + if (p == item_cur) + return n; + n++; + } + return 0; +} + +const char *item_str(void) +{ + return item_cur->node.str; +} + +int item_is_selected(void) +{ + return (item_cur->node.selected != 0); +} + +int item_is_tag(char tag) +{ + return (item_cur->node.tag == tag); +} diff --git a/support/kconfig/lxdialog/yesno.c b/support/kconfig/lxdialog/yesno.c new file mode 100644 index 00000000..676fb2f8 --- /dev/null +++ b/support/kconfig/lxdialog/yesno.c @@ -0,0 +1,114 @@ +/* + * yesno.c -- implements the yes/no box + * + * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) + * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "dialog.h" + +/* + * Display termination buttons + */ +static void print_buttons(WINDOW * dialog, int height, int width, int selected) +{ + int x = width / 2 - 10; + int y = height - 2; + + print_button(dialog, gettext(" Yes "), y, x, selected == 0); + print_button(dialog, gettext(" No "), y, x + 13, selected == 1); + + wmove(dialog, y, x + 1 + 13 * selected); + wrefresh(dialog); +} + +/* + * Display a dialog box with two buttons - Yes and No + */ +int dialog_yesno(const char *title, const char *prompt, int height, int width) +{ + int i, x, y, key = 0, button = 0; + WINDOW *dialog; + +do_resize: + if (getmaxy(stdscr) < (height + YESNO_HEIGTH_MIN)) + return -ERRDISPLAYTOOSMALL; + if (getmaxx(stdscr) < (width + YESNO_WIDTH_MIN)) + return -ERRDISPLAYTOOSMALL; + + /* center dialog box on screen */ + x = (getmaxx(stdscr) - width) / 2; + y = (getmaxy(stdscr) - height) / 2; + + draw_shadow(stdscr, y, x, height, width); + + dialog = newwin(height, width, y, x); + keypad(dialog, TRUE); + + draw_box(dialog, 0, 0, height, width, + dlg.dialog.atr, dlg.border.atr); + wattrset(dialog, dlg.border.atr); + mvwaddch(dialog, height - 3, 0, ACS_LTEE); + for (i = 0; i < width - 2; i++) + waddch(dialog, ACS_HLINE); + wattrset(dialog, dlg.dialog.atr); + waddch(dialog, ACS_RTEE); + + print_title(dialog, title, width); + + wattrset(dialog, dlg.dialog.atr); + print_autowrap(dialog, prompt, width - 2, 1, 3); + + print_buttons(dialog, height, width, 0); + + while (key != KEY_ESC) { + key = wgetch(dialog); + switch (key) { + case 'Y': + case 'y': + delwin(dialog); + return 0; + case 'N': + case 'n': + delwin(dialog); + return 1; + + case TAB: + case KEY_LEFT: + case KEY_RIGHT: + button = ((key == KEY_LEFT ? --button : ++button) < 0) ? 1 : (button > 1 ? 0 : button); + + print_buttons(dialog, height, width, button); + wrefresh(dialog); + break; + case ' ': + case '\n': + delwin(dialog); + return button; + case KEY_ESC: + key = on_key_esc(dialog); + break; + case KEY_RESIZE: + delwin(dialog); + on_key_resize(); + goto do_resize; + } + } + + delwin(dialog); + return key; /* ESC pressed */ +} diff --git a/support/kconfig/mconf.c b/support/kconfig/mconf.c new file mode 100644 index 00000000..279f4552 --- /dev/null +++ b/support/kconfig/mconf.c @@ -0,0 +1,1047 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + * + * Introduced single menu mode (show all sub-menus in one large tree). + * 2002-11-06 Petr Baudis + * + * i18n, 2005, Arnaldo Carvalho de Melo + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lkc.h" +#include "lxdialog/dialog.h" + +static const char mconf_readme[] = N_( +"Overview\n" +"--------\n" +"This interface lets you select features and parameters for the build.\n" +"Features can either be built-in, modularized, or ignored. Parameters\n" +"must be entered in as decimal or hexadecimal numbers or text.\n" +"\n" +"Menu items beginning with following braces represent features that\n" +" [ ] can be built in or removed\n" +" < > can be built in, modularized or removed\n" +" { } can be built in or modularized (selected by other feature)\n" +" - - are selected by other feature,\n" +"while *, M or whitespace inside braces means to build in, build as\n" +"a module or to exclude the feature respectively.\n" +"\n" +"To change any of these features, highlight it with the cursor\n" +"keys and press to build it in, to make it a module or\n" +" to remove it. You may also press the to cycle\n" +"through the available options (i.e. Y->N->M->Y).\n" +"\n" +"Some additional keyboard hints:\n" +"\n" +"Menus\n" +"----------\n" +"o Use the Up/Down arrow keys (cursor keys) to highlight the item you\n" +" wish to change or the submenu you wish to select and press .\n" +" Submenus are designated by \"--->\", empty ones by \"----\".\n" +"\n" +" Shortcut: Press the option's highlighted letter (hotkey).\n" +" Pressing a hotkey more than once will sequence\n" +" through all visible items which use that hotkey.\n" +"\n" +" You may also use the and keys to scroll\n" +" unseen options into view.\n" +"\n" +"o To exit a menu use the cursor keys to highlight the button\n" +" and press .\n" +"\n" +" Shortcut: Press or or if there is no hotkey\n" +" using those letters. You may press a single , but\n" +" there is a delayed response which you may find annoying.\n" +"\n" +" Also, the and cursor keys will cycle between and\n" +" \n" +"\n" +"\n" +"Data Entry\n" +"-----------\n" +"o Enter the requested information and press \n" +" If you are entering hexadecimal values, it is not necessary to\n" +" add the '0x' prefix to the entry.\n" +"\n" +"o For help, use the or cursor keys to highlight the help option\n" +" and press . You can try as well.\n" +"\n" +"\n" +"Text Box (Help Window)\n" +"--------\n" +"o Use the cursor keys to scroll up/down/left/right. The VI editor\n" +" keys h,j,k,l function here as do , , and for\n" +" those who are familiar with less and lynx.\n" +"\n" +"o Press , , , or to exit.\n" +"\n" +"\n" +"Alternate Configuration Files\n" +"-----------------------------\n" +"Menuconfig supports the use of alternate configuration files for\n" +"those who, for various reasons, find it necessary to switch\n" +"between different configurations.\n" +"\n" +"The button will let you save the current configuration to\n" +"a file of your choosing. Use the button to load a previously\n" +"saved alternate configuration.\n" +"\n" +"Even if you don't use alternate configuration files, but you find\n" +"during a Menuconfig session that you have completely messed up your\n" +"settings, you may use the button to restore your previously\n" +"saved settings from \".config\" without restarting Menuconfig.\n" +"\n" +"Other information\n" +"-----------------\n" +"If you use Menuconfig in an XTERM window, make sure you have your\n" +"$TERM variable set to point to an xterm definition which supports\n" +"color. Otherwise, Menuconfig will look rather bad. Menuconfig will\n" +"not display correctly in an RXVT window because rxvt displays only one\n" +"intensity of color, bright.\n" +"\n" +"Menuconfig will display larger menus on screens or xterms which are\n" +"set to display more than the standard 25 row by 80 column geometry.\n" +"In order for this to work, the \"stty size\" command must be able to\n" +"display the screen's current row and column geometry. I STRONGLY\n" +"RECOMMEND that you make sure you do NOT have the shell variables\n" +"LINES and COLUMNS exported into your environment. Some distributions\n" +"export those variables via /etc/profile. Some ncurses programs can\n" +"become confused when those variables (LINES & COLUMNS) don't reflect\n" +"the true screen size.\n" +"\n" +"Optional personality available\n" +"------------------------------\n" +"If you prefer to have all of the options listed in a single menu,\n" +"rather than the default multimenu hierarchy, run the menuconfig with\n" +"MENUCONFIG_MODE environment variable set to single_menu. Example:\n" +"\n" +"make MENUCONFIG_MODE=single_menu menuconfig\n" +"\n" +" will then unroll the appropriate category, or enfold it if it\n" +"is already unrolled.\n" +"\n" +"Note that this mode can eventually be a little more CPU expensive\n" +"(especially with a larger number of unrolled categories) than the\n" +"default mode.\n" +"\n" +"Different color themes available\n" +"--------------------------------\n" +"It is possible to select different color themes using the variable\n" +"MENUCONFIG_COLOR. To select a theme use:\n" +"\n" +"make MENUCONFIG_COLOR= menuconfig\n" +"\n" +"Available themes are\n" +" mono => selects colors suitable for monochrome displays\n" +" blackbg => selects a color scheme with black background\n" +" classic => theme with blue background. The classic look\n" +" bluetitle => an LCD friendly version of classic. (default)\n" +"\n"), +menu_instructions[] = N_( + "Arrow keys navigate the menu. " + " selects submenus ---> (or empty submenus ----). " + "Highlighted letters are hotkeys. " + "Pressing selects a feature, while excludes a feature. " + "Press to exit, for Help, for Search. " + "Legend: [*] feature is selected [ ] feature is excluded"), +radiolist_instructions[] = N_( + "Use the arrow keys to navigate this window or " + "press the hotkey of the item you wish to select " + "followed by the . " + "Press for additional information about this option."), +inputbox_instructions_int[] = N_( + "Please enter a decimal value. " + "Fractions will not be accepted. " + "Use the key to move from the input field to the buttons below it."), +inputbox_instructions_hex[] = N_( + "Please enter a hexadecimal value. " + "Use the key to move from the input field to the buttons below it."), +inputbox_instructions_string[] = N_( + "Please enter a string value. " + "Use the key to move from the input field to the buttons below it."), +setmod_text[] = N_( + "This feature depends on another which has been configured as a module.\n" + "As a result, this feature will be built as a module."), +load_config_text[] = N_( + "Enter the name of the configuration file you wish to load. " + "Accept the name shown to restore the configuration you " + "last retrieved. Leave blank to abort."), +load_config_help[] = N_( + "\n" + "For various reasons, one may wish to keep several different\n" + "configurations available on a single machine.\n" + "\n" + "If you have saved a previous configuration in a file other than the\n" + "default one, entering its name here will allow you to modify that\n" + "configuration.\n" + "\n" + "If you are uncertain, then you have probably never used alternate\n" + "configuration files. You should therefore leave this blank to abort.\n"), +save_config_text[] = N_( + "Enter a filename to which this configuration should be saved " + "as an alternate. Leave blank to abort."), +save_config_help[] = N_( + "\n" + "For various reasons, one may wish to keep different configurations\n" + "available on a single machine.\n" + "\n" + "Entering a file name here will allow you to later retrieve, modify\n" + "and use the current configuration as an alternate to whatever\n" + "configuration options you have selected at that time.\n" + "\n" + "If you are uncertain what all this means then you should probably\n" + "leave this blank.\n"), +search_help[] = N_( + "\n" + "Search for symbols and display their relations.\n" + "Regular expressions are allowed.\n" + "Example: search for \"^FOO\"\n" + "Result:\n" + "-----------------------------------------------------------------\n" + "Symbol: FOO [=m]\n" + "Type : tristate\n" + "Prompt: Foo bus is used to drive the bar HW\n" + " Location:\n" + " -> Bus options (PCI, PCMCIA, EISA, ISA)\n" + " -> PCI support (PCI [=y])\n" + "(1) -> PCI access mode ( [=y])\n" + " Defined at drivers/pci/Kconfig:47\n" + " Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n" + " Selects: LIBCRC32\n" + " Selected by: BAR [=n]\n" + "-----------------------------------------------------------------\n" + "o The line 'Type:' shows the type of the configuration option for\n" + " this symbol (bool, tristate, string, ...)\n" + "o The line 'Prompt:' shows the text used in the menu structure for\n" + " this symbol\n" + "o The 'Defined at' line tells at what file / line number the symbol\n" + " is defined\n" + "o The 'Depends on:' line tells what symbols need to be defined for\n" + " this symbol to be visible in the menu (selectable)\n" + "o The 'Location:' lines tells where in the menu structure this symbol\n" + " is located\n" + " A location followed by a [=y] indicates that this is a\n" + " selectable menu item - and the current value is displayed inside\n" + " brackets.\n" + " Press the key in the (#) prefix to jump directly to that\n" + " location. You will be returned to the current search results\n" + " after exiting this new menu.\n" + "o The 'Selects:' line tells what symbols will be automatically\n" + " selected if this symbol is selected (y or m)\n" + "o The 'Selected by' line tells what symbol has selected this symbol\n" + "\n" + "Only relevant lines are shown.\n" + "\n\n" + "Search examples:\n" + "Examples: USB => find all symbols containing USB\n" + " ^USB => find all symbols starting with USB\n" + " USB$ => find all symbols ending with USB\n" + "\n"); + +static int indent; +static struct menu *current_menu; +static int child_count; +static int single_menu_mode; +static int show_all_options; +static int save_and_exit; +static int silent; + +static void conf(struct menu *menu, struct menu *active_menu); +static void conf_choice(struct menu *menu); +static void conf_string(struct menu *menu); +static void conf_load(void); +static void conf_save(void); +static int show_textbox_ext(const char *title, char *text, int r, int c, + int *keys, int *vscroll, int *hscroll, + update_text_fn update_text, void *data); +static void show_textbox(const char *title, const char *text, int r, int c); +static void show_helptext(const char *title, const char *text); +static void show_help(struct menu *menu); + +static char filename[PATH_MAX+1]; +static void set_config_filename(const char *config_filename) +{ + static char menu_backtitle[PATH_MAX+128]; + int size; + + size = snprintf(menu_backtitle, sizeof(menu_backtitle), + "%s - %s", config_filename, rootmenu.prompt->text); + if (size >= sizeof(menu_backtitle)) + menu_backtitle[sizeof(menu_backtitle)-1] = '\0'; + set_dialog_backtitle(menu_backtitle); + + size = snprintf(filename, sizeof(filename), "%s", config_filename); + if (size >= sizeof(filename)) + filename[sizeof(filename)-1] = '\0'; +} + +struct subtitle_part { + struct list_head entries; + const char *text; +}; +static LIST_HEAD(trail); + +static struct subtitle_list *subtitles; +static void set_subtitle(void) +{ + struct subtitle_part *sp; + struct subtitle_list *pos, *tmp; + + for (pos = subtitles; pos != NULL; pos = tmp) { + tmp = pos->next; + free(pos); + } + + subtitles = NULL; + list_for_each_entry(sp, &trail, entries) { + if (sp->text) { + if (pos) { + pos->next = xcalloc(1, sizeof(*pos)); + pos = pos->next; + } else { + subtitles = pos = xcalloc(1, sizeof(*pos)); + } + pos->text = sp->text; + } + } + + set_dialog_subtitles(subtitles); +} + +static void reset_subtitle(void) +{ + struct subtitle_list *pos, *tmp; + + for (pos = subtitles; pos != NULL; pos = tmp) { + tmp = pos->next; + free(pos); + } + subtitles = NULL; + set_dialog_subtitles(subtitles); +} + +struct search_data { + struct list_head *head; + struct menu **targets; + int *keys; +}; + +static void update_text(char *buf, size_t start, size_t end, void *_data) +{ + struct search_data *data = _data; + struct jump_key *pos; + int k = 0; + + list_for_each_entry(pos, data->head, entries) { + if (pos->offset >= start && pos->offset < end) { + char header[4]; + + if (k < JUMP_NB) { + int key = '0' + (pos->index % JUMP_NB) + 1; + + sprintf(header, "(%c)", key); + data->keys[k] = key; + data->targets[k] = pos->target; + k++; + } else { + sprintf(header, " "); + } + + memcpy(buf + pos->offset, header, sizeof(header) - 1); + } + } + data->keys[k] = 0; +} + +static void search_conf(void) +{ + struct symbol **sym_arr; + struct gstr res; + struct gstr title; + char *dialog_input; + int dres, vscroll = 0, hscroll = 0; + bool again; + struct gstr sttext; + struct subtitle_part stpart; + + title = str_new(); + str_printf( &title, _("Enter (sub)string or regexp to search for " + "(with or without \"%s\")"), CONFIG_); + +again: + dialog_clear(); + dres = dialog_inputbox(_("Search Configuration Parameter"), + str_get(&title), + 10, 75, ""); + switch (dres) { + case 0: + break; + case 1: + show_helptext(_("Search Configuration"), search_help); + goto again; + default: + str_free(&title); + return; + } + + /* strip the prefix if necessary */ + dialog_input = dialog_input_result; + if (strncasecmp(dialog_input_result, CONFIG_, strlen(CONFIG_)) == 0) + dialog_input += strlen(CONFIG_); + + sttext = str_new(); + str_printf(&sttext, "Search (%s)", dialog_input_result); + stpart.text = str_get(&sttext); + list_add_tail(&stpart.entries, &trail); + + sym_arr = sym_re_search(dialog_input); + do { + LIST_HEAD(head); + struct menu *targets[JUMP_NB]; + int keys[JUMP_NB + 1], i; + struct search_data data = { + .head = &head, + .targets = targets, + .keys = keys, + }; + struct jump_key *pos, *tmp; + + res = get_relations_str(sym_arr, &head); + set_subtitle(); + dres = show_textbox_ext(_("Search Results"), (char *) + str_get(&res), 0, 0, keys, &vscroll, + &hscroll, &update_text, (void *) + &data); + again = false; + for (i = 0; i < JUMP_NB && keys[i]; i++) + if (dres == keys[i]) { + conf(targets[i]->parent, targets[i]); + again = true; + } + str_free(&res); + list_for_each_entry_safe(pos, tmp, &head, entries) + free(pos); + } while (again); + free(sym_arr); + str_free(&title); + list_del(trail.prev); + str_free(&sttext); +} + +static void build_conf(struct menu *menu) +{ + struct symbol *sym; + struct property *prop; + struct menu *child; + int type, tmp, doint = 2; + tristate val; + char ch; + bool visible; + + /* + * note: menu_is_visible() has side effect that it will + * recalc the value of the symbol. + */ + visible = menu_is_visible(menu); + if (show_all_options && !menu_has_prompt(menu)) + return; + else if (!show_all_options && !visible) + return; + + sym = menu->sym; + prop = menu->prompt; + if (!sym) { + if (prop && menu != current_menu) { + const char *prompt = menu_get_prompt(menu); + switch (prop->type) { + case P_MENU: + child_count++; + prompt = _(prompt); + if (single_menu_mode) { + item_make("%s%*c%s", + menu->data ? "-->" : "++>", + indent + 1, ' ', prompt); + } else + item_make(" %*c%s %s", + indent + 1, ' ', prompt, + menu_is_empty(menu) ? "----" : "--->"); + item_set_tag('m'); + item_set_data(menu); + if (single_menu_mode && menu->data) + goto conf_childs; + return; + case P_COMMENT: + if (prompt) { + child_count++; + item_make(" %*c*** %s ***", indent + 1, ' ', _(prompt)); + item_set_tag(':'); + item_set_data(menu); + } + break; + default: + if (prompt) { + child_count++; + item_make("---%*c%s", indent + 1, ' ', _(prompt)); + item_set_tag(':'); + item_set_data(menu); + } + } + } else + doint = 0; + goto conf_childs; + } + + type = sym_get_type(sym); + if (sym_is_choice(sym)) { + struct symbol *def_sym = sym_get_choice_value(sym); + struct menu *def_menu = NULL; + + child_count++; + for (child = menu->list; child; child = child->next) { + if (menu_is_visible(child) && child->sym == def_sym) + def_menu = child; + } + + val = sym_get_tristate_value(sym); + if (sym_is_changable(sym)) { + switch (type) { + case S_BOOLEAN: + item_make("[%c]", val == no ? ' ' : '*'); + break; + case S_TRISTATE: + switch (val) { + case yes: ch = '*'; break; + case mod: ch = 'M'; break; + default: ch = ' '; break; + } + item_make("<%c>", ch); + break; + } + item_set_tag('t'); + item_set_data(menu); + } else { + item_make(" "); + item_set_tag(def_menu ? 't' : ':'); + item_set_data(menu); + } + + item_add_str("%*c%s", indent + 1, ' ', _(menu_get_prompt(menu))); + if (val == yes) { + if (def_menu) { + item_add_str(" (%s)", _(menu_get_prompt(def_menu))); + item_add_str(" --->"); + if (def_menu->list) { + indent += 2; + build_conf(def_menu); + indent -= 2; + } + } + return; + } + } else { + if (menu == current_menu) { + item_make("---%*c%s", indent + 1, ' ', _(menu_get_prompt(menu))); + item_set_tag(':'); + item_set_data(menu); + goto conf_childs; + } + child_count++; + val = sym_get_tristate_value(sym); + if (sym_is_choice_value(sym) && val == yes) { + item_make(" "); + item_set_tag(':'); + item_set_data(menu); + } else { + switch (type) { + case S_BOOLEAN: + if (sym_is_changable(sym)) + item_make("[%c]", val == no ? ' ' : '*'); + else + item_make("-%c-", val == no ? ' ' : '*'); + item_set_tag('t'); + item_set_data(menu); + break; + case S_TRISTATE: + switch (val) { + case yes: ch = '*'; break; + case mod: ch = 'M'; break; + default: ch = ' '; break; + } + if (sym_is_changable(sym)) { + if (sym->rev_dep.tri == mod) + item_make("{%c}", ch); + else + item_make("<%c>", ch); + } else + item_make("-%c-", ch); + item_set_tag('t'); + item_set_data(menu); + break; + default: + tmp = 2 + strlen(sym_get_string_value(sym)); /* () = 2 */ + item_make("(%s)", sym_get_string_value(sym)); + tmp = indent - tmp + 4; + if (tmp < 0) + tmp = 0; + item_add_str("%*c%s%s", tmp, ' ', _(menu_get_prompt(menu)), + (sym_has_value(sym) || !sym_is_changable(sym)) ? + "" : _(" (NEW)")); + item_set_tag('s'); + item_set_data(menu); + goto conf_childs; + } + } + item_add_str("%*c%s%s", indent + 1, ' ', _(menu_get_prompt(menu)), + (sym_has_value(sym) || !sym_is_changable(sym)) ? + "" : _(" (NEW)")); + if (menu->prompt->type == P_MENU) { + item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->"); + return; + } + } + +conf_childs: + indent += doint; + for (child = menu->list; child; child = child->next) + build_conf(child); + indent -= doint; +} + +static void conf(struct menu *menu, struct menu *active_menu) +{ + struct menu *submenu; + const char *prompt = menu_get_prompt(menu); + struct subtitle_part stpart; + struct symbol *sym; + int res; + int s_scroll = 0; + + if (menu != &rootmenu) + stpart.text = menu_get_prompt(menu); + else + stpart.text = NULL; + list_add_tail(&stpart.entries, &trail); + + while (1) { + item_reset(); + current_menu = menu; + build_conf(menu); + if (!child_count) + break; + set_subtitle(); + dialog_clear(); + res = dialog_menu(prompt ? _(prompt) : _("Main Menu"), + _(menu_instructions), + active_menu, &s_scroll); + if (res == 1 || res == KEY_ESC || res == -ERRDISPLAYTOOSMALL) + break; + if (item_count() != 0) { + if (!item_activate_selected()) + continue; + if (!item_tag()) + continue; + } + submenu = item_data(); + active_menu = item_data(); + if (submenu) + sym = submenu->sym; + else + sym = NULL; + + switch (res) { + case 0: + switch (item_tag()) { + case 'm': + if (single_menu_mode) + submenu->data = (void *) (long) !submenu->data; + else + conf(submenu, NULL); + break; + case 't': + if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes) + conf_choice(submenu); + else if (submenu->prompt->type == P_MENU) + conf(submenu, NULL); + break; + case 's': + conf_string(submenu); + break; + } + break; + case 2: + if (sym) + show_help(submenu); + else { + reset_subtitle(); + show_helptext(_("README"), _(mconf_readme)); + } + break; + case 3: + reset_subtitle(); + conf_save(); + break; + case 4: + reset_subtitle(); + conf_load(); + break; + case 5: + if (item_is_tag('t')) { + if (sym_set_tristate_value(sym, yes)) + break; + if (sym_set_tristate_value(sym, mod)) + show_textbox(NULL, setmod_text, 6, 74); + } + break; + case 6: + if (item_is_tag('t')) + sym_set_tristate_value(sym, no); + break; + case 7: + if (item_is_tag('t')) + sym_set_tristate_value(sym, mod); + break; + case 8: + if (item_is_tag('t')) + sym_toggle_tristate_value(sym); + else if (item_is_tag('m')) + conf(submenu, NULL); + break; + case 9: + search_conf(); + break; + case 10: + show_all_options = !show_all_options; + break; + } + } + + list_del(trail.prev); +} + +static int show_textbox_ext(const char *title, char *text, int r, int c, int + *keys, int *vscroll, int *hscroll, update_text_fn + update_text, void *data) +{ + dialog_clear(); + return dialog_textbox(title, text, r, c, keys, vscroll, hscroll, + update_text, data); +} + +static void show_textbox(const char *title, const char *text, int r, int c) +{ + show_textbox_ext(title, (char *) text, r, c, (int []) {0}, NULL, NULL, + NULL, NULL); +} + +static void show_helptext(const char *title, const char *text) +{ + show_textbox(title, text, 0, 0); +} + +static void conf_message_callback(const char *fmt, va_list ap) +{ + char buf[PATH_MAX+1]; + + vsnprintf(buf, sizeof(buf), fmt, ap); + if (save_and_exit) { + if (!silent) + printf("%s", buf); + } else { + show_textbox(NULL, buf, 6, 60); + } +} + +static void show_help(struct menu *menu) +{ + struct gstr help = str_new(); + + help.max_width = getmaxx(stdscr) - 10; + menu_get_ext_help(menu, &help); + + show_helptext(_(menu_get_prompt(menu)), str_get(&help)); + str_free(&help); +} + +static void conf_choice(struct menu *menu) +{ + const char *prompt = _(menu_get_prompt(menu)); + struct menu *child; + struct symbol *active; + + active = sym_get_choice_value(menu->sym); + while (1) { + int res; + int selected; + item_reset(); + + current_menu = menu; + for (child = menu->list; child; child = child->next) { + if (!menu_is_visible(child)) + continue; + if (child->sym) + item_make("%s", _(menu_get_prompt(child))); + else { + item_make("*** %s ***", _(menu_get_prompt(child))); + item_set_tag(':'); + } + item_set_data(child); + if (child->sym == active) + item_set_selected(1); + if (child->sym == sym_get_choice_value(menu->sym)) + item_set_tag('X'); + } + dialog_clear(); + res = dialog_checklist(prompt ? _(prompt) : _("Main Menu"), + _(radiolist_instructions), + MENUBOX_HEIGTH_MIN, + MENUBOX_WIDTH_MIN, + CHECKLIST_HEIGTH_MIN); + selected = item_activate_selected(); + switch (res) { + case 0: + if (selected) { + child = item_data(); + if (!child->sym) + break; + + sym_set_tristate_value(child->sym, yes); + } + return; + case 1: + if (selected) { + child = item_data(); + show_help(child); + active = child->sym; + } else + show_help(menu); + break; + case KEY_ESC: + return; + case -ERRDISPLAYTOOSMALL: + return; + } + } +} + +static void conf_string(struct menu *menu) +{ + const char *prompt = menu_get_prompt(menu); + + while (1) { + int res; + const char *heading; + + switch (sym_get_type(menu->sym)) { + case S_INT: + heading = _(inputbox_instructions_int); + break; + case S_HEX: + heading = _(inputbox_instructions_hex); + break; + case S_STRING: + heading = _(inputbox_instructions_string); + break; + default: + heading = _("Internal mconf error!"); + } + dialog_clear(); + res = dialog_inputbox(prompt ? _(prompt) : _("Main Menu"), + heading, 10, 75, + sym_get_string_value(menu->sym)); + switch (res) { + case 0: + if (sym_set_string_value(menu->sym, dialog_input_result)) + return; + show_textbox(NULL, _("You have made an invalid entry."), 5, 43); + break; + case 1: + show_help(menu); + break; + case KEY_ESC: + return; + } + } +} + +static void conf_load(void) +{ + + while (1) { + int res; + dialog_clear(); + res = dialog_inputbox(NULL, load_config_text, + 11, 55, filename); + switch(res) { + case 0: + if (!dialog_input_result[0]) + return; + if (!conf_read(dialog_input_result)) { + set_config_filename(dialog_input_result); + sym_set_change_count(1); + return; + } + show_textbox(NULL, _("File does not exist!"), 5, 38); + break; + case 1: + show_helptext(_("Load Alternate Configuration"), load_config_help); + break; + case KEY_ESC: + return; + } + } +} + +static void conf_save(void) +{ + while (1) { + int res; + dialog_clear(); + res = dialog_inputbox(NULL, save_config_text, + 11, 55, filename); + switch(res) { + case 0: + if (!dialog_input_result[0]) + return; + if (!conf_write(dialog_input_result)) { + set_config_filename(dialog_input_result); + return; + } + show_textbox(NULL, _("Can't create file! Probably a nonexistent directory."), 5, 60); + break; + case 1: + show_helptext(_("Save Alternate Configuration"), save_config_help); + break; + case KEY_ESC: + return; + } + } +} + +static int handle_exit(void) +{ + int res; + + save_and_exit = 1; + reset_subtitle(); + dialog_clear(); + if (conf_get_changed()) + res = dialog_yesno(NULL, + _("Do you wish to save your new configuration?\n" + "(Press to continue Buildroot configuration.)"), + 6, 60); + else + res = -1; + + end_dialog(saved_x, saved_y); + + switch (res) { + case 0: + if (conf_write(filename)) { + fprintf(stderr, _("\n\n" + "Error while writing of the configuration.\n" + "Your configuration changes were NOT saved." + "\n\n")); + return 1; + } + /* fall through */ + case -1: + if (!silent) + printf(_("\n\n" + "*** End of the configuration.\n" + "*** Execute 'make' to start the build or try 'make help'." + "\n\n")); + res = 0; + break; + default: + if (!silent) + fprintf(stderr, _("\n\n" + "Your configuration changes were NOT saved." + "\n\n")); + if (res != KEY_ESC) + res = 0; + } + + return res; +} + +static void sig_handler(int signo) +{ + exit(handle_exit()); +} + +int main(int ac, char **av) +{ + char *mode; + int res; + + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + signal(SIGINT, sig_handler); + + if (ac > 1 && strcmp(av[1], "-s") == 0) { + silent = 1; + /* Silence conf_read() until the real callback is set up */ + conf_set_message_callback(NULL); + av++; + } + conf_parse(av[1]); + conf_read(NULL); + + mode = getenv("MENUCONFIG_MODE"); + if (mode) { + if (!strcasecmp(mode, "single_menu")) + single_menu_mode = 1; + } + + if (init_dialog(NULL)) { + fprintf(stderr, N_("Your display is too small to run Menuconfig!\n")); + fprintf(stderr, N_("It must be at least 19 lines by 80 columns.\n")); + return 1; + } + + set_config_filename(conf_get_configname()); + conf_set_message_callback(conf_message_callback); + do { + conf(&rootmenu, NULL); + res = handle_exit(); + } while (res == KEY_ESC); + + return res; +} diff --git a/support/kconfig/menu.c b/support/kconfig/menu.c new file mode 100644 index 00000000..5c5c1374 --- /dev/null +++ b/support/kconfig/menu.c @@ -0,0 +1,873 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include + +#include "lkc.h" + +static const char nohelp_text[] = "There is no help available for this option."; + +struct menu rootmenu; +static struct menu **last_entry_ptr; + +struct file *file_list; +struct file *current_file; + +void menu_warn(struct menu *menu, const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + fprintf(stderr, "%s:%d:warning: ", menu->file->name, menu->lineno); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + va_end(ap); +} + +static void prop_warn(struct property *prop, const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + fprintf(stderr, "%s:%d:warning: ", prop->file->name, prop->lineno); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + va_end(ap); +} + +void _menu_init(void) +{ + current_entry = current_menu = &rootmenu; + last_entry_ptr = &rootmenu.list; +} + +void menu_add_entry(struct symbol *sym) +{ + struct menu *menu; + + menu = xmalloc(sizeof(*menu)); + memset(menu, 0, sizeof(*menu)); + menu->sym = sym; + menu->parent = current_menu; + menu->file = current_file; + menu->lineno = zconf_lineno(); + + *last_entry_ptr = menu; + last_entry_ptr = &menu->next; + current_entry = menu; + if (sym) + menu_add_symbol(P_SYMBOL, sym, NULL); +} + +struct menu *menu_add_menu(void) +{ + last_entry_ptr = ¤t_entry->list; + return current_menu = current_entry; +} + +void menu_end_menu(void) +{ + last_entry_ptr = ¤t_menu->next; + current_menu = current_menu->parent; +} + +/* + * Rewrites 'm' to 'm' && MODULES, so that it evaluates to 'n' when running + * without modules + */ +static struct expr *rewrite_m(struct expr *e) +{ + if (!e) + return e; + + switch (e->type) { + case E_NOT: + e->left.expr = rewrite_m(e->left.expr); + break; + case E_OR: + case E_AND: + e->left.expr = rewrite_m(e->left.expr); + e->right.expr = rewrite_m(e->right.expr); + break; + case E_SYMBOL: + /* change 'm' into 'm' && MODULES */ + if (e->left.sym == &symbol_mod) + return expr_alloc_and(e, expr_alloc_symbol(modules_sym)); + break; + default: + break; + } + return e; +} + +void menu_add_dep(struct expr *dep) +{ + current_entry->dep = expr_alloc_and(current_entry->dep, dep); +} + +void menu_set_type(int type) +{ + struct symbol *sym = current_entry->sym; + + if (sym->type == type) + return; + if (sym->type == S_UNKNOWN) { + sym->type = type; + return; + } + menu_warn(current_entry, + "ignoring type redefinition of '%s' from '%s' to '%s'", + sym->name ? sym->name : "", + sym_type_name(sym->type), sym_type_name(type)); +} + +static struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep) +{ + struct property *prop = prop_alloc(type, current_entry->sym); + + prop->menu = current_entry; + prop->expr = expr; + prop->visible.expr = dep; + + if (prompt) { + if (isspace(*prompt)) { + prop_warn(prop, "leading whitespace ignored"); + while (isspace(*prompt)) + prompt++; + } + if (current_entry->prompt && current_entry != &rootmenu) + prop_warn(prop, "prompt redefined"); + + /* Apply all upper menus' visibilities to actual prompts. */ + if(type == P_PROMPT) { + struct menu *menu = current_entry; + + while ((menu = menu->parent) != NULL) { + struct expr *dup_expr; + + if (!menu->visibility) + continue; + /* + * Do not add a reference to the + * menu's visibility expression but + * use a copy of it. Otherwise the + * expression reduction functions + * will modify expressions that have + * multiple references which can + * cause unwanted side effects. + */ + dup_expr = expr_copy(menu->visibility); + + prop->visible.expr + = expr_alloc_and(prop->visible.expr, + dup_expr); + } + } + + current_entry->prompt = prop; + } + prop->text = prompt; + + return prop; +} + +struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep) +{ + return menu_add_prop(type, prompt, NULL, dep); +} + +void menu_add_visibility(struct expr *expr) +{ + current_entry->visibility = expr_alloc_and(current_entry->visibility, + expr); +} + +void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep) +{ + menu_add_prop(type, NULL, expr, dep); +} + +void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep) +{ + menu_add_prop(type, NULL, expr_alloc_symbol(sym), dep); +} + +void menu_add_option(int token, char *arg) +{ + switch (token) { + case T_OPT_MODULES: + if (modules_sym) + zconf_error("symbol '%s' redefines option 'modules'" + " already defined by symbol '%s'", + current_entry->sym->name, + modules_sym->name + ); + modules_sym = current_entry->sym; + break; + case T_OPT_DEFCONFIG_LIST: + if (!sym_defconfig_list) + sym_defconfig_list = current_entry->sym; + else if (sym_defconfig_list != current_entry->sym) + zconf_error("trying to redefine defconfig symbol"); + sym_defconfig_list->flags |= SYMBOL_AUTO; + break; + case T_OPT_ENV: + prop_add_env(arg); + break; + case T_OPT_ALLNOCONFIG_Y: + current_entry->sym->flags |= SYMBOL_ALLNOCONFIG_Y; + break; + } +} + +static int menu_validate_number(struct symbol *sym, struct symbol *sym2) +{ + return sym2->type == S_INT || sym2->type == S_HEX || + (sym2->type == S_UNKNOWN && sym_string_valid(sym, sym2->name)); +} + +static void sym_check_prop(struct symbol *sym) +{ + struct property *prop; + struct symbol *sym2; + char *use; + + for (prop = sym->prop; prop; prop = prop->next) { + switch (prop->type) { + case P_DEFAULT: + if ((sym->type == S_STRING || sym->type == S_INT || sym->type == S_HEX) && + prop->expr->type != E_SYMBOL) + prop_warn(prop, + "default for config symbol '%s'" + " must be a single symbol", sym->name); + if (prop->expr->type != E_SYMBOL) + break; + sym2 = prop_get_symbol(prop); + if (sym->type == S_HEX || sym->type == S_INT) { + if (!menu_validate_number(sym, sym2)) + prop_warn(prop, + "'%s': number is invalid", + sym->name); + } + if (sym_is_choice(sym)) { + struct property *choice_prop = + sym_get_choice_prop(sym2); + + if (!choice_prop || + prop_get_symbol(choice_prop) != sym) + prop_warn(prop, + "choice default symbol '%s' is not contained in the choice", + sym2->name); + } + break; + case P_SELECT: + case P_IMPLY: + use = prop->type == P_SELECT ? "select" : "imply"; + sym2 = prop_get_symbol(prop); + if (sym->type != S_BOOLEAN && sym->type != S_TRISTATE) + prop_warn(prop, + "config symbol '%s' uses %s, but is " + "not bool or tristate", sym->name, use); + else if (sym2->type != S_UNKNOWN && + sym2->type != S_BOOLEAN && + sym2->type != S_TRISTATE) + prop_warn(prop, + "'%s' has wrong type. '%s' only " + "accept arguments of bool and " + "tristate type", sym2->name, use); + break; + case P_RANGE: + if (sym->type != S_INT && sym->type != S_HEX) + prop_warn(prop, "range is only allowed " + "for int or hex symbols"); + if (!menu_validate_number(sym, prop->expr->left.sym) || + !menu_validate_number(sym, prop->expr->right.sym)) + prop_warn(prop, "range is invalid"); + break; + default: + ; + } + } +} + +void menu_finalize(struct menu *parent) +{ + struct menu *menu, *last_menu; + struct symbol *sym; + struct property *prop; + struct expr *parentdep, *basedep, *dep, *dep2, **ep; + + sym = parent->sym; + if (parent->list) { + /* + * This menu node has children. We (recursively) process them + * and propagate parent dependencies before moving on. + */ + + if (sym && sym_is_choice(sym)) { + if (sym->type == S_UNKNOWN) { + /* find the first choice value to find out choice type */ + current_entry = parent; + for (menu = parent->list; menu; menu = menu->next) { + if (menu->sym && menu->sym->type != S_UNKNOWN) { + menu_set_type(menu->sym->type); + break; + } + } + } + /* set the type of the remaining choice values */ + for (menu = parent->list; menu; menu = menu->next) { + current_entry = menu; + if (menu->sym && menu->sym->type == S_UNKNOWN) + menu_set_type(sym->type); + } + + /* + * Use the choice itself as the parent dependency of + * the contained items. This turns the mode of the + * choice into an upper bound on the visibility of the + * choice value symbols. + */ + parentdep = expr_alloc_symbol(sym); + } else if (parent->prompt) + /* Menu node for 'menu' */ + parentdep = parent->prompt->visible.expr; + else + /* Menu node for 'if' */ + parentdep = parent->dep; + + /* For each child menu node... */ + for (menu = parent->list; menu; menu = menu->next) { + /* + * Propagate parent dependencies to the child menu + * node, also rewriting and simplifying expressions + */ + basedep = rewrite_m(menu->dep); + basedep = expr_transform(basedep); + basedep = expr_alloc_and(expr_copy(parentdep), basedep); + basedep = expr_eliminate_dups(basedep); + menu->dep = basedep; + + if (menu->sym) + /* + * Note: For symbols, all prompts are included + * too in the symbol's own property list + */ + prop = menu->sym->prop; + else + /* + * For non-symbol menu nodes, we just need to + * handle the prompt + */ + prop = menu->prompt; + + /* For each property... */ + for (; prop; prop = prop->next) { + if (prop->menu != menu) + /* + * Two possibilities: + * + * 1. The property lacks dependencies + * and so isn't location-specific, + * e.g. an 'option' + * + * 2. The property belongs to a symbol + * defined in multiple locations and + * is from some other location. It + * will be handled there in that + * case. + * + * Skip the property. + */ + continue; + + /* + * Propagate parent dependencies to the + * property's condition, rewriting and + * simplifying expressions at the same time + */ + dep = rewrite_m(prop->visible.expr); + dep = expr_transform(dep); + dep = expr_alloc_and(expr_copy(basedep), dep); + dep = expr_eliminate_dups(dep); + if (menu->sym && menu->sym->type != S_TRISTATE) + dep = expr_trans_bool(dep); + prop->visible.expr = dep; + + /* + * Handle selects and implies, which modify the + * dependencies of the selected/implied symbol + */ + if (prop->type == P_SELECT) { + struct symbol *es = prop_get_symbol(prop); + es->rev_dep.expr = expr_alloc_or(es->rev_dep.expr, + expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep))); + } else if (prop->type == P_IMPLY) { + struct symbol *es = prop_get_symbol(prop); + es->implied.expr = expr_alloc_or(es->implied.expr, + expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep))); + } + } + } + + if (sym && sym_is_choice(sym)) + expr_free(parentdep); + + /* + * Recursively process children in the same fashion before + * moving on + */ + for (menu = parent->list; menu; menu = menu->next) + menu_finalize(menu); + } else if (sym) { + /* + * Automatic submenu creation. If sym is a symbol and A, B, C, + * ... are consecutive items (symbols, menus, ifs, etc.) that + * all depend on sym, then the following menu structure is + * created: + * + * sym + * +-A + * +-B + * +-C + * ... + * + * This also works recursively, giving the following structure + * if A is a symbol and B depends on A: + * + * sym + * +-A + * | +-B + * +-C + * ... + */ + + basedep = parent->prompt ? parent->prompt->visible.expr : NULL; + basedep = expr_trans_compare(basedep, E_UNEQUAL, &symbol_no); + basedep = expr_eliminate_dups(expr_transform(basedep)); + + /* Examine consecutive elements after sym */ + last_menu = NULL; + for (menu = parent->next; menu; menu = menu->next) { + dep = menu->prompt ? menu->prompt->visible.expr : menu->dep; + if (!expr_contains_symbol(dep, sym)) + /* No dependency, quit */ + break; + if (expr_depends_symbol(dep, sym)) + /* Absolute dependency, put in submenu */ + goto next; + + /* + * Also consider it a dependency on sym if our + * dependencies contain sym and are a "superset" of + * sym's dependencies, e.g. '(sym || Q) && R' when sym + * depends on R. + * + * Note that 'R' might be from an enclosing menu or if, + * making this a more common case than it might seem. + */ + dep = expr_trans_compare(dep, E_UNEQUAL, &symbol_no); + dep = expr_eliminate_dups(expr_transform(dep)); + dep2 = expr_copy(basedep); + expr_eliminate_eq(&dep, &dep2); + expr_free(dep); + if (!expr_is_yes(dep2)) { + /* Not superset, quit */ + expr_free(dep2); + break; + } + /* Superset, put in submenu */ + expr_free(dep2); + next: + menu_finalize(menu); + menu->parent = parent; + last_menu = menu; + } + expr_free(basedep); + if (last_menu) { + parent->list = parent->next; + parent->next = last_menu->next; + last_menu->next = NULL; + } + + sym->dir_dep.expr = expr_alloc_or(sym->dir_dep.expr, parent->dep); + } + for (menu = parent->list; menu; menu = menu->next) { + if (sym && sym_is_choice(sym) && + menu->sym && !sym_is_choice_value(menu->sym)) { + current_entry = menu; + menu->sym->flags |= SYMBOL_CHOICEVAL; + if (!menu->prompt) + menu_warn(menu, "choice value must have a prompt"); + for (prop = menu->sym->prop; prop; prop = prop->next) { + if (prop->type == P_DEFAULT) + prop_warn(prop, "defaults for choice " + "values not supported"); + if (prop->menu == menu) + continue; + if (prop->type == P_PROMPT && + prop->menu->parent->sym != sym) + prop_warn(prop, "choice value used outside its choice group"); + } + /* Non-tristate choice values of tristate choices must + * depend on the choice being set to Y. The choice + * values' dependencies were propagated to their + * properties above, so the change here must be re- + * propagated. + */ + if (sym->type == S_TRISTATE && menu->sym->type != S_TRISTATE) { + basedep = expr_alloc_comp(E_EQUAL, sym, &symbol_yes); + menu->dep = expr_alloc_and(basedep, menu->dep); + for (prop = menu->sym->prop; prop; prop = prop->next) { + if (prop->menu != menu) + continue; + prop->visible.expr = expr_alloc_and(expr_copy(basedep), + prop->visible.expr); + } + } + menu_add_symbol(P_CHOICE, sym, NULL); + prop = sym_get_choice_prop(sym); + for (ep = &prop->expr; *ep; ep = &(*ep)->left.expr) + ; + *ep = expr_alloc_one(E_LIST, NULL); + (*ep)->right.sym = menu->sym; + } + + /* + * This code serves two purposes: + * + * (1) Flattening 'if' blocks, which do not specify a submenu + * and only add dependencies. + * + * (Automatic submenu creation might still create a submenu + * from an 'if' before this code runs.) + * + * (2) "Undoing" any automatic submenus created earlier below + * promptless symbols. + * + * Before: + * + * A + * if ... (or promptless symbol) + * +-B + * +-C + * D + * + * After: + * + * A + * if ... (or promptless symbol) + * B + * C + * D + */ + if (menu->list && (!menu->prompt || !menu->prompt->text)) { + for (last_menu = menu->list; ; last_menu = last_menu->next) { + last_menu->parent = parent; + if (!last_menu->next) + break; + } + last_menu->next = menu->next; + menu->next = menu->list; + menu->list = NULL; + } + } + + if (sym && !(sym->flags & SYMBOL_WARNED)) { + if (sym->type == S_UNKNOWN) + menu_warn(parent, "config symbol defined without type"); + + if (sym_is_choice(sym) && !parent->prompt) + menu_warn(parent, "choice must have a prompt"); + + /* Check properties connected to this symbol */ + sym_check_prop(sym); + sym->flags |= SYMBOL_WARNED; + } + + /* + * For non-optional choices, add a reverse dependency (corresponding to + * a select) of ' && m'. This prevents the user from + * setting the choice mode to 'n' when the choice is visible. + * + * This would also work for non-choice symbols, but only non-optional + * choices clear SYMBOL_OPTIONAL as of writing. Choices are implemented + * as a type of symbol. + */ + if (sym && !sym_is_optional(sym) && parent->prompt) { + sym->rev_dep.expr = expr_alloc_or(sym->rev_dep.expr, + expr_alloc_and(parent->prompt->visible.expr, + expr_alloc_symbol(&symbol_mod))); + } +} + +bool menu_has_prompt(struct menu *menu) +{ + if (!menu->prompt) + return false; + return true; +} + +/* + * Determine if a menu is empty. + * A menu is considered empty if it contains no or only + * invisible entries. + */ +bool menu_is_empty(struct menu *menu) +{ + struct menu *child; + + for (child = menu->list; child; child = child->next) { + if (menu_is_visible(child)) + return(false); + } + return(true); +} + +bool menu_is_visible(struct menu *menu) +{ + struct menu *child; + struct symbol *sym; + tristate visible; + + if (!menu->prompt) + return false; + + if (menu->visibility) { + if (expr_calc_value(menu->visibility) == no) + return false; + } + + sym = menu->sym; + if (sym) { + sym_calc_value(sym); + visible = menu->prompt->visible.tri; + } else + visible = menu->prompt->visible.tri = expr_calc_value(menu->prompt->visible.expr); + + if (visible != no) + return true; + + if (!sym || sym_get_tristate_value(menu->sym) == no) + return false; + + for (child = menu->list; child; child = child->next) { + if (menu_is_visible(child)) { + if (sym) + sym->flags |= SYMBOL_DEF_USER; + return true; + } + } + + return false; +} + +const char *menu_get_prompt(struct menu *menu) +{ + if (menu->prompt) + return menu->prompt->text; + else if (menu->sym) + return menu->sym->name; + return NULL; +} + +struct menu *menu_get_root_menu(struct menu *menu) +{ + return &rootmenu; +} + +struct menu *menu_get_parent_menu(struct menu *menu) +{ + enum prop_type type; + + for (; menu != &rootmenu; menu = menu->parent) { + type = menu->prompt ? menu->prompt->type : 0; + if (type == P_MENU) + break; + } + return menu; +} + +bool menu_has_help(struct menu *menu) +{ + return menu->help != NULL; +} + +const char *menu_get_help(struct menu *menu) +{ + if (menu->help) + return menu->help; + else + return ""; +} + +static void get_prompt_str(struct gstr *r, struct property *prop, + struct list_head *head) +{ + int i, j; + struct menu *submenu[8], *menu, *location = NULL; + struct jump_key *jump = NULL; + + str_printf(r, _("Prompt: %s\n"), _(prop->text)); + menu = prop->menu->parent; + for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) { + bool accessible = menu_is_visible(menu); + + submenu[i++] = menu; + if (location == NULL && accessible) + location = menu; + } + if (head && location) { + jump = xmalloc(sizeof(struct jump_key)); + + if (menu_is_visible(prop->menu)) { + /* + * There is not enough room to put the hint at the + * beginning of the "Prompt" line. Put the hint on the + * last "Location" line even when it would belong on + * the former. + */ + jump->target = prop->menu; + } else + jump->target = location; + + if (list_empty(head)) + jump->index = 0; + else + jump->index = list_entry(head->prev, struct jump_key, + entries)->index + 1; + + list_add_tail(&jump->entries, head); + } + + if (i > 0) { + str_printf(r, _(" Location:\n")); + for (j = 4; --i >= 0; j += 2) { + menu = submenu[i]; + if (jump && menu == location) + jump->offset = strlen(r->s); + str_printf(r, "%*c-> %s", j, ' ', + _(menu_get_prompt(menu))); + if (menu->sym) { + str_printf(r, " (%s [=%s])", menu->sym->name ? + menu->sym->name : _(""), + sym_get_string_value(menu->sym)); + } + str_append(r, "\n"); + } + } +} + +/* + * get property of type P_SYMBOL + */ +static struct property *get_symbol_prop(struct symbol *sym) +{ + struct property *prop = NULL; + + for_all_properties(sym, prop, P_SYMBOL) + break; + return prop; +} + +static void get_symbol_props_str(struct gstr *r, struct symbol *sym, + enum prop_type tok, const char *prefix) +{ + bool hit = false; + struct property *prop; + + for_all_properties(sym, prop, tok) { + if (!hit) { + str_append(r, prefix); + hit = true; + } else + str_printf(r, " && "); + expr_gstr_print(prop->expr, r); + } + if (hit) + str_append(r, "\n"); +} + +/* + * head is optional and may be NULL + */ +static void get_symbol_str(struct gstr *r, struct symbol *sym, + struct list_head *head) +{ + struct property *prop; + + if (sym && sym->name) { + str_printf(r, "Symbol: %s [=%s]\n", sym->name, + sym_get_string_value(sym)); + str_printf(r, "Type : %s\n", sym_type_name(sym->type)); + if (sym->type == S_INT || sym->type == S_HEX) { + prop = sym_get_range_prop(sym); + if (prop) { + str_printf(r, "Range : "); + expr_gstr_print(prop->expr, r); + str_append(r, "\n"); + } + } + } + for_all_prompts(sym, prop) + get_prompt_str(r, prop, head); + + prop = get_symbol_prop(sym); + if (prop) { + str_printf(r, _(" Defined at %s:%d\n"), prop->menu->file->name, + prop->menu->lineno); + if (!expr_is_yes(prop->visible.expr)) { + str_append(r, _(" Depends on: ")); + expr_gstr_print(prop->visible.expr, r); + str_append(r, "\n"); + } + } + + get_symbol_props_str(r, sym, P_SELECT, _(" Selects: ")); + if (sym->rev_dep.expr) { + expr_gstr_print_revdep(sym->rev_dep.expr, r, yes, " Selected by [y]:\n"); + expr_gstr_print_revdep(sym->rev_dep.expr, r, mod, " Selected by [m]:\n"); + expr_gstr_print_revdep(sym->rev_dep.expr, r, no, " Selected by [n]:\n"); + } + + get_symbol_props_str(r, sym, P_IMPLY, _(" Implies: ")); + if (sym->implied.expr) { + expr_gstr_print_revdep(sym->implied.expr, r, yes, " Implied by [y]:\n"); + expr_gstr_print_revdep(sym->implied.expr, r, mod, " Implied by [m]:\n"); + expr_gstr_print_revdep(sym->implied.expr, r, no, " Implied by [n]:\n"); + } + + str_append(r, "\n\n"); +} + +struct gstr get_relations_str(struct symbol **sym_arr, struct list_head *head) +{ + struct symbol *sym; + struct gstr res = str_new(); + int i; + + for (i = 0; sym_arr && (sym = sym_arr[i]); i++) + get_symbol_str(&res, sym, head); + if (!i) + str_append(&res, _("No matches found.\n")); + return res; +} + + +void menu_get_ext_help(struct menu *menu, struct gstr *help) +{ + struct symbol *sym = menu->sym; + const char *help_text = nohelp_text; + + if (menu_has_help(menu)) { + if (sym->name) + str_printf(help, "%s%s:\n\n", CONFIG_, sym->name); + help_text = menu_get_help(menu); + } + str_printf(help, "%s\n", _(help_text)); + if (sym) + get_symbol_str(help, sym, NULL); +} diff --git a/support/kconfig/merge_config.sh b/support/kconfig/merge_config.sh new file mode 100755 index 00000000..14917806 --- /dev/null +++ b/support/kconfig/merge_config.sh @@ -0,0 +1,182 @@ +#!/bin/sh +# merge_config.sh - Takes a list of config fragment values, and merges +# them one by one. Provides warnings on overridden values, and specified +# values that did not make it to the resulting .config file (due to missed +# dependencies or config symbol removal). +# +# Portions reused from kconf_check and generate_cfg: +# http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/kconf_check +# http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/generate_cfg +# +# Copyright (c) 2009-2010 Wind River Systems, Inc. +# Copyright 2011 Linaro +# +# This program 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 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. + +clean_up() { + rm -f $TMP_FILE + exit +} +trap clean_up HUP INT TERM + +usage() { + echo "Usage: $0 [OPTIONS] [CONFIG [...]]" + echo " -h display this help text" + echo " -m only merge the fragments, do not execute the make command" + echo " -n use allnoconfig instead of alldefconfig" + echo " -r list redundant entries when merging fragments" + echo " -O dir to put generated output files. Consider setting \$KCONFIG_CONFIG instead." + echo " -e colon-separated list of br2-external trees to use (optional)" + echo + echo "Used prefix: '$CONFIG_PREFIX'. You can redefine it with \$CONFIG_ + environment variable." +} + +RUNMAKE=true +ALLTARGET=alldefconfig +WARNREDUN=false +OUTPUT=. +CONFIG_PREFIX=${CONFIG_-CONFIG_} + +while true; do + case $1 in + "-n") + ALLTARGET=allnoconfig + shift + continue + ;; + "-m") + RUNMAKE=false + shift + continue + ;; + "-h") + usage + exit + ;; + "-r") + WARNREDUN=true + shift + continue + ;; + "-O") + if [ -d $2 ];then + OUTPUT=$(echo $2 | sed 's/\/*$//') + else + echo "output directory $2 does not exist" 1>&2 + exit 1 + fi + shift 2 + continue + ;; + "-e") + EXTERNAL_ARG="BR2_EXTERNAL=$2" + shift 2 + continue + ;; + *) + break + ;; + esac +done + +if [ "$#" -lt 1 ] ; then + usage + exit +fi + +if [ -z "$KCONFIG_CONFIG" ]; then + if [ "$OUTPUT" != . ]; then + KCONFIG_CONFIG=$(readlink -m -- "$OUTPUT/.config") + else + KCONFIG_CONFIG=.config + fi +fi + +INITFILE=$1 +shift; + +if [ ! -r "$INITFILE" ]; then + echo "The base file '$INITFILE' does not exist. Exit." >&2 + exit 1 +fi + +MERGE_LIST=$* +SED_CONFIG_EXP1="s/^\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)=.*/\1/p" +SED_CONFIG_EXP2="s/^# \(${CONFIG_PREFIX}[a-zA-Z0-9_]*\) is not set$/\1/p" + +TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX) + +echo "Using $INITFILE as base" +cat $INITFILE > $TMP_FILE + +# Merge files, printing warnings on overridden values +for MERGE_FILE in $MERGE_LIST ; do + echo "Merging $MERGE_FILE" + if [ ! -r "$MERGE_FILE" ]; then + echo "The merge file '$MERGE_FILE' does not exist. Exit." >&2 + exit 1 + fi + CFG_LIST=$(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $MERGE_FILE) + + for CFG in $CFG_LIST ; do + grep -q -w $CFG $TMP_FILE || continue + PREV_VAL=$(grep -w $CFG $TMP_FILE) + NEW_VAL=$(grep -w $CFG $MERGE_FILE) + if [ "x$PREV_VAL" != "x$NEW_VAL" ] ; then + echo Value of $CFG is redefined by fragment $MERGE_FILE: + echo Previous value: $PREV_VAL + echo New value: $NEW_VAL + echo + elif [ "$WARNREDUN" = "true" ]; then + echo Value of $CFG is redundant by fragment $MERGE_FILE: + fi + sed -i "/$CFG[ =]/d" $TMP_FILE + done + cat $MERGE_FILE >> $TMP_FILE +done + +if [ "$RUNMAKE" = "false" ]; then + cp -T -- "$TMP_FILE" "$KCONFIG_CONFIG" + echo "#" + echo "# merged configuration written to $KCONFIG_CONFIG (needs make)" + echo "#" + clean_up + exit +fi + +# If we have an output dir, setup the O= argument, otherwise leave +# it blank, since O=. will create an unnecessary ./source softlink +OUTPUT_ARG="" +if [ "$OUTPUT" != "." ] ; then + OUTPUT_ARG="O=$OUTPUT" +fi + + +# Use the merged file as the starting point for: +# alldefconfig: Fills in any missing symbols with Kconfig default +# allnoconfig: Fills in any missing symbols with # CONFIG_* is not set +make KCONFIG_ALLCONFIG=$TMP_FILE $EXTERNAL_ARG $OUTPUT_ARG $ALLTARGET + + +# Check all specified config values took (might have missed-dependency issues) +for CFG in $(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $TMP_FILE); do + + REQUESTED_VAL=$(grep -w -e "$CFG" $TMP_FILE) + ACTUAL_VAL=$(grep -w -e "$CFG" "$KCONFIG_CONFIG") + if [ "x$REQUESTED_VAL" != "x$ACTUAL_VAL" ] ; then + echo "Value requested for $CFG not in final .config" + echo "Requested value: $REQUESTED_VAL" + echo "Actual value: $ACTUAL_VAL" + echo "" + fi +done + +clean_up diff --git a/support/kconfig/nconf.c b/support/kconfig/nconf.c new file mode 100644 index 00000000..00311477 --- /dev/null +++ b/support/kconfig/nconf.c @@ -0,0 +1,1563 @@ +/* + * Copyright (C) 2008 Nir Tzachar +#include + +#include "lkc.h" +#include "nconf.h" +#include + +static const char nconf_global_help[] = N_( +"Help windows\n" +"------------\n" +"o Global help: Unless in a data entry window, pressing will give \n" +" you the global help window, which you are just reading.\n" +"\n" +"o A short version of the global help is available by pressing .\n" +"\n" +"o Local help: To get help related to the current menu entry, use any\n" +" of , or if in a data entry window then press .\n" +"\n" +"\n" +"Menu entries\n" +"------------\n" +"This interface lets you select features and parameters for the kernel\n" +"build. Kernel features can either be built-in, modularized, or removed.\n" +"Parameters must be entered as text or decimal or hexadecimal numbers.\n" +"\n" +"Menu entries beginning with following braces represent features that\n" +" [ ] can be built in or removed\n" +" < > can be built in, modularized or removed\n" +" { } can be built in or modularized, are selected by another feature\n" +" - - are selected by another feature\n" +" XXX cannot be selected. Symbol Info tells you why.\n" +"*, M or whitespace inside braces means to build in, build as a module\n" +"or to exclude the feature respectively.\n" +"\n" +"To change any of these features, highlight it with the movement keys\n" +"listed below and press to build it in, to make it a module or\n" +" to remove it. You may press the key to cycle through the\n" +"available options.\n" +"\n" +"A trailing \"--->\" designates a submenu, a trailing \"----\" an\n" +"empty submenu.\n" +"\n" +"Menu navigation keys\n" +"----------------------------------------------------------------------\n" +"Linewise up \n" +"Linewise down \n" +"Pagewise up \n" +"Pagewise down \n" +"First entry \n" +"Last entry \n" +"Enter a submenu \n" +"Go back to parent menu \n" +"Close a help window \n" +"Close entry window, apply \n" +"Close entry window, forget \n" +"Start incremental, case-insensitive search for STRING in menu entries,\n" +" no regex support, STRING is displayed in upper left corner\n" +" STRING\n" +" Remove last character \n" +" Jump to next hit \n" +" Jump to previous hit \n" +"Exit menu search mode \n" +"Search for configuration variables with or without leading CONFIG_\n" +" RegExpr\n" +"Verbose search help \n" +"----------------------------------------------------------------------\n" +"\n" +"Unless in a data entry window, key <1> may be used instead of ,\n" +"<2> instead of , etc.\n" +"\n" +"\n" +"Radiolist (Choice list)\n" +"-----------------------\n" +"Use the movement keys listed above to select the option you wish to set\n" +"and press .\n" +"\n" +"\n" +"Data entry\n" +"----------\n" +"Enter the requested information and press . Hexadecimal values\n" +"may be entered without the \"0x\" prefix.\n" +"\n" +"\n" +"Text Box (Help Window)\n" +"----------------------\n" +"Use movement keys as listed in table above.\n" +"\n" +"Press any of to exit.\n" +"\n" +"\n" +"Alternate configuration files\n" +"-----------------------------\n" +"nconfig supports switching between different configurations.\n" +"Press to save your current configuration. Press and enter\n" +"a file name to load a previously saved configuration.\n" +"\n" +"\n" +"Terminal configuration\n" +"----------------------\n" +"If you use nconfig in a xterm window, make sure your TERM environment\n" +"variable specifies a terminal configuration which supports at least\n" +"16 colors. Otherwise nconfig will look rather bad.\n" +"\n" +"If the \"stty size\" command reports the current terminalsize correctly,\n" +"nconfig will adapt to sizes larger than the traditional 80x25 \"standard\"\n" +"and display longer menus properly.\n" +"\n" +"\n" +"Single menu mode\n" +"----------------\n" +"If you prefer to have all of the menu entries listed in a single menu,\n" +"rather than the default multimenu hierarchy, run nconfig with\n" +"NCONFIG_MODE environment variable set to single_menu. Example:\n" +"\n" +"make NCONFIG_MODE=single_menu nconfig\n" +"\n" +" will then unfold the appropriate category, or fold it if it\n" +"is already unfolded. Folded menu entries will be designated by a\n" +"leading \"++>\" and unfolded entries by a leading \"-->\".\n" +"\n" +"Note that this mode can eventually be a little more CPU expensive than\n" +"the default mode, especially with a larger number of unfolded submenus.\n" +"\n"), +menu_no_f_instructions[] = N_( +"Legend: [*] built-in [ ] excluded module < > module capable.\n" +"Submenus are designated by a trailing \"--->\", empty ones by \"----\".\n" +"\n" +"Use the following keys to navigate the menus:\n" +"Move up or down with and .\n" +"Enter a submenu with or .\n" +"Exit a submenu to its parent menu with or .\n" +"Pressing includes, excludes, modularizes features.\n" +"Pressing cycles through the available options.\n" +"To search for menu entries press .\n" +" always leaves the current window.\n" +"\n" +"You do not have function keys support.\n" +"Press <1> instead of , <2> instead of , etc.\n" +"For verbose global help use key <1>.\n" +"For help related to the current menu entry press or .\n"), +menu_instructions[] = N_( +"Legend: [*] built-in [ ] excluded module < > module capable.\n" +"Submenus are designated by a trailing \"--->\", empty ones by \"----\".\n" +"\n" +"Use the following keys to navigate the menus:\n" +"Move up or down with or .\n" +"Enter a submenu with or .\n" +"Exit a submenu to its parent menu with or .\n" +"Pressing includes, excludes, modularizes features.\n" +"Pressing cycles through the available options.\n" +"To search for menu entries press .\n" +" always leaves the current window.\n" +"\n" +"Pressing <1> may be used instead of , <2> instead of , etc.\n" +"For verbose global help press .\n" +"For help related to the current menu entry press or .\n"), +radiolist_instructions[] = N_( +"Press , , or to navigate a radiolist, select\n" +"with .\n" +"For help related to the current entry press or .\n" +"For global help press .\n"), +inputbox_instructions_int[] = N_( +"Please enter a decimal value.\n" +"Fractions will not be accepted.\n" +"Press to apply, to cancel."), +inputbox_instructions_hex[] = N_( +"Please enter a hexadecimal value.\n" +"Press to apply, to cancel."), +inputbox_instructions_string[] = N_( +"Please enter a string value.\n" +"Press to apply, to cancel."), +setmod_text[] = N_( +"This feature depends on another feature which has been configured as a\n" +"module. As a result, the current feature will be built as a module too."), +load_config_text[] = N_( +"Enter the name of the configuration file you wish to load.\n" +"Accept the name shown to restore the configuration you last\n" +"retrieved. Leave empty to abort."), +load_config_help[] = N_( +"For various reasons, one may wish to keep several different\n" +"configurations available on a single machine.\n" +"\n" +"If you have saved a previous configuration in a file other than the\n" +"default one, entering its name here will allow you to load and modify\n" +"that configuration.\n" +"\n" +"Leave empty to abort.\n"), +save_config_text[] = N_( +"Enter a filename to which this configuration should be saved\n" +"as an alternate. Leave empty to abort."), +save_config_help[] = N_( +"For various reasons, one may wish to keep several different\n" +"configurations available on a single machine.\n" +"\n" +"Entering a file name here will allow you to later retrieve, modify\n" +"and use the current configuration as an alternate to whatever\n" +"configuration options you have selected at that time.\n" +"\n" +"Leave empty to abort.\n"), +search_help[] = N_( +"Search for symbols (configuration variable names CONFIG_*) and display\n" +"their relations. Regular expressions are supported.\n" +"Example: Search for \"^FOO\".\n" +"Result:\n" +"-----------------------------------------------------------------\n" +"Symbol: FOO [ = m]\n" +"Prompt: Foo bus is used to drive the bar HW\n" +"Defined at drivers/pci/Kconfig:47\n" +"Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n" +"Location:\n" +" -> Bus options (PCI, PCMCIA, EISA, ISA)\n" +" -> PCI support (PCI [ = y])\n" +" -> PCI access mode ( [ = y])\n" +"Selects: LIBCRC32\n" +"Selected by: BAR\n" +"-----------------------------------------------------------------\n" +"o The line 'Prompt:' shows the text displayed for this symbol in\n" +" the menu hierarchy.\n" +"o The 'Defined at' line tells at what file / line number the symbol is\n" +" defined.\n" +"o The 'Depends on:' line lists symbols that need to be defined for\n" +" this symbol to be visible and selectable in the menu.\n" +"o The 'Location:' lines tell, where in the menu structure this symbol\n" +" is located. A location followed by a [ = y] indicates that this is\n" +" a selectable menu item, and the current value is displayed inside\n" +" brackets.\n" +"o The 'Selects:' line tells, what symbol will be automatically selected\n" +" if this symbol is selected (y or m).\n" +"o The 'Selected by' line tells what symbol has selected this symbol.\n" +"\n" +"Only relevant lines are shown.\n" +"\n\n" +"Search examples:\n" +"USB => find all symbols containing USB\n" +"^USB => find all symbols starting with USB\n" +"USB$ => find all symbols ending with USB\n" +"\n"); + +struct mitem { + char str[256]; + char tag; + void *usrptr; + int is_visible; +}; + +#define MAX_MENU_ITEMS 4096 +static int show_all_items; +static int indent; +static struct menu *current_menu; +static int child_count; +static int single_menu_mode; +/* the window in which all information appears */ +static WINDOW *main_window; +/* the largest size of the menu window */ +static int mwin_max_lines; +static int mwin_max_cols; +/* the window in which we show option buttons */ +static MENU *curses_menu; +static ITEM *curses_menu_items[MAX_MENU_ITEMS]; +static struct mitem k_menu_items[MAX_MENU_ITEMS]; +static int items_num; +static int global_exit; +/* the currently selected button */ +static const char *current_instructions = menu_instructions; + +static char *dialog_input_result; +static int dialog_input_result_len; + +static void conf(struct menu *menu); +static void conf_choice(struct menu *menu); +static void conf_string(struct menu *menu); +static void conf_load(void); +static void conf_save(void); +static void show_help(struct menu *menu); +static int do_exit(void); +static void setup_windows(void); +static void search_conf(void); + +typedef void (*function_key_handler_t)(int *key, struct menu *menu); +static void handle_f1(int *key, struct menu *current_item); +static void handle_f2(int *key, struct menu *current_item); +static void handle_f3(int *key, struct menu *current_item); +static void handle_f4(int *key, struct menu *current_item); +static void handle_f5(int *key, struct menu *current_item); +static void handle_f6(int *key, struct menu *current_item); +static void handle_f7(int *key, struct menu *current_item); +static void handle_f8(int *key, struct menu *current_item); +static void handle_f9(int *key, struct menu *current_item); + +struct function_keys { + const char *key_str; + const char *func; + function_key key; + function_key_handler_t handler; +}; + +static const int function_keys_num = 9; +static struct function_keys function_keys[] = { + { + .key_str = "F1", + .func = "Help", + .key = F_HELP, + .handler = handle_f1, + }, + { + .key_str = "F2", + .func = "SymInfo", + .key = F_SYMBOL, + .handler = handle_f2, + }, + { + .key_str = "F3", + .func = "Help 2", + .key = F_INSTS, + .handler = handle_f3, + }, + { + .key_str = "F4", + .func = "ShowAll", + .key = F_CONF, + .handler = handle_f4, + }, + { + .key_str = "F5", + .func = "Back", + .key = F_BACK, + .handler = handle_f5, + }, + { + .key_str = "F6", + .func = "Save", + .key = F_SAVE, + .handler = handle_f6, + }, + { + .key_str = "F7", + .func = "Load", + .key = F_LOAD, + .handler = handle_f7, + }, + { + .key_str = "F8", + .func = "SymSearch", + .key = F_SEARCH, + .handler = handle_f8, + }, + { + .key_str = "F9", + .func = "Exit", + .key = F_EXIT, + .handler = handle_f9, + }, +}; + +static void print_function_line(void) +{ + int i; + int offset = 1; + const int skip = 1; + int lines = getmaxy(stdscr); + + for (i = 0; i < function_keys_num; i++) { + (void) wattrset(main_window, attributes[FUNCTION_HIGHLIGHT]); + mvwprintw(main_window, lines-3, offset, + "%s", + function_keys[i].key_str); + (void) wattrset(main_window, attributes[FUNCTION_TEXT]); + offset += strlen(function_keys[i].key_str); + mvwprintw(main_window, lines-3, + offset, "%s", + function_keys[i].func); + offset += strlen(function_keys[i].func) + skip; + } + (void) wattrset(main_window, attributes[NORMAL]); +} + +/* help */ +static void handle_f1(int *key, struct menu *current_item) +{ + show_scroll_win(main_window, + _("Global help"), _(nconf_global_help)); + return; +} + +/* symbole help */ +static void handle_f2(int *key, struct menu *current_item) +{ + show_help(current_item); + return; +} + +/* instructions */ +static void handle_f3(int *key, struct menu *current_item) +{ + show_scroll_win(main_window, + _("Short help"), + _(current_instructions)); + return; +} + +/* config */ +static void handle_f4(int *key, struct menu *current_item) +{ + int res = btn_dialog(main_window, + _("Show all symbols?"), + 2, + " ", + ""); + if (res == 0) + show_all_items = 1; + else if (res == 1) + show_all_items = 0; + + return; +} + +/* back */ +static void handle_f5(int *key, struct menu *current_item) +{ + *key = KEY_LEFT; + return; +} + +/* save */ +static void handle_f6(int *key, struct menu *current_item) +{ + conf_save(); + return; +} + +/* load */ +static void handle_f7(int *key, struct menu *current_item) +{ + conf_load(); + return; +} + +/* search */ +static void handle_f8(int *key, struct menu *current_item) +{ + search_conf(); + return; +} + +/* exit */ +static void handle_f9(int *key, struct menu *current_item) +{ + do_exit(); + return; +} + +/* return != 0 to indicate the key was handles */ +static int process_special_keys(int *key, struct menu *menu) +{ + int i; + + if (*key == KEY_RESIZE) { + setup_windows(); + return 1; + } + + for (i = 0; i < function_keys_num; i++) { + if (*key == KEY_F(function_keys[i].key) || + *key == '0' + function_keys[i].key){ + function_keys[i].handler(key, menu); + return 1; + } + } + + return 0; +} + +static void clean_items(void) +{ + int i; + for (i = 0; curses_menu_items[i]; i++) + free_item(curses_menu_items[i]); + bzero(curses_menu_items, sizeof(curses_menu_items)); + bzero(k_menu_items, sizeof(k_menu_items)); + items_num = 0; +} + +typedef enum {MATCH_TINKER_PATTERN_UP, MATCH_TINKER_PATTERN_DOWN, + FIND_NEXT_MATCH_DOWN, FIND_NEXT_MATCH_UP} match_f; + +/* return the index of the matched item, or -1 if no such item exists */ +static int get_mext_match(const char *match_str, match_f flag) +{ + int match_start = item_index(current_item(curses_menu)); + int index; + + if (flag == FIND_NEXT_MATCH_DOWN) + ++match_start; + else if (flag == FIND_NEXT_MATCH_UP) + --match_start; + + index = match_start; + index = (index + items_num) % items_num; + while (true) { + char *str = k_menu_items[index].str; + if (strcasestr(str, match_str) != NULL) + return index; + if (flag == FIND_NEXT_MATCH_UP || + flag == MATCH_TINKER_PATTERN_UP) + --index; + else + ++index; + index = (index + items_num) % items_num; + if (index == match_start) + return -1; + } +} + +/* Make a new item. */ +static void item_make(struct menu *menu, char tag, const char *fmt, ...) +{ + va_list ap; + + if (items_num > MAX_MENU_ITEMS-1) + return; + + bzero(&k_menu_items[items_num], sizeof(k_menu_items[0])); + k_menu_items[items_num].tag = tag; + k_menu_items[items_num].usrptr = menu; + if (menu != NULL) + k_menu_items[items_num].is_visible = + menu_is_visible(menu); + else + k_menu_items[items_num].is_visible = 1; + + va_start(ap, fmt); + vsnprintf(k_menu_items[items_num].str, + sizeof(k_menu_items[items_num].str), + fmt, ap); + va_end(ap); + + if (!k_menu_items[items_num].is_visible) + memcpy(k_menu_items[items_num].str, "XXX", 3); + + curses_menu_items[items_num] = new_item( + k_menu_items[items_num].str, + k_menu_items[items_num].str); + set_item_userptr(curses_menu_items[items_num], + &k_menu_items[items_num]); + /* + if (!k_menu_items[items_num].is_visible) + item_opts_off(curses_menu_items[items_num], O_SELECTABLE); + */ + + items_num++; + curses_menu_items[items_num] = NULL; +} + +/* very hackish. adds a string to the last item added */ +static void item_add_str(const char *fmt, ...) +{ + va_list ap; + int index = items_num-1; + char new_str[256]; + char tmp_str[256]; + + if (index < 0) + return; + + va_start(ap, fmt); + vsnprintf(new_str, sizeof(new_str), fmt, ap); + va_end(ap); + snprintf(tmp_str, sizeof(tmp_str), "%s%s", + k_menu_items[index].str, new_str); + strncpy(k_menu_items[index].str, + tmp_str, + sizeof(k_menu_items[index].str)); + + free_item(curses_menu_items[index]); + curses_menu_items[index] = new_item( + k_menu_items[index].str, + k_menu_items[index].str); + set_item_userptr(curses_menu_items[index], + &k_menu_items[index]); +} + +/* get the tag of the currently selected item */ +static char item_tag(void) +{ + ITEM *cur; + struct mitem *mcur; + + cur = current_item(curses_menu); + if (cur == NULL) + return 0; + mcur = (struct mitem *) item_userptr(cur); + return mcur->tag; +} + +static int curses_item_index(void) +{ + return item_index(current_item(curses_menu)); +} + +static void *item_data(void) +{ + ITEM *cur; + struct mitem *mcur; + + cur = current_item(curses_menu); + if (!cur) + return NULL; + mcur = (struct mitem *) item_userptr(cur); + return mcur->usrptr; + +} + +static int item_is_tag(char tag) +{ + return item_tag() == tag; +} + +static char filename[PATH_MAX+1]; +static char menu_backtitle[PATH_MAX+128]; +static const char *set_config_filename(const char *config_filename) +{ + int size; + + size = snprintf(menu_backtitle, sizeof(menu_backtitle), + "%s - %s", config_filename, rootmenu.prompt->text); + if (size >= sizeof(menu_backtitle)) + menu_backtitle[sizeof(menu_backtitle)-1] = '\0'; + + size = snprintf(filename, sizeof(filename), "%s", config_filename); + if (size >= sizeof(filename)) + filename[sizeof(filename)-1] = '\0'; + return menu_backtitle; +} + +/* return = 0 means we are successful. + * -1 means go on doing what you were doing + */ +static int do_exit(void) +{ + int res; + if (!conf_get_changed()) { + global_exit = 1; + return 0; + } + res = btn_dialog(main_window, + _("Do you wish to save your new configuration?\n" + " to cancel and resume nconfig."), + 2, + " ", + ""); + if (res == KEY_EXIT) { + global_exit = 0; + return -1; + } + + /* if we got here, the user really wants to exit */ + switch (res) { + case 0: + res = conf_write(filename); + if (res) + btn_dialog( + main_window, + _("Error during writing of configuration.\n" + "Your configuration changes were NOT saved."), + 1, + ""); + break; + default: + btn_dialog( + main_window, + _("Your configuration changes were NOT saved."), + 1, + ""); + break; + } + global_exit = 1; + return 0; +} + + +static void search_conf(void) +{ + struct symbol **sym_arr; + struct gstr res; + struct gstr title; + char *dialog_input; + int dres; + + title = str_new(); + str_printf( &title, _("Enter (sub)string or regexp to search for " + "(with or without \"%s\")"), CONFIG_); + +again: + dres = dialog_inputbox(main_window, + _("Search Configuration Parameter"), + str_get(&title), + "", &dialog_input_result, &dialog_input_result_len); + switch (dres) { + case 0: + break; + case 1: + show_scroll_win(main_window, + _("Search Configuration"), search_help); + goto again; + default: + str_free(&title); + return; + } + + /* strip the prefix if necessary */ + dialog_input = dialog_input_result; + if (strncasecmp(dialog_input_result, CONFIG_, strlen(CONFIG_)) == 0) + dialog_input += strlen(CONFIG_); + + sym_arr = sym_re_search(dialog_input); + res = get_relations_str(sym_arr, NULL); + free(sym_arr); + show_scroll_win(main_window, + _("Search Results"), str_get(&res)); + str_free(&res); + str_free(&title); +} + + +static void build_conf(struct menu *menu) +{ + struct symbol *sym; + struct property *prop; + struct menu *child; + int type, tmp, doint = 2; + tristate val; + char ch; + + if (!menu || (!show_all_items && !menu_is_visible(menu))) + return; + + sym = menu->sym; + prop = menu->prompt; + if (!sym) { + if (prop && menu != current_menu) { + const char *prompt = menu_get_prompt(menu); + enum prop_type ptype; + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + switch (ptype) { + case P_MENU: + child_count++; + prompt = _(prompt); + if (single_menu_mode) { + item_make(menu, 'm', + "%s%*c%s", + menu->data ? "-->" : "++>", + indent + 1, ' ', prompt); + } else + item_make(menu, 'm', + " %*c%s %s", + indent + 1, ' ', prompt, + menu_is_empty(menu) ? "----" : "--->"); + + if (single_menu_mode && menu->data) + goto conf_childs; + return; + case P_COMMENT: + if (prompt) { + child_count++; + item_make(menu, ':', + " %*c*** %s ***", + indent + 1, ' ', + _(prompt)); + } + break; + default: + if (prompt) { + child_count++; + item_make(menu, ':', "---%*c%s", + indent + 1, ' ', + _(prompt)); + } + } + } else + doint = 0; + goto conf_childs; + } + + type = sym_get_type(sym); + if (sym_is_choice(sym)) { + struct symbol *def_sym = sym_get_choice_value(sym); + struct menu *def_menu = NULL; + + child_count++; + for (child = menu->list; child; child = child->next) { + if (menu_is_visible(child) && child->sym == def_sym) + def_menu = child; + } + + val = sym_get_tristate_value(sym); + if (sym_is_changable(sym)) { + switch (type) { + case S_BOOLEAN: + item_make(menu, 't', "[%c]", + val == no ? ' ' : '*'); + break; + case S_TRISTATE: + switch (val) { + case yes: + ch = '*'; + break; + case mod: + ch = 'M'; + break; + default: + ch = ' '; + break; + } + item_make(menu, 't', "<%c>", ch); + break; + } + } else { + item_make(menu, def_menu ? 't' : ':', " "); + } + + item_add_str("%*c%s", indent + 1, + ' ', _(menu_get_prompt(menu))); + if (val == yes) { + if (def_menu) { + item_add_str(" (%s)", + _(menu_get_prompt(def_menu))); + item_add_str(" --->"); + if (def_menu->list) { + indent += 2; + build_conf(def_menu); + indent -= 2; + } + } + return; + } + } else { + if (menu == current_menu) { + item_make(menu, ':', + "---%*c%s", indent + 1, + ' ', _(menu_get_prompt(menu))); + goto conf_childs; + } + child_count++; + val = sym_get_tristate_value(sym); + if (sym_is_choice_value(sym) && val == yes) { + item_make(menu, ':', " "); + } else { + switch (type) { + case S_BOOLEAN: + if (sym_is_changable(sym)) + item_make(menu, 't', "[%c]", + val == no ? ' ' : '*'); + else + item_make(menu, 't', "-%c-", + val == no ? ' ' : '*'); + break; + case S_TRISTATE: + switch (val) { + case yes: + ch = '*'; + break; + case mod: + ch = 'M'; + break; + default: + ch = ' '; + break; + } + if (sym_is_changable(sym)) { + if (sym->rev_dep.tri == mod) + item_make(menu, + 't', "{%c}", ch); + else + item_make(menu, + 't', "<%c>", ch); + } else + item_make(menu, 't', "-%c-", ch); + break; + default: + tmp = 2 + strlen(sym_get_string_value(sym)); + item_make(menu, 's', " (%s)", + sym_get_string_value(sym)); + tmp = indent - tmp + 4; + if (tmp < 0) + tmp = 0; + item_add_str("%*c%s%s", tmp, ' ', + _(menu_get_prompt(menu)), + (sym_has_value(sym) || + !sym_is_changable(sym)) ? "" : + _(" (NEW)")); + goto conf_childs; + } + } + item_add_str("%*c%s%s", indent + 1, ' ', + _(menu_get_prompt(menu)), + (sym_has_value(sym) || !sym_is_changable(sym)) ? + "" : _(" (NEW)")); + if (menu->prompt && menu->prompt->type == P_MENU) { + item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->"); + return; + } + } + +conf_childs: + indent += doint; + for (child = menu->list; child; child = child->next) + build_conf(child); + indent -= doint; +} + +static void reset_menu(void) +{ + unpost_menu(curses_menu); + clean_items(); +} + +/* adjust the menu to show this item. + * prefer not to scroll the menu if possible*/ +static void center_item(int selected_index, int *last_top_row) +{ + int toprow; + + set_top_row(curses_menu, *last_top_row); + toprow = top_row(curses_menu); + if (selected_index < toprow || + selected_index >= toprow+mwin_max_lines) { + toprow = max(selected_index-mwin_max_lines/2, 0); + if (toprow >= item_count(curses_menu)-mwin_max_lines) + toprow = item_count(curses_menu)-mwin_max_lines; + set_top_row(curses_menu, toprow); + } + set_current_item(curses_menu, + curses_menu_items[selected_index]); + *last_top_row = toprow; + post_menu(curses_menu); + refresh_all_windows(main_window); +} + +/* this function assumes reset_menu has been called before */ +static void show_menu(const char *prompt, const char *instructions, + int selected_index, int *last_top_row) +{ + int maxx, maxy; + WINDOW *menu_window; + + current_instructions = instructions; + + clear(); + (void) wattrset(main_window, attributes[NORMAL]); + print_in_middle(stdscr, 1, 0, getmaxx(stdscr), + menu_backtitle, + attributes[MAIN_HEADING]); + + (void) wattrset(main_window, attributes[MAIN_MENU_BOX]); + box(main_window, 0, 0); + (void) wattrset(main_window, attributes[MAIN_MENU_HEADING]); + mvwprintw(main_window, 0, 3, " %s ", prompt); + (void) wattrset(main_window, attributes[NORMAL]); + + set_menu_items(curses_menu, curses_menu_items); + + /* position the menu at the middle of the screen */ + scale_menu(curses_menu, &maxy, &maxx); + maxx = min(maxx, mwin_max_cols-2); + maxy = mwin_max_lines; + menu_window = derwin(main_window, + maxy, + maxx, + 2, + (mwin_max_cols-maxx)/2); + keypad(menu_window, TRUE); + set_menu_win(curses_menu, menu_window); + set_menu_sub(curses_menu, menu_window); + + /* must reassert this after changing items, otherwise returns to a + * default of 16 + */ + set_menu_format(curses_menu, maxy, 1); + center_item(selected_index, last_top_row); + set_menu_format(curses_menu, maxy, 1); + + print_function_line(); + + /* Post the menu */ + post_menu(curses_menu); + refresh_all_windows(main_window); +} + +static void adj_match_dir(match_f *match_direction) +{ + if (*match_direction == FIND_NEXT_MATCH_DOWN) + *match_direction = + MATCH_TINKER_PATTERN_DOWN; + else if (*match_direction == FIND_NEXT_MATCH_UP) + *match_direction = + MATCH_TINKER_PATTERN_UP; + /* else, do no change.. */ +} + +struct match_state +{ + int in_search; + match_f match_direction; + char pattern[256]; +}; + +/* Return 0 means I have handled the key. In such a case, ans should hold the + * item to center, or -1 otherwise. + * Else return -1 . + */ +static int do_match(int key, struct match_state *state, int *ans) +{ + char c = (char) key; + int terminate_search = 0; + *ans = -1; + if (key == '/' || (state->in_search && key == 27)) { + move(0, 0); + refresh(); + clrtoeol(); + state->in_search = 1-state->in_search; + bzero(state->pattern, sizeof(state->pattern)); + state->match_direction = MATCH_TINKER_PATTERN_DOWN; + return 0; + } else if (!state->in_search) + return 1; + + if (isalnum(c) || isgraph(c) || c == ' ') { + state->pattern[strlen(state->pattern)] = c; + state->pattern[strlen(state->pattern)] = '\0'; + adj_match_dir(&state->match_direction); + *ans = get_mext_match(state->pattern, + state->match_direction); + } else if (key == KEY_DOWN) { + state->match_direction = FIND_NEXT_MATCH_DOWN; + *ans = get_mext_match(state->pattern, + state->match_direction); + } else if (key == KEY_UP) { + state->match_direction = FIND_NEXT_MATCH_UP; + *ans = get_mext_match(state->pattern, + state->match_direction); + } else if (key == KEY_BACKSPACE || key == 127) { + state->pattern[strlen(state->pattern)-1] = '\0'; + adj_match_dir(&state->match_direction); + } else + terminate_search = 1; + + if (terminate_search) { + state->in_search = 0; + bzero(state->pattern, sizeof(state->pattern)); + move(0, 0); + refresh(); + clrtoeol(); + return -1; + } + return 0; +} + +static void conf(struct menu *menu) +{ + struct menu *submenu = NULL; + const char *prompt = menu_get_prompt(menu); + struct symbol *sym; + int res; + int current_index = 0; + int last_top_row = 0; + struct match_state match_state = { + .in_search = 0, + .match_direction = MATCH_TINKER_PATTERN_DOWN, + .pattern = "", + }; + + while (!global_exit) { + reset_menu(); + current_menu = menu; + build_conf(menu); + if (!child_count) + break; + + show_menu(prompt ? _(prompt) : _("Main Menu"), + _(menu_instructions), + current_index, &last_top_row); + keypad((menu_win(curses_menu)), TRUE); + while (!global_exit) { + if (match_state.in_search) { + mvprintw(0, 0, + "searching: %s", match_state.pattern); + clrtoeol(); + } + refresh_all_windows(main_window); + res = wgetch(menu_win(curses_menu)); + if (!res) + break; + if (do_match(res, &match_state, ¤t_index) == 0) { + if (current_index != -1) + center_item(current_index, + &last_top_row); + continue; + } + if (process_special_keys(&res, + (struct menu *) item_data())) + break; + switch (res) { + case KEY_DOWN: + menu_driver(curses_menu, REQ_DOWN_ITEM); + break; + case KEY_UP: + menu_driver(curses_menu, REQ_UP_ITEM); + break; + case KEY_NPAGE: + menu_driver(curses_menu, REQ_SCR_DPAGE); + break; + case KEY_PPAGE: + menu_driver(curses_menu, REQ_SCR_UPAGE); + break; + case KEY_HOME: + menu_driver(curses_menu, REQ_FIRST_ITEM); + break; + case KEY_END: + menu_driver(curses_menu, REQ_LAST_ITEM); + break; + case 'h': + case '?': + show_help((struct menu *) item_data()); + break; + } + if (res == 10 || res == 27 || + res == 32 || res == 'n' || res == 'y' || + res == KEY_LEFT || res == KEY_RIGHT || + res == 'm') + break; + refresh_all_windows(main_window); + } + + refresh_all_windows(main_window); + /* if ESC or left*/ + if (res == 27 || (menu != &rootmenu && res == KEY_LEFT)) + break; + + /* remember location in the menu */ + last_top_row = top_row(curses_menu); + current_index = curses_item_index(); + + if (!item_tag()) + continue; + + submenu = (struct menu *) item_data(); + if (!submenu || !menu_is_visible(submenu)) + continue; + sym = submenu->sym; + + switch (res) { + case ' ': + if (item_is_tag('t')) + sym_toggle_tristate_value(sym); + else if (item_is_tag('m')) + conf(submenu); + break; + case KEY_RIGHT: + case 10: /* ENTER WAS PRESSED */ + switch (item_tag()) { + case 'm': + if (single_menu_mode) + submenu->data = + (void *) (long) !submenu->data; + else + conf(submenu); + break; + case 't': + if (sym_is_choice(sym) && + sym_get_tristate_value(sym) == yes) + conf_choice(submenu); + else if (submenu->prompt && + submenu->prompt->type == P_MENU) + conf(submenu); + else if (res == 10) + sym_toggle_tristate_value(sym); + break; + case 's': + conf_string(submenu); + break; + } + break; + case 'y': + if (item_is_tag('t')) { + if (sym_set_tristate_value(sym, yes)) + break; + if (sym_set_tristate_value(sym, mod)) + btn_dialog(main_window, setmod_text, 0); + } + break; + case 'n': + if (item_is_tag('t')) + sym_set_tristate_value(sym, no); + break; + case 'm': + if (item_is_tag('t')) + sym_set_tristate_value(sym, mod); + break; + } + } +} + +static void conf_message_callback(const char *fmt, va_list ap) +{ + char buf[1024]; + + vsnprintf(buf, sizeof(buf), fmt, ap); + btn_dialog(main_window, buf, 1, ""); +} + +static void show_help(struct menu *menu) +{ + struct gstr help; + + if (!menu) + return; + + help = str_new(); + menu_get_ext_help(menu, &help); + show_scroll_win(main_window, _(menu_get_prompt(menu)), str_get(&help)); + str_free(&help); +} + +static void conf_choice(struct menu *menu) +{ + const char *prompt = _(menu_get_prompt(menu)); + struct menu *child = NULL; + struct symbol *active; + int selected_index = 0; + int last_top_row = 0; + int res, i = 0; + struct match_state match_state = { + .in_search = 0, + .match_direction = MATCH_TINKER_PATTERN_DOWN, + .pattern = "", + }; + + active = sym_get_choice_value(menu->sym); + /* this is mostly duplicated from the conf() function. */ + while (!global_exit) { + reset_menu(); + + for (i = 0, child = menu->list; child; child = child->next) { + if (!show_all_items && !menu_is_visible(child)) + continue; + + if (child->sym == sym_get_choice_value(menu->sym)) + item_make(child, ':', " %s", + _(menu_get_prompt(child))); + else if (child->sym) + item_make(child, ':', " %s", + _(menu_get_prompt(child))); + else + item_make(child, ':', "*** %s ***", + _(menu_get_prompt(child))); + + if (child->sym == active){ + last_top_row = top_row(curses_menu); + selected_index = i; + } + i++; + } + show_menu(prompt ? _(prompt) : _("Choice Menu"), + _(radiolist_instructions), + selected_index, + &last_top_row); + while (!global_exit) { + if (match_state.in_search) { + mvprintw(0, 0, "searching: %s", + match_state.pattern); + clrtoeol(); + } + refresh_all_windows(main_window); + res = wgetch(menu_win(curses_menu)); + if (!res) + break; + if (do_match(res, &match_state, &selected_index) == 0) { + if (selected_index != -1) + center_item(selected_index, + &last_top_row); + continue; + } + if (process_special_keys( + &res, + (struct menu *) item_data())) + break; + switch (res) { + case KEY_DOWN: + menu_driver(curses_menu, REQ_DOWN_ITEM); + break; + case KEY_UP: + menu_driver(curses_menu, REQ_UP_ITEM); + break; + case KEY_NPAGE: + menu_driver(curses_menu, REQ_SCR_DPAGE); + break; + case KEY_PPAGE: + menu_driver(curses_menu, REQ_SCR_UPAGE); + break; + case KEY_HOME: + menu_driver(curses_menu, REQ_FIRST_ITEM); + break; + case KEY_END: + menu_driver(curses_menu, REQ_LAST_ITEM); + break; + case 'h': + case '?': + show_help((struct menu *) item_data()); + break; + } + if (res == 10 || res == 27 || res == ' ' || + res == KEY_LEFT){ + break; + } + refresh_all_windows(main_window); + } + /* if ESC or left */ + if (res == 27 || res == KEY_LEFT) + break; + + child = item_data(); + if (!child || !menu_is_visible(child) || !child->sym) + continue; + switch (res) { + case ' ': + case 10: + case KEY_RIGHT: + sym_set_tristate_value(child->sym, yes); + return; + case 'h': + case '?': + show_help(child); + active = child->sym; + break; + case KEY_EXIT: + return; + } + } +} + +static void conf_string(struct menu *menu) +{ + const char *prompt = menu_get_prompt(menu); + + while (1) { + int res; + const char *heading; + + switch (sym_get_type(menu->sym)) { + case S_INT: + heading = _(inputbox_instructions_int); + break; + case S_HEX: + heading = _(inputbox_instructions_hex); + break; + case S_STRING: + heading = _(inputbox_instructions_string); + break; + default: + heading = _("Internal nconf error!"); + } + res = dialog_inputbox(main_window, + prompt ? _(prompt) : _("Main Menu"), + heading, + sym_get_string_value(menu->sym), + &dialog_input_result, + &dialog_input_result_len); + switch (res) { + case 0: + if (sym_set_string_value(menu->sym, + dialog_input_result)) + return; + btn_dialog(main_window, + _("You have made an invalid entry."), 0); + break; + case 1: + show_help(menu); + break; + case KEY_EXIT: + return; + } + } +} + +static void conf_load(void) +{ + while (1) { + int res; + res = dialog_inputbox(main_window, + NULL, load_config_text, + filename, + &dialog_input_result, + &dialog_input_result_len); + switch (res) { + case 0: + if (!dialog_input_result[0]) + return; + if (!conf_read(dialog_input_result)) { + set_config_filename(dialog_input_result); + sym_set_change_count(1); + return; + } + btn_dialog(main_window, _("File does not exist!"), 0); + break; + case 1: + show_scroll_win(main_window, + _("Load Alternate Configuration"), + load_config_help); + break; + case KEY_EXIT: + return; + } + } +} + +static void conf_save(void) +{ + while (1) { + int res; + res = dialog_inputbox(main_window, + NULL, save_config_text, + filename, + &dialog_input_result, + &dialog_input_result_len); + switch (res) { + case 0: + if (!dialog_input_result[0]) + return; + res = conf_write(dialog_input_result); + if (!res) { + set_config_filename(dialog_input_result); + return; + } + btn_dialog(main_window, _("Can't create file! " + "Probably a nonexistent directory."), + 1, ""); + break; + case 1: + show_scroll_win(main_window, + _("Save Alternate Configuration"), + save_config_help); + break; + case KEY_EXIT: + return; + } + } +} + +static void setup_windows(void) +{ + int lines, columns; + + getmaxyx(stdscr, lines, columns); + + if (main_window != NULL) + delwin(main_window); + + /* set up the menu and menu window */ + main_window = newwin(lines-2, columns-2, 2, 1); + keypad(main_window, TRUE); + mwin_max_lines = lines-7; + mwin_max_cols = columns-6; + + /* panels order is from bottom to top */ + new_panel(main_window); +} + +int main(int ac, char **av) +{ + int lines, columns; + char *mode; + + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + if (ac > 1 && strcmp(av[1], "-s") == 0) { + /* Silence conf_read() until the real callback is set up */ + conf_set_message_callback(NULL); + av++; + } + conf_parse(av[1]); + conf_read(NULL); + + mode = getenv("NCONFIG_MODE"); + if (mode) { + if (!strcasecmp(mode, "single_menu")) + single_menu_mode = 1; + } + + /* Initialize curses */ + initscr(); + /* set color theme */ + set_colors(); + + cbreak(); + noecho(); + keypad(stdscr, TRUE); + curs_set(0); + + getmaxyx(stdscr, lines, columns); + if (columns < 75 || lines < 20) { + endwin(); + printf("Your terminal should have at " + "least 20 lines and 75 columns\n"); + return 1; + } + + notimeout(stdscr, FALSE); +#if NCURSES_REENTRANT + set_escdelay(1); +#else + ESCDELAY = 1; +#endif + + /* set btns menu */ + curses_menu = new_menu(curses_menu_items); + menu_opts_off(curses_menu, O_SHOWDESC); + menu_opts_on(curses_menu, O_SHOWMATCH); + menu_opts_on(curses_menu, O_ONEVALUE); + menu_opts_on(curses_menu, O_NONCYCLIC); + menu_opts_on(curses_menu, O_IGNORECASE); + set_menu_mark(curses_menu, " "); + set_menu_fore(curses_menu, attributes[MAIN_MENU_FORE]); + set_menu_back(curses_menu, attributes[MAIN_MENU_BACK]); + set_menu_grey(curses_menu, attributes[MAIN_MENU_GREY]); + + set_config_filename(conf_get_configname()); + setup_windows(); + + /* check for KEY_FUNC(1) */ + if (has_key(KEY_F(1)) == FALSE) { + show_scroll_win(main_window, + _("Instructions"), + _(menu_no_f_instructions)); + } + + conf_set_message_callback(conf_message_callback); + /* do the work */ + while (!global_exit) { + conf(&rootmenu); + if (!global_exit && do_exit() == 0) + break; + } + /* ok, we are done */ + unpost_menu(curses_menu); + free_menu(curses_menu); + delwin(main_window); + clear(); + refresh(); + endwin(); + return 0; +} diff --git a/support/kconfig/nconf.gui.c b/support/kconfig/nconf.gui.c new file mode 100644 index 00000000..88874acf --- /dev/null +++ b/support/kconfig/nconf.gui.c @@ -0,0 +1,664 @@ +/* + * Copyright (C) 2008 Nir Tzachar 0) + win_rows = msg_lines+4; + else + win_rows = msg_lines+2; + + win = newwin(win_rows, total_width+4, y, x); + keypad(win, TRUE); + menu_win = derwin(win, 1, btns_width, win_rows-2, + 1+(total_width+2-btns_width)/2); + menu = new_menu(btns); + msg_win = derwin(win, win_rows-2, msg_width, 1, + 1+(total_width+2-msg_width)/2); + + set_menu_fore(menu, attributes[DIALOG_MENU_FORE]); + set_menu_back(menu, attributes[DIALOG_MENU_BACK]); + + (void) wattrset(win, attributes[DIALOG_BOX]); + box(win, 0, 0); + + /* print message */ + (void) wattrset(msg_win, attributes[DIALOG_TEXT]); + fill_window(msg_win, msg); + + set_menu_win(menu, win); + set_menu_sub(menu, menu_win); + set_menu_format(menu, 1, btn_num); + menu_opts_off(menu, O_SHOWDESC); + menu_opts_off(menu, O_SHOWMATCH); + menu_opts_on(menu, O_ONEVALUE); + menu_opts_on(menu, O_NONCYCLIC); + set_menu_mark(menu, ""); + post_menu(menu); + + + touchwin(win); + refresh_all_windows(main_window); + while ((res = wgetch(win))) { + switch (res) { + case KEY_LEFT: + menu_driver(menu, REQ_LEFT_ITEM); + break; + case KEY_RIGHT: + menu_driver(menu, REQ_RIGHT_ITEM); + break; + case 10: /* ENTER */ + case 27: /* ESCAPE */ + case ' ': + case KEY_F(F_BACK): + case KEY_F(F_EXIT): + break; + } + touchwin(win); + refresh_all_windows(main_window); + + if (res == 10 || res == ' ') { + res = item_index(current_item(menu)); + break; + } else if (res == 27 || res == KEY_F(F_BACK) || + res == KEY_F(F_EXIT)) { + res = KEY_EXIT; + break; + } + } + + unpost_menu(menu); + free_menu(menu); + for (i = 0; i < btn_num; i++) + free_item(btns[i]); + + delwin(win); + return res; +} + +int dialog_inputbox(WINDOW *main_window, + const char *title, const char *prompt, + const char *init, char **resultp, int *result_len) +{ + int prompt_lines = 0; + int prompt_width = 0; + WINDOW *win; + WINDOW *prompt_win; + WINDOW *form_win; + PANEL *panel; + int i, x, y, lines, columns, win_lines, win_cols; + int res = -1; + int cursor_position = strlen(init); + int cursor_form_win; + char *result = *resultp; + + getmaxyx(stdscr, lines, columns); + + if (strlen(init)+1 > *result_len) { + *result_len = strlen(init)+1; + *resultp = result = xrealloc(result, *result_len); + } + + /* find the widest line of msg: */ + prompt_lines = get_line_no(prompt); + for (i = 0; i < prompt_lines; i++) { + const char *line = get_line(prompt, i); + int len = get_line_length(line); + prompt_width = max(prompt_width, len); + } + + if (title) + prompt_width = max(prompt_width, strlen(title)); + + win_lines = min(prompt_lines+6, lines-2); + win_cols = min(prompt_width+7, columns-2); + prompt_lines = max(win_lines-6, 0); + prompt_width = max(win_cols-7, 0); + + /* place dialog in middle of screen */ + y = (lines-win_lines)/2; + x = (columns-win_cols)/2; + + strncpy(result, init, *result_len); + + /* create the windows */ + win = newwin(win_lines, win_cols, y, x); + prompt_win = derwin(win, prompt_lines+1, prompt_width, 2, 2); + form_win = derwin(win, 1, prompt_width, prompt_lines+3, 2); + keypad(form_win, TRUE); + + (void) wattrset(form_win, attributes[INPUT_FIELD]); + + (void) wattrset(win, attributes[INPUT_BOX]); + box(win, 0, 0); + (void) wattrset(win, attributes[INPUT_HEADING]); + if (title) + mvwprintw(win, 0, 3, "%s", title); + + /* print message */ + (void) wattrset(prompt_win, attributes[INPUT_TEXT]); + fill_window(prompt_win, prompt); + + mvwprintw(form_win, 0, 0, "%*s", prompt_width, " "); + cursor_form_win = min(cursor_position, prompt_width-1); + mvwprintw(form_win, 0, 0, "%s", + result + cursor_position-cursor_form_win); + + /* create panels */ + panel = new_panel(win); + + /* show the cursor */ + curs_set(1); + + touchwin(win); + refresh_all_windows(main_window); + while ((res = wgetch(form_win))) { + int len = strlen(result); + switch (res) { + case 10: /* ENTER */ + case 27: /* ESCAPE */ + case KEY_F(F_HELP): + case KEY_F(F_EXIT): + case KEY_F(F_BACK): + break; + case 127: + case KEY_BACKSPACE: + if (cursor_position > 0) { + memmove(&result[cursor_position-1], + &result[cursor_position], + len-cursor_position+1); + cursor_position--; + cursor_form_win--; + len--; + } + break; + case KEY_DC: + if (cursor_position >= 0 && cursor_position < len) { + memmove(&result[cursor_position], + &result[cursor_position+1], + len-cursor_position+1); + len--; + } + break; + case KEY_UP: + case KEY_RIGHT: + if (cursor_position < len) { + cursor_position++; + cursor_form_win++; + } + break; + case KEY_DOWN: + case KEY_LEFT: + if (cursor_position > 0) { + cursor_position--; + cursor_form_win--; + } + break; + case KEY_HOME: + cursor_position = 0; + cursor_form_win = 0; + break; + case KEY_END: + cursor_position = len; + cursor_form_win = min(cursor_position, prompt_width-1); + break; + default: + if ((isgraph(res) || isspace(res))) { + /* one for new char, one for '\0' */ + if (len+2 > *result_len) { + *result_len = len+2; + *resultp = result = realloc(result, + *result_len); + } + /* insert the char at the proper position */ + memmove(&result[cursor_position+1], + &result[cursor_position], + len-cursor_position+1); + result[cursor_position] = res; + cursor_position++; + cursor_form_win++; + len++; + } else { + mvprintw(0, 0, "unknown key: %d\n", res); + } + break; + } + if (cursor_form_win < 0) + cursor_form_win = 0; + else if (cursor_form_win > prompt_width-1) + cursor_form_win = prompt_width-1; + + wmove(form_win, 0, 0); + wclrtoeol(form_win); + mvwprintw(form_win, 0, 0, "%*s", prompt_width, " "); + mvwprintw(form_win, 0, 0, "%s", + result + cursor_position-cursor_form_win); + wmove(form_win, 0, cursor_form_win); + touchwin(win); + refresh_all_windows(main_window); + + if (res == 10) { + res = 0; + break; + } else if (res == 27 || res == KEY_F(F_BACK) || + res == KEY_F(F_EXIT)) { + res = KEY_EXIT; + break; + } else if (res == KEY_F(F_HELP)) { + res = 1; + break; + } + } + + /* hide the cursor */ + curs_set(0); + del_panel(panel); + delwin(prompt_win); + delwin(form_win); + delwin(win); + return res; +} + +/* refresh all windows in the correct order */ +void refresh_all_windows(WINDOW *main_window) +{ + update_panels(); + touchwin(main_window); + refresh(); +} + +/* layman's scrollable window... */ +void show_scroll_win(WINDOW *main_window, + const char *title, + const char *text) +{ + int res; + int total_lines = get_line_no(text); + int x, y, lines, columns; + int start_x = 0, start_y = 0; + int text_lines = 0, text_cols = 0; + int total_cols = 0; + int win_cols = 0; + int win_lines = 0; + int i = 0; + WINDOW *win; + WINDOW *pad; + PANEL *panel; + + getmaxyx(stdscr, lines, columns); + + /* find the widest line of msg: */ + total_lines = get_line_no(text); + for (i = 0; i < total_lines; i++) { + const char *line = get_line(text, i); + int len = get_line_length(line); + total_cols = max(total_cols, len+2); + } + + /* create the pad */ + pad = newpad(total_lines+10, total_cols+10); + (void) wattrset(pad, attributes[SCROLLWIN_TEXT]); + fill_window(pad, text); + + win_lines = min(total_lines+4, lines-2); + win_cols = min(total_cols+2, columns-2); + text_lines = max(win_lines-4, 0); + text_cols = max(win_cols-2, 0); + + /* place window in middle of screen */ + y = (lines-win_lines)/2; + x = (columns-win_cols)/2; + + win = newwin(win_lines, win_cols, y, x); + keypad(win, TRUE); + /* show the help in the help window, and show the help panel */ + (void) wattrset(win, attributes[SCROLLWIN_BOX]); + box(win, 0, 0); + (void) wattrset(win, attributes[SCROLLWIN_HEADING]); + mvwprintw(win, 0, 3, " %s ", title); + panel = new_panel(win); + + /* handle scrolling */ + do { + + copywin(pad, win, start_y, start_x, 2, 2, text_lines, + text_cols, 0); + print_in_middle(win, + text_lines+2, + 0, + text_cols, + "", + attributes[DIALOG_MENU_FORE]); + wrefresh(win); + + res = wgetch(win); + switch (res) { + case KEY_NPAGE: + case ' ': + case 'd': + start_y += text_lines-2; + break; + case KEY_PPAGE: + case 'u': + start_y -= text_lines+2; + break; + case KEY_HOME: + start_y = 0; + break; + case KEY_END: + start_y = total_lines-text_lines; + break; + case KEY_DOWN: + case 'j': + start_y++; + break; + case KEY_UP: + case 'k': + start_y--; + break; + case KEY_LEFT: + case 'h': + start_x--; + break; + case KEY_RIGHT: + case 'l': + start_x++; + break; + } + if (res == 10 || res == 27 || res == 'q' || + res == KEY_F(F_HELP) || res == KEY_F(F_BACK) || + res == KEY_F(F_EXIT)) + break; + if (start_y < 0) + start_y = 0; + if (start_y >= total_lines-text_lines) + start_y = total_lines-text_lines; + if (start_x < 0) + start_x = 0; + if (start_x >= total_cols-text_cols) + start_x = total_cols-text_cols; + } while (res); + + del_panel(panel); + delwin(win); + refresh_all_windows(main_window); +} diff --git a/support/kconfig/nconf.h b/support/kconfig/nconf.h new file mode 100644 index 00000000..9f6f21d3 --- /dev/null +++ b/support/kconfig/nconf.h @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2008 Nir Tzachar +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#define max(a, b) ({\ + typeof(a) _a = a;\ + typeof(b) _b = b;\ + _a > _b ? _a : _b; }) + +#define min(a, b) ({\ + typeof(a) _a = a;\ + typeof(b) _b = b;\ + _a < _b ? _a : _b; }) + +typedef enum { + NORMAL = 1, + MAIN_HEADING, + MAIN_MENU_BOX, + MAIN_MENU_FORE, + MAIN_MENU_BACK, + MAIN_MENU_GREY, + MAIN_MENU_HEADING, + SCROLLWIN_TEXT, + SCROLLWIN_HEADING, + SCROLLWIN_BOX, + DIALOG_TEXT, + DIALOG_MENU_FORE, + DIALOG_MENU_BACK, + DIALOG_BOX, + INPUT_BOX, + INPUT_HEADING, + INPUT_TEXT, + INPUT_FIELD, + FUNCTION_TEXT, + FUNCTION_HIGHLIGHT, + ATTR_MAX +} attributes_t; +extern attributes_t attributes[]; + +typedef enum { + F_HELP = 1, + F_SYMBOL = 2, + F_INSTS = 3, + F_CONF = 4, + F_BACK = 5, + F_SAVE = 6, + F_LOAD = 7, + F_SEARCH = 8, + F_EXIT = 9, +} function_key; + +void set_colors(void); + +/* this changes the windows attributes !!! */ +void print_in_middle(WINDOW *win, + int starty, + int startx, + int width, + const char *string, + chtype color); +int get_line_length(const char *line); +int get_line_no(const char *text); +const char *get_line(const char *text, int line_no); +void fill_window(WINDOW *win, const char *text); +int btn_dialog(WINDOW *main_window, const char *msg, int btn_num, ...); +int dialog_inputbox(WINDOW *main_window, + const char *title, const char *prompt, + const char *init, char **resultp, int *result_len); +void refresh_all_windows(WINDOW *main_window); +void show_scroll_win(WINDOW *main_window, + const char *title, + const char *text); diff --git a/support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch b/support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch new file mode 100644 index 00000000..43ae61a9 --- /dev/null +++ b/support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch @@ -0,0 +1,107 @@ +--- + confdata.c | 4 ++-- + gconf.glade | 2 +- + mconf.c | 4 ++-- + zconf.tab.c_shipped | 2 +- + zconf.y | 2 +- + 5 files changed, 7 insertions(+), 7 deletions(-) + +Index: kconfig/gconf.glade +=================================================================== +--- kconfig.orig/gconf.glade ++++ kconfig/gconf.glade +@@ -4,7 +4,7 @@ + + + True +- Gtk Kernel Configurator ++ Gtk Buildroot Configurator + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False +Index: kconfig/mconf.c +=================================================================== +--- kconfig.orig/mconf.c ++++ kconfig/mconf.c +@@ -176,9 +176,9 @@ menu_instructions[] = N_( + "Arrow keys navigate the menu. " + " selects submenus ---> (or empty submenus ----). " + "Highlighted letters are hotkeys. " +- "Pressing includes, excludes, modularizes features. " ++ "Pressing selects a feature, while excludes a feature. " + "Press to exit, for Help, for Search. " +- "Legend: [*] built-in [ ] excluded module < > module capable"), ++ "Legend: [*] feature is selected [ ] feature is excluded"), + radiolist_instructions[] = N_( + "Use the arrow keys to navigate this window or " + "press the hotkey of the item you wish to select " +@@ -962,7 +962,7 @@ static int handle_exit(void) + if (conf_get_changed()) + res = dialog_yesno(NULL, + _("Do you wish to save your new configuration?\n" +- "(Press to continue kernel configuration.)"), ++ "(Press to continue Buildroot configuration.)"), + 6, 60); + else + res = -1; +Index: kconfig/zconf.tab.c_shipped +=================================================================== +--- kconfig.orig/zconf.tab.c_shipped ++++ kconfig/zconf.tab.c_shipped +@@ -1515,7 +1515,7 @@ yyreduce: + * later regardless of whether it comes from the 'prompt' in + * mainmenu_stmt or here + */ +- menu_add_prompt(P_MENU, xstrdup("Linux Kernel Configuration"), NULL); ++ menu_add_prompt(P_MENU, xstrdup("Buildroot Configuration"), NULL); + } + + break; +Index: kconfig/zconf.y +=================================================================== +--- kconfig.orig/zconf.y ++++ kconfig/zconf.y +@@ -127,7 +127,7 @@ no_mainmenu_stmt: /* empty */ + * later regardless of whether it comes from the 'prompt' in + * mainmenu_stmt or here + */ +- menu_add_prompt(P_MENU, xstrdup("Linux Kernel Configuration"), NULL); ++ menu_add_prompt(P_MENU, xstrdup("Buildroot Configuration"), NULL); + }; + + +Index: kconfig/confdata.c +=================================================================== +--- kconfig.orig/confdata.c ++++ kconfig/confdata.c +@@ -30,7 +30,7 @@ static void conf_message(const char *fmt + static const char *conf_filename; + static int conf_lineno, conf_warnings; + +-const char conf_defname[] = "arch/$ARCH/defconfig"; ++const char conf_defname[] = ".defconfig"; + + static void conf_warning(const char *fmt, ...) + { +@@ -69,7 +69,7 @@ static void conf_message(const char *fmt + + const char *conf_get_configname(void) + { +- char *name = getenv("KCONFIG_CONFIG"); ++ char *name = getenv("BR2_CONFIG"); + + return name ? name : ".config"; + } +Index: kconfig/qconf.cc +=================================================================== +--- kconfig.orig/qconf.cc ++++ kconfig/qconf.cc +@@ -55,7 +55,7 @@ static inline QString qgettext(const QSt + } + + ConfigSettings::ConfigSettings() +- : QSettings("kernel.org", "qconf") ++ : QSettings("buildroot.org", "qconf") + { + } + diff --git a/support/kconfig/patches/06-br-build-system-integration.patch b/support/kconfig/patches/06-br-build-system-integration.patch new file mode 100644 index 00000000..35420cbb --- /dev/null +++ b/support/kconfig/patches/06-br-build-system-integration.patch @@ -0,0 +1,74 @@ +Index: kconfig/Makefile +=================================================================== +--- kconfig.orig/Makefile ++++ kconfig/Makefile +@@ -205,7 +205,35 @@ qconf-cxxobjs := qconf.o + qconf-objs := zconf.tab.o + gconf-objs := gconf.o zconf.tab.o + +-hostprogs-y := conf nconf mconf kxgettext qconf gconf ++hostprogs-y := conf ++ ++ifeq ($(MAKECMDGOALS),nconf) ++ hostprogs-y += nconf ++endif ++ ++ifeq ($(MAKECMDGOALS),mconf) ++ hostprogs-y += mconf ++endif ++ ++ifeq ($(MAKECMDGOALS),update-po-config) ++ hostprogs-y += kxgettext ++endif ++ ++ifeq ($(MAKECMDGOALS),qconf) ++ qconf-target := 1 ++endif ++ ++ifeq ($(MAKECMDGOALS),gconf) ++ gconf-target := 1 ++endif ++ ++ifeq ($(qconf-target),1) ++ hostprogs-y += qconf ++endif ++ ++ifeq ($(gconf-target),1) ++ hostprogs-y += gconf ++endif + + targets += zconf.lex.c + clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck +@@ -243,7 +271,7 @@ HOSTLOADLIBES_nconf = $(shell \ + || echo "-lmenu -lpanel -lncurses" ) + $(obj)/qconf.o: $(obj)/.tmp_qtcheck + +-ifeq ($(MAKECMDGOALS),xconfig) ++ifeq ($(MAKECMDGOALS),qconf) + $(obj)/.tmp_qtcheck: $(src)/Makefile + -include $(obj)/.tmp_qtcheck + +@@ -270,9 +298,8 @@ $(obj)/.tmp_qtcheck: + echo "KC_QT_MOC=$$moc" >> $@ + endif + ++ifeq ($(MAKECMDGOALS),gconf) + $(obj)/gconf.o: $(obj)/.tmp_gtkcheck +- +-ifeq ($(MAKECMDGOALS),gconfig) + -include $(obj)/.tmp_gtkcheck + + # GTK+ needs some extra effort, too... +@@ -300,11 +327,8 @@ $(obj)/zconf.tab.o: $(obj)/zconf.lex.c + + $(obj)/qconf.o: $(obj)/qconf.moc + +-quiet_cmd_moc = MOC $@ +- cmd_moc = $(KC_QT_MOC) -i $< -o $@ +- + $(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck +- $(call cmd,moc) ++ $(KC_QT_MOC) -i $< -o $@ + + # Extract gconf menu items for i18n support + $(obj)/gconf.glade.h: $(obj)/gconf.glade diff --git a/support/kconfig/patches/10-br-build-system.patch b/support/kconfig/patches/10-br-build-system.patch new file mode 100644 index 00000000..abf24636 --- /dev/null +++ b/support/kconfig/patches/10-br-build-system.patch @@ -0,0 +1,80 @@ +--- + Makefile.br | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + foo.h | 12 ++++++++++++ + 2 files changed, 65 insertions(+) + +Index: kconfig/Makefile.br +=================================================================== +--- /dev/null ++++ kconfig/Makefile.br +@@ -0,0 +1,53 @@ ++src := . ++top_srcdir=../../ ++top_builddir=../../ ++srctree := . ++obj ?= . ++ ++include Makefile ++#HOSTCFLAGS+=-Dinline="" -include foo.h ++-include $(obj)/.depend ++$(obj)/.depend: $(wildcard *.h *.c) ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) -MM *.c > $@ 2>/dev/null || : ++ ++__hostprogs := $(sort $(hostprogs-y) $(hostprogs-m)) ++host-csingle := $(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m))) ++host-cmulti := $(foreach m,$(__hostprogs),\ ++ $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m)))) ++host-cxxmulti := $(foreach m,$(__hostprogs),\ ++ $(if $($(m)-cxxobjs),$(m),$(if $($(m)-objs),))) ++host-cobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(__hostprogs),$($(m)-objs)))) ++host-cxxobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(__hostprogs),$($(m)-cxxobjs)))) ++ ++HOST_EXTRACFLAGS += -I$(obj) -DCONFIG_=\"\" ++ ++$(host-csingle): %: %.c ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< -o $(obj)/$@ ++ ++$(host-cmulti): %: $(host-cobjs) $(host-cshlib) ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ ++ ++$(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib) ++ $(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ ++ ++$(obj)/%.o: %.c ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@ ++ ++$(obj)/%.o: $(obj)/%.c ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@ ++ ++$(obj)/%.o: %.cc ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@ ++ ++$(obj)/%:: $(src)/%_shipped ++ $(Q)cat $< > $@ ++ ++clean: ++ $(Q)rm -f $(addprefix $(obj)/,$(clean-files)) ++distclean: clean ++ $(Q)rm -f $(addprefix $(obj)/,$(lxdialog) $(conf-objs) $(mconf-objs) $(kxgettext-objs) \ ++ $(hostprogs-y) $(qconf-cxxobjs) $(qconf-objs) $(gconf-objs) \ ++ mconf .depend) ++ ++FORCE: ++.PHONY: FORCE clean distclean +Index: kconfig/foo.h +=================================================================== +--- /dev/null ++++ kconfig/foo.h +@@ -0,0 +1,12 @@ ++#ifndef __KCONFIG_FOO_H ++#define __KCONFIG_FOO_H ++ ++#ifndef __APPLE__ ++#include ++#endif ++#include ++ ++#ifndef PATH_MAX ++#define PATH_MAX 1024 ++#endif ++#endif /* __KCONFIG_FOO_H */ diff --git a/support/kconfig/patches/11-use-mktemp-for-lxdialog.patch b/support/kconfig/patches/11-use-mktemp-for-lxdialog.patch new file mode 100644 index 00000000..387c633a --- /dev/null +++ b/support/kconfig/patches/11-use-mktemp-for-lxdialog.patch @@ -0,0 +1,17 @@ +--- + lxdialog/check-lxdialog.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: kconfig/lxdialog/check-lxdialog.sh +=================================================================== +--- kconfig.orig/lxdialog/check-lxdialog.sh ++++ kconfig/lxdialog/check-lxdialog.sh +@@ -41,7 +41,7 @@ ccflags() + } + + # Temp file, try to clean up after us +-tmp=.lxdialog.tmp ++tmp=$(mktemp) + trap "rm -f $tmp" 0 1 2 3 15 + + # Check if we can link to ncurses diff --git a/support/kconfig/patches/12-fix-glade-file-path.patch b/support/kconfig/patches/12-fix-glade-file-path.patch new file mode 100644 index 00000000..7d5941fc --- /dev/null +++ b/support/kconfig/patches/12-fix-glade-file-path.patch @@ -0,0 +1,17 @@ +--- + gconf.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: kconfig/gconf.c +=================================================================== +--- kconfig.orig/gconf.c ++++ kconfig/gconf.c +@@ -1462,7 +1462,7 @@ int main(int ac, char *av[]) + /* Determine GUI path */ + env = getenv(SRCTREE); + if (env) +- glade_file = g_strconcat(env, "/scripts/kconfig/gconf.glade", NULL); ++ glade_file = g_strconcat(env, "/support/kconfig/gconf.glade", NULL); + else if (av[0][0] == '/') + glade_file = g_strconcat(av[0], ".glade", NULL); + else diff --git a/support/kconfig/patches/14-support-out-of-tree-config.patch b/support/kconfig/patches/14-support-out-of-tree-config.patch new file mode 100644 index 00000000..a3b33ba6 --- /dev/null +++ b/support/kconfig/patches/14-support-out-of-tree-config.patch @@ -0,0 +1,207 @@ +--- + conf.c | 1 + confdata.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++--------------- + util.c | 16 +++++++++++++-- + 3 files changed, 61 insertions(+), 18 deletions(-) + +Index: kconfig/conf.c +=================================================================== +--- kconfig.orig/conf.c ++++ kconfig/conf.c +@@ -565,7 +565,6 @@ int main(int ac, char **av) + } + name = av[optind]; + conf_parse(name); +- //zconfdump(stdout); + if (sync_kconfig) { + name = conf_get_configname(); + if (stat(name, &tmpstat)) { +Index: kconfig/confdata.c +=================================================================== +--- kconfig.orig/confdata.c ++++ kconfig/confdata.c +@@ -13,6 +13,7 @@ + #include + #include + #include ++#include + + #include "lkc.h" + +@@ -76,9 +77,7 @@ const char *conf_get_configname(void) + + const char *conf_get_autoconfig_name(void) + { +- char *name = getenv("KCONFIG_AUTOCONFIG"); +- +- return name ? name : "include/config/auto.conf"; ++ return getenv("KCONFIG_AUTOCONFIG"); + } + + static char *conf_expand_value(const char *in) +@@ -748,6 +747,9 @@ int conf_write(const char *name) + char dirname[PATH_MAX+1], tmpname[PATH_MAX+1], newname[PATH_MAX+1]; + char *env; + ++ if (!name) ++ name = conf_get_configname(); ++ + dirname[0] = 0; + if (name && name[0]) { + struct stat st; +@@ -842,6 +844,7 @@ static int conf_split_config(void) + { + const char *name; + char path[PATH_MAX+1]; ++ char *opwd, *dir, *_name; + char *s, *d, c; + struct symbol *sym; + struct stat sb; +@@ -851,8 +854,20 @@ static int conf_split_config(void) + conf_read_simple(name, S_DEF_AUTO); + sym_calc_value(modules_sym); + +- if (chdir("include/config")) +- return 1; ++ opwd = malloc(256); ++ _name = strdup(name); ++ if (opwd == NULL || _name == NULL) ++ return 1; ++ opwd = getcwd(opwd, 256); ++ dir = dirname(_name); ++ if (dir == NULL) { ++ res = 1; ++ goto err; ++ } ++ if (chdir(dir)) { ++ res = 1; ++ goto err; ++ } + + res = 0; + for_all_symbols(i, sym) { +@@ -945,9 +960,11 @@ static int conf_split_config(void) + close(fd); + } + out: +- if (chdir("../..")) +- return 1; +- ++ if (chdir(opwd)) ++ res = 1; ++err: ++ free(opwd); ++ free(_name); + return res; + } + +@@ -957,25 +974,38 @@ int conf_write_autoconf(void) + const char *name; + FILE *out, *tristate, *out_h; + int i; ++ char dir[PATH_MAX+1], buf[PATH_MAX+1]; ++ char *s; ++ ++ strcpy(dir, conf_get_configname()); ++ s = strrchr(dir, '/'); ++ if (s) ++ s[1] = 0; ++ else ++ dir[0] = 0; + + sym_clear_all_valid(); + +- file_write_dep("include/config/auto.conf.cmd"); ++ sprintf(buf, "%s.config.cmd", dir); ++ file_write_dep(buf); + + if (conf_split_config()) + return 1; + +- out = fopen(".tmpconfig", "w"); ++ sprintf(buf, "%s.tmpconfig", dir); ++ out = fopen(buf, "w"); + if (!out) + return 1; + +- tristate = fopen(".tmpconfig_tristate", "w"); ++ sprintf(buf, "%s.tmpconfig_tristate", dir); ++ tristate = fopen(buf, "w"); + if (!tristate) { + fclose(out); + return 1; + } + +- out_h = fopen(".tmpconfig.h", "w"); ++ sprintf(buf, "%s.tmpconfig.h", dir); ++ out_h = fopen(buf, "w"); + if (!out_h) { + fclose(out); + fclose(tristate); +@@ -1007,19 +1037,22 @@ int conf_write_autoconf(void) + name = getenv("KCONFIG_AUTOHEADER"); + if (!name) + name = "include/generated/autoconf.h"; +- if (rename(".tmpconfig.h", name)) ++ sprintf(buf, "%s.tmpconfig.h", dir); ++ if (rename(buf, name)) + return 1; + name = getenv("KCONFIG_TRISTATE"); + if (!name) + name = "include/config/tristate.conf"; +- if (rename(".tmpconfig_tristate", name)) ++ sprintf(buf, "%s.tmpconfig_tristate", dir); ++ if (rename(buf, name)) + return 1; + name = conf_get_autoconfig_name(); + /* + * This must be the last step, kbuild has a dependency on auto.conf + * and this marks the successful completion of the previous steps. + */ +- if (rename(".tmpconfig", name)) ++ sprintf(buf, "%s.tmpconfig", dir); ++ if (rename(buf, name)) + return 1; + + return 0; +Index: kconfig/util.c +=================================================================== +--- kconfig.orig/util.c ++++ kconfig/util.c +@@ -34,6 +34,8 @@ struct file *file_lookup(const char *nam + /* write a dependency file as used by kbuild to track dependencies */ + int file_write_dep(const char *name) + { ++ char *str; ++ char buf[PATH_MAX+1], buf2[PATH_MAX+1], dir[PATH_MAX+1]; + struct symbol *sym, *env_sym; + struct expr *e; + struct file *file; +@@ -41,7 +43,16 @@ int file_write_dep(const char *name) + + if (!name) + name = ".kconfig.d"; +- out = fopen("..config.tmp", "w"); ++ ++ strcpy(dir, conf_get_configname()); ++ str = strrchr(dir, '/'); ++ if (str) ++ str[1] = 0; ++ else ++ dir[0] = 0; ++ ++ sprintf(buf, "%s..config.tmp", dir); ++ out = fopen(buf, "w"); + if (!out) + return 1; + fprintf(out, "deps_config := \\\n"); +@@ -72,7 +83,8 @@ int file_write_dep(const char *name) + + fprintf(out, "\n$(deps_config): ;\n"); + fclose(out); +- rename("..config.tmp", name); ++ sprintf(buf2, "%s%s", dir, name); ++ rename(buf, buf2); + return 0; + } + diff --git a/support/kconfig/patches/16-fix-space-to-de-select-options.patch b/support/kconfig/patches/16-fix-space-to-de-select-options.patch new file mode 100644 index 00000000..08f7ec5d --- /dev/null +++ b/support/kconfig/patches/16-fix-space-to-de-select-options.patch @@ -0,0 +1,41 @@ +commit 6faa447282fe90d42e0513af46c13f20b4b327d4 +Author: Yann E. MORIN +Date: Wed Nov 13 22:45:02 2013 +0100 + + support/kconfig: fix 'space' to (de)select options + + In case a menu has comment without letters/numbers (eg. characters + matching the regexp '^[^[:alpha:][:digit:]]+$', for example - or *), + hitting space will cycle through those comments, rather than + selecting/deselecting the currently-highlighted option. + + This is the behaviour of hitting any letter/digit: jump to the next + option which prompt starts with that letter. The only letters that + do not behave as such are 'y' 'm' and 'n'. Prompts that start with + one of those three letters are instead matched on the first letter + that is not 'y', 'm' or 'n'. + + Fix that by treating 'space' as we treat y/m/n, ie. as an action key, + not as shortcut to jump to prompt. + + Signed-off-by: "Yann E. MORIN" + Cc: Thomas Petazzoni + Cc: Peter Korsgaard + Cc: Samuel Martin + Cc: Thomas De Schampheleire + --- + Note: I'll be running this upstream soonish. + +Index: kconfig/lxdialog/menubox.c +=================================================================== +--- kconfig.orig/lxdialog/menubox.c ++++ kconfig/lxdialog/menubox.c +@@ -285,7 +285,7 @@ do_resize: + if (key < 256 && isalpha(key)) + key = tolower(key); + +- if (strchr("ynmh", key)) ++ if (strchr("ynmh ", key)) + i = max_choice; + else { + for (i = choice + 1; i < max_choice; i++) { diff --git a/support/kconfig/patches/17-backport-kecho.patch b/support/kconfig/patches/17-backport-kecho.patch new file mode 100644 index 00000000..9d138766 --- /dev/null +++ b/support/kconfig/patches/17-backport-kecho.patch @@ -0,0 +1,26 @@ +This commit added kecho to scripts/Kbuild.include (and doc). +Backported just Kbuild.include part to Makefile + +commit 5410ecc0def8955ab99810c5626cc7e156991896 +Author: Mike Frysinger +Date: Thu Nov 6 03:31:34 2008 -0500 + + kbuild: introduce $(kecho) convenience echo + +Index: kconfig/Makefile +=================================================================== +--- kconfig.orig/Makefile ++++ kconfig/Makefile +@@ -6,6 +6,12 @@ + PHONY += xconfig gconfig menuconfig config syncconfig update-po-config \ + localmodconfig localyesconfig + ++# Easy method for doing a status message ++ kecho := : ++ quiet_kecho := echo ++silent_kecho := : ++kecho := $($(quiet)kecho) ++ + ifdef KBUILD_KCONFIG + Kconfig := $(KBUILD_KCONFIG) + else diff --git a/support/kconfig/patches/18-merge-config.sh-create-temporary-files-in-tmp.patch b/support/kconfig/patches/18-merge-config.sh-create-temporary-files-in-tmp.patch new file mode 100644 index 00000000..f2a261f3 --- /dev/null +++ b/support/kconfig/patches/18-merge-config.sh-create-temporary-files-in-tmp.patch @@ -0,0 +1,27 @@ +commit 0f56304521db42bd2c05867fd78a247104a4ad95 +Author: Henrique Marks +Date: Mon, 7 Dec 2015 12:08:45 -0200 + + merge_config.sh: create temporary files in /tmp + + Creating temporary files in /tmp (or the path pointed by $TMPDIR) allows the + buildroot top directory to be read-only and shareable between multible builds. + This follows what other scripts do, e.g. check-kernel-headers.sh. + + Signed-off-by: Henrique Marks + Signed-off-by: Carlos Santos + Signed-off-by: Peter Korsgaard + +Index: kconfig/merge_config.sh +=================================================================== +--- kconfig.orig/merge_config.sh ++++ kconfig/merge_config.sh +@@ -100,7 +100,7 @@ fi + + MERGE_LIST=$* + SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(CONFIG_[a-zA-Z0-9_]*\)[= ].*/\2/p" +-TMP_FILE=$(mktemp ./.tmp.config.XXXXXXXXXX) ++TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX) + + echo "Using $INITFILE as base" + cat $INITFILE > $TMP_FILE diff --git a/support/kconfig/patches/19-merge_config.sh-add-br2-external-support.patch b/support/kconfig/patches/19-merge_config.sh-add-br2-external-support.patch new file mode 100644 index 00000000..1d0ef323 --- /dev/null +++ b/support/kconfig/patches/19-merge_config.sh-add-br2-external-support.patch @@ -0,0 +1,47 @@ +commit 28fac3973b3c693c453594b007c08c1e1e5c4af3 +Author: Ilya Kuzmich +Date: Tue, 9 Jan 2018 14:37:43 +0300 + + merge_config.sh: add br2-external support + + Pass BR2_EXTERNAL value via -e option. + This will prevent merge_config.sh from silently eating any symbols defined in + external trees on a clean buildroot tree invocation. + + Signed-off-by: Ilya Kuzmich + Acked-by: "Yann E. MORIN" + Signed-off-by: Peter Korsgaard + +Index: kconfig/merge_config.sh +=================================================================== +--- kconfig.orig/merge_config.sh ++++ kconfig/merge_config.sh +@@ -33,6 +33,7 @@ usage() { + echo " -n use allnoconfig instead of alldefconfig" + echo " -r list redundant entries when merging fragments" + echo " -O dir to put generated output files. Consider setting \$KCONFIG_CONFIG instead." ++ echo " -e colon-separated list of br2-external trees to use (optional)" + } + + RUNMAKE=true +@@ -71,6 +72,11 @@ while true; do + shift 2 + continue + ;; ++ "-e") ++ EXTERNAL_ARG="BR2_EXTERNAL=$2" ++ shift 2 ++ continue ++ ;; + *) + break + ;; +@@ -151,7 +157,7 @@ fi + # Use the merged file as the starting point for: + # alldefconfig: Fills in any missing symbols with Kconfig default + # allnoconfig: Fills in any missing symbols with # CONFIG_* is not set +-make KCONFIG_ALLCONFIG=$TMP_FILE $OUTPUT_ARG $ALLTARGET ++make KCONFIG_ALLCONFIG=$TMP_FILE $EXTERNAL_ARG $OUTPUT_ARG $ALLTARGET + + + # Check all specified config values took (might have missed-dependency issues) diff --git a/support/kconfig/patches/20-merge_config.sh-Allow-to-define-config-prefix.patch b/support/kconfig/patches/20-merge_config.sh-Allow-to-define-config-prefix.patch new file mode 100644 index 00000000..645043b1 --- /dev/null +++ b/support/kconfig/patches/20-merge_config.sh-Allow-to-define-config-prefix.patch @@ -0,0 +1,31 @@ +Index: kconfig/merge_config.sh +=================================================================== +--- kconfig.orig/merge_config.sh ++++ kconfig/merge_config.sh +@@ -34,12 +34,16 @@ usage() { + echo " -r list redundant entries when merging fragments" + echo " -O dir to put generated output files. Consider setting \$KCONFIG_CONFIG instead." + echo " -e colon-separated list of br2-external trees to use (optional)" ++ echo ++ echo "Used prefix: '$CONFIG_PREFIX'. You can redefine it with \$CONFIG_ ++ environment variable." + } + + RUNMAKE=true + ALLTARGET=alldefconfig + WARNREDUN=false + OUTPUT=. ++CONFIG_PREFIX=${CONFIG_-CONFIG_} + + while true; do + case $1 in +@@ -105,7 +109,8 @@ if [ ! -r "$INITFILE" ]; then + fi + + MERGE_LIST=$* +-SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(CONFIG_[a-zA-Z0-9_]*\)[= ].*/\2/p" ++SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)[= ].*/\2/p" ++ + TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX) + + echo "Using $INITFILE as base" diff --git a/support/kconfig/patches/21-Avoid-false-positive-matches-from-comment-lines.patch b/support/kconfig/patches/21-Avoid-false-positive-matches-from-comment-lines.patch new file mode 100644 index 00000000..c11144e4 --- /dev/null +++ b/support/kconfig/patches/21-Avoid-false-positive-matches-from-comment-lines.patch @@ -0,0 +1,32 @@ +Index: kconfig/merge_config.sh +=================================================================== +--- kconfig.orig/merge_config.sh ++++ kconfig/merge_config.sh +@@ -109,7 +109,8 @@ if [ ! -r "$INITFILE" ]; then + fi + + MERGE_LIST=$* +-SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)[= ].*/\2/p" ++SED_CONFIG_EXP1="s/^\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)=.*/\1/p" ++SED_CONFIG_EXP2="s/^# \(${CONFIG_PREFIX}[a-zA-Z0-9_]*\) is not set$/\1/p" + + TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX) + +@@ -123,7 +124,7 @@ for MERGE_FILE in $MERGE_LIST ; do + echo "The merge file '$MERGE_FILE' does not exist. Exit." >&2 + exit 1 + fi +- CFG_LIST=$(sed -n "$SED_CONFIG_EXP" $MERGE_FILE) ++ CFG_LIST=$(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $MERGE_FILE) + + for CFG in $CFG_LIST ; do + grep -q -w $CFG $TMP_FILE || continue +@@ -166,7 +167,7 @@ make KCONFIG_ALLCONFIG=$TMP_FILE $EXTERN + + + # Check all specified config values took (might have missed-dependency issues) +-for CFG in $(sed -n "$SED_CONFIG_EXP" $TMP_FILE); do ++for CFG in $(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $TMP_FILE); do + + REQUESTED_VAL=$(grep -w -e "$CFG" $TMP_FILE) + ACTUAL_VAL=$(grep -w -e "$CFG" "$KCONFIG_CONFIG") diff --git a/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch b/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch new file mode 100644 index 00000000..41081bb4 --- /dev/null +++ b/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch @@ -0,0 +1,43 @@ +From 3ae91337b53fa3ccf0bad7f181fcaf483fab22ee Mon Sep 17 00:00:00 2001 +From: Robert Marko +Date: Wed, 3 Apr 2024 14:18:07 +0200 +Subject: [PATCH] kconfig/lxdialog: fix check() with GCC14 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +GCC14 now treats implicit int types as error so when check() from +check-lxdialog.sh is called to check whether we can link against ncurses +it will fail silently and the help text indicating to install ncurses is +printed. + +However, this is not due to missing ncurses but once the stderr redirect +to /dev/null is removed we can see the root cause: +:2:1: error: return type defaults to ‘int’ [-Wimplicit-int] + +So, in order for menuconfig to work with GCC14 lets just specify the +return type of main() as int. + +Signed-off-by: Robert Marko +Reviewed-by: Petr Vorel +Tested-by: Petr Vorel +--- + kconfig/lxdialog/check-lxdialog.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/kconfig/lxdialog/check-lxdialog.sh b/kconfig/lxdialog/check-lxdialog.sh +index 16cd9a3186..27d6c30a57 100755 +--- a/kconfig/lxdialog/check-lxdialog.sh ++++ b/kconfig/lxdialog/check-lxdialog.sh +@@ -48,7 +48,7 @@ trap "rm -f $tmp" 0 1 2 3 15 + check() { + $cc -x c - -o $tmp 2>/dev/null <<'EOF' + #include CURSES_LOC +-main() {} ++int main() {} + EOF + if [ $? != 0 ]; then + echo " *** Unable to find the ncurses libraries or the" 1>&2 +-- +2.44.0 + diff --git a/support/kconfig/patches/series b/support/kconfig/patches/series new file mode 100644 index 00000000..f120e323 --- /dev/null +++ b/support/kconfig/patches/series @@ -0,0 +1,13 @@ +01-kconfig-kernel-to-buildroot.patch +06-br-build-system-integration.patch +10-br-build-system.patch +11-use-mktemp-for-lxdialog.patch +12-fix-glade-file-path.patch +14-support-out-of-tree-config.patch +16-fix-space-to-de-select-options.patch +17-backport-kecho.patch +18-merge-config.sh-create-temporary-files-in-tmp.patch +19-merge_config.sh-add-br2-external-support.patch +20-merge_config.sh-Allow-to-define-config-prefix.patch +21-Avoid-false-positive-matches-from-comment-lines.patch +22-kconfig-lxdialog-fix-check-with-GCC14.patch diff --git a/support/kconfig/qconf.cc b/support/kconfig/qconf.cc new file mode 100644 index 00000000..7896b584 --- /dev/null +++ b/support/kconfig/qconf.cc @@ -0,0 +1,1879 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Copyright (C) 2015 Boris Barbulovski + * Released under the terms of the GNU GPL v2.0. + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "lkc.h" +#include "qconf.h" + +#include "qconf.moc" +#include "images.c" + +#ifdef _ +# undef _ +# define _ qgettext +#endif + +static QApplication *configApp; +static ConfigSettings *configSettings; + +QAction *ConfigMainWindow::saveAction; + +static inline QString qgettext(const char* str) +{ + return QString::fromLocal8Bit(gettext(str)); +} + +static inline QString qgettext(const QString& str) +{ + return QString::fromLocal8Bit(gettext(str.toLatin1())); +} + +ConfigSettings::ConfigSettings() + : QSettings("buildroot.org", "qconf") +{ +} + +/** + * Reads a list of integer values from the application settings. + */ +QList ConfigSettings::readSizes(const QString& key, bool *ok) +{ + QList result; + + if (contains(key)) + { + QStringList entryList = value(key).toStringList(); + QStringList::Iterator it; + + for (it = entryList.begin(); it != entryList.end(); ++it) + result.push_back((*it).toInt()); + + *ok = true; + } + else + *ok = false; + + return result; +} + +/** + * Writes a list of integer values to the application settings. + */ +bool ConfigSettings::writeSizes(const QString& key, const QList& value) +{ + QStringList stringList; + QList::ConstIterator it; + + for (it = value.begin(); it != value.end(); ++it) + stringList.push_back(QString::number(*it)); + setValue(key, stringList); + + return true; +} + + +/* + * set the new data + * TODO check the value + */ +void ConfigItem::okRename(int col) +{ +} + +/* + * update the displayed of a menu entry + */ +void ConfigItem::updateMenu(void) +{ + ConfigList* list; + struct symbol* sym; + struct property *prop; + QString prompt; + int type; + tristate expr; + + list = listView(); + if (goParent) { + setPixmap(promptColIdx, list->menuBackPix); + prompt = ".."; + goto set_prompt; + } + + sym = menu->sym; + prop = menu->prompt; + prompt = _(menu_get_prompt(menu)); + + if (prop) switch (prop->type) { + case P_MENU: + if (list->mode == singleMode || list->mode == symbolMode) { + /* a menuconfig entry is displayed differently + * depending whether it's at the view root or a child. + */ + if (sym && list->rootEntry == menu) + break; + setPixmap(promptColIdx, list->menuPix); + } else { + if (sym) + break; + setPixmap(promptColIdx, QIcon()); + } + goto set_prompt; + case P_COMMENT: + setPixmap(promptColIdx, QIcon()); + goto set_prompt; + default: + ; + } + if (!sym) + goto set_prompt; + + setText(nameColIdx, QString::fromLocal8Bit(sym->name)); + + type = sym_get_type(sym); + switch (type) { + case S_BOOLEAN: + case S_TRISTATE: + char ch; + + if (!sym_is_changable(sym) && list->optMode == normalOpt) { + setPixmap(promptColIdx, QIcon()); + setText(noColIdx, QString::null); + setText(modColIdx, QString::null); + setText(yesColIdx, QString::null); + break; + } + expr = sym_get_tristate_value(sym); + switch (expr) { + case yes: + if (sym_is_choice_value(sym) && type == S_BOOLEAN) + setPixmap(promptColIdx, list->choiceYesPix); + else + setPixmap(promptColIdx, list->symbolYesPix); + setText(yesColIdx, "Y"); + ch = 'Y'; + break; + case mod: + setPixmap(promptColIdx, list->symbolModPix); + setText(modColIdx, "M"); + ch = 'M'; + break; + default: + if (sym_is_choice_value(sym) && type == S_BOOLEAN) + setPixmap(promptColIdx, list->choiceNoPix); + else + setPixmap(promptColIdx, list->symbolNoPix); + setText(noColIdx, "N"); + ch = 'N'; + break; + } + if (expr != no) + setText(noColIdx, sym_tristate_within_range(sym, no) ? "_" : 0); + if (expr != mod) + setText(modColIdx, sym_tristate_within_range(sym, mod) ? "_" : 0); + if (expr != yes) + setText(yesColIdx, sym_tristate_within_range(sym, yes) ? "_" : 0); + + setText(dataColIdx, QChar(ch)); + break; + case S_INT: + case S_HEX: + case S_STRING: + const char* data; + + data = sym_get_string_value(sym); + + setText(dataColIdx, data); + if (type == S_STRING) + prompt = QString("%1: %2").arg(prompt).arg(data); + else + prompt = QString("(%2) %1").arg(prompt).arg(data); + break; + } + if (!sym_has_value(sym) && visible) + prompt += _(" (NEW)"); +set_prompt: + setText(promptColIdx, prompt); +} + +void ConfigItem::testUpdateMenu(bool v) +{ + ConfigItem* i; + + visible = v; + if (!menu) + return; + + sym_calc_value(menu->sym); + if (menu->flags & MENU_CHANGED) { + /* the menu entry changed, so update all list items */ + menu->flags &= ~MENU_CHANGED; + for (i = (ConfigItem*)menu->data; i; i = i->nextItem) + i->updateMenu(); + } else if (listView()->updateAll) + updateMenu(); +} + + +/* + * construct a menu entry + */ +void ConfigItem::init(void) +{ + if (menu) { + ConfigList* list = listView(); + nextItem = (ConfigItem*)menu->data; + menu->data = this; + + if (list->mode != fullMode) + setExpanded(true); + sym_calc_value(menu->sym); + } + updateMenu(); +} + +/* + * destruct a menu entry + */ +ConfigItem::~ConfigItem(void) +{ + if (menu) { + ConfigItem** ip = (ConfigItem**)&menu->data; + for (; *ip; ip = &(*ip)->nextItem) { + if (*ip == this) { + *ip = nextItem; + break; + } + } + } +} + +ConfigLineEdit::ConfigLineEdit(ConfigView* parent) + : Parent(parent) +{ + connect(this, SIGNAL(editingFinished()), SLOT(hide())); +} + +void ConfigLineEdit::show(ConfigItem* i) +{ + item = i; + if (sym_get_string_value(item->menu->sym)) + setText(QString::fromLocal8Bit(sym_get_string_value(item->menu->sym))); + else + setText(QString::null); + Parent::show(); + setFocus(); +} + +void ConfigLineEdit::keyPressEvent(QKeyEvent* e) +{ + switch (e->key()) { + case Qt::Key_Escape: + break; + case Qt::Key_Return: + case Qt::Key_Enter: + sym_set_string_value(item->menu->sym, text().toLatin1()); + parent()->updateList(item); + break; + default: + Parent::keyPressEvent(e); + return; + } + e->accept(); + parent()->list->setFocus(); + hide(); +} + +ConfigList::ConfigList(ConfigView* p, const char *name) + : Parent(p), + updateAll(false), + symbolYesPix(xpm_symbol_yes), symbolModPix(xpm_symbol_mod), symbolNoPix(xpm_symbol_no), + choiceYesPix(xpm_choice_yes), choiceNoPix(xpm_choice_no), + menuPix(xpm_menu), menuInvPix(xpm_menu_inv), menuBackPix(xpm_menuback), voidPix(xpm_void), + showName(false), showRange(false), showData(false), mode(singleMode), optMode(normalOpt), + rootEntry(0), headerPopup(0) +{ + int i; + + setObjectName(name); + setSortingEnabled(false); + setRootIsDecorated(true); + + setVerticalScrollMode(ScrollPerPixel); + setHorizontalScrollMode(ScrollPerPixel); + + setHeaderLabels(QStringList() << _("Option") << _("Name") << "N" << "M" << "Y" << _("Value")); + + connect(this, SIGNAL(itemSelectionChanged(void)), + SLOT(updateSelection(void))); + + if (name) { + configSettings->beginGroup(name); + showName = configSettings->value("/showName", false).toBool(); + showRange = configSettings->value("/showRange", false).toBool(); + showData = configSettings->value("/showData", false).toBool(); + optMode = (enum optionMode)configSettings->value("/optionMode", 0).toInt(); + configSettings->endGroup(); + connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); + } + + addColumn(promptColIdx); + + reinit(); +} + +bool ConfigList::menuSkip(struct menu *menu) +{ + if (optMode == normalOpt && menu_is_visible(menu)) + return false; + if (optMode == promptOpt && menu_has_prompt(menu)) + return false; + if (optMode == allOpt) + return false; + return true; +} + +void ConfigList::reinit(void) +{ + removeColumn(dataColIdx); + removeColumn(yesColIdx); + removeColumn(modColIdx); + removeColumn(noColIdx); + removeColumn(nameColIdx); + + if (showName) + addColumn(nameColIdx); + if (showRange) { + addColumn(noColIdx); + addColumn(modColIdx); + addColumn(yesColIdx); + } + if (showData) + addColumn(dataColIdx); + + updateListAll(); +} + +void ConfigList::saveSettings(void) +{ + if (!objectName().isEmpty()) { + configSettings->beginGroup(objectName()); + configSettings->setValue("/showName", showName); + configSettings->setValue("/showRange", showRange); + configSettings->setValue("/showData", showData); + configSettings->setValue("/optionMode", (int)optMode); + configSettings->endGroup(); + } +} + +ConfigItem* ConfigList::findConfigItem(struct menu *menu) +{ + ConfigItem* item = (ConfigItem*)menu->data; + + for (; item; item = item->nextItem) { + if (this == item->listView()) + break; + } + + return item; +} + +void ConfigList::updateSelection(void) +{ + struct menu *menu; + enum prop_type type; + + if (selectedItems().count() == 0) + return; + + ConfigItem* item = (ConfigItem*)selectedItems().first(); + if (!item) + return; + + menu = item->menu; + emit menuChanged(menu); + if (!menu) + return; + type = menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (mode == menuMode && type == P_MENU) + emit menuSelected(menu); +} + +void ConfigList::updateList(ConfigItem* item) +{ + ConfigItem* last = 0; + + if (!rootEntry) { + if (mode != listMode) + goto update; + QTreeWidgetItemIterator it(this); + ConfigItem* item; + + while (*it) { + item = (ConfigItem*)(*it); + if (!item->menu) + continue; + item->testUpdateMenu(menu_is_visible(item->menu)); + + ++it; + } + return; + } + + if (rootEntry != &rootmenu && (mode == singleMode || + (mode == symbolMode && rootEntry->parent != &rootmenu))) { + item = (ConfigItem *)topLevelItem(0); + if (!item) + item = new ConfigItem(this, 0, true); + last = item; + } + if ((mode == singleMode || (mode == symbolMode && !(rootEntry->flags & MENU_ROOT))) && + rootEntry->sym && rootEntry->prompt) { + item = last ? last->nextSibling() : firstChild(); + if (!item) + item = new ConfigItem(this, last, rootEntry, true); + else + item->testUpdateMenu(true); + + updateMenuList(item, rootEntry); + update(); + resizeColumnToContents(0); + return; + } +update: + updateMenuList(this, rootEntry); + update(); + resizeColumnToContents(0); +} + +void ConfigList::setValue(ConfigItem* item, tristate val) +{ + struct symbol* sym; + int type; + tristate oldval; + + sym = item->menu ? item->menu->sym : 0; + if (!sym) + return; + + type = sym_get_type(sym); + switch (type) { + case S_BOOLEAN: + case S_TRISTATE: + oldval = sym_get_tristate_value(sym); + + if (!sym_set_tristate_value(sym, val)) + return; + if (oldval == no && item->menu->list) + item->setExpanded(true); + parent()->updateList(item); + break; + } +} + +void ConfigList::changeValue(ConfigItem* item) +{ + struct symbol* sym; + struct menu* menu; + int type, oldexpr, newexpr; + + menu = item->menu; + if (!menu) + return; + sym = menu->sym; + if (!sym) { + if (item->menu->list) + item->setExpanded(!item->isExpanded()); + return; + } + + type = sym_get_type(sym); + switch (type) { + case S_BOOLEAN: + case S_TRISTATE: + oldexpr = sym_get_tristate_value(sym); + newexpr = sym_toggle_tristate_value(sym); + if (item->menu->list) { + if (oldexpr == newexpr) + item->setExpanded(!item->isExpanded()); + else if (oldexpr == no) + item->setExpanded(true); + } + if (oldexpr != newexpr) + parent()->updateList(item); + break; + case S_INT: + case S_HEX: + case S_STRING: + parent()->lineEdit->show(item); + break; + } +} + +void ConfigList::setRootMenu(struct menu *menu) +{ + enum prop_type type; + + if (rootEntry == menu) + return; + type = menu && menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (type != P_MENU) + return; + updateMenuList(this, 0); + rootEntry = menu; + updateListAll(); + if (currentItem()) { + currentItem()->setSelected(hasFocus()); + scrollToItem(currentItem()); + } +} + +void ConfigList::setParentMenu(void) +{ + ConfigItem* item; + struct menu *oldroot; + + oldroot = rootEntry; + if (rootEntry == &rootmenu) + return; + setRootMenu(menu_get_parent_menu(rootEntry->parent)); + + QTreeWidgetItemIterator it(this); + while (*it) { + item = (ConfigItem *)(*it); + if (item->menu == oldroot) { + setCurrentItem(item); + scrollToItem(item); + break; + } + + ++it; + } +} + +/* + * update all the children of a menu entry + * removes/adds the entries from the parent widget as necessary + * + * parent: either the menu list widget or a menu entry widget + * menu: entry to be updated + */ +void ConfigList::updateMenuList(ConfigItem *parent, struct menu* menu) +{ + struct menu* child; + ConfigItem* item; + ConfigItem* last; + bool visible; + enum prop_type type; + + if (!menu) { + while (parent->childCount() > 0) + { + delete parent->takeChild(0); + } + + return; + } + + last = parent->firstChild(); + if (last && !last->goParent) + last = 0; + for (child = menu->list; child; child = child->next) { + item = last ? last->nextSibling() : parent->firstChild(); + type = child->prompt ? child->prompt->type : P_UNKNOWN; + + switch (mode) { + case menuMode: + if (!(child->flags & MENU_ROOT)) + goto hide; + break; + case symbolMode: + if (child->flags & MENU_ROOT) + goto hide; + break; + default: + break; + } + + visible = menu_is_visible(child); + if (!menuSkip(child)) { + if (!child->sym && !child->list && !child->prompt) + continue; + if (!item || item->menu != child) + item = new ConfigItem(parent, last, child, visible); + else + item->testUpdateMenu(visible); + + if (mode == fullMode || mode == menuMode || type != P_MENU) + updateMenuList(item, child); + else + updateMenuList(item, 0); + last = item; + continue; + } + hide: + if (item && item->menu == child) { + last = parent->firstChild(); + if (last == item) + last = 0; + else while (last->nextSibling() != item) + last = last->nextSibling(); + delete item; + } + } +} + +void ConfigList::updateMenuList(ConfigList *parent, struct menu* menu) +{ + struct menu* child; + ConfigItem* item; + ConfigItem* last; + bool visible; + enum prop_type type; + + if (!menu) { + while (parent->topLevelItemCount() > 0) + { + delete parent->takeTopLevelItem(0); + } + + return; + } + + last = (ConfigItem*)parent->topLevelItem(0); + if (last && !last->goParent) + last = 0; + for (child = menu->list; child; child = child->next) { + item = last ? last->nextSibling() : (ConfigItem*)parent->topLevelItem(0); + type = child->prompt ? child->prompt->type : P_UNKNOWN; + + switch (mode) { + case menuMode: + if (!(child->flags & MENU_ROOT)) + goto hide; + break; + case symbolMode: + if (child->flags & MENU_ROOT) + goto hide; + break; + default: + break; + } + + visible = menu_is_visible(child); + if (!menuSkip(child)) { + if (!child->sym && !child->list && !child->prompt) + continue; + if (!item || item->menu != child) + item = new ConfigItem(parent, last, child, visible); + else + item->testUpdateMenu(visible); + + if (mode == fullMode || mode == menuMode || type != P_MENU) + updateMenuList(item, child); + else + updateMenuList(item, 0); + last = item; + continue; + } + hide: + if (item && item->menu == child) { + last = (ConfigItem*)parent->topLevelItem(0); + if (last == item) + last = 0; + else while (last->nextSibling() != item) + last = last->nextSibling(); + delete item; + } + } +} + +void ConfigList::keyPressEvent(QKeyEvent* ev) +{ + QTreeWidgetItem* i = currentItem(); + ConfigItem* item; + struct menu *menu; + enum prop_type type; + + if (ev->key() == Qt::Key_Escape && mode != fullMode && mode != listMode) { + emit parentSelected(); + ev->accept(); + return; + } + + if (!i) { + Parent::keyPressEvent(ev); + return; + } + item = (ConfigItem*)i; + + switch (ev->key()) { + case Qt::Key_Return: + case Qt::Key_Enter: + if (item->goParent) { + emit parentSelected(); + break; + } + menu = item->menu; + if (!menu) + break; + type = menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (type == P_MENU && rootEntry != menu && + mode != fullMode && mode != menuMode) { + emit menuSelected(menu); + break; + } + case Qt::Key_Space: + changeValue(item); + break; + case Qt::Key_N: + setValue(item, no); + break; + case Qt::Key_M: + setValue(item, mod); + break; + case Qt::Key_Y: + setValue(item, yes); + break; + default: + Parent::keyPressEvent(ev); + return; + } + ev->accept(); +} + +void ConfigList::mousePressEvent(QMouseEvent* e) +{ + //QPoint p(contentsToViewport(e->pos())); + //printf("contentsMousePressEvent: %d,%d\n", p.x(), p.y()); + Parent::mousePressEvent(e); +} + +void ConfigList::mouseReleaseEvent(QMouseEvent* e) +{ + QPoint p = e->pos(); + ConfigItem* item = (ConfigItem*)itemAt(p); + struct menu *menu; + enum prop_type ptype; + QIcon icon; + int idx, x; + + if (!item) + goto skip; + + menu = item->menu; + x = header()->offset() + p.x(); + idx = header()->logicalIndexAt(x); + switch (idx) { + case promptColIdx: + icon = item->pixmap(promptColIdx); + if (!icon.isNull()) { + int off = header()->sectionPosition(0) + visualRect(indexAt(p)).x() + 4; // 4 is Hardcoded image offset. There might be a way to do it properly. + if (x >= off && x < off + icon.availableSizes().first().width()) { + if (item->goParent) { + emit parentSelected(); + break; + } else if (!menu) + break; + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (ptype == P_MENU && rootEntry != menu && + mode != fullMode && mode != menuMode) + emit menuSelected(menu); + else + changeValue(item); + } + } + break; + case noColIdx: + setValue(item, no); + break; + case modColIdx: + setValue(item, mod); + break; + case yesColIdx: + setValue(item, yes); + break; + case dataColIdx: + changeValue(item); + break; + } + +skip: + //printf("contentsMouseReleaseEvent: %d,%d\n", p.x(), p.y()); + Parent::mouseReleaseEvent(e); +} + +void ConfigList::mouseMoveEvent(QMouseEvent* e) +{ + //QPoint p(contentsToViewport(e->pos())); + //printf("contentsMouseMoveEvent: %d,%d\n", p.x(), p.y()); + Parent::mouseMoveEvent(e); +} + +void ConfigList::mouseDoubleClickEvent(QMouseEvent* e) +{ + QPoint p = e->pos(); // TODO: Check if this works(was contentsToViewport). + ConfigItem* item = (ConfigItem*)itemAt(p); + struct menu *menu; + enum prop_type ptype; + + if (!item) + goto skip; + if (item->goParent) { + emit parentSelected(); + goto skip; + } + menu = item->menu; + if (!menu) + goto skip; + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (ptype == P_MENU && (mode == singleMode || mode == symbolMode)) + emit menuSelected(menu); + else if (menu->sym) + changeValue(item); + +skip: + //printf("contentsMouseDoubleClickEvent: %d,%d\n", p.x(), p.y()); + Parent::mouseDoubleClickEvent(e); +} + +void ConfigList::focusInEvent(QFocusEvent *e) +{ + struct menu *menu = NULL; + + Parent::focusInEvent(e); + + ConfigItem* item = (ConfigItem *)currentItem(); + if (item) { + item->setSelected(true); + menu = item->menu; + } + emit gotFocus(menu); +} + +void ConfigList::contextMenuEvent(QContextMenuEvent *e) +{ + if (e->y() <= header()->geometry().bottom()) { + if (!headerPopup) { + QAction *action; + + headerPopup = new QMenu(this); + action = new QAction(_("Show Name"), this); + action->setCheckable(true); + connect(action, SIGNAL(toggled(bool)), + parent(), SLOT(setShowName(bool))); + connect(parent(), SIGNAL(showNameChanged(bool)), + action, SLOT(setOn(bool))); + action->setChecked(showName); + headerPopup->addAction(action); + action = new QAction(_("Show Range"), this); + action->setCheckable(true); + connect(action, SIGNAL(toggled(bool)), + parent(), SLOT(setShowRange(bool))); + connect(parent(), SIGNAL(showRangeChanged(bool)), + action, SLOT(setOn(bool))); + action->setChecked(showRange); + headerPopup->addAction(action); + action = new QAction(_("Show Data"), this); + action->setCheckable(true); + connect(action, SIGNAL(toggled(bool)), + parent(), SLOT(setShowData(bool))); + connect(parent(), SIGNAL(showDataChanged(bool)), + action, SLOT(setOn(bool))); + action->setChecked(showData); + headerPopup->addAction(action); + } + headerPopup->exec(e->globalPos()); + e->accept(); + } else + e->ignore(); +} + +ConfigView*ConfigView::viewList; +QAction *ConfigView::showNormalAction; +QAction *ConfigView::showAllAction; +QAction *ConfigView::showPromptAction; + +ConfigView::ConfigView(QWidget* parent, const char *name) + : Parent(parent) +{ + setObjectName(name); + QVBoxLayout *verticalLayout = new QVBoxLayout(this); + verticalLayout->setContentsMargins(0, 0, 0, 0); + + list = new ConfigList(this); + verticalLayout->addWidget(list); + lineEdit = new ConfigLineEdit(this); + lineEdit->hide(); + verticalLayout->addWidget(lineEdit); + + this->nextView = viewList; + viewList = this; +} + +ConfigView::~ConfigView(void) +{ + ConfigView** vp; + + for (vp = &viewList; *vp; vp = &(*vp)->nextView) { + if (*vp == this) { + *vp = nextView; + break; + } + } +} + +void ConfigView::setOptionMode(QAction *act) +{ + if (act == showNormalAction) + list->optMode = normalOpt; + else if (act == showAllAction) + list->optMode = allOpt; + else + list->optMode = promptOpt; + + list->updateListAll(); +} + +void ConfigView::setShowName(bool b) +{ + if (list->showName != b) { + list->showName = b; + list->reinit(); + emit showNameChanged(b); + } +} + +void ConfigView::setShowRange(bool b) +{ + if (list->showRange != b) { + list->showRange = b; + list->reinit(); + emit showRangeChanged(b); + } +} + +void ConfigView::setShowData(bool b) +{ + if (list->showData != b) { + list->showData = b; + list->reinit(); + emit showDataChanged(b); + } +} + +void ConfigList::setAllOpen(bool open) +{ + QTreeWidgetItemIterator it(this); + + while (*it) { + (*it)->setExpanded(open); + + ++it; + } +} + +void ConfigView::updateList(ConfigItem* item) +{ + ConfigView* v; + + for (v = viewList; v; v = v->nextView) + v->list->updateList(item); +} + +void ConfigView::updateListAll(void) +{ + ConfigView* v; + + for (v = viewList; v; v = v->nextView) + v->list->updateListAll(); +} + +ConfigInfoView::ConfigInfoView(QWidget* parent, const char *name) + : Parent(parent), sym(0), _menu(0) +{ + setObjectName(name); + + + if (!objectName().isEmpty()) { + configSettings->beginGroup(objectName()); + setShowDebug(configSettings->value("/showDebug", false).toBool()); + configSettings->endGroup(); + connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); + } +} + +void ConfigInfoView::saveSettings(void) +{ + if (!objectName().isEmpty()) { + configSettings->beginGroup(objectName()); + configSettings->setValue("/showDebug", showDebug()); + configSettings->endGroup(); + } +} + +void ConfigInfoView::setShowDebug(bool b) +{ + if (_showDebug != b) { + _showDebug = b; + if (_menu) + menuInfo(); + else if (sym) + symbolInfo(); + emit showDebugChanged(b); + } +} + +void ConfigInfoView::setInfo(struct menu *m) +{ + if (_menu == m) + return; + _menu = m; + sym = NULL; + if (!_menu) + clear(); + else + menuInfo(); +} + +void ConfigInfoView::symbolInfo(void) +{ + QString str; + + str += "Symbol: "; + str += print_filter(sym->name); + str += "

    value: "; + str += print_filter(sym_get_string_value(sym)); + str += "
    visibility: "; + str += sym->visible == yes ? "y" : sym->visible == mod ? "m" : "n"; + str += "
    "; + str += debug_info(sym); + + setText(str); +} + +void ConfigInfoView::menuInfo(void) +{ + struct symbol* sym; + QString head, debug, help; + + sym = _menu->sym; + if (sym) { + if (_menu->prompt) { + head += ""; + head += print_filter(_(_menu->prompt->text)); + head += ""; + if (sym->name) { + head += " ("; + if (showDebug()) + head += QString().sprintf("", sym); + head += print_filter(sym->name); + if (showDebug()) + head += ""; + head += ")"; + } + } else if (sym->name) { + head += ""; + if (showDebug()) + head += QString().sprintf("", sym); + head += print_filter(sym->name); + if (showDebug()) + head += ""; + head += ""; + } + head += "

    "; + + if (showDebug()) + debug = debug_info(sym); + + struct gstr help_gstr = str_new(); + menu_get_ext_help(_menu, &help_gstr); + help = print_filter(str_get(&help_gstr)); + str_free(&help_gstr); + } else if (_menu->prompt) { + head += ""; + head += print_filter(_(_menu->prompt->text)); + head += "

    "; + if (showDebug()) { + if (_menu->prompt->visible.expr) { + debug += "  dep: "; + expr_print(_menu->prompt->visible.expr, expr_print_help, &debug, E_NONE); + debug += "

    "; + } + } + } + if (showDebug()) + debug += QString().sprintf("defined at %s:%d

    ", _menu->file->name, _menu->lineno); + + setText(head + debug + help); +} + +QString ConfigInfoView::debug_info(struct symbol *sym) +{ + QString debug; + + debug += "type: "; + debug += print_filter(sym_type_name(sym->type)); + if (sym_is_choice(sym)) + debug += " (choice)"; + debug += "
    "; + if (sym->rev_dep.expr) { + debug += "reverse dep: "; + expr_print(sym->rev_dep.expr, expr_print_help, &debug, E_NONE); + debug += "
    "; + } + for (struct property *prop = sym->prop; prop; prop = prop->next) { + switch (prop->type) { + case P_PROMPT: + case P_MENU: + debug += QString().sprintf("prompt: ", prop->menu); + debug += print_filter(_(prop->text)); + debug += "
    "; + break; + case P_DEFAULT: + case P_SELECT: + case P_RANGE: + case P_ENV: + debug += prop_get_type_name(prop->type); + debug += ": "; + expr_print(prop->expr, expr_print_help, &debug, E_NONE); + debug += "
    "; + break; + case P_CHOICE: + if (sym_is_choice(sym)) { + debug += "choice: "; + expr_print(prop->expr, expr_print_help, &debug, E_NONE); + debug += "
    "; + } + break; + default: + debug += "unknown property: "; + debug += prop_get_type_name(prop->type); + debug += "
    "; + } + if (prop->visible.expr) { + debug += "    dep: "; + expr_print(prop->visible.expr, expr_print_help, &debug, E_NONE); + debug += "
    "; + } + } + debug += "
    "; + + return debug; +} + +QString ConfigInfoView::print_filter(const QString &str) +{ + QRegExp re("[<>&\"\\n]"); + QString res = str; + for (int i = 0; (i = res.indexOf(re, i)) >= 0;) { + switch (res[i].toLatin1()) { + case '<': + res.replace(i, 1, "<"); + i += 4; + break; + case '>': + res.replace(i, 1, ">"); + i += 4; + break; + case '&': + res.replace(i, 1, "&"); + i += 5; + break; + case '"': + res.replace(i, 1, """); + i += 6; + break; + case '\n': + res.replace(i, 1, "
    "); + i += 4; + break; + } + } + return res; +} + +void ConfigInfoView::expr_print_help(void *data, struct symbol *sym, const char *str) +{ + QString* text = reinterpret_cast(data); + QString str2 = print_filter(str); + + if (sym && sym->name && !(sym->flags & SYMBOL_CONST)) { + *text += QString().sprintf("", sym); + *text += str2; + *text += ""; + } else + *text += str2; +} + +QMenu* ConfigInfoView::createStandardContextMenu(const QPoint & pos) +{ + QMenu* popup = Parent::createStandardContextMenu(pos); + QAction* action = new QAction(_("Show Debug Info"), popup); + action->setCheckable(true); + connect(action, SIGNAL(toggled(bool)), SLOT(setShowDebug(bool))); + connect(this, SIGNAL(showDebugChanged(bool)), action, SLOT(setOn(bool))); + action->setChecked(showDebug()); + popup->addSeparator(); + popup->addAction(action); + return popup; +} + +void ConfigInfoView::contextMenuEvent(QContextMenuEvent *e) +{ + Parent::contextMenuEvent(e); +} + +ConfigSearchWindow::ConfigSearchWindow(ConfigMainWindow* parent, const char *name) + : Parent(parent), result(NULL) +{ + setObjectName(name); + setWindowTitle("Search Config"); + + QVBoxLayout* layout1 = new QVBoxLayout(this); + layout1->setContentsMargins(11, 11, 11, 11); + layout1->setSpacing(6); + QHBoxLayout* layout2 = new QHBoxLayout(0); + layout2->setContentsMargins(0, 0, 0, 0); + layout2->setSpacing(6); + layout2->addWidget(new QLabel(_("Find:"), this)); + editField = new QLineEdit(this); + connect(editField, SIGNAL(returnPressed()), SLOT(search())); + layout2->addWidget(editField); + searchButton = new QPushButton(_("Search"), this); + searchButton->setAutoDefault(false); + connect(searchButton, SIGNAL(clicked()), SLOT(search())); + layout2->addWidget(searchButton); + layout1->addLayout(layout2); + + split = new QSplitter(this); + split->setOrientation(Qt::Vertical); + list = new ConfigView(split, name); + list->list->mode = listMode; + info = new ConfigInfoView(split, name); + connect(list->list, SIGNAL(menuChanged(struct menu *)), + info, SLOT(setInfo(struct menu *))); + connect(list->list, SIGNAL(menuChanged(struct menu *)), + parent, SLOT(setMenuLink(struct menu *))); + + layout1->addWidget(split); + + if (name) { + QVariant x, y; + int width, height; + bool ok; + + configSettings->beginGroup(name); + width = configSettings->value("/window width", parent->width() / 2).toInt(); + height = configSettings->value("/window height", parent->height() / 2).toInt(); + resize(width, height); + x = configSettings->value("/window x"); + y = configSettings->value("/window y"); + if ((x.isValid())&&(y.isValid())) + move(x.toInt(), y.toInt()); + QList sizes = configSettings->readSizes("/split", &ok); + if (ok) + split->setSizes(sizes); + configSettings->endGroup(); + connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); + } +} + +void ConfigSearchWindow::saveSettings(void) +{ + if (!objectName().isEmpty()) { + configSettings->beginGroup(objectName()); + configSettings->setValue("/window x", pos().x()); + configSettings->setValue("/window y", pos().y()); + configSettings->setValue("/window width", size().width()); + configSettings->setValue("/window height", size().height()); + configSettings->writeSizes("/split", split->sizes()); + configSettings->endGroup(); + } +} + +void ConfigSearchWindow::search(void) +{ + struct symbol **p; + struct property *prop; + ConfigItem *lastItem = NULL; + + free(result); + list->list->clear(); + info->clear(); + + result = sym_re_search(editField->text().toLatin1()); + if (!result) + return; + for (p = result; *p; p++) { + for_all_prompts((*p), prop) + lastItem = new ConfigItem(list->list, lastItem, prop->menu, + menu_is_visible(prop->menu)); + } +} + +/* + * Construct the complete config widget + */ +ConfigMainWindow::ConfigMainWindow(void) + : searchWindow(0) +{ + QMenuBar* menu; + bool ok = true; + QVariant x, y; + int width, height; + char title[256]; + + QDesktopWidget *d = configApp->desktop(); + snprintf(title, sizeof(title), "%s%s", + rootmenu.prompt->text, + "" + ); + setWindowTitle(title); + + width = configSettings->value("/window width", d->width() - 64).toInt(); + height = configSettings->value("/window height", d->height() - 64).toInt(); + resize(width, height); + x = configSettings->value("/window x"); + y = configSettings->value("/window y"); + if ((x.isValid())&&(y.isValid())) + move(x.toInt(), y.toInt()); + + split1 = new QSplitter(this); + split1->setOrientation(Qt::Horizontal); + setCentralWidget(split1); + + menuView = new ConfigView(split1, "menu"); + menuList = menuView->list; + + split2 = new QSplitter(split1); + split2->setOrientation(Qt::Vertical); + + // create config tree + configView = new ConfigView(split2, "config"); + configList = configView->list; + + helpText = new ConfigInfoView(split2, "help"); + + setTabOrder(configList, helpText); + configList->setFocus(); + + menu = menuBar(); + toolBar = new QToolBar("Tools", this); + addToolBar(toolBar); + + backAction = new QAction(QPixmap(xpm_back), _("Back"), this); + connect(backAction, SIGNAL(triggered(bool)), SLOT(goBack())); + backAction->setEnabled(false); + QAction *quitAction = new QAction(_("&Quit"), this); + quitAction->setShortcut(Qt::CTRL + Qt::Key_Q); + connect(quitAction, SIGNAL(triggered(bool)), SLOT(close())); + QAction *loadAction = new QAction(QPixmap(xpm_load), _("&Load"), this); + loadAction->setShortcut(Qt::CTRL + Qt::Key_L); + connect(loadAction, SIGNAL(triggered(bool)), SLOT(loadConfig())); + saveAction = new QAction(QPixmap(xpm_save), _("&Save"), this); + saveAction->setShortcut(Qt::CTRL + Qt::Key_S); + connect(saveAction, SIGNAL(triggered(bool)), SLOT(saveConfig())); + conf_set_changed_callback(conf_changed); + // Set saveAction's initial state + conf_changed(); + QAction *saveAsAction = new QAction(_("Save &As..."), this); + connect(saveAsAction, SIGNAL(triggered(bool)), SLOT(saveConfigAs())); + QAction *searchAction = new QAction(_("&Find"), this); + searchAction->setShortcut(Qt::CTRL + Qt::Key_F); + connect(searchAction, SIGNAL(triggered(bool)), SLOT(searchConfig())); + singleViewAction = new QAction(QPixmap(xpm_single_view), _("Single View"), this); + singleViewAction->setCheckable(true); + connect(singleViewAction, SIGNAL(triggered(bool)), SLOT(showSingleView())); + splitViewAction = new QAction(QPixmap(xpm_split_view), _("Split View"), this); + splitViewAction->setCheckable(true); + connect(splitViewAction, SIGNAL(triggered(bool)), SLOT(showSplitView())); + fullViewAction = new QAction(QPixmap(xpm_tree_view), _("Full View"), this); + fullViewAction->setCheckable(true); + connect(fullViewAction, SIGNAL(triggered(bool)), SLOT(showFullView())); + + QAction *showNameAction = new QAction(_("Show Name"), this); + showNameAction->setCheckable(true); + connect(showNameAction, SIGNAL(toggled(bool)), configView, SLOT(setShowName(bool))); + showNameAction->setChecked(configView->showName()); + QAction *showRangeAction = new QAction(_("Show Range"), this); + showRangeAction->setCheckable(true); + connect(showRangeAction, SIGNAL(toggled(bool)), configView, SLOT(setShowRange(bool))); + QAction *showDataAction = new QAction(_("Show Data"), this); + showDataAction->setCheckable(true); + connect(showDataAction, SIGNAL(toggled(bool)), configView, SLOT(setShowData(bool))); + + QActionGroup *optGroup = new QActionGroup(this); + optGroup->setExclusive(true); + connect(optGroup, SIGNAL(triggered(QAction*)), configView, + SLOT(setOptionMode(QAction *))); + connect(optGroup, SIGNAL(triggered(QAction *)), menuView, + SLOT(setOptionMode(QAction *))); + + configView->showNormalAction = new QAction(_("Show Normal Options"), optGroup); + configView->showAllAction = new QAction(_("Show All Options"), optGroup); + configView->showPromptAction = new QAction(_("Show Prompt Options"), optGroup); + configView->showNormalAction->setCheckable(true); + configView->showAllAction->setCheckable(true); + configView->showPromptAction->setCheckable(true); + + QAction *showDebugAction = new QAction( _("Show Debug Info"), this); + showDebugAction->setCheckable(true); + connect(showDebugAction, SIGNAL(toggled(bool)), helpText, SLOT(setShowDebug(bool))); + showDebugAction->setChecked(helpText->showDebug()); + + QAction *showIntroAction = new QAction( _("Introduction"), this); + connect(showIntroAction, SIGNAL(triggered(bool)), SLOT(showIntro())); + QAction *showAboutAction = new QAction( _("About"), this); + connect(showAboutAction, SIGNAL(triggered(bool)), SLOT(showAbout())); + + // init tool bar + toolBar->addAction(backAction); + toolBar->addSeparator(); + toolBar->addAction(loadAction); + toolBar->addAction(saveAction); + toolBar->addSeparator(); + toolBar->addAction(singleViewAction); + toolBar->addAction(splitViewAction); + toolBar->addAction(fullViewAction); + + // create config menu + QMenu* config = menu->addMenu(_("&File")); + config->addAction(loadAction); + config->addAction(saveAction); + config->addAction(saveAsAction); + config->addSeparator(); + config->addAction(quitAction); + + // create edit menu + QMenu* editMenu = menu->addMenu(_("&Edit")); + editMenu->addAction(searchAction); + + // create options menu + QMenu* optionMenu = menu->addMenu(_("&Option")); + optionMenu->addAction(showNameAction); + optionMenu->addAction(showRangeAction); + optionMenu->addAction(showDataAction); + optionMenu->addSeparator(); + optionMenu->addActions(optGroup->actions()); + optionMenu->addSeparator(); + optionMenu->addAction(showDebugAction); + + // create help menu + menu->addSeparator(); + QMenu* helpMenu = menu->addMenu(_("&Help")); + helpMenu->addAction(showIntroAction); + helpMenu->addAction(showAboutAction); + + connect(configList, SIGNAL(menuChanged(struct menu *)), + helpText, SLOT(setInfo(struct menu *))); + connect(configList, SIGNAL(menuSelected(struct menu *)), + SLOT(changeMenu(struct menu *))); + connect(configList, SIGNAL(parentSelected()), + SLOT(goBack())); + connect(menuList, SIGNAL(menuChanged(struct menu *)), + helpText, SLOT(setInfo(struct menu *))); + connect(menuList, SIGNAL(menuSelected(struct menu *)), + SLOT(changeMenu(struct menu *))); + + connect(configList, SIGNAL(gotFocus(struct menu *)), + helpText, SLOT(setInfo(struct menu *))); + connect(menuList, SIGNAL(gotFocus(struct menu *)), + helpText, SLOT(setInfo(struct menu *))); + connect(menuList, SIGNAL(gotFocus(struct menu *)), + SLOT(listFocusChanged(void))); + connect(helpText, SIGNAL(menuSelected(struct menu *)), + SLOT(setMenuLink(struct menu *))); + + QString listMode = configSettings->value("/listMode", "symbol").toString(); + if (listMode == "single") + showSingleView(); + else if (listMode == "full") + showFullView(); + else /*if (listMode == "split")*/ + showSplitView(); + + // UI setup done, restore splitter positions + QList sizes = configSettings->readSizes("/split1", &ok); + if (ok) + split1->setSizes(sizes); + + sizes = configSettings->readSizes("/split2", &ok); + if (ok) + split2->setSizes(sizes); +} + +void ConfigMainWindow::loadConfig(void) +{ + QString s = QFileDialog::getOpenFileName(this, "", conf_get_configname()); + if (s.isNull()) + return; + if (conf_read(QFile::encodeName(s))) + QMessageBox::information(this, "qconf", _("Unable to load configuration!")); + ConfigView::updateListAll(); +} + +bool ConfigMainWindow::saveConfig(void) +{ + if (conf_write(NULL)) { + QMessageBox::information(this, "qconf", _("Unable to save configuration!")); + return false; + } + return true; +} + +void ConfigMainWindow::saveConfigAs(void) +{ + QString s = QFileDialog::getSaveFileName(this, "", conf_get_configname()); + if (s.isNull()) + return; + saveConfig(); +} + +void ConfigMainWindow::searchConfig(void) +{ + if (!searchWindow) + searchWindow = new ConfigSearchWindow(this, "search"); + searchWindow->show(); +} + +void ConfigMainWindow::changeMenu(struct menu *menu) +{ + configList->setRootMenu(menu); + if (configList->rootEntry->parent == &rootmenu) + backAction->setEnabled(false); + else + backAction->setEnabled(true); +} + +void ConfigMainWindow::setMenuLink(struct menu *menu) +{ + struct menu *parent; + ConfigList* list = NULL; + ConfigItem* item; + + if (configList->menuSkip(menu)) + return; + + switch (configList->mode) { + case singleMode: + list = configList; + parent = menu_get_parent_menu(menu); + if (!parent) + return; + list->setRootMenu(parent); + break; + case symbolMode: + if (menu->flags & MENU_ROOT) { + configList->setRootMenu(menu); + configList->clearSelection(); + list = menuList; + } else { + list = configList; + parent = menu_get_parent_menu(menu->parent); + if (!parent) + return; + item = menuList->findConfigItem(parent); + if (item) { + item->setSelected(true); + menuList->scrollToItem(item); + } + list->setRootMenu(parent); + } + break; + case fullMode: + list = configList; + break; + default: + break; + } + + if (list) { + item = list->findConfigItem(menu); + if (item) { + item->setSelected(true); + list->scrollToItem(item); + list->setFocus(); + } + } +} + +void ConfigMainWindow::listFocusChanged(void) +{ + if (menuList->mode == menuMode) + configList->clearSelection(); +} + +void ConfigMainWindow::goBack(void) +{ + ConfigItem* item, *oldSelection; + + configList->setParentMenu(); + if (configList->rootEntry == &rootmenu) + backAction->setEnabled(false); + + if (menuList->selectedItems().count() == 0) + return; + + item = (ConfigItem*)menuList->selectedItems().first(); + oldSelection = item; + while (item) { + if (item->menu == configList->rootEntry) { + oldSelection->setSelected(false); + item->setSelected(true); + break; + } + item = (ConfigItem*)item->parent(); + } +} + +void ConfigMainWindow::showSingleView(void) +{ + singleViewAction->setEnabled(false); + singleViewAction->setChecked(true); + splitViewAction->setEnabled(true); + splitViewAction->setChecked(false); + fullViewAction->setEnabled(true); + fullViewAction->setChecked(false); + + menuView->hide(); + menuList->setRootMenu(0); + configList->mode = singleMode; + if (configList->rootEntry == &rootmenu) + configList->updateListAll(); + else + configList->setRootMenu(&rootmenu); + configList->setFocus(); +} + +void ConfigMainWindow::showSplitView(void) +{ + singleViewAction->setEnabled(true); + singleViewAction->setChecked(false); + splitViewAction->setEnabled(false); + splitViewAction->setChecked(true); + fullViewAction->setEnabled(true); + fullViewAction->setChecked(false); + + configList->mode = symbolMode; + if (configList->rootEntry == &rootmenu) + configList->updateListAll(); + else + configList->setRootMenu(&rootmenu); + configList->setAllOpen(true); + configApp->processEvents(); + menuList->mode = menuMode; + menuList->setRootMenu(&rootmenu); + menuList->setAllOpen(true); + menuView->show(); + menuList->setFocus(); +} + +void ConfigMainWindow::showFullView(void) +{ + singleViewAction->setEnabled(true); + singleViewAction->setChecked(false); + splitViewAction->setEnabled(true); + splitViewAction->setChecked(false); + fullViewAction->setEnabled(false); + fullViewAction->setChecked(true); + + menuView->hide(); + menuList->setRootMenu(0); + configList->mode = fullMode; + if (configList->rootEntry == &rootmenu) + configList->updateListAll(); + else + configList->setRootMenu(&rootmenu); + configList->setFocus(); +} + +/* + * ask for saving configuration before quitting + * TODO ask only when something changed + */ +void ConfigMainWindow::closeEvent(QCloseEvent* e) +{ + if (!conf_get_changed()) { + e->accept(); + return; + } + QMessageBox mb("qconf", _("Save configuration?"), QMessageBox::Warning, + QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape); + mb.setButtonText(QMessageBox::Yes, _("&Save Changes")); + mb.setButtonText(QMessageBox::No, _("&Discard Changes")); + mb.setButtonText(QMessageBox::Cancel, _("Cancel Exit")); + switch (mb.exec()) { + case QMessageBox::Yes: + if (saveConfig()) + e->accept(); + else + e->ignore(); + break; + case QMessageBox::No: + e->accept(); + break; + case QMessageBox::Cancel: + e->ignore(); + break; + } +} + +void ConfigMainWindow::showIntro(void) +{ + static const QString str = _("Welcome to the qconf graphical configuration tool.\n\n" + "For each option, a blank box indicates the feature is disabled, a check\n" + "indicates it is enabled, and a dot indicates that it is to be compiled\n" + "as a module. Clicking on the box will cycle through the three states.\n\n" + "If you do not see an option (e.g., a device driver) that you believe\n" + "should be present, try turning on Show All Options under the Options menu.\n" + "Although there is no cross reference yet to help you figure out what other\n" + "options must be enabled to support the option you are interested in, you can\n" + "still view the help of a grayed-out option.\n\n" + "Toggling Show Debug Info under the Options menu will show the dependencies,\n" + "which you can then match by examining other options.\n\n"); + + QMessageBox::information(this, "qconf", str); +} + +void ConfigMainWindow::showAbout(void) +{ + static const QString str = _("qconf is Copyright (C) 2002 Roman Zippel .\n" + "Copyright (C) 2015 Boris Barbulovski .\n\n" + "Bug reports and feature request can also be entered at http://bugzilla.kernel.org/\n"); + + QMessageBox::information(this, "qconf", str); +} + +void ConfigMainWindow::saveSettings(void) +{ + configSettings->setValue("/window x", pos().x()); + configSettings->setValue("/window y", pos().y()); + configSettings->setValue("/window width", size().width()); + configSettings->setValue("/window height", size().height()); + + QString entry; + switch(configList->mode) { + case singleMode : + entry = "single"; + break; + + case symbolMode : + entry = "split"; + break; + + case fullMode : + entry = "full"; + break; + + default: + break; + } + configSettings->setValue("/listMode", entry); + + configSettings->writeSizes("/split1", split1->sizes()); + configSettings->writeSizes("/split2", split2->sizes()); +} + +void ConfigMainWindow::conf_changed(void) +{ + if (saveAction) + saveAction->setEnabled(conf_get_changed()); +} + +void fixup_rootmenu(struct menu *menu) +{ + struct menu *child; + static int menu_cnt = 0; + + menu->flags |= MENU_ROOT; + for (child = menu->list; child; child = child->next) { + if (child->prompt && child->prompt->type == P_MENU) { + menu_cnt++; + fixup_rootmenu(child); + menu_cnt--; + } else if (!menu_cnt) + fixup_rootmenu(child); + } +} + +static const char *progname; + +static void usage(void) +{ + printf(_("%s [-s] \n").toLatin1().constData(), progname); + exit(0); +} + +int main(int ac, char** av) +{ + ConfigMainWindow* v; + const char *name; + + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + progname = av[0]; + configApp = new QApplication(ac, av); + if (ac > 1 && av[1][0] == '-') { + switch (av[1][1]) { + case 's': + conf_set_message_callback(NULL); + break; + case 'h': + case '?': + usage(); + } + name = av[2]; + } else + name = av[1]; + if (!name) + usage(); + + conf_parse(name); + fixup_rootmenu(&rootmenu); + conf_read(NULL); + //zconfdump(stdout); + + configSettings = new ConfigSettings(); + configSettings->beginGroup("/kconfig/qconf"); + v = new ConfigMainWindow(); + + //zconfdump(stdout); + configApp->connect(configApp, SIGNAL(lastWindowClosed()), SLOT(quit())); + configApp->connect(configApp, SIGNAL(aboutToQuit()), v, SLOT(saveSettings())); + v->show(); + configApp->exec(); + + configSettings->endGroup(); + delete configSettings; + delete v; + delete configApp; + + return 0; +} diff --git a/support/kconfig/qconf.h b/support/kconfig/qconf.h new file mode 100644 index 00000000..a40036d1 --- /dev/null +++ b/support/kconfig/qconf.h @@ -0,0 +1,330 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "expr.h" + +class ConfigView; +class ConfigList; +class ConfigItem; +class ConfigLineEdit; +class ConfigMainWindow; + +class ConfigSettings : public QSettings { +public: + ConfigSettings(); + QList readSizes(const QString& key, bool *ok); + bool writeSizes(const QString& key, const QList& value); +}; + +enum colIdx { + promptColIdx, nameColIdx, noColIdx, modColIdx, yesColIdx, dataColIdx, colNr +}; +enum listMode { + singleMode, menuMode, symbolMode, fullMode, listMode +}; +enum optionMode { + normalOpt = 0, allOpt, promptOpt +}; + +class ConfigList : public QTreeWidget { + Q_OBJECT + typedef class QTreeWidget Parent; +public: + ConfigList(ConfigView* p, const char *name = 0); + void reinit(void); + ConfigView* parent(void) const + { + return (ConfigView*)Parent::parent(); + } + ConfigItem* findConfigItem(struct menu *); + +protected: + void keyPressEvent(QKeyEvent *e); + void mousePressEvent(QMouseEvent *e); + void mouseReleaseEvent(QMouseEvent *e); + void mouseMoveEvent(QMouseEvent *e); + void mouseDoubleClickEvent(QMouseEvent *e); + void focusInEvent(QFocusEvent *e); + void contextMenuEvent(QContextMenuEvent *e); + +public slots: + void setRootMenu(struct menu *menu); + + void updateList(ConfigItem *item); + void setValue(ConfigItem* item, tristate val); + void changeValue(ConfigItem* item); + void updateSelection(void); + void saveSettings(void); +signals: + void menuChanged(struct menu *menu); + void menuSelected(struct menu *menu); + void parentSelected(void); + void gotFocus(struct menu *); + +public: + void updateListAll(void) + { + updateAll = true; + updateList(NULL); + updateAll = false; + } + ConfigList* listView() + { + return this; + } + ConfigItem* firstChild() const + { + return (ConfigItem *)children().first(); + } + void addColumn(colIdx idx) + { + showColumn(idx); + } + void removeColumn(colIdx idx) + { + hideColumn(idx); + } + void setAllOpen(bool open); + void setParentMenu(void); + + bool menuSkip(struct menu *); + + void updateMenuList(ConfigItem *parent, struct menu*); + void updateMenuList(ConfigList *parent, struct menu*); + + bool updateAll; + + QPixmap symbolYesPix, symbolModPix, symbolNoPix; + QPixmap choiceYesPix, choiceNoPix; + QPixmap menuPix, menuInvPix, menuBackPix, voidPix; + + bool showName, showRange, showData; + enum listMode mode; + enum optionMode optMode; + struct menu *rootEntry; + QPalette disabledColorGroup; + QPalette inactivedColorGroup; + QMenu* headerPopup; +}; + +class ConfigItem : public QTreeWidgetItem { + typedef class QTreeWidgetItem Parent; +public: + ConfigItem(ConfigList *parent, ConfigItem *after, struct menu *m, bool v) + : Parent(parent, after), nextItem(0), menu(m), visible(v), goParent(false) + { + init(); + } + ConfigItem(ConfigItem *parent, ConfigItem *after, struct menu *m, bool v) + : Parent(parent, after), nextItem(0), menu(m), visible(v), goParent(false) + { + init(); + } + ConfigItem(ConfigList *parent, ConfigItem *after, bool v) + : Parent(parent, after), nextItem(0), menu(0), visible(v), goParent(true) + { + init(); + } + ~ConfigItem(void); + void init(void); + void okRename(int col); + void updateMenu(void); + void testUpdateMenu(bool v); + ConfigList* listView() const + { + return (ConfigList*)Parent::treeWidget(); + } + ConfigItem* firstChild() const + { + return (ConfigItem *)Parent::child(0); + } + ConfigItem* nextSibling() + { + ConfigItem *ret = NULL; + ConfigItem *_parent = (ConfigItem *)parent(); + + if(_parent) { + ret = (ConfigItem *)_parent->child(_parent->indexOfChild(this)+1); + } else { + QTreeWidget *_treeWidget = treeWidget(); + ret = (ConfigItem *)_treeWidget->topLevelItem(_treeWidget->indexOfTopLevelItem(this)+1); + } + + return ret; + } + void setText(colIdx idx, const QString& text) + { + Parent::setText(idx, text); + } + QString text(colIdx idx) const + { + return Parent::text(idx); + } + void setPixmap(colIdx idx, const QIcon &icon) + { + Parent::setIcon(idx, icon); + } + const QIcon pixmap(colIdx idx) const + { + return icon(idx); + } + // TODO: Implement paintCell + + ConfigItem* nextItem; + struct menu *menu; + bool visible; + bool goParent; +}; + +class ConfigLineEdit : public QLineEdit { + Q_OBJECT + typedef class QLineEdit Parent; +public: + ConfigLineEdit(ConfigView* parent); + ConfigView* parent(void) const + { + return (ConfigView*)Parent::parent(); + } + void show(ConfigItem *i); + void keyPressEvent(QKeyEvent *e); + +public: + ConfigItem *item; +}; + +class ConfigView : public QWidget { + Q_OBJECT + typedef class QWidget Parent; +public: + ConfigView(QWidget* parent, const char *name = 0); + ~ConfigView(void); + static void updateList(ConfigItem* item); + static void updateListAll(void); + + bool showName(void) const { return list->showName; } + bool showRange(void) const { return list->showRange; } + bool showData(void) const { return list->showData; } +public slots: + void setShowName(bool); + void setShowRange(bool); + void setShowData(bool); + void setOptionMode(QAction *); +signals: + void showNameChanged(bool); + void showRangeChanged(bool); + void showDataChanged(bool); +public: + ConfigList* list; + ConfigLineEdit* lineEdit; + + static ConfigView* viewList; + ConfigView* nextView; + + static QAction *showNormalAction; + static QAction *showAllAction; + static QAction *showPromptAction; +}; + +class ConfigInfoView : public QTextBrowser { + Q_OBJECT + typedef class QTextBrowser Parent; +public: + ConfigInfoView(QWidget* parent, const char *name = 0); + bool showDebug(void) const { return _showDebug; } + +public slots: + void setInfo(struct menu *menu); + void saveSettings(void); + void setShowDebug(bool); + +signals: + void showDebugChanged(bool); + void menuSelected(struct menu *); + +protected: + void symbolInfo(void); + void menuInfo(void); + QString debug_info(struct symbol *sym); + static QString print_filter(const QString &str); + static void expr_print_help(void *data, struct symbol *sym, const char *str); + QMenu *createStandardContextMenu(const QPoint & pos); + void contextMenuEvent(QContextMenuEvent *e); + + struct symbol *sym; + struct menu *_menu; + bool _showDebug; +}; + +class ConfigSearchWindow : public QDialog { + Q_OBJECT + typedef class QDialog Parent; +public: + ConfigSearchWindow(ConfigMainWindow* parent, const char *name = 0); + +public slots: + void saveSettings(void); + void search(void); + +protected: + QLineEdit* editField; + QPushButton* searchButton; + QSplitter* split; + ConfigView* list; + ConfigInfoView* info; + + struct symbol **result; +}; + +class ConfigMainWindow : public QMainWindow { + Q_OBJECT + + static QAction *saveAction; + static void conf_changed(void); +public: + ConfigMainWindow(void); +public slots: + void changeMenu(struct menu *); + void setMenuLink(struct menu *); + void listFocusChanged(void); + void goBack(void); + void loadConfig(void); + bool saveConfig(void); + void saveConfigAs(void); + void searchConfig(void); + void showSingleView(void); + void showSplitView(void); + void showFullView(void); + void showIntro(void); + void showAbout(void); + void saveSettings(void); + +protected: + void closeEvent(QCloseEvent *e); + + ConfigSearchWindow *searchWindow; + ConfigView *menuView; + ConfigList *menuList; + ConfigView *configView; + ConfigList *configList; + ConfigInfoView *helpText; + QToolBar *toolBar; + QAction *backAction; + QAction *singleViewAction; + QAction *splitViewAction; + QAction *fullViewAction; + QSplitter *split1; + QSplitter *split2; +}; diff --git a/support/kconfig/streamline_config.pl b/support/kconfig/streamline_config.pl new file mode 100755 index 00000000..a2e83ab1 --- /dev/null +++ b/support/kconfig/streamline_config.pl @@ -0,0 +1,682 @@ +#!/usr/bin/env perl +# +# Copyright 2005-2009 - Steven Rostedt +# Licensed under the terms of the GNU GPL License version 2 +# +# It's simple enough to figure out how this works. +# If not, then you can ask me at stripconfig@goodmis.org +# +# What it does? +# +# If you have installed a Linux kernel from a distribution +# that turns on way too many modules than you need, and +# you only want the modules you use, then this program +# is perfect for you. +# +# It gives you the ability to turn off all the modules that are +# not loaded on your system. +# +# Howto: +# +# 1. Boot up the kernel that you want to stream line the config on. +# 2. Change directory to the directory holding the source of the +# kernel that you just booted. +# 3. Copy the configuraton file to this directory as .config +# 4. Have all your devices that you need modules for connected and +# operational (make sure that their corresponding modules are loaded) +# 5. Run this script redirecting the output to some other file +# like config_strip. +# 6. Back up your old config (if you want too). +# 7. copy the config_strip file to .config +# 8. Run "make oldconfig" +# +# Now your kernel is ready to be built with only the modules that +# are loaded. +# +# Here's what I did with my Debian distribution. +# +# cd /usr/src/linux-2.6.10 +# cp /boot/config-2.6.10-1-686-smp .config +# ~/bin/streamline_config > config_strip +# mv .config config_sav +# mv config_strip .config +# make oldconfig +# +use warnings; +use strict; +use Getopt::Long; + +# set the environment variable LOCALMODCONFIG_DEBUG to get +# debug output. +my $debugprint = 0; +$debugprint = 1 if (defined($ENV{LOCALMODCONFIG_DEBUG})); + +sub dprint { + return if (!$debugprint); + print STDERR @_; +} + +my $config = ".config"; + +my $uname = `uname -r`; +chomp $uname; + +my @searchconfigs = ( + { + "file" => ".config", + "exec" => "cat", + }, + { + "file" => "/proc/config.gz", + "exec" => "zcat", + }, + { + "file" => "/boot/config-$uname", + "exec" => "cat", + }, + { + "file" => "/boot/vmlinuz-$uname", + "exec" => "scripts/extract-ikconfig", + "test" => "scripts/extract-ikconfig", + }, + { + "file" => "vmlinux", + "exec" => "scripts/extract-ikconfig", + "test" => "scripts/extract-ikconfig", + }, + { + "file" => "/lib/modules/$uname/kernel/kernel/configs.ko", + "exec" => "scripts/extract-ikconfig", + "test" => "scripts/extract-ikconfig", + }, + { + "file" => "kernel/configs.ko", + "exec" => "scripts/extract-ikconfig", + "test" => "scripts/extract-ikconfig", + }, + { + "file" => "kernel/configs.o", + "exec" => "scripts/extract-ikconfig", + "test" => "scripts/extract-ikconfig", + }, +); + +sub read_config { + foreach my $conf (@searchconfigs) { + my $file = $conf->{"file"}; + + next if ( ! -f "$file"); + + if (defined($conf->{"test"})) { + `$conf->{"test"} $conf->{"file"} 2>/dev/null`; + next if ($?); + } + + my $exec = $conf->{"exec"}; + + print STDERR "using config: '$file'\n"; + + open(my $infile, '-|', "$exec $file") || die "Failed to run $exec $file"; + my @x = <$infile>; + close $infile; + return @x; + } + die "No config file found"; +} + +my @config_file = read_config; + +# Parse options +my $localmodconfig = 0; +my $localyesconfig = 0; + +GetOptions("localmodconfig" => \$localmodconfig, + "localyesconfig" => \$localyesconfig); + +# Get the build source and top level Kconfig file (passed in) +my $ksource = ($ARGV[0] ? $ARGV[0] : '.'); +my $kconfig = $ARGV[1]; +my $lsmod_file = $ENV{'LSMOD'}; + +my @makefiles = `find $ksource -name Makefile -or -name Kbuild 2>/dev/null`; +chomp @makefiles; + +my %depends; +my %selects; +my %prompts; +my %objects; +my $var; +my $iflevel = 0; +my @ifdeps; + +# prevent recursion +my %read_kconfigs; + +sub read_kconfig { + my ($kconfig) = @_; + + my $state = "NONE"; + my $config; + + my $cont = 0; + my $line; + + my $source = "$ksource/$kconfig"; + my $last_source = ""; + + # Check for any environment variables used + while ($source =~ /\$(\w+)/ && $last_source ne $source) { + my $env = $1; + $last_source = $source; + $source =~ s/\$$env/$ENV{$env}/; + } + + open(my $kinfile, '<', $source) || die "Can't open $kconfig"; + while (<$kinfile>) { + chomp; + + # Make sure that lines ending with \ continue + if ($cont) { + $_ = $line . " " . $_; + } + + if (s/\\$//) { + $cont = 1; + $line = $_; + next; + } + + $cont = 0; + + # collect any Kconfig sources + if (/^source\s+"?([^"]+)/) { + my $kconfig = $1; + # prevent reading twice. + if (!defined($read_kconfigs{$kconfig})) { + $read_kconfigs{$kconfig} = 1; + read_kconfig($kconfig); + } + next; + } + + # configs found + if (/^\s*(menu)?config\s+(\S+)\s*$/) { + $state = "NEW"; + $config = $2; + + # Add depends for 'if' nesting + for (my $i = 0; $i < $iflevel; $i++) { + if ($i) { + $depends{$config} .= " " . $ifdeps[$i]; + } else { + $depends{$config} = $ifdeps[$i]; + } + $state = "DEP"; + } + + # collect the depends for the config + } elsif ($state eq "NEW" && /^\s*depends\s+on\s+(.*)$/) { + $state = "DEP"; + $depends{$config} = $1; + } elsif ($state eq "DEP" && /^\s*depends\s+on\s+(.*)$/) { + $depends{$config} .= " " . $1; + } elsif ($state eq "DEP" && /^\s*def(_(bool|tristate)|ault)\s+(\S.*)$/) { + my $dep = $3; + if ($dep !~ /^\s*(y|m|n)\s*$/) { + $dep =~ s/.*\sif\s+//; + $depends{$config} .= " " . $dep; + dprint "Added default depends $dep to $config\n"; + } + + # Get the configs that select this config + } elsif ($state ne "NONE" && /^\s*select\s+(\S+)/) { + my $conf = $1; + if (defined($selects{$conf})) { + $selects{$conf} .= " " . $config; + } else { + $selects{$conf} = $config; + } + + # configs without prompts must be selected + } elsif ($state ne "NONE" && /^\s*(tristate\s+\S|prompt\b)/) { + # note if the config has a prompt + $prompts{$config} = 1; + + # Check for if statements + } elsif (/^if\s+(.*\S)\s*$/) { + my $deps = $1; + # remove beginning and ending non text + $deps =~ s/^[^a-zA-Z0-9_]*//; + $deps =~ s/[^a-zA-Z0-9_]*$//; + + my @deps = split /[^a-zA-Z0-9_]+/, $deps; + + $ifdeps[$iflevel++] = join ':', @deps; + + } elsif (/^endif/) { + + $iflevel-- if ($iflevel); + + # stop on "help" and keywords that end a menu entry + } elsif (/^\s*(---)?help(---)?\s*$/ || /^(comment|choice|menu)\b/) { + $state = "NONE"; + } + } + close($kinfile); +} + +if ($kconfig) { + read_kconfig($kconfig); +} + +# Makefiles can use variables to define their dependencies +sub convert_vars { + my ($line, %vars) = @_; + + my $process = ""; + + while ($line =~ s/^(.*?)(\$\((.*?)\))//) { + my $start = $1; + my $variable = $2; + my $var = $3; + + if (defined($vars{$var})) { + $process .= $start . $vars{$var}; + } else { + $process .= $start . $variable; + } + } + + $process .= $line; + + return $process; +} + +# Read all Makefiles to map the configs to the objects +foreach my $makefile (@makefiles) { + + my $line = ""; + my %make_vars; + + open(my $infile, '<', $makefile) || die "Can't open $makefile"; + while (<$infile>) { + # if this line ends with a backslash, continue + chomp; + if (/^(.*)\\$/) { + $line .= $1; + next; + } + + $line .= $_; + $_ = $line; + $line = ""; + + my $objs; + + # Convert variables in a line (could define configs) + $_ = convert_vars($_, %make_vars); + + # collect objects after obj-$(CONFIG_FOO_BAR) + if (/obj-\$\((CONFIG_[^\)]*)\)\s*[+:]?=\s*(.*)/) { + $var = $1; + $objs = $2; + + # check if variables are set + } elsif (/^\s*(\S+)\s*[:]?=\s*(.*\S)/) { + $make_vars{$1} = $2; + } + if (defined($objs)) { + foreach my $obj (split /\s+/,$objs) { + $obj =~ s/-/_/g; + if ($obj =~ /(.*)\.o$/) { + # Objects may be enabled by more than one config. + # Store configs in an array. + my @arr; + + if (defined($objects{$1})) { + @arr = @{$objects{$1}}; + } + + $arr[$#arr+1] = $var; + + # The objects have a hash mapping to a reference + # of an array of configs. + $objects{$1} = \@arr; + } + } + } + } + close($infile); +} + +my %modules; +my $linfile; + +if (defined($lsmod_file)) { + if ( ! -f $lsmod_file) { + if ( -f $ENV{'objtree'}."/".$lsmod_file) { + $lsmod_file = $ENV{'objtree'}."/".$lsmod_file; + } else { + die "$lsmod_file not found"; + } + } + + my $otype = ( -x $lsmod_file) ? '-|' : '<'; + open($linfile, $otype, $lsmod_file); + +} else { + + # see what modules are loaded on this system + my $lsmod; + + foreach my $dir ( ("/sbin", "/bin", "/usr/sbin", "/usr/bin") ) { + if ( -x "$dir/lsmod" ) { + $lsmod = "$dir/lsmod"; + last; + } +} + if (!defined($lsmod)) { + # try just the path + $lsmod = "lsmod"; + } + + open($linfile, '-|', $lsmod) || die "Can not call lsmod with $lsmod"; +} + +while (<$linfile>) { + next if (/^Module/); # Skip the first line. + if (/^(\S+)/) { + $modules{$1} = 1; + } +} +close ($linfile); + +# add to the configs hash all configs that are needed to enable +# a loaded module. This is a direct obj-${CONFIG_FOO} += bar.o +# where we know we need bar.o so we add FOO to the list. +my %configs; +foreach my $module (keys(%modules)) { + if (defined($objects{$module})) { + my @arr = @{$objects{$module}}; + foreach my $conf (@arr) { + $configs{$conf} = $module; + dprint "$conf added by direct ($module)\n"; + if ($debugprint) { + my $c=$conf; + $c =~ s/^CONFIG_//; + if (defined($depends{$c})) { + dprint " deps = $depends{$c}\n"; + } else { + dprint " no deps\n"; + } + } + } + } else { + # Most likely, someone has a custom (binary?) module loaded. + print STDERR "$module config not found!!\n"; + } +} + +# Read the current config, and see what is enabled. We want to +# ignore configs that we would not enable anyway. + +my %orig_configs; +my $valid = "A-Za-z_0-9"; + +foreach my $line (@config_file) { + $_ = $line; + + if (/(CONFIG_[$valid]*)=(m|y)/) { + $orig_configs{$1} = $2; + } +} + +my $repeat = 1; + +my $depconfig; + +# +# Note, we do not care about operands (like: &&, ||, !) we want to add any +# config that is in the depend list of another config. This script does +# not enable configs that are not already enabled. If we come across a +# config A that depends on !B, we can still add B to the list of depends +# to keep on. If A was on in the original config, B would not have been +# and B would not be turned on by this script. +# +sub parse_config_depends +{ + my ($p) = @_; + + while ($p =~ /[$valid]/) { + + if ($p =~ /^[^$valid]*([$valid]+)/) { + my $conf = "CONFIG_" . $1; + + $p =~ s/^[^$valid]*[$valid]+//; + + # We only need to process if the depend config is a module + if (!defined($orig_configs{$conf}) || $orig_configs{$conf} eq "y") { + next; + } + + if (!defined($configs{$conf})) { + # We must make sure that this config has its + # dependencies met. + $repeat = 1; # do again + dprint "$conf selected by depend $depconfig\n"; + $configs{$conf} = 1; + } + } else { + die "this should never happen"; + } + } +} + +# Select is treated a bit differently than depends. We call this +# when a config has no prompt and requires another config to be +# selected. We use to just select all configs that selected this +# config, but found that that can balloon into enabling hundreds +# of configs that we do not care about. +# +# The idea is we look at all the configs that select it. If one +# is already in our list of configs to enable, then there's nothing +# else to do. If there isn't, we pick the first config that was +# enabled in the orignal config and use that. +sub parse_config_selects +{ + my ($config, $p) = @_; + + my $next_config; + + while ($p =~ /[$valid]/) { + + if ($p =~ /^[^$valid]*([$valid]+)/) { + my $conf = "CONFIG_" . $1; + + $p =~ s/^[^$valid]*[$valid]+//; + + # Make sure that this config exists in the current .config file + if (!defined($orig_configs{$conf})) { + dprint "$conf not set for $config select\n"; + next; + } + + # Check if something other than a module selects this config + if (defined($orig_configs{$conf}) && $orig_configs{$conf} ne "m") { + dprint "$conf (non module) selects config, we are good\n"; + # we are good with this + return; + } + if (defined($configs{$conf})) { + dprint "$conf selects $config so we are good\n"; + # A set config selects this config, we are good + return; + } + # Set this config to be selected + if (!defined($next_config)) { + $next_config = $conf; + } + } else { + die "this should never happen"; + } + } + + # If no possible config selected this, then something happened. + if (!defined($next_config)) { + print STDERR "WARNING: $config is required, but nothing in the\n"; + print STDERR " current config selects it.\n"; + return; + } + + # If we are here, then we found no config that is set and + # selects this config. Repeat. + $repeat = 1; + # Make this config need to be selected + $configs{$next_config} = 1; + dprint "$next_config selected by select $config\n"; +} + +my %process_selects; + +# loop through all configs, select their dependencies. +sub loop_depend { + $repeat = 1; + + while ($repeat) { + $repeat = 0; + + forloop: + foreach my $config (keys %configs) { + + # If this config is not a module, we do not need to process it + if (defined($orig_configs{$config}) && $orig_configs{$config} ne "m") { + next forloop; + } + + $config =~ s/^CONFIG_//; + $depconfig = $config; + + if (defined($depends{$config})) { + # This config has dependencies. Make sure they are also included + parse_config_depends $depends{$config}; + } + + # If the config has no prompt, then we need to check if a config + # that is enabled selected it. Or if we need to enable one. + if (!defined($prompts{$config}) && defined($selects{$config})) { + $process_selects{$config} = 1; + } + } + } +} + +sub loop_select { + + foreach my $config (keys %process_selects) { + $config =~ s/^CONFIG_//; + + dprint "Process select $config\n"; + + # config has no prompt and must be selected. + parse_config_selects $config, $selects{$config}; + } +} + +while ($repeat) { + # Get the first set of configs and their dependencies. + loop_depend; + + $repeat = 0; + + # Now we need to see if we have to check selects; + loop_select; +} + +my %setconfigs; + +# Finally, read the .config file and turn off any module enabled that +# we could not find a reason to keep enabled. +foreach my $line (@config_file) { + $_ = $line; + + if (/CONFIG_IKCONFIG/) { + if (/# CONFIG_IKCONFIG is not set/) { + # enable IKCONFIG at least as a module + print "CONFIG_IKCONFIG=m\n"; + # don't ask about PROC + print "# CONFIG_IKCONFIG_PROC is not set\n"; + } else { + print; + } + next; + } + + if (/CONFIG_MODULE_SIG_KEY="(.+)"/) { + my $orig_cert = $1; + my $default_cert = "certs/signing_key.pem"; + + # Check that the logic in this script still matches the one in Kconfig + if (!defined($depends{"MODULE_SIG_KEY"}) || + $depends{"MODULE_SIG_KEY"} !~ /"\Q$default_cert\E"/) { + print STDERR "WARNING: MODULE_SIG_KEY assertion failure, ", + "update needed to ", __FILE__, " line ", __LINE__, "\n"; + print; + } elsif ($orig_cert ne $default_cert && ! -f $orig_cert) { + print STDERR "Module signature verification enabled but ", + "module signing key \"$orig_cert\" not found. Resetting ", + "signing key to default value.\n"; + print "CONFIG_MODULE_SIG_KEY=\"$default_cert\"\n"; + } else { + print; + } + next; + } + + if (/CONFIG_SYSTEM_TRUSTED_KEYS="(.+)"/) { + my $orig_keys = $1; + + if (! -f $orig_keys) { + print STDERR "System keyring enabled but keys \"$orig_keys\" ", + "not found. Resetting keys to default value.\n"; + print "CONFIG_SYSTEM_TRUSTED_KEYS=\"\"\n"; + } else { + print; + } + next; + } + + if (/^(CONFIG.*)=(m|y)/) { + if (defined($configs{$1})) { + if ($localyesconfig) { + $setconfigs{$1} = 'y'; + print "$1=y\n"; + next; + } else { + $setconfigs{$1} = $2; + } + } elsif ($2 eq "m") { + print "# $1 is not set\n"; + next; + } + } + print; +} + +# Integrity check, make sure all modules that we want enabled do +# indeed have their configs set. +loop: +foreach my $module (keys(%modules)) { + if (defined($objects{$module})) { + my @arr = @{$objects{$module}}; + foreach my $conf (@arr) { + if (defined($setconfigs{$conf})) { + next loop; + } + } + print STDERR "module $module did not have configs"; + foreach my $conf (@arr) { + print STDERR " " , $conf; + } + print STDERR "\n"; + } +} diff --git a/support/kconfig/symbol.c b/support/kconfig/symbol.c new file mode 100644 index 00000000..f0b2e3b3 --- /dev/null +++ b/support/kconfig/symbol.c @@ -0,0 +1,1432 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include + +#include "lkc.h" + +struct symbol symbol_yes = { + .name = "y", + .curr = { "y", yes }, + .flags = SYMBOL_CONST|SYMBOL_VALID, +}, symbol_mod = { + .name = "m", + .curr = { "m", mod }, + .flags = SYMBOL_CONST|SYMBOL_VALID, +}, symbol_no = { + .name = "n", + .curr = { "n", no }, + .flags = SYMBOL_CONST|SYMBOL_VALID, +}, symbol_empty = { + .name = "", + .curr = { "", no }, + .flags = SYMBOL_VALID, +}; + +struct symbol *sym_defconfig_list; +struct symbol *modules_sym; +tristate modules_val; + +struct expr *sym_env_list; + +static void sym_add_default(struct symbol *sym, const char *def) +{ + struct property *prop = prop_alloc(P_DEFAULT, sym); + + prop->expr = expr_alloc_symbol(sym_lookup(def, SYMBOL_CONST)); +} + +void sym_init(void) +{ + struct symbol *sym; + struct utsname uts; + static bool inited = false; + + if (inited) + return; + inited = true; + + uname(&uts); + + sym = sym_lookup("UNAME_RELEASE", 0); + sym->type = S_STRING; + sym->flags |= SYMBOL_AUTO; + sym_add_default(sym, uts.release); +} + +enum symbol_type sym_get_type(struct symbol *sym) +{ + enum symbol_type type = sym->type; + + if (type == S_TRISTATE) { + if (sym_is_choice_value(sym) && sym->visible == yes) + type = S_BOOLEAN; + else if (modules_val == no) + type = S_BOOLEAN; + } + return type; +} + +const char *sym_type_name(enum symbol_type type) +{ + switch (type) { + case S_BOOLEAN: + return "bool"; + case S_TRISTATE: + return "tristate"; + case S_INT: + return "integer"; + case S_HEX: + return "hex"; + case S_STRING: + return "string"; + case S_UNKNOWN: + return "unknown"; + case S_OTHER: + break; + } + return "???"; +} + +struct property *sym_get_choice_prop(struct symbol *sym) +{ + struct property *prop; + + for_all_choices(sym, prop) + return prop; + return NULL; +} + +struct property *sym_get_env_prop(struct symbol *sym) +{ + struct property *prop; + + for_all_properties(sym, prop, P_ENV) + return prop; + return NULL; +} + +static struct property *sym_get_default_prop(struct symbol *sym) +{ + struct property *prop; + + for_all_defaults(sym, prop) { + prop->visible.tri = expr_calc_value(prop->visible.expr); + if (prop->visible.tri != no) + return prop; + } + return NULL; +} + +static struct property *sym_get_range_prop(struct symbol *sym) +{ + struct property *prop; + + for_all_properties(sym, prop, P_RANGE) { + prop->visible.tri = expr_calc_value(prop->visible.expr); + if (prop->visible.tri != no) + return prop; + } + return NULL; +} + +static long long sym_get_range_val(struct symbol *sym, int base) +{ + sym_calc_value(sym); + switch (sym->type) { + case S_INT: + base = 10; + break; + case S_HEX: + base = 16; + break; + default: + break; + } + return strtoll(sym->curr.val, NULL, base); +} + +static void sym_validate_range(struct symbol *sym) +{ + struct property *prop; + int base; + long long val, val2; + char str[64]; + + switch (sym->type) { + case S_INT: + base = 10; + break; + case S_HEX: + base = 16; + break; + default: + return; + } + prop = sym_get_range_prop(sym); + if (!prop) + return; + val = strtoll(sym->curr.val, NULL, base); + val2 = sym_get_range_val(prop->expr->left.sym, base); + if (val >= val2) { + val2 = sym_get_range_val(prop->expr->right.sym, base); + if (val <= val2) + return; + } + if (sym->type == S_INT) + sprintf(str, "%lld", val2); + else + sprintf(str, "0x%llx", val2); + sym->curr.val = xstrdup(str); +} + +static void sym_set_changed(struct symbol *sym) +{ + struct property *prop; + + sym->flags |= SYMBOL_CHANGED; + for (prop = sym->prop; prop; prop = prop->next) { + if (prop->menu) + prop->menu->flags |= MENU_CHANGED; + } +} + +static void sym_set_all_changed(void) +{ + struct symbol *sym; + int i; + + for_all_symbols(i, sym) + sym_set_changed(sym); +} + +static void sym_calc_visibility(struct symbol *sym) +{ + struct property *prop; + struct symbol *choice_sym = NULL; + tristate tri; + + /* any prompt visible? */ + tri = no; + + if (sym_is_choice_value(sym)) + choice_sym = prop_get_symbol(sym_get_choice_prop(sym)); + + for_all_prompts(sym, prop) { + prop->visible.tri = expr_calc_value(prop->visible.expr); + /* + * Tristate choice_values with visibility 'mod' are + * not visible if the corresponding choice's value is + * 'yes'. + */ + if (choice_sym && sym->type == S_TRISTATE && + prop->visible.tri == mod && choice_sym->curr.tri == yes) + prop->visible.tri = no; + + tri = EXPR_OR(tri, prop->visible.tri); + } + if (tri == mod && (sym->type != S_TRISTATE || modules_val == no)) + tri = yes; + if (sym->visible != tri) { + sym->visible = tri; + sym_set_changed(sym); + } + if (sym_is_choice_value(sym)) + return; + /* defaulting to "yes" if no explicit "depends on" are given */ + tri = yes; + if (sym->dir_dep.expr) + tri = expr_calc_value(sym->dir_dep.expr); + if (tri == mod && sym_get_type(sym) == S_BOOLEAN) + tri = yes; + if (sym->dir_dep.tri != tri) { + sym->dir_dep.tri = tri; + sym_set_changed(sym); + } + tri = no; + if (sym->rev_dep.expr) + tri = expr_calc_value(sym->rev_dep.expr); + if (tri == mod && sym_get_type(sym) == S_BOOLEAN) + tri = yes; + if (sym->rev_dep.tri != tri) { + sym->rev_dep.tri = tri; + sym_set_changed(sym); + } + tri = no; + if (sym->implied.expr && sym->dir_dep.tri != no) + tri = expr_calc_value(sym->implied.expr); + if (tri == mod && sym_get_type(sym) == S_BOOLEAN) + tri = yes; + if (sym->implied.tri != tri) { + sym->implied.tri = tri; + sym_set_changed(sym); + } +} + +/* + * Find the default symbol for a choice. + * First try the default values for the choice symbol + * Next locate the first visible choice value + * Return NULL if none was found + */ +struct symbol *sym_choice_default(struct symbol *sym) +{ + struct symbol *def_sym; + struct property *prop; + struct expr *e; + + /* any of the defaults visible? */ + for_all_defaults(sym, prop) { + prop->visible.tri = expr_calc_value(prop->visible.expr); + if (prop->visible.tri == no) + continue; + def_sym = prop_get_symbol(prop); + if (def_sym->visible != no) + return def_sym; + } + + /* just get the first visible value */ + prop = sym_get_choice_prop(sym); + expr_list_for_each_sym(prop->expr, e, def_sym) + if (def_sym->visible != no) + return def_sym; + + /* failed to locate any defaults */ + return NULL; +} + +static struct symbol *sym_calc_choice(struct symbol *sym) +{ + struct symbol *def_sym; + struct property *prop; + struct expr *e; + int flags; + + /* first calculate all choice values' visibilities */ + flags = sym->flags; + prop = sym_get_choice_prop(sym); + expr_list_for_each_sym(prop->expr, e, def_sym) { + sym_calc_visibility(def_sym); + if (def_sym->visible != no) + flags &= def_sym->flags; + } + + sym->flags &= flags | ~SYMBOL_DEF_USER; + + /* is the user choice visible? */ + def_sym = sym->def[S_DEF_USER].val; + if (def_sym && def_sym->visible != no) + return def_sym; + + def_sym = sym_choice_default(sym); + + if (def_sym == NULL) + /* no choice? reset tristate value */ + sym->curr.tri = no; + + return def_sym; +} + +static void sym_warn_unmet_dep(struct symbol *sym) +{ + struct gstr gs = str_new(); + + str_printf(&gs, + "\nWARNING: unmet direct dependencies detected for %s\n", + sym->name); + str_printf(&gs, + " Depends on [%c]: ", + sym->dir_dep.tri == mod ? 'm' : 'n'); + expr_gstr_print(sym->dir_dep.expr, &gs); + str_printf(&gs, "\n"); + + expr_gstr_print_revdep(sym->rev_dep.expr, &gs, yes, + " Selected by [y]:\n"); + expr_gstr_print_revdep(sym->rev_dep.expr, &gs, mod, + " Selected by [m]:\n"); + + fputs(str_get(&gs), stderr); +} + +void sym_calc_value(struct symbol *sym) +{ + struct symbol_value newval, oldval; + struct property *prop; + struct expr *e; + + if (!sym) + return; + + if (sym->flags & SYMBOL_VALID) + return; + + if (sym_is_choice_value(sym) && + sym->flags & SYMBOL_NEED_SET_CHOICE_VALUES) { + sym->flags &= ~SYMBOL_NEED_SET_CHOICE_VALUES; + prop = sym_get_choice_prop(sym); + sym_calc_value(prop_get_symbol(prop)); + } + + sym->flags |= SYMBOL_VALID; + + oldval = sym->curr; + + switch (sym->type) { + case S_INT: + case S_HEX: + case S_STRING: + newval = symbol_empty.curr; + break; + case S_BOOLEAN: + case S_TRISTATE: + newval = symbol_no.curr; + break; + default: + sym->curr.val = sym->name; + sym->curr.tri = no; + return; + } + sym->flags &= ~SYMBOL_WRITE; + + sym_calc_visibility(sym); + + if (sym->visible != no) + sym->flags |= SYMBOL_WRITE; + + /* set default if recursively called */ + sym->curr = newval; + + switch (sym_get_type(sym)) { + case S_BOOLEAN: + case S_TRISTATE: + if (sym_is_choice_value(sym) && sym->visible == yes) { + prop = sym_get_choice_prop(sym); + newval.tri = (prop_get_symbol(prop)->curr.val == sym) ? yes : no; + } else { + if (sym->visible != no) { + /* if the symbol is visible use the user value + * if available, otherwise try the default value + */ + if (sym_has_value(sym)) { + newval.tri = EXPR_AND(sym->def[S_DEF_USER].tri, + sym->visible); + goto calc_newval; + } + } + if (sym->rev_dep.tri != no) + sym->flags |= SYMBOL_WRITE; + if (!sym_is_choice(sym)) { + prop = sym_get_default_prop(sym); + if (prop) { + newval.tri = EXPR_AND(expr_calc_value(prop->expr), + prop->visible.tri); + if (newval.tri != no) + sym->flags |= SYMBOL_WRITE; + } + if (sym->implied.tri != no) { + sym->flags |= SYMBOL_WRITE; + newval.tri = EXPR_OR(newval.tri, sym->implied.tri); + } + } + calc_newval: + if (sym->dir_dep.tri < sym->rev_dep.tri) + sym_warn_unmet_dep(sym); + newval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri); + } + if (newval.tri == mod && + (sym_get_type(sym) == S_BOOLEAN || sym->implied.tri == yes)) + newval.tri = yes; + break; + case S_STRING: + case S_HEX: + case S_INT: + if (sym->visible != no && sym_has_value(sym)) { + newval.val = sym->def[S_DEF_USER].val; + break; + } + prop = sym_get_default_prop(sym); + if (prop) { + struct symbol *ds = prop_get_symbol(prop); + if (ds) { + sym->flags |= SYMBOL_WRITE; + sym_calc_value(ds); + newval.val = ds->curr.val; + } + } + break; + default: + ; + } + + sym->curr = newval; + if (sym_is_choice(sym) && newval.tri == yes) + sym->curr.val = sym_calc_choice(sym); + sym_validate_range(sym); + + if (memcmp(&oldval, &sym->curr, sizeof(oldval))) { + sym_set_changed(sym); + if (modules_sym == sym) { + sym_set_all_changed(); + modules_val = modules_sym->curr.tri; + } + } + + if (sym_is_choice(sym)) { + struct symbol *choice_sym; + + prop = sym_get_choice_prop(sym); + expr_list_for_each_sym(prop->expr, e, choice_sym) { + if ((sym->flags & SYMBOL_WRITE) && + choice_sym->visible != no) + choice_sym->flags |= SYMBOL_WRITE; + if (sym->flags & SYMBOL_CHANGED) + sym_set_changed(choice_sym); + } + } + + if (sym->flags & SYMBOL_AUTO) + sym->flags &= ~SYMBOL_WRITE; + + if (sym->flags & SYMBOL_NEED_SET_CHOICE_VALUES) + set_all_choice_values(sym); +} + +void sym_clear_all_valid(void) +{ + struct symbol *sym; + int i; + + for_all_symbols(i, sym) + sym->flags &= ~SYMBOL_VALID; + sym_add_change_count(1); + sym_calc_value(modules_sym); +} + +bool sym_tristate_within_range(struct symbol *sym, tristate val) +{ + int type = sym_get_type(sym); + + if (sym->visible == no) + return false; + + if (type != S_BOOLEAN && type != S_TRISTATE) + return false; + + if (type == S_BOOLEAN && val == mod) + return false; + if (sym->visible <= sym->rev_dep.tri) + return false; + if (sym->implied.tri == yes && val == mod) + return false; + if (sym_is_choice_value(sym) && sym->visible == yes) + return val == yes; + return val >= sym->rev_dep.tri && val <= sym->visible; +} + +bool sym_set_tristate_value(struct symbol *sym, tristate val) +{ + tristate oldval = sym_get_tristate_value(sym); + + if (oldval != val && !sym_tristate_within_range(sym, val)) + return false; + + if (!(sym->flags & SYMBOL_DEF_USER)) { + sym->flags |= SYMBOL_DEF_USER; + sym_set_changed(sym); + } + /* + * setting a choice value also resets the new flag of the choice + * symbol and all other choice values. + */ + if (sym_is_choice_value(sym) && val == yes) { + struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym)); + struct property *prop; + struct expr *e; + + cs->def[S_DEF_USER].val = sym; + cs->flags |= SYMBOL_DEF_USER; + prop = sym_get_choice_prop(cs); + for (e = prop->expr; e; e = e->left.expr) { + if (e->right.sym->visible != no) + e->right.sym->flags |= SYMBOL_DEF_USER; + } + } + + sym->def[S_DEF_USER].tri = val; + if (oldval != val) + sym_clear_all_valid(); + + return true; +} + +tristate sym_toggle_tristate_value(struct symbol *sym) +{ + tristate oldval, newval; + + oldval = newval = sym_get_tristate_value(sym); + do { + switch (newval) { + case no: + newval = mod; + break; + case mod: + newval = yes; + break; + case yes: + newval = no; + break; + } + if (sym_set_tristate_value(sym, newval)) + break; + } while (oldval != newval); + return newval; +} + +bool sym_string_valid(struct symbol *sym, const char *str) +{ + signed char ch; + + switch (sym->type) { + case S_STRING: + return true; + case S_INT: + ch = *str++; + if (ch == '-') + ch = *str++; + if (!isdigit(ch)) + return false; + if (ch == '0' && *str != 0) + return false; + while ((ch = *str++)) { + if (!isdigit(ch)) + return false; + } + return true; + case S_HEX: + if (str[0] == '0' && (str[1] == 'x' || str[1] == 'X')) + str += 2; + ch = *str++; + do { + if (!isxdigit(ch)) + return false; + } while ((ch = *str++)); + return true; + case S_BOOLEAN: + case S_TRISTATE: + switch (str[0]) { + case 'y': case 'Y': + case 'm': case 'M': + case 'n': case 'N': + return true; + } + return false; + default: + return false; + } +} + +bool sym_string_within_range(struct symbol *sym, const char *str) +{ + struct property *prop; + long long val; + + switch (sym->type) { + case S_STRING: + return sym_string_valid(sym, str); + case S_INT: + if (!sym_string_valid(sym, str)) + return false; + prop = sym_get_range_prop(sym); + if (!prop) + return true; + val = strtoll(str, NULL, 10); + return val >= sym_get_range_val(prop->expr->left.sym, 10) && + val <= sym_get_range_val(prop->expr->right.sym, 10); + case S_HEX: + if (!sym_string_valid(sym, str)) + return false; + prop = sym_get_range_prop(sym); + if (!prop) + return true; + val = strtoll(str, NULL, 16); + return val >= sym_get_range_val(prop->expr->left.sym, 16) && + val <= sym_get_range_val(prop->expr->right.sym, 16); + case S_BOOLEAN: + case S_TRISTATE: + switch (str[0]) { + case 'y': case 'Y': + return sym_tristate_within_range(sym, yes); + case 'm': case 'M': + return sym_tristate_within_range(sym, mod); + case 'n': case 'N': + return sym_tristate_within_range(sym, no); + } + return false; + default: + return false; + } +} + +bool sym_set_string_value(struct symbol *sym, const char *newval) +{ + const char *oldval; + char *val; + int size; + + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + switch (newval[0]) { + case 'y': case 'Y': + return sym_set_tristate_value(sym, yes); + case 'm': case 'M': + return sym_set_tristate_value(sym, mod); + case 'n': case 'N': + return sym_set_tristate_value(sym, no); + } + return false; + default: + ; + } + + if (!sym_string_within_range(sym, newval)) + return false; + + if (!(sym->flags & SYMBOL_DEF_USER)) { + sym->flags |= SYMBOL_DEF_USER; + sym_set_changed(sym); + } + + oldval = sym->def[S_DEF_USER].val; + size = strlen(newval) + 1; + if (sym->type == S_HEX && (newval[0] != '0' || (newval[1] != 'x' && newval[1] != 'X'))) { + size += 2; + sym->def[S_DEF_USER].val = val = xmalloc(size); + *val++ = '0'; + *val++ = 'x'; + } else if (!oldval || strcmp(oldval, newval)) + sym->def[S_DEF_USER].val = val = xmalloc(size); + else + return true; + + strcpy(val, newval); + free((void *)oldval); + sym_clear_all_valid(); + + return true; +} + +/* + * Find the default value associated to a symbol. + * For tristate symbol handle the modules=n case + * in which case "m" becomes "y". + * If the symbol does not have any default then fallback + * to the fixed default values. + */ +const char *sym_get_string_default(struct symbol *sym) +{ + struct property *prop; + struct symbol *ds; + const char *str; + tristate val; + + sym_calc_visibility(sym); + sym_calc_value(modules_sym); + val = symbol_no.curr.tri; + str = symbol_empty.curr.val; + + /* If symbol has a default value look it up */ + prop = sym_get_default_prop(sym); + if (prop != NULL) { + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + /* The visibility may limit the value from yes => mod */ + val = EXPR_AND(expr_calc_value(prop->expr), prop->visible.tri); + break; + default: + /* + * The following fails to handle the situation + * where a default value is further limited by + * the valid range. + */ + ds = prop_get_symbol(prop); + if (ds != NULL) { + sym_calc_value(ds); + str = (const char *)ds->curr.val; + } + } + } + + /* Handle select statements */ + val = EXPR_OR(val, sym->rev_dep.tri); + + /* transpose mod to yes if modules are not enabled */ + if (val == mod) + if (!sym_is_choice_value(sym) && modules_sym->curr.tri == no) + val = yes; + + /* transpose mod to yes if type is bool */ + if (sym->type == S_BOOLEAN && val == mod) + val = yes; + + /* adjust the default value if this symbol is implied by another */ + if (val < sym->implied.tri) + val = sym->implied.tri; + + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + switch (val) { + case no: return "n"; + case mod: return "m"; + case yes: return "y"; + } + case S_INT: + case S_HEX: + return str; + case S_STRING: + return str; + case S_OTHER: + case S_UNKNOWN: + break; + } + return ""; +} + +const char *sym_get_string_value(struct symbol *sym) +{ + tristate val; + + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + val = sym_get_tristate_value(sym); + switch (val) { + case no: + return "n"; + case mod: + sym_calc_value(modules_sym); + return (modules_sym->curr.tri == no) ? "n" : "m"; + case yes: + return "y"; + } + break; + default: + ; + } + return (const char *)sym->curr.val; +} + +bool sym_is_changable(struct symbol *sym) +{ + return sym->visible > sym->rev_dep.tri; +} + +static unsigned strhash(const char *s) +{ + /* fnv32 hash */ + unsigned hash = 2166136261U; + for (; *s; s++) + hash = (hash ^ *s) * 0x01000193; + return hash; +} + +struct symbol *sym_lookup(const char *name, int flags) +{ + struct symbol *symbol; + char *new_name; + int hash; + + if (name) { + if (name[0] && !name[1]) { + switch (name[0]) { + case 'y': return &symbol_yes; + case 'm': return &symbol_mod; + case 'n': return &symbol_no; + } + } + hash = strhash(name) % SYMBOL_HASHSIZE; + + for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) { + if (symbol->name && + !strcmp(symbol->name, name) && + (flags ? symbol->flags & flags + : !(symbol->flags & (SYMBOL_CONST|SYMBOL_CHOICE)))) + return symbol; + } + new_name = xstrdup(name); + } else { + new_name = NULL; + hash = 0; + } + + symbol = xmalloc(sizeof(*symbol)); + memset(symbol, 0, sizeof(*symbol)); + symbol->name = new_name; + symbol->type = S_UNKNOWN; + symbol->flags |= flags; + + symbol->next = symbol_hash[hash]; + symbol_hash[hash] = symbol; + + return symbol; +} + +struct symbol *sym_find(const char *name) +{ + struct symbol *symbol = NULL; + int hash = 0; + + if (!name) + return NULL; + + if (name[0] && !name[1]) { + switch (name[0]) { + case 'y': return &symbol_yes; + case 'm': return &symbol_mod; + case 'n': return &symbol_no; + } + } + hash = strhash(name) % SYMBOL_HASHSIZE; + + for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) { + if (symbol->name && + !strcmp(symbol->name, name) && + !(symbol->flags & SYMBOL_CONST)) + break; + } + + return symbol; +} + +/* + * Expand symbol's names embedded in the string given in argument. Symbols' + * name to be expanded shall be prefixed by a '$'. Unknown symbol expands to + * the empty string. + */ +char *sym_expand_string_value(const char *in) +{ + const char *src; + char *res; + size_t reslen; + + /* + * Note: 'in' might come from a token that's about to be + * freed, so make sure to always allocate a new string + */ + reslen = strlen(in) + 1; + res = xmalloc(reslen); + res[0] = '\0'; + + while ((src = strchr(in, '$'))) { + char *p, name[SYMBOL_MAXLENGTH]; + const char *symval = ""; + struct symbol *sym; + size_t newlen; + + strncat(res, in, src - in); + src++; + + p = name; + while (isalnum(*src) || *src == '_') + *p++ = *src++; + *p = '\0'; + + sym = sym_find(name); + if (sym != NULL) { + sym_calc_value(sym); + symval = sym_get_string_value(sym); + } + + newlen = strlen(res) + strlen(symval) + strlen(src) + 1; + if (newlen > reslen) { + reslen = newlen; + res = xrealloc(res, reslen); + } + + strcat(res, symval); + in = src; + } + strcat(res, in); + + return res; +} + +const char *sym_escape_string_value(const char *in) +{ + const char *p; + size_t reslen; + char *res; + size_t l; + + reslen = strlen(in) + strlen("\"\"") + 1; + + p = in; + for (;;) { + l = strcspn(p, "\"\\"); + p += l; + + if (p[0] == '\0') + break; + + reslen++; + p++; + } + + res = xmalloc(reslen); + res[0] = '\0'; + + strcat(res, "\""); + + p = in; + for (;;) { + l = strcspn(p, "\"\\"); + strncat(res, p, l); + p += l; + + if (p[0] == '\0') + break; + + strcat(res, "\\"); + strncat(res, p++, 1); + } + + strcat(res, "\""); + return res; +} + +struct sym_match { + struct symbol *sym; + off_t so, eo; +}; + +/* Compare matched symbols as thus: + * - first, symbols that match exactly + * - then, alphabetical sort + */ +static int sym_rel_comp(const void *sym1, const void *sym2) +{ + const struct sym_match *s1 = sym1; + const struct sym_match *s2 = sym2; + int exact1, exact2; + + /* Exact match: + * - if matched length on symbol s1 is the length of that symbol, + * then this symbol should come first; + * - if matched length on symbol s2 is the length of that symbol, + * then this symbol should come first. + * Note: since the search can be a regexp, both symbols may match + * exactly; if this is the case, we can't decide which comes first, + * and we fallback to sorting alphabetically. + */ + exact1 = (s1->eo - s1->so) == strlen(s1->sym->name); + exact2 = (s2->eo - s2->so) == strlen(s2->sym->name); + if (exact1 && !exact2) + return -1; + if (!exact1 && exact2) + return 1; + + /* As a fallback, sort symbols alphabetically */ + return strcmp(s1->sym->name, s2->sym->name); +} + +struct symbol **sym_re_search(const char *pattern) +{ + struct symbol *sym, **sym_arr = NULL; + struct sym_match *sym_match_arr = NULL; + int i, cnt, size; + regex_t re; + regmatch_t match[1]; + + cnt = size = 0; + /* Skip if empty */ + if (strlen(pattern) == 0) + return NULL; + if (regcomp(&re, pattern, REG_EXTENDED|REG_ICASE)) + return NULL; + + for_all_symbols(i, sym) { + if (sym->flags & SYMBOL_CONST || !sym->name) + continue; + if (regexec(&re, sym->name, 1, match, 0)) + continue; + if (cnt >= size) { + void *tmp; + size += 16; + tmp = realloc(sym_match_arr, size * sizeof(struct sym_match)); + if (!tmp) + goto sym_re_search_free; + sym_match_arr = tmp; + } + sym_calc_value(sym); + /* As regexec returned 0, we know we have a match, so + * we can use match[0].rm_[se]o without further checks + */ + sym_match_arr[cnt].so = match[0].rm_so; + sym_match_arr[cnt].eo = match[0].rm_eo; + sym_match_arr[cnt++].sym = sym; + } + if (sym_match_arr) { + qsort(sym_match_arr, cnt, sizeof(struct sym_match), sym_rel_comp); + sym_arr = malloc((cnt+1) * sizeof(struct symbol *)); + if (!sym_arr) + goto sym_re_search_free; + for (i = 0; i < cnt; i++) + sym_arr[i] = sym_match_arr[i].sym; + sym_arr[cnt] = NULL; + } +sym_re_search_free: + /* sym_match_arr can be NULL if no match, but free(NULL) is OK */ + free(sym_match_arr); + regfree(&re); + + return sym_arr; +} + +/* + * When we check for recursive dependencies we use a stack to save + * current state so we can print out relevant info to user. + * The entries are located on the call stack so no need to free memory. + * Note insert() remove() must always match to properly clear the stack. + */ +static struct dep_stack { + struct dep_stack *prev, *next; + struct symbol *sym; + struct property *prop; + struct expr *expr; +} *check_top; + +static void dep_stack_insert(struct dep_stack *stack, struct symbol *sym) +{ + memset(stack, 0, sizeof(*stack)); + if (check_top) + check_top->next = stack; + stack->prev = check_top; + stack->sym = sym; + check_top = stack; +} + +static void dep_stack_remove(void) +{ + check_top = check_top->prev; + if (check_top) + check_top->next = NULL; +} + +/* + * Called when we have detected a recursive dependency. + * check_top point to the top of the stact so we use + * the ->prev pointer to locate the bottom of the stack. + */ +static void sym_check_print_recursive(struct symbol *last_sym) +{ + struct dep_stack *stack; + struct symbol *sym, *next_sym; + struct menu *menu = NULL; + struct property *prop; + struct dep_stack cv_stack; + + if (sym_is_choice_value(last_sym)) { + dep_stack_insert(&cv_stack, last_sym); + last_sym = prop_get_symbol(sym_get_choice_prop(last_sym)); + } + + for (stack = check_top; stack != NULL; stack = stack->prev) + if (stack->sym == last_sym) + break; + if (!stack) { + fprintf(stderr, "unexpected recursive dependency error\n"); + return; + } + + for (; stack; stack = stack->next) { + sym = stack->sym; + next_sym = stack->next ? stack->next->sym : last_sym; + prop = stack->prop; + if (prop == NULL) + prop = stack->sym->prop; + + /* for choice values find the menu entry (used below) */ + if (sym_is_choice(sym) || sym_is_choice_value(sym)) { + for (prop = sym->prop; prop; prop = prop->next) { + menu = prop->menu; + if (prop->menu) + break; + } + } + if (stack->sym == last_sym) + fprintf(stderr, "%s:%d:error: recursive dependency detected!\n", + prop->file->name, prop->lineno); + + if (stack->expr) { + fprintf(stderr, "%s:%d:\tsymbol %s %s value contains %s\n", + prop->file->name, prop->lineno, + sym->name ? sym->name : "", + prop_get_type_name(prop->type), + next_sym->name ? next_sym->name : ""); + } else if (stack->prop) { + fprintf(stderr, "%s:%d:\tsymbol %s depends on %s\n", + prop->file->name, prop->lineno, + sym->name ? sym->name : "", + next_sym->name ? next_sym->name : ""); + } else if (sym_is_choice(sym)) { + fprintf(stderr, "%s:%d:\tchoice %s contains symbol %s\n", + menu->file->name, menu->lineno, + sym->name ? sym->name : "", + next_sym->name ? next_sym->name : ""); + } else if (sym_is_choice_value(sym)) { + fprintf(stderr, "%s:%d:\tsymbol %s is part of choice %s\n", + menu->file->name, menu->lineno, + sym->name ? sym->name : "", + next_sym->name ? next_sym->name : ""); + } else { + fprintf(stderr, "%s:%d:\tsymbol %s is selected by %s\n", + prop->file->name, prop->lineno, + sym->name ? sym->name : "", + next_sym->name ? next_sym->name : ""); + } + } + + fprintf(stderr, + "For a resolution refer to Documentation/kbuild/kconfig-language.txt\n" + "subsection \"Kconfig recursive dependency limitations\"\n" + "\n"); + + if (check_top == &cv_stack) + dep_stack_remove(); +} + +static struct symbol *sym_check_expr_deps(struct expr *e) +{ + struct symbol *sym; + + if (!e) + return NULL; + switch (e->type) { + case E_OR: + case E_AND: + sym = sym_check_expr_deps(e->left.expr); + if (sym) + return sym; + return sym_check_expr_deps(e->right.expr); + case E_NOT: + return sym_check_expr_deps(e->left.expr); + case E_EQUAL: + case E_GEQ: + case E_GTH: + case E_LEQ: + case E_LTH: + case E_UNEQUAL: + sym = sym_check_deps(e->left.sym); + if (sym) + return sym; + return sym_check_deps(e->right.sym); + case E_SYMBOL: + return sym_check_deps(e->left.sym); + default: + break; + } + fprintf(stderr, "Oops! How to check %d?\n", e->type); + return NULL; +} + +/* return NULL when dependencies are OK */ +static struct symbol *sym_check_sym_deps(struct symbol *sym) +{ + struct symbol *sym2; + struct property *prop; + struct dep_stack stack; + + dep_stack_insert(&stack, sym); + + sym2 = sym_check_expr_deps(sym->rev_dep.expr); + if (sym2) + goto out; + + for (prop = sym->prop; prop; prop = prop->next) { + if (prop->type == P_CHOICE || prop->type == P_SELECT) + continue; + stack.prop = prop; + sym2 = sym_check_expr_deps(prop->visible.expr); + if (sym2) + break; + if (prop->type != P_DEFAULT || sym_is_choice(sym)) + continue; + stack.expr = prop->expr; + sym2 = sym_check_expr_deps(prop->expr); + if (sym2) + break; + stack.expr = NULL; + } + +out: + dep_stack_remove(); + + return sym2; +} + +static struct symbol *sym_check_choice_deps(struct symbol *choice) +{ + struct symbol *sym, *sym2; + struct property *prop; + struct expr *e; + struct dep_stack stack; + + dep_stack_insert(&stack, choice); + + prop = sym_get_choice_prop(choice); + expr_list_for_each_sym(prop->expr, e, sym) + sym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED); + + choice->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED); + sym2 = sym_check_sym_deps(choice); + choice->flags &= ~SYMBOL_CHECK; + if (sym2) + goto out; + + expr_list_for_each_sym(prop->expr, e, sym) { + sym2 = sym_check_sym_deps(sym); + if (sym2) + break; + } +out: + expr_list_for_each_sym(prop->expr, e, sym) + sym->flags &= ~SYMBOL_CHECK; + + if (sym2 && sym_is_choice_value(sym2) && + prop_get_symbol(sym_get_choice_prop(sym2)) == choice) + sym2 = choice; + + dep_stack_remove(); + + return sym2; +} + +struct symbol *sym_check_deps(struct symbol *sym) +{ + struct symbol *sym2; + struct property *prop; + + if (sym->flags & SYMBOL_CHECK) { + sym_check_print_recursive(sym); + return sym; + } + if (sym->flags & SYMBOL_CHECKED) + return NULL; + + if (sym_is_choice_value(sym)) { + struct dep_stack stack; + + /* for choice groups start the check with main choice symbol */ + dep_stack_insert(&stack, sym); + prop = sym_get_choice_prop(sym); + sym2 = sym_check_deps(prop_get_symbol(prop)); + dep_stack_remove(); + } else if (sym_is_choice(sym)) { + sym2 = sym_check_choice_deps(sym); + } else { + sym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED); + sym2 = sym_check_sym_deps(sym); + sym->flags &= ~SYMBOL_CHECK; + } + + if (sym2 && sym2 == sym) + sym2 = NULL; + + return sym2; +} + +struct property *prop_alloc(enum prop_type type, struct symbol *sym) +{ + struct property *prop; + struct property **propp; + + prop = xmalloc(sizeof(*prop)); + memset(prop, 0, sizeof(*prop)); + prop->type = type; + prop->sym = sym; + prop->file = current_file; + prop->lineno = zconf_lineno(); + + /* append property to the prop list of symbol */ + if (sym) { + for (propp = &sym->prop; *propp; propp = &(*propp)->next) + ; + *propp = prop; + } + + return prop; +} + +struct symbol *prop_get_symbol(struct property *prop) +{ + if (prop->expr && (prop->expr->type == E_SYMBOL || + prop->expr->type == E_LIST)) + return prop->expr->left.sym; + return NULL; +} + +const char *prop_get_type_name(enum prop_type type) +{ + switch (type) { + case P_PROMPT: + return "prompt"; + case P_ENV: + return "env"; + case P_COMMENT: + return "comment"; + case P_MENU: + return "menu"; + case P_DEFAULT: + return "default"; + case P_CHOICE: + return "choice"; + case P_SELECT: + return "select"; + case P_IMPLY: + return "imply"; + case P_RANGE: + return "range"; + case P_SYMBOL: + return "symbol"; + case P_UNKNOWN: + break; + } + return "unknown"; +} + +static void prop_add_env(const char *env) +{ + struct symbol *sym, *sym2; + struct property *prop; + char *p; + + sym = current_entry->sym; + sym->flags |= SYMBOL_AUTO; + for_all_properties(sym, prop, P_ENV) { + sym2 = prop_get_symbol(prop); + if (strcmp(sym2->name, env)) + menu_warn(current_entry, "redefining environment symbol from %s", + sym2->name); + return; + } + + prop = prop_alloc(P_ENV, sym); + prop->expr = expr_alloc_symbol(sym_lookup(env, SYMBOL_CONST)); + + sym_env_list = expr_alloc_one(E_LIST, sym_env_list); + sym_env_list->right.sym = sym; + + p = getenv(env); + if (p) + sym_add_default(sym, p); + else + menu_warn(current_entry, "environment variable %s undefined", env); +} diff --git a/support/kconfig/util.c b/support/kconfig/util.c new file mode 100644 index 00000000..8665f5bb --- /dev/null +++ b/support/kconfig/util.c @@ -0,0 +1,179 @@ +/* + * Copyright (C) 2002-2005 Roman Zippel + * Copyright (C) 2002-2005 Sam Ravnborg + * + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include "lkc.h" + +/* file already present in list? If not add it */ +struct file *file_lookup(const char *name) +{ + struct file *file; + char *file_name = sym_expand_string_value(name); + + for (file = file_list; file; file = file->next) { + if (!strcmp(name, file->name)) { + free(file_name); + return file; + } + } + + file = xmalloc(sizeof(*file)); + memset(file, 0, sizeof(*file)); + file->name = file_name; + file->next = file_list; + file_list = file; + return file; +} + +/* write a dependency file as used by kbuild to track dependencies */ +int file_write_dep(const char *name) +{ + char *str; + char buf[PATH_MAX+20], buf2[PATH_MAX+1], dir[PATH_MAX+1]; + struct symbol *sym, *env_sym; + struct expr *e; + struct file *file; + FILE *out; + + if (!name) + name = ".kconfig.d"; + + strcpy(dir, conf_get_configname()); + str = strrchr(dir, '/'); + if (str) + str[1] = 0; + else + dir[0] = 0; + + sprintf(buf, "%s..config.tmp", dir); + out = fopen(buf, "w"); + if (!out) + return 1; + fprintf(out, "deps_config := \\\n"); + for (file = file_list; file; file = file->next) { + if (file->next) + fprintf(out, "\t%s \\\n", file->name); + else + fprintf(out, "\t%s\n", file->name); + } + fprintf(out, "\n%s: \\\n" + "\t$(deps_config)\n\n", conf_get_autoconfig_name()); + + expr_list_for_each_sym(sym_env_list, e, sym) { + struct property *prop; + const char *value; + + prop = sym_get_env_prop(sym); + env_sym = prop_get_symbol(prop); + if (!env_sym) + continue; + value = getenv(env_sym->name); + if (!value) + value = ""; + fprintf(out, "ifneq \"$(%s)\" \"%s\"\n", env_sym->name, value); + fprintf(out, "%s: FORCE\n", conf_get_autoconfig_name()); + fprintf(out, "endif\n"); + } + + fprintf(out, "\n$(deps_config): ;\n"); + fclose(out); + sprintf(buf2, "%s%s", dir, name); + rename(buf, buf2); + return 0; +} + + +/* Allocate initial growable string */ +struct gstr str_new(void) +{ + struct gstr gs; + gs.s = xmalloc(sizeof(char) * 64); + gs.len = 64; + gs.max_width = 0; + strcpy(gs.s, "\0"); + return gs; +} + +/* Free storage for growable string */ +void str_free(struct gstr *gs) +{ + if (gs->s) + free(gs->s); + gs->s = NULL; + gs->len = 0; +} + +/* Append to growable string */ +void str_append(struct gstr *gs, const char *s) +{ + size_t l; + if (s) { + l = strlen(gs->s) + strlen(s) + 1; + if (l > gs->len) { + gs->s = xrealloc(gs->s, l); + gs->len = l; + } + strcat(gs->s, s); + } +} + +/* Append printf formatted string to growable string */ +void str_printf(struct gstr *gs, const char *fmt, ...) +{ + va_list ap; + char s[10000]; /* big enough... */ + va_start(ap, fmt); + vsnprintf(s, sizeof(s), fmt, ap); + str_append(gs, s); + va_end(ap); +} + +/* Retrieve value of growable string */ +const char *str_get(struct gstr *gs) +{ + return gs->s; +} + +void *xmalloc(size_t size) +{ + void *p = malloc(size); + if (p) + return p; + fprintf(stderr, "Out of memory.\n"); + exit(1); +} + +void *xcalloc(size_t nmemb, size_t size) +{ + void *p = calloc(nmemb, size); + if (p) + return p; + fprintf(stderr, "Out of memory.\n"); + exit(1); +} + +void *xrealloc(void *p, size_t size) +{ + p = realloc(p, size); + if (p) + return p; + fprintf(stderr, "Out of memory.\n"); + exit(1); +} + +char *xstrdup(const char *s) +{ + char *p; + + p = strdup(s); + if (p) + return p; + fprintf(stderr, "Out of memory.\n"); + exit(1); +} diff --git a/support/kconfig/zconf.l b/support/kconfig/zconf.l new file mode 100644 index 00000000..045093d8 --- /dev/null +++ b/support/kconfig/zconf.l @@ -0,0 +1,372 @@ +%option nostdinit noyywrap never-interactive full ecs +%option 8bit nodefault yylineno +%option noinput +%x COMMAND HELP STRING PARAM +%{ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include + +#include "lkc.h" + +#define START_STRSIZE 16 + +static struct { + struct file *file; + int lineno; +} current_pos; + +static char *text; +static int text_size, text_asize; + +struct buffer { + struct buffer *parent; + YY_BUFFER_STATE state; +}; + +struct buffer *current_buf; + +static int last_ts, first_ts; + +static void zconf_endhelp(void); +static void zconf_endfile(void); + +static void new_string(void) +{ + text = xmalloc(START_STRSIZE); + text_asize = START_STRSIZE; + text_size = 0; + *text = 0; +} + +static void append_string(const char *str, int size) +{ + int new_size = text_size + size + 1; + if (new_size > text_asize) { + new_size += START_STRSIZE - 1; + new_size &= -START_STRSIZE; + text = xrealloc(text, new_size); + text_asize = new_size; + } + memcpy(text + text_size, str, size); + text_size += size; + text[text_size] = 0; +} + +static void alloc_string(const char *str, int size) +{ + text = xmalloc(size + 1); + memcpy(text, str, size); + text[size] = 0; +} + +static void warn_ignored_character(char chr) +{ + fprintf(stderr, + "%s:%d:warning: ignoring unsupported character '%c'\n", + zconf_curname(), zconf_lineno(), chr); +} +%} + +n [A-Za-z0-9_-] + +%% + int str = 0; + int ts, i; + +[ \t]*#.*\n | +[ \t]*\n { + return T_EOL; +} +[ \t]*#.* + + +[ \t]+ { + BEGIN(COMMAND); +} + +. { + unput(yytext[0]); + BEGIN(COMMAND); +} + + +{ + {n}+ { + const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); + BEGIN(PARAM); + current_pos.file = current_file; + current_pos.lineno = yylineno; + if (id && id->flags & TF_COMMAND) { + yylval.id = id; + return id->token; + } + alloc_string(yytext, yyleng); + yylval.string = text; + return T_WORD; + } + . warn_ignored_character(*yytext); + \n { + BEGIN(INITIAL); + return T_EOL; + } +} + +{ + "&&" return T_AND; + "||" return T_OR; + "(" return T_OPEN_PAREN; + ")" return T_CLOSE_PAREN; + "!" return T_NOT; + "=" return T_EQUAL; + "!=" return T_UNEQUAL; + "<=" return T_LESS_EQUAL; + ">=" return T_GREATER_EQUAL; + "<" return T_LESS; + ">" return T_GREATER; + \"|\' { + str = yytext[0]; + new_string(); + BEGIN(STRING); + } + \n BEGIN(INITIAL); return T_EOL; + ({n}|[/.])+ { + const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); + if (id && id->flags & TF_PARAM) { + yylval.id = id; + return id->token; + } + alloc_string(yytext, yyleng); + yylval.string = text; + return T_WORD; + } + #.* /* comment */ + \\\n ; + [[:blank:]]+ + . warn_ignored_character(*yytext); + <> { + BEGIN(INITIAL); + } +} + +{ + [^'"\\\n]+/\n { + append_string(yytext, yyleng); + yylval.string = text; + return T_WORD_QUOTE; + } + [^'"\\\n]+ { + append_string(yytext, yyleng); + } + \\.?/\n { + append_string(yytext + 1, yyleng - 1); + yylval.string = text; + return T_WORD_QUOTE; + } + \\.? { + append_string(yytext + 1, yyleng - 1); + } + \'|\" { + if (str == yytext[0]) { + BEGIN(PARAM); + yylval.string = text; + return T_WORD_QUOTE; + } else + append_string(yytext, 1); + } + \n { + fprintf(stderr, + "%s:%d:warning: multi-line strings not supported\n", + zconf_curname(), zconf_lineno()); + BEGIN(INITIAL); + return T_EOL; + } + <> { + BEGIN(INITIAL); + } +} + +{ + [ \t]+ { + ts = 0; + for (i = 0; i < yyleng; i++) { + if (yytext[i] == '\t') + ts = (ts & ~7) + 8; + else + ts++; + } + last_ts = ts; + if (first_ts) { + if (ts < first_ts) { + zconf_endhelp(); + return T_HELPTEXT; + } + ts -= first_ts; + while (ts > 8) { + append_string(" ", 8); + ts -= 8; + } + append_string(" ", ts); + } + } + [ \t]*\n/[^ \t\n] { + zconf_endhelp(); + return T_HELPTEXT; + } + [ \t]*\n { + append_string("\n", 1); + } + [^ \t\n].* { + while (yyleng) { + if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t')) + break; + yyleng--; + } + append_string(yytext, yyleng); + if (!first_ts) + first_ts = last_ts; + } + <> { + zconf_endhelp(); + return T_HELPTEXT; + } +} + +<> { + if (current_file) { + zconf_endfile(); + return T_EOL; + } + fclose(yyin); + yyterminate(); +} + +%% +void zconf_starthelp(void) +{ + new_string(); + last_ts = first_ts = 0; + BEGIN(HELP); +} + +static void zconf_endhelp(void) +{ + yylval.string = text; + BEGIN(INITIAL); +} + + +/* + * Try to open specified file with following names: + * ./name + * $(srctree)/name + * The latter is used when srctree is separate from objtree + * when compiling the kernel. + * Return NULL if file is not found. + */ +FILE *zconf_fopen(const char *name) +{ + char *env, fullname[PATH_MAX+1]; + FILE *f; + + f = fopen(name, "r"); + if (!f && name != NULL && name[0] != '/') { + env = getenv(SRCTREE); + if (env) { + sprintf(fullname, "%s/%s", env, name); + f = fopen(fullname, "r"); + } + } + return f; +} + +void zconf_initscan(const char *name) +{ + yyin = zconf_fopen(name); + if (!yyin) { + fprintf(stderr, "can't find file %s\n", name); + exit(1); + } + + current_buf = xmalloc(sizeof(*current_buf)); + memset(current_buf, 0, sizeof(*current_buf)); + + current_file = file_lookup(name); + yylineno = 1; +} + +void zconf_nextfile(const char *name) +{ + struct file *iter; + struct file *file = file_lookup(name); + struct buffer *buf = xmalloc(sizeof(*buf)); + memset(buf, 0, sizeof(*buf)); + + current_buf->state = YY_CURRENT_BUFFER; + yyin = zconf_fopen(file->name); + if (!yyin) { + fprintf(stderr, "%s:%d: can't open file \"%s\"\n", + zconf_curname(), zconf_lineno(), file->name); + exit(1); + } + yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); + buf->parent = current_buf; + current_buf = buf; + + current_file->lineno = yylineno; + file->parent = current_file; + + for (iter = current_file; iter; iter = iter->parent) { + if (!strcmp(iter->name, file->name)) { + fprintf(stderr, + "Recursive inclusion detected.\n" + "Inclusion path:\n" + " current file : %s\n", file->name); + iter = file; + do { + iter = iter->parent; + fprintf(stderr, " included from: %s:%d\n", + iter->name, iter->lineno - 1); + } while (strcmp(iter->name, file->name)); + exit(1); + } + } + + yylineno = 1; + current_file = file; +} + +static void zconf_endfile(void) +{ + struct buffer *parent; + + current_file = current_file->parent; + if (current_file) + yylineno = current_file->lineno; + + parent = current_buf->parent; + if (parent) { + fclose(yyin); + yy_delete_buffer(YY_CURRENT_BUFFER); + yy_switch_to_buffer(parent->state); + } + free(current_buf); + current_buf = parent; +} + +int zconf_lineno(void) +{ + return current_pos.lineno; +} + +const char *zconf_curname(void) +{ + return current_pos.file ? current_pos.file->name : ""; +} diff --git a/support/kconfig/zconf.lex.c_shipped b/support/kconfig/zconf.lex.c_shipped new file mode 100644 index 00000000..33913d43 --- /dev/null +++ b/support/kconfig/zconf.lex.c_shipped @@ -0,0 +1,2500 @@ + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 6 +#define YY_FLEX_SUBMINOR_VERSION 4 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#ifndef SIZE_MAX +#define SIZE_MAX (~(size_t)0) +#endif + +#endif /* ! C99 */ + +#endif /* ! FLEXINT_H */ + +/* begin standard C++ headers. */ + +/* TODO: this is always defined, so inline it */ +#define yyconst const + +#if defined(__GNUC__) && __GNUC__ >= 3 +#define yynoreturn __attribute__((__noreturn__)) +#else +#define yynoreturn +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an + * integer in range [0..255] for use as an array index. + */ +#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart( yyin ) +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else +#define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern int yyleng; + +extern FILE *yyin, *yyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires + * access to the local variable yy_act. Since yyless() is a macro, it would break + * existing scanners that call yyless() from OUTSIDE yylex. + * One obvious solution it to make yy_act a global. I tried that, and saw + * a 5% performance hit in a non-yylineno scanner, because yy_act is + * normally declared as a register variable-- so it is not worth it. + */ + #define YY_LESS_LINENO(n) \ + do { \ + int yyl;\ + for ( yyl = n; yyl < yyleng; ++yyl )\ + if ( yytext[yyl] == '\n' )\ + --yylineno;\ + }while(0) + #define YY_LINENO_REWIND_TO(dst) \ + do {\ + const char *p;\ + for ( p = yy_cp-1; p >= (dst); --p)\ + if ( *p == '\n' )\ + --yylineno;\ + }while(0) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) +#define unput(c) yyunput( c, (yytext_ptr) ) + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + int yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = NULL; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart ( FILE *input_file ); +void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); +void yy_delete_buffer ( YY_BUFFER_STATE b ); +void yy_flush_buffer ( YY_BUFFER_STATE b ); +void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state ( void ); + +static void yyensure_buffer_stack ( void ); +static void yy_load_buffer_state ( void ); +static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); +#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); +YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); + +void *yyalloc ( yy_size_t ); +void *yyrealloc ( void *, yy_size_t ); +void yyfree ( void * ); + +#define yy_new_buffer yy_create_buffer +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +#define yywrap() (/*CONSTCOND*/1) +#define YY_SKIP_YYWRAP +typedef flex_uint8_t YY_CHAR; + +FILE *yyin = NULL, *yyout = NULL; + +typedef int yy_state_type; + +extern int yylineno; +int yylineno = 1; + +extern char *yytext; +#ifdef yytext_ptr +#undef yytext_ptr +#endif +#define yytext_ptr yytext + +static const flex_int16_t yy_nxt[][18] = + { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 + }, + + { + 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12 + }, + + { + 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12 + }, + + { + 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, + 16, 18, 16, 16, 16, 16, 16, 16 + }, + + { + 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, + 16, 18, 16, 16, 16, 16, 16, 16 + + }, + + { + 11, 19, 20, 21, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19 + }, + + { + 11, 19, 20, 21, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19 + }, + + { + 11, 22, 22, 23, 22, 24, 22, 22, 24, 22, + 22, 22, 22, 22, 22, 22, 25, 22 + }, + + { + 11, 22, 22, 23, 22, 24, 22, 22, 24, 22, + 22, 22, 22, 22, 22, 22, 25, 22 + }, + + { + 11, 26, 27, 28, 29, 30, 31, 32, 30, 33, + 34, 35, 35, 36, 37, 38, 39, 40 + + }, + + { + 11, 26, 27, 28, 29, 30, 31, 32, 30, 33, + 34, 35, 35, 36, 37, 38, 39, 40 + }, + + { + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, + -11, -11, -11, -11, -11, -11, -11, -11 + }, + + { + 11, -12, -12, -12, -12, -12, -12, -12, -12, -12, + -12, -12, -12, -12, -12, -12, -12, -12 + }, + + { + 11, -13, 41, 42, -13, -13, 43, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13 + }, + + { + 11, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14 + + }, + + { + 11, 44, 44, 45, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44 + }, + + { + 11, -16, -16, -16, -16, -16, -16, -16, -16, -16, + -16, -16, -16, -16, -16, -16, -16, -16 + }, + + { + 11, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17, -17, -17, -17, -17, -17, -17 + }, + + { + 11, -18, -18, -18, -18, -18, -18, -18, -18, -18, + -18, 46, -18, -18, -18, -18, -18, -18 + }, + + { + 11, 47, 47, -19, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47 + + }, + + { + 11, -20, 48, 49, -20, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -20, -20 + }, + + { + 11, 50, -21, -21, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50 + }, + + { + 11, 51, 51, 52, 51, -22, 51, 51, -22, 51, + 51, 51, 51, 51, 51, 51, -22, 51 + }, + + { + 11, -23, -23, -23, -23, -23, -23, -23, -23, -23, + -23, -23, -23, -23, -23, -23, -23, -23 + }, + + { + 11, -24, -24, -24, -24, -24, -24, -24, -24, -24, + -24, -24, -24, -24, -24, -24, -24, -24 + + }, + + { + 11, 53, 53, 54, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53 + }, + + { + 11, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26 + }, + + { + 11, -27, 55, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27, -27 + }, + + { + 11, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, -28, -28, -28, -28 + }, + + { + 11, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, 56, -29, -29, -29 + + }, + + { + 11, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -30 + }, + + { + 11, 57, 57, -31, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57 + }, + + { + 11, -32, -32, -32, -32, -32, -32, 58, -32, -32, + -32, -32, -32, -32, -32, -32, -32, -32 + }, + + { + 11, -33, -33, -33, -33, -33, -33, -33, -33, -33, + -33, -33, -33, -33, -33, -33, -33, -33 + }, + + { + 11, -34, -34, -34, -34, -34, -34, -34, -34, -34, + -34, -34, -34, -34, -34, -34, -34, -34 + + }, + + { + 11, -35, -35, -35, -35, -35, -35, -35, -35, -35, + -35, 59, 59, -35, -35, -35, -35, -35 + }, + + { + 11, -36, -36, -36, -36, -36, -36, -36, -36, -36, + -36, -36, -36, -36, 60, -36, -36, -36 + }, + + { + 11, -37, -37, -37, -37, -37, -37, -37, -37, -37, + -37, -37, -37, -37, -37, -37, -37, -37 + }, + + { + 11, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, 61, -38, -38, -38 + }, + + { + 11, -39, -39, 62, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39 + + }, + + { + 11, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, 63 + }, + + { + 11, -41, 41, 42, -41, -41, 43, -41, -41, -41, + -41, -41, -41, -41, -41, -41, -41, -41 + }, + + { + 11, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42 + }, + + { + 11, 44, 44, 45, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44 + }, + + { + 11, 44, 44, 45, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44 + + }, + + { + 11, -45, -45, -45, -45, -45, -45, -45, -45, -45, + -45, -45, -45, -45, -45, -45, -45, -45 + }, + + { + 11, -46, -46, -46, -46, -46, -46, -46, -46, -46, + -46, 46, -46, -46, -46, -46, -46, -46 + }, + + { + 11, 47, 47, -47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47 + }, + + { + 11, -48, 48, 49, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48 + }, + + { + 11, 50, -49, -49, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50 + + }, + + { + 11, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50 + }, + + { + 11, 51, 51, 52, 51, -51, 51, 51, -51, 51, + 51, 51, 51, 51, 51, 51, -51, 51 + }, + + { + 11, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52 + }, + + { + 11, -53, -53, 54, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53 + }, + + { + 11, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54 + + }, + + { + 11, -55, 55, -55, -55, -55, -55, -55, -55, -55, + -55, -55, -55, -55, -55, -55, -55, -55 + }, + + { + 11, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56 + }, + + { + 11, 57, 57, -57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57 + }, + + { + 11, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58 + }, + + { + 11, -59, -59, -59, -59, -59, -59, -59, -59, -59, + -59, 59, 59, -59, -59, -59, -59, -59 + + }, + + { + 11, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60 + }, + + { + 11, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61 + }, + + { + 11, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62 + }, + + { + 11, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63 + }, + + } ; + +static yy_state_type yy_get_previous_state ( void ); +static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); +static int yy_get_next_buffer ( void ); +static void yynoreturn yy_fatal_error ( const char* msg ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + yyleng = (int) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; +#define YY_NUM_RULES 37 +#define YY_END_OF_BUFFER 38 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static const flex_int16_t yy_accept[64] = + { 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 38, 5, 4, 2, 3, 7, 8, 6, 36, 33, + 35, 28, 32, 31, 30, 26, 25, 21, 13, 20, + 23, 26, 11, 12, 22, 18, 14, 19, 26, 26, + 4, 2, 3, 3, 1, 6, 36, 33, 35, 34, + 28, 27, 30, 29, 25, 15, 23, 9, 22, 16, + 17, 24, 10 + } ; + +static const YY_CHAR yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 4, 5, 6, 1, 1, 7, 8, 9, + 10, 1, 1, 1, 11, 12, 12, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 1, 1, 13, + 14, 15, 1, 1, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 1, 16, 1, 1, 11, 1, 11, 11, 11, 11, + + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 1, 17, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +/* Table of booleans, true if rule could match eol. */ +static const flex_int32_t yy_rule_can_match_eol[38] = + { 0, +1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, }; + +extern int yy_flex_debug; +int yy_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +#define YY_NO_INPUT 1 + +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include + +#include "lkc.h" + +#define START_STRSIZE 16 + +static struct { + struct file *file; + int lineno; +} current_pos; + +static char *text; +static int text_size, text_asize; + +struct buffer { + struct buffer *parent; + YY_BUFFER_STATE state; +}; + +struct buffer *current_buf; + +static int last_ts, first_ts; + +static void zconf_endhelp(void); +static void zconf_endfile(void); + +static void new_string(void) +{ + text = xmalloc(START_STRSIZE); + text_asize = START_STRSIZE; + text_size = 0; + *text = 0; +} + +static void append_string(const char *str, int size) +{ + int new_size = text_size + size + 1; + if (new_size > text_asize) { + new_size += START_STRSIZE - 1; + new_size &= -START_STRSIZE; + text = xrealloc(text, new_size); + text_asize = new_size; + } + memcpy(text + text_size, str, size); + text_size += size; + text[text_size] = 0; +} + +static void alloc_string(const char *str, int size) +{ + text = xmalloc(size + 1); + memcpy(text, str, size); + text[size] = 0; +} + +static void warn_ignored_character(char chr) +{ + fprintf(stderr, + "%s:%d:warning: ignoring unsupported character '%c'\n", + zconf_curname(), zconf_lineno(), chr); +} + +#define INITIAL 0 +#define COMMAND 1 +#define HELP 2 +#define STRING 3 +#define PARAM 4 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals ( void ); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int yylex_destroy ( void ); + +int yyget_debug ( void ); + +void yyset_debug ( int debug_flag ); + +YY_EXTRA_TYPE yyget_extra ( void ); + +void yyset_extra ( YY_EXTRA_TYPE user_defined ); + +FILE *yyget_in ( void ); + +void yyset_in ( FILE * _in_str ); + +FILE *yyget_out ( void ); + +void yyset_out ( FILE * _out_str ); + + int yyget_leng ( void ); + +char *yyget_text ( void ); + +int yyget_lineno ( void ); + +void yyset_lineno ( int _line_number ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap ( void ); +#else +extern int yywrap ( void ); +#endif +#endif + +#ifndef YY_NO_UNPUT + + static void yyunput ( int c, char *buf_ptr ); + +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy ( char *, const char *, int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen ( const char * ); +#endif + +#ifndef YY_NO_INPUT +#ifdef __cplusplus +static int yyinput ( void ); +#else +static int input ( void ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else +#define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + errno=0; \ + while ( (result = (int) read( fileno(yyin), buf, (yy_size_t) max_size )) < 0 ) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int yylex (void); + +#define YY_DECL int yylex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK /*LINTED*/break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + yy_state_type yy_current_state; + char *yy_cp, *yy_bp; + int yy_act; + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer( yyin, YY_BUF_SIZE ); + } + + yy_load_buffer_state( ); + } + + { + + int str = 0; + int ts, i; + + while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + + /* Support of yytext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 ) + ++yy_cp; + + yy_current_state = -yy_current_state; + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + + YY_DO_BEFORE_ACTION; + + if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) + { + int yyl; + for ( yyl = 0; yyl < yyleng; ++yyl ) + if ( yytext[yyl] == '\n' ) + + yylineno++; +; + } + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ +case 1: +/* rule 1 can match eol */ +case 2: +/* rule 2 can match eol */ +YY_RULE_SETUP +{ + return T_EOL; +} + YY_BREAK +case 3: +YY_RULE_SETUP + + YY_BREAK +case 4: +YY_RULE_SETUP +{ + BEGIN(COMMAND); +} + YY_BREAK +case 5: +YY_RULE_SETUP +{ + unput(yytext[0]); + BEGIN(COMMAND); +} + YY_BREAK + +case 6: +YY_RULE_SETUP +{ + const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); + BEGIN(PARAM); + current_pos.file = current_file; + current_pos.lineno = yylineno; + if (id && id->flags & TF_COMMAND) { + yylval.id = id; + return id->token; + } + alloc_string(yytext, yyleng); + yylval.string = text; + return T_WORD; + } + YY_BREAK +case 7: +YY_RULE_SETUP +warn_ignored_character(*yytext); + YY_BREAK +case 8: +/* rule 8 can match eol */ +YY_RULE_SETUP +{ + BEGIN(INITIAL); + return T_EOL; + } + YY_BREAK + +case 9: +YY_RULE_SETUP +return T_AND; + YY_BREAK +case 10: +YY_RULE_SETUP +return T_OR; + YY_BREAK +case 11: +YY_RULE_SETUP +return T_OPEN_PAREN; + YY_BREAK +case 12: +YY_RULE_SETUP +return T_CLOSE_PAREN; + YY_BREAK +case 13: +YY_RULE_SETUP +return T_NOT; + YY_BREAK +case 14: +YY_RULE_SETUP +return T_EQUAL; + YY_BREAK +case 15: +YY_RULE_SETUP +return T_UNEQUAL; + YY_BREAK +case 16: +YY_RULE_SETUP +return T_LESS_EQUAL; + YY_BREAK +case 17: +YY_RULE_SETUP +return T_GREATER_EQUAL; + YY_BREAK +case 18: +YY_RULE_SETUP +return T_LESS; + YY_BREAK +case 19: +YY_RULE_SETUP +return T_GREATER; + YY_BREAK +case 20: +YY_RULE_SETUP +{ + str = yytext[0]; + new_string(); + BEGIN(STRING); + } + YY_BREAK +case 21: +/* rule 21 can match eol */ +YY_RULE_SETUP +BEGIN(INITIAL); return T_EOL; + YY_BREAK +case 22: +YY_RULE_SETUP +{ + const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); + if (id && id->flags & TF_PARAM) { + yylval.id = id; + return id->token; + } + alloc_string(yytext, yyleng); + yylval.string = text; + return T_WORD; + } + YY_BREAK +case 23: +YY_RULE_SETUP +/* comment */ + YY_BREAK +case 24: +/* rule 24 can match eol */ +YY_RULE_SETUP +; + YY_BREAK +case 25: +YY_RULE_SETUP + + YY_BREAK +case 26: +YY_RULE_SETUP +warn_ignored_character(*yytext); + YY_BREAK +case YY_STATE_EOF(PARAM): +{ + BEGIN(INITIAL); + } + YY_BREAK + +case 27: +/* rule 27 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ +YY_LINENO_REWIND_TO(yy_cp - 1); +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up yytext again */ +YY_RULE_SETUP +{ + append_string(yytext, yyleng); + yylval.string = text; + return T_WORD_QUOTE; + } + YY_BREAK +case 28: +YY_RULE_SETUP +{ + append_string(yytext, yyleng); + } + YY_BREAK +case 29: +/* rule 29 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ +YY_LINENO_REWIND_TO(yy_cp - 1); +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up yytext again */ +YY_RULE_SETUP +{ + append_string(yytext + 1, yyleng - 1); + yylval.string = text; + return T_WORD_QUOTE; + } + YY_BREAK +case 30: +YY_RULE_SETUP +{ + append_string(yytext + 1, yyleng - 1); + } + YY_BREAK +case 31: +YY_RULE_SETUP +{ + if (str == yytext[0]) { + BEGIN(PARAM); + yylval.string = text; + return T_WORD_QUOTE; + } else + append_string(yytext, 1); + } + YY_BREAK +case 32: +/* rule 32 can match eol */ +YY_RULE_SETUP +{ + fprintf(stderr, + "%s:%d:warning: multi-line strings not supported\n", + zconf_curname(), zconf_lineno()); + BEGIN(INITIAL); + return T_EOL; + } + YY_BREAK +case YY_STATE_EOF(STRING): +{ + BEGIN(INITIAL); + } + YY_BREAK + +case 33: +YY_RULE_SETUP +{ + ts = 0; + for (i = 0; i < yyleng; i++) { + if (yytext[i] == '\t') + ts = (ts & ~7) + 8; + else + ts++; + } + last_ts = ts; + if (first_ts) { + if (ts < first_ts) { + zconf_endhelp(); + return T_HELPTEXT; + } + ts -= first_ts; + while (ts > 8) { + append_string(" ", 8); + ts -= 8; + } + append_string(" ", ts); + } + } + YY_BREAK +case 34: +/* rule 34 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ +YY_LINENO_REWIND_TO(yy_cp - 1); +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up yytext again */ +YY_RULE_SETUP +{ + zconf_endhelp(); + return T_HELPTEXT; + } + YY_BREAK +case 35: +/* rule 35 can match eol */ +YY_RULE_SETUP +{ + append_string("\n", 1); + } + YY_BREAK +case 36: +YY_RULE_SETUP +{ + while (yyleng) { + if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t')) + break; + yyleng--; + } + append_string(yytext, yyleng); + if (!first_ts) + first_ts = last_ts; + } + YY_BREAK +case YY_STATE_EOF(HELP): +{ + zconf_endhelp(); + return T_HELPTEXT; + } + YY_BREAK + +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(COMMAND): +{ + if (current_file) { + zconf_endfile(); + return T_EOL; + } + fclose(yyin); + yyterminate(); +} + YY_BREAK +case 37: +YY_RULE_SETUP +YY_FATAL_ERROR( "flex scanner jammed" ); + YY_BREAK + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( yywrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ + } /* end of user's declarations */ +} /* end of yylex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + char *source = (yytext_ptr); + int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yyrealloc( (void *) b->yy_ch_buf, + (yy_size_t) (b->yy_buf_size + 2) ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = NULL; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart( yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( + (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + /* "- 2" to take care of EOB's */ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); + } + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + yy_state_type yy_current_state; + char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + int yy_is_jam; + + yy_current_state = yy_nxt[yy_current_state][1]; + yy_is_jam = (yy_current_state <= 0); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_UNPUT + + static void yyunput (int c, char * yy_bp ) +{ + char *yy_cp; + + yy_cp = (yy_c_buf_p); + + /* undo effects of setting up yytext */ + *yy_cp = (yy_hold_char); + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + int number_to_move = (yy_n_chars) + 2; + char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + char *source = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = + (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + if ( c == '\n' ){ + --yylineno; + } + + (yytext_ptr) = yy_bp; + (yy_hold_char) = *yy_cp; + (yy_c_buf_p) = yy_cp; +} + +#endif + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart( yyin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap( ) ) + return 0; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve yytext */ + (yy_hold_char) = *++(yy_c_buf_p); + + if ( c == '\n' ) + + yylineno++; +; + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void yyrestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer( yyin, YY_BUF_SIZE ); + } + + yy_init_buffer( YY_CURRENT_BUFFER, input_file ); + yy_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * yypop_buffer_state(); + * yypush_buffer_state(new_buffer); + */ + yyensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + yy_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void yy_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer( b, file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with yy_create_buffer() + * + */ + void yy_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yyfree( (void *) b->yy_ch_buf ); + + yyfree( (void *) b ); +} + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a yyrestart() or at EOF. + */ + static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + yy_flush_buffer( b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then yy_init_buffer was _probably_ + * called from yyrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void yy_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + yy_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + yyensure_buffer_stack(); + + /* This block is copied from yy_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from yy_switch_to_buffer. */ + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void yypop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void yyensure_buffer_stack (void) +{ + yy_size_t num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ + (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + yy_size_t grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return NULL; + + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = NULL; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer( b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to yylex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * yy_scan_bytes() instead. + */ +YY_BUFFER_STATE yy_scan_string (const char * yystr ) +{ + + return yy_scan_bytes( yystr, (int) strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to yylex() will + * scan from a @e copy of @a bytes. + * @param yybytes the byte buffer to scan + * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = (yy_size_t) (_yybytes_len + 2); + buf = (char *) yyalloc( n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer( buf, n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yynoreturn yy_fatal_error (const char* msg ) +{ + fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = (yy_hold_char); \ + (yy_c_buf_p) = yytext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int yyget_lineno (void) +{ + + return yylineno; +} + +/** Get the input stream. + * + */ +FILE *yyget_in (void) +{ + return yyin; +} + +/** Get the output stream. + * + */ +FILE *yyget_out (void) +{ + return yyout; +} + +/** Get the length of the current token. + * + */ +int yyget_leng (void) +{ + return yyleng; +} + +/** Get the current token. + * + */ + +char *yyget_text (void) +{ + return yytext; +} + +/** Set the current line number. + * @param _line_number line number + * + */ +void yyset_lineno (int _line_number ) +{ + + yylineno = _line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param _in_str A readable stream. + * + * @see yy_switch_to_buffer + */ +void yyset_in (FILE * _in_str ) +{ + yyin = _in_str ; +} + +void yyset_out (FILE * _out_str ) +{ + yyout = _out_str ; +} + +int yyget_debug (void) +{ + return yy_flex_debug; +} + +void yyset_debug (int _bdebug ) +{ + yy_flex_debug = _bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from yylex_destroy(), so don't allocate here. + */ + + /* We do not touch yylineno unless the option is enabled. */ + yylineno = 1; + + (yy_buffer_stack) = NULL; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = NULL; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = NULL; + yyout = NULL; +#endif + + /* For future reference: Set errno on error, since we are called by + * yylex_init() + */ + return 0; +} + +/* yylex_destroy is for both reentrant and non-reentrant scanners. */ +int yylex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + yy_delete_buffer( YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + yypop_buffer_state(); + } + + /* Destroy the stack itself. */ + yyfree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * yylex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, const char * s2, int n ) +{ + + int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (const char * s ) +{ + int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *yyalloc (yy_size_t size ) +{ + return malloc(size); +} + +void *yyrealloc (void * ptr, yy_size_t size ) +{ + + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return realloc(ptr, size); +} + +void yyfree (void * ptr ) +{ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +void zconf_starthelp(void) +{ + new_string(); + last_ts = first_ts = 0; + BEGIN(HELP); +} + +static void zconf_endhelp(void) +{ + yylval.string = text; + BEGIN(INITIAL); +} + +/* + * Try to open specified file with following names: + * ./name + * $(srctree)/name + * The latter is used when srctree is separate from objtree + * when compiling the kernel. + * Return NULL if file is not found. + */ +FILE *zconf_fopen(const char *name) +{ + char *env, fullname[PATH_MAX+1]; + FILE *f; + + f = fopen(name, "r"); + if (!f && name != NULL && name[0] != '/') { + env = getenv(SRCTREE); + if (env) { + sprintf(fullname, "%s/%s", env, name); + f = fopen(fullname, "r"); + } + } + return f; +} + +void zconf_initscan(const char *name) +{ + yyin = zconf_fopen(name); + if (!yyin) { + fprintf(stderr, "can't find file %s\n", name); + exit(1); + } + + current_buf = xmalloc(sizeof(*current_buf)); + memset(current_buf, 0, sizeof(*current_buf)); + + current_file = file_lookup(name); + yylineno = 1; +} + +void zconf_nextfile(const char *name) +{ + struct file *iter; + struct file *file = file_lookup(name); + struct buffer *buf = xmalloc(sizeof(*buf)); + memset(buf, 0, sizeof(*buf)); + + current_buf->state = YY_CURRENT_BUFFER; + yyin = zconf_fopen(file->name); + if (!yyin) { + fprintf(stderr, "%s:%d: can't open file \"%s\"\n", + zconf_curname(), zconf_lineno(), file->name); + exit(1); + } + yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); + buf->parent = current_buf; + current_buf = buf; + + current_file->lineno = yylineno; + file->parent = current_file; + + for (iter = current_file; iter; iter = iter->parent) { + if (!strcmp(iter->name, file->name)) { + fprintf(stderr, + "Recursive inclusion detected.\n" + "Inclusion path:\n" + " current file : %s\n", file->name); + iter = file; + do { + iter = iter->parent; + fprintf(stderr, " included from: %s:%d\n", + iter->name, iter->lineno - 1); + } while (strcmp(iter->name, file->name)); + exit(1); + } + } + + yylineno = 1; + current_file = file; +} + +static void zconf_endfile(void) +{ + struct buffer *parent; + + current_file = current_file->parent; + if (current_file) + yylineno = current_file->lineno; + + parent = current_buf->parent; + if (parent) { + fclose(yyin); + yy_delete_buffer(YY_CURRENT_BUFFER); + yy_switch_to_buffer(parent->state); + } + free(current_buf); + current_buf = parent; +} + +int zconf_lineno(void) +{ + return current_pos.lineno; +} + +const char *zconf_curname(void) +{ + return current_pos.file ? current_pos.file->name : ""; +} + diff --git a/support/kconfig/zconf.tab.c_shipped b/support/kconfig/zconf.tab.c_shipped new file mode 100644 index 00000000..4eca5b31 --- /dev/null +++ b/support/kconfig/zconf.tab.c_shipped @@ -0,0 +1,2488 @@ +/* A Bison parser, made by GNU Bison 3.0.4. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "3.0.4" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + + + + +/* Copy the first part of user declarations. */ + + +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include "lkc.h" + +#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) + +#define PRINTD 0x0001 +#define DEBUG_PARSE 0x0002 + +int cdebug = PRINTD; + +int yylex(void); +static void yyerror(const char *err); +static void zconfprint(const char *err, ...); +static void zconf_error(const char *err, ...); +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken); + +struct symbol *symbol_hash[SYMBOL_HASHSIZE]; + +static struct menu *current_menu, *current_entry; + + + + +# ifndef YY_NULLPTR +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif +# endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + + +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 1 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + T_MAINMENU = 258, + T_MENU = 259, + T_ENDMENU = 260, + T_SOURCE = 261, + T_CHOICE = 262, + T_ENDCHOICE = 263, + T_COMMENT = 264, + T_CONFIG = 265, + T_MENUCONFIG = 266, + T_HELP = 267, + T_HELPTEXT = 268, + T_IF = 269, + T_ENDIF = 270, + T_DEPENDS = 271, + T_OPTIONAL = 272, + T_PROMPT = 273, + T_TYPE = 274, + T_DEFAULT = 275, + T_SELECT = 276, + T_IMPLY = 277, + T_RANGE = 278, + T_VISIBLE = 279, + T_OPTION = 280, + T_ON = 281, + T_WORD = 282, + T_WORD_QUOTE = 283, + T_UNEQUAL = 284, + T_LESS = 285, + T_LESS_EQUAL = 286, + T_GREATER = 287, + T_GREATER_EQUAL = 288, + T_CLOSE_PAREN = 289, + T_OPEN_PAREN = 290, + T_EOL = 291, + T_OR = 292, + T_AND = 293, + T_EQUAL = 294, + T_NOT = 295 + }; +#endif + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + +union YYSTYPE +{ + + + char *string; + struct file *file; + struct symbol *symbol; + struct expr *expr; + struct menu *menu; + const struct kconf_id *id; + + +}; + +typedef union YYSTYPE YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + + + +/* Copy the second part of user declarations. */ + + +/* Include kconf_id.c here so it can see the token constants. */ +#include "kconf_id.c" + + + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#else +typedef signed char yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(Msgid) dgettext ("bison-runtime", Msgid) +# endif +# endif +# ifndef YY_ +# define YY_(Msgid) Msgid +# endif +#endif + +#ifndef YY_ATTRIBUTE +# if (defined __GNUC__ \ + && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ + || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C +# define YY_ATTRIBUTE(Spec) __attribute__(Spec) +# else +# define YY_ATTRIBUTE(Spec) /* empty */ +# endif +#endif + +#ifndef YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +#endif + +#if !defined _Noreturn \ + && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) +# if defined _MSC_VER && 1200 <= _MSC_VER +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(E) ((void) (E)) +#else +# define YYUSE(E) /* empty */ +#endif + +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else +# define YY_INITIAL_VALUE(Value) Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS +# include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss_alloc; + YYSTYPE yyvs_alloc; +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +# define YYCOPY_NEEDED 1 + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 11 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 325 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 41 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 52 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 126 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 206 + +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 295 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, without out-of-bounds checking. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40 +}; + +#if YYDEBUG + /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 110, 110, 110, 112, 112, 116, 124, 134, 136, + 137, 138, 139, 140, 141, 145, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 153, 154, 155, 156, 157, + 158, 162, 163, 169, 176, 181, 188, 197, 199, 200, + 201, 202, 203, 204, 207, 215, 221, 231, 237, 243, + 249, 252, 254, 267, 268, 273, 283, 288, 296, 299, + 301, 302, 303, 304, 305, 308, 314, 325, 331, 341, + 343, 348, 356, 364, 367, 369, 370, 371, 376, 383, + 388, 396, 399, 401, 402, 403, 406, 415, 422, 427, + 433, 451, 453, 454, 455, 458, 466, 468, 469, 472, + 479, 481, 486, 487, 490, 491, 492, 496, 497, 500, + 501, 504, 505, 506, 507, 508, 509, 510, 511, 512, + 513, 514, 518, 520, 521, 524, 525 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || 0 +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU", + "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG", + "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS", + "T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT", "T_SELECT", "T_IMPLY", + "T_RANGE", "T_VISIBLE", "T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE", + "T_UNEQUAL", "T_LESS", "T_LESS_EQUAL", "T_GREATER", "T_GREATER_EQUAL", + "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND", "T_EQUAL", + "T_NOT", "$accept", "input", "start", "mainmenu_stmt", + "no_mainmenu_stmt", "stmt_list", "option_name", "common_stmt", + "option_error", "config_entry_start", "config_stmt", + "menuconfig_entry_start", "menuconfig_stmt", "config_option_list", + "config_option", "symbol_option", "symbol_option_list", + "symbol_option_arg", "choice", "choice_entry", "choice_end", + "choice_stmt", "choice_option_list", "choice_option", "choice_block", + "if_entry", "if_end", "if_stmt", "if_block", "menu", "menu_entry", + "menu_end", "menu_stmt", "menu_block", "source_stmt", "comment", + "comment_stmt", "help_start", "help", "depends_list", "depends", + "visibility_list", "visible", "prompt_stmt_opt", "prompt", "end", "nl", + "if_expr", "expr", "nonconst_symbol", "symbol", "word_opt", YY_NULLPTR +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295 +}; +# endif + +#define YYPACT_NINF -92 + +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-92))) + +#define YYTABLE_NINF -89 + +#define yytable_value_is_error(Yytable_value) \ + 0 + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +static const yytype_int16 yypact[] = +{ + 20, 33, -92, 16, -92, -92, -92, 21, -92, -92, + 29, -92, 152, 186, -92, -92, 40, 67, 33, 71, + 33, 42, 80, 33, 78, 78, 31, 82, -92, -92, + -92, -92, -92, -92, -92, -92, -92, 120, -92, 131, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, 109, -92, + 118, -92, 128, -92, 129, -92, 141, 142, -92, 31, + 31, 74, -92, 69, -92, 144, 145, 28, 119, 248, + 286, 77, 38, 77, 219, -92, -92, -92, -92, -92, + -92, -7, -92, 31, 31, 40, 52, 52, 52, 52, + 52, 52, -92, -92, 146, 147, 158, 33, 33, 31, + 78, 78, 52, -92, 184, -92, -92, -92, -92, 176, + -92, -92, 162, 33, 33, 78, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, 197, + -92, 272, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, 174, -92, -92, -92, -92, -92, -92, -92, + -92, -92, 31, 197, 178, 197, 59, 197, 197, 52, + 27, 179, -92, -92, 197, 180, 197, 31, -92, 111, + 181, -92, -92, 182, 185, 195, 197, 193, -92, -92, + 208, -92, 209, 113, -92, -92, -92, -92, -92, 211, + 33, -92, -92, -92, -92, -92 +}; + + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 7, 0, 107, 0, 3, 8, 8, 7, 102, 103, + 0, 1, 0, 0, 108, 2, 6, 0, 0, 0, + 0, 125, 0, 0, 0, 0, 0, 0, 16, 21, + 17, 18, 23, 19, 20, 22, 24, 0, 25, 0, + 9, 37, 28, 37, 29, 59, 69, 10, 74, 26, + 96, 82, 11, 30, 91, 27, 12, 15, 0, 104, + 0, 126, 0, 105, 0, 122, 0, 0, 124, 0, + 0, 0, 123, 111, 106, 0, 0, 0, 0, 0, + 0, 0, 91, 0, 0, 78, 86, 55, 87, 33, + 35, 0, 119, 0, 0, 71, 0, 0, 0, 0, + 0, 0, 13, 14, 0, 0, 0, 0, 100, 0, + 0, 0, 0, 51, 0, 43, 42, 38, 39, 0, + 41, 40, 0, 0, 100, 0, 63, 64, 60, 62, + 61, 70, 58, 57, 75, 77, 73, 76, 72, 109, + 98, 0, 97, 83, 85, 81, 84, 80, 93, 94, + 92, 118, 120, 121, 117, 112, 113, 114, 115, 116, + 32, 89, 0, 109, 0, 109, 109, 109, 109, 0, + 0, 0, 90, 67, 109, 0, 109, 0, 99, 0, + 0, 44, 101, 0, 0, 0, 109, 53, 50, 31, + 0, 66, 0, 110, 95, 45, 46, 47, 48, 0, + 0, 52, 65, 68, 49, 54 +}; + + /* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -92, -92, 241, -92, -92, 244, -92, -13, -66, -92, + -92, -92, -92, 218, -92, -92, -92, -92, -92, -92, + -92, -69, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, 12, -92, -92, -92, -92, -92, 172, 170, + -64, -92, -92, 148, -1, 34, 1, 139, -68, -21, + -91, -92 +}; + + /* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 3, 4, 5, 6, 12, 39, 40, 116, 41, + 42, 43, 44, 77, 117, 118, 170, 201, 45, 46, + 132, 47, 79, 128, 80, 48, 136, 49, 81, 50, + 51, 145, 52, 83, 53, 54, 55, 119, 120, 84, + 121, 82, 142, 164, 165, 56, 7, 178, 71, 72, + 73, 62 +}; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ +static const yytype_int16 yytable[] = +{ + 10, 91, 92, 66, 67, 154, 155, 156, 157, 158, + 159, 16, 135, 127, 144, 130, 11, 58, 149, 60, + 150, 169, 64, 1, 1, 152, 153, 151, -34, 104, + 93, 94, -34, -34, -34, -34, -34, -34, -34, -34, + 105, 166, -34, -34, 106, -34, 107, 108, 109, 110, + 111, 112, -34, 113, 187, 114, 2, 14, 65, 68, + 8, 9, 139, 188, 115, 2, 69, 131, 134, 61, + 143, 70, 95, 177, 140, 149, 14, 150, 186, 65, + 68, 18, 19, 20, 21, 22, 23, 24, 25, 167, + 168, 26, 27, 137, 179, 146, 93, 94, 96, 97, + 98, 99, 100, 57, 176, 65, 163, 59, 101, 193, + 2, 93, 94, 38, 133, 138, 63, 147, 74, -36, + 104, 75, 174, -36, -36, -36, -36, -36, -36, -36, + -36, 105, 76, -36, -36, 106, -36, 107, 108, 109, + 110, 111, 112, -36, 113, 85, 114, 194, 93, 94, + 93, 94, -4, 17, 86, 115, 18, 19, 20, 21, + 22, 23, 24, 25, 87, 88, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 89, 90, 37, + 102, 103, 160, 161, 162, 171, -5, 17, 38, 172, + 18, 19, 20, 21, 22, 23, 24, 25, 173, 205, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 177, 94, 37, 181, 189, 191, 195, 196, -88, + 104, 197, 38, -88, -88, -88, -88, -88, -88, -88, + -88, 198, 200, -88, -88, 106, -88, -88, -88, -88, + -88, -88, -88, -88, 202, 203, 114, 204, 15, 104, + 13, 129, 141, -56, -56, 148, -56, -56, -56, -56, + 105, 78, -56, -56, 106, 122, 123, 124, 125, 0, + 0, 0, 175, 104, 0, 114, -79, -79, -79, -79, + -79, -79, -79, -79, 126, 0, -79, -79, 106, 0, + 0, 19, 20, 0, 22, 23, 24, 25, 0, 114, + 26, 27, 180, 0, 182, 183, 184, 185, 148, 0, + 0, 0, 0, 190, 0, 192, 0, 0, 0, 0, + 0, 0, 38, 0, 0, 199 +}; + +static const yytype_int16 yycheck[] = +{ + 1, 69, 70, 24, 25, 96, 97, 98, 99, 100, + 101, 10, 81, 79, 83, 79, 0, 18, 84, 20, + 84, 112, 23, 3, 3, 93, 94, 34, 0, 1, + 37, 38, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 109, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 27, 27, 36, 36, 27, 28, + 27, 28, 24, 36, 36, 36, 35, 80, 81, 27, + 83, 40, 71, 14, 36, 141, 36, 141, 169, 27, + 28, 4, 5, 6, 7, 8, 9, 10, 11, 110, + 111, 14, 15, 81, 162, 83, 37, 38, 29, 30, + 31, 32, 33, 36, 125, 27, 107, 36, 39, 177, + 36, 37, 38, 36, 80, 81, 36, 83, 36, 0, + 1, 1, 123, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 1, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 36, 27, 36, 37, 38, + 37, 38, 0, 1, 36, 36, 4, 5, 6, 7, + 8, 9, 10, 11, 36, 36, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 36, 36, 27, + 36, 36, 36, 36, 26, 1, 0, 1, 36, 13, + 4, 5, 6, 7, 8, 9, 10, 11, 36, 200, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 14, 38, 27, 36, 36, 36, 36, 36, 0, + 1, 36, 36, 4, 5, 6, 7, 8, 9, 10, + 11, 36, 39, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 36, 36, 27, 36, 7, 1, + 6, 79, 82, 5, 6, 36, 8, 9, 10, 11, + 12, 43, 14, 15, 16, 17, 18, 19, 20, -1, + -1, -1, 124, 1, -1, 27, 4, 5, 6, 7, + 8, 9, 10, 11, 36, -1, 14, 15, 16, -1, + -1, 5, 6, -1, 8, 9, 10, 11, -1, 27, + 14, 15, 163, -1, 165, 166, 167, 168, 36, -1, + -1, -1, -1, 174, -1, 176, -1, -1, -1, -1, + -1, -1, 36, -1, -1, 186 +}; + + /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 3, 36, 42, 43, 44, 45, 87, 27, 28, + 85, 0, 46, 46, 36, 43, 87, 1, 4, 5, + 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 27, 36, 47, + 48, 50, 51, 52, 53, 59, 60, 62, 66, 68, + 70, 71, 73, 75, 76, 77, 86, 36, 85, 36, + 85, 27, 92, 36, 85, 27, 90, 90, 28, 35, + 40, 89, 90, 91, 36, 1, 1, 54, 54, 63, + 65, 69, 82, 74, 80, 36, 36, 36, 36, 36, + 36, 89, 89, 37, 38, 87, 29, 30, 31, 32, + 33, 39, 36, 36, 1, 12, 16, 18, 19, 20, + 21, 22, 23, 25, 27, 36, 49, 55, 56, 78, + 79, 81, 17, 18, 19, 20, 36, 49, 64, 79, + 81, 48, 61, 86, 48, 62, 67, 73, 86, 24, + 36, 80, 83, 48, 62, 72, 73, 86, 36, 49, + 81, 34, 89, 89, 91, 91, 91, 91, 91, 91, + 36, 36, 26, 85, 84, 85, 89, 90, 90, 91, + 57, 1, 13, 36, 85, 84, 90, 14, 88, 89, + 88, 36, 88, 88, 88, 88, 91, 27, 36, 36, + 88, 36, 88, 89, 36, 36, 36, 36, 36, 88, + 39, 58, 36, 36, 36, 85 +}; + + /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 41, 42, 42, 43, 43, 44, 45, 46, 46, + 46, 46, 46, 46, 46, 46, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 48, 48, 48, 48, 48, + 48, 49, 49, 50, 51, 52, 53, 54, 54, 54, + 54, 54, 54, 54, 55, 55, 55, 55, 55, 55, + 56, 57, 57, 58, 58, 59, 60, 61, 62, 63, + 63, 63, 63, 63, 63, 64, 64, 64, 64, 65, + 65, 66, 67, 68, 69, 69, 69, 69, 70, 71, + 72, 73, 74, 74, 74, 74, 75, 76, 77, 78, + 79, 80, 80, 80, 80, 81, 82, 82, 82, 83, + 84, 84, 85, 85, 86, 86, 86, 87, 87, 88, + 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 90, 91, 91, 92, 92 +}; + + /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 2, 1, 2, 2, 3, 0, 0, 2, + 2, 2, 2, 4, 4, 3, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 3, 2, 3, 2, 3, 2, 0, 2, 2, + 2, 2, 2, 2, 3, 4, 4, 4, 4, 5, + 3, 0, 3, 0, 2, 3, 2, 1, 3, 0, + 2, 2, 2, 2, 2, 4, 3, 2, 4, 0, + 2, 3, 1, 3, 0, 2, 2, 2, 3, 3, + 1, 3, 0, 2, 2, 2, 3, 3, 2, 2, + 2, 0, 2, 2, 2, 4, 0, 2, 2, 2, + 0, 2, 1, 1, 2, 2, 2, 1, 2, 0, + 2, 1, 3, 3, 3, 3, 3, 3, 3, 2, + 3, 3, 1, 1, 1, 0, 1 +}; + + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (0) + +/* Error token number */ +#define YYTERROR 1 +#define YYERRCODE 256 + + + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) + + +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ + +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + FILE *yyo = yyoutput; + YYUSE (yyo); + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# endif + YYUSE (yytype); +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + YYFPRINTF (yyoutput, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +static void +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) +{ + unsigned long int yylno = yyrline[yyrule]; + int yynrhs = yyr2[yyrule]; + int yyi; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (0) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +static YYSIZE_T +yystrlen (const char *yystr) +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +static char * +yystpcpy (char *yydest, const char *yysrc) +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULLPTR; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + { + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } + } + + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } + + { + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } + + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + { + char *yyp = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; +} +#endif /* YYERROR_VERBOSE */ + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +{ + YYUSE (yyvaluep); + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + switch (yytype) + { + case 60: /* choice_entry */ + + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + ((*yyvaluep).menu)->file->name, ((*yyvaluep).menu)->lineno); + if (current_menu == ((*yyvaluep).menu)) + menu_end_menu(); +} + + break; + + case 66: /* if_entry */ + + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + ((*yyvaluep).menu)->file->name, ((*yyvaluep).menu)->lineno); + if (current_menu == ((*yyvaluep).menu)) + menu_end_menu(); +} + + break; + + case 71: /* menu_entry */ + + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + ((*yyvaluep).menu)->file->name, ((*yyvaluep).menu)->lineno); + if (current_menu == ((*yyvaluep).menu)) + menu_end_menu(); +} + + break; + + + default: + break; + } + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + + + +/* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; +/* Number of syntax errors so far. */ +int yynerrs; + + +/*----------. +| yyparse. | +`----------*/ + +int +yyparse (void) +{ + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + 'yyss': related to states. + 'yyvs': related to semantic values. + + Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; + yystacksize = YYINITDEPTH; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = yylex (); + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + '$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 6: + + { + menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL); +} + + break; + + case 7: + + { + /* + * Hack: Keep the main menu title on the heap so we can safely free it + * later regardless of whether it comes from the 'prompt' in + * mainmenu_stmt or here + */ + menu_add_prompt(P_MENU, xstrdup("Buildroot Configuration"), NULL); +} + + break; + + case 12: + + { zconf_error("unexpected end statement"); } + + break; + + case 13: + + { zconf_error("unknown statement \"%s\"", (yyvsp[-2].string)); } + + break; + + case 14: + + { + zconf_error("unexpected option \"%s\"", (yyvsp[-2].id)->name); +} + + break; + + case 15: + + { zconf_error("invalid statement"); } + + break; + + case 31: + + { zconf_error("unknown option \"%s\"", (yyvsp[-2].string)); } + + break; + + case 32: + + { zconf_error("invalid option"); } + + break; + + case 33: + + { + (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; + menu_add_entry((yyvsp[-1].symbol)); + printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].symbol)->name); +} + + break; + + case 34: + + { + printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); +} + + break; + + case 35: + + { + (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; + menu_add_entry((yyvsp[-1].symbol)); + printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].symbol)->name); +} + + break; + + case 36: + + { + if (current_entry->prompt) + current_entry->prompt->type = P_MENU; + else + zconfprint("warning: menuconfig statement without prompt"); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); +} + + break; + + case 44: + + { + menu_set_type((yyvsp[-2].id)->stype); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", + zconf_curname(), zconf_lineno(), + (yyvsp[-2].id)->stype); +} + + break; + + case 45: + + { + menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); +} + + break; + + case 46: + + { + menu_add_expr(P_DEFAULT, (yyvsp[-2].expr), (yyvsp[-1].expr)); + if ((yyvsp[-3].id)->stype != S_UNKNOWN) + menu_set_type((yyvsp[-3].id)->stype); + printd(DEBUG_PARSE, "%s:%d:default(%u)\n", + zconf_curname(), zconf_lineno(), + (yyvsp[-3].id)->stype); +} + + break; + + case 47: + + { + menu_add_symbol(P_SELECT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno()); +} + + break; + + case 48: + + { + menu_add_symbol(P_IMPLY, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:imply\n", zconf_curname(), zconf_lineno()); +} + + break; + + case 49: + + { + menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[-3].symbol), (yyvsp[-2].symbol)), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno()); +} + + break; + + case 52: + + { + const struct kconf_id *id = kconf_id_lookup((yyvsp[-1].string), strlen((yyvsp[-1].string))); + if (id && id->flags & TF_OPTION) { + menu_add_option(id->token, (yyvsp[0].string)); + free((yyvsp[0].string)); + } + else + zconfprint("warning: ignoring unknown option %s", (yyvsp[-1].string)); + free((yyvsp[-1].string)); +} + + break; + + case 53: + + { (yyval.string) = NULL; } + + break; + + case 54: + + { (yyval.string) = (yyvsp[0].string); } + + break; + + case 55: + + { + struct symbol *sym = sym_lookup((yyvsp[-1].string), SYMBOL_CHOICE); + sym->flags |= SYMBOL_AUTO; + menu_add_entry(sym); + menu_add_expr(P_CHOICE, NULL, NULL); + free((yyvsp[-1].string)); + printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno()); +} + + break; + + case 56: + + { + (yyval.menu) = menu_add_menu(); +} + + break; + + case 57: + + { + if (zconf_endtoken((yyvsp[0].id), T_CHOICE, T_ENDCHOICE)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno()); + } +} + + break; + + case 65: + + { + menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); +} + + break; + + case 66: + + { + if ((yyvsp[-2].id)->stype == S_BOOLEAN || (yyvsp[-2].id)->stype == S_TRISTATE) { + menu_set_type((yyvsp[-2].id)->stype); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", + zconf_curname(), zconf_lineno(), + (yyvsp[-2].id)->stype); + } else + YYERROR; +} + + break; + + case 67: + + { + current_entry->sym->flags |= SYMBOL_OPTIONAL; + printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); +} + + break; + + case 68: + + { + if ((yyvsp[-3].id)->stype == S_UNKNOWN) { + menu_add_symbol(P_DEFAULT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:default\n", + zconf_curname(), zconf_lineno()); + } else + YYERROR; +} + + break; + + case 71: + + { + printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); + menu_add_entry(NULL); + menu_add_dep((yyvsp[-1].expr)); + (yyval.menu) = menu_add_menu(); +} + + break; + + case 72: + + { + if (zconf_endtoken((yyvsp[0].id), T_IF, T_ENDIF)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno()); + } +} + + break; + + case 78: + + { + menu_add_entry(NULL); + menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL); + printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); +} + + break; + + case 79: + + { + (yyval.menu) = menu_add_menu(); +} + + break; + + case 80: + + { + if (zconf_endtoken((yyvsp[0].id), T_MENU, T_ENDMENU)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno()); + } +} + + break; + + case 86: + + { + printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].string)); + zconf_nextfile((yyvsp[-1].string)); + free((yyvsp[-1].string)); +} + + break; + + case 87: + + { + menu_add_entry(NULL); + menu_add_prompt(P_COMMENT, (yyvsp[-1].string), NULL); + printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); +} + + break; + + case 89: + + { + printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); + zconf_starthelp(); +} + + break; + + case 90: + + { + if (current_entry->help) { + free(current_entry->help); + zconfprint("warning: '%s' defined with more than one help text -- only the last one will be used", + current_entry->sym->name ?: ""); + } + + /* Is the help text empty or all whitespace? */ + if ((yyvsp[0].string)[strspn((yyvsp[0].string), " \f\n\r\t\v")] == '\0') + zconfprint("warning: '%s' defined with blank help text", + current_entry->sym->name ?: ""); + + current_entry->help = (yyvsp[0].string); +} + + break; + + case 95: + + { + menu_add_dep((yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); +} + + break; + + case 99: + + { + menu_add_visibility((yyvsp[0].expr)); +} + + break; + + case 101: + + { + menu_add_prompt(P_PROMPT, (yyvsp[-1].string), (yyvsp[0].expr)); +} + + break; + + case 104: + + { (yyval.id) = (yyvsp[-1].id); } + + break; + + case 105: + + { (yyval.id) = (yyvsp[-1].id); } + + break; + + case 106: + + { (yyval.id) = (yyvsp[-1].id); } + + break; + + case 109: + + { (yyval.expr) = NULL; } + + break; + + case 110: + + { (yyval.expr) = (yyvsp[0].expr); } + + break; + + case 111: + + { (yyval.expr) = expr_alloc_symbol((yyvsp[0].symbol)); } + + break; + + case 112: + + { (yyval.expr) = expr_alloc_comp(E_LTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + + break; + + case 113: + + { (yyval.expr) = expr_alloc_comp(E_LEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + + break; + + case 114: + + { (yyval.expr) = expr_alloc_comp(E_GTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + + break; + + case 115: + + { (yyval.expr) = expr_alloc_comp(E_GEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + + break; + + case 116: + + { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + + break; + + case 117: + + { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + + break; + + case 118: + + { (yyval.expr) = (yyvsp[-1].expr); } + + break; + + case 119: + + { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[0].expr)); } + + break; + + case 120: + + { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[-2].expr), (yyvsp[0].expr)); } + + break; + + case 121: + + { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); } + + break; + + case 122: + + { (yyval.symbol) = sym_lookup((yyvsp[0].string), 0); free((yyvsp[0].string)); } + + break; + + case 124: + + { (yyval.symbol) = sym_lookup((yyvsp[0].string), SYMBOL_CONST); free((yyvsp[0].string)); } + + break; + + case 125: + + { (yyval.string) = NULL; } + + break; + + + + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + /* Now 'shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*--------------------------------------. +| yyerrlab -- here on detecting error. | +`--------------------------------------*/ +yyerrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) + { + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; + } +# undef YYSYNTAX_ERROR +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule whose action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (!yypact_value_is_default (yyn)) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#if !defined yyoverflow || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule whose action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + return yyresult; +} + + + +void conf_parse(const char *name) +{ + const char *tmp; + struct symbol *sym; + int i; + + zconf_initscan(name); + + sym_init(); + _menu_init(); + + if (getenv("ZCONF_DEBUG")) + yydebug = 1; + yyparse(); + if (yynerrs) + exit(1); + if (!modules_sym) + modules_sym = sym_find( "n" ); + + tmp = rootmenu.prompt->text; + rootmenu.prompt->text = _(rootmenu.prompt->text); + rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text); + free((char*)tmp); + + menu_finalize(&rootmenu); + for_all_symbols(i, sym) { + if (sym_check_deps(sym)) + yynerrs++; + } + if (yynerrs) + exit(1); + sym_set_change_count(1); +} + +static const char *zconf_tokenname(int token) +{ + switch (token) { + case T_MENU: return "menu"; + case T_ENDMENU: return "endmenu"; + case T_CHOICE: return "choice"; + case T_ENDCHOICE: return "endchoice"; + case T_IF: return "if"; + case T_ENDIF: return "endif"; + case T_DEPENDS: return "depends"; + case T_VISIBLE: return "visible"; + } + return ""; +} + +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken) +{ + if (id->token != endtoken) { + zconf_error("unexpected '%s' within %s block", + id->name, zconf_tokenname(starttoken)); + yynerrs++; + return false; + } + if (current_menu->file != current_file) { + zconf_error("'%s' in different file than '%s'", + id->name, zconf_tokenname(starttoken)); + fprintf(stderr, "%s:%d: location of the '%s'\n", + current_menu->file->name, current_menu->lineno, + zconf_tokenname(starttoken)); + yynerrs++; + return false; + } + return true; +} + +static void zconfprint(const char *err, ...) +{ + va_list ap; + + fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void zconf_error(const char *err, ...) +{ + va_list ap; + + yynerrs++; + fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void yyerror(const char *err) +{ + fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err); +} + +static void print_quoted_string(FILE *out, const char *str) +{ + const char *p; + int len; + + putc('"', out); + while ((p = strchr(str, '"'))) { + len = p - str; + if (len) + fprintf(out, "%.*s", len, str); + fputs("\\\"", out); + str = p + 1; + } + fputs(str, out); + putc('"', out); +} + +static void print_symbol(FILE *out, struct menu *menu) +{ + struct symbol *sym = menu->sym; + struct property *prop; + + if (sym_is_choice(sym)) + fprintf(out, "\nchoice\n"); + else + fprintf(out, "\nconfig %s\n", sym->name); + switch (sym->type) { + case S_BOOLEAN: + fputs(" bool\n", out); + break; + case S_TRISTATE: + fputs(" tristate\n", out); + break; + case S_STRING: + fputs(" string\n", out); + break; + case S_INT: + fputs(" integer\n", out); + break; + case S_HEX: + fputs(" hex\n", out); + break; + default: + fputs(" ???\n", out); + break; + } + for (prop = sym->prop; prop; prop = prop->next) { + if (prop->menu != menu) + continue; + switch (prop->type) { + case P_PROMPT: + fputs(" prompt ", out); + print_quoted_string(out, prop->text); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_DEFAULT: + fputs( " default ", out); + expr_fprint(prop->expr, out); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_CHOICE: + fputs(" #choice value\n", out); + break; + case P_SELECT: + fputs( " select ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_IMPLY: + fputs( " imply ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_RANGE: + fputs( " range ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_MENU: + fputs( " menu ", out); + print_quoted_string(out, prop->text); + fputc('\n', out); + break; + default: + fprintf(out, " unknown prop %d!\n", prop->type); + break; + } + } + if (menu->help) { + int len = strlen(menu->help); + while (menu->help[--len] == '\n') + menu->help[len] = 0; + fprintf(out, " help\n%s\n", menu->help); + } +} + +void zconfdump(FILE *out) +{ + struct property *prop; + struct symbol *sym; + struct menu *menu; + + menu = rootmenu.list; + while (menu) { + if ((sym = menu->sym)) + print_symbol(out, menu); + else if ((prop = menu->prompt)) { + switch (prop->type) { + case P_COMMENT: + fputs("\ncomment ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + case P_MENU: + fputs("\nmenu ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + default: + ; + } + if (!expr_is_yes(prop->visible.expr)) { + fputs(" depends ", out); + expr_fprint(prop->visible.expr, out); + fputc('\n', out); + } + } + + if (menu->list) + menu = menu->list; + else if (menu->next) + menu = menu->next; + else while ((menu = menu->parent)) { + if (menu->prompt && menu->prompt->type == P_MENU) + fputs("\nendmenu\n", out); + if (menu->next) { + menu = menu->next; + break; + } + } + } +} + +#include "zconf.lex.c" +#include "util.c" +#include "confdata.c" +#include "expr.c" +#include "symbol.c" +#include "menu.c" diff --git a/support/kconfig/zconf.y b/support/kconfig/zconf.y new file mode 100644 index 00000000..7b34de28 --- /dev/null +++ b/support/kconfig/zconf.y @@ -0,0 +1,782 @@ +%{ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include "lkc.h" + +#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) + +#define PRINTD 0x0001 +#define DEBUG_PARSE 0x0002 + +int cdebug = PRINTD; + +int yylex(void); +static void yyerror(const char *err); +static void zconfprint(const char *err, ...); +static void zconf_error(const char *err, ...); +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken); + +struct symbol *symbol_hash[SYMBOL_HASHSIZE]; + +static struct menu *current_menu, *current_entry; + +%} +%expect 32 + +%union +{ + char *string; + struct file *file; + struct symbol *symbol; + struct expr *expr; + struct menu *menu; + const struct kconf_id *id; +} + +%token T_MAINMENU +%token T_MENU +%token T_ENDMENU +%token T_SOURCE +%token T_CHOICE +%token T_ENDCHOICE +%token T_COMMENT +%token T_CONFIG +%token T_MENUCONFIG +%token T_HELP +%token T_HELPTEXT +%token T_IF +%token T_ENDIF +%token T_DEPENDS +%token T_OPTIONAL +%token T_PROMPT +%token T_TYPE +%token T_DEFAULT +%token T_SELECT +%token T_IMPLY +%token T_RANGE +%token T_VISIBLE +%token T_OPTION +%token T_ON +%token T_WORD +%token T_WORD_QUOTE +%token T_UNEQUAL +%token T_LESS +%token T_LESS_EQUAL +%token T_GREATER +%token T_GREATER_EQUAL +%token T_CLOSE_PAREN +%token T_OPEN_PAREN +%token T_EOL + +%left T_OR +%left T_AND +%left T_EQUAL T_UNEQUAL +%left T_LESS T_LESS_EQUAL T_GREATER T_GREATER_EQUAL +%nonassoc T_NOT + +%type prompt +%type nonconst_symbol +%type symbol +%type expr +%type if_expr +%type end +%type option_name +%type if_entry menu_entry choice_entry +%type symbol_option_arg word_opt + +%destructor { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + $$->file->name, $$->lineno); + if (current_menu == $$) + menu_end_menu(); +} if_entry menu_entry choice_entry + +%{ +/* Include kconf_id.c here so it can see the token constants. */ +#include "kconf_id.c" +%} + +%% +input: nl start | start; + +start: mainmenu_stmt stmt_list | no_mainmenu_stmt stmt_list; + +/* mainmenu entry */ + +mainmenu_stmt: T_MAINMENU prompt nl +{ + menu_add_prompt(P_MENU, $2, NULL); +}; + +/* Default main menu, if there's no mainmenu entry */ + +no_mainmenu_stmt: /* empty */ +{ + /* + * Hack: Keep the main menu title on the heap so we can safely free it + * later regardless of whether it comes from the 'prompt' in + * mainmenu_stmt or here + */ + menu_add_prompt(P_MENU, xstrdup("Buildroot Configuration"), NULL); +}; + + +stmt_list: + /* empty */ + | stmt_list common_stmt + | stmt_list choice_stmt + | stmt_list menu_stmt + | stmt_list end { zconf_error("unexpected end statement"); } + | stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); } + | stmt_list option_name error T_EOL +{ + zconf_error("unexpected option \"%s\"", $2->name); +} + | stmt_list error T_EOL { zconf_error("invalid statement"); } +; + +option_name: + T_DEPENDS | T_PROMPT | T_TYPE | T_SELECT | T_IMPLY | T_OPTIONAL | T_RANGE | T_DEFAULT | T_VISIBLE +; + +common_stmt: + T_EOL + | if_stmt + | comment_stmt + | config_stmt + | menuconfig_stmt + | source_stmt +; + +option_error: + T_WORD error T_EOL { zconf_error("unknown option \"%s\"", $1); } + | error T_EOL { zconf_error("invalid option"); } +; + + +/* config/menuconfig entry */ + +config_entry_start: T_CONFIG nonconst_symbol T_EOL +{ + $2->flags |= SYMBOL_OPTIONAL; + menu_add_entry($2); + printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), $2->name); +}; + +config_stmt: config_entry_start config_option_list +{ + printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); +}; + +menuconfig_entry_start: T_MENUCONFIG nonconst_symbol T_EOL +{ + $2->flags |= SYMBOL_OPTIONAL; + menu_add_entry($2); + printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), $2->name); +}; + +menuconfig_stmt: menuconfig_entry_start config_option_list +{ + if (current_entry->prompt) + current_entry->prompt->type = P_MENU; + else + zconfprint("warning: menuconfig statement without prompt"); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); +}; + +config_option_list: + /* empty */ + | config_option_list config_option + | config_option_list symbol_option + | config_option_list depends + | config_option_list help + | config_option_list option_error + | config_option_list T_EOL +; + +config_option: T_TYPE prompt_stmt_opt T_EOL +{ + menu_set_type($1->stype); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", + zconf_curname(), zconf_lineno(), + $1->stype); +}; + +config_option: T_PROMPT prompt if_expr T_EOL +{ + menu_add_prompt(P_PROMPT, $2, $3); + printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); +}; + +config_option: T_DEFAULT expr if_expr T_EOL +{ + menu_add_expr(P_DEFAULT, $2, $3); + if ($1->stype != S_UNKNOWN) + menu_set_type($1->stype); + printd(DEBUG_PARSE, "%s:%d:default(%u)\n", + zconf_curname(), zconf_lineno(), + $1->stype); +}; + +config_option: T_SELECT nonconst_symbol if_expr T_EOL +{ + menu_add_symbol(P_SELECT, $2, $3); + printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno()); +}; + +config_option: T_IMPLY nonconst_symbol if_expr T_EOL +{ + menu_add_symbol(P_IMPLY, $2, $3); + printd(DEBUG_PARSE, "%s:%d:imply\n", zconf_curname(), zconf_lineno()); +}; + +config_option: T_RANGE symbol symbol if_expr T_EOL +{ + menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,$2, $3), $4); + printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno()); +}; + +symbol_option: T_OPTION symbol_option_list T_EOL +; + +symbol_option_list: + /* empty */ + | symbol_option_list T_WORD symbol_option_arg +{ + const struct kconf_id *id = kconf_id_lookup($2, strlen($2)); + if (id && id->flags & TF_OPTION) { + menu_add_option(id->token, $3); + free($3); + } + else + zconfprint("warning: ignoring unknown option %s", $2); + free($2); +}; + +symbol_option_arg: + /* empty */ { $$ = NULL; } + | T_EQUAL prompt { $$ = $2; } +; + +/* choice entry */ + +choice: T_CHOICE word_opt T_EOL +{ + struct symbol *sym = sym_lookup($2, SYMBOL_CHOICE); + sym->flags |= SYMBOL_AUTO; + menu_add_entry(sym); + menu_add_expr(P_CHOICE, NULL, NULL); + free($2); + printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno()); +}; + +choice_entry: choice choice_option_list +{ + $$ = menu_add_menu(); +}; + +choice_end: end +{ + if (zconf_endtoken($1, T_CHOICE, T_ENDCHOICE)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno()); + } +}; + +choice_stmt: choice_entry choice_block choice_end +; + +choice_option_list: + /* empty */ + | choice_option_list choice_option + | choice_option_list depends + | choice_option_list help + | choice_option_list T_EOL + | choice_option_list option_error +; + +choice_option: T_PROMPT prompt if_expr T_EOL +{ + menu_add_prompt(P_PROMPT, $2, $3); + printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); +}; + +choice_option: T_TYPE prompt_stmt_opt T_EOL +{ + if ($1->stype == S_BOOLEAN || $1->stype == S_TRISTATE) { + menu_set_type($1->stype); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", + zconf_curname(), zconf_lineno(), + $1->stype); + } else + YYERROR; +}; + +choice_option: T_OPTIONAL T_EOL +{ + current_entry->sym->flags |= SYMBOL_OPTIONAL; + printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); +}; + +choice_option: T_DEFAULT nonconst_symbol if_expr T_EOL +{ + if ($1->stype == S_UNKNOWN) { + menu_add_symbol(P_DEFAULT, $2, $3); + printd(DEBUG_PARSE, "%s:%d:default\n", + zconf_curname(), zconf_lineno()); + } else + YYERROR; +}; + +choice_block: + /* empty */ + | choice_block common_stmt +; + +/* if entry */ + +if_entry: T_IF expr nl +{ + printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); + menu_add_entry(NULL); + menu_add_dep($2); + $$ = menu_add_menu(); +}; + +if_end: end +{ + if (zconf_endtoken($1, T_IF, T_ENDIF)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno()); + } +}; + +if_stmt: if_entry if_block if_end +; + +if_block: + /* empty */ + | if_block common_stmt + | if_block menu_stmt + | if_block choice_stmt +; + +/* menu entry */ + +menu: T_MENU prompt T_EOL +{ + menu_add_entry(NULL); + menu_add_prompt(P_MENU, $2, NULL); + printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); +}; + +menu_entry: menu visibility_list depends_list +{ + $$ = menu_add_menu(); +}; + +menu_end: end +{ + if (zconf_endtoken($1, T_MENU, T_ENDMENU)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno()); + } +}; + +menu_stmt: menu_entry menu_block menu_end +; + +menu_block: + /* empty */ + | menu_block common_stmt + | menu_block menu_stmt + | menu_block choice_stmt +; + +source_stmt: T_SOURCE prompt T_EOL +{ + printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), $2); + zconf_nextfile($2); + free($2); +}; + +/* comment entry */ + +comment: T_COMMENT prompt T_EOL +{ + menu_add_entry(NULL); + menu_add_prompt(P_COMMENT, $2, NULL); + printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); +}; + +comment_stmt: comment depends_list +; + +/* help option */ + +help_start: T_HELP T_EOL +{ + printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); + zconf_starthelp(); +}; + +help: help_start T_HELPTEXT +{ + if (current_entry->help) { + free(current_entry->help); + zconfprint("warning: '%s' defined with more than one help text -- only the last one will be used", + current_entry->sym->name ?: ""); + } + + /* Is the help text empty or all whitespace? */ + if ($2[strspn($2, " \f\n\r\t\v")] == '\0') + zconfprint("warning: '%s' defined with blank help text", + current_entry->sym->name ?: ""); + + current_entry->help = $2; +}; + +/* depends option */ + +depends_list: + /* empty */ + | depends_list depends + | depends_list T_EOL + | depends_list option_error +; + +depends: T_DEPENDS T_ON expr T_EOL +{ + menu_add_dep($3); + printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); +}; + +/* visibility option */ + +visibility_list: + /* empty */ + | visibility_list visible + | visibility_list T_EOL +; + +visible: T_VISIBLE if_expr +{ + menu_add_visibility($2); +}; + +/* prompt statement */ + +prompt_stmt_opt: + /* empty */ + | prompt if_expr +{ + menu_add_prompt(P_PROMPT, $1, $2); +}; + +prompt: T_WORD + | T_WORD_QUOTE +; + +end: T_ENDMENU T_EOL { $$ = $1; } + | T_ENDCHOICE T_EOL { $$ = $1; } + | T_ENDIF T_EOL { $$ = $1; } +; + +nl: + T_EOL + | nl T_EOL +; + +if_expr: /* empty */ { $$ = NULL; } + | T_IF expr { $$ = $2; } +; + +expr: symbol { $$ = expr_alloc_symbol($1); } + | symbol T_LESS symbol { $$ = expr_alloc_comp(E_LTH, $1, $3); } + | symbol T_LESS_EQUAL symbol { $$ = expr_alloc_comp(E_LEQ, $1, $3); } + | symbol T_GREATER symbol { $$ = expr_alloc_comp(E_GTH, $1, $3); } + | symbol T_GREATER_EQUAL symbol { $$ = expr_alloc_comp(E_GEQ, $1, $3); } + | symbol T_EQUAL symbol { $$ = expr_alloc_comp(E_EQUAL, $1, $3); } + | symbol T_UNEQUAL symbol { $$ = expr_alloc_comp(E_UNEQUAL, $1, $3); } + | T_OPEN_PAREN expr T_CLOSE_PAREN { $$ = $2; } + | T_NOT expr { $$ = expr_alloc_one(E_NOT, $2); } + | expr T_OR expr { $$ = expr_alloc_two(E_OR, $1, $3); } + | expr T_AND expr { $$ = expr_alloc_two(E_AND, $1, $3); } +; + +/* For symbol definitions, selects, etc., where quotes are not accepted */ +nonconst_symbol: T_WORD { $$ = sym_lookup($1, 0); free($1); }; + +symbol: nonconst_symbol + | T_WORD_QUOTE { $$ = sym_lookup($1, SYMBOL_CONST); free($1); } +; + +word_opt: /* empty */ { $$ = NULL; } + | T_WORD + +%% + +void conf_parse(const char *name) +{ + const char *tmp; + struct symbol *sym; + int i; + + zconf_initscan(name); + + sym_init(); + _menu_init(); + + if (getenv("ZCONF_DEBUG")) + yydebug = 1; + yyparse(); + if (yynerrs) + exit(1); + if (!modules_sym) + modules_sym = sym_find( "n" ); + + tmp = rootmenu.prompt->text; + rootmenu.prompt->text = _(rootmenu.prompt->text); + rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text); + free((char*)tmp); + + menu_finalize(&rootmenu); + for_all_symbols(i, sym) { + if (sym_check_deps(sym)) + yynerrs++; + } + if (yynerrs) + exit(1); + sym_set_change_count(1); +} + +static const char *zconf_tokenname(int token) +{ + switch (token) { + case T_MENU: return "menu"; + case T_ENDMENU: return "endmenu"; + case T_CHOICE: return "choice"; + case T_ENDCHOICE: return "endchoice"; + case T_IF: return "if"; + case T_ENDIF: return "endif"; + case T_DEPENDS: return "depends"; + case T_VISIBLE: return "visible"; + } + return ""; +} + +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken) +{ + if (id->token != endtoken) { + zconf_error("unexpected '%s' within %s block", + id->name, zconf_tokenname(starttoken)); + yynerrs++; + return false; + } + if (current_menu->file != current_file) { + zconf_error("'%s' in different file than '%s'", + id->name, zconf_tokenname(starttoken)); + fprintf(stderr, "%s:%d: location of the '%s'\n", + current_menu->file->name, current_menu->lineno, + zconf_tokenname(starttoken)); + yynerrs++; + return false; + } + return true; +} + +static void zconfprint(const char *err, ...) +{ + va_list ap; + + fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void zconf_error(const char *err, ...) +{ + va_list ap; + + yynerrs++; + fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void yyerror(const char *err) +{ + fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err); +} + +static void print_quoted_string(FILE *out, const char *str) +{ + const char *p; + int len; + + putc('"', out); + while ((p = strchr(str, '"'))) { + len = p - str; + if (len) + fprintf(out, "%.*s", len, str); + fputs("\\\"", out); + str = p + 1; + } + fputs(str, out); + putc('"', out); +} + +static void print_symbol(FILE *out, struct menu *menu) +{ + struct symbol *sym = menu->sym; + struct property *prop; + + if (sym_is_choice(sym)) + fprintf(out, "\nchoice\n"); + else + fprintf(out, "\nconfig %s\n", sym->name); + switch (sym->type) { + case S_BOOLEAN: + fputs(" bool\n", out); + break; + case S_TRISTATE: + fputs(" tristate\n", out); + break; + case S_STRING: + fputs(" string\n", out); + break; + case S_INT: + fputs(" integer\n", out); + break; + case S_HEX: + fputs(" hex\n", out); + break; + default: + fputs(" ???\n", out); + break; + } + for (prop = sym->prop; prop; prop = prop->next) { + if (prop->menu != menu) + continue; + switch (prop->type) { + case P_PROMPT: + fputs(" prompt ", out); + print_quoted_string(out, prop->text); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_DEFAULT: + fputs( " default ", out); + expr_fprint(prop->expr, out); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_CHOICE: + fputs(" #choice value\n", out); + break; + case P_SELECT: + fputs( " select ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_IMPLY: + fputs( " imply ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_RANGE: + fputs( " range ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_MENU: + fputs( " menu ", out); + print_quoted_string(out, prop->text); + fputc('\n', out); + break; + default: + fprintf(out, " unknown prop %d!\n", prop->type); + break; + } + } + if (menu->help) { + int len = strlen(menu->help); + while (menu->help[--len] == '\n') + menu->help[len] = 0; + fprintf(out, " help\n%s\n", menu->help); + } +} + +void zconfdump(FILE *out) +{ + struct property *prop; + struct symbol *sym; + struct menu *menu; + + menu = rootmenu.list; + while (menu) { + if ((sym = menu->sym)) + print_symbol(out, menu); + else if ((prop = menu->prompt)) { + switch (prop->type) { + case P_COMMENT: + fputs("\ncomment ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + case P_MENU: + fputs("\nmenu ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + default: + ; + } + if (!expr_is_yes(prop->visible.expr)) { + fputs(" depends ", out); + expr_fprint(prop->visible.expr, out); + fputc('\n', out); + } + } + + if (menu->list) + menu = menu->list; + else if (menu->next) + menu = menu->next; + else while ((menu = menu->parent)) { + if (menu->prompt && menu->prompt->type == P_MENU) + fputs("\nendmenu\n", out); + if (menu->next) { + menu = menu->next; + break; + } + } + } +} + +#include "zconf.lex.c" +#include "util.c" +#include "confdata.c" +#include "expr.c" +#include "symbol.c" +#include "menu.c" diff --git a/support/legal-info/README.header b/support/legal-info/README.header new file mode 100644 index 00000000..55996b53 --- /dev/null +++ b/support/legal-info/README.header @@ -0,0 +1,35 @@ +Most of the packages that were used by Buildroot to produce the image files, +including Buildroot itself, have open-source licenses. It is your +responsibility to comply to the requirements of these licenses. +To make this easier for you, Buildroot collected in this directory some +material you may need to get it done. + +This material is composed of the following items. + * The scripts used to control compilation of the packages and the generation + of image files, i.e. the Buildroot sources. + Note: this has not been saved due to technical limitations, you must + collect it manually. + * The Buildroot configuration file; this has been saved in buildroot.config. + * The toolchain (cross-compiler and related tools) used to generate all the + compiled programs. + Note: this may have not been saved due to technical limitations, you may + need to collect it manually. + * The original source code for target packages in the 'sources/' + subdirectory and for host packages in the 'host-sources/' subdirectory + (except for the non-redistributable packages, which have not been + saved). Patches that were applied are also saved, along with a file + named 'series' that lists the patches in the order they were + applied. Patches are under the same license as the files that they + modify in the original package. + Note: Buildroot applies additional patches to Libtool scripts of + autotools-based packages. These patches can be found under + support/libtool in the Buildroot source and, due to technical + limitations, are not saved with the package sources. You may need + to collect them manually. + * Two manifest files listing the configured packages and related + information: 'manifest.csv' for target packages and 'host-manifest.csv' + for host packages. + * The license text of the packages, in the 'licenses/' and + 'host-licenses/' subdirectories for target and host packages + respectively. + diff --git a/support/legal-info/README.warnings-header b/support/legal-info/README.warnings-header new file mode 100644 index 00000000..cd082906 --- /dev/null +++ b/support/legal-info/README.warnings-header @@ -0,0 +1,4 @@ +Due to technical limitations or lack of license definition in the package +makefile, some of the material listed above could not been saved, as the +following list details. + diff --git a/support/legal-info/buildroot.hash b/support/legal-info/buildroot.hash new file mode 100644 index 00000000..9d9f4c9d --- /dev/null +++ b/support/legal-info/buildroot.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 9755181e27175cb3510b4da8629caa406fb355a19aa8e7d55f06bf8ab33323c4 COPYING diff --git a/support/libtool/buildroot-libtool-v1.5.patch b/support/libtool/buildroot-libtool-v1.5.patch new file mode 100644 index 00000000..cdd9c5a0 --- /dev/null +++ b/support/libtool/buildroot-libtool-v1.5.patch @@ -0,0 +1,91 @@ +--- a/ltmain.sh 2014-07-31 10:43:01.634568799 -0300 ++++ b/ltmain.sh 2014-07-31 10:44:14.032018999 -0300 +@@ -226,8 +226,9 @@ + # line option must be used. + if test -z "$tagname"; then + $echo "$modename: unable to infer tagged configuration" +- $echo "$modename: specify a tag with \`--tag'" 1>&2 +- exit $EXIT_FAILURE ++ $echo "$modename: defaulting to \`CC'" ++ $echo "$modename: if this is not correct, specify a tag with \`--tag'" ++# exit $EXIT_FAILURE + # else + # $echo "$modename: using $tagname tagged configuration" + fi +@@ -247,6 +248,11 @@ + arg="$1" + shift + ++ # Make -static behave as -all-static ++ case $arg in ++ -static) arg="-all-static" ;; ++ esac ++ + case $arg in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; +@@ -1238,7 +1244,8 @@ + prevarg="$arg" + + case $arg in +- -all-static) ++ # Make -static behave like -all-static ++ -all-static | -static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" +@@ -2146,8 +2153,14 @@ + absdir="$abs_ladir" + libdir="$abs_ladir" + else +- dir="$libdir" +- absdir="$libdir" ++ # Adding 'libdir' from the .la file to our library search paths ++ # breaks crosscompilation horribly. We cheat here and don't add ++ # it, instead adding the path where we found the .la. -CL ++ dir="$abs_ladir" ++ absdir="$abs_ladir" ++ libdir="$abs_ladir" ++ #dir="$libdir" ++ #absdir="$libdir" + fi + else + dir="$ladir/$objdir" +@@ -2272,7 +2285,7 @@ + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" +- need_relink=yes ++ need_relink=no + fi + # This is a shared library + +@@ -5169,6 +5182,10 @@ + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do ++ # Replacing uninstalled with installed can easily break crosscompilation, ++ # since the installed path is generally the wrong architecture. -CL ++ newdependency_libs="$newdependency_libs $deplib" ++ continue + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` +@@ -5487,10 +5504,13 @@ + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. +- if test "$inst_prefix_dir" = "$destdir"; then +- $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 +- exit $EXIT_FAILURE +- fi ++ # ++ # This breaks install into our staging area. -PB ++ # ++ # if test "$inst_prefix_dir" = "$destdir"; then ++ # $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 ++ # exit $EXIT_FAILURE ++ # fi + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. diff --git a/support/libtool/buildroot-libtool-v2.2.patch b/support/libtool/buildroot-libtool-v2.2.patch new file mode 100644 index 00000000..8bb78268 --- /dev/null +++ b/support/libtool/buildroot-libtool-v2.2.patch @@ -0,0 +1,106 @@ +--- a/ltmain.sh 2010-06-09 15:08:53.000000000 +0200 ++++ b/ltmain.sh 2014-07-30 22:33:41.176710372 +0200 +@@ -1214,8 +1214,8 @@ + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then +- func_echo "unable to infer tagged configuration" +- func_fatal_error "specify a tag with \`--tag'" ++ func_echo "defaulting to \`CC'" ++ func_echo "if this is not correct, specify a tag with \`--tag'" + # else + # func_verbose "using $tagname tagged configuration" + fi +@@ -2239,8 +2239,11 @@ + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. +- test "$inst_prefix_dir" = "$destdir" && \ +- func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" ++ # ++ # This breaks install into our staging area. -PB ++ # ++ # test "$inst_prefix_dir" = "$destdir" && \ ++ # func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. +@@ -4429,7 +4432,8 @@ + ;; + -all-static | -static | -static-libtool-libs) + case $arg in +- -all-static) ++ # Make -static behave like -all-static ++ -all-static | -static) + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi +@@ -4438,12 +4442,6 @@ + fi + prefer_static_libs=yes + ;; +- -static) +- if test -z "$pic_flag" && test -n "$link_static_flag"; then +- dlopen_self=$dlopen_self_static +- fi +- prefer_static_libs=built +- ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static +@@ -4726,7 +4724,8 @@ + prevarg="$arg" + + case $arg in +- -all-static) ++ # Make -static behave like -all-static ++ -all-static | -static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" +@@ -4995,7 +4994,7 @@ + continue + ;; + +- -static | -static-libtool-libs) ++ -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects +@@ -5739,8 +5738,14 @@ + absdir="$abs_ladir" + libdir="$abs_ladir" + else +- dir="$libdir" +- absdir="$libdir" ++ # Adding 'libdir' from the .la file to our library search paths ++ # breaks crosscompilation horribly. We cheat here and don't add ++ # it, instead adding the path where we found the .la. -CL ++ dir="$abs_ladir" ++ absdir="$abs_ladir" ++ libdir="$abs_ladir" ++ #dir="$libdir" ++ #absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else +@@ -5891,7 +5896,7 @@ + *) + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" +- need_relink=yes ++ need_relink=no + fi + ;; + esac +@@ -8373,6 +8378,10 @@ + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do ++ # Replacing uninstalled with installed can easily break crosscompilation, ++ # since the installed path is generally the wrong architecture. -CL ++ newdependency_libs="$newdependency_libs $deplib" ++ continue + case $deplib in + *.la) + func_basename "$deplib" diff --git a/support/libtool/buildroot-libtool-v2.4.4.patch b/support/libtool/buildroot-libtool-v2.4.4.patch new file mode 100644 index 00000000..bcdf30c7 --- /dev/null +++ b/support/libtool/buildroot-libtool-v2.4.4.patch @@ -0,0 +1,95 @@ +Libtool fixes for cross-compilation, many past contributors/authors. +Update based on libtool-2.4.4, useful for 2.4.3 as well but not 2.4.2. + +Signed-off-by: Gustavo Zacarias + +--- a/ltmain.sh 2014-12-16 09:51:23.068441045 -0300 ++++ b/ltmain.sh 2014-12-16 09:57:10.509430339 -0300 +@@ -2687,8 +2687,8 @@ + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then +- func_echo "unable to infer tagged configuration" +- func_fatal_error "specify a tag with '--tag'" ++ func_echo "defaulting to \`CC'" ++ func_echo "if this is not correct, specify a tag with \`--tag'" + # else + # func_verbose "using $tagname tagged configuration" + fi +@@ -4277,8 +4277,12 @@ + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. +- test "$inst_prefix_dir" = "$destdir" && \ +- func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" ++ ++ # ++ # This breaks install into our staging area. -PB ++ # ++ #test "$inst_prefix_dir" = "$destdir" && \ ++ # func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. +@@ -6550,7 +6554,8 @@ + ;; + -all-static | -static | -static-libtool-libs) + case $arg in +- -all-static) ++ # Make -static behave like -all-static -GZ ++ -all-static | -static) + if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi +@@ -6559,12 +6564,6 @@ + fi + prefer_static_libs=yes + ;; +- -static) +- if test -z "$pic_flag" && test -n "$link_static_flag"; then +- dlopen_self=$dlopen_self_static +- fi +- prefer_static_libs=built +- ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static +@@ -6858,7 +6857,8 @@ + prevarg=$arg + + case $arg in +- -all-static) ++ # Make -static behave like -all-static -GZ ++ -all-static | -static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" +@@ -7149,7 +7149,7 @@ + continue + ;; + +- -static | -static-libtool-libs) ++ -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects +@@ -8112,7 +8112,7 @@ + *) + if test no = "$installed"; then + func_append notinst_deplibs " $lib" +- need_relink=yes ++ need_relink=no + fi + ;; + esac +@@ -10710,6 +10710,10 @@ + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do ++ # Replacing uninstalled with installed can easily break crosscompilation, ++ # since the installed path is generally the wrong architecture. -CL ++ newdependency_libs="$newdependency_libs $deplib" ++ continue + case $deplib in + *.la) + func_basename "$deplib" diff --git a/support/libtool/buildroot-libtool-v2.4.patch b/support/libtool/buildroot-libtool-v2.4.patch new file mode 100644 index 00000000..f610b1b3 --- /dev/null +++ b/support/libtool/buildroot-libtool-v2.4.patch @@ -0,0 +1,89 @@ +--- a/ltmain.sh 2014-07-30 22:21:24.664684143 +0200 ++++ b/ltmain.sh 2014-07-30 22:23:02.440687625 +0200 +@@ -1417,8 +1417,8 @@ + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then +- func_echo "unable to infer tagged configuration" +- func_fatal_error "specify a tag with \`--tag'" ++ func_echo "defaulting to \`CC'" ++ func_echo "if this is not correct, specify a tag with \`--tag'" + # else + # func_verbose "using $tagname tagged configuration" + fi +@@ -2963,8 +2963,11 @@ + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. +- test "$inst_prefix_dir" = "$destdir" && \ +- func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" ++ # ++ # This breaks install into our staging area. -PB ++ # ++ # test "$inst_prefix_dir" = "$destdir" && \ ++ # func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. +@@ -5176,7 +5179,8 @@ + ;; + -all-static | -static | -static-libtool-libs) + case $arg in +- -all-static) ++ # Make -static behave like -all-static ++ -all-static | -static) + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi +@@ -5185,12 +5189,6 @@ + fi + prefer_static_libs=yes + ;; +- -static) +- if test -z "$pic_flag" && test -n "$link_static_flag"; then +- dlopen_self=$dlopen_self_static +- fi +- prefer_static_libs=built +- ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static +@@ -5473,7 +5471,8 @@ + prevarg="$arg" + + case $arg in +- -all-static) ++ # Make -static behave like -all-static ++ -all-static | -static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" +@@ -5754,7 +5753,7 @@ + continue + ;; + +- -static | -static-libtool-libs) ++ -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects +@@ -6697,7 +6696,7 @@ + *) + if test "$installed" = no; then + func_append notinst_deplibs " $lib" +- need_relink=yes ++ need_relink=no + fi + ;; + esac +@@ -9275,6 +9274,10 @@ + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do ++ # Replacing uninstalled with installed can easily break crosscompilation, ++ # since the installed path is generally the wrong architecture. -CL ++ newdependency_libs="$newdependency_libs $deplib" ++ continue + case $deplib in + *.la) + func_basename "$deplib" diff --git a/support/misc/Buildroot.cmake b/support/misc/Buildroot.cmake new file mode 100644 index 00000000..761b6d7a --- /dev/null +++ b/support/misc/Buildroot.cmake @@ -0,0 +1,8 @@ +# Impersonate a Linux system. Afterall, that's what we are... +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM ${CMAKE_SYSTEM_NAME}) +include(Platform/Linux) + +# Override problematic settings, to avoid RPATH against host lib directories. +set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB32_PATHS FALSE) +set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS FALSE) diff --git a/support/misc/Vagrantfile b/support/misc/Vagrantfile new file mode 100644 index 00000000..2251a992 --- /dev/null +++ b/support/misc/Vagrantfile @@ -0,0 +1,60 @@ +################################################################################ +# +# Vagrantfile +# +################################################################################ + +# Buildroot version to use +RELEASE='2024.08' + +### Change here for more memory/cores ### +VM_MEMORY=2048 +VM_CORES=1 + +Vagrant.configure('2') do |config| + config.vm.box = 'ubuntu/bionic64' + + config.vm.provider :vmware_fusion do |v, override| + v.vmx['memsize'] = VM_MEMORY + v.vmx['numvcpus'] = VM_CORES + end + + config.vm.provider :virtualbox do |v, override| + v.memory = VM_MEMORY + v.cpus = VM_CORES + + required_plugins = %w( vagrant-vbguest ) + required_plugins.each do |plugin| + system "vagrant plugin install #{plugin}" unless Vagrant.has_plugin? plugin + end + end + + config.vm.provision 'shell' do |s| + s.inline = 'echo Setting up machine name' + + config.vm.provider :vmware_fusion do |v, override| + v.vmx['displayname'] = "Buildroot #{RELEASE}" + end + + config.vm.provider :virtualbox do |v, override| + v.name = "Buildroot #{RELEASE}" + end + end + + 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/support/misc/cross-compilation.conf.in b/support/misc/cross-compilation.conf.in new file mode 100644 index 00000000..a58ab553 --- /dev/null +++ b/support/misc/cross-compilation.conf.in @@ -0,0 +1,40 @@ +# Note: Buildroot's and Meson's terminologies differ about the meaning +# of 'build', 'host' and 'target': +# - Buildroot's 'host' is Meson's 'build' +# - Buildroot's 'target' is Meson's 'host' + +[binaries] +c = '@TARGET_CC@' +cpp = '@TARGET_CXX@' +ar = '@TARGET_AR@' +strip = '@TARGET_STRIP@' +cmake = '@BR2_CMAKE@' +fortran = '@TARGET_FC@' +pkg-config = '@PKGCONF_HOST_BINARY@' +g-ir-compiler = '@STAGING_DIR@/usr/bin/g-ir-compiler' +g-ir-scanner = '@STAGING_DIR@/usr/bin/g-ir-scanner' + +[built-in options] +c_args = [@TARGET_CFLAGS@] +c_link_args = [@TARGET_LDFLAGS@] +cpp_args = [@TARGET_CXXFLAGS@] +cpp_link_args = [@TARGET_LDFLAGS@] +fortran_args = [@TARGET_FCFLAGS@] +fortran_link_args = [@TARGET_LDFLAGS@] +wrap_mode = 'nodownload' +cmake_prefix_path = '@STAGING_DIR@/usr/lib/cmake' + +[properties] +needs_exe_wrapper = true +sys_root = '@STAGING_DIR@' +pkg_config_libdir = '@STAGING_DIR@/usr/lib/pkgconfig:@STAGING_DIR@/usr/share/pkgconfig' +pkg_config_static = '@STATIC@' +# enable meson build to pass a toolchain file to cmake +cmake_toolchain_file = '@HOST_DIR@/share/buildroot/toolchainfile.cmake' +cmake_defaults = false + +[host_machine] +system = 'linux' +cpu_family = '@TARGET_ARCH@' +cpu = '@TARGET_CPU@' +endian = '@TARGET_ENDIAN@' diff --git a/support/misc/gen-glibc-locales.mk b/support/misc/gen-glibc-locales.mk new file mode 100644 index 00000000..3db1e0dc --- /dev/null +++ b/support/misc/gen-glibc-locales.mk @@ -0,0 +1,41 @@ +# Generates glibc locale data for target. + +inputfile = $(firstword $(subst ., ,$(1))) +charmap = $(or $(word 2,$(subst ., ,$(1))),UTF-8) + +# Packages all the generated locale data into the final archive. +# +# We sort the file names to produce consistent output regardless of +# the `find` outputs order. +$(TARGET_DIR)/usr/lib/locale/locale-archive: $(LOCALES) + $(Q)rm -f $(@) + $(Q)find $(TARGET_DIR)/usr/lib/locale/ -maxdepth 1 -mindepth 1 -type d -print0 \ + | sort -z \ + | xargs -0 \ + $(HOST_DIR)/bin/localedef \ + --prefix=$(TARGET_DIR) \ + --$(ENDIAN)-endian \ + --add-to-archive + +# Generates locale data for each locale. +# +# The input data comes preferably from the toolchain, or if the toolchain +# does not have them (Linaro toolchains), we use the ones available on the +# host machine. +# +# Uses `localedef`, which is built by the `host-localedef` package. +$(LOCALES): | $(TARGET_DIR)/usr/lib/locale/ + $(Q)echo "Generating locale $(@)" + $(Q)I18NPATH=$(STAGING_DIR)/usr/share/i18n:/usr/share/i18n \ + $(HOST_DIR)/bin/localedef \ + --prefix=$(TARGET_DIR) \ + --$(ENDIAN)-endian \ + --no-archive \ + -i $(call inputfile,$(@)) \ + -f $(call charmap,$(@)) \ + $(@) + +.PHONY: $(LOCALES) + +$(TARGET_DIR)/usr/lib/locale/: + $(Q)mkdir -p $(TARGET_DIR)/usr/lib/locale/ diff --git a/support/misc/gitlab-ci.yml.in b/support/misc/gitlab-ci.yml.in new file mode 100644 index 00000000..db206432 --- /dev/null +++ b/support/misc/gitlab-ci.yml.in @@ -0,0 +1,154 @@ +stages: + - download + - test + +before_script: + - git config --global --add safe.directory ${CI_PROJECT_DIR} + +.check-check-package_base: + stage: test + script: + - python3 -m pytest -v utils/checkpackagelib/ + +.check-check-symbol_base: + stage: test + script: + - python3 -m pytest -v utils/checksymbolslib/ + +.check-DEVELOPERS_base: + stage: test + script: + - utils/get-developers -v + +.check-package_base: + stage: test + script: + - make check-package + +.check-symbol_base: + stage: test + script: + - utils/check-symbols + +.defconfig_check: + stage: test + script: + - DEFCONFIG_NAME=$(echo ${CI_JOB_NAME} | sed -e 's,_check$,,g') + - echo "Configure Buildroot for ${DEFCONFIG_NAME}" + - make ${DEFCONFIG_NAME} + - support/scripts/check-dotconfig.py .config configs/${DEFCONFIG_NAME} + artifacts: + when: on_failure + expire_in: 2 weeks + paths: + - .config + +.run_make: &run_make + | + make O=${OUTPUT_DIR} > >(tee build.log |grep '>>>') 2>&1 || { + echo 'Failed build last output' + tail -200 build.log + exit 1 + } + +.defconfig_base: + stage: test + script: + - DEFCONFIG_NAME=${CI_JOB_NAME} + - OUTPUT_DIR=output + - echo "Configure Buildroot for ${DEFCONFIG_NAME}" + - make ${DEFCONFIG_NAME} + - ./support/scripts/check-dotconfig.py .config ./configs/${DEFCONFIG_NAME} + - echo 'Build buildroot' + - *run_make + - | + ./support/scripts/boot-qemu-image.py "${DEFCONFIG_NAME}" > >(tee runtime-test.log) 2>&1 || { + echo 'Failed runtime test last output' + tail -200 runtime-test.log + exit 1 + } + retry: + max: 2 + when: + - runner_system_failure + - stuck_or_timeout_failure + artifacts: + when: always + expire_in: 2 weeks + paths: + - .config + - build.log + - output/images/ + - output/build/build-time.log + - output/build/packages-file-list.txt + - output/build/*/.config + - runtime-test.log + +.runtime_test_download: + stage: download + # Keep test-dl directory so the downloaded files can be an artifact of + # the job passed to all jobs of next stages. + script: ./support/testing/run-tests -d test-dl/ --prepare-only + artifacts: + when: always + paths: + - test-dl/ + +.runtime_test_base: + stage: test + # Keep build directories so the rootfs can be an artifact of the job. The + # runner will clean up those files for us. + # Multiply every emulator timeout by 10 to avoid sporadic failures in + # elastic runners. + script: + - TEST_CASE_NAME=${CI_JOB_NAME} + - echo "Starting runtime test ${TEST_CASE_NAME}" + - | + ./support/testing/run-tests -o test-output/ -d test-dl/ -k --timeout-multiplier 10 ${TEST_CASE_NAME} || { + echo 'Failed runtime test last output' + if [ -f test-output/*-run.log ]; then + tail -200 test-output/*-run.log | sed 's/\r\r$//' + else + tail -200 test-output/*-build.log + fi + exit 1 + } + retry: + max: 2 + when: + - runner_system_failure + - stuck_or_timeout_failure + artifacts: + when: always + expire_in: 2 weeks + paths: + - test-output/*.log + - test-output/*/.config + - test-output/*/images/* + +.test_pkg: + stage: test + script: + - OUTPUT_DIR=${CI_JOB_NAME} + - echo "Configure Buildroot for ${OUTPUT_DIR}" + - make O=${OUTPUT_DIR} syncconfig + - make O=${OUTPUT_DIR} savedefconfig + - echo 'Build buildroot' + - *run_make + needs: + - pipeline: $PARENT_PIPELINE_ID + job: generate-gitlab-ci-yml + retry: + max: 2 + when: + - runner_system_failure + - stuck_or_timeout_failure + artifacts: + when: always + expire_in: 2 weeks + paths: + - build.log + - br-test-pkg/*/.config + - br-test-pkg/*/defconfig + - br-test-pkg/*/build/build-time.log + - br-test-pkg/*/build/packages-file-list*.txt diff --git a/support/misc/relocate-sdk.sh b/support/misc/relocate-sdk.sh new file mode 100755 index 00000000..981d2724 --- /dev/null +++ b/support/misc/relocate-sdk.sh @@ -0,0 +1,52 @@ +#!/bin/sh + +if [ "$#" -gt 1 ]; then + echo "Usage: $0 [path]" + echo "Run this script to relocate the buildroot SDK to the current location" + echo "If [path] is given, sets the location to [path] (without moving it)" + exit 1 +fi + +cd "$(dirname "$(readlink -f "$0")")" +if [ "$#" -eq 1 ]; then + NEWPATH="$1" +else + NEWPATH="${PWD}" +fi + +LOCFILE="share/buildroot/sdk-location" +if [ ! -r "${LOCFILE}" ]; then + echo "Previous location of the buildroot SDK not found!" + exit 1 +fi +OLDPATH="$(cat "${LOCFILE}")" + +if [ "${NEWPATH}" = "${OLDPATH}" ]; then + echo "This buildroot SDK has already been relocated!" + exit 0 +fi + +# Check if the path substitution does work properly, e.g. a tree +# "/a/b/c" copied into "/a/b/c/a/b/c/" would not be allowed. +newpath="$(sed -e "s|${OLDPATH}|${NEWPATH}|g" "${LOCFILE}")" +if [ "${NEWPATH}" != "${newpath}" ]; then + echo "Something went wrong with substituting the path!" + echo "Please choose another location for your SDK!" + exit 1 +fi + +echo "Relocating the buildroot SDK from ${OLDPATH} to ${NEWPATH} ..." + +# Make sure file uses the right language +export LC_ALL=C +# Replace the old path with the new one in all text files +grep -lr "${OLDPATH}" . | while read -r FILE ; do + if file -b --mime-type "${FILE}" | grep -q '^text/' && [ "${FILE}" != "${LOCFILE}" ] + then + sed -i "s|${OLDPATH}|${NEWPATH}|g" "${FILE}" + fi +done + +# At the very end, we update the location file to not break the +# SDK if this script gets interruted. +sed -i "s|${OLDPATH}|${NEWPATH}|g" ${LOCFILE} diff --git a/support/misc/target-dir-warning.txt b/support/misc/target-dir-warning.txt new file mode 100644 index 00000000..94d2e0c0 --- /dev/null +++ b/support/misc/target-dir-warning.txt @@ -0,0 +1,29 @@ +Warning! +======== + +This directory does *not* contain the root filesystem that you can use +on your embedded system. Since Buildroot does not run as root, it +cannot create device files and set the permissions and ownership of +files correctly in this directory to make it usable as a root +filesystem. + +For that reason, do *not* use the contents of this directory to mount +your root filesystem over NFS or copy the contents of this directory +to a SD card or USB key, thinking it will work as the root filesystem +for your embedded system. It will simply *not* work. + +Instead, if you need a usable root filesystem, please select one of +the filesystem image formats available in the Buildroot configuration +interface (make menuconfig or others) in the "Filesystem images" +sub-menu. If you want to get a filesystem image that you can easily +extract to your SD card or to some directory exposed through NFS, +please use the "tar the root filesystem" option. It will generate a +images/rootfs.tar image in your Buildroot output directory, which you +can extract as root: + + sudo tar -C /destination/of/extraction -xf images/rootfs.tar + +Those image files are created using the contents of the target/ +directory, but there is a post-processing step to create device files +and set ownership/permissions properly even if Buildroot does not run +as root. diff --git a/support/misc/toolchainfile.cmake.in b/support/misc/toolchainfile.cmake.in new file mode 100644 index 00000000..5d2b8695 --- /dev/null +++ b/support/misc/toolchainfile.cmake.in @@ -0,0 +1,136 @@ +# +# Automatically generated file; DO NOT EDIT. +# CMake toolchain file for Buildroot +# + +# In order to allow the toolchain to be relocated, we calculate the +# HOST_DIR based on this file's location: $(HOST_DIR)/share/buildroot +# and store it in RELOCATED_HOST_DIR. +# All the other variables that need to refer to HOST_DIR will use the +# RELOCATED_HOST_DIR variable. +string(REPLACE "/share/buildroot" "" RELOCATED_HOST_DIR ${CMAKE_CURRENT_LIST_DIR}) + +# Point cmake to the location where we have our custom modules, +# so that it can find our custom platform description. +list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}) + +if(NOT DEFINED CMAKE_SYSTEM_NAME) + set(CMAKE_SYSTEM_NAME Buildroot) +endif() +if(NOT DEFINED CMAKE_SYSTEM_VERSION) + set(CMAKE_SYSTEM_VERSION 1) +endif() +if(NOT DEFINED CMAKE_SYSTEM_PROCESSOR) + set(CMAKE_SYSTEM_PROCESSOR @@CMAKE_SYSTEM_PROCESSOR@@) +endif() + +# 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 :( +if(NOT DEFINED CMAKE_C_FLAGS_DEBUG) + set(CMAKE_C_FLAGS_DEBUG "" CACHE STRING "Debug CFLAGS") +endif() +if(NOT DEFINED CMAKE_C_FLAGS_RELEASE) + set(CMAKE_C_FLAGS_RELEASE " -DNDEBUG" CACHE STRING "Release CFLAGS") +endif() + +# Build type from the Buildroot configuration +if(NOT DEFINED CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE @@CMAKE_BUILD_TYPE@@ CACHE STRING "Buildroot build configuration") +endif() + +# 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") +if(NOT DEFINED CMAKE_C_FLAGS) + set(CMAKE_C_FLAGS "@@TARGET_CFLAGS@@" CACHE STRING "Buildroot CFLAGS") +endif() +if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS) + set(CMAKE_EXE_LINKER_FLAGS "@@TARGET_LDFLAGS@@" CACHE STRING "Buildroot LDFLAGS for executables") +endif() +if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS) + set(CMAKE_SHARED_LINKER_FLAGS "@@TARGET_LDFLAGS@@" CACHE STRING "Buildroot LDFLAGS for shared libraries") +endif() +if(NOT DEFINED CMAKE_MODULE_LINKER_FLAGS) + set(CMAKE_MODULE_LINKER_FLAGS "@@TARGET_LDFLAGS@@" CACHE STRING "Buildroot LDFLAGS for module libraries") +endif() + +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE 0) +endif() + +if(NOT DEFINED CMAKE_PROGRAM_PATH) + set(CMAKE_PROGRAM_PATH "${RELOCATED_HOST_DIR}/bin") +endif() +if(NOT DEFINED CMAKE_SYSROOT) + set(CMAKE_SYSROOT "${RELOCATED_HOST_DIR}/@@STAGING_SUBDIR@@") +endif() +if(NOT DEFINED CMAKE_FIND_ROOT_PATH) + set(CMAKE_FIND_ROOT_PATH "${RELOCATED_HOST_DIR}/@@STAGING_SUBDIR@@") +endif() +if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_PROGRAM) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +endif() +if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_PACKAGE) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) +endif() +if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_LIBRARY) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +endif() +if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_INCLUDE) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +endif() +set(ENV{PKG_CONFIG_SYSROOT_DIR} "${RELOCATED_HOST_DIR}/@@STAGING_SUBDIR@@") + +# This toolchain file can be used both inside and outside Buildroot. +if(NOT DEFINED CMAKE_C_COMPILER) + set(CMAKE_C_COMPILER "${RELOCATED_HOST_DIR}/@@TARGET_CC@@") +endif() +if(@@TOOLCHAIN_HAS_CXX@@) + if(NOT DEFINED CMAKE_CXX_FLAGS_DEBUG) + set(CMAKE_CXX_FLAGS_DEBUG "" CACHE STRING "Debug CXXFLAGS") + endif() + if(NOT DEFINED CMAKE_CXX_FLAGS_RELEASE) + set(CMAKE_CXX_FLAGS_RELEASE " -DNDEBUG" CACHE STRING "Release CXXFLAGS") + endif() + if(NOT DEFINED CMAKE_CXX_FLAGS) + set(CMAKE_CXX_FLAGS "@@TARGET_CXXFLAGS@@" CACHE STRING "Buildroot CXXFLAGS") + endif() + if(NOT DEFINED CMAKE_CXX_COMPILER) + set(CMAKE_CXX_COMPILER "${RELOCATED_HOST_DIR}/@@TARGET_CXX@@") + endif() +endif() +if(@@TOOLCHAIN_HAS_FORTRAN@@) + if(NOT DEFINED CMAKE_Fortran_FLAGS_DEBUG) + set(CMAKE_Fortran_FLAGS_DEBUG "" CACHE STRING "Debug Fortran FLAGS") + endif() + if(NOT DEFINED CMAKE_Fortran_FLAGS_RELEASE) + set(CMAKE_Fortran_FLAGS_RELEASE " -DNDEBUG" CACHE STRING "Release Fortran FLAGS") + endif() + if(NOT DEFINED CMAKE_Fortran_FLAGS) + set(CMAKE_Fortran_FLAGS "@@TARGET_FCFLAGS@@" CACHE STRING "Buildroot FCFLAGS") + endif() + if(NOT DEFINED CMAKE_Fortran_COMPILER) + set(CMAKE_Fortran_COMPILER "${RELOCATED_HOST_DIR}/@@TARGET_FC@@") + endif() +endif() + +# For Qt6 +if(NOT DEFINED QT_HOST_PATH) + set(QT_HOST_PATH "${RELOCATED_HOST_DIR}") +endif() + +if(NOT DEFINED QT_HOST_PATH_CMAKE_DIR) + set(QT_HOST_PATH_CMAKE_DIR "${RELOCATED_HOST_DIR}/lib/cmake") +endif() diff --git a/support/misc/utils.mk b/support/misc/utils.mk new file mode 100644 index 00000000..4d0efcce --- /dev/null +++ b/support/misc/utils.mk @@ -0,0 +1,143 @@ +################################################################################ +# +# 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) +tab := $(empty) $(empty) +escape := $(shell printf '\x1b') + +# make 4.3: +# https://lwn.net/Articles/810071/ +# Number signs (#) appearing inside a macro reference or function invocation +# no longer introduce comments and should not be escaped with backslashes: +# thus a call such as: +# foo := $(shell echo '#') +# is legal. Previously the number sign needed to be escaped, for example: +# foo := $(shell echo '\#') +# Now this latter will resolve to "\#". If you want to write makefiles +# portable to both versions, assign the number sign to a variable: +# H := \# +# foo := $(shell echo '$H') +SHARP_SIGN := \# + +# 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)) + +# build a comma-separated list of items, from a space-separated +# list of items: a b c d --> a, b, c, d +make-comma-list = $(subst $(space),$(comma)$(space),$(strip $(1))) + +# build a comma-separated list of double-quoted items, from a space-separated +# list of unquoted items: a b c d --> "a", "b", "c", "d" +make-dq-comma-list = $(call make-comma-list,$(patsubst %,"%",$(strip $(1)))) + +# build a comma-separated list of single-quoted items, from a space-separated +# list of unquoted items: a b c d --> 'a', 'b', 'c', 'd' +make-sq-comma-list = $(call make-comma-list,$(patsubst %,'%',$(strip $(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/support/scripts/apply-patches.sh b/support/scripts/apply-patches.sh new file mode 100755 index 00000000..2acaa63e --- /dev/null +++ b/support/scripts/apply-patches.sh @@ -0,0 +1,167 @@ +#!/usr/bin/env bash +# A little script I whipped up to make it easy to +# patch source trees and have sane error handling +# -Erik +# +# (c) 2002 Erik Andersen +# +# Parameters: +# - "-s", optional. Silent operation, don't print anything if there +# isn't any error. +# - the build directory, optional, default value is '.'. The place where are +# the package sources. +# - the patch directory, optional, default '../kernel-patches'. The place +# where are the scripts you want to apply. +# - other parameters are the patch name patterns, optional, default value is +# '*'. Pattern(s) describing the patch names you want to apply. +# +# The script will look recursively for patches from the patch directory. If a +# file named 'series' exists then the patches mentioned in it will be applied +# as plain patches, regardless of their file name. If no 'series' file exists, +# the script will look for file names matching pattern(s). If the name +# ends with '.tar.*', '.tbz2' or '.tgz', the file is considered as an archive +# and will be uncompressed into a directory named +# '.patches-name_of_the_archive-unpacked'. It's the turn of this directory to +# be scanned with '*' as pattern. Remember that scanning is recursive. Other +# files than series file and archives are considered as a patch. +# +# Once a patch is found, the script will try to apply it. If its name doesn't +# end with '.gz', '.bz', '.bz2', '.xz', '.zip', '.Z', '.diff*' or '.patch*', +# it will be skipped. If necessary, the patch will be uncompressed before being +# applied. The list of the patches applied is stored in '.applied_patches_list' +# file in the build directory. + +set -e + +silent= +if [ "$1" = "-s" ] ; then + # add option to be used by the patch tool + silent=-s + shift +fi + +# Set directories from arguments, or use defaults. +builddir=${1-.} +patchdir=${2-../kernel-patches} +shift 2 +patchpattern=${@-*} + +export TAR=${TAR:-tar} + +# use a well defined sorting order +export LC_COLLATE=C + +if [ ! -d "${builddir}" ] ; then + echo "Aborting. '${builddir}' is not a directory." + exit 1 +fi +if [ ! -d "${patchdir}" ] ; then + echo "Aborting. '${patchdir}' is not a directory." + exit 1 +fi + +# Remove any rejects present BEFORE patching - Because if there are +# any, even if patches are well applied, at the end it will complain +# about rejects in builddir. +find ${builddir}/ '(' -name '*.rej' -o -name '.*.rej' ')' -print0 | \ + xargs -0 -r rm -f + +function apply_patch { + path="${1%%/}" + patch="${2}" + case "${path}" in + /*) ;; + *) path="$PWD/${path}";; + esac + if [ "$3" ]; then + type="series"; uncomp="cat" + else + case "$patch" in + *.gz) + type="gzip"; uncomp="gunzip -dc"; ;; + *.bz) + type="bzip"; uncomp="bunzip -dc"; ;; + *.bz2) + type="bzip2"; uncomp="bunzip2 -dc"; ;; + *.xz) + type="xz"; uncomp="unxz -dc"; ;; + *.zip) + type="zip"; uncomp="unzip -d"; ;; + *.Z) + type="compress"; uncomp="uncompress -c"; ;; + *.diff*) + type="diff"; uncomp="cat"; ;; + *.patch*) + type="patch"; uncomp="cat"; ;; + *) + echo "Unsupported file type for ${path}/${patch}, skipping"; + return 0 + ;; + esac + fi + if [ -z "$silent" ] ; then + echo "" + echo "Applying $patch using ${type}: " + fi + if [ ! -e "${path}/$patch" ] ; then + echo "Error: missing patch file ${path}/$patch" + exit 1 + fi + existing="$(grep -E "/${patch}\$" ${builddir}/.applied_patches_list || true)" + if [ -n "${existing}" ]; then + echo "Error: duplicate filename '${patch}'" + echo "Conflicting files are:" + echo " already applied: ${existing}" + echo " to be applied : ${path}/${patch}" + exit 1 + fi + echo "${path}/${patch}" >> ${builddir}/.applied_patches_list + ${uncomp} "${path}/$patch" | patch -F0 -g0 -p1 --no-backup-if-mismatch -d "${builddir}" -t -N $silent + if [ $? != 0 ] ; then + echo "Patch failed! Please fix ${patch}!" + exit 1 + fi +} + +function scan_patchdir { + local path=$1 + shift 1 + patches=${@-*} + + # If there is a series file, use it instead of using ls sort order + # to apply patches. Skip line starting with a dash. + if [ -e "${path}/series" ] ; then + # The format of a series file accepts a second field that is + # used to specify the number of directory components to strip + # when applying the patch, in the form -pN (N an integer >= 0) + # We assume this field to always be -p1 whether it is present + # or missing. + series_patches="`grep -Ev "^#" ${path}/series | cut -d ' ' -f1 2> /dev/null`" + for i in $series_patches; do + apply_patch "$path" "$i" series + done + else + for i in `cd $path; ls -d $patches 2> /dev/null` ; do + if [ -d "${path}/$i" ] ; then + scan_patchdir "${path}/$i" + elif echo "$i" | grep -q -E "\.tar(\..*)?$|\.tbz2?$|\.tgz$" ; then + unpackedarchivedir="$builddir/.patches-$(basename $i)-unpacked" + rm -rf "$unpackedarchivedir" 2> /dev/null + mkdir "$unpackedarchivedir" + ${TAR} -C "$unpackedarchivedir" -xaf "${path}/$i" + scan_patchdir "$unpackedarchivedir" + else + apply_patch "$path" "$i" + fi + done + fi +} + +touch ${builddir}/.applied_patches_list +scan_patchdir "$patchdir" "$patchpattern" + +# Check for rejects... +if [ "`find $builddir/ '(' -name '*.rej' -o -name '.*.rej' ')' -print`" ] ; then + echo "Aborting. Reject files found." + exit 1 +fi diff --git a/support/scripts/boot-qemu-image.py b/support/scripts/boot-qemu-image.py new file mode 100755 index 00000000..ba50ea69 --- /dev/null +++ b/support/scripts/boot-qemu-image.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python3 + +# This script expect to run from the Buildroot top directory. + +import os +import pexpect +import sys +import time + + +def main(): + if not (len(sys.argv) == 2): + print("Error: incorrect number of arguments") + print("""Usage: boot-qemu-image.py """) + sys.exit(1) + + # Ignore non Qemu defconfig + if not sys.argv[1].startswith('qemu_'): + sys.exit(0) + + if not os.path.exists('output/images/start-qemu.sh'): + print('qemu-start.sh is missing, cannot test.') + sys.exit(0) + + qemu_start = os.path.join(os.getcwd(), 'output/images/start-qemu.sh') + + child = pexpect.spawn(qemu_start, ['serial-only'], + timeout=50, encoding='utf-8', + env={"QEMU_AUDIO_DRV": "none"}) + + # We want only stdout into the log to avoid double echo + child.logfile = sys.stdout + + # Let the spawn actually try to fork+exec to the wrapper, and then + # let the wrapper exec the qemu process. + time.sleep(1) + + try: + child.expect(["buildroot login:"], timeout=600) + except pexpect.EOF as e: + # Some emulations require a fork of qemu-system, which may be + # missing on the system, and is not provided by Buildroot. + # In this case, spawn above will succeed at starting the wrapper + # start-qemu.sh, but that one will fail (exit with 127) in such + # a situation. + exit = [int(line.split(' ')[1]) + for line in e.value.splitlines() + if line.startswith('exitstatus: ')] + if len(exit) and exit[0] == 127: + print('qemu-start.sh could not find the qemu binary') + sys.exit(0) + print("Connection problem, exiting.") + sys.exit(1) + except pexpect.TIMEOUT: + print("System did not boot in time, exiting.") + sys.exit(1) + + child.sendline("root\r") + + try: + child.expect(["# "], timeout=600) + except pexpect.EOF: + print("Cannot connect to shell") + sys.exit(1) + except pexpect.TIMEOUT: + print("Timeout while waiting for shell") + sys.exit(1) + + child.sendline("poweroff\r") + + try: + child.expect(["System halted"], timeout=600) + child.expect(pexpect.EOF) + except pexpect.EOF: + pass + except pexpect.TIMEOUT: + # Qemu may not exit properly after "System halted", ignore. + print("Cannot halt machine") + + sys.exit(0) + + +if __name__ == "__main__": + main() diff --git a/support/scripts/br2-external b/support/scripts/br2-external new file mode 100755 index 00000000..8aea479d --- /dev/null +++ b/support/scripts/br2-external @@ -0,0 +1,278 @@ +#!/usr/bin/env 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 outputdir + + while getopts :d: OPT; do + case "${OPT}" in + d) outputdir="${OPTARG}";; + :) 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)) + + if [ -z "${outputdir}" ]; then + error "no output directory specified (-d)\n" + fi + + # Trap any unexpected error to generate a meaningful error message + trap "error 'unexpected error while generating ${ofile}\n'" ERR + + mkdir -p "${outputdir}" + do_validate "${outputdir}" ${@//:/ } + do_mk "${outputdir}" + do_kconfig "${outputdir}" +} + +# 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 outputdir="${1}" + local br2_ext + shift + + if [ ${#} -eq 0 ]; then + # No br2-external tree is valid + return + fi + + for br2_ext in "${@}"; do + do_validate_one "${br2_ext}" + done >"${outputdir}/.br2-external.mk" +} + +do_validate_one() { + local br2_ext="${1}" + local br2_name br2_desc br2_ver 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 an '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_ver="$( support/scripts/setlocalversion "${br2_ext}" )" + BR2_EXT_NAMES+=( "${br2_name}" ) + eval BR2_EXT_PATHS_${br2_name}="\"\${br2_ext}\"" + eval BR2_EXT_VERS_${br2_name}="\"\${br2_ver}\"" + 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 outputdir="${1}" + local br2_name br2_desc br2_ext br2_ver + + { + 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 'export 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}}\"" + eval br2_ver="\"\${BR2_EXT_VERS_${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}" + printf 'export BR2_EXTERNAL_%s_VERSION = %s\n' "${br2_name}" "${br2_ver}" + done + } >"${outputdir}/.br2-external.mk" +} + +# Generate the kconfig snippets for the br2-external tree. +do_kconfig() { + local outputdir="${1}" + local br2_name br2_desc br2_ext br2_ver br2 + local -a items + + items=( + paths + menus + toolchains + jpeg + openssl + skeleton + init + linux + ) + + for br2 in "${items[@]}"; do + { + 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' + fi + } >"${outputdir}/.br2-external.in.${br2}" + done + if [ ${#BR2_EXT_NAMES[@]} -eq 0 ]; then + return + fi + + printf 'menu "External options"\n\n' >>"${outputdir}/.br2-external.in.menus" + + { + printf 'config BR2_EXTERNAL_NAMES\n' + printf '\tstring\n' + # Use star-expansion: we really one a single arg. + printf '\tdefault "%s"\n' "${BR2_EXT_NAMES[*]}" + printf '\n' + } >>"${outputdir}/.br2-external.in.paths" + + for br2_name in "${BR2_EXT_NAMES[@]}"; do + eval br2_desc="\"\${BR2_EXT_DESCS_${br2_name}}\"" + eval br2_ext="\"\${BR2_EXT_PATHS_${br2_name}}\"" + eval br2_ver="\"\${BR2_EXT_VERS_${br2_name}}\"" + + { + printf 'config BR2_EXTERNAL_%s_PATH\n' "${br2_name}" + printf '\tstring\n' + printf '\tdefault "%s"\n' "${br2_ext}" + printf 'config BR2_EXTERNAL_%s_VERSION\n' "${br2_name}" + printf '\tstring\n' + printf '\tdefault "%s"\n' "${br2_ver}" + printf '\n' + } >>"${outputdir}/.br2-external.in.paths" + + { + 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 'source "%s/Config.in"\n' "${br2_ext}" + if [ ${#BR2_EXT_NAMES[@]} -gt 1 ]; then + printf 'endmenu # %s\n' "${br2_name}" + fi + printf '\n' + } >>"${outputdir}/.br2-external.in.menus" + + if [ -f "${br2_ext}/provides/toolchains.in" ]; then + printf 'comment "Toolchains from: %s"\n' "${br2_desc}" + printf 'source "%s/provides/toolchains.in"\n' "${br2_ext}" + printf '\n' + else + printf '# No toolchain from: %s\n\n' "${br2_desc}" + fi >>"${outputdir}/.br2-external.in.toolchains" + + if [ -f "${br2_ext}/provides/jpeg.in" ]; then + printf 'comment "jpeg from: %s"\n' "${br2_desc}" + printf 'source "%s/provides/jpeg.in"\n' "${br2_ext}" + printf '\n' + else + printf '# No jpeg from: %s\n\n' "${br2_desc}" + fi >>"${outputdir}/.br2-external.in.jpeg" + + if [ -f "${br2_ext}/provides/openssl.in" ]; then + printf 'comment "openssl from: %s"\n' "${br2_desc}" + printf 'source "%s/provides/openssl.in"\n' "${br2_ext}" + printf '\n' + else + printf '# No openssl from: %s\n\n' "${br2_desc}" + fi >>"${outputdir}/.br2-external.in.openssl" + + if [ -f "${br2_ext}/provides/skeleton.in" ]; then + printf 'comment "skeleton from: %s"\n' "${br2_desc}" + printf 'source "%s/provides/skeleton.in"\n' "${br2_ext}" + printf '\n' + else + printf '# No skeleton from: %s\n\n' "${br2_desc}" + fi >>"${outputdir}/.br2-external.in.skeleton" + + if [ -f "${br2_ext}/provides/init.in" ]; then + printf 'comment "init from: %s"\n' "${br2_desc}" + printf 'source "%s/provides/init.in"\n' "${br2_ext}" + printf '\n' + else + printf '# No init from: %s\n\n' "${br2_desc}" + fi >>"${outputdir}/.br2-external.in.init" + + if [ -f "${br2_ext}/linux/Config.ext.in" ]; then + printf 'comment "linux extension from: %s"\n' "${br2_desc}" + printf 'source "%s/linux/Config.ext.in"\n' "${br2_ext}" + printf '\n' + else + printf '# No linux extension from: %s\n\n' "${br2_desc}" + fi >>"${outputdir}/.br2-external.in.linux" + done + + printf 'endmenu\n' >>"${outputdir}/.br2-external.in.menus" +} + +error() { local fmt="${1}"; shift; printf "BR2_EXTERNAL_ERROR = ${fmt}" "${@}"; exit 1; } + +my_name="${0##*/}" +main "${@}" diff --git a/support/scripts/brpkgutil.py b/support/scripts/brpkgutil.py new file mode 100644 index 00000000..73d8fbe9 --- /dev/null +++ b/support/scripts/brpkgutil.py @@ -0,0 +1,50 @@ +# Copyright (C) 2010-2013 Thomas Petazzoni +# Copyright (C) 2019 Yann E. MORIN + +import json +import logging +import os +import subprocess +from collections import defaultdict + + +# This function returns a tuple of four dictionaries, all using package +# names as keys: +# - a dictionary which values are the lists of packages that are the +# dependencies of the package used as key; +# - a dictionary which values are the lists of packages that are the +# reverse dependencies of the package used as key; +# - a dictionary which values are the type of the package used as key; +# - a dictionary which values are the version of the package used as key, +# 'virtual' for a virtual package, or the empty string for a rootfs. +def get_dependency_tree(): + logging.info("Getting dependency tree...") + + deps = {} + rdeps = defaultdict(list) + types = {} + versions = {} + + # Special case for the 'all' top-level fake package + deps['all'] = [] + types['all'] = 'target' + versions['all'] = '' + + cmd = ["make", "-s", "--no-print-directory", "show-info"] + with open(os.devnull, 'wb') as devnull: + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=devnull, + universal_newlines=True) + pkg_list = json.loads(p.communicate()[0]) + + for pkg in pkg_list: + deps['all'].append(pkg) + types[pkg] = pkg_list[pkg]["type"] + deps[pkg] = pkg_list[pkg].get("dependencies", []) + for p in deps[pkg]: + rdeps[p].append(pkg) + versions[pkg] = \ + None if pkg_list[pkg]["type"] == "rootfs" \ + else "virtual" if pkg_list[pkg]["virtual"] \ + else pkg_list[pkg]["version"] + + return (deps, rdeps, types, versions) diff --git a/support/scripts/check-bin-arch b/support/scripts/check-bin-arch new file mode 100755 index 00000000..27cc59bc --- /dev/null +++ b/support/scripts/check-bin-arch @@ -0,0 +1,96 @@ +#!/usr/bin/env bash + +# List of hardcoded paths that should be ignored, as they may +# contain binaries for an architecture different from the +# architecture of the target. +declare -a IGNORES=( + # Skip firmware files, they could be ELF files for other + # architectures + "/lib/firmware" + "/usr/lib/firmware" + + # Skip kernel modules + # When building a 32-bit userland on 64-bit architectures, the kernel + # and its modules may still be 64-bit. To keep the basic + # check-bin-arch logic simple, just skip this directory. + "/lib/modules" + "/usr/lib/modules" + + # Skip files in /usr/share, several packages (qemu, + # pru-software-support) legitimately install ELF binaries that + # are not for the target architecture + "/usr/share" + + # Skip files in {/usr,}/lib/grub, since it is possible to have + # it for a different architecture (e.g. i386 grub on x86_64). + "/lib/grub" + "/usr/lib/grub" + + # Guile modules are ELF files, with a "None" machine + "/usr/lib/guile" +) + +while getopts p:l:r:a:i: OPT ; do + case "${OPT}" in + p) package="${OPTARG}";; + l) pkg_list="${OPTARG}";; + r) readelf="${OPTARG}";; + a) arch_name="${OPTARG}";; + i) + # Ensure we do have single '/' as separators, + # and that we have a leading and a trailing one. + pattern="$(sed -r -e 's:/+:/:g; s:^/*:/:; s:/*$:/:;' <<<"${OPTARG}")" + IGNORES+=("${pattern}") + ;; + :) error "option '%s' expects a mandatory argument\n" "${OPTARG}";; + \?) error "unknown option '%s'\n" "${OPTARG}";; + esac +done + +if test -z "${package}" -o -z "${pkg_list}" -o -z "${readelf}" -o -z "${arch_name}" ; then + echo "Usage: $0 -p -l -r -a [-i PATH ...]" + exit 1 +fi + +exitcode=0 + +# Only split on new lines, for filenames-with-spaces +IFS=" +" + +while read f; do + for ignore in "${IGNORES[@]}"; do + if [[ "${f}" =~ ^"${ignore}" ]]; then + continue 2 + fi + done + + # Skip symlinks. Some symlinks may have absolute paths as + # target, pointing to host binaries while we're building. + if [[ -L "${TARGET_DIR}/${f}" ]]; then + continue + fi + + # Get architecture using readelf. We pipe through 'head -1' so + # that when the file is a static library (.a), we only take + # into account the architecture of the first object file. + arch=$(LC_ALL=C ${readelf} -h "${TARGET_DIR}/${f}" 2>&1 | \ + sed -r -e '/^ Machine: +(.+)/!d; s//\1/;' | head -1) + + # If no architecture found, assume it was not an ELF file + if test "${arch}" = "" ; then + continue + fi + + # Architecture is correct + if test "${arch}" = "${arch_name}" ; then + continue + fi + + printf 'ERROR: architecture for "%s" is "%s", should be "%s"\n' \ + "${f}" "${arch}" "${arch_name}" + + exitcode=1 +done < <( sed -r -e "/^${package},\.(.+)$/!d; s//\1/;" ${pkg_list} ) + +exit ${exitcode} diff --git a/support/scripts/check-dotconfig.py b/support/scripts/check-dotconfig.py new file mode 100755 index 00000000..54fd6ae9 --- /dev/null +++ b/support/scripts/check-dotconfig.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 + +# This scripts check that all lines present in the defconfig are +# still present in the .config + +import sys + + +def main(): + if not (len(sys.argv) == 3): + print("Error: incorrect number of arguments") + print("""Usage: check-dotconfig """) + sys.exit(1) + + configfile = sys.argv[1] + defconfig = sys.argv[2] + + # strip() to get rid of trailing \n + with open(configfile) as configf: + configlines = [line.strip() for line in configf.readlines()] + + defconfiglines = [] + with open(defconfig) as defconfigf: + # strip() to get rid of trailing \n + for line in (line.strip() for line in defconfigf.readlines()): + if line.startswith("BR2_"): + defconfiglines.append(line) + elif line.startswith('# BR2_') and line.endswith(' is not set'): + defconfiglines.append(line) + + # Check that all the defconfig lines are still present + missing = [line for line in defconfiglines if line not in configlines] + + if missing: + print("WARN: defconfig {} can't be used:".format(defconfig)) + for m in missing: + print(" Missing: {}".format(m)) + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/support/scripts/check-host-rpath b/support/scripts/check-host-rpath new file mode 100755 index 00000000..41aa0aa1 --- /dev/null +++ b/support/scripts/check-host-rpath @@ -0,0 +1,111 @@ +#!/usr/bin/env bash + +# This script scans $(HOST_DIR)/{bin,sbin} for all ELF files, and checks +# they have an RPATH to $(HOST_DIR)/lib if they need libraries from +# there. + +# Override the user's locale so we are sure we can parse the output of +# readelf(1) and file(1) +export LC_ALL=C + +main() { + local pkg="${1}" + local hostdir="${2}" + local perpackagedir="${3}" + local file ret + + # Remove duplicate and trailing '/' for proper match + hostdir="$( sed -r -e 's:/+:/:g; s:/$::;' <<<"${hostdir}" )" + + ret=0 + while read file; do + is_elf "${file}" || continue + elf_needs_rpath "${file}" "${hostdir}" || continue + check_elf_has_rpath "${file}" "${hostdir}" "${perpackagedir}" && continue + if [ ${ret} -eq 0 ]; then + ret=1 + printf "***\n" + printf "*** ERROR: package %s installs executables without proper RPATH:\n" "${pkg}" + fi + printf "*** %s\n" "${file}" + done < <( find "${hostdir}"/{bin,sbin} -type f 2>/dev/null ) + + return ${ret} +} + +is_elf() { + local f="${1}" + + readelf -l "${f}" 2>/dev/null \ + |grep -E 'Requesting program interpreter:' >/dev/null 2>&1 +} + +# This function tells whether a given ELF executable (first argument) +# needs a RPATH pointing to the host library directory or not. It +# needs such an RPATH if at least of the libraries used by the ELF +# executable is available in the host library directory. This function +# returns 0 when a RPATH is needed, 1 otherwise. +# +# With per-package directory support, ${hostdir} will point to the +# current package per-package host directory, and this is where this +# function will check if the libraries needed by the executable are +# located (or not). In practice, the ELF executable RPATH may point to +# another package per-package host directory, but that is fine because +# if such an executable is within the current package per-package host +# directory, its libraries will also have been copied into the current +# package per-package host directory. +elf_needs_rpath() { + local file="${1}" + local hostdir="${2}" + local lib + + while read lib; do + [ -e "${hostdir}/lib/${lib}" ] && return 0 + done < <( readelf -d "${file}" 2>/dev/null \ + |sed -r -e '/^.* \(NEEDED\) .*Shared library: \[(.+)\]$/!d;' \ + -e 's//\1/;' \ + ) + + return 1 +} + +# This function checks whether at least one of the RPATH of the given +# ELF executable (first argument) properly points to the host library +# directory (second argument), either through an absolute RPATH or a +# relative RPATH. In the context of per-package directory support, +# ${hostdir} (second argument) points to the current package host +# directory. However, it is perfectly valid for an ELF binary to have +# a RPATH pointing to another package per-package host directory, +# which is why such RPATH is also accepted (the per-package directory +# gets passed as third argument). Having a RPATH pointing to the host +# directory will make sure the ELF executable will find at runtime the +# shared libraries it depends on. This function returns 0 when a +# proper RPATH was found, or 1 otherwise. +check_elf_has_rpath() { + local file="${1}" + local hostdir="${2}" + local perpackagedir="${3}" + local rpath dir + + while read rpath; do + for dir in ${rpath//:/ }; do + # Remove duplicate and trailing '/' for proper match + dir="$( sed -r -e 's:/+:/:g; s:/$::;' <<<"${dir}" )" + [ "${dir}" = "${hostdir}/lib" ] && return 0 + [ "${dir}" = "\$ORIGIN/../lib" ] && return 0 + # This check is done even for builds where + # BR2_PER_PACKAGE_DIRECTORIES is disabled. In this case, + # PER_PACKAGE_DIR and therefore ${perpackagedir} points to + # a non-existent directory, and this check will always be + # false. + [[ ${dir} =~ "${perpackagedir}/"[^/]+/host/lib ]] && return 0 + done + done < <( readelf -d "${file}" 2>/dev/null \ + |sed -r -e '/.* \(R(UN)?PATH\) +Library r(un)?path: \[(.+)\]$/!d' \ + -e 's//\3/;' \ + ) + + return 1 +} + +main "${@}" diff --git a/support/scripts/check-kernel-headers.sh b/support/scripts/check-kernel-headers.sh new file mode 100755 index 00000000..4e6dce54 --- /dev/null +++ b/support/scripts/check-kernel-headers.sh @@ -0,0 +1,69 @@ +#!/bin/sh + +# This script (and the embedded C code) will check that the actual +# headers version match the user told us they were: +# +# - if both versions are the same, all is well. +# +# - if the actual headers are older than the user told us, this is +# an error. +# +# - if the actual headers are more recent than the user told us, and +# we are doing a strict check, then this is an error. +# +# - if the actual headers are more recent than the user told us, and +# we are doing a loose check, then a warning is printed, but this is +# not an error. + +BUILDDIR="${1}" +SYSROOT="${2}" +# Make sure we have enough version components +HDR_VER="${3}.0.0" +CHECK="${4}" # 'strict' or 'loose' + +HDR_M="${HDR_VER%%.*}" +HDR_V="${HDR_VER#*.}" +HDR_m="${HDR_V%%.*}" + +# Exit on any error, so we don't try to run an unexisting program if the +# compilation fails. +set -e + +# Set the clean-up trap in advance to prevent a race condition in which we +# create the file but get a SIGTERM before setting it. Notice that we don't +# need to care about EXEC being empty, since 'rm -f ""' does nothing. +trap 'rm -f "${EXEC}"' EXIT + +EXEC="$(mktemp -p "${BUILDDIR}" -t .check-headers.XXXXXX)" + +# We do not want to account for the patch-level, since headers are +# not supposed to change for different patchlevels, so we mask it out. +# This only applies to kernels >= 3.0, but those are the only one +# we actually care about; we treat all 2.6.x kernels equally. +${HOSTCC} -imacros "${SYSROOT}/usr/include/linux/version.h" \ + -x c -o "${EXEC}" - <<_EOF_ +#include +#include +#include + +int main(int argc __attribute__((unused)), + char** argv __attribute__((unused))) +{ + int l = LINUX_VERSION_CODE & ~0xFF; + int h = KERNEL_VERSION(${HDR_M},${HDR_m},0); + + if ((l >= h) && !strcmp("${CHECK}", "loose")) + return 0; + + if (l != h) { + printf("Incorrect selection of kernel headers: "); + printf("expected %d.%d.x, got %d.%d.x\n", ${HDR_M}, ${HDR_m}, + ((LINUX_VERSION_CODE>>16) & 0xFF), + ((LINUX_VERSION_CODE>>8) & 0xFF)); + return 1; + } + return 0; +} +_EOF_ + +"${EXEC}" diff --git a/support/scripts/check-merged-usr.sh b/support/scripts/check-merged-usr.sh new file mode 100755 index 00000000..433857cd --- /dev/null +++ b/support/scripts/check-merged-usr.sh @@ -0,0 +1,39 @@ +#!/bin/sh +# +# Check if a given custom skeleton or overlay complies to the merged /usr +# requirements: +# / +# /bin -> usr/bin +# /lib -> usr/lib +# /sbin -> usr/sbin +# /usr/bin/ +# /usr/lib/ +# /usr/sbin/ +# +# Output: the list of non-compliant paths (empty if compliant). +# + +# Extract the inode numbers for all of those directories. In case any is +# a symlink, we want to get the inode of the pointed-to directory, so we +# append '/.' to be sure we get the target directory. Since the symlinks +# can be anyway (/bin -> /usr/bin or /usr/bin -> /bin), we do that for +# all of them. +# +lib_inode=$(stat -c '%i' "${1}/lib/." 2>/dev/null) +bin_inode=$(stat -c '%i' "${1}/bin/." 2>/dev/null) +sbin_inode=$(stat -c '%i' "${1}/sbin/." 2>/dev/null) +usr_lib_inode=$(stat -c '%i' "${1}/usr/lib/." 2>/dev/null) +usr_bin_inode=$(stat -c '%i' "${1}/usr/bin/." 2>/dev/null) +usr_sbin_inode=$(stat -c '%i' "${1}/usr/sbin/." 2>/dev/null) + +not_merged_dirs="" +test -z "$lib_inode" || \ + test "$lib_inode" = "$usr_lib_inode" || \ + not_merged_dirs="/lib" +test -z "$bin_inode" || \ + test "$bin_inode" = "$usr_bin_inode" || \ + not_merged_dirs="$not_merged_dirs /bin" +test -z "$sbin_inode" || \ + test "$sbin_inode" = "$usr_sbin_inode" || \ + not_merged_dirs="$not_merged_dirs /sbin" +echo "${not_merged_dirs# }" diff --git a/support/scripts/cve.py b/support/scripts/cve.py new file mode 100755 index 00000000..e2582558 --- /dev/null +++ b/support/scripts/cve.py @@ -0,0 +1,250 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2009 by Thomas Petazzoni +# Copyright (C) 2020 by Gregory CLEMENT +# +# 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 + +import datetime +import os +import distutils.version +import json +import subprocess +import sys +import operator + +sys.path.append('utils/') + +NVD_START_YEAR = 1999 +NVD_BASE_URL = "https://github.com/fkie-cad/nvd-json-data-feeds/" + +ops = { + '>=': operator.ge, + '>': operator.gt, + '<=': operator.le, + '<': operator.lt, + '=': operator.eq +} + + +# Check if two CPE IDs match each other +def cpe_matches(cpe1, cpe2): + cpe1_elems = cpe1.split(":") + cpe2_elems = cpe2.split(":") + + remains = filter(lambda x: x[0] not in ["*", "-"] and x[1] not in ["*", "-"] and x[0] != x[1], + zip(cpe1_elems, cpe2_elems)) + return len(list(remains)) == 0 + + +def cpe_product(cpe): + return cpe.split(':')[4] + + +def cpe_version(cpe): + return cpe.split(':')[5] + + +class CVE: + """An accessor class for CVE Items in NVD files""" + CVE_AFFECTS = 1 + CVE_DOESNT_AFFECT = 2 + CVE_UNKNOWN = 3 + + def __init__(self, nvd_cve): + """Initialize a CVE from its NVD JSON representation""" + self.nvd_cve = nvd_cve + + @staticmethod + def download_nvd(nvd_git_dir): + print(f"Updating from {NVD_BASE_URL}") + if os.path.exists(nvd_git_dir): + subprocess.check_call( + ["git", "pull"], + cwd=nvd_git_dir, + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + ) + else: + # Create the directory and its parents; git + # happily clones into an empty directory. + os.makedirs(nvd_git_dir) + subprocess.check_call( + ["git", "clone", NVD_BASE_URL, nvd_git_dir], + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + ) + + @staticmethod + def sort_id(cve_ids): + def cve_key(cve_id): + year, id_ = cve_id.split('-')[1:] + return (int(year), int(id_)) + return sorted(cve_ids, key=cve_key) + + @classmethod + def read_nvd_dir(cls, nvd_dir): + """ + Iterate over all the CVEs contained in NIST Vulnerability Database + feeds since NVD_START_YEAR. If the files are missing or outdated in + nvd_dir, a fresh copy will be downloaded, and kept in .json.gz + """ + nvd_git_dir = os.path.join(nvd_dir, "git") + CVE.download_nvd(nvd_git_dir) + for year in range(NVD_START_YEAR, datetime.datetime.now().year + 1): + for dirpath, _, filenames in os.walk(os.path.join(nvd_git_dir, f"CVE-{year}")): + for filename in filenames: + if filename[-5:] != ".json": + continue + with open(os.path.join(dirpath, filename), "rb") as f: + yield cls(json.load(f)) + + def each_product(self): + """Iterate over each product section of this cve""" + for vendor in self.nvd_cve['cve']['affects']['vendor']['vendor_data']: + for product in vendor['product']['product_data']: + yield product + + def parse_node(self, node): + """ + Parse the node inside the configurations section to extract the + cpe information usefull to know if a product is affected by + the CVE. Actually only the product name and the version + descriptor are needed, but we also provide the vendor name. + """ + + # The node containing the cpe entries matching the CVE can also + # contain sub-nodes, so we need to manage it. + for child in node.get('children', ()): + for parsed_node in self.parse_node(child): + yield parsed_node + + for cpe in node.get('cpeMatch', ()): + if not cpe['vulnerable']: + return + product = cpe_product(cpe['criteria']) + version = cpe_version(cpe['criteria']) + # ignore when product is '-', which means N/A + if product == '-': + return + op_start = '' + op_end = '' + v_start = '' + v_end = '' + + if version != '*' and version != '-': + # Version is defined, this is a '=' match + op_start = '=' + v_start = version + else: + # Parse start version, end version and operators + if 'versionStartIncluding' in cpe: + op_start = '>=' + v_start = cpe['versionStartIncluding'] + + if 'versionStartExcluding' in cpe: + op_start = '>' + v_start = cpe['versionStartExcluding'] + + if 'versionEndIncluding' in cpe: + op_end = '<=' + v_end = cpe['versionEndIncluding'] + + if 'versionEndExcluding' in cpe: + op_end = '<' + v_end = cpe['versionEndExcluding'] + + yield { + 'id': cpe['criteria'], + 'v_start': v_start, + 'op_start': op_start, + 'v_end': v_end, + 'op_end': op_end + } + + def each_cpe(self): + for nodes in self.nvd_cve.get('configurations', []): + for node in nodes['nodes']: + for cpe in self.parse_node(node): + yield cpe + + @property + def identifier(self): + """The CVE unique identifier""" + return self.nvd_cve['id'] + + @property + def affected_products(self): + """The set of CPE products referred by this CVE definition""" + return set(cpe_product(p['id']) for p in self.each_cpe()) + + def affects(self, name, version, cve_ignore_list, cpeid=None): + """ + True if the Buildroot Package object passed as argument is affected + by this CVE. + """ + if self.identifier in cve_ignore_list: + return self.CVE_DOESNT_AFFECT + + pkg_version = distutils.version.LooseVersion(version) + if not hasattr(pkg_version, "version"): + print("Cannot parse package '%s' version '%s'" % (name, version)) + pkg_version = None + + # if we don't have a cpeid, build one based on name and version + if not cpeid: + cpeid = "cpe:2.3:*:*:%s:%s:*:*:*:*:*:*:*" % (name, version) + # if we have a cpeid, use its version instead of the package + # version, as they might be different due to + # _CPE_ID_VERSION + else: + pkg_version = distutils.version.LooseVersion(cpe_version(cpeid)) + + for cpe in self.each_cpe(): + if not cpe_matches(cpe['id'], cpeid): + continue + if not cpe['v_start'] and not cpe['v_end']: + return self.CVE_AFFECTS + if not pkg_version: + continue + + if cpe['v_start']: + try: + cve_affected_version = distutils.version.LooseVersion(cpe['v_start']) + inrange = ops.get(cpe['op_start'])(pkg_version, cve_affected_version) + except TypeError: + return self.CVE_UNKNOWN + + # current package version is before v_start, so we're + # not affected by the CVE + if not inrange: + continue + + if cpe['v_end']: + try: + cve_affected_version = distutils.version.LooseVersion(cpe['v_end']) + inrange = ops.get(cpe['op_end'])(pkg_version, cve_affected_version) + except TypeError: + return self.CVE_UNKNOWN + + # current package version is after v_end, so we're + # not affected by the CVE + if not inrange: + continue + + # We're in the version range affected by this CVE + return self.CVE_AFFECTS + + return self.CVE_DOESNT_AFFECT diff --git a/support/scripts/expunge-gconv-modules b/support/scripts/expunge-gconv-modules new file mode 100755 index 00000000..e9ac48ca --- /dev/null +++ b/support/scripts/expunge-gconv-modules @@ -0,0 +1,69 @@ +#!/usr/bin/env bash + +# This script is used to generate a gconv-modules file that takes into +# account only the gconv modules installed by Buildroot, and generates +# a stripped-down gconv-moduels file on its stdout. +# It takes two arguments: +# $1: the directory where to look for gconv modules definitions +# $2: a space-separated list of gconv modules that were actually +# installed + +# Starting with glibc-2.34, modules definitions are located in multiple +# files: +# ${1}/gconv-modules +# ${1}/gconv-modules.d/*.conf + +# The format of gconv-modules is precisely documented in the +# file itself. It consists of two different directives: +# module FROMSET TOSET FILENAME COST +# alias ALIAS REALNAME +# and that's what this script parses and generates. +# +# There are two kinds of 'module' directives: +# - the first defines conversion of a charset to/from INTERNAL representation +# - the second defines conversion of a charset to/from another charset +# we handle each with slightly different code, since the second never has +# associated aliases. + +for f in ${1}/gconv-modules ${1}/gconv-modules.d/*.conf; do + [ -e "${f}" ] || continue + cat "${f}" +done \ +|awk -v files="${2}" ' +$1 == "alias" { + aliases[$3] = aliases[$3] " " $2; +} +$1 == "module" && $2 != "INTERNAL" && $3 == "INTERNAL" { + file2internals[$4] = file2internals[$4] " " $2; + mod2cost[$2] = $5; +} +$1 == "module" && $2 != "INTERNAL" && $3 != "INTERNAL" { + file2cset[$4] = file2cset[$4] " " $2 ":" $3; + mod2cost[$2] = $5; +} + +END { + nb_files = split(files, all_files); + for(f = 1; f <= nb_files; f++) { + file = all_files[f]; + printf("# Modules and aliases for: %s\n", file); + nb_mods = split(file2internals[file], mods); + for(i = 1; i <= nb_mods; i++) { + nb_aliases = split(aliases[mods[i]], mod_aliases); + for(j = 1; j <= nb_aliases; j++) { + printf("alias\t%s\t%s\n", mod_aliases[j], mods[i]); + } + printf("module\t%s\t%s\t%s\t%d\n", mods[i], "INTERNAL", file, mod2cost[mods[i]]); + printf("module\t%s\t%s\t%s\t%d\n", "INTERNAL", mods[i], file, mod2cost[mods[i]]); + printf("\n" ); + } + printf("%s", nb_mods != 0 ? "\n" : ""); + nb_csets = split(file2cset[file], csets); + for(i = 1; i <= nb_csets; i++) { + split(csets[i], cs, ":"); + printf("module\t%s\t%s\t%s\t%d\n", cs[1], cs[2], file, mod2cost[cs[1]]); + } + printf("%s", nb_csets != 0 ? "\n\n" : ""); + } +} +' diff --git a/support/scripts/fix-configure-powerpc64.sh b/support/scripts/fix-configure-powerpc64.sh new file mode 100755 index 00000000..ff2b283c --- /dev/null +++ b/support/scripts/fix-configure-powerpc64.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env 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/support/scripts/fix-rpath b/support/scripts/fix-rpath new file mode 100755 index 00000000..1e58646c --- /dev/null +++ b/support/scripts/fix-rpath @@ -0,0 +1,181 @@ +#!/usr/bin/env bash + +# Copyright (C) 2016 Samuel Martin +# Copyright (C) 2017 Wolfgang Grandegger +# +# 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 + +usage() { + cat <&2 +Usage: ${0} TREE_KIND + +Description: + + This script scans a tree and sanitize ELF files' RPATH found in there. + + Sanitization behaves the same whatever the kind of the processed tree, + but the resulting RPATH differs. The rpath sanitization is done using + "patchelf --make-rpath-relative". + +Arguments: + + TREE_KIND Kind of tree to be processed. + Allowed values: host, target, staging + +Environment: + + PATCHELF patchelf program to use + (default: HOST_DIR/bin/patchelf) + + HOST_DIR host directory + STAGING_DIR staging directory + TARGET_DIR target directory + + TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR + (default HOST_DIR/opt/ext-toolchain) + + PARALLEL_JOBS number of parallel jobs to run + +Returns: 0 if success or 1 in case of error + +EOF +} + +: "${PATCHELF:=${HOST_DIR}/bin/patchelf}" + +# ELF files should not be in these sub-directories +HOST_EXCLUDEPATHS="/share/terminfo" +STAGING_EXCLUDEPATHS="/usr/include /usr/share/terminfo" +TARGET_EXCLUDEPATHS="/lib/firmware" + +patch_file() { + local PATCHELF rootdir file + local -a sanitize_extra_args + + PATCHELF="${1}" + rootdir="${2}" + file="${3}" + shift 3 + sanitize_extra_args=("${@}") + + # check if it's an ELF file + rpath="$("${PATCHELF}" --print-rpath "${file}" 2>&1)" + if test $? -ne 0 ; then + return 0 + fi + + # make files writable if necessary + changed="$(chmod -c u+w "${file}")" + + # With per-package directory support, most RPATH of host + # binaries will point to per-package directories. This won't + # work with the --make-rpath-relative ${rootdir} invocation as + # the per-package host directory is not within ${rootdir}. So, + # we rewrite all RPATHs pointing to per-package directories so + # that they point to the global host directry. + # shellcheck disable=SC2001 # ${var//search/replace} hard when search or replace have / in them + changed_rpath="$(echo "${rpath}" | sed "s@${PER_PACKAGE_DIR}/[^/]\+/host@${HOST_DIR}@")" + if test "${rpath}" != "${changed_rpath}" ; then + "${PATCHELF}" --set-rpath "${changed_rpath}" "${file}" + fi + + # call patchelf to sanitize the rpath + "${PATCHELF}" --make-rpath-relative "${rootdir}" "${sanitize_extra_args[@]}" "${file}" + # restore the original permission + test "${changed}" != "" && chmod u-w "${file}" +} + +main() { + local rootdir tree + local -a find_args sanitize_extra_args + + tree="${1}" + + if ! "${PATCHELF}" --version > /dev/null 2>&1; then + echo "Error: can't execute patchelf utility '${PATCHELF}'" + exit 1 + fi + + case "${tree}" in + host) + rootdir="${HOST_DIR}" + + # do not process the sysroot (only contains target binaries) + find_args+=( "-path" "${STAGING_DIR}" "-prune" "-o" ) + + # do not process the external toolchain installation directory to + # avoid breaking it. + test "${TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR}" != "" && \ + find_args+=( "-path" "${TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR}" "-prune" "-o" ) + + for excludepath in ${HOST_EXCLUDEPATHS}; do + find_args+=( "-path" "${HOST_DIR}""${excludepath}" "-prune" "-o" ) + done + + # do not process the patchelf binary but a copy to work-around "file in use" + find_args+=( "-path" "${PATCHELF}" "-prune" "-o" ) + cp "${PATCHELF}" "${PATCHELF}.__to_be_patched" + + # we always want $ORIGIN-based rpaths to make it relocatable. + sanitize_extra_args+=( "--relative-to-file" ) + ;; + + staging) + rootdir="${STAGING_DIR}" + + # ELF files should not be in these sub-directories + for excludepath in ${STAGING_EXCLUDEPATHS}; do + find_args+=( "-path" "${STAGING_DIR}""${excludepath}" "-prune" "-o" ) + done + + # should be like for the target tree below + sanitize_extra_args+=( "--no-standard-lib-dirs" ) + ;; + + target) + rootdir="${TARGET_DIR}" + + for excludepath in ${TARGET_EXCLUDEPATHS}; do + find_args+=( "-path" "${TARGET_DIR}""${excludepath}" "-prune" "-o" ) + done + + # we don't want $ORIGIN-based rpaths but absolute paths without rootdir. + # we also want to remove rpaths pointing to /lib or /usr/lib. + sanitize_extra_args+=( "--no-standard-lib-dirs" ) + ;; + + *) + usage + exit 1 + ;; + esac + + find_args+=( "-type" "f" "-print0" ) + + export -f patch_file + # Limit the number of cores used + # shellcheck disable=SC2016 # ${@} has to be expanded in the sub-shell. + find "${rootdir}" "${find_args[@]}" \ + | xargs -0 -r -P "${PARALLEL_JOBS:-1}" -I {} \ + bash -c 'patch_file "${@}"' _ "${PATCHELF}" "${rootdir}" {} "${sanitize_extra_args[@]}" + + # Restore patched patchelf utility + test "${tree}" = "host" && mv "${PATCHELF}.__to_be_patched" "${PATCHELF}" + + # ignore errors + return 0 +} + +main "${@}" diff --git a/support/scripts/gen-bootlin-toolchains b/support/scripts/gen-bootlin-toolchains new file mode 100755 index 00000000..43442212 --- /dev/null +++ b/support/scripts/gen-bootlin-toolchains @@ -0,0 +1,568 @@ +#!/usr/bin/env python3 + +import os.path +import re +import requests +import textwrap +import sys + +BASE_URL = "https://toolchains.bootlin.com/downloads/releases/toolchains" + +AUTOGENERATED_COMMENT = """# This file was auto-generated by support/scripts/gen-bootlin-toolchains +# Do not edit +""" + +# In the below dict: + +# - 'conditions' indicate the cumulative conditions under which the +# toolchain will be made available. In several situations, a given +# toolchain is usable on several architectures variants (for +# example, an ARMv6 toolchain can be used on ARMv7) +# - 'test_options' indicate one specific configuration where the +# toolchain can be used. It is used to create the runtime test +# cases. If 'test_options' does not exist, the code assumes it can +# be made equal to 'conditions' +# - 'prefix' is the prefix of the cross-compilation toolchain tools + +arches = { + 'aarch64': { + 'conditions': ['BR2_aarch64'], + 'prefix': 'aarch64', + }, + 'aarch64be': { + 'conditions': ['BR2_aarch64_be'], + 'prefix': 'aarch64_be', + }, + 'arcle-750d': { + 'conditions': ['BR2_arcle', 'BR2_arc750d'], + 'prefix': 'arc', + }, + 'arcle-hs38': { + 'conditions': ['BR2_arcle', 'BR2_archs38'], + 'prefix': 'arc', + }, + 'armv5-eabi': { + 'conditions': ['BR2_arm', 'BR2_ARM_CPU_ARMV5', 'BR2_ARM_EABI'], + 'test_options': ['BR2_arm', 'BR2_arm926t', 'BR2_ARM_EABI'], + 'prefix': 'arm', + }, + 'armv6-eabihf': { + 'conditions': ['BR2_arm', 'BR2_ARM_CPU_ARMV6', 'BR2_ARM_EABIHF'], + 'test_options': ['BR2_arm', 'BR2_arm1176jzf_s', 'BR2_ARM_EABIHF'], + 'prefix': 'arm', + }, + 'armv7-eabihf': { + 'conditions': ['BR2_arm', 'BR2_ARM_CPU_ARMV7A', 'BR2_ARM_EABIHF'], + 'test_options': ['BR2_arm', 'BR2_cortex_a8', 'BR2_ARM_EABIHF'], + 'prefix': 'arm', + }, + 'armebv7-eabihf': { + 'conditions': ['BR2_armeb', 'BR2_ARM_CPU_ARMV7A', 'BR2_ARM_EABIHF'], + 'test_options': ['BR2_armeb', 'BR2_cortex_a8', 'BR2_ARM_EABIHF'], + 'prefix': 'armeb', + }, + 'armv7m': { + 'conditions': ['BR2_arm', 'BR2_ARM_CPU_ARMV7M'], + 'test_options': ['BR2_arm', 'BR2_cortex_m4'], + 'prefix': 'arm', + }, + 'm68k-68xxx': { + 'conditions': ['BR2_m68k_m68k'], + 'test_options': ['BR2_m68k', 'BR2_m68k_68040'], + 'prefix': 'm68k', + }, + 'm68k-coldfire': { + 'conditions': ['BR2_m68k_cf'], + 'test_options': ['BR2_m68k', 'BR2_m68k_cf5208'], + 'prefix': 'm68k', + }, + 'microblazebe': { + 'conditions': ['BR2_microblazebe'], + 'prefix': 'microblaze', + 'gdbserver': False + }, + 'microblazeel': { + 'conditions': ['BR2_microblazeel'], + 'prefix': 'microblazeel', + 'gdbserver': False + }, + 'mips32': { + # Not sure it could be used by other mips32 variants? + 'conditions': ['BR2_mips', 'BR2_mips_32', '!BR2_MIPS_SOFT_FLOAT'], + 'prefix': 'mips', + }, + 'mips32el': { + # Not sure it could be used by other mips32el variants? + 'conditions': ['BR2_mipsel', 'BR2_mips_32', '!BR2_MIPS_SOFT_FLOAT'], + 'prefix': 'mipsel', + }, + 'mips32r5el': { + 'conditions': ['BR2_mipsel', 'BR2_mips_32r5', '!BR2_MIPS_SOFT_FLOAT'], + 'prefix': 'mipsel', + }, + 'mips32r6el': { + 'conditions': ['BR2_mipsel', 'BR2_mips_32r6', '!BR2_MIPS_SOFT_FLOAT'], + 'prefix': 'mipsel', + }, + 'mips64-n32': { + # Not sure it could be used by other mips64 variants? + 'conditions': ['BR2_mips64', 'BR2_mips_64', 'BR2_MIPS_NABI32', '!BR2_MIPS_SOFT_FLOAT'], + 'prefix': 'mips64', + }, + 'mips64el-n32': { + # Not sure it could be used by other mips64el variants? + 'conditions': ['BR2_mips64el', 'BR2_mips_64', 'BR2_MIPS_NABI32', '!BR2_MIPS_SOFT_FLOAT'], + 'prefix': 'mips64el', + }, + 'mips64r6el-n32': { + 'conditions': ['BR2_mips64el', 'BR2_mips_64r6', 'BR2_MIPS_NABI32', '!BR2_MIPS_SOFT_FLOAT'], + 'prefix': 'mips64el', + }, + 'nios2': { + 'conditions': ['BR2_nios2'], + 'prefix': 'nios2', + }, + 'openrisc': { + 'conditions': ['BR2_or1k'], + 'prefix': 'or1k', + 'gdbserver': False, + }, + 'powerpc-440fp': { + # Not sure it could be used by other powerpc variants? + 'conditions': ['BR2_powerpc', 'BR2_powerpc_440fp'], + 'prefix': 'powerpc', + }, + 'powerpc-e300c3': { + # Not sure it could be used by other powerpc variants? + 'conditions': ['BR2_powerpc', 'BR2_powerpc_e300c3'], + 'prefix': 'powerpc', + }, + 'powerpc-e500mc': { + # Not sure it could be used by other powerpc variants? + 'conditions': ['BR2_powerpc', 'BR2_powerpc_e500mc'], + 'prefix': 'powerpc', + }, + 'powerpc64-e5500': { + 'conditions': ['BR2_powerpc64', 'BR2_powerpc_e5500'], + 'prefix': 'powerpc64', + }, + 'powerpc64-e6500': { + 'conditions': ['BR2_powerpc64', 'BR2_powerpc_e6500'], + 'prefix': 'powerpc64', + }, + 'powerpc64-power8': { + 'conditions': ['BR2_powerpc64', 'BR2_powerpc_power8'], + 'prefix': 'powerpc64', + }, + 'powerpc64le-power8': { + 'conditions': ['BR2_powerpc64le', 'BR2_powerpc_power8'], + 'prefix': 'powerpc64le', + }, + 'riscv32-ilp32d': { + 'conditions': ['BR2_riscv', 'BR2_riscv_g', 'BR2_RISCV_32', 'BR2_RISCV_ABI_ILP32D'], + 'prefix': 'riscv32', + }, + 'riscv64-lp64d': { + 'conditions': ['BR2_riscv', 'BR2_riscv_g', 'BR2_RISCV_64', 'BR2_RISCV_ABI_LP64D', 'BR2_USE_MMU'], + 'prefix': 'riscv64', + }, + 's390x-z13': { + 'conditions': ['BR2_s390x', 'BR2_s390x_z13'], + 'prefix': 's390x', + }, + 'sh-sh4': { + 'conditions': ['BR2_sh', 'BR2_sh4'], + 'prefix': 'sh4', + }, + 'sh-sh4aeb': { + 'conditions': ['BR2_sh', 'BR2_sh4aeb'], + 'prefix': 'sh4aeb', + }, + 'sparc64': { + 'conditions': ['BR2_sparc64', 'BR2_sparc_v9'], + 'prefix': 'sparc64', + }, + 'sparcv8': { + 'conditions': ['BR2_sparc', 'BR2_sparc_v8'], + 'prefix': 'sparc', + }, + 'x86-64': { + 'conditions': ['BR2_x86_64', + 'BR2_X86_CPU_HAS_MMX', + 'BR2_X86_CPU_HAS_SSE', + 'BR2_X86_CPU_HAS_SSE2'], + 'test_options': ['BR2_x86_64', 'BR2_x86_x86_64'], + 'prefix': 'x86_64', + }, + 'x86-64-v2': { + 'conditions': ['BR2_x86_64', + 'BR2_X86_CPU_HAS_MMX', + 'BR2_X86_CPU_HAS_SSE', + 'BR2_X86_CPU_HAS_SSE2', + 'BR2_X86_CPU_HAS_SSE3', + 'BR2_X86_CPU_HAS_SSSE3', + 'BR2_X86_CPU_HAS_SSE4', + 'BR2_X86_CPU_HAS_SSE42'], + 'test_options': ['BR2_x86_64', 'BR2_x86_x86_64_v2'], + 'prefix': 'x86_64', + }, + 'x86-64-v3': { + 'conditions': ['BR2_x86_64', + 'BR2_X86_CPU_HAS_MMX', + 'BR2_X86_CPU_HAS_SSE', + 'BR2_X86_CPU_HAS_SSE2', + 'BR2_X86_CPU_HAS_SSE3', + 'BR2_X86_CPU_HAS_SSSE3', + 'BR2_X86_CPU_HAS_SSE4', + 'BR2_X86_CPU_HAS_SSE42', + 'BR2_X86_CPU_HAS_AVX', + 'BR2_X86_CPU_HAS_AVX2'], + 'test_options': ['BR2_x86_64', 'BR2_x86_x86_64_v3'], + 'prefix': 'x86_64', + }, + 'x86-64-v4': { + 'conditions': ['BR2_x86_64', + 'BR2_X86_CPU_HAS_MMX', + 'BR2_X86_CPU_HAS_SSE', + 'BR2_X86_CPU_HAS_SSE2', + 'BR2_X86_CPU_HAS_SSE3', + 'BR2_X86_CPU_HAS_SSSE3', + 'BR2_X86_CPU_HAS_SSE4', + 'BR2_X86_CPU_HAS_SSE42', + 'BR2_X86_CPU_HAS_AVX', + 'BR2_X86_CPU_HAS_AVX2', + 'BR2_X86_CPU_HAS_AVX512'], + 'test_options': ['BR2_x86_64', 'BR2_x86_x86_64_v4'], + 'prefix': 'x86_64', + }, + 'x86-64-core-i7': { + 'conditions': ['BR2_x86_64', + 'BR2_X86_CPU_HAS_MMX', + 'BR2_X86_CPU_HAS_SSE', + 'BR2_X86_CPU_HAS_SSE2', + 'BR2_X86_CPU_HAS_SSE3', + 'BR2_X86_CPU_HAS_SSSE3', + 'BR2_X86_CPU_HAS_SSE4', + 'BR2_X86_CPU_HAS_SSE42'], + 'test_options': ['BR2_x86_64', 'BR2_x86_corei7'], + 'prefix': 'x86_64', + }, + 'x86-core2': { + 'conditions': ['BR2_i386', + 'BR2_X86_CPU_HAS_MMX', + 'BR2_X86_CPU_HAS_SSE', + 'BR2_X86_CPU_HAS_SSE2', + 'BR2_X86_CPU_HAS_SSE3', + 'BR2_X86_CPU_HAS_SSSE3'], + 'test_options': ['BR2_i386', 'BR2_x86_core2'], + 'prefix': 'i686', + }, + 'x86-i686': { + 'conditions': ['BR2_i386', + '!BR2_x86_i486', + '!BR2_x86_i586', + '!BR2_x86_x1000', + '!BR2_x86_pentium_mmx', + '!BR2_x86_geode', + '!BR2_x86_c3', + '!BR2_x86_winchip_c6', + '!BR2_x86_winchip2'], + 'test_options': ['BR2_i386', + 'BR2_x86_i686'], + 'prefix': 'i686', + }, + 'xtensa-lx60': { + 'conditions': ['BR2_xtensa', 'BR2_XTENSA_CUSTOM', 'BR2_XTENSA_LITTLE_ENDIAN'], + 'prefix': 'xtensa', + }, +} + + +class Toolchain: + def __init__(self, arch, libc, variant, version): + self.arch = arch + self.libc = libc + self.variant = variant + self.version = version + self.fname_prefix = "%s--%s--%s-%s" % (self.arch, self.libc, self.variant, self.version) + self.option_name = "BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_%s_%s_%s" % \ + (self.arch.replace("-", "_").upper(), self.libc.upper(), self.variant.replace("-", "_").upper()) + self.fragment = requests.get(self.fragment_url).text.split("\n") + self.sha256 = requests.get(self.hash_url).text.split(" ")[0] + + @property + def tarball_url(self): + return os.path.join(BASE_URL, self.arch, "tarballs", + self.fname_prefix + ".tar.bz2") + + @property + def hash_url(self): + return os.path.join(BASE_URL, self.arch, "tarballs", + self.fname_prefix + ".sha256") + + @property + def fragment_url(self): + return os.path.join(BASE_URL, self.arch, "fragments", + self.fname_prefix + ".frag") + + def gen_config_in_options(self, f): + f.write("config %s\n" % self.option_name) + f.write("\tbool \"%s %s %s %s\"\n" % + (self.arch, self.libc, self.variant, self.version)) + depends = [] + selects = [] + + for c in arches[self.arch]['conditions']: + depends.append(c) + + if not arches[self.arch].get('gdbserver', True): + selects.append("BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER") + + for frag in self.fragment: + # libc type + if frag.startswith("BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC"): + selects.append("BR2_TOOLCHAIN_EXTERNAL_UCLIBC") + elif frag.startswith("BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC"): + # glibc needs mmu support + if "BR2_USE_MMU" not in depends: + depends.append("BR2_USE_MMU") + selects.append("BR2_TOOLCHAIN_EXTERNAL_GLIBC") + elif frag.startswith("BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL"): + # musl needs mmu support + if "BR2_USE_MMU" not in depends: + depends.append("BR2_USE_MMU") + selects.append("BR2_TOOLCHAIN_EXTERNAL_MUSL") + + # gcc version + if frag.startswith("BR2_TOOLCHAIN_EXTERNAL_GCC_"): + m = re.match("^BR2_TOOLCHAIN_EXTERNAL_GCC_([0-9_]*)=y$", frag) + assert m, "Cannot get gcc version for toolchain %s" % self.fname_prefix + selects.append("BR2_TOOLCHAIN_GCC_AT_LEAST_%s" % m[1]) + # respect the GCC requirement for the selected CPU/arch tuning + depends.append("!BR2_ARCH_NEEDS_GCC_AT_LEAST_%s" % str(int(m[1]) + 1)) + + # kernel headers version + if frag.startswith("BR2_TOOLCHAIN_EXTERNAL_HEADERS_"): + m = re.match("^BR2_TOOLCHAIN_EXTERNAL_HEADERS_([0-9_]*)=y$", frag) + assert m, "Cannot get kernel headers version for toolchain %s" % self.fname_prefix + selects.append("BR2_TOOLCHAIN_HEADERS_AT_LEAST_%s" % m[1]) + + # C++ + if frag.startswith("BR2_TOOLCHAIN_EXTERNAL_CXX"): + selects.append("BR2_INSTALL_LIBSTDCPP") + + # SSP + if frag.startswith("BR2_TOOLCHAIN_EXTERNAL_HAS_SSP"): + selects.append("BR2_TOOLCHAIN_HAS_SSP") + + # wchar + if frag.startswith("BR2_TOOLCHAIN_EXTERNAL_WCHAR"): + selects.append("BR2_USE_WCHAR") + + # locale + if frag.startswith("BR2_TOOLCHAIN_EXTERNAL_LOCALE"): + # locale implies the availability of wchar + selects.append("BR2_USE_WCHAR") + selects.append("BR2_ENABLE_LOCALE") + + # thread support + if frag.startswith("BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS"): + selects.append("BR2_TOOLCHAIN_HAS_THREADS") + + if frag.startswith("BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG"): + selects.append("BR2_TOOLCHAIN_HAS_THREADS_DEBUG") + + if frag.startswith("BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL"): + selects.append("BR2_TOOLCHAIN_HAS_THREADS_NPTL") + + # RPC + if frag.startswith("BR2_TOOLCHAIN_EXTERNAL_INET_RPC"): + selects.append("BR2_TOOLCHAIN_HAS_NATIVE_RPC") + + # D language + if frag.startswith("BR2_TOOLCHAIN_EXTERNAL_DLANG"): + selects.append("BR2_TOOLCHAIN_HAS_DLANG") + + # fortran + if frag.startswith("BR2_TOOLCHAIN_EXTERNAL_FORTRAN"): + selects.append("BR2_TOOLCHAIN_HAS_FORTRAN") + + # OpenMP + if frag.startswith("BR2_TOOLCHAIN_EXTERNAL_OPENMP"): + selects.append("BR2_TOOLCHAIN_HAS_OPENMP") + + for depend in depends: + f.write("\tdepends on %s\n" % depend) + + for select in selects: + f.write("\tselect %s\n" % select) + + f.write("\thelp\n") + + desc = "Bootlin toolchain for the %s architecture, using the %s C library. " % \ + (self.arch, self.libc) + + if self.variant == "stable": + desc += "This is a stable version, which means it is using stable and proven versions of gcc, gdb and binutils." + else: + desc += "This is a bleeding-edge version, which means it is using the latest versions of gcc, gdb and binutils." + + f.write(textwrap.fill(desc, width=62, initial_indent="\t ", subsequent_indent="\t ") + "\n") + f.write("\n") + f.write("\t https://toolchains.bootlin.com/\n") + + f.write("\n") + + def gen_mk(self, f): + f.write("ifeq ($(%s),y)\n" % self.option_name) + f.write("TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = %s\n" % self.version) + f.write("TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = %s--%s--%s-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\n" % + (self.arch, self.libc, self.variant)) + f.write("TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = %s\n" % + os.path.join(BASE_URL, self.arch, "tarballs")) + f.write("endif\n\n") + pass + + def gen_hash(self, f): + f.write("# From %s\n" % self.hash_url) + f.write("sha256 %s %s\n" % (self.sha256, os.path.basename(self.tarball_url))) + + def gen_test(self, f): + if self.variant == "stable": + variant = "Stable" + else: + variant = "BleedingEdge" + testname = "TestExternalToolchainBootlin" + \ + self.arch.replace("-", "").capitalize() + \ + self.libc.capitalize() + variant + f.write("\n\n") + f.write("class %s(TestExternalToolchain):\n" % testname) + f.write(" config = \"\"\"\n") + if 'test_options' in arches[self.arch]: + test_options = arches[self.arch]['test_options'] + else: + test_options = arches[self.arch]['conditions'] + for opt in test_options: + if opt.startswith("!"): + f.write(" # %s is not set\n" % opt[1:]) + else: + f.write(" %s=y\n" % opt) + f.write(" BR2_TOOLCHAIN_EXTERNAL=y\n") + f.write(" BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n") + f.write(" %s=y\n" % self.option_name) + f.write(" # BR2_TARGET_ROOTFS_TAR is not set\n") + f.write(" \"\"\"\n") + f.write(" toolchain_prefix = \"%s-linux\"\n" % arches[self.arch]['prefix']) + f.write("\n") + f.write(" def test_run(self):\n") + f.write(" TestExternalToolchain.common_check(self)\n") + + def __repr__(self): + return "Toolchain(arch=%s libc=%s variant=%s version=%s, option=%s)" % \ + (self.arch, self.libc, self.variant, self.version, self.option_name) + + +def get_toolchains(): + toolchains = list() + for arch, details in arches.items(): + print(arch) + url = os.path.join(BASE_URL, arch, "available_toolchains") + page = requests.get(url).text + fnames = sorted(re.findall(r'&1 \ + | sed -r -e '/^test_run \((.*)\).*/!d; s//\1/' \ + | LC_ALL=C sort) + ) + + if [ -n "${CI_COMMIT_TAG}" ]; then + # When a tag is added to the Buildroot git tree, we want + # to run the runtime tests and only test Qemu defconfigs. + defconfigs=( $(cd configs; LC_ALL=C ls -1 qemu_*_defconfig) ) + do_basics=true + do_defconfigs=base + do_runtime=true + elif [ "${CI_PIPELINE_SOURCE}" = "trigger" ]; then + case "${BR_SCHEDULE_JOBS}" in + (basic) + do_basics=true + do_defconfigs=check + defconfigs_ext=_check + ;; + (defconfig) + do_defconfigs=base + ;; + (runtime) + do_runtime=true + ;; + esac + else + case "${CI_COMMIT_REF_NAME}" in + (*-basics) + do_basics=true + do_defconfigs=check + defconfigs_ext=_check + ;; + (*-defconfigs) + do_defconfigs=base + ;; + (*-defconfigs-*) + pattern=$(echo ${CI_COMMIT_REF_NAME} | sed 's%^.*-defconfigs-\(.*\)%\1%') + defconfigs=( $(cd configs; LC_ALL=C ls -1 | grep ^${pattern}) ) + do_defconfigs=base + ;; + (*-*_defconfig) + defconfigs=( "${CI_COMMIT_REF_NAME##*-}" ) + do_defconfigs=base + ;; + (*-runtime-tests) + do_runtime=true + ;; + (*-tests.*) + runtimes=( $(./support/testing/run-tests -l 2>&1 \ + | sed -r -e '/^test_run \((.*)\).*/!d; s//\1/' \ + | LC_ALL=C sort \ + | grep "^${CI_COMMIT_REF_NAME##*-}") + ) + do_runtime=true + ;; + esac + fi + + # Retrieve defconfig for test-pkg from the git commit message (if any) + if grep -q -E '^test-pkg config:$' <<<"${CI_COMMIT_DESCRIPTION}"; then + sed -r -n -e '/^test-pkg config:$/{:a;n;s/^ +//;p;ba;}' \ + <<<"${CI_COMMIT_DESCRIPTION}" \ + >defconfig.frag + if [ ! -s defconfig.frag ]; then + printf "Empty configuration fragment.\n" >&2; exit 1 + fi + # Use --all since we expect the user having already pre-tested the + # new package with the default subset of toolchains. + ./utils/test-pkg \ + --all --prepare-only \ + --config-snippet defconfig.frag \ + --build-dir br-test-pkg >&2 + do_testpkg=( $(ls -1 br-test-pkg/*/.config 2>/dev/null |xargs -r dirname ) ) + if [ "${#do_testpkg[@]}" -eq 0 ]; then + printf "Configuration fragment enables no test.\n" >&2; exit 1 + fi + fi + + # If nothing else, at least do the basics to generate a valid pipeline + if [ -z "${do_defconfigs}" \ + -a -z "${do_runtime}" \ + -a -z "${do_testpkg}" \ + ] + then + do_basics=true + fi + + if ${do_basics:-false}; then + for tst in "${basics[@]}"; do + printf 'check-%s: { extends: .check-%s_base }\n' "${tst}" "${tst}" + done + fi + + if [ -n "${do_defconfigs}" ]; then + for cfg in "${defconfigs[@]}"; do + printf '%s%s: { extends: .defconfig_%s }\n' \ + "${cfg}" "${defconfigs_ext}" "${do_defconfigs}" + done + fi + + if ${do_runtime:-false}; then + printf 'runtime_test_download: { extends: .runtime_test_download }\n' + printf '%s: { extends: .runtime_test_base }\n' "${runtimes[@]}" + fi + + if [ -n "${do_testpkg}" ]; then + printf '%s: { extends: .test_pkg }\n' "${do_testpkg[@]}" + fi +} + +main "${@}" diff --git a/support/scripts/genimage.sh b/support/scripts/genimage.sh new file mode 100755 index 00000000..df224241 --- /dev/null +++ b/support/scripts/genimage.sh @@ -0,0 +1,58 @@ +#!/usr/bin/env bash + +die() { + cat <&2 +Error: $@ + +Usage: ${0} -c GENIMAGE_CONFIG_FILE +EOF + exit 1 +} + +# Parse arguments and put into argument list of the script +opts="$(getopt -n "${0##*/}" -o c: -- "$@")" || exit $? +eval set -- "$opts" + +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +while true ; do + case "$1" in + -c) + GENIMAGE_CFG="${2}"; + shift 2 ;; + --) # Discard all non-option parameters + shift 1; + break ;; + *) + die "unknown option '${1}'" ;; + esac +done + +[ -n "${GENIMAGE_CFG}" ] || die "Missing argument" + +# Pass an empty rootpath. genimage makes a full copy of the given rootpath to +# ${GENIMAGE_TMP}/root so passing TARGET_DIR would be a waste of time and disk +# space. We don't rely on genimage to build the rootfs image, just to insert a +# pre-built one in the disk image. + +trap 'rm -rf "${ROOTPATH_TMP}"' EXIT +ROOTPATH_TMP="$(mktemp -d)" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${ROOTPATH_TMP}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +if grep -Eq "^BR2_PACKAGE_HOST_BMAP_TOOLS=y$" "${BR2_CONFIG}"; then + while IFS= read -r image; do + image_path="${BINARIES_DIR}/${image}" + if ! test -f "${image_path}"; then + continue + fi + bmaptool create "${image_path}" -o "${image_path}.bmap" + done < <(grep '^image ' "${GENIMAGE_CFG}" | cut -d ' ' -f 2) +fi diff --git a/support/scripts/graph-build-time b/support/scripts/graph-build-time new file mode 100755 index 00000000..1edc3b3c --- /dev/null +++ b/support/scripts/graph-build-time @@ -0,0 +1,373 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2011 by Thomas Petazzoni +# Copyright (C) 2013 by Yann E. MORIN +# +# 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 + +# This script generates graphs of packages build time, from the timing +# data generated by Buildroot in the $(O)/build-time.log file. +# +# Example usage: +# +# cat $(O)/build-time.log | ./support/scripts/graph-build-time --type=histogram --output=foobar.pdf +# +# Three graph types are available : +# +# * histogram, which creates an histogram of the build time for each +# package, decomposed by each step (extract, patch, configure, +# etc.). The order in which the packages are shown is +# configurable: by package name, by build order, or by duration +# order. See the --order option. +# +# * pie-packages, which creates a pie chart of the build time of +# each package (without decomposition in steps). Packages that +# contributed to less than 1% of the overall build time are all +# grouped together in an "Other" entry. +# +# * pie-steps, which creates a pie chart of the time spent globally +# on each step (extract, patch, configure, etc...) +# +# The default is to generate an histogram ordered by package name. +# +# Requirements: +# +# * matplotlib (python-matplotlib on Debian/Ubuntu systems) +# * numpy (python-numpy on Debian/Ubuntu systems) +# * argparse (by default in Python 2.7, requires python-argparse if +# Python 2.6 is used) + +import sys + +try: + import matplotlib as mpl + import numpy +except ImportError: + sys.stderr.write("You need python-matplotlib and python-numpy to generate build graphs\n") + exit(1) + +# Use the Agg backend (which produces a PNG output, see +# http://matplotlib.org/faq/usage_faq.html#what-is-a-backend), +# otherwise an incorrect backend is used on some host machines). +# Note: matplotlib.use() must be called *before* matplotlib.pyplot. +mpl.use('Agg') + +import matplotlib.pyplot as plt # noqa: E402 +import matplotlib.font_manager as fm # noqa: E402 +import csv # noqa: E402 +import argparse # noqa: E402 + +steps = ['download', 'extract', 'patch', 'configure', 'build', + 'install-target', 'install-staging', 'install-images', + 'install-host'] + +default_colors = ['#8d02ff', '#e60004', '#009836', '#2e1d86', '#ffed00', + '#0068b5', '#f28e00', '#940084', '#97c000'] + +alternate_colors = ['#ffbe0a', '#96bdff', '#3f7f7f', '#ff0000', '#00c000', + '#0080ff', '#c000ff', '#00eeee', '#e0e000'] + + +class Package: + def __init__(self, name): + self.name = name + self.steps_duration = {} + self.steps_start = {} + self.steps_end = {} + + def add_step(self, step, state, time): + if state == "start": + self.steps_start[step] = time + else: + self.steps_end[step] = time + if step in self.steps_start and step in self.steps_end: + self.steps_duration[step] = self.steps_end[step] - self.steps_start[step] + + def get_duration(self, step=None): + if step is None: + duration = 0 + for step in list(self.steps_duration.keys()): + duration += self.steps_duration[step] + return duration + if step in self.steps_duration: + return self.steps_duration[step] + return 0 + + +# Generate an histogram of the time spent in each step of each +# package. +def pkg_histogram(data, output, order="build"): + n_pkgs = len(data) + ind = numpy.arange(n_pkgs) + + if order == "duration": + data = sorted(data, key=lambda p: p.get_duration(), reverse=True) + elif order == "name": + data = sorted(data, key=lambda p: p.name, reverse=False) + + # Prepare the vals array, containing one entry for each step + vals = [] + for step in steps: + val = [] + for p in data: + val.append(p.get_duration(step)) + vals.append(val) + + bottom = [0] * n_pkgs + legenditems = [] + + plt.figure() + + # Draw the bars, step by step + for i in range(0, len(vals)): + b = plt.bar(ind+0.1, vals[i], width=0.8, color=colors[i], bottom=bottom, linewidth=0.25) + legenditems.append(b[0]) + bottom = [bottom[j] + vals[i][j] for j in range(0, len(vals[i]))] + + # Draw the package names + plt.xticks(ind + .6, [p.name for p in data], rotation=-60, rotation_mode="anchor", fontsize=8, ha='left') + + # Adjust size of graph depending on the number of packages + # Ensure a minimal size twice as the default + # Magic Numbers do Magic Layout! + ratio = max(((n_pkgs + 10) / 48, 2)) + borders = 0.1 / ratio + sz = plt.gcf().get_figwidth() + plt.gcf().set_figwidth(sz * ratio) + + # Adjust space at borders, add more space for the + # package names at the bottom + plt.gcf().subplots_adjust(bottom=0.2, left=borders, right=1-borders) + + # Remove ticks in the graph for each package + axes = plt.gcf().gca() + for line in axes.get_xticklines(): + line.set_markersize(0) + + axes.set_ylabel('Time (seconds)') + + # Reduce size of legend text + leg_prop = fm.FontProperties(size=6) + + # Draw legend + plt.legend(legenditems, steps, prop=leg_prop) + + if order == "name": + plt.title('Build time of packages\n') + elif order == "build": + plt.title('Build time of packages, by build order\n') + elif order == "duration": + plt.title('Build time of packages, by duration order\n') + + # Save graph + plt.savefig(output) + + +# Generate a pie chart with the time spent building each package. +def pkg_pie_time_per_package(data, output): + # Compute total build duration + total = 0 + for p in data: + total += p.get_duration() + + # Build the list of labels and values, and filter the packages + # that account for less than 1% of the build time. + labels = [] + values = [] + other_value = 0 + for p in sorted(data, key=lambda p: p.get_duration()): + if p.get_duration() < (total * 0.01): + other_value += p.get_duration() + else: + labels.append(p.name) + values.append(p.get_duration()) + + labels.append('Other') + values.append(other_value) + + plt.figure() + + # Draw pie graph + patches, texts, autotexts = plt.pie(values, labels=labels, + autopct='%1.1f%%', shadow=True, + colors=colors) + + # Reduce text size + proptease = fm.FontProperties() + proptease.set_size('xx-small') + plt.setp(autotexts, fontproperties=proptease) + plt.setp(texts, fontproperties=proptease) + + plt.title('Build time per package') + plt.savefig(output) + + +# Generate a pie chart with a portion for the overall time spent in +# each step for all packages. +def pkg_pie_time_per_step(data, output): + steps_values = [] + for step in steps: + val = 0 + for p in data: + val += p.get_duration(step) + steps_values.append(val) + + plt.figure() + + # Draw pie graph + patches, texts, autotexts = plt.pie(steps_values, labels=steps, + autopct='%1.1f%%', shadow=True, + colors=colors) + + # Reduce text size + proptease = fm.FontProperties() + proptease.set_size('xx-small') + plt.setp(autotexts, fontproperties=proptease) + plt.setp(texts, fontproperties=proptease) + + plt.title('Build time per step') + plt.savefig(output) + + +def pkg_timeline(data, output): + start = 0 + end = 0 + + # Find the first timestamp and the last timestamp + for p in data: + for k, v in p.steps_start.items(): + if start == 0 or v < start: + start = v + if end < v: + end = v + + # Readjust all timestamps so that 0 is the start of the build + # instead of being Epoch + for p in data: + for k, v in p.steps_start.items(): + p.steps_start[k] = v - start + for k, v in p.steps_end.items(): + p.steps_end[k] = v - start + + plt.figure() + + i = 0 + labels_names = [] + labels_coords = [] + # put last packages that started to configure last; this does not + # give the proper dependency chain, but still provides a good-enough + # cascade graph. + for p in sorted(data, reverse=True, key=lambda x: x.steps_start['configure']): + durations = [] + facecolors = [] + for step in steps: + if step not in p.steps_start or step not in p.steps_end: + continue + durations.append((p.steps_start[step], + p.steps_end[step] - p.steps_start[step])) + facecolors.append(colors[steps.index(step)]) + plt.broken_barh(durations, (i, 6), facecolors=facecolors) + labels_coords.append(i + 3) + labels_names.append(p.name) + i += 10 + + axes = plt.gcf().gca() + + axes.set_ylim(0, i + 10) + axes.set_xlim(0, end - start) + axes.set_xlabel('seconds since start') + axes.set_yticks(labels_coords) + axes.set_yticklabels(labels_names) + axes.set_axisbelow(True) + axes.grid(True, linewidth=0.2, zorder=-1) + + plt.gcf().subplots_adjust(left=0.2) + + plt.tick_params(axis='y', which='both', labelsize=6) + plt.title('Timeline') + plt.savefig(output, dpi=300) + + +# Parses the csv file passed on standard input and returns a list of +# Package objects, filed with the duration of each step and the total +# duration of the package. +def read_data(input_file): + if input_file is None: + input_file = sys.stdin + else: + input_file = open(input_file) + reader = csv.reader(input_file, delimiter=':') + pkgs = [] + + # Auxilliary function to find a package by name in the list. + def getpkg(name): + for p in pkgs: + if p.name == name: + return p + return None + + for row in reader: + time = float(row[0].strip()) + state = row[1].strip() + step = row[2].strip() + pkg = row[3].strip() + + p = getpkg(pkg) + if p is None: + p = Package(pkg) + pkgs.append(p) + + p.add_step(step, state, time) + + return pkgs + + +parser = argparse.ArgumentParser(description='Draw build time graphs') +parser.add_argument("--type", '-t', metavar="GRAPH_TYPE", + help="Type of graph (histogram, pie-packages, pie-steps, timeline)") +parser.add_argument("--order", '-O', metavar="GRAPH_ORDER", + help="Ordering of packages: build or duration (for histogram only)") +parser.add_argument("--alternate-colors", '-c', action="store_true", + help="Use alternate colour-scheme") +parser.add_argument("--input", '-i', metavar="INPUT", + help="Input file (usually $(O)/build/build-time.log)") +parser.add_argument("--output", '-o', metavar="OUTPUT", required=True, + help="Output file (.pdf or .png extension)") +args = parser.parse_args() + +d = read_data(args.input) + +if args.alternate_colors: + colors = alternate_colors +else: + colors = default_colors + +if args.type == "histogram" or args.type is None: + if args.order == "build" or args.order == "duration" or args.order == "name": + pkg_histogram(d, args.output, args.order) + elif args.order is None: + pkg_histogram(d, args.output, "name") + else: + sys.stderr.write("Unknown ordering: %s\n" % args.order) + exit(1) +elif args.type == "pie-packages": + pkg_pie_time_per_package(d, args.output) +elif args.type == "pie-steps": + pkg_pie_time_per_step(d, args.output) +elif args.type == "timeline": + pkg_timeline(d, args.output) +else: + sys.stderr.write("Unknown type: %s\n" % args.type) + exit(1) diff --git a/support/scripts/graph-depends b/support/scripts/graph-depends new file mode 100755 index 00000000..cda0000c --- /dev/null +++ b/support/scripts/graph-depends @@ -0,0 +1,369 @@ +#!/usr/bin/env python3 + +# Usage (the graphviz package must be installed in your distribution) +# ./support/scripts/graph-depends [-p package-name] > test.dot +# dot -Tpdf test.dot -o test.pdf +# +# With no arguments, graph-depends will draw a complete graph of +# dependencies for the current configuration. +# If '-p ' is specified, graph-depends will draw a graph +# of dependencies for the given package name. +# If '-d ' is specified, graph-depends will limit the depth of +# the dependency graph to 'depth' levels. +# +# Limitations +# +# * Some packages have dependencies that depend on the Buildroot +# configuration. For example, many packages have a dependency on +# openssl if openssl has been enabled. This tool will graph the +# dependencies as they are with the current Buildroot +# configuration. +# +# Copyright (C) 2010-2013 Thomas Petazzoni +# Copyright (C) 2019 Yann E. MORIN + +import logging +import sys +import argparse +from fnmatch import fnmatch + +import brpkgutil + +# Modes of operation: +MODE_FULL = 1 # draw full dependency graph for all selected packages +MODE_PKG = 2 # draw dependency graph for a given package + +allpkgs = [] + + +# The Graphviz "dot" utility doesn't like dashes in node names. So for +# node names, we strip all dashes. Also, nodes can't start with a number, +# so we prepend an underscore. +def pkg_node_name(pkg): + return "_" + pkg.replace("-", "") + + +# Basic cache for the results of the is_dep() function, in order to +# optimize the execution time. The cache is a dict of dict of boolean +# values. The key to the primary dict is "pkg", and the key of the +# sub-dicts is "pkg2". +is_dep_cache = {} + + +def is_dep_cache_insert(pkg, pkg2, val): + try: + is_dep_cache[pkg].update({pkg2: val}) + except KeyError: + is_dep_cache[pkg] = {pkg2: val} + + +# Retrieves from the cache whether pkg2 is a transitive dependency +# of pkg. +# Note: raises a KeyError exception if the dependency is not known. +def is_dep_cache_lookup(pkg, pkg2): + return is_dep_cache[pkg][pkg2] + + +# This function return True if pkg is a dependency (direct or +# transitive) of pkg2, dependencies being listed in the deps +# dictionary. Returns False otherwise. +# This is the un-cached version. +def is_dep_uncached(pkg, pkg2, deps): + try: + for p in deps[pkg2]: + if pkg == p: + return True + if is_dep(pkg, p, deps): + return True + except KeyError: + pass + return False + + +# See is_dep_uncached() above; this is the cached version. +def is_dep(pkg, pkg2, deps): + try: + return is_dep_cache_lookup(pkg, pkg2) + except KeyError: + val = is_dep_uncached(pkg, pkg2, deps) + is_dep_cache_insert(pkg, pkg2, val) + return val + + +# This function eliminates transitive dependencies; for example, given +# these dependency chain: A->{B,C} and B->{C}, the A->{C} dependency is +# already covered by B->{C}, so C is a transitive dependency of A, via B. +# The functions does: +# - for each dependency d[i] of the package pkg +# - if d[i] is a dependency of any of the other dependencies d[j] +# - do not keep d[i] +# - otherwise keep d[i] +def remove_transitive_deps(pkg, deps): + d = deps[pkg] + new_d = [] + for i in range(len(d)): + keep_me = True + for j in range(len(d)): + if j == i: + continue + if is_dep(d[i], d[j], deps): + keep_me = False + if keep_me: + new_d.append(d[i]) + return new_d + + +# List of dependencies that all/many packages have, and that we want +# to trim when generating the dependency graph. +MANDATORY_DEPS = ['toolchain', 'skeleton', 'host-skeleton', 'host-tar', 'host-gzip', 'host-ccache'] + + +# This function removes the dependency on some 'mandatory' package, like the +# 'toolchain' package, or the 'skeleton' package +def remove_mandatory_deps(pkg, deps): + return [p for p in deps[pkg] if p not in MANDATORY_DEPS] + + +# This function returns all dependencies of pkg that are part of the +# mandatory dependencies: +def get_mandatory_deps(pkg, deps): + return [p for p in deps[pkg] if p in MANDATORY_DEPS] + + +# This function will check that there is no loop in the dependency chain +# As a side effect, it builds up the dependency cache. +def check_circular_deps(deps): + def recurse(pkg): + if pkg not in list(deps.keys()): + return + if pkg in not_loop: + return + not_loop.append(pkg) + chain.append(pkg) + for p in deps[pkg]: + if p in chain: + logging.warning("\nRecursion detected for : %s" % (p)) + while True: + _p = chain.pop() + logging.warning("which is a dependency of: %s" % (_p)) + if p == _p: + sys.exit(1) + recurse(p) + chain.pop() + + not_loop = [] + chain = [] + for pkg in list(deps.keys()): + recurse(pkg) + + +# This functions trims down the dependency list of all packages. +# It applies in sequence all the dependency-elimination methods. +def remove_extra_deps(deps, rootpkg, transitive, direct): + # For the direct dependencies, find and eliminate mandatory + # deps, and add them to the root package. Don't do it for a + # reverse graph, because mandatory deps are only direct deps. + if direct: + for pkg in list(deps.keys()): + if not pkg == rootpkg: + for d in get_mandatory_deps(pkg, deps): + if d not in deps[rootpkg]: + deps[rootpkg].append(d) + deps[pkg] = remove_mandatory_deps(pkg, deps) + for pkg in list(deps.keys()): + if not transitive or pkg == rootpkg: + deps[pkg] = remove_transitive_deps(pkg, deps) + return deps + + +# Print the attributes of a node: label and fill-color +def print_attrs(outfile, pkg, pkg_type, pkg_version, depth, colors): + name = pkg_node_name(pkg) + if pkg == 'all': + label = 'ALL' + else: + label = pkg + if depth == 0: + color = colors[0] + else: + if pkg_type == "host": + color = colors[2] + else: + color = colors[1] + if pkg_version == "virtual": + outfile.write("%s [label = <%s>]\n" % (name, label)) + else: + outfile.write("%s [label = \"%s\"]\n" % (name, label)) + outfile.write("%s [color=%s,style=filled]\n" % (name, color)) + + +# Print the dependency graph of a package +def print_pkg_deps(outfile, dict_deps, dict_types, dict_versions, stop_list, exclude_list, + direct, draw_graph, depth, max_depth, pkg, colors, done_deps=None): + if done_deps is None: + done_deps = [] + if pkg in done_deps: + return + done_deps.append(pkg) + + if draw_graph: + print_attrs(outfile, pkg, dict_types[pkg], dict_versions[pkg], depth, colors) + elif depth != 0: + outfile.write("%s " % pkg) + if pkg not in dict_deps: + return + for p in stop_list: + if fnmatch(pkg, p): + return + if dict_versions[pkg] == "virtual" and "virtual" in stop_list: + return + if dict_types[pkg] == "host" and "host" in stop_list: + return + if max_depth == 0 or depth < max_depth: + for d in dict_deps[pkg]: + if dict_versions[d] == "virtual" and "virtual" in exclude_list: + continue + if dict_types[d] == "host" and "host" in exclude_list: + continue + add = True + for p in exclude_list: + if fnmatch(d, p): + add = False + break + if add: + if draw_graph: + if direct: + outfile.write("%s -> %s [dir=%s]\n" % (pkg_node_name(pkg), pkg_node_name(d), "forward")) + else: + outfile.write("%s -> %s [dir=%s]\n" % (pkg_node_name(d), pkg_node_name(pkg), "forward")) + print_pkg_deps(outfile, dict_deps, dict_types, dict_versions, stop_list, exclude_list, + direct, draw_graph, depth + 1, max_depth, d, colors, done_deps) + + +def parse_args(): + parser = argparse.ArgumentParser(description="Graph packages dependencies") + parser.add_argument("--check-only", "-C", dest="check_only", action="store_true", default=False, + help="Only do the dependency checks (circular deps...)") + parser.add_argument("--outfile", "-o", metavar="OUT_FILE", dest="outfile", + help="File in which to generate the dot representation") + parser.add_argument("--package", '-p', metavar="PACKAGE", + help="Graph the dependencies of PACKAGE") + parser.add_argument("--depth", '-d', metavar="DEPTH", dest="depth", type=int, default=0, + help="Limit the dependency graph to DEPTH levels; 0 means no limit.") + parser.add_argument("--stop-on", "-s", metavar="PACKAGE", dest="stop_list", action="append", + help="Do not graph past this package (can be given multiple times)." + + " Can be a package name or a glob, " + + " 'virtual' to stop on virtual packages, or " + + "'host' to stop on host packages.") + parser.add_argument("--exclude", "-x", metavar="PACKAGE", dest="exclude_list", action="append", + help="Like --stop-on, but do not add PACKAGE to the graph.") + parser.add_argument("--exclude-mandatory", "-X", action="store_true", + help="Like if -x was passed for all mandatory dependencies.") + parser.add_argument("--colors", "-c", metavar="COLOR_LIST", dest="colors", + default="lightblue,grey,gainsboro", + help="Comma-separated list of the three colors to use" + + " to draw the top-level package, the target" + + " packages, and the host packages, in this order." + + " Defaults to: 'lightblue,grey,gainsboro'") + 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=False, + help="Draw direct dependencies (the default)") + parser.add_argument("--reverse", dest="reverse", action='store_true', default=False, + help="Draw reverse dependencies") + parser.add_argument("--quiet", '-q', dest="quiet", action='store_true', + help="Quiet") + parser.add_argument("--flat-list", '-f', dest="flat_list", action='store_true', default=False, + help="Do not draw graph, just print a flat list") + return parser.parse_args() + + +def main(): + args = parse_args() + + check_only = args.check_only + + logging.basicConfig(stream=sys.stderr, format='%(message)s', + level=logging.WARNING if args.quiet else logging.INFO) + + if args.outfile is None: + outfile = sys.stdout + else: + if check_only: + logging.error("don't specify outfile and check-only at the same time") + sys.exit(1) + outfile = open(args.outfile, "w") + + if not args.direct and not args.reverse: + args.direct = True + + if args.package is None: + mode = MODE_FULL + rootpkg = 'all' + else: + mode = MODE_PKG + rootpkg = args.package + + if args.stop_list is None: + stop_list = [] + else: + stop_list = args.stop_list + + if args.exclude_list is None: + exclude_list = [] + else: + exclude_list = args.exclude_list + + if args.exclude_mandatory: + exclude_list += MANDATORY_DEPS + + if args.reverse and mode == MODE_FULL: + logging.error("--reverse needs a package") + sys.exit(1) + + draw_graph = not args.flat_list + + # Get the colors: we need exactly three colors, + # so no need not split more than 4 + # We'll let 'dot' validate the colors... + colors = args.colors.split(',', 4) + if len(colors) != 3: + logging.error("Error: incorrect color list '%s'" % args.colors) + sys.exit(1) + + # Start printing the graph data + if not check_only and draw_graph: + outfile.write("digraph G {\n") + + deps, rdeps, dict_types, dict_versions = brpkgutil.get_dependency_tree() + + # forward + if args.direct: + dict_deps = deps + direct = True + check_circular_deps(dict_deps) + if not check_only: + dict_deps = remove_extra_deps(dict_deps, rootpkg, args.transitive, direct) + print_pkg_deps(outfile, dict_deps, dict_types, dict_versions, stop_list, exclude_list, + direct, draw_graph, 0, args.depth, rootpkg, colors) + + # reverse + if args.reverse: + dict_deps = rdeps + direct = False + check_circular_deps(dict_deps) + if not check_only: + dict_deps = remove_extra_deps(dict_deps, rootpkg, args.transitive, direct) + print_pkg_deps(outfile, dict_deps, dict_types, dict_versions, stop_list, exclude_list, + direct, draw_graph, 0, args.depth, rootpkg, colors) + + if not check_only and draw_graph: + outfile.write("}\n") + else: + outfile.write("\n") + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/support/scripts/hardlink-or-copy b/support/scripts/hardlink-or-copy new file mode 100755 index 00000000..a052318f --- /dev/null +++ b/support/scripts/hardlink-or-copy @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +# Try to hardlink a file into a directory, fallback to copy on failure. +# +# Hardlink-or-copy the source file in the first argument into the +# destination directory in the second argument, using the basename in +# the third argument as basename for the destination file. If the third +# argument is missing, use the basename of the source file as basename +# for the destination file. +# +# In either case, remove the destination prior to doing the +# hardlink-or-copy. +# +# Note that this is NOT an atomic operation. + +set -e + +main() { + local src_file="${1}" + local dst_dir="${2}" + local dst_file="${3}" + + if [ -n "${dst_file}" ]; then + dst_file="${dst_dir}/${dst_file}" + else + dst_file="${dst_dir}/${src_file##*/}" + fi + + mkdir -p "${dst_dir}" + rm -f "${dst_file}" + ln -f "${src_file}" "${dst_file}" 2>/dev/null \ + || cp -f "${src_file}" "${dst_file}" +} + +main "${@}" diff --git a/support/scripts/mkmakefile b/support/scripts/mkmakefile new file mode 100755 index 00000000..c7569f2c --- /dev/null +++ b/support/scripts/mkmakefile @@ -0,0 +1,52 @@ +#!/bin/sh +# Generates a small Makefile used in the root of the output +# directory, to allow make to be started from there. +# The Makefile also allow for more convenient build of external modules + +# Usage +# $1 - Kernel src directory +# $2 - Output directory + + +test ! -r $2/Makefile -o -O $2/Makefile || exit 0 +# Only overwrite automatically generated Makefiles +# (so we do not overwrite buildroot Makefile) +if test -e $2/Makefile && ! grep -q Automatically $2/Makefile +then + exit 0 +fi +echo " GEN $2/Makefile" + +cat << EOF > $2/Makefile +# Automatically generated by $0: don't edit + +ifeq ("\$(origin V)", "command line") +VERBOSE := \$(V) +endif +ifneq (\$(VERBOSE),1) +Q := @ +endif + +lastword = \$(word \$(words \$(1)),\$(1)) +makedir := \$(dir \$(call lastword,\$(MAKEFILE_LIST))) + +MAKEARGS := -C $1 +MAKEARGS += O=\$(if \$(patsubst /%,,\$(makedir)),\$(CURDIR)/)\$(patsubst %/,%,\$(makedir)) + +MAKEFLAGS += --no-print-directory + +.PHONY: _all \$(MAKECMDGOALS) + +all := \$(filter-out Makefile,\$(MAKECMDGOALS)) + +_all: + \$(Q)umask 0022 && \$(MAKE) \$(MAKEARGS) \$(all) + +Makefile:; + +\$(all): _all + @: + +%/: _all + @: +EOF diff --git a/support/scripts/mkusers b/support/scripts/mkusers new file mode 100755 index 00000000..08f33445 --- /dev/null +++ b/support/scripts/mkusers @@ -0,0 +1,485 @@ +#!/usr/bin/env bash +set -e +myname="${0##*/}" + +#---------------------------------------------------------------------------- +# Configurable items +FIRST_USER_UID=1000 +LAST_USER_UID=1999 +FIRST_USER_GID=1000 +LAST_USER_GID=1999 +# use names from /etc/adduser.conf +FIRST_SYSTEM_UID=100 +LAST_SYSTEM_UID=999 +FIRST_SYSTEM_GID=100 +LAST_SYSTEM_GID=999 +# argument to automatically crease system/user id +AUTO_SYSTEM_ID=-1 +AUTO_USER_ID=-2 + +# No more is configurable below this point +#---------------------------------------------------------------------------- + +#---------------------------------------------------------------------------- +error() { + local fmt="${1}" + shift + + printf "%s: " "${myname}" >&2 + # shellcheck disable=SC2059 # fmt is the format passed to error() + printf "${fmt}" "${@}" >&2 +} +fail() { + error "$@" + exit 1 +} + +#---------------------------------------------------------------------------- +if [ ${#} -ne 2 ]; then + fail "usage: %s USERS_TABLE TARGET_DIR\n" +fi +USERS_TABLE="${1}" +TARGET_DIR="${2}" +shift 2 +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 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" + +# We can't simply source ${BR2_CONFIG} as it may contains constructs +# such as: +# BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +# which when sourced from a shell script will eventually try to execute +# 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;' \ + -e 's//\1/;' \ + "${BR2_CONFIG}" \ + )" + +#---------------------------------------------------------------------------- +get_uid() { + local username="${1}" + + awk -F: -v username="${username}" \ + '$1 == username { printf( "%d\n", $3 ); }' "${PASSWD}" +} + +#---------------------------------------------------------------------------- +get_ugid() { + local username="${1}" + + awk -F: -v username="${username}" \ + '$1 == username { printf( "%d\n", $4 ); }' "${PASSWD}" +} + +#---------------------------------------------------------------------------- +get_gid() { + local group="${1}" + + awk -F: -v group="${group}" \ + '$1 == group { printf( "%d\n", $3 ); }' "${GROUP}" +} + +#---------------------------------------------------------------------------- +get_members() { + local group="${1}" + + awk -F: -v group="${group}" \ + '$1 == group { printf( "%s\n", $4 ); }' "${GROUP}" +} + +#---------------------------------------------------------------------------- +get_username() { + local uid="${1}" + + awk -F: -v uid="${uid}" \ + '$3 == uid { printf( "%s\n", $1 ); }' "${PASSWD}" +} + +#---------------------------------------------------------------------------- +get_group() { + local gid="${1}" + + awk -F: -v gid="${gid}" \ + '$3 == gid { printf( "%s\n", $1 ); }' "${GROUP}" +} + +#---------------------------------------------------------------------------- +get_ugroup() { + local username="${1}" + local ugid + + ugid="$( get_ugid "${username}" )" + if [ -n "${ugid}" ]; then + get_group "${ugid}" + fi +} + +#---------------------------------------------------------------------------- +# Sanity-check the new user/group: +# - check the gid is not already used for another group +# - check the group does not already exist with another gid +# - check the user does not already exist with another gid +# - check the uid is not already used for another user +# - check the user does not already exist with another uid +# - check the user does not already exist in another group +check_user_validity() { + local username="${1}" + local uid="${2}" + local group="${3}" + local gid="${4}" + local _uid _ugid _gid _username _group _ugroup + + _group="$( get_group "${gid}" )" + _gid="$( get_gid "${group}" )" + _ugid="$( get_ugid "${username}" )" + _username="$( get_username "${uid}" )" + _uid="$( get_uid "${username}" )" + _ugroup="$( get_ugroup "${username}" )" + + if [ "${username}" = "root" ]; then + fail "invalid username '%s\n'" "${username}" + fi + + # shellcheck disable=SC2086 # gid is a non-empty int + # shellcheck disable=SC2166 # [ .. -o .. ] works well in this case + if [ ${gid} -lt -2 -o ${gid} -eq 0 ]; then + fail "invalid gid '%d' for '%s'\n" ${gid} "${username}" + elif [ ${gid} -ge 0 ]; then + # check the gid is not already used for another group + if [ -n "${_group}" -a "${_group}" != "${group}" ]; then + fail "gid '%d' for '%s' is already used by group '%s'\n" \ + ${gid} "${username}" "${_group}" + fi + + # check the group does not already exists with another gid + # Need to split the check in two, otherwise '[' complains it + # is missing arguments when _gid is empty + if [ -n "${_gid}" ] && [ ${_gid} -ne ${gid} ]; then + fail "group '%s' for '%s' already exists with gid '%d' (wants '%d')\n" \ + "${group}" "${username}" ${_gid} ${gid} + fi + + # check the user does not already exists with another gid + # Need to split the check in two, otherwise '[' complains it + # is missing arguments when _ugid is empty + if [ -n "${_ugid}" ] && [ ${_ugid} -ne ${gid} ]; then + fail "user '%s' already exists with gid '%d' (wants '%d')\n" \ + "${username}" ${_ugid} ${gid} + fi + fi + + # shellcheck disable=SC2086 # uid is a non-empty int + # shellcheck disable=SC2166 # [ .. -o .. ] works well in this case + if [ ${uid} -lt -2 -o ${uid} -eq 0 ]; then + fail "invalid uid '%d' for '%s'\n" ${uid} "${username}" + elif [ ${uid} -ge 0 ]; then + # check the uid is not already used for another user + if [ -n "${_username}" -a "${_username}" != "${username}" ]; then + fail "uid '%d' for '%s' already used by user '%s'\n" \ + ${uid} "${username}" "${_username}" + fi + + # check the user does not already exists with another uid + # Need to split the check in two, otherwise '[' complains it + # is missing arguments when _uid is empty + if [ -n "${_uid}" ] && [ ${_uid} -ne ${uid} ]; then + fail "user '%s' already exists with uid '%d' (wants '%d')\n" \ + "${username}" ${_uid} ${uid} + fi + fi + + # check the user does not already exist in another group + # shellcheck disable=SC2166 # [ .. -a .. ] works well in this case + if [ -n "${_ugroup}" -a "${_ugroup}" != "${group}" ]; then + fail "user '%s' already exists with group '%s' (wants '%s')\n" \ + "${username}" "${_ugroup}" "${group}" + fi + + return 0 +} + +#---------------------------------------------------------------------------- +# Generate a unique GID for given group. If the group already exists, +# then simply report its current GID. Otherwise, generate the lowest GID +# that is: +# - not 0 +# - comprised in [$2..$3] +# - not already used by a group +generate_gid() { + local group="${1}" + local mingid="${2}" + local maxgid="${3}" + local gid + + gid="$( get_gid "${group}" )" + if [ -z "${gid}" ]; then + for(( gid=mingid; gid<=maxgid; gid++ )); do + if [ -z "$( get_group "${gid}" )" ]; then + break + fi + done + # shellcheck disable=SC2086 # gid and maxgid are non-empty ints + if [ ${gid} -gt ${maxgid} ]; then + fail "can not allocate a GID for group '%s'\n" "${group}" + fi + fi + printf "%d\n" "${gid}" +} + +#---------------------------------------------------------------------------- +# Add a group; if it does already exist, remove it first +add_one_group() { + local group="${1}" + local gid="${2}" + local members + + # Generate a new GID if needed + # shellcheck disable=SC2086 # gid is a non-empty int + if [ ${gid} -eq ${AUTO_USER_ID} ]; then + gid="$( generate_gid "${group}" $FIRST_USER_GID $LAST_USER_GID )" + elif [ ${gid} -eq ${AUTO_SYSTEM_ID} ]; then + gid="$( generate_gid "${group}" $FIRST_SYSTEM_GID $LAST_SYSTEM_GID )" + fi + + members=$(get_members "$group") + # Remove any previous instance of this group, and re-add the new one + sed -i --follow-symlinks -e '/^'"${group}"':.*/d;' "${GROUP}" + printf "%s:x:%d:%s\n" "${group}" "${gid}" "${members}" >>"${GROUP}" + + # Ditto for /etc/gshadow if it exists + if [ -f "${GSHADOW}" ]; then + sed -i --follow-symlinks -e '/^'"${group}"':.*/d;' "${GSHADOW}" + printf "%s:*::\n" "${group}" >>"${GSHADOW}" + fi +} + +#---------------------------------------------------------------------------- +# Generate a unique UID for given username. If the username already exists, +# then simply report its current UID. Otherwise, generate the lowest UID +# that is: +# - not 0 +# - comprised in [$2..$3] +# - not already used by a user +generate_uid() { + local username="${1}" + local minuid="${2}" + local maxuid="${3}" + + local uid + + uid="$( get_uid "${username}" )" + if [ -z "${uid}" ]; then + for(( uid=minuid; uid<=maxuid; uid++ )); do + if [ -z "$( get_username "${uid}" )" ]; then + break + fi + done + # shellcheck disable=SC2086 # uid is a non-empty int + if [ ${uid} -gt ${maxuid} ]; then + fail "can not allocate a UID for user '%s'\n" "${username}" + fi + fi + printf "%d\n" "${uid}" +} + +#---------------------------------------------------------------------------- +# Add given user to given group, if not already the case +add_user_to_group() { + local username="${1}" + local group="${2}" + local _f + + for _f in "${GROUP}" "${GSHADOW}"; do + [ -f "${_f}" ] || continue + sed -r -i --follow-symlinks \ + -e 's/^('"${group}"':.*:)(([^:]+,)?)'"${username}"'(,[^:]+*)?$/\1\2\4/;' \ + -e 's/^('"${group}"':.*)$/\1,'"${username}"'/;' \ + -e 's/,+/,/' \ + -e 's/:,/:/' \ + "${_f}" + done +} + +#---------------------------------------------------------------------------- +# Encode a password +encode_password() { + local passwd="${1}" + + mkpasswd -m "${PASSWD_METHOD}" "${passwd}" +} + +#---------------------------------------------------------------------------- +# Add a user; if it does already exist, remove it first +add_one_user() { + local username="${1}" + local uid="${2}" + local group="${3}" + local gid="${4}" + local passwd="${5}" + local home="${6}" + local shell="${7}" + local groups="${8}" + local comment="${9}" + local _f _group _home _shell _gid _passwd + + # First, sanity-check the user + check_user_validity "${username}" "${uid}" "${group}" "${gid}" + + # Generate a new UID if needed + # shellcheck disable=SC2086 # uid is a non-empty int + if [ ${uid} -eq ${AUTO_USER_ID} ]; then + uid="$( generate_uid "${username}" $FIRST_USER_UID $LAST_USER_UID )" + elif [ ${uid} -eq ${AUTO_SYSTEM_ID} ]; then + uid="$( generate_uid "${username}" $FIRST_SYSTEM_UID $LAST_SYSTEM_UID )" + fi + + # Remove any previous instance of this user + for _f in "${PASSWD}" "${SHADOW}"; do + sed -r -i --follow-symlinks -e '/^'"${username}"':.*/d;' "${_f}" + done + + _gid="$( get_gid "${group}" )" + _shell="${shell}" + if [ "${shell}" = "-" ]; then + _shell="/bin/false" + fi + case "${home}" in + -) _home="/";; + /) fail "home can not explicitly be '/'\n";; + /*) _home="${home}";; + *) fail "home must be an absolute path\n";; + esac + case "${passwd}" in + -) + _passwd="" + ;; + !=*) + _passwd='!'"$( encode_password "${passwd#!=}" )" + ;; + =*) + _passwd="$( encode_password "${passwd#=}" )" + ;; + *) + _passwd="${passwd}" + ;; + esac + + printf "%s:x:%d:%d:%s:%s:%s\n" \ + "${username}" "${uid}" "${_gid}" \ + "${comment}" "${_home}" "${_shell}" \ + >>"${PASSWD}" + printf "%s:%s:::::::\n" \ + "${username}" "${_passwd}" \ + >>"${SHADOW}" + + # Add the user to its additional groups + if [ "${groups}" != "-" ]; then + for _group in ${groups//,/ }; do + add_user_to_group "${username}" "${_group}" + done + fi + + # If the user has a home, chown it + # (Note: stdout goes to the fakeroot-script) + if [ "${home}" != "-" ]; then + mkdir -p "${TARGET_DIR}/${home}" + printf "chown -h -R %d:%d '%s'\n" "${uid}" "${_gid}" "${TARGET_DIR}/${home}" + fi +} + +#---------------------------------------------------------------------------- +main() { + local username uid group gid passwd home shell groups comment + local line + local auto_id + local -a ENTRIES + + # Some sanity checks + if [ ${FIRST_USER_UID} -le 0 ]; then + fail "FIRST_USER_UID must be >0 (currently %d)\n" ${FIRST_USER_UID} + fi + if [ ${FIRST_USER_GID} -le 0 ]; then + fail "FIRST_USER_GID must be >0 (currently %d)\n" ${FIRST_USER_GID} + fi + + # Read in all the file in memory, exclude empty lines and comments + # mapfile reads all lines, even the last one if it is missing a \n + mapfile -t ENTRIES < <( sed -r -e 's/#.*//; /^[[:space:]]*$/d;' "${USERS_TABLE}" ) + + # We first create groups whose gid is positive, and then we create groups + # whose gid is automatic, so that, if a group is defined both with + # a specified gid and an automatic gid, we ensure the specified gid is + # used, rather than a different automatic gid is computed. + + # First, create all the main groups which gid is *not* automatic + for line in "${ENTRIES[@]}"; do + read -r username uid group gid passwd home shell groups comment <<<"${line}" + # shellcheck disable=SC2086 # gid is a non-empty int + [ ${gid} -ge 0 ] || continue # Automatic gid + add_one_group "${group}" "${gid}" + done + + # Then, create all the main groups which gid *is* automatic + for line in "${ENTRIES[@]}"; do + read -r username uid group gid passwd home shell groups comment <<<"${line}" + # shellcheck disable=SC2086 # gid is a non-empty int + [ ${gid} -lt 0 ] || continue # Non-automatic gid + add_one_group "${group}" "${gid}" + done + + # Then, create all the additional groups + # If any additional group is already a main group, we should use + # the gid of that main group; otherwise, we can use any gid - a + # system gid if the uid is a system user (<= LAST_SYSTEM_UID), + # otherwise a user gid. + for line in "${ENTRIES[@]}"; do + read -r username uid group gid passwd home shell groups comment <<<"${line}" + if [ "${groups}" != "-" ]; then + # shellcheck disable=SC2086 # uid is a non-empty int + if [ ${uid} -le 0 ]; then + auto_id=${uid} + elif [ ${uid} -le ${LAST_SYSTEM_UID} ]; then + auto_id=${AUTO_SYSTEM_ID} + else + auto_id=${AUTO_USER_ID} + fi + for g in ${groups//,/ }; do + add_one_group "${g}" ${auto_id} + done + fi + done + + # When adding users, we do as for groups, in case two packages create + # the same user, one with an automatic uid, the other with a specified + # uid, to ensure the specified uid is used, rather than an incompatible + # uid be generated. + + # Now, add users whose uid is *not* automatic + for line in "${ENTRIES[@]}"; do + read -r username uid group gid passwd home shell groups comment <<<"${line}" + [ "${username}" != "-" ] || continue # Magic string to skip user creation + # shellcheck disable=SC2086 # uid is a non-empty int + [ ${uid} -ge 0 ] || continue # Automatic uid + add_one_user "${username}" "${uid}" "${group}" "${gid}" "${passwd}" \ + "${home}" "${shell}" "${groups}" "${comment}" + done + + # Finally, add users whose uid *is* automatic + for line in "${ENTRIES[@]}"; do + read -r username uid group gid passwd home shell groups comment <<<"${line}" + [ "${username}" != "-" ] || continue # Magic string to skip user creation + # shellcheck disable=SC2086 # uid is a non-empty int + [ ${uid} -lt 0 ] || continue # Non-automatic uid + add_one_user "${username}" "${uid}" "${group}" "${gid}" "${passwd}" \ + "${home}" "${shell}" "${groups}" "${comment}" + done +} + +#---------------------------------------------------------------------------- +main "${@}" diff --git a/support/scripts/pkg-stats b/support/scripts/pkg-stats new file mode 100755 index 00000000..4dc1857a --- /dev/null +++ b/support/scripts/pkg-stats @@ -0,0 +1,1346 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2009 by Thomas Petazzoni +# Copyright (C) 2022 by Sen Hastings +# +# 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 + +import aiohttp +import argparse +import asyncio +import datetime +import fnmatch +import os +from collections import defaultdict, namedtuple +import re +import subprocess +import json +import sys + +brpath = os.path.normpath(os.path.join(os.path.dirname(__file__), "..", "..")) + +sys.path.append(os.path.join(brpath, "utils")) +from getdeveloperlib import parse_developers # noqa: E402 + +INFRA_RE = re.compile(r"\$\(eval \$\(([a-z-]*)-package\)\)") +URL_RE = re.compile(r"\s*https?://\S*\s*$") + +RM_API_STATUS_ERROR = 1 +RM_API_STATUS_FOUND_BY_DISTRO = 2 +RM_API_STATUS_FOUND_BY_PATTERN = 3 +RM_API_STATUS_NOT_FOUND = 4 + + +class Defconfig: + def __init__(self, name, path): + self.name = name + self.path = path + self.developers = None + + def set_developers(self, developers): + """ + Fills in the .developers field + """ + self.developers = [ + developer.name + for developer in developers + if developer.hasfile(self.path) + ] + + +def get_defconfig_list(): + """ + Builds the list of Buildroot defconfigs, returning a list of Defconfig + objects. + """ + return [ + Defconfig(name[:-len('_defconfig')], os.path.join('configs', name)) + for name in os.listdir(os.path.join(brpath, 'configs')) + if name.endswith('_defconfig') + ] + + +Br2Tree = namedtuple("Br2Tree", ["name", "path"]) + + +def get_trees(): + raw_variables = subprocess.check_output(["make", "--no-print-directory", "-s", + "BR2_HAVE_DOT_CONFIG=y", "printvars", + "VARS=BR2_EXTERNAL_NAMES BR2_EXTERNAL_%_PATH"]) + variables = dict(line.split("=") for line in raw_variables.decode().split("\n") if line) + variables["BR2_EXTERNAL_BUILDROOT_PATH"] = brpath + externals = ["BUILDROOT", *variables["BR2_EXTERNAL_NAMES"].split()] + return [Br2Tree(name, os.path.normpath(variables[f"BR2_EXTERNAL_{name}_PATH"])) for name in externals] + + +class Package: + all_licenses = dict() + all_license_files = list() + all_versions = dict() + all_ignored_cves = dict() + all_cpeids = dict() + # This is the list of all possible checks. Add new checks to this list so + # a tool that post-processes the json output knows the checks before + # iterating over the packages. + status_checks = ['cve', 'developers', 'hash', 'license', + 'license-files', 'patches', 'pkg-check', 'url', 'version'] + + def __init__(self, tree, name, path): + self.tree = tree.name + self.tree_path = tree.path + self.name = name + self.path = path + self.pkg_path = os.path.dirname(path) + # Contains a list of tuple (type, infra), such as ("target", + # "autotools"). When pkg-stats is run without -c, it contains + # the list of all infra/type supported by the package. When + # pkg-stats is run with -c, it contains the list of infra/type + # used by the current configuration. + self.infras = None + self.license = None + self.has_license = False + self.has_license_files = False + self.has_hash = False + self.patch_files = [] + self.warnings = 0 + self.current_version = None + self.url = None + self.url_worker = None + self.cpeid = None + self.cves = list() + self.ignored_cves = list() + self.unsure_cves = list() + self.latest_version = {'status': RM_API_STATUS_ERROR, 'version': None, 'id': None} + self.status = {} + + def pkgvar(self): + return self.name.upper().replace("-", "_") + + @property + def pkgdir(self): + return os.path.join(self.tree_path, self.pkg_path) + + @property + def pkgfile(self): + return os.path.join(self.tree_path, self.path) + + @property + def hashpath(self): + return self.pkgfile.replace(".mk", ".hash") + + def set_url(self): + """ + Fills in the .url field + """ + self.status['url'] = ("warning", "no Config.in") + for filename in os.listdir(self.pkgdir): + if fnmatch.fnmatch(filename, 'Config.*'): + fp = open(os.path.join(self.pkgdir, filename), "r") + for config_line in fp: + if URL_RE.match(config_line): + self.url = config_line.strip() + self.status['url'] = ("ok", "found") + fp.close() + return + self.status['url'] = ("error", "missing") + fp.close() + + @property + def patch_count(self): + return len(self.patch_files) + + @property + def has_valid_infra(self): + if self.infras is None: + return False + return len(self.infras) > 0 + + @property + def is_actual_package(self): + try: + if not self.has_valid_infra: + return False + if self.infras[0][1] == 'virtual': + return False + except IndexError: + return False + return True + + def set_infra(self, show_info_js): + """ + Fills in the .infras field + """ + # If we're running pkg-stats for a given Buildroot + # configuration, keep only the type/infra that applies + if show_info_js: + keep_host = "host-%s" % self.name in show_info_js + keep_target = self.name in show_info_js + # Otherwise, keep all + else: + keep_host = True + keep_target = True + + self.infras = list() + with open(self.pkgfile, 'r') as f: + lines = f.readlines() + for line in lines: + match = INFRA_RE.match(line) + if not match: + continue + infra = match.group(1) + if infra.startswith("host-") and keep_host: + self.infras.append(("host", infra[5:])) + elif keep_target: + self.infras.append(("target", infra)) + + def set_license(self): + """ + Fills in the .status['license'] and .status['license-files'] fields + """ + if not self.is_actual_package: + self.status['license'] = ("na", "no valid package infra") + self.status['license-files'] = ("na", "no valid package infra") + return + + var = self.pkgvar() + self.status['license'] = ("error", "missing") + self.status['license-files'] = ("error", "missing") + if var in self.all_licenses: + self.license = self.all_licenses[var] + self.status['license'] = ("ok", "found") + if var in self.all_license_files: + self.status['license-files'] = ("ok", "found") + + def set_hash_info(self): + """ + Fills in the .status['hash'] field + """ + if not self.is_actual_package: + self.status['hash'] = ("na", "no valid package infra") + self.status['hash-license'] = ("na", "no valid package infra") + return + + if os.path.exists(self.hashpath): + self.status['hash'] = ("ok", "found") + else: + self.status['hash'] = ("error", "missing") + + def set_patch_count(self): + """ + Fills in the .patch_count, .patch_files and .status['patches'] fields + """ + if not self.is_actual_package: + self.status['patches'] = ("na", "no valid package infra") + return + + for subdir, _, _ in os.walk(self.pkgdir): + self.patch_files = fnmatch.filter(os.listdir(subdir), '*.patch') + + if self.patch_count == 0: + self.status['patches'] = ("ok", "no patches") + elif self.patch_count < 5: + self.status['patches'] = ("warning", "some patches") + else: + self.status['patches'] = ("error", "lots of patches") + + def set_current_version(self): + """ + Fills in the .current_version field + """ + var = self.pkgvar() + if var in self.all_versions: + self.current_version = self.all_versions[var] + + def set_cpeid(self): + """ + Fills in the .cpeid field + """ + var = self.pkgvar() + if not self.is_actual_package: + self.status['cpe'] = ("na", "N/A - virtual pkg") + return + if not self.current_version: + self.status['cpe'] = ("na", "no version information available") + return + + if var in self.all_cpeids: + self.cpeid = self.all_cpeids[var] + self.status['cpe'] = ("ok", "(not checked against CPE dictionary)") + else: + self.status['cpe'] = ("error", "no verified CPE identifier") + + def set_check_package_warnings(self): + """ + Fills in the .warnings and .status['pkg-check'] fields + """ + cmd = [os.path.join(brpath, "utils/check-package")] + self.status['pkg-check'] = ("error", "Missing") + for root, dirs, files in os.walk(self.pkgdir): + for f in files: + cmd.append(os.path.join(root, f)) + o = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[1] + lines = o.splitlines() + for line in lines: + m = re.match("^([0-9]*) warnings generated", line.decode()) + if m: + self.warnings = int(m.group(1)) + if self.warnings == 0: + self.status['pkg-check'] = ("ok", "no warnings") + else: + self.status['pkg-check'] = ("error", "{} warnings".format(self.warnings)) + return + + def set_ignored_cves(self): + """ + Give the list of CVEs ignored by the package + """ + self.ignored_cves = list(self.all_ignored_cves.get(self.pkgvar(), [])) + + def set_developers(self, developers): + """ + Fills in the .developers and .status['developers'] field + """ + self.developers = [ + dev.name + for dev in developers + if dev.hasfile(self.path) + ] + + if self.developers: + self.status['developers'] = ("ok", "{} developers".format(len(self.developers))) + else: + self.status['developers'] = ("warning", "no developers") + + def is_status_ok(self, name): + return name in self.status and self.status[name][0] == 'ok' + + def is_status_error(self, name): + return name in self.status and self.status[name][0] == 'error' + + def is_status_na(self, name): + return name in self.status and self.status[name][0] == 'na' + + def __eq__(self, other): + return self.path == other.path + + def __lt__(self, other): + return self.path < other.path + + def __str__(self): + return "%s (path='%s', license='%s', license_files='%s', hash='%s', patches=%d)" % \ + (self.name, self.path, self.is_status_ok('license'), + self.is_status_ok('license-files'), self.status['hash'], self.patch_count) + + +def get_pkglist(trees, npackages, package_list): + """ + Builds the list of Buildroot packages, returning a list of Package + objects. Only the .name and .path fields of the Package object are + initialized. + + npackages: limit to N packages + package_list: limit to those packages in this list + """ + WALK_USEFUL_SUBDIRS = ["boot", "linux", "package", "toolchain"] + WALK_EXCLUDES = ["boot/barebox/barebox.mk", + "boot/common.mk", + "linux/linux-ext-.*.mk", + "package/fftw/fftw.mk", + "package/freescale-imx/freescale-imx.mk", + "package/gcc/gcc.mk", + "package/gstreamer/gstreamer.mk", + "package/gstreamer1/gstreamer1.mk", + "package/gtk2-themes/gtk2-themes.mk", + "package/kf5/kf5.mk", + "package/llvm-project/llvm-project.mk", + "package/matchbox/matchbox.mk", + "package/opengl/opengl.mk", + "package/qt5/qt5.mk", + "package/qt6/qt6.mk", + "package/x11r7/x11r7.mk", + "package/doc-asciidoc.mk", + "package/pkg-.*.mk", + "toolchain/toolchain-external/pkg-toolchain-external.mk", + "toolchain/toolchain-external/toolchain-external.mk", + "toolchain/toolchain.mk", + "toolchain/helpers.mk", + "toolchain/toolchain-wrapper.mk"] + packages = list() + count = 0 + for br_tree, root, dirs, files in ((tree, *rdf) for tree in trees for rdf in os.walk(tree.path)): + root = os.path.relpath(root, br_tree.path) + rootdir = root.split("/") + if len(rootdir) < 1: + continue + if rootdir[0] not in WALK_USEFUL_SUBDIRS: + continue + for f in files: + if not f.endswith(".mk"): + continue + # Strip ending ".mk" + pkgname = f[:-3] + if package_list and pkgname not in package_list: + continue + pkgpath = os.path.join(root, f) + skip = False + for exclude in WALK_EXCLUDES: + if re.match(exclude, pkgpath): + skip = True + continue + if skip: + continue + p = Package(br_tree, pkgname, pkgpath) + packages.append(p) + count += 1 + if npackages and count == npackages: + return packages + return packages + + +def get_show_info_js(): + cmd = ["make", "--no-print-directory", "show-info"] + return json.loads(subprocess.check_output(cmd)) + + +def package_init_make_info(): + # Fetch all variables at once + variables = subprocess.check_output(["make", "--no-print-directory", "-s", + "BR2_HAVE_DOT_CONFIG=y", "printvars", + "VARS=%_LICENSE %_LICENSE_FILES %_VERSION %_IGNORE_CVES %_CPE_ID"]) + variable_list = variables.decode().splitlines() + + # We process first the host package VERSION, and then the target + # package VERSION. This means that if a package exists in both + # target and host variants, with different values (eg. version + # numbers (unlikely)), we'll report the target one. + variable_list = [x[5:] for x in variable_list if x.startswith("HOST_")] + \ + [x for x in variable_list if not x.startswith("HOST_")] + + for item in variable_list: + # Get variable name and value + pkgvar, value = item.split("=", maxsplit=1) + + # Strip the suffix according to the variable + if pkgvar.endswith("_LICENSE"): + # If value is "unknown", no license details available + if value == "unknown": + continue + pkgvar = pkgvar[:-8] + Package.all_licenses[pkgvar] = value + + elif pkgvar.endswith("_LICENSE_FILES"): + if pkgvar.endswith("_MANIFEST_LICENSE_FILES"): + continue + pkgvar = pkgvar[:-14] + Package.all_license_files.append(pkgvar) + + elif pkgvar.endswith("_VERSION"): + if pkgvar.endswith("_DL_VERSION"): + continue + pkgvar = pkgvar[:-8] + Package.all_versions[pkgvar] = value + + elif pkgvar.endswith("_IGNORE_CVES"): + pkgvar = pkgvar[:-12] + Package.all_ignored_cves[pkgvar] = value.split() + + elif pkgvar.endswith("_CPE_ID"): + pkgvar = pkgvar[:-7] + Package.all_cpeids[pkgvar] = value + + +check_url_count = 0 + + +async def check_url_status(session, pkg, npkgs, retry=True): + global check_url_count + + try: + async with session.get(pkg.url) as resp: + if resp.status >= 400: + pkg.status['url'] = ("error", "invalid {}".format(resp.status)) + check_url_count += 1 + print("[%04d/%04d] %s" % (check_url_count, npkgs, pkg.name)) + return + except (aiohttp.ClientError, asyncio.TimeoutError): + if retry: + return await check_url_status(session, pkg, npkgs, retry=False) + else: + pkg.status['url'] = ("error", "invalid (err)") + check_url_count += 1 + print("[%04d/%04d] %s" % (check_url_count, npkgs, pkg.name)) + return + + pkg.status['url'] = ("ok", "valid") + check_url_count += 1 + print("[%04d/%04d] %s" % (check_url_count, npkgs, pkg.name)) + + +async def check_package_urls(packages): + tasks = [] + connector = aiohttp.TCPConnector(limit_per_host=5) + async with aiohttp.ClientSession(connector=connector, trust_env=True, + timeout=aiohttp.ClientTimeout(total=15)) as sess: + packages = [p for p in packages if p.status['url'][0] == 'ok'] + for pkg in packages: + tasks.append(asyncio.ensure_future(check_url_status(sess, pkg, len(packages)))) + await asyncio.wait(tasks) + + +def check_package_latest_version_set_status(pkg, status, version, identifier): + pkg.latest_version = { + "status": status, + "version": version, + "id": identifier, + } + + if pkg.latest_version['status'] == RM_API_STATUS_ERROR: + pkg.status['version'] = ('warning', "Release Monitoring API error") + elif pkg.latest_version['status'] == RM_API_STATUS_NOT_FOUND: + pkg.status['version'] = ('warning', "Package not found on Release Monitoring") + + if pkg.latest_version['version'] is None: + pkg.status['version'] = ('warning', "No upstream version available on Release Monitoring") + elif pkg.latest_version['version'] != pkg.current_version: + pkg.status['version'] = ('error', "The newer version {} is available upstream".format(pkg.latest_version['version'])) + else: + pkg.status['version'] = ('ok', 'up-to-date') + + +async def check_package_get_latest_version_by_distro(session, pkg, retry=True): + url = "https://release-monitoring.org/api/project/Buildroot/%s" % pkg.name + try: + async with session.get(url) as resp: + if resp.status != 200: + return False + + data = await resp.json() + if 'stable_versions' in data and data['stable_versions']: + version = data['stable_versions'][0] + elif 'version' in data: + version = data['version'] + else: + version = None + check_package_latest_version_set_status(pkg, + RM_API_STATUS_FOUND_BY_DISTRO, + version, + data['id']) + return True + + except (aiohttp.ClientError, asyncio.TimeoutError): + if retry: + return await check_package_get_latest_version_by_distro(session, pkg, retry=False) + else: + return False + + +async def check_package_get_latest_version_by_guess(session, pkg, retry=True): + url = "https://release-monitoring.org/api/projects/?pattern=%s" % pkg.name + try: + async with session.get(url) as resp: + if resp.status != 200: + return False + + data = await resp.json() + # filter projects that have the right name and a version defined + projects = [p for p in data['projects'] if p['name'] == pkg.name and 'stable_versions' in p] + projects.sort(key=lambda x: x['id']) + + if len(projects) == 0: + return False + + if len(projects[0]['stable_versions']) == 0: + return False + + check_package_latest_version_set_status(pkg, + RM_API_STATUS_FOUND_BY_PATTERN, + projects[0]['stable_versions'][0], + projects[0]['id']) + return True + + except (aiohttp.ClientError, asyncio.TimeoutError): + if retry: + return await check_package_get_latest_version_by_guess(session, pkg, retry=False) + else: + return False + + +check_latest_count = 0 + + +async def check_package_latest_version_get(session, pkg, npkgs): + global check_latest_count + + if await check_package_get_latest_version_by_distro(session, pkg): + check_latest_count += 1 + print("[%04d/%04d] %s" % (check_latest_count, npkgs, pkg.name)) + return + + if await check_package_get_latest_version_by_guess(session, pkg): + check_latest_count += 1 + print("[%04d/%04d] %s" % (check_latest_count, npkgs, pkg.name)) + return + + check_package_latest_version_set_status(pkg, + RM_API_STATUS_NOT_FOUND, + None, None) + check_latest_count += 1 + print("[%04d/%04d] %s" % (check_latest_count, npkgs, pkg.name)) + + +async def check_package_latest_version(packages): + """ + Fills in the .latest_version field of all Package objects + + This field is a dict and has the following keys: + + - status: one of RM_API_STATUS_ERROR, + RM_API_STATUS_FOUND_BY_DISTRO, RM_API_STATUS_FOUND_BY_PATTERN, + RM_API_STATUS_NOT_FOUND + - version: string containing the latest version known by + release-monitoring.org for this package + - id: string containing the id of the project corresponding to this + package, as known by release-monitoring.org + """ + + for pkg in [p for p in packages if not p.is_actual_package]: + pkg.status['version'] = ("na", "no valid package infra") + + tasks = [] + connector = aiohttp.TCPConnector(limit_per_host=5) + async with aiohttp.ClientSession(connector=connector, trust_env=True) as sess: + packages = [p for p in packages if p.is_actual_package] + for pkg in packages: + tasks.append(asyncio.ensure_future(check_package_latest_version_get(sess, pkg, len(packages)))) + await asyncio.wait(tasks) + + +def check_package_cve_affects(cve, cpe_product_pkgs): + for product in cve.affected_products: + if product not in cpe_product_pkgs: + continue + for pkg in cpe_product_pkgs[product]: + cve_status = cve.affects(pkg.name, pkg.current_version, pkg.ignored_cves, pkg.cpeid) + if cve_status == cve.CVE_AFFECTS: + pkg.cves.append(cve.identifier) + elif cve_status == cve.CVE_UNKNOWN: + pkg.unsure_cves.append(cve.identifier) + + +def check_package_cves(nvd_path, packages): + if not os.path.isdir(nvd_path): + os.makedirs(nvd_path) + + cpe_product_pkgs = defaultdict(list) + for pkg in packages: + if not pkg.is_actual_package: + pkg.status['cve'] = ("na", "N/A") + continue + if not pkg.current_version: + pkg.status['cve'] = ("na", "no version information available") + continue + if pkg.cpeid: + cpe_product = cvecheck.cpe_product(pkg.cpeid) + cpe_product_pkgs[cpe_product].append(pkg) + else: + cpe_product_pkgs[pkg.name].append(pkg) + + for cve in cvecheck.CVE.read_nvd_dir(nvd_path): + check_package_cve_affects(cve, cpe_product_pkgs) + + for pkg in packages: + if 'cve' not in pkg.status: + if pkg.cves or pkg.unsure_cves: + pkg.status['cve'] = ("error", "affected by CVEs") + else: + pkg.status['cve'] = ("ok", "not affected by CVEs") + + +def calculate_stats(packages): + stats = defaultdict(int) + stats['packages'] = len(packages) + for pkg in packages: + # If packages have multiple infra, take the first one. For the + # vast majority of packages, the target and host infra are the + # same. There are very few packages that use a different infra + # for the host and target variants. + if len(pkg.infras) > 0: + infra = pkg.infras[0][1] + stats["infra-%s" % infra] += 1 + else: + stats["infra-unknown"] += 1 + if pkg.is_status_ok('license'): + stats["license"] += 1 + else: + stats["no-license"] += 1 + if pkg.is_status_ok('license-files'): + stats["license-files"] += 1 + else: + stats["no-license-files"] += 1 + if pkg.is_status_ok('hash'): + stats["hash"] += 1 + else: + stats["no-hash"] += 1 + if pkg.latest_version['status'] == RM_API_STATUS_FOUND_BY_DISTRO: + stats["rmo-mapping"] += 1 + else: + stats["rmo-no-mapping"] += 1 + if not pkg.latest_version['version']: + stats["version-unknown"] += 1 + elif pkg.latest_version['version'] == pkg.current_version: + stats["version-uptodate"] += 1 + else: + stats["version-not-uptodate"] += 1 + stats["patches"] += pkg.patch_count + stats["total-cves"] += len(pkg.cves) + stats["total-unsure-cves"] += len(pkg.unsure_cves) + if len(pkg.cves) != 0: + stats["pkg-cves"] += 1 + if len(pkg.unsure_cves) != 0: + stats["pkg-unsure-cves"] += 1 + if pkg.cpeid: + stats["cpe-id"] += 1 + else: + stats["no-cpe-id"] += 1 + return stats + + +html_header = """ + + + + + + + + + +Statistics of Buildroot packages + + + + + +Results
    + +""" # noqa - tabs and spaces + + +html_footer = """ + + +""" + + +def infra_str(infra_list): + if not infra_list: + return "Unknown" + elif len(infra_list) == 1: + return "%s
    %s" % (infra_list[0][1], infra_list[0][0]) + elif infra_list[0][1] == infra_list[1][1]: + return "%s
    %s + %s" % \ + (infra_list[0][1], infra_list[0][0], infra_list[1][0]) + else: + return "%s (%s)
    %s (%s)" % \ + (infra_list[0][1], infra_list[0][0], + infra_list[1][1], infra_list[1][0]) + + +def boolean_str(b): + if b: + return "Yes" + else: + return "No" + + +def dump_html_pkg(f, pkg): + pkg_css_class = pkg.path.replace("/", "_")[:-3] + f.write(f'
    {pkg.tree}
    \n') + f.write(f'
    {pkg.path}
    \n') + # Patch count + data_field_id = f'patch_count__{pkg_css_class}' + div_class = ["centered patch_count data"] + div_class.append(f'_{pkg_css_class}') + if pkg.patch_count == 0: + div_class.append("nopatches") + elif pkg.patch_count < 5: + div_class.append("somepatches") + else: + div_class.append("lotsofpatches") + f.write(f'
    {str(pkg.patch_count)}
    \n') + + # Infrastructure + data_field_id = f'infrastructure__{pkg_css_class}' + infra = infra_str(pkg.infras) + div_class = ["centered infrastructure data"] + div_class.append(f'_{pkg_css_class}') + if infra == "Unknown": + div_class.append("wrong") + else: + div_class.append("correct") + f.write(f'
    {infra_str(pkg.infras)}
    \n') + + # License + data_field_id = f'license__{pkg_css_class}' + div_class = ["centered license data"] + div_class.append(f'_{pkg_css_class}') + if pkg.is_status_ok('license'): + div_class.append("correct") + else: + div_class.append("wrong") + f.write(f'
    {boolean_str(pkg.is_status_ok("license"))}
    \n') + + # License files + data_field_id = f'license_files__{pkg_css_class}' + div_class = ["centered license_files data"] + div_class.append(f'_{pkg_css_class}') + if pkg.is_status_ok('license-files'): + div_class.append("correct") + else: + div_class.append("wrong") + f.write(f'
    {boolean_str(pkg.is_status_ok("license-files"))}
    \n') + + # Hash + data_field_id = f'hash_file__{pkg_css_class}' + div_class = ["centered hash_file data"] + div_class.append(f'_{pkg_css_class}') + if pkg.is_status_ok('hash'): + div_class.append("correct") + else: + div_class.append("wrong") + f.write(f'
    {boolean_str(pkg.is_status_ok("hash"))}
    \n') + + # Current version + data_field_id = f'current_version__{pkg_css_class}' + current_version = pkg.current_version + f.write(f'
    {current_version}
    \n') + + # Latest version + data_field_id = f'latest_version__{pkg_css_class}' + div_class = ["centered"] + div_class.append(f'_{pkg_css_class}') + div_class.append("latest_version data") + if pkg.latest_version['status'] == RM_API_STATUS_ERROR: + div_class.append("version-error") + if pkg.latest_version['version'] is None: + div_class.append("version-unknown") + elif pkg.latest_version['version'] != pkg.current_version: + div_class.append("version-needs-update") + else: + div_class.append("version-good") + + if pkg.latest_version['status'] == RM_API_STATUS_ERROR: + latest_version_text = "Error" + elif pkg.latest_version['status'] == RM_API_STATUS_NOT_FOUND: + latest_version_text = "Not found" + else: + if pkg.latest_version['version'] is None: + latest_version_text = "Found, but no version" + else: + latest_version_text = f"""""" \ + f"""{str(pkg.latest_version['version'])}""" + + latest_version_text += "
    " + + if pkg.latest_version['status'] == RM_API_STATUS_FOUND_BY_DISTRO: + latest_version_text += 'found by distro' + else: + latest_version_text += "found by guess" + + f.write(f'
    {latest_version_text}
    \n') + + # Warnings + data_field_id = f'warnings__{pkg_css_class}' + div_class = ["centered warnings data"] + div_class.append(f'_{pkg_css_class}') + if pkg.warnings == 0: + div_class.append("correct") + elif pkg.warnings < 5: + div_class.append("somewarnings") + else: + div_class.append("wrong") + f.write(f'
    {pkg.warnings}
    \n') + + # URL status + data_field_id = f'upstream_url__{pkg_css_class}' + div_class = ["centered upstream_url data"] + div_class.append(f'_{pkg_css_class}') + url_str = pkg.status['url'][1] + if pkg.status['url'][0] in ("error", "warning"): + div_class.append("missing_url") + if pkg.status['url'][0] == "error": + div_class.append("invalid_url") + url_str = f"""{pkg.status['url'][1]}""" + else: + div_class.append("good_url") + url_str = f'Link' + f.write(f'
    {url_str}
    \n') + + # CVEs + data_field_id = f'cves__{pkg_css_class}' + div_class = ["centered cves data"] + div_class.append(f'_{pkg_css_class}') + if len(pkg.cves) > 10: + div_class.append("collapse") + if pkg.is_status_ok("cve"): + div_class.append("cve-ok") + elif pkg.is_status_error("cve"): + div_class.append("cve-nok") + elif pkg.is_status_na("cve") and not pkg.is_actual_package: + div_class.append("cve-ok") + else: + div_class.append("cve-unknown") + f.write(f'
    \n') + if len(pkg.cves) > 10: + cve_total = len(pkg.cves) + 1 + f.write(f'
    see all ({cve_total}) ▾
    \n') + if pkg.is_status_error("cve"): + for cve in cvecheck.CVE.sort_id(pkg.cves): + f.write(f' {cve}
    \n') + for cve in cvecheck.CVE.sort_id(pkg.unsure_cves): + f.write(f' {cve} (unsure)
    \n') + elif pkg.is_status_na("cve"): + f.write(f""" {pkg.status['cve'][1]}""") + else: + f.write(" N/A\n") + f.write("
    \n") + + # CVEs Ignored + data_field_id = f'ignored_cves__{pkg_css_class}' + div_class = ["centered data ignored_cves"] + div_class.append(f'_{pkg_css_class}') + if pkg.ignored_cves: + div_class.append("cve_ignored") + f.write(f'
    \n') + for ignored_cve in pkg.ignored_cves: + f.write(f' {ignored_cve}
    \n') + f.write("
    \n") + + # CPE ID + data_field_id = f'cpe_id__{pkg_css_class}' + div_class = ["left cpe_id data"] + div_class.append(f'_{pkg_css_class}') + if pkg.is_status_ok("cpe"): + div_class.append("cpe-ok") + elif pkg.is_status_error("cpe"): + div_class.append("cpe-nok") + elif pkg.is_status_na("cpe") and not pkg.is_actual_package: + div_class.append("cpe-ok") + else: + div_class.append("cpe-unknown") + f.write(f'
    \n') + if pkg.cpeid: + cpeid_begin = ":".join(pkg.cpeid.split(":")[0:4]) + ":" + cpeid_formatted = pkg.cpeid.replace(cpeid_begin, cpeid_begin + "") + f.write(" %s\n" % cpeid_formatted) + if not pkg.is_status_ok("cpe"): + if pkg.is_actual_package and pkg.current_version: + if pkg.cpeid: + f.write(f"""
    {pkg.status['cpe'][1]} (Search)\n""") + else: + f.write(f""" {pkg.status['cpe'][1]} (Search)\n""") + else: + f.write(" %s\n" % pkg.status['cpe'][1]) + + f.write("
    \n") + + +def dump_html_all_pkgs(f, packages): + f.write(""" +
    +
    Tree
    +
    Package
    +
    Patch count
    +
    Infrastructure
    +
    License
    +
    License files
    +
    Hash file
    +
    Current version
    +
    Latest version
    +
    Warnings
    +
    Upstream URL
    +
    CVEs
    +
    CVEs Ignored
    +
    CPE ID
    +""") + for pkg in sorted(packages): + dump_html_pkg(f, pkg) + f.write("
    ") + + +def dump_html_stats(f, stats): + f.write('\n') + f.write('
    \n') + infras = [infra[6:] for infra in stats.keys() if infra.startswith("infra-")] + for infra in infras: + f.write('
    Packages using the %s infrastructure
    %s
    \n' % + (infra, stats["infra-%s" % infra])) + f.write('
    Packages having license information
    %s
    \n' % + stats["license"]) + f.write('
    Packages not having license information
    %s
    \n' % + stats["no-license"]) + f.write('
    Packages having license files information
    %s
    \n' % + stats["license-files"]) + f.write('
    Packages not having license files information
    %s
    \n' % + stats["no-license-files"]) + f.write('
    Packages having a hash file
    %s
    \n' % + stats["hash"]) + f.write('
    Packages not having a hash file
    %s
    \n' % + stats["no-hash"]) + f.write('
    Total number of patches
    %s
    \n' % + stats["patches"]) + f.write('
    Packages having a mapping on release-monitoring.org
    %s
    \n' % + stats["rmo-mapping"]) + f.write('
    Packages lacking a mapping on release-monitoring.org
    %s
    \n' % + stats["rmo-no-mapping"]) + f.write('
    Packages that are up-to-date
    %s
    \n' % + stats["version-uptodate"]) + f.write('
    Packages that are not up-to-date
    %s
    \n' % + stats["version-not-uptodate"]) + f.write('
    Packages with no known upstream version
    %s
    \n' % + stats["version-unknown"]) + f.write('
    Packages affected by CVEs
    %s
    \n' % + stats["pkg-cves"]) + f.write('
    Total number of CVEs affecting all packages
    %s
    \n' % + stats["total-cves"]) + f.write('
    Packages affected by unsure CVEs
    %s
    \n' % + stats["pkg-unsure-cves"]) + f.write('
    Total number of unsure CVEs affecting all packages
    %s
    \n' % + stats["total-unsure-cves"]) + f.write('
    Packages with CPE ID
    %s
    \n' % + stats["cpe-id"]) + f.write('
    Packages without CPE ID
    %s
    \n' % + stats["no-cpe-id"]) + f.write('
    \n') + + +def dump_html_gen_info(f, date, commit): + # Updated on Mon Feb 19 08:12:08 CET 2018, Git commit aa77030b8f5e41f1c53eb1c1ad664b8c814ba032 + f.write("

    Updated on %s, git commit %s

    \n" % (str(date), commit)) + + +def dump_html(packages, stats, date, commit, output): + with open(output, 'w') as f: + f.write(html_header) + dump_html_all_pkgs(f, packages) + dump_html_stats(f, stats) + dump_html_gen_info(f, date, commit) + f.write(html_footer) + + +def dump_json(packages, defconfigs, stats, date, commit, output): + # Format packages as a dictionnary instead of a list + # Exclude local field that does not contains real date + excluded_fields = ['url_worker', 'name', 'tree_path'] + pkgs = { + pkg.name: { + k: v + for k, v in pkg.__dict__.items() + if k not in excluded_fields + } for pkg in packages + } + defconfigs = { + d.name: { + k: v + for k, v in d.__dict__.items() + } for d in defconfigs + } + # Aggregate infrastructures into a single dict entry + statistics = { + k: v + for k, v in stats.items() + if not k.startswith('infra-') + } + statistics['infra'] = {k[6:]: v for k, v in stats.items() if k.startswith('infra-')} + # The actual structure to dump, add commit and date to it + final = {'packages': pkgs, + 'stats': statistics, + 'defconfigs': defconfigs, + 'package_status_checks': Package.status_checks, + 'commit': commit, + 'date': str(date)} + + with open(output, 'w') as f: + json.dump(final, f, indent=2, separators=(',', ': ')) + f.write('\n') + + +def resolvepath(path): + return os.path.abspath(os.path.expanduser(path)) + + +def list_str(values): + return values.split(',') + + +def parse_args(): + parser = argparse.ArgumentParser() + output = parser.add_argument_group('output', 'Output file(s)') + output.add_argument('--html', dest='html', type=resolvepath, + help='HTML output file') + output.add_argument('--json', dest='json', type=resolvepath, + help='JSON output file') + packages = parser.add_mutually_exclusive_group() + packages.add_argument('-c', dest='configpackages', action='store_true', + help='Apply to packages enabled in current configuration') + packages.add_argument('-n', dest='npackages', type=int, action='store', + help='Number of packages') + packages.add_argument('-p', dest='packages', action='store', + help='List of packages (comma separated)') + parser.add_argument('--nvd-path', dest='nvd_path', + help='Path to the local NVD database', type=resolvepath) + parser.add_argument('--disable', type=list_str, + help='Features to disable, comma-separated (cve, upstream, url, warning)', + default=[]) + args = parser.parse_args() + if not args.html and not args.json: + parser.error('at least one of --html or --json (or both) is required') + return args + + +def __main__(): + global cvecheck + + args = parse_args() + + if args.nvd_path: + import cve as cvecheck + + show_info_js = None + if args.packages: + package_list = args.packages.split(",") + elif args.configpackages: + show_info_js = get_show_info_js() + package_list = set([v["name"] for v in show_info_js.values() if 'name' in v]) + else: + package_list = None + date = datetime.datetime.now(datetime.timezone.utc) + commit = subprocess.check_output(['git', '-C', brpath, + 'rev-parse', + 'HEAD']).splitlines()[0].decode() + print("Build package list ...") + all_trees = get_trees() + packages = get_pkglist(all_trees, args.npackages, package_list) + print("Getting developers ...") + developers = parse_developers() + print("Build defconfig list ...") + defconfigs = get_defconfig_list() + for d in defconfigs: + d.set_developers(developers) + print("Getting package make info ...") + package_init_make_info() + print("Getting package details ...") + for pkg in packages: + pkg.set_infra(show_info_js) + pkg.set_license() + pkg.set_hash_info() + pkg.set_patch_count() + if "warnings" not in args.disable: + pkg.set_check_package_warnings() + pkg.set_current_version() + pkg.set_cpeid() + pkg.set_url() + pkg.set_ignored_cves() + pkg.set_developers(developers) + if "url" not in args.disable: + print("Checking URL status") + loop = asyncio.get_event_loop() + loop.run_until_complete(check_package_urls(packages)) + if "upstream" not in args.disable: + print("Getting latest versions ...") + loop = asyncio.get_event_loop() + loop.run_until_complete(check_package_latest_version(packages)) + if "cve" not in args.disable and args.nvd_path: + print("Checking packages CVEs") + check_package_cves(args.nvd_path, packages) + print("Calculate stats") + stats = calculate_stats(packages) + if args.html: + print("Write HTML") + dump_html(packages, stats, date, commit, args.html) + if args.json: + print("Write JSON") + dump_json(packages, defconfigs, stats, date, commit, args.json) + + +__main__() diff --git a/support/scripts/pyinstaller.py b/support/scripts/pyinstaller.py new file mode 100644 index 00000000..9e689eea --- /dev/null +++ b/support/scripts/pyinstaller.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python3 + +import argparse +import glob +import pathlib + +from importlib.machinery import PathFinder +from importlib.metadata import DistributionFinder + +from installer import install +from installer._core import _process_WHEEL_file +from installer.destinations import SchemeDictionaryDestination +from installer.sources import WheelFile + + +def clean(source, destination): + scheme = _process_WHEEL_file(source) + scheme_path = destination.scheme_dict[scheme] + context = DistributionFinder.Context( + name=source.distribution, + path=[scheme_path], + ) + for path in PathFinder.find_distributions(context=context): + # path.files is either an iterable, or None + if path.files is None: + continue + for file in path.files: + file_path = pathlib.Path(file.locate()) + if file_path.exists(): + file_path.unlink() + + +def main(): + """Entry point for CLI.""" + ap = argparse.ArgumentParser("python pyinstaller.py") + ap.add_argument("wheel_file", help="Path to a .whl file to install") + + ap.add_argument( + "--interpreter", required=True, help="Interpreter path to be used in scripts" + ) + ap.add_argument( + "--script-kind", + required=True, + choices=["posix", "win-ia32", "win-amd64", "win-arm", "win-arm64"], + help="Kind of launcher to create for each script", + ) + + dest_args = ap.add_argument_group("Destination directories") + dest_args.add_argument( + "--purelib", + required=True, + help="Directory for platform-independent Python modules", + ) + dest_args.add_argument( + "--platlib", + help="Directory for platform-dependent Python modules (same as purelib " + "if not specified)", + ) + dest_args.add_argument( + "--headers", required=True, help="Directory for C header files" + ) + dest_args.add_argument( + "--scripts", required=True, help="Directory for executable scripts" + ) + dest_args.add_argument( + "--data", required=True, help="Directory for external data files" + ) + args = ap.parse_args() + + destination = SchemeDictionaryDestination( + { + "purelib": args.purelib, + "platlib": args.platlib if args.platlib is not None else args.purelib, + "headers": args.headers, + "scripts": args.scripts, + "data": args.data, + }, + interpreter=args.interpreter, + script_kind=args.script_kind, + ) + + with WheelFile.open(glob.glob(args.wheel_file)[0]) as source: + clean(source, destination) + install( + source=source, + destination=destination, + additional_metadata={}, + ) + + +if __name__ == "__main__": + main() diff --git a/support/scripts/setlocalversion b/support/scripts/setlocalversion new file mode 100755 index 00000000..d492f2db --- /dev/null +++ b/support/scripts/setlocalversion @@ -0,0 +1,93 @@ +#!/bin/sh +# +# This scripts adds local version information from the version +# control systems git, mercurial (hg) and subversion (svn). +# +# If something goes wrong, send a mail the kernel build mailinglist +# (see MAINTAINERS) and CC Nico Schottelius +# . +# +# + +usage() { + echo "Usage: $0 [srctree]" >&2 + exit 1 +} + +cd "${1:-.}" || usage + +# Check for git and a git repo. +if head=`git rev-parse --verify --short HEAD 2>/dev/null`; then + + atag="`git describe 2>/dev/null`" + + # Show -g if we have no tag, or just the tag + # otherwise. + if [ -z "${atag}" ] ; then + printf "%s%s" -g ${head} + else + printf ${atag} + fi + + # Is this git on svn? + if git config --get svn-remote.svn.url >/dev/null; then + printf -- '-svn%s' "`git svn find-rev $head`" + fi + + # Update index only on r/w media + [ -w . ] && git update-index --refresh --unmerged > /dev/null + + # Check for uncommitted changes + if git diff-index --name-only HEAD | grep -v "^scripts/package" \ + | read dummy; then + printf '%s' -dirty + fi + + # All done with git + exit +fi + +# Check for mercurial and a mercurial repo. +# In the git case, 'git describe' will show the latest tag, and unless we are +# exactly on that tag, the number of commits since then, and last commit id. +# Mimic something similar in the Mercurial case. +if hgid=`HGRCPATH= hg id --id --tags 2>/dev/null`; then + tag=`printf '%s' "$hgid" | cut -d' ' -f2 --only-delimited` + + # Do we have an untagged version? + if [ -z "$tag" -o "$tag" = tip ]; then + # current revision is not tagged, determine latest tag + latesttag=`HGRCPATH= hg log -r. -T '{latesttag}' 2>/dev/null` + # In case there is more than one tag on the latest tagged commit, + # 'latesttag' will separate them by colon (:). We'll retain this. + # In case there is no tag at all, 'null' will be returned. + if [ "$latesttag" = "null" ]; then + latesttag='' + fi + + # add the commit id + id=`printf '%s' "$hgid" | sed 's/[+ ].*//'` + printf '%s%s%s' "${latesttag}" -hg "$id" + else + # current revision is tagged, just print the tag + printf ${tag} + fi + + # Are there uncommitted changes? + # These are represented by + after the changeset id. + case "$hgid" in + *+|*+\ *) printf '%s' -dirty ;; + esac + + # All done with mercurial + exit +fi + +# Check for svn and a svn repo. +if rev=`LC_ALL=C svn info 2>/dev/null | grep '^Last Changed Rev'`; then + rev=`echo $rev | awk '{print $NF}'` + printf -- '-svn%s' "$rev" + + # All done with svn + exit +fi diff --git a/support/scripts/size-stats b/support/scripts/size-stats new file mode 100755 index 00000000..79c0dc57 --- /dev/null +++ b/support/scripts/size-stats @@ -0,0 +1,311 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2014 by Thomas Petazzoni + +# 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 + +import sys +import os +import os.path +import argparse +import csv +import collections +import math + +try: + import matplotlib + matplotlib.use('Agg') + import matplotlib.font_manager as fm + import matplotlib.pyplot as plt +except ImportError: + sys.stderr.write("You need python-matplotlib to generate the size graph\n") + exit(1) + + +class Config: + biggest_first = False + iec = False + size_limit = 0.01 + colors = ['#e60004', '#f28e00', '#ffed00', '#940084', + '#2e1d86', '#0068b5', '#009836', '#97c000'] + + +# +# This function adds a new file to 'filesdict', after checking its +# size. The 'filesdict' contain the relative path of the file as the +# key, and as the value a tuple containing the name of the package to +# which the file belongs and the size of the file. +# +# filesdict: the dict to which the file is added +# relpath: relative path of the file +# fullpath: absolute path to the file +# pkg: package to which the file belongs +# +def add_file(filesdict, relpath, abspath, pkg): + if relpath.endswith(".py"): + # also check for compiled .pyc file + add_file(filesdict, relpath + "c", abspath + "c", pkg) + if not os.path.exists(abspath): + return + if os.path.islink(abspath): + return + sz = os.stat(abspath).st_size + filesdict[relpath] = (pkg, sz) + + +# +# This function returns a dict where each key is the path of a file in +# the root filesystem, and the value is a tuple containing two +# elements: the name of the package to which this file belongs and the +# size of the file. +# +# builddir: path to the Buildroot output directory +# +def build_package_dict(builddir): + filesdict = {} + with open(os.path.join(builddir, "build", "packages-file-list.txt")) as f: + for line in f.readlines(): + pkg, fpath = line.split(",", 1) + # remove the initial './' in each file path + fpath = fpath.strip()[2:] + fullpath = os.path.join(builddir, "target", fpath) + add_file(filesdict, fpath, fullpath, pkg) + return filesdict + + +# +# This function builds a dictionary that contains the name of a +# package as key, and the size of the files installed by this package +# as the value. +# +# filesdict: dictionary with the name of the files as key, and as +# value a tuple containing the name of the package to which the files +# belongs, and the size of the file. As returned by +# build_package_dict. +# +# builddir: path to the Buildroot output directory +# +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 frelpath not in filesdict: + print("WARNING: %s is not part of any package" % frelpath) + pkg = "unknown" + else: + pkg = filesdict[frelpath][0] + + pkgsize[pkg] += st.st_size + + return pkgsize + + +# +# Given a dict returned by build_package_size(), this function +# generates a pie chart of the size installed by each package. +# +# pkgsize: dictionary with the name of the package as a key, and the +# size as the value, as returned by build_package_size. +# +# outputf: output file for the graph +# +def draw_graph(pkgsize, outputf): + def size2string(sz): + if Config.iec: + divider = 1024.0 + prefixes = ['', 'Ki', 'Mi', 'Gi', 'Ti'] + else: + divider = 1000.0 + prefixes = ['', 'k', 'M', 'G', 'T'] + while sz > divider and len(prefixes) > 1: + prefixes = prefixes[1:] + sz = sz/divider + # precision is made so that there are always at least three meaningful + # digits displayed (e.g. '3.14' and '10.4', not just '3' and '10') + precision = int(2-math.floor(math.log10(sz))) if sz < 1000 else 0 + return '{:.{prec}f} {}B'.format(sz, prefixes[0], prec=precision) + + total = sum(pkgsize.values()) + labels = [] + values = [] + other_value = 0 + unknown_value = 0 + for (p, sz) in sorted(pkgsize.items(), key=lambda x: x[1], + reverse=Config.biggest_first): + if sz < (total * Config.size_limit): + other_value += sz + elif p == "unknown": + unknown_value = sz + else: + labels.append("%s (%s)" % (p, size2string(sz))) + values.append(sz) + if unknown_value != 0: + labels.append("Unknown (%s)" % (size2string(unknown_value))) + values.append(unknown_value) + if other_value != 0: + labels.append("Other (%s)" % (size2string(other_value))) + values.append(other_value) + + plt.figure() + patches, texts, autotexts = plt.pie(values, labels=labels, + autopct='%1.1f%%', shadow=True, + colors=Config.colors) + # Reduce text size + proptease = fm.FontProperties() + proptease.set_size('xx-small') + plt.setp(autotexts, fontproperties=proptease) + plt.setp(texts, fontproperties=proptease) + + plt.suptitle("Filesystem size per package", fontsize=18, y=.97) + plt.title("Total filesystem size: %s" % (size2string(total)), fontsize=10, + y=.96) + plt.savefig(outputf) + + +# +# Generate a CSV file with statistics about the size of each file, its +# size contribution to the package and to the overall system. +# +# filesdict: dictionary with the name of the files as key, and as +# value a tuple containing the name of the package to which the files +# belongs, and the size of the file. As returned by +# build_package_dict. +# +# pkgsize: dictionary with the name of the package as a key, and the +# size as the value, as returned by build_package_size. +# +# outputf: output CSV file +# +def gen_files_csv(filesdict, pkgsizes, outputf): + total = 0 + for (p, sz) in pkgsizes.items(): + total += sz + with open(outputf, 'w') as csvfile: + wr = csv.writer(csvfile, delimiter=',', quoting=csv.QUOTE_MINIMAL) + wr.writerow(["File name", + "Package name", + "File size", + "Package size", + "File size in package (%)", + "File size in system (%)"]) + for f, (pkgname, filesize) in filesdict.items(): + pkgsize = pkgsizes[pkgname] + + if pkgsize == 0: + percent_pkg = 0 + else: + percent_pkg = float(filesize) / pkgsize * 100 + + percent_total = float(filesize) / total * 100 + + wr.writerow([f, pkgname, filesize, pkgsize, + "%.1f" % percent_pkg, + "%.1f" % percent_total]) + + +# +# Generate a CSV file with statistics about the size of each package, +# and their size contribution to the overall system. +# +# pkgsize: dictionary with the name of the package as a key, and the +# size as the value, as returned by build_package_size. +# +# outputf: output CSV file +# +def gen_packages_csv(pkgsizes, outputf): + total = sum(pkgsizes.values()) + with open(outputf, 'w') as csvfile: + wr = csv.writer(csvfile, delimiter=',', quoting=csv.QUOTE_MINIMAL) + wr.writerow(["Package name", "Package size", + "Package size in system (%)"]) + for (pkg, size) in pkgsizes.items(): + wr.writerow([pkg, size, "%.1f" % (float(size) / total * 100)]) + + +# +# Our special action for --iec, --binary, --si, --decimal +# +class PrefixAction(argparse.Action): + def __init__(self, option_strings, dest, **kwargs): + for key in ["type", "nargs"]: + if key in kwargs: + raise ValueError('"{}" not allowed'.format(key)) + super(PrefixAction, self).__init__(option_strings, dest, nargs=0, + type=bool, **kwargs) + + def __call__(self, parser, namespace, values, option_string=None): + setattr(namespace, self.dest, option_string in ["--iec", "--binary"]) + + +def main(): + parser = argparse.ArgumentParser(description='Draw size statistics graphs') + + parser.add_argument("--builddir", '-i', metavar="BUILDDIR", required=True, + help="Buildroot output directory") + parser.add_argument("--graph", '-g', metavar="GRAPH", + help="Graph output file (.pdf or .png extension)") + parser.add_argument("--file-size-csv", '-f', metavar="FILE_SIZE_CSV", + help="CSV output file with file size statistics") + parser.add_argument("--package-size-csv", '-p', metavar="PKG_SIZE_CSV", + help="CSV output file with package size statistics") + parser.add_argument("--biggest-first", action='store_true', + help="Sort packages in decreasing size order, " + + "rather than in increasing size order") + parser.add_argument("--iec", "--binary", "--si", "--decimal", + action=PrefixAction, + help="Use IEC (binary, powers of 1024) or SI (decimal, " + "powers of 1000, the default) prefixes") + parser.add_argument("--size-limit", "-l", type=float, + help='Under this size ratio, files are accounted to ' + + 'the generic "Other" package. Default: 0.01 (1%%)') + args = parser.parse_args() + + Config.biggest_first = args.biggest_first + Config.iec = args.iec + if args.size_limit is not None: + if args.size_limit < 0.0 or args.size_limit > 1.0: + parser.error("--size-limit must be in [0.0..1.0]") + Config.size_limit = args.size_limit + + # Find out which package installed what files + pkgdict = build_package_dict(args.builddir) + + # Collect the size installed by each package + pkgsize = build_package_size(pkgdict, args.builddir) + + if args.graph: + draw_graph(pkgsize, args.graph) + if args.file_size_csv: + gen_files_csv(pkgdict, pkgsize, args.file_size_csv) + if args.package_size_csv: + gen_packages_csv(pkgsize, args.package_size_csv) + + +if __name__ == "__main__": + main() diff --git a/support/testing/conf/docker-compose-kernel.config b/support/testing/conf/docker-compose-kernel.config new file mode 100644 index 00000000..4d30a578 --- /dev/null +++ b/support/testing/conf/docker-compose-kernel.config @@ -0,0 +1,77 @@ +# CONFIG_SWAP is not set +CONFIG_SYSVIPC=y +# CONFIG_CROSS_MEMORY_ATTACH is not set +CONFIG_HIGH_RES_TIMERS=y +# CONFIG_COMPAT_BRK is not set +# CONFIG_X86_EXTENDED_PLATFORM is not set +CONFIG_IOSF_MBI=y +CONFIG_MCORE2=y +# CONFIG_X86_MCE is not set +# CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS is not set +CONFIG_LEGACY_VSYSCALL_NONE=y +# CONFIG_SUSPEND is not set +# CONFIG_ACPI is not set +CONFIG_CPU_IDLE=y +CONFIG_PCI_MSI=y +# CONFIG_VIRTUALIZATION is not set +# CONFIG_IOSCHED_CFQ is not set +# CONFIG_MQ_IOSCHED_DEADLINE is not set +# CONFIG_MQ_IOSCHED_KYBER is not set +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=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_NF_CONNTRACK_PROCFS is not set +# CONFIG_NF_CT_PROTO_DCCP is not set +# CONFIG_NF_CT_PROTO_SCTP is not set +# CONFIG_NF_CT_PROTO_UDPLITE is not set +CONFIG_IP_VS=y +CONFIG_IP_VS_RR=y +CONFIG_IP_VS_NFCT=y +# CONFIG_BRIDGE_IGMP_SNOOPING is not set +# CONFIG_WIRELESS is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_VIRTIO_BLK=y +CONFIG_NETDEVICES=y +CONFIG_VIRTIO_NET=y +# CONFIG_ETHERNET is not set +# CONFIG_WLAN 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_DEVMEM is not set +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_LPSS is not set +# CONFIG_SERIAL_8250_MID is not set +# CONFIG_HW_RANDOM_INTEL is not set +# CONFIG_HW_RANDOM_AMD is not set +# CONFIG_HW_RANDOM_VIA is not set +CONFIG_HW_RANDOM_VIRTIO=y +# CONFIG_DEVPORT is not set +# CONFIG_HWMON is not set +# CONFIG_USB_SUPPORT is not set +CONFIG_RTC_CLASS=y +CONFIG_VIRTIO_PCI=y +# CONFIG_VIRTIO_PCI_LEGACY is not set +# CONFIG_X86_PLATFORM_DEVICES is not set +# CONFIG_IOMMU_SUPPORT is not set +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +# CONFIG_MISC_FILESYSTEMS is not set +# CONFIG_NETWORK_FILESYSTEMS is not set +CONFIG_SECURITYFS=y +# CONFIG_CRYPTO_ECHAINIV is not set +# CONFIG_CRYPTO_HW is not set +# CONFIG_UNUSED_SYMBOLS is not set +CONFIG_UNWINDER_FRAME_POINTER=y diff --git a/support/testing/conf/docker-compose.yml b/support/testing/conf/docker-compose.yml new file mode 100644 index 00000000..ce89d79b --- /dev/null +++ b/support/testing/conf/docker-compose.yml @@ -0,0 +1,9 @@ +version: '3' +services: + busybox: + image: "busybox:latest" + command: httpd -f -h /www/ + ports: + - "80:80" + volumes: + - "/bin:/www" diff --git a/support/testing/conf/f2fs-kernel-fragment.config b/support/testing/conf/f2fs-kernel-fragment.config new file mode 100644 index 00000000..0fca7e78 --- /dev/null +++ b/support/testing/conf/f2fs-kernel-fragment.config @@ -0,0 +1,5 @@ +CONFIG_F2FS_FS=y +CONFIG_F2FS_STAT_FS=y +CONFIG_F2FS_FS_XATTR=y +CONFIG_F2FS_FS_POSIX_ACL=y +CONFIG_F2FS_FS_SECURITY=y diff --git a/support/testing/conf/grub2-efi.cfg b/support/testing/conf/grub2-efi.cfg new file mode 100644 index 00000000..11c32e88 --- /dev/null +++ b/support/testing/conf/grub2-efi.cfg @@ -0,0 +1,2 @@ +set root=(cd0) +set prefix=/boot/grub diff --git a/support/testing/conf/grub2.cfg b/support/testing/conf/grub2.cfg new file mode 100644 index 00000000..a982d0b7 --- /dev/null +++ b/support/testing/conf/grub2.cfg @@ -0,0 +1,7 @@ +set default="0" +set timeout="1" + +menuentry "Buildroot" { + linux __KERNEL_PATH__ root=/dev/sr0 console=ttyS0,115200 + initrd __INITRD_PATH__ +} diff --git a/support/testing/conf/isolinux.cfg b/support/testing/conf/isolinux.cfg new file mode 100644 index 00000000..ba031a68 --- /dev/null +++ b/support/testing/conf/isolinux.cfg @@ -0,0 +1,5 @@ +default 1 +label 1 + kernel __KERNEL_PATH__ + initrd __INITRD_PATH__ + append root=/dev/sr0 console=ttyS0,115200 diff --git a/support/testing/conf/minimal-x86-qemu-kernel.config b/support/testing/conf/minimal-x86-qemu-kernel.config new file mode 100644 index 00000000..45994f80 --- /dev/null +++ b/support/testing/conf/minimal-x86-qemu-kernel.config @@ -0,0 +1,50 @@ +CONFIG_SYSVIPC=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_SMP=y +# CONFIG_RETPOLINE is not set +CONFIG_HYPERVISOR_GUEST=y +CONFIG_PARAVIRT=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_VIRTIO_BLK=y +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SR=y +CONFIG_SCSI_VIRTIO=y +CONFIG_ATA=y +CONFIG_ATA_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_VIRTIO_NET=y +CONFIG_NE2K_PCI=y +CONFIG_8139CP=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_DRM=y +CONFIG_DRM_BOCHS=y +CONFIG_DRM_QXL=y +CONFIG_DRM_VIRTIO_GPU=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_HDA_INTEL=y +CONFIG_SND_HDA_GENERIC=y +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_STORAGE=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_INPUT=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_EXT4_FS=y +CONFIG_ISO9660_FS=y +CONFIG_ZISOFS=y +CONFIG_JOLIET=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/support/testing/conf/overlayfs-kernel-fragment.config b/support/testing/conf/overlayfs-kernel-fragment.config new file mode 100644 index 00000000..91222389 --- /dev/null +++ b/support/testing/conf/overlayfs-kernel-fragment.config @@ -0,0 +1 @@ +CONFIG_OVERLAY_FS=y diff --git a/support/testing/conf/unittest.cfg b/support/testing/conf/unittest.cfg new file mode 100644 index 00000000..4f516fb8 --- /dev/null +++ b/support/testing/conf/unittest.cfg @@ -0,0 +1,5 @@ +[unittest] +plugins = nose2.plugins.mp + +[multiprocess] +always-on = True diff --git a/support/testing/infra/__init__.py b/support/testing/infra/__init__.py new file mode 100644 index 00000000..1f003f24 --- /dev/null +++ b/support/testing/infra/__init__.py @@ -0,0 +1,127 @@ +import os +import re +import sys +import tempfile +import subprocess +from urllib.request import urlopen +from urllib.error import HTTPError, URLError + +ARTIFACTS_URL = "http://autobuild.buildroot.net/artefacts/" +BASE_DIR = os.path.realpath(os.path.join(os.path.dirname(__file__), "../../..")) + + +def log_file_path(builddir, stage, logtofile=True): + """Return path to log file""" + return "{}-{}.log".format(builddir, stage) if logtofile else None + + +def open_log_file(builddir, stage, logtofile=True): + """ + Open a file for logging and return its handler. + If logtofile is True, returns sys.stdout. Otherwise opens a file + with a suitable name in the build directory. + """ + return open(log_file_path(builddir, stage, logtofile), 'a+') if logtofile else sys.stdout + + +def basepath(relpath=""): + """Return the absolute path for a file or directory relative to the Buildroot top directory.""" + return os.path.join(BASE_DIR, relpath) + + +def filepath(relpath): + return os.path.join(BASE_DIR, "support/testing", relpath) + + +def download(dldir, filename): + finalpath = os.path.join(dldir, filename) + if os.path.exists(finalpath): + return finalpath + + if not os.path.exists(dldir): + os.makedirs(dldir) + + tmpfile = tempfile.mktemp(dir=dldir) + print("Downloading to {}".format(tmpfile)) + + try: + url_fh = urlopen(os.path.join(ARTIFACTS_URL, filename)) + with open(tmpfile, "w+b") as tmpfile_fh: + tmpfile_fh.write(url_fh.read()) + except (HTTPError, URLError) as err: + os.unlink(tmpfile) + raise err + + print("Renaming from {} to {}".format(tmpfile, finalpath)) + os.rename(tmpfile, finalpath) + return finalpath + + +def run_cmd_on_host(builddir, cmd): + """Call subprocess.check_output and return the text output.""" + out = subprocess.check_output(cmd, + stderr=open(os.devnull, "w"), + cwd=builddir, + env={"LANG": "C"}, + universal_newlines=True) + return out + + +def get_elf_arch_tag(builddir, prefix, fpath, tag): + """ + Runs the cross readelf on 'fpath', then extracts the value of tag 'tag'. + Example: + >>> get_elf_arch_tag('output', 'arm-none-linux-gnueabi-', + 'bin/busybox', 'Tag_CPU_arch') + v5TEJ + >>> + """ + cmd = ["host/bin/{}-readelf".format(prefix), + "-A", os.path.join("target", fpath)] + out = run_cmd_on_host(builddir, cmd) + regexp = re.compile(r"^ {}: (.*)$".format(tag)) + for line in out.splitlines(): + m = regexp.match(line) + if not m: + continue + return m.group(1) + return None + + +def get_file_arch(builddir, prefix, fpath): + return get_elf_arch_tag(builddir, prefix, fpath, "Tag_CPU_arch") + + +def get_elf_prog_interpreter(builddir, prefix, fpath): + """ + Runs the cross readelf on 'fpath' to extract the program interpreter + name and returns it. + Example: + >>> get_elf_prog_interpreter('br-tests/TestExternalToolchainLinaroArm', + 'arm-linux-gnueabihf', + 'bin/busybox') + /lib/ld-linux-armhf.so.3 + >>> + """ + cmd = ["host/bin/{}-readelf".format(prefix), + "-l", os.path.join("target", fpath)] + out = run_cmd_on_host(builddir, cmd) + regexp = re.compile(r"^ *\[Requesting program interpreter: (.*)\]$") + for line in out.splitlines(): + m = regexp.match(line) + if not m: + continue + return m.group(1) + return None + + +def img_round_power2(img): + """ + Rounds up the size of an image file to the next power of 2 + """ + sz = os.stat(img).st_size + pow2 = 1 + while pow2 < sz: + pow2 = pow2 << 1 + with open(img, 'ab') as f: + f.truncate(pow2) diff --git a/support/testing/infra/basetest.py b/support/testing/infra/basetest.py new file mode 100644 index 00000000..12d96415 --- /dev/null +++ b/support/testing/infra/basetest.py @@ -0,0 +1,93 @@ +import unittest +import os +import datetime + +from infra.builder import Builder +from infra.emulator import Emulator + +BASIC_TOOLCHAIN_CONFIG = \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_GLIBC_STABLE=y + """ + +MINIMAL_CONFIG = \ + """ + BR2_INIT_NONE=y + BR2_SYSTEM_BIN_SH_NONE=y + # BR2_PACKAGE_BUSYBOX is not set + # BR2_TARGET_ROOTFS_TAR is not set + """ + + +class BRConfigTest(unittest.TestCase): + """Test up to the configure stage.""" + config = None + br2_external = list() + downloaddir = None + outputdir = None + logtofile = True + keepbuilds = False + jlevel = 0 + timeout_multiplier = 1 + + def __init__(self, names): + super(BRConfigTest, self).__init__(names) + self.testname = self.__class__.__name__ + self.builddir = self.outputdir and os.path.join(self.outputdir, self.testname) + self.config += '\nBR2_DL_DIR="{}"\n'.format(self.downloaddir) + self.config += "\nBR2_JLEVEL={}\n".format(self.jlevel) + + def show_msg(self, msg): + print("{} {:40s} {}".format(datetime.datetime.now().strftime("%H:%M:%S"), + self.testname, msg)) + + def setUp(self): + self.show_msg("Starting") + self.b = Builder(self.config, self.builddir, self.logtofile, self.jlevel) + + if not self.keepbuilds: + self.b.delete() + + if not self.b.is_finished(): + self.b.configure(make_extra_opts=["BR2_EXTERNAL={}".format(":".join(self.br2_external))]) + + def tearDown(self): + self.show_msg("Cleaning up") + if self.b and not self.keepbuilds: + self.b.delete() + + +class BRTest(BRConfigTest): + """Test up to the build stage and instantiate an emulator.""" + def __init__(self, names): + super(BRTest, self).__init__(names) + self.emulator = None + + def setUp(self): + super(BRTest, self).setUp() + if not self.b.is_finished(): + self.show_msg("Building") + self.b.build() + self.show_msg("Building done") + + self.emulator = Emulator(self.builddir, self.downloaddir, + self.logtofile, self.timeout_multiplier) + + def tearDown(self): + if self.emulator: + self.emulator.stop() + super(BRTest, self).tearDown() + + # Run the given 'cmd' with a 'timeout' on the target and + # assert that the command succeeded; on error, print the + # faulty command and its output + def assertRunOk(self, cmd, timeout=-1): + out, exit_code = self.emulator.run(cmd, timeout) + self.assertEqual( + exit_code, + 0, + "\nFailed to run: {}\noutput was:\n{}".format(cmd, ' '+'\n '.join(out)) + ) diff --git a/support/testing/infra/builder.py b/support/testing/infra/builder.py new file mode 100644 index 00000000..295bc7b8 --- /dev/null +++ b/support/testing/infra/builder.py @@ -0,0 +1,117 @@ +import os +import shutil +import subprocess + +import infra + + +class Builder(object): + def __init__(self, config, builddir, logtofile, jlevel=None): + self.config = '\n'.join([line.lstrip() for line in + config.splitlines()]) + '\n' + self.builddir = builddir + self.logfile = infra.open_log_file(builddir, "build", logtofile) + self.jlevel = jlevel + + def is_defconfig_valid(self, configfile, defconfig): + """Check if the .config is contains all lines present in the defconfig.""" + with open(configfile) as configf: + configlines = configf.readlines() + + defconfiglines = defconfig.split("\n") + + # Check that all the defconfig lines are still present + for defconfigline in defconfiglines: + if defconfigline + "\n" not in configlines: + self.logfile.write("WARN: defconfig can't be used\n") + self.logfile.write(" Missing: %s\n" % defconfigline.strip()) + self.logfile.flush() + return False + + return True + + def configure(self, make_extra_opts=[], make_extra_env={}): + """Configure the build. + + make_extra_opts: a list of arguments to be passed to the make + command. + e.g. make_extra_opts=["BR2_EXTERNAL=/path"] + + make_extra_env: a dict of variables to be appended (or replaced) + in the environment that calls make. + e.g. make_extra_env={"BR2_DL_DIR": "/path"} + """ + if not os.path.isdir(self.builddir): + os.makedirs(self.builddir) + + config_file = os.path.join(self.builddir, ".config") + with open(config_file, "w+") as cf: + cf.write(self.config) + # dump the defconfig to the logfile for easy debugging + self.logfile.write("> start defconfig\n" + self.config + + "> end defconfig\n") + self.logfile.flush() + + env = { + "PATH": os.environ["PATH"], + "HOME": os.environ["HOME"] + } + env.update(make_extra_env) + + cmd = ["make", + "O={}".format(self.builddir)] + cmd += make_extra_opts + cmd += ["olddefconfig"] + + ret = subprocess.call(cmd, stdout=self.logfile, stderr=self.logfile, + cwd=infra.basepath(), env=env) + if ret != 0: + raise SystemError("Cannot olddefconfig") + + if not self.is_defconfig_valid(config_file, self.config): + raise SystemError("The defconfig is not valid") + + def build(self, make_extra_opts=[], make_extra_env={}): + """Perform the build. + + make_extra_opts: a list of arguments to be passed to the make + command. It can include a make target. + e.g. make_extra_opts=["foo-source"] + + make_extra_env: a dict of variables to be appended (or replaced) + in the environment that calls make. + e.g. make_extra_env={"BR2_DL_DIR": "/path"} + """ + env = { + "PATH": os.environ["PATH"], + "HOME": os.environ["HOME"] + } + + if "http_proxy" in os.environ: + self.logfile.write("Using system proxy: " + + os.environ["http_proxy"] + "\n") + env['http_proxy'] = os.environ["http_proxy"] + env['https_proxy'] = os.environ["http_proxy"] + env.update(make_extra_env) + + cmd = ["make", "-C", self.builddir] + if "BR2_PER_PACKAGE_DIRECTORIES=y" in self.config.splitlines() and self.jlevel: + cmd.append(f"-j{self.jlevel}") + cmd += make_extra_opts + + ret = subprocess.call(cmd, stdout=self.logfile, stderr=self.logfile, + env=env) + if ret != 0: + raise SystemError("Build failed") + + open(self.stamp_path(), 'a').close() + + def stamp_path(self): + return os.path.join(self.builddir, "build-done") + + def is_finished(self): + return os.path.exists(self.stamp_path()) + + def delete(self): + if os.path.exists(self.builddir): + shutil.rmtree(self.builddir) diff --git a/support/testing/infra/emulator.py b/support/testing/infra/emulator.py new file mode 100644 index 00000000..5318577c --- /dev/null +++ b/support/testing/infra/emulator.py @@ -0,0 +1,177 @@ +# SPDX-License-Identifier: GPL-2.0 +# SPDX-License-Identifier: ISC + +import os + +import pexpect +import pexpect.replwrap + +import infra + +BR_PROMPT = '[BRTEST# ' +BR_CONTINUATION_PROMPT = '[BRTEST+ ' + + +def _repl_sh_child(child, orig_prompt, extra_init_cmd): + """Wrap the shell prompt to handle command output + Based on pexpect.replwrap._repl_sh() (ISC licensed) + https://github.com/pexpect/pexpect/blob/aa989594e1e413f45c18b26ded1783f7d5990fe5/pexpect/replwrap.py#L115 + """ + + # If the user runs 'env', the value of PS1 will be in the output. To avoid + # replwrap seeing that as the next prompt, we'll embed the marker characters + # for invisible characters in the prompt; these show up when inspecting the + # environment variable, but not when bash displays the prompt. + non_printable_insert = '\\[\\]' + ps1 = BR_PROMPT[:5] + non_printable_insert + BR_PROMPT[5:] + ps2 = (BR_CONTINUATION_PROMPT[:5] + non_printable_insert + + BR_CONTINUATION_PROMPT[5:]) + prompt_change = "PS1='{0}' PS2='{1}' PROMPT_COMMAND=''".format(ps1, ps2) + # Note: this will run various commands, each with the default timeout defined + # when qemu was spawned. + return pexpect.replwrap.REPLWrapper( + child, + orig_prompt, + prompt_change, + new_prompt=BR_PROMPT, + continuation_prompt=BR_CONTINUATION_PROMPT, + extra_init_cmd=extra_init_cmd + ) + + +class Emulator(object): + + def __init__(self, builddir, downloaddir, logtofile, timeout_multiplier): + self.qemu = None + self.repl = None + self.downloaddir = downloaddir + self.logfile = infra.open_log_file(builddir, "run", logtofile) + # We use elastic runners on the cloud to runs our tests. Those runners + # can take a long time to run the emulator. Use a timeout multiplier + # when running the tests to avoid sporadic failures. + self.timeout_multiplier = timeout_multiplier + + # Start Qemu to boot the system + # + # arch: Qemu architecture to use + # + # kernel: path to the kernel image, or the special string + # 'builtin'. 'builtin' means a pre-built kernel image will be + # downloaded from ARTIFACTS_URL and suitable options are + # automatically passed to qemu and added to the kernel cmdline. So + # far only armv5, armv7 and i386 builtin kernels are available. + # If None, then no kernel is used, and we assume a bootable device + # will be specified. + # + # kernel_cmdline: array of kernel arguments to pass to Qemu -append option + # + # options: array of command line options to pass to Qemu + # + def boot(self, arch, kernel=None, kernel_cmdline=None, options=None): + if arch in ["armv7", "armv5"]: + qemu_arch = "arm" + else: + qemu_arch = arch + + qemu_cmd = ["qemu-system-{}".format(qemu_arch), + "-serial", "stdio", + "-display", "none", + "-m", "256"] + + if options: + qemu_cmd += options + + if kernel_cmdline is None: + kernel_cmdline = [] + + if kernel: + if kernel == "builtin": + if arch in ["armv7", "armv5"]: + kernel_cmdline.append("console=ttyAMA0") + + if arch == "armv7": + kernel = infra.download(self.downloaddir, + "kernel-vexpress-5.10.202") + dtb = infra.download(self.downloaddir, + "vexpress-v2p-ca9-5.10.202.dtb") + qemu_cmd += ["-dtb", dtb] + qemu_cmd += ["-M", "vexpress-a9"] + elif arch == "armv5": + kernel = infra.download(self.downloaddir, + "kernel-versatile-5.10.202") + dtb = infra.download(self.downloaddir, + "versatile-pb-5.10.202.dtb") + qemu_cmd += ["-dtb", dtb] + qemu_cmd += ["-M", "versatilepb"] + qemu_cmd += ["-device", "virtio-rng-pci"] + + qemu_cmd += ["-kernel", kernel] + + if kernel_cmdline: + qemu_cmd += ["-append", " ".join(kernel_cmdline)] + + self.logfile.write(f"> host cpu count: {os.cpu_count()}\n") + ldavg = os.getloadavg() + ldavg_str = f"{ldavg[0]:.2f}, {ldavg[1]:.2f}, {ldavg[2]:.2f}" + self.logfile.write(f"> host loadavg: {ldavg_str}\n") + self.logfile.write(f"> timeout multiplier: {self.timeout_multiplier}\n") + self.logfile.write("> starting qemu with '%s'\n" % " ".join(qemu_cmd)) + self.qemu = pexpect.spawn(qemu_cmd[0], qemu_cmd[1:], + timeout=5 * self.timeout_multiplier, + encoding='utf-8', + codec_errors='replace', + env={"QEMU_AUDIO_DRV": "none"}) + # We want only stdout into the log to avoid double echo + self.qemu.logfile_read = self.logfile + + # Wait for the login prompt to appear, and then login as root with + # the provided password, or no password if not specified. + def login(self, password=None, timeout=60): + # The login prompt can take some time to appear when running multiple + # instances in parallel, so set the timeout to a large value + index = self.qemu.expect(["buildroot login:", pexpect.TIMEOUT], + timeout=timeout * self.timeout_multiplier) + if index != 0: + self.logfile.write("==> System does not boot") + raise SystemError("System does not boot") + + self.qemu.sendline("root") + if password: + self.qemu.expect("Password:") + self.qemu.sendline(password) + + self.connect_shell() + + def connect_shell(self): + extra_init_cmd = " && ".join([ + 'export PAGER=cat', + 'dmesg -n 1', + # Prevent the shell from wrapping the commands at 80 columns. + 'stty columns 29999', + # Fix the prompt of any subshells that get run + 'printf "%s\n" "PS1=\'$PS1\'" "PS2=\'$PS2\'" "PROMPT_COMMAND=\'\'" >>/etc/profile' + ]) + self.repl = _repl_sh_child(self.qemu, '# ', extra_init_cmd) + if not self.repl: + raise SystemError("Cannot initialize REPL prompt") + + # Run the given 'cmd' with a 'timeout' on the target + # return a tuple (output, exit_code) + def run(self, cmd, timeout=-1): + if timeout != -1: + timeout *= self.timeout_multiplier + output = self.repl.run_command(cmd, timeout=timeout) + # Remove double carriage return from qemu stdout so str.splitlines() + # works as expected. + output = output.replace("\r\r", "\r").splitlines()[1:] + + exit_code = self.repl.run_command("echo $?") + exit_code = self.qemu.before.splitlines()[2] + exit_code = int(exit_code) + + return output, exit_code + + def stop(self): + if self.qemu is None: + return + self.qemu.terminate(force=True) diff --git a/support/testing/run-tests b/support/testing/run-tests new file mode 100755 index 00000000..485811b7 --- /dev/null +++ b/support/testing/run-tests @@ -0,0 +1,135 @@ +#!/usr/bin/env python3 +import argparse +import multiprocessing +import os +import sys + +import nose2 + +from infra.basetest import BRConfigTest + +import infra + + +def main(): + parser = argparse.ArgumentParser(description='Run Buildroot tests') + parser.add_argument('testname', nargs='*', + help='list of test cases to execute') + parser.add_argument('-l', '--list', action='store_true', + help='list of available test cases') + parser.add_argument('-a', '--all', action='store_true', + help='execute all test cases') + parser.add_argument('-s', '--stdout', action='store_true', + help='log everything to stdout') + parser.add_argument('-o', '--output', + help='output directory') + parser.add_argument('-d', '--download', + help='download directory') + parser.add_argument('-p', '--prepare-only', action='store_true', + help='download emulator builtin binaries') + parser.add_argument('-k', '--keep', + help='keep build directories', + action='store_true') + parser.add_argument('-t', '--testcases', type=int, default=1, + help='number of testcases to run simultaneously') + parser.add_argument('-j', '--jlevel', type=int, + help='BR2_JLEVEL to use for each testcase') + parser.add_argument('--timeout-multiplier', type=int, default=1, + help='increase timeouts (useful for slow machines)') + + args = parser.parse_args() + + script_path = os.path.realpath(__file__) + test_dir = os.path.dirname(script_path) + + if args.stdout: + BRConfigTest.logtofile = False + + if args.list: + print("List of tests") + nose2.discover(argv=[script_path, + "-s", test_dir, + "-v", + "--collect-only"], + plugins=["nose2.plugins.collect"]) + return 0 + + if args.download is None: + args.download = os.getenv("BR2_DL_DIR") + if args.download is None: + print("Missing download directory, please use -d/--download") + print("") + parser.print_help() + return 1 + + BRConfigTest.downloaddir = os.path.abspath(args.download) + + if args.prepare_only: + emulator_builtin_binaries = ["kernel-vexpress-5.10.202", + "vexpress-v2p-ca9-5.10.202.dtb", + "kernel-versatile-5.10.202", + "versatile-pb-5.10.202.dtb"] + print("Downloading emulator builtin binaries") + for binary in emulator_builtin_binaries: + infra.download(BRConfigTest.downloaddir, binary) + return 0 + + if args.output is None: + print("Missing output directory, please use -o/--output") + print("") + parser.print_help() + return 1 + + if not os.path.exists(args.output): + os.mkdir(args.output) + + BRConfigTest.outputdir = os.path.abspath(args.output) + + if args.all is False and not args.testname: + print("No test selected") + print("") + parser.print_help() + return 1 + + BRConfigTest.keepbuilds = args.keep + + if args.testcases != 1: + if args.testcases < 1: + print("Invalid number of testcases to run simultaneously") + print("") + parser.print_help() + return 1 + # same default BR2_JLEVEL as package/Makefile.in + br2_jlevel = 1 + multiprocessing.cpu_count() + each_testcase = int((br2_jlevel + args.testcases) / args.testcases) + BRConfigTest.jlevel = each_testcase + + if args.jlevel: + if args.jlevel < 0: + print("Invalid BR2_JLEVEL to use for each testcase") + print("") + parser.print_help() + return 1 + # the user can override the auto calculated value + BRConfigTest.jlevel = args.jlevel + + if args.timeout_multiplier < 1: + print("Invalid multiplier for timeout values") + print("") + parser.print_help() + return 1 + BRConfigTest.timeout_multiplier = args.timeout_multiplier + + nose2_args = ["-v", + "-N", str(args.testcases), + "-s", test_dir, + "-c", os.path.join(test_dir, "conf/unittest.cfg")] + + if args.testname: + nose2_args += args.testname + + nose2.discover(argv=nose2_args) + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/support/testing/tests/__init__.py b/support/testing/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/support/testing/tests/boot/__init__.py b/support/testing/tests/boot/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/support/testing/tests/boot/test_atf.py b/support/testing/tests/boot/test_atf.py new file mode 100644 index 00000000..b0e7696e --- /dev/null +++ b/support/testing/tests/boot/test_atf.py @@ -0,0 +1,32 @@ +import infra.basetest + + +class TestATFAllwinner(infra.basetest.BRTest): + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.9" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50i_a64" + # BR2_TARGET_ARM_TRUSTED_FIRMWARE_SSP is not set + BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + BR2_TARGET_UBOOT=y + BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y + BR2_TARGET_UBOOT_CUSTOM_VERSION=y + BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.10" + BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_zero_plus2" + BR2_TARGET_UBOOT_NEEDS_DTC=y + BR2_TARGET_UBOOT_NEEDS_OPENSSL=y + BR2_TARGET_UBOOT_NEEDS_PYTHON3=y + BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y + BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y + BR2_TARGET_UBOOT_SPL=y + BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" + BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="SCP=/dev/null" + """ + + def test_run(self): + pass diff --git a/support/testing/tests/boot/test_edk2.py b/support/testing/tests/boot/test_edk2.py new file mode 100644 index 00000000..16fa10f8 --- /dev/null +++ b/support/testing/tests/boot/test_edk2.py @@ -0,0 +1,47 @@ +import os + +import infra.basetest + + +class TestEdk2(infra.basetest.BRTest): + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_4=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/aarch64-sbsa/assemble-flash-images support/scripts/genimage.sh" + BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/qemu/aarch64-sbsa/genimage.cfg" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.34" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="support/testing/tests/boot/test_edk2/linux.config" + BR2_TARGET_EDK2=y + BR2_TARGET_EDK2_PLATFORM_QEMU_SBSA=y + BR2_TARGET_GRUB2=y + BR2_TARGET_GRUB2_ARM64_EFI=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.9" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="qemu_sbsa" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y + BR2_PACKAGE_HOST_GENIMAGE=y + BR2_PACKAGE_HOST_DOSFSTOOLS=y + BR2_PACKAGE_HOST_MTOOLS=y + """ + + def test_run(self): + hda = os.path.join(self.builddir, "images", "disk.img") + flash0 = os.path.join(self.builddir, "images", "SBSA_FLASH0.fd") + flash1 = os.path.join(self.builddir, "images", "SBSA_FLASH1.fd") + self.emulator.boot(arch="aarch64", + options=["-M", "sbsa-ref", + "-cpu", "cortex-a57", + "-m", "512M", + "-pflash", flash0, + "-pflash", flash1, + "-hda", hda]) + self.emulator.login() diff --git a/support/testing/tests/boot/test_edk2/linux.config b/support/testing/tests/boot/test_edk2/linux.config new file mode 100644 index 00000000..a60cce02 --- /dev/null +++ b/support/testing/tests/boot/test_edk2/linux.config @@ -0,0 +1,68 @@ +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_NO_HZ_IDLE=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_TASKSTATS=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_PROFILING=y +CONFIG_ARCH_VEXPRESS=y +CONFIG_COMPAT=y +CONFIG_FW_CFG_SYSFS=y +CONFIG_FW_CFG_SYSFS_CMDLINE=y +CONFIG_ACPI=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_BLK_DEV_BSGLIB=y +CONFIG_BINFMT_MISC=y +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_PACKET_DIAG=y +CONFIG_UNIX=y +CONFIG_NET_KEY=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_BRIDGE=m +CONFIG_NET_SCHED=y +CONFIG_VSOCKETS=y +CONFIG_PCI=y +CONFIG_PCI_HOST_GENERIC=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_VIRTIO_BLK=y +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_SG=y +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SCSI_VIRTIO=y +CONFIG_ATA=y +CONFIG_SATA_AHCI_PLATFORM=y +CONFIG_NETDEVICES=y +CONFIG_DUMMY=y +CONFIG_MACVLAN=y +CONFIG_VIRTIO_NET=y +CONFIG_NLMON=y +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_VIRTIO=y +CONFIG_TCG_TPM=y +CONFIG_TCG_TIS=y +CONFIG_DRM=y +CONFIG_DRM_VIRTIO_GPU=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_PL031=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_MAILBOX=y +CONFIG_PL320_MBOX=y +CONFIG_ARM_SMMU_V3=y +CONFIG_EXT4_FS=y +CONFIG_FUSE_FS=y +CONFIG_VIRTIO_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/support/testing/tests/boot/test_grub.py b/support/testing/tests/boot/test_grub.py new file mode 100644 index 00000000..5315fa23 --- /dev/null +++ b/support/testing/tests/boot/test_grub.py @@ -0,0 +1,172 @@ +import os + +import infra.basetest + + +class TestGrubi386BIOS(infra.basetest.BRTest): + config = \ + """ + BR2_x86_core2=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_UCLIBC_STABLE=y + BR2_ROOTFS_POST_BUILD_SCRIPT="board/pc/post-build.sh {}" + BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" + BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/pc/genimage-bios.cfg" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.204" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/pc/linux.config" + BR2_LINUX_KERNEL_INSTALL_TARGET=y + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_GRUB2=y + BR2_TARGET_GRUB2_I386_PC=y + BR2_TARGET_GRUB2_INSTALL_TOOLS=y + BR2_PACKAGE_HOST_GENIMAGE=y + """.format(infra.filepath("tests/boot/test_grub/post-build.sh")) + + def test_run(self): + hda = os.path.join(self.builddir, "images", "disk.img") + self.emulator.boot(arch="i386", options=["-hda", hda]) + self.emulator.login() + + +class TestGrubi386EFI(infra.basetest.BRTest): + config = \ + """ + BR2_x86_core2=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_UCLIBC_STABLE=y + BR2_ROOTFS_POST_BUILD_SCRIPT="board/pc/post-build.sh {}" + BR2_ROOTFS_POST_IMAGE_SCRIPT="board/pc/post-image-efi.sh" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.204" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/pc/linux.config" + BR2_LINUX_KERNEL_INSTALL_TARGET=y + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_PACKAGE_EFIVAR=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_EDK2=y + BR2_TARGET_GRUB2=y + BR2_TARGET_GRUB2_I386_EFI=y + BR2_TARGET_GRUB2_INSTALL_TOOLS=y + BR2_PACKAGE_HOST_GENIMAGE=y + BR2_PACKAGE_HOST_MTOOLS=y + BR2_PACKAGE_HOST_DOSFSTOOLS=y + """.format(infra.filepath("tests/boot/test_grub/post-build.sh")) + + def test_run(self): + hda = os.path.join(self.builddir, "images", "disk.img") + bios = os.path.join(self.builddir, "images", "OVMF.fd") + # In QEMU v5.1.0 up to v7.2.0, the CPU hotplug register block misbehaves. + # EDK2 hang if the bug is detected in Qemu after printing errors to IO port 0x402 + # (requires BR2_TARGET_EDK2_OVMF_DEBUG_ON_SERIAL to see them) + # The Docker image used by the Buildroot gitlab-ci uses Qemu 5.2.0, the workaround + # can be removed as soon as the Docker image is updated to provided Qemu >= 8.0.0. + # https://github.com/tianocore/edk2/commit/bf5678b5802685e07583e3c7ec56d883cbdd5da3 + # http://lists.busybox.net/pipermail/buildroot/2023-July/670825.html + qemu_fw_cfg = "name=opt/org.tianocore/X-Cpuhp-Bugcheck-Override,string=yes" + self.emulator.boot(arch="i386", options=["-bios", bios, "-hda", hda, "-fw_cfg", qemu_fw_cfg]) + self.emulator.login() + + cmd = "modprobe efivarfs" + self.assertRunOk(cmd) + + cmd = "mount -t efivarfs none /sys/firmware/efi/efivars" + self.assertRunOk(cmd) + + cmd = "efivar -l" + self.assertRunOk(cmd) + + +class TestGrubX8664EFI(infra.basetest.BRTest): + config = \ + """ + BR2_x86_64=y + BR2_x86_corei7=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_UCLIBC_STABLE=y + BR2_ROOTFS_POST_BUILD_SCRIPT="board/pc/post-build.sh {}" + BR2_ROOTFS_POST_IMAGE_SCRIPT="board/pc/post-image-efi.sh" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.204" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/pc/linux.config" + BR2_LINUX_KERNEL_INSTALL_TARGET=y + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_PACKAGE_EFIVAR=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_EDK2=y + BR2_TARGET_GRUB2=y + BR2_TARGET_GRUB2_X86_64_EFI=y + BR2_TARGET_GRUB2_INSTALL_TOOLS=y + BR2_PACKAGE_HOST_GENIMAGE=y + BR2_PACKAGE_HOST_MTOOLS=y + BR2_PACKAGE_HOST_DOSFSTOOLS=y + """.format(infra.filepath("tests/boot/test_grub/post-build.sh")) + + def test_run(self): + hda = os.path.join(self.builddir, "images", "disk.img") + bios = os.path.join(self.builddir, "images", "OVMF.fd") + # In QEMU v5.1.0 up to v7.2.0, the CPU hotplug register block misbehaves. + # EDK2 hang if the bug is detected in Qemu after printing errors to IO port 0x402 + # (requires BR2_TARGET_EDK2_OVMF_DEBUG_ON_SERIAL to see them) + # The Docker image used by the Buildroot gitlab-ci uses Qemu 5.2.0, the workaround + # can be removed as soon as the Docker image is updated to provided Qemu >= 8.0.0. + # https://github.com/tianocore/edk2/commit/bf5678b5802685e07583e3c7ec56d883cbdd5da3 + # http://lists.busybox.net/pipermail/buildroot/2023-July/670825.html + qemu_fw_cfg = "name=opt/org.tianocore/X-Cpuhp-Bugcheck-Override,string=yes" + self.emulator.boot(arch="x86_64", options=["-bios", bios, "-cpu", "Nehalem", "-hda", hda, "-fw_cfg", qemu_fw_cfg]) + self.emulator.login() + + cmd = "modprobe efivarfs" + self.assertRunOk(cmd) + + cmd = "mount -t efivarfs none /sys/firmware/efi/efivars" + self.assertRunOk(cmd) + + cmd = "efivar -l" + self.assertRunOk(cmd) + + +class TestGrubAArch64EFI(infra.basetest.BRTest): + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_ROOTFS_POST_IMAGE_SCRIPT="{post_image}" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.18" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{linux_fragment}" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_PACKAGE_EFIVAR=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_EDK2=y + BR2_TARGET_GRUB2=y + BR2_PACKAGE_HOST_GENIMAGE=y + BR2_PACKAGE_HOST_MTOOLS=y + BR2_PACKAGE_HOST_DOSFSTOOLS=y + """.format(post_image=infra.filepath("tests/boot/test_grub/post-image-aarch64-efi.sh"), + linux_fragment=infra.filepath("tests/boot/test_grub/linux-aarch64-efi.config")) + + def test_run(self): + hda = os.path.join(self.builddir, "images", "disk.img") + bios = os.path.join(self.builddir, "images", "QEMU_EFI.fd") + self.emulator.boot(arch="aarch64", options=["-M", "virt", "-cpu", "cortex-a53", "-bios", bios, "-hda", hda]) + self.emulator.login() + + cmd = "modprobe efivarfs" + self.assertRunOk(cmd) + + cmd = "mount -t efivarfs none /sys/firmware/efi/efivars" + self.assertRunOk(cmd) + + cmd = "efivar -l" + self.assertRunOk(cmd) diff --git a/support/testing/tests/boot/test_grub/genimage-aarch64-efi.cfg b/support/testing/tests/boot/test_grub/genimage-aarch64-efi.cfg new file mode 100644 index 00000000..11615c88 --- /dev/null +++ b/support/testing/tests/boot/test_grub/genimage-aarch64-efi.cfg @@ -0,0 +1,32 @@ +image efi-part.vfat { + vfat { + file EFI { + image = "efi-part/EFI" + } + + file Image { + image = "Image" + } + } + + size = 16352K # 16MB - 32KB +} + +image disk.img { + hdimage { + partition-table-type = "gpt" + } + + partition boot { + image = "efi-part.vfat" + partition-type-uuid = c12a7328-f81f-11d2-ba4b-00a0c93ec93b + offset = 32K + bootable = true + } + + partition root { + partition-type-uuid = 44479540-f297-41b2-9af7-d131d5f0458a + partition-uuid = UUID_TMP + image = "rootfs.ext2" + } +} diff --git a/support/testing/tests/boot/test_grub/grub-aarch64-efi.cfg b/support/testing/tests/boot/test_grub/grub-aarch64-efi.cfg new file mode 100644 index 00000000..d40af0df --- /dev/null +++ b/support/testing/tests/boot/test_grub/grub-aarch64-efi.cfg @@ -0,0 +1,6 @@ +set default="0" +set timeout="5" + +menuentry "Buildroot" { + linux /Image root=PARTUUID=UUID_TMP rootwait console=ttyAMA0 +} diff --git a/support/testing/tests/boot/test_grub/linux-aarch64-efi.config b/support/testing/tests/boot/test_grub/linux-aarch64-efi.config new file mode 100644 index 00000000..839566ba --- /dev/null +++ b/support/testing/tests/boot/test_grub/linux-aarch64-efi.config @@ -0,0 +1 @@ +CONFIG_ACPI=y diff --git a/support/testing/tests/boot/test_grub/post-build.sh b/support/testing/tests/boot/test_grub/post-build.sh new file mode 100755 index 00000000..8d6f0318 --- /dev/null +++ b/support/testing/tests/boot/test_grub/post-build.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +if [ -d "$BINARIES_DIR/efi-part/" ]; then + sed -i 's%tty1%ttyS0,115200%' "$BINARIES_DIR/efi-part/EFI/BOOT/grub.cfg" +else + sed -i 's%tty1%ttyS0,115200%' "$TARGET_DIR/boot/grub/grub.cfg" +fi diff --git a/support/testing/tests/boot/test_grub/post-image-aarch64-efi.sh b/support/testing/tests/boot/test_grub/post-image-aarch64-efi.sh new file mode 100755 index 00000000..2db516ef --- /dev/null +++ b/support/testing/tests/boot/test_grub/post-image-aarch64-efi.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +set -e + +UUID=$(dumpe2fs "$BINARIES_DIR/rootfs.ext2" 2>/dev/null | sed -n 's/^Filesystem UUID: *\(.*\)/\1/p') +sed "s/UUID_TMP/$UUID/g" support/testing/tests/boot/test_grub/grub-aarch64-efi.cfg > "$BINARIES_DIR/efi-part/EFI/BOOT/grub.cfg" +sed "s/UUID_TMP/$UUID/g" support/testing/tests/boot/test_grub/genimage-aarch64-efi.cfg > "$BINARIES_DIR/genimage-aarch64-efi.cfg" +support/scripts/genimage.sh -c "$BINARIES_DIR/genimage-aarch64-efi.cfg" diff --git a/support/testing/tests/boot/test_optee_os.py b/support/testing/tests/boot/test_optee_os.py new file mode 100644 index 00000000..5f5cd174 --- /dev/null +++ b/support/testing/tests/boot/test_optee_os.py @@ -0,0 +1,74 @@ +import os + +import infra.basetest + + +class TestOptee(infra.basetest.BRTest): + # A custom configuration is needed to enable OP-TEE support in the + # Kernel. This config is inspired from: + # configs/qemu_arm_vexpress_tz_defconfig + uboot_fragment = \ + infra.filepath("tests/boot/test_optee_os/u-boot.fragment") + config = \ + f""" + BR2_arm=y + BR2_cortex_a15=y + BR2_ARM_FPU_VFPV3D16=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_ROOTFS_POST_BUILD_SCRIPT="board/qemu/arm-vexpress-tz/post-build.sh" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.73" + BR2_LINUX_KERNEL_DEFCONFIG="vexpress" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/qemu/arm-vexpress-tz/linux.fragment" + BR2_PACKAGE_OPTEE_EXAMPLES=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + BR2_TARGET_ROOTFS_CPIO_UIMAGE=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_TARGET_ARM_TRUSTED_FIRMWARE=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.9" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="qemu" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="BL32_RAM_LOCATION=tdram" + BR2_TARGET_OPTEE_OS=y + BR2_TARGET_OPTEE_OS_NEEDS_DTC=y + BR2_TARGET_OPTEE_OS_PLATFORM="vexpress-qemu_virt" + BR2_TARGET_UBOOT=y + BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y + BR2_TARGET_UBOOT_CUSTOM_VERSION=y + BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.04" + BR2_TARGET_UBOOT_BOARD_DEFCONFIG="qemu_arm" + BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="{uboot_fragment}" + """ + + def test_run(self): + # There is no Kernel nor rootfs image here. They will be + # loaded by TFTP through the emulated network interface in + # u-boot. + bios = os.path.join(self.builddir, "images", "flash.bin") + tftp_dir = os.path.join(self.builddir, "images") + self.emulator.boot(arch="arm", + options=["-M", "virt,secure=on", + "-d", "unimp", + "-cpu", "cortex-a15", + "-m", "1024M", + "-netdev", f"user,id=vmnic,tftp={tftp_dir}", + "-device", "virtio-net-device,netdev=vmnic", + "-bios", bios]) + self.emulator.login() + + # Check the Kernel has OP-TEE messages + self.assertRunOk("dmesg | grep -F optee:") + + # Check we have OP-TEE devices + self.assertRunOk("ls -al /dev/tee*") + + # Run some OP-TEE examples + examples = ["aes", "hello_world", "hotp", "random", "secure_storage"] + for ex in examples: + self.assertRunOk(f"optee_example_{ex}") diff --git a/support/testing/tests/boot/test_optee_os/u-boot.fragment b/support/testing/tests/boot/test_optee_os/u-boot.fragment new file mode 100644 index 00000000..b9505a1f --- /dev/null +++ b/support/testing/tests/boot/test_optee_os/u-boot.fragment @@ -0,0 +1,8 @@ +CONFIG_SYS_TEXT_BASE=0x60000000 +CONFIG_BOOTCOMMAND="setenv ipaddr 10.0.2.15 && setenv serverip 10.0.2.2 && tftp ${kernel_addr_r} zImage && tftp ${ramdisk_addr_r} rootfs.cpio.uboot && setenv bootargs console=ttyAMA0,115200 earlyprintk=serial,ttyAMA0,115200 && bootz ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr}" +CONFIG_SEMIHOSTING=y +# Drop flash accesses +CONFIG_ENV_IS_IN_FLASH=n +CONFIG_MTD=n +CONFIG_MTD_NOR_FLASH=n +CONFIG_ENV_IS_NOWHERE=y diff --git a/support/testing/tests/boot/test_syslinux.py b/support/testing/tests/boot/test_syslinux.py new file mode 100644 index 00000000..467d564e --- /dev/null +++ b/support/testing/tests/boot/test_syslinux.py @@ -0,0 +1,85 @@ +import infra.basetest + + +class TestSysLinuxBase(infra.basetest.BRTest): + x86_toolchain_config = \ + """ + BR2_x86_i686=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y + BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y + BR2_TOOLCHAIN_EXTERNAL_URL="http://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--glibc--bleeding-edge-2018.11-1.tar.bz2" + BR2_TOOLCHAIN_EXTERNAL_GCC_8=y + BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_14=y + BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y + BR2_TOOLCHAIN_EXTERNAL_CXX=y + """ + + x86_64_toolchain_config = \ + """ + BR2_x86_64=y + BR2_x86_corei7=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y + BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y + BR2_TOOLCHAIN_EXTERNAL_URL="http://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--glibc--stable-2018.11-1.tar.bz2" + BR2_TOOLCHAIN_EXTERNAL_GCC_7=y + BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y + BR2_TOOLCHAIN_EXTERNAL_CXX=y + BR2_TOOLCHAIN_EXTERNAL_HAS_SSP=y + BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y + """ + + syslinux_legacy_config = \ + """ + BR2_TARGET_SYSLINUX=y + BR2_TARGET_SYSLINUX_ISOLINUX=y + BR2_TARGET_SYSLINUX_PXELINUX=y + BR2_TARGET_SYSLINUX_MBR=y + """ + + syslinux_efi_config = \ + """ + BR2_TARGET_SYSLINUX=y + BR2_TARGET_SYSLINUX_EFI=y + """ + + +class TestSysLinuxX86LegacyBios(TestSysLinuxBase): + config = \ + TestSysLinuxBase.x86_toolchain_config + \ + infra.basetest.MINIMAL_CONFIG + \ + TestSysLinuxBase.syslinux_legacy_config + + def test_run(self): + pass + + +class TestSysLinuxX86EFI(TestSysLinuxBase): + config = \ + TestSysLinuxBase.x86_toolchain_config + \ + infra.basetest.MINIMAL_CONFIG + \ + TestSysLinuxBase.syslinux_efi_config + + def test_run(self): + pass + + +class TestSysLinuxX86_64LegacyBios(TestSysLinuxBase): + config = \ + TestSysLinuxBase.x86_64_toolchain_config + \ + infra.basetest.MINIMAL_CONFIG + \ + TestSysLinuxBase.syslinux_legacy_config + + def test_run(self): + pass + + +class TestSysLinuxX86_64EFI(TestSysLinuxBase): + config = \ + TestSysLinuxBase.x86_64_toolchain_config + \ + infra.basetest.MINIMAL_CONFIG + \ + TestSysLinuxBase.syslinux_efi_config + + def test_run(self): + pass diff --git a/support/testing/tests/core/__init__.py b/support/testing/tests/core/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/support/testing/tests/core/br2-external/detect-bad-arch/Config.in b/support/testing/tests/core/br2-external/detect-bad-arch/Config.in new file mode 100644 index 00000000..530c077b --- /dev/null +++ b/support/testing/tests/core/br2-external/detect-bad-arch/Config.in @@ -0,0 +1 @@ +source "$BR2_EXTERNAL_DETECT_BAD_ARCH_PATH/package/detect-bad-arch/Config.in" diff --git a/support/testing/tests/core/br2-external/detect-bad-arch/external.desc b/support/testing/tests/core/br2-external/detect-bad-arch/external.desc new file mode 100644 index 00000000..3c4232c9 --- /dev/null +++ b/support/testing/tests/core/br2-external/detect-bad-arch/external.desc @@ -0,0 +1 @@ +name: DETECT_BAD_ARCH diff --git a/support/testing/tests/core/br2-external/detect-bad-arch/external.mk b/support/testing/tests/core/br2-external/detect-bad-arch/external.mk new file mode 100644 index 00000000..71b9821d --- /dev/null +++ b/support/testing/tests/core/br2-external/detect-bad-arch/external.mk @@ -0,0 +1 @@ +include $(sort $(wildcard $(BR2_EXTERNAL_DETECT_BAD_ARCH_PATH)/package/*/*.mk)) diff --git a/support/testing/tests/core/br2-external/detect-bad-arch/package/detect-bad-arch/Config.in b/support/testing/tests/core/br2-external/detect-bad-arch/package/detect-bad-arch/Config.in new file mode 100644 index 00000000..9893e9af --- /dev/null +++ b/support/testing/tests/core/br2-external/detect-bad-arch/package/detect-bad-arch/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_DETECT_BAD_ARCH + bool + default y + diff --git a/support/testing/tests/core/br2-external/detect-bad-arch/package/detect-bad-arch/detect-bad-arch.mk b/support/testing/tests/core/br2-external/detect-bad-arch/package/detect-bad-arch/detect-bad-arch.mk new file mode 100644 index 00000000..5e78c55f --- /dev/null +++ b/support/testing/tests/core/br2-external/detect-bad-arch/package/detect-bad-arch/detect-bad-arch.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# detect-bad-arch +# +################################################################################ + +define DETECT_BAD_ARCH_BUILD_CMDS + echo "int main(void) { return 0; }" | $(HOSTCC) -x c -o $(@D)/foo - +endef + +define DETECT_BAD_ARCH_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/foo $(TARGET_DIR)/usr/bin/foo +endef + +$(eval $(generic-package)) diff --git a/support/testing/tests/core/cpeid-br2-external/Config.in b/support/testing/tests/core/cpeid-br2-external/Config.in new file mode 100644 index 00000000..e69de29b diff --git a/support/testing/tests/core/cpeid-br2-external/external.desc b/support/testing/tests/core/cpeid-br2-external/external.desc new file mode 100644 index 00000000..d19ae79e --- /dev/null +++ b/support/testing/tests/core/cpeid-br2-external/external.desc @@ -0,0 +1 @@ +name: CPE_ID diff --git a/support/testing/tests/core/cpeid-br2-external/external.mk b/support/testing/tests/core/cpeid-br2-external/external.mk new file mode 100644 index 00000000..47492d7f --- /dev/null +++ b/support/testing/tests/core/cpeid-br2-external/external.mk @@ -0,0 +1 @@ +include $(sort $(wildcard $(BR2_EXTERNAL_CPE_ID_PATH)/package/*/*.mk)) diff --git a/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg1/cpe-id-pkg1.mk b/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg1/cpe-id-pkg1.mk new file mode 100644 index 00000000..5e746028 --- /dev/null +++ b/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg1/cpe-id-pkg1.mk @@ -0,0 +1,4 @@ +CPE_ID_PKG1_VERSION = 42 + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg2/cpe-id-pkg2.mk b/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg2/cpe-id-pkg2.mk new file mode 100644 index 00000000..12b3f322 --- /dev/null +++ b/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg2/cpe-id-pkg2.mk @@ -0,0 +1,3 @@ +CPE_ID_PKG2_VERSION = 67 + +$(eval $(host-generic-package)) diff --git a/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg3/cpe-id-pkg3.mk b/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg3/cpe-id-pkg3.mk new file mode 100644 index 00000000..7f539ad5 --- /dev/null +++ b/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg3/cpe-id-pkg3.mk @@ -0,0 +1,5 @@ +CPE_ID_PKG3_VERSION = 67 +CPE_ID_PKG3_CPE_ID_VENDOR = cpe-id-pkg3_project + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg4/cpe-id-pkg4.mk b/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg4/cpe-id-pkg4.mk new file mode 100644 index 00000000..557acff8 --- /dev/null +++ b/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg4/cpe-id-pkg4.mk @@ -0,0 +1,9 @@ +CPE_ID_PKG4_VERSION = 67 +CPE_ID_PKG4_CPE_ID_VENDOR = foo +CPE_ID_PKG4_CPE_ID_PRODUCT = bar +CPE_ID_PKG4_CPE_ID_VERSION = 42 +CPE_ID_PKG4_CPE_ID_UPDATE = b2 +CPE_ID_PKG4_CPE_ID_PREFIX = cpe:2.4:a + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg5/cpe-id-pkg5.mk b/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg5/cpe-id-pkg5.mk new file mode 100644 index 00000000..d0db5f03 --- /dev/null +++ b/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg5/cpe-id-pkg5.mk @@ -0,0 +1,16 @@ +CPE_ID_PKG5_VERSION = 57 + +CPE_ID_PKG5_CPE_ID_VENDOR = foo +CPE_ID_PKG5_CPE_ID_PRODUCT = bar +CPE_ID_PKG5_CPE_ID_VERSION = 42 +CPE_ID_PKG5_CPE_ID_UPDATE = b2 +CPE_ID_PKG5_CPE_ID_PREFIX = cpe:2.4:a + +HOST_CPE_ID_PKG5_CPE_ID_VENDOR = baz +HOST_CPE_ID_PKG5_CPE_ID_PRODUCT = fuz +HOST_CPE_ID_PKG5_CPE_ID_VERSION = 43 +HOST_CPE_ID_PKG5_CPE_ID_UPDATE = b3 +HOST_CPE_ID_PKG5_CPE_ID_PREFIX = cpe:2.5:a + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/support/testing/tests/core/device_table2.txt b/support/testing/tests/core/device_table2.txt new file mode 100644 index 00000000..f8323217 --- /dev/null +++ b/support/testing/tests/core/device_table2.txt @@ -0,0 +1,7 @@ +# +/usr/sbin/getcap f 755 0 0 - - - - - +|xattr cap_sys_nice+eip +# leading spaces are ignored for xattr + |xattr cap_kill+eip +# leading tabs are ignored for xattr + |xattr cap_sys_time+eip diff --git a/support/testing/tests/core/post-build.sh b/support/testing/tests/core/post-build.sh new file mode 100755 index 00000000..f3d0dbe5 --- /dev/null +++ b/support/testing/tests/core/post-build.sh @@ -0,0 +1,12 @@ +#!/bin/sh +( +printf "arg1,%s\n" "${1}" +printf "arg2,%s\n" "${2}" +printf "arg3,%s\n" "${3}" +printf "TARGET_DIR,%s\n" "${TARGET_DIR}" +printf "BUILD_DIR,%s\n" "${BUILD_DIR}" +printf "HOST_DIR,%s\n" "${HOST_DIR}" +printf "STAGING_DIR,%s\n" "${STAGING_DIR}" +printf "BINARIES_DIR,%s\n" "${BINARIES_DIR}" +printf "BR2_CONFIG,%s\n" "${BR2_CONFIG}" +) > ${BUILD_DIR}/$(basename "${0}" .sh).log diff --git a/support/testing/tests/core/post-fakeroot.sh b/support/testing/tests/core/post-fakeroot.sh new file mode 120000 index 00000000..d680fcca --- /dev/null +++ b/support/testing/tests/core/post-fakeroot.sh @@ -0,0 +1 @@ +post-build.sh \ No newline at end of file diff --git a/support/testing/tests/core/post-image.sh b/support/testing/tests/core/post-image.sh new file mode 120000 index 00000000..d680fcca --- /dev/null +++ b/support/testing/tests/core/post-image.sh @@ -0,0 +1 @@ +post-build.sh \ No newline at end of file diff --git a/support/testing/tests/core/rootfs-overlay1/test-file1 b/support/testing/tests/core/rootfs-overlay1/test-file1 new file mode 100644 index 00000000..323fae03 --- /dev/null +++ b/support/testing/tests/core/rootfs-overlay1/test-file1 @@ -0,0 +1 @@ +foobar diff --git a/support/testing/tests/core/rootfs-overlay2/etc/test-file2 b/support/testing/tests/core/rootfs-overlay2/etc/test-file2 new file mode 100644 index 00000000..34a3ec23 --- /dev/null +++ b/support/testing/tests/core/rootfs-overlay2/etc/test-file2 @@ -0,0 +1 @@ +barfoo diff --git a/support/testing/tests/core/squashfs-xattr-kernel.config b/support/testing/tests/core/squashfs-xattr-kernel.config new file mode 100644 index 00000000..81b21b94 --- /dev/null +++ b/support/testing/tests/core/squashfs-xattr-kernel.config @@ -0,0 +1 @@ +CONFIG_SQUASHFS_XATTR=y diff --git a/support/testing/tests/core/test_bad_arch.py b/support/testing/tests/core/test_bad_arch.py new file mode 100644 index 00000000..c96a7152 --- /dev/null +++ b/support/testing/tests/core/test_bad_arch.py @@ -0,0 +1,18 @@ +import infra +import infra.basetest + + +class DetectBadArchTest(infra.basetest.BRConfigTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + infra.basetest.MINIMAL_CONFIG + br2_external = [infra.filepath("tests/core/br2-external/detect-bad-arch")] + + def test_run(self): + with self.assertRaises(SystemError): + self.b.build() + logf_path = infra.log_file_path(self.b.builddir, "build", + infra.basetest.BRConfigTest.logtofile) + if logf_path: + s = 'ERROR: architecture for "/usr/bin/foo" is' + with open(logf_path, "r") as f: + lines = [line for line in f.readlines() if line.startswith(s)] + self.assertEqual(len(lines), 1) diff --git a/support/testing/tests/core/test_cpeid.py b/support/testing/tests/core/test_cpeid.py new file mode 100644 index 00000000..11c84721 --- /dev/null +++ b/support/testing/tests/core/test_cpeid.py @@ -0,0 +1,110 @@ +import infra +import subprocess +import json + + +class CpeIdTest(infra.basetest.BRConfigTest): + config = "" + br2_external = [infra.filepath("tests/core/cpeid-br2-external")] + + def get_vars(self, var): + cmd = ["make", "--no-print-directory", "-C", self.b.builddir, + "VARS=%s%%" % var, "printvars"] + lines = subprocess.check_output(cmd).splitlines() + return dict([str(x, "utf-8").split("=") for x in lines]) + + def get_json(self, pkg): + cmd = ["make", "--no-print-directory", "-C", self.b.builddir, + "%s-show-info" % pkg] + return json.loads(subprocess.check_output(cmd)) + + def test_pkg1(self): + # this package has no CPE ID information, it should not have + # any CPE_ID variable defined. + pkg_vars = self.get_vars("CPE_ID_PKG1_CPE_ID") + cpe_vars = ["CPE_ID_VALID", "CPE_ID_PRODUCT", "CPE_ID_VERSION", "CPE_ID_UPDATE", + "CPE_ID_PREFIX", "CPE_ID"] + for v in cpe_vars: + self.assertNotIn("CPE_ID_PKG1_%s" % v, pkg_vars) + pkg_json = self.get_json("cpe-id-pkg1") + self.assertNotIn("cpe-id", pkg_json['cpe-id-pkg1']) + + pkg_vars = self.get_vars("HOST_CPE_ID_PKG1_CPE_ID") + for v in cpe_vars: + self.assertNotIn("HOST_CPE_ID_PKG1_%s" % v, pkg_vars) + pkg_json = self.get_json("host-cpe-id-pkg1") + self.assertNotIn("cpe-id", pkg_json['host-cpe-id-pkg1']) + + def test_pkg2(self): + # this package has no CPE ID information, it should not have + # any CPE_ID variable defined. + pkg_vars = self.get_vars("HOST_CPE_ID_PKG2_CPE_ID") + cpe_vars = ["CPE_ID_VALID", "CPE_ID_PRODUCT", "CPE_ID_VERSION", "CPE_ID_UPDATE", + "CPE_ID_PREFIX", "CPE_ID"] + for v in cpe_vars: + self.assertNotIn("HOST_CPE_ID_PKG2_%s" % v, pkg_vars) + pkg_json = self.get_json("host-cpe-id-pkg2") + self.assertNotIn("cpe-id", pkg_json['host-cpe-id-pkg2']) + + def test_pkg3(self): + # this package has just _CPE_ID_VENDOR defined, so verify + # it has the default CPE_ID value, and that inheritance of the + # values for the host package is working + pkg_vars = self.get_vars("CPE_ID_PKG3_CPE_ID") + self.assertEqual(pkg_vars["CPE_ID_PKG3_CPE_ID"], + "cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*") + self.assertEqual(pkg_vars["CPE_ID_PKG3_CPE_ID_VALID"], "YES") + pkg_json = self.get_json("cpe-id-pkg3") + self.assertEqual(pkg_json['cpe-id-pkg3']['cpe-id'], + "cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*") + + pkg_vars = self.get_vars("HOST_CPE_ID_PKG3_CPE_ID") + self.assertEqual(pkg_vars["HOST_CPE_ID_PKG3_CPE_ID"], + "cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*") + self.assertEqual(pkg_vars["HOST_CPE_ID_PKG3_CPE_ID_VALID"], "YES") + pkg_json = self.get_json("host-cpe-id-pkg3") + self.assertEqual(pkg_json['host-cpe-id-pkg3']['cpe-id'], + "cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*") + + def test_pkg4(self): + # this package defines + # _CPE_ID_{VENDOR,PRODUCT,VERSION,UPDATE,PREFIX}, + # make sure we get the computed _CPE_ID, and that it is + # inherited by the host variant + pkg_vars = self.get_vars("CPE_ID_PKG4_CPE_ID") + self.assertEqual(pkg_vars["CPE_ID_PKG4_CPE_ID"], + "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*") + self.assertEqual(pkg_vars["CPE_ID_PKG4_CPE_ID_VALID"], "YES") + pkg_json = self.get_json("cpe-id-pkg4") + self.assertEqual(pkg_json['cpe-id-pkg4']['cpe-id'], + "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*") + + pkg_vars = self.get_vars("HOST_CPE_ID_PKG4_CPE_ID") + self.assertEqual(pkg_vars["HOST_CPE_ID_PKG4_CPE_ID"], + "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*") + self.assertEqual(pkg_vars["HOST_CPE_ID_PKG4_CPE_ID_VALID"], "YES") + pkg_json = self.get_json("host-cpe-id-pkg4") + self.assertEqual(pkg_json['host-cpe-id-pkg4']['cpe-id'], + "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*") + + def test_pkg5(self): + # this package defines + # _CPE_ID_{VENDOR,PRODUCT,VERSION,UPDATE,PREFIX} and + # HOST__CPE_ID_{VENDOR,PRODUCT,VERSION,UPDATE,PREFIX} + # separately, with different values. Make sure we get the + # right _CPE_ID and HOST__CPE_ID values. + pkg_vars = self.get_vars("CPE_ID_PKG5_CPE_ID") + self.assertEqual(pkg_vars["CPE_ID_PKG5_CPE_ID"], + "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*") + self.assertEqual(pkg_vars["CPE_ID_PKG5_CPE_ID_VALID"], "YES") + pkg_json = self.get_json("cpe-id-pkg5") + self.assertEqual(pkg_json['cpe-id-pkg5']['cpe-id'], + "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*") + + pkg_vars = self.get_vars("HOST_CPE_ID_PKG5_CPE_ID") + self.assertEqual(pkg_vars["HOST_CPE_ID_PKG5_CPE_ID"], + "cpe:2.5:a:baz:fuz:43:b3:*:*:*:*:*:*") + self.assertEqual(pkg_vars["HOST_CPE_ID_PKG5_CPE_ID_VALID"], "YES") + pkg_json = self.get_json("host-cpe-id-pkg5") + self.assertEqual(pkg_json['host-cpe-id-pkg5']['cpe-id'], + "cpe:2.5:a:baz:fuz:43:b3:*:*:*:*:*:*") diff --git a/support/testing/tests/core/test_file_capabilities.py b/support/testing/tests/core/test_file_capabilities.py new file mode 100644 index 00000000..e2600ae7 --- /dev/null +++ b/support/testing/tests/core/test_file_capabilities.py @@ -0,0 +1,46 @@ +import os + +import infra.basetest + + +class TestFileCapabilities(infra.basetest.BRTest): + config = \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt {}" + BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.310" + BR2_LINUX_KERNEL_DEFCONFIG="vexpress" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" + BR2_LINUX_KERNEL_DTS_SUPPORT=y + BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9" + BR2_PACKAGE_LIBCAP=y + BR2_PACKAGE_LIBCAP_TOOLS=y + BR2_TARGET_ROOTFS_SQUASHFS=y + # BR2_TARGET_ROOTFS_TAR is not set + """.format(infra.filepath("tests/core/device_table2.txt"), + infra.filepath("tests/core/squashfs-xattr-kernel.config")) + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.squashfs") + infra.img_round_power2(img) + + self.emulator.boot(arch="armv7", + kernel=os.path.join(self.builddir, "images", "zImage"), + kernel_cmdline=["root=/dev/mmcblk0", + "rootfstype=squashfs"], + options=["-drive", "file={},if=sd,format=raw".format(img), + "-M", "vexpress-a9", + "-dtb", os.path.join(self.builddir, "images", "vexpress-v2p-ca9.dtb")]) + self.emulator.login() + + cmd = "getcap -v /usr/sbin/getcap" + output, _ = self.emulator.run(cmd) + self.assertIn("cap_kill", output[0]) + self.assertIn("cap_sys_nice", output[0]) + self.assertIn("cap_sys_time", output[0]) + self.assertIn("=eip", output[0]) diff --git a/support/testing/tests/core/test_hardening.py b/support/testing/tests/core/test_hardening.py new file mode 100644 index 00000000..e9d30f3a --- /dev/null +++ b/support/testing/tests/core/test_hardening.py @@ -0,0 +1,115 @@ +import os +import json + +import infra.basetest + + +class TestHardeningBase(infra.basetest.BRTest): + config = \ + """ + BR2_powerpc64=y + BR2_powerpc_e5500=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y + BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y + BR2_TOOLCHAIN_EXTERNAL_URL="https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e5500/tarballs/powerpc64-e5500--glibc--stable-2018.02-2.tar.bz2" + BR2_TOOLCHAIN_EXTERNAL_GCC_6=y + BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y + BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y + BR2_TOOLCHAIN_EXTERNAL_CXX=y + BR2_PACKAGE_LIGHTTPD=y + BR2_PACKAGE_HOST_CHECKSEC=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + checksec_files = ["usr/sbin/lighttpd", "bin/busybox"] + + def checksec_run(self, target_file): + filepath = os.path.join(self.builddir, "target", target_file) + cmd = ["host/bin/checksec", "--format=json", + "--file={}".format(filepath)] + # Checksec is being used for elf file analysis only. There are no + # assumptions of target/run-time checks as part of this testing. + ret = infra.run_cmd_on_host(self.builddir, cmd) + return json.loads(ret) + + +class TestRelro(TestHardeningBase): + config = TestHardeningBase.config + \ + """ + BR2_RELRO_FULL=y + """ + + def test_run(self): + for f in self.checksec_files: + out = self.checksec_run(f) + filepath = os.path.join(self.builddir, "target", f) + self.assertEqual(out[filepath]["relro"], "full") + self.assertEqual(out[filepath]["pie"], "yes") + + +class TestRelroPartial(TestHardeningBase): + config = TestHardeningBase.config + \ + """ + BR2_RELRO_PARTIAL=y + # BR2_PIC_PIE is not set + """ + + def test_run(self): + for f in self.checksec_files: + out = self.checksec_run(f) + filepath = os.path.join(self.builddir, "target", f) + self.assertEqual(out[filepath]["relro"], "partial") + self.assertEqual(out[filepath]["pie"], "no") + + +class TestSspNone(TestHardeningBase): + config = TestHardeningBase.config + \ + """ + BR2_SSP_NONE=y + """ + + def test_run(self): + for f in self.checksec_files: + out = self.checksec_run(f) + filepath = os.path.join(self.builddir, "target", f) + self.assertEqual(out[filepath]["canary"], "no") + + +class TestSspStrong(TestHardeningBase): + config = TestHardeningBase.config + \ + """ + BR2_SSP_STRONG=y + """ + + def test_run(self): + for f in self.checksec_files: + out = self.checksec_run(f) + filepath = os.path.join(self.builddir, "target", f) + self.assertEqual(out[filepath]["canary"], "yes") + + +class TestFortifyNone(TestHardeningBase): + config = TestHardeningBase.config + \ + """ + BR2_FORTIFY_SOURCE_NONE=y + """ + + def test_run(self): + for f in self.checksec_files: + out = self.checksec_run(f) + filepath = os.path.join(self.builddir, "target", f) + self.assertEqual(out[filepath]["fortified"], "0") + + +class TestFortifyConserv(TestHardeningBase): + config = TestHardeningBase.config + \ + """ + BR2_FORTIFY_SOURCE_1=y + """ + + def test_run(self): + for f in self.checksec_files: + out = self.checksec_run(f) + filepath = os.path.join(self.builddir, "target", f) + self.assertNotEqual(out[filepath]["fortified"], "0") diff --git a/support/testing/tests/core/test_post_scripts.py b/support/testing/tests/core/test_post_scripts.py new file mode 100644 index 00000000..bc61f4af --- /dev/null +++ b/support/testing/tests/core/test_post_scripts.py @@ -0,0 +1,48 @@ +import os +import csv + +import infra.basetest + + +class TestPostScripts(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_INIT_NONE=y + BR2_SYSTEM_BIN_SH_NONE=y + # BR2_PACKAGE_BUSYBOX is not set + BR2_ROOTFS_POST_BUILD_SCRIPT="{}" + BR2_ROOTFS_POST_FAKEROOT_SCRIPT="{}" + BR2_ROOTFS_POST_IMAGE_SCRIPT="{}" + BR2_ROOTFS_POST_SCRIPT_ARGS="foobar baz" + """.format(infra.filepath("tests/core/post-build.sh"), + infra.filepath("tests/core/post-fakeroot.sh"), + infra.filepath("tests/core/post-image.sh")) + + def check_post_log_file(self, f, what, target_dir): + lines = {} + with open(os.path.join(self.builddir, "build", f), newline='') as csvfile: + r = csv.reader(csvfile, delimiter=',') + for row in r: + lines[row[0]] = row[1] + + self.assertEqual(lines["arg1"], what) + self.assertEqual(lines["arg2"], "foobar") + self.assertEqual(lines["arg3"], "baz") + self.assertEqual(lines["TARGET_DIR"], target_dir) + self.assertEqual(lines["BUILD_DIR"], os.path.join(self.builddir, "build")) + self.assertEqual(lines["HOST_DIR"], os.path.join(self.builddir, "host")) + staging = os.readlink(os.path.join(self.builddir, "staging")) + self.assertEqual(lines["STAGING_DIR"], staging) + self.assertEqual(lines["BINARIES_DIR"], os.path.join(self.builddir, "images")) + self.assertEqual(lines["BR2_CONFIG"], os.path.join(self.builddir, ".config")) + + def test_run(self): + self.check_post_log_file("post-build.log", + os.path.join(self.builddir, "target"), + os.path.join(self.builddir, "target")) + self.check_post_log_file("post-fakeroot.log", + os.path.join(self.builddir, "build/buildroot-fs/tar/target"), + os.path.join(self.builddir, "build/buildroot-fs/tar/target")) + self.check_post_log_file("post-image.log", + os.path.join(self.builddir, "images"), + os.path.join(self.builddir, "target")) diff --git a/support/testing/tests/core/test_root_password.py b/support/testing/tests/core/test_root_password.py new file mode 100644 index 00000000..aefcd360 --- /dev/null +++ b/support/testing/tests/core/test_root_password.py @@ -0,0 +1,36 @@ +import os +import infra.basetest +from crypt import crypt + + +class TestRootPassword(infra.basetest.BRTest): + password = "foo" + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ENABLE_ROOT_LOGIN=y + BR2_TARGET_GENERIC_ROOT_PASSWD="{}" + """.format(password) + + def test_run(self): + # 1. Test by looking hash in the /etc/shadow + shadow = os.path.join(self.builddir, "target", "etc", "shadow") + with open(shadow, "r") as f: + users = f.readlines() + for user in users: + s = user.split(":") + n, h = s[0], s[1] + if n == "root": + # Fail if the account is disabled or no password is required + self.assertTrue(h not in ["", "*"]) + # Fail if the hash isn't right + self.assertEqual(crypt(self.password, h), h) + + # 2. Test by attempting to login + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + try: + self.emulator.boot(arch="armv7", kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login(self.password) + except SystemError: + self.fail("Unable to login with the password") diff --git a/support/testing/tests/core/test_rootfs_overlay.py b/support/testing/tests/core/test_rootfs_overlay.py new file mode 100644 index 00000000..fedd40d8 --- /dev/null +++ b/support/testing/tests/core/test_rootfs_overlay.py @@ -0,0 +1,30 @@ +import os +import subprocess + +import infra.basetest + + +def compare_file(file1, file2): + return subprocess.call(["cmp", file1, file2]) + + +class TestRootfsOverlay(infra.basetest.BRTest): + + rootfs_overlay_path = infra.filepath("tests/core/rootfs-overlay") + + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + infra.basetest.MINIMAL_CONFIG + \ + """ + BR2_ROOTFS_OVERLAY="{0}1 {0}2" + """.format(rootfs_overlay_path) + + def test_run(self): + target_file = os.path.join(self.builddir, "target", "test-file1") + overlay_file = "{}1/test-file1".format(self.rootfs_overlay_path) + ret = compare_file(overlay_file, target_file) + self.assertEqual(ret, 0) + + target_file = os.path.join(self.builddir, "target", "etc", "test-file2") + overlay_file = "{}2/etc/test-file2".format(self.rootfs_overlay_path) + ret = compare_file(overlay_file, target_file) + self.assertEqual(ret, 0) diff --git a/support/testing/tests/core/test_selinux.py b/support/testing/tests/core/test_selinux.py new file mode 100644 index 00000000..683a424d --- /dev/null +++ b/support/testing/tests/core/test_selinux.py @@ -0,0 +1,86 @@ +import os + +import infra.basetest + + +class TestSELinuxInfra(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG +\ + """ + BR2_PACKAGE_REFPOLICY=y + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_SETOOLS=y + BR2_TARGET_ROOTFS_CPIO=y + """ + + def base_test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + +class TestSELinuxExtraModules(TestSELinuxInfra): + config = TestSELinuxInfra.config + \ + """ + BR2_REFPOLICY_EXTRA_MODULES="ntp tor" + """ + + def test_run(self): + TestSELinuxInfra.base_test_run(self) + + out, ret = self.emulator.run("seinfo -t ntpd_t", 15) + self.assertEqual(ret, 0) + self.assertEqual(out[2].strip(), "ntpd_t") + + out, ret = self.emulator.run("seinfo -t tor_t", 15) + self.assertEqual(ret, 0) + self.assertEqual(out[2].strip(), "tor_t") + + +class TestSELinuxExtraModulesDirs(TestSELinuxInfra): + config = TestSELinuxInfra.config + \ + """ + BR2_REFPOLICY_EXTRA_MODULES_DIRS="{}" + """.format(infra.filepath("tests/core/test_selinux/extra_modules")) + + def test_run(self): + TestSELinuxInfra.base_test_run(self) + + out, ret = self.emulator.run("seinfo -t buildroot_test_t", 15) + self.assertEqual(ret, 0) + self.assertEqual(out[2].strip(), "buildroot_test_t") + + +class TestSELinuxCustomGit(TestSELinuxInfra): + config = TestSELinuxInfra.config + \ + """ + BR2_PACKAGE_REFPOLICY_CUSTOM_GIT=y + BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_URL="https://github.com/SELinuxProject/refpolicy.git" + BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_VERSION="RELEASE_2_20200818" + """ + + def test_run(self): + pass + + +class TestSELinuxPackage(TestSELinuxInfra): + br2_external = [infra.filepath("tests/core/test_selinux/br2_external")] + config = TestSELinuxInfra.config + \ + """ + BR2_PACKAGE_SELINUX_TEST=y + """ + + def test_run(self): + TestSELinuxInfra.base_test_run(self) + + out, ret = self.emulator.run("seinfo -t ntpd_t", 15) + self.assertEqual(ret, 0) + self.assertEqual(out[2].strip(), "ntpd_t") + + out, ret = self.emulator.run("seinfo -t tor_t", 15) + self.assertEqual(ret, 0) + self.assertEqual(out[2].strip(), "tor_t") + + out, ret = self.emulator.run("seinfo -t buildroot_test_t", 15) + self.assertEqual(ret, 0) + self.assertEqual(out[2].strip(), "buildroot_test_t") diff --git a/support/testing/tests/core/test_selinux/br2_external/Config.in b/support/testing/tests/core/test_selinux/br2_external/Config.in new file mode 100644 index 00000000..9d9c84ee --- /dev/null +++ b/support/testing/tests/core/test_selinux/br2_external/Config.in @@ -0,0 +1 @@ +source "$BR2_EXTERNAL_SELINUX_PATH/package/selinux-test/Config.in" diff --git a/support/testing/tests/core/test_selinux/br2_external/external.desc b/support/testing/tests/core/test_selinux/br2_external/external.desc new file mode 100644 index 00000000..44b5b95f --- /dev/null +++ b/support/testing/tests/core/test_selinux/br2_external/external.desc @@ -0,0 +1 @@ +name: SELINUX diff --git a/support/testing/tests/core/test_selinux/br2_external/external.mk b/support/testing/tests/core/test_selinux/br2_external/external.mk new file mode 100644 index 00000000..54d2402d --- /dev/null +++ b/support/testing/tests/core/test_selinux/br2_external/external.mk @@ -0,0 +1 @@ +include $(sort $(wildcard $(BR2_EXTERNAL_SELINUX_PATH)/package/*/*.mk)) diff --git a/support/testing/tests/core/test_selinux/br2_external/package/selinux-test/Config.in b/support/testing/tests/core/test_selinux/br2_external/package/selinux-test/Config.in new file mode 100644 index 00000000..e30ac831 --- /dev/null +++ b/support/testing/tests/core/test_selinux/br2_external/package/selinux-test/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_SELINUX_TEST + bool "SELinux test package" + help + Test package for SELinux Buildroot helpers. diff --git a/support/testing/tests/core/test_selinux/br2_external/package/selinux-test/selinux-test.mk b/support/testing/tests/core/test_selinux/br2_external/package/selinux-test/selinux-test.mk new file mode 100644 index 00000000..0100b718 --- /dev/null +++ b/support/testing/tests/core/test_selinux/br2_external/package/selinux-test/selinux-test.mk @@ -0,0 +1,9 @@ +################################################################################ +# +# SELinux test package +# +################################################################################ + +SELINUX_TEST_SELINUX_MODULES = ntp tor + +$(eval $(generic-package)) diff --git a/support/testing/tests/core/test_selinux/br2_external/package/selinux-test/selinux/buildroot.fc b/support/testing/tests/core/test_selinux/br2_external/package/selinux-test/selinux/buildroot.fc new file mode 100644 index 00000000..e69de29b diff --git a/support/testing/tests/core/test_selinux/br2_external/package/selinux-test/selinux/buildroot.if b/support/testing/tests/core/test_selinux/br2_external/package/selinux-test/selinux/buildroot.if new file mode 100644 index 00000000..acf797e6 --- /dev/null +++ b/support/testing/tests/core/test_selinux/br2_external/package/selinux-test/selinux/buildroot.if @@ -0,0 +1 @@ +## Buildroot rules diff --git a/support/testing/tests/core/test_selinux/br2_external/package/selinux-test/selinux/buildroot.te b/support/testing/tests/core/test_selinux/br2_external/package/selinux-test/selinux/buildroot.te new file mode 100644 index 00000000..266bc03b --- /dev/null +++ b/support/testing/tests/core/test_selinux/br2_external/package/selinux-test/selinux/buildroot.te @@ -0,0 +1,3 @@ +policy_module(buildroot, 1.0.0) + +type buildroot_test_t; diff --git a/support/testing/tests/core/test_selinux/extra_modules/buildroot.fc b/support/testing/tests/core/test_selinux/extra_modules/buildroot.fc new file mode 100644 index 00000000..e69de29b diff --git a/support/testing/tests/core/test_selinux/extra_modules/buildroot.if b/support/testing/tests/core/test_selinux/extra_modules/buildroot.if new file mode 100644 index 00000000..acf797e6 --- /dev/null +++ b/support/testing/tests/core/test_selinux/extra_modules/buildroot.if @@ -0,0 +1 @@ +## Buildroot rules diff --git a/support/testing/tests/core/test_selinux/extra_modules/buildroot.te b/support/testing/tests/core/test_selinux/extra_modules/buildroot.te new file mode 100644 index 00000000..266bc03b --- /dev/null +++ b/support/testing/tests/core/test_selinux/extra_modules/buildroot.te @@ -0,0 +1,3 @@ +policy_module(buildroot, 1.0.0) + +type buildroot_test_t; diff --git a/support/testing/tests/core/test_timezone.py b/support/testing/tests/core/test_timezone.py new file mode 100644 index 00000000..bf4a47fc --- /dev/null +++ b/support/testing/tests/core/test_timezone.py @@ -0,0 +1,71 @@ +import os + +import infra.basetest + + +def boot_armv5_cpio(emulator, builddir): + img = os.path.join(builddir, "images", "rootfs.cpio") + emulator.boot(arch="armv5", kernel="builtin", + options=["-initrd", img]) + emulator.login() + + +class TestNoTimezone(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + # BR2_TARGET_TZ_INFO is not set + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + boot_armv5_cpio(self.emulator, self.builddir) + tz, _ = self.emulator.run("TZ=UTC date +%Z") + self.assertEqual(tz[0].strip(), "UTC") + # This test is Glibc specific since there is no Time Zone Database installed + # and other C libraries use their own rule for returning time zone name or + # abbreviation when TZ is empty or set with a not installed time zone data file. + tz, _ = self.emulator.run("TZ= date +%Z") + self.assertEqual(tz[0].strip(), "Universal") + + +class TestAllTimezone(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_TZ_INFO=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + boot_armv5_cpio(self.emulator, self.builddir) + tz, _ = self.emulator.run("date +%Z") + self.assertEqual(tz[0].strip(), "UTC") + tz, _ = self.emulator.run("TZ=UTC date +%Z") + self.assertEqual(tz[0].strip(), "UTC") + tz, _ = self.emulator.run("TZ=America/Los_Angeles date +%Z") + self.assertEqual(tz[0].strip(), "PST") + tz, _ = self.emulator.run("TZ=Europe/Paris date +%Z") + self.assertEqual(tz[0].strip(), "CET") + + +class TestNonDefaultLimitedTimezone(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_TZ_INFO=y + BR2_TARGET_TZ_ZONELIST="northamerica" + BR2_TARGET_LOCALTIME="America/New_York" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + boot_armv5_cpio(self.emulator, self.builddir) + tz, _ = self.emulator.run("date +%Z") + self.assertEqual(tz[0].strip(), "EST") + tz, _ = self.emulator.run("TZ=UTC date +%Z") + self.assertEqual(tz[0].strip(), "UTC") + tz, _ = self.emulator.run("TZ=America/Los_Angeles date +%Z") + self.assertEqual(tz[0].strip(), "PST") + tz, _ = self.emulator.run("TZ=Europe/Paris date +%Z") + self.assertEqual(tz[0].strip(), "Europe") diff --git a/support/testing/tests/download/__init__.py b/support/testing/tests/download/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/support/testing/tests/download/br2-external/git-hash/Config.in b/support/testing/tests/download/br2-external/git-hash/Config.in new file mode 100644 index 00000000..e69de29b diff --git a/support/testing/tests/download/br2-external/git-hash/external.desc b/support/testing/tests/download/br2-external/git-hash/external.desc new file mode 100644 index 00000000..41316c8b --- /dev/null +++ b/support/testing/tests/download/br2-external/git-hash/external.desc @@ -0,0 +1 @@ +name: GIT_HASH diff --git a/support/testing/tests/download/br2-external/git-hash/external.mk b/support/testing/tests/download/br2-external/git-hash/external.mk new file mode 100644 index 00000000..4646dfe2 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-hash/external.mk @@ -0,0 +1,4 @@ +include $(sort $(wildcard $(BR2_EXTERNAL_GIT_HASH_PATH)/package/*/*.mk)) + +# Get the git server port number from the test infra +GITREMOTE_PORT_NUMBER ?= 9418 diff --git a/support/testing/tests/download/br2-external/git-hash/package/bad/bad.hash b/support/testing/tests/download/br2-external/git-hash/package/bad/bad.hash new file mode 100644 index 00000000..c3ac6da6 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-hash/package/bad/bad.hash @@ -0,0 +1 @@ +sha256 0000000000000000000000000000000000000000000000000000000000000000 bad-a238b1dfcd825d47d834af3c5223417c8411d90d-git4.tar.gz diff --git a/support/testing/tests/download/br2-external/git-hash/package/bad/bad.mk b/support/testing/tests/download/br2-external/git-hash/package/bad/bad.mk new file mode 100644 index 00000000..5497bd6b --- /dev/null +++ b/support/testing/tests/download/br2-external/git-hash/package/bad/bad.mk @@ -0,0 +1,10 @@ +################################################################################ +# +# bad +# +################################################################################ + +BAD_VERSION = a238b1dfcd825d47d834af3c5223417c8411d90d +BAD_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/git-hash/package/export-subst/export-subst.hash b/support/testing/tests/download/br2-external/git-hash/package/export-subst/export-subst.hash new file mode 100644 index 00000000..792546d3 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-hash/package/export-subst/export-subst.hash @@ -0,0 +1 @@ +sha256 5ee1800b8fd5f4a0d3e48a0c3a32a988ca974d0ef3c9bc8307ee1ff139cc3f3e export-subst-0fdb95cf4f3c5ed4003287649cabb33c5f843e26-git4.tar.gz diff --git a/support/testing/tests/download/br2-external/git-hash/package/export-subst/export-subst.mk b/support/testing/tests/download/br2-external/git-hash/package/export-subst/export-subst.mk new file mode 100644 index 00000000..8d7d3ff9 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-hash/package/export-subst/export-subst.mk @@ -0,0 +1,10 @@ +################################################################################ +# +# export-subst +# +################################################################################ + +EXPORT_SUBST_VERSION = 0fdb95cf4f3c5ed4003287649cabb33c5f843e26 +EXPORT_SUBST_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/git-hash/package/good/good.hash b/support/testing/tests/download/br2-external/git-hash/package/good/good.hash new file mode 100644 index 00000000..6909066f --- /dev/null +++ b/support/testing/tests/download/br2-external/git-hash/package/good/good.hash @@ -0,0 +1 @@ +sha256 32879a888bd3cfc10e108a0309940884aa0b01250fad5912c837d23c9918f8de good-a238b1dfcd825d47d834af3c5223417c8411d90d-git4.tar.gz diff --git a/support/testing/tests/download/br2-external/git-hash/package/good/good.mk b/support/testing/tests/download/br2-external/git-hash/package/good/good.mk new file mode 100644 index 00000000..0f0eefd9 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-hash/package/good/good.mk @@ -0,0 +1,10 @@ +################################################################################ +# +# good +# +################################################################################ + +GOOD_VERSION = a238b1dfcd825d47d834af3c5223417c8411d90d +GOOD_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/git-hash/package/nohash/nohash.mk b/support/testing/tests/download/br2-external/git-hash/package/nohash/nohash.mk new file mode 100644 index 00000000..1da19d88 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-hash/package/nohash/nohash.mk @@ -0,0 +1,10 @@ +################################################################################ +# +# nohash +# +################################################################################ + +NOHASH_VERSION = a238b1dfcd825d47d834af3c5223417c8411d90d +NOHASH_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/git-refs/Config.in b/support/testing/tests/download/br2-external/git-refs/Config.in new file mode 100644 index 00000000..e69de29b diff --git a/support/testing/tests/download/br2-external/git-refs/external.desc b/support/testing/tests/download/br2-external/git-refs/external.desc new file mode 100644 index 00000000..69f40d46 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/external.desc @@ -0,0 +1 @@ +name: GIT_REFS diff --git a/support/testing/tests/download/br2-external/git-refs/external.mk b/support/testing/tests/download/br2-external/git-refs/external.mk new file mode 100644 index 00000000..ab38c27e --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/external.mk @@ -0,0 +1,4 @@ +include $(sort $(wildcard $(BR2_EXTERNAL_GIT_REFS_PATH)/package/*/*.mk)) + +# Get the git server port number from the test infra +GITREMOTE_PORT_NUMBER ?= 9418 diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-branch-head/git-partial-sha1-branch-head.hash b/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-branch-head/git-partial-sha1-branch-head.hash new file mode 100644 index 00000000..fa2bf666 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-branch-head/git-partial-sha1-branch-head.hash @@ -0,0 +1,2 @@ +sha256 86ab4376a55b9ecd5269adbb43146d28bfc90c785c01dbed11cc6c16fc10406a git-partial-sha1-branch-head-68c197d0879d485f4f6c-git4.tar.gz +sha256 2c1126513651b0d346a4e6d1bb75ac1c9999217e18026302d27bea47b06c7fb2 file diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-branch-head/git-partial-sha1-branch-head.mk b/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-branch-head/git-partial-sha1-branch-head.mk new file mode 100644 index 00000000..6d4177c5 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-branch-head/git-partial-sha1-branch-head.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# git-partial-sha1-branch-head +# +################################################################################ + +GIT_PARTIAL_SHA1_BRANCH_HEAD_VERSION = 68c197d0879d485f4f6c +GIT_PARTIAL_SHA1_BRANCH_HEAD_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git +GIT_PARTIAL_SHA1_BRANCH_HEAD_LICENSE_FILES = file + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-reachable-by-branch/git-partial-sha1-reachable-by-branch.hash b/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-reachable-by-branch/git-partial-sha1-reachable-by-branch.hash new file mode 100644 index 00000000..633b2bb6 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-reachable-by-branch/git-partial-sha1-reachable-by-branch.hash @@ -0,0 +1,2 @@ +sha256 2baa9ab4c5cab2348de03609288c9c874f1f56e4373d3d089e83f381d45d4e68 git-partial-sha1-reachable-by-branch-317406308d9259e2231b-git4.tar.gz +sha256 fabbc65c442bacb5e69b7adfea6d14fbbfc1327134322efd12771dc84387d507 file diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-reachable-by-branch/git-partial-sha1-reachable-by-branch.mk b/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-reachable-by-branch/git-partial-sha1-reachable-by-branch.mk new file mode 100644 index 00000000..2f65b5c9 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-reachable-by-branch/git-partial-sha1-reachable-by-branch.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# git-partial-sha1-reachable-by-branch +# +################################################################################ + +GIT_PARTIAL_SHA1_REACHABLE_BY_BRANCH_VERSION = 317406308d9259e2231b +GIT_PARTIAL_SHA1_REACHABLE_BY_BRANCH_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git +GIT_PARTIAL_SHA1_REACHABLE_BY_BRANCH_LICENSE_FILES = file + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-reachable-by-tag/git-partial-sha1-reachable-by-tag.hash b/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-reachable-by-tag/git-partial-sha1-reachable-by-tag.hash new file mode 100644 index 00000000..60582b09 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-reachable-by-tag/git-partial-sha1-reachable-by-tag.hash @@ -0,0 +1,2 @@ +sha256 8042df3cc0a7427d1273a846ef5c38ebf589ba7a2ae8158fed3d29f5fea1cad3 git-partial-sha1-reachable-by-tag-46bae5b639e5a18e2cc4-git4.tar.gz +sha256 2de87d77a2f226813f2d9bda906e970e4195605cdba6680443c0c04d89c532b6 file diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-reachable-by-tag/git-partial-sha1-reachable-by-tag.mk b/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-reachable-by-tag/git-partial-sha1-reachable-by-tag.mk new file mode 100644 index 00000000..05aa659d --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-reachable-by-tag/git-partial-sha1-reachable-by-tag.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# git-partial-sha1-reachable-by-tag +# +################################################################################ + +GIT_PARTIAL_SHA1_REACHABLE_BY_TAG_VERSION = 46bae5b639e5a18e2cc4 +GIT_PARTIAL_SHA1_REACHABLE_BY_TAG_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git +GIT_PARTIAL_SHA1_REACHABLE_BY_TAG_LICENSE_FILES = file + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-tag-itself/git-partial-sha1-tag-itself.hash b/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-tag-itself/git-partial-sha1-tag-itself.hash new file mode 100644 index 00000000..9fd26d61 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-tag-itself/git-partial-sha1-tag-itself.hash @@ -0,0 +1,2 @@ +sha256 be18eb6180f33ad01c09eefa40d8b58e09a9049d90cedd20a51ef2045beb92ad git-partial-sha1-tag-itself-2b0e0d98a49c97da6a61-git4.tar.gz +sha256 6de8772a0a58fa62e2b8c58d4dae55c9db7534ad3b3918ecc849a9008d58f081 file diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-tag-itself/git-partial-sha1-tag-itself.mk b/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-tag-itself/git-partial-sha1-tag-itself.mk new file mode 100644 index 00000000..51549239 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-tag-itself/git-partial-sha1-tag-itself.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# git-partial-sha1-tag-itself +# +################################################################################ + +GIT_PARTIAL_SHA1_TAG_ITSELF_VERSION = 2b0e0d98a49c97da6a61 +GIT_PARTIAL_SHA1_TAG_ITSELF_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git +GIT_PARTIAL_SHA1_TAG_ITSELF_LICENSE_FILES = file + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-tag-points-to/git-partial-sha1-tag-points-to.hash b/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-tag-points-to/git-partial-sha1-tag-points-to.hash new file mode 100644 index 00000000..353c8f07 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-tag-points-to/git-partial-sha1-tag-points-to.hash @@ -0,0 +1,2 @@ +sha256 36d9064cfd4a028f89b1e482b2543ee15df5ad0076714c175db54f3943f37ca3 git-partial-sha1-tag-points-to-516c9c5f64ec66534d4d-git4.tar.gz +sha256 6de8772a0a58fa62e2b8c58d4dae55c9db7534ad3b3918ecc849a9008d58f081 file diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-tag-points-to/git-partial-sha1-tag-points-to.mk b/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-tag-points-to/git-partial-sha1-tag-points-to.mk new file mode 100644 index 00000000..c810e811 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-tag-points-to/git-partial-sha1-tag-points-to.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# git-partial-sha1-tag-points-to +# +################################################################################ + +GIT_PARTIAL_SHA1_TAG_POINTS_TO_VERSION = 516c9c5f64ec66534d4d +GIT_PARTIAL_SHA1_TAG_POINTS_TO_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git +GIT_PARTIAL_SHA1_TAG_POINTS_TO_LICENSE_FILES = file + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-sha1-branch-head/git-sha1-branch-head.hash b/support/testing/tests/download/br2-external/git-refs/package/git-sha1-branch-head/git-sha1-branch-head.hash new file mode 100644 index 00000000..64e3ee45 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-sha1-branch-head/git-sha1-branch-head.hash @@ -0,0 +1,2 @@ +sha256 94d3addcdc2bf76c996a9278f16d0bef966522e2fc1367e0039cac419e51f4ca git-sha1-branch-head-68c197d0879d485f4f6cee85544722b79e68e59f-git4.tar.gz +sha256 2c1126513651b0d346a4e6d1bb75ac1c9999217e18026302d27bea47b06c7fb2 file diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-sha1-branch-head/git-sha1-branch-head.mk b/support/testing/tests/download/br2-external/git-refs/package/git-sha1-branch-head/git-sha1-branch-head.mk new file mode 100644 index 00000000..d3ecaa85 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-sha1-branch-head/git-sha1-branch-head.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# git-sha1-branch-head +# +################################################################################ + +GIT_SHA1_BRANCH_HEAD_VERSION = 68c197d0879d485f4f6cee85544722b79e68e59f +GIT_SHA1_BRANCH_HEAD_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git +GIT_SHA1_BRANCH_HEAD_LICENSE_FILES = file + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-sha1-reachable-by-branch/git-sha1-reachable-by-branch.hash b/support/testing/tests/download/br2-external/git-refs/package/git-sha1-reachable-by-branch/git-sha1-reachable-by-branch.hash new file mode 100644 index 00000000..509cfed7 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-sha1-reachable-by-branch/git-sha1-reachable-by-branch.hash @@ -0,0 +1,2 @@ +sha256 1ddd9110d10762476e87b7a8c66cc9fa5df0e29a0476e242a68e0493a4b97f1f git-sha1-reachable-by-branch-317406308d9259e2231bd0d6ddad3de3832bce08-git4.tar.gz +sha256 fabbc65c442bacb5e69b7adfea6d14fbbfc1327134322efd12771dc84387d507 file diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-sha1-reachable-by-branch/git-sha1-reachable-by-branch.mk b/support/testing/tests/download/br2-external/git-refs/package/git-sha1-reachable-by-branch/git-sha1-reachable-by-branch.mk new file mode 100644 index 00000000..badf9e13 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-sha1-reachable-by-branch/git-sha1-reachable-by-branch.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# git-sha1-reachable-by-branch +# +################################################################################ + +GIT_SHA1_REACHABLE_BY_BRANCH_VERSION = 317406308d9259e2231bd0d6ddad3de3832bce08 +GIT_SHA1_REACHABLE_BY_BRANCH_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git +GIT_SHA1_REACHABLE_BY_BRANCH_LICENSE_FILES = file + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-sha1-reachable-by-tag/git-sha1-reachable-by-tag.hash b/support/testing/tests/download/br2-external/git-refs/package/git-sha1-reachable-by-tag/git-sha1-reachable-by-tag.hash new file mode 100644 index 00000000..8c75787a --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-sha1-reachable-by-tag/git-sha1-reachable-by-tag.hash @@ -0,0 +1,2 @@ +sha256 f2903e4b043fca2abb96a4aeabfcd83914c81929a9e880a743f23da86f7c68d8 git-sha1-reachable-by-tag-46bae5b639e5a18e2cc4dc508f080d566baeff59-git4.tar.gz +sha256 2de87d77a2f226813f2d9bda906e970e4195605cdba6680443c0c04d89c532b6 file diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-sha1-reachable-by-tag/git-sha1-reachable-by-tag.mk b/support/testing/tests/download/br2-external/git-refs/package/git-sha1-reachable-by-tag/git-sha1-reachable-by-tag.mk new file mode 100644 index 00000000..b5fde7b5 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-sha1-reachable-by-tag/git-sha1-reachable-by-tag.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# git-sha1-reachable-by-tag +# +################################################################################ + +GIT_SHA1_REACHABLE_BY_TAG_VERSION = 46bae5b639e5a18e2cc4dc508f080d566baeff59 +GIT_SHA1_REACHABLE_BY_TAG_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git +GIT_SHA1_REACHABLE_BY_TAG_LICENSE_FILES = file + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-sha1-tag-itself/git-sha1-tag-itself.hash b/support/testing/tests/download/br2-external/git-refs/package/git-sha1-tag-itself/git-sha1-tag-itself.hash new file mode 100644 index 00000000..0adb526a --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-sha1-tag-itself/git-sha1-tag-itself.hash @@ -0,0 +1,2 @@ +sha256 6a7731130e07292ca92aec57b2ea495318e53403b2d455d1cb0fd1cd256829af git-sha1-tag-itself-2b0e0d98a49c97da6a618ab36337e2058eb733a2-git4.tar.gz +sha256 6de8772a0a58fa62e2b8c58d4dae55c9db7534ad3b3918ecc849a9008d58f081 file diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-sha1-tag-itself/git-sha1-tag-itself.mk b/support/testing/tests/download/br2-external/git-refs/package/git-sha1-tag-itself/git-sha1-tag-itself.mk new file mode 100644 index 00000000..89144966 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-sha1-tag-itself/git-sha1-tag-itself.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# git-sha1-tag-itself +# +################################################################################ + +GIT_SHA1_TAG_ITSELF_VERSION = 2b0e0d98a49c97da6a618ab36337e2058eb733a2 +GIT_SHA1_TAG_ITSELF_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git +GIT_SHA1_TAG_ITSELF_LICENSE_FILES = file + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-sha1-tag-points-to/git-sha1-tag-points-to.hash b/support/testing/tests/download/br2-external/git-refs/package/git-sha1-tag-points-to/git-sha1-tag-points-to.hash new file mode 100644 index 00000000..870c08fa --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-sha1-tag-points-to/git-sha1-tag-points-to.hash @@ -0,0 +1,2 @@ +sha256 0f09af0d4b9e0fb5969eab514d6b39ef8433607e92623ca1c641dbf25d7b6518 git-sha1-tag-points-to-516c9c5f64ec66534d4d069c2e408d9ae4dce023-git4.tar.gz +sha256 6de8772a0a58fa62e2b8c58d4dae55c9db7534ad3b3918ecc849a9008d58f081 file diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-sha1-tag-points-to/git-sha1-tag-points-to.mk b/support/testing/tests/download/br2-external/git-refs/package/git-sha1-tag-points-to/git-sha1-tag-points-to.mk new file mode 100644 index 00000000..adaae732 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-sha1-tag-points-to/git-sha1-tag-points-to.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# git-sha1-tag-points-to +# +################################################################################ + +GIT_SHA1_TAG_POINTS_TO_VERSION = 516c9c5f64ec66534d4d069c2e408d9ae4dce023 +GIT_SHA1_TAG_POINTS_TO_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git +GIT_SHA1_TAG_POINTS_TO_LICENSE_FILES = file + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-submodule-disabled/git-submodule-disabled.hash b/support/testing/tests/download/br2-external/git-refs/package/git-submodule-disabled/git-submodule-disabled.hash new file mode 100644 index 00000000..930252ef --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-submodule-disabled/git-submodule-disabled.hash @@ -0,0 +1,2 @@ +sha256 f04937956fc45ca9bfaf911aa513956369256a6e53e733d9e7e06efb9cf05600 git-submodule-disabled-a9dbc1e23c45e8e1b88c0448763f54d714eb6f8f-git4.tar.gz +sha256 ba8b6ddc4726bfb6a05045ebfd8c43263c968ad1bc601bd46a25bc055008eddc file diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-submodule-disabled/git-submodule-disabled.mk b/support/testing/tests/download/br2-external/git-refs/package/git-submodule-disabled/git-submodule-disabled.mk new file mode 100644 index 00000000..7a35b3b5 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-submodule-disabled/git-submodule-disabled.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# git-submodule-disabled +# +################################################################################ + +GIT_SUBMODULE_DISABLED_VERSION = a9dbc1e23c45e8e1b88c0448763f54d714eb6f8f +GIT_SUBMODULE_DISABLED_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git +GIT_SUBMODULE_DISABLED_LICENSE_FILES = file + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-submodule-enabled/git-submodule-enabled.hash b/support/testing/tests/download/br2-external/git-refs/package/git-submodule-enabled/git-submodule-enabled.hash new file mode 100644 index 00000000..a147a8e1 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-submodule-enabled/git-submodule-enabled.hash @@ -0,0 +1 @@ +sha256 fd92a10055e233cb8ca857e9b68fa52c57803fc970cb96357a7350f9e8e4302f git-submodule-enabled-a9dbc1e23c45e8e1b88c0448763f54d714eb6f8f-git4.tar.gz diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-submodule-enabled/git-submodule-enabled.mk b/support/testing/tests/download/br2-external/git-refs/package/git-submodule-enabled/git-submodule-enabled.mk new file mode 100644 index 00000000..48a42f5e --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-submodule-enabled/git-submodule-enabled.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# git-submodule-enabled +# +################################################################################ + +GIT_SUBMODULE_ENABLED_VERSION = a9dbc1e23c45e8e1b88c0448763f54d714eb6f8f +GIT_SUBMODULE_ENABLED_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git +GIT_SUBMODULE_ENABLED_GIT_SUBMODULES = YES + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-tag/git-tag.hash b/support/testing/tests/download/br2-external/git-refs/package/git-tag/git-tag.hash new file mode 100644 index 00000000..9ebeebb3 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-tag/git-tag.hash @@ -0,0 +1,2 @@ +sha256 92fa45cdb205906f32be4c5bb4f11d09221b63908aab09c6475911cf89f3a0b7 git-tag-mytag-git4.tar.gz +sha256 6de8772a0a58fa62e2b8c58d4dae55c9db7534ad3b3918ecc849a9008d58f081 file diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-tag/git-tag.mk b/support/testing/tests/download/br2-external/git-refs/package/git-tag/git-tag.mk new file mode 100644 index 00000000..6960ceb2 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-tag/git-tag.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# git-tag +# +################################################################################ + +GIT_TAG_VERSION = mytag +GIT_TAG_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git +GIT_TAG_LICENSE_FILES = file + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-wrong-content/git-wrong-content.hash b/support/testing/tests/download/br2-external/git-refs/package/git-wrong-content/git-wrong-content.hash new file mode 100644 index 00000000..c39cd633 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-wrong-content/git-wrong-content.hash @@ -0,0 +1,2 @@ + sha256 4a230e667227310289438cd7d899276a0d45ca8778abfd043dfc0a10ed2c9085 git-wrong-content-a238b1dfcd825d47d834af3c5223417c8411d90d-git4.tar.gz + sha256 0000000000000000000000000000000000000000000000000000000000000000 file diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-wrong-content/git-wrong-content.mk b/support/testing/tests/download/br2-external/git-refs/package/git-wrong-content/git-wrong-content.mk new file mode 100644 index 00000000..786224da --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-wrong-content/git-wrong-content.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# git-wrong-content +# +################################################################################ + +GIT_WRONG_CONTENT_VERSION = a238b1dfcd825d47d834af3c5223417c8411d90d +GIT_WRONG_CONTENT_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git +GIT_WRONG_CONTENT_LICENSE_FILES = file + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/git-refs/package/git-wrong-sha1/git-wrong-sha1.mk b/support/testing/tests/download/br2-external/git-refs/package/git-wrong-sha1/git-wrong-sha1.mk new file mode 100644 index 00000000..f9d0d222 --- /dev/null +++ b/support/testing/tests/download/br2-external/git-refs/package/git-wrong-sha1/git-wrong-sha1.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# git-wrong-sha1 +# +################################################################################ + +GIT_WRONG_SHA1_VERSION = 0000000000000000000000000000000000000000 +GIT_WRONG_SHA1_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git +GIT_WRONG_SHA1_LICENSE_FILES = file + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/github/Config.in b/support/testing/tests/download/br2-external/github/Config.in new file mode 100644 index 00000000..e69de29b diff --git a/support/testing/tests/download/br2-external/github/external.desc b/support/testing/tests/download/br2-external/github/external.desc new file mode 100644 index 00000000..b8beea88 --- /dev/null +++ b/support/testing/tests/download/br2-external/github/external.desc @@ -0,0 +1 @@ +name: GITHUB diff --git a/support/testing/tests/download/br2-external/github/external.mk b/support/testing/tests/download/br2-external/github/external.mk new file mode 100644 index 00000000..e4e5524c --- /dev/null +++ b/support/testing/tests/download/br2-external/github/external.mk @@ -0,0 +1 @@ +include $(sort $(wildcard $(BR2_EXTERNAL_GITHUB_PATH)/package/*/*.mk)) diff --git a/support/testing/tests/download/br2-external/github/package/github-helper-hash/github-helper-hash.hash b/support/testing/tests/download/br2-external/github/package/github-helper-hash/github-helper-hash.hash new file mode 100644 index 00000000..a941060b --- /dev/null +++ b/support/testing/tests/download/br2-external/github/package/github-helper-hash/github-helper-hash.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 4064739881453831bceeae81af8947cbd6c1fe03e052ac17b82ae5b3360d83f8 github-helper-hash-e2fba6457bd9d9c720540332eaf0c1f8c29eab00.tar.gz +sha256 9755181e27175cb3510b4da8629caa406fb355a19aa8e7d55f06bf8ab33323c4 COPYING diff --git a/support/testing/tests/download/br2-external/github/package/github-helper-hash/github-helper-hash.mk b/support/testing/tests/download/br2-external/github/package/github-helper-hash/github-helper-hash.mk new file mode 100644 index 00000000..e1fa5aab --- /dev/null +++ b/support/testing/tests/download/br2-external/github/package/github-helper-hash/github-helper-hash.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# github-helper-hash +# +################################################################################ + +GITHUB_HELPER_HASH_VERSION = e2fba6457bd9d9c720540332eaf0c1f8c29eab00 +GITHUB_HELPER_HASH_SITE = $(call github,buildroot,buildroot,$(GITHUB_HELPER_HASH_VERSION)) +GITHUB_HELPER_HASH_LICENSE_FILES = COPYING + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/github/package/github-helper-tag/github-helper-tag.hash b/support/testing/tests/download/br2-external/github/package/github-helper-tag/github-helper-tag.hash new file mode 100644 index 00000000..466d2ac4 --- /dev/null +++ b/support/testing/tests/download/br2-external/github/package/github-helper-tag/github-helper-tag.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 959a953bbd91e6ed6db8d63a45a986400878b6bb486455231b2976218301c3d2 github-helper-tag-2021.02.tar.gz +sha256 9755181e27175cb3510b4da8629caa406fb355a19aa8e7d55f06bf8ab33323c4 COPYING diff --git a/support/testing/tests/download/br2-external/github/package/github-helper-tag/github-helper-tag.mk b/support/testing/tests/download/br2-external/github/package/github-helper-tag/github-helper-tag.mk new file mode 100644 index 00000000..b1ff66d8 --- /dev/null +++ b/support/testing/tests/download/br2-external/github/package/github-helper-tag/github-helper-tag.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# github-helper-tag +# +################################################################################ + +GITHUB_HELPER_TAG_VERSION = 2021.02 +GITHUB_HELPER_TAG_SITE = $(call github,buildroot,buildroot,$(GITHUB_HELPER_TAG_VERSION)) +GITHUB_HELPER_TAG_LICENSE_FILES = COPYING + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/github/package/github-release/github-release.hash b/support/testing/tests/download/br2-external/github/package/github-release/github-release.hash new file mode 100644 index 00000000..78a25dd2 --- /dev/null +++ b/support/testing/tests/download/br2-external/github/package/github-release/github-release.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 f4cb17b21928e36ec27de5c5294dea6ec1de4acd7ee6c56d6ecc75319cbcaefa systemd-bootchart-233.tar.xz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSE.LGPL2.1 diff --git a/support/testing/tests/download/br2-external/github/package/github-release/github-release.mk b/support/testing/tests/download/br2-external/github/package/github-release/github-release.mk new file mode 100644 index 00000000..34409e1c --- /dev/null +++ b/support/testing/tests/download/br2-external/github/package/github-release/github-release.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# github-release +# +################################################################################ + +GITHUB_RELEASE_VERSION = 233 +GITHUB_RELEASE_SITE = https://github.com/systemd/systemd-bootchart/releases/download/v$(GITHUB_RELEASE_VERSION) +GITHUB_RELEASE_SOURCE = systemd-bootchart-$(GITHUB_RELEASE_VERSION).tar.xz +GITHUB_RELEASE_LICENSE_FILES = LICENSE.LGPL2.1 + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/gitlab/Config.in b/support/testing/tests/download/br2-external/gitlab/Config.in new file mode 100644 index 00000000..e69de29b diff --git a/support/testing/tests/download/br2-external/gitlab/external.desc b/support/testing/tests/download/br2-external/gitlab/external.desc new file mode 100644 index 00000000..eafc8a43 --- /dev/null +++ b/support/testing/tests/download/br2-external/gitlab/external.desc @@ -0,0 +1 @@ +name: GITLAB diff --git a/support/testing/tests/download/br2-external/gitlab/external.mk b/support/testing/tests/download/br2-external/gitlab/external.mk new file mode 100644 index 00000000..8de12032 --- /dev/null +++ b/support/testing/tests/download/br2-external/gitlab/external.mk @@ -0,0 +1 @@ +include $(sort $(wildcard $(BR2_EXTERNAL_GITLAB_PATH)/package/*/*.mk)) diff --git a/support/testing/tests/download/br2-external/gitlab/package/gitlab-helper-hash/gitlab-helper-hash.hash b/support/testing/tests/download/br2-external/gitlab/package/gitlab-helper-hash/gitlab-helper-hash.hash new file mode 100644 index 00000000..79684e97 --- /dev/null +++ b/support/testing/tests/download/br2-external/gitlab/package/gitlab-helper-hash/gitlab-helper-hash.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 28f3b63454a7de6d8fb154dfa1e2e203afeb34db006661329e273137f8fe3dce gitlab-helper-hash-21a378a7858460809ffef1c96a07a493d709730c.tar.gz +sha256 309875d925041d909bc705473d6c4b7905272aea15c1c2389088c26c161bae1f license.txt diff --git a/support/testing/tests/download/br2-external/gitlab/package/gitlab-helper-hash/gitlab-helper-hash.mk b/support/testing/tests/download/br2-external/gitlab/package/gitlab-helper-hash/gitlab-helper-hash.mk new file mode 100644 index 00000000..44a15611 --- /dev/null +++ b/support/testing/tests/download/br2-external/gitlab/package/gitlab-helper-hash/gitlab-helper-hash.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# gitlab-helper-hash +# +################################################################################ + +GITLAB_HELPER_HASH_VERSION = 21a378a7858460809ffef1c96a07a493d709730c +GITLAB_HELPER_HASH_SITE = $(call gitlab,solarus-games,solarus,$(GITLAB_HELPER_HASH_VERSION)) + +GITLAB_HELPER_HASH_LICENSE_FILES = license.txt + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/gitlab/package/gitlab-helper-tag/gitlab-helper-tag.hash b/support/testing/tests/download/br2-external/gitlab/package/gitlab-helper-tag/gitlab-helper-tag.hash new file mode 100644 index 00000000..1c50bc3c --- /dev/null +++ b/support/testing/tests/download/br2-external/gitlab/package/gitlab-helper-tag/gitlab-helper-tag.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 ef08b22999431b7f81f9b74408221b8a5a3ab5b0f646a835443a3c37cb2fb979 gitlab-helper-tag-1.6.5.tar.gz +sha256 309875d925041d909bc705473d6c4b7905272aea15c1c2389088c26c161bae1f license.txt diff --git a/support/testing/tests/download/br2-external/gitlab/package/gitlab-helper-tag/gitlab-helper-tag.mk b/support/testing/tests/download/br2-external/gitlab/package/gitlab-helper-tag/gitlab-helper-tag.mk new file mode 100644 index 00000000..fb2fc49c --- /dev/null +++ b/support/testing/tests/download/br2-external/gitlab/package/gitlab-helper-tag/gitlab-helper-tag.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# gitlab-helper-tag +# +################################################################################ + +GITLAB_HELPER_TAG_VERSION = 1.6.5 +GITLAB_HELPER_TAG_SITE = $(call gitlab,solarus-games,solarus,v$(GITLAB_HELPER_TAG_VERSION)) +GITLAB_HELPER_TAG_LICENSE_FILES = license.txt + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/gitlab/package/gitlab-release/gitlab-release.hash b/support/testing/tests/download/br2-external/gitlab/package/gitlab-release/gitlab-release.hash new file mode 100644 index 00000000..e4dfb6eb --- /dev/null +++ b/support/testing/tests/download/br2-external/gitlab/package/gitlab-release/gitlab-release.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 12b88efa4d0d95af08db05a50b3dcb217c0eb2bfc67b483779e33d498ddb2f95 iucode-tool_2.3.1.tar.xz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/support/testing/tests/download/br2-external/gitlab/package/gitlab-release/gitlab-release.mk b/support/testing/tests/download/br2-external/gitlab/package/gitlab-release/gitlab-release.mk new file mode 100644 index 00000000..2510ac63 --- /dev/null +++ b/support/testing/tests/download/br2-external/gitlab/package/gitlab-release/gitlab-release.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# gitlab-release +# +################################################################################ + +GITLAB_RELEASE_VERSION = 2.3.1 +GITLAB_RELEASE_SITE = https://gitlab.com/iucode-tool/releases/raw/master +GITLAB_RELEASE_SOURCE = iucode-tool_$(GITLAB_RELEASE_VERSION).tar.xz +GITLAB_RELEASE_LICENSE_FILES = COPYING + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/ssh/Config.in b/support/testing/tests/download/br2-external/ssh/Config.in new file mode 100644 index 00000000..e69de29b diff --git a/support/testing/tests/download/br2-external/ssh/external.desc b/support/testing/tests/download/br2-external/ssh/external.desc new file mode 100644 index 00000000..2fe078ed --- /dev/null +++ b/support/testing/tests/download/br2-external/ssh/external.desc @@ -0,0 +1 @@ +name: SSH diff --git a/support/testing/tests/download/br2-external/ssh/external.mk b/support/testing/tests/download/br2-external/ssh/external.mk new file mode 100644 index 00000000..c8f0dc74 --- /dev/null +++ b/support/testing/tests/download/br2-external/ssh/external.mk @@ -0,0 +1 @@ +include $(sort $(wildcard $(BR2_EXTERNAL_SSH_PATH)/package/*/*.mk)) diff --git a/support/testing/tests/download/br2-external/ssh/package/scp/scp.hash b/support/testing/tests/download/br2-external/ssh/package/scp/scp.hash new file mode 100644 index 00000000..31353a88 --- /dev/null +++ b/support/testing/tests/download/br2-external/ssh/package/scp/scp.hash @@ -0,0 +1 @@ +sha256 b457c1a37ba7405e8806b93f3d5cc82165db0b0cad25d203f112e32c7a30c0be ssh-test-1.0.tar.xz diff --git a/support/testing/tests/download/br2-external/ssh/package/scp/scp.mk b/support/testing/tests/download/br2-external/ssh/package/scp/scp.mk new file mode 100644 index 00000000..3451aaf0 --- /dev/null +++ b/support/testing/tests/download/br2-external/ssh/package/scp/scp.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# scp +# +################################################################################ + +SCP_VERSION = 1.0 +SCP_SOURCE = ssh-test-$(SCP_VERSION).tar.xz +SCP_SITE = scp://localhost:$(SSHD_TEST_DIR) +SCP_DL_OPTS = \ + -P $(SSHD_PORT_NUMBER) \ + -i $(SSH_IDENTITY) \ + -o "UserKnownHostsFile=/dev/null" \ + -o "StrictHostKeyChecking=no" \ + -o "CheckHostIP=no" + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/br2-external/ssh/package/sftp/sftp.hash b/support/testing/tests/download/br2-external/ssh/package/sftp/sftp.hash new file mode 100644 index 00000000..31353a88 --- /dev/null +++ b/support/testing/tests/download/br2-external/ssh/package/sftp/sftp.hash @@ -0,0 +1 @@ +sha256 b457c1a37ba7405e8806b93f3d5cc82165db0b0cad25d203f112e32c7a30c0be ssh-test-1.0.tar.xz diff --git a/support/testing/tests/download/br2-external/ssh/package/sftp/sftp.mk b/support/testing/tests/download/br2-external/ssh/package/sftp/sftp.mk new file mode 100644 index 00000000..58d91f6a --- /dev/null +++ b/support/testing/tests/download/br2-external/ssh/package/sftp/sftp.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# sftp +# +################################################################################ + +SFTP_VERSION = 1.0 +SFTP_SOURCE = ssh-test-$(SFTP_VERSION).tar.xz +SFTP_SITE = sftp://localhost/$(SSHD_TEST_DIR) +SFTP_DL_OPTS = \ + -P $(SSHD_PORT_NUMBER) \ + -i $(SSH_IDENTITY) \ + -o "UserKnownHostsFile=/dev/null" \ + -o "StrictHostKeyChecking=no" \ + -o "CheckHostIP=no" + +$(eval $(generic-package)) diff --git a/support/testing/tests/download/git-remote/refs-sub1.git/.gitattributes b/support/testing/tests/download/git-remote/refs-sub1.git/.gitattributes new file mode 100644 index 00000000..eb50c64a --- /dev/null +++ b/support/testing/tests/download/git-remote/refs-sub1.git/.gitattributes @@ -0,0 +1 @@ +objects/*/* binary diff --git a/support/testing/tests/download/git-remote/refs-sub1.git/HEAD b/support/testing/tests/download/git-remote/refs-sub1.git/HEAD new file mode 100644 index 00000000..4e92c1f2 --- /dev/null +++ b/support/testing/tests/download/git-remote/refs-sub1.git/HEAD @@ -0,0 +1 @@ +cb545facf77bbc5f24f95b6d503c338d10b7b717 diff --git a/support/testing/tests/download/git-remote/refs-sub1.git/config b/support/testing/tests/download/git-remote/refs-sub1.git/config new file mode 100644 index 00000000..07d359d0 --- /dev/null +++ b/support/testing/tests/download/git-remote/refs-sub1.git/config @@ -0,0 +1,4 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = true diff --git a/support/testing/tests/download/git-remote/refs-sub1.git/objects/07/cabc655213bdf7087d8dd50fda95124e935570 b/support/testing/tests/download/git-remote/refs-sub1.git/objects/07/cabc655213bdf7087d8dd50fda95124e935570 new file mode 100644 index 00000000..cbf5085a Binary files /dev/null and b/support/testing/tests/download/git-remote/refs-sub1.git/objects/07/cabc655213bdf7087d8dd50fda95124e935570 differ diff --git a/support/testing/tests/download/git-remote/refs-sub1.git/objects/1d/f823cb8a6d1866148ae50a8009762a9c4c777f b/support/testing/tests/download/git-remote/refs-sub1.git/objects/1d/f823cb8a6d1866148ae50a8009762a9c4c777f new file mode 100644 index 00000000..04055b89 Binary files /dev/null and b/support/testing/tests/download/git-remote/refs-sub1.git/objects/1d/f823cb8a6d1866148ae50a8009762a9c4c777f differ diff --git a/support/testing/tests/download/git-remote/refs-sub1.git/objects/7d/52f458bdb0f9f5a4beb46fa82824421b8b988e b/support/testing/tests/download/git-remote/refs-sub1.git/objects/7d/52f458bdb0f9f5a4beb46fa82824421b8b988e new file mode 100644 index 00000000..2b78a019 Binary files /dev/null and b/support/testing/tests/download/git-remote/refs-sub1.git/objects/7d/52f458bdb0f9f5a4beb46fa82824421b8b988e differ diff --git a/support/testing/tests/download/git-remote/refs-sub1.git/objects/99/f2e3e1cb15f9b52fa29f66d380dda061d917ab b/support/testing/tests/download/git-remote/refs-sub1.git/objects/99/f2e3e1cb15f9b52fa29f66d380dda061d917ab new file mode 100644 index 00000000..9db72668 Binary files /dev/null and b/support/testing/tests/download/git-remote/refs-sub1.git/objects/99/f2e3e1cb15f9b52fa29f66d380dda061d917ab differ diff --git a/support/testing/tests/download/git-remote/refs-sub1.git/objects/a1/30af1626bbadd64841b2cbcb6ac4ed0638ba1a b/support/testing/tests/download/git-remote/refs-sub1.git/objects/a1/30af1626bbadd64841b2cbcb6ac4ed0638ba1a new file mode 100644 index 00000000..f49d5332 Binary files /dev/null and b/support/testing/tests/download/git-remote/refs-sub1.git/objects/a1/30af1626bbadd64841b2cbcb6ac4ed0638ba1a differ diff --git a/support/testing/tests/download/git-remote/refs-sub1.git/objects/bc/c81ba6e5bd8bf52c95688ae8d3e697e131fa23 b/support/testing/tests/download/git-remote/refs-sub1.git/objects/bc/c81ba6e5bd8bf52c95688ae8d3e697e131fa23 new file mode 100644 index 00000000..7d2a9d55 Binary files /dev/null and b/support/testing/tests/download/git-remote/refs-sub1.git/objects/bc/c81ba6e5bd8bf52c95688ae8d3e697e131fa23 differ diff --git a/support/testing/tests/download/git-remote/refs-sub1.git/objects/cb/545facf77bbc5f24f95b6d503c338d10b7b717 b/support/testing/tests/download/git-remote/refs-sub1.git/objects/cb/545facf77bbc5f24f95b6d503c338d10b7b717 new file mode 100644 index 00000000..dc7de294 --- /dev/null +++ b/support/testing/tests/download/git-remote/refs-sub1.git/objects/cb/545facf77bbc5f24f95b6d503c338d10b7b717 @@ -0,0 +1 @@ +x­ν Â0@ajOq $:;²#„X€&8ÿ…q,S°=‘(èíW<=_ræjœv­ÆÖ&‡(½“:Y§U"e“1a˜0B#ƒ•#9AÏv+.쩆gª�W_w†Cý`Ÿ¿xš3ñÒû’� 5N¨�4*D±é6ÑâŸr‚WnL‹Wž×º’Rç^û_fÅW` \ No newline at end of file diff --git a/support/testing/tests/download/git-remote/refs-sub1.git/objects/dd/130f6f4629514adaf2e03407f3ed9344eb6cd6 b/support/testing/tests/download/git-remote/refs-sub1.git/objects/dd/130f6f4629514adaf2e03407f3ed9344eb6cd6 new file mode 100644 index 00000000..37037d39 Binary files /dev/null and b/support/testing/tests/download/git-remote/refs-sub1.git/objects/dd/130f6f4629514adaf2e03407f3ed9344eb6cd6 differ diff --git a/support/testing/tests/download/git-remote/refs-sub1.git/objects/e7/9c5e8f964493290a409888d5413a737e8e5dd5 b/support/testing/tests/download/git-remote/refs-sub1.git/objects/e7/9c5e8f964493290a409888d5413a737e8e5dd5 new file mode 100644 index 00000000..df2037a2 Binary files /dev/null and b/support/testing/tests/download/git-remote/refs-sub1.git/objects/e7/9c5e8f964493290a409888d5413a737e8e5dd5 differ diff --git a/support/testing/tests/download/git-remote/refs-sub1.git/objects/f8/001e5780100962a5e30a25cbc4c9609cfc7bf3 b/support/testing/tests/download/git-remote/refs-sub1.git/objects/f8/001e5780100962a5e30a25cbc4c9609cfc7bf3 new file mode 100644 index 00000000..d824d3c1 Binary files /dev/null and b/support/testing/tests/download/git-remote/refs-sub1.git/objects/f8/001e5780100962a5e30a25cbc4c9609cfc7bf3 differ diff --git a/support/testing/tests/download/git-remote/refs-sub1.git/refs/heads/submodule b/support/testing/tests/download/git-remote/refs-sub1.git/refs/heads/submodule new file mode 100644 index 00000000..bf97dc41 --- /dev/null +++ b/support/testing/tests/download/git-remote/refs-sub1.git/refs/heads/submodule @@ -0,0 +1 @@ +1df823cb8a6d1866148ae50a8009762a9c4c777f diff --git a/support/testing/tests/download/git-remote/refs-sub2.git/.gitattributes b/support/testing/tests/download/git-remote/refs-sub2.git/.gitattributes new file mode 100644 index 00000000..eb50c64a --- /dev/null +++ b/support/testing/tests/download/git-remote/refs-sub2.git/.gitattributes @@ -0,0 +1 @@ +objects/*/* binary diff --git a/support/testing/tests/download/git-remote/refs-sub2.git/HEAD b/support/testing/tests/download/git-remote/refs-sub2.git/HEAD new file mode 100644 index 00000000..bbf19a4b --- /dev/null +++ b/support/testing/tests/download/git-remote/refs-sub2.git/HEAD @@ -0,0 +1 @@ +32d61bae693af7879da63b89a60d3ae67f851e56 diff --git a/support/testing/tests/download/git-remote/refs-sub2.git/config b/support/testing/tests/download/git-remote/refs-sub2.git/config new file mode 100644 index 00000000..07d359d0 --- /dev/null +++ b/support/testing/tests/download/git-remote/refs-sub2.git/config @@ -0,0 +1,4 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = true diff --git a/support/testing/tests/download/git-remote/refs-sub2.git/objects/0a/846af45c3e455789435f49f80d70e86b65b9d7 b/support/testing/tests/download/git-remote/refs-sub2.git/objects/0a/846af45c3e455789435f49f80d70e86b65b9d7 new file mode 100644 index 00000000..aaa29dbd Binary files /dev/null and b/support/testing/tests/download/git-remote/refs-sub2.git/objects/0a/846af45c3e455789435f49f80d70e86b65b9d7 differ diff --git a/support/testing/tests/download/git-remote/refs-sub2.git/objects/0b/32ebd8fc52cec991f18c94be980e85a8341585 b/support/testing/tests/download/git-remote/refs-sub2.git/objects/0b/32ebd8fc52cec991f18c94be980e85a8341585 new file mode 100644 index 00000000..50caf8b6 Binary files /dev/null and b/support/testing/tests/download/git-remote/refs-sub2.git/objects/0b/32ebd8fc52cec991f18c94be980e85a8341585 differ diff --git a/support/testing/tests/download/git-remote/refs-sub2.git/objects/32/d61bae693af7879da63b89a60d3ae67f851e56 b/support/testing/tests/download/git-remote/refs-sub2.git/objects/32/d61bae693af7879da63b89a60d3ae67f851e56 new file mode 100644 index 00000000..a8887b1e --- /dev/null +++ b/support/testing/tests/download/git-remote/refs-sub2.git/objects/32/d61bae693af7879da63b89a60d3ae67f851e56 @@ -0,0 +1 @@ +x­ν Â0@ajOq $:;²#„X€&8ÿ…q,S°=‘(èíW<=_ræjœv­ÆÖ&‡(½“:Y§U"e“1a˜0B#ƒ•#9AÏv+.쩆gª�W_w†Cý`Ÿ¿xš3ñÒû’� 5N¨�-t¨ŦÛD‹Ê ^¹1-B\y^cèJJ�{í™o`Ì`+ \ No newline at end of file diff --git a/support/testing/tests/download/git-remote/refs-sub2.git/objects/3e/9b0a5198c64cea9c00f820433411e3b4d50c1c b/support/testing/tests/download/git-remote/refs-sub2.git/objects/3e/9b0a5198c64cea9c00f820433411e3b4d50c1c new file mode 100644 index 00000000..b1fb722c Binary files /dev/null and b/support/testing/tests/download/git-remote/refs-sub2.git/objects/3e/9b0a5198c64cea9c00f820433411e3b4d50c1c differ diff --git a/support/testing/tests/download/git-remote/refs-sub2.git/objects/85/8f666af75b7c0dfba6b8be7eac5f196e7a1221 b/support/testing/tests/download/git-remote/refs-sub2.git/objects/85/8f666af75b7c0dfba6b8be7eac5f196e7a1221 new file mode 100644 index 00000000..10f24a08 Binary files /dev/null and b/support/testing/tests/download/git-remote/refs-sub2.git/objects/85/8f666af75b7c0dfba6b8be7eac5f196e7a1221 differ diff --git a/support/testing/tests/download/git-remote/refs-sub2.git/objects/99/f2e3e1cb15f9b52fa29f66d380dda061d917ab b/support/testing/tests/download/git-remote/refs-sub2.git/objects/99/f2e3e1cb15f9b52fa29f66d380dda061d917ab new file mode 100644 index 00000000..9db72668 Binary files /dev/null and b/support/testing/tests/download/git-remote/refs-sub2.git/objects/99/f2e3e1cb15f9b52fa29f66d380dda061d917ab differ diff --git a/support/testing/tests/download/git-remote/refs-sub2.git/objects/cd/4d62ff218ab7b4a04f5bfdf800ace087af3ceb b/support/testing/tests/download/git-remote/refs-sub2.git/objects/cd/4d62ff218ab7b4a04f5bfdf800ace087af3ceb new file mode 100644 index 00000000..35d253f0 --- /dev/null +++ b/support/testing/tests/download/git-remote/refs-sub2.git/objects/cd/4d62ff218ab7b4a04f5bfdf800ace087af3ceb @@ -0,0 +1,2 @@ +x­Î=n!†aל‚ ¬5,? ‘eùi’ Ã`#‡Åbq‘Ûg£飴�ô}z©ÕZ†Գ=ŒÎ,5‡hUðä 1È~£µQŠu4É)ì¼~“SÙ�yñKHètô$½ó’½Ul�À縵.ß +aOM¾be¥¶݋<õ<Ö_¼\+–�#µz–ʂëLXä3€Øu�üOwb{ÆyRB¼—ëÊij9Oñóå/­â ãxl) \ No newline at end of file diff --git a/support/testing/tests/download/git-remote/refs-sub2.git/objects/e7/9c5e8f964493290a409888d5413a737e8e5dd5 b/support/testing/tests/download/git-remote/refs-sub2.git/objects/e7/9c5e8f964493290a409888d5413a737e8e5dd5 new file mode 100644 index 00000000..df2037a2 Binary files /dev/null and b/support/testing/tests/download/git-remote/refs-sub2.git/objects/e7/9c5e8f964493290a409888d5413a737e8e5dd5 differ diff --git a/support/testing/tests/download/git-remote/refs-sub2.git/objects/e8/3f6f805bd016b90acafc8702c52d778eb57310 b/support/testing/tests/download/git-remote/refs-sub2.git/objects/e8/3f6f805bd016b90acafc8702c52d778eb57310 new file mode 100644 index 00000000..05c04d28 Binary files /dev/null and b/support/testing/tests/download/git-remote/refs-sub2.git/objects/e8/3f6f805bd016b90acafc8702c52d778eb57310 differ diff --git a/support/testing/tests/download/git-remote/refs-sub2.git/refs/heads/submodule b/support/testing/tests/download/git-remote/refs-sub2.git/refs/heads/submodule new file mode 100644 index 00000000..39dc53f0 --- /dev/null +++ b/support/testing/tests/download/git-remote/refs-sub2.git/refs/heads/submodule @@ -0,0 +1 @@ +e83f6f805bd016b90acafc8702c52d778eb57310 diff --git a/support/testing/tests/download/git-remote/repo.git/.gitattributes b/support/testing/tests/download/git-remote/repo.git/.gitattributes new file mode 100644 index 00000000..eb50c64a --- /dev/null +++ b/support/testing/tests/download/git-remote/repo.git/.gitattributes @@ -0,0 +1 @@ +objects/*/* binary diff --git a/support/testing/tests/download/git-remote/repo.git/HEAD b/support/testing/tests/download/git-remote/repo.git/HEAD new file mode 100644 index 00000000..cb089cd8 --- /dev/null +++ b/support/testing/tests/download/git-remote/repo.git/HEAD @@ -0,0 +1 @@ +ref: refs/heads/master diff --git a/support/testing/tests/download/git-remote/repo.git/config b/support/testing/tests/download/git-remote/repo.git/config new file mode 100644 index 00000000..07d359d0 --- /dev/null +++ b/support/testing/tests/download/git-remote/repo.git/config @@ -0,0 +1,4 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = true diff --git a/support/testing/tests/download/git-remote/repo.git/objects/05/482df734b3715b849ef4a3147a9b1b1f8cca38 b/support/testing/tests/download/git-remote/repo.git/objects/05/482df734b3715b849ef4a3147a9b1b1f8cca38 new file mode 100644 index 00000000..404bb139 Binary files /dev/null and b/support/testing/tests/download/git-remote/repo.git/objects/05/482df734b3715b849ef4a3147a9b1b1f8cca38 differ diff --git a/support/testing/tests/download/git-remote/repo.git/objects/0b/d8ceb961c3b2b210f64a67d57f4b5cd669d343 b/support/testing/tests/download/git-remote/repo.git/objects/0b/d8ceb961c3b2b210f64a67d57f4b5cd669d343 new file mode 100644 index 00000000..ef7fbd41 Binary files /dev/null and b/support/testing/tests/download/git-remote/repo.git/objects/0b/d8ceb961c3b2b210f64a67d57f4b5cd669d343 differ diff --git a/support/testing/tests/download/git-remote/repo.git/objects/0f/db95cf4f3c5ed4003287649cabb33c5f843e26 b/support/testing/tests/download/git-remote/repo.git/objects/0f/db95cf4f3c5ed4003287649cabb33c5f843e26 new file mode 100644 index 00000000..3a4cc4ea Binary files /dev/null and b/support/testing/tests/download/git-remote/repo.git/objects/0f/db95cf4f3c5ed4003287649cabb33c5f843e26 differ diff --git a/support/testing/tests/download/git-remote/repo.git/objects/11/93ff46343f4f6a0522e2b28b871e905178c1f0 b/support/testing/tests/download/git-remote/repo.git/objects/11/93ff46343f4f6a0522e2b28b871e905178c1f0 new file mode 100644 index 00000000..3541cd14 Binary files /dev/null and b/support/testing/tests/download/git-remote/repo.git/objects/11/93ff46343f4f6a0522e2b28b871e905178c1f0 differ diff --git a/support/testing/tests/download/git-remote/repo.git/objects/25/59d83bfe937fc0412d96ed664663c9e8a99055 b/support/testing/tests/download/git-remote/repo.git/objects/25/59d83bfe937fc0412d96ed664663c9e8a99055 new file mode 100644 index 00000000..cbf60fc7 Binary files /dev/null and b/support/testing/tests/download/git-remote/repo.git/objects/25/59d83bfe937fc0412d96ed664663c9e8a99055 differ diff --git a/support/testing/tests/download/git-remote/repo.git/objects/2b/0e0d98a49c97da6a618ab36337e2058eb733a2 b/support/testing/tests/download/git-remote/repo.git/objects/2b/0e0d98a49c97da6a618ab36337e2058eb733a2 new file mode 100644 index 00000000..39c91309 --- /dev/null +++ b/support/testing/tests/download/git-remote/repo.git/objects/2b/0e0d98a49c97da6a618ab36337e2058eb733a2 @@ -0,0 +1 @@ +xEŽK!]s~BbŒpã °i *ƒA6s{1³póR©Eåõ�`6jWo¦f¶äÉܭf²Ö(uDëI²F}`‰Q*Ñ×7ÕRr}4Ê:öG‰\3…+\Bëy¡úyf8¶MNå/ϩ„üšFæ4NàÁ'ÑÁ¢[ò L3 \ No newline at end of file diff --git a/support/testing/tests/download/git-remote/repo.git/objects/2f/a37f6885d7eb746df75eccaddbacf3ac82799d b/support/testing/tests/download/git-remote/repo.git/objects/2f/a37f6885d7eb746df75eccaddbacf3ac82799d new file mode 100644 index 00000000..2dd14580 Binary files /dev/null and b/support/testing/tests/download/git-remote/repo.git/objects/2f/a37f6885d7eb746df75eccaddbacf3ac82799d differ diff --git a/support/testing/tests/download/git-remote/repo.git/objects/31/7406308d9259e2231bd0d6ddad3de3832bce08 b/support/testing/tests/download/git-remote/repo.git/objects/31/7406308d9259e2231bd0d6ddad3de3832bce08 new file mode 100644 index 00000000..c2c98657 --- /dev/null +++ b/support/testing/tests/download/git-remote/repo.git/objects/31/7406308d9259e2231bd0d6ddad3de3832bce08 @@ -0,0 +1 @@ +x­Î;N1@Qj¯Â˜Èߌ�P” А<¿Ob�‘ãìžH)èí)®.öÖêÔÞí_æ`ÖìPØ쓬‹bïDغ` ¢‡‚œRfõƒ·©ÁùT, Rr‘ÂJÉ�Ñ9ìŠ)XKِ‚û¼ô¡?* ®ßa̺a¿]«~Oܵ_<žÔÏövÐ6š5Çäc֋ñƨ‡>¦'ÿSN•^¬R§zޘ–.²”ï׿̪1nS \ No newline at end of file diff --git a/support/testing/tests/download/git-remote/repo.git/objects/34/d1da713bf7de1c535e1d7d3ca985afd84bc7e5 b/support/testing/tests/download/git-remote/repo.git/objects/34/d1da713bf7de1c535e1d7d3ca985afd84bc7e5 new file mode 100644 index 00000000..29f2d4fd Binary files /dev/null and b/support/testing/tests/download/git-remote/repo.git/objects/34/d1da713bf7de1c535e1d7d3ca985afd84bc7e5 differ diff --git a/support/testing/tests/download/git-remote/repo.git/objects/46/bae5b639e5a18e2cc4dc508f080d566baeff59 b/support/testing/tests/download/git-remote/repo.git/objects/46/bae5b639e5a18e2cc4dc508f080d566baeff59 new file mode 100644 index 00000000..3bf8865e --- /dev/null +++ b/support/testing/tests/download/git-remote/repo.git/objects/46/bae5b639e5a18e2cc4dc508f080d566baeff59 @@ -0,0 +1 @@ +x­Î1n!@Qל‚ ¬Å0àa£(òÒÄ'˜e`�–“··¥î-·¯øú±ÕZ†F‹»ÑSÒ1›ìrðB )![±~™烇À�(±1 ~¹§mh¶�%X/Ž$ ãŒÑ[‹( ³Åãܺþ*‘»4ýÉ}”-¶ËwÑïý÷õ�ǵrùÙÇV?4xC³pðz2hŒºë}z¤åÔà”:•uK2µœ§åúö̩ºÍFkb \ No newline at end of file diff --git a/support/testing/tests/download/git-remote/repo.git/objects/51/6c9c5f64ec66534d4d069c2e408d9ae4dce023 b/support/testing/tests/download/git-remote/repo.git/objects/51/6c9c5f64ec66534d4d069c2e408d9ae4dce023 new file mode 100644 index 00000000..0bda23ab --- /dev/null +++ b/support/testing/tests/download/git-remote/repo.git/objects/51/6c9c5f64ec66534d4d069c2e408d9ae4dce023 @@ -0,0 +1,2 @@ +x­ÎKN1EQÆ^…7БåBQ6À„¬ º\n¬à6rœ»'æˆéyÒӥÞZ�Òû4³dc|ZK +¾pÖœÅ\ôV“Ââ‚uшO¼OéüŠ «·‰udCä2�ŠEE•Á?æR ¼Í÷>ä[%¹ËW³îԯ—*_ÆÚ/ž¶†õã@½¥D¬\”UJÜõ=ùŸîÄÄÍq®ÛÎyé¥,ë×ó_JÅ7Êle \ No newline at end of file diff --git a/support/testing/tests/download/git-remote/repo.git/objects/68/28f88dcb0e88b8cd738ad6044ce74d7a9a13c8 b/support/testing/tests/download/git-remote/repo.git/objects/68/28f88dcb0e88b8cd738ad6044ce74d7a9a13c8 new file mode 100644 index 00000000..fdc4a376 Binary files /dev/null and b/support/testing/tests/download/git-remote/repo.git/objects/68/28f88dcb0e88b8cd738ad6044ce74d7a9a13c8 differ diff --git a/support/testing/tests/download/git-remote/repo.git/objects/68/c197d0879d485f4f6cee85544722b79e68e59f b/support/testing/tests/download/git-remote/repo.git/objects/68/c197d0879d485f4f6cee85544722b79e68e59f new file mode 100644 index 00000000..3e421bb9 --- /dev/null +++ b/support/testing/tests/download/git-remote/repo.git/objects/68/c197d0879d485f4f6cee85544722b79e68e59f @@ -0,0 +1 @@ +x­Î=N1†ajŸÂØÈ;³ë„ !'ÏL+x�Œ)¸=+¥HÑ>Ò÷éåVkÁ?�®j3,cð°¨pˆâ ÍxA&I™R`拺nûp‹óè¢$X“àœʼn!AQŒ™ÕEC?ãҺý(L]š}§>ÊÆíûZìK¿á¡Þñí\©|¸ÕW;¯.¤5¢G;9tÎìºGý§;“;m|cŽ弩Lítšòïó#±æ$bl· \ No newline at end of file diff --git a/support/testing/tests/download/git-remote/repo.git/objects/6d/a12b257e47f6089612fe97a8746d2d9c4ca0e0 b/support/testing/tests/download/git-remote/repo.git/objects/6d/a12b257e47f6089612fe97a8746d2d9c4ca0e0 new file mode 100644 index 00000000..932f7360 Binary files /dev/null and b/support/testing/tests/download/git-remote/repo.git/objects/6d/a12b257e47f6089612fe97a8746d2d9c4ca0e0 differ diff --git a/support/testing/tests/download/git-remote/repo.git/objects/8b/8a7e885a041da72b1ee9a47c5b9300b172a9e7 b/support/testing/tests/download/git-remote/repo.git/objects/8b/8a7e885a041da72b1ee9a47c5b9300b172a9e7 new file mode 100644 index 00000000..70cf1795 Binary files /dev/null and b/support/testing/tests/download/git-remote/repo.git/objects/8b/8a7e885a041da72b1ee9a47c5b9300b172a9e7 differ diff --git a/support/testing/tests/download/git-remote/repo.git/objects/92/ef85be57d627f280d8ce3724452ac21c9a6452 b/support/testing/tests/download/git-remote/repo.git/objects/92/ef85be57d627f280d8ce3724452ac21c9a6452 new file mode 100644 index 00000000..1f2474ba Binary files /dev/null and b/support/testing/tests/download/git-remote/repo.git/objects/92/ef85be57d627f280d8ce3724452ac21c9a6452 differ diff --git a/support/testing/tests/download/git-remote/repo.git/objects/99/f2e3e1cb15f9b52fa29f66d380dda061d917ab b/support/testing/tests/download/git-remote/repo.git/objects/99/f2e3e1cb15f9b52fa29f66d380dda061d917ab new file mode 100644 index 00000000..9db72668 Binary files /dev/null and b/support/testing/tests/download/git-remote/repo.git/objects/99/f2e3e1cb15f9b52fa29f66d380dda061d917ab differ diff --git a/support/testing/tests/download/git-remote/repo.git/objects/a2/38b1dfcd825d47d834af3c5223417c8411d90d b/support/testing/tests/download/git-remote/repo.git/objects/a2/38b1dfcd825d47d834af3c5223417c8411d90d new file mode 100644 index 00000000..31b6bcf3 --- /dev/null +++ b/support/testing/tests/download/git-remote/repo.git/objects/a2/38b1dfcd825d47d834af3c5223417c8411d90d @@ -0,0 +1 @@ +x­ÎM @aלb.Ш”bŒñnôÃ_�´@‚¸ðö6qá޸ý/ϕ”¨�ÔӮÕÀ˜(ijBEc•Œ(MG?LÜ{ä£ðFh´ Ÿí^*\Éaõ.XeW Á±~°O_<Ï ií]I'Šk£ô´×Ðñ�s¶é6џrŒ25•±Í9ø®ÄØÙ×á—YölÚ`C \ No newline at end of file diff --git a/support/testing/tests/download/git-remote/repo.git/objects/a9/dbc1e23c45e8e1b88c0448763f54d714eb6f8f b/support/testing/tests/download/git-remote/repo.git/objects/a9/dbc1e23c45e8e1b88c0448763f54d714eb6f8f new file mode 100644 index 00000000..2cbdce1f Binary files /dev/null and b/support/testing/tests/download/git-remote/repo.git/objects/a9/dbc1e23c45e8e1b88c0448763f54d714eb6f8f differ diff --git a/support/testing/tests/download/git-remote/repo.git/objects/b2/4b387624edc78d0292a127c43cad9ba97c6232 b/support/testing/tests/download/git-remote/repo.git/objects/b2/4b387624edc78d0292a127c43cad9ba97c6232 new file mode 100644 index 00000000..20491e3f Binary files /dev/null and b/support/testing/tests/download/git-remote/repo.git/objects/b2/4b387624edc78d0292a127c43cad9ba97c6232 differ diff --git a/support/testing/tests/download/git-remote/repo.git/objects/cf/0f4f85d7a1237e377a2d25b996518a877ea001 b/support/testing/tests/download/git-remote/repo.git/objects/cf/0f4f85d7a1237e377a2d25b996518a877ea001 new file mode 100644 index 00000000..fd224552 Binary files /dev/null and b/support/testing/tests/download/git-remote/repo.git/objects/cf/0f4f85d7a1237e377a2d25b996518a877ea001 differ diff --git a/support/testing/tests/download/git-remote/repo.git/objects/d4/e2941d18a63535400476324ddeb7f40164be41 b/support/testing/tests/download/git-remote/repo.git/objects/d4/e2941d18a63535400476324ddeb7f40164be41 new file mode 100644 index 00000000..4d821693 Binary files /dev/null and b/support/testing/tests/download/git-remote/repo.git/objects/d4/e2941d18a63535400476324ddeb7f40164be41 differ diff --git a/support/testing/tests/download/git-remote/repo.git/objects/e2/2695cbf976fed1f543ad7486a531c0af473482 b/support/testing/tests/download/git-remote/repo.git/objects/e2/2695cbf976fed1f543ad7486a531c0af473482 new file mode 100644 index 00000000..15d80c78 Binary files /dev/null and b/support/testing/tests/download/git-remote/repo.git/objects/e2/2695cbf976fed1f543ad7486a531c0af473482 differ diff --git a/support/testing/tests/download/git-remote/repo.git/objects/e2/cfe068f7e5bf4de32ffe1241da53abce9fa89e b/support/testing/tests/download/git-remote/repo.git/objects/e2/cfe068f7e5bf4de32ffe1241da53abce9fa89e new file mode 100644 index 00000000..57be6485 Binary files /dev/null and b/support/testing/tests/download/git-remote/repo.git/objects/e2/cfe068f7e5bf4de32ffe1241da53abce9fa89e differ diff --git a/support/testing/tests/download/git-remote/repo.git/objects/e7/9c5e8f964493290a409888d5413a737e8e5dd5 b/support/testing/tests/download/git-remote/repo.git/objects/e7/9c5e8f964493290a409888d5413a737e8e5dd5 new file mode 100644 index 00000000..df2037a2 Binary files /dev/null and b/support/testing/tests/download/git-remote/repo.git/objects/e7/9c5e8f964493290a409888d5413a737e8e5dd5 differ diff --git a/support/testing/tests/download/git-remote/repo.git/objects/f6/476b879f65e956d7dedd5b08736369e9a24acc b/support/testing/tests/download/git-remote/repo.git/objects/f6/476b879f65e956d7dedd5b08736369e9a24acc new file mode 100644 index 00000000..ee01041e Binary files /dev/null and b/support/testing/tests/download/git-remote/repo.git/objects/f6/476b879f65e956d7dedd5b08736369e9a24acc differ diff --git a/support/testing/tests/download/git-remote/repo.git/objects/fe/74231105841041d5f441e70399d37f0e600aa5 b/support/testing/tests/download/git-remote/repo.git/objects/fe/74231105841041d5f441e70399d37f0e600aa5 new file mode 100644 index 00000000..6d0ae484 Binary files /dev/null and b/support/testing/tests/download/git-remote/repo.git/objects/fe/74231105841041d5f441e70399d37f0e600aa5 differ diff --git a/support/testing/tests/download/git-remote/repo.git/refs/heads/master b/support/testing/tests/download/git-remote/repo.git/refs/heads/master new file mode 100644 index 00000000..b6e37260 --- /dev/null +++ b/support/testing/tests/download/git-remote/repo.git/refs/heads/master @@ -0,0 +1 @@ +0fdb95cf4f3c5ed4003287649cabb33c5f843e26 diff --git a/support/testing/tests/download/git-remote/repo.git/refs/heads/mybranch b/support/testing/tests/download/git-remote/repo.git/refs/heads/mybranch new file mode 100644 index 00000000..45cec546 --- /dev/null +++ b/support/testing/tests/download/git-remote/repo.git/refs/heads/mybranch @@ -0,0 +1 @@ +68c197d0879d485f4f6cee85544722b79e68e59f diff --git a/support/testing/tests/download/git-remote/repo.git/refs/heads/submodule b/support/testing/tests/download/git-remote/repo.git/refs/heads/submodule new file mode 100644 index 00000000..e9f4f32c --- /dev/null +++ b/support/testing/tests/download/git-remote/repo.git/refs/heads/submodule @@ -0,0 +1 @@ +2fa37f6885d7eb746df75eccaddbacf3ac82799d diff --git a/support/testing/tests/download/git-remote/repo.git/refs/tags/mytag b/support/testing/tests/download/git-remote/repo.git/refs/tags/mytag new file mode 100644 index 00000000..8c09448a --- /dev/null +++ b/support/testing/tests/download/git-remote/repo.git/refs/tags/mytag @@ -0,0 +1 @@ +2b0e0d98a49c97da6a618ab36337e2058eb733a2 diff --git a/support/testing/tests/download/gitremote.py b/support/testing/tests/download/gitremote.py new file mode 100644 index 00000000..7df252d0 --- /dev/null +++ b/support/testing/tests/download/gitremote.py @@ -0,0 +1,47 @@ +# subprocess does not kill the child daemon when a test case fails by raising +# an exception. So use pexpect instead. +import infra + +import pexpect + + +GIT_REMOTE_PORT_INITIAL = 9418 +GIT_REMOTE_PORT_LAST = GIT_REMOTE_PORT_INITIAL + 99 + + +class GitRemote(object): + def __init__(self, builddir, serveddir, logtofile): + """ + Start a local git server. + + In order to support test cases in parallel, select the port the + server will listen to in runtime. Since there is no reliable way + to allocate the port prior to starting the server (another + process in the host machine can use the port between it is + selected from a list and it is really allocated to the server) + try to start the server in a port and in the case it is already + in use, try the next one in the allowed range. + """ + self.daemon = None + self.port = None + self.logfile = infra.open_log_file(builddir, "gitremote", logtofile) + + daemon_cmd = ["git", "daemon", "--reuseaddr", "--verbose", + "--listen=localhost", "--export-all", + "--base-path={}".format(serveddir)] + for port in range(GIT_REMOTE_PORT_INITIAL, GIT_REMOTE_PORT_LAST + 1): + cmd = daemon_cmd + ["--port={port}".format(port=port)] + self.logfile.write("> starting git remote with '{}'\n".format(" ".join(cmd))) + self.daemon = pexpect.spawn(cmd[0], cmd[1:], logfile=self.logfile, + encoding='utf-8') + ret = self.daemon.expect(["Ready to rumble", + "Address already in use"]) + if ret == 0: + self.port = port + return + raise SystemError("Could not find a free port to run git remote") + + def stop(self): + if self.daemon is None: + return + self.daemon.terminate(force=True) diff --git a/support/testing/tests/download/sshd.py b/support/testing/tests/download/sshd.py new file mode 100644 index 00000000..6555f049 --- /dev/null +++ b/support/testing/tests/download/sshd.py @@ -0,0 +1,149 @@ +import os +import shutil +import subprocess +from unittest import SkipTest + +# subprocess does not kill the child daemon when a test case fails by raising +# an exception. So use pexpect instead. +import pexpect + +import infra + + +SSHD_PORT_INITIAL = 2222 +SSHD_PORT_LAST = SSHD_PORT_INITIAL + 99 +SSHD_PATH = "/usr/sbin/sshd" +SSHD_HOST_DIR = "host" + +# SSHD_KEY_DIR is where the /etc/ssh/ssh_host_*_key files go +SSHD_KEY_DIR = os.path.join(SSHD_HOST_DIR, "etc/ssh") +SSHD_KEY = os.path.join(SSHD_KEY_DIR, "ssh_host_ed25519_key") + +# SSH_CLIENT_KEY_DIR is where the client id_rsa key and authorized_keys files go +SSH_CLIENT_KEY_DIR = os.path.join(SSHD_HOST_DIR, "home/br-user/ssh") +SSH_CLIENT_KEY = os.path.join(SSH_CLIENT_KEY_DIR, "id_rsa") +SSH_AUTH_KEYS_FILE = os.path.join(SSH_CLIENT_KEY_DIR, "authorized_keys") + + +class OpenSSHDaemon(): + + def __init__(self, builddir, logtofile): + """ + Start an OpenSSH SSH Daemon + + In order to support test cases in parallel, select the port the + server will listen to in runtime. Since there is no reliable way + to allocate the port prior to starting the server (another + process in the host machine can use the port between it is + selected from a list and it is really allocated to the server) + try to start the server in a port and in the case it is already + in use, try the next one in the allowed range. + """ + self.daemon = None + self.port = None + + self.logfile = infra.open_log_file(builddir, "sshd", logtofile) + + server_keyfile = os.path.join(builddir, SSHD_KEY) + auth_keys_file = os.path.join(builddir, SSH_AUTH_KEYS_FILE) + daemon_cmd = [SSHD_PATH, + "-D", # or use -ddd to debug + "-e", + "-h", server_keyfile, + "-f", "/dev/null", + "-o", "ListenAddress=localhost", + "-o", "PidFile=none", + "-o", "AuthenticationMethods=publickey", + "-o", "StrictModes=no", + "-o", "Subsystem=sftp internal-sftp", + "-o", "AuthorizedKeysFile={}".format(auth_keys_file)] + for port in range(SSHD_PORT_INITIAL, SSHD_PORT_LAST + 1): + cmd = daemon_cmd + ["-p", "{}".format(port)] + self.logfile.write( + "> starting sshd with '{}'\n".format(" ".join(cmd))) + try: + self.daemon = pexpect.spawn(cmd[0], cmd[1:], logfile=self.logfile, + encoding='utf-8') + except pexpect.exceptions.ExceptionPexpect as e: + self.logfile.write("> {} - skipping\n".format(e)) + raise SkipTest(str(e)) + + ret = self.daemon.expect([ + # Success + "Server listening on .* port {}.".format(port), + # Failure + "Cannot bind any address."]) + if ret == 0: + self.port = port + return + raise SystemError("Could not find a free port to run sshd") + + def stop(self): + if self.daemon is None: + return + self.daemon.terminate(force=True) + + +def generate_keys_server(builddir, logfile): + """Generate keys required to run an OpenSSH Daemon.""" + keyfile = os.path.join(builddir, SSHD_KEY) + if os.path.exists(keyfile): + logfile.write("> SSH server key already exists '{}'".format(keyfile)) + return + + hostdir = os.path.join(builddir, SSHD_HOST_DIR) + keydir = os.path.join(builddir, SSHD_KEY_DIR) + os.makedirs(hostdir, exist_ok=True) + os.makedirs(keydir, exist_ok=True) + + cmd = ["ssh-keygen", "-A", "-f", hostdir] + logfile.write( + "> generating SSH server keys with '{}'\n".format(" ".join(cmd))) + # When ssh-keygen fails to create an SSH server key it doesn't return a + # useful error code. So use check for an error message in the output + # instead. + try: + out = subprocess.check_output(cmd, encoding='utf-8') + except FileNotFoundError: + logfile.write("> ssh-keygen not found - skipping\n") + raise SkipTest("ssh-keygen not found") + + logfile.write(out) + if "Could not save your public key" in out: + raise SystemError("Could not generate SSH server keys") + + +def generate_keys_client(builddir, logfile): + """Generate keys required to log into an OpenSSH Daemon via SCP or SFTP.""" + keyfile = os.path.join(builddir, SSH_CLIENT_KEY) + if os.path.exists(keyfile): + logfile.write("> SSH client key already exists '{}'".format(keyfile)) + return + + keydir = os.path.join(builddir, SSH_CLIENT_KEY_DIR) + os.makedirs(keydir, exist_ok=True) + + cmd = ["ssh-keygen", + "-f", keyfile, + "-b", "2048", + "-t", "rsa", + "-N", "", + "-q"] + logfile.write( + "> generating SSH client keys with '{}'\n".format(" ".join(cmd))) + try: + subprocess.check_call(cmd, stdout=logfile, stderr=logfile) + except FileNotFoundError: + logfile.write("> ssh-keygen not found - skipping\n") + raise SkipTest("ssh-keygen not found") + + # Allow key-based login for this user (so that we can fetch from localhost) + pubkeyfile = os.path.join(keydir, "{}.pub".format(keyfile)) + authfile = os.path.join(keydir, "authorized_keys") + shutil.copy(pubkeyfile, authfile) + + +def generate_keys(builddir, logtofile): + logfile = infra.open_log_file(builddir, "ssh-keygen", logtofile) + generate_keys_server(builddir, logfile) + generate_keys_client(builddir, logfile) diff --git a/support/testing/tests/download/sshd/ssh-test-1.0.tar.xz b/support/testing/tests/download/sshd/ssh-test-1.0.tar.xz new file mode 100644 index 00000000..bd83d0af Binary files /dev/null and b/support/testing/tests/download/sshd/ssh-test-1.0.tar.xz differ diff --git a/support/testing/tests/download/test_git.py b/support/testing/tests/download/test_git.py new file mode 100644 index 00000000..ba52e03e --- /dev/null +++ b/support/testing/tests/download/test_git.py @@ -0,0 +1,85 @@ +import os +import shutil + +from tests.download.gitremote import GitRemote + +import infra + + +class GitTestBase(infra.basetest.BRConfigTest): + config = \ + """ + BR2_BACKUP_SITE="" + """ + gitremotedir = infra.filepath("tests/download/git-remote") + gitremote = None + + def setUp(self): + super(GitTestBase, self).setUp() + self.gitremote = GitRemote(self.builddir, self.gitremotedir, self.logtofile) + + def tearDown(self): + self.show_msg("Cleaning up") + if self.gitremote: + self.gitremote.stop() + if self.b and not self.keepbuilds: + self.b.delete() + + def check_hash(self, package): + # store downloaded tarball inside the output dir so the test infra + # cleans it up at the end + env = {"BR2_DL_DIR": os.path.join(self.builddir, "dl"), + "GITREMOTE_PORT_NUMBER": str(self.gitremote.port)} + self.b.build(["{}-dirclean".format(package), + "{}-source".format(package)], + env) + + def check_download(self, package): + # store downloaded tarball inside the output dir so the test infra + # cleans it up at the end + dl_dir = os.path.join(self.builddir, "dl") + # enforce we test the download + if os.path.exists(dl_dir): + shutil.rmtree(dl_dir) + env = {"BR2_DL_DIR": dl_dir, + "GITREMOTE_PORT_NUMBER": str(self.gitremote.port)} + self.b.build(["{}-dirclean".format(package), + "{}-legal-info".format(package)], + env) + + +class TestGitHash(GitTestBase): + br2_external = [infra.filepath("tests/download/br2-external/git-hash")] + + def test_run(self): + with self.assertRaises(SystemError): + self.check_hash("bad") + self.check_hash("good") + self.check_hash("nohash") + self.check_hash("export-subst") + with open(os.path.join(self.builddir, "dl", "export-subst", "git", "file2"), "r") as f: + blob = f.read() + self.assertEqual(blob, "0fdb95cf4f3c5ed4003287649cabb33c5f843e26\n") + + +class TestGitRefs(GitTestBase): + br2_external = [infra.filepath("tests/download/br2-external/git-refs")] + + def test_run(self): + with self.assertRaises(SystemError): + self.check_download("git-wrong-content") + with self.assertRaises(SystemError): + self.check_download("git-wrong-sha1") + self.check_download("git-partial-sha1-branch-head") + self.check_download("git-partial-sha1-reachable-by-branch") + self.check_download("git-partial-sha1-reachable-by-tag") + self.check_download("git-partial-sha1-tag-itself") + self.check_download("git-partial-sha1-tag-points-to") + self.check_download("git-sha1-branch-head") + self.check_download("git-sha1-reachable-by-branch") + self.check_download("git-sha1-reachable-by-tag") + self.check_download("git-sha1-tag-itself") + self.check_download("git-sha1-tag-points-to") + self.check_download("git-submodule-disabled") + self.check_download("git-submodule-enabled") + self.check_download("git-tag") diff --git a/support/testing/tests/download/test_gitforge.py b/support/testing/tests/download/test_gitforge.py new file mode 100644 index 00000000..e1ac35ec --- /dev/null +++ b/support/testing/tests/download/test_gitforge.py @@ -0,0 +1,49 @@ +import os +import shutil + +import infra + + +class GitforgeTestBase(infra.basetest.BRConfigTest): + config = \ + """ + BR2_BACKUP_SITE="" + """ + + def setUp(self): + super(GitforgeTestBase, self).setUp() + + def tearDown(self): + self.show_msg("Cleaning up") + if self.b and not self.keepbuilds: + self.b.delete() + + def check_download(self, package): + # store downloaded tarball inside the output dir so the test infra + # cleans it up at the end + dl_dir = os.path.join(self.builddir, "dl") + # enforce we test the download + if os.path.exists(dl_dir): + shutil.rmtree(dl_dir) + env = {"BR2_DL_DIR": dl_dir} + self.b.build(["{}-dirclean".format(package), + "{}-legal-info".format(package)], + env) + + +class TestGitHub(GitforgeTestBase): + br2_external = [infra.filepath("tests/download/br2-external/github")] + + def test_run(self): + self.check_download("github-helper-tag") + self.check_download("github-helper-hash") + self.check_download("github-release") + + +class TestGitLab(GitforgeTestBase): + br2_external = [infra.filepath("tests/download/br2-external/gitlab")] + + def test_run(self): + self.check_download("gitlab-helper-hash") + self.check_download("gitlab-helper-tag") + self.check_download("gitlab-release") diff --git a/support/testing/tests/download/test_ssh.py b/support/testing/tests/download/test_ssh.py new file mode 100644 index 00000000..126002a3 --- /dev/null +++ b/support/testing/tests/download/test_ssh.py @@ -0,0 +1,62 @@ +import os +import shutil + +import tests.download.sshd + +import infra + + +class SSHTestBase(infra.basetest.BRConfigTest): + config = infra.basetest.MINIMAL_CONFIG + ''' +BR2_BACKUP_SITE="" +''' + sshd_test_dir = infra.filepath("tests/download/sshd") + sshd = None + + def setUp(self): + super(SSHTestBase, self).setUp() + + self.show_msg("Generating keys") + tests.download.sshd.generate_keys(self.builddir, self.logtofile) + + self.show_msg("Starting sshd") + self.sshd = tests.download.sshd.OpenSSHDaemon(self.builddir, + self.logtofile) + + def tearDown(self): + self.show_msg("Stopping sshd") + if self.sshd: + self.sshd.stop() + super(SSHTestBase, self).tearDown() + + def download_package(self, package): + self.show_msg("Downloading {}".format(package)) + # store downloaded tarball inside the output dir so the test infra + # cleans it up at the end + dl_dir = os.path.join(self.builddir, "dl") + ssh_identity = os.path.join(self.builddir, + tests.download.sshd.SSH_CLIENT_KEY) + # enforce that we test the download + if os.path.exists(dl_dir): + shutil.rmtree(dl_dir) + env = {"BR2_DL_DIR": dl_dir, + "SSHD_PORT_NUMBER": str(self.sshd.port), + "SSHD_TEST_DIR": self.sshd_test_dir, + "SSH_IDENTITY": ssh_identity} + self.b.build(["{}-dirclean".format(package), + "{}-source".format(package)], + env) + + +class TestSCP(SSHTestBase): + br2_external = [infra.filepath("tests/download/br2-external/ssh")] + + def test_run(self): + self.download_package("scp") + + +class TestSFTP(SSHTestBase): + br2_external = [infra.filepath("tests/download/br2-external/ssh")] + + def test_run(self): + self.download_package("sftp") diff --git a/support/testing/tests/fs/__init__.py b/support/testing/tests/fs/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/support/testing/tests/fs/test_btrfs.py b/support/testing/tests/fs/test_btrfs.py new file mode 100644 index 00000000..90b868a9 --- /dev/null +++ b/support/testing/tests/fs/test_btrfs.py @@ -0,0 +1,56 @@ +import os + +import infra.basetest + + +class TestBtrfs(infra.basetest.BRTest): + kern_frag = \ + infra.filepath("tests/fs/test_btrfs/linux-btrfs.fragment") + btrfs_label = "BR_TEST" + config = \ + f""" + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.39" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{kern_frag}" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_PACKAGE_BTRFS_PROGS=y + BR2_TARGET_ROOTFS_BTRFS=y + BR2_TARGET_ROOTFS_BTRFS_LABEL="{btrfs_label}" + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + disk = os.path.join(self.builddir, "images", "rootfs.btrfs") + kern = os.path.join(self.builddir, "images", "Image") + bootargs = ["root=/dev/vda", "console=ttyAMA0"] + qemu_opts = ["-M", "virt", "-cpu", "cortex-a57", "-m", "256M", + "-drive", f"file={disk},if=virtio,format=raw"] + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=bootargs, + options=qemu_opts) + self.emulator.login() + + # We check our root filesystem is in btrfs format. + cmd = "mount | grep '/dev/root on / type btrfs'" + self.assertRunOk(cmd) + + # We show the root filesystem info with btrfs-progs, using the + # target btrfs-progs. + self.assertRunOk("btrfs filesystem show /") + + # We query the label and check it is the one from the + # Buildroot config. + out, ret = self.emulator.run("btrfs filesystem label /") + self.assertEqual(ret, 0) + self.assertEqual(out[0], self.btrfs_label) + + # We try to write data on the root filesystem. + self.assertRunOk("echo 'Hello Buildroot' > /root/file.txt") + self.assertRunOk("sync") diff --git a/support/testing/tests/fs/test_btrfs/linux-btrfs.fragment b/support/testing/tests/fs/test_btrfs/linux-btrfs.fragment new file mode 100644 index 00000000..605c1837 --- /dev/null +++ b/support/testing/tests/fs/test_btrfs/linux-btrfs.fragment @@ -0,0 +1 @@ +CONFIG_BTRFS_FS=y diff --git a/support/testing/tests/fs/test_cpio.py b/support/testing/tests/fs/test_cpio.py new file mode 100644 index 00000000..172af579 --- /dev/null +++ b/support/testing/tests/fs/test_cpio.py @@ -0,0 +1,130 @@ +import os +import infra.basetest +import subprocess + +CHECK_FS_CMD = "mount | grep 'rootfs on / type rootfs'" + + +def boot_img(emulator, builddir): + img = os.path.join(builddir, "images", "rootfs.cpio") + emulator.boot(arch="armv7", + kernel="builtin", + options=["-initrd", "{}".format(img)]) + emulator.login() + _, exit_code = emulator.run(CHECK_FS_CMD) + return exit_code + + +class TestCpioFull(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_INIT_BUSYBOX=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + + exit_code = boot_img(self.emulator, + self.builddir) + self.assertEqual(exit_code, 0) + + +class TestCpioDracutBase(infra.basetest.BRTest): + config = \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_INIT_BUSYBOX=y + BR2_PACKAGE_CRAMFS=y + BR2_PACKAGE_PV=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_DRACUT=y + BR2_TARGET_ROOTFS_CPIO_DRACUT_MODULES="{}" + BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES="{}" + # BR2_TARGET_ROOTFS_TAR is not set + """.format("support/testing/tests/fs/test_cpio/modules", + " ".join(["fs/cpio/dracut.conf", + "support/testing/tests/fs/test_cpio/dracut-cramfs.conf"])) + + def check_dracut(self): + out = subprocess.check_output(["cpio", "--list"], + stdin=open(os.path.join(self.builddir, "images/rootfs.cpio")), + stderr=open(os.devnull, "w"), + cwd=self.builddir, + env={"LANG": "C"}, + universal_newlines=True) + # pv should *not* be included in cpio image + self.assertEqual(out.find("bin/pv"), -1) + # libz should be, because of cramfs + self.assertNotEqual(out.find("usr/bin/mkcramfs"), -1) + self.assertNotEqual(out.find("usr/bin/cramfsck"), -1) + self.assertNotEqual(out.find("usr/lib/libz.so"), -1) + + exit_code = boot_img(self.emulator, + self.builddir) + self.assertEqual(exit_code, 0) + + +class TestCpioDracutUclibc(TestCpioDracutBase): + config = TestCpioDracutBase.config + \ + """ + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_UCLIBC_STABLE=y + """ + + def test_run(self): + self.check_dracut() + + +class TestCpioDracutGlibc(TestCpioDracutBase): + config = TestCpioDracutBase.config + \ + """ + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_GLIBC_STABLE=y + """ + + def test_run(self): + self.check_dracut() + + +class TestCpioDracutMusl(TestCpioDracutBase): + config = TestCpioDracutBase.config + \ + """ + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_MUSL_STABLE=y + """ + + def test_run(self): + self.check_dracut() + + +class TestCpioDracutUclibcMergedUsr(TestCpioDracutBase): + config = TestCpioDracutBase.config + \ + """ + BR2_ROOTFS_MERGED_USR=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_UCLIBC_STABLE=y + """ + + def test_run(self): + self.check_dracut() + + +class TestCpioDracutGlibcMergedUsr(TestCpioDracutBase): + config = TestCpioDracutBase.config + \ + """ + BR2_ROOTFS_MERGED_USR=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_GLIBC_STABLE=y + """ + + def test_run(self): + self.check_dracut() + + +class TestCpioDracutMuslMergedUsr(TestCpioDracutBase): + config = TestCpioDracutBase.config + \ + """ + BR2_ROOTFS_MERGED_USR=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_MUSL_STABLE=y + """ + + def test_run(self): + self.check_dracut() diff --git a/support/testing/tests/fs/test_cpio/dracut-cramfs.conf b/support/testing/tests/fs/test_cpio/dracut-cramfs.conf new file mode 100644 index 00000000..69e49239 --- /dev/null +++ b/support/testing/tests/fs/test_cpio/dracut-cramfs.conf @@ -0,0 +1,7 @@ +install_items+=" +/usr/bin/mkcramfs +" + +add_dracutmodules+=" +cramfs +" diff --git a/support/testing/tests/fs/test_cpio/modules/99cramfs/module-setup.sh b/support/testing/tests/fs/test_cpio/modules/99cramfs/module-setup.sh new file mode 100755 index 00000000..60706c8b --- /dev/null +++ b/support/testing/tests/fs/test_cpio/modules/99cramfs/module-setup.sh @@ -0,0 +1,11 @@ +check() { + return 0 +} + +depends() { + return 0 +} + +install() { + inst_multiple /usr/bin/cramfsck +} diff --git a/support/testing/tests/fs/test_ext.py b/support/testing/tests/fs/test_ext.py new file mode 100644 index 00000000..699f3ed9 --- /dev/null +++ b/support/testing/tests/fs/test_ext.py @@ -0,0 +1,124 @@ +import os + +import infra.basetest + +VOLNAME_PROP = "Filesystem volume name" +REVISION_PROP = "Filesystem revision #" +FEATURES_PROP = "Filesystem features" +BLOCKCNT_PROP = "Block count" +INODECNT_PROP = "Inode count" +RESBLKCNT_PROP = "Reserved block count" + +CHECK_FS_TYPE_CMD = "mount | grep '/dev/root on / type {}'" + + +def dumpe2fs_run(builddir, image): + cmd = ["host/sbin/dumpe2fs", os.path.join("images", image)] + ret = infra.run_cmd_on_host(builddir, cmd) + return ret.strip().splitlines() + + +def dumpe2fs_getprop(out, prop): + for line in out: + fields = line.split(": ") + if fields[0] == prop: + return fields[1].strip() + + +def boot_img_and_check_fs_type(emulator, builddir, fs_type): + img = os.path.join(builddir, "images", "rootfs.{}".format(fs_type)) + emulator.boot(arch="armv7", + kernel="builtin", + kernel_cmdline=["root=/dev/mmcblk0", + "rootfstype={}".format(fs_type)], + options=["-drive", "file={},if=sd,format=raw".format(img)]) + emulator.login() + _, exit_code = emulator.run(CHECK_FS_TYPE_CMD.format(fs_type)) + return exit_code + + +class TestExt2(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_2r0=y + BR2_TARGET_ROOTFS_EXT2_LABEL="foobaz" + BR2_TARGET_ROOTFS_EXT2_SIZE="16384" + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + out = dumpe2fs_run(self.builddir, "rootfs.ext2") + self.assertEqual(dumpe2fs_getprop(out, VOLNAME_PROP), "foobaz") + self.assertEqual(dumpe2fs_getprop(out, REVISION_PROP), "0 (original)") + + exit_code = boot_img_and_check_fs_type(self.emulator, + self.builddir, "ext2") + self.assertEqual(exit_code, 0) + + +class TestExt2r1(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_2r1=y + BR2_TARGET_ROOTFS_EXT2_LABEL="foobar" + BR2_TARGET_ROOTFS_EXT2_SIZE="16384" + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + out = dumpe2fs_run(self.builddir, "rootfs.ext2") + self.assertEqual(dumpe2fs_getprop(out, VOLNAME_PROP), "foobar") + self.assertEqual(dumpe2fs_getprop(out, REVISION_PROP), "1 (dynamic)") + self.assertNotIn("has_journal", dumpe2fs_getprop(out, FEATURES_PROP)) + + exit_code = boot_img_and_check_fs_type(self.emulator, + self.builddir, "ext2") + self.assertEqual(exit_code, 0) + + +class TestExt3(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_3=y + BR2_TARGET_ROOTFS_EXT2_SIZE="16384" + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + out = dumpe2fs_run(self.builddir, "rootfs.ext3") + self.assertEqual(dumpe2fs_getprop(out, REVISION_PROP), "1 (dynamic)") + self.assertIn("has_journal", dumpe2fs_getprop(out, FEATURES_PROP)) + self.assertNotIn("extent", dumpe2fs_getprop(out, FEATURES_PROP)) + + exit_code = boot_img_and_check_fs_type(self.emulator, + self.builddir, "ext3") + self.assertEqual(exit_code, 0) + + +class TestExt4(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_4=y + BR2_TARGET_ROOTFS_EXT2_SIZE="16384" + BR2_TARGET_ROOTFS_EXT2_INODES=3000 + BR2_TARGET_ROOTFS_EXT2_RESBLKS=10 + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + out = dumpe2fs_run(self.builddir, "rootfs.ext4") + self.assertEqual(dumpe2fs_getprop(out, REVISION_PROP), "1 (dynamic)") + self.assertEqual(dumpe2fs_getprop(out, BLOCKCNT_PROP), "16384") + # Yes there are 8 fewer inodes than requested + self.assertEqual(dumpe2fs_getprop(out, INODECNT_PROP), "2992") + self.assertEqual(dumpe2fs_getprop(out, RESBLKCNT_PROP), "1638") + self.assertIn("has_journal", dumpe2fs_getprop(out, FEATURES_PROP)) + self.assertIn("extent", dumpe2fs_getprop(out, FEATURES_PROP)) + + exit_code = boot_img_and_check_fs_type(self.emulator, + self.builddir, "ext4") + self.assertEqual(exit_code, 0) diff --git a/support/testing/tests/fs/test_f2fs.py b/support/testing/tests/fs/test_f2fs.py new file mode 100644 index 00000000..5918fe8c --- /dev/null +++ b/support/testing/tests/fs/test_f2fs.py @@ -0,0 +1,47 @@ +import os + +import infra.basetest + + +def dumpf2fs_getprop(out, prop): + for line in out: + fields = line.split(" = ") + if fields[0] == prop: + return fields[1].strip() + + +class TestF2FS(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_F2FS=y + BR2_TARGET_ROOTFS_F2FS_SIZE="128M" + BR2_TARGET_ROOTFS_F2FS_OVERPROVISION=0 + BR2_TARGET_ROOTFS_F2FS_DISCARD=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.27" + BR2_LINUX_KERNEL_USE_DEFCONFIG=y + BR2_LINUX_KERNEL_DEFCONFIG="vexpress" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" + """.format(infra.filepath("conf/f2fs-kernel-fragment.config")) + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.f2fs") + out = infra.run_cmd_on_host(self.builddir, ["host/sbin/dump.f2fs", img]) + out = out.splitlines() + prop = dumpf2fs_getprop(out, "Info: total FS sectors") + self.assertEqual(prop, "262144 (128 MB)") + + kernel = os.path.join(self.builddir, "images", "zImage") + kernel_cmdline = ["root=/dev/mmcblk0", "rootfstype=f2fs", + "console=ttyAMA0"] + dtb = infra.download(self.downloaddir, "vexpress-v2p-ca9.dtb") + options = ["-M", "vexpress-a9", "-dtb", dtb, + "-drive", "file={},if=sd,format=raw".format(img)] + self.emulator.boot(arch="armv7", kernel=kernel, + kernel_cmdline=kernel_cmdline, + options=options) + self.emulator.login() + cmd = "mount | grep '/dev/root on / type f2fs'" + self.assertRunOk(cmd) diff --git a/support/testing/tests/fs/test_iso9660.py b/support/testing/tests/fs/test_iso9660.py new file mode 100644 index 00000000..3d08f2e8 --- /dev/null +++ b/support/testing/tests/fs/test_iso9660.py @@ -0,0 +1,245 @@ +import os + +import infra.basetest + +BASIC_CONFIG = \ + """ + BR2_x86_pentium4=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y + BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y + BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-i386-pentium4-full-2017.05-1078-g95b1dae.tar.bz2" + BR2_TOOLCHAIN_EXTERNAL_GCC_6=y + BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_2=y + BR2_TOOLCHAIN_EXTERNAL_LOCALE=y + # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set + BR2_TOOLCHAIN_EXTERNAL_CXX=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.204" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="{}" + # BR2_TARGET_ROOTFS_TAR is not set + """.format(infra.filepath("conf/minimal-x86-qemu-kernel.config")) + + +def test_mount_internal_external(emulator, builddir, internal=True, efi=False): + img = os.path.join(builddir, "images", "rootfs.iso9660") + if efi: + efi_img = os.path.join(builddir, "images", "OVMF.fd") + # In QEMU v5.1.0 up to v7.2.0, the CPU hotplug register block misbehaves. + # EDK2 hang if the bug is detected in Qemu after printing errors to IO port 0x402 + # (requires BR2_TARGET_EDK2_OVMF_DEBUG_ON_SERIAL to see them) + # The Docker image used by the Buildroot gitlab-ci uses Qemu 5.2.0, the workaround + # can be removed as soon as the Docker image is updated to provided Qemu >= 8.0.0. + # This workaround is needed only when efi=True since it imply EDK2 is used. + # https://github.com/tianocore/edk2/commit/bf5678b5802685e07583e3c7ec56d883cbdd5da3 + # http://lists.busybox.net/pipermail/buildroot/2023-July/670825.html + qemu_fw_cfg = "name=opt/org.tianocore/X-Cpuhp-Bugcheck-Override,string=yes" + emulator.boot(arch="i386", options=["-cdrom", img, "-bios", efi_img, "-fw_cfg", qemu_fw_cfg]) + else: + emulator.boot(arch="i386", options=["-cdrom", img]) + emulator.login() + + if internal: + cmd = "mount | grep 'rootfs on / type rootfs'" + else: + cmd = "mount | grep '/dev/root on / type iso9660'" + + _, exit_code = emulator.run(cmd) + return exit_code + + +def test_touch_file(emulator): + _, exit_code = emulator.run("touch test") + return exit_code + +# +# Grub 2 + + +class TestIso9660Grub2External(infra.basetest.BRTest): + config = BASIC_CONFIG + \ + """ + BR2_TARGET_ROOTFS_ISO9660=y + # BR2_TARGET_ROOTFS_ISO9660_INITRD is not set + BR2_TARGET_GRUB2=y + BR2_TARGET_GRUB2_BOOT_PARTITION="cd" + BR2_TARGET_GRUB2_BUILTIN_MODULES_PC="boot linux ext2 fat part_msdos part_gpt normal biosdisk iso9660" + BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}" + """.format(infra.filepath("conf/grub2.cfg")) + + def test_run(self): + exit_code = test_mount_internal_external(self.emulator, + self.builddir, internal=False) + self.assertEqual(exit_code, 0) + + exit_code = test_touch_file(self.emulator) + self.assertEqual(exit_code, 1) + + +class TestIso9660Grub2ExternalCompress(infra.basetest.BRTest): + config = BASIC_CONFIG + \ + """ + BR2_TARGET_ROOTFS_ISO9660=y + # BR2_TARGET_ROOTFS_ISO9660_INITRD is not set + BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION=y + BR2_TARGET_GRUB2=y + BR2_TARGET_GRUB2_BOOT_PARTITION="cd" + BR2_TARGET_GRUB2_BUILTIN_MODULES_PC="boot linux ext2 fat part_msdos part_gpt normal biosdisk iso9660" + BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}" + """.format(infra.filepath("conf/grub2.cfg")) + + def test_run(self): + exit_code = test_mount_internal_external(self.emulator, + self.builddir, internal=False) + self.assertEqual(exit_code, 0) + + exit_code = test_touch_file(self.emulator) + self.assertEqual(exit_code, 1) + + +class TestIso9660Grub2Internal(infra.basetest.BRTest): + config = BASIC_CONFIG + \ + """ + BR2_TARGET_ROOTFS_ISO9660=y + BR2_TARGET_ROOTFS_ISO9660_INITRD=y + BR2_TARGET_GRUB2=y + BR2_TARGET_GRUB2_BOOT_PARTITION="cd" + BR2_TARGET_GRUB2_BUILTIN_MODULES_PC="boot linux ext2 fat part_msdos part_gpt normal biosdisk iso9660" + BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}" + """.format(infra.filepath("conf/grub2.cfg")) + + def test_run(self): + exit_code = test_mount_internal_external(self.emulator, + self.builddir, internal=True) + self.assertEqual(exit_code, 0) + + exit_code = test_touch_file(self.emulator) + self.assertEqual(exit_code, 0) + + +class TestIso9660Grub2EFI(infra.basetest.BRTest): + config = BASIC_CONFIG + \ + """ + BR2_TARGET_ROOTFS_ISO9660=y + BR2_TARGET_ROOTFS_ISO9660_INITRD=y + BR2_TARGET_GRUB2=y + BR2_TARGET_GRUB2_I386_EFI=y + BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat part_msdos part_gpt normal iso9660" + BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI="{}" + BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}" + BR2_TARGET_EDK2=y + """.format(infra.filepath("conf/grub2-efi.cfg"), + infra.filepath("conf/grub2.cfg")) + + def test_run(self): + exit_code = test_mount_internal_external(self.emulator, + self.builddir, internal=True, + efi=True) + self.assertEqual(exit_code, 0) + + exit_code = test_touch_file(self.emulator) + self.assertEqual(exit_code, 0) + + +class TestIso9660Grub2Hybrid(infra.basetest.BRTest): + config = BASIC_CONFIG + \ + """ + BR2_TARGET_ROOTFS_ISO9660=y + BR2_TARGET_ROOTFS_ISO9660_INITRD=y + BR2_TARGET_GRUB2=y + BR2_TARGET_GRUB2_I386_PC=y + BR2_TARGET_GRUB2_I386_EFI=y + BR2_TARGET_GRUB2_BOOT_PARTITION="cd" + BR2_TARGET_GRUB2_BUILTIN_MODULES_PC="boot linux ext2 fat squash4 part_msdos part_gpt normal iso9660 biosdisk" + BR2_TARGET_GRUB2_BUILTIN_CONFIG_PC="" + BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat squash4 part_msdos part_gpt normal iso9660 efi_gop" + BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI="{}" + BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}" + BR2_TARGET_EDK2=y + """.format(infra.filepath("conf/grub2-efi.cfg"), + infra.filepath("conf/grub2.cfg")) + + def test_run(self): + exit_code = test_mount_internal_external(self.emulator, + self.builddir, internal=True, + efi=False) + self.assertEqual(exit_code, 0) + + exit_code = test_touch_file(self.emulator) + self.assertEqual(exit_code, 0) + + self.emulator.stop() + + exit_code = test_mount_internal_external(self.emulator, + self.builddir, internal=True, + efi=True) + self.assertEqual(exit_code, 0) + + exit_code = test_touch_file(self.emulator) + self.assertEqual(exit_code, 0) + + +# +# Syslinux + + +class TestIso9660SyslinuxExternal(infra.basetest.BRTest): + config = BASIC_CONFIG + \ + """ + BR2_TARGET_ROOTFS_ISO9660=y + # BR2_TARGET_ROOTFS_ISO9660_INITRD is not set + BR2_TARGET_ROOTFS_ISO9660_HYBRID=y + BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}" + BR2_TARGET_SYSLINUX=y + """.format(infra.filepath("conf/isolinux.cfg")) + + def test_run(self): + exit_code = test_mount_internal_external(self.emulator, + self.builddir, internal=False) + self.assertEqual(exit_code, 0) + + exit_code = test_touch_file(self.emulator) + self.assertEqual(exit_code, 1) + + +class TestIso9660SyslinuxExternalCompress(infra.basetest.BRTest): + config = BASIC_CONFIG + \ + """ + BR2_TARGET_ROOTFS_ISO9660=y + # BR2_TARGET_ROOTFS_ISO9660_INITRD is not set + BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION=y + BR2_TARGET_ROOTFS_ISO9660_HYBRID=y + BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}" + BR2_TARGET_SYSLINUX=y + """.format(infra.filepath("conf/isolinux.cfg")) + + def test_run(self): + exit_code = test_mount_internal_external(self.emulator, + self.builddir, internal=False) + self.assertEqual(exit_code, 0) + + exit_code = test_touch_file(self.emulator) + self.assertEqual(exit_code, 1) + + +class TestIso9660SyslinuxInternal(infra.basetest.BRTest): + config = BASIC_CONFIG + \ + """ + BR2_TARGET_ROOTFS_ISO9660=y + BR2_TARGET_ROOTFS_ISO9660_INITRD=y + BR2_TARGET_ROOTFS_ISO9660_HYBRID=y + BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}" + BR2_TARGET_SYSLINUX=y + """.format(infra.filepath("conf/isolinux.cfg")) + + def test_run(self): + exit_code = test_mount_internal_external(self.emulator, + self.builddir, internal=True) + self.assertEqual(exit_code, 0) + + exit_code = test_touch_file(self.emulator) + self.assertEqual(exit_code, 0) diff --git a/support/testing/tests/fs/test_jffs2.py b/support/testing/tests/fs/test_jffs2.py new file mode 100644 index 00000000..1806bd7e --- /dev/null +++ b/support/testing/tests/fs/test_jffs2.py @@ -0,0 +1,44 @@ +import os + +import infra.basetest + + +def jffs2dump_find_file(files_list, fname): + for file_name in files_list: + file_name = file_name.strip() + if file_name.startswith("Dirent") and file_name.endswith(fname): + return True + return False + + +class TestJffs2(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_JFFS2=y + BR2_TARGET_ROOTFS_JFFS2_CUSTOM=y + BR2_TARGET_ROOTFS_JFFS2_CUSTOM_EBSIZE=0x40000 + BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER=y + BR2_TARGET_ROOTFS_JFFS2_PAD=y + BR2_TARGET_ROOTFS_JFFS2_PADSIZE=0x4000000 + # BR2_TARGET_ROOTFS_TAR is not set + """ + + # TODO: there are some scary JFFS2 messages when one starts to + # write files in the rootfs: "jffs2: Newly-erased block contained + # word 0x0 at offset 0x046c0000". To be investigated. + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.jffs2") + cmd = ["host/sbin/jffs2dump", "-c", img] + out = infra.run_cmd_on_host(self.builddir, cmd) + out = out.splitlines() + self.assertTrue(jffs2dump_find_file(out, "busybox")) + + self.emulator.boot(arch="armv7", + kernel="builtin", + kernel_cmdline=["root=/dev/mtdblock0", + "rootfstype=jffs2"], + options=["-drive", "file={},if=pflash".format(img)]) + self.emulator.login() + cmd = "mount | grep '/dev/root on / type jffs2'" + self.assertRunOk(cmd) diff --git a/support/testing/tests/fs/test_oci.py b/support/testing/tests/fs/test_oci.py new file mode 100644 index 00000000..0ecf58f6 --- /dev/null +++ b/support/testing/tests/fs/test_oci.py @@ -0,0 +1,57 @@ +import os +import shutil +import infra.basetest + + +class TestOci(infra.basetest.BRTest): + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.61" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_PACKAGE_CGROUPFS_MOUNT=y + BR2_PACKAGE_CONTAINERD=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_SIZE="600M" + BR2_TARGET_ROOTFS_OCI=y + BR2_TARGET_ROOTFS_OCI_ENTRYPOINT="df" + BR2_TARGET_ROOTFS_OCI_CMD="-h" + BR2_TARGET_ROOTFS_OCI_ARCHIVE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def login(self): + rootfs = os.path.join(self.builddir, "images", "rootfs.ext2") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["root=/dev/vda", "console=ttyAMA0"], + options=["-M", "virt", + "-cpu", "cortex-a57", + "-m", "512M", + "-drive", "file={},format=raw,if=virtio".format(rootfs)]) + self.emulator.login() + + def place_test_oci(self): + shutil.copy(os.path.join(self.builddir, 'images', 'rootfs-oci-latest-arm64-linux.oci-image.tar'), + os.path.join(self.builddir, 'target', 'oci.tar')) + # rebuild to make sure oci.tar ends up in rootfs.ext2 + self.b.build() + + def test_run(self): + self.place_test_oci() + self.login() + + cmd = "containerd &" + self.assertRunOk(cmd) + + cmd = "ctr image import --base-name buildroot-test /oci.tar" + self.assertRunOk(cmd, timeout=120) + + cmd = "ctr run --rm --tty buildroot-test:latest v1" + self.assertRunOk(cmd, timeout=120) diff --git a/support/testing/tests/fs/test_squashfs.py b/support/testing/tests/fs/test_squashfs.py new file mode 100644 index 00000000..0ceb4cab --- /dev/null +++ b/support/testing/tests/fs/test_squashfs.py @@ -0,0 +1,57 @@ +import os + +import infra.basetest + + +class TestSquashfs(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_SQUASHFS=y + BR2_TARGET_ROOTFS_SQUASHFS4_LZO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + expected_blocksize_in_bytes = 128*1024 + + def test_run(self): + unsquashfs_cmd = ["host/bin/unsquashfs", "-s", "images/rootfs.squashfs"] + out = infra.run_cmd_on_host(self.builddir, unsquashfs_cmd) + out = out.splitlines() + self.assertEqual(out[0], + "Found a valid SQUASHFS 4:0 superblock on images/rootfs.squashfs.") + self.assertEqual(out[3], "Compression lzo") + self.assertEqual(out[4], "Block size {}".format(self.expected_blocksize_in_bytes)) + + img = os.path.join(self.builddir, "images", "rootfs.squashfs") + infra.img_round_power2(img) + + self.emulator.boot(arch="armv7", + kernel="builtin", + kernel_cmdline=["root=/dev/mmcblk0", + "rootfstype=squashfs"], + options=["-drive", "file={},if=sd,format=raw".format(img)]) + self.emulator.login() + + cmd = "mount | grep '/dev/root on / type squashfs'" + self.assertRunOk(cmd) + + +class TestSquashfsMinBlocksize(TestSquashfs): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_SQUASHFS=y + BR2_TARGET_ROOTFS_SQUASHFS_BS_4K=y + BR2_TARGET_ROOTFS_SQUASHFS4_LZO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + expected_blocksize_in_bytes = 4*1024 + + +class TestSquashfsMaxBlocksize(TestSquashfs): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_SQUASHFS=y + BR2_TARGET_ROOTFS_SQUASHFS_BS_1024K=y + BR2_TARGET_ROOTFS_SQUASHFS4_LZO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + expected_blocksize_in_bytes = 1024*1024 diff --git a/support/testing/tests/fs/test_ubi.py b/support/testing/tests/fs/test_ubi.py new file mode 100644 index 00000000..564a436d --- /dev/null +++ b/support/testing/tests/fs/test_ubi.py @@ -0,0 +1,38 @@ +import subprocess +import os + +import infra.basetest + + +class TestUbi(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_UBIFS=y + BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x3ff80 + BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE=0x1 + BR2_TARGET_ROOTFS_UBI=y + BR2_TARGET_ROOTFS_UBI_PEBSIZE=0x40000 + BR2_TARGET_ROOTFS_UBI_SUBSIZE=1 + BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG=y + BR2_TARGET_ROOTFS_UBI_CUSTOM_CONFIG_FILE="{}" + """.format( + infra.filepath("tests/fs/test_ubi/ubinize_qemu_pflash_cfi01.cfg")) + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.ubi") + out = infra.run_cmd_on_host(self.builddir, ["file", img]) + out = out.splitlines() + self.assertIn("UBI image, version 1", out[0]) + + subprocess.call(["truncate", "-s 64M", img]) + + self.emulator.boot(arch="armv7", + kernel="builtin", + kernel_cmdline=["root=ubi0:rootfs", + "ubi.mtd=0", + "rootfstype=ubifs"], + options=["-drive", "file={},if=pflash,format=raw".format(img)]) + self.emulator.login() + cmd = "mount | grep 'ubi0:rootfs on / type ubifs'" + _, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) diff --git a/support/testing/tests/fs/test_ubi/ubinize_qemu_pflash_cfi01.cfg b/support/testing/tests/fs/test_ubi/ubinize_qemu_pflash_cfi01.cfg new file mode 100644 index 00000000..52dd5f00 --- /dev/null +++ b/support/testing/tests/fs/test_ubi/ubinize_qemu_pflash_cfi01.cfg @@ -0,0 +1,8 @@ +[ubifs] +mode=ubi +vol_id=0 +vol_type=static +vol_name=rootfs +vol_alignment=1 +vol_size=64MiB +image=BR2_ROOTFS_UBIFS_PATH diff --git a/support/testing/tests/fs/test_yaffs2.py b/support/testing/tests/fs/test_yaffs2.py new file mode 100644 index 00000000..b60e90e6 --- /dev/null +++ b/support/testing/tests/fs/test_yaffs2.py @@ -0,0 +1,15 @@ +import os + +import infra.basetest + + +class TestYaffs2(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + infra.basetest.MINIMAL_CONFIG + \ + """ + BR2_TARGET_ROOTFS_YAFFS2=y + """ + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.yaffs2") + self.assertTrue(os.path.exists(img)) diff --git a/support/testing/tests/graphics_base.py b/support/testing/tests/graphics_base.py new file mode 100644 index 00000000..15a4c00b --- /dev/null +++ b/support/testing/tests/graphics_base.py @@ -0,0 +1,39 @@ +class GraphicsBase: + def get_n_fb_crc(self, *, count=10, uniq=False, timeout=-1): + """ + Return count DRM CRC from the framebuffer. If uniq is True, + only unique CRCs are returned (which may be less than the + requested cont). + Returns a possibly empty list of integers. + Set timeout to -1 for no timeout, or to a positive number for + a timeout of that many seconds. + """ + # DRM CRCs are exposed through a sysfs pseudo file + try: + self.debugfs_mounted + except AttributeError: + # Note: some init system (e.g. systemd) may have this already + # mounted, so check beforehand + self.assertRunOk("mountpoint /sys/kernel/debug/ || mount -t debugfs none /sys/kernel/debug/") + self.debugfs_mounted = True + + # The first column is the frame number, the second column is the + # CRC measure. We use "head" to get the needed CRC count. + disp_crc_path = "/sys/kernel/debug/dri/0/crtc-0/crc/data" + cmd = f"head -{count} {disp_crc_path}" + + # The DRM CRC sysfs pseudo file lines are terminated by '\n' + # and '\0'. We remove the '\0' to have a text-only output. + cmd += " | tr -d '\\000'" + + # Finally, we drop the frame counter, and keep only the second + # column (CRC values) + cmd += " | cut -f 2 -d ' '" + + if uniq: + cmd += " | sort -u" + + output, exit_code = self.emulator.run(cmd, timeout=timeout) + self.assertTrue(exit_code == 0, f"'{cmd}' failed with exit code {exit_code}") + + return [int(crc, 16) for crc in output] diff --git a/support/testing/tests/init/__init__.py b/support/testing/tests/init/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/support/testing/tests/init/base.py b/support/testing/tests/init/base.py new file mode 100644 index 00000000..7f12186b --- /dev/null +++ b/support/testing/tests/init/base.py @@ -0,0 +1,46 @@ +import os +import infra.basetest + + +class InitSystemBase(infra.basetest.BRTest): + + def start_emulator(self, fs_type, kernel=None, dtb=None, init=None): + img = os.path.join(self.builddir, "images", "rootfs.{}".format(fs_type)) + infra.img_round_power2(img) + + options = ["-drive", + "file={},if=sd,format=raw".format(img), + "-M", "vexpress-a9"] + + if kernel is None: + kernel = "builtin" + else: + kernel = os.path.join(self.builddir, "images", kernel) + options.extend(["-dtb", os.path.join(self.builddir, "images", + "{}.dtb".format(dtb))]) + + kernel_cmdline = ["root=/dev/mmcblk0", + "rootfstype={}".format(fs_type), + "rootwait", + "ro", + "console=ttyAMA0"] + + if init is not None: + kernel_cmdline.extend(["init={}".format(init)]) + + self.emulator.boot(arch="armv7", + kernel=kernel, + kernel_cmdline=kernel_cmdline, + options=options) + + if init is None: + self.emulator.login() + + def check_init(self, path): + cmd = "cmp /proc/1/exe {}".format(path) + self.assertRunOk(cmd) + + def check_network(self, interface, exitCode=0): + cmd = "ip addr show {} |grep inet".format(interface) + _, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, exitCode) diff --git a/support/testing/tests/init/systemd-factory/var/foo/bar b/support/testing/tests/init/systemd-factory/var/foo/bar new file mode 100644 index 00000000..323fae03 --- /dev/null +++ b/support/testing/tests/init/systemd-factory/var/foo/bar @@ -0,0 +1 @@ +foobar diff --git a/support/testing/tests/init/systemd-overlay-fstab/etc/fstab b/support/testing/tests/init/systemd-overlay-fstab/etc/fstab new file mode 100644 index 00000000..d5c84406 --- /dev/null +++ b/support/testing/tests/init/systemd-overlay-fstab/etc/fstab @@ -0,0 +1,2 @@ +/dev/root / auto ro 0 1 +other-var-backing-store /run/buildroot/mounts/var tmpfs defaults diff --git a/support/testing/tests/init/systemd-overlay-mount-unit/usr/lib/systemd/system/run-buildroot-mounts-var.mount b/support/testing/tests/init/systemd-overlay-mount-unit/usr/lib/systemd/system/run-buildroot-mounts-var.mount new file mode 100644 index 00000000..520cd6d9 --- /dev/null +++ b/support/testing/tests/init/systemd-overlay-mount-unit/usr/lib/systemd/system/run-buildroot-mounts-var.mount @@ -0,0 +1,13 @@ +[Unit] +Description=Variable permanent storage overlay +ConditionPathIsSymbolicLink=!/var +DefaultDependencies=no +After=local-fs-pre.target + +[Mount] +# Rather than creating an actual writable partition, we just create +# another tmpfs. For tmpfs, the What is not relevant - but we use it in +# the test to distinguish it from other tmpfses +What=other-var-backing-store +Where=/run/buildroot/mounts/var +Type=tmpfs diff --git a/support/testing/tests/init/test_busybox.py b/support/testing/tests/init/test_busybox.py new file mode 100644 index 00000000..3be4dea3 --- /dev/null +++ b/support/testing/tests/init/test_busybox.py @@ -0,0 +1,64 @@ +import infra.basetest +from tests.init.base import InitSystemBase as InitSystemBase + + +class InitSystemBusyboxBase(InitSystemBase): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def check_init(self): + super(InitSystemBusyboxBase, self).check_init("/bin/busybox") + + +class TestInitSystemBusyboxRo(InitSystemBusyboxBase): + config = InitSystemBusyboxBase.config + \ + """ + # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set + BR2_TARGET_ROOTFS_SQUASHFS=y + """ + + def test_run(self): + self.start_emulator("squashfs") + self.check_init() + self.check_network("eth0", 1) + + +class TestInitSystemBusyboxRw(InitSystemBusyboxBase): + config = InitSystemBusyboxBase.config + \ + """ + BR2_TARGET_ROOTFS_EXT2=y + """ + + def test_run(self): + self.start_emulator("ext2") + self.check_init() + self.check_network("eth0", 1) + + +class TestInitSystemBusyboxRoNet(InitSystemBusyboxBase): + config = InitSystemBusyboxBase.config + \ + """ + BR2_SYSTEM_DHCP="eth0" + # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set + BR2_TARGET_ROOTFS_SQUASHFS=y + """ + + def test_run(self): + self.start_emulator("squashfs") + self.check_init() + self.check_network("eth0") + + +class TestInitSystemBusyboxRwNet(InitSystemBusyboxBase): + config = InitSystemBusyboxBase.config + \ + """ + BR2_SYSTEM_DHCP="eth0" + BR2_TARGET_ROOTFS_EXT2=y + """ + + def test_run(self): + self.start_emulator("ext2") + self.check_init() + self.check_network("eth0") diff --git a/support/testing/tests/init/test_none.py b/support/testing/tests/init/test_none.py new file mode 100644 index 00000000..5bfcc3d5 --- /dev/null +++ b/support/testing/tests/init/test_none.py @@ -0,0 +1,30 @@ +import pexpect + +import infra.basetest +from tests.init.base import InitSystemBase as InitSystemBase + + +class TestInitSystemNone(InitSystemBase): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_INIT_NONE=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_TARGET_ROOTFS_SQUASHFS=y + """ + + def test_run(self): + self.start_emulator(fs_type="squashfs", init="/bin/sh") + index = self.emulator.qemu.expect(["/bin/sh: can't access tty; job control turned off", pexpect.TIMEOUT], timeout=60) + if index != 0: + self.emulator.logfile.write("==> System does not boot") + raise SystemError("System does not boot") + + self.emulator.connect_shell() + + out, exit_code = self.emulator.run("sh -c 'echo $PPID'") + self.assertEqual(exit_code, 0) + self.assertEqual(out[0], "1") + + self.assertRunOk("mount -t proc none /proc") + + self.check_init("/bin/sh") diff --git a/support/testing/tests/init/test_openrc.py b/support/testing/tests/init/test_openrc.py new file mode 100644 index 00000000..a1eb8fe2 --- /dev/null +++ b/support/testing/tests/init/test_openrc.py @@ -0,0 +1,59 @@ +from tests.init.base import InitSystemBase as InitSystemBase + + +class InitSystemOpenrcBase(InitSystemBase): + config = \ + """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_INIT_OPENRC=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def check_init(self): + super(InitSystemOpenrcBase, self).check_init('/sbin/openrc-init') + + # Test all services are OK + output, _ = self.emulator.run("rc-status -c") + self.assertEqual(len(output), 0) + + +class TestInitSystemOpenrcRoFull(InitSystemOpenrcBase): + config = InitSystemOpenrcBase.config + \ + """ + BR2_SYSTEM_DHCP="eth0" + # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set + BR2_TARGET_ROOTFS_SQUASHFS=y + """ + + def test_run(self): + self.start_emulator("squashfs") + self.check_init() + + +class TestInitSystemOpenrcRwFull(InitSystemOpenrcBase): + config = InitSystemOpenrcBase.config + \ + """ + BR2_SYSTEM_DHCP="eth0" + BR2_TARGET_ROOTFS_EXT2=y + """ + + def test_run(self): + self.start_emulator("ext2") + self.check_init() + + +class TestInitSystemOpenrcMergedUsrFull(InitSystemOpenrcBase): + config = InitSystemOpenrcBase.config + \ + """ + BR2_ROOTFS_MERGED_USR=y + BR2_SYSTEM_DHCP="eth0" + BR2_TARGET_ROOTFS_EXT2=y + """ + + def test_run(self): + self.start_emulator("ext2") + self.check_init() diff --git a/support/testing/tests/init/test_systemd.py b/support/testing/tests/init/test_systemd.py new file mode 100644 index 00000000..7bbc112a --- /dev/null +++ b/support/testing/tests/init/test_systemd.py @@ -0,0 +1,408 @@ +import infra.basetest +import re +from tests.init.base import InitSystemBase as InitSystemBase + + +# In the following tests, the read-only cases use the default settings, +# which historically used both a factory to populate a tmpfs on /var, +# and pre-populated /var at buildtime. Since these are the default +# settings, and they proved to generate a system that ultimately boots, +# we still want to keep testing that. See later, below, for the +# specialised test cases. + +class InitSystemSystemdBase(InitSystemBase): + config = \ + """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_INIT_SYSTEMD=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + # BR2_TARGET_ROOTFS_TAR is not set + BR2_PER_PACKAGE_DIRECTORIES=y + """ + + def check_systemd(self, fs): + if "BR2_LINUX_KERNEL=y" in self.config: + self.start_emulator(fs, "zImage", "vexpress-v2p-ca9") + else: + self.start_emulator(fs) + self.check_init("/lib/systemd/systemd") + + # Test all units are OK + output, _ = self.emulator.run("systemctl --no-pager --failed --no-legend") + self.assertEqual(len(output), 0) + + # Test we can reach the DBus daemon + self.assertRunOk("busctl --no-pager") + + # Test we can read at least one line from the journal + output, _ = self.emulator.run("journalctl --no-pager --lines 1 --quiet") + self.assertEqual(len(output), 1) + + # Check the network is up + self.check_network("eth0") + + +class TestInitSystemSystemdRoNetworkd(InitSystemSystemdBase): + config = InitSystemSystemdBase.config + \ + """ + BR2_SYSTEM_DHCP="eth0" + # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set + BR2_TARGET_ROOTFS_SQUASHFS=y + """ + + def test_run(self): + self.check_systemd("squashfs") + + +class TestInitSystemSystemdRwNetworkd(InitSystemSystemdBase): + config = InitSystemSystemdBase.config + \ + """ + BR2_SYSTEM_DHCP="eth0" + BR2_TARGET_ROOTFS_EXT2=y + """ + + def test_run(self): + self.check_systemd("ext2") + + +class TestInitSystemSystemdRoIfupdown(InitSystemSystemdBase): + config = InitSystemSystemdBase.config + \ + """ + BR2_SYSTEM_DHCP="eth0" + # BR2_PACKAGE_SYSTEMD_NETWORKD is not set + # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set + BR2_TARGET_ROOTFS_SQUASHFS=y + """ + + def test_run(self): + self.check_systemd("squashfs") + + +class TestInitSystemSystemdRoIfupdownDbusbroker(TestInitSystemSystemdRoIfupdown): + config = TestInitSystemSystemdRoIfupdown.config + \ + """ + BR2_PACKAGE_DBUS_BROKER=y + """ + + def test_run(self): + # Parent class' test_run() method does exactly that, no more: + self.check_systemd("squashfs") + + # Check that the dbus-broker daemon is running as non-root + cmd = "find /proc/$(pidof dbus-broker) -maxdepth 1 -name exe -user dbus" + out, _ = self.emulator.run(cmd) + self.assertEqual(len(out), 1) + + +class TestInitSystemSystemdRoIfupdownDbusbrokerDbus(TestInitSystemSystemdRoIfupdownDbusbroker): + config = TestInitSystemSystemdRoIfupdownDbusbroker.config + \ + """ + BR2_PACKAGE_DBUS=y + """ + + +class TestInitSystemSystemdRwIfupdown(InitSystemSystemdBase): + config = InitSystemSystemdBase.config + \ + """ + BR2_SYSTEM_DHCP="eth0" + # BR2_PACKAGE_SYSTEMD_NETWORKD is not set + BR2_TARGET_ROOTFS_EXT2=y + """ + + def test_run(self): + self.check_systemd("ext2") + + +class TestInitSystemSystemdRwIfupdownDbusbroker(TestInitSystemSystemdRwIfupdown): + config = TestInitSystemSystemdRwIfupdown.config + \ + """ + BR2_PACKAGE_DBUS_BROKER=y + """ + + def test_run(self): + # Parent class' test_run() method does exactly that, no more: + self.check_systemd("ext2") + + # Check that the dbus-broker daemon is running as non-root + cmd = "find /proc/$(pidof dbus-broker) -maxdepth 1 -name exe -user dbus" + out, _ = self.emulator.run(cmd) + self.assertEqual(len(out), 1) + + +class TestInitSystemSystemdRwIfupdownDbusbrokerDbus(TestInitSystemSystemdRwIfupdownDbusbroker): + config = TestInitSystemSystemdRwIfupdownDbusbroker.config + \ + """ + BR2_PACKAGE_DBUS=y + """ + + +class TestInitSystemSystemdRoFull(InitSystemSystemdBase): + config = InitSystemSystemdBase.config + \ + """ + BR2_SYSTEM_DHCP="eth0" + # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set + BR2_PACKAGE_SYSTEMD_JOURNAL_REMOTE=y + BR2_PACKAGE_SYSTEMD_BACKLIGHT=y + BR2_PACKAGE_SYSTEMD_BINFMT=y + BR2_PACKAGE_SYSTEMD_COREDUMP=y + BR2_PACKAGE_SYSTEMD_FIRSTBOOT=y + BR2_PACKAGE_SYSTEMD_HIBERNATE=y + BR2_PACKAGE_SYSTEMD_IMPORTD=y + BR2_PACKAGE_SYSTEMD_LOCALED=y + BR2_PACKAGE_SYSTEMD_LOGIND=y + BR2_PACKAGE_SYSTEMD_MACHINED=y + BR2_PACKAGE_SYSTEMD_POLKIT=y + BR2_PACKAGE_SYSTEMD_QUOTACHECK=y + BR2_PACKAGE_SYSTEMD_RANDOMSEED=y + BR2_PACKAGE_SYSTEMD_RFKILL=y + BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT=y + BR2_PACKAGE_SYSTEMD_SYSUSERS=y + BR2_PACKAGE_SYSTEMD_VCONSOLE=y + BR2_TARGET_ROOTFS_SQUASHFS=y + """ + + def test_run(self): + self.check_systemd("squashfs") + + +class TestInitSystemSystemdRwFull(InitSystemSystemdBase): + config = InitSystemSystemdBase.config + \ + """ + BR2_SYSTEM_DHCP="eth0" + BR2_PACKAGE_SYSTEMD_JOURNAL_REMOTE=y + BR2_PACKAGE_SYSTEMD_BACKLIGHT=y + BR2_PACKAGE_SYSTEMD_BINFMT=y + BR2_PACKAGE_SYSTEMD_COREDUMP=y + BR2_PACKAGE_SYSTEMD_FIRSTBOOT=y + BR2_PACKAGE_SYSTEMD_HIBERNATE=y + BR2_PACKAGE_SYSTEMD_IMPORTD=y + BR2_PACKAGE_SYSTEMD_LOCALED=y + BR2_PACKAGE_SYSTEMD_LOGIND=y + BR2_PACKAGE_SYSTEMD_MACHINED=y + BR2_PACKAGE_SYSTEMD_POLKIT=y + BR2_PACKAGE_SYSTEMD_QUOTACHECK=y + BR2_PACKAGE_SYSTEMD_RANDOMSEED=y + BR2_PACKAGE_SYSTEMD_RFKILL=y + BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT=y + BR2_PACKAGE_SYSTEMD_SYSUSERS=y + BR2_PACKAGE_SYSTEMD_VCONSOLE=y + BR2_TARGET_ROOTFS_EXT2=y + """ + + def test_run(self): + self.check_systemd("ext2") + + +# The following tests are all about read-only rootfs, and exercise either +# using an un-populated factory for /var, or an overlaysfs ontop of a +# pre-populated /var. They all specialise the TestInitSystemSystemdRo* +# test cases above. + + +# Helper class for factory-based tests +class InitSystemSystemdBaseFactory(): + config = \ + """ + # BR2_INIT_SYSTEMD_POPULATE_TMPFILES is not set + BR2_ROOTFS_OVERLAY="{}" + """.format(infra.filepath("tests/init/systemd-factory")) + + def test_run(self): + super().test_run() + + # This one must be executed on the target, to check that + # the factory feature works as expected + out, exit_code = self.emulator.run("cat /var/foo/bar") + self.assertEqual(exit_code, 0) + self.assertEqual(out[0], "foobar") + + # /var/foo/bar is from the /var factory + _, exit_code = self.emulator.run("test -e /usr/share/factory/var/foo/bar") + self.assertEqual(exit_code, 0) + + # We can write in /var/foo/bar + _, exit_code = self.emulator.run("echo barfoo >/var/foo/bar") + self.assertEqual(exit_code, 0) + # ... and it contains the new content + out, exit_code = self.emulator.run("cat /var/foo/bar") + self.assertEqual(exit_code, 0) + self.assertEqual(out[0], "barfoo") + # ... but the factory is umodified + out, exit_code = self.emulator.run("cat /usr/share/factory/var/foo/bar") + self.assertEqual(exit_code, 0) + self.assertEqual(out[0], "foobar") + + +class TestInitSystemSystemdRoNetworkdFactory( + InitSystemSystemdBaseFactory, + TestInitSystemSystemdRoNetworkd, +): + config = InitSystemSystemdBaseFactory.config + \ + TestInitSystemSystemdRoNetworkd.config + + +class TestInitSystemSystemdRoIfupdownFactory( + InitSystemSystemdBaseFactory, + TestInitSystemSystemdRoIfupdown, +): + config = InitSystemSystemdBaseFactory.config + \ + TestInitSystemSystemdRoIfupdown.config + + +class TestInitSystemSystemdRoIfupdownDbusbrokerFactory( + InitSystemSystemdBaseFactory, + TestInitSystemSystemdRoIfupdownDbusbroker, +): + config = InitSystemSystemdBaseFactory.config + \ + TestInitSystemSystemdRoIfupdownDbusbroker.config + + +class TestInitSystemSystemdRoIfupdownDbusbrokerDbusFactory( + InitSystemSystemdBaseFactory, + TestInitSystemSystemdRoIfupdownDbusbrokerDbus, +): + config = InitSystemSystemdBaseFactory.config + \ + TestInitSystemSystemdRoIfupdownDbusbrokerDbus.config + + +class TestInitSystemSystemdRoFullFactory( + InitSystemSystemdBaseFactory, + TestInitSystemSystemdRoFull, +): + config = InitSystemSystemdBaseFactory.config + \ + TestInitSystemSystemdRoFull.config + + +# Helper class for overlayfs-based tests +class InitSystemSystemdBaseOverlayfs(): + config = \ + """ + # BR2_INIT_SYSTEMD_VAR_FACTORY is not set + BR2_INIT_SYSTEMD_VAR_OVERLAYFS=y + BR2_ROOTFS_OVERLAY="{}" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.202" + BR2_LINUX_KERNEL_DEFCONFIG="vexpress" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" + BR2_LINUX_KERNEL_DTS_SUPPORT=y + BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9" + """.format(infra.filepath("tests/init/systemd-factory"), + infra.filepath("conf/overlayfs-kernel-fragment.config")) + + def test_run(self): + super().test_run() + + # This one must be executed on the target, to check that + # the tmpfiles pre-populate works as expected + out, exit_code = self.emulator.run("cat /var/foo/bar") + self.assertEqual(exit_code, 0) + self.assertEqual(out[0], "foobar") + + # /var/foo/bar is from the pre-populated /var, so it should + # not be present in the upper of the overlay + _, exit_code = self.emulator.run("test -e /run/buildroot/mounts/var/upper/foo/bar") + self.assertNotEqual(exit_code, 0) + + # We can write in /var/foo/bar + _, exit_code = self.emulator.run("echo barfoo >/var/foo/bar") + self.assertEqual(exit_code, 0) + # ... and it contains the new content + out, exit_code = self.emulator.run("cat /var/foo/bar") + self.assertEqual(exit_code, 0) + self.assertEqual(out[0], "barfoo") + # ... and it to appears in the upper + _, exit_code = self.emulator.run("test -e /run/buildroot/mounts/var/upper/foo/bar") + self.assertEqual(exit_code, 0) + # ... with the new content + out, exit_code = self.emulator.run("cat /run/buildroot/mounts/var/upper/foo/bar") + self.assertEqual(exit_code, 0) + self.assertEqual(out[0], "barfoo") + # ... while the lower still has the oldcontent + out, exit_code = self.emulator.run("cat /run/buildroot/mounts/var/lower/foo/bar") + self.assertEqual(exit_code, 0) + self.assertEqual(out[0], "foobar") + + +class TestInitSystemSystemdRoNetworkdOverlayfs( + InitSystemSystemdBaseOverlayfs, + TestInitSystemSystemdRoNetworkd, +): + config = InitSystemSystemdBaseOverlayfs.config + \ + TestInitSystemSystemdRoNetworkd.config + + +class TestInitSystemSystemdRoIfupdownOverlayfs( + InitSystemSystemdBaseOverlayfs, + TestInitSystemSystemdRoIfupdown, +): + config = InitSystemSystemdBaseOverlayfs.config + \ + TestInitSystemSystemdRoIfupdown.config + + +class TestInitSystemSystemdRoIfupdownDbusbrokerOverlayfs( + InitSystemSystemdBaseOverlayfs, + TestInitSystemSystemdRoIfupdownDbusbroker, +): + config = InitSystemSystemdBaseOverlayfs.config + \ + TestInitSystemSystemdRoIfupdownDbusbroker.config + + +class TestInitSystemSystemdRoIfupdownDbusbrokerDbusOverlayfs( + InitSystemSystemdBaseOverlayfs, + TestInitSystemSystemdRoIfupdownDbusbrokerDbus, +): + config = InitSystemSystemdBaseOverlayfs.config + \ + TestInitSystemSystemdRoIfupdownDbusbrokerDbus.config + + +class TestInitSystemSystemdRoFullOverlayfs( + InitSystemSystemdBaseOverlayfs, + TestInitSystemSystemdRoFull, +): + config = InitSystemSystemdBaseOverlayfs.config + \ + TestInitSystemSystemdRoFull.config + + +class InitSystemSystemdBaseOverlayfsVarBacking(InitSystemBase): + @classmethod + def gen_config(cls, overlaydir: str) -> str: + return re.sub( + r'^\s*BR2_ROOTFS_OVERLAY="(.*)"$', + 'BR2_ROOTFS_OVERLAY="\\1 {}"'.format(infra.filepath(overlaydir)), + TestInitSystemSystemdRoFullOverlayfs.config, + flags=re.MULTILINE, + ) + + def check_var_mounted(self): + self.assertRunOk("grep '^other-var-backing-store /run/buildroot/mounts/var tmpfs' /proc/mounts") + + +class TestInitSystemSystemdRoFullOverlayfsVarBackingMountUnit( + TestInitSystemSystemdRoFullOverlayfs, + InitSystemSystemdBaseOverlayfsVarBacking, +): + config = InitSystemSystemdBaseOverlayfsVarBacking.gen_config( + 'tests/init/systemd-overlay-mount-unit', + ) + + def test_run(self): + super().test_run() + self.check_var_mounted() + + +class TestInitSystemSystemdRoFullOverlayfsVarBackingFstab( + TestInitSystemSystemdRoFullOverlayfs, + InitSystemSystemdBaseOverlayfsVarBacking, +): + config = InitSystemSystemdBaseOverlayfsVarBacking.gen_config( + 'tests/init/systemd-overlay-fstab', + ) + + def test_run(self): + super().test_run() + self.check_var_mounted() diff --git a/support/testing/tests/init/test_systemd_selinux.py b/support/testing/tests/init/test_systemd_selinux.py new file mode 100644 index 00000000..e9bb3405 --- /dev/null +++ b/support/testing/tests/init/test_systemd_selinux.py @@ -0,0 +1,77 @@ +import os + +import infra.basetest + + +class TestSELinuxSystemd(infra.basetest.BRTest): + config = \ + """ + BR2_x86_64=y + BR2_x86_corei7=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_INIT_SYSTEMD=y + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.26" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86_64/linux.config" + BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y + BR2_PACKAGE_LIBSELINUX=y + BR2_PACKAGE_REFPOLICY=y + """ + + def wait_boot(self): + # The complete boot with systemd takes more time than what the + # default typically allows + self.emulator.login(timeout=600) + + def run_tests(self, fstype): + kernel = os.path.join(self.builddir, "images", "bzImage") + rootfs = os.path.join(self.builddir, "images", "rootfs.{}".format(fstype)) + + self.emulator.boot(arch="x86_64", kernel=kernel, + kernel_cmdline=["root=/dev/vda", "rootfstype={}".format(fstype), + "console=ttyS0", "security=selinux"], + options=["-cpu", "Nehalem", + "-drive", "file={},if=virtio,format=raw".format(rootfs)]) + self.wait_boot() + + # Test the reported SELinux mode. + out, ret = self.emulator.run("getenforce") + self.assertEqual(ret, 0) + self.assertEqual(out[0], "Permissive") + + # Check the extended arguments are correctly set. + out, ret = self.emulator.run("ls -dZ /") + self.assertEqual(ret, 0) + self.assertEqual(out[0].split()[0], "system_u:object_r:root_t") + + # Check init's attributes. + out, ret = self.emulator.run("cat /proc/1/attr/current") + self.assertEqual(ret, 0) + self.assertEqual(out[0], "system_u:system_r:init_t\0") + + +class TestSELinuxSystemdExt4(TestSELinuxSystemd): + config = TestSELinuxSystemd.config + \ + """ + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_4=y + BR2_TARGET_ROOTFS_EXT2_SIZE="100M" + """ + + def test_run(self): + self.run_tests("ext4") + + +class TestSELinuxSystemdSquashfs(TestSELinuxSystemd): + config = TestSELinuxSystemd.config + \ + """ + BR2_TARGET_ROOTFS_SQUASHFS=y + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" + """.format( + infra.filepath("tests/init/test_systemd_selinux/linux-squashfs.fragment"), + ) + + def test_run(self): + self.run_tests("squashfs") diff --git a/support/testing/tests/init/test_systemd_selinux/linux-squashfs.fragment b/support/testing/tests/init/test_systemd_selinux/linux-squashfs.fragment new file mode 100644 index 00000000..7a89d006 --- /dev/null +++ b/support/testing/tests/init/test_systemd_selinux/linux-squashfs.fragment @@ -0,0 +1 @@ +CONFIG_SQUASHFS=y diff --git a/support/testing/tests/package/__init__.py b/support/testing/tests/package/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/support/testing/tests/package/br2-external/clang-compiler-rt/Config.in b/support/testing/tests/package/br2-external/clang-compiler-rt/Config.in new file mode 100644 index 00000000..e1f9f8c5 --- /dev/null +++ b/support/testing/tests/package/br2-external/clang-compiler-rt/Config.in @@ -0,0 +1 @@ +source "$BR2_EXTERNAL_CLANG_COMPILER_RT_PATH/package/libfuzzer/Config.in" diff --git a/support/testing/tests/package/br2-external/clang-compiler-rt/external.desc b/support/testing/tests/package/br2-external/clang-compiler-rt/external.desc new file mode 100644 index 00000000..92df8591 --- /dev/null +++ b/support/testing/tests/package/br2-external/clang-compiler-rt/external.desc @@ -0,0 +1 @@ +name: CLANG_COMPILER_RT diff --git a/support/testing/tests/package/br2-external/clang-compiler-rt/external.mk b/support/testing/tests/package/br2-external/clang-compiler-rt/external.mk new file mode 100644 index 00000000..6fa55c12 --- /dev/null +++ b/support/testing/tests/package/br2-external/clang-compiler-rt/external.mk @@ -0,0 +1 @@ +include $(sort $(wildcard $(BR2_EXTERNAL_CLANG_COMPILER_RT_PATH)/package/*/*.mk)) diff --git a/support/testing/tests/package/br2-external/clang-compiler-rt/package/libfuzzer/Config.in b/support/testing/tests/package/br2-external/clang-compiler-rt/package/libfuzzer/Config.in new file mode 100644 index 00000000..2d335fd3 --- /dev/null +++ b/support/testing/tests/package/br2-external/clang-compiler-rt/package/libfuzzer/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBFUZZER + bool "libfuzzer" + help + This project aims at hosting tutorials, + examples, discussions, research proposals, + and other resources related to fuzzing. + + https://github.com/google/fuzzing diff --git a/support/testing/tests/package/br2-external/clang-compiler-rt/package/libfuzzer/libfuzzer.hash b/support/testing/tests/package/br2-external/clang-compiler-rt/package/libfuzzer/libfuzzer.hash new file mode 100644 index 00000000..0601cc02 --- /dev/null +++ b/support/testing/tests/package/br2-external/clang-compiler-rt/package/libfuzzer/libfuzzer.hash @@ -0,0 +1,2 @@ +sha256 c71360c3b1ba1d88b28b0b3cb3a1744d251b87a12f2881224cc53ec26eb7a2db libfuzzer-cec02db916d21baa4db5b8d262d78848b3a35f4b.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/support/testing/tests/package/br2-external/clang-compiler-rt/package/libfuzzer/libfuzzer.mk b/support/testing/tests/package/br2-external/clang-compiler-rt/package/libfuzzer/libfuzzer.mk new file mode 100644 index 00000000..0515b9da --- /dev/null +++ b/support/testing/tests/package/br2-external/clang-compiler-rt/package/libfuzzer/libfuzzer.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# libfuzzer +# +################################################################################ + +LIBFUZZER_VERSION = cec02db916d21baa4db5b8d262d78848b3a35f4b +LIBFUZZER_SITE = $(call github,google,fuzzing,$(LIBFUZZER_VERSION)) +LIBFUZZER_LICENSE = Apache-2.0 +LIBFUZZER_LICENSE_FILES = LICENSE +LIBFUZZER_DEPENDENCIES = compiler-rt + +define LIBFUZZER_BUILD_CMDS + $(HOST_DIR)/bin/clang++ --sysroot=$(STAGING_DIR) \ + -fsanitize=address,fuzzer \ + $(@D)/tutorial/libFuzzer/fuzz_me.cc \ + -o $(@D)/fuzz_me +endef + +define LIBFUZZER_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/fuzz_me $(TARGET_DIR)/usr/bin/fuzz_me +endef + +$(eval $(generic-package)) diff --git a/support/testing/tests/package/br2-external/openjdk/Config.in b/support/testing/tests/package/br2-external/openjdk/Config.in new file mode 100644 index 00000000..2588b340 --- /dev/null +++ b/support/testing/tests/package/br2-external/openjdk/Config.in @@ -0,0 +1,2 @@ +source "$BR2_EXTERNAL_OPENJDK_PATH/package/openjdk-hello-world/Config.in" +source "$BR2_EXTERNAL_OPENJDK_PATH/package/openjdk-jni-test/Config.in" diff --git a/support/testing/tests/package/br2-external/openjdk/external.desc b/support/testing/tests/package/br2-external/openjdk/external.desc new file mode 100644 index 00000000..f28ba506 --- /dev/null +++ b/support/testing/tests/package/br2-external/openjdk/external.desc @@ -0,0 +1 @@ +name: OPENJDK diff --git a/support/testing/tests/package/br2-external/openjdk/external.mk b/support/testing/tests/package/br2-external/openjdk/external.mk new file mode 100644 index 00000000..54c24e8c --- /dev/null +++ b/support/testing/tests/package/br2-external/openjdk/external.mk @@ -0,0 +1 @@ +include $(sort $(wildcard $(BR2_EXTERNAL_OPENJDK_PATH)/package/*/*.mk)) diff --git a/support/testing/tests/package/br2-external/openjdk/package/openjdk-hello-world/Config.in b/support/testing/tests/package/br2-external/openjdk/package/openjdk-hello-world/Config.in new file mode 100644 index 00000000..c37346a4 --- /dev/null +++ b/support/testing/tests/package/br2-external/openjdk/package/openjdk-hello-world/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_OPENJDK_HELLO_WORLD + bool "openjdk hello world" + depends on BR2_PACKAGE_OPENJDK + help + Simple class for testing openjdk diff --git a/support/testing/tests/package/br2-external/openjdk/package/openjdk-hello-world/HelloWorld.java b/support/testing/tests/package/br2-external/openjdk/package/openjdk-hello-world/HelloWorld.java new file mode 100644 index 00000000..37489e44 --- /dev/null +++ b/support/testing/tests/package/br2-external/openjdk/package/openjdk-hello-world/HelloWorld.java @@ -0,0 +1,7 @@ +public class HelloWorld +{ + public static void main(String[] args) + { + System.out.println("Hello, World"); + } +} diff --git a/support/testing/tests/package/br2-external/openjdk/package/openjdk-hello-world/openjdk-hello-world.mk b/support/testing/tests/package/br2-external/openjdk/package/openjdk-hello-world/openjdk-hello-world.mk new file mode 100644 index 00000000..ddd5e388 --- /dev/null +++ b/support/testing/tests/package/br2-external/openjdk/package/openjdk-hello-world/openjdk-hello-world.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# openjdk hello world +# +################################################################################ + +OPENJDK_HELLO_WORLD_DEPENDENCIES = openjdk + +define OPENJDK_HELLO_WORLD_BUILD_CMDS + $(INSTALL) -D $(OPENJDK_HELLO_WORLD_PKGDIR)/HelloWorld.java $(@D)/HelloWorld.java + $(JAVAC) $(@D)/HelloWorld.java +endef + +define OPENJDK_HELLO_WORLD_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/HelloWorld.class $(TARGET_DIR)/usr/bin/HelloWorld.class +endef + +$(eval $(generic-package)) diff --git a/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/Config.in b/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/Config.in new file mode 100644 index 00000000..22cd0c0a --- /dev/null +++ b/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_OPENJDK_JNI_TEST + bool "openjdk JNI test" + depends on BR2_PACKAGE_OPENJDK + help + Tests openjdk JNI support diff --git a/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniHelper.java b/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniHelper.java new file mode 100644 index 00000000..9e2a0387 --- /dev/null +++ b/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniHelper.java @@ -0,0 +1,9 @@ +public class JniHelper +{ + public void HelloManagedWorld() + { + stringMember = "Hello, Managed World"; + } + + public String stringMember = "Set from Java"; +} diff --git a/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniTest.java b/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniTest.java new file mode 100644 index 00000000..21d96797 --- /dev/null +++ b/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniTest.java @@ -0,0 +1,92 @@ +public class JniTest +{ + private static void Test( + String name, + Object actual, + Object expected, + String actualAsString, + String expectedAsString) + { + if (!actual.equals(expected)) + { + System.out.println(String.format( + "Test: %s failed\nExpected: \"%s\", Actual: \"%s\"", + name, + expected, + actual)); + JniTest.exitCode = -1; + } + else + { + System.out.println(String.format("Test: %s passed", name)); + } + } + + private static void Test( + String name, + String actual, + String expected) + { + JniTest.Test(name, actual, expected, actual, expected); + } + + public static void main(String[] args) + { + var actualVersion = JniWrapper.get_jni_version(); + var expectedVersion = 0x00150000; + JniTest.Test( + "Get JNI Version", + actualVersion, + expectedVersion, + String.format("0x%08X", actualVersion), + String.format("0x%08X", expectedVersion)); + + JniTest.Test( + "Read Native String Constant", + JniWrapper.read_constant_string(), + "Hello from C"); + + JniTest.Test( + "Write Java String to Native Library", + JniWrapper.write_string("Hello from Java"), + "Hello from Java"); + + JniTest.Test( + "Write Java Char Array to Native Library", + JniWrapper.write_char_array("Hello from Java".toCharArray()), + "Hello from Java"); + + var helper = new JniHelper(); + JniTest.Test( + "Write String Member to Native Library", + JniWrapper.write_string_member(helper), + "Set from Java"); + + JniWrapper.set_string_member(helper); + JniTest.Test( + "Set String Member from Native Library", + helper.stringMember, + "Set from C"); + + JniWrapper.execute_java_function(helper); + JniTest.Test( + "Execeute Java Function from Native Library", + helper.stringMember, + "Hello, Managed World"); + + helper = JniWrapper.instantiate_java_class(); + JniTest.Test( + "Instantiate Java Class", + helper.stringMember, + "Instantiated from C"); + + JniTest.Test( + "Call Native Library to Set System Time", + JniWrapper.set_and_write_time_in_seconds(1000), + "1000"); + + System.exit(exitCode); + } + + public static int exitCode = 0; +} diff --git a/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniWrapper.c b/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniWrapper.c new file mode 100644 index 00000000..0dde4e0c --- /dev/null +++ b/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniWrapper.c @@ -0,0 +1,50 @@ +#include "JniWrapper.h" +#include "jni_helper.h" + +// Proxies the generated function calls to the jni_helper + +JNIEXPORT jint JNICALL Java_JniWrapper_get_1jni_1version + (JNIEnv* env, jclass class) +{ + return get_jni_version(env); +} +JNIEXPORT jstring JNICALL Java_JniWrapper_read_1constant_1string + (JNIEnv* env, jclass class) +{ + return read_constant_jstring(env); +} +JNIEXPORT jstring JNICALL Java_JniWrapper_write_1string + (JNIEnv* env, jclass class, jstring string) +{ + return write_jstring(env, string); +} +JNIEXPORT jstring JNICALL Java_JniWrapper_write_1char_1array + (JNIEnv* env, jclass class, jcharArray chars) +{ + return write_jchar_array(env, chars); +} +JNIEXPORT jstring JNICALL Java_JniWrapper_write_1string_1member + (JNIEnv* env, jclass class, jobject helper) +{ + return write_string_member(env, helper); +} +JNIEXPORT void JNICALL Java_JniWrapper_set_1string_1member + (JNIEnv* env, jclass class, jobject helper) +{ + set_string_member(env, helper); +} +JNIEXPORT void JNICALL Java_JniWrapper_execute_1java_1function + (JNIEnv* env, jclass class, jobject helper) +{ + execute_java_function(env, helper); +} +JNIEXPORT jobject JNICALL Java_JniWrapper_instantiate_1java_1class + (JNIEnv* env, jclass class) +{ + return instantiate_java_class(env); +} +JNIEXPORT jstring JNICALL Java_JniWrapper_set_1and_1write_1time_1in_1seconds + (JNIEnv* env, jclass class, jint seconds) +{ + return set_and_write_time_in_seconds(env, seconds); +} diff --git a/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniWrapper.java b/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniWrapper.java new file mode 100644 index 00000000..d11e99bf --- /dev/null +++ b/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniWrapper.java @@ -0,0 +1,17 @@ +public class JniWrapper +{ + static + { + System.loadLibrary("jni_native"); + } + + public static native int get_jni_version(); + public static native String read_constant_string(); + public static native String write_string(String string); + public static native String write_char_array(char[] string); + public static native String write_string_member(JniHelper helper); + public static native void set_string_member(JniHelper helper); + public static native void execute_java_function(JniHelper helper); + public static native JniHelper instantiate_java_class(); + public static native String set_and_write_time_in_seconds(int seconds); +} diff --git a/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/jni_helper.c b/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/jni_helper.c new file mode 100644 index 00000000..e6e2eec8 --- /dev/null +++ b/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/jni_helper.c @@ -0,0 +1,94 @@ +#include "jni_helper.h" +#include "native.h" + +// Handles Java/C interop + +jint get_jni_version(JNIEnv* env) +{ + return (*env)->GetVersion(env); +} +jstring read_constant_jstring(JNIEnv* env) +{ + return (*env)->NewStringUTF(env, read_constant_string()); +} +static jstring read_internal_string_as_jstring(JNIEnv* env) +{ + return (*env)->NewStringUTF(env, read_internal_string()); +} +jstring write_jstring(JNIEnv* env, jstring string) +{ + const char* utf8_string = (*env)->GetStringUTFChars(env, string, NULL); + write_internal_string(utf8_string); + + (*env)->ReleaseStringUTFChars(env, string, utf8_string); + return read_internal_string_as_jstring(env); +} +jstring write_jchar_array(JNIEnv* env, jcharArray chars) +{ + jsize length = (*env)->GetArrayLength(env, chars); + jchar* body = (*env)->GetCharArrayElements(env, chars, NULL); + jstring input = (*env)->NewString(env, body, length); + jstring output = write_jstring(env, input); + + (*env)->ReleaseCharArrayElements(env, chars, body, JNI_ABORT); + return output; +} +static jfieldID get_string_member_field(JNIEnv* env, jobject helper) +{ + jclass class = (*env)->GetObjectClass(env, helper); + return (*env)->GetFieldID(env, class, "stringMember", "Ljava/lang/String;"); +} +jstring write_string_member(JNIEnv* env, jobject helper) +{ + jfieldID fieldID = get_string_member_field(env, helper); + jstring string = (*env)->GetObjectField(env, helper, fieldID); + + return write_jstring(env, string); +} +static void set_string_member_helper(JNIEnv* env, jobject helper, const char* utf8_string) +{ + jfieldID fieldID = get_string_member_field(env, helper); + jstring string = (*env)->NewStringUTF(env, utf8_string); + (*env)->SetObjectField(env, helper, fieldID, string); +} +void set_string_member(JNIEnv* env, jobject helper) +{ + char stringBuffer[256]; + write_external_string(stringBuffer, 256); + set_string_member_helper(env, helper, stringBuffer); +} + +typedef struct +{ + JNIEnv* env; + jobject object; + jmethodID methodID; +} method_parameters; +static void call_void_java_method(void* context) +{ + method_parameters* parameters = (method_parameters*)context; + (*parameters->env)->CallVoidMethod(parameters->env, parameters->object, parameters->methodID); +} +void execute_java_function(JNIEnv* env, jobject helper) +{ + jclass class = (*env)->GetObjectClass(env, helper); + jmethodID methodID = (*env)->GetMethodID(env, class, "HelloManagedWorld", "()V"); + + method_parameters parameters = {env, helper, methodID}; + execute_function(call_void_java_method, (void*)¶meters); +} +jobject instantiate_java_class(JNIEnv* env) +{ + jclass class = (*env)->FindClass(env, "JniHelper"); + jmethodID methodID = (*env)->GetMethodID(env, class, "", "()V"); + + jobject object =(*env)->NewObject(env, class, methodID); + set_string_member_helper(env, object, "Instantiated from C"); + return object; +} +jstring set_and_write_time_in_seconds(JNIEnv* env, jint seconds) +{ + set_time_in_seconds((int)seconds); + write_internal_time_in_seconds(); + return read_internal_string_as_jstring(env); +} diff --git a/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/jni_helper.h b/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/jni_helper.h new file mode 100644 index 00000000..4c9aab3b --- /dev/null +++ b/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/jni_helper.h @@ -0,0 +1,13 @@ +#pragma once + +#include + +jint get_jni_version(JNIEnv* env); +jstring read_constant_jstring(JNIEnv* env); +jstring write_jstring(JNIEnv* env, jstring string); +jstring write_jchar_array(JNIEnv* env, jcharArray chars); +jstring write_string_member(JNIEnv* env, jobject helper); +void set_string_member(JNIEnv* env, jobject helper); +void execute_java_function(JNIEnv* env, jobject helper); +jobject instantiate_java_class(JNIEnv* env); +jstring set_and_write_time_in_seconds(JNIEnv* env, jint seconds); diff --git a/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/native.c b/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/native.c new file mode 100644 index 00000000..ed87e345 --- /dev/null +++ b/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/native.c @@ -0,0 +1,39 @@ +#include "native.h" +#include +#include + +// Pure native functions + +#define CHAR_BUFFER_SIZE 256 +static char buffer[CHAR_BUFFER_SIZE]; + +const char* read_constant_string() +{ + return "Hello from C"; +} +const char* read_internal_string() +{ + return buffer; +} +void write_internal_string(const char* string) +{ + snprintf(buffer, CHAR_BUFFER_SIZE, "%s", string); +} +void write_external_string(char* string, size_t maxLength) +{ + snprintf(string, maxLength, "Set from C"); +} +void execute_function(void(*function)(void*), void* context) +{ + function(context); +} +void set_time_in_seconds(int seconds) +{ + time_t timeToSet = seconds; + stime(&timeToSet); +} +void write_internal_time_in_seconds() +{ + time_t systemTime = time(NULL); + snprintf(buffer, CHAR_BUFFER_SIZE, "%u", systemTime); +} diff --git a/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/native.h b/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/native.h new file mode 100644 index 00000000..a25f1779 --- /dev/null +++ b/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/native.h @@ -0,0 +1,11 @@ +#pragma once + +#include + +const char* read_constant_string(); +const char* read_internal_string(); +void write_internal_string(const char* string); +void write_external_string(char* string, size_t maxLength); +void execute_function(void(*function)(void*), void* context); +void set_time_in_seconds(int seconds); +void write_internal_time_in_seconds(); diff --git a/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/openjdk-jni-test.mk b/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/openjdk-jni-test.mk new file mode 100644 index 00000000..2028ad40 --- /dev/null +++ b/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/openjdk-jni-test.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# openjdk jni test +# +################################################################################ + +OPENJDK_JNI_TEST_DEPENDENCIES = openjdk + +JNI_INCLUDE_PATH = $(BUILD_DIR)/openjdk-$(OPENJDK_VERSION)/build/linux-aarch64-server-release/jdk/include + +define OPENJDK_JNI_TEST_BUILD_CMDS + # Compile Java classes and generate native headers + $(JAVAC) -d $(@D) -h $(@D) \ + $(OPENJDK_JNI_TEST_PKGDIR)/JniTest.java \ + $(OPENJDK_JNI_TEST_PKGDIR)/JniWrapper.java \ + $(OPENJDK_JNI_TEST_PKGDIR)/JniHelper.java + + # Compile shared library + $(TARGET_MAKE_ENV) $(TARGET_CC) -shared -fPIC \ + -I$(JNI_INCLUDE_PATH) -I$(JNI_INCLUDE_PATH)/linux -I$(@D) \ + -o $(@D)/libjni_native.so \ + $(OPENJDK_JNI_TEST_PKGDIR)/JniWrapper.c \ + $(OPENJDK_JNI_TEST_PKGDIR)/jni_helper.c \ + $(OPENJDK_JNI_TEST_PKGDIR)/native.c +endef + +define OPENJDK_JNI_TEST_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/JniTest.class $(TARGET_DIR)/usr/bin/JniTest.class + $(INSTALL) -D -m 755 $(@D)/JniWrapper.class $(TARGET_DIR)/usr/bin/JniWrapper.class + $(INSTALL) -D -m 755 $(@D)/JniHelper.class $(TARGET_DIR)/usr/bin/JniHelper.class + $(INSTALL) -D -m 755 $(@D)/libjni_native.so $(TARGET_DIR)/usr/lib/libjni_native.so +endef + +$(eval $(generic-package)) diff --git a/support/testing/tests/package/br2-external/polkit/Config.in b/support/testing/tests/package/br2-external/polkit/Config.in new file mode 100644 index 00000000..2d117561 --- /dev/null +++ b/support/testing/tests/package/br2-external/polkit/Config.in @@ -0,0 +1 @@ +source "$BR2_EXTERNAL_POLKIT_PATH/package/polkit-rules-test/Config.in" diff --git a/support/testing/tests/package/br2-external/polkit/external.desc b/support/testing/tests/package/br2-external/polkit/external.desc new file mode 100644 index 00000000..ecef4869 --- /dev/null +++ b/support/testing/tests/package/br2-external/polkit/external.desc @@ -0,0 +1 @@ +name: POLKIT diff --git a/support/testing/tests/package/br2-external/polkit/external.mk b/support/testing/tests/package/br2-external/polkit/external.mk new file mode 100644 index 00000000..64e369cc --- /dev/null +++ b/support/testing/tests/package/br2-external/polkit/external.mk @@ -0,0 +1 @@ +include $(sort $(wildcard $(BR2_EXTERNAL_POLKIT_PATH)/package/*/*.mk)) diff --git a/support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/Config.in b/support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/Config.in new file mode 100644 index 00000000..0fe125ec --- /dev/null +++ b/support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_POLKIT_RULES_TEST + bool "polkit rules test" + depends on BR2_PACKAGE_POLKIT + help + Simple test to ensure polkit is loading and enforcing rules + correctly. diff --git a/support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/initd/hello-polkit.c b/support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/initd/hello-polkit.c new file mode 100644 index 00000000..cf5343cd --- /dev/null +++ b/support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/initd/hello-polkit.c @@ -0,0 +1,6 @@ +#include + +int main(void){ + printf("Hello polkit!\n"); + return 0; +} diff --git a/support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/initd/hello-polkit.policy b/support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/initd/hello-polkit.policy new file mode 100644 index 00000000..82202931 --- /dev/null +++ b/support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/initd/hello-polkit.policy @@ -0,0 +1,14 @@ + + + + + Authentication is required to run the hello world test program + + no + no + + /usr/bin/hello-polkit + + diff --git a/support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/initd/hello-polkit.rules b/support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/initd/hello-polkit.rules new file mode 100644 index 00000000..a0a66f64 --- /dev/null +++ b/support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/initd/hello-polkit.rules @@ -0,0 +1,6 @@ +polkit.addRule(function(action, subject) { + if (action.id == "org.freedesktop.policykit.pkexec.hello-polkit" && + subject.user == "brtest") { + return polkit.Result.YES; + } +}); diff --git a/support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/polkit-rules-test.mk b/support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/polkit-rules-test.mk new file mode 100644 index 00000000..4ec3805e --- /dev/null +++ b/support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/polkit-rules-test.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# polkit-rules-test +# +################################################################################ + +POLKIT_RULES_TEST_DEPENDENCIES = polkit + +define POLKIT_RULES_TEST_USERS + brtest -1 brtest -1 =password /home/brtest /bin/sh brtest +endef + +define POLKIT_RULES_TEST_BUILD_CMDS + $(INSTALL) -D $(POLKIT_RULES_TEST_PKGDIR)/initd/hello-polkit.c $(@D)/hello-polkit.c + $(TARGET_CC) $(@D)/hello-polkit.c -o $(@D)/hello-polkit +endef + +# Install the rules file to /root. Test_polkit.py first tests that restarting +# timesyncd as a user fails, then moves the rules file and confirmes restarting +# timesyncd as a user succeeds. +define POLKIT_RULES_TEST_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/etc/polkit-1/rules.d + $(INSTALL) -D $(POLKIT_RULES_TEST_PKGDIR)/systemd/systemd-timesyncd-restart.rules \ + $(TARGET_DIR)/root/systemd-timesyncd-restart.rules +endef + +define POLKIT_RULES_TEST_INSTALL_INIT_SYSV + mkdir -p $(TARGET_DIR)/usr/share/polkit-1/actions/ + $(INSTALL) -D $(@D)/hello-polkit $(TARGET_DIR)/usr/bin/hello-polkit + + $(INSTALL) -D $(POLKIT_RULES_TEST_PKGDIR)/initd/hello-polkit.policy \ + $(TARGET_DIR)/usr/share/polkit-1/actions/hello-polkit.policy + + $(INSTALL) -D $(POLKIT_RULES_TEST_PKGDIR)/initd/hello-polkit.rules \ + $(TARGET_DIR)/root/hello-polkit.rules +endef + +$(eval $(generic-package)) diff --git a/support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/systemd/systemd-timesyncd-restart.rules b/support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/systemd/systemd-timesyncd-restart.rules new file mode 100644 index 00000000..94611950 --- /dev/null +++ b/support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/systemd/systemd-timesyncd-restart.rules @@ -0,0 +1,7 @@ +polkit.addRule(function(action, subject) { + if (action.id == "org.freedesktop.systemd1.manage-units" && + action.lookup("unit") == "systemd-timesyncd.service" && + subject.user == "brtest") { + return polkit.Result.YES; + } +}); diff --git a/support/testing/tests/package/br2-external/python-pybind/Config.in b/support/testing/tests/package/br2-external/python-pybind/Config.in new file mode 100644 index 00000000..70c77157 --- /dev/null +++ b/support/testing/tests/package/br2-external/python-pybind/Config.in @@ -0,0 +1 @@ +source "$BR2_EXTERNAL_PYTHON_PYBIND_PATH/package/python-pybind-example/Config.in" diff --git a/support/testing/tests/package/br2-external/python-pybind/external.desc b/support/testing/tests/package/br2-external/python-pybind/external.desc new file mode 100644 index 00000000..eef5e0f5 --- /dev/null +++ b/support/testing/tests/package/br2-external/python-pybind/external.desc @@ -0,0 +1 @@ +name: PYTHON_PYBIND diff --git a/support/testing/tests/package/br2-external/python-pybind/external.mk b/support/testing/tests/package/br2-external/python-pybind/external.mk new file mode 100644 index 00000000..3501f313 --- /dev/null +++ b/support/testing/tests/package/br2-external/python-pybind/external.mk @@ -0,0 +1 @@ +include $(sort $(wildcard $(BR2_EXTERNAL_PYTHON_PYBIND_PATH)/package/*/*.mk)) diff --git a/support/testing/tests/package/br2-external/python-pybind/package/python-pybind-example/Config.in b/support/testing/tests/package/br2-external/python-pybind/package/python-pybind-example/Config.in new file mode 100644 index 00000000..1b4d1e0d --- /dev/null +++ b/support/testing/tests/package/br2-external/python-pybind/package/python-pybind-example/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYBIND_EXAMPLE + bool "python-pybind-example" + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_PYBIND + help + This test creates a cpp macro later used on target in python diff --git a/support/testing/tests/package/br2-external/python-pybind/package/python-pybind-example/example.cpp b/support/testing/tests/package/br2-external/python-pybind/package/python-pybind-example/example.cpp new file mode 100644 index 00000000..f2eea8e4 --- /dev/null +++ b/support/testing/tests/package/br2-external/python-pybind/package/python-pybind-example/example.cpp @@ -0,0 +1,16 @@ +#include +namespace py = pybind11; + +int add (int i, int j) { + return i + j; +} + +PYBIND11_MODULE (example, m) { + // optional module description + m.doc() = "pybind11 example plugin"; + // test a module method + m.def("add", &add, "example::add adds two integer numbers"); + // test a module attribute + py::object hello = py::cast("Hello World"); + m.attr("says") = hello; +} diff --git a/support/testing/tests/package/br2-external/python-pybind/package/python-pybind-example/python-pybind-example.mk b/support/testing/tests/package/br2-external/python-pybind/package/python-pybind-example/python-pybind-example.mk new file mode 100644 index 00000000..6620e704 --- /dev/null +++ b/support/testing/tests/package/br2-external/python-pybind/package/python-pybind-example/python-pybind-example.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# python-pybind-example +# +################################################################################ + +# this builds a C++ macro "add(a,b)" +# that we expose to host-python with a custom install +# and that the python test script will later use +PYTHON_PYBIND_EXAMPLE_DEPENDENCIES = python-pybind + +PYTHON_PYBIND_EXAMPLE_PYBIND_INCLUDE = \ + $(shell $(HOST_DIR)/bin/python3 -c 'import pybind11; print(pybind11.get_include())') + +PYTHON_PYBIND_EXAMPLE_CXX_FLAGS = \ + $(TARGET_CXXFLAGS) \ + -Wall -shared -std=c++11 -fPIC \ + -I$(PYTHON_PYBIND_EXAMPLE_PYBIND_INCLUDE) \ + $(shell $(STAGING_DIR)/usr/bin/python3-config --includes --libs --ldflags) + +# .so to be installed must have exact suffix +# otherwise import() in python will not work +HOST_LIB_BINARY_SUFFIX = \ + $(shell $(STAGING_DIR)/usr/bin/python3-config --extension-suffix) + +define PYTHON_PYBIND_EXAMPLE_BUILD_CMDS + if [ -z "$(PYTHON_PYBIND_EXAMPLE_PYBIND_INCLUDE)" ]; then \ + echo "pybind11.get_include() returned empty"; \ + exit 1; \ + fi + $(TARGET_CXX) $(PYTHON_PYBIND_EXAMPLE_CXX_FLAGS) \ + $(PYTHON_PYBIND_EXAMPLE_PKGDIR)/example.cpp \ + -o $(@D)/example$(HOST_LIB_BINARY_SUFFIX) +endef + +define PYTHON_PYBIND_EXAMPLE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/example$(HOST_LIB_BINARY_SUFFIX) \ + $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/example$(HOST_LIB_BINARY_SUFFIX) +endef + +$(eval $(generic-package)) diff --git a/support/testing/tests/package/copy-sample-script-to-target.sh b/support/testing/tests/package/copy-sample-script-to-target.sh new file mode 100755 index 00000000..6448a80d --- /dev/null +++ b/support/testing/tests/package/copy-sample-script-to-target.sh @@ -0,0 +1,7 @@ +#!/bin/sh +set -e + +shift +for file in "$@"; do + cp -f "${file}" "${TARGET_DIR}/root/" +done diff --git a/support/testing/tests/package/sample_bmap_tools.sh b/support/testing/tests/package/sample_bmap_tools.sh new file mode 100755 index 00000000..08605b3b --- /dev/null +++ b/support/testing/tests/package/sample_bmap_tools.sh @@ -0,0 +1,16 @@ +#!/bin/sh +# simple test which creates a dummy file system image, then use bmaptool create +# and bmaptool copy to copy it to another file + +set -xeu + +# create the necessary test files +dd if=/dev/zero of=disk.img bs=2M count=1 +mkfs.ext4 disk.img +fallocate -d disk.img +dd if=/dev/zero of=copy.img bs=2M count=1 + +# do a test copy of the file system image +bmaptool create -o disk.img.bmap disk.img +bmaptool copy disk.img copy.img +cmp disk.img copy.img diff --git a/support/testing/tests/package/sample_gst1_python.py b/support/testing/tests/package/sample_gst1_python.py new file mode 100644 index 00000000..2d7e0e1e --- /dev/null +++ b/support/testing/tests/package/sample_gst1_python.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python3 +"""A simple test that uses gst1-python to run a fake videotestsrc for 100 +frames +""" +import sys +import gi +gi.require_version('Gst', '1.0') +from gi.repository import Gst, GLib # noqa: E402 + + +def on_message(bus, message, loop): + print('Received Gst.Message.type: {}'.format(message.type)) + if message.type == Gst.MessageType.EOS: + loop.quit() + return True + + +def main(): + # Initializes Gstreamer + Gst.init(sys.argv) + pipeline = Gst.parse_launch("videotestsrc num-buffers=100 ! fakevideosink") + bus = pipeline.get_bus() + bus.add_signal_watch() + pipeline.set_state(Gst.State.PLAYING) + loop = GLib.MainLoop() + bus.connect("message", on_message, loop) + loop.run() + pipeline.set_state(Gst.State.NULL) + + +if __name__ == '__main__': + main() diff --git a/support/testing/tests/package/sample_libftdi1.py b/support/testing/tests/package/sample_libftdi1.py new file mode 100644 index 00000000..2da6124b --- /dev/null +++ b/support/testing/tests/package/sample_libftdi1.py @@ -0,0 +1 @@ +import ftdi1 # noqa diff --git a/support/testing/tests/package/sample_nodejs_basic.js b/support/testing/tests/package/sample_nodejs_basic.js new file mode 100644 index 00000000..7633173c --- /dev/null +++ b/support/testing/tests/package/sample_nodejs_basic.js @@ -0,0 +1,3 @@ +var assert = require('assert'); +assert.strictEqual(1, 1); +console.log("Hello World"); diff --git a/support/testing/tests/package/sample_nodejs_module.js b/support/testing/tests/package/sample_nodejs_module.js new file mode 100644 index 00000000..57aee734 --- /dev/null +++ b/support/testing/tests/package/sample_nodejs_module.js @@ -0,0 +1,7 @@ +var assert = require('assert'); +var lodash = require('lodash'); +result = lodash.chunk(['a', 'b', 'c', 'd'], 2); +expected = [ [ 'a', 'b' ], [ 'c', 'd' ] ]; +assert.deepStrictEqual(result, expected) + + diff --git a/support/testing/tests/package/sample_nu.nu b/support/testing/tests/package/sample_nu.nu new file mode 100644 index 00000000..5287862c --- /dev/null +++ b/support/testing/tests/package/sample_nu.nu @@ -0,0 +1,6 @@ +#! /usr/bin/nu +def greet [name] { + ["hello" $name] +} + +greet "world" diff --git a/support/testing/tests/package/sample_python_aexpect.py b/support/testing/tests/package/sample_python_aexpect.py new file mode 100644 index 00000000..a31a17bd --- /dev/null +++ b/support/testing/tests/package/sample_python_aexpect.py @@ -0,0 +1 @@ +import aexpect diff --git a/support/testing/tests/package/sample_python_argh.py b/support/testing/tests/package/sample_python_argh.py new file mode 100644 index 00000000..48247bf6 --- /dev/null +++ b/support/testing/tests/package/sample_python_argh.py @@ -0,0 +1,10 @@ +import argh + + +@argh.arg("foo", help="help for foo") +@argh.arg("--bar", help="help for bar") +def main(foo, bar=False): + print("{}, {}".format(foo, bar)) + + +argh.dispatch_command(main) diff --git a/support/testing/tests/package/sample_python_asn1crypto.py b/support/testing/tests/package/sample_python_asn1crypto.py new file mode 100644 index 00000000..0b104875 --- /dev/null +++ b/support/testing/tests/package/sample_python_asn1crypto.py @@ -0,0 +1,11 @@ +from asn1crypto import pem, x509 + + +with open('/etc/ssl/certs/ISRG_Root_X2.pem', 'rb') as f: + der_bytes = f.read() + if pem.detect(der_bytes): + type_name, headers, der_bytes = pem.unarmor(der_bytes) + +cert = x509.Certificate.load(der_bytes) + +assert cert.subject.native["common_name"] == "ISRG Root X2" diff --git a/support/testing/tests/package/sample_python_attrs.py b/support/testing/tests/package/sample_python_attrs.py new file mode 100644 index 00000000..f2249449 --- /dev/null +++ b/support/testing/tests/package/sample_python_attrs.py @@ -0,0 +1,15 @@ +import attr + + +@attr.s +class Obj(object): + x = attr.ib() + y = attr.ib(default=1) + + +obj1 = Obj(2) +assert(obj1.x == 2) +assert(obj1.y == 1) +obj2 = Obj(3, 4) +assert(obj2.x == 3) +assert(obj2.y == 4) diff --git a/support/testing/tests/package/sample_python_augeas.py b/support/testing/tests/package/sample_python_augeas.py new file mode 100644 index 00000000..d62afa56 --- /dev/null +++ b/support/testing/tests/package/sample_python_augeas.py @@ -0,0 +1,9 @@ +import augeas + +a = augeas.Augeas(root="/") +hosts = a.match("/files/etc/hosts/*") +assert(hosts is not None) +assert(len(hosts) == 2) + +assert(a.get("/files/etc/hosts/1/ipaddr") == "127.0.0.1") +assert(a.get("/files/etc/hosts/1/canonical") == "localhost") diff --git a/support/testing/tests/package/sample_python_autobahn.py b/support/testing/tests/package/sample_python_autobahn.py new file mode 100644 index 00000000..8189b6a6 --- /dev/null +++ b/support/testing/tests/package/sample_python_autobahn.py @@ -0,0 +1 @@ +import autobahn.wamp # noqa diff --git a/support/testing/tests/package/sample_python_automat.py b/support/testing/tests/package/sample_python_automat.py new file mode 100644 index 00000000..baf536f9 --- /dev/null +++ b/support/testing/tests/package/sample_python_automat.py @@ -0,0 +1,27 @@ +from automat import MethodicalMachine + + +class Led(object): + _machine = MethodicalMachine() + + @_machine.state() + def led_on(self): + "led is on" + + @_machine.state(initial=True) + def led_off(self): + "led is off" + + @_machine.input() + def turn_on(self): + "turn the led on" + + @_machine.output() + def _light(self): + print("light") + + led_off.upon(turn_on, enter=led_on, outputs=[_light]) + + +led = Led() +led.turn_on() diff --git a/support/testing/tests/package/sample_python_avro.py b/support/testing/tests/package/sample_python_avro.py new file mode 100644 index 00000000..46363ad2 --- /dev/null +++ b/support/testing/tests/package/sample_python_avro.py @@ -0,0 +1,23 @@ +from io import BytesIO +from avro.schema import parse +from avro.io import DatumReader, BinaryDecoder + +schema = parse("""{ +"namespace": "org.buildroot.package.python_avro", +"type": "record", +"name": "Developer", +"fields": [ + {"name": "email", "type": "string"}, + {"name": "maintainer_of", "type": "string"} +] +}""") + +example = b' RESULT.FAIL.value) +assert(RESULT.get(-5) == RESULT.FAIL) diff --git a/support/testing/tests/package/sample_python_construct.py b/support/testing/tests/package/sample_python_construct.py new file mode 100644 index 00000000..551b5597 --- /dev/null +++ b/support/testing/tests/package/sample_python_construct.py @@ -0,0 +1,16 @@ +# Inspired from https://construct.readthedocs.io/en/latest/intro.html#example +import construct + +format = construct.Struct( + "signature" / construct.Const(b"BMP"), + "width" / construct.Int8ub, + "height" / construct.Int8ub, + "pixels" / construct.Array(construct.this.width * construct.this.height, construct.Byte), +) +a = format.build(dict(width=3,height=2,pixels=[7,8,9,11,12,13])) +assert(a == b'BMP\x03\x02\x07\x08\t\x0b\x0c\r') +b = format.parse(b'BMP\x03\x02\x07\x08\t\x0b\x0c\r') +assert(b.signature == b'BMP') +assert(b.width == 3) +assert(b.height == 2) +assert(b.pixels == [7, 8, 9, 11, 12, 13]) diff --git a/support/testing/tests/package/sample_python_cryptography.py b/support/testing/tests/package/sample_python_cryptography.py new file mode 100644 index 00000000..ec9883dc --- /dev/null +++ b/support/testing/tests/package/sample_python_cryptography.py @@ -0,0 +1,3 @@ +from cryptography.fernet import Fernet +key = Fernet.generate_key() +f = Fernet(key) diff --git a/support/testing/tests/package/sample_python_dbus_fast.py b/support/testing/tests/package/sample_python_dbus_fast.py new file mode 100644 index 00000000..4157bccf --- /dev/null +++ b/support/testing/tests/package/sample_python_dbus_fast.py @@ -0,0 +1,45 @@ +import asyncio +from dbus_fast.aio import MessageBus +from dbus_fast.service import ServiceInterface, method +import dbus_fast.introspection as intr +from dbus_fast import BusType + + +class SampleInterface(ServiceInterface): + def __init__(self): + super().__init__('test.interface') + + @method() + def Ping(self): + pass + + @method() + def ConcatStrings(self, what1: 's', what2: 's') -> 's': # noqa: F821 + return what1 + what2 + + +async def main(): + bus_name = 'dbus.fast.sample' + obj_path = '/test/path' + + bus = await MessageBus(bus_type=BusType.SYSTEM).connect() + bus2 = await MessageBus(bus_type=BusType.SYSTEM).connect() + + await bus.request_name(bus_name) + + service_interface = SampleInterface() + bus.export(obj_path, service_interface) + + introspection = await bus2.introspect(bus_name, obj_path) + assert type(introspection) is intr.Node + obj = bus2.get_proxy_object(bus_name, obj_path, introspection) + interface = obj.get_interface(service_interface.name) + + result = await interface.call_ping() + assert result is None + + result = await interface.call_concat_strings('hello ', 'world') + assert result == 'hello world' + + +asyncio.run(main()) diff --git a/support/testing/tests/package/sample_python_dbus_next.py b/support/testing/tests/package/sample_python_dbus_next.py new file mode 100644 index 00000000..710bfa8c --- /dev/null +++ b/support/testing/tests/package/sample_python_dbus_next.py @@ -0,0 +1,44 @@ +import asyncio +from dbus_next.aio import MessageBus +from dbus_next.service import ServiceInterface, method +import dbus_next.introspection as intr +from dbus_next import BusType + + +class SampleInterface(ServiceInterface): + def __init__(self): + super().__init__('test.interface') + + @method() + def Ping(self): + pass + + @method() + def ConcatStrings(self, what1: 's', what2: 's') -> 's': # noqa: F821 + return what1 + what2 + + +async def main(): + bus_name = 'dbus.next.sample' + + bus = await MessageBus(bus_type=BusType.SYSTEM).connect() + bus2 = await MessageBus(bus_type=BusType.SYSTEM).connect() + + await bus.request_name(bus_name) + + service_interface = SampleInterface() + bus.export('/test/path', service_interface) + + introspection = await bus2.introspect(bus_name, '/test/path') + assert type(introspection) is intr.Node + obj = bus2.get_proxy_object(bus_name, '/test/path', introspection) + interface = obj.get_interface(service_interface.name) + + result = await interface.call_ping() + assert result is None + + result = await interface.call_concat_strings('hello ', 'world') + assert result == 'hello world' + + +asyncio.run(main()) diff --git a/support/testing/tests/package/sample_python_dicttoxml2.py b/support/testing/tests/package/sample_python_dicttoxml2.py new file mode 100644 index 00000000..788c5e2c --- /dev/null +++ b/support/testing/tests/package/sample_python_dicttoxml2.py @@ -0,0 +1,11 @@ +from dicttoxml2 import dicttoxml + +payload: dict = {'mylist': ['foo', 'bar', 'baz'], 'mydict': {'foo': 'bar', 'baz': 1}, 'ok': True} + +expected: bytes = b'' \ + b'' \ + b'' \ + b'' \ + b'' + +assert dicttoxml(payload, cdata=True) == expected diff --git a/support/testing/tests/package/sample_python_distro.py b/support/testing/tests/package/sample_python_distro.py new file mode 100644 index 00000000..b31f1297 --- /dev/null +++ b/support/testing/tests/package/sample_python_distro.py @@ -0,0 +1,4 @@ +import distro + +assert(distro.name() == 'Buildroot') +assert(distro.id() == 'buildroot') diff --git a/support/testing/tests/package/sample_python_django.py b/support/testing/tests/package/sample_python_django.py new file mode 100644 index 00000000..c2bad566 --- /dev/null +++ b/support/testing/tests/package/sample_python_django.py @@ -0,0 +1 @@ +import django # noqa: F401 diff --git a/support/testing/tests/package/sample_python_docker.py b/support/testing/tests/package/sample_python_docker.py new file mode 100644 index 00000000..a69097b4 --- /dev/null +++ b/support/testing/tests/package/sample_python_docker.py @@ -0,0 +1,12 @@ +import docker + +client = docker.from_env() +info = client.info() +images = client.images.list() + +assert len(images) > 0 + +print('Version:', info['ServerVersion']) +print('Images:') +for i in images: + print(i.tags[0]) diff --git a/support/testing/tests/package/sample_python_dtschema.py b/support/testing/tests/package/sample_python_dtschema.py new file mode 100644 index 00000000..786c3d5a --- /dev/null +++ b/support/testing/tests/package/sample_python_dtschema.py @@ -0,0 +1 @@ +import dtschema diff --git a/support/testing/tests/package/sample_python_evdev.py b/support/testing/tests/package/sample_python_evdev.py new file mode 100644 index 00000000..0c00fa6e --- /dev/null +++ b/support/testing/tests/package/sample_python_evdev.py @@ -0,0 +1,11 @@ +import evdev + +devices = [evdev.InputDevice(path) for path in evdev.list_devices()] +e = evdev.events.InputEvent(1036996631, 984417, evdev.ecodes.EV_KEY, evdev.ecodes.KEY_A, 2) +k = evdev.events.KeyEvent(e) + +assert(k.keystate == evdev.events.KeyEvent.key_hold) +assert(k.event == e) +assert(k.scancode == evdev.ecodes.KEY_A) +assert(k.keycode == 'KEY_A') +assert(len(devices) > 0) diff --git a/support/testing/tests/package/sample_python_fastapi.py b/support/testing/tests/package/sample_python_fastapi.py new file mode 100644 index 00000000..ee60be1f --- /dev/null +++ b/support/testing/tests/package/sample_python_fastapi.py @@ -0,0 +1,8 @@ +from fastapi import FastAPI + +app = FastAPI() + + +@app.get("/") +async def root(): + return {"message": "Hello World"} diff --git a/support/testing/tests/package/sample_python_flask.py b/support/testing/tests/package/sample_python_flask.py new file mode 100644 index 00000000..a7941a94 --- /dev/null +++ b/support/testing/tests/package/sample_python_flask.py @@ -0,0 +1,7 @@ +from flask import Flask +app = Flask(__name__) + + +@app.route('/') +def hello_world(): + return 'Hello, World!' diff --git a/support/testing/tests/package/sample_python_flask_expects_json.py b/support/testing/tests/package/sample_python_flask_expects_json.py new file mode 100644 index 00000000..d45026dd --- /dev/null +++ b/support/testing/tests/package/sample_python_flask_expects_json.py @@ -0,0 +1,18 @@ +from flask import Flask +from flask_expects_json import expects_json +app = Flask(__name__) + +schema = { + 'type': 'object', + 'properties': { + 'name': {'type': 'string'}, + 'email': {'type': 'string'}, + }, + 'required': ['name', 'email'] +} + + +@app.route('/', methods=['POST']) +@expects_json(schema) +def hello_world(): + return 'Hello, World!' diff --git a/support/testing/tests/package/sample_python_git.py b/support/testing/tests/package/sample_python_git.py new file mode 100644 index 00000000..fa9ff230 --- /dev/null +++ b/support/testing/tests/package/sample_python_git.py @@ -0,0 +1 @@ +from git import * # noqa diff --git a/support/testing/tests/package/sample_python_gitdb2.py b/support/testing/tests/package/sample_python_gitdb2.py new file mode 100644 index 00000000..4a82fdf5 --- /dev/null +++ b/support/testing/tests/package/sample_python_gitdb2.py @@ -0,0 +1 @@ +from gitdb import * # noqa diff --git a/support/testing/tests/package/sample_python_gnupg.py b/support/testing/tests/package/sample_python_gnupg.py new file mode 100644 index 00000000..b5b718a8 --- /dev/null +++ b/support/testing/tests/package/sample_python_gnupg.py @@ -0,0 +1,24 @@ +import gnupg + +gpg = gnupg.GPG(verbose=True) + +plain_data = "Some plain text data" +good_passphrase = "Good Passphrase" + +# Test Encrypt +result = gpg.encrypt(plain_data, None, passphrase=good_passphrase, symmetric=True) +assert(result.returncode == 0) +enc_data = str(result) +assert(enc_data != plain_data) + +# Test Good Decrypt +result = gpg.decrypt(enc_data, passphrase=good_passphrase) +assert(result.returncode == 0) +dec_data = str(result) +assert(dec_data == plain_data) + +# Test Bad Decrypt +result = gpg.decrypt(enc_data, passphrase='A Wrong Passphrase') +assert(result.returncode != 0) +dec_data = str(result) +assert(dec_data != plain_data) diff --git a/support/testing/tests/package/sample_python_gobject.py b/support/testing/tests/package/sample_python_gobject.py new file mode 100644 index 00000000..4490a736 --- /dev/null +++ b/support/testing/tests/package/sample_python_gobject.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python3 +"""A simple test that uses python-gobject to find the path of sh.""" +from gi.repository import GLib + + +def main(): + sh_path = GLib.find_program_in_path('sh') + if sh_path == "/bin/sh": + return True + return False + + +if __name__ == '__main__': + main() diff --git a/support/testing/tests/package/sample_python_gpiozero.py b/support/testing/tests/package/sample_python_gpiozero.py new file mode 100644 index 00000000..b95df07f --- /dev/null +++ b/support/testing/tests/package/sample_python_gpiozero.py @@ -0,0 +1,5 @@ +from gpiozero import pi_info + +piBoardInfo = pi_info('a020d3') # 3B+ + +assert(piBoardInfo.model == '3B+') diff --git a/support/testing/tests/package/sample_python_hid.py b/support/testing/tests/package/sample_python_hid.py new file mode 100644 index 00000000..a581d7b7 --- /dev/null +++ b/support/testing/tests/package/sample_python_hid.py @@ -0,0 +1,3 @@ +import hid + +hid.enumerate() diff --git a/support/testing/tests/package/sample_python_hkdf.py b/support/testing/tests/package/sample_python_hkdf.py new file mode 100644 index 00000000..a730c633 --- /dev/null +++ b/support/testing/tests/package/sample_python_hkdf.py @@ -0,0 +1,22 @@ +import hashlib +from binascii import hexlify, unhexlify + +from hkdf import Hkdf, hkdf_expand, hkdf_extract + +salt = b"ThisIsTheSalt." +key_in = b"ThisIsTheSecretKey" +key_info = b"KeyInfo1" +key_len = 16 +expected_key = unhexlify(b"b49d6cc9065b72f3a0859377d8bb7299") + +prk = hkdf_extract(salt, input_key_material=key_in, hash=hashlib.sha512) +key1 = hkdf_expand(prk, info=key_info, length=key_len) + +print("key1:", hexlify(key1)) +assert key1 == expected_key + +kdf = Hkdf(salt, input_key_material=key_in, hash=hashlib.sha512) +key2 = kdf.expand(info=key_info, length=key_len) + +print("key2:", hexlify(key2)) +assert key2 == expected_key diff --git a/support/testing/tests/package/sample_python_hwdata.py b/support/testing/tests/package/sample_python_hwdata.py new file mode 100644 index 00000000..a13c08b3 --- /dev/null +++ b/support/testing/tests/package/sample_python_hwdata.py @@ -0,0 +1,40 @@ +#! /usr/bin/env python3 + +from hwdata import PCI, PNP, USB + +# Test PCI IDs +pci_vendor_id = '1af4' +pci_device_id = '1003' + +pci = PCI() + +pci_vendor = pci.get_vendor(pci_vendor_id) +print("PCI Vendor: %s" % pci_vendor) +assert (pci_vendor == "Red Hat, Inc.") + +pci_device = pci.get_device(pci_vendor_id, pci_device_id) +print("PCI Device: %s" % pci_device) +assert (pci_device == "Virtio console") + +# Test USB IDs +usb_vendor_id = '1d6b' +usb_device_id = '0001' + +usb = USB() + +usb_vendor = usb.get_vendor(usb_vendor_id) +print("USB Vendor: %s" % usb_vendor) +assert (usb_vendor == "Linux Foundation") + +usb_device = usb.get_device(usb_vendor_id, usb_device_id) +print("USB Device: %s" % usb_device) +assert (usb_device == "1.1 root hub") + +# Test PNP IDs +pnp_id = 'RHT' + +pnp = PNP() + +pnp_vendor = pnp.get_vendor(pnp_id) +print("PNP Vendor: %s" % pnp_vendor) +assert (pnp_vendor == "Red Hat, Inc.") diff --git a/support/testing/tests/package/sample_python_incremental.py b/support/testing/tests/package/sample_python_incremental.py new file mode 100644 index 00000000..efab8b20 --- /dev/null +++ b/support/testing/tests/package/sample_python_incremental.py @@ -0,0 +1,3 @@ +import incremental +v = incremental.Version("package", 1, 2, 3, release_candidate=4) +assert(str(v) == "[package, version 1.2.3.rc4]") diff --git a/support/testing/tests/package/sample_python_iptables.py b/support/testing/tests/package/sample_python_iptables.py new file mode 100644 index 00000000..a3091cab --- /dev/null +++ b/support/testing/tests/package/sample_python_iptables.py @@ -0,0 +1 @@ +import iptc diff --git a/support/testing/tests/package/sample_python_jmespath.py b/support/testing/tests/package/sample_python_jmespath.py new file mode 100644 index 00000000..aefccd4f --- /dev/null +++ b/support/testing/tests/package/sample_python_jmespath.py @@ -0,0 +1,4 @@ +import jmespath +expression = jmespath.compile('foo.bar') +res = expression.search({'foo': {'bar': 'baz'}}) +assert res == "baz", "expression.search failed" diff --git a/support/testing/tests/package/sample_python_mako.py b/support/testing/tests/package/sample_python_mako.py new file mode 100644 index 00000000..833ead87 --- /dev/null +++ b/support/testing/tests/package/sample_python_mako.py @@ -0,0 +1 @@ +from mako import runtime # noqa diff --git a/support/testing/tests/package/sample_python_mako_ext.py b/support/testing/tests/package/sample_python_mako_ext.py new file mode 100644 index 00000000..855d64eb --- /dev/null +++ b/support/testing/tests/package/sample_python_mako_ext.py @@ -0,0 +1,3 @@ +from mako import runtime # noqa +import mako.ext.pygmentplugin # noqa +import mako.ext.babelplugin # noqa diff --git a/support/testing/tests/package/sample_python_midiutil.py b/support/testing/tests/package/sample_python_midiutil.py new file mode 100644 index 00000000..58bf1fbc --- /dev/null +++ b/support/testing/tests/package/sample_python_midiutil.py @@ -0,0 +1,23 @@ +#! /usr/bin/env python3 + +# Taken from: +# https://github.com/MarkCWirt/MIDIUtil/blob/1.2.1/examples/c-major-scale.py + +from midiutil import MIDIFile + +degrees = [60, 62, 64, 65, 67, 69, 71, 72] # MIDI note number +track = 0 +channel = 0 +time = 0 # In beats +duration = 1 # In beats +tempo = 60 # In BPM +volume = 100 # 0-127, as per the MIDI standard + +MyMIDI = MIDIFile(1) # One track +MyMIDI.addTempo(track, time, tempo) + +for i, pitch in enumerate(degrees): + MyMIDI.addNote(track, channel, pitch, time + i, duration, volume) + +with open("major-scale.mid", "wb") as output_file: + MyMIDI.writeFile(output_file) diff --git a/support/testing/tests/package/sample_python_minimalmodbus.py b/support/testing/tests/package/sample_python_minimalmodbus.py new file mode 100644 index 00000000..dc5db8d9 --- /dev/null +++ b/support/testing/tests/package/sample_python_minimalmodbus.py @@ -0,0 +1,11 @@ +import minimalmodbus +from serial.serialutil import SerialException + +# We can't test proper behaviour in emulation, because there is +# actually no emulated modbus hardware, so we rely on the module +# to fail in an expected way to consider it is working correctly. +# Failure (of the script) is success (of the test)! +try: + instrument = minimalmodbus.Instrument('/dev/ttyUSB99', 1) +except SerialException: + pass diff --git a/support/testing/tests/package/sample_python_ml_dtypes.py b/support/testing/tests/package/sample_python_ml_dtypes.py new file mode 100644 index 00000000..156d54a8 --- /dev/null +++ b/support/testing/tests/package/sample_python_ml_dtypes.py @@ -0,0 +1,39 @@ +#! /usr/bin/env python3 + +# Tests inspired from commands published on project page: +# https://pypi.org/project/ml-dtypes/ + +from ml_dtypes import bfloat16 + +import numpy as np + +a = np.zeros(4, dtype=bfloat16) +assert a.dtype.name == 'bfloat16' +assert a[0] == 0.0 + +types = [ + 'bfloat16', + 'float8_e4m3b11fnuz', + 'float8_e4m3fn', + 'float8_e4m3fnuz', + 'float8_e5m2', + 'int4', + 'uint4' +] +for t in types: + dtype = np.dtype(t) + assert dtype.name == t + +rng = np.random.default_rng(seed=0) +vals = rng.uniform(size=10000).astype(bfloat16) +sum_vals = vals.sum() +assert sum_vals == 256 + +b = bfloat16(256) + bfloat16(1) +assert b == 256 + +c = np.nextafter(bfloat16(256), bfloat16(np.inf)) +assert c == 258 + +d = vals.sum(dtype='float32').astype(bfloat16) +assert d > 4500 and d < 5500 diff --git a/support/testing/tests/package/sample_python_mpmath.py b/support/testing/tests/package/sample_python_mpmath.py new file mode 100644 index 00000000..5e3d9ad1 --- /dev/null +++ b/support/testing/tests/package/sample_python_mpmath.py @@ -0,0 +1,16 @@ +#! /usr/bin/env python3 + +# Test inspired from example published on the project page: +# https://mpmath.org/ + +from mpmath import mp + +mp.dps = 50 + +result = mp.quad(lambda x: mp.exp(-x**2), [-mp.inf, mp.inf]) ** 2 + +# Pi digits can be cross-checked here: +# https://www.angio.net/pi/digits.html +expected_result = "3.1415926535897932384626433832795028841971693993751" + +assert str(result) == expected_result diff --git a/support/testing/tests/package/sample_python_msgpack.py b/support/testing/tests/package/sample_python_msgpack.py new file mode 100644 index 00000000..1940f708 --- /dev/null +++ b/support/testing/tests/package/sample_python_msgpack.py @@ -0,0 +1,5 @@ +import msgpack + +packaed = msgpack.packb([1, 2, 3], use_bin_type=True) + +assert msgpack.unpackb(packaed, raw=False) == [1, 2, 3] diff --git a/support/testing/tests/package/sample_python_munch.py b/support/testing/tests/package/sample_python_munch.py new file mode 100644 index 00000000..b45bec7b --- /dev/null +++ b/support/testing/tests/package/sample_python_munch.py @@ -0,0 +1,20 @@ +from munch import Munch + +b = Munch() +b.hello = 'world' +assert b.hello == 'world' +b['hello'] += "!" +assert b.hello == 'world!' +b.foo = Munch(lol=True) +assert b.foo.lol is True +assert b.foo is b['foo'] + +assert sorted(b.keys()) == ['foo', 'hello'] + +b.update({'ponies': 'are pretty!'}, hello=42) +assert b == Munch({'ponies': 'are pretty!', 'foo': Munch({'lol': True}), 'hello': 42}) + +assert sorted([(k, b[k]) for k in b]) == [('foo', Munch({'lol': True})), ('hello', 42), ('ponies', 'are pretty!')] + +format_munch = Munch(knights='lolcats', ni='can haz') +assert "The {knights} who say {ni}!".format(**format_munch) == 'The lolcats who say can haz!' diff --git a/support/testing/tests/package/sample_python_paho_mqtt.py b/support/testing/tests/package/sample_python_paho_mqtt.py new file mode 100644 index 00000000..769ad625 --- /dev/null +++ b/support/testing/tests/package/sample_python_paho_mqtt.py @@ -0,0 +1,12 @@ +from paho.mqtt import publish, subscribe + +publish.single( + 'buildroot/test', + payload="Hello, World!", + qos=2, + retain=True, + hostname="localhost", + port=1883) + +message = subscribe.simple('buildroot/test') +print(message.payload.decode()) diff --git a/support/testing/tests/package/sample_python_passlib.py b/support/testing/tests/package/sample_python_passlib.py new file mode 100644 index 00000000..3ab348b9 --- /dev/null +++ b/support/testing/tests/package/sample_python_passlib.py @@ -0,0 +1,5 @@ +from passlib.hash import pbkdf2_sha256 + +hash = pbkdf2_sha256.hash("password") +assert(pbkdf2_sha256.verify("passWord", hash) is False) +assert(pbkdf2_sha256.verify("password", hash) is True) diff --git a/support/testing/tests/package/sample_python_pathspec.py b/support/testing/tests/package/sample_python_pathspec.py new file mode 100644 index 00000000..1b5bf62b --- /dev/null +++ b/support/testing/tests/package/sample_python_pathspec.py @@ -0,0 +1,36 @@ +# example from https://pypi.org/project/pathspec/ + +import pathspec + +# The gitignore-style patterns for files to select, but we're including +# instead of ignoring. +spec_text = """ + +# This is a comment because the line begins with a hash: "#" + +# Include several project directories (and all descendants) relative to +# the current directory. To reference a directory you must end with a +# slash: "/" +/project-a/ +/project-b/ +/project-c/ + +# Patterns can be negated by prefixing with exclamation mark: "!" + +# Ignore temporary files beginning or ending with "~" and ending with +# ".swp". +!~* +!*~ +!*.swp + +# These are python projects so ignore compiled python files from +# testing. +!*.pyc + +# Ignore the build directories but only directly under the project +# directories. +!/*/build/ + +""" + +spec = pathspec.PathSpec.from_lines('gitwildmatch', spec_text.splitlines()) diff --git a/support/testing/tests/package/sample_python_pexpect.py b/support/testing/tests/package/sample_python_pexpect.py new file mode 100644 index 00000000..cfe395fc --- /dev/null +++ b/support/testing/tests/package/sample_python_pexpect.py @@ -0,0 +1,8 @@ +import pexpect + +p = pexpect.spawn(["login"]) +p.expect("login:") +p.sendline("wrong") +p.expect("Password:") +p.sendline("wrong") +p.expect("Login incorrect") diff --git a/support/testing/tests/package/sample_python_pyalsa.py b/support/testing/tests/package/sample_python_pyalsa.py new file mode 100644 index 00000000..e22226e8 --- /dev/null +++ b/support/testing/tests/package/sample_python_pyalsa.py @@ -0,0 +1,12 @@ +#! /usr/bin/env python3 + +from pyalsa import alsacard + +print('asoundlibVersion:', alsacard.asoundlib_version()) +print('cardLoad:', alsacard.card_load(0)) +print('cardList:', alsacard.card_list()) +print('deviceNameHint for all cards:') +print(alsacard.device_name_hint(-1, "pcm")) +for card in alsacard.card_list(): + print('deviceNameHint for card #%i:' % card) + print(alsacard.device_name_hint(card, "pcm")) diff --git a/support/testing/tests/package/sample_python_pybind.py b/support/testing/tests/package/sample_python_pybind.py new file mode 100644 index 00000000..9c605caf --- /dev/null +++ b/support/testing/tests/package/sample_python_pybind.py @@ -0,0 +1,4 @@ +#!/usr/bin/env python3 +import example +print(example.add(1, 2)) +print(example.says) diff --git a/support/testing/tests/package/sample_python_pymupdf.py b/support/testing/tests/package/sample_python_pymupdf.py new file mode 100644 index 00000000..ffcbfa11 --- /dev/null +++ b/support/testing/tests/package/sample_python_pymupdf.py @@ -0,0 +1,17 @@ +import fitz_old as fitz + +# Write a test PDF file +outfile = "python-pymupdf.pdf" +sample_text = "This is a test page for python-pymupdf." +doc = fitz.open() +page = doc.new_page() +p = fitz.Point(50, 72) +page.insert_text(p, sample_text) +doc.save(outfile) + +# Read back the file +with fitz.open(outfile) as d: # open document + read_text = chr(12).join([page.get_text() for page in d]) + +print(read_text) +assert(read_text == sample_text + "\n") diff --git a/support/testing/tests/package/sample_python_pynacl.py b/support/testing/tests/package/sample_python_pynacl.py new file mode 100644 index 00000000..d17c50eb --- /dev/null +++ b/support/testing/tests/package/sample_python_pynacl.py @@ -0,0 +1,3 @@ +import nacl.utils + +nonce = nacl.utils.random(16) diff --git a/support/testing/tests/package/sample_python_pysmb.py b/support/testing/tests/package/sample_python_pysmb.py new file mode 100644 index 00000000..6b37530a --- /dev/null +++ b/support/testing/tests/package/sample_python_pysmb.py @@ -0,0 +1,2 @@ +from nmb.NetBIOS import NetBIOS # noqa +from smb.SMBHandler import SMBHandler # noqa diff --git a/support/testing/tests/package/sample_python_pytest.py b/support/testing/tests/package/sample_python_pytest.py new file mode 100644 index 00000000..870cc851 --- /dev/null +++ b/support/testing/tests/package/sample_python_pytest.py @@ -0,0 +1,25 @@ +import pytest + + +x = 1 + + +@pytest.fixture() +def f1(): + global x + x = 2 + yield 15 + x = 3 + + +def test_1(): + assert x == 1 + + +def test_2(f1): + assert x == 2 + assert f1 == 15 + + +def test_3(): + assert x == 3 diff --git a/support/testing/tests/package/sample_python_pytest_asyncio.py b/support/testing/tests/package/sample_python_pytest_asyncio.py new file mode 100644 index 00000000..cdb8cd9f --- /dev/null +++ b/support/testing/tests/package/sample_python_pytest_asyncio.py @@ -0,0 +1,31 @@ +import asyncio +import pytest + + +x = 1 + + +@pytest.fixture() +def f1(): + global x + x = 2 + yield 15 + x = 3 + + +@pytest.mark.asyncio +async def test_1(): + assert x == 1 + + +@pytest.mark.asyncio +async def test_2(f1): + assert x == 2 + assert f1 == 15 + + +@pytest.mark.asyncio +async def test_3(): + assert x == 3 + await asyncio.sleep(0.1) + assert x == 3 diff --git a/support/testing/tests/package/sample_python_pyyaml_dec.py b/support/testing/tests/package/sample_python_pyyaml_dec.py new file mode 100644 index 00000000..bb90934f --- /dev/null +++ b/support/testing/tests/package/sample_python_pyyaml_dec.py @@ -0,0 +1,10 @@ +import yaml + +with open("/tmp/data.yml", "rb") as f: + serialized = f.read() +data = yaml.safe_load(serialized) +print(data) +assert(data["name"] == "python-pyyaml") +assert(data["versions"] == ["1", "2"]) +assert(data["group"]["is_a_package"] is True) +assert(data["group"]["value"] == 42) diff --git a/support/testing/tests/package/sample_python_pyyaml_enc.py b/support/testing/tests/package/sample_python_pyyaml_enc.py new file mode 100644 index 00000000..30759949 --- /dev/null +++ b/support/testing/tests/package/sample_python_pyyaml_enc.py @@ -0,0 +1,14 @@ +import yaml + +data = { + "name": "python-pyyaml", + "versions": ["1", "2"], + "group": { + "is_a_package": True, + "value": 42 + } +} +serialized = yaml.dump(data, default_flow_style=False) +print(serialized) +with open("/tmp/data.yml", "w") as f: + f.write(serialized) diff --git a/support/testing/tests/package/sample_python_qrcode.py b/support/testing/tests/package/sample_python_qrcode.py new file mode 100644 index 00000000..3dcca329 --- /dev/null +++ b/support/testing/tests/package/sample_python_qrcode.py @@ -0,0 +1,3 @@ +import qrcode +import qrcode.image.svg +img = qrcode.make('Some data here', image_factory=qrcode.image.svg.SvgImage) diff --git a/support/testing/tests/package/sample_python_rpi_gpio.py b/support/testing/tests/package/sample_python_rpi_gpio.py new file mode 100644 index 00000000..5f0d884e --- /dev/null +++ b/support/testing/tests/package/sample_python_rpi_gpio.py @@ -0,0 +1,6 @@ +try: + import RPi.GPIO # noqa +except RuntimeError as e: + assert(str(e) == 'This module can only be run on a Raspberry Pi!') +else: + raise RuntimeError('Import succeeded when it should not have!') diff --git a/support/testing/tests/package/sample_python_rsa.py b/support/testing/tests/package/sample_python_rsa.py new file mode 100644 index 00000000..6f246f4d --- /dev/null +++ b/support/testing/tests/package/sample_python_rsa.py @@ -0,0 +1,2 @@ +import rsa +(pubkey, privkey) = rsa.newkeys(512) diff --git a/support/testing/tests/package/sample_python_rtoml.py b/support/testing/tests/package/sample_python_rtoml.py new file mode 100644 index 00000000..ba1ce163 --- /dev/null +++ b/support/testing/tests/package/sample_python_rtoml.py @@ -0,0 +1,48 @@ +from datetime import datetime, timezone, timedelta +import rtoml + +obj = { + 'title': 'TOML Example', + 'owner': { + 'dob': datetime(1979, 5, 27, 7, 32, tzinfo=timezone(timedelta(hours=-8))), + 'name': 'Tom Preston-Werner', + }, + 'database': { + 'connection_max': 5000, + 'enabled': True, + 'ports': [8001, 8001, 8002], + 'server': '192.168.1.1', + }, +} + +loaded_obj = rtoml.load("""\ +# This is a TOML document. + +title = "TOML Example" + +[owner] +name = "Tom Preston-Werner" +dob = 1979-05-27T07:32:00-08:00 # First class dates + +[database] +server = "192.168.1.1" +ports = [8001, 8001, 8002] +connection_max = 5000 +enabled = true +""") + +assert loaded_obj == obj + +assert rtoml.dumps(obj) == """\ +title = "TOML Example" + +[owner] +dob = 1979-05-27T07:32:00-08:00 +name = "Tom Preston-Werner" + +[database] +connection_max = 5000 +enabled = true +server = "192.168.1.1" +ports = [8001, 8001, 8002] +""" diff --git a/support/testing/tests/package/sample_python_ruamel_yaml.py b/support/testing/tests/package/sample_python_ruamel_yaml.py new file mode 100644 index 00000000..55cd6962 --- /dev/null +++ b/support/testing/tests/package/sample_python_ruamel_yaml.py @@ -0,0 +1,39 @@ +from ruamel.yaml import YAML + +yaml_text = """ +Rootkey: + - ListEntry +AnotherRootKey: some-string + +ListRoot: + - float-value: '1.0' + int-value: 10234 + NestedList: + - 1 + - 2 + + - another-float: '1.1' + another-int: 1111 + +OneMoreRootKey: 9.99 +""" + +# Tests the pure python based implementation +yaml = YAML(typ='safe', pure=True) + +parsed = yaml.load(yaml_text) + +assert parsed['OneMoreRootKey'] == 9.99 +assert parsed['ListRoot'][1]['another-int'] == 1111 + +# Tests the C extension based loader +# ruamel.yaml automatically falls back to the pure python version, so we need +# to explicitly check if importing the CLoader works here. +# Import this here, so it's clearer what part of the test is failing. +from ruamel.yaml import CLoader # noqa: E402 +assert CLoader is not None +yaml = YAML(typ='safe') +parsed_from_c = yaml.load(yaml_text) + +assert parsed_from_c['OneMoreRootKey'] == 9.99 +assert parsed_from_c['ListRoot'][1]['another-int'] == 1111 diff --git a/support/testing/tests/package/sample_python_s3transfer.py b/support/testing/tests/package/sample_python_s3transfer.py new file mode 100644 index 00000000..ff53077c --- /dev/null +++ b/support/testing/tests/package/sample_python_s3transfer.py @@ -0,0 +1 @@ +import s3transfer diff --git a/support/testing/tests/package/sample_python_scipy.py b/support/testing/tests/package/sample_python_scipy.py new file mode 100644 index 00000000..d36f2273 --- /dev/null +++ b/support/testing/tests/package/sample_python_scipy.py @@ -0,0 +1,16 @@ +import numpy +import scipy.io +import scipy.special +import scipy.integrate + +cb = scipy.special.cbrt([27, 64]) +assert((cb == numpy.array([3., 4.])).all()) + +com = scipy.special.comb(5, 2, exact = False, repetition=True) +assert(com == 15.0) + +t = scipy.integrate.trapezoid([5,8,10]) +assert(t == 15.5) + +mdic = {"t": t, "label": "example"} +scipy.io.savemat("example.mat", mdic) diff --git a/support/testing/tests/package/sample_python_segno.py b/support/testing/tests/package/sample_python_segno.py new file mode 100644 index 00000000..c96d6087 --- /dev/null +++ b/support/testing/tests/package/sample_python_segno.py @@ -0,0 +1,13 @@ +import segno +import os +import tempfile + +qr = segno.make_qr('http:/www.example.org/') +with tempfile.NamedTemporaryFile('wb', suffix='.png', delete=False) as f: + fn = f.name +qr.save(fn) +expected = b'\211PNG\r\n\032\n' # PNG magic number +with open(fn, mode='rb') as f: + val = f.read(len(expected)) +os.unlink(fn) +assert expected == val diff --git a/support/testing/tests/package/sample_python_service_identity.py b/support/testing/tests/package/sample_python_service_identity.py new file mode 100644 index 00000000..3184b6c5 --- /dev/null +++ b/support/testing/tests/package/sample_python_service_identity.py @@ -0,0 +1,2 @@ +from service_identity import VerificationError # noqa +from service_identity.pyopenssl import verify_hostname # noqa diff --git a/support/testing/tests/package/sample_python_smmap2.py b/support/testing/tests/package/sample_python_smmap2.py new file mode 100644 index 00000000..494fc26e --- /dev/null +++ b/support/testing/tests/package/sample_python_smmap2.py @@ -0,0 +1,6 @@ +# Taken from smmap/test/test_tutorial.py + +import smmap +mman = smmap.SlidingWindowMapManager() +assert mman.num_file_handles() == 0 +assert mman.mapped_memory_size() == 0 diff --git a/support/testing/tests/package/sample_python_spake2.py b/support/testing/tests/package/sample_python_spake2.py new file mode 100644 index 00000000..49dd914c --- /dev/null +++ b/support/testing/tests/package/sample_python_spake2.py @@ -0,0 +1,22 @@ +from binascii import hexlify + +from spake2 import SPAKE2_A, SPAKE2_B + + +shared_password = b"This Is The Password!" + +alice = SPAKE2_A(shared_password) +alice_msg = alice.start() + +bob = SPAKE2_B(shared_password) +bob_msg = bob.start() + +# Alice and Bob exchange their messages... + +alice_key = alice.finish(bob_msg) +bob_key = bob.finish(alice_msg) + +print("alice_key:", hexlify(alice_key)) +print(" bob_key:", hexlify(bob_key)) + +assert alice_key == bob_key diff --git a/support/testing/tests/package/sample_python_sympy.py b/support/testing/tests/package/sample_python_sympy.py new file mode 100644 index 00000000..2734e9b4 --- /dev/null +++ b/support/testing/tests/package/sample_python_sympy.py @@ -0,0 +1,15 @@ +#! /usr/bin/env python3 + +from sympy import symbols, expand, factor + +x, y = symbols('x y') + +expr = x + 2*y + +expanded_expr = expand(x*expr) +print(expanded_expr) +assert str(expanded_expr) == "x**2 + 2*x*y" + +factored_expr = factor(expanded_expr) +print(factored_expr) +assert str(factored_expr) == "x*(x + 2*y)" diff --git a/support/testing/tests/package/sample_python_tftpy.py b/support/testing/tests/package/sample_python_tftpy.py new file mode 100644 index 00000000..ea4d20c9 --- /dev/null +++ b/support/testing/tests/package/sample_python_tftpy.py @@ -0,0 +1 @@ +import tftpy diff --git a/support/testing/tests/package/sample_python_treq.py b/support/testing/tests/package/sample_python_treq.py new file mode 100644 index 00000000..974fdcd8 --- /dev/null +++ b/support/testing/tests/package/sample_python_treq.py @@ -0,0 +1,16 @@ +from twisted.internet import reactor +import treq + + +def done(response): + print(response.code) + reactor.stop() + + +def err(fail): + print(fail.value) + reactor.stop() + + +treq.get("https://localhost").addCallback(done).addErrback(err) +reactor.run() diff --git a/support/testing/tests/package/sample_python_twisted.py b/support/testing/tests/package/sample_python_twisted.py new file mode 100644 index 00000000..47d6c5de --- /dev/null +++ b/support/testing/tests/package/sample_python_twisted.py @@ -0,0 +1,9 @@ +from twisted.internet import protocol, reactor, endpoints + + +class F(protocol.Factory): + pass + + +endpoints.serverFromString(reactor, "tcp:1234").listen(F()) +reactor.run() diff --git a/support/testing/tests/package/sample_python_txaio_asyncio.py b/support/testing/tests/package/sample_python_txaio_asyncio.py new file mode 100644 index 00000000..77f11ed8 --- /dev/null +++ b/support/testing/tests/package/sample_python_txaio_asyncio.py @@ -0,0 +1,3 @@ +import txaio +txaio.use_asyncio() +f0 = txaio.create_future() diff --git a/support/testing/tests/package/sample_python_txaio_twisted.py b/support/testing/tests/package/sample_python_txaio_twisted.py new file mode 100644 index 00000000..13ea82a9 --- /dev/null +++ b/support/testing/tests/package/sample_python_txaio_twisted.py @@ -0,0 +1,3 @@ +import txaio +txaio.use_twisted() +f0 = txaio.create_future() diff --git a/support/testing/tests/package/sample_python_txtorcon.py b/support/testing/tests/package/sample_python_txtorcon.py new file mode 100644 index 00000000..c4a2ae6f --- /dev/null +++ b/support/testing/tests/package/sample_python_txtorcon.py @@ -0,0 +1 @@ +import txtorcon # noqa diff --git a/support/testing/tests/package/sample_python_ubjson_dec.py b/support/testing/tests/package/sample_python_ubjson_dec.py new file mode 100644 index 00000000..12ccdfd5 --- /dev/null +++ b/support/testing/tests/package/sample_python_ubjson_dec.py @@ -0,0 +1,10 @@ +import ubjson + +with open("/tmp/data.json", "rb") as f: + serialized = f.read() +data = ubjson.loadb(serialized) +print(data) +assert(data["name"] == "python-ubjson") +assert(data["versions"] == ["1", "2"]) +assert(data["group"]["is_a_package"] is True) +assert(data["group"]["value"] == 42) diff --git a/support/testing/tests/package/sample_python_ubjson_enc.py b/support/testing/tests/package/sample_python_ubjson_enc.py new file mode 100644 index 00000000..9a2140ef --- /dev/null +++ b/support/testing/tests/package/sample_python_ubjson_enc.py @@ -0,0 +1,14 @@ +import ubjson + +data = { + "name": "python-ubjson", + "versions": ["1", "2"], + "group": { + "is_a_package": True, + "value": 42 + } +} +serialized = ubjson.dumpb(data) +print(serialized) +with open("/tmp/data.json", "wb") as f: + f.write(serialized) diff --git a/support/testing/tests/package/sample_python_unittest_xml_reporting.py b/support/testing/tests/package/sample_python_unittest_xml_reporting.py new file mode 100644 index 00000000..cfef4df2 --- /dev/null +++ b/support/testing/tests/package/sample_python_unittest_xml_reporting.py @@ -0,0 +1,11 @@ +import unittest +import xmlrunner + + +class Test1(unittest.TestCase): + def test_something(self): + self.assertTrue(True) + + +if __name__ == '__main__': + unittest.main(testRunner=xmlrunner.XMLTestRunner(output='test-reports')) diff --git a/support/testing/tests/package/sample_python_uvloop.py b/support/testing/tests/package/sample_python_uvloop.py new file mode 100644 index 00000000..dc85d3e0 --- /dev/null +++ b/support/testing/tests/package/sample_python_uvloop.py @@ -0,0 +1,6 @@ +import uvloop + +async def main(): + print("Hello world!") + +uvloop.run(main()) diff --git a/support/testing/tests/package/sample_python_yamllint.py b/support/testing/tests/package/sample_python_yamllint.py new file mode 100644 index 00000000..369a3b8d --- /dev/null +++ b/support/testing/tests/package/sample_python_yamllint.py @@ -0,0 +1,13 @@ +# example form https://yamllint.readthedocs.io/en/stable/development.html + +from yamllint import (config, linter) + +data = '''--- +- &anchor + foo: bar +- *anchor +''' + +yaml_config = config.YamlLintConfig("extends: default") +for p in linter.run(data, yaml_config): + print(p.desc, p.line, p.rule) diff --git a/support/testing/tests/package/test_4th.py b/support/testing/tests/package/test_4th.py new file mode 100644 index 00000000..c020c825 --- /dev/null +++ b/support/testing/tests/package/test_4th.py @@ -0,0 +1,55 @@ +import os +from math import sqrt + +import infra.basetest + + +class Test4th(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_4TH=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # We set the DIR4TH variable where 4th demos and libraries are + # installed. + self.assertRunOk("export DIR4TH=/usr/share/4th/") + + # We run a simple "hello world" demo. + out, ret = self.emulator.run("4th cxq demo/hello.4th") + self.assertEqual(ret, 0) + self.assertEqual(out[0], "Hello world!") + + # We run a demo doing some square root maths. + out, ret = self.emulator.run("4th cxq demo/squares.4th") + self.assertEqual(ret, 0) + self.assertTrue(len(out) > 1) + for line in out[1:]: + columns = line.split() + value = float(columns[0]) + value_sqrt = float(columns[1]) + result_check = sqrt(value) + self.assertAlmostEqual(value_sqrt, result_check, delta=0.1) + + # We run a word count demo and the 4th source file. We save + # the word count for a later check. + out, ret = self.emulator.run("4th cxq wc.4th /usr/share/4th/wc.4th") + self.assertEqual(ret, 0) + wc_out = out[0].split() + + # We run the same command using system "wc" command. We expect + # the same numbers. + out, ret = self.emulator.run("wc /usr/share/4th/wc.4th") + self.assertEqual(ret, 0) + self.assertEqual(out[0].split(), wc_out) + + # We run a slightly more complex computation example. + self.assertRunOk("4th cxq fractals.4th") diff --git a/support/testing/tests/package/test_acl.py b/support/testing/tests/package/test_acl.py new file mode 100644 index 00000000..e4827c7b --- /dev/null +++ b/support/testing/tests/package/test_acl.py @@ -0,0 +1,87 @@ +import os + +import infra.basetest + + +class TestAcl(infra.basetest.BRTest): + # Note: this test requires a Kernel with a filesystem on /tmp + # supporting ACLs. This is the case for the basetest reference + # config. Kernel has CONFIG_TMPFS_POSIX_ACL=y, and /tmp is tmpfs + # in the default Buildroot config. + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_ACL=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Check the programs can execute. + self.assertRunOk("getfacl --version") + self.assertRunOk("setfacl --version") + + # Constants used in this test. + test_user = "acltest" + test_data = "Hello Buildroot!" + test_file = "/tmp/file.txt" + + # Create a test user: + # -D don't set a password + # -h set home directory + # -H don't create home directory + # -s set shell to /bin/sh + self.assertRunOk(f"adduser -D -h /tmp -H -s /bin/sh {test_user}") + + # Create a test file, and make sure the owner is "root" with + # standard Unix permissions to read/write only for the owner. + self.assertRunOk(f"echo '{test_data}' > {test_file}") + self.assertRunOk(f"chown root:root {test_file}") + self.assertRunOk(f"chmod 0600 {test_file}") + + # Check we have no ACL for the test user. + getacl_cmd = f"getfacl -c -p {test_file}" + out, ret = self.emulator.run(getacl_cmd) + self.assertEqual(ret, 0) + self.assertNotIn(f"user:{test_user}:", "\n".join(out)) + + # Reading the file as the test user is expected to fail. + test_read_cmd = f"su - {test_user} -c 'cat {test_file}'" + _, ret = self.emulator.run(test_read_cmd) + self.assertNotEqual(ret, 0) + + # We add a special read ACL for the test user. + cmd = f"setfacl -m u:{test_user}:r {test_file}" + self.assertRunOk(cmd) + + # Check we now have an ACL entry for the test user. + out, ret = self.emulator.run(getacl_cmd) + self.assertEqual(ret, 0) + self.assertIn(f"user:{test_user}:", "\n".join(out)) + + # Reading the file as the test user is now expected to + # succeed. + out, ret = self.emulator.run(test_read_cmd) + self.assertEqual(ret, 0) + self.assertEqual(out[0], test_data) + + # Attempting to write to the file as the test user is expected + # to fail (since we put an ACL only for reading). + cmd = f"su - {test_user} -c 'echo WriteTest > {test_file}'" + _, ret = self.emulator.run(cmd) + self.assertNotEqual(ret, 0) + + # Remove all ACLs. This could have been done with the command + # "setfacl -b". Instead, we use the "chacl -B" command which + # is doing the same. The reason is to slightly improve the + # coverage of this test, by including an execution of "chacl". + self.assertRunOk(f"chacl -B {test_file}") + + # Reading the file as the test user is expected to fail again. + _, ret = self.emulator.run(test_read_cmd) + self.assertNotEqual(ret, 0) diff --git a/support/testing/tests/package/test_acpica.py b/support/testing/tests/package/test_acpica.py new file mode 100644 index 00000000..f7dd64d7 --- /dev/null +++ b/support/testing/tests/package/test_acpica.py @@ -0,0 +1,91 @@ +import os + +import infra.basetest + + +class TestAcpica(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_ACPICA=y + BR2_ROOTFS_OVERLAY="{}" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """.format( + # overlay to add an ASL source file + infra.filepath("tests/package/test_acpica/rootfs-overlay")) + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Check a program can execute + self.assertRunOk("iasl -v") + + # Check "acpiexamples" demo is running + self.assertRunOk("acpiexamples") + + # Check "acpihelp" convert error code 0x1 to AE_ERROR + self.assertRunOk("acpihelp -e 1 | grep -F AE_ERROR") + + # Check "acpihelp" convert 0xA3 opcode to NoOpOp + self.assertRunOk("acpihelp -o 0xA3 | grep -F NoOpOp") + + # Compile a simple ASL file + # The output file is automatically set to "dsdt.aml" + self.assertRunOk("iasl dsdt.asl") + + # Evaluate the AML with acpiexec + # STR0 is expected to be "Hello Buildroot!" + cmd = "acpiexec -b 'evaluate STR0' dsdt.aml" + cmd += " | grep -F '\"Hello Buildroot!\"'" + self.assertRunOk(cmd) + + # INT1 is exepcted to be 12345678 + cmd = "acpiexec -b 'evaluate INT1' dsdt.aml" + cmd += " | grep -F 12345678" + self.assertRunOk(cmd) + + # Evalute the TEST method which prints its argument + cmd = "acpiexec -b 'evaluate TST2 \"Hello World\"' dsdt.aml" + cmd += " | grep -F 'Arg0=Hello World'" + self.assertRunOk(cmd) + + # dump aml to text + self.assertRunOk("acpidump -f dsdt.aml -o dsdt.dump") + + # Rebuild dump to binary with acpixtract + # Output is implicitly into the dsdt.dat file + self.assertRunOk("acpixtract -a dsdt.dump") + + # Compare with acpibin + # The rebuilt dsdt.dat is expected to be the same + cmd = "acpibin -a dsdt.aml dsdt.dat" + cmd += " | grep -F 'Files compare exactly'" + self.assertRunOk(cmd) + + # Compare with cmp, to check acpibin + self.assertRunOk("cmp dsdt.aml dsdt.dat") + + # Disassemble the compiled ASL + # Output file is implicitly "dsdt.dsl", we rename it to + # "disa.dsl" to make sure it will not clash with the original + # file, when recompiling. + self.assertRunOk("iasl dsdt.aml && mv -v dsdt.dsl disa.dsl") + + # Disassembled output should contain our string + self.assertRunOk("grep STR0 disa.dsl | grep '\"Hello Buildroot!\"'") + + # Recompile the disassembled file + self.assertRunOk("iasl disa.dsl") + + # Compare the first compiled file with the one recompiled from + # the disassembly. There are expected to be identical. + cmd = "acpibin -a dsdt.aml disa.aml" + cmd += " | grep -F 'Files compare exactly'" + self.assertRunOk(cmd) + + # Also compare with "cmp" + self.assertRunOk("cmp dsdt.aml disa.aml") diff --git a/support/testing/tests/package/test_acpica/rootfs-overlay/root/dsdt.asl b/support/testing/tests/package/test_acpica/rootfs-overlay/root/dsdt.asl new file mode 100644 index 00000000..24f51565 --- /dev/null +++ b/support/testing/tests/package/test_acpica/rootfs-overlay/root/dsdt.asl @@ -0,0 +1,9 @@ +DefinitionBlock ("", "DSDT", 2, "", "", 0x0) +{ + Name (STR0, "Hello Buildroot!") + Name (INT1, 0x12345678) + Method (TST2, 1) + { + printf ("Arg0=%o", Arg0) + } +} diff --git a/support/testing/tests/package/test_apache.py b/support/testing/tests/package/test_apache.py new file mode 100644 index 00000000..f29f4e25 --- /dev/null +++ b/support/testing/tests/package/test_apache.py @@ -0,0 +1,23 @@ +import os + +import infra.basetest + + +class TestApache(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_APACHE=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + self.assertRunOk("httpd -V") + self.assertRunOk("wget http://localhost/index.html") + self.assertRunOk("grep -F 'It works!' index.html") diff --git a/support/testing/tests/package/test_atftp.py b/support/testing/tests/package/test_atftp.py new file mode 100644 index 00000000..95e76c07 --- /dev/null +++ b/support/testing/tests/package/test_atftp.py @@ -0,0 +1,28 @@ +import os + +import infra.basetest + + +class TestAtftp(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_ATFTP=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_TARGET_ROOTFS_CPIO=y + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv7", + kernel="builtin", + options=["-initrd", cpio_file]) + + self.emulator.login() + + self.assertRunOk("mkdir -p /tftpboot") + self.assertRunOk("echo 'Hello World' >/tftpboot/test_atftp.txt") + + # atftpd is launched by /etc/init.d/S80atftpd + self.assertRunOk("atftp -g -r test_atftp.txt -l /tmp/test_atftp.txt localhost") + output, exit_code = self.emulator.run("cat /tmp/test_atftp.txt") + self.assertEqual("".join(output), "Hello World") diff --git a/support/testing/tests/package/test_atop.py b/support/testing/tests/package/test_atop.py new file mode 100644 index 00000000..5a966847 --- /dev/null +++ b/support/testing/tests/package/test_atop.py @@ -0,0 +1,39 @@ +import os + +import infra.basetest + +BASIC_TOOLCHAIN_CONFIG_HEADERS_AT_LEAST_3_14 = \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y + BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y + BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-2019.05.1.tar.bz2" + BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y + BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_14=y + BR2_TOOLCHAIN_EXTERNAL_LOCALE=y + # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set + BR2_TOOLCHAIN_EXTERNAL_CXX=y + """ + + +class TestAtop(infra.basetest.BRTest): + config = BASIC_TOOLCHAIN_CONFIG_HEADERS_AT_LEAST_3_14 + \ + """ + BR2_PACKAGE_ATOP=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + cmd = "atop -V | grep '^Version'" + self.assertRunOk(cmd) + + cmd = "atop -a 1 2 | grep '% *atop *$'" + self.assertRunOk(cmd) diff --git a/support/testing/tests/package/test_attr.py b/support/testing/tests/package/test_attr.py new file mode 100644 index 00000000..1b43f7da --- /dev/null +++ b/support/testing/tests/package/test_attr.py @@ -0,0 +1,75 @@ +import os + + +import infra.basetest + + +class TestAttr(infra.basetest.BRTest): + # Note: this test uses extended attributes (xattr). We use a ext4 + # rootfs (which fully supports xattrs). Note that tmpfs has + # partial support of xattrs, and cpio initrd has not. + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_ATTR=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_4=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + disk_file = os.path.join(self.builddir, "images", "rootfs.ext4") + self.emulator.boot(arch="armv5", + kernel="builtin", + kernel_cmdline=["rootwait", "root=/dev/sda"], + options=["-drive", f"file={disk_file},if=scsi,format=raw"]) + self.emulator.login() + + # Check the programs can execute. + self.assertRunOk("getfattr --version") + self.assertRunOk("setfattr --version") + + test_file = "/root/file.txt" + attr_name = "buildroot" + attr_value = "is-great" + + # Create a test file. + self.assertRunOk(f"echo 'Hello Buildroot!' > {test_file}") + + # Set an extended attribute. + cmd = f"setfattr -n user.{attr_name} -v {attr_value} {test_file}" + self.assertRunOk(cmd) + + # Read back the attribute value. We add an extra "echo" to add + # a new line. getfattr --only-values prints raw attribute + # values and lack of a new line. + cmd = "getfattr" + cmd += f" -n user.{attr_name} --absolute-names --only-values" + cmd += f" {test_file} && echo" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertEqual(out[0], attr_value) + + # We read back the attribute value again, but with the "attr" + # command this time. + cmd = f"attr -q -g {attr_name} {test_file} && echo" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertEqual(out[0], attr_value) + + # List extended attributes with "attr", and check we see our + # test attribute. + cmd = f"attr -l {test_file}" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertIn(attr_name, "\n".join(out)) + + # Remove the test attribute with setfattr. + cmd = f"setfattr -x user.{attr_name} {test_file}" + self.assertRunOk(cmd) + + # We check the test attribute is no longer listed by the attr + # command. + cmd = f"attr -l {test_file}" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertNotIn(attr_name, "\n".join(out)) diff --git a/support/testing/tests/package/test_audio_codec_base.py b/support/testing/tests/package/test_audio_codec_base.py new file mode 100644 index 00000000..59c7efca --- /dev/null +++ b/support/testing/tests/package/test_audio_codec_base.py @@ -0,0 +1,86 @@ +import math +import os + +import infra.basetest + + +class TestAudioCodecBase(infra.basetest.BRTest): + """Common class to test an audio codec package. + + This base class builds a Buildroot system image containing the + package enabled in its config, start the emulator, login to it. It + prepares an input test WAV file containing a tone. This WAV file + is encoded into a new output file in the native encoder format. It + is then decoded to a new output WAV file. This final output WAV + file is checked to contain the expected tone generated in the + initial input WAV file. There is no specific check about file + size, nor audio quality. The acceptance criteria is the + recognition of the tone. Note: the tone generation is made with + the Sox package, and the tone recognition is made with the Aubio + package. + + Each test case that inherits from this class must have: + __test__ = True - to let nose2 know that it is a test case + config - defconfig fragment with the packages to run the test + encode_test() - the function that runs the encoder and produces an + encoded file. + decode_test() - the function that runs the decoder and produces a + decode file. + """ + __test__ = False + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_AUBIO=y + BR2_PACKAGE_SOX=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + input_file = "reference.wav" + decoded_file = "decoded.wav" + tone_freq = 440 # General Midi note A3 + + def login(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + def test_run(self): + self.login() + self.prepare_data() + self.encode_test(self.input_file) + self.decode_test(self.decoded_file) + self.check_test() + + def prepare_data(self): + # Generate a sinusoidal tone. + cmd = "sox -V -r 48000 -n -b 16 -c 1 " + cmd += self.input_file + cmd += f" synth 3 sin {self.tone_freq} vol -10dB" + self.assertRunOk(cmd) + + def encode_test(self, input_filename): + msg = "method must be implemented in derived class" + raise NotImplementedError(msg) + + def decode_test(self, output_filename): + msg = "method must be implemented in derived class" + raise NotImplementedError(msg) + + def note_from_freq(self, freq): + """Return a note number from the input frequency in Hertz.""" + return round((12 * math.log(freq / 440) / math.log(2)) + 69) + + def check_test(self): + expected_note = self.note_from_freq(self.tone_freq) + out, ret = self.emulator.run(f"aubionotes {self.decoded_file}", timeout=20) + self.assertEqual(ret, 0) + note_found = False + for line in out: + values = line.split() + if len(values) == 3: + note = round(float(values[0])) + if note == expected_note: + note_found = True + self.assertTrue(note_found, "The expected note was not found") diff --git a/support/testing/tests/package/test_avocado.py b/support/testing/tests/package/test_avocado.py new file mode 100644 index 00000000..7e83c864 --- /dev/null +++ b/support/testing/tests/package/test_avocado.py @@ -0,0 +1,23 @@ +import os + +import infra.basetest + + +class TestAvocado(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_AVOCADO=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", img]) + self.emulator.login() + cmd = "avocado run /bin/true" + self.assertRunOk(cmd, timeout=30) + cmd = "avocado plugins" + self.assertRunOk(cmd, timeout=30) diff --git a/support/testing/tests/package/test_bash.py b/support/testing/tests/package/test_bash.py new file mode 100644 index 00000000..f0ee8cad --- /dev/null +++ b/support/testing/tests/package/test_bash.py @@ -0,0 +1,47 @@ +import os + +import infra.basetest + + +class TestBash(infra.basetest.BRTest): + config = \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_ENABLE_LOCALE_WHITELIST="" + BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y + BR2_PACKAGE_BASH=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Check that we are indeed not (yet) running bash + out, _ = self.emulator.run('echo "${BASH}"') + self.assertEqual(out[0], "", "Already running bash instead of busybox' sh") + + self.assertRunOk("bash -il") + # Twist! The above command is still runing, it's just that + # bash did display the prompt we expect. Check we are indeed + # actually bash + out, _ = self.emulator.run('echo "${BASH}"') + self.assertEqual(out[0], "/bin/bash", "Not running bash") + # Exit bash, back to busybox' shell + self.emulator.run("exit 0") + + # Check that we are indeed no longer running bash + out, _ = self.emulator.run('echo "${BASH}"') + self.assertEqual(out[0], "", "Still running bash instead of busybox' sh") + + # Try to run with a non-available locale + self.assertRunOk("LC_ALL=en_US bash -il") + out, _ = self.emulator.run('echo "${BASH}"') + self.assertEqual(out[0], "/bin/bash", "Not running bash") + self.emulator.run("exit 0") diff --git a/support/testing/tests/package/test_bats.py b/support/testing/tests/package/test_bats.py new file mode 100644 index 00000000..5136484e --- /dev/null +++ b/support/testing/tests/package/test_bats.py @@ -0,0 +1,33 @@ +import os + +import infra.basetest + + +class TestBats(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_ENABLE_LOCALE_WHITELIST="" + BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y + BR2_PACKAGE_BASH=y + BR2_PACKAGE_BATS_CORE=y + BR2_PACKAGE_BATS_ASSERT=y + BR2_PACKAGE_BATS_FILE=y + BR2_ROOTFS_OVERLAY="{}" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """.format( + # overlay to add a bats test suite + infra.filepath("tests/package/test_bats/rootfs-overlay")) + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + self.assertRunOk("bats --version") + + self.assertRunOk("bats /root/test-bats-core.bats", timeout=5) + self.assertRunOk("bats /root/test-bats-assert.bats", timeout=5) + self.assertRunOk("bats /root/test-bats-file.bats", timeout=5) diff --git a/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-assert.bats b/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-assert.bats new file mode 100755 index 00000000..cd0cb482 --- /dev/null +++ b/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-assert.bats @@ -0,0 +1,11 @@ +#!/usr/bin/env bats + +setup() { + bats_load_library bats-support + bats_load_library bats-assert +} + +@test "bats-assert assert_output" { + run echo "Hello World" + assert_output "Hello World" +} diff --git a/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-core.bats b/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-core.bats new file mode 100755 index 00000000..54ec941e --- /dev/null +++ b/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-core.bats @@ -0,0 +1,11 @@ +#!/usr/bin/env bats + +@test "bats-core true" { + true +} + +@test "bats-core run" { + run echo "Hello World" + [ "$status" -eq 0 ] + [ "$output" = "Hello World" ] +} diff --git a/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-file.bats b/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-file.bats new file mode 100755 index 00000000..0ac2616b --- /dev/null +++ b/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-file.bats @@ -0,0 +1,10 @@ +#!/usr/bin/env bats + +setup() { + bats_load_library bats-support + bats_load_library bats-file +} + +@test "bats-file assert_exists" { + assert_exists /root/test-bats-file.bats +} diff --git a/support/testing/tests/package/test_bc.py b/support/testing/tests/package/test_bc.py new file mode 100644 index 00000000..46e2612b --- /dev/null +++ b/support/testing/tests/package/test_bc.py @@ -0,0 +1,62 @@ +import math +import os + +import infra.basetest + + +class TestBc(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_BC=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Check the program executes. + self.assertRunOk("bc --version") + + # We check a square root function of a number slightly larger + # than 32 bits. + value = 123456 + squared_value = value ** 2 + bc_expr = f"sqrt({squared_value})" + cmd = f"echo '{bc_expr}' | bc" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(int(output[0]), value) + + # Perform an integer exponentiation producing a large number. + base = 3 + exponent = 4567 + expected_value = base ** exponent + bc_expr = f"{base} ^ {exponent}" + cmd = f"echo '{bc_expr}' | BC_LINE_LENGTH=0 bc" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(int(output[0]), expected_value) + + # Test a basic output base conversion of a large number. + hex_str = "DEADBEEF0000ABADC0DE00008BADF00D" + hex_base = 16 + value = int(hex_str, base=hex_base) + bc_expr = f"obase={hex_base} ; {value}" + cmd = f"echo '{bc_expr}' | bc" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], hex_str) + + # Test a floating point computation by estimating Pi. Since we + # use the bc arc-tangent a() function, we need the '-l' + # option. + bc_expr = "4 * a(1)" + cmd = f"echo '{bc_expr}' | bc -l" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertAlmostEqual(float(output[0]), math.pi, places=16) diff --git a/support/testing/tests/package/test_bcc.py b/support/testing/tests/package/test_bcc.py new file mode 100644 index 00000000..51f175a5 --- /dev/null +++ b/support/testing/tests/package/test_bcc.py @@ -0,0 +1,84 @@ +import os +import time + +import infra.basetest + + +class TestBcc(infra.basetest.BRTest): + # This test is using a Kernel >= 5.2, so it will use + # CONFIG_IKHEADERS. Those Kernel headers are unpacked from + # "/sys/kernel/kheaders.tar.xz" with a "tar" invocation. The + # Busybox "tar" command invoked by bcc fails to unpack the Kernel + # tar archive. We need the GNU Tar package. The Kernel also needs + # few extra config options, for running execsnoop. + kern_fragment = \ + infra.filepath("tests/package/test_bcc/linux-bcc.fragment") + config = \ + f""" + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.32" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{kern_fragment}" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y + BR2_PACKAGE_BCC=y + BR2_PACKAGE_TAR=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_4=y + BR2_TARGET_ROOTFS_EXT2_SIZE="256M" + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + drive = os.path.join(self.builddir, "images", "rootfs.ext4") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["root=/dev/vda console=ttyAMA0"], + options=["-M", "virt", "-cpu", "cortex-a57", "-m", "256M", + "-drive", f"file={drive},if=virtio,format=raw"]) + self.emulator.login() + + log = "/root/execsnoop.log" + test_cmd = "/bin/sleep 1" + + # bcc needs debugs to be mounted. + self.assertRunOk("mount -t debugfs none /sys/kernel/debug/") + + # Generate some exec()s activity in background. We explicitly + # call for "/bin/sleep" rather than just "sleep" to avoid + # using any shell builtin and make sure we will exec() the + # binary. + cmd = f"while true ; do {test_cmd} ; done &" + self.assertRunOk(cmd) + + # Run execsnoop, also in background... + cmd = f"/usr/share/bcc/tools/execsnoop > {log} &" + self.assertRunOk(cmd) + + for attempt in range(3): + # Wait a bit, to let execsnoop to start and log some data. + time.sleep(40 * self.timeout_multiplier) + + # We check that the log file contains some data. + cmd = f"test -s {log}" + _, ret = self.emulator.run(cmd) + if ret == 0: + break + else: + self.fail(f"Timeout while waiting for data in {log}.") + + # Kill our background execsnoop execution. + self.assertRunOk("kill $!") + + # Check we have captured execution occurrences of out test + # command. + cmd = f"grep -Foc '{test_cmd}' {log}" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertGreater(int(out[0]), 0) diff --git a/support/testing/tests/package/test_bcc/linux-bcc.fragment b/support/testing/tests/package/test_bcc/linux-bcc.fragment new file mode 100644 index 00000000..35359b08 --- /dev/null +++ b/support/testing/tests/package/test_bcc/linux-bcc.fragment @@ -0,0 +1,4 @@ +CONFIG_FTRACE=y +CONFIG_FTRACE_SYSCALLS=y +CONFIG_FUNCTION_TRACER=y +CONFIG_KPROBES=y diff --git a/support/testing/tests/package/test_bitcoin.py b/support/testing/tests/package/test_bitcoin.py new file mode 100644 index 00000000..93aa9383 --- /dev/null +++ b/support/testing/tests/package/test_bitcoin.py @@ -0,0 +1,184 @@ +import os +import time + +import infra.basetest + + +class TestBitcoin(infra.basetest.BRTest): + # infra.basetest.BASIC_TOOLCHAIN_CONFIG cannot be used as it does + # not include BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + # needed by bitcoin. This config also uses an ext4 rootfs as + # bitcoind needs some free disk space to start (so we avoid having + # a larger initrd in RAM). + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.81" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_PACKAGE_BITCOIN=y + BR2_PACKAGE_BITCOIN_WALLET=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_4=y + BR2_TARGET_ROOTFS_EXT2_SIZE="256M" + # BR2_TARGET_ROOTFS_TAR is not set + """ + # Command prefix for the bitcoin command line interface. + cli_cmd = "bitcoin-cli -regtest" + + def create_btc_wallet(self, wallet_name): + """Create an empty wallet.""" + cmd = f"{self.cli_cmd} -named createwallet wallet_name={wallet_name}" + self.assertRunOk(cmd) + + def gen_btc_address(self, wallet_name): + """Generate an address in a wallet.""" + cmd = f"{self.cli_cmd} -rpcwallet={wallet_name} getnewaddress" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + return out[0] + + def init_wallet(self, wallet_name): + """Create a wallet and generate an address in it.""" + self.create_btc_wallet(wallet_name) + return self.gen_btc_address(wallet_name) + + def get_wallet_balance(self, wallet): + """Return the (confirmed) balance of a wallet.""" + cmd = f"{self.cli_cmd} -rpcwallet={wallet} getbalance" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + return float(out[0]) + + def get_wallet_unconfirmed_balance(self, wallet): + """Return the unconfirmed balance of a wallet.""" + cmd = f"{self.cli_cmd} -rpcwallet={wallet} getunconfirmedbalance" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + return float(out[0]) + + def get_block_count(self): + """Returns the height of the most-work fully-validated chain.""" + cmd = f"{self.cli_cmd} getblockcount" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + return int(out[0]) + + def test_run(self): + drive = os.path.join(self.builddir, "images", "rootfs.ext4") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["root=/dev/vda console=ttyAMA0"], + options=["-M", "virt", + "-cpu", "cortex-a53", + "-m", "256M", + "-drive", f"file={drive},if=virtio,format=raw"]) + self.emulator.login() + + # Values for the test. + wallet1 = "AliceWallet" + wallet2 = "BobWallet" + btc_test_amount = 10 + btc_fee = 0.00001 + req_blk_count = 101 + + # Check the binary can execute. + self.assertRunOk("bitcoind --version") + + # This cleanup is useful when run-test -k is used. It makes + # this test idempotent. Since the drive storage is preserved + # between reboots, this cleanup will make sure the test always + # starts from a clean state. + cmd = "rm -rf ~/.bitcoin" + self.assertRunOk(cmd) + + # The bitcoin daemon is not started. A client ping is expected + # to fail. + ping_cmd = f"{self.cli_cmd} ping" + _, ret = self.emulator.run(ping_cmd) + self.assertNotEqual(ret, 0) + + # Start the daemon. + cmd = f"bitcoind -regtest -daemonwait -fallbackfee={btc_fee:f}" + self.assertRunOk(cmd) + + time.sleep(2 * self.timeout_multiplier) + + # Now the daemon is started, the ping is expected to succeed. + self.assertRunOk(ping_cmd) + + # We create two wallets and addresses. + btc_addr1 = self.init_wallet(wallet1) + btc_addr2 = self.init_wallet(wallet2) + + # Since the regression test block chain is at its genesis + # block, we expect a height of zero. + cur_blk_cnt = self.get_block_count() + self.assertEqual(cur_blk_cnt, 0) + + # We also expect our wallets to be empty. + for wallet in [wallet1, wallet2]: + balance = self.get_wallet_balance(wallet) + self.assertAlmostEqual(balance, 0.0) + + # We request the generation of several blocks for address + # #1. We should receive the 50 BTC reward at this address. + cmd = self.cli_cmd + cmd += f" generatetoaddress {req_blk_count} {btc_addr1}" + self.assertRunOk(cmd) + + # We should now see the previously created blocks. + cur_blk_cnt = self.get_block_count() + self.assertEqual(cur_blk_cnt, req_blk_count) + + # We should also see the 50 BTC reward in the wallet #1. + balance = self.get_wallet_balance(wallet1) + self.assertAlmostEqual(balance, 50.0) + + # The wallet #2 should still be empty. + balance = self.get_wallet_balance(wallet2) + self.assertAlmostEqual(balance, 0.0) + + # We send an amount from wallet #1 to #2. + cmd = f"{self.cli_cmd} -rpcwallet={wallet1}" + cmd += f" sendtoaddress {btc_addr2} {btc_test_amount}" + self.assertRunOk(cmd) + + # The wallet #1 balance is expected to be subtracted by the + # spent amount and the transaction fees. + expected_balance = 50 - btc_test_amount - btc_fee + balance = self.get_wallet_balance(wallet1) + self.assertAlmostEqual(balance, expected_balance, places=4) + + # The transaction is sent, but not confirmed yet. So we should + # still see a (confirmed) balance of zero. + balance = self.get_wallet_balance(wallet2) + self.assertAlmostEqual(balance, 0.0) + + # We should see the transferred amount in the unconfirmed + # balance. + balance = self.get_wallet_unconfirmed_balance(wallet2) + self.assertAlmostEqual(balance, btc_test_amount) + + # We generate 1 block to address #2. This action will confirm + # the previous transaction (but this will not give the 50 BTC + # reward). + cmd = f"{self.cli_cmd} generatetoaddress 1 {btc_addr2}" + self.assertRunOk(cmd) + + # We should see one more block. + cur_blk_cnt = self.get_block_count() + self.assertEqual(cur_blk_cnt, req_blk_count + 1) + + # We should now see the amount in the confirmed balance. + balance = self.get_wallet_balance(wallet2) + self.assertAlmostEqual(balance, btc_test_amount) + + # The unconfirmed balance should now be zero. + balance = self.get_wallet_unconfirmed_balance(wallet2) + self.assertAlmostEqual(balance, 0.0) diff --git a/support/testing/tests/package/test_bmap_tools.py b/support/testing/tests/package/test_bmap_tools.py new file mode 100644 index 00000000..a1790276 --- /dev/null +++ b/support/testing/tests/package/test_bmap_tools.py @@ -0,0 +1,84 @@ +import os +import infra +import subprocess + +from infra.basetest import BRTest + + +class TestBmapTools(BRTest): + __test__ = False + sample_script = "tests/package/sample_bmap_tools.sh" + copy_script = 'tests/package/copy-sample-script-to-target.sh' + config = \ + """ + BR2_arm=y + BR2_cortex_a8=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_PACKAGE_BMAP_TOOLS=y + BR2_ROOTFS_POST_BUILD_SCRIPT="{}" + BR2_ROOTFS_POST_SCRIPT_ARGS="{}" + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_4=y + BR2_TARGET_ROOTFS_EXT2_SIZE="65536" + # BR2_TARGET_ROOTFS_TAR is not set + BR2_PACKAGE_UTIL_LINUX=y + BR2_PACKAGE_UTIL_LINUX_FALLOCATE=y + BR2_PACKAGE_E2FSPROGS=y + BR2_PACKAGE_UTIL_LINUX_LIBUUID=y + """.format(infra.filepath(copy_script), + infra.filepath(sample_script)) + timeout = 60 + + def login(self): + img = os.path.join(self.builddir, "images", "rootfs.ext4") + self.emulator.boot(arch="armv7", + kernel="builtin", + kernel_cmdline=["root=/dev/mmcblk0", + "rootfstype=ext4"], + options=["-drive", "file={},if=sd,format=raw".format(img)]) + self.emulator.login() + + def test_run(self): + self.login() + cmd = "/root/{}".format(os.path.basename(self.sample_script)) + self.assertRunOk(cmd, timeout=20) + + +class TestPy3BmapTools(TestBmapTools): + __test__ = True + config = TestBmapTools.config + \ + """ + BR2_PACKAGE_PYTHON3=y + """ + + +class TestHostBmapTools(BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_HOST_BMAP_TOOLS=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_TARGET_ROOTFS_EXT2=y + """ + + def test_run(self): + bmap_x = os.path.join(self.b.builddir, "host", "bin", "bmaptool") + src_f = os.path.join(self.b.builddir, "images", "rootfs.ext2") + dst_f = os.path.join(self.b.builddir, "images", "rootfs.ext2.copy") + map_f = os.path.join(self.b.builddir, "images", "rootfs.ext2.bmap") + + ret = subprocess.call([bmap_x, "create", "-o", map_f, src_f], + stdout=self.b.logfile, + stderr=self.b.logfile) + self.assertEqual(ret, 0) + + ret = subprocess.call([bmap_x, "copy", src_f, dst_f], + stdout=self.b.logfile, + stderr=self.b.logfile) + self.assertEqual(ret, 0) + + with open(src_f, 'rb') as f: + src = f.read() + with open(dst_f, 'rb') as f: + dst = f.read() + self.assertEqual(src, dst) diff --git a/support/testing/tests/package/test_brotli.py b/support/testing/tests/package/test_brotli.py new file mode 100644 index 00000000..779b956c --- /dev/null +++ b/support/testing/tests/package/test_brotli.py @@ -0,0 +1,13 @@ +from tests.package.test_compressor_base import TestCompressorBase + + +class TestBrotli(TestCompressorBase): + __test__ = True + config = TestCompressorBase.config + \ + """ + BR2_PACKAGE_BROTLI=y + """ + compress_cmd = "brotli" + decompress_cmd = "brotli -d" + compressed_file_ext = ".br" + timeout = 60 diff --git a/support/testing/tests/package/test_btrfs_progs.py b/support/testing/tests/package/test_btrfs_progs.py new file mode 100644 index 00000000..a53efa94 --- /dev/null +++ b/support/testing/tests/package/test_btrfs_progs.py @@ -0,0 +1,127 @@ +import os +import subprocess + +import infra.basetest + + +class TestBtrfsProgs(infra.basetest.BRTest): + # This test needs a Kernel with btrfs support. + kern_frag = \ + infra.filepath("tests/package/test_btrfs_progs/linux-btrfs.fragment") + config = \ + f""" + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.39" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{kern_frag}" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_PACKAGE_BTRFS_PROGS=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + # Prepare the disk image. + disk_file = os.path.join(self.builddir, "images", "disk.img") + self.emulator.logfile.write(f"Creating disk image: {disk_file}") + self.emulator.logfile.flush() + subprocess.check_call( + ["dd", "if=/dev/zero", f"of={disk_file}", "bs=1M", "count=256"], + stdout=self.emulator.logfile, + stderr=self.emulator.logfile) + + # Run the emulator with a blank drive. + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "Image") + bootargs = ["console=ttyAMA0"] + qemu_opts = ["-M", "virt", "-cpu", "cortex-a57", "-m", "256M", + "-initrd", img, + "-drive", f"file={disk_file},if=virtio,format=raw"] + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=bootargs, + options=qemu_opts) + self.emulator.login() + + # Check a program can run and show its version. + self.assertRunOk("btrfs --version") + + # Variables for this test. + dev = "/dev/vda" + label = "BR_TEST" + mnt_pt = "/tmp/btrfs" + data_file = f"{mnt_pt}/data.bin" + txt = "Hello Buildroot!" + subvol = f"{mnt_pt}/my-subvolume" + snapshot = f"{mnt_pt}/my-snapshot" + + # We create the btrfs filesystem on our device. + self.assertRunOk(f"mkfs.btrfs {dev}", timeout=10) + + # We set a label on this filesystem. + self.assertRunOk(f"btrfs filesystem label {dev} '{label}'") + + # We create a mount point and mount this filesystem. + self.assertRunOk(f"mkdir -p {mnt_pt}") + self.assertRunOk(f"mount {dev} {mnt_pt}") + + # We create a file with random data, to use this new + # filesystem a bit. + self.assertRunOk(f"dd if=/dev/urandom of={data_file} bs=1M count=10") + + # We compute the sha256 hash and save it for later. + hash_cmd = f"sha256sum {data_file}" + out, ret = self.emulator.run(hash_cmd) + self.assertEqual(ret, 0) + data_sha256 = out[0] + + # We unmount the filesystem. + self.assertRunOk(f"umount {mnt_pt}") + + # We run a filesystem check (this tool is the equivalent of + # "fsck"). Since we cleanly unmounted the filesystem, + # we are not expecting any repair. This is just to test the + # program works correctly. + self.assertRunOk(f"btrfs check {dev}") + + # We query the label and check it is the one we set at the + # beginning. + out, ret = self.emulator.run(f"btrfs filesystem label {dev}") + self.assertEqual(ret, 0) + self.assertEqual(out[0], label) + + # We remount our filesystem. + self.assertRunOk(f"mount {dev} {mnt_pt}") + + # We perform a scrub in foreground. + self.assertRunOk(f"btrfs scrub start -B {mnt_pt}") + + # We show device usage and statistics. + self.assertRunOk(f"btrfs device usage {mnt_pt}") + self.assertRunOk(f"btrfs device stats {mnt_pt}") + + # We create a btrfs subvolume and create a file in it. + self.assertRunOk(f"btrfs subvolume create {subvol}") + self.assertRunOk(f"echo '{txt}' > {subvol}/file.txt") + + # We create a read-only snapshot of this subvolume and we + # delete our file previously created. + self.assertRunOk(f"btrfs subvolume snapshot -r {subvol} {snapshot}") + self.assertRunOk(f"rm -f {subvol}/file.txt") + + # We should still see our file in our snapshot. + out, ret = self.emulator.run(f"cat {snapshot}/file.txt") + self.assertEqual(ret, 0) + self.assertEqual(out[0], txt) + + # We should recompute the same sha256 hash as before, on the + # first data file we created at the beginning. + out, ret = self.emulator.run(hash_cmd) + self.assertEqual(ret, 0) + self.assertEqual(out[0], data_sha256) diff --git a/support/testing/tests/package/test_btrfs_progs/linux-btrfs.fragment b/support/testing/tests/package/test_btrfs_progs/linux-btrfs.fragment new file mode 100644 index 00000000..605c1837 --- /dev/null +++ b/support/testing/tests/package/test_btrfs_progs/linux-btrfs.fragment @@ -0,0 +1 @@ +CONFIG_BTRFS_FS=y diff --git a/support/testing/tests/package/test_bzip2.py b/support/testing/tests/package/test_bzip2.py new file mode 100644 index 00000000..4b7ae818 --- /dev/null +++ b/support/testing/tests/package/test_bzip2.py @@ -0,0 +1,12 @@ +from tests.package.test_compressor_base import TestCompressorBase + + +class TestBzip2(TestCompressorBase): + __test__ = True + config = TestCompressorBase.config + \ + """ + BR2_PACKAGE_BZIP2=y + """ + compress_cmd = "bzip2" + decompress_cmd = "bunzip2" + compressed_file_ext = ".bz2" diff --git a/support/testing/tests/package/test_clang.py b/support/testing/tests/package/test_clang.py new file mode 100644 index 00000000..f36faa05 --- /dev/null +++ b/support/testing/tests/package/test_clang.py @@ -0,0 +1,46 @@ +import os + +import infra.basetest + +FUZZ_TIMEOUT = 120 + + +class TestClangCompilerRT(infra.basetest.BRTest): + br2_external = [infra.filepath("tests/package/br2-external/clang-compiler-rt")] + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.283" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_PACKAGE_COMPILER_RT=y + BR2_PACKAGE_LLVM=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_PACKAGE_LIBFUZZER=y + """ + + def login(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "Image") + # Sanitizers overallocate memory and the minimum that seemed to work was 512MB + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["console=ttyAMA0"], + options=["-M", "virt", "-cpu", "cortex-a53", "-m", "512", "-initrd", img]) + self.emulator.login() + + def test_run(self): + self.login() + + # The test case verifies the application executes and that + # the symbolizer is working to decode the stack trace. + cmd = "fuzz_me 2>&1 | grep heap-buffer-overflow" + _, exit_code = self.emulator.run(cmd, FUZZ_TIMEOUT) + self.assertEqual(exit_code, 0) diff --git a/support/testing/tests/package/test_compressor_base.py b/support/testing/tests/package/test_compressor_base.py new file mode 100644 index 00000000..6555584c --- /dev/null +++ b/support/testing/tests/package/test_compressor_base.py @@ -0,0 +1,126 @@ +import os + +import infra.basetest + + +class TestCompressorBase(infra.basetest.BRTest): + """Common class to test a data compression/decompression package. + + Build an image containing the package enabled in config, start the + emulator, login to it. It prepares a test data file with some + redundancy to let compression program reduce the file size. + + Each test case that inherits from this class must have: + __test__ = True - to let nose2 know that it is a test case + config - defconfig fragment with the packages to run the test + compress_cmd - the compression program command (ex: "gzip") + it can also contain arguments (ex: "gzip -9") + It also can have: + decompress_cmd - the decompression program (ex: "gunzip") + if unset, the default value is "un" appended with the + value of "compress_cmd". + check_integrity_cmd + - the integrity check command (ex: "gzip -t") + in unset, the default value is "compress_cmd" appended + with " -t". + compressed_file_ext + - the file extention of compressed files created by the + compress command. (ex: ".gz") + if unset, the default value is a dot "." appended with + the value of "compress_cmd". + timeout - timeout to the compression command. Some compression + program can take more time than the default value + (set to 5 seconds). + """ + __test__ = False + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + compress_cmd = "compressor-unknown" + decompress_cmd = None + check_integrity_cmd = None + compressed_file_ext = None + timeout = 5 + + def __init__(self, names): + """Setup common test variables.""" + super(TestCompressorBase, self).__init__(names) + + if self.decompress_cmd is None: + self.decompress_cmd = "un" + self.compress_cmd + + if self.check_integrity_cmd is None: + self.check_integrity_cmd = self.compress_cmd + " -t" + + if self.compressed_file_ext is None: + self.compressed_file_ext = "." + self.compress_cmd + + self.ref_file = "reference.bin" + self.test_file = "test.bin" + self.comp_test_file = self.test_file + self.compressed_file_ext + + def login(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + def test_run(self): + self.login() + self.prepare_data() + self.compress_test() + self.check_integrity_test() + self.uncompress_test() + self.compare_test() + + def prepare_data(self): + # Create a data file composed of: 128kB of random data, then + # 128kB of zeroes, then a repetition of the 1st 128kB of + # random. + self.assertRunOk("dd if=/dev/urandom of=rand.bin bs=128k count=1") + self.assertRunOk("dd if=/dev/zero of=zeroes.bin bs=128k count=1") + self.assertRunOk(f"cat rand.bin zeroes.bin rand.bin > {self.ref_file}") + + # Keep a copy of the reference data since + # compressor/decompressor programs usually unlink source data + # file. + self.assertRunOk(f"cp {self.ref_file} {self.test_file}") + + def compress_test(self): + # Run the compression + self.assertRunOk(f"{self.compress_cmd} {self.test_file}", timeout=self.timeout) + + # Check that the compressed file was created with the expected name + self.assertRunOk(f"test -e {self.comp_test_file}") + + # Remove the input test file. Some compressors (like gzip) are + # removing it automatically by default. Some others (like lz4) + # are keeping those by default. We always remove it to make + # sure a new file will be recreated by the decompression. + self.assertRunOk(f"rm -f {self.test_file}") + + # Check the compressed file is smaller than the input. + # The "ls -l" command is for simplifying debugging + self.assertRunOk(f"ls -l {self.ref_file} {self.comp_test_file}") + ref_sz_cmd = f"wc -c < {self.ref_file}" + comp_sz_cmd = f"wc -c < {self.comp_test_file}" + self.assertRunOk(f"test $({ref_sz_cmd}) -gt $({comp_sz_cmd})") + + def check_integrity_test(self): + # Check the compressed file integrity + self.assertRunOk(f"{self.check_integrity_cmd} {self.comp_test_file}") + + def uncompress_test(self): + # Run the decompression + self.assertRunOk(f"{self.decompress_cmd} {self.comp_test_file}") + + # Check the decompressed file was created with the correct name + self.assertRunOk(f"test -e {self.test_file}") + + def compare_test(self): + # Check the decompressed file is exactly the same as the + # reference created at the beginning + self.assertRunOk(f"cmp {self.test_file} {self.ref_file}") diff --git a/support/testing/tests/package/test_coremark.py b/support/testing/tests/package/test_coremark.py new file mode 100644 index 00000000..8bd2f321 --- /dev/null +++ b/support/testing/tests/package/test_coremark.py @@ -0,0 +1,33 @@ +import os + +import infra.basetest + + +class TestCoreMark(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_COREMARK=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + log_file = "run1.log" + + # Run a CoreMark benchmark. + self.assertRunOk(f"coremark > {log_file}", timeout=60) + + # Print the log file on console, for debugging. + self.assertRunOk(f"cat {log_file}") + + # The "coremark" program return code is always 0 (success). + # So the correct execution is validated from the run log. + valid_msg = "Correct operation validated." + cmd = f"grep -F '{valid_msg}' {log_file}" + self.assertRunOk(cmd) diff --git a/support/testing/tests/package/test_crudini.py b/support/testing/tests/package/test_crudini.py new file mode 100644 index 00000000..470a714e --- /dev/null +++ b/support/testing/tests/package/test_crudini.py @@ -0,0 +1,41 @@ +import os +from tests.package.test_python import TestPythonPackageBase + + +INI_FILE_CONTENT = """ +[section] +param = this-is-the-magic-value +other = dont care +""" + + +class TestCrudiniBase(TestPythonPackageBase): + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_CRUDINI=y + """ + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", kernel="builtin", + options=["-initrd", img]) + + self.emulator.login() + + # 1. Create some sample .ini file + cmd = "echo -e '%s' > config.ini" % INI_FILE_CONTENT + _, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + + # 2. Attempt to get the value + out, ret = self.emulator.run("crudini --get config.ini section param") + self.assertEqual(ret, 0) + self.assertEqual(out, ['this-is-the-magic-value']) + + +class TestCrudiniPy3(TestCrudiniBase): + __test__ = True + config = TestCrudiniBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + """ diff --git a/support/testing/tests/package/test_cryptsetup.py b/support/testing/tests/package/test_cryptsetup.py new file mode 100644 index 00000000..759dfd7c --- /dev/null +++ b/support/testing/tests/package/test_cryptsetup.py @@ -0,0 +1,137 @@ +import os +import subprocess + +import infra.basetest + + +class TestCryptSetup(infra.basetest.BRTest): + # A specific configuration is needed for using cryptsetup: + # - A kernel config fragment enables all the parts needed for + # mounting a LUKS2 volume, + # - Enable OpenSSL for cryptsetup crypto backend library, + # - Enable e2fsprog for formatting a ext4 filesystem. + kern_frag = \ + infra.filepath("tests/package/test_cryptsetup/linux-cryptsetup.fragment") + config = \ + f""" + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.75" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{kern_frag}" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_PACKAGE_CRYPTSETUP=y + BR2_PACKAGE_E2FSPROGS=y + BR2_PACKAGE_OPENSSL=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + disk_file = os.path.join(self.builddir, "images", "disk.img") + self.emulator.logfile.write(f"Creating disk image: {disk_file}") + subprocess.check_call( + ["dd", "if=/dev/urandom", f"of={disk_file}", "bs=1M", "count=20"], + stdout=self.emulator.logfile, + stderr=self.emulator.logfile) + + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "Image") + + bootargs = ["console=ttyAMA0"] + qemu_opts = ["-M", "virt", "-cpu", "cortex-a57", "-m", "256M", + "-initrd", img, + "-drive", f"file={disk_file},if=virtio,format=raw"] + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=bootargs, + options=qemu_opts) + self.emulator.login() + + # Check the program can execute. + self.assertRunOk("cryptsetup --version") + + passkey = "ThisIsAPassKey." + dev = "/dev/vda" + dm_name = "luks-vol" + dm_dev = f"/dev/mapper/{dm_name}" + mnt_pt = "/mnt/secure-volume" + + # Check the device is NOT detected as a LUKS volume, because + # it is not formatted yet. + is_luks_cmd = f"cryptsetup isLuks {dev}" + _, ret = self.emulator.run(is_luks_cmd) + self.assertNotEqual(ret, 0) + + # Format the LUKS volume. + cmd = f"echo {passkey} | cryptsetup luksFormat {dev}" + self.assertRunOk(cmd, timeout=30) + + # Check the device is now detected as a LUKS device. + self.assertRunOk(is_luks_cmd) + + # Dump LUKS device header information. + self.assertRunOk(f"cryptsetup luksDump {dev}") + + # Open the LUKS device + luks_open_cmd = f"echo {passkey} | " + luks_open_cmd += f"cryptsetup open --type luks {dev} {dm_name}" + self.assertRunOk(luks_open_cmd, timeout=10) + + # Create an ext4 filesystem. + self.assertRunOk(f"mke2fs -T ext4 {dm_dev}", timeout=10) + + # Create the mount point directory. + self.assertRunOk(f"mkdir {mnt_pt}") + + # Mount the LUKS device. + mount_cmd = f"mount {dm_dev} {mnt_pt}" + self.assertRunOk(mount_cmd) + + # Create a plain text file in the mounted filesystem. + msg = "This is a plain text message" + plain_file = f"{mnt_pt}/file.txt" + self.assertRunOk(f"echo '{msg}' > {plain_file}") + + # Unmount. + self.assertRunOk(f"umount {mnt_pt}") + + # We are supposed to see our plain text message on the + # dm-crypt device. + self.assertRunOk(f"grep -Fq '{msg}' {dm_dev}", timeout=10) + + # Close the LUKS device + self.assertRunOk(f"cryptsetup close {dm_name}") + + # We are NOT supposed to find our plain text message on the + # crypted storage device. + _, ret = self.emulator.run(f"grep -Fq '{msg}' {dev}", timeout=10) + self.assertNotEqual(ret, 0) + + # Try to open LUKS volume with a wrong password. This is + # expected to fail. + cmd = f"echo 'Wrong{passkey}' | " + cmd += f"cryptsetup open --type luks {dev} {dm_name}" + _, ret = self.emulator.run(cmd, timeout=10) + self.assertNotEqual(ret, 0) + + # Check the device-mapper device was NOT created (since we + # tried to open it with a wrong password). + self.assertRunOk(f"test ! -e {dm_dev}") + + # Reopen the LUKS device, with the good passkey this time... + self.assertRunOk(luks_open_cmd, timeout=10) + + # ...remount... + self.assertRunOk(mount_cmd) + + # ...and read back our plain text file. We check we get back + # our original message. + out, ret = self.emulator.run(f"cat {plain_file}") + self.assertEqual(ret, 0) + self.assertEqual(out[0], msg) diff --git a/support/testing/tests/package/test_cryptsetup/linux-cryptsetup.fragment b/support/testing/tests/package/test_cryptsetup/linux-cryptsetup.fragment new file mode 100644 index 00000000..37d5494f --- /dev/null +++ b/support/testing/tests/package/test_cryptsetup/linux-cryptsetup.fragment @@ -0,0 +1,5 @@ +CONFIG_BLK_DEV_DM=y +CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_XTS=y +CONFIG_DM_CRYPT=y +CONFIG_MD=y diff --git a/support/testing/tests/package/test_ddrescue.py b/support/testing/tests/package/test_ddrescue.py new file mode 100644 index 00000000..22069714 --- /dev/null +++ b/support/testing/tests/package/test_ddrescue.py @@ -0,0 +1,94 @@ +import os + +import infra.basetest + + +class TestDdrescue(infra.basetest.BRTest): + + # A specific configuration is needed for testing ddrescue: + # - A kernel config fragment enables loop blk dev and device + # mapper dm-dust, which are used to simulate a failing storage + # block device. + # - dmraid user space package is needed to configure dm-dust + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.15" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_PACKAGE_DDRESCUE=y + BR2_PACKAGE_DMRAID=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + # BR2_TARGET_ROOTFS_TAR is not set + """.format( + infra.filepath("tests/package/test_ddrescue/linux-ddrescue.fragment") + ) + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["console=ttyAMA0"], + options=["-M", "virt", "-cpu", "cortex-a57", "-m", "256M", "-initrd", img]) + self.emulator.login() + + # Test variables: + dev_img = "/tmp/dev.img" + lo_dev = "/dev/loop0" + dm_dev_name = "dust0" + dm_dev = f"/dev/mapper/{dm_dev_name}" + ddrescue_img = "/tmp/ddrescue.img" + + # Test the program can execute + self.assertRunOk("ddrescue --version") + + # Create a 1MB file of zeroes for initial loopback block device + self.assertRunOk(f"dd if=/dev/zero of={dev_img} bs=1M count=1") + + # Setup lookback block device + self.assertRunOk(f"losetup {lo_dev} {dev_img}") + + # Create and setup dm-dust to simulate a failing block device + # The dev_img file is 1MB: 2048 blocks of 512 bytes each + self.assertRunOk(f"dmsetup create {dm_dev_name} --table '0 2048 dust {lo_dev} 0 512'") + + # Add few bad blocks and enable I/O error emulation + for badblock in [30, 40, 50, 60]: + self.assertRunOk(f"dmsetup message {dm_dev_name} 0 addbadblock {badblock}") + self.assertRunOk(f"dmsetup message {dm_dev_name} 0 enable") + + # Show device mapper status, to make debugging easier + self.assertRunOk(f"dmsetup status {dm_dev_name}") + + # A normal 'dd' is expected to fail with I/O error + cmd = f"dd if={dm_dev} of=/dev/null bs=512" + _, exit_code = self.emulator.run(cmd) + self.assertNotEqual(exit_code, 0) + + # Where a normal 'dd' fails, 'ddrescue' is expected to succeed + self.assertRunOk(f"ddrescue {dm_dev} {ddrescue_img}") + + # ddrescue does not normaly write any output data when there + # is I/O error on the input. The intent is to preserve any + # data that could have been read in a previous pass. There is + # one exception, when the output is a non-existing regular + # file, ddrescue will initialize it with zeroes the first + # time. Since the original image file was also including + # zeroes, the recovered image is expected to be the same as + # the original one. See ddrescue manual: + # https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html#Introduction + # "Ddrescue does not write zeros to the output when it finds + # bad sectors in the input, and does not truncate the output + # file if not asked to." + # https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html#Algorithm + # "If the output file is a regular file created by ddrescue, + # the areas marked as bad-sector will contain zeros." + self.assertRunOk(f"cmp {dev_img} {ddrescue_img}") diff --git a/support/testing/tests/package/test_ddrescue/linux-ddrescue.fragment b/support/testing/tests/package/test_ddrescue/linux-ddrescue.fragment new file mode 100644 index 00000000..5cbe18a8 --- /dev/null +++ b/support/testing/tests/package/test_ddrescue/linux-ddrescue.fragment @@ -0,0 +1,4 @@ +CONFIG_BLK_DEV_LOOP=y +CONFIG_MD=y +CONFIG_BLK_DEV_DM=y +CONFIG_DM_DUST=y diff --git a/support/testing/tests/package/test_dmidecode.py b/support/testing/tests/package/test_dmidecode.py new file mode 100644 index 00000000..33c19f0d --- /dev/null +++ b/support/testing/tests/package/test_dmidecode.py @@ -0,0 +1,67 @@ +import os + +import infra.basetest + + +class TestDmidecode(infra.basetest.BRTest): + # We use a x86_64 arch for this dmidecode test because aarch64 + # SMBIOS is not supported in non-UEFI use-cases (and using a UEFI + # aarch64 would make the test longer). + config = \ + """ + BR2_x86_64=y + BR2_x86_corei7=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.39" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86_64/linux.config" + BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y + BR2_PACKAGE_DMIDECODE=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + + # An arbitrary SMBIOS OEM string for the test + oem_string = "Hello Buildroot SMBIOS" + + kernel = os.path.join(self.builddir, "images", "bzImage") + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + self.emulator.boot( + arch="x86_64", + kernel=kernel, + kernel_cmdline=["console=ttyS0"], + options=["-cpu", "Nehalem", "-m", "256", "-initrd", cpio_file, + "-smbios", f"type=11,value={oem_string}"], + ) + self.emulator.login() + + # Check the program can run + cmd = "dmidecode --version" + self.assertRunOk(cmd) + + # Check a simple invocation of "dmidecode" + self.assertRunOk("dmidecode") + + # Check a simple invocation of "biosdecode" + self.assertRunOk("biosdecode") + + # Check dmidecode detects SMBIOS + cmd = "dmidecode | grep -E '^SMBIOS .* present\\.$'" + self.assertRunOk(cmd) + + # Check the system-manufacturer is QEMU + cmd = "dmidecode -s system-manufacturer" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], "QEMU") + + # Check we read back our OEM string + cmd = "dmidecode --oem-string 1" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], oem_string) diff --git a/support/testing/tests/package/test_docker_compose.py b/support/testing/tests/package/test_docker_compose.py new file mode 100644 index 00000000..16027c9c --- /dev/null +++ b/support/testing/tests/package/test_docker_compose.py @@ -0,0 +1,72 @@ +import os + +import infra.basetest + + +class TestDockerCompose(infra.basetest.BRTest): + scripts = ["conf/docker-compose.yml", + "tests/package/sample_python_docker.py"] + config = \ + """ + BR2_x86_64=y + BR2_x86_corei7=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_STABLE=y + BR2_SYSTEM_DHCP="eth0" + BR2_ROOTFS_POST_BUILD_SCRIPT="{}" + BR2_ROOTFS_POST_SCRIPT_ARGS="{}" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.262" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="{}" + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_DOCKER=y + BR2_PACKAGE_CA_CERTIFICATES=y + BR2_PACKAGE_DOCKER_CLI=y + BR2_PACKAGE_DOCKER_COMPOSE=y + BR2_PACKAGE_DOCKER_ENGINE=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_SIZE="512M" + # BR2_TARGET_ROOTFS_TAR is not set + """.format( + infra.filepath("tests/package/copy-sample-script-to-target.sh"), + " ".join([infra.filepath(i) for i in scripts]), + infra.filepath("conf/docker-compose-kernel.config")) + + def wait_for_dockerd(self): + # dockerd takes a while to start up + _, _ = self.emulator.run('while [ ! -e /var/run/docker.sock ]; do sleep 1; done', 120) + + def docker_test(self): + # will download container if not available, which may take some time + self.assertRunOk('docker run --rm -p 8888:8888 busybox:latest /bin/true', 120) + + def docker_compose_test(self): + # will download container if not available, which may take some time + self.assertRunOk('docker compose up -d --quiet-pull', 120) + # container may take some time to start + self.assertRunOk('while ! docker inspect root-busybox-1 2>&1 >/dev/null; do sleep 1; done', 120) + self.assertRunOk('wget -q -O /tmp/busybox http://127.0.0.1/busybox', 120) + self.assertRunOk('cmp /bin/busybox /tmp/busybox', 120) + + def python_docker_test(self): + self.assertRunOk('python3 ./sample_python_docker.py', 120) + + def test_run(self): + kernel = os.path.join(self.builddir, "images", "bzImage") + rootfs = os.path.join(self.builddir, "images", "rootfs.ext2") + self.emulator.boot(arch="x86_64", + kernel=kernel, + kernel_cmdline=["root=/dev/vda", "console=ttyS0"], + options=["-cpu", "Nehalem", + "-m", "512M", + "-device", "virtio-rng-pci", + "-drive", "file={},format=raw,if=virtio".format(rootfs), + "-net", "nic,model=virtio", + "-net", "user"]) + self.emulator.login() + self.wait_for_dockerd() + self.docker_test() + self.docker_compose_test() + self.python_docker_test() diff --git a/support/testing/tests/package/test_dos2unix.py b/support/testing/tests/package/test_dos2unix.py new file mode 100644 index 00000000..af5850ae --- /dev/null +++ b/support/testing/tests/package/test_dos2unix.py @@ -0,0 +1,45 @@ +import os + +import infra.basetest + + +class TestDos2Unix(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y + BR2_PACKAGE_DOS2UNIX=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Check the program can run. This test also checks that we're + # using the real "dos2unix" rather than the applet provided in + # BusyBox, since the "--version" option is recognized by the + # real dos2unix and return an error in BusyBox. + self.assertRunOk("dos2unix --version") + + # Create a text file with UNIX new-lines + self.assertRunOk("echo -e 'Hello\\nBuildroot' > original.txt") + + # Convert the original UNIX file to DOS + self.assertRunOk("unix2dos -n original.txt dos.txt") + + # DOS file is expected to be different than the UNIX file + _, exit_code = self.emulator.run("cmp original.txt dos.txt") + self.assertNotEqual(exit_code, 0) + + # The "cat -A" command should print '^M$' for CR-LF + self.assertRunOk("cat -A dos.txt | grep -Fq '^M$'") + + # Convert back DOS file to UNIX + self.assertRunOk("dos2unix -n dos.txt unix.txt") + + # "unix.txt" should be identical to "original.txt" + self.assertRunOk("cmp original.txt unix.txt") diff --git a/support/testing/tests/package/test_dropbear.py b/support/testing/tests/package/test_dropbear.py new file mode 100644 index 00000000..2dd90702 --- /dev/null +++ b/support/testing/tests/package/test_dropbear.py @@ -0,0 +1,30 @@ +import os + +import infra.basetest + + +class TestDropbear(infra.basetest.BRTest): + passwd = "testpwd" + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_GENERIC_ROOT_PASSWD="{}" + BR2_SYSTEM_DHCP="eth0" + BR2_PACKAGE_DROPBEAR=y + BR2_PACKAGE_SSHPASS=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """.format(passwd) + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", img, + "-net", "nic", + "-net", "user"]) + self.emulator.login(self.passwd) + cmd = "netstat -ltn 2>/dev/null | grep 0.0.0.0:22" + self.assertRunOk(cmd) + + cmd = "sshpass -p {} ssh -y localhost /bin/true".format(self.passwd) + self.assertRunOk(cmd) diff --git a/support/testing/tests/package/test_dtbocfg.py b/support/testing/tests/package/test_dtbocfg.py new file mode 100644 index 00000000..56a1ed48 --- /dev/null +++ b/support/testing/tests/package/test_dtbocfg.py @@ -0,0 +1,37 @@ +import os + +import infra.basetest + + +class TestDtbocfg(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.202" + BR2_LINUX_KERNEL_USE_DEFCONFIG=y + BR2_LINUX_KERNEL_DEFCONFIG="vexpress" + BR2_PACKAGE_DTBOCFG=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio") + kernel = os.path.join(self.builddir, "images", "zImage") + kernel_cmdline = ["console=ttyAMA0"] + dtb = infra.download(self.downloaddir, "vexpress-v2p-ca9.dtb") + options = ["-M", "vexpress-a9", "-dtb", dtb, "-initrd", img] + + self.emulator.boot(arch="armv7", kernel=kernel, + kernel_cmdline=kernel_cmdline, + options=options) + self.emulator.login() + self.assertRunOk("modprobe dtbocfg.ko") + self.assertRunOk("mkdir /tmp/config && mount -t configfs none /tmp/config") + + # Check that overlays directory is present. + # From dtbocfg site (https://github.com/ikwzm/dtbocfg): + # If /config/device-tree/overlays is created, it is ready to use + # dtbocfg + self.assertRunOk("ls /tmp/config/device-tree/overlays/") diff --git a/support/testing/tests/package/test_ed.py b/support/testing/tests/package/test_ed.py new file mode 100644 index 00000000..eee5f8c4 --- /dev/null +++ b/support/testing/tests/package/test_ed.py @@ -0,0 +1,98 @@ +import os + +import infra.basetest + + +class TestEd(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_ED=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def run_ed_cmds(self, ed_cmds): + cmd = "ed < +#include + +int +main(void) +{ + printf("Hello Buildroot!\n"); + exit(EXIT_SUCCESS); +} diff --git a/support/testing/tests/package/test_file/rootfs-overlay/root/plain-text.txt b/support/testing/tests/package/test_file/rootfs-overlay/root/plain-text.txt new file mode 100644 index 00000000..1c5aa360 --- /dev/null +++ b/support/testing/tests/package/test_file/rootfs-overlay/root/plain-text.txt @@ -0,0 +1 @@ +This is a plain text file... diff --git a/support/testing/tests/package/test_file/rootfs-overlay/root/plain-text.txt.gz b/support/testing/tests/package/test_file/rootfs-overlay/root/plain-text.txt.gz new file mode 100644 index 00000000..95d398f8 Binary files /dev/null and b/support/testing/tests/package/test_file/rootfs-overlay/root/plain-text.txt.gz differ diff --git a/support/testing/tests/package/test_file/rootfs-overlay/root/random-data.bin b/support/testing/tests/package/test_file/rootfs-overlay/root/random-data.bin new file mode 100644 index 00000000..eea0ae8b Binary files /dev/null and b/support/testing/tests/package/test_file/rootfs-overlay/root/random-data.bin differ diff --git a/support/testing/tests/package/test_file/rootfs-overlay/root/script.py b/support/testing/tests/package/test_file/rootfs-overlay/root/script.py new file mode 100755 index 00000000..79191b30 --- /dev/null +++ b/support/testing/tests/package/test_file/rootfs-overlay/root/script.py @@ -0,0 +1,3 @@ +#! /usr/bin/env python3 + +print("Hello Buildroot!") diff --git a/support/testing/tests/package/test_file/rootfs-overlay/root/script.sh b/support/testing/tests/package/test_file/rootfs-overlay/root/script.sh new file mode 100755 index 00000000..75b2d5e0 --- /dev/null +++ b/support/testing/tests/package/test_file/rootfs-overlay/root/script.sh @@ -0,0 +1,3 @@ +#! /bin/sh + +echo "Hello Buildroot!" diff --git a/support/testing/tests/package/test_file/rootfs-overlay/root/symlink-to-plain-text.txt b/support/testing/tests/package/test_file/rootfs-overlay/root/symlink-to-plain-text.txt new file mode 120000 index 00000000..a3ae3c00 --- /dev/null +++ b/support/testing/tests/package/test_file/rootfs-overlay/root/symlink-to-plain-text.txt @@ -0,0 +1 @@ +plain-text.txt \ No newline at end of file diff --git a/support/testing/tests/package/test_firewalld.py b/support/testing/tests/package/test_firewalld.py new file mode 100644 index 00000000..700337f6 --- /dev/null +++ b/support/testing/tests/package/test_firewalld.py @@ -0,0 +1,102 @@ +"""Test firewalld for both systemd and sysvinit.""" +import os +import time +import infra.basetest + + +class TestFirewalldSystemd(infra.basetest.BRTest): + """Build the kernel as firewalld requires several the nftable options.""" + + config = """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_INIT_SYSTEMD=y + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.61" + BR2_LINUX_KERNEL_DEFCONFIG="vexpress" + BR2_LINUX_KERNEL_DTS_SUPPORT=y + BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9" + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_FIREWALLD=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + kernel_file = os.path.join(self.builddir, "images", "zImage") + dtb_file = os.path.join(self.builddir, "images", "vexpress-v2p-ca9.dtb") + self.emulator.boot(arch="armv7", + kernel=kernel_file, + kernel_cmdline=["console=ttyAMA0,115200"], + options=[ + "-initrd", cpio_file, + "-dtb", dtb_file, + "-M", "vexpress-a9" + ]) + # It takes quite some time for the system to boot with firewalld, + self.emulator.login(timeout=120) + + # It may take some time for firewalld to finish startup. + # Give it at least 15 seconds. + is_active = False + for i in range(15): + output, _ = self.emulator.run("systemctl is-active firewalld") + if output[0] == "active": + is_active = True + break + time.sleep(1) + if not is_active: + self.fail("firewalld failed to activate!") + + cmd = "firewall-cmd --state" + output, exit_code = self.emulator.run(cmd, timeout=10) + self.assertIn("running", output[0]) + self.assertEqual(exit_code, 0) + + +class TestFirewalldSysVInit(infra.basetest.BRTest): + """Build the kernel as firewalld requires several nftable options.""" + + config = """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.61" + BR2_LINUX_KERNEL_DEFCONFIG="vexpress" + BR2_LINUX_KERNEL_DTS_SUPPORT=y + BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9" + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_FIREWALLD=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + kernel_file = os.path.join(self.builddir, "images", "zImage") + dtb_file = os.path.join(self.builddir, "images", "vexpress-v2p-ca9.dtb") + self.emulator.boot(arch="armv7", + kernel=kernel_file, + kernel_cmdline=["console=ttyAMA0,115200"], + options=[ + "-initrd", cpio_file, + "-dtb", dtb_file, + "-M", "vexpress-a9" + ]) + # It takes quite some time for the system to boot with firewalld. + self.emulator.login(timeout=120) + cmd = "firewall-cmd --state" + output, exit_code = self.emulator.run(cmd, timeout=10) + self.assertIn("running", output[0]) + self.assertEqual(exit_code, 0) diff --git a/support/testing/tests/package/test_fluidsynth.py b/support/testing/tests/package/test_fluidsynth.py new file mode 100644 index 00000000..20d4da0c --- /dev/null +++ b/support/testing/tests/package/test_fluidsynth.py @@ -0,0 +1,61 @@ +import os + +import infra.basetest + + +class TestFluidsynth(infra.basetest.BRTest): + # infra.basetest.BASIC_TOOLCHAIN_CONFIG cannot be used as it is + # armv5 and based on qemu versatilepb which is limited to 256MB of + # RAM. The test needs 1GB of RAM (larger initrd and soundfont is + # loaded in memory). + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.86" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_PACKAGE_AUBIO=y + BR2_PACKAGE_FLUIDSYNTH=y + BR2_PACKAGE_FLUIDSYNTH_LIBSNDFILE=y + BR2_PACKAGE_FLUID_SOUNDFONT=y + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_MIDIUTIL=y + BR2_ROOTFS_OVERLAY="{}" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """.format( + # overlay to add helper test scripts + infra.filepath("tests/package/test_fluidsynth/rootfs-overlay")) + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["console=ttyAMA0"], + options=["-M", "virt", "-cpu", "cortex-a57", "-m", "1G", "-initrd", img]) + self.emulator.login() + + # Test the binary executes + self.assertRunOk("fluidsynth --version") + + # Create a simple MIDI file programmatically + self.assertRunOk("/root/gen_midi_file.py /tmp/output.mid") + + # Convert the MIDI file to a WAV file + cmd = "fluidsynth" + cmd += " -F /tmp/output.wav" + cmd += " /usr/share/soundfonts/FluidR3_GM.sf2" + cmd += " /tmp/output.mid" + self.assertRunOk(cmd) + + # Extract notes in the WAV file with Aubio + self.assertRunOk("aubionotes /tmp/output.wav > /tmp/notes.txt") + + # Check the extracted notes are the expected ones + self.assertRunOk("/root/check_notes.py < /tmp/notes.txt") diff --git a/support/testing/tests/package/test_fluidsynth/rootfs-overlay/root/check_notes.py b/support/testing/tests/package/test_fluidsynth/rootfs-overlay/root/check_notes.py new file mode 100755 index 00000000..7301e14a --- /dev/null +++ b/support/testing/tests/package/test_fluidsynth/rootfs-overlay/root/check_notes.py @@ -0,0 +1,24 @@ +#! /usr/bin/env python3 +# +# This script reads the output of the "aubionotes" command and +# validates it contains three expected notes (A2, E3, A3) in the +# correct order. Silences or other notes are allowed in between those +# notes, to allow some flexibility. + +import sys + +found = 0 +notes = [57, 64, 69] + +for line in sys.stdin: + fields = line.split() + if len(fields) >= 1: + value = round(float(fields[0])) + if value == notes[found]: + found += 1 + if found == len(notes): + print("Found all notes") + sys.exit(0) + +print("Error: all notes not found") +sys.exit(1) diff --git a/support/testing/tests/package/test_fluidsynth/rootfs-overlay/root/gen_midi_file.py b/support/testing/tests/package/test_fluidsynth/rootfs-overlay/root/gen_midi_file.py new file mode 100755 index 00000000..aa53a25a --- /dev/null +++ b/support/testing/tests/package/test_fluidsynth/rootfs-overlay/root/gen_midi_file.py @@ -0,0 +1,23 @@ +#! /usr/bin/env python3 +# +# This script generates a MIDI file with only 3 notes: A2, E3, A3 +# usage: gen_midi_file.py [output-filename] + +import sys + +from midiutil import MIDIFile + +output_filename = "output.mid" +if len(sys.argv) >= 2: + output_filename = sys.argv[1] + +notes = [57, 64, 69] # A2, E3, A3 + +midi = MIDIFile() +midi.addTempo(track=0, time=0, tempo=60) + +for i, p in enumerate(notes): + midi.addNote(track=0, channel=0, pitch=p, time=i, duration=1, volume=100) + +with open(output_filename, "wb") as output_file: + midi.writeFile(output_file) diff --git a/support/testing/tests/package/test_flutter.py b/support/testing/tests/package/test_flutter.py new file mode 100644 index 00000000..08aa4974 --- /dev/null +++ b/support/testing/tests/package/test_flutter.py @@ -0,0 +1,78 @@ +import os +import time +import infra.basetest + +from ..graphics_base import GraphicsBase + + +class TestFlutter(infra.basetest.BRTest, GraphicsBase): + config = f""" + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_ROOTFS_OVERLAY="{infra.filepath("tests/package/test_flutter/overlay")}" + BR2_PER_PACKAGE_DIRECTORIES=y + BR2_INIT_SYSTEMD=y + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.54" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{infra.filepath("tests/package/test_flutter/linux-vkms.fragment")}" + BR2_PACKAGE_LIBDRM=y + BR2_PACKAGE_MESA3D=y + BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y + BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VIRGL=y + BR2_PACKAGE_MESA3D_OPENGL_ES=y + BR2_PACKAGE_FLUTTER_PI=y + BR2_PACKAGE_FLUTTER_PI_RAW_KEYBOARD_PLUGIN=y + BR2_PACKAGE_FLUTTER_PI_TEXT_INPUT_PLUGIN=y + BR2_PACKAGE_FLUTTER_PACKAGES=y + BR2_PACKAGE_FLUTTER_MARKDOWN_EXAMPLE=y + BR2_PACKAGE_FLUTTER_ENGINE=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_4=y + BR2_TARGET_ROOTFS_EXT2_SIZE="512M" + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.ext2") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot( + arch="aarch64", + kernel=kern, + kernel_cmdline=["root=/dev/vda console=ttyAMA0 vt.global_cursor_default=0"], + options=["-M", "virt", + "-cpu", "cortex-a57", + "-m", "512M", + "-smp", "4", + "-vga", "std", + "-vnc", "none", + "-drive", f"file={img},if=virtio,format=raw"]) + self.emulator.login() + + # Get the CRC from the current ramebuffer + empty_crc = self.get_n_fb_crc(count=1)[0] + + # Start the example App. It can take a bit of time to start, + # so lets try a few times. 600 samples should cover about 10s + # @60Hz (although, the rendering could be much slower on slow + # machines) + self.assertRunOk("systemctl start flutter-markdown-example", timeout=10) + for i in range(600): + gallery_crc = self.get_n_fb_crc(count=1)[0] + if gallery_crc != empty_crc: + break + time.sleep(1) + self.assertNotEqual(gallery_crc, empty_crc, "gallery app did not render anything on screen") + + # Stop the application, and check it restored the framebuffer content + self.assertRunOk("systemctl stop flutter-markdown-example", timeout=10) + for i in range(600): + gallery_crc = self.get_n_fb_crc(count=1)[0] + if gallery_crc == empty_crc: + break + time.sleep(1) + self.assertEqual(gallery_crc, empty_crc, "gallery app did not stop rendering") diff --git a/support/testing/tests/package/test_flutter/linux-vkms.fragment b/support/testing/tests/package/test_flutter/linux-vkms.fragment new file mode 100644 index 00000000..3fc7a5dd --- /dev/null +++ b/support/testing/tests/package/test_flutter/linux-vkms.fragment @@ -0,0 +1,2 @@ +CONFIG_DEBUG_FS=y +CONFIG_DRM_VKMS=y diff --git a/support/testing/tests/package/test_flutter/overlay/usr/lib/systemd/system/flutter-markdown-example.service b/support/testing/tests/package/test_flutter/overlay/usr/lib/systemd/system/flutter-markdown-example.service new file mode 100644 index 00000000..2a64b88c --- /dev/null +++ b/support/testing/tests/package/test_flutter/overlay/usr/lib/systemd/system/flutter-markdown-example.service @@ -0,0 +1,11 @@ +[Unit] +Description=flutter-markdown-example daemon +After=dbus.service systemd-udevd.service + +[Service] +ExecStart=/usr/bin/flutter-pi --release /usr/share/flutter/flutter_markdown_example/release/ +Restart=always +KillMode=process + +[Install] +WantedBy=multi-user.target diff --git a/support/testing/tests/package/test_fping.py b/support/testing/tests/package/test_fping.py new file mode 100644 index 00000000..507c4ce7 --- /dev/null +++ b/support/testing/tests/package/test_fping.py @@ -0,0 +1,45 @@ +import os +import time + +import infra.basetest + + +class TestFping(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_FPING=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Check the program can execute. + self.assertRunOk("fping --version") + + # Fping v5.1 need to wait few seconds after a kernel booted + # before starting. This sleep time can be removed when the + # issue will be closed and the package updated. See: + # https://github.com/schweikert/fping/issues/288 + time.sleep(5 * self.timeout_multiplier) + + # Run 3 pings on localhost. + self.assertRunOk("fping -e -c 3 localhost") + + # Run pings on a local subnet and print statistics. + self.assertRunOk("fping -s -g 127.0.0.0/28") + + # Test an IPv6 ping. + self.assertRunOk("fping -6 ::1") + + # Create a prohibited route to make fping fail. + self.assertRunOk("ip route add to prohibit 192.168.12.0/24") + + # We expect fping to fail when pinging the prohibited network. + _, ret = self.emulator.run("fping 192.168.12.34") + self.assertNotEqual(ret, 0) diff --git a/support/testing/tests/package/test_fwts.py b/support/testing/tests/package/test_fwts.py new file mode 100644 index 00000000..ef792136 --- /dev/null +++ b/support/testing/tests/package/test_fwts.py @@ -0,0 +1,67 @@ +import os + +import infra.basetest + + +class TestFwts(infra.basetest.BRTest): + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_4=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_TARGET_ROOTFS_EXT2_SIZE="128M" + BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/aarch64-sbsa/assemble-flash-images support/scripts/genimage.sh" + BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/qemu/aarch64-sbsa/genimage.cfg" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.28" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y + BR2_TARGET_EDK2=y + BR2_TARGET_EDK2_PLATFORM_QEMU_SBSA=y + BR2_TARGET_GRUB2=y + BR2_TARGET_GRUB2_ARM64_EFI=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.9" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="qemu_sbsa" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y + BR2_PACKAGE_FWTS=y + BR2_PACKAGE_FWTS_EFI_RUNTIME_MODULE=y + BR2_PACKAGE_HOST_GENIMAGE=y + BR2_PACKAGE_HOST_DOSFSTOOLS=y + BR2_PACKAGE_HOST_MTOOLS=y + """ + + def test_run(self): + hda = os.path.join(self.builddir, "images", "disk.img") + flash0 = os.path.join(self.builddir, "images", "SBSA_FLASH0.fd") + flash1 = os.path.join(self.builddir, "images", "SBSA_FLASH1.fd") + self.emulator.boot(arch="aarch64", + options=["-M", "sbsa-ref", + "-cpu", "cortex-a57", + "-m", "512M", + "-pflash", flash0, + "-pflash", flash1, + "-hda", hda]) + self.emulator.login() + + # Check the program can execute. + self.assertRunOk("fwts --version") + + # We run a simple UEFI runtime service variable interface test + # suite. Those tests are using the fwts efi_runtime kernel + # module. + self.assertRunOk("fwts -q uefirtvariable", timeout=30) + + # The previous fwts invocation is expected to have created a + # "results.log" report. We check the file exists and contains + # a known header string. + expected_str = "Results generated by fwts:" + cmd = f"grep -F '{expected_str}' results.log" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertTrue(out[0].startswith(expected_str)) diff --git a/support/testing/tests/package/test_gawk.py b/support/testing/tests/package/test_gawk.py new file mode 100644 index 00000000..7d737a96 --- /dev/null +++ b/support/testing/tests/package/test_gawk.py @@ -0,0 +1,120 @@ +import os + +import infra.basetest + + +class TestGawk(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y + BR2_PACKAGE_GAWK=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def basic_gawk_tests(self): + # Check the program can execute + self.assertRunOk("gawk --version") + + # Check "awk" is "gawk": the Buildroot gawk package recipe is + # supposed to install the symbolic link. + output, exit_code = self.emulator.run("awk --version") + self.assertEqual(exit_code, 0) + self.assertTrue(output[0].startswith("GNU Awk")) + + # Check "gawk" can return a specific exit code + code = 123 + cmd = "gawk 'BEGIN { exit(" + str(code) + "); }'" + _, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, code) + + # Run a basic print program + test_string = "Hello Buildroot" + cmd = "gawk 'BEGIN {print \"" + test_string + "\"; }'" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], test_string) + + def create_test_data(self): + # Create some test data + entries = ["one", "two", "three", "four"] + for entry in entries: + self.assertRunOk(f"echo {entry} >> data1.txt") + + def add_line_numbers(self): + # Add line numbers with gawk + cmd = "gawk '{ print NR \"\\t\" $1; }' data1.txt > data2.txt" + self.assertRunOk(cmd) + + def sum_column(self): + # Check the sum of the first column is 1+2+3+4 == 10 + awk_prg = "BEGIN { SUM = 0; } { SUM = SUM + $1; } END { print SUM; }" + cmd = f"gawk '{awk_prg}' data2.txt" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(int(output[0]), 10) + + def uppercase_column(self): + # Extract only column 2 and convert it to upper case + cmd = "gawk '{ print toupper($2); }' data2.txt > data3.txt" + self.assertRunOk(cmd) + + # Prepare the same output using "data1.txt" and the "tr" command, + # for verification + cmd = "tr a-z A-Z < data1.txt > data3-tr.txt" + self.assertRunOk(cmd) + + # "gawk" and "tr" output are expected to be the same + self.assertRunOk("cmp data3.txt data3-tr.txt") + + def gawk_head(self): + # Show the first 2 lines of a file + cmd = "gawk 'NR <= 2 { print $0; }' data2.txt > data4.txt" + self.assertRunOk(cmd) + + # Prepare the same output using the "head" command + cmd = "head -2 data2.txt > data4-head.txt" + self.assertRunOk(cmd) + + # "gawk" and "tr" output are expected to be the same + self.assertRunOk("cmp data4.txt data4-head.txt") + + def gawk_specific(self): + # Use PROCINFO, which is a gawk specific feature: + # https://www.gnu.org/software/gawk/manual/gawk.html#POSIX_002fGNU + awk_platform_prog = "BEGIN { print PROCINFO[\"platform\"]; }" + cmd = f"gawk '{awk_platform_prog}'" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], "posix") + + # Using the same gawk feature when running in POSIX mode should not + # produce output. + cmd = f"gawk --posix '{awk_platform_prog}'" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertTrue(len(output) == 1 and len(output[0]) == 0) + + def gawk_numeric(self): + value = 1234 + squared_value = value * value + cmd = "gawk 'BEGIN { print sqrt(" + str(squared_value) + "); }'" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(int(output[0]), value) + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + self.basic_gawk_tests() + self.create_test_data() + self.add_line_numbers() + self.sum_column() + self.uppercase_column() + self.gawk_head() + self.gawk_specific() + self.gawk_numeric() diff --git a/support/testing/tests/package/test_gdb.py b/support/testing/tests/package/test_gdb.py new file mode 100644 index 00000000..47121623 --- /dev/null +++ b/support/testing/tests/package/test_gdb.py @@ -0,0 +1,107 @@ +import os +import infra.basetest + + +class BaseGdb(infra.basetest.BRTest): + def verify_host_gdb(self, prefix="arm-linux"): + cmd = ["host/bin/%s-gdb" % prefix, "--version"] + # We don't check the return value, as it automatically raises + # an exception if the command returns with a non-zero value + infra.run_cmd_on_host(self.builddir, cmd) + + def boot(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", img, + "-net", "nic", + "-net", "user"]) + self.emulator.login() + + def verify_gdbserver(self): + cmd = "gdbserver --version" + self.assertRunOk(cmd) + + def verify_gdb(self): + cmd = "gdb --version" + self.assertRunOk(cmd) + + +class TestGdbHostOnlyDefault(BaseGdb): + config = \ + infra.basetest.MINIMAL_CONFIG + \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_PACKAGE_HOST_GDB=y + """ + + def test_run(self): + self.verify_host_gdb() + + +class TestGdbHostOnlyAllFeatures(BaseGdb): + config = \ + infra.basetest.MINIMAL_CONFIG + \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_PACKAGE_HOST_GDB=y + BR2_PACKAGE_HOST_GDB_TUI=y + BR2_PACKAGE_HOST_GDB_PYTHON3=y + BR2_PACKAGE_HOST_GDB_SIM=y + """ + + def test_run(self): + self.verify_host_gdb() + + +class TestGdbserverOnly(BaseGdb): + config = \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_PACKAGE_GDB=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + self.boot() + self.verify_gdbserver() + + +class TestGdbFullTarget(BaseGdb): + config = \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_PACKAGE_GDB=y + BR2_PACKAGE_GDB_DEBUGGER=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + self.boot() + self.verify_gdb() + + +class TestGdbArc(BaseGdb): + config = \ + """ + BR2_arcle=y + BR2_archs4x_rel31=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_PACKAGE_HOST_GDB=y + BR2_PACKAGE_GDB=y + BR2_PACKAGE_GDB_SERVER=y + BR2_PACKAGE_GDB_DEBUGGER=y + """ + + def test_run(self): + self.verify_host_gdb("arc-linux") diff --git a/support/testing/tests/package/test_ghostscript.py b/support/testing/tests/package/test_ghostscript.py new file mode 100644 index 00000000..3c6c16ef --- /dev/null +++ b/support/testing/tests/package/test_ghostscript.py @@ -0,0 +1,48 @@ +import os + +import infra.basetest + + +class TestGhostscript(infra.basetest.BRTest): + rootfs_overlay = \ + infra.filepath("tests/package/test_ghostscript/rootfs-overlay") + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + f""" + BR2_PACKAGE_GHOSTSCRIPT=y + BR2_PACKAGE_TESSERACT_OCR=y + BR2_PACKAGE_TESSERACT_OCR_LANG_ENG=y + BR2_ROOTFS_OVERLAY="{rootfs_overlay}" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Check the program can execute. + self.assertRunOk("gs --version") + + doc_basename = "document" + ps_file = doc_basename + ".ps" + pgm_file = doc_basename + ".pgm" + txt_file = doc_basename + ".txt" + + # Render a basic PostScript file to an image file. + cmd = "gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pgmraw -r150" + cmd += f" -dTextAlphaBits=4 -sOutputFile='{pgm_file}' {ps_file}" + self.assertRunOk(cmd) + + # Run text recognition on the image file. + cmd = f"tesseract {pgm_file} {doc_basename}" + self.assertRunOk(cmd, timeout=30) + + # Check we extracted the expected string from the input + # PostScript file. + cmd = f"cat {txt_file}" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertEqual(out[0], "Hello Buildroot!") diff --git a/support/testing/tests/package/test_ghostscript/rootfs-overlay/root/document.ps b/support/testing/tests/package/test_ghostscript/rootfs-overlay/root/document.ps new file mode 100644 index 00000000..5ca2b358 --- /dev/null +++ b/support/testing/tests/package/test_ghostscript/rootfs-overlay/root/document.ps @@ -0,0 +1,9 @@ +%!PS +% See: PostScript: Language Reference, third edition +% Example 5.1, page 314 +% https://www.adobe.com/jp/print/postscript/pdfs/PLRM.pdf +/Helvetica findfont +16 scalefont setfont +54 720 moveto +(Hello Buildroot!) show +showpage diff --git a/support/testing/tests/package/test_glslsandbox_player.py b/support/testing/tests/package/test_glslsandbox_player.py new file mode 100644 index 00000000..3b0dd603 --- /dev/null +++ b/support/testing/tests/package/test_glslsandbox_player.py @@ -0,0 +1,50 @@ +import os + +import infra.basetest + + +class TestGlslsandboxPlayer(infra.basetest.BRTest): + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.32" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" + BR2_PACKAGE_LIBDRM=y + BR2_PACKAGE_MESA3D=y + BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y + BR2_PACKAGE_MESA3D_LLVM=y + BR2_PACKAGE_MESA3D_OPENGL_EGL=y + BR2_PACKAGE_MESA3D_OPENGL_ES=y + BR2_PACKAGE_GLSLSANDBOX_PLAYER=y + BR2_PACKAGE_GLSLSANDBOX_PLAYER_KMS=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + # BR2_TARGET_ROOTFS_TAR is not set + """.format( + infra.filepath("tests/package/test_glslsandbox_player/linux-vkms.fragment")) + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["console=ttyAMA0"], + options=["-M", "virt", "-cpu", "cortex-a57", "-m", "256M", "-initrd", img]) + self.emulator.login() + + # We force a small resolution in order to keep a relatively + # fast software rendering + cmd = "GSP_DRM_MODE=640x480 " + # We run 3 frames of a reduced resolution of SimpleMandel + cmd += "glslsandbox-player -S SimpleMandel -w0 -f3 -R8 -N -vv -r1 -D" + self.assertRunOk(cmd, timeout=30) + + # Since we render 3 frames and request a dump of the last one, + # a ppm image file is expected to be present + self.assertRunOk("test -s SimpleMandel-00002.ppm") diff --git a/support/testing/tests/package/test_glslsandbox_player/linux-vkms.fragment b/support/testing/tests/package/test_glslsandbox_player/linux-vkms.fragment new file mode 100644 index 00000000..ec2ed446 --- /dev/null +++ b/support/testing/tests/package/test_glslsandbox_player/linux-vkms.fragment @@ -0,0 +1 @@ +CONFIG_DRM_VKMS=y diff --git a/support/testing/tests/package/test_glxinfo.py b/support/testing/tests/package/test_glxinfo.py new file mode 100644 index 00000000..3ccbdca8 --- /dev/null +++ b/support/testing/tests/package/test_glxinfo.py @@ -0,0 +1,59 @@ +import os + +import infra.basetest + +GLXINFO_TIMEOUT = 120 + + +class TestGlxinfo(infra.basetest.BRTest): + config = \ + """ + BR2_x86_core2=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_GLIBC_STABLE=y + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.26" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86/linux.config" + BR2_PACKAGE_MESA3D_DEMOS=y + BR2_PACKAGE_MESA3D=y + BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y + BR2_PACKAGE_MESA3D_OPENGL_GLX=y + BR2_PACKAGE_XORG7=y + BR2_PACKAGE_XSERVER_XORG_SERVER=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + BR2_TARGET_ROOTFS_EXT2=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_ROOTFS_OVERLAY="{}" + """.format( + infra.filepath("tests/package/test_glxinfo/rootfs-overlay")) + + def wait_for_xserver(self): + # xserver takes some time to start up + # The test case fail here if for some reason xserver is not properly installed + _, _ = self.emulator.run('while [ ! -e /var/run/xorg.pid ]; do sleep 1; done', 120) + + def login(self): + img = os.path.join(self.builddir, "images", "rootfs.ext2") + kern = os.path.join(self.builddir, "images", "bzImage") + # glxinfo overallocate memory and the minimum that seemed to work was 512MB + self.emulator.boot(arch="i386", + kernel=kern, + kernel_cmdline=["root=/dev/vda console=ttyS0"], + options=["-M", "pc", "-cpu", "core2duo", "-m", "512", + "-drive", "file={},if=virtio,format=raw".format(img)]) + self.emulator.login() + + def test_run(self): + self.login() + self.wait_for_xserver() + + # The test case verifies that the xserver with GLX is working + cmd = "glxinfo -B -display :0" + output, exit_code = self.emulator.run(cmd, GLXINFO_TIMEOUT) + self.assertEqual(exit_code, 0) + for line in output: + self.assertNotIn("Error", line) + # Error case: "Error: couldn't find RGB GLX visual or fbconfig" diff --git a/support/testing/tests/package/test_glxinfo/rootfs-overlay/etc/X11/xorg.conf.d/01-modules.conf b/support/testing/tests/package/test_glxinfo/rootfs-overlay/etc/X11/xorg.conf.d/01-modules.conf new file mode 100644 index 00000000..c693c213 --- /dev/null +++ b/support/testing/tests/package/test_glxinfo/rootfs-overlay/etc/X11/xorg.conf.d/01-modules.conf @@ -0,0 +1,11 @@ + +# Xorg does not implement real dynamic linking and requires that its +# modules get loaded in the right order. +# https://forums.gentoo.org/viewtopic-p-8245578.html#8245578 +Section "Module" + Load "vgahw" + Load "fb" + Load "shadowfb" + Load "shadow" + Load "glamoregl" +EndSection diff --git a/support/testing/tests/package/test_gnupg2.py b/support/testing/tests/package/test_gnupg2.py new file mode 100644 index 00000000..2b18f54f --- /dev/null +++ b/support/testing/tests/package/test_gnupg2.py @@ -0,0 +1,114 @@ +import os + +import infra.basetest + + +class TestGnupg2(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_GNUPG2=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Some common data for all the tests + plain_data = "Some plain text data" + plain_file = "file.txt" + gpg_file = plain_file + ".gpg" + asc_file = plain_file + ".asc" + sig_file = plain_file + ".sig" + good_passphrase = "Good Passphrase" + gpg_userid = "br-test@buildroot" + + # Test the program can execute + self.assertRunOk("gpg --version") + + # Generate plain text data + cmd = "echo '{}' > {}".format(plain_data, plain_file) + self.assertRunOk(cmd) + + # Test symmetric encrypt + cmd = "gpg --batch --symmetric" + cmd += " --passphrase '{}' {}".format(good_passphrase, plain_file) + self.assertRunOk(cmd, timeout=10) + + # Test symmetric decrypt + cmd = "gpg --batch --decrypt" + cmd += " --passphrase '{}' {}".format(good_passphrase, gpg_file) + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertIn(plain_data, output) + + # Test a failed decrypt with a bad password + cmd = "gpg --batch --decrypt" + cmd += " --passphrase 'A-Bad-Password' {}".format(gpg_file) + _, exit_code = self.emulator.run(cmd) + self.assertNotEqual(exit_code, 0) + + # Test the generation of an asymmetric key + cmd = "gpg --batch --passphrase ''" + cmd += " --quick-generate-key {} default default".format(gpg_userid) + self.assertRunOk(cmd) + + # Test asymmetric encrypt+sign + cmd = "gpg --batch --yes --encrypt --sign" + cmd += " --recipient {} {}".format(gpg_userid, plain_file) + self.assertRunOk(cmd) + + # Test asymmetric decrypt+verify + cmd = "gpg --decrypt {}".format(gpg_file) + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertIn(plain_data, output) + self.assertRegex("\n".join(output), r'gpg: Good signature') + + # Test asymmetric armored encrypt+sign + cmd = "gpg --batch --yes --armor --encrypt --sign" + cmd += " --recipient {} {}".format(gpg_userid, plain_file) + self.assertRunOk(cmd) + + # Test asymmetric armored decrypt+verify + cmd = "gpg --armor --decrypt {}".format(asc_file) + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertIn(plain_data, output) + self.assertRegex("\n".join(output), r'gpg: Good signature') + + # Test detached signature + cmd = "gpg --batch --yes --detach-sign {}".format(plain_file) + self.assertRunOk(cmd) + + # Test detached signature verification + cmd = "gpg --verify {}".format(sig_file) + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertRegex("\n".join(output), r'gpg: Good signature') + + # Test detached armored signature + cmd = "gpg --batch --yes --armor --detach-sign {}".format(plain_file) + self.assertRunOk(cmd) + + # Test detached armored signature verification + cmd = "gpg --armor --verify {}".format(asc_file) + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertRegex("\n".join(output), r'gpg: Good signature') + + # Test the signature verification of a corrupted file actually fails + cmd = "echo 'CORRUPTED' >> {}".format(plain_file) + self.assertRunOk(cmd) + + cmd = "gpg --verify {}".format(sig_file) + _, exit_code = self.emulator.run(cmd) + self.assertNotEqual(exit_code, 0) + + cmd = "gpg --armor --verify {}".format(asc_file) + _, exit_code = self.emulator.run(cmd) + self.assertNotEqual(exit_code, 0) diff --git a/support/testing/tests/package/test_gnuplot.py b/support/testing/tests/package/test_gnuplot.py new file mode 100644 index 00000000..a2255405 --- /dev/null +++ b/support/testing/tests/package/test_gnuplot.py @@ -0,0 +1,73 @@ +import os + +import infra.basetest + + +class TestGnuplot(infra.basetest.BRTest): + rootfs_overlay = \ + infra.filepath("tests/package/test_gnuplot/rootfs-overlay") + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + f""" + BR2_PACKAGE_GNUPLOT=y + BR2_ROOTFS_OVERLAY="{rootfs_overlay}" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def gen_gnuplot_cmd(self, gpcmd): + return f"gnuplot -e '{gpcmd}'" + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # We check the program can run. + self.assertRunOk("gnuplot --version") + + # When the locale is C, Gnuplot print the warning: + # "line 0: warning: iconv failed to convert degree sign" + # We set the locale to avoid this warning. + self.assertRunOk('export LC_ALL="en_US.UTF-8"') + + # We check Gnuplot can print a string. + string = "Hello Buildroot !" + cmd = self.gen_gnuplot_cmd(f'print "{string}"') + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertEqual(out[0], string) + + # We check Gnuplot can do a simple arithmetic operation. + op1 = 123 + op2 = 456 + expected_result = op1 * op2 + cmd = self.gen_gnuplot_cmd(f"print {op1} * {op2}") + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertEqual(int(out[0]), expected_result) + + # We check Gnuplot can return a specific exit code. + exit_code = 123 + cmd = self.gen_gnuplot_cmd(f"exit status {exit_code}") + _, ret = self.emulator.run(cmd) + self.assertEqual(ret, exit_code) + + # We render a simple plot on the terminal. + gpcmd = "set term dumb; set grid; plot [-5:5] x**2;" + cmd = self.gen_gnuplot_cmd(gpcmd) + self.assertRunOk(cmd) + + # We check a Gnuplot script executes correctly. + cmd = "gnuplot /root/gnuplot-test.plot" + self.assertRunOk(cmd) + + # Our Gnuplot script is supposed to have generated a text + # output of the plot. We check this file contains the plot + # title set in the script. + exp_str = "Buildroot Test Plot" + cmd = f"grep -Fo '{exp_str}' /root/gnuplot-test.txt" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertEqual(out[0], exp_str) diff --git a/support/testing/tests/package/test_gnuplot/rootfs-overlay/root/gnuplot-test.plot b/support/testing/tests/package/test_gnuplot/rootfs-overlay/root/gnuplot-test.plot new file mode 100644 index 00000000..04046be0 --- /dev/null +++ b/support/testing/tests/package/test_gnuplot/rootfs-overlay/root/gnuplot-test.plot @@ -0,0 +1,4 @@ +set term dumb +set output "gnuplot-test.txt" +set title "Buildroot Test Plot" +plot sin(x) diff --git a/support/testing/tests/package/test_gnuradio.py b/support/testing/tests/package/test_gnuradio.py new file mode 100644 index 00000000..1fc0479d --- /dev/null +++ b/support/testing/tests/package/test_gnuradio.py @@ -0,0 +1,42 @@ +import os + +import infra.basetest + + +class TestGnuradio(infra.basetest.BRTest): + # infra.basetest.BASIC_TOOLCHAIN_CONFIG cannot be used as it does + # not include: BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + # needed by gnuradio + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.39" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_PACKAGE_GNURADIO=y + BR2_PACKAGE_GNURADIO_BLOCKS=y + BR2_PACKAGE_GNURADIO_PYTHON=y + BR2_PACKAGE_PYTHON3=y + BR2_ROOTFS_OVERLAY="{}" + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + # BR2_TARGET_ROOTFS_TAR is not set + """.format( + # overlay to add a gnuradio python test script + infra.filepath("tests/package/test_gnuradio/rootfs-overlay")) + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["console=ttyAMA0"], + options=["-M", "virt", "-cpu", "cortex-a57", "-m", "256M", "-initrd", img]) + self.emulator.login() + + self.assertRunOk("/root/test_gnuradio.py", timeout=30) diff --git a/support/testing/tests/package/test_gnuradio/rootfs-overlay/root/test_gnuradio.py b/support/testing/tests/package/test_gnuradio/rootfs-overlay/root/test_gnuradio.py new file mode 100755 index 00000000..4b636745 --- /dev/null +++ b/support/testing/tests/package/test_gnuradio/rootfs-overlay/root/test_gnuradio.py @@ -0,0 +1,68 @@ +#! /usr/bin/env python3 + +from gnuradio import blocks +from gnuradio import gr + +INPUT_LENGTH = 100 +MUL_CONST = 3 +ADD_CONST = 5 + + +def compute_expected_data(input_data): + # demux input + even = input_data[::2] + odd = input_data[1::2] + + # multiply "even" list by MUL_CONST + even = [x * MUL_CONST for x in even] + + # add 5 to all "odd" elements + odd = [y + ADD_CONST for y in odd] + + # mux the two lists + mux = [v for t in zip(even, odd) for v in t] + + return mux + + +def main(): + + gr.log.info("Starting Buildroot Test for GNU Radio " + gr.version()) + + input_data = list(range(INPUT_LENGTH)) + + tb = gr.top_block() + + # Create Gnuradio Blocks + src = blocks.vector_source_i(input_data) + demux = blocks.deinterleave(gr.sizeof_int) + mul = blocks.multiply_const_ii(MUL_CONST) + add = blocks.add_const_ii(ADD_CONST) + mux = blocks.interleave(gr.sizeof_int) + sink = blocks.vector_sink_i() + + # Create connection in top block + tb.connect(src, demux) + tb.connect((demux, 0), mul) + tb.connect((demux, 1), add) + tb.connect(mul, (mux, 0)) + tb.connect(add, (mux, 1)) + tb.connect(mux, sink) + + tb.run() + + gnuradio_data = sink.data() + expected_data = compute_expected_data(input_data) + + # For easy debugging + if gnuradio_data != expected_data: + print("Gnuradio output:", gnuradio_data) + print("Expected output:", expected_data) + + assert gnuradio_data == expected_data + + gr.log.info("Test PASSED") + + +if __name__ == "__main__": + main() diff --git a/support/testing/tests/package/test_go.py b/support/testing/tests/package/test_go.py new file mode 100644 index 00000000..0b25fbc2 --- /dev/null +++ b/support/testing/tests/package/test_go.py @@ -0,0 +1,27 @@ +import os + +import infra.basetest + + +class TestGoBase(infra.basetest.BRTest): + + def login(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + +class TestGoSource(TestGoBase): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_CPIO=y + BR2_PACKAGE_HOST_GO=y + BR2_PACKAGE_HOST_GO_SRC=y + BR2_PACKAGE_TINIFIER=y + """ + + def test_run(self): + self.login() + self.assertRunOk("tinifier -h") diff --git a/support/testing/tests/package/test_gpsd.py b/support/testing/tests/package/test_gpsd.py new file mode 100644 index 00000000..2c44e25c --- /dev/null +++ b/support/testing/tests/package/test_gpsd.py @@ -0,0 +1,56 @@ +import os +import time + +import infra.basetest + + +class TestGpsd(infra.basetest.BRTest): + rootfs_overlay = \ + infra.filepath("tests/package/test_gpsd/rootfs-overlay") + # This test is using the gpsfake Python script. + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + f""" + BR2_PACKAGE_GPSD=y + BR2_PACKAGE_GPSD_PYTHON=y + BR2_ROOTFS_OVERLAY="{rootfs_overlay}" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # We check the program can execute. + self.assertRunOk("gpsd --version") + + # Since gpsd needs a real GPS device, we stop the service. + self.assertRunOk("/etc/init.d/S50gpsd stop") + + # We start the "gpsfake" GPS emulator instead. + cmd = "gpsfake" + cmd += " --slow --cycle 0.1 --quiet" + cmd += " /root/udp-nmea.log &> /dev/null &" + self.assertRunOk(cmd) + + # Wait a bit, to let the gpsfake and gpsd to settle... + time.sleep(3 * self.timeout_multiplier) + + # List the GPS devices. We should see our local UDP test GPS. + out, ret = self.emulator.run("gpsctl") + self.assertEqual(ret, 0) + self.assertTrue(out[0].startswith("udp://127.0.0.1")) + self.assertIn("NMEA0183", out[0]) + + # Collect some of our fake GPS data, and check we got the + # coordinates from our test data file. + # Our expected coordinates are: + # https://www.openstreetmap.org/#map=19/43.60439/1.44336 + out, ret = self.emulator.run("gpscsv --header 0 --count 3") + self.assertEqual(ret, 0) + _, gps_lat, gps_long, _ = out[0].split(",") + self.assertAlmostEqual(float(gps_lat), 43.60439) + self.assertAlmostEqual(float(gps_long), 1.44336) diff --git a/support/testing/tests/package/test_gpsd/rootfs-overlay/root/udp-nmea.log b/support/testing/tests/package/test_gpsd/rootfs-overlay/root/udp-nmea.log new file mode 100644 index 00000000..f3730da7 --- /dev/null +++ b/support/testing/tests/package/test_gpsd/rootfs-overlay/root/udp-nmea.log @@ -0,0 +1,6 @@ +# Name: NMEA 0183 messages for gpsd Buildroot test +# Transport: UDP +# For packet format, see: +# https://gpsd.gitlab.io/gpsd/NMEA.html +$GPGGA,123456.789,4336.2634,N,0126.6016,E,1,04,1.7,143.5,M,,,,*3A +$GPZDA,123456.789,20,07,2024,2,00*64 diff --git a/support/testing/tests/package/test_gst1_python.py b/support/testing/tests/package/test_gst1_python.py new file mode 100644 index 00000000..caae3e6b --- /dev/null +++ b/support/testing/tests/package/test_gst1_python.py @@ -0,0 +1,31 @@ +import os +from tests.package.test_python import TestPythonPackageBase + + +class TestGst1Python(TestPythonPackageBase): + __test__ = True + config = \ + """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM=y + BR2_PACKAGE_GSTREAMER1=y + BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOTESTSRC=y + BR2_PACKAGE_GST1_PLUGINS_BAD=y + BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DEBUGUTILS=y + BR2_PACKAGE_GST1_PYTHON=y + BR2_PACKAGE_PYTHON3=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def login(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv7", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + sample_scripts = ["tests/package/sample_gst1_python.py"] + timeout = 200 diff --git a/support/testing/tests/package/test_gzip.py b/support/testing/tests/package/test_gzip.py new file mode 100644 index 00000000..1d5f3748 --- /dev/null +++ b/support/testing/tests/package/test_gzip.py @@ -0,0 +1,13 @@ +from tests.package.test_compressor_base import TestCompressorBase + + +class TestGzip(TestCompressorBase): + __test__ = True + config = TestCompressorBase.config + \ + """ + BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y + BR2_PACKAGE_GZIP=y + """ + compress_cmd = "gzip" + decompress_cmd = "gunzip" + compressed_file_ext = ".gz" diff --git a/support/testing/tests/package/test_highway.py b/support/testing/tests/package/test_highway.py new file mode 100644 index 00000000..f32363e2 --- /dev/null +++ b/support/testing/tests/package/test_highway.py @@ -0,0 +1,22 @@ +import os + +import infra.basetest + + +class TestHighway(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_HIGHWAY=y + BR2_PACKAGE_HIGHWAY_EXAMPLES=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + self.assertRunOk("hwy_benchmark", timeout=20) diff --git a/support/testing/tests/package/test_hwloc.py b/support/testing/tests/package/test_hwloc.py new file mode 100644 index 00000000..2a776c40 --- /dev/null +++ b/support/testing/tests/package/test_hwloc.py @@ -0,0 +1,22 @@ +import os + +import infra.basetest + + +class TestHWLoc(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_HWLOC=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + self.assertRunOk("hwloc-info") + self.assertRunOk("hwloc-ls") diff --git a/support/testing/tests/package/test_iozone.py b/support/testing/tests/package/test_iozone.py new file mode 100644 index 00000000..9a9843df --- /dev/null +++ b/support/testing/tests/package/test_iozone.py @@ -0,0 +1,22 @@ +import os + +import infra.basetest + + +class TestIozone(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_IOZONE=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + self.assertRunOk("iozone -v") + self.assertRunOk("iozone -s64 -r4") diff --git a/support/testing/tests/package/test_iperf.py b/support/testing/tests/package/test_iperf.py new file mode 100644 index 00000000..31f04d98 --- /dev/null +++ b/support/testing/tests/package/test_iperf.py @@ -0,0 +1,23 @@ +import os + +import infra.basetest + + +class TestIperf(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_IPERF=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + self.assertRunOk("iperf --version") + self.assertRunOk("iperf -s -D") + self.assertRunOk("iperf -c 127.0.0.1 -t 3") diff --git a/support/testing/tests/package/test_iperf3.py b/support/testing/tests/package/test_iperf3.py new file mode 100644 index 00000000..9aac4c6f --- /dev/null +++ b/support/testing/tests/package/test_iperf3.py @@ -0,0 +1,23 @@ +import os + +import infra.basetest + + +class TestIperf3(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_IPERF3=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + self.assertRunOk("iperf3 --version") + self.assertRunOk("iperf3 -s -D") + self.assertRunOk("iperf3 -c 127.0.0.1 -t 3") diff --git a/support/testing/tests/package/test_iproute2.py b/support/testing/tests/package/test_iproute2.py new file mode 100644 index 00000000..91d9006e --- /dev/null +++ b/support/testing/tests/package/test_iproute2.py @@ -0,0 +1,77 @@ +import os + +import infra.basetest + + +class TestIpRoute2(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_IPROUTE2=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Check the program can execute. This also check we are + # actually using the version from the iproute2 package, rather + # than the BusyBox version (which does not understand this + # option). + self.assertRunOk("ip -Version") + + # We run simple invocations of iproute2 tools. + self.assertRunOk("ifstat") + self.assertRunOk("ip link show dev lo") + + # Buildroot is supposed to have setup the loopback "lo" + # interface. We should be able to ping any address in + # the 127.0.0.0/8 subnet. + addrs = ["127.0.0.1", "127.0.1.2", "127.1.2.3"] + ping_cmd = "ping -c 3 -i 0.2" + for addr in addrs: + self.assertRunOk(f"{ping_cmd} {addr}") + + # We now change this 127.0.0.1/8 to a /16. + self.assertRunOk("ip addr del 127.0.0.1/8 dev lo") + self.assertRunOk("ip addr add 127.0.0.1/16 dev lo") + + # The IPs in the 127.0.0.0/16 subnet are still supposed to + # ping... + addrs = ["127.0.0.1", "127.0.1.2"] + for addr in addrs: + self.assertRunOk(f"{ping_cmd} {addr}") + # ...but the IP outside is supposed to fail. + _, ret = self.emulator.run(f"{ping_cmd} 127.1.2.3") + self.assertNotEqual(ret, 0) + + # We add a prohibited route. + self.assertRunOk("ip route add prohibit 127.0.1.0/24") + + # Now, only 127.0.0.1 is supposed to ping... + self.assertRunOk(f"{ping_cmd} 127.0.0.1") + # ...while the other IPs expected to fail. + addrs = ["127.0.1.2", "127.1.2.3"] + for addr in addrs: + _, ret = self.emulator.run(f"{ping_cmd} {addr}") + self.assertNotEqual(ret, 0) + + # We should be able to see our prohibited route. + out, ret = self.emulator.run("ip route list") + self.assertEqual(ret, 0) + self.assertEqual(out[0].strip(), "prohibit 127.0.1.0/24") + + # We create a new network namespace, and create a new shell + # process in it. + self.assertRunOk("ip netns add br-test") + self.assertRunOk("ip netns exec br-test /bin/sh") + + # Since we are in a new namespace, we should no longer see the + # prohibited route. The route list output should be empty. + out, ret = self.emulator.run("ip route list") + self.assertEqual(ret, 0) + self.assertEqual(len(out), 0) diff --git a/support/testing/tests/package/test_iptables.py b/support/testing/tests/package/test_iptables.py new file mode 100644 index 00000000..ee57b315 --- /dev/null +++ b/support/testing/tests/package/test_iptables.py @@ -0,0 +1,78 @@ +import os + +import infra.basetest + + +class TestIptables(infra.basetest.BRTest): + # The iptables package has _LINUX_CONFIG_FIXUPS, so we cannot use + # the runtime test pre-built Kernel. We need to compile a Kernel + # to make sure it will include the required configuration. + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.82" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_PACKAGE_IPTABLES=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["console=ttyAMA0"], + options=["-M", "virt", + "-cpu", "cortex-a57", + "-m", "256M", + "-initrd", img]) + self.emulator.login() + + # We check the program can execute. + self.assertRunOk("iptables --version") + + # We delete all rules in all chains. We also set default + # policies to ACCEPT for INPUT and OUPUT chains. This should + # already be the case (default Kernel config). This makes sure + # this test starts from a known state and also those common + # command invocations works. + self.assertRunOk("iptables --flush") + self.assertRunOk("iptables --policy INPUT ACCEPT") + self.assertRunOk("iptables --policy OUTPUT ACCEPT") + + # We add a filter rule to drop all the ICMP protocol to the + # IPv4 destination 127.0.0.2, in the INPUT chain. This should + # block all pings (icmp echo-requests). + cmd = "iptables --append INPUT" + cmd += " --protocol icmp --destination 127.0.0.2 --jump DROP" + self.assertRunOk(cmd) + + # We check we can list rules. + self.assertRunOk("iptables --list") + + # A ping to 127.0.0.1 is expected to work, because it's not + # matching our rule. We expect 3 replies (-c), with 0.5s + # internal (-i), and set a maximum timeout of 2s. + ping_cmd_prefix = "ping -c 3 -i 0.5 -W 2 " + self.assertRunOk(ping_cmd_prefix + "127.0.0.1") + + # A ping to 127.0.0.2 is expected to fail, because our rule is + # supposed to drop it. + ping_test_cmd = ping_cmd_prefix + "127.0.0.2" + _, exit_code = self.emulator.run(ping_test_cmd) + self.assertNotEqual(exit_code, 0) + + # We delete our only rule #1 in the INPUT chain. + self.assertRunOk("iptables --delete INPUT 1") + + # Since we deleted the rule, the ping test command which was + # supposed to fail earlier is now supposed to succeed. + self.assertRunOk(ping_test_cmd) diff --git a/support/testing/tests/package/test_ipython.py b/support/testing/tests/package/test_ipython.py new file mode 100644 index 00000000..50b00da7 --- /dev/null +++ b/support/testing/tests/package/test_ipython.py @@ -0,0 +1,22 @@ +from tests.package.test_python import TestPythonBase +# +# The following pythong tests are not being used here: +# +# - version_test: IPython does not support --version option +# +# - zlib_test: IPython does not return a non-zero code the way CPython +# does, so this test ends up being a false-negative + + +class TestIPythonPy3(TestPythonBase): + config = TestPythonBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_IPYTHON=y + """ + interpreter = "ipython" + + def test_run(self): + self.login() + self.math_floor_test(40) + self.libc_time_test(40) diff --git a/support/testing/tests/package/test_jailhouse.py b/support/testing/tests/package/test_jailhouse.py new file mode 100644 index 00000000..4634fc4d --- /dev/null +++ b/support/testing/tests/package/test_jailhouse.py @@ -0,0 +1,103 @@ +import os +import time + +import infra.basetest + + +class TestJailhouse(infra.basetest.BRTest): + # This test uses a specific configuration, mainly for matching the + # requirements of the Jailhouse Qemu inmate demo. We also use the + # Linux kernel from Siemens, which includes patches for + # Jailhouse. Finally, we use the kernel config from + # board/qemu/aarch64-virt rather than the Kernel defconfig, for + # faster build (as it enable less components, but includes + # everything needed for this test). + kernel_ver = "eb6927f7eea77f823b96c0c22ad9d4a2d7ffdfce" + kernel_url = \ + f"$(call github,siemens,linux,{kernel_ver})/linux-{kernel_ver}.tar.gz" + config = \ + f""" + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_TARBALL=y + BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="{kernel_url}" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_PACKAGE_JAILHOUSE=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_4=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + drive = os.path.join(self.builddir, "images", "rootfs.ext4") + kern = os.path.join(self.builddir, "images", "Image") + # Qemu option and Kernel args are taken from Jailhouse demo. See: + # https://github.com/siemens/jailhouse/blob/master/README.md + # We also add oops=panic to improve the test coverage. + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["root=/dev/vda console=ttyAMA0 mem=768M oops=panic"], + options=["-M", "virt,gic-version=3,virtualization=on,its=off", + "-cpu", "cortex-a57", + "-m", "1G", + "-smp", "16", + "-drive", f"file={drive},if=none,format=raw,id=hd0", + "-device", "virtio-blk-device,drive=hd0"]) + self.emulator.login() + + # Check the program can execute. + self.assertRunOk("jailhouse --version") + + # Load the kernel module. + self.assertRunOk("modprobe jailhouse") + + # Check the device is present. + self.assertRunOk("ls -al /dev/jailhouse") + + # Load the cell config this this qemu test. + self.assertRunOk("jailhouse enable /etc/jailhouse/qemu-arm64.cell") + + # Dump the jailhouse console, and check we see its + # initialization string. + out, ret = self.emulator.run("jailhouse console") + self.assertEqual(ret, 0) + self.assertIn("Initializing Jailhouse hypervisor", "\n".join(out)) + + # Create the cell. + cell_cfg = "/etc/jailhouse/qemu-arm64-inmate-demo.cell" + cmd = f"jailhouse cell create {cell_cfg}" + self.assertRunOk(cmd) + + # Load the demo image. + cell_name = "inmate-demo" + img = "/usr/libexec/jailhouse/demos/gic-demo.bin" + cmd = f"jailhouse cell load {cell_name} {img}" + self.assertRunOk(cmd) + + # List Jailhouse cells and check we see the one we loaded. + out, ret = self.emulator.run("jailhouse cell list") + self.assertEqual(ret, 0) + self.assertIn(cell_name, "\n".join(out)) + + # We should also see our cell in sysfs. + cmd = "cat /sys/devices/jailhouse/cells/1/name" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertEqual(out[0], cell_name) + + # Start the cell. + self.assertRunOk(f"jailhouse cell start {cell_name}") + + # Let the demo cell run for few seconds... + time.sleep(3) + + # Stop and unload the cell. + self.assertRunOk(f"jailhouse cell shutdown {cell_name}") + self.assertRunOk(f"jailhouse cell destroy {cell_name}") + + # Stop and unload jailhouse. + self.assertRunOk("jailhouse disable") + self.assertRunOk("modprobe -r jailhouse") diff --git a/support/testing/tests/package/test_jq.py b/support/testing/tests/package/test_jq.py new file mode 100644 index 00000000..67420abb --- /dev/null +++ b/support/testing/tests/package/test_jq.py @@ -0,0 +1,62 @@ +import json +import os + +import infra.basetest + + +class TestJq(infra.basetest.BRTest): + rootfs_overlay = \ + infra.filepath("tests/package/test_jq/rootfs-overlay") + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + f""" + BR2_PACKAGE_JQ=y + BR2_ROOTFS_OVERLAY="{rootfs_overlay}" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Check the program can execute. + self.assertRunOk("jq --version") + + # Run jq on examples extracted from JSON RFC: + # https://www.rfc-editor.org/rfc/rfc8259.txt + for i in range(1, 6): + fname = f"ex13-{i}.json" + cmd = f"jq -M '.' {fname}" + self.assertRunOk(cmd) + + # Check the execution fails on a non JSON file. + cmd = "jq -M '.' broken.json" + _, ret = self.emulator.run(cmd) + self.assertNotEqual(ret, 0) + + # Check an execution of a simple query. Note that output is a + # JSON (quoted) string. + cmd = "jq -M '.[1].City' ex13-2.json" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertEqual(out[0], '"SUNNYVALE"') + + # Run the same query with the -r option, to output raw text + # (i.e. strings without quotes). + cmd = "jq -r -M '.[1].City' ex13-2.json" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertEqual(out[0], "SUNNYVALE") + + # Print the ex13-2.json file as compact JSON (with option -c). + cmd = "jq -c -M '.' ex13-2.json" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + # We reload this compact string using the Python json parser, + # to test interoperability. We check the same element as in + # previous queries in the Python object. + json_data = json.loads(out[0]) + self.assertEqual(json_data[1]["City"], "SUNNYVALE") diff --git a/support/testing/tests/package/test_jq/rootfs-overlay/root/broken.json b/support/testing/tests/package/test_jq/rootfs-overlay/root/broken.json new file mode 100644 index 00000000..fc2bf945 --- /dev/null +++ b/support/testing/tests/package/test_jq/rootfs-overlay/root/broken.json @@ -0,0 +1 @@ +[ This is is NOT a JSON file! } diff --git a/support/testing/tests/package/test_jq/rootfs-overlay/root/ex13-1.json b/support/testing/tests/package/test_jq/rootfs-overlay/root/ex13-1.json new file mode 100644 index 00000000..52b7b649 --- /dev/null +++ b/support/testing/tests/package/test_jq/rootfs-overlay/root/ex13-1.json @@ -0,0 +1,14 @@ +{ + "Image": { + "Width": 800, + "Height": 600, + "Title": "View from 15th Floor", + "Thumbnail": { + "Url": "http://www.example.com/image/481989943", + "Height": 125, + "Width": 100 + }, + "Animated" : false, + "IDs": [116, 943, 234, 38793] + } +} diff --git a/support/testing/tests/package/test_jq/rootfs-overlay/root/ex13-2.json b/support/testing/tests/package/test_jq/rootfs-overlay/root/ex13-2.json new file mode 100644 index 00000000..b4545b28 --- /dev/null +++ b/support/testing/tests/package/test_jq/rootfs-overlay/root/ex13-2.json @@ -0,0 +1,22 @@ +[ + { + "precision": "zip", + "Latitude": 37.7668, + "Longitude": -122.3959, + "Address": "", + "City": "SAN FRANCISCO", + "State": "CA", + "Zip": "94107", + "Country": "US" + }, + { + "precision": "zip", + "Latitude": 37.371991, + "Longitude": -122.026020, + "Address": "", + "City": "SUNNYVALE", + "State": "CA", + "Zip": "94085", + "Country": "US" + } +] diff --git a/support/testing/tests/package/test_jq/rootfs-overlay/root/ex13-3.json b/support/testing/tests/package/test_jq/rootfs-overlay/root/ex13-3.json new file mode 100644 index 00000000..6ccebb9a --- /dev/null +++ b/support/testing/tests/package/test_jq/rootfs-overlay/root/ex13-3.json @@ -0,0 +1 @@ +"Hello world!" diff --git a/support/testing/tests/package/test_jq/rootfs-overlay/root/ex13-4.json b/support/testing/tests/package/test_jq/rootfs-overlay/root/ex13-4.json new file mode 100644 index 00000000..d81cc071 --- /dev/null +++ b/support/testing/tests/package/test_jq/rootfs-overlay/root/ex13-4.json @@ -0,0 +1 @@ +42 diff --git a/support/testing/tests/package/test_jq/rootfs-overlay/root/ex13-5.json b/support/testing/tests/package/test_jq/rootfs-overlay/root/ex13-5.json new file mode 100644 index 00000000..27ba77dd --- /dev/null +++ b/support/testing/tests/package/test_jq/rootfs-overlay/root/ex13-5.json @@ -0,0 +1 @@ +true diff --git a/support/testing/tests/package/test_kexec.py b/support/testing/tests/package/test_kexec.py new file mode 100644 index 00000000..51d43b05 --- /dev/null +++ b/support/testing/tests/package/test_kexec.py @@ -0,0 +1,100 @@ +import os + +import infra.basetest + + +class TestKexec(infra.basetest.BRTest): + + # A specific configuration is needed for using kexec: + # - We use Aarch64 since it is well supported for kexec, + # - A kernel config fragment enables all the kexec parts, + # - The kernel Image is installed on target filesystem to be + # reloaded through kexec, + # - We use a ext4 rootfs image exposed as a virtio storage (rather + # than cpio initrd). This avoids needing to install the initrd + # inside the rootfs. + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.15" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" + BR2_LINUX_KERNEL_DTS_SUPPORT=y + BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="{}" + BR2_LINUX_KERNEL_INSTALL_TARGET=y + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_PACKAGE_KEXEC=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_4=y + # BR2_TARGET_ROOTFS_TAR is not set + """.format( + infra.filepath("tests/package/test_kexec/linux-kexec.fragment"), + infra.filepath("tests/package/test_kexec/qemu-aarch64-virt-5.2-machine.dts") + ) + + def test_run(self): + hda = os.path.join(self.builddir, "images", "rootfs.ext4") + kern = os.path.join(self.builddir, "images", "Image") + dtb = os.path.join(self.builddir, "images", "qemu-aarch64-virt-5.2-machine.dtb") + # Notes: + # Sufficient memory is needed to load the kernel: having at + # least 512MB works. kexec could silently fail if not enough + # memory is present. KASLR needs to be disabled for the test: + # we pass "nokaslr" to kernel bootargs, and also pass a custom + # devicetree to qemu virt machine. This devicetree is based on + # qemu aarch64 5.2 dts with kaslr-seed set 0. + # With newer qemu >= 7.0 we can disable KASLR from the qemu + # command line using "dtb-kaslr-seed=off". + bootargs = ["root=/dev/vda console=ttyAMA0 nokaslr"] + qemu_opts = ["-M", "virt", "-dtb", dtb, "-cpu", "cortex-a57", "-m", "512M", + "-drive", f"file={hda},if=virtio,format=raw"] + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=bootargs, + options=qemu_opts) + self.emulator.login() + + # Test the program can execute + self.assertRunOk("kexec --version") + + # Check the kexec kernel is NOT loaded: + self.assertRunOk("test \"$(cat /sys/kernel/kexec_loaded)\" -eq 0") + + # Load the Kernel: + # "--append br-test" adds a dummy kernel args we'll be able to + # check in the second executed kernel. + # We use the dtb image from /sys/firmware/fdt (since we don't + # have the dtb file in the system) + self.assertRunOk("kexec -d -l --dtb=/sys/firmware/fdt --reuse-cmdline --serial=ttyAMA0 --append=br-test /boot/Image") + + # Check the kexec kernel IS loaded: + self.assertRunOk("test \"$(cat /sys/kernel/kexec_loaded)\" -eq 1") + + # Create a marker file in tmpfs which is supposed to disappear + # after kexec kernel restart. + self.assertRunOk("touch /dev/shm/br-kexec-marker") + + # Execute the loaded kernel (i.e perform a kexec reboot) + # qemu.sendline() is used here because no exit code nor + # program return is expected, since kexec is like a + # reboot. The login is expected to be reached after the + # command is issued. + self.emulator.qemu.sendline("kexec -d -e") + + # Wait for the login, and log again + self.emulator.login() + + # Check the "br-test" dummy kernel arg is present + self.assertRunOk("grep br-test /proc/cmdline") + + # Check the test marker file is no longer here + self.assertRunOk("test ! -e /dev/shm/br-kexec-marker") + + # After restart, the kernel is not supposed to have a kexec + # loaded image: + self.assertRunOk("test \"$(cat /sys/kernel/kexec_loaded)\" -eq 0") diff --git a/support/testing/tests/package/test_kexec/linux-kexec.fragment b/support/testing/tests/package/test_kexec/linux-kexec.fragment new file mode 100644 index 00000000..04c65f5c --- /dev/null +++ b/support/testing/tests/package/test_kexec/linux-kexec.fragment @@ -0,0 +1,5 @@ +CONFIG_KEXEC=y +CONFIG_KEXEC_FILE=y +CONFIG_PROC_KCORE=y +CONFIG_DEBUG_KERNEL=y +CONFIG_KALLSYMS_ALL=y diff --git a/support/testing/tests/package/test_kexec/qemu-aarch64-virt-5.2-machine.dts b/support/testing/tests/package/test_kexec/qemu-aarch64-virt-5.2-machine.dts new file mode 100644 index 00000000..ad96a51c --- /dev/null +++ b/support/testing/tests/package/test_kexec/qemu-aarch64-virt-5.2-machine.dts @@ -0,0 +1,373 @@ +/dts-v1/; + +/ { + interrupt-parent = <0x8001>; + #size-cells = <0x02>; + #address-cells = <0x02>; + compatible = "linux,dummy-virt"; + + psci { + migrate = <0x84000005>; + cpu_on = <0x84000003>; + cpu_off = <0x84000002>; + cpu_suspend = <0x84000001>; + method = "hvc"; + compatible = "arm,psci-0.2\0arm,psci"; + }; + + memory@40000000 { + reg = <0x00 0x40000000 0x00 0x8000000>; + device_type = "memory"; + }; + + platform@c000000 { + interrupt-parent = <0x8001>; + ranges = <0x00 0x00 0xc000000 0x2000000>; + #address-cells = <0x01>; + #size-cells = <0x01>; + compatible = "qemu,platform\0simple-bus"; + }; + + fw-cfg@9020000 { + dma-coherent; + reg = <0x00 0x9020000 0x00 0x18>; + compatible = "qemu,fw-cfg-mmio"; + }; + + virtio_mmio@a000000 { + dma-coherent; + interrupts = <0x00 0x10 0x01>; + reg = <0x00 0xa000000 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a000200 { + dma-coherent; + interrupts = <0x00 0x11 0x01>; + reg = <0x00 0xa000200 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a000400 { + dma-coherent; + interrupts = <0x00 0x12 0x01>; + reg = <0x00 0xa000400 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a000600 { + dma-coherent; + interrupts = <0x00 0x13 0x01>; + reg = <0x00 0xa000600 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a000800 { + dma-coherent; + interrupts = <0x00 0x14 0x01>; + reg = <0x00 0xa000800 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a000a00 { + dma-coherent; + interrupts = <0x00 0x15 0x01>; + reg = <0x00 0xa000a00 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a000c00 { + dma-coherent; + interrupts = <0x00 0x16 0x01>; + reg = <0x00 0xa000c00 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a000e00 { + dma-coherent; + interrupts = <0x00 0x17 0x01>; + reg = <0x00 0xa000e00 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a001000 { + dma-coherent; + interrupts = <0x00 0x18 0x01>; + reg = <0x00 0xa001000 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a001200 { + dma-coherent; + interrupts = <0x00 0x19 0x01>; + reg = <0x00 0xa001200 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a001400 { + dma-coherent; + interrupts = <0x00 0x1a 0x01>; + reg = <0x00 0xa001400 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a001600 { + dma-coherent; + interrupts = <0x00 0x1b 0x01>; + reg = <0x00 0xa001600 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a001800 { + dma-coherent; + interrupts = <0x00 0x1c 0x01>; + reg = <0x00 0xa001800 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a001a00 { + dma-coherent; + interrupts = <0x00 0x1d 0x01>; + reg = <0x00 0xa001a00 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a001c00 { + dma-coherent; + interrupts = <0x00 0x1e 0x01>; + reg = <0x00 0xa001c00 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a001e00 { + dma-coherent; + interrupts = <0x00 0x1f 0x01>; + reg = <0x00 0xa001e00 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a002000 { + dma-coherent; + interrupts = <0x00 0x20 0x01>; + reg = <0x00 0xa002000 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a002200 { + dma-coherent; + interrupts = <0x00 0x21 0x01>; + reg = <0x00 0xa002200 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a002400 { + dma-coherent; + interrupts = <0x00 0x22 0x01>; + reg = <0x00 0xa002400 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a002600 { + dma-coherent; + interrupts = <0x00 0x23 0x01>; + reg = <0x00 0xa002600 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a002800 { + dma-coherent; + interrupts = <0x00 0x24 0x01>; + reg = <0x00 0xa002800 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a002a00 { + dma-coherent; + interrupts = <0x00 0x25 0x01>; + reg = <0x00 0xa002a00 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a002c00 { + dma-coherent; + interrupts = <0x00 0x26 0x01>; + reg = <0x00 0xa002c00 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a002e00 { + dma-coherent; + interrupts = <0x00 0x27 0x01>; + reg = <0x00 0xa002e00 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a003000 { + dma-coherent; + interrupts = <0x00 0x28 0x01>; + reg = <0x00 0xa003000 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a003200 { + dma-coherent; + interrupts = <0x00 0x29 0x01>; + reg = <0x00 0xa003200 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a003400 { + dma-coherent; + interrupts = <0x00 0x2a 0x01>; + reg = <0x00 0xa003400 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a003600 { + dma-coherent; + interrupts = <0x00 0x2b 0x01>; + reg = <0x00 0xa003600 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a003800 { + dma-coherent; + interrupts = <0x00 0x2c 0x01>; + reg = <0x00 0xa003800 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a003a00 { + dma-coherent; + interrupts = <0x00 0x2d 0x01>; + reg = <0x00 0xa003a00 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a003c00 { + dma-coherent; + interrupts = <0x00 0x2e 0x01>; + reg = <0x00 0xa003c00 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@a003e00 { + dma-coherent; + interrupts = <0x00 0x2f 0x01>; + reg = <0x00 0xa003e00 0x00 0x200>; + compatible = "virtio,mmio"; + }; + + gpio-keys { + #address-cells = <0x01>; + #size-cells = <0x00>; + compatible = "gpio-keys"; + + poweroff { + gpios = <0x8003 0x03 0x00>; + linux,code = <0x74>; + label = "GPIO Key Poweroff"; + }; + }; + + pl061@9030000 { + phandle = <0x8003>; + clock-names = "apb_pclk"; + clocks = <0x8000>; + interrupts = <0x00 0x07 0x04>; + gpio-controller; + #gpio-cells = <0x02>; + compatible = "arm,pl061\0arm,primecell"; + reg = <0x00 0x9030000 0x00 0x1000>; + }; + + pcie@10000000 { + interrupt-map-mask = <0x1800 0x00 0x00 0x07>; + interrupt-map = <0x00 0x00 0x00 0x01 0x8001 0x00 0x00 0x00 0x03 0x04 0x00 0x00 0x00 0x02 0x8001 0x00 0x00 0x00 0x04 0x04 0x00 0x00 0x00 0x03 0x8001 0x00 0x00 0x00 0x05 0x04 0x00 0x00 0x00 0x04 0x8001 0x00 0x00 0x00 0x06 0x04 0x800 0x00 0x00 0x01 0x8001 0x00 0x00 0x00 0x04 0x04 0x800 0x00 0x00 0x02 0x8001 0x00 0x00 0x00 0x05 0x04 0x800 0x00 0x00 0x03 0x8001 0x00 0x00 0x00 0x06 0x04 0x800 0x00 0x00 0x04 0x8001 0x00 0x00 0x00 0x03 0x04 0x1000 0x00 0x00 0x01 0x8001 0x00 0x00 0x00 0x05 0x04 0x1000 0x00 0x00 0x02 0x8001 0x00 0x00 0x00 0x06 0x04 0x1000 0x00 0x00 0x03 0x8001 0x00 0x00 0x00 0x03 0x04 0x1000 0x00 0x00 0x04 0x8001 0x00 0x00 0x00 0x04 0x04 0x1800 0x00 0x00 0x01 0x8001 0x00 0x00 0x00 0x06 0x04 0x1800 0x00 0x00 0x02 0x8001 0x00 0x00 0x00 0x03 0x04 0x1800 0x00 0x00 0x03 0x8001 0x00 0x00 0x00 0x04 0x04 0x1800 0x00 0x00 0x04 0x8001 0x00 0x00 0x00 0x05 0x04>; + #interrupt-cells = <0x01>; + ranges = <0x1000000 0x00 0x00 0x00 0x3eff0000 0x00 0x10000 0x2000000 0x00 0x10000000 0x00 0x10000000 0x00 0x2eff0000 0x3000000 0x80 0x00 0x80 0x00 0x80 0x00>; + reg = <0x40 0x10000000 0x00 0x10000000>; + msi-parent = <0x8002>; + dma-coherent; + bus-range = <0x00 0xff>; + linux,pci-domain = <0x00>; + #size-cells = <0x02>; + #address-cells = <0x03>; + device_type = "pci"; + compatible = "pci-host-ecam-generic"; + }; + + pl031@9010000 { + clock-names = "apb_pclk"; + clocks = <0x8000>; + interrupts = <0x00 0x02 0x04>; + reg = <0x00 0x9010000 0x00 0x1000>; + compatible = "arm,pl031\0arm,primecell"; + }; + + pl011@9000000 { + clock-names = "uartclk\0apb_pclk"; + clocks = <0x8000 0x8000>; + interrupts = <0x00 0x01 0x04>; + reg = <0x00 0x9000000 0x00 0x1000>; + compatible = "arm,pl011\0arm,primecell"; + }; + + pmu { + }; + + intc@8000000 { + phandle = <0x8001>; + reg = <0x00 0x8000000 0x00 0x10000 0x00 0x8010000 0x00 0x10000>; + compatible = "arm,cortex-a15-gic"; + ranges; + #size-cells = <0x02>; + #address-cells = <0x02>; + interrupt-controller; + #interrupt-cells = <0x03>; + + v2m@8020000 { + phandle = <0x8002>; + reg = <0x00 0x8020000 0x00 0x1000>; + msi-controller; + compatible = "arm,gic-v2m-frame"; + }; + }; + + flash@0 { + bank-width = <0x04>; + reg = <0x00 0x00 0x00 0x4000000 0x00 0x4000000 0x00 0x4000000>; + compatible = "cfi-flash"; + }; + + cpus { + #size-cells = <0x00>; + #address-cells = <0x01>; + + cpu@0 { + reg = <0x00>; + compatible = "arm,cortex-a15"; + device_type = "cpu"; + }; + }; + + timer { + interrupts = <0x01 0x0d 0x104 0x01 0x0e 0x104 0x01 0x0b 0x104 0x01 0x0a 0x104>; + always-on; + compatible = "arm,armv7-timer"; + }; + + apb-pclk { + phandle = <0x8000>; + clock-output-names = "clk24mhz"; + clock-frequency = <0x16e3600>; + #clock-cells = <0x00>; + compatible = "fixed-clock"; + }; + + chosen { + stdout-path = "/pl011@9000000"; + /* Buildroot specific: KASLR needs to be disabled for the Kexec test. */ + kaslr-seed = <0 0>; + }; +}; diff --git a/support/testing/tests/package/test_kmod.py b/support/testing/tests/package/test_kmod.py new file mode 100644 index 00000000..1d9ea535 --- /dev/null +++ b/support/testing/tests/package/test_kmod.py @@ -0,0 +1,97 @@ +import os + +import infra.basetest + + +class TestKmod(infra.basetest.BRTest): + # This test uses the "virtio_net" driver compiled as a module. We + # need to recompile a Kernel for that. + kernel_fragment = \ + infra.filepath("tests/package/test_kmod/linux-virtio-net.fragment") + config = \ + f""" + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.35" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{kernel_fragment}" + BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y + BR2_PACKAGE_KMOD=y + BR2_PACKAGE_KMOD_TOOLS=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_4=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + drive = os.path.join(self.builddir, "images", "rootfs.ext4") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["root=/dev/vda console=ttyAMA0"], + options=["-M", "virt", + "-cpu", "cortex-a57", + "-m", "256M", + "-drive", f"file={drive},if=virtio,format=raw"]) + self.emulator.login() + + # We check the kmod program can run. Busybox does not have a + # kmod applet, so there is no possible confusion. + self.assertRunOk("kmod --version") + + # We check the "modprobe" is the one from kmod, rather than + # the Busybox applet version. + out, ret = self.emulator.run("modprobe --version") + self.assertEqual(ret, 0) + self.assertTrue(out[0].startswith("kmod version")) + + # List modules with "kmod list", the virtio-net module should + # NOT be loaded yet. + out, ret = self.emulator.run("kmod list") + self.assertEqual(ret, 0) + self.assertNotIn("virtio_net", "\n".join(out)) + + # Get module info with modinfo. + out, ret = self.emulator.run("modinfo virtio-net") + self.assertEqual(ret, 0) + lsmod_out = "\n".join(out) + self.assertRegex(lsmod_out, r'name: *virtio_net') + self.assertRegex(lsmod_out, r'description: *Virtio network driver') + + # With this test configuration, we are not supposed to have an + # eth0 Ethernet interface yet. Attempting to show info on this + # interface is expected to fail . + _, ret = self.emulator.run("ip link show dev eth0") + self.assertNotEqual(ret, 0) + + # We try to load the module. + self.assertRunOk("modprobe virtio-net") + + # We should now see the module in the list. This time, we use + # the "lsmod" command. + out, ret = self.emulator.run("lsmod") + self.assertEqual(ret, 0) + self.assertIn("virtio_net", "\n".join(out)) + + # The eth0 interface is supposed to be available, after the + # module loading. We configure the emulator user network to + # test the driver networking functionality. See: + # https://wiki.qemu.org/Documentation/Networking + self.assertRunOk("ip addr add dev eth0 10.0.2.15/24") + self.assertRunOk("ip link set dev eth0 up") + + # We check we can ping the emulator. + ping_cmd = "ping -i 0.3 -c 2 10.0.2.2" + self.assertRunOk(ping_cmd) + + # We check we can unload the driver. + self.assertRunOk("modprobe -r virtio-net") + + # Now the driver is unloaded, we should no longer be able to + # ping the emulator. + _, ret = self.emulator.run(ping_cmd) + self.assertNotEqual(ret, 0) diff --git a/support/testing/tests/package/test_kmod/linux-virtio-net.fragment b/support/testing/tests/package/test_kmod/linux-virtio-net.fragment new file mode 100644 index 00000000..170da19d --- /dev/null +++ b/support/testing/tests/package/test_kmod/linux-virtio-net.fragment @@ -0,0 +1 @@ +CONFIG_VIRTIO_NET=m diff --git a/support/testing/tests/package/test_kmscube.py b/support/testing/tests/package/test_kmscube.py new file mode 100644 index 00000000..0ddeb679 --- /dev/null +++ b/support/testing/tests/package/test_kmscube.py @@ -0,0 +1,45 @@ +import os + +import infra.basetest + + +class TestKmsCube(infra.basetest.BRTest): + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.44" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" + BR2_PACKAGE_KMSCUBE=y + BR2_PACKAGE_LIBDRM=y + BR2_PACKAGE_MESA3D=y + BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y + BR2_PACKAGE_MESA3D_LLVM=y + BR2_PACKAGE_MESA3D_OPENGL_EGL=y + BR2_PACKAGE_MESA3D_OPENGL_ES=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + # BR2_TARGET_ROOTFS_TAR is not set + """.format( + infra.filepath("tests/package/test_kmscube/linux-vkms.fragment")) + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["console=ttyAMA0"], + options=["-M", "virt", + "-cpu", "cortex-a57", + "-smp", "4", + "-m", "256M", + "-initrd", img]) + self.emulator.login() + + cmd = "kmscube --vmode=640x480 --count=10" + self.assertRunOk(cmd, timeout=30) diff --git a/support/testing/tests/package/test_kmscube/linux-vkms.fragment b/support/testing/tests/package/test_kmscube/linux-vkms.fragment new file mode 100644 index 00000000..ec2ed446 --- /dev/null +++ b/support/testing/tests/package/test_kmscube/linux-vkms.fragment @@ -0,0 +1 @@ +CONFIG_DRM_VKMS=y diff --git a/support/testing/tests/package/test_lame.py b/support/testing/tests/package/test_lame.py new file mode 100644 index 00000000..bffb1167 --- /dev/null +++ b/support/testing/tests/package/test_lame.py @@ -0,0 +1,20 @@ +from tests.package.test_audio_codec_base import TestAudioCodecBase + + +class TestLame(TestAudioCodecBase): + __test__ = True + config = TestAudioCodecBase.config + \ + """ + BR2_PACKAGE_LAME=y + """ + encoded_file = "encoded.mp3" + + def encode_test(self, input_filename): + cmd = "lame --quiet" + cmd += f" {input_filename} {self.encoded_file}" + self.assertRunOk(cmd) + + def decode_test(self, output_filename): + cmd = "lame --quiet --decode" + cmd += f" {self.encoded_file} {output_filename}" + self.assertRunOk(cmd) diff --git a/support/testing/tests/package/test_less.py b/support/testing/tests/package/test_less.py new file mode 100644 index 00000000..3d8c4fc9 --- /dev/null +++ b/support/testing/tests/package/test_less.py @@ -0,0 +1,57 @@ +import os + +import infra.basetest + + +class TestLess(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y + BR2_PACKAGE_LESS=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Check the program can execute. This command also checks that + # the "less" program is from the actual "less" package, rather + # than the Busybox implementation (the Busybox "less" applet + # does not recognize the "--version" option and would fail). + self.assertRunOk("less --version") + + # We create a test file. + ref_txt = "Hello Buildroot!" + input_fname = "input.txt" + self.assertRunOk(f"echo \'{ref_txt}\' > {input_fname}") + + # "less" is mainly an interactive user program and uses + # terminal control characters. This test checks a basic "less" + # invocation in which there is no user interaction. The + # program is expected to give back the input data. + output, exit_code = self.emulator.run(f"less -F {input_fname}") + self.assertEqual(exit_code, 0) + # "less" might insert a carriage-return ^M control character, + # which will be converted to a new-line (by the + # str.splitlines() in Emulator.run()). We check that our + # reference text line is in the output (rather than only + # testing output[0]). + self.assertIn(ref_txt, output) + + # We redo about the same test, with "less" reading stdin this + # time. We also use the "less -o log" option to log the output + # into a file. We expect to see our reference text on stdout. + output_fname = "output.txt" + cmd = f"cat {input_fname} | less -F -o {output_fname}" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertIn(ref_txt, output) + + # The output file content which logged the output is also + # expected to be the same as the input. + self.assertRunOk(f"cmp {input_fname} {output_fname}") diff --git a/support/testing/tests/package/test_libcamera.py b/support/testing/tests/package/test_libcamera.py new file mode 100644 index 00000000..8953021b --- /dev/null +++ b/support/testing/tests/package/test_libcamera.py @@ -0,0 +1,79 @@ +import os + +import infra.basetest + + +class TestLibCamera(infra.basetest.BRTest): + # A specific configuration is needed for testing libcamera: + # a kernel config fragment enables v4l2 vimc driver. + # The libevent package is also enabled to have the libcamera "cam" + # test application. + kernel_fragment = \ + infra.filepath("tests/package/test_libcamera/linux-vimc.fragment") + config = \ + f""" + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.76" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{kernel_fragment}" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_PACKAGE_LIBCAMERA=y + BR2_PACKAGE_LIBCAMERA_PIPELINE_VIMC=y + BR2_PACKAGE_LIBEVENT=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["console=ttyAMA0"], + options=["-M", "virt", "-cpu", "cortex-a57", "-m", "256M", + "-initrd", img]) + self.emulator.login() + + # The Kernel config of this test has only one v4l2 vimc + # driver. The camera index is expected to be #1. + cam_idx = 1 + + # We test libcamera with its simple "cam" application, by + # requesting a list of available cameras. + cmd = "cam --list" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + # libcamera generates info messages. We filter only the + # line(s) starting with our camera index. + cam_line = [ln for ln in out if ln.startswith(f"{cam_idx}:")] + # We should have the vimc camera in this line. + self.assertIn("platform/vimc.0", cam_line[0]) + + # List the camera information. + cmd = f"cam --camera {cam_idx} --info" + self.assertRunOk(cmd) + + # List the camera controls and check we have a brightness + # control. + cmd = f"cam --camera {cam_idx} --list-controls" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertIn("Control: Brightness:", "\n".join(out)) + + # List the camera properties and check we have a camera + # "Model" property. + cmd = f"cam --camera {cam_idx} --list-properties" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertIn("Property: Model = ", "\n".join(out)) + + # Capture few frames. + cmd = f"cam --camera {cam_idx} --capture=5" + cmd += " --stream width=160,height=120,role=video,pixelformat=RGB888" + self.assertRunOk(cmd) diff --git a/support/testing/tests/package/test_libcamera/linux-vimc.fragment b/support/testing/tests/package/test_libcamera/linux-vimc.fragment new file mode 100644 index 00000000..04436e75 --- /dev/null +++ b/support/testing/tests/package/test_libcamera/linux-vimc.fragment @@ -0,0 +1,4 @@ +CONFIG_MEDIA_SUPPORT=y +CONFIG_MEDIA_TEST_SUPPORT=y +CONFIG_V4L_TEST_DRIVERS=y +CONFIG_VIDEO_VIMC=y diff --git a/support/testing/tests/package/test_libftdi1.py b/support/testing/tests/package/test_libftdi1.py new file mode 100644 index 00000000..5c29dea0 --- /dev/null +++ b/support/testing/tests/package/test_libftdi1.py @@ -0,0 +1,13 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Libftdi1(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_LIBFTDI1=y + BR2_PACKAGE_LIBFTDI1_PYTHON_BINDINGS=y + """ + sample_scripts = ["tests/package/sample_libftdi1.py"] + timeout = 40 diff --git a/support/testing/tests/package/test_libgpgme.py b/support/testing/tests/package/test_libgpgme.py new file mode 100644 index 00000000..b4978912 --- /dev/null +++ b/support/testing/tests/package/test_libgpgme.py @@ -0,0 +1,88 @@ +import os + +import infra.basetest + + +class TestLibGpgme(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_LIBGPGME=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # We check the binary program can execute. + self.assertRunOk("gpgme-tool --version") + + # Some common data for all the tests. + plain_data = "Hello Buildroot!" + gpg_userid = "br-test@buildroot" + plain_file = "reference-plain.txt" + enc_file = "encrypted.dat" + dec_file = "decrypted.txt" + + # We did not create a gpg key yet. We should not be able to + # list our key. + gpgme_listkey = f"echo LISTKEYS | gpgme-tool | grep '{gpg_userid}'" + _, exit_code = self.emulator.run(gpgme_listkey) + self.assertNotEqual(exit_code, 0) + + # We now create our gpg key. + cmd = "gpg --batch --passphrase ''" + cmd += f" --quick-generate-key {gpg_userid} default default" + self.assertRunOk(cmd, timeout=30) + + # We should now see our key in the list. + self.assertRunOk(gpgme_listkey) + + # We generate a plain text data file. + cmd = f"echo '{plain_data}' > {plain_file}" + self.assertRunOk(cmd) + + # We encrypt the plain text file using gpgme-tool commands. + gpgme_enc_cmds = [ + "RESET", + f"INPUT FILE={plain_file}", + f"OUTPUT FILE={enc_file}", + f"RECIPIENT {gpg_userid}", + "ENCRYPT", + "BYE" + ] + cmd = "gpgme-tool < + + + Buildroot Test Page + + +

    Hello Buildroot !

    + + diff --git a/support/testing/tests/package/test_lpeg.py b/support/testing/tests/package/test_lpeg.py new file mode 100644 index 00000000..4e1ee343 --- /dev/null +++ b/support/testing/tests/package/test_lpeg.py @@ -0,0 +1,27 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaLPeg(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LPEG=y + """ + + def test_run(self): + self.login() + self.module_test("lpeg") + self.module_test("re") + + +class TestLuajitLPeg(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_LPEG=y + """ + + def test_run(self): + self.login() + self.module_test("lpeg") + self.module_test("re") diff --git a/support/testing/tests/package/test_lrzip.py b/support/testing/tests/package/test_lrzip.py new file mode 100644 index 00000000..31559d4e --- /dev/null +++ b/support/testing/tests/package/test_lrzip.py @@ -0,0 +1,12 @@ +from tests.package.test_compressor_base import TestCompressorBase + + +class TestLrzip(TestCompressorBase): + __test__ = True + config = TestCompressorBase.config + \ + """ + BR2_PACKAGE_LRZIP=y + """ + compress_cmd = "lrzip" + decompress_cmd = "lrunzip" + compressed_file_ext = ".lrz" diff --git a/support/testing/tests/package/test_lrzsz.py b/support/testing/tests/package/test_lrzsz.py new file mode 100644 index 00000000..23b4cdc5 --- /dev/null +++ b/support/testing/tests/package/test_lrzsz.py @@ -0,0 +1,42 @@ +import os + +import infra.basetest + + +class TestLrzsz(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_LRZSZ=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + fifo = "/tmp/return-fifo" + data_fname = "data" + data_path = f"/tmp/{data_fname}" + + # We check a program can execute. + self.assertRunOk("sz --version") + + # We create a data file, to be transferred. + cmd = f"dd if=/dev/urandom of={data_path} bs=1M count=1" + self.assertRunOk(cmd) + + # We create a fifo, used as a return fifo. + self.assertRunOk(f"mkfifo {fifo}") + + # We transfer the test data using ZMODEM over the pipe and our + # return fifo. + self.assertRunOk(f"sz {data_path} < {fifo} | rz > {fifo}") + + # The rz command is supposed to have created the received file + # in the current directory. We expect the received data to be + # the same as the original input file. + self.assertRunOk(f"cmp {data_path} {data_fname}") diff --git a/support/testing/tests/package/test_lsof.py b/support/testing/tests/package/test_lsof.py new file mode 100644 index 00000000..b0478dfb --- /dev/null +++ b/support/testing/tests/package/test_lsof.py @@ -0,0 +1,41 @@ +import os + +import infra.basetest + + +class TestLsof(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y + BR2_PACKAGE_LSOF=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + test_file = "/tmp/this-is-a-test-file" + + # Check the program can execute + self.assertRunOk("lsof -v") + + # Check a normal program invocation + self.assertRunOk("lsof") + + # Check lsof fails if requested file is not opened + _, exit_code = self.emulator.run("lsof {}".format(test_file)) + self.assertNotEqual(exit_code, 0) + + # Open the test file from the shell on descriptor 10 + self.assertRunOk("exec 10> {}".format(test_file)) + + # Check that lsof now show the file + output, exit_code = self.emulator.run("lsof {}".format(test_file)) + self.assertEqual(exit_code, 0) + # output[0] is the lsof header line + self.assertIn(test_file, output[1]) diff --git a/support/testing/tests/package/test_lsqlite3.py b/support/testing/tests/package/test_lsqlite3.py new file mode 100644 index 00000000..d8747746 --- /dev/null +++ b/support/testing/tests/package/test_lsqlite3.py @@ -0,0 +1,25 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaLsqlite3(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LSQLITE3=y + """ + + def test_run(self): + self.login() + self.module_test("lsqlite3") + + +class TestLuajitLsqlite3(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_LSQLITE3=y + """ + + def test_run(self): + self.login() + self.module_test("lsqlite3") diff --git a/support/testing/tests/package/test_ltrace.py b/support/testing/tests/package/test_ltrace.py new file mode 100644 index 00000000..9ef64ba5 --- /dev/null +++ b/support/testing/tests/package/test_ltrace.py @@ -0,0 +1,32 @@ +import os + +import infra.basetest + + +class TestLtrace(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_LTRACE=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Check the program can execute + self.assertRunOk("ltrace --version") + + # Run ltrace on a ls + cmd = "ltrace -a 0 -o ltrace.log ls /" + self.assertRunOk(cmd) + + # Check the ltrace log contains occurrences of libc malloc() + cmd = "grep -Ec 'malloc\\([0-9]+\\)' ltrace.log" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertGreater(int(out[0]), 0) diff --git a/support/testing/tests/package/test_lua.py b/support/testing/tests/package/test_lua.py new file mode 100644 index 00000000..9703dffb --- /dev/null +++ b/support/testing/tests/package/test_lua.py @@ -0,0 +1,58 @@ +import os + +import infra.basetest + + +class TestLuaBase(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def login(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + def version_test(self, version): + cmd = "lua -v" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertIn(version, output[0]) + + def g_version_test(self, expected): + cmd = "lua -e 'print(_G._VERSION)'" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], expected) + + def module_test(self, module, script="a=1"): + cmd = "lua -l {} -e '{}'".format(module, script) + self.assertRunOk(cmd) + + +class TestLua(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + """ + + def test_run(self): + self.login() + self.version_test('Lua 5.4') + self.g_version_test('Lua 5.4') + + +class TestLuajit(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + """ + + def test_run(self): + self.login() + self.version_test('LuaJIT 2') + self.g_version_test('Lua 5.1') diff --git a/support/testing/tests/package/test_lua_argon2.py b/support/testing/tests/package/test_lua_argon2.py new file mode 100644 index 00000000..8a2a57e6 --- /dev/null +++ b/support/testing/tests/package/test_lua_argon2.py @@ -0,0 +1,25 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaLuaArgon2(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LUA_ARGON2=y + """ + + def test_run(self): + self.login() + self.module_test("argon2") + + +class TestLuajitLuaArgon2(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_LUA_ARGON2=y + """ + + def test_run(self): + self.login() + self.module_test("argon2") diff --git a/support/testing/tests/package/test_lua_augeas.py b/support/testing/tests/package/test_lua_augeas.py new file mode 100644 index 00000000..2a612b6d --- /dev/null +++ b/support/testing/tests/package/test_lua_augeas.py @@ -0,0 +1,27 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaLuaAugeas(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_AUGEAS=y + BR2_PACKAGE_LUA_AUGEAS=y + """ + + def test_run(self): + self.login() + self.module_test("augeas") + + +class TestLuajitLuaAugeas(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_AUGEAS=y + BR2_PACKAGE_LUA_AUGEAS=y + """ + + def test_run(self): + self.login() + self.module_test("augeas") diff --git a/support/testing/tests/package/test_lua_cffi.py b/support/testing/tests/package/test_lua_cffi.py new file mode 100644 index 00000000..32547a4a --- /dev/null +++ b/support/testing/tests/package/test_lua_cffi.py @@ -0,0 +1,13 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaLuaCffi(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LUA_CFFI=y + """ + + def test_run(self): + self.login() + self.module_test("cffi") diff --git a/support/testing/tests/package/test_lua_cqueues.py b/support/testing/tests/package/test_lua_cqueues.py new file mode 100644 index 00000000..e823651c --- /dev/null +++ b/support/testing/tests/package/test_lua_cqueues.py @@ -0,0 +1,59 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaLuaCqueues(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LUA_CQUEUES=y + """ + + def test_run(self): + self.login() + self.module_test("_cqueues") + self.module_test("cqueues") + self.module_test("cqueues.auxlib") + self.module_test("cqueues.condition") + self.module_test("cqueues.dns") + self.module_test("cqueues.dns.config") + self.module_test("cqueues.dns.hints") + self.module_test("cqueues.dns.hosts") + self.module_test("cqueues.dns.packet") + self.module_test("cqueues.dns.record") + self.module_test("cqueues.dns.resolver") + self.module_test("cqueues.dns.resolvers") + self.module_test("cqueues.errno") + self.module_test("cqueues.notify") + self.module_test("cqueues.promise") + self.module_test("cqueues.signal") + self.module_test("cqueues.socket") + self.module_test("cqueues.thread") + + +class TestLuajitLuaCqueues(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_LUA_CQUEUES=y + """ + + def test_run(self): + self.login() + self.module_test("_cqueues") + self.module_test("cqueues") + self.module_test("cqueues.auxlib") + self.module_test("cqueues.condition") + self.module_test("cqueues.dns") + self.module_test("cqueues.dns.config") + self.module_test("cqueues.dns.hints") + self.module_test("cqueues.dns.hosts") + self.module_test("cqueues.dns.packet") + self.module_test("cqueues.dns.record") + self.module_test("cqueues.dns.resolver") + self.module_test("cqueues.dns.resolvers") + self.module_test("cqueues.errno") + self.module_test("cqueues.notify") + self.module_test("cqueues.promise") + self.module_test("cqueues.signal") + self.module_test("cqueues.socket") + self.module_test("cqueues.thread") diff --git a/support/testing/tests/package/test_lua_curl.py b/support/testing/tests/package/test_lua_curl.py new file mode 100644 index 00000000..08130394 --- /dev/null +++ b/support/testing/tests/package/test_lua_curl.py @@ -0,0 +1,27 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaLuacURL(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LUA_CURL=y + """ + + def test_run(self): + self.login() + self.module_test("cURL") + self.module_test("lcurl") + + +class TestLuajitLuacURL(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_LUA_CURL=y + """ + + def test_run(self): + self.login() + self.module_test("cURL") + self.module_test("lcurl") diff --git a/support/testing/tests/package/test_lua_gd.py b/support/testing/tests/package/test_lua_gd.py new file mode 100644 index 00000000..f79f2086 --- /dev/null +++ b/support/testing/tests/package/test_lua_gd.py @@ -0,0 +1,31 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaLuaGD(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LUA_GD=y + BR2_PACKAGE_FONTCONFIG=y + BR2_PACKAGE_JPEG=y + BR2_PACKAGE_LIBPNG=y + """ + + def test_run(self): + self.login() + self.module_test("gd") + + +class TestLuajitLuaGD(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_LUA_GD=y + BR2_PACKAGE_FONTCONFIG=y + BR2_PACKAGE_JPEG=y + BR2_PACKAGE_LIBPNG=y + """ + + def test_run(self): + self.login() + self.module_test("gd") diff --git a/support/testing/tests/package/test_lua_http.py b/support/testing/tests/package/test_lua_http.py new file mode 100644 index 00000000..ba6096a1 --- /dev/null +++ b/support/testing/tests/package/test_lua_http.py @@ -0,0 +1,37 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaHttp(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LUA_HTTP=y + """ + + def test_run(self): + self.login() + self.module_test("http.version", script="local ver=require[[http.version]]; print(ver.name, ver.version)") + self.module_test("http.client") + self.module_test("http.cookie") + self.module_test("http.proxies") + self.module_test("http.server") + self.module_test("http.socks") + self.module_test("http.websocket") + + +class TestLuajitHttp(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_LUA_HTTP=y + """ + + def test_run(self): + self.login() + self.module_test("http.version", script="local ver=require[[http.version]]; print(ver.name, ver.version)") + self.module_test("http.client") + self.module_test("http.cookie") + self.module_test("http.proxies") + self.module_test("http.server") + self.module_test("http.socks") + self.module_test("http.websocket") diff --git a/support/testing/tests/package/test_lua_inotify.py b/support/testing/tests/package/test_lua_inotify.py new file mode 100644 index 00000000..c951a9c5 --- /dev/null +++ b/support/testing/tests/package/test_lua_inotify.py @@ -0,0 +1,25 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaInotify(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LUA_INOTIFY=y + """ + + def test_run(self): + self.login() + self.module_test("inotify") + + +class TestLuajitInotify(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_LUA_INOTIFY=y + """ + + def test_run(self): + self.login() + self.module_test("inotify") diff --git a/support/testing/tests/package/test_lua_lgdbm.py b/support/testing/tests/package/test_lua_lgdbm.py new file mode 100644 index 00000000..4ccf7599 --- /dev/null +++ b/support/testing/tests/package/test_lua_lgdbm.py @@ -0,0 +1,13 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaLgdbm(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LUA_LGDBM=y + """ + + def test_run(self): + self.login() + self.module_test("gdbm") diff --git a/support/testing/tests/package/test_lua_lightningmdb.py b/support/testing/tests/package/test_lua_lightningmdb.py new file mode 100644 index 00000000..cc5b8204 --- /dev/null +++ b/support/testing/tests/package/test_lua_lightningmdb.py @@ -0,0 +1,13 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaLightningmdb(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LUA_LIGHTNINGMDB=y + """ + + def test_run(self): + self.login() + self.module_test("lightningmdb") diff --git a/support/testing/tests/package/test_lua_lunix.py b/support/testing/tests/package/test_lua_lunix.py new file mode 100644 index 00000000..ae0e3b26 --- /dev/null +++ b/support/testing/tests/package/test_lua_lunix.py @@ -0,0 +1,25 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaLunix(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LUA_LUNIX=y + """ + + def test_run(self): + self.login() + self.module_test("unix") + + +class TestLuajitLunix(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_LUA_LUNIX=y + """ + + def test_run(self): + self.login() + self.module_test("unix") diff --git a/support/testing/tests/package/test_lua_lyaml.py b/support/testing/tests/package/test_lua_lyaml.py new file mode 100644 index 00000000..ece3c675 --- /dev/null +++ b/support/testing/tests/package/test_lua_lyaml.py @@ -0,0 +1,27 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaLuaLyaml(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LUA_LYAML=y + """ + + def test_run(self): + self.login() + self.module_test("yaml") + self.module_test("lyaml") + + +class TestLuajitLuaLyaml(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_LUA_LYAML=y + """ + + def test_run(self): + self.login() + self.module_test("yaml") + self.module_test("lyaml") diff --git a/support/testing/tests/package/test_lua_sdl2.py b/support/testing/tests/package/test_lua_sdl2.py new file mode 100644 index 00000000..b9aad15f --- /dev/null +++ b/support/testing/tests/package/test_lua_sdl2.py @@ -0,0 +1,42 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaLuaSDL2(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LUA_5_3=y + BR2_PACKAGE_LUA_SDL2=y + BR2_PACKAGE_SDL2_IMAGE=y + BR2_PACKAGE_SDL2_MIXER=y + BR2_PACKAGE_SDL2_NET=y + BR2_PACKAGE_SDL2_TTF=y + """ + + def test_run(self): + self.login() + self.module_test("SDL") + self.module_test("SDL.image") + self.module_test("SDL.mixer") + self.module_test("SDL.net") + self.module_test("SDL.ttf") + + +class TestLuajitLuaSDL2(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_LUA_SDL2=y + BR2_PACKAGE_SDL2_IMAGE=y + BR2_PACKAGE_SDL2_MIXER=y + BR2_PACKAGE_SDL2_NET=y + BR2_PACKAGE_SDL2_TTF=y + """ + + def test_run(self): + self.login() + self.module_test("SDL") + self.module_test("SDL.image") + self.module_test("SDL.mixer") + self.module_test("SDL.net") + self.module_test("SDL.ttf") diff --git a/support/testing/tests/package/test_lua_utf8.py b/support/testing/tests/package/test_lua_utf8.py new file mode 100644 index 00000000..5946a439 --- /dev/null +++ b/support/testing/tests/package/test_lua_utf8.py @@ -0,0 +1,25 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaUtf8(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LUA_UTF8=y + """ + + def test_run(self): + self.login() + self.module_test("lua-utf8") + + +class TestLuajitUtf8(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_LUA_UTF8=y + """ + + def test_run(self): + self.login() + self.module_test("lua-utf8") diff --git a/support/testing/tests/package/test_lua_zlib.py b/support/testing/tests/package/test_lua_zlib.py new file mode 100644 index 00000000..6089daa2 --- /dev/null +++ b/support/testing/tests/package/test_lua_zlib.py @@ -0,0 +1,25 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaLuazlib(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LUA_ZLIB=y + """ + + def test_run(self): + self.login() + self.module_test("zlib") + + +class TestLuajitLuazlib(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_LUA_ZLIB=y + """ + + def test_run(self): + self.login() + self.module_test("zlib") diff --git a/support/testing/tests/package/test_luaexpat.py b/support/testing/tests/package/test_luaexpat.py new file mode 100644 index 00000000..c71c3fad --- /dev/null +++ b/support/testing/tests/package/test_luaexpat.py @@ -0,0 +1,25 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaLuaExpat(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LUAEXPAT=y + """ + + def test_run(self): + self.login() + self.module_test("lxp") + + +class TestLuajitLuaExpat(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_LUAEXPAT=y + """ + + def test_run(self): + self.login() + self.module_test("lxp") diff --git a/support/testing/tests/package/test_luafilesystem.py b/support/testing/tests/package/test_luafilesystem.py new file mode 100644 index 00000000..a84c1f30 --- /dev/null +++ b/support/testing/tests/package/test_luafilesystem.py @@ -0,0 +1,25 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaLuaFileSystem(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LUAFILESYSTEM=y + """ + + def test_run(self): + self.login() + self.module_test("lfs") + + +class TestLuajitLuaFileSystem(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_LUAFILESYSTEM=y + """ + + def test_run(self): + self.login() + self.module_test("lfs") diff --git a/support/testing/tests/package/test_lualdap.py b/support/testing/tests/package/test_lualdap.py new file mode 100644 index 00000000..2ec0d582 --- /dev/null +++ b/support/testing/tests/package/test_lualdap.py @@ -0,0 +1,25 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaLuaLdap(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LUALDAP=y + """ + + def test_run(self): + self.login() + self.module_test("lualdap") + + +class TestLuajitLuaLdap(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_LUALDAP=y + """ + + def test_run(self): + self.login() + self.module_test("lualdap") diff --git a/support/testing/tests/package/test_luaossl.py b/support/testing/tests/package/test_luaossl.py new file mode 100644 index 00000000..f9f9ab4e --- /dev/null +++ b/support/testing/tests/package/test_luaossl.py @@ -0,0 +1,27 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaLuaossl(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LUAOSSL=y + """ + + def test_run(self): + self.login() + self.module_test("openssl") + self.module_test("_openssl") + + +class TestLuajitLuaossl(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_LUAOSSL=y + """ + + def test_run(self): + self.login() + self.module_test("openssl") + self.module_test("_openssl") diff --git a/support/testing/tests/package/test_luaposix.py b/support/testing/tests/package/test_luaposix.py new file mode 100644 index 00000000..2918ee61 --- /dev/null +++ b/support/testing/tests/package/test_luaposix.py @@ -0,0 +1,83 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaLuaPosix(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LUAPOSIX=y + """ + + def test_run(self): + self.login() + self.module_test("posix.version", "print(require[[posix.version]])") + self.module_test("posix.ctype") + self.module_test("posix.dirent") + self.module_test("posix.errno") + self.module_test("posix.fcntl") + self.module_test("posix.fnmatch") + self.module_test("posix.glob") + self.module_test("posix.grp") + self.module_test("posix.libgen") + self.module_test("posix.poll") + self.module_test("posix.pwd") + self.module_test("posix.sched") + self.module_test("posix.signal") + self.module_test("posix.stdio") + self.module_test("posix.stdlib") + self.module_test("posix.sys.msg") + self.module_test("posix.sys.resource") + self.module_test("posix.sys.socket") + self.module_test("posix.sys.stat") + self.module_test("posix.sys.statvfs") + self.module_test("posix.sys.time") + self.module_test("posix.sys.times") + self.module_test("posix.sys.utsname") + self.module_test("posix.sys.wait") + self.module_test("posix.syslog") + self.module_test("posix.termio") + self.module_test("posix.time") + self.module_test("posix.unistd") + self.module_test("posix.utime") + self.module_test("posix") + + +class TestLuajitLuaPosix(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_LUAPOSIX=y + """ + + def test_run(self): + self.login() + self.module_test("posix.version", "print(require[[posix.version]])") + self.module_test("posix.ctype") + self.module_test("posix.dirent") + self.module_test("posix.errno") + self.module_test("posix.fcntl") + self.module_test("posix.fnmatch") + self.module_test("posix.glob") + self.module_test("posix.grp") + self.module_test("posix.libgen") + self.module_test("posix.poll") + self.module_test("posix.pwd") + self.module_test("posix.sched") + self.module_test("posix.signal") + self.module_test("posix.stdio") + self.module_test("posix.stdlib") + self.module_test("posix.sys.msg") + self.module_test("posix.sys.resource") + self.module_test("posix.sys.socket") + self.module_test("posix.sys.stat") + self.module_test("posix.sys.statvfs") + self.module_test("posix.sys.time") + self.module_test("posix.sys.times") + self.module_test("posix.sys.utsname") + self.module_test("posix.sys.wait") + self.module_test("posix.syslog") + self.module_test("posix.termio") + self.module_test("posix.time") + self.module_test("posix.unistd") + self.module_test("posix.utime") + self.module_test("posix") diff --git a/support/testing/tests/package/test_luasec.py b/support/testing/tests/package/test_luasec.py new file mode 100644 index 00000000..f8732636 --- /dev/null +++ b/support/testing/tests/package/test_luasec.py @@ -0,0 +1,25 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaLuaSec(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LUASEC=y + """ + + def test_run(self): + self.login() + self.module_test("ssl") + + +class TestLuajitLuaSec(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_LUASEC=y + """ + + def test_run(self): + self.login() + self.module_test("ssl") diff --git a/support/testing/tests/package/test_luasocket.py b/support/testing/tests/package/test_luasocket.py new file mode 100644 index 00000000..3d21df1d --- /dev/null +++ b/support/testing/tests/package/test_luasocket.py @@ -0,0 +1,29 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaLuaSocket(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LUASOCKET=y + """ + + def test_run(self): + self.login() + self.module_test("ltn12") + self.module_test("mime") + self.module_test("socket") + + +class TestLuajitLuaSocket(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_LUASOCKET=y + """ + + def test_run(self): + self.login() + self.module_test("ltn12") + self.module_test("mime") + self.module_test("socket") diff --git a/support/testing/tests/package/test_luasyslog.py b/support/testing/tests/package/test_luasyslog.py new file mode 100644 index 00000000..158b95cb --- /dev/null +++ b/support/testing/tests/package/test_luasyslog.py @@ -0,0 +1,27 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaLuasyslog(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LUASYSLOG=y + """ + + def test_run(self): + self.login() + self.module_test("lsyslog") + self.module_test("logging.syslog") + + +class TestLuajitLuasyslog(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_LUASYSLOG=y + """ + + def test_run(self): + self.login() + self.module_test("lsyslog") + self.module_test("logging.syslog") diff --git a/support/testing/tests/package/test_luvi.py b/support/testing/tests/package/test_luvi.py new file mode 100644 index 00000000..4b550917 --- /dev/null +++ b/support/testing/tests/package/test_luvi.py @@ -0,0 +1,37 @@ +import os + +import infra.basetest + + +class TestLuvi(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_LUVI=y + BR2_PACKAGE_OPENSSL=y + BR2_PACKAGE_PCRE=y + BR2_PACKAGE_ZLIB=y + """ + + def login(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + def version_test(self): + cmd = "luvi -v" + output, exit_code = self.emulator.run(cmd) + output = sorted(output) + self.assertIn('libuv', output[0]) + self.assertIn('luvi', output[1]) + self.assertIn('rex', output[2]) + self.assertIn('ssl', output[3]) + self.assertIn('zlib', output[4]) + + def test_run(self): + self.login() + self.version_test() diff --git a/support/testing/tests/package/test_lvm2.py b/support/testing/tests/package/test_lvm2.py new file mode 100644 index 00000000..75ea3fa4 --- /dev/null +++ b/support/testing/tests/package/test_lvm2.py @@ -0,0 +1,160 @@ +import os +import subprocess + +import infra.basetest + + +class TestLvm2(infra.basetest.BRTest): + # The lvm2 package has _LINUX_CONFIG_FIXUPS, so we cannot use + # the runtime test pre-built Kernel. We need to compile a Kernel + # to make sure it will include the required configuration. + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.77" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_PACKAGE_E2FSPROGS=y + BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y + BR2_PACKAGE_LVM2=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def get_free_disk_space(self, path): + out, ret = self.emulator.run(f"df -k {path}") + self.assertEqual(ret, 0) + return int(out[1].split()[3]) + + def test_run(self): + # Test configuration: + storage_devs = ["/dev/vda", "/dev/vdb", "/dev/vdc"] + storage_size = 16 # Mega Bytes + lvm_vg = "br_vg" # Volume Group name + lvm_lv = "br_lv" # Logical Volume name + lv_dev = f"/dev/{lvm_vg}/{lvm_lv}" # Logical Volume dev name + mnt_pt = "/mnt/lvm2-storage" + data_file = f"{mnt_pt}/data.bin" + + qemu_storage_opts = [] + for i in range(len(storage_devs)): + disk_file = os.path.join(self.builddir, "images", f"disk{i}.img") + self.emulator.logfile.write(f"Creating disk image: {disk_file}\n") + self.emulator.logfile.flush() + subprocess.check_call( + ["dd", "if=/dev/zero", f"of={disk_file}", + "bs=1M", f"count={storage_size}"], + stdout=self.emulator.logfile, + stderr=self.emulator.logfile) + opts = ["-drive", f"file={disk_file},if=virtio,format=raw"] + qemu_storage_opts += opts + + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["console=ttyAMA0"], + options=["-M", "virt", "-cpu", "cortex-a57", "-m", "256M", + "-initrd", img] + qemu_storage_opts) + self.emulator.login() + + # Test the program can execute. + self.assertRunOk("lvm version") + + # We did not created any Physical Volume yet. We should NOT + # see any of our storage devices in a pvscan. + out, ret = self.emulator.run("pvscan") + self.assertEqual(ret, 0) + for dev in storage_devs: + self.assertNotIn(dev, "\n".join(out)) + + # We initialize our Physical Volumes (PVs). + pv_devs = " ".join(storage_devs) + self.assertRunOk(f"pvcreate {pv_devs}") + + # We run few diagnostic commands related to PVs. + self.assertRunOk(f"pvck {pv_devs}") + self.assertRunOk(f"pvdisplay {pv_devs}") + self.assertRunOk("pvs") + + # Now we initialized the PVs, we should see them in a pvscan. + out, ret = self.emulator.run("pvscan") + self.assertEqual(ret, 0) + for dev in storage_devs: + self.assertIn(dev, "\n".join(out)) + + # We create a Volume Group (VG) including two of our three + # PVs. + cmd = f"vgcreate {lvm_vg} {storage_devs[0]} {storage_devs[1]}" + self.assertRunOk(cmd) + + # We run few diagnostic commands related to VGs. + self.assertRunOk(f"vgck {lvm_vg}") + self.assertRunOk(f"vgdisplay {lvm_vg}") + self.assertRunOk("vgscan") + self.assertRunOk("vgs") + + # We create a Logical Volume (LV) in our VG. + self.assertRunOk(f"lvcreate -l 100%FREE -n {lvm_lv} {lvm_vg}") + + # We check LVM created the LV device. + self.assertRunOk(f"ls -al {lv_dev}") + + # We run few diagnostic commands related to LVs. + self.assertRunOk("lvscan") + self.assertRunOk("lvs") + + # We create a ext4 filesystem on our LV. + self.assertRunOk(f"mkfs.ext4 {lv_dev}") + + # We create a mount point directory and mount the device. + self.assertRunOk(f"mkdir -p {mnt_pt}") + self.assertRunOk(f"mount {lv_dev} {mnt_pt}") + + # We create a data file in our new filesystem. Note: this file + # is slightly larger than a single PV. This data file should + # span over the two PVs in the VG. + data_size = storage_size + 4 + cmd = f"dd if=/dev/urandom of={data_file} bs=1M count={data_size}" + self.assertRunOk(cmd) + + # We compute the hash of our data, and save it for later. + hash_cmd = f"sha256sum {data_file}" + out, ret = self.emulator.run(hash_cmd) + self.assertEqual(ret, 0) + data_sha256 = out[0] + + # We compute the free space of the mount point. + fs_free_space = self.get_free_disk_space(mnt_pt) + + # We extend of VG with our third PV. + self.assertRunOk(f"vgextend {lvm_vg} {storage_devs[2]}") + + # We grow the LV to use all the space of the VG. + self.assertRunOk(f"lvresize -l +100%FREE {lvm_vg}/{lvm_lv}") + + # We resize the filesystem to use all the LV space. + self.assertRunOk(f"resize2fs {lv_dev}") + + # Now we grew the LV and resized the filesystem, we recompute + # the free space and check we have more. + fs2_free_space = self.get_free_disk_space(mnt_pt) + self.assertGreater(fs2_free_space, fs_free_space) + + # With all those on-the-fly operations on the mounted + # filesystem, the data file should be intact. We should + # recompute the same data checksum as before. + out, ret = self.emulator.run(hash_cmd) + self.assertEqual(ret, 0) + self.assertEqual(out[0], data_sha256) + + # Finally, we unmount the filesystem. It should not contain + # any error. + self.assertRunOk(f"umount {mnt_pt}") + self.assertRunOk(f"e2fsck -f -n {lv_dev}") diff --git a/support/testing/tests/package/test_lxc.py b/support/testing/tests/package/test_lxc.py new file mode 100644 index 00000000..0d03087a --- /dev/null +++ b/support/testing/tests/package/test_lxc.py @@ -0,0 +1,59 @@ +import os + +import infra.basetest + + +class TestLxc(infra.basetest.BRTest): + config = \ + """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.38" + BR2_LINUX_KERNEL_DEFCONFIG="vexpress" + BR2_LINUX_KERNEL_DTS_SUPPORT=y + BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_INIT_SYSTEMD=y + BR2_PACKAGE_LXC=y + BR2_PACKAGE_TINI=y + BR2_PACKAGE_IPERF3=y + BR2_ROOTFS_OVERLAY="{}" + BR2_TARGET_ROOTFS_CPIO=y + """.format( + infra.filepath("tests/package/test_lxc/lxc-kernel.config"), + infra.filepath("tests/package/test_lxc/rootfs-overlay")) + + def run_ok(self, cmd): + self.assertRunOk(cmd, 120) + + def wait_boot(self): + # the complete boot with systemd takes more time than what the + # default typically allows + self.emulator.login(timeout=600) + + def setup_run_test_container(self): + self.run_ok("lxc-create -n lxc_iperf3 -t none -f /usr/share/lxc/config/minimal-iperf3.conf") + self.run_ok("lxc-start -l trace -n lxc_iperf3 -o /tmp/lxc.log -L /tmp/lxc.console.log") + # need to wait for the container to be fully started + self.run_ok("sleep 2") + self.run_ok("iperf3 -c 192.168.1.2 -t 2") + # if the test fails, just cat /tmp/*.log + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + kernel_file = os.path.join(self.builddir, "images", "zImage") + dtb_file = os.path.join(self.builddir, "images", "vexpress-v2p-ca9.dtb") + self.emulator.boot(arch="armv7", kernel=kernel_file, + kernel_cmdline=[ + "console=ttyAMA0,115200"], + options=["-initrd", cpio_file, + "-dtb", dtb_file, + "-M", "vexpress-a9"]) + self.wait_boot() + self.setup_run_test_container() diff --git a/support/testing/tests/package/test_lxc/lxc-kernel.config b/support/testing/tests/package/test_lxc/lxc-kernel.config new file mode 100644 index 00000000..32f8bdd6 --- /dev/null +++ b/support/testing/tests/package/test_lxc/lxc-kernel.config @@ -0,0 +1,20 @@ +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_BLK_CGROUP=y +CONFIG_CGROUP_SCHED=y +CONFIG_CGROUP_PIDS=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_DEBUG=y +CONFIG_NETFILTER_XT_MATCH_CGROUP=y +CONFIG_SOCK_CGROUP_DATA=y +CONFIG_CGROUP_NET_PRIO=y +CONFIG_CGROUP_NET_CLASSID=y +CONFIG_NAMESPACES=y +CONFIG_IPC_NS=y +CONFIG_PID_NS=y +CONFIG_UTS_NS=y +CONFIG_USER_NS=y +CONFIG_NET_NS=y +CONFIG_BRIDGE=y +CONFIG_VETH=y diff --git a/support/testing/tests/package/test_lxc/rootfs-overlay/usr/bin/iperf3.sh b/support/testing/tests/package/test_lxc/rootfs-overlay/usr/bin/iperf3.sh new file mode 100755 index 00000000..7045ca48 --- /dev/null +++ b/support/testing/tests/package/test_lxc/rootfs-overlay/usr/bin/iperf3.sh @@ -0,0 +1,2 @@ +#!/bin/sh +iperf3 -s -1 > /tmp/iperf3.serv.log 2>&1 diff --git a/support/testing/tests/package/test_lxc/rootfs-overlay/usr/share/lxc/config/minimal-iperf3.conf b/support/testing/tests/package/test_lxc/rootfs-overlay/usr/share/lxc/config/minimal-iperf3.conf new file mode 100644 index 00000000..41cc5311 --- /dev/null +++ b/support/testing/tests/package/test_lxc/rootfs-overlay/usr/share/lxc/config/minimal-iperf3.conf @@ -0,0 +1,4 @@ +lxc.include = /usr/share/lxc/config/minimal.conf +lxc.hook.version = 1 +lxc.hook.start-host = ip a add 192.168.1.1/24 dev lxc0 +lxc.init.cmd = tini -g iperf3.sh diff --git a/support/testing/tests/package/test_lxc/rootfs-overlay/usr/share/lxc/config/minimal.conf b/support/testing/tests/package/test_lxc/rootfs-overlay/usr/share/lxc/config/minimal.conf new file mode 100644 index 00000000..73198215 --- /dev/null +++ b/support/testing/tests/package/test_lxc/rootfs-overlay/usr/share/lxc/config/minimal.conf @@ -0,0 +1,6 @@ +lxc.autodev = 0 +lxc.net.0.type = veth +lxc.net.0.veth.pair = lxc0 +lxc.net.0.name = eth0 +lxc.net.0.flags = up +lxc.net.0.ipv4.address = 192.168.1.2/24 diff --git a/support/testing/tests/package/test_lz4.py b/support/testing/tests/package/test_lz4.py new file mode 100644 index 00000000..98820025 --- /dev/null +++ b/support/testing/tests/package/test_lz4.py @@ -0,0 +1,11 @@ +from tests.package.test_compressor_base import TestCompressorBase + + +class TestLz4(TestCompressorBase): + __test__ = True + config = TestCompressorBase.config + \ + """ + BR2_PACKAGE_LZ4=y + BR2_PACKAGE_LZ4_PROGS=y + """ + compress_cmd = "lz4" diff --git a/support/testing/tests/package/test_lzip.py b/support/testing/tests/package/test_lzip.py new file mode 100644 index 00000000..374e9e79 --- /dev/null +++ b/support/testing/tests/package/test_lzip.py @@ -0,0 +1,12 @@ +from tests.package.test_compressor_base import TestCompressorBase + + +class TestLzip(TestCompressorBase): + __test__ = True + config = TestCompressorBase.config + \ + """ + BR2_PACKAGE_LZIP=y + """ + compress_cmd = "lzip" + decompress_cmd = "lzip -d" + compressed_file_ext = ".lz" diff --git a/support/testing/tests/package/test_lzlib.py b/support/testing/tests/package/test_lzlib.py new file mode 100644 index 00000000..84e76791 --- /dev/null +++ b/support/testing/tests/package/test_lzlib.py @@ -0,0 +1,14 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaLzlib(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LZLIB=y + """ + + def test_run(self): + self.login() + self.module_test("zlib") + self.module_test("gzip") diff --git a/support/testing/tests/package/test_lzop.py b/support/testing/tests/package/test_lzop.py new file mode 100644 index 00000000..8d20ece3 --- /dev/null +++ b/support/testing/tests/package/test_lzop.py @@ -0,0 +1,12 @@ +from tests.package.test_compressor_base import TestCompressorBase + + +class TestLzop(TestCompressorBase): + __test__ = True + config = TestCompressorBase.config + \ + """ + BR2_PACKAGE_LZOP=y + """ + compress_cmd = "lzop" + decompress_cmd = "lzop -d" + compressed_file_ext = ".lzo" diff --git a/support/testing/tests/package/test_make.py b/support/testing/tests/package/test_make.py new file mode 100644 index 00000000..2ec62826 --- /dev/null +++ b/support/testing/tests/package/test_make.py @@ -0,0 +1,82 @@ +import os + +import infra.basetest + + +class TestMake(infra.basetest.BRTest): + rootfs_overlay = \ + infra.filepath("tests/package/test_make/rootfs-overlay") + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + f""" + BR2_PACKAGE_MAKE=y + BR2_ROOTFS_OVERLAY="{rootfs_overlay}" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def gen_expected_str(self, count): + """Return the expected string generated by the test Makefile""" + return "".join(map(lambda x: str(x), range(1, count+1))) + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Check the program can execute. + self.assertRunOk("make --version") + + # We touch the Makefile to set its modification time to the + # current system time. This is to avoid warnings from Make + # about having files with timestamps in the future. This is + # because the minimal system running in the emulator might not + # set the clock to the real time, and the Makefile has a + # correct timestamp from the build host (which is likely at + # the correct time). + self.assertRunOk("touch Makefile") + + # We test the "message" target and check we get the expected + # string. + out, ret = self.emulator.run("make message") + self.assertEqual(ret, 0) + self.assertEqual(out[0], "Hello Buildroot!") + + # We redo the same test, this time by passing a new message + # with a variable. + msg = "This is Another Message..." + out, ret = self.emulator.run(f"make message MESSAGE='{msg}'") + self.assertEqual(ret, 0) + self.assertEqual(out[0], msg) + + # We run a simple "make" invocation, using the defaults. + self.assertRunOk("make") + + # We check the generated output contains the expected string. + expected_str = self.gen_expected_str(10) + out, ret = self.emulator.run("cat output.txt") + self.assertEqual(ret, 0) + self.assertEqual(out[0], expected_str) + + # Clean the previous invocation. + self.assertRunOk("make clean") + + # We check a output generated file is no longer present. + self.assertRunOk("test ! -e output.txt") + + # We run an invocation with a larger COUNT value. GNU Make + # version 4.4 introduced the --shuffle option, which shuffle + # rules. We use it with a constant seed, in order to have a + # stable reshuffling in all test runs. We also include in this + # execution a request for parallel jobs. + count = 50 + seed = 123456 + self.assertRunOk(f"make -j10 --shuffle={seed} COUNT={count}") + + # Despite the pseudo-randomization in the previous invocation, + # the expected output should be correctly ordered. + expected_str = self.gen_expected_str(count) + out, ret = self.emulator.run("cat output.txt") + self.assertEqual(ret, 0) + self.assertEqual(out[0], expected_str) diff --git a/support/testing/tests/package/test_make/rootfs-overlay/root/Makefile b/support/testing/tests/package/test_make/rootfs-overlay/root/Makefile new file mode 100644 index 00000000..7ac86945 --- /dev/null +++ b/support/testing/tests/package/test_make/rootfs-overlay/root/Makefile @@ -0,0 +1,23 @@ +MESSAGE ?= "Hello Buildroot!" +COUNT ?= 10 + +LIST = $(shell seq $(COUNT)) +INPUTS = $(addsuffix .in.txt,$(LIST)) +OUTPUT = output.txt + +.PHONY: all +all: $(OUTPUT) + +.PHONY: clean +clean: + $(RM) $(OUTPUT) *.in.txt + +.PHONY: message +message: + @echo $(MESSAGE) + +%.in.txt: + echo $(subst .in.txt,,$@) > $@ + +$(OUTPUT): $(INPUTS) + (cat $? | tr -d '\n' ; echo) > $@ diff --git a/support/testing/tests/package/test_mariadb.py b/support/testing/tests/package/test_mariadb.py new file mode 100644 index 00000000..d40ffdba --- /dev/null +++ b/support/testing/tests/package/test_mariadb.py @@ -0,0 +1,194 @@ +import os + +import infra.basetest + + +class TestMariaDB(infra.basetest.BRTest): + # We use a specific configuration for: + # - using Aarch64, to have more than 256MB memory, + # - to have an ext4 rootfs image exposed as a virtio storage + # (rather than cpio initrd). This will save some memory, as the + # rootfs image is big. + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.78" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_PACKAGE_MARIADB=y + BR2_PACKAGE_MARIADB_SERVER=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_4=y + BR2_TARGET_ROOTFS_EXT2_SIZE="512M" + # BR2_TARGET_ROOTFS_TAR is not set + """ + + # Configuration for the test + db_adminuser = "root" + db_admin = "mysql" + db_user = "br_user" + db_name = "br_database" + backup_file = "dump.sql" + + def run_user_db_query(self, user, database, query, opts=None): + cmd = f"mariadb --user={user} --database={database}" + cmd += f' --execute="{query}"' + if opts is not None: + cmd += " " + opts + self.assertRunOk(cmd) + + def run_admin_sql_query(self, query, opts=None): + self.run_user_db_query(self.db_adminuser, self.db_admin, query, opts) + + def run_sql_query(self, query, opts=None): + self.run_user_db_query(self.db_user, self.db_name, query, opts) + + def cleanup_database(self): + # This cleanup is useful when run-test -k is used. It makes + # this test idempotent. Since the drive storage is preserved + # between reboots, this cleanup will prevent errors during the + # user/db creation. + + # Drop the test database, if it exists. + sql_query = f"DROP USER IF EXISTS {self.db_user}@localhost;" + self.run_admin_sql_query(sql_query) + + # Drop the test user, if it exists. + sql_query = f"DROP DATABASE IF EXISTS {self.db_name};" + self.run_admin_sql_query(sql_query) + + def create_tables(self): + sql_query = "CREATE TABLE fruits (" + sql_query += "id integer PRIMARY KEY, name varchar(16) NOT NULL);" + self.run_sql_query(sql_query) + + sql_query = "CREATE TABLE colors (" + sql_query += "id integer PRIMARY KEY, name varchar(16) NOT NULL);" + self.run_sql_query(sql_query) + + sql_query = "CREATE TABLE fruit_colors (" + sql_query += "fruit_id integer REFERENCES fruits(id), " + sql_query += "color_id integer REFERENCES colors(id), " + sql_query += "UNIQUE (fruit_id, color_id));" + self.run_sql_query(sql_query) + + def insert_data(self): + fruits = ["Banana", "Blueberry", "Orange", "Raspberry"] + fruit_id = 1 + for fruit in fruits: + sql_query = "INSERT INTO fruits (id, name) " + sql_query += f"VALUES ({fruit_id}, '{fruit}');" + self.run_sql_query(sql_query) + fruit_id += 1 + + colors = ["Blue", "Orange", "Red", "Yellow"] + color_id = 1 + for color in colors: + sql_query = "INSERT INTO colors (id, name) " + sql_query += f"VALUES ({color_id}, '{color}');" + self.run_sql_query(sql_query) + color_id += 1 + + fruit_colors = [(1, 4), (2, 1), (3, 2), (4, 3)] + for fruit_color in fruit_colors: + fruit_id, color_id = fruit_color + sql_query = "INSERT INTO fruit_colors (fruit_id, color_id) " + sql_query += f"VALUES ({fruit_id}, {color_id});" + self.run_sql_query(sql_query) + + def query_database(self): + sql_query = "SELECT " + sql_query += "fruits.name AS fruit, colors.name AS color " + sql_query += "FROM fruits, colors, fruit_colors " + sql_query += "WHERE fruits.id = fruit_colors.fruit_id " + sql_query += "AND colors.id = fruit_colors.color_id " + sql_query += "ORDER BY fruit;" + self.run_sql_query(sql_query) + + def test_run(self): + drive = os.path.join(self.builddir, "images", "rootfs.ext4") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["root=/dev/vda console=ttyAMA0"], + options=["-M", "virt", + "-cpu", "cortex-a57", + "-m", "2G", + "-smp", "2", + "-drive", f"file={drive},if=virtio,format=raw"]) + self.emulator.login() + + # Check the server binary can execute. + self.assertRunOk("mariadbd --version") + + # Check the client binary can execute. + self.assertRunOk("mariadb --version") + + # Check the server is ready. + self.assertRunOk("mariadb-admin ping") + + # Query the server version from the client. + sql_query = "SELECT version();" + self.run_admin_sql_query(sql_query, opts="-N -s") + + self.cleanup_database() + + # Create a new user. + sql_query = f"CREATE USER {self.db_user}@localhost;" + self.run_admin_sql_query(sql_query) + + # Create a new database. + sql_query = f"CREATE DATABASE {self.db_name}" + sql_query += " COMMENT = 'Test Database for Buildroot Test';" + self.run_admin_sql_query(sql_query) + + # Grant all permission on this new database to our test user. + sql_query = "GRANT ALL PRIVILEGES" + sql_query += f" ON {self.db_name}.*" + sql_query += f" TO {self.db_user}@localhost;" + self.run_admin_sql_query(sql_query) + + self.create_tables() + + self.insert_data() + + self.query_database() + + # Update a table. + sql_query = "UPDATE fruits SET name = 'Lemon' WHERE id = 1;" + self.run_sql_query(sql_query) + + # Backup the test database. + cmd = f"mariadb-dump --user={self.db_user}" + cmd += f" {self.db_name} > {self.backup_file}" + self.assertRunOk(cmd) + + # Drop all the tables. + sql_query = "DROP TABLE fruit_colors, fruits, colors;" + self.run_sql_query(sql_query) + + # Query the server status. + self.assertRunOk("mariadb-admin status") + + # Stop the server. + self.assertRunOk("/etc/init.d/S97mysqld stop") + + # Check the server is stopped. + _, exit_code = self.emulator.run("mariadb-admin ping") + self.assertNotEqual(exit_code, 0) + + # Restart the server. + self.assertRunOk("/etc/init.d/S97mysqld start") + + # Restore the backup. + cmd = f"mariadb --user={self.db_user} --database={self.db_name}" + cmd += f" < {self.backup_file}" + self.assertRunOk(cmd) + + # Query one last time our data, to check the backup + # restoration succeeded. + self.query_database() diff --git a/support/testing/tests/package/test_mawk.py b/support/testing/tests/package/test_mawk.py new file mode 100644 index 00000000..5caf77c1 --- /dev/null +++ b/support/testing/tests/package/test_mawk.py @@ -0,0 +1,114 @@ +import os + +import infra.basetest + + +class TestMawk(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_MAWK=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def basic_mawk_tests(self): + # Check the program can execute + self.assertRunOk("mawk --version") + + # Check "mawk" can return a specific exit code + code = 123 + cmd = "mawk 'BEGIN { exit(" + str(code) + "); }'" + _, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, code) + + # Run a basic print program + test_string = "Hello Buildroot" + cmd = "mawk 'BEGIN {print \"" + test_string + "\"; }'" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], test_string) + + def create_test_data(self): + # Create some test data + entries = ["one", "two", "three", "four"] + for entry in entries: + self.assertRunOk(f"echo {entry} >> data1.txt") + + def add_line_numbers(self): + # Add line numbers with mawk + cmd = "mawk '{ print NR \"\\t\" $1; }' data1.txt > data2.txt" + self.assertRunOk(cmd) + + def sum_column(self): + # Check the sum of the first column is 1+2+3+4 == 10 + awk_prg = "BEGIN { SUM = 0; } { SUM = SUM + $1; } END { print SUM; }" + cmd = f"mawk '{awk_prg}' data2.txt" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(int(output[0]), 10) + + def uppercase_column(self): + # Extract only column 2 and convert it to upper case + cmd = "mawk '{ print toupper($2); }' data2.txt > data3.txt" + self.assertRunOk(cmd) + + # Prepare the same output using "data1.txt" and the "tr" command, + # for verification + cmd = "tr a-z A-Z < data1.txt > data3-tr.txt" + self.assertRunOk(cmd) + + # "mawk" and "tr" output are expected to be the same + self.assertRunOk("cmp data3.txt data3-tr.txt") + + def mawk_head(self): + # Show the first 2 lines of a file + cmd = "mawk 'NR <= 2 { print $0; }' data2.txt > data4.txt" + self.assertRunOk(cmd) + + # Prepare the same output using the "head" command + cmd = "head -2 data2.txt > data4-head.txt" + self.assertRunOk(cmd) + + # "mawk" and "tr" output are expected to be the same + self.assertRunOk("cmp data4.txt data4-head.txt") + + def mawk_specific(self): + # Use the "-W dump" mawk specific option. + # See: https://invisible-island.net/mawk/manpage/mawk.html + # We create an arbitrary awk program with an integer and + # string constant. We then check those constants are in the + # mawk "assembler" output. + awk_int = 12345 + awk_str = "Buildroot" + awk_expr = f"print ($1 + {awk_int}) \"{awk_str}\";" + awk_prg = "BEGIN { " + awk_expr + " }" + cmd = f"mawk -W dump '{awk_prg}'" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + out_str = "\n".join(output) + self.assertIn(str(awk_int), out_str) + self.assertIn(awk_str, out_str) + + def mawk_numeric(self): + value = 1234 + squared_value = value * value + cmd = "mawk 'BEGIN { print sqrt(" + str(squared_value) + "); }'" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(int(output[0]), value) + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + self.basic_mawk_tests() + self.create_test_data() + self.add_line_numbers() + self.sum_column() + self.uppercase_column() + self.mawk_head() + self.mawk_specific() + self.mawk_numeric() diff --git a/support/testing/tests/package/test_mdadm.py b/support/testing/tests/package/test_mdadm.py new file mode 100644 index 00000000..d5abdb07 --- /dev/null +++ b/support/testing/tests/package/test_mdadm.py @@ -0,0 +1,146 @@ +import os +import subprocess +import time + +import infra.basetest + + +class TestMdadm(infra.basetest.BRTest): + # This test creates a dm-raid volume with mdadm. A specific Kernel + # need to be built with a config fragment enabling this support. + kernel_fragment = \ + infra.filepath("tests/package/test_mdadm/linux-mdadm.fragment") + config = \ + f""" + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.75" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{kernel_fragment}" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_PACKAGE_E2FSPROGS=y + BR2_PACKAGE_MDADM=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + # Test configuration: + md_dev = "/dev/md0" + storage_devs = ["/dev/vda", "/dev/vdb", "/dev/vdc"] + storage_size = 16 # Mega Bytes + failing_dev = storage_devs[-1] + mnt_pt = "/mnt/raid-storage" + data_file = f"{mnt_pt}/data.bin" + + qemu_storage_opts = [] + for i in range(len(storage_devs)): + disk_file = os.path.join(self.builddir, "images", f"disk{i}.img") + self.emulator.logfile.write(f"Creating disk image: {disk_file}\n") + self.emulator.logfile.flush() + subprocess.check_call( + ["dd", "if=/dev/zero", f"of={disk_file}", + "bs=1M", f"count={storage_size}"], + stdout=self.emulator.logfile, + stderr=self.emulator.logfile) + opts = ["-drive", f"file={disk_file},if=virtio,format=raw"] + qemu_storage_opts += opts + + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["console=ttyAMA0"], + options=["-M", "virt", "-cpu", "cortex-a57", "-m", "256M", + "-initrd", img] + qemu_storage_opts) + self.emulator.login() + + # Test the program can execute. + self.assertRunOk("mdadm --version") + + # Show the mdstat, to confirm the Kernel has support and the + # configuration is empty. + cat_mdstat_cmd = "cat /proc/mdstat" + self.assertRunOk(cat_mdstat_cmd) + + # We create a raid5 array with the drives. + cmd = f"mdadm --create --verbose {md_dev} --level=5 " + cmd += f"--raid-devices={len(storage_devs)} " + cmd += " ".join(storage_devs) + self.assertRunOk(cmd) + + # We show again mdstat, to confirm the array creation. This is + # also for debugging. + self.assertRunOk(cat_mdstat_cmd) + + # We format the device as ext4 and mount it. + self.assertRunOk(f"mkfs.ext4 {md_dev}") + self.assertRunOk(f"mkdir -p {mnt_pt}") + self.assertRunOk(f"mount {md_dev} {mnt_pt}") + + # We store some random data on this new filesystem. Note: this + # file is slightly larger than a single storage drive. This + # data file should span over two drives and use the raid5. + file_size = storage_size + 4 + cmd = f"dd if=/dev/urandom of={data_file} bs=1M count={file_size}" + self.assertRunOk(cmd) + + # We compute the hash of our data, and save it for later. + hash_cmd = f"sha256sum {data_file}" + out, ret = self.emulator.run(hash_cmd) + self.assertEqual(ret, 0) + data_sha256 = out[0] + + # We run few common mdadm commands. + self.assertRunOk("mdadm --detail --scan") + self.assertRunOk(f"mdadm --query {md_dev}") + self.assertRunOk(f"mdadm --detail --test {md_dev}") + self.assertRunOk(f"mdadm --action=check {md_dev}") + self.assertRunOk(f"mdadm --monitor --oneshot {md_dev}") + + # We mark a device as "failed". + self.assertRunOk(f"mdadm {md_dev} --fail {failing_dev}") + + # The monitoring should now report the array as degraded. + monitor_cmd = f"mdadm --monitor --oneshot {md_dev}" + out, ret = self.emulator.run(monitor_cmd) + self.assertEqual(ret, 0) + self.assertIn("DegradedArray", "\n".join(out)) + + # We remove the failing drive from the array. + self.assertRunOk(f"mdadm {md_dev} --remove {failing_dev}") + + # We wipe the failing drive by writing zeroes. + cmd = f"dd if=/dev/zero of={failing_dev} bs=1M count={storage_size}" + self.assertRunOk(cmd) + + # We add back this blank drive to the array. + self.assertRunOk(f"mdadm {md_dev} --add {failing_dev}") + + # Device rebuild can take a variable amount of time, depending + # on the load of the test controller host. So we will allow + # several attempts, before failing. + for attempt in range(10): + # We wait few seconds to let the device rebuild. + time.sleep(3 * self.timeout_multiplier) + + # Once rebuilt, the array should no longer be marked as + # degraded. + out, ret = self.emulator.run(monitor_cmd) + self.assertEqual(ret, 0) + if "DegradedArray" not in "\n".join(out): + break + else: + self.fail("Timeout while waiting for the array to rebuild.") + + # With all those array manipulations, the data file should not + # be corrupted. We should be able to recompute the same hash + # as before. + out, ret = self.emulator.run(hash_cmd) + self.assertEqual(ret, 0) + self.assertEqual(out[0], data_sha256) diff --git a/support/testing/tests/package/test_mdadm/linux-mdadm.fragment b/support/testing/tests/package/test_mdadm/linux-mdadm.fragment new file mode 100644 index 00000000..152192ce --- /dev/null +++ b/support/testing/tests/package/test_mdadm/linux-mdadm.fragment @@ -0,0 +1,3 @@ +CONFIG_MD=y +CONFIG_BLK_DEV_DM=y +CONFIG_DM_RAID=y diff --git a/support/testing/tests/package/test_mender.py b/support/testing/tests/package/test_mender.py new file mode 100644 index 00000000..fdf55ed6 --- /dev/null +++ b/support/testing/tests/package/test_mender.py @@ -0,0 +1,32 @@ +import os + +import infra.basetest + + +class TestMender(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_MENDER=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_ROOTFS_OVERLAY="{}" + """.format( + # overlay to add a fake 'fw_printenv', used by Mender + infra.filepath("tests/package/test_mender/rootfs-overlay")) + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Check if the Daemon is running + self.assertRunOk("ls /var/run/mender.pid") + self.assertRunOk("ps aux | egrep [m]ender") + + # Check if a simple Mender command is correctly executed + self.assertRunOk("mender -log-level debug show-artifact") + self.assertRunOk("mender -log-level debug show-artifact | grep 'RUNTIME_TEST_ARTIFACT_NAME'") + cmd = "mender show-artifact 2>&1 | grep -i 'err'" # Check if no 'error' among the traces + _, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 1) diff --git a/support/testing/tests/package/test_mender/rootfs-overlay/etc/mender/artifact_info b/support/testing/tests/package/test_mender/rootfs-overlay/etc/mender/artifact_info new file mode 100644 index 00000000..4d54b8f8 --- /dev/null +++ b/support/testing/tests/package/test_mender/rootfs-overlay/etc/mender/artifact_info @@ -0,0 +1 @@ +artifact_name=RUNTIME_TEST_ARTIFACT_NAME diff --git a/support/testing/tests/package/test_mender/rootfs-overlay/usr/bin/fw_printenv b/support/testing/tests/package/test_mender/rootfs-overlay/usr/bin/fw_printenv new file mode 100755 index 00000000..c002a0f2 --- /dev/null +++ b/support/testing/tests/package/test_mender/rootfs-overlay/usr/bin/fw_printenv @@ -0,0 +1,6 @@ +#!/bin/sh + +# Fake 'fw_printenv' because UBoot is not installed: print some plausible 'key-value' +echo "bootcount=0" +echo "mender_boot_part=rootfs" +echo "upgrade_available=0" diff --git a/support/testing/tests/package/test_micropython.py b/support/testing/tests/package/test_micropython.py new file mode 100644 index 00000000..371deb29 --- /dev/null +++ b/support/testing/tests/package/test_micropython.py @@ -0,0 +1,79 @@ +import os + +import infra.basetest + + +class TestMicroPython(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + f""" + BR2_PACKAGE_MICROPYTHON=y + BR2_PACKAGE_MICROPYTHON_LIB=y + BR2_ROOTFS_OVERLAY="{infra.filepath("tests/package/test_micropython/rootfs-overlay")}" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def run_upy_code(self, python_code, opts=""): + cmd = f'micropython {opts} -c "{python_code}"' + output, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0, f"could not run '{cmd}', returnd {ret}: '{output}'") + return output + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # The micropython binary can execute. + self.assertRunOk("micropython -h") + + # Query interpreter version and implementation. + py_code = "import sys ; " + py_code += "print('Version:', sys.version) ; " + py_code += "print('Implementation:', sys.implementation)" + self.run_upy_code(py_code) + + # Check implementation is 'micropython'. + py_code = "import sys ; print(sys.implementation.name)" + output = self.run_upy_code(py_code) + self.assertEqual(output[0], "micropython") + + # Check micropython optimization are correctly reported. + py_code = "import micropython ; print(micropython.opt_level())" + for opt_level in range(4): + output = self.run_upy_code(py_code, f"-O{opt_level}") + self.assertEqual( + int(output[0]), + opt_level, + f"Running '{py_code}' at -O{opt_level} returned '{output}'" + ) + + # Check micropython can return a non-zero exit code. + expected_code = 123 + py_code = "import sys ; " + py_code += f"sys.exit({expected_code})" + cmd = f'micropython -c "{py_code}"' + _, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, expected_code) + + # Check micropython computes correctly. + input_value = 1234 + expected_output = str(sum(range(input_value))) + py_code = f"print(sum(range(({input_value}))))" + output = self.run_upy_code(py_code) + self.assertEqual(output[0], expected_output) + + # Check a small script can execute. + self.assertRunOk("/root/mandel.py", timeout=10) + + # Check we can use a micropython-lib module. + msg = "Hello Buildroot!" + filename = "file.txt" + gz_filename = f"{filename}.gz" + self.assertRunOk(f"echo '{msg}' > {filename}") + self.assertRunOk(f"gzip {filename}") + out, ret = self.emulator.run(f"/root/zcat.py {gz_filename}") + self.assertEqual(ret, 0) + self.assertEqual(out[0], msg) diff --git a/support/testing/tests/package/test_micropython/rootfs-overlay/root/mandel.py b/support/testing/tests/package/test_micropython/rootfs-overlay/root/mandel.py new file mode 100755 index 00000000..0552f689 --- /dev/null +++ b/support/testing/tests/package/test_micropython/rootfs-overlay/root/mandel.py @@ -0,0 +1,25 @@ +#! /usr/bin/env micropython + +from micropython import mem_info + +POINTS = list(",.:-;!/>)|&IH%*Z") + + +def mandel(): + for y in range(-15, 16): + for x in range(1, 85): + i = 0 + r = 0 + for k in range(112): + j = (r*r) - (i*i) - 2 + (x/25) + i = 2 * r * i + (y/10) + if j*j + i*i >= 11: + break + r = j + print(POINTS[k & 0xF], end='') + print() + + +if __name__ == '__main__': + mandel() + mem_info() diff --git a/support/testing/tests/package/test_micropython/rootfs-overlay/root/zcat.py b/support/testing/tests/package/test_micropython/rootfs-overlay/root/zcat.py new file mode 100755 index 00000000..3b8c60bd --- /dev/null +++ b/support/testing/tests/package/test_micropython/rootfs-overlay/root/zcat.py @@ -0,0 +1,15 @@ +#! /usr/bin/env micropython + +import gzip +import sys + + +def main(fname): + with open(fname, "rb") as f: + with gzip.GzipFile(fileobj=f) as g: + s = g.read() + print(s.decode("UTF-8"), end="") + + +if __name__ == "__main__": + main(sys.argv[1]) diff --git a/support/testing/tests/package/test_mosquitto.py b/support/testing/tests/package/test_mosquitto.py new file mode 100644 index 00000000..ba10b30b --- /dev/null +++ b/support/testing/tests/package/test_mosquitto.py @@ -0,0 +1,38 @@ +import os +import time + +import infra.basetest + + +class TestMosquitto(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_MOSQUITTO=y + BR2_PACKAGE_MOSQUITTO_BROKER=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + topic = "br-test-topic" + log = "mqtt.log" + msg = "Hello Buildroot!" + + # We subscribe to a topic and write one message to a log file. + self.assertRunOk(f"mosquitto_sub -t {topic} -C 1 > {log} &") + + time.sleep(1) + + # We publish a message. + self.assertRunOk(f"mosquitto_pub -t {topic} -m '{msg}'") + + # We check the log file contains our message. + out, ret = self.emulator.run(f"cat {log}") + self.assertEqual(ret, 0) + self.assertEqual(out[0], msg) diff --git a/support/testing/tests/package/test_msr_tools.py b/support/testing/tests/package/test_msr_tools.py new file mode 100644 index 00000000..4d62742a --- /dev/null +++ b/support/testing/tests/package/test_msr_tools.py @@ -0,0 +1,50 @@ +import os + +import infra.basetest + + +class TestMsrTools(infra.basetest.BRTest): + config = \ + """ + BR2_x86_64=y + BR2_x86_corei7=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.55" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86_64/linux.config" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" + BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y + BR2_PACKAGE_MSR_TOOLS=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """.format( + infra.filepath("tests/package/test_msr_tools/linux.config")) + + def test_run(self): + kernel = os.path.join(self.builddir, "images", "bzImage") + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot( + arch="x86_64", + kernel=kernel, kernel_cmdline=["console=ttyS0"], + options=["-cpu", "Nehalem", "-m", "320", "-initrd", cpio_file] + ) + self.emulator.login() + + # CPU ID. + cmd = "cpuid" + self.assertRunOk(cmd) + + # Write MSR. + # We write to TSC_AUX. + cmd = "wrmsr 0xc0000103 0x1234567812345678" + self.assertRunOk(cmd) + + # Read MSR. + # We read back the TSC_AUX and we verify that we read back the correct + # value. + cmd = "rdmsr 0xc0000103" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], "1234567812345678") diff --git a/support/testing/tests/package/test_msr_tools/linux.config b/support/testing/tests/package/test_msr_tools/linux.config new file mode 100644 index 00000000..8fe09db8 --- /dev/null +++ b/support/testing/tests/package/test_msr_tools/linux.config @@ -0,0 +1,2 @@ +CONFIG_X86_CPUID=y +CONFIG_X86_MSR=y diff --git a/support/testing/tests/package/test_mtd.py b/support/testing/tests/package/test_mtd.py new file mode 100644 index 00000000..bdb09c39 --- /dev/null +++ b/support/testing/tests/package/test_mtd.py @@ -0,0 +1,47 @@ +import os + +import infra.basetest + + +class TestMtd(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_MTD=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_TARGET_ROOTFS_CPIO=y + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv7", + kernel="builtin", + options=["-initrd", cpio_file]) + + self.emulator.login() + + mtd = "/dev/mtd0" + erasesize = 256 * 1024 + test_sectors = 4 + test_size = erasesize * test_sectors + + output, exit_code = self.emulator.run(f"mtd_debug info {mtd}") + output = [x.strip() for x in output if x.strip()] + self.assertEqual(output, [ + "mtd.type = MTD_NORFLASH", + "mtd.flags = MTD_CAP_NORFLASH", + "mtd.size = 134217728 (128M)", + "mtd.erasesize = 262144 (256K)", + "mtd.writesize = 1", + "mtd.oobsize = 0", + "regions = 0", + ]) + + # Test flashcp + self.assertRunOk(f"dd if=/dev/urandom of=random.bin bs={test_size} count=1") + self.assertRunOk(f"flashcp random.bin {mtd}") + self.assertRunOk(f"cmp -s -n {test_size} random.bin {mtd}") + + # Test flash_erase + self.assertRunOk(f"dd if=/dev/zero bs={test_size} count=1 | tr '\\000' '\\377' >nor-erase.bin") + self.assertRunOk(f"flash_erase {mtd} 0 {test_sectors}") + self.assertRunOk(f"cmp -s -n {test_size} nor-erase.bin {mtd}") diff --git a/support/testing/tests/package/test_mtools.py b/support/testing/tests/package/test_mtools.py new file mode 100644 index 00000000..4a232bc9 --- /dev/null +++ b/support/testing/tests/package/test_mtools.py @@ -0,0 +1,66 @@ +import os + +import infra.basetest + + +class TestMtools(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_MTOOLS=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + dos_img = "dos-fat.img" + mtools_opts = f"-i {dos_img}" + + self.assertRunOk("mtools --version") + + # Create an empty image file to hold the FAT partition + self.assertRunOk(f"dd if=/dev/zero of={dos_img} bs=1M count=1") + + # Any Mtools command is expected to fail on an unformated + # partition. + cmd = f"minfo {mtools_opts} ::" + _, exit_code = self.emulator.run(cmd) + self.assertNotEqual(exit_code, 0) + + # Now, let's format the partition file to FAT + self.assertRunOk(f"mformat {mtools_opts} ::") + + # Run some Mtools commands on this empty partition + self.assertRunOk(f"minfo {mtools_opts} ::") + self.assertRunOk(f"mdir {mtools_opts} ::") + self.assertRunOk(f"mlabel {mtools_opts} -N 12345678 ::BUILDROOT") + + # Create a reference file on our Linux filesystem + self.assertRunOk("echo 'Hello Buildroot!' > file1.txt") + + # Copy the reference file into the DOS image, then perform + # various file manipulations + self.assertRunOk(f"mcopy {mtools_opts} file1.txt ::file2.txt") + self.assertRunOk(f"mcopy {mtools_opts} ::file2.txt ::file3.txt") + self.assertRunOk(f"mdel {mtools_opts} ::file2.txt") + self.assertRunOk(f"mren {mtools_opts} ::file3.txt ::file4.txt") + self.assertRunOk(f"mmd {mtools_opts} ::dir1") + self.assertRunOk(f"mmove {mtools_opts} ::file4.txt ::dir1") + self.assertRunOk(f"mdir {mtools_opts} ::dir1") + self.assertRunOk(f"mdu {mtools_opts} -a ::") + + # Copy back the file from the DOS image to the Linux + # filesystem + self.assertRunOk(f"mcopy {mtools_opts} ::dir1/file4.txt file5.txt") + + # We expect this last copied file to have the same content as + # the reference one created at the beginning + self.assertRunOk("cmp file1.txt file5.txt") + + # Delete a directory tree containing a file + self.assertRunOk(f"mdeltree {mtools_opts} ::dir1") diff --git a/support/testing/tests/package/test_mtr.py b/support/testing/tests/package/test_mtr.py new file mode 100644 index 00000000..d78b33a3 --- /dev/null +++ b/support/testing/tests/package/test_mtr.py @@ -0,0 +1,22 @@ +import os + +import infra.basetest + + +class TestMtr(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_MTR=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + self.assertRunOk("mtr --version") + self.assertRunOk("mtr -r -c 5 127.0.0.1", timeout=30) diff --git a/support/testing/tests/package/test_ncdu.py b/support/testing/tests/package/test_ncdu.py new file mode 100644 index 00000000..cbbb27f7 --- /dev/null +++ b/support/testing/tests/package/test_ncdu.py @@ -0,0 +1,23 @@ +import os + +import infra.basetest + + +class TestNcdu(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_NCDU=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + self.assertRunOk("ncdu --version") + self.assertRunOk("ncdu -x -o /tmp/ncdu.list /") + self.assertRunOk("grep -F '\"name\":\"ncdu\"' /tmp/ncdu.list") diff --git a/support/testing/tests/package/test_netcat.py b/support/testing/tests/package/test_netcat.py new file mode 100644 index 00000000..88d58a72 --- /dev/null +++ b/support/testing/tests/package/test_netcat.py @@ -0,0 +1,40 @@ +import os +import time + +import infra.basetest + + +class TestNetCat(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y + BR2_PACKAGE_NETCAT=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + self.assertRunOk("nc --version") + + msg = "Hello Buildroot!" + out_file = "output.txt" + port = 12345 + + cmd = f"nc -n -l -p {port} > {out_file} 2> /dev/null &" + self.assertRunOk(cmd) + + time.sleep(5) + + cmd = f"echo '{msg}' | nc -n -c 127.0.0.1 {port}" + self.assertRunOk(cmd) + + cmd = f"cat {out_file}" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertEqual(out[0], msg) diff --git a/support/testing/tests/package/test_netdata.py b/support/testing/tests/package/test_netdata.py new file mode 100644 index 00000000..6b616398 --- /dev/null +++ b/support/testing/tests/package/test_netdata.py @@ -0,0 +1,22 @@ +import os + +import infra.basetest + + +class TestNetdata(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_NETDATA=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + cmd = "wget localhost:19999 -O - | grep 'netdata dashboard'" + self.assertRunOk(cmd) diff --git a/support/testing/tests/package/test_netsnmp.py b/support/testing/tests/package/test_netsnmp.py new file mode 100644 index 00000000..9561e498 --- /dev/null +++ b/support/testing/tests/package/test_netsnmp.py @@ -0,0 +1,44 @@ +import os + +import infra.basetest + + +class TestNetSNMP(infra.basetest.BRTest): + rootfs_overlay = \ + infra.filepath("tests/package/test_netsnmp/rootfs-overlay") + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + f""" + BR2_PACKAGE_NETSNMP=y + BR2_ROOTFS_OVERLAY="{rootfs_overlay}" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # We check the daemon and a client program can execute. + self.assertRunOk("snmpd --version") + self.assertRunOk("snmpget --version") + + # The daemon is supposed to be started by the initscript, + # since we included a /etc/snmp/snmpd.conf file. We should be + # able to walk through the SNMPv2 system MIB. + self.assertRunOk("snmpwalk -v 2c -c public 127.0.0.1 system") + + # We check few OIDs has the expected values. sysContact and + # sysLocation are set in the snmpd.conf file. + tests = [ + ("system.sysName.0", "STRING: buildroot"), + ("system.sysContact.0", "STRING: Buildroot Test User"), + ("system.sysLocation.0", "STRING: Buildroot Test Infra") + ] + for oid, expected_out in tests: + cmd = f"snmpget -v 2c -c public -Ov 127.0.0.1 {oid}" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertEqual(out[0], expected_out) diff --git a/support/testing/tests/package/test_netsnmp/rootfs-overlay/etc/snmp/snmpd.conf b/support/testing/tests/package/test_netsnmp/rootfs-overlay/etc/snmp/snmpd.conf new file mode 100644 index 00000000..63a33694 --- /dev/null +++ b/support/testing/tests/package/test_netsnmp/rootfs-overlay/etc/snmp/snmpd.conf @@ -0,0 +1,4 @@ +# This is a simple configuration for testing. +syslocation Buildroot Test Infra +syscontact Buildroot Test User +rocommunity public default system diff --git a/support/testing/tests/package/test_nftables.py b/support/testing/tests/package/test_nftables.py new file mode 100644 index 00000000..142e7d03 --- /dev/null +++ b/support/testing/tests/package/test_nftables.py @@ -0,0 +1,109 @@ +import os + +import infra.basetest + + +class TestNftables(infra.basetest.BRTest): + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.46" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_PACKAGE_NFTABLES=y + BR2_PACKAGE_PYTHON3=y + BR2_ROOTFS_OVERLAY="{}" + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + # BR2_TARGET_ROOTFS_TAR is not set + """.format( + infra.filepath("tests/package/test_nftables/rootfs-overlay")) + + def nftables_test(self, prog="nft"): + # Table/Chain names for the test + nft_table = "br_ip_table" + nft_chain = "br_ip_chain_in" + + # We flush all nftables rules, to start from a known state. + self.assertRunOk(f"{prog} flush ruleset") + + # We create an ip table. + self.assertRunOk(f"{prog} add table ip {nft_table}") + + # We should be able to list this table. + list_cmd = f"{prog} list tables ip" + output, exit_code = self.emulator.run(list_cmd) + self.assertEqual(exit_code, 0) + self.assertIn(nft_table, output[0]) + + # We create an ip input chain in our table. + cmd = f"{prog} add chain ip" + cmd += f" {nft_table} {nft_chain}" + cmd += " { type filter hook input priority 0 \\; }" + self.assertRunOk(cmd) + + # We list our chain. + cmd = f"{prog} list chain ip {nft_table} {nft_chain}" + self.assertRunOk(cmd) + + # We add a filter rule to drop pings (icmp echo-requests) to + # the 127.0.0.2 destination. + cmd = f"{prog} add rule ip {nft_table} {nft_chain}" + cmd += " ip daddr 127.0.0.2 icmp type echo-request drop" + self.assertRunOk(cmd) + + # We list our rule. + self.assertRunOk(f"{prog} list ruleset ip") + + # A ping to 127.0.0.1 is expected to work, because it's not + # matching our rule. We expect 3 replies (-c), with 0.5s + # internal (-i), and set a maximum timeout of 2s. + ping_cmd_prefix = "ping -c 3 -i 0.5 -W 2 " + self.assertRunOk(ping_cmd_prefix + "127.0.0.1") + + # A ping to 127.0.0.2 is expected to fail, because our rule is + # supposed to drop it. + ping_test_cmd = ping_cmd_prefix + "127.0.0.2" + _, exit_code = self.emulator.run(ping_test_cmd) + self.assertNotEqual(exit_code, 0) + + # We completely delete the table. This should also delete the + # chain and the rule. + self.assertRunOk(f"{prog} delete table ip {nft_table}") + + # We should no longer see the table in the list. + output, exit_code = self.emulator.run(list_cmd) + self.assertEqual(exit_code, 0) + self.assertNotIn(nft_table, "\n".join(output)) + + # Since we deleted the rule, the ping test command which was + # supposed to fail earlier is now supposed to succeed. + self.assertRunOk(ping_test_cmd) + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["console=ttyAMA0"], + options=["-M", "virt", + "-cpu", "cortex-a57", + "-m", "256M", + "-initrd", img]) + self.emulator.login() + + # We check the program can execute. + self.assertRunOk("nft --version") + + # We run the nftables test sequence using the default "nft" + # user space configuration tool. + self.nftables_test() + + # We run again the same test sequence using our simple nft + # python implementation, to check the language bindings. + self.nftables_test(prog="/root/nft.py") diff --git a/support/testing/tests/package/test_nftables/rootfs-overlay/root/nft.py b/support/testing/tests/package/test_nftables/rootfs-overlay/root/nft.py new file mode 100755 index 00000000..89de8e25 --- /dev/null +++ b/support/testing/tests/package/test_nftables/rootfs-overlay/root/nft.py @@ -0,0 +1,22 @@ +#! /usr/bin/env python3 +# +# This is a simple reimplementation of the "nft" user-space tool in +# Python, in order to test language bindings. It does not support any +# command line argument supported by the nftables "nft" tool, but +# supports all nftables commands used in the Buildroot runtime test. + +import sys + +import nftables + + +nft = nftables.nftables.Nftables() +cmd = " ".join(sys.argv[1:]) +ret_code, output, error = nft.cmd(cmd) + +if len(output) > 0: + print(output.strip()) +if len(error) > 0: + print(error.strip()) + +sys.exit(ret_code) diff --git a/support/testing/tests/package/test_ngrep.py b/support/testing/tests/package/test_ngrep.py new file mode 100644 index 00000000..29aaa55c --- /dev/null +++ b/support/testing/tests/package/test_ngrep.py @@ -0,0 +1,49 @@ +import os +import time + +import infra.basetest + + +class TestNgrep(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y + BR2_PACKAGE_NETCAT=y + BR2_PACKAGE_NGREP=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + port = 12345 + msg = 'Hello Buildroot' + + # Check the program can execute. + self.assertRunOk("ngrep -V") + + # Start a netcat server in background accepting connections + cmd = f"nc -l -p {port} >/dev/null /dev/null &" + self.assertRunOk(cmd) + + time.sleep(1 * self.timeout_multiplier) + + # We run a local port scan. We should see in the output the + # ports we previously opened. + out, ret = self.emulator.run("nmap -n -sS 127.0.0.1", timeout=20) + self.assertEqual(ret, 0) + nmap_out = "\n".join(out) + for port in ports: + self.assertRegex(nmap_out, f"{port}/tcp *open") diff --git a/support/testing/tests/package/test_nodejs.py b/support/testing/tests/package/test_nodejs.py new file mode 100644 index 00000000..2884529c --- /dev/null +++ b/support/testing/tests/package/test_nodejs.py @@ -0,0 +1,82 @@ +import os + +import infra.basetest + + +class TestNodeJSBasic(infra.basetest.BRTest): + config = \ + """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_PACKAGE_NODEJS=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_ROOTFS_POST_BUILD_SCRIPT="{}" + BR2_ROOTFS_POST_SCRIPT_ARGS="{}" + """.format(infra.filepath("tests/package/copy-sample-script-to-target.sh"), + infra.filepath("tests/package/sample_nodejs_basic.js")) + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv7", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + self.assertRunOk("node sample_nodejs_basic.js") + + +class TestNodeJSModuleHostBin(infra.basetest.BRTest): + config = \ + """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_PACKAGE_NODEJS=y + BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL="lodash" + BR2_PACKAGE_HOST_NODEJS_BIN=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_ROOTFS_POST_BUILD_SCRIPT="{}" + BR2_ROOTFS_POST_SCRIPT_ARGS="{}" + """.format(infra.filepath("tests/package/copy-sample-script-to-target.sh"), + infra.filepath("tests/package/sample_nodejs_module.js")) + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv7", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + self.assertRunOk("node sample_nodejs_module.js") + + +class TestNodeJSModuleHostSrc(infra.basetest.BRTest): + config = \ + """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_PACKAGE_NODEJS=y + BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL="lodash" + BR2_PACKAGE_HOST_NODEJS_SRC=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_ROOTFS_POST_BUILD_SCRIPT="{}" + BR2_ROOTFS_POST_SCRIPT_ARGS="{}" + """.format(infra.filepath("tests/package/copy-sample-script-to-target.sh"), + infra.filepath("tests/package/sample_nodejs_module.js")) + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv7", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + self.assertRunOk("node sample_nodejs_module.js") diff --git a/support/testing/tests/package/test_ntp.py b/support/testing/tests/package/test_ntp.py new file mode 100644 index 00000000..13fff641 --- /dev/null +++ b/support/testing/tests/package/test_ntp.py @@ -0,0 +1,86 @@ +import os +import re +import time + +import infra.basetest + + +class TestNtp(infra.basetest.BRTest): + rootfs_overlay = \ + infra.filepath("tests/package/test_ntp/rootfs-overlay") + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + f""" + BR2_PACKAGE_NTP=y + BR2_PACKAGE_NTP_NTPD=y + BR2_PACKAGE_NTP_NTPQ=y + BR2_ROOTFS_OVERLAY="{rootfs_overlay}" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def dict_from_ntpq_output(self, output): + d = {} + for line in output: + if ':' not in line: + continue + fields = re.split(r":", line, maxsplit=2) + name = fields[0].strip() + value = fields[1].strip() + d[name] = value + return d + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Check our binaries can execute. + self.assertRunOk("ntpd --version") + self.assertRunOk("ntpq --version") + + # The ntp daemon is expected to be started from init startup + # scripts, for the Buildroot package recipe. We wait a bit + # here to let the daemon settle. The next test step checks for + # the local peer to be the system peer (by checking the + # '*'). If querying the peers too soon after startup the peer + # will not be marked as such. + time.sleep(3 * self.timeout_multiplier) + + # We query the ntp daemon peers. From our test configuration + # file, we should have exactly one. + out, ret = self.emulator.run("ntpq --peers") + self.assertEqual(ret, 0) + # ntpq --peers produces two lines of headers. So we check we + # have at least 3 lines of output. + self.assertGreaterEqual(len(out), 3) + # We check we see our undisciplined local clock and it's the + # system peer. + self.assertTrue(out[2].startswith("*LOCAL(0)")) + + # We query the refid variable. We expect to see our + # undisciplined local clock. + out, ret = self.emulator.run("ntpq -c 'readvar 0 refid'") + self.assertEqual(ret, 0) + self.assertEqual(out[0], "refid=LOCAL(0)") + + # We query the ntp system info. We check the reference ID is + # the same as in the test configuration file. + out, ret = self.emulator.run("ntpq -c sysinfo") + self.assertEqual(ret, 0) + sysinfo = self.dict_from_ntpq_output(out) + refid = "reference ID" + self.assertIn(refid, sysinfo) + self.assertEqual(sysinfo[refid], "127.127.1.0") + + # Finally, we query the ntp system statistics. We check we can + # see some uptime. We waited a bit at the beginning of this + # test, plus the few queries we previously did should have + # accumulated some uptime. + out, ret = self.emulator.run("ntpq -c sysstats") + self.assertEqual(ret, 0) + sysstats = self.dict_from_ntpq_output(out) + up = "uptime" + self.assertIn(up, sysstats) + self.assertGreater(int(sysstats[up]), 0) diff --git a/support/testing/tests/package/test_ntp/rootfs-overlay/etc/ntp.conf b/support/testing/tests/package/test_ntp/rootfs-overlay/etc/ntp.conf new file mode 100644 index 00000000..2ead3deb --- /dev/null +++ b/support/testing/tests/package/test_ntp/rootfs-overlay/etc/ntp.conf @@ -0,0 +1,10 @@ +# Set an undisciplined local clock for testing without the need of +# network connectivity. +server 127.127.1.0 iburst prefer +fudge 127.127.1.0 stratum 10 + +# Keep standard access control setup. The test is doing local queries +# from 127.0.0.1. +restrict default nomodify nopeer noquery limited kod +restrict 127.0.0.1 +restrict [::1] diff --git a/support/testing/tests/package/test_nu.py b/support/testing/tests/package/test_nu.py new file mode 100644 index 00000000..14ddacfb --- /dev/null +++ b/support/testing/tests/package/test_nu.py @@ -0,0 +1,32 @@ +import os + +import infra.basetest + + +class TestNu(infra.basetest.BRTest): + # infra.basetest.BASIC_TOOLCHAIN_CONFIG cannot be used as it doesn't + # support a host rustc which is necessary for nushell + config = \ + """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_NEON=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_SYSTEM_DHCP="eth0" + BR2_PACKAGE_NUSHELL=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_ROOTFS_POST_BUILD_SCRIPT="{}" + BR2_ROOTFS_POST_SCRIPT_ARGS="{}" + """.format(infra.filepath("tests/package/copy-sample-script-to-target.sh"), + infra.filepath("tests/package/sample_nu.nu")) + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv7", + kernel="builtin", + options=["-initrd", img]) + self.emulator.login() + cmd = "nu sample_nu.nu" + self.assertRunOk(cmd) diff --git a/support/testing/tests/package/test_numactl.py b/support/testing/tests/package/test_numactl.py new file mode 100644 index 00000000..2ef9eb36 --- /dev/null +++ b/support/testing/tests/package/test_numactl.py @@ -0,0 +1,142 @@ +import os +import re + +import infra.basetest + + +class TestNumaCtl(infra.basetest.BRTest): + # A specific configuration is needed for testing numactl: + # - This test uses a x86_64 config, which has mature NUMA support. + # - A kernel need to compiled with a NUMA support. + kernel_fragment = \ + infra.filepath("tests/package/test_numactl/linux-numactl.fragment") + config = \ + f""" + BR2_x86_64=y + BR2_x86_corei7=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.75" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86_64/linux.config" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{kernel_fragment}" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y + BR2_PACKAGE_NUMACTL=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def check_numactl_preferred(self): + # Show the default NUMA policy settings. We check we have the + # 4 physical cpus on 2 nodes we configured the emulator + # command line. + out, ret = self.emulator.run("numactl --show") + self.assertEqual(ret, 0) + checks = [ + "policy: default", + "preferred node: current", + "physcpubind: 0 1 2 3 ", + "nodebind: 0 1 ", + "membind: 0 1 " + ] + for pattern in checks: + self.assertIn(pattern, out) + + # Check the preferred policy on different nodes. This command + # is taken from the numactl man page. + for pref_node in range(2): + cmd = f"numactl --preferred={pref_node} numactl --show" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + checks = [ + "policy: preferred", + f"preferred node: {pref_node}" + ] + for pattern in checks: + self.assertIn(pattern, out) + + def get_numa_node_free_mem(self): + out, ret = self.emulator.run("numactl --hardware") + self.assertEqual(ret, 0) + free_mem = {} + p = re.compile("^node ([0-9]+) free: ([0-9]+) MB") + for line in out: + m = p.match(line) + if m: + node = int(m.group(1)) + mem = int(m.group(2)) + free_mem[node] = mem + return free_mem + + def check_numactl_membind(self): + # We get the current amount of free memory on each node, for + # later comparison. + initial_node_free_mem = self.get_numa_node_free_mem() + + # We allocate a shared memory file with a restriction to be in + # node 1 memory only. + shm_file = "/dev/shm/file" + file_size = 100 + cmd = f"numactl --membind=1 dd if=/dev/zero of={shm_file} bs=1M count={file_size}" + self.assertRunOk(cmd) + + # We collect again the amount of free memory per node. + node_free_mem = self.get_numa_node_free_mem() + + # Since we allocated 100M on node 1 only, we check the free + # space on node 0 did not significantly changed and on node 1 + # approximately reduced of the file size. + diff = initial_node_free_mem[0] - node_free_mem[0] + self.assertAlmostEqual(diff, 0, delta=10) + diff = initial_node_free_mem[1] - node_free_mem[1] + self.assertAlmostEqual(diff, file_size, delta=10) + + # Remove the file, to free the memory. + self.assertRunOk(f"rm -f {shm_file}") + + # We allocate again a file in shared memory, but this time in + # two chunks. Each chunk is requested to be allocated in two + # different nodes. This example is taken from the numactl man + # page. + chunk_size = file_size // 2 + cmd = "numactl --membind=0 " + cmd += f"dd if=/dev/zero of={shm_file} bs=1M count={chunk_size}" + self.assertRunOk(cmd) + cmd = "numactl --membind=1 " + cmd += f"dd if=/dev/zero of={shm_file} bs=1M count={chunk_size} seek={chunk_size}" + self.assertRunOk(cmd) + + # We collect again the amount of free memory. + node_free_mem = self.get_numa_node_free_mem() + + # We check the free memory space approximately reduced of each + # chunk size. + for node in range(2): + free_mem_diff = initial_node_free_mem[node] - node_free_mem[node] + self.assertAlmostEqual(free_mem_diff, chunk_size, delta=5) + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "bzImage") + # We start the Qemu emulator with 4 processors on 2 NUMA nodes. + self.emulator.boot(arch="x86_64", + kernel=kern, + kernel_cmdline=["console=ttyS0"], + options=["-cpu", "Nehalem", "-m", "512M", + "-smp", "cpus=4,sockets=2,cores=2,maxcpus=4", + "-object", "memory-backend-ram,size=256M,id=m0", + "-object", "memory-backend-ram,size=256M,id=m1", + "-numa", "node,cpus=0-1,nodeid=0,memdev=m0", + "-numa", "node,cpus=2-3,nodeid=1,memdev=m1", + "-initrd", img]) + self.emulator.login() + + # Check a simple numactl invication: + # show the NUMA hardware inventory. + self.assertRunOk("numactl --hardware") + + self.check_numactl_preferred() + self.check_numactl_membind() diff --git a/support/testing/tests/package/test_numactl/linux-numactl.fragment b/support/testing/tests/package/test_numactl/linux-numactl.fragment new file mode 100644 index 00000000..e480f0c0 --- /dev/null +++ b/support/testing/tests/package/test_numactl/linux-numactl.fragment @@ -0,0 +1 @@ +CONFIG_NUMA=y diff --git a/support/testing/tests/package/test_octave.py b/support/testing/tests/package/test_octave.py new file mode 100644 index 00000000..cdbe2688 --- /dev/null +++ b/support/testing/tests/package/test_octave.py @@ -0,0 +1,79 @@ +import os + +import infra.basetest + + +class TestOctave(infra.basetest.BRTest): + # infra.basetest.BASIC_TOOLCHAIN_CONFIG cannot be used as it does + # not include gfortran. + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.26" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_PACKAGE_OCTAVE=y + """ + timeout = 60 + + def octave_cmd(self, octave_expr): + return "octave --quiet --eval '{}'".format(octave_expr) + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["console=ttyAMA0"], + options=["-M", "virt", "-cpu", "cortex-a57", "-m", "512M", "-initrd", img]) + self.emulator.login() + + # Check Euler identity + cmd = self.octave_cmd("assert (exp(i*pi)+1, 0, 1e-10)") + self.assertRunOk(cmd) + + # Solve equation system example from Octave homepage + octave_expr = "b = [4; 9; 2]; " + octave_expr += "A = [ 3 4 5; 1 3 1; 3 5 9 ]; " + octave_expr += "x = A \\ b; " + octave_expr += "assert(x, [-1.5; 4; -1.5], 1e-10)" + cmd = self.octave_cmd(octave_expr) + self.assertRunOk(cmd) + + # Check octave can fail + cmd = self.octave_cmd("assert(false)") + _, exit_code = self.emulator.run(cmd) + self.assertNotEqual(exit_code, 0) + + # Check string output + string = "Hello World" + cmd = self.octave_cmd("printf(\"{}\\n\")".format(string)) + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(output, [string]) + + # Run some octave self tests + octave_modules = [ + "elfun/atan2d", + "elfun/sind", + "general/gradient", + "general/num2str", + "polynomial/poly", + "signal/fftconv", + "special-matrix/magic", + "specfun/isprime", + "statistics/corr", + "strings/str2num" + ] + + for mod in octave_modules: + cmd = self.octave_cmd('assert(test(\"{}\"),true)'.format(mod)) + self.assertRunOk(cmd, timeout=10) diff --git a/support/testing/tests/package/test_ola.py b/support/testing/tests/package/test_ola.py new file mode 100644 index 00000000..017d6f7e --- /dev/null +++ b/support/testing/tests/package/test_ola.py @@ -0,0 +1,95 @@ +import os + +import infra.basetest + + +class TestOla(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_OLA=y + BR2_PACKAGE_OLA_EXAMPLES=y + BR2_PACKAGE_OLA_PLUGIN_DUMMY=y + BR2_PACKAGE_OLA_PYTHON_BINDINGS=y + BR2_PACKAGE_OLA_WEB=y + BR2_PACKAGE_PYTHON3=y + BR2_ROOTFS_OVERLAY="{}" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """.format( + # overlay to add a script to test ola python bindings + infra.filepath("tests/package/test_ola/rootfs-overlay")) + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Check program executes + cmd = "olad --version" + self.assertRunOk(cmd) + + # Start the daemon and wait a bit for it to settle + cmd = "olad --daemon && sleep 2" + self.assertRunOk(cmd) + + # Check dummy plugin is loaded + cmd = "ola_plugin_info | grep -Fi dummy" + self.assertRunOk(cmd) + + # Check dummy device and port are listed + cmd = "ola_dev_info" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertIn("Device 1: Dummy Device", output[0]) + self.assertIn("port 0, OUT Dummy Port", output[1]) + + # Create Universe 0 + cmd = "ola_patch --device 1 --port 0 --universe 0" + self.assertRunOk(cmd) + + # Check Universe 0 is created + cmd = "ola_dev_info" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertIn("patched to universe 0", output[1]) + + # Discover Dummy device RDM UID + cmd = "ola_rdm_discover --universe 0 | head -1" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + rdm_uid = output[0] + + # Get RDM manufacturer_label PID + cmd = "ola_rdm_get --universe 0 --uid {} manufacturer_label".format(rdm_uid) + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], "Open Lighting Project") + + # Get RDM dmx_start_address PID, checks default value is 1 + cmd = "ola_rdm_get --universe 0 --uid {} dmx_start_address".format(rdm_uid) + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], "DMX Address: 1") + + # Set RDM dmx_start_address PID to 2 + cmd = "ola_rdm_set --universe 0 --uid {} dmx_start_address 2".format(rdm_uid) + self.assertRunOk(cmd) + + # Get the new RDM dmx_start_address PID, checks value is now 2 + cmd = "ola_rdm_get --universe 0 --uid {} dmx_start_address".format(rdm_uid) + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], "DMX Address: 2") + + # Perform a full RDM discovery using python bindings. The test + # expect to find the same UID detected with the C client. + cmd = "sample_ola_rdm_discovery.py | head -1" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], rdm_uid) + + # Test olad web interface + cmd = "wget -q -O - http://127.0.0.1:9090/ola.html | grep -F 'OLA Admin'" + self.assertRunOk(cmd) diff --git a/support/testing/tests/package/test_ola/rootfs-overlay/usr/bin/sample_ola_rdm_discovery.py b/support/testing/tests/package/test_ola/rootfs-overlay/usr/bin/sample_ola_rdm_discovery.py new file mode 100755 index 00000000..c2aa0733 --- /dev/null +++ b/support/testing/tests/package/test_ola/rootfs-overlay/usr/bin/sample_ola_rdm_discovery.py @@ -0,0 +1,24 @@ +#! /usr/bin/env python3 + +import sys + +from ola.ClientWrapper import ClientWrapper + + +def show_uids(state, uids): + if state.Succeeded(): + for uid in uids: + print(str(uid)) + else: + print('Error: %s' % state.message, file=sys.stderr) + wrapper.Stop() + + +wrapper = ClientWrapper() +client = wrapper.Client() +universe = 0 +full_discovery = True + +client.RunRDMDiscovery(universe, full_discovery, show_uids) + +wrapper.Run() diff --git a/support/testing/tests/package/test_openblas.py b/support/testing/tests/package/test_openblas.py new file mode 100644 index 00000000..9cfe08ef --- /dev/null +++ b/support/testing/tests/package/test_openblas.py @@ -0,0 +1,56 @@ +import os + +import infra.basetest + + +class TestOpenBLAS(infra.basetest.BRTest): + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.27" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_PACKAGE_OPENBLAS=y + BR2_PACKAGE_OPENBLAS_INSTALL_TESTS=y + """ + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["console=ttyAMA0"], + options=["-M", "virt", "-cpu", "cortex-a57", "-smp", "2", "-m", "512M", "-initrd", img]) + self.emulator.login() + + test_prefix = "/usr/libexec/openblas/tests" + + # BLAS data types: + blas_data_types = [ + "s", # Single precision (32bit) float + "d", # Double precision (64bit) double + "c", # Single precision (32bit) complex + "z" # Double precision (64bit) complex + ] + + # BLAS routine levels: + # Level 1: Vector operations, + # Level 2: Matrix-Vector operations, + # Level 3: Matrix-Matrix operations. + for blas_level in range(1, 4): + for blas_data_type in blas_data_types: + test_name = f"x{blas_data_type}cblat{blas_level}" + cmd = test_prefix + "/" + test_name + + if blas_level > 1: + cmd += f" < {test_prefix}/{blas_data_type}in{blas_level}" + + self.assertRunOk(cmd, timeout=30) diff --git a/support/testing/tests/package/test_openjdk.py b/support/testing/tests/package/test_openjdk.py new file mode 100644 index 00000000..26b7f9ee --- /dev/null +++ b/support/testing/tests/package/test_openjdk.py @@ -0,0 +1,48 @@ +import os + +import infra.basetest + + +class TestOpenJdk(infra.basetest.BRTest): + br2_external = [infra.filepath("tests/package/br2-external/openjdk")] + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.34" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + BR2_PACKAGE_XORG7=y + BR2_PACKAGE_OPENJDK=y + BR2_PACKAGE_OPENJDK_HELLO_WORLD=y + BR2_PACKAGE_OPENJDK_JNI_TEST=y + """ + + def login(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["console=ttyAMA0"], + options=["-M", "virt", "-cpu", "cortex-a57", "-m", "512M", "-initrd", img]) + self.emulator.login() + + def test_run(self): + self.login() + + cmd = "java -cp /usr/bin HelloWorld" + output, exit_code = self.emulator.run(cmd, 120) + print(output) + self.assertEqual(exit_code, 0) + self.assertEqual(output, ["Hello, World"]) + + cmd = "java -cp /usr/bin JniTest" + output, exit_code = self.emulator.run(cmd, 120) + print(output) + self.assertEqual(exit_code, 0) diff --git a/support/testing/tests/package/test_openssh.py b/support/testing/tests/package/test_openssh.py new file mode 100644 index 00000000..a28c28f7 --- /dev/null +++ b/support/testing/tests/package/test_openssh.py @@ -0,0 +1,63 @@ +import os + +import infra.basetest + + +class TestOpensshBase(infra.basetest.BRTest): + passwd = "testpwd" + opensshconfig = \ + """ + BR2_TARGET_GENERIC_ROOT_PASSWD="{}" + BR2_PACKAGE_OPENSSH=y + BR2_PACKAGE_SSHPASS=y + BR2_ROOTFS_POST_BUILD_SCRIPT="{}" + # BR2_TARGET_ROOTFS_TAR is not set + """.format( + passwd, + infra.filepath("tests/package/test_openssh/post-build.sh")) + + def openssh_test(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", img, + "-net", "none"]) + self.emulator.login(self.passwd) + + cmd = "netstat -ltn 2>/dev/null | grep 0.0.0.0:22" + self.assertRunOk(cmd) + + cmd = "sshpass -p {} ssh -oStrictHostKeyChecking=no localhost /bin/true".format(self.passwd) + self.assertRunOk(cmd) + + +class TestOpenSshuClibc(TestOpensshBase): + config = \ + TestOpensshBase.opensshconfig + \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_UCLIBC_STABLE=y + BR2_TARGET_ROOTFS_CPIO=y + """ + + def test_run(self): + self.openssh_test() + + +class TestOpenSshGlibc(TestOpensshBase): + + config = \ + TestOpensshBase.opensshconfig + \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_GLIBC_BLEEDING_EDGE=y + BR2_PACKAGE_RNG_TOOLS=y + BR2_TARGET_ROOTFS_CPIO=y + """ + + def test_run(self): + self.openssh_test() diff --git a/support/testing/tests/package/test_openssh/post-build.sh b/support/testing/tests/package/test_openssh/post-build.sh new file mode 100755 index 00000000..5a81ede5 --- /dev/null +++ b/support/testing/tests/package/test_openssh/post-build.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +cat <<_EOF_ >>"${TARGET_DIR}/etc/ssh/sshd_config" +PermitRootLogin yes +PasswordAuthentication yes +_EOF_ diff --git a/support/testing/tests/package/test_opkg.py b/support/testing/tests/package/test_opkg.py new file mode 100644 index 00000000..e47879ca --- /dev/null +++ b/support/testing/tests/package/test_opkg.py @@ -0,0 +1,61 @@ +import os + +import infra.basetest + + +class TestOpkg(infra.basetest.BRTest): + # The snmpd service is used as an example for this test of a set of files + # that can be archived up and deployed/removed to test opkg + # + # The post build script uses an ipk-build template and assembles the test + # package. + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_NETSNMP=y + # BR2_PACKAGE_NETSNMP_CLIENTS is not set + # BR2_PACKAGE_NETSNMP_ENABLE_MIBS is not set + BR2_PACKAGE_OPKG=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_PACKAGE_HOST_OPKG_UTILS=y + BR2_ROOTFS_POST_BUILD_SCRIPT="{}" + """.format(infra.filepath("tests/package/test_opkg/post-build.sh")) + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # This test sequence tests the install and removal of a running + # service and configuration files. It also exercises the postinst + # and prerm scripting provided in the package archive. + + cmd = "opkg install example-snmpd-package_1.0_arm.ipk" + self.assertRunOk(cmd) + + cmd = "opkg list-installed | grep example-snmpd-package" + self.assertRunOk(cmd) + + # Check that postinst script ran to start the services + cmd = "ps aux | grep [s]nmpd" + self.assertRunOk(cmd) + + # If successful, the prerm script ran to stop the service prior to + # the removal of the service scripting and files + cmd = "opkg remove example-snmpd-package" + self.assertRunOk(cmd) + + # Verify after package removal that the services is not + # running, but let's give it some time to really stop + # (otherwise a [snmpd] process might show up in the ps output) + cmd = "sleep 1 && ps aux | grep [s]nmpd" + _, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 1) + + # This folder for configs is provided by the package install and + # should no longer be present after package removal + cmd = "ls /etc/snmp" + _, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 1) diff --git a/support/testing/tests/package/test_opkg/post-build.sh b/support/testing/tests/package/test_opkg/post-build.sh new file mode 100755 index 00000000..1a6981b5 --- /dev/null +++ b/support/testing/tests/package/test_opkg/post-build.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash + +IPK_BUILD=${BUILD_DIR}/ipk-build + +# Pull the files for the snmpd service out of the target to create a install archive +# and setup a basic configuration so that the startup script works. +mkdir -p ${IPK_BUILD}/CONTROL \ + ${IPK_BUILD}/etc/init.d/ \ + ${IPK_BUILD}/usr/sbin \ + ${IPK_BUILD}/etc/snmp \ + ${IPK_BUILD}/etc/default +mv -f ${TARGET_DIR}/etc/init.d/S59snmpd ${IPK_BUILD}/etc/init.d/ +mv -f ${TARGET_DIR}/usr/sbin/snmpd ${IPK_BUILD}/usr/sbin/ +echo "agentuser nobody" > ${IPK_BUILD}/etc/snmp/snmpd.conf +echo "SNMPDRUN=yes" > ${IPK_BUILD}/etc/default/snmpd + +# build the control file +cat <${IPK_BUILD}/CONTROL/control +Package: example-snmpd-package +Version: 1.0 +Architecture: arm +Maintainer: user@domain.tld +Section: extras +Priority: optional +Source: http://example.com +Description: This is an example IPK package for installing snmpd +EOM + +# preinst script is not created to run before the install for this test example + +# postinst script is ran after install completes to start the services +cat <${IPK_BUILD}/CONTROL/postinst +#!/bin/sh +/etc/init.d/S59snmpd start +EOM +chmod +x ${IPK_BUILD}/CONTROL/postinst + +# prerm script is ran before removal so that the services isn't in use +cat <${IPK_BUILD}/CONTROL/prerm +#!/bin/sh +/etc/init.d/S59snmpd stop +EOM +chmod +x ${IPK_BUILD}/CONTROL/prerm + +# build the archive from template and pkg files +${HOST_DIR}/bin/opkg-build -Z gzip ${IPK_BUILD} ${TARGET_DIR}/root/ +rm -fr ${IPK_BUILD} diff --git a/support/testing/tests/package/test_pciutils.py b/support/testing/tests/package/test_pciutils.py new file mode 100644 index 00000000..3221b0cf --- /dev/null +++ b/support/testing/tests/package/test_pciutils.py @@ -0,0 +1,83 @@ +import os + +import infra.basetest + + +class TestPCIUtils(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_PCIUTILS=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + + # Note: we add a qemu pci-testdev in order to have a stable + # device ID, and for writing in configuration space without + # interfering with the rest of the emulation. See: + # https://www.qemu.org/docs/master/specs/pci-testdev.html + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file, + "-device", "pci-testdev"]) + self.emulator.login() + + # Check the program executes. This test also check that we + # have "lspci" from the pciutils package, rather than the + # busybox applet (which does not recognize the --version + # option)" + self.assertRunOk("lspci --version") + + # Check few program invocations. + self.assertRunOk("lspci") + for lspci_opt in ["-t", "-n", "-v", "-vv", "-x"]: + self.assertRunOk(f"lspci {lspci_opt}") + + # Check we can see the qemu pci-testdev. + # Vendor: 1b36: Red Hat, Inc. + # Device: 0005: QEMU PCI Test Device + pci_vendor_id = "1b36" + pci_device_id = "0005" + pci_dev = f"{pci_vendor_id}:{pci_device_id}" + cmd = f"lspci -d {pci_dev}" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertIn("Red Hat, Inc.", output[0]) + self.assertIn("QEMU PCI Test Device", output[0]) + + # We disable INTx emulation by setting bit 10 of the COMMAND + # register in the configuration space. See: + # https://git.kernel.org/pub/scm/utils/pciutils/pciutils.git/tree/lib/header.h?h=v3.10.0#n26 + dis_int_x = 0x400 + data_mask = f"{hex(dis_int_x)}:{hex(dis_int_x)}" + cmd = f"setpci -d {pci_dev} COMMAND.w={data_mask}" + self.assertRunOk(cmd) + + # We read back and check the value. + cmd = f"setpci -d {pci_dev} COMMAND.w" + output, exit_code = self.emulator.run(cmd) + read_value = int(output[0], 16) + self.assertEqual(exit_code, 0) + self.assertTrue((read_value & dis_int_x) == dis_int_x) + + # We check lspci now see the disabled INTx emulation. + cmd = f"lspci -vv -d {pci_dev} | grep -F 'DisINTx+'" + self.assertRunOk(cmd) + + # We re-enable the INTx emulation by clearing the bit 10. + data_mask = f"0x0:{hex(dis_int_x)}" + cmd = f"setpci -d {pci_dev} COMMAND.w={data_mask}" + self.assertRunOk(cmd) + + # We read back and check the value, again. + cmd = f"setpci -d {pci_dev} COMMAND.w" + output, exit_code = self.emulator.run(cmd) + read_value = int(output[0], 16) + self.assertEqual(exit_code, 0) + self.assertTrue((read_value & dis_int_x) == 0) + + # We check lspci now see the enabled INTx emulation. + cmd = f"lspci -vv -d {pci_dev} | grep -F 'DisINTx-'" + self.assertRunOk(cmd) diff --git a/support/testing/tests/package/test_perftest.py b/support/testing/tests/package/test_perftest.py new file mode 100644 index 00000000..08089456 --- /dev/null +++ b/support/testing/tests/package/test_perftest.py @@ -0,0 +1,48 @@ +import os + +import infra.basetest + + +class TestPerftest(infra.basetest.BRTest): + + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.33" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_PACKAGE_IPROUTE2=y + BR2_PACKAGE_LIBMNL=y + BR2_PACKAGE_RDMA_CORE=y + BR2_PACKAGE_PERFTEST=y + """.format( + infra.filepath("tests/package/test_rdma_core/linux-rdma.fragment") + ) + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["console=ttyAMA0"], + options=["-M", "virt", "-cpu", "cortex-a57", "-m", "512M", "-initrd", img]) + self.emulator.login() + + # Add the rxe0 interface + self.assertRunOk("ip link set dev eth0 up") + self.assertRunOk("rdma link add rxe0 type rxe netdev eth0") + + # start a server + self.assertRunOk("ib_read_bw > /dev/null 2>&1 &") + + # start a client + self.assertRunOk("sleep 1 && ib_read_bw 127.0.0.1") diff --git a/support/testing/tests/package/test_perl.py b/support/testing/tests/package/test_perl.py new file mode 100644 index 00000000..ae3f1059 --- /dev/null +++ b/support/testing/tests/package/test_perl.py @@ -0,0 +1,65 @@ +import os + +import infra.basetest + + +class TestPerlBase(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def login(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + def module_test(self, module, script="1"): + cmd = "perl -M{} -e '{}'".format(module, script) + self.assertRunOk(cmd) + + +class TestPerl(TestPerlBase): + config = TestPerlBase.config + \ + """ + BR2_PACKAGE_PERL=y + """ + + def version_test(self): + cmd = "perl -v" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertIn("This is perl 5", output[1]) + + def core_modules_test(self): + self.module_test("Cwd") + self.module_test("Data::Dumper") + self.module_test("Devel::Peek") + self.module_test("Digest::MD5") + self.module_test("Digest::SHA") + self.module_test("Encode") + self.module_test("Fcntl") + self.module_test("File::Glob") + self.module_test("Hash::Util") + self.module_test("I18N::Langinfo") + self.module_test("IO::Handle") + self.module_test("IPC::SysV") + self.module_test("List::Util") + self.module_test("MIME::Base64") + self.module_test("POSIX") + self.module_test("Socket") + self.module_test("Storable") + self.module_test("Sys::Hostname") + self.module_test("Sys::Syslog") + self.module_test("Time::HiRes") + self.module_test("Time::Piece") + self.module_test("Unicode::Collate") + self.module_test("Unicode::Normalize") + + def test_run(self): + self.login() + self.version_test() + self.core_modules_test() diff --git a/support/testing/tests/package/test_perl_class_load.py b/support/testing/tests/package/test_perl_class_load.py new file mode 100644 index 00000000..04229700 --- /dev/null +++ b/support/testing/tests/package/test_perl_class_load.py @@ -0,0 +1,29 @@ +from tests.package.test_perl import TestPerlBase + + +class TestPerlClassLoad(TestPerlBase): + """ + package: + Class-Load + direct dependencies: + Data-OptList + Module-Implementation + Module-Runtime + Package-Stash + Try-Tiny + indirect dependencies: + Dist-CheckConflicts + Params-Util XS + Sub-Install + """ + + config = TestPerlBase.config + \ + """ + BR2_PACKAGE_PERL=y + BR2_PACKAGE_PERL_CLASS_LOAD=y + """ + + def test_run(self): + self.login() + self.module_test("Params::Util") + self.module_test("Class::Load") diff --git a/support/testing/tests/package/test_perl_dbd_mysql.py b/support/testing/tests/package/test_perl_dbd_mysql.py new file mode 100644 index 00000000..93551b42 --- /dev/null +++ b/support/testing/tests/package/test_perl_dbd_mysql.py @@ -0,0 +1,32 @@ +from tests.package.test_perl import TestPerlBase +import os + + +class TestPerlDBDmysql(TestPerlBase): + """ + package: + DBD-mysql XS + direct dependencies: + DBI XS + """ + + config = TestPerlBase.config + \ + """ + BR2_PACKAGE_PERL=y + BR2_PACKAGE_PERL_DBD_MYSQL=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_SIZE="120M" + """ + + def login(self): + ext2_file = os.path.join(self.builddir, "images", "rootfs.ext2") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-drive", "file=%s,if=scsi,format=raw" % ext2_file], + kernel_cmdline=["rootwait", "root=/dev/sda"]) + self.emulator.login() + + def test_run(self): + self.login() + self.module_test("DBI") + self.module_test("DBD::mysql") diff --git a/support/testing/tests/package/test_perl_encode_detect.py b/support/testing/tests/package/test_perl_encode_detect.py new file mode 100644 index 00000000..4b33fee0 --- /dev/null +++ b/support/testing/tests/package/test_perl_encode_detect.py @@ -0,0 +1,20 @@ +from tests.package.test_perl import TestPerlBase + + +class TestPerlEncodeDetect(TestPerlBase): + """ + package: + Encode-Detect XS + direct dependencies: + Module-Build + """ + + config = TestPerlBase.config + \ + """ + BR2_PACKAGE_PERL=y + BR2_PACKAGE_PERL_ENCODE_DETECT=y + """ + + def test_run(self): + self.login() + self.module_test("Encode::Detect") diff --git a/support/testing/tests/package/test_perl_gdgraph.py b/support/testing/tests/package/test_perl_gdgraph.py new file mode 100644 index 00000000..23ddbca4 --- /dev/null +++ b/support/testing/tests/package/test_perl_gdgraph.py @@ -0,0 +1,22 @@ +from tests.package.test_perl import TestPerlBase + + +class TestPerlGDGraph(TestPerlBase): + """ + package: + GDGraph + direct dependencies: + GD XS + GDTextUtil + """ + + config = TestPerlBase.config + \ + """ + BR2_PACKAGE_PERL=y + BR2_PACKAGE_PERL_GDGRAPH=y + """ + + def test_run(self): + self.login() + self.module_test("GD") + self.module_test("GD::Graph") diff --git a/support/testing/tests/package/test_perl_html_parser.py b/support/testing/tests/package/test_perl_html_parser.py new file mode 100644 index 00000000..64316334 --- /dev/null +++ b/support/testing/tests/package/test_perl_html_parser.py @@ -0,0 +1,20 @@ +from tests.package.test_perl import TestPerlBase + + +class TestPerlHTMLParser(TestPerlBase): + """ + package: + HTML-Parser XS + direct dependencies: + HTML-Tagset + """ + + config = TestPerlBase.config + \ + """ + BR2_PACKAGE_PERL=y + BR2_PACKAGE_PERL_HTML_PARSER=y + """ + + def test_run(self): + self.login() + self.module_test("HTML::Parser") diff --git a/support/testing/tests/package/test_perl_io_socket_multicast.py b/support/testing/tests/package/test_perl_io_socket_multicast.py new file mode 100644 index 00000000..48a086a6 --- /dev/null +++ b/support/testing/tests/package/test_perl_io_socket_multicast.py @@ -0,0 +1,21 @@ +from tests.package.test_perl import TestPerlBase + + +class TestPerlIOSocketMulticast(TestPerlBase): + """ + package: + IO-Socket-Multicast XS + direct dependencies: + IO-Interface XS + """ + + config = TestPerlBase.config + \ + """ + BR2_PACKAGE_PERL=y + BR2_PACKAGE_PERL_IO_SOCKET_MULTICAST=y + """ + + def test_run(self): + self.login() + self.module_test("IO::Interface") + self.module_test("IO::Socket::Multicast") diff --git a/support/testing/tests/package/test_perl_io_socket_ssl.py b/support/testing/tests/package/test_perl_io_socket_ssl.py new file mode 100644 index 00000000..80835fdc --- /dev/null +++ b/support/testing/tests/package/test_perl_io_socket_ssl.py @@ -0,0 +1,22 @@ +from tests.package.test_perl import TestPerlBase + + +class TestPerlIOSocketSSL(TestPerlBase): + """ + package: + IO-Socket-SSL + direct dependencies: + Mozilla-CA + Net-SSLeay XS + """ + + config = TestPerlBase.config + \ + """ + BR2_PACKAGE_PERL=y + BR2_PACKAGE_PERL_IO_SOCKET_SSL=y + """ + + def test_run(self): + self.login() + self.module_test("Net::SSLeay") + self.module_test("IO::Socket::SSL") diff --git a/support/testing/tests/package/test_perl_libwww_perl.py b/support/testing/tests/package/test_perl_libwww_perl.py new file mode 100644 index 00000000..4dcfa06f --- /dev/null +++ b/support/testing/tests/package/test_perl_libwww_perl.py @@ -0,0 +1,40 @@ +from tests.package.test_perl import TestPerlBase + + +class TestPerllibwwwperl(TestPerlBase): + """ + package: + libwww-perl + direct dependencies: + Encode-Locale + File-Listing + HTML-Parser XS + HTTP-Cookies + HTTP-Date + HTTP-Message + HTTP-Negotiate + LWP-MediaTypes + Net-HTTP + Try-Tiny + URI + WWW-RobotRules + indirect dependencies: + HTML-Tagset + IO-HTML + """ + + config = TestPerlBase.config + \ + """ + BR2_PACKAGE_PERL=y + BR2_PACKAGE_PERL_LIBWWW_PERL=y + """ + + def test_run(self): + self.login() + self.module_test("LWP") + self.module_test("LWP::UserAgent") + self.module_test("LWP::Authen::Basic") + self.module_test("LWP::Authen::Digest") + self.module_test("HTML::Parser") + self.module_test("HTTP::Message") + self.module_test("WWW::RobotRules") diff --git a/support/testing/tests/package/test_perl_lwp_protocol_https.py b/support/testing/tests/package/test_perl_lwp_protocol_https.py new file mode 100644 index 00000000..35437459 --- /dev/null +++ b/support/testing/tests/package/test_perl_lwp_protocol_https.py @@ -0,0 +1,42 @@ +from tests.package.test_perl import TestPerlBase + + +class TestPerlLWPProtocolhttps(TestPerlBase): + """ + package: + LWP-Protocol-https + direct dependencies: + IO-Socket-SSL + Mozilla-CA + Net-HTTP + libwww-perl + indirect dependencies: + Encode-Locale + File-Listing + HTML-Parser XS + HTML-Tagset + HTTP-Cookies + HTTP-Daemon + HTTP-Date + HTTP-Message + HTTP-Negotiate + IO-HTML + LWP-MediaTypes + Net-SSLeay XS + TimeDate + Try-Tiny + URI + WWW-RobotRules + """ + + config = TestPerlBase.config + \ + """ + BR2_PACKAGE_PERL=y + BR2_PACKAGE_PERL_LWP_PROTOCOL_HTTPS=y + """ + + def test_run(self): + self.login() + self.module_test("HTML::Parser") + self.module_test("Net::SSLeay") + self.module_test("LWP::Protocol::https") diff --git a/support/testing/tests/package/test_perl_mail_dkim.py b/support/testing/tests/package/test_perl_mail_dkim.py new file mode 100644 index 00000000..cd9e7579 --- /dev/null +++ b/support/testing/tests/package/test_perl_mail_dkim.py @@ -0,0 +1,30 @@ +from tests.package.test_perl import TestPerlBase + + +class TestPerlMailDKIM(TestPerlBase): + """ + package: + Mail-DKIM + direct dependencies: + Crypt-OpenSSL-RSA XS + MailTools + Net-DNS + Net-DNS-Resolver-Mock + YAML-LibYAML XS + indirect dependencies: + Crypt-OpenSSL-Random XS + Digest-HMAC + TimeDate + """ + + config = TestPerlBase.config + \ + """ + BR2_PACKAGE_PERL=y + BR2_PACKAGE_PERL_MAIL_DKIM=y + """ + + def test_run(self): + self.login() + self.module_test("Crypt::OpenSSL::Random") + self.module_test("Crypt::OpenSSL::RSA") + self.module_test("Mail::DKIM") diff --git a/support/testing/tests/package/test_perl_x10.py b/support/testing/tests/package/test_perl_x10.py new file mode 100644 index 00000000..b587804a --- /dev/null +++ b/support/testing/tests/package/test_perl_x10.py @@ -0,0 +1,23 @@ +from tests.package.test_perl import TestPerlBase + + +class TestPerlX10(TestPerlBase): + """ + package: + X10 + direct dependencies: + Astro-SunTime + Device-SerialPort XS + Time-ParseDate + """ + + config = TestPerlBase.config + \ + """ + BR2_PACKAGE_PERL=y + BR2_PACKAGE_PERL_X10=y + """ + + def test_run(self): + self.login() + self.module_test("Device::SerialPort") + self.module_test("X10") diff --git a/support/testing/tests/package/test_perl_xml_libxml.py b/support/testing/tests/package/test_perl_xml_libxml.py new file mode 100644 index 00000000..faace5dd --- /dev/null +++ b/support/testing/tests/package/test_perl_xml_libxml.py @@ -0,0 +1,22 @@ +from tests.package.test_perl import TestPerlBase + + +class TestPerlXMLLibXML(TestPerlBase): + """ + package: + XML-LibXML XS + direct dependencies: + XML-NamespaceSupport + XML-SAX + XML-SAX-Base + """ + + config = TestPerlBase.config + \ + """ + BR2_PACKAGE_PERL=y + BR2_PACKAGE_PERL_XML_LIBXML=y + """ + + def test_run(self): + self.login() + self.module_test("XML::LibXML") diff --git a/support/testing/tests/package/test_php_apcu.py b/support/testing/tests/package/test_php_apcu.py new file mode 100644 index 00000000..7c149a5e --- /dev/null +++ b/support/testing/tests/package/test_php_apcu.py @@ -0,0 +1,35 @@ +import os + +import infra.basetest + + +class TestPhpApcu(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_PHP=y + BR2_PACKAGE_PHP_SAPI_CLI=y + BR2_PACKAGE_PHP_APCU=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", img]) + self.emulator.login() + + self.assertRunOk("mkdir /etc/php.d") + self.assertRunOk("echo 'extension=apcu.so' > /etc/php.d/apcu.ini") + # enable_cli enables APC for the CLI version of PHP, which is what we + # use in this test case. + self.assertRunOk("echo 'apc.enable_cli=1' >> /etc/php.d/apcu.ini") + + output, exit_code = self.emulator.run("php --ri apcu | sed '/^$/d'") + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], "apcu") + self.assertEqual(output[1], "APCu Support => Enabled") + # Do not check the version value in order to avoid a test failure when + # bumping package version. + self.assertEqual(output[2][0:11], "Version => ") diff --git a/support/testing/tests/package/test_php_lua.py b/support/testing/tests/package/test_php_lua.py new file mode 100644 index 00000000..e3c57938 --- /dev/null +++ b/support/testing/tests/package/test_php_lua.py @@ -0,0 +1,63 @@ +import os + +import infra.basetest + + +class TestPhpLuaLua(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_PHP=y + BR2_PACKAGE_PHP_SAPI_CLI=y + BR2_PACKAGE_PHP_LUA=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", img]) + self.emulator.login() + + self.assertRunOk("mkdir /etc/php.d") + self.assertRunOk("echo 'extension=lua.so' > /etc/php.d/lua.ini") + + output, exit_code = self.emulator.run("php --ri lua | sed '/^$/d'") + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], "lua") + self.assertEqual(output[1], "lua support => enabled") + # Do not check the version value in order to avoid a test failure when + # bumping package version. + self.assertEqual(output[2][0:25], "lua extension version => ") + + +class TestPhpLuaLuajit(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_PHP=y + BR2_PACKAGE_PHP_SAPI_CLI=y + BR2_PACKAGE_PHP_LUA=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", img]) + self.emulator.login() + + self.assertRunOk("mkdir /etc/php.d") + self.assertRunOk("echo 'extension=lua.so' > /etc/php.d/lua.ini") + + output, exit_code = self.emulator.run("php --ri lua | sed '/^$/d'") + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], "lua") + self.assertEqual(output[1], "lua support => enabled") + # Do not check the version value in order to avoid a test failure when + # bumping package version. + self.assertEqual(output[2][0:25], "lua extension version => ") diff --git a/support/testing/tests/package/test_php_pam.py b/support/testing/tests/package/test_php_pam.py new file mode 100644 index 00000000..c4c1412e --- /dev/null +++ b/support/testing/tests/package/test_php_pam.py @@ -0,0 +1,32 @@ +import os + +import infra.basetest + + +class TestPhpPam(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_PHP=y + BR2_PACKAGE_PHP_SAPI_CLI=y + BR2_PACKAGE_PHP_PAM=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", img]) + self.emulator.login() + + self.assertRunOk("mkdir /etc/php.d") + self.assertRunOk("echo 'extension=pam.so'> /etc/php.d/pam.ini") + + output, exit_code = self.emulator.run("php --ri pam | sed '/^$/d'") + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], "pam") + self.assertEqual(output[1], "PAM support => enabled") + # Do not check the version value in order to avoid test failure when + # bumping package version + self.assertEqual(output[2][0:21], "Extension version => ") diff --git a/support/testing/tests/package/test_php_pecl_dbus.py b/support/testing/tests/package/test_php_pecl_dbus.py new file mode 100644 index 00000000..65f34dfb --- /dev/null +++ b/support/testing/tests/package/test_php_pecl_dbus.py @@ -0,0 +1,32 @@ +import os + +import infra.basetest + + +class TestPhpPeclDbus(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_PHP=y + BR2_PACKAGE_PHP_SAPI_CLI=y + BR2_PACKAGE_PHP_PECL_DBUS=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", img]) + self.emulator.login() + + self.assertRunOk("mkdir /etc/php.d") + self.assertRunOk("echo 'extension=dbus.so'> /etc/php.d/dbus.ini") + + output, exit_code = self.emulator.run("php --ri dbus | sed '/^$/d'") + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], "dbus") + self.assertEqual(output[1], "Dbus support => enabled") + # Do not check the version value in order to avoid test failure when + # bumping package version + self.assertEqual(output[2][0:11], "Version => ") diff --git a/support/testing/tests/package/test_pigz.py b/support/testing/tests/package/test_pigz.py new file mode 100644 index 00000000..92a41702 --- /dev/null +++ b/support/testing/tests/package/test_pigz.py @@ -0,0 +1,12 @@ +from tests.package.test_compressor_base import TestCompressorBase + + +class TestPigz(TestCompressorBase): + __test__ = True + config = TestCompressorBase.config + \ + """ + BR2_PACKAGE_PIGZ=y + """ + compress_cmd = "pigz -p3" + decompress_cmd = "pigz -d -p3" + compressed_file_ext = ".gz" diff --git a/support/testing/tests/package/test_pixz.py b/support/testing/tests/package/test_pixz.py new file mode 100644 index 00000000..6620bd4a --- /dev/null +++ b/support/testing/tests/package/test_pixz.py @@ -0,0 +1,18 @@ +from tests.package.test_compressor_base import TestCompressorBase + + +class TestPixz(TestCompressorBase): + __test__ = True + config = TestCompressorBase.config + \ + """ + BR2_PACKAGE_PIXZ=y + """ + compress_cmd = "pixz -p3" + decompress_cmd = "pixz -d" + compressed_file_ext = ".xz" + + def check_integrity_test(self): + # Do nothing for the integrity test because "pixz" does not + # implement this feature. The "-t" option has other functions: + # https://github.com/vasi/pixz/blob/v1.0.7/src/pixz.1.asciidoc#options + pass diff --git a/support/testing/tests/package/test_polkit.py b/support/testing/tests/package/test_polkit.py new file mode 100644 index 00000000..3414fd51 --- /dev/null +++ b/support/testing/tests/package/test_polkit.py @@ -0,0 +1,86 @@ +import os +import infra.basetest + + +class TestPolkitInfra(infra.basetest.BRTest): + br2_external = [infra.filepath("tests/package/br2-external/polkit")] + config = \ + """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_PACKAGE_POLKIT=y + BR2_PACKAGE_POLKIT_RULES_TEST=y + """ + rule_paths = [ + "/etc/polkit-1/rules.d", + "/usr/share/polkit-1/rules.d" + ] + + def base_test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv7", kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + +class TestPolkitSystemd(TestPolkitInfra): + config = \ + """ + {} + BR2_INIT_SYSTEMD=y + BR2_PACKAGE_SYSTEMD_POLKIT=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + # BR2_TARGET_ROOTFS_TAR is not set + """.format(TestPolkitInfra.config) + + def test_run(self): + TestPolkitInfra.base_test_run(self) + + rule_file = "systemd-timesyncd-restart.rules" + for rule_path in TestPolkitInfra.rule_paths: + cmd = "su brtest -c '/bin/systemctl restart systemd-timesyncd.service'" + _, exit_code = self.emulator.run(cmd, 10) + self.assertNotEqual(exit_code, 0) + + cmd = "cp /root/{file} {path}".format(file=rule_file, path=rule_path) + _, exit_code = self.emulator.run(cmd, 10) + self.assertEqual(exit_code, 0) + + cmd = "su brtest -c '/bin/systemctl restart systemd-timesyncd.service'" + _, exit_code = self.emulator.run(cmd, 10) + self.assertEqual(exit_code, 0) + + cmd = "rm {path}/{file}".format(file=rule_file, path=rule_path) + _, exit_code = self.emulator.run(cmd, 10) + self.assertEqual(exit_code, 0) + + +class TestPolkitInitd(TestPolkitInfra): + config = TestPolkitInfra.config + + def test_run(self): + TestPolkitInfra.base_test_run(self) + + rule_file = "hello-polkit.rules" + for rule_path in TestPolkitInfra.rule_paths: + cmd = "su brtest -c 'pkexec hello-polkit'" + output, exit_code = self.emulator.run(cmd, 10) + self.assertEqual(exit_code, 127) + self.assertEqual(output[0], "Error executing command as another user: Not authorized") + + cmd = "cp /root/{file} {path}/{file}".format(file=rule_file, path=rule_path) + _, exit_code = self.emulator.run(cmd, 10) + self.assertEqual(exit_code, 0) + + cmd = "su brtest -c 'pkexec hello-polkit'" + output, exit_code = self.emulator.run(cmd, 10) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], "Hello polkit!") + + cmd = "rm {path}/{file}".format(file=rule_file, path=rule_path) + _, exit_code = self.emulator.run(cmd, 10) + self.assertEqual(exit_code, 0) diff --git a/support/testing/tests/package/test_postgresql.py b/support/testing/tests/package/test_postgresql.py new file mode 100644 index 00000000..bd41fc3f --- /dev/null +++ b/support/testing/tests/package/test_postgresql.py @@ -0,0 +1,197 @@ +import os + +import infra.basetest + + +class TestPostgreSQL(infra.basetest.BRTest): + # We use a specific configuration for: + # - using Aarch64, to have more than 256MB memory, + # - to have an ext4 rootfs image exposed as a virtio storage + # (rather than cpio initrd). This will save some memory, as the + # rootfs image is big. + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.72" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_PACKAGE_POSTGRESQL=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_4=y + BR2_TARGET_ROOTFS_EXT2_SIZE="256M" + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def __init__(self, names): + super(TestPostgreSQL, self).__init__(names) + self.db_admin = "postgres" + self.db_user = "br_user" + self.db_name = "br_database" + self.backup_file = "dump.sql" + self.pgdata_dir = "/var/lib/pgsql" + + def run_user_db_query(self, user, database, query, opts=None): + cmd = f"psql --username={user} --dbname={database}" + cmd += f' --command="{query}"' + if opts is not None: + cmd += " " + opts + self.assertRunOk(cmd) + + def run_admin_sql_query(self, query, opts=None): + self.run_user_db_query(self.db_admin, self.db_admin, query, opts) + + def run_sql_query(self, query, opts=None): + self.run_user_db_query(self.db_user, self.db_name, query, opts) + + def cleanup_database(self): + # This cleanup is useful when run-test -k is used. It makes + # this test idempotent. Since the drive storage is preserved + # between reboots, this cleanup will prevent errors during the + # user/db creation. + + # Drop the test database, if it exists. + cmd = f"dropdb --username={self.db_admin} " + cmd += f"--if-exists {self.db_name}" + self.assertRunOk(cmd) + + # Drop the test user, if it exists. + cmd = f"dropuser --username={self.db_admin} " + cmd += f"--if-exists {self.db_user}" + self.assertRunOk(cmd) + + def create_tables(self): + sql_query = "CREATE TABLE fruits (" + sql_query += "id integer PRIMARY KEY, name varchar(16) NOT NULL);" + self.run_sql_query(sql_query) + + sql_query = "CREATE TABLE colors (" + sql_query += "id integer PRIMARY KEY, name varchar(16) NOT NULL);" + self.run_sql_query(sql_query) + + sql_query = "CREATE TABLE fruit_colors (" + sql_query += "fruit_id integer REFERENCES fruits(id), " + sql_query += "color_id integer REFERENCES colors(id), " + sql_query += "UNIQUE (fruit_id, color_id));" + self.run_sql_query(sql_query) + + def insert_data(self): + fruits = ["Banana", "Blueberry", "Orange", "Raspberry"] + fruit_id = 1 + for fruit in fruits: + sql_query = "INSERT INTO fruits (id, name) " + sql_query += f"VALUES ({fruit_id}, '{fruit}');" + self.run_sql_query(sql_query) + fruit_id += 1 + + colors = ["Blue", "Orange", "Red", "Yellow"] + color_id = 1 + for color in colors: + sql_query = "INSERT INTO colors (id, name) " + sql_query += f"VALUES ({color_id}, '{color}');" + self.run_sql_query(sql_query) + color_id += 1 + + fruit_colors = [(1, 4), (2, 1), (3, 2), (4, 3)] + for fruit_color in fruit_colors: + fruit_id, color_id = fruit_color + sql_query = "INSERT INTO fruit_colors (fruit_id, color_id) " + sql_query += f"VALUES ({fruit_id}, {color_id});" + self.run_sql_query(sql_query) + + def query_database(self): + sql_query = "SELECT " + sql_query += "fruits.name AS fruit, colors.name AS color " + sql_query += "FROM fruits, colors, fruit_colors " + sql_query += "WHERE fruits.id = fruit_colors.fruit_id " + sql_query += "AND colors.id = fruit_colors.color_id " + sql_query += "ORDER BY fruit;" + self.run_sql_query(sql_query) + + def test_run(self): + drive = os.path.join(self.builddir, "images", "rootfs.ext4") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["root=/dev/vda console=ttyAMA0"], + options=["-M", "virt", + "-cpu", "cortex-a57", + "-m", "512M", + "-smp", "2", + "-drive", f"file={drive},if=virtio,format=raw"]) + self.emulator.login() + + # Check the server binary can execute. + self.assertRunOk("postgres --version") + + # Check the client binary can execute. + self.assertRunOk("psql --version") + + # Check the server is ready. + self.assertRunOk("pg_isready") + + # Query the server version from the client. + sql_query = "SELECT version();" + self.run_admin_sql_query(sql_query, + opts="--tuples-only --no-align") + + self.cleanup_database() + + # Create a new user. + cmd = f"createuser --username={self.db_admin} " + cmd += "--no-superuser --no-createdb --no-createrole " + cmd += self.db_user + self.assertRunOk(cmd) + + # Create a new database. + cmd = f"createdb --username={self.db_admin} " + cmd += f"--owner={self.db_user} " + cmd += f'{self.db_name} "Test Database for Buildroot Test"' + self.assertRunOk(cmd) + + self.create_tables() + + self.insert_data() + + self.query_database() + + # Update a table. + sql_query = "UPDATE fruits SET name = 'Lemon' WHERE id = 1;" + self.run_sql_query(sql_query) + + # Backup the test database. + cmd = f"pg_dump --username={self.db_user} --dbname={self.db_name} " + cmd += f"--file={self.backup_file} --inserts" + self.assertRunOk(cmd) + + # Drop all the tables. + sql_query = "DROP TABLE fruit_colors, fruits, colors;" + self.run_sql_query(sql_query) + + # Query the server status. + cmd = f"su - {self.db_admin} -c 'pg_ctl status -D {self.pgdata_dir}'" + self.assertRunOk(cmd) + + # Stop the server. + cmd = f"su - {self.db_admin} -c 'pg_ctl stop -D {self.pgdata_dir}'" + self.assertRunOk(cmd) + + # Check the server is no longer ready. + _, exit_code = self.emulator.run("pg_isready") + self.assertNotEqual(exit_code, 0) + + # Restart the server. + cmd = f"su - {self.db_admin} -c 'pg_ctl start -D {self.pgdata_dir}'" + self.assertRunOk(cmd) + + # Restore the backup. + cmd = f"psql --username={self.db_user} --dbname={self.db_name} " + cmd += f"--file={self.backup_file}" + self.assertRunOk(cmd) + + # Query on last time our data, to check the backup restoration + # succeeded. + self.query_database() diff --git a/support/testing/tests/package/test_prosody.py b/support/testing/tests/package/test_prosody.py new file mode 100644 index 00000000..8ef8ff95 --- /dev/null +++ b/support/testing/tests/package/test_prosody.py @@ -0,0 +1,48 @@ +from tests.package.test_lua import TestLuaBase + + +class TestProsody(TestLuaBase): + def lua_dependencies_test(self): + self.module_test('bit') # luabitop + self.module_test('lfs') # luafilesystem + self.module_test('lxp') # luaexpat + self.module_test('socket') # luasocket + self.module_test('ssl') # luasec + + def prosody_test(self): + # prosody was launched as service + cmd = "prosodyctl status" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertIn("Prosody is running", output[0]) + + +class TestProsodyLua51(TestProsody): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_LUA_5_1=y + BR2_PACKAGE_PROSODY=y + """ + + def test_run(self): + self.login() + self.version_test('Lua 5.1') + self.g_version_test('Lua 5.1') + self.lua_dependencies_test() + self.prosody_test() + + +class TestProsodyLuajit(TestProsody): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_PROSODY=y + """ + + def test_run(self): + self.login() + self.version_test('LuaJIT 2') + self.g_version_test('Lua 5.1') + self.lua_dependencies_test() + self.prosody_test() diff --git a/support/testing/tests/package/test_python.py b/support/testing/tests/package/test_python.py new file mode 100644 index 00000000..c9ecf9ac --- /dev/null +++ b/support/testing/tests/package/test_python.py @@ -0,0 +1,137 @@ +import os + +import infra.basetest + + +class TestPythonBase(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + interpreter = "python" + + def login(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + def version_test(self, version, timeout=-1): + cmd = self.interpreter + " --version 2>&1 | grep '^{}'".format(version) + self.assertRunOk(cmd, timeout) + + def math_floor_test(self, timeout=-1): + cmd = self.interpreter + " -c 'import math; math.floor(12.3)'" + self.assertRunOk(cmd, timeout) + + def libc_time_test(self, timeout=-1): + cmd = self.interpreter + " -c '" + cmd += "import ctypes;" + cmd += "libc = ctypes.cdll.LoadLibrary(\"libc.so.6\");" + cmd += "print(libc.time(None))'" + self.assertRunOk(cmd, timeout) + + def zlib_test(self, timeout=-1): + cmd = self.interpreter + " -c 'import zlib'" + _, exit_code = self.emulator.run(cmd, timeout) + self.assertEqual(exit_code, 1) + + +class TestPython3Pyc(TestPythonBase): + config = TestPythonBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + """ + + def test_run(self): + self.login() + self.version_test("Python 3") + self.math_floor_test() + self.libc_time_test() + self.zlib_test() + + +class TestPython3Py(TestPythonBase): + config = TestPythonBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON3_PY_ONLY=y + """ + + def test_run(self): + self.login() + self.version_test("Python 3") + self.math_floor_test() + self.libc_time_test() + self.zlib_test() + + +class TestPython3PyPyc(TestPythonBase): + config = TestPythonBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON3_PY_PYC=y + """ + + def test_run(self): + self.login() + self.version_test("Python 3") + self.math_floor_test() + self.libc_time_test() + self.zlib_test() + + +class TestPythonPackageBase(TestPythonBase): + """Common class to test a python package. + + Build an image containing the scripts listed in sample_scripts, start the + emulator, login to it and for each sample script in the image run the python + interpreter passing the name of the script and check the status code is 0. + + Each test case that inherits from this class must have: + __test__ = True - to let nose2 know that it is a test case + config - defconfig fragment with the packages to run the test + It also can have: + sample_scripts - list of scripts to add to the image and run on the target + timeout - timeout to the script to run when the default from the + test infra is not enough + When custom commands need be issued on the target the method + run_sample_scripts can be overridden. + """ + + __test__ = False + config_sample_scripts = \ + """ + BR2_ROOTFS_POST_BUILD_SCRIPT="{}" + BR2_ROOTFS_POST_SCRIPT_ARGS="{}" + """.format(infra.filepath("tests/package/copy-sample-script-to-target.sh"), + "{sample_scripts}") + sample_scripts = None + timeout = -1 + + def __init__(self, names): + """Add the scripts to the target in build time.""" + super(TestPythonPackageBase, self).__init__(names) + if self.sample_scripts: + scripts = [infra.filepath(s) for s in self.sample_scripts] + self.config += self.config_sample_scripts.format(sample_scripts=" ".join(scripts)) + + def check_sample_scripts_exist(self): + """Check the scripts were really added to the image.""" + scripts = [os.path.basename(s) for s in self.sample_scripts] + cmd = "md5sum " + " ".join(scripts) + _, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + + def run_sample_scripts(self): + """Run each script previously added to the image.""" + for script in self.sample_scripts: + cmd = self.interpreter + " " + os.path.basename(script) + self.assertRunOk(cmd, timeout=self.timeout) + + def test_run(self): + self.login() + self.check_sample_scripts_exist() + self.run_sample_scripts() diff --git a/support/testing/tests/package/test_python_aexpect.py b/support/testing/tests/package/test_python_aexpect.py new file mode 100644 index 00000000..5b018399 --- /dev/null +++ b/support/testing/tests/package/test_python_aexpect.py @@ -0,0 +1,12 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Aexpect(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_AEXPECT=y + """ + sample_scripts = ["tests/package/sample_python_aexpect.py"] + timeout = 30 diff --git a/support/testing/tests/package/test_python_argh.py b/support/testing/tests/package/test_python_argh.py new file mode 100644 index 00000000..887d9acd --- /dev/null +++ b/support/testing/tests/package/test_python_argh.py @@ -0,0 +1,36 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonArgh(TestPythonPackageBase): + config = TestPythonPackageBase.config + sample_scripts = ["tests/package/sample_python_argh.py"] + + def run_sample_scripts(self): + cmd = self.interpreter + " sample_python_argh.py -h" + output, exit_code = self.emulator.run(cmd) + self.assertIn("usage:", output[0]) + self.assertEqual(exit_code, 0) + + cmd = self.interpreter + " sample_python_argh.py 123" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(output[0], "123, False") + self.assertEqual(exit_code, 0) + + cmd = self.interpreter + " sample_python_argh.py --bar 456" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(output[0], "456, True") + self.assertEqual(exit_code, 0) + + cmd = self.interpreter + " sample_python_argh.py" + output, exit_code = self.emulator.run(cmd) + self.assertIn("usage:", output[0]) + self.assertEqual(exit_code, 2) + + +class TestPythonPy3Argh(TestPythonArgh): + __test__ = True + config = TestPythonArgh.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_ARGH=y + """ diff --git a/support/testing/tests/package/test_python_asn1crypto.py b/support/testing/tests/package/test_python_asn1crypto.py new file mode 100644 index 00000000..97df3d3a --- /dev/null +++ b/support/testing/tests/package/test_python_asn1crypto.py @@ -0,0 +1,13 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Asn1Crypto(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_CA_CERTIFICATES=y + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_ASN1CRYPTO=y + """ + sample_scripts = ["tests/package/sample_python_asn1crypto.py"] + timeout = 40 diff --git a/support/testing/tests/package/test_python_attrs.py b/support/testing/tests/package/test_python_attrs.py new file mode 100644 index 00000000..38831b24 --- /dev/null +++ b/support/testing/tests/package/test_python_attrs.py @@ -0,0 +1,11 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Attrs(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_ATTRS=y + """ + sample_scripts = ["tests/package/sample_python_attrs.py"] diff --git a/support/testing/tests/package/test_python_augeas.py b/support/testing/tests/package/test_python_augeas.py new file mode 100644 index 00000000..c1424668 --- /dev/null +++ b/support/testing/tests/package/test_python_augeas.py @@ -0,0 +1,13 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonAugeas(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_AUGEAS=y + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_AUGEAS=y + """ + sample_scripts = ["tests/package/sample_python_augeas.py"] + timeout = 60 diff --git a/support/testing/tests/package/test_python_autobahn.py b/support/testing/tests/package/test_python_autobahn.py new file mode 100644 index 00000000..f785b1af --- /dev/null +++ b/support/testing/tests/package/test_python_autobahn.py @@ -0,0 +1,13 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Autobahn(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_AUTOBAHN=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + sample_scripts = ["tests/package/sample_python_autobahn.py"] diff --git a/support/testing/tests/package/test_python_automat.py b/support/testing/tests/package/test_python_automat.py new file mode 100644 index 00000000..6ee4ea76 --- /dev/null +++ b/support/testing/tests/package/test_python_automat.py @@ -0,0 +1,12 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Automat(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_AUTOMAT=y + """ + sample_scripts = ["tests/package/sample_python_automat.py"] + timeout = 30 diff --git a/support/testing/tests/package/test_python_avro.py b/support/testing/tests/package/test_python_avro.py new file mode 100644 index 00000000..6eee2760 --- /dev/null +++ b/support/testing/tests/package/test_python_avro.py @@ -0,0 +1,11 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonAvro(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_AVRO=y + """ + sample_scripts = ["tests/package/sample_python_avro.py"] diff --git a/support/testing/tests/package/test_python_bitstring.py b/support/testing/tests/package/test_python_bitstring.py new file mode 100644 index 00000000..bd358a2f --- /dev/null +++ b/support/testing/tests/package/test_python_bitstring.py @@ -0,0 +1,11 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Bitstring(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_BITSTRING=y + """ + sample_scripts = ["tests/package/sample_python_bitstring.py"] diff --git a/support/testing/tests/package/test_python_boto3.py b/support/testing/tests/package/test_python_boto3.py new file mode 100644 index 00000000..02a1f69d --- /dev/null +++ b/support/testing/tests/package/test_python_boto3.py @@ -0,0 +1,23 @@ +from tests.package.test_python import TestPythonPackageBase +import os + + +class TestPythonPy3Boto3(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_BOTO3=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_SIZE="250M" + """ + sample_scripts = ["tests/package/sample_python_boto3.py"] + timeout = 10 + + def login(self): + ext2_file = os.path.join(self.builddir, "images", "rootfs.ext2") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-drive", "file=%s,if=scsi,format=raw" % ext2_file], + kernel_cmdline=["rootwait", "root=/dev/sda"]) + self.emulator.login() diff --git a/support/testing/tests/package/test_python_botocore.py b/support/testing/tests/package/test_python_botocore.py new file mode 100644 index 00000000..0f3dc93a --- /dev/null +++ b/support/testing/tests/package/test_python_botocore.py @@ -0,0 +1,23 @@ +from tests.package.test_python import TestPythonPackageBase +import os + + +class TestPythonPy3Botocore(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_BOTOCORE=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_SIZE="250M" + """ + sample_scripts = ["tests/package/sample_python_botocore.py"] + timeout = 30 + + def login(self): + ext2_file = os.path.join(self.builddir, "images", "rootfs.ext2") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-drive", "file=%s,if=scsi,format=raw" % ext2_file], + kernel_cmdline=["rootwait", "root=/dev/sda"]) + self.emulator.login() diff --git a/support/testing/tests/package/test_python_can.py b/support/testing/tests/package/test_python_can.py new file mode 100644 index 00000000..dba5539c --- /dev/null +++ b/support/testing/tests/package/test_python_can.py @@ -0,0 +1,12 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Can(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_CAN=y + """ + sample_scripts = ["tests/package/sample_python_can.py"] + timeout = 40 diff --git a/support/testing/tests/package/test_python_cbor.py b/support/testing/tests/package/test_python_cbor.py new file mode 100644 index 00000000..23a1e3e7 --- /dev/null +++ b/support/testing/tests/package/test_python_cbor.py @@ -0,0 +1,12 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Cbor(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_CBOR=y + """ + sample_scripts = ["tests/package/sample_python_cbor_enc.py", + "tests/package/sample_python_cbor_dec.py"] diff --git a/support/testing/tests/package/test_python_click.py b/support/testing/tests/package/test_python_click.py new file mode 100644 index 00000000..0ee9702c --- /dev/null +++ b/support/testing/tests/package/test_python_click.py @@ -0,0 +1,35 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonClick(TestPythonPackageBase): + sample_scripts = ["tests/package/sample_python_click.py"] + + def run_sample_scripts(self): + cmd = self.interpreter + " sample_python_click.py --help" + output, exit_code = self.emulator.run(cmd) + self.assertIn("Usage:", output[0]) + self.assertEqual(exit_code, 0) + + cmd = self.interpreter + " sample_python_click.py 123" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(output[0], "123, False") + self.assertEqual(exit_code, 0) + + cmd = self.interpreter + " sample_python_click.py --bar 456" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(output[0], "456, True") + self.assertEqual(exit_code, 0) + + cmd = self.interpreter + " sample_python_click.py" + output, exit_code = self.emulator.run(cmd) + self.assertIn("Usage:", output[0]) + self.assertEqual(exit_code, 2) + + +class TestPythonPy3Click(TestPythonClick): + __test__ = True + config = TestPythonClick.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_CLICK=y + """ diff --git a/support/testing/tests/package/test_python_colorzero.py b/support/testing/tests/package/test_python_colorzero.py new file mode 100644 index 00000000..d67f77bd --- /dev/null +++ b/support/testing/tests/package/test_python_colorzero.py @@ -0,0 +1,12 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Colorzero(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_COLORZERO=y + """ + sample_scripts = ["tests/package/sample_python_colorzero.py"] + timeout = 30 diff --git a/support/testing/tests/package/test_python_constantly.py b/support/testing/tests/package/test_python_constantly.py new file mode 100644 index 00000000..edcb9bfd --- /dev/null +++ b/support/testing/tests/package/test_python_constantly.py @@ -0,0 +1,11 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Constantly(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_CONSTANTLY=y + """ + sample_scripts = ["tests/package/sample_python_constantly.py"] diff --git a/support/testing/tests/package/test_python_construct.py b/support/testing/tests/package/test_python_construct.py new file mode 100644 index 00000000..3c51dc31 --- /dev/null +++ b/support/testing/tests/package/test_python_construct.py @@ -0,0 +1,12 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Construct(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_CONSTRUCT=y + """ + sample_scripts = ["tests/package/sample_python_construct.py"] + timeout = 10 diff --git a/support/testing/tests/package/test_python_cryptography.py b/support/testing/tests/package/test_python_cryptography.py new file mode 100644 index 00000000..ee8e75f8 --- /dev/null +++ b/support/testing/tests/package/test_python_cryptography.py @@ -0,0 +1,14 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Cryptography(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_CRYPTOGRAPHY=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + sample_scripts = ["tests/package/sample_python_cryptography.py"] + timeout = 40 diff --git a/support/testing/tests/package/test_python_dbus_fast.py b/support/testing/tests/package/test_python_dbus_fast.py new file mode 100644 index 00000000..5f67cfd8 --- /dev/null +++ b/support/testing/tests/package/test_python_dbus_fast.py @@ -0,0 +1,40 @@ +import textwrap + + +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3DBusFast(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_DBUS=y + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_DBUS_FAST=y + """ + sample_scripts = ["tests/package/sample_python_dbus_fast.py"] + + def run_sample_scripts(self): + config = \ + """ + + + + + + + + """ + config = textwrap.dedent(config) + config_dir = "/etc/dbus-1/system.d" + config_fn = "dbus.fast.sample.conf" + + # Setup and reload D-Bus configuration + self.emulator.run("mkdir -p " + config_dir) + self.emulator.run("cat > " + config_dir + "/" + config_fn + + " < + + + + + + + """ + config = textwrap.dedent(config) + config_dir = "/etc/dbus-1/system.d" + config_fn = "dbus.next.sample.conf" + + # Setup and reload D-Bus configuration + self.emulator.run("mkdir -p " + config_dir) + self.emulator.run("cat > " + config_dir + "/" + config_fn + + " < /dev/null 2>&1 & " + self.assertRunOk(cmd, timeout=timeout) + # give some time to setup the server + for attempt in range(30 * self.emulator.timeout_multiplier): + time.sleep(1) + cmd = "netstat -ltn 2>/dev/null | grep 0.0.0.0:1234" + _, exit_code = self.emulator.run(cmd) + if exit_code == 0: + break + self.assertEqual(exit_code, 0, "Timeout while waiting for django server") + + +class TestPythonPy3Django(TestPythonDjango): + __test__ = True + config = TestPythonDjango.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_DJANGO=y + BR2_PACKAGE_PYTHON3_SQLITE=y + """ diff --git a/support/testing/tests/package/test_python_dtschema.py b/support/testing/tests/package/test_python_dtschema.py new file mode 100644 index 00000000..e3a4a309 --- /dev/null +++ b/support/testing/tests/package/test_python_dtschema.py @@ -0,0 +1,12 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Dtschema(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_DTSCHEMA=y + """ + sample_scripts = ["tests/package/sample_python_dtschema.py"] + timeout = 40 diff --git a/support/testing/tests/package/test_python_evdev.py b/support/testing/tests/package/test_python_evdev.py new file mode 100644 index 00000000..162e5307 --- /dev/null +++ b/support/testing/tests/package/test_python_evdev.py @@ -0,0 +1,11 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Evdev(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_EVDEV=y + """ + sample_scripts = ["tests/package/sample_python_evdev.py"] diff --git a/support/testing/tests/package/test_python_fastapi.py b/support/testing/tests/package/test_python_fastapi.py new file mode 100644 index 00000000..85cdd0b6 --- /dev/null +++ b/support/testing/tests/package/test_python_fastapi.py @@ -0,0 +1,57 @@ +import os +import time + +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Fastapi(TestPythonPackageBase): + """Test fastapi, uvicorn and pydantic2. + + fastapi needs an asgi server to run. Since we select uvicorn as + asgi server here, uvicorn is tested as well. + + pydantic is an major dependency of fastapi so it is implicitly + tested here as well. + """ + __test__ = True + config = \ + """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_NEON=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_FASTAPI=y + BR2_PACKAGE_PYTHON_UVICORN=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + sample_scripts = ["tests/package/sample_python_fastapi.py"] + timeout = 60 + + def test_run(self): + self.login() + self.check_sample_scripts_exist() + cmd = "uvicorn sample_python_fastapi:app > /dev/null 2>&1 &" + + _, exit_code = self.emulator.run(cmd, timeout=self.timeout) + + # Give enough time for the uvicorn server to start up + for attempt in range(30): + time.sleep(1) + + cmd = "wget -q -O - http://127.0.0.1:8000/" + output, exit_code = self.emulator.run(cmd, timeout=self.timeout) + if exit_code == 0: + self.assertEqual(output[0], '{"message":"Hello World"}') + break + else: + self.assertTrue(False, "Timeout while waiting for fastapi server") + + def login(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv7", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() diff --git a/support/testing/tests/package/test_python_flask.py b/support/testing/tests/package/test_python_flask.py new file mode 100644 index 00000000..32d9da34 --- /dev/null +++ b/support/testing/tests/package/test_python_flask.py @@ -0,0 +1,33 @@ +from tests.package.test_python import TestPythonPackageBase +import os +import time + + +class TestPythonPy3Flask(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_FLASK=y + """ + sample_scripts = ["tests/package/sample_python_flask.py"] + timeout = 60 + + def test_run(self): + self.login() + self.check_sample_scripts_exist() + cmd = "FLASK_APP=%s %s -m flask run > /dev/null 2>&1 &" % (os.path.basename(self.sample_scripts[0]), + self.interpreter) + _, exit_code = self.emulator.run(cmd, timeout=self.timeout) + + # Give enough time for the flask server to start up + for attempt in range(30): + time.sleep(1) + + cmd = "wget -q -O - http://127.0.0.1:5000/" + output, exit_code = self.emulator.run(cmd, timeout=self.timeout) + if exit_code == 0: + self.assertEqual(output[0], 'Hello, World!') + break + else: + self.assertTrue(False, "Timeout while waiting for flask server") diff --git a/support/testing/tests/package/test_python_flask_expects_json.py b/support/testing/tests/package/test_python_flask_expects_json.py new file mode 100644 index 00000000..91b8bf21 --- /dev/null +++ b/support/testing/tests/package/test_python_flask_expects_json.py @@ -0,0 +1,38 @@ +from tests.package.test_python import TestPythonPackageBase +import os +import time + + +class TestPythonPy3FlaskExpectsJson(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_LIBCURL=y + BR2_PACKAGE_LIBCURL_CURL=y + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_FLASK=y + BR2_PACKAGE_PYTHON_FLASK_EXPECTS_JSON=y + """ + sample_scripts = ["tests/package/sample_python_flask_expects_json.py"] + timeout = 60 + + def try_json(self, payload, expects): + cmd = """curl -s -o /dev/null -w "%{http_code}\\n" -X POST """ + cmd += """-H "Content-Type: application/json" -d '%s' http://127.0.0.1:5000""" % payload + output, exit_code = self.emulator.run(cmd, timeout=self.timeout) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], str(expects)) + + def test_run(self): + self.login() + self.check_sample_scripts_exist() + cmd = "FLASK_APP=%s %s -m flask run > /dev/null 2>&1 &" % (os.path.basename(self.sample_scripts[0]), + self.interpreter) + _, exit_code = self.emulator.run(cmd, timeout=self.timeout) + + # Give enough time for the flask server to start up + time.sleep(30) + + self.try_json("""{"email": "test", "name": "test"}""", 200) + self.try_json("""{"email": "test", "name": 2}""", 400) + self.try_json("""{"email": "test"}""", 400) diff --git a/support/testing/tests/package/test_python_git.py b/support/testing/tests/package/test_python_git.py new file mode 100644 index 00000000..4d5489e9 --- /dev/null +++ b/support/testing/tests/package/test_python_git.py @@ -0,0 +1,11 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Git(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_GIT=y + """ + sample_scripts = ["tests/package/sample_python_git.py"] diff --git a/support/testing/tests/package/test_python_gitdb2.py b/support/testing/tests/package/test_python_gitdb2.py new file mode 100644 index 00000000..9e22df06 --- /dev/null +++ b/support/testing/tests/package/test_python_gitdb2.py @@ -0,0 +1,11 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Gitdb2(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_GITDB2=y + """ + sample_scripts = ["tests/package/sample_python_gitdb2.py"] diff --git a/support/testing/tests/package/test_python_gnupg.py b/support/testing/tests/package/test_python_gnupg.py new file mode 100644 index 00000000..88611151 --- /dev/null +++ b/support/testing/tests/package/test_python_gnupg.py @@ -0,0 +1,11 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3GnuPG(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_GNUPG=y + """ + sample_scripts = ["tests/package/sample_python_gnupg.py"] diff --git a/support/testing/tests/package/test_python_gobject.py b/support/testing/tests/package/test_python_gobject.py new file mode 100644 index 00000000..cd8a4325 --- /dev/null +++ b/support/testing/tests/package/test_python_gobject.py @@ -0,0 +1,27 @@ +import os +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Gobject(TestPythonPackageBase): + __test__ = True + config = \ + """ + BR2_arm=y + BR2_ARM_ENABLE_VFP=y + BR2_cortex_a9=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_PACKAGE_GOBJECT_INTROSPECTION=y + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_GOBJECT=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def login(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv7", + kernel="builtin", + options=["-initrd", img]) + self.emulator.login() + + sample_scripts = ["tests/package/sample_python_gobject.py"] diff --git a/support/testing/tests/package/test_python_gpiozero.py b/support/testing/tests/package/test_python_gpiozero.py new file mode 100644 index 00000000..4fe155e6 --- /dev/null +++ b/support/testing/tests/package/test_python_gpiozero.py @@ -0,0 +1,23 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonGpiozero(TestPythonPackageBase): + config = TestPythonPackageBase.config + sample_scripts = ["tests/package/sample_python_gpiozero.py"] + + def run_sample_scripts(self): + cmd = self.interpreter + " sample_python_gpiozero.py" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + + cmd = "pinout -r a020d3 -m | cat" + self.assertRunOk(cmd) + + +class TestPythonPy3Gpiozero(TestPythonGpiozero): + __test__ = True + config = TestPythonGpiozero.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_GPIOZERO=y + """ diff --git a/support/testing/tests/package/test_python_hid.py b/support/testing/tests/package/test_python_hid.py new file mode 100644 index 00000000..68cefa86 --- /dev/null +++ b/support/testing/tests/package/test_python_hid.py @@ -0,0 +1,12 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonHid(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_HID=y + """ + sample_scripts = ["tests/package/sample_python_hid.py"] diff --git a/support/testing/tests/package/test_python_hkdf.py b/support/testing/tests/package/test_python_hkdf.py new file mode 100644 index 00000000..e93c24ff --- /dev/null +++ b/support/testing/tests/package/test_python_hkdf.py @@ -0,0 +1,11 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Hkdf(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_HKDF=y + """ + sample_scripts = ["tests/package/sample_python_hkdf.py"] diff --git a/support/testing/tests/package/test_python_hwdata.py b/support/testing/tests/package/test_python_hwdata.py new file mode 100644 index 00000000..7028d1dd --- /dev/null +++ b/support/testing/tests/package/test_python_hwdata.py @@ -0,0 +1,12 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonHwdata(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_HWDATA=y + """ + sample_scripts = ["tests/package/sample_python_hwdata.py"] + timeout = 10 diff --git a/support/testing/tests/package/test_python_incremental.py b/support/testing/tests/package/test_python_incremental.py new file mode 100644 index 00000000..4c53d613 --- /dev/null +++ b/support/testing/tests/package/test_python_incremental.py @@ -0,0 +1,12 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Incremental(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_INCREMENTAL=y + """ + sample_scripts = ["tests/package/sample_python_incremental.py"] + timeout = 30 diff --git a/support/testing/tests/package/test_python_iptables.py b/support/testing/tests/package/test_python_iptables.py new file mode 100644 index 00000000..a2ba365f --- /dev/null +++ b/support/testing/tests/package/test_python_iptables.py @@ -0,0 +1,12 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Iptables(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_IPTABLES=y + """ + sample_scripts = ["tests/package/sample_python_iptables.py"] + timeout = 30 diff --git a/support/testing/tests/package/test_python_jc.py b/support/testing/tests/package/test_python_jc.py new file mode 100644 index 00000000..974ce0c4 --- /dev/null +++ b/support/testing/tests/package/test_python_jc.py @@ -0,0 +1,22 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Jc(TestPythonPackageBase): + __test__ = True + # We deliberately run the test without the optional dependencies, + # as this configuration is less tested upstream. + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_JC=y + """ + timeout = 60 + + def test_run(self): + self.login() + cmd = "jc -h > /dev/null 2>&1" + self.assertRunOk(cmd, timeout=self.timeout) + cmd = "jc id | grep -q root" + self.assertRunOk(cmd, timeout=self.timeout) + cmd = "jc env | grep -q PATH" + self.assertRunOk(cmd, self.timeout) diff --git a/support/testing/tests/package/test_python_jmespath.py b/support/testing/tests/package/test_python_jmespath.py new file mode 100644 index 00000000..80fd09fd --- /dev/null +++ b/support/testing/tests/package/test_python_jmespath.py @@ -0,0 +1,12 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Jmespath(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_JMESPATH=y + """ + sample_scripts = ["tests/package/sample_python_jmespath.py"] + timeout = 10 diff --git a/support/testing/tests/package/test_python_magic_wormhole.py b/support/testing/tests/package/test_python_magic_wormhole.py new file mode 100644 index 00000000..180cff2e --- /dev/null +++ b/support/testing/tests/package/test_python_magic_wormhole.py @@ -0,0 +1,62 @@ +import os +import time + +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3MagicWormhole(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_MAGIC_WORMHOLE=y + BR2_PACKAGE_PYTHON_MAGIC_WORMHOLE_MAILBOX_SERVER=y + BR2_PACKAGE_PYTHON_MAGIC_WORMHOLE_TRANSIT_RELAY=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + timeout = 60 + + def twistd_cmd(self, command): + s = "twistd" + s += " --pidfile=/tmp/{}.pid".format(command) + s += " --logfile=/tmp/{}.log".format(command) + s += " {}".format(command) + + return s + + def test_run(self): + code = "123-hello-buildroot" + text = "Hello Buildroot!" + + relay_url = "ws://localhost:4000/v1" + transit_helper = "tcp:localhost:4001" + + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", kernel="builtin", + options=["-initrd", img]) + + self.emulator.login() + + cmd = self.twistd_cmd("wormhole-mailbox") + self.assertRunOk(cmd, timeout=30) + + cmd = self.twistd_cmd("transitrelay") + self.assertRunOk(cmd, timeout=30) + + wormhole_cmd = "wormhole --relay-url={} --transit-helper={}".format( + relay_url, transit_helper) + + cmd = wormhole_cmd + cmd += f" send --code={code} --text=\"{text}\"" + cmd += " &> /dev/null &" + self.assertRunOk(cmd) + + time.sleep(30 * self.timeout_multiplier) + + wormhole_env = "_MAGIC_WORMHOLE_TEST_KEY_TIMER=100 " + wormhole_env += "_MAGIC_WORMHOLE_TEST_VERIFY_TIMER=100 " + cmd = wormhole_env + wormhole_cmd + " receive {}".format(code) + output, exit_code = self.emulator.run(cmd, timeout=35) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], text) diff --git a/support/testing/tests/package/test_python_mako.py b/support/testing/tests/package/test_python_mako.py new file mode 100644 index 00000000..ea8fe57a --- /dev/null +++ b/support/testing/tests/package/test_python_mako.py @@ -0,0 +1,25 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Mako(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_MAKO=y + """ + sample_scripts = ["tests/package/sample_python_mako.py"] + timeout = 30 + + +class TestPythonPy3MakoExt(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_MAKO=y + BR2_PACKAGE_PYTHON_MAKO_EXT_PYGMENTPLUGIN=y + BR2_PACKAGE_PYTHON_MAKO_EXT_BABELPLUGIN=y + """ + sample_scripts = ["tests/package/sample_python_mako_ext.py"] + timeout = 30 diff --git a/support/testing/tests/package/test_python_midiutil.py b/support/testing/tests/package/test_python_midiutil.py new file mode 100644 index 00000000..302fbfb1 --- /dev/null +++ b/support/testing/tests/package/test_python_midiutil.py @@ -0,0 +1,11 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3MidiUtil(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_MIDIUTIL=y + """ + sample_scripts = ["tests/package/sample_python_midiutil.py"] diff --git a/support/testing/tests/package/test_python_minimalmodbus.py b/support/testing/tests/package/test_python_minimalmodbus.py new file mode 100644 index 00000000..53813406 --- /dev/null +++ b/support/testing/tests/package/test_python_minimalmodbus.py @@ -0,0 +1,11 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Minimalmodbus(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_MINIMALMODBUS=y + """ + sample_scripts = ["tests/package/sample_python_minimalmodbus.py"] diff --git a/support/testing/tests/package/test_python_ml_dtypes.py b/support/testing/tests/package/test_python_ml_dtypes.py new file mode 100644 index 00000000..83671072 --- /dev/null +++ b/support/testing/tests/package/test_python_ml_dtypes.py @@ -0,0 +1,13 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3MlDtypes(TestPythonPackageBase): + __test__ = True + + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_ML_DTYPES=y + """ + sample_scripts = ["tests/package/sample_python_ml_dtypes.py"] + timeout = 20 diff --git a/support/testing/tests/package/test_python_mpmath.py b/support/testing/tests/package/test_python_mpmath.py new file mode 100644 index 00000000..c20c910f --- /dev/null +++ b/support/testing/tests/package/test_python_mpmath.py @@ -0,0 +1,12 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3MpMath(TestPythonPackageBase): + __test__ = True + + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_MPMATH=y + """ + sample_scripts = ["tests/package/sample_python_mpmath.py"] diff --git a/support/testing/tests/package/test_python_msgpack.py b/support/testing/tests/package/test_python_msgpack.py new file mode 100644 index 00000000..e5876e40 --- /dev/null +++ b/support/testing/tests/package/test_python_msgpack.py @@ -0,0 +1,12 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3MsgPack(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_MSGPACK=y + """ + sample_scripts = ["tests/package/sample_python_msgpack.py"] + timeout = 40 diff --git a/support/testing/tests/package/test_python_munch.py b/support/testing/tests/package/test_python_munch.py new file mode 100644 index 00000000..6853bbaa --- /dev/null +++ b/support/testing/tests/package/test_python_munch.py @@ -0,0 +1,12 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Munch(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_MUNCH=y + """ + sample_scripts = ["tests/package/sample_python_munch.py"] + timeout = 40 diff --git a/support/testing/tests/package/test_python_paho_mqtt.py b/support/testing/tests/package/test_python_paho_mqtt.py new file mode 100644 index 00000000..217293e4 --- /dev/null +++ b/support/testing/tests/package/test_python_paho_mqtt.py @@ -0,0 +1,24 @@ +from tests.package.test_python import TestPythonPackageBase +import os + + +class TestPythonPahoMQTT(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_MOSQUITTO=y + BR2_PACKAGE_MOSQUITTO_BROKER=y + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_PAHO_MQTT=y + """ + sample_scripts = ["tests/package/sample_python_paho_mqtt.py"] + + def test_run(self): + self.login() + self.check_sample_scripts_exist() + + cmd = "%s %s" % (self.interpreter, os.path.basename(self.sample_scripts[0])) + # Increase timeout to let the crng init complete + output, exit_code = self.emulator.run(cmd, timeout=15) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], "Hello, World!") diff --git a/support/testing/tests/package/test_python_passlib.py b/support/testing/tests/package/test_python_passlib.py new file mode 100644 index 00000000..e12e86d9 --- /dev/null +++ b/support/testing/tests/package/test_python_passlib.py @@ -0,0 +1,12 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Passlib(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_PASSLIB=y + """ + sample_scripts = ["tests/package/sample_python_passlib.py"] + timeout = 30 diff --git a/support/testing/tests/package/test_python_pathspec.py b/support/testing/tests/package/test_python_pathspec.py new file mode 100644 index 00000000..4e4a992b --- /dev/null +++ b/support/testing/tests/package/test_python_pathspec.py @@ -0,0 +1,11 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPathSpec(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_PATHSPEC=y + """ + sample_scripts = ["tests/package/sample_python_pathspec.py"] diff --git a/support/testing/tests/package/test_python_pexpect.py b/support/testing/tests/package/test_python_pexpect.py new file mode 100644 index 00000000..70037a7d --- /dev/null +++ b/support/testing/tests/package/test_python_pexpect.py @@ -0,0 +1,11 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Pexpect(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_PEXPECT=y + """ + sample_scripts = ["tests/package/sample_python_pexpect.py"] diff --git a/support/testing/tests/package/test_python_pyalsa.py b/support/testing/tests/package/test_python_pyalsa.py new file mode 100644 index 00000000..80464965 --- /dev/null +++ b/support/testing/tests/package/test_python_pyalsa.py @@ -0,0 +1,11 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3PyAlsa(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_PYALSA=y + """ + sample_scripts = ["tests/package/sample_python_pyalsa.py"] diff --git a/support/testing/tests/package/test_python_pybind.py b/support/testing/tests/package/test_python_pybind.py new file mode 100644 index 00000000..c0af7331 --- /dev/null +++ b/support/testing/tests/package/test_python_pybind.py @@ -0,0 +1,14 @@ +import infra +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPybind (TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_PYBIND_EXAMPLE=y + """ + sample_scripts = ["tests/package/sample_python_pybind.py"] + # ship examples macro & installs it to host + br2_external = [infra.filepath("tests/package/br2-external/python-pybind")] diff --git a/support/testing/tests/package/test_python_pymupdf.py b/support/testing/tests/package/test_python_pymupdf.py new file mode 100644 index 00000000..1af3efc8 --- /dev/null +++ b/support/testing/tests/package/test_python_pymupdf.py @@ -0,0 +1,23 @@ +import os +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3PyMuPDF(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_PYMUPDF=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_SIZE="120M" + """ + sample_scripts = ["tests/package/sample_python_pymupdf.py"] + timeout = 30 + + def login(self): + ext2_file = os.path.join(self.builddir, "images", "rootfs.ext2") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-drive", "file=%s,if=scsi,format=raw" % ext2_file], + kernel_cmdline=["rootwait", "root=/dev/sda"]) + self.emulator.login() diff --git a/support/testing/tests/package/test_python_pynacl.py b/support/testing/tests/package/test_python_pynacl.py new file mode 100644 index 00000000..cef8a7e7 --- /dev/null +++ b/support/testing/tests/package/test_python_pynacl.py @@ -0,0 +1,12 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Pynacl(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_PYNACL=y + """ + sample_scripts = ["tests/package/sample_python_pynacl.py"] + timeout = 10 diff --git a/support/testing/tests/package/test_python_pyndiff.py b/support/testing/tests/package/test_python_pyndiff.py new file mode 100644 index 00000000..86d6c38f --- /dev/null +++ b/support/testing/tests/package/test_python_pyndiff.py @@ -0,0 +1,29 @@ +import os +import infra.basetest + + +class TestPyNdiff(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_NMAP=y + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_PYNDIFF=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + cmd = "nmap -F 127.0.0.1 -oX scanme-1.xml" + self.assertRunOk(cmd) + + cmd = "nmap -F 127.0.0.1 -oX scanme-2.xml" + self.assertRunOk(cmd) + + cmd = "pyndiff -f1 scanme-1.xml -f2 scanme-2.xml -t txt" + self.assertRunOk(cmd) diff --git a/support/testing/tests/package/test_python_pysmb.py b/support/testing/tests/package/test_python_pysmb.py new file mode 100644 index 00000000..cc4c7fb1 --- /dev/null +++ b/support/testing/tests/package/test_python_pysmb.py @@ -0,0 +1,12 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Pysmb(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_PYSMB=y + """ + sample_scripts = ["tests/package/sample_python_pysmb.py"] + timeout = 40 diff --git a/support/testing/tests/package/test_python_pytest.py b/support/testing/tests/package/test_python_pytest.py new file mode 100644 index 00000000..1a631adf --- /dev/null +++ b/support/testing/tests/package/test_python_pytest.py @@ -0,0 +1,18 @@ +import os + +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Pytest(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_PYTEST=y + """ + sample_scripts = ["tests/package/sample_python_pytest.py"] + + def run_sample_scripts(self): + for script in self.sample_scripts: + cmd = self.interpreter + " -m pytest " + os.path.basename(script) + self.assertRunOk(cmd, timeout=self.timeout) diff --git a/support/testing/tests/package/test_python_pytest_asyncio.py b/support/testing/tests/package/test_python_pytest_asyncio.py new file mode 100644 index 00000000..e09abf2a --- /dev/null +++ b/support/testing/tests/package/test_python_pytest_asyncio.py @@ -0,0 +1,19 @@ +import os + +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3PytestAsyncio(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_PYTEST=y + BR2_PACKAGE_PYTHON_PYTEST_ASYNCIO=y + """ + sample_scripts = ["tests/package/sample_python_pytest_asyncio.py"] + + def run_sample_scripts(self): + for script in self.sample_scripts: + cmd = self.interpreter + " -m pytest " + os.path.basename(script) + self.assertRunOk(cmd, timeout=self.timeout) diff --git a/support/testing/tests/package/test_python_pyyaml.py b/support/testing/tests/package/test_python_pyyaml.py new file mode 100644 index 00000000..9d0a351f --- /dev/null +++ b/support/testing/tests/package/test_python_pyyaml.py @@ -0,0 +1,12 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Pyyaml(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_PYYAML=y + """ + sample_scripts = ["tests/package/sample_python_pyyaml_enc.py", + "tests/package/sample_python_pyyaml_dec.py"] diff --git a/support/testing/tests/package/test_python_qrcode.py b/support/testing/tests/package/test_python_qrcode.py new file mode 100644 index 00000000..ca8a2b01 --- /dev/null +++ b/support/testing/tests/package/test_python_qrcode.py @@ -0,0 +1,12 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Qrcode(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_QRCODE=y + BR2_PACKAGE_PYTHON_QRCODE_SVG=y + """ + sample_scripts = ["tests/package/sample_python_qrcode.py"] diff --git a/support/testing/tests/package/test_python_rpi_gpio.py b/support/testing/tests/package/test_python_rpi_gpio.py new file mode 100644 index 00000000..c938ea39 --- /dev/null +++ b/support/testing/tests/package/test_python_rpi_gpio.py @@ -0,0 +1,11 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3RpiGpio(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_RPI_GPIO=y + """ + sample_scripts = ["tests/package/sample_python_rpi_gpio.py"] diff --git a/support/testing/tests/package/test_python_rsa.py b/support/testing/tests/package/test_python_rsa.py new file mode 100644 index 00000000..5ddfb513 --- /dev/null +++ b/support/testing/tests/package/test_python_rsa.py @@ -0,0 +1,12 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3RSA(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_RSA=y + """ + sample_scripts = ["tests/package/sample_python_rsa.py"] + timeout = 20 diff --git a/support/testing/tests/package/test_python_rtoml.py b/support/testing/tests/package/test_python_rtoml.py new file mode 100644 index 00000000..aed2fbc5 --- /dev/null +++ b/support/testing/tests/package/test_python_rtoml.py @@ -0,0 +1,28 @@ +from tests.package.test_python import TestPythonPackageBase + +import os + + +class TestPythonPy3rtoml(TestPythonPackageBase): + __test__ = True + config = \ + """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_NEON=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_RTOML=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + sample_scripts = ["tests/package/sample_python_rtoml.py"] + timeout = 30 + + def login(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv7", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() diff --git a/support/testing/tests/package/test_python_ruamel_yaml.py b/support/testing/tests/package/test_python_ruamel_yaml.py new file mode 100644 index 00000000..b145da4b --- /dev/null +++ b/support/testing/tests/package/test_python_ruamel_yaml.py @@ -0,0 +1,13 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3RuamelYaml(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_RUAMEL_YAML=y + BR2_PACKAGE_PYTHON_RUAMEL_YAML_CLIB=y + """ + sample_scripts = ["tests/package/sample_python_ruamel_yaml.py"] + timeout = 40 diff --git a/support/testing/tests/package/test_python_s3transfer.py b/support/testing/tests/package/test_python_s3transfer.py new file mode 100644 index 00000000..1578f3aa --- /dev/null +++ b/support/testing/tests/package/test_python_s3transfer.py @@ -0,0 +1,23 @@ +from tests.package.test_python import TestPythonPackageBase +import os + + +class TestPythonPy3S3transfer(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_S3TRANSFER=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_SIZE="250M" + """ + sample_scripts = ["tests/package/sample_python_s3transfer.py"] + timeout = 10 + + def login(self): + ext2_file = os.path.join(self.builddir, "images", "rootfs.ext2") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-drive", "file=%s,if=scsi,format=raw" % ext2_file], + kernel_cmdline=["rootwait", "root=/dev/sda"]) + self.emulator.login() diff --git a/support/testing/tests/package/test_python_scipy.py b/support/testing/tests/package/test_python_scipy.py new file mode 100644 index 00000000..fb51f25d --- /dev/null +++ b/support/testing/tests/package/test_python_scipy.py @@ -0,0 +1,25 @@ +import os + +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3SciPy(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_SCIPY=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_SIZE="250M" + # BR2_TARGET_ROOTFS_TAR is not set + """ + sample_scripts = ["tests/package/sample_python_scipy.py"] + timeout = 30 + + def login(self): + ext2_file = os.path.join(self.builddir, "images", "rootfs.ext2") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-drive", "file=%s,if=scsi,format=raw" % ext2_file], + kernel_cmdline=["rootwait", "root=/dev/sda"]) + self.emulator.login() diff --git a/support/testing/tests/package/test_python_segno.py b/support/testing/tests/package/test_python_segno.py new file mode 100644 index 00000000..75e71243 --- /dev/null +++ b/support/testing/tests/package/test_python_segno.py @@ -0,0 +1,11 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Segno(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_SEGNO=y + """ + sample_scripts = ["tests/package/sample_python_segno.py"] diff --git a/support/testing/tests/package/test_python_service_identity.py b/support/testing/tests/package/test_python_service_identity.py new file mode 100644 index 00000000..16ea943d --- /dev/null +++ b/support/testing/tests/package/test_python_service_identity.py @@ -0,0 +1,14 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3ServiceIdentity(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_SERVICE_IDENTITY=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + sample_scripts = ["tests/package/sample_python_service_identity.py"] + timeout = 30 diff --git a/support/testing/tests/package/test_python_smmap2.py b/support/testing/tests/package/test_python_smmap2.py new file mode 100644 index 00000000..a6434c57 --- /dev/null +++ b/support/testing/tests/package/test_python_smmap2.py @@ -0,0 +1,11 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Smmap2(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_SMMAP2=y + """ + sample_scripts = ["tests/package/sample_python_smmap2.py"] diff --git a/support/testing/tests/package/test_python_spake2.py b/support/testing/tests/package/test_python_spake2.py new file mode 100644 index 00000000..fb47a080 --- /dev/null +++ b/support/testing/tests/package/test_python_spake2.py @@ -0,0 +1,11 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Spake2(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_SPAKE2=y + """ + sample_scripts = ["tests/package/sample_python_spake2.py"] diff --git a/support/testing/tests/package/test_python_sympy.py b/support/testing/tests/package/test_python_sympy.py new file mode 100644 index 00000000..e2106eb4 --- /dev/null +++ b/support/testing/tests/package/test_python_sympy.py @@ -0,0 +1,13 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3SymPy(TestPythonPackageBase): + __test__ = True + + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_SYMPY=y + """ + sample_scripts = ["tests/package/sample_python_sympy.py"] + timeout = 20 diff --git a/support/testing/tests/package/test_python_tftpy.py b/support/testing/tests/package/test_python_tftpy.py new file mode 100644 index 00000000..d64f2c29 --- /dev/null +++ b/support/testing/tests/package/test_python_tftpy.py @@ -0,0 +1,11 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonTftpy(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_TFTPY=y + """ + sample_scripts = ["tests/package/sample_python_tftpy.py"] diff --git a/support/testing/tests/package/test_python_treq.py b/support/testing/tests/package/test_python_treq.py new file mode 100644 index 00000000..bd472d3b --- /dev/null +++ b/support/testing/tests/package/test_python_treq.py @@ -0,0 +1,23 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonTreq(TestPythonPackageBase): + sample_scripts = ["tests/package/sample_python_treq.py"] + + def run_sample_scripts(self): + cmd = self.interpreter + " sample_python_treq.py" + output, exit_code = self.emulator.run(cmd, timeout=20) + refuse_msgs = [1 for line in output if "Connection refused" in line] + self.assertGreater(sum(refuse_msgs), 0) + self.assertEqual(exit_code, 0) + + +class TestPythonPy3Treq(TestPythonTreq): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_TREQ=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ diff --git a/support/testing/tests/package/test_python_twisted.py b/support/testing/tests/package/test_python_twisted.py new file mode 100644 index 00000000..e87312db --- /dev/null +++ b/support/testing/tests/package/test_python_twisted.py @@ -0,0 +1,30 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonTwisted(TestPythonPackageBase): + config = TestPythonPackageBase.config + sample_scripts = ["tests/package/sample_python_twisted.py"] + + def run_sample_scripts(self): + cmd = "netstat -ltn 2>/dev/null | grep 0.0.0.0:1234" + _, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 1) + + cmd = self.interpreter + " sample_python_twisted.py &" + # give some time to setup the server + cmd += "sleep 30" + _, exit_code = self.emulator.run(cmd, timeout=35) + self.assertEqual(exit_code, 0) + + cmd = "netstat -ltn 2>/dev/null | grep 0.0.0.0:1234" + _, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + + +class TestPythonPy3Twisted(TestPythonTwisted): + __test__ = True + config = TestPythonTwisted.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_TWISTED=y + """ diff --git a/support/testing/tests/package/test_python_txaio.py b/support/testing/tests/package/test_python_txaio.py new file mode 100644 index 00000000..f1bb2c79 --- /dev/null +++ b/support/testing/tests/package/test_python_txaio.py @@ -0,0 +1,11 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Txaio(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_TXAIO=y + """ + sample_scripts = ["tests/package/sample_python_txaio_asyncio.py"] diff --git a/support/testing/tests/package/test_python_txtorcon.py b/support/testing/tests/package/test_python_txtorcon.py new file mode 100644 index 00000000..107f53c6 --- /dev/null +++ b/support/testing/tests/package/test_python_txtorcon.py @@ -0,0 +1,14 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Txtorcon(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_TXTORCON=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + sample_scripts = ["tests/package/sample_python_txtorcon.py"] + timeout = 30 diff --git a/support/testing/tests/package/test_python_ubjson.py b/support/testing/tests/package/test_python_ubjson.py new file mode 100644 index 00000000..a15dbd54 --- /dev/null +++ b/support/testing/tests/package/test_python_ubjson.py @@ -0,0 +1,12 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Ubjson(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_UBJSON=y + """ + sample_scripts = ["tests/package/sample_python_ubjson_enc.py", + "tests/package/sample_python_ubjson_dec.py"] diff --git a/support/testing/tests/package/test_python_unittest_xml_reporting.py b/support/testing/tests/package/test_python_unittest_xml_reporting.py new file mode 100644 index 00000000..446c231a --- /dev/null +++ b/support/testing/tests/package/test_python_unittest_xml_reporting.py @@ -0,0 +1,22 @@ +from tests.package.test_python import TestPythonPackageBase +import os + + +class TestPythonPy3UnitTestXmlReporting(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_UNITTEST_XML_REPORTING=y + """ + sample_scripts = ["tests/package/sample_python_unittest_xml_reporting.py"] + timeout = 60 + + def test_run(self): + self.login() + self.check_sample_scripts_exist() + cmd = "%s %s" % (self.interpreter, os.path.basename(self.sample_scripts[0])) + self.assertRunOk(cmd) + # check if some tests results in XML were generated + cmd = "ls -1 test-reports/TEST-Test1-*.xml" + self.assertRunOk(cmd) diff --git a/support/testing/tests/package/test_python_uvloop.py b/support/testing/tests/package/test_python_uvloop.py new file mode 100644 index 00000000..c5079ba5 --- /dev/null +++ b/support/testing/tests/package/test_python_uvloop.py @@ -0,0 +1,22 @@ +import os + +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonPy3Uvloop(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_UVLOOP=y + """ + sample_scripts = ["tests/package/sample_python_uvloop.py"] + + def test_run(self): + self.login() + self.check_sample_scripts_exist() + + cmd = "%s %s" % (self.interpreter, os.path.basename(self.sample_scripts[0])) + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], "Hello world!") diff --git a/support/testing/tests/package/test_python_yamllint.py b/support/testing/tests/package/test_python_yamllint.py new file mode 100644 index 00000000..226048ae --- /dev/null +++ b/support/testing/tests/package/test_python_yamllint.py @@ -0,0 +1,11 @@ +from tests.package.test_python import TestPythonPackageBase + + +class TestPythonYamllint(TestPythonPackageBase): + __test__ = True + config = TestPythonPackageBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_YAMLLINT=y + """ + sample_scripts = ["tests/package/sample_python_yamllint.py"] diff --git a/support/testing/tests/package/test_rdma_core.py b/support/testing/tests/package/test_rdma_core.py new file mode 100644 index 00000000..614fb51f --- /dev/null +++ b/support/testing/tests/package/test_rdma_core.py @@ -0,0 +1,43 @@ +import os + +import infra.basetest + + +class TestRdmaCore(infra.basetest.BRTest): + + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.91" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_PACKAGE_IPROUTE2=y + BR2_PACKAGE_LIBMNL=y + BR2_PACKAGE_RDMA_CORE=y + """.format( + infra.filepath("tests/package/test_rdma_core/linux-rdma.fragment") + ) + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["console=ttyAMA0"], + options=["-M", "virt", "-cpu", "cortex-a57", "-m", "512M", "-initrd", img]) + self.emulator.login() + + # Add the rxe0 interface + self.assertRunOk("rdma link add rxe0 type rxe netdev eth0") + + # ibv_devinfo returns 255 if no devices are found + self.assertRunOk("ibv_devinfo -v") diff --git a/support/testing/tests/package/test_rdma_core/linux-rdma.fragment b/support/testing/tests/package/test_rdma_core/linux-rdma.fragment new file mode 100644 index 00000000..e305f27e --- /dev/null +++ b/support/testing/tests/package/test_rdma_core/linux-rdma.fragment @@ -0,0 +1,9 @@ +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_USER_MAD=m +CONFIG_INFINIBAND_USER_ACCESS=m +CONFIG_RDMA_RXE=m +CONFIG_INFINIBAND_IPOIB=m +CONFIG_INFINIBAND_IPOIB_CM=y +CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y +CONFIG_INFINIBAND_RTRS_CLIENT=m +CONFIG_INFINIBAND_RTRS_SERVER=m diff --git a/support/testing/tests/package/test_redis.py b/support/testing/tests/package/test_redis.py new file mode 100644 index 00000000..2a333f46 --- /dev/null +++ b/support/testing/tests/package/test_redis.py @@ -0,0 +1,23 @@ +import os + +import infra.basetest + + +class TestRedis(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + """ + BR2_TARGET_ROOTFS_CPIO=y + BR2_PACKAGE_REDIS=y + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + self.assertRunOk("redis-cli SET hello world") + + output, exit_code = self.emulator.run("redis-cli GET hello") + self.assertEqual(exit_code, 0) + self.assertEqual(output[0].strip(), '"world"') diff --git a/support/testing/tests/package/test_rings.py b/support/testing/tests/package/test_rings.py new file mode 100644 index 00000000..be9765f1 --- /dev/null +++ b/support/testing/tests/package/test_rings.py @@ -0,0 +1,25 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuaRings(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUA=y + BR2_PACKAGE_RINGS=y + """ + + def test_run(self): + self.login() + self.module_test("rings") + + +class TestLuajitRings(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_RINGS=y + """ + + def test_run(self): + self.login() + self.module_test("rings") diff --git a/support/testing/tests/package/test_rt_tests.py b/support/testing/tests/package/test_rt_tests.py new file mode 100644 index 00000000..0795d7af --- /dev/null +++ b/support/testing/tests/package/test_rt_tests.py @@ -0,0 +1,39 @@ +import os + +import infra.basetest + + +class TestRtTests(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_RT_TESTS=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # We cannot easily test realtime properties in a CI/emulator + # environment. Instead, this test runs few rt-tests programs + # in small scenario configurations (to make sure the execution + # will remain short). It just makes sure the execution returns + # a success code. Also, to avoid making the logs too big, we + # generally pass the "--quiet" option to have a summary at the + # end of the execution. + test_cmds = [ + "cyclictest --quiet --loops=200", + "hackbench --fds=2 --groups=3 --loops=5", + "pi_stress --inversions=100", + "ptsematest --quiet --loops=100", + "rt-migrate-test --quiet --loops=5", + "signaltest --quiet --loops=200", + "sigwaittest --quiet --loops=100" + ] + + for cmd in test_cmds: + self.assertRunOk(cmd) diff --git a/support/testing/tests/package/test_ruby.py b/support/testing/tests/package/test_ruby.py new file mode 100644 index 00000000..5d4c0031 --- /dev/null +++ b/support/testing/tests/package/test_ruby.py @@ -0,0 +1,34 @@ +import os +import infra.basetest + + +class TestRuby(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_PACKAGE_RUBY=y + BR2_PACKAGE_ZLIB=y + """ + + def version_test(self): + cmd = "ruby -v" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + + def zlib_test(self, timeout=-1): + cmd = "ruby -e 'require \"zlib\"'" + _, exit_code = self.emulator.run(cmd, timeout) + self.assertEqual(exit_code, 0) + + def login(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + def test_run(self): + self.login() + self.version_test() + self.zlib_test() diff --git a/support/testing/tests/package/test_rust.py b/support/testing/tests/package/test_rust.py new file mode 100644 index 00000000..763125ca --- /dev/null +++ b/support/testing/tests/package/test_rust.py @@ -0,0 +1,98 @@ +import os +import shutil + +import infra.basetest + + +class TestRustBase(infra.basetest.BRTest): + + def login(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv7", + kernel="builtin", + options=["-initrd", img]) + self.emulator.login() + + +class TestRustBin(TestRustBase): + config = \ + """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_NEON=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_SYSTEM_DHCP="eth0" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_PACKAGE_HOST_RUSTC=y + BR2_PACKAGE_RIPGREP=y + """ + + def test_run(self): + self.login() + self.assertRunOk("rg Buildroot /etc/issue") + + +class TestRust(TestRustBase): + config = \ + """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_NEON=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_SYSTEM_DHCP="eth0" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_PACKAGE_HOST_RUSTC=y + BR2_PACKAGE_HOST_RUST=y + BR2_PACKAGE_RIPGREP=y + """ + + def test_run(self): + self.login() + self.assertRunOk("rg Buildroot /etc/issue") + + +class TestRustVendoring(infra.basetest.BRConfigTest): + config = \ + """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_NEON=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_PACKAGE_HOST_RUSTC=y + BR2_PACKAGE_RIPGREP=y + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_CRYPTOGRAPHY=y + BR2_BACKUP_SITE="" + """ + + def setUp(self): + super(TestRustVendoring, self).setUp() + + def tearDown(self): + self.show_msg("Cleaning up") + if self.b and not self.keepbuilds: + self.b.delete() + + def check_download(self, package): + # store downloaded tarball inside the output dir so the test infra + # cleans it up at the end + dl_dir = os.path.join(self.builddir, "dl") + # enforce we test the download + if os.path.exists(dl_dir): + shutil.rmtree(dl_dir) + env = {"BR2_DL_DIR": dl_dir} + self.b.build(["{}-dirclean".format(package), + "{}-legal-info".format(package)], + env) + + def test_run(self): + self.check_download("ripgrep") + self.check_download("python-cryptography") diff --git a/support/testing/tests/package/test_s6.py b/support/testing/tests/package/test_s6.py new file mode 100644 index 00000000..0772831d --- /dev/null +++ b/support/testing/tests/package/test_s6.py @@ -0,0 +1,58 @@ +import os +import textwrap + +import infra.basetest + + +class TestS6(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_S6=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", img]) + self.emulator.login() + + _, exit_code = self.emulator.run("s6-svscan -h") + self.assertEqual(exit_code, 100) + + script = \ + """ + #!/bin/execlineb -P + s6-ipcserver-socketbinder /tmp/socket + s6-ipcserverd + cat + """ + script = textwrap.dedent(script) + + # Set up scanning and service directories + self.emulator.run("mkdir -p source/testsv") + self.emulator.run("cat > source/testsv/run < source/testsv1/type") + self.assertRunOk("echo oneshot > source/testsv2/type") + self.assertRunOk("echo 'echo foo' > source/testsv1/up") + self.assertRunOk("echo 'echo bar' > source/testsv2/up") + self.assertRunOk("echo testsv1 > source/testsv2/dependencies") + self.assertRunOk("chmod +x source/testsv1/up") + self.assertRunOk("chmod +x source/testsv2/up") + + # Compile the service database + self.assertRunOk("s6-rc-compile compiled source") + + # Inspect dependencies + cmd = "s6-rc-db -c compiled -d dependencies testsv1" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], "testsv2") + cmd = "s6-rc-db -c compiled dependencies testsv2" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], "testsv1") diff --git a/support/testing/tests/package/test_screen.py b/support/testing/tests/package/test_screen.py new file mode 100644 index 00000000..b6264d34 --- /dev/null +++ b/support/testing/tests/package/test_screen.py @@ -0,0 +1,61 @@ +import os + +import infra.basetest + + +class TestScreen(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_SCREEN=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + session_name = "BuildrootSession" + message = "HelloBuildroot" + screen_dump = "screen.dump.txt" + + # Check the program can execute + self.assertRunOk("screen --version") + + # There is no "screen" running yet. Listing sessions is + # expected to fail. + _, exit_code = self.emulator.run("screen -ls") + self.assertNotEqual(exit_code, 0) + + # We now start a detached and named session. + self.assertRunOk(f"screen -dmS {session_name}") + + # Since we are supposed to have a running session, it should + # appear in the list. + output, exit_code = self.emulator.run("screen -ls") + self.assertEqual(exit_code, 0) + self.assertIn(session_name, "\n".join(output)) + + # We send an exec command to print a message in the "screen" + # display running in background. + cmd = f"screen -S {session_name} -X exec printf {message}" + self.assertRunOk(cmd) + + # We request a hardcopy of this "screen" display. + cmd = f"screen -S {session_name} -X hardcopy {screen_dump}" + self.assertRunOk(cmd) + + # The dump file is supposed to contain our message. + self.assertRunOk(f"grep -Fo '{message}' {screen_dump}") + + # We request "screen" to quit... + cmd = f"screen -S {session_name} -X quit" + self.assertRunOk(cmd) + + # Since the session is supposed to be terminated, listing + # sessions is expected to fail (again). + _, exit_code = self.emulator.run("screen -ls") + self.assertNotEqual(exit_code, 0) diff --git a/support/testing/tests/package/test_sed.py b/support/testing/tests/package/test_sed.py new file mode 100644 index 00000000..0a0fdb89 --- /dev/null +++ b/support/testing/tests/package/test_sed.py @@ -0,0 +1,118 @@ +import os + +import infra.basetest + + +class TestSed(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y + BR2_PACKAGE_SED=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def check_gnu_sed(self): + in_file = "testfile.txt" + + # We create a test file for this test. + self.assertRunOk(f"echo 'This is a test' > {in_file}") + + # Check we have the GNU sed by testing a GNU extension likely + # not present in other implementation. See: + # https://www.gnu.org/software/sed/manual/sed.html#Extended-Commands + # Note: we cannot search for "GNU sed" in sed --version, + # because busybox sed --version outputs: "This is not GNU sed + # version 4.0". The 'F' and 'Q' sed commands are known to be + # unimplemented in BusyBox 1.36.1. + expected_code = 123 + sed_script = f"F;Q {expected_code}" + cmd = f"sed '{sed_script}' {in_file}" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, expected_code) + self.assertEqual(output, [in_file]) + + def check_sed_substitute(self): + testfile_num = 5 + + # We create few different test files for this test. + cmd = f'for i in $(seq {testfile_num}) ; do ' + cmd += 'echo "=== $i Hello ===" > file$i.txt ; ' + cmd += 'done' + self.assertRunOk(cmd) + + # We reformat file content, in-place. + sed_script = "s/^=== \\([0-9]*\\) \\(Hello\\) ===$/\\2 \\1/" + cmd = f"sed -i '{sed_script}' file[0-9]*.txt" + self.assertRunOk(cmd) + + # We substitute numbers with the string "Buildroot". We use an + # extended regular expression (with the '+'), so we test with + # the '-r' option. + sed_script = "s/[0-9]+/Buildroot/g" + cmd = f"sed -r -i '{sed_script}' file[0-9]*.txt" + self.assertRunOk(cmd) + + # Our previous text manipulations are expected to end up with + # the "Hello Buildroot" string in all files. + cmd = "cat file[0-9]*.txt" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(output, ["Hello Buildroot"] * testfile_num) + + def check_sed_line_count(self): + # We use the '=' command to count lines. + line_count = 1234 + cmd = f"seq {line_count} | sed -n '$='" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(int(output[0]), line_count) + + def check_sed_line_address(self): + input_file = "strings.txt" + expected_file = "expected.txt" + + # We create simple data for this test. + strings = ["one", "two", "three", "four", "five"] + content = '\\n'.join(strings) + cmd = f"echo -e \"{content}\" > {input_file}" + self.assertRunOk(cmd) + + # The manipulation in this tests are expected to extract the + # first and last of the input. We create the expected data for + # comparison. + expected_output = [strings[0], strings[-1]] + content = '\\n'.join(expected_output) + cmd = f"echo -e \"{content}\" > {expected_file}" + self.assertRunOk(cmd) + + # We remove lines between strings "two" and "four" included. + cmd = f"sed '/two/,/four/d' {input_file} > output1.txt" + self.assertRunOk(cmd) + + # We check output is the same as the expected data. + cmd = f"cmp {expected_file} output1.txt" + self.assertRunOk(cmd) + + # We redo the same manipulation using line number addresses. + cmd = f"sed -n '1p;5p' {input_file} > output2.txt" + self.assertRunOk(cmd) + + # We check again output is correct. + cmd = f"cmp {expected_file} output2.txt" + self.assertRunOk(cmd) + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Check the program can execute + self.assertRunOk("sed --version") + + self.check_gnu_sed() + self.check_sed_substitute() + self.check_sed_line_count() + self.check_sed_line_address() diff --git a/support/testing/tests/package/test_shadow.py b/support/testing/tests/package/test_shadow.py new file mode 100644 index 00000000..9991a57d --- /dev/null +++ b/support/testing/tests/package/test_shadow.py @@ -0,0 +1,59 @@ +import os + +from infra.basetest import BRTest + + +class TestShadow(BRTest): + username = 'user_test' + # Need to use a different toolchain than the default due to + # shadow package requiring a toolchain w/ headers >= 4.14 + config = \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_GLIBC_BLEEDING_EDGE=y + BR2_PACKAGE_SHADOW=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_4=y + BR2_TARGET_ROOTFS_EXT2_SIZE="65536" + """ + timeout = 60 + + def login(self): + img = os.path.join(self.builddir, "images", "rootfs.ext4") + self.emulator.boot(arch="armv7", + kernel="builtin", + kernel_cmdline=["root=/dev/mmcblk0", + "rootfstype=ext4"], + options=["-drive", f"file={img},if=sd,format=raw"]) + self.emulator.login() + + def test_nologin(self): + self.login() + + self.assertRunOk("! nologin") + cmd = 'test "$(nologin)" = "This account is currently not available."' + self.assertRunOk(cmd) + + def test_useradd_del(self): + username = self.username + self.login() + + self.assertRunOk(f'userdel {username} || true') + self.assertRunOk(f'groupdel {username} || true') + self.assertRunOk(f'useradd -s /bin/sh {username}') + self.assertRunOk(f'test $(su {username} -c "whoami") = {username}') + self.assertRunOk(f'userdel {username}') + + def test_usermod(self): + username = self.username + new_home = '/tmp' + self.login() + + self.assertRunOk(f'userdel {username} || true') + self.assertRunOk(f'groupdel {username} || true') + self.assertRunOk(f'useradd -s /bin/sh {username}') + self.assertRunOk(f'usermod {username} --home {new_home}') + self.assertRunOk(f'test $(su {username} -c \'echo $HOME\') = {new_home}') + self.assertRunOk(f'userdel {username}') diff --git a/support/testing/tests/package/test_socat.py b/support/testing/tests/package/test_socat.py new file mode 100644 index 00000000..67b32448 --- /dev/null +++ b/support/testing/tests/package/test_socat.py @@ -0,0 +1,56 @@ +import os +import time + +import infra.basetest + + +class TestSoCat(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y + BR2_PACKAGE_NETCAT=y + BR2_PACKAGE_SOCAT=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Some values, for the test. + msg = "Hello Buildroot!" + out_file = "output.txt" + port1 = 11111 + port2 = 22222 + + # Check the program can execute. + self.assertRunOk("socat -V") + + # We start the receiver netcat on tcp/port2. + cmd = f"nc -n -l -p {port2} > {out_file} 2> /dev/null &" + self.assertRunOk(cmd) + + time.sleep(2 * self.timeout_multiplier) + + # We start socat in background to listen on tcp/port1 and + # forward to tcp/port2. + cmd = f"socat TCP4-LISTEN:{port1} TCP4:127.0.0.1:{port2} &" + self.assertRunOk(cmd) + + time.sleep(2 * self.timeout_multiplier) + + # We write a message on tcp/port1. Socat is expected to + # forward the message to the receiver on tcp/port2, and write + # our message in a file. + cmd = f"echo '{msg}' | nc -n -c 127.0.0.1 {port1}" + self.assertRunOk(cmd) + + # We check the output file contains our message. + cmd = f"cat {out_file}" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertEqual(out[0], msg) diff --git a/support/testing/tests/package/test_sox.py b/support/testing/tests/package/test_sox.py new file mode 100644 index 00000000..74f784a3 --- /dev/null +++ b/support/testing/tests/package/test_sox.py @@ -0,0 +1,74 @@ +import math +import os + +import infra.basetest + + +class TestSox(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_AUBIO=y + BR2_PACKAGE_SOX=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def note_from_freq(self, freq): + """Return a note number from the input frequency in Hertz.""" + return round((12 * math.log(freq / 440) / math.log(2)) + 69) + + def check_audio_note(self, input_file, expected_note): + """Check the input_file include the expected_note.""" + out, ret = self.emulator.run(f"aubionotes {input_file}", timeout=20) + self.assertEqual(ret, 0) + note_found = False + for line in out: + values = line.split() + if len(values) == 3: + note = round(float(values[0])) + if note == expected_note: + note_found = True + self.assertTrue(note_found, "The expected note was not found") + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Check the program can execute. + self.assertRunOk("sox --version") + + freq = 440 # General Midi note A3 + expected_note = self.note_from_freq(freq) + wav_file = "ref.wav" + tmpwav_file = "tmp.wav" + + # Generate a sinusoidal tone. + cmd = "sox -V -r 48000 -n -b 16 -c 1" + cmd += f" {wav_file} synth 3 sin {freq} vol -10dB" + self.assertRunOk(cmd) + + # Compute statistics on the generated file. + self.assertRunOk(f"sox {wav_file} -n stat") + + # We check the generated wave file includes the expected note. + self.check_audio_note(wav_file, expected_note) + + # We resample the reference file. + cmd = f"sox -V {wav_file} -r 22050 {tmpwav_file}" + self.assertRunOk(cmd) + + # We should still detect our expected note. + self.check_audio_note(tmpwav_file, expected_note) + + # We convert the file by changing the speed by a factor. + speed_factor = 2 + cmd = f"sox -V {wav_file} {tmpwav_file} speed {speed_factor}" + self.assertRunOk(cmd) + + # We compute the new expected note from this test controller + # side, and check we detect this new note in the audio file. + new_expected_note = self.note_from_freq(freq * speed_factor) + self.check_audio_note(tmpwav_file, new_expected_note) diff --git a/support/testing/tests/package/test_sqlite.py b/support/testing/tests/package/test_sqlite.py new file mode 100644 index 00000000..215703d7 --- /dev/null +++ b/support/testing/tests/package/test_sqlite.py @@ -0,0 +1,101 @@ +import os + +import infra.basetest + + +class TestSQLite(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_SQLITE=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + db_file = "buildroot.db" + db_backup = "db_dump.sql" + + def run_sql_query(self, query): + cmd = f'sqlite3 "{self.db_file}" "{query}"' + self.assertRunOk(cmd) + + def create_tables(self): + sql_query = "CREATE TABLE fruits (" + sql_query += "id integer PRIMARY KEY, name varchar(16) NOT NULL);" + self.run_sql_query(sql_query) + + sql_query = "CREATE TABLE colors (" + sql_query += "id integer PRIMARY KEY, name varchar(16) NOT NULL);" + self.run_sql_query(sql_query) + + sql_query = "CREATE TABLE fruit_colors (" + sql_query += "fruit_id integer REFERENCES fruits(id), " + sql_query += "color_id integer REFERENCES colors(id), " + sql_query += "UNIQUE (fruit_id, color_id));" + self.run_sql_query(sql_query) + + def insert_data(self): + fruits = ["Banana", "Blueberry", "Orange", "Raspberry"] + fruit_id = 1 + for fruit in fruits: + sql_query = "INSERT INTO fruits (id, name) " + sql_query += f"VALUES ({fruit_id}, '{fruit}');" + self.run_sql_query(sql_query) + fruit_id += 1 + + colors = ["Blue", "Orange", "Red", "Yellow"] + color_id = 1 + for color in colors: + sql_query = "INSERT INTO colors (id, name) " + sql_query += f"VALUES ({color_id}, '{color}');" + self.run_sql_query(sql_query) + color_id += 1 + + fruit_colors = [(1, 4), (2, 1), (3, 2), (4, 3)] + for fruit_color in fruit_colors: + fruit_id, color_id = fruit_color + sql_query = "INSERT INTO fruit_colors (fruit_id, color_id) " + sql_query += f"VALUES ({fruit_id}, {color_id});" + self.run_sql_query(sql_query) + + def query_database(self): + sql_query = "SELECT " + sql_query += "fruits.name AS fruit, colors.name AS color " + sql_query += "FROM fruits, colors, fruit_colors " + sql_query += "WHERE fruits.id = fruit_colors.fruit_id " + sql_query += "AND colors.id = fruit_colors.color_id " + sql_query += "ORDER BY fruit;" + self.run_sql_query(sql_query) + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # The sqlite3 binary can execute. + self.assertRunOk("sqlite3 --version") + + self.create_tables() + self.insert_data() + self.query_database() + + sql_query = "UPDATE fruits SET name = 'Lemon' WHERE id = 1;" + self.run_sql_query(sql_query) + + # Dump the test database for a backup. + cmd = f'echo .dump | sqlite3 "{self.db_file}" > "{self.db_backup}"' + self.assertRunOk(cmd) + + # Drop all the tables. + tables = ["fruit_colors", "fruits", "colors"] + for table in tables: + sql_query = f"DROP TABLE {table};" + self.run_sql_query(sql_query) + + # Restore the backup. + cmd = f'sqlite3 "{self.db_file}" < "{self.db_backup}"' + self.assertRunOk(cmd) + + # Query on last time our data, to check the backup restoration + # succeeded. + self.query_database() diff --git a/support/testing/tests/package/test_strace.py b/support/testing/tests/package/test_strace.py new file mode 100644 index 00000000..c1cba217 --- /dev/null +++ b/support/testing/tests/package/test_strace.py @@ -0,0 +1,37 @@ +import os + +import infra.basetest + + +class TestStrace(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_STRACE=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Check the program can execute. + self.assertRunOk("strace --version") + + test_file = "buildroot-strace-test.txt" + test_file_mode = "0600" + strace_log = "strace.log" + + # Create a test file. + self.assertRunOk(f"touch {test_file}") + + # Run strace on a chmod + cmd = f"strace -o {strace_log} chmod {test_file_mode} {test_file}" + self.assertRunOk(cmd) + + # Check the strace log contain a call to chmod() + expected_str = f"chmod(\"{test_file}\", {test_file_mode}) = 0" + self.assertRunOk(f"grep -F '{expected_str}' {strace_log}") diff --git a/support/testing/tests/package/test_stress_ng.py b/support/testing/tests/package/test_stress_ng.py new file mode 100644 index 00000000..12fd6ec9 --- /dev/null +++ b/support/testing/tests/package/test_stress_ng.py @@ -0,0 +1,22 @@ +import os + +import infra.basetest + + +class TestStressNG(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_STRESS_NG=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + self.assertRunOk("stress-ng --version") + self.assertRunOk("stress-ng --cpu 1 --timeout 3") diff --git a/support/testing/tests/package/test_sudo.py b/support/testing/tests/package/test_sudo.py new file mode 100644 index 00000000..daba28a1 --- /dev/null +++ b/support/testing/tests/package/test_sudo.py @@ -0,0 +1,34 @@ +import os + +import infra.basetest + + +class TestSudo(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_SUDO=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", img]) + self.emulator.login() + + # -D don't set a password + # -h set home directory + # -H don't create home directory + # -s set shell + self.assertRunOk("adduser -D -h /tmp -H -s /bin/sh sudotest") + + self.assertRunOk("echo 'sudotest ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers") + + output, exit_code = self.emulator.run("su - sudotest -c 'echo hello world'") + self.assertEqual(output, ["hello world"]) + + output, exit_code = self.emulator.run("su - sudotest -c 'sudo echo hello world'") + self.assertEqual(exit_code, 0) + self.assertEqual(output, ["hello world"]) diff --git a/support/testing/tests/package/test_swipl.py b/support/testing/tests/package/test_swipl.py new file mode 100644 index 00000000..08391015 --- /dev/null +++ b/support/testing/tests/package/test_swipl.py @@ -0,0 +1,46 @@ +import os + +import infra.basetest + + +class TestSWIPL(infra.basetest.BRTest): + rootfs_overlay = \ + infra.filepath("tests/package/test_swipl/rootfs-overlay") + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + f""" + BR2_PACKAGE_SWIPL=y + BR2_ROOTFS_OVERLAY="{rootfs_overlay}" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Check program executes. + cmd = "swipl --version" + self.assertRunOk(cmd) + + # Check swipl fails when goal is false. + cmd = "swipl -g false" + _, exit_code = self.emulator.run(cmd) + self.assertNotEqual(exit_code, 0) + + # Test output. + string = "Hello Buildroot !" + cmd = f"swipl -g 'writeln(\"{string}\")' -t halt" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], string) + + # Check the swipl demo file works (ex: "sam" likes "pizza"). + cmd = "swipl -g '[swi(demo/likes)]' -g 'likes(sam,pizza)' -t halt" + self.assertRunOk(cmd) + + # Run a more complex logic program (solve a sudoku). + cmd = "swipl -g top -t halt /root/sudoku.pl" + self.assertRunOk(cmd, timeout=10) diff --git a/support/testing/tests/package/test_swipl/rootfs-overlay/root/sudoku.pl b/support/testing/tests/package/test_swipl/rootfs-overlay/root/sudoku.pl new file mode 100644 index 00000000..2b68b6cc --- /dev/null +++ b/support/testing/tests/package/test_swipl/rootfs-overlay/root/sudoku.pl @@ -0,0 +1,42 @@ +% taken from: +% https://www.swi-prolog.org/pldoc/man?section=clpfd-sudoku + +:- use_module(library(clpfd)). + +sudoku(Rows) :- + length(Rows, 9), maplist(same_length(Rows), Rows), + append(Rows, Vs), Vs ins 1..9, + maplist(all_distinct, Rows), + transpose(Rows, Columns), + maplist(all_distinct, Columns), + Rows = [As,Bs,Cs,Ds,Es,Fs,Gs,Hs,Is], + blocks(As, Bs, Cs), + blocks(Ds, Es, Fs), + blocks(Gs, Hs, Is). + +blocks([], [], []). +blocks([N1,N2,N3|Ns1], [N4,N5,N6|Ns2], [N7,N8,N9|Ns3]) :- + all_distinct([N1,N2,N3,N4,N5,N6,N7,N8,N9]), + blocks(Ns1, Ns2, Ns3). + +problem(1, [[_,_,_,_,_,_,_,_,_], + [_,_,_,_,_,3,_,8,5], + [_,_,1,_,2,_,_,_,_], + [_,_,_,5,_,7,_,_,_], + [_,_,4,_,_,_,1,_,_], + [_,9,_,_,_,_,_,_,_], + [5,_,_,_,_,_,_,7,3], + [_,_,2,_,1,_,_,_,_], + [_,_,_,_,4,_,_,_,9]]). + +top :- writeln("Sudoku solution:"), + problem(1, Rows), sudoku(Rows), maplist(portray_clause, Rows), + Rows = [[9, 8, 7, 6, 5, 4, 3, 2, 1], + [2, 4, 6, 1, 7, 3, 9, 8, 5], + [3, 5, 1, 9, 2, 8, 7, 4, 6], + [1, 2, 8, 5, 3, 7, 6, 9, 4], + [6, 3, 4, 8, 9, 2, 1, 5, 7], + [7, 9, 5, 4, 6, 1, 8, 3, 2], + [5, 1, 9, 2, 8, 6, 4, 7, 3], + [4, 7, 2, 3, 1, 9, 5, 6, 8], + [8, 6, 3, 7, 4, 5, 2, 1, 9]]. diff --git a/support/testing/tests/package/test_syslog_ng.py b/support/testing/tests/package/test_syslog_ng.py new file mode 100644 index 00000000..153c9f73 --- /dev/null +++ b/support/testing/tests/package/test_syslog_ng.py @@ -0,0 +1,36 @@ +import os + +import infra.basetest + + +class TestSyslogNg(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y + BR2_PACKAGE_SYSLOG_NG=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + cmd = "grep 'syslog-ng starting' /var/log/messages" + self.assertRunOk(cmd) + + cmd = "logger my-message && " + cmd += "sleep 1 && " + cmd += "grep my-message /var/log/messages" + self.assertRunOk(cmd) + + cmd = "syslog-ng-ctl reload && " + cmd += "sleep 1" + self.assertRunOk(cmd) + + cmd = "grep -i 'syslog-ng.*warning' /var/log/messages" + _, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 1) diff --git a/support/testing/tests/package/test_tcl.py b/support/testing/tests/package/test_tcl.py new file mode 100644 index 00000000..ae94e80a --- /dev/null +++ b/support/testing/tests/package/test_tcl.py @@ -0,0 +1,50 @@ +import math +import os + +import infra.basetest + + +class TestTcl(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + f""" + BR2_PACKAGE_TCL=y + # BR2_PACKAGE_TCL_SHLIB_ONLY is not set + BR2_ROOTFS_OVERLAY="{infra.filepath("tests/package/test_tcl/rootfs-overlay")}" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Print tcl the interpreter version and patchlevel. + tcl_cmds = "puts \"tcl_version: $tcl_version\";" + tcl_cmds += "puts \"patchlevel: [info patchlevel]\";" + tcl_cmds += "exit 0" + cmd = f"echo '{tcl_cmds}' | tclsh" + self.assertRunOk(cmd) + + # We check tclsh correctly print a string. + txt = "Hello Buildroot" + cmd = f"echo 'puts \"{txt}\"; exit 0' | tclsh" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], txt) + + # We check tclsh can return a non-zero exit code. + expected_code = 123 + cmd = f"echo 'exit {expected_code}' | tclsh" + _, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, expected_code) + + # We check a tcl program computing factorial run correctly. + input_value = 12 + expected_output = str(math.factorial(input_value)) + cmd = f"/root/factorial.tcl {input_value}" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], expected_output) diff --git a/support/testing/tests/package/test_tcl/rootfs-overlay/root/factorial.tcl b/support/testing/tests/package/test_tcl/rootfs-overlay/root/factorial.tcl new file mode 100755 index 00000000..0398f24c --- /dev/null +++ b/support/testing/tests/package/test_tcl/rootfs-overlay/root/factorial.tcl @@ -0,0 +1,11 @@ +#! /usr/bin/env tclsh + +proc factorial {n} { + set f 1 + for {set i 1} {$i <= $n} {incr i} { + set f [expr {$f * $i}] + } + return $f +} + +puts [factorial [lindex $argv 0]] diff --git a/support/testing/tests/package/test_tcpdump.py b/support/testing/tests/package/test_tcpdump.py new file mode 100644 index 00000000..42bfc960 --- /dev/null +++ b/support/testing/tests/package/test_tcpdump.py @@ -0,0 +1,46 @@ +import os +import time + +import infra.basetest + + +class TestTcpdump(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y + BR2_PACKAGE_TCPDUMP=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + capture_file = "capture.pcap" + decode_log = "decode.log" + + # Check the program can execute. + self.assertRunOk("tcpdump --version") + + # Run ping in background. + cmd = "ping localhost >/dev/null &" + self.assertRunOk(cmd) + + time.sleep(1) + + # Capture 3 packets with the message. + cmd = f"tcpdump -c 3 -w {capture_file} icmp" + self.assertRunOk(cmd) + + # Decode the capture file. + cmd = f"tcpdump -r {capture_file} > {decode_log}" + self.assertRunOk(cmd) + + # Check we have ICMP echo requests/replies in the + # decoded capture. + cmd = f"grep -E 'ICMP echo (request|reply)' {decode_log}" + self.assertRunOk(cmd) diff --git a/support/testing/tests/package/test_tesseract_ocr.py b/support/testing/tests/package/test_tesseract_ocr.py new file mode 100644 index 00000000..232025ba --- /dev/null +++ b/support/testing/tests/package/test_tesseract_ocr.py @@ -0,0 +1,43 @@ +import os + +import infra.basetest + + +class TestTesseractOcr(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_FREETYPE=y + BR2_PACKAGE_GHOSTSCRIPT_FONTS=y + BR2_PACKAGE_GRAPHICSMAGICK=y + BR2_PACKAGE_TESSERACT_OCR=y + BR2_PACKAGE_TESSERACT_OCR_LANG_ENG=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + msg = "Hello from Buildroot runtime test." + img_file = "image.pgm" + txt_basename = "text" + txt_file = f"{txt_basename}.txt" + + # Check the program execute. + self.assertRunOk("tesseract --version") + + # Generate an image file including a text message. + cmd = f"gm convert -pointsize 16 label:'{msg}' {img_file}" + self.assertRunOk(cmd) + + # Perform the character recognition. + cmd = f"tesseract {img_file} {txt_basename}" + self.assertRunOk(cmd, timeout=30) + + # Check the decoded text matches the original message. + cmd = f"grep -F '{msg}' {txt_file}" + self.assertRunOk(cmd) diff --git a/support/testing/tests/package/test_thttpd.py b/support/testing/tests/package/test_thttpd.py new file mode 100644 index 00000000..007bc91f --- /dev/null +++ b/support/testing/tests/package/test_thttpd.py @@ -0,0 +1,26 @@ +import os + +import infra.basetest + + +class TestThttpd(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_THTTPD=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + msg = "Hello Buildroot!" + + self.assertRunOk("thttpd -V") + self.assertRunOk(f"echo '{msg}' > /var/www/data/index.html") + self.assertRunOk("wget http://localhost/index.html") + self.assertRunOk(f"grep -F '{msg}' index.html") diff --git a/support/testing/tests/package/test_tmux.py b/support/testing/tests/package/test_tmux.py new file mode 100644 index 00000000..f2c620d5 --- /dev/null +++ b/support/testing/tests/package/test_tmux.py @@ -0,0 +1,38 @@ +import os + +import infra.basetest + + +class TestTmux(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_TMUX=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_GENERATE_LOCALE="C.UTF-8" + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + cmd = "tmux -V" + self.assertRunOk(cmd) + + cmd = "tmux -C trace.txt") + + # Check we have occurrences of "kmalloc:" in the trace report. + cmd = "grep -Fc kmalloc: trace.txt" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertTrue(int(output[0]) > 0) diff --git a/support/testing/tests/package/test_trace_cmd/linux-ftrace.fragment b/support/testing/tests/package/test_trace_cmd/linux-ftrace.fragment new file mode 100644 index 00000000..ef821466 --- /dev/null +++ b/support/testing/tests/package/test_trace_cmd/linux-ftrace.fragment @@ -0,0 +1 @@ +CONFIG_FTRACE=y diff --git a/support/testing/tests/package/test_turbolua.py b/support/testing/tests/package/test_turbolua.py new file mode 100644 index 00000000..b8253c1b --- /dev/null +++ b/support/testing/tests/package/test_turbolua.py @@ -0,0 +1,13 @@ +from tests.package.test_lua import TestLuaBase + + +class TestLuajitTurbolua(TestLuaBase): + config = TestLuaBase.config + \ + """ + BR2_PACKAGE_LUAJIT=y + BR2_PACKAGE_TURBOLUA=y + """ + + def test_run(self): + self.login() + self.module_test("turbo") diff --git a/support/testing/tests/package/test_uboot_openssl_pkgconfig.py b/support/testing/tests/package/test_uboot_openssl_pkgconfig.py new file mode 100644 index 00000000..55a45f44 --- /dev/null +++ b/support/testing/tests/package/test_uboot_openssl_pkgconfig.py @@ -0,0 +1,19 @@ +import os + +import infra.basetest + + +class TestUbootOpensslPkgConfig(infra.basetest.BRTest): + config = infra.basetest.MINIMAL_CONFIG + \ + """ + BR2_x86_64=y + BR2_x86_atom=y + BR2_PACKAGE_OPENSSL=y + BR2_TARGET_UBOOT=y + BR2_TARGET_UBOOT_BOARD_DEFCONFIG="efi-x86_payload64" + BR2_TARGET_UBOOT_NEEDS_OPENSSL=y + """ + + def test_run(self): + img = os.path.join(self.builddir, "images", "u-boot.bin") + self.assertTrue(os.path.exists(img)) diff --git a/support/testing/tests/package/test_usbutils.py b/support/testing/tests/package/test_usbutils.py new file mode 100644 index 00000000..83c3f7f9 --- /dev/null +++ b/support/testing/tests/package/test_usbutils.py @@ -0,0 +1,61 @@ +import os + +import infra.basetest + + +class TestUsbUtils(infra.basetest.BRTest): + # A specific configuration is needed for testing usbutils, to + # enable USB 2.0 support in the Kernel. + linux_fragment = \ + infra.filepath("tests/package/test_usbutils/linux-usbutils.fragment") + config = \ + f""" + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.73" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{linux_fragment}" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_PACKAGE_EUDEV=y + BR2_PACKAGE_USBUTILS=y + BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "Image") + # We add a USB keyboard and mouse devices for the test. + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["console=ttyAMA0"], + options=["-M", "virt", "-cpu", "cortex-a57", "-m", "256M", + "-initrd", img, + "-device", "usb-ehci,id=ehci", + "-device", "usb-kbd,bus=ehci.0", + "-device", "usb-mouse,bus=ehci.0"]) + self.emulator.login() + + # Check the program can execute. We also check the version + # string to make sure we have the usbutils version. The + # BusyBox lsusb ignores arguments. + output, exit_code = self.emulator.run("lsusb --version") + self.assertEqual(exit_code, 0) + self.assertTrue(output[0].startswith("lsusb (usbutils)")) + + # Test few simple and common invocations + self.assertRunOk("lsusb") + self.assertRunOk("lsusb --tree") + self.assertRunOk("lsusb --verbose") + # 1d6b:0002 is Linux Foundation 2.0 root hub + # it should be present. lsusb return an error if no device + # is found. + self.assertRunOk("lsusb -d 1d6b:0002") + # we emulate a USB keyboard and mouse, so usbhid-dump should find them + self.assertRunOk("usbhid-dump") diff --git a/support/testing/tests/package/test_usbutils/linux-usbutils.fragment b/support/testing/tests/package/test_usbutils/linux-usbutils.fragment new file mode 100644 index 00000000..d9abd282 --- /dev/null +++ b/support/testing/tests/package/test_usbutils/linux-usbutils.fragment @@ -0,0 +1,2 @@ +CONFIG_USB=y +CONFIG_USB_EHCI_HCD=y diff --git a/support/testing/tests/package/test_vorbis_tools.py b/support/testing/tests/package/test_vorbis_tools.py new file mode 100644 index 00000000..edf186f3 --- /dev/null +++ b/support/testing/tests/package/test_vorbis_tools.py @@ -0,0 +1,20 @@ +from tests.package.test_audio_codec_base import TestAudioCodecBase + + +class TestVorbisTools(TestAudioCodecBase): + __test__ = True + config = TestAudioCodecBase.config + \ + """ + BR2_PACKAGE_VORBIS_TOOLS=y + """ + encoded_file = "encoded.ogg" + + def encode_test(self, input_filename): + cmd = "oggenc" + cmd += f" -o {self.encoded_file} {input_filename}" + self.assertRunOk(cmd) + + def decode_test(self, output_filename): + cmd = "oggdec" + cmd += f" -o {output_filename} {self.encoded_file}" + self.assertRunOk(cmd) diff --git a/support/testing/tests/package/test_weston.py b/support/testing/tests/package/test_weston.py new file mode 100644 index 00000000..f37a7356 --- /dev/null +++ b/support/testing/tests/package/test_weston.py @@ -0,0 +1,137 @@ +import os +import time + +import infra.basetest +from ..graphics_base import GraphicsBase + + +class TestWeston(infra.basetest.BRTest, GraphicsBase): + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_ROOTFS_OVERLAY="{}" + BR2_PER_PACKAGE_DIRECTORIES=y + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.44" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" + BR2_PACKAGE_LIBDRM=y + BR2_PACKAGE_MESA3D=y + BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y + BR2_PACKAGE_MESA3D_LLVM=y + BR2_PACKAGE_MESA3D_OPENGL_EGL=y + BR2_PACKAGE_MESA3D_OPENGL_ES=y + BR2_PACKAGE_WAYLAND_UTILS=y + BR2_PACKAGE_WESTON=y + BR2_PACKAGE_WESTON_SIMPLE_CLIENTS=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + # BR2_TARGET_ROOTFS_TAR is not set + """.format( + infra.filepath("tests/package/test_weston/overlay"), + infra.filepath("tests/package/test_weston/linux-vkms.fragment") + ) + + def start_weston(self): + self.assertRunOk("export XDG_RUNTIME_DIR=/tmp") + + cmd = "weston" + cmd += " --config=/etc/weston.ini" + cmd += " --continue-without-input" + cmd += " --log=/tmp/weston.log" + cmd += " &> /dev/null &" + self.assertRunOk(cmd) + + self.assertRunOk("export WAYLAND_DISPLAY=wayland-1") + + def wait_for_weston(self): + # We wait for the wayland socket to appear... + wayland_socket = "${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}" + cmd = f"while [ ! -e \"{wayland_socket}\" ] ; do sleep 1 ; done" + self.assertRunOk(cmd, timeout=10) + time.sleep(4) + + def stop_weston(self): + cmd = "killall weston && sleep 3" + self.assertRunOk(cmd) + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["console=ttyAMA0"], + options=["-M", "virt", + "-cpu", "cortex-a57", + "-smp", "4", + "-m", "256M", + "-initrd", img]) + self.emulator.login() + + # Check the weston binary can execute + self.assertRunOk("weston --version") + + self.start_weston() + self.wait_for_weston() + + # Check a simple info client can communicate with the compositor + self.assertRunOk("wayland-info", timeout=10) + + # We get 10 consecutive DRM frame CRCs and count how many + # unique CRCs we have. Since weston is supposed to run idle, + # we should have 10 times the same display CRC. + self.assertTrue(len(self.get_n_fb_crc(uniq=True)) == 1) + + # We save the CRC value of an empty weston desktop for + # later... + weston_desktop_crc = self.get_n_fb_crc(count=1)[0] + + # We start the weston-simple-egl in background... Every + # rendered frame is supposed to be different (as the triangle + # animation is derived from the system time). Since all the + # rendering (client application and compositor) is in + # software, we sleep a bit to let those program to settle. + self.assertRunOk("weston-simple-egl >/dev/null 2>&1 &") + time.sleep(8) + + # Since the weston-simple-egl client is supposed to run and + # display something, we are now supposed to measure a + # different display CRC than the one we measured when the + # desktop was empty. + crc = self.get_n_fb_crc(count=1)[0] + self.assertNotEqual(crc, weston_desktop_crc) + + # While weston-simple-egl is running, we check the VKMS DRM + # CRCs are now changing. We get many CRCs, one per display + # driver refresh (at ~60Hz). Since all the rendering is in + # software, we can expect a slow frame rate. In 300 captured + # CRCs (5s), we expect at least 5 different values (i.e. 1 fps). + # This guarantees the rendering pipeline is working, while we + # remain very permissive to slow emulation situations. + # Increase timeout, as the command is expected to run about 5s, + # which is the default timeout. + crcs = self.get_n_fb_crc(count=300, timeout=10) + self.assertGreaterEqual(len(crcs), 5) + + # We stop weston-simple-egl, and sleep a bit to let Weston do + # its cleanup and desktop repaint refresh... + self.assertRunOk("killall weston-simple-egl") + time.sleep(4) + + # After we stopped the application, we should have the initial + # weston desktop background. The CRC we measure now should be + # the same as the one we saved earlier. + crc = self.get_n_fb_crc(count=1)[0] + self.assertEqual(crc, weston_desktop_crc) + + self.stop_weston() + + # Now weston is supposed to be stopped, + # a simple client is expected to fail. + _, exit_code = self.emulator.run("wayland-info") + self.assertNotEqual(exit_code, 0) diff --git a/support/testing/tests/package/test_weston/linux-vkms.fragment b/support/testing/tests/package/test_weston/linux-vkms.fragment new file mode 100644 index 00000000..3fc7a5dd --- /dev/null +++ b/support/testing/tests/package/test_weston/linux-vkms.fragment @@ -0,0 +1,2 @@ +CONFIG_DEBUG_FS=y +CONFIG_DRM_VKMS=y diff --git a/support/testing/tests/package/test_weston/overlay/etc/weston.ini b/support/testing/tests/package/test_weston/overlay/etc/weston.ini new file mode 100644 index 00000000..534b5c1f --- /dev/null +++ b/support/testing/tests/package/test_weston/overlay/etc/weston.ini @@ -0,0 +1,15 @@ +# The shell "clock-format" is set to "none", in order to have stable +# display output, independant from the time. The display output can +# then be reliably checked with VKMS CRC. +# "startup-animation" and "close-animation" are set to "none" for +# faster transitions (fade animations with a software GLES +# implementation tend to be slow). +# Finally, we force the smallest standard display output mode +# resolution, again for faster test execution. +[shell] +clock-format=none +startup-animation=none +close-animation=none +[output] +name=Virtual-1 +mode=640x480 diff --git a/support/testing/tests/package/test_wine.py b/support/testing/tests/package/test_wine.py new file mode 100644 index 00000000..4e5b4a8b --- /dev/null +++ b/support/testing/tests/package/test_wine.py @@ -0,0 +1,88 @@ +import os + +import infra.basetest + + +class TestWine(infra.basetest.BRTest): + # Wine depends on i386 architecture. The pre-build runtime test + # Kernel (for armv5) cannot be used. The config also uses a ext4 + # rootfs due to the larger Wine footprint. We also enable NLS, + # which is required for cmd.exe shell to work. + config = \ + """ + BR2_i386=y + BR2_x86_pentium4=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.27" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86/linux.config" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y + BR2_PACKAGE_WINE=y + BR2_SYSTEM_ENABLE_NLS=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_4=y + BR2_TARGET_ROOTFS_EXT2_SIZE="256M" + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + drive = os.path.join(self.builddir, "images", "rootfs.ext4") + kern = os.path.join(self.builddir, "images", "bzImage") + self.emulator.boot(arch="i386", + kernel=kern, + kernel_cmdline=["root=/dev/vda console=ttyS0"], + options=["-M", "pc", "-m", "256M", + "-drive", f"file={drive},if=virtio,format=raw"]) + self.emulator.login() + + # Check the program can run. + self.assertRunOk("wine --version") + + # Remove the Wine directory to make this test idempotent. This + # is because we use a persistent storage. This is useful only + # when the run-tests script is used with the "-k" option. + self.assertRunOk("rm -rf ~/.wine") + + # Wine usually prints lots of debug messages. We disable all + # logs for this test. For debugging, this line can be + # commented, or extra log can also be added. "WINEDEBUG=+all" + # enable all logs and generates a lot of messages. + # See: https://wiki.winehq.org/Debug_Channels + self.assertRunOk("export WINEDEBUG=-all") + + # We force the initialization of the WINEPREFIX + # directory. This operation can take some time. This will make + # subsequent wine invocation execution time more stable. + self.assertRunOk("wineboot --init", timeout=45) + + # We check we can list files in the Windows OS directory. + cmd = "wine cmd.exe /C 'DIR C:\\WINDOWS\\'" + self.assertRunOk(cmd, timeout=10) + + # We check we can read a Windows OS specific environment + # variable. We use "assertIn" rather than "assertEqual" + # because the cmd.exe shell write extra control characters. + cmd = "wine cmd.exe /C 'ECHO %OS%'" + out, ret = self.emulator.run(cmd, timeout=10) + self.assertEqual(ret, 0) + self.assertIn("Windows_NT", out[0]) + + # We check we can print an arbitrary string with the + # cmd.exe shell. + string = "Hello Buildroot !" + cmd = f"wine cmd.exe /C 'ECHO {string}'" + out, ret = self.emulator.run(cmd, timeout=10) + self.assertEqual(ret, 0) + self.assertIn(string, out[0]) + + # We check the VER command reports a Windows OS version. + cmd = "wine cmd.exe /C 'VER'" + out, ret = self.emulator.run(cmd, timeout=10) + self.assertEqual(ret, 0) + self.assertIn("Microsoft Windows", "\n".join(out)) + + # We run the ping.exe command. + self.assertRunOk("wine ping.exe 127.0.0.1", timeout=10) diff --git a/support/testing/tests/package/test_xfsprogs.py b/support/testing/tests/package/test_xfsprogs.py new file mode 100644 index 00000000..a3a4bd27 --- /dev/null +++ b/support/testing/tests/package/test_xfsprogs.py @@ -0,0 +1,112 @@ +import os +import subprocess + +import infra.basetest + + +class TestXfsProgs(infra.basetest.BRTest): + # This test needs a Kernel with XFS support. + kern_frag = \ + infra.filepath("tests/package/test_xfsprogs/linux-xfs.fragment") + config = \ + f""" + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.37" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{kern_frag}" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_PACKAGE_XFSPROGS=y + BR2_PACKAGE_OPENSSL=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + # Prepare the disk image. XFS requires at least 300MB of + # storage to work. + disk_file = os.path.join(self.builddir, "images", "disk.img") + self.emulator.logfile.write(f"Creating disk image: {disk_file}") + self.emulator.logfile.flush() + subprocess.check_call( + ["dd", "if=/dev/zero", f"of={disk_file}", "bs=1M", "count=512"], + stdout=self.emulator.logfile, + stderr=self.emulator.logfile) + + # Run the emulator with a blank drive. + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "Image") + bootargs = ["console=ttyAMA0"] + qemu_opts = ["-M", "virt", "-cpu", "cortex-a57", "-m", "256M", + "-initrd", img, + "-drive", f"file={disk_file},if=virtio,format=raw"] + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=bootargs, + options=qemu_opts) + self.emulator.login() + + # Check a program can run and show its version. + self.assertRunOk("mkfs.xfs -V") + + # Variables for this test. + dev = "/dev/vda" + label = "BR_TEST" + mnt_pt = "/tmp/xfs" + data_file = f"{mnt_pt}/data.bin" + + # We create the XFS filesystem on our device. + self.assertRunOk(f"mkfs.xfs {dev}") + + # We set a label on this filesystem. + self.assertRunOk(f"xfs_admin -L '{label}' {dev}") + + # We create a mount point. + self.assertRunOk(f"mkdir -p {mnt_pt}") + + # We mount the XFS filesystem. + self.assertRunOk(f"mount {dev} {mnt_pt}") + + # We create a file with random data, to use this new + # filesystem a bit. + self.assertRunOk(f"dd if=/dev/urandom of={data_file} bs=1M count=10") + + # We compute the sha256 hash and save it for later. + hash_cmd = f"sha256sum {data_file}" + out, ret = self.emulator.run(hash_cmd) + self.assertEqual(ret, 0) + data_sha256 = out[0] + + # We unmount the filesystem. + self.assertRunOk(f"umount {mnt_pt}") + + # We query the fragmentation level. Since it's a new + # filesystem, we don't expect any filesystem + # fragmentation. This invocation is just to test the "xfs_db" + # program can run and read the filesystem. + self.assertRunOk(f"xfs_db -c frag -r {dev}") + + # We run a repair (this tool is the equivalent of + # "fsck"). Again, since we cleanly unmounted the filesystem, + # we are not expecting any repair. This is just to test the + # program works correctly. + self.assertRunOk(f"xfs_repair {dev}") + + # We query the label and check it is the one we set at the + # beginning. + out, ret = self.emulator.run(f"xfs_admin -l {dev}") + self.assertEqual(ret, 0) + self.assertEqual(out[0], f"label = \"{label}\"") + + # We remount our filesystem. + self.assertRunOk(f"mount {dev} {mnt_pt}") + + # We should recompute the same sha256 hash as before. + out, ret = self.emulator.run(hash_cmd) + self.assertEqual(ret, 0) + self.assertEqual(out[0], data_sha256) diff --git a/support/testing/tests/package/test_xfsprogs/linux-xfs.fragment b/support/testing/tests/package/test_xfsprogs/linux-xfs.fragment new file mode 100644 index 00000000..32f7f6d8 --- /dev/null +++ b/support/testing/tests/package/test_xfsprogs/linux-xfs.fragment @@ -0,0 +1 @@ +CONFIG_XFS_FS=y diff --git a/support/testing/tests/package/test_xz.py b/support/testing/tests/package/test_xz.py new file mode 100644 index 00000000..7776c160 --- /dev/null +++ b/support/testing/tests/package/test_xz.py @@ -0,0 +1,10 @@ +from tests.package.test_compressor_base import TestCompressorBase + + +class TestXz(TestCompressorBase): + __test__ = True + config = TestCompressorBase.config + \ + """ + BR2_PACKAGE_XZ=y + """ + compress_cmd = "xz" diff --git a/support/testing/tests/package/test_z3.py b/support/testing/tests/package/test_z3.py new file mode 100644 index 00000000..30794a25 --- /dev/null +++ b/support/testing/tests/package/test_z3.py @@ -0,0 +1,38 @@ +import os + +import infra.basetest + + +class TestZ3(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_Z3=y + BR2_PACKAGE_Z3_PYTHON=y + BR2_ROOTFS_OVERLAY="{}" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """.format( + # overlay to add a z3 smt and python test scripts + infra.filepath("tests/package/test_z3/rootfs-overlay")) + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Check program executes + cmd = "z3 --version" + self.assertRunOk(cmd) + + # Run a basic smt2 example + cmd = "z3 /root/z3test.smt2" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], "unsat") + + # Run a basic python example + cmd = "/root/z3test.py" + self.assertRunOk(cmd, timeout=10) diff --git a/support/testing/tests/package/test_z3/rootfs-overlay/root/z3test.py b/support/testing/tests/package/test_z3/rootfs-overlay/root/z3test.py new file mode 100755 index 00000000..98b8e57b --- /dev/null +++ b/support/testing/tests/package/test_z3/rootfs-overlay/root/z3test.py @@ -0,0 +1,21 @@ +#! /usr/bin/env python3 + +import z3 + +x = z3.Real('x') +y = z3.Real('y') +z = z3.Real('z') +s = z3.Solver() + +s.add(3 * x + 2 * y - z == 1) +s.add(2 * x - 2 * y + 4 * z == -2) +s.add(-x + y / 2 - z == 0) + +check = s.check() +model = s.model() + +print(check) +print(model) + +assert check == z3.sat +assert model[x] == 1 and model[y] == -2 and model[z] == -2 diff --git a/support/testing/tests/package/test_z3/rootfs-overlay/root/z3test.smt2 b/support/testing/tests/package/test_z3/rootfs-overlay/root/z3test.smt2 new file mode 100644 index 00000000..08df9e27 --- /dev/null +++ b/support/testing/tests/package/test_z3/rootfs-overlay/root/z3test.smt2 @@ -0,0 +1,8 @@ +; From https://smtlib.cs.uiowa.edu/examples.shtml +; Basic Boolean example +(set-option :print-success false) +(set-logic QF_UF) +(declare-const p Bool) +(assert (and p (not p))) +(check-sat) ; returns 'unsat' +(exit) diff --git a/support/testing/tests/package/test_zbar.py b/support/testing/tests/package/test_zbar.py new file mode 100644 index 00000000..b840df08 --- /dev/null +++ b/support/testing/tests/package/test_zbar.py @@ -0,0 +1,37 @@ +import os + +import infra.basetest + + +class TestZbar(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_IMAGEMAGICK=y + BR2_PACKAGE_LIBQRENCODE=y + BR2_PACKAGE_LIBQRENCODE_TOOLS=y + BR2_PACKAGE_ZBAR=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + txt_msg = "Hello Buildroot!" + qr_img = "qr.png" + + # We check the program can execute. + self.assertRunOk("zbarimg --version") + + # We generate a QR code image containing a message. + self.assertRunOk(f"qrencode -o '{qr_img}' '{txt_msg}'") + + # We decode the QR code image and check the extracted message + # is the expected one. + out, ret = self.emulator.run(f"zbarimg -q --raw {qr_img}") + self.assertEqual(ret, 0) + self.assertEqual(out[0], txt_msg) diff --git a/support/testing/tests/package/test_zchunk.py b/support/testing/tests/package/test_zchunk.py new file mode 100644 index 00000000..c250b748 --- /dev/null +++ b/support/testing/tests/package/test_zchunk.py @@ -0,0 +1,16 @@ +from tests.package.test_compressor_base import TestCompressorBase + + +class TestZchunk(TestCompressorBase): + __test__ = True + config = TestCompressorBase.config + \ + """ + BR2_PACKAGE_ZCHUNK=y + BR2_PACKAGE_ZSTD=y + """ + compress_cmd = "zck" + + def check_integrity_test(self): + # Do nothing for the integrity test, because "zck" does not + # implement this feature. + pass diff --git a/support/testing/tests/package/test_zerofree.py b/support/testing/tests/package/test_zerofree.py new file mode 100644 index 00000000..75eea346 --- /dev/null +++ b/support/testing/tests/package/test_zerofree.py @@ -0,0 +1,41 @@ +import os +import infra.basetest +import subprocess + + +class TestZerofree(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_ZEROFREE=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + # Prepare disk image. + # We keep it small (8 MB) for the sake of test time. + disk_file = os.path.join(self.outputdir, "disk.img") + subprocess.check_call( + ["dd", "if=/dev/zero", f"of={disk_file}", "bs=1M", "count=8"], + stdout=self.emulator.logfile, + stderr=self.emulator.logfile) + + # Run the emulator with a drive. + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=[ + "-initrd", cpio_file, + "-drive", f"file={disk_file},format=raw"]) + self.emulator.login() + + # Prepare filesystem. + output, exit_code = self.emulator.run("mkfs.ext4 /dev/sda") + self.assertEqual(exit_code, 0) + self.assertIn('Creating filesystem', output[2]) + + # Run zerofree on newly created filesystem. + cmd = "zerofree -v /dev/sda" + output, exit_code = self.emulator.run(cmd, timeout=60) + self.assertEqual(exit_code, 0) + self.assertIn('/8192', output[-1]) # total number of blocks diff --git a/support/testing/tests/package/test_zfs.py b/support/testing/tests/package/test_zfs.py new file mode 100644 index 00000000..27dbc286 --- /dev/null +++ b/support/testing/tests/package/test_zfs.py @@ -0,0 +1,91 @@ +import os + +import infra.basetest + + +class TestZfsBase(infra.basetest.BRTest): + timeout = 60 * 3 + config = \ + """ + BR2_x86_64=y + BR2_x86_corei7=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.35" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86_64/linux.config" + BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y + BR2_PACKAGE_ZFS=y + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_CFFI=y + BR2_PACKAGE_PYTHON_SETUPTOOLS=y + BR2_PACKAGE_ZLIB_NG=y + BR2_PACKAGE_LIBRESSL=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def base_test_run(self): + kernel = os.path.join(self.builddir, "images", "bzImage") + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot( + arch="x86_64", + kernel=kernel, + kernel_cmdline=["console=ttyS0"], + options=["-cpu", "Nehalem", "-m", "320", "-initrd", cpio_file], + ) + self.emulator.login() + + cmds = [ + # Init + "modprobe zfs && sleep 2", + "mount -o remount,size=132M /tmp", + "fallocate -l 64M /tmp/container1.raw", + "fallocate -l 64M /tmp/container2.raw", + "zpool create pool raidz /tmp/container1.raw /tmp/container2.raw", + "dd if=/dev/urandom bs=1M count=8 of=/pool/urandom", + "sha256sum /pool/urandom > /tmp/urandom.sha256", + # Check ZFS + "zpool export pool", + "zpool import pool -d /tmp/container1.raw -d /tmp/container2.raw", + "dd conv=notrunc bs=1M count=32 seek=16 if=/dev/urandom of=/tmp/container1.raw", + "zpool scrub -w pool", + "sha256sum -c /tmp/urandom.sha256", + "zpool status -v", + # Check PyZFS + "arc_summary", + ] + for cmd in cmds: + self.assertRunOk(cmd, timeout=self.timeout) + + +class TestZfsGlibc(TestZfsBase): + config = TestZfsBase.config + \ + """ + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_STABLE=y + """ + + def test_run(self): + TestZfsBase.base_test_run(self) + + +class TestZfsUclibc(TestZfsBase): + config = TestZfsBase.config + \ + """ + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_UCLIBC_STABLE=y + """ + + def test_run(self): + TestZfsBase.base_test_run(self) + + +class TestZfsMusl(TestZfsBase): + config = TestZfsBase.config + \ + """ + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_MUSL_STABLE=y + """ + + def test_run(self): + TestZfsBase.base_test_run(self) diff --git a/support/testing/tests/package/test_zip.py b/support/testing/tests/package/test_zip.py new file mode 100644 index 00000000..eb2e0169 --- /dev/null +++ b/support/testing/tests/package/test_zip.py @@ -0,0 +1,15 @@ +from tests.package.test_compressor_base import TestCompressorBase + + +class TestZip(TestCompressorBase): + __test__ = True + config = TestCompressorBase.config + \ + """ + BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y + BR2_PACKAGE_ZIP=y + BR2_PACKAGE_UNZIP=y + """ + compress_cmd = "/bin/sh -c 'zip $1.zip $1' /bin/sh" + decompress_cmd = "unzip" + check_integrity_cmd = "unzip -t" + compressed_file_ext = ".zip" diff --git a/support/testing/tests/package/test_zstd.py b/support/testing/tests/package/test_zstd.py new file mode 100644 index 00000000..24dc5fb9 --- /dev/null +++ b/support/testing/tests/package/test_zstd.py @@ -0,0 +1,11 @@ +from tests.package.test_compressor_base import TestCompressorBase + + +class TestZstd(TestCompressorBase): + __test__ = True + config = TestCompressorBase.config + \ + """ + BR2_PACKAGE_ZSTD=y + """ + compress_cmd = "zstd" + compressed_file_ext = ".zst" diff --git a/support/testing/tests/toolchain/__init__.py b/support/testing/tests/toolchain/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/support/testing/tests/toolchain/test_aarch64_64k.py b/support/testing/tests/toolchain/test_aarch64_64k.py new file mode 100644 index 00000000..c038e996 --- /dev/null +++ b/support/testing/tests/toolchain/test_aarch64_64k.py @@ -0,0 +1,66 @@ +import os +import re + +import infra.basetest + + +class TestAarch64Pages64kBase(infra.basetest.BRTest): + __test__ = False + config = \ + """ + BR2_aarch64=y + BR2_ARM64_PAGE_SIZE_64K=y + BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.18" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + """ + + def login(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["console=ttyAMA0"], + options=["-M", "virt", "-cpu", "cortex-a57", "-m", "512M", "-initrd", img]) + self.emulator.login() + + def test_run(self): + self.login() + + cmd = "dmesg | grep 'Dentry cache'" + output, exit_code = self.emulator.run(cmd, 120) + r = re.match(r".*Dentry cache hash table entries: [0-9]* \(order: ([0-9]*), ([0-9]*) bytes.*", output[0]) + order = int(r.group(1)) + size = int(r.group(2)) + self.assertEqual(2 ** order * 64 * 1024, size) + + +class TestAarch64Pages64kGlibc(TestAarch64Pages64kBase): + __test__ = True + config = TestAarch64Pages64kBase.config + \ + """ + BR2_TOOLCHAIN_BUILDROOT_GLIBC=y + """ + + +class TestAarch64Pages64kuClibc(TestAarch64Pages64kBase): + __test__ = True + config = TestAarch64Pages64kBase.config + \ + """ + BR2_TOOLCHAIN_BUILDROOT_UCLIBC=y + """ + + +class TestAarch64Pages64kMusl(TestAarch64Pages64kBase): + __test__ = True + config = TestAarch64Pages64kBase.config + \ + """ + BR2_TOOLCHAIN_BUILDROOT_MUSL=y + """ diff --git a/support/testing/tests/toolchain/test_external.py b/support/testing/tests/toolchain/test_external.py new file mode 100644 index 00000000..27dfd685 --- /dev/null +++ b/support/testing/tests/toolchain/test_external.py @@ -0,0 +1,159 @@ +import os +import infra + +BASIC_CONFIG = \ + """ + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + +def has_broken_links(path): + for root, dirs, files in os.walk(path): + for f in files: + fpath = os.path.join(root, f) + if not os.path.exists(fpath): + return True + return False + + +class TestExternalToolchain(infra.basetest.BRTest): + def common_check(self): + # Check for broken symlinks + for d in ["lib", "usr/lib"]: + path = os.path.join(self.builddir, "staging", d) + self.assertFalse(has_broken_links(path)) + path = os.path.join(self.builddir, "target", d) + self.assertFalse(has_broken_links(path)) + + with open(os.path.join(self.builddir, ".config"), 'r') as configf: + configlines = [line.strip() for line in configf.readlines()] + + if "BR2_BINFMT_ELF=y" in configlines: + interp = infra.get_elf_prog_interpreter(self.builddir, + self.toolchain_prefix, + "bin/busybox") + interp_path = os.path.join(self.builddir, "target", interp[1:]) + self.assertTrue(os.path.exists(interp_path)) + + +class TestExternalToolchainLinaroArm(TestExternalToolchain): + config = BASIC_CONFIG + \ + """ + BR2_arm=y + BR2_cortex_a8=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM=y + """ + toolchain_prefix = "arm-linux-gnueabihf" + + def test_run(self): + TestExternalToolchain.common_check(self) + + # Check the architecture variant + arch = infra.get_file_arch(self.builddir, + self.toolchain_prefix, + "lib/libc.so.6") + self.assertEqual(arch, "v7") + isa = infra.get_elf_arch_tag(self.builddir, + self.toolchain_prefix, + "lib/libc.so.6", + "Tag_THUMB_ISA_use") + self.assertEqual(isa, "Thumb-2") + + # Boot the system + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv7", + kernel="builtin", + options=["-initrd", img]) + self.emulator.login() + + +class TestExternalToolchainBuildrootMusl(TestExternalToolchain): + config = BASIC_CONFIG + \ + """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y + BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y + BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-cortex-a9-musl-2017.05-1078-g95b1dae.tar.bz2" + BR2_TOOLCHAIN_EXTERNAL_GCC_6=y + BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_12=y + BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y + BR2_TOOLCHAIN_EXTERNAL_CXX=y + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv7", + kernel="builtin", + options=["-initrd", img]) + self.emulator.login() + + +class TestExternalToolchainCtngMusl(TestExternalToolchain): + config = BASIC_CONFIG + \ + """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y + BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y + BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/arm-ctng-linux-musleabihf.tar.xz" + BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="arm-ctng-linux-musleabihf" + BR2_TOOLCHAIN_EXTERNAL_GCC_7=y + BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y + BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y + BR2_TOOLCHAIN_EXTERNAL_CXX=y + """ + toolchain_prefix = "arm-ctng-linux-musleabihf" + + def test_run(self): + TestExternalToolchain.common_check(self) + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv7", + kernel="builtin", + options=["-initrd", img]) + self.emulator.login() + + +class TestExternalToolchainBuildrootuClibc(TestExternalToolchain): + config = BASIC_CONFIG + \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y + BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y + BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-2017.05-1078-g95b1dae.tar.bz2" + BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y + BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y + BR2_TOOLCHAIN_EXTERNAL_LOCALE=y + # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set + BR2_TOOLCHAIN_EXTERNAL_CXX=y + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv7", + kernel="builtin", + options=["-initrd", img]) + self.emulator.login() + + +class TestExternalToolchainCCache(TestExternalToolchainBuildrootuClibc): + extraconfig = \ + """ + BR2_CCACHE=y + BR2_CCACHE_DIR="{builddir}/ccache-dir" + """ + + def __init__(self, names): + super(TestExternalToolchainBuildrootuClibc, self).__init__(names) + self.config += self.extraconfig.format(builddir=self.builddir) diff --git a/support/testing/tests/toolchain/test_external_bootlin.py b/support/testing/tests/toolchain/test_external_bootlin.py new file mode 100644 index 00000000..2ed69b9f --- /dev/null +++ b/support/testing/tests/toolchain/test_external_bootlin.py @@ -0,0 +1,3306 @@ +# This file was auto-generated by support/scripts/gen-bootlin-toolchains +# Do not edit +from tests.toolchain.test_external import TestExternalToolchain + + +class TestExternalToolchainBootlinAarch64GlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "aarch64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinAarch64GlibcStable(TestExternalToolchain): + config = """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "aarch64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinAarch64MuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "aarch64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinAarch64MuslStable(TestExternalToolchain): + config = """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "aarch64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinAarch64UclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "aarch64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinAarch64UclibcStable(TestExternalToolchain): + config = """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "aarch64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinAarch64beGlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_aarch64_be=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "aarch64_be-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinAarch64beGlibcStable(TestExternalToolchain): + config = """ + BR2_aarch64_be=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "aarch64_be-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinAarch64beMuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_aarch64_be=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "aarch64_be-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinAarch64beMuslStable(TestExternalToolchain): + config = """ + BR2_aarch64_be=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "aarch64_be-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinAarch64beUclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_aarch64_be=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "aarch64_be-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinAarch64beUclibcStable(TestExternalToolchain): + config = """ + BR2_aarch64_be=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "aarch64_be-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArcle750dUclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_arcle=y + BR2_arc750d=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_750D_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArcle750dUclibcStable(TestExternalToolchain): + config = """ + BR2_arcle=y + BR2_arc750d=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_750D_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArclehs38GlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_arcle=y + BR2_archs38=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArclehs38GlibcStable(TestExternalToolchain): + config = """ + BR2_arcle=y + BR2_archs38=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArclehs38UclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_arcle=y + BR2_archs38=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArclehs38UclibcStable(TestExternalToolchain): + config = """ + BR2_arcle=y + BR2_archs38=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmv5eabiGlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_arm=y + BR2_arm926t=y + BR2_ARM_EABI=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmv5eabiGlibcStable(TestExternalToolchain): + config = """ + BR2_arm=y + BR2_arm926t=y + BR2_ARM_EABI=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmv5eabiMuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_arm=y + BR2_arm926t=y + BR2_ARM_EABI=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmv5eabiMuslStable(TestExternalToolchain): + config = """ + BR2_arm=y + BR2_arm926t=y + BR2_ARM_EABI=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmv5eabiUclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_arm=y + BR2_arm926t=y + BR2_ARM_EABI=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmv5eabiUclibcStable(TestExternalToolchain): + config = """ + BR2_arm=y + BR2_arm926t=y + BR2_ARM_EABI=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmv6eabihfGlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_arm=y + BR2_arm1176jzf_s=y + BR2_ARM_EABIHF=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmv6eabihfGlibcStable(TestExternalToolchain): + config = """ + BR2_arm=y + BR2_arm1176jzf_s=y + BR2_ARM_EABIHF=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmv6eabihfMuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_arm=y + BR2_arm1176jzf_s=y + BR2_ARM_EABIHF=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmv6eabihfMuslStable(TestExternalToolchain): + config = """ + BR2_arm=y + BR2_arm1176jzf_s=y + BR2_ARM_EABIHF=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmv6eabihfUclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_arm=y + BR2_arm1176jzf_s=y + BR2_ARM_EABIHF=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmv6eabihfUclibcStable(TestExternalToolchain): + config = """ + BR2_arm=y + BR2_arm1176jzf_s=y + BR2_ARM_EABIHF=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmv7eabihfGlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_arm=y + BR2_cortex_a8=y + BR2_ARM_EABIHF=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmv7eabihfGlibcStable(TestExternalToolchain): + config = """ + BR2_arm=y + BR2_cortex_a8=y + BR2_ARM_EABIHF=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmv7eabihfMuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_arm=y + BR2_cortex_a8=y + BR2_ARM_EABIHF=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmv7eabihfMuslStable(TestExternalToolchain): + config = """ + BR2_arm=y + BR2_cortex_a8=y + BR2_ARM_EABIHF=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmv7eabihfUclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_arm=y + BR2_cortex_a8=y + BR2_ARM_EABIHF=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmv7eabihfUclibcStable(TestExternalToolchain): + config = """ + BR2_arm=y + BR2_cortex_a8=y + BR2_ARM_EABIHF=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmebv7eabihfGlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_armeb=y + BR2_cortex_a8=y + BR2_ARM_EABIHF=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMEBV7_EABIHF_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "armeb-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmebv7eabihfGlibcStable(TestExternalToolchain): + config = """ + BR2_armeb=y + BR2_cortex_a8=y + BR2_ARM_EABIHF=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMEBV7_EABIHF_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "armeb-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmebv7eabihfMuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_armeb=y + BR2_cortex_a8=y + BR2_ARM_EABIHF=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMEBV7_EABIHF_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "armeb-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmebv7eabihfMuslStable(TestExternalToolchain): + config = """ + BR2_armeb=y + BR2_cortex_a8=y + BR2_ARM_EABIHF=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMEBV7_EABIHF_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "armeb-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmebv7eabihfUclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_armeb=y + BR2_cortex_a8=y + BR2_ARM_EABIHF=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMEBV7_EABIHF_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "armeb-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmebv7eabihfUclibcStable(TestExternalToolchain): + config = """ + BR2_armeb=y + BR2_cortex_a8=y + BR2_ARM_EABIHF=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMEBV7_EABIHF_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "armeb-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmv7mUclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_arm=y + BR2_cortex_m4=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7M_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinArmv7mUclibcStable(TestExternalToolchain): + config = """ + BR2_arm=y + BR2_cortex_m4=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7M_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinM68k68xxxGlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_m68k=y + BR2_m68k_68040=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "m68k-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinM68k68xxxGlibcStable(TestExternalToolchain): + config = """ + BR2_m68k=y + BR2_m68k_68040=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "m68k-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinM68k68xxxMuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_m68k=y + BR2_m68k_68040=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "m68k-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinM68k68xxxMuslStable(TestExternalToolchain): + config = """ + BR2_m68k=y + BR2_m68k_68040=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "m68k-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinM68k68xxxUclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_m68k=y + BR2_m68k_68040=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "m68k-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinM68k68xxxUclibcStable(TestExternalToolchain): + config = """ + BR2_m68k=y + BR2_m68k_68040=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "m68k-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinM68kcoldfireUclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_m68k=y + BR2_m68k_cf5208=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_COLDFIRE_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "m68k-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinM68kcoldfireUclibcStable(TestExternalToolchain): + config = """ + BR2_m68k=y + BR2_m68k_cf5208=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_COLDFIRE_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "m68k-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMicroblazebeGlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_microblazebe=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "microblaze-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMicroblazebeGlibcStable(TestExternalToolchain): + config = """ + BR2_microblazebe=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "microblaze-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMicroblazebeMuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_microblazebe=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "microblaze-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMicroblazebeMuslStable(TestExternalToolchain): + config = """ + BR2_microblazebe=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "microblaze-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMicroblazebeUclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_microblazebe=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "microblaze-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMicroblazebeUclibcStable(TestExternalToolchain): + config = """ + BR2_microblazebe=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "microblaze-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMicroblazeelGlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_microblazeel=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "microblazeel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMicroblazeelGlibcStable(TestExternalToolchain): + config = """ + BR2_microblazeel=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "microblazeel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMicroblazeelMuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_microblazeel=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "microblazeel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMicroblazeelMuslStable(TestExternalToolchain): + config = """ + BR2_microblazeel=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "microblazeel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMicroblazeelUclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_microblazeel=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "microblazeel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMicroblazeelUclibcStable(TestExternalToolchain): + config = """ + BR2_microblazeel=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "microblazeel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32GlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_mips=y + BR2_mips_32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32GlibcStable(TestExternalToolchain): + config = """ + BR2_mips=y + BR2_mips_32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32MuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_mips=y + BR2_mips_32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32MuslStable(TestExternalToolchain): + config = """ + BR2_mips=y + BR2_mips_32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32UclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_mips=y + BR2_mips_32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32UclibcStable(TestExternalToolchain): + config = """ + BR2_mips=y + BR2_mips_32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32elGlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_mipsel=y + BR2_mips_32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mipsel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32elGlibcStable(TestExternalToolchain): + config = """ + BR2_mipsel=y + BR2_mips_32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mipsel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32elMuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_mipsel=y + BR2_mips_32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mipsel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32elMuslStable(TestExternalToolchain): + config = """ + BR2_mipsel=y + BR2_mips_32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mipsel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32elUclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_mipsel=y + BR2_mips_32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mipsel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32elUclibcStable(TestExternalToolchain): + config = """ + BR2_mipsel=y + BR2_mips_32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mipsel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32r5elGlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_mipsel=y + BR2_mips_32r5=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mipsel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32r5elGlibcStable(TestExternalToolchain): + config = """ + BR2_mipsel=y + BR2_mips_32r5=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mipsel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32r5elMuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_mipsel=y + BR2_mips_32r5=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mipsel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32r5elMuslStable(TestExternalToolchain): + config = """ + BR2_mipsel=y + BR2_mips_32r5=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mipsel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32r5elUclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_mipsel=y + BR2_mips_32r5=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mipsel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32r5elUclibcStable(TestExternalToolchain): + config = """ + BR2_mipsel=y + BR2_mips_32r5=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mipsel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32r6elGlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_mipsel=y + BR2_mips_32r6=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mipsel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32r6elGlibcStable(TestExternalToolchain): + config = """ + BR2_mipsel=y + BR2_mips_32r6=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mipsel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32r6elMuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_mipsel=y + BR2_mips_32r6=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mipsel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32r6elMuslStable(TestExternalToolchain): + config = """ + BR2_mipsel=y + BR2_mips_32r6=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mipsel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32r6elUclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_mipsel=y + BR2_mips_32r6=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mipsel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips32r6elUclibcStable(TestExternalToolchain): + config = """ + BR2_mipsel=y + BR2_mips_32r6=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mipsel-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips64n32GlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_mips64=y + BR2_mips_64=y + BR2_MIPS_NABI32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips64n32GlibcStable(TestExternalToolchain): + config = """ + BR2_mips64=y + BR2_mips_64=y + BR2_MIPS_NABI32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips64n32MuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_mips64=y + BR2_mips_64=y + BR2_MIPS_NABI32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips64n32MuslStable(TestExternalToolchain): + config = """ + BR2_mips64=y + BR2_mips_64=y + BR2_MIPS_NABI32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips64n32UclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_mips64=y + BR2_mips_64=y + BR2_MIPS_NABI32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips64n32UclibcStable(TestExternalToolchain): + config = """ + BR2_mips64=y + BR2_mips_64=y + BR2_MIPS_NABI32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips64eln32GlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_mips64el=y + BR2_mips_64=y + BR2_MIPS_NABI32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips64el-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips64eln32GlibcStable(TestExternalToolchain): + config = """ + BR2_mips64el=y + BR2_mips_64=y + BR2_MIPS_NABI32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips64el-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips64eln32MuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_mips64el=y + BR2_mips_64=y + BR2_MIPS_NABI32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips64el-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips64eln32MuslStable(TestExternalToolchain): + config = """ + BR2_mips64el=y + BR2_mips_64=y + BR2_MIPS_NABI32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips64el-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips64eln32UclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_mips64el=y + BR2_mips_64=y + BR2_MIPS_NABI32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips64el-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips64eln32UclibcStable(TestExternalToolchain): + config = """ + BR2_mips64el=y + BR2_mips_64=y + BR2_MIPS_NABI32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips64el-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips64r6eln32GlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_mips64el=y + BR2_mips_64r6=y + BR2_MIPS_NABI32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips64el-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips64r6eln32GlibcStable(TestExternalToolchain): + config = """ + BR2_mips64el=y + BR2_mips_64r6=y + BR2_MIPS_NABI32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips64el-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips64r6eln32MuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_mips64el=y + BR2_mips_64r6=y + BR2_MIPS_NABI32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips64el-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips64r6eln32MuslStable(TestExternalToolchain): + config = """ + BR2_mips64el=y + BR2_mips_64r6=y + BR2_MIPS_NABI32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips64el-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips64r6eln32UclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_mips64el=y + BR2_mips_64r6=y + BR2_MIPS_NABI32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips64el-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinMips64r6eln32UclibcStable(TestExternalToolchain): + config = """ + BR2_mips64el=y + BR2_mips_64r6=y + BR2_MIPS_NABI32=y + # BR2_MIPS_SOFT_FLOAT is not set + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "mips64el-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinNios2GlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_nios2=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_NIOS2_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "nios2-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinNios2GlibcStable(TestExternalToolchain): + config = """ + BR2_nios2=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_NIOS2_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "nios2-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinOpenriscGlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_or1k=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "or1k-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinOpenriscGlibcStable(TestExternalToolchain): + config = """ + BR2_or1k=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "or1k-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinOpenriscMuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_or1k=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "or1k-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinOpenriscMuslStable(TestExternalToolchain): + config = """ + BR2_or1k=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "or1k-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinOpenriscUclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_or1k=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "or1k-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinOpenriscUclibcStable(TestExternalToolchain): + config = """ + BR2_or1k=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "or1k-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpc440fpGlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_powerpc=y + BR2_powerpc_440fp=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpc440fpGlibcStable(TestExternalToolchain): + config = """ + BR2_powerpc=y + BR2_powerpc_440fp=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpc440fpMuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_powerpc=y + BR2_powerpc_440fp=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpc440fpMuslStable(TestExternalToolchain): + config = """ + BR2_powerpc=y + BR2_powerpc_440fp=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpc440fpUclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_powerpc=y + BR2_powerpc_440fp=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpc440fpUclibcStable(TestExternalToolchain): + config = """ + BR2_powerpc=y + BR2_powerpc_440fp=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpce300c3GlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_powerpc=y + BR2_powerpc_e300c3=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpce300c3GlibcStable(TestExternalToolchain): + config = """ + BR2_powerpc=y + BR2_powerpc_e300c3=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpce300c3MuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_powerpc=y + BR2_powerpc_e300c3=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpce300c3MuslStable(TestExternalToolchain): + config = """ + BR2_powerpc=y + BR2_powerpc_e300c3=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpce300c3UclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_powerpc=y + BR2_powerpc_e300c3=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpce300c3UclibcStable(TestExternalToolchain): + config = """ + BR2_powerpc=y + BR2_powerpc_e300c3=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpce500mcGlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_powerpc=y + BR2_powerpc_e500mc=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpce500mcGlibcStable(TestExternalToolchain): + config = """ + BR2_powerpc=y + BR2_powerpc_e500mc=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpce500mcMuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_powerpc=y + BR2_powerpc_e500mc=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpce500mcMuslStable(TestExternalToolchain): + config = """ + BR2_powerpc=y + BR2_powerpc_e500mc=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpce500mcUclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_powerpc=y + BR2_powerpc_e500mc=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpce500mcUclibcStable(TestExternalToolchain): + config = """ + BR2_powerpc=y + BR2_powerpc_e500mc=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpc64e5500GlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_powerpc64=y + BR2_powerpc_e5500=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E5500_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpc64e5500GlibcStable(TestExternalToolchain): + config = """ + BR2_powerpc64=y + BR2_powerpc_e5500=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E5500_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpc64e6500GlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_powerpc64=y + BR2_powerpc_e6500=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpc64e6500GlibcStable(TestExternalToolchain): + config = """ + BR2_powerpc64=y + BR2_powerpc_e6500=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpc64e6500MuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_powerpc64=y + BR2_powerpc_e6500=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpc64e6500MuslStable(TestExternalToolchain): + config = """ + BR2_powerpc64=y + BR2_powerpc_e6500=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpc64power8GlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_powerpc64=y + BR2_powerpc_power8=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpc64power8GlibcStable(TestExternalToolchain): + config = """ + BR2_powerpc64=y + BR2_powerpc_power8=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpc64power8MuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_powerpc64=y + BR2_powerpc_power8=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpc64power8MuslStable(TestExternalToolchain): + config = """ + BR2_powerpc64=y + BR2_powerpc_power8=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpc64lepower8GlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_powerpc64le=y + BR2_powerpc_power8=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc64le-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpc64lepower8GlibcStable(TestExternalToolchain): + config = """ + BR2_powerpc64le=y + BR2_powerpc_power8=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc64le-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpc64lepower8MuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_powerpc64le=y + BR2_powerpc_power8=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc64le-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinPowerpc64lepower8MuslStable(TestExternalToolchain): + config = """ + BR2_powerpc64le=y + BR2_powerpc_power8=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "powerpc64le-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinRiscv32ilp32dGlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_riscv=y + BR2_riscv_g=y + BR2_RISCV_32=y + BR2_RISCV_ABI_ILP32D=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV32_ILP32D_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "riscv32-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinRiscv32ilp32dMuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_riscv=y + BR2_riscv_g=y + BR2_RISCV_32=y + BR2_RISCV_ABI_ILP32D=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV32_ILP32D_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "riscv32-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinRiscv32ilp32dMuslStable(TestExternalToolchain): + config = """ + BR2_riscv=y + BR2_riscv_g=y + BR2_RISCV_32=y + BR2_RISCV_ABI_ILP32D=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV32_ILP32D_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "riscv32-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinRiscv64lp64dGlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_riscv=y + BR2_riscv_g=y + BR2_RISCV_64=y + BR2_RISCV_ABI_LP64D=y + BR2_USE_MMU=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_LP64D_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "riscv64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinRiscv64lp64dGlibcStable(TestExternalToolchain): + config = """ + BR2_riscv=y + BR2_riscv_g=y + BR2_RISCV_64=y + BR2_RISCV_ABI_LP64D=y + BR2_USE_MMU=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_LP64D_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "riscv64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinRiscv64lp64dMuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_riscv=y + BR2_riscv_g=y + BR2_RISCV_64=y + BR2_RISCV_ABI_LP64D=y + BR2_USE_MMU=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_LP64D_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "riscv64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinRiscv64lp64dMuslStable(TestExternalToolchain): + config = """ + BR2_riscv=y + BR2_riscv_g=y + BR2_RISCV_64=y + BR2_RISCV_ABI_LP64D=y + BR2_USE_MMU=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_LP64D_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "riscv64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinRiscv64lp64dUclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_riscv=y + BR2_riscv_g=y + BR2_RISCV_64=y + BR2_RISCV_ABI_LP64D=y + BR2_USE_MMU=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_LP64D_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "riscv64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinRiscv64lp64dUclibcStable(TestExternalToolchain): + config = """ + BR2_riscv=y + BR2_riscv_g=y + BR2_RISCV_64=y + BR2_RISCV_ABI_LP64D=y + BR2_USE_MMU=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_LP64D_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "riscv64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinS390xz13GlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_s390x=y + BR2_s390x_z13=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_S390X_Z13_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "s390x-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinS390xz13GlibcStable(TestExternalToolchain): + config = """ + BR2_s390x=y + BR2_s390x_z13=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_S390X_Z13_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "s390x-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinShsh4GlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_sh=y + BR2_sh4=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "sh4-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinShsh4GlibcStable(TestExternalToolchain): + config = """ + BR2_sh=y + BR2_sh4=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "sh4-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinShsh4MuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_sh=y + BR2_sh4=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "sh4-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinShsh4MuslStable(TestExternalToolchain): + config = """ + BR2_sh=y + BR2_sh4=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "sh4-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinShsh4UclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_sh=y + BR2_sh4=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "sh4-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinShsh4UclibcStable(TestExternalToolchain): + config = """ + BR2_sh=y + BR2_sh4=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "sh4-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinShsh4aebGlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_sh=y + BR2_sh4aeb=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "sh4aeb-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinShsh4aebGlibcStable(TestExternalToolchain): + config = """ + BR2_sh=y + BR2_sh4aeb=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "sh4aeb-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinShsh4aebMuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_sh=y + BR2_sh4aeb=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "sh4aeb-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinShsh4aebMuslStable(TestExternalToolchain): + config = """ + BR2_sh=y + BR2_sh4aeb=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "sh4aeb-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinSparc64GlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_sparc64=y + BR2_sparc_v9=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARC64_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "sparc64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinSparc64GlibcStable(TestExternalToolchain): + config = """ + BR2_sparc64=y + BR2_sparc_v9=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARC64_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "sparc64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinSparcv8UclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_sparc=y + BR2_sparc_v8=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARCV8_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "sparc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinSparcv8UclibcStable(TestExternalToolchain): + config = """ + BR2_sparc=y + BR2_sparc_v8=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARCV8_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "sparc-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664GlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664GlibcStable(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664MuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664MuslStable(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664UclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664UclibcStable(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664v2GlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64_v2=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V2_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664v2GlibcStable(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64_v2=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V2_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664v2MuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64_v2=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V2_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664v2MuslStable(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64_v2=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V2_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664v2UclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64_v2=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V2_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664v2UclibcStable(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64_v2=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V2_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664v3GlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64_v3=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V3_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664v3GlibcStable(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64_v3=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V3_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664v3MuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64_v3=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V3_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664v3MuslStable(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64_v3=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V3_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664v3UclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64_v3=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V3_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664v3UclibcStable(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64_v3=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V3_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664v4GlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64_v4=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V4_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664v4GlibcStable(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64_v4=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V4_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664v4MuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64_v4=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V4_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664v4MuslStable(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64_v4=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V4_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664v4UclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64_v4=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V4_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664v4UclibcStable(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_x86_64_v4=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V4_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664corei7GlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_corei7=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664corei7GlibcStable(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_corei7=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664corei7MuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_corei7=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664corei7MuslStable(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_corei7=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664corei7UclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_corei7=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX8664corei7UclibcStable(TestExternalToolchain): + config = """ + BR2_x86_64=y + BR2_x86_corei7=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "x86_64-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX86core2GlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_i386=y + BR2_x86_core2=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "i686-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX86core2GlibcStable(TestExternalToolchain): + config = """ + BR2_i386=y + BR2_x86_core2=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "i686-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX86core2MuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_i386=y + BR2_x86_core2=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "i686-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX86core2MuslStable(TestExternalToolchain): + config = """ + BR2_i386=y + BR2_x86_core2=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "i686-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX86core2UclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_i386=y + BR2_x86_core2=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "i686-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX86core2UclibcStable(TestExternalToolchain): + config = """ + BR2_i386=y + BR2_x86_core2=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "i686-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX86i686GlibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_i386=y + BR2_x86_i686=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_GLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "i686-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX86i686GlibcStable(TestExternalToolchain): + config = """ + BR2_i386=y + BR2_x86_i686=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_GLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "i686-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX86i686MuslBleedingEdge(TestExternalToolchain): + config = """ + BR2_i386=y + BR2_x86_i686=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_MUSL_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "i686-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX86i686MuslStable(TestExternalToolchain): + config = """ + BR2_i386=y + BR2_x86_i686=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_MUSL_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "i686-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX86i686UclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_i386=y + BR2_x86_i686=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "i686-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinX86i686UclibcStable(TestExternalToolchain): + config = """ + BR2_i386=y + BR2_x86_i686=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "i686-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinXtensalx60UclibcBleedingEdge(TestExternalToolchain): + config = """ + BR2_xtensa=y + BR2_XTENSA_CUSTOM=y + BR2_XTENSA_LITTLE_ENDIAN=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_XTENSA_LX60_UCLIBC_BLEEDING_EDGE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "xtensa-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + + +class TestExternalToolchainBootlinXtensalx60UclibcStable(TestExternalToolchain): + config = """ + BR2_xtensa=y + BR2_XTENSA_CUSTOM=y + BR2_XTENSA_LITTLE_ENDIAN=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_XTENSA_LX60_UCLIBC_STABLE=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + toolchain_prefix = "xtensa-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) diff --git a/support/testing/tests/utils/__init__.py b/support/testing/tests/utils/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/support/testing/tests/utils/br2-external/.checkpackageignore b/support/testing/tests/utils/br2-external/.checkpackageignore new file mode 100644 index 00000000..2a29916d --- /dev/null +++ b/support/testing/tests/utils/br2-external/.checkpackageignore @@ -0,0 +1 @@ +package/external/external.mk lib_mk.PackageHeader diff --git a/support/testing/tests/utils/br2-external/Config.in b/support/testing/tests/utils/br2-external/Config.in new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/support/testing/tests/utils/br2-external/Config.in @@ -0,0 +1 @@ + diff --git a/support/testing/tests/utils/br2-external/external.desc b/support/testing/tests/utils/br2-external/external.desc new file mode 100644 index 00000000..e89c3560 --- /dev/null +++ b/support/testing/tests/utils/br2-external/external.desc @@ -0,0 +1 @@ +name: CHECK_PACKAGE diff --git a/support/testing/tests/utils/br2-external/external.mk b/support/testing/tests/utils/br2-external/external.mk new file mode 100644 index 00000000..470c01a3 --- /dev/null +++ b/support/testing/tests/utils/br2-external/external.mk @@ -0,0 +1,2 @@ +custom-target: + @echo "do nothing" diff --git a/support/testing/tests/utils/br2-external/package/.checkpackageignore b/support/testing/tests/utils/br2-external/package/.checkpackageignore new file mode 100644 index 00000000..a9368d1c --- /dev/null +++ b/support/testing/tests/utils/br2-external/package/.checkpackageignore @@ -0,0 +1 @@ +external/external.mk lib_mk.PackageHeader diff --git a/support/testing/tests/utils/br2-external/package/.checkpackageignore_outdated b/support/testing/tests/utils/br2-external/package/.checkpackageignore_outdated new file mode 100644 index 00000000..1df59f3b --- /dev/null +++ b/support/testing/tests/utils/br2-external/package/.checkpackageignore_outdated @@ -0,0 +1 @@ +external/external.mk Indent NewlineAtEof PackageHeader diff --git a/support/testing/tests/utils/br2-external/package/external/external.mk b/support/testing/tests/utils/br2-external/package/external/external.mk new file mode 100644 index 00000000..74fb6540 --- /dev/null +++ b/support/testing/tests/utils/br2-external/package/external/external.mk @@ -0,0 +1 @@ +# wrong diff --git a/support/testing/tests/utils/br2-external/utils/x-python b/support/testing/tests/utils/br2-external/utils/x-python new file mode 100644 index 00000000..da7c36c7 --- /dev/null +++ b/support/testing/tests/utils/br2-external/utils/x-python @@ -0,0 +1,3 @@ +#!/usr/bin/env python3 +# Trigger flake8 warning "W391 blank line at end of file" + diff --git a/support/testing/tests/utils/br2-external/utils/x-shellscript b/support/testing/tests/utils/br2-external/utils/x-shellscript new file mode 100755 index 00000000..a7de4124 --- /dev/null +++ b/support/testing/tests/utils/br2-external/utils/x-shellscript @@ -0,0 +1,2 @@ +#!/bin/bash +unused="text" diff --git a/support/testing/tests/utils/test_check_package.py b/support/testing/tests/utils/test_check_package.py new file mode 100644 index 00000000..2125b341 --- /dev/null +++ b/support/testing/tests/utils/test_check_package.py @@ -0,0 +1,269 @@ +"""Test cases for utils/check-package. + +It does not inherit from infra.basetest.BRTest and therefore does not generate +a logfile. Only when the tests fail there will be output to the console. + +The make target ('make check-package') is already used by the job +'check-package' and won't be tested here. +""" +import os +import subprocess +import unittest + +import infra + + +def call_script(args, env, cwd): + """Call a script and return stdout and stderr as lists.""" + out, err = subprocess.Popen(args, cwd=cwd, stdout=subprocess.PIPE, + stderr=subprocess.PIPE, env=env, + universal_newlines=True).communicate() + return out.splitlines(), err.splitlines() + + +class TestCheckPackage(unittest.TestCase): + """Test the various ways the script can be called. + + The script can be called either using relative path, absolute path or from + PATH. + + The files to be checked can be passed as arguments using either relative + path or absolute path. + + When in in-tree mode (without -b) some in-tree files and also all + out-of-tree files are ignored. + + When in out-tree mode (with -b) the script does generate warnings for these + but ignores external.mk. + """ + + WITH_EMPTY_PATH = {} + WITH_UTILS_IN_PATH = {"PATH": infra.basepath("utils") + ":" + os.environ["PATH"]} + relative = [ + # base_script base_file rel_script rel_file rel_cwd + ["utils/check-package", "package/atop/atop.mk", "./utils/check-package", "package/atop/atop.mk", ""], + ["utils/check-package", "package/atop/atop.mk", "./utils/check-package", "./package/atop/atop.mk", ""], + ["utils/check-package", "package/atop/atop.mk", "../../utils/check-package", "atop.mk", "package/atop"], + ["utils/check-package", "package/atop/atop.mk", "../../utils/check-package", "./atop.mk", "package/atop"], + ["utils/check-package", "package/atop/atop.mk", "../utils/check-package", "atop/atop.mk", "package"], + ["utils/check-package", "package/atop/atop.mk", "../utils/check-package", "./atop/atop.mk", "package"], + ["utils/check-package", "package/atop/Config.in", "./utils/check-package", "package/atop/Config.in", ""], + ["utils/check-package", "package/atop/Config.in", "./utils/check-package", "./package/atop/Config.in", ""], + ["utils/check-package", "package/atop/Config.in", "../../utils/check-package", "Config.in", "package/atop"], + ["utils/check-package", "package/atop/Config.in", "../../utils/check-package", "./Config.in", "package/atop"], + ["utils/check-package", "package/atop/Config.in", "../utils/check-package", "atop/Config.in", "package"], + ["utils/check-package", "package/atop/Config.in", "../utils/check-package", "./atop/Config.in", "package"]] + + def assert_file_was_processed(self, stderr): + """Infer from check-package stderr if at least one file was processed + and fail otherwise.""" + self.assertIn("lines processed", stderr[0], stderr) + processed = int(stderr[0].split()[0]) + self.assertGreater(processed, 0) + + def assert_file_was_ignored(self, stderr): + """Infer from check-package stderr if no file was processed and fail + otherwise.""" + self.assertIn("lines processed", stderr[0], stderr) + processed = int(stderr[0].split()[0]) + self.assertEqual(processed, 0) + + def assert_warnings_generated_for_file(self, stderr): + """Infer from check-package stderr if at least one warning was generated + and fail otherwise.""" + self.assertIn("warnings generated", stderr[1], stderr) + generated = int(stderr[1].split()[0]) + self.assertGreater(generated, 0) + + def assert_no_warnings_generated_for_file(self, stderr): + """Infer from check-package stderr if no warning was generated and fail otherwise.""" + self.assertIn("warnings generated", stderr[1], stderr) + generated = int(stderr[1].split()[0]) + self.assertEqual(generated, 0) + + def test_run(self): + """Test the various ways the script can be called in a simple top to + bottom sequence.""" + # an intree file can be checked by the script called from relative path, + # absolute path and from PATH + for base_script, base_file, rel_script, rel_file, rel_cwd in self.relative: + abs_script = infra.basepath(base_script) + abs_file = infra.basepath(base_file) + cwd = infra.basepath(rel_cwd) + + _, m = call_script([rel_script, rel_file], + self.WITH_EMPTY_PATH, cwd) + self.assert_file_was_processed(m) + + _, m = call_script([abs_script, rel_file], + self.WITH_EMPTY_PATH, cwd) + self.assert_file_was_processed(m) + + _, m = call_script(["check-package", rel_file], + self.WITH_UTILS_IN_PATH, cwd) + self.assert_file_was_processed(m) + + _, m = call_script([rel_script, abs_file], + self.WITH_EMPTY_PATH, cwd) + self.assert_file_was_processed(m) + + _, m = call_script([abs_script, abs_file], + self.WITH_EMPTY_PATH, cwd) + self.assert_file_was_processed(m) + + _, m = call_script(["check-package", abs_file], + self.WITH_UTILS_IN_PATH, cwd) + self.assert_file_was_processed(m) + + # some intree files are ignored + _, m = call_script(["./utils/check-package", "package/pkg-generic.mk"], + self.WITH_EMPTY_PATH, infra.basepath()) + self.assert_file_was_ignored(m) + + _, m = call_script(["./utils/check-package", "-b", "package/pkg-generic.mk"], + self.WITH_EMPTY_PATH, infra.basepath()) + self.assert_file_was_processed(m) + + # an out-of-tree file can be checked by the script called from relative + # path, absolute path and from PATH + for base_script, base_file, rel_script, rel_file, rel_cwd in self.relative: + abs_script = infra.basepath(base_script) + abs_file = infra.basepath(base_file) + cwd = infra.basepath(rel_cwd) + + _, m = call_script([rel_script, "-b", rel_file], + self.WITH_EMPTY_PATH, cwd) + self.assert_file_was_processed(m) + + _, m = call_script([abs_script, "-b", rel_file], + self.WITH_EMPTY_PATH, cwd) + self.assert_file_was_processed(m) + + _, m = call_script(["check-package", "-b", rel_file], + self.WITH_UTILS_IN_PATH, cwd) + self.assert_file_was_processed(m) + + _, m = call_script([rel_script, "-b", abs_file], + self.WITH_EMPTY_PATH, cwd) + self.assert_file_was_processed(m) + + _, m = call_script([abs_script, "-b", abs_file], + self.WITH_EMPTY_PATH, cwd) + self.assert_file_was_processed(m) + + _, m = call_script(["check-package", "-b", abs_file], + self.WITH_UTILS_IN_PATH, cwd) + self.assert_file_was_processed(m) + + # out-of-tree files are are ignored without -b but can generate warnings + # with -b + abs_path = infra.filepath("tests/utils/br2-external") + rel_file = "Config.in" + abs_file = os.path.join(abs_path, rel_file) + + _, m = call_script(["check-package", rel_file], + self.WITH_UTILS_IN_PATH, abs_path) + self.assert_file_was_ignored(m) + + _, m = call_script(["check-package", abs_file], + self.WITH_UTILS_IN_PATH, infra.basepath()) + self.assert_file_was_ignored(m) + + w, m = call_script(["check-package", "-b", rel_file], + self.WITH_UTILS_IN_PATH, abs_path) + self.assert_file_was_processed(m) + self.assert_warnings_generated_for_file(m) + self.assertIn("{}:1: empty line at end of file".format(rel_file), w) + + w, m = call_script(["check-package", "-b", abs_file], + self.WITH_UTILS_IN_PATH, infra.basepath()) + self.assert_file_was_processed(m) + self.assert_warnings_generated_for_file(m) + self.assertIn("{}:1: empty line at end of file".format(abs_file), w) + + # external.mk is ignored only when in the root path of a br2-external + rel_file = "external.mk" + abs_file = os.path.join(abs_path, rel_file) + + _, m = call_script(["check-package", "-b", rel_file], + self.WITH_UTILS_IN_PATH, abs_path) + self.assert_file_was_ignored(m) + + _, m = call_script(["check-package", "-b", abs_file], + self.WITH_UTILS_IN_PATH, infra.basepath()) + self.assert_file_was_ignored(m) + + abs_path = infra.filepath("tests/utils/br2-external/package/external") + abs_file = os.path.join(abs_path, rel_file) + + w, m = call_script(["check-package", "-b", rel_file], + self.WITH_UTILS_IN_PATH, abs_path) + self.assert_file_was_processed(m) + self.assert_warnings_generated_for_file(m) + self.assertIn("{}:1: should be 80 hashes (https://nightly.buildroot.org/#writing-rules-mk)".format(rel_file), w) + + w, m = call_script(["check-package", "-b", abs_file], + self.WITH_UTILS_IN_PATH, infra.basepath()) + self.assert_file_was_processed(m) + self.assert_warnings_generated_for_file(m) + self.assertIn("{}:1: should be 80 hashes (https://nightly.buildroot.org/#writing-rules-mk)".format(abs_file), w) + + # br2-external with ignore list + topdir_path = infra.filepath("tests/utils/br2-external") + topdir_file = os.path.join(topdir_path, "package/external/external.mk") + subdir_path = infra.filepath("tests/utils/br2-external/package") + subdir_file = os.path.join(subdir_path, "external/external.mk") + + w, m = call_script(["check-package", "--ignore-list=.checkpackageignore", "-b", topdir_file], + self.WITH_UTILS_IN_PATH, topdir_path) + self.assert_file_was_processed(m) + self.assert_no_warnings_generated_for_file(m) + + w, m = call_script(["check-package", "--ignore-list=.checkpackageignore", "-b", subdir_file], + self.WITH_UTILS_IN_PATH, subdir_path) + self.assert_file_was_processed(m) + self.assert_no_warnings_generated_for_file(m) + + w, m = call_script(["check-package", "--ignore-list=.checkpackageignore_outdated", "-b", subdir_file], + self.WITH_UTILS_IN_PATH, subdir_path) + self.assert_file_was_processed(m) + self.assert_warnings_generated_for_file(m) + self.assertIn("{}:0: Indent was expected to fail, did you fix the file and forget to update .checkpackageignore_outdated?" + .format(subdir_file), w) + self.assertIn("{}:0: NewlineAtEof was expected to fail, did you fix the file and forget to update " + ".checkpackageignore_outdated?" + .format(subdir_file), w) + + # shell scripts are tested using shellcheck + rel_file = "utils/x-shellscript" + abs_path = infra.filepath("tests/utils/br2-external") + abs_file = os.path.join(abs_path, rel_file) + + w, m = call_script(["check-package", "-b", rel_file], + self.WITH_UTILS_IN_PATH, abs_path) + self.assert_file_was_processed(m) + self.assert_warnings_generated_for_file(m) + self.assertIn("{}:0: run 'shellcheck' and fix the warnings".format(rel_file), w) + + w, m = call_script(["check-package", "-b", abs_file], + self.WITH_UTILS_IN_PATH, infra.basepath()) + self.assert_file_was_processed(m) + self.assert_warnings_generated_for_file(m) + self.assertIn("{}:0: run 'shellcheck' and fix the warnings".format(abs_file), w) + + # python scripts are tested using flake8 + rel_file = "utils/x-python" + abs_path = infra.filepath("tests/utils/br2-external") + abs_file = os.path.join(abs_path, rel_file) + + w, m = call_script(["check-package", "-vvv", "-b", rel_file], + self.WITH_UTILS_IN_PATH, abs_path) + self.assert_file_was_processed(m) + self.assert_warnings_generated_for_file(m) + self.assertIn("{}:0: run 'flake8' and fix the warnings".format(rel_file), w) + + w, m = call_script(["check-package", "-b", abs_file], + self.WITH_UTILS_IN_PATH, infra.basepath()) + self.assert_file_was_processed(m) + self.assert_warnings_generated_for_file(m) + self.assertIn("{}:0: run 'flake8' and fix the warnings".format(abs_file), w) diff --git a/support/testing/tests/utils/test_get_developers.py b/support/testing/tests/utils/test_get_developers.py new file mode 100644 index 00000000..ffc01f6c --- /dev/null +++ b/support/testing/tests/utils/test_get_developers.py @@ -0,0 +1,170 @@ +"""Test cases for utils/get-developers. + +It does not inherit from infra.basetest.BRTest and therefore does not generate +a logfile. Only when the tests fail there will be output to the console. + +The file syntax is already tested by the GitLab-CI job check-DEVELOPERS. +""" +import os +import subprocess +import tempfile +import unittest + +import infra + + +def call_script(args, env, cwd): + """Call a script and return stdout and stderr as lists and the exit code.""" + proc = subprocess.Popen(args, cwd=cwd, stdout=subprocess.PIPE, + stderr=subprocess.PIPE, env=env, + universal_newlines=True) + out, err = proc.communicate() + return out.splitlines(), err.splitlines(), proc.returncode + + +def call_get_developers(cmd, args, env, cwd, developers_content): + """Call get-developers overrinding the default DEVELOPERS file.""" + with tempfile.NamedTemporaryFile(buffering=0) as developers_file: + developers_file.write(developers_content) + return call_script([cmd, "-d", developers_file.name] + args, env, cwd) + + +class TestGetDevelopers(unittest.TestCase): + """Test the various ways the script can be called in a simple top to bottom sequence.""" + + WITH_EMPTY_PATH = {} + WITH_UTILS_IN_PATH = {"PATH": infra.basepath("utils") + ":" + os.environ["PATH"]} + + def test_run(self): + topdir = infra.basepath() + + # no args, with syntax error in the file + developers = b'text3\n' + out, err, rc = call_get_developers("./utils/get-developers", [], self.WITH_EMPTY_PATH, topdir, developers) + self.assertIn("No action specified", out) + self.assertEqual(rc, 0) + self.assertEqual(len(err), 0) + + # -v generating error, called from the main dir + developers = b'text1\n' + out, err, rc = call_get_developers("./utils/get-developers", ["-v"], self.WITH_EMPTY_PATH, topdir, developers) + self.assertIn("Syntax error in DEVELOPERS file, line 1: 'text1'", err) + self.assertEqual(rc, 1) + self.assertEqual(len(out), 0) + self.assertEqual(len(err), 1) + + # -v generating error, called from path + developers = b'text2\n' + out, err, rc = call_get_developers("get-developers", ["-v"], self.WITH_UTILS_IN_PATH, topdir, developers) + self.assertIn("Syntax error in DEVELOPERS file, line 1: 'text2'", err) + self.assertEqual(rc, 1) + self.assertEqual(len(out), 0) + self.assertEqual(len(err), 1) + + # -v generating error for file entry with no developer entry + developers = b'# comment\n' \ + b'\n' \ + b'F:\tutils/get-developers\n' \ + b'\n' \ + b'N:\tAuthor2 \n' \ + b'F:\tutils/get-developers\n' + out, err, rc = call_get_developers("get-developers", ["-v"], self.WITH_UTILS_IN_PATH, topdir, developers) + self.assertIn("Syntax error in DEVELOPERS file, line 4", err) + self.assertEqual(rc, 1) + self.assertEqual(len(out), 0) + self.assertEqual(len(err), 1) + + # -v generating error for developer entry with no file entries, stopping on first error + developers = b'# comment\n' \ + b'# comment\n' \ + b'\n' \ + b'N:\tAuthor1 \n' \ + b'N:\tAuthor2 \n' \ + b'N:\tAuthor3 \n' \ + b'F:\tutils/get-developers\n' + out, err, rc = call_get_developers("get-developers", ["-v"], self.WITH_UTILS_IN_PATH, topdir, developers) + self.assertIn("Syntax error in DEVELOPERS file, line 4", err) + self.assertEqual(rc, 1) + self.assertEqual(len(out), 0) + self.assertEqual(len(err), 1) + + # -v not generating error for developer entry with empty list of file entries + developers = b'# comment\n' \ + b'# comment\n' \ + b'\n' \ + b'N:\tAuthor1 \n' \ + b'\n' \ + b'N:\tAuthor2 \n' \ + b'\n' \ + b'N:\tAuthor3 \n' \ + b'F:\tutils/get-developers\n' + out, err, rc = call_get_developers("get-developers", ["-v"], self.WITH_UTILS_IN_PATH, topdir, developers) + self.assertEqual(rc, 0) + self.assertEqual(len(out), 0) + self.assertEqual(len(err), 0) + + # -v generating warning for old file entry + developers = b'N:\tAuthor \n' \ + b'F:\tpath/that/does/not/exists/1\n' \ + b'F:\tpath/that/does/not/exists/2\n' + out, err, rc = call_get_developers("get-developers", ["-v"], self.WITH_UTILS_IN_PATH, topdir, developers) + self.assertIn("WARNING: 'path/that/does/not/exists/1' doesn't match any file, line 2", err) + self.assertIn("WARNING: 'path/that/does/not/exists/2' doesn't match any file, line 3", err) + self.assertEqual(rc, 0) + self.assertEqual(len(out), 0) + self.assertEqual(len(err), 2) + + # -c generating warning and printing lots of files with no developer + developers = b'N:\tAuthor \n' \ + b'F:\tpath/that/does/not/exists/1\n' \ + b'F:\tpath/that/does/not/exists/2\n' + out, err, rc = call_get_developers("./utils/get-developers", ["-c"], self.WITH_EMPTY_PATH, topdir, developers) + self.assertIn("WARNING: 'path/that/does/not/exists/1' doesn't match any file, line 2", err) + self.assertIn("WARNING: 'path/that/does/not/exists/2' doesn't match any file, line 3", err) + self.assertEqual(rc, 0) + self.assertGreater(len(out), 1000) + self.assertEqual(len(err), 2) + + # -c printing lots of files with no developer + developers = b'# comment\n' \ + b'\n' \ + b'N:\tAuthor \n' \ + b'F:\tutils/get-developers\n' + out, err, rc = call_get_developers("./utils/get-developers", ["-c"], self.WITH_EMPTY_PATH, topdir, developers) + self.assertEqual(rc, 0) + self.assertGreater(len(out), 1000) + self.assertEqual(len(err), 0) + + # -p lists more than one developer + developers = b'N:\tdev1\n' \ + b'F:\ttoolchain/\n' \ + b'\n' \ + b'N:\tdev2\n' \ + b'F:\ttoolchain/\n' + out, err, rc = call_get_developers("./utils/get-developers", ["-p", "toolchain"], self.WITH_EMPTY_PATH, topdir, developers) + self.assertIn("dev1", out) + self.assertIn("dev2", out) + self.assertEqual(rc, 0) + self.assertEqual(len(err), 0) + + # no args, with syntax error in the file + developers = b'text3\n' + out, err, rc = call_get_developers("./utils/get-developers", [], self.WITH_EMPTY_PATH, topdir, developers) + self.assertIn("No action specified", out) + self.assertEqual(rc, 0) + self.assertEqual(len(err), 0) + + # patchfile from topdir and from elsewhere + abs_path = infra.filepath("tests/utils/test_get_developers/") + rel_file = "0001-package-binutils-change-.mk.patch" + abs_file = os.path.join(abs_path, rel_file) + developers = b'N:\tdev1\n' \ + b'F:\tpackage/binutils/\n' + out, err, rc = call_get_developers("./utils/get-developers", [abs_file], self.WITH_EMPTY_PATH, topdir, developers) + self.assertIn('git send-email --to buildroot@buildroot.org --cc "dev1"', out) + self.assertEqual(rc, 0) + self.assertEqual(len(err), 0) + out, err, rc = call_get_developers("get-developers", [rel_file], self.WITH_UTILS_IN_PATH, abs_path, developers) + self.assertIn('git send-email --to buildroot@buildroot.org --cc "dev1"', out) + self.assertEqual(rc, 0) + self.assertEqual(len(err), 0) diff --git a/support/testing/tests/utils/test_get_developers/0001-package-binutils-change-.mk.patch b/support/testing/tests/utils/test_get_developers/0001-package-binutils-change-.mk.patch new file mode 100644 index 00000000..46ebeaa8 --- /dev/null +++ b/support/testing/tests/utils/test_get_developers/0001-package-binutils-change-.mk.patch @@ -0,0 +1,23 @@ +From f213fd29c1015a3afee9a3fde0dd7ce6c6325802 Mon Sep 17 00:00:00 2001 +From: Ricardo Martincoski +Date: Fri, 27 May 2022 20:15:00 -0300 +Subject: [PATCH 1/1] package/binutils: change .mk + +Signed-off-by: Ricardo Martincoski +--- + package/binutils/binutils.mk | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/package/binutils/binutils.mk b/package/binutils/binutils.mk +index 8c4a1371ca..3f143d9d76 100644 +--- a/package/binutils/binutils.mk ++++ b/package/binutils/binutils.mk +@@ -1,6 +1,6 @@ + ################################################################################ + # +-# binutils ++# Binutils + # + ################################################################################ +-- +2.25.1 diff --git a/system/Config.in b/system/Config.in new file mode 100644 index 00000000..318c538e --- /dev/null +++ b/system/Config.in @@ -0,0 +1,763 @@ +menu "System configuration" + +# Note on package/skeleton: usually, it is not safe to 'select' a +# provider of a virtual package. But below we have an exception: each +# init system may select one of the virtual skeleton-init-* packages. +# As only one init system may be enabled, only one skeleton-init-* may +# be selected. So this is a safe situation. +choice + prompt "Root FS skeleton" + +config BR2_ROOTFS_SKELETON_DEFAULT + bool "default target skeleton" + help + Use default target skeleton for selected init system. + +config BR2_ROOTFS_SKELETON_CUSTOM + bool "custom target skeleton" + select BR2_PACKAGE_SKELETON_CUSTOM + help + Use custom target skeleton. + +# skeleton from br2-external trees, if any +source "$BR2_BASE_DIR/.br2-external.in.skeleton" + +endchoice + +if BR2_ROOTFS_SKELETON_CUSTOM + +config BR2_ROOTFS_SKELETON_CUSTOM_PATH + string "custom target skeleton path" + help + Path to custom target skeleton. + +endif + +if BR2_ROOTFS_SKELETON_DEFAULT + +config BR2_TARGET_GENERIC_HOSTNAME + string "System hostname" + default "buildroot" + help + Select system hostname to be stored in /etc/hostname. + + Leave empty to not create /etc/hostname, or to keep the + one from a custom skeleton. + +config BR2_TARGET_GENERIC_ISSUE + string "System banner" + default "Welcome to Buildroot" + help + Select system banner (/etc/issue) to be displayed at login. + + Leave empty to not create /etc/issue, or to keep the + one from a custom skeleton. + +endif + +choice + bool "Passwords encoding" + default BR2_TARGET_GENERIC_PASSWD_SHA256 + help + Choose the password encoding scheme to use when Buildroot + needs to encode a password (eg. the root password, below). + + Note: this is used at build-time, and *not* at runtime. + +config BR2_TARGET_GENERIC_PASSWD_SHA256 + bool "sha-256" + help + Use SHA256 to encode passwords which is stronger than MD5. + +config BR2_TARGET_GENERIC_PASSWD_SHA512 + bool "sha-512" + help + Use SHA512 to encode passwords which is stronger than SHA256 + +endchoice # Passwd encoding + +config BR2_TARGET_GENERIC_PASSWD_METHOD + string + default "sha-256" if BR2_TARGET_GENERIC_PASSWD_SHA256 + default "sha-512" if BR2_TARGET_GENERIC_PASSWD_SHA512 + +# See comment at the top of the file, about selecting individual +# skeletons, which are providers of the virtual skeleton package. +choice + prompt "Init system" + default BR2_INIT_BUSYBOX + +config BR2_INIT_BUSYBOX + bool "BusyBox" + select BR2_PACKAGE_BUSYBOX + select BR2_PACKAGE_INITSCRIPTS + select BR2_PACKAGE_SKELETON_INIT_SYSV if BR2_ROOTFS_SKELETON_DEFAULT + +config BR2_INIT_SYSV + bool "systemV" + depends on BR2_USE_MMU # sysvinit + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # sysvinit + select BR2_PACKAGE_INITSCRIPTS + select BR2_PACKAGE_SYSVINIT + select BR2_PACKAGE_SKELETON_INIT_SYSV if BR2_ROOTFS_SKELETON_DEFAULT + +config BR2_INIT_OPENRC + bool "OpenRC" + depends on BR2_USE_MMU + depends on !BR2_STATIC_LIBS + depends on !BR2_TOOLCHAIN_USES_UCLIBC # openrc + select BR2_PACKAGE_OPENRC + select BR2_PACKAGE_SKELETON_INIT_OPENRC if BR2_ROOTFS_SKELETON_DEFAULT + +comment "openrc needs a glibc or musl toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS && BR2_TOOLCHAIN_USES_UCLIBC + +# In Buildroot, we decided not to support a split-usr when systemd is +# used as an init system. This is a design decision, not a systemd +# issue. Thus the select is with BR2_INIT_SYSTEMD (below) rather than +# with BR2_PACKAGE_SYSTEMD. +config BR2_INIT_SYSTEMD + bool "systemd" + depends on BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_TOOLCHAIN_HAS_SSP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 + depends on BR2_HOST_GCC_AT_LEAST_8 + select BR2_ROOTFS_MERGED_USR + select BR2_PACKAGE_SYSTEMD + select BR2_PACKAGE_SKELETON_INIT_SYSTEMD if BR2_ROOTFS_SKELETON_DEFAULT + +comment "systemd needs a glibc toolchain w/ SSP, headers >= 3.15, host and target gcc >= 8" + depends on BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_TOOLCHAIN_HAS_SSP || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15 || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_8 || \ + !BR2_HOST_GCC_AT_LEAST_8 + +comment "systemd highly recommends Linux >= 4.15" + depends on BR2_INIT_SYSTEMD + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 + +config BR2_INIT_NONE + bool "None" + select BR2_PACKAGE_SKELETON_INIT_NONE if BR2_ROOTFS_SKELETON_DEFAULT + help + Buildroot will not install any init system. You will + have to provide your own, either with a new package + or with a rootfs-overlay. + +# Init systems from br2-external trees, if any +source "$BR2_BASE_DIR/.br2-external.in.init" + +endchoice + +if BR2_INIT_SYSTEMD + +choice + bool "/var management" + default BR2_INIT_SYSTEMD_VAR_FACTORY # legacy + depends on !BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW + help + Select how Buildroot provides a read-write /var when the + rootfs is not remounted read-write. + + Note: Buildroot uses a tmpfs, either as a mount point or as + the upper of an overlayfs, so as to at least make the system + bootable out of the box; mounting a filesystem from actual + storage is left to the integration, as it is too specific and + may need preparatory work like partitionning a device and/or + formatting a filesystem first, which falls out of the scope + of Buildroot. + +config BR2_INIT_SYSTEMD_VAR_FACTORY + bool "build a factory to populate a tmpfs" + help + Build a factory of the content of /var as installed by + packages, mount a tmpfs on /var at runtime, so that + systemd-tmpfiles can populate it from the factory. + + This may help on a read-only rootfs. + + It probably does not play very well with triggering a call + to systemd-tmpfiles at build time (below). + + To use persistent storage, provide a systemd dropin for the + var.mount unit, that overrides the What and Type, and possibly + the Options and After, fields. + +config BR2_INIT_SYSTEMD_VAR_OVERLAYFS + bool "mount an overlayfs backed by a tmpfs" + select BR2_INIT_SYSTEMD_POPULATE_TMPFILES + help + Mount an overlayfs on /var, with the upper as a tmpfs. + + To use a persistent storage, provide either a mount unit or a + fstab line to mount it on /run/buildroot/mounts/var, e.g. + + /dev/sdc1 /run/buildroot/mounts/var ext4 defaults + +config BR2_INIT_SYSTEMD_VAR_NONE + bool "do nothing" + help + Choose this if you have custom dispositions (like one or more + of a post-build script, a fakeroot script, systemd units, an + initramfs, or something else) that prepare /var to be writable + on a read-only rootfs. + +endchoice + +config BR2_INIT_SYSTEMD_POPULATE_TMPFILES + bool "trigger systemd-tmpfiles during build" + default y # legacy + help + Act on the systemd-tmpfiles.d database at build time, when + assembling the root filesystems. + + This may help on a read-only filesystem. + + It probably does not play very well with the /var factory + (above). + +config BR2_PACKAGE_SYSTEMD_DEFAULT_TARGET + string "The default unit systemd starts at bootup" + default "multi-user.target" + help + Specify the name of the unit configuration file to be started + at bootup by systemd. Should end in ".target". + ex: multi-user.target + + https://www.freedesktop.org/software/systemd/man/systemd.special.html#default.target + +endif # BR2_INIT_SYSTEMD + +choice + prompt "/dev management" if !BR2_INIT_SYSTEMD + default BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS + +config BR2_ROOTFS_DEVICE_CREATION_STATIC + bool "Static using device table" + +config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS + bool "Dynamic using devtmpfs only" + +config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV + bool "Dynamic using devtmpfs + mdev" + select BR2_PACKAGE_BUSYBOX + +config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV + bool "Dynamic using devtmpfs + eudev" + depends on BR2_USE_WCHAR # eudev + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # eudev + select BR2_PACKAGE_EUDEV + +comment "eudev needs a toolchain w/ wchar, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS + +endchoice + +comment "/dev management using udev (from systemd)" + depends on BR2_INIT_SYSTEMD + +config BR2_ROOTFS_DEVICE_TABLE + string "Path to the permission tables" + default "system/device_table.txt" + help + Specify a space-separated list of permission table locations, + that will be passed to the makedevs utility to assign + correct owners and permissions on various files in the + target filesystem. + + See package/makedevs/README for details on the usage and + syntax of these files. + +config BR2_ROOTFS_STATIC_DEVICE_TABLE + string "Path to the device tables" + default "system/device_table_dev.txt" + depends on BR2_ROOTFS_DEVICE_CREATION_STATIC + help + Specify a space-separated list of device table locations, + that will be passed to the makedevs utility to create all + the special device files under /dev. + + See package/makedevs/README for details on the usage and + syntax of these files. + +config BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES + bool "support extended attributes in device tables" + help + Support extended attributes handling in device tables + +config BR2_ROOTFS_MERGED_USR + bool "Use symlinks to /usr for /bin, /sbin and /lib" + help + If you say 'n' here, then /bin, /sbin and /lib and their + counterparts in /usr will be separate directories. This + is the historical UNIX way. In this case, /usr can be a + filesystem on a partition separate from / . + + If you say 'y' here, then /bin, /sbin and /lib will be + symlinks to their counterparts in /usr. In this case, /usr can + not be a separate filesystem. + +if BR2_ROOTFS_SKELETON_DEFAULT + +config BR2_TARGET_ENABLE_ROOT_LOGIN + bool "Enable root login with password" + default y + select BR2_PACKAGE_HOST_MKPASSWD if BR2_TARGET_GENERIC_ROOT_PASSWD != "" + help + Allow root to log in with a password. + + If not enabled, root will not be able to log in with a + password. However, if you have an ssh server and you add an + ssh key, you can still allow root to log in. Alternatively, + you can use sudo to become root. + +config BR2_TARGET_GENERIC_ROOT_PASSWD + string "Root password" + default "" + depends on BR2_TARGET_ENABLE_ROOT_LOGIN + help + Set the initial root password. + + If set to empty (the default), then no root password will be + set, and root will need no password to log in. + + If the password starts with any of $1$, $5$ or $6$, it is + considered to be already crypt-encoded with respectively md5, + sha256 or sha512. Any other value is taken to be a clear-text + value, and is crypt-encoded as per the "Passwords encoding" + scheme, above. + + Note: "$" signs in the hashed password must be doubled. For + example, if the hashed password is + "$1$longsalt$v35DIIeMo4yUfI23yditq0", then you must enter it + as "$$1$$longsalt$$v35DIIeMo4yUfI23yditq0" (this is necessary + otherwise make would attempt to interpret the $ as a variable + expansion). + + WARNING! WARNING! + The password appears as-is in the .config file, and may appear + in the build log! Avoid using a valuable password if either + the .config file or the build log may be distributed, or at + the very least use a strong cryptographic hash for your + password! + +choice + bool "/bin/sh" + default BR2_SYSTEM_BIN_SH_DASH if !BR2_PACKAGE_BUSYBOX + help + Select which shell will provide /bin/sh. + +# busybox has shells that work on noMMU +config BR2_SYSTEM_BIN_SH_BUSYBOX + bool "busybox' default shell" + depends on BR2_PACKAGE_BUSYBOX + +config BR2_SYSTEM_BIN_SH_BASH + bool "bash" + depends on BR2_USE_MMU # bash + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_BASH + +config BR2_SYSTEM_BIN_SH_DASH + bool "dash" + depends on BR2_USE_MMU # 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, mksh, zsh need BR2_PACKAGE_BUSYBOX_SHOW_OTHERS" + depends on !BR2_PACKAGE_BUSYBOX_SHOW_OTHERS && BR2_PACKAGE_BUSYBOX + +config BR2_SYSTEM_BIN_SH_NONE + bool "none" + +endchoice # /bin/sh + +config BR2_SYSTEM_BIN_SH + string + 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 + bool "Run a getty (login prompt) after boot" + default y if !BR2_PACKAGE_PETITBOOT + +if BR2_TARGET_GENERIC_GETTY +config BR2_TARGET_GENERIC_GETTY_PORT + string "TTY port" + default "console" + help + Specify a port to run a getty on. + +choice + prompt "Baudrate" + default BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP + help + Select a baudrate to use. + +config BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP + bool "keep kernel default" +config BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 + bool "9600" +config BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 + bool "19200" +config BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 + bool "38400" +config BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 + bool "57600" +config BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200 + bool "115200" +endchoice + +config BR2_TARGET_GENERIC_GETTY_BAUDRATE + string + default "0" if BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP + default "9600" if BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 + default "19200" if BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 + default "38400" if BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 + default "57600" if BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 + default "115200" if BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200 + +config BR2_TARGET_GENERIC_GETTY_TERM + string "TERM environment variable" + default "vt100" + # currently observed by all but systemd + depends on !BR2_INIT_SYSTEMD + help + Specify a TERM type. + +config BR2_TARGET_GENERIC_GETTY_OPTIONS + string "other options to pass to getty" + default "" + # currently observed by all but systemd + depends on !BR2_INIT_SYSTEMD + help + Any other flags you want to pass to getty, + Refer to getty --help for details. +endif + +config BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW + bool "remount root filesystem read-write during boot" + default y + help + The root filesystem is typically mounted read-only at boot. + By default, buildroot remounts it in read-write mode early + during the boot process. + Say no here if you would rather like your root filesystem to + remain read-only. + If unsure, say Y. + +config BR2_SYSTEM_DHCP + string "Network interface to configure through DHCP" + default "" + depends on BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_IFUPDOWN || \ + BR2_PACKAGE_SYSTEMD_NETWORKD || BR2_PACKAGE_NETIFRC + help + Enter here the name of the network interface (E.G. eth0) to + automatically configure through DHCP at bootup. + + If left empty, no automatic DHCP requests will take place. + + 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 needs ifupdown or busybox or networkd or netifrc" + depends on !(BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_IFUPDOWN || \ + BR2_PACKAGE_SYSTEMD_NETWORKD || BR2_PACKAGE_NETIFRC) + +endif # BR2_ROOTFS_SKELETON_DEFAULT + +config BR2_SYSTEM_DEFAULT_PATH + string "Set the system's default PATH" + default "/usr/bin:/usr/sbin" if BR2_ROOTFS_MERGED_USR + default "/bin:/sbin:/usr/bin:/usr/sbin" if !BR2_ROOTFS_MERGED_USR + help + Sets the system's default PATH. It is being used in + /etc/profile in the skeleton-init-common package and by some + daemons. + + The default should work in most cases. + +config BR2_ENABLE_LOCALE_PURGE + bool "Purge unwanted locales" + default y + help + Explicitly specify what locales to install on target. If N + then all locales supported by packages are installed. + +config BR2_ENABLE_LOCALE_WHITELIST + string "Locales to keep" + default "C en_US" + depends on BR2_ENABLE_LOCALE_PURGE + help + Whitespace separated list of locales to allow on target. + Locales not listed here will be removed from the target. + See 'locale -a' on your host for a list of locales available + on your build host, or have a look in /usr/share/locale in + the target file system for available locales. + + Notice that listing a locale here doesn't guarantee that it + will be available on the target - That purely depends on the + support for that locale in the selected packages. + +config BR2_GENERATE_LOCALE + string "Generate locale data" + default "" + depends on \ + (BR2_TOOLCHAIN_BUILDROOT_UCLIBC && BR2_ENABLE_LOCALE) || \ + BR2_TOOLCHAIN_USES_GLIBC + help + Generate support for a list of locales. Locales can be + specified with or without encoding, when no encoding is + specified, UTF-8 is assumed. Examples of locales: en_US, + fr_FR.UTF-8. + +config BR2_SYSTEM_ENABLE_NLS + bool "Enable Native Language Support (NLS)" + depends on BR2_USE_WCHAR + # - glibc has built-in NLS support, but anyway doesn't + # support static linking + # - musl and uclibc support static linking, but they don't + # have built-in NLS support, which is provided by the + # libintl library from gettext. The fact that it is a + # separate library causes too many problems for static + # linking. + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_GETTEXT if !BR2_TOOLCHAIN_HAS_FULL_GETTEXT + help + This option will enable Native Language Support, which will + allow software packages to support translations. + +comment "NLS support needs a toolchain w/ wchar, dynamic library" + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS + +config BR2_TARGET_TZ_INFO + bool "Install timezone info" + select BR2_PACKAGE_TZDATA if BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_TZDATA if BR2_TOOLCHAIN_USES_MUSL + select BR2_PACKAGE_TZ if BR2_TOOLCHAIN_USES_UCLIBC + help + Say 'y' here to install timezone info. + +if BR2_TARGET_TZ_INFO + +config BR2_TARGET_TZ_ZONELIST + string "timezone list" + default "default" + help + Space-separated list of time zones to compile. + + The value "default" includes all commonly used time zones. + Note that this set consumes around 5.5M for glibc and 2.1M for + uClibc. + + The full list is the list of files in the time zone database + source, not including the build and .tab files. + +config BR2_TARGET_LOCALTIME + string "default local time" + default "Etc/UTC" + help + The time zone to install as the default local time, expressed + as a tzdata location, such as: + Etc/UTC (the default) + GMT + Europe/Paris + America/New_York + Pacific/Wallis + ... + + Set to empty to not install a default time zone. + +endif # BR2_TARGET_TZ_INFO + +config BR2_ROOTFS_USERS_TABLES + string "Path to the users tables" + help + Specify a space-separated list of users table locations, + that will be passed to the mkusers utility to create + users on the system, with home directory, password, etc. + + See manual for details on the usage and syntax of these files. + +config BR2_ROOTFS_OVERLAY + string "Root filesystem overlay directories" + default "" + help + Specify a list of directories that are copied over the target + root filesystem after the build has finished and before it is + packed into the selected filesystem images. + + They are copied as-is into the rootfs, excluding files ending + with ~ and .git, .svn and .hg directories. + +config BR2_ROOTFS_PRE_BUILD_SCRIPT + string "Custom scripts to run before commencing the build" + default "" + help + Specify a space-separated list of scripts to be run before the + build commences. + + This gives users the opportunity to do board-specific + preparations before starting the build. + +config BR2_ROOTFS_POST_BUILD_SCRIPT + string "Custom scripts to run before creating filesystem images" + default "" + help + Specify a space-separated list of scripts to be run after the + build has finished and before Buildroot starts packing the + files into selected filesystem images. + + This gives users the opportunity to do board-specific + cleanups, add-ons and the like, so the generated files can be + used directly without further processing. + + These scripts are called with the target directory name as + first argument. Make sure the exit code of those scripts are + 0, otherwise make will stop after calling them. + +config BR2_ROOTFS_POST_FAKEROOT_SCRIPT + string "Custom scripts to run inside the fakeroot environment" + default "" + help + Specify a space-separated list of scripts to be run at the end + of the fakeroot script right before the image(s) are actually + generated. + + This gives users the opportunity to do customisations of the + content of the rootfs, which would otherwise require root + rights. + + These scripts are called with the target directory name as + first argument. The build will fail on the first scripts that + exits with a non-zero exit code. + + Note that Buildroot already provides mechanisms to customise + the content of the rootfs: + + - BR2_ROOTFS_STATIC_DEVICE_TABLE + to create arbitrary entries statically in /dev + + - BR2_ROOTFS_DEVICE_TABLE + to set arbitrary permissions as well as extended + attributes (such as capabilities) on files and + directories, + + - BR2_ROOTFS_USERS_TABLES: + to create arbitrary users and their home directories + + It is highly recommended to use those mechanisms if possible, + rather than using custom fakeroot scripts. + +config BR2_ROOTFS_POST_IMAGE_SCRIPT + string "Custom scripts to run after creating filesystem images" + default "" + help + Specify a space-separated list of scripts to be run after + the build has finished and after Buildroot has packed the + files into selected filesystem images. + + This can for example be used to call a tool building a + firmware image from different images generated by Buildroot, + or automatically extract the tarball root filesystem image + into some location exported by NFS, or any other custom + action. + + These scripts are called with the images directory name as + first argument. The script is executed from the main Buildroot + source directory as the current directory. + +config BR2_ROOTFS_POST_SCRIPT_ARGS + string "Extra arguments passed to custom scripts" + depends on BR2_ROOTFS_PRE_BUILD_SCRIPT != "" \ + || BR2_ROOTFS_POST_BUILD_SCRIPT != "" \ + || BR2_ROOTFS_POST_FAKEROOT_SCRIPT != "" \ + || BR2_ROOTFS_POST_IMAGE_SCRIPT != "" + help + Pass these additional arguments to each pre-build, post-build, + post-fakeroot and post-image scripts. + + Note that all the post-build and post-image scripts will be + passed the same set of arguments, you can not pass different + arguments to each script. + + Note also, as stated in their respective help text, that the + first argument to each script is the target directory / images + directory. The arguments in this option will be passed *after* + those. + +config BR2_ROOTFS_PRE_BUILD_SCRIPT_ARGS + string "Extra arguments passed to BR2_ROOTFS_PRE_BUILD_SCRIPT" + depends on BR2_ROOTFS_PRE_BUILD_SCRIPT != "" + help + Pass these additional arguments to the pre-build script. + + Note also, as stated in the respective help text, that the + first argument to each script is the target directory, then + the common arguments specified in BR2_ROOTFS_POST_SCRIPT_ARGS + above, and then the arguments in this option will be passed + *after* those. + +config BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS + string "Extra arguments passed to BR2_ROOTFS_POST_BUILD_SCRIPT" + depends on BR2_ROOTFS_POST_BUILD_SCRIPT != "" + help + Pass these additional arguments to the post-build script. + + Note also, as stated in the respective help text, that the + first argument to each script is the target directory, then + the common arguments specified in BR2_ROOTFS_POST_SCRIPT_ARGS + above, and then the arguments in this option will be passed + *after* those. + +config BR2_ROOTFS_POST_FAKEROOT_SCRIPT_ARGS + string "Extra arguments passed to BR2_ROOTFS_POST_FAKEROOT_SCRIPT" + depends on BR2_ROOTFS_POST_FAKEROOT_SCRIPT != "" + help + Pass these additional arguments to the post-fakeroot script. + + Note also, as stated in the respective help text, that the + first argument to each script is the target directory, then + the common arguments specified in BR2_ROOTFS_POST_SCRIPT_ARGS + above, and then the arguments in this option will be passed + *after* those. + +config BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS + string "Extra arguments passed to POST_IMAGE_SCRIPT" + depends on BR2_ROOTFS_POST_IMAGE_SCRIPT != "" + help + Pass these additional arguments to the post-image script. + + Note also, as stated in the respective help text, that the + first argument to each script is the images directory, then + the common arguments specified in BR2_ROOTFS_POST_SCRIPT_ARGS + above, and then the arguments in this option will be passed + *after* those. + +endmenu diff --git a/system/device_table.txt b/system/device_table.txt new file mode 100644 index 00000000..dc1af518 --- /dev/null +++ b/system/device_table.txt @@ -0,0 +1,21 @@ +# See package/makedevs/README for details +# +# This device table is used to assign proper ownership and permissions +# on various files. It doesn't create any device file, as it is used +# in both static device configurations (where /dev/ is static) and in +# dynamic configurations (where devtmpfs, mdev or udev are used). +# +# +/dev d 755 0 0 - - - - - +/tmp d 1777 0 0 - - - - - +/etc d 755 0 0 - - - - - +/root d 700 0 0 - - - - - +/var/www d 755 33 33 - - - - - +/etc/shadow f 600 0 0 - - - - - +/etc/passwd f 644 0 0 - - - - - +/etc/network/if-up.d d 755 0 0 - - - - - +/etc/network/if-pre-up.d d 755 0 0 - - - - - +/etc/network/if-down.d d 755 0 0 - - - - - +/etc/network/if-post-down.d d 755 0 0 - - - - - +# uncomment this to allow starting x as non-root +#/usr/X11R6/bin/Xfbdev f 4755 0 0 - - - - - diff --git a/system/device_table_dev.txt b/system/device_table_dev.txt new file mode 100644 index 00000000..4f0b6377 --- /dev/null +++ b/system/device_table_dev.txt @@ -0,0 +1,133 @@ +# See package/makedevs/README for details +# +# This device table is used only to create device files when a static +# device configuration is used (entries in /dev are static). +# +# + +# Normal system devices +/dev/mem c 640 0 0 1 1 0 0 - +/dev/kmem c 640 0 0 1 2 0 0 - +/dev/null c 666 0 0 1 3 0 0 - +/dev/zero c 666 0 0 1 5 0 0 - +/dev/random c 666 0 0 1 8 0 0 - +/dev/urandom c 666 0 0 1 9 0 0 - +/dev/ram b 640 0 0 1 1 0 0 - +/dev/ram b 640 0 0 1 0 0 1 4 +/dev/loop b 640 0 0 7 0 0 1 2 +/dev/rtc c 640 0 0 10 135 - - - +/dev/console c 666 0 0 5 1 - - - +/dev/tty c 666 0 0 5 0 - - - +/dev/tty c 666 0 0 4 0 0 1 8 +/dev/ttyp c 666 0 0 3 0 0 1 10 +/dev/ptyp c 666 0 0 2 0 0 1 10 +/dev/ptmx c 666 0 0 5 2 - - - +/dev/ttyP c 666 0 0 57 0 0 1 4 +/dev/ttyS c 666 0 0 4 64 0 1 4 +/dev/fb c 640 0 5 29 0 0 1 4 +#/dev/ttySA c 666 0 0 204 5 0 1 3 +/dev/psaux c 666 0 0 10 1 0 0 - +#/dev/ppp c 666 0 0 108 0 - - - +/dev/ttyAM c 666 0 0 204 16 0 1 3 +/dev/ttyCPM c 666 0 0 204 46 0 1 4 +/dev/ttyAMA c 666 0 0 204 64 0 1 4 +/dev/ttyBF c 666 0 0 204 64 0 1 2 +/dev/ttySAC c 666 0 0 204 64 0 1 4 +/dev/ttySC c 666 0 0 204 8 0 1 8 +/dev/ttyPSC c 666 0 0 204 148 0 1 4 +/dev/ttyUL c 666 0 0 204 187 0 1 4 +/dev/ttymxc c 666 0 0 207 16 0 1 4 +/dev/hvc c 640 0 0 229 0 0 1 4 + +# Input stuff +/dev/input d 755 0 0 - - - - - +/dev/input/mice c 640 0 0 13 63 0 0 - +/dev/input/mouse c 660 0 0 13 32 0 1 4 +/dev/input/event c 660 0 0 13 64 0 1 4 +#/dev/input/js c 660 0 0 13 0 0 1 4 + + +# MTD stuff +/dev/mtd c 640 0 0 90 0 0 2 4 +/dev/mtdblock b 640 0 0 31 0 0 1 4 + +#Tun/tap driver +/dev/net d 755 0 0 - - - - - +/dev/net/tun c 660 0 0 10 200 - - - + +# Audio stuff +#/dev/audio c 666 0 29 14 4 - - - +#/dev/audio1 c 666 0 29 14 20 - - - +#/dev/dsp c 666 0 29 14 3 - - - +#/dev/dsp1 c 666 0 29 14 19 - - - +#/dev/sndstat c 666 0 29 14 6 - - - + +# User-mode Linux stuff +#/dev/ubda b 640 0 0 98 0 0 0 - +#/dev/ubda b 640 0 0 98 1 1 1 15 + +# IDE Devices +/dev/hda b 640 0 0 3 0 0 0 - +/dev/hda b 640 0 0 3 1 1 1 15 +/dev/hdb b 640 0 0 3 64 0 0 - +/dev/hdb b 640 0 0 3 65 1 1 15 +#/dev/hdc b 640 0 0 22 0 0 0 - +#/dev/hdc b 640 0 0 22 1 1 1 15 +#/dev/hdd b 640 0 0 22 64 0 0 - +#/dev/hdd b 640 0 0 22 65 1 1 15 +#/dev/hde b 640 0 0 33 0 0 0 - +#/dev/hde b 640 0 0 33 1 1 1 15 +#/dev/hdf b 640 0 0 33 64 0 0 - +#/dev/hdf b 640 0 0 33 65 1 1 15 +#/dev/hdg b 640 0 0 34 0 0 0 - +#/dev/hdg b 640 0 0 34 1 1 1 15 +#/dev/hdh b 640 0 0 34 64 0 0 - +#/dev/hdh b 640 0 0 34 65 1 1 15 + +# SCSI Devices +/dev/sda b 640 0 0 8 0 0 0 - +/dev/sda b 640 0 0 8 1 1 1 15 +/dev/sdb b 640 0 0 8 16 0 0 - +/dev/sdb b 640 0 0 8 17 1 1 15 +#/dev/sdc b 640 0 0 8 32 0 0 - +#/dev/sdc b 640 0 0 8 33 1 1 15 +#/dev/sdd b 640 0 0 8 48 0 0 - +#/dev/sdd b 640 0 0 8 49 1 1 15 +#/dev/sde b 640 0 0 8 64 0 0 - +#/dev/sde b 640 0 0 8 65 1 1 15 +#/dev/sdf b 640 0 0 8 80 0 0 - +#/dev/sdf b 640 0 0 8 81 1 1 15 +#/dev/sdg b 640 0 0 8 96 0 0 - +#/dev/sdg b 640 0 0 8 97 1 1 15 +#/dev/sdh b 640 0 0 8 112 0 0 - +#/dev/sdh b 640 0 0 8 113 1 1 15 +#/dev/sg c 640 0 0 21 0 0 1 15 +#/dev/scd b 640 0 0 11 0 0 1 15 +#/dev/st c 640 0 0 9 0 0 1 8 +#/dev/nst c 640 0 0 9 128 0 1 8 +#/dev/st c 640 0 0 9 32 1 1 4 +#/dev/st c 640 0 0 9 64 1 1 4 +#/dev/st c 640 0 0 9 96 1 1 4 + +# USB block devices (ub driver) +/dev/uba b 640 0 0 180 0 0 0 - +/dev/uba b 640 0 0 180 1 1 1 6 +/dev/ubb b 640 0 0 180 8 0 0 - +/dev/ubb b 640 0 0 180 65 1 1 6 + +# Floppy disk devices +#/dev/fd b 640 0 0 2 0 0 1 2 +#/dev/fd0d360 b 640 0 0 2 4 0 0 - +#/dev/fd1d360 b 640 0 0 2 5 0 0 - +#/dev/fd0h1200 b 640 0 0 2 8 0 0 - +#/dev/fd1h1200 b 640 0 0 2 9 0 0 - +#/dev/fd0u1440 b 640 0 0 2 28 0 0 - +#/dev/fd1u1440 b 640 0 0 2 29 0 0 - +#/dev/fd0u2880 b 640 0 0 2 32 0 0 - +#/dev/fd1u2880 b 640 0 0 2 33 0 0 - + +# I2C device nodes +/dev/i2c- c 666 0 0 89 0 0 1 4 + +# v4l device nodes +/dev/video c 666 0 0 81 0 0 1 4 diff --git a/system/skeleton/dev/.empty b/system/skeleton/dev/.empty new file mode 100644 index 00000000..e69de29b diff --git a/system/skeleton/dev/fd b/system/skeleton/dev/fd new file mode 120000 index 00000000..10e8ab73 --- /dev/null +++ b/system/skeleton/dev/fd @@ -0,0 +1 @@ +../proc/self/fd \ No newline at end of file diff --git a/system/skeleton/dev/stderr b/system/skeleton/dev/stderr new file mode 120000 index 00000000..c67586eb --- /dev/null +++ b/system/skeleton/dev/stderr @@ -0,0 +1 @@ +../proc/self/fd/2 \ No newline at end of file diff --git a/system/skeleton/dev/stdin b/system/skeleton/dev/stdin new file mode 120000 index 00000000..2825dc0f --- /dev/null +++ b/system/skeleton/dev/stdin @@ -0,0 +1 @@ +../proc/self/fd/0 \ No newline at end of file diff --git a/system/skeleton/dev/stdout b/system/skeleton/dev/stdout new file mode 120000 index 00000000..35e0f620 --- /dev/null +++ b/system/skeleton/dev/stdout @@ -0,0 +1 @@ +../proc/self/fd/1 \ No newline at end of file diff --git a/system/skeleton/etc/group b/system/skeleton/etc/group new file mode 100644 index 00000000..6822a277 --- /dev/null +++ b/system/skeleton/etc/group @@ -0,0 +1,26 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +kmem:x:9: +wheel:x:10:root +cdrom:x:11: +dialout:x:18: +floppy:x:19: +video:x:28: +audio:x:29: +tape:x:32: +www-data:x:33: +operator:x:37: +utmp:x:43: +plugdev:x:46: +staff:x:50: +lock:x:54: +netdev:x:82: +users:x:100: +nobody:x:65534: diff --git a/system/skeleton/etc/hosts b/system/skeleton/etc/hosts new file mode 100644 index 00000000..ba712fe0 --- /dev/null +++ b/system/skeleton/etc/hosts @@ -0,0 +1 @@ +127.0.0.1 localhost diff --git a/system/skeleton/etc/mtab b/system/skeleton/etc/mtab new file mode 120000 index 00000000..5c4677a6 --- /dev/null +++ b/system/skeleton/etc/mtab @@ -0,0 +1 @@ +../proc/self/mounts \ No newline at end of file diff --git a/system/skeleton/etc/passwd b/system/skeleton/etc/passwd new file mode 100644 index 00000000..d8281d25 --- /dev/null +++ b/system/skeleton/etc/passwd @@ -0,0 +1,9 @@ +root:x:0:0:root:/root:/bin/sh +daemon:x:1:1:daemon:/usr/sbin:/bin/false +bin:x:2:2:bin:/bin:/bin/false +sys:x:3:3:sys:/dev:/bin/false +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:65534:65534:nobody:/home:/bin/false diff --git a/system/skeleton/etc/profile b/system/skeleton/etc/profile new file mode 100644 index 00000000..05452770 --- /dev/null +++ b/system/skeleton/etc/profile @@ -0,0 +1,19 @@ +export PATH=@PATH@ + +if [ "$PS1" ]; then + if [ "`id -u`" -eq 0 ]; then + export PS1='# ' + else + export PS1='$ ' + fi +fi + +export EDITOR='/bin/vi' + +# Source configuration files from /etc/profile.d +for i in /etc/profile.d/*.sh ; do + if [ -r "$i" ]; then + . $i + fi +done +unset i diff --git a/system/skeleton/etc/profile.d/umask.sh b/system/skeleton/etc/profile.d/umask.sh new file mode 100644 index 00000000..8e71ad5d --- /dev/null +++ b/system/skeleton/etc/profile.d/umask.sh @@ -0,0 +1 @@ +umask 022 diff --git a/system/skeleton/etc/protocols b/system/skeleton/etc/protocols new file mode 100644 index 00000000..cfdd5adb --- /dev/null +++ b/system/skeleton/etc/protocols @@ -0,0 +1,61 @@ +# Internet (IP) protocols +# +# Updated from http://www.iana.org/assignments/protocol-numbers and other +# sources. + +ip 0 IP # internet protocol, pseudo protocol number +hopopt 0 HOPOPT # IPv6 Hop-by-Hop Option [RFC1883] +icmp 1 ICMP # internet control message protocol +igmp 2 IGMP # Internet Group Management +ggp 3 GGP # gateway-gateway protocol +ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP'') +st 5 ST # ST datagram mode +tcp 6 TCP # transmission control protocol +egp 8 EGP # exterior gateway protocol +igp 9 IGP # any private interior gateway (Cisco) +pup 12 PUP # PARC universal packet protocol +udp 17 UDP # user datagram protocol +hmp 20 HMP # host monitoring protocol +xns-idp 22 XNS-IDP # Xerox NS IDP +rdp 27 RDP # "reliable datagram" protocol +iso-tp4 29 ISO-TP4 # ISO Transport Protocol class 4 [RFC905] +dccp 33 DCCP # Datagram Congestion Control Prot. [RFC4340] +xtp 36 XTP # Xpress Transfer Protocol +ddp 37 DDP # Datagram Delivery Protocol +idpr-cmtp 38 IDPR-CMTP # IDPR Control Message Transport +ipv6 41 IPv6 # Internet Protocol, version 6 +ipv6-route 43 IPv6-Route # Routing Header for IPv6 +ipv6-frag 44 IPv6-Frag # Fragment Header for IPv6 +idrp 45 IDRP # Inter-Domain Routing Protocol +rsvp 46 RSVP # Reservation Protocol +gre 47 GRE # General Routing Encapsulation +esp 50 IPSEC-ESP # Encap Security Payload [RFC2406] +ah 51 IPSEC-AH # Authentication Header [RFC2402] +skip 57 SKIP # SKIP +ipv6-icmp 58 IPv6-ICMP # ICMP for IPv6 +ipv6-nonxt 59 IPv6-NoNxt # No Next Header for IPv6 +ipv6-opts 60 IPv6-Opts # Destination Options for IPv6 +rspf 73 RSPF CPHB # Radio Shortest Path First (officially CPHB) +vmtp 81 VMTP # Versatile Message Transport +eigrp 88 EIGRP # Enhanced Interior Routing Protocol (Cisco) +ospf 89 OSPFIGP # Open Shortest Path First IGP +ax.25 93 AX.25 # AX.25 frames +ipip 94 IPIP # IP-within-IP Encapsulation Protocol +etherip 97 ETHERIP # Ethernet-within-IP Encapsulation [RFC3378] +encap 98 ENCAP # Yet Another IP encapsulation [RFC1241] +# 99 # any private encryption scheme +pim 103 PIM # Protocol Independent Multicast +ipcomp 108 IPCOMP # IP Payload Compression Protocol +vrrp 112 VRRP # Virtual Router Redundancy Protocol [RFC5798] +l2tp 115 L2TP # Layer Two Tunneling Protocol [RFC2661] +isis 124 ISIS # IS-IS over IPv4 +sctp 132 SCTP # Stream Control Transmission Protocol +fc 133 FC # Fibre Channel +mobility-header 135 Mobility-Header # Mobility Support for IPv6 [RFC3775] +udplite 136 UDPLite # UDP-Lite [RFC3828] +mpls-in-ip 137 MPLS-in-IP # MPLS-in-IP [RFC4023] +manet 138 # MANET Protocols [RFC5498] +hip 139 HIP # Host Identity Protocol +shim6 140 Shim6 # Shim6 Protocol [RFC5533] +wesp 141 WESP # Wrapped Encapsulating Security Payload +rohc 142 ROHC # Robust Header Compression diff --git a/system/skeleton/etc/resolv.conf b/system/skeleton/etc/resolv.conf new file mode 120000 index 00000000..71f6f965 --- /dev/null +++ b/system/skeleton/etc/resolv.conf @@ -0,0 +1 @@ +../tmp/resolv.conf \ No newline at end of file diff --git a/system/skeleton/etc/services b/system/skeleton/etc/services new file mode 100644 index 00000000..b287b63e --- /dev/null +++ b/system/skeleton/etc/services @@ -0,0 +1,302 @@ +# /etc/services: +# $Id: services,v 1.1 2004/10/09 02:49:18 andersen Exp $ +# +# Network services, Internet style +# +# Note that it is presently the policy of IANA to assign a single well-known +# port number for both TCP and UDP; hence, most entries here have two entries +# even if the protocol doesn't support UDP operations. +# Updated from RFC 1700, ``Assigned Numbers'' (October 1994). Not all ports +# are included, only the more common ones. + +tcpmux 1/tcp # TCP port service multiplexer +echo 7/tcp +echo 7/udp +discard 9/tcp sink null +discard 9/udp sink null +systat 11/tcp users +daytime 13/tcp +daytime 13/udp +netstat 15/tcp +qotd 17/tcp quote +msp 18/tcp # message send protocol +msp 18/udp # message send protocol +chargen 19/tcp ttytst source +chargen 19/udp ttytst source +ftp-data 20/tcp +ftp 21/tcp +fsp 21/udp fspd +ssh 22/tcp # SSH Remote Login Protocol +ssh 22/udp # SSH Remote Login Protocol +telnet 23/tcp +# 24 - private +smtp 25/tcp mail +# 26 - unassigned +time 37/tcp timserver +time 37/udp timserver +rlp 39/udp resource # resource location +nameserver 42/tcp name # IEN 116 +whois 43/tcp nicname +re-mail-ck 50/tcp # Remote Mail Checking Protocol +re-mail-ck 50/udp # Remote Mail Checking Protocol +domain 53/tcp nameserver # name-domain server +domain 53/udp nameserver +mtp 57/tcp # deprecated +bootps 67/tcp # BOOTP server +bootps 67/udp +bootpc 68/tcp # BOOTP client +bootpc 68/udp +tftp 69/udp +gopher 70/tcp # Internet Gopher +gopher 70/udp +rje 77/tcp netrjs +finger 79/tcp +www 80/tcp http # WorldWideWeb HTTP +www 80/udp # HyperText Transfer Protocol +link 87/tcp ttylink +kerberos 88/tcp kerberos5 krb5 # Kerberos v5 +kerberos 88/udp kerberos5 krb5 # Kerberos v5 +supdup 95/tcp +# 100 - reserved +hostnames 101/tcp hostname # usually from sri-nic +iso-tsap 102/tcp tsap # part of ISODE. +csnet-ns 105/tcp cso-ns # also used by CSO name server +csnet-ns 105/udp cso-ns +# unfortunately the poppassd (Eudora) uses a port which has already +# been assigned to a different service. We list the poppassd as an +# alias here. This should work for programs asking for this service. +# (due to a bug in inetd the 3com-tsmux line is disabled) +#3com-tsmux 106/tcp poppassd +#3com-tsmux 106/udp poppassd +rtelnet 107/tcp # Remote Telnet +rtelnet 107/udp +pop-2 109/tcp postoffice # POP version 2 +pop-2 109/udp +pop-3 110/tcp # POP version 3 +pop-3 110/udp +sunrpc 111/tcp portmapper # RPC 4.0 portmapper TCP +sunrpc 111/udp portmapper # RPC 4.0 portmapper UDP +auth 113/tcp authentication tap ident +sftp 115/tcp +uucp-path 117/tcp +nntp 119/tcp readnews untp # USENET News Transfer Protocol +ntp 123/tcp +ntp 123/udp # Network Time Protocol +netbios-ns 137/tcp # NETBIOS Name Service +netbios-ns 137/udp +netbios-dgm 138/tcp # NETBIOS Datagram Service +netbios-dgm 138/udp +netbios-ssn 139/tcp # NETBIOS session service +netbios-ssn 139/udp +imap2 143/tcp # Interim Mail Access Proto v2 +imap2 143/udp +snmp 161/udp # Simple Net Mgmt Proto +snmp-trap 162/udp snmptrap # Traps for SNMP +cmip-man 163/tcp # ISO mgmt over IP (CMOT) +cmip-man 163/udp +cmip-agent 164/tcp +cmip-agent 164/udp +xdmcp 177/tcp # X Display Mgr. Control Proto +xdmcp 177/udp +nextstep 178/tcp NeXTStep NextStep # NeXTStep window +nextstep 178/udp NeXTStep NextStep # server +bgp 179/tcp # Border Gateway Proto. +bgp 179/udp +prospero 191/tcp # Cliff Neuman's Prospero +prospero 191/udp +irc 194/tcp # Internet Relay Chat +irc 194/udp +smux 199/tcp # SNMP Unix Multiplexer +smux 199/udp +at-rtmp 201/tcp # AppleTalk routing +at-rtmp 201/udp +at-nbp 202/tcp # AppleTalk name binding +at-nbp 202/udp +at-echo 204/tcp # AppleTalk echo +at-echo 204/udp +at-zis 206/tcp # AppleTalk zone information +at-zis 206/udp +qmtp 209/tcp # The Quick Mail Transfer Protocol +qmtp 209/udp # The Quick Mail Transfer Protocol +z3950 210/tcp wais # NISO Z39.50 database +z3950 210/udp wais +ipx 213/tcp # IPX +ipx 213/udp +imap3 220/tcp # Interactive Mail Access +imap3 220/udp # Protocol v3 +ulistserv 372/tcp # UNIX Listserv +ulistserv 372/udp +https 443/tcp # MCom +https 443/udp # MCom +snpp 444/tcp # Simple Network Paging Protocol +snpp 444/udp # Simple Network Paging Protocol +saft 487/tcp # Simple Asynchronous File Transfer +saft 487/udp # Simple Asynchronous File Transfer +npmp-local 610/tcp dqs313_qmaster # npmp-local / DQS +npmp-local 610/udp dqs313_qmaster # npmp-local / DQS +npmp-gui 611/tcp dqs313_execd # npmp-gui / DQS +npmp-gui 611/udp dqs313_execd # npmp-gui / DQS +hmmp-ind 612/tcp dqs313_intercell# HMMP Indication / DQS +hmmp-ind 612/udp dqs313_intercell# HMMP Indication / DQS +# +# UNIX specific services +# +exec 512/tcp +biff 512/udp comsat +login 513/tcp +who 513/udp whod +shell 514/tcp cmd # no passwords used +syslog 514/udp +printer 515/tcp spooler # line printer spooler +talk 517/udp +ntalk 518/udp +route 520/udp router routed # RIP +timed 525/udp timeserver +tempo 526/tcp newdate +courier 530/tcp rpc +conference 531/tcp chat +netnews 532/tcp readnews +netwall 533/udp # -for emergency broadcasts +uucp 540/tcp uucpd # uucp daemon +afpovertcp 548/tcp # AFP over TCP +afpovertcp 548/udp # AFP over TCP +remotefs 556/tcp rfs_server rfs # Brunhoff remote filesystem +klogin 543/tcp # Kerberized `rlogin' (v5) +kshell 544/tcp krcmd # Kerberized `rsh' (v5) +kerberos-adm 749/tcp # Kerberos `kadmin' (v5) +# +webster 765/tcp # Network dictionary +webster 765/udp +# +# From ``Assigned Numbers'': +# +#> The Registered Ports are not controlled by the IANA and on most systems +#> can be used by ordinary user processes or programs executed by ordinary +#> users. +# +#> Ports are used in the TCP [45,106] to name the ends of logical +#> connections which carry long term conversations. For the purpose of +#> providing services to unknown callers, a service contact port is +#> defined. This list specifies the port used by the server process as its +#> contact port. While the IANA can not control uses of these ports it +#> does register or list uses of these ports as a convienence to the +#> community. +# +nfsdstatus 1110/tcp +nfsd-keepalive 1110/udp + +ingreslock 1524/tcp +ingreslock 1524/udp +prospero-np 1525/tcp # Prospero non-privileged +prospero-np 1525/udp +datametrics 1645/tcp old-radius # datametrics / old radius entry +datametrics 1645/udp old-radius # datametrics / old radius entry +sa-msg-port 1646/tcp old-radacct # sa-msg-port / old radacct entry +sa-msg-port 1646/udp old-radacct # sa-msg-port / old radacct entry +radius 1812/tcp # Radius +radius 1812/udp # Radius +radacct 1813/tcp # Radius Accounting +radacct 1813/udp # Radius Accounting +nfsd 2049/tcp nfs +nfsd 2049/udp nfs +cvspserver 2401/tcp # CVS client/server operations +cvspserver 2401/udp # CVS client/server operations +mysql 3306/tcp # MySQL +mysql 3306/udp # MySQL +rfe 5002/tcp # Radio Free Ethernet +rfe 5002/udp # Actually uses UDP only +cfengine 5308/tcp # CFengine +cfengine 5308/udp # CFengine +bbs 7000/tcp # BBS service +# +# +# Kerberos (Project Athena/MIT) services +# Note that these are for Kerberos v4, and are unofficial. Sites running +# v4 should uncomment these and comment out the v5 entries above. +# +kerberos4 750/udp kerberos-iv kdc # Kerberos (server) udp +kerberos4 750/tcp kerberos-iv kdc # Kerberos (server) tcp +kerberos_master 751/udp # Kerberos authentication +kerberos_master 751/tcp # Kerberos authentication +passwd_server 752/udp # Kerberos passwd server +krb_prop 754/tcp # Kerberos slave propagation +krbupdate 760/tcp kreg # Kerberos registration +kpasswd 761/tcp kpwd # Kerberos "passwd" +kpop 1109/tcp # Pop with Kerberos +knetd 2053/tcp # Kerberos de-multiplexor +zephyr-srv 2102/udp # Zephyr server +zephyr-clt 2103/udp # Zephyr serv-hm connection +zephyr-hm 2104/udp # Zephyr hostmanager +eklogin 2105/tcp # Kerberos encrypted rlogin +# +# Unofficial but necessary (for NetBSD) services +# +supfilesrv 871/tcp # SUP server +supfiledbg 1127/tcp # SUP debugging +# +# Datagram Delivery Protocol services +# +rtmp 1/ddp # Routing Table Maintenance Protocol +nbp 2/ddp # Name Binding Protocol +echo 4/ddp # AppleTalk Echo Protocol +zip 6/ddp # Zone Information Protocol +# +# Services added for the Debian GNU/Linux distribution +poppassd 106/tcp # Eudora +poppassd 106/udp # Eudora +mailq 174/tcp # Mailer transport queue for Zmailer +mailq 174/tcp # Mailer transport queue for Zmailer +omirr 808/tcp omirrd # online mirror +omirr 808/udp omirrd # online mirror +rmtcfg 1236/tcp # Gracilis Packeten remote config server +xtel 1313/tcp # french minitel +coda_opcons 1355/udp # Coda opcons (Coda fs) +coda_venus 1363/udp # Coda venus (Coda fs) +coda_auth 1357/udp # Coda auth (Coda fs) +coda_udpsrv 1359/udp # Coda udpsrv (Coda fs) +coda_filesrv 1361/udp # Coda filesrv (Coda fs) +codacon 1423/tcp venus.cmu # Coda Console (Coda fs) +coda_aux1 1431/tcp # coda auxiliary service (Coda fs) +coda_aux1 1431/udp # coda auxiliary service (Coda fs) +coda_aux2 1433/tcp # coda auxiliary service (Coda fs) +coda_aux2 1433/udp # coda auxiliary service (Coda fs) +coda_aux3 1435/tcp # coda auxiliary service (Coda fs) +coda_aux3 1435/udp # coda auxiliary service (Coda fs) +cfinger 2003/tcp # GNU Finger +afbackup 2988/tcp # Afbackup system +afbackup 2988/udp # Afbackup system +icp 3130/tcp # Internet Cache Protocol (Squid) +icp 3130/udp # Internet Cache Protocol (Squid) +postgres 5432/tcp # POSTGRES +postgres 5432/udp # POSTGRES +fax 4557/tcp # FAX transmission service (old) +hylafax 4559/tcp # HylaFAX client-server protocol (new) +noclog 5354/tcp # noclogd with TCP (nocol) +noclog 5354/udp # noclogd with UDP (nocol) +hostmon 5355/tcp # hostmon uses TCP (nocol) +hostmon 5355/udp # hostmon uses TCP (nocol) +ircd 6667/tcp # Internet Relay Chat +ircd 6667/udp # Internet Relay Chat +webcache 8080/tcp # WWW caching service +webcache 8080/udp # WWW caching service +tproxy 8081/tcp # Transparent Proxy +tproxy 8081/udp # Transparent Proxy +mandelspawn 9359/udp mandelbrot # network mandelbrot +amanda 10080/udp # amanda backup services +amandaidx 10082/tcp # amanda backup services +amidxtape 10083/tcp # amanda backup services +isdnlog 20011/tcp # isdn logging system +isdnlog 20011/udp # isdn logging system +vboxd 20012/tcp # voice box system +vboxd 20012/udp # voice box system +binkp 24554/tcp # Binkley +binkp 24554/udp # Binkley +asp 27374/tcp # Address Search Protocol +asp 27374/udp # Address Search Protocol +tfido 60177/tcp # Ifmail +tfido 60177/udp # Ifmail +fido 60179/tcp # Ifmail +fido 60179/udp # Ifmail + +# Local services + diff --git a/system/skeleton/etc/shadow b/system/skeleton/etc/shadow new file mode 100644 index 00000000..37de977c --- /dev/null +++ b/system/skeleton/etc/shadow @@ -0,0 +1,9 @@ +root:::::::: +daemon:*::::::: +bin:*::::::: +sys:*::::::: +sync:*::::::: +mail:*::::::: +www-data:*::::::: +operator:*::::::: +nobody:*::::::: diff --git a/system/skeleton/media/.empty b/system/skeleton/media/.empty new file mode 100644 index 00000000..e69de29b diff --git a/system/skeleton/mnt/.empty b/system/skeleton/mnt/.empty new file mode 100644 index 00000000..e69de29b diff --git a/system/skeleton/opt/.empty b/system/skeleton/opt/.empty new file mode 100644 index 00000000..e69de29b diff --git a/system/skeleton/proc/.empty b/system/skeleton/proc/.empty new file mode 100644 index 00000000..e69de29b diff --git a/system/skeleton/root/.empty b/system/skeleton/root/.empty new file mode 100644 index 00000000..e69de29b diff --git a/system/skeleton/run/lock/.empty b/system/skeleton/run/lock/.empty new file mode 100644 index 00000000..e69de29b diff --git a/system/skeleton/sys/.empty b/system/skeleton/sys/.empty new file mode 100644 index 00000000..e69de29b diff --git a/system/skeleton/tmp/.empty b/system/skeleton/tmp/.empty new file mode 100644 index 00000000..e69de29b diff --git a/system/skeleton/usr/bin/.empty b/system/skeleton/usr/bin/.empty new file mode 100644 index 00000000..e69de29b diff --git a/system/skeleton/usr/lib/.empty b/system/skeleton/usr/lib/.empty new file mode 100644 index 00000000..e69de29b diff --git a/system/skeleton/usr/sbin/.empty b/system/skeleton/usr/sbin/.empty new file mode 100644 index 00000000..e69de29b diff --git a/system/system.mk b/system/system.mk new file mode 100644 index 00000000..8fe2c138 --- /dev/null +++ b/system/system.mk @@ -0,0 +1,101 @@ +################################################################################ +# +# system-related variables and macros +# +################################################################################ + +# This file exists to define variables and macros that pertain to the system +# settings, like rsyncing a directory for skeletons, or the /lib vs. /usr/lib +# symlink handling. +# +# Some variables may be used as conditions in Makefile code, so they must be +# defined properly before they are used; this file is included early, before +# any package is. + +# - SYSTEM_USR_SYMLINKS_OR_DIRS +# create /lib, /bin and /sbin, either as directories or as symlinks to +# their /usr conterparts +# +# - SYSTEM_RSYNC +# rsync $(1) to $(2), with proper exclusions and rights +# +# - SYSTEM_LIB_SYMLINK +# create the appropriate /lib{32,64} symlinks +# +# - SYSTEM_GETTY_PORT +# - SYSTEM_GETTY_BAUDRATE +# - SYSTEM_GETTY_TERM +# - SYSTEM_GETTY_OPTIONS +# the un-quoted getty setting +# +# - SYSTEM_REMOUNT_ROOT_INITTAB +# set inittab to remount root read-write or read-only +# + +# This function handles the merged or non-merged /usr cases +ifeq ($(BR2_ROOTFS_MERGED_USR),y) +define SYSTEM_USR_SYMLINKS_OR_DIRS + ln -snf usr/bin $(1)/bin + ln -snf usr/sbin $(1)/sbin + ln -snf usr/lib $(1)/lib +endef +else +define SYSTEM_USR_SYMLINKS_OR_DIRS + $(INSTALL) -d -m 0755 $(1)/bin + $(INSTALL) -d -m 0755 $(1)/sbin + $(INSTALL) -d -m 0755 $(1)/lib +endef +endif + +# This function rsyncs the skeleton directory in $(1) to the destination +# in $(2), which should be either $(TARTGET_DIR) or $(STAGING_DIR) +define SYSTEM_RSYNC + rsync -a --ignore-times $(RSYNC_VCS_EXCLUSIONS) \ + --chmod=u=rwX,go=rX --exclude .empty --exclude '*~' \ + $(1)/ $(2)/ +endef + +# Make a symlink lib32->lib or lib64->lib as appropriate. +# MIPS64/n32 requires lib32 even though it's a 64-bit arch. However, since gcc +# 5.1.0 internal compiler paths in sysroot are relative to lib64, so we must +# create both. +# $(1): base dir (either staging or target) +ifeq ($(BR2_MIPS_NABI32),y) +define SYSTEM_LIB_SYMLINK + ln -snf lib $(1)/lib64 + ln -snf lib $(1)/usr/lib64 + ln -snf lib $(1)/lib32 + ln -snf lib $(1)/usr/lib32 +endef +else ifeq ($(BR2_ARCH_IS_64),y) +define SYSTEM_LIB_SYMLINK + ln -snf lib $(1)/lib64 + ln -snf lib $(1)/usr/lib64 +endef +else +define SYSTEM_LIB_SYMLINK + ln -snf lib $(1)/lib32 + ln -snf lib $(1)/usr/lib32 +endef +endif + +SYSTEM_GETTY_PORT = $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)) +SYSTEM_GETTY_BAUDRATE = $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_BAUDRATE)) +SYSTEM_GETTY_TERM = $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_TERM)) +SYSTEM_GETTY_OPTIONS = $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_OPTIONS)) + +ifeq ($(BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW),y) +# Find commented line, if any, and remove leading '#'s +define SYSTEM_REMOUNT_ROOT_INITTAB + $(SED) '/^#.*-o remount,rw \/$$/s~^#\+~~' $(TARGET_DIR)/etc/inittab +endef +else +# Find uncommented line, if any, and add a leading '#' +define SYSTEM_REMOUNT_ROOT_INITTAB + $(SED) '/^[^#].*-o remount,rw \/$$/s~^~#~' $(TARGET_DIR)/etc/inittab +endef +endif + +ifeq ($(BR_BUILDING)$(BR2_SYSTEM_DEFAULT_PATH),y"") +$(error BR2_SYSTEM_DEFAULT_PATH can't be empty) +endif diff --git a/toolchain/Config.in b/toolchain/Config.in new file mode 100644 index 00000000..6e91ab75 --- /dev/null +++ b/toolchain/Config.in @@ -0,0 +1,961 @@ +menu "Toolchain" + +# Invisible option that makes sure the toolchain package always gets +# built +config BR2_TOOLCHAIN + bool + default y + +# Should be selected for glibc or eglibc +config BR2_TOOLCHAIN_USES_GLIBC + bool + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_TOOLCHAIN_HAS_FULL_GETTEXT + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_HAS_UCONTEXT + select BR2_TOOLCHAIN_SUPPORTS_PIE + +config BR2_TOOLCHAIN_USES_UCLIBC + bool + # ucontext is only available for a subset of the supported + # architectures + select BR2_TOOLCHAIN_HAS_UCONTEXT if BR2_ARM_CPU_HAS_ARM || BR2_i386 \ + || BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el \ + || BR2_sparc || BR2_x86_64 + select BR2_TOOLCHAIN_SUPPORTS_PIE if !BR2_m68k && !BR2_microblaze && !BR2_STATIC_LIBS + +config BR2_TOOLCHAIN_USES_MUSL + bool + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_SUPPORTS_PIE if !BR2_STATIC_LIBS + +choice + prompt "Toolchain type" + help + Select whether to use the toolchain provided by buildroot + or an external toolchain. + + Some vendors provide toolchains in binary form, some in + source form. + +config BR2_TOOLCHAIN_BUILDROOT + bool "Buildroot toolchain" + depends on BR2_ARCH_HAS_TOOLCHAIN_BUILDROOT + +config BR2_TOOLCHAIN_EXTERNAL + bool "External toolchain" + help + Select if you want to use an existing cross-compiling + toolchain. Buildroot can either download automatically a + toolchain, or use an already installed toolchain. + +endchoice + +source "toolchain/toolchain-buildroot/Config.in" +source "toolchain/toolchain-external/Config.in" + +# Generic toolchain options + +# we want gdb config in the middle of both source and external +# toolchains, but mconf won't let us source the same file twice, +# so put it here instead +source "package/gdb/Config.in.host" + +comment "Toolchain Generic Options" + +# https://sourceware.org/bugzilla/show_bug.cgi?id=30730 +# Affect toolchains built with binutils 2.40, still not fixed. +config BR2_TOOLCHAIN_HAS_BINUTILS_BUG_30730 + bool + default y if BR2_m68k_cf + +# Atomic types can be: +# - never lock-free +# - sometimes lock-free +# - always lock-free +# see https://en.cppreference.com/w/c/atomic/ATOMIC_LOCK_FREE_consts +# +# On most architectures, gcc provides "always lock-free" atomic types, +# but a few architectures are limited to "sometimes lock-free" +# types. This hidden option allows to know if the architecture +# provides "always lock-free" atomic types. +config BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + bool + default y + depends on !BR2_nios2 + depends on !BR2_ARM_CPU_ARMV4 + depends on !BR2_ARM_CPU_ARMV5 + depends on !BR2_sparc_v8 + depends on !BR2_m68k_cf5208 + depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT) + +# GCC uses thunk functions to adjust the 'this' pointer when calling +# C++ member functions in classes derived with multiple inheritance. +# Generation of thunk functions requires support from the compiler +# back end. In the absence of that support target-independent code +# in the C++ front end is used to generate thunk functions, but it +# does not support vararg functions. +# or1k will support it in the gcc mainline starting with gcc-9. +config BR2_TOOLCHAIN_SUPPORTS_VARIADIC_MI_THUNK + bool + default y + depends on !BR2_or1k + depends on !BR2_xtensa + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43744. This bug +# reappeared on gcc 9.x and is still not fixed on gcc 11.x +config BR2_TOOLCHAIN_HAS_GCC_BUG_43744 + bool + default y if !BR2_TOOLCHAIN_GCC_AT_LEAST_8 + default y if BR2_TOOLCHAIN_GCC_AT_LEAST_9 + depends on BR2_sh + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63261. This bug no +# longer exists in gcc 8.x. +config BR2_TOOLCHAIN_HAS_GCC_BUG_63261 + bool + default y if BR2_microblaze + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_8 + +# Prior to gcc 7.x, exception_ptr, nested_exception and future from +# libstdc++ would only be provided on architectures that support +# always lock-free atomic ints. See +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64735. This issue has +# been removed in GCC 7.x, where exception propagation is now +# supported without lock-free atomic int. +config BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + bool + default y if !BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS && \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68485. This bug still +# exists in gcc 12.x +config BR2_TOOLCHAIN_HAS_GCC_BUG_68485 + bool + default y if BR2_microblaze + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81426 +config BR2_TOOLCHAIN_HAS_GCC_BUG_81426 + bool + default y if BR2_sh + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83143 +# Error: invalid operands (*UND* and .text sections) for `-' on sh4. +# This bug no longer exists in gcc 10.x but reappeared on gcc 11.x and +# it still not been fixed yet. +config BR2_TOOLCHAIN_HAS_GCC_BUG_83143 + bool + default y if !BR2_TOOLCHAIN_GCC_AT_LEAST_10 + default y if BR2_TOOLCHAIN_GCC_AT_LEAST_11 + depends on BR2_sh + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85180. This bug no +# longer exists in gcc 8.x. +config BR2_TOOLCHAIN_HAS_GCC_BUG_85180 + bool + default y if BR2_microblaze + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_8 + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85862 +# An infinite loop exists in the find_base_term() logic of 6.x +# on microblaze. http://autobuild.buildroot.net/results/158e8ebb39713e1b436a5cc1a1916f46c30694df/ +config BR2_TOOLCHAIN_HAS_GCC_BUG_85862 + bool + default y if BR2_microblaze + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7 + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90620 +# ICE: in do_output_reload, at reload1.c:7978 on microblaze. +# This bug no longer exists in gcc 10.x but reappeared in gcc 11.x +config BR2_TOOLCHAIN_HAS_GCC_BUG_90620 + bool + default y if BR2_microblaze + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_10 \ + || BR2_TOOLCHAIN_GCC_AT_LEAST_11 + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93847 +# ICE: compiler error: Segmentation fault on Nios II. This bug +# no longer exists in gcc 9.x. +config BR2_TOOLCHAIN_HAS_GCC_BUG_93847 + bool + default y if BR2_nios2 && !BR2_TOOLCHAIN_GCC_AT_LEAST_9 + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99410 +# Error: branch offset out of range on Nios II. This bug +# no longer exists in gcc 8.x but reappeared on gcc 9.x and still exists +# on gcc 12.x +config BR2_TOOLCHAIN_HAS_GCC_BUG_99410 + bool + default y if !BR2_TOOLCHAIN_GCC_AT_LEAST_8 + default y if BR2_TOOLCHAIN_GCC_AT_LEAST_9 + depends on BR2_nios2 + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101737 +# ICE: SH4 -Os causes internal compiler error. This bug +# still exists in gcc = 11.1.0 +config BR2_TOOLCHAIN_HAS_GCC_BUG_101737 + bool + default y if BR2_sh + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101915 +# ICE: in extract_insn, at recog.c:2294 on microblaze. +# This bug still exists in gcc = 12.1.0 +config BR2_TOOLCHAIN_HAS_GCC_BUG_101915 + bool + default y if BR2_microblaze + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101916 +# ICE: on SH4: Segmentation fault signal terminated program cc1. +# This bug still exists in gcc = 11.1.0 +config BR2_TOOLCHAIN_HAS_GCC_BUG_101916 + bool + default y if BR2_sh4 + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101952 +# ICE: on SH4: unaligned opcodes detected in executable segment. +# This bug still exists in gcc = 11.1.0 +config BR2_TOOLCHAIN_HAS_GCC_BUG_101952 + bool + default y if BR2_sh4 + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104028 +# ICE: on M68K: Error: value -16034 out of range +# This bug still exists in gcc = 11.1.0 +config BR2_TOOLCHAIN_HAS_GCC_BUG_104028 + bool + default y if BR2_m68k + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107728 +# https://sourceware.org/bugzilla/show_bug.cgi?id=29621 +config BR2_TOOLCHAIN_HAS_GCC_BUG_107728 + bool + default y if BR2_microblazebe || BR2_microblazeel \ + || BR2_mips || BR2_mipsel \ + || BR2_nios2 \ + || BR2_or1k \ + || BR2_sh + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_OPTIMIZE_0 + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110934 +# ICE: on M68K: in change_address_1, at emit-rtl.cc:2287 +# This bug exists in gcc = 12.3.0 and gcc = 13.2.0 +config BR2_TOOLCHAIN_HAS_GCC_BUG_110934 + bool + default y if BR2_m68k + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111001 +# ICE: on SH4: during RTL pass: sh_treg_combine2 +# This bug exist in gcc = 13.2.0 +config BR2_TOOLCHAIN_HAS_GCC_BUG_111001 + bool + default y if BR2_sh + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_13 + depends on BR2_OPTIMIZE_1 || \ + BR2_OPTIMIZE_2 || \ + BR2_OPTIMIZE_3 + +config BR2_TOOLCHAIN_HAS_NATIVE_RPC + bool + +config BR2_USE_WCHAR + bool + +config BR2_ENABLE_LOCALE + bool + +config BR2_INSTALL_LIBSTDCPP + bool + +config BR2_TOOLCHAIN_HAS_DLANG + bool + +config BR2_TOOLCHAIN_HAS_FORTRAN + bool + +config BR2_TOOLCHAIN_HAS_THREADS + bool + +config BR2_TOOLCHAIN_HAS_THREADS_DEBUG + bool + +config BR2_TOOLCHAIN_HAS_THREADS_NPTL + bool + +config BR2_TOOLCHAIN_HAS_SSP + bool + +config BR2_TOOLCHAIN_HAS_SSP_STRONG + bool + default y if BR2_TOOLCHAIN_HAS_SSP && BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +# This boolean is true if the toolchain provides a full featured +# ucontext implementation with ucontext_t and {get,make,set}context +config BR2_TOOLCHAIN_HAS_UCONTEXT + bool + +config BR2_TOOLCHAIN_HAS_OPENMP + bool + +config BR2_TOOLCHAIN_SUPPORTS_PIE + bool + +config BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY + bool "Copy gconv libraries" + depends on BR2_TOOLCHAIN_USES_GLIBC + help + The gconv libraries are used to convert between different + character sets (charsets). + + Say 'y' if you need to store and/or display different + charsets. + +config BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_LIST + string "Gconv libraries to copy" + depends on BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY + help + Set to the list of gconv libraries to copy. + Leave empty to copy all gconv libraries. + + Specify only the basename of the libraries, leave + out the .so extension. Eg.: + IBM850 ISO8859-15 UNICODE + + Note: the full set of gconv libs are ~8MiB (on ARM). + +config BR2_TOOLCHAIN_EXTRA_LIBS + string "Extra toolchain libraries to be copied to target" + default BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS if BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS != "" # legacy + depends on !BR2_STATIC_LIBS + help + If your toolchain provides extra libraries that need to be + copied to the target filesystem, enter them here, separated + by spaces. The library should not include a suffix or any + type of pre/post wildcard. + + Examples where this can be useful is for adding debug + libraries to the target like the GCC libsanitizer. + e.g. "libasan liblsan libtsan libubsan" + +# This boolean is true if the toolchain provides a built-in full +# featured gettext implementation (glibc), and false if only a stub +# gettext implementation is provided (uclibc, musl) +config BR2_TOOLCHAIN_HAS_FULL_GETTEXT + bool + +config BR2_TARGET_OPTIMIZATION + string "Target Optimizations" + default "" + help + Optimizations to use when building for the target host. + NOTE: gcc optimization level is defined in build options. + +config BR2_TARGET_LDFLAGS + string "Target linker options" + help + Extra options to pass to the linker when building for the + target. + + Note that options with a '$' sign (eg. + -Wl,-rpath='$ORIGIN/../lib') are not supported. + +# Options for packages to depend on, if they require at least a +# specific version of the kernel headers. +# Toolchains should choose the adequate option (ie. the highest +# version, not all of them). +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 + bool + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5 + +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 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_16 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_16 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_18 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_19 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_18 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_0 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_19 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_1 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_0 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_2 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_1 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_3 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_2 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_4 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_3 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_5 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_4 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_6 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_5 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_7 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_6 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_8 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_7 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_9 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_8 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_10 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_9 + select BR2_TOOLCHAIN_HEADERS_LATEST + +# This should be selected by the latest version, above, to indicate that +# Buildroot does not know of more recent headers than the ones selected. +# This allows using toolchains with headers more recent than Buildroot +# knows about, while still enforcing strict check for older headers. +config BR2_TOOLCHAIN_HEADERS_LATEST + bool + +# 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 "6.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_10 + default "6.9" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_9 + default "6.8" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_8 + default "6.7" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_7 + default "6.6" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_6 + default "6.5" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_5 + default "6.4" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_4 + default "6.3" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_3 + default "6.2" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_2 + default "6.1" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_1 + default "6.0" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_0 + default "5.19" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_19 + default "5.18" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_18 + default "5.17" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17 + default "5.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_16 + default "5.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + default "5.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14 + default "5.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13 + default "5.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12 + default "5.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11 + default "5.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10 + default "5.9" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9 + default "5.8" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8 + default "5.7" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7 + default "5.6" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6 + default "5.5" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5 + default "5.4" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4 + default "5.3" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3 + default "5.2" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2 + default "5.1" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1 + default "5.0" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 + default "4.20" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20 + default "4.19" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + default "4.18" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18 + default "4.17" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17 + default "4.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16 + default "4.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 + default "4.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 + default "4.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13 + default "4.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 + default "4.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 + default "4.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10 + 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 + default "4.4" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4 + default "4.3" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3 + default "4.2" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2 + default "4.1" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1 + default "4.0" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 + default "3.19" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19 + default "3.18" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 + default "3.17" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 + default "3.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 + default "3.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15 + default "3.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 + default "3.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13 + default "3.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + default "3.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11 + default "3.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 + default "3.9" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 + default "3.8" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8 + default "3.7" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 + default "3.6" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6 + default "3.5" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5 + default "3.4" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 + default "3.3" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3 + default "3.2" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 + default "3.1" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 + default "3.0" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 + default "2.6" + +config BR2_TOOLCHAIN_GCC_AT_LEAST_4_3 + bool + +config BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3 + +config BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 + +config BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 + +config BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 + +config BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + +config BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +config BR2_TOOLCHAIN_GCC_AT_LEAST_5 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_TOOLCHAIN_GCC_AT_LEAST_6 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +config BR2_TOOLCHAIN_GCC_AT_LEAST_7 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_6 + +config BR2_TOOLCHAIN_GCC_AT_LEAST_8 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_7 + +config BR2_TOOLCHAIN_GCC_AT_LEAST_9 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_8 + +config BR2_TOOLCHAIN_GCC_AT_LEAST_10 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_9 + +config BR2_TOOLCHAIN_GCC_AT_LEAST_11 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_10 + +config BR2_TOOLCHAIN_GCC_AT_LEAST_12 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_11 + +config BR2_TOOLCHAIN_GCC_AT_LEAST_13 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + +config BR2_TOOLCHAIN_GCC_AT_LEAST_14 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + +# This order guarantees that the highest version is set, as kconfig +# stops affecting a value on the first matching default. +config BR2_TOOLCHAIN_GCC_AT_LEAST + string + default "14" if BR2_TOOLCHAIN_GCC_AT_LEAST_14 + default "13" if BR2_TOOLCHAIN_GCC_AT_LEAST_13 + default "12" if BR2_TOOLCHAIN_GCC_AT_LEAST_12 + default "11" if BR2_TOOLCHAIN_GCC_AT_LEAST_11 + default "10" if BR2_TOOLCHAIN_GCC_AT_LEAST_10 + default "9" if BR2_TOOLCHAIN_GCC_AT_LEAST_9 + default "8" if BR2_TOOLCHAIN_GCC_AT_LEAST_8 + default "7" if BR2_TOOLCHAIN_GCC_AT_LEAST_7 + default "6" if BR2_TOOLCHAIN_GCC_AT_LEAST_6 + default "5" if BR2_TOOLCHAIN_GCC_AT_LEAST_5 + default "4.9" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + default "4.8" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + default "4.7" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + default "4.6" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 + default "4.5" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 + default "4.4" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 + default "4.3" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_3 + +config BR2_TOOLCHAIN_HAS_MNAN_OPTION + bool + default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_TOOLCHAIN_HAS_SYNC_1 + bool + default y + depends on !BR2_m68k_cf + depends on !BR2_microblaze + depends on !BR2_sparc + depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT) + +config BR2_TOOLCHAIN_HAS_SYNC_2 + bool + default y if BR2_TOOLCHAIN_HAS_SYNC_1 + +config BR2_TOOLCHAIN_HAS_SYNC_4 + bool + default y + depends on !BR2_m68k_cf + depends on !BR2_sparc + depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT) + +# The availability of __sync for 8-byte types on ARM is somewhat +# complicated: +# +# - It appeared in gcc starting with gcc 4.7. +# +# - On ARMv7, there is no problem, it can be directly implemented in +# userspace. +# +# - On < ARMv7, it requires help from the kernel. Unfortunately, the +# libgcc code implementing 8-byte __sync with the help from the +# kernel calls __write() when a failure occurs, which is a function +# internal to glibc, not available in uClibc and musl. This means +# that the 8-byte __sync operations are not available on < ARMv7 +# with uClibc and musl. This problem was fixed as part of gcc +# PR68059, which was backported to the gcc 5 branch, but isn't yet +# part of any gcc 5.x release. +# +config BR2_TOOLCHAIN_ARM_HAS_SYNC_8 + bool + default y + depends on BR2_arm || BR2_armeb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_ARM_CPU_ARMV7A + +# 8-byte intrinsics available on most x86 CPUs, except a few old ones +config BR2_TOOLCHAIN_X86_HAS_SYNC_8 + bool + default y + depends on BR2_i386 + depends on !BR2_x86_i486 + depends on !BR2_x86_c3 + depends on !BR2_x86_winchip_c6 + depends on !BR2_x86_winchip2 + +# 8-byte intrinsics available: +# - On all 64 bits architecture +# - On a certain combinations of ARM platforms +# - On certain x86 32 bits CPUs +config BR2_TOOLCHAIN_HAS_SYNC_8 + bool + default y if BR2_ARCH_IS_64 + default y if BR2_TOOLCHAIN_ARM_HAS_SYNC_8 + default y if BR2_TOOLCHAIN_X86_HAS_SYNC_8 + +# libatomic is available since gcc 4.8, when thread support is enabled. +# However, the gcc logic in libatomic/configure.tgt does not recognize +# "uclinux" as a valid OS part of the target tuple, and therefore it +# does not build libatomic. The "uclinux" part of the tuple is used by +# Buildroot when BR2_BINFMT_FLAT=y. This broken logic has only been +# fixed for arm since gcc 10.1.0. +config BR2_TOOLCHAIN_HAS_LIBATOMIC + bool + default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_BINFMT_ELF || \ + (BR2_BINFMT_FLAT && BR2_arm && \ + BR2_TOOLCHAIN_GCC_AT_LEAST_10) + +# __atomic intrinsics are available: +# - with gcc 4.8, either through built-ins or libatomic, on all +# architectures. Since we don't want to separate the cases where +# libatomic is needed vs. not needed, we simplify thing and only +# support situations where libatomic is available, even if on some +# architectures libatomic is not strictly needed as all __atomic +# intrinsics might be built-in. The only case where libatomic is +# missing entirely is when the toolchain does not have support for +# threads. However, a package that does not need threads but still +# uses atomics is quite a corner case, which does not warrant the +# added complexity. +# - with gcc 4.7, libatomic did not exist, so only built-ins are +# available. This means that __atomic can only be used in a subset +# of the architectures +config BR2_TOOLCHAIN_HAS_ATOMIC + bool + default y if BR2_TOOLCHAIN_HAS_LIBATOMIC + default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_arm + default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_armeb + default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_xtensa + default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_ARCH_IS_64 + +# - libquadmath is not needed/available on all architectures (but gcc +# correctly handles this already). +# - At least, libquadmath is available on: +# - i*86 +# - x86_64 +# - PowerPC with vector scalar (VSX) instruction set +# - When available, libquadmath requires wchar support. +config BR2_TOOLCHAIN_HAS_LIBQUADMATH + bool + default y if BR2_i386 || BR2_x86_64 + default y if BR2_POWERPC_CPU_HAS_VSX + +comment "Bare metal toolchain" + +config BR2_TOOLCHAIN_BARE_METAL_BUILDROOT + bool "Build a bare metal toolchain" + select BR2_PACKAGE_NEWLIB_BARE_METAL + help + Select if you need a bare-metal toolchain for building + platform specific firmware images. + +source "toolchain/toolchain-bare-metal-buildroot/Config.in" + +endmenu diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk new file mode 100644 index 00000000..839ee278 --- /dev/null +++ b/toolchain/helpers.mk @@ -0,0 +1,556 @@ +# This Makefile fragment declares toolchain related helper functions. + +# The copy_toolchain_lib_root function copies a toolchain library and +# its symbolic links from the sysroot directory to the target +# directory. Note that this function is used both by the external +# toolchain logic, and the glibc package, so care must be taken when +# changing this function. +# +# $1: library name pattern (can include glob wildcards) +# +copy_toolchain_lib_root = \ + LIBPATTERN="$(strip $1)"; \ + LIBPATHS=`find $(STAGING_DIR)/ -name "$${LIBPATTERN}" 2>/dev/null` ; \ + for LIBPATH in $${LIBPATHS} ; do \ + while true ; do \ + LIBNAME=`basename $${LIBPATH}`; \ + DESTDIR=`echo $${LIBPATH} | sed "s,^$(STAGING_DIR)/,," | xargs dirname` ; \ + mkdir -p $(TARGET_DIR)/$${DESTDIR}; \ + rm -fr $(TARGET_DIR)/$${DESTDIR}/$${LIBNAME}; \ + if test -h $${LIBPATH} ; then \ + cp -d $${LIBPATH} $(TARGET_DIR)/$${DESTDIR}/$${LIBNAME}; \ + OLD_LIBPATH="$${LIBPATH}"; \ + LIBPATH="`readlink -f $${LIBPATH}`"; \ + if [ "$${LIBPATH}" = "" ]; then \ + echo "LIBPATH empty after trying to resolve symlink $${OLD_LIBPATH}" 1>&2; \ + exit 1; \ + fi; \ + elif test -f $${LIBPATH}; then \ + $(INSTALL) -D -m0755 $${LIBPATH} $(TARGET_DIR)/$${DESTDIR}/$${LIBNAME}; \ + break ; \ + else \ + exit -1; \ + fi; \ + done; \ + done + +# +# Copy the full external toolchain sysroot directory to the staging +# dir. The operation of this function is rendered a little bit +# complicated by the support for multilib toolchains. +# +# We start by copying etc, 'lib', sbin, usr and usr/'lib' from the +# sysroot of the selected architecture variant (as pointed to by +# ARCH_SYSROOT_DIR). This allows to import into the staging directory +# the C library and companion libraries for the correct architecture +# variant. 'lib' may not be literally 'lib' but could be something else, +# e.g. lib32-fp (as determined by ARCH_LIB_DIR) and we only want to copy +# that lib directory and no other. When copying usr, we therefore need +# to be extra careful not to include usr/lib* but we _do_ want to +# include usr/libexec. +# We are selective in the directories we copy since other directories +# might exist for other architecture variants (on Codesourcery +# toolchain, the sysroot for the default architecture variant contains +# the armv4t and thumb2 subdirectories, which are the sysroot for the +# corresponding architecture variants), and we don't want to import +# them. +# +# If ARCH_LIB_DIR is not a singular directory component, e.g. +# 'lib32/octeon2', then symbolic links in ARCH_LIB_DIR and +# usr/ARCH_LIB_DIR may be broken because Buildroot will flatten the +# directory structure (e.g. lib32/octeon2/foo is actually stored in +# lib/foo). This is only relevant for links that contain one or more ../ +# components, as links to the current directory are always fine. +# We need to fix the broken links by removing the right amount of ../ +# dots from the link destination. +# Once the link destination is valid again, it can be simplified to +# remove the dependency on intermediate directory symlinks. +# +# It is possible that ARCH_LIB_DIR does not contain the dynamic loader +# (ld*.so or similar) because it (or the main symlink to it) normally +# resides in /lib while ARCH_LIB_DIR may be something else (e.g. lib64, +# lib/, ...). Therefore, copy the dynamic loader separately. +# +# Then, if the selected architecture variant is not the default one +# (i.e, if SYSROOT_DIR != ARCH_SYSROOT_DIR), then we : +# +# * Import the header files from the default architecture +# variant. Header files are typically shared between the sysroots +# for the different architecture variants. If we use the +# non-default one, header files were not copied by the previous +# step, so we copy them here from the sysroot of the default +# architecture variant. +# +# * Create a symbolic link that matches the name of the subdirectory +# for the architecture variant in the original sysroot. This is +# required as the compiler will by default look in +# sysroot_dir/arch_variant/ for libraries and headers, when the +# non-default architecture variant is used. Without this, the +# compiler fails to find libraries and headers. +# +# Some toolchains (i.e Linaro binary toolchains) store support +# libraries (libstdc++, libgcc_s) outside of the sysroot, so we simply +# copy all the libraries from the "support lib directory" into our +# sysroot. +# +# Note that the 'locale' directories are not copied. They are huge +# (400+MB) in CodeSourcery toolchains, and they are not really useful. +# +# $1: main sysroot directory of the toolchain +# $2: arch specific sysroot directory of the toolchain +# $3: arch specific subdirectory in the sysroot +# $4: directory of libraries ('lib', 'lib32' or 'lib64') +# $5: support lib directories (for toolchains storing libgcc_s, +# libstdc++ and other gcc support libraries outside of the +# sysroot) +copy_toolchain_sysroot = \ + SYSROOT_DIR="$(strip $1)"; \ + ARCH_SYSROOT_DIR="$(strip $2)"; \ + ARCH_SUBDIR="$(strip $3)"; \ + ARCH_LIB_DIR="$(strip $4)" ; \ + SUPPORT_LIB_DIR="$(strip $5)" ; \ + for i in etc $${ARCH_LIB_DIR} sbin usr usr/$${ARCH_LIB_DIR}; do \ + if [ ! -d $${ARCH_SYSROOT_DIR}/$$i ] ; then \ + continue ; \ + fi ; \ + if [ "$$i" = "usr" ]; then \ + rsync -au --chmod=u=rwX,go=rX --exclude 'locale/' \ + --include '/libexec*/' --exclude '/lib*/' \ + $${ARCH_SYSROOT_DIR}/$$i/ $(STAGING_DIR)/$$i/ ; \ + else \ + rsync -au --chmod=u=rwX,go=rX --exclude 'locale/' \ + $${ARCH_SYSROOT_DIR}/$$i/ $(STAGING_DIR)/$$i/ ; \ + fi ; \ + done ; \ + for link in $$(find $(STAGING_DIR) -type l); do \ + target=$$(readlink $${link}) ; \ + if [ "$${target}" == "$${target$(SHARP_SIGN)/}" ] ; then \ + continue ; \ + fi ; \ + relpath="$(call relpath_prefix,$${target$(SHARP_SIGN)/})" ; \ + echo "Fixing symlink $${link} from $${target} to $${relpath}$${target$(SHARP_SIGN)/}" ; \ + ln -sf $${relpath}$${target$(SHARP_SIGN)/} $${link} ; \ + done ; \ + relpath="$(call relpath_prefix,$${ARCH_LIB_DIR})" ; \ + if [ "$${relpath}" != "" ]; then \ + for i in $$(find -H $(STAGING_DIR)/$${ARCH_LIB_DIR} $(STAGING_DIR)/usr/$${ARCH_LIB_DIR} -type l -xtype l); do \ + LINKTARGET=`readlink $$i` ; \ + NEWLINKTARGET=$${LINKTARGET\#$$relpath} ; \ + ln -sf $${NEWLINKTARGET} $$i ; \ + $(call simplify_symlink,$$i,$(STAGING_DIR)) ; \ + done ; \ + fi ; \ + if [[ ! $$(find $(STAGING_DIR)/lib -name 'ld*.so.*' -print -quit) ]]; then \ + find $${ARCH_SYSROOT_DIR}/lib -name 'ld*.so.*' -print0 | xargs -0 -I % cp % $(STAGING_DIR)/lib/; \ + fi ; \ + if [ `readlink -f $${SYSROOT_DIR}` != `readlink -f $${ARCH_SYSROOT_DIR}` ] ; then \ + if [ ! -d $${ARCH_SYSROOT_DIR}/usr/include ] ; then \ + cp -a $${SYSROOT_DIR}/usr/include $(STAGING_DIR)/usr ; \ + fi ; \ + mkdir -p `dirname $(STAGING_DIR)/$${ARCH_SUBDIR}` ; \ + relpath="$(call relpath_prefix,$${ARCH_SUBDIR})./" ; \ + ln -s $${relpath} $(STAGING_DIR)/$${ARCH_SUBDIR} ; \ + echo "Symlinking $(STAGING_DIR)/$${ARCH_SUBDIR} -> $${relpath}" ; \ + fi ; \ + if test -n "$${SUPPORT_LIB_DIR}" ; then \ + cp -a $${SUPPORT_LIB_DIR}/* $(STAGING_DIR)/lib/ ; \ + fi ; \ + find $(STAGING_DIR) -type d -print0 | xargs -0 chmod 755 + +# +# Check the specified kernel headers version actually matches the +# version in the toolchain. +# +# $1: build directory +# $2: sysroot directory +# $3: kernel version string, in the form: X.Y +# $4: test to do for the latest kernel version, 'strict' or 'loose' +# always 'strict' if this is not the latest version. +# +check_kernel_headers_version = \ + if ! support/scripts/check-kernel-headers.sh $(1) $(2) $(3) \ + $(if $(BR2_TOOLCHAIN_HEADERS_LATEST),$(4),strict); \ + then \ + exit 1; \ + fi + +# +# Check the specific gcc version actually matches the version in the +# toolchain +# +# $1: path to gcc +# $2: expected gcc version +# +check_gcc_version = \ + expected_version="$(strip $2)" ; \ + if [ -z "$${expected_version}" ]; then \ + exit 0 ; \ + fi; \ + real_version=`$(1) -dumpversion` ; \ + if [[ ! "$${real_version}." =~ ^$${expected_version}\. ]] ; then \ + printf "Incorrect selection of gcc version: expected %s.x, got %s\n" \ + "$${expected_version}" "$${real_version}" ; \ + exit 1 ; \ + fi + +# +# Check the availability of a particular glibc feature. This function +# is used to check toolchain options that are always supported by +# glibc, so we simply check that the corresponding option is properly +# enabled. +# +# $1: Buildroot option name +# $2: feature description +# +check_glibc_feature = \ + if [ "$($(1))" != "y" ] ; then \ + echo "$(2) available in C library, please enable $(1)" ; \ + exit 1 ; \ + fi + +# +# Check the availability of RPC support in a glibc toolchain +# +# $1: sysroot directory +# +check_glibc_rpc_feature = \ + IS_IN_LIBC=`test -f $(1)/usr/include/rpc/rpc.h && echo y` ; \ + if [ "$(BR2_TOOLCHAIN_HAS_NATIVE_RPC)" != "y" -a "$${IS_IN_LIBC}" = "y" ] ; then \ + echo "RPC support available in C library, please enable BR2_TOOLCHAIN_EXTERNAL_INET_RPC" ; \ + exit 1 ; \ + fi ; \ + if [ "$(BR2_TOOLCHAIN_HAS_NATIVE_RPC)" = "y" -a "$${IS_IN_LIBC}" != "y" ] ; then \ + echo "RPC support not available in C library, please disable BR2_TOOLCHAIN_EXTERNAL_INET_RPC" ; \ + exit 1 ; \ + fi + +# +# Check the correctness of a glibc external toolchain configuration. +# 1. Check that the C library selected in Buildroot matches the one +# of the external toolchain +# 2. Check that all the C library-related features are enabled in the +# config, since glibc always supports all of them +# +# $1: sysroot directory +# +check_glibc = \ + SYSROOT_DIR="$(strip $1)"; \ + if test `find -L $${SYSROOT_DIR}/ -maxdepth 2 -name 'ld-linux*.so.*' -o -name 'ld.so.*' -o -name 'ld64.so.*' | wc -l` -eq 0 ; then \ + echo "Incorrect selection of the C library"; \ + exit -1; \ + fi; \ + $(call check_glibc_feature,BR2_USE_MMU,MMU support) ;\ + $(call check_glibc_rpc_feature,$${SYSROOT_DIR}) + +# +# Check that the selected C library really is musl +# +# $1: cross-gcc path +# $2: cross-readelf path +check_musl = \ + __CROSS_CC=$(strip $1) ; \ + libc_a_path=`$${__CROSS_CC} -print-file-name=libc.a` ; \ + if ! strings $${libc_a_path} | grep -q MUSL_LOCPATH ; then \ + echo "Incorrect selection of the C library" ; \ + exit -1; \ + fi + +# +# Check the conformity of Buildroot configuration with regard to the +# uClibc configuration of the external toolchain, for a particular +# feature. +# +# If 'Buildroot option name' ($2) is empty it means the uClibc option +# is mandatory. +# +# $1: uClibc macro name +# $2: Buildroot option name +# $3: uClibc config file +# $4: feature description +# +check_uclibc_feature = \ + IS_IN_LIBC=`grep -q "\#define $(1) 1" $(3) && echo y` ; \ + if [ -z "$(2)" ] ; then \ + if [ "$${IS_IN_LIBC}" != "y" ] ; then \ + echo "$(4) not available in C library, toolchain unsuitable for Buildroot" ; \ + exit 1 ; \ + fi ; \ + else \ + if [ "$($(2))" != "y" -a "$${IS_IN_LIBC}" = "y" ] ; then \ + echo "$(4) available in C library, please enable $(2)" ; \ + exit 1 ; \ + fi ; \ + if [ "$($(2))" = "y" -a "$${IS_IN_LIBC}" != "y" ] ; then \ + echo "$(4) not available in C library, please disable $(2)" ; \ + exit 1 ; \ + fi ; \ + fi + +# +# Check the correctness of a uclibc external toolchain configuration +# 1. Check that the C library selected in Buildroot matches the one +# of the external toolchain +# 2. Check that the features enabled in the Buildroot configuration +# match the features available in the uClibc of the external +# toolchain +# +# $1: sysroot directory +# +check_uclibc = \ + SYSROOT_DIR="$(strip $1)"; \ + if ! test -f $${SYSROOT_DIR}/usr/include/bits/uClibc_config.h ; then \ + echo "Incorrect selection of the C library"; \ + exit -1; \ + fi; \ + UCLIBC_CONFIG_FILE=$${SYSROOT_DIR}/usr/include/bits/uClibc_config.h ; \ + $(call check_uclibc_feature,__ARCH_USE_MMU__,BR2_USE_MMU,$${UCLIBC_CONFIG_FILE},MMU support) ;\ + $(call check_uclibc_feature,__UCLIBC_HAS_LFS__,,$${UCLIBC_CONFIG_FILE},Large file support) ;\ + $(call check_uclibc_feature,__UCLIBC_HAS_IPV6__,,$${UCLIBC_CONFIG_FILE},IPv6 support) ;\ + $(call check_uclibc_feature,__UCLIBC_HAS_RPC__,BR2_TOOLCHAIN_HAS_NATIVE_RPC,$${UCLIBC_CONFIG_FILE},RPC support) ;\ + $(call check_uclibc_feature,__UCLIBC_HAS_XLOCALE__,BR2_ENABLE_LOCALE,$${UCLIBC_CONFIG_FILE},Locale support) ;\ + $(call check_uclibc_feature,__UCLIBC_HAS_WCHAR__,BR2_USE_WCHAR,$${UCLIBC_CONFIG_FILE},Wide char support) ;\ + $(call check_uclibc_feature,__UCLIBC_HAS_THREADS__,BR2_TOOLCHAIN_HAS_THREADS,$${UCLIBC_CONFIG_FILE},Thread support) ;\ + $(call check_uclibc_feature,__PTHREADS_DEBUG_SUPPORT__,BR2_TOOLCHAIN_HAS_THREADS_DEBUG,$${UCLIBC_CONFIG_FILE},Thread debugging support) ;\ + $(call check_uclibc_feature,__UCLIBC_HAS_THREADS_NATIVE__,BR2_TOOLCHAIN_HAS_THREADS_NPTL,$${UCLIBC_CONFIG_FILE},NPTL thread support) + +# +# Check that the Buildroot configuration of the ABI matches the +# configuration of the external toolchain. +# +# $1: cross-gcc path +# $2: cross-readelf path +# +check_arm_abi = \ + __CROSS_CC=$(strip $1) ; \ + EXT_TOOLCHAIN_TARGET=`LANG=C $${__CROSS_CC} -v 2>&1 | grep ^Target | cut -f2 -d ' '` ; \ + if ! echo $${EXT_TOOLCHAIN_TARGET} | grep -qE 'eabi(hf)?$$' ; then \ + echo "External toolchain uses the unsuported OABI" ; \ + exit 1 ; \ + fi ; \ + if ! echo 'int main(void) {}' | $${__CROSS_CC} -x c -o $(BUILD_DIR)/.br-toolchain-test.tmp - ; then \ + rm -f $(BUILD_DIR)/.br-toolchain-test.tmp*; \ + abistr_$(BR2_ARM_EABI)='EABI'; \ + abistr_$(BR2_ARM_EABIHF)='EABIhf'; \ + echo "Incorrect ABI setting: $${abistr_y} selected, but toolchain is incompatible"; \ + exit 1 ; \ + fi ; \ + rm -f $(BUILD_DIR)/.br-toolchain-test.tmp* + +# +# Check that the external toolchain supports C++ +# +# $1: cross-g++ path +# +check_cplusplus = \ + __CROSS_CXX=$(strip $1) ; \ + __HAS_CXX=`$${__CROSS_CXX} -v > /dev/null 2>&1 && echo y`; \ + if [ "$${__HAS_CXX}" != "y" -a "$(BR2_INSTALL_LIBSTDCPP)" = y ] ; then \ + echo "C++ support is selected but is not available in external toolchain" ; \ + exit 1 ; \ + elif [ "$${__HAS_CXX}" = "y" -a "$(BR2_INSTALL_LIBSTDCPP)" != y ] ; then \ + echo "C++ support is not selected but is available in external toolchain" ; \ + exit 1 ; \ + fi \ + +# +# +# Check that the external toolchain supports D language +# +# $1: cross-gdc path +# +check_dlang = \ + __CROSS_GDC=$(strip $1) ; \ + __o=$(BUILD_DIR)/.br-toolchain-test-dlang.tmp ; \ + __HAS_DLANG=`printf 'import std.stdio;\nvoid main() { writeln("Hello World!"); }\n' | \ + $${__CROSS_GDC} -x d -o $${__o} - >/dev/null 2>&1 && echo y`; \ + rm -f $${__o}* ; \ + if [ "$${__HAS_DLANG}" != "y" -a "$(BR2_TOOLCHAIN_HAS_DLANG)" = y ] ; then \ + echo "D language support is selected but is not available in external toolchain" ; \ + exit 1 ; \ + elif [ "$${__HAS_DLANG}" = "y" -a "$(BR2_TOOLCHAIN_HAS_DLANG)" != y ] ; then \ + echo "D language support is not selected but is available in external toolchain" ; \ + exit 1 ; \ + fi \ + +# +# +# Check that the external toolchain supports Fortran +# +# $1: cross-gfortran path +# +check_fortran = \ + __CROSS_FC=$(strip $1) ; \ + __o=$(BUILD_DIR)/.br-toolchain-test-fortran.tmp ; \ + __HAS_FORTRAN=`printf 'program hello\n\tprint *, "Hello Fortran!\\\n"\nend program hello\n' | \ + $${__CROSS_FC} -x f95 -ffree-form -o $${__o} - 2>/dev/null && echo y`; \ + rm -f $${__o}* ; \ + if [ "$${__HAS_FORTRAN}" != "y" -a "$(BR2_TOOLCHAIN_HAS_FORTRAN)" = y ] ; then \ + echo "Fortran support is selected but is not available in external toolchain" ; \ + exit 1 ; \ + elif [ "$${__HAS_FORTRAN}" = "y" -a "$(BR2_TOOLCHAIN_HAS_FORTRAN)" != y ] ; then \ + echo "Fortran support is not selected but is available in external toolchain" ; \ + exit 1 ; \ + fi \ + +# +# +# Check that the external toolchain supports OpenMP +# +# $1: cross-gcc path +# +check_openmp = \ + __CROSS_CC=$(strip $1) ; \ + __o=$(BUILD_DIR)/.br-toolchain-test-openmp.tmp ; \ + __HAS_OPENMP=`printf '\#include \nint main(void) { return omp_get_thread_num(); }' | \ + $${__CROSS_CC} -fopenmp -x c -o $${__o} - >/dev/null 2>&1 && echo y` ; \ + rm -f $${__o}* ; \ + if [ "$${__HAS_OPENMP}" != "y" -a "$(BR2_TOOLCHAIN_HAS_OPENMP)" = y ] ; then \ + echo "OpenMP support is selected but is not available in external toolchain"; \ + exit 1 ; \ + elif [ "$${__HAS_OPENMP}" = "y" -a "$(BR2_TOOLCHAIN_HAS_OPENMP)" != y ] ; then \ + echo "OpenMP support is not selected but is available in external toolchain"; \ + exit 1 ; \ + fi \ + +# +# Check that the cross-compiler given in the configuration exists +# +# $1: cross-gcc path +# +check_cross_compiler_exists = \ + __CROSS_CC=$(strip $1) ; \ + $${__CROSS_CC} -v > /dev/null 2>&1 ; \ + if test $$? -ne 0 ; then \ + echo "Cannot execute cross-compiler '$${__CROSS_CC}'" ; \ + exit 1 ; \ + fi + +# +# Check for toolchains known not to work with Buildroot. +# - For the Angstrom toolchains, we check by looking at the vendor part of +# the host tuple. +# - Exclude distro-class toolchains which are not relocatable. +# - Exclude broken toolchains which return "libc.a" with -print-file-name. +# - Exclude toolchains used with wrong toolchain cflags or broken toolchains +# which return "libc.a" with -print-file-name and toolchain cflags. +# - Exclude toolchains which doesn't support --sysroot option. +# +# $1: cross-gcc path +# $1: toolchain cflags +# +check_unusable_toolchain = \ + __CROSS_CC=$(strip $1) ; \ + __TOOLCHAIN_CFLAGS=$(strip $2) ; \ + vendor=`$${__CROSS_CC} -dumpmachine | cut -f2 -d'-'` ; \ + if test "$${vendor}" = "angstrom" ; then \ + echo "Angstrom toolchains are not pure toolchains: they contain" ; \ + echo "many other libraries than just the C library, which makes" ; \ + echo "them unsuitable as external toolchains for build systems" ; \ + echo "such as Buildroot." ; \ + exit 1 ; \ + fi; \ + with_sysroot=`$${__CROSS_CC} -v 2>&1 |sed -r -e '/.* --with-sysroot=([^[:space:]]+)[[:space:]].*/!d; s//\1/'`; \ + if test "$${with_sysroot}" = "/" ; then \ + echo "Distribution toolchains are unsuitable for use by Buildroot," ; \ + echo "as they were configured in a way that makes them non-relocatable,"; \ + echo "and contain a lot of pre-built libraries that would conflict with"; \ + echo "the ones Buildroot wants to build."; \ + exit 1; \ + fi; \ + libc_a_path=`$${__CROSS_CC} -print-file-name=libc.a` ; \ + if test "$${libc_a_path}" = "libc.a" ; then \ + echo "Unable to detect the toolchain sysroot, Buildroot cannot use this toolchain." ; \ + exit 1 ; \ + fi ; \ + libc_a_archsysroot_path=`$${__CROSS_CC} $${__TOOLCHAIN_CFLAGS} -print-file-name=libc.a` ; \ + if test "$${libc_a_archsysroot_path}" = "libc.a" ; then \ + echo "Unable to detect the toolchain architecture sysroot." ; \ + echo "Please check the Target Architecture Variant selected, the toolchains may not support it." ; \ + echo "Buildroot cannot use this toolchain." ; \ + exit 1 ; \ + fi; \ + sysroot_dir="$(call toolchain_find_sysroot,$${__CROSS_CC})" ; \ + if test -z "$${sysroot_dir}" ; then \ + echo "External toolchain doesn't support --sysroot. Cannot use." ; \ + exit 1 ; \ + fi + +# +# Check if the toolchain has SSP (stack smashing protector) support +# +# $1: cross-gcc path +# $2: gcc ssp option +# +check_toolchain_ssp = \ + __CROSS_CC=$(strip $1) ; \ + __HAS_SSP=`echo 'int main(){}' | $${__CROSS_CC} -Werror -fstack-protector -x c - -o $(BUILD_DIR)/.br-toolchain-test.tmp >/dev/null 2>&1 && echo y` ; \ + if [ "$(BR2_TOOLCHAIN_HAS_SSP)" != "y" -a "$${__HAS_SSP}" = "y" ] ; then \ + echo "SSP support available in this toolchain, please enable BR2_TOOLCHAIN_EXTERNAL_HAS_SSP" ; \ + exit 1 ; \ + fi ; \ + if [ "$(BR2_TOOLCHAIN_HAS_SSP)" = "y" -a "$${__HAS_SSP}" != "y" ] ; then \ + echo "SSP support not available in this toolchain, please disable BR2_TOOLCHAIN_EXTERNAL_HAS_SSP" ; \ + exit 1 ; \ + fi ; \ + __SSP_OPTION=$(2); \ + if [ -n "$${__SSP_OPTION}" ] ; then \ + if ! echo 'int main(){}' | $${__CROSS_CC} -Werror $${__SSP_OPTION} -x c - -o $(BUILD_DIR)/.br-toolchain-test.tmp >/dev/null 2>&1 ; then \ + echo "SSP option $${__SSP_OPTION} not available in this toolchain, please select another SSP level" ; \ + exit 1 ; \ + fi; \ + fi; \ + rm -f $(BUILD_DIR)/.br-toolchain-test.tmp* + +# +# Generate gdbinit file for use with Buildroot +# +gen_gdbinit_file = \ + mkdir -p $(STAGING_DIR)/usr/share/buildroot/ ; \ + echo "add-auto-load-safe-path $(STAGING_DIR)" > $(STAGING_DIR)/usr/share/buildroot/gdbinit ; \ + echo "set sysroot $(STAGING_DIR)" >> $(STAGING_DIR)/usr/share/buildroot/gdbinit + +# Given a path, determine the relative prefix (../) needed to return to the +# root level. Note that the last component is treated as a file component; use a +# trailing slash to force treating it as a directory. Examples: +# relpath_prefix(lib32) = "" +# relpath_prefix(lib32/octeon2) = "../" +# relpath_prefix(lib32/octeon2/) = "../../" +# +# $1: input path +define relpath_prefix +$$( \ + prefix="" ; \ + nbslashs=`printf $1 | sed 's%[^/]%%g' | wc -c` ; \ + for slash in `seq 1 $${nbslashs}` ; do \ + prefix=$${prefix}"../" ; \ + done ; \ + printf "$$prefix" ; \ +) +endef + +# Replace the destination of a symbolic link with a simpler version +# For example, +# usr/lib/libfoo.so -> ../../lib32/libfoo.so.1 +# becomes +# usr/lib/libfoo.so -> ../../lib/libfoo.so.1 +# since 'lib32' is a symlink to 'lib'. +# +# Likewise, +# usr/lib/octeon2/libbar.so -> ../../../lib32/octeon2/libbar.so.1 +# becomes +# usr/lib/octeon2/libbar.so -> ../../lib/libbar.so.1 +# assuming lib32->lib and lib/octeon2->lib. +# +# $1: symlink +# $2: base path +define simplify_symlink +( \ + FULL_SRC="$$(readlink -f $$(dirname $1))/$$(basename $1)" ; \ + FULL_DEST="$$(readlink -f $1)" ; \ + FULL_BASE="$$(readlink -f $2)" ; \ + REL_SRC="$${FULL_SRC#$${FULL_BASE}/}" ; \ + REL_DEST="$${FULL_DEST#$${FULL_BASE}/}" ; \ + DOTS="$(call relpath_prefix,$${REL_SRC})" ; \ + ln -sf "$${DOTS}$${REL_DEST}" "$${FULL_SRC}" ; \ +) +endef diff --git a/toolchain/toolchain-bare-metal-buildroot/Config.in b/toolchain/toolchain-bare-metal-buildroot/Config.in new file mode 100644 index 00000000..6fe96935 --- /dev/null +++ b/toolchain/toolchain-bare-metal-buildroot/Config.in @@ -0,0 +1,11 @@ +if BR2_TOOLCHAIN_BARE_METAL_BUILDROOT + +config BR2_TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH + string "architecture tuple" + help + This option allows to define the architecture tuple for the + bare-metal toolchain. + +source "package/newlib-bare-metal/Config.in" + +endif # BR2_TOOLCHAIN_BARE_METAL_BUILDROOT diff --git a/toolchain/toolchain-bare-metal-buildroot/toolchain-bare-metal-buildroot.mk b/toolchain/toolchain-bare-metal-buildroot/toolchain-bare-metal-buildroot.mk new file mode 100644 index 00000000..dbfe30a9 --- /dev/null +++ b/toolchain/toolchain-bare-metal-buildroot/toolchain-bare-metal-buildroot.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# toolchain-bare-metal-buildroot +# +################################################################################ + +TOOLCHAIN_BARE_METAL_BUILDROOT_DEPENDENCIES = newlib-bare-metal +TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH_TUPLE = $(call qstrip,$(BR2_TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH)) +TOOLCHAIN_BARE_METAL_BUILDROOT_SYSROOT = $(HOST_DIR)/$(TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH_TUPLE)/sysroot +TOOLCHAIN_BARE_METAL_BUILDROOT_ADD_TOOLCHAIN_DEPENDENCY = NO + +$(eval $(virtual-package)) diff --git a/toolchain/toolchain-buildroot/Config.in b/toolchain/toolchain-buildroot/Config.in new file mode 100644 index 00000000..0173f40d --- /dev/null +++ b/toolchain/toolchain-buildroot/Config.in @@ -0,0 +1,115 @@ +# Config entries for internal toolchain backend + +if BR2_TOOLCHAIN_BUILDROOT + +comment "Toolchain Buildroot Options" + +config BR2_TOOLCHAIN_BUILDROOT_VENDOR + string "custom toolchain vendor name" + default "buildroot" + help + This option allows to customize the "vendor" part of the + toolchain tuple, where the toolchain tuple has the form + ---. The default value, "buildroot", + is fine for most cases, except in very specific situations + where gcc might make different decisions based on the vendor + part of the tuple. The value "unknown" is not allowed, as the + cross-compiling toolchain might then be confused with the + native toolchain when the target and host architecture are + identical. The value can not be empty either. + + If you're not sure, just leave the default "buildroot" value. + +choice + prompt "C library" + default BR2_TOOLCHAIN_BUILDROOT_GLIBC + +config BR2_TOOLCHAIN_BUILDROOT_UCLIBC + bool "uClibc-ng" + depends on BR2_PACKAGE_UCLIBC_SUPPORTS + select BR2_TOOLCHAIN_USES_UCLIBC + help + This option selects uClibc-ng as the C library for the + cross-compilation toolchain. + + http://uclibc-ng.org + +config BR2_TOOLCHAIN_BUILDROOT_GLIBC + bool "glibc" + depends on BR2_PACKAGE_GLIBC_SUPPORTS + select BR2_TOOLCHAIN_USES_GLIBC + help + This option selects glibc as the C library for the + cross-compilation toolchain. + + http://www.gnu.org/software/libc/ + +comment "glibc needs a toolchain w/ kernel headers >= 3.2" + depends on BR2_PACKAGE_GLIBC_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 + +# glibc >= 2.26 require kernel headers >= 3.10 on powerpc64le. +comment "glibc on powerpc64le needs a toolchain w/ headers >= 3.10" + depends on BR2_powerpc64le + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 + +# Support for MIPS NAN2008 needs headers >= 4.5 +comment "glibc on MIPS w/ NAN2008 needs a toolchain w/ headers >= 4.5" + depends on BR2_MIPS_NAN_2008 + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5 + +comment "glibc on RISC-V 64-bit needs a toolchain w/ headers >= 5.0" + depends on BR2_RISCV_64 + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 + +comment "glibc on RISC-V 32-bit needs a toolchain w/ headers >= 5.4" + depends on BR2_RISCV_32 + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4 + +comment "glibc on ARC needs a toolchain w/ headers >= 5.1" + depends on BR2_arc + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1 + +comment "glibc on or1k needs a toolchain w/ headers >= 5.4" + depends on BR2_or1k + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4 + +config BR2_TOOLCHAIN_BUILDROOT_MUSL + bool "musl" + depends on BR2_PACKAGE_MUSL_SUPPORTS + select BR2_TOOLCHAIN_USES_MUSL + help + This option selects musl as the C library for the + cross-compilation toolchain. + + https://www.musl-libc.org/ + +config BR2_TOOLCHAIN_BUILDROOT_NONE + bool "none" + depends on !BR2_PACKAGE_UCLIBC_SUPPORTS && \ + !BR2_PACKAGE_GLIBC_SUPPORTS && \ + !BR2_PACKAGE_MUSL_SUPPORTS + help + This option is visible if no C library is available for the + currently selected configuration. If you select this option, + the build will refuse to start as Buildroot needs a C + library to build a toolchain. Change your configuration + settings to make sure one of the C libraries is selected. + +endchoice + +config BR2_TOOLCHAIN_BUILDROOT_LIBC + string + default "uclibc" if BR2_TOOLCHAIN_BUILDROOT_UCLIBC + 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" +source "package/glibc/Config.in" +source "package/binutils/Config.in.host" +source "package/gcc/Config.in.host" +source "package/gcc/Config.in" +endif diff --git a/toolchain/toolchain-buildroot/toolchain-buildroot.mk b/toolchain/toolchain-buildroot/toolchain-buildroot.mk new file mode 100644 index 00000000..76862fa2 --- /dev/null +++ b/toolchain/toolchain-buildroot/toolchain-buildroot.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# toolchain-buildroot +# +################################################################################ + +BR_LIBC = $(call qstrip,$(BR2_TOOLCHAIN_BUILDROOT_LIBC)) + +# Triggering the build of the gcc-final will automatically do the +# build of binutils, uClibc, kernel headers and all the intermediate +# gcc steps. + +TOOLCHAIN_BUILDROOT_DEPENDENCIES = gcc-final + +TOOLCHAIN_BUILDROOT_ADD_TOOLCHAIN_DEPENDENCY = NO + +# Not really a virtual package, but we use the virtual package infra here so +# both the build log and build directory look nicer (toolchain-buildroot-virtual +# instead of toolchain-buildroot-undefined) +$(eval $(virtual-package)) diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in new file mode 100644 index 00000000..e91aa163 --- /dev/null +++ b/toolchain/toolchain-external/Config.in @@ -0,0 +1,146 @@ +if BR2_TOOLCHAIN_EXTERNAL + +comment "Toolchain External Options" + +choice + prompt "Toolchain" + +# Kept toolchains sorted by architecture in order to use some toolchain +# as default choice + +# Aarch64 (use ARM toolchain by default) +source "toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in" +source "toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in" + +# Aarch64 big-endian +source "toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in" +source "toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in" + +# ARC +source "toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in" + +# ARM (use ARM toolchain by default) +source "toolchain/toolchain-external/toolchain-external-arm-arm/Config.in" +source "toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in" + +# ARM big-endian +source "toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in" + +# MIPS +source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in" + +# Bootlin toolchains, available for virtually all architectures +source "toolchain/toolchain-external/toolchain-external-bootlin/Config.in" + +# Kept last, so it remains the non-default choice, unless there isn't +# any available toolchain profile for the currently selected +# architecture, but before toolchains from br2-external trees. +source "toolchain/toolchain-external/toolchain-external-custom/Config.in" + +# Toolchains from br2-external trees, if any +source "$BR2_BASE_DIR/.br2-external.in.toolchains" + +endchoice + +choice + prompt "Toolchain origin" + # Keep compatibility with old defconfig files that are using + # custom toolchains, and which are therefore assuming that + # "preinstalled" in the default choice. + default BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED if BR2_TOOLCHAIN_EXTERNAL_CUSTOM + +config BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD + bool "Toolchain to be downloaded and installed" + help + Select this option if you want Buildroot to download and + install the toolchain. If you have selected a custom + toolchain, specify the URL in BR2_TOOLCHAIN_EXTERNAL_URL. + +config BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED + bool "Pre-installed toolchain" + help + Select this option if you want to use a pre-installed + toolchain. Specify the path to this toolchain in + BR2_TOOLCHAIN_EXTERNAL_PATH. + +endchoice + +config BR2_TOOLCHAIN_EXTERNAL_PATH + string "Toolchain path" + default "" + depends on BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED + help + Path to where the external toolchain is installed. The + compiler itself is expected to be in the "bin" subdirectory + of this path. + + If empty, the compiler will be searched in $PATH. + +config BR2_TOOLCHAIN_EXTERNAL_GLIBC + bool + select BR2_TOOLCHAIN_USES_GLIBC + +config BR2_TOOLCHAIN_EXTERNAL_UCLIBC + bool + select BR2_TOOLCHAIN_USES_UCLIBC + +config BR2_TOOLCHAIN_EXTERNAL_MUSL + bool + select BR2_TOOLCHAIN_USES_MUSL + # Compatibility headers: cdefs.h, queue.h + select BR2_PACKAGE_MUSL_COMPAT_HEADERS + +# Make sure the virtual-package infra checks the provider +config BR2_PACKAGE_HAS_TOOLCHAIN_EXTERNAL + bool + default y + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + string + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + string + +# 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 + +# Aarch64 +source "toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in.options" +source "toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in.options" + +# Aarch64 big-endian +source "toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in.options" +source "toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in.options" + +# ARC +source "toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in.options" + +# ARM +source "toolchain/toolchain-external/toolchain-external-arm-arm/Config.in.options" +source "toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in.options" + +# ARM big-endian +source "toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options" + +# MIPS +source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options" + +# Bootlin toolchains +source "toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options" + +# Custom toolchains +source "toolchain/toolchain-external/toolchain-external-custom/Config.in.options" + +config BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER + bool + +config BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY + bool "Copy gdb server to the Target" + depends on BR2_TOOLCHAIN_EXTERNAL + depends on !BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER + help + Copy the gdbserver provided by the external toolchain to the + target. + +endif # BR2_TOOLCHAIN_EXTERNAL diff --git a/toolchain/toolchain-external/pkg-toolchain-external.mk b/toolchain/toolchain-external/pkg-toolchain-external.mk new file mode 100644 index 00000000..c08bf0a6 --- /dev/null +++ b/toolchain/toolchain-external/pkg-toolchain-external.mk @@ -0,0 +1,641 @@ +################################################################################ +# 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, and x86_64 architectures. For the MIPS +# toolchain, the -muclibc variant isn't supported yet, only the +# default glibc-based variant is. +# * 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)/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 = $(abspath $(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 := $(dir $(shell which $(TOOLCHAIN_EXTERNAL_PREFIX)-gcc)) +endif +else +TOOLCHAIN_EXTERNAL_REL_BIN_PATH = $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_REL_BIN_PATH)) +ifeq ($(TOOLCHAIN_EXTERNAL_REL_BIN_PATH),) +TOOLCHAIN_EXTERNAL_REL_BIN_PATH = bin +endif +TOOLCHAIN_EXTERNAL_BIN = $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/$(TOOLCHAIN_EXTERNAL_REL_BIN_PATH) +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_GDC = $(TOOLCHAIN_EXTERNAL_CROSS)gdc$(TOOLCHAIN_EXTERNAL_SUFFIX) +TOOLCHAIN_EXTERNAL_FC = $(TOOLCHAIN_EXTERNAL_CROSS)gfortran$(TOOLCHAIN_EXTERNAL_SUFFIX) +TOOLCHAIN_EXTERNAL_READELF = $(TOOLCHAIN_EXTERNAL_CROSS)readelf + +# 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. +# + +TOOLCHAIN_EXTERNAL_LIBS += ld*.so.* libgcc_s.so.* libatomic.so.* + +ifneq ($(BR2_SSP_NONE),y) +TOOLCHAIN_EXTERNAL_LIBS += libssp.so.* +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC)$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC),y) +TOOLCHAIN_EXTERNAL_LIBS += libc.so.* libdl.so.* libm.so.* libnsl.so.* libresolv.so.* librt.so.* libutil.so.* +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_UCLIBC),y) +# uClibc, though mono-lib, still has a separate libcrypt as a stub +TOOLCHAIN_EXTERNAL_LIBS += libcrypt.so.* +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC),y) +TOOLCHAIN_EXTERNAL_LIBS += libnss_files.so.* libnss_dns.so.* libmvec.so.* libanl.so.* +# Note: explicitly do copy libcrypt.so.1: it is not the same SONAME as the +# one from libxcrypt, so no conflict, but some prebuilt binaries may have +# it in their DT_NEEDED. However, do remove the headers, static lib, and +# symlink to avoid conflict with libxcrypt (the prebuilt binaries do not +# need those either). +TOOLCHAIN_EXTERNAL_LIBS += libcrypt.so.1 +define TOOLCHAIN_EXTERNAL_GLIBC_NO_LIBCRYPT + rm -f $(STAGING_DIR)/usr/include/crypt.h \ + $(STAGING_DIR)/usr/lib/libcrypt.so \ + $(STAGING_DIR)/usr/lib/libcrypt.a +endef +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_MUSL),y) +TOOLCHAIN_EXTERNAL_LIBS += libc.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 + +ifeq ($(BR2_TOOLCHAIN_HAS_OPENMP),y) +TOOLCHAIN_EXTERNAL_LIBS += libgomp.so.* +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_DLANG),y) +TOOLCHAIN_EXTERNAL_LIBS += libgdruntime.so* libgphobos.so* +endif + +TOOLCHAIN_EXTERNAL_LIBS += $(addsuffix .so*,$(call qstrip,$(BR2_TOOLCHAIN_EXTRA_LIBS))) + + +# +# Definition of the CFLAGS to use with the external toolchain, as well as the +# common toolchain wrapper build arguments +# + +# 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 ($(GCC_TARGET_ARCH),) +TOOLCHAIN_EXTERNAL_CFLAGS += -march=$(GCC_TARGET_ARCH) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_ARCH='"$(GCC_TARGET_ARCH)"' +endif +ifneq ($(GCC_TARGET_CPU),) +TOOLCHAIN_EXTERNAL_CFLAGS += -mcpu=$(GCC_TARGET_CPU) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_CPU='"$(GCC_TARGET_CPU)"' +endif +ifneq ($(GCC_TARGET_ABI),) +TOOLCHAIN_EXTERNAL_CFLAGS += -mabi=$(GCC_TARGET_ABI) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_ABI='"$(GCC_TARGET_ABI)"' +endif +ifeq ($(BR2_TOOLCHAIN_HAS_MNAN_OPTION),y) +ifneq ($(GCC_TARGET_NAN),) +TOOLCHAIN_EXTERNAL_CFLAGS += -mnan=$(GCC_TARGET_NAN) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_NAN='"$(GCC_TARGET_NAN)"' +endif +endif +ifneq ($(GCC_TARGET_FP32_MODE),) +TOOLCHAIN_EXTERNAL_CFLAGS += -mfp$(GCC_TARGET_FP32_MODE) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_FP32_MODE='"$(GCC_TARGET_FP32_MODE)"' +endif +ifneq ($(GCC_TARGET_FPU),) +TOOLCHAIN_EXTERNAL_CFLAGS += -mfpu=$(GCC_TARGET_FPU) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_FPU='"$(GCC_TARGET_FPU)"' +endif +ifneq ($(GCC_TARGET_FLOAT_ABI),) +TOOLCHAIN_EXTERNAL_CFLAGS += -mfloat-abi=$(GCC_TARGET_FLOAT_ABI) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_FLOAT_ABI='"$(GCC_TARGET_FLOAT_ABI)"' +endif +ifneq ($(GCC_TARGET_MODE),) +TOOLCHAIN_EXTERNAL_CFLAGS += -m$(GCC_TARGET_MODE) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_MODE='"$(GCC_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)/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)/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)/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|*-gdc) \ + 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 libpattern in $(TOOLCHAIN_EXTERNAL_LIBS); do \ + $(call copy_toolchain_lib_root,$$libpattern); \ + 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 \ + relpath="$(call relpath_prefix,$${ARCH_LIB_DIR})" ; \ + ln -snf $${relpath}lib "$${DESTDIR}/$${ARCH_LIB_DIR}" ; \ + ln -snf $${relpath}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 + +# GCC installs a libstdcxx-...so-gdb.py file that gdb will load automatically, +# but it contains hardcoded paths referring to the location where the (external) +# toolchain was built. Fix up these paths so that the pretty printers can be +# loaded automatically. +# By default, the pretty printers are installed in +# $(datadir)/gcc-$(gcc_version)/python but this could have been overwritten with +# the gcc configure option: --with-python-dir. We thus have to search the +# correct path first. +define TOOLCHAIN_EXTERNAL_FIXUP_PRETTY_PRINTER_LOADER + $(Q)loadfiles=$$(find $(STAGING_DIR) -name 'libstdc++.so*-gdb.py' 2>/dev/null); \ + pythondir=$$(find $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR) -path '*/libstdcxx/__init__.py' 2>/dev/null | sed 's%/libstdcxx/__init__.py%%' | head -n1); \ + if [ -n "$$loadfiles" ] && [ -n "$$pythondir" ]; then \ + echo "Fixing up hardcoded paths in GDB pretty-printer auto-load file(s) for libstdcxx: $$loadfiles"; \ + sed -ri \ + -e 's%^libdir\s*=.*%libdir = "$(STAGING_DIR)/lib"%' \ + -e "s%^pythondir\s*=.*%pythondir = '$$pythondir'%" \ + $$loadfiles; \ + 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 + +define TOOLCHAIN_EXTERNAL_INSTALL_TARGET_LDD + $(Q)if test -f $(STAGING_DIR)/usr/bin/ldd ; then \ + $(INSTALL) -D $(STAGING_DIR)/usr/bin/ldd $(TARGET_DIR)/usr/bin/ldd ; \ + $(SED) 's:.*/bin/bash:#!/bin/sh:' $(TARGET_DIR)/usr/bin/ldd ; \ + 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),"$$(TOOLCHAIN_EXTERNAL_CFLAGS)") + $$(Q)SYSROOT_DIR="$$(call toolchain_find_sysroot,$$(TOOLCHAIN_EXTERNAL_CC))" ; \ + $$(call check_kernel_headers_version,\ + $$(BUILD_DIR),\ + $$(call toolchain_find_sysroot,$$(TOOLCHAIN_EXTERNAL_CC)),\ + $$(call qstrip,$$(BR2_TOOLCHAIN_HEADERS_AT_LEAST)),\ + $$(if $$(BR2_TOOLCHAIN_EXTERNAL_CUSTOM),loose,strict)); \ + $$(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)") ; \ + fi ; \ + $$(call check_cplusplus,$$(TOOLCHAIN_EXTERNAL_CXX)) ; \ + $$(call check_dlang,$$(TOOLCHAIN_EXTERNAL_GDC)) ; \ + $$(call check_fortran,$$(TOOLCHAIN_EXTERNAL_FC)) ; \ + $$(call check_openmp,$$(TOOLCHAIN_EXTERNAL_CC)) ; \ + if test "$$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC)" = "y" ; then \ + $$(call check_uclibc,$$$${SYSROOT_DIR}) ; \ + elif test "$$(BR2_TOOLCHAIN_EXTERNAL_MUSL)" = "y" ; then \ + $$(call check_musl,\ + "$$(TOOLCHAIN_EXTERNAL_CC) $$(TOOLCHAIN_EXTERNAL_CFLAGS)") ; \ + else \ + $$(call check_glibc,$$$${SYSROOT_DIR}) ; \ + fi + $$(Q)$$(call check_toolchain_ssp,$$(TOOLCHAIN_EXTERNAL_CC),$(BR2_SSP_OPTION)) +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_GLIBC_NO_LIBCRYPT) + $$(TOOLCHAIN_EXTERNAL_INSTALL_WRAPPER) + $$(TOOLCHAIN_EXTERNAL_INSTALL_GDBINIT) + $$(TOOLCHAIN_EXTERNAL_FIXUP_PRETTY_PRINTER_LOADER) +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 $(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) + $$(TOOLCHAIN_EXTERNAL_INSTALL_TARGET_LDD) +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/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in b/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in new file mode 100644 index 00000000..1cee601a --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in @@ -0,0 +1,19 @@ +config BR2_TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE + bool "Arm AArch64 BE 13.2.rel1" + depends on BR2_aarch64_be + depends on BR2_HOSTARCH = "x86_64" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_TOOLCHAIN_HAS_SSP + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + help + Arm toolchain for the AArch64 Big Endian architecture. + + This is the same toolchain that was previously distributed by + Linaro. + + https://developer.arm.com/open-source/gnu-toolchain diff --git a/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in.options b/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in.options new file mode 100644 index 00000000..745af8a2 --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "aarch64_be-none-linux-gnu" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-arm-aarch64-be" + +endif diff --git a/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/toolchain-external-arm-aarch64-be.hash b/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/toolchain-external-arm-aarch64-be.hash new file mode 100644 index 00000000..a9830c43 --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/toolchain-external-arm-aarch64-be.hash @@ -0,0 +1,2 @@ +# From https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-aarch64_be-none-linux-gnu.tar.xz.sha256asc +sha256 fe864b2b15127f58867a171cfcd639318609e734fbc8b78bb40258312a21a097 arm-gnu-toolchain-13.2.rel1-x86_64-aarch64_be-none-linux-gnu.tar.xz diff --git a/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/toolchain-external-arm-aarch64-be.mk b/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/toolchain-external-arm-aarch64-be.mk new file mode 100644 index 00000000..7771269b --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/toolchain-external-arm-aarch64-be.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# toolchain-external-arm-aarch64-be +# +################################################################################ + +TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE_VERSION = 13.2.rel1 +TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE_SITE = https://developer.arm.com/-/media/Files/downloads/gnu/$(TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE_VERSION)/binrel + +TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE_SOURCE = arm-gnu-toolchain-$(TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE_VERSION)-x86_64-aarch64_be-none-linux-gnu.tar.xz + +$(eval $(toolchain-external-package)) diff --git a/toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in b/toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in new file mode 100644 index 00000000..2565707d --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in @@ -0,0 +1,19 @@ +config BR2_TOOLCHAIN_EXTERNAL_ARM_AARCH64 + bool "Arm AArch64 13.2.rel1" + depends on BR2_aarch64 + depends on BR2_HOSTARCH = "x86_64" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_TOOLCHAIN_HAS_SSP + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + help + Arm toolchain for the AArch64 architecture. + + This is the same toolchain that was previously distributed by + Linaro. + + https://developer.arm.com/open-source/gnu-toolchain diff --git a/toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in.options b/toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in.options new file mode 100644 index 00000000..dcc38a6a --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_ARM_AARCH64 + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "aarch64-none-linux-gnu" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-arm-aarch64" + +endif diff --git a/toolchain/toolchain-external/toolchain-external-arm-aarch64/toolchain-external-arm-aarch64.hash b/toolchain/toolchain-external/toolchain-external-arm-aarch64/toolchain-external-arm-aarch64.hash new file mode 100644 index 00000000..9de90d4b --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-arm-aarch64/toolchain-external-arm-aarch64.hash @@ -0,0 +1,2 @@ +# From https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-aarch64-none-linux-gnu.tar.xz.sha256asc +sha256 12fcdf13a7430655229b20438a49e8566e26551ba08759922cdaf4695b0d4e23 arm-gnu-toolchain-13.2.rel1-x86_64-aarch64-none-linux-gnu.tar.xz diff --git a/toolchain/toolchain-external/toolchain-external-arm-aarch64/toolchain-external-arm-aarch64.mk b/toolchain/toolchain-external/toolchain-external-arm-aarch64/toolchain-external-arm-aarch64.mk new file mode 100644 index 00000000..f9adda89 --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-arm-aarch64/toolchain-external-arm-aarch64.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# toolchain-external-arm-aarch64 +# +################################################################################ + +TOOLCHAIN_EXTERNAL_ARM_AARCH64_VERSION = 13.2.rel1 +TOOLCHAIN_EXTERNAL_ARM_AARCH64_SITE = https://developer.arm.com/-/media/Files/downloads/gnu/$(TOOLCHAIN_EXTERNAL_ARM_AARCH64_VERSION)/binrel + +TOOLCHAIN_EXTERNAL_ARM_AARCH64_SOURCE = arm-gnu-toolchain-$(TOOLCHAIN_EXTERNAL_ARM_AARCH64_VERSION)-x86_64-aarch64-none-linux-gnu.tar.xz + +$(eval $(toolchain-external-package)) diff --git a/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in b/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in new file mode 100644 index 00000000..bee8d611 --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in @@ -0,0 +1,30 @@ +comment "Arm toolchains available for Cortex-A with NEON + EABIhf" + depends on BR2_arm + depends on !BR2_ARM_CPU_ARMV7A || !BR2_ARM_EABIHF || !BR2_ARM_CPU_HAS_NEON + +config BR2_TOOLCHAIN_EXTERNAL_ARM_ARM + bool "Arm ARM 13.2.rel1" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV7A || BR2_ARM_CPU_ARMV8A + depends on BR2_ARM_CPU_HAS_NEON + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "aarch64" + depends on BR2_ARM_EABIHF + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_TOOLCHAIN_HAS_SSP + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + help + Arm toolchain for the ARM architecture. It uses GCC 13.2, + GDB 13, glibc 2.38, Binutils 2.41. It generates code + that runs on all Cortex-A profile devices. The code + generated uses the hard floating point calling convention, + and uses the NEON FPU instructions. + + This is the same toolchain that was previously distributed by + Linaro. + + https://developer.arm.com/open-source/gnu-toolchain diff --git a/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in.options b/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in.options new file mode 100644 index 00000000..f2ce0f45 --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_ARM_ARM + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "arm-none-linux-gnueabihf" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-arm-arm" + +endif diff --git a/toolchain/toolchain-external/toolchain-external-arm-arm/toolchain-external-arm-arm.hash b/toolchain/toolchain-external/toolchain-external-arm-arm/toolchain-external-arm-arm.hash new file mode 100644 index 00000000..e979e5f5 --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-arm-arm/toolchain-external-arm-arm.hash @@ -0,0 +1,4 @@ +# From https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz.sha256asc +sha256 df0f4927a67d1fd366ff81e40bd8c385a9324fbdde60437a512d106215f257b3 arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz +# From https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-aarch64-arm-none-linux-gnueabihf.tar.xz.sha256asc +sha256 8ad384bb328bccc44396d85c8f8113b7b8c5e11bcfef322e77cda3ebe7baadb5 arm-gnu-toolchain-13.2.rel1-aarch64-arm-none-linux-gnueabihf.tar.xz diff --git a/toolchain/toolchain-external/toolchain-external-arm-arm/toolchain-external-arm-arm.mk b/toolchain/toolchain-external/toolchain-external-arm-arm/toolchain-external-arm-arm.mk new file mode 100644 index 00000000..5962121a --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-arm-arm/toolchain-external-arm-arm.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# toolchain-external-arm-arm +# +################################################################################ + +TOOLCHAIN_EXTERNAL_ARM_ARM_VERSION = 13.2.rel1 +TOOLCHAIN_EXTERNAL_ARM_ARM_SITE = https://developer.arm.com/-/media/Files/downloads/gnu/$(TOOLCHAIN_EXTERNAL_ARM_ARM_VERSION)/binrel + +TOOLCHAIN_EXTERNAL_ARM_ARM_SOURCE = arm-gnu-toolchain-$(TOOLCHAIN_EXTERNAL_ARM_ARM_VERSION)-$(HOSTARCH)-arm-none-linux-gnueabihf.tar.xz + +$(eval $(toolchain-external-package)) diff --git a/toolchain/toolchain-external/toolchain-external-bootlin/Config.in b/toolchain/toolchain-external/toolchain-external-bootlin/Config.in new file mode 100644 index 00000000..6552da9a --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-bootlin/Config.in @@ -0,0 +1,9 @@ +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN + bool "Bootlin toolchains" + depends on BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCH_SUPPORTS + depends on BR2_HOSTARCH = "x86_64" + help + Bootlin toolchains are built using Buildroot for a large + number of architectures and C libraries configurations. + + https://toolchains.bootlin.com diff --git a/toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options b/toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options new file mode 100644 index 00000000..7a9bffb5 --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options @@ -0,0 +1,5918 @@ +# This file was auto-generated by support/scripts/gen-bootlin-toolchains +# Do not edit +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCH_SUPPORTS + bool + default y if BR2_aarch64 + default y if BR2_aarch64_be + default y if BR2_arcle && BR2_arc750d + default y if BR2_arcle && BR2_archs38 + default y if BR2_arm && BR2_ARM_CPU_ARMV5 && BR2_ARM_EABI + default y if BR2_arm && BR2_ARM_CPU_ARMV6 && BR2_ARM_EABIHF + default y if BR2_arm && BR2_ARM_CPU_ARMV7A && BR2_ARM_EABIHF + default y if BR2_armeb && BR2_ARM_CPU_ARMV7A && BR2_ARM_EABIHF + default y if BR2_arm && BR2_ARM_CPU_ARMV7M + default y if BR2_m68k_m68k + default y if BR2_m68k_cf + default y if BR2_microblazebe + default y if BR2_microblazeel + default y if BR2_mips && BR2_mips_32 && !BR2_MIPS_SOFT_FLOAT + default y if BR2_mipsel && BR2_mips_32 && !BR2_MIPS_SOFT_FLOAT + default y if BR2_mipsel && BR2_mips_32r5 && !BR2_MIPS_SOFT_FLOAT + default y if BR2_mipsel && BR2_mips_32r6 && !BR2_MIPS_SOFT_FLOAT + default y if BR2_mips64 && BR2_mips_64 && BR2_MIPS_NABI32 && !BR2_MIPS_SOFT_FLOAT + default y if BR2_mips64el && BR2_mips_64 && BR2_MIPS_NABI32 && !BR2_MIPS_SOFT_FLOAT + default y if BR2_mips64el && BR2_mips_64r6 && BR2_MIPS_NABI32 && !BR2_MIPS_SOFT_FLOAT + default y if BR2_nios2 + default y if BR2_or1k + default y if BR2_powerpc && BR2_powerpc_440fp + default y if BR2_powerpc && BR2_powerpc_e300c3 + default y if BR2_powerpc && BR2_powerpc_e500mc + default y if BR2_powerpc64 && BR2_powerpc_e5500 + default y if BR2_powerpc64 && BR2_powerpc_e6500 + default y if BR2_powerpc64 && BR2_powerpc_power8 + default y if BR2_powerpc64le && BR2_powerpc_power8 + default y if BR2_riscv && BR2_riscv_g && BR2_RISCV_32 && BR2_RISCV_ABI_ILP32D + default y if BR2_riscv && BR2_riscv_g && BR2_RISCV_64 && BR2_RISCV_ABI_LP64D && BR2_USE_MMU + default y if BR2_s390x && BR2_s390x_z13 + default y if BR2_sh && BR2_sh4 + default y if BR2_sh && BR2_sh4aeb + default y if BR2_sparc64 && BR2_sparc_v9 + default y if BR2_sparc && BR2_sparc_v8 + default y if BR2_x86_64 && BR2_X86_CPU_HAS_MMX && BR2_X86_CPU_HAS_SSE && BR2_X86_CPU_HAS_SSE2 + default y if BR2_x86_64 && BR2_X86_CPU_HAS_MMX && BR2_X86_CPU_HAS_SSE && BR2_X86_CPU_HAS_SSE2 && BR2_X86_CPU_HAS_SSE3 && BR2_X86_CPU_HAS_SSSE3 && BR2_X86_CPU_HAS_SSE4 && BR2_X86_CPU_HAS_SSE42 + default y if BR2_x86_64 && BR2_X86_CPU_HAS_MMX && BR2_X86_CPU_HAS_SSE && BR2_X86_CPU_HAS_SSE2 && BR2_X86_CPU_HAS_SSE3 && BR2_X86_CPU_HAS_SSSE3 && BR2_X86_CPU_HAS_SSE4 && BR2_X86_CPU_HAS_SSE42 && BR2_X86_CPU_HAS_AVX && BR2_X86_CPU_HAS_AVX2 + default y if BR2_x86_64 && BR2_X86_CPU_HAS_MMX && BR2_X86_CPU_HAS_SSE && BR2_X86_CPU_HAS_SSE2 && BR2_X86_CPU_HAS_SSE3 && BR2_X86_CPU_HAS_SSSE3 && BR2_X86_CPU_HAS_SSE4 && BR2_X86_CPU_HAS_SSE42 && BR2_X86_CPU_HAS_AVX && BR2_X86_CPU_HAS_AVX2 && BR2_X86_CPU_HAS_AVX512 + default y if BR2_x86_64 && BR2_X86_CPU_HAS_MMX && BR2_X86_CPU_HAS_SSE && BR2_X86_CPU_HAS_SSE2 && BR2_X86_CPU_HAS_SSE3 && BR2_X86_CPU_HAS_SSSE3 && BR2_X86_CPU_HAS_SSE4 && BR2_X86_CPU_HAS_SSE42 + default y if BR2_i386 && BR2_X86_CPU_HAS_MMX && BR2_X86_CPU_HAS_SSE && BR2_X86_CPU_HAS_SSE2 && BR2_X86_CPU_HAS_SSE3 && BR2_X86_CPU_HAS_SSSE3 + default y if BR2_i386 && !BR2_x86_i486 && !BR2_x86_i586 && !BR2_x86_x1000 && !BR2_x86_pentium_mmx && !BR2_x86_geode && !BR2_x86_c3 && !BR2_x86_winchip_c6 && !BR2_x86_winchip2 + default y if BR2_xtensa && BR2_XTENSA_CUSTOM && BR2_XTENSA_LITTLE_ENDIAN + +if BR2_TOOLCHAIN_EXTERNAL_BOOTLIN + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "$(ARCH)-linux" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-bootlin" + +choice + prompt "Bootlin toolchain variant" +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_BLEEDING_EDGE + bool "aarch64 glibc bleeding-edge 2024.02-1" + depends on BR2_aarch64 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the aarch64 architecture, using the + glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_STABLE + bool "aarch64 glibc stable 2024.02-1" + depends on BR2_aarch64 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the aarch64 architecture, using the + glibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_MUSL_BLEEDING_EDGE + bool "aarch64 musl bleeding-edge 2024.02-1" + depends on BR2_aarch64 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the aarch64 architecture, using the + musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_MUSL_STABLE + bool "aarch64 musl stable 2024.02-1" + depends on BR2_aarch64 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the aarch64 architecture, using the + musl C library. This is a stable version, which means it is + using stable and proven versions of gcc, gdb and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_UCLIBC_BLEEDING_EDGE + bool "aarch64 uclibc bleeding-edge 2024.02-1" + depends on BR2_aarch64 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the aarch64 architecture, using the + uclibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_UCLIBC_STABLE + bool "aarch64 uclibc stable 2024.02-1" + depends on BR2_aarch64 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the aarch64 architecture, using the + uclibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_GLIBC_BLEEDING_EDGE + bool "aarch64be glibc bleeding-edge 2024.02-1" + depends on BR2_aarch64_be + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the aarch64be architecture, using the + glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_GLIBC_STABLE + bool "aarch64be glibc stable 2024.02-1" + depends on BR2_aarch64_be + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the aarch64be architecture, using the + glibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_MUSL_BLEEDING_EDGE + bool "aarch64be musl bleeding-edge 2024.02-1" + depends on BR2_aarch64_be + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the aarch64be architecture, using the + musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_MUSL_STABLE + bool "aarch64be musl stable 2024.02-1" + depends on BR2_aarch64_be + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the aarch64be architecture, using the + musl C library. This is a stable version, which means it is + using stable and proven versions of gcc, gdb and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_UCLIBC_BLEEDING_EDGE + bool "aarch64be uclibc bleeding-edge 2024.02-1" + depends on BR2_aarch64_be + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the aarch64be architecture, using the + uclibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_UCLIBC_STABLE + bool "aarch64be uclibc stable 2024.02-1" + depends on BR2_aarch64_be + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the aarch64be architecture, using the + uclibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_750D_UCLIBC_BLEEDING_EDGE + bool "arcle-750d uclibc bleeding-edge 2024.02-1" + depends on BR2_arcle + depends on BR2_arc750d + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the arcle-750d architecture, using + the uclibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_750D_UCLIBC_STABLE + bool "arcle-750d uclibc stable 2024.02-1" + depends on BR2_arcle + depends on BR2_arc750d + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the arcle-750d architecture, using + the uclibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_GLIBC_BLEEDING_EDGE + bool "arcle-hs38 glibc bleeding-edge 2024.02-1" + depends on BR2_arcle + depends on BR2_archs38 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the arcle-hs38 architecture, using + the glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_GLIBC_STABLE + bool "arcle-hs38 glibc stable 2023.11-1" + depends on BR2_arcle + depends on BR2_archs38 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_11 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_10 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the arcle-hs38 architecture, using + the glibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_UCLIBC_BLEEDING_EDGE + bool "arcle-hs38 uclibc bleeding-edge 2024.02-1" + depends on BR2_arcle + depends on BR2_archs38 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the arcle-hs38 architecture, using + the uclibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_UCLIBC_STABLE + bool "arcle-hs38 uclibc stable 2024.02-1" + depends on BR2_arcle + depends on BR2_archs38 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the arcle-hs38 architecture, using + the uclibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_GLIBC_BLEEDING_EDGE + bool "armv5-eabi glibc bleeding-edge 2024.02-1" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV5 + depends on BR2_ARM_EABI + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the armv5-eabi architecture, using + the glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_GLIBC_STABLE + bool "armv5-eabi glibc stable 2024.02-1" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV5 + depends on BR2_ARM_EABI + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the armv5-eabi architecture, using + the glibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_MUSL_BLEEDING_EDGE + bool "armv5-eabi musl bleeding-edge 2024.02-1" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV5 + depends on BR2_ARM_EABI + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the armv5-eabi architecture, using + the musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_MUSL_STABLE + bool "armv5-eabi musl stable 2024.02-1" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV5 + depends on BR2_ARM_EABI + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the armv5-eabi architecture, using + the musl C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_UCLIBC_BLEEDING_EDGE + bool "armv5-eabi uclibc bleeding-edge 2024.02-1" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV5 + depends on BR2_ARM_EABI + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the armv5-eabi architecture, using + the uclibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_UCLIBC_STABLE + bool "armv5-eabi uclibc stable 2024.02-1" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV5 + depends on BR2_ARM_EABI + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the armv5-eabi architecture, using + the uclibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_GLIBC_BLEEDING_EDGE + bool "armv6-eabihf glibc bleeding-edge 2024.02-1" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV6 + depends on BR2_ARM_EABIHF + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the armv6-eabihf architecture, using + the glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_GLIBC_STABLE + bool "armv6-eabihf glibc stable 2024.02-1" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV6 + depends on BR2_ARM_EABIHF + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the armv6-eabihf architecture, using + the glibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_MUSL_BLEEDING_EDGE + bool "armv6-eabihf musl bleeding-edge 2024.02-1" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV6 + depends on BR2_ARM_EABIHF + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the armv6-eabihf architecture, using + the musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_MUSL_STABLE + bool "armv6-eabihf musl stable 2024.02-1" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV6 + depends on BR2_ARM_EABIHF + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the armv6-eabihf architecture, using + the musl C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_UCLIBC_BLEEDING_EDGE + bool "armv6-eabihf uclibc bleeding-edge 2024.02-1" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV6 + depends on BR2_ARM_EABIHF + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the armv6-eabihf architecture, using + the uclibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_UCLIBC_STABLE + bool "armv6-eabihf uclibc stable 2024.02-1" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV6 + depends on BR2_ARM_EABIHF + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the armv6-eabihf architecture, using + the uclibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_GLIBC_BLEEDING_EDGE + bool "armv7-eabihf glibc bleeding-edge 2024.02-1" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV7A + depends on BR2_ARM_EABIHF + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the armv7-eabihf architecture, using + the glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_GLIBC_STABLE + bool "armv7-eabihf glibc stable 2024.02-1" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV7A + depends on BR2_ARM_EABIHF + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the armv7-eabihf architecture, using + the glibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_MUSL_BLEEDING_EDGE + bool "armv7-eabihf musl bleeding-edge 2024.02-1" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV7A + depends on BR2_ARM_EABIHF + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the armv7-eabihf architecture, using + the musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_MUSL_STABLE + bool "armv7-eabihf musl stable 2024.02-1" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV7A + depends on BR2_ARM_EABIHF + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the armv7-eabihf architecture, using + the musl C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_UCLIBC_BLEEDING_EDGE + bool "armv7-eabihf uclibc bleeding-edge 2024.02-1" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV7A + depends on BR2_ARM_EABIHF + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the armv7-eabihf architecture, using + the uclibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_UCLIBC_STABLE + bool "armv7-eabihf uclibc stable 2024.02-1" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV7A + depends on BR2_ARM_EABIHF + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the armv7-eabihf architecture, using + the uclibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMEBV7_EABIHF_GLIBC_BLEEDING_EDGE + bool "armebv7-eabihf glibc bleeding-edge 2024.02-1" + depends on BR2_armeb + depends on BR2_ARM_CPU_ARMV7A + depends on BR2_ARM_EABIHF + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the armebv7-eabihf architecture, + using the glibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMEBV7_EABIHF_GLIBC_STABLE + bool "armebv7-eabihf glibc stable 2024.02-1" + depends on BR2_armeb + depends on BR2_ARM_CPU_ARMV7A + depends on BR2_ARM_EABIHF + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the armebv7-eabihf architecture, + using the glibc C library. This is a stable version, which + means it is using stable and proven versions of gcc, gdb + and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMEBV7_EABIHF_MUSL_BLEEDING_EDGE + bool "armebv7-eabihf musl bleeding-edge 2024.02-1" + depends on BR2_armeb + depends on BR2_ARM_CPU_ARMV7A + depends on BR2_ARM_EABIHF + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the armebv7-eabihf architecture, + using the musl C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMEBV7_EABIHF_MUSL_STABLE + bool "armebv7-eabihf musl stable 2024.02-1" + depends on BR2_armeb + depends on BR2_ARM_CPU_ARMV7A + depends on BR2_ARM_EABIHF + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the armebv7-eabihf architecture, + using the musl C library. This is a stable version, which + means it is using stable and proven versions of gcc, gdb + and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMEBV7_EABIHF_UCLIBC_BLEEDING_EDGE + bool "armebv7-eabihf uclibc bleeding-edge 2024.02-1" + depends on BR2_armeb + depends on BR2_ARM_CPU_ARMV7A + depends on BR2_ARM_EABIHF + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the armebv7-eabihf architecture, + using the uclibc C library. This is a bleeding-edge + version, which means it is using the latest versions of + gcc, gdb and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMEBV7_EABIHF_UCLIBC_STABLE + bool "armebv7-eabihf uclibc stable 2024.02-1" + depends on BR2_armeb + depends on BR2_ARM_CPU_ARMV7A + depends on BR2_ARM_EABIHF + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the armebv7-eabihf architecture, + using the uclibc C library. This is a stable version, which + means it is using stable and proven versions of gcc, gdb + and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7M_UCLIBC_BLEEDING_EDGE + bool "armv7m uclibc bleeding-edge 2024.02-1" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV7M + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the armv7m architecture, using the + uclibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7M_UCLIBC_STABLE + bool "armv7m uclibc stable 2024.02-1" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV7M + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the armv7m architecture, using the + uclibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_GLIBC_BLEEDING_EDGE + bool "m68k-68xxx glibc bleeding-edge 2024.02-1" + depends on BR2_m68k_m68k + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the m68k-68xxx architecture, using + the glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_GLIBC_STABLE + bool "m68k-68xxx glibc stable 2024.02-1" + depends on BR2_m68k_m68k + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the m68k-68xxx architecture, using + the glibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_MUSL_BLEEDING_EDGE + bool "m68k-68xxx musl bleeding-edge 2024.02-1" + depends on BR2_m68k_m68k + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the m68k-68xxx architecture, using + the musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_MUSL_STABLE + bool "m68k-68xxx musl stable 2024.02-1" + depends on BR2_m68k_m68k + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the m68k-68xxx architecture, using + the musl C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_UCLIBC_BLEEDING_EDGE + bool "m68k-68xxx uclibc bleeding-edge 2024.02-1" + depends on BR2_m68k_m68k + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the m68k-68xxx architecture, using + the uclibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_UCLIBC_STABLE + bool "m68k-68xxx uclibc stable 2024.02-1" + depends on BR2_m68k_m68k + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the m68k-68xxx architecture, using + the uclibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_COLDFIRE_UCLIBC_BLEEDING_EDGE + bool "m68k-coldfire uclibc bleeding-edge 2024.02-1" + depends on BR2_m68k_cf + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the m68k-coldfire architecture, using + the uclibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_COLDFIRE_UCLIBC_STABLE + bool "m68k-coldfire uclibc stable 2024.02-1" + depends on BR2_m68k_cf + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the m68k-coldfire architecture, using + the uclibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_GLIBC_BLEEDING_EDGE + bool "microblazebe glibc bleeding-edge 2024.02-1" + depends on BR2_microblazebe + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the microblazebe architecture, using + the glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_GLIBC_STABLE + bool "microblazebe glibc stable 2024.02-1" + depends on BR2_microblazebe + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the microblazebe architecture, using + the glibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_MUSL_BLEEDING_EDGE + bool "microblazebe musl bleeding-edge 2024.02-1" + depends on BR2_microblazebe + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the microblazebe architecture, using + the musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_MUSL_STABLE + bool "microblazebe musl stable 2024.02-1" + depends on BR2_microblazebe + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the microblazebe architecture, using + the musl C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_UCLIBC_BLEEDING_EDGE + bool "microblazebe uclibc bleeding-edge 2024.02-1" + depends on BR2_microblazebe + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the microblazebe architecture, using + the uclibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_UCLIBC_STABLE + bool "microblazebe uclibc stable 2024.02-1" + depends on BR2_microblazebe + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the microblazebe architecture, using + the uclibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_GLIBC_BLEEDING_EDGE + bool "microblazeel glibc bleeding-edge 2024.02-1" + depends on BR2_microblazeel + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the microblazeel architecture, using + the glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_GLIBC_STABLE + bool "microblazeel glibc stable 2024.02-1" + depends on BR2_microblazeel + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the microblazeel architecture, using + the glibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_MUSL_BLEEDING_EDGE + bool "microblazeel musl bleeding-edge 2024.02-1" + depends on BR2_microblazeel + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the microblazeel architecture, using + the musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_MUSL_STABLE + bool "microblazeel musl stable 2024.02-1" + depends on BR2_microblazeel + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the microblazeel architecture, using + the musl C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_UCLIBC_BLEEDING_EDGE + bool "microblazeel uclibc bleeding-edge 2024.02-1" + depends on BR2_microblazeel + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the microblazeel architecture, using + the uclibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_UCLIBC_STABLE + bool "microblazeel uclibc stable 2024.02-1" + depends on BR2_microblazeel + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the microblazeel architecture, using + the uclibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_GLIBC_BLEEDING_EDGE + bool "mips32 glibc bleeding-edge 2024.02-1" + depends on BR2_mips + depends on BR2_mips_32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the mips32 architecture, using the + glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_GLIBC_STABLE + bool "mips32 glibc stable 2024.02-1" + depends on BR2_mips + depends on BR2_mips_32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the mips32 architecture, using the + glibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_MUSL_BLEEDING_EDGE + bool "mips32 musl bleeding-edge 2024.02-1" + depends on BR2_mips + depends on BR2_mips_32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the mips32 architecture, using the + musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_MUSL_STABLE + bool "mips32 musl stable 2024.02-1" + depends on BR2_mips + depends on BR2_mips_32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the mips32 architecture, using the + musl C library. This is a stable version, which means it is + using stable and proven versions of gcc, gdb and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_UCLIBC_BLEEDING_EDGE + bool "mips32 uclibc bleeding-edge 2024.02-1" + depends on BR2_mips + depends on BR2_mips_32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the mips32 architecture, using the + uclibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_UCLIBC_STABLE + bool "mips32 uclibc stable 2024.02-1" + depends on BR2_mips + depends on BR2_mips_32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the mips32 architecture, using the + uclibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_GLIBC_BLEEDING_EDGE + bool "mips32el glibc bleeding-edge 2024.02-1" + depends on BR2_mipsel + depends on BR2_mips_32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the mips32el architecture, using the + glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_GLIBC_STABLE + bool "mips32el glibc stable 2024.02-1" + depends on BR2_mipsel + depends on BR2_mips_32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the mips32el architecture, using the + glibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_MUSL_BLEEDING_EDGE + bool "mips32el musl bleeding-edge 2024.02-1" + depends on BR2_mipsel + depends on BR2_mips_32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the mips32el architecture, using the + musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_MUSL_STABLE + bool "mips32el musl stable 2024.02-1" + depends on BR2_mipsel + depends on BR2_mips_32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the mips32el architecture, using the + musl C library. This is a stable version, which means it is + using stable and proven versions of gcc, gdb and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_UCLIBC_BLEEDING_EDGE + bool "mips32el uclibc bleeding-edge 2024.02-1" + depends on BR2_mipsel + depends on BR2_mips_32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the mips32el architecture, using the + uclibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_UCLIBC_STABLE + bool "mips32el uclibc stable 2024.02-1" + depends on BR2_mipsel + depends on BR2_mips_32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the mips32el architecture, using the + uclibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_GLIBC_BLEEDING_EDGE + bool "mips32r5el glibc bleeding-edge 2024.02-1" + depends on BR2_mipsel + depends on BR2_mips_32r5 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the mips32r5el architecture, using + the glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_GLIBC_STABLE + bool "mips32r5el glibc stable 2024.02-1" + depends on BR2_mipsel + depends on BR2_mips_32r5 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the mips32r5el architecture, using + the glibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_MUSL_BLEEDING_EDGE + bool "mips32r5el musl bleeding-edge 2024.02-1" + depends on BR2_mipsel + depends on BR2_mips_32r5 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the mips32r5el architecture, using + the musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_MUSL_STABLE + bool "mips32r5el musl stable 2024.02-1" + depends on BR2_mipsel + depends on BR2_mips_32r5 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the mips32r5el architecture, using + the musl C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_UCLIBC_BLEEDING_EDGE + bool "mips32r5el uclibc bleeding-edge 2024.02-1" + depends on BR2_mipsel + depends on BR2_mips_32r5 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the mips32r5el architecture, using + the uclibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_UCLIBC_STABLE + bool "mips32r5el uclibc stable 2024.02-1" + depends on BR2_mipsel + depends on BR2_mips_32r5 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the mips32r5el architecture, using + the uclibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_GLIBC_BLEEDING_EDGE + bool "mips32r6el glibc bleeding-edge 2024.02-1" + depends on BR2_mipsel + depends on BR2_mips_32r6 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the mips32r6el architecture, using + the glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_GLIBC_STABLE + bool "mips32r6el glibc stable 2024.02-1" + depends on BR2_mipsel + depends on BR2_mips_32r6 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the mips32r6el architecture, using + the glibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_MUSL_BLEEDING_EDGE + bool "mips32r6el musl bleeding-edge 2024.02-1" + depends on BR2_mipsel + depends on BR2_mips_32r6 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the mips32r6el architecture, using + the musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_MUSL_STABLE + bool "mips32r6el musl stable 2024.02-1" + depends on BR2_mipsel + depends on BR2_mips_32r6 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the mips32r6el architecture, using + the musl C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_UCLIBC_BLEEDING_EDGE + bool "mips32r6el uclibc bleeding-edge 2024.02-1" + depends on BR2_mipsel + depends on BR2_mips_32r6 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the mips32r6el architecture, using + the uclibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_UCLIBC_STABLE + bool "mips32r6el uclibc stable 2024.02-1" + depends on BR2_mipsel + depends on BR2_mips_32r6 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the mips32r6el architecture, using + the uclibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_GLIBC_BLEEDING_EDGE + bool "mips64-n32 glibc bleeding-edge 2024.02-1" + depends on BR2_mips64 + depends on BR2_mips_64 + depends on BR2_MIPS_NABI32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the mips64-n32 architecture, using + the glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_GLIBC_STABLE + bool "mips64-n32 glibc stable 2024.02-1" + depends on BR2_mips64 + depends on BR2_mips_64 + depends on BR2_MIPS_NABI32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the mips64-n32 architecture, using + the glibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_MUSL_BLEEDING_EDGE + bool "mips64-n32 musl bleeding-edge 2024.02-1" + depends on BR2_mips64 + depends on BR2_mips_64 + depends on BR2_MIPS_NABI32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the mips64-n32 architecture, using + the musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_MUSL_STABLE + bool "mips64-n32 musl stable 2024.02-1" + depends on BR2_mips64 + depends on BR2_mips_64 + depends on BR2_MIPS_NABI32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the mips64-n32 architecture, using + the musl C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_UCLIBC_BLEEDING_EDGE + bool "mips64-n32 uclibc bleeding-edge 2024.02-1" + depends on BR2_mips64 + depends on BR2_mips_64 + depends on BR2_MIPS_NABI32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the mips64-n32 architecture, using + the uclibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_UCLIBC_STABLE + bool "mips64-n32 uclibc stable 2024.02-1" + depends on BR2_mips64 + depends on BR2_mips_64 + depends on BR2_MIPS_NABI32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the mips64-n32 architecture, using + the uclibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_GLIBC_BLEEDING_EDGE + bool "mips64el-n32 glibc bleeding-edge 2024.02-1" + depends on BR2_mips64el + depends on BR2_mips_64 + depends on BR2_MIPS_NABI32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the mips64el-n32 architecture, using + the glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_GLIBC_STABLE + bool "mips64el-n32 glibc stable 2024.02-1" + depends on BR2_mips64el + depends on BR2_mips_64 + depends on BR2_MIPS_NABI32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the mips64el-n32 architecture, using + the glibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_MUSL_BLEEDING_EDGE + bool "mips64el-n32 musl bleeding-edge 2024.02-1" + depends on BR2_mips64el + depends on BR2_mips_64 + depends on BR2_MIPS_NABI32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the mips64el-n32 architecture, using + the musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_MUSL_STABLE + bool "mips64el-n32 musl stable 2024.02-1" + depends on BR2_mips64el + depends on BR2_mips_64 + depends on BR2_MIPS_NABI32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the mips64el-n32 architecture, using + the musl C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_UCLIBC_BLEEDING_EDGE + bool "mips64el-n32 uclibc bleeding-edge 2024.02-1" + depends on BR2_mips64el + depends on BR2_mips_64 + depends on BR2_MIPS_NABI32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the mips64el-n32 architecture, using + the uclibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_UCLIBC_STABLE + bool "mips64el-n32 uclibc stable 2024.02-1" + depends on BR2_mips64el + depends on BR2_mips_64 + depends on BR2_MIPS_NABI32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the mips64el-n32 architecture, using + the uclibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_GLIBC_BLEEDING_EDGE + bool "mips64r6el-n32 glibc bleeding-edge 2024.02-1" + depends on BR2_mips64el + depends on BR2_mips_64r6 + depends on BR2_MIPS_NABI32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the mips64r6el-n32 architecture, + using the glibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_GLIBC_STABLE + bool "mips64r6el-n32 glibc stable 2024.02-1" + depends on BR2_mips64el + depends on BR2_mips_64r6 + depends on BR2_MIPS_NABI32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the mips64r6el-n32 architecture, + using the glibc C library. This is a stable version, which + means it is using stable and proven versions of gcc, gdb + and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_MUSL_BLEEDING_EDGE + bool "mips64r6el-n32 musl bleeding-edge 2024.02-1" + depends on BR2_mips64el + depends on BR2_mips_64r6 + depends on BR2_MIPS_NABI32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the mips64r6el-n32 architecture, + using the musl C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_MUSL_STABLE + bool "mips64r6el-n32 musl stable 2024.02-1" + depends on BR2_mips64el + depends on BR2_mips_64r6 + depends on BR2_MIPS_NABI32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the mips64r6el-n32 architecture, + using the musl C library. This is a stable version, which + means it is using stable and proven versions of gcc, gdb + and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_UCLIBC_BLEEDING_EDGE + bool "mips64r6el-n32 uclibc bleeding-edge 2024.02-1" + depends on BR2_mips64el + depends on BR2_mips_64r6 + depends on BR2_MIPS_NABI32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the mips64r6el-n32 architecture, + using the uclibc C library. This is a bleeding-edge + version, which means it is using the latest versions of + gcc, gdb and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_UCLIBC_STABLE + bool "mips64r6el-n32 uclibc stable 2024.02-1" + depends on BR2_mips64el + depends on BR2_mips_64r6 + depends on BR2_MIPS_NABI32 + depends on !BR2_MIPS_SOFT_FLOAT + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the mips64r6el-n32 architecture, + using the uclibc C library. This is a stable version, which + means it is using stable and proven versions of gcc, gdb + and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_NIOS2_GLIBC_BLEEDING_EDGE + bool "nios2 glibc bleeding-edge 2024.02-1" + depends on BR2_nios2 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the nios2 architecture, using the + glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_NIOS2_GLIBC_STABLE + bool "nios2 glibc stable 2024.02-1" + depends on BR2_nios2 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the nios2 architecture, using the + glibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_GLIBC_BLEEDING_EDGE + bool "openrisc glibc bleeding-edge 2024.02-1" + depends on BR2_or1k + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the openrisc architecture, using the + glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_GLIBC_STABLE + bool "openrisc glibc stable 2023.11-1" + depends on BR2_or1k + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the openrisc architecture, using the + glibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_MUSL_BLEEDING_EDGE + bool "openrisc musl bleeding-edge 2024.02-1" + depends on BR2_or1k + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the openrisc architecture, using the + musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_MUSL_STABLE + bool "openrisc musl stable 2024.02-1" + depends on BR2_or1k + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the openrisc architecture, using the + musl C library. This is a stable version, which means it is + using stable and proven versions of gcc, gdb and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_UCLIBC_BLEEDING_EDGE + bool "openrisc uclibc bleeding-edge 2024.02-1" + depends on BR2_or1k + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the openrisc architecture, using the + uclibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_UCLIBC_STABLE + bool "openrisc uclibc stable 2024.02-1" + depends on BR2_or1k + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the openrisc architecture, using the + uclibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_GLIBC_BLEEDING_EDGE + bool "powerpc-440fp glibc bleeding-edge 2024.02-1" + depends on BR2_powerpc + depends on BR2_powerpc_440fp + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the powerpc-440fp architecture, using + the glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_GLIBC_STABLE + bool "powerpc-440fp glibc stable 2024.02-1" + depends on BR2_powerpc + depends on BR2_powerpc_440fp + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the powerpc-440fp architecture, using + the glibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_MUSL_BLEEDING_EDGE + bool "powerpc-440fp musl bleeding-edge 2024.02-1" + depends on BR2_powerpc + depends on BR2_powerpc_440fp + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the powerpc-440fp architecture, using + the musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_MUSL_STABLE + bool "powerpc-440fp musl stable 2024.02-1" + depends on BR2_powerpc + depends on BR2_powerpc_440fp + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the powerpc-440fp architecture, using + the musl C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_UCLIBC_BLEEDING_EDGE + bool "powerpc-440fp uclibc bleeding-edge 2024.02-1" + depends on BR2_powerpc + depends on BR2_powerpc_440fp + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the powerpc-440fp architecture, using + the uclibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_UCLIBC_STABLE + bool "powerpc-440fp uclibc stable 2024.02-1" + depends on BR2_powerpc + depends on BR2_powerpc_440fp + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the powerpc-440fp architecture, using + the uclibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_GLIBC_BLEEDING_EDGE + bool "powerpc-e300c3 glibc bleeding-edge 2024.02-1" + depends on BR2_powerpc + depends on BR2_powerpc_e300c3 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the powerpc-e300c3 architecture, + using the glibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_GLIBC_STABLE + bool "powerpc-e300c3 glibc stable 2024.02-1" + depends on BR2_powerpc + depends on BR2_powerpc_e300c3 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the powerpc-e300c3 architecture, + using the glibc C library. This is a stable version, which + means it is using stable and proven versions of gcc, gdb + and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_MUSL_BLEEDING_EDGE + bool "powerpc-e300c3 musl bleeding-edge 2024.02-1" + depends on BR2_powerpc + depends on BR2_powerpc_e300c3 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the powerpc-e300c3 architecture, + using the musl C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_MUSL_STABLE + bool "powerpc-e300c3 musl stable 2024.02-1" + depends on BR2_powerpc + depends on BR2_powerpc_e300c3 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the powerpc-e300c3 architecture, + using the musl C library. This is a stable version, which + means it is using stable and proven versions of gcc, gdb + and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_UCLIBC_BLEEDING_EDGE + bool "powerpc-e300c3 uclibc bleeding-edge 2024.02-1" + depends on BR2_powerpc + depends on BR2_powerpc_e300c3 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the powerpc-e300c3 architecture, + using the uclibc C library. This is a bleeding-edge + version, which means it is using the latest versions of + gcc, gdb and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_UCLIBC_STABLE + bool "powerpc-e300c3 uclibc stable 2024.02-1" + depends on BR2_powerpc + depends on BR2_powerpc_e300c3 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the powerpc-e300c3 architecture, + using the uclibc C library. This is a stable version, which + means it is using stable and proven versions of gcc, gdb + and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_GLIBC_BLEEDING_EDGE + bool "powerpc-e500mc glibc bleeding-edge 2024.02-1" + depends on BR2_powerpc + depends on BR2_powerpc_e500mc + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the powerpc-e500mc architecture, + using the glibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_GLIBC_STABLE + bool "powerpc-e500mc glibc stable 2024.02-1" + depends on BR2_powerpc + depends on BR2_powerpc_e500mc + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the powerpc-e500mc architecture, + using the glibc C library. This is a stable version, which + means it is using stable and proven versions of gcc, gdb + and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_MUSL_BLEEDING_EDGE + bool "powerpc-e500mc musl bleeding-edge 2024.02-1" + depends on BR2_powerpc + depends on BR2_powerpc_e500mc + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the powerpc-e500mc architecture, + using the musl C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_MUSL_STABLE + bool "powerpc-e500mc musl stable 2024.02-1" + depends on BR2_powerpc + depends on BR2_powerpc_e500mc + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the powerpc-e500mc architecture, + using the musl C library. This is a stable version, which + means it is using stable and proven versions of gcc, gdb + and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_UCLIBC_BLEEDING_EDGE + bool "powerpc-e500mc uclibc bleeding-edge 2024.02-1" + depends on BR2_powerpc + depends on BR2_powerpc_e500mc + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the powerpc-e500mc architecture, + using the uclibc C library. This is a bleeding-edge + version, which means it is using the latest versions of + gcc, gdb and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_UCLIBC_STABLE + bool "powerpc-e500mc uclibc stable 2024.02-1" + depends on BR2_powerpc + depends on BR2_powerpc_e500mc + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the powerpc-e500mc architecture, + using the uclibc C library. This is a stable version, which + means it is using stable and proven versions of gcc, gdb + and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E5500_GLIBC_BLEEDING_EDGE + bool "powerpc64-e5500 glibc bleeding-edge 2024.02-1" + depends on BR2_powerpc64 + depends on BR2_powerpc_e5500 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the powerpc64-e5500 architecture, + using the glibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E5500_GLIBC_STABLE + bool "powerpc64-e5500 glibc stable 2024.02-1" + depends on BR2_powerpc64 + depends on BR2_powerpc_e5500 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the powerpc64-e5500 architecture, + using the glibc C library. This is a stable version, which + means it is using stable and proven versions of gcc, gdb + and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_GLIBC_BLEEDING_EDGE + bool "powerpc64-e6500 glibc bleeding-edge 2024.02-1" + depends on BR2_powerpc64 + depends on BR2_powerpc_e6500 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the powerpc64-e6500 architecture, + using the glibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_GLIBC_STABLE + bool "powerpc64-e6500 glibc stable 2024.02-1" + depends on BR2_powerpc64 + depends on BR2_powerpc_e6500 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the powerpc64-e6500 architecture, + using the glibc C library. This is a stable version, which + means it is using stable and proven versions of gcc, gdb + and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_MUSL_BLEEDING_EDGE + bool "powerpc64-e6500 musl bleeding-edge 2024.02-1" + depends on BR2_powerpc64 + depends on BR2_powerpc_e6500 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the powerpc64-e6500 architecture, + using the musl C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_MUSL_STABLE + bool "powerpc64-e6500 musl stable 2024.02-1" + depends on BR2_powerpc64 + depends on BR2_powerpc_e6500 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the powerpc64-e6500 architecture, + using the musl C library. This is a stable version, which + means it is using stable and proven versions of gcc, gdb + and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_GLIBC_BLEEDING_EDGE + bool "powerpc64-power8 glibc bleeding-edge 2024.02-1" + depends on BR2_powerpc64 + depends on BR2_powerpc_power8 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the powerpc64-power8 architecture, + using the glibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_GLIBC_STABLE + bool "powerpc64-power8 glibc stable 2024.02-1" + depends on BR2_powerpc64 + depends on BR2_powerpc_power8 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the powerpc64-power8 architecture, + using the glibc C library. This is a stable version, which + means it is using stable and proven versions of gcc, gdb + and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_MUSL_BLEEDING_EDGE + bool "powerpc64-power8 musl bleeding-edge 2024.02-1" + depends on BR2_powerpc64 + depends on BR2_powerpc_power8 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the powerpc64-power8 architecture, + using the musl C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_MUSL_STABLE + bool "powerpc64-power8 musl stable 2024.02-1" + depends on BR2_powerpc64 + depends on BR2_powerpc_power8 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the powerpc64-power8 architecture, + using the musl C library. This is a stable version, which + means it is using stable and proven versions of gcc, gdb + and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_GLIBC_BLEEDING_EDGE + bool "powerpc64le-power8 glibc bleeding-edge 2024.02-1" + depends on BR2_powerpc64le + depends on BR2_powerpc_power8 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the powerpc64le-power8 architecture, + using the glibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_GLIBC_STABLE + bool "powerpc64le-power8 glibc stable 2024.02-1" + depends on BR2_powerpc64le + depends on BR2_powerpc_power8 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the powerpc64le-power8 architecture, + using the glibc C library. This is a stable version, which + means it is using stable and proven versions of gcc, gdb + and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_MUSL_BLEEDING_EDGE + bool "powerpc64le-power8 musl bleeding-edge 2024.02-1" + depends on BR2_powerpc64le + depends on BR2_powerpc_power8 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the powerpc64le-power8 architecture, + using the musl C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_MUSL_STABLE + bool "powerpc64le-power8 musl stable 2024.02-1" + depends on BR2_powerpc64le + depends on BR2_powerpc_power8 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the powerpc64le-power8 architecture, + using the musl C library. This is a stable version, which + means it is using stable and proven versions of gcc, gdb + and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV32_ILP32D_GLIBC_BLEEDING_EDGE + bool "riscv32-ilp32d glibc bleeding-edge 2024.02-1" + depends on BR2_riscv + depends on BR2_riscv_g + depends on BR2_RISCV_32 + depends on BR2_RISCV_ABI_ILP32D + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the riscv32-ilp32d architecture, + using the glibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV32_ILP32D_MUSL_BLEEDING_EDGE + bool "riscv32-ilp32d musl bleeding-edge 2024.02-1" + depends on BR2_riscv + depends on BR2_riscv_g + depends on BR2_RISCV_32 + depends on BR2_RISCV_ABI_ILP32D + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the riscv32-ilp32d architecture, + using the musl C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV32_ILP32D_MUSL_STABLE + bool "riscv32-ilp32d musl stable 2024.02-1" + depends on BR2_riscv + depends on BR2_riscv_g + depends on BR2_RISCV_32 + depends on BR2_RISCV_ABI_ILP32D + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the riscv32-ilp32d architecture, + using the musl C library. This is a stable version, which + means it is using stable and proven versions of gcc, gdb + and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_LP64D_GLIBC_BLEEDING_EDGE + bool "riscv64-lp64d glibc bleeding-edge 2024.02-1" + depends on BR2_riscv + depends on BR2_riscv_g + depends on BR2_RISCV_64 + depends on BR2_RISCV_ABI_LP64D + depends on BR2_USE_MMU + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the riscv64-lp64d architecture, using + the glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_LP64D_GLIBC_STABLE + bool "riscv64-lp64d glibc stable 2023.11-1" + depends on BR2_riscv + depends on BR2_riscv_g + depends on BR2_RISCV_64 + depends on BR2_RISCV_ABI_LP64D + depends on BR2_USE_MMU + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the riscv64-lp64d architecture, using + the glibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_LP64D_MUSL_BLEEDING_EDGE + bool "riscv64-lp64d musl bleeding-edge 2024.02-1" + depends on BR2_riscv + depends on BR2_riscv_g + depends on BR2_RISCV_64 + depends on BR2_RISCV_ABI_LP64D + depends on BR2_USE_MMU + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the riscv64-lp64d architecture, using + the musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_LP64D_MUSL_STABLE + bool "riscv64-lp64d musl stable 2023.11-1" + depends on BR2_riscv + depends on BR2_riscv_g + depends on BR2_RISCV_64 + depends on BR2_RISCV_ABI_LP64D + depends on BR2_USE_MMU + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the riscv64-lp64d architecture, using + the musl C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_LP64D_UCLIBC_BLEEDING_EDGE + bool "riscv64-lp64d uclibc bleeding-edge 2024.02-1" + depends on BR2_riscv + depends on BR2_riscv_g + depends on BR2_RISCV_64 + depends on BR2_RISCV_ABI_LP64D + depends on BR2_USE_MMU + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the riscv64-lp64d architecture, using + the uclibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_LP64D_UCLIBC_STABLE + bool "riscv64-lp64d uclibc stable 2023.11-1" + depends on BR2_riscv + depends on BR2_riscv_g + depends on BR2_RISCV_64 + depends on BR2_RISCV_ABI_LP64D + depends on BR2_USE_MMU + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the riscv64-lp64d architecture, using + the uclibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_S390X_Z13_GLIBC_BLEEDING_EDGE + bool "s390x-z13 glibc bleeding-edge 2024.02-1" + depends on BR2_s390x + depends on BR2_s390x_z13 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the s390x-z13 architecture, using the + glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_S390X_Z13_GLIBC_STABLE + bool "s390x-z13 glibc stable 2024.02-1" + depends on BR2_s390x + depends on BR2_s390x_z13 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the s390x-z13 architecture, using the + glibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_GLIBC_BLEEDING_EDGE + bool "sh-sh4 glibc bleeding-edge 2024.02-1" + depends on BR2_sh + depends on BR2_sh4 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the sh-sh4 architecture, using the + glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_GLIBC_STABLE + bool "sh-sh4 glibc stable 2024.02-1" + depends on BR2_sh + depends on BR2_sh4 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the sh-sh4 architecture, using the + glibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_MUSL_BLEEDING_EDGE + bool "sh-sh4 musl bleeding-edge 2024.02-1" + depends on BR2_sh + depends on BR2_sh4 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the sh-sh4 architecture, using the + musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_MUSL_STABLE + bool "sh-sh4 musl stable 2024.02-1" + depends on BR2_sh + depends on BR2_sh4 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the sh-sh4 architecture, using the + musl C library. This is a stable version, which means it is + using stable and proven versions of gcc, gdb and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_UCLIBC_BLEEDING_EDGE + bool "sh-sh4 uclibc bleeding-edge 2024.02-1" + depends on BR2_sh + depends on BR2_sh4 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the sh-sh4 architecture, using the + uclibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_UCLIBC_STABLE + bool "sh-sh4 uclibc stable 2024.02-1" + depends on BR2_sh + depends on BR2_sh4 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the sh-sh4 architecture, using the + uclibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_GLIBC_BLEEDING_EDGE + bool "sh-sh4aeb glibc bleeding-edge 2024.02-1" + depends on BR2_sh + depends on BR2_sh4aeb + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the sh-sh4aeb architecture, using the + glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_GLIBC_STABLE + bool "sh-sh4aeb glibc stable 2024.02-1" + depends on BR2_sh + depends on BR2_sh4aeb + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the sh-sh4aeb architecture, using the + glibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_MUSL_BLEEDING_EDGE + bool "sh-sh4aeb musl bleeding-edge 2024.02-1" + depends on BR2_sh + depends on BR2_sh4aeb + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the sh-sh4aeb architecture, using the + musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_MUSL_STABLE + bool "sh-sh4aeb musl stable 2024.02-1" + depends on BR2_sh + depends on BR2_sh4aeb + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the sh-sh4aeb architecture, using the + musl C library. This is a stable version, which means it is + using stable and proven versions of gcc, gdb and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARC64_GLIBC_BLEEDING_EDGE + bool "sparc64 glibc bleeding-edge 2024.02-1" + depends on BR2_sparc64 + depends on BR2_sparc_v9 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the sparc64 architecture, using the + glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARC64_GLIBC_STABLE + bool "sparc64 glibc stable 2024.02-1" + depends on BR2_sparc64 + depends on BR2_sparc_v9 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the sparc64 architecture, using the + glibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARCV8_UCLIBC_BLEEDING_EDGE + bool "sparcv8 uclibc bleeding-edge 2022.08-2" + depends on BR2_sparc + depends on BR2_sparc_v8 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_GCC_AT_LEAST_11 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the sparcv8 architecture, using the + uclibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARCV8_UCLIBC_STABLE + bool "sparcv8 uclibc stable 2022.08-1" + depends on BR2_sparc + depends on BR2_sparc_v8 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_11 + select BR2_TOOLCHAIN_GCC_AT_LEAST_10 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the sparcv8 architecture, using the + uclibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_GLIBC_BLEEDING_EDGE + bool "x86-64 glibc bleeding-edge 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the x86-64 architecture, using the + glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_GLIBC_STABLE + bool "x86-64 glibc stable 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the x86-64 architecture, using the + glibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_MUSL_BLEEDING_EDGE + bool "x86-64 musl bleeding-edge 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the x86-64 architecture, using the + musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_MUSL_STABLE + bool "x86-64 musl stable 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the x86-64 architecture, using the + musl C library. This is a stable version, which means it is + using stable and proven versions of gcc, gdb and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_UCLIBC_BLEEDING_EDGE + bool "x86-64 uclibc bleeding-edge 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the x86-64 architecture, using the + uclibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_UCLIBC_STABLE + bool "x86-64 uclibc stable 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the x86-64 architecture, using the + uclibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V2_GLIBC_BLEEDING_EDGE + bool "x86-64-v2 glibc bleeding-edge 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the x86-64-v2 architecture, using the + glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V2_GLIBC_STABLE + bool "x86-64-v2 glibc stable 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the x86-64-v2 architecture, using the + glibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V2_MUSL_BLEEDING_EDGE + bool "x86-64-v2 musl bleeding-edge 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the x86-64-v2 architecture, using the + musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V2_MUSL_STABLE + bool "x86-64-v2 musl stable 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the x86-64-v2 architecture, using the + musl C library. This is a stable version, which means it is + using stable and proven versions of gcc, gdb and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V2_UCLIBC_BLEEDING_EDGE + bool "x86-64-v2 uclibc bleeding-edge 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the x86-64-v2 architecture, using the + uclibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V2_UCLIBC_STABLE + bool "x86-64-v2 uclibc stable 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the x86-64-v2 architecture, using the + uclibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V3_GLIBC_BLEEDING_EDGE + bool "x86-64-v3 glibc bleeding-edge 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on BR2_X86_CPU_HAS_AVX + depends on BR2_X86_CPU_HAS_AVX2 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the x86-64-v3 architecture, using the + glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V3_GLIBC_STABLE + bool "x86-64-v3 glibc stable 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on BR2_X86_CPU_HAS_AVX + depends on BR2_X86_CPU_HAS_AVX2 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the x86-64-v3 architecture, using the + glibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V3_MUSL_BLEEDING_EDGE + bool "x86-64-v3 musl bleeding-edge 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on BR2_X86_CPU_HAS_AVX + depends on BR2_X86_CPU_HAS_AVX2 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the x86-64-v3 architecture, using the + musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V3_MUSL_STABLE + bool "x86-64-v3 musl stable 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on BR2_X86_CPU_HAS_AVX + depends on BR2_X86_CPU_HAS_AVX2 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the x86-64-v3 architecture, using the + musl C library. This is a stable version, which means it is + using stable and proven versions of gcc, gdb and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V3_UCLIBC_BLEEDING_EDGE + bool "x86-64-v3 uclibc bleeding-edge 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on BR2_X86_CPU_HAS_AVX + depends on BR2_X86_CPU_HAS_AVX2 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the x86-64-v3 architecture, using the + uclibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V3_UCLIBC_STABLE + bool "x86-64-v3 uclibc stable 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on BR2_X86_CPU_HAS_AVX + depends on BR2_X86_CPU_HAS_AVX2 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the x86-64-v3 architecture, using the + uclibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V4_GLIBC_BLEEDING_EDGE + bool "x86-64-v4 glibc bleeding-edge 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on BR2_X86_CPU_HAS_AVX + depends on BR2_X86_CPU_HAS_AVX2 + depends on BR2_X86_CPU_HAS_AVX512 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the x86-64-v4 architecture, using the + glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V4_GLIBC_STABLE + bool "x86-64-v4 glibc stable 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on BR2_X86_CPU_HAS_AVX + depends on BR2_X86_CPU_HAS_AVX2 + depends on BR2_X86_CPU_HAS_AVX512 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the x86-64-v4 architecture, using the + glibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V4_MUSL_BLEEDING_EDGE + bool "x86-64-v4 musl bleeding-edge 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on BR2_X86_CPU_HAS_AVX + depends on BR2_X86_CPU_HAS_AVX2 + depends on BR2_X86_CPU_HAS_AVX512 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the x86-64-v4 architecture, using the + musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V4_MUSL_STABLE + bool "x86-64-v4 musl stable 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on BR2_X86_CPU_HAS_AVX + depends on BR2_X86_CPU_HAS_AVX2 + depends on BR2_X86_CPU_HAS_AVX512 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the x86-64-v4 architecture, using the + musl C library. This is a stable version, which means it is + using stable and proven versions of gcc, gdb and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V4_UCLIBC_BLEEDING_EDGE + bool "x86-64-v4 uclibc bleeding-edge 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on BR2_X86_CPU_HAS_AVX + depends on BR2_X86_CPU_HAS_AVX2 + depends on BR2_X86_CPU_HAS_AVX512 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the x86-64-v4 architecture, using the + uclibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V4_UCLIBC_STABLE + bool "x86-64-v4 uclibc stable 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on BR2_X86_CPU_HAS_AVX + depends on BR2_X86_CPU_HAS_AVX2 + depends on BR2_X86_CPU_HAS_AVX512 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the x86-64-v4 architecture, using the + uclibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_BLEEDING_EDGE + bool "x86-64-core-i7 glibc bleeding-edge 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the x86-64-core-i7 architecture, + using the glibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_STABLE + bool "x86-64-core-i7 glibc stable 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the x86-64-core-i7 architecture, + using the glibc C library. This is a stable version, which + means it is using stable and proven versions of gcc, gdb + and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_MUSL_BLEEDING_EDGE + bool "x86-64-core-i7 musl bleeding-edge 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the x86-64-core-i7 architecture, + using the musl C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_MUSL_STABLE + bool "x86-64-core-i7 musl stable 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the x86-64-core-i7 architecture, + using the musl C library. This is a stable version, which + means it is using stable and proven versions of gcc, gdb + and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_UCLIBC_BLEEDING_EDGE + bool "x86-64-core-i7 uclibc bleeding-edge 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the x86-64-core-i7 architecture, + using the uclibc C library. This is a bleeding-edge + version, which means it is using the latest versions of + gcc, gdb and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_UCLIBC_STABLE + bool "x86-64-core-i7 uclibc stable 2024.02-1" + depends on BR2_x86_64 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on BR2_X86_CPU_HAS_SSE4 + depends on BR2_X86_CPU_HAS_SSE42 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the x86-64-core-i7 architecture, + using the uclibc C library. This is a stable version, which + means it is using stable and proven versions of gcc, gdb + and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_GLIBC_BLEEDING_EDGE + bool "x86-core2 glibc bleeding-edge 2024.02-1" + depends on BR2_i386 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the x86-core2 architecture, using the + glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_GLIBC_STABLE + bool "x86-core2 glibc stable 2024.02-1" + depends on BR2_i386 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the x86-core2 architecture, using the + glibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_MUSL_BLEEDING_EDGE + bool "x86-core2 musl bleeding-edge 2024.02-1" + depends on BR2_i386 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the x86-core2 architecture, using the + musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_MUSL_STABLE + bool "x86-core2 musl stable 2024.02-1" + depends on BR2_i386 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the x86-core2 architecture, using the + musl C library. This is a stable version, which means it is + using stable and proven versions of gcc, gdb and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_UCLIBC_BLEEDING_EDGE + bool "x86-core2 uclibc bleeding-edge 2024.02-1" + depends on BR2_i386 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the x86-core2 architecture, using the + uclibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_UCLIBC_STABLE + bool "x86-core2 uclibc stable 2024.02-1" + depends on BR2_i386 + depends on BR2_X86_CPU_HAS_MMX + depends on BR2_X86_CPU_HAS_SSE + depends on BR2_X86_CPU_HAS_SSE2 + depends on BR2_X86_CPU_HAS_SSE3 + depends on BR2_X86_CPU_HAS_SSSE3 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the x86-core2 architecture, using the + uclibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_GLIBC_BLEEDING_EDGE + bool "x86-i686 glibc bleeding-edge 2024.02-1" + depends on BR2_i386 + depends on !BR2_x86_i486 + depends on !BR2_x86_i586 + depends on !BR2_x86_x1000 + depends on !BR2_x86_pentium_mmx + depends on !BR2_x86_geode + depends on !BR2_x86_c3 + depends on !BR2_x86_winchip_c6 + depends on !BR2_x86_winchip2 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the x86-i686 architecture, using the + glibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_GLIBC_STABLE + bool "x86-i686 glibc stable 2024.02-1" + depends on BR2_i386 + depends on !BR2_x86_i486 + depends on !BR2_x86_i586 + depends on !BR2_x86_x1000 + depends on !BR2_x86_pentium_mmx + depends on !BR2_x86_geode + depends on !BR2_x86_c3 + depends on !BR2_x86_winchip_c6 + depends on !BR2_x86_winchip2 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Bootlin toolchain for the x86-i686 architecture, using the + glibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_MUSL_BLEEDING_EDGE + bool "x86-i686 musl bleeding-edge 2024.02-1" + depends on BR2_i386 + depends on !BR2_x86_i486 + depends on !BR2_x86_i586 + depends on !BR2_x86_x1000 + depends on !BR2_x86_pentium_mmx + depends on !BR2_x86_geode + depends on !BR2_x86_c3 + depends on !BR2_x86_winchip_c6 + depends on !BR2_x86_winchip2 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the x86-i686 architecture, using the + musl C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_MUSL_STABLE + bool "x86-i686 musl stable 2024.02-1" + depends on BR2_i386 + depends on !BR2_x86_i486 + depends on !BR2_x86_i586 + depends on !BR2_x86_x1000 + depends on !BR2_x86_pentium_mmx + depends on !BR2_x86_geode + depends on !BR2_x86_c3 + depends on !BR2_x86_winchip_c6 + depends on !BR2_x86_winchip2 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Bootlin toolchain for the x86-i686 architecture, using the + musl C library. This is a stable version, which means it is + using stable and proven versions of gcc, gdb and binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_UCLIBC_BLEEDING_EDGE + bool "x86-i686 uclibc bleeding-edge 2024.02-1" + depends on BR2_i386 + depends on !BR2_x86_i486 + depends on !BR2_x86_i586 + depends on !BR2_x86_x1000 + depends on !BR2_x86_pentium_mmx + depends on !BR2_x86_geode + depends on !BR2_x86_c3 + depends on !BR2_x86_winchip_c6 + depends on !BR2_x86_winchip2 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the x86-i686 architecture, using the + uclibc C library. This is a bleeding-edge version, which + means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_UCLIBC_STABLE + bool "x86-i686 uclibc stable 2024.02-1" + depends on BR2_i386 + depends on !BR2_x86_i486 + depends on !BR2_x86_i586 + depends on !BR2_x86_x1000 + depends on !BR2_x86_pentium_mmx + depends on !BR2_x86_geode + depends on !BR2_x86_c3 + depends on !BR2_x86_winchip_c6 + depends on !BR2_x86_winchip2 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the x86-i686 architecture, using the + uclibc C library. This is a stable version, which means it + is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_XTENSA_LX60_UCLIBC_BLEEDING_EDGE + bool "xtensa-lx60 uclibc bleeding-edge 2024.02-1" + depends on BR2_xtensa + depends on BR2_XTENSA_CUSTOM + depends on BR2_XTENSA_LITTLE_ENDIAN + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_14 + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the xtensa-lx60 architecture, using + the uclibc C library. This is a bleeding-edge version, + which means it is using the latest versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_XTENSA_LX60_UCLIBC_STABLE + bool "xtensa-lx60 uclibc stable 2024.02-1" + depends on BR2_xtensa + depends on BR2_XTENSA_CUSTOM + depends on BR2_XTENSA_LITTLE_ENDIAN + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + Bootlin toolchain for the xtensa-lx60 architecture, using + the uclibc C library. This is a stable version, which means + it is using stable and proven versions of gcc, gdb and + binutils. + + https://toolchains.bootlin.com/ + +endchoice +endif diff --git a/toolchain/toolchain-external/toolchain-external-bootlin/toolchain-external-bootlin.hash b/toolchain/toolchain-external/toolchain-external-bootlin/toolchain-external-bootlin.hash new file mode 100644 index 00000000..547e87b0 --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-bootlin/toolchain-external-bootlin.hash @@ -0,0 +1,432 @@ +# This file was auto-generated by support/scripts/gen-bootlin-toolchains +# Do not edit +# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--glibc--bleeding-edge-2024.02-1.sha256 +sha256 09a5a8a59403e3df7a557014d0f9463e8e366c5431656252f0ce3fc00ecfc050 aarch64--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--glibc--stable-2024.02-1.sha256 +sha256 30a7a7e8f1c7165ca0c6ad6a11403e94ea65144a3c0181c2fa1f619ab972f26f aarch64--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--musl--bleeding-edge-2024.02-1.sha256 +sha256 d81e3517b69ebc49bec9e130952cd7c18fd0f84e992720e18e9cd02110c00296 aarch64--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--musl--stable-2024.02-1.sha256 +sha256 aaa1a5c9212067de3618afbb8f3de4047d99fa1d23e5bc1452bab7fd3744df2e aarch64--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 225e3d9a1fd938e7779e357bc36d8639df8c413c4b31056292c83281677d184d aarch64--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--uclibc--stable-2024.02-1.sha256 +sha256 de74a7fd974a5601418a60da645b433df6fd7773dda124a10d860c7f586e5a9d aarch64--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs/aarch64be--glibc--bleeding-edge-2024.02-1.sha256 +sha256 80cb37b022aa74c7329cef44336024fc5ca18c6193fdabfef01241153aba7f9d aarch64be--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs/aarch64be--glibc--stable-2024.02-1.sha256 +sha256 aff4f324dd6318a66e94e512a0582c25f765b24e91e4e5576f7b917d585439e6 aarch64be--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs/aarch64be--musl--bleeding-edge-2024.02-1.sha256 +sha256 c3ac7754efd3bf2968021ca7321edc8ea361ee3e071ed50b2d2d72c68d0a0de9 aarch64be--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs/aarch64be--musl--stable-2024.02-1.sha256 +sha256 143f57255fd8be375b3b16f4346a419968ba53fc839d6623752a4e9649809f21 aarch64be--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs/aarch64be--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 0d25460ea796663839c0d023686fde91f248e19cbcc1c5eab1f6daa504bad019 aarch64be--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs/aarch64be--uclibc--stable-2024.02-1.sha256 +sha256 ea1f0195ce312417f7ef915a5c5c339893f48a20698f46b3ed183cf0f6b8faab aarch64be--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-750d/tarballs/arcle-750d--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 a3a59cb25854ccb052035636e6d65c6ef3158182b69d23d2bd6c8a6e4284a052 arcle-750d--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-750d/tarballs/arcle-750d--uclibc--stable-2024.02-1.sha256 +sha256 315da85c124833e012565ec0c4cfdb8a334a302d21ab1f4b1289837035dcfa40 arcle-750d--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs/arcle-hs38--glibc--bleeding-edge-2024.02-1.sha256 +sha256 2bf7b934cf62035ebed6e999ecd0a9af815297151362e799472437bcca0498f9 arcle-hs38--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs/arcle-hs38--glibc--stable-2023.11-1.sha256 +sha256 91c048fb79152969253a3bb96a9cd77c79c2ba5a3081d2da7cf103069661e303 arcle-hs38--glibc--stable-2023.11-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs/arcle-hs38--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 2729a47b36989dc95346d31934dcb358f240075dc838c35ccac075f67322ab64 arcle-hs38--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs/arcle-hs38--uclibc--stable-2024.02-1.sha256 +sha256 9d0ef6443c7192e5ae5301e9c1cc22437224e404ed3232dd17fc042dd2e6b5b5 arcle-hs38--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--glibc--bleeding-edge-2024.02-1.sha256 +sha256 8f6c0bd14479ced3814917a12cc8c0809fa5161c87da39b362a1ec8bc348e95c armv5-eabi--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--glibc--stable-2024.02-1.sha256 +sha256 9c43357d0eb79ba3f1aab8f020bdc673d24af0a44e2825c19eee2917308bc47e armv5-eabi--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--musl--bleeding-edge-2024.02-1.sha256 +sha256 8dac4ea5697a42a88bd1d7d91c3d57a20a7db6239857def3d7518c8e2330b5a4 armv5-eabi--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--musl--stable-2024.02-1.sha256 +sha256 be82371ce785f28be097887fa43e6e63644c9226f12ca4c3f23e54792dba18e8 armv5-eabi--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 6333e0b6e5e1b40c92eb276fe6ecc713932b159df01df6e58d48285e4a9076b7 armv5-eabi--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--uclibc--stable-2024.02-1.sha256 +sha256 68fba0cfb5af4136fe88fb451db9005ed2a8576509a9b1daf140eca5575460d5 armv5-eabi--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--glibc--bleeding-edge-2024.02-1.sha256 +sha256 45aabb8a3b31bb28518680eb9bc91a7f9228bdb71c6473f7d3ba03754f3f8769 armv6-eabihf--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--glibc--stable-2024.02-1.sha256 +sha256 e3d873f4be92438632da140c087bbd0025e406d138e7f5832d9481af1c9146ef armv6-eabihf--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--musl--bleeding-edge-2024.02-1.sha256 +sha256 04e7b5803f4f9984cab333570d537ce185d8a9892b95f2db7ba2e50c22e6b7bc armv6-eabihf--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--musl--stable-2024.02-1.sha256 +sha256 2d91a0a9fb4cff3046943307c70054507ec12c43eedbeb95eb597cfee2d3b58d armv6-eabihf--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 3fcc8fdf8eaa94ac48f3d8a51484904829c665a018d8a8ef8ae9491382f944f9 armv6-eabihf--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--uclibc--stable-2024.02-1.sha256 +sha256 cbd1de7ca4921e55c85a074ee2381996d07e2a5e378d3c3e6b86da587a0aa9fc armv6-eabihf--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--glibc--bleeding-edge-2024.02-1.sha256 +sha256 db5178feac8a02f3dc6fab16448d0ca2835bc915ca0453f6aba6510b7dccfb5d armv7-eabihf--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--glibc--stable-2024.02-1.sha256 +sha256 ec079d95388d5313f73e67fd32859ccbe2369f280d74aa103c40323c8cc6bd57 armv7-eabihf--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--musl--bleeding-edge-2024.02-1.sha256 +sha256 9c1cd34a2f488c01315ce4943a4b1ba59f92608cf902dfe3606eb1d1b2503e45 armv7-eabihf--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--musl--stable-2024.02-1.sha256 +sha256 88b5f04190e095969bd4fa5ffb4322181f2311b09e075d6ee13d74e88e7bff32 armv7-eabihf--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 900a2e383165cf6cc32c1e9271bce2d686702e6407058b7a196e49b812b8d05f armv7-eabihf--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--uclibc--stable-2024.02-1.sha256 +sha256 bfbd81e15f771f4dbf0537677f4338731faaaa6fc250efd5027ccbe347b1f3f1 armv7-eabihf--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs/armebv7-eabihf--glibc--bleeding-edge-2024.02-1.sha256 +sha256 76d31189aa2b52320a35757cb45920ae91303681e7e72601ce858082d7ed5120 armebv7-eabihf--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs/armebv7-eabihf--glibc--stable-2024.02-1.sha256 +sha256 0075aee77819c918cf54c1d2cda3ccbea2e59ac93cbbc42706736b741d6d625e armebv7-eabihf--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs/armebv7-eabihf--musl--bleeding-edge-2024.02-1.sha256 +sha256 2c142234299301d3871c6ec878eaefc08dd14785cb96e691e605d23c0a7d1f2e armebv7-eabihf--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs/armebv7-eabihf--musl--stable-2024.02-1.sha256 +sha256 6ee263a880819cf629f3ace5c2da9174ab19d1bdf4be59d9ffc6cc52b7693bc8 armebv7-eabihf--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs/armebv7-eabihf--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 1fbb9bcdcc82c1dbb226dfe47c568d7f1d46676974aecbe46f711ef4b5939298 armebv7-eabihf--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs/armebv7-eabihf--uclibc--stable-2024.02-1.sha256 +sha256 fab1646eca9a5bf1ccd5fd95f26a48b9fa4cc24b70051140710f95bd8c3899ba armebv7-eabihf--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7m/tarballs/armv7m--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 eebbdae08ba9ae84f0eccf2154b7c295fa60c787f6767015ac2b2df113809cec armv7m--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7m/tarballs/armv7m--uclibc--stable-2024.02-1.sha256 +sha256 b421fb864bcd3d7ad5e964d344b5790724e05642380784cef547e9c1f99282cd armv7m--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs/m68k-68xxx--glibc--bleeding-edge-2024.02-1.sha256 +sha256 9943453b4afb89670c4de266a24d0406a2fb0c44cd030c50a86e2524c709ed01 m68k-68xxx--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs/m68k-68xxx--glibc--stable-2024.02-1.sha256 +sha256 bf6d5f67104787dedee69f565e180af91c9e2ee12b184eb29c4a91e1cfb41d13 m68k-68xxx--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs/m68k-68xxx--musl--bleeding-edge-2024.02-1.sha256 +sha256 510677f9ab05f6d8ac726459897d936064c4adcc5c5d2b6e9f52f7bab9677eac m68k-68xxx--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs/m68k-68xxx--musl--stable-2024.02-1.sha256 +sha256 a4701199b74e5d242c5b61b3d23a03b4958b8d2c438c9744f7b6198ad78d8b5c m68k-68xxx--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs/m68k-68xxx--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 2e0727f0ba9549ccb8abd7f7bd3f1be13b516e20665e1da4a8106a247a7fd334 m68k-68xxx--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs/m68k-68xxx--uclibc--stable-2024.02-1.sha256 +sha256 35ec4229ef7ae582ece4709b5906a9423c6f2284831a9b84ca13a5a5d98710c7 m68k-68xxx--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-coldfire/tarballs/m68k-coldfire--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 1b742f3fc3eb62c6c6cd7c3a0436ec92d647270e6acd8295b295399c58f3e224 m68k-coldfire--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-coldfire/tarballs/m68k-coldfire--uclibc--stable-2024.02-1.sha256 +sha256 b2acfb9d72156c6cf0da98f50487d4cd437fd9018e85e861bb1d506b85d52fd4 m68k-coldfire--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--glibc--bleeding-edge-2024.02-1.sha256 +sha256 22f742453af1c315ca9376e0bff1e5fd04fee72b3b6c037b7ac99750ec96afd4 microblazebe--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--glibc--stable-2024.02-1.sha256 +sha256 826cdbb09adca7544cd8d09a38958423f52655a8ce17ea95e4880348ea5ec594 microblazebe--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--musl--bleeding-edge-2024.02-1.sha256 +sha256 112e3496aa3e5e7515fe8d06060cae5e6a794cd2c82f7b0cfed40ee75775138c microblazebe--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--musl--stable-2024.02-1.sha256 +sha256 627ccc508f29a9e4f881af97e0faf46fd5a7926f88dfc594a38d9063cb74db59 microblazebe--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 1f0101f66f0d8e1ff316bcb24ca0082ce58bc69724a15aa0d9a2fee5e1e70f2b microblazebe--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--uclibc--stable-2024.02-1.sha256 +sha256 7f26818820b3a04c6e3e2ca268efc4b733fcba5a1a6568d4f4f243b8482b88fa microblazebe--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--glibc--bleeding-edge-2024.02-1.sha256 +sha256 102d68fd19e0bf2b14d49e2a29317196ec63baa1cbcffcb0ebc3ffc158b31750 microblazeel--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--glibc--stable-2024.02-1.sha256 +sha256 0795f6ccb2584d51b378974c36532b1c994672694b1bca63953a162811b9fdcb microblazeel--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--musl--bleeding-edge-2024.02-1.sha256 +sha256 c35b0cd70231e307dc2573d876fd0d0efc3c9f32cc32e21e577228cefdbe1c9a microblazeel--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--musl--stable-2024.02-1.sha256 +sha256 b9791b921fdb8c001949eaaccfa0746f142902d5df297455e1b9c4f029c1db93 microblazeel--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 fbeabfc16b10e61a37c2924d60290fcaab40ddfcb8314e20ea1461a4fb588eb4 microblazeel--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--uclibc--stable-2024.02-1.sha256 +sha256 ce20fcbed964958860b1883a80a48829b3331d6a10abc7cff0522768707211b6 microblazeel--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--glibc--bleeding-edge-2024.02-1.sha256 +sha256 aa990348607011c16eef583ab564fa7bef49a24141f247edb96f62970b3108fc mips32--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--glibc--stable-2024.02-1.sha256 +sha256 595cedbc0e70d5c939529ecc8d09c3a8eff63f77c3d0772b7ae306e1b3b5aef9 mips32--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--musl--bleeding-edge-2024.02-1.sha256 +sha256 1df8d93bdaca510993b2f189fea08c5a153a18bc6c54f3a6a833a5c7a26349df mips32--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--musl--stable-2024.02-1.sha256 +sha256 a0fde56bf905b9057aed8688b8e60a93fcdca1097bcc4748f24b23e26c12f462 mips32--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 ee7a1fa00cae9b6b190b436537ad9f7c8eb2c86f72327de7b583c786e5cb6780 mips32--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--uclibc--stable-2024.02-1.sha256 +sha256 3dcaeb45fb690b2d47426bae75adaa0c7042cbe9f5c774faf2d70c0174c88196 mips32--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--glibc--bleeding-edge-2024.02-1.sha256 +sha256 6f3875119a362c76119fc75d52d191b4b9a7c23615a19aaa85ffae97c360fe14 mips32el--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--glibc--stable-2024.02-1.sha256 +sha256 d92f8531fd703bc7b25f3d70ffac49ee7536171c8d854967312e3c98d8641c57 mips32el--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--musl--bleeding-edge-2024.02-1.sha256 +sha256 e315f917711fb99783572485b8adbabd4f19cc035356cd30a0d628823ed6fd32 mips32el--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--musl--stable-2024.02-1.sha256 +sha256 25c0b3217df1bf1a7bae2cc4f56cdeab9fec98b172bbf0b336b2e8fe41d3ee4e mips32el--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 43618ec1849db61dd55cb34e3aba28d741a713642b335dcef79687358cbcdf38 mips32el--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--uclibc--stable-2024.02-1.sha256 +sha256 1e5cfcfe9f9cc7ab7abd843b8ae22fe959aa9c929dc3d4f353653899bb9771a1 mips32el--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--glibc--bleeding-edge-2024.02-1.sha256 +sha256 6c0eb902af46dbbf069080755c9e16ad5e7f725f055a3e2b47d552f54a733ab9 mips32r5el--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--glibc--stable-2024.02-1.sha256 +sha256 375f1f5f42b0d6559111ca12acbc2622057cf2be7b30b99cb32b823a76d7bdf7 mips32r5el--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--musl--bleeding-edge-2024.02-1.sha256 +sha256 fb440165ff535234f88cdfd99c37cc96a3c349d2487f52b62bf879261cb6b837 mips32r5el--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--musl--stable-2024.02-1.sha256 +sha256 c6b03bfb2f00476cc38b38f910c8a3884b8b77d7aecb307fdb6f06b18ff3456a mips32r5el--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 744d98a6c6eda7fd0ae50771680c6661439906469de9df1d5f1ff758ce1ddb52 mips32r5el--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--uclibc--stable-2024.02-1.sha256 +sha256 89bed915ce8f2a7f09a0ae154a7a5435288f15de381c0ba5af4eee37cef81be3 mips32r5el--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--glibc--bleeding-edge-2024.02-1.sha256 +sha256 c345005e9fedc78ace9c5478882f094769d056979f85f432ee763837407bdd09 mips32r6el--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--glibc--stable-2024.02-1.sha256 +sha256 64321a05be857085ca1e138942456f7adf0d75188684955d404651e9a7792029 mips32r6el--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--musl--bleeding-edge-2024.02-1.sha256 +sha256 c44ce7050fdb0a729fa42bd6f15238c95f8c2e3540dd703db1861c273399206f mips32r6el--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--musl--stable-2024.02-1.sha256 +sha256 d25a9efb1bf06a845995de0bc5d24e8417ad538b8b68f12c02bc1b9aadabc9d7 mips32r6el--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 2a4296e6517a8dc18cdcc304c20834987c29bf994819209a1f30abff29761394 mips32r6el--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--uclibc--stable-2024.02-1.sha256 +sha256 16ec7dddcafb4c8834aaa79317f78a180907f3ca2f82fc0d37703d47424fe684 mips32r6el--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--glibc--bleeding-edge-2024.02-1.sha256 +sha256 f556d8fb16eeb8c31cc8edbcc4855d4eac15de4b10cc694e82690132022c835a mips64-n32--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--glibc--stable-2024.02-1.sha256 +sha256 dae5bd6ff5a79b22b60a42834b98b1b81e5ed7445f477130fbfea9b081364b29 mips64-n32--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--musl--bleeding-edge-2024.02-1.sha256 +sha256 4e1bb50ff41b2e8f26c8c48217017abe16e251c3c9a453c1bbed3629939bb35a mips64-n32--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--musl--stable-2024.02-1.sha256 +sha256 7c9400fec57e1d28ed59fb47e0f40bfb7c98781d8573a8fd5f98ea82cf88058f mips64-n32--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 a83df99f15d1507f39461ab6bcb09d3fc25c4df90fe4fa975bd23294dfed182d mips64-n32--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--uclibc--stable-2024.02-1.sha256 +sha256 7f6731cd454f98a503579b94822316d95ed1dd3afc6e325ecc5bbfa76065ca05 mips64-n32--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--glibc--bleeding-edge-2024.02-1.sha256 +sha256 4a2651f656e84649bca3686960c8b40eb8ce193a60a3942e2b98895dc584717e mips64el-n32--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--glibc--stable-2024.02-1.sha256 +sha256 138d29328daf5d08ced6b79214cbb3884f168ae90414022041e35dcd2bbb5943 mips64el-n32--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--musl--bleeding-edge-2024.02-1.sha256 +sha256 033ad6b1add333d9a7c969b987d51f7ebb3a0f819488ad287d5932afc0860825 mips64el-n32--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--musl--stable-2024.02-1.sha256 +sha256 70c2a720c018bba0384e9aae147cfa706141b6918da11b09fbee16178473e769 mips64el-n32--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 dbb806a185f1770accdc54668435293966955f891b214c7ea33dfe2a836f5bf4 mips64el-n32--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--uclibc--stable-2024.02-1.sha256 +sha256 b7ca42af6258fa7204716f4145478f1510c6ff4c093a9efa70a03fcf757b25a6 mips64el-n32--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--glibc--bleeding-edge-2024.02-1.sha256 +sha256 ec8635038743dc95e181963096a13cd9aa806ee1fa41251e54ff57bb092f762e mips64r6el-n32--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--glibc--stable-2024.02-1.sha256 +sha256 064bca63fa00ccf1c6982eb9b1d1d71f61096f2826b9134322e16a38b1317937 mips64r6el-n32--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--musl--bleeding-edge-2024.02-1.sha256 +sha256 931f2bace4d0264321ad5434d960c7180a85f0d25192bf951cc8223b7b0c96ff mips64r6el-n32--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--musl--stable-2024.02-1.sha256 +sha256 fff80653c6814bd87522fbdef6b89de386a60ed53fa7fcfb35603d055f55a071 mips64r6el-n32--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 1674501dde087ee3160ae77f7940960e43839e83443f225e6d9745d41d3df118 mips64r6el-n32--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--uclibc--stable-2024.02-1.sha256 +sha256 ff6c4296a50913ccf9a20a4270ff74ae6a35878b66140216b349a89a72e2cef4 mips64r6el-n32--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/nios2/tarballs/nios2--glibc--bleeding-edge-2024.02-1.sha256 +sha256 72ef91ac2c7f00a41449b7e87845bcb6a944ce9ed94b62e19652830ecab42a03 nios2--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/nios2/tarballs/nios2--glibc--stable-2024.02-1.sha256 +sha256 0fb3b7204a80466e56da5a63683437ed0934617e7d6979ab0d140e3ca5440144 nios2--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs/openrisc--glibc--bleeding-edge-2024.02-1.sha256 +sha256 7af2336389d5d64c48722d257fa7ad10e83ce1c25ac49aaa5fdcc70bd09220bf openrisc--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs/openrisc--glibc--stable-2023.11-1.sha256 +sha256 35eb515b554a8dcb60cae731aba49b9588cfec379f434d106de9a971015d7cf1 openrisc--glibc--stable-2023.11-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs/openrisc--musl--bleeding-edge-2024.02-1.sha256 +sha256 02abf22a8620893cc974038ac9401c2c74eb39f2a549a20939f460d694bf984c openrisc--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs/openrisc--musl--stable-2024.02-1.sha256 +sha256 34dfd1fd3977792754eb03c5ef877045a476a52ffcecf18418bca81514ae0308 openrisc--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs/openrisc--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 2d9c293c1123c30e813414610a4d060bcdef6461c82e258d405011be38fda6f6 openrisc--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs/openrisc--uclibc--stable-2024.02-1.sha256 +sha256 e885e4bdcc73eeda5a18689abecadbf6686518c049e9c785c7485d80ea74d3dd openrisc--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--glibc--bleeding-edge-2024.02-1.sha256 +sha256 9e5601beacf2b4d96f7ed12851c722b8f83beaa9da8f7ae7734816fca2d4da1e powerpc-440fp--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--glibc--stable-2024.02-1.sha256 +sha256 8961f117690f91afa8dcca7ab875dacf1674480c0bf53548fec2d53932823a8b powerpc-440fp--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--musl--bleeding-edge-2024.02-1.sha256 +sha256 5abd9ec89e402a9de7bdadd595d39de9181f0d351573751c8499aaef93c0d441 powerpc-440fp--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--musl--stable-2024.02-1.sha256 +sha256 20647de8d019a15a92126b0be5c24e16b61b92730c620b156e11989579dc3ea8 powerpc-440fp--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 2108261d7785cc2c1f81c7b62da5c4874fe6ae3eae8b9c704df4a8bc8a4d7624 powerpc-440fp--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--uclibc--stable-2024.02-1.sha256 +sha256 2d47170edf21a2377261cd6fd0fe0fe552aefc5f5204b6299bdbc2af4f96317b powerpc-440fp--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--glibc--bleeding-edge-2024.02-1.sha256 +sha256 f6c6f5d741d7f7798d5d9e3e859b063907ec3653436f752a70f0789c5d7accd5 powerpc-e300c3--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--glibc--stable-2024.02-1.sha256 +sha256 f780144616fa6e04f9f237df5ae08b1871f087204e7cd41ad2df06ee4fc3ed2f powerpc-e300c3--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--musl--bleeding-edge-2024.02-1.sha256 +sha256 f8c2aaacc7dd5922c7c719b35b92186ca86ede97ae955f753d7387f92943be64 powerpc-e300c3--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--musl--stable-2024.02-1.sha256 +sha256 f29603df78b64381bf9d7c6128a7a6798320cbeb1779680511b8181a02d30c3b powerpc-e300c3--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 090f5a4f83bca5473166375e09bf234e2ea14406761a959ac08b89b02c696363 powerpc-e300c3--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--uclibc--stable-2024.02-1.sha256 +sha256 03a688e3f3fffae1c441abc540dc8be9cf8e524e36efc52aa5bcbe9deeb356b9 powerpc-e300c3--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--glibc--bleeding-edge-2024.02-1.sha256 +sha256 90b2cd8c0be088049ed0859eaf4cd09367327c54a956e8a3956083bd99fc96df powerpc-e500mc--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--glibc--stable-2024.02-1.sha256 +sha256 f1d8d2518ec5401c0a5f489bdb4087f082bf97b6803af0dfc30b82b25d02d8cb powerpc-e500mc--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--musl--bleeding-edge-2024.02-1.sha256 +sha256 81d63ff9c17d0089c477c769c4dea466c5bcf49624334d86963ae9fd474c6dff powerpc-e500mc--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--musl--stable-2024.02-1.sha256 +sha256 049afaa48adcf1ef21562c004e695aeb08a152cb2f4dff39c35d6ea62e57a35b powerpc-e500mc--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 a34b562df36f65841a594864260001f203ad2dbb4e910d2dc7427153d465b208 powerpc-e500mc--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--uclibc--stable-2024.02-1.sha256 +sha256 6028c4014ea1a0fd21b18284c1d02fe28167165e8065d9901d0361c03a9c6075 powerpc-e500mc--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e5500/tarballs/powerpc64-e5500--glibc--bleeding-edge-2024.02-1.sha256 +sha256 762eda55a9eac9b079b1b2ad676f74b3ca74bd90382b08763ce2926be29b5898 powerpc64-e5500--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e5500/tarballs/powerpc64-e5500--glibc--stable-2024.02-1.sha256 +sha256 7062230408225e330705f0b076c9bbb5adab644790f3d3a2386477bcc917ff69 powerpc64-e5500--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs/powerpc64-e6500--glibc--bleeding-edge-2024.02-1.sha256 +sha256 58c29657c99c57f781ee6e4de91e889826ed063a64c7dc162cecbc639a8837e0 powerpc64-e6500--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs/powerpc64-e6500--glibc--stable-2024.02-1.sha256 +sha256 5f4f605b2f3e94652ec94cb2f9880e719e6e61451026dc51fcf9c913152b60e9 powerpc64-e6500--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs/powerpc64-e6500--musl--bleeding-edge-2024.02-1.sha256 +sha256 834aa216bec987f5ef04d9179bfea2efa850685e74bd153839873683ad112c4b powerpc64-e6500--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs/powerpc64-e6500--musl--stable-2024.02-1.sha256 +sha256 358af0323bb08ecebd9ec6d383333c13086a650968ae9cea8fdd5118dcbc2dc8 powerpc64-e6500--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs/powerpc64-power8--glibc--bleeding-edge-2024.02-1.sha256 +sha256 c37381eef32ee54e4bd7794306647a8df6258c686e70d3ef4a61e58b3e49407a powerpc64-power8--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs/powerpc64-power8--glibc--stable-2024.02-1.sha256 +sha256 d451dde868287a5454c39dfc1d1fb888d054191756de9da982c0fe015223157b powerpc64-power8--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs/powerpc64-power8--musl--bleeding-edge-2024.02-1.sha256 +sha256 405c7d69aa6538aac7020f53dc414b4dfadd48e95a670e5dd3e70e33402e0a4f powerpc64-power8--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs/powerpc64-power8--musl--stable-2024.02-1.sha256 +sha256 d73cc758c021163ba9672e0d0de527d45868649bed76eefd1af63a035d40226a powerpc64-power8--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs/powerpc64le-power8--glibc--bleeding-edge-2024.02-1.sha256 +sha256 f619d173a359c30ba71fa0a6bae26a71647b4f0d00d063564e0deeaeebd10c2b powerpc64le-power8--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs/powerpc64le-power8--glibc--stable-2024.02-1.sha256 +sha256 1224e21a64d551fa0e50aa4e1a2b684c2a3e2a395244c3771e82e7d92201359b powerpc64le-power8--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs/powerpc64le-power8--musl--bleeding-edge-2024.02-1.sha256 +sha256 5884756550dca096903f3430802d5ccccb1232aa600f8bc2dcc2f8fb8a7cfcc1 powerpc64le-power8--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs/powerpc64le-power8--musl--stable-2024.02-1.sha256 +sha256 66c3325c8cd22c78e6377d594745ca881227fd9858cea57ce84daadf3b61de04 powerpc64le-power8--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv32-ilp32d/tarballs/riscv32-ilp32d--glibc--bleeding-edge-2024.02-1.sha256 +sha256 ae046c9e6616f6b33d82c0d581efb41c4c6428fa1c1345417c82533cc27fb86e riscv32-ilp32d--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv32-ilp32d/tarballs/riscv32-ilp32d--musl--bleeding-edge-2024.02-1.sha256 +sha256 828e3409f995cc15e7038ede150d6fa8bc50a3d69ef2b98b79db7c935bab336c riscv32-ilp32d--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv32-ilp32d/tarballs/riscv32-ilp32d--musl--stable-2024.02-1.sha256 +sha256 b758a7576b5ffb62a6453264df53a0b28d417d66fb17add5f8858987f28c0eb3 riscv32-ilp32d--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs/riscv64-lp64d--glibc--bleeding-edge-2024.02-1.sha256 +sha256 f815ecf9dd9b8f633b914e178e633095241bbd18d97b9bca05a66a5ca3990524 riscv64-lp64d--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs/riscv64-lp64d--glibc--stable-2023.11-1.sha256 +sha256 80e84af7ebed4e8e52fc2d17994f7bcb2e7bdc069e2d1f1c4656977cd73d9d5d riscv64-lp64d--glibc--stable-2023.11-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs/riscv64-lp64d--musl--bleeding-edge-2024.02-1.sha256 +sha256 81d567e395637fbc5878d1ee38f99592563ad13df8a2e15d7b6ca5afa9d6a35e riscv64-lp64d--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs/riscv64-lp64d--musl--stable-2023.11-1.sha256 +sha256 09522ec60b13766090acaa715402cb11edaa39217642fbd7315fbe37b6032275 riscv64-lp64d--musl--stable-2023.11-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs/riscv64-lp64d--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 ea0a1e380a2e157e4541d4705a5ce744ee4109e732b185052a860ad5aabf509d riscv64-lp64d--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs/riscv64-lp64d--uclibc--stable-2023.11-1.sha256 +sha256 aebb6034d3512e3c29337c368dcf4a1e58756c725032d814047a3635178cb5ad riscv64-lp64d--uclibc--stable-2023.11-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/s390x-z13/tarballs/s390x-z13--glibc--bleeding-edge-2024.02-1.sha256 +sha256 2fa0e05c3c5e219e5456a15c284482604ab11a0a00aba4dbb82350fc60151208 s390x-z13--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/s390x-z13/tarballs/s390x-z13--glibc--stable-2024.02-1.sha256 +sha256 485d6abeb924810228a6d7c6c503e5f724a049a6e14b150c888b33bb9970e14e s390x-z13--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--glibc--bleeding-edge-2024.02-1.sha256 +sha256 413176d97f73a372d6ace57649e51b6132f2479fe26b113278055c922bac3f44 sh-sh4--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--glibc--stable-2024.02-1.sha256 +sha256 1519bf392ca9d29494976f5904d6d683dd74e739eccc09b4e3c90ddd65adadfb sh-sh4--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--musl--bleeding-edge-2024.02-1.sha256 +sha256 ad71172f0339ea267243af40f047797aa1cac4afdcebf4de93d66b11ed64cd8f sh-sh4--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--musl--stable-2024.02-1.sha256 +sha256 5ab53c70013fd8f5c5409145f4faa60fdb115c54cb10fe4da07acd7588b46d7d sh-sh4--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 07a3e55f36b7d7718d369408022bd4795c98e79adacad56839ce3805a560f73d sh-sh4--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--uclibc--stable-2024.02-1.sha256 +sha256 de811fc1f294fda4bec6c84131f9320277b87687e04a50200a02d9af3d743ebb sh-sh4--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs/sh-sh4aeb--glibc--bleeding-edge-2024.02-1.sha256 +sha256 182333d197803146d36df9186cb583ff482efbcf4d5ca1db4791ef7cbe17fa8c sh-sh4aeb--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs/sh-sh4aeb--glibc--stable-2024.02-1.sha256 +sha256 821a749fe873457740204146b3f70b061ddb572fee6ad63ebbf5e1c5ca1bd608 sh-sh4aeb--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs/sh-sh4aeb--musl--bleeding-edge-2024.02-1.sha256 +sha256 d2d69a26ce5cd0b4e6ce88789a65a0cdcc9b5c877887703f9277aa93bbd7f82c sh-sh4aeb--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs/sh-sh4aeb--musl--stable-2024.02-1.sha256 +sha256 3689491d91cdcb3579fc3105cb2b9a16e95e4c92d881602f0e0f254caf50d1d6 sh-sh4aeb--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/sparc64/tarballs/sparc64--glibc--bleeding-edge-2024.02-1.sha256 +sha256 7371c311b20412732451f445f1e28c8b4c8bdc8e164630b23065ba4bf8d483cd sparc64--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/sparc64/tarballs/sparc64--glibc--stable-2024.02-1.sha256 +sha256 b5b8056b85cf24e548de8b66919b1ddf59f3ba77446d23abd86f18f094a06eee sparc64--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/sparcv8/tarballs/sparcv8--uclibc--bleeding-edge-2022.08-2.sha256 +sha256 ccd4110fa574d2323f038394c0603245384002fbe906204db36fe200c9c8f886 sparcv8--uclibc--bleeding-edge-2022.08-2.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/sparcv8/tarballs/sparcv8--uclibc--stable-2022.08-1.sha256 +sha256 da3b9f0a936401cbd3cc305b86d3611531391354cc0226a0eeb3ce4ddcc7b7dc sparcv8--uclibc--stable-2022.08-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs/x86-64--glibc--bleeding-edge-2024.02-1.sha256 +sha256 7aac949737ebfb3f4bccc6a75af79d50cf1fadd9ffbdf21e26c1508dff67f23d x86-64--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs/x86-64--glibc--stable-2024.02-1.sha256 +sha256 19c8e5bc1395636aef1ce82b1fa7a520f12c8b4ea1b66ac2c80ec30dcf32925e x86-64--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs/x86-64--musl--bleeding-edge-2024.02-1.sha256 +sha256 91bd25e7a649e2f2aae93bebf58b4e9f57fae8daf8bf7e573975348e0bc38890 x86-64--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs/x86-64--musl--stable-2024.02-1.sha256 +sha256 f54778c2e50c4aa990c4b74545bb7018dec12324b89f879981430f5411fd27db x86-64--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs/x86-64--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 0ebf73f28a369120b0d33ee6800b9b10cf36851cbed3bcad7828c61a7da69588 x86-64--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs/x86-64--uclibc--stable-2024.02-1.sha256 +sha256 458d9de771c7c35ecd26de1d473b913bdeb01a78b22107f998dd93bacee0bc96 x86-64--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v2/tarballs/x86-64-v2--glibc--bleeding-edge-2024.02-1.sha256 +sha256 cefbe65c027b8a785088f7d690fc1eacef2cd39bd60c8a95cb09d666d6b98bb8 x86-64-v2--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v2/tarballs/x86-64-v2--glibc--stable-2024.02-1.sha256 +sha256 772a44754d393b012cf0f04fc3ec6acf29461a352bbc44cd255d926db7e9a0f6 x86-64-v2--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v2/tarballs/x86-64-v2--musl--bleeding-edge-2024.02-1.sha256 +sha256 893453ba045a2035c3b87a3619c9fdf1bc641395bd7c9c56ed59e9f8f7a90d8d x86-64-v2--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v2/tarballs/x86-64-v2--musl--stable-2024.02-1.sha256 +sha256 b5ec30e722386ea98f0e3ca3d6b3e082e6996fefedcc1b607811eb8451c22de0 x86-64-v2--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v2/tarballs/x86-64-v2--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 15ffb204fa40aa53dcbf1dcacaf23599d70f8778e21d57cadfb89b98c4a7587f x86-64-v2--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v2/tarballs/x86-64-v2--uclibc--stable-2024.02-1.sha256 +sha256 3ff823a12ad3f668f6b3d8d596fe2d44236f1a24563b30ce72f9299ba73e0b14 x86-64-v2--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v3/tarballs/x86-64-v3--glibc--bleeding-edge-2024.02-1.sha256 +sha256 27bb18f261a412fa752f1c019ef4a9250653f16229f2ffb41eb584396787c68d x86-64-v3--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v3/tarballs/x86-64-v3--glibc--stable-2024.02-1.sha256 +sha256 5d515f6e4b311d7636a3cf600cd02fde7d0beb0a2f143df4921ff5a61cbaebcb x86-64-v3--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v3/tarballs/x86-64-v3--musl--bleeding-edge-2024.02-1.sha256 +sha256 5b5d89737faf3998fbd1590a26dc9bd6a56e400b7fd7c2c2065ba4b98bf839eb x86-64-v3--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v3/tarballs/x86-64-v3--musl--stable-2024.02-1.sha256 +sha256 45b0db10e82fd28ac930446679f5fbd6ce373ce63e8e3d88e4df1b7455c1b100 x86-64-v3--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v3/tarballs/x86-64-v3--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 08cc939858ef3e4fef17dd7544ea15b6b8af1bc823ab6453479919c7aa2d669f x86-64-v3--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v3/tarballs/x86-64-v3--uclibc--stable-2024.02-1.sha256 +sha256 830b80a76fee9d1c4eac1b5d0351c3543bf2ebcc8f47de2163cbe85dec83143d x86-64-v3--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v4/tarballs/x86-64-v4--glibc--bleeding-edge-2024.02-1.sha256 +sha256 dd645f770d95dc0becc6216f3f32f87f6ffcc713ba3b6c53e96e8a3fcfc24e08 x86-64-v4--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v4/tarballs/x86-64-v4--glibc--stable-2024.02-1.sha256 +sha256 ed68f8d487f52beb95e5ff80da01b959222f53e089728b63ce38b99f80b597ca x86-64-v4--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v4/tarballs/x86-64-v4--musl--bleeding-edge-2024.02-1.sha256 +sha256 19b7633ce87c46ca5483149ef5b9e202bf245d8f099d4cc2ec6a1d986fa97827 x86-64-v4--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v4/tarballs/x86-64-v4--musl--stable-2024.02-1.sha256 +sha256 99468cdd4a77c5b28bdaebf7ee09c5cef2e5dd34335929f8fd5c2e661980c838 x86-64-v4--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v4/tarballs/x86-64-v4--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 d6d72b9150b7f59cf060b63fae73f7656f58043e61c4f3c68478d15947268398 x86-64-v4--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v4/tarballs/x86-64-v4--uclibc--stable-2024.02-1.sha256 +sha256 ab29371356518583742bb99d6490805d86a7bbdd84d0a6c00fca84afa34cae52 x86-64-v4--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--glibc--bleeding-edge-2024.02-1.sha256 +sha256 45cb05f2d1ff7f62131d172f90fae321753396ef477b549ca79a50fba48edba7 x86-64-core-i7--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--glibc--stable-2024.02-1.sha256 +sha256 ecaa610ca27b5b65bcd198fa9d71635f6cfbbc90e45fc930b40a50860ee054b9 x86-64-core-i7--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--musl--bleeding-edge-2024.02-1.sha256 +sha256 b6eb510561931a7d1c66afabfc1206731473a64fde41093474d6819e085e9d15 x86-64-core-i7--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--musl--stable-2024.02-1.sha256 +sha256 19799b79a953b3356409ab8e17b48804e20dd0452f36b5bf707ae3a82d007fca x86-64-core-i7--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 ba8c70414f46649e3ea7196c01c911e91a75ac06b7136c21522ae3606025d6af x86-64-core-i7--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--uclibc--stable-2024.02-1.sha256 +sha256 7af3cb11a74bd85878be6a0c7922ae4e71d843b49d3874ef2a0821f0f1c08681 x86-64-core-i7--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--glibc--bleeding-edge-2024.02-1.sha256 +sha256 f28e0f3035b9fc8f5bd98b584b8d45cb15ae265a084592afdef37639a05c6e08 x86-core2--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--glibc--stable-2024.02-1.sha256 +sha256 4278f1d84b1ccf077de319a9ec9ba2feae282a38a2caeca31d67a24c6021454c x86-core2--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--musl--bleeding-edge-2024.02-1.sha256 +sha256 9a7654eaef4bb646b2deae602ae607d8cb47f574a54f97050380a3bd6792aefc x86-core2--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--musl--stable-2024.02-1.sha256 +sha256 16efa5faa30893ec1d4e575ee1b33e782288a261a52911686c56f82e7d5eca44 x86-core2--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 5258405863b3bb7cfafefb9107c152e2dbb3d0565384999f41d8b3ab0c96df39 x86-core2--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--uclibc--stable-2024.02-1.sha256 +sha256 453e8fb81e07093f6c37aa00e8f54768f9ab4ce1bdd38f3d4269c7b7c509fb1a x86-core2--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--glibc--bleeding-edge-2024.02-1.sha256 +sha256 52df822a10c09469ab6231753f306b668163bfdfe492db209b3a06e3a4e7aa05 x86-i686--glibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--glibc--stable-2024.02-1.sha256 +sha256 3341c76890fa04873e0cf56b921a54e046d63d8ea8ecf16e82fb66a1b81a9695 x86-i686--glibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--musl--bleeding-edge-2024.02-1.sha256 +sha256 ace16afe9d7728a5210cc9cadc4bf80754f0dc449855e10501d9669f203fc932 x86-i686--musl--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--musl--stable-2024.02-1.sha256 +sha256 e9cfe8d65170dde92759e0e425c425c15439190711fdd66999cdb6f5551653a3 x86-i686--musl--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 510ca03d4d8952bdc91ebc5ac3c9ab5019f519d174071e88f566ae9746098d29 x86-i686--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--uclibc--stable-2024.02-1.sha256 +sha256 6ffa7ea5d610bfd25d16769130559be1fc1c00dd5b81ebc4ec25d05e5dcd26c2 x86-i686--uclibc--stable-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/xtensa-lx60/tarballs/xtensa-lx60--uclibc--bleeding-edge-2024.02-1.sha256 +sha256 a97be06a34db230c0022d544efcf85bcd0b0d4dda86f820f0abbcab1b59d184f xtensa-lx60--uclibc--bleeding-edge-2024.02-1.tar.bz2 +# From https://toolchains.bootlin.com/downloads/releases/toolchains/xtensa-lx60/tarballs/xtensa-lx60--uclibc--stable-2024.02-1.sha256 +sha256 e871ce555353a025b86d905ea3f5131dfbf95340bcda706facad070d82b997c1 xtensa-lx60--uclibc--stable-2024.02-1.tar.bz2 diff --git a/toolchain/toolchain-external/toolchain-external-bootlin/toolchain-external-bootlin.mk b/toolchain/toolchain-external/toolchain-external-bootlin/toolchain-external-bootlin.mk new file mode 100644 index 00000000..07ae8304 --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-bootlin/toolchain-external-bootlin.mk @@ -0,0 +1,1299 @@ +################################################################################ +# +# toolchain-external-bootlin +# +################################################################################ + +# This file was auto-generated by support/scripts/gen-bootlin-toolchains +# Do not edit +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = aarch64--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = aarch64--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = aarch64--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = aarch64--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = aarch64--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = aarch64--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = aarch64be--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = aarch64be--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = aarch64be--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = aarch64be--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = aarch64be--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = aarch64be--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_750D_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = arcle-750d--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-750d/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_750D_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = arcle-750d--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-750d/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = arcle-hs38--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2023.11-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = arcle-hs38--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = arcle-hs38--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = arcle-hs38--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv5-eabi--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv5-eabi--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv5-eabi--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv5-eabi--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv5-eabi--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv5-eabi--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv6-eabihf--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv6-eabihf--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv6-eabihf--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv6-eabihf--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv6-eabihf--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv6-eabihf--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv7-eabihf--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv7-eabihf--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv7-eabihf--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv7-eabihf--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv7-eabihf--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv7-eabihf--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMEBV7_EABIHF_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armebv7-eabihf--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMEBV7_EABIHF_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armebv7-eabihf--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMEBV7_EABIHF_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armebv7-eabihf--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMEBV7_EABIHF_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armebv7-eabihf--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMEBV7_EABIHF_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armebv7-eabihf--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMEBV7_EABIHF_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armebv7-eabihf--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7M_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv7m--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv7m/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7M_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv7m--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv7m/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = m68k-68xxx--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = m68k-68xxx--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = m68k-68xxx--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = m68k-68xxx--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = m68k-68xxx--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = m68k-68xxx--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_COLDFIRE_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = m68k-coldfire--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-coldfire/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_COLDFIRE_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = m68k-coldfire--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-coldfire/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazebe--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazebe--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazebe--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazebe--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazebe--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazebe--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazeel--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazeel--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazeel--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazeel--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazeel--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazeel--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32el--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32el--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32el--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32el--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32el--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32el--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r5el--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r5el--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r5el--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r5el--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r5el--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r5el--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r6el--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r6el--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r6el--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r6el--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r6el--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r6el--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64-n32--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64-n32--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64-n32--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64-n32--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64-n32--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64-n32--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64el-n32--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64el-n32--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64el-n32--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64el-n32--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64el-n32--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64el-n32--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64r6el-n32--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64r6el-n32--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64r6el-n32--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64r6el-n32--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64r6el-n32--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64r6el-n32--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_NIOS2_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = nios2--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/nios2/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_NIOS2_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = nios2--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/nios2/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = openrisc--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2023.11-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = openrisc--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = openrisc--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = openrisc--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = openrisc--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = openrisc--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-440fp--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-440fp--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-440fp--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-440fp--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-440fp--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-440fp--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e300c3--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e300c3--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e300c3--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e300c3--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e300c3--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e300c3--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e500mc--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e500mc--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e500mc--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e500mc--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e500mc--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e500mc--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E5500_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64-e5500--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e5500/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E5500_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64-e5500--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e5500/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64-e6500--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64-e6500--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64-e6500--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64-e6500--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64-power8--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64-power8--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64-power8--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64-power8--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64le-power8--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64le-power8--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64le-power8--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64le-power8--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV32_ILP32D_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = riscv32-ilp32d--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/riscv32-ilp32d/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV32_ILP32D_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = riscv32-ilp32d--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/riscv32-ilp32d/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV32_ILP32D_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = riscv32-ilp32d--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/riscv32-ilp32d/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_LP64D_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = riscv64-lp64d--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_LP64D_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2023.11-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = riscv64-lp64d--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_LP64D_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = riscv64-lp64d--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_LP64D_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2023.11-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = riscv64-lp64d--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_LP64D_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = riscv64-lp64d--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_LP64D_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2023.11-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = riscv64-lp64d--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_S390X_Z13_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = s390x-z13--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/s390x-z13/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_S390X_Z13_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = s390x-z13--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/s390x-z13/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sh-sh4--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sh-sh4--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sh-sh4--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sh-sh4--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sh-sh4--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sh-sh4--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sh-sh4aeb--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sh-sh4aeb--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sh-sh4aeb--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sh-sh4aeb--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARC64_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sparc64--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sparc64/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARC64_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sparc64--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sparc64/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARCV8_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2022.08-2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sparcv8--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sparcv8/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARCV8_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2022.08-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sparcv8--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sparcv8/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V2_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-v2--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v2/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V2_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-v2--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v2/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V2_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-v2--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v2/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V2_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-v2--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v2/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V2_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-v2--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v2/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V2_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-v2--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v2/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V3_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-v3--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v3/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V3_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-v3--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v3/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V3_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-v3--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v3/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V3_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-v3--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v3/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V3_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-v3--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v3/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V3_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-v3--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v3/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V4_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-v4--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v4/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V4_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-v4--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v4/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V4_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-v4--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v4/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V4_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-v4--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v4/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V4_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-v4--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v4/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_V4_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-v4--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v4/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-core-i7--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-core-i7--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-core-i7--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-core-i7--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-core-i7--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-core-i7--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-core2--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-core2--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-core2--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-core2--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-core2--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-core2--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_GLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-i686--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_GLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-i686--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_MUSL_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-i686--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_MUSL_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-i686--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-i686--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-i686--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_XTENSA_LX60_UCLIBC_BLEEDING_EDGE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = xtensa-lx60--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/xtensa-lx60/tarballs +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_XTENSA_LX60_UCLIBC_STABLE),y) +TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2024.02-1 +TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = xtensa-lx60--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2 +TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/xtensa-lx60/tarballs +endif + +$(eval $(toolchain-external-package)) diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in b/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in new file mode 100644 index 00000000..8e067c8f --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in @@ -0,0 +1,94 @@ +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 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_6 + # Unsupported MIPS cores + depends on !BR2_mips_interaptiv + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on !BR2_MIPS_NABI32 + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_TOOLCHAIN_HAS_OPENMP + 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_ARCH_NEEDS_GCC_AT_LEAST_6 + depends on BR2_MIPS_NABI32 diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options b/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options new file mode 100644 index 00000000..677cc67d --- /dev/null +++ b/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/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.hash b/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.hash new file mode 100644 index 00000000..c2429d85 --- /dev/null +++ b/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/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.mk b/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.mk new file mode 100644 index 00000000..94fbbff5 --- /dev/null +++ b/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 = https://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/toolchain/toolchain-external/toolchain-external-custom/Config.in b/toolchain/toolchain-external/toolchain-external-custom/Config.in new file mode 100644 index 00000000..a913feb3 --- /dev/null +++ b/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/toolchain/toolchain-external/toolchain-external-custom/Config.in.options b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options new file mode 100644 index 00000000..0daa1e35 --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options @@ -0,0 +1,611 @@ +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_REL_BIN_PATH + string "Toolchain relative binary path" + default "bin" + depends on BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD + help + Path to where the binaries (e.g. the compiler) can be found, + relative to the downloaded toolchain root directory. The + default is "bin" and is correct for most toolchains. + +config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX + string "Toolchain prefix" + default "$(ARCH)-linux" + help + Component name prefix used by your external toolchain. + + Typically, this is the target tuple, e.g. something that + looks like: $(ARCH)-unknown-linux-gnu. + + If unsure, look at the "bin" directory of your toolchain and + note the part of component name before the last dash, i.e. if + you call the toolchain's gcc as $(ARCH)-unknown-linux-gnu-gcc, + the prefix is $(ARCH)-unknown-linux-gnu. + + Note that Buildroot toolchains have shorter aliases that look + like $(ARCH)-linux, as symlinks to the full-tuple components, + so you can leave this option at default value if you use them + as external toolchain. + +choice + bool "External toolchain gcc version" + help + Set to the gcc version that is used by your external + toolchain. + +config BR2_TOOLCHAIN_EXTERNAL_GCC_14 + bool "14.x" + select BR2_TOOLCHAIN_GCC_AT_LEAST_14 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_13 + bool "13.x" + select BR2_TOOLCHAIN_GCC_AT_LEAST_13 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_12 + bool "12.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_12 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_11 + bool "11.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_12 + select BR2_TOOLCHAIN_GCC_AT_LEAST_11 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_10 + bool "10.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_11 + select BR2_TOOLCHAIN_GCC_AT_LEAST_10 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_9 + bool "9.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_10 + select BR2_TOOLCHAIN_GCC_AT_LEAST_9 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_8 + bool "8.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_9 + select BR2_TOOLCHAIN_GCC_AT_LEAST_8 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_7 + bool "7.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8 + select BR2_TOOLCHAIN_GCC_AT_LEAST_7 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_6 + bool "6.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_7 + select BR2_TOOLCHAIN_GCC_AT_LEAST_6 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_5 + bool "5.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_6 + select BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_4_9 + bool "4.9.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_4_8 + bool "4.8.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_4_7 + bool "4.7.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_4_6 + bool "4.6.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_4_5 + bool "4.5.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_4_4 + bool "4.4.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_4_3 + bool "4.3.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_OLD + bool "older" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8 + 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 + +comment "GCC older than 4.8 is not tested by Buildroot. Use at your own risk." + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +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 + + If your toolchain uses headers newer than the latest version + in the choice, then select the latest version. + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_6_10 + bool "6.10.x or later" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_10 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_6_9 + bool "6.9.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_9 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_6_8 + bool "6.8.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_8 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_6_7 + bool "6.7.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_7 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_6_6 + bool "6.6.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_6 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_6_5 + bool "6.5.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_5 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_6_4 + bool "6.4.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_4 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_6_3 + bool "6.3.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_3 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_6_2 + bool "6.2.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_2 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_6_1 + bool "6.1.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_1 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_6_0 + bool "6.0.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_0 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_19 + bool "5.19.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_19 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_18 + bool "5.18.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_18 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_17 + bool "5.17.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_16 + bool "5.16.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_16 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_15 + bool "5.15.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_14 + bool "5.14.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_13 + bool "5.13.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_12 + bool "5.12.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_11 + bool "5.11" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_10 + bool "5.10.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_9 + bool "5.9.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_8 + bool "5.8.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_7 + bool "5.7.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_6 + bool "5.6.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_5 + bool "5.5.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_4 + bool "5.4.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_3 + bool "5.3.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_2 + bool "5.2.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_1 + bool "5.1.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_0 + bool "5.0.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_20 + bool "4.20.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_19 + bool "4.19.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_18 + bool "4.18.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_17 + bool "4.17.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16 + bool "4.16.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_15 + bool "4.15.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_14 + bool "4.14.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13 + bool "4.13.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_12 + bool "4.12.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_11 + bool "4.11.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10 + bool "4.10.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10 + +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 + +comment "Kernel headers older than 3.13 is not tested by Buildroot. Use at your own risk." + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13 + +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 + 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" + 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/). + +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?" + default y + select BR2_TOOLCHAIN_HAS_THREADS + 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?" + default y + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + 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?" + default y + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + 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?" + default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC + default y if BR2_TOOLCHAIN_EXTERNAL_MUSL + select BR2_TOOLCHAIN_HAS_SSP + help + Select 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_HAS_SSP_STRONG + bool "Toolchain has SSP strong support?" + default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 && BR2_TOOLCHAIN_EXTERNAL_GLIBC + default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 && BR2_TOOLCHAIN_EXTERNAL_MUSL + depends on BR2_TOOLCHAIN_EXTERNAL_HAS_SSP + select BR2_TOOLCHAIN_HAS_SSP_STRONG + help + Select this option if your external toolchain has strong + 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?" + default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC + depends on !BR2_TOOLCHAIN_EXTERNAL_MUSL + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + 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_EXTERNAL_DLANG + bool "Toolchain has D support?" + select BR2_TOOLCHAIN_HAS_DLANG + help + Select this option if your external toolchain has D + support. + +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. + +config BR2_TOOLCHAIN_EXTERNAL_OPENMP + bool "Toolchain has OpenMP support?" + select BR2_TOOLCHAIN_HAS_OPENMP + help + Select this option if your external toolchain has OpenMP + support. If you don't know, leave the default value, + Buildroot will tell you if it's correct or not. + +endif diff --git a/toolchain/toolchain-external/toolchain-external-custom/toolchain-external-custom.mk b/toolchain/toolchain-external/toolchain-external-custom/toolchain-external-custom.mk new file mode 100644 index 00000000..f2ec01f8 --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-custom/toolchain-external-custom.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# 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) +ifeq ($(BR_BUILDING)$(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),yy) +ifeq ($(TOOLCHAIN_EXTERNAL_CUSTOM_SOURCE),) +$(error No external toolchain url set, check your BR2_TOOLCHAIN_EXTERNAL_URL setting) +endif +endif +endif + +$(eval $(toolchain-external-package)) diff --git a/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in b/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in new file mode 100644 index 00000000..295a8987 --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in @@ -0,0 +1,16 @@ +config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE + bool "Linaro AArch64 BE 2018.05" + depends on BR2_aarch64_be + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8 + 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_10 + select BR2_TOOLCHAIN_GCC_AT_LEAST_7 + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + help + Toolchain for the AArch64 Big Endian architecture, from + http://www.linaro.org/engineering/armv8/ diff --git a/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in.options b/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in.options new file mode 100644 index 00000000..d44750ff --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "aarch64_be-linux-gnu" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-linaro-aarch64-be" + +endif diff --git a/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/toolchain-external-linaro-aarch64-be.hash b/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/toolchain-external-linaro-aarch64-be.hash new file mode 100644 index 00000000..53b6966e --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/toolchain-external-linaro-aarch64-be.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 412da19c1d1bff0f3172bc19fd2c024207d8d716dbe7a8dad4bf9e3d6b71d149 gcc-linaro-7.3.1-2018.05-i686_aarch64_be-linux-gnu.tar.xz +sha256 277c1483f8dbd6007c945ffeb706fa1ba1da8ec1c397cf5cf1e29c25081426e5 gcc-linaro-7.3.1-2018.05-x86_64_aarch64_be-linux-gnu.tar.xz diff --git a/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/toolchain-external-linaro-aarch64-be.mk b/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/toolchain-external-linaro-aarch64-be.mk new file mode 100644 index 00000000..7a01151b --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/toolchain-external-linaro-aarch64-be.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# toolchain-external-linaro-aarch64-be +# +################################################################################ + +TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE_VERSION = 2018.05 +TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE_SITE = https://releases.linaro.org/components/toolchain/binaries/7.3-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE_VERSION)/aarch64_be-linux-gnu + +ifeq ($(HOSTARCH),x86) +TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE_VERSION)-i686_aarch64_be-linux-gnu.tar.xz +else +TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE_VERSION)-x86_64_aarch64_be-linux-gnu.tar.xz +endif + +$(eval $(toolchain-external-package)) diff --git a/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in b/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in new file mode 100644 index 00000000..1b0ec7cd --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in @@ -0,0 +1,16 @@ +config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64 + bool "Linaro AArch64 2018.05" + depends on BR2_aarch64 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8 + 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_10 + select BR2_TOOLCHAIN_GCC_AT_LEAST_7 + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + help + Toolchain for the AArch64 architecture, from + http://www.linaro.org/engineering/armv8/ diff --git a/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in.options b/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in.options new file mode 100644 index 00000000..099c6c0d --- /dev/null +++ b/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/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.hash b/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.hash new file mode 100644 index 00000000..70841a4f --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 466b801a60491ae1e2ce9952e0615cf04cf611596c6ffd5bfe8a89ef5be47e03 gcc-linaro-7.3.1-2018.05-i686_aarch64-linux-gnu.tar.xz +sha256 73eed74e593e2267504efbcf3678918bb22409ab7afa3dc7c135d2c6790c2345 gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz diff --git a/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.mk b/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.mk new file mode 100644 index 00000000..1015d630 --- /dev/null +++ b/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 = 2018.05 +TOOLCHAIN_EXTERNAL_LINARO_AARCH64_SITE = https://releases.linaro.org/components/toolchain/binaries/7.3-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_VERSION)/aarch64-linux-gnu + +ifeq ($(HOSTARCH),x86) +TOOLCHAIN_EXTERNAL_LINARO_AARCH64_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_VERSION)-i686_aarch64-linux-gnu.tar.xz +else +TOOLCHAIN_EXTERNAL_LINARO_AARCH64_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_VERSION)-x86_64_aarch64-linux-gnu.tar.xz +endif + +$(eval $(toolchain-external-package)) diff --git a/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in b/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in new file mode 100644 index 00000000..8b3b4c84 --- /dev/null +++ b/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 + +config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM + bool "Linaro ARM 2018.05" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV7A || BR2_ARM_CPU_ARMV8A + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_ARM_EABIHF + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8 + 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_10 + select BR2_TOOLCHAIN_GCC_AT_LEAST_7 + select BR2_TOOLCHAIN_HAS_FORTRAN + select BR2_TOOLCHAIN_HAS_OPENMP + help + Linaro toolchain for the ARM architecture. It uses Linaro + GCC 2018.05 (based on gcc 7.3.1), Linaro GDB 2018.05 (based on + GDB 8.1), glibc 2.25, Binutils 2018.05 (based on 2.28). 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/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in.options b/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in.options new file mode 100644 index 00000000..dcbc6599 --- /dev/null +++ b/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/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.hash b/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.hash new file mode 100644 index 00000000..7169e0b9 --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 0613b5be14eb7d50a772bbd72069c428558e6e53fa5fce7201d75a13a475ffff gcc-linaro-7.3.1-2018.05-i686_arm-linux-gnueabihf.tar.xz +sha256 7248bf105d0d468887a9b8a7120bb281ac8ad0223d9cb3d00dc7c2d498485d91 gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz diff --git a/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.mk b/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.mk new file mode 100644 index 00000000..fda356bc --- /dev/null +++ b/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 = 2018.05 +TOOLCHAIN_EXTERNAL_LINARO_ARM_SITE = https://releases.linaro.org/components/toolchain/binaries/7.3-$(TOOLCHAIN_EXTERNAL_LINARO_ARM_VERSION)/arm-linux-gnueabihf + +ifeq ($(HOSTARCH),x86) +TOOLCHAIN_EXTERNAL_LINARO_ARM_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARM_VERSION)-i686_arm-linux-gnueabihf.tar.xz +else +TOOLCHAIN_EXTERNAL_LINARO_ARM_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARM_VERSION)-x86_64_arm-linux-gnueabihf.tar.xz +endif + +$(eval $(toolchain-external-package)) diff --git a/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in b/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in new file mode 100644 index 00000000..b143ee5e --- /dev/null +++ b/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 + +config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB + bool "Linaro armeb 2018.05" + depends on BR2_armeb + depends on BR2_ARM_CPU_ARMV7A || BR2_ARM_CPU_ARMV8A + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_ARM_EABIHF + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8 + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_TOOLCHAIN_HAS_OPENMP + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10 + select BR2_TOOLCHAIN_GCC_AT_LEAST_7 + help + Linaro toolchain for the ARM big endian architecture. It + uses Linaro GCC 2018.05 (based on gcc 7.3.1), Linaro GDB + 2018.05 (based on GDB 8.1), glibc 2.25, Binutils 2018.05 + (based on 2.28). 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/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options b/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options new file mode 100644 index 00000000..225e90f0 --- /dev/null +++ b/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/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.hash b/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.hash new file mode 100644 index 00000000..2b80f396 --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 60bf9924a0c039c94deb85cb9b129d0f28b28eadbb1fb3f7e2e227679cc43fc9 gcc-linaro-7.3.1-2018.05-i686_armeb-linux-gnueabihf.tar.xz +sha256 c1bbd598b78458d6b7ea1c971fddf736c00d57890c7131fdafd4e789289c42f9 gcc-linaro-7.3.1-2018.05-x86_64_armeb-linux-gnueabihf.tar.xz diff --git a/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.mk b/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.mk new file mode 100644 index 00000000..b8ea80ff --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# toolchain-external-linaro-armeb +# +################################################################################ + +TOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION = 2018.05 + +TOOLCHAIN_EXTERNAL_LINARO_ARMEB_SITE = https://releases.linaro.org/components/toolchain/binaries/7.3-$(TOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION)/armeb-linux-gnueabihf + +ifeq ($(HOSTARCH),x86) +TOOLCHAIN_EXTERNAL_LINARO_ARMEB_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION)-i686_armeb-linux-gnueabihf.tar.xz +else +TOOLCHAIN_EXTERNAL_LINARO_ARMEB_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION)-x86_64_armeb-linux-gnueabihf.tar.xz +endif + +$(eval $(toolchain-external-package)) diff --git a/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in b/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in new file mode 100644 index 00000000..292e652f --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in @@ -0,0 +1,17 @@ +config BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC + bool "Synopsys ARC 2019.09 toolchain" + depends on BR2_arc + depends on BR2_HOSTARCH = "x86_64" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_10 + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + select BR2_INSTALL_LIBSTDCPP + 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_15 + select BR2_TOOLCHAIN_GCC_AT_LEAST_9 + help + Toolchain for the ARC cores, from + https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases diff --git a/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in.options b/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in.options new file mode 100644 index 00000000..ceb7dd00 --- /dev/null +++ b/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/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.hash b/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.hash new file mode 100644 index 00000000..3c227238 --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.hash @@ -0,0 +1,5 @@ +# From https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/tag/arc-2019.09-release +sha256 f7cbf68ef251943db7baf63535e0ec98dafbdf5d925017b4e1d4fc64d9b38a26 arc_gnu_2019.09_prebuilt_uclibc_le_arc700_linux_install.tar.gz +sha256 ac09f0a21f9d50146a5e542f4a6abc93e5a1dcb0a1372cb5c3ba86bbefaaec7d arc_gnu_2019.09_prebuilt_uclibc_be_arc700_linux_install.tar.gz +sha256 245ca49fe8ea2456617541b18bb96e52e6c0dc619f00e293fcaad519fc436c35 arc_gnu_2019.09_prebuilt_uclibc_le_archs_linux_install.tar.gz +sha256 6f039a0158c03af398ada31fae96009e47f0d7b7f7d52e12eb419492fc3f27e7 arc_gnu_2019.09_prebuilt_uclibc_be_archs_linux_install.tar.gz diff --git a/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.mk b/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.mk new file mode 100644 index 00000000..c8f141e4 --- /dev/null +++ b/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 = 2019.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/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk new file mode 100644 index 00000000..dd07884c --- /dev/null +++ b/toolchain/toolchain-external/toolchain-external.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# toolchain-external +# +################################################################################ + +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, +# into the staging directory: +# sys/queue.h: header from NetBSD +# sys/cdefs.h: minimalist header bundled in Buildroot +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +TOOLCHAIN_EXTERNAL_DEPENDENCIES += musl-compat-headers +endif + +$(eval $(virtual-package)) + +# 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 + +include $(sort $(wildcard toolchain/toolchain-external/*/*.mk)) diff --git a/toolchain/toolchain-wrapper.c b/toolchain/toolchain-wrapper.c new file mode 100644 index 00000000..e4368897 --- /dev/null +++ b/toolchain/toolchain-wrapper.c @@ -0,0 +1,558 @@ +/** + * Buildroot wrapper for toolchains. This simply executes the real toolchain + * with a number of arguments (sysroot/arch/..) hardcoded, to ensure the + * toolchain uses the correct configuration. + * The hardcoded path arguments are defined relative to the actual location + * of the binary. + * + * (C) 2011 Peter Korsgaard + * (C) 2011 Daniel Nyström + * (C) 2012 Arnout Vandecappelle (Essensium/Mind) + * (C) 2013 Spenser Gilliland + * + * This file is licensed under the terms of the GNU General Public License + * version 2. This program is licensed "as is" without any warranty of any + * kind, whether express or implied. + */ + +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BR_CCACHE +static char ccache_path[PATH_MAX]; +#endif +static char path[PATH_MAX]; +static char sysroot[PATH_MAX]; +/* As would be defined by gcc: + * https://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html + * sizeof() on string literals includes the terminating \0. */ +static char _time_[sizeof("-D__TIME__=\"HH:MM:SS\"")]; +static char _date_[sizeof("-D__DATE__=\"MMM DD YYYY\"")]; + +/** + * GCC errors out with certain combinations of arguments (examples are + * -mfloat-abi={hard|soft} and -m{little|big}-endian), so we have to ensure + * that we only pass the predefined one to the real compiler if the inverse + * option isn't in the argument list. + * This specifies the worst case number of extra arguments we might pass + * Currently, we may have: + * -mfloat-abi= + * -march= + * -mcpu= + * -D__TIME__= + * -D__DATE__= + * -Wno-builtin-macro-redefined + * -Wl,-z,now + * -Wl,-z,relro + * -fPIE + * -pie + */ +#define EXCLUSIVE_ARGS 10 + +static char *predef_args[] = { +#ifdef BR_CCACHE + ccache_path, +#endif + path, + "--sysroot", sysroot, +#ifdef BR_ABI + "-mabi=" BR_ABI, +#endif +#ifdef BR_NAN + "-mnan=" BR_NAN, +#endif +#ifdef BR_FPU + "-mfpu=" BR_FPU, +#endif +#ifdef BR_SOFTFLOAT + "-msoft-float", +#endif /* BR_SOFTFLOAT */ +#ifdef BR_MODE + "-m" BR_MODE, +#endif +#ifdef BR_64 + "-m64", +#endif +#ifdef BR_OMIT_LOCK_PREFIX + "-Wa,-momit-lock-prefix=yes", +#endif +#ifdef BR_NO_FUSED_MADD + "-mno-fused-madd", +#endif +#ifdef BR_FP_CONTRACT_OFF + "-ffp-contract=off", +#endif +#ifdef BR_BINFMT_FLAT + "-Wl,-elf2flt", +#endif +#ifdef BR_MIPS_TARGET_LITTLE_ENDIAN + "-EL", +#endif +#if defined(BR_MIPS_TARGET_BIG_ENDIAN) || defined(BR_ARC_TARGET_BIG_ENDIAN) + "-EB", +#endif +#ifdef BR_ADDITIONAL_CFLAGS + BR_ADDITIONAL_CFLAGS +#endif +}; + +/* 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; +}; + +/* 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), + STR_LEN(/usr/X11R6/include), + STR_LEN(/usr/X11R6/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). + */ +static void check_unsafe_path(const char *arg, + const char *path, + 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: ERROR: unsafe header/library path used in cross-compilation: '%s%s%s'\n", + program_invocation_short_name, + arg, + arg_has_path ? "" : "' '", /* close single-quote, space, open single-quote */ + arg_has_path ? "" : path); /* so that arg and path are properly quoted. */ + exit(1); + } +} + +#ifdef BR_NEED_SOURCE_DATE_EPOCH +/* Returns false if SOURCE_DATE_EPOCH was not defined in the environment. + * + * Returns true if SOURCE_DATE_EPOCH is in the environment and represent + * a valid timestamp, in which case the timestamp is formatted into the + * global variables _date_ and _time_. + * + * Aborts if SOURCE_DATE_EPOCH was set in the environment but did not + * contain a valid timestamp. + * + * Valid values are defined in the spec: + * https://reproducible-builds.org/specs/source-date-epoch/ + * but we further restrict them to be positive or null. + */ +bool parse_source_date_epoch_from_env(void) +{ + char *epoch_env, *endptr; + time_t epoch; + struct tm epoch_tm; + + if ((epoch_env = getenv("SOURCE_DATE_EPOCH")) == NULL) + return false; + errno = 0; + epoch = (time_t) strtoll(epoch_env, &endptr, 10); + /* We just need to test if it is incorrect, but we do not + * care why it is incorrect. + */ + if ((errno != 0) || !*epoch_env || *endptr || (epoch < 0)) { + fprintf(stderr, "%s: invalid SOURCE_DATE_EPOCH='%s'\n", + program_invocation_short_name, + epoch_env); + exit(1); + } + tzset(); /* For localtime_r(), below. */ + if (localtime_r(&epoch, &epoch_tm) == NULL) { + fprintf(stderr, "%s: cannot parse SOURCE_DATE_EPOCH=%s\n", + program_invocation_short_name, + getenv("SOURCE_DATE_EPOCH")); + exit(1); + } + if (!strftime(_time_, sizeof(_time_), "-D__TIME__=\"%T\"", &epoch_tm)) { + fprintf(stderr, "%s: cannot set time from SOURCE_DATE_EPOCH=%s\n", + program_invocation_short_name, + getenv("SOURCE_DATE_EPOCH")); + exit(1); + } + if (!strftime(_date_, sizeof(_date_), "-D__DATE__=\"%b %e %Y\"", &epoch_tm)) { + fprintf(stderr, "%s: cannot set date from SOURCE_DATE_EPOCH=%s\n", + program_invocation_short_name, + getenv("SOURCE_DATE_EPOCH")); + exit(1); + } + return true; +} +#else +bool parse_source_date_epoch_from_env(void) +{ + /* The compiler is recent enough to handle SOURCE_DATE_EPOCH itself + * so we do not need to do anything here. + */ + return false; +} +#endif + +int main(int argc, char **argv) +{ + char **args, **cur, **exec_args; + char *relbasedir, *absbasedir; + char *progpath = argv[0]; + char *basename; + char *env_debug; + int ret, i, count = 0, debug = 0, found_shared = 0; + + /* Debug the wrapper to see arguments it was called with. + * If environment variable BR2_DEBUG_WRAPPER is: + * unset, empty, or 0: do not trace + * set to 1 : trace all arguments on a single line + * set to 2 : trace one argument per line + */ + if ((env_debug = getenv("BR2_DEBUG_WRAPPER"))) { + debug = atoi(env_debug); + } + if (debug > 0) { + fprintf(stderr, "Toolchain wrapper was called with:"); + for (i = 0; i < argc; i++) + fprintf(stderr, "%s'%s'", + (debug == 2) ? "\n " : " ", argv[i]); + fprintf(stderr, "\n"); + } + + /* Calculate the relative paths */ + basename = strrchr(progpath, '/'); + if (basename) { + *basename = '\0'; + basename++; + relbasedir = malloc(strlen(progpath) + 7); + if (relbasedir == NULL) { + perror(__FILE__ ": malloc"); + return 2; + } + sprintf(relbasedir, "%s/..", argv[0]); + absbasedir = realpath(relbasedir, NULL); + } else { + basename = progpath; + absbasedir = malloc(PATH_MAX + 1); + ret = readlink("/proc/self/exe", absbasedir, PATH_MAX); + if (ret < 0) { + perror(__FILE__ ": readlink"); + return 2; + } + absbasedir[ret] = '\0'; + for (i = ret; i > 0; i--) { + if (absbasedir[i] == '/') { + absbasedir[i] = '\0'; + if (++count == 2) + break; + } + } + } + if (absbasedir == NULL) { + perror(__FILE__ ": realpath"); + return 2; + } + + /* Fill in the relative paths */ +#ifdef BR_CROSS_PATH_REL + ret = snprintf(path, sizeof(path), "%s/" BR_CROSS_PATH_REL "/%s" BR_CROSS_PATH_SUFFIX, absbasedir, basename); +#elif defined(BR_CROSS_PATH_ABS) + ret = snprintf(path, sizeof(path), BR_CROSS_PATH_ABS "/%s" BR_CROSS_PATH_SUFFIX, basename); +#else + ret = snprintf(path, sizeof(path), "%s/bin/%s" BR_CROSS_PATH_SUFFIX, absbasedir, basename); +#endif + if (ret >= sizeof(path)) { + perror(__FILE__ ": overflow"); + return 3; + } + + /* skip all processing --help is specified */ + for (i = 1; i < argc; i++) { + if (!strcmp(argv[i], "--help")) { + argv[0] = path; + if (execv(path, argv)) + perror(path); + return 1; + } + } + +#ifdef BR_CCACHE + ret = snprintf(ccache_path, sizeof(ccache_path), "%s/bin/ccache", absbasedir); + if (ret >= sizeof(ccache_path)) { + perror(__FILE__ ": overflow"); + return 3; + } +#endif + ret = snprintf(sysroot, sizeof(sysroot), "%s/" BR_SYSROOT, absbasedir); + if (ret >= sizeof(sysroot)) { + perror(__FILE__ ": overflow"); + return 3; + } + + cur = args = malloc(sizeof(predef_args) + + (sizeof(char *) * (argc + EXCLUSIVE_ARGS))); + if (args == NULL) { + perror(__FILE__ ": malloc"); + return 2; + } + + /* start with predefined args */ + memcpy(cur, predef_args, sizeof(predef_args)); + cur += sizeof(predef_args) / sizeof(predef_args[0]); + +#ifdef BR_FLOAT_ABI + /* add float abi if not overridden in args */ + for (i = 1; i < argc; i++) { + if (!strncmp(argv[i], "-mfloat-abi=", strlen("-mfloat-abi=")) || + !strcmp(argv[i], "-msoft-float") || + !strcmp(argv[i], "-mhard-float")) + break; + } + + if (i == argc) + *cur++ = "-mfloat-abi=" BR_FLOAT_ABI; +#endif + +#ifdef BR_FP32_MODE + /* add fp32 mode if soft-float is not args or hard-float overrides soft-float */ + int add_fp32_mode = 1; + for (i = 1; i < argc; i++) { + if (!strcmp(argv[i], "-msoft-float")) + add_fp32_mode = 0; + else if (!strcmp(argv[i], "-mhard-float")) + add_fp32_mode = 1; + } + + if (add_fp32_mode == 1) + *cur++ = "-mfp" BR_FP32_MODE; +#endif + +#if defined(BR_ARCH) || \ + defined(BR_CPU) + /* Add our -march/cpu flags, but only if none of + * -march/mtune/mcpu are already specified on the commandline + */ + for (i = 1; i < argc; i++) { + if (!strncmp(argv[i], "-march=", strlen("-march=")) || + !strncmp(argv[i], "-mtune=", strlen("-mtune=")) || + !strncmp(argv[i], "-mcpu=", strlen("-mcpu=" ))) + break; + } + if (i == argc) { +#ifdef BR_ARCH + *cur++ = "-march=" BR_ARCH; +#endif +#ifdef BR_CPU + *cur++ = "-mcpu=" BR_CPU; +#endif + } +#endif /* ARCH || CPU */ + + if (parse_source_date_epoch_from_env()) { + *cur++ = _time_; + *cur++ = _date_; + /* This has existed since gcc-4.4.0. */ + *cur++ = "-Wno-builtin-macro-redefined"; + } + +#ifdef BR2_PIC_PIE + /* Patterned after Fedora/Gentoo hardening approaches. + * https://fedoraproject.org/wiki/Changes/Harden_All_Packages + * https://wiki.gentoo.org/wiki/Hardened/Toolchain#Position_Independent_Executables_.28PIEs.29 + * + * A few checks are added to allow disabling of PIE + * 1) -fno-pie and -no-pie are used by other distros to disable PIE in + * cases where the compiler enables it by default. The logic below + * maintains that behavior. + * Ref: https://wiki.ubuntu.com/SecurityTeam/PIE + * 2) A check for -fno-PIE has been used in older Linux Kernel builds + * in a similar way to -fno-pie or -no-pie. + * 3) A check is added for Kernel and U-boot defines + * (-D__KERNEL__ and -D__UBOOT__). + */ + for (i = 1; i < argc; i++) { + /* Apply all incompatible link flag and disable checks first */ + if (!strcmp(argv[i], "-r") || + !strcmp(argv[i], "-Wl,-r") || + !strcmp(argv[i], "-static") || + !strcmp(argv[i], "-D__KERNEL__") || + !strcmp(argv[i], "-D__UBOOT__") || + !strcmp(argv[i], "-fno-pie") || + !strcmp(argv[i], "-fno-PIE") || + !strcmp(argv[i], "-no-pie")) + break; + /* Record that shared was present which disables -pie but don't + * break out of loop as a check needs to occur that possibly + * still allows -fPIE to be set + */ + if (!strcmp(argv[i], "-shared")) + found_shared = 1; + } + + if (i == argc) { + /* Compile and link condition checking have been kept split + * between these two loops, as there maybe already are valid + * compile flags set for position independence. In that case + * the wrapper just adds the -pie for link. + */ + for (i = 1; i < argc; i++) { + if (!strcmp(argv[i], "-fpie") || + !strcmp(argv[i], "-fPIE") || + !strcmp(argv[i], "-fpic") || + !strcmp(argv[i], "-fPIC")) + break; + } + /* Both args below can be set at compile/link time + * and are ignored correctly when not used + */ + if (i == argc) + *cur++ = "-fPIE"; + + if (!found_shared) + *cur++ = "-pie"; + } +#endif + /* Are we building the Linux Kernel or U-Boot? */ + for (i = 1; i < argc; i++) { + if (!strcmp(argv[i], "-D__KERNEL__") || + !strcmp(argv[i], "-D__UBOOT__")) + break; + } + if (i == argc) { + /* https://wiki.gentoo.org/wiki/Hardened/Toolchain#Mark_Read-Only_Appropriate_Sections */ +#ifdef BR2_RELRO_PARTIAL + *cur++ = "-Wl,-z,relro"; +#endif +#ifdef BR2_RELRO_FULL + *cur++ = "-Wl,-z,now"; + *cur++ = "-Wl,-z,relro"; +#endif + } + + /* Check for unsafe library and header paths */ + for (i = 1; i < argc; i++) { + 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; + + /* 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], 0); + } else + check_unsafe_path(argv[i], argv[i] + opt->len, 1); + } + } + + /* append forward args */ + memcpy(cur, &argv[1], sizeof(char *) * (argc - 1)); + cur += argc - 1; + + /* finish with NULL termination */ + *cur = NULL; + + exec_args = args; +#ifdef BR_CCACHE + /* If BR2_USE_CCACHE is set and its value is 1, enable ccache + * usage */ + char *br_use_ccache = getenv("BR2_USE_CCACHE"); + bool ccache_enabled = br_use_ccache && !strncmp(br_use_ccache, "1", strlen("1")); + + if (ccache_enabled) { +#ifdef BR_CCACHE_HASH + /* Allow compilercheck to be overridden through the environment */ + if (setenv("CCACHE_COMPILERCHECK", "string:" BR_CCACHE_HASH, 0)) { + perror(__FILE__ ": Failed to set CCACHE_COMPILERCHECK"); + return 3; + } +#endif +#ifdef BR_CCACHE_BASEDIR + /* Allow compilercheck to be overridden through the environment */ + if (setenv("CCACHE_BASEDIR", BR_CCACHE_BASEDIR, 0)) { + perror(__FILE__ ": Failed to set CCACHE_BASEDIR"); + return 3; + } +#endif + } else + /* ccache is disabled, skip it */ + exec_args++; +#endif + + /* Debug the wrapper to see final arguments passed to the real compiler. */ + if (debug > 0) { + fprintf(stderr, "Toolchain wrapper executing:"); +#ifdef BR_CCACHE_HASH + if (ccache_enabled) + fprintf(stderr, "%sCCACHE_COMPILERCHECK='string:" BR_CCACHE_HASH "'", + (debug == 2) ? "\n " : " "); +#endif +#ifdef BR_CCACHE_BASEDIR + if (ccache_enabled) + fprintf(stderr, "%sCCACHE_BASEDIR='" BR_CCACHE_BASEDIR "'", + (debug == 2) ? "\n " : " "); +#endif + for (i = 0; exec_args[i]; i++) + fprintf(stderr, "%s'%s'", + (debug == 2) ? "\n " : " ", exec_args[i]); + fprintf(stderr, "\n"); + } + + if (execv(exec_args[0], exec_args)) + perror(path); + + free(args); + + return 2; +} diff --git a/toolchain/toolchain-wrapper.mk b/toolchain/toolchain-wrapper.mk new file mode 100644 index 00000000..cbf46f15 --- /dev/null +++ b/toolchain/toolchain-wrapper.mk @@ -0,0 +1,96 @@ +################################################################################ +# +# definition of the toolchain wrapper build commands +# +################################################################################ + +# We use --hash-style=both to increase the compatibility of the generated +# binary with older platforms, except for MIPS, where the only acceptable +# hash style is 'sysv' +ifeq ($(findstring mips,$(HOSTARCH)),mips) +TOOLCHAIN_WRAPPER_HASH_STYLE = sysv +else +TOOLCHAIN_WRAPPER_HASH_STYLE = both +endif + +TOOLCHAIN_WRAPPER_ARGS = $($(PKG)_TOOLCHAIN_WRAPPER_ARGS) +TOOLCHAIN_WRAPPER_ARGS += -DBR_SYSROOT='"$(STAGING_SUBDIR)"' + +TOOLCHAIN_WRAPPER_OPTS = \ + $(ARCH_TOOLCHAIN_WRAPPER_OPTS) \ + $(call qstrip,$(BR2_SSP_OPTION)) \ + $(call qstrip,$(BR2_TARGET_OPTIMIZATION)) + +ifeq ($(BR2_REPRODUCIBLE),y) +TOOLCHAIN_WRAPPER_OPTS += -Wl,--build-id=none +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_8),y) +TOOLCHAIN_WRAPPER_OPTS += -ffile-prefix-map=$(BASE_DIR)=buildroot +else +TOOLCHAIN_WRAPPER_OPTS += -fdebug-prefix-map=$(BASE_DIR)=buildroot +TOOLCHAIN_WRAPPER_OPTS += -D__FILE__=\"\" -D__BASE_FILE__=\"\" -Wno-builtin-macro-redefined +endif +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_7),) +TOOLCHAIN_WRAPPER_OPTS += -DBR_NEED_SOURCE_DATE_EPOCH +endif +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_6),) +TOOLCHAIN_WRAPPER_OPTS += -gno-record-gcc-switches +endif +endif + +# Disable -ftree-loop-distribute-patterns on microblaze to +# workaround a compiler bug with gcc 10 and -O2, -Os or -O3. +# https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=5879ab5fafedc8f6f9bfe95a4cf8501b0df90edd +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97208 +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_10)$(BR2_microblaze),yy) +TOOLCHAIN_WRAPPER_OPTS += -fno-tree-loop-distribute-patterns +endif + +# We create a list like '"-mfoo", "-mbar", "-mbarfoo"' so that each flag is a +# separate argument when used in execv() by the toolchain wrapper. +TOOLCHAIN_WRAPPER_ARGS += \ + -DBR_ADDITIONAL_CFLAGS='$(foreach f,$(TOOLCHAIN_WRAPPER_OPTS),"$(f)"$(comma))' + +ifeq ($(BR2_CCACHE),y) +TOOLCHAIN_WRAPPER_ARGS += -DBR_CCACHE +endif + +ifeq ($(BR2_x86_x1000),y) +TOOLCHAIN_WRAPPER_ARGS += -DBR_OMIT_LOCK_PREFIX +endif + +# Avoid FPU bug on XBurst CPUs +ifeq ($(BR2_mips_xburst),y) +# Before gcc 4.6, -mno-fused-madd was needed, after -ffp-contract is +# needed +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_6),y) +TOOLCHAIN_WRAPPER_ARGS += -DBR_FP_CONTRACT_OFF +else +TOOLCHAIN_WRAPPER_ARGS += -DBR_NO_FUSED_MADD +endif +endif + +ifeq ($(BR2_CCACHE_USE_BASEDIR),y) +TOOLCHAIN_WRAPPER_ARGS += -DBR_CCACHE_BASEDIR='"$(BASE_DIR)"' +endif + +ifeq ($(BR2_PIC_PIE),y) +TOOLCHAIN_WRAPPER_ARGS += -DBR2_PIC_PIE +endif + +ifeq ($(BR2_RELRO_PARTIAL),y) +TOOLCHAIN_WRAPPER_ARGS += -DBR2_RELRO_PARTIAL +else ifeq ($(BR2_RELRO_FULL),y) +TOOLCHAIN_WRAPPER_ARGS += -DBR2_RELRO_FULL +endif + +define TOOLCHAIN_WRAPPER_BUILD + $(HOSTCC) $(HOST_CFLAGS) $(TOOLCHAIN_WRAPPER_ARGS) \ + -s -Wl,--hash-style=$(TOOLCHAIN_WRAPPER_HASH_STYLE) \ + toolchain/toolchain-wrapper.c \ + -o $(@D)/toolchain-wrapper +endef + +define TOOLCHAIN_WRAPPER_INSTALL + $(INSTALL) -D -m 0755 $(@D)/toolchain-wrapper \ + $(HOST_DIR)/bin/toolchain-wrapper +endef diff --git a/toolchain/toolchain.mk b/toolchain/toolchain.mk new file mode 100644 index 00000000..fe87a72e --- /dev/null +++ b/toolchain/toolchain.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# toolchain-related customisation of the content of the target/ directory +# +################################################################################ + +# Those customisations are added to the TARGET_FINALIZE_HOOKS, to be applied +# just after all packages have been built. + +# Install the gconv modules +ifeq ($(BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY),y) +TOOLCHAIN_GLIBC_GCONV_LIBS = $(call qstrip,$(BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_LIST)) +define TOOLCHAIN_GLIBC_COPY_GCONV_LIBS + $(Q)found_gconv=no; \ + for d in $(TOOLCHAIN_EXTERNAL_PREFIX) ''; do \ + [ -d "$(STAGING_DIR)/usr/lib/$${d}/gconv" ] || continue; \ + found_gconv=yes; \ + break; \ + done; \ + if [ "$${found_gconv}" = "no" ]; then \ + printf "Unable to find gconv modules\n" >&2; \ + exit 1; \ + fi; \ + if [ -z "$(TOOLCHAIN_GLIBC_GCONV_LIBS)" ]; then \ + $(INSTALL) -m 0644 -D $(STAGING_DIR)/usr/lib/$${d}/gconv/gconv-modules \ + $(TARGET_DIR)/usr/lib/gconv/gconv-modules && \ + $(INSTALL) -m 0644 $(STAGING_DIR)/usr/lib/$${d}/gconv/*.so \ + $(TARGET_DIR)/usr/lib/gconv \ + || exit 1; \ + if [ -d $(STAGING_DIR)/usr/lib/$${d}/gconv/gconv-modules.d ]; then \ + cp -a $(STAGING_DIR)/usr/lib/$${d}/gconv/gconv-modules.d \ + $(TARGET_DIR)/usr/lib/gconv/ || exit 1; \ + fi; \ + else \ + for l in $(TOOLCHAIN_GLIBC_GCONV_LIBS); do \ + $(INSTALL) -m 0644 -D $(STAGING_DIR)/usr/lib/$${d}/gconv/$${l}.so \ + $(TARGET_DIR)/usr/lib/gconv/$${l}.so \ + || exit 1; \ + $(TARGET_READELF) -d $(STAGING_DIR)/usr/lib/$${d}/gconv/$${l}.so |\ + sort -u |\ + sed -e '/.*(NEEDED).*\[\(.*\.so\)\]$$/!d; s//\1/;' |\ + while read lib; do \ + $(INSTALL) -m 0644 -D $(STAGING_DIR)/usr/lib/$${d}/gconv/$${lib} \ + $(TARGET_DIR)/usr/lib/gconv/$${lib} \ + || exit 1; \ + done; \ + done; \ + ./support/scripts/expunge-gconv-modules \ + $(STAGING_DIR)/usr/lib/$${d}/gconv \ + "$(TOOLCHAIN_GLIBC_GCONV_LIBS)" \ + >$(TARGET_DIR)/usr/lib/gconv/gconv-modules; \ + fi +endef +TOOLCHAIN_TARGET_FINALIZE_HOOKS += TOOLCHAIN_GLIBC_COPY_GCONV_LIBS +endif diff --git a/toolchain/toolchain/toolchain.mk b/toolchain/toolchain/toolchain.mk new file mode 100644 index 00000000..ac60a7b2 --- /dev/null +++ b/toolchain/toolchain/toolchain.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# toolchain +# +################################################################################ + +ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y) +TOOLCHAIN_DEPENDENCIES += toolchain-buildroot +else ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y) +TOOLCHAIN_DEPENDENCIES += toolchain-external +endif + +TOOLCHAIN_ADD_TOOLCHAIN_DEPENDENCY = NO +TOOLCHAIN_INSTALL_STAGING = YES + +# Apply a hack that Rick Felker suggested[1] to avoid conflicts between libc +# headers and kernel headers. This is needed for kernel headers older than +# 4.15. Kernel headers 4.15 and newer don't require __GLIBC__ to be defined. +# +# Augment the original suggestion with __USE_MISC since recent kernels +# (older than 4.15) 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. +# +# Kernel version 3.12 introduced the libc-compat.h header. +# +# [1] http://www.openwall.com/lists/musl/2015/10/08/2 +ifeq ($(BR2_TOOLCHAIN_USES_MUSL)$(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12):$(BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15),yy:) +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 +endif + +# Install default nsswitch.conf file if the skeleton doesn't provide it +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y) +define TOOLCHAIN_GLIBC_COPY_NSSWITCH_FILE + @if [ ! -f "$(TARGET_DIR)/etc/nsswitch.conf" ]; then \ + $(INSTALL) -D -m 0644 package/glibc/nsswitch.conf $(TARGET_DIR)/etc/nsswitch.conf ; \ + fi +endef +TOOLCHAIN_POST_INSTALL_TARGET_HOOKS += TOOLCHAIN_GLIBC_COPY_NSSWITCH_FILE +endif + +# Not really a virtual package, but we use the virtual package infra here so +# both the build log and build directory look nicer (toolchain-virtual instead +# of toolchain-undefined) +$(eval $(virtual-package)) diff --git a/utils/add-custom-hashes b/utils/add-custom-hashes new file mode 100755 index 00000000..017b25b2 --- /dev/null +++ b/utils/add-custom-hashes @@ -0,0 +1,111 @@ +#!/usr/bin/env bash +set -e + +# Add hash files for packages with custom versions for +# BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +# +# Run in a configured Buildroot directory, E.G. +# make foo_defconfig; ./utils/add-custom-hashes + +# print BR-style message +# message +message() { + tput smso 2>/dev/null + echo "$*" + tput rmso 2>/dev/null +} + +# print error message and exit +# die +die() { + echo "Error: $*" >&2 + exit 1 +} + +# get package(s) for download file, if any +# get_pkgs +get_pkgs() { + jq --arg file "$2" -r \ + 'to_entries[] | select(.value.downloads[0].source == $file) | .key | strings' "$1" +} + +# get download dir for package +# get_pkg_dl_dir +get_pkg_dl_dir() { + jq --arg pkg "$2" -r '.[$pkg].dl_dir | strings' "$1" +} + +# generate hash file for download file +# gen_hash +gen_hash() { + ( + cd "$1" && printf '# Locally calculated\nsha256 ' && sha256sum "$2" + ) +} + +command -v jq >/dev/null || die 'Script needs jq' + +[ -e .config ] || \ + die "No .config found, please run this in a configured Buildroot (O=) directory" + +message Collecting data + +eval "$(make -s VARS='TOPDIR DL_DIR BR_NO_CHECK_HASH_FOR BR2_GLOBAL_PATCH_DIR' QUOTED_VARS=YES printvars)" +# global patch dir may already have quotes +BR2_GLOBAL_PATCH_DIR=$(echo "$BR2_GLOBAL_PATCH_DIR" | tr -d '"') + +[ -n "$BR2_GLOBAL_PATCH_DIR" ] || die "No BR2_GLOBAL_PATCH_DIR defined, nothing to do" +[ -n "$BR_NO_CHECK_HASH_FOR" ] || die "No packages without hashes found, nothing to do" + +[ -d "$TOPDIR" ] || die "TOPDIR ($TOPDIR) does not look correct" +[ -d "$DL_DIR" ] || die "DL_DIR ($DL_DIR) does not look correct" + +# patch dir may contain multiple dirs, use the last one +# shellcheck disable=SC2086 # we need the word splitting +set -- $BR2_GLOBAL_PATCH_DIR +if [ $# -gt 1 ]; then + BR2_GLOBAL_PATCH_DIR="${!#}"; + message BR2_GLOBAL_PATCH_DIR contains multiple directories, using "$BR2_GLOBAL_PATCH_DIR" +fi + +# patch dir may be relative to TOPDIR +case "$BR2_GLOBAL_PATCH_DIR" in + /*) ;; + *) BR2_GLOBAL_PATCH_DIR="$TOPDIR/$BR2_GLOBAL_PATCH_DIR" + ;; +esac + +[ -d "$BR2_GLOBAL_PATCH_DIR" ] \ + || die "BR2_GLOBAL_PATCH_DIR ($BR2_GLOBAL_PATCH_DIR) does not look correct" + +trap 'rm -f "$JSON"' EXIT +JSON=$(mktemp) +make show-info > "$JSON" + +# ensure files have been downloaded, but without checking +make BR2_DOWNLOAD_FORCE_CHECK_HASHES= source + +message Updating hashes + +for file in $BR_NO_CHECK_HASH_FOR; do + for pkg in $(get_pkgs "$JSON" "$file"); do + HASHFILE="$BR2_GLOBAL_PATCH_DIR/$pkg/$pkg.hash" + PKG_DL_DIR=$(get_pkg_dl_dir "$JSON" "$pkg") + message "Adding hash for $file to $HASHFILE" + mkdir -p "${HASHFILE%/*}" + gen_hash "$DL_DIR/$PKG_DL_DIR" "$file" > "$HASHFILE" + done +done + +# Symlink linux-headers to linux if identical +linux_hash="$BR2_GLOBAL_PATCH_DIR/linux/linux.hash" +linux_headers_hash="$BR2_GLOBAL_PATCH_DIR/linux-headers/linux-headers.hash" +if [ -e "$linux_hash" ] && [ -e "$linux_headers_hash" ] \ + && cmp -s "$linux_hash" "$linux_headers_hash"; then + ln -sf ../linux/linux.hash "$linux_headers_hash" +fi + +message Verifying hashes + +make clean +make BR2_DOWNLOAD_FORCE_CHECK_HASHES=y source diff --git a/utils/brmake b/utils/brmake new file mode 100755 index 00000000..70dfb6cd --- /dev/null +++ b/utils/brmake @@ -0,0 +1,42 @@ +#!/bin/bash +# (C) 2016, "Yann E. MORIN" +# License: WTFPL, https://spdx.org/licenses/WTFPL.html + +main() { + local ret start d h m mf + + if ! which unbuffer >/dev/null 2>&1; then + printf "you need to install 'unbuffer' (from package expect or expect-dev)\n" >&2 + exit 1 + fi + + start=${SECONDS} + + ( exec 2>&1; unbuffer make "${@}"; ) \ + > >( while read -r line; do + printf "%(%Y-%m-%dT%H:%M:%S)T %s\n" -1 "${line}" + done \ + |tee -a br.log \ + |grep --colour=never -E '>>>' + ) + ret=${?} + + d=$((SECONDS-start)) + printf "Done in " + h=$((d/3600)) + d=$((d%3600)) + [ ${h} -eq 0 ] || { printf "%dh " ${h}; mf="02"; } + m=$((d/60)) + d=$((d%60)) + [ ${m} -eq 0 ] || { printf "%${mf}dmin " ${m}; sf="02"; } + printf "%${sf}ds" ${d} + + if [ ${ret} -ne 0 ]; then + printf " (error code: %s)" ${ret} + fi + printf "\n" + + return ${ret} +} + +main "${@}" diff --git a/utils/check-package b/utils/check-package new file mode 100755 index 00000000..872e66c1 --- /dev/null +++ b/utils/check-package @@ -0,0 +1,332 @@ +#!/usr/bin/env python3 +# See utils/checkpackagelib/readme.txt before editing this file. + +import argparse +import inspect +import magic +import os +import re +import sys + +import checkpackagelib.base +import checkpackagelib.lib_config +import checkpackagelib.lib_defconfig +import checkpackagelib.lib_hash +import checkpackagelib.lib_ignore +import checkpackagelib.lib_mk +import checkpackagelib.lib_patch +import checkpackagelib.lib_python +import checkpackagelib.lib_shellscript +import checkpackagelib.lib_sysv + +VERBOSE_LEVEL_TO_SHOW_IGNORED_FILES = 3 +flags = None # Command line arguments. + +# There are two Python packages called 'magic': +# https://pypi.org/project/file-magic/ +# https://pypi.org/project/python-magic/ +# Both allow to return a MIME file type, but with a slightly different +# interface. Detect which one of the two we have based on one of the +# attributes. +if hasattr(magic, 'FileMagic'): + # https://pypi.org/project/file-magic/ + def get_filetype(fname): + return magic.detect_from_filename(fname).mime_type +else: + # https://pypi.org/project/python-magic/ + def get_filetype(fname): + return magic.from_file(fname, mime=True) + + +def get_ignored_parsers_per_file(intree_only, ignore_filename): + ignored = dict() + entry_base_dir = '' + + if not ignore_filename: + return ignored + + filename = os.path.abspath(ignore_filename) + entry_base_dir = os.path.join(os.path.dirname(filename)) + + with open(filename, "r") as f: + for line in f.readlines(): + filename, warnings_str = line.split(' ', 1) + warnings = warnings_str.split() + ignored[os.path.join(entry_base_dir, filename)] = warnings + return ignored + + +def parse_args(): + parser = argparse.ArgumentParser() + + # Do not use argparse.FileType("r") here because only files with known + # format will be open based on the filename. + parser.add_argument("files", metavar="F", type=str, nargs="*", + help="list of files") + + parser.add_argument("--br2-external", "-b", dest='intree_only', action="store_false", + help="do not apply the pathname filters used for intree files") + parser.add_argument("--ignore-list", dest='ignore_filename', action="store", + help='override the default list of ignored warnings') + + parser.add_argument("--manual-url", action="store", + default="https://nightly.buildroot.org/", + help="default: %(default)s") + parser.add_argument("--verbose", "-v", action="count", default=0) + parser.add_argument("--quiet", "-q", action="count", default=0) + + # Now the debug options in the order they are processed. + parser.add_argument("--include-only", dest="include_list", action="append", + help="run only the specified functions (debug)") + parser.add_argument("--exclude", dest="exclude_list", action="append", + help="do not run the specified functions (debug)") + parser.add_argument("--dry-run", action="store_true", help="print the " + "functions that would be called for each file (debug)") + parser.add_argument("--failed-only", action="store_true", help="print only" + " the name of the functions that failed (debug)") + + parser.add_argument("--test-suite", action="store_true", help="Run the" + " test-suite") + + flags = parser.parse_args() + + flags.ignore_list = get_ignored_parsers_per_file(flags.intree_only, flags.ignore_filename) + + if flags.failed_only: + flags.dry_run = False + flags.verbose = -1 + + return flags + + +def get_lib_from_filetype(fname): + if not os.path.isfile(fname): + return None + filetype = get_filetype(fname) + if filetype == "text/x-shellscript": + return checkpackagelib.lib_shellscript + if filetype in ["text/x-python", "text/x-script.python"]: + return checkpackagelib.lib_python + return None + + +CONFIG_IN_FILENAME = re.compile(r"Config\.\S*$") +DO_CHECK_INTREE = re.compile(r"|".join([ + r".checkpackageignore", + r"Config.in", + r"arch/", + r"board/", + r"boot/", + r"configs/", + r"fs/", + r"linux/", + r"package/", + r"support/", + r"system/", + r"toolchain/", + r"utils/", + ])) +DO_NOT_CHECK_INTREE = re.compile(r"|".join([ + r"boot/barebox/barebox\.mk$", + r"fs/common\.mk$", + r"package/alchemy/atom.mk.in$", + r"package/doc-asciidoc\.mk$", + r"package/pkg-\S*\.mk$", + r"support/dependencies/[^/]+\.mk$", + r"support/gnuconfig/config\.", + r"support/kconfig/", + r"support/misc/[^/]+\.mk$", + r"support/testing/tests/.*br2-external/", + r"toolchain/helpers\.mk$", + r"toolchain/toolchain-external/pkg-toolchain-external\.mk$", + ])) + +SYSV_INIT_SCRIPT_FILENAME = re.compile(r"/S\d\d[^/]+$") + +# For defconfigs: avoid matching kernel, uboot... defconfig files, so +# limit to defconfig files in a configs/ directory, either in-tree or +# in a br2-external tree. +BR_DEFCONFIG_FILENAME = re.compile(r"^(.+/)?configs/[^/]+_defconfig$") + + +def get_lib_from_filename(fname): + if flags.intree_only: + if DO_CHECK_INTREE.match(fname) is None: + return None + if DO_NOT_CHECK_INTREE.match(fname): + return None + else: + if os.path.basename(fname) == "external.mk" and \ + os.path.exists(fname[:-2] + "desc"): + return None + if fname == ".checkpackageignore": + return checkpackagelib.lib_ignore + if CONFIG_IN_FILENAME.search(fname): + return checkpackagelib.lib_config + if BR_DEFCONFIG_FILENAME.search(fname): + return checkpackagelib.lib_defconfig + if fname.endswith(".hash"): + return checkpackagelib.lib_hash + if fname.endswith(".mk") or fname.endswith(".mk.in"): + return checkpackagelib.lib_mk + if fname.endswith(".patch"): + return checkpackagelib.lib_patch + if SYSV_INIT_SCRIPT_FILENAME.search(fname): + return checkpackagelib.lib_sysv + return get_lib_from_filetype(fname) + + +def common_inspect_rules(m): + # do not call the base class + if m.__name__.startswith("_"): + return False + if flags.include_list and m.__name__ not in flags.include_list: + return False + if flags.exclude_list and m.__name__ in flags.exclude_list: + return False + return True + + +def is_a_check_function(m): + if not inspect.isclass(m): + return False + if not issubclass(m, checkpackagelib.base._CheckFunction): + return False + return common_inspect_rules(m) + + +def is_external_tool(m): + if not inspect.isclass(m): + return False + if not issubclass(m, checkpackagelib.base._Tool): + return False + return common_inspect_rules(m) + + +def print_warnings(warnings, xfail): + # Avoid the need to use 'return []' at the end of every check function. + if warnings is None: + return 0, 0 # No warning generated. + + if xfail: + return 0, 1 # Warning not generated, fail expected for this file. + for level, message in enumerate(warnings): + if flags.verbose >= level: + print(message.replace("\t", "< tab >").rstrip()) + return 1, 1 # One more warning to count. + + +def check_file_using_lib(fname): + # Count number of warnings generated and lines processed. + nwarnings = 0 + nlines = 0 + xfail = flags.ignore_list.get(os.path.abspath(fname), []) + failed = set() + + lib = get_lib_from_filename(fname) + if not lib: + if flags.verbose >= VERBOSE_LEVEL_TO_SHOW_IGNORED_FILES: + print("{}: ignored".format(fname)) + return nwarnings, nlines + internal_functions = inspect.getmembers(lib, is_a_check_function) + external_tools = inspect.getmembers(lib, is_external_tool) + all_checks = internal_functions + external_tools + + if flags.dry_run: + functions_to_run = [c[0] for c in all_checks] + print("{}: would run: {}".format(fname, functions_to_run)) + return nwarnings, nlines + + objects = [[f"{lib.__name__[16:]}.{c[0]}", c[1](fname, flags.manual_url)] for c in internal_functions] + + for name, cf in objects: + warn, fail = print_warnings(cf.before(), name in xfail) + if fail > 0: + failed.add(name) + nwarnings += warn + + lastline = "" + with open(fname, "r", errors="surrogateescape") as f: + for lineno, text in enumerate(f): + nlines += 1 + for name, cf in objects: + if cf.disable.search(lastline): + continue + line_sts = cf.check_line(lineno + 1, text) + warn, fail = print_warnings(line_sts, name in xfail) + if fail > 0: + failed.add(name) + nwarnings += warn + lastline = text + + for name, cf in objects: + warn, fail = print_warnings(cf.after(), name in xfail) + if fail > 0: + failed.add(name) + nwarnings += warn + + tools = [[c[0], c[1](fname)] for c in external_tools] + + for name, tool in tools: + warn, fail = print_warnings(tool.run(), name in xfail) + if fail > 0: + failed.add(name) + nwarnings += warn + + for should_fail in xfail: + if should_fail not in failed: + print("{}:0: {} was expected to fail, did you fix the file and forget to update {}?" + .format(fname, should_fail, flags.ignore_filename)) + nwarnings += 1 + + if flags.failed_only: + if len(failed) > 0: + f = " ".join(sorted(failed)) + print("{} {}".format(fname, f)) + + return nwarnings, nlines + + +def __main__(): + global flags + flags = parse_args() + + if flags.test_suite: + return checkpackagelib.base.run_test_suite() + + if flags.intree_only: + # change all paths received to be relative to the base dir + base_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + files_to_check = [os.path.relpath(os.path.abspath(f), base_dir) for f in flags.files] + # move current dir so the script find the files + os.chdir(base_dir) + else: + files_to_check = flags.files + + if len(files_to_check) == 0: + print("No files to check style") + sys.exit(1) + + # Accumulate number of warnings generated and lines processed. + total_warnings = 0 + total_lines = 0 + + for fname in files_to_check: + nwarnings, nlines = check_file_using_lib(fname) + total_warnings += nwarnings + total_lines += nlines + + # The warning messages are printed to stdout and can be post-processed + # (e.g. counted by 'wc'), so for stats use stderr. Wait all warnings are + # printed, for the case there are many of them, before printing stats. + sys.stdout.flush() + + if not flags.quiet: + print("{} lines processed".format(total_lines), file=sys.stderr) + print("{} warnings generated".format(total_warnings), file=sys.stderr) + + if total_warnings > 0 and not flags.failed_only: + sys.exit(1) + + +__main__() diff --git a/utils/check-symbols b/utils/check-symbols new file mode 100755 index 00000000..bb787909 --- /dev/null +++ b/utils/check-symbols @@ -0,0 +1,78 @@ +#!/usr/bin/env python3 + +import argparse +import os +import sys + +import checksymbolslib.file as file +from checksymbolslib.db import DB + + +def parse_args(): + parser = argparse.ArgumentParser() + parser.add_argument('--search', action='store', default=None, + help='print all symbols matching a given regular expression') + return parser.parse_args() + + +def change_to_top_dir(): + base_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + os.chdir(base_dir) + + +def get_full_db(files_to_process): + db = DB() + for f in files_to_process: + file.populate_db_from_file(db, f) + return db + + +def print_filenames_with_pattern(all_files, files_to_process, pattern): + ignored_filenames = file.get_list_of_filenames_with_pattern(all_files, files_to_process, pattern) + processed_filenames = file.get_list_of_filenames_with_pattern(files_to_process, [], pattern) + print('========== filenames found with pattern "{}": {}'.format(pattern, len(processed_filenames))) + for f in processed_filenames: + print(f) + print('========== ignored filenames with pattern "{}": {}'.format(pattern, len(ignored_filenames))) + for f in ignored_filenames: + print(f) + + +def print_symbols_with_pattern(db, pattern): + symbols = db.get_symbols_with_pattern(pattern) + print('========== symbols with pattern "{}": {}'.format(pattern, len(symbols))) + for s in symbols: + print(s, str(symbols[s])) + + +def __main__(): + flags = parse_args() + + change_to_top_dir() + all_files = file.get_list_of_files_in_the_repo() + files_to_process = file.get_list_of_files_to_process(all_files) + db = get_full_db(files_to_process) + + if flags.search: + print_filenames_with_pattern(all_files, files_to_process, flags.search) + print_symbols_with_pattern(db, flags.search) + print('========== warnings:') + + warnings = [] + warnings += db.get_warnings_for_choices_selected() + warnings += db.get_warnings_for_legacy_symbols_being_defined() + warnings += db.get_warnings_for_legacy_symbols_being_used() + warnings += db.get_warnings_for_symbols_with_legacy_note_and_no_comment_on_usage() + warnings += db.get_warnings_for_symbols_with_legacy_note_and_no_usage() + warnings += db.get_warnings_for_symbols_without_definition() + warnings += db.get_warnings_for_symbols_without_usage() + + for filename, lineno, msg in sorted(warnings): + print('{}:{}: {}'.format(filename, lineno, msg), file=sys.stderr) + + if len(warnings) > 0: + sys.exit(1) + + +if __name__ == '__main__': + __main__() diff --git a/utils/checkpackagelib/__init__.py b/utils/checkpackagelib/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/utils/checkpackagelib/base.py b/utils/checkpackagelib/base.py new file mode 100644 index 00000000..0ab6eba9 --- /dev/null +++ b/utils/checkpackagelib/base.py @@ -0,0 +1,38 @@ +# See utils/checkpackagelib/readme.txt before editing this file. +import re +import os + + +class _CheckFunction(object): + def __init__(self, filename, url_to_manual): + self.filename = filename + self.url_to_manual = url_to_manual + self.disable = re.compile(r"^\s*# check-package .*\b{}\b".format(self.__class__.__name__)) + + def before(self): + pass + + def check_line(self, lineno, text): + pass + + def after(self): + pass + + +class _Tool(object): + def __init__(self, filename): + self.filename = filename + + def run(self): + pass + + def hint(self): + return "" + + +def run_test_suite(): + import pytest + return pytest.main( + # Disable writing/loading a cache with: -p no:cacheprovider + ["-v", "-p", "no:cacheprovider", os.path.dirname(__file__)] + ) diff --git a/utils/checkpackagelib/lib.py b/utils/checkpackagelib/lib.py new file mode 100644 index 00000000..457b3c31 --- /dev/null +++ b/utils/checkpackagelib/lib.py @@ -0,0 +1,68 @@ +# See utils/checkpackagelib/readme.txt before editing this file. + +from checkpackagelib.base import _CheckFunction + + +class ConsecutiveEmptyLines(_CheckFunction): + def before(self): + self.lastline = "non empty" + + def check_line(self, lineno, text): + if text.strip() == "" == self.lastline.strip(): + return ["{}:{}: consecutive empty lines" + .format(self.filename, lineno)] + self.lastline = text + + +class EmptyLastLine(_CheckFunction): + def before(self): + self.lastlineno = 0 + self.lastline = "non empty" + + def check_line(self, lineno, text): + self.lastlineno = lineno + self.lastline = text + + def after(self): + if self.lastline.strip() == "": + return ["{}:{}: empty line at end of file" + .format(self.filename, self.lastlineno)] + + +class NewlineAtEof(_CheckFunction): + def before(self): + self.lastlineno = 0 + self.lastline = "\n" + + def check_line(self, lineno, text): + self.lastlineno = lineno + self.lastline = text + + def after(self): + if self.lastline == self.lastline.rstrip("\r\n"): + return ["{}:{}: missing newline at end of file" + .format(self.filename, self.lastlineno), + self.lastline] + + +class TrailingSpace(_CheckFunction): + def check_line(self, lineno, text): + line = text.rstrip("\r\n") + if line != line.rstrip(): + return ["{}:{}: line contains trailing whitespace" + .format(self.filename, lineno), + text] + + +class Utf8Characters(_CheckFunction): + def is_ascii(self, s): + try: + return all(ord(c) < 128 for c in s) + except TypeError: + return False + + def check_line(self, lineno, text): + if not self.is_ascii(text): + return ["{}:{}: line contains UTF-8 characters" + .format(self.filename, lineno), + text] diff --git a/utils/checkpackagelib/lib_config.py b/utils/checkpackagelib/lib_config.py new file mode 100644 index 00000000..f26ca0d8 --- /dev/null +++ b/utils/checkpackagelib/lib_config.py @@ -0,0 +1,273 @@ +# See utils/checkpackagelib/readme.txt before editing this file. +# Kconfig generates errors if someone introduces a typo like "boool" instead of +# "bool", so below check functions don't need to check for things already +# checked by running "make menuconfig". + +import re + +from checkpackagelib.base import _CheckFunction +from checkpackagelib.lib import ConsecutiveEmptyLines # noqa: F401 +from checkpackagelib.lib import EmptyLastLine # noqa: F401 +from checkpackagelib.lib import NewlineAtEof # noqa: F401 +from checkpackagelib.lib import TrailingSpace # noqa: F401 +from checkpackagelib.tool import NotExecutable # noqa: F401 + + +def _empty_or_comment(text): + line = text.strip() + # ignore empty lines and comment lines indented or not + return line == "" or line.startswith("#") + + +def _part_of_help_text(text): + return text.startswith("\t ") + + +# used in more than one check +entries_that_should_not_be_indented = [ + "choice", "comment", "config", "endchoice", "endif", "endmenu", "if", + "menu", "menuconfig", "source"] + + +class AttributesOrder(_CheckFunction): + attributes_order_convention = { + "bool": 1, "prompt": 1, "string": 1, "default": 2, "depends": 3, + "select": 4, "help": 5} + + def before(self): + self.state = 0 + + def check_line(self, lineno, text): + if _empty_or_comment(text) or _part_of_help_text(text): + return + + attribute = text.split()[0] + + if attribute in entries_that_should_not_be_indented: + self.state = 0 + return + if attribute not in self.attributes_order_convention.keys(): + return + new_state = self.attributes_order_convention[attribute] + wrong_order = self.state > new_state + + # save to process next line + self.state = new_state + + if wrong_order: + return ["{}:{}: attributes order: type, default, depends on," + " select, help ({}#_config_files)" + .format(self.filename, lineno, self.url_to_manual), + text] + + +class CommentsMenusPackagesOrder(_CheckFunction): + def before(self): + self.level = 0 + self.menu_of_packages = ["The top level menu"] + self.new_package = "" + self.package = [""] + self.print_package_warning = [True] + self.state = "" + + def get_level(self): + return len(self.state.split('-')) - 1 + + def initialize_package_level_elements(self, text): + try: + self.menu_of_packages[self.level] = text[:-1] + self.package[self.level] = "" + self.print_package_warning[self.level] = True + except IndexError: + self.menu_of_packages.append(text[:-1]) + self.package.append("") + self.print_package_warning.append(True) + + def initialize_level_elements(self, text): + self.level = self.get_level() + self.initialize_package_level_elements(text) + + def check_line(self, lineno, text): + # We only want to force sorting for the top-level menus + if self.filename not in ["fs/Config.in", + "package/Config.in", + "package/Config.in.host", + "package/kodi/Config.in"]: + return + + source_line = re.match(r'^\s*source ".*/([^/]*)/Config.in(.host)?"', text) + + if text.startswith("comment "): + if not self.state.endswith("-comment"): + self.state += "-comment" + + self.initialize_level_elements(text) + + elif text.startswith("if "): + self.state += "-if" + + self.initialize_level_elements(text) + + elif text.startswith("menu "): + if self.state.endswith("-comment"): + self.state = self.state[:-8] + + self.state += "-menu" + + self.initialize_level_elements(text) + + elif text.startswith("endif") or text.startswith("endmenu"): + if self.state.endswith("-comment"): + self.state = self.state[:-8] + + if text.startswith("endif"): + self.state = self.state[:-3] + + elif text.startswith("endmenu"): + self.state = self.state[:-5] + + self.level = self.get_level() + + elif source_line: + self.new_package = source_line.group(1) + + # We order _ before A, so replace it with . + new_package_ord = self.new_package.replace('_', '.') + + if self.package[self.level] != "" and \ + self.print_package_warning[self.level] and \ + new_package_ord < self.package[self.level]: + self.print_package_warning[self.level] = False + prefix = "{}:{}: ".format(self.filename, lineno) + spaces = " " * len(prefix) + return ["{prefix}Packages in: {menu},\n" + "{spaces}are not alphabetically ordered;\n" + "{spaces}correct order: '-', '_', digits, capitals, lowercase;\n" + "{spaces}first incorrect package: {package}" + .format(prefix=prefix, spaces=spaces, + menu=self.menu_of_packages[self.level], + package=self.new_package), + text] + + self.package[self.level] = new_package_ord + + +class HelpText(_CheckFunction): + HELP_TEXT_FORMAT = re.compile(r"^\t .{,62}$") + URL_ONLY = re.compile(r"^(http|https|git)://\S*$") + + def before(self): + self.help_text = False + + def check_line(self, lineno, text): + if _empty_or_comment(text): + return + + entry = text.split()[0] + + if entry in entries_that_should_not_be_indented: + self.help_text = False + return + if text.strip() == "help": + self.help_text = True + return + + if not self.help_text: + return + + if self.HELP_TEXT_FORMAT.match(text.rstrip()): + return + if self.URL_ONLY.match(text.strip()): + return + return ["{}:{}: help text: <2 spaces><62 chars>" + " ({}#writing-rules-config-in)" + .format(self.filename, lineno, self.url_to_manual), + text, + "\t " + "123456789 " * 6 + "12"] + + +class Indent(_CheckFunction): + ENDS_WITH_BACKSLASH = re.compile(r"^[^#].*\\$") + entries_that_should_be_indented = [ + "bool", "default", "depends", "help", "prompt", "select", "string"] + + def before(self): + self.backslash = False + + def check_line(self, lineno, text): + if _empty_or_comment(text) or _part_of_help_text(text): + self.backslash = False + return + + entry = text.split()[0] + + last_line_ends_in_backslash = self.backslash + + # calculate for next line + if self.ENDS_WITH_BACKSLASH.search(text): + self.backslash = True + else: + self.backslash = False + + if last_line_ends_in_backslash: + if text.startswith("\t"): + return + return ["{}:{}: continuation line should be indented using tabs" + .format(self.filename, lineno), + text] + + if entry in self.entries_that_should_be_indented: + if not text.startswith("\t{}".format(entry)): + return ["{}:{}: should be indented with one tab" + " ({}#_config_files)" + .format(self.filename, lineno, self.url_to_manual), + text] + elif entry in entries_that_should_not_be_indented: + if not text.startswith(entry): + # four Config.in files have a special but legitimate indentation rule + if self.filename in ["package/Config.in", + "package/Config.in.host", + "package/kodi/Config.in", + "package/x11r7/Config.in"]: + return + return ["{}:{}: should not be indented" + .format(self.filename, lineno), + text] + + +class RedefinedConfig(_CheckFunction): + CONFIG = re.compile(r"^\s*(menu|)config\s+(BR2_\w+)\b") + IF = re.compile(r"^\s*if\s+([^#]*)\b") + ENDIF = re.compile(r"^\s*endif\b") + + def before(self): + self.configs = {} + self.conditional = [] + + def check_line(self, lineno, text): + if _empty_or_comment(text) or _part_of_help_text(text): + return + + m = self.IF.search(text) + if m is not None: + condition = m.group(1) + self.conditional.append(condition) + return + + m = self.ENDIF.search(text) + if m is not None: + self.conditional.pop() + return + + m = self.CONFIG.search(text) + if m is None: + return + config = m.group(2) + + key = (config, ' AND '.join(self.conditional)) + if key in self.configs.keys(): + previous_line = self.configs[key] + return ["{}:{}: config {} redeclared (previous line: {})" + .format(self.filename, lineno, config, previous_line), + text] + self.configs[key] = lineno diff --git a/utils/checkpackagelib/lib_defconfig.py b/utils/checkpackagelib/lib_defconfig.py new file mode 100644 index 00000000..ab0e361b --- /dev/null +++ b/utils/checkpackagelib/lib_defconfig.py @@ -0,0 +1,20 @@ +# See utils/checkpackagelib/readme.txt before editing this file. + +from checkpackagelib.base import _CheckFunction + + +class ForceCheckHash(_CheckFunction): + """Checks that a defconfig does force checking all hashes""" + + def before(self): + self.forces = False + + def check_line(self, lineno, text): + if self.forces: + return + if text == "BR2_DOWNLOAD_FORCE_CHECK_HASHES=y\n": + self.forces = True + + def after(self): + if not self.forces: + return [f"{self.filename}:0: missing BR2_DOWNLOAD_FORCE_CHECK_HASHES"] diff --git a/utils/checkpackagelib/lib_hash.py b/utils/checkpackagelib/lib_hash.py new file mode 100644 index 00000000..5968c809 --- /dev/null +++ b/utils/checkpackagelib/lib_hash.py @@ -0,0 +1,70 @@ +# See utils/checkpackagelib/readme.txt before editing this file. +# The validity of the hashes itself is checked when building, so below check +# functions don't need to check for things already checked by running +# "make package-dirclean package-source". + +import re + +from checkpackagelib.base import _CheckFunction +from checkpackagelib.lib import ConsecutiveEmptyLines # noqa: F401 +from checkpackagelib.lib import EmptyLastLine # noqa: F401 +from checkpackagelib.lib import NewlineAtEof # noqa: F401 +from checkpackagelib.lib import TrailingSpace # noqa: F401 +from checkpackagelib.tool import NotExecutable # noqa: F401 + + +def _empty_line_or_comment(text): + return text.strip() == "" or text.startswith("#") + + +class HashNumberOfFields(_CheckFunction): + def check_line(self, lineno, text): + if _empty_line_or_comment(text): + return + + fields = text.split() + if len(fields) != 3: + return ["{}:{}: expected three fields ({}#adding-packages-hash)" + .format(self.filename, lineno, self.url_to_manual), + text] + + +class HashType(_CheckFunction): + len_of_hash = {"md5": 32, "sha1": 40, "sha224": 56, "sha256": 64, + "sha384": 96, "sha512": 128} + + def check_line(self, lineno, text): + if _empty_line_or_comment(text): + return + + fields = text.split() + if len(fields) < 2: + return + + htype, hexa = fields[:2] + if htype not in self.len_of_hash.keys(): + return ["{}:{}: unexpected type of hash ({}#adding-packages-hash)" + .format(self.filename, lineno, self.url_to_manual), + text] + if not re.match("^[0-9A-Fa-f]{%s}$" % self.len_of_hash[htype], hexa): + return ["{}:{}: hash size does not match type " + "({}#adding-packages-hash)" + .format(self.filename, lineno, self.url_to_manual), + text, + "expected {} hex digits".format(self.len_of_hash[htype])] + + +class HashSpaces(_CheckFunction): + def check_line(self, lineno, text): + if _empty_line_or_comment(text): + return + + fields = text.split() + if len(fields) != 3: + # Handled by HashNumberOfFields + return + + if not re.match(re.escape("{} {} {}".format(*fields)), text): + return ["{}:{}: separation does not match expectation " + "({}#adding-packages-hash)" + .format(self.filename, lineno, self.url_to_manual), text] diff --git a/utils/checkpackagelib/lib_ignore.py b/utils/checkpackagelib/lib_ignore.py new file mode 100644 index 00000000..f3698fc3 --- /dev/null +++ b/utils/checkpackagelib/lib_ignore.py @@ -0,0 +1,14 @@ +# See utils/checkpackagelib/readme.txt before editing this file. + +import os + +from checkpackagelib.base import _CheckFunction + + +class IgnoreMissingFile(_CheckFunction): + def check_line(self, lineno, text): + fields = text.split() + if not os.path.exists(fields[0]): + return ["{}:{}: ignored file {} is missing" + .format(self.filename, lineno, fields[0]), + text] diff --git a/utils/checkpackagelib/lib_mk.py b/utils/checkpackagelib/lib_mk.py new file mode 100644 index 00000000..5d48e892 --- /dev/null +++ b/utils/checkpackagelib/lib_mk.py @@ -0,0 +1,445 @@ +# See utils/checkpackagelib/readme.txt before editing this file. +# There are already dependency checks during the build, so below check +# functions don't need to check for things already checked by exploring the +# menu options using "make menuconfig" and by running "make" with appropriate +# packages enabled. + +import os +import re + +from checkpackagelib.base import _CheckFunction +from checkpackagelib.lib import ConsecutiveEmptyLines # noqa: F401 +from checkpackagelib.lib import EmptyLastLine # noqa: F401 +from checkpackagelib.lib import NewlineAtEof # noqa: F401 +from checkpackagelib.lib import TrailingSpace # noqa: F401 +from checkpackagelib.lib import Utf8Characters # noqa: F401 +from checkpackagelib.tool import NotExecutable # noqa: F401 + +# used in more than one check +start_conditional = ["ifdef", "ifeq", "ifndef", "ifneq"] +continue_conditional = ["elif", "else"] +end_conditional = ["endif"] + + +class DoNotInstallToHostdirUsr(_CheckFunction): + INSTALL_TO_HOSTDIR_USR = re.compile(r"^[^#].*\$\(HOST_DIR\)/usr") + + def check_line(self, lineno, text): + if self.INSTALL_TO_HOSTDIR_USR.match(text.rstrip()): + return ["{}:{}: install files to $(HOST_DIR)/ instead of $(HOST_DIR)/usr/" + .format(self.filename, lineno), + text] + + +class Ifdef(_CheckFunction): + IFDEF = re.compile(r"^\s*(else\s+|)(ifdef|ifndef)\s") + + def check_line(self, lineno, text): + m = self.IFDEF.search(text) + if m is None: + return + word = m.group(2) + if word == 'ifdef': + return ["{}:{}: use ifeq ($(SYMBOL),y) instead of ifdef SYMBOL" + .format(self.filename, lineno), + text] + else: + return ["{}:{}: use ifneq ($(SYMBOL),y) instead of ifndef SYMBOL" + .format(self.filename, lineno), + text] + + +def get_package_prefix_from_filename(filename): + """Return a tuple (pkgname, PKGNAME) with the package name derived from the file name""" + # Double splitext to support .mk.in + package = os.path.splitext(os.path.splitext(os.path.basename(filename))[0])[0] + # linux tools do not use LINUX_TOOL_ prefix for variables + package = package.replace("linux-tool-", "") + # linux extensions do not use LINUX_EXT_ prefix for variables + package = package.replace("linux-ext-", "") + package_upper = package.replace("-", "_").upper() + return package, package_upper + + +class Indent(_CheckFunction): + COMMENT = re.compile(r"^\s*#") + CONDITIONAL = re.compile(r"^\s*({})\s".format("|".join(start_conditional + end_conditional + continue_conditional))) + ENDS_WITH_BACKSLASH = re.compile(r"^[^#].*\\$") + END_DEFINE = re.compile(r"^\s*endef\s") + MAKEFILE_TARGET = re.compile(r"^[^# \t]+:\s") + START_DEFINE = re.compile(r"^\s*define\s") + + def before(self): + self.define = False + self.backslash = False + self.makefile_target = False + + def check_line(self, lineno, text): + if self.START_DEFINE.search(text): + self.define = True + return + if self.END_DEFINE.search(text): + self.define = False + return + + expect_tabs = False + if self.define or self.backslash or self.makefile_target: + expect_tabs = True + if not self.backslash and self.CONDITIONAL.search(text): + expect_tabs = False + + # calculate for next line + if self.ENDS_WITH_BACKSLASH.search(text): + self.backslash = True + else: + self.backslash = False + + if self.MAKEFILE_TARGET.search(text): + self.makefile_target = True + return + if text.strip() == "": + self.makefile_target = False + return + + # comment can be indented or not inside define ... endef, so ignore it + if self.define and self.COMMENT.search(text): + return + + if expect_tabs: + if not text.startswith("\t"): + return ["{}:{}: expected indent with tabs" + .format(self.filename, lineno), + text] + else: + if text.startswith("\t"): + return ["{}:{}: unexpected indent with tabs" + .format(self.filename, lineno), + text] + + +class OverriddenVariable(_CheckFunction): + CONCATENATING = re.compile(r"^([A-Z0-9_]+)\s*(\+|:|)=\s*\$\(\1\)") + END_CONDITIONAL = re.compile(r"^\s*({})".format("|".join(end_conditional))) + OVERRIDING_ASSIGNMENTS = [':=', "="] + START_CONDITIONAL = re.compile(r"^\s*({})".format("|".join(start_conditional))) + VARIABLE = re.compile(r"^([A-Z0-9_]+)\s*((\+|:|)=)") + USUALLY_OVERRIDDEN = re.compile(r"^[A-Z0-9_]+({})".format("|".join([ + r"_ARCH\s*=\s*", + r"_CPU\s*=\s*", + r"_SITE\s*=\s*", + r"_SOURCE\s*=\s*", + r"_VERSION\s*=\s*"]))) + FORBIDDEN_OVERRIDDEN = re.compile(r"^[A-Z0-9_]+({})".format("|".join([ + r"_CONF_OPTS\s*=\s*", + r"_DEPENDENCIES\s*=\s*"]))) + + def before(self): + self.conditional = 0 + self.unconditionally_set = [] + self.conditionally_set = [] + + def check_line(self, lineno, text): + if self.START_CONDITIONAL.search(text): + self.conditional += 1 + return + if self.END_CONDITIONAL.search(text): + self.conditional -= 1 + return + + m = self.VARIABLE.search(text) + if m is None: + return + variable, assignment = m.group(1, 2) + + if self.conditional == 0: + if variable in self.conditionally_set: + self.unconditionally_set.append(variable) + if assignment in self.OVERRIDING_ASSIGNMENTS: + return ["{}:{}: unconditional override of variable {} previously conditionally set" + .format(self.filename, lineno, variable), + text] + + if variable not in self.unconditionally_set: + self.unconditionally_set.append(variable) + return + if assignment in self.OVERRIDING_ASSIGNMENTS: + return ["{}:{}: unconditional override of variable {}" + .format(self.filename, lineno, variable), + text] + else: + if self.FORBIDDEN_OVERRIDDEN.search(text): + return ["{}:{}: conditional override of variable {}" + .format(self.filename, lineno, variable), + text] + if variable not in self.unconditionally_set: + self.conditionally_set.append(variable) + return + if self.CONCATENATING.search(text): + return ["{}:{}: immediate assignment to append to variable {}" + .format(self.filename, lineno, variable), + text] + if self.USUALLY_OVERRIDDEN.search(text): + return + if assignment in self.OVERRIDING_ASSIGNMENTS: + return ["{}:{}: conditional override of variable {}" + .format(self.filename, lineno, variable), + text] + + +class PackageHeader(_CheckFunction): + def before(self): + self.skip = False + + def check_line(self, lineno, text): + if self.skip or lineno > 6: + return + + if lineno in [1, 5]: + if lineno == 1 and text.startswith("include "): + self.skip = True + return + if text.rstrip() != "#" * 80: + return ["{}:{}: should be 80 hashes ({}#writing-rules-mk)" + .format(self.filename, lineno, self.url_to_manual), + text, + "#" * 80] + elif lineno in [2, 4]: + if text.rstrip() != "#": + return ["{}:{}: should be 1 hash ({}#writing-rules-mk)" + .format(self.filename, lineno, self.url_to_manual), + text] + elif lineno == 6: + if text.rstrip() != "": + return ["{}:{}: should be a blank line ({}#writing-rules-mk)" + .format(self.filename, lineno, self.url_to_manual), + text] + + +class RemoveDefaultPackageSourceVariable(_CheckFunction): + packages_that_may_contain_default_source = ["binutils", "gcc", "gdb"] + + def before(self): + self.package, package_upper = get_package_prefix_from_filename(self.filename) + self.FIND_SOURCE = re.compile( + r"^{}_SOURCE\s*=\s*{}-\$\({}_VERSION\)\.tar\.gz" + .format(package_upper, self.package, package_upper)) + + def check_line(self, lineno, text): + if self.FIND_SOURCE.search(text): + + if self.package in self.packages_that_may_contain_default_source: + return + + return ["{}:{}: remove default value of _SOURCE variable " + "({}#generic-package-reference)" + .format(self.filename, lineno, self.url_to_manual), + text] + + +class SpaceBeforeBackslash(_CheckFunction): + TAB_OR_MULTIPLE_SPACES_BEFORE_BACKSLASH = re.compile(r"^.*( |\t ?)\\$") + + def check_line(self, lineno, text): + if self.TAB_OR_MULTIPLE_SPACES_BEFORE_BACKSLASH.match(text.rstrip()): + return ["{}:{}: use only one space before backslash" + .format(self.filename, lineno), + text] + + +class TrailingBackslash(_CheckFunction): + ENDS_WITH_BACKSLASH = re.compile(r"^[^#].*\\$") + + def before(self): + self.backslash = False + + def check_line(self, lineno, text): + last_line_ends_in_backslash = self.backslash + + # calculate for next line + if self.ENDS_WITH_BACKSLASH.search(text): + self.backslash = True + self.lastline = text + return + self.backslash = False + + if last_line_ends_in_backslash and text.strip() == "": + return ["{}:{}: remove trailing backslash" + .format(self.filename, lineno - 1), + self.lastline] + + +class TypoInPackageVariable(_CheckFunction): + ALLOWED = re.compile(r"|".join([ + "ACLOCAL_DIR", + "ACLOCAL_HOST_DIR", + "ACLOCAL_PATH", + "BR_CCACHE_INITIAL_SETUP", + "BR_LIBC", + "BR_NO_CHECK_HASH_FOR", + "GCC_TARGET", + "LINUX_EXTENSIONS", + "LINUX_POST_PATCH_HOOKS", + "LINUX_TOOLS", + "LUA_RUN", + "MKFS_JFFS2", + "MKIMAGE_ARCH", + "PACKAGES_PERMISSIONS_TABLE", + "PKG_CONFIG_HOST_BINARY", + "SUMTOOL", + "TARGET_FINALIZE_HOOKS", + "TARGETS_ROOTFS", + "XTENSA_CORE_NAME"])) + VARIABLE = re.compile(r"^(define\s+)?([A-Z0-9_]+_[A-Z0-9_]+)") + + def before(self): + _, self.package = get_package_prefix_from_filename(self.filename) + self.REGEX = re.compile(r"(HOST_|ROOTFS_)?({}_[A-Z0-9_]+)".format(self.package)) + self.FIND_VIRTUAL = re.compile( + r"^{}_PROVIDES\s*(\+|)=\s*(.*)".format(self.package)) + self.virtual = [] + + def check_line(self, lineno, text): + m = self.VARIABLE.search(text) + if m is None: + return + + variable = m.group(2) + + # allow to set variables for virtual package this package provides + v = self.FIND_VIRTUAL.search(text) + if v: + self.virtual += v.group(2).upper().split() + return + for virtual in self.virtual: + if variable.startswith("{}_".format(virtual)): + return + + if self.ALLOWED.match(variable): + return + if self.REGEX.search(variable) is None: + return ["{}:{}: possible typo, variable not properly prefixed: {} -> *{}_XXXX* ({}#_tips_and_tricks)" + .format(self.filename, lineno, variable, self.package, self.url_to_manual), + text] + + +class UselessFlag(_CheckFunction): + DEFAULT_AUTOTOOLS_FLAG = re.compile(r"^.*{}".format("|".join([ + r"_AUTORECONF\s*=\s*NO", + r"_LIBTOOL_PATCH\s*=\s*YES"]))) + DEFAULT_GENERIC_FLAG = re.compile(r"^.*{}".format("|".join([ + r"_INSTALL_IMAGES\s*=\s*NO", + r"_REDISTRIBUTE\s*=\s*YES", + r"_INSTALL_STAGING\s*=\s*NO", + r"_INSTALL_TARGET\s*=\s*YES"]))) + END_CONDITIONAL = re.compile(r"^\s*({})".format("|".join(end_conditional))) + START_CONDITIONAL = re.compile(r"^\s*({})".format("|".join(start_conditional))) + + def before(self): + self.conditional = 0 + + def check_line(self, lineno, text): + if self.START_CONDITIONAL.search(text): + self.conditional += 1 + return + if self.END_CONDITIONAL.search(text): + self.conditional -= 1 + return + + # allow non-default conditionally overridden by default + if self.conditional > 0: + return + + if self.DEFAULT_GENERIC_FLAG.search(text): + return ["{}:{}: useless default value ({}#" + "_infrastructure_for_packages_with_specific_build_systems)" + .format(self.filename, lineno, self.url_to_manual), + text] + + if self.DEFAULT_AUTOTOOLS_FLAG.search(text) and not text.lstrip().startswith("HOST_"): + return ["{}:{}: useless default value " + "({}#_infrastructure_for_autotools_based_packages)" + .format(self.filename, lineno, self.url_to_manual), + text] + + +class VariableWithBraces(_CheckFunction): + VARIABLE_WITH_BRACES = re.compile(r"^[^#].*[^$]\${\w+}") + + def check_line(self, lineno, text): + if self.VARIABLE_WITH_BRACES.match(text.rstrip()): + return ["{}:{}: use $() to delimit variables, not ${{}}" + .format(self.filename, lineno), + text] + + +class CPEVariables(_CheckFunction): + """ + Check that the values for the CPE variables are not the default. + - CPE_ID_* variables must not be set to their default + - CPE_ID_VALID must not be set if a non-default CPE_ID variable is set + """ + def before(self): + pkg, _ = os.path.splitext(os.path.basename(self.filename)) + self.CPE_fields_defaults = { + "VALID": "NO", + "PREFIX": "cpe:2.3:a", + "VENDOR": f"{pkg}_project", + "PRODUCT": pkg, + "VERSION": None, + "UPDATE": "*", + } + self.valid = None + self.non_defaults = 0 + self.CPE_FIELDS_RE = re.compile( + r"^\s*(.+_CPE_ID_({}))\s*=\s*(.+)$" + .format("|".join(self.CPE_fields_defaults)), + ) + self.VERSION_RE = re.compile( + rf"^(HOST_)?{pkg.upper().replace('-', '_')}_VERSION\s*=\s*(.+)$", + ) + self.COMMENT_RE = re.compile(r"^\s*#.*") + + def check_line(self, lineno, text): + text = self.COMMENT_RE.sub('', text.rstrip()) + + # WARNING! The VERSION_RE can _also_ match the same lines as CPE_FIELDS_RE, + # but not the other way around. So we must first check for CPE_FIELDS_RE, + # and if not matched, then and only then check for VERSION_RE. + match = self.CPE_FIELDS_RE.match(text) + if match: + var, field, val = match.groups() + return self._check_field(lineno, text, field, var, val) + + match = self.VERSION_RE.match(text) + if match: + self.CPE_fields_defaults["VERSION"] = match.groups()[1] + + def after(self): + # "VALID" counts in the non-defaults; so when "VALID" is present, + # 1 non-default means only "VALID" is present, so that's OK. + if self.valid and self.non_defaults > 1: + return ["{}:{}: 'YES' is implied when a non-default CPE_ID field is specified: {} ({}#cpe-id)".format( + self.filename, + self.valid["lineno"], + self.valid["text"], + self.url_to_manual, + )] + + def _check_field(self, lineno, text, field, var, val): + if field == "VERSION" and self.CPE_fields_defaults[field] is None: + return ["{}:{}: expecting package version to be set before CPE_ID_VERSION".format( + self.filename, + lineno, + )] + if val == self.CPE_fields_defaults[field]: + return ["{}:{}: '{}' is the default value for {} ({}#cpe-id)".format( + self.filename, + lineno, + val, + var, + self.url_to_manual, + )] + else: + if field == "VALID": + self.valid = {"lineno": lineno, "text": text} + self.non_defaults += 1 diff --git a/utils/checkpackagelib/lib_patch.py b/utils/checkpackagelib/lib_patch.py new file mode 100644 index 00000000..b01d28a7 --- /dev/null +++ b/utils/checkpackagelib/lib_patch.py @@ -0,0 +1,82 @@ +# See utils/checkpackagelib/readme.txt before editing this file. +# The format of the patch files is tested during the build, so below check +# functions don't need to check for things already checked by running +# "make package-dirclean package-patch". + +import os +import re + +from checkpackagelib.base import _CheckFunction +from checkpackagelib.lib import NewlineAtEof # noqa: F401 +from checkpackagelib.tool import NotExecutable # noqa: F401 + + +class ApplyOrder(_CheckFunction): + APPLY_ORDER = re.compile(r"\d{1,4}-[^/]*$") + + def before(self): + if not self.APPLY_ORDER.match(os.path.basename(self.filename)): + return ["{}:0: use name -.patch " + "({}#_providing_patches)" + .format(self.filename, self.url_to_manual)] + + +class NumberedSubject(_CheckFunction): + NUMBERED_PATCH = re.compile(r"Subject:\s*\[PATCH\s*\d+/\d+\]") + + def before(self): + self.git_patch = False + self.lineno = 0 + self.text = None + + def check_line(self, lineno, text): + if text.startswith("diff --git"): + self.git_patch = True + return + if self.NUMBERED_PATCH.search(text): + self.lineno = lineno + self.text = text + + def after(self): + if self.git_patch and self.text: + return ["{}:{}: generate your patches with 'git format-patch -N'" + .format(self.filename, self.lineno), + self.text] + + +class Sob(_CheckFunction): + SOB_ENTRY = re.compile(r"^Signed-off-by: .*$") + + def before(self): + self.found = False + + def check_line(self, lineno, text): + if self.found: + return + if self.SOB_ENTRY.search(text): + self.found = True + + def after(self): + if not self.found: + return ["{}:0: missing Signed-off-by in the header " + "({}#_format_and_licensing_of_the_package_patches)" + .format(self.filename, self.url_to_manual)] + + +class Upstream(_CheckFunction): + UPSTREAM_ENTRY = re.compile(r"^Upstream: .*$") + + def before(self): + self.found = False + + def check_line(self, lineno, text): + if self.found: + return + if self.UPSTREAM_ENTRY.search(text): + self.found = True + + def after(self): + if not self.found: + return ["{}:0: missing Upstream in the header " + "({}#_additional_patch_documentation)" + .format(self.filename, self.url_to_manual)] diff --git a/utils/checkpackagelib/lib_python.py b/utils/checkpackagelib/lib_python.py new file mode 100644 index 00000000..f8c17ddc --- /dev/null +++ b/utils/checkpackagelib/lib_python.py @@ -0,0 +1 @@ +from checkpackagelib.tool import Flake8 # noqa: F401 diff --git a/utils/checkpackagelib/lib_shellscript.py b/utils/checkpackagelib/lib_shellscript.py new file mode 100644 index 00000000..9b4f4aed --- /dev/null +++ b/utils/checkpackagelib/lib_shellscript.py @@ -0,0 +1,5 @@ +from checkpackagelib.lib import ConsecutiveEmptyLines # noqa: F401 +from checkpackagelib.lib import EmptyLastLine # noqa: F401 +from checkpackagelib.lib import NewlineAtEof # noqa: F401 +from checkpackagelib.lib import TrailingSpace # noqa: F401 +from checkpackagelib.tool import Shellcheck # noqa: F401 diff --git a/utils/checkpackagelib/lib_sysv.py b/utils/checkpackagelib/lib_sysv.py new file mode 100644 index 00000000..dc4afd71 --- /dev/null +++ b/utils/checkpackagelib/lib_sysv.py @@ -0,0 +1,72 @@ +import os +import re + +from checkpackagelib.base import _CheckFunction +from checkpackagelib.lib import ConsecutiveEmptyLines # noqa: F401 +from checkpackagelib.lib import EmptyLastLine # noqa: F401 +from checkpackagelib.lib import NewlineAtEof # noqa: F401 +from checkpackagelib.lib import TrailingSpace # noqa: F401 +import checkpackagelib.tool +from checkpackagelib.tool import Shellcheck # noqa: F401 + + +class Indent(_CheckFunction): + INDENTED_WITH_SPACES = re.compile(r"^[\t]* ") + + def check_line(self, lineno, text): + if self.INDENTED_WITH_SPACES.search(text.rstrip()): + return ["{}:{}: should be indented with tabs ({}#adding-packages-start-script)" + .format(self.filename, lineno, self.url_to_manual), + text] + + +class NotExecutable(checkpackagelib.tool.NotExecutable): + def ignore(self): + return 'etc/init.d/' in self.filename + + def hint(self): + return ", just make sure you use '$(INSTALL) -D -m 0755' in the .mk file" + + +class Variables(_CheckFunction): + DAEMON_VAR = re.compile(r"^DAEMON=[\"']{0,1}([^\"']*)[\"']{0,1}") + PIDFILE_PATTERN = re.compile(r"/var/run/(\$DAEMON|\$\{DAEMON\}).pid") + PIDFILE_VAR = re.compile(r"^PIDFILE=[\"']{0,1}([^\"']*)[\"']{0,1}") + + def before(self): + self.name = None + + def check_line(self, lineno, text): + name_found = self.DAEMON_VAR.search(text.rstrip()) + if name_found: + if self.name: + return ["{}:{}: DAEMON variable redefined ({}#adding-packages-start-script)" + .format(self.filename, lineno, self.url_to_manual), + text] + self.name = name_found.group(1) + if '/' in self.name: + self.name = os.path.basename(self.name) # to be used in after() to check the expected filename + return ["{}:{}: Do not include path in DAEMON ({}#adding-packages-start-script)" + .format(self.filename, lineno, self.url_to_manual), + text, + 'DAEMON="{}"'.format(self.name)] + return + + pidfile_found = self.PIDFILE_VAR.search(text.rstrip()) + if pidfile_found: + pidfile = pidfile_found.group(1) + if not self.PIDFILE_PATTERN.match(pidfile): + return ["{}:{}: Incorrect PIDFILE value ({}#adding-packages-start-script)" + .format(self.filename, lineno, self.url_to_manual), + text, + 'PIDFILE="/var/run/$DAEMON.pid"'] + + def after(self): + if self.name is None: + return ["{}:0: DAEMON variable not defined ({}#adding-packages-start-script)" + .format(self.filename, self.url_to_manual)] + expected_filename = re.compile(r"S\d\d{}$".format(self.name)) + if not expected_filename.match(os.path.basename(self.filename)): + return ["{}:0: filename should be S ({}#adding-packages-start-script)" + .format(self.filename, self.url_to_manual), + "expecting S{}".format(self.name)] diff --git a/utils/checkpackagelib/readme.txt b/utils/checkpackagelib/readme.txt new file mode 100644 index 00000000..b3e8c671 --- /dev/null +++ b/utils/checkpackagelib/readme.txt @@ -0,0 +1,74 @@ +How the scripts are structured: +- check-package is the main engine, called by the user. + For each input file, this script decides which parser should be used and it + collects all classes declared in the library file and instantiates them. + The main engine opens the input files and it serves each raw line (including + newline!) to the method check_line() of every check object. + Two special methods before() and after() are used to call the initialization + of variables (for the case it needs to keep data across calls) and the + equivalent finalization (e.g. for the case a warning must be issued if some + pattern is not in the input file). +- base.py contains the base class for all check functions. +- lib.py contains the classes for common check functions. + Each check function is explicitly included in a given type-parsing library. + Do not include every single check function in this file, a class that will + only parse hash files should be implemented in the hash-parsing library. + When a warning must be issued, the check function returns an array of strings. + Each string is a warning message and is displayed if the corresponding verbose + level is active. When the script is called without --verbose only the first + warning in the returned array is printed; when called with --verbose both + first and second warnings are printed; when called with -vv until the third + warning is printed; an so on. + Helper functions can be defined and will not be called by the main script. +- lib_type.py contains check functions specific to files of this type. + +Some hints when changing this code: +- test your changes: utils/check-package --test-suite +- prefer O(n) algorithms, where n is the total number of lines in the files + processed. +- when there is no other reason for ordering, use alphabetical order (e.g. keep + the check functions in alphabetical order, keep the imports in alphabetical + order, and so on). +- keep in mind that for every class the method before() will be called before + any line is served to be checked by the method check_line(). A class that + checks the filename should only implement the method before(). A function that + needs to keep data across calls (e.g. keep the last line before the one being + processed) should initialize all variables using this method. +- keep in mind that for every class the method after() will be called after all + lines were served to be checked by the method check_line(). A class that + checks the absence of a pattern in the file will need to use this method. +- try to avoid false warnings. It's better to not issue a warning message to a + corner case than have too many false warnings. The second can make users stop + using the script. +- do not check spacing in the input line in every single function. Trailing + whitespace and wrong indentation should be checked by separate functions. +- avoid duplicate tests. Try to test only one thing in each function. +- in the warning message, include the url to a section from the manual, when + applicable. It potentially will make more people know the manual. +- use short sentences in the warning messages. A complete explanation can be + added to show when --verbose is used. +- when testing, verify the error message is displayed when the error pattern is + found, but also verify the error message is not displayed for few + well-formatted packages... there are many of these, just pick your favorite + as golden package that should not trigger any warning message. +- check the url displayed by the warning message works. + +Usage examples: +- to get a list of check functions that would be called without actually + calling them you can use the --dry-run option: +$ utils/check-package --dry-run package/yourfavorite/* + +- when you just added a new check function, e.g. Something, check how it behaves + for all current packages: +$ utils/check-package --include-only Something $(find package -type f) + +- the effective processing time (when the .pyc were already generated and all + files to be processed are cached in the RAM) should stay in the order of few + seconds: +$ utils/check-package $(find package -type f) >/dev/null ; \ + time utils/check-package $(find package -type f) >/dev/null + +- vim users can navigate the warnings (most editors probably have similar + function) since warnings are generated in the form 'path/file:line: warning': +$ find package/ -name 'Config.*' > filelist && vim -c \ + 'set makeprg=utils/check-package\ $(cat\ filelist)' -c make -c copen diff --git a/utils/checkpackagelib/test_lib.py b/utils/checkpackagelib/test_lib.py new file mode 100644 index 00000000..976a63d8 --- /dev/null +++ b/utils/checkpackagelib/test_lib.py @@ -0,0 +1,212 @@ +import pytest +import checkpackagelib.test_util as util +import checkpackagelib.lib as m + + +ConsecutiveEmptyLines = [ + ('1 line (no newline)', + 'any', + '', + []), + ('1 line', + 'any', + '\n', + []), + ('2 lines', + 'any', + '\n' + '\n', + [['any:2: consecutive empty lines']]), + ('more than 2 consecutive', + 'any', + '\n' + '\n' + '\n', + [['any:2: consecutive empty lines'], + ['any:3: consecutive empty lines']]), + ('ignore whitespace 1', + 'any', + '\n' + ' ', + [['any:2: consecutive empty lines']]), + ('ignore whitespace 2', + 'any', + ' \n' + '\t\n', + [['any:2: consecutive empty lines']]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', ConsecutiveEmptyLines) +def test_ConsecutiveEmptyLines(testname, filename, string, expected): + warnings = util.check_file(m.ConsecutiveEmptyLines, filename, string) + assert warnings == expected + + +EmptyLastLine = [ + ('ignore empty file', + 'any', + '', + []), + ('empty line (newline)', + 'any', + '\n', + [['any:1: empty line at end of file']]), + ('empty line (space, newline)', + 'any', + ' \n', + [['any:1: empty line at end of file']]), + ('empty line (space, no newline)', + 'any', + ' ', + [['any:1: empty line at end of file']]), + ('warn for the last of 2', + 'any', + '\n' + '\n', + [['any:2: empty line at end of file']]), + ('warn for the last of 3', + 'any', + '\n' + '\n' + '\n', + [['any:3: empty line at end of file']]), + ('ignore whitespace', + 'any', + ' \n' + '\t\n', + [['any:2: empty line at end of file']]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', EmptyLastLine) +def test_EmptyLastLine(testname, filename, string, expected): + warnings = util.check_file(m.EmptyLastLine, filename, string) + assert warnings == expected + + +NewlineAtEof = [ + ('good', + 'any', + 'text\n', + []), + ('text (bad)', + 'any', + '\n' + 'text', + [['any:2: missing newline at end of file', + 'text']]), + ('space (bad)', + 'any', + '\n' + ' ', + [['any:2: missing newline at end of file', + ' ']]), + ('tab (bad)', + 'any', + '\n' + '\t', + [['any:2: missing newline at end of file', + '\t']]), + ('even for file with one line', + 'any', + ' ', + [['any:1: missing newline at end of file', + ' ']]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', NewlineAtEof) +def test_NewlineAtEof(testname, filename, string, expected): + warnings = util.check_file(m.NewlineAtEof, filename, string) + assert warnings == expected + + +TrailingSpace = [ + ('good', + 'any', + 'text\n', + []), + ('ignore missing newline', + 'any', + '\n' + 'text', + []), + ('spaces', + 'any', + 'text \n', + [['any:1: line contains trailing whitespace', + 'text \n']]), + ('tabs after text', + 'any', + 'text\t\t\n', + [['any:1: line contains trailing whitespace', + 'text\t\t\n']]), + ('mix of tabs and spaces', + 'any', + ' \n' + ' ', + [['any:1: line contains trailing whitespace', + ' \n'], + ['any:2: line contains trailing whitespace', + ' ']]), + ('blank line with tabs', + 'any', + '\n' + '\t', + [['any:2: line contains trailing whitespace', + '\t']]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', TrailingSpace) +def test_TrailingSpace(testname, filename, string, expected): + warnings = util.check_file(m.TrailingSpace, filename, string) + assert warnings == expected + + +Utf8Characters = [ + ('usual', + 'any', + 'text\n', + []), + ('acceptable character', + 'any', + '\x60', + []), + ('unacceptable character', + 'any', + '\x81', + [['any:1: line contains UTF-8 characters', + '\x81']]), + ('2 warnings', + 'any', + 'text\n' + 'text \xc8 text\n' + '\xc9\n', + [['any:2: line contains UTF-8 characters', + 'text \xc8 text\n'], + ['any:3: line contains UTF-8 characters', + '\xc9\n']]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', Utf8Characters) +def test_Utf8Characters(testname, filename, string, expected): + warnings = util.check_file(m.Utf8Characters, filename, string) + assert warnings == expected + + +def test_all_check_functions_are_used(): + import inspect + import checkpackagelib.lib_config as lib_config + import checkpackagelib.lib_hash as lib_hash + import checkpackagelib.lib_mk as lib_mk + import checkpackagelib.lib_patch as lib_patch + c_config = [c[0] for c in inspect.getmembers(lib_config, inspect.isclass)] + c_hash = [c[0] for c in inspect.getmembers(lib_hash, inspect.isclass)] + c_mk = [c[0] for c in inspect.getmembers(lib_mk, inspect.isclass)] + c_patch = [c[0] for c in inspect.getmembers(lib_patch, inspect.isclass)] + c_all = c_config + c_hash + c_mk + c_patch + c_common = [c[0] for c in inspect.getmembers(m, inspect.isclass)] + assert set(c_common) <= set(c_all) diff --git a/utils/checkpackagelib/test_lib_config.py b/utils/checkpackagelib/test_lib_config.py new file mode 100644 index 00000000..474d1710 --- /dev/null +++ b/utils/checkpackagelib/test_lib_config.py @@ -0,0 +1,465 @@ +import pytest +import checkpackagelib.test_util as util +import checkpackagelib.lib_config as m + + +AttributesOrder = [ + ('good example', + 'any', + 'config BR2_PACKAGE_FOO\n' + 'bool "foo"\n' + 'default y\n' + 'depends on BR2_USE_BAR # runtime\n' + 'select BR2_PACKAGE_BAZ\n' + 'help\n' + '\t help text\n', + []), + ('depends before default', + 'any', + 'config BR2_PACKAGE_FOO\n' + 'bool "foo"\n' + 'depends on BR2_USE_BAR\n' + 'default y\n', + [['any:4: attributes order: type, default, depends on, select, help (url#_config_files)', + 'default y\n']]), + ('select after help', + 'any', + 'config BR2_PACKAGE_FOO\n' + 'bool "foo"\n' + 'help\n' + '\t help text\n' + 'select BR2_PACKAGE_BAZ\n', + [['any:5: attributes order: type, default, depends on, select, help (url#_config_files)', + 'select BR2_PACKAGE_BAZ\n']]), + ('string', + 'any', + 'config BR2_PACKAGE_FOO_PLUGINS\n' + 'string "foo plugins"\n' + 'default "all"\n', + []), + ('ignore tabs', + 'any', + 'config\tBR2_PACKAGE_FOO_PLUGINS\n' + 'default\t"all"\n' + 'string\t"foo plugins"\n', + [['any:3: attributes order: type, default, depends on, select, help (url#_config_files)', + 'string\t"foo plugins"\n']]), + ('choice', + 'any', + 'config BR2_PACKAGE_FOO\n' + 'bool "foo"\n' + 'if BR2_PACKAGE_FOO\n' + '\n' + 'choice\n' + 'prompt "type of foo"\n' + 'default BR2_PACKAGE_FOO_STRING\n' + '\n' + 'config BR2_PACKAGE_FOO_NONE\n' + 'bool "none"\n' + '\n' + 'config BR2_PACKAGE_FOO_STRING\n' + 'bool "string"\n' + '\n' + 'endchoice\n' + '\n' + 'endif\n' + '\n', + []), + ('type after default', + 'any', + 'config BR2_PACKAGE_FOO\n' + 'bool "foo"\n' + 'if BR2_PACKAGE_FOO\n' + '\n' + 'choice\n' + 'default BR2_PACKAGE_FOO_STRING\n' + 'prompt "type of foo"\n', + [['any:7: attributes order: type, default, depends on, select, help (url#_config_files)', + 'prompt "type of foo"\n']]), + ('menu', + 'any', + 'menuconfig BR2_PACKAGE_FOO\n' + 'bool "foo"\n' + 'help\n' + '\t help text\n' + '\t help text\n' + '\n' + 'if BR2_PACKAGE_FOO\n' + '\n' + 'menu "foo plugins"\n' + 'config BR2_PACKAGE_FOO_COUNTER\n' + 'bool "counter"\n' + '\n' + 'endmenu\n' + '\n' + 'endif\n', + []), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', AttributesOrder) +def test_AttributesOrder(testname, filename, string, expected): + warnings = util.check_file(m.AttributesOrder, filename, string) + assert warnings == expected + + +CommentsMenusPackagesOrder = [ + ('top menu (good)', + 'package/Config.in', + 'menu "Target packages"\n' + 'source "package/busybox/Config.in"\n' + 'source "package/skeleton/Config.in"\n', + []), + ('top menu (bad)', + 'package/Config.in', + 'source "package/skeleton/Config.in"\n' + 'source "package/busybox/Config.in"\n', + [['package/Config.in:2: Packages in: The top level menu,\n' + ' are not alphabetically ordered;\n' + " correct order: '-', '_', digits, capitals, lowercase;\n" + ' first incorrect package: busybox', + 'source "package/busybox/Config.in"\n']]), + ('menu (bad)', + 'package/Config.in', + 'menu "Target packages"\n' + 'source "package/skeleton/Config.in"\n' + 'source "package/busybox/Config.in"\n', + [['package/Config.in:3: Packages in: menu "Target packages",\n' + ' are not alphabetically ordered;\n' + " correct order: '-', '_', digits, capitals, lowercase;\n" + ' first incorrect package: busybox', + 'source "package/busybox/Config.in"\n']]), + ('underscore (good)', + 'package/Config.in.host', + 'menu "Hardware handling"\n' + 'menu "Firmware"\n' + 'endmenu\n' + 'source "package/usb_modeswitch/Config.in"\n' + 'source "package/usbmount/Config.in"\n', + []), + ('underscore (bad)', + 'package/Config.in.host', + 'menu "Hardware handling"\n' + 'menu "Firmware"\n' + 'endmenu\n' + 'source "package/usbmount/Config.in"\n' + 'source "package/usb_modeswitch/Config.in"\n', + [['package/Config.in.host:5: Packages in: menu "Hardware handling",\n' + ' are not alphabetically ordered;\n' + " correct order: '-', '_', digits, capitals, lowercase;\n" + ' first incorrect package: usb_modeswitch', + 'source "package/usb_modeswitch/Config.in"\n']]), + ('ignore other files', + 'any other file', + 'menu "Hardware handling"\n' + 'source "package/bbb/Config.in"\n' + 'source "package/aaa/Config.in"\n', + []), + ('dash (bad)', + 'package/Config.in', + 'menu "packages"\n' + 'source "package/a_a/Config.in"\n' + 'source "package/a-a/Config.in"\n' + 'source "package/a1a/Config.in"\n' + 'source "package/aAa/Config.in"\n' + 'source "package/aaa/Config.in"\n', + [['package/Config.in:3: Packages in: menu "packages",\n' + ' are not alphabetically ordered;\n' + " correct order: '-', '_', digits, capitals, lowercase;\n" + ' first incorrect package: a-a', + 'source "package/a-a/Config.in"\n']]), + ('underscore (bad)', + 'package/Config.in', + 'menu "packages"\n' + 'source "package/a-a/Config.in"\n' + 'source "package/a1a/Config.in"\n' + 'source "package/a_a/Config.in"\n' + 'source "package/aAa/Config.in"\n' + 'source "package/aaa/Config.in"\n', + [['package/Config.in:4: Packages in: menu "packages",\n' + ' are not alphabetically ordered;\n' + " correct order: '-', '_', digits, capitals, lowercase;\n" + ' first incorrect package: a_a', + 'source "package/a_a/Config.in"\n']]), + ('digit (bad)', + 'package/Config.in', + 'menu "packages"\n' + 'source "package/a-a/Config.in"\n' + 'source "package/a_a/Config.in"\n' + 'source "package/aAa/Config.in"\n' + 'source "package/a1a/Config.in"\n' + 'source "package/aaa/Config.in"\n', + [['package/Config.in:5: Packages in: menu "packages",\n' + ' are not alphabetically ordered;\n' + " correct order: '-', '_', digits, capitals, lowercase;\n" + ' first incorrect package: a1a', + 'source "package/a1a/Config.in"\n']]), + ('capitals (bad)', + 'package/Config.in', + 'menu "packages"\n' + 'source "package/a-a/Config.in"\n' + 'source "package/a_a/Config.in"\n' + 'source "package/a1a/Config.in"\n' + 'source "package/aaa/Config.in"\n' + 'source "package/aAa/Config.in"\n', + [['package/Config.in:6: Packages in: menu "packages",\n' + ' are not alphabetically ordered;\n' + " correct order: '-', '_', digits, capitals, lowercase;\n" + ' first incorrect package: aAa', + 'source "package/aAa/Config.in"\n']]), + ('digits, capitals, underscore (good)', + 'package/Config.in', + 'menu "packages"\n' + 'source "package/a-a/Config.in"\n' + 'source "package/a_a/Config.in"\n' + 'source "package/a1a/Config.in"\n' + 'source "package/aAa/Config.in"\n' + 'source "package/aaa/Config.in"\n', + []), + ('conditional menu (good)', + 'package/Config.in', + 'menu "Other"\n' + 'source "package/linux-pam/Config.in"\n' + 'if BR2_PACKAGE_LINUX_PAM\n' + 'comment "linux-pam plugins"\n' + 'source "package/libpam-radius-auth/Config.in"\n' + 'source "package/libpam-tacplus/Config.in"\n' + 'endif\n' + 'source "package/liquid-dsp/Config.in"\n', + []), + ('conditional menu (bad)', + 'package/Config.in', + 'menu "Other"\n' + 'source "package/linux-pam/Config.in"\n' + 'if BR2_PACKAGE_LINUX_PAM\n' + 'comment "linux-pam plugins"\n' + 'source "package/libpam-tacplus/Config.in"\n' + 'source "package/libpam-radius-auth/Config.in"\n' + 'endif\n' + 'source "package/liquid-dsp/Config.in"\n', + [['package/Config.in:6: Packages in: comment "linux-pam plugins",\n' + ' are not alphabetically ordered;\n' + " correct order: '-', '_', digits, capitals, lowercase;\n" + ' first incorrect package: libpam-radius-auth', + 'source "package/libpam-radius-auth/Config.in"\n']]), + ('no conditional (bad)', + 'package/Config.in', + 'menu "Other"\n' + 'source "package/linux-pam/Config.in"\n' + 'source "package/libpam-radius-auth/Config.in"\n' + 'source "package/libpam-tacplus/Config.in"\n' + 'source "package/liquid-dsp/Config.in"\n', + [['package/Config.in:3: Packages in: menu "Other",\n' + ' are not alphabetically ordered;\n' + " correct order: '-', '_', digits, capitals, lowercase;\n" + ' first incorrect package: libpam-radius-auth', + 'source "package/libpam-radius-auth/Config.in"\n']]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', CommentsMenusPackagesOrder) +def test_CommentsMenusPackagesOrder(testname, filename, string, expected): + warnings = util.check_file(m.CommentsMenusPackagesOrder, filename, string) + assert warnings == expected + + +HelpText = [ + ('single line', + 'any', + 'config BR2_PACKAGE_FOO\n' + 'bool "foo"\n' + 'default y\n' + 'depends on BR2_USE_BAR # runtime\n' + 'select BR2_PACKAGE_BAZ\n' + 'help\n' + '\t help text\n', + []), + ('larger than 72', + 'any', + 'help\n' + '\t 123456789 123456789 123456789 123456789 123456789 123456789 12\n' + '\t 123456789 123456789 123456789 123456789 123456789 123456789 123\n' + '\t help text\n', + [['any:3: help text: <2 spaces><62 chars> (url#writing-rules-config-in)', + '\t 123456789 123456789 123456789 123456789 123456789 123456789 123\n', + '\t 123456789 123456789 123456789 123456789 123456789 123456789 12']]), + ('long url at beginning of line', + 'any', + 'help\n' + '\t 123456789 123456789 123456789 123456789 123456789 123456789 12\n' + '\t http://url.that.is.longer.than.seventy.two.characthers/folder_name\n' + '\t https://url.that.is.longer.than.seventy.two.characthers/folder_name\n' + '\t git://url.that.is.longer.than.seventy.two.characthers/folder_name\n', + []), + ('long url not at beginning of line', + 'any', + 'help\n' + '\t 123456789 123456789 123456789 123456789 123456789 123456789 12\n' + '\t refer to http://url.that.is.longer.than.seventy.two.characthers/folder_name\n' + '\n' + '\t http://url.that.is.longer.than.seventy.two.characthers/folder_name\n', + [['any:3: help text: <2 spaces><62 chars> (url#writing-rules-config-in)', + '\t refer to http://url.that.is.longer.than.seventy.two.characthers/folder_name\n', + '\t 123456789 123456789 123456789 123456789 123456789 123456789 12']]), + ('allow beautified items', + 'any', + 'help\n' + '\t 123456789 123456789 123456789 123456789 123456789 123456789 12\n' + '\t summary:\n' + '\t - enable that config\n' + '\t - built it\n', + []), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', HelpText) +def test_HelpText(testname, filename, string, expected): + warnings = util.check_file(m.HelpText, filename, string) + assert warnings == expected + + +Indent = [ + ('good example', + 'any', + 'config BR2_PACKAGE_FOO\n' + '\tbool "foo"\n' + '\tdefault y\n' + '\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n' + '\tdepends on BR2_INSTALL_LIBSTDCPP\n' + '# very useful comment\n' + '\tselect BR2_PACKAGE_BAZ\n' + '\thelp\n' + '\t help text\n' + '\n' + 'comment "foo needs toolchain w/ C++, threads"\n' + '\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n' + '\t\t!BR2_TOOLCHAIN_HAS_THREADS\n' + '\n' + 'source "package/foo/bar/Config.in"\n', + []), + ('spaces', + 'any', + 'config BR2_PACKAGE_FOO\n' + ' bool "foo"\n', + [['any:2: should be indented with one tab (url#_config_files)', + ' bool "foo"\n']]), + ('without indent', + 'any', + 'config BR2_PACKAGE_FOO\n' + 'default y\n', + [['any:2: should be indented with one tab (url#_config_files)', + 'default y\n']]), + ('too much tabs', + 'any', + 'config BR2_PACKAGE_FOO\n' + '\t\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n', + [['any:2: should be indented with one tab (url#_config_files)', + '\t\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n']]), + ('help', + 'any', + 'config BR2_PACKAGE_FOO\n' + ' help\n', + [['any:2: should be indented with one tab (url#_config_files)', + ' help\n']]), + ('continuation line', + 'any', + 'comment "foo needs toolchain w/ C++, threads"\n' + '\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n' + ' !BR2_TOOLCHAIN_HAS_THREADS\n', + [['any:3: continuation line should be indented using tabs', + ' !BR2_TOOLCHAIN_HAS_THREADS\n']]), + ('comment with tabs', + 'any', + '\tcomment "foo needs toolchain w/ C++, threads"\n', + [['any:1: should not be indented', + '\tcomment "foo needs toolchain w/ C++, threads"\n']]), + ('comment with spaces', + 'any', + ' comment "foo needs toolchain w/ C++, threads"\n', + [['any:1: should not be indented', + ' comment "foo needs toolchain w/ C++, threads"\n']]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', Indent) +def test_Indent(testname, filename, string, expected): + warnings = util.check_file(m.Indent, filename, string) + assert warnings == expected + + +RedefinedConfig = [ + ('no redefinition', + 'any', + 'config BR2_PACKAGE_FOO\n' + 'bool "foo"\n' + 'config BR2_PACKAGE_FOO_BAR\n' + 'bool "foo"\n', + []), + ('no conditional', + 'any', + 'config BR2_PACKAGE_FOO\n' + 'bool "foo"\n' + 'config BR2_PACKAGE_BAR\n' + 'bool "bar"\n' + 'config BR2_PACKAGE_FOO\n' + 'bool "foo"\n', + [['any:5: config BR2_PACKAGE_FOO redeclared (previous line: 1)', + 'config BR2_PACKAGE_FOO\n']]), + ('three times', + 'any', + 'config BR2_PACKAGE_FOO\n' + 'bool "foo"\n' + 'config BR2_PACKAGE_FOO\n' + 'bool "foo"\n' + 'config BR2_PACKAGE_FOO\n' + 'bool "foo"\n', + [['any:3: config BR2_PACKAGE_FOO redeclared (previous line: 1)', + 'config BR2_PACKAGE_FOO\n'], + ['any:5: config BR2_PACKAGE_FOO redeclared (previous line: 1)', + 'config BR2_PACKAGE_FOO\n']]), + ('same conditional', + 'any', + 'if BR2_PACKAGE_BAZ\n' + 'config BR2_PACKAGE_FOO\n' + 'bool "foo"\n' + 'config BR2_PACKAGE_BAR\n' + 'bool "bar"\n' + 'config BR2_PACKAGE_FOO\n' + 'bool "foo"\n' + 'endif\n', + [['any:6: config BR2_PACKAGE_FOO redeclared (previous line: 2)', + 'config BR2_PACKAGE_FOO\n']]), + ('equivalent conditional', + 'any', + 'if BR2_PACKAGE_BAZ\n' + 'config BR2_PACKAGE_FOO\n' + 'bool "foo"\n' + 'endif\n' + 'config BR2_PACKAGE_FOO\n' + 'bool "foo"\n' + 'if BR2_PACKAGE_BAZ\n' + 'config BR2_PACKAGE_FOO\n' + 'bool "foo"\n' + 'endif\n', + [['any:8: config BR2_PACKAGE_FOO redeclared (previous line: 2)', + 'config BR2_PACKAGE_FOO\n']]), + ('not equivalent conditional', + 'any', + 'if BR2_PACKAGE_BAZ\n' + 'config BR2_PACKAGE_FOO\n' + 'bool "foo"\n' + 'endif\n' + 'config BR2_PACKAGE_FOO\n' + 'bool "foo"\n' + 'if !BR2_PACKAGE_BAZ\n' + 'config BR2_PACKAGE_FOO\n' + 'bool "foo"\n' + 'endif\n', + []), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', RedefinedConfig) +def test_RedefinedConfig(testname, filename, string, expected): + warnings = util.check_file(m.RedefinedConfig, filename, string) + assert warnings == expected diff --git a/utils/checkpackagelib/test_lib_hash.py b/utils/checkpackagelib/test_lib_hash.py new file mode 100644 index 00000000..fdc63381 --- /dev/null +++ b/utils/checkpackagelib/test_lib_hash.py @@ -0,0 +1,183 @@ +import pytest +import checkpackagelib.test_util as util +import checkpackagelib.lib_hash as m + + +HashNumberOfFields = [ + ('empty file', + 'any', + '', + []), + ('empty line', + 'any', + '\n', + []), + ('ignore whitespace', + 'any', + '\t\n', + []), + ('ignore comments', + 'any', + '# text\n', + []), + ('1 field', + 'any', + 'field1\n', + [['any:1: expected three fields (url#adding-packages-hash)', + 'field1\n']]), + ('2 fields', + 'any', + 'field1 field2\n', + [['any:1: expected three fields (url#adding-packages-hash)', + 'field1 field2\n']]), + ('4 fields', + 'any', + 'field1 field2 field3 field4\n', + [['any:1: expected three fields (url#adding-packages-hash)', + 'field1 field2 field3 field4\n']]), + ('with 1 space', + 'any', + 'field1 field2 field3\n', + []), + ('many spaces', + 'any', + ' field1 field2 field3\n', + []), + ('tabs', + 'any', + 'field1\tfield2\tfield3\n', + []), + ('mix of tabs and spaces', + 'any', + '\tfield1\t field2\t field3 \n', + []), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', HashNumberOfFields) +def test_HashNumberOfFields(testname, filename, string, expected): + warnings = util.check_file(m.HashNumberOfFields, filename, string) + assert warnings == expected + + +HashType = [ + ('ignore empty files', + 'any', + '', + []), + ('ignore 1 field', + 'any', + 'text\n', + []), + ('wrong type', + 'any', + 'text text\n', + [['any:1: unexpected type of hash (url#adding-packages-hash)', + 'text text\n']]), + ('md5 (good)', + 'any', + 'md5 12345678901234567890123456789012\n', + []), + ('md5 (short)', + 'any', + 'md5 123456\n', + [['any:1: hash size does not match type (url#adding-packages-hash)', + 'md5 123456\n', + 'expected 32 hex digits']]), + ('ignore space before', + 'any', + ' md5 12345678901234567890123456789012\n', + []), + ('2 spaces', + 'any', + 'md5 12345678901234567890123456789012\n', + []), + ('ignore tabs', + 'any', + 'md5\t12345678901234567890123456789012\n', + []), + ('common typo', + 'any', + 'md5sum 12345678901234567890123456789012\n', + [['any:1: unexpected type of hash (url#adding-packages-hash)', + 'md5sum 12345678901234567890123456789012\n']]), + ('md5 (too long)', + 'any', + 'md5 123456789012345678901234567890123\n', + [['any:1: hash size does not match type (url#adding-packages-hash)', + 'md5 123456789012345678901234567890123\n', + 'expected 32 hex digits']]), + ('sha1 (good)', + 'any', + 'sha1 1234567890123456789012345678901234567890\n', + []), + ('sha256', + 'any', + 'sha256 1234567890123456789012345678901234567890123456789012345678901234\n', + []), + ('sha384', + 'any', + 'sha384 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456\n', + []), + ('sha512', + 'any', + 'sha512 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678' + '9012345678\n', + []), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', HashType) +def test_HashType(testname, filename, string, expected): + warnings = util.check_file(m.HashType, filename, string) + assert warnings == expected + + +HashSpaces = [ + ('ignore empty files', + 'any', + '', + []), + ('ignore 1 field', + 'any', + 'text\n', + []), + ('ignore comments', + 'any', + '# type 1234567890123456789012345678901234567890 file\n', + []), + ('ignore trailing space', + 'any', + 'type 1234567890123456789012345678901234567890 file\t \n', + []), + ('2 spaces', + 'any', + 'type 1234567890123456789012345678901234567890 file\n', + []), + ('1 space', + 'any', + 'type 1234567890123456789012345678901234567890 file\n', + [['any:1: separation does not match expectation (url#adding-packages-hash)', + 'type 1234567890123456789012345678901234567890 file\n']]), + ('3 spaces', + 'any', + 'type 1234567890123456789012345678901234567890 file\n', + [['any:1: separation does not match expectation (url#adding-packages-hash)', + 'type 1234567890123456789012345678901234567890 file\n']]), + ('tabs', + 'any', + 'type\t1234567890123456789012345678901234567890\tfile\n', + [['any:1: separation does not match expectation (url#adding-packages-hash)', + 'type\t1234567890123456789012345678901234567890\tfile\n']]), + ('mixed tabs and spaces', + 'any', + 'type\t 1234567890123456789012345678901234567890 \tfile\n', + [['any:1: separation does not match expectation (url#adding-packages-hash)', + 'type\t 1234567890123456789012345678901234567890 \tfile\n']]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', HashSpaces) +def test_HashSpaces(testname, filename, string, expected): + warnings = util.check_file(m.HashSpaces, filename, string) + assert warnings == expected diff --git a/utils/checkpackagelib/test_lib_ignore.py b/utils/checkpackagelib/test_lib_ignore.py new file mode 100644 index 00000000..6cd856d6 --- /dev/null +++ b/utils/checkpackagelib/test_lib_ignore.py @@ -0,0 +1,18 @@ +import pytest +import checkpackagelib.test_util as util +import checkpackagelib.lib_ignore as m + + +IgnoreMissingFile = [ + ('missing ignored file', + '.checkpackageignore', + 'this-file-does-not-exist SomeTest', + [['.checkpackageignore:1: ignored file this-file-does-not-exist is missing', + 'this-file-does-not-exist SomeTest']]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', IgnoreMissingFile) +def test_IgnoreMissingFile(testname, filename, string, expected): + warnings = util.check_file(m.IgnoreMissingFile, filename, string) + assert warnings == expected diff --git a/utils/checkpackagelib/test_lib_mk.py b/utils/checkpackagelib/test_lib_mk.py new file mode 100644 index 00000000..c86c55b9 --- /dev/null +++ b/utils/checkpackagelib/test_lib_mk.py @@ -0,0 +1,702 @@ +import pytest +import checkpackagelib.test_util as util +import checkpackagelib.lib_mk as m + + +DoNotInstallToHostdirUsr = [ + ('real case', + 'libapparmor.mk', + 'LIBAPPARMOR_CONF_OPTS += \\\n' + '\t--with-python \\\n' + '\tPYTHON=$(HOST_DIR)/usr/bin/python3 \\\n' + '\tPYTHON_CONFIG=$(STAGING_DIR)/usr/bin/python3-config \\\n' + '\tSWIG=$(SWIG)\n', + [['libapparmor.mk:3: install files to $(HOST_DIR)/ instead of $(HOST_DIR)/usr/', + '\tPYTHON=$(HOST_DIR)/usr/bin/python3 \\\n']]), + ('ignore comment', + 'any', + '# following code do not install to $(HOST_DIR)/usr/\n', + []), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', DoNotInstallToHostdirUsr) +def test_DoNotInstallToHostdirUsr(testname, filename, string, expected): + warnings = util.check_file(m.DoNotInstallToHostdirUsr, filename, string) + assert warnings == expected + + +Ifdef = [ + ('ignore commented line', + 'any', + '# ifdef\n', + []), + ('simple', + 'any', + '\n' + 'ifdef BR2_PACKAGE_FWTS_EFI_RUNTIME_MODULE\n' + 'endif\n', + [['any:2: use ifeq ($(SYMBOL),y) instead of ifdef SYMBOL', + 'ifdef BR2_PACKAGE_FWTS_EFI_RUNTIME_MODULE\n']]), + ('ignore indentation', + 'any', + ' ifdef FOO\n' + ' endif\n' + '\tifdef BAR\n' + 'endif\n', + [['any:1: use ifeq ($(SYMBOL),y) instead of ifdef SYMBOL', + ' ifdef FOO\n'], + ['any:3: use ifeq ($(SYMBOL),y) instead of ifdef SYMBOL', + '\tifdef BAR\n']]), + ('typo', + 'any', + '\n' + 'ifndef ($(BR2_ENABLE_LOCALE),y)\n' + 'endif\n', + [['any:2: use ifneq ($(SYMBOL),y) instead of ifndef SYMBOL', + 'ifndef ($(BR2_ENABLE_LOCALE),y)\n']]), + ('else ifdef', + 'any', + 'else ifdef SYMBOL # comment\n', + [['any:1: use ifeq ($(SYMBOL),y) instead of ifdef SYMBOL', + 'else ifdef SYMBOL # comment\n']]), + ('else ifndef', + 'any', + '\t else ifndef\t($(SYMBOL),y) # comment\n', + [['any:1: use ifneq ($(SYMBOL),y) instead of ifndef SYMBOL', + '\t else ifndef\t($(SYMBOL),y) # comment\n']]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', Ifdef) +def test_Ifdef(testname, filename, string, expected): + warnings = util.check_file(m.Ifdef, filename, string) + assert warnings == expected + + +get_package_prefix_from_filename = [ + ('linux extension', + 'linux/linux-ext-aufs.mk', + ['aufs', 'AUFS']), + ('linux tool', + 'package/linux-tools/linux-tool-gpio.mk.in', + ['gpio', 'GPIO']), + ('boot', + 'boot/binaries-marvell/binaries-marvell.mk', + ['binaries-marvell', 'BINARIES_MARVELL']), + ('toolchain', + 'toolchain/toolchain-external/toolchain-external-bootlin/toolchain-external-bootlin.mk', + ['toolchain-external-bootlin', 'TOOLCHAIN_EXTERNAL_BOOTLIN']), + ('package, underscore, subfolder', + 'package/x11r7/xapp_bitmap/xapp_bitmap.mk', + ['xapp_bitmap', 'XAPP_BITMAP']), + ('package, starting with number', + 'package/4th/4th.mk', + ['4th', '4TH']), + ('package, long name', + 'package/perl-mojolicious-plugin-authentication/perl-mojolicious-plugin-authentication.mk', + ['perl-mojolicious-plugin-authentication', 'PERL_MOJOLICIOUS_PLUGIN_AUTHENTICATION']), + ('package, case sensitive', + 'package/libeXosip2/libeXosip2.mk', + ['libeXosip2', 'LIBEXOSIP2']), + ] + + +@pytest.mark.parametrize('testname,filename,expected', get_package_prefix_from_filename) +def test_get_package_prefix_from_filename(testname, filename, expected): + prefix_lower, prefix_upper = m.get_package_prefix_from_filename(filename) + assert [prefix_lower, prefix_upper] == expected + + +Indent = [ + ('ignore comment at beginning of line', + 'any', + '# very useful comment\n', + []), + ('ignore comment at end of line', + 'any', + ' # very useful comment\n', + []), + ('do not indent on conditional (good)', + 'any', + 'ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\n' + 'FOO_CONF_OPTS += something\n' + 'endef\n', + []), + ('do not indent on conditional (bad)', + 'any', + 'ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\n' + '\tFOO_CONF_OPTS += something\n' + 'endef\n', + [['any:2: unexpected indent with tabs', + '\tFOO_CONF_OPTS += something\n']]), + ('indent after line that ends in backslash (good)', + 'any', + 'FOO_CONF_OPTS += \\\n' + '\tsomething\n', + []), + ('indent after line that ends in backslash (bad)', + 'any', + 'FOO_CONF_OPTS += \\\n' + 'something\n', + [['any:2: expected indent with tabs', + 'something\n']]), + ('indent after 2 lines that ends in backslash (good)', + 'any', + 'FOO_CONF_OPTS += \\\n' + '\tsomething \\\n' + '\tsomething_else\n', + []), + ('indent after 2 lines that ends in backslash (bad)', + 'any', + 'FOO_CONF_OPTS += \\\n' + '\tsomething \\\n' + '\tsomething_else \\\n' + 'FOO_CONF_OPTS += another_thing\n', + [['any:4: expected indent with tabs', + 'FOO_CONF_OPTS += another_thing\n']]), + ('indent inside define (good)', + 'any', + 'define FOO_SOMETHING\n' + '\tcommand\n' + '\tcommand \\\n' + '\t\targuments\n' + 'endef\n' + 'FOO_POST_PATCH_HOOKS += FOO_SOMETHING\n', + []), + ('indent inside define (bad, no indent)', + 'any', + 'define FOO_SOMETHING\n' + 'command\n' + 'endef\n', + [['any:2: expected indent with tabs', + 'command\n']]), + ('indent inside define (bad, spaces)', + 'any', + 'define FOO_SOMETHING\n' + ' command\n' + 'endef\n', + [['any:2: expected indent with tabs', + ' command\n']]), + ('indent make target (good)', + 'any', + 'make_target:\n' + '\tcommand\n' + '\n', + []), + ('indent make target (bad)', + 'any', + 'make_target:\n' + ' command\n' + '\n', + [['any:2: expected indent with tabs', + ' command\n']]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', Indent) +def test_Indent(testname, filename, string, expected): + warnings = util.check_file(m.Indent, filename, string) + assert warnings == expected + + +OverriddenVariable = [ + ('simple assignment', + 'any.mk', + 'VAR_1 = VALUE1\n', + []), + ('unconditional override (variable without underscore)', + 'any.mk', + 'VAR1 = VALUE1\n' + 'VAR1 = VALUE1\n', + [['any.mk:2: unconditional override of variable VAR1', + 'VAR1 = VALUE1\n']]), + ('unconditional override (variable with underscore, same value)', + 'any.mk', + 'VAR_1 = VALUE1\n' + 'VAR_1 = VALUE1\n', + [['any.mk:2: unconditional override of variable VAR_1', + 'VAR_1 = VALUE1\n']]), + ('unconditional override (variable with underscore, different value)', + 'any.mk', + 'VAR_1 = VALUE1\n' + 'VAR_1 = VALUE2\n', + [['any.mk:2: unconditional override of variable VAR_1', + 'VAR_1 = VALUE2\n']]), + ('warn for unconditional override even with wrong number of spaces', + 'any.mk', + 'VAR_1= VALUE1\n' + 'VAR_1 =VALUE2\n', + [['any.mk:2: unconditional override of variable VAR_1', + 'VAR_1 =VALUE2\n']]), + ('warn for := override', + 'any.mk', + 'VAR_1 = VALUE1\n' + 'VAR_1 := VALUE2\n', + [['any.mk:2: unconditional override of variable VAR_1', + 'VAR_1 := VALUE2\n']]), + ('append values outside conditional (good)', + 'any.mk', + 'VAR_1 = VALUE1\n' + 'VAR_1 += VALUE2\n', + []), + ('append values outside conditional (bad)', + 'any.mk', + 'VAR_1 = VALUE1\n' + 'VAR_1 := $(VAR_1), VALUE2\n', + [['any.mk:2: unconditional override of variable VAR_1', + 'VAR_1 := $(VAR_1), VALUE2\n']]), + ('immediate assignment inside conditional', + 'any.mk', + 'VAR_1 = VALUE1\n' + 'ifeq (condition)\n' + 'VAR_1 := $(VAR_1), VALUE2\n', + [['any.mk:3: immediate assignment to append to variable VAR_1', + 'VAR_1 := $(VAR_1), VALUE2\n']]), + ('immediate assignment inside conditional and unconditional override outside', + 'any.mk', + 'VAR_1 = VALUE1\n' + 'ifeq (condition)\n' + 'VAR_1 := $(VAR_1), VALUE2\n' + 'endif\n' + 'VAR_1 := $(VAR_1), VALUE2\n', + [['any.mk:3: immediate assignment to append to variable VAR_1', + 'VAR_1 := $(VAR_1), VALUE2\n'], + ['any.mk:5: unconditional override of variable VAR_1', + 'VAR_1 := $(VAR_1), VALUE2\n']]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', OverriddenVariable) +def test_OverriddenVariable(testname, filename, string, expected): + warnings = util.check_file(m.OverriddenVariable, filename, string) + assert warnings == expected + + +PackageHeader = [ + ('first line (good)', + 'any', + 80 * '#' + '\n', + []), + ('first line (bad)', + 'any', + '# very useful comment\n', + [['any:1: should be 80 hashes (url#writing-rules-mk)', + '# very useful comment\n', + 80 * '#']]), + ('second line (bad)', + 'any', + 80 * '#' + '\n' + '# package\n', + [['any:2: should be 1 hash (url#writing-rules-mk)', + '# package\n']]), + ('full header (good)', + 'any', + 80 * '#' + '\n' + '#\n' + '# package\n' + '#\n' + + 80 * '#' + '\n' + '\n', + []), + ('blank line after header (good)', + 'any', + 80 * '#' + '\n' + '#\n' + '# package\n' + '#\n' + + 80 * '#' + '\n' + '\n' + 'FOO_VERSION = 1\n', + []), + ('blank line after header (bad)', + 'any', + 80 * '#' + '\n' + '#\n' + '# package\n' + '#\n' + + 80 * '#' + '\n' + 'FOO_VERSION = 1\n', + [['any:6: should be a blank line (url#writing-rules-mk)', + 'FOO_VERSION = 1\n']]), + ('wrong number of hashes', + 'any', + 79 * '#' + '\n' + '#\n' + '# package\n' + '#\n' + + 81 * '#' + '\n' + '\n', + [['any:1: should be 80 hashes (url#writing-rules-mk)', + 79 * '#' + '\n', + 80 * '#'], + ['any:5: should be 80 hashes (url#writing-rules-mk)', + 81 * '#' + '\n', + 80 * '#']]), + ('allow include without header', + 'any', + 'include $(sort $(wildcard package/foo/*/*.mk))\n', + []), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', PackageHeader) +def test_PackageHeader(testname, filename, string, expected): + warnings = util.check_file(m.PackageHeader, filename, string) + assert warnings == expected + + +RemoveDefaultPackageSourceVariable = [ + ('bad', + 'any.mk', + 'ANY_SOURCE = any-$(ANY_VERSION).tar.gz\n', + [['any.mk:1: remove default value of _SOURCE variable (url#generic-package-reference)', + 'ANY_SOURCE = any-$(ANY_VERSION).tar.gz\n']]), + ('bad with path', + './any.mk', + 'ANY_SOURCE = any-$(ANY_VERSION).tar.gz\n', + [['./any.mk:1: remove default value of _SOURCE variable (url#generic-package-reference)', + 'ANY_SOURCE = any-$(ANY_VERSION).tar.gz\n']]), + ('warn for correct line', + './any.mk', + '\n' + '\n' + '\n' + 'ANY_SOURCE = any-$(ANY_VERSION).tar.gz\n', + [['./any.mk:4: remove default value of _SOURCE variable (url#generic-package-reference)', + 'ANY_SOURCE = any-$(ANY_VERSION).tar.gz\n']]), + ('warn ignoring missing spaces', + './any.mk', + 'ANY_SOURCE=any-$(ANY_VERSION).tar.gz\n', + [['./any.mk:1: remove default value of _SOURCE variable (url#generic-package-reference)', + 'ANY_SOURCE=any-$(ANY_VERSION).tar.gz\n']]), + ('good', + './any.mk', + 'ANY_SOURCE = aNy-$(ANY_VERSION).tar.gz\n', + []), + ('gcc exception', + 'gcc.mk', + 'GCC_SOURCE = gcc-$(GCC_VERSION).tar.gz\n', + []), + ('binutils exception', + './binutils.mk', + 'BINUTILS_SOURCE = binutils-$(BINUTILS_VERSION).tar.gz\n', + []), + ('gdb exception', + 'gdb/gdb.mk', + 'GDB_SOURCE = gdb-$(GDB_VERSION).tar.gz\n', + []), + ('package name with dash', + 'python-subprocess32.mk', + 'PYTHON_SUBPROCESS32_SOURCE = python-subprocess32-$(PYTHON_SUBPROCESS32_VERSION).tar.gz\n', + [['python-subprocess32.mk:1: remove default value of _SOURCE variable (url#generic-package-reference)', + 'PYTHON_SUBPROCESS32_SOURCE = python-subprocess32-$(PYTHON_SUBPROCESS32_VERSION).tar.gz\n']]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', RemoveDefaultPackageSourceVariable) +def test_RemoveDefaultPackageSourceVariable(testname, filename, string, expected): + warnings = util.check_file(m.RemoveDefaultPackageSourceVariable, filename, string) + assert warnings == expected + + +SpaceBeforeBackslash = [ + ('no backslash', + 'any.mk', + '\n', + []), + ('ignore missing indent', + 'any.mk', + 'define ANY_SOME_FIXUP\n' + 'for i in $$(find $(STAGING_DIR)/usr/lib* -name "any*.la"); do \\\n', + []), + ('ignore missing space', + 'any.mk', + 'ANY_CONF_ENV= \\\n' + '\tap_cv_void_ptr_lt_long=no \\\n', + []), + ('variable', + 'any.mk', + '\n' + 'ANY = \\\n', + []), + ('2 spaces', + 'any.mk', + 'ANY = \\\n', + [['any.mk:1: use only one space before backslash', + 'ANY = \\\n']]), + ('warn about correct line', + 'any.mk', + '\n' + 'ANY = \\\n', + [['any.mk:2: use only one space before backslash', + 'ANY = \\\n']]), + ('tab', + 'any.mk', + 'ANY =\t\\\n', + [['any.mk:1: use only one space before backslash', + 'ANY =\t\\\n']]), + ('tabs', + 'any.mk', + 'ANY =\t\t\\\n', + [['any.mk:1: use only one space before backslash', + 'ANY =\t\t\\\n']]), + ('spaces and tabs', + 'any.mk', + 'ANY = \t\t\\\n', + [['any.mk:1: use only one space before backslash', + 'ANY = \t\t\\\n']]), + ('mixed spaces and tabs 1', + 'any.mk', + 'ANY = \t \t\\\n', + [['any.mk:1: use only one space before backslash', + 'ANY = \t \t\\\n']]), + ('mixed spaces and tabs 2', + 'any.mk', + 'ANY = \t \\\n', + [['any.mk:1: use only one space before backslash', + 'ANY = \t \\\n']]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', SpaceBeforeBackslash) +def test_SpaceBeforeBackslash(testname, filename, string, expected): + warnings = util.check_file(m.SpaceBeforeBackslash, filename, string) + assert warnings == expected + + +TrailingBackslash = [ + ('no backslash', + 'any.mk', + 'ANY = \n', + []), + ('one line', + 'any.mk', + 'ANY = \\\n', + []), + ('2 lines', + 'any.mk', + 'ANY = \\\n' + '\\\n', + []), + ('empty line after', + 'any.mk', + 'ANY = \\\n' + '\n', + [['any.mk:1: remove trailing backslash', + 'ANY = \\\n']]), + ('line with spaces after', + 'any.mk', + 'ANY = \\\n' + ' \n', + [['any.mk:1: remove trailing backslash', + 'ANY = \\\n']]), + ('line with tabs after', + 'any.mk', + 'ANY = \\\n' + '\t\n', + [['any.mk:1: remove trailing backslash', + 'ANY = \\\n']]), + ('ignore if commented', + 'any.mk', + '# ANY = \\\n' + '\n', + []), + ('real example', + 'any.mk', + 'ANY_CONF_ENV= \t\\\n' + '\tap_cv_void_ptr_lt_long=no \\\n' + '\n', + [['any.mk:2: remove trailing backslash', + '\tap_cv_void_ptr_lt_long=no \\\n']]), + ('ignore whitespace 1', + 'any.mk', + 'ANY = \t\t\\\n', + []), + ('ignore whitespace 2', + 'any.mk', + 'ANY = \t \t\\\n', + []), + ('ignore whitespace 3', + 'any.mk', + 'ANY = \t \\\n', + []), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', TrailingBackslash) +def test_TrailingBackslash(testname, filename, string, expected): + warnings = util.check_file(m.TrailingBackslash, filename, string) + assert warnings == expected + + +TypoInPackageVariable = [ + ('good', + 'any.mk', + 'ANY_VAR = \n', + []), + ('good with path 1', + './any.mk', + 'ANY_VAR += \n', + []), + ('good with path 2', + 'any/any.mk', + 'ANY_VAR = \n', + []), + ('bad =', + 'any.mk', + 'OTHER_VAR = \n', + [['any.mk:1: possible typo, variable not properly prefixed: OTHER_VAR -> *ANY_XXXX* (url#_tips_and_tricks)', + 'OTHER_VAR = \n']]), + ('bad +=', + 'any.mk', + 'OTHER_VAR += \n', + [['any.mk:1: possible typo, variable not properly prefixed: OTHER_VAR -> *ANY_XXXX* (url#_tips_and_tricks)', + 'OTHER_VAR += \n']]), + ('ignore missing space', + 'any.mk', + 'OTHER_VAR= \n', + [['any.mk:1: possible typo, variable not properly prefixed: OTHER_VAR -> *ANY_XXXX* (url#_tips_and_tricks)', + 'OTHER_VAR= \n']]), + ('use path in the warning', + './any.mk', + 'OTHER_VAR = \n', + [['./any.mk:1: possible typo, variable not properly prefixed: OTHER_VAR -> *ANY_XXXX* (url#_tips_and_tricks)', + 'OTHER_VAR = \n']]), + ('another name', + 'other.mk', + 'ANY_VAR = \n', + [['other.mk:1: possible typo, variable not properly prefixed: ANY_VAR -> *OTHER_XXXX* (url#_tips_and_tricks)', + 'ANY_VAR = \n']]), + ('libc exception', + './any.mk', + 'BR_LIBC = \n', + []), + ('rootfs exception', + 'any.mk', + 'ROOTFS_ANY_VAR += \n', + []), + ('host (good)', + 'any.mk', + 'HOST_ANY_VAR += \n', + []), + ('host (bad)', + 'any.mk', + 'HOST_OTHER_VAR = \n', + [['any.mk:1: possible typo, variable not properly prefixed: HOST_OTHER_VAR -> *ANY_XXXX* (url#_tips_and_tricks)', + 'HOST_OTHER_VAR = \n']]), + ('provides', + 'any.mk', + 'ANY_PROVIDES = other thing\n' + 'OTHER_VAR = \n', + []), + ('ignore space', + 'any.mk', + 'ANY_PROVIDES = thing other \n' + 'OTHER_VAR = \n', + []), + ('wrong provides', + 'any.mk', + 'ANY_PROVIDES = other\n' + 'OTHERS_VAR = \n', + [['any.mk:2: possible typo, variable not properly prefixed: OTHERS_VAR -> *ANY_XXXX* (url#_tips_and_tricks)', + 'OTHERS_VAR = \n']]), + ('linux tool', + 'package/linux-tools/linux-tool-cpupower.mk.in', + 'CPUPOWER_DEPENDENCIES =\n' + 'POWER_DEPENDENCIES +=\n', + [['package/linux-tools/linux-tool-cpupower.mk.in:2: possible typo, variable not properly prefixed: ' + 'POWER_DEPENDENCIES -> *CPUPOWER_XXXX* (url#_tips_and_tricks)', + 'POWER_DEPENDENCIES +=\n']]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', TypoInPackageVariable) +def test_TypoInPackageVariable(testname, filename, string, expected): + warnings = util.check_file(m.TypoInPackageVariable, filename, string) + assert warnings == expected + + +UselessFlag = [ + ('autoreconf no', + 'any.mk', + 'ANY_AUTORECONF=NO\n', + [['any.mk:1: useless default value (url#_infrastructure_for_autotools_based_packages)', + 'ANY_AUTORECONF=NO\n']]), + ('host autoreconf no', + 'any.mk', + 'HOST_ANY_AUTORECONF\n', + []), + ('autoreconf yes', + 'any.mk', + 'ANY_AUTORECONF=YES\n', + []), + ('libtool_patch yes', + 'any.mk', + 'ANY_LIBTOOL_PATCH\t= YES\n', + [['any.mk:1: useless default value (url#_infrastructure_for_autotools_based_packages)', + 'ANY_LIBTOOL_PATCH\t= YES\n']]), + ('libtool_patch no', + 'any.mk', + 'ANY_LIBTOOL_PATCH= \t NO\n', + []), + ('generic', + 'any.mk', + 'ANY_INSTALL_IMAGES = NO\n' + 'ANY_REDISTRIBUTE = YES\n' + 'ANY_INSTALL_STAGING = NO\n' + 'ANY_INSTALL_TARGET = YES\n', + [['any.mk:1: useless default value (url#_infrastructure_for_packages_with_specific_build_systems)', + 'ANY_INSTALL_IMAGES = NO\n'], + ['any.mk:2: useless default value (url#_infrastructure_for_packages_with_specific_build_systems)', + 'ANY_REDISTRIBUTE = YES\n'], + ['any.mk:3: useless default value (url#_infrastructure_for_packages_with_specific_build_systems)', + 'ANY_INSTALL_STAGING = NO\n'], + ['any.mk:4: useless default value (url#_infrastructure_for_packages_with_specific_build_systems)', + 'ANY_INSTALL_TARGET = YES\n']]), + ('conditional', + 'any.mk', + 'ifneq (condition)\n' + 'ANY_INSTALL_IMAGES = NO\n' + 'endif\n' + 'ANY_REDISTRIBUTE = YES\n', + [['any.mk:4: useless default value (url#_infrastructure_for_packages_with_specific_build_systems)', + 'ANY_REDISTRIBUTE = YES\n']]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', UselessFlag) +def test_UselessFlag(testname, filename, string, expected): + warnings = util.check_file(m.UselessFlag, filename, string) + assert warnings == expected + + +VariableWithBraces = [ + ('good', + 'xmlstarlet.mk', + 'XMLSTARLET_CONF_OPTS += \\\n' + '\t--with-libxml-prefix=$(STAGING_DIR)/usr \\\n', + []), + ('bad', + 'xmlstarlet.mk', + 'XMLSTARLET_CONF_OPTS += \\\n' + '\t--with-libxml-prefix=${STAGING_DIR}/usr \\\n', + [['xmlstarlet.mk:2: use $() to delimit variables, not ${}', + '\t--with-libxml-prefix=${STAGING_DIR}/usr \\\n']]), + ('expanded by the shell', + 'sg3_utils.mk', + '\tfor prog in xcopy zone; do \\\n' + '\t\t$(RM) $(TARGET_DIR)/usr/bin/sg_$${prog} ; \\\n' + '\tdone\n', + []), + ('comments', + 'any.mk', + '#\t--with-libxml-prefix=${STAGING_DIR}/usr \\\n', + []), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', VariableWithBraces) +def test_VariableWithBraces(testname, filename, string, expected): + warnings = util.check_file(m.VariableWithBraces, filename, string) + assert warnings == expected diff --git a/utils/checkpackagelib/test_lib_patch.py b/utils/checkpackagelib/test_lib_patch.py new file mode 100644 index 00000000..f7487ef3 --- /dev/null +++ b/utils/checkpackagelib/test_lib_patch.py @@ -0,0 +1,118 @@ +import pytest +import checkpackagelib.test_util as util +import checkpackagelib.lib_patch as m + + +ApplyOrder = [ + ('standard', # catches https://bugs.busybox.net/show_bug.cgi?id=11271 + '0001-description.patch', + '', + []), + ('standard with path', + 'path/0001-description.patch', + '', + []), + ('acceptable format', + '1-description.patch', + '', + []), + ('acceptable format with path', + 'path/1-description.patch', + '', + []), + ('old format', + 'package-0001-description.patch', + '', + [['package-0001-description.patch:0: use name -.patch (url#_providing_patches)']]), + ('old format with path', + 'path/package-0001-description.patch', + '', + [['path/package-0001-description.patch:0: use name -.patch (url#_providing_patches)']]), + ('missing number', + 'description.patch', + '', + [['description.patch:0: use name -.patch (url#_providing_patches)']]), + ('missing number with path', + 'path/description.patch', + '', + [['path/description.patch:0: use name -.patch (url#_providing_patches)']]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', ApplyOrder) +def test_ApplyOrder(testname, filename, string, expected): + warnings = util.check_file(m.ApplyOrder, filename, string) + assert warnings == expected + + +NumberedSubject = [ + ('no subject', + 'patch', + '', + []), + ('acceptable because it is not a git patch', + 'patch', + 'Subject: [PATCH 24/105] text\n', + []), + ('good', + 'patch', + 'Subject: [PATCH] text\n' + 'diff --git a/configure.ac b/configure.ac\n', + []), + ('bad', + 'patch', + 'Subject: [PATCH 24/105] text\n' + 'diff --git a/configure.ac b/configure.ac\n', + [["patch:1: generate your patches with 'git format-patch -N'", + 'Subject: [PATCH 24/105] text\n']]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', NumberedSubject) +def test_NumberedSubject(testname, filename, string, expected): + warnings = util.check_file(m.NumberedSubject, filename, string) + assert warnings == expected + + +Sob = [ + ('good', + 'patch', + 'Signed-off-by: John Doe \n', + []), + ('empty', + 'patch', + '', + [['patch:0: missing Signed-off-by in the header (url#_format_and_licensing_of_the_package_patches)']]), + ('bad', + 'patch', + 'Subject: [PATCH 24/105] text\n', + [['patch:0: missing Signed-off-by in the header (url#_format_and_licensing_of_the_package_patches)']]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', Sob) +def test_Sob(testname, filename, string, expected): + warnings = util.check_file(m.Sob, filename, string) + assert warnings == expected + + +Upstream = [ + ('good', + 'patch', + 'Upstream: https://some/amazing/patch/submission\n', + []), + ('empty', + 'patch', + '', + [['patch:0: missing Upstream in the header (url#_additional_patch_documentation)']]), + ('bad', + 'patch', + 'Subject: [PATCH 24/105] text\n', + [['patch:0: missing Upstream in the header (url#_additional_patch_documentation)']]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', Upstream) +def test_Upstream(testname, filename, string, expected): + warnings = util.check_file(m.Upstream, filename, string) + assert warnings == expected diff --git a/utils/checkpackagelib/test_lib_sysv.py b/utils/checkpackagelib/test_lib_sysv.py new file mode 100644 index 00000000..9ae84059 --- /dev/null +++ b/utils/checkpackagelib/test_lib_sysv.py @@ -0,0 +1,131 @@ +import os +import pytest +import re +import tempfile +import checkpackagelib.test_util as util +import checkpackagelib.lib_sysv as m +from checkpackagelib.test_tool import check_file as tool_check_file + +workdir = os.path.join(tempfile.mkdtemp(suffix='-checkpackagelib-test-sysv')) +workdir_regex = re.compile(r'/tmp/tmp[^/]*-checkpackagelib-test-sysv') + + +Indent = [ + ('empty file', + 'any', + '', + []), + ('empty line', + 'any', + '\n', + []), + ('ignore whitespace', + 'any', + ' \n', + []), + ('spaces', + 'any', + 'case "$1" in\n' + ' start)', + [['any:2: should be indented with tabs (url#adding-packages-start-script)', + ' start)']]), + ('tab', + 'any', + 'case "$1" in\n' + '\tstart)', + []), + ('tabs and spaces', + 'any', + 'case "$1" in\n' + '\t start)', + [['any:2: should be indented with tabs (url#adding-packages-start-script)', + '\t start)']]), + ('spaces and tabs', + 'any', + 'case "$1" in\n' + ' \tstart)', + [['any:2: should be indented with tabs (url#adding-packages-start-script)', + ' \tstart)']]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', Indent) +def test_Indent(testname, filename, string, expected): + warnings = util.check_file(m.Indent, filename, string) + assert warnings == expected + + +NotExecutable = [ + ('SysV', + 'sh-shebang.sh', + 0o775, + '#!/bin/sh', + ["dir/sh-shebang.sh:0: This file does not need to be executable," + " just make sure you use '$(INSTALL) -D -m 0755' in the .mk file"]), + ] + + +@pytest.mark.parametrize('testname,filename,permissions,string,expected', NotExecutable) +def test_NotExecutable(testname, filename, permissions, string, expected): + warnings = tool_check_file(m.NotExecutable, filename, string, permissions) + assert warnings == expected + + +Variables = [ + ('empty file', + 'any', + '', + [['any:0: DAEMON variable not defined (url#adding-packages-start-script)']]), + ('daemon and pidfile ok', + 'package/busybox/S01syslogd', + 'DAEMON="syslogd"\n' + 'PIDFILE="/var/run/$DAEMON.pid"\n', + []), + ('wrong filename', + 'package/busybox/S01syslog', + 'DAEMON="syslogd"\n' + 'PIDFILE="/var/run/${DAEMON}.pid"\n', + [['package/busybox/S01syslog:0: filename should be S (url#adding-packages-start-script)', + 'expecting Ssyslogd']]), + ('no pidfile ok', + 'S99something', + 'DAEMON="something"\n', + []), + ('hardcoded pidfile', + 'S99something', + 'DAEMON="something"\n' + 'PIDFILE="/var/run/something.pid"\n', + [['S99something:2: Incorrect PIDFILE value (url#adding-packages-start-script)', + 'PIDFILE="/var/run/something.pid"\n', + 'PIDFILE="/var/run/$DAEMON.pid"']]), + ('redefined daemon', + 'S50any', + 'DAEMON="any"\n' + 'DAEMON="other"\n', + [['S50any:2: DAEMON variable redefined (url#adding-packages-start-script)', + 'DAEMON="other"\n']]), + ('daemon name with dash', + 'S82cups-browsed', + 'DAEMON="cups-browsed"', + []), + ('daemon with path', + 'S50avahi-daemon', + 'DAEMON=/usr/sbin/avahi-daemon', + [['S50avahi-daemon:1: Do not include path in DAEMON (url#adding-packages-start-script)', + 'DAEMON=/usr/sbin/avahi-daemon', + 'DAEMON="avahi-daemon"']]), + ('daemon with path and wrong filename', + 'S50avahi', + 'DAEMON=/usr/sbin/avahi-daemon', + [['S50avahi:1: Do not include path in DAEMON (url#adding-packages-start-script)', + 'DAEMON=/usr/sbin/avahi-daemon', + 'DAEMON="avahi-daemon"'], + ['S50avahi:0: filename should be S (url#adding-packages-start-script)', + 'expecting Savahi-daemon']]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', Variables) +def test_Variables(testname, filename, string, expected): + warnings = util.check_file(m.Variables, filename, string) + assert warnings == expected diff --git a/utils/checkpackagelib/test_tool.py b/utils/checkpackagelib/test_tool.py new file mode 100644 index 00000000..cfa826f5 --- /dev/null +++ b/utils/checkpackagelib/test_tool.py @@ -0,0 +1,140 @@ +import os +import pytest +import re +import tempfile +import checkpackagelib.tool as m + +workdir_regex = re.compile(r'/tmp/tmp[^/]*-checkpackagelib-test-tool') + + +def check_file(tool, filename, string, permissions=None): + with tempfile.TemporaryDirectory(suffix='-checkpackagelib-test-tool') as workdir: + script = os.path.join(workdir, filename) + with open(script, 'wb') as f: + f.write(string.encode()) + if permissions: + os.chmod(script, permissions) + obj = tool(script) + result = obj.run() + if result is None: + return [] + return [workdir_regex.sub('dir', r) for r in result] + + +NotExecutable = [ + ('664', + 'package.mk', + 0o664, + '', + []), + ('775', + 'package.mk', + 0o775, + '', + ["dir/package.mk:0: This file does not need to be executable"]), + ] + + +@pytest.mark.parametrize('testname,filename,permissions,string,expected', NotExecutable) +def test_NotExecutable(testname, filename, permissions, string, expected): + warnings = check_file(m.NotExecutable, filename, string, permissions) + assert warnings == expected + + +NotExecutable_hint = [ + ('no hint', + "", + 'sh-shebang.sh', + 0o775, + '#!/bin/sh', + ["dir/sh-shebang.sh:0: This file does not need to be executable"]), + ('hint', + ", very special hint", + 'sh-shebang.sh', + 0o775, + '#!/bin/sh', + ["dir/sh-shebang.sh:0: This file does not need to be executable, very special hint"]), + ] + + +@pytest.mark.parametrize('testname,hint,filename,permissions,string,expected', NotExecutable_hint) +def test_NotExecutable_hint(testname, hint, filename, permissions, string, expected): + class NotExecutable(m.NotExecutable): + def hint(self): + return hint + warnings = check_file(NotExecutable, filename, string, permissions) + assert warnings == expected + + +Flake8 = [ + ('empty', + 'empty.py', + '', + []), + ('W391', + 'blank-line.py', + '\n', + ["dir/blank-line.py:0: run 'flake8' and fix the warnings", + "dir/blank-line.py:1:1: W391 blank line at end of file"]), + ('more than one warning', + 'file', + 'import os\n' + 'import re\n' + '\n', + ["dir/file:0: run 'flake8' and fix the warnings", + "dir/file:1:1: F401 'os' imported but unused\n" + "dir/file:2:1: F401 're' imported but unused\n" + 'dir/file:3:1: W391 blank line at end of file']), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', Flake8) +def test_Flake8(testname, filename, string, expected): + warnings = check_file(m.Flake8, filename, string) + assert warnings == expected + + +Shellcheck = [ + ('missing shebang', + 'empty.sh', + '', + ["dir/empty.sh:0: run 'shellcheck' and fix the warnings", + "In dir/empty.sh line 1:\n" + "^-- SC2148: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.\n" + "For more information:\n" + " https://www.shellcheck.net/wiki/SC2148 -- Tips depend on target shell and y..."]), + ('sh shebang', + 'sh-shebang.sh', + '#!/bin/sh', + []), + ('bash shebang', + 'bash-shebang.sh', + '#!/bin/bash', + []), + ('2 warnings', + 'unused.sh', + 'unused=""', + ["dir/unused.sh:0: run 'shellcheck' and fix the warnings", + "In dir/unused.sh line 1:\n" + 'unused=""\n' + "^-- SC2148: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.\n" + "^----^ SC2034: unused appears unused. Verify use (or export if used externally).\n" + "For more information:\n" + " https://www.shellcheck.net/wiki/SC2148 -- Tips depend on target shell and y...\n" + " https://www.shellcheck.net/wiki/SC2034 -- unused appears unused. Verify use..."]), + ('tab', + 'tab.sh', + '\t#!/bin/sh', + ["dir/tab.sh:0: run 'shellcheck' and fix the warnings", + "In dir/tab.sh line 1:\n" + '\t#!/bin/sh\n' + "^-- SC1114: Remove leading spaces before the shebang.\n" + "For more information:\n" + " https://www.shellcheck.net/wiki/SC1114 -- Remove leading spaces before the ..."]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', Shellcheck) +def test_Shellcheck(testname, filename, string, expected): + warnings = check_file(m.Shellcheck, filename, string) + assert warnings == expected diff --git a/utils/checkpackagelib/test_util.py b/utils/checkpackagelib/test_util.py new file mode 100644 index 00000000..23f2995e --- /dev/null +++ b/utils/checkpackagelib/test_util.py @@ -0,0 +1,8 @@ +def check_file(check_function, filename, string): + obj = check_function(filename, 'url') + result = [] + result.append(obj.before()) + for i, line in enumerate(string.splitlines(True)): + result.append(obj.check_line(i + 1, line)) + result.append(obj.after()) + return [r for r in result if r is not None] diff --git a/utils/checkpackagelib/tool.py b/utils/checkpackagelib/tool.py new file mode 100644 index 00000000..dcca65f6 --- /dev/null +++ b/utils/checkpackagelib/tool.py @@ -0,0 +1,44 @@ +import flake8.main.application +import os +import subprocess +import tempfile +from checkpackagelib.base import _Tool + + +class NotExecutable(_Tool): + def ignore(self): + return False + + def run(self): + if self.ignore(): + return + if os.access(self.filename, os.X_OK): + return ["{}:0: This file does not need to be executable{}".format(self.filename, self.hint())] + + +class Flake8(_Tool): + def run(self): + with tempfile.NamedTemporaryFile() as output: + app = flake8.main.application.Application() + app.run(['--output-file={}'.format(output.name), self.filename]) + stdout = output.readlines() + processed_output = [str(line.decode().rstrip()) for line in stdout if line] + if len(stdout) == 0: + return + return ["{}:0: run 'flake8' and fix the warnings".format(self.filename), + '\n'.join(processed_output)] + + +class Shellcheck(_Tool): + def run(self): + cmd = ['shellcheck', "--external-sources", self.filename] + try: + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + stdout = p.communicate()[0] + processed_output = [str(line.decode().rstrip()) for line in stdout.splitlines() if line] + if p.returncode == 0: + return + return ["{}:0: run 'shellcheck' and fix the warnings".format(self.filename), + '\n'.join(processed_output)] + except FileNotFoundError: + return ["{}:0: failed to call 'shellcheck'".format(self.filename)] diff --git a/utils/checksymbolslib/__init__.py b/utils/checksymbolslib/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/utils/checksymbolslib/br.py b/utils/checksymbolslib/br.py new file mode 100644 index 00000000..f9dc336e --- /dev/null +++ b/utils/checksymbolslib/br.py @@ -0,0 +1,143 @@ +import os +import re + + +ignored_directories = [ + 'support/testing/', +] +# Makefile +symbols_used_only_in_source_code = [ + 'BR2_USE_CCACHE', +] +# package/skeleton/Config.in +symbols_used_only_for_host_variant = [ + 'BR2_PACKAGE_SKELETON', +] +# Makefile +# package/pkg-generic.mk +symbols_defined_only_at_command_line = [ + 'BR2_GRAPH_ALT', + 'BR2_GRAPH_DEPS_OPTS', + 'BR2_GRAPH_DOT_OPTS', + 'BR2_GRAPH_OUT', + 'BR2_GRAPH_SIZE_OPTS', + 'BR2_INSTRUMENTATION_SCRIPTS', +] +# Makefile +symbols_defined_only_when_using_br2_external = [ + 'BR2_EXTERNAL', + 'BR2_EXTERNAL_DIRS', + 'BR2_EXTERNAL_MKS', + 'BR2_EXTERNAL_NAMES', +] +# boot/barebox/barebox.mk +symbols_defined_only_for_barebox_variant = [ + 'BR2_TARGET_BAREBOX_AUX_BAREBOXENV', +] +# toolchain/toolchain/toolchain.mk +# toolchain/toolchain-buildroot/toolchain-buildroot.mk +# toolchain/toolchain-bare-metal-buildroot/toolchain-bare-metal-buildroot.mk +symbols_not_defined_for_fake_virtual_packages = [ + 'BR2_PACKAGE_HAS_TOOLCHAIN', + 'BR2_PACKAGE_HAS_TOOLCHAIN_BUILDROOT', + 'BR2_PACKAGE_HAS_TOOLCHAIN_BARE_METAL_BUILDROOT', + 'BR2_PACKAGE_PROVIDES_TOOLCHAIN', + 'BR2_PACKAGE_PROVIDES_TOOLCHAIN_BUILDROOT', + 'BR2_PACKAGE_PROVIDES_TOOLCHAIN_BARE_METAL_BUILDROOT', +] +# fs/common.mk +suffixes_not_defined_for_all_rootfs_types = [ + '_BZIP2', + '_GZIP', + '_LZ4', + '_LZMA', + '_LZO', + '_XZ', + '_ZSTD', +] +# fs/common.mk +rootfs_prefix = 'BR2_TARGET_ROOTFS_' +# package/pkg-generic.mk +package_prefix = 'BR2_PACKAGE_' +# package/pkg-generic.mk +boot_prefix = 'BR2_TARGET_' +# package/pkg-generic.mk +toolchain_prefix = 'BR2_' +# boot/barebox/barebox.mk +barebox_infra_suffixes = [ + '', + '_BAREBOXENV', + '_BOARD_DEFCONFIG', + '_CONFIG_FRAGMENT_FILES', + '_CUSTOM_CONFIG_FILE', + '_CUSTOM_EMBEDDED_ENV_PATH', + '_CUSTOM_ENV', + '_CUSTOM_ENV_PATH', + '_IMAGE_FILE', + '_USE_CUSTOM_CONFIG', + '_USE_DEFCONFIG', +] +re_kconfig_symbol = re.compile(r'\b(BR2_\w+)\b') +# Example lines to be handled: +# config BR2_TOOLCHAIN_EXTERNAL_PREFIX +# menuconfig BR2_PACKAGE_GST1_PLUGINS_BASE +re_kconfig_config = re.compile(r'^\s*(menu|)config\s+(BR2_\w+)') +# Example lines to be handled: +# default "uclibc" if BR2_TOOLCHAIN_BUILDROOT_UCLIBC +# default BR2_TARGET_GRUB2_BUILTIN_MODULES if BR2_TARGET_GRUB2_BUILTIN_MODULES != "" +# default y if BR2_HOSTARCH = "powerpc" +re_kconfig_default = re.compile(r'^\s*default\s') +re_kconfig_default_before_conditional = re.compile(r'^.*\bif\b') +re_kconfig_default_legacy_comment = re.compile(r'#\s*legacy') +# Example lines to be handled: +# depends on !(BR2_TOOLCHAIN_USES_GLIBC && BR2_TOOLCHAIN_USES_MUSL) +# depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" +re_kconfig_depends = re.compile(r'^\s*depends on\s') +# Example lines to be handled: +# select BR2_PACKAGE_HOST_NODEJS if BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL != "" +# select BR2_PACKAGE_LIBDRM if !(BR2_arm && BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_FB) +# select BR2_PACKAGE_OPENSSL if !(BR2_PACKAGE_GNUTLS || BR2_PACKAGE_MBEDTLS) +re_kconfig_select = re.compile(r'^\s*select\s') +re_kconfig_select_conditional = re.compile(r'\bif\s.*') +# Example lines to be handled: +# if !BR2_SKIP_LEGACY +# if (BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX51 || BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX53) +# if BR2_PACKAGE_HAS_LUAINTERPRETER && !BR2_STATIC_LIBS +# if BR2_PACKAGE_QEMU_CUSTOM_TARGETS = "" +re_kconfig_if = re.compile(r'^\s*if\s') +# Example lines to be handled: +# source "$BR2_BASE_DIR/.br2-external.in.jpeg" +re_kconfig_source = re.compile(r'^\s*source\b') + +re_kconfig_choice = re.compile(r'^\s*choice\b') +re_kconfig_endchoice = re.compile(r'^\s*endchoice\b') +re_makefile_eval = re.compile(r'^\s*\$\(eval\b') +re_menu = re.compile(r'^\s*menu\b') +re_endmenu = re.compile(r'^\s*endmenu\b') +re_comments = re.compile(r'#.*$') +re_legacy_special_comment = re.compile(r'#.*(BR2_\w+)\s.*still referenced') +re_host_symbol = re.compile(r'(BR2_PACKAGE_HOST_\w+|BR2_PACKAGE_HAS_HOST_\w+)') +re_makefile_symbol_usage = re.compile(r'\$\((BR2_\w+)\)') +re_makefile_symbol_export = re.compile(r'export\s*(BR2_\w+)') +re_makefile_symbol_attribution = re.compile(r'^\s*(BR2_\w+)\s*[?:=]') + + +def get_package_from_filename(filename): + package = os.path.basename(filename)[:-3].upper().replace('-', '_') + return package + + +def is_an_optional_symbol_for_a_roofts(symbol): + if not symbol.startswith(rootfs_prefix): + return False + for sufix in suffixes_not_defined_for_all_rootfs_types: + if symbol.endswith(sufix): + return True + return False + + +def file_belongs_to_an_ignored_diretory(filename): + for d in ignored_directories: + if filename.startswith(d): + return True + return False diff --git a/utils/checksymbolslib/db.py b/utils/checksymbolslib/db.py new file mode 100644 index 00000000..71b1e9e8 --- /dev/null +++ b/utils/checksymbolslib/db.py @@ -0,0 +1,205 @@ +import re + +import checksymbolslib.br as br + + +choice = 'part of a choice' +definition = 'definition' +helper = 'possible config helper' +legacy_definition = 'legacy definition' +legacy_note = 'legacy note' +legacy_usage = 'legacy usage' +select = 'selected' +usage = 'normal usage' +usage_in_legacy = 'usage inside legacy' +virtual = 'virtual' + + +class DB: + def __init__(self): + self.all_symbols = {} + + def __str__(self): + return str(self.all_symbols) + + def add_symbol_entry(self, symbol, filename, lineno, entry_type): + if symbol not in self.all_symbols: + self.all_symbols[symbol] = {} + if entry_type not in self.all_symbols[symbol]: + self.all_symbols[symbol][entry_type] = {} + if filename not in self.all_symbols[symbol][entry_type]: + self.all_symbols[symbol][entry_type][filename] = [] + self.all_symbols[symbol][entry_type][filename].append(lineno) + + def add_symbol_choice(self, symbol, filename, lineno): + self.add_symbol_entry(symbol, filename, lineno, choice) + + def add_symbol_definition(self, symbol, filename, lineno): + self.add_symbol_entry(symbol, filename, lineno, definition) + + def add_symbol_helper(self, symbol, filename, lineno): + self.add_symbol_entry(symbol, filename, lineno, helper) + + def add_symbol_legacy_definition(self, symbol, filename, lineno): + self.add_symbol_entry(symbol, filename, lineno, legacy_definition) + + def add_symbol_legacy_note(self, symbol, filename, lineno): + self.add_symbol_entry(symbol, filename, lineno, legacy_note) + + def add_symbol_legacy_usage(self, symbol, filename, lineno): + self.add_symbol_entry(symbol, filename, lineno, legacy_usage) + + def add_symbol_select(self, symbol, filename, lineno): + self.add_symbol_entry(symbol, filename, lineno, select) + + def add_symbol_usage(self, symbol, filename, lineno): + self.add_symbol_entry(symbol, filename, lineno, usage) + + def add_symbol_usage_in_legacy(self, symbol, filename, lineno): + self.add_symbol_entry(symbol, filename, lineno, usage_in_legacy) + + def add_symbol_virtual(self, symbol, filename, lineno): + self.add_symbol_entry(symbol, filename, lineno, virtual) + + def get_symbols_with_pattern(self, pattern): + re_pattern = re.compile(r'{}'.format(pattern)) + found_symbols = {} + for symbol, entries in self.all_symbols.items(): + if not re_pattern.search(symbol): + continue + found_symbols[symbol] = entries + return found_symbols + + def get_warnings_for_choices_selected(self): + warnings = [] + for symbol, entries in self.all_symbols.items(): + if choice not in entries: + continue + if select not in entries: + continue + all_items = [] + all_items += entries.get(select, {}).items() + for filename, linenos in all_items: + for lineno in linenos: + msg = '{} is part of a "choice" and should not be "select"ed'.format(symbol) + warnings.append((filename, lineno, msg)) + return warnings + + def get_warnings_for_legacy_symbols_being_used(self): + warnings = [] + for symbol, entries in self.all_symbols.items(): + if legacy_definition not in entries: + continue + if usage not in entries: + continue + all_items = [] + all_items += entries.get(usage, {}).items() + for filename, linenos in all_items: + for lineno in linenos: + msg = '{} is a legacy symbol and should not be referenced'.format(symbol) + warnings.append((filename, lineno, msg)) + return warnings + + def get_warnings_for_legacy_symbols_being_defined(self): + warnings = [] + for symbol, entries in self.all_symbols.items(): + if legacy_definition not in entries: + continue + if definition not in entries: + continue + all_items = [] + all_items += entries.get(definition, {}).items() + for filename, linenos in all_items: + for lineno in linenos: + msg = '{} is a legacy symbol and should not be redefined'.format(symbol) + warnings.append((filename, lineno, msg)) + return warnings + + def get_warnings_for_symbols_without_definition(self): + warnings = [] + for symbol, entries in self.all_symbols.items(): + if definition in entries: + continue + if legacy_definition in entries: + continue + if br.re_host_symbol.search(symbol): + continue + if br.is_an_optional_symbol_for_a_roofts(symbol): + continue + if symbol in br.symbols_defined_only_at_command_line: + continue + if symbol in br.symbols_defined_only_when_using_br2_external: + continue + if symbol in br.symbols_defined_only_for_barebox_variant: + continue + if symbol in br.symbols_not_defined_for_fake_virtual_packages: + continue + if virtual in entries: + continue + all_items = [] + all_items += entries.get(usage, {}).items() + all_items += entries.get(legacy_usage, {}).items() + all_items += entries.get(usage_in_legacy, {}).items() + for filename, linenos in all_items: + for lineno in linenos: + msg = '{} referenced but not defined'.format(symbol) + warnings.append((filename, lineno, msg)) + return warnings + + def get_warnings_for_symbols_without_usage(self): + warnings = [] + for symbol, entries in self.all_symbols.items(): + if usage in entries: + continue + if usage_in_legacy in entries: + continue + if legacy_usage in entries: + continue + if symbol in br.symbols_used_only_in_source_code: + continue + if symbol in br.symbols_used_only_for_host_variant: + continue + if helper in entries: + continue + if choice in entries: + continue + all_items = [] + all_items += entries.get(definition, {}).items() + all_items += entries.get(legacy_definition, {}).items() + for filename, linenos in all_items: + for lineno in linenos: + msg = '{} defined but not referenced'.format(symbol) + warnings.append((filename, lineno, msg)) + return warnings + + def get_warnings_for_symbols_with_legacy_note_and_no_comment_on_usage(self): + warnings = [] + for symbol, entries in self.all_symbols.items(): + if legacy_note not in entries: + continue + if legacy_usage in entries: + continue + all_items = [] + all_items += entries.get(usage, {}).items() + for filename, linenos in all_items: + for lineno in linenos: + msg = '{} missing "# legacy"'.format(symbol) + warnings.append((filename, lineno, msg)) + return warnings + + def get_warnings_for_symbols_with_legacy_note_and_no_usage(self): + warnings = [] + for symbol, entries in self.all_symbols.items(): + if legacy_note not in entries: + continue + if legacy_usage in entries: + continue + if usage in entries: + continue + all_items = [] + all_items += entries.get(legacy_note, {}).items() + for filename, linenos in all_items: + for lineno in linenos: + msg = '{} not referenced but has a comment stating it is'.format(symbol) + warnings.append((filename, lineno, msg)) + return warnings diff --git a/utils/checksymbolslib/file.py b/utils/checksymbolslib/file.py new file mode 100644 index 00000000..0d3315bd --- /dev/null +++ b/utils/checksymbolslib/file.py @@ -0,0 +1,83 @@ +import re +import subprocess + +import checksymbolslib.br as br +import checksymbolslib.kconfig as kconfig +import checksymbolslib.makefile as makefile + + +file_types = [ + kconfig, + makefile, +] + + +def get_list_of_files_in_the_repo(): + cmd = ['git', 'ls-files'] + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + stdout = p.communicate()[0] + processed_output = [str(line.decode().rstrip()) for line in stdout.splitlines() if line] + return processed_output + + +def get_list_of_files_to_process(all_files): + files_to_process = [] + for f in all_files: + if br.file_belongs_to_an_ignored_diretory(f): + continue + for t in file_types: + if t.check_filename(f): + files_to_process.append(f) + break + return files_to_process + + +def get_list_of_filenames_with_pattern(all_files, exclude_list, pattern): + re_pattern = re.compile(r'{}'.format(pattern)) + matching_filenames = [] + for filename in all_files: + if re_pattern.search(filename): + if filename not in exclude_list: + matching_filenames.append(filename) + return matching_filenames + + +def read_file(filename): + file_content_raw = [] + with open(filename, 'r', errors='surrogateescape') as f: + for lineno, text in enumerate(f.readlines()): + file_content_raw.append([lineno + 1, text]) + return file_content_raw + + +def cleanup_file_content(file_content_raw): + cleaned_up_content = [] + continuation = False + last_line = None + first_lineno = None + for cur_lineno, cur_line in file_content_raw: + if continuation: + line = last_line + cur_line + lineno = first_lineno + else: + line = cur_line + lineno = cur_lineno + continuation = False + last_line = None + first_lineno = None + clean_line = line.rstrip('\n') + if clean_line.endswith('\\'): + continuation = True + last_line = clean_line.rstrip('\\') + first_lineno = lineno + continue + cleaned_up_content.append([lineno, clean_line]) + return cleaned_up_content + + +def populate_db_from_file(db, filename): + file_content_raw = read_file(filename) + file_content_to_process = cleanup_file_content(file_content_raw) + for t in file_types: + if t.check_filename(filename): + t.populate_db(db, filename, file_content_to_process) diff --git a/utils/checksymbolslib/kconfig.py b/utils/checksymbolslib/kconfig.py new file mode 100644 index 00000000..9ad60303 --- /dev/null +++ b/utils/checksymbolslib/kconfig.py @@ -0,0 +1,139 @@ +import os + +import checksymbolslib.br as br + + +def all_symbols_from(line): + clean_line = br.re_comments.sub('', line) + symbols = br.re_kconfig_symbol.findall(clean_line) + return symbols + + +def handle_definition(db, filename, lineno, line, legacy): + for symbol in all_symbols_from(line): + if legacy: + db.add_symbol_legacy_definition(symbol, filename, lineno) + else: + db.add_symbol_definition(symbol, filename, lineno) + + +def handle_usage(db, filename, lineno, line, legacy): + for symbol in all_symbols_from(line): + if legacy: + db.add_symbol_usage_in_legacy(symbol, filename, lineno) + else: + db.add_symbol_usage(symbol, filename, lineno) + + +def handle_default(db, filename, lineno, line, legacy): + if legacy: + handle_usage(db, filename, lineno, line, legacy) + return + if not br.re_kconfig_default_legacy_comment.search(line): + handle_usage(db, filename, lineno, line, legacy) + return + after = br.re_kconfig_default_before_conditional.sub('', line) + for symbol in all_symbols_from(after): + db.add_symbol_legacy_usage(symbol, filename, lineno) + + +def handle_select(db, filename, lineno, line, legacy): + handle_usage(db, filename, lineno, line, legacy) + before = br.re_kconfig_select_conditional.sub('', line) + for symbol in all_symbols_from(before): + db.add_symbol_select(symbol, filename, lineno) + + +line_type_handlers = { + br.re_kconfig_config: handle_definition, + br.re_kconfig_default: handle_default, + br.re_kconfig_depends: handle_usage, + br.re_kconfig_if: handle_usage, + br.re_kconfig_select: handle_select, + br.re_kconfig_source: handle_usage, +} + + +def handle_line(db, filename, lineno, line, legacy): + if not br.re_kconfig_symbol.search(line): + return + + for regexp, line_type_handler in line_type_handlers.items(): + if regexp.search(line): + line_type_handler(db, filename, lineno, line, legacy) + + +def handle_config_helper(db, filename, file_content): + symbol = None + lineno = None + state = 'none' + for cur_lineno, line in file_content: + if state == 'none': + m = br.re_kconfig_config.search(line) + if m is not None: + symbol = m.group(2) + lineno = cur_lineno + state = 'config' + continue + if state == 'config': + if br.re_kconfig_select.search(line): + db.add_symbol_helper(symbol, filename, lineno) + state = 'none' + continue + m = br.re_kconfig_config.search(line) + if m is not None: + symbol = m.group(2) + lineno = cur_lineno + continue + + +def handle_config_choice(db, filename, file_content): + state = 'none' + for lineno, line in file_content: + if state == 'none': + if br.re_kconfig_choice.search(line): + state = 'choice' + continue + if state == 'choice': + if br.re_kconfig_endchoice.search(line): + state = 'none' + continue + m = br.re_kconfig_config.search(line) + if m is not None: + symbol = m.group(2) + db.add_symbol_choice(symbol, filename, lineno) + continue + + +def handle_note(db, filename, file_content): + state = 'none' + for lineno, line in file_content: + if state == 'none': + if br.re_menu.search(line): + state = 'menu' + continue + if state == 'menu': + if br.re_endmenu.search(line): + state = 'none' + continue + m = br.re_legacy_special_comment.search(line) + if m is not None: + symbol = m.group(1) + db.add_symbol_legacy_note(symbol, filename, lineno) + continue + + +def populate_db(db, filename, file_content): + legacy = filename.endswith('.legacy') + for lineno, line in file_content: + handle_line(db, filename, lineno, line, legacy) + handle_config_helper(db, filename, file_content) + handle_config_choice(db, filename, file_content) + if legacy: + handle_note(db, filename, file_content) + + +def check_filename(filename): + if os.path.basename(filename).startswith('Config.'): + return True + return False diff --git a/utils/checksymbolslib/makefile.py b/utils/checksymbolslib/makefile.py new file mode 100644 index 00000000..e3894dd1 --- /dev/null +++ b/utils/checksymbolslib/makefile.py @@ -0,0 +1,100 @@ +import checksymbolslib.br as br + + +def handle_eval(db, filename, lineno, line): + def add_multiple_symbol_usages(package, prefixes=None, suffixes=None): + for prefix in prefixes or ['']: + for sufix in suffixes or ['']: + symbol = prefix + package + sufix + db.add_symbol_usage(symbol, filename, lineno) + + package = br.get_package_from_filename(filename) + if '$(rootfs)' in line: + suffixes = [''] + br.suffixes_not_defined_for_all_rootfs_types + add_multiple_symbol_usages(package, prefixes=[br.rootfs_prefix], suffixes=suffixes) + return + if '$(kernel-module)' in line: + add_multiple_symbol_usages(package, prefixes=[br.package_prefix]) + return + if '$(barebox-package)' in line: + add_multiple_symbol_usages(package, prefixes=[br.boot_prefix], suffixes=br.barebox_infra_suffixes) + return + + if '-package)' not in line: + return + if package == 'LINUX': + # very special case at package/pkg-generic.mk + add_multiple_symbol_usages('BR2_LINUX_KERNEL') + return + + # mimic package/pkg-generic.mk and package/pkg-virtual.mk + if '$(virtual-' in line: + prefixes = ['BR2_PACKAGE_PROVIDES_', 'BR2_PACKAGE_HAS_'] + if filename.startswith('toolchain/'): + prefix = br.toolchain_prefix + else: + prefix = br.package_prefix + symbol = prefix + package + db.add_symbol_virtual(symbol, filename, lineno) + prefixes.append(prefix) + elif '$(host-virtual-' in line: + prefixes = ['BR2_PACKAGE_HOST_', 'BR2_PACKAGE_PROVIDES_HOST_', 'BR2_PACKAGE_HAS_HOST_'] + elif '$(host-' in line: + prefixes = ['BR2_PACKAGE_HOST_'] + elif filename.startswith('boot/'): + prefixes = [br.boot_prefix] + elif filename.startswith('toolchain/'): + prefixes = [br.toolchain_prefix] + elif '$(toolchain-' in line: + prefixes = [br.toolchain_prefix] + else: + prefixes = [br.package_prefix] + + add_multiple_symbol_usages(package, prefixes=prefixes) + + +def handle_definition(db, filename, lineno, line, legacy): + symbols = br.re_makefile_symbol_attribution.findall(line) + symbols += br.re_makefile_symbol_export.findall(line) + for symbol in symbols: + if legacy: + db.add_symbol_legacy_definition(symbol, filename, lineno) + else: + db.add_symbol_definition(symbol, filename, lineno) + + +def handle_usage(db, filename, lineno, line, legacy): + if br.re_makefile_eval.search(line): + handle_eval(db, filename, lineno, line) + return + + symbols = br.re_makefile_symbol_usage.findall(line) + for symbol in symbols: + if legacy: + db.add_symbol_usage_in_legacy(symbol, filename, lineno) + else: + db.add_symbol_usage(symbol, filename, lineno) + + +def populate_db(db, filename, file_content): + legacy = filename.endswith('.legacy') + for lineno, raw_line in file_content: + line = br.re_comments.sub('', raw_line) + handle_definition(db, filename, lineno, line, legacy) + handle_usage(db, filename, lineno, line, legacy) + + +def check_filename(filename): + if filename.endswith('.mk'): + return True + if filename.endswith('.mk.in'): + return True + if filename.startswith('arch/arch.mk.'): + return True + if filename in [ + 'Makefile', + 'Makefile.legacy', + 'package/Makefile.in' + ]: + return True + return False diff --git a/utils/checksymbolslib/test_db.py b/utils/checksymbolslib/test_db.py new file mode 100644 index 00000000..15576fa8 --- /dev/null +++ b/utils/checksymbolslib/test_db.py @@ -0,0 +1,286 @@ +import checksymbolslib.db as m + + +def test_empty_db(): + db = m.DB() + assert str(db) == '{}' + + +def test_one_definition(): + db = m.DB() + db.add_symbol_definition('BR2_foo', 'foo/Config.in', 7) + assert str(db) == str({ + 'BR2_foo': {'definition': {'foo/Config.in': [7]}}, + }) + + +def test_three_definitions(): + db = m.DB() + db.add_symbol_definition('BR2_foo', 'foo/Config.in', 7) + db.add_symbol_definition('BR2_foo', 'foo/Config.in', 9) + db.add_symbol_definition('BR2_bar', 'bar/Config.in', 5) + assert str(db) == str({ + 'BR2_foo': {'definition': {'foo/Config.in': [7, 9]}}, + 'BR2_bar': {'definition': {'bar/Config.in': [5]}}, + }) + + +def test_definition_and_usage(): + db = m.DB() + db.add_symbol_definition('BR2_foo', 'foo/Config.in', 7) + db.add_symbol_usage('BR2_foo', 'foo/Config.in', 9) + assert str(db) == str({ + 'BR2_foo': {'definition': {'foo/Config.in': [7]}, 'normal usage': {'foo/Config.in': [9]}}, + }) + + +def test_all_entry_types(): + db = m.DB() + db.add_symbol_choice('BR2_foo', 'foo/Config.in', 7) + db.add_symbol_definition('BR2_foo', 'foo/Config.in', 7) + db.add_symbol_definition('BR2_bar', 'bar/Config.in', 700) + db.add_symbol_helper('BR2_bar', 'bar/Config.in', 700) + db.add_symbol_legacy_definition('BR2_baz', 'Config.in.legacy', 7000) + db.add_symbol_legacy_note('BR2_baz', 'Config.in.legacy', 7001) + db.add_symbol_legacy_usage('BR2_bar', 'Config.in.legacy', 7001) + db.add_symbol_select('BR2_bar', 'Config.in.legacy', 7001) + db.add_symbol_usage('BR2_foo', 'foo/Config.in', 9) + db.add_symbol_usage_in_legacy('BR2_bar', 'Config.in.legacy', 9) + db.add_symbol_virtual('BR2_foo', 'foo/Config.in', 7) + assert str(db) == str({ + 'BR2_foo': { + 'part of a choice': {'foo/Config.in': [7]}, + 'definition': {'foo/Config.in': [7]}, + 'normal usage': {'foo/Config.in': [9]}, + 'virtual': {'foo/Config.in': [7]}}, + 'BR2_bar': { + 'definition': {'bar/Config.in': [700]}, + 'possible config helper': {'bar/Config.in': [700]}, + 'legacy usage': {'Config.in.legacy': [7001]}, + 'selected': {'Config.in.legacy': [7001]}, + 'usage inside legacy': {'Config.in.legacy': [9]}}, + 'BR2_baz': { + 'legacy definition': {'Config.in.legacy': [7000]}, + 'legacy note': {'Config.in.legacy': [7001]}}, + }) + + +def test_get_symbols_with_pattern(): + db = m.DB() + db.add_symbol_definition('BR2_foo', 'foo/Config.in', 7) + db.add_symbol_usage('BR2_foo', 'foo/Config.in', 9) + db.add_symbol_definition('BR2_bar', 'bar/Config.in', 5) + assert str(db) == str({ + 'BR2_foo': {'definition': {'foo/Config.in': [7]}, 'normal usage': {'foo/Config.in': [9]}}, + 'BR2_bar': {'definition': {'bar/Config.in': [5]}}, + }) + symbols = db.get_symbols_with_pattern('foo') + assert str(symbols) == str({ + 'BR2_foo': {'definition': {'foo/Config.in': [7]}, 'normal usage': {'foo/Config.in': [9]}}, + }) + symbols = db.get_symbols_with_pattern('FOO') + assert str(symbols) == str({ + }) + symbols = db.get_symbols_with_pattern('foo|FOO') + assert str(symbols) == str({ + 'BR2_foo': {'definition': {'foo/Config.in': [7]}, 'normal usage': {'foo/Config.in': [9]}}, + }) + symbols = db.get_symbols_with_pattern('^foo') + assert str(symbols) == str({ + }) + symbols = db.get_symbols_with_pattern('foo|bar') + assert str(symbols) == str({ + 'BR2_foo': {'definition': {'foo/Config.in': [7]}, 'normal usage': {'foo/Config.in': [9]}}, + 'BR2_bar': {'definition': {'bar/Config.in': [5]}}, + }) + + +def test_get_warnings_for_choices_selected(): + db = m.DB() + db.add_symbol_choice('BR2_foo', 'foo/Config.in', 1) + db.add_symbol_choice('BR2_bar', 'bar/Config.in', 1) + db.add_symbol_select('BR2_foo', 'bar/Config.in', 2) + assert str(db) == str({ + 'BR2_foo': {'part of a choice': {'foo/Config.in': [1]}, 'selected': {'bar/Config.in': [2]}}, + 'BR2_bar': {'part of a choice': {'bar/Config.in': [1]}}, + }) + warnings = db.get_warnings_for_choices_selected() + assert warnings == [ + ('bar/Config.in', 2, 'BR2_foo is part of a "choice" and should not be "select"ed'), + ] + + +def test_get_warnings_for_legacy_symbols_being_used(): + db = m.DB() + db.add_symbol_legacy_definition('BR2_foo', 'Config.in.legacy', 1) + db.add_symbol_usage('BR2_foo', 'bar/Config.in', 2) + db.add_symbol_legacy_definition('BR2_bar', 'Config.in.legacy', 10) + db.add_symbol_usage_in_legacy('BR2_bar', 'Config.in.legacy', 11) + assert str(db) == str({ + 'BR2_foo': {'legacy definition': {'Config.in.legacy': [1]}, 'normal usage': {'bar/Config.in': [2]}}, + 'BR2_bar': {'legacy definition': {'Config.in.legacy': [10]}, 'usage inside legacy': {'Config.in.legacy': [11]}}, + }) + warnings = db.get_warnings_for_legacy_symbols_being_used() + assert warnings == [ + ('bar/Config.in', 2, 'BR2_foo is a legacy symbol and should not be referenced'), + ] + + +def test_get_warnings_for_legacy_symbols_being_defined(): + db = m.DB() + db.add_symbol_legacy_definition('BR2_foo', 'Config.in.legacy', 1) + db.add_symbol_legacy_definition('BR2_bar', 'Config.in.legacy', 10) + db.add_symbol_definition('BR2_foo', 'foo/Config.in', 7) + db.add_symbol_definition('BR2_foo', 'foo/Config.in', 8) + assert str(db) == str({ + 'BR2_foo': {'legacy definition': {'Config.in.legacy': [1]}, 'definition': {'foo/Config.in': [7, 8]}}, + 'BR2_bar': {'legacy definition': {'Config.in.legacy': [10]}}, + }) + warnings = db.get_warnings_for_legacy_symbols_being_defined() + assert warnings == [ + ('foo/Config.in', 7, 'BR2_foo is a legacy symbol and should not be redefined'), + ('foo/Config.in', 8, 'BR2_foo is a legacy symbol and should not be redefined'), + ] + + +def test_get_warnings_for_symbols_without_definition(): + db = m.DB() + db.add_symbol_definition('BR2_foo', 'foo/Config.in', 7) + db.add_symbol_legacy_definition('BR2_bar', 'Config.in.legacy', 10) + db.add_symbol_virtual('BR2_baz', 'baz/Config.in', 7) + db.add_symbol_usage('BR2_foo', 'file', 1) + db.add_symbol_usage('BR2_bar', 'file', 1) + db.add_symbol_usage('BR2_baz', 'file', 1) + db.add_symbol_usage('BR2_undef1', 'file', 1) + db.add_symbol_legacy_usage('BR2_undef2', 'file', 2) + db.add_symbol_usage_in_legacy('BR2_undef3', 'file', 3) + db.add_symbol_usage('BR2_undef3', 'another', 1) + db.add_symbol_legacy_usage('BR2_undef3', 'another', 2) + db.add_symbol_usage('BR2_PACKAGE_HOST_undef', 'file', 1) + db.add_symbol_usage('BR2_PACKAGE_HAS_HOST_undef', 'file', 1) + db.add_symbol_usage('BR2_TARGET_ROOTFS_undef_XZ', 'file', 1) + db.add_symbol_usage('BR2_GRAPH_ALT', 'file', 1) + db.add_symbol_usage('BR2_EXTERNAL', 'file', 1) + db.add_symbol_usage('BR2_TARGET_BAREBOX_AUX_BAREBOXENV', 'file', 1) + db.add_symbol_usage('BR2_PACKAGE_HAS_TOOLCHAIN_BUILDROOT', 'file', 1) + assert str(db) == str({ + 'BR2_foo': {'definition': {'foo/Config.in': [7]}, 'normal usage': {'file': [1]}}, + 'BR2_bar': {'legacy definition': {'Config.in.legacy': [10]}, 'normal usage': {'file': [1]}}, + 'BR2_baz': {'virtual': {'baz/Config.in': [7]}, 'normal usage': {'file': [1]}}, + 'BR2_undef1': {'normal usage': {'file': [1]}}, + 'BR2_undef2': {'legacy usage': {'file': [2]}}, + 'BR2_undef3': {'usage inside legacy': {'file': [3]}, 'normal usage': {'another': [1]}, 'legacy usage': {'another': [2]}}, + 'BR2_PACKAGE_HOST_undef': {'normal usage': {'file': [1]}}, + 'BR2_PACKAGE_HAS_HOST_undef': {'normal usage': {'file': [1]}}, + 'BR2_TARGET_ROOTFS_undef_XZ': {'normal usage': {'file': [1]}}, + 'BR2_GRAPH_ALT': {'normal usage': {'file': [1]}}, + 'BR2_EXTERNAL': {'normal usage': {'file': [1]}}, + 'BR2_TARGET_BAREBOX_AUX_BAREBOXENV': {'normal usage': {'file': [1]}}, + 'BR2_PACKAGE_HAS_TOOLCHAIN_BUILDROOT': {'normal usage': {'file': [1]}}, + }) + warnings = db.get_warnings_for_symbols_without_definition() + assert warnings == [ + ('file', 1, 'BR2_undef1 referenced but not defined'), + ('file', 2, 'BR2_undef2 referenced but not defined'), + ('another', 1, 'BR2_undef3 referenced but not defined'), + ('another', 2, 'BR2_undef3 referenced but not defined'), + ('file', 3, 'BR2_undef3 referenced but not defined'), + ] + + +def test_get_warnings_for_symbols_without_usage(): + db = m.DB() + db.add_symbol_definition('BR2_a', 'a/Config.in', 1) + db.add_symbol_definition('BR2_a', 'a/Config.in', 2) + db.add_symbol_usage('BR2_a', 'file', 1) + db.add_symbol_usage('BR2_a', 'file', 2) + db.add_symbol_definition('BR2_b', 'b/Config.in', 2) + db.add_symbol_usage_in_legacy('BR2_b', 'file', 1) + db.add_symbol_definition('BR2_c', 'c/Config.in', 2) + db.add_symbol_legacy_usage('BR2_c', 'file', 1) + db.add_symbol_definition('BR2_USE_CCACHE', 'file', 1) + db.add_symbol_definition('BR2_PACKAGE_SKELETON', 'file', 1) + db.add_symbol_definition('BR2_d', 'd/Config.in', 2) + db.add_symbol_helper('BR2_d', 'd/Config.in', 2) + db.add_symbol_definition('BR2_e', 'e/Config.in', 2) + db.add_symbol_choice('BR2_e', 'e/Config.in', 2) + db.add_symbol_definition('BR2_f', 'f/Config.in', 2) + db.add_symbol_definition('BR2_g', 'g/Config.in', 2) + db.add_symbol_definition('BR2_g', 'g/Config.in', 3) + db.add_symbol_legacy_definition('BR2_h', 'Config.in.legacy', 1) + db.add_symbol_usage('BR2_h', 'file', 2) + db.add_symbol_usage('BR2_h', 'file', 3) + db.add_symbol_legacy_definition('BR2_i', 'Config.in.legacy', 2) + db.add_symbol_usage_in_legacy('BR2_i', 'file', 2) + db.add_symbol_legacy_definition('BR2_j', 'Config.in.legacy', 2) + db.add_symbol_legacy_usage('BR2_j', 'file', 2) + db.add_symbol_legacy_definition('BR2_k', 'Config.in.legacy', 2) + db.add_symbol_usage('BR2_k', 'file', 5) + db.add_symbol_usage_in_legacy('BR2_k', 'file', 6) + db.add_symbol_legacy_usage('BR2_k', 'file', 7) + db.add_symbol_legacy_definition('BR2_l', 'Config.in.legacy', 2) + assert str(db) == str({ + 'BR2_a': {'definition': {'a/Config.in': [1, 2]}, 'normal usage': {'file': [1, 2]}}, + 'BR2_b': {'definition': {'b/Config.in': [2]}, 'usage inside legacy': {'file': [1]}}, + 'BR2_c': {'definition': {'c/Config.in': [2]}, 'legacy usage': {'file': [1]}}, + 'BR2_USE_CCACHE': {'definition': {'file': [1]}}, + 'BR2_PACKAGE_SKELETON': {'definition': {'file': [1]}}, + 'BR2_d': {'definition': {'d/Config.in': [2]}, 'possible config helper': {'d/Config.in': [2]}}, + 'BR2_e': {'definition': {'e/Config.in': [2]}, 'part of a choice': {'e/Config.in': [2]}}, + 'BR2_f': {'definition': {'f/Config.in': [2]}}, + 'BR2_g': {'definition': {'g/Config.in': [2, 3]}}, + 'BR2_h': {'legacy definition': {'Config.in.legacy': [1]}, 'normal usage': {'file': [2, 3]}}, + 'BR2_i': {'legacy definition': {'Config.in.legacy': [2]}, 'usage inside legacy': {'file': [2]}}, + 'BR2_j': {'legacy definition': {'Config.in.legacy': [2]}, 'legacy usage': {'file': [2]}}, + 'BR2_k': { + 'legacy definition': {'Config.in.legacy': [2]}, + 'normal usage': {'file': [5]}, + 'usage inside legacy': {'file': [6]}, + 'legacy usage': {'file': [7]}}, + 'BR2_l': {'legacy definition': {'Config.in.legacy': [2]}}, + }) + warnings = db.get_warnings_for_symbols_without_usage() + assert warnings == [ + ('f/Config.in', 2, 'BR2_f defined but not referenced'), + ('g/Config.in', 2, 'BR2_g defined but not referenced'), + ('g/Config.in', 3, 'BR2_g defined but not referenced'), + ('Config.in.legacy', 2, 'BR2_l defined but not referenced'), + ] + + +def test_get_warnings_for_symbols_with_legacy_note_and_no_comment_on_usage(): + db = m.DB() + db.add_symbol_legacy_note('BR2_foo', 'Config.in.legacy', 1) + db.add_symbol_legacy_usage('BR2_foo', 'package/bar/Config.in', 2) + db.add_symbol_legacy_note('BR2_baz', 'Config.in.legacy', 7001) + db.add_symbol_usage('BR2_baz', 'package/foo/Config.in', 1) + assert str(db) == str({ + 'BR2_foo': {'legacy note': {'Config.in.legacy': [1]}, 'legacy usage': {'package/bar/Config.in': [2]}}, + 'BR2_baz': {'legacy note': {'Config.in.legacy': [7001]}, 'normal usage': {'package/foo/Config.in': [1]}}, + }) + warnings = db.get_warnings_for_symbols_with_legacy_note_and_no_comment_on_usage() + assert warnings == [ + ('package/foo/Config.in', 1, 'BR2_baz missing "# legacy"'), + ] + + +def test_get_warnings_for_symbols_with_legacy_note_and_no_usage(): + db = m.DB() + db.add_symbol_legacy_note('BR2_foo', 'Config.in.legacy', 1) + db.add_symbol_legacy_usage('BR2_foo', 'package/bar/Config.in', 2) + db.add_symbol_legacy_note('BR2_bar', 'Config.in.legacy', 1) + db.add_symbol_usage_in_legacy('BR2_bar', 'Config.in.legacy', 7001) + db.add_symbol_legacy_note('BR2_baz', 'Config.in.legacy', 7001) + db.add_symbol_legacy_note('BR2_no_comment', 'Config.in.legacy', 1) + db.add_symbol_usage('BR2_no_comment', 'package/bar/Config.in', 2) + assert str(db) == str({ + 'BR2_foo': {'legacy note': {'Config.in.legacy': [1]}, 'legacy usage': {'package/bar/Config.in': [2]}}, + 'BR2_bar': {'legacy note': {'Config.in.legacy': [1]}, 'usage inside legacy': {'Config.in.legacy': [7001]}}, + 'BR2_baz': {'legacy note': {'Config.in.legacy': [7001]}}, + 'BR2_no_comment': {'legacy note': {'Config.in.legacy': [1]}, 'normal usage': {'package/bar/Config.in': [2]}}, + }) + warnings = db.get_warnings_for_symbols_with_legacy_note_and_no_usage() + assert warnings == [ + ('Config.in.legacy', 1, 'BR2_bar not referenced but has a comment stating it is'), + ('Config.in.legacy', 7001, 'BR2_baz not referenced but has a comment stating it is'), + ] diff --git a/utils/checksymbolslib/test_file.py b/utils/checksymbolslib/test_file.py new file mode 100644 index 00000000..3b4ee108 --- /dev/null +++ b/utils/checksymbolslib/test_file.py @@ -0,0 +1,152 @@ +import os +import pytest +import tempfile +import checksymbolslib.file as m + + +def test_get_list_of_files_in_the_repo(): + all_files = m.get_list_of_files_in_the_repo() + assert 'Makefile' in all_files + assert 'package/Config.in' in all_files + assert len(all_files) > 1000 + + +get_list_of_files_to_process = [ + ('unknown file type', + ['a/file/Config.in', + 'another/file.mk', + 'unknown/file/type'], + ['a/file/Config.in', + 'another/file.mk']), + ('runtime test infra fixtures', + ['a/file/Config.in', + 'support/testing/a/broken/Config.in', + 'another/file.mk'], + ['a/file/Config.in', + 'another/file.mk']), + ] + + +@pytest.mark.parametrize('testname,all_files,expected', get_list_of_files_to_process) +def test_get_list_of_files_to_process(testname, all_files, expected): + files_to_process = m.get_list_of_files_to_process(all_files) + assert files_to_process == expected + + +get_list_of_filenames_with_pattern = [ + ('ignored directories', + ['a/file/Config.in', + 'support/testing/a/broken/file/Config.in', + 'not/found.mk', + 'another/file.mk'], + ['a/file/Config.in', + 'not/found.mk', + 'another/file.mk'], + 'file', + ['support/testing/a/broken/file/Config.in']), + ('processed files', + ['a/file/Config.in', + 'not/found.mk', + 'another/file.mk'], + [], + 'file', + ['a/file/Config.in', + 'another/file.mk']), + ('case sensitive', + ['a/file/Config.in', + 'not/found.mk', + 'another/file.mk'], + [], + 'FILE', + []), + ('or', + ['a/file/Config.in', + 'not/found.mk', + 'another/file.mk'], + [], + 'file|FILE', + ['a/file/Config.in', + 'another/file.mk']), + ('complex regexp', + ['a/file/Config.in', + 'not/found.mk', + 'another/file.mk'], + [], + '^n[oO]+t.*mk$', + ['not/found.mk']), + ] + + +@pytest.mark.parametrize('testname,all_files,files_to_process,pattern,expected', get_list_of_filenames_with_pattern) +def test_get_list_of_filenames_with_pattern(testname, all_files, files_to_process, pattern, expected): + files_to_process = m.get_list_of_filenames_with_pattern(all_files, files_to_process, pattern) + assert files_to_process == expected + + +read_file = [ + ('indent', + 'file1', + ' content1\n' + '\t# comment1', + [[1, ' content1\n'], + [2, '\t# comment1']]), + ('trailing space', + 'file2', + 'content2 \n' + '# comment2\t\n', + [[1, 'content2 \n'], + [2, '# comment2\t\n']]), + ('empty line', + 'file3', + '\n' + '\n', + [[1, '\n'], + [2, '\n']]), + ('missing newline at EOF', + 'file4', + '\n' + ' text\t', + [[1, '\n'], + [2, ' text\t']]), + ] + + +@pytest.mark.parametrize('testname,filename,content,,expected', read_file) +def test_read_file(testname, filename, content, expected): + with tempfile.TemporaryDirectory(suffix='-checksymbolslib-test-file') as workdir: + full_filename = os.path.join(workdir, filename) + with open(full_filename, 'wb') as f: + f.write(content.encode()) + read_file_content = m.read_file(full_filename) + assert read_file_content == expected + + +cleanup_file_content = [ + ('empty file', + [], + []), + ('empty line', + [[5, '\n']], + [[5, '']]), + ('trailing space', + [[3, ' \n']], + [[3, ' ']]), + ('trailing tab', + [[3, '\t\n']], + [[3, '\t']]), + ('1 continuation', + [[1, 'foo \\\n'], + [2, 'bar\n']], + [[1, 'foo bar']]), + ('2 continuations', + [[1, 'foo \\\n'], + [2, 'bar \\\n'], + [3, 'baz\n']], + [[1, 'foo bar baz']]), + ] + + +@pytest.mark.parametrize('testname,file_content_raw,expected', cleanup_file_content) +def test_cleanup_file_content(testname, file_content_raw, expected): + cleaned_up_content = m.cleanup_file_content(file_content_raw) + assert cleaned_up_content == expected diff --git a/utils/checksymbolslib/test_kconfig.py b/utils/checksymbolslib/test_kconfig.py new file mode 100644 index 00000000..ab2008df --- /dev/null +++ b/utils/checksymbolslib/test_kconfig.py @@ -0,0 +1,438 @@ +import pytest +from unittest.mock import Mock +from unittest.mock import call +from checksymbolslib.test_util import assert_db_calls +import checksymbolslib.kconfig as m + + +all_symbols_from = [ + ('no prefix', + 'config PACKAGE_FOO', + []), + ('simple', + 'config BR2_PACKAGE_FOO', + ['BR2_PACKAGE_FOO']), + ('ignore comment', + 'config BR2_PACKAGE_FOO # BR2_PACKAGE_BAR', + ['BR2_PACKAGE_FOO']), + ('ignore whitespace', + '\tconfig BR2_PACKAGE_FOO\t # BR2_PACKAGE_BAR', + ['BR2_PACKAGE_FOO']), + ('2 occurrences', + '\tdefault BR2_PACKAGE_FOO_BAR if BR2_PACKAGE_FOO_BAR != ""', + ['BR2_PACKAGE_FOO_BAR', 'BR2_PACKAGE_FOO_BAR']), + ] + + +@pytest.mark.parametrize('testname,line,expected', all_symbols_from) +def test_all_symbols_from(testname, line, expected): + symbols = m.all_symbols_from(line) + assert symbols == expected + + +handle_definition = [ + ('config', + 'package/foo/Config.in', + 5, + 'config BR2_PACKAGE_FOO', + False, + {'add_symbol_definition': [call('BR2_PACKAGE_FOO', 'package/foo/Config.in', 5)]}), + ('ignore comment', + 'package/foo/Config.in', + 5, + 'config BR2_PACKAGE_FOO # BR2_PACKAGE_BAR', + False, + {'add_symbol_definition': [call('BR2_PACKAGE_FOO', 'package/foo/Config.in', 5)]}), + ('ignore whitespace', + 'package/foo/Config.in', + 5, + '\tconfig BR2_PACKAGE_FOO\t # BR2_PACKAGE_BAR', + False, + {'add_symbol_definition': [call('BR2_PACKAGE_FOO', 'package/foo/Config.in', 5)]}), + ('menuconfig', + 'package/gd/Config.in', + 1, + 'menuconfig BR2_PACKAGE_GD', + False, + {'add_symbol_definition': [call('BR2_PACKAGE_GD', 'package/gd/Config.in', 1)]}), + ('menu', + 'package/Config.in', + 100, + 'menu "Database"', + False, + {}), + ('legacy config', + 'Config.in.legacy', + 50, + 'config BR2_PACKAGE_FOO', + True, + {'add_symbol_legacy_definition': [call('BR2_PACKAGE_FOO', 'Config.in.legacy', 50)]}), + ] + + +@pytest.mark.parametrize('testname,filename,lineno,line,legacy,expected_calls', handle_definition) +def test_handle_definition(testname, filename, lineno, line, legacy, expected_calls): + db = Mock() + m.handle_definition(db, filename, lineno, line, legacy) + assert_db_calls(db, expected_calls) + + +handle_usage = [ + ('default with comparison', + 'package/openblas/Config.in', + 60, + '\tdefault y if BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET != ""', + False, + {'add_symbol_usage': [call('BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET', 'package/openblas/Config.in', 60)]}), + ('default with logical operators', + 'toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options', + 47, + '\tdefault y if BR2_i386 && !BR2_x86_i486 && !BR2_x86_i586 && !BR2_x86_x1000 && !BR2_x86_pentium_mmx && !BR2_x86_geode ' + '&& !BR2_x86_c3 && !BR2_x86_winchip_c6 && !BR2_x86_winchip2', + False, + {'add_symbol_usage': [ + call('BR2_i386', 'toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options', 47), + call('BR2_x86_c3', 'toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options', 47), + call('BR2_x86_geode', 'toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options', 47), + call('BR2_x86_i486', 'toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options', 47), + call('BR2_x86_i586', 'toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options', 47), + call('BR2_x86_pentium_mmx', 'toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options', 47), + call('BR2_x86_winchip2', 'toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options', 47), + call('BR2_x86_winchip_c6', 'toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options', 47), + call('BR2_x86_x1000', 'toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options', 47)]}), + ('legacy depends on', + 'Config.in.legacy', + 3000, + '\tdepends on BR2_LINUX_KERNEL', + True, + {'add_symbol_usage_in_legacy': [call('BR2_LINUX_KERNEL', 'Config.in.legacy', 3000)]}), + ('legacy if', + 'Config.in.legacy', + 97, + 'if !BR2_SKIP_LEGACY', + True, + {'add_symbol_usage_in_legacy': [call('BR2_SKIP_LEGACY', 'Config.in.legacy', 97)]}), + ('source', + 'system/Config.in', + 152, + 'source "$BR2_BASE_DIR/.br2-external.in.init"', + False, + {'add_symbol_usage': [call('BR2_BASE_DIR', 'system/Config.in', 152)]}), + ] + + +@pytest.mark.parametrize('testname,filename,lineno,line,legacy,expected_calls', handle_usage) +def test_handle_usage(testname, filename, lineno, line, legacy, expected_calls): + db = Mock() + m.handle_usage(db, filename, lineno, line, legacy) + assert_db_calls(db, expected_calls) + + +handle_default = [ + ('default with comparison', + 'package/openblas/Config.in', + 60, + '\tdefault y if BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET != ""', + False, + {'add_symbol_usage': [call('BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET', 'package/openblas/Config.in', 60)]}), + ('default with logical operators', + 'toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options', + 47, + '\tdefault y if BR2_i386 && !BR2_x86_i486 && !BR2_x86_i586 && !BR2_x86_x1000 && !BR2_x86_pentium_mmx && !BR2_x86_geode ' + '&& !BR2_x86_c3 && !BR2_x86_winchip_c6 && !BR2_x86_winchip2', + False, + {'add_symbol_usage': [ + call('BR2_i386', 'toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options', 47), + call('BR2_x86_c3', 'toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options', 47), + call('BR2_x86_geode', 'toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options', 47), + call('BR2_x86_i486', 'toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options', 47), + call('BR2_x86_i586', 'toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options', 47), + call('BR2_x86_pentium_mmx', 'toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options', 47), + call('BR2_x86_winchip2', 'toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options', 47), + call('BR2_x86_winchip_c6', 'toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options', 47), + call('BR2_x86_x1000', 'toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options', 47)]}), + ('legacy default', + 'Config.in.legacy', + 3000, + 'default y if BR2_PACKAGE_REFPOLICY_POLICY_VERSION != ""', + True, + {'add_symbol_usage_in_legacy': [call('BR2_PACKAGE_REFPOLICY_POLICY_VERSION', 'Config.in.legacy', 3000)]}), + ('legacy handling on package', + 'package/uboot-tools/Config.in.host', + 105, + '\tdefault BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE if BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE != "" # legacy', + False, + {'add_symbol_legacy_usage': [call('BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE', 'package/uboot-tools/Config.in.host', 105)]}), + ('default on package', + 'package/uboot-tools/Config.in.host', + 105, + '\tdefault BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE if BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE != ""', + False, + {'add_symbol_usage': [ + call('BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE', 'package/uboot-tools/Config.in.host', 105), + call('BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE', 'package/uboot-tools/Config.in.host', 105)]}), + ] + + +@pytest.mark.parametrize('testname,filename,lineno,line,legacy,expected_calls', handle_default) +def test_handle_default(testname, filename, lineno, line, legacy, expected_calls): + db = Mock() + m.handle_default(db, filename, lineno, line, legacy) + assert_db_calls(db, expected_calls) + + +handle_select = [ + ('select with comparison', + 'package/bcusdk/Config.in', + 6, + '\tselect BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL', + False, + {'add_symbol_select': [call('BR2_PACKAGE_ARGP_STANDALONE', 'package/bcusdk/Config.in', 6)], + 'add_symbol_usage': [ + call('BR2_PACKAGE_ARGP_STANDALONE', 'package/bcusdk/Config.in', 6), + call('BR2_TOOLCHAIN_USES_UCLIBC', 'package/bcusdk/Config.in', 6), + call('BR2_TOOLCHAIN_USES_MUSL', 'package/bcusdk/Config.in', 6)]}), + ('legacy select', + 'Config.in.legacy', + 100, + '\tselect BR2_PACKAGE_WPA_SUPPLICANT_DBUS if BR2_TOOLCHAIN_HAS_THREADS', + True, + {'add_symbol_select': [call('BR2_PACKAGE_WPA_SUPPLICANT_DBUS', 'Config.in.legacy', 100)], + 'add_symbol_usage_in_legacy': [ + call('BR2_PACKAGE_WPA_SUPPLICANT_DBUS', 'Config.in.legacy', 100), + call('BR2_TOOLCHAIN_HAS_THREADS', 'Config.in.legacy', 100)]}), + ] + + +@pytest.mark.parametrize('testname,filename,lineno,line,legacy,expected_calls', handle_select) +def test_handle_select(testname, filename, lineno, line, legacy, expected_calls): + db = Mock() + m.handle_select(db, filename, lineno, line, legacy) + assert_db_calls(db, expected_calls) + + +handle_line = [ + ('select with comparison', + 'package/bcusdk/Config.in', + 6, + '\tselect BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL', + False, + {'add_symbol_select': [call('BR2_PACKAGE_ARGP_STANDALONE', 'package/bcusdk/Config.in', 6)], + 'add_symbol_usage': [ + call('BR2_PACKAGE_ARGP_STANDALONE', 'package/bcusdk/Config.in', 6), + call('BR2_TOOLCHAIN_USES_UCLIBC', 'package/bcusdk/Config.in', 6), + call('BR2_TOOLCHAIN_USES_MUSL', 'package/bcusdk/Config.in', 6)]}), + ('legacy select', + 'Config.in.legacy', + 100, + '\tselect BR2_PACKAGE_WPA_SUPPLICANT_DBUS if BR2_TOOLCHAIN_HAS_THREADS', + True, + {'add_symbol_select': [call('BR2_PACKAGE_WPA_SUPPLICANT_DBUS', 'Config.in.legacy', 100)], + 'add_symbol_usage_in_legacy': [ + call('BR2_PACKAGE_WPA_SUPPLICANT_DBUS', 'Config.in.legacy', 100), + call('BR2_TOOLCHAIN_HAS_THREADS', 'Config.in.legacy', 100)]}), + ('comment with symbol', + 'Config.in', + 6, + '\tselect # BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL', + False, + {}), + ('comment', + 'Config.in', + 6, + '# just a comment', + False, + {}), + ] + + +@pytest.mark.parametrize('testname,filename,lineno,line,legacy,expected_calls', handle_line) +def test_handle_line(testname, filename, lineno, line, legacy, expected_calls): + db = Mock() + m.handle_line(db, filename, lineno, line, legacy) + assert_db_calls(db, expected_calls) + + +handle_config_helper = [ + ('no select', + 'package/foo/Config.in', + [[5, 'config BR2_PACKAGE_FOO']], + {}), + ('select', + 'package/foo/Config.in', + [[5, 'config BR2_PACKAGE_FOO'], + [6, '\tselect BR2_PACKAGE_BAR']], + {'add_symbol_helper': [call('BR2_PACKAGE_FOO', 'package/foo/Config.in', 5)]}), + ('ignore comment', + 'package/foo/Config.in', + [[5, 'config BR2_PACKAGE_FOO # BR2_PACKAGE_BAR'], + [6, '\tselect BR2_PACKAGE_BAR # BR2_PACKAGE_FOO']], + {'add_symbol_helper': [call('BR2_PACKAGE_FOO', 'package/foo/Config.in', 5)]}), + ('correct symbol', + 'package/foo/Config.in', + [[5, 'config BR2_PACKAGE_FOO'], + [6, 'config BR2_PACKAGE_BAR'], + [7, '\tselect BR2_PACKAGE_BAZ']], + {'add_symbol_helper': [call('BR2_PACKAGE_BAR', 'package/foo/Config.in', 6)]}), + ('2 selects', + 'package/foo/Config.in', + [[5, 'config BR2_PACKAGE_FOO'], + [6, '\tselect BR2_PACKAGE_BAR'], + [7, ' select BR2_PACKAGE_BAR']], + {'add_symbol_helper': [call('BR2_PACKAGE_FOO', 'package/foo/Config.in', 5)]}), + ] + + +@pytest.mark.parametrize('testname,filename,file_content,expected_calls', handle_config_helper) +def test_handle_config_helper(testname, filename, file_content, expected_calls): + db = Mock() + m.handle_config_helper(db, filename, file_content) + assert_db_calls(db, expected_calls) + + +handle_config_choice = [ + ('no choice', + 'package/foo/Config.in', + [[5, 'config BR2_PACKAGE_FOO']], + {}), + ('after', + 'package/foo/Config.in', + [[3, 'choice'], + [4, '\tprompt "your choice"'], + [5, 'config BR2_PACKAGE_FOO'], + [6, 'config BR2_PACKAGE_BAR'], + [10, 'endchoice'], + [19, 'config BR2_PACKAGE_BAZ']], + {'add_symbol_choice': [ + call('BR2_PACKAGE_FOO', 'package/foo/Config.in', 5), + call('BR2_PACKAGE_BAR', 'package/foo/Config.in', 6)]}), + ('before', + 'package/foo/Config.in', + [[1, 'config BR2_PACKAGE_BAZ'], + [3, 'choice'], + [4, '\tprompt "your choice"'], + [5, 'config BR2_PACKAGE_FOO'], + [6, 'config BR2_PACKAGE_BAR'], + [10, 'endchoice']], + {'add_symbol_choice': [ + call('BR2_PACKAGE_FOO', 'package/foo/Config.in', 5), + call('BR2_PACKAGE_BAR', 'package/foo/Config.in', 6)]}), + ] + + +@pytest.mark.parametrize('testname,filename,file_content,expected_calls', handle_config_choice) +def test_handle_config_choice(testname, filename, file_content, expected_calls): + db = Mock() + m.handle_config_choice(db, filename, file_content) + assert_db_calls(db, expected_calls) + + +handle_note = [ + ('example', + 'Config.in.legacy', + [[51, '# # Note: BR2_FOO_1 is still referenced from package/foo/Config.in']], + {}), + ('ok', + 'Config.in.legacy', + [[112, 'menu "Legacy config options"'], + [2132, '# Note: BR2_PACKAGE_FOO is still referenced from package/foo/Config.in'], + [4958, 'endmenu']], + {'add_symbol_legacy_note': [call('BR2_PACKAGE_FOO', 'Config.in.legacy', 2132)]}), + ('before and after', + 'Config.in.legacy', + [[100, '# Note: BR2_PACKAGE_BAR is still referenced from package/foo/Config.in'], + [112, 'menu "Legacy config options"'], + [2132, '# Note: BR2_PACKAGE_FOO is still referenced from package/foo/Config.in'], + [4958, 'endmenu'], + [5000, '# Note: BR2_PACKAGE_BAR is still referenced from package/foo/Config.in']], + {'add_symbol_legacy_note': [call('BR2_PACKAGE_FOO', 'Config.in.legacy', 2132)]}), + ] + + +@pytest.mark.parametrize('testname,filename,file_content,expected_calls', handle_note) +def test_handle_note(testname, filename, file_content, expected_calls): + db = Mock() + m.handle_note(db, filename, file_content) + assert_db_calls(db, expected_calls) + + +populate_db = [ + ('legacy', + 'Config.in.legacy', + [[112, 'menu "Legacy config options"'], + [2100, 'config BR2_PACKAGE_FOO'], + [2101, '\tselect BR2_PACKAGE_BAR'], + [2132, '# Note: BR2_PACKAGE_FOO is still referenced from package/foo/Config.in'], + [4958, 'endmenu']], + {'add_symbol_legacy_note': [call('BR2_PACKAGE_FOO', 'Config.in.legacy', 2132)], + 'add_symbol_helper': [call('BR2_PACKAGE_FOO', 'Config.in.legacy', 2100)], + 'add_symbol_legacy_definition': [call('BR2_PACKAGE_FOO', 'Config.in.legacy', 2100)], + 'add_symbol_usage_in_legacy': [call('BR2_PACKAGE_BAR', 'Config.in.legacy', 2101)], + 'add_symbol_select': [call('BR2_PACKAGE_BAR', 'Config.in.legacy', 2101)]}), + ('normal', + 'package/foo/Config.in', + [[1, 'config BR2_PACKAGE_BAZ'], + [3, 'choice'], + [4, '\tprompt "your choice"'], + [5, 'config BR2_PACKAGE_FOO'], + [6, 'config BR2_PACKAGE_BAR'], + [7, '\t select BR2_PACKAGE_FOO_BAR'], + [10, 'endchoice']], + {'add_symbol_choice': [ + call('BR2_PACKAGE_FOO', 'package/foo/Config.in', 5), + call('BR2_PACKAGE_BAR', 'package/foo/Config.in', 6)], + 'add_symbol_usage': [ + call('BR2_PACKAGE_FOO_BAR', 'package/foo/Config.in', 7)], + 'add_symbol_select': [ + call('BR2_PACKAGE_FOO_BAR', 'package/foo/Config.in', 7)], + 'add_symbol_definition': [ + call('BR2_PACKAGE_BAZ', 'package/foo/Config.in', 1), + call('BR2_PACKAGE_FOO', 'package/foo/Config.in', 5), + call('BR2_PACKAGE_BAR', 'package/foo/Config.in', 6)], + 'add_symbol_helper': [ + call('BR2_PACKAGE_BAR', 'package/foo/Config.in', 6)]}), + ] + + +@pytest.mark.parametrize('testname,filename,file_content,expected_calls', populate_db) +def test_populate_db(testname, filename, file_content, expected_calls): + db = Mock() + m.populate_db(db, filename, file_content) + assert_db_calls(db, expected_calls) + + +check_filename = [ + ('Config.in', + 'Config.in', + True), + ('Config.in.legacy', + 'Config.in.legacy', + True), + ('arch/Config.in.microblaze', + 'arch/Config.in.microblaze', + True), + ('package/php/Config.ext', + 'package/php/Config.ext', + True), + ('package/pru-software-support/Config.in.host', + 'package/pru-software-support/Config.in.host', + True), + ('toolchain/toolchain-external/toolchain-external-custom/Config.in.options', + 'toolchain/toolchain-external/toolchain-external-custom/Config.in.options', + True), + ('package/foo/0001-Config.patch', + 'package/foo/0001-Config.patch', + False), + ('package/pkg-generic.mk', + 'package/pkg-generic.mk', + False), + ('Makefile', + 'Makefile', + False), + ] + + +@pytest.mark.parametrize('testname,filename,expected', check_filename) +def test_check_filename(testname, filename, expected): + symbols = m.check_filename(filename) + assert symbols == expected diff --git a/utils/checksymbolslib/test_makefile.py b/utils/checksymbolslib/test_makefile.py new file mode 100644 index 00000000..1dc6564b --- /dev/null +++ b/utils/checksymbolslib/test_makefile.py @@ -0,0 +1,301 @@ +import pytest +from unittest.mock import Mock +from unittest.mock import call +from checksymbolslib.test_util import assert_db_calls +import checksymbolslib.makefile as m + + +handle_eval = [ + ('generic', + 'package/foo/foo.mk', + 5, + '$(eval $(generic-package))', + {'add_symbol_usage': [call('BR2_PACKAGE_FOO', 'package/foo/foo.mk', 5)]}), + ('ignore trailing whitespace', + 'package/foo/foo.mk', + 5, + '$(eval $(generic-package)) ', + {'add_symbol_usage': [call('BR2_PACKAGE_FOO', 'package/foo/foo.mk', 5)]}), + ('ignore indent', + 'package/foo/foo.mk', + 5, + '\t$(eval $(generic-package))', + {'add_symbol_usage': [call('BR2_PACKAGE_FOO', 'package/foo/foo.mk', 5)]}), + ('rootfs', + 'fs/foo/foo.mk', + 5, + '$(eval $(rootfs))', + {'add_symbol_usage': [ + call('BR2_TARGET_ROOTFS_FOO', 'fs/foo/foo.mk', 5), + call('BR2_TARGET_ROOTFS_FOO_BZIP2', 'fs/foo/foo.mk', 5), + call('BR2_TARGET_ROOTFS_FOO_GZIP', 'fs/foo/foo.mk', 5), + call('BR2_TARGET_ROOTFS_FOO_LZ4', 'fs/foo/foo.mk', 5), + call('BR2_TARGET_ROOTFS_FOO_LZMA', 'fs/foo/foo.mk', 5), + call('BR2_TARGET_ROOTFS_FOO_LZO', 'fs/foo/foo.mk', 5), + call('BR2_TARGET_ROOTFS_FOO_XZ', 'fs/foo/foo.mk', 5), + call('BR2_TARGET_ROOTFS_FOO_ZSTD', 'fs/foo/foo.mk', 5)]}), + ('kernel module', + 'package/foo/foo.mk', + 6, + '$(eval $(kernel-module))', + {'add_symbol_usage': [call('BR2_PACKAGE_FOO', 'package/foo/foo.mk', 6)]}), + ('not an eval for package infra', + 'docs/manual/manual.mk', + 10, + '$(eval $(call asciidoc-document))', + {}), + ('linux', + 'linux/linux.mk', + 617, + '$(eval $(kconfig-package))', + {'add_symbol_usage': [call('BR2_LINUX_KERNEL', 'linux/linux.mk', 617)]}), + ('virtual toolchain', + 'toolchain/toolchain-external/toolchain-external.mk', + 18, + '$(eval $(virtual-package))', + {'add_symbol_usage': [ + call('BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL', 'toolchain/toolchain-external/toolchain-external.mk', 18), + call('BR2_PACKAGE_HAS_TOOLCHAIN_EXTERNAL', 'toolchain/toolchain-external/toolchain-external.mk', 18), + call('BR2_TOOLCHAIN_EXTERNAL', 'toolchain/toolchain-external/toolchain-external.mk', 18)], + 'add_symbol_virtual': [call('BR2_TOOLCHAIN_EXTERNAL', 'toolchain/toolchain-external/toolchain-external.mk', 18)]}), + ('virtual package', + 'package/foo/foo.mk', + 18, + '$(eval $(virtual-package))', + {'add_symbol_usage': [ + call('BR2_PACKAGE_PROVIDES_FOO', 'package/foo/foo.mk', 18), + call('BR2_PACKAGE_HAS_FOO', 'package/foo/foo.mk', 18), + call('BR2_PACKAGE_FOO', 'package/foo/foo.mk', 18)], + 'add_symbol_virtual': [call('BR2_PACKAGE_FOO', 'package/foo/foo.mk', 18)]}), + ('host virtual package', + 'package/foo/foo.mk', + 18, + '$(eval $(host-virtual-package))', + {'add_symbol_usage': [ + call('BR2_PACKAGE_PROVIDES_HOST_FOO', 'package/foo/foo.mk', 18), + call('BR2_PACKAGE_HAS_HOST_FOO', 'package/foo/foo.mk', 18), + call('BR2_PACKAGE_HOST_FOO', 'package/foo/foo.mk', 18)]}), + ('host generic package', + 'package/foo/foo.mk', + 18, + '$(eval $(host-package))', + {'add_symbol_usage': [call('BR2_PACKAGE_HOST_FOO', 'package/foo/foo.mk', 18)]}), + ('boot package', + 'boot/foo/foo.mk', + 18, + '$(eval $(generic-package))', + {'add_symbol_usage': [call('BR2_TARGET_FOO', 'boot/foo/foo.mk', 18)]}), + ('toolchain package', + 'toolchain/foo/foo.mk', + 18, + '$(eval $(generic-package))', + {'add_symbol_usage': [call('BR2_FOO', 'toolchain/foo/foo.mk', 18)]}), + ('generic package', + 'package/foo/foo.mk', + 18, + '$(eval $(generic-package))', + {'add_symbol_usage': [call('BR2_PACKAGE_FOO', 'package/foo/foo.mk', 18)]}), + ('cmake package', + 'package/foo/foo.mk', + 18, + '$(eval $(cmake-package))', + {'add_symbol_usage': [call('BR2_PACKAGE_FOO', 'package/foo/foo.mk', 18)]}), + ] + + +@pytest.mark.parametrize('testname,filename,lineno,line,expected_calls', handle_eval) +def test_handle_eval(testname, filename, lineno, line, expected_calls): + db = Mock() + m.handle_eval(db, filename, lineno, line) + assert_db_calls(db, expected_calls) + + +handle_definition = [ + ('legacy attribution', + 'Makefile.legacy', + 9, + 'BR2_LEGACY_FOO := foo', + True, + {'add_symbol_legacy_definition': [call('BR2_LEGACY_FOO', 'Makefile.legacy', 9)]}), + ('attribution 1', + 'Makefile', + 9, + 'BR2_FOO ?= foo', + False, + {'add_symbol_definition': [call('BR2_FOO', 'Makefile', 9)]}), + ('attribution 2', + 'Makefile', + 9, + 'BR2_FOO = $(BR2_BAR)', + False, + {'add_symbol_definition': [call('BR2_FOO', 'Makefile', 9)]}), + ('attribution 3', + 'Makefile', + 9, + 'BR2_FOO := foo', + False, + {'add_symbol_definition': [call('BR2_FOO', 'Makefile', 9)]}), + ('normal export', + 'Makefile', + 90, + 'export BR2_FOO', + False, + {'add_symbol_definition': [call('BR2_FOO', 'Makefile', 90)]}), + ('legacy export', + 'Makefile.legacy', + 90, + 'export BR2_FOO', + True, + {'add_symbol_legacy_definition': [call('BR2_FOO', 'Makefile.legacy', 90)]}), + ] + + +@pytest.mark.parametrize('testname,filename,lineno,line,legacy,expected_calls', handle_definition) +def test_handle_definition(testname, filename, lineno, line, legacy, expected_calls): + db = Mock() + m.handle_definition(db, filename, lineno, line, legacy) + assert_db_calls(db, expected_calls) + + +handle_usage = [ + ('legacy', + 'Makefile.legacy', + 8, + 'ifeq ($(BR2_LEGACY),y)', + True, + {'add_symbol_usage_in_legacy': [call('BR2_LEGACY', 'Makefile.legacy', 8)]}), + ('attribution', + 'Makefile', + 9, + 'BR2_FOO = $(BR2_BAR)', + False, + {'add_symbol_usage': [call('BR2_BAR', 'Makefile', 9)]}), + ('host virtual package', + 'package/foo/foo.mk', + 18, + '$(eval $(host-virtual-package))', + False, + {'add_symbol_usage': [ + call('BR2_PACKAGE_PROVIDES_HOST_FOO', 'package/foo/foo.mk', 18), + call('BR2_PACKAGE_HAS_HOST_FOO', 'package/foo/foo.mk', 18), + call('BR2_PACKAGE_HOST_FOO', 'package/foo/foo.mk', 18)]}), + ] + + +@pytest.mark.parametrize('testname,filename,lineno,line,legacy,expected_calls', handle_usage) +def test_handle_usage(testname, filename, lineno, line, legacy, expected_calls): + db = Mock() + m.handle_usage(db, filename, lineno, line, legacy) + assert_db_calls(db, expected_calls) + + +populate_db = [ + ('legacy', + 'Makefile.legacy', + [[8, 'ifeq ($(BR2_LEGACY),y)'], + [9, 'BR2_LEGACY_FOO := foo'], + [34, 'ifneq ($(BUILDROOT_CONFIG),$(BR2_CONFIG))']], + {'add_symbol_usage_in_legacy': [ + call('BR2_LEGACY', 'Makefile.legacy', 8), + call('BR2_CONFIG', 'Makefile.legacy', 34)], + 'add_symbol_legacy_definition': [call('BR2_LEGACY_FOO', 'Makefile.legacy', 9)]}), + ('attribution', + 'Makefile', + [[9, 'BR2_FOO = $(BR2_BAR)']], + {'add_symbol_definition': [call('BR2_FOO', 'Makefile', 9)], + 'add_symbol_usage': [call('BR2_BAR', 'Makefile', 9)]}), + ('legacy attribution', + 'Makefile.legacy', + [[9, 'BR2_FOO = $(BR2_BAR)']], + {'add_symbol_legacy_definition': [call('BR2_FOO', 'Makefile.legacy', 9)], + 'add_symbol_usage_in_legacy': [call('BR2_BAR', 'Makefile.legacy', 9)]}), + ('generic', + 'package/foo/foo.mk', + [[3, 'ifeq ($(BR2_PACKAGE_FOO_BAR):$(BR2_BAR),y:)'], + [4, 'export BR2_PACKAGE_FOO_BAZ'], + [5, '$(eval $(generic-package))']], + {'add_symbol_usage': [ + call('BR2_PACKAGE_FOO_BAR', 'package/foo/foo.mk', 3), + call('BR2_BAR', 'package/foo/foo.mk', 3), + call('BR2_PACKAGE_FOO', 'package/foo/foo.mk', 5)], + 'add_symbol_definition': [call('BR2_PACKAGE_FOO_BAZ', 'package/foo/foo.mk', 4)]}), + ('rootfs', + 'fs/foo/foo.mk', + [[4, 'ifeq ($(BR2_TARGET_ROOTFS_FOO_LZ4),y)'], + [5, '$(eval $(rootfs))']], + {'add_symbol_usage': [ + call('BR2_TARGET_ROOTFS_FOO', 'fs/foo/foo.mk', 5), + call('BR2_TARGET_ROOTFS_FOO_BZIP2', 'fs/foo/foo.mk', 5), + call('BR2_TARGET_ROOTFS_FOO_GZIP', 'fs/foo/foo.mk', 5), + call('BR2_TARGET_ROOTFS_FOO_LZ4', 'fs/foo/foo.mk', 4), + call('BR2_TARGET_ROOTFS_FOO_LZ4', 'fs/foo/foo.mk', 5), + call('BR2_TARGET_ROOTFS_FOO_LZMA', 'fs/foo/foo.mk', 5), + call('BR2_TARGET_ROOTFS_FOO_LZO', 'fs/foo/foo.mk', 5), + call('BR2_TARGET_ROOTFS_FOO_XZ', 'fs/foo/foo.mk', 5), + call('BR2_TARGET_ROOTFS_FOO_ZSTD', 'fs/foo/foo.mk', 5)]}), + ] + + +@pytest.mark.parametrize('testname,filename,file_content,expected_calls', populate_db) +def test_populate_db(testname, filename, file_content, expected_calls): + db = Mock() + m.populate_db(db, filename, file_content) + assert_db_calls(db, expected_calls) + + +check_filename = [ + ('arch/arch.mk.riscv', + 'arch/arch.mk.riscv', + True), + ('fs/cramfs/cramfs.mk', + 'fs/cramfs/cramfs.mk', + True), + ('linux/linux-ext-fbtft.mk', + 'linux/linux-ext-fbtft.mk', + True), + ('package/ace/ace.mk', + 'package/ace/ace.mk', + True), + ('package/linux-tools/linux-tool-hv.mk.in', + 'package/linux-tools/linux-tool-hv.mk.in', + True), + ('package/pkg-generic.mk', + 'package/pkg-generic.mk', + True), + ('package/x11r7/xlib_libXt/xlib_libXt.mk', + 'package/x11r7/xlib_libXt/xlib_libXt.mk', + True), + ('support/dependencies/check-host-make.mk', + 'support/dependencies/check-host-make.mk', + True), + ('toolchain/toolchain-external/toolchain-external-arm-aarch64-be/toolchain-external-arm-aarch64-be.mk', + 'toolchain/toolchain-external/toolchain-external-arm-aarch64-be/toolchain-external-arm-aarch64-be.mk', + True), + ('Makefile.legacy', + 'Makefile.legacy', + True), + ('boot/common.mk', + 'boot/common.mk', + True), + ('fs/common.mk', + 'fs/common.mk', + True), + ('Makefile', + 'Makefile', + True), + ('package/Makefile.in', + 'package/Makefile.in', + True), + ('Config.in', + 'Config.in', + False), + ('package/foo/0001-Makefile.patch', + 'package/foo/0001-Makefile.patch', + False), + ] + + +@pytest.mark.parametrize('testname,filename,expected', check_filename) +def test_check_filename(testname, filename, expected): + symbols = m.check_filename(filename) + assert symbols == expected diff --git a/utils/checksymbolslib/test_util.py b/utils/checksymbolslib/test_util.py new file mode 100644 index 00000000..166785ba --- /dev/null +++ b/utils/checksymbolslib/test_util.py @@ -0,0 +1,15 @@ +def assert_calls(method, expected_calls): + method.assert_has_calls(expected_calls, any_order=True) + assert method.call_count == len(expected_calls) + + +def assert_db_calls(db, expected_calls): + assert_calls(db.add_symbol_legacy_definition, expected_calls.get('add_symbol_legacy_definition', [])) + assert_calls(db.add_symbol_definition, expected_calls.get('add_symbol_definition', [])) + assert_calls(db.add_symbol_usage_in_legacy, expected_calls.get('add_symbol_usage_in_legacy', [])) + assert_calls(db.add_symbol_usage, expected_calls.get('add_symbol_usage', [])) + assert_calls(db.add_symbol_legacy_usage, expected_calls.get('add_symbol_legacy_usage', [])) + assert_calls(db.add_symbol_select, expected_calls.get('add_symbol_select', [])) + assert_calls(db.add_symbol_helper, expected_calls.get('add_symbol_helper', [])) + assert_calls(db.add_symbol_legacy_note, expected_calls.get('add_symbol_legacy_note', [])) + assert_calls(db.add_symbol_virtual, expected_calls.get('add_symbol_virtual', [])) diff --git a/utils/config b/utils/config new file mode 100755 index 00000000..5f5e4362 --- /dev/null +++ b/utils/config @@ -0,0 +1,202 @@ +#!/bin/bash +# Manipulate options in a .config file from the command line + +myname=${0##*/} + +# If no prefix forced, use the default BR2_ +BR2_PREFIX="${BR2_PREFIX-BR2_}" + +usage() { + cat >&2 <>"$FN" + fi +} + +undef_var() { + local name=$1 + + txt_delete "^$name=" "$FN" + txt_delete "^# $name is not set" "$FN" +} + +if [ "$1" = "--file" ]; then + FN="$2" + if [ "$FN" = "" ] ; then + usage + fi + shift 2 +else + FN=.config +fi + +if [ "$1" = "" ] ; then + usage +fi + +MUNGE_CASE=yes +while [ "$1" != "" ] ; do + CMD="$1" + shift + case "$CMD" in + --keep-case|-k) + MUNGE_CASE=no + continue + ;; + --package|-p) + BR2_PREFIX="BR2_PACKAGE_" + continue + ;; + --*-after|-E|-D|-M) + checkarg "$1" + A=$ARG + checkarg "$2" + B=$ARG + shift 2 + ;; + -*) + checkarg "$1" + shift + ;; + esac + case "$CMD" in + --enable|-e) + set_var "${BR2_PREFIX}$ARG" "${BR2_PREFIX}$ARG=y" + ;; + + --disable|-d) + set_var "${BR2_PREFIX}$ARG" "# ${BR2_PREFIX}$ARG is not set" + ;; + + --set-str) + # sed swallows one level of escaping, so we need double-escaping + set_var "${BR2_PREFIX}$ARG" "${BR2_PREFIX}$ARG=\"${1//\"/\\\\\"}\"" + shift + ;; + + --set-val) + set_var "${BR2_PREFIX}$ARG" "${BR2_PREFIX}$ARG=$1" + shift + ;; + --undefine|-u) + undef_var "${BR2_PREFIX}$ARG" + ;; + + --state|-s) + if grep -q "# ${BR2_PREFIX}$ARG is not set" $FN ; then + echo n + else + if V="$(grep "^${BR2_PREFIX}$ARG=" $FN)"; then + V="${V/#${BR2_PREFIX}$ARG=/}" + V="${V/#\"/}" + V="${V/%\"/}" + V="${V//\\\"/\"}" + echo "${V}" + else + echo undef + fi + fi + ;; + + --enable-after|-E) + set_var "${BR2_PREFIX}$B" "${BR2_PREFIX}$B=y" "${BR2_PREFIX}$A" + ;; + + --disable-after|-D) + set_var "${BR2_PREFIX}$B" "# ${BR2_PREFIX}$B is not set" "${BR2_PREFIX}$A" + ;; + + *) + usage + ;; + esac +done diff --git a/utils/diffconfig b/utils/diffconfig new file mode 100755 index 00000000..f490c557 --- /dev/null +++ b/utils/diffconfig @@ -0,0 +1,138 @@ +#!/usr/bin/env python3 +# +# diffconfig - a tool to compare .config files. +# +# originally written in 2006 by Matt Mackall +# (at least, this was in his bloatwatch source code) +# last worked on 2008 by Tim Bird for the Linux kernel +# Adapted to Buildroot 2017 by Marcus Folkesson +# + +import sys, os + +def usage(): + print("""Usage: diffconfig [-h] [-m] [ ] + +Diffconfig is a simple utility for comparing two .config files. +Using standard diff to compare .config files often includes extraneous and +distracting information. This utility produces sorted output with only the +changes in configuration values between the two files. + +Added and removed items are shown with a leading plus or minus, respectively. +Changed items show the old and new values on a single line. + +If -m is specified, then output will be in "merge" style, which has the +changed and new values in kernel config option format. + +If no config files are specified, .config and .config.old are used. + +Example usage: + $ diffconfig .config config-with-some-changes +-BR2_LINUX_KERNEL_INTREE_DTS_NAME "vexpress-v2p-ca9" + BR2_LINUX_KERNEL_DTS_SUPPORT y -> n + BR2_LINUX_KERNEL_USE_INTREE_DTS y -> n + BR2_PACKAGE_DFU_UTIL n -> y + BR2_PACKAGE_LIBUSB n -> y + BR2_TARGET_GENERIC_HOSTNAME "buildroot" -> "Tuxie" + BR2_TARGET_GENERIC_ISSUE "Welcome to Buildroot" -> "Welcome to CustomBoard" ++BR2_PACKAGE_LIBUSB_COMPAT n + +""") + sys.exit(0) + +# returns a dictionary of name/value pairs for config items in the file +def readconfig(config_file): + d = {} + for line in config_file: + line = line.strip() + if len(line) == 0: + continue + if line[-11:] == " is not set": + d[line[2:-11]] = "n" + elif line[0] != "#": + name, val = line.split("=", 1) + d[name] = val + return d + +def print_config(op, config, value, new_value): + global merge_style + + if merge_style: + if new_value: + if new_value=="n": + print("# %s is not set" % config) + else: + print("%s=%s" % (config, new_value)) + else: + if op=="-": + print("-%s %s" % (config, value)) + elif op=="+": + print("+%s %s" % (config, new_value)) + else: + print(" %s %s -> %s" % (config, value, new_value)) + +def main(): + global merge_style + + # parse command line args + if ("-h" in sys.argv or "--help" in sys.argv): + usage() + + merge_style = 0 + if "-m" in sys.argv: + merge_style = 1 + sys.argv.remove("-m") + + argc = len(sys.argv) + if not (argc==1 or argc == 3): + print("Error: incorrect number of arguments or unrecognized option") + usage() + + if argc == 1: + # if no filenames given, assume .config and .config.old + build_dir="" + if "KBUILD_OUTPUT" in os.environ: + build_dir = os.environ["KBUILD_OUTPUT"]+"/" + configa_filename = build_dir + ".config.old" + configb_filename = build_dir + ".config" + else: + configa_filename = sys.argv[1] + configb_filename = sys.argv[2] + + try: + a = readconfig(open(configa_filename)) + b = readconfig(open(configb_filename)) + except (IOError): + e = sys.exc_info()[1] + print("I/O error[%s]: %s\n" % (e.args[0],e.args[1])) + usage() + + # print items in a but not b (accumulate, sort and print) + old = [] + for config in a: + if config not in b: + old.append(config) + old.sort() + for config in old: + print_config("-", config, a[config], None) + del a[config] + + # print items that changed (accumulate, sort, and print) + changed = [] + for config in a: + if a[config] != b[config]: + changed.append(config) + else: + del b[config] + changed.sort() + for config in changed: + print_config("->", config, a[config], b[config]) + del b[config] + + # now print items in b but not in a + # (items from b that were in a were removed above) + new = sorted(b.keys()) + for config in new: + print_config("+", config, None, b[config]) + +main() diff --git a/utils/docker-run b/utils/docker-run new file mode 100755 index 00000000..1adb02d7 --- /dev/null +++ b/utils/docker-run @@ -0,0 +1,102 @@ +#!/usr/bin/env bash +set -o errexit -o pipefail +DIR=$(dirname "${0}") +MAIN_DIR=$(readlink -f "${DIR}/..") +if [ -L "${MAIN_DIR}/.git/config" ]; then + # Support git-new-workdir + GIT_DIR="$(dirname "$(realpath "${MAIN_DIR}/.git/config")")" +else + # Support git-worktree + GIT_DIR="$(cd "${MAIN_DIR}" && git rev-parse --no-flags --git-common-dir)" +fi +if test -z "${IMAGE}" ; then + # shellcheck disable=SC2016 + IMAGE=$(grep ^image: "${MAIN_DIR}/.gitlab-ci.yml" | \ + sed -e 's,^image: ,,g' | sed -e 's,\$CI_REGISTRY,registry.gitlab.com,g') +fi + +declare -a docker_opts=( + -i + --rm + --user "$(id -u):$(id -g)" + --workdir "$(pwd)" + --security-opt label=disable + --network host +) + +declare -a mountpoints=( + "${MAIN_DIR}" + "$(pwd)" +) + +# We use the PODMAN_USERNS environment variable rather than using the +# --userns command line argument because Fedora system may have the +# podman-docker package installed, providing the "docker" +# compatibility command. +export PODMAN_USERNS="keep-id" + +if command -v docker >/dev/null; then + DOCKER="docker" +elif command -v podman >/dev/null; then + DOCKER="podman" +else + echo "ERROR: Neither docker nor podman available!" >&2 + exit 1 +fi + +# curl lists (and recognises and uses) other types of *_proxy variables, +# but only those make sense for Buildroot: +for env in all_proxy http_proxy https_proxy ftp_proxy no_proxy; do + if [ "${!env}" ]; then + docker_opts+=( --env "${env}" ) + # The lower-case variant takes precedence on the upper-case one + # (dixit curl) + continue + fi + # http_proxy is only lower-case (dixit curl) + if [ "${env}" = http_proxy ]; then + continue + fi + # All the others also exist in the upper-case variant + env="${env^^}" + if [ "${!env}" ]; then + docker_opts+=( --env "${env}" ) + fi +done + +# Empty GIT_DIR means that we are not in a workdir, *and* git is too old +# to know about worktrees, so we're not in a worktree either. So it means +# we're in the main git working copy, and thus we don't need to mount the +# .git directory. +if [ "${GIT_DIR}" ]; then + # GIT_DIR in the main working copy (when git supports worktrees) will + # be just '.git', but 'docker run' needs an absolute path. If it is + # not absolute, GIT_DIR is relative to MAIN_DIR. If it's an absolute + # path already (in a wordir), then that's a noop. + GIT_DIR="$(cd "${MAIN_DIR}"; readlink -e "${GIT_DIR}")" + mountpoints+=( "${GIT_DIR}" ) + + # 'repo' stores .git/objects separately. + if [ -L "${GIT_DIR}/objects" ]; then + # GITDIR is already an absolute path, but for symetry + # with the above, keep the same cd+readlink construct. + OBJECTS_DIR="$(cd "${MAIN_DIR}"; readlink -e "${GIT_DIR}/objects")" + mountpoints+=( "${OBJECTS_DIR}" ) + fi +fi + +if [ "${BR2_DL_DIR}" ]; then + mountpoints+=( "${BR2_DL_DIR}" ) + docker_opts+=( --env BR2_DL_DIR ) +fi + +# shellcheck disable=SC2013 # can't use while-read because of the assignment +for dir in $(printf '%s\n' "${mountpoints[@]}" |LC_ALL=C sort -u); do + docker_opts+=( --mount "type=bind,src=${dir},dst=${dir}" ) +done + +if tty -s; then + docker_opts+=( -t ) +fi + +exec ${DOCKER} run "${docker_opts[@]}" "${IMAGE}" "${@}" diff --git a/utils/genrandconfig b/utils/genrandconfig new file mode 100755 index 00000000..282a9ebd --- /dev/null +++ b/utils/genrandconfig @@ -0,0 +1,651 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2014 by Thomas Petazzoni +# +# 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 + +# This script generates a random configuration for testing Buildroot. + +from binascii import hexlify +import asyncio +import os +from random import randint +import sys +import traceback + + +class SystemInfo: + DEFAULT_NEEDED_PROGS = ["make", "git", "gcc", "timeout"] + DEFAULT_OPTIONAL_PROGS = ["bzr", "java", "javac", "jar", "diffoscope"] + + def __init__(self): + self.needed_progs = list(self.__class__.DEFAULT_NEEDED_PROGS) + self.optional_progs = list(self.__class__.DEFAULT_OPTIONAL_PROGS) + self.progs = {} + + def find_prog(self, name, flags=os.X_OK, env=os.environ): + if not name or name[0] == os.sep: + raise ValueError(name) + + prog_path = env.get("PATH", None) + # for windows compatibility, we'd need to take PATHEXT into account + + if prog_path: + for prog_dir in filter(None, prog_path.split(os.pathsep)): + # os.join() not necessary: non-empty prog_dir + # and name[0] != os.sep + prog = prog_dir + os.sep + name + if os.access(prog, flags): + return prog + # -- + return None + + async def has(self, prog): + """Checks whether a program is available. + Lazily evaluates missing entries. + + Returns: None if prog not found, else path to the program [evaluates + to True] + """ + try: + return self.progs[prog] + except KeyError: + pass + + have_it = self.find_prog(prog) + # java[c] needs special care + if have_it and prog in ('java', 'javac'): + proc = await asyncio.create_subprocess_shell( + "%s -version | grep gcj" % prog, + stdout=asyncio.subprocess.DEVNULL, + stderr=asyncio.subprocess.DEVNULL) + ret = await proc.wait() + if ret != 1: + have_it = False + # -- + self.progs[prog] = have_it + return have_it + + def check_requirements(self): + """Checks program dependencies. + + Returns: True if all mandatory programs are present, else False. + """ + do_check_has_prog = self.has + + missing_requirements = False + for prog in self.needed_progs: + if not do_check_has_prog(prog): + print("ERROR: your system lacks the '%s' program" % prog) + missing_requirements = True + + # check optional programs here, + # else they'd get checked by each worker instance + for prog in self.optional_progs: + do_check_has_prog(prog) + + return not missing_requirements + + +async def fixup_config(sysinfo, configfile): + """Finalize the configuration and reject any problematic combinations + + This function returns 'True' when the configuration has been + accepted, and 'False' when the configuration has not been accepted because + it is known to fail (in which case another random configuration will be + generated). + """ + + with open(configfile) as configf: + configlines = configf.readlines() + + ROOTFS_SIZE = '5G' + + if "BR2_NEEDS_HOST_JAVA=y\n" in configlines and not await sysinfo.has("java"): + return False + # libffi not available on ARMv7-M, but propagating libffi arch + # dependencies in Buildroot is really too much work, so we handle + # this here. + if 'BR2_ARM_CPU_ARMV7M=y\n' in configlines and \ + 'BR2_PACKAGE_LIBFFI=y\n' in configlines: + return False + # libopenssl needs atomic, but propagating this dependency in + # Buildroot is really too much work, so we handle this here. + if 'BR2_PACKAGE_LIBOPENSSL=y\n' in configlines and \ + 'BR2_TOOLCHAIN_HAS_ATOMIC=y\n' not in configlines: + return False + if 'BR2_PACKAGE_SUNXI_BOARDS=y\n' in configlines: + configlines.remove('BR2_PACKAGE_SUNXI_BOARDS_FEX_FILE=""\n') + configlines.append('BR2_PACKAGE_SUNXI_BOARDS_FEX_FILE="a10/hackberry.fex"\n') + # No C library for internal toolchain + if 'BR2_TOOLCHAIN_BUILDROOT_NONE=y\n' in configlines: + return False + # Xtensa custom cores require an overlay file with internal + # toolchains + if 'BR2_XTENSA_CUSTOM=y\n' in configlines and \ + 'BR2_TOOLCHAIN_BUILDROOT=y\n' in configlines: + return False + + # On xtensa, python needs headers >= 3.17, but propagating that to all packages + # is a bit tedious, so just catch it here. + if 'BR2_XTENSA_CUSTOM=y\n' in configlines and \ + 'BR2_PACKAGE_PYTHON3=y\n' in configlines and \ + 'BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17=y\n' not in configlines: + return False + + if 'BR2_TOOLCHAIN_BARE_METAL_BUILDROOT=y\n' in configlines: + configlines.remove('BR2_TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH=""\n') + configlines.append('BR2_TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH="microblazeel-xilinx-elf"\n') + + if 'BR2_PACKAGE_AUFS_UTIL=y\n' in configlines and \ + 'BR2_PACKAGE_AUFS_UTIL_VERSION=""\n' in configlines: + return False + if 'BR2_PACKAGE_A10DISP=y\n' in configlines: + return False + + if 'BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE=y\n' in configlines and \ + 'BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE=""\n' in configlines and \ + 'BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE=""\n' in configlines: + bootenv = os.path.join(args.outputdir, "boot_env.txt") + with open(bootenv, "w+") as bootenvf: + bootenvf.write("prop=value") + configlines.remove('BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE=""\n') + configlines.append('BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE="%s"\n' % bootenv) + configlines.remove('BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE=""\n') + configlines.append('BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE="0x1000"\n') + + if 'BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y\n' in configlines and \ + 'BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE=""\n' in configlines: + bootscr = os.path.join(args.outputdir, "boot_script.txt") + with open(bootscr, "w+") as bootscrf: + bootscrf.write("prop=value") + configlines.remove('BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE=""\n') + configlines.append('BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="%s"\n' % bootscr) + + if 'BR2_ROOTFS_SKELETON_CUSTOM=y\n' in configlines and \ + 'BR2_ROOTFS_SKELETON_CUSTOM_PATH=""\n' in configlines: + configlines.remove('BR2_ROOTFS_SKELETON_CUSTOM=y\n') + configlines.remove('BR2_ROOTFS_SKELETON_CUSTOM_PATH=""\n') + + if 'BR2_LINUX_KERNEL=y\n' in configlines and \ + 'BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y\n' in configlines and \ + 'BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=""\n' in configlines: + configlines.remove('BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y\n') + configlines.append('BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y\n') + configlines.remove('BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=""\n') + + if 'BR2_LINUX_KERNEL=y\n' in configlines and \ + 'BR2_LINUX_KERNEL_USE_DEFCONFIG=y\n' in configlines and \ + 'BR2_LINUX_KERNEL_DEFCONFIG=""\n' in configlines: + configlines.remove('BR2_LINUX_KERNEL_USE_DEFCONFIG=y\n') + configlines.append('BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y\n') + configlines.remove('BR2_LINUX_KERNEL_DEFCONFIG=""\n') + + if 'BR2_LINUX_KERNEL=y\n' in configlines and \ + 'BR2_LINUX_KERNEL_CUSTOM_GIT=y\n' in configlines and \ + 'BR2_LINUX_KERNEL_CUSTOM_REPO_URL=""\n' in configlines: + configlines.remove('BR2_LINUX_KERNEL_CUSTOM_GIT=y\n') + configlines.append('BR2_LINUX_KERNEL_LATEST_VERSION=y\n') + configlines.remove('BR2_LINUX_KERNEL_CUSTOM_REPO_URL=""\n') + + if 'BR2_LINUX_KERNEL=y\n' in configlines and \ + 'BR2_LINUX_KERNEL_CUSTOM_HG=y\n' in configlines and \ + 'BR2_LINUX_KERNEL_CUSTOM_REPO_URL=""\n' in configlines: + configlines.remove('BR2_LINUX_KERNEL_CUSTOM_HG=y\n') + configlines.append('BR2_LINUX_KERNEL_LATEST_VERSION=y\n') + configlines.remove('BR2_LINUX_KERNEL_CUSTOM_REPO_URL=""\n') + + if 'BR2_LINUX_KERNEL=y\n' in configlines and \ + 'BR2_LINUX_KERNEL_CUSTOM_SVN=y\n' in configlines and \ + 'BR2_LINUX_KERNEL_CUSTOM_REPO_URL=""\n' in configlines: + configlines.remove('BR2_LINUX_KERNEL_CUSTOM_SVN=y\n') + configlines.append('BR2_LINUX_KERNEL_LATEST_VERSION=y\n') + configlines.remove('BR2_LINUX_KERNEL_CUSTOM_REPO_URL=""\n') + + if 'BR2_LINUX_KERNEL=y\n' in configlines and \ + 'BR2_LINUX_KERNEL_CUSTOM_TARBALL=y\n' in configlines and \ + 'BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION=""\n' in configlines: + configlines.remove('BR2_LINUX_KERNEL_CUSTOM_TARBALL=y\n') + configlines.append('BR2_LINUX_KERNEL_LATEST_VERSION=y\n') + configlines.remove('BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION=""\n') + + if 'BR2_LINUX_KERNEL=y\n' in configlines and \ + 'BR2_LINUX_KERNEL_CUSTOM_VERSION=y\n' in configlines and \ + 'BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=""\n' in configlines: + configlines.remove('BR2_LINUX_KERNEL_CUSTOM_VERSION=y\n') + configlines.append('BR2_LINUX_KERNEL_LATEST_VERSION=y\n') + configlines.remove('BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=""\n') + + if 'BR2_LINUX_KERNEL=y\n' in configlines and \ + 'BR2_LINUX_KERNEL_DTS_SUPPORT=y\n' in configlines and \ + 'BR2_LINUX_KERNEL_INTREE_DTS_NAME=""\n' in configlines and \ + 'BR2_LINUX_KERNEL_CUSTOM_DTS_PATH=""\n' in configlines: + configlines.remove('BR2_LINUX_KERNEL_DTS_SUPPORT=y\n') + configlines.remove('BR2_LINUX_KERNEL_INTREE_DTS_NAME=""\n') + configlines.remove('BR2_LINUX_KERNEL_CUSTOM_DTS_PATH=""\n') + if 'BR2_LINUX_KERNEL_APPENDED_UIMAGE=y\n' in configlines: + configlines.remove('BR2_LINUX_KERNEL_APPENDED_UIMAGE=y\n') + configlines.append('BR2_LINUX_KERNEL_UIMAGE=y\n') + if 'BR2_LINUX_KERNEL_APPENDED_ZIMAGE=y\n' in configlines: + configlines.remove('BR2_LINUX_KERNEL_APPENDED_ZIMAGE=y\n') + configlines.append('BR2_LINUX_KERNEL_ZIMAGE=y\n') + if 'BR2_LINUX_KERNEL_CUIMAGE=y\n' in configlines: + configlines.remove('BR2_LINUX_KERNEL_CUIMAGE=y\n') + configlines.append('BR2_LINUX_KERNEL_UIMAGE=y\n') + if 'BR2_LINUX_KERNEL_SIMPLEIMAGE=y\n' in configlines: + configlines.remove('BR2_LINUX_KERNEL_SIMPLEIMAGE=y\n') + configlines.append('BR2_LINUX_KERNEL_VMLINUX=y\n') + + if 'BR2_LINUX_KERNEL_EXT_AUFS=y\n' in configlines and \ + 'BR2_LINUX_KERNEL_EXT_AUFS_VERSION=""\n' in configlines: + configlines.remove('BR2_LINUX_KERNEL_EXT_AUFS=y\n') + configlines.remove('BR2_LINUX_KERNEL_EXT_AUFS_VERSION=""\n') + + if 'BR2_PACKAGE_LINUX_BACKPORTS=y\n' in configlines and \ + 'BR2_PACKAGE_LINUX_BACKPORTS_USE_CUSTOM_CONFIG=y\n' in configlines and \ + 'BR2_PACKAGE_LINUX_BACKPORTS_CUSTOM_CONFIG_FILE=""\n' in configlines: + configlines.remove('BR2_PACKAGE_LINUX_BACKPORTS=y\n') + configlines.remove('BR2_PACKAGE_LINUX_BACKPORTS_USE_CUSTOM_CONFIG=y\n') + configlines.remove('BR2_PACKAGE_LINUX_BACKPORTS_CUSTOM_CONFIG_FILE=""\n') + + if 'BR2_PACKAGE_LINUX_BACKPORTS=y\n' in configlines and \ + 'BR2_PACKAGE_LINUX_BACKPORTS_USE_DEFCONFIG=y\n' in configlines and \ + 'BR2_PACKAGE_LINUX_BACKPORTS_DEFCONFIG=""\n' in configlines: + configlines.remove('BR2_PACKAGE_LINUX_BACKPORTS=y\n') + configlines.remove('BR2_PACKAGE_LINUX_BACKPORTS_USE_DEFCONFIG=y\n') + configlines.remove('BR2_PACKAGE_LINUX_BACKPORTS_DEFCONFIG=""\n') + + if 'BR2_KERNEL_HEADERS_VERSION=y\n' in configlines and \ + 'BR2_DEFAULT_KERNEL_VERSION=""\n' in configlines: + configlines.remove('BR2_KERNEL_HEADERS_VERSION=y\n') + configlines.remove('BR2_DEFAULT_KERNEL_VERSION=""\n') + + if 'BR2_KERNEL_HEADERS_CUSTOM_GIT=y\n' in configlines and \ + 'BR2_KERNEL_HEADERS_CUSTOM_REPO_URL=""\n': + configlines.remove('BR2_KERNEL_HEADERS_CUSTOM_GIT=y\n') + configlines.remove('BR2_KERNEL_HEADERS_CUSTOM_REPO_URL=""\n') + + if 'BR2_KERNEL_HEADERS_CUSTOM_TARBALL=y\n' in configlines and \ + 'BR2_KERNEL_HEADERS_CUSTOM_TARBALL_LOCATION=""\n' in configlines: + configlines.remove('BR2_KERNEL_HEADERS_CUSTOM_TARBALL=y\n') + configlines.remove('BR2_KERNEL_HEADERS_CUSTOM_TARBALL_LOCATION=""\n') + + if 'BR2_TARGET_ARM_TRUSTED_FIRMWARE=y\n' in configlines and \ + 'BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM=""\n' in configlines: + return False + + if 'BR2_TARGET_ARM_TRUSTED_FIRMWARE=y\n' in configlines and \ + 'BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y\n' in configlines and \ + 'BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE=""\n' in configlines: + configlines.remove('BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y\n') + configlines.append('BR2_TARGET_ARM_TRUSTED_FIRMWARE_LATEST_VERSION=y\n') + configlines.remove('BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE=""\n') + + if 'BR2_TARGET_ARM_TRUSTED_FIRMWARE=y\n' in configlines and \ + 'BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y\n' in configlines and \ + 'BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION=""\n' in configlines: + configlines.remove('BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y\n') + configlines.append('BR2_TARGET_ARM_TRUSTED_FIRMWARE_LATEST_VERSION=y\n') + configlines.remove('BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION=""\n') + + if 'BR2_TARGET_ARM_TRUSTED_FIRMWARE=y\n' in configlines and \ + 'BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y\n' in configlines and \ + 'BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL=""\n' in configlines: + configlines.remove('BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y\n') + configlines.append('BR2_TARGET_ARM_TRUSTED_FIRMWARE_LATEST_VERSION=y\n') + configlines.remove('BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL=""\n') + + if 'BR2_TARGET_AT91BOOTSTRAP3=y\n' in configlines and \ + 'BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG=""\n' in configlines: + configlines.remove('BR2_TARGET_AT91BOOTSTRAP3=y\n') + configlines.remove('BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG=""\n') + + if 'BR2_TARGET_BAREBOX=y\n' in configlines and \ + 'BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG=y\n' in configlines and \ + 'BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE=""\n' in configlines: + configlines.remove('BR2_TARGET_BAREBOX=y\n') + configlines.remove('BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG=y\n') + configlines.remove('BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE=""\n') + + if 'BR2_TARGET_BAREBOX=y\n' in configlines and \ + 'BR2_TARGET_BAREBOX_USE_DEFCONFIG=y\n' in configlines and \ + 'BR2_TARGET_BAREBOX_BOARD_DEFCONFIG=""\n' in configlines: + configlines.remove('BR2_TARGET_BAREBOX=y\n') + configlines.remove('BR2_TARGET_BAREBOX_USE_DEFCONFIG=y\n') + configlines.remove('BR2_TARGET_BAREBOX_BOARD_DEFCONFIG=""\n') + + if 'BR2_TARGET_BOOT_WRAPPER_AARCH64=y\n' in configlines and \ + 'BR2_TARGET_BOOT_WRAPPER_AARCH64_DTS=""\n' in configlines: + return False + + if 'BR2_TARGET_OPTEE_OS=y\n' in configlines and \ + 'BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL=y\n' in configlines and \ + 'BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL_LOCATION=""\n' in configlines: + configlines.remove('BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL=y\n') + configlines.append('BR2_TARGET_OPTEE_OS_LATEST=y\n') + configlines.remove('BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL_LOCATION=""\n') + + if 'BR2_TARGET_OPTEE_OS=y\n' in configlines and \ + 'BR2_TARGET_OPTEE_OS_PLATFORM=""\n' in configlines: + configlines.remove('BR2_TARGET_OPTEE_OS=y\n') + configlines.remove('BR2_TARGET_OPTEE_OS_PLATFORM=""\n') + + if 'BR2_TARGET_ROOTFS_CRAMFS=y\n' in configlines: + configlines.remove('BR2_TARGET_ROOTFS_CRAMFS=y\n') + + if 'BR2_TARGET_ROOTFS_EXT2=y\n' in configlines and \ + 'BR2_TARGET_ROOTFS_EXT2_SIZE="60M"\n' in configlines: + configlines.remove('BR2_TARGET_ROOTFS_EXT2_SIZE="60M"\n') + configlines.append('BR2_TARGET_ROOTFS_EXT2_SIZE="%s"\n' % ROOTFS_SIZE) + + if 'BR2_TARGET_ROOTFS_F2FS=y\n' in configlines and \ + 'BR2_TARGET_ROOTFS_F2FS_SIZE="100M"\n' in configlines: + configlines.remove('BR2_TARGET_ROOTFS_F2FS_SIZE="100M"\n') + configlines.append('BR2_TARGET_ROOTFS_F2FS_SIZE="%s"\n' % ROOTFS_SIZE) + + if 'BR2_TARGET_ROOTFS_UBIFS=y\n' in configlines and \ + 'BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=2048\n' in configlines: + configlines.remove('BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=2048\n') + configlines.append('BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=41610\n') + + if 'BR2_TARGET_ROOTFS_UBI=y\n' in configlines and \ + 'BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG=y\n' in configlines and \ + 'BR2_TARGET_ROOTFS_UBI_CUSTOM_CONFIG_FILE=""\n' in configlines: + configlines.remove('BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG=y\n') + configlines.remove('BR2_TARGET_ROOTFS_UBI_CUSTOM_CONFIG_FILE=""\n') + + if 'BR2_TARGET_S500_BOOTLOADER=y\n' in configlines and \ + 'BR2_TARGET_S500_BOOTLOADER_BOARD=""\n' in configlines: + configlines.remove('BR2_TARGET_S500_BOOTLOADER=y\n') + configlines.remove('BR2_TARGET_S500_BOOTLOADER_BOARD=""\n') + + if 'BR2_TARGET_TI_K3_R5_LOADER=y\n' in configlines and \ + 'BR2_TARGET_TI_K3_R5_LOADER_USE_DEFCONFIG=y\n' in configlines and \ + 'BR2_TARGET_TI_K3_R5_LOADER_BOARD_DEFCONFIG=""\n' in configlines: + return False + + if 'BR2_TARGET_UBOOT=y\n' in configlines and \ + 'BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y\n' in configlines and \ + 'BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG=y\n' in configlines and \ + 'BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE=""\n' in configlines: + configlines.remove('BR2_TARGET_UBOOT=y\n') + configlines.remove('BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y\n') + configlines.remove('BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG=y\n') + configlines.remove('BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE=""\n') + + if 'BR2_TARGET_UBOOT=y\n' in configlines and \ + 'BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y\n' in configlines and \ + 'BR2_TARGET_UBOOT_USE_DEFCONFIG=y\n' in configlines and \ + 'BR2_TARGET_UBOOT_BOARD_DEFCONFIG=""\n' in configlines: + configlines.remove('BR2_TARGET_UBOOT=y\n') + configlines.remove('BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y\n') + configlines.remove('BR2_TARGET_UBOOT_USE_DEFCONFIG=y\n') + configlines.remove('BR2_TARGET_UBOOT_BOARD_DEFCONFIG=""\n') + + if 'BR2_TARGET_UBOOT=y\n' in configlines and \ + 'BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY=y\n' in configlines and \ + 'BR2_TARGET_UBOOT_BOARDNAME=""\n' in configlines: + configlines.remove('BR2_TARGET_UBOOT=y\n') + configlines.remove('BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY=y\n') + configlines.remove('BR2_TARGET_UBOOT_BOARDNAME=""\n') + + if 'BR2_TOOLCHAIN_EXTERNAL=y\n' in configlines and \ + 'BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED=y\n' in configlines and \ + 'BR2_TOOLCHAIN_EXTERNAL_PATH=""\n' in configlines: + configlines.remove('BR2_TOOLCHAIN_EXTERNAL=y\n') + configlines.remove('BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED=y\n') + configlines.remove('BR2_TOOLCHAIN_EXTERNAL_PATH=""\n') + if 'BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT=y\n' in configlines: + return False + + if 'BR2_TOOLCHAIN_EXTERNAL=y\n' in configlines and \ + 'BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y\n' in configlines and \ + 'BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y\n' in configlines and \ + 'BR2_TOOLCHAIN_EXTERNAL_URL=""\n' in configlines: + configlines.remove('BR2_TOOLCHAIN_EXTERNAL=y\n') + configlines.remove('BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y\n') + configlines.remove('BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y\n') + configlines.remove('BR2_TOOLCHAIN_EXTERNAL_URL=""\n') + if 'BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT=y\n' in configlines: + return False + + if 'BR2_TARGET_MXS_BOOTLETS=y\n' in configlines and \ + 'BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD=y\n' in configlines and \ + 'BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD_NAME=""\n' in configlines: + configlines.remove('BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD=y\n') + configlines.append('BR2_TARGET_MXS_BOOTLETS_STMP37xx=y\n') + configlines.remove('BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD_NAME=""\n') + + if 'BR2_TARGET_MXS_BOOTLETS=y\n' in configlines and \ + 'BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT=y\n' in configlines and \ + 'BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT_URL=""\n' in configlines: + configlines.remove('BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT=y\n') + configlines.append('BR2_TARGET_MXS_BOOTLETS_FREESCALE=y\n') + configlines.remove('BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT_URL=""\n') + + if 'BR2_TARGET_MXS_BOOTLETS=y\n' in configlines and \ + 'BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL=y\n' in configlines and \ + 'BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL_URL=""\n' in configlines: + configlines.remove('BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL=y\n') + configlines.append('BR2_TARGET_MXS_BOOTLETS_FREESCALE=y\n') + configlines.remove('BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL_URL=""\n') + + if 'BR2_TARGET_OPENSBI=y\n' in configlines and \ + 'BR2_TARGET_OPENSBI_CUSTOM_GIT=y\n' in configlines and \ + 'BR2_TARGET_OPENSBI_CUSTOM_REPO_URL=""\n' in configlines: + configlines.remove('BR2_TARGET_OPENSBI_CUSTOM_GIT=y\n') + configlines.append('BR2_TARGET_OPENSBI_LATEST_VERSION=y\n') + configlines.remove('BR2_TARGET_OPENSBI_CUSTOM_REPO_URL=""\n') + + if 'BR2_TARGET_OPENSBI=y\n' in configlines and \ + 'BR2_TARGET_OPENSBI_CUSTOM_TARBALL=y\n' in configlines and \ + 'BR2_TARGET_OPENSBI_CUSTOM_TARBALL_LOCATION=""\n' in configlines: + configlines.remove('BR2_TARGET_OPENSBI_CUSTOM_TARBALL=y\n') + configlines.append('BR2_TARGET_OPENSBI_LATEST_VERSION=y\n') + configlines.remove('BR2_TARGET_OPENSBI_CUSTOM_TARBALL_LOCATION=""\n') + + if 'BR2_TARGET_OPENSBI=y\n' in configlines and \ + 'BR2_TARGET_OPENSBI_CUSTOM_VERSION=y\n' in configlines and \ + 'BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE=""\n' in configlines: + configlines.remove('BR2_TARGET_OPENSBI_CUSTOM_VERSION=y\n') + configlines.append('BR2_TARGET_OPENSBI_LATEST_VERSION=y\n') + configlines.remove('BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE=""\n') + + if 'BR2_PACKAGE_REFPOLICY=y\n' in configlines and \ + 'BR2_PACKAGE_REFPOLICY_CUSTOM_GIT=y\n' in configlines and \ + 'BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_URL=""\n' in configlines: + configlines.remove('BR2_PACKAGE_REFPOLICY_CUSTOM_GIT=y\n') + configlines.append('BR2_PACKAGE_REFPOLICY_UPSTREAM_VERSION=y\n') + configlines.remove('BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_URL=""\n') + + if 'BR2_PACKAGE_XENOMAI=y\n' in configlines and \ + 'BR2_PACKAGE_XENOMAI_CUSTOM_GIT=y\n' in configlines and \ + 'BR2_PACKAGE_XENOMAI_REPOSITORY=""\n' in configlines: + configlines.remove('BR2_PACKAGE_XENOMAI_CUSTOM_GIT=y\n') + configlines.append('BR2_PACKAGE_XENOMAI_LATEST_VERSION=y\n') + configlines.remove('BR2_PACKAGE_XENOMAI_REPOSITORY=""\n') + + if 'BR2_PACKAGE_XENOMAI=y\n' in configlines and \ + 'BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL=y\n' in configlines and \ + 'BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL_URL=""\n' in configlines: + configlines.remove('BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL=y\n') + configlines.append('BR2_PACKAGE_XENOMAI_LATEST_VERSION=y\n') + configlines.remove('BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL_URL=""\n') + + if 'BR2_PACKAGE_XENOMAI=y\n' in configlines and \ + 'BR2_PACKAGE_XENOMAI_CUSTOM_VERSION=y\n' in configlines and \ + 'BR2_PACKAGE_XENOMAI_CUSTOM_VERSION_VALUE=""\n' in configlines: + configlines.remove('BR2_PACKAGE_XENOMAI_CUSTOM_VERSION=y\n') + configlines.append('BR2_PACKAGE_XENOMAI_LATEST_VERSION=y\n') + configlines.remove('BR2_PACKAGE_XENOMAI_CUSTOM_VERSION_VALUE=""\n') + + if 'BR2_PACKAGE_XVISOR=y\n' in configlines and \ + 'BR2_PACKAGE_XVISOR_USE_CUSTOM_CONFIG=y\n' in configlines and \ + 'BR2_PACKAGE_XVISOR_CUSTOM_CONFIG_FILE=""\n' in configlines: + configlines.remove('BR2_PACKAGE_XVISOR_USE_CUSTOM_CONFIG=y\n') + configlines.append('BR2_PACKAGE_XVISOR_USE_DEFCONFIG=y\n') + configlines.remove('BR2_PACKAGE_XVISOR_CUSTOM_CONFIG_FILE=""\n') + + # Don't build igh-ethercat driver as they are highly + # kernel-version specific + for opt in ['8139TOO', 'E100', 'E1000', 'E1000E', 'R8169']: + optstr = 'BR2_PACKAGE_IGH_ETHERCAT_%s=y\n' % opt + if optstr in configlines: + configlines.remove(optstr) + + with open(configfile, "w+") as configf: + configf.writelines(configlines) + + return True + + +async def gen_config(args): + """Generate a new random configuration + """ + + sysinfo = SystemInfo() + + # Create output directory + if not os.path.exists(args.outputdir): + os.makedirs(args.outputdir) + + # Calculate path to config file + if args.outputdir == os.path.abspath(os.path.join(args.buildrootdir, "output")): + configfile = os.path.join(args.buildrootdir, ".config") + else: + configfile = os.path.join(args.outputdir, ".config") + + # Now, generate the random selection of packages, and fixup + # things if needed. + # Safe-guard, in case we can not quickly come to a valid + # configuration: allow at most 100 (arbitrary) iterations. + loop = 0 + while True: + if loop == 100: + print("ERROR: cannot generate random configuration after 100 iterations", + file=sys.stderr) + return 1 + print("Generating configuration, loop %d" % loop) + loop += 1 + proc = await asyncio.create_subprocess_exec( + "make", "O=%s" % args.outputdir, "-C", args.buildrootdir, + "KCONFIG_SEED=0x%s" % hexlify(os.urandom(4)).decode("ascii").upper(), + "KCONFIG_PROBABILITY=%d" % args.probability, + "randconfig", + stdout=asyncio.subprocess.DEVNULL, + stderr=asyncio.subprocess.DEVNULL) + ret = await proc.wait() + if ret: + return ret + + if await fixup_config(sysinfo, configfile): + print(" configuration valid") + break + + configlines = list() + + # Allow hosts with old certificates to download over https + configlines.append("BR2_WGET=\"wget -nd -t 3 --no-check-certificate\"\n") + configlines.append("BR2_CURL=\"curl --ftp-pasv --retry 3 --insecure\"\n") + + # Randomly enable BR2_REPRODUCIBLE 10% of times + # also enable tar filesystem images for testing + if await sysinfo.has("diffoscope") and randint(0, 10) == 0: + configlines.append("BR2_REPRODUCIBLE=y\n") + configlines.append("BR2_TARGET_ROOTFS_TAR=y\n") + + # From time to time, ignore sources.buildroot.net to really fetch + # from upstream + if randint(0, 1) == 0: + configlines.append("""BR2_BACKUP_SITE=""\n""") + + with open(configfile, "a") as configf: + configf.writelines(configlines) + + print(" olddefconfig") + proc = await asyncio.create_subprocess_exec( + "make", "O=%s" % args.outputdir, "-C", args.buildrootdir, "olddefconfig", + stdout=asyncio.subprocess.DEVNULL, + stderr=asyncio.subprocess.DEVNULL) + ret = await proc.wait() + if ret: + return ret + + print(" savedefconfig") + proc = await asyncio.create_subprocess_exec( + "make", "O=%s" % args.outputdir, "-C", args.buildrootdir, "savedefconfig", + stdout=asyncio.subprocess.DEVNULL, + stderr=asyncio.subprocess.DEVNULL) + + ret = await proc.wait() + if ret: + return ret + + print(" dependencies") + proc = await asyncio.create_subprocess_exec( + "make", "O=%s" % args.outputdir, "-C", args.buildrootdir, "dependencies", + stdout=asyncio.subprocess.DEVNULL, + stderr=asyncio.subprocess.DEVNULL) + return await proc.wait() + + +if __name__ == '__main__': + import argparse + + class Range(argparse.Action): + def __init__(self, minimum=None, maximum=None, *args, **kwargs): + self.min = minimum + self.max = maximum + kwargs["metavar"] = "[%d-%d]" % (self.min, self.max) + super(Range, self).__init__(*args, **kwargs) + + def __call__(self, parser, namespace, value, option_string=None): + if not (self.min <= value <= self.max): + msg = 'invalid choice: %r (choose from [%d-%d])' % \ + (value, self.min, self.max) + raise argparse.ArgumentError(self, msg) + setattr(namespace, self.dest, value) + + parser = argparse.ArgumentParser(description="Generate a random configuration") + parser.add_argument("--outputdir", "-o", + help="Output directory (relative to current directory)", + type=str, default='output') + parser.add_argument("--buildrootdir", "-b", + help="Buildroot directory (relative to current directory)", + type=str, default='.') + parser.add_argument("--probability", "-p", + help="Override the KCONFIG_PROBABILITY value", + type=int, action=Range, minimum=0, maximum=100, + default=randint(1, 20)) + parser.add_argument("--toolchains-csv", help="Legacy, unused", type=str) + parser.add_argument("--no-toolchains-csv", help="Legacy, unused", type=bool) + + args = parser.parse_args() + + # We need the absolute path to use with O=, because the relative + # path to the output directory here is not relative to the + # Buildroot sources, but to the current directory. + args.outputdir = os.path.abspath(args.outputdir) + + try: + if sys.version_info < (3, 7): + loop = asyncio.get_event_loop() + ret = loop.run_until_complete(gen_config(args)) + else: + ret = asyncio.run(gen_config(args)) + except Exception: + traceback.print_exc() + parser.exit(1) + parser.exit(ret) diff --git a/utils/get-developers b/utils/get-developers new file mode 100755 index 00000000..9ab5c450 --- /dev/null +++ b/utils/get-developers @@ -0,0 +1,117 @@ +#!/usr/bin/env python3 + +import argparse +import getdeveloperlib +import sys + + +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('-f', dest='files', nargs='*', + help='find developers in charge of these files') + parser.add_argument('-c', dest='check', action='store_const', + const=True, help='list files not handled by any developer') + parser.add_argument('-e', dest='email', action='store_const', + const=True, help='only list affected developer email addresses') + parser.add_argument('-v', dest='validate', action='store_const', + const=True, help='validate syntax of DEVELOPERS file') + parser.add_argument('-d', dest='filename', action='store', default=None, + help='override the default DEVELOPERS file (for debug)') + return parser.parse_args() + + +def __main__(): + 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.files: + action += 1 + if args.check: + action += 1 + if args.validate: + 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 + + devs = getdeveloperlib.parse_developers(args.filename) + if devs is None: + sys.exit(1) + + # Validation is done by parse_developers() above and we error out + # if the validation didn't work, so if we reach here, it means + # validation passed, so we can simply bail out in success. + if args.validate: + 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 files action + if args.files is not None: + for dev in devs: + for f in args.files: + if dev.hasfile(f): + print(dev.name) + break + + # 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) + + if args.email: + for dev in matching_devs: + print(dev) + else: + 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/utils/getdeveloperlib.py b/utils/getdeveloperlib.py new file mode 100644 index 00000000..469360b8 --- /dev/null +++ b/utils/getdeveloperlib.py @@ -0,0 +1,293 @@ +from io import open +import os +import re +import glob +import subprocess +import sys +import unittest + +brpath = os.path.normpath(os.path.join(os.path.dirname(__file__), "..")) + +# +# Patch parsing functions +# + +FIND_INFRA_IN_PATCH = re.compile(r"^\+\$\(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("+++ ") and 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(r"^\$\(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 line in f: + line = line.strip() + m = FIND_INFRA_IN_MK.match(line) + if m: + return m.group(2) + return None + + +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 + return (allfiles, allinfras) + + +# +# Unit-test parsing functions +# + +def get_all_test_cases(suite): + """Generate all test-cases from a given test-suite. + :return: (test.module, test.name)""" + if issubclass(type(suite), unittest.TestSuite): + for test in suite: + for res in get_all_test_cases(test): + yield res + else: + yield (suite.__module__, suite.__class__.__name__) + + +def list_unittests(): + """Use the unittest module to retreive all test cases from a given + directory""" + loader = unittest.TestLoader() + suite = loader.discover(os.path.join(brpath, "support", "testing")) + tests = {} + for module, test in get_all_test_cases(suite): + module_path = os.path.join("support", "testing", *module.split('.')) + tests.setdefault(module_path, []).append('%s.%s' % (module, test)) + return tests + + +unittests = {} + + +# +# 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) + self.runtime_tests = parse_developer_runtime_tests(files) + self.defconfigs = parse_developer_defconfigs(files) + + def hasfile(self, f): + for fs in self.files: + if f.startswith(fs): + return True + return False + + def __repr__(self): + name = '\'' + self.name.split(' <')[0][:20] + '\'' + things = [] + if len(self.files): + things.append('{} files'.format(len(self.files))) + if len(self.packages): + things.append('{} pkgs'.format(len(self.packages))) + if len(self.architectures): + things.append('{} archs'.format(len(self.architectures))) + if len(self.infras): + things.append('{} infras'.format(len(self.infras))) + if len(self.runtime_tests): + things.append('{} tests'.format(len(self.runtime_tests))) + if len(self.defconfigs): + things.append('{} defconfigs'.format(len(self.defconfigs))) + if things: + return 'Developer <{} ({})>'.format(name, ', '.join(things)) + else: + return 'Developer <' + name + '>' + + +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(os.path.join(brpath, 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 line in f: + line = line.strip() + if line == "config BR2_ARCH": + parsing_arches = True + continue + if parsing_arches: + m = re.match(r"^\s*default \"([^\"]*)\".*", line) + 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(r"^.*/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(r"^package/pkg-([^.]*).mk$", fname) + if m: + infras.add(m.group(1)) + return infras + + +def parse_developer_defconfigs(fnames): + """Given a list of file names, returns the config names + corresponding to defconfigs.""" + return {os.path.basename(fname[:-10]) + for fname in fnames + if fname.endswith('_defconfig')} + + +def parse_developer_runtime_tests(fnames): + """Given a list of file names, returns the runtime tests + corresponding to the file.""" + all_files = [] + # List all files recursively + for fname in fnames: + if os.path.isdir(fname): + for root, _dirs, files in os.walk(os.path.join(brpath, fname)): + all_files += [os.path.join(root, f) for f in files] + else: + all_files.append(fname) + + # Get all runtime tests + runtimes = set() + for f in all_files: + name = os.path.splitext(f)[0] + if name in unittests: + runtimes |= set(unittests[name]) + return runtimes + + +def parse_developers(filename=None): + """Parse the DEVELOPERS file and return a list of Developer objects.""" + developers = [] + linen = 0 + global unittests + unittests = list_unittests() + developers_fname = filename or os.path.join(brpath, 'DEVELOPERS') + with open(developers_fname, mode='r', encoding='utf_8') as f: + files = [] + name = None + for line in f: + linen += 1 + line = line.strip() + if line.startswith("#"): + continue + elif line.startswith("N:"): + if name is not None or len(files) != 0: + print("Syntax error in DEVELOPERS file, line %d" % (linen - 1), + file=sys.stderr) + return None + name = line[2:].strip() + elif line.startswith("F:"): + fname = line[2:].strip() + dev_files = glob.glob(os.path.join(brpath, fname)) + if len(dev_files) == 0: + print("WARNING: '%s' doesn't match any file, line %d" % (fname, linen), + file=sys.stderr) + for f in dev_files: + dev_file = os.path.relpath(f, brpath) + dev_file = dev_file.replace(os.sep, '/') # force unix sep + if f[-1] == '/': # relpath removes the trailing / + dev_file = dev_file + '/' + files.append(dev_file) + elif line == "": + if not name: + continue + developers.append(Developer(name, files)) + files = [] + name = None + else: + print("Syntax error in DEVELOPERS file, line %d: '%s'" % (linen, line), + file=sys.stderr) + return None + # 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 is None: + basepath = os.getcwd() + cmd = ["git", "--git-dir", os.path.join(basepath, ".git"), "ls-files"] + files = subprocess.check_output(cmd).decode(sys.stdout.encoding).strip().split("\n") + unhandled_files = [] + for f in files: + handled = False + for d in developers: + if d.hasfile(f): + handled = True + break + if not handled: + unhandled_files.append(f) + return unhandled_files diff --git a/utils/readme.txt b/utils/readme.txt new file mode 100644 index 00000000..6488d13c --- /dev/null +++ b/utils/readme.txt @@ -0,0 +1,53 @@ +This directory contains various useful scripts and tools for working +with Buildroot. You need not add this directory in your PATH to use +any of those tools, but you may do so if you want. + +brmake + a script that can be run instead of make, that prepends the date in + front of each line, redirects all of the build output to a file + ("'br.log' in the current directory), and just outputs the Buildroot + messages (those lines starting with >>>) on stdout. + Do not run this script for interactive configuration (e.g. menuconfig) + or on an unconfigured directory. The output is redirected so you will see + nothing. + +check-package + a script that checks the coding style across the buildroot tree. It + checks package's Config.in and .mk files, runs shellcheck for all shell + scripts, flake8 for python files, checks for typoes, etc. + It checks the .checkpackageignore file if errors should be ignored and + errors if there's a file listed that doesn't produce an error. + +docker-run + a script that runs a command (like make check-package) inside the + buildroot CI docker container; pass no command to get an interactive + shell. + +genrandconfig + a script that generates a random configuration, used by the autobuilders + (http://autobuild.buildroot.org). It selects a random toolchain from + support/config-fragments/autobuild and randomly selects packages to build. + +get-developers + a script to return the list of people interested in a specific part + of Buildroot, so they can be Cc:ed on a mail. Accepts a patch as + input, a package name or and architecture name. + +scancpan + a script to create a Buildroot package by scanning a CPAN module + description. + +scanpypi + a script to create a Buildroot package by scanning a PyPI package + description. + +size-stats-compare + a script to compare the rootfs size between two different Buildroot + configurations. This can be used to identify the size impact of + a specific option, of a set of specific options, or of an update + to a newer Buildroot version... + +test-pkg + a script that tests a specific package against a set of various + toolchains, with the goal to detect toolchain-related dependencies + (wchar, threads...) diff --git a/utils/scancpan b/utils/scancpan new file mode 100755 index 00000000..e7739a8a --- /dev/null +++ b/utils/scancpan @@ -0,0 +1,1000 @@ +#!/usr/bin/env perl + +# This chunk of stuff was generated by App::FatPacker. To find the original +# file's code, look for the end of this BEGIN block or the string 'FATPACK' +BEGIN { +my %fatpacked; + +$fatpacked{"MetaCPAN/API/Tiny.pm"} = <<'METACPAN_API_TINY'; + package MetaCPAN::API::Tiny; + { + $MetaCPAN::API::Tiny::VERSION = '1.131730'; + } + use strict; + use warnings; + # ABSTRACT: A Tiny API client for MetaCPAN + + use Carp; + use JSON::PP 'encode_json', 'decode_json'; + use HTTP::Tiny; + + + sub new { + my ($class, @args) = @_; + + $#_ % 2 == 0 + or croak 'Arguments must be provided as name/value pairs'; + + my %params = @args; + + die 'ua_args must be an array reference' + if $params{ua_args} && ref($params{ua_args}) ne 'ARRAY'; + + my $self = +{ + base_url => $params{base_url} || 'https://api.metacpan.org/v0', + ua => $params{ua} || HTTP::Tiny->new( + $params{ua_args} + ? @{$params{ua_args}} + : (agent => 'MetaCPAN::API::Tiny/' + . ($MetaCPAN::API::VERSION || 'xx'))), + }; + + return bless($self, $class); + } + + sub _build_extra_params { + my $self = shift; + + @_ % 2 == 0 + or croak 'Incorrect number of params, must be key/value'; + + my %extra = @_; + my $ua = $self->{ua}; + + foreach my $key (keys %extra) + { + # The implementation in HTTP::Tiny uses + instead of %20, fix that + $extra{$key} = $ua->_uri_escape($extra{$key}); + $extra{$key} =~ s/\+/%20/g; + } + + my $params = join '&', map { "$_=" . $extra{$_} } sort keys %extra; + + return $params; + } + + + # /source/{author}/{release}/{path} + sub source { + my $self = shift; + my %opts = @_ ? @_ : (); + my $url = ''; + my $error = "Provide 'author' and 'release' and 'path'"; + + %opts or croak $error; + + if ( + defined ( my $author = $opts{'author'} ) && + defined ( my $release = $opts{'release'} ) && + defined ( my $path = $opts{'path'} ) + ) { + $url = "source/$author/$release/$path"; + } else { + croak $error; + } + + $url = $self->{base_url} . "/$url"; + + my $result = $self->{ua}->get($url); + $result->{'success'} + or croak "Failed to fetch '$url': " . $result->{'reason'}; + + return $result->{'content'}; + } + + + # /release/{distribution} + # /release/{author}/{release} + sub release { + my $self = shift; + my %opts = @_ ? @_ : (); + my $url = ''; + my $error = "Either provide 'distribution', or 'author' and 'release', " . + "or 'search'"; + + %opts or croak $error; + + my %extra_opts = (); + + if ( defined ( my $dist = $opts{'distribution'} ) ) { + $url = "release/$dist"; + } elsif ( + defined ( my $author = $opts{'author'} ) && + defined ( my $release = $opts{'release'} ) + ) { + $url = "release/$author/$release"; + } elsif ( defined ( my $search_opts = $opts{'search'} ) ) { + ref $search_opts && ref $search_opts eq 'HASH' + or croak $error; + + %extra_opts = %{$search_opts}; + $url = 'release/_search'; + } else { + croak $error; + } + + return $self->fetch( $url, %extra_opts ); + } + + + # /pod/{module} + # /pod/{author}/{release}/{path} + sub pod { + my $self = shift; + my %opts = @_ ? @_ : (); + my $url = ''; + my $error = "Either provide 'module' or 'author and 'release' and 'path'"; + + %opts or croak $error; + + if ( defined ( my $module = $opts{'module'} ) ) { + $url = "pod/$module"; + } elsif ( + defined ( my $author = $opts{'author'} ) && + defined ( my $release = $opts{'release'} ) && + defined ( my $path = $opts{'path'} ) + ) { + $url = "pod/$author/$release/$path"; + } else { + croak $error; + } + + # check content-type + my %extra = (); + if ( defined ( my $type = $opts{'content-type'} ) ) { + $type =~ m{^ text/ (?: html|plain|x-pod|x-markdown ) $}x + or croak 'Incorrect content-type provided'; + + $extra{headers}{'content-type'} = $type; + } + + $url = $self->{base_url}. "/$url"; + + my $result = $self->{ua}->get( $url, \%extra ); + $result->{'success'} + or croak "Failed to fetch '$url': " . $result->{'reason'}; + + return $result->{'content'}; + } + + + # /module/{module} + sub module { + my $self = shift; + my $name = shift; + + $name or croak 'Please provide a module name'; + + return $self->fetch("module/$name"); + } + + + # file() is a synonym of module + sub file { goto &module } + + + # /author/{author} + sub author { + my $self = shift; + my ( $pause_id, $url, %extra_opts ); + + if ( @_ == 1 ) { + $url = 'author/' . shift; + } elsif ( @_ == 2 ) { + my %opts = @_; + + if ( defined $opts{'pauseid'} ) { + $url = "author/" . $opts{'pauseid'}; + } elsif ( defined $opts{'search'} ) { + my $search_opts = $opts{'search'}; + + ref $search_opts && ref $search_opts eq 'HASH' + or croak "'search' key must be hashref"; + + %extra_opts = %{$search_opts}; + $url = 'author/_search'; + } else { + croak 'Unknown option given'; + } + } else { + croak 'Please provide an author PAUSEID or a "search"'; + } + + return $self->fetch( $url, %extra_opts ); + } + + + + sub fetch { + my $self = shift; + my $url = shift; + my $extra = $self->_build_extra_params(@_); + my $base = $self->{base_url}; + my $req_url = $extra ? "$base/$url?$extra" : "$base/$url"; + + my $result = $self->{ua}->get($req_url); + return $self->_decode_result( $result, $req_url ); + } + + + sub post { + my $self = shift; + my $url = shift; + my $query = shift; + my $base = $self->{base_url}; + + defined $url + or croak 'First argument of URL must be provided'; + + ref $query and ref $query eq 'HASH' + or croak 'Second argument of query hashref must be provided'; + + my $query_json = encode_json( $query ); + my $result = $self->{ua}->request( + 'POST', + "$base/$url", + { + headers => { 'Content-Type' => 'application/json' }, + content => $query_json, + } + ); + + return $self->_decode_result( $result, $url, $query_json ); + } + + sub _decode_result { + my $self = shift; + my ( $result, $url, $original ) = @_; + my $decoded_result; + + ref $result and ref $result eq 'HASH' + or croak 'First argument must be hashref'; + + defined $url + or croak 'Second argument of a URL must be provided'; + + if ( defined ( my $success = $result->{'success'} ) ) { + my $reason = $result->{'reason'} || ''; + $reason .= ( defined $original ? " (request: $original)" : '' ); + + $success or croak "Failed to fetch '$url': $reason"; + } else { + croak 'Missing success in return value'; + } + + defined ( my $content = $result->{'content'} ) + or croak 'Missing content in return value'; + + eval { $decoded_result = decode_json $content; 1 } + or do { croak "Couldn't decode '$content': $@" }; + + return $decoded_result; + } + + 1; + + __END__ + + =pod + + =head1 NAME + + MetaCPAN::API::Tiny - A Tiny API client for MetaCPAN + + =head1 VERSION + + version 1.131730 + + =head1 DESCRIPTION + + This is the Tiny version of L. It implements a compatible API + with a few notable exceptions: + + =over 4 + + =item Attributes are direct hash access + + The attributes defined using Mo(o|u)se are now accessed via the blessed hash + directly. There are no accessors defined to access this elements. + + =item Exception handling + + Instead of using Try::Tiny, raw evals are used. This could potentially cause + issues, so just be aware. + + =item Testing + + Test::Fatal was replaced with an eval implementation of exception(). + Test::TinyMocker usage is retained, but may be absorbed since it is pure perl + + =back + + =head1 CLASS_METHODS + + =head2 new + + new is the constructor for MetaCPAN::API::Tiny. In the non-tiny version of this + module, this is provided via Any::Moose built from the attributes defined. In + the tiny version, we define our own constructor. It takes the same arguments + and provides similar checks to MetaCPAN::API with regards to arguments passed. + + =head1 PUBLIC_METHODS + + =head2 source + + my $source = $mcpan->source( + author => 'DOY', + release => 'Moose-2.0201', + path => 'lib/Moose.pm', + ); + + Searches MetaCPAN for a module or a specific release and returns the plain source. + + =head2 release + + my $result = $mcpan->release( distribution => 'Moose' ); + + # or + my $result = $mcpan->release( author => 'DOY', release => 'Moose-2.0001' ); + + Searches MetaCPAN for a dist. + + You can do complex searches using 'search' parameter: + + # example lifted from MetaCPAN docs + my $result = $mcpan->release( + search => { + author => "OALDERS AND ", + filter => "status:latest", + fields => "name", + size => 1, + }, + ); + + =head2 pod + + my $result = $mcpan->pod( module => 'Moose' ); + + # or + my $result = $mcpan->pod( + author => 'DOY', + release => 'Moose-2.0201', + path => 'lib/Moose.pm', + ); + + Searches MetaCPAN for a module or a specific release and returns the POD. + + =head2 module + + my $result = $mcpan->module('MetaCPAN::API'); + + Searches MetaCPAN and returns a module's ".pm" file. + + =head2 file + + A synonym of L + + =head2 author + + my $result1 = $mcpan->author('XSAWYERX'); + my $result2 = $mcpan->author( pauseid => 'XSAWYERX' ); + + Searches MetaCPAN for a specific author. + + You can do complex searches using 'search' parameter: + + # example lifted from MetaCPAN docs + my $result = $mcpan->author( + search => { + q => 'profile.name:twitter', + size => 1, + }, + ); + + =head2 fetch + + my $result = $mcpan->fetch('/release/distribution/Moose'); + + # with parameters + my $more = $mcpan->fetch( + '/release/distribution/Moose', + param => 'value', + ); + + This is a helper method for API implementations. It fetches a path from MetaCPAN, decodes the JSON from the content variable and returns it. + + You don't really need to use it, but you can in case you want to write your own extension implementation to MetaCPAN::API. + + It accepts an additional hash as "GET" parameters. + + =head2 post + + # /release&content={"query":{"match_all":{}},"filter":{"prefix":{"archive":"Cache-Cache-1.06"}}} + my $result = $mcpan->post( + 'release', + { + query => { match_all => {} }, + filter => { prefix => { archive => 'Cache-Cache-1.06' } }, + }, + ); + + The POST equivalent of the "fetch()" method. It gets the path and JSON request. + + =head1 THANKS + + Overall the tests and code were ripped directly from MetaCPAN::API and + tiny-fied. A big thanks to Sawyer X for writing the original module. + + =head1 AUTHOR + + Nicholas R. Perez + + =head1 COPYRIGHT AND LICENSE + + This software is copyright (c) 2013 by Nicholas R. Perez . + + This is free software; you can redistribute it and/or modify it under + the same terms as the Perl 5 programming language system itself. + + =cut +METACPAN_API_TINY + +s/^ //mg for values %fatpacked; + +unshift @INC, sub { + if (my $fat = $fatpacked{$_[1]}) { + if ($] < 5.008) { + return sub { + return 0 unless length $fat; + $fat =~ s/^([^\n]*\n?)//; + $_ = $1; + return 1; + }; + } + open my $fh, '<', \$fat + or die "FatPacker error loading $_[1] (could be a perl installation issue?)"; + return $fh; + } + return +}; + +} # END OF FATPACK CODE + + +use 5.010; +use strict; +use warnings; +use Fatal qw(open close); + +use Getopt::Long; +use Pod::Usage; +use File::Basename; +use File::Path qw(make_path); +use Module::CoreList; +use HTTP::Tiny; +use Safe; +use MetaCPAN::API::Tiny; +use Digest::SHA qw(sha256_hex); +use Text::Wrap; +$Text::Wrap::columns = 62; + +# Below, 5.036 should be aligned with the version of perl actually +# bundled in Buildroot: +die <<"MSG" if $] < 5.036; +This script needs a host perl with the same major version as Buildroot target perl. + +Your current host perl is: + $^X + version $] + +You may install a local one by running: + perlbrew install perl-5.36.0 +MSG + +my ($help, $man, $quiet, $force, $recommend, $test, $host); +my $target = 1; +GetOptions( 'help|?' => \$help, + 'man' => \$man, + 'quiet|q' => \$quiet, + 'force|f' => \$force, + 'host!' => \$host, + 'target!' => \$target, + 'recommend' => \$recommend, + 'test' => \$test +) or pod2usage(-exitval => 1); +pod2usage(-exitval => 0) if $help; +pod2usage(-exitval => 0, -verbose => 2) if $man; +pod2usage(-exitval => 1) if scalar @ARGV == 0; + +my %dist; # name -> metacpan data +my %need_target; # name -> 1 if target package is needed +my %need_host; # name -> 1 if host package is needed +my %need_dlopen; # name -> 1 if requires dynamic library +my %is_xs; # name -> 1 if XS module +my %deps_build; # name -> list of host dependencies +my %deps_runtime; # name -> list of target dependencies +my %license_files; # name -> hash of license files +my %checksum; # author -> list of checksum +my $mirror = 'https://cpan.metacpan.org'; # a CPAN mirror +my $mcpan = MetaCPAN::API::Tiny->new(base_url => 'https://fastapi.metacpan.org/v1'); +my $ua = HTTP::Tiny->new(); +my $new_pkgs; + +my %white_list = ( + 'ExtUtils-Config' => 1, + 'ExtUtils-InstallPaths' => 1, + 'ExtUtils-Helpers' => 1, + 'File-ShareDir-Install' => 1, + 'Module-Build' => 1, + 'Module-Build-Tiny' => 1, +); +my @info = (); + +sub get_checksum { + my ($url) = @_; + my ($path) = $url =~ m|^[^:/?#]+://[^/?#]*([^?#]*)|; + my ($basename, $dirname) = fileparse( $path ); + unless ($checksum{$dirname}) { + my $url = $mirror . $dirname . q{CHECKSUMS}; + my $response = $ua->get($url); + $checksum{$dirname} = $response->{content}; + } + my $chksum = Safe->new->reval($checksum{$dirname}); + return $chksum->{$basename}, $basename; +} + +sub is_xs { + my ($manifest) = @_; + # This heuristic determines if a module is a native extension, by searching + # some file extension types in the MANIFEST of the distribution. + # It was inspired by http://deps.cpantesters.org/static/purity.html + return $manifest =~ m/\.(swg|xs|c|h|i)[\n\s]/; +} + +sub find_license_files { + my ($manifest) = @_; + my @license_files; + foreach (split /\n/, $manifest) { + next if m|/|; + s|\s+.*$||; + push @license_files, $_ if m/(ARTISTIC|COPYING|COPYRIGHT|GPL\S*|LICENSE|LICENCE)/i; + } + if (scalar @license_files == 0 && $manifest =~ m/(README)[\n\s]/i) { + @license_files = ($1); + } + if (scalar @license_files == 0 && $manifest =~ m/(README\.md)[\n\s]/i) { + @license_files = ($1); + } + if (scalar @license_files == 0 && $manifest =~ m/(README\.pod)[\n\s]/i) { + @license_files = ($1); + } + return @license_files; +} + +sub want_test { + my ($distname) = @_; + return 1 if $need_dlopen{$distname} && scalar @{$deps_runtime{$distname}} > 0; +} + +sub get_dependencies { + my ($distname) = @_; + my %dep = map { $_ => 1 } @{$deps_runtime{$distname}}; + for my $direct (@{$deps_runtime{$distname}}) { + for (get_dependencies( $direct )) { + $dep{$_} = 1; + } + } + return keys %dep; +} + +sub get_indirect_dependencies { + my ($distname) = @_; + my %indirect; + my %direct = map { $_ => 1 } @{$deps_runtime{$distname}}; + for my $dep (get_dependencies( $distname )) { + $indirect{$dep} = 1 unless exists $direct{$dep}; + } + return keys %indirect; +} + +sub fetch { + my ($name, $need_target, $need_host, $top) = @_; + $need_target{$name} = $need_target if $need_target; + $need_host{$name} = $need_host if $need_host; + unless ($dist{$name} && !$top) { + say qq{fetch ${name}} unless $quiet; + my $result = $mcpan->release( distribution => $name ); + my $main_module = $result->{main_module}; + push @info, qq{[$name] $main_module is a core module} + if $top && Module::CoreList::is_core( $main_module, undef, $] ); + $dist{$name} = $result; + $license_files{$name} = {}; + eval { + my $author = $result->{author}; + my $release = $name . q{-} . $result->{version}; + my $manifest = $mcpan->source( author => $author, release => $release, path => 'MANIFEST' ); + $need_dlopen{$name} = $is_xs{$name} = is_xs( $manifest ); + foreach my $fname (find_license_files( $manifest )) { + my $license = $mcpan->source( author => $author, release => $release, path => $fname ); + $license_files{$name}->{$fname} = sha256_hex( $license ); + } + }; + if ($@) { + warn $@; + } + my %build = (); + my %runtime = (); + my %optional = (); + foreach my $dep (@{$result->{dependency}}) { + my $modname = ${$dep}{module}; + next if $modname eq q{perl}; + next if $modname =~ m|^Alien|; + next if $modname =~ m|^Win32|; + next if !($test && $top) && $modname =~ m|^Test|; + next if Module::CoreList::is_core( $modname, undef, $] ); + # we could use the host Module::CoreList data, because host perl and + # target perl have the same major version + next if ${$dep}{phase} eq q{develop}; + next if ${$dep}{phase} eq q{x_Dist_Zilla}; + next if !($test && $top) && ${$dep}{phase} eq q{test}; + my $distname = $mcpan->module( $modname )->{distribution}; + if (${$dep}{phase} eq q{runtime}) { + if (${$dep}{relationship} eq q{requires}) { + $runtime{$distname} = 1; + } + else { + $optional{$distname} = 1 if $recommend && $top; + } + } + else { # configure, build + $build{$distname} = 1; + push @info, qq{[$name] suspicious dependency on $distname} + unless exists $white_list{$distname}; + } + } + $deps_build{$name} = [keys %build]; + $deps_runtime{$name} = [keys %runtime]; + foreach my $distname (@{$deps_build{$name}}) { + fetch( $distname, 0, 1 ); + } + foreach my $distname (@{$deps_runtime{$name}}) { + fetch( $distname, $need_target, $need_host ); + $need_dlopen{$name} ||= $need_dlopen{$distname}; + } + foreach my $distname (keys %optional) { + fetch( $distname, $need_target, $need_host ); + } + } + return; +} + +foreach my $distname (@ARGV) { + # Command-line's distributions + fetch( $distname, !!$target, !!$host, 1 ); +} +say scalar keys %dist, q{ packages fetched.} unless $quiet; + +# Buildroot package name: lowercase +sub fsname { + my $name = shift; + $name =~ s|_|-|g; + return q{perl-} . lc $name; +} + +# Buildroot variable name: uppercase +sub brname { + my $name = shift; + $name =~ s|-|_|g; + return uc $name; +} + +# Buildroot requires license name as in https://spdx.org/licenses/ +sub brlicense { + my $license = shift; + $license =~ s|apache_1_1|Apache-1.1|; + $license =~ s|apache_2_0|Apache-2.0|; + $license =~ s|artistic_2|Artistic-2.0|; + $license =~ s|artistic|Artistic-1.0|; + $license =~ s|lgpl_2_1|LGPL-2.1|; + $license =~ s|lgpl_3_0|LGPL-3.0|; + $license =~ s|gpl_2|GPL-2.0|; + $license =~ s|gpl_3|GPL-3.0|; + $license =~ s|mit|MIT|; + $license =~ s|mozilla_1_1|Mozilla-1.1|; + $license =~ s|openssl|OpenSSL|; + $license =~ s|perl_5|Artistic or GPL-1.0+|; + return $license; +} + +while (my ($distname, $dist) = each %dist) { + my $fsname = fsname( $distname ); + my $dirname = q{package/} . $fsname; + my $cfgname = $dirname . q{/Config.in}; + my $mkname = $dirname . q{/} . $fsname . q{.mk}; + my $hashname = $dirname . q{/} . $fsname . q{.hash}; + my $brname = brname( $fsname ); + my $testdir = q{support/testing/tests/package}; + my $testname = $testdir . q{/test_} . lc $brname . q{.py}; + unless (-d $dirname) { + make_path $dirname; + $new_pkgs = 1; + } + if ($need_target{$distname} && ($force || !-f $cfgname)) { + $dist->{abstract} =~ s|\s+$||; + $dist->{abstract} .= q{.} unless $dist->{abstract} =~ m|\.$|; + my $abstract = wrap( q{}, qq{\t }, $dist->{abstract} ); + my $homepage = $dist->{resources}->{homepage} || qq{https://metacpan.org/release/${distname}}; + say qq{write ${cfgname}} unless $quiet; + open my $fh, q{>}, $cfgname; + say {$fh} qq{config BR2_PACKAGE_${brname}}; + say {$fh} qq{\tbool "${fsname}"}; + say {$fh} qq{\tdepends on !BR2_STATIC_LIBS} if $need_dlopen{$distname}; + foreach my $dep (sort @{$deps_runtime{$distname}}) { + my $brdep = brname( fsname( $dep ) ); + say {$fh} qq{\tselect BR2_PACKAGE_${brdep} # runtime}; + } + say {$fh} qq{\thelp}; + say {$fh} qq{\t ${abstract}\n} if $abstract; + say {$fh} qq{\t ${homepage}}; + if ($need_dlopen{$distname}) { + say {$fh} qq{\ncomment "${fsname} needs a toolchain w/ dynamic library"}; + say {$fh} qq{\tdepends on BR2_STATIC_LIBS}; + } + close $fh; + } + if ($force || !-f $mkname) { + my $version = $dist->{version}; + my ($path) = $dist->{download_url} =~ m|^[^:/?#]+://[^/?#]*([^?#]*)|; + # this URL contains only the scheme, auth and path parts (but no query and fragment parts) + # the scheme is not used, because the job is done by the BR download infrastructure + # the auth part is not used, because we use $(BR2_CPAN_MIRROR) + my ($filename, $directories, $suffix) = fileparse( $path, q{tar.gz}, q{tgz} ); + $directories =~ s|/$||; + my @dependencies = map( { q{host-} . fsname( $_ ); } sort @{$deps_build{$distname}} ); + my $dependencies = join qq{ \\\n\t}, @dependencies; + $dependencies = qq{\\\n\t} . $dependencies if scalar @dependencies > 1; + my @host_dependencies = map { q{host-} . fsname( $_ ); } sort( @{$deps_build{$distname}}, + @{$deps_runtime{$distname}} ); + my $host_dependencies = join qq{ \\\n\t}, @host_dependencies; + $host_dependencies = qq{\\\n\t} . $host_dependencies if scalar @host_dependencies > 1; + my $license = brlicense( ref $dist->{license} eq 'ARRAY' + ? join q{ or }, @{$dist->{license}} + : $dist->{license} ); + my $license_files = join q{ }, sort keys %{$license_files{$distname}}; + if ($license_files && (!$license || $license eq q{unknown})) { + push @info, qq{[$distname] undefined LICENSE, see $license_files}; + $license = q{???}; + } + say qq{write ${mkname}} unless $quiet; + open my $fh, q{>}, $mkname; + say {$fh} qq{################################################################################}; + say {$fh} qq{#}; + say {$fh} qq{# ${fsname}}; + say {$fh} qq{#}; + say {$fh} qq{################################################################################}; + say {$fh} qq{}; + say {$fh} qq{${brname}_VERSION = ${version}}; + say {$fh} qq{${brname}_SOURCE = ${distname}-\$(${brname}_VERSION).${suffix}}; + say {$fh} qq{${brname}_SITE = \$(BR2_CPAN_MIRROR)${directories}}; + say {$fh} qq{${brname}_DEPENDENCIES = ${dependencies}} if $need_target{$distname} && $dependencies; + say {$fh} qq{HOST_${brname}_DEPENDENCIES = ${host_dependencies}} if $need_host{$distname} && $host_dependencies; + say {$fh} qq{${brname}_LICENSE = ${license}} if $license; + say {$fh} qq{${brname}_LICENSE_FILES = ${license_files}} if $license_files; + say {$fh} qq{${brname}_DISTNAME = ${distname}}; + say {$fh} qq{}; + say {$fh} qq{\$(eval \$(perl-package))} if $need_target{$distname}; + say {$fh} qq{\$(eval \$(host-perl-package))} if $need_host{$distname}; + close $fh; + } + if ($force || !-f $hashname) { + my ($checksum, $filename) = get_checksum($dist->{download_url}); + my $md5 = $checksum->{md5}; + my $sha256 = $checksum->{sha256}; + say qq{write ${hashname}} unless $quiet; + open my $fh, q{>}, $hashname; + say {$fh} qq{# retrieved by scancpan from ${mirror}/}; + say {$fh} qq{md5 ${md5} ${filename}}; + say {$fh} qq{sha256 ${sha256} ${filename}}; + my %license_files = %{$license_files{$distname}}; + if (scalar keys %license_files) { + say {$fh} q{}; + say {$fh} qq{# computed by scancpan}; + foreach my $license (sort keys %license_files) { + my $digest = $license_files{$license}; + say {$fh} qq{sha256 ${digest} ${license}}; + } + } + close $fh; + } + if (want_test( $distname ) && ($force || !-f $testname)) { + my $classname = $distname; + $classname =~ s|-||g; + my $modname = $distname; + $modname =~ s|-|::|g; + my $mark = $is_xs{$distname} ? q{ XS} : q{}; + my @indirect = (get_indirect_dependencies( $distname )); + say qq{write ${testname}} unless $quiet; + make_path $testdir unless -d $testdir; + open my $fh, q{>}, $testname; + say {$fh} qq{from tests.package.test_perl import TestPerlBase}; + say {$fh} qq{}; + say {$fh} qq{}; + say {$fh} qq{class TestPerl${classname}(TestPerlBase):}; + say {$fh} qq{ """}; + say {$fh} qq{ package:}; + say {$fh} qq{ ${distname}${mark}}; + say {$fh} qq{ direct dependencies:}; + foreach my $dep (sort @{$deps_runtime{$distname}}) { + $mark = $is_xs{$dep} ? q{ XS} : q{}; + say {$fh} qq{ ${dep}${mark}}; + } + if (scalar @indirect > 0) { + say {$fh} qq{ indirect dependencies:}; + foreach my $dep (sort @indirect) { + $mark = $is_xs{$dep} ? q{ XS} : q{}; + say {$fh} qq{ ${dep}${mark}}; + } + } + say {$fh} qq{ """}; + say {$fh} qq{}; + say {$fh} qq{ config = TestPerlBase.config + \\}; + say {$fh} qq{ """}; + say {$fh} qq{ BR2_PACKAGE_PERL=y}; + say {$fh} qq{ BR2_PACKAGE_${brname}=y}; + say {$fh} qq{ """}; + say {$fh} qq{}; + say {$fh} qq{ def test_run(self):}; + say {$fh} qq{ self.login()}; + foreach my $dep (sort grep { $is_xs{$_} } @indirect) { + $dep =~ s|-|::|g; + say {$fh} qq{ self.module_test("${dep}")}; + } + foreach my $dep (sort grep { $is_xs{$_} } @{$deps_runtime{$distname}}) { + $dep =~ s|-|::|g; + say {$fh} qq{ self.module_test("${dep}")}; + } + say {$fh} qq{ self.module_test("${modname}")}; + close $fh; + } +} + +if ($new_pkgs) { + my %pkg; + my $cfgname = q{package/Config.in}; + if (-f $cfgname) { + open my $fh, q{<}, $cfgname; + while (<$fh>) { + chomp; + $pkg{$_} = 1 if m|package/perl-|; + } + close $fh; + } + + foreach my $distname (keys %need_target) { + my $fsname = fsname( $distname ); + $pkg{qq{\tsource "package/${fsname}/Config.in"}} = 1; + } + + say qq{${cfgname} must contain the following lines:}; + say join qq{\n}, sort keys %pkg; +} + +say join qq{\n}, @info; + +__END__ + +=head1 NAME + +utils/scancpan Try-Tiny Moo + +=head1 SYNOPSIS + +utils/scancpan [options] [distname ...] + + Options: + -help + -man + -quiet + -force + -target/-notarget + -host/-nohost + -recommend + -test + +=head1 OPTIONS + +=over 8 + +=item B<-help> + +Prints a brief help message and exits. + +=item B<-man> + +Prints the manual page and exits. + +=item B<-quiet> + +Executes without output + +=item B<-force> + +Forces the overwriting of existing files. + +=item B<-target/-notarget> + +Switches package generation for the target variant (the default is C<-target>). + +=item B<-host/-nohost> + +Switches package generation for the host variant (the default is C<-nohost>). + +=item B<-recommend> + +Adds I dependencies. + +=item B<-test> + +Adds dependencies for test. + +=back + +=head1 DESCRIPTION + +This script creates templates of the Buildroot package files for all the +Perl/CPAN distributions required by the specified distnames. The +dependencies and metadata are fetched from https://metacpan.org/. + +After running this script, it is necessary to check the generated files. +For distributions that link against a target library, you have to add the +buildroot package name for that library to the DEPENDENCIES variable. + +See the Buildroot documentation for details on the usage of the Perl +infrastructure. + +The major version of the host perl must be aligned on the target one, +in order to work with the right CoreList data. + +=head1 LICENSE + +Copyright (C) 2013-2023 by Francois Perrad + +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 + +This script is a part of Buildroot. + +This script requires the module C (version 1.131730) +which was included at the beginning of this file by the tool C. + +See L. + +See L. + +These both libraries are free software and may be distributed under the same +terms as perl itself. + +And perl may be distributed under the terms of Artistic v1 or GPL v1 license. + +=cut diff --git a/utils/scanpypi b/utils/scanpypi new file mode 100755 index 00000000..5a585501 --- /dev/null +++ b/utils/scanpypi @@ -0,0 +1,836 @@ +#!/usr/bin/env python3 +""" + +Utility for building Buildroot packages for existing PyPI packages + +Any package built by scanpypi should be manually checked for +errors. +""" +import argparse +import json +import sys +import os +import shutil +import tarfile +import zipfile +import errno +import hashlib +import re +import textwrap +import tempfile +import imp +from functools import wraps +import six.moves.urllib.request +import six.moves.urllib.error +import six.moves.urllib.parse +from six.moves import map +from six.moves import zip +from six.moves import input +if six.PY2: + import StringIO +else: + import io + +BUF_SIZE = 65536 + +try: + import spdx_lookup as liclookup +except ImportError: + # spdx_lookup is not installed + print('spdx_lookup module is not installed. This can lead to an ' + 'inaccurate licence detection. Please install it via\n' + 'pip install spdx_lookup') + liclookup = None + + +def toml_load(f): + with open(f, 'rb') as fh: + ex = None + + # Try standard library tomllib first + try: + from tomllib import load + return load(fh) + except ImportError: + pass + + # Try regular tomli next + try: + from tomli import load + return load(fh) + except ImportError as e: + ex = e + + # Try pip's vendored tomli + try: + from pip._vendor.tomli import load + try: + return load(fh) + except TypeError: + # Fallback to handle older version + try: + fh.seek(0) + w = io.TextIOWrapper(fh, encoding="utf8", newline="") + return load(w) + finally: + w.detach() + except ImportError: + pass + + # Try regular toml last + try: + from toml import load + fh.seek(0) + w = io.TextIOWrapper(fh, encoding="utf8", newline="") + try: + return load(w) + finally: + w.detach() + except ImportError: + pass + + print('This package needs tomli') + raise ex + + +def setup_decorator(func, method): + """ + Decorator for distutils.core.setup and setuptools.setup. + Puts the arguments with which setup is called as a dict + Add key 'method' which should be either 'setuptools' or 'distutils'. + + Keyword arguments: + func -- either setuptools.setup or distutils.core.setup + method -- either 'setuptools' or 'distutils' + """ + + @wraps(func) + def closure(*args, **kwargs): + # Any python packages calls its setup function to be installed. + # Argument 'name' of this setup function is the package's name + BuildrootPackage.setup_args[kwargs['name']] = kwargs + BuildrootPackage.setup_args[kwargs['name']]['method'] = method + return closure + +# monkey patch +import setuptools # noqa E402 +setuptools.setup = setup_decorator(setuptools.setup, 'setuptools') +import distutils # noqa E402 +distutils.core.setup = setup_decorator(setuptools.setup, 'distutils') + + +def find_file_upper_case(filenames, path='./'): + """ + List generator: + Recursively find files that matches one of the specified filenames. + Returns a relative path starting with path argument. + + Keyword arguments: + filenames -- List of filenames to be found + path -- Path to the directory to search + """ + for root, dirs, files in os.walk(path): + for file in files: + if file.upper() in filenames: + yield (os.path.join(root, file)) + + +def pkg_buildroot_name(pkg_name): + """ + Returns the Buildroot package name for the PyPI package pkg_name. + Remove all non alphanumeric characters except - + Also lowers the name and adds 'python-' suffix + + Keyword arguments: + pkg_name -- String to rename + """ + name = re.sub(r'[^\w-]', '', pkg_name.lower()) + name = name.replace('_', '-') + prefix = 'python-' + pattern = re.compile(r'^(?!' + prefix + ')(.+?)$') + name = pattern.sub(r'python-\1', name) + return name + + +class DownloadFailed(Exception): + pass + + +class BuildrootPackage(): + """This class's methods are not meant to be used individually please + use them in the correct order: + + __init__ + + download_package + + extract_package + + load_module + + get_requirements + + create_package_mk + + create_hash_file + + create_config_in + + """ + setup_args = {} + + def __init__(self, real_name, pkg_folder): + self.real_name = real_name + self.buildroot_name = pkg_buildroot_name(self.real_name) + self.pkg_dir = os.path.join(pkg_folder, self.buildroot_name) + self.mk_name = self.buildroot_name.upper().replace('-', '_') + self.as_string = None + self.md5_sum = None + self.metadata = None + self.metadata_name = None + self.metadata_url = None + self.pkg_req = None + self.setup_metadata = None + self.tmp_extract = None + self.used_url = None + self.filename = None + self.url = None + self.version = None + self.license_files = [] + + def fetch_package_info(self): + """ + Fetch a package's metadata from the python package index + """ + self.metadata_url = 'https://pypi.org/pypi/{pkg}/json'.format( + pkg=self.real_name) + try: + pkg_json = six.moves.urllib.request.urlopen(self.metadata_url).read().decode() + except six.moves.urllib.error.HTTPError as error: + print('ERROR:', error.getcode(), error.msg, file=sys.stderr) + print('ERROR: Could not find package {pkg}.\n' + 'Check syntax inside the python package index:\n' + 'https://pypi.python.org/pypi/ ' + .format(pkg=self.real_name)) + raise + except six.moves.urllib.error.URLError: + print('ERROR: Could not find package {pkg}.\n' + 'Check syntax inside the python package index:\n' + 'https://pypi.python.org/pypi/ ' + .format(pkg=self.real_name)) + raise + self.metadata = json.loads(pkg_json) + self.version = self.metadata['info']['version'] + self.metadata_name = self.metadata['info']['name'] + + def download_package(self): + """ + Download a package using metadata from pypi + """ + download = None + try: + self.metadata['urls'][0]['filename'] + except IndexError: + print( + 'Non-conventional package, ', + 'please check carefully after creation') + self.metadata['urls'] = [{ + 'packagetype': 'sdist', + 'url': self.metadata['info']['download_url'], + 'digests': None}] + # In this case, we can't get the name of the downloaded file + # from the pypi api, so we need to find it, this should work + urlpath = six.moves.urllib.parse.urlparse( + self.metadata['info']['download_url']).path + # urlparse().path give something like + # /path/to/file-version.tar.gz + # We use basename to remove /path/to + self.metadata['urls'][0]['filename'] = os.path.basename(urlpath) + for download_url in self.metadata['urls']: + if 'bdist' in download_url['packagetype']: + continue + try: + print('Downloading package {pkg} from {url}...'.format( + pkg=self.real_name, url=download_url['url'])) + download = six.moves.urllib.request.urlopen(download_url['url']) + except six.moves.urllib.error.HTTPError as http_error: + download = http_error + else: + self.used_url = download_url + self.as_string = download.read() + if not download_url['digests']['md5']: + break + self.md5_sum = hashlib.md5(self.as_string).hexdigest() + if self.md5_sum == download_url['digests']['md5']: + break + + if download is None: + raise DownloadFailed('Failed to download package {pkg}: ' + 'No source archive available' + .format(pkg=self.real_name)) + elif download.__class__ == six.moves.urllib.error.HTTPError: + raise download + + self.filename = self.used_url['filename'] + self.url = self.used_url['url'] + + def check_archive(self, members): + """ + Check archive content before extracting + + Keyword arguments: + members -- list of archive members + """ + # Protect against https://github.com/snyk/zip-slip-vulnerability + # Older python versions do not validate that the extracted files are + # inside the target directory. Detect and error out on evil paths + evil = [e for e in members if os.path.relpath(e).startswith(('/', '..'))] + if evil: + print('ERROR: Refusing to extract {} with suspicious members {}'.format( + self.filename, evil)) + sys.exit(1) + + def extract_package(self, tmp_path): + """ + Extract the package contents into a directrory + + Keyword arguments: + tmp_path -- directory where you want the package to be extracted + """ + if six.PY2: + as_file = StringIO.StringIO(self.as_string) + else: + as_file = io.BytesIO(self.as_string) + if self.filename[-3:] == 'zip': + with zipfile.ZipFile(as_file) as as_zipfile: + tmp_pkg = os.path.join(tmp_path, self.buildroot_name) + try: + os.makedirs(tmp_pkg) + except OSError as exception: + if exception.errno != errno.EEXIST: + print("ERROR: ", exception.strerror, file=sys.stderr) + return + print('WARNING:', exception.strerror, file=sys.stderr) + print('Removing {pkg}...'.format(pkg=tmp_pkg)) + shutil.rmtree(tmp_pkg) + os.makedirs(tmp_pkg) + self.check_archive(as_zipfile.namelist()) + as_zipfile.extractall(tmp_pkg) + pkg_filename = self.filename.split(".zip")[0] + else: + with tarfile.open(fileobj=as_file) as as_tarfile: + tmp_pkg = os.path.join(tmp_path, self.buildroot_name) + try: + os.makedirs(tmp_pkg) + except OSError as exception: + if exception.errno != errno.EEXIST: + print("ERROR: ", exception.strerror, file=sys.stderr) + return + print('WARNING:', exception.strerror, file=sys.stderr) + print('Removing {pkg}...'.format(pkg=tmp_pkg)) + shutil.rmtree(tmp_pkg) + os.makedirs(tmp_pkg) + self.check_archive(as_tarfile.getnames()) + as_tarfile.extractall(tmp_pkg) + pkg_filename = self.filename.split(".tar")[0] + + tmp_extract = '{folder}/{name}' + self.tmp_extract = tmp_extract.format( + folder=tmp_pkg, + name=pkg_filename) + + def load_setup(self): + """ + Loads the corresponding setup and store its metadata + """ + current_dir = os.getcwd() + os.chdir(self.tmp_extract) + sys.path.insert(0, self.tmp_extract) + try: + s_file, s_path, s_desc = imp.find_module('setup', [self.tmp_extract]) + imp.load_module('__main__', s_file, s_path, s_desc) + if self.metadata_name in self.setup_args: + pass + elif self.metadata_name.replace('_', '-') in self.setup_args: + self.metadata_name = self.metadata_name.replace('_', '-') + elif self.metadata_name.replace('-', '_') in self.setup_args: + self.metadata_name = self.metadata_name.replace('-', '_') + try: + self.setup_metadata = self.setup_args[self.metadata_name] + except KeyError: + # This means setup was not called + print('ERROR: Could not determine package metadata for {pkg}.\n' + .format(pkg=self.real_name)) + raise + finally: + os.chdir(current_dir) + sys.path.remove(self.tmp_extract) + + def load_pyproject(self): + """ + Loads the corresponding pyproject.toml and store its metadata + """ + current_dir = os.getcwd() + os.chdir(self.tmp_extract) + sys.path.insert(0, self.tmp_extract) + try: + pyproject_data = toml_load('pyproject.toml') + try: + self.setup_metadata = pyproject_data.get('project', {}) + self.metadata_name = self.setup_metadata.get('name', self.real_name) + build_system = pyproject_data.get('build-system', {}) + build_backend = build_system.get('build-backend', None) + if build_backend and build_backend == 'flit_core.buildapi': + self.setup_metadata['method'] = 'flit' + elif build_system.get('backend-path', None): + self.setup_metadata['method'] = 'pep517' + else: + self.setup_metadata['method'] = 'unknown' + except KeyError: + print('ERROR: Could not determine package metadata for {pkg}.\n' + .format(pkg=self.real_name)) + raise + except FileNotFoundError: + raise + os.chdir(current_dir) + sys.path.remove(self.tmp_extract) + + def get_requirements(self, pkg_folder): + """ + Retrieve dependencies from the metadata found in the setup.py script of + a pypi package. + + Keyword Arguments: + pkg_folder -- location of the already created packages + """ + if 'install_requires' not in self.setup_metadata: + self.pkg_req = None + return set() + self.pkg_req = self.setup_metadata['install_requires'] + self.pkg_req = [re.sub(r'([-.\w]+).*', r'\1', req) + for req in self.pkg_req] + + # get rid of commented lines and also strip the package strings + self.pkg_req = {item.strip() for item in self.pkg_req + if len(item) > 0 and item[0] != '#'} + + req_not_found = self.pkg_req + self.pkg_req = list(map(pkg_buildroot_name, self.pkg_req)) + pkg_tuples = list(zip(req_not_found, self.pkg_req)) + # pkg_tuples is a list of tuples that looks like + # ('werkzeug','python-werkzeug') because I need both when checking if + # dependencies already exist or are already in the download list + req_not_found = set( + pkg[0] for pkg in pkg_tuples + if not os.path.isdir(pkg[1]) + ) + return req_not_found + + def __create_mk_header(self): + """ + Create the header of the .mk file + """ + header = ['#' * 80 + '\n'] + header.append('#\n') + header.append('# {name}\n'.format(name=self.buildroot_name)) + header.append('#\n') + header.append('#' * 80 + '\n') + header.append('\n') + return header + + def __create_mk_download_info(self): + """ + Create the lines refering to the download information of the + .mk file + """ + lines = [] + version_line = '{name}_VERSION = {version}\n'.format( + name=self.mk_name, + version=self.version) + lines.append(version_line) + + if self.buildroot_name != self.real_name: + targz = self.filename.replace( + self.version, + '$({name}_VERSION)'.format(name=self.mk_name)) + targz_line = '{name}_SOURCE = {filename}\n'.format( + name=self.mk_name, + filename=targz) + lines.append(targz_line) + + if self.filename not in self.url: + # Sometimes the filename is in the url, sometimes it's not + site_url = self.url + else: + site_url = self.url[:self.url.find(self.filename)] + site_line = '{name}_SITE = {url}'.format(name=self.mk_name, + url=site_url) + site_line = site_line.rstrip('/') + '\n' + lines.append(site_line) + return lines + + def __create_mk_setup(self): + """ + Create the line refering to the setup method of the package of the + .mk file + + There are two things you can use to make an installer + for a python package: distutils or setuptools + distutils comes with python but does not support dependencies. + distutils is mostly still there for backward support. + setuptools is what smart people use, + but it is not shipped with python :( + """ + lines = [] + setup_type_line = '{name}_SETUP_TYPE = {method}\n'.format( + name=self.mk_name, + method=self.setup_metadata['method']) + lines.append(setup_type_line) + return lines + + def __get_license_names(self, license_files): + """ + Try to determine the related license name. + + There are two possibilities. Either the script tries to + get license name from package's metadata or, if spdx_lookup + package is available, the script compares license files with + SPDX database. + """ + license_line = '' + if liclookup is None: + license_dict = { + 'Apache Software License': 'Apache-2.0', + 'BSD License': 'FIXME: please specify the exact BSD version', + 'European Union Public Licence 1.0': 'EUPL-1.0', + 'European Union Public Licence 1.1': 'EUPL-1.1', + "GNU General Public License": "GPL", + "GNU General Public License v2": "GPL-2.0", + "GNU General Public License v2 or later": "GPL-2.0+", + "GNU General Public License v3": "GPL-3.0", + "GNU General Public License v3 or later": "GPL-3.0+", + "GNU Lesser General Public License v2": "LGPL-2.1", + "GNU Lesser General Public License v2 or later": "LGPL-2.1+", + "GNU Lesser General Public License v3": "LGPL-3.0", + "GNU Lesser General Public License v3 or later": "LGPL-3.0+", + "GNU Library or Lesser General Public License": "LGPL-2.0", + "ISC License": "ISC", + "MIT License": "MIT", + "Mozilla Public License 1.0": "MPL-1.0", + "Mozilla Public License 1.1": "MPL-1.1", + "Mozilla Public License 2.0": "MPL-2.0", + "Zope Public License": "ZPL" + } + regexp = re.compile(r'^License :* *.* *:+ (.*)( \(.*\))?$') + classifiers_licenses = [regexp.sub(r"\1", lic) + for lic in self.metadata['info']['classifiers'] + if regexp.match(lic)] + licenses = [license_dict[x] if x in license_dict else x for x in classifiers_licenses] + if not len(licenses): + print('WARNING: License has been set to "{license}". It is most' + ' likely wrong, please change it if need be'.format( + license=', '.join(licenses))) + licenses = [self.metadata['info']['license']] + licenses = set(licenses) + license_line = '{name}_LICENSE = {license}\n'.format( + name=self.mk_name, + license=', '.join(licenses)) + else: + license_names = [] + for license_file in license_files: + with open(license_file) as lic_file: + match = liclookup.match(lic_file.read()) + if match is not None and match.confidence >= 90.0: + license_names.append(match.license.id) + else: + license_names.append("FIXME: license id couldn't be detected") + license_names = set(license_names) + + if len(license_names) > 0: + license_line = ('{name}_LICENSE =' + ' {names}\n'.format( + name=self.mk_name, + names=', '.join(license_names))) + + return license_line + + def __create_mk_license(self): + """ + Create the lines referring to the package's license informations of the + .mk file + + The license's files are found by searching the package (case insensitive) + for files named license, license.txt etc. If more than one license file + is found, the user is asked to select which ones he wants to use. + """ + lines = [] + + filenames = ['LICENCE', 'LICENSE', 'LICENSE.MD', 'LICENSE.RST', + 'LICENCE.TXT', 'LICENSE.TXT', 'COPYING', 'COPYING.TXT'] + self.license_files = list(find_file_upper_case(filenames, self.tmp_extract)) + + lines.append(self.__get_license_names(self.license_files)) + + license_files = [license.replace(self.tmp_extract, '')[1:] + for license in self.license_files] + if len(license_files) > 0: + if len(license_files) > 1: + print('More than one file found for license:', + ', '.join(license_files)) + license_files = [filename + for index, filename in enumerate(license_files)] + license_file_line = ('{name}_LICENSE_FILES =' + ' {files}\n'.format( + name=self.mk_name, + files=' '.join(license_files))) + lines.append(license_file_line) + else: + print('WARNING: No license file found,' + ' please specify it manually afterwards') + license_file_line = '# No license file found\n' + + return lines + + def __create_mk_requirements(self): + """ + Create the lines referring to the dependencies of the of the + .mk file + + Keyword Arguments: + pkg_name -- name of the package + pkg_req -- dependencies of the package + """ + lines = [] + dependencies_line = ('{name}_DEPENDENCIES =' + ' {reqs}\n'.format( + name=self.mk_name, + reqs=' '.join(self.pkg_req))) + lines.append(dependencies_line) + return lines + + def create_package_mk(self): + """ + Create the lines corresponding to the .mk file + """ + pkg_mk = '{name}.mk'.format(name=self.buildroot_name) + path_to_mk = os.path.join(self.pkg_dir, pkg_mk) + print('Creating {file}...'.format(file=path_to_mk)) + lines = self.__create_mk_header() + lines += self.__create_mk_download_info() + lines += self.__create_mk_setup() + lines += self.__create_mk_license() + + lines.append('\n') + lines.append('$(eval $(python-package))') + lines.append('\n') + with open(path_to_mk, 'w') as mk_file: + mk_file.writelines(lines) + + def create_hash_file(self): + """ + Create the lines corresponding to the .hash files + """ + pkg_hash = '{name}.hash'.format(name=self.buildroot_name) + path_to_hash = os.path.join(self.pkg_dir, pkg_hash) + print('Creating {filename}...'.format(filename=path_to_hash)) + lines = [] + if self.used_url['digests']['md5'] and self.used_url['digests']['sha256']: + hash_header = '# md5, sha256 from {url}\n'.format( + url=self.metadata_url) + lines.append(hash_header) + hash_line = '{method} {digest} {filename}\n'.format( + method='md5', + digest=self.used_url['digests']['md5'], + filename=self.filename) + lines.append(hash_line) + hash_line = '{method} {digest} {filename}\n'.format( + method='sha256', + digest=self.used_url['digests']['sha256'], + filename=self.filename) + lines.append(hash_line) + + if self.license_files: + lines.append('# Locally computed sha256 checksums\n') + for license_file in self.license_files: + sha256 = hashlib.sha256() + with open(license_file, 'rb') as lic_f: + while True: + data = lic_f.read(BUF_SIZE) + if not data: + break + sha256.update(data) + hash_line = '{method} {digest} {filename}\n'.format( + method='sha256', + digest=sha256.hexdigest(), + filename=license_file.replace(self.tmp_extract, '')[1:]) + lines.append(hash_line) + + with open(path_to_hash, 'w') as hash_file: + hash_file.writelines(lines) + + def create_config_in(self): + """ + Creates the Config.in file of a package + """ + path_to_config = os.path.join(self.pkg_dir, 'Config.in') + print('Creating {file}...'.format(file=path_to_config)) + lines = [] + config_line = 'config BR2_PACKAGE_{name}\n'.format( + name=self.mk_name) + lines.append(config_line) + + bool_line = '\tbool "{name}"\n'.format(name=self.buildroot_name) + lines.append(bool_line) + if self.pkg_req: + self.pkg_req.sort() + for dep in self.pkg_req: + dep_line = '\tselect BR2_PACKAGE_{req} # runtime\n'.format( + req=dep.upper().replace('-', '_')) + lines.append(dep_line) + + lines.append('\thelp\n') + + md_info = self.metadata['info'] + help_lines = textwrap.wrap(md_info['summary'], 62, + initial_indent='\t ', + subsequent_indent='\t ') + + # make sure a help text is terminated with a full stop + if help_lines[-1][-1] != '.': + help_lines[-1] += '.' + + home_page = md_info.get('home_page', None) + + if not home_page: + project_urls = md_info.get('project_urls', None) + if project_urls: + home_page = project_urls.get('Homepage', None) + + if home_page: + # \t + two spaces is 3 char long + help_lines.append('') + help_lines.append('\t ' + home_page) + help_lines = [x + '\n' for x in help_lines] + lines += help_lines + + with open(path_to_config, 'w') as config_file: + config_file.writelines(lines) + + +def main(): + # Building the parser + parser = argparse.ArgumentParser( + description="Creates buildroot packages from the metadata of " + "an existing PyPI packages and include it " + "in menuconfig") + parser.add_argument("packages", + help="list of packages to be created", + nargs='+') + parser.add_argument("-o", "--output", + help=""" + Output directory for packages. + Default is ./package + """, + default='./package') + + args = parser.parse_args() + packages = list(set(args.packages)) + + # tmp_path is where we'll extract the files later + tmp_prefix = 'scanpypi-' + pkg_folder = args.output + tmp_path = tempfile.mkdtemp(prefix=tmp_prefix) + try: + for real_pkg_name in packages: + package = BuildrootPackage(real_pkg_name, pkg_folder) + print('buildroot package name for {}:'.format(package.real_name), + package.buildroot_name) + # First we download the package + # Most of the info we need can only be found inside the package + print('Package:', package.buildroot_name) + print('Fetching package', package.real_name) + try: + package.fetch_package_info() + except (six.moves.urllib.error.URLError, six.moves.urllib.error.HTTPError): + continue + if package.metadata_name.lower() == 'setuptools': + # setuptools imports itself, that does not work very well + # with the monkey path at the begining + print('Error: setuptools cannot be built using scanPyPI') + continue + + try: + package.download_package() + except six.moves.urllib.error.HTTPError as error: + print('Error: {code} {reason}'.format(code=error.code, + reason=error.reason)) + print('Error downloading package :', package.buildroot_name) + print() + continue + + # extract the tarball + try: + package.extract_package(tmp_path) + except (tarfile.ReadError, zipfile.BadZipfile): + print('Error extracting package {}'.format(package.real_name)) + print() + continue + + # Loading the package install info from the package + try: + package.load_setup() + except ImportError as err: + if 'buildutils' in str(err): + print('This package needs buildutils') + continue + else: + try: + package.load_pyproject() + except Exception: + raise + except (AttributeError, KeyError) as error: + print('Error: Could not install package {pkg}: {error}'.format( + pkg=package.real_name, error=error)) + continue + + # Package requirement are an argument of the setup function + req_not_found = package.get_requirements(pkg_folder) + req_not_found = req_not_found.difference(packages) + + packages += req_not_found + if req_not_found: + print('Added packages \'{pkgs}\' as dependencies of {pkg}' + .format(pkgs=", ".join(req_not_found), + pkg=package.buildroot_name)) + print('Checking if package {name} already exists...'.format( + name=package.pkg_dir)) + try: + os.makedirs(package.pkg_dir) + except OSError as exception: + if exception.errno != errno.EEXIST: + print("ERROR: ", exception.message, file=sys.stderr) + continue + print('Error: Package {name} already exists' + .format(name=package.pkg_dir)) + del_pkg = input( + 'Do you want to delete existing package ? [y/N]') + if del_pkg.lower() == 'y': + shutil.rmtree(package.pkg_dir) + os.makedirs(package.pkg_dir) + else: + continue + package.create_package_mk() + + package.create_hash_file() + + package.create_config_in() + print("NOTE: Remember to also make an update to the DEVELOPERS file") + print(" and include an entry for the pkg in packages/Config.in") + print() + # printing an empty line for visual confort + finally: + shutil.rmtree(tmp_path) + + +if __name__ == "__main__": + main() diff --git a/utils/size-stats-compare b/utils/size-stats-compare new file mode 100755 index 00000000..fc6dd706 --- /dev/null +++ b/utils/size-stats-compare @@ -0,0 +1,144 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2016 Thomas De Schampheleire + +# 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 + +# TODO (improvements) +# - support K,M,G size suffixes for threshold +# - output CSV file in addition to stdout reporting + +import csv +import argparse +import sys + + +def read_file_size_csv(inputf, detail=None): + """Extract package or file sizes from CSV file into size dictionary""" + sizes = {} + reader = csv.reader(inputf) + + header = next(reader) + if header[0] != 'File name' or header[1] != 'Package name' or \ + header[2] != 'File size' or header[3] != 'Package size': + print(("Input file %s does not contain the expected header. Are you " + "sure this file corresponds to the file-size-stats.csv " + "file created by 'make graph-size'?") % inputf.name) + sys.exit(1) + + for row in reader: + if detail: + sizes[(row[0], row[1])] = int(row[2]) + else: + sizes[(None, row[1])] = int(row[3]) + + return sizes + + +def compare_sizes(old, new): + """Return delta/added/removed dictionaries based on two input size + dictionaries""" + delta = {} + oldkeys = set(old.keys()) + newkeys = set(new.keys()) + + # packages/files in both + for entry in newkeys.intersection(oldkeys): + delta[entry] = ('', new[entry] - old[entry]) + # packages/files only in new + for entry in newkeys.difference(oldkeys): + delta[entry] = ('added', new[entry]) + # packages/files only in old + for entry in oldkeys.difference(newkeys): + delta[entry] = ('removed', -old[entry]) + + return delta + + +def print_results(result, threshold): + """Print the given result dictionary sorted by size, ignoring any entries + below or equal to threshold""" + + from six import iteritems + list_result = list(iteritems(result)) + # result is a dictionary: (filename, pkgname) -> (flag, size difference) + # list_result is a list of tuples: ((filename, pkgname), (flag, size difference)) + # filename may be None if no detail is requested. + + maxpkgname = max(len(pkgname) for filename, pkgname in result) + + for entry in sorted(list_result, key=lambda entry: entry[1][1]): + data = dict( + filename=entry[0][0], + pkgname=entry[0][1], + action=entry[1][0], + size=entry[1][1], + maxpkgname=maxpkgname, + ) + + if threshold is not None and abs(data['size']) <= threshold: + continue + if data['filename']: + print('{size:12d} {action:7s} {pkgname:{maxpkgname}s} {filename}'.format(**data)) + else: + print('{size:12d} {action:7s} {pkgname}'.format(**data)) + + +# main ######################################################################### + +description = """ +Compare rootfs size between Buildroot compilations, for example after changing +configuration options or after switching to another Buildroot release. + +This script compares the file-size-stats.csv file generated by 'make graph-size' +with the corresponding file from another Buildroot compilation. +The size differences can be reported per package or per file. +Size differences smaller or equal than a given threshold can be ignored. +""" + +parser = argparse.ArgumentParser(description=description, + formatter_class=argparse.RawDescriptionHelpFormatter) + +parser.add_argument('-d', '--detail', action='store_true', + help='''report differences for individual files rather than + packages''') +parser.add_argument('-t', '--threshold', type=int, + help='''ignore size differences smaller or equal than this + value (bytes)''') +parser.add_argument('old_file_size_csv', type=argparse.FileType('r'), + metavar='old-file-size-stats.csv', + help="""old CSV file with file and package size statistics, + generated by 'make graph-size'""") +parser.add_argument('new_file_size_csv', type=argparse.FileType('r'), + metavar='new-file-size-stats.csv', + help='new CSV file with file and package size statistics') +args = parser.parse_args() + +if args.detail: + keyword = 'file' +else: + keyword = 'package' + +old_sizes = read_file_size_csv(args.old_file_size_csv, args.detail) +new_sizes = read_file_size_csv(args.new_file_size_csv, args.detail) + +delta = compare_sizes(old_sizes, new_sizes) + +print('Size difference per %s (bytes), threshold = %s' % (keyword, args.threshold)) +print(80*'-') +print_results(delta, args.threshold) +print(80*'-') +print_results({(None, 'TOTAL'): ('', sum(new_sizes.values()) - sum(old_sizes.values()))}, + threshold=None) diff --git a/utils/test-pkg b/utils/test-pkg new file mode 100755 index 00000000..19d8713d --- /dev/null +++ b/utils/test-pkg @@ -0,0 +1,303 @@ +#!/usr/bin/env bash +set -e + +TOOLCHAINS_CSV='support/config-fragments/autobuild/toolchain-configs.csv' +TEMP_CONF="" + +do_clean() { + if [ -n "${TEMP_CONF}" ]; then + rm -f "${TEMP_CONF}" + fi +} + +main() { + local o O opts + local cfg dir pkg random toolchains_csv toolchain all number mode prepare_only + local ret nb nb_skip nb_fail nb_legal nb_show nb_tc build_dir keep + local -a toolchains + local pkg_br_name + + o='hakc:d:n:p:r:t:' + O='help,all,keep,prepare-only,config-snippet:,build-dir:,number:,package:,random:,toolchains-csv:' + opts="$(getopt -n "${my_name}" -o "${o}" -l "${O}" -- "${@}")" + eval set -- "${opts}" + + random=0 + all=0 + keep=0 + number=0 + mode=0 + prepare_only=0 + toolchains_csv="${TOOLCHAINS_CSV}" + while [ ${#} -gt 0 ]; do + case "${1}" in + (-h|--help) + help; exit 0 + ;; + (-a|--all) + all=1; shift 1 + ;; + (-k|--keep) + keep=1; shift 1 + ;; + (--prepare-only) + prepare_only=1; shift 1 + ;; + (-c|--config-snippet) + cfg="${2}"; shift 2 + ;; + (-d|--build-dir) + dir="${2}"; shift 2 + ;; + (-n|--number) + number="${2}"; shift 2 + ;; + (-p|--package) + pkg="${2}"; shift 2 + ;; + (-r|--random) + random="${2}"; shift 2 + ;; + (-t|--toolchains-csv) + toolchains_csv="${2}"; shift 2 + ;; + (--) + shift; break + ;; + esac + done + + trap do_clean INT TERM HUP EXIT + + if [ -z "${cfg}" ]; then + pkg_br_name="${pkg//-/_}" + pkg_br_name="BR2_PACKAGE_${pkg_br_name^^}" + TEMP_CONF="$(mktemp /tmp/test-"${pkg}"-config.XXXXXX)" + echo "${pkg_br_name}=y" > "${TEMP_CONF}" + cfg="${TEMP_CONF}" + 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 + + if [ "${random}" -gt 0 ]; then + mode=$((mode+1)) + fi + + if [ "${number}" -gt 0 ]; then + mode=$((mode+1)) + fi + + if [ "${all}" -eq 1 ]; then + mode=$((mode+1)) + fi + + # Default mode is to test the N first toolchains, which have been + # chosen to be a good selection of toolchains. + if [ ${mode} -eq 0 ] ; then + number=6 + elif [ ${mode} -gt 1 ] ; then + printf "error: --all, --number and --random are mutually exclusive\n" >&2; exit 1 + 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 + mapfile -t toolchains < <(sed -r -e 's/,.*//; /internal/d; /^#/d; /^$/d;' "${toolchains_csv}" \ + | if [ "${random}" -gt 0 ]; then \ + sort -R | head -n "${random}" + elif [ "${number}" -gt 0 ]; then \ + head -n "${number}" + else + sort + fi + ) + + nb_tc="${#toolchains[@]}" + if [ "${nb_tc}" -eq 0 ]; then + printf "error: no toolchain found (networking issue?)\n" >&2; exit 1 + fi + + nb=0 + nb_skip=0 + nb_fail=0 + nb_legal=0 + nb_show=0 + for toolchainconfig in "${toolchains[@]}"; do + : $((nb++)) + toolchain="$(basename "${toolchainconfig}" .config)" + build_dir="${dir}/${toolchain}" + printf "%40s [%*d/%d]: " "${toolchain}" ${#nb_tc} "${nb}" "${nb_tc}" + build_one "${build_dir}" "${toolchainconfig}" "${cfg}" "${pkg}" "${prepare_only}" && ret=0 || ret=${?} + case ${ret} in + (0) printf "OK\n";; + (1) : $((nb_skip++)); printf "SKIPPED\n";; + (2) : $((nb_fail++)); printf "FAILED\n";; + (3) : $((nb_legal++)); printf "FAILED\n";; + (4) : $((nb_show++)); printf "FAILED\n";; + esac + done + + printf "%d builds, %d skipped, %d build failed, %d legal-info failed, %d show-info failed\n" \ + "${nb}" "${nb_skip}" "${nb_fail}" "${nb_legal}" "${nb_show}" + + return $((nb_fail + nb_legal)) +} + +build_one() { + local dir="${1}" + local toolchainconfig="${2}" + local cfg="${3}" + local pkg="${4}" + local prepare_only="${5}" + + mkdir -p "${dir}" + + CONFIG_="" support/kconfig/merge_config.sh -O "${dir}" \ + "${toolchainconfig}" "support/config-fragments/minimal.config" "${cfg}" \ + >> "${dir}/logfile" 2>&1 + # 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 + if [ ${keep} -ne 1 ]; then + # Invalid configuration, drop it + rm -f "${dir}/.config" + fi + return 1 + fi + # Remove file, it's empty anyway. + rm -f "${dir}/missing.config" + + # Defer building the job to the caller (e.g. a gitlab pipeline) + if [ "${prepare_only}" -eq 1 ]; then + return 0 + fi + + if [ -n "${pkg}" ]; then + if ! make O="${dir}" "${pkg}-dirclean" >> "${dir}/logfile" 2>&1; then + return 2 + fi + fi + + # shellcheck disable=SC2086 + if ! BR_FORCE_CHECK_DEPENDENCIES=YES make O="${dir}" ${pkg} >> "${dir}/logfile" 2>&1; then + return 2 + fi + + # legal-info done systematically, because some packages have different + # sources depending on the configuration (e.g. lua-5.2 vs. lua-5.3) + if ! make O="${dir}" legal-info >> "${dir}/logfile" 2>&1; then + return 3 + fi + + # Validate that we generate proper json as show-info + { tput smso; printf '>>> Running show-info\n'; tput rmso; } >> "${dir}/logfile" 2> /dev/null; + JQ="$(which jq 2> /dev/null)" + if [ -z "${JQ}" ]; then + make O="${dir}" host-jq >> "${dir}/logfile" 2>&1 + JQ="${dir}/host/bin/jq" + fi + if ! make O="${dir}" "${pkg:+${pkg}-}show-info" > "${dir}/info.json" 2>> "${dir}/logfile"; then + return 4 + fi + if ! "${JQ}" . < "${dir}/info.json" >> "${dir}/logfile" 2>&1; then + return 4 + fi + + # If we get here, the build was successful. Clean up the build/host + # directories to save disk space, unless 'keep' was set. + if [ ${keep} -ne 1 ]; then + make O="${dir}" clean >> "${dir}/logfile" 2>&1 + fi +} + +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 ${TOOLCHAINS_CSV}. +Only the external toolchains are tried, because building a Buildroot toolchain +would take too long. An alternative toolchains CSV file can be specified with +the -t option. This file should have lines consisting of the path to the +toolchain config fragment and the required host architecture, separated by a +comma. The config fragments should contain only the toolchain and architecture +settings. + +By default, a useful subset of toolchains is tested. If needed, all +toolchains can be tested (-a), an arbitrary number of toolchains (-n +in order, -r for random). + +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. + If not specified, defaults to \${HOME}/br-test-pkg + + -p PKG, --package PKG + Test-build the package PKG, by running 'make PKG'; if not specified, + just runs 'make'. + + -a, --all + Test all toolchains, instead of the default subset defined by + Buildroot developers. + + -n N, --number N + Test N toolchains, in the order defined in the toolchain CSV + file. + + -r N, --random N + Limit the tests to the N randomly selected toolchains. + + -t CSVFILE, --toolchains-csv CSVFILE + CSV file containing the paths to config fragments of toolchains to + try. If not specified, the toolchains in ${TOOLCHAINS_CSV} will be + used. + + -k, --keep + Keep the build directories even if the build succeeds. + Note: the logfile and configuration is always retained, even without + this option. + + --prepare-only + Only prepare the .config files, but do not build them. Output the + list of build directories to stdout, and the status on stderr. + +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/utils/update-rust b/utils/update-rust new file mode 100755 index 00000000..3301434d --- /dev/null +++ b/utils/update-rust @@ -0,0 +1,144 @@ +#!/usr/bin/env python3 + +import argparse +import pathlib +import urllib.request + +# When updating this list, also update: +# - package/rustc/Config.in.host: +# BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS +# - package/rustc/rustc.mk: +# RUSTC_HOST_NAME +RUST_HOSTS = [ + "aarch64-unknown-linux-gnu", + "i686-unknown-linux-gnu", + "powerpc-unknown-linux-gnu", + "powerpc64-unknown-linux-gnu", + "powerpc64le-unknown-linux-gnu", + "riscv64gc-unknown-linux-gnu", + "s390x-unknown-linux-gnu", + "x86_64-unknown-linux-gnu", +] + +# When updating this list, also update one of: +# - package/rustc/Config.in.host: +# BR2_PACKAGE_HOST_RUSTC_TARGET_TIER1_PLATFORMS +# BR2_PACKAGE_HOST_RUSTC_TARGET_TIER2_HOST_TOOLS_PLATFORMS +# BR2_PACKAGE_HOST_RUSTC_TARGET_TIER2_PLATFORMS +# - package/rustc/rustc.mk: +# RUSTC_TARGET_NAME +# and check whether one of the follwoing needs updating: +# - package/rustc/Config.in.host: +# BR2_PACKAGE_HOST_RUSTC_ARCH +# BR2_PACKAGE_HOST_RUSTC_ABI +RUST_TARGETS = [ + "aarch64-unknown-linux-gnu", + "aarch64-unknown-linux-musl", + "arm-unknown-linux-gnueabi", + "arm-unknown-linux-gnueabihf", + "arm-unknown-linux-musleabi", + "arm-unknown-linux-musleabihf", + "armv5te-unknown-linux-gnueabi", + "armv5te-unknown-linux-musleabi", + "armv7-unknown-linux-gnueabi", + "armv7-unknown-linux-gnueabihf", + "armv7-unknown-linux-musleabi", + "armv7-unknown-linux-musleabihf", + "i586-unknown-linux-gnu", + "i586-unknown-linux-musl", + "i686-unknown-linux-gnu", + "i686-unknown-linux-musl", + "powerpc-unknown-linux-gnu", + "powerpc64-unknown-linux-gnu", + "powerpc64le-unknown-linux-gnu", + "riscv64gc-unknown-linux-gnu", + "s390x-unknown-linux-gnu", + "sparc64-unknown-linux-gnu", + "x86_64-unknown-linux-gnu", + "x86_64-unknown-linux-musl", +] + +RUST_DIST_URL = "https://static.rust-lang.org/dist" + +LICENSES = { + "APACHE": "62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a", + "MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3", +} + + +def update_mk_file(mk_file, new_version): + with mk_file.open("r") as fd: + lines = fd.readlines() + + version_var = pathlib.Path(mk_file).stem.upper().replace("-", "_") + "_VERSION" + with mk_file.open("w") as fd: + for line in lines: + words = line.split() + if len(words) == 3 and words[0] == version_var and words[1] == "=": + fd.write(f"{words[0]} = {new_version}\n") + else: + fd.write(line) + + +def gen_hash_file_src(hash_file, new_version): + with hash_file.open("w") as fd: + fd.write("# Generated with utils/update-rust\n# Do not edit manually\n\n") + f_name = f"rustc-{new_version}-src.tar.xz" + print(f"\r\033[KUpdating {f_name}", end="") + h_url = f"{RUST_DIST_URL}/{f_name}.sha256" + with urllib.request.urlopen(h_url) as r: + if r.status != 200: + raise RuntimeError(f"No hash for {f_name}. Has source been removed?") + # rstrip() content, and explicitly add the \n, in case + # a hash file does not have a trailing \n. + fd.write(f"# From {h_url}\nsha256 {r.read().decode().rstrip()}\n") + fd.write("# Locally generated\n") + for license in LICENSES: + fd.write(f"sha256 {LICENSES[license]} LICENSE-{license}\n") + + +def gen_hash_file_bin(hash_file, new_version): + with hash_file.open("w") as fd: + fd.write("# Generated with utils/update-rust\n# Do not edit manually\n\n") + for host in RUST_HOSTS: + f_name = f"rust-{new_version}-{host}.tar.xz" + print(f"\r\033[KUpdating {f_name}", end="") + h_url = f"{RUST_DIST_URL}/{f_name}.sha256" + with urllib.request.urlopen(h_url) as r: + if r.status != 200: + raise RuntimeError(f"No hash for {f_name}. Has host {host} been removed?") + # rstrip() content, and explicitly add the \n, in case + # a hash file does not have a trailing \n. + fd.write(f"# From {h_url}\nsha256 {r.read().decode().rstrip()}\n") + for target in RUST_TARGETS: + f_name = f"rust-std-{new_version}-{target}.tar.xz" + print(f"\r\033[KUpdating {f_name}", end="") + h_url = f"{RUST_DIST_URL}/{f_name}.sha256" + with urllib.request.urlopen(h_url) as r: + if r.status != 200: + raise RuntimeError(f"No hash for {f_name}. Has target {target} been removed?") + # rstrip() content, and explicitly add the \n, in case + # a hash file does not have a trailing \n. + fd.write(f"# From {h_url}\nsha256 {r.read().decode().rstrip()}\n") + fd.write("# Locally generated\n") + for license in LICENSES: + fd.write(f"sha256 {LICENSES[license]} LICENSE-{license}\n") + + +def main(): + parser = argparse.ArgumentParser(description="Update rust") + parser.add_argument("version", help="Rust version to update to", type=str) + + args = parser.parse_args() + + TOPDIR = pathlib.Path(__file__).parent.parent + update_mk_file(TOPDIR / "package/rust/rust.mk", args.version) + update_mk_file(TOPDIR / "package/rust-bin/rust-bin.mk", args.version) + gen_hash_file_src(TOPDIR / "package/rust/rust.hash", args.version) + gen_hash_file_bin(TOPDIR / "package/rust-bin/rust-bin.hash", args.version) + + print("\r\033[K", end="") + + +if __name__ == "__main__": + main()